[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "content": "# Prerequisites\n*.d\n\n# Compiled Object files\n*.slo\n*.lo\n*.o\n*.obj\n\n# Precompiled Headers\n*.gch\n*.pch\n\n# Compiled Dynamic libraries\n*.so\n*.dylib\n#*.dll\n\n# Fortran module files\n*.mod\n*.smod\n\n# Compiled Static libraries\n*.lai\n*.la\n#*.a\n*.lib\n\n# Executables\n*.exe\n*.out\n*.app\n\nbuild\n#libraries/*\ntram-sdk-cppcheck-build-dir\ncppcheck\nMakefile\n\n# Codelite IDE files\ncompile_flags.txt\ntram-sdk.cppcheck\ntram-sdk.mk\ntram-sdk.project"
  },
  {
    "path": "CMakeLists.txt",
    "content": "cmake_minimum_required(VERSION 3.2)\nproject(tramsdk VERSION 0.1.0)\n\nset(CMAKE_CXX_STANDARD 20)\nset(CMAKE_CXX_STANDARD_REQUIRED ON)\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                               CONFIGURATION                                |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\n# can select only one\noption(RENDER_OPENGL \"Use the OpenGL renderer (default)\" ON)\noption(RENDER_DIRECT3D \"Use the Direct3D renderer\" OFF)\noption(RENDER_SOFTWARE \"Use Software rendering\" OFF)\n\n# not really an option\noption(PHYSICS_BULLET \"Use the Bullet physics (default)\" ON)\n\n# can select only one\noption(PLATFORM_GLFW \"Use the GLFW platform (default)\" ON)\noption(PLATFORM_SDL \"Use the SDL platform\" OFF)\n\n# can select only one\n# only openal actually works\noption(AUDIO_OPENAL \"Use the OpenAL backend (default)\" ON)\noption(AUDIO_SPATIAL \"Use the Spatial backend\" OFF)\noption(AUDIO_TEMPLATE \"Use the Template backend\" OFF)\n\n# can select whichever\noption(EXTENSION_CAMERA \"Use the Camera extension\" ON)\noption(EXTENSION_MENU \"Use the Menu extension\" ON)\noption(EXTENSION_LUA \"Use the Lua extension\" ON)\noption(EXTENSION_KITCHENSINK \"Use the Kitchensink extension\" ON)\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                 FRAMEWORK                                  |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nfile(GLOB_RECURSE SOURCES \t${PROJECT_SOURCE_DIR}/src/components/*.cpp\n\t\t\t\t\t\t\t${PROJECT_SOURCE_DIR}/src/framework/*.cpp\n\t\t\t\t\t\t\t${PROJECT_SOURCE_DIR}/src/entities/*.cpp)\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                   AUDIO                                    |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nfile(GLOB AUDIO_SOURCES ${PROJECT_SOURCE_DIR}/src/audio/*.cpp)\nlist(APPEND SOURCES ${AUDIO_SOURCES})\n\nif(AUDIO_OPENAL)\n\tmessage(STATUS \"Using OpenAL audio backend\")\n\t\n\tif(AUDIO_SPATIAL OR AUDIO_TEMPLATE)\n\t\tmessage(FATAL_ERROR \"Multiple audio backends selected!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE OPENAL_SOURCES ${PROJECT_SOURCE_DIR}/src/audio/openal/*.cpp)\n\tlist(APPEND SOURCES ${OPENAL_SOURCES})\nendif()\n\nif(AUDIO_SPATIAL)\n\tmessage(STATUS \"Using OpenGL rendering backend\")\n\t\n\tif(AUDIO_OPENAL OR AUDIO_TEMPLATE)\n\t\tmessage(FATAL_ERROR \"Multiple audio backends selected!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE SPATIAL_SOURCES ${PROJECT_SOURCE_DIR}/src/audio/spatial/*.cpp)\n\tlist(APPEND SOURCES ${SPATIAL_SOURCES})\nendif()\n\nif(AUDIO_TEMPLATE)\n\tmessage(STATUS \"Using OpenGL rendering backend\")\n\t\n\tif(AUDIO_OPENAL OR AUDIO_SPATIAL)\n\t\tmessage(FATAL_ERROR \"Multiple audio backends selected!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE AUDIO_TEMPLATE_SOURCES ${PROJECT_SOURCE_DIR}/src/audio/template/*.cpp)\n\tlist(APPEND SOURCES ${AUDIO_TEMPLATE_SOURCES})\nendif()\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                  PHYSICS                                   |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nfile(GLOB PHYSICS_SOURCES ${PROJECT_SOURCE_DIR}/src/physics/*.cpp)\nlist(APPEND SOURCES ${PHYSICS_SOURCES})\n\nif(PHYSICS_BULLET)\n\tmessage(STATUS \"Using Bullet physics backend\")\n\t\n\tinclude_directories(${PROJECT_SOURCE_DIR}/libraries/bullet)\n\t\n\tfile(GLOB_RECURSE BULLET_SOURCES ${PROJECT_SOURCE_DIR}/src/physics/bullet/*.cpp)\n\tlist(APPEND SOURCES ${BULLET_SOURCES})\nendif()\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                   RENDER                                   |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nfile(GLOB RENDER_SOURCES ${PROJECT_SOURCE_DIR}/src/render/*.cpp)\nlist(APPEND SOURCES ${RENDER_SOURCES})\n\nif(RENDER_OPENGL)\n\tmessage(STATUS \"Using OpenGL rendering backend\")\n\t\n\tif(RENDER_DIRECT3D OR RENDER_SOFTWARE)\n\t\tmessage(FATAL_ERROR \"Can't use Direct3D or Software, OpenGL already selected!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE OPENGL_SOURCES ${PROJECT_SOURCE_DIR}/src/render/opengl/*.cpp)\n\tlist(APPEND SOURCES ${OPENGL_SOURCES})\nendif()\n\nif(RENDER_DIRECT3D)\n\tmessage(STATUS \"Using Direct3D rendering backend\")\n\t\n\t# TODO: maybe add a check to check if this is not being compiled on Linux?\n\t\n\tif(RENDER_OPENGL OR RENDER_SOFTWARE)\n\t\tmessage(FATAL_ERROR \"Can't use OpenGL or Software, Direct3D already selected!\")\n\tendif()\n\t\n\tif(NOT PLATFORM_SDL)\n\t\tmessage(FATAL_ERROR \"Direct3D render backend only works with SDL!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE DIRECT3D_SOURCES ${PROJECT_SOURCE_DIR}/src/render/direct3d/*.cpp)\n\tlist(APPEND SOURCES ${DIRECT3D_SOURCES})\nendif()\n\nif(RENDER_SOFTWARE)\n\tmessage(STATUS \"Using Software rendering backend\")\n\t\n\tif(RENDER_OPENGL OR RENDER_DIRECT3D)\n\t\tmessage(FATAL_ERROR \"Can't use OpenGL or Direct3D, Software already selected!\")\n\tendif()\n\t\n\tif(NOT PLATFORM_SDL)\n\t\tmessage(FATAL_ERROR \"Software render backend only works with SDL!\")\n\tendif()\n\t\n\tfile(GLOB_RECURSE SOFTWARE_SOURCES ${PROJECT_SOURCE_DIR}/src/render/software/*.cpp)\n\tlist(APPEND SOURCES ${SOFTWARE_SOURCES})\nendif()\n\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                 PLATFORM                                   |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nfile(GLOB PLATFORM_SOURCES ${PROJECT_SOURCE_DIR}/src/platform/*.cpp)\nlist(APPEND SOURCES ${PLATFORM_SOURCES})\n\nif(PLATFORM_GLFW)\n\tmessage(STATUS \"Using GLFW backend\")\n\t\n\tif(PLATFORM_SDL)\n\t\tmessage(FATAL_ERROR \"Can't use SDL, GLFW already selected!\")\n\tendif()\n\t\n\tinclude_directories(${PROJECT_SOURCE_DIR}/libraries/glfw)\n\t\n\tfile(GLOB_RECURSE GLFW_SOURCES ${PROJECT_SOURCE_DIR}/src/platform/glfw/*.cpp)\n\tlist(APPEND SOURCES ${GLFW_SOURCES})\nendif()\n\nif(PLATFORM_SDL)\n\tmessage(STATUS \"Using SDL backend\")\n\t\n\tif(PLATFORM_GLFW)\n\t\tmessage(FATAL_ERROR \"Can't use GLFW, SDL already selected!\")\n\tendif()\n\t\n\tinclude_directories(${PROJECT_SOURCE_DIR}/libraries/sdl2)\n\t\n\tfile(GLOB_RECURSE SDL_SOURCES ${PROJECT_SOURCE_DIR}/src/platform/sdl/*.cpp)\n\tlist(APPEND SOURCES ${SDL_SOURCES})\nendif()\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                                EXTENSIONS                                  |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\nif(EXTENSION_CAMERA)\n\tmessage(STATUS \"Using Camera extension\")\n\tfile(GLOB_RECURSE CAMERA_SOURCES ${PROJECT_SOURCE_DIR}/src/extensions/camera/*.cpp)\n\tlist(APPEND SOURCES ${CAMERA_SOURCES})\nendif()\n\nif(EXTENSION_MENU)\n\tmessage(STATUS \"Using Menu extension\")\n\tfile(GLOB_RECURSE MENU_SOURCES ${PROJECT_SOURCE_DIR}/src/extensions/menu/*.cpp)\n\tlist(APPEND SOURCES ${MENU_SOURCES})\nendif()\n\nif(EXTENSION_LUA)\n\tmessage(STATUS \"Using Lua extension\")\n\t\n\tinclude_directories(${PROJECT_SOURCE_DIR}/libraries/lua)\n\t\n\tfile(GLOB_RECURSE LUA_SOURCES ${PROJECT_SOURCE_DIR}/src/extensions/scripting/*.cpp)\n\tlist(APPEND SOURCES ${LUA_SOURCES})\nendif()\n\nif(EXTENSION_KITCHENSINK)\n\tmessage(STATUS \"Using Kitchensink extension\")\n\tfile(GLOB_RECURSE KITCHENSINK_SOURCES ${PROJECT_SOURCE_DIR}/src/extensions/kitchensink/*.cpp)\n\tlist(APPEND SOURCES ${KITCHENSINK_SOURCES})\nendif()\n\n# +----------------------------------------------------------------------------+\n# |                                                                            |\n# |                               CONFIGURATION                                |\n# |                                                                            |\n# +----------------------------------------------------------------------------+\n\ninclude_directories(${PROJECT_SOURCE_DIR}/src)\ninclude_directories(${PROJECT_SOURCE_DIR}/libraries)\n\n# I think that glad is only needed on Windows?\n# TODO: check\ninclude_directories(${PROJECT_SOURCE_DIR}/libraries/glad)\n\nadd_library(tramsdk STATIC ${SOURCES})\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2025 racenis\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "# Tramway Drifting and Dungeon Exploration Simulator 2022 Software Development Kit\n\n![Tramway Drifting and Dungeon Exploration Simulator 2022 logo](/docs/logo.gif)\n\n![Software Development Kit logo](/docs/devkit.gif)\n\nIt does what Godoesn't.\n\nI am not reinventing the wheel, I am disrupting the wheel industry.\n\nFree func_door included with every install!\n\n![Screenshot11](/docs/screens/screen11.png)\n\n## What's it\n\nSoftware library and tools for making the [Tramway Drifting and Dungeon Exploration Simulator 2022](https://racenis.itch.io/tramway-drifting-and-dungeon-exploration-simulator-2022) and similar applications.\n\nIt's meant to work sort of like Quake, GoldSrc or Source engines, but it uses\npolygonal soup instead of BSPs and supports level streaming.\n\n![EditingApp](/docs/images/etc/editingapp.png)\n\n## Features\n- Polygonal soup graphics\n- Non-hierarchical scene ordering\n- Ambient lighting\n- Lambertian reflection\n- Light source attenuation\n- Colored lights and surfaces\n- Phong illumination\n- Point lights\n- Warn's lighting for directional lights\n- Level streaming\n- Allows use of Quake level editors to create level geometry\n\n![Teapot](/docs/images/etc/teapot.gif)\n\n### Platforms\n- Windows (XP SP3 or later)\n- Linux\n- Web browser (needs WebAssembly support)\n\n### Requirements\n- Graphics card (optional) that supports either:\n\t- OpenGL 4.0\n\t- WebGL 2.0 (for web builds)\n\t- Direct3D 9.0\n- Decent CPU (at least Pentium 4) if using software rendering\n- Mouse and/or keyboard\n- Will probably add controllers and other input devices later\n- GCC/G++ 12.4.0 or MinGW/G++ 12.4.0\n- Clang should work too\n- Don't know about MSVC++\n- If it supports C++20, it should work\n- Python 3.8 for scripts\n- Blender 2.83 for 3D model and animation exporters\n\n![Demo1](/docs/demo1.gif)\n\n### Links\n\nMore information can be found on the [github.io page](https://racenis.github.io/tram-sdk/). \n\n#### Demos\n\n- FPS ([source code](https://github.com/racenis/jam-game) / [itch.io](https://racenis.itch.io/dziiviibas-partikula))\n\n- Platformer ([source code](https://github.com/racenis/jam-game-ii) / [itch.io / web demo](https://racenis.itch.io/sulas-glaaze))\n\n- Adventure ([source code](https://github.com/racenis/jam-game-iii) / [itch.io / web demo](https://racenis.itch.io/froggy-garden))\n\n#### Other tools\n\n- [Applets](https://github.com/racenis/tram-applets), i.e. GUI data editors\n\n- [Level editor](https://github.com/racenis/tram-world-editor) for editing worldcells\n\n#### Templates\n\n- [Teapot explorer](https://github.com/racenis/tram-template), main template project\n\n#### Examples\n\n- Pongpot ([source code](https://github.com/racenis/tram-example/tree/main/example-ping-pong))\n- ([All examples](https://github.com/racenis/tram-example))\n\n![PongPot](/docs/images/etc/pongpot.gif)\n\n### Building\n#### Windows / MinGW\nEdit the settings found in `maketool.ini`. Set the platform to WIN32 or WIN64, \ndepending on your compiler version.\n\nIf you compile dependencies yourself, place them in the `/libraries/binaries/win32`\nor `/libraries/binaries/win64` directories.\n\nSet repository root as the working directory.\n\nRun `devtools/maketool.py generate` to generate a `Makefile`.\n\nUse `make library && make clean` to compile the library.\n\n#### Linux / GCC\n\nInstall Python interpreter, C++ compiler and OpenGL headers.\n```\nsudo apt-get install python3\nsudo apt-get install build-essential\nsudo apt-get install libmesa-dev\n```\nInstall dependencies.\n```\nsudo apt-get install libglfw3-dev\nsudo apt-get install libbullet-dev\nsudo pat-get install libopenal-dev\nsudo apt-get install liblua5.4-dev\n```\nThese are the packages for Debian-based distributions, for other distributions\ncheck your package manager. \n\nDownload the source code.\n```\ngit clone https://github.com/racenis/tram-sdk.git\n```\n\n`vi maketool.ini` or `nano maketool.ini`\nEdit the makefile generator's configuration. Set the `compiler` to your `g++`\ncompiler and `archiver` to your `ar` program. Set `platform` to `LINUX`. Select\nthe modules which you will be using.\n\nReview the configuration and generate the makefile.\n```\nchmod +x devtools/maketool.py\ndevtools/maketool.py config\ndevtools/maketool.py generate\n```\n\nThen compile.\n```\nmake\n```\n\n### Dependencies\n\nHeader files and binaries (for MinGW x86/x86_64 and WebAssembly) included in `libraries` directory.\nCheck [/libraries/README.md](/libraries/README.md) for more information.\n\n### Contributions\n\nDue to risks associated with LLM use, we are not accepting code contributions\nfor the runtime (this repository) part of the project. LLMs and other machine\nlearning based coding tools exhibit a propensity for emitting code that is\nincompatible with the MIT license. Alas, there is no good way to separate genuine\nhuman code from AI slop, ergo we will not be able to accept any code pull\nrequests for this repository.\n\nHowever, you can still help by submitting bug reports or suggestions for\nimprovements.\n\n#### Why not accepting code\nConsider this example: you use this framework to create a project. Maybe due to\nthe platform that you are using, or due to some other requirement you are also\nusing a third party closed source library.\n\nLater it is determined that a contributor has added GPL licensed code to the\nframework. Now you can either release the source code to your project and\nviolate the third party's license or you keep the source closed and violate the\nGPL.\n\nEither way, the outcome is doubleplus ungood.\n\n## Milestones\n\n### Getting last major features in\n\nCurrently we have most of the planned features for v1.0.0, after which the core\nframework should be mostly feature-complete.\n\nIn the future we'll keep tweaking the core framework, but most of the efforts\nwill be focused on additional backends, integrations and extensions.\n\n### Developing professional-grade projects\n\nWe have several projects in the works and they all use this framework. We'll\nget them to at least prototype or demo state.\n\nThis will allow us to find additional deficiencies in the framework and help\nensure that the framework has all the features needed for full productions.\n\n### Final touches and extensive testing\n\nWe'll finish all planned changes that will break the API.\n\nWe'll finally set up automated testing, some kind of CI, dockerized\ncross-platform builds and automated release builds.\n\nThis should help us track down most of remaining bugs and ensure that we catch\nany regressions.\n\n### Switching to proper development practices\n\nThis means semantic versioning, proper change logs and possibly even supporting\nmultiple branches.\n\n## To-do list\n\n#### For v0.1.2\n\n- Finish particles\n\t- Steal ideas from various particle editors\n- Finish sprites\n\t- Make them not be distorted horizontally in the shader\n\t- Add rotations\n- Add entity that shows messages in 3D space\n\t- Just calls DebugText\n\t- Can be toggled on/off\n\t- Can have a distance set\n- Material editor GUI applet\n- Particle editor GUI applet\n- Sprite editor GUI applet\n- Model/animation viewer GUI applet\n- Allow setting alpha for any model\n\t- Make sure that vec4 color gets passed into API from Render/MeshComponents\n\t- Make sure that it makes its way into shaders\n\t- Add a renderflag to enable alpha blending\n\t- Merge _blend.frag files into .frag files\n\t- Consider moving _alpha.frag from separate file to compile flag\n- Allow packing additional textures\n\t- Like color texture + normal or specular map\n\t- Allow more than 15 textures for OpenGL API\n\t- Also add separate texture array sampler for lightmaps/environment maps\n- Add some more asserts to the GUI system\n\t- Like when pushing/popping, changing state, etc.\n- Make the engine work without any files\n\t- That means that it will run just fine without any files on the disk\n\t\n#### For v0.2.0\n\n- Plugins\n\t- Essentially a .zip file with `data/`, `scripts/` and `shaders/` directories\n\t- Would allow easy DLC/mods/etc.\n\t- Loaded as either directories or archives\n- Finish serialization\n\t- Allow re-loading WorldCells\n\t- Serialize WorldCell state to disk\n\t\t- Includes all entities\n\t- Save and load settings\n\t- Deserialize WorldCell state from disk\n- Network replication\n\t- Allow basic entities to be replicated over network\n\t- Also custom data\n\t- We can always upgrade the protocol later\n- Launcher GUI\n\t- Allows configuring settings\n\t- Reordering plugins\n\t- Changing language\n\t- Selecting executable to run\n- Add SoundGraph features to level editor\n\t- Allow tagging nodes as portals\n\t- Add effect parameters\n\t- Automatically derive some parameters\n\t\t- Like reverb/echo\n\t- Automatically generate links between nodes\n\t\t- Also discover rooms and link room nodes together\n- Add SoundGraph stuff to AudioComponent\n\t- Will need to add OpenAL plugin\n\t- Like the one that supports various effects\n- Add Navmesh features to level editor\n\t- Automatically connect nodes\n\t- Add parameter that determines max width/height\n- Implement Navmesh follower\n\t- Can add flags\n\t\t- Avoid obstacles\n\t\t- Discovers obstacles\n\t\t- Ignores directions\n\t\t- Etc.\n- Additional Navmesh features\n\t- Objects can temporarily block navmesh nodes\n\t- Agents will route around them\n- Planar reflections\n\t- Setup special material\n\t- Add reflection plane\n\t- Only single reflection plane rendered\n\t\t- Use environment map as a backup\n\t- Polygons near reflection plane\n\t- For OpenGL\n\t\t- Add reflection pane\n\t\t- Render upside-down + clipped scene\n\t\t- Render in reflective surfaces\n\t\t- Render rest of the scene\n\n#### For v1.0.0\n\n- Add some kind of crash reporting\n- Make sure that GUI programs work on Linux\n- Finally add Macintosh support for everything\n- Unit tests\n\t- Improve DecalComponent\n\t\t- Attach it to RenderComponents\n\t\t\t- When they move, it moves\n\t\t- Allow attachments to posed objects\n\t\t- Maybe modify SceneTree\n\t\t\t- Allow entities to subscribe to RenderComponent movements\n\t\t- Maybe implement decal batching\n\t\t\t- Multiple decals on same RenderComponent \n\t- AnimationComponent\n\t\t- Use file mock\n\t\t- Parse some in-memory animation files\n\t\t- Check if the pose matrices more or less correct\n\t\t- Also check detaching bones\n\t- AudioComponent\n\t\t- Use mock for backend\n\t\t- Component and Integration trivial\n\t\t- Test SoundGraph!!\n\t- MeshComponent\n\t\t- Mock render backend\n\t\t- Just check if a couple of triangles get copied correctly\n\t- ParticleComponent\n\t\t- Just some smoke tests\n\t- SpriteComponent\n\t\t- Just check that it clips stuff correctly from sprite sheets\n\t- Scripting\n\t\t- Just go through all Lua functions and check that they don't crash\n\t\t- Maybe some math functions we could test a little more\n\t- Async\n\t\t- Might be a good idea to mock some components and test it\n- Integration tests\n\t- Rendering\n\t\t- Use the low-level render API to test integration\n\t\t- Ideas: untextured cube, shiny sphere, lights, no lights, etc.\n\t\t- Render to image\n\t\t- Compare images to previously correct renders for regressions\n\t\t- Use OpenGL/Vulkan/Direct3D emulators\n- Scripts for running all tests automatically\n- Dockerfiles for running all tests in a container\n- Additional dockerfiles\n\t- Compiling framework\n\t- Compiling level editor\n\t- Compiling GUI applets\n- Fully automated builds\n- Final code pass\n\t- Remove old comments\n\t- Check if comments are still relevant\n\t- Expand and check Doxygen comments\n- Final documentation pass\n\t- Expand the documentation\n\t- Double check it\n\n#### Bug fixes\n- Sound table does not play if only one sound\n- Issue for Direct3D on some hardware\n\t- When you see it, you see it\n\t- Only happens on some hardware, hard to replicate\n\t- Try using Direct3D wrappers like WINE or dgVoodoo\n- Fix animation scaling translation\n\t- There's something weird going on if you both scale and translate in an animation\n\n\n### New features that would be nice to have, but are not very important\n- Improve GUI::Textbox\n\t- Add cursor movement\n\t- Add selection\n\t- Add copy-pasting\n- Python scripting\n\t- Should allow accessing basic library functionality through Python.\n\t- Probably should have OOP abstractions and stuff.\n- Model conversion tools\n\t- Leverage the free Assimp library to parse various 3D model formats.\n\t- Convert said model formats to tram-sdk .stmdl and .dymdl formats.\n\t- Perhaps write Blender importers in addition to existing exporters.\n- Occlusion culling\n- AnimationComponent multi-threading\n\t- Could improve performance a bit\n\t- Need to do more extensive profiling\n- Input recording and playback\n\t- Would need to make sure that we can create deterministic logic\n\t- Then we would just record keyboard/mouse events\n\t- Would also allow inserting previously recorded events\n- AudioComponents can play more than 128 sounds at the same time\n- Sprite batching\n\t- Currently each SpriteComponent gets its own vertex buffer\n\t- We would put all sprites that share a material in the same vertex buffer\n- Vertex animation\n\t- Accomplished through blend shapes\n- 3D text component\n\t- Generates a mesh that spells out a text\n- Tilemaps\n\t- Load in a tilemap format\n\t\t- Maybe one of the ones used by Tiled\n\t- Generate a mesh for rendering and maybe collisions\n\t- Allow dynamic modifications of tilemap\n- Achievements and social features\n\t- Will need to check what different stores and platforms offer\n\t- Ideally the API would allow code to be written once and work everywhere\n"
  },
  {
    "path": "data/animations/mongus-jump.anim",
    "content": "ANIMv1 mongus-jump 13\nRoot 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 -8.006990869866325e-18 -0.0812065601348877 -0.053319018334150314 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n40.0 -1.6760643764279154e-18 -0.23811812698841095 -0.021512076258659363 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n70.0 9.189635145307276e-17 -0.38369590044021606 0.36177366971969604 0.02772076427936554 4.638670056519769e-18 3.507527038633105e-18 0.9996157288551331 1.0 1.0 1.0\n90.0 5.559090467719774e-17 -0.23187357187271118 0.052620574831962585 0.059843629598617554 4.638670056519769e-18 3.507527038633105e-18 0.9981638193130493 1.0 1.0 1.0\n109.0 6.36903222271689e-20 -0.5088464021682739 -0.2519257366657257 0.07517118752002716 1.2578804880557108e-17 9.511457041810421e-18 0.9971707463264465 1.0 1.0 1.0\n120.0 3.6717118023130407e-17 -1.0043832063674927 -0.3488072156906128 -0.025588855147361755 -4.281896718567991e-18 -3.237759452641799e-18 0.9996726512908936 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail1 9\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 3.1542759184476397e-17 0.059766076505184174 0.07252106070518494 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n40.0 -3.3994923537244536e-16 0.23106646537780762 0.06141114979982376 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n70.0 -8.204129251835842e-16 0.43558207154273987 -0.3116672933101654 -0.23119285702705383 -3.4423270745648996e-16 1.8197923183585366e-16 0.972908079624176 1.0 1.0 1.0\n90.0 -5.278176755323214e-16 0.24843445420265198 -0.2747984528541565 -0.28060227632522583 -4.1780040413150253e-16 2.2087097460216147e-16 0.9598243236541748 1.0 1.0 1.0\n100.0 -8.204129251835842e-16 0.43791139125823975 -0.08941872417926788 -0.255837619304657 -4.1780040413150253e-16 2.2087097460216147e-16 0.9664298892021179 1.0 1.0 1.0\n109.0 -5.6897818281296e-16 0.4515589475631714 0.27991122007369995 -0.23469394445419312 -3.4944566585124815e-16 1.8473509323441492e-16 0.9720696210861206 1.0 1.0 1.0\n120.0 -1.149917317874098e-15 0.9354439973831177 0.5315375328063965 -0.3313532769680023 -4.933657750730552e-16 2.608186762861198e-16 0.9435070753097534 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nHead 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.1028529703617096 3.716991917198377e-18 1.8384211536721698e-17 0.9946967363357544 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 0.0027149617671966553 9.811747592404935e-20 4.85296990916299e-19 0.9999964833259583 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 0.053462959825992584 1.9320949739865536e-18 9.556117350262772e-18 0.9985699653625488 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 0.3985556960105896 1.44033552079735e-17 7.123885237843078e-17 0.9171442985534668 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail2 9\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.15642724931240082 7.652985691834456e-17 2.5805068841977848e-17 0.9876894950866699 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.18475814163684845 9.039035996007911e-17 3.047868727937798e-17 0.9827839732170105 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.08680175989866257 4.60616483629664e-17 6.904762363881759e-18 0.9962257146835327 1.1599457263946533 1.1599457263946533 -1.1599457263946533\n109.0 0.0 0.0 -0.0 -0.18475814163684845 9.039035996007911e-17 3.047868727937798e-17 0.9827839732170105 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.18475814163684845 9.039035996007911e-17 3.047868727937798e-17 0.9827839732170105 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail3 9\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.20018316805362701 8.939098019632725e-17 4.39416704797767e-17 0.9797585010528564 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.23695197701454163 1.0580993302035361e-16 5.2012703327028104e-17 0.9715213775634766 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.09074166417121887 5.1498130811571116e-17 1.4295849852482432e-17 0.9958745241165161 1.080091118812561 1.080091118812561 -1.080091118812561\n109.0 0.0 0.0 -0.0 -0.23695197701454163 1.0580993302035361e-16 5.2012703327028104e-17 0.9715213775634766 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.23695197701454163 1.0580993302035361e-16 5.2012703327028104e-17 0.9715213775634766 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nShoulderR 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 -0.08584313839673996 0.04814301058650017 -0.02411680482327938 0.012866261415183544 0.0068195890635252 -0.015938539057970047 0.9981215596199036 1.0 1.0 1.0\n40.0 -0.1888445019721985 0.015504427254199982 -0.14580939710140228 0.10293010622262955 0.054556723684072495 -0.12750834226608276 0.9849724173545837 1.0 1.0 1.0\n70.0 -0.22307679057121277 -0.35641050338745117 -0.3325735926628113 0.4196360409259796 0.22242243587970734 -0.5198391675949097 0.7100714445114136 1.0 1.0 1.0\n90.0 -0.12972937524318695 -0.0653572753071785 -0.16831256449222565 0.18452490866184235 0.09780490398406982 -0.22858688235282898 0.8451138734817505 1.0 1.0 1.0\n109.0 -0.44489431381225586 0.22239094972610474 -0.26398351788520813 -0.14451278746128082 -0.07659713923931122 0.17902028560638428 0.9701552987098694 1.0 1.0 1.0\n120.0 -0.8495965600013733 0.32234007120132446 -0.5479112267494202 -0.20840705931186676 -0.11046344041824341 0.2581716477870941 0.936863124370575 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nUpperarmR 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.029977459460496902 -0.003972860053181648 0.005096787121146917 0.9991112351417542 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.11636374890804291 -0.015421492047607899 0.01978425495326519 0.9928898811340332 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.24834002554416656 -0.03291210159659386 0.042222995311021805 0.9671925902366638 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.20236782729625702 -0.026819471269845963 0.034406762570142746 0.9772425293922424 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 -0.15980024635791779 -0.021178053691983223 0.02716938406229019 0.9865482449531555 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.19384808838367462 -0.025690361857414246 0.032958224415779114 0.980141282081604 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nForearmR 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.1526709645986557 0.0013375531416386366 -0.0015422860160470009 0.9834674596786499 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.49697527289390564 0.004353967495262623 -0.0050204419530928135 0.8677394390106201 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.8881433606147766 0.00778087368234992 -0.008971987292170525 0.4594135582447052 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.48101842403411865 0.004214128013700247 -0.004859203472733498 0.7372820377349854 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 -0.10404457151889801 0.0009115306893363595 -0.0010510056745260954 0.9945719838142395 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.12155403196811676 0.0010649287141859531 -0.0012278861831873655 0.9925838708877563 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nFootR 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.16306962072849274 -5.35696043080236e-10 2.6006788389487667e-10 0.9662699103355408 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.44536685943603516 2.9257581246611153e-08 4.490626537290154e-09 0.8953481912612915 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.5507047772407532 4.2557651624974824e-08 -7.549182612365257e-09 0.8347002863883972 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 0.4264707863330841 3.02168459143104e-08 6.389663909089904e-09 0.9042834043502808 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 0.5012491941452026 3.5574480250488705e-08 -9.711025761305336e-09 0.8653032779693604 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.41654300689697266 6.427476506587482e-08 -3.138768533972325e-08 0.909116268157959 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nShoulderL 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.08584313839673996 0.04814301058650017 -0.02411680482327938 0.013221513479948044 -0.007007887586951256 0.016378622502088547 0.9980155229568481 1.0 1.0 1.0\n40.0 0.1888445019721985 0.015504427254199982 -0.14580939710140228 0.10577213019132614 -0.05606312304735184 0.13102900981903076 0.9841243028640747 1.0 1.0 1.0\n70.0 0.22307679057121277 -0.35641050338745117 -0.3325735926628113 0.4240618348121643 -0.22476834058761597 0.5253217816352844 0.7026293277740479 1.0 1.0 1.0\n90.0 0.12972937524318695 -0.0653572753071785 -0.16831256449222565 0.18759959936141968 -0.09943467378616333 0.23239579796791077 0.8408203721046448 1.0 1.0 1.0\n109.0 0.44489431381225586 0.22239094972610474 -0.26398351788520813 -0.14775916934013367 0.07831773906946182 -0.1830417513847351 0.9687772393226624 1.0 1.0 1.0\n120.0 0.8495965600013733 0.32234007120132446 -0.5479112267494202 -0.21599632501602173 0.11448592692613602 -0.26757296919822693 0.9320104122161865 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nUpperarmL 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.03350690379738808 0.004440603777766228 -0.005696871317923069 0.9989221096038818 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.1280984729528427 0.01697666198015213 -0.02177940495312214 0.9913769364356995 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.26983940601348877 0.035761378705501556 -0.04587830230593681 0.9611467719078064 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.21180395781993866 0.028070030733942986 -0.03601108491420746 0.9744876623153687 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 -0.1580665409564972 0.020948290824890137 -0.026874616742134094 0.986840546131134 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.18494431674480438 0.024510353803634644 -0.03144439309835434 0.9819400906562805 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nForearmL 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.14767888188362122 -0.0012938255676999688 0.0014918448869138956 0.9841688871383667 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.48704782128334045 -0.004267021548002958 0.004920165054500103 0.8733510375022888 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.8839985132217407 -0.007744616828858852 0.008930234238505363 0.4673405885696411 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.4742249846458435 -0.00415464723482728 0.004790649749338627 0.741572916507721 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 -0.09479875862598419 -0.0008305454393848777 0.0009576362208463252 0.9954959750175476 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.1152464896440506 -0.0010096889454871416 0.0011642029276117682 0.9933361411094666 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nFootL 8\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.16047824919223785 5.154654481032139e-10 1.027169238554393e-09 0.9669647812843323 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.4501718282699585 -1.2357308065702455e-08 -5.293441773801533e-08 0.892941951751709 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.5667162537574768 -3.234742962376913e-08 -6.49703792987566e-08 0.8239133954048157 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 0.4175177812576294 -1.7757288972575225e-09 -6.111963557486888e-08 0.9082710146903992 1.0 1.0 1.0\n109.0 0.0 0.0 -0.0 0.5001378655433655 -1.7124106577171005e-08 -5.329554042532436e-08 0.8659462928771973 1.0 1.0 1.0\n120.0 0.0 0.0 -0.0 -0.42062118649482727 1.2309891417316976e-07 1.3173537638522248e-07 0.9072368144989014 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n"
  },
  {
    "path": "data/animations/mongus-run.anim",
    "content": "ANIMv1 mongus-run 8\nShoulderR 7\n0.0 0.0 0.0 -0.0 0.22830604016780853 0.12101059406995773 -0.2828224003314972 0.923712432384491 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 0.018594209104776382 0.00985565036535263 -0.02303452044725418 0.9203561544418335 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.06366675347089767 -0.03374569118022919 0.07886922359466553 0.9114755988121033 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.2579682469367981 -0.13673262298107147 0.31956711411476135 0.9014620780944824 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 -0.020890288054943085 -0.011072582565248013 0.025878340005874634 0.9202173352241516 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.1507493257522583 0.07990273088216782 -0.18674629926681519 0.9074580669403076 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.22830604016780853 0.12101059406995773 -0.2828224003314972 0.923712432384491 1.0 1.0 1.0\nUpperarmR 7\n0.0 0.0 0.0 -0.0 0.025336042046546936 0.003357747569680214 -0.004307659342885017 0.9996642470359802 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 0.09897641837596893 0.01311721745878458 -0.01682804524898529 0.9888781905174255 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.050882838666439056 -0.006743431556969881 0.008651118725538254 0.990245521068573 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.1967834234237671 -0.026079440489411354 0.03345722332596779 0.9795290231704712 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 -0.0836632251739502 -0.01108778826892376 0.014224467799067497 0.9903566837310791 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.13652047514915466 -0.01809288188815117 0.023211296647787094 0.9862034916877747 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.025336042046546936 0.003357747569680214 -0.004307659342885017 0.9996642470359802 1.0 1.0 1.0\nForearmR 7\n0.0 0.0 0.0 -0.0 0.08471803367137909 -0.0007421979680657387 0.000855823396705091 0.9964045286178589 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 0.13617941737174988 -0.001193024916574359 0.0013756800908595324 0.9762256145477295 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.07258342951536179 0.0006358701502904296 -0.0007332777022384107 0.9744976758956909 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.26681873202323914 0.00233749789185822 -0.002695468720048666 0.9637404680252075 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 -0.5215127468109131 0.00456879660487175 -0.005268407985568047 0.8363852500915527 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.5941319465637207 0.0052049895748496056 -0.006001992151141167 0.7418704628944397 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.08471803367137909 -0.0007421979680657387 0.000855823396705091 0.9964045286178589 1.0 1.0 1.0\nFootR 7\n0.0 0.0 0.0 -0.0 -0.2698030471801758 -2.9619720010032324e-08 6.694075960211876e-09 0.9629155993461609 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 -0.14027392864227295 2.3836500773199987e-08 -3.2477847078382638e-09 0.990112841129303 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 0.24817150831222534 1.8793848255427292e-07 6.3732610300348824e-09 0.9684447646141052 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.2698030471801758 -2.9619720010032324e-08 6.694075960211876e-09 0.9629155993461609 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 -0.41346555948257446 -7.935088319754868e-08 6.48833609062649e-09 0.9105198383331299 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.3762197196483612 -7.935089030297604e-08 6.488344084232267e-09 0.9241039156913757 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.2698030471801758 -2.9619720010032324e-08 6.694075960211876e-09 0.9629155993461609 1.0 1.0 1.0\nShoulderL 8\n0.0 0.0 0.0 -0.0 -0.28743234276771545 0.15234962105751038 -0.3560669720172882 0.8760071992874146 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 0.10782003402709961 -0.057148635387420654 0.13356611132621765 0.8926488161087036 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.19963449239730835 -0.10581367462873459 0.24730455875396729 0.9210672974586487 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 0.21151626110076904 -0.11211143434047699 0.2620235085487366 0.9348987936973572 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 0.02150999940931797 -0.011401149444282055 0.026646440848708153 0.9154387712478638 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.14180883765220642 0.0751638263463974 -0.1756705939769745 0.8903844952583313 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 -0.2380836308002472 0.12619298696517944 -0.29493448138237 0.8880380392074585 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.28743234276771545 0.15234962105751038 -0.3560669720172882 0.8760071992874146 1.0 1.0 1.0\nUpperarmL 8\n0.0 0.0 0.0 -0.0 -0.11054552346467972 0.014650409109890461 -0.01879502832889557 0.9935853481292725 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.09767533838748932 0.012944739311933517 -0.016606811434030533 0.9906841516494751 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.06140775606036186 0.00813823752105236 -0.010440591722726822 0.9923946261405945 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 0.0732983946800232 -0.009714166633784771 0.012462236918509007 0.9971848726272583 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 0.08447028696537018 -0.011194772087037563 0.014361674897372723 0.9922009110450745 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.049082815647125244 -0.006504905875772238 0.008345083333551884 0.9918957948684692 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 0.027364954352378845 -0.003626646939665079 0.004652594216167927 0.9936398863792419 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.11054552346467972 0.014650409109890461 -0.01879502832889557 0.9935853481292725 1.0 1.0 1.0\nForearmL 8\n0.0 0.0 0.0 -0.0 -0.18339836597442627 -0.001606750418432057 0.0018527028150856495 0.9830357432365417 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.5521209836006165 -0.004837041720747948 0.00557765131816268 0.8253576755523682 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.4322243332862854 -0.0037866500206291676 0.00436642300337553 0.8420966863632202 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 0.0556979775428772 0.00048791049630381167 -0.0005627041682600975 0.9984474778175354 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 0.10362879186868668 0.0009078369475901127 -0.0010469219414517283 0.9880096912384033 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.0480538047850132 0.00042095797834917903 -0.00048548774793744087 0.9837697744369507 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 -0.2630617320537567 -0.002304698806256056 0.0026574672665446997 0.9521291851997375 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.18339836597442627 -0.001606750418432057 0.0018527028150856495 0.9830357432365417 1.0 1.0 1.0\nFootL 8\n0.0 0.0 0.0 -0.0 -0.21309532225131989 1.041270181190157e-08 2.4596920056296767e-08 0.977031409740448 1.0 1.0 1.0\n14.0 0.0 0.0 -0.0 -0.5246599912643433 1.231611150842582e-07 1.1487965423384594e-07 0.8513118624687195 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.3915030360221863 1.4327414987747034e-07 1.2266173143871129e-07 0.9050015211105347 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.21309532225131989 1.041270181190157e-08 2.4596920056296767e-08 0.977031409740448 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 -0.2748737335205078 2.830713796697637e-08 4.7031882388637314e-08 0.961480438709259 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.16661518812179565 -6.446724398756487e-08 -6.70787798640049e-08 0.9856266975402832 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 -0.13232488930225372 -6.24810070348758e-08 -3.371694745624154e-08 0.9726443290710449 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.21309532225131989 1.041270181190157e-08 2.4596920056296767e-08 0.977031409740448 1.0 1.0 1.0\n"
  },
  {
    "path": "data/animations/mongus-sway.anim",
    "content": "ANIMv1 mongus-sway 2\nRoot 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 0.011248684488236904 -0.030907969921827316 -0.029512275010347366 0.9990231990814209 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.008989808149635792 0.07333409041166306 0.092293381690979 0.9928575158119202 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 0.005624285899102688 -0.009333091787993908 0.0058111343532800674 0.9981041550636292 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nHead 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n10.0 0.0 0.0 -0.0 0.01966194063425064 0.0017485303105786443 -0.08790408819913864 0.9959333539009094 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.008017421700060368 0.0015619276091456413 -0.0012010122882202268 0.9994297027587891 1.0 1.0 1.0\n35.0 0.0 0.0 -0.0 0.00277275824919343 -0.0007480866624973714 -0.008964055217802525 0.9998852014541626 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n"
  },
  {
    "path": "data/animations/mongus-turn-around.anim",
    "content": "ANIMv1 mongus-turn-around 13\nRoot 2\n0.0 7.83839926299379e-09 0.13992293179035187 0.11215098202228546 0.0 0.6254178285598755 -0.7802900671958923 -4.371138828673793e-08 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail1 4\n0.0 -7.838401039350629e-09 0.11897622048854828 0.13416756689548492 -2.3741903642317307e-15 0.7481948137283325 -0.6634790897369385 4.371138828673793e-08 1.0 1.0 1.0\n100.0 0.19332380592823029 0.05948811396956444 0.06708379089832306 -1.4901161193847656e-08 0.37409743666648865 -0.33173954486846924 -0.5 1.0 1.0 1.0\n150.0 0.09238763153553009 -0.024691147729754448 -0.004905473440885544 0.0 -0.04959878697991371 0.043982867151498795 0.28726211190223694 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nHead 2\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail2 2\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail3 2\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nShoulderR 5\n0.0 0.13238811492919922 -0.10350346565246582 0.06258345395326614 0.31588277220726013 0.7530370950698853 0.577194333076477 -5.936425040431459e-08 1.0 1.0 1.0\n20.0 0.1286812573671341 -0.10060536861419678 0.060831114649772644 0.24085773527622223 0.7779430150985718 0.5306434631347656 0.027890099212527275 1.0 1.0 1.0\n40.0 0.11861977726221085 -0.09273910522460938 0.05607476830482483 0.17626023292541504 0.7361863255500793 0.4222680330276489 0.24534253776073456 1.0 1.0 1.0\n70.0 0.09508780390024185 -0.07434136420488358 0.04495055601000786 0.11702962219715118 0.5068727135658264 0.4193342328071594 0.5778059363365173 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nUpperarmR 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.09891830384731293 0.018889369443058968 -0.01834072917699814 0.9947472214698792 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.09096100926399231 -0.12381908297538757 -0.19434569776058197 0.9686470031738281 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.1623750627040863 -0.11016053706407547 -0.21088305115699768 0.9537278413772583 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nForearmR 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.11599549651145935 -0.005601942539215088 -0.0002257261803606525 0.9932339787483215 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.11035527288913727 -0.02492593042552471 -0.03134286403656006 0.9928596019744873 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.02773108519613743 -0.02619747817516327 -0.07643207907676697 0.9946275949478149 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nFootR 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.13755066692829132 -0.005242832005023956 0.00595132214948535 0.9904630184173584 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.13132022321224213 -0.049300167709589005 -0.021396026015281677 0.9895631074905396 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.09787491708993912 -0.04022425785660744 -0.02368849515914917 0.9917083382606506 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nShoulderL 4\n0.0 -0.13238811492919922 -0.10350346565246582 0.06258346885442734 -0.31588274240493774 0.7530370950698853 0.577194333076477 -3.957616812044762e-08 1.0 1.0 1.0\n75.0 -0.09049969166517258 -0.07075432687997818 0.04278166592121124 -0.28360438346862793 0.5205512642860413 0.4378904104232788 0.15575803816318512 1.0 1.0 1.0\n100.0 -0.06619405746459961 -0.05175173655152321 0.03129173442721367 -0.12550018727779388 0.6715143918991089 0.2878727912902832 0.6711541414260864 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nUpperarmL 4\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n75.0 0.0 0.0 -0.0 0.08745531737804413 0.05512285605072975 0.08501384407281876 0.9910025000572205 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.005391664803028107 0.08002898097038269 0.22119975090026855 0.9719244241714478 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nForearmL 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 0.005068068392574787 -0.020432688295841217 -0.028641924262046814 0.998423159122467 1.0 1.0 1.0\n75.0 0.0 0.0 -0.0 0.001669342047534883 -0.004325711168348789 0.09075852483510971 0.9958621859550476 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.3342698812484741 -0.09903564304113388 0.12491174042224884 0.9288987517356873 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nFootL 5\n0.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n45.0 0.0 0.0 -0.0 -0.014994194731116295 -0.010789250954985619 0.023253057152032852 0.9984674453735352 1.0 1.0 1.0\n75.0 0.0 0.0 -0.0 -0.02413776144385338 0.04348089173436165 0.08406826108694077 0.9952185153961182 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n200.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n"
  },
  {
    "path": "data/animations/mongus-wag-tail.anim",
    "content": "ANIMv1\nWagTail 3\nTail1 7\n1.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.1184784322977066 0.0032643750309944153 0.0022056717425584793 0.9929488301277161 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 -0.14939169585704803 0.004116112366318703 0.0027811734471470118 0.9884724020957947 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.11977468430995941 0.0033000903204083443 0.0022298037074506283 0.9907577633857727 1.0 1.0 1.0\n60.0 0.0 0.0 -0.0 -0.11882936954498291 0.0032740444876253605 0.0022122047375887632 0.9900242686271667 1.0 1.0 1.0\n80.0 0.0 0.0 -0.0 -0.1519128978252411 0.004185577388852835 0.0028281090781092644 0.9850449562072754 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail2 7\n1.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.04770442470908165 0.0007372896070592105 0.0014045418938621879 0.9988602995872498 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 -0.08330748975276947 0.001287548104301095 0.002452788408845663 0.9964730143547058 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.06679172068834305 0.0010322907473891973 0.0019665213767439127 0.9971722364425659 1.0 1.0 1.0\n60.0 0.0 0.0 -0.0 -0.09116244316101074 0.0014089493779465556 0.0026840590871870518 0.9949684143066406 1.0 1.0 1.0\n80.0 0.0 0.0 -0.0 -0.08854256570339203 0.0013684580335393548 0.002606922760605812 0.9945884346961975 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\nTail3 7\n1.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.07381493598222733 0.0006367409368976951 0.002370495581999421 0.9972689747810364 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 -0.18327367305755615 0.001580952201038599 0.005885657854378223 0.9829289317131042 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.14693954586982727 0.0012675272300839424 0.004718821961432695 0.9863132834434509 1.0 1.0 1.0\n60.0 0.0 0.0 -0.0 -0.17594903707504272 0.001517767901532352 0.005650434643030167 0.9801920056343079 1.0 1.0 1.0\n80.0 0.0 0.0 -0.0 -0.15560846030712128 0.001342306612059474 0.004997216630727053 0.9817318320274353 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.0 0.0 -0.0 1.0 1.0 1.0 1.0\n"
  },
  {
    "path": "data/animations/mongus-walk.anim",
    "content": "ANIMv1 mongus-walk 8\nShoulderR 8\n1.0 0.0 0.0 -0.0 0.0614975243806839 0.1309172660112381 -0.15831641852855682 0.976736843585968 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.008470319211483002 0.018031775951385498 -0.02180558070540428 0.9647844433784485 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -0.030891768634319305 -0.0657632127404213 0.07952652871608734 0.9548504948616028 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 -0.038691744208335876 -0.08236809074878693 0.09960654377937317 0.962787389755249 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -0.07005808502435684 -0.149141326546669 0.180354505777359 0.9518939852714539 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.09704773873090744 -0.20659735798835754 0.2498352974653244 0.9410005211830139 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.019301947206258774 0.04109038785099983 -0.04969001188874245 0.9620101451873779 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.0614975243806839 0.1309172660112381 -0.15831641852855682 0.976736843585968 1.0 1.0 1.0\nUpperarmR 8\n1.0 0.0 0.0 -0.0 0.006919510662555695 0.2794632315635681 -0.04711715131998062 0.9589747786521912 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.005241250153630972 0.2116820216178894 -0.03568931668996811 0.9650874733924866 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 0.004108707886189222 0.16594111919403076 -0.02797745354473591 0.9709782004356384 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 0.0016069866251200438 0.06490218639373779 -0.010942399501800537 0.9827951788902283 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 0.0028686486184597015 0.11585810035467148 -0.019533537328243256 0.9902189373970032 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -0.0007765963673591614 -0.03136571869254112 0.0052882470190525055 0.9994937777519226 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.00562440138310194 0.2271561473608017 -0.03829823434352875 0.9611713886260986 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 0.006919510662555695 0.2794632315635681 -0.04711715131998062 0.9589747786521912 1.0 1.0 1.0\nForearmR 8\n1.0 0.0 0.0 -0.0 7.067137630656362e-08 -0.19047221541404724 -0.0019240669207647443 0.9816908240318298 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -9.27411747397855e-09 -0.019744927063584328 -0.0001994617487071082 1.0048667192459106 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 -1.1721567716449499e-08 -0.011652661487460136 -0.00011771906429203227 1.0014698505401611 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 5.566107574850321e-08 -0.18068121373653412 -0.0018251416040584445 0.9745268821716309 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 2.0567676983773708e-07 -0.5178977847099304 -0.005231547635048628 0.8748772144317627 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 1.8362334230914712e-07 -0.46579617261886597 -0.004705254454165697 0.8848797678947449 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 2.575106918811798e-07 -0.5981666445732117 -0.006042379420250654 0.789132833480835 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 7.067137630656362e-08 -0.19047221541404724 -0.0019240669207647443 0.9816908240318298 1.0 1.0 1.0\nFootR 8\n1.0 0.0 0.0 -0.0 3.202511678068731e-08 -0.0498189777135849 -2.7443831651652317e-09 0.9987582564353943 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 8.383192806604711e-08 -0.08576852083206177 -3.0749118806738807e-09 0.9942276477813721 1.0 1.0 1.0\n25.0 0.0 0.0 -0.0 6.097550198091994e-08 -0.050032831728458405 -4.941883346987197e-09 0.9957387447357178 1.0 1.0 1.0\n30.0 0.0 0.0 -0.0 -7.763660647697179e-08 0.24753747880458832 -5.557263804689683e-08 0.9647020101547241 1.0 1.0 1.0\n40.0 0.0 0.0 -0.0 -7.763660647697179e-08 0.19134508073329926 -5.557263804689683e-08 0.979978084564209 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 -5.668190183882871e-08 0.08678087592124939 -7.07617031636687e-09 0.9962273836135864 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -2.3422687789320662e-08 -0.026194855570793152 2.0128618771764195e-09 0.9975250363349915 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 3.202511678068731e-08 -0.0498189777135849 -2.7443831651652317e-09 0.9987582564353943 1.0 1.0 1.0\nShoulderL 8\n1.0 0.0 0.0 -0.0 -0.09988881647586823 -0.21264533698558807 -0.2571490705013275 0.9373785853385925 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -0.013078960590064526 -0.0278426893055439 -0.03366975113749504 0.9676586985588074 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.05031353980302811 0.10710854828357697 0.12952493131160736 0.9844896793365479 1.0 1.0 1.0\n65.0 0.0 0.0 -0.0 0.009079515002667904 0.019328730180859566 0.023374028503894806 0.9792407155036926 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -0.002557694911956787 -0.005444824695587158 -0.006584320217370987 0.9679065346717834 1.0 1.0 1.0\n76.0 0.0 0.0 -0.0 -0.051329828798770905 -0.10927192866802216 -0.13214097917079926 0.9555510878562927 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.019556215032935143 -0.0416315533220768 -0.05034438520669937 0.985957682132721 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.09988881647586823 -0.21264533698558807 -0.2571490705013275 0.9373785853385925 1.0 1.0 1.0\nUpperarmL 8\n1.0 0.0 0.0 -0.0 -0.002996504306793213 -0.12102221697568893 -0.020404189825057983 0.9924356341362 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 0.008682729676365852 0.3506755232810974 0.059123460203409195 0.9127218127250671 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 0.007357653696089983 0.297159343957901 0.05010071024298668 0.9534842371940613 1.0 1.0 1.0\n65.0 0.0 0.0 -0.0 0.004288462456315756 0.17320217192173004 0.0292016863822937 0.9729570150375366 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 0.002446033526211977 0.0987904816865921 0.016655972227454185 0.9809161424636841 1.0 1.0 1.0\n76.0 0.0 0.0 -0.0 0.0013692346401512623 0.05530092120170593 0.009323680773377419 0.974357545375824 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -0.006164874881505966 -0.24898359179496765 -0.04197831451892853 0.9558895230293274 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -0.002996504306793213 -0.12102221697568893 -0.020404189825057983 0.9924356341362 1.0 1.0 1.0\nForearmL 8\n1.0 0.0 0.0 -0.0 6.632762961089611e-08 -0.4155174493789673 0.004197380505502224 0.9095755815505981 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 7.601920515298843e-08 -0.746150553226471 0.007537288125604391 0.6539541482925415 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 4.4819898903369904e-08 -0.16274617612361908 0.0016439985483884811 0.9866666793823242 1.0 1.0 1.0\n65.0 0.0 0.0 -0.0 3.3563992474228144e-08 -0.002757694572210312 2.787077391985804e-05 0.9947115778923035 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 4.3059117160737514e-08 -0.20271681249141693 0.0020477627404034138 0.9710670113563538 1.0 1.0 1.0\n76.0 0.0 0.0 -0.0 3.663444658741355e-08 -0.17251478135585785 0.0017426657723262906 0.9716894626617432 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 4.604225978255272e-08 -0.32353225350379944 0.0032681759912520647 0.9148619771003723 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 6.632762961089611e-08 -0.4155174493789673 0.004197380505502224 0.9095755815505981 1.0 1.0 1.0\nFootL 8\n1.0 0.0 0.0 -0.0 -4.513318430099389e-08 0.07244161516427994 -9.164666803229693e-10 0.9973726868629456 1.0 1.0 1.0\n20.0 0.0 0.0 -0.0 -1.2786955494448193e-07 0.17848116159439087 1.2544145278070573e-08 0.9814943671226501 1.0 1.0 1.0\n50.0 0.0 0.0 -0.0 3.612026588939443e-08 -0.07460779696702957 -4.097320704943286e-09 0.9972130656242371 1.0 1.0 1.0\n65.0 0.0 0.0 -0.0 3.612026588939443e-08 -0.0021853595972061157 -4.097320704943286e-09 0.9953795671463013 1.0 1.0 1.0\n70.0 0.0 0.0 -0.0 -2.5984242313370487e-08 0.09706021100282669 -2.449917158031667e-09 0.9928670525550842 1.0 1.0 1.0\n76.0 0.0 0.0 -0.0 -1.0624879109855101e-07 0.2973710298538208 -7.0783543471009125e-09 0.9543440937995911 1.0 1.0 1.0\n90.0 0.0 0.0 -0.0 -8.399687345672646e-08 0.08331578224897385 -8.21200352163487e-09 0.9900059700012207 1.0 1.0 1.0\n100.0 0.0 0.0 -0.0 -4.513318430099389e-08 0.07244161516427994 -9.164666803229693e-10 0.9973726868629456 1.0 1.0 1.0\n"
  },
  {
    "path": "data/dialogs.dialog",
    "content": "# Tramway SDK Kitchensink Dialog File\n# Generated by: Kitchensink Editor v0.0.9\n# Generated on: 2024.12.23. 7:46:06\n\nDIALOGv1\n\ndialog   topic              pancake-greeting   none       hello-i-am-pancake-man\ndialog   topic              pancake-give-quest give-quest okay-here-quest\nnext     pancake-greeting   pancake-give-quest\nnext     pancake-give-quest pancake-greeting\n"
  },
  {
    "path": "data/editor_settings.ini",
    "content": "CELL_LIST_FROM_FILESYSTEM=1\nINTERFACE_LANGUAGE=1\nROTATION_SNAP=7\nTRANSLATION_SNAP=4\nROTATION_UNIT=1\nTRANSFORM_SPACE=0\n"
  },
  {
    "path": "data/entities.entdef",
    "content": "# basic engine entities\n\nbegin\n\tname staticwobj\n\tmodel none\n\tfield string model \"none\"\n\tfield string lightmap \"none\"\nend\n\nbegin\n\tname crate\n\tmodel none\n\tfield string model \"none\"\n\tfield string collision-model \"none\"\nend\n\nbegin\n\tname light\n\tmodel dev/light\n\tfield float color-r 1.0\n\tfield float color-g 1.0\n\tfield float color-b 1.0\n\tfield float distance 8.0\n\tfield float direction-x 1.0\n\tfield float direction-y 0.0\n\tfield float direction-z 0.0\n\tfield float exponent 0.0\nend\n\nbegin\n\tname marker\n\tmodel dev/marker\nend\n\nbegin\n\tname sound\n\tmodel dev/sound\n\tfield uint flags 0\n\tfield string sound \"none\"\n\tfield float volume 1.0\nend\n\nbegin\n\tname decoration\n\tmodel none\n\tfield uint flags 0\n\tfield string model \"none\"\n\tfield string animation \"none\"\nend\n\nbegin\n\tname trigger\n\tmodel none\n\tfield uint flags 0\n\tfield uint collision-mask -1\n\tfield string model \"none\"\nend\n\n# additional extension entities\n\nbegin\n\tname button\n\tmodel none\n\t\n\tfield uint button-flags 0\n\tfield string model \"none\"\n\tfield string lightmap \"none\"\n\tfield origin origin 0.0 0.0 0.0\n\tfield direction direction 1.0 0.0 0.0\n\tfield float speed 0.5\n\tfield float pause 0.0\n\tfield float distance 1.0\n\tfield string sound \"none\"\n\tfield string parent \"none\"\n\t\n\tgizmo cyan point origin\n\tgizmo cyan normal direction \nend\n"
  },
  {
    "path": "data/items.item",
    "content": "# Tramway SDK Kitchensink Dialog File\n# Generated by: Kitchensink Editor v0.0.9\n# Generated on: 2024.12.23. 7:46:06\n\nITEMv1\n\nitem-class     cake none      plate      default\nworld-display  cake cake-view cake-world\nitem-layout    cake 1         1          20              0.20   none\nitem-attribute cake cakiness  100.00\nitem-effect    cake hungwy    -10.00     decwease-hungwy hungwy raise-attribute 1.00\n"
  },
  {
    "path": "data/lv.lang",
    "content": "tramway Tramvaju Drifta Simulators\nmushroom snes\nwhere-egg kur ir manas olas?\n"
  },
  {
    "path": "data/material.list",
    "content": "MATv7\nbrick001 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick002 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 normal\nbrick006 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick010 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick011 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick015 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick020 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick021 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick025 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick046 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick050 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick051 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick052 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 normal\nbush007 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete018 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete019 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete027 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete027b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail004 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail004b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail015 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail016 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail019 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail020 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail020b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail046 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail048 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail049 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndoor001 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal009 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal003 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplank005 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplank049 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster004 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster013 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster014 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster014b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster016 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster017 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster019 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster021 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster021b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster021c flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster025 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplaster049 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nrail011 alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nroof004 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nroof006 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nroof018 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nroof046 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nroof047 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain003 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain005 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain006 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain007 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain008 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain009 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain010 alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain011 alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nterrain012 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nvent001 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow003 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow004 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow012 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow012b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow014 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow015 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow016 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow017 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow017b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow018 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow019 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow020 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow022 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow023 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow024 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow026 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow046 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow047 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow054 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\npinkdick flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\npinko flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmonkemap lightmap linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndingaling lightmap linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndingadong lightmap linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\neye flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntiger flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndebug flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nerrortexture flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_obamabinladen flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_obamabinladen2 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_obamabinladen3 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmongus flat linear metal 1.0 1.0 1.0 1.0 16.0 1.0 0.0 same\ntatra flat linear metal 1.0 1.0 1.0 1.0 1.0 0.0 0.0 same\nraf flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_rail flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_grass flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_road flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwater water linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nfloppa flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbingus flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\npienapaka flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\npienaveikals flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete067 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 normal\nconcrete090 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 normal\nrail006 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_veneer flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_cloth flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\njurmala alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nstreet flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ngrass flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\npath flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nminima flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal107 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail106 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete105 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal104 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete103 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 normal\nwindow102 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal101 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nbrick100 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndetail099 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow098 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow097 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndoor096 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndoor094 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndoor093 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplank092 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal091 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nplank080 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow090 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal088b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal089 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal088a flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow087c flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow087b flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow087a flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow086 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow085 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal084 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetal083 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nwindow081 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nvoltaza alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nhes alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndoor095 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ntexcom_chain alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nciemsziime flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nconcrete110 flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/akmeni flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/klajs flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/markeris water linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/metals flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/palmalapa alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/palmamize flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/palmarieksts flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/skrejcels flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/smiltis flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/trapits water linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkugge/udenis water linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nstolentoilet flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 2.0 same\npoland alpha linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nkjeems flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nskavotaajs flat linear metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\nmetalakaste flat linear metal 1.0 1.0 1.0 1.0 32.0 0.0 0.0 same\nmetalareste alpha linear metal 1.0 1.0 1.0 1.0 32.0 0.0 0.0 same\ntranslucent blend linear metal 1.0 1.0 1.0 1.0 32.0 0.0 0.0 same\ndev/nodraw flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/light flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/sound flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/trigger flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/button16x16 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/floor32x32 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/floor128x128 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/scaffold32x32 alpha nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/scale128x128 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/vent16x16 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wall8x8 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wall16x16 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wall32x32 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wall64x64 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wall128x128 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/wallstair32x32 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/window128x128 flat nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 0.0 same\ndev/white flat nearest metal 1.0 1.0 1.0 1.0 32.0 0.0 0.0 same\n#lightmap/movs lightmap nearest metal 1.0 1.0 1.0 0.0 1.0 0.0 same\nkastetase flat nearest metal 1.0 0.0 1.0 1.0 32.0 0.0 0.0 metalareste\nMaterial flat nearest metal 1.0 0.0 1.0 1.0 16.0 1.0 1.0 Material.01"
  },
  {
    "path": "data/models/bingus.dymdl",
    "content": "DYMDLv1 2238 746 1 6 6\nbingus\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.20955008268356323 0.1521109938621521 0.19754719734191895 -0.5760979056358337 0.7668691277503967 0.28281503915786743 0.5366934537887573 0.3172552287578583 0 0.7591882348060608 4 0.12052897363901138 5 0.10312915593385696 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.20955008268356323 0.1521109938621521 0.19754719734191895 -0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7591882348060608 4 0.12052897363901138 5 0.10312915593385696 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n-0.20955008268356323 0.1521109938621521 0.19754719734191895 -0.5760979056358337 0.7668691277503967 0.28281503915786743 0.5366934537887573 0.3172552287578583 0 0.7591882348060608 4 0.12052897363901138 5 0.10312915593385696 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n-0.20955008268356323 0.1521109938621521 0.19754719734191895 -0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7591882348060608 4 0.12052897363901138 5 0.10312915593385696 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n0.0 0.10837686061859131 0.398435115814209 0.0 0.9131138324737549 0.40763571858406067 0.6365572810173035 0.21912050247192383 0 0.6615631580352783 4 0.16478803753852844 2 0.16256949305534363 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n0.0 0.10837686061859131 0.398435115814209 0.0 0.9131138324737549 0.40763571858406067 0.6365572810173035 0.21912050247192383 0 0.6615631580352783 4 0.16478803753852844 2 0.16256949305534363 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.23059618473052979 0.11400431394577026 0.5390143394470215 0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 4 0.9383580684661865 0 0.05173060670495033 0 0.0 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.11400431394577026 0.5390143394470215 0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.7782641053199768 0.22510869801044464 4 0.9383580684661865 0 0.05173060670495033 0 0.0 0 0.0\n-0.3028668165206909 0.03667032718658447 0.7283434867858887 -0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 4 1.0068565607070923 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.23059618473052979 0.11400431394577026 0.5390143394470215 0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.869789183139801 0.4195291996002197 4 0.9383580684661865 0 0.05173060670495033 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.3397330045700073 0.13471728563308716 0.614459753036499 -0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 4 0.9874043464660645 0 0.0 0 0.0 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.3397330045700073 0.13471728563308716 0.614459753036499 -0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 4 0.9874043464660645 0 0.0 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.3397330045700073 0.13471728563308716 0.614459753036499 -0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 4 0.9874043464660645 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.17843002080917358 0.734142541885376 -0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 4 0.9993991851806641 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.2703179121017456 0.24386632442474365 0.7686514854431152 0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 4 0.9999034404754639 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.17843002080917358 0.734142541885376 -0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 4 0.9993991851806641 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.3028668165206909 0.03667032718658447 0.7283434867858887 -0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 4 1.0068565607070923 0 0.0 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.3403736352920532 0.3993680477142334 0.7714123725891113 -0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 4 0.9999796152114868 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.22349166870117188 0.37734532356262207 0.784529447555542 0.7459639310836792 0.3484298288822174 0.5675222277641296 0.9024268984794617 0.2320421040058136 4 0.9999761581420898 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.34603846073150635 0.34535515308380127 0.7890980243682861 -0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.7970283031463623 0.03577974811196327 4 0.9999548196792603 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.2703179121017456 0.24386632442474365 0.7686514854431152 0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 4 0.9999034404754639 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.2703179121017456 0.24386632442474365 0.7686514854431152 0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 4 0.9999034404754639 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.26705384254455566 0.41719162464141846 0.7832803726196289 0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.34603846073150635 0.34535515308380127 0.7890980243682861 -0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 4 0.9999548196792603 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.9643253684043884 0.4195291996002197 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.5895189642906189 0.03625130653381348 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.5291039943695068 0.056795794516801834 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.6381930708885193 0.0952436700463295 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.8648743033409119 0.6659566164016724 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.8648743033409119 0.5585253834724426 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.8648743033409119 0.5585253834724426 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.2433398962020874 -0.18356812000274658 0.4825398921966553 -0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 4 0.7843207120895386 0 0.1828809678554535 2 0.009385161101818085 0 0.0\n-0.2433398962020874 -0.18356812000274658 0.4825398921966553 -0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 4 0.7843207120895386 0 0.1828809678554535 2 0.009385161101818085 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.7239003777503967 0.5375181436538696 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n-0.2891288995742798 -0.053497374057769775 0.22732973098754883 -0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6697622537612915 4 0.28313446044921875 5 0.02448401227593422 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n-0.2433398962020874 -0.18356812000274658 0.4825398921966553 -0.504165768623352 -0.8324533700942993 0.2297738641500473 0.18306925892829895 0.8835158944129944 4 0.7843207120895386 0 0.1828809678554535 2 0.009385161101818085 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.7813736200332642 0.48258087038993835 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8839541673660278 0.6740447282791138 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.9841787815093994 0.6740447282791138 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.2911590337753296 0.2942936420440674 0.005826227366924286 0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 5 0.9641268253326416 0 0.010711431503295898 0 0.0 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.2911590337753296 0.2942936420440674 0.005826227366924286 0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 5 0.9641268253326416 0 0.010711431503295898 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.2911590337753296 0.2942936420440674 0.005826227366924286 0.20746482908725739 0.4108707010746002 0.8877529501914978 0.8978860974311829 0.6235358715057373 5 0.9641268253326416 0 0.010711431503295898 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.5448826551437378 0.9278662204742432 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n-0.07002320885658264 0.2813262939453125 -0.2664802074432373 -0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6349360942840576 1 0.3262842893600464 5 0.01936449483036995 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n0.0 0.14566397666931152 -0.24244439601898193 0.0 -0.5614489912986755 -0.8274788856506348 0.32698339223861694 0.4710521399974823 0 0.8837517499923706 1 0.06194183975458145 5 0.0038842111825942993 3 0.003427356481552124\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.21205389499664307 0.42999351024627686 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n-0.07002320885658264 0.2813262939453125 -0.2664802074432373 -0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6349360942840576 1 0.3262842893600464 5 0.01936449483036995 0 0.0\n-0.07002320885658264 0.2813262939453125 -0.2664802074432373 -0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6349360942840576 1 0.3262842893600464 5 0.01936449483036995 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n-0.023262888193130493 0.648740291595459 -0.1271979808807373 -0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771129488945007 0 0.0 0 0.0 0 0.0\n0.0 0.6520125865936279 -0.12054771184921265 0.0 0.8378856778144836 0.5458235144615173 0.38134899735450745 0.9473562836647034 1 0.9767983555793762 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.03514702618122101 0.6757450103759766 -0.23533987998962402 -0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.990458607673645 0 0.0 0 0.0 0 0.0\n-0.07448214292526245 0.6610023975372314 -0.22847318649291992 -0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883941411972046 0 0.0 0 0.0 0 0.0\n-0.03514702618122101 0.6757450103759766 -0.23533987998962402 -0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.990458607673645 0 0.0 0 0.0 0 0.0\n-0.07567718625068665 0.6810379028320312 -0.25069737434387207 -0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912397861480713 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.07567718625068665 0.6810379028320312 -0.25069737434387207 -0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912397861480713 0 0.0 0 0.0 0 0.0\n-0.03514702618122101 0.6757450103759766 -0.23533987998962402 -0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.990458607673645 0 0.0 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n-0.059905678033828735 0.5519924163818359 -0.12115323543548584 -0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.954840362071991 0 0.015901487320661545 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.38086456060409546 0.9680102467536926 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n-0.023262888193130493 0.648740291595459 -0.1271979808807373 -0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771129488945007 0 0.0 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.019301511347293854 0.6020534038543701 -0.09771808981895447 -0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663617610931396 0 0.0 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.9880750775337219 0.011592945083975792 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n0.0 0.5465192794799805 -0.07160291075706482 0.0 -0.15399639308452606 0.9880367517471313 0.9606301188468933 0.013870302587747574 1 0.9529521465301514 0 0.019347991794347763 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n0.0 0.5465192794799805 -0.07160291075706482 0.0 -0.15399639308452606 0.9880367517471313 0.9606301188468933 0.013870302587747574 1 0.9529521465301514 0 0.019347991794347763 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.07448214292526245 0.6610023975372314 -0.22847318649291992 -0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883941411972046 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.059905678033828735 0.5519924163818359 -0.12115323543548584 -0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.954840362071991 0 0.015901487320661545 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.059905678033828735 0.5519924163818359 -0.12115323543548584 -0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.954840362071991 0 0.015901487320661545 0 0.0 0 0.0\n-0.09060636162757874 0.555675745010376 -0.14083874225616455 -0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9576939344406128 0 0.010987870395183563 0 0.0 0 0.0\n-0.09060636162757874 0.555675745010376 -0.14083874225616455 -0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9576939344406128 0 0.010987870395183563 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.9842876195907593 0.0781567320227623 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.09060636162757874 0.555675745010376 -0.14083874225616455 -0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9576939344406128 0 0.010987870395183563 0 0.0 0 0.0\n-0.17542767524719238 0.5399246215820312 -0.2481163740158081 -0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722244739532471 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n0.0 0.7441883087158203 -0.3209085464477539 0.0 0.9060335159301758 0.42320016026496887 0.37848225235939026 0.8324812054634094 1 0.9969311356544495 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.3737609088420868 0.7704716324806213 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.4384097158908844 0.9454826712608337 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.1536492109298706 0.6081211566925049 -0.22929680347442627 -0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825789928436279 0 0.0 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.1536492109298706 0.6081211566925049 -0.22929680347442627 -0.7448957562446594 0.18478956818580627 0.6410412788391113 0.974439799785614 0.11739514768123627 1 0.9825789928436279 0 0.0 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.9921565055847168 0.12496611475944519 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.886073887348175 0.48145270347595215 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.1668308973312378 0.6906447410583496 -0.2779656648635864 -0.5177770256996155 0.6292916536331177 0.5795159935951233 0.8731365203857422 0.4358011484146118 1 0.9922270178794861 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.886073887348175 0.43914392590522766 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.1668308973312378 0.6906447410583496 -0.2779656648635864 -0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922270178794861 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.1536492109298706 0.6081211566925049 -0.22929680347442627 -0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825789928436279 0 0.0 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.4784485101699829 0.8643201589584351 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7452795505523682 -0.4596238136291504 -0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974808096885681 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7745609283447266 -0.48571276664733887 -0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977116584777832 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7452795505523682 -0.4596238136291504 -0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974808096885681 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7745609283447266 -0.48571276664733887 -0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977116584777832 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.2947826385498047 0.9091815948486328 -0.5893387794494629 -0.82534259557724 0.5525681376457214 0.11593981832265854 0.5277626514434814 0.6673424243927002 1 0.9977961778640747 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.2638838291168213 0.9322519302368164 -0.609893798828125 -0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.5128092169761658 0.650969922542572 1 0.9978176355361938 0 0.0 0 0.0 0 0.0\n-0.2638838291168213 0.9322519302368164 -0.609893798828125 -0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.5128092169761658 0.650969922542572 1 0.9978176355361938 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.12602776288986206 0.8367936611175537 -0.5169486999511719 0.5360575914382935 0.844019889831543 0.014984588138759136 0.4399544298648834 0.7201979756355286 1 0.9980955123901367 0 0.0 0 0.0 0 0.0\n-0.12602776288986206 0.8367936611175537 -0.5169486999511719 0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980955123901367 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.17542767524719238 0.5399246215820312 -0.2481163740158081 -0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722244739532471 0 0.0 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.03183332085609436 0.4725472927093506 -0.1536623239517212 -0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963284492492676 0 0.07777944952249527 0 0.0 0 0.0\n-0.02722427248954773 0.4976499080657959 -0.1062207818031311 -0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.927412748336792 0 0.05390864610671997 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.12602776288986206 0.8367936611175537 -0.5169486999511719 0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980955123901367 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9763534069061279 0.9473682045936584 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n-0.17542767524719238 0.5399246215820312 -0.2481163740158081 -0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722244739532471 0 0.0 0 0.0 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n-0.15695953369140625 0.5213019847869873 -0.23152399063110352 -0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635127186775208 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.9264681935310364 0.7198551297187805 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.2638838291168213 0.9322519302368164 -0.609893798828125 -0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.946968138217926 0.6946501135826111 1 0.9978176355361938 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.15881234407424927 0.269660085439682 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.2638838291168213 0.9322519302368164 -0.609893798828125 -0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.11900205165147781 0.05518902838230133 1 0.9978176355361938 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.2947826385498047 0.9091815948486328 -0.5893387794494629 -0.82534259557724 0.5525681376457214 0.11593981832265854 0.1054219976067543 0.07213792949914932 1 0.9977961778640747 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.2947826385498047 0.9091815948486328 -0.5893387794494629 -0.82534259557724 0.5525681376457214 0.11593981832265854 0.1054219976067543 0.07213792949914932 1 0.9977961778640747 0 0.0 0 0.0 0 0.0\n-0.15695953369140625 0.5213019847869873 -0.23152399063110352 -0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635127186775208 0 0.0 0 0.0 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.2595592737197876 0.8025784492492676 -0.5593953132629395 -0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977763891220093 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.8908731341362 0.9758754968643188 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n-0.02722427248954773 0.4976499080657959 -0.1062207818031311 -0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.927412748336792 0 0.05390864610671997 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n-0.07230684161186218 0.39586949348449707 -0.33485913276672363 -0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468030333518982 0 0.039024900645017624 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.2595592737197876 0.8025784492492676 -0.5593953132629395 -0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977763891220093 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.23466861248016357 0.7335350513458252 -0.5268294811248779 -0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977140426635742 0 0.0 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.8821396827697754 0.8362104296684265 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.9133719205856323 0.8904370665550232 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.8834765553474426 0.8773533701896667 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.20207861065864563 0.31930482387542725 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.8714877963066101 0.14967380464076996 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.07230684161186218 0.39586949348449707 -0.33485913276672363 -0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468030333518982 0 0.039024900645017624 0 0.0 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n0.0 0.4452739953994751 -0.17835205793380737 0.0 -0.49507126212120056 0.86883145570755 0.8921484351158142 0.046273425221443176 1 0.827133059501648 0 0.13505855202674866 0 0.0 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.8788778185844421 0.04964836686849594 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n0.0 0.4452739953994751 -0.17835205793380737 0.0 -0.49507126212120056 0.86883145570755 0.8921484351158142 0.046273425221443176 1 0.827133059501648 0 0.13505855202674866 0 0.0 0 0.0\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.6188840866088867 0.5845966339111328 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.642014741897583 0.5646453499794006 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6518501043319702 0.9787291884422302 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.6464900374412537 0.9542642831802368 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.23082518577575684 0.39427757263183594 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.5589442253112793 0.16177308559417725 0.07854250073432922 -0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.02092316746711731 0.6068553328514099 5 1.000016450881958 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.5096194744110107 0.2505838871002197 0.11315262317657471 -0.5906857252120972 0.6383556723594666 0.4935148060321808 0.38072505593299866 0.38276207447052 5 0.9994231462478638 0 0.0 0 0.0 0 0.0\n-0.47704315185546875 0.22420382499694824 0.13703078031539917 0.09256263822317123 0.13635669648647308 0.9862971901893616 0.39813071489334106 0.3643503189086914 5 0.9994118809700012 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.5096194744110107 0.2505838871002197 0.11315262317657471 -0.5906857252120972 0.6383556723594666 0.4935148060321808 0.6430558562278748 0.6733530759811401 5 0.9994231462478638 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.47704315185546875 0.22420382499694824 0.13703078031539917 0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 5 0.9994118809700012 0 0.0 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.47704315185546875 0.22420382499694824 0.13703078031539917 0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 5 0.9994118809700012 0 0.0 0 0.0 0 0.0\n-0.5589442253112793 0.16177308559417725 0.07854250073432922 -0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.9657022356987 0.5219221115112305 5 1.000016450881958 0 0.0 0 0.0 0 0.0\n-0.5088207721710205 0.12029749155044556 0.1170196533203125 -0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.9588103890419006 0.5548603534698486 5 1.0001115798950195 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.20955008268356323 0.1521109938621521 0.19754719734191895 0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7611507177352905 2 0.11970722675323486 3 0.10152817517518997 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.20955008268356323 0.1521109938621521 0.19754719734191895 0.5760979056358337 0.7668691277503967 0.28281503915786743 0.5366934537887573 0.3172552287578583 0 0.7611507177352905 2 0.11970722675323486 3 0.10152817517518997 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.2891288995742798 -0.053497374057769775 0.22732973098754883 0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.7061302661895752 0.3902425765991211 0 0.6714892983436584 2 0.28184226155281067 3 0.023302968591451645 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.0 0.10837686061859131 0.398435115814209 0.0 0.9131138324737549 0.40763571858406067 0.6365572810173035 0.21912050247192383 0 0.6615631580352783 4 0.16478803753852844 2 0.16256949305534363 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.23059618473052979 0.11400431394577026 0.5390143394470215 -0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 2 0.9343189597129822 0 0.054628096520900726 0 0.0 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.45191001892089844 0.14536665380001068 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.3397330045700073 0.13471728563308716 0.614459753036499 0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 2 0.9887034893035889 0 0.0 0 0.0 0 0.0\n0.3028668165206909 0.03667032718658447 0.7283434867858887 0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 2 1.0069687366485596 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.23059618473052979 0.11400431394577026 0.5390143394470215 -0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.869789183139801 0.4195291996002197 2 0.9343189597129822 0 0.054628096520900726 0 0.0 0 0.0\n0.3397330045700073 0.13471728563308716 0.614459753036499 0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 2 0.9887034893035889 0 0.0 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.3397330045700073 0.13471728563308716 0.614459753036499 0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 2 0.9887034893035889 0 0.0 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.3397330045700073 0.13471728563308716 0.614459753036499 0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 2 0.9887034893035889 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.17843002080917358 0.734142541885376 0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 2 0.9995585083961487 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.2703179121017456 0.24386632442474365 0.7686514854431152 -0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 2 0.9999029636383057 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.2703179121017456 0.24386632442474365 0.7686514854431152 -0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 2 0.9999029636383057 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.17843002080917358 0.734142541885376 0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7528762221336365 0.10685840249061584 2 0.9995585083961487 0 0.0 0 0.0 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.2891288995742798 -0.053497374057769775 0.22732973098754883 0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.7061302661895752 0.3902425765991211 0 0.6714892983436584 2 0.28184226155281067 3 0.023302968591451645 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.3028668165206909 0.03667032718658447 0.7283434867858887 0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 2 1.0069687366485596 0 0.0 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.3403736352920532 0.3993680477142334 0.7714123725891113 0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 2 0.9999896883964539 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.26705384254455566 0.41719162464141846 0.7832803726196289 -0.14835047721862793 0.9023407697677612 0.4046449065208435 0.8518726229667664 0.03330334648489952 2 1.0000007152557373 0 0.0 0 0.0 0 0.0\n0.22349166870117188 0.37734532356262207 0.784529447555542 -0.7459639310836792 0.3484298288822174 0.5675222277641296 0.9024268984794617 0.2320421040058136 2 0.9999775290489197 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.34603846073150635 0.34535515308380127 0.7890980243682861 0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.7970283031463623 0.03577974811196327 2 0.9999740719795227 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.34603846073150635 0.34535515308380127 0.7890980243682861 0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 2 0.9999740719795227 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.2703179121017456 0.24386632442474365 0.7686514854431152 -0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 2 0.9999029636383057 0 0.0 0 0.0 0 0.0\n0.34603846073150635 0.34535515308380127 0.7890980243682861 0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 2 0.9999740719795227 0 0.0 0 0.0 0 0.0\n0.26705384254455566 0.41719162464141846 0.7832803726196289 -0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 2 1.0000007152557373 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.3028668165206909 0.03667032718658447 0.7283434867858887 0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 2 1.0069687366485596 0 0.0 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.9643253684043884 0.4195291996002197 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.5895189642906189 0.03625130653381348 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.6381930708885193 0.0952436700463295 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.0 0.06483566761016846 0.4689443111419678 0.0 0.9169896245002747 0.3988158702850342 0.6363822221755981 0.17513136565685272 0 0.534076988697052 4 0.23122085630893707 2 0.22778838872909546 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.6381930708885193 0.0952436700463295 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.8648743033409119 0.6659566164016724 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.8648743033409119 0.5585253834724426 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.8648743033409119 0.5585253834724426 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.2433398962020874 -0.18356812000274658 0.4825398921966553 0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 2 0.7614166140556335 0 0.20125827193260193 4 0.018037568777799606 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.2433398962020874 -0.18356812000274658 0.4825398921966553 0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 2 0.7614166140556335 0 0.20125827193260193 4 0.018037568777799606 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.7239003777503967 0.5375181436538696 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.2891288995742798 -0.053497374057769775 0.22732973098754883 0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6714892983436584 2 0.28184226155281067 3 0.023302968591451645 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.2433398962020874 -0.18356812000274658 0.4825398921966553 0.504165768623352 -0.8324533700942993 0.2297738641500473 0.18306925892829895 0.8835158944129944 2 0.7614166140556335 0 0.20125827193260193 4 0.018037568777799606 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.7813736200332642 0.48258087038993835 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8518726229667664 0.40882110595703125 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8839541673660278 0.6740447282791138 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.2911590337753296 0.2942936420440674 0.005826227366924286 -0.20746482908725739 0.4108707010746002 0.8877529501914978 0.8978860974311829 0.6235358715057373 3 0.961869478225708 0 0.014442968182265759 0 0.0 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.2911590337753296 0.2942936420440674 0.005826227366924286 -0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 3 0.961869478225708 0 0.014442968182265759 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.2911590337753296 0.2942936420440674 0.005826227366924286 -0.20746482908725739 0.4108707010746002 0.8877529501914978 0.8978860974311829 0.6235358715057373 3 0.961869478225708 0 0.014442968182265759 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.5448826551437378 0.9278662204742432 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n0.07002320885658264 0.2813262939453125 -0.2664802074432373 0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6353183388710022 1 0.3263947069644928 3 0.018231775611639023 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.21205389499664307 0.42999351024627686 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.23082518577575684 0.39427757263183594 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.07002320885658264 0.2813262939453125 -0.2664802074432373 0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6353183388710022 1 0.3263947069644928 3 0.018231775611639023 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.023262888193130493 0.648740291595459 -0.1271979808807373 0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771119952201843 0 0.0 0 0.0 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n0.0 0.6520125865936279 -0.12054771184921265 0.0 0.8378856778144836 0.5458235144615173 0.38134899735450745 0.9473562836647034 1 0.9767983555793762 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.03514702618122101 0.6757450103759766 -0.23533987998962402 0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.9904599189758301 0 0.0 0 0.0 0 0.0\n0.07448214292526245 0.6610023975372314 -0.22847318649291992 0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883980751037598 0 0.0 0 0.0 0 0.0\n0.07567718625068665 0.6810379028320312 -0.25069737434387207 0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912428259849548 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.07567718625068665 0.6810379028320312 -0.25069737434387207 0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912428259849548 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.059905678033828735 0.5519924163818359 -0.12115323543548584 0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.9548473358154297 0 0.015978146344423294 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.019301511347293854 0.6020534038543701 -0.09771808981895447 0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663557410240173 0 0.0 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.38086456060409546 0.9680102467536926 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n0.023262888193130493 0.648740291595459 -0.1271979808807373 0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771119952201843 0 0.0 0 0.0 0 0.0\n0.0 0.6520125865936279 -0.12054771184921265 0.0 0.8378856778144836 0.5458235144615173 0.38134899735450745 0.9473562836647034 1 0.9767983555793762 0 0.0 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.9880750775337219 0.011592945083975792 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n0.019301511347293854 0.6020534038543701 -0.09771808981895447 0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663557410240173 0 0.0 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.0 0.5465192794799805 -0.07160291075706482 0.0 -0.15399639308452606 0.9880367517471313 0.9606301188468933 0.013870302587747574 1 0.9529521465301514 0 0.019347991794347763 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n0.0 0.5465192794799805 -0.07160291075706482 0.0 -0.15399639308452606 0.9880367517471313 0.9606301188468933 0.013870302587747574 1 0.9529521465301514 0 0.019347991794347763 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.07448214292526245 0.6610023975372314 -0.22847318649291992 0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883980751037598 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.023262888193130493 0.648740291595459 -0.1271979808807373 0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771119952201843 0 0.0 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.019301511347293854 0.6020534038543701 -0.09771808981895447 0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663557410240173 0 0.0 0 0.0 0 0.0\n0.059905678033828735 0.5519924163818359 -0.12115323543548584 0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.9548473358154297 0 0.015978146344423294 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.09060636162757874 0.555675745010376 -0.14083874225616455 0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9577164649963379 0 0.01108131930232048 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.09060636162757874 0.555675745010376 -0.14083874225616455 0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9577164649963379 0 0.01108131930232048 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.9842876195907593 0.0781567320227623 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.15695953369140625 0.5213019847869873 -0.23152399063110352 0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635539650917053 0 0.0 0 0.0 0 0.0\n0.17542767524719238 0.5399246215820312 -0.2481163740158081 0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722552299499512 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.15695953369140625 0.5213019847869873 -0.23152399063110352 0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635539650917053 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n0.0 0.7441883087158203 -0.3209085464477539 0.0 0.9060335159301758 0.42320016026496887 0.37848225235939026 0.8324812054634094 1 0.9969311356544495 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.3737609088420868 0.7704716324806213 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.0 0.7441883087158203 -0.3209085464477539 0.0 0.9060335159301758 0.42320016026496887 0.37848225235939026 0.8324812054634094 1 0.9969311356544495 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.4384097158908844 0.9454826712608337 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.09060636162757874 0.555675745010376 -0.14083874225616455 0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.4189552068710327 0.9702762365341187 1 0.9577164649963379 0 0.01108131930232048 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.1536492109298706 0.6081211566925049 -0.22929680347442627 0.7448957562446594 0.18478956818580627 0.6410412788391113 0.974439799785614 0.11739514768123627 1 0.9825928807258606 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.9921565055847168 0.12496611475944519 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.1668308973312378 0.6906447410583496 -0.2779656648635864 0.5177770256996155 0.6292916536331177 0.5795159935951233 0.8731365203857422 0.4358011484146118 1 0.9922325015068054 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.886073887348175 0.48145270347595215 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.886073887348175 0.43914392590522766 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.1668308973312378 0.6906447410583496 -0.2779656648635864 0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922325015068054 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.1536492109298706 0.6081211566925049 -0.22929680347442627 0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825928807258606 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.12602776288986206 0.8367936611175537 -0.5169486999511719 -0.5360575914382935 0.844019889831543 0.014984588138759136 0.4399544298648834 0.7201979756355286 1 0.9980970025062561 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.4784485101699829 0.8643201589584351 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7452795505523682 -0.4596238136291504 0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974828362464905 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7452795505523682 -0.4596238136291504 0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974828362464905 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7452795505523682 -0.4596238136291504 0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974828362464905 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7745609283447266 -0.48571276664733887 0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977135062217712 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.2947826385498047 0.9091815948486328 -0.5893387794494629 0.82534259557724 0.5525681376457214 0.11593981832265854 0.5277626514434814 0.6673424243927002 1 0.9977980256080627 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.2638838291168213 0.9322519302368164 -0.609893798828125 0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.5128092169761658 0.650969922542572 1 0.9978194236755371 0 0.0 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.12602776288986206 0.8367936611175537 -0.5169486999511719 -0.5360575914382935 0.844019889831543 0.014984588138759136 0.4399544298648834 0.7201979756355286 1 0.9980970025062561 0 0.0 0 0.0 0 0.0\n0.12602776288986206 0.8367936611175537 -0.5169486999511719 -0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980970025062561 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9544497132301331 0.8589244484901428 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.03183332085609436 0.4725472927093506 -0.1536623239517212 0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963752388954163 0 0.07782471179962158 0 0.0 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.12602776288986206 0.8367936611175537 -0.5169486999511719 -0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980970025062561 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9763534069061279 0.9473682045936584 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.9763534069061279 0.9866212010383606 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n0.17542767524719238 0.5399246215820312 -0.2481163740158081 0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722552299499512 0 0.0 0 0.0 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.2638838291168213 0.9322519302368164 -0.609893798828125 0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.946968138217926 0.6946501135826111 1 0.9978194236755371 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.9264681935310364 0.7198551297187805 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.9277340769767761 0.18994596600532532 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.2638838291168213 0.9322519302368164 -0.609893798828125 0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.11900205165147781 0.05518902838230133 1 0.9978194236755371 0 0.0 0 0.0 0 0.0\n0.2947826385498047 0.9091815948486328 -0.5893387794494629 0.82534259557724 0.5525681376457214 0.11593981832265854 0.1054219976067543 0.07213792949914932 1 0.9977980256080627 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.23466861248016357 0.7335350513458252 -0.5268294811248779 0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977160096168518 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.2947826385498047 0.9091815948486328 -0.5893387794494629 0.82534259557724 0.5525681376457214 0.11593981832265854 0.1054219976067543 0.07213792949914932 1 0.9977980256080627 0 0.0 0 0.0 0 0.0\n0.15695953369140625 0.5213019847869873 -0.23152399063110352 0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635539650917053 0 0.0 0 0.0 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.2595592737197876 0.8025784492492676 -0.5593953132629395 0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977782964706421 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.8908731341362 0.9758754968643188 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.2860924005508423 0.18550969660282135 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n0.02722427248954773 0.4976499080657959 -0.1062207818031311 0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.9274529814720154 0 0.053911928087472916 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n0.03183332085609436 0.4725472927093506 -0.1536623239517212 0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963752388954163 0 0.07782471179962158 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.2595592737197876 0.8025784492492676 -0.5593953132629395 0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977782964706421 0 0.0 0 0.0 0 0.0\n0.23466861248016357 0.7335350513458252 -0.5268294811248779 0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977160096168518 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.23466861248016357 0.7335350513458252 -0.5268294811248779 0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977160096168518 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.8821396827697754 0.8362104296684265 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.9133719205856323 0.8904370665550232 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.8834765553474426 0.8773533701896667 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.20207861065864563 0.31930482387542725 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.07230684161186218 0.39586949348449707 -0.33485913276672363 0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468240141868591 0 0.03911536559462547 0 0.0 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n0.0 0.4452739953994751 -0.17835205793380737 0.0 -0.49507126212120056 0.86883145570755 0.8921484351158142 0.046273425221443176 1 0.827133059501648 0 0.13505855202674866 0 0.0 0 0.0\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.03183332085609436 0.4725472927093506 -0.1536623239517212 0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963752388954163 0 0.07782471179962158 0 0.0 0 0.0\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.8788778185844421 0.04964836686849594 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.0 0.4452739953994751 -0.17835205793380737 0.0 -0.49507126212120056 0.86883145570755 0.8921484351158142 0.046273425221443176 1 0.827133059501648 0 0.13505855202674866 0 0.0 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.6188840866088867 0.5845966339111328 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.642014741897583 0.5646453499794006 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6518501043319702 0.9787291884422302 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.6464900374412537 0.9542642831802368 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.23082518577575684 0.39427757263183594 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.5589442253112793 0.16177308559417725 0.07854250073432922 0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.02092316746711731 0.6068553328514099 3 1.0000194311141968 0 0.0 0 0.0 0 0.0\n0.5088207721710205 0.12029749155044556 0.1170196533203125 0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.04735330492258072 0.6357671618461609 3 1.0001006126403809 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.5096194744110107 0.2505838871002197 0.11315262317657471 0.5906857252120972 0.6383556723594666 0.4935148060321808 0.38072505593299866 0.38276207447052 3 0.9994410276412964 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.5096194744110107 0.2505838871002197 0.11315262317657471 0.5906857252120972 0.6383556723594666 0.4935148060321808 0.6430558562278748 0.6733530759811401 3 0.9994410276412964 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.47704315185546875 0.22420382499694824 0.13703078031539917 -0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 3 0.9994068741798401 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.5589442253112793 0.16177308559417725 0.07854250073432922 0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.9657022356987 0.5219221115112305 3 1.0000194311141968 0 0.0 0 0.0 0 0.0\n0.47704315185546875 0.22420382499694824 0.13703078031539917 -0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 3 0.9994068741798401 0 0.0 0 0.0 0 0.0\n0.5088207721710205 0.12029749155044556 0.1170196533203125 0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.9588103890419006 0.5548603534698486 3 1.0001006126403809 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.1668308973312378 0.6906447410583496 -0.2779656648635864 0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922325015068054 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0003662221133708954 0.7992797493934631 0.6009094715118408 0.43992936611175537 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.16803307831287384 0.6519752144813538 -0.12582896649837494 -0.0005493331700563431 0.7998901605606079 0.600085437297821 0.446943461894989 0.5783216953277588 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 -0.00012207403779029846 0.7973570823669434 0.6034730076789856 0.44789454340934753 0.5826849937438965 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.4365166127681732 0.5947638750076294 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.26475274562835693 0.5735782384872437 -0.4104318916797638 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.45217427611351013 0.5859748125076294 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17463847994804382 0.7308197021484375 -0.23016177117824554 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.439492791891098 0.5970363020896912 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.0 0.7986083626747131 0.6017944812774658 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.0 0.7986083626747131 0.6017944812774658 0.43512284755706787 0.5850702524185181 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 0.0 0.7986083626747131 0.6017944812774658 0.42232412099838257 0.5826810598373413 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 -0.9146091938018799 0.3822748363018036 0.13153477013111115 0.43651267886161804 0.5947748422622681 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.26600396633148193 0.5740855932235718 -0.4102489948272705 -0.9412823915481567 0.26740318536758423 0.2059389054775238 0.45216143131256104 0.5860105156898499 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.2696293294429779 0.5560132265090942 -0.40479886531829834 -0.9432050585746765 0.2538224458694458 0.2142704576253891 0.45177799463272095 0.5847391486167908 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 -0.04226813465356827 -0.861690104007721 -0.5056001543998718 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 -0.02450636401772499 -0.8625141382217407 -0.5053865313529968 0.43512269854545593 0.5856449007987976 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.0007019257172942162 -0.8356273174285889 -0.5492416024208069 0.44757309556007385 0.5831930041313171 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 -0.8927274346351624 -0.4296395778656006 -0.1355937421321869 0.43702465295791626 0.5940226316452026 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.26475274562835693 0.5735782384872437 -0.4104318916797638 -0.9075899720191956 -0.38608965277671814 -0.16479995846748352 0.45217427611351013 0.5859748125076294 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.27082911133766174 0.556499719619751 -0.40462347865104675 -0.9092074632644653 -0.3807184100151062 -0.16827906668186188 0.45176565647125244 0.5847734212875366 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0316782146692276 -0.8488723635673523 -0.5275734663009644 0.430316299200058 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.16803307831287384 0.6519752144813538 -0.12582896649837494 -0.043885618448257446 -0.887600302696228 -0.45844903588294983 0.42330220341682434 0.5783216953277588 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.0005493331700563431 -0.8368785381317139 -0.5473799705505371 0.42264923453330994 0.5831946730613708 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 0.8886989951133728 -0.4385204613208771 -0.13370159268379211 0.43702632188796997 0.5940390825271606 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.26600396633148193 0.5740855932235718 -0.4102489948272705 0.9305398464202881 -0.28128910064697266 -0.23435163497924805 0.45216143131256104 0.5860105156898499 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.16651925444602966 0.7212713360786438 -0.23632338643074036 0.8850062489509583 -0.44776755571365356 -0.1272927075624466 0.43992626667022705 0.5963646173477173 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.16803307831287384 0.6519752144813538 -0.12582896649837494 0.9311502575874329 -0.3585314452648163 -0.06607257574796677 0.4321533143520355 0.591489851474762 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.9311502575874329 -0.3585314452648163 -0.06607257574796677 0.43702465295791626 0.5940226316452026 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 0.9311502575874329 -0.3585314452648163 -0.06607257574796677 0.4365166127681732 0.5947638750076294 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 -0.9288918972015381 -0.3643299639225006 -0.06610309332609177 0.43651267886161804 0.5947748422622681 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.9288918972015381 -0.3643299639225006 -0.06610309332609177 0.43702632188796997 0.5940390825271606 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.16803307831287384 0.6519752144813538 -0.12582896649837494 -0.9288918972015381 -0.3643299639225006 -0.06610309332609177 0.4321533143520355 0.591489851474762 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.26475274562835693 0.5735782384872437 -0.4104318916797638 -0.26615193486213684 0.6565446853637695 -0.7057405114173889 0.453747421503067 0.5859748125076294 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.1669710874557495 0.7213309407234192 -0.23609749972820282 -0.26615193486213684 0.6565446853637695 -0.7057405114173889 0.44686874747276306 0.5963687896728516 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17463847994804382 0.7308197021484375 -0.23016177117824554 -0.26615193486213684 0.6565446853637695 -0.7057405114173889 0.44740810990333557 0.5970363020896912 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17420312762260437 0.7306431531906128 -0.23022541403770447 0.25019073486328125 0.6637470722198486 -0.7048249840736389 0.42286816239356995 0.5970238447189331 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.16651925444602966 0.7212713360786438 -0.23632338643074036 0.25019073486328125 0.6637470722198486 -0.7048249840736389 0.42340871691703796 0.5963646173477173 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.26600396633148193 0.5740855932235718 -0.4102489948272705 0.25019073486328125 0.6637470722198486 -0.7048249840736389 0.4164102375507355 0.5860105156898499 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.1669710874557495 0.7213309407234192 -0.23609749972820282 -0.060670796781778336 0.5655690431594849 -0.8224433064460754 0.44686874747276306 0.5963687896728516 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 -0.05798516795039177 0.599536120891571 -0.7982116341590881 0.43512284755706787 0.5965752005577087 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17463847994804382 0.7308197021484375 -0.23016177117824554 -0.060762353241443634 0.5641651749610901 -0.8233894109725952 0.44740810990333557 0.5970363020896912 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 0.4831080138683319 -0.6277962327003479 0.6102786064147949 0.44789454340934753 0.5826849937438965 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.4831080138683319 -0.6277962327003479 0.6102786064147949 0.44757309556007385 0.5831930041313171 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.27082911133766174 0.556499719619751 -0.40462347865104675 0.4831080138683319 -0.6277962327003479 0.6102786064147949 0.45417484641075134 0.5979340076446533 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.2696293294429779 0.5560132265090942 -0.40479886531829834 -0.4746238589286804 -0.635120689868927 0.6093325614929199 0.41615521907806396 0.5979464054107666 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.4746238589286804 -0.635120689868927 0.6093325614929199 0.42264923453330994 0.5831946730613708 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 -0.4746238589286804 -0.635120689868927 0.6093325614929199 0.42232412099838257 0.5826810598373413 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.05896176025271416 0.600085437297821 -0.7977232933044434 0.43512284755706787 0.5965752005577087 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.16651925444602966 0.7212713360786438 -0.23632338643074036 0.06060975790023804 0.5796685814857483 -0.8125553131103516 0.42340871691703796 0.5963646173477173 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17420312762260437 0.7306431531906128 -0.23022541403770447 0.060670796781778336 0.5788445472717285 -0.8131351470947266 0.42286816239356995 0.5970238447189331 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4033651649951935 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.13953270018100739 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.40688976645469666 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4159002900123596 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.41500991582870483 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.1052117869257927 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4138997197151184 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4130093455314636 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.2676198184490204 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 1.0 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4033651649951935 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.13953270018100739 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4159002900123596 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.41500991582870483 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4138997197151184 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4130093455314636 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4033651649951935 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 -0.999969482421875 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 -1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n-0.20955008268356323 0.1521109938621521 0.19754719734191895 -0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7591882348060608 4 0.12052897363901138 5 0.10312915593385696 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.27896857261657715 0.07729777693748474 0.03905799984931946 -0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.709712564945221 5 0.23412871360778809 4 0.047435592859983444 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n-0.2218678593635559 -0.11717742681503296 0.0475330650806427 -0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.89361971616745 4 0.052920397371053696 5 0.036598507314920425 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n-0.2891288995742798 -0.053497374057769775 0.22732973098754883 -0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6697622537612915 4 0.28313446044921875 5 0.02448401227593422 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n-0.29087793827056885 0.005670234560966492 0.15487772226333618 -0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7698143124580383 4 0.1380283385515213 5 0.08358502388000488 0 0.0\n-0.2891288995742798 -0.053497374057769775 0.22732973098754883 -0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.7061302661895752 0.3902425765991211 0 0.6697622537612915 4 0.28313446044921875 5 0.02448401227593422 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.45191001892089844 0.14536665380001068 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.23059618473052979 0.11400431394577026 0.5390143394470215 0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 4 0.9383580684661865 0 0.05173060670495033 0 0.0 0 0.0\n-0.15183353424072266 0.08250489830970764 0.41399872303009033 0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 4 0.568696916103363 0 0.35157811641693115 2 0.06581364572048187 0 0.0\n-0.23059618473052979 0.11400431394577026 0.5390143394470215 0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 4 0.9383580684661865 0 0.05173060670495033 0 0.0 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.3028668165206909 0.03667032718658447 0.7283434867858887 -0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 4 1.0068565607070923 0 0.0 0 0.0 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.3397330045700073 0.13471728563308716 0.614459753036499 -0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 4 0.9874043464660645 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.3028668165206909 0.03667032718658447 0.7283434867858887 -0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 4 1.0068565607070923 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.3397330045700073 0.13471728563308716 0.614459753036499 -0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 4 0.9874043464660645 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.34602928161621094 0.1090165376663208 0.6943802833557129 -0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 4 0.9968497157096863 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.17843002080917358 0.734142541885376 -0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7528762221336365 0.10685840249061584 4 0.9993991851806641 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.1780099868774414 0.10716038942337036 0.7001523971557617 0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 4 0.9911723732948303 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.23059618473052979 0.1385723352432251 0.6024715900421143 0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 4 0.9903550148010254 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.17843002080917358 0.734142541885376 -0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 4 0.9993991851806641 0 0.0 0 0.0 0 0.0\n-0.18260103464126587 0.19482123851776123 0.6990411281585693 0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 4 0.9989193677902222 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.2703179121017456 0.24386632442474365 0.7686514854431152 0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 4 0.9999034404754639 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.26910340785980225 0.17764323949813843 0.7524588108062744 0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 4 0.9995130300521851 0 0.0 0 0.0 0 0.0\n-0.2703179121017456 0.24386632442474365 0.7686514854431152 0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 4 0.9999034404754639 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.2133294939994812 0.641486644744873 0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 4 0.9994219541549683 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.20788490772247314 0.6544501781463623 -0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 4 0.9982490539550781 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.17843002080917358 0.734142541885376 -0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7528762221336365 0.10685840249061584 4 0.9993991851806641 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.20780110359191895 0.12533944845199585 0.2807978391647339 -0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6718023419380188 4 0.25894609093666077 5 0.0418415404856205 0 0.0\n-0.2891288995742798 -0.053497374057769775 0.22732973098754883 -0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.7061302661895752 0.3902425765991211 0 0.6697622537612915 4 0.28313446044921875 5 0.02448401227593422 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.3468945026397705 0.06105288863182068 0.6569516658782959 -0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 4 0.9868455529212952 0 0.0 0 0.0 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.3469996452331543 0.10634586215019226 0.5646698474884033 -0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 4 0.9651960134506226 0 0.011369410902261734 0 0.0 0 0.0\n-0.25187551975250244 0.12372738122940063 0.40594351291656494 -0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 4 0.7090063691139221 0 0.2557307779788971 0 0.0 0 0.0\n-0.3403736352920532 0.3993680477142334 0.7714123725891113 -0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 4 0.9999796152114868 0 0.0 0 0.0 0 0.0\n-0.26705384254455566 0.41719162464141846 0.7832803726196289 0.14835047721862793 0.9023407697677612 0.4046449065208435 0.8518726229667664 0.03330334648489952 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.237876296043396 0.37244415283203125 0.7143435478210449 0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 4 1.0000070333480835 0 0.0 0 0.0 0 0.0\n-0.26705384254455566 0.41719162464141846 0.7832803726196289 0.14835047721862793 0.9023407697677612 0.4046449065208435 0.8807538151741028 0.21484346687793732 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.22349166870117188 0.37734532356262207 0.784529447555542 0.7459639310836792 0.3484298288822174 0.5675222277641296 0.9024268984794617 0.2320421040058136 4 0.9999761581420898 0 0.0 0 0.0 0 0.0\n-0.34603846073150635 0.34535515308380127 0.7890980243682861 -0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.7970283031463623 0.03577974811196327 4 0.9999548196792603 0 0.0 0 0.0 0 0.0\n-0.3403736352920532 0.3993680477142334 0.7714123725891113 -0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 4 0.9999796152114868 0 0.0 0 0.0 0 0.0\n-0.3276984691619873 0.2997403144836426 0.701850414276123 -0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 4 0.999759316444397 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.34603846073150635 0.34535515308380127 0.7890980243682861 -0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 4 0.9999548196792603 0 0.0 0 0.0 0 0.0\n-0.3328806161880493 0.24741899967193604 0.7576038837432861 -0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 4 0.9998233914375305 0 0.0 0 0.0 0 0.0\n-0.20932167768478394 0.2829176187515259 0.7541635036468506 0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 4 0.9999198317527771 0 0.0 0 0.0 0 0.0\n-0.22349166870117188 0.37734532356262207 0.784529447555542 0.7459639310836792 0.3484298288822174 0.5675222277641296 0.755506694316864 0.9117282629013062 4 0.9999761581420898 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.22349166870117188 0.37734532356262207 0.784529447555542 0.7459639310836792 0.3484298288822174 0.5675222277641296 0.755506694316864 0.9117282629013062 4 0.9999761581420898 0 0.0 0 0.0 0 0.0\n-0.26705384254455566 0.41719162464141846 0.7832803726196289 0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.2844879627227783 0.30941593647003174 0.7897307872772217 0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 4 0.9999726414680481 0 0.0 0 0.0 0 0.0\n-0.26705384254455566 0.41719162464141846 0.7832803726196289 0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.3403736352920532 0.3993680477142334 0.7714123725891113 -0.6911221742630005 0.7172459959983826 0.08874782919883728 0.6943598985671997 0.9206492900848389 4 0.9999796152114868 0 0.0 0 0.0 0 0.0\n-0.34603846073150635 0.34535515308380127 0.7890980243682861 -0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 4 0.9999548196792603 0 0.0 0 0.0 0 0.0\n-0.2691516876220703 0.09592822194099426 0.7350804805755615 -0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 4 0.9980854392051697 0 0.0 0 0.0 0 0.0\n-0.3028668165206909 0.03667032718658447 0.7283434867858887 -0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 4 1.0068565607070923 0 0.0 0 0.0 0 0.0\n-0.19527888298034668 0.014238350093364716 0.7056961059570312 0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 4 0.958198606967926 0 0.0 0 0.0 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.5895189642906189 0.03625130653381348 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n0.0 -0.03274005651473999 0.5830428600311279 0.0 0.3660695254802704 0.9305703639984131 0.6381930708885193 0.0952436700463295 0 0.3733152747154236 4 0.3145773410797119 2 0.31029725074768066 0 0.0\n-0.16343510150909424 0.09151619672775269 0.6089448928833008 0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 4 0.9427136182785034 0 0.02507808618247509 0 0.0 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n-0.09442317485809326 -0.08681789040565491 0.6793560981750488 0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 4 0.8207167387008667 0 0.10588592290878296 2 0.07276903092861176 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.2433398962020874 -0.18356812000274658 0.4825398921966553 -0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 4 0.7843207120895386 0 0.1828809678554535 2 0.009385161101818085 0 0.0\n-0.30187129974365234 -0.08480963110923767 0.619861364364624 -0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 4 0.9709039330482483 0 0.0 0 0.0 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n-0.3541121482849121 -0.07419586181640625 0.4291270971298218 -0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.11863873153924942 0.8262776136398315 4 0.834575891494751 0 0.14992909133434296 0 0.0 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n-0.3311045169830322 -0.06117776036262512 0.35713791847229004 -0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 4 0.6649124026298523 0 0.31008967757225037 0 0.0 0 0.0\n-0.2891288995742798 -0.053497374057769775 0.22732973098754883 -0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6697622537612915 4 0.28313446044921875 5 0.02448401227593422 0 0.0\n-0.2333071231842041 -0.14518868923187256 0.12986749410629272 -0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8546450138092041 4 0.10561978816986084 5 0.005903564393520355 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n-0.2483149766921997 -0.1659679412841797 0.2751126289367676 -0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.618188202381134 4 0.3514956831932068 0 0.0 0 0.0\n-0.24950921535491943 -0.1970342993736267 0.3751683235168457 -0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 4 0.6294618248939514 0 0.3361990749835968 2 0.005392234772443771 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.30472859740257263 0.8981705904006958 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n-0.15126758813858032 -0.20477783679962158 0.5203018188476562 -0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 4 0.6618149876594543 0 0.24621523916721344 2 0.08992583304643631 0 0.0\n-0.20940327644348145 0.18806850910186768 0.10748907923698425 -0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6928527355194092 5 0.24366505444049835 4 0.0467214398086071 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8518726229667664 0.40882110595703125 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.7813736200332642 0.48258087038993835 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n-0.1994549036026001 -0.007807791233062744 -0.07830172777175903 -0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8589512705802917 5 0.11174113303422928 0 0.0 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8839541673660278 0.6740447282791138 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.2911590337753296 0.2942936420440674 0.005826227366924286 0.20746482908725739 0.4108707010746002 0.8877529501914978 0.8978860974311829 0.6235358715057373 5 0.9641268253326416 0 0.010711431503295898 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.1905134916305542 0.2867305278778076 0.004207689315080643 -0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 5 0.7955154776573181 0 0.17753516137599945 0 0.0 0 0.0\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.2911590337753296 0.2942936420440674 0.005826227366924286 0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 5 0.9641268253326416 0 0.010711431503295898 0 0.0 0 0.0\n-0.29355669021606445 0.34976017475128174 -0.07433450222015381 -0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 5 0.9535803198814392 0 0.013973209075629711 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.3432735204696655 0.26402461528778076 -0.1277342438697815 -0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 5 0.9874638915061951 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.3247077465057373 0.1585661768913269 -0.04109635949134827 -0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 5 0.9739239811897278 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.43937599658966064 0.23811864852905273 -0.05854392051696777 -0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 5 0.9980949759483337 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.3816554546356201 0.17568820714950562 0.02271178364753723 0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 5 0.9991349577903748 0 0.0 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.34428489208221436 0.28179633617401123 0.046254053711891174 0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 5 0.9903120398521423 0 0.0 0 0.0 0 0.0\n-0.3900512456893921 0.3162165880203247 -0.022862508893013 -0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 5 0.9904302954673767 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n-0.25873374938964844 0.14417153596878052 -0.10946205258369446 -0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 5 0.742128312587738 0 0.24162344634532928 0 0.0 0 0.0\n-0.2681701183319092 0.2678663730621338 -0.16814452409744263 -0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 5 0.9366347789764404 0 0.04793867841362953 0 0.0 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n-0.07002320885658264 0.2813262939453125 -0.2664802074432373 -0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.5774428844451904 0.974776566028595 0 0.6349360942840576 1 0.3262842893600464 5 0.01936449483036995 0 0.0\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.5448826551437378 0.9278662204742432 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n-0.17369681596755981 0.36367666721343994 -0.10281378030776978 -0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 5 0.7450196743011475 0 0.160955548286438 1 0.08608341217041016 0 0.0\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n0.0 0.14566397666931152 -0.24244439601898193 0.0 -0.5614489912986755 -0.8274788856506348 0.32698339223861694 0.4710521399974823 0 0.8837517499923706 1 0.06194183975458145 5 0.0038842111825942993 3 0.003427356481552124\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n-0.1772594451904297 0.11724525690078735 -0.1825990080833435 -0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.679053783416748 5 0.28637537360191345 1 0.0027251355350017548 0 0.0\n-0.12932729721069336 0.17944878339767456 -0.22509831190109253 -0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75160151720047 5 0.16934442520141602 1 0.07229789346456528 0 0.0\n-0.17586100101470947 0.3179171085357666 -0.20532292127609253 -0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.21205389499664307 0.42999351024627686 5 0.4061179459095001 0 0.3688215911388397 1 0.22085097432136536 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.23082518577575684 0.39427757263183594 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n-0.07002320885658264 0.2813262939453125 -0.2664802074432373 -0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6349360942840576 1 0.3262842893600464 5 0.01936449483036995 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.642014741897583 0.5646453499794006 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n-0.11685270071029663 0.37915825843811035 -0.15417778491973877 -0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.406307578086853 1 0.29193368554115295 5 0.2888135612010956 0 0.0\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.6464900374412537 0.9542642831802368 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n-0.023262888193130493 0.648740291595459 -0.1271979808807373 -0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771129488945007 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.03514702618122101 0.6757450103759766 -0.23533987998962402 -0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.990458607673645 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.07448214292526245 0.6610023975372314 -0.22847318649291992 -0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883941411972046 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n-0.03514702618122101 0.6757450103759766 -0.23533987998962402 -0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.990458607673645 0 0.0 0 0.0 0 0.0\n-0.037127718329429626 0.7183771133422852 -0.2708592414855957 -0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994320273399353 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.07567718625068665 0.6810379028320312 -0.25069737434387207 -0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912397861480713 0 0.0 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n-0.019301511347293854 0.6020534038543701 -0.09771808981895447 -0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663617610931396 0 0.0 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.38086456060409546 0.9680102467536926 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n0.0 0.6520125865936279 -0.12054771184921265 0.0 0.8378856778144836 0.5458235144615173 0.38134899735450745 0.9473562836647034 1 0.9767983555793762 0 0.0 0 0.0 0 0.0\n-0.023262888193130493 0.648740291595459 -0.1271979808807373 -0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771129488945007 0 0.0 0 0.0 0 0.0\n-0.019301511347293854 0.6020534038543701 -0.09771808981895447 -0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663617610931396 0 0.0 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.9880750775337219 0.011592945083975792 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.02722427248954773 0.4976499080657959 -0.1062207818031311 -0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.927412748336792 0 0.05390864610671997 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n-0.02722427248954773 0.4976499080657959 -0.1062207818031311 -0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.927412748336792 0 0.05390864610671997 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n-0.019301503896713257 0.5543453693389893 -0.08724924921989441 -0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9545494914054871 0 0.016858559101819992 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n-0.07448214292526245 0.6610023975372314 -0.22847318649291992 -0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883941411972046 0 0.0 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.023262888193130493 0.648740291595459 -0.1271979808807373 -0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771129488945007 0 0.0 0 0.0 0 0.0\n-0.05297325551509857 0.6632869243621826 -0.17042005062103271 -0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.983020007610321 0 0.0 0 0.0 0 0.0\n-0.03217598795890808 0.5661249160766602 -0.10826873779296875 -0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586777091026306 0 0.010506756603717804 0 0.0 0 0.0\n-0.019301511347293854 0.6020534038543701 -0.09771808981895447 -0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663617610931396 0 0.0 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.059905678033828735 0.5519924163818359 -0.12115323543548584 -0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.954840362071991 0 0.015901487320661545 0 0.0 0 0.0\n-0.09060636162757874 0.555675745010376 -0.14083874225616455 -0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9576939344406128 0 0.010987870395183563 0 0.0 0 0.0\n-0.059905678033828735 0.5519924163818359 -0.12115323543548584 -0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.954840362071991 0 0.015901487320661545 0 0.0 0 0.0\n-0.04604083299636841 0.629746675491333 -0.11427515745162964 -0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731501340866089 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.15695953369140625 0.5213019847869873 -0.23152399063110352 -0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635127186775208 0 0.0 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.17542767524719238 0.5399246215820312 -0.2481163740158081 -0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722244739532471 0 0.0 0 0.0 0 0.0\n-0.15695953369140625 0.5213019847869873 -0.23152399063110352 -0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635127186775208 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.3737609088420868 0.7704716324806213 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.0 0.7441883087158203 -0.3209085464477539 0.0 0.9060335159301758 0.42320016026496887 0.37848225235939026 0.8324812054634094 1 0.9969311356544495 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.12900519371032715 0.580592155456543 -0.1809338927268982 -0.7435224652290344 0.13650929927825928 0.6545915007591248 0.4384097158908844 0.9454826712608337 1 0.9719146490097046 0 0.0 0 0.0 0 0.0\n-0.09060636162757874 0.555675745010376 -0.14083874225616455 -0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.4189552068710327 0.9702762365341187 1 0.9576939344406128 0 0.010987870395183563 0 0.0 0 0.0\n-0.0992489755153656 0.6243481636047363 -0.1760026216506958 -0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787691831588745 0 0.0 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.1536492109298706 0.6081211566925049 -0.22929680347442627 -0.7448957562446594 0.18478956818580627 0.6410412788391113 0.974439799785614 0.11739514768123627 1 0.9825789928436279 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.9921565055847168 0.12496611475944519 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.886073887348175 0.48145270347595215 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.8650132417678833 0.44598329067230225 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n-0.1668308973312378 0.6906447410583496 -0.2779656648635864 -0.5177770256996155 0.6292916536331177 0.5795159935951233 0.8731365203857422 0.4358011484146118 1 0.9922270178794861 0 0.0 0 0.0 0 0.0\n-0.1668308973312378 0.6906447410583496 -0.2779656648635864 -0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922270178794861 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n-0.1536492109298706 0.6081211566925049 -0.22929680347442627 -0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825789928436279 0 0.0 0 0.0 0 0.0\n-0.12691903114318848 0.7287836074829102 -0.3071833848953247 -0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954788684844971 0 0.0 0 0.0 0 0.0\n-0.041914358735084534 0.7521989345550537 -0.3280456066131592 -0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970929026603699 0 0.0 0 0.0 0 0.0\n-0.059245407581329346 0.759354829788208 -0.3721191883087158 -0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981564879417419 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n-0.12602776288986206 0.8367936611175537 -0.5169486999511719 0.5360575914382935 0.844019889831543 0.014984588138759136 0.4399544298648834 0.7201979756355286 1 0.9980955123901367 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.17808693647384644 0.7106759548187256 -0.3287475109100342 -0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.995280921459198 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.13420909643173218 0.7470312118530273 -0.36113905906677246 -0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972430467605591 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7452795505523682 -0.4596238136291504 -0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974808096885681 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.23513078689575195 0.6938152313232422 -0.4137706756591797 -0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962413311004639 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7452795505523682 -0.4596238136291504 -0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974808096885681 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7745609283447266 -0.48571276664733887 -0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977116584777832 0 0.0 0 0.0 0 0.0\n-0.19472473859786987 0.7452795505523682 -0.4596238136291504 -0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974808096885681 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.2505803108215332 0.7695996761322021 -0.48949456214904785 0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975656867027283 0 0.0 0 0.0 0 0.0\n-0.2947826385498047 0.9091815948486328 -0.5893387794494629 -0.82534259557724 0.5525681376457214 0.11593981832265854 0.5277626514434814 0.6673424243927002 1 0.9977961778640747 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.2460576295852661 0.8691680431365967 -0.5895872116088867 0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.9978271722793579 0 0.0 0 0.0 0 0.0\n-0.15930330753326416 0.8070216178894043 -0.5146346092224121 -0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.998006284236908 0 0.0 0 0.0 0 0.0\n-0.12602776288986206 0.8367936611175537 -0.5169486999511719 0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980955123901367 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9544497132301331 0.8589244484901428 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n-0.08664500713348389 0.49995994567871094 -0.15126699209213257 -0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9311727285385132 0 0.04860582575201988 0 0.0 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.18975555896759033 0.5741572380065918 -0.27861666679382324 -0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.9830207824707031 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.04406014084815979 0.5062999725341797 -0.1307528018951416 -0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9309578537940979 0 0.0509604811668396 0 0.0 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.03183332085609436 0.4725472927093506 -0.1536623239517212 -0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963284492492676 0 0.07777944952249527 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.9264681935310364 0.7198551297187805 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.20446312427520752 0.9136180877685547 -0.5932917594909668 0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978581666946411 0 0.0 0 0.0 0 0.0\n-0.07492586970329285 0.7546496391296387 -0.43943047523498535 0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9763534069061279 0.9473682045936584 1 0.9989303350448608 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.9763534069061279 0.9866212010383606 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n-0.17542767524719238 0.5399246215820312 -0.2481163740158081 -0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722244739532471 0 0.0 0 0.0 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n-0.2143995761871338 0.6344926357269287 -0.3323737382888794 -0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.9925930500030518 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.9277340769767761 0.18994596600532532 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.2714434862136841 0.6815202236175537 -0.37427401542663574 -0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954916834831238 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.23466861248016357 0.7335350513458252 -0.5268294811248779 -0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977140426635742 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.25437653064727783 0.8707180023193359 -0.6044466495513916 -0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978139400482178 0 0.0 0 0.0 0 0.0\n-0.2595592737197876 0.8025784492492676 -0.5593953132629395 -0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977763891220093 0 0.0 0 0.0 0 0.0\n-0.29834794998168945 0.8586046695709229 -0.544276237487793 -0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.997727632522583 0 0.0 0 0.0 0 0.0\n-0.15695953369140625 0.5213019847869873 -0.23152399063110352 -0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635127186775208 0 0.0 0 0.0 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.2595592737197876 0.8025784492492676 -0.5593953132629395 -0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977763891220093 0 0.0 0 0.0 0 0.0\n-0.23466861248016357 0.7335350513458252 -0.5268294811248779 -0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977140426635742 0 0.0 0 0.0 0 0.0\n-0.3023422956466675 0.7849597930908203 -0.4707658290863037 -0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974499344825745 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.8908731341362 0.9758754968643188 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.2860924005508423 0.18550969660282135 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n-0.02722427248954773 0.4976499080657959 -0.1062207818031311 -0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.927412748336792 0 0.05390864610671997 0 0.0 0 0.0\n-0.03183332085609436 0.4725472927093506 -0.1536623239517212 -0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963284492492676 0 0.07777944952249527 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n-0.1937013864517212 0.7858362197875977 -0.5540850162506104 0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.9979347586631775 0 0.0 0 0.0 0 0.0\n-0.23466861248016357 0.7335350513458252 -0.5268294811248779 -0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977140426635742 0 0.0 0 0.0 0 0.0\n-0.2595592737197876 0.8025784492492676 -0.5593953132629395 -0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977763891220093 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.23466861248016357 0.7335350513458252 -0.5268294811248779 -0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977140426635742 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.9133719205856323 0.8904370665550232 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.7046983242034912 -0.4855692386627197 0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991375803947449 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n-0.2332911491394043 0.6557881832122803 -0.45631957054138184 -0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963852763175964 0 0.0 0 0.0 0 0.0\n-0.1876540184020996 0.6596939563751221 -0.5185306072235107 -0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977445602416992 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.08317875862121582 0.5977051258087158 -0.5351896286010742 -0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983810782432556 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n-0.215201735496521 0.579124927520752 -0.41087865829467773 -0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931784868240356 0 0.0 0 0.0 0 0.0\n-0.17545980215072632 0.5656907558441162 -0.5075685977935791 -0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963235855102539 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.07982555031776428 0.4681966304779053 -0.49700307846069336 -0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.993816077709198 0 0.0 0 0.0 0 0.0\n-0.07171991467475891 0.41830766201019287 -0.40954136848449707 -0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810560345649719 0 0.0 0 0.0 0 0.0\n-0.18907427787780762 0.5321424007415771 -0.3633767366409302 -0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870247840881348 0 0.0 0 0.0 0 0.0\n-0.14730453491210938 0.4809708595275879 -0.4494520425796509 -0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907407164573669 0 0.0 0 0.0 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n-0.1636601686477661 0.5023448467254639 -0.3202894926071167 -0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.9755609631538391 0 0.0 0 0.0 0 0.0\n-0.07230684161186218 0.39586949348449707 -0.33485913276672363 -0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468030333518982 0 0.039024900645017624 0 0.0 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.13163155317306519 0.4475557804107666 -0.36023998260498047 -0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729493260383606 0 0.0 0 0.0 0 0.0\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.1420363187789917 0.49902892112731934 -0.265682578086853 -0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9553471803665161 0 0.009066302329301834 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n-0.03183332085609436 0.4725472927093506 -0.1536623239517212 -0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963284492492676 0 0.07777944952249527 0 0.0 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n-0.03183332085609436 0.4725472927093506 -0.1536623239517212 -0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963284492492676 0 0.07777944952249527 0 0.0 0 0.0\n-0.04406014084815979 0.47633934020996094 -0.1643797755241394 -0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8977535963058472 0 0.07620814442634583 0 0.0 0 0.0\n-0.07519534230232239 0.4880945682525635 -0.17792588472366333 -0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9169134497642517 0 0.05876200273633003 0 0.0 0 0.0\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n-0.024349510669708252 0.44997596740722656 -0.18417012691497803 -0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8513779044151306 0 0.11267079412937164 0 0.0 0 0.0\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.8788778185844421 0.04964836686849594 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n-0.04134397208690643 0.4539233446121216 -0.2002546787261963 -0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.6188840866088867 0.5845966339111328 1 0.8606652617454529 0 0.10205099731683731 5 0.0029370635747909546 0 0.0\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6050207018852234 0.5939637422561646 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.09905996918678284 0.40596628189086914 -0.19437533617019653 -0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6564067006111145 0 0.20795942842960358 5 0.12716107070446014 0 0.0\n-0.07328110933303833 0.4430720806121826 -0.23094940185546875 -0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6518501043319702 0.9787291884422302 1 0.8747076988220215 0 0.0811844989657402 5 0.027842912822961807 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.6179927587509155 0.9725486040115356 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.12179547548294067 0.3854290246963501 -0.23301446437835693 -0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7106906175613403 0 0.1698828488588333 5 0.11525022983551025 0 0.0\n-0.11474817991256714 0.41678154468536377 -0.2910900115966797 -0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.91008460521698 0 0.05703506991267204 5 0.012244939804077148 0 0.0\n-0.07230684161186218 0.39586949348449707 -0.33485913276672363 -0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468030333518982 0 0.039024900645017624 0 0.0 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n-0.07341891527175903 0.3139185905456543 -0.28698432445526123 -0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878011226654053 0 0.2799515724182129 5 0.008950736373662949 0 0.0\n-0.07230684161186218 0.39586949348449707 -0.33485913276672363 -0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468030333518982 0 0.039024900645017624 0 0.0 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.5088207721710205 0.12029749155044556 0.1170196533203125 -0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.04735330492258072 0.6357671618461609 5 1.0001115798950195 0 0.0 0 0.0 0 0.0\n-0.5589442253112793 0.16177308559417725 0.07854250073432922 -0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.02092316746711731 0.6068553328514099 5 1.000016450881958 0 0.0 0 0.0 0 0.0\n-0.3984619379043579 0.26093626022338867 0.08564722537994385 0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 5 0.9975098967552185 0 0.0 0 0.0 0 0.0\n-0.4554738998413086 0.2947545051574707 0.029965192079544067 -0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 5 0.9976549744606018 0 0.0 0 0.0 0 0.0\n-0.5096194744110107 0.2505838871002197 0.11315262317657471 -0.5906857252120972 0.6383556723594666 0.4935148060321808 0.38072505593299866 0.38276207447052 5 0.9994231462478638 0 0.0 0 0.0 0 0.0\n-0.5047986507415771 0.20594364404678345 -0.004644919186830521 -0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 5 0.9997888803482056 0 0.0 0 0.0 0 0.0\n-0.5589442253112793 0.16177308559417725 0.07854250073432922 -0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.5921546220779419 0.6514858603477478 5 1.000016450881958 0 0.0 0 0.0 0 0.0\n-0.5096194744110107 0.2505838871002197 0.11315262317657471 -0.5906857252120972 0.6383556723594666 0.4935148060321808 0.6430558562278748 0.6733530759811401 5 0.9994231462478638 0 0.0 0 0.0 0 0.0\n-0.47704315185546875 0.22420382499694824 0.13703078031539917 0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 5 0.9994118809700012 0 0.0 0 0.0 0 0.0\n-0.5088207721710205 0.12029749155044556 0.1170196533203125 -0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.9588103890419006 0.5548603534698486 5 1.0001115798950195 0 0.0 0 0.0 0 0.0\n-0.43023955821990967 0.157029926776886 0.06563612818717957 0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 5 0.9999759197235107 0 0.0 0 0.0 0 0.0\n-0.47704315185546875 0.22420382499694824 0.13703078031539917 0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 5 0.9994118809700012 0 0.0 0 0.0 0 0.0\n-0.5096194744110107 0.2505838871002197 0.11315262317657471 -0.5906857252120972 0.6383556723594666 0.4935148060321808 0.9143127202987671 0.525738000869751 5 0.9994231462478638 0 0.0 0 0.0 0 0.0\n-0.5589442253112793 0.16177308559417725 0.07854250073432922 -0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.9657022356987 0.5219221115112305 5 1.000016450881958 0 0.0 0 0.0 0 0.0\n-0.07448214292526245 0.6610023975372314 -0.22847318649291992 -0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883941411972046 0 0.0 0 0.0 0 0.0\n-0.07567718625068665 0.6810379028320312 -0.25069737434387207 -0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912397861480713 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.07567718625068665 0.6810379028320312 -0.25069737434387207 -0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912397861480713 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.12389302253723145 0.6452987194061279 -0.2239953875541687 -0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863486289978027 0 0.0 0 0.0 0 0.0\n-0.11437469720840454 0.7034616470336914 -0.2846221923828125 -0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.9938564300537109 0 0.0 0 0.0 0 0.0\n-0.1668308973312378 0.6906447410583496 -0.2779656648635864 -0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922270178794861 0 0.0 0 0.0 0 0.0\n-0.16969645023345947 0.6551282405853271 -0.246321439743042 -0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888336658477783 0 0.0 0 0.0 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n0.20955008268356323 0.1521109938621521 0.19754719734191895 0.5760979056358337 0.7668691277503967 0.28281503915786743 0.5366934537887573 0.3172552287578583 0 0.7611507177352905 2 0.11970722675323486 3 0.10152817517518997 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.17303664982318878 0.6143929958343506 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.20955008268356323 0.1521109938621521 0.19754719734191895 0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7611507177352905 2 0.11970722675323486 3 0.10152817517518997 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.0 -0.1520075798034668 0.035814911127090454 0.0 -0.8850062489509583 -0.46555987000465393 0.342818021774292 0.6868105530738831 0 0.9604138135910034 0 0.0 0 0.0 0 0.0\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.2218678593635559 -0.11717742681503296 0.0475330650806427 0.5801263451576233 -0.6734519600868225 -0.45811334252357483 0.22921013832092285 0.6840476989746094 0 0.8946786522865295 2 0.05245160311460495 3 0.03519182279706001 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.0 -0.17877912521362305 0.11906552314758301 0.0 -0.9352397322654724 -0.35392314195632935 0.3381052017211914 0.7297746539115906 0 0.9514539241790771 0 0.0 0 0.0 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.16594837605953217 0.6863267421722412 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.2891288995742798 -0.053497374057769775 0.22732973098754883 0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6714892983436584 2 0.28184226155281067 3 0.023302968591451645 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.0 0.17887204885482788 0.20615297555923462 0.0 0.9208654761314392 0.3898434340953827 0.6407602429389954 0.32359591126441956 0 0.9011874198913574 4 0.008605018258094788 2 0.007983766496181488 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.5354735851287842 0.2732369899749756 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.29087793827056885 0.005670234560966492 0.15487772226333618 0.9979857802391052 0.062990203499794 -0.003906369209289551 0.7238370776176453 0.4040071964263916 0 0.7717193365097046 2 0.13732953369617462 3 0.08217988163232803 0 0.0\n0.20955008268356323 0.1521109938621521 0.19754719734191895 0.5760979056358337 0.7668691277503967 0.28281503915786743 0.8016543388366699 0.36130064725875854 0 0.7611507177352905 2 0.11970722675323486 3 0.10152817517518997 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.0 0.144250750541687 0.286879301071167 0.0 0.9332865476608276 0.35908079147338867 0.6393837928771973 0.278120756149292 0 0.8431402444839478 4 0.0683114305138588 2 0.06750531494617462 0 0.0\n0.0 0.10837686061859131 0.398435115814209 0.0 0.9131138324737549 0.40763571858406067 0.6365572810173035 0.21912050247192383 0 0.6615631580352783 4 0.16478803753852844 2 0.16256949305534363 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.506905734539032 0.21915198862552643 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.23059618473052979 0.11400431394577026 0.5390143394470215 -0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 2 0.9343189597129822 0 0.054628096520900726 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.23059618473052979 0.11400431394577026 0.5390143394470215 -0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.5118018388748169 0.1595311015844345 2 0.9343189597129822 0 0.054628096520900726 0 0.0 0 0.0\n0.15183353424072266 0.08250489830970764 0.41399872303009033 -0.14777062833309174 0.9758903980255127 0.16055788099765778 0.5605605840682983 0.20316660404205322 2 0.5625039339065552 0 0.3559562563896179 4 0.0675918385386467 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.3028668165206909 0.03667032718658447 0.7283434867858887 0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 2 1.0069687366485596 0 0.0 0 0.0 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.3469996452331543 0.10634586215019226 0.5646698474884033 0.7864314913749695 0.5786614418029785 -0.21585741639137268 0.7268060445785522 0.19475699961185455 2 0.9669324159622192 0 0.008164938539266586 0 0.0 0 0.0\n0.23059618473052979 0.11400431394577026 0.5390143394470215 -0.18820764124393463 0.9757378101348877 -0.1116061881184578 0.7782641053199768 0.22510869801044464 2 0.9343189597129822 0 0.054628096520900726 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.3028668165206909 0.03667032718658447 0.7283434867858887 0.4055604636669159 -0.3405865728855133 0.8482314348220825 0.7277485728263855 0.7524433732032776 2 1.0069687366485596 0 0.0 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.9195019006729126 0.4097464084625244 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.3397330045700073 0.13471728563308716 0.614459753036499 0.7675099968910217 0.5092929005622864 -0.3892636001110077 0.7379385232925415 0.16754750907421112 2 0.9887034893035889 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.7123997807502747 0.16860434412956238 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.8876997828483582 0.39105933904647827 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.945722758769989 0.37810018658638 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.17843002080917358 0.734142541885376 0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7528762221336365 0.10685840249061584 2 0.9995585083961487 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.7268431782722473 0.1400061845779419 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.23059618473052979 0.1385723352432251 0.6024715900421143 -0.37034210562705994 0.7505111694335938 -0.5472884178161621 0.7850754261016846 0.19187207520008087 2 0.9882969856262207 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.34602928161621094 0.1090165376663208 0.6943802833557129 0.9147617816925049 -0.062288276851177216 0.39915159344673157 0.698062002658844 0.7733765840530396 2 0.9974915981292725 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.17843002080917358 0.734142541885376 0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 2 0.9995585083961487 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.7754655480384827 0.8056461215019226 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.2703179121017456 0.24386632442474365 0.7686514854431152 -0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 2 0.9999029636383057 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8041354417800903 0.15376198291778564 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.26910340785980225 0.17764323949813843 0.7524588108062744 -0.1340678185224533 -0.20361949503421783 0.9698172211647034 0.7397990822792053 0.818606436252594 2 0.9994724988937378 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.17843002080917358 0.734142541885376 0.8033692240715027 -0.14041566848754883 0.5786614418029785 0.7056828141212463 0.8151172995567322 2 0.9995585083961487 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.2133294939994812 0.641486644744873 -0.3396099805831909 0.47352519631385803 -0.8126468658447266 0.8830041289329529 0.3463095426559448 2 0.9991787672042847 0 0.0 0 0.0 0 0.0\n0.18260103464126587 0.19482123851776123 0.6990411281585693 -0.9710379242897034 0.20737327635288239 0.1185949295759201 0.9239189028739929 0.33825811743736267 2 0.9983318448066711 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.9167553186416626 0.2833555042743683 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.20788490772247314 0.6544501781463623 0.7152317762374878 0.3708914518356323 -0.5923337340354919 0.7646296620368958 0.13306954503059387 2 0.9986105561256409 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.773402750492096 0.07818431407213211 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.20780110359191895 0.12533944845199585 0.2807978391647339 0.5116122961044312 0.844325065612793 0.1590929925441742 0.793588399887085 0.3341623842716217 0 0.6737872362136841 2 0.25705254077911377 3 0.04048972204327583 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.3468945026397705 0.06105288863182068 0.6569516658782959 0.9636219143867493 -0.16562394797801971 0.20972320437431335 0.6956770420074463 0.7410318851470947 2 0.9881370067596436 0 0.0 0 0.0 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6707702279090881 0.29945147037506104 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.6850048899650574 0.3302666246891022 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.25187551975250244 0.12372738122940063 0.40594351291656494 0.32880643010139465 0.9301126003265381 -0.16360972821712494 0.7734473347663879 0.27408310770988464 2 0.7046008110046387 0 0.2593858540058136 0 0.0 0 0.0\n0.3403736352920532 0.3993680477142334 0.7714123725891113 0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 2 0.9999896883964539 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.8513078689575195 0.07979519665241241 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.22349166870117188 0.37734532356262207 0.784529447555542 -0.7459639310836792 0.3484298288822174 0.5675222277641296 0.9024268984794617 0.2320421040058136 2 0.9999775290489197 0 0.0 0 0.0 0 0.0\n0.26705384254455566 0.41719162464141846 0.7832803726196289 -0.14835047721862793 0.9023407697677612 0.4046449065208435 0.8807538151741028 0.21484346687793732 2 1.0000007152557373 0 0.0 0 0.0 0 0.0\n0.237876296043396 0.37244415283203125 0.7143435478210449 -0.4520706832408905 0.5877559781074524 -0.6709189414978027 0.873521625995636 0.25355786085128784 2 0.9999978542327881 0 0.0 0 0.0 0 0.0\n0.3276984691619873 0.2997403144836426 0.701850414276123 0.7264320850372314 0.28260138630867004 -0.6263924241065979 0.7918135523796082 0.08813752979040146 2 0.9998425245285034 0 0.0 0 0.0 0 0.0\n0.3403736352920532 0.3993680477142334 0.7714123725891113 0.6911221742630005 0.7172459959983826 0.08874782919883728 0.8158060908317566 0.02945329248905182 2 0.9999896883964539 0 0.0 0 0.0 0 0.0\n0.34603846073150635 0.34535515308380127 0.7890980243682861 0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.7970283031463623 0.03577974811196327 2 0.9999740719795227 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.2703179121017456 0.24386632442474365 0.7686514854431152 -0.15445417165756226 -0.2859279215335846 0.9457075595855713 0.7375360131263733 0.851832926273346 2 0.9999029636383057 0 0.0 0 0.0 0 0.0\n0.3328806161880493 0.24741899967193604 0.7576038837432861 0.7921384572982788 -0.2150944471359253 0.5711538791656494 0.7047654390335083 0.8518280386924744 2 0.999882161617279 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.22349166870117188 0.37734532356262207 0.784529447555542 -0.7459639310836792 0.3484298288822174 0.5675222277641296 0.755506694316864 0.9117282629013062 2 0.9999775290489197 0 0.0 0 0.0 0 0.0\n0.20932167768478394 0.2829176187515259 0.7541635036468506 -0.9013641476631165 -0.05499435216188431 0.4294869899749756 0.7640476226806641 0.8615762591362 2 0.9998661279678345 0 0.0 0 0.0 0 0.0\n0.3403736352920532 0.3993680477142334 0.7714123725891113 0.6911221742630005 0.7172459959983826 0.08874782919883728 0.6943598985671997 0.9206492900848389 2 0.9999896883964539 0 0.0 0 0.0 0 0.0\n0.26705384254455566 0.41719162464141846 0.7832803726196289 -0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 2 1.0000007152557373 0 0.0 0 0.0 0 0.0\n0.34603846073150635 0.34535515308380127 0.7890980243682861 0.7636646628379822 0.0001831110566854477 0.6455580592155457 0.6966750025749207 0.9037923216819763 2 0.9999740719795227 0 0.0 0 0.0 0 0.0\n0.26705384254455566 0.41719162464141846 0.7832803726196289 -0.14835047721862793 0.9023407697677612 0.4046449065208435 0.7314229607582092 0.9295790791511536 2 1.0000007152557373 0 0.0 0 0.0 0 0.0\n0.22349166870117188 0.37734532356262207 0.784529447555542 -0.7459639310836792 0.3484298288822174 0.5675222277641296 0.755506694316864 0.9117282629013062 2 0.9999775290489197 0 0.0 0 0.0 0 0.0\n0.2844879627227783 0.30941593647003174 0.7897307872772217 -0.059114351868629456 -0.191625714302063 0.9796746969223022 0.7294446229934692 0.8867914080619812 2 0.9999793171882629 0 0.0 0 0.0 0 0.0\n0.2691516876220703 0.09592822194099426 0.7350804805755615 0.007080294191837311 -0.13916440308094025 0.9902340769767761 0.7421389222145081 0.7785028219223022 2 0.9978255033493042 0 0.0 0 0.0 0 0.0\n0.1780099868774414 0.10716038942337036 0.7001523971557617 -0.8770104050636292 0.06659138947725296 0.4757835566997528 0.7827162146568298 0.7688784003257751 2 0.9883637428283691 0 0.0 0 0.0 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.779891848564148 0.7320565581321716 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.5895189642906189 0.03625130653381348 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.19527888298034668 0.014238350093364716 0.7056961059570312 -0.3719595968723297 -0.17993712425231934 0.9106112718582153 0.5291039943695068 0.056795794516801834 2 0.9548998475074768 0 0.002611551433801651 0 0.0 0 0.0\n0.16343510150909424 0.09151619672775269 0.6089448928833008 -0.6315500140190125 0.747611939907074 0.2053590565919876 0.5441842675209045 0.12299907207489014 2 0.9313681125640869 0 0.039589401334524155 0 0.0 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.09442317485809326 -0.08681789040565491 0.6793560981750488 -0.3274635970592499 -0.27362895011901855 0.904354989528656 0.8325487375259399 0.6775317192077637 2 0.8125033378601074 0 0.11024869978427887 4 0.07657250761985779 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.7911576628684998 0.5780675411224365 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.6715637445449829 0.6103150844573975 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.30187129974365234 -0.08480963110923767 0.619861364364624 0.5957213044166565 -0.6205328702926636 0.5099032521247864 0.7216191291809082 0.6659771203994751 2 0.9719600081443787 0 0.0 0 0.0 0 0.0\n0.2433398962020874 -0.18356812000274658 0.4825398921966553 0.504165768623352 -0.8324533700942993 0.2297738641500473 0.7394121289253235 0.5778254270553589 2 0.7614166140556335 0 0.20125827193260193 4 0.018037568777799606 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.3541121482849121 -0.07419586181640625 0.4291270971298218 0.9666127562522888 -0.2230903059244156 -0.125919371843338 0.11863873153924942 0.8262776136398315 2 0.8337088823318481 0 0.15088647603988647 0 0.0 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.2891288995742798 -0.053497374057769775 0.22732973098754883 0.9860530495643616 -0.06204412877559662 -0.15433210134506226 0.16813310980796814 0.7361131310462952 0 0.6714892983436584 2 0.28184226155281067 3 0.023302968591451645 0 0.0\n0.3311045169830322 -0.06117776036262512 0.35713791847229004 0.9543748497962952 -0.013000885024666786 -0.29825738072395325 0.13535627722740173 0.7921632528305054 2 0.662501871585846 0 0.31252527236938477 0 0.0 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.2333071231842041 -0.14518868923187256 0.12986749410629272 0.6191290020942688 -0.7353739738464355 -0.27536851167678833 0.21926060318946838 0.7273061871528625 0 0.8559712767601013 2 0.10463123768568039 3 0.005023133009672165 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.0 -0.22177386283874512 0.21981686353683472 0.0 -0.982146680355072 -0.18799401819705963 0.33400920033454895 0.7854426503181458 0 0.9121978878974915 4 0.0331408865749836 2 0.0324675627052784 0 0.0\n0.2483149766921997 -0.1659679412841797 0.2751126289367676 0.6037476658821106 -0.766502857208252 -0.21887874603271484 0.1998605728149414 0.7935872673988342 0 0.621268630027771 2 0.3484863340854645 0 0.0 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n0.0 -0.2221187949180603 0.49811649322509766 0.0 -0.9373455047607422 0.3483687937259674 0.30472859740257263 0.8981705904006958 0 0.5169974565505981 4 0.24156785011291504 2 0.23979748785495758 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.0 -0.2242426872253418 0.35177063941955566 0.0 -0.999267578125 -0.03799554333090782 0.3204757869243622 0.8396906852722168 0 0.7614060640335083 4 0.11837860941886902 2 0.11738711595535278 0 0.0\n0.24950921535491943 -0.1970342993736267 0.3751683235168457 0.49635303020477295 -0.861873209476471 -0.10370189696550369 0.1934516727924347 0.8448641896247864 2 0.6230677962303162 0 0.34260785579681396 4 0.005191043019294739 0 0.0\n0.15126758813858032 -0.20477783679962158 0.5203018188476562 0.16193121671676636 -0.9197363257408142 0.3574938178062439 0.22674739360809326 0.9042510390281677 2 0.6742236614227295 0 0.24004419147968292 4 0.08352506905794144 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.8133400082588196 0.3891247510910034 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.27896857261657715 0.07729777693748474 0.03905799984931946 0.9912412166595459 0.0948820486664772 -0.09158604592084885 0.7514224052429199 0.4350348114967346 0 0.7136451601982117 3 0.23007641732692719 2 0.047092560678720474 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.7813736200332642 0.48258087038993835 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.1994549036026001 -0.007807791233062744 -0.07830172777175903 0.5622425079345703 -0.5634021759033203 -0.6053346395492554 0.23669739067554474 0.5947647094726562 0 0.8606905937194824 3 0.10992924124002457 0 0.0 0 0.0\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.0 0.219041109085083 0.11931818723678589 0.0 0.8301644921302795 0.557481586933136 0.642014741897583 0.37345194816589355 0 0.8959391713142395 5 0.029438931494951248 3 0.028147835284471512 0 0.0\n0.20940327644348145 0.18806850910186768 0.10748907923698425 0.6282540559768677 0.6898098587989807 0.35978269577026367 0.5385096073150635 0.3671324849128723 0 0.6962488293647766 3 0.23988555371761322 2 0.04625933989882469 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.0 -0.05573540925979614 -0.1027672290802002 0.0 -0.7233496904373169 -0.6904507875442505 0.3428180515766144 0.5973702669143677 0 0.949096143245697 0 0.0 0 0.0 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.8839541673660278 0.6740447282791138 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.9841787815093994 0.6740447282791138 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.2911590337753296 0.2942936420440674 0.005826227366924286 -0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 3 0.961869478225708 0 0.014442968182265759 0 0.0 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.49234965443611145 0.4958604872226715 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.29355669021606445 0.34976017475128174 -0.07433450222015381 0.23679311573505402 0.9682607650756836 -0.0796533077955246 0.6434169411659241 0.8292502164840698 3 0.9519422650337219 0 0.016063708811998367 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.5837397575378418 0.8574127554893494 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.2911590337753296 0.2942936420440674 0.005826227366924286 -0.20746482908725739 0.4108707010746002 0.8877529501914978 0.4938306510448456 0.4439513385295868 3 0.961869478225708 0 0.014442968182265759 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.44328606128692627 0.4625326693058014 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.3900512456893921 0.3162165880203247 -0.022862508893013 0.34510329365730286 0.9354228377342224 -0.07635731250047684 0.6370754837989807 0.7687724828720093 3 0.9903740882873535 0 0.0 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.5876299142837524 0.8122449517250061 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.9672834277153015 0.6379106640815735 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.8977068662643433 0.5999657511711121 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.3247077465057373 0.1585661768913269 -0.04109635949134827 0.06991790235042572 -0.9837946891784668 0.16495254635810852 0.14707791805267334 0.5547357797622681 3 0.9705332517623901 0 0.00480993464589119 0 0.0 0 0.0\n0.3432735204696655 0.26402461528778076 -0.1277342438697815 0.573839545249939 0.09149449318647385 -0.8138371109962463 0.13124819099903107 0.48351210355758667 3 0.9892646074295044 0 0.0 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.6390498280525208 0.7233343124389648 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.5900217294692993 0.7481352686882019 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.9494260549545288 0.6056154370307922 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.9010043740272522 0.57774817943573 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.3816554546356201 0.17568820714950562 0.02271178364753723 -0.3256935477256775 -0.9139378070831299 0.24204230308532715 0.11026795953512192 0.5757925510406494 3 0.998649537563324 0 0.0 0 0.0 0 0.0\n0.43937599658966064 0.23811864852905273 -0.05854392051696777 0.6367992162704468 -0.09231849014759064 -0.765465259552002 0.08150046318769455 0.522465169429779 3 0.9983529448509216 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.34428489208221436 0.28179633617401123 0.046254053711891174 -0.47929319739341736 0.3894161880016327 0.7865230441093445 0.46575069427490234 0.4223727583885193 3 0.9897324442863464 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.4554738998413086 0.2947545051574707 0.029965192079544067 0.4450819492340088 0.8953825235366821 0.013611255213618279 0.4090229272842407 0.43271535634994507 3 0.9976978898048401 0 0.0 0 0.0 0 0.0\n0.2681701183319092 0.2678663730621338 -0.16814452409744263 0.5125888586044312 0.191473126411438 -0.8369701504707336 0.17117449641227722 0.4642834961414337 3 0.9406881332397461 0 0.04160959646105766 0 0.0 0 0.0\n0.25873374938964844 0.14417153596878052 -0.10946205258369446 0.7939695119857788 -0.46391186118125916 -0.39286476373672485 0.18831117451190948 0.5307038426399231 3 0.7289473414421082 0 0.25397777557373047 0 0.0 0 0.0\n0.1772594451904297 0.11724525690078735 -0.1825990080833435 0.44734030961990356 -0.4271370470523834 -0.7857600450515747 0.23943009972572327 0.508765459060669 0 0.6831516027450562 3 0.28197067975997925 1 0.002889048308134079 0 0.0\n0.0 0.317891001701355 0.011525623500347137 0.0 0.8030030131340027 0.5959654450416565 0.6397891640663147 0.4510643780231476 0 0.7890903353691101 5 0.08665546774864197 3 0.08514407277107239 1 0.019098643213510513\n0.1905134916305542 0.2867305278778076 0.004207689315080643 0.2593463063240051 0.6273384690284729 0.7342753410339355 0.545678436756134 0.4428918659687042 3 0.7835674285888672 0 0.18744781613349915 0 0.0 0 0.0\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.5448826551437378 0.9278662204742432 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.07002320885658264 0.2813262939453125 -0.2664802074432373 0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.5774428844451904 0.974776566028595 0 0.6353183388710022 1 0.3263947069644928 3 0.018231775611639023 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.6007186770439148 0.9138137102127075 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.6518501043319702 0.8928941488265991 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.0 0.3707171678543091 -0.08462855219841003 0.0 0.904324471950531 0.4267708361148834 0.6405338048934937 0.5089500546455383 0 0.7102694511413574 1 0.14585299789905548 5 0.07208946347236633 3 0.07045222818851471\n0.17369681596755981 0.36367666721343994 -0.10281378030776978 0.2631000578403473 0.9605090618133545 0.09018219262361526 0.5536576509475708 0.5132588744163513 3 0.7268608808517456 0 0.17259469628334045 1 0.09181983768939972 0 0.0\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.583946704864502 0.540475606918335 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.0 0.14566397666931152 -0.24244439601898193 0.0 -0.5614489912986755 -0.8274788856506348 0.32698339223861694 0.4710521399974823 0 0.8837517499923706 1 0.06194183975458145 5 0.0038842111825942993 3 0.003427356481552124\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n0.0 0.09937161207199097 -0.21314752101898193 0.0 -0.5446943640708923 -0.8385875821113586 0.3309190571308136 0.4989504814147949 0 0.9125122427940369 5 0.011346809566020966 3 0.010605178773403168 1 0.0003351755440235138\n0.0 0.14566397666931152 -0.24244439601898193 0.0 -0.5614489912986755 -0.8274788856506348 0.32698339223861694 0.4710521399974823 0 0.8837517499923706 1 0.06194183975458145 5 0.0038842111825942993 3 0.003427356481552124\n0.12932729721069336 0.17944878339767456 -0.22509831190109253 0.36967071890830994 -0.269569993019104 -0.8891872763633728 0.25760719180107117 0.4690239429473877 0 0.75236576795578 3 0.16852052509784698 1 0.07225456833839417 0 0.0\n0.17586100101470947 0.3179171085357666 -0.20532292127609253 0.6381115317344666 0.3986937999725342 -0.6586504578590393 0.21205389499664307 0.42999351024627686 3 0.4058360159397125 0 0.3687710165977478 1 0.22105538845062256 0 0.0\n0.07002320885658264 0.2813262939453125 -0.2664802074432373 0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6353183388710022 1 0.3263947069644928 3 0.018231775611639023 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.07002320885658264 0.2813262939453125 -0.2664802074432373 0.5305337905883789 -0.30652791261672974 -0.790276825428009 0.27513593435287476 0.4157503545284271 0 0.6353183388710022 1 0.3263947069644928 3 0.018231775611639023 0 0.0\n0.0 0.2078162431716919 -0.2881510257720947 0.0 -0.4107486307621002 -0.9117404818534851 0.3223710358142853 0.43101730942726135 0 0.7689260244369507 1 0.2003297209739685 0 0.0 0 0.0\n0.0 0.29299962520599365 -0.3292173147201538 0.0 -0.5545213222503662 -0.8321481943130493 0.3137752413749695 0.3848779797554016 1 0.7812550663948059 0 0.20431587100028992 0 0.0 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.642014741897583 0.5646453499794006 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n0.0 0.398445725440979 -0.14425861835479736 0.0 0.9055452346801758 0.42420727014541626 0.6413841247558594 0.5432328581809998 0 0.5077889561653137 1 0.39139166474342346 5 0.050735753029584885 3 0.04906380549073219\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.6464900374412537 0.9542642831802368 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.11685270071029663 0.37915825843811035 -0.15417778491973877 0.40092167258262634 0.9032562971115112 0.15277566015720367 0.6471365094184875 0.9334772229194641 0 0.41070666909217834 1 0.2940956950187683 3 0.28172755241394043 0 0.0\n0.023262888193130493 0.648740291595459 -0.1271979808807373 0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771119952201843 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.0 0.6696534156799316 -0.16029703617095947 0.0 0.940275251865387 0.3403424024581909 0.3807303011417389 0.9247735738754272 1 0.9826752543449402 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.03514702618122101 0.6757450103759766 -0.23533987998962402 0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.9904599189758301 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.0 0.6859500408172607 -0.227411150932312 0.0 0.8990447521209717 0.4377880096435547 0.37864139676094055 0.8909733295440674 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.03514702618122101 0.6757450103759766 -0.23533987998962402 0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.9904599189758301 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.03514702618122101 0.6757450103759766 -0.23533987998962402 0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.9904599189758301 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.07448214292526245 0.6610023975372314 -0.22847318649291992 0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883980751037598 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.03514702618122101 0.6757450103759766 -0.23533987998962402 0.3003937005996704 0.825434148311615 0.4778893291950226 0.39532920718193054 0.891121506690979 1 0.9904599189758301 0 0.0 0 0.0 0 0.0\n0.07567718625068665 0.6810379028320312 -0.25069737434387207 0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912428259849548 0 0.0 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.38086456060409546 0.9680102467536926 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.023262888193130493 0.648740291595459 -0.1271979808807373 0.27558213472366333 0.8101443648338318 0.5173802971839905 0.39259374141693115 0.9457398056983948 1 0.9771119952201843 0 0.0 0 0.0 0 0.0\n0.0 0.6267490386962891 -0.09107580780982971 0.0 0.4541764557361603 0.8908963203430176 0.9880750775337219 0.011592945083975792 1 0.9708038568496704 0 0.0 0 0.0 0 0.0\n0.0 0.5866754055023193 -0.08073744177818298 0.0 0.20923489332199097 0.9778435826301575 0.9745243191719055 0.012592869810760021 1 0.9624937176704407 0 0.004993952810764313 0 0.0 0 0.0\n0.019301511347293854 0.6020534038543701 -0.09771808981895447 0.5544602870941162 0.06466872245073318 0.8296762108802795 0.9800795912742615 0.024327803403139114 1 0.9663557410240173 0 0.0 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n0.02722427248954773 0.4976499080657959 -0.1062207818031311 0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.9274529814720154 0 0.053911928087472916 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.02722427248954773 0.4976499080657959 -0.1062207818031311 0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.9274529814720154 0 0.053911928087472916 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.019301503896713257 0.5543453693389893 -0.08724924921989441 0.7199926972389221 0.03091524913907051 0.6932584643363953 0.963473379611969 0.025931738317012787 1 0.9544193148612976 0 0.017048027366399765 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.07448214292526245 0.6610023975372314 -0.22847318649291992 0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883980751037598 0 0.0 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.4033519923686981 0.9574975967407227 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.05297325551509857 0.6632869243621826 -0.17042005062103271 0.42271187901496887 0.8485671281814575 0.3181249499320984 0.40667101740837097 0.9228817820549011 1 0.9830220341682434 0 0.0 0 0.0 0 0.0\n0.03217598795890808 0.5661249160766602 -0.10826873779296875 0.6189153790473938 -0.002288888208568096 0.7854243516921997 0.9652963876724243 0.03581248223781586 1 0.9586337804794312 0 0.010607149451971054 0 0.0 0 0.0\n0.059905678033828735 0.5519924163818359 -0.12115323543548584 0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.9548473358154297 0 0.015978146344423294 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.059905678033828735 0.5519924163818359 -0.12115323543548584 0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.9548473358154297 0 0.015978146344423294 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.04604083299636841 0.629746675491333 -0.11427515745162964 0.5255287289619446 0.4360484480857849 0.730491042137146 0.9921565055847168 0.03848811611533165 1 0.9731448888778687 0 0.0 0 0.0 0 0.0\n0.059905678033828735 0.5519924163818359 -0.12115323543548584 0.43357646465301514 -0.15253150463104248 0.8880886435508728 0.9615859389305115 0.05308860167860985 1 0.9548473358154297 0 0.015978146344423294 0 0.0 0 0.0\n0.09060636162757874 0.555675745010376 -0.14083874225616455 0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9577164649963379 0 0.01108131930232048 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.09060636162757874 0.555675745010376 -0.14083874225616455 0.6668904423713684 -0.021729178726673126 0.7448042035102844 0.9639025330543518 0.07183090597391129 1 0.9577164649963379 0 0.01108131930232048 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.17542767524719238 0.5399246215820312 -0.2481163740158081 0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722552299499512 0 0.0 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.9710297584533691 0.09706727415323257 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n0.0 0.7663571834564209 -0.4498615264892578 0.0 0.9117709994316101 -0.41062653064727783 0.3737609088420868 0.7704716324806213 1 0.9993343353271484 0 0.0 0 0.0 0 0.0\n0.0 0.7655167579650879 -0.3776092529296875 0.0 0.9911190867424011 0.13275551795959473 0.37730279564857483 0.8014988899230957 1 0.9984956979751587 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.0 0.7286481857299805 -0.29208290576934814 0.0 0.8584246635437012 0.5129246115684509 0.3787182867527008 0.8497394323348999 1 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.037127718329429626 0.7183771133422852 -0.2708592414855957 0.12225715070962906 0.7812433242797852 0.6121097207069397 0.3978635370731354 0.8623329997062683 1 0.994321346282959 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.12900519371032715 0.580592155456543 -0.1809338927268982 0.7435224652290344 0.13650929927825928 0.6545915007591248 0.4384097158908844 0.9454826712608337 1 0.9719353318214417 0 0.0 0 0.0 0 0.0\n0.1536492109298706 0.6081211566925049 -0.22929680347442627 0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825928807258606 0 0.0 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.9921565055847168 0.12496611475944519 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.1536492109298706 0.6081211566925049 -0.22929680347442627 0.7448957562446594 0.18478956818580627 0.6410412788391113 0.974439799785614 0.11739514768123627 1 0.9825928807258606 0 0.0 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.1668308973312378 0.6906447410583496 -0.2779656648635864 0.5177770256996155 0.6292916536331177 0.5795159935951233 0.8731365203857422 0.4358011484146118 1 0.9922325015068054 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.8650132417678833 0.44598329067230225 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.886073887348175 0.48145270347595215 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.1668308973312378 0.6906447410583496 -0.2779656648635864 0.5177770256996155 0.6292916536331177 0.5795159935951233 0.46132102608680725 0.8691244125366211 1 0.9922325015068054 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.0992489755153656 0.6243481636047363 -0.1760026216506958 0.6385387778282166 0.5357829332351685 0.5523850321769714 0.42691096663475037 0.9333289265632629 1 0.9787788391113281 0 0.0 0 0.0 0 0.0\n0.1536492109298706 0.6081211566925049 -0.22929680347442627 0.7448957562446594 0.18478956818580627 0.6410412788391113 0.450658917427063 0.9162338972091675 1 0.9825928807258606 0 0.0 0 0.0 0 0.0\n0.059245407581329346 0.759354829788208 -0.3721191883087158 0.1420636624097824 0.9840388298034668 0.10684530436992645 0.40722841024398804 0.8062321543693542 1 0.9981570839881897 0 0.0 0 0.0 0 0.0\n0.041914358735084534 0.7521989345550537 -0.3280456066131592 0.06817834824323654 0.921597957611084 0.3820917308330536 0.40006113052368164 0.8271682858467102 1 0.9970934987068176 0 0.0 0 0.0 0 0.0\n0.12691903114318848 0.7287836074829102 -0.3071833848953247 0.20764793455600739 0.8145695328712463 0.5415814518928528 0.4425181448459625 0.8441644906997681 1 0.9954813718795776 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.4114780128002167 0.779198944568634 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.5090063214302063 0.8317936658859253 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.17808693647384644 0.7106759548187256 -0.3287475109100342 0.5918454527854919 0.7044282555580139 0.39173558354377747 0.46606069803237915 0.8411576151847839 1 0.9952844977378845 0 0.0 0 0.0 0 0.0\n0.23513078689575195 0.6938152313232422 -0.4137706756591797 0.09668263792991638 0.8894924521446228 0.4465163052082062 0.48952001333236694 0.8107777237892151 1 0.9962446093559265 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7745609283447266 -0.48571276664733887 0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977135062217712 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7452795505523682 -0.4596238136291504 0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974828362464905 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.13420909643173218 0.7470312118530273 -0.36113905906677246 0.2852870225906372 0.9150669574737549 0.2850123643875122 0.44494444131851196 0.8153911232948303 1 0.9972447752952576 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7452795505523682 -0.4596238136291504 0.36835840344429016 0.7375103235244751 0.5659962892532349 0.47066688537597656 0.7744562029838562 1 0.9974828362464905 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.19472473859786987 0.7745609283447266 -0.48571276664733887 0.06698812544345856 0.6877346038818359 0.7228308916091919 0.47163125872612 0.7539528608322144 1 0.9977135062217712 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.2505803108215332 0.7695996761322021 -0.48949456214904785 -0.1833857297897339 0.7009491324424744 0.6891995072364807 0.4994630813598633 0.7543298602104187 1 0.9975677132606506 0 0.0 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.527910053730011 0.7577385902404785 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.527910053730011 0.7027824521064758 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.2947826385498047 0.9091815948486328 -0.5893387794494629 0.82534259557724 0.5525681376457214 0.11593981832265854 0.5277626514434814 0.6673424243927002 1 0.9977980256080627 0 0.0 0 0.0 0 0.0\n0.2638838291168213 0.9322519302368164 -0.609893798828125 0.14166691899299622 0.9372844696044922 -0.3183690905570984 0.5128092169761658 0.650969922542572 1 0.9978194236755371 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.15930330753326416 0.8070216178894043 -0.5146346092224121 0.2629169523715973 0.6476333141326904 0.7151402235031128 0.4546871483325958 0.7309730052947998 1 0.9980078935623169 0 0.0 0 0.0 0 0.0\n0.2460576295852661 0.8691680431365967 -0.5895872116088867 -0.0476393923163414 0.5283669829368591 0.8476516008377075 0.49987420439720154 0.6797340512275696 1 0.997829020023346 0 0.0 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.48197782039642334 0.6635977029800415 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.12602776288986206 0.8367936611175537 -0.5169486999511719 -0.5360575914382935 0.844019889831543 0.014984588138759136 0.9544497728347778 0.7932650446891785 1 0.9980970025062561 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9190778136253357 0.8595334887504578 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.17542767524719238 0.5399246215820312 -0.2481163740158081 0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722552299499512 0 0.0 0 0.0 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.04406014084815979 0.5062999725341797 -0.1307528018951416 0.6033509373664856 -0.4283883273601532 0.6725974082946777 0.9375776648521423 0.05149134621024132 1 0.9310470223426819 0 0.05096268281340599 0 0.0 0 0.0\n0.02722427248954773 0.4976499080657959 -0.1062207818031311 0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.9274529814720154 0 0.053911928087472916 0 0.0 0 0.0\n0.03183332085609436 0.4725472927093506 -0.1536623239517212 0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963752388954163 0 0.07782471179962158 0 0.0 0 0.0\n0.20446312427520752 0.9136180877685547 -0.5932917594909668 -0.4698324501514435 0.8652912974357605 -0.1745048314332962 0.9505891799926758 0.7223089933395386 1 0.9978598952293396 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.9264681935310364 0.7198551297187805 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.9168798327445984 0.7807419896125793 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.07492586970329285 0.7546496391296387 -0.43943047523498535 -0.1832026094198227 0.964598536491394 -0.1896420121192932 0.9763534069061279 0.9473682045936584 1 0.9989309310913086 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.0 0.717432975769043 -0.496915340423584 0.0 0.5661183595657349 -0.8242744207382202 0.9412925839424133 0.9857740998268127 1 0.9996612071990967 0 0.0 0 0.0 0 0.0\n0.17542767524719238 0.5399246215820312 -0.2481163740158081 0.886593222618103 -0.28980377316474915 0.36039307713508606 0.9461795687675476 0.1376567780971527 1 0.9722552299499512 0 0.0 0 0.0 0 0.0\n0.15695953369140625 0.5213019847869873 -0.23152399063110352 0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635539650917053 0 0.0 0 0.0 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.9702180027961731 0.1673179417848587 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.18975555896759033 0.5741572380065918 -0.27861666679382324 0.9336222410202026 -0.14868617057800293 0.3259071707725525 0.9549236297607422 0.14849883317947388 1 0.983038604259491 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.9159454703330994 0.17071913182735443 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.2143995761871338 0.6344926357269287 -0.3323737382888794 0.8702353239059448 -0.09164708107709885 0.4839930534362793 0.15881234407424927 0.269660085439682 1 0.99260014295578 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.2714434862136841 0.6815202236175537 -0.37427401542663574 0.8992888927459717 0.2068544626235962 0.38532671332359314 0.12856031954288483 0.23758146166801453 1 0.9954957962036133 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.29834794998168945 0.8586046695709229 -0.544276237487793 0.7876216769218445 0.5459151268005371 0.2855921983718872 0.10662513971328735 0.10797388106584549 1 0.9977295398712158 0 0.0 0 0.0 0 0.0\n0.2595592737197876 0.8025784492492676 -0.5593953132629395 0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977782964706421 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.15695953369140625 0.5213019847869873 -0.23152399063110352 0.7372050881385803 -0.5348063707351685 0.41285440325737 0.9393715262413025 0.12667523324489594 1 0.9635539650917053 0 0.0 0 0.0 0 0.0\n0.08664500713348389 0.49995994567871094 -0.15126699209213257 0.5456098914146423 -0.5877254605293274 0.5973693132400513 0.9379087686538696 0.07691145688295364 1 0.9312424063682556 0 0.048782166093587875 0 0.0 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.3023422956466675 0.7849597930908203 -0.4707658290863037 0.809015154838562 0.40089112520217896 0.4297921657562256 0.10812272131443024 0.16332419216632843 1 0.9974520802497864 0 0.0 0 0.0 0 0.0\n0.23466861248016357 0.7335350513458252 -0.5268294811248779 0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977160096168518 0 0.0 0 0.0 0 0.0\n0.2595592737197876 0.8025784492492676 -0.5593953132629395 0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977782964706421 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.0 0.6219885349273682 -0.5401461124420166 0.0 0.21689504384994507 -0.9761650562286377 0.8908731341362 0.9758754968643188 1 0.9991644024848938 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.0 0.4954061508178711 -0.5303821563720703 0.0 -0.39960935711860657 -0.9166539311408997 0.30426859855651855 0.2333311140537262 1 0.9962685704231262 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.0 0.39038944244384766 -0.43143999576568604 0.0 -0.7942442297935486 -0.6075929999351501 0.30977341532707214 0.30976250767707825 1 0.9789760708808899 0 0.0 0 0.0 0 0.0\n0.02722427248954773 0.4976499080657959 -0.1062207818031311 0.5827203989028931 -0.48753318190574646 0.6501358151435852 0.9371650218963623 0.03867452219128609 1 0.9274529814720154 0 0.053911928087472916 0 0.0 0 0.0\n0.0 0.4937889575958252 -0.09715571999549866 0.0 -0.6279793977737427 0.7781914472579956 0.9327072501182556 0.023990735411643982 1 0.9297935366630554 0 0.05221788212656975 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.07230684161186218 0.39586949348449707 -0.33485913276672363 0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468240141868591 0 0.03911536559462547 0 0.0 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.25437653064727783 0.8707180023193359 -0.6044466495513916 0.1664784699678421 -0.32941678166389465 -0.9293801784515381 0.1323527842760086 0.07852371037006378 1 0.9978157877922058 0 0.0 0 0.0 0 0.0\n0.2595592737197876 0.8025784492492676 -0.5593953132629395 0.48774680495262146 -0.4980620741844177 -0.7169408202171326 0.13544107973575592 0.12047519534826279 1 0.9977782964706421 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.1937013864517212 0.7858362197875977 -0.5540850162506104 -0.2551347315311432 -0.29074984788894653 -0.922116756439209 0.16920901834964752 0.12707068026065826 1 0.997936487197876 0 0.0 0 0.0 0 0.0\n0.23466861248016357 0.7335350513458252 -0.5268294811248779 0.5275429487228394 -0.4376964569091797 -0.7280495762825012 0.15449798107147217 0.1570688784122467 1 0.9977160096168518 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.8843513131141663 0.9313850402832031 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.7046983242034912 -0.4855692386627197 -0.20276497304439545 0.3567918837070465 -0.9118930697441101 0.9413006901741028 0.9422845840454102 1 0.9991380572319031 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.9133719205856323 0.8904370665550232 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.1876540184020996 0.6596939563751221 -0.5185306072235107 0.33820611238479614 -0.1976683884859085 -0.9200415015220642 0.18751898407936096 0.18505068123340607 1 0.9977463483810425 0 0.0 0 0.0 0 0.0\n0.2332911491394043 0.6557881832122803 -0.45631957054138184 0.826288640499115 -0.40223395824432373 -0.39423811435699463 0.15952694416046143 0.21251626312732697 1 0.9963886141777039 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.08317875862121582 0.5977051258087158 -0.5351896286010742 0.13367107510566711 0.040162358433008194 -0.9902035593986511 0.24910669028759003 0.1976434588432312 1 0.9983817934989929 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.17545980215072632 0.5656907558441162 -0.5075685977935791 0.6020996570587158 -0.3631092309951782 -0.7110202312469482 0.20651164650917053 0.22181473672389984 1 0.9963264465332031 0 0.0 0 0.0 0 0.0\n0.215201735496521 0.579124927520752 -0.41087865829467773 0.8949857950210571 -0.44148075580596924 -0.0636310949921608 0.175100177526474 0.25710052251815796 1 0.9931851625442505 0 0.0 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.07982555031776428 0.4681966304779053 -0.49700307846069336 0.32801294326782227 -0.6124454736709595 -0.7191991806030273 0.26634955406188965 0.25791066884994507 1 0.9938180446624756 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.14730453491210938 0.4809708595275879 -0.4494520425796509 0.6751915216445923 -0.6570024490356445 -0.335245817899704 0.2268296331167221 0.27411285042762756 1 0.9907476305961609 0 0.0 0 0.0 0 0.0\n0.18907427787780762 0.5321424007415771 -0.3633767366409302 0.8845484852790833 -0.4600665271282196 0.07654042541980743 0.18983252346515656 0.29206639528274536 1 0.9870381951332092 0 0.0 0 0.0 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.8714877963066101 0.14967380464076996 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.1636601686477661 0.5023448467254639 -0.3202894926071167 0.8532670140266418 -0.49674978852272034 0.158513143658638 0.9101097583770752 0.15139897167682648 1 0.975587785243988 0 0.0 0 0.0 0 0.0\n0.07230684161186218 0.39586949348449707 -0.33485913276672363 0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468240141868591 0 0.03911536559462547 0 0.0 0 0.0\n0.07171991467475891 0.41830766201019287 -0.40954136848449707 0.5254982113838196 -0.7786187529563904 -0.3428449332714081 0.2686126232147217 0.31042376160621643 1 0.9810636043548584 0 0.0 0 0.0 0 0.0\n0.13163155317306519 0.4475557804107666 -0.36023998260498047 0.730246901512146 -0.6739402413368225 -0.11188085377216339 0.23006127774715424 0.3214690387248993 1 0.9729717969894409 0 0.0 0 0.0 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.8736137747764587 0.12863701581954956 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.1420363187789917 0.49902892112731934 -0.265682578086853 0.7232886552810669 -0.6007568836212158 0.3404339849948883 0.9186869263648987 0.12909665703773499 1 0.9554049968719482 0 0.009283550083637238 0 0.0 0 0.0\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.03183332085609436 0.4725472927093506 -0.1536623239517212 0.4668111205101013 -0.7400128245353699 0.4841761589050293 0.9156655073165894 0.053619880229234695 1 0.8963752388954163 0 0.07782471179962158 0 0.0 0 0.0\n0.0 0.46508145332336426 -0.15146160125732422 0.0 -0.8492690920829773 0.5279091596603394 0.9070941805839539 0.03858356922864914 1 0.8848198652267456 0 0.08769097924232483 0 0.0 0 0.0\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.04406014084815979 0.47633934020996094 -0.1643797755241394 0.4945219159126282 -0.7363200783729553 0.4617755711078644 0.9167872667312622 0.06153831630945206 1 0.8978144526481628 0 0.0762820616364479 0 0.0 0 0.0\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.8917837738990784 0.0931837260723114 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.07519534230232239 0.4880945682525635 -0.17792588472366333 0.4931180775165558 -0.8037965297698975 0.3327127993106842 0.9240359663963318 0.07843738049268723 1 0.9170035123825073 0 0.058905184268951416 0 0.0 0 0.0\n0.0 0.41489994525909424 -0.18215465545654297 0.0 0.5597094893455505 0.8286690711975098 0.8788778185844421 0.04964836686849594 1 0.730757474899292 0 0.21810069680213928 5 0.0014950893819332123 3 0.00030696019530296326\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.8979483842849731 0.07017120718955994 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.024349510669708252 0.44997596740722656 -0.18417012691497803 0.5105136036872864 -0.6040223240852356 0.6119571328163147 0.897230863571167 0.05878820642828941 1 0.8514333963394165 0 0.11276810616254807 0 0.0 0 0.0\n0.09905996918678284 0.40596628189086914 -0.19437533617019653 0.5630664825439453 0.7503280639648438 0.34626302123069763 0.5929415822029114 0.566311240196228 1 0.6572749614715576 0 0.20971746742725372 3 0.12424865365028381 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6050207018852234 0.5939637422561646 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.04134397208690643 0.4539233446121216 -0.2002546787261963 0.5264137983322144 -0.3241981267929077 0.7859736680984497 0.6188840866088867 0.5845966339111328 1 0.8607756495475769 0 0.10225554555654526 3 0.0017874501645565033 0 0.0\n0.12179547548294067 0.3854290246963501 -0.23301446437835693 0.8996246457099915 0.39896848797798157 -0.17743460834026337 0.6237066984176636 0.9517653584480286 1 0.7110409140586853 0 0.1705215722322464 3 0.11412934958934784 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.6179927587509155 0.9725486040115356 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.07328110933303833 0.4430720806121826 -0.23094940185546875 0.8349864482879639 0.062196724116802216 0.5467085838317871 0.6518501043319702 0.9787291884422302 1 0.8749367594718933 0 0.08163774013519287 3 0.026193035766482353 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.07230684161186218 0.39586949348449707 -0.33485913276672363 0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468240141868591 0 0.03911536559462547 0 0.0 0 0.0\n0.11474817991256714 0.41678154468536377 -0.2910900115966797 0.9263588190078735 -0.37650686502456665 0.005249183624982834 0.23559102416038513 0.359767347574234 1 0.9101746082305908 0 0.05719852074980736 3 0.011641807854175568 0 0.0\n0.0 0.33551084995269775 -0.3629721403121948 0.0 -0.7144383192062378 -0.6996673345565796 0.31088313460350037 0.35648632049560547 1 0.9168000221252441 0 0.07637535780668259 0 0.0 0 0.0\n0.07230684161186218 0.39586949348449707 -0.33485913276672363 0.6780602335929871 -0.6097903251647949 -0.41029083728790283 0.26386216282844543 0.34843114018440247 1 0.9468240141868591 0 0.03911536559462547 0 0.0 0 0.0\n0.07341891527175903 0.3139185905456543 -0.28698432445526123 0.6358226537704468 -0.38373973965644836 -0.669667661190033 0.27071312069892883 0.3962279260158539 1 0.6878804564476013 0 0.28015995025634766 3 0.008270028978586197 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.08512462675571442 0.6006276607513428 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.049123793840408325 0.5567721724510193 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.5589442253112793 0.16177308559417725 0.07854250073432922 0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.02092316746711731 0.6068553328514099 3 1.0000194311141968 0 0.0 0 0.0 0 0.0\n0.3984619379043579 0.26093626022338867 0.08564722537994385 -0.4599139392375946 0.35129857063293457 0.8154851198196411 0.43783387541770935 0.39854317903518677 3 0.9973952174186707 0 0.0 0 0.0 0 0.0\n0.47704315185546875 0.22420382499694824 0.13703078031539917 -0.09256263822317123 0.13635669648647308 0.9862971901893616 0.39813071489334106 0.3643503189086914 3 0.9994068741798401 0 0.0 0 0.0 0 0.0\n0.5096194744110107 0.2505838871002197 0.11315262317657471 0.5906857252120972 0.6383556723594666 0.4935148060321808 0.38072505593299866 0.38276207447052 3 0.9994410276412964 0 0.0 0 0.0 0 0.0\n0.5096194744110107 0.2505838871002197 0.11315262317657471 0.5906857252120972 0.6383556723594666 0.4935148060321808 0.6430558562278748 0.6733530759811401 3 0.9994410276412964 0 0.0 0 0.0 0 0.0\n0.5589442253112793 0.16177308559417725 0.07854250073432922 0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.5921546220779419 0.6514858603477478 3 1.0000194311141968 0 0.0 0 0.0 0 0.0\n0.5047986507415771 0.20594364404678345 -0.004644919186830521 0.6930753588676453 -0.20831935107707977 -0.6900539994239807 0.5881485939025879 0.7014670968055725 3 0.9998424053192139 0 0.0 0 0.0 0 0.0\n0.43023955821990967 0.157029926776886 0.06563612818717957 -0.4426404535770416 -0.8844264149665833 0.14767906069755554 0.9498034119606018 0.5855746865272522 3 0.9999399781227112 0 0.0 0 0.0 0 0.0\n0.5088207721710205 0.12029749155044556 0.1170196533203125 0.16394543647766113 -0.8839991688728333 0.4377574920654297 0.9588103890419006 0.5548603534698486 3 1.0001006126403809 0 0.0 0 0.0 0 0.0\n0.47704315185546875 0.22420382499694824 0.13703078031539917 -0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 3 0.9994068741798401 0 0.0 0 0.0 0 0.0\n0.5589442253112793 0.16177308559417725 0.07854250073432922 0.9342325925827026 -0.35114598274230957 -0.06216620281338692 0.9657022356987 0.5219221115112305 3 1.0000194311141968 0 0.0 0 0.0 0 0.0\n0.5096194744110107 0.2505838871002197 0.11315262317657471 0.5906857252120972 0.6383556723594666 0.4935148060321808 0.9143127202987671 0.525738000869751 3 0.9994410276412964 0 0.0 0 0.0 0 0.0\n0.47704315185546875 0.22420382499694824 0.13703078031539917 -0.09256263822317123 0.13635669648647308 0.9862971901893616 0.9100112915039062 0.5470339059829712 3 0.9994068741798401 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.07567718625068665 0.6810379028320312 -0.25069737434387207 0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912428259849548 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.07567718625068665 0.6810379028320312 -0.25069737434387207 0.19437238574028015 0.6898708939552307 0.6973174214363098 0.41558343172073364 0.883171558380127 1 0.9912428259849548 0 0.0 0 0.0 0 0.0\n0.07448214292526245 0.6610023975372314 -0.22847318649291992 0.29837948083877563 0.8330942988395691 0.46571245789527893 0.41453418135643005 0.8990539312362671 1 0.9883980751037598 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.12389302253723145 0.6452987194061279 -0.2239953875541687 0.3717764914035797 0.6311227679252625 0.6807458996772766 0.4386693835258484 0.9063490033149719 1 0.9863564372062683 0 0.0 0 0.0 0 0.0\n0.16969645023345947 0.6551282405853271 -0.246321439743042 0.6105228066444397 0.38544878363609314 0.6918545961380005 0.4616085886955261 0.8940138816833496 1 0.9888418912887573 0 0.0 0 0.0 0 0.0\n0.11437469720840454 0.7034616470336914 -0.2846221923828125 0.12384410947561264 0.6982024312019348 0.7050996422767639 0.4353049099445343 0.8618066906929016 1 0.993859589099884 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 -0.00012207403779029846 0.7973570823669434 0.6034730076789856 0.44789454340934753 0.5826849937438965 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.17463847994804382 0.7308197021484375 -0.23016177117824554 -0.0006103701889514923 0.7947325110435486 0.6069216132164001 0.44740810990333557 0.5856611728668213 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.0005798516795039177 0.7979369759559631 0.6027100682258606 0.43512284755706787 0.5850702524185181 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.0005798516795039177 0.7979369759559631 0.6027100682258606 0.43512284755706787 0.5850702524185181 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.0007629627361893654 0.7988219857215881 0.6015198230743408 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 -0.00012207403779029846 0.7973570823669434 0.6034730076789856 0.44789454340934753 0.5826849937438965 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.0007629627361893654 0.7988219857215881 0.6015198230743408 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0003662221133708954 0.7992797493934631 0.6009094715118408 0.43992936611175537 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 -0.00012207403779029846 0.7973570823669434 0.6034730076789856 0.44789454340934753 0.5826849937438965 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.18155312538146973 0.6985167860984802 -0.18785469233989716 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.4365166127681732 0.5947638750076294 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.27082911133766174 0.556499719619751 -0.40462347865104675 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.45176565647125244 0.5847734212875366 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.26475274562835693 0.5735782384872437 -0.4104318916797638 0.9183019399642944 0.3723563253879547 0.1342204064130783 0.45217427611351013 0.5859748125076294 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.0 0.7986083626747131 0.6017944812774658 0.43512284755706787 0.5850702524185181 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17420312762260437 0.7306431531906128 -0.23022541403770447 0.0 0.7986083626747131 0.6017944812774658 0.42286816239356995 0.5856656432151794 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 0.0 0.7986083626747131 0.6017944812774658 0.42232412099838257 0.5826810598373413 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 0.0 0.7986083626747131 0.6017944812774658 0.42232412099838257 0.5826810598373413 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.16803307831287384 0.6519752144813538 -0.12582896649837494 0.0 0.7986083626747131 0.6017944812774658 0.42330220341682434 0.5783216953277588 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0 0.7986083626747131 0.6017944812774658 0.430316299200058 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0 0.7986083626747131 0.6017944812774658 0.430316299200058 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.0 0.7986083626747131 0.6017944812774658 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 0.0 0.7986083626747131 0.6017944812774658 0.42232412099838257 0.5826810598373413 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.18193703889846802 0.6986724734306335 -0.18779857456684113 -0.9146091938018799 0.3822748363018036 0.13153477013111115 0.43651267886161804 0.5947748422622681 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.17420312762260437 0.7306431531906128 -0.23022541403770447 -0.9124118685722351 0.3890804648399353 0.1268654465675354 0.4394972622394562 0.5970238447189331 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.26600396633148193 0.5740855932235718 -0.4102489948272705 -0.9412823915481567 0.26740318536758423 0.2059389054775238 0.45216143131256104 0.5860105156898499 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 -0.02450636401772499 -0.8625141382217407 -0.5053865313529968 0.43512269854545593 0.5856449007987976 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.1669710874557495 0.7213309407234192 -0.23609749972820282 0.013245033100247383 -0.774254560470581 -0.6327097415924072 0.44686874747276306 0.5860787630081177 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.0007019257172942162 -0.8356273174285889 -0.5492416024208069 0.44757309556007385 0.5831930041313171 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.0007019257172942162 -0.8356273174285889 -0.5492416024208069 0.44757309556007385 0.5831930041313171 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.16803307831287384 0.6519752144813538 -0.12582896649837494 0.04449598491191864 -0.8886989951133728 -0.45631274580955505 0.446943461894989 0.5783216953277588 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.06832624971866608 0.6362987756729126 -0.10502550005912781 -0.032135989516973495 -0.8496047854423523 -0.5263832807540894 0.43992936611175537 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.06832624971866608 0.6362987756729126 -0.10502550005912781 -0.032135989516973495 -0.8496047854423523 -0.5263832807540894 0.43992936611175537 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 -0.04226813465356827 -0.861690104007721 -0.5056001543998718 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 0.0007019257172942162 -0.8356273174285889 -0.5492416024208069 0.44757309556007385 0.5831930041313171 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.17698341608047485 0.6879801154136658 -0.19507654011249542 -0.8927274346351624 -0.4296395778656006 -0.1355937421321869 0.43702465295791626 0.5940226316452026 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n0.1669710874557495 0.7213309407234192 -0.23609749972820282 -0.8917508721351624 -0.43226417899131775 -0.13379314541816711 0.4399103820323944 0.5963687896728516 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.26475274562835693 0.5735782384872437 -0.4104318916797638 -0.9075899720191956 -0.38608965277671814 -0.16479995846748352 0.45217427611351013 0.5859748125076294 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.0005493331700563431 -0.8368785381317139 -0.5473799705505371 0.42264923453330994 0.5831946730613708 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.16651925444602966 0.7212713360786438 -0.23632338643074036 -0.012543107382953167 -0.7784661650657654 -0.6275520920753479 0.42340871691703796 0.5860946178436279 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 0.0236823633313179 -0.8631550073623657 -0.504318356513977 0.43512269854545593 0.5856449007987976 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 0.0236823633313179 -0.8631550073623657 -0.504318356513977 0.43512269854545593 0.5856449007987976 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.04126102477312088 -0.861506998538971 -0.5060274004936218 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.0005493331700563431 -0.8368785381317139 -0.5473799705505371 0.42264923453330994 0.5831946730613708 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n8.740083656810782e-10 0.6703131198883057 -0.15016429126262665 0.04126102477312088 -0.861506998538971 -0.5060274004936218 0.43512284755706787 0.5800336003303528 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.06832624971866608 0.6362987756729126 -0.10502550005912781 0.0316782146692276 -0.8488723635673523 -0.5275734663009644 0.430316299200058 0.5768581628799438 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 -0.0005493331700563431 -0.8368785381317139 -0.5473799705505371 0.42264923453330994 0.5831946730613708 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.17731525003910065 0.688213586807251 -0.19509990513324738 0.8886989951133728 -0.4385204613208771 -0.13370159268379211 0.43702632188796997 0.5940390825271606 1 0.9903830885887146 0 0.0 0 0.0 0 0.0\n-0.2696293294429779 0.5560132265090942 -0.40479886531829834 0.9333170652389526 -0.2614215612411499 -0.2460402250289917 0.45177799463272095 0.5847391486167908 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.26600396633148193 0.5740855932235718 -0.4102489948272705 0.9305398464202881 -0.28128910064697266 -0.23435163497924805 0.45216143131256104 0.5860105156898499 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n0.1669710874557495 0.7213309407234192 -0.23609749972820282 -0.060670796781778336 0.5655690431594849 -0.8224433064460754 0.44686874747276306 0.5963687896728516 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 -0.05786309391260147 0.6010925769805908 -0.7970519065856934 0.43512269854545593 0.5958132147789001 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 -0.05798516795039177 0.599536120891571 -0.7982116341590881 0.43512284755706787 0.5965752005577087 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n8.540583795735301e-10 0.724265456199646 -0.22176188230514526 0.05896176025271416 0.600085437297821 -0.7977232933044434 0.43512284755706787 0.5965752005577087 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-1.9033474245588877e-06 0.7134334444999695 -0.22993047535419464 0.05887020379304886 0.6010315418243408 -0.7970213890075684 0.43512269854545593 0.5958132147789001 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.16651925444602966 0.7212713360786438 -0.23632338643074036 0.06060975790023804 0.5796685814857483 -0.8125553131103516 0.42340871691703796 0.5963646173477173 1 0.9903831481933594 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.1052117869257927 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.40688976645469666 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.2676198184490204 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 0.8644062876701355 0.06088442727923393 0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 -0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 0.9981383681297302 0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.40688976645469666 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.13953270018100739 -0.8644062876701355 0.06088442727923393 0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 -0.4990691840648651 0.06088442727923393 0.8644062876701355 0.4159002900123596 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.1052117869257927 0.4990691840648651 0.06088442727923393 0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 -0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 -0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4138997197151184 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.4990691840648651 0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4033651649951935 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 0.8644062876701355 0.06088442727923393 -0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 0.0 1.0 -0.0 0.4054032266139984 0.5611783266067505 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.0 1.0 -0.0 0.4026191830635071 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.0 1.0 -0.0 0.4026191830635071 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4033651649951935 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4033651649951935 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.0 1.0 -0.0 0.4054032266139984 0.5515340566635132 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 0.0 1.0 -0.0 0.4109712839126587 0.5515340566635132 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 0.0 0.999969482421875 -0.0 0.41375532746315 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 1.0 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 1.0 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 0.0 0.999969482421875 -0.0 0.4109712839126587 0.5611783266067505 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4033651649951935 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 1.0 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.1052117869257927 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.40688976645469666 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.2676198184490204 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.139532670378685 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 -0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.13953270018100739 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.28912973403930664 0.31683751940727234 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.2801821529865265 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -0.06088442727923393 0.9981383681297302 0.40818727016448975 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4074037969112396 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.40688976645469666 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4766623377799988 0.31683751940727234 0.18641582131385803 -0.9981383681297302 -0.06088442727923393 -0.0 0.41018784046173096 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360127806663513 0.31683751940727234 0.10521181672811508 0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4159002900123596 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.13953270018100739 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.41348591446876526 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.8644062876701355 -0.06088442727923393 -0.4990691840648651 0.4129718840122223 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.1052117869257927 -0.4990691840648651 -0.06088442727923393 -0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.31683751940727234 0.09264949709177017 0.0 -0.06088442727923393 -0.9981383681297302 0.40818727016448975 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.30169200897216797 0.31683751940727234 0.23329901695251465 0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4138997197151184 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3360128402709961 0.31683751940727234 0.2676198184490204 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.41148534417152405 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4109712839126587 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.4054032266139984 0.5510663390159607 5 1.0 0 0.0 0 0.0 0 0.0\n-0.42977917194366455 0.31683751940727234 0.2676198184490204 -0.4990691840648651 -0.06088442727923393 0.8644062876701355 0.40488916635513306 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46410006284713745 0.31683751940727234 0.23329898715019226 -0.8644062876701355 -0.06088442727923393 0.4990691840648651 0.4024747908115387 0.5679138898849487 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 -1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.11786847561597824 0.0 -1.0 -0.0 0.4054032266139984 0.5611783266067505 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 -0.999969482421875 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 -0.999969482421875 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3433201313018799 0.07734565436840057 0.11786850541830063 0.0 -0.999969482421875 -0.0 0.4109712839126587 0.5611783266067505 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 -0.999969482421875 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 -0.999969482421875 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.303744375705719 0.07734565436840057 0.18641585111618042 0.0 -0.999969482421875 -0.0 0.41375532746315 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 -1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 -1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.34332019090652466 0.07734565436840057 0.2549631595611572 0.0 -1.0 -0.0 0.4109712839126587 0.5515340566635132 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.422471821308136 0.07734565436840057 0.2549631595611572 0.0 -1.0 -0.0 0.4054032266139984 0.5515340566635132 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.0 -1.0 -0.0 0.4033651649951935 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.22599166631698608 0.0 -1.0 -0.0 0.4033651649951935 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.0 -0.999969482421875 -0.0 0.4026191830635071 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.46204763650894165 0.07734565436840057 0.18641582131385803 0.0 -0.999969482421875 -0.0 0.4026191830635071 0.5563561916351318 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 -1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n-0.4514433741569519 0.07734565436840057 0.14684000611305237 0.0 -1.0 -0.0 0.4033651649951935 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.10726418346166611 0.0 -0.999969482421875 -0.0 0.40818727016448975 0.5619242787361145 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 -0.999969482421875 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.14684003591537476 0.0 -0.999969482421875 -0.0 0.4130093455314636 0.5591402649879456 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3143486976623535 0.07734565436840057 0.22599166631698608 0.0 -1.0 -0.0 0.4130093455314636 0.5535721778869629 5 1.0 0 0.0 0 0.0 0 0.0\n-0.3828960061073303 0.07734565436840057 0.26556745171546936 0.0 -1.0 -0.0 0.40818727016448975 0.5507881045341492 5 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n384 385 386 0\n387 388 389 0\n390 391 392 0\n393 394 395 0\n396 397 398 0\n399 400 401 0\n402 403 404 0\n405 406 407 0\n408 409 410 0\n411 412 413 0\n414 415 416 0\n417 418 419 0\n420 421 422 0\n423 424 425 0\n426 427 428 0\n429 430 431 0\n432 433 434 0\n435 436 437 0\n438 439 440 0\n441 442 443 0\n444 445 446 0\n447 448 449 0\n450 451 452 0\n453 454 455 0\n456 457 458 0\n459 460 461 0\n462 463 464 0\n465 466 467 0\n468 469 470 0\n471 472 473 0\n474 475 476 0\n477 478 479 0\n480 481 482 0\n483 484 485 0\n486 487 488 0\n489 490 491 0\n492 493 494 0\n495 496 497 0\n498 499 500 0\n501 502 503 0\n504 505 506 0\n507 508 509 0\n510 511 512 0\n513 514 515 0\n516 517 518 0\n519 520 521 0\n522 523 524 0\n525 526 527 0\n528 529 530 0\n531 532 533 0\n534 535 536 0\n537 538 539 0\n540 541 542 0\n543 544 545 0\n546 547 548 0\n549 550 551 0\n552 553 554 0\n555 556 557 0\n558 559 560 0\n561 562 563 0\n564 565 566 0\n567 568 569 0\n570 571 572 0\n573 574 575 0\n576 577 578 0\n579 580 581 0\n582 583 584 0\n585 586 587 0\n588 589 590 0\n591 592 593 0\n594 595 596 0\n597 598 599 0\n600 601 602 0\n603 604 605 0\n606 607 608 0\n609 610 611 0\n612 613 614 0\n615 616 617 0\n618 619 620 0\n621 622 623 0\n624 625 626 0\n627 628 629 0\n630 631 632 0\n633 634 635 0\n636 637 638 0\n639 640 641 0\n642 643 644 0\n645 646 647 0\n648 649 650 0\n651 652 653 0\n654 655 656 0\n657 658 659 0\n660 661 662 0\n663 664 665 0\n666 667 668 0\n669 670 671 0\n672 673 674 0\n675 676 677 0\n678 679 680 0\n681 682 683 0\n684 685 686 0\n687 688 689 0\n690 691 692 0\n693 694 695 0\n696 697 698 0\n699 700 701 0\n702 703 704 0\n705 706 707 0\n708 709 710 0\n711 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n723 724 725 0\n726 727 728 0\n729 730 731 0\n732 733 734 0\n735 736 737 0\n738 739 740 0\n741 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n753 754 755 0\n756 757 758 0\n759 760 761 0\n762 763 764 0\n765 766 767 0\n768 769 770 0\n771 772 773 0\n774 775 776 0\n777 778 779 0\n780 781 782 0\n783 784 785 0\n786 787 788 0\n789 790 791 0\n792 793 794 0\n795 796 797 0\n798 799 800 0\n801 802 803 0\n804 805 806 0\n807 808 809 0\n810 811 812 0\n813 814 815 0\n816 817 818 0\n819 820 821 0\n822 823 824 0\n825 826 827 0\n828 829 830 0\n831 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n843 844 845 0\n846 847 848 0\n849 850 851 0\n852 853 854 0\n855 856 857 0\n858 859 860 0\n861 862 863 0\n864 865 866 0\n867 868 869 0\n870 871 872 0\n873 874 875 0\n876 877 878 0\n879 880 881 0\n882 883 884 0\n885 886 887 0\n888 889 890 0\n891 892 893 0\n894 895 896 0\n897 898 899 0\n900 901 902 0\n903 904 905 0\n906 907 908 0\n909 910 911 0\n912 913 914 0\n915 916 917 0\n918 919 920 0\n921 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n933 934 935 0\n936 937 938 0\n939 940 941 0\n942 943 944 0\n945 946 947 0\n948 949 950 0\n951 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n963 964 965 0\n966 967 968 0\n969 970 971 0\n972 973 974 0\n975 976 977 0\n978 979 980 0\n981 982 983 0\n984 985 986 0\n987 988 989 0\n990 991 992 0\n993 994 995 0\n996 997 998 0\n999 1000 1001 0\n1002 1003 1004 0\n1005 1006 1007 0\n1008 1009 1010 0\n1011 1012 1013 0\n1014 1015 1016 0\n1017 1018 1019 0\n1020 1021 1022 0\n1023 1024 1025 0\n1026 1027 1028 0\n1029 1030 1031 0\n1032 1033 1034 0\n1035 1036 1037 0\n1038 1039 1040 0\n1041 1042 1043 0\n1044 1045 1046 0\n1047 1048 1049 0\n1050 1051 1052 0\n1053 1054 1055 0\n1056 1057 1058 0\n1059 1060 1061 0\n1062 1063 1064 0\n1065 1066 1067 0\n1068 1069 1070 0\n1071 1072 1073 0\n1074 1075 1076 0\n1077 1078 1079 0\n1080 1081 1082 0\n1083 1084 1085 0\n1086 1087 1088 0\n1089 1090 1091 0\n1092 1093 1094 0\n1095 1096 1097 0\n1098 1099 1100 0\n1101 1102 1103 0\n1104 1105 1106 0\n1107 1108 1109 0\n1110 1111 1112 0\n1113 1114 1115 0\n1116 1117 1118 0\n1119 1120 1121 0\n1122 1123 1124 0\n1125 1126 1127 0\n1128 1129 1130 0\n1131 1132 1133 0\n1134 1135 1136 0\n1137 1138 1139 0\n1140 1141 1142 0\n1143 1144 1145 0\n1146 1147 1148 0\n1149 1150 1151 0\n1152 1153 1154 0\n1155 1156 1157 0\n1158 1159 1160 0\n1161 1162 1163 0\n1164 1165 1166 0\n1167 1168 1169 0\n1170 1171 1172 0\n1173 1174 1175 0\n1176 1177 1178 0\n1179 1180 1181 0\n1182 1183 1184 0\n1185 1186 1187 0\n1188 1189 1190 0\n1191 1192 1193 0\n1194 1195 1196 0\n1197 1198 1199 0\n1200 1201 1202 0\n1203 1204 1205 0\n1206 1207 1208 0\n1209 1210 1211 0\n1212 1213 1214 0\n1215 1216 1217 0\n1218 1219 1220 0\n1221 1222 1223 0\n1224 1225 1226 0\n1227 1228 1229 0\n1230 1231 1232 0\n1233 1234 1235 0\n1236 1237 1238 0\n1239 1240 1241 0\n1242 1243 1244 0\n1245 1246 1247 0\n1248 1249 1250 0\n1251 1252 1253 0\n1254 1255 1256 0\n1257 1258 1259 0\n1260 1261 1262 0\n1263 1264 1265 0\n1266 1267 1268 0\n1269 1270 1271 0\n1272 1273 1274 0\n1275 1276 1277 0\n1278 1279 1280 0\n1281 1282 1283 0\n1284 1285 1286 0\n1287 1288 1289 0\n1290 1291 1292 0\n1293 1294 1295 0\n1296 1297 1298 0\n1299 1300 1301 0\n1302 1303 1304 0\n1305 1306 1307 0\n1308 1309 1310 0\n1311 1312 1313 0\n1314 1315 1316 0\n1317 1318 1319 0\n1320 1321 1322 0\n1323 1324 1325 0\n1326 1327 1328 0\n1329 1330 1331 0\n1332 1333 1334 0\n1335 1336 1337 0\n1338 1339 1340 0\n1341 1342 1343 0\n1344 1345 1346 0\n1347 1348 1349 0\n1350 1351 1352 0\n1353 1354 1355 0\n1356 1357 1358 0\n1359 1360 1361 0\n1362 1363 1364 0\n1365 1366 1367 0\n1368 1369 1370 0\n1371 1372 1373 0\n1374 1375 1376 0\n1377 1378 1379 0\n1380 1381 1382 0\n1383 1384 1385 0\n1386 1387 1388 0\n1389 1390 1391 0\n1392 1393 1394 0\n1395 1396 1397 0\n1398 1399 1400 0\n1401 1402 1403 0\n1404 1405 1406 0\n1407 1408 1409 0\n1410 1411 1412 0\n1413 1414 1415 0\n1416 1417 1418 0\n1419 1420 1421 0\n1422 1423 1424 0\n1425 1426 1427 0\n1428 1429 1430 0\n1431 1432 1433 0\n1434 1435 1436 0\n1437 1438 1439 0\n1440 1441 1442 0\n1443 1444 1445 0\n1446 1447 1448 0\n1449 1450 1451 0\n1452 1453 1454 0\n1455 1456 1457 0\n1458 1459 1460 0\n1461 1462 1463 0\n1464 1465 1466 0\n1467 1468 1469 0\n1470 1471 1472 0\n1473 1474 1475 0\n1476 1477 1478 0\n1479 1480 1481 0\n1482 1483 1484 0\n1485 1486 1487 0\n1488 1489 1490 0\n1491 1492 1493 0\n1494 1495 1496 0\n1497 1498 1499 0\n1500 1501 1502 0\n1503 1504 1505 0\n1506 1507 1508 0\n1509 1510 1511 0\n1512 1513 1514 0\n1515 1516 1517 0\n1518 1519 1520 0\n1521 1522 1523 0\n1524 1525 1526 0\n1527 1528 1529 0\n1530 1531 1532 0\n1533 1534 1535 0\n1536 1537 1538 0\n1539 1540 1541 0\n1542 1543 1544 0\n1545 1546 1547 0\n1548 1549 1550 0\n1551 1552 1553 0\n1554 1555 1556 0\n1557 1558 1559 0\n1560 1561 1562 0\n1563 1564 1565 0\n1566 1567 1568 0\n1569 1570 1571 0\n1572 1573 1574 0\n1575 1576 1577 0\n1578 1579 1580 0\n1581 1582 1583 0\n1584 1585 1586 0\n1587 1588 1589 0\n1590 1591 1592 0\n1593 1594 1595 0\n1596 1597 1598 0\n1599 1600 1601 0\n1602 1603 1604 0\n1605 1606 1607 0\n1608 1609 1610 0\n1611 1612 1613 0\n1614 1615 1616 0\n1617 1618 1619 0\n1620 1621 1622 0\n1623 1624 1625 0\n1626 1627 1628 0\n1629 1630 1631 0\n1632 1633 1634 0\n1635 1636 1637 0\n1638 1639 1640 0\n1641 1642 1643 0\n1644 1645 1646 0\n1647 1648 1649 0\n1650 1651 1652 0\n1653 1654 1655 0\n1656 1657 1658 0\n1659 1660 1661 0\n1662 1663 1664 0\n1665 1666 1667 0\n1668 1669 1670 0\n1671 1672 1673 0\n1674 1675 1676 0\n1677 1678 1679 0\n1680 1681 1682 0\n1683 1684 1685 0\n1686 1687 1688 0\n1689 1690 1691 0\n1692 1693 1694 0\n1695 1696 1697 0\n1698 1699 1700 0\n1701 1702 1703 0\n1704 1705 1706 0\n1707 1708 1709 0\n1710 1711 1712 0\n1713 1714 1715 0\n1716 1717 1718 0\n1719 1720 1721 0\n1722 1723 1724 0\n1725 1726 1727 0\n1728 1729 1730 0\n1731 1732 1733 0\n1734 1735 1736 0\n1737 1738 1739 0\n1740 1741 1742 0\n1743 1744 1745 0\n1746 1747 1748 0\n1749 1750 1751 0\n1752 1753 1754 0\n1755 1756 1757 0\n1758 1759 1760 0\n1761 1762 1763 0\n1764 1765 1766 0\n1767 1768 1769 0\n1770 1771 1772 0\n1773 1774 1775 0\n1776 1777 1778 0\n1779 1780 1781 0\n1782 1783 1784 0\n1785 1786 1787 0\n1788 1789 1790 0\n1791 1792 1793 0\n1794 1795 1796 0\n1797 1798 1799 0\n1800 1801 1802 0\n1803 1804 1805 0\n1806 1807 1808 0\n1809 1810 1811 0\n1812 1813 1814 0\n1815 1816 1817 0\n1818 1819 1820 0\n1821 1822 1823 0\n1824 1825 1826 0\n1827 1828 1829 0\n1830 1831 1832 0\n1833 1834 1835 0\n1836 1837 1838 0\n1839 1840 1841 0\n1842 1843 1844 0\n1845 1846 1847 0\n1848 1849 1850 0\n1851 1852 1853 0\n1854 1855 1856 0\n1857 1858 1859 0\n1860 1861 1862 0\n1863 1864 1865 0\n1866 1867 1868 0\n1869 1870 1871 0\n1872 1873 1874 0\n1875 1876 1877 0\n1878 1879 1880 0\n1881 1882 1883 0\n1884 1885 1886 0\n1887 1888 1889 0\n1890 1891 1892 0\n1893 1894 1895 0\n1896 1897 1898 0\n1899 1900 1901 0\n1902 1903 1904 0\n1905 1906 1907 0\n1908 1909 1910 0\n1911 1912 1913 0\n1914 1915 1916 0\n1917 1918 1919 0\n1920 1921 1922 0\n1923 1924 1925 0\n1926 1927 1928 0\n1929 1930 1931 0\n1932 1933 1934 0\n1935 1936 1937 0\n1938 1939 1940 0\n1941 1942 1943 0\n1944 1945 1946 0\n1947 1948 1949 0\n1950 1951 1952 0\n1953 1954 1955 0\n1956 1957 1958 0\n1959 1960 1961 0\n1962 1963 1964 0\n1965 1966 1967 0\n1968 1969 1970 0\n1971 1972 1973 0\n1974 1975 1976 0\n1977 1978 1979 0\n1980 1981 1982 0\n1983 1984 1985 0\n1986 1987 1988 0\n1989 1990 1991 0\n1992 1993 1994 0\n1995 1996 1997 0\n1998 1999 2000 0\n2001 2002 2003 0\n2004 2005 2006 0\n2007 2008 2009 0\n2010 2011 2012 0\n2013 2014 2015 0\n2016 2017 2018 0\n2019 2020 2021 0\n2022 2023 2024 0\n2025 2026 2027 0\n2028 2029 2030 0\n2031 2032 2033 0\n2034 2035 2036 0\n2037 2038 2039 0\n2040 2041 2042 0\n2043 2044 2045 0\n2046 2047 2048 0\n2049 2050 2051 0\n2052 2053 2054 0\n2055 2056 2057 0\n2058 2059 2060 0\n2061 2062 2063 0\n2064 2065 2066 0\n2067 2068 2069 0\n2070 2071 2072 0\n2073 2074 2075 0\n2076 2077 2078 0\n2079 2080 2081 0\n2082 2083 2084 0\n2085 2086 2087 0\n2088 2089 2090 0\n2091 2092 2093 0\n2094 2095 2096 0\n2097 2098 2099 0\n2100 2101 2102 0\n2103 2104 2105 0\n2106 2107 2108 0\n2109 2110 2111 0\n2112 2113 2114 0\n2115 2116 2117 0\n2118 2119 2120 0\n2121 2122 2123 0\n2124 2125 2126 0\n2127 2128 2129 0\n2130 2131 2132 0\n2133 2134 2135 0\n2136 2137 2138 0\n2139 2140 2141 0\n2142 2143 2144 0\n2145 2146 2147 0\n2148 2149 2150 0\n2151 2152 2153 0\n2154 2155 2156 0\n2157 2158 2159 0\n2160 2161 2162 0\n2163 2164 2165 0\n2166 2167 2168 0\n2169 2170 2171 0\n2172 2173 2174 0\n2175 2176 2177 0\n2178 2179 2180 0\n2181 2182 2183 0\n2184 2185 2186 0\n2187 2188 2189 0\n2190 2191 2192 0\n2193 2194 2195 0\n2196 2197 2198 0\n2199 2200 2201 0\n2202 2203 2204 0\n2205 2206 2207 0\n2208 2209 2210 0\n2211 2212 2213 0\n2214 2215 2216 0\n2217 2218 2219 0\n2220 2221 2222 0\n2223 2224 2225 0\n2226 2227 2228 0\n2229 2230 2231 0\n2232 2233 2234 0\n2235 2236 2237 0\nRoot -1 -9.838853473897685e-18 -0.04431025683879852 0.23104633390903473 -1.6585495383324318e-16 0.2530556917190552 -0.17407599091529846 0.0\nHead -1 8.292747029917669e-17 0.37347212433815 -0.2658616006374359 -7.519695131416642e-17 0.6613430380821228 -0.45259764790534973 0.0\nFootR -1 0.23737645149230957 -0.028485145419836044 0.5783365368843079 0.27913710474967957 0.3604905307292938 0.7608526945114136 0.0\nArmL -1 0.24421437084674835 0.25900402665138245 -0.11653183400630951 0.48079705238342285 0.16953438520431519 0.0747784823179245 0.0\nFootL -1 -0.22638681530952454 -0.028485145419836044 0.5761386156082153 -0.26814746856689453 0.3604905307292938 0.758654773235321 0.0\nArmR -1 -0.23322473466396332 0.25900402665138245 -0.11872977018356323 -0.4698074162006378 0.16953438520431519 0.07258054614067078 0.0\nRoot\nHead\nFootR\nArmL\nFootL\nArmR\n"
  },
  {
    "path": "data/models/chamberpot.dymdl",
    "content": "DYMDLv1 984 480 1 1 0\nMaterial\n0.7622222304344177 2.4000000953674316 1.297777771949768 0.4286935031414032 0.5113681554794312 0.7447736859321594 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 2.487499952316284 1.23929762840271 0.2468031793832779 0.8685262799263 0.4297616481781006 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.4324073791503906 0.0 0.868495762348175 0.49562060832977295 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.5 0.0 0.5102694630622864 0.8599810600280762 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 2.487499952316284 1.23929762840271 0.2468031793832779 0.8685262799263 0.4297616481781006 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 1.1976406574249268 -0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.3842592239379883 0.0 0.7103183269500732 -0.7038483619689941 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.4324073791503906 0.0 0.868495762348175 0.49562060832977295 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 1.1976406574249268 -0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 2.4000000953674316 1.2112592458724976 -0.491195410490036 -0.17761772871017456 -0.8527176976203918 0.4336108863353729 0.45609670877456665 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.399999976158142 0.0 -0.17703787982463837 -0.9841914176940918 0.36538827419281006 0.5037634968757629 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.3842592239379883 0.0 0.7103183269500732 -0.7038483619689941 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 2.4000000953674316 0.7622222900390625 0.7447736859321594 0.5113681554794312 0.4286935031414032 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 0.7278752326965332 0.4297616481781006 0.8685262799263 0.2468031793832779 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 2.487499952316284 1.23929762840271 0.2468031793832779 0.8685262799263 0.4297616481781006 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 2.4000000953674316 1.297777771949768 0.4286935031414032 0.5113681554794312 0.7447736859321594 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 0.7278752326965332 0.4297616481781006 0.8685262799263 0.2468031793832779 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 0.7034087777137756 -0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 1.1976406574249268 -0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 2.487499952316284 1.23929762840271 0.2468031793832779 0.8685262799263 0.4297616481781006 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 0.7034087777137756 -0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 2.4000000953674316 0.7114074230194092 -0.8527176976203918 -0.17761772871017456 -0.491195410490036 0.498710572719574 0.43980515003204346 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 2.4000000953674316 1.2112592458724976 -0.491195410490036 -0.17761772871017456 -0.8527176976203918 0.4336108863353729 0.45609670877456665 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 1.1976406574249268 -0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 2.4000000953674316 -0.0 0.8599810600280762 0.5102694630622864 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 2.487499952316284 -0.0 0.49562060832977295 0.868495762348175 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 0.7278752326965332 0.4297616481781006 0.8685262799263 0.2468031793832779 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 2.4000000953674316 0.7622222900390625 0.7447736859321594 0.5113681554794312 0.4286935031414032 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 2.487499952316284 -0.0 0.49562060832977295 0.868495762348175 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 2.487499952316284 -0.0 -0.7038483619689941 0.7103183269500732 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 0.7034087777137756 -0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 0.7278752326965332 0.4297616481781006 0.8685262799263 0.2468031793832779 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 2.487499952316284 -0.0 -0.7038483619689941 0.7103183269500732 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.399999976158142 2.4000000953674316 -0.0 -0.9841914176940918 -0.17703787982463837 -0.0 0.5648702383041382 0.451926052570343 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 2.4000000953674316 0.7114074230194092 -0.8527176976203918 -0.17761772871017456 -0.491195410490036 0.498710572719574 0.43980515003204346 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 0.7034087777137756 -0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 2.4000000953674316 0.7622222304344177 -0.7447736859321594 0.5113681554794312 0.4286935031414032 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 0.7278751730918884 -0.4297616481781006 0.8685262799263 0.2468031793832779 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 2.487499952316284 -0.0 -0.49562060832977295 0.868495762348175 -0.0 0.09706264734268188 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.4000000953674316 -0.0 -0.8599810600280762 0.5102694630622864 -0.0 0.09257018566131592 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 0.7278751730918884 -0.4297616481781006 0.8685262799263 0.2468031793832779 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 0.7034087777137756 0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 2.487499952316284 -0.0 0.7038483619689941 0.7103183269500732 -0.0 0.09843429923057556 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 2.487499952316284 -0.0 -0.49562060832977295 0.868495762348175 -0.0 0.09706264734268188 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 0.7034087777137756 0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 2.4000000953674316 0.7114074230194092 0.8527176976203918 -0.17761772871017456 -0.491195410490036 0.2139941155910492 0.6759850978851318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.399999976158142 2.4000000953674316 -0.0 0.9841914176940918 -0.17703787982463837 -0.0 0.0947655737400055 0.7644467353820801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 2.487499952316284 -0.0 0.7038483619689941 0.7103183269500732 -0.0 0.09843429923057556 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 2.4000000953674316 1.2977778911590576 -0.4286935031414032 0.5113681554794312 0.7447736859321594 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 2.487499952316284 1.23929762840271 -0.2468031793832779 0.8685262799263 0.4297616481781006 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 0.7278751730918884 -0.4297616481781006 0.8685262799263 0.2468031793832779 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 2.4000000953674316 0.7622222304344177 -0.7447736859321594 0.5113681554794312 0.4286935031414032 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 2.487499952316284 1.23929762840271 -0.2468031793832779 0.8685262799263 0.4297616481781006 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 1.1976406574249268 0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 0.7034087777137756 0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 0.7278751730918884 -0.4297616481781006 0.8685262799263 0.2468031793832779 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 1.1976406574249268 0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 2.4000000953674316 1.2112592458724976 0.491195410490036 -0.17761772871017456 -0.8527176976203918 0.2941329777240753 0.5810052156448364 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 2.4000000953674316 0.7114074230194092 0.8527176976203918 -0.17761772871017456 -0.491195410490036 0.2139941155910492 0.6759850978851318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 0.7034087777137756 0.6093020439147949 0.7112033367156982 -0.3505661189556122 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.5 0.0 0.5102694630622864 0.8599810600280762 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.4324073791503906 0.0 0.868495762348175 0.49562060832977295 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 2.487499952316284 1.23929762840271 -0.2468031793832779 0.8685262799263 0.4297616481781006 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 2.4000000953674316 1.2977778911590576 -0.4286935031414032 0.5113681554794312 0.7447736859321594 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.4324073791503906 0.0 0.868495762348175 0.49562060832977295 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.3842592239379883 0.0 0.7103183269500732 -0.7038483619689941 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 1.1976406574249268 0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 2.487499952316284 1.23929762840271 -0.2468031793832779 0.8685262799263 0.4297616481781006 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 1.3842592239379883 0.0 0.7103183269500732 -0.7038483619689941 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.399999976158142 0.0 -0.17703787982463837 -0.9841914176940918 0.36538827419281006 0.5037634968757629 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 2.4000000953674316 1.2112592458724976 0.491195410490036 -0.17761772871017456 -0.8527176976203918 0.2941329777240753 0.5810052156448364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 1.1976406574249268 0.3505661189556122 0.7112033367156982 -0.6093020439147949 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 2.4000000953674316 -1.297777771949768 -0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 2.487499952316284 -1.23929762840271 -0.2468031793832779 0.8685262799263 -0.4297616481781006 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.4324073791503906 0.0 0.868495762348175 -0.49562060832977295 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.5 0.0 0.5102694630622864 -0.8599810600280762 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 2.487499952316284 -1.23929762840271 -0.2468031793832779 0.8685262799263 -0.4297616481781006 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 -1.1976406574249268 0.3505661189556122 0.7112033367156982 0.6093020439147949 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.3842592239379883 0.0 0.7103183269500732 0.7038483619689941 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.4324073791503906 0.0 0.868495762348175 -0.49562060832977295 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 -1.1976406574249268 0.3505661189556122 0.7112033367156982 0.6093020439147949 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 2.4000000953674316 -1.2112592458724976 0.491195410490036 -0.17761772871017456 0.8527176976203918 0.829383134841919 0.7043319940567017 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.399999976158142 0.0 -0.17703787982463837 0.9841914176940918 0.7504168748855591 0.6200130581855774 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.3842592239379883 0.0 0.7103183269500732 0.7038483619689941 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 2.4000000953674316 -0.7622222900390625 -0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 -0.7278752326965332 -0.4297616481781006 0.8685262799263 -0.2468031793832779 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 2.487499952316284 -1.23929762840271 -0.2468031793832779 0.8685262799263 -0.4297616481781006 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 2.4000000953674316 -1.297777771949768 -0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 -0.7278752326965332 -0.4297616481781006 0.8685262799263 -0.2468031793832779 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 -0.7034087777137756 0.6093020439147949 0.7112033367156982 0.3505661189556122 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 -1.1976406574249268 0.3505661189556122 0.7112033367156982 0.6093020439147949 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 2.487499952316284 -1.23929762840271 -0.2468031793832779 0.8685262799263 -0.4297616481781006 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 -0.7034087777137756 0.6093020439147949 0.7112033367156982 0.3505661189556122 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 2.4000000953674316 -0.7114074230194092 0.8527176976203918 -0.17761772871017456 0.491195410490036 0.9410111904144287 0.7708781361579895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 2.4000000953674316 -1.2112592458724976 0.491195410490036 -0.17761772871017456 0.8527176976203918 0.829383134841919 0.7043319940567017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 2.487499952316284 -1.1976406574249268 0.3505661189556122 0.7112033367156982 0.6093020439147949 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.4000000953674316 -0.0 -0.8599810600280762 0.5102694630622864 -0.0 1.092570185661316 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 2.487499952316284 -0.0 -0.49562060832977295 0.868495762348175 -0.0 1.097062587738037 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 -0.7278752326965332 -0.4297616481781006 0.8685262799263 -0.2468031793832779 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 2.4000000953674316 -0.7622222900390625 -0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 2.487499952316284 -0.0 -0.49562060832977295 0.868495762348175 -0.0 1.097062587738037 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 2.487499952316284 -0.0 0.7038483619689941 0.7103183269500732 -0.0 1.098434329032898 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 -0.7034087777137756 0.6093020439147949 0.7112033367156982 0.3505661189556122 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 2.487499952316284 -0.7278752326965332 -0.4297616481781006 0.8685262799263 -0.2468031793832779 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 2.487499952316284 -0.0 0.7038483619689941 0.7103183269500732 -0.0 1.098434329032898 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.399999976158142 2.4000000953674316 -0.0 0.9841914176940918 -0.17703787982463837 -0.0 1.094765543937683 0.7644467353820801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 2.4000000953674316 -0.7114074230194092 0.8527176976203918 -0.17761772871017456 0.491195410490036 0.9410111904144287 0.7708781361579895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 2.487499952316284 -0.7034087777137756 0.6093020439147949 0.7112033367156982 0.3505661189556122 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 2.4000000953674316 -0.7622222304344177 0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 -0.7278751730918884 0.4297616481781006 0.8685262799263 -0.2468031793832779 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 2.487499952316284 -0.0 0.49562060832977295 0.868495762348175 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 2.4000000953674316 -0.0 0.8599810600280762 0.5102694630622864 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 -0.7278751730918884 0.4297616481781006 0.8685262799263 -0.2468031793832779 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 -0.7034087777137756 -0.6093020439147949 0.7112033367156982 0.3505661189556122 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 2.487499952316284 -0.0 -0.7038483619689941 0.7103183269500732 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 2.487499952316284 -0.0 0.49562060832977295 0.868495762348175 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 -0.7034087777137756 -0.6093020439147949 0.7112033367156982 0.3505661189556122 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 2.4000000953674316 -0.7114074230194092 -0.8527176976203918 -0.17761772871017456 0.491195410490036 0.6279190182685852 0.48933225870132446 0 1.0 0 0.0 0 0.0 0 0.0\n1.399999976158142 2.4000000953674316 -0.0 -0.9841914176940918 -0.17703787982463837 -0.0 0.5648702383041382 0.451926052570343 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 2.487499952316284 -0.0 -0.7038483619689941 0.7103183269500732 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 2.4000000953674316 -1.2977778911590576 0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 2.487499952316284 -1.23929762840271 0.2468031793832779 0.8685262799263 -0.4297616481781006 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 -0.7278751730918884 0.4297616481781006 0.8685262799263 -0.2468031793832779 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 2.4000000953674316 -0.7622222304344177 0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 2.487499952316284 -1.23929762840271 0.2468031793832779 0.8685262799263 -0.4297616481781006 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 -1.1976406574249268 -0.3505661189556122 0.7112033367156982 0.6093020439147949 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 -0.7034087777137756 -0.6093020439147949 0.7112033367156982 0.3505661189556122 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 2.487499952316284 -0.7278751730918884 0.4297616481781006 0.8685262799263 -0.2468031793832779 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 -1.1976406574249268 -0.3505661189556122 0.7112033367156982 0.6093020439147949 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 2.4000000953674316 -1.2112592458724976 -0.491195410490036 -0.17761772871017456 0.8527176976203918 0.6864795684814453 0.5451602935791016 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 2.4000000953674316 -0.7114074230194092 -0.8527176976203918 -0.17761772871017456 0.491195410490036 0.6279190182685852 0.48933225870132446 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 2.487499952316284 -0.7034087777137756 -0.6093020439147949 0.7112033367156982 0.3505661189556122 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.5 0.0 0.5102694630622864 -0.8599810600280762 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.4324073791503906 0.0 0.868495762348175 -0.49562060832977295 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 2.487499952316284 -1.23929762840271 0.2468031793832779 0.8685262799263 -0.4297616481781006 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 2.4000000953674316 -1.2977778911590576 0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.4324073791503906 0.0 0.868495762348175 -0.49562060832977295 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.3842592239379883 0.0 0.7103183269500732 0.7038483619689941 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 -1.1976406574249268 -0.3505661189556122 0.7112033367156982 0.6093020439147949 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 2.487499952316284 -1.23929762840271 0.2468031793832779 0.8685262799263 -0.4297616481781006 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.487499952316284 -1.3842592239379883 0.0 0.7103183269500732 0.7038483619689941 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.399999976158142 0.0 -0.17703787982463837 0.9841914176940918 0.7504168748855591 0.6200130581855774 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 2.4000000953674316 -1.2112592458724976 -0.491195410490036 -0.17761772871017456 0.8527176976203918 0.6864795684814453 0.5451602935791016 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 2.487499952316284 -1.1976406574249268 -0.3505661189556122 0.7112033367156982 0.6093020439147949 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 1.7303704023361206 0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 1.6662826538085938 0.4834742248058319 0.24756614863872528 0.8395947217941284 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 1.9259259700775146 0.0 0.2468642294406891 0.9690237045288086 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 2.0 0.0 -0.08410900831222534 0.9964293241500854 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 1.6662826538085938 0.4834742248058319 0.24756614863872528 0.8395947217941284 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.8777778148651123 1.5060631036758423 0.461378812789917 0.3803216516971588 0.8015075922012329 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 1.7407406568527222 0.0 0.3792840242385864 0.9252601861953735 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 1.9259259700775146 0.0 0.2468642294406891 0.9690237045288086 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.8777778148651123 1.5060631036758423 0.461378812789917 0.3803216516971588 0.8015075922012329 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 2.4000000953674316 1.297777771949768 0.4286935031414032 0.5113681554794312 0.7447736859321594 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.5 0.0 0.5102694630622864 0.8599810600280762 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 1.7407406568527222 0.0 0.3792840242385864 0.9252601861953735 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 1.0162962675094604 0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 0.9786556959152222 0.8395947217941284 0.24756614863872528 0.4834742248058319 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 1.6662826538085938 0.4834742248058319 0.24756614863872528 0.8395947217941284 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 1.7303704023361206 0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 0.9786556959152222 0.8395947217941284 0.24756614863872528 0.4834742248058319 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777776956558228 0.8845542669296265 0.8015075922012329 0.3803216516971588 0.461378812789917 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.8777778148651123 1.5060631036758423 0.461378812789917 0.3803216516971588 0.8015075922012329 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 1.6662826538085938 0.4834742248058319 0.24756614863872528 0.8395947217941284 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777776956558228 0.8845542669296265 0.8015075922012329 0.3803216516971588 0.461378812789917 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 2.4000000953674316 0.7622222900390625 0.7447736859321594 0.5113681554794312 0.4286935031414032 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 2.4000000953674316 1.297777771949768 0.4286935031414032 0.5113681554794312 0.7447736859321594 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.8777778148651123 1.5060631036758423 0.461378812789917 0.3803216516971588 0.8015075922012329 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.8999999761581421 -0.0 0.9964293241500854 -0.08410900831222534 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 1.3722221851348877 -0.0 0.9690237045288086 0.2468642294406891 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 0.9786556959152222 0.8395947217941284 0.24756614863872528 0.4834742248058319 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 1.0162962675094604 0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 1.3722221851348877 -0.0 0.9690237045288086 0.2468642294406891 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.8777778148651123 -0.0 0.9252601861953735 0.3792840242385864 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777776956558228 0.8845542669296265 0.8015075922012329 0.3803216516971588 0.461378812789917 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 0.9786556959152222 0.8395947217941284 0.24756614863872528 0.4834742248058319 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.8777778148651123 -0.0 0.9252601861953735 0.3792840242385864 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 2.4000000953674316 -0.0 0.8599810600280762 0.5102694630622864 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 2.4000000953674316 0.7622222900390625 0.7447736859321594 0.5113681554794312 0.4286935031414032 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777776956558228 0.8845542669296265 0.8015075922012329 0.3803216516971588 0.461378812789917 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 1.0162962675094604 -0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 0.9786556959152222 -0.8395947217941284 0.24756614863872528 0.4834742248058319 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 1.3722221851348877 -0.0 -0.9690237045288086 0.2468642294406891 -0.0 0.06937173008918762 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 0.9786556959152222 -0.8395947217941284 0.24756614863872528 0.4834742248058319 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777778148651123 0.8845541477203369 -0.8015075922012329 0.3803216516971588 0.461378812789917 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.8777778148651123 -0.0 -0.9252601861953735 0.3792840242385864 -0.0 0.07755216956138611 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 1.3722221851348877 -0.0 -0.9690237045288086 0.2468642294406891 -0.0 0.06937173008918762 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777778148651123 0.8845541477203369 -0.8015075922012329 0.3803216516971588 0.461378812789917 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 2.4000000953674316 0.7622222304344177 -0.7447736859321594 0.5113681554794312 0.4286935031414032 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.4000000953674316 -0.0 -0.8599810600280762 0.5102694630622864 -0.0 0.09257018566131592 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.8777778148651123 -0.0 -0.9252601861953735 0.3792840242385864 -0.0 0.07755216956138611 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 1.7303704023361206 -0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 1.6662826538085938 -0.4834742248058319 0.24756614863872528 0.8395947217941284 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 0.9786556959152222 -0.8395947217941284 0.24756614863872528 0.4834742248058319 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 1.0162962675094604 -0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 1.6662826538085938 -0.4834742248058319 0.24756614863872528 0.8395947217941284 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.8777776956558228 1.5060631036758423 -0.461378812789917 0.3803216516971588 0.8015075922012329 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777778148651123 0.8845541477203369 -0.8015075922012329 0.3803216516971588 0.461378812789917 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 0.9786556959152222 -0.8395947217941284 0.24756614863872528 0.4834742248058319 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.8777776956558228 1.5060631036758423 -0.461378812789917 0.3803216516971588 0.8015075922012329 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 2.4000000953674316 1.2977778911590576 -0.4286935031414032 0.5113681554794312 0.7447736859321594 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 2.4000000953674316 0.7622222304344177 -0.7447736859321594 0.5113681554794312 0.4286935031414032 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777778148651123 0.8845541477203369 -0.8015075922012329 0.3803216516971588 0.461378812789917 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 2.0 0.0 -0.08410900831222534 0.9964293241500854 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 1.9259259700775146 0.0 0.2468642294406891 0.9690237045288086 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 1.6662826538085938 -0.4834742248058319 0.24756614863872528 0.8395947217941284 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 1.7303704023361206 -0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 1.9259259700775146 0.0 0.2468642294406891 0.9690237045288086 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 1.7407406568527222 0.0 0.3792840242385864 0.9252601861953735 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.8777776956558228 1.5060631036758423 -0.461378812789917 0.3803216516971588 0.8015075922012329 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 1.6662826538085938 -0.4834742248058319 0.24756614863872528 0.8395947217941284 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 1.7407406568527222 0.0 0.3792840242385864 0.9252601861953735 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.5 0.0 0.5102694630622864 0.8599810600280762 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 2.4000000953674316 1.2977778911590576 -0.4286935031414032 0.5113681554794312 0.7447736859321594 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.8777776956558228 1.5060631036758423 -0.461378812789917 0.3803216516971588 0.8015075922012329 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 -1.7303704023361206 -0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 -1.6662826538085938 -0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 -1.9259259700775146 0.0 0.2468642294406891 -0.9690237045288086 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 -2.0 0.0 -0.08410900831222534 -0.9964293241500854 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 -1.6662826538085938 -0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.8777778148651123 -1.5060631036758423 -0.461378812789917 0.3803216516971588 -0.8015075922012329 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 -1.7407406568527222 0.0 0.3792840242385864 -0.9252601861953735 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 -1.9259259700775146 0.0 0.2468642294406891 -0.9690237045288086 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.8777778148651123 -1.5060631036758423 -0.461378812789917 0.3803216516971588 -0.8015075922012329 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 2.4000000953674316 -1.297777771949768 -0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.5 0.0 0.5102694630622864 -0.8599810600280762 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 -1.7407406568527222 0.0 0.3792840242385864 -0.9252601861953735 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 -1.0162962675094604 -0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 -0.9786556959152222 -0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 -1.6662826538085938 -0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 -1.7303704023361206 -0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 -0.9786556959152222 -0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777776956558228 -0.8845542669296265 -0.8015075922012329 0.3803216516971588 -0.461378812789917 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.8777778148651123 -1.5060631036758423 -0.461378812789917 0.3803216516971588 -0.8015075922012329 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 1.3722221851348877 -1.6662826538085938 -0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777776956558228 -0.8845542669296265 -0.8015075922012329 0.3803216516971588 -0.461378812789917 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 2.4000000953674316 -0.7622222900390625 -0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 2.4000000953674316 -1.297777771949768 -0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.8777778148651123 -1.5060631036758423 -0.461378812789917 0.3803216516971588 -0.8015075922012329 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 1.0637041330337524 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 1.3722221851348877 -0.0 -0.9690237045288086 0.2468642294406891 -0.0 1.0693717002868652 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 -0.9786556959152222 -0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 -1.0162962675094604 -0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 1.3722221851348877 -0.0 -0.9690237045288086 0.2468642294406891 -0.0 1.0693717002868652 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.8777778148651123 -0.0 -0.9252601861953735 0.3792840242385864 -0.0 1.0775521993637085 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777776956558228 -0.8845542669296265 -0.8015075922012329 0.3803216516971588 -0.461378812789917 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 1.3722221851348877 -0.9786556959152222 -0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.8777778148651123 -0.0 -0.9252601861953735 0.3792840242385864 -0.0 1.0775521993637085 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.4000000953674316 -0.0 -0.8599810600280762 0.5102694630622864 -0.0 1.092570185661316 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 2.4000000953674316 -0.7622222900390625 -0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.8777776956558228 -0.8845542669296265 -0.8015075922012329 0.3803216516971588 -0.461378812789917 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 -1.0162962675094604 0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 -0.9786556959152222 0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 1.3722221851348877 -0.0 0.9690237045288086 0.2468642294406891 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.8999999761581421 -0.0 0.9964293241500854 -0.08410900831222534 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 -0.9786556959152222 0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777778148651123 -0.8845541477203369 0.8015075922012329 0.3803216516971588 -0.461378812789917 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.8777778148651123 -0.0 0.9252601861953735 0.3792840242385864 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 1.3722221851348877 -0.0 0.9690237045288086 0.2468642294406891 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777778148651123 -0.8845541477203369 0.8015075922012329 0.3803216516971588 -0.461378812789917 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 2.4000000953674316 -0.7622222304344177 0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 2.4000000953674316 -0.0 0.8599810600280762 0.5102694630622864 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.8777778148651123 -0.0 0.9252601861953735 0.3792840242385864 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 -1.7303704023361206 0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 -1.6662826538085938 0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 -0.9786556959152222 0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 -1.0162962675094604 0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 -1.6662826538085938 0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.8777776956558228 -1.5060631036758423 0.461378812789917 0.3803216516971588 -0.8015075922012329 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777778148651123 -0.8845541477203369 0.8015075922012329 0.3803216516971588 -0.461378812789917 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 1.3722221851348877 -0.9786556959152222 0.8395947217941284 0.24756614863872528 -0.4834742248058319 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.8777776956558228 -1.5060631036758423 0.461378812789917 0.3803216516971588 -0.8015075922012329 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 2.4000000953674316 -1.2977778911590576 0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 2.4000000953674316 -0.7622222304344177 0.7447736859321594 0.5113681554794312 -0.4286935031414032 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.8777778148651123 -0.8845541477203369 0.8015075922012329 0.3803216516971588 -0.461378812789917 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 -2.0 0.0 -0.08410900831222534 -0.9964293241500854 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 -1.9259259700775146 0.0 0.2468642294406891 -0.9690237045288086 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 -1.6662826538085938 0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 -1.7303704023361206 0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.3722221851348877 -1.9259259700775146 0.0 0.2468642294406891 -0.9690237045288086 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 -1.7407406568527222 0.0 0.3792840242385864 -0.9252601861953735 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.8777776956558228 -1.5060631036758423 0.461378812789917 0.3803216516971588 -0.8015075922012329 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 1.3722221851348877 -1.6662826538085938 0.4834742248058319 0.24756614863872528 -0.8395947217941284 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8777778148651123 -1.7407406568527222 0.0 0.3792840242385864 -0.9252601861953735 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.5 0.0 0.5102694630622864 -0.8599810600280762 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 2.4000000953674316 -1.2977778911590576 0.4286935031414032 0.5113681554794312 -0.7447736859321594 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.8777776956558228 -1.5060631036758423 0.461378812789917 0.3803216516971588 -0.8015075922012329 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.15000000596046448 1.2977778911590576 0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.277777761220932 1.4099314212799072 0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 1.6296296119689941 0.0 -0.7063204050064087 0.7078462839126587 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 1.5 0.0 -0.7099215388298035 0.7042451500892639 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.277777761220932 1.4099314212799072 0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.5222222208976746 1.618216872215271 0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 1.8703705072402954 0.0 -0.5105746388435364 0.8597979545593262 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 1.6296296119689941 0.0 -0.7063204050064087 0.7078462839126587 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.5222222208976746 1.618216872215271 0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 1.7303704023361206 0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 2.0 0.0 -0.08410900831222534 0.9964293241500854 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 1.8703705072402954 0.0 -0.5105746388435364 0.8597979545593262 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 0.7622222304344177 0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 0.828093409538269 0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.277777761220932 1.4099314212799072 0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.15000000596046448 1.2977778911590576 0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 0.828093409538269 0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 0.9504252076148987 0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.5222222208976746 1.618216872215271 0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.277777761220932 1.4099314212799072 0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 0.9504252076148987 0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 1.0162962675094604 0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 1.7303704023361206 0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.5222222208976746 1.618216872215271 0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.15000000596046448 -0.0 0.7042451500892639 -0.7099215388298035 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.277777761220932 -0.0 0.7078462839126587 -0.7063204050064087 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 0.828093409538269 0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 0.7622222304344177 0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.277777761220932 -0.0 0.7078462839126587 -0.7063204050064087 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.5222222208976746 -0.0 0.8597979545593262 -0.5105746388435364 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 0.9504252076148987 0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 0.828093409538269 0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.5222222208976746 -0.0 0.8597979545593262 -0.5105746388435364 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.8999999761581421 -0.0 0.9964293241500854 -0.08410900831222534 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 1.0162962675094604 0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 0.9504252076148987 0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 0.7622222900390625 -0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 0.8280932903289795 -0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.277777761220932 -0.0 -0.7078462839126587 -0.7063204050064087 -0.0 0.053547054529190063 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.15000000596046448 -0.0 -0.7042451500892639 -0.7099215388298035 -0.0 0.05043032765388489 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 0.8280932903289795 -0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 0.9504251480102539 -0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.5222222208976746 -0.0 -0.8597979545593262 -0.5105746388435364 -0.0 0.05861186981201172 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.277777761220932 -0.0 -0.7078462839126587 -0.7063204050064087 -0.0 0.053547054529190063 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 0.9504251480102539 -0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 1.0162962675094604 -0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.5222222208976746 -0.0 -0.8597979545593262 -0.5105746388435364 -0.0 0.05861186981201172 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 1.2977778911590576 -0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.277777761220932 1.4099314212799072 -0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 0.8280932903289795 -0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 0.7622222900390625 -0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.277777761220932 1.4099314212799072 -0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.5222222208976746 1.618216872215271 -0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 0.9504251480102539 -0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 0.8280932903289795 -0.6125370264053345 -0.7075105905532837 0.35239723324775696 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.5222222208976746 1.618216872215271 -0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 1.7303704023361206 -0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 1.0162962675094604 -0.8633686304092407 -0.08432263880968094 0.49742117524147034 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 0.9504251480102539 -0.7446821331977844 -0.5114597082138062 0.4287240207195282 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 1.5 0.0 -0.7099215388298035 0.7042451500892639 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 1.6296296119689941 0.0 -0.7063204050064087 0.7078462839126587 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.277777761220932 1.4099314212799072 -0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 1.2977778911590576 -0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 1.6296296119689941 0.0 -0.7063204050064087 0.7078462839126587 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 1.8703705072402954 0.0 -0.5105746388435364 0.8597979545593262 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.5222222208976746 1.618216872215271 -0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.277777761220932 1.4099314212799072 -0.35239723324775696 -0.7075105905532837 0.6125370264053345 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 1.8703705072402954 0.0 -0.5105746388435364 0.8597979545593262 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 2.0 0.0 -0.08410900831222534 0.9964293241500854 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 1.7303704023361206 -0.49742117524147034 -0.08432263880968094 0.8633686304092407 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.5222222208976746 1.618216872215271 -0.4287240207195282 -0.5114597082138062 0.7446821331977844 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 -1.2977778911590576 -0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.277777761220932 -1.4099314212799072 -0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 -1.6296296119689941 0.0 -0.7063204050064087 -0.7078462839126587 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 -1.5 0.0 -0.7099215388298035 -0.7042451500892639 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.277777761220932 -1.4099314212799072 -0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.5222222208976746 -1.618216872215271 -0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 -1.8703705072402954 0.0 -0.5105746388435364 -0.8597979545593262 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 -1.6296296119689941 0.0 -0.7063204050064087 -0.7078462839126587 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.5222222208976746 -1.618216872215271 -0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 -1.7303704023361206 -0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 -2.0 0.0 -0.08410900831222534 -0.9964293241500854 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 -1.8703705072402954 0.0 -0.5105746388435364 -0.8597979545593262 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 -0.7622222900390625 -0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 -0.828093409538269 -0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.277777761220932 -1.4099314212799072 -0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 -1.2977778911590576 -0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 -0.828093409538269 -0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 -0.9504252076148987 -0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.5222222208976746 -1.618216872215271 -0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.277777761220932 -1.4099314212799072 -0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 -0.9504252076148987 -0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 -1.0162962675094604 -0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.8999999761581421 -1.7303704023361206 -0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.5222222208976746 -1.618216872215271 -0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.15000000596046448 -0.0 -0.7042451500892639 -0.7099215388298035 -0.0 1.0504302978515625 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.277777761220932 -0.0 -0.7078462839126587 -0.7063204050064087 -0.0 1.0535470247268677 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 -0.828093409538269 -0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 -0.7622222900390625 -0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.277777761220932 -0.0 -0.7078462839126587 -0.7063204050064087 -0.0 1.0535470247268677 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.5222222208976746 -0.0 -0.8597979545593262 -0.5105746388435364 -0.0 1.0586118698120117 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 -0.9504252076148987 -0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.277777761220932 -0.828093409538269 -0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.5222222208976746 -0.0 -0.8597979545593262 -0.5105746388435364 -0.0 1.0586118698120117 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 1.0637041330337524 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.8999999761581421 -1.0162962675094604 -0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.5222222208976746 -0.9504252076148987 -0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 -0.7622222304344177 0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 -0.8280932903289795 0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.277777761220932 -0.0 0.7078462839126587 -0.7063204050064087 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.15000000596046448 -0.0 0.7042451500892639 -0.7099215388298035 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 -0.8280932903289795 0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 -0.9504251480102539 0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.5222222208976746 -0.0 0.8597979545593262 -0.5105746388435364 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.277777761220932 -0.0 0.7078462839126587 -0.7063204050064087 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 -0.9504251480102539 0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 -1.0162962675094604 0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.8999999761581421 -0.0 0.9964293241500854 -0.08410900831222534 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.5222222208976746 -0.0 0.8597979545593262 -0.5105746388435364 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.15000000596046448 -1.297777771949768 0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.277777761220932 -1.4099314212799072 0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 -0.8280932903289795 0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 -0.7622222304344177 0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.277777761220932 -1.4099314212799072 0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.5222222208976746 -1.618216872215271 0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 -0.9504251480102539 0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.277777761220932 -0.8280932903289795 0.6125370264053345 -0.7075105905532837 -0.35239723324775696 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.5222222208976746 -1.618216872215271 0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 -1.7303704023361206 0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.8999999761581421 -1.0162962675094604 0.8633686304092407 -0.08432263880968094 -0.49742117524147034 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.5222222208976746 -0.9504251480102539 0.7446821331977844 -0.5114597082138062 -0.4287240207195282 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 -1.5 0.0 -0.7099215388298035 -0.7042451500892639 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 -1.6296296119689941 0.0 -0.7063204050064087 -0.7078462839126587 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.277777761220932 -1.4099314212799072 0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.15000000596046448 -1.297777771949768 0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.277777761220932 -1.6296296119689941 0.0 -0.7063204050064087 -0.7078462839126587 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 -1.8703705072402954 0.0 -0.5105746388435364 -0.8597979545593262 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.5222222208976746 -1.618216872215271 0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.277777761220932 -1.4099314212799072 0.35239723324775696 -0.7075105905532837 -0.6125370264053345 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5222222208976746 -1.8703705072402954 0.0 -0.5105746388435364 -0.8597979545593262 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8999999761581421 -2.0 0.0 -0.08410900831222534 -0.9964293241500854 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.8999999761581421 -1.7303704023361206 0.49742117524147034 -0.08432263880968094 -0.8633686304092407 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.5222222208976746 -1.618216872215271 0.4287240207195282 -0.5114597082138062 -0.7446821331977844 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 0.20000001788139343 -0.6368907690048218 0.08239997923374176 0.766533374786377 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 0.20000001788139343 -0.37638476490974426 0.5426496267318726 0.7508773803710938 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 2.116666555404663 -0.0 -0.6290169954299927 0.7773674726486206 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.7999999523162842 -0.0 -0.9941404461860657 0.10788293182849884 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 0.20000001788139343 -0.37638476490974426 0.5426496267318726 0.7508773803710938 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 0.20000003278255463 -0.06952116638422012 0.6189764142036438 0.7822809815406799 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 2.2333333492279053 -0.0 -0.12900173664093018 0.9916379451751709 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 2.116666555404663 -0.0 -0.6290169954299927 0.7773674726486206 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 0.20000003278255463 -0.06952116638422012 0.6189764142036438 0.7822809815406799 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-1.525925874710083 2.191666841506958 0.20000001788139343 -0.013855403289198875 0.713858425617218 0.7000945806503296 0.11728531122207642 0.7034443616867065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.25 -0.0 -0.019409772008657455 0.999786376953125 -0.0 0.0880691409111023 0.730804443359375 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 2.2333333492279053 -0.0 -0.12900173664093018 0.9916379451751709 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 0.20000001788139343 0.4293344020843506 -0.07803583145141602 0.8997467160224915 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.999382734298706 0.20000001788139343 0.25894954800605774 -0.3909115791320801 0.8832361698150635 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 0.20000001788139343 -0.37638476490974426 0.5426496267318726 0.7508773803710938 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 0.20000001788139343 -0.6368907690048218 0.08239997923374176 0.766533374786377 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.999382734298706 0.20000001788139343 0.25894954800605774 -0.3909115791320801 0.8832361698150635 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728392601013184 0.20000003278255463 0.05697805806994438 -0.5788445472717285 0.8134098052978516 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 0.20000003278255463 -0.06952116638422012 0.6189764142036438 0.7822809815406799 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 0.20000001788139343 -0.37638476490974426 0.5426496267318726 0.7508773803710938 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728392601013184 0.20000003278255463 0.05697805806994438 -0.5788445472717285 0.8134098052978516 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 2.0833332538604736 0.20000001788139343 0.007477034814655781 -0.4998321533203125 0.8660542368888855 0.11214965581893921 0.6843823194503784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.525925874710083 2.191666841506958 0.20000001788139343 -0.013855403289198875 0.713858425617218 0.7000945806503296 0.11728531122207642 0.7034443616867065 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 0.20000003278255463 -0.06952116638422012 0.6189764142036438 0.7822809815406799 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.7999999523162842 -0.0 0.9759209156036377 -0.21799370646476746 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.9583333730697632 -0.0 0.48161259293556213 -0.8763695359230042 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.999382734298706 0.20000001788139343 0.25894954800605774 -0.3909115791320801 0.8832361698150635 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 0.20000001788139343 0.4293344020843506 -0.07803583145141602 0.8997467160224915 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.9583333730697632 -0.0 0.48161259293556213 -0.8763695359230042 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 2.0166666507720947 -0.0 0.08404797315597534 -0.9964598417282104 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728392601013184 0.20000003278255463 0.05697805806994438 -0.5788445472717285 0.8134098052978516 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.999382734298706 0.20000001788139343 0.25894954800605774 -0.3909115791320801 0.8832361698150635 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 2.0166666507720947 -0.0 0.08404797315597534 -0.9964598417282104 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600000023841858 2.0250000953674316 -0.0 0.014984588138759136 -0.9998779296875 -0.0 0.08127009868621826 0.6884005069732666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 2.0833332538604736 0.20000001788139343 0.007477034814655781 -0.4998321533203125 0.8660542368888855 0.11214965581893921 0.6843823194503784 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728392601013184 0.20000003278255463 0.05697805806994438 -0.5788445472717285 0.8134098052978516 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 -0.20000001788139343 0.4293344020843506 -0.07803583145141602 -0.8997467160224915 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.9993828535079956 -0.20000001788139343 0.25894954800605774 -0.3909115791320801 -0.8832361698150635 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.9583333730697632 -0.0 0.48161259293556213 -0.8763695359230042 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.7999999523162842 -0.0 0.9759209156036377 -0.21799370646476746 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.9993828535079956 -0.20000001788139343 0.25894954800605774 -0.3909115791320801 -0.8832361698150635 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728397369384766 -0.20000003278255463 0.05697805806994438 -0.5788445472717285 -0.8134098052978516 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 2.0166666507720947 -0.0 0.08404797315597534 -0.9964598417282104 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.9583333730697632 -0.0 0.48161259293556213 -0.8763695359230042 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728397369384766 -0.20000003278255463 0.05697805806994438 -0.5788445472717285 -0.8134098052978516 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 2.0833334922790527 -0.20000001788139343 0.007477034814655781 -0.4998321533203125 -0.8660542368888855 0.051914602518081665 0.7082343697547913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600000023841858 2.0250000953674316 -0.0 0.014984588138759136 -0.9998779296875 -0.0 0.08127009868621826 0.6884005069732666 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 2.0166666507720947 -0.0 0.08404797315597534 -0.9964598417282104 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 -0.20000001788139343 -0.6368907690048218 0.08239997923374176 -0.766533374786377 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 -0.20000001788139343 -0.37638476490974426 0.5426496267318726 -0.7508773803710938 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.9993828535079956 -0.20000001788139343 0.25894954800605774 -0.3909115791320801 -0.8832361698150635 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 -0.20000001788139343 0.4293344020843506 -0.07803583145141602 -0.8997467160224915 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 -0.20000001788139343 -0.37638476490974426 0.5426496267318726 -0.7508773803710938 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 -0.20000003278255463 -0.06952116638422012 0.6189764142036438 -0.7822809815406799 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728397369384766 -0.20000003278255463 0.05697805806994438 -0.5788445472717285 -0.8134098052978516 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.9993828535079956 -0.20000001788139343 0.25894954800605774 -0.3909115791320801 -0.8832361698150635 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 -0.20000003278255463 -0.06952116638422012 0.6189764142036438 -0.7822809815406799 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5259259939193726 2.191666841506958 -0.20000001788139343 -0.013855403289198875 0.713858425617218 -0.7000945806503296 0.0527951717376709 0.7290288209915161 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 2.0833334922790527 -0.20000001788139343 0.007477034814655781 -0.4998321533203125 -0.8660542368888855 0.051914602518081665 0.7082343697547913 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 2.0728397369384766 -0.20000003278255463 0.05697805806994438 -0.5788445472717285 -0.8134098052978516 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.7999999523162842 -0.0 -0.9941404461860657 0.10788293182849884 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 2.116666555404663 -0.0 -0.6290169954299927 0.7773674726486206 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 -0.20000001788139343 -0.37638476490974426 0.5426496267318726 -0.7508773803710938 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 -0.20000001788139343 -0.6368907690048218 0.08239997923374176 -0.766533374786377 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 2.116666555404663 -0.0 -0.6290169954299927 0.7773674726486206 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 2.2333333492279053 -0.0 -0.12900173664093018 0.9916379451751709 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 -0.20000003278255463 -0.06952116638422012 0.6189764142036438 -0.7822809815406799 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 2.0756173133850098 -0.20000001788139343 -0.37638476490974426 0.5426496267318726 -0.7508773803710938 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 2.2333333492279053 -0.0 -0.12900173664093018 0.9916379451751709 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 2.25 -0.0 -0.019409772008657455 0.999786376953125 -0.0 0.0880691409111023 0.730804443359375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5259259939193726 2.191666841506958 -0.20000001788139343 -0.013855403289198875 0.713858425617218 -0.7000945806503296 0.0527951717376709 0.7290288209915161 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 2.1771607398986816 -0.20000003278255463 -0.06952116638422012 0.6189764142036438 -0.7822809815406799 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.6777777671813965 0.20000001788139343 -0.4204840362071991 -0.7075716257095337 0.5678884387016296 0.07891842722892761 0.49934256076812744 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 1.0187243223190308 0.20000001788139343 -0.40256965160369873 -0.47849971055984497 0.7803277969360352 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.9611110687255859 -0.0 -0.6335337162017822 -0.773674726486206 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-1.899999976158142 0.6000000238418579 -0.0 -0.5108798742294312 -0.8596453666687012 -0.0 0.05969014763832092 0.49596208333969116 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 1.0187243223190308 0.20000001788139343 -0.40256965160369873 -0.47849971055984497 0.7803277969360352 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034979343414307 0.20000003278255463 -0.5496993660926819 -0.2930082082748413 0.7822504043579102 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 1.3638889789581299 -0.0 -0.8798180818557739 -0.4752342402935028 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.9611110687255859 -0.0 -0.6335337162017822 -0.773674726486206 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034979343414307 0.20000003278255463 -0.5496993660926819 -0.2930082082748413 0.7822504043579102 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 0.20000001788139343 -0.6368907690048218 0.08239997923374176 0.766533374786377 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.7999999523162842 -0.0 -0.9941404461860657 0.10788293182849884 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 1.3638889789581299 -0.0 -0.8798180818557739 -0.4752342402935028 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.8222221732139587 0.20000001788139343 0.2228156328201294 0.32773828506469727 0.9180883169174194 0.08077448606491089 0.5187610983848572 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257201433181763 0.20000001788139343 0.37754449248313904 0.39448225498199463 0.8377330899238586 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 1.0187243223190308 0.20000001788139343 -0.40256965160369873 -0.47849971055984497 0.7803277969360352 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.6777777671813965 0.20000001788139343 -0.4204840362071991 -0.7075716257095337 0.5678884387016296 0.07891842722892761 0.49934256076812744 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257201433181763 0.20000001788139343 0.37754449248313904 0.39448225498199463 0.8377330899238586 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 0.20000003278255463 0.4742576479911804 0.2224189043045044 0.8518021106719971 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034979343414307 0.20000003278255463 -0.5496993660926819 -0.2930082082748413 0.7822504043579102 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 1.0187243223190308 0.20000001788139343 -0.40256965160369873 -0.47849971055984497 0.7803277969360352 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 0.20000003278255463 0.4742576479911804 0.2224189043045044 0.8518021106719971 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 0.20000001788139343 0.4293344020843506 -0.07803583145141602 0.8997467160224915 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 0.20000001788139343 -0.6368907690048218 0.08239997923374176 0.766533374786377 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034979343414307 0.20000003278255463 -0.5496993660926819 -0.2930082082748413 0.7822504043579102 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 1.183333396911621 -0.0 0.7060151696205139 0.7081820368766785 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257201433181763 0.20000001788139343 0.37754449248313904 0.39448225498199463 0.8377330899238586 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.8222221732139587 0.20000001788139343 0.2228156328201294 0.32773828506469727 0.9180883169174194 0.08077448606491089 0.5187610983848572 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 1.183333396911621 -0.0 0.7060151696205139 0.7081820368766785 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.5166666507720947 -0.0 0.9093295335769653 0.41602832078933716 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 0.20000003278255463 0.4742576479911804 0.2224189043045044 0.8518021106719971 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257201433181763 0.20000001788139343 0.37754449248313904 0.39448225498199463 0.8377330899238586 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.5166666507720947 -0.0 0.9093295335769653 0.41602832078933716 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.7999999523162842 -0.0 0.9759209156036377 -0.21799370646476746 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 0.20000001788139343 0.4293344020843506 -0.07803583145141602 0.8997467160224915 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 0.20000003278255463 0.4742576479911804 0.2224189043045044 0.8518021106719971 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.8222222328186035 -0.20000001788139343 0.2228156328201294 0.32773828506469727 -0.9180883169174194 0.04449453949928284 0.5330513715744019 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257202625274658 -0.20000001788139343 0.37754449248313904 0.39448225498199463 -0.8377330899238586 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 1.183333396911621 -0.0 0.7060151696205139 0.7081820368766785 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.8999999761581421 -0.0 -0.8215277791023254 0.5701162815093994 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257202625274658 -0.20000001788139343 0.37754449248313904 0.39448225498199463 -0.8377330899238586 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 -0.20000003278255463 0.4742576479911804 0.2224189043045044 -0.8518021106719971 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.5166666507720947 -0.0 0.9093295335769653 0.41602832078933716 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 1.183333396911621 -0.0 0.7060151696205139 0.7081820368766785 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 -0.20000003278255463 0.4742576479911804 0.2224189043045044 -0.8518021106719971 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 -0.20000001788139343 0.4293344020843506 -0.07803583145141602 -0.8997467160224915 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.7999999523162842 -0.0 0.9759209156036377 -0.21799370646476746 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.5166666507720947 -0.0 0.9093295335769653 0.41602832078933716 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.925925850868225 0.6777777671813965 -0.20000001788139343 -0.4204840362071991 -0.7075716257095337 -0.5678884387016296 0.04253512620925903 0.5136716365814209 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 1.0187243223190308 -0.20000001788139343 -0.40256965160369873 -0.47849971055984497 -0.7803277969360352 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257202625274658 -0.20000001788139343 0.37754449248313904 0.39448225498199463 -0.8377330899238586 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.8222222328186035 -0.20000001788139343 0.2228156328201294 0.32773828506469727 -0.9180883169174194 0.04449453949928284 0.5330513715744019 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 1.0187243223190308 -0.20000001788139343 -0.40256965160369873 -0.47849971055984497 -0.7803277969360352 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034978151321411 -0.20000003278255463 -0.5496993660926819 -0.2930082082748413 -0.7822504043579102 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 -0.20000003278255463 0.4742576479911804 0.2224189043045044 -0.8518021106719971 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 1.1257202625274658 -0.20000001788139343 0.37754449248313904 0.39448225498199463 -0.8377330899238586 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034978151321411 -0.20000003278255463 -0.5496993660926819 -0.2930082082748413 -0.7822504043579102 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 -0.20000001788139343 -0.6368907690048218 0.08239997923374176 -0.766533374786377 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.7999999523162842 -0.20000001788139343 0.4293344020843506 -0.07803583145141602 -0.8997467160224915 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 1.477057695388794 -0.20000003278255463 0.4742576479911804 0.2224189043045044 -0.8518021106719971 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.899999976158142 0.6000000238418579 -0.0 -0.5108798742294312 -0.8596453666687012 -0.0 0.05969014763832092 0.49596208333969116 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.9611110687255859 -0.0 -0.6335337162017822 -0.773674726486206 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 1.0187243223190308 -0.20000001788139343 -0.40256965160369873 -0.47849971055984497 -0.7803277969360352 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-1.925925850868225 0.6777777671813965 -0.20000001788139343 -0.4204840362071991 -0.7075716257095337 -0.5678884387016296 0.04253512620925903 0.5136716365814209 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.9611110687255859 -0.0 -0.6335337162017822 -0.773674726486206 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 1.3638889789581299 -0.0 -0.8798180818557739 -0.4752342402935028 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034978151321411 -0.20000003278255463 -0.5496993660926819 -0.2930082082748413 -0.7822504043579102 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 1.0187243223190308 -0.20000001788139343 -0.40256965160369873 -0.47849971055984497 -0.7803277969360352 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 1.3638889789581299 -0.0 -0.8798180818557739 -0.4752342402935028 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.7999999523162842 -0.0 -0.9941404461860657 0.10788293182849884 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.7999999523162842 -0.20000001788139343 -0.6368907690048218 0.08239997923374176 -0.766533374786377 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 1.4034978151321411 -0.20000003278255463 -0.5496993660926819 -0.2930082082748413 -0.7822504043579102 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.700000047683716 0.17303703725337982 0.40870386362075806 0.5714285969734192 0.7116000652313232 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 0.20517970621585846 0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 0.2370370477437973 0.0 -0.40235602855682373 0.9154637455940247 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 0.20000000298023224 0.0 0.5705130100250244 0.8212835788726807 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 0.20517970621585846 0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 0.31422773003578186 0.47233498096466064 0.3231299817562103 0.8200323581695557 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 0.3629629611968994 0.0 0.3243812322616577 0.9458906650543213 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 0.2370370477437973 0.0 -0.40235602855682373 0.9154637455940247 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 0.31422773003578186 0.47233498096466064 0.3231299817562103 0.8200323581695557 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 0.3629629611968994 0.0 0.3243812322616577 0.9458906650543213 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.6999998092651367 0.10162962973117828 0.7116000652313232 0.5714285969734192 0.40870386362075806 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 0.12064746022224426 0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 0.20517970621585846 0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.700000047683716 0.17303703725337982 0.40870386362075806 0.5714285969734192 0.7116000652313232 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 0.12064746022224426 0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 0.18483401834964752 0.8200323581695557 0.3231299817562103 0.47233498096466064 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 0.31422773003578186 0.47233498096466064 0.3231299817562103 0.8200323581695557 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 0.20517970621585846 0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 0.18483401834964752 0.8200323581695557 0.3231299817562103 0.47233498096466064 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 0.31422773003578186 0.47233498096466064 0.3231299817562103 0.8200323581695557 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 2.700000047683716 -0.0 0.8212835788726807 0.5705130100250244 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 2.883333444595337 -0.0 0.9154637455940247 -0.40235602855682373 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 0.12064746022224426 0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.6999998092651367 0.10162962973117828 0.7116000652313232 0.5714285969734192 0.40870386362075806 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 2.883333444595337 -0.0 0.9154637455940247 -0.40235602855682373 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 3.066666603088379 -0.0 0.9458906650543213 0.3243812322616577 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 0.18483401834964752 0.8200323581695557 0.3231299817562103 0.47233498096466064 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 0.12064746022224426 0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 3.066666603088379 -0.0 0.9458906650543213 0.3243812322616577 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 0.18483401834964752 0.8200323581695557 0.3231299817562103 0.47233498096466064 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.700000047683716 0.10162962973117828 -0.7116000652313232 0.5714285969734192 0.40870386362075806 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 0.12064746022224426 -0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 2.883333444595337 -0.0 -0.9154637455940247 -0.40235602855682373 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 2.700000047683716 -0.0 -0.8212835788726807 0.5705130100250244 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 0.12064746022224426 -0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 0.18483401834964752 -0.8200323581695557 0.3231299817562103 0.47233498096466064 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 3.066666603088379 -0.0 -0.9458906650543213 0.3243812322616577 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 2.883333444595337 -0.0 -0.9154637455940247 -0.40235602855682373 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 0.18483401834964752 -0.8200323581695557 0.3231299817562103 0.47233498096466064 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 3.066666603088379 -0.0 -0.9458906650543213 0.3243812322616577 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.6999998092651367 0.17303703725337982 -0.40870386362075806 0.5714285969734192 0.7116000652313232 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 0.20517970621585846 -0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 0.12064746022224426 -0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.700000047683716 0.10162962973117828 -0.7116000652313232 0.5714285969734192 0.40870386362075806 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 0.20517970621585846 -0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 0.31422773003578186 -0.47233498096466064 0.3231299817562103 0.8200323581695557 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 0.18483401834964752 -0.8200323581695557 0.3231299817562103 0.47233498096466064 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 0.12064746022224426 -0.7930845022201538 -0.4041261076927185 0.45567187666893005 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 0.31422773003578186 -0.47233498096466064 0.3231299817562103 0.8200323581695557 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 0.18483401834964752 -0.8200323581695557 0.3231299817562103 0.47233498096466064 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 0.20000000298023224 0.0 0.5705130100250244 0.8212835788726807 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 0.2370370477437973 0.0 -0.40235602855682373 0.9154637455940247 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 0.20517970621585846 -0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.6999998092651367 0.17303703725337982 -0.40870386362075806 0.5714285969734192 0.7116000652313232 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 0.2370370477437973 0.0 -0.40235602855682373 0.9154637455940247 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 0.3629629611968994 0.0 0.3243812322616577 0.9458906650543213 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 0.31422773003578186 -0.47233498096466064 0.3231299817562103 0.8200323581695557 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 0.20517970621585846 -0.45567187666893005 -0.4041261076927185 0.7930845022201538 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 0.3629629611968994 0.0 0.3243812322616577 0.9458906650543213 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 0.31422773003578186 -0.47233498096466064 0.3231299817562103 0.8200323581695557 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.700000047683716 -0.17303703725337982 -0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 -0.20517970621585846 -0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 -0.2370370477437973 0.0 -0.40235602855682373 -0.9154637455940247 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 -0.20000000298023224 0.0 0.5705130100250244 -0.8212835788726807 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 -0.20517970621585846 -0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 -0.31422773003578186 -0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 -0.3629629611968994 0.0 0.3243812322616577 -0.9458906650543213 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 -0.2370370477437973 0.0 -0.40235602855682373 -0.9154637455940247 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 -0.31422773003578186 -0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 -0.3629629611968994 0.0 0.3243812322616577 -0.9458906650543213 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.6999998092651367 -0.10162962973117828 -0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 -0.12064746022224426 -0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 -0.20517970621585846 -0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.700000047683716 -0.17303703725337982 -0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 -0.12064746022224426 -0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 -0.18483401834964752 -0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 -0.31422773003578186 -0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 2.883333444595337 -0.20517970621585846 -0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 -0.18483401834964752 -0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 3.066666603088379 -0.31422773003578186 -0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 2.700000047683716 -0.0 -0.8212835788726807 0.5705130100250244 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 2.883333444595337 -0.0 -0.9154637455940247 -0.40235602855682373 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 -0.12064746022224426 -0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.6999998092651367 -0.10162962973117828 -0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 2.883333444595337 -0.0 -0.9154637455940247 -0.40235602855682373 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 3.066666603088379 -0.0 -0.9458906650543213 0.3243812322616577 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 -0.18483401834964752 -0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 2.883333444595337 -0.12064746022224426 -0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 3.066666603088379 -0.0 -0.9458906650543213 0.3243812322616577 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 3.066666603088379 -0.18483401834964752 -0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.700000047683716 -0.10162962973117828 0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 -0.12064746022224426 0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 2.883333444595337 -0.0 0.9154637455940247 -0.40235602855682373 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 2.700000047683716 -0.0 0.8212835788726807 0.5705130100250244 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 -0.12064746022224426 0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 -0.18483401834964752 0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 3.066666603088379 -0.0 0.9458906650543213 0.3243812322616577 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 2.883333444595337 -0.0 0.9154637455940247 -0.40235602855682373 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 -0.18483401834964752 0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 3.066666603088379 -0.0 0.9458906650543213 0.3243812322616577 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.6999998092651367 -0.17303703725337982 0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 -0.20517970621585846 0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 -0.12064746022224426 0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.700000047683716 -0.10162962973117828 0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 -0.20517970621585846 0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 -0.31422773003578186 0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 -0.18483401834964752 0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 2.883333444595337 -0.12064746022224426 0.7930845022201538 -0.4041261076927185 -0.45567187666893005 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 -0.31422773003578186 0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 3.066666603088379 -0.18483401834964752 0.8200323581695557 0.3231299817562103 -0.47233498096466064 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 -0.20000000298023224 0.0 0.5705130100250244 -0.8212835788726807 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 -0.2370370477437973 0.0 -0.40235602855682373 -0.9154637455940247 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 -0.20517970621585846 0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.6999998092651367 -0.17303703725337982 0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.883333444595337 -0.2370370477437973 0.0 -0.40235602855682373 -0.9154637455940247 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 -0.3629629611968994 0.0 0.3243812322616577 -0.9458906650543213 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 -0.31422773003578186 0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 2.883333444595337 -0.20517970621585846 0.45567187666893005 -0.4041261076927185 -0.7930845022201538 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.066666603088379 -0.3629629611968994 0.0 0.3243812322616577 -0.9458906650543213 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 3.1500000953674316 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 3.066666603088379 -0.31422773003578186 0.47233498096466064 0.3231299817562103 -0.8200323581695557 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 2.4000000953674316 1.124740719795227 0.20886868238449097 0.9084749817848206 0.36194953322410583 0.4359894394874573 0.460996150970459 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 0.9164553880691528 0.15491195023059845 0.9503769278526306 0.269753098487854 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 1.0592591762542725 0.0 0.9501632452011108 0.3116855323314667 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.2999999523162842 0.0 0.9079561829566956 0.4190496504306793 0.36910760402679443 0.5083151459693909 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 0.9164553880691528 0.15491195023059845 0.9503769278526306 0.269753098487854 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 0.496680349111557 0.10519730299711227 0.9774773120880127 0.1828058660030365 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 0.5740740895271301 0.0 0.9772942066192627 0.21173742413520813 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 1.0592591762542725 0.0 0.9501632452011108 0.3116855323314667 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 0.496680349111557 0.10519730299711227 0.9774773120880127 0.1828058660030365 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.700000047683716 0.17303703725337982 0.40870386362075806 0.5714285969734192 0.7116000652313232 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 0.20000000298023224 0.0 0.5705130100250244 0.8212835788726807 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 0.5740740895271301 0.0 0.9772942066192627 0.21173742413520813 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 2.4000000953674316 0.6605925559997559 0.36194953322410583 0.9084749817848206 0.20886868238449097 0.49968165159225464 0.4449015259742737 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 0.5382605791091919 0.269753098487854 0.9503769278526306 0.15491195023059845 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 0.9164553880691528 0.15491195023059845 0.9503769278526306 0.269753098487854 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 2.4000000953674316 1.124740719795227 0.20886868238449097 0.9084749817848206 0.36194953322410583 0.4359894394874573 0.460996150970459 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 0.5382605791091919 0.269753098487854 0.9503769278526306 0.15491195023059845 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 0.2917146682739258 0.1828058660030365 0.9774773120880127 0.10519730299711227 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 0.496680349111557 0.10519730299711227 0.9774773120880127 0.1828058660030365 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 0.9164553880691528 0.15491195023059845 0.9503769278526306 0.269753098487854 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 0.2917146682739258 0.1828058660030365 0.9774773120880127 0.10519730299711227 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.6999998092651367 0.10162962973117828 0.7116000652313232 0.5714285969734192 0.40870386362075806 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.700000047683716 0.17303703725337982 0.40870386362075806 0.5714285969734192 0.7116000652313232 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 0.496680349111557 0.10519730299711227 0.9774773120880127 0.1828058660030365 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n1.2999999523162842 2.4000000953674316 -0.0 0.4190496504306793 0.9079561829566956 -0.0 0.5643860697746277 0.45672929286956787 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 2.51111102104187 -0.0 0.3116855323314667 0.9501632452011108 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 0.5382605791091919 0.269753098487854 0.9503769278526306 0.15491195023059845 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 2.4000000953674316 0.6605925559997559 0.36194953322410583 0.9084749817848206 0.20886868238449097 0.49968165159225464 0.4449015259742737 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 2.51111102104187 -0.0 0.3116855323314667 0.9501632452011108 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 2.5888888835906982 -0.0 0.21173742413520813 0.9772942066192627 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 0.2917146682739258 0.1828058660030365 0.9774773120880127 0.10519730299711227 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 0.5382605791091919 0.269753098487854 0.9503769278526306 0.15491195023059845 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 2.5888888835906982 -0.0 0.21173742413520813 0.9772942066192627 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 2.700000047683716 -0.0 0.8212835788726807 0.5705130100250244 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.6999998092651367 0.10162962973117828 0.7116000652313232 0.5714285969734192 0.40870386362075806 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 0.2917146682739258 0.1828058660030365 0.9774773120880127 0.10519730299711227 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 2.4000000953674316 0.6605925559997559 -0.36194953322410583 0.9084749817848206 0.20886868238449097 0.2195276916027069 0.6834987998008728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 0.5382605791091919 -0.269753098487854 0.9503769278526306 0.15491195023059845 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 2.51111102104187 -0.0 -0.3116855323314667 0.9501632452011108 -0.0 0.11632069945335388 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2999999523162842 2.4000000953674316 -0.0 -0.4190496504306793 0.9079561829566956 -0.0 0.09754133224487305 0.776390016078949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 0.5382605791091919 -0.269753098487854 0.9503769278526306 0.15491195023059845 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 0.2917146682739258 -0.1828058660030365 0.9774773120880127 0.10519730299711227 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 2.5888888835906982 -0.0 -0.21173742413520813 0.9772942066192627 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 2.51111102104187 -0.0 -0.3116855323314667 0.9501632452011108 -0.0 0.11632069945335388 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 0.2917146682739258 -0.1828058660030365 0.9774773120880127 0.10519730299711227 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.700000047683716 0.10162962973117828 -0.7116000652313232 0.5714285969734192 0.40870386362075806 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 2.700000047683716 -0.0 -0.8212835788726807 0.5705130100250244 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 2.5888888835906982 -0.0 -0.21173742413520813 0.9772942066192627 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 2.4000000953674316 1.124740719795227 -0.20886868238449097 0.9084749817848206 0.36194953322410583 0.2990068793296814 0.5859890580177307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 0.9164553880691528 -0.15491195023059845 0.9503769278526306 0.269753098487854 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 0.5382605791091919 -0.269753098487854 0.9503769278526306 0.15491195023059845 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 2.4000000953674316 0.6605925559997559 -0.36194953322410583 0.9084749817848206 0.20886868238449097 0.2195276916027069 0.6834987998008728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 0.9164553880691528 -0.15491195023059845 0.9503769278526306 0.269753098487854 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 0.496680349111557 -0.10519730299711227 0.9774773120880127 0.1828058660030365 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 0.2917146682739258 -0.1828058660030365 0.9774773120880127 0.10519730299711227 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 0.5382605791091919 -0.269753098487854 0.9503769278526306 0.15491195023059845 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 0.496680349111557 -0.10519730299711227 0.9774773120880127 0.1828058660030365 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.6999998092651367 0.17303703725337982 -0.40870386362075806 0.5714285969734192 0.7116000652313232 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.700000047683716 0.10162962973117828 -0.7116000652313232 0.5714285969734192 0.40870386362075806 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 0.2917146682739258 -0.1828058660030365 0.9774773120880127 0.10519730299711227 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 1.2999999523162842 0.0 0.9079561829566956 0.4190496504306793 0.36910760402679443 0.5083151459693909 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 1.0592591762542725 0.0 0.9501632452011108 0.3116855323314667 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 0.9164553880691528 -0.15491195023059845 0.9503769278526306 0.269753098487854 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 2.4000000953674316 1.124740719795227 -0.20886868238449097 0.9084749817848206 0.36194953322410583 0.2990068793296814 0.5859890580177307 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 1.0592591762542725 0.0 0.9501632452011108 0.3116855323314667 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 0.5740740895271301 0.0 0.9772942066192627 0.21173742413520813 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 0.496680349111557 -0.10519730299711227 0.9774773120880127 0.1828058660030365 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 0.9164553880691528 -0.15491195023059845 0.9503769278526306 0.269753098487854 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 0.5740740895271301 0.0 0.9772942066192627 0.21173742413520813 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 0.20000000298023224 0.0 0.5705130100250244 0.8212835788726807 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.6999998092651367 0.17303703725337982 -0.40870386362075806 0.5714285969734192 0.7116000652313232 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 0.496680349111557 -0.10519730299711227 0.9774773120880127 0.1828058660030365 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 2.4000000953674316 -1.124740719795227 -0.20886868238449097 0.9084749817848206 -0.36194953322410583 0.8236000537872314 0.7096928954124451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 -0.9164553880691528 -0.15491195023059845 0.9503769278526306 -0.269753098487854 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 -1.0592591762542725 0.0 0.9501632452011108 -0.3116855323314667 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.2999999523162842 0.0 0.9079561829566956 -0.4190496504306793 0.7460972666740417 0.6234467029571533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 -0.9164553880691528 -0.15491195023059845 0.9503769278526306 -0.269753098487854 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 -0.496680349111557 -0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 -0.5740740895271301 0.0 0.9772942066192627 -0.21173742413520813 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 -1.0592591762542725 0.0 0.9501632452011108 -0.3116855323314667 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 -0.496680349111557 -0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.700000047683716 -0.17303703725337982 -0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 -0.20000000298023224 0.0 0.5705130100250244 -0.8212835788726807 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 -0.5740740895271301 0.0 0.9772942066192627 -0.21173742413520813 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 2.4000000953674316 -0.6605925559997559 -0.36194953322410583 0.9084749817848206 -0.20886868238449097 0.9360653162002563 0.7810214757919312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 -0.5382605791091919 -0.269753098487854 0.9503769278526306 -0.15491195023059845 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 -0.9164553880691528 -0.15491195023059845 0.9503769278526306 -0.269753098487854 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 2.4000000953674316 -1.124740719795227 -0.20886868238449097 0.9084749817848206 -0.36194953322410583 0.8236000537872314 0.7096928954124451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 -0.5382605791091919 -0.269753098487854 0.9503769278526306 -0.15491195023059845 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 -0.2917146682739258 -0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 -0.496680349111557 -0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 2.51111102104187 -0.9164553880691528 -0.15491195023059845 0.9503769278526306 -0.269753098487854 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 -0.2917146682739258 -0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.6999998092651367 -0.10162962973117828 -0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 2.700000047683716 -0.17303703725337982 -0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 2.5888888835906982 -0.496680349111557 -0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2999999523162842 2.4000000953674316 -0.0 -0.4190496504306793 0.9079561829566956 -0.0 1.097541332244873 0.776390016078949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 2.51111102104187 -0.0 -0.3116855323314667 0.9501632452011108 -0.0 1.1163207292556763 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 -0.5382605791091919 -0.269753098487854 0.9503769278526306 -0.15491195023059845 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 2.4000000953674316 -0.6605925559997559 -0.36194953322410583 0.9084749817848206 -0.20886868238449097 0.9360653162002563 0.7810214757919312 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 2.51111102104187 -0.0 -0.3116855323314667 0.9501632452011108 -0.0 1.1163207292556763 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 2.5888888835906982 -0.0 -0.21173742413520813 0.9772942066192627 -0.0 1.3661776781082153 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 -0.2917146682739258 -0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 2.51111102104187 -0.5382605791091919 -0.269753098487854 0.9503769278526306 -0.15491195023059845 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 2.5888888835906982 -0.0 -0.21173742413520813 0.9772942066192627 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 2.700000047683716 -0.0 -0.8212835788726807 0.5705130100250244 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 2.6999998092651367 -0.10162962973117828 -0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 2.5888888835906982 -0.2917146682739258 -0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 2.4000000953674316 -0.6605925559997559 0.36194953322410583 0.9084749817848206 -0.20886868238449097 0.6261259913444519 0.4934276342391968 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 -0.5382605791091919 0.269753098487854 0.9503769278526306 -0.15491195023059845 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 2.51111102104187 -0.0 0.3116855323314667 0.9501632452011108 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n1.2999999523162842 2.4000000953674316 -0.0 0.4190496504306793 0.9079561829566956 -0.0 0.5643860697746277 0.45672929286956787 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 -0.5382605791091919 0.269753098487854 0.9503769278526306 -0.15491195023059845 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 -0.2917146682739258 0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 2.5888888835906982 -0.0 0.21173742413520813 0.9772942066192627 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 2.51111102104187 -0.0 0.3116855323314667 0.9501632452011108 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 -0.2917146682739258 0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.700000047683716 -0.10162962973117828 0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 2.700000047683716 -0.0 0.8212835788726807 0.5705130100250244 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 2.5888888835906982 -0.0 0.21173742413520813 0.9772942066192627 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 2.4000000953674316 -1.124740719795227 0.20886868238449097 0.9084749817848206 -0.36194953322410583 0.6835131645202637 0.5485973954200745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 -0.9164553880691528 0.15491195023059845 0.9503769278526306 -0.269753098487854 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 -0.5382605791091919 0.269753098487854 0.9503769278526306 -0.15491195023059845 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 2.4000000953674316 -0.6605925559997559 0.36194953322410583 0.9084749817848206 -0.20886868238449097 0.6261259913444519 0.4934276342391968 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 -0.9164553880691528 0.15491195023059845 0.9503769278526306 -0.269753098487854 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 -0.496680349111557 0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 -0.2917146682739258 0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 2.51111102104187 -0.5382605791091919 0.269753098487854 0.9503769278526306 -0.15491195023059845 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 -0.496680349111557 0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.6999998092651367 -0.17303703725337982 0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 2.700000047683716 -0.10162962973117828 0.7116000652313232 0.5714285969734192 -0.40870386362075806 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 2.5888888835906982 -0.2917146682739258 0.1828058660030365 0.9774773120880127 -0.10519730299711227 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.4000000953674316 -1.2999999523162842 0.0 0.9079561829566956 -0.4190496504306793 0.7460972666740417 0.6234467029571533 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 -1.0592591762542725 0.0 0.9501632452011108 -0.3116855323314667 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 -0.9164553880691528 0.15491195023059845 0.9503769278526306 -0.269753098487854 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 2.4000000953674316 -1.124740719795227 0.20886868238449097 0.9084749817848206 -0.36194953322410583 0.6835131645202637 0.5485973954200745 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.51111102104187 -1.0592591762542725 0.0 0.9501632452011108 -0.3116855323314667 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 -0.5740740895271301 0.0 0.9772942066192627 -0.21173742413520813 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 -0.496680349111557 0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 2.51111102104187 -0.9164553880691528 0.15491195023059845 0.9503769278526306 -0.269753098487854 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.5888888835906982 -0.5740740895271301 0.0 0.9772942066192627 -0.21173742413520813 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.700000047683716 -0.20000000298023224 0.0 0.5705130100250244 -0.8212835788726807 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 2.6999998092651367 -0.17303703725337982 0.40870386362075806 0.5714285969734192 -0.7116000652313232 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 2.5888888835906982 -0.496680349111557 0.10519730299711227 0.9774773120880127 -0.1828058660030365 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.15000000596046448 -1.297777771949768 0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 -1.2352921962738037 0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 -1.4277777671813965 0.0 -0.8745994567871094 -0.4848170280456543 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 -1.5 0.0 -0.7099215388298035 -0.7042451500892639 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 -1.2352921962738037 0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 -0.8844115138053894 0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 -1.0222222805023193 0.0 -0.9960936307907104 -0.08819849044084549 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 -1.4277777671813965 0.0 -0.8745994567871094 -0.4848170280456543 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 -0.8844115138053894 0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 -1.0222222805023193 0.0 -0.9960936307907104 -0.08819849044084549 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 -0.7622222304344177 0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 -0.7255226373672485 0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 -1.2352921962738037 0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.15000000596046448 -1.297777771949768 0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 -0.7255226373672485 0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 -0.5194402933120728 0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 -0.8844115138053894 0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 -1.2352921962738037 0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 -0.5194402933120728 0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 -0.8844115138053894 0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.15000000596046448 -0.0 0.7042451500892639 -0.7099215388298035 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.07777778059244156 -0.0 0.4848170280456543 -0.8745994567871094 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 -0.7255226373672485 0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 -0.7622222304344177 0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.07777778059244156 -0.0 0.4848170280456543 -0.8745994567871094 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.02222222276031971 -0.0 0.08819849044084549 -0.9960936307907104 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 -0.5194402933120728 0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 -0.7255226373672485 0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.02222222276031971 -0.0 0.08819849044084549 -0.9960936307907104 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 -0.5194402933120728 0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 -0.7622222900390625 -0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 -0.7255226373672485 -0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.07777778059244156 -0.0 -0.4848170280456543 -0.8745994567871094 -0.0 1.0485270023345947 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.15000000596046448 -0.0 -0.7042451500892639 -0.7099215388298035 -0.0 1.0504302978515625 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 -0.7255226373672485 -0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 -0.5194402933120728 -0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.02222222276031971 -0.0 -0.08819849044084549 -0.9960936307907104 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.07777778059244156 -0.0 -0.4848170280456543 -0.8745994567871094 -0.0 1.0485270023345947 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 -0.5194402933120728 -0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.02222222276031971 -0.0 -0.08819849044084549 -0.9960936307907104 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 -1.2977778911590576 -0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 -1.2352921962738037 -0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 -0.7255226373672485 -0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 -0.7622222900390625 -0.6093935966491699 -0.7111117839813232 -0.3505966365337372 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 -1.2352921962738037 -0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 -0.8844115138053894 -0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 -0.5194402933120728 -0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 -0.7255226373672485 -0.4200262427330017 -0.8748130798339844 -0.24127933382987976 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 -0.8844115138053894 -0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 -0.5194402933120728 -0.07638783007860184 -0.9960936307907104 -0.04379406198859215 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 -1.5 0.0 -0.7099215388298035 -0.7042451500892639 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 -1.4277777671813965 0.0 -0.8745994567871094 -0.4848170280456543 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 -1.2352921962738037 -0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 -1.2977778911590576 -0.3505966365337372 -0.7111117839813232 -0.6093935966491699 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 -1.4277777671813965 0.0 -0.8745994567871094 -0.4848170280456543 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 -1.0222222805023193 0.0 -0.9960936307907104 -0.08819849044084549 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 -0.8844115138053894 -0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 -1.2352921962738037 -0.24127933382987976 -0.8748130798339844 -0.4200262427330017 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 -1.0222222805023193 0.0 -0.9960936307907104 -0.08819849044084549 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 -0.8844115138053894 -0.04379406198859215 -0.9960936307907104 -0.07638783007860184 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 1.2977778911590576 -0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 1.2352921962738037 -0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 1.4277777671813965 0.0 -0.8745994567871094 0.4848170280456543 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 1.5 0.0 -0.7099215388298035 0.7042451500892639 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 1.2352921962738037 -0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 0.8844115138053894 -0.04379406198859215 -0.9960936307907104 0.07638783007860184 0.1950553059577942 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 1.0222222805023193 0.0 -0.9960936307907104 0.08819849044084549 0.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 1.4277777671813965 0.0 -0.8745994567871094 0.4848170280456543 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 0.8844115138053894 -0.04379406198859215 -0.9960936307907104 0.07638783007860184 1.1950552463531494 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 1.0222222805023193 0.0 -0.9960936307907104 0.08819849044084549 1.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 0.7622222900390625 -0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 0.7255226373672485 -0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 1.2352921962738037 -0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.15000000596046448 1.2977778911590576 -0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 0.7255226373672485 -0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 0.5194402933120728 -0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.11793729662895203 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 0.8844115138053894 -0.04379406198859215 -0.9960936307907104 0.07638783007860184 0.1950553059577942 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.07777778059244156 1.2352921962738037 -0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 0.5194402933120728 -0.07638783007860184 -0.9960936307907104 0.04379406198859215 1.1179373264312744 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.02222222276031971 0.8844115138053894 -0.04379406198859215 -0.9960936307907104 0.07638783007860184 1.1950552463531494 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.15000000596046448 -0.0 -0.7042451500892639 -0.7099215388298035 -0.0 0.05043032765388489 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.07777778059244156 -0.0 -0.4848170280456543 -0.8745994567871094 -0.0 0.0485270619392395 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 0.7255226373672485 -0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.15000000596046448 0.7622222900390625 -0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.07777778059244156 -0.0 -0.4848170280456543 -0.8745994567871094 -0.0 0.0485270619392395 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.02222222276031971 -0.0 -0.08819849044084549 -0.9960936307907104 -0.0 0.03897655010223389 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 0.5194402933120728 -0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.11793729662895203 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.07777778059244156 0.7255226373672485 -0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.02222222276031971 -0.0 -0.08819849044084549 -0.9960936307907104 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.02222222276031971 0.5194402933120728 -0.07638783007860184 -0.9960936307907104 0.04379406198859215 1.1179373264312744 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 0.7622222304344177 0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 0.7255226373672485 0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.07777778059244156 -0.0 0.4848170280456543 -0.8745994567871094 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.15000000596046448 -0.0 0.7042451500892639 -0.7099215388298035 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 0.7255226373672485 0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 0.5194402933120728 0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.02222222276031971 -0.0 0.08819849044084549 -0.9960936307907104 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.07777778059244156 -0.0 0.4848170280456543 -0.8745994567871094 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 0.5194402933120728 0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.02222222276031971 -0.0 0.08819849044084549 -0.9960936307907104 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.15000000596046448 1.2977778911590576 0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 1.2352921962738037 0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 0.7255226373672485 0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.15000000596046448 0.7622222304344177 0.6093935966491699 -0.7111117839813232 0.3505966365337372 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 1.2352921962738037 0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 0.8844115138053894 0.04379406198859215 -0.9960936307907104 0.07638783007860184 0.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 0.5194402933120728 0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.07777778059244156 0.7255226373672485 0.4200262427330017 -0.8748130798339844 0.24127933382987976 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 0.8844115138053894 0.04379406198859215 -0.9960936307907104 0.07638783007860184 1.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.02222222276031971 0.5194402933120728 0.07638783007860184 -0.9960936307907104 0.04379406198859215 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.15000000596046448 1.5 0.0 -0.7099215388298035 0.7042451500892639 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 1.4277777671813965 0.0 -0.8745994567871094 0.4848170280456543 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 1.2352921962738037 0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.15000000596046448 1.2977778911590576 0.3505966365337372 -0.7111117839813232 0.6093935966491699 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.07777778059244156 1.4277777671813965 0.0 -0.8745994567871094 0.4848170280456543 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 1.0222222805023193 0.0 -0.9960936307907104 0.08819849044084549 0.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 0.8844115138053894 0.04379406198859215 -0.9960936307907104 0.07638783007860184 0.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.07777778059244156 1.2352921962738037 0.24127933382987976 -0.8748130798339844 0.4200262427330017 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.02222222276031971 1.0222222805023193 0.0 -0.9960936307907104 0.08819849044084549 1.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -1.0 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.02222222276031971 0.8844115138053894 0.04379406198859215 -0.9960936307907104 0.07638783007860184 1.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n0 2 3 0\n4 5 6 0\n4 6 7 0\n8 9 10 0\n8 10 11 0\n12 13 14 0\n12 14 15 0\n16 17 18 0\n16 18 19 0\n20 21 22 0\n20 22 23 0\n24 25 26 0\n24 26 27 0\n28 29 30 0\n28 30 31 0\n32 33 34 0\n32 34 35 0\n36 37 38 0\n36 38 39 0\n40 41 42 0\n40 42 43 0\n44 45 46 0\n44 46 47 0\n48 49 50 0\n48 50 51 0\n52 53 54 0\n52 54 55 0\n56 57 58 0\n56 58 59 0\n60 61 62 0\n60 62 63 0\n64 65 66 0\n64 66 67 0\n68 69 70 0\n68 70 71 0\n72 73 74 0\n72 74 75 0\n76 77 78 0\n76 78 79 0\n80 81 82 0\n80 82 83 0\n84 85 86 0\n84 86 87 0\n88 89 90 0\n88 90 91 0\n92 93 94 0\n92 94 95 0\n96 97 98 0\n96 98 99 0\n100 101 102 0\n100 102 103 0\n104 105 106 0\n104 106 107 0\n108 109 110 0\n108 110 111 0\n112 113 114 0\n112 114 115 0\n116 117 118 0\n116 118 119 0\n120 121 122 0\n120 122 123 0\n124 125 126 0\n124 126 127 0\n128 129 130 0\n128 130 131 0\n132 133 134 0\n132 134 135 0\n136 137 138 0\n136 138 139 0\n140 141 142 0\n140 142 143 0\n144 145 146 0\n144 146 147 0\n148 149 150 0\n148 150 151 0\n152 153 154 0\n152 154 155 0\n156 157 158 0\n156 158 159 0\n160 161 162 0\n160 162 163 0\n164 165 166 0\n164 166 167 0\n168 169 170 0\n168 170 171 0\n172 173 174 0\n172 174 175 0\n176 177 178 0\n176 178 179 0\n180 181 182 0\n180 182 183 0\n184 185 186 0\n184 186 187 0\n188 189 190 0\n188 190 191 0\n192 193 194 0\n192 194 195 0\n196 197 198 0\n196 198 199 0\n200 201 202 0\n200 202 203 0\n204 205 206 0\n204 206 207 0\n208 209 210 0\n208 210 211 0\n212 213 214 0\n212 214 215 0\n216 217 218 0\n216 218 219 0\n220 221 222 0\n220 222 223 0\n224 225 226 0\n224 226 227 0\n228 229 230 0\n228 230 231 0\n232 233 234 0\n232 234 235 0\n236 237 238 0\n236 238 239 0\n240 241 242 0\n240 242 243 0\n244 245 246 0\n244 246 247 0\n248 249 250 0\n248 250 251 0\n252 253 254 0\n252 254 255 0\n256 257 258 0\n256 258 259 0\n260 261 262 0\n260 262 263 0\n264 265 266 0\n264 266 267 0\n268 269 270 0\n268 270 271 0\n272 273 274 0\n272 274 275 0\n276 277 278 0\n276 278 279 0\n280 281 282 0\n280 282 283 0\n284 285 286 0\n284 286 287 0\n288 289 290 0\n288 290 291 0\n292 293 294 0\n292 294 295 0\n296 297 298 0\n296 298 299 0\n300 301 302 0\n300 302 303 0\n304 305 306 0\n304 306 307 0\n308 309 310 0\n308 310 311 0\n312 313 314 0\n312 314 315 0\n316 317 318 0\n316 318 319 0\n320 321 322 0\n320 322 323 0\n324 325 326 0\n324 326 327 0\n328 329 330 0\n328 330 331 0\n332 333 334 0\n332 334 335 0\n336 337 338 0\n336 338 339 0\n340 341 342 0\n340 342 343 0\n344 345 346 0\n344 346 347 0\n348 349 350 0\n348 350 351 0\n352 353 354 0\n352 354 355 0\n356 357 358 0\n356 358 359 0\n360 361 362 0\n360 362 363 0\n364 365 366 0\n364 366 367 0\n368 369 370 0\n368 370 371 0\n372 373 374 0\n372 374 375 0\n376 377 378 0\n376 378 379 0\n380 381 382 0\n380 382 383 0\n384 385 386 0\n384 386 387 0\n388 389 390 0\n388 390 391 0\n392 393 394 0\n392 394 395 0\n396 397 398 0\n396 398 399 0\n400 401 402 0\n400 402 403 0\n404 405 406 0\n404 406 407 0\n408 409 410 0\n408 410 411 0\n412 413 414 0\n412 414 415 0\n416 417 418 0\n416 418 419 0\n420 421 422 0\n420 422 423 0\n424 425 426 0\n424 426 427 0\n428 429 430 0\n428 430 431 0\n432 433 434 0\n432 434 435 0\n436 437 438 0\n436 438 439 0\n440 441 442 0\n440 442 443 0\n444 445 446 0\n444 446 447 0\n448 449 450 0\n448 450 451 0\n452 453 454 0\n452 454 455 0\n456 457 458 0\n456 458 459 0\n460 461 462 0\n460 462 463 0\n464 465 466 0\n464 466 467 0\n468 469 470 0\n468 470 471 0\n472 473 474 0\n472 474 475 0\n476 477 478 0\n476 478 479 0\n480 481 482 0\n480 482 483 0\n484 485 486 0\n484 486 487 0\n488 489 490 0\n488 490 491 0\n492 493 494 0\n492 494 495 0\n496 497 498 0\n496 498 499 0\n500 501 502 0\n500 502 503 0\n504 505 506 0\n504 506 507 0\n508 509 510 0\n508 510 511 0\n512 513 514 0\n512 514 515 0\n516 517 518 0\n516 518 519 0\n520 521 522 0\n520 522 523 0\n524 525 526 0\n524 526 527 0\n528 529 530 0\n528 530 531 0\n532 533 534 0\n532 534 535 0\n536 537 538 0\n536 538 539 0\n540 541 542 0\n540 542 543 0\n544 545 546 0\n544 546 547 0\n548 549 550 0\n548 550 551 0\n552 553 554 0\n552 554 555 0\n556 557 558 0\n556 558 559 0\n560 561 562 0\n560 562 563 0\n564 565 566 0\n564 566 567 0\n568 569 570 0\n568 570 571 0\n572 573 574 0\n572 574 575 0\n576 577 578 0\n576 578 579 0\n580 581 582 0\n580 582 583 0\n584 585 586 0\n587 588 589 0\n587 589 590 0\n591 592 593 0\n591 593 594 0\n595 596 597 0\n598 599 600 0\n598 600 601 0\n602 603 604 0\n602 604 605 0\n606 607 608 0\n609 610 611 0\n609 611 612 0\n613 614 615 0\n613 615 616 0\n617 618 619 0\n620 621 622 0\n620 622 623 0\n624 625 626 0\n624 626 627 0\n628 629 630 0\n631 632 633 0\n631 633 634 0\n635 636 637 0\n635 637 638 0\n639 640 641 0\n642 643 644 0\n642 644 645 0\n646 647 648 0\n646 648 649 0\n650 651 652 0\n653 654 655 0\n653 655 656 0\n657 658 659 0\n657 659 660 0\n661 662 663 0\n664 665 666 0\n664 666 667 0\n668 669 670 0\n668 670 671 0\n672 673 674 0\n675 676 677 0\n675 677 678 0\n679 680 681 0\n679 681 682 0\n683 684 685 0\n686 687 688 0\n686 688 689 0\n690 691 692 0\n690 692 693 0\n694 695 696 0\n697 698 699 0\n697 699 700 0\n701 702 703 0\n701 703 704 0\n705 706 707 0\n708 709 710 0\n708 710 711 0\n712 713 714 0\n712 714 715 0\n716 717 718 0\n716 718 719 0\n720 721 722 0\n720 722 723 0\n724 725 726 0\n724 726 727 0\n728 729 730 0\n728 730 731 0\n732 733 734 0\n732 734 735 0\n736 737 738 0\n736 738 739 0\n740 741 742 0\n740 742 743 0\n744 745 746 0\n744 746 747 0\n748 749 750 0\n748 750 751 0\n752 753 754 0\n752 754 755 0\n756 757 758 0\n756 758 759 0\n760 761 762 0\n760 762 763 0\n764 765 766 0\n764 766 767 0\n768 769 770 0\n768 770 771 0\n772 773 774 0\n772 774 775 0\n776 777 778 0\n776 778 779 0\n780 781 782 0\n780 782 783 0\n784 785 786 0\n784 786 787 0\n788 789 790 0\n788 790 791 0\n792 793 794 0\n792 794 795 0\n796 797 798 0\n796 798 799 0\n800 801 802 0\n800 802 803 0\n804 805 806 0\n804 806 807 0\n808 809 810 0\n808 810 811 0\n812 813 814 0\n812 814 815 0\n816 817 818 0\n816 818 819 0\n820 821 822 0\n820 822 823 0\n824 825 826 0\n824 826 827 0\n828 829 830 0\n828 830 831 0\n832 833 834 0\n832 834 835 0\n836 837 838 0\n836 838 839 0\n840 841 842 0\n840 842 843 0\n844 845 846 0\n844 846 847 0\n848 849 850 0\n848 850 851 0\n852 853 854 0\n852 854 855 0\n856 857 858 0\n856 858 859 0\n860 861 862 0\n863 864 865 0\n863 865 866 0\n867 868 869 0\n867 869 870 0\n871 872 873 0\n874 875 876 0\n874 876 877 0\n878 879 880 0\n878 880 881 0\n882 883 884 0\n885 886 887 0\n885 887 888 0\n889 890 891 0\n889 891 892 0\n893 894 895 0\n896 897 898 0\n896 898 899 0\n900 901 902 0\n900 902 903 0\n904 905 906 0\n907 908 909 0\n907 909 910 0\n911 912 913 0\n911 913 914 0\n915 916 917 0\n918 919 920 0\n918 920 921 0\n922 923 924 0\n922 924 925 0\n926 927 928 0\n929 930 931 0\n929 931 932 0\n933 934 935 0\n933 935 936 0\n937 938 939 0\n940 941 942 0\n940 942 943 0\n944 945 946 0\n944 946 947 0\n948 949 950 0\n951 952 953 0\n951 953 954 0\n955 956 957 0\n955 957 958 0\n959 960 961 0\n962 963 964 0\n962 964 965 0\n966 967 968 0\n966 968 969 0\n970 971 972 0\n973 974 975 0\n973 975 976 0\n977 978 979 0\n977 979 980 0\n981 982 983 0\nRoot -1 0.0 0.0 0.0 0.0 1.0 0.0 0.0\n"
  },
  {
    "path": "data/models/chamberpot2.dymdl",
    "content": "DYMDLv1 984 480 1 1 0\nMaterial\n0.7622222304344177 1.6000001430511475 1.297777771949768 0.3750419616699219 0.6591692566871643 0.65178382396698 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 1.6583333015441895 1.23929762840271 0.19748526811599731 0.9179052114486694 0.34409618377685547 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.4324073791503906 0.0 0.9178136587142944 0.3969237208366394 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.5 0.0 0.6581011414527893 0.7528916001319885 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 1.6583333015441895 1.23929762840271 0.19748526811599731 0.9179052114486694 0.34409618377685547 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 1.1976406574249268 -0.365611732006073 0.6798608303070068 -0.635670006275177 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.3842592239379883 0.0 0.6790368556976318 -0.7340617179870605 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.4324073791503906 0.0 0.9178136587142944 0.3969237208366394 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 1.1976406574249268 -0.365611732006073 0.6798608303070068 -0.635670006275177 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 1.6000001430511475 1.2112592458724976 -0.48188725113868713 -0.2613300085067749 -0.8363292217254639 0.4336108863353729 0.45609670877456665 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.399999976158142 0.0 -0.2605060040950775 -0.965453028678894 0.36538827419281006 0.5037634968757629 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.3842592239379883 0.0 0.6790368556976318 -0.7340617179870605 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 1.6000001430511475 0.7622222900390625 0.65178382396698 0.6591692566871643 0.3750419616699219 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 0.7278752326965332 0.34409618377685547 0.9179052114486694 0.19748526811599731 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 1.6583333015441895 1.23929762840271 0.19748526811599731 0.9179052114486694 0.34409618377685547 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 1.6000001430511475 1.297777771949768 0.3750419616699219 0.6591692566871643 0.65178382396698 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 0.7278752326965332 0.34409618377685547 0.9179052114486694 0.19748526811599731 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 0.7034087777137756 -0.635670006275177 0.6798303127288818 -0.365611732006073 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 1.1976406574249268 -0.365611732006073 0.6798608303070068 -0.635670006275177 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278751730918884 1.6583333015441895 1.23929762840271 0.19748526811599731 0.9179052114486694 0.34409618377685547 0.43381404876708984 0.46476656198501587 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 0.7034087777137756 -0.635670006275177 0.6798303127288818 -0.365611732006073 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 1.6000001430511475 0.7114074230194092 -0.8363292217254639 -0.2613300085067749 -0.48188725113868713 0.498710572719574 0.43980515003204346 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 1.6000001430511475 1.2112592458724976 -0.48188725113868713 -0.2613300085067749 -0.8363292217254639 0.4336108863353729 0.45609670877456665 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 1.1976406574249268 -0.365611732006073 0.6798608303070068 -0.635670006275177 0.43489623069763184 0.46722179651260376 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 1.6000001430511475 -0.0 0.7528916001319885 0.6581011414527893 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 1.6583333015441895 -0.0 0.3969237208366394 0.9178136587142944 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 0.7278752326965332 0.34409618377685547 0.9179052114486694 0.19748526811599731 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 1.6000001430511475 0.7622222900390625 0.65178382396698 0.6591692566871643 0.3750419616699219 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 1.6583333015441895 -0.0 0.3969237208366394 0.9178136587142944 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 1.6583333015441895 -0.0 -0.7340617179870605 0.6790368556976318 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 0.7034087777137756 -0.635670006275177 0.6798303127288818 -0.365611732006073 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 0.7278752326965332 0.34409618377685547 0.9179052114486694 0.19748526811599731 0.4983713924884796 0.4480486512184143 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 1.6583333015441895 -0.0 -0.7340617179870605 0.6790368556976318 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.399999976158142 1.6000001430511475 -0.0 -0.965453028678894 -0.2605060040950775 -0.0 0.5648702383041382 0.451926052570343 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 1.6000001430511475 0.7114074230194092 -0.8363292217254639 -0.2613300085067749 -0.48188725113868713 0.498710572719574 0.43980515003204346 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 0.7034087777137756 -0.635670006275177 0.6798303127288818 -0.365611732006073 0.49880385398864746 0.4505805969238281 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 1.6000001430511475 0.7622222304344177 -0.65178382396698 0.6591692566871643 0.3750419616699219 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 0.7278751730918884 -0.34409618377685547 0.9179052114486694 0.19748526811599731 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 1.6583333015441895 -0.0 -0.3969237208366394 0.9178136587142944 -0.0 0.09706264734268188 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.6000001430511475 -0.0 -0.7528916001319885 0.6581011414527893 -0.0 0.09257018566131592 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 0.7278751730918884 -0.34409618377685547 0.9179052114486694 0.19748526811599731 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 0.7034087777137756 0.635670006275177 0.6798303127288818 -0.365611732006073 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 1.6583333015441895 -0.0 0.7340617179870605 0.6790368556976318 -0.0 0.09843429923057556 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 1.6583333015441895 -0.0 -0.3969237208366394 0.9178136587142944 -0.0 0.09706264734268188 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 0.7034087777137756 0.635670006275177 0.6798303127288818 -0.365611732006073 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 1.6000001430511475 0.7114074230194092 0.8363292217254639 -0.2613300085067749 -0.48188725113868713 0.2139941155910492 0.6759850978851318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.399999976158142 1.6000001430511475 -0.0 0.965453028678894 -0.2605060040950775 -0.0 0.0947655737400055 0.7644467353820801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 1.6583333015441895 -0.0 0.7340617179870605 0.6790368556976318 -0.0 0.09843429923057556 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 1.6000001430511475 1.2977778911590576 -0.3750419616699219 0.6591692566871643 0.65178382396698 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 1.6583333015441895 1.23929762840271 -0.19748526811599731 0.9179052114486694 0.34409618377685547 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 0.7278751730918884 -0.34409618377685547 0.9179052114486694 0.19748526811599731 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 1.6000001430511475 0.7622222304344177 -0.65178382396698 0.6591692566871643 0.3750419616699219 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 1.6583333015441895 1.23929762840271 -0.19748526811599731 0.9179052114486694 0.34409618377685547 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 1.1976406574249268 0.365611732006073 0.6798608303070068 -0.635670006275177 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 0.7034087777137756 0.635670006275177 0.6798303127288818 -0.365611732006073 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 0.7278751730918884 -0.34409618377685547 0.9179052114486694 0.19748526811599731 0.21623337268829346 0.6856119632720947 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 1.1976406574249268 0.365611732006073 0.6798608303070068 -0.635670006275177 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 1.6000001430511475 1.2112592458724976 0.48188725113868713 -0.2613300085067749 -0.8363292217254639 0.2941329777240753 0.5810052156448364 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 1.6000001430511475 0.7114074230194092 0.8363292217254639 -0.2613300085067749 -0.48188725113868713 0.2139941155910492 0.6759850978851318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 0.7034087777137756 0.635670006275177 0.6798303127288818 -0.365611732006073 0.2188054919242859 0.6892615556716919 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.5 0.0 0.6581011414527893 0.7528916001319885 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.4324073791503906 0.0 0.9178136587142944 0.3969237208366394 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 1.6583333015441895 1.23929762840271 -0.19748526811599731 0.9179052114486694 0.34409618377685547 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 1.6000001430511475 1.2977778911590576 -0.3750419616699219 0.6591692566871643 0.65178382396698 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.4324073791503906 0.0 0.9178136587142944 0.3969237208366394 0.36621230840682983 0.5129598379135132 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.3842592239379883 0.0 0.6790368556976318 -0.7340617179870605 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 1.1976406574249268 0.365611732006073 0.6798608303070068 -0.635670006275177 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278752326965332 1.6583333015441895 1.23929762840271 -0.19748526811599731 0.9179052114486694 0.34409618377685547 0.29563820362091064 0.5905562043190002 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 1.3842592239379883 0.0 0.6790368556976318 -0.7340617179870605 0.36791497468948364 0.5152775645256042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.399999976158142 0.0 -0.2605060040950775 -0.965453028678894 0.36538827419281006 0.5037634968757629 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 1.6000001430511475 1.2112592458724976 0.48188725113868713 -0.2613300085067749 -0.8363292217254639 0.2941329777240753 0.5810052156448364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 1.1976406574249268 0.365611732006073 0.6798608303070068 -0.635670006275177 0.2978811264038086 0.5930858850479126 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 1.6000001430511475 -1.297777771949768 -0.3750419616699219 0.6591692566871643 -0.65178382396698 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 1.6583333015441895 -1.23929762840271 -0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.4324073791503906 0.0 0.9178136587142944 -0.3969237208366394 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.5 0.0 0.6581011414527893 -0.7528916001319885 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 1.6583333015441895 -1.23929762840271 -0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 -1.1976406574249268 0.365611732006073 0.6798608303070068 0.635670006275177 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.3842592239379883 0.0 0.6790368556976318 0.7340617179870605 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.4324073791503906 0.0 0.9178136587142944 -0.3969237208366394 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 -1.1976406574249268 0.365611732006073 0.6798608303070068 0.635670006275177 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 1.6000001430511475 -1.2112592458724976 0.48188725113868713 -0.2613300085067749 0.8363292217254639 0.829383134841919 0.7043319940567017 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.399999976158142 0.0 -0.2605060040950775 0.965453028678894 0.7504168748855591 0.6200130581855774 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.3842592239379883 0.0 0.6790368556976318 0.7340617179870605 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 1.6000001430511475 -0.7622222900390625 -0.65178382396698 0.6591692566871643 -0.3750419616699219 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 -0.7278752326965332 -0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 1.6583333015441895 -1.23929762840271 -0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 1.6000001430511475 -1.297777771949768 -0.3750419616699219 0.6591692566871643 -0.65178382396698 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 -0.7278752326965332 -0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 -0.7034087777137756 0.635670006275177 0.6798303127288818 0.365611732006073 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 -1.1976406574249268 0.365611732006073 0.6798608303070068 0.635670006275177 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7278751730918884 1.6583333015441895 -1.23929762840271 -0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.827828586101532 0.7140057682991028 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 -0.7034087777137756 0.635670006275177 0.6798303127288818 0.365611732006073 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 1.6000001430511475 -0.7114074230194092 0.8363292217254639 -0.2613300085067749 0.48188725113868713 0.9410111904144287 0.7708781361579895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7114074230194092 1.6000001430511475 -1.2112592458724976 0.48188725113868713 -0.2613300085067749 0.8363292217254639 0.829383134841919 0.7043319940567017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7034087777137756 1.6583333015441895 -1.1976406574249268 0.365611732006073 0.6798608303070068 0.635670006275177 0.8251392245292664 0.7167086601257324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.6000001430511475 -0.0 -0.7528916001319885 0.6581011414527893 -0.0 1.092570185661316 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 1.6583333015441895 -0.0 -0.3969237208366394 0.9178136587142944 -0.0 1.097062587738037 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 -0.7278752326965332 -0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 1.6000001430511475 -0.7622222900390625 -0.65178382396698 0.6591692566871643 -0.3750419616699219 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4324073791503906 1.6583333015441895 -0.0 -0.3969237208366394 0.9178136587142944 -0.0 1.097062587738037 0.7744057178497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 1.6583333015441895 -0.0 0.7340617179870605 0.6790368556976318 -0.0 1.098434329032898 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 -0.7034087777137756 0.635670006275177 0.6798303127288818 0.365611732006073 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.23929762840271 1.6583333015441895 -0.7278752326965332 -0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.9407130479812622 0.7812114953994751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3842592239379883 1.6583333015441895 -0.0 0.7340617179870605 0.6790368556976318 -0.0 1.098434329032898 0.7800112962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.399999976158142 1.6000001430511475 -0.0 0.965453028678894 -0.2605060040950775 -0.0 1.094765543937683 0.7644467353820801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2112592458724976 1.6000001430511475 -0.7114074230194092 0.8363292217254639 -0.2613300085067749 0.48188725113868713 0.9410111904144287 0.7708781361579895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1976406574249268 1.6583333015441895 -0.7034087777137756 0.635670006275177 0.6798303127288818 0.365611732006073 0.9384674429893494 0.7860746383666992 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 1.6000001430511475 -0.7622222304344177 0.65178382396698 0.6591692566871643 -0.3750419616699219 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 -0.7278751730918884 0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 1.6583333015441895 -0.0 0.3969237208366394 0.9178136587142944 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 1.6000001430511475 -0.0 0.7528916001319885 0.6581011414527893 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 -0.7278751730918884 0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 -0.7034087777137756 -0.635670006275177 0.6798303127288818 0.365611732006073 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 1.6583333015441895 -0.0 -0.7340617179870605 0.6790368556976318 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n1.4324073791503906 1.6583333015441895 -0.0 0.3969237208366394 0.9178136587142944 -0.0 0.5640665888786316 0.45991021394729614 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 -0.7034087777137756 -0.635670006275177 0.6798303127288818 0.365611732006073 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 1.6000001430511475 -0.7114074230194092 -0.8363292217254639 -0.2613300085067749 0.48188725113868713 0.6279190182685852 0.48933225870132446 0 1.0 0 0.0 0 0.0 0 0.0\n1.399999976158142 1.6000001430511475 -0.0 -0.965453028678894 -0.2605060040950775 -0.0 0.5648702383041382 0.451926052570343 0 1.0 0 0.0 0 0.0 0 0.0\n1.3842592239379883 1.6583333015441895 -0.0 -0.7340617179870605 0.6790368556976318 -0.0 0.5638269186019897 0.46230220794677734 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 1.6000001430511475 -1.2977778911590576 0.3750419616699219 0.6591692566871643 -0.65178382396698 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 1.6583333015441895 -1.23929762840271 0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 -0.7278751730918884 0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 1.6000001430511475 -0.7622222304344177 0.65178382396698 0.6591692566871643 -0.3750419616699219 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 1.6583333015441895 -1.23929762840271 0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 -1.1976406574249268 -0.365611732006073 0.6798608303070068 0.635670006275177 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 -0.7034087777137756 -0.635670006275177 0.6798303127288818 0.365611732006073 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n1.23929762840271 1.6583333015441895 -0.7278751730918884 0.34409618377685547 0.9179052114486694 -0.19748526811599731 0.6267805099487305 0.4972832202911377 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 -1.1976406574249268 -0.365611732006073 0.6798608303070068 0.635670006275177 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 1.6000001430511475 -1.2112592458724976 -0.48188725113868713 -0.2613300085067749 0.8363292217254639 0.6864795684814453 0.5451602935791016 0 1.0 0 0.0 0 0.0 0 0.0\n1.2112592458724976 1.6000001430511475 -0.7114074230194092 -0.8363292217254639 -0.2613300085067749 0.48188725113868713 0.6279190182685852 0.48933225870132446 0 1.0 0 0.0 0 0.0 0 0.0\n1.1976406574249268 1.6583333015441895 -0.7034087777137756 -0.635670006275177 0.6798303127288818 0.365611732006073 0.6259352564811707 0.4993526339530945 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.5 0.0 0.6581011414527893 -0.7528916001319885 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.4324073791503906 0.0 0.9178136587142944 -0.3969237208366394 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 1.6583333015441895 -1.23929762840271 0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 1.6000001430511475 -1.2977778911590576 0.3750419616699219 0.6591692566871643 -0.65178382396698 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.4324073791503906 0.0 0.9178136587142944 -0.3969237208366394 0.7488337755203247 0.6288853883743286 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.3842592239379883 0.0 0.6790368556976318 0.7340617179870605 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 -1.1976406574249268 -0.365611732006073 0.6798608303070068 0.635670006275177 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n0.7278752326965332 1.6583333015441895 -1.23929762840271 0.19748526811599731 0.9179052114486694 -0.34409618377685547 0.6851003170013428 0.5534005165100098 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6583333015441895 -1.3842592239379883 0.0 0.6790368556976318 0.7340617179870605 0.7468173503875732 0.6306852698326111 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.399999976158142 0.0 -0.2605060040950775 0.965453028678894 0.7504168748855591 0.6200130581855774 0 1.0 0 0.0 0 0.0 0 0.0\n0.7114074230194092 1.6000001430511475 -1.2112592458724976 -0.48188725113868713 -0.2613300085067749 0.8363292217254639 0.6864795684814453 0.5451602935791016 0 1.0 0 0.0 0 0.0 0 0.0\n0.7034087777137756 1.6583333015441895 -1.1976406574249268 -0.365611732006073 0.6798608303070068 0.635670006275177 0.6837114095687866 0.5551795959472656 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 1.7303704023361206 0.49595630168914795 -0.11569567024707794 0.860591471195221 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 1.6662826538085938 0.4669942259788513 0.35224464535713196 0.8110293745994568 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 1.9259259700775146 0.0 0.35139012336730957 0.9362162947654724 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 2.0 0.0 -0.11548203974962234 0.9932859539985657 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 1.6662826538085938 0.4669942259788513 0.35224464535713196 0.8110293745994568 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.2518519163131714 1.5060631036758423 0.42506179213523865 0.5233008861541748 0.7385479211807251 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 1.7407406568527222 0.0 0.522110641002655 0.8528702855110168 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 1.9259259700775146 0.0 0.35139012336730957 0.9362162947654724 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.2518519163131714 1.5060631036758423 0.42506179213523865 0.5233008861541748 0.7385479211807251 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 1.6000001430511475 1.297777771949768 0.3750419616699219 0.6591692566871643 0.65178382396698 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.5 0.0 0.6581011414527893 0.7528916001319885 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 1.7407406568527222 0.0 0.522110641002655 0.8528702855110168 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 1.0162962675094604 0.860591471195221 -0.11569567024707794 0.49595630168914795 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 0.9786556959152222 0.8110293745994568 0.35224464535713196 0.4669942259788513 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 1.6662826538085938 0.4669942259788513 0.35224464535713196 0.8110293745994568 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 1.7303704023361206 0.49595630168914795 -0.11569567024707794 0.860591471195221 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 0.9786556959152222 0.8110293745994568 0.35224464535713196 0.4669942259788513 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518517971038818 0.8845542669296265 0.7385479211807251 0.5233008861541748 0.42506179213523865 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.2518519163131714 1.5060631036758423 0.42506179213523865 0.5233008861541748 0.7385479211807251 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 1.6662826538085938 0.4669942259788513 0.35224464535713196 0.8110293745994568 0.4132171869277954 0.3386375904083252 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518517971038818 0.8845542669296265 0.7385479211807251 0.5233008861541748 0.42506179213523865 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 1.6000001430511475 0.7622222900390625 0.65178382396698 0.6591692566871643 0.3750419616699219 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 1.6000001430511475 1.297777771949768 0.3750419616699219 0.6591692566871643 0.65178382396698 0.43147653341293335 0.45172613859176636 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845541477203369 1.2518519163131714 1.5060631036758423 0.42506179213523865 0.5233008861541748 0.7385479211807251 0.42155009508132935 0.3886297345161438 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.6000000238418579 -0.0 0.9932859539985657 -0.11548203974962234 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 0.914814829826355 -0.0 0.9362162947654724 0.35139012336730957 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 0.9786556959152222 0.8110293745994568 0.35224464535713196 0.4669942259788513 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 1.0162962675094604 0.860591471195221 -0.11569567024707794 0.49595630168914795 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 0.914814829826355 -0.0 0.9362162947654724 0.35139012336730957 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.2518519163131714 -0.0 0.8528397679328918 0.522110641002655 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518517971038818 0.8845542669296265 0.7385479211807251 0.5233008861541748 0.42506179213523865 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 0.9786556959152222 0.8110293745994568 0.35224464535713196 0.4669942259788513 0.4948292672634125 0.323957622051239 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.2518519163131714 -0.0 0.8528397679328918 0.522110641002655 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 1.6000001430511475 -0.0 0.7528916001319885 0.6581011414527893 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.2977778911590576 1.6000001430511475 0.7622222900390625 0.65178382396698 0.6591692566871643 0.3750419616699219 0.4978336989879608 0.43523162603378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518517971038818 0.8845542669296265 0.7385479211807251 0.5233008861541748 0.42506179213523865 0.49609825015068054 0.3733762502670288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 1.0162962675094604 -0.860591471195221 -0.11569567024707794 0.49595630168914795 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 0.9786556959152222 -0.8110293745994568 0.35224464535713196 0.4669942259788513 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.914814829826355 -0.0 -0.9362162947654724 0.35139012336730957 -0.0 0.06937173008918762 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 0.9786556959152222 -0.8110293745994568 0.35224464535713196 0.4669942259788513 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518519163131714 0.8845541477203369 -0.7385479211807251 0.5233008861541748 0.42506179213523865 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.2518519163131714 -0.0 -0.8528397679328918 0.522110641002655 -0.0 0.07755216956138611 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.914814829826355 -0.0 -0.9362162947654724 0.35139012336730957 -0.0 0.06937173008918762 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518519163131714 0.8845541477203369 -0.7385479211807251 0.5233008861541748 0.42506179213523865 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 1.6000001430511475 0.7622222304344177 -0.65178382396698 0.6591692566871643 0.3750419616699219 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.6000001430511475 -0.0 -0.7528916001319885 0.6581011414527893 -0.0 0.09257018566131592 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.2518519163131714 -0.0 -0.8528397679328918 0.522110641002655 -0.0 0.07755216956138611 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 1.7303704023361206 -0.49595630168914795 -0.11569567024707794 0.860591471195221 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 1.6662826538085938 -0.4669942259788513 0.35224464535713196 0.8110293745994568 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 0.9786556959152222 -0.8110293745994568 0.35224464535713196 0.4669942259788513 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 1.0162962675094604 -0.860591471195221 -0.11569567024707794 0.49595630168914795 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 1.6662826538085938 -0.4669942259788513 0.35224464535713196 0.8110293745994568 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.2518517971038818 1.5060631036758423 -0.42506179213523865 0.5233008861541748 0.7385479211807251 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518519163131714 0.8845541477203369 -0.7385479211807251 0.5233008861541748 0.42506179213523865 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 0.9786556959152222 -0.8110293745994568 0.35224464535713196 0.4669942259788513 0.16763854026794434 0.5300626158714294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.2518517971038818 1.5060631036758423 -0.42506179213523865 0.5233008861541748 0.7385479211807251 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 1.6000001430511475 1.2977778911590576 -0.3750419616699219 0.6591692566871643 0.65178382396698 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.297777771949768 1.6000001430511475 0.7622222304344177 -0.65178382396698 0.6591692566871643 0.3750419616699219 0.20935985445976257 0.6693832278251648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518519163131714 0.8845541477203369 -0.7385479211807251 0.5233008861541748 0.42506179213523865 0.18382784724235535 0.5908814668655396 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 2.0 0.0 -0.11548203974962234 0.9932859539985657 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 1.9259259700775146 0.0 0.35139012336730957 0.9362162947654724 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 1.6662826538085938 -0.4669942259788513 0.35224464535713196 0.8110293745994568 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 1.7303704023361206 -0.49595630168914795 -0.11569567024707794 0.860591471195221 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 1.9259259700775146 0.0 0.35139012336730957 0.9362162947654724 0.33067935705184937 0.3847705125808716 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 1.7407406568527222 0.0 0.522110641002655 0.8528702855110168 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.2518517971038818 1.5060631036758423 -0.42506179213523865 0.5233008861541748 0.7385479211807251 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 1.6662826538085938 -0.4669942259788513 0.35224464535713196 0.8110293745994568 0.2498626410961151 0.4547853469848633 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 1.7407406568527222 0.0 0.522110641002655 0.8528702855110168 0.34462296962738037 0.435282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.5 0.0 0.6581011414527893 0.7528916001319885 0.36209404468536377 0.4997289776802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 1.6000001430511475 1.2977778911590576 -0.3750419616699219 0.6591692566871643 0.65178382396698 0.2899063229560852 0.5765905380249023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845542669296265 1.2518517971038818 1.5060631036758423 -0.42506179213523865 0.5233008861541748 0.7385479211807251 0.2666986286640167 0.508183479309082 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 -1.7303704023361206 -0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 -1.6662826538085938 -0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 -1.9259259700775146 0.0 0.35139012336730957 -0.9362162947654724 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 -2.0 0.0 -0.11548203974962234 -0.9932859539985657 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 -1.6662826538085938 -0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.2518519163131714 -1.5060631036758423 -0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 -1.7407406568527222 0.0 0.522110641002655 -0.8528702855110168 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 -1.9259259700775146 0.0 0.35139012336730957 -0.9362162947654724 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.2518519163131714 -1.5060631036758423 -0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 1.6000001430511475 -1.297777771949768 -0.3750419616699219 0.6591692566871643 -0.65178382396698 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.5 0.0 0.6581011414527893 -0.7528916001319885 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 -1.7407406568527222 0.0 0.522110641002655 -0.8528702855110168 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 -1.0162962675094604 -0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 -0.9786556959152222 -0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 -1.6662826538085938 -0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 -1.7303704023361206 -0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 -0.9786556959152222 -0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518517971038818 -0.8845542669296265 -0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.2518519163131714 -1.5060631036758423 -0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9786556959152222 0.914814829826355 -1.6662826538085938 -0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.8712304830551147 0.5701385736465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518517971038818 -0.8845542669296265 -0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 1.6000001430511475 -0.7622222900390625 -0.65178382396698 0.6591692566871643 -0.3750419616699219 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222304344177 1.6000001430511475 -1.297777771949768 -0.3750419616699219 0.6591692566871643 -0.65178382396698 0.8343170881271362 0.699485719203949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8845541477203369 1.2518519163131714 -1.5060631036758423 -0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.8572931885719299 0.6273802518844604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 1.0637041330337524 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.914814829826355 -0.0 -0.9362162947654724 0.35139012336730957 -0.0 1.0693717002868652 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 -0.9786556959152222 -0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 -1.0162962675094604 -0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.914814829826355 -0.0 -0.9362162947654724 0.35139012336730957 -0.0 1.0693717002868652 0.5914106965065002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.2518519163131714 -0.0 -0.8528397679328918 0.522110641002655 -0.0 1.0775521993637085 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518517971038818 -0.8845542669296265 -0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6662826538085938 0.914814829826355 -0.9786556959152222 -0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.9633795022964478 0.6049708127975464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7407406568527222 1.2518519163131714 -0.0 -0.8528397679328918 0.522110641002655 -0.0 1.0775521993637085 0.6612304449081421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.6000001430511475 -0.0 -0.7528916001319885 0.6581011414527893 -0.0 1.092570185661316 0.7542117834091187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 1.6000001430511475 -0.7622222900390625 -0.65178382396698 0.6591692566871643 -0.3750419616699219 0.9449872970581055 0.762032687664032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5060631036758423 1.2518517971038818 -0.8845542669296265 -0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.957268476486206 0.6726799011230469 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 -1.0162962675094604 0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 -0.9786556959152222 0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 0.914814829826355 -0.0 0.9362162947654724 0.35139012336730957 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.6000000238418579 -0.0 0.9932859539985657 -0.11548203974962234 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 -0.9786556959152222 0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518519163131714 -0.8845541477203369 0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.2518519163131714 -0.0 0.8528397679328918 0.522110641002655 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.9259259700775146 0.914814829826355 -0.0 0.9362162947654724 0.35139012336730957 -0.0 0.5773130655288696 0.3406168222427368 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518519163131714 -0.8845541477203369 0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 1.6000001430511475 -0.7622222304344177 0.65178382396698 0.6591692566871643 -0.3750419616699219 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 1.6000001430511475 -0.0 0.7528916001319885 0.6581011414527893 -0.0 0.5653074383735657 0.44760727882385254 0 1.0 0 0.0 0 0.0 0 0.0\n1.7407406568527222 1.2518519163131714 -0.0 0.8528397679328918 0.522110641002655 -0.0 0.5716165900230408 0.3881370425224304 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 -1.7303704023361206 0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 -1.6662826538085938 0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 -0.9786556959152222 0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 -1.0162962675094604 0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 -1.6662826538085938 0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.2518517971038818 -1.5060631036758423 0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518519163131714 -0.8845541477203369 0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6662826538085938 0.914814829826355 -0.9786556959152222 0.8110293745994568 0.35224464535713196 -0.4669942259788513 0.6526945233345032 0.38379746675491333 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.2518517971038818 -1.5060631036758423 0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 1.6000001430511475 -1.2977778911590576 0.3750419616699219 0.6591692566871643 -0.65178382396698 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 1.6000001430511475 -0.7622222304344177 0.65178382396698 0.6591692566871643 -0.3750419616699219 0.6295300722122192 0.48565661907196045 0 1.0 0 0.0 0 0.0 0 0.0\n1.5060631036758423 1.2518519163131714 -0.8845541477203369 0.7385479211807251 0.5233008861541748 -0.42506179213523865 0.6421607136726379 0.42898160219192505 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 -2.0 0.0 -0.11548203974962234 -0.9932859539985657 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 -1.9259259700775146 0.0 0.35139012336730957 -0.9362162947654724 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 -1.6662826538085938 0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 -1.7303704023361206 0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.914814829826355 -1.9259259700775146 0.0 0.35139012336730957 -0.9362162947654724 0.7908333539962769 0.5078861713409424 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 -1.7407406568527222 0.0 0.522110641002655 -0.8528702855110168 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.2518517971038818 -1.5060631036758423 0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9786556959152222 0.914814829826355 -1.6662826538085938 0.4669942259788513 0.35224464535713196 -0.8110293745994568 0.7198944091796875 0.4410156011581421 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.2518519163131714 -1.7407406568527222 0.0 0.522110641002655 -0.8528702855110168 0.7757281064987183 0.5565197467803955 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.5 0.0 0.6581011414527893 -0.7528916001319885 0.7542129755020142 0.6169042587280273 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 1.6000001430511475 -1.2977778911590576 0.3750419616699219 0.6591692566871643 -0.65178382396698 0.6891228556632996 0.5420753359794617 0 1.0 0 0.0 0 0.0 0 0.0\n0.8845542669296265 1.2518517971038818 -1.5060631036758423 0.42506179213523865 0.5233008861541748 -0.7385479211807251 0.7064718008041382 0.4859408140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.10000000894069672 1.2977778911590576 0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.18518517911434174 1.4099314212799072 0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 1.6296296119689941 0.0 -0.8313852548599243 0.5556504726409912 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 1.5 0.0 -0.8341318964958191 0.5515609979629517 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.18518517911434174 1.4099314212799072 0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.3481481671333313 1.618216872215271 0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 1.8703705072402954 0.0 -0.6440016031265259 0.764976978302002 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 1.6296296119689941 0.0 -0.8313852548599243 0.5556504726409912 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.3481481671333313 1.618216872215271 0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 1.7303704023361206 0.49595630168914795 -0.11569567024707794 0.860591471195221 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 2.0 0.0 -0.11548203974962234 0.9932859539985657 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 1.8703705072402954 0.0 -0.6440016031265259 0.764976978302002 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 0.7622222304344177 0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 0.828093409538269 0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.18518517911434174 1.4099314212799072 0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.10000000894069672 1.2977778911590576 0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 0.828093409538269 0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 0.9504252076148987 0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.3481481671333313 1.618216872215271 0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n0.8280932903289795 0.18518517911434174 1.4099314212799072 0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.39810073375701904 0.2214469313621521 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 0.9504252076148987 0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 1.0162962675094604 0.860591471195221 -0.11569567024707794 0.49595630168914795 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 1.7303704023361206 0.49595630168914795 -0.11569567024707794 0.860591471195221 0.40639829635620117 0.2969917058944702 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504251480102539 0.3481481671333313 1.618216872215271 0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.4015105068683624 0.2580564022064209 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.10000000894069672 -0.0 0.5515609979629517 -0.8341318964958191 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.18518517911434174 -0.0 0.5556504726409912 -0.8313852548599243 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 0.828093409538269 0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 0.7622222304344177 0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.18518517911434174 -0.0 0.5556504726409912 -0.8313852548599243 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.3481481671333313 -0.0 0.764976978302002 -0.6440016031265259 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 0.9504252076148987 0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 0.828093409538269 0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.49755406379699707 0.21050095558166504 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.3481481671333313 -0.0 0.764976978302002 -0.6440016031265259 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.6000000238418579 -0.0 0.9932859539985657 -0.11548203974962234 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 1.0162962675094604 0.860591471195221 -0.11569567024707794 0.49595630168914795 0.49428650736808777 0.28271710872650146 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 0.9504252076148987 0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.4951971769332886 0.24500828981399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 0.7622222900390625 -0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 0.8280932903289795 -0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.18518517911434174 -0.0 -0.5556504726409912 -0.8313852548599243 -0.0 0.053547054529190063 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.10000000894069672 -0.0 -0.5515609979629517 -0.8341318964958191 -0.0 0.05043032765388489 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 0.8280932903289795 -0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 0.9504251480102539 -0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.3481481671333313 -0.0 -0.764976978302002 -0.6440016031265259 -0.0 0.05861186981201172 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.18518517911434174 -0.0 -0.5556504726409912 -0.8313852548599243 -0.0 0.053547054529190063 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 0.9504251480102539 -0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 1.0162962675094604 -0.860591471195221 -0.11569567024707794 0.49595630168914795 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.3481481671333313 -0.0 -0.764976978302002 -0.6440016031265259 -0.0 0.05861186981201172 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 1.2977778911590576 -0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.18518517911434174 1.4099314212799072 -0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 0.8280932903289795 -0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 0.7622222900390625 -0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.18518517911434174 1.4099314212799072 -0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.3481481671333313 1.618216872215271 -0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 0.9504251480102539 -0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 0.8280932903289795 -0.48057496547698975 -0.8322397470474243 0.2763756215572357 0.13922429084777832 0.3864933252334595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.3481481671333313 1.618216872215271 -0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 1.7303704023361206 -0.49595630168914795 -0.11569567024707794 0.860591471195221 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 1.0162962675094604 -0.860591471195221 -0.11569567024707794 0.49595630168914795 0.15623977780342102 0.4808504581451416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 0.9504251480102539 -0.6624347567558289 -0.6448255777359009 0.3812372088432312 0.14721912145614624 0.4334830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 1.5 0.0 -0.8341318964958191 0.5515609979629517 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 1.6296296119689941 0.0 -0.8313852548599243 0.5556504726409912 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.18518517911434174 1.4099314212799072 -0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 1.2977778911590576 -0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 1.6296296119689941 0.0 -0.8313852548599243 0.5556504726409912 0.30315589904785156 0.2634827494621277 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 1.8703705072402954 0.0 -0.6440016031265259 0.764976978302002 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.3481481671333313 1.618216872215271 -0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.828093409538269 0.18518517911434174 1.4099314212799072 -0.2763756215572357 -0.8322397470474243 0.48057496547698975 0.2183249592781067 0.32508355379104614 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 1.8703705072402954 0.0 -0.6440016031265259 0.764976978302002 0.31060802936553955 0.30255943536758423 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 2.0 0.0 -0.11548203974962234 0.9932859539985657 0.31945714354515076 0.342856228351593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 1.7303704023361206 -0.49595630168914795 -0.11569567024707794 0.860591471195221 0.23712080717086792 0.41073405742645264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504252076148987 0.3481481671333313 1.618216872215271 -0.3812372088432312 -0.6448255777359009 0.6624347567558289 0.22705289721488953 0.3677188754081726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 -1.2977778911590576 -0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.18518517911434174 -1.4099314212799072 -0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 -1.6296296119689941 0.0 -0.8313852548599243 -0.5556504726409912 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 -1.5 0.0 -0.8341318964958191 -0.5515609979629517 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.18518517911434174 -1.4099314212799072 -0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.3481481671333313 -1.618216872215271 -0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 -1.8703705072402954 0.0 -0.6440016031265259 -0.764976978302002 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 -1.6296296119689941 0.0 -0.8313852548599243 -0.5556504726409912 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.3481481671333313 -1.618216872215271 -0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 -1.7303704023361206 -0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 -2.0 0.0 -0.11548203974962234 -0.9932859539985657 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 -1.8703705072402954 0.0 -0.6440016031265259 -0.764976978302002 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 -0.7622222900390625 -0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 -0.828093409538269 -0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.18518517911434174 -1.4099314212799072 -0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 -1.2977778911590576 -0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 -0.828093409538269 -0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 -0.9504252076148987 -0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.3481481671333313 -1.618216872215271 -0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8280932903289795 0.18518517911434174 -1.4099314212799072 -0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.8889819979667664 0.4321751594543457 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 -0.9504252076148987 -0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 -1.0162962675094604 -0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162962675094604 0.6000000238418579 -1.7303704023361206 -0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.8801935911178589 0.5227434039115906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9504251480102539 0.3481481671333313 -1.618216872215271 -0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.8856533765792847 0.47703999280929565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.10000000894069672 -0.0 -0.5515609979629517 -0.8341318964958191 -0.0 1.0504302978515625 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.18518517911434174 -0.0 -0.5556504726409912 -0.8313852548599243 -0.0 1.0535470247268677 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 -0.828093409538269 -0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 -0.7622222900390625 -0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6296296119689941 0.18518517911434174 -0.0 -0.5556504726409912 -0.8313852548599243 -0.0 1.0535470247268677 0.4346669912338257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.3481481671333313 -0.0 -0.764976978302002 -0.6440016031265259 -0.0 1.0586118698120117 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 -0.9504252076148987 -0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4099314212799072 0.18518517911434174 -0.828093409538269 -0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.9669049978256226 0.4510842561721802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8703705072402954 0.3481481671333313 -0.0 -0.764976978302002 -0.6440016031265259 -0.0 1.0586118698120117 0.48504698276519775 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 1.0637041330337524 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-1.7303704023361206 0.6000000238418579 -1.0162962675094604 -0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.9665490388870239 0.5510944128036499 0 1.0 0 0.0 0 0.0 0 0.0\n-1.618216872215271 0.3481481671333313 -0.9504252076148987 -0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.9674350023269653 0.5005022287368774 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 -0.7622222304344177 0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 -0.8280932903289795 0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.18518517911434174 -0.0 0.5556504726409912 -0.8313852548599243 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.10000000894069672 -0.0 0.5515609979629517 -0.8341318964958191 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 -0.8280932903289795 0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 -0.9504251480102539 0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.3481481671333313 -0.0 0.764976978302002 -0.6440016031265259 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.6296296119689941 0.18518517911434174 -0.0 0.5556504726409912 -0.8313852548599243 -0.0 0.5954587459564209 0.23246979713439941 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 -0.9504251480102539 0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 -1.0162962675094604 0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n2.0 0.6000000238418579 -0.0 0.9932859539985657 -0.11548203974962234 -0.0 0.5828353762626648 0.30102527141571045 0 1.0 0 0.0 0 0.0 0 0.0\n1.8703705072402954 0.3481481671333313 -0.0 0.764976978302002 -0.6440016031265259 -0.0 0.5888184905052185 0.26505810022354126 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.10000000894069672 -1.297777771949768 0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.18518517911434174 -1.4099314212799072 0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 -0.8280932903289795 0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 -0.7622222304344177 0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.18518517911434174 -1.4099314212799072 0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.3481481671333313 -1.618216872215271 0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 -0.9504251480102539 0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n1.4099314212799072 0.18518517911434174 -0.8280932903289795 0.48057496547698975 -0.8322397470474243 -0.2763756215572357 0.6777608394622803 0.27866190671920776 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.3481481671333313 -1.618216872215271 0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 -1.7303704023361206 0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n1.7303704023361206 0.6000000238418579 -1.0162962675094604 0.860591471195221 -0.11569567024707794 -0.49595630168914795 0.6618058681488037 0.34603065252304077 0 1.0 0 0.0 0 0.0 0 0.0\n1.618216872215271 0.3481481671333313 -0.9504251480102539 0.6624347567558289 -0.6448255777359009 -0.3812372088432312 0.6700261831283569 0.3110303282737732 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 -1.5 0.0 -0.8341318964958191 -0.5515609979629517 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 -1.6296296119689941 0.0 -0.8313852548599243 -0.5556504726409912 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.18518517911434174 -1.4099314212799072 0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.10000000894069672 -1.297777771949768 0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.18518517911434174 -1.6296296119689941 0.0 -0.8313852548599243 -0.5556504726409912 0.8155300617218018 0.3874537944793701 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 -1.8703705072402954 0.0 -0.6440016031265259 -0.764976978302002 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.3481481671333313 -1.618216872215271 0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n0.828093409538269 0.18518517911434174 -1.4099314212799072 0.2763756215572357 -0.8322397470474243 -0.48057496547698975 0.7464216947555542 0.33229804039001465 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3481481671333313 -1.8703705072402954 0.0 -0.6440016031265259 -0.764976978302002 0.8096545934677124 0.4266200661659241 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.6000000238418579 -2.0 0.0 -0.11548203974962234 -0.9932859539985657 0.8017946481704712 0.4667319059371948 0 1.0 0 0.0 0 0.0 0 0.0\n1.0162962675094604 0.6000000238418579 -1.7303704023361206 0.49595630168914795 -0.11569567024707794 -0.860591471195221 0.7305766344070435 0.4031161665916443 0 1.0 0 0.0 0 0.0 0 0.0\n0.9504252076148987 0.3481481671333313 -1.618216872215271 0.3812372088432312 -0.6448255777359009 -0.6624347567558289 0.7391786575317383 0.3668786883354187 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 0.20000001788139343 -0.6584978699684143 0.11386455595493317 0.7438886761665344 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 0.20000001788139343 -0.30439162254333496 0.6095461845397949 0.7319559454917908 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 1.4111111164093018 -0.0 -0.5336771607398987 0.8456678986549377 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.2000000476837158 -0.0 -0.9909054636955261 0.1344645470380783 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 0.20000001788139343 -0.30439162254333496 0.6095461845397949 0.7319559454917908 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 0.20000003278255463 -0.04831080138683319 0.6493728160858154 0.7589038014411926 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 1.4888889789581299 -0.0 -0.08780175447463989 0.9961241483688354 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 1.4111111164093018 -0.0 -0.5336771607398987 0.8456678986549377 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 0.20000003278255463 -0.04831080138683319 0.6493728160858154 0.7589038014411926 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-1.525925874710083 1.461111307144165 0.20000001788139343 -0.010223700664937496 0.791375458240509 0.6112247109413147 0.11728531122207642 0.7034443616867065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.5 -0.0 -0.012939848005771637 0.999908447265625 -0.0 0.0880691409111023 0.730804443359375 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 1.4888889789581299 -0.0 -0.08780175447463989 0.9961241483688354 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 0.20000001788139343 0.3749198913574219 -0.08151493966579437 0.9234290719032288 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329218626022339 0.20000001788139343 0.23306985199451447 -0.4668721556663513 0.8530228734016418 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 0.20000001788139343 -0.30439162254333496 0.6095461845397949 0.7319559454917908 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 0.20000001788139343 -0.6584978699684143 0.11386455595493317 0.7438886761665344 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329218626022339 0.20000001788139343 0.23306985199451447 -0.4668721556663513 0.8530228734016418 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818929195404053 0.20000003278255463 0.04132205992937088 -0.6225165724754333 0.7814874649047852 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 0.20000003278255463 -0.04831080138683319 0.6493728160858154 0.7589038014411926 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 0.20000001788139343 -0.30439162254333496 0.6095461845397949 0.7319559454917908 0.09265154600143433 0.6591348648071289 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818929195404053 0.20000003278255463 0.04132205992937088 -0.6225165724754333 0.7814874649047852 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 1.3888888359069824 0.20000001788139343 0.005005035549402237 -0.5020294785499573 0.8648030161857605 0.11214965581893921 0.6843823194503784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.525925874710083 1.461111307144165 0.20000001788139343 -0.010223700664937496 0.791375458240509 0.6112247109413147 0.11728531122207642 0.7034443616867065 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 0.20000003278255463 -0.04831080138683319 0.6493728160858154 0.7589038014411926 0.09902966022491455 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.2000000476837158 -0.0 0.9614245891571045 -0.27500230073928833 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.3055555820465088 -0.0 0.36078980565071106 -0.9326151013374329 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329218626022339 0.20000001788139343 0.23306985199451447 -0.4668721556663513 0.8530228734016418 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 0.20000001788139343 0.3749198913574219 -0.08151493966579437 0.9234290719032288 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.3055555820465088 -0.0 0.36078980565071106 -0.9326151013374329 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 1.3444445133209229 -0.0 0.0557573176920414 -0.9984435439109802 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818929195404053 0.20000003278255463 0.04132205992937088 -0.6225165724754333 0.7814874649047852 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329218626022339 0.20000001788139343 0.23306985199451447 -0.4668721556663513 0.8530228734016418 0.09269976615905762 0.6538515686988831 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 1.3444445133209229 -0.0 0.0557573176920414 -0.9984435439109802 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600000023841858 1.3500001430511475 -0.0 0.0099795525893569 -0.99993896484375 -0.0 0.08127009868621826 0.6884005069732666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 1.3888888359069824 0.20000001788139343 0.005005035549402237 -0.5020294785499573 0.8648030161857605 0.11214965581893921 0.6843823194503784 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818929195404053 0.20000003278255463 0.04132205992937088 -0.6225165724754333 0.7814874649047852 0.0981336236000061 0.666175127029419 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 -0.20000001788139343 0.3749198913574219 -0.08151493966579437 -0.9234290719032288 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329219818115234 -0.20000001788139343 0.23306985199451447 -0.4668721556663513 -0.8530228734016418 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.3055555820465088 -0.0 0.36078980565071106 -0.9326151013374329 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.2000000476837158 -0.0 0.9614245891571045 -0.27500230073928833 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329219818115234 -0.20000001788139343 0.23306985199451447 -0.4668721556663513 -0.8530228734016418 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818931579589844 -0.20000003278255463 0.04132205992937088 -0.6225165724754333 -0.7814874649047852 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 1.3444445133209229 -0.0 0.0557573176920414 -0.9984435439109802 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5703704357147217 1.3055555820465088 -0.0 0.36078980565071106 -0.9326151013374329 -0.0 0.0770927369594574 0.6576699018478394 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818931579589844 -0.20000003278255463 0.04132205992937088 -0.6225165724754333 -0.7814874649047852 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 1.3888890743255615 -0.20000001788139343 0.005005035549402237 -0.5020294785499573 -0.8648030161857605 0.051914602518081665 0.7082343697547913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600000023841858 1.3500001430511475 -0.0 0.0099795525893569 -0.99993896484375 -0.0 0.08127009868621826 0.6884005069732666 0 1.0 0 0.0 0 0.0 0 0.0\n-2.196296215057373 1.3444445133209229 -0.0 0.0557573176920414 -0.9984435439109802 -0.0 0.07862633466720581 0.6693804264068604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 -0.20000001788139343 -0.6584978699684143 0.11386455595493317 -0.7438886761665344 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 -0.20000001788139343 -0.30439162254333496 0.6095461845397949 -0.7319559454917908 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329219818115234 -0.20000001788139343 0.23306985199451447 -0.4668721556663513 -0.8530228734016418 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 -0.20000001788139343 0.3749198913574219 -0.08151493966579437 -0.9234290719032288 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 -0.20000001788139343 -0.30439162254333496 0.6095461845397949 -0.7319559454917908 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 -0.20000003278255463 -0.04831080138683319 0.6493728160858154 -0.7589038014411926 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818931579589844 -0.20000003278255463 0.04132205992937088 -0.6225165724754333 -0.7814874649047852 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-2.6385462284088135 1.3329219818115234 -0.20000001788139343 0.23306985199451447 -0.4668721556663513 -0.8530228734016418 0.06191146373748779 0.6660564541816711 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 -0.20000003278255463 -0.04831080138683319 0.6493728160858154 -0.7589038014411926 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5259259939193726 1.461111307144165 -0.20000001788139343 -0.010223700664937496 0.791375458240509 -0.6112247109413147 0.0527951717376709 0.7290288209915161 0 1.0 0 0.0 0 0.0 0 0.0\n-1.574074149131775 1.3888890743255615 -0.20000001788139343 0.005005035549402237 -0.5020294785499573 -0.8648030161857605 0.051914602518081665 0.7082343697547913 0 1.0 0 0.0 0 0.0 0 0.0\n-2.2318246364593506 1.3818931579589844 -0.20000003278255463 0.04132205992937088 -0.6225165724754333 -0.7814874649047852 0.060018301010131836 0.6812902688980103 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.2000000476837158 -0.0 -0.9909054636955261 0.1344645470380783 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 1.4111111164093018 -0.0 -0.5336771607398987 0.8456678986549377 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 -0.20000001788139343 -0.30439162254333496 0.6095461845397949 -0.7319559454917908 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 -0.20000001788139343 -0.6584978699684143 0.11386455595493317 -0.7438886761665344 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8333334922790527 1.4111111164093018 -0.0 -0.5336771607398987 0.8456678986549377 -0.0 0.07844218611717224 0.6680006980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 1.4888889789581299 -0.0 -0.08780175447463989 0.9961241483688354 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 -0.20000003278255463 -0.04831080138683319 0.6493728160858154 -0.7589038014411926 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-2.765157699584961 1.3837449550628662 -0.20000001788139343 -0.30439162254333496 0.6095461845397949 -0.7319559454917908 0.06327471137046814 0.6707873344421387 0 1.0 0 0.0 0 0.0 0 0.0\n-2.3333334922790527 1.4888889789581299 -0.0 -0.08780175447463989 0.9961241483688354 -0.0 0.0813392698764801 0.6888784170150757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 1.5 -0.0 -0.012939848005771637 0.999908447265625 -0.0 0.0880691409111023 0.730804443359375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5259259939193726 1.461111307144165 -0.20000001788139343 -0.010223700664937496 0.791375458240509 -0.6112247109413147 0.0527951717376709 0.7290288209915161 0 1.0 0 0.0 0 0.0 0 0.0\n-2.297805070877075 1.4514405727386475 -0.20000003278255463 -0.04831080138683319 0.6493728160858154 -0.7589038014411926 0.06172066926956177 0.6905316710472107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.45185184478759766 0.20000001788139343 -0.3118381202220917 -0.7871028780937195 0.5321817398071289 0.07891842722892761 0.49934256076812744 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 0.6791495680809021 0.20000001788139343 -0.316965252161026 -0.5666066408157349 0.7605517506599426 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.6407407522201538 -0.0 -0.4933927357196808 -0.869777500629425 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-1.899999976158142 0.40000003576278687 -0.0 -0.36832788586616516 -0.9296853542327881 -0.0 0.05969014763832092 0.49596208333969116 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 0.6791495680809021 0.20000001788139343 -0.316965252161026 -0.5666066408157349 0.7605517506599426 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356653094291687 0.20000003278255463 -0.5061494708061218 -0.40061646699905396 0.7637256979942322 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 0.9092593193054199 -0.0 -0.8023316264152527 -0.5968199968338013 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.6407407522201538 -0.0 -0.4933927357196808 -0.869777500629425 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356653094291687 0.20000003278255463 -0.5061494708061218 -0.40061646699905396 0.7637256979942322 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 0.20000001788139343 -0.6584978699684143 0.11386455595493317 0.7438886761665344 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.2000000476837158 -0.0 -0.9909054636955261 0.1344645470380783 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 0.9092593193054199 -0.0 -0.8023316264152527 -0.5968199968338013 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.5481481552124023 0.20000001788139343 0.18051698803901672 0.3982665538787842 0.8993194103240967 0.08077448606491089 0.5187610983848572 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801154136658 0.20000001788139343 0.3194677531719208 0.4772484600543976 0.8185979723930359 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 0.6791495680809021 0.20000001788139343 -0.316965252161026 -0.5666066408157349 0.7605517506599426 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9259259700775146 0.45185184478759766 0.20000001788139343 -0.3118381202220917 -0.7871028780937195 0.5321817398071289 0.07891842722892761 0.49934256076812744 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801154136658 0.20000001788139343 0.3194677531719208 0.4772484600543976 0.8185979723930359 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 0.20000003278255463 0.4361705482006073 0.286935031414032 0.8528702855110168 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356653094291687 0.20000003278255463 -0.5061494708061218 -0.40061646699905396 0.7637256979942322 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887518882751465 0.6791495680809021 0.20000001788139343 -0.316965252161026 -0.5666066408157349 0.7605517506599426 0.08147895336151123 0.5622939467430115 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 0.20000003278255463 0.4361705482006073 0.286935031414032 0.8528702855110168 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 0.20000001788139343 0.3749198913574219 -0.08151493966579437 0.9234290719032288 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 0.20000001788139343 -0.6584978699684143 0.11386455595493317 0.7438886761665344 0.08831456303596497 0.6356658935546875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356653094291687 0.20000003278255463 -0.5061494708061218 -0.40061646699905396 0.7637256979942322 0.08450451493263245 0.6028463840484619 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 0.7888889312744141 -0.0 0.5534531474113464 0.8328500986099243 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801154136658 0.20000001788139343 0.3194677531719208 0.4772484600543976 0.8185979723930359 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.5481481552124023 0.20000001788139343 0.18051698803901672 0.3982665538787842 0.8993194103240967 0.08077448606491089 0.5187610983848572 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 0.7888889312744141 -0.0 0.5534531474113464 0.8328500986099243 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.0111111402511597 -0.0 0.8244270086288452 0.5659047365188599 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 0.20000003278255463 0.4361705482006073 0.286935031414032 0.8528702855110168 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801154136658 0.20000001788139343 0.3194677531719208 0.4772484600543976 0.8185979723930359 0.08292484283447266 0.5706835985183716 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.0111111402511597 -0.0 0.8244270086288452 0.5659047365188599 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.2000000476837158 -0.0 0.9614245891571045 -0.27500230073928833 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 0.20000001788139343 0.3749198913574219 -0.08151493966579437 0.9234290719032288 0.08917427062988281 0.6358761787414551 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 0.20000003278255463 0.4361705482006073 0.286935031414032 0.8528702855110168 0.08586803078651428 0.6077741980552673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.5481481552124023 -0.20000001788139343 0.18051698803901672 0.3982665538787842 -0.8993194103240967 0.04449453949928284 0.5330513715744019 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801750183105 -0.20000001788139343 0.3194677531719208 0.4772484600543976 -0.8185979723930359 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 0.7888889312744141 -0.0 0.5534531474113464 0.8328500986099243 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.0 0.6000000238418579 -0.0 -0.8362376689910889 0.5483260750770569 -0.0 0.06370410323143005 0.5364704132080078 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801750183105 -0.20000001788139343 0.3194677531719208 0.4772484600543976 -0.8185979723930359 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 -0.20000003278255463 0.4361705482006073 0.286935031414032 -0.8528702855110168 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.0111111402511597 -0.0 0.8244270086288452 0.5659047365188599 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4037036895751953 0.7888889312744141 -0.0 0.5534531474113464 0.8328500986099243 -0.0 0.06835782527923584 0.5818953514099121 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 -0.20000003278255463 0.4361705482006073 0.286935031414032 -0.8528702855110168 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 -0.20000001788139343 0.3749198913574219 -0.08151493966579437 -0.9234290719032288 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.700000047683716 1.2000000476837158 -0.0 0.9614245891571045 -0.27500230073928833 -0.0 0.07517382502555847 0.642316997051239 0 1.0 0 0.0 0 0.0 0 0.0\n-2.629629611968994 1.0111111402511597 -0.0 0.8244270086288452 0.5659047365188599 -0.0 0.07218089699745178 0.616860032081604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.925925850868225 0.45185184478759766 -0.20000001788139343 -0.3118381202220917 -0.7871028780937195 -0.5321817398071289 0.04253512620925903 0.5136716365814209 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 0.6791495680809021 -0.20000001788139343 -0.316965252161026 -0.5666066408157349 -0.7605517506599426 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801750183105 -0.20000001788139343 0.3194677531719208 0.4772484600543976 -0.8185979723930359 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-1.974074125289917 0.5481481552124023 -0.20000001788139343 0.18051698803901672 0.3982665538787842 -0.8993194103240967 0.04449453949928284 0.5330513715744019 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 0.6791495680809021 -0.20000001788139343 -0.316965252161026 -0.5666066408157349 -0.7605517506599426 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356652498245239 -0.20000003278255463 -0.5061494708061218 -0.40061646699905396 -0.7637256979942322 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 -0.20000003278255463 0.4361705482006073 0.286935031414032 -0.8528702855110168 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4334707260131836 0.7504801750183105 -0.20000001788139343 0.3194677531719208 0.4772484600543976 -0.8185979723930359 0.05261978507041931 0.5826413035392761 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356652498245239 -0.20000003278255463 -0.5061494708061218 -0.40061646699905396 -0.7637256979942322 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 -0.20000001788139343 -0.6584978699684143 0.11386455595493317 -0.7438886761665344 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.777777910232544 1.2000000476837158 -0.20000001788139343 0.3749198913574219 -0.08151493966579437 -0.9234290719032288 0.06085139513015747 0.6470903158187866 0 1.0 0 0.0 0 0.0 0 0.0\n-2.694924831390381 0.9847051501274109 -0.20000003278255463 0.4361705482006073 0.286935031414032 -0.8528702855110168 0.057609379291534424 0.6189436912536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.899999976158142 0.40000003576278687 -0.0 -0.36832788586616516 -0.9296853542327881 -0.0 0.05969014763832092 0.49596208333969116 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.6407407522201538 -0.0 -0.4933927357196808 -0.869777500629425 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 0.6791495680809021 -0.20000001788139343 -0.316965252161026 -0.5666066408157349 -0.7605517506599426 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-1.925925850868225 0.45185184478759766 -0.20000001788139343 -0.3118381202220917 -0.7871028780937195 -0.5321817398071289 0.04253512620925903 0.5136716365814209 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5185186862945557 0.6407407522201538 -0.0 -0.4933927357196808 -0.869777500629425 -0.0 0.06648120284080505 0.5638844966888428 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 0.9092593193054199 -0.0 -0.8023316264152527 -0.5968199968338013 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356652498245239 -0.20000003278255463 -0.5061494708061218 -0.40061646699905396 -0.7637256979942322 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n-2.4887516498565674 0.6791495680809021 -0.20000001788139343 -0.316965252161026 -0.5666066408157349 -0.7605517506599426 0.05228587985038757 0.5738112926483154 0 1.0 0 0.0 0 0.0 0 0.0\n-2.881481647491455 0.9092593193054199 -0.0 -0.8023316264152527 -0.5968199968338013 -0.0 0.07094472646713257 0.6058355569839478 0 1.0 0 0.0 0 0.0 0 0.0\n-3.0 1.2000000476837158 -0.0 -0.9909054636955261 0.1344645470380783 -0.0 0.07502612471580505 0.6411035060882568 0 1.0 0 0.0 0 0.0 0 0.0\n-2.922222137451172 1.2000000476837158 -0.20000001788139343 -0.6584978699684143 0.11386455595493317 -0.7438886761665344 0.061596453189849854 0.6462458372116089 0 1.0 0 0.0 0 0.0 0 0.0\n-2.8161864280700684 0.9356652498245239 -0.20000003278255463 -0.5061494708061218 -0.40061646699905396 -0.7637256979942322 0.057814061641693115 0.6133949160575867 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.8000000715255737 0.17303703725337982 0.40681174397468567 0.5766472220420837 0.7084872126579285 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 0.20517970621585846 0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 0.2370370477437973 0.0 -0.539597749710083 0.8419141173362732 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 0.20000000298023224 0.0 0.5759148001670837 0.8174688220024109 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 0.20517970621585846 0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 0.31422773003578186 0.48103275895118713 0.26770836114883423 0.8348032832145691 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 0.3629629611968994 0.0 0.269081711769104 0.9631031155586243 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 0.2370370477437973 0.0 -0.539597749710083 0.8419141173362732 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 0.31422773003578186 0.48103275895118713 0.26770836114883423 0.8348032832145691 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 0.3629629611968994 0.0 0.269081711769104 0.9631031155586243 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.7999999523162842 0.10162962973117828 0.7084872126579285 0.5766472220420837 0.40681174397468567 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 0.12064746022224426 0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 0.20517970621585846 0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.8000000715255737 0.17303703725337982 0.40681174397468567 0.5766472220420837 0.7084872126579285 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 0.12064746022224426 0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 0.18483401834964752 0.8348032832145691 0.26770836114883423 0.48103275895118713 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 0.31422773003578186 0.48103275895118713 0.26770836114883423 0.8348032832145691 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 0.20517970621585846 0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.4992266595363617 0.6713719367980957 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 0.18483401834964752 0.8348032832145691 0.26770836114883423 0.48103275895118713 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 0.31422773003578186 0.48103275895118713 0.26770836114883423 0.8348032832145691 0.48705339431762695 0.6647788286209106 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 1.8000000715255737 -0.0 0.8174688220024109 0.5759148001670837 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 1.922222375869751 -0.0 0.8419141173362732 -0.539597749710083 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 0.12064746022224426 0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.7999999523162842 0.10162962973117828 0.7084872126579285 0.5766472220420837 0.40681174397468567 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 1.922222375869751 -0.0 0.8419141173362732 -0.539597749710083 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 2.0444445610046387 -0.0 0.9631031155586243 0.269081711769104 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 0.18483401834964752 0.8348032832145691 0.26770836114883423 0.48103275895118713 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 0.12064746022224426 0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.5198890566825867 0.6589685082435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 2.0444445610046387 -0.0 0.9631031155586243 0.269081711769104 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 0.18483401834964752 0.8348032832145691 0.26770836114883423 0.48103275895118713 0.5142986178398132 0.6501308679580688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.8000000715255737 0.10162962973117828 -0.7084872126579285 0.5766472220420837 0.40681174397468567 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 0.12064746022224426 -0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 1.922222375869751 -0.0 -0.8419141173362732 -0.539597749710083 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 1.8000000715255737 -0.0 -0.8174688220024109 0.5759148001670837 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 0.12064746022224426 -0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 0.18483401834964752 -0.8348032832145691 0.26770836114883423 0.48103275895118713 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 2.0444445610046387 -0.0 -0.9631031155586243 0.269081711769104 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 1.922222375869751 -0.0 -0.8419141173362732 -0.539597749710083 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 0.18483401834964752 -0.8348032832145691 0.26770836114883423 0.48103275895118713 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 2.0444445610046387 -0.0 -0.9631031155586243 0.269081711769104 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.7999999523162842 0.17303703725337982 -0.40681174397468567 0.5766472220420837 0.7084872126579285 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 0.20517970621585846 -0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 0.12064746022224426 -0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.8000000715255737 0.10162962973117828 -0.7084872126579285 0.5766472220420837 0.40681174397468567 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 0.20517970621585846 -0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 0.31422773003578186 -0.48103275895118713 0.26770836114883423 0.8348032832145691 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 0.18483401834964752 -0.8348032832145691 0.26770836114883423 0.48103275895118713 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 0.12064746022224426 -0.7288430333137512 -0.5416424870491028 0.4187139570713043 0.481635719537735 0.7803635597229004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 0.31422773003578186 -0.48103275895118713 0.26770836114883423 0.8348032832145691 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 0.18483401834964752 -0.8348032832145691 0.26770836114883423 0.48103275895118713 0.4501263201236725 0.8077295422554016 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 0.20000000298023224 0.0 0.5759148001670837 0.8174688220024109 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 0.2370370477437973 0.0 -0.539597749710083 0.8419141173362732 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 0.20517970621585846 -0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.7999999523162842 0.17303703725337982 -0.40681174397468567 0.5766472220420837 0.7084872126579285 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 0.2370370477437973 0.0 -0.539597749710083 0.8419141173362732 0.4821370542049408 0.6989800930023193 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 0.3629629611968994 0.0 0.269081711769104 0.9631031155586243 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 0.31422773003578186 -0.48103275895118713 0.26770836114883423 0.8348032832145691 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 0.20517970621585846 -0.4187139570713043 -0.5416424870491028 0.7288430333137512 0.47388893365859985 0.7385139465332031 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 0.3629629611968994 0.0 0.269081711769104 0.9631031155586243 0.46264198422431946 0.698793888092041 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 0.31422773003578186 -0.48103275895118713 0.26770836114883423 0.8348032832145691 0.4467930197715759 0.7496343851089478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.8000000715255737 -0.17303703725337982 -0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 -0.20517970621585846 -0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 -0.2370370477437973 0.0 -0.539597749710083 -0.8419141173362732 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 -0.20000000298023224 0.0 0.5759148001670837 -0.8174688220024109 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 -0.20517970621585846 -0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 -0.31422773003578186 -0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 -0.3629629611968994 0.0 0.269081711769104 -0.9631031155586243 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 -0.2370370477437973 0.0 -0.539597749710083 -0.8419141173362732 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 -0.31422773003578186 -0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 -0.3629629611968994 0.0 0.269081711769104 -0.9631031155586243 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.7999999523162842 -0.10162962973117828 -0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 -0.12064746022224426 -0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 -0.20517970621585846 -0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.8000000715255737 -0.17303703725337982 -0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 -0.12064746022224426 -0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 -0.18483401834964752 -0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 -0.31422773003578186 -0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12064746022224426 1.922222375869751 -0.20517970621585846 -0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.582847535610199 0.781477689743042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 -0.18483401834964752 -0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18483401834964752 2.0444445610046387 -0.31422773003578186 -0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.6060935854911804 0.8111084699630737 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 1.8000000715255737 -0.0 -0.8174688220024109 0.5759148001670837 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 1.922222375869751 -0.0 -0.8419141173362732 -0.539597749710083 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 -0.12064746022224426 -0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.7999999523162842 -0.10162962973117828 -0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2370370477437973 1.922222375869751 -0.0 -0.8419141173362732 -0.539597749710083 -0.0 0.5128114819526672 0.8111486434936523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 2.0444445610046387 -0.0 -0.9631031155586243 0.269081711769104 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 -0.18483401834964752 -0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20517970621585846 1.922222375869751 -0.12064746022224426 -0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5560003519058228 0.8104372024536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3629629611968994 2.0444445610046387 -0.0 -0.9631031155586243 0.269081711769104 -0.0 0.49338704347610474 0.8562493920326233 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31422773003578186 2.0444445610046387 -0.18483401834964752 -0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5681052803993225 0.8555918335914612 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.8000000715255737 -0.10162962973117828 0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 -0.12064746022224426 0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 1.922222375869751 -0.0 0.8419141173362732 -0.539597749710083 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 1.8000000715255737 -0.0 0.8174688220024109 0.5759148001670837 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 -0.12064746022224426 0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 -0.18483401834964752 0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 2.0444445610046387 -0.0 0.9631031155586243 0.269081711769104 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.2370370477437973 1.922222375869751 -0.0 0.8419141173362732 -0.539597749710083 -0.0 0.5426700711250305 0.6608849167823792 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 -0.18483401834964752 0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3629629611968994 2.0444445610046387 -0.0 0.9631031155586243 0.269081711769104 -0.0 0.5436645150184631 0.6531122922897339 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.7999999523162842 -0.17303703725337982 0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 -0.20517970621585846 0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 -0.12064746022224426 0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.8000000715255737 -0.10162962973117828 0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 -0.20517970621585846 0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 -0.31422773003578186 0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 -0.18483401834964752 0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.20517970621585846 1.922222375869751 -0.12064746022224426 0.7288430333137512 -0.5416424870491028 -0.4187139570713043 0.5640130639076233 0.6764401793479919 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 -0.31422773003578186 0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.31422773003578186 2.0444445610046387 -0.18483401834964752 0.8348032832145691 0.26770836114883423 -0.48103275895118713 0.5714684724807739 0.6727004051208496 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 -0.20000000298023224 0.0 0.5759148001670837 -0.8174688220024109 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 -0.2370370477437973 0.0 -0.539597749710083 -0.8419141173362732 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 -0.20517970621585846 0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.7999999523162842 -0.17303703725337982 0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.922222375869751 -0.2370370477437973 0.0 -0.539597749710083 -0.8419141173362732 0.5888028740882874 0.7407431602478027 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 -0.3629629611968994 0.0 0.269081711769104 -0.9631031155586243 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 -0.31422773003578186 0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.12064746022224426 1.922222375869751 -0.20517970621585846 0.4187139570713043 -0.5416424870491028 -0.7288430333137512 0.5802648663520813 0.7032516002655029 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.0444445610046387 -0.3629629611968994 0.0 0.269081711769104 -0.9631031155586243 0.6086547374725342 0.7549499869346619 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 2.1000001430511475 -0.0 0.0 1.0 -0.0 0.5284969806671143 0.7498512864112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.18483401834964752 2.0444445610046387 -0.31422773003578186 0.48103275895118713 0.26770836114883423 -0.8348032832145691 0.5938968062400818 0.7064254879951477 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 1.6000001430511475 1.124740719795227 0.14654988050460815 0.9560533165931702 0.2539139986038208 0.4359894394874573 0.460996150970459 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 0.9164553880691528 0.10739463567733765 0.9764397144317627 0.18707846105098724 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 1.0592591762542725 0.0 0.9763481616973877 0.21616260707378387 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.2999999523162842 0.0 0.9557786583900452 0.2940763533115387 0.36910760402679443 0.5083151459693909 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 0.9164553880691528 0.10739463567733765 0.9764397144317627 0.18707846105098724 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 0.496680349111557 0.0711386427283287 0.9897457957267761 0.12363047897815704 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 0.5740740895271301 0.0 0.9896847605705261 0.1431928426027298 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 1.0592591762542725 0.0 0.9763481616973877 0.21616260707378387 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 0.496680349111557 0.0711386427283287 0.9897457957267761 0.12363047897815704 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.8000000715255737 0.17303703725337982 0.40681174397468567 0.5766472220420837 0.7084872126579285 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 0.20000000298023224 0.0 0.5759148001670837 0.8174688220024109 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 0.5740740895271301 0.0 0.9896847605705261 0.1431928426027298 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 1.6000001430511475 0.6605925559997559 0.2539139986038208 0.9560533165931702 0.14654988050460815 0.49968165159225464 0.4449015259742737 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 0.5382605791091919 0.18707846105098724 0.9764397144317627 0.10739463567733765 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 0.9164553880691528 0.10739463567733765 0.9764397144317627 0.18707846105098724 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 1.6000001430511475 1.124740719795227 0.14654988050460815 0.9560533165931702 0.2539139986038208 0.4359894394874573 0.460996150970459 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 0.5382605791091919 0.18707846105098724 0.9764397144317627 0.10739463567733765 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 0.2917146682739258 0.12363047897815704 0.9897457957267761 0.0711386427283287 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 0.496680349111557 0.0711386427283287 0.9897457957267761 0.12363047897815704 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 0.9164553880691528 0.10739463567733765 0.9764397144317627 0.18707846105098724 0.4442180395126343 0.49124330282211304 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 0.2917146682739258 0.12363047897815704 0.9897457957267761 0.0711386427283287 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.7999999523162842 0.10162962973117828 0.7084872126579285 0.5766472220420837 0.40681174397468567 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.8000000715255737 0.17303703725337982 0.40681174397468567 0.5766472220420837 0.7084872126579285 0.5041325092315674 0.6560440063476562 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 0.496680349111557 0.0711386427283287 0.9897457957267761 0.12363047897815704 0.46832916140556335 0.5594615340232849 0 1.0 0 0.0 0 0.0 0 0.0\n1.2999999523162842 1.6000001430511475 -0.0 0.2940763533115387 0.9557786583900452 -0.0 0.5643860697746277 0.45672929286956787 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 1.6740740537643433 -0.0 0.21616260707378387 0.9763481616973877 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 0.5382605791091919 0.18707846105098724 0.9764397144317627 0.10739463567733765 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 1.6000001430511475 0.6605925559997559 0.2539139986038208 0.9560533165931702 0.14654988050460815 0.49968165159225464 0.4449015259742737 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 1.6740740537643433 -0.0 0.21616260707378387 0.9763481616973877 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 1.7259259223937988 -0.0 0.1431928426027298 0.9896847605705261 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 0.2917146682739258 0.12363047897815704 0.9897457957267761 0.0711386427283287 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 0.5382605791091919 0.18707846105098724 0.9764397144317627 0.10739463567733765 0.5023486614227295 0.4748995900154114 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 1.7259259223937988 -0.0 0.1431928426027298 0.9896847605705261 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 1.8000000715255737 -0.0 0.8174688220024109 0.5759148001670837 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.7999999523162842 0.10162962973117828 0.7084872126579285 0.5766472220420837 0.40681174397468567 0.5232969522476196 0.644173264503479 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 0.2917146682739258 0.12363047897815704 0.9897457957267761 0.0711386427283287 0.5109633207321167 0.5429613590240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 1.6000001430511475 0.6605925559997559 -0.2539139986038208 0.9560533165931702 0.14654988050460815 0.2195276916027069 0.6834987998008728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 0.5382605791091919 -0.18707846105098724 0.9764397144317627 0.10739463567733765 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 1.6740740537643433 -0.0 -0.21616260707378387 0.9763481616973877 -0.0 0.11632069945335388 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2999999523162842 1.6000001430511475 -0.0 -0.2940763533115387 0.9557786583900452 -0.0 0.09754133224487305 0.776390016078949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 0.5382605791091919 -0.18707846105098724 0.9764397144317627 0.10739463567733765 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 0.2917146682739258 -0.12363047897815704 0.9897457957267761 0.0711386427283287 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 1.7259259223937988 -0.0 -0.1431928426027298 0.9896847605705261 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 1.6740740537643433 -0.0 -0.21616260707378387 0.9763481616973877 -0.0 0.11632069945335388 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 0.2917146682739258 -0.12363047897815704 0.9897457957267761 0.0711386427283287 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.8000000715255737 0.10162962973117828 -0.7084872126579285 0.5766472220420837 0.40681174397468567 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 1.8000000715255737 -0.0 -0.8174688220024109 0.5759148001670837 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 1.7259259223937988 -0.0 -0.1431928426027298 0.9896847605705261 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 1.6000001430511475 1.124740719795227 -0.14654988050460815 0.9560533165931702 0.2539139986038208 0.2990068793296814 0.5859890580177307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 0.9164553880691528 -0.10739463567733765 0.9764397144317627 0.18707846105098724 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 0.5382605791091919 -0.18707846105098724 0.9764397144317627 0.10739463567733765 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 1.6000001430511475 0.6605925559997559 -0.2539139986038208 0.9560533165931702 0.14654988050460815 0.2195276916027069 0.6834987998008728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 0.9164553880691528 -0.10739463567733765 0.9764397144317627 0.18707846105098724 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 0.496680349111557 -0.0711386427283287 0.9897457957267761 0.12363047897815704 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 0.2917146682739258 -0.12363047897815704 0.9897457957267761 0.0711386427283287 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 0.5382605791091919 -0.18707846105098724 0.9764397144317627 0.10739463567733765 0.24561625719070435 0.7239598035812378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 0.496680349111557 -0.0711386427283287 0.9897457957267761 0.12363047897815704 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.7999999523162842 0.17303703725337982 -0.40681174397468567 0.5766472220420837 0.7084872126579285 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.8000000715255737 0.10162962973117828 -0.7084872126579285 0.5766472220420837 0.40681174397468567 0.49074476957321167 0.7595763206481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 0.2917146682739258 -0.12363047897815704 0.9897457957267761 0.0711386427283287 0.3546844720840454 0.7904790043830872 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 1.2999999523162842 0.0 0.9557786583900452 0.2940763533115387 0.36910760402679443 0.5083151459693909 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 1.0592591762542725 0.0 0.9763481616973877 0.21616260707378387 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 0.9164553880691528 -0.10739463567733765 0.9764397144317627 0.18707846105098724 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 1.6000001430511475 1.124740719795227 -0.14654988050460815 0.9560533165931702 0.2539139986038208 0.2990068793296814 0.5859890580177307 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 1.0592591762542725 0.0 0.9763481616973877 0.21616260707378387 0.3831595182418823 0.538464367389679 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 0.5740740895271301 0.0 0.9896847605705261 0.1431928426027298 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 0.496680349111557 -0.0711386427283287 0.9897457957267761 0.12363047897815704 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 0.9164553880691528 -0.10739463567733765 0.9764397144317627 0.18707846105098724 0.31909865140914917 0.6180595755577087 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 0.5740740895271301 0.0 0.9896847605705261 0.1431928426027298 0.4255322217941284 0.6038855314254761 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 0.20000000298023224 0.0 0.5759148001670837 0.8174688220024109 0.48873022198677063 0.6823248863220215 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.7999999523162842 0.17303703725337982 -0.40681174397468567 0.5766472220420837 0.7084872126579285 0.4821886718273163 0.7199850678443909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 0.496680349111557 -0.0711386427283287 0.9897457957267761 0.12363047897815704 0.38573700189590454 0.6806533336639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 1.6000001430511475 -1.124740719795227 -0.14654988050460815 0.9560533165931702 -0.2539139986038208 0.8236000537872314 0.7096928954124451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 -0.9164553880691528 -0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 -1.0592591762542725 0.0 0.9763481616973877 -0.21616260707378387 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.2999999523162842 0.0 0.9557786583900452 -0.2940763533115387 0.7460972666740417 0.6234467029571533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 -0.9164553880691528 -0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 -0.496680349111557 -0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 -0.5740740895271301 0.0 0.9896847605705261 -0.1431928426027298 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 -1.0592591762542725 0.0 0.9763481616973877 -0.21616260707378387 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 -0.496680349111557 -0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.8000000715255737 -0.17303703725337982 -0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 -0.20000000298023224 0.0 0.5759148001670837 -0.8174688220024109 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 -0.5740740895271301 0.0 0.9896847605705261 -0.1431928426027298 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 1.6000001430511475 -0.6605925559997559 -0.2539139986038208 0.9560533165931702 -0.14654988050460815 0.9360653162002563 0.7810214757919312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 -0.5382605791091919 -0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 -0.9164553880691528 -0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6605925559997559 1.6000001430511475 -1.124740719795227 -0.14654988050460815 0.9560533165931702 -0.2539139986038208 0.8236000537872314 0.7096928954124451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 -0.5382605791091919 -0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 -0.2917146682739258 -0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 -0.496680349111557 -0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5382605791091919 1.6740740537643433 -0.9164553880691528 -0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.7985010147094727 0.7418715357780457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 -0.2917146682739258 -0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.7999999523162842 -0.10162962973117828 -0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10162962973117828 1.8000000715255737 -0.17303703725337982 -0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.5817010402679443 0.7591943740844727 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2917146682739258 1.7259259223937988 -0.496680349111557 -0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.7038067579269409 0.7858607769012451 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2999999523162842 1.6000001430511475 -0.0 -0.2940763533115387 0.9557786583900452 -0.0 1.097541332244873 0.776390016078949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 1.6740740537643433 -0.0 -0.21616260707378387 0.9763481616973877 -0.0 1.1163207292556763 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 -0.5382605791091919 -0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.124740719795227 1.6000001430511475 -0.6605925559997559 -0.2539139986038208 0.9560533165931702 -0.14654988050460815 0.9360653162002563 0.7810214757919312 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0592591762542725 1.6740740537643433 -0.0 -0.21616260707378387 0.9763481616973877 -0.0 1.1163207292556763 0.8349870443344116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 1.7259259223937988 -0.0 -0.1431928426027298 0.9896847605705261 -0.0 1.3661776781082153 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 -0.2917146682739258 -0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9164553880691528 1.6740740537643433 -0.5382605791091919 -0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.9121720790863037 0.8325029611587524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5740740895271301 1.7259259223937988 -0.0 -0.1431928426027298 0.9896847605705261 -0.0 0.36617764830589294 0.9340194463729858 0 1.0 0 0.0 0 0.0 0 0.0\n-0.20000000298023224 1.8000000715255737 -0.0 -0.8174688220024109 0.5759148001670837 -0.0 0.5197122097015381 0.7878735065460205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17303703725337982 1.7999999523162842 -0.10162962973117828 -0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.5577818155288696 0.7865083813667297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.496680349111557 1.7259259223937988 -0.2917146682739258 -0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.7133582830429077 0.9042637944221497 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 1.6000001430511475 -0.6605925559997559 0.2539139986038208 0.9560533165931702 -0.14654988050460815 0.6261259913444519 0.4934276342391968 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 -0.5382605791091919 0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 1.6740740537643433 -0.0 0.21616260707378387 0.9763481616973877 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n1.2999999523162842 1.6000001430511475 -0.0 0.2940763533115387 0.9557786583900452 -0.0 0.5643860697746277 0.45672929286956787 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 -0.5382605791091919 0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 -0.2917146682739258 0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 1.7259259223937988 -0.0 0.1431928426027298 0.9896847605705261 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n1.0592591762542725 1.6740740537643433 -0.0 0.21616260707378387 0.9763481616973877 -0.0 0.5615435838699341 0.4852682948112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 -0.2917146682739258 0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.8000000715255737 -0.10162962973117828 0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.20000000298023224 1.8000000715255737 -0.0 0.8174688220024109 0.5759148001670837 -0.0 0.5445703268051147 0.6458508968353271 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740740895271301 1.7259259223937988 -0.0 0.1431928426027298 0.9896847605705261 -0.0 0.555172324180603 0.5494076013565063 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 1.6000001430511475 -1.124740719795227 0.14654988050460815 0.9560533165931702 -0.2539139986038208 0.6835131645202637 0.5485973954200745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 -0.9164553880691528 0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 -0.5382605791091919 0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n1.124740719795227 1.6000001430511475 -0.6605925559997559 0.2539139986038208 0.9560533165931702 -0.14654988050460815 0.6261259913444519 0.4934276342391968 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 -0.9164553880691528 0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 -0.496680349111557 0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 -0.2917146682739258 0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.9164553880691528 1.6740740537643433 -0.5382605791091919 0.18707846105098724 0.9764397144317627 -0.10739463567733765 0.6183353066444397 0.519606351852417 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 -0.496680349111557 0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.7999999523162842 -0.17303703725337982 0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.17303703725337982 1.8000000715255737 -0.10162962973117828 0.7084872126579285 0.5766472220420837 -0.40681174397468567 0.564504861831665 0.6604757905006409 0 1.0 0 0.0 0 0.0 0 0.0\n0.496680349111557 1.7259259223937988 -0.2917146682739258 0.12363047897815704 0.9897457957267761 -0.0711386427283287 0.5976952910423279 0.5767679214477539 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6000001430511475 -1.2999999523162842 0.0 0.9557786583900452 -0.2940763533115387 0.7460972666740417 0.6234467029571533 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 -1.0592591762542725 0.0 0.9763481616973877 -0.21616260707378387 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 -0.9164553880691528 0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.6605925559997559 1.6000001430511475 -1.124740719795227 0.14654988050460815 0.9560533165931702 -0.2539139986038208 0.6835131645202637 0.5485973954200745 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.6740740537643433 -1.0592591762542725 0.0 0.9763481616973877 -0.21616260707378387 0.7281266450881958 0.648444652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 -0.5740740895271301 0.0 0.9896847605705261 -0.1431928426027298 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 -0.496680349111557 0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382605791091919 1.6740740537643433 -0.9164553880691528 0.10739463567733765 0.9764397144317627 -0.18707846105098724 0.671147882938385 0.5729851722717285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.7259259223937988 -0.5740740895271301 0.0 0.9896847605705261 -0.1431928426027298 0.6721643209457397 0.6914557218551636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 1.8000000715255737 -0.20000000298023224 0.0 0.5759148001670837 -0.8174688220024109 0.5873590707778931 0.720962405204773 0 1.0 0 0.0 0 0.0 0 0.0\n0.10162962973117828 1.7999999523162842 -0.17303703725337982 0.40681174397468567 0.5766472220420837 -0.7084872126579285 0.579617977142334 0.6857367753982544 0 1.0 0 0.0 0 0.0 0 0.0\n0.2917146682739258 1.7259259223937988 -0.496680349111557 0.0711386427283287 0.9897457957267761 -0.12363047897815704 0.6358808279037476 0.6224647760391235 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.10000000894069672 -1.297777771949768 0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 -1.2352921962738037 0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 -1.4277777671813965 0.0 -0.9297769069671631 -0.36808374524116516 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 -1.5 0.0 -0.8341318964958191 -0.5515609979629517 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 -1.2352921962738037 0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 -0.8844115138053894 0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 -1.0222222805023193 0.0 -0.9982299208641052 -0.059053316712379456 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 -1.4277777671813965 0.0 -0.9297769069671631 -0.36808374524116516 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 -0.8844115138053894 0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 -1.0222222805023193 0.0 -0.9982299208641052 -0.059053316712379456 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 -0.7622222304344177 0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 -0.7255226373672485 0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 -1.2352921962738037 0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222304344177 0.10000000894069672 -1.297777771949768 0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.7510849833488464 0.31206804513931274 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 -0.7255226373672485 0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 -0.5194402933120728 0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 -0.8844115138053894 0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 -1.2352921962738037 0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.7540410757064819 0.30017149448394775 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 -0.5194402933120728 0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 -0.8844115138053894 0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.7632773518562317 0.25209832191467285 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.10000000894069672 -0.0 0.5515609979629517 -0.8341318964958191 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.05185185372829437 -0.0 0.36808374524116516 -0.9297769069671631 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 -0.7255226373672485 0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 -0.7622222304344177 0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.6829252243041992 0.25979578495025635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.05185185372829437 -0.0 0.36808374524116516 -0.9297769069671631 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.014814815483987331 -0.0 0.059053316712379456 -0.9982299208641052 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 -0.5194402933120728 0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 -0.7255226373672485 0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.6862674951553345 0.24870890378952026 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.014814815483987331 -0.0 0.059053316712379456 -0.9982299208641052 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 -0.5194402933120728 0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.6987160444259644 0.20644497871398926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 -0.7622222900390625 -0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 -0.7255226373672485 -0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.05185185372829437 -0.0 -0.36808374524116516 -0.9297769069671631 -0.0 1.0485270023345947 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.10000000894069672 -0.0 -0.5515609979629517 -0.8341318964958191 -0.0 1.0504302978515625 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 -0.7255226373672485 -0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 -0.5194402933120728 -0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.014814815483987331 -0.0 -0.059053316712379456 -0.9982299208641052 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.05185185372829437 -0.0 -0.36808374524116516 -0.9297769069671631 -0.0 1.0485270023345947 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 -0.5194402933120728 -0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.014814815483987331 -0.0 -0.059053316712379456 -0.9982299208641052 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 -1.2977778911590576 -0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 -1.2352921962738037 -0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 -0.7255226373672485 -0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 -0.7622222900390625 -0.4770042896270752 -0.8349558711051941 -0.27433088421821594 0.9665573835372925 0.4220300316810608 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 -1.2352921962738037 -0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 -0.8844115138053894 -0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 -0.5194402933120728 -0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 -0.7255226373672485 -0.3188573718070984 -0.9299294948577881 -0.1830500215291977 0.9663537740707397 0.4050024747848511 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 -0.8844115138053894 -0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 -0.5194402933120728 -0.051118504256010056 -0.9982604384422302 -0.02932828664779663 0.9622154831886292 0.331081748008728 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 -1.5 0.0 -0.8341318964958191 -0.5515609979629517 0.8191912174224854 0.3644620180130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 -1.4277777671813965 0.0 -0.9297769069671631 -0.36808374524116516 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 -1.2352921962738037 -0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 -1.2977778911590576 -0.27433088421821594 -0.8349558711051941 -0.4770042896270752 0.8909897804260254 0.40578246116638184 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 -1.4277777671813965 0.0 -0.9297769069671631 -0.36808374524116516 0.8214733600616455 0.3509402871131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 -1.0222222805023193 0.0 -0.9982299208641052 -0.059053316712379456 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 -0.8844115138053894 -0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 -1.2352921962738037 -0.1830500215291977 -0.9299294948577881 -0.3188573718070984 0.892227292060852 0.3902755379676819 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 -1.0222222805023193 0.0 -0.9982299208641052 -0.059053316712379456 0.8270381689071655 0.2939903736114502 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 -0.8844115138053894 -0.02932828664779663 -0.9982604384422302 -0.051118504256010056 0.8933113813400269 0.3235763907432556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 1.2977778911590576 -0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 1.2352921962738037 -0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 1.4277777671813965 0.0 -0.9297769069671631 0.36808374524116516 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 1.5 0.0 -0.8341318964958191 0.5515609979629517 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 1.2352921962738037 -0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 0.8844115138053894 -0.02932828664779663 -0.9982604384422302 0.051118504256010056 0.1950553059577942 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 1.0222222805023193 0.0 -0.9982299208641052 0.059053316712379456 0.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 1.4277777671813965 0.0 -0.9297769069671631 0.36808374524116516 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 0.8844115138053894 -0.02932828664779663 -0.9982604384422302 0.051118504256010056 1.1950552463531494 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 1.0222222805023193 0.0 -0.9982299208641052 0.059053316712379456 1.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 0.7622222900390625 -0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 0.7255226373672485 -0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 1.2352921962738037 -0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7622222900390625 0.10000000894069672 1.2977778911590576 -0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.21255284547805786 0.3001919388771057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 0.7255226373672485 -0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 0.5194402933120728 -0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.11793729662895203 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 0.8844115138053894 -0.02932828664779663 -0.9982604384422302 0.051118504256010056 0.1950553059577942 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7255226373672485 0.05185185372829437 1.2352921962738037 -0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.20883628726005554 0.28566569089889526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 0.5194402933120728 -0.051118504256010056 -0.9982604384422302 0.02932828664779663 1.1179373264312744 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5194402933120728 0.014814815483987331 0.8844115138053894 -0.02932828664779663 -0.9982604384422302 0.051118504256010056 1.1950552463531494 0.22187775373458862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5 0.10000000894069672 -0.0 -0.5515609979629517 -0.8341318964958191 -0.0 0.05043032765388489 0.4051086902618408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.05185185372829437 -0.0 -0.36808374524116516 -0.9297769069671631 -0.0 0.0485270619392395 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 0.7255226373672485 -0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2977778911590576 0.10000000894069672 0.7622222900390625 -0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.13414856791496277 0.35897499322891235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4277777671813965 0.05185185372829437 -0.0 -0.36808374524116516 -0.9297769069671631 -0.0 0.0485270619392395 0.38783693313598633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.014814815483987331 -0.0 -0.059053316712379456 -0.9982299208641052 -0.0 0.03897655010223389 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 0.5194402933120728 -0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.11793729662895203 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2352921962738037 0.05185185372829437 0.7255226373672485 -0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.13097339868545532 0.34291285276412964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0222222805023193 0.014814815483987331 -0.0 -0.059053316712379456 -0.9982299208641052 -0.0 1.0389765501022339 0.31207895278930664 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8844115138053894 0.014814815483987331 0.5194402933120728 -0.051118504256010056 -0.9982604384422302 0.02932828664779663 1.1179373264312744 0.2717345356941223 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 0.7622222304344177 0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 0.7255226373672485 0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.05185185372829437 -0.0 0.36808374524116516 -0.9297769069671631 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n1.5 0.10000000894069672 -0.0 0.5515609979629517 -0.8341318964958191 -0.0 0.600112795829773 0.21345442533493042 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 0.7255226373672485 0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 0.5194402933120728 0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.014814815483987331 -0.0 0.059053316712379456 -0.9982299208641052 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n1.4277777671813965 0.05185185372829437 -0.0 0.36808374524116516 -0.9297769069671631 -0.0 0.6032134890556335 0.2022572159767151 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 0.5194402933120728 0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n1.0222222805023193 0.014814815483987331 -0.0 0.059053316712379456 -0.9982299208641052 -0.0 0.617790937423706 0.16165071725845337 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.10000000894069672 1.2977778911590576 0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 1.2352921962738037 0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 0.7255226373672485 0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n1.297777771949768 0.10000000894069672 0.7622222304344177 0.4770042896270752 -0.8349558711051941 0.27433088421821594 0.49929916858673096 0.19021719694137573 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 1.2352921962738037 0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 0.8844115138053894 0.02932828664779663 -0.9982604384422302 0.051118504256010056 0.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 0.5194402933120728 0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n1.2352921962738037 0.05185185372829437 0.7255226373672485 0.3188573718070984 -0.9299294948577881 0.1830500215291977 0.5004870891571045 0.17821049690246582 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 0.8844115138053894 0.02932828664779663 -0.9982604384422302 0.051118504256010056 1.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.8844115138053894 0.014814815483987331 0.5194402933120728 0.051118504256010056 -0.9982604384422302 0.02932828664779663 0.510748028755188 0.13395017385482788 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.10000000894069672 1.5 0.0 -0.8341318964958191 0.5515609979629517 0.29800066351890564 0.24066346883773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 1.4277777671813965 0.0 -0.9297769069671631 0.36808374524116516 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 1.2352921962738037 0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.7622222900390625 0.10000000894069672 1.2977778911590576 0.27433088421821594 -0.8349558711051941 0.4770042896270752 0.3956698775291443 0.19993311166763306 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.05185185372829437 1.4277777671813965 0.0 -0.9297769069671631 0.36808374524116516 0.2945656180381775 0.22730082273483276 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 1.0222222805023193 0.0 -0.9982299208641052 0.059053316712379456 0.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 0.8844115138053894 0.02932828664779663 -0.9982604384422302 0.051118504256010056 0.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0.7255226373672485 0.05185185372829437 1.2352921962738037 0.1830500215291977 -0.9299294948577881 0.3188573718070984 0.39399421215057373 0.18722987174987793 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.014814815483987331 1.0222222805023193 0.0 -0.9982299208641052 0.059053316712379456 1.2835932970046997 0.17100036144256592 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.0 0.0 -0.999969482421875 -0.0 0.8970043659210205 0.07225430011749268 0 1.0 0 0.0 0 0.0 0 0.0\n0.5194402933120728 0.014814815483987331 0.8844115138053894 0.02932828664779663 -0.9982604384422302 0.051118504256010056 1.3923133611679077 0.1371731162071228 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n0 2 3 0\n4 5 6 0\n4 6 7 0\n8 9 10 0\n8 10 11 0\n12 13 14 0\n12 14 15 0\n16 17 18 0\n16 18 19 0\n20 21 22 0\n20 22 23 0\n24 25 26 0\n24 26 27 0\n28 29 30 0\n28 30 31 0\n32 33 34 0\n32 34 35 0\n36 37 38 0\n36 38 39 0\n40 41 42 0\n40 42 43 0\n44 45 46 0\n44 46 47 0\n48 49 50 0\n48 50 51 0\n52 53 54 0\n52 54 55 0\n56 57 58 0\n56 58 59 0\n60 61 62 0\n60 62 63 0\n64 65 66 0\n64 66 67 0\n68 69 70 0\n68 70 71 0\n72 73 74 0\n72 74 75 0\n76 77 78 0\n76 78 79 0\n80 81 82 0\n80 82 83 0\n84 85 86 0\n84 86 87 0\n88 89 90 0\n88 90 91 0\n92 93 94 0\n92 94 95 0\n96 97 98 0\n96 98 99 0\n100 101 102 0\n100 102 103 0\n104 105 106 0\n104 106 107 0\n108 109 110 0\n108 110 111 0\n112 113 114 0\n112 114 115 0\n116 117 118 0\n116 118 119 0\n120 121 122 0\n120 122 123 0\n124 125 126 0\n124 126 127 0\n128 129 130 0\n128 130 131 0\n132 133 134 0\n132 134 135 0\n136 137 138 0\n136 138 139 0\n140 141 142 0\n140 142 143 0\n144 145 146 0\n144 146 147 0\n148 149 150 0\n148 150 151 0\n152 153 154 0\n152 154 155 0\n156 157 158 0\n156 158 159 0\n160 161 162 0\n160 162 163 0\n164 165 166 0\n164 166 167 0\n168 169 170 0\n168 170 171 0\n172 173 174 0\n172 174 175 0\n176 177 178 0\n176 178 179 0\n180 181 182 0\n180 182 183 0\n184 185 186 0\n184 186 187 0\n188 189 190 0\n188 190 191 0\n192 193 194 0\n192 194 195 0\n196 197 198 0\n196 198 199 0\n200 201 202 0\n200 202 203 0\n204 205 206 0\n204 206 207 0\n208 209 210 0\n208 210 211 0\n212 213 214 0\n212 214 215 0\n216 217 218 0\n216 218 219 0\n220 221 222 0\n220 222 223 0\n224 225 226 0\n224 226 227 0\n228 229 230 0\n228 230 231 0\n232 233 234 0\n232 234 235 0\n236 237 238 0\n236 238 239 0\n240 241 242 0\n240 242 243 0\n244 245 246 0\n244 246 247 0\n248 249 250 0\n248 250 251 0\n252 253 254 0\n252 254 255 0\n256 257 258 0\n256 258 259 0\n260 261 262 0\n260 262 263 0\n264 265 266 0\n264 266 267 0\n268 269 270 0\n268 270 271 0\n272 273 274 0\n272 274 275 0\n276 277 278 0\n276 278 279 0\n280 281 282 0\n280 282 283 0\n284 285 286 0\n284 286 287 0\n288 289 290 0\n288 290 291 0\n292 293 294 0\n292 294 295 0\n296 297 298 0\n296 298 299 0\n300 301 302 0\n300 302 303 0\n304 305 306 0\n304 306 307 0\n308 309 310 0\n308 310 311 0\n312 313 314 0\n312 314 315 0\n316 317 318 0\n316 318 319 0\n320 321 322 0\n320 322 323 0\n324 325 326 0\n324 326 327 0\n328 329 330 0\n328 330 331 0\n332 333 334 0\n332 334 335 0\n336 337 338 0\n336 338 339 0\n340 341 342 0\n340 342 343 0\n344 345 346 0\n344 346 347 0\n348 349 350 0\n348 350 351 0\n352 353 354 0\n352 354 355 0\n356 357 358 0\n356 358 359 0\n360 361 362 0\n360 362 363 0\n364 365 366 0\n364 366 367 0\n368 369 370 0\n368 370 371 0\n372 373 374 0\n372 374 375 0\n376 377 378 0\n376 378 379 0\n380 381 382 0\n380 382 383 0\n384 385 386 0\n384 386 387 0\n388 389 390 0\n388 390 391 0\n392 393 394 0\n392 394 395 0\n396 397 398 0\n396 398 399 0\n400 401 402 0\n400 402 403 0\n404 405 406 0\n404 406 407 0\n408 409 410 0\n408 410 411 0\n412 413 414 0\n412 414 415 0\n416 417 418 0\n416 418 419 0\n420 421 422 0\n420 422 423 0\n424 425 426 0\n424 426 427 0\n428 429 430 0\n428 430 431 0\n432 433 434 0\n432 434 435 0\n436 437 438 0\n436 438 439 0\n440 441 442 0\n440 442 443 0\n444 445 446 0\n444 446 447 0\n448 449 450 0\n448 450 451 0\n452 453 454 0\n452 454 455 0\n456 457 458 0\n456 458 459 0\n460 461 462 0\n460 462 463 0\n464 465 466 0\n464 466 467 0\n468 469 470 0\n468 470 471 0\n472 473 474 0\n472 474 475 0\n476 477 478 0\n476 478 479 0\n480 481 482 0\n480 482 483 0\n484 485 486 0\n484 486 487 0\n488 489 490 0\n488 490 491 0\n492 493 494 0\n492 494 495 0\n496 497 498 0\n496 498 499 0\n500 501 502 0\n500 502 503 0\n504 505 506 0\n504 506 507 0\n508 509 510 0\n508 510 511 0\n512 513 514 0\n512 514 515 0\n516 517 518 0\n516 518 519 0\n520 521 522 0\n520 522 523 0\n524 525 526 0\n524 526 527 0\n528 529 530 0\n528 530 531 0\n532 533 534 0\n532 534 535 0\n536 537 538 0\n536 538 539 0\n540 541 542 0\n540 542 543 0\n544 545 546 0\n544 546 547 0\n548 549 550 0\n548 550 551 0\n552 553 554 0\n552 554 555 0\n556 557 558 0\n556 558 559 0\n560 561 562 0\n560 562 563 0\n564 565 566 0\n564 566 567 0\n568 569 570 0\n568 570 571 0\n572 573 574 0\n572 574 575 0\n576 577 578 0\n576 578 579 0\n580 581 582 0\n580 582 583 0\n584 585 586 0\n587 588 589 0\n587 589 590 0\n591 592 593 0\n591 593 594 0\n595 596 597 0\n598 599 600 0\n598 600 601 0\n602 603 604 0\n602 604 605 0\n606 607 608 0\n609 610 611 0\n609 611 612 0\n613 614 615 0\n613 615 616 0\n617 618 619 0\n620 621 622 0\n620 622 623 0\n624 625 626 0\n624 626 627 0\n628 629 630 0\n631 632 633 0\n631 633 634 0\n635 636 637 0\n635 637 638 0\n639 640 641 0\n642 643 644 0\n642 644 645 0\n646 647 648 0\n646 648 649 0\n650 651 652 0\n653 654 655 0\n653 655 656 0\n657 658 659 0\n657 659 660 0\n661 662 663 0\n664 665 666 0\n664 666 667 0\n668 669 670 0\n668 670 671 0\n672 673 674 0\n675 676 677 0\n675 677 678 0\n679 680 681 0\n679 681 682 0\n683 684 685 0\n686 687 688 0\n686 688 689 0\n690 691 692 0\n690 692 693 0\n694 695 696 0\n697 698 699 0\n697 699 700 0\n701 702 703 0\n701 703 704 0\n705 706 707 0\n708 709 710 0\n708 710 711 0\n712 713 714 0\n712 714 715 0\n716 717 718 0\n716 718 719 0\n720 721 722 0\n720 722 723 0\n724 725 726 0\n724 726 727 0\n728 729 730 0\n728 730 731 0\n732 733 734 0\n732 734 735 0\n736 737 738 0\n736 738 739 0\n740 741 742 0\n740 742 743 0\n744 745 746 0\n744 746 747 0\n748 749 750 0\n748 750 751 0\n752 753 754 0\n752 754 755 0\n756 757 758 0\n756 758 759 0\n760 761 762 0\n760 762 763 0\n764 765 766 0\n764 766 767 0\n768 769 770 0\n768 770 771 0\n772 773 774 0\n772 774 775 0\n776 777 778 0\n776 778 779 0\n780 781 782 0\n780 782 783 0\n784 785 786 0\n784 786 787 0\n788 789 790 0\n788 790 791 0\n792 793 794 0\n792 794 795 0\n796 797 798 0\n796 798 799 0\n800 801 802 0\n800 802 803 0\n804 805 806 0\n804 806 807 0\n808 809 810 0\n808 810 811 0\n812 813 814 0\n812 814 815 0\n816 817 818 0\n816 818 819 0\n820 821 822 0\n820 822 823 0\n824 825 826 0\n824 826 827 0\n828 829 830 0\n828 830 831 0\n832 833 834 0\n832 834 835 0\n836 837 838 0\n836 838 839 0\n840 841 842 0\n840 842 843 0\n844 845 846 0\n844 846 847 0\n848 849 850 0\n848 850 851 0\n852 853 854 0\n852 854 855 0\n856 857 858 0\n856 858 859 0\n860 861 862 0\n863 864 865 0\n863 865 866 0\n867 868 869 0\n867 869 870 0\n871 872 873 0\n874 875 876 0\n874 876 877 0\n878 879 880 0\n878 880 881 0\n882 883 884 0\n885 886 887 0\n885 887 888 0\n889 890 891 0\n889 891 892 0\n893 894 895 0\n896 897 898 0\n896 898 899 0\n900 901 902 0\n900 902 903 0\n904 905 906 0\n907 908 909 0\n907 909 910 0\n911 912 913 0\n911 913 914 0\n915 916 917 0\n918 919 920 0\n918 920 921 0\n922 923 924 0\n922 924 925 0\n926 927 928 0\n929 930 931 0\n929 931 932 0\n933 934 935 0\n933 935 936 0\n937 938 939 0\n940 941 942 0\n940 942 943 0\n944 945 946 0\n944 946 947 0\n948 949 950 0\n951 952 953 0\n951 953 954 0\n955 956 957 0\n955 957 958 0\n959 960 961 0\n962 963 964 0\n962 964 965 0\n966 967 968 0\n966 968 969 0\n970 971 972 0\n973 974 975 0\n973 975 976 0\n977 978 979 0\n977 979 980 0\n981 982 983 0\nRoot -1 0.0 0.0 0.0 0.0 1.0 0.0 0.0\n"
  },
  {
    "path": "data/models/crate.collmdl",
    "content": "box 0.0 0.0 -0.0 0.0 0.0 -0.0 0.5 0.5 0.5\n"
  },
  {
    "path": "data/models/crate_ligma.dymdl",
    "content": "DYMDLv1 324 108 2 1 1\ntexcom_obamabinladen\ntexcom_obamabinladen2\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 1\n6 7 8 0\n9 10 11 0\n12 13 14 1\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 1\n33 34 35 1\n36 37 38 1\n39 40 41 1\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 1\n81 82 83 1\n84 85 86 1\n87 88 89 1\n90 91 92 0\n93 94 95 1\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 1\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 1\n120 121 122 0\n123 124 125 1\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 1\n138 139 140 0\n141 142 143 1\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 1\n156 157 158 0\n159 160 161 1\n162 163 164 0\n165 166 167 1\n168 169 170 0\n171 172 173 0\n174 175 176 1\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 1\n195 196 197 1\n198 199 200 1\n201 202 203 1\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 1\n243 244 245 1\n246 247 248 1\n249 250 251 1\n252 253 254 0\n255 256 257 1\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 1\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 1\n282 283 284 0\n285 286 287 1\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 1\n300 301 302 0\n303 304 305 1\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 1\n318 319 320 0\n321 322 323 1\nRoot -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nRoot\n"
  },
  {
    "path": "data/models/crate_plain.dymdl",
    "content": "DYMDLv1 324 108 1 1 1\ntexcom_obamabinladen\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996303915977478 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.8734009265899658 0.1265990436077118 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.12659911811351776 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 1.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996496438980103 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9996302723884583 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.999630868434906 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.4749999940395355 -1.0 0.0 -0.0 0.8734008073806763 0.12659919261932373 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.8734006881713867 0.1265990436077118 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 0.0 1.0 0.12659898400306702 0.1265992969274521 0 0.9997465014457703 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 1.0 -0.0 0.999899685382843 9.997999586630613e-05 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 1.0 -0.0 0.9998998045921326 0.9998999238014221 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 1.0 -0.0 0.00010009917605202645 0.9999000430107117 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 1.0 -0.0 9.997999586630613e-05 0.00010033755097538233 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 -0.37347567081451416 0.0 1.0 -0.0 0.12659898400306702 0.1265992969274521 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.9998999834060669 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 0.9998998641967773 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 0.0 1.0 9.995698928833008e-05 9.995698928833008e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 0.0 1.0 0.9998998641967773 0.00010019540786743164 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.8734008073806763 0.12659919261932373 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -1.0 0.0 -0.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -1.0 0.0 -0.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 -1.0 -0.0 0.9998999238014221 9.997999586630613e-05 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.0 -1.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 0.0 -1.0 -0.0 0.00010003958595916629 0.9999000430107117 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 -1.0 -0.0 9.997999586630613e-05 0.00010009918332798406 0 0.999998927116394 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 0.0 -1.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9999988675117493 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 1.0 0.0 -0.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.00010012897837441415 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 1.0 0.0 -0.0 0.9998999238014221 0.9999000430107117 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 1.0 0.0 -0.0 9.997999586630613e-05 0.9998998045921326 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 0.0 0.0 -1.0 0.9998999238014221 0.9998999238014221 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.0 0.0 -1.0 9.997999586630613e-05 0.9998998045921326 0 0.9999992847442627 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.0 0.0 -1.0 0.00010006938100559637 9.997999586630613e-05 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 0.9999992251396179 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 0.0 0.0 -1.0 0.9999000430107117 0.00010009918332798406 0 0.9999991655349731 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.8734009861946106 0.12659910321235657 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 0.9999991059303284 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 0.0 1.0 -0.0 0.8734006881713867 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 1.0 -0.0 0.12659908831119537 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.8734008073806763 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 0.0 0.0 1.0 0.12659895420074463 0.12659895420074463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.1265990436077118 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009861946106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 -1.0 -0.0 0.1265990436077118 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 1.0 0.0 -0.0 0.12659907341003418 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.12659911811351776 0 1.0 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 1.0 0.0 -0.0 0.8734009265899658 0.8734010457992554 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.8734009265899658 0.8734009265899658 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.1265989989042282 0.8734008073806763 0 1.0 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 0.0 -1.0 0.12659910321235657 0.1265990138053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.5 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.8734006881713867 0.1265990436077118 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659907341003418 0.1265990138053894 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265990138053894 0.8734008073806763 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.5 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 0.4749999940395355 0.0 -1.0 -0.0 0.8734008073806763 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 -0.37347567081451416 1.0 0.0 -0.0 0.1265990138053894 0.12659911811351776 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 1.0 0.0 -0.0 0.1265990436077118 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.5 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 1.0 0.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996310472488403 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.5 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.12659908831119537 0.8734010457992554 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734008073806763 0.8734009265899658 0 0.9997466206550598 0 0.0 0 0.0 0 0.0\n-0.5 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 1.0 -0.0 0.1265990138053894 0.8734008073806763 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 1.0 -0.0 0.8734009265899658 0.8734010457992554 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.5 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.12659895420074463 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 0.4749999940395355 1.0 0.0 -0.0 0.12659895420074463 0.8734009265899658 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.5 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 -0.37347567081451416 -1.0 0.0 -0.0 0.8734009265899658 0.1265990436077118 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.5 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.8734009861946106 0.12659910321235657 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 0.0 1.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n-0.5 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 -0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n-0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 0.0 1.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.5 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 -1.0 -0.0 0.8734009265899658 0.12659911811351776 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 -0.37347567081451416 0.0 -1.0 -0.0 0.12659907341003418 0.1265990138053894 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.5 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.1265990436077118 0.8734010457992554 0 0.9996495246887207 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.4749999940395355 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734009861946106 0 0.9996495842933655 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.5 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n-0.37347567081451416 0.37347567081451416 -0.4749999940395355 0.0 -1.0 -0.0 0.8734009265899658 0.8734009265899658 0 0.9999428391456604 0 0.0 0 0.0 0 0.0\n0.5 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 -0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.8734010457992554 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.4749999940395355 0.37347567081451416 0.37347567081451416 0.0 0.0 -1.0 0.8734009265899658 0.12659911811351776 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.5 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 -0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.12659910321235657 0.1265990138053894 0 0.9996309876441956 0 0.0 0 0.0 0 0.0\n0.37347567081451416 0.37347567081451416 -0.4749999940395355 -1.0 0.0 -0.0 0.1265989989042282 0.8734008073806763 0 0.9996304512023926 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\nRoot -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nRoot\n"
  },
  {
    "path": "data/models/dev/button.collmdl",
    "content": "box 0.0 0.25 -0.25 0.0 0.0 -0.0 0.25 0.25 0.25\n"
  },
  {
    "path": "data/models/dev/button.stmdl",
    "content": "STMDLv1 36 12 1 1\nlightmap 32 32\ndev/button16x16\n-0.25 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 0.5 -1.4901161193847656e-08 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 1.0 0.0 1.0 0.0\n0.25 0.5 -1.4901161193847656e-08 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 1.4901161193847656e-08 -1.4901161193847656e-08 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 1.4901161193847656e-08 -1.4901161193847656e-08 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 0.0 1.0 0.0\n-0.25 0.5 -1.4901161193847656e-08 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 1.4901161193847656e-08 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 1.0 1.0 1.0\n-0.25 1.4901161193847656e-08 -1.4901161193847656e-08 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 0.0 1.0 0.0\n0.25 1.4901161193847656e-08 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 1.4901161193847656e-08 -1.4901161193847656e-08 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n-0.25 1.4901161193847656e-08 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 0.0 1.0 0.0\n0.25 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 1.4901161193847656e-08 -1.4901161193847656e-08 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 1.4901161193847656e-08 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 0.0 1.0 0.0\n-0.25 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 1.4901161193847656e-08 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 1.0 1.0 1.0\n-0.25 1.4901161193847656e-08 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 0.0 1.0 0.0\n-0.25 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 0.5 -1.4901161193847656e-08 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 1.0 0.0 1.0\n0.25 0.5 -1.4901161193847656e-08 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 0.5 -1.4901161193847656e-08 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 0.5 -1.4901161193847656e-08 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 1.0 0.0 1.0\n-0.25 1.4901161193847656e-08 -1.4901161193847656e-08 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n-0.25 0.5 -1.4901161193847656e-08 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.0 0.0 0.0\n-0.25 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 1.0 0.0 1.0\n-0.25 1.4901161193847656e-08 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 1.4901161193847656e-08 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 1.4901161193847656e-08 -1.4901161193847656e-08 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.0 1.0 0.0 1.0\n-0.25 1.4901161193847656e-08 -1.4901161193847656e-08 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n0.25 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 0.5 -1.4901161193847656e-08 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 1.0 0.0 1.0\n0.25 1.4901161193847656e-08 -1.4901161193847656e-08 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 1.0 1.0\n-0.25 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.0 0.0 0.0\n0.25 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 1.0 0.0 1.0\n0.25 1.4901161193847656e-08 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 1.0 1.0 1.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n"
  },
  {
    "path": "data/models/dev/light.stmdl",
    "content": "384 128 1\ndev/light\n-8.237197590688083e-09 0.2567000389099121 -0.25000011920928955 0.0 0.0 -0.999969482421875 1.5 0.6521799564361572 1.5 0.6521799564361572\n0.16332030296325684 0.16102918982505798 -0.16332048177719116 0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.0 0.46877843141555786 1.0 0.46877843141555786\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.5 0.4687783122062683 1.5 0.4687783122062683\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n0.16332030296325684 0.3523709177970886 -0.16332048177719116 0.6577959656715393 0.3667714595794678 -0.6577959656715393 0.75 0.4395729899406433 0.75 0.4395729899406433\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.0 0.4395729899406433 1.0 0.4395729899406433\n-8.85270345918343e-09 0.4876699447631836 -0.09567093849182129 0.0 0.9063081741333008 -0.42255929112434387 1.0 0.8145728707313538 1.0 0.8145728707313538\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 0.8750001192092896 0.9803798198699951 0.8750001192092896 0.9803798198699951\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.65160071849823 -0.3882564902305603 0.65160071849823 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-5.602117880698643e-09 -0.07792764902114868 0.10670498013496399 0.0 -0.3882564902305603 0.921536922454834 0.0 0.5012654662132263 0.0 0.5012654662132263\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.5 0.8355814218521118 1.5 0.8355814218521118\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n-8.237197590688083e-09 0.2567000389099121 -0.25000011920928955 0.0 0.0 -0.999969482421875 1.5 0.6521799564361572 1.5 0.6521799564361572\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n0.12499997019767761 0.4334768056869507 -0.12500008940696716 0.5159153938293457 0.6838282346725464 -0.5159153938293457 0.75 0.6270729899406433 0.75 0.6270729899406433\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.65160071849823 -0.3882564902305603 -0.65160071849823 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 0.2500000596046448 0.8762653470039368 0.2500000596046448 0.8762653470039368\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.8762653470039368 0.5 0.8762653470039368\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.8355814218521118 0.5 0.8355814218521118\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.12499997019767761 0.4334768056869507 -0.12500008940696716 0.5159153938293457 0.6838282346725464 -0.5159153938293457 0.75 0.6270729899406433 0.75 0.6270729899406433\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.4687783122062683 0.5 0.4687783122062683\n0.16332030296325684 0.16102918982505798 -0.16332048177719116 0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.0 0.46877843141555786 1.0 0.46877843141555786\n0.12499997019767761 0.4334768056869507 -0.12500008940696716 0.5159153938293457 0.6838282346725464 -0.5159153938293457 0.75 0.6270729899406433 0.75 0.6270729899406433\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.4395729899406433 0.5 0.4395729899406433\n0.16332030296325684 0.3523709177970886 -0.16332048177719116 0.6577959656715393 0.3667714595794678 -0.6577959656715393 0.75 0.4395729899406433 0.75 0.4395729899406433\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 0.6250001192092896 0.9803798198699951 0.6250001192092896 0.9803798198699951\n0.09567081928253174 0.4876699447631836 -1.224764645257892e-07 0.42255929112434387 0.9063081741333008 -0.0 0.5000001192092896 0.8145728707313538 0.5000001192092896 0.8145728707313538\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 1.1920928955078125e-07 0.8355814218521118 1.1920928955078125e-07 0.8355814218521118\n0.17677664756774902 0.2567000389099121 0.17677652835845947 0.7070833444595337 0.0 0.7070833444595337 1.1920928955078125e-07 0.6521799564361572 1.1920928955078125e-07 0.6521799564361572\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.0676494836807251 0.4876699447631836 0.06764936447143555 0.29880672693252563 0.9063081741333008 0.29880672693252563 0.25000011920928955 0.8145729899406433 0.25000011920928955 0.8145729899406433\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 0.0 0.8762653470039368 0.0 0.8762653470039368\n0.10137975215911865 0.009099066257476807 0.10137966275215149 0.6311227679252625 -0.4508804678916931 0.6311227679252625 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 0.2500000596046448 0.8762653470039368 0.2500000596046448 0.8762653470039368\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 1.1920928955078125e-07 0.4687783122062683 1.1920928955078125e-07 0.4687783122062683\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.4687783122062683 0.5 0.4687783122062683\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 0.2500000596046448 0.4395729899406433 0.2500000596046448 0.4395729899406433\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.4395729899406433 0.5 0.4395729899406433\n0.09567081928253174 0.4876699447631836 -1.224764645257892e-07 0.42255929112434387 0.9063081741333008 -0.0 0.5000001192092896 0.8145728707313538 0.5000001192092896 0.8145728707313538\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 0.37500011920928955 0.9803798198699951 0.37500011920928955 0.9803798198699951\n0.0676494836807251 0.4876699447631836 0.06764936447143555 0.29880672693252563 0.9063081741333008 0.29880672693252563 0.25000011920928955 0.8145729899406433 0.25000011920928955 0.8145729899406433\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.65160071849823 -0.3882564902305603 0.65160071849823 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.10137975215911865 0.009099066257476807 0.10137966275215149 0.6311227679252625 -0.4508804678916931 0.6311227679252625 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 0.0 0.8762653470039368 0.0 0.8762653470039368\n-0.10137978196144104 0.009099066257476807 0.10137966275215149 -0.6311227679252625 -0.4508804678916931 0.6311227679252625 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 1.1920928955078125e-07 0.4687783122062683 1.1920928955078125e-07 0.4687783122062683\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 -0.5 0.4687783122062683 -0.5 0.4687783122062683\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n2.3231692125591508e-09 0.3523709177970886 0.23096966743469238 0.0 0.3667714595794678 0.9302957057952881 0.0 0.4395729899406433 0.0 0.4395729899406433\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 0.2500000596046448 0.4395729899406433 0.2500000596046448 0.4395729899406433\n0.0676494836807251 0.4876699447631836 0.06764936447143555 0.29880672693252563 0.9063081741333008 0.29880672693252563 0.25000011920928955 0.8145729899406433 0.25000011920928955 0.8145729899406433\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 0.125 0.9803798198699951 0.125 0.9803798198699951\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.65160071849823 -0.3882564902305603 0.65160071849823 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.10670509934425354 -0.07792764902114868 -1.2191291887120315e-07 0.921536922454834 -0.3882564902305603 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 1.1920928955078125e-07 0.8355814218521118 1.1920928955078125e-07 0.8355814218521118\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n0.17677664756774902 0.2567000389099121 0.17677652835845947 0.7070833444595337 0.0 0.7070833444595337 1.1920928955078125e-07 0.6521799564361572 1.1920928955078125e-07 0.6521799564361572\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n-5.127413160721517e-09 0.4334768056869507 0.17677652835845947 0.0 0.6838282346725464 0.729606032371521 0.0 0.6270730495452881 0.0 0.6270730495452881\n-5.127413160721517e-09 0.4334768056869507 0.17677652835845947 0.0 0.6838282346725464 0.729606032371521 0.0 0.6270730495452881 0.0 0.6270730495452881\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -0.25 0.4395729899406433 -0.25 0.4395729899406433\n2.3231692125591508e-09 0.3523709177970886 0.23096966743469238 0.0 0.3667714595794678 0.9302957057952881 0.0 0.4395729899406433 0.0 0.4395729899406433\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 -0.12500005960464478 0.9803798198699951 -0.12500005960464478 0.9803798198699951\n-0.0676494836807251 0.4876699447631836 0.06764936447143555 -0.29880672693252563 0.9063081741333008 0.29880672693252563 -0.2500000596046448 0.8145729899406433 -0.2500000596046448 0.8145729899406433\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 -0.5 0.5012654662132263 -0.5 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.65160071849823 -0.3882564902305603 0.65160071849823 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-0.10137978196144104 0.009099066257476807 0.10137966275215149 -0.6311227679252625 -0.4508804678916931 0.6311227679252625 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -0.25 0.8762653470039368 -0.25 0.8762653470039368\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 -0.5 0.5012654662132263 -0.5 0.5012654662132263\n-0.10137978196144104 0.009099066257476807 0.10137966275215149 -0.6311227679252625 -0.4508804678916931 0.6311227679252625 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -1.0 0.8355814218521118 -1.0 0.8355814218521118\n-0.17677664756774902 0.2567000389099121 0.17677652835845947 -0.7070833444595337 0.0 0.7070833444595337 -1.0000001192092896 0.6521799564361572 -1.0000001192092896 0.6521799564361572\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n-0.12499997019767761 0.4334768056869507 0.12499985098838806 -0.5159153938293457 0.6838282346725464 0.5159153938293457 -0.2500000596046448 0.6270730495452881 -0.2500000596046448 0.6270730495452881\n-5.127413160721517e-09 0.4334768056869507 0.17677652835845947 0.0 0.6838282346725464 0.729606032371521 0.0 0.6270730495452881 0.0 0.6270730495452881\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -1.0 0.4687783122062683 -1.0 0.4687783122062683\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 -0.5 0.4687783122062683 -0.5 0.4687783122062683\n-9.125497690831708e-09 0.009099066257476807 -0.1433727741241455 0.0 -0.4508804678916931 -0.8925443291664124 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.65160071849823 -0.3882564902305603 -0.65160071849823 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.25 0.8762653470039368 1.25 0.8762653470039368\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 1.5 0.5012654662132263 1.5 0.5012654662132263\n-0.2309698462486267 0.16102918982505798 -1.1130059363040345e-07 -0.9405804872512817 -0.3395184278488159 -0.0 1.5 0.8762653470039368 1.5 0.8762653470039368\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -1.0 0.8355814218521118 -1.0 0.8355814218521118\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 -1.5 0.6521799564361572 -1.5 0.6521799564361572\n-0.17677664756774902 0.2567000389099121 0.17677652835845947 -0.7070833444595337 0.0 0.7070833444595337 -1.0000001192092896 0.6521799564361572 -1.0000001192092896 0.6521799564361572\n-0.0676494836807251 0.4876699447631836 0.06764936447143555 -0.29880672693252563 0.9063081741333008 0.29880672693252563 -0.2500000596046448 0.8145729899406433 -0.2500000596046448 0.8145729899406433\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 -0.5 0.6270729899406433 -0.5 0.6270729899406433\n-0.12499997019767761 0.4334768056869507 0.12499985098838806 -0.5159153938293457 0.6838282346725464 0.5159153938293457 -0.2500000596046448 0.6270730495452881 -0.2500000596046448 0.6270730495452881\n-0.17677664756774902 0.2567000389099121 0.17677652835845947 -0.7070833444595337 0.0 0.7070833444595337 -1.0000001192092896 0.6521799564361572 -1.0000001192092896 0.6521799564361572\n-0.2309698462486267 0.16102918982505798 -1.1130059363040345e-07 -0.9405804872512817 -0.3395184278488159 -0.0 -1.5 0.4687783122062683 -1.5 0.4687783122062683\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -1.0 0.4687783122062683 -1.0 0.4687783122062683\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -0.25 0.4395729899406433 -0.25 0.4395729899406433\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 -0.5 0.6270729899406433 -0.5 0.6270729899406433\n-0.2309698462486267 0.3523709177970886 -1.1130059363040345e-07 -0.9302957057952881 0.3667714595794678 -0.0 -0.5 0.4395729899406433 -0.5 0.4395729899406433\n-0.0676494836807251 0.4876699447631836 0.06764936447143555 -0.29880672693252563 0.9063081741333008 0.29880672693252563 -0.2500000596046448 0.8145729899406433 -0.2500000596046448 0.8145729899406433\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 -0.37500011920928955 0.9803798198699951 -0.37500011920928955 0.9803798198699951\n-0.09567081928253174 0.4876699447631836 -1.262017548242511e-07 -0.42255929112434387 0.9063081741333008 -0.0 -0.5 0.8145728707313538 -0.5 0.8145728707313538\n-0.09567081928253174 0.4876699447631836 -1.262017548242511e-07 -0.42255929112434387 0.9063081741333008 -0.0 1.5 0.8145728707313538 1.5 0.8145728707313538\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 1.5 0.6270729899406433 1.5 0.6270729899406433\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.0 0.8762653470039368 1.0 0.8762653470039368\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.25 0.8762653470039368 1.25 0.8762653470039368\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 2.5 0.6521799564361572 2.5 0.6521799564361572\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 2.0 0.4687783122062683 2.0 0.4687783122062683\n-0.2309698462486267 0.16102918982505798 -1.1130059363040345e-07 -0.9405804872512817 -0.3395184278488159 -0.0 2.5 0.4687783122062683 2.5 0.4687783122062683\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 1.5 0.6270729899406433 1.5 0.6270729899406433\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 1.25 0.4395729899406433 1.25 0.4395729899406433\n-0.2309698462486267 0.3523709177970886 -1.1130059363040345e-07 -0.9302957057952881 0.3667714595794678 -0.0 1.5 0.4395729899406433 1.5 0.4395729899406433\n-0.09567081928253174 0.4876699447631836 -1.262017548242511e-07 -0.42255929112434387 0.9063081741333008 -0.0 1.5 0.8145728707313538 1.5 0.8145728707313538\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 1.3749998807907104 0.9803798198699951 1.3749998807907104 0.9803798198699951\n-0.0676494836807251 0.4876699447631836 -0.06764960289001465 -0.29880672693252563 0.9063081741333008 -0.29880672693252563 1.2499998807907104 0.8145728707313538 1.2499998807907104 0.8145728707313538\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 -0.3882564902305603 -0.921536922454834 1.0 0.5012654662132263 1.0 0.5012654662132263\n-9.125497690831708e-09 0.009099066257476807 -0.1433727741241455 0.0 -0.4508804678916931 -0.8925443291664124 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 2.5 0.6521799564361572 2.5 0.6521799564361572\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 2.0 0.8355814218521118 2.0 0.8355814218521118\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.0 0.8762653470039368 1.0 0.8762653470039368\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n-9.125497690831708e-09 0.009099066257476807 -0.1433727741241455 0.0 -0.4508804678916931 -0.8925443291664124 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.5 0.4687783122062683 1.5 0.4687783122062683\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 2.0 0.4687783122062683 2.0 0.4687783122062683\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.0 0.4395729899406433 1.0 0.4395729899406433\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 1.25 0.4395729899406433 1.25 0.4395729899406433\n-0.0676494836807251 0.4876699447631836 -0.06764960289001465 -0.29880672693252563 0.9063081741333008 -0.29880672693252563 1.2499998807907104 0.8145728707313538 1.2499998807907104 0.8145728707313538\n-3.492973377205999e-08 0.5067000389099121 -9.63994324365558e-08 0.0 1.0 -0.0 1.125 0.9803798198699951 1.125 0.9803798198699951\n-8.85270345918343e-09 0.4876699447631836 -0.09567093849182129 0.0 0.9063081741333008 -0.42255929112434387 1.0 0.8145728707313538 1.0 0.8145728707313538\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -0.921536922454834 -0.3882564902305603 -0.0 1.5 0.5012654662132263 1.5 0.5012654662132263\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 1.5 0.5012654662132263 1.5 0.5012654662132263\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.5 0.8355814218521118 1.5 0.8355814218521118\n-8.237197590688083e-09 0.2567000389099121 -0.25000011920928955 0.0 0.0 -0.999969482421875 1.5 0.6521799564361572 1.5 0.6521799564361572\n-0.0676494836807251 0.4876699447631836 -0.06764960289001465 -0.29880672693252563 0.9063081741333008 -0.29880672693252563 1.2499998807907104 0.8145728707313538 1.2499998807907104 0.8145728707313538\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-5.602117880698643e-09 -0.07792764902114868 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.015914514660835266 0.2629193961620331 0.015914514660835266\n0.07545189559459686 -0.20835745334625244 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.225510373711586 0.32541942596435547 0.225510373711586\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.015914514660835266 0.32541942596435547 0.015914514660835266\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -1.0 0.0 -0.0 0.13791939616203308 0.015914514660835266 0.13791939616203308 0.015914514660835266\n-0.07545191049575806 -0.20835745334625244 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.225510373711586 0.20041939616203308 0.225510373711586\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.015914514660835266 0.20041939616203308 0.015914514660835266\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.015914514660835266 0.5129194259643555 0.015914514660835266\n-0.07545191049575806 -0.20835745334625244 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.225510373711586 0.5754194259643555 0.225510373711586\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.015914514660835266 0.5754194259643555 0.015914514660835266\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.015914514660835266 0.32541942596435547 0.015914514660835266\n0.10670509934425354 -0.20835745334625244 -1.216602072418027e-07 1.0 0.0 -0.0 0.3879193961620331 0.225510373711586 0.3879193961620331 0.225510373711586\n0.10670509934425354 -0.07792764902114868 -1.2191291887120315e-07 1.0 0.0 -0.0 0.3879193961620331 0.015914514660835266 0.3879193961620331 0.015914514660835266\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.015914514660835266 0.20041939616203308 0.015914514660835266\n-6.486650327985899e-09 -0.20835745334625244 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.225510373711586 0.2629193961620331 0.225510373711586\n-5.602117880698643e-09 -0.07792764902114868 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.015914514660835266 0.2629193961620331 0.015914514660835266\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.015914514660835266 0.5754194259643555 0.015914514660835266\n-0.10670509934425354 -0.20835745334625244 -1.2581514852172404e-07 -1.0 0.0 -0.0 0.6379194259643555 0.225510373711586 0.6379194259643555 0.225510373711586\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -1.0 0.0 -0.0 0.6379194259643555 0.015914514660835266 0.6379194259643555 0.015914514660835266\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.015914514660835266 0.4504193961620331 0.015914514660835266\n-1.0641600489691427e-08 -0.20835745334625244 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.225510373711586 0.5129194259643555 0.225510373711586\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.015914514660835266 0.5129194259643555 0.015914514660835266\n0.10670509934425354 -0.07792764902114868 -1.2191291887120315e-07 1.0 0.0 -0.0 0.3879193961620331 0.015914514660835266 0.3879193961620331 0.015914514660835266\n0.07545191049575806 -0.20835745334625244 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.225510373711586 0.4504193961620331 0.225510373711586\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.015914514660835266 0.4504193961620331 0.015914514660835266\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n-1.0641600489691427e-08 -0.20835745334625244 -0.10670521855354309 0.0 -0.9807733297348022 -0.19507431983947754 0.9846075177192688 0.17046687006950378 0.9846075177192688 0.17046687006950378\n0.07545191049575806 -0.20835745334625244 -0.07545202970504761 0.13794365525245667 -0.9807733297348022 -0.13794365525245667 0.9188759326934814 0.23619844019412994 0.9188759326934814 0.23619844019412994\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n0.07545191049575806 -0.20835745334625244 -0.07545202970504761 0.13794365525245667 -0.9807733297348022 -0.13794365525245667 0.9188759326934814 0.23619844019412994 0.9188759326934814 0.23619844019412994\n0.10670509934425354 -0.20835745334625244 -1.216602072418027e-07 0.19507431983947754 -0.9807733297348022 -0.0 0.8259174823760986 0.23619839549064636 0.8259174823760986 0.23619839549064636\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n0.10670509934425354 -0.20835745334625244 -1.216602072418027e-07 0.19507431983947754 -0.9807733297348022 -0.0 0.8259174823760986 0.23619839549064636 0.8259174823760986 0.23619839549064636\n0.07545189559459686 -0.20835745334625244 0.0754517912864685 0.13794365525245667 -0.9807733297348022 0.13794365525245667 0.760185956954956 0.17046687006950378 0.760185956954956 0.17046687006950378\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n0.07545189559459686 -0.20835745334625244 0.0754517912864685 0.13794365525245667 -0.9807733297348022 0.13794365525245667 0.760185956954956 0.17046687006950378 0.760185956954956 0.17046687006950378\n-6.486650327985899e-09 -0.20835745334625244 0.10670498013496399 0.0 -0.9807733297348022 0.19507431983947754 0.760185956954956 0.07750840485095978 0.760185956954956 0.07750840485095978\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n-6.486650327985899e-09 -0.20835745334625244 0.10670498013496399 0.0 -0.9807733297348022 0.19507431983947754 0.760185956954956 0.07750840485095978 0.760185956954956 0.07750840485095978\n-0.07545191049575806 -0.20835745334625244 0.0754517912864685 -0.13794365525245667 -0.9807733297348022 0.13794365525245667 0.8259175419807434 0.0117768794298172 0.8259175419807434 0.0117768794298172\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n-0.07545191049575806 -0.20835745334625244 0.0754517912864685 -0.13794365525245667 -0.9807733297348022 0.13794365525245667 0.8259175419807434 0.0117768794298172 0.8259175419807434 0.0117768794298172\n-0.10670509934425354 -0.20835745334625244 -1.2581514852172404e-07 -0.19507431983947754 -0.9807733297348022 -0.0 0.9188759326934814 0.0117768794298172 0.9188759326934814 0.0117768794298172\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n-0.10670509934425354 -0.20835745334625244 -1.2581514852172404e-07 -0.19507431983947754 -0.9807733297348022 -0.0 0.9188759326934814 0.0117768794298172 0.9188759326934814 0.0117768794298172\n-0.07545191049575806 -0.20835745334625244 -0.07545202970504761 -0.13794365525245667 -0.9807733297348022 -0.13794365525245667 0.9846075177192688 0.07750842720270157 0.9846075177192688 0.07750842720270157\n-9.955104296466288e-09 -0.22958242893218994 -1.2234669100052997e-07 0.0 -0.999969482421875 -0.0 0.8723967671394348 0.12398764491081238 0.8723967671394348 0.12398764491081238\n-0.07545191049575806 -0.20835745334625244 -0.07545202970504761 -0.13794365525245667 -0.9807733297348022 -0.13794365525245667 0.9846075177192688 0.07750842720270157 0.9846075177192688 0.07750842720270157\n-1.0641600489691427e-08 -0.20835745334625244 -0.10670521855354309 0.0 -0.9807733297348022 -0.19507431983947754 0.9846075177192688 0.17046687006950378 0.9846075177192688 0.17046687006950378\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.8762653470039368 0.5 0.8762653470039368\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n-8.237197590688083e-09 0.2567000389099121 -0.25000011920928955 0.0 0.0 -0.999969482421875 1.5 0.6521799564361572 1.5 0.6521799564361572\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n0.16332030296325684 0.16102918982505798 -0.16332048177719116 0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.0 0.46877843141555786 1.0 0.46877843141555786\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n0.12499997019767761 0.4334768056869507 -0.12500008940696716 0.5159153938293457 0.6838282346725464 -0.5159153938293457 0.75 0.6270729899406433 0.75 0.6270729899406433\n0.16332030296325684 0.3523709177970886 -0.16332048177719116 0.6577959656715393 0.3667714595794678 -0.6577959656715393 0.75 0.4395729899406433 0.75 0.4395729899406433\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n-0.10137978196144104 0.009099066257476807 0.10137966275215149 -0.6311227679252625 -0.4508804678916931 0.6311227679252625 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.65160071849823 -0.3882564902305603 0.65160071849823 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.5 0.8355814218521118 1.5 0.8355814218521118\n0.16332030296325684 0.3523709177970886 -0.16332048177719116 0.6577959656715393 0.3667714595794678 -0.6577959656715393 1.0 0.8355814218521118 1.0 0.8355814218521118\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n-8.85270345918343e-09 0.4876699447631836 -0.09567093849182129 0.0 0.9063081741333008 -0.42255929112434387 1.0 0.8145728707313538 1.0 0.8145728707313538\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.10670509934425354 -0.07792764902114868 -1.2191291887120315e-07 0.921536922454834 -0.3882564902305603 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.65160071849823 -0.3882564902305603 -0.65160071849823 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 0.2500000596046448 0.8762653470039368 0.2500000596046448 0.8762653470039368\n0.10137975215911865 0.009099066257476807 0.10137966275215149 0.6311227679252625 -0.4508804678916931 0.6311227679252625 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n0.16332030296325684 0.3523709177970886 -0.16332048177719116 0.6577959656715393 0.3667714595794678 -0.6577959656715393 1.0 0.8355814218521118 1.0 0.8355814218521118\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.8355814218521118 0.5 0.8355814218521118\n0.0676494836807251 0.4876699447631836 -0.06764960289001465 0.29880672693252563 0.9063081741333008 -0.29880672693252563 0.7500001192092896 0.8145728707313538 0.7500001192092896 0.8145728707313538\n0.09567081928253174 0.4876699447631836 -1.224764645257892e-07 0.42255929112434387 0.9063081741333008 -0.0 0.5000001192092896 0.8145728707313538 0.5000001192092896 0.8145728707313538\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.17677664756774902 0.2567000389099121 -0.17677676677703857 0.7070833444595337 0.0 -0.7070833444595337 1.0 0.6521799564361572 1.0 0.6521799564361572\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.4687783122062683 0.5 0.4687783122062683\n0.12499997019767761 0.4334768056869507 -0.12500008940696716 0.5159153938293457 0.6838282346725464 -0.5159153938293457 0.75 0.6270729899406433 0.75 0.6270729899406433\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.4395729899406433 0.5 0.4395729899406433\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.2309698462486267 0.3523709177970886 -1.262017548242511e-07 0.9302957057952881 0.3667714595794678 -0.0 0.5 0.8355814218521118 0.5 0.8355814218521118\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 1.1920928955078125e-07 0.8355814218521118 1.1920928955078125e-07 0.8355814218521118\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.09567081928253174 0.4876699447631836 -1.224764645257892e-07 0.42255929112434387 0.9063081741333008 -0.0 0.5000001192092896 0.8145728707313538 0.5000001192092896 0.8145728707313538\n0.0676494836807251 0.4876699447631836 0.06764936447143555 0.29880672693252563 0.9063081741333008 0.29880672693252563 0.25000011920928955 0.8145729899406433 0.25000011920928955 0.8145729899406433\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 0.0 0.8762653470039368 0.0 0.8762653470039368\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n0.10137975215911865 0.009099066257476807 0.10137966275215149 0.6311227679252625 -0.4508804678916931 0.6311227679252625 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.24999994039535522 0.2567000389099121 -1.1875117422732728e-07 1.0 0.0 -0.0 0.5 0.6521799564361572 0.5 0.6521799564361572\n0.17677664756774902 0.2567000389099121 0.17677652835845947 0.7070833444595337 0.0 0.7070833444595337 1.1920928955078125e-07 0.6521799564361572 1.1920928955078125e-07 0.6521799564361572\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 1.1920928955078125e-07 0.4687783122062683 1.1920928955078125e-07 0.4687783122062683\n0.17677658796310425 0.4334768056869507 -1.262017548242511e-07 0.729606032371521 0.6838282346725464 -0.0 0.5000001192092896 0.6270729899406433 0.5000001192092896 0.6270729899406433\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 0.2500000596046448 0.4395729899406433 0.2500000596046448 0.4395729899406433\n-3.54276430414302e-09 0.009099066257476807 0.14337250590324402 0.0 -0.4508804678916931 0.8925443291664124 0.0 0.5012654662132263 0.0 0.5012654662132263\n-5.602117880698643e-09 -0.07792764902114868 0.10670498013496399 0.0 -0.3882564902305603 0.921536922454834 0.0 0.5012654662132263 0.0 0.5012654662132263\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.65160071849823 -0.3882564902305603 0.65160071849823 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n2.3231692125591508e-09 0.16102918982505798 0.23096966743469238 0.0 -0.3395184278488159 0.9405804872512817 0.0 0.8762653470039368 0.0 0.8762653470039368\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -0.25 0.8762653470039368 -0.25 0.8762653470039368\n-0.10137978196144104 0.009099066257476807 0.10137966275215149 -0.6311227679252625 -0.4508804678916931 0.6311227679252625 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n0.16332030296325684 0.16102918982505798 0.16332018375396729 0.6650899052619934 -0.3395184278488159 0.6650899052619934 1.1920928955078125e-07 0.4687783122062683 1.1920928955078125e-07 0.4687783122062683\n0.17677664756774902 0.2567000389099121 0.17677652835845947 0.7070833444595337 0.0 0.7070833444595337 1.1920928955078125e-07 0.6521799564361572 1.1920928955078125e-07 0.6521799564361572\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n-5.127413160721517e-09 0.4334768056869507 0.17677652835845947 0.0 0.6838282346725464 0.729606032371521 0.0 0.6270730495452881 0.0 0.6270730495452881\n2.3231692125591508e-09 0.3523709177970886 0.23096966743469238 0.0 0.3667714595794678 0.9302957057952881 0.0 0.4395729899406433 0.0 0.4395729899406433\n0.14337262511253357 0.009099066257476807 -1.2117860137550451e-07 0.8925443291664124 -0.4508804678916931 -0.0 0.5000001192092896 0.5012654662132263 0.5000001192092896 0.5012654662132263\n0.10137975215911865 0.009099066257476807 0.10137966275215149 0.6311227679252625 -0.4508804678916931 0.6311227679252625 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.65160071849823 -0.3882564902305603 0.65160071849823 0.25000011920928955 0.5012654662132263 0.25000011920928955 0.5012654662132263\n0.16332030296325684 0.3523709177970886 0.16332018375396729 0.6577959656715393 0.3667714595794678 0.6577959656715393 1.1920928955078125e-07 0.8355814218521118 1.1920928955078125e-07 0.8355814218521118\n2.3231692125591508e-09 0.3523709177970886 0.23096966743469238 0.0 0.3667714595794678 0.9302957057952881 -0.5 0.8355814218521118 -0.5 0.8355814218521118\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n0.12499994039535522 0.4334768056869507 0.12499985098838806 0.5159153938293457 0.6838282346725464 0.5159153938293457 0.2500000596046448 0.6270730495452881 0.2500000596046448 0.6270730495452881\n0.0676494836807251 0.4876699447631836 0.06764936447143555 0.29880672693252563 0.9063081741333008 0.29880672693252563 0.25000011920928955 0.8145729899406433 0.25000011920928955 0.8145729899406433\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n-5.127413160721517e-09 0.4334768056869507 0.17677652835845947 0.0 0.6838282346725464 0.729606032371521 0.0 0.6270730495452881 0.0 0.6270730495452881\n-0.12499997019767761 0.4334768056869507 0.12499985098838806 -0.5159153938293457 0.6838282346725464 0.5159153938293457 -0.2500000596046448 0.6270730495452881 -0.2500000596046448 0.6270730495452881\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -0.25 0.4395729899406433 -0.25 0.4395729899406433\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 -0.5 0.5012654662132263 -0.5 0.5012654662132263\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -0.921536922454834 -0.3882564902305603 -0.0 -0.5 0.5012654662132263 -0.5 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.65160071849823 -0.3882564902305603 0.65160071849823 -0.2500000596046448 0.5012654662132263 -0.2500000596046448 0.5012654662132263\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -0.25 0.8762653470039368 -0.25 0.8762653470039368\n-0.2309698462486267 0.16102918982505798 -1.1130059363040345e-07 -0.9405804872512817 -0.3395184278488159 -0.0 -0.5 0.8762653470039368 -0.5 0.8762653470039368\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 -0.5 0.5012654662132263 -0.5 0.5012654662132263\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n2.3231692125591508e-09 0.3523709177970886 0.23096966743469238 0.0 0.3667714595794678 0.9302957057952881 -0.5 0.8355814218521118 -0.5 0.8355814218521118\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -1.0 0.8355814218521118 -1.0 0.8355814218521118\n-5.127413160721517e-09 0.4876699447631836 0.09567070007324219 0.0 0.9063081741333008 0.42255929112434387 0.0 0.8145729899406433 0.0 0.8145729899406433\n-0.0676494836807251 0.4876699447631836 0.06764936447143555 -0.29880672693252563 0.9063081741333008 0.29880672693252563 -0.2500000596046448 0.8145729899406433 -0.2500000596046448 0.8145729899406433\n-0.12499997019767761 0.4334768056869507 0.12499985098838806 -0.5159153938293457 0.6838282346725464 0.5159153938293457 -0.2500000596046448 0.6270730495452881 -0.2500000596046448 0.6270730495452881\n-5.127413160721517e-09 0.2567000389099121 0.2499997615814209 0.0 0.0 1.0 -0.5 0.6521799564361572 -0.5 0.6521799564361572\n-0.17677664756774902 0.2567000389099121 0.17677652835845947 -0.7070833444595337 0.0 0.7070833444595337 -1.0000001192092896 0.6521799564361572 -1.0000001192092896 0.6521799564361572\n-0.16332030296325684 0.16102918982505798 0.16332018375396729 -0.6650899052619934 -0.3395184278488159 0.6650899052619934 -1.0 0.4687783122062683 -1.0 0.4687783122062683\n-9.125497690831708e-09 0.009099066257476807 -0.1433727741241455 0.0 -0.4508804678916931 -0.8925443291664124 1.0 0.5012654662132263 1.0 0.5012654662132263\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 -0.3882564902305603 -0.921536922454834 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.65160071849823 -0.3882564902305603 -0.65160071849823 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 1.25 0.8762653470039368 1.25 0.8762653470039368\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.14337265491485596 0.009099066257476807 -1.2676133565037162e-07 -0.8925443291664124 -0.4508804678916931 -0.0 1.5 0.5012654662132263 1.5 0.5012654662132263\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -1.0 0.8355814218521118 -1.0 0.8355814218521118\n-0.2309698462486267 0.3523709177970886 -1.1130059363040345e-07 -0.9302957057952881 0.3667714595794678 -0.0 -1.5 0.8355814218521118 -1.5 0.8355814218521118\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 -1.5 0.6521799564361572 -1.5 0.6521799564361572\n-0.0676494836807251 0.4876699447631836 0.06764936447143555 -0.29880672693252563 0.9063081741333008 0.29880672693252563 -0.2500000596046448 0.8145729899406433 -0.2500000596046448 0.8145729899406433\n-0.09567081928253174 0.4876699447631836 -1.262017548242511e-07 -0.42255929112434387 0.9063081741333008 -0.0 -0.5 0.8145728707313538 -0.5 0.8145728707313538\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 -0.5 0.6270729899406433 -0.5 0.6270729899406433\n-0.17677664756774902 0.2567000389099121 0.17677652835845947 -0.7070833444595337 0.0 0.7070833444595337 -1.0000001192092896 0.6521799564361572 -1.0000001192092896 0.6521799564361572\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 -1.5 0.6521799564361572 -1.5 0.6521799564361572\n-0.2309698462486267 0.16102918982505798 -1.1130059363040345e-07 -0.9405804872512817 -0.3395184278488159 -0.0 -1.5 0.4687783122062683 -1.5 0.4687783122062683\n-0.16332030296325684 0.3523709177970886 0.16332018375396729 -0.6577959656715393 0.3667714595794678 0.6577959656715393 -0.25 0.4395729899406433 -0.25 0.4395729899406433\n-0.12499997019767761 0.4334768056869507 0.12499985098838806 -0.5159153938293457 0.6838282346725464 0.5159153938293457 -0.2500000596046448 0.6270730495452881 -0.2500000596046448 0.6270730495452881\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 -0.5 0.6270729899406433 -0.5 0.6270729899406433\n-0.09567081928253174 0.4876699447631836 -1.262017548242511e-07 -0.42255929112434387 0.9063081741333008 -0.0 1.5 0.8145728707313538 1.5 0.8145728707313538\n-0.0676494836807251 0.4876699447631836 -0.06764960289001465 -0.29880672693252563 0.9063081741333008 -0.29880672693252563 1.2499998807907104 0.8145728707313538 1.2499998807907104 0.8145728707313538\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.0 0.8762653470039368 1.0 0.8762653470039368\n-9.125497690831708e-09 0.009099066257476807 -0.1433727741241455 0.0 -0.4508804678916931 -0.8925443291664124 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 2.5 0.6521799564361572 2.5 0.6521799564361572\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-0.16332033276557922 0.16102918982505798 -0.1633204221725464 -0.6650899052619934 -0.3395184278488159 -0.6650899052619934 2.0 0.4687783122062683 2.0 0.4687783122062683\n-0.17677664756774902 0.4334768056869507 -1.262017548242511e-07 -0.729606032371521 0.6838282346725464 -0.0 1.5 0.6270729899406433 1.5 0.6270729899406433\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 1.25 0.4395729899406433 1.25 0.4395729899406433\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.65160071849823 -0.3882564902305603 -0.65160071849823 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 -0.3882564902305603 -0.921536922454834 1.0 0.5012654662132263 1.0 0.5012654662132263\n-0.24999994039535522 0.2567000389099121 -1.262017548242511e-07 -1.0 0.0 -0.0 2.5 0.6521799564361572 2.5 0.6521799564361572\n-0.2309698462486267 0.3523709177970886 -1.1130059363040345e-07 -0.9302957057952881 0.3667714595794678 -0.0 2.5 0.8355814218521118 2.5 0.8355814218521118\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 2.0 0.8355814218521118 2.0 0.8355814218521118\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.0 0.8762653470039368 1.0 0.8762653470039368\n0.16332030296325684 0.16102918982505798 -0.16332048177719116 0.6650899052619934 -0.3395184278488159 -0.6650899052619934 0.75 0.8762654662132263 0.75 0.8762654662132263\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-8.237197590688083e-09 0.2567000389099121 -0.25000011920928955 0.0 0.0 -0.999969482421875 1.5 0.6521799564361572 1.5 0.6521799564361572\n-2.0028574354569173e-08 0.16102918982505798 -0.23096990585327148 0.0 -0.3395184278488159 -0.9405804872512817 1.5 0.4687783122062683 1.5 0.4687783122062683\n-0.12499997019767761 0.4334768056869507 -0.12500008940696716 -0.5159153938293457 0.6838282346725464 -0.5159153938293457 1.2499998807907104 0.6270729899406433 1.2499998807907104 0.6270729899406433\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.0 0.4395729899406433 1.0 0.4395729899406433\n-0.10137978196144104 0.009099066257476807 -0.10137990117073059 -0.6311227679252625 -0.4508804678916931 -0.6311227679252625 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.65160071849823 -0.3882564902305603 -0.65160071849823 1.2499998807907104 0.5012654662132263 1.2499998807907104 0.5012654662132263\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -0.921536922454834 -0.3882564902305603 -0.0 1.5 0.5012654662132263 1.5 0.5012654662132263\n-0.17677664756774902 0.2567000389099121 -0.17677676677703857 -0.7070833444595337 0.0 -0.7070833444595337 1.999999761581421 0.6521799564361572 1.999999761581421 0.6521799564361572\n-0.16332033276557922 0.3523709177970886 -0.1633204221725464 -0.6577959656715393 0.3667714595794678 -0.6577959656715393 2.0 0.8355814218521118 2.0 0.8355814218521118\n-2.0028574354569173e-08 0.3523709177970886 -0.23096990585327148 0.0 0.3667714595794678 -0.9302957057952881 1.5 0.8355814218521118 1.5 0.8355814218521118\n-0.0676494836807251 0.4876699447631836 -0.06764960289001465 -0.29880672693252563 0.9063081741333008 -0.29880672693252563 1.2499998807907104 0.8145728707313538 1.2499998807907104 0.8145728707313538\n-8.85270345918343e-09 0.4876699447631836 -0.09567093849182129 0.0 0.9063081741333008 -0.42255929112434387 1.0 0.8145728707313538 1.0 0.8145728707313538\n-1.2577993757645345e-08 0.4334768056869507 -0.17677676677703857 0.0 0.6838282346725464 -0.729606032371521 1.0 0.6270729899406433 1.0 0.6270729899406433\n-5.602117880698643e-09 -0.07792764902114868 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.015914514660835266 0.2629193961620331 0.015914514660835266\n-6.486650327985899e-09 -0.20835745334625244 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.225510373711586 0.2629193961620331 0.225510373711586\n0.07545189559459686 -0.20835745334625244 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.225510373711586 0.32541942596435547 0.225510373711586\n-0.10670509934425354 -0.07792764902114868 -1.260678743619792e-07 -1.0 0.0 -0.0 0.13791939616203308 0.015914514660835266 0.13791939616203308 0.015914514660835266\n-0.10670509934425354 -0.20835745334625244 -1.2581514852172404e-07 -1.0 0.0 -0.0 0.13791939616203308 0.225510373711586 0.13791939616203308 0.225510373711586\n-0.07545191049575806 -0.20835745334625244 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.225510373711586 0.20041939616203308 0.225510373711586\n-9.757068042404171e-09 -0.07792764902114868 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.015914514660835266 0.5129194259643555 0.015914514660835266\n-1.0641600489691427e-08 -0.20835745334625244 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.225510373711586 0.5129194259643555 0.225510373711586\n-0.07545191049575806 -0.20835745334625244 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.225510373711586 0.5754194259643555 0.225510373711586\n0.07545189559459686 -0.07792764902114868 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.015914514660835266 0.32541942596435547 0.015914514660835266\n0.07545189559459686 -0.20835745334625244 0.0754517912864685 0.7070833444595337 0.0 0.7070833444595337 0.32541942596435547 0.225510373711586 0.32541942596435547 0.225510373711586\n0.10670509934425354 -0.20835745334625244 -1.216602072418027e-07 1.0 0.0 -0.0 0.3879193961620331 0.225510373711586 0.3879193961620331 0.225510373711586\n-0.07545191049575806 -0.07792764902114868 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.015914514660835266 0.20041939616203308 0.015914514660835266\n-0.07545191049575806 -0.20835745334625244 0.0754517912864685 -0.7070833444595337 0.0 0.7070833444595337 0.20041939616203308 0.225510373711586 0.20041939616203308 0.225510373711586\n-6.486650327985899e-09 -0.20835745334625244 0.10670498013496399 0.0 0.0 1.0 0.2629193961620331 0.225510373711586 0.2629193961620331 0.225510373711586\n-0.07545191049575806 -0.07792764902114868 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.015914514660835266 0.5754194259643555 0.015914514660835266\n-0.07545191049575806 -0.20835745334625244 -0.07545202970504761 -0.7070833444595337 0.0 -0.7070833444595337 0.5754194259643555 0.225510373711586 0.5754194259643555 0.225510373711586\n-0.10670509934425354 -0.20835745334625244 -1.2581514852172404e-07 -1.0 0.0 -0.0 0.6379194259643555 0.225510373711586 0.6379194259643555 0.225510373711586\n0.07545191049575806 -0.07792764902114868 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.015914514660835266 0.4504193961620331 0.015914514660835266\n0.07545191049575806 -0.20835745334625244 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.225510373711586 0.4504193961620331 0.225510373711586\n-1.0641600489691427e-08 -0.20835745334625244 -0.10670521855354309 0.0 0.0 -1.0 0.5129194259643555 0.225510373711586 0.5129194259643555 0.225510373711586\n0.10670509934425354 -0.07792764902114868 -1.2191291887120315e-07 1.0 0.0 -0.0 0.3879193961620331 0.015914514660835266 0.3879193961620331 0.015914514660835266\n0.10670509934425354 -0.20835745334625244 -1.216602072418027e-07 1.0 0.0 -0.0 0.3879193961620331 0.225510373711586 0.3879193961620331 0.225510373711586\n0.07545191049575806 -0.20835745334625244 -0.07545202970504761 0.7070833444595337 0.0 -0.7070833444595337 0.4504193961620331 0.225510373711586 0.4504193961620331 0.225510373711586\n0.10137978196144104 0.009099066257476807 -0.10137990117073059 0.6311227679252625 -0.4508804678916931 -0.6311227679252625 0.7500001192092896 0.5012654662132263 0.7500001192092896 0.5012654662132263\n0.16332030296325684 0.16102918982505798 -0.16332048177719116 0.6650899052619934 -0.3395184278488159 -0.6650899052619934 0.75 0.8762654662132263 0.75 0.8762654662132263\n0.2309698462486267 0.16102918982505798 -1.262017548242511e-07 0.9405804872512817 -0.3395184278488159 -0.0 0.5 0.8762653470039368 0.5 0.8762653470039368\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n"
  },
  {
    "path": "data/models/dev/plane.dymdl",
    "content": "DYMDLv1 972 324 1 1 1\ndev/white\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 2.0 -0.0 0.0 0.0 1.0 0.0 1.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -2.0 -0.0 0.0 0.0 1.0 0.0 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -2.0 -0.0 0.0 0.0 1.0 1.0 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 2.0 -0.0 0.0 0.0 -1.0 0.0 1.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -2.0 -0.0 0.0 0.0 -1.0 0.0 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 -0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 -0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -2.0 -0.0 0.0 0.0 -1.0 1.0 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 -1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 -1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 2.0 -0.0 0.0 0.0 1.0 1.0 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 2.0 -0.0 0.0 0.0 1.0 0.0 1.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -2.0 -0.0 0.0 0.0 1.0 1.0 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 2.0 -0.0 0.0 0.0 -1.0 1.0 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 2.0 -0.0 0.0 0.0 -1.0 0.0 1.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.111111119389534 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.222222238779068 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.3333333730697632 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 1.0 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 1.0 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 1.0 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.0 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.222222238779068 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.3333333730697632 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 -0.22222226858139038 -0.0 0.0 0.0 -0.999969482421875 0.0 0.444444477558136 0 0.9999995231628418 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.0 0.5555555820465088 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.0 0.6666666865348816 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.0 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.0 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.1111111119389534 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.1111111119389534 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.3333333432674408 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.111111119389534 0.444444477558136 0 0.9999995827674866 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.111111119389534 0.5555555820465088 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.111111119389534 0.6666666865348816 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.111111119389534 0.7777777910232544 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.111111119389534 0.8888888955116272 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.2222222238779068 0.2222222238779068 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.222222238779068 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.222222238779068 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.222222238779068 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.222222238779068 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.222222238779068 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333432674408 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.444444477558136 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.3333333730697632 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.3333333432674408 0.444444477558136 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.5555555820465088 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.3333333730697632 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -2.0 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.444444477558136 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.444444477558136 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.444444477558136 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.444444477558136 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n-0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.444444477558136 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -2.0 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.0 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.2222222238779068 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.2222222089767456 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.5555555820465088 0.444444477558136 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.5555555820465088 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.2222222089767456 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.6666666865348816 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.7777777910232544 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.2222222089767456 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.5555555820465088 0.8888888955116272 0 0.9999999403953552 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.1111111119389534 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -2.0 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.3333333432674408 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.6666666865348816 0.444444477558136 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.5555555820465088 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n0.6666666269302368 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.6666666865348816 0.6666666865348816 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.7777777910232544 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n0.6666666269302368 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.6666666269302368 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -2.0 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.3333333432674408 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.7777777910232544 0.444444477558136 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.5555555820465088 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.111111044883728 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.6666666865348816 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.7777777910232544 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.111111044883728 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.7777777910232544 0.8888888955116272 0 0.9999998807907104 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -2.0 -0.0 0.0 0.0 -1.0 1.0 0.0 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888955116272 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.1111111119389534 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.6666666865348816 -0.0 0.0 0.0 -0.999969482421875 0.8888888955116272 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.2222222238779068 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 -0.2222222089767456 -0.0 0.0 0.0 -0.999969482421875 0.8888888359069824 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 -1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.3333333432674408 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.22222226858139038 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 -1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.9999998807907104 -0.2222222089767456 -0.0 0.0 0.0 -1.0 1.0 0.444444477558136 0 0.9999996423721313 0 0.0 0 0.0 0 0.0\n1.5555554628372192 0.6666666865348816 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.22222226858139038 -0.0 0.0 0.0 -1.0 1.0 0.5555555820465088 0 0.9999997019767761 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.1111111640930176 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.9999998807907104 0.6666666865348816 -0.0 0.0 0.0 -1.0 1.0 0.6666666865348816 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n1.5555554628372192 1.5555555820465088 -0.0 0.0 0.0 -1.0 0.8888888359069824 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.5555555820465088 -0.0 0.0 0.0 -1.0 1.0 0.8888888955116272 0 0.9999998211860657 0 0.0 0 0.0 0 0.0\n1.9999998807907104 1.1111111640930176 -0.0 0.0 0.0 -1.0 1.0 0.7777777910232544 0 0.9999997615814209 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n384 385 386 0\n387 388 389 0\n390 391 392 0\n393 394 395 0\n396 397 398 0\n399 400 401 0\n402 403 404 0\n405 406 407 0\n408 409 410 0\n411 412 413 0\n414 415 416 0\n417 418 419 0\n420 421 422 0\n423 424 425 0\n426 427 428 0\n429 430 431 0\n432 433 434 0\n435 436 437 0\n438 439 440 0\n441 442 443 0\n444 445 446 0\n447 448 449 0\n450 451 452 0\n453 454 455 0\n456 457 458 0\n459 460 461 0\n462 463 464 0\n465 466 467 0\n468 469 470 0\n471 472 473 0\n474 475 476 0\n477 478 479 0\n480 481 482 0\n483 484 485 0\n486 487 488 0\n489 490 491 0\n492 493 494 0\n495 496 497 0\n498 499 500 0\n501 502 503 0\n504 505 506 0\n507 508 509 0\n510 511 512 0\n513 514 515 0\n516 517 518 0\n519 520 521 0\n522 523 524 0\n525 526 527 0\n528 529 530 0\n531 532 533 0\n534 535 536 0\n537 538 539 0\n540 541 542 0\n543 544 545 0\n546 547 548 0\n549 550 551 0\n552 553 554 0\n555 556 557 0\n558 559 560 0\n561 562 563 0\n564 565 566 0\n567 568 569 0\n570 571 572 0\n573 574 575 0\n576 577 578 0\n579 580 581 0\n582 583 584 0\n585 586 587 0\n588 589 590 0\n591 592 593 0\n594 595 596 0\n597 598 599 0\n600 601 602 0\n603 604 605 0\n606 607 608 0\n609 610 611 0\n612 613 614 0\n615 616 617 0\n618 619 620 0\n621 622 623 0\n624 625 626 0\n627 628 629 0\n630 631 632 0\n633 634 635 0\n636 637 638 0\n639 640 641 0\n642 643 644 0\n645 646 647 0\n648 649 650 0\n651 652 653 0\n654 655 656 0\n657 658 659 0\n660 661 662 0\n663 664 665 0\n666 667 668 0\n669 670 671 0\n672 673 674 0\n675 676 677 0\n678 679 680 0\n681 682 683 0\n684 685 686 0\n687 688 689 0\n690 691 692 0\n693 694 695 0\n696 697 698 0\n699 700 701 0\n702 703 704 0\n705 706 707 0\n708 709 710 0\n711 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n723 724 725 0\n726 727 728 0\n729 730 731 0\n732 733 734 0\n735 736 737 0\n738 739 740 0\n741 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n753 754 755 0\n756 757 758 0\n759 760 761 0\n762 763 764 0\n765 766 767 0\n768 769 770 0\n771 772 773 0\n774 775 776 0\n777 778 779 0\n780 781 782 0\n783 784 785 0\n786 787 788 0\n789 790 791 0\n792 793 794 0\n795 796 797 0\n798 799 800 0\n801 802 803 0\n804 805 806 0\n807 808 809 0\n810 811 812 0\n813 814 815 0\n816 817 818 0\n819 820 821 0\n822 823 824 0\n825 826 827 0\n828 829 830 0\n831 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n843 844 845 0\n846 847 848 0\n849 850 851 0\n852 853 854 0\n855 856 857 0\n858 859 860 0\n861 862 863 0\n864 865 866 0\n867 868 869 0\n870 871 872 0\n873 874 875 0\n876 877 878 0\n879 880 881 0\n882 883 884 0\n885 886 887 0\n888 889 890 0\n891 892 893 0\n894 895 896 0\n897 898 899 0\n900 901 902 0\n903 904 905 0\n906 907 908 0\n909 910 911 0\n912 913 914 0\n915 916 917 0\n918 919 920 0\n921 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n933 934 935 0\n936 937 938 0\n939 940 941 0\n942 943 944 0\n945 946 947 0\n948 949 950 0\n951 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n963 964 965 0\n966 967 968 0\n969 970 971 0\nRoot -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nRoot\n"
  },
  {
    "path": "data/models/dev/sound.stmdl",
    "content": "186 62 1\ndev/sound\n2.7418135317702763e-08 0.1199999749660492 0.04013171046972275 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 0.21213197708129883 -0.10383731126785278 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n4.9696161852352816e-08 -0.30000007152557373 -0.10383731126785278 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.30000001192092896 -3.548338867176426e-08 -0.10383731126785278 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 0.21213197708129883 -0.10383731126785278 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n4.9696161852352816e-08 -0.30000007152557373 -0.10383731126785278 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.30000001192092896 -3.548338867176426e-08 -0.10383731126785278 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.999969482421875 0.0 -0.0 0.07078734040260315 0.23519167304039001 0.07078734040260315 0.23519167304039001\n0.12000000476837158 -2.6542693376541138e-08 0.04013171046972275 0.999969482421875 0.0 -0.0 0.07078734040260315 0.01840570569038391 0.07078734040260315 0.01840570569038391\n0.08485285937786102 -0.08485284447669983 0.11585262417793274 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.23519167304039001 0.11559708416461945 0.23519167304039001\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -1.0 0.0 -0.0 0.3767671585083008 0.01840570569038391 0.3767671585083008 0.01840570569038391\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.01840570569038391 0.3319575786590576 0.01840570569038391\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.01840570569038391 0.3319575786590576 0.01840570569038391\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.999969482421875 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n2.7418135317702763e-08 0.1199999749660492 0.04013171046972275 0.0 1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.999969482421875 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n2.7418135317702763e-08 0.1199999749660492 0.04013171046972275 0.0 1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.999969482421875 0.0 -0.0 0.07078734040260315 0.23519167304039001 0.07078734040260315 0.23519167304039001\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n0.12000000476837158 -2.6542693376541138e-08 0.04013171046972275 0.999969482421875 0.0 -0.0 0.07078734040260315 0.01840570569038391 0.07078734040260315 0.01840570569038391\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.01840570569038391 0.3319575786590576 0.01840570569038391\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -1.0 0.0 -0.0 0.3767671585083008 0.01840570569038391 0.3767671585083008 0.01840570569038391\n-0.08485278487205505 0.08485278487205505 0.11585262417793274 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.01840570569038391 0.3319575786590576 0.01840570569038391\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 0.2760094106197357 -0.9611499309539795 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.14479899406433105 0.31266430020332336 0.14479899406433105 0.31266430020332336\n4.9696161852352816e-08 -0.30000007152557373 -0.10383731126785278 0.0 0.2760094106197357 -0.9611499309539795 0.48759859800338745 0.28646716475486755 0.48759859800338745 0.28646716475486755\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 0.2760094106197357 0.0 -0.9611499309539795 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.8303983211517334 0.3126644492149353 0.8303983211517334 0.3126644492149353\n-0.30000001192092896 -3.548338867176426e-08 -0.10383731126785278 0.2760094106197357 0.0 -0.9611499309539795 0.9723902940750122 0.6554643511772156 0.9723902940750122 0.6554643511772156\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 -0.2760094106197357 -0.9611499309539795 0.4875982403755188 0.9821358919143677 0.4875982403755188 0.9821358919143677\n-0.08485278487205505 0.08485281467437744 -0.052147381007671356 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.621492862701416 0.7873842120170593 0.621492862701416 0.7873842120170593\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.8303979635238647 0.9982638359069824 0.8303979635238647 0.9982638359069824\n0.212132066488266 0.21213197708129883 -0.10383731126785278 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.14479878544807434 0.9982633590698242 0.14479878544807434 0.9982633590698242\n2.60770320892334e-08 0.1199999749660492 -0.052147381007671356 0.0 -0.2760094106197357 -0.9611499309539795 0.4889945089817047 0.8434231877326965 0.4889945089817047 0.8434231877326965\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 -0.2760094106197357 -0.9611499309539795 0.4875982403755188 0.9821358919143677 0.4875982403755188 0.9821358919143677\n0.08485285937786102 -0.08485281467437744 -0.05214738845825195 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.3537041246891022 0.5235439538955688 0.3537041246891022 0.5235439538955688\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 -0.2760094106197357 0.0 -0.9611499309539795 0.002806723117828369 0.6554639339447021 0.002806723117828369 0.6554639339447021\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.14479899406433105 0.31266430020332336 0.14479899406433105 0.31266430020332336\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.8303983211517334 0.3126644492149353 0.8303983211517334 0.3126644492149353\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 0.2760094106197357 -0.9611499309539795 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n4.9696161852352816e-08 -0.30000007152557373 -0.10383731126785278 0.0 0.2760094106197357 -0.9611499309539795 0.48759859800338745 0.28646716475486755 0.48759859800338745 0.28646716475486755\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.8303979635238647 0.9982638359069824 0.8303979635238647 0.9982638359069824\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 0.2760094106197357 0.0 -0.9611499309539795 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n-0.30000001192092896 -3.548338867176426e-08 -0.10383731126785278 0.2760094106197357 0.0 -0.9611499309539795 0.9723902940750122 0.6554643511772156 0.9723902940750122 0.6554643511772156\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 -0.2760094106197357 0.0 -0.9611499309539795 0.002806723117828369 0.6554639339447021 0.002806723117828369 0.6554639339447021\n0.08485285937786102 0.08485278487205505 -0.052147381007671356 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.3556783199310303 0.7893582582473755 0.3556783199310303 0.7893582582473755\n0.212132066488266 0.21213197708129883 -0.10383731126785278 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.14479878544807434 0.9982633590698242 0.14479878544807434 0.9982633590698242\n3.790886893284551e-08 -0.12000003457069397 0.11585262417793274 0.0 0.0 1.0 0.9038795828819275 0.05527821183204651 0.9038795828819275 0.05527821183204651\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.0 0.0 1.0 0.8052781820297241 0.09612029790878296 0.8052781820297241 0.09612029790878296\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.1947217583656311 0.8461202383041382 0.1947217583656311\n-0.08485278487205505 0.08485281467437744 -0.052147381007671356 -0.1598559468984604 0.1598559468984604 -0.9740898013114929 0.621492862701416 0.7873842120170593 0.621492862701416 0.7873842120170593\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 -0.22608111798763275 0.0 -0.9740898013114929 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 -0.22608111798763275 0.0 -0.9740898013114929 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n-0.08485278487205505 -0.08485284447669983 -0.05214738845825195 -0.1598559468984604 -0.1598559468984604 -0.9740898013114929 0.619518518447876 0.5215696096420288 0.619518518447876 0.5215696096420288\n-0.08485278487205505 -0.08485284447669983 -0.05214738845825195 -0.1598559468984604 -0.1598559468984604 -0.9740898013114929 0.619518518447876 0.5215696096420288 0.619518518447876 0.5215696096420288\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 -0.22608111798763275 -0.9740898013114929 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 -0.22608111798763275 -0.9740898013114929 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n0.08485285937786102 -0.08485281467437744 -0.05214738845825195 0.1598559468984604 -0.1598559468984604 -0.9740898013114929 0.3537041246891022 0.5235439538955688 0.3537041246891022 0.5235439538955688\n0.08485285937786102 -0.08485281467437744 -0.05214738845825195 0.1598559468984604 -0.1598559468984604 -0.9740898013114929 0.3537041246891022 0.5235439538955688 0.3537041246891022 0.5235439538955688\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n0.12000000476837158 -1.7601996304961176e-08 -0.052147381007671356 0.22608111798763275 0.0 -0.9740898013114929 0.2996392846107483 0.6568599939346313 0.2996392846107483 0.6568599939346313\n0.12000000476837158 -1.7601996304961176e-08 -0.052147381007671356 0.22608111798763275 0.0 -0.9740898013114929 0.2996392846107483 0.6568599939346313 0.2996392846107483 0.6568599939346313\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n0.08485285937786102 0.08485278487205505 -0.052147381007671356 0.1598559468984604 0.1598559468984604 -0.9740898013114929 0.3556783199310303 0.7893582582473755 0.3556783199310303 0.7893582582473755\n0.08485285937786102 0.08485278487205505 -0.052147381007671356 0.1598559468984604 0.1598559468984604 -0.9740898013114929 0.3556783199310303 0.7893582582473755 0.3556783199310303 0.7893582582473755\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n2.60770320892334e-08 0.1199999749660492 -0.052147381007671356 0.0 0.22608111798763275 -0.9740898013114929 0.4889945089817047 0.8434231877326965 0.4889945089817047 0.8434231877326965\n2.60770320892334e-08 0.1199999749660492 -0.052147381007671356 0.0 0.22608111798763275 -0.9740898013114929 0.4889945089817047 0.8434231877326965 0.4889945089817047 0.8434231877326965\n1.973755736628391e-08 -2.2815592970459875e-08 -0.07999999821186066 0.0 0.0 -1.0 0.4875984787940979 0.6554641127586365 0.4875984787940979 0.6554641127586365\n-0.08485278487205505 0.08485281467437744 -0.052147381007671356 -0.1598559468984604 0.1598559468984604 -0.9740898013114929 0.621492862701416 0.7873842120170593 0.621492862701416 0.7873842120170593\n2.7418135317702763e-08 0.1199999749660492 0.04013171046972275 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 0.21213197708129883 -0.10383731126785278 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.12000000476837158 -2.6542693376541138e-08 0.04013171046972275 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n4.9696161852352816e-08 -0.30000007152557373 -0.10383731126785278 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.12000000476837158 -2.6542693376541138e-08 0.04013171046972275 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 -0.08485284447669983 0.04013170301914215 -0.44166386127471924 -0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.30000001192092896 -3.548338867176426e-08 -0.10383731126785278 -0.6245918273925781 0.0 0.7809076309204102 0.0 0.0 0.0 0.0\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.44166386127471924 0.44166386127471924 0.7809076309204102 0.0 0.0 0.0 0.0\n2.7418135317702763e-08 0.1199999749660492 0.04013171046972275 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 0.6245918273925781 0.7809076309204102 0.0 0.0 0.0 0.0\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n0.08485285937786102 0.08485276997089386 0.11585265398025513 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.23519167304039001 0.11559708416461945 0.23519167304039001\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.999969482421875 0.0 -0.0 0.07078734040260315 0.23519167304039001 0.07078734040260315 0.23519167304039001\n0.08485285937786102 -0.08485284447669983 0.11585262417793274 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.23519167304039001 0.11559708416461945 0.23519167304039001\n3.790886893284551e-08 -0.12000003457069397 0.11585262417793274 0.0 -1.0 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n-0.1199999749660492 -3.548338867176426e-08 0.11585262417793274 -1.0 0.0 -0.0 0.3767671585083008 0.23519167304039001 0.3767671585083008 0.23519167304039001\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -1.0 0.0 -0.0 0.3767671585083008 0.01840570569038391 0.3767671585083008 0.01840570569038391\n-0.08485278487205505 0.08485281467437744 0.040131717920303345 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.01840570569038391 0.3319575786590576 0.01840570569038391\n-0.08485278487205505 0.08485278487205505 0.11585262417793274 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.999969482421875 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.999969482421875 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n0.08485285937786102 0.08485276997089386 0.11585265398025513 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.23519167304039001 0.11559708416461945 0.23519167304039001\n0.08485285937786102 0.08485278487205505 0.04013171046972275 0.7070833444595337 0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.999969482421875 0.0 -0.0 0.07078734040260315 0.23519167304039001 0.07078734040260315 0.23519167304039001\n0.08485285937786102 -0.08485284447669983 0.11585262417793274 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.23519167304039001 0.11559708416461945 0.23519167304039001\n0.08485285937786102 -0.08485281467437744 0.04013170301914215 0.7070833444595337 -0.7070833444595337 -0.0 0.11559708416461945 0.01840570569038391 0.11559708416461945 0.01840570569038391\n3.790886893284551e-08 -0.12000003457069397 0.04013171046972275 0.0 -1.0 -0.0 0.22377730906009674 0.01840570569038391 0.22377730906009674 0.01840570569038391\n3.790886893284551e-08 -0.12000003457069397 0.11585262417793274 0.0 -1.0 -0.0 0.22377730906009674 0.23519167304039001 0.22377730906009674 0.23519167304039001\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 -0.7070833444595337 -0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n-0.1199999749660492 -3.548338867176426e-08 0.04013171046972275 -1.0 0.0 -0.0 0.3767671585083008 0.01840570569038391 0.3767671585083008 0.01840570569038391\n-0.1199999749660492 -3.548338867176426e-08 0.11585262417793274 -1.0 0.0 -0.0 0.3767671585083008 0.23519167304039001 0.3767671585083008 0.23519167304039001\n-0.08485278487205505 0.08485278487205505 0.11585262417793274 -0.7070833444595337 0.7070833444595337 -0.0 0.3319575786590576 0.23519167304039001 0.3319575786590576 0.23519167304039001\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 0.2760094106197357 -0.9611499309539795 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n0.08485285937786102 -0.08485281467437744 -0.05214738845825195 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.3537041246891022 0.5235439538955688 0.3537041246891022 0.5235439538955688\n0.212132066488266 -0.2121320366859436 -0.10383734107017517 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.14479899406433105 0.31266430020332336 0.14479899406433105 0.31266430020332336\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 0.2760094106197357 0.0 -0.9611499309539795 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n-0.08485278487205505 -0.08485284447669983 -0.05214738845825195 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.619518518447876 0.5215696096420288 0.619518518447876 0.5215696096420288\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.8303983211517334 0.3126644492149353 0.8303983211517334 0.3126644492149353\n2.3469329590852794e-08 0.2999999523162842 -0.10383731126785278 0.0 -0.2760094106197357 -0.9611499309539795 0.4875982403755188 0.9821358919143677 0.4875982403755188 0.9821358919143677\n2.60770320892334e-08 0.1199999749660492 -0.052147381007671356 0.0 -0.2760094106197357 -0.9611499309539795 0.4889945089817047 0.8434231877326965 0.4889945089817047 0.8434231877326965\n-0.08485278487205505 0.08485281467437744 -0.052147381007671356 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.621492862701416 0.7873842120170593 0.621492862701416 0.7873842120170593\n0.212132066488266 0.21213197708129883 -0.10383731126785278 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.14479878544807434 0.9982633590698242 0.14479878544807434 0.9982633590698242\n0.08485285937786102 0.08485278487205505 -0.052147381007671356 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.3556783199310303 0.7893582582473755 0.3556783199310303 0.7893582582473755\n2.60770320892334e-08 0.1199999749660492 -0.052147381007671356 0.0 -0.2760094106197357 -0.9611499309539795 0.4889945089817047 0.8434231877326965 0.4889945089817047 0.8434231877326965\n0.08485285937786102 -0.08485281467437744 -0.05214738845825195 -0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.3537041246891022 0.5235439538955688 0.3537041246891022 0.5235439538955688\n0.12000000476837158 -1.7601996304961176e-08 -0.052147381007671356 -0.2760094106197357 0.0 -0.9611499309539795 0.2996392846107483 0.6568599939346313 0.2996392846107483 0.6568599939346313\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 -0.2760094106197357 0.0 -0.9611499309539795 0.002806723117828369 0.6554639339447021 0.002806723117828369 0.6554639339447021\n-0.21213200688362122 -0.21213209629058838 -0.10383734107017517 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.8303983211517334 0.3126644492149353 0.8303983211517334 0.3126644492149353\n-0.08485278487205505 -0.08485284447669983 -0.05214738845825195 0.19516587257385254 0.19516587257385254 -0.9611499309539795 0.619518518447876 0.5215696096420288 0.619518518447876 0.5215696096420288\n3.656776570437614e-08 -0.12000003457069397 -0.052147381007671356 0.0 0.2760094106197357 -0.9611499309539795 0.4862024188041687 0.4675047993659973 0.4862024188041687 0.4675047993659973\n-0.21213200688362122 0.2121320366859436 -0.10383731126785278 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.8303979635238647 0.9982638359069824 0.8303979635238647 0.9982638359069824\n-0.08485278487205505 0.08485281467437744 -0.052147381007671356 0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.621492862701416 0.7873842120170593 0.621492862701416 0.7873842120170593\n-0.1199999749660492 -2.6542693376541138e-08 -0.052147381007671356 0.2760094106197357 0.0 -0.9611499309539795 0.6755576133728027 0.6540679931640625 0.6755576133728027 0.6540679931640625\n0.30000001192092896 -1.7601996304961176e-08 -0.10383731126785278 -0.2760094106197357 0.0 -0.9611499309539795 0.002806723117828369 0.6554639339447021 0.002806723117828369 0.6554639339447021\n0.12000000476837158 -1.7601996304961176e-08 -0.052147381007671356 -0.2760094106197357 0.0 -0.9611499309539795 0.2996392846107483 0.6568599939346313 0.2996392846107483 0.6568599939346313\n0.08485285937786102 0.08485278487205505 -0.052147381007671356 -0.19516587257385254 -0.19516587257385254 -0.9611499309539795 0.3556783199310303 0.7893582582473755 0.3556783199310303 0.7893582582473755\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.1947217583656311 0.8461202383041382 0.1947217583656311\n-0.08485278487205505 0.08485278487205505 0.11585262417793274 0.0 0.0 1.0 0.9038795828819275 0.19472169876098633 0.9038795828819275 0.19472169876098633\n-0.1199999749660492 -3.548338867176426e-08 0.11585262417793274 0.0 0.0 1.0 0.9447216391563416 0.15387964248657227 0.9447216391563416 0.15387964248657227\n-0.1199999749660492 -3.548338867176426e-08 0.11585262417793274 0.0 0.0 1.0 0.9447216391563416 0.15387964248657227 0.9447216391563416 0.15387964248657227\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 0.0 0.0 1.0 0.9447216391563416 0.09612026810646057 0.9447216391563416 0.09612026810646057\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.1947217583656311 0.8461202383041382 0.1947217583656311\n-0.08485278487205505 -0.08485284447669983 0.11585262417793274 0.0 0.0 1.0 0.9447216391563416 0.09612026810646057 0.9447216391563416 0.09612026810646057\n3.790886893284551e-08 -0.12000003457069397 0.11585262417793274 0.0 0.0 1.0 0.9038795828819275 0.05527821183204651 0.9038795828819275 0.05527821183204651\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.1947217583656311 0.8461202383041382 0.1947217583656311\n3.790886893284551e-08 -0.12000003457069397 0.11585262417793274 0.0 0.0 1.0 0.9038795828819275 0.05527821183204651 0.9038795828819275 0.05527821183204651\n0.08485285937786102 -0.08485284447669983 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.05527821183204651 0.8461202383041382 0.05527821183204651\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.0 0.0 1.0 0.8052781820297241 0.09612029790878296 0.8052781820297241 0.09612029790878296\n0.12000000476837158 -2.6542693376541138e-08 0.11585262417793274 0.0 0.0 1.0 0.8052781820297241 0.09612029790878296 0.8052781820297241 0.09612029790878296\n0.08485285937786102 0.08485276997089386 0.11585265398025513 0.0 0.0 1.0 0.8052781224250793 0.15387964248657227 0.8052781224250793 0.15387964248657227\n2.7418135317702763e-08 0.1199999749660492 0.11585262417793274 0.0 0.0 1.0 0.8461202383041382 0.1947217583656311 0.8461202383041382 0.1947217583656311\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n"
  },
  {
    "path": "data/models/devukaste.mdmdl",
    "content": "MDMDLv1 metalakaste\nmetalareste kastetase"
  },
  {
    "path": "data/models/floppa.dymdl",
    "content": "1638 546 1 7 7\nfloppa\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.589812159538269 0.4188792407512665 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n-0.029034316539764404 0.02282658964395523 0.5975655317306519 -0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.33391112089157104 0.6721431612968445 1 0.9265840649604797 4 0.026504922658205032 0 0.0 0 0.0\n-0.035290539264678955 0.032179124653339386 0.6548959016799927 -0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9649173617362976 0 0.0 0 0.0 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.29570549726486206 0.6925798058509827 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.6875460743904114 0.7333278059959412 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.7006834745407104 0.8323686122894287 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.6366429924964905 0.4814949929714203 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.44332829117774963 0.5980841517448425 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.44964930415153503 0.499088853597641 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.18203496932983398 0.3555026054382324 0.6355704069137573 -0.7024140357971191 0.35395365953445435 0.617480993270874 0.682029664516449 0.03247282654047012 1 0.9823503494262695 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6506124138832092 0.00040331503259949386 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.5377382636070251 0.12118156999349594 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.1047014594078064 0.34171581268310547 0.6355704069137573 0.5681020617485046 0.5726493000984192 0.5910214781761169 0.5776293873786926 0.06218792498111725 1 0.9845274090766907 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.13313615322113037 0.3669123649597168 0.6355704069137573 0.44904935359954834 0.7006744742393494 0.5543687343597412 0.613527774810791 0.02318226918578148 1 0.983238697052002 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6506124138832092 0.00040331503259949386 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.4579574763774872 0.4805571734905243 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n0.0 0.09236795455217361 0.7743176221847534 0.0 -0.12359996140003204 0.9923093318939209 0.4487127959728241 0.4081156253814697 1 0.9922438859939575 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n0.0 0.09236795455217361 0.7743176221847534 0.0 -0.12359996140003204 0.9923093318939209 0.4487127959728241 0.4081156253814697 1 0.9922438859939575 0 0.0 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3724357783794403 0.6571521162986755 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n-0.035290539264678955 0.032179124653339386 0.6548959016799927 -0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9649173617362976 0 0.0 0 0.0 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.2781895399093628 0.8110224008560181 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.035290539264678955 0.032179124653339386 0.6548959016799927 -0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9649173617362976 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.7010108828544617 0.6815871596336365 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.035290539264678955 0.032179124653339386 0.6548959016799927 -0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.7705878019332886 0.688330888748169 1 0.9649173617362976 0 0.0 0 0.0 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.3451562821865082 0.8853135108947754 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.09416019916534424 0.07008225470781326 0.5274871587753296 -0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.3451562821865082 0.9297898411750793 1 0.8562964797019958 0 0.09284330904483795 4 0.036915142089128494 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.924144446849823 0.8115005493164062 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.09416019916534424 0.07008225470781326 0.5274871587753296 -0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.9130188822746277 0.861991822719574 1 0.8562964797019958 0 0.09284330904483795 4 0.036915142089128494 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.9084641337394714 0.8151150941848755 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.1095123291015625 0.6479935050010681 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.040995195508003235 0.656345546245575 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3157893419265747 0.8918732404708862 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n-0.029034316539764404 0.02282658964395523 0.5975655317306519 -0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.3254745602607727 0.8884339332580566 1 0.9265840649604797 4 0.026504922658205032 0 0.0 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.003714407328516245 0.717420756816864 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.00040331503259949386 0.7850019931793213 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.18764083087444305 0.5508929491043091 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.17356276512145996 -0.18332982063293457 0.28318774700164795 -0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.09196234494447708 0.7093120813369751 4 0.9596999883651733 0 0.01140328124165535 0 0.0 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.00040331503259949386 0.7850019931793213 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.6543000340461731 0.6595564484596252 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6920541524887085 0.5932608246803284 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.6920541524887085 0.6707813739776611 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.0938851460814476 0.6571521162986755 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.17356276512145996 -0.18332982063293457 0.28318774700164795 -0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.09196234494447708 0.7093120813369751 4 0.9596999883651733 0 0.01140328124165535 0 0.0 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.09038317203521729 -0.29511165618896484 0.4450465440750122 0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 4 0.9791664481163025 0 0.0 0 0.0 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6195079684257507 0.9027084112167358 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.6195079684257507 0.8264847993850708 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.09287118911743164 -0.34740591049194336 0.4394129514694214 0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.038997162133455276 0.8780998587608337 4 0.9969676733016968 0 0.0 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.3250100612640381 0.5316429734230042 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.09038317203521729 -0.29511165618896484 0.4450465440750122 0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 4 0.9791664481163025 0 0.0 0 0.0 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.09287118911743164 -0.34740591049194336 0.4394129514694214 0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.038997162133455276 0.8780998587608337 4 0.9969676733016968 0 0.0 0 0.0 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.09287118911743164 -0.34740591049194336 0.4394129514694214 0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 4 0.9969676733016968 0 0.0 0 0.0 0 0.0\n-0.08881819248199463 -0.3583719730377197 0.34317684173583984 0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 4 0.9974430799484253 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.4382849633693695 0.8507182598114014 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.09170717000961304 -0.5278036594390869 0.36790919303894043 0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.4601333737373352 0.8521638512611389 4 0.9999263882637024 0 0.0 0 0.0 0 0.0\n-0.08881819248199463 -0.3583719730377197 0.34317684173583984 0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 4 0.9974430799484253 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.09170717000961304 -0.5278036594390869 0.36790919303894043 0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.4601333737373352 0.8521638512611389 4 0.9999263882637024 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.09170717000961304 -0.5278036594390869 0.36790919303894043 0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 4 0.9999263882637024 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.1552836298942566 -0.5217366218566895 0.43705475330352783 -0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 4 0.999962329864502 0 0.0 0 0.0 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.3250100612640381 0.5316429734230042 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.398474782705307 0.9319923520088196 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.43451640009880066 0.8887473344802856 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.4345163404941559 0.9368331432342529 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.18211792409420013 0.8958807587623596 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.14707347750663757 0.9055101275444031 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.4345051050186157 0.5361970067024231 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.1552836298942566 -0.5217366218566895 0.43705475330352783 -0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 4 0.999962329864502 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.060366492718458176 0.9931369423866272 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.02459888905286789 0.9870380163192749 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.23897626996040344 0.9261899590492249 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.16460078954696655 -0.5697596073150635 0.48491013050079346 -0.7637562155723572 0.4125797152519226 0.49638354778289795 0.2568512558937073 0.8885793089866638 4 0.9999933242797852 0 0.0 0 0.0 0 0.0\n-0.07761454582214355 -0.5762221813201904 0.4922894239425659 0.7108676433563232 0.4380016326904297 0.5502487421035767 0.2568512558937073 0.9330030679702759 4 0.9999874234199524 0 0.0 0 0.0 0 0.0\n-0.07761454582214355 -0.5762221813201904 0.4922894239425659 0.7108676433563232 0.4380016326904297 0.5502487421035767 0.7915221452713013 0.8456106185913086 4 0.9999874234199524 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.7675260305404663 0.8808123469352722 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.0876038670539856 -0.6115889549255371 0.5072916746139526 0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.7738296985626221 0.848929762840271 4 0.9999920725822449 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.6844348311424255 0.6808247566223145 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.0876038670539856 -0.6115889549255371 0.5072916746139526 0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.6532340049743652 0.6715880036354065 4 0.9999920725822449 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.09195363521575928 -0.602745532989502 0.37857210636138916 0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.654041051864624 0.7388721704483032 4 0.9999947547912598 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.09195363521575928 -0.602745532989502 0.37857210636138916 0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.3809150457382202 0.9164982438087463 4 0.9999947547912598 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.39766812324523926 0.8839065432548523 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.39766812324523926 0.9202498197555542 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.91065514087677 0.3558618128299713 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.15127533674240112 -0.6052298545837402 0.36068880558013916 -0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.9270529747009277 0.3585353493690491 4 0.9999959468841553 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.9334527254104614 0.42665594816207886 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.16460078954696655 -0.5697596073150635 0.48491013050079346 -0.7637562155723572 0.4125797152519226 0.49638354778289795 0.9077709913253784 0.42341071367263794 4 0.9999933242797852 0 0.0 0 0.0 0 0.0\n-0.07761454582214355 -0.5762221813201904 0.4922894239425659 0.7108676433563232 0.4380016326904297 0.5502487421035767 0.9174387454986572 0.7464988231658936 4 0.9999874234199524 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.9084641337394714 0.7634201049804688 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.9115410447120667 0.8106938600540161 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.9084641337394714 0.7634201049804688 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.804821252822876 0.43789535760879517 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.7954190373420715 0.7463236451148987 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.8518539071083069 0.7395947575569153 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.20714151859283447 -0.0656772330403328 -0.5096536874771118 -0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 3 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.09115571528673172 0.7004624009132385 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.14348971843719482 0.04227609187364578 0.4033273458480835 -0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.5547997355461121 1 0.27050960063934326 4 0.16870296001434326 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n-0.20714151859283447 -0.0656772330403328 -0.5096536874771118 -0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 3 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.24815957248210907 -0.0371197834610939 -0.2536252737045288 -0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 3 0.2454865425825119 2 0.007828813046216965 0 0.0\n-0.24815957248210907 -0.0371197834610939 -0.2536252737045288 -0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 3 0.2454865425825119 2 0.007828813046216965 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n-0.24815957248210907 -0.0371197834610939 -0.2536252737045288 -0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 3 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.216885507106781 0.10776758939027786 -0.49034416675567627 -0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549932837486267 3 0.30454903841018677 2 0.30049633979797363 0 0.0\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n-0.216885507106781 0.10776758939027786 -0.49034416675567627 -0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.062087494879961014 0.06426440179347992 0 0.38549932837486267 3 0.30454903841018677 2 0.30049633979797363 0 0.0\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.8421570658683777 0.4227440059185028 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n-0.216885507106781 0.10776758939027786 -0.49034416675567627 -0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549932837486267 3 0.30454903841018677 2 0.30049633979797363 0 0.0\n-0.15887433290481567 0.21892106533050537 -0.44221174716949463 -0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.8707311749458313 0.4370887577533722 2 0.6093363165855408 0 0.28971463441848755 3 0.09326215833425522 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.3732423782348633 0.6631662249565125 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.30632472038269043 -0.888379693031311 0.0 0.7523728013038635 0.6587114930152893 0.7946124076843262 0.6690369248390198 2 0.9999912977218628 0 0.0 0 0.0 0 0.0\n-0.03248608112335205 0.2871565818786621 -0.9138075113296509 -0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.7761039733886719 0.6807805299758911 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n-0.03248608112335205 0.2871565818786621 -0.9138075113296509 -0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.43451640009880066 0.8696845769882202 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n0.0 0.2664310932159424 -0.9455810785293579 0.0 -0.7245094180107117 -0.6892300248146057 0.4191298186779022 0.8830998539924622 2 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n-0.15887433290481567 0.21892106533050537 -0.44221174716949463 -0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.009432848542928696 0.0927925854921341 2 0.6093363165855408 0 0.28971463441848755 3 0.09326215833425522 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n-0.17741501331329346 0.1839226484298706 -0.056742191314697266 -0.5986510515213013 0.765648365020752 0.23526719212532043 0.03717894107103348 0.29337358474731445 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n-0.17741501331329346 0.1839226484298706 -0.056742191314697266 -0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.14348971843719482 0.04227609187364578 0.4033273458480835 -0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.5547997355461121 1 0.27050960063934326 4 0.16870296001434326 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n-0.14348971843719482 0.04227609187364578 0.4033273458480835 -0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.5547997355461121 1 0.27050960063934326 4 0.16870296001434326 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.14436477422714233 0.1705399751663208 0.42970240116119385 -0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.7659354209899902 0 0.20331056416034698 4 0.007473912090063095 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.749397337436676 0.00040331503259949386 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n0.0 0.21217751502990723 0.36668074131011963 0.0 0.8941618204116821 -0.44770652055740356 0.7946124076843262 0.012804902158677578 1 0.7214112877845764 0 0.26902148127555847 0 0.0 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.14436477422714233 0.1705399751663208 0.42970240116119385 -0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.7659354209899902 0 0.20331056416034698 4 0.007473912090063095 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.07563048601150513 0.27506399154663086 0.4404362440109253 -0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.009478164836764336 0.5564171671867371 1 0.9063006639480591 0 0.08650905638933182 0 0.0 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.34596291184425354 0.8853135108947754 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.37843960523605347 0.9328422546386719 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.07563048601150513 0.27506399154663086 0.4404362440109253 -0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.3467414975166321 0.9241817593574524 1 0.9063006639480591 0 0.08650905638933182 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.17613452672958374 0.2313833236694336 0.6070717573165894 -0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754646420478821 0 0.0 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.27738291025161743 0.6571521162986755 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.13313615322113037 0.3669123649597168 0.6355704069137573 0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.983238697052002 0 0.0 0 0.0 0 0.0\n-0.1047014594078064 0.34171581268310547 0.6355704069137573 0.5681020617485046 0.5726493000984192 0.5910214781761169 0.8933216333389282 0.8348871469497681 1 0.9845274090766907 0 0.0 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.1047014594078064 0.34171581268310547 0.6355704069137573 0.5681020617485046 0.5726493000984192 0.5910214781761169 0.8933216333389282 0.8348871469497681 1 0.9845274090766907 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.8641595244407654 0.9000012874603271 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.18203496932983398 0.3555026054382324 0.6355704069137573 -0.7024140357971191 0.35395365953445435 0.617480993270874 0.2770572006702423 0.8555743098258972 1 0.9823503494262695 0 0.0 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.18203496932983398 0.3555026054382324 0.6355704069137573 -0.7024140357971191 0.35395365953445435 0.617480993270874 0.2770572006702423 0.8555743098258972 1 0.9823503494262695 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.27738291025161743 0.8877726197242737 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.13313615322113037 0.3669123649597168 0.6355704069137573 0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.983238697052002 0 0.0 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.8526605367660522 0.760287344455719 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.9076574444770813 0.7395947575569153 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.07363545894622803 0.2982339859008789 0.6007412672042847 0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836710691452026 0 0.0 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.17613452672958374 0.2313833236694336 0.6070717573165894 -0.939146101474762 -0.07638783007860184 -0.334879606962204 0.03147881478071213 0.6419441103935242 1 0.9754646420478821 0 0.0 0 0.0 0 0.0\n-0.14436250925064087 0.27292418479919434 0.5668500661849976 -0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.969854474067688 0 0.0006151832640171051 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.14436250925064087 0.27292418479919434 0.5668500661849976 -0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.969854474067688 0 0.0006151832640171051 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.00040331503259949386 0.6110991835594177 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.14436250925064087 0.27292418479919434 0.5668500661849976 -0.7668996453285217 0.2865687906742096 -0.574175238609314 0.1829245537519455 0.7346058487892151 1 0.969854474067688 0 0.0006151832640171051 0 0.0 0 0.0\n-0.17613452672958374 0.2313833236694336 0.6070717573165894 -0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754646420478821 0 0.0 0 0.0 0 0.0\n-0.14436250925064087 0.27292418479919434 0.5668500661849976 -0.7668996453285217 0.2865687906742096 -0.574175238609314 0.6809971332550049 0.8264847993850708 1 0.969854474067688 0 0.0006151832640171051 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.6809971332550049 0.9226937294006348 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.6203145980834961 0.8451147079467773 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.4382849633693695 0.6647792458534241 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.07363545894622803 0.2982339859008789 0.6007412672042847 0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836710691452026 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n-0.03973621129989624 0.31778907775878906 0.5499929189682007 -0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320843696594 0 0.0 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n-0.03973621129989624 0.31778907775878906 0.5499929189682007 -0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320843696594 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.7384125590324402 0.8501654267311096 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n-0.07563048601150513 0.27506399154663086 0.4404362440109253 -0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063006639480591 0 0.08650905638933182 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.03973621129989624 0.31778907775878906 0.5499929189682007 -0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320843696594 0 0.0 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.6458320021629333 0.8256781697273254 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n-0.07563048601150513 0.27506399154663086 0.4404362440109253 -0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063006639480591 0 0.08650905638933182 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.766719400882721 0.9123905897140503 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.7500969767570496 0.9189645051956177 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n-0.19670462608337402 0.4268631935119629 0.6311711072921753 -0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.7312635183334351 0.8695287108421326 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17451947927474976 0.426532506942749 0.6409276723861694 0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.9825475811958313 0 0.0 0 0.0 0 0.0\n-0.18475157022476196 0.45780444145202637 0.6298526525497437 -0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6924620270729065 0.8456106185913086 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.18475157022476196 0.45780444145202637 0.6298526525497437 -0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6924620270729065 0.8456106185913086 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17451947927474976 0.426532506942749 0.6409276723861694 0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.9825475811958313 0 0.0 0 0.0 0 0.0\n-0.15975886583328247 0.43120598793029785 0.6309860944747925 0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6875460743904114 0.8966741561889648 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.15975886583328247 0.43120598793029785 0.6309860944747925 0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6875460743904114 0.8966741561889648 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17451947927474976 0.426532506942749 0.6409276723861694 0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.9825475811958313 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.7312635183334351 0.9513239860534668 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.7312635183334351 0.9513239860534668 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.17451947927474976 0.426532506942749 0.6409276723861694 0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.9825475811958313 0 0.0 0 0.0 0 0.0\n-0.19670462608337402 0.4268631935119629 0.6311711072921753 -0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.7312635183334351 0.8695287108421326 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.15975886583328247 0.43120598793029785 0.6309860944747925 0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6530190110206604 0.5367875099182129 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17214298248291016 0.42655277252197266 0.6233502626419067 0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.18475157022476196 0.45780444145202637 0.6298526525497437 -0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6580154895782471 0.5878871083259583 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.15975886583328247 0.43120598793029785 0.6309860944747925 0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6530190110206604 0.5367875099182129 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6969338059425354 0.48136377334594727 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.17214298248291016 0.42655277252197266 0.6233502626419067 0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.19670462608337402 0.4268631935119629 0.6311711072921753 -0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.6969338059425354 0.5635218620300293 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17214298248291016 0.42655277252197266 0.6233502626419067 0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.1613888144493103 0.3804953098297119 0.6355704069137573 -0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6969338059425354 0.48136377334594727 1 0.9825473427772522 0 0.0 0 0.0 0 0.0\n-0.18475157022476196 0.45780444145202637 0.6298526525497437 -0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6580154895782471 0.5878871083259583 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.17214298248291016 0.42655277252197266 0.6233502626419067 0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.19670462608337402 0.4268631935119629 0.6311711072921753 -0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.6969338059425354 0.5635218620300293 1 0.9825476408004761 0 0.0 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.8319727182388306 0.9409989714622498 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.7971614599227905 0.9384505748748779 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.08439087867736816 -0.21313560009002686 -0.5862895250320435 0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.7954190373420715 0.5414798259735107 3 0.964721143245697 0 0.0 0 0.0 0 0.0\n-0.08439087867736816 -0.21313560009002686 -0.5862895250320435 0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 3 0.964721143245697 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.2118651568889618 0.9236057996749878 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.09202015399932861 -0.5696377754211426 -0.43102800846099854 0.6786095499992371 0.33146151900291443 0.6554155349731445 0.18292458355426788 0.8896855115890503 3 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.2118651568889618 0.8885793089866638 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.08888596296310425 -0.5484790802001953 -0.578835129737854 0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 3 0.9997803568840027 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.9995967149734497 0.33627161383628845 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.9282938241958618 0.00040331503259949386 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n0.0 -0.195021390914917 0.15074574947357178 0.0 -0.9848322868347168 -0.17343668639659882 0.9224485158920288 0.09022121131420135 0 0.8213648796081543 6 0.08476964384317398 4 0.08476964384317398 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n-0.1669650673866272 -0.5695590972900391 -0.42794668674468994 -0.6787621974945068 0.3166295289993286 0.6625568270683289 0.23618458211421967 0.9276077151298523 3 0.9999889731407166 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6122503280639648 -0.4350939989089966 0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.21411648392677307 0.8940513134002686 3 0.9999961853027344 0 0.0 0 0.0 0 0.0\n-0.09202015399932861 -0.5696377754211426 -0.43102800846099854 0.6786095499992371 0.33146151900291443 0.6554155349731445 0.23618458211421967 0.8885793089866638 3 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6122503280639648 -0.4350939989089966 0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.6814783215522766 0.8220149278640747 3 0.9999961853027344 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6176581382751465 -0.489848256111145 0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.681201696395874 0.7932599782943726 3 0.9999944567680359 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.6814783215522766 0.7508853673934937 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6176581382751465 -0.489848256111145 0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.681201696395874 0.7932599782943726 3 0.9999944567680359 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8572291135787964 0.0005972707876935601 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6122345924377441 -0.5737768411636353 -0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.8797931671142578 0.00040331503259949386 3 0.9999440312385559 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.1669650673866272 -0.5695590972900391 -0.42794668674468994 -0.6787621974945068 0.3166295289993286 0.6625568270683289 0.41296064853668213 0.07816137373447418 3 0.9999889731407166 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.09202015399932861 -0.5696377754211426 -0.43102800846099854 0.6786095499992371 0.33146151900291443 0.6554155349731445 0.9249988794326782 0.696574330329895 3 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6176581382751465 -0.489848256111145 0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 3 0.9999944567680359 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8622313141822815 0.7387880682945251 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n-0.08888596296310425 -0.5484790802001953 -0.578835129737854 0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 3 0.9997803568840027 0 0.0 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.7006834745407104 0.8323686122894287 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.7946124076843262 0.8448039889335632 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.589812159538269 0.4188792407512665 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.4382849633693695 0.20771509408950806 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.029034316539764404 0.02282658964395523 0.5975655317306519 0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.33391112089157104 0.6721431612968445 1 0.9265779256820679 6 0.026510117575526237 0 0.0 0 0.0\n0.035290539264678955 0.032179124653339386 0.6548959016799927 0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9648765921592712 0 0.0 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3724357783794403 0.6571521162986755 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.6875460743904114 0.7333278059959412 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.7006834745407104 0.8323686122894287 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.6366429924964905 0.4814949929714203 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.44332829117774963 0.5980841517448425 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.44964930415153503 0.499088853597641 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.18203496932983398 0.3555026054382324 0.6355704069137573 0.7024140357971191 0.35395365953445435 0.617480993270874 0.682029664516449 0.03247282654047012 1 0.9823530912399292 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.5377382636070251 0.12118156999349594 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.13313615322113037 0.3669123649597168 0.6355704069137573 -0.44904935359954834 0.7006744742393494 0.5543687343597412 0.613527774810791 0.02318226918578148 1 0.9832393527030945 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6506124138832092 0.00040331503259949386 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.4579574763774872 0.4805571734905243 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.5592003464698792 0.4590558409690857 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n0.0 0.09236795455217361 0.7743176221847534 0.0 -0.12359996140003204 0.9923093318939209 0.4487127959728241 0.4081156253814697 1 0.9922438859939575 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3724357783794403 0.6571521162986755 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.035290539264678955 0.032179124653339386 0.6548959016799927 0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9648765921592712 0 0.0 0 0.0 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.2781895399093628 0.8110224008560181 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.3724357783794403 0.88450688123703 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.7010108828544617 0.6815871596336365 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.035290539264678955 0.032179124653339386 0.6548959016799927 0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.7705878019332886 0.688330888748169 1 0.9648765921592712 0 0.0 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.3451562821865082 0.8853135108947754 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.09416019916534424 0.07008225470781326 0.5274871587753296 0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.3451562821865082 0.9297898411750793 1 0.8562959432601929 0 0.09284236282110214 6 0.03691690042614937 0 0.0\n0.09416019916534424 0.07008225470781326 0.5274871587753296 0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.9130188822746277 0.861991822719574 1 0.8562959432601929 0 0.09284236282110214 6 0.03691690042614937 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.924144446849823 0.8115005493164062 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.9084641337394714 0.8151150941848755 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.1095123291015625 0.6479935050010681 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.040995195508003235 0.656345546245575 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3157893419265747 0.8918732404708862 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.029034316539764404 0.02282658964395523 0.5975655317306519 0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.3254745602607727 0.8884339332580566 1 0.9265779256820679 6 0.026510117575526237 0 0.0 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.003714407328516245 0.717420756816864 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.00040331503259949386 0.7850019931793213 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.18764083087444305 0.5508929491043091 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.17356276512145996 -0.18332982063293457 0.28318774700164795 0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.09196234494447708 0.7093120813369751 6 0.9596999883651733 0 0.011403277516365051 0 0.0 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.09115571528673172 0.7933496832847595 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.6543000340461731 0.6595564484596252 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6920541524887085 0.5932608246803284 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.6530190110206604 0.5886937379837036 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.0938851460814476 0.6571521162986755 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.17356276512145996 -0.18332982063293457 0.28318774700164795 0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.09196234494447708 0.7093120813369751 6 0.9596999883651733 0 0.011403277516365051 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.17356276512145996 -0.18332982063293457 0.28318774700164795 0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.23481203615665436 0.4609302878379822 6 0.9596999883651733 0 0.011403277516365051 0 0.0 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.09115571528673172 0.7933496832847595 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6195079684257507 0.9027084112167358 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.6195079684257507 0.8264847993850708 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.09287118911743164 -0.34740591049194336 0.4394129514694214 -0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.038997162133455276 0.8780998587608337 6 0.9969676733016968 0 0.0 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.09038317203521729 -0.29511165618896484 0.4450465440750122 -0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 6 0.9791664481163025 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.09287118911743164 -0.34740591049194336 0.4394129514694214 -0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 6 0.9969676733016968 0 0.0 0 0.0 0 0.0\n0.09038317203521729 -0.29511165618896484 0.4450465440750122 -0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.5792155265808105 0.8983412981033325 6 0.9791664481163025 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.4382849633693695 0.8507182598114014 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.09170717000961304 -0.5278036594390869 0.36790919303894043 -0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.4601333737373352 0.8521638512611389 6 0.9999263882637024 0 0.0 0 0.0 0 0.0\n0.08881819248199463 -0.3583719730377197 0.34317684173583984 -0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 6 0.9974430799484253 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.09287118911743164 -0.34740591049194336 0.4394129514694214 -0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 6 0.9969676733016968 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.09170717000961304 -0.5278036594390869 0.36790919303894043 -0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 6 0.9999263882637024 0 0.0 0 0.0 0 0.0\n0.08881819248199463 -0.3583719730377197 0.34317684173583984 -0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.15622735023498535 0.7883478999137878 6 0.9974430799484253 0 0.0 0 0.0 0 0.0\n0.1552836298942566 -0.5217366218566895 0.43705475330352783 0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 6 0.999962329864502 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.3250100612640381 0.5316429734230042 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.398474782705307 0.9319923520088196 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.43451640009880066 0.8887473344802856 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.398474782705307 0.8839065432548523 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.18211792409420013 0.8958807587623596 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.09170717000961304 -0.5278036594390869 0.36790919303894043 -0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 6 0.9999263882637024 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.4345051050186157 0.5361970067024231 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.1552836298942566 -0.5217366218566895 0.43705475330352783 0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 6 0.999962329864502 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.060366492718458176 0.9931369423866272 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.1552836298942566 -0.5217366218566895 0.43705475330352783 0.7843867540359497 0.10419019311666489 0.6114078164100647 0.06114814803004265 0.9719817638397217 6 0.999962329864502 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.23897626996040344 0.9261899590492249 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.16460078954696655 -0.5697596073150635 0.48491013050079346 0.7637562155723572 0.4125797152519226 0.49638354778289795 0.2568512558937073 0.8885793089866638 6 0.9999933242797852 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.23699119687080383 0.8894676566123962 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.07761454582214355 -0.5762221813201904 0.4922894239425659 -0.7108676433563232 0.4380016326904297 0.5502487421035767 0.7915221452713013 0.8456106185913086 6 0.9999874234199524 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.7675260305404663 0.8808123469352722 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.16460078954696655 -0.5697596073150635 0.48491013050079346 0.7637562155723572 0.4125797152519226 0.49638354778289795 0.7915221452713013 0.8914648294448853 6 0.9999933242797852 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.6844348311424255 0.6808247566223145 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.0876038670539856 -0.6115889549255371 0.5072916746139526 -0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.6532340049743652 0.6715880036354065 6 0.9999920725822449 0 0.0 0 0.0 0 0.0\n0.09195363521575928 -0.602745532989502 0.37857210636138916 -0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.654041051864624 0.7388721704483032 6 0.9999947547912598 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.09195363521575928 -0.602745532989502 0.37857210636138916 -0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.3809150457382202 0.9164982438087463 6 0.9999947547912598 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.39766812324523926 0.8839065432548523 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.15127533674240112 -0.6052298545837402 0.36068880558013916 0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.38106560707092285 0.885166347026825 6 0.9999959468841553 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.91065514087677 0.3558618128299713 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.9334527254104614 0.42665594816207886 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.07761454582214355 -0.5762221813201904 0.4922894239425659 -0.7108676433563232 0.4380016326904297 0.5502487421035767 0.9174387454986572 0.7464988231658936 6 0.9999874234199524 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.0876038670539856 -0.6115889549255371 0.5072916746139526 -0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.9366329908370972 0.7395947575569153 6 0.9999920725822449 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.9115410447120667 0.8106938600540161 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.9084641337394714 0.7634201049804688 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.20714151859283447 -0.0656772330403328 -0.5096536874771118 0.7676015496253967 0.22464674711227417 -0.600207507610321 0.15080034732818604 0.04935154691338539 5 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.08439087867736816 -0.21313560009002686 -0.5862895250320435 -0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.7954190373420715 0.5414798259735107 5 0.964721143245697 0 0.0 0 0.0 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.804821252822876 0.43789535760879517 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9294113516807556 0.452831894159317 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.7954190373420715 0.7463236451148987 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.20714151859283447 -0.0656772330403328 -0.5096536874771118 0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 5 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.09115571528673172 0.7004624009132385 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.14348971843719482 0.04227609187364578 0.4033273458480835 0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.55479896068573 1 0.27051031589508057 6 0.1687029004096985 0 0.0\n0.20714151859283447 -0.0656772330403328 -0.5096536874771118 0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 5 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.20714151859283447 -0.0656772330403328 -0.5096536874771118 0.7676015496253967 0.22464674711227417 -0.600207507610321 0.15080034732818604 0.04935154691338539 5 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n0.24815957248210907 -0.0371197834610939 -0.2536252737045288 0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 5 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.24815957248210907 -0.0371197834610939 -0.2536252737045288 0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 5 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.24815957248210907 -0.0371197834610939 -0.2536252737045288 0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 5 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.8421570658683777 0.4227440059185028 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.216885507106781 0.10776758939027786 -0.49034416675567627 0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549935817718506 5 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.3732423782348633 0.6631662249565125 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.43451640009880066 0.6571521162986755 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n0.0 0.2204439640045166 -0.6226273775100708 0.0 0.965636134147644 -0.2598040699958801 0.7880650162696838 0.52422696352005 2 1.0015981197357178 0 0.0 0 0.0 0 0.0\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.30632472038269043 -0.888379693031311 0.0 0.7523728013038635 0.6587114930152893 0.7946124076843262 0.6690369248390198 2 0.9999912977218628 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n0.03248608112335205 0.2871565818786621 -0.9138075113296509 0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.43451640009880066 0.8696845769882202 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.15887433290481567 0.21892106533050537 -0.44221174716949463 0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.009432848542928696 0.0927925854921341 2 0.6093363165855408 0 0.28971463441848755 5 0.09326215833425522 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.15887433290481567 0.21892106533050537 -0.44221174716949463 0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.7089879512786865 0.4325237274169922 2 0.6093363165855408 0 0.28971463441848755 5 0.09326215833425522 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.17741501331329346 0.1839226484298706 -0.056742191314697266 0.5986510515213013 0.765648365020752 0.23526719212532043 0.03717894107103348 0.29337358474731445 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.17741501331329346 0.1839226484298706 -0.056742191314697266 0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.17741501331329346 0.1839226484298706 -0.056742191314697266 0.5986510515213013 0.765648365020752 0.23526719212532043 0.03717894107103348 0.29337358474731445 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.18764083087444305 0.5508929491043091 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.14348971843719482 0.04227609187364578 0.4033273458480835 0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.55479896068573 1 0.27051031589508057 6 0.1687029004096985 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.14348971843719482 0.04227609187364578 0.4033273458480835 0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.55479896068573 1 0.27051031589508057 6 0.1687029004096985 0 0.0\n0.14436477422714233 0.1705399751663208 0.42970240116119385 0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.765937328338623 0 0.203308567404747 6 0.007473602890968323 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.749397337436676 0.00040331503259949386 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.14436477422714233 0.1705399751663208 0.42970240116119385 0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.765937328338623 0 0.203308567404747 6 0.007473602890968323 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.14436477422714233 0.1705399751663208 0.42970240116119385 0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.765937328338623 0 0.203308567404747 6 0.007473602890968323 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.34596291184425354 0.8853135108947754 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.37843960523605347 0.9328422546386719 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.0 0.21217751502990723 0.36668074131011963 0.0 0.8941618204116821 -0.44770652055740356 0.37843960523605347 0.8868684768676758 1 0.7214112877845764 0 0.26902148127555847 0 0.0 0 0.0\n0.17613452672958374 0.2313833236694336 0.6070717573165894 0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754757881164551 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.27738291025161743 0.6571521162986755 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.13313615322113037 0.3669123649597168 0.6355704069137573 -0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.9832393527030945 0 0.0 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.1047014594078064 0.34171581268310547 0.6355704069137573 -0.5681020617485046 0.5726493000984192 0.5910214781761169 0.8933216333389282 0.8348871469497681 1 0.9845264554023743 0 0.0 0 0.0 0 0.0\n0.1047014594078064 0.34171581268310547 0.6355704069137573 -0.5681020617485046 0.5726493000984192 0.5910214781761169 0.8933216333389282 0.8348871469497681 1 0.9845264554023743 0 0.0 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.8641595244407654 0.9000012874603271 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.18203496932983398 0.3555026054382324 0.6355704069137573 0.7024140357971191 0.35395365953445435 0.617480993270874 0.2770572006702423 0.8555743098258972 1 0.9823530912399292 0 0.0 0 0.0 0 0.0\n0.18203496932983398 0.3555026054382324 0.6355704069137573 0.7024140357971191 0.35395365953445435 0.617480993270874 0.2770572006702423 0.8555743098258972 1 0.9823530912399292 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.27738291025161743 0.8877726197242737 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.8526605367660522 0.760287344455719 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.13313615322113037 0.3669123649597168 0.6355704069137573 -0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.9832393527030945 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.9076574444770813 0.7395947575569153 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.07363545894622803 0.2982339859008789 0.6007412672042847 -0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836677312850952 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.17613452672958374 0.2313833236694336 0.6070717573165894 0.939146101474762 -0.07638783007860184 -0.334879606962204 0.03147881478071213 0.6419441103935242 1 0.9754757881164551 0 0.0 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.040995195508003235 0.656345546245575 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.14436250925064087 0.27292418479919434 0.5668500661849976 0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.9698584675788879 0 0.0006063580513000488 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.17613452672958374 0.2313833236694336 0.6070717573165894 0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754757881164551 0 0.0 0 0.0 0 0.0\n0.14436250925064087 0.27292418479919434 0.5668500661849976 0.7668996453285217 0.2865687906742096 -0.574175238609314 0.1829245537519455 0.7346058487892151 1 0.9698584675788879 0 0.0006063580513000488 0 0.0 0 0.0\n0.14436250925064087 0.27292418479919434 0.5668500661849976 0.7668996453285217 0.2865687906742096 -0.574175238609314 0.6809971332550049 0.8264847993850708 1 0.9698584675788879 0 0.0006063580513000488 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.6203145980834961 0.8451147079467773 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.6809971332550049 0.9226937294006348 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.07363545894622803 0.2982339859008789 0.6007412672042847 -0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836677312850952 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n0.07363545894622803 0.2982339859008789 0.6007412672042847 -0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836677312850952 0 0.0 0 0.0 0 0.0\n0.03973621129989624 0.31778907775878906 0.5499929189682007 0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320247650146 0 0.0 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n0.03973621129989624 0.31778907775878906 0.5499929189682007 0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320247650146 0 0.0 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.7384125590324402 0.8501654267311096 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.07563048601150513 0.27506399154663086 0.4404362440109253 0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063013195991516 0 0.0865083560347557 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.03973621129989624 0.31778907775878906 0.5499929189682007 0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320247650146 0 0.0 0 0.0 0 0.0\n0.07363545894622803 0.2982339859008789 0.6007412672042847 -0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836677312850952 0 0.0 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.6458320021629333 0.8256781697273254 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.766719400882721 0.9123905897140503 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n0.07563048601150513 0.27506399154663086 0.4404362440109253 0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063013195991516 0 0.0865083560347557 0 0.0 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.7500969767570496 0.9189645051956177 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n0.19670462608337402 0.4268631935119629 0.6311711072921753 0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.7312635183334351 0.8695287108421326 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.18475157022476196 0.45780444145202637 0.6298526525497437 0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6924620270729065 0.8456106185913086 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17451947927474976 0.426532506942749 0.6409276723861694 -0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.18475157022476196 0.45780444145202637 0.6298526525497437 0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6924620270729065 0.8456106185913086 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.15975886583328247 0.43120598793029785 0.6309860944747925 -0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6875460743904114 0.8966741561889648 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17451947927474976 0.426532506942749 0.6409276723861694 -0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.15975886583328247 0.43120598793029785 0.6309860944747925 -0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6875460743904114 0.8966741561889648 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.7312635183334351 0.9513239860534668 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.17451947927474976 0.426532506942749 0.6409276723861694 -0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.7312635183334351 0.9513239860534668 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.19670462608337402 0.4268631935119629 0.6311711072921753 0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.7312635183334351 0.8695287108421326 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17451947927474976 0.426532506942749 0.6409276723861694 -0.05017242953181267 0.10049745440483093 0.9936521649360657 0.7059145569801331 0.8887448906898499 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.15975886583328247 0.43120598793029785 0.6309860944747925 -0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6530190110206604 0.5367875099182129 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.18475157022476196 0.45780444145202637 0.6298526525497437 0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6580154895782471 0.5878871083259583 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17214298248291016 0.42655277252197266 0.6233502626419067 -0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.15975886583328247 0.43120598793029785 0.6309860944747925 -0.9370708465576172 0.34748375415802 -0.03326517343521118 0.6530190110206604 0.5367875099182129 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17214298248291016 0.42655277252197266 0.6233502626419067 -0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6969338059425354 0.48136377334594727 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.19670462608337402 0.4268631935119629 0.6311711072921753 0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.6969338059425354 0.5635218620300293 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6969338059425354 0.48136377334594727 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.17214298248291016 0.42655277252197266 0.6233502626419067 -0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.18475157022476196 0.45780444145202637 0.6298526525497437 0.23609119653701782 0.9698477387428284 -0.059938352555036545 0.6580154895782471 0.5878871083259583 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.19670462608337402 0.4268631935119629 0.6311711072921753 0.9928281307220459 -0.110782191157341 -0.04449598491191864 0.6969338059425354 0.5635218620300293 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.17214298248291016 0.42655277252197266 0.6233502626419067 -0.11499374359846115 -0.01541184727102518 -0.9932249188423157 0.6713433861732483 0.5426108837127686 1 0.982549786567688 0 0.0 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.8319727182388306 0.9409989714622498 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.08439087867736816 -0.21313560009002686 -0.5862895250320435 -0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.7954190373420715 0.5414798259735107 5 0.964721143245697 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.08439087867736816 -0.21313560009002686 -0.5862895250320435 -0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 5 0.964721143245697 0 0.0 0 0.0 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.09202015399932861 -0.5696377754211426 -0.43102800846099854 -0.6786095499992371 0.33146151900291443 0.6554155349731445 0.18292458355426788 0.8896855115890503 5 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.2118651568889618 0.9236057996749878 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.2118651568889618 0.8885793089866638 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.08888596296310425 -0.5484790802001953 -0.578835129737854 -0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 5 0.9997803568840027 0 0.0 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.9995967149734497 0.33627161383628845 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9417983889579773 0.35505518317222595 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.9282938241958618 0.00040331503259949386 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.0 -0.195021390914917 0.15074574947357178 0.0 -0.9848322868347168 -0.17343668639659882 0.9224485158920288 0.09022121131420135 0 0.8213648796081543 6 0.08476964384317398 4 0.08476964384317398 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.0 -0.195021390914917 0.15074574947357178 0.0 -0.9848322868347168 -0.17343668639659882 0.9224485158920288 0.09022121131420135 0 0.8213648796081543 6 0.08476964384317398 4 0.08476964384317398 0 0.0\n0.10268598794937134 -0.6122503280639648 -0.4350939989089966 -0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.21411648392677307 0.8940513134002686 5 0.9999961853027344 0 0.0 0 0.0 0 0.0\n0.1669650673866272 -0.5695590972900391 -0.42794668674468994 0.6787621974945068 0.3166295289993286 0.6625568270683289 0.23618458211421967 0.9276077151298523 5 0.9999889731407166 0 0.0 0 0.0 0 0.0\n0.09202015399932861 -0.5696377754211426 -0.43102800846099854 -0.6786095499992371 0.33146151900291443 0.6554155349731445 0.23618458211421967 0.8885793089866638 5 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6122503280639648 -0.4350939989089966 -0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.6814783215522766 0.8220149278640747 5 0.9999961853027344 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.15794646739959717 -0.6148338317871094 -0.4347497224807739 0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.6530190110206604 0.8222582340240479 5 0.9999942779541016 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.6814783215522766 0.7508853673934937 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6176581382751465 -0.489848256111145 -0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.681201696395874 0.7932599782943726 5 0.9999944567680359 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8572291135787964 0.0005972707876935601 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.08888596296310425 -0.5484790802001953 -0.578835129737854 -0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8498412370681763 0.03303687646985054 5 0.9997803568840027 0 0.0 0 0.0 0 0.0\n0.1669650673866272 -0.5695590972900391 -0.42794668674468994 0.6787621974945068 0.3166295289993286 0.6625568270683289 0.41296064853668213 0.07816137373447418 5 0.9999889731407166 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6122345924377441 -0.5737768411636353 0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.43175503611564636 0.0007699446869082749 5 0.9999440312385559 0 0.0 0 0.0 0 0.0\n0.09202015399932861 -0.5696377754211426 -0.43102800846099854 -0.6786095499992371 0.33146151900291443 0.6554155349731445 0.9249988794326782 0.696574330329895 5 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6176581382751465 -0.489848256111145 -0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 5 0.9999944567680359 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6122503280639648 -0.4350939989089966 -0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.9294113516807556 0.7188957929611206 5 0.9999961853027344 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8622313141822815 0.7387880682945251 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6176581382751465 -0.489848256111145 -0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 5 0.9999944567680359 0 0.0 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.6745739579200745 0.33786362409591675 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.12537634372711182 0.11766744405031204 0.7009600400924683 0.7749870419502258 -0.334574431180954 0.5360881090164185 0.7006834745407104 0.8323686122894287 1 0.9864891767501831 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.7946124076843262 0.8448039889335632 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.4382849633693695 0.20771509408950806 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.05053889751434326 0.1634979248046875 0.7342671155929565 -0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9950050711631775 0 0.0 0 0.0 0 0.0\n-0.12537634372711182 0.11766744405031204 0.7009600400924683 -0.7749870419502258 -0.334574431180954 0.5360881090164185 0.5847986340522766 0.3410102427005768 1 0.9862551689147949 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n-0.029034316539764404 0.02282658964395523 0.5975655317306519 -0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.33391112089157104 0.6721431612968445 1 0.9265840649604797 4 0.026504922658205032 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3724357783794403 0.6571521162986755 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n-0.035290539264678955 0.032179124653339386 0.6548959016799927 -0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9649173617362976 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.6366429924964905 0.4814949929714203 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n-0.06078380346298218 0.2408146858215332 0.7048863172531128 -0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9963243007659912 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.44332829117774963 0.5980841517448425 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.13038241863250732 0.20644712448120117 0.6861461400985718 -0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9900858998298645 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.18203496932983398 0.3555026054382324 0.6355704069137573 -0.7024140357971191 0.35395365953445435 0.617480993270874 0.682029664516449 0.03247282654047012 1 0.9823503494262695 0 0.0 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.13990861177444458 0.2426142692565918 0.6210473775863647 -0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863532781600952 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.5377382636070251 0.12118156999349594 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n-0.1529483199119568 0.3224823474884033 0.616545557975769 0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842054843902588 0 0.0 0 0.0 0 0.0\n-0.1047014594078064 0.34171581268310547 0.6355704069137573 0.5681020617485046 0.5726493000984192 0.5910214781761169 0.5776293873786926 0.06218792498111725 1 0.9845274090766907 0 0.0 0 0.0 0 0.0\n-0.13313615322113037 0.3669123649597168 0.6355704069137573 0.44904935359954834 0.7006744742393494 0.5543687343597412 0.613527774810791 0.02318226918578148 1 0.983238697052002 0 0.0 0 0.0 0 0.0\n-0.06865745782852173 0.10929454118013382 0.7345117330551147 -0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9907939434051514 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.5592003464698792 0.4590558409690857 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.4579574763774872 0.4805571734905243 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.3724357783794403 0.88450688123703 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.2781895399093628 0.8110224008560181 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.0705878734588623 0.05552078038454056 0.6960290670394897 -0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.9819313287734985 0 0.0 0 0.0 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.6875460743904114 0.7333278059959412 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.7010108828544617 0.6815871596336365 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n-0.029034316539764404 0.02282658964395523 0.5975655317306519 -0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.3254745602607727 0.8884339332580566 1 0.9265840649604797 4 0.026504922658205032 0 0.0 0 0.0\n-0.059469640254974365 0.0555688813328743 0.6115850210189819 -0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.3451562821865082 0.8853135108947754 1 0.9599950313568115 0 0.0 0 0.0 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.924144446849823 0.8115005493164062 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.924144446849823 0.8932643532752991 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.09416019916534424 0.07008225470781326 0.5274871587753296 -0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.9130188822746277 0.861991822719574 1 0.8562964797019958 0 0.09284330904483795 4 0.036915142089128494 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.0899050235748291 0.08831120282411575 0.6256042718887329 -0.7000335454940796 -0.713614284992218 0.025116734206676483 0.1095123291015625 0.6479935050010681 1 0.9682220816612244 0 0.0 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.15605974197387695 0.14025557041168213 0.6220062971115112 -0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.9690240025520325 0 0.0 0 0.0 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.2781895399093628 0.898551344871521 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3157893419265747 0.8918732404708862 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.003714407328516245 0.717420756816864 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.17356276512145996 -0.18332982063293457 0.28318774700164795 -0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.23481203615665436 0.4609302878379822 4 0.9596999883651733 0 0.01140328124165535 0 0.0 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.09115571528673172 0.7933496832847595 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.6543000340461731 0.6595564484596252 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.6530190110206604 0.5886937379837036 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6920541524887085 0.5932608246803284 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.0938851460814476 0.6571521162986755 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.18211792409420013 0.6960455179214478 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n-0.0706138014793396 -0.22762751579284668 0.3014519214630127 0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 4 0.8573116064071655 6 0.11295726150274277 0 0.004347577691078186 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.08881819248199463 -0.3583719730377197 0.34317684173583984 0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.15622735023498535 0.7883478999137878 4 0.9974430799484253 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.17356276512145996 -0.18332982063293457 0.28318774700164795 -0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.23481203615665436 0.4609302878379822 4 0.9596999883651733 0 0.01140328124165535 0 0.0 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.17540639638900757 -0.17460304498672485 0.430961012840271 -0.8131046295166016 0.054322946816682816 0.5795159935951233 0.09115571528673172 0.7933496832847595 4 0.960517406463623 0 0.0 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.07245743274688721 -0.2189006805419922 0.4492250680923462 0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6195079684257507 0.9027084112167358 4 0.8791981935501099 6 0.09424682706594467 0 0.0 0 0.0\n-0.09038317203521729 -0.29511165618896484 0.4450465440750122 0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.5792155265808105 0.8983412981033325 4 0.9791664481163025 0 0.0 0 0.0 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.1552836298942566 -0.5217366218566895 0.43705475330352783 -0.7843867540359497 0.10419019311666489 0.6114078164100647 0.06114814803004265 0.9719817638397217 4 0.999962329864502 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.17616277933120728 -0.29728245735168457 0.31193840503692627 -0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 4 0.9925202131271362 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.09038317203521729 -0.29511165618896484 0.4450465440750122 0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 4 0.9791664481163025 0 0.0 0 0.0 0 0.0\n-0.17964047193527222 -0.285830020904541 0.4299675226211548 -0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 4 0.9926502108573914 0 0.0 0 0.0 0 0.0\n-0.16614562273025513 -0.35099244117736816 0.42727792263031006 -0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 4 0.9988507628440857 0 0.0 0 0.0 0 0.0\n-0.08690553903579712 -0.3065640926361084 0.3270174264907837 0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 4 0.9789289832115173 0 0.0 0 0.0 0 0.0\n-0.09038317203521729 -0.29511165618896484 0.4450465440750122 0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.5792155265808105 0.8983412981033325 4 0.9791664481163025 0 0.0 0 0.0 0 0.0\n-0.09287118911743164 -0.34740591049194336 0.4394129514694214 0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 4 0.9969676733016968 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.44080308079719543 0.8980250358581543 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.4382849633693695 0.8507182598114014 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.08881819248199463 -0.3583719730377197 0.34317684173583984 0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 4 0.9974430799484253 0 0.0 0 0.0 0 0.0\n-0.09287118911743164 -0.34740591049194336 0.4394129514694214 0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 4 0.9969676733016968 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.08881819248199463 -0.3583719730377197 0.34317684173583984 0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.15622735023498535 0.7883478999137878 4 0.9974430799484253 0 0.0 0 0.0 0 0.0\n-0.09170717000961304 -0.5278036594390869 0.36790919303894043 0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 4 0.9999263882637024 0 0.0 0 0.0 0 0.0\n-0.16209262609481812 -0.36195850372314453 0.33104169368743896 -0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 4 0.9988442659378052 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.1552836298942566 -0.5217366218566895 0.43705475330352783 -0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 4 0.999962329864502 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.398474782705307 0.9319923520088196 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.398474782705307 0.8839065432548523 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.43451640009880066 0.8887473344802856 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.09170717000961304 -0.5278036594390869 0.36790919303894043 0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 4 0.9999263882637024 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.18211792409420013 0.8958807587623596 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.15195131301879883 -0.530752420425415 0.3579319715499878 -0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 4 0.9999616742134094 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.43747836351394653 0.48807579278945923 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.4345051050186157 0.5361970067024231 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.09503942728042603 -0.5187876224517822 0.4470318555831909 0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 4 0.9998917579650879 0 0.0 0 0.0 0 0.0\n-0.1552836298942566 -0.5217366218566895 0.43705475330352783 -0.7843867540359497 0.10419019311666489 0.6114078164100647 0.06114814803004265 0.9719817638397217 4 0.999962329864502 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.060366492718458176 0.9931369423866272 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.08934891223907471 -0.5597443580627441 0.4588078260421753 0.8483535051345825 0.28254035115242004 0.44770652055740356 0.23897626996040344 0.9261899590492249 4 0.9999756813049316 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.23699119687080383 0.8894676566123962 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.16460078954696655 -0.5697596073150635 0.48491013050079346 -0.7637562155723572 0.4125797152519226 0.49638354778289795 0.2568512558937073 0.8885793089866638 4 0.9999933242797852 0 0.0 0 0.0 0 0.0\n-0.07761454582214355 -0.5762221813201904 0.4922894239425659 0.7108676433563232 0.4380016326904297 0.5502487421035767 0.7915221452713013 0.8456106185913086 4 0.9999874234199524 0 0.0 0 0.0 0 0.0\n-0.16460078954696655 -0.5697596073150635 0.48491013050079346 -0.7637562155723572 0.4125797152519226 0.49638354778289795 0.7915221452713013 0.8914648294448853 4 0.9999933242797852 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.7675260305404663 0.8808123469352722 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.6844348311424255 0.6808247566223145 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.15127533674240112 -0.6052298545837402 0.36068880558013916 -0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.6844348311424255 0.7486674189567566 4 0.9999959468841553 0 0.0 0 0.0 0 0.0\n-0.09195363521575928 -0.602745532989502 0.37857210636138916 0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.654041051864624 0.7388721704483032 4 0.9999947547912598 0 0.0 0 0.0 0 0.0\n-0.09195363521575928 -0.602745532989502 0.37857210636138916 0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.3809150457382202 0.9164982438087463 4 0.9999947547912598 0 0.0 0 0.0 0 0.0\n-0.15127533674240112 -0.6052298545837402 0.36068880558013916 -0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.38106560707092285 0.885166347026825 4 0.9999959468841553 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.39766812324523926 0.8839065432548523 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.1551395058631897 -0.573575496673584 0.3558077812194824 -0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.91065514087677 0.3558618128299713 4 0.9999913573265076 0 0.0 0 0.0 0 0.0\n-0.15899169445037842 -0.5631530284881592 0.4472743272781372 -0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 4 0.9999915361404419 0 0.0 0 0.0 0 0.0\n-0.1482757329940796 -0.6178312301635742 0.4188467264175415 -0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 4 0.9999983906745911 0 0.0 0 0.0 0 0.0\n-0.1480986475944519 -0.6183133125305176 0.4906195402145386 -0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.9334527254104614 0.42665594816207886 4 0.9999954104423523 0 0.0 0 0.0 0 0.0\n-0.07761454582214355 -0.5762221813201904 0.4922894239425659 0.7108676433563232 0.4380016326904297 0.5502487421035767 0.9174387454986572 0.7464988231658936 4 0.9999874234199524 0 0.0 0 0.0 0 0.0\n-0.0876038670539856 -0.6115889549255371 0.5072916746139526 0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.9366329908370972 0.7395947575569153 4 0.9999920725822449 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.08802717924118042 -0.6150498390197754 0.43218982219696045 0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 4 0.9999951124191284 0 0.0 0 0.0 0 0.0\n-0.09195363521575928 -0.602745532989502 0.37857210636138916 0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.9290568828582764 0.8056539297103882 4 0.9999947547912598 0 0.0 0 0.0 0 0.0\n-0.08549678325653076 -0.570166826248169 0.3673415184020996 0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.9115410447120667 0.8106938600540161 4 0.9999839663505554 0 0.0 0 0.0 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.20714151859283447 -0.0656772330403328 -0.5096536874771118 -0.7676015496253967 0.22464674711227417 -0.600207507610321 0.15080034732818604 0.04935154691338539 3 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.08439087867736816 -0.21313560009002686 -0.5862895250320435 0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.7954190373420715 0.5414798259735107 3 0.964721143245697 0 0.0 0 0.0 0 0.0\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.804821252822876 0.43789535760879517 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9294113516807556 0.452831894159317 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.7954190373420715 0.7463236451148987 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n-0.08439087867736816 -0.21313560009002686 -0.5862895250320435 0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 3 0.964721143245697 0 0.0 0 0.0 0 0.0\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.050073862075805664 0.02092299610376358 0.5243707895278931 -0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.8446325063705444 4 0.10059089958667755 0 0.01927739754319191 0 0.0\n-0.09416019916534424 0.07008225470781326 0.5274871587753296 -0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.060154158622026443 0.6571521162986755 1 0.8562964797019958 0 0.09284330904483795 4 0.036915142089128494 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.09115571528673172 0.7004624009132385 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.09416019916534424 0.07008225470781326 0.5274871587753296 -0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.11589144915342331 0.5961412787437439 1 0.8562964797019958 0 0.09284330904483795 4 0.036915142089128494 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n-0.061641693115234375 -0.12674754858016968 -0.5490885972976685 0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 3 0.8647013306617737 0 0.07323107123374939 5 0.02173721417784691 2 0.0023119300603866577\n-0.20714151859283447 -0.0656772330403328 -0.5096536874771118 -0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 3 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.20714151859283447 -0.0656772330403328 -0.5096536874771118 -0.7676015496253967 0.22464674711227417 -0.600207507610321 0.15080034732818604 0.04935154691338539 3 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.24815957248210907 -0.0371197834610939 -0.2536252737045288 -0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 3 0.2454865425825119 2 0.007828813046216965 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.12958550453186035 -0.1315857172012329 -0.09456980228424072 -0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 3 0.07171499729156494 0 0.0 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.16476905345916748 -0.032182566821575165 0.1135796308517456 -0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259852170944214 4 0.04309037700295448 0 0.0 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n-0.2347235083580017 0.006545670330524445 -0.1102060079574585 -0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 3 0.0706256553530693 0 0.0 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.20858150720596313 0.007689781486988068 -0.4805508852005005 -0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 3 0.6917824745178223 0 0.18764761090278625 2 0.10546613484621048 0 0.0\n-0.24815957248210907 -0.0371197834610939 -0.2536252737045288 -0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 3 0.2454865425825119 2 0.007828813046216965 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.8421570658683777 0.4227440059185028 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n-0.216885507106781 0.10776758939027786 -0.49034416675567627 -0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549932837486267 3 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n0.0 0.2204439640045166 -0.6226273775100708 0.0 0.965636134147644 -0.2598040699958801 0.7880650162696838 0.52422696352005 2 1.0015981197357178 0 0.0 0 0.0 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.3732423782348633 0.6631662249565125 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.43451640009880066 0.6571521162986755 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n0.0 0.2204439640045166 -0.6226273775100708 0.0 0.965636134147644 -0.2598040699958801 0.7880650162696838 0.52422696352005 2 1.0015981197357178 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n-0.03598451614379883 0.1886899471282959 -0.6095010042190552 -0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.991046130657196 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.16914141178131104 -0.7118293046951294 -0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n0.0 0.30632472038269043 -0.888379693031311 0.0 0.7523728013038635 0.6587114930152893 0.7946124076843262 0.6690369248390198 2 0.9999912977218628 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n-0.03391218185424805 0.20211052894592285 -0.8192368745803833 -0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n-0.03248608112335205 0.2871565818786621 -0.9138075113296509 -0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.43451640009880066 0.8696845769882202 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n-0.09570074081420898 0.19440031051635742 -0.5164247751235962 -0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 3 0.05108572542667389 0 0.0\n-0.15887433290481567 0.21892106533050537 -0.44221174716949463 -0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.7089879512786865 0.4325237274169922 2 0.6093363165855408 0 0.28971463441848755 3 0.09326215833425522 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n-0.15887433290481567 0.21892106533050537 -0.44221174716949463 -0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.009432848542928696 0.0927925854921341 2 0.6093363165855408 0 0.28971463441848755 3 0.09326215833425522 0 0.0\n-0.216885507106781 0.10776758939027786 -0.49034416675567627 -0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.062087494879961014 0.06426440179347992 0 0.38549932837486267 3 0.30454903841018677 2 0.30049633979797363 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n-0.15887433290481567 0.21892106533050537 -0.44221174716949463 -0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.7089879512786865 0.4325237274169922 2 0.6093363165855408 0 0.28971463441848755 3 0.09326215833425522 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n-0.24470371007919312 0.06189621239900589 -0.2797147035598755 -0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 3 0.15139922499656677 2 0.0652080550789833 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n-0.17098987102508545 0.22969770431518555 -0.25236809253692627 -0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 3 0.022846873849630356 0 0.0\n-0.17741501331329346 0.1839226484298706 -0.056742191314697266 -0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n-0.17741501331329346 0.1839226484298706 -0.056742191314697266 -0.5986510515213013 0.765648365020752 0.23526719212532043 0.03717894107103348 0.29337358474731445 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n-0.22698575258255005 0.09685314446687698 -0.09775805473327637 -0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218431115150452 3 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n-0.17741501331329346 0.1839226484298706 -0.056742191314697266 -0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n-0.16880565881729126 0.11794913560152054 0.11694061756134033 -0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.15183615684509277 -0.0799783393740654 0.4494694471359253 -0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.18764083087444305 0.5508929491043091 4 0.8048247694969177 0 0.08847372978925705 1 0.08450014889240265 0 0.0\n-0.15635263919830322 0.0019541755318641663 0.4368339776992798 -0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180997312068939 4 0.3349326252937317 1 0.23640847206115723 0 0.0\n-0.14348971843719482 0.04227609187364578 0.4033273458480835 -0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.5547997355461121 1 0.27050960063934326 4 0.16870296001434326 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.14634591341018677 -0.032207198441028595 0.28267955780029297 -0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 4 0.334782212972641 1 0.028665481135249138 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.14348971843719482 0.04227609187364578 0.4033273458480835 -0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.5547997355461121 1 0.27050960063934326 4 0.16870296001434326 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n-0.18591099977493286 0.027745135128498077 0.1363673210144043 -0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 4 0.028245750814676285 0 0.0 0 0.0\n-0.16675245761871338 0.013475604355335236 0.27252471446990967 -0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682547569274902 4 0.16683459281921387 1 0.056936074048280716 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n-0.1328907608985901 0.08454591780900955 0.4755467176437378 -0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616611123085022 0 0.17892086505889893 4 0.055223498493433 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.14436477422714233 0.1705399751663208 0.42970240116119385 -0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.7659354209899902 0 0.20331056416034698 4 0.007473912090063095 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n-0.13336622714996338 0.11216402798891068 0.2601882219314575 -0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.842883288860321 1 0.11205136030912399 4 0.03046063892543316 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.749397337436676 0.00040331503259949386 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.14645665884017944 0.1097654178738594 0.37481164932250977 -0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417124032974243 1 0.386583149433136 4 0.06799639761447906 0 0.0\n-0.14436477422714233 0.1705399751663208 0.42970240116119385 -0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.7659354209899902 0 0.20331056416034698 4 0.007473912090063095 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.1687365174293518 0.1454685926437378 0.49789369106292725 -0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8802972435951233 0 0.09416398406028748 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.14436477422714233 0.1705399751663208 0.42970240116119385 -0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.7659354209899902 0 0.20331056416034698 4 0.007473912090063095 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.34596291184425354 0.8853135108947754 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n0.0 0.21217751502990723 0.36668074131011963 0.0 0.8941618204116821 -0.44770652055740356 0.37843960523605347 0.8868684768676758 1 0.7214112877845764 0 0.26902148127555847 0 0.0 0 0.0\n-0.09047484397888184 0.21522080898284912 0.39295387268066406 -0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.37843960523605347 0.9328422546386719 1 0.7951807379722595 0 0.19068527221679688 0 0.0 0 0.0\n-0.19039934873580933 0.3247871398925781 0.6355704069137573 -0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823060631752014 0 0.0 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.17613452672958374 0.2313833236694336 0.6070717573165894 -0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754646420478821 0 0.0 0 0.0 0 0.0\n-0.13313615322113037 0.3669123649597168 0.6355704069137573 0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.983238697052002 0 0.0 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.1612895131111145 0.33922386169433594 0.5898922681808472 -0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.8526605367660522 0.760287344455719 1 0.9799913763999939 0 0.0 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.18040990829467773 0.2139267921447754 0.6355704069137573 -0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.040995195508003235 0.656345546245575 1 0.9819098114967346 0 0.0 0 0.0 0 0.0\n-0.17613452672958374 0.2313833236694336 0.6070717573165894 -0.939146101474762 -0.07638783007860184 -0.334879606962204 0.03147881478071213 0.6419441103935242 1 0.9754646420478821 0 0.0 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.15143811702728271 0.2254852056503296 0.5341702699661255 -0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.9440637826919556 0 0.04249156638979912 0 0.0 0 0.0\n-0.14436250925064087 0.27292418479919434 0.5668500661849976 -0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.969854474067688 0 0.0006151832640171051 0 0.0 0 0.0\n-0.1190231442451477 0.3240025043487549 0.6043640375137329 0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815371632575989 0 0.0 0 0.0 0 0.0\n-0.07363545894622803 0.2982339859008789 0.6007412672042847 0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836710691452026 0 0.0 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.07363545894622803 0.2982339859008789 0.6007412672042847 0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836710691452026 0 0.0 0 0.0 0 0.0\n-0.07210224866867065 0.3025968074798584 0.6355704069137573 -0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896897077560425 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n-0.11800521612167358 0.24999380111694336 0.48617875576019287 -0.773796796798706 0.5241248607635498 -0.3556627035140991 0.7384125590324402 0.8501654267311096 1 0.9226130843162537 0 0.06844232976436615 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.766719400882721 0.8456106185913086 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n-0.10207110643386841 0.29587411880493164 0.5440686941146851 -0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687196016311646 0 0.004799999296665192 0 0.0 0 0.0\n-0.07363545894622803 0.2982339859008789 0.6007412672042847 0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836710691452026 0 0.0 0 0.0 0 0.0\n-0.03973621129989624 0.31778907775878906 0.5499929189682007 -0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320843696594 0 0.0 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n-0.03973621129989624 0.31778907775878906 0.5499929189682007 -0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320843696594 0 0.0 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n-0.07563048601150513 0.27506399154663086 0.4404362440109253 -0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063006639480591 0 0.08650905638933182 0 0.0 0 0.0\n-0.06822705268859863 0.31713294982910156 0.5017274618148804 -0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548736810684204 0 0.03235049173235893 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.766719400882721 0.9123905897140503 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.8319727182388306 0.9409989714622498 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.09343808889389038 -0.32038211822509766 -0.4421921968460083 0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 3 0.9944356083869934 0 0.0 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.08439087867736816 -0.21313560009002686 -0.5862895250320435 0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 3 0.964721143245697 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.18601888418197632 -0.3018697500228882 -0.4252368211746216 -0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 3 0.986090362071991 0 0.0 0 0.0 0 0.0\n-0.20441192388534546 -0.18915605545043945 -0.555695652961731 -0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 3 0.9740641117095947 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.16358476877212524 -0.5438752174377441 -0.4808121919631958 -0.8981902599334717 0.13892024755477905 0.41706594824790955 0.2118651568889618 0.9236057996749878 3 0.9999702572822571 0 0.0 0 0.0 0 0.0\n-0.1669650673866272 -0.5695590972900391 -0.42794668674468994 -0.6787621974945068 0.3166295289993286 0.6625568270683289 0.1829245537519455 0.928184986114502 3 0.9999889731407166 0 0.0 0 0.0 0 0.0\n-0.09202015399932861 -0.5696377754211426 -0.43102800846099854 0.6786095499992371 0.33146151900291443 0.6554155349731445 0.18292458355426788 0.8896855115890503 3 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.09704774618148804 -0.392566442489624 -0.4658399820327759 0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 3 0.999832808971405 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.08888596296310425 -0.5484790802001953 -0.578835129737854 0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 3 0.9997803568840027 0 0.0 0 0.0 0 0.0\n-0.10235244035720825 -0.35957908630371094 -0.5960932970046997 0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 3 0.9956300258636475 0 0.0 0 0.0 0 0.0\n-0.08888596296310425 -0.5484790802001953 -0.578835129737854 0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8498412370681763 0.03303687646985054 3 0.9997803568840027 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.1732814908027649 -0.3921675682067871 -0.45750391483306885 -0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 3 0.9991129636764526 0 0.0 0 0.0 0 0.0\n-0.1785861849784851 -0.359180212020874 -0.5877567529678345 -0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 3 0.9966251850128174 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.18308591842651367 -0.1715635061264038 -0.30947959423065186 -0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.9995967149734497 0.33627161383628845 3 0.7757202386856079 0 0.20105865597724915 0 0.0 0 0.0\n-0.07139867544174194 -0.1890047788619995 -0.3518143892288208 0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9417983889579773 0.35505518317222595 3 0.7999973893165588 0 0.1541832536458969 5 0.02782197669148445 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.9282938241958618 0.00040331503259949386 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n-0.15036439895629883 -0.08714862912893295 0.3016083240509033 -0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.9995967149734497 0.014335385523736477 4 0.7862779498100281 0 0.17627523839473724 0 0.0 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n0.0 -0.195021390914917 0.15074574947357178 0.0 -0.9848322868347168 -0.17343668639659882 0.9224485158920288 0.09022121131420135 0 0.8213648796081543 6 0.08476964384317398 4 0.08476964384317398 0 0.0\n-0.13016337156295776 -0.10303550213575363 0.1634429693222046 -0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 4 0.12892886996269226 0 0.0 0 0.0\n-0.1669650673866272 -0.5695590972900391 -0.42794668674468994 -0.6787621974945068 0.3166295289993286 0.6625568270683289 0.23618458211421967 0.9276077151298523 3 0.9999889731407166 0 0.0 0 0.0 0 0.0\n-0.15794646739959717 -0.6148338317871094 -0.4347497224807739 -0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.21267180144786835 0.9228885769844055 3 0.9999942779541016 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6122503280639648 -0.4350939989089966 0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.21411648392677307 0.8940513134002686 3 0.9999961853027344 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6122503280639648 -0.4350939989089966 0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.6814783215522766 0.8220149278640747 3 0.9999961853027344 0 0.0 0 0.0 0 0.0\n-0.15794646739959717 -0.6148338317871094 -0.4347497224807739 -0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.6530190110206604 0.8222582340240479 3 0.9999942779541016 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6122345924377441 -0.5737768411636353 -0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.658989667892456 0.749474048614502 3 0.9999440312385559 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.6814783215522766 0.7508853673934937 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.08888596296310425 -0.5484790802001953 -0.578835129737854 0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8498412370681763 0.03303687646985054 3 0.9997803568840027 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8572291135787964 0.0005972707876935601 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.15794646739959717 -0.6148338317871094 -0.4347497224807739 -0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.43639105558395386 0.07337364554405212 3 0.9999942779541016 0 0.0 0 0.0 0 0.0\n-0.1669650673866272 -0.5695590972900391 -0.42794668674468994 -0.6787621974945068 0.3166295289993286 0.6625568270683289 0.41296064853668213 0.07816137373447418 3 0.9999889731407166 0 0.0 0 0.0 0 0.0\n-0.15707027912139893 -0.5484073162078857 -0.5760318040847778 -0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 3 0.9998194575309753 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6122345924377441 -0.5737768411636353 -0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.43175503611564636 0.0007699446869082749 3 0.9999440312385559 0 0.0 0 0.0 0 0.0\n-0.14641422033309937 -0.6189942359924316 -0.49265921115875244 -0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 3 0.9999929070472717 0 0.0 0 0.0 0 0.0\n-0.09202015399932861 -0.5696377754211426 -0.43102800846099854 0.6786095499992371 0.33146151900291443 0.6554155349731445 0.9249988794326782 0.696574330329895 3 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6122503280639648 -0.4350939989089966 0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.9294113516807556 0.7188957929611206 3 0.9999961853027344 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6176581382751465 -0.489848256111145 0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 3 0.9999944567680359 0 0.0 0 0.0 0 0.0\n-0.09540045261383057 -0.5439469814300537 -0.483615517616272 0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 3 0.9999970197677612 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.6176581382751465 -0.489848256111145 0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 3 0.9999944567680359 0 0.0 0 0.0 0 0.0\n-0.10268598794937134 -0.610898494720459 -0.5709654092788696 0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8622313141822815 0.7387880682945251 3 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5218138098716736 0.20084944367408752 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.0 0.1765376329421997 0.7342671155929565 0.0 0.4454481601715088 0.8952909708023071 0.44110503792762756 0.2877768576145172 1 0.9965916275978088 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n0.0 0.13670289516448975 0.759844183921814 0.0 0.347636342048645 0.9376201629638672 0.444909006357193 0.3479462265968323 1 0.9948671460151672 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.05053889751434326 0.1634979248046875 0.7342671155929565 0.3151646554470062 0.2640766501426697 0.9115268588066101 0.5070644617080688 0.2996123731136322 1 0.9945793151855469 0 0.0 0 0.0 0 0.0\n0.029034316539764404 0.02282658964395523 0.5975655317306519 0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.33391112089157104 0.6721431612968445 1 0.9265779256820679 6 0.026510117575526237 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.29570549726486206 0.6925798058509827 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.035290539264678955 0.032179124653339386 0.6548959016799927 0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9648765921592712 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n0.0 0.24179911613464355 0.7048863172531128 0.0 0.6098208427429199 0.7925046682357788 0.6366429924964905 0.4814949929714203 1 0.9979282021522522 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.44332829117774963 0.5980841517448425 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.06078380346298218 0.2408146858215332 0.7048863172531128 0.25702688097953796 0.5580919981002808 0.7889339923858643 0.5539146065711975 0.48136377334594727 1 0.9962618350982666 0 0.0 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.13038241863250732 0.20644712448120117 0.6861461400985718 0.634571373462677 0.33890804648399353 0.69454026222229 0.6237268447875977 0.2415420264005661 1 0.9901185631752014 0 0.0 0 0.0 0 0.0\n0.13990861177444458 0.2426142692565918 0.6210473775863647 0.17987608909606934 0.4221320152282715 0.8884853720664978 0.6398704051971436 0.19736255705356598 1 0.9863647222518921 0 0.0 0 0.0 0 0.0\n0.18040990829467773 0.2139267921447754 0.6355704069137573 0.9097567796707153 -0.0018005920574069023 0.41511276364326477 0.6973033547401428 0.23020672798156738 1 0.9819253087043762 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.6973033547401428 0.07419048994779587 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.18203496932983398 0.3555026054382324 0.6355704069137573 0.7024140357971191 0.35395365953445435 0.617480993270874 0.682029664516449 0.03247282654047012 1 0.9823530912399292 0 0.0 0 0.0 0 0.0\n0.1613888144493103 0.3804953098297119 0.6355704069137573 0.09356974810361862 0.8272042274475098 0.5540025234222412 0.6506124138832092 0.00040331503259949386 1 0.9825493693351746 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.1047014594078064 0.34171581268310547 0.6355704069137573 -0.5681020617485046 0.5726493000984192 0.5910214781761169 0.5776293873786926 0.06218792498111725 1 0.9845264554023743 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.5377382636070251 0.12118156999349594 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.13313615322113037 0.3669123649597168 0.6355704069137573 -0.44904935359954834 0.7006744742393494 0.5543687343597412 0.613527774810791 0.02318226918578148 1 0.9832393527030945 0 0.0 0 0.0 0 0.0\n0.1047014594078064 0.34171581268310547 0.6355704069137573 -0.5681020617485046 0.5726493000984192 0.5910214781761169 0.5776293873786926 0.06218792498111725 1 0.9845264554023743 0 0.0 0 0.0 0 0.0\n0.1529483199119568 0.3224823474884033 0.616545557975769 -0.10449537634849548 -0.09079256653785706 0.9903561472892761 0.648408830165863 0.08469385653734207 1 0.9842087626457214 0 0.0 0 0.0 0 0.0\n0.06865745782852173 0.10929454118013382 0.7345117330551147 0.5191808938980103 -0.1431928426027298 0.8425549864768982 0.5454435348510742 0.3798229694366455 1 0.9898999929428101 0 0.0 0 0.0 0 0.0\n0.0 0.09236795455217361 0.7743176221847534 0.0 -0.12359996140003204 0.9923093318939209 0.4487127959728241 0.4081156253814697 1 0.9922438859939575 0 0.0 0 0.0 0 0.0\n0.0 0.042672283947467804 0.7475627660751343 0.0 -0.7097384333610535 0.7044282555580139 0.4579574763774872 0.4805571734905243 1 0.9884468913078308 0 0.0 0 0.0 0 0.0\n0.0 0.025754906237125397 0.7083276510238647 0.0 -0.9591051936149597 0.28293710947036743 0.37136271595954895 0.828621506690979 1 0.9845536351203918 0 0.0 0 0.0 0 0.0\n0.035290539264678955 0.032179124653339386 0.6548959016799927 0.4995880126953125 -0.8637043237686157 0.06610309332609177 0.3249615430831909 0.7529926896095276 1 0.9648765921592712 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.2781895399093628 0.8110224008560181 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.7010108828544617 0.6815871596336365 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.6875460743904114 0.7333278059959412 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.0705878734588623 0.05552078038454056 0.6960290670394897 0.6313669085502625 -0.7171849608421326 0.2948698401451111 0.7946124076843262 0.7522226572036743 1 0.981741726398468 0 0.0 0 0.0 0 0.0\n0.059469640254974365 0.0555688813328743 0.6115850210189819 0.7055574059486389 -0.7052217125892639 0.06924650073051453 0.3451562821865082 0.8853135108947754 1 0.9599898457527161 0 0.0 0 0.0 0 0.0\n0.029034316539764404 0.02282658964395523 0.5975655317306519 0.5346843004226685 -0.8348338007926941 0.13074129819869995 0.3254745602607727 0.8884339332580566 1 0.9265779256820679 6 0.026510117575526237 0 0.0 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.09416019916534424 0.07008225470781326 0.5274871587753296 0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.9130188822746277 0.861991822719574 1 0.8562959432601929 0 0.09284236282110214 6 0.03691690042614937 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.924144446849823 0.8932643532752991 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.924144446849823 0.8115005493164062 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.0899050235748291 0.08831120282411575 0.6256042718887329 0.7000335454940796 -0.713614284992218 0.025116734206676483 0.1095123291015625 0.6479935050010681 1 0.9682276844978333 0 0.0 0 0.0 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.15605974197387695 0.14025557041168213 0.6220062971115112 0.8759422302246094 -0.46403393149375916 0.13183996081352234 0.0795331671833992 0.6472899913787842 1 0.969058096408844 0 0.0 0 0.0 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.0 0.00883752852678299 0.5868633985519409 0.0 -0.9138767719268799 0.4059267044067383 0.3157893419265747 0.8918732404708862 1 0.9038245677947998 6 0.03429456427693367 4 0.03429247811436653 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.2781895399093628 0.898551344871521 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.3176169991493225 0.9254664182662964 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.0 -0.059041060507297516 0.5594795942306519 0.0 -0.37794122099876404 0.9258095026016235 0.003714407328516245 0.717420756816864 1 0.7317149043083191 6 0.12379448860883713 4 0.12379419058561325 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.17356276512145996 -0.18332982063293457 0.28318774700164795 0.6146122813224792 0.07834101468324661 -0.7849055528640747 0.23481203615665436 0.4609302878379822 6 0.9596999883651733 0 0.011403277516365051 0 0.0 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.10438784956932068 0.7673202157020569 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.15183615684509277 -0.0799783393740654 0.4494694471359253 0.8179571032524109 -0.059785760939121246 0.5721305012702942 0.08381302654743195 0.7420639395713806 6 0.8048247694969177 0 0.08847368508577347 1 0.08450014144182205 0 0.0\n0.0 -0.17929625511169434 0.45751893520355225 0.0 -0.6968291401863098 0.7172154784202576 0.00040331503259949386 0.7850019931793213 6 0.45073360204696655 4 0.45073357224464417 1 0.08223999291658401 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.6543000340461731 0.6595564484596252 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.6920541524887085 0.6707813739776611 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6920541524887085 0.5932608246803284 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.0706138014793396 -0.22762751579284668 0.3014519214630127 -0.5107883214950562 -0.33680227398872375 -0.790978729724884 0.14921531081199646 0.7203041911125183 6 0.8573116064071655 4 0.11295725405216217 0 0.004347570240497589 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.18211792409420013 0.6960455179214478 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.0938851460814476 0.6571521162986755 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.08881819248199463 -0.3583719730377197 0.34317684173583984 -0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.15622735023498535 0.7883478999137878 6 0.9974430799484253 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.1508081704378128 0.761959433555603 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.17540639638900757 -0.17460304498672485 0.430961012840271 0.8131046295166016 0.054322946816682816 0.5795159935951233 0.23437808454036713 0.5384660959243774 6 0.960517406463623 0 0.0 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.17616277933120728 -0.29728245735168457 0.31193840503692627 0.6749778985977173 -0.2538224458694458 -0.6927701830863953 0.29380425810813904 0.47277066111564636 6 0.9925202131271362 0 0.0 0 0.0 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.03546648845076561 0.8098580241203308 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.09038317203521729 -0.29511165618896484 0.4450465440750122 -0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 6 0.9791664481163025 0 0.0 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.08709609508514404 0.8513107895851135 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.09038317203521729 -0.29511165618896484 0.4450465440750122 -0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.5792155265808105 0.8983412981033325 6 0.9791664481163025 0 0.0 0 0.0 0 0.0\n0.07245743274688721 -0.2189006805419922 0.4492250680923462 -0.3258461356163025 -0.4115115702152252 0.8511307239532471 0.6195079684257507 0.9027084112167358 6 0.8791981935501099 4 0.09424681961536407 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.1552836298942566 -0.5217366218566895 0.43705475330352783 0.7843867540359497 0.10419019311666489 0.6114078164100647 0.06114814803004265 0.9719817638397217 6 0.999962329864502 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.17964047193527222 -0.285830020904541 0.4299675226211548 0.7866451144218445 -0.07501449435949326 0.6128116846084595 0.2910638153553009 0.5348170399665833 6 0.9926502108573914 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.3250100612640381 0.5316429734230042 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.09038317203521729 -0.29511165618896484 0.4450465440750122 -0.5827814340591431 -0.14893032610416412 0.7988525032997131 0.04047681763768196 0.8505580425262451 6 0.9791664481163025 0 0.0 0 0.0 0 0.0\n0.09287118911743164 -0.34740591049194336 0.4394129514694214 -0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.038997162133455276 0.8780998587608337 6 0.9969676733016968 0 0.0 0 0.0 0 0.0\n0.16614562273025513 -0.35099244117736816 0.42727792263031006 0.7634815573692322 -0.10623493045568466 0.6369823217391968 0.07662999629974365 0.8845169544219971 6 0.9988507628440857 0 0.0 0 0.0 0 0.0\n0.08690553903579712 -0.3065640926361084 0.3270174264907837 -0.7335429191589355 -0.28986480832099915 -0.6147038340568542 0.5769522190093994 0.8373445272445679 6 0.9789289832115173 0 0.0 0 0.0 0 0.0\n0.08881819248199463 -0.3583719730377197 0.34317684173583984 -0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 6 0.9974430799484253 0 0.0 0 0.0 0 0.0\n0.09287118911743164 -0.34740591049194336 0.4394129514694214 -0.6446424722671509 -0.04431287571787834 0.7631763815879822 0.5520168542861938 0.893970251083374 6 0.9969676733016968 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.4382849633693695 0.8507182598114014 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.44080308079719543 0.8980250358581543 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.08881819248199463 -0.3583719730377197 0.34317684173583984 -0.791894257068634 -0.15695668756961823 -0.5901058912277222 0.5493676066398621 0.8441964983940125 6 0.9974430799484253 0 0.0 0 0.0 0 0.0\n0.09170717000961304 -0.5278036594390869 0.36790919303894043 -0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.4601333737373352 0.8521638512611389 6 0.9999263882637024 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.4623115360736847 0.8930864930152893 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.11935535073280334 0.798479437828064 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.09170717000961304 -0.5278036594390869 0.36790919303894043 -0.7768791913986206 0.011474959552288055 -0.6295052766799927 0.17439746856689453 0.8748677968978882 6 0.9999263882637024 0 0.0 0 0.0 0 0.0\n0.1552836298942566 -0.5217366218566895 0.43705475330352783 0.7843867540359497 0.10419019311666489 0.6114078164100647 0.4132080078125 0.5320252776145935 6 0.999962329864502 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.16209262609481812 -0.36195850372314453 0.33104169368743896 0.6149784922599792 -0.26581621170043945 -0.7423627376556396 0.3281383216381073 0.48101234436035156 6 0.9988442659378052 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.398474782705307 0.9319923520088196 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.4345163404941559 0.9368331432342529 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.43451640009880066 0.8887473344802856 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.1440824270248413 0.883197546005249 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.14707347750663757 0.9055101275444031 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.18211792409420013 0.8958807587623596 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.4345051050186157 0.5361970067024231 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.43747836351394653 0.48807579278945923 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.15195131301879883 -0.530752420425415 0.3579319715499878 0.634815514087677 -0.03268532454967499 -0.7719351649284363 0.41578006744384766 0.49039819836616516 6 0.9999616742134094 0 0.0 0 0.0 0 0.0\n0.09503942728042603 -0.5187876224517822 0.4470318555831909 -0.6328318119049072 0.1662037968635559 0.7562181353569031 0.030207481235265732 0.966705858707428 6 0.9998917579650879 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.02459888905286789 0.9870380163192749 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.060366492718458176 0.9931369423866272 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.23897626996040344 0.9261899590492249 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.07761454582214355 -0.5762221813201904 0.4922894239425659 -0.7108676433563232 0.4380016326904297 0.5502487421035767 0.2568512558937073 0.9330030679702759 6 0.9999874234199524 0 0.0 0 0.0 0 0.0\n0.16460078954696655 -0.5697596073150635 0.48491013050079346 0.7637562155723572 0.4125797152519226 0.49638354778289795 0.2568512558937073 0.8885793089866638 6 0.9999933242797852 0 0.0 0 0.0 0 0.0\n0.07761454582214355 -0.5762221813201904 0.4922894239425659 -0.7108676433563232 0.4380016326904297 0.5502487421035767 0.7915221452713013 0.8456106185913086 6 0.9999874234199524 0 0.0 0 0.0 0 0.0\n0.0876038670539856 -0.6115889549255371 0.5072916746139526 -0.4042786955833435 -0.41471603512763977 0.8152104020118713 0.7738296985626221 0.848929762840271 6 0.9999920725822449 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.7675260305404663 0.8808123469352722 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.6530190110206604 0.7109692692756653 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.6844348311424255 0.6808247566223145 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.09195363521575928 -0.602745532989502 0.37857210636138916 -0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.654041051864624 0.7388721704483032 6 0.9999947547912598 0 0.0 0 0.0 0 0.0\n0.15127533674240112 -0.6052298545837402 0.36068880558013916 0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.6844348311424255 0.7486674189567566 6 0.9999959468841553 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.683937668800354 0.7183980941772461 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.09195363521575928 -0.602745532989502 0.37857210636138916 -0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.3809150457382202 0.9164982438087463 6 0.9999947547912598 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.39766812324523926 0.9202498197555542 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.39766812324523926 0.8839065432548523 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.1482757329940796 -0.6178312301635742 0.4188467264175415 0.5838801264762878 -0.8061464428901672 -0.095767080783844 0.9334527254104614 0.389056921005249 6 0.9999983906745911 0 0.0 0 0.0 0 0.0\n0.15127533674240112 -0.6052298545837402 0.36068880558013916 0.47083956003189087 -0.5862605571746826 -0.6591998338699341 0.9270529747009277 0.3585353493690491 6 0.9999959468841553 0 0.0 0 0.0 0 0.0\n0.1551395058631897 -0.573575496673584 0.3558077812194824 0.5728934407234192 -0.44907987117767334 -0.6855983138084412 0.91065514087677 0.3558618128299713 6 0.9999913573265076 0 0.0 0 0.0 0 0.0\n0.15899169445037842 -0.5631530284881592 0.4472743272781372 0.9405804872512817 -0.06775109469890594 0.3327127993106842 0.9047964811325073 0.4037174880504608 6 0.9999915361404419 0 0.0 0 0.0 0 0.0\n0.16460078954696655 -0.5697596073150635 0.48491013050079346 0.7637562155723572 0.4125797152519226 0.49638354778289795 0.9077709913253784 0.42341071367263794 6 0.9999933242797852 0 0.0 0 0.0 0 0.0\n0.1480986475944519 -0.6183133125305176 0.4906195402145386 0.5136570334434509 -0.6324961185455322 0.5796990990638733 0.9334527254104614 0.42665594816207886 6 0.9999954104423523 0 0.0 0 0.0 0 0.0\n0.07761454582214355 -0.5762221813201904 0.4922894239425659 -0.7108676433563232 0.4380016326904297 0.5502487421035767 0.9174387454986572 0.7464988231658936 6 0.9999874234199524 0 0.0 0 0.0 0 0.0\n0.08934891223907471 -0.5597443580627441 0.4588078260421753 -0.8483535051345825 0.28254035115242004 0.44770652055740356 0.9084641337394714 0.7634201049804688 6 0.9999756813049316 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.08549678325653076 -0.570166826248169 0.3673415184020996 -0.7073580026626587 -0.443037211894989 -0.5507370233535767 0.9115410447120667 0.8106938600540161 6 0.9999839663505554 0 0.0 0 0.0 0 0.0\n0.09195363521575928 -0.602745532989502 0.37857210636138916 -0.5757927298545837 -0.6383251547813416 -0.5108493566513062 0.9290568828582764 0.8056539297103882 6 0.9999947547912598 0 0.0 0 0.0 0 0.0\n0.08802717924118042 -0.6150498390197754 0.43218982219696045 -0.69466233253479 -0.713675320148468 -0.08999908715486526 0.9366330504417419 0.778315544128418 6 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.212846040725708 0.021823931485414505 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8042619824409485 0.8200523853302002 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.8426058888435364 0.8613379001617432 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.804821252822876 0.43789535760879517 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8007399439811707 0.49180278182029724 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.9073172211647034 0.4934375584125519 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.8518539071083069 0.8132774829864502 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.8518539071083069 0.7395947575569153 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.07139867544174194 -0.1890047788619995 -0.3518143892288208 -0.5797906517982483 -0.7260048389434814 0.36979278922080994 0.7954190373420715 0.7463236451148987 5 0.7999973893165588 0 0.15418323874473572 3 0.02782197669148445 0 0.0\n0.20441192388534546 -0.18915605545043945 -0.555695652961731 0.7800835967063904 0.13812677562236786 -0.6102175712585449 0.9039897918701172 0.22283343970775604 5 0.9740641117095947 0 0.0 0 0.0 0 0.0\n0.08439087867736816 -0.21313560009002686 -0.5862895250320435 -0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 5 0.964721143245697 0 0.0 0 0.0 0 0.0\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.09115571528673172 0.7004624009132385 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.09416019916534424 0.07008225470781326 0.5274871587753296 0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.060154158622026443 0.6571521162986755 1 0.8562959432601929 0 0.09284236282110214 6 0.03691690042614937 0 0.0\n0.050073862075805664 0.02092299610376358 0.5243707895278931 0.6866664886474609 -0.40858179330825806 0.6012146472930908 0.0349784754216671 0.6804375052452087 1 0.844631552696228 6 0.10059148073196411 0 0.019277770072221756 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.09416019916534424 0.07008225470781326 0.5274871587753296 0.6548966765403748 -0.6562089920043945 0.3748283386230469 0.11589144915342331 0.5961412787437439 1 0.8562959432601929 0 0.09284236282110214 6 0.03691690042614937 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.20714151859283447 -0.0656772330403328 -0.5096536874771118 0.7676015496253967 0.22464674711227417 -0.600207507610321 0.9018306136131287 0.28798139095306396 5 0.8890505433082581 0 0.06969472020864487 2 0.015910718590021133 0 0.0\n0.061641693115234375 -0.12674754858016968 -0.5490885972976685 -0.599017322063446 0.0636310949921608 -0.7981811165809631 0.8298012614250183 0.2538372874259949 5 0.8647013306617737 0 0.07323106378316879 3 0.02173721417784691 2 0.0023119263350963593\n0.0 -0.034700654447078705 -0.5120750665664673 0.0 -0.28131961822509766 -0.9595934748649597 0.7954190373420715 0.3016514182090759 0 0.4035522937774658 5 0.21959787607192993 3 0.21959787607192993 2 0.1571648120880127\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.24815957248210907 -0.0371197834610939 -0.2536252737045288 0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 5 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.21177582442760468 0.15119899809360504 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.24815957248210907 -0.0371197834610939 -0.2536252737045288 0.9628284573554993 -0.26746422052383423 0.036957915872335434 0.14128771424293518 0.18390731513500214 0 0.7170878648757935 5 0.2454865425825119 2 0.007828813046216965 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.19997769594192505 0.2649575471878052 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.19253799319267273 0.40071889758110046 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.16476905345916748 -0.032182566821575165 0.1135796308517456 0.9007843136787415 -0.41755425930023193 0.1192358136177063 0.15316157042980194 0.3764743208885193 0 0.9259851574897766 6 0.043090369552373886 0 0.0 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.2347235083580017 0.006545670330524445 -0.1102060079574585 0.9553208947181702 -0.24109622836112976 0.17084261775016785 0.12361200898885727 0.26020655035972595 0 0.9013984799385071 5 0.0706256553530693 0 0.0 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.796051561832428 0.36615949869155884 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.216885507106781 0.10776758939027786 -0.49034416675567627 0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549935817718506 5 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.9003711938858032 0.3267052471637726 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.20858150720596313 0.007689781486988068 -0.4805508852005005 0.7801751494407654 -0.053529463708400726 -0.6232184767723083 0.11399266123771667 0.06662172824144363 5 0.6917824745178223 0 0.18764761090278625 2 0.10546614229679108 0 0.0\n0.216885507106781 0.10776758939027786 -0.49034416675567627 0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.062087494879961014 0.06426440179347992 0 0.38549935817718506 5 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.8421570658683777 0.4227440059185028 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.15887433290481567 0.21892106533050537 -0.44221174716949463 0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.8707311749458313 0.4370887577533722 2 0.6093363165855408 0 0.28971463441848755 5 0.09326215833425522 0 0.0\n0.216885507106781 0.10776758939027786 -0.49034416675567627 0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.9039897918701172 0.37911513447761536 0 0.38549935817718506 5 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.0 0.2204439640045166 -0.6226273775100708 0.0 0.965636134147644 -0.2598040699958801 0.7880650162696838 0.52422696352005 2 1.0015981197357178 0 0.0 0 0.0 0 0.0\n0.0 0.24354887008666992 -0.5526114702224731 0.0 0.9767143726348877 -0.2144230455160141 0.7908804416656494 0.4901359975337982 2 0.9730596542358398 0 0.0 0 0.0 0 0.0\n0.0 0.08928192406892776 -0.5540534257888794 0.0 -0.35929441452026367 -0.9331949949264526 0.3732423782348633 0.6631662249565125 2 0.8365933895111084 0 0.07663940638303757 5 0.036726269870996475 3 0.036726269870996475\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.4186630845069885 0.7031288146972656 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.03598451614379883 0.1886899471282959 -0.6095010042190552 0.9367351531982422 0.18414868414402008 -0.29761651158332825 0.7668266892433167 0.5149851441383362 2 0.9910460710525513 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.0 0.20252740383148193 -0.7054659128189087 0.0 0.999908447265625 0.013458662666380405 0.785669207572937 0.5653976798057556 2 0.998930811882019 0 0.0 0 0.0 0 0.0\n0.0 0.12543010711669922 -0.611486554145813 0.0 -0.9602038860321045 -0.2791833281517029 0.3850645124912262 0.6965480446815491 2 0.9726563692092896 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.3975711762905121 0.7533164024353027 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.16914141178131104 -0.7118293046951294 0.9985961318016052 -0.03466902673244476 -0.0395825058221817 0.7651706337928772 0.5660513639450073 2 0.9985517859458923 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.0 0.22866559028625488 -0.7980247735977173 0.0 0.8856776356697083 0.46427807211875916 0.7875749468803406 0.615498423576355 2 0.9999145865440369 0 0.0 0 0.0 0 0.0\n0.0 0.12997519969940186 -0.7220932245254517 0.0 -0.9840693473815918 -0.17770928144454956 0.37523388862609863 0.7536645531654358 2 0.9981896281242371 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.402330219745636 0.8119280338287354 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.03391218185424805 0.20211052894592285 -0.8192368745803833 0.9987182021141052 -0.04589983820915222 -0.020203253254294395 0.7676439881324768 0.6244237422943115 2 0.9999237060546875 0 0.0 0 0.0 0 0.0\n0.03248608112335205 0.2871565818786621 -0.9138075113296509 0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.7761039733886719 0.6807805299758911 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n0.0 0.30632472038269043 -0.888379693031311 0.0 0.7523728013038635 0.6587114930152893 0.7946124076843262 0.6690369248390198 2 0.9999912977218628 0 0.0 0 0.0 0 0.0\n0.0 0.1722644567489624 -0.846596360206604 0.0 -0.8490249514579773 -0.5283058881759644 0.382790744304657 0.822054386138916 2 0.9999455809593201 0 0.0 0 0.0 0 0.0\n0.0 0.2664310932159424 -0.9455810785293579 0.0 -0.7245094180107117 -0.6892300248146057 0.4191298186779022 0.8830998539924622 2 0.9999951124191284 0 0.0 0 0.0 0 0.0\n0.03248608112335205 0.2871565818786621 -0.9138075113296509 0.9984740614891052 -0.027558214962482452 -0.047822505235672 0.43451640009880066 0.8696845769882202 2 0.999992847442627 0 0.0 0 0.0 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n0.15887433290481567 0.21892106533050537 -0.44221174716949463 0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.7089879512786865 0.4325237274169922 2 0.6093363165855408 0 0.28971463441848755 5 0.09326215833425522 0 0.0\n0.09570074081420898 0.19440031051635742 -0.5164247751235962 0.49549850821495056 0.5802789330482483 -0.6462904810905457 0.7379171252250671 0.46803349256515503 2 0.8343983888626099 0 0.1073855310678482 5 0.05108572542667389 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.216885507106781 0.10776758939027786 -0.49034416675567627 0.7796563506126404 0.18768882751464844 -0.5973693132400513 0.062087494879961014 0.06426440179347992 0 0.38549935817718506 5 0.30454903841018677 2 0.30049633979797363 0 0.0\n0.15887433290481567 0.21892106533050537 -0.44221174716949463 0.5289468169212341 0.8012634515762329 -0.2795800566673279 0.009432848542928696 0.0927925854921341 2 0.6093363165855408 0 0.28971463441848755 5 0.09326215833425522 0 0.0\n0.0 0.23639917373657227 -0.4245549440383911 0.0 0.9959410429000854 -0.08999908715486526 0.7911243438720703 0.4233974516391754 2 0.7914459109306335 0 0.1775953471660614 0 0.0 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.24470371007919312 0.06189621239900589 -0.2797147035598755 0.9805597066879272 0.1901303082704544 -0.04824976250529289 0.09005673974752426 0.17304474115371704 0 0.7772277593612671 5 0.15139922499656677 2 0.0652080550789833 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.00861236173659563 0.1923501342535019 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.17741501331329346 0.1839226484298706 -0.056742191314697266 0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.17098987102508545 0.22969770431518555 -0.25236809253692627 0.573503851890564 0.8189031481742859 0.021027252078056335 0.7053508758544922 0.3356010913848877 0 0.8024826049804688 2 0.15540441870689392 5 0.02284686639904976 0 0.0\n0.0 0.24447298049926758 -0.1661921739578247 0.0 0.9895016551017761 0.14435255527496338 0.7938501238822937 0.2907457947731018 0 0.8835389614105225 2 0.09514472633600235 0 0.0 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.22698575258255005 0.09685314446687698 -0.09775805473327637 0.9559617638587952 0.26496168971061707 0.126163512468338 0.07812663912773132 0.2692766785621643 0 0.9218430519104004 5 0.03574578836560249 2 0.0003750547766685486 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.6981099843978882 0.13501593470573425 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.17741501331329346 0.1839226484298706 -0.056742191314697266 0.5986510515213013 0.765648365020752 0.23526719212532043 0.6990169882774353 0.23061582446098328 0 0.9394767880439758 2 0.021471891552209854 0 0.0 0 0.0\n0.0 0.18546009063720703 0.05253899097442627 0.0 0.9800409078598022 0.1987060159444809 0.7896201014518738 0.17259444296360016 0 0.9702994227409363 0 0.0 0 0.0 0 0.0\n0.0 0.18546009063720703 0.1571263074874878 0.0 0.999481201171875 0.0316782146692276 0.7903990745544434 0.11860571801662445 0 0.9424790740013123 1 0.04657768830657005 0 0.0 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.716507077217102 0.06020791083574295 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.18725724518299103 0.4733530879020691 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.14348971843719482 0.04227609187364578 0.4033273458480835 0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.55479896068573 1 0.27051031589508057 6 0.1687029004096985 0 0.0\n0.15635263919830322 0.0019541755318641663 0.4368339776992798 0.9516891837120056 0.06549271941184998 0.299966424703598 0.1451314240694046 0.5465568900108337 0 0.4180992841720581 6 0.33493271470069885 1 0.23640868067741394 0 0.0\n0.14634591341018677 -0.032207198441028595 0.28267955780029297 0.9860835671424866 -0.16443373262882233 0.023529771715402603 0.15881086885929108 0.46500539779663086 0 0.6134584546089172 6 0.3347821831703186 1 0.028665635734796524 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.14348971843719482 0.04227609187364578 0.4033273458480835 0.9923093318939209 0.11435285210609436 0.047242652624845505 0.12420067191123962 0.5302112698554993 0 0.55479896068573 1 0.27051031589508057 6 0.1687029004096985 0 0.0\n0.16675245761871338 0.013475604355335236 0.27252471446990967 0.9878231287002563 -0.08340708911418915 0.13122959434986115 0.13413144648075104 0.46088677644729614 0 0.7682546377182007 6 0.16683457791805267 1 0.056936174631118774 0 0.0\n0.18591099977493286 0.027745135128498077 0.1363673210144043 0.9799188375473022 -0.05694753676652908 0.1909848302602768 0.12207462638616562 0.3899834156036377 0 0.9314292669296265 6 0.028245745226740837 0 0.0 0 0.0\n0.16880565881729126 0.11794913560152054 0.11694061756134033 0.7443464398384094 0.6213263273239136 0.24463637173175812 0.0762190967798233 0.3824160099029541 0 0.9508360624313354 0 0.0 0 0.0 0 0.0\n0.13336622714996338 0.11216402798891068 0.2601882219314575 0.7886288166046143 0.6137882471084595 -0.03564561903476715 0.08494245260953903 0.4573333263397217 0 0.8428831696510315 1 0.11205147206783295 6 0.030460624024271965 0 0.0\n0.14436477422714233 0.1705399751663208 0.42970240116119385 0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.765937328338623 0 0.203308567404747 6 0.007473602890968323 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.1328907608985901 0.08454591780900955 0.4755467176437378 0.9486068487167358 -0.2300790399312973 0.21716971695423126 0.10511094331741333 0.5692154169082642 1 0.7616633176803589 0 0.1789185106754303 6 0.05522337555885315 0 0.0\n0.0 0.1879560947418213 0.26575779914855957 0.0 0.9689321517944336 -0.2472609579563141 0.7914559245109558 0.06275101006031036 0 0.7974072098731995 1 0.18872691690921783 0 0.0 0 0.0\n0.0 0.21217751502990723 0.36668074131011963 0.0 0.8941618204116821 -0.44770652055740356 0.7946124076843262 0.012804902158677578 1 0.7214112877845764 0 0.26902148127555847 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.749397337436676 0.00040331503259949386 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.14436477422714233 0.1705399751663208 0.42970240116119385 0.9082003235816956 0.2847071886062622 -0.30674153566360474 0.059249572455883026 0.5475928783416748 1 0.765937328338623 0 0.203308567404747 6 0.007473602890968323 0 0.0\n0.14645665884017944 0.1097654178738594 0.37481164932250977 0.9749442934989929 0.221472829580307 -0.019989624619483948 0.08871705830097198 0.5171707272529602 0 0.5417115092277527 1 0.38658398389816284 6 0.06799633800983429 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.1687365174293518 0.1454685926437378 0.49789369106292725 0.982451856136322 -0.15335550904273987 -0.10599078238010406 0.07277017086744308 0.5824607610702515 1 0.8803035020828247 0 0.0941576361656189 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.03804061561822891 0.5298435091972351 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.07563048601150513 0.27506399154663086 0.4404362440109253 0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.009478164836764336 0.5564171671867371 1 0.9063013195991516 0 0.0865083560347557 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.0 0.2737917900085449 0.4282184839248657 0.0 0.6853236556053162 -0.7282326817512512 0.34596291184425354 0.8853135108947754 1 0.8951932191848755 0 0.09897997975349426 0 0.0 0 0.0\n0.07563048601150513 0.27506399154663086 0.4404362440109253 0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.3467414975166321 0.9241817593574524 1 0.9063013195991516 0 0.0865083560347557 0 0.0 0 0.0\n0.09047484397888184 0.21522080898284912 0.39295387268066406 0.5327311158180237 0.6883449554443359 -0.4922940731048584 0.37843960523605347 0.9328422546386719 1 0.795181393623352 0 0.19068458676338196 0 0.0 0 0.0\n0.17613452672958374 0.2313833236694336 0.6070717573165894 0.939146101474762 -0.07638783007860184 -0.334879606962204 0.2380296140909195 0.6809014678001404 1 0.9754757881164551 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.21432805061340332 0.8298017978668213 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.19039934873580933 0.3247871398925781 0.6355704069137573 0.7619251012802124 0.14554277062416077 0.6310617327690125 0.27696818113327026 0.8137040734291077 1 0.9823099970817566 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.8526605367660522 0.760287344455719 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.8601824045181274 0.8244431614875793 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.13313615322113037 0.3669123649597168 0.6355704069137573 -0.44904935359954834 0.7006744742393494 0.5543687343597412 0.9076574444770813 0.7835649847984314 1 0.9832393527030945 0 0.0 0 0.0 0 0.0\n0.15143811702728271 0.2254852056503296 0.5341702699661255 0.9232154488563538 0.25720998644828796 -0.2854396104812622 0.03369267284870148 0.6037472486495972 1 0.944068431854248 0 0.04248170927166939 0 0.0 0 0.0\n0.14436250925064087 0.27292418479919434 0.5668500661849976 0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.9698584675788879 0 0.0006063580513000488 0 0.0 0 0.0\n0.17613452672958374 0.2313833236694336 0.6070717573165894 0.939146101474762 -0.07638783007860184 -0.334879606962204 0.03147881478071213 0.6419441103935242 1 0.9754757881164551 0 0.0 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.021475009620189667 0.5794675946235657 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.00040331503259949386 0.6110991835594177 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.14436250925064087 0.27292418479919434 0.5668500661849976 0.7668996453285217 0.2865687906742096 -0.574175238609314 0.01067846454679966 0.6221985220909119 1 0.9698584675788879 0 0.0006063580513000488 0 0.0 0 0.0\n0.1190231442451477 0.3240025043487549 0.6043640375137329 -0.49604785442352295 0.7510910630226135 -0.4355906844139099 0.49227312207221985 0.6409542560577393 1 0.9815367460250854 0 0.0 0 0.0 0 0.0\n0.1612895131111145 0.33922386169433594 0.5898922681808472 0.37003692984580994 0.5403607487678528 -0.7556688189506531 0.4382849633693695 0.6647792458534241 1 0.9799929261207581 0 0.0 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.0 0.31928110122680664 0.5975655317306519 0.0 0.9569078683853149 0.29035308957099915 0.6522123217582703 0.6490117907524109 1 0.986151933670044 0 0.0 0 0.0 0 0.0\n0.07210224866867065 0.3025968074798584 0.6355704069137573 0.08188115805387497 0.842799186706543 0.5319375991821289 0.551694929599762 0.5924338698387146 1 0.9896824359893799 0 0.0 0 0.0 0 0.0\n0.07363545894622803 0.2982339859008789 0.6007412672042847 -0.04513687640428543 0.9967650175094604 -0.06619464606046677 0.5469268560409546 0.6396243572235107 1 0.9836677312850952 0 0.0 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.766719400882721 0.8456106185913086 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.11800521612167358 0.24999380111694336 0.48617875576019287 0.773796796798706 0.5241248607635498 -0.3556627035140991 0.7384125590324402 0.8501654267311096 1 0.9226148724555969 0 0.06844037026166916 0 0.0 0 0.0\n0.10207110643386841 0.29587411880493164 0.5440686941146851 0.41743215918540955 0.8524124622344971 -0.31473737955093384 0.5052196383476257 0.7176094651222229 1 0.9687204957008362 0 0.00479733943939209 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.03973621129989624 0.31778907775878906 0.5499929189682007 0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320247650146 0 0.0 0 0.0 0 0.0\n0.0 0.3334541320800781 0.513670802116394 0.0 0.9971312880516052 -0.07556383311748505 0.6522123217582703 0.7686784863471985 1 0.9621657729148865 0 0.019739564508199692 0 0.0 0 0.0\n0.03973621129989624 0.31778907775878906 0.5499929189682007 0.2772911787033081 0.9470503926277161 0.16165654361248016 0.5957963466644287 0.7146220803260803 1 0.9746320247650146 0 0.0 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.5548336505889893 0.7813751697540283 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.0 0.31658363342285156 0.4695626497268677 0.0 0.8418835997581482 -0.539597749710083 0.766719400882721 0.9123905897140503 1 0.9410541653633118 0 0.054964829236269 0 0.0 0 0.0\n0.06822705268859863 0.31713294982910156 0.5017274618148804 0.4450819492340088 0.8710898160934448 -0.20749534666538239 0.75923091173172 0.8749287724494934 1 0.9548740983009338 0 0.032349374145269394 0 0.0 0 0.0\n0.07563048601150513 0.27506399154663086 0.4404362440109253 0.4518570601940155 0.6767174005508423 -0.5812555551528931 0.7320701479911804 0.8845022916793823 1 0.9063013195991516 0 0.0865083560347557 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8038542866706848 0.8589156270027161 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.7971614599227905 0.9384505748748779 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.8319727182388306 0.9409989714622498 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8124915361404419 0.6168727278709412 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.09343808889389038 -0.32038211822509766 -0.4421921968460083 -0.7430646419525146 -0.36826685070991516 0.5587328672409058 0.8824628591537476 0.573641836643219 5 0.9944356083869934 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.8941572904586792 0.13316871225833893 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.08439087867736816 -0.21313560009002686 -0.5862895250320435 -0.5681020617485046 0.09179967641830444 -0.8178045153617859 0.8441900014877319 0.2085101306438446 5 0.964721143245697 0 0.0 0 0.0 0 0.0\n0.18601888418197632 -0.3018697500228882 -0.4252368211746216 0.6975615620613098 -0.4051026999950409 0.5909604430198669 0.27508801221847534 0.08698911219835281 5 0.986090362071991 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.1785861849784851 -0.359180212020874 -0.5877567529678345 0.7232581377029419 -0.06591998040676117 -0.6873989105224609 0.3002532124519348 0.00040331503259949386 5 0.9966251850128174 0 0.0 0 0.0 0 0.0\n0.09202015399932861 -0.5696377754211426 -0.43102800846099854 -0.6786095499992371 0.33146151900291443 0.6554155349731445 0.18292458355426788 0.8896855115890503 5 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.1669650673866272 -0.5695590972900391 -0.42794668674468994 0.6787621974945068 0.3166295289993286 0.6625568270683289 0.1829245537519455 0.928184986114502 5 0.9999889731407166 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.2118651568889618 0.9236057996749878 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.08888596296310425 -0.5484790802001953 -0.578835129737854 -0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 5 0.9997803568840027 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.09704774618148804 -0.392566442489624 -0.4658399820327759 -0.7643055319786072 -0.14413891732692719 0.6284981966018677 0.8815617561340332 0.6134598851203918 5 0.999832808971405 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.08888596296310425 -0.5484790802001953 -0.578835129737854 -0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8498412370681763 0.03303687646985054 5 0.9997803568840027 0 0.0 0 0.0 0 0.0\n0.10235244035720825 -0.35957908630371094 -0.5960932970046997 -0.6142460107803345 -0.017761772498488426 -0.7888729572296143 0.8554814457893372 0.13194745779037476 5 0.9956300258636475 0 0.0 0 0.0 0 0.0\n0.1732814908027649 -0.3921675682067871 -0.45750391483306885 0.6674093008041382 -0.2617572546005249 0.6971343159675598 0.3210349380970001 0.06763686239719391 5 0.9991129636764526 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.18308591842651367 -0.1715635061264038 -0.30947959423065186 0.6252326965332031 -0.7065645456314087 0.33136996626853943 0.9995967149734497 0.33627161383628845 5 0.7757202386856079 0 0.20105862617492676 0 0.0 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.0 -0.13216137886047363 -0.2887181043624878 0.0 -0.9959410429000854 0.08993804454803467 0.9047964811325073 0.3187030851840973 0 0.6482506990432739 5 0.17250163853168488 3 0.17250163853168488 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.15036439895629883 -0.08714862912893295 0.3016083240509033 0.9604480266571045 -0.09698782116174698 -0.2609332501888275 0.9995967149734497 0.014335385523736477 6 0.7862779498100281 0 0.17627522349357605 0 0.0 0 0.0\n0.0 -0.196242094039917 0.3226771354675293 0.0 -0.9550157189369202 -0.29651784896850586 0.9282938241958618 0.00040331503259949386 6 0.4506283402442932 4 0.4506283402442932 0 0.09200550615787506 0 0.0\n0.0 -0.10864909738302231 -0.08876931667327881 0.0 -0.9990233778953552 0.04358043149113655 0.9104627370834351 0.21379117667675018 0 0.9455240964889526 0 0.0 0 0.0 0 0.0\n0.12958550453186035 -0.1315857172012329 -0.09456980228424072 0.34760582447052 -0.9195837378501892 0.1829584687948227 0.9776368141174316 0.22148758172988892 0 0.9013321995735168 5 0.07171499729156494 0 0.0 0 0.0\n0.13016337156295776 -0.10303550213575363 0.1634429693222046 0.7592394948005676 -0.6505325436592102 -0.01754814386367798 0.9853255748748779 0.08616168797016144 0 0.8383778929710388 6 0.12892886996269226 0 0.0 0 0.0\n0.10268598794937134 -0.6122503280639648 -0.4350939989089966 -0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.21411648392677307 0.8940513134002686 5 0.9999961853027344 0 0.0 0 0.0 0 0.0\n0.15794646739959717 -0.6148338317871094 -0.4347497224807739 0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.21267180144786835 0.9228885769844055 5 0.9999942779541016 0 0.0 0 0.0 0 0.0\n0.1669650673866272 -0.5695590972900391 -0.42794668674468994 0.6787621974945068 0.3166295289993286 0.6625568270683289 0.23618458211421967 0.9276077151298523 5 0.9999889731407166 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6122503280639648 -0.4350939989089966 -0.5183873772621155 -0.6310312151908875 0.5770744681358337 0.6814783215522766 0.8220149278640747 5 0.9999961853027344 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6176581382751465 -0.489848256111145 -0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.681201696395874 0.7932599782943726 5 0.9999944567680359 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.6814783215522766 0.7508853673934937 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6122345924377441 -0.5737768411636353 0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.658989667892456 0.749474048614502 5 0.9999440312385559 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.6587129831314087 0.7918486595153809 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.8846582770347595 0.03393390029668808 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6122345924377441 -0.5737768411636353 0.4997100830078125 -0.6077150702476501 -0.617175817489624 0.8797931671142578 0.00040331503259949386 5 0.9999440312385559 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8572291135787964 0.0005972707876935601 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0.1669650673866272 -0.5695590972900391 -0.42794668674468994 0.6787621974945068 0.3166295289993286 0.6625568270683289 0.41296064853668213 0.07816137373447418 5 0.9999889731407166 0 0.0 0 0.0 0 0.0\n0.15794646739959717 -0.6148338317871094 -0.4347497224807739 0.5692312121391296 -0.6506851315498352 0.5025177597999573 0.43639105558395386 0.07337364554405212 5 0.9999942779541016 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.15707027912139893 -0.5484073162078857 -0.5760318040847778 0.7048555016517639 -0.1505172848701477 -0.6931669116020203 0.39849552512168884 0.0013318752171471715 5 0.9998194575309753 0 0.0 0 0.0 0 0.0\n0.16358476877212524 -0.5438752174377441 -0.4808121919631958 0.8981902599334717 0.13892024755477905 0.41706594824790955 0.39850914478302 0.05124041810631752 5 0.9999702572822571 0 0.0 0 0.0 0 0.0\n0.14641422033309937 -0.6189942359924316 -0.49265921115875244 0.5785698890686035 -0.8136540055274963 -0.05630664899945259 0.43747836351394653 0.04301292449235916 5 0.9999929070472717 0 0.0 0 0.0 0 0.0\n0.09202015399932861 -0.5696377754211426 -0.43102800846099854 -0.6786095499992371 0.33146151900291443 0.6554155349731445 0.9249988794326782 0.696574330329895 5 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.6176581382751465 -0.489848256111145 -0.6539506316184998 -0.7564317584037781 -0.01031525619328022 0.90322345495224 0.7298896312713623 5 0.9999944567680359 0 0.0 0 0.0 0 0.0\n0.09540045261383057 -0.5439469814300537 -0.483615517616272 -0.8756980895996094 0.18463698029518127 0.4460890591144562 0.8952838778495789 0.6918089389801025 5 0.9999970197677612 0 0.0 0 0.0 0 0.0\n0.08888596296310425 -0.5484790802001953 -0.578835129737854 -0.7318033576011658 -0.13727225363254547 -0.6675008535385132 0.8489667773246765 0.7082512378692627 5 0.9997803568840027 0 0.0 0 0.0 0 0.0\n0.10268598794937134 -0.610898494720459 -0.5709654092788696 -0.5513778924942017 -0.6156193614006042 -0.5630054473876953 0.8622313141822815 0.7387880682945251 5 0.9999434351921082 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n384 385 386 0\n387 388 389 0\n390 391 392 0\n393 394 395 0\n396 397 398 0\n399 400 401 0\n402 403 404 0\n405 406 407 0\n408 409 410 0\n411 412 413 0\n414 415 416 0\n417 418 419 0\n420 421 422 0\n423 424 425 0\n426 427 428 0\n429 430 431 0\n432 433 434 0\n435 436 437 0\n438 439 440 0\n441 442 443 0\n444 445 446 0\n447 448 449 0\n450 451 452 0\n453 454 455 0\n456 457 458 0\n459 460 461 0\n462 463 464 0\n465 466 467 0\n468 469 470 0\n471 472 473 0\n474 475 476 0\n477 478 479 0\n480 481 482 0\n483 484 485 0\n486 487 488 0\n489 490 491 0\n492 493 494 0\n495 496 497 0\n498 499 500 0\n501 502 503 0\n504 505 506 0\n507 508 509 0\n510 511 512 0\n513 514 515 0\n516 517 518 0\n519 520 521 0\n522 523 524 0\n525 526 527 0\n528 529 530 0\n531 532 533 0\n534 535 536 0\n537 538 539 0\n540 541 542 0\n543 544 545 0\n546 547 548 0\n549 550 551 0\n552 553 554 0\n555 556 557 0\n558 559 560 0\n561 562 563 0\n564 565 566 0\n567 568 569 0\n570 571 572 0\n573 574 575 0\n576 577 578 0\n579 580 581 0\n582 583 584 0\n585 586 587 0\n588 589 590 0\n591 592 593 0\n594 595 596 0\n597 598 599 0\n600 601 602 0\n603 604 605 0\n606 607 608 0\n609 610 611 0\n612 613 614 0\n615 616 617 0\n618 619 620 0\n621 622 623 0\n624 625 626 0\n627 628 629 0\n630 631 632 0\n633 634 635 0\n636 637 638 0\n639 640 641 0\n642 643 644 0\n645 646 647 0\n648 649 650 0\n651 652 653 0\n654 655 656 0\n657 658 659 0\n660 661 662 0\n663 664 665 0\n666 667 668 0\n669 670 671 0\n672 673 674 0\n675 676 677 0\n678 679 680 0\n681 682 683 0\n684 685 686 0\n687 688 689 0\n690 691 692 0\n693 694 695 0\n696 697 698 0\n699 700 701 0\n702 703 704 0\n705 706 707 0\n708 709 710 0\n711 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n723 724 725 0\n726 727 728 0\n729 730 731 0\n732 733 734 0\n735 736 737 0\n738 739 740 0\n741 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n753 754 755 0\n756 757 758 0\n759 760 761 0\n762 763 764 0\n765 766 767 0\n768 769 770 0\n771 772 773 0\n774 775 776 0\n777 778 779 0\n780 781 782 0\n783 784 785 0\n786 787 788 0\n789 790 791 0\n792 793 794 0\n795 796 797 0\n798 799 800 0\n801 802 803 0\n804 805 806 0\n807 808 809 0\n810 811 812 0\n813 814 815 0\n816 817 818 0\n819 820 821 0\n822 823 824 0\n825 826 827 0\n828 829 830 0\n831 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n843 844 845 0\n846 847 848 0\n849 850 851 0\n852 853 854 0\n855 856 857 0\n858 859 860 0\n861 862 863 0\n864 865 866 0\n867 868 869 0\n870 871 872 0\n873 874 875 0\n876 877 878 0\n879 880 881 0\n882 883 884 0\n885 886 887 0\n888 889 890 0\n891 892 893 0\n894 895 896 0\n897 898 899 0\n900 901 902 0\n903 904 905 0\n906 907 908 0\n909 910 911 0\n912 913 914 0\n915 916 917 0\n918 919 920 0\n921 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n933 934 935 0\n936 937 938 0\n939 940 941 0\n942 943 944 0\n945 946 947 0\n948 949 950 0\n951 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n963 964 965 0\n966 967 968 0\n969 970 971 0\n972 973 974 0\n975 976 977 0\n978 979 980 0\n981 982 983 0\n984 985 986 0\n987 988 989 0\n990 991 992 0\n993 994 995 0\n996 997 998 0\n999 1000 1001 0\n1002 1003 1004 0\n1005 1006 1007 0\n1008 1009 1010 0\n1011 1012 1013 0\n1014 1015 1016 0\n1017 1018 1019 0\n1020 1021 1022 0\n1023 1024 1025 0\n1026 1027 1028 0\n1029 1030 1031 0\n1032 1033 1034 0\n1035 1036 1037 0\n1038 1039 1040 0\n1041 1042 1043 0\n1044 1045 1046 0\n1047 1048 1049 0\n1050 1051 1052 0\n1053 1054 1055 0\n1056 1057 1058 0\n1059 1060 1061 0\n1062 1063 1064 0\n1065 1066 1067 0\n1068 1069 1070 0\n1071 1072 1073 0\n1074 1075 1076 0\n1077 1078 1079 0\n1080 1081 1082 0\n1083 1084 1085 0\n1086 1087 1088 0\n1089 1090 1091 0\n1092 1093 1094 0\n1095 1096 1097 0\n1098 1099 1100 0\n1101 1102 1103 0\n1104 1105 1106 0\n1107 1108 1109 0\n1110 1111 1112 0\n1113 1114 1115 0\n1116 1117 1118 0\n1119 1120 1121 0\n1122 1123 1124 0\n1125 1126 1127 0\n1128 1129 1130 0\n1131 1132 1133 0\n1134 1135 1136 0\n1137 1138 1139 0\n1140 1141 1142 0\n1143 1144 1145 0\n1146 1147 1148 0\n1149 1150 1151 0\n1152 1153 1154 0\n1155 1156 1157 0\n1158 1159 1160 0\n1161 1162 1163 0\n1164 1165 1166 0\n1167 1168 1169 0\n1170 1171 1172 0\n1173 1174 1175 0\n1176 1177 1178 0\n1179 1180 1181 0\n1182 1183 1184 0\n1185 1186 1187 0\n1188 1189 1190 0\n1191 1192 1193 0\n1194 1195 1196 0\n1197 1198 1199 0\n1200 1201 1202 0\n1203 1204 1205 0\n1206 1207 1208 0\n1209 1210 1211 0\n1212 1213 1214 0\n1215 1216 1217 0\n1218 1219 1220 0\n1221 1222 1223 0\n1224 1225 1226 0\n1227 1228 1229 0\n1230 1231 1232 0\n1233 1234 1235 0\n1236 1237 1238 0\n1239 1240 1241 0\n1242 1243 1244 0\n1245 1246 1247 0\n1248 1249 1250 0\n1251 1252 1253 0\n1254 1255 1256 0\n1257 1258 1259 0\n1260 1261 1262 0\n1263 1264 1265 0\n1266 1267 1268 0\n1269 1270 1271 0\n1272 1273 1274 0\n1275 1276 1277 0\n1278 1279 1280 0\n1281 1282 1283 0\n1284 1285 1286 0\n1287 1288 1289 0\n1290 1291 1292 0\n1293 1294 1295 0\n1296 1297 1298 0\n1299 1300 1301 0\n1302 1303 1304 0\n1305 1306 1307 0\n1308 1309 1310 0\n1311 1312 1313 0\n1314 1315 1316 0\n1317 1318 1319 0\n1320 1321 1322 0\n1323 1324 1325 0\n1326 1327 1328 0\n1329 1330 1331 0\n1332 1333 1334 0\n1335 1336 1337 0\n1338 1339 1340 0\n1341 1342 1343 0\n1344 1345 1346 0\n1347 1348 1349 0\n1350 1351 1352 0\n1353 1354 1355 0\n1356 1357 1358 0\n1359 1360 1361 0\n1362 1363 1364 0\n1365 1366 1367 0\n1368 1369 1370 0\n1371 1372 1373 0\n1374 1375 1376 0\n1377 1378 1379 0\n1380 1381 1382 0\n1383 1384 1385 0\n1386 1387 1388 0\n1389 1390 1391 0\n1392 1393 1394 0\n1395 1396 1397 0\n1398 1399 1400 0\n1401 1402 1403 0\n1404 1405 1406 0\n1407 1408 1409 0\n1410 1411 1412 0\n1413 1414 1415 0\n1416 1417 1418 0\n1419 1420 1421 0\n1422 1423 1424 0\n1425 1426 1427 0\n1428 1429 1430 0\n1431 1432 1433 0\n1434 1435 1436 0\n1437 1438 1439 0\n1440 1441 1442 0\n1443 1444 1445 0\n1446 1447 1448 0\n1449 1450 1451 0\n1452 1453 1454 0\n1455 1456 1457 0\n1458 1459 1460 0\n1461 1462 1463 0\n1464 1465 1466 0\n1467 1468 1469 0\n1470 1471 1472 0\n1473 1474 1475 0\n1476 1477 1478 0\n1479 1480 1481 0\n1482 1483 1484 0\n1485 1486 1487 0\n1488 1489 1490 0\n1491 1492 1493 0\n1494 1495 1496 0\n1497 1498 1499 0\n1500 1501 1502 0\n1503 1504 1505 0\n1506 1507 1508 0\n1509 1510 1511 0\n1512 1513 1514 0\n1515 1516 1517 0\n1518 1519 1520 0\n1521 1522 1523 0\n1524 1525 1526 0\n1527 1528 1529 0\n1530 1531 1532 0\n1533 1534 1535 0\n1536 1537 1538 0\n1539 1540 1541 0\n1542 1543 1544 0\n1545 1546 1547 0\n1548 1549 1550 0\n1551 1552 1553 0\n1554 1555 1556 0\n1557 1558 1559 0\n1560 1561 1562 0\n1563 1564 1565 0\n1566 1567 1568 0\n1569 1570 1571 0\n1572 1573 1574 0\n1575 1576 1577 0\n1578 1579 1580 0\n1581 1582 1583 0\n1584 1585 1586 0\n1587 1588 1589 0\n1590 1591 1592 0\n1593 1594 1595 0\n1596 1597 1598 0\n1599 1600 1601 0\n1602 1603 1604 0\n1605 1606 1607 0\n1608 1609 1610 0\n1611 1612 1613 0\n1614 1615 1616 0\n1617 1618 1619 0\n1620 1621 1622 0\n1623 1624 1625 0\n1626 1627 1628 0\n1629 1630 1631 0\n1632 1633 1634 0\n1635 1636 1637 0\nRoot -1 -3.260666896217475e-17 0.14684738218784332 -0.29956865310668945 1.9303147655030538e-16 0.13066351413726807 0.3641815185546875\nHead 0 -5.130115263794264e-17 0.2310398519039154 0.499281108379364 1.5086019426579632e-16 0.32058611512184143 0.6637502312660217\nTail 0 -6.564809743686247e-17 0.29565274715423584 -0.532566487789154 1.3955653958468768e-16 0.37149322032928467 -0.902621865272522\nLegBR 0 -0.12139379978179932 0.0019579818472266197 -0.43271028995513916 -0.12922565639019012 -0.46651580929756165 -0.4973231256008148\nLegFR 0 -0.1213938295841217 1.6763806343078613e-08 0.3759293556213379 -0.1292256861925125 -0.46847376227378845 0.4190046191215515\nLegBL 0 0.12139379978179932 0.0019579818472266197 -0.43271028995513916 0.12922565639019012 -0.46651580929756165 -0.4973231256008148\nLegFL -1 0.1213938295841217 1.6763806343078613e-08 0.3759293556213379 0.1292256861925125 -0.46847376227378845 0.4190046191215515\nRoot\nHead\nTail\nLegBR\nLegFR\nLegBL\nLegFL\n"
  },
  {
    "path": "data/models/ftft.collmdl",
    "content": "mesh 58\n-36.0 0.0 3.0 -34.0 0.0 1.0 -36.0 0.0 1.0\n-34.0 0.10000000149011612 3.0 -29.0 0.0 1.0 -34.0 0.0 1.0\n-34.0 0.10000000149011612 3.0 -29.0 0.20000000298023224 5.0 -29.0 0.30000001192092896 3.0\n-36.0 0.0 3.0 -34.0 0.0 5.0 -34.0 0.10000000149011612 3.0\n-29.0 0.20000000298023224 5.0 -25.0 0.20000000298023224 3.0 -29.0 0.30000001192092896 3.0\n-29.0 0.0 1.0 -25.0 0.20000000298023224 3.0 -25.0 0.0 1.0\n-25.0 0.10000000149011612 5.0 -29.0 0.0 10.0 -25.0 0.0 10.0\n-34.0 0.0 5.0 -29.0 0.0 10.0 -29.0 0.20000000298023224 5.0\n-36.0 0.0 5.0 -34.0 0.30000001192092896 10.0 -34.0 0.0 5.0\n-29.0 0.0 10.0 -25.0 0.0 14.0 -25.0 0.0 10.0\n-34.0 0.30000001192092896 10.0 -29.0 0.6000000238418579 14.0 -29.0 0.0 10.0\n-36.0 0.800000011920929 10.0 -34.0 1.0 14.0 -34.0 0.30000001192092896 10.0\n-25.0 0.0 1.0 -23.0 0.0 3.0 -23.0 0.0 1.0\n-25.0 0.10000000149011612 5.0 -23.0 0.0 3.0 -25.0 0.20000000298023224 3.0\n-25.0 0.0 10.0 -23.0 0.0 5.0 -25.0 0.10000000149011612 5.0\n-25.0 0.0 14.0 -23.0 0.0 10.0 -25.0 0.0 10.0\n-23.0 0.0 10.0 -18.0 4.0 5.0 -23.0 0.0 5.0\n-18.0 4.0 10.0 -15.0 4.0 5.0 -18.0 4.0 5.0\n-15.0 4.0 10.0 -13.0 2.0 5.0 -15.0 4.0 5.0\n-13.0 2.0 10.0 -11.0 2.0 5.0 -13.0 2.0 5.0\n-23.0 0.0 14.0 -20.0 -2.0 10.0 -23.0 0.0 10.0\n-20.0 -2.0 10.0 -17.0 -2.0 14.0 -17.0 -1.0 10.0\n-17.0 -2.0 14.0 -13.0 -3.0 10.0 -17.0 -1.0 10.0\n-13.0 -3.0 10.0 -8.0 -4.0 14.0 -8.0 -1.0 10.0\n-36.0 1.0 14.0 -36.0 5.0 10.0 -36.0 5.0 14.0\n-36.0 0.800000011920929 10.0 -36.0 5.0 5.0 -36.0 5.0 10.0\n-11.0 2.0 10.0 -10.0 3.0 5.0 -11.0 2.0 5.0\n-10.0 3.0 10.0 -10.0 5.0 5.0 -10.0 3.0 5.0\n-10.0 5.0 10.0 -12.0 6.0 5.0 -10.0 5.0 5.0\n-36.0 0.0 3.0 -34.0 0.10000000149011612 3.0 -34.0 0.0 1.0\n-34.0 0.10000000149011612 3.0 -29.0 0.30000001192092896 3.0 -29.0 0.0 1.0\n-34.0 0.10000000149011612 3.0 -34.0 0.0 5.0 -29.0 0.20000000298023224 5.0\n-36.0 0.0 3.0 -36.0 0.0 5.0 -34.0 0.0 5.0\n-29.0 0.20000000298023224 5.0 -25.0 0.10000000149011612 5.0 -25.0 0.20000000298023224 3.0\n-29.0 0.0 1.0 -29.0 0.30000001192092896 3.0 -25.0 0.20000000298023224 3.0\n-25.0 0.10000000149011612 5.0 -29.0 0.20000000298023224 5.0 -29.0 0.0 10.0\n-34.0 0.0 5.0 -34.0 0.30000001192092896 10.0 -29.0 0.0 10.0\n-36.0 0.0 5.0 -36.0 0.800000011920929 10.0 -34.0 0.30000001192092896 10.0\n-29.0 0.0 10.0 -29.0 0.6000000238418579 14.0 -25.0 0.0 14.0\n-34.0 0.30000001192092896 10.0 -34.0 1.0 14.0 -29.0 0.6000000238418579 14.0\n-36.0 0.800000011920929 10.0 -36.0 1.0 14.0 -34.0 1.0 14.0\n-25.0 0.0 1.0 -25.0 0.20000000298023224 3.0 -23.0 0.0 3.0\n-25.0 0.10000000149011612 5.0 -23.0 0.0 5.0 -23.0 0.0 3.0\n-25.0 0.0 10.0 -23.0 0.0 10.0 -23.0 0.0 5.0\n-25.0 0.0 14.0 -23.0 0.0 14.0 -23.0 0.0 10.0\n-23.0 0.0 10.0 -18.0 4.0 10.0 -18.0 4.0 5.0\n-18.0 4.0 10.0 -15.0 4.0 10.0 -15.0 4.0 5.0\n-15.0 4.0 10.0 -13.0 2.0 10.0 -13.0 2.0 5.0\n-13.0 2.0 10.0 -11.0 2.0 10.0 -11.0 2.0 5.0\n-23.0 0.0 14.0 -20.0 -3.0 14.0 -20.0 -2.0 10.0\n-20.0 -2.0 10.0 -20.0 -3.0 14.0 -17.0 -2.0 14.0\n-17.0 -2.0 14.0 -13.0 -5.0 14.0 -13.0 -3.0 10.0\n-13.0 -3.0 10.0 -13.0 -5.0 14.0 -8.0 -4.0 14.0\n-36.0 1.0 14.0 -36.0 0.800000011920929 10.0 -36.0 5.0 10.0\n-36.0 0.800000011920929 10.0 -36.0 0.0 5.0 -36.0 5.0 5.0\n-11.0 2.0 10.0 -10.0 3.0 10.0 -10.0 3.0 5.0\n-10.0 3.0 10.0 -10.0 5.0 10.0 -10.0 5.0 5.0\n-10.0 5.0 10.0 -12.0 6.0 10.0 -12.0 6.0 5.0\n"
  },
  {
    "path": "data/models/ftft.stmdl",
    "content": "174 58 2\nconcrete103\nconcrete090\n-36.0 0.0 3.0 -0.024964140728116035 0.999664306640625 -0.0 -5.396552085876465 2.8275861740112305 -5.396552085876465 2.8275861740112305\n-34.0 0.0 1.0 -0.012482070364058018 0.99920654296875 -0.03744621202349663 -4.396552085876465 3.8275861740112305 -4.396552085876465 3.8275861740112305\n-36.0 0.0 1.0 0.0 1.0 -0.0 -5.396552085876465 3.8275861740112305 -5.396552085876465 3.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-29.0 0.0 1.0 -0.006286812946200371 0.9915769100189209 -0.12924589216709137 -1.8965520858764648 3.8275861740112305 -1.8965520858764648 3.8275861740112305\n-34.0 0.0 1.0 -0.012482070364058018 0.99920654296875 -0.03744621202349663 -4.396552085876465 3.8275861740112305 -4.396552085876465 3.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-29.0 0.30000001192092896 3.0 -0.007446516305208206 0.9987487196922302 -0.04931791126728058 -1.8965520858764648 2.8275861740112305 -1.8965520858764648 2.8275861740112305\n-36.0 0.0 3.0 -0.024964140728116035 0.999664306640625 -0.0 -5.396552085876465 2.8275861740112305 -5.396552085876465 2.8275861740112305\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-29.0 0.30000001192092896 3.0 -0.007446516305208206 0.9987487196922302 -0.04931791126728058 -1.8965520858764648 2.8275861740112305 -1.8965520858764648 2.8275861740112305\n-29.0 0.0 1.0 -0.006286812946200371 0.9915769100189209 -0.12924589216709137 -1.8965520858764648 3.8275861740112305 -1.8965520858764648 3.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-25.0 0.0 1.0 0.024903103709220886 0.9968870878219604 -0.07467879354953766 0.10344791412353516 3.8275861740112305 0.10344791412353516 3.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-25.0 0.0 10.0 0.003021332435309887 0.999969482421875 0.006195257417857647 0.10344791412353516 -0.6724138259887695 0.10344791412353516 -0.6724138259887695\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-36.0 0.0 5.0 0.029908139258623123 0.9986571669578552 -0.04184087738394737 -5.396552085876465 1.8275861740112305 -5.396552085876465 1.8275861740112305\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-25.0 0.0 14.0 0.03720206394791603 0.9985961318016052 -0.03720206394791603 0.10344791412353516 -2.6724138259887695 0.10344791412353516 -2.6724138259887695\n-25.0 0.0 10.0 0.003021332435309887 0.999969482421875 0.006195257417857647 0.10344791412353516 -0.6724138259887695 0.10344791412353516 -0.6724138259887695\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-29.0 0.6000000238418579 14.0 0.10681478679180145 0.982451856136322 -0.15274514257907867 -1.8965520858764648 -2.6724138259887695 -1.8965520858764648 -2.6724138259887695\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-36.0 0.800000011920929 10.0 0.20490127801895142 0.9681386947631836 -0.143772691488266 -5.396552085876465 -0.6724138259887695 -5.396552085876465 -0.6724138259887695\n-34.0 1.0 14.0 0.07565538585186005 0.9887691736221313 -0.12881863117218018 -4.396552085876465 -2.6724138259887695 -4.396552085876465 -2.6724138259887695\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-25.0 0.0 1.0 0.024903103709220886 0.9968870878219604 -0.07467879354953766 0.10344791412353516 3.8275861740112305 0.10344791412353516 3.8275861740112305\n-23.0 0.0 3.0 0.062288276851177216 0.9979552626609802 -0.012451551854610443 1.1034479141235352 2.8275861740112305 1.1034479141235352 2.8275861740112305\n-23.0 0.0 1.0 0.0 1.0 -0.0 1.1034479141235352 3.8275861740112305 1.1034479141235352 3.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-23.0 0.0 3.0 0.062288276851177216 0.9979552626609802 -0.012451551854610443 1.1034479141235352 2.8275861740112305 1.1034479141235352 2.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-25.0 0.0 10.0 0.003021332435309887 0.999969482421875 0.006195257417857647 0.10344791412353516 -0.6724138259887695 0.10344791412353516 -0.6724138259887695\n-23.0 0.0 5.0 0.043885618448257446 0.9989928603172302 0.007568590342998505 1.1034479141235352 1.8275861740112305 1.1034479141235352 1.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-25.0 0.0 14.0 0.03720206394791603 0.9985961318016052 -0.03720206394791603 0.10344791412353516 -2.6724138259887695 0.10344791412353516 -2.6724138259887695\n-23.0 0.0 10.0 0.0 1.0 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-25.0 0.0 10.0 0.003021332435309887 0.999969482421875 0.006195257417857647 0.10344791412353516 -0.6724138259887695 0.10344791412353516 -0.6724138259887695\n-23.0 0.0 10.0 -0.6246833801269531 0.7808465957641602 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-18.0 4.0 5.0 -0.6246833801269531 0.7808465957641602 -0.0 3.603447914123535 1.8275861740112305 3.603447914123535 1.8275861740112305\n-23.0 0.0 5.0 -0.6246833801269531 0.7808465957641602 -0.0 1.1034479141235352 1.8275861740112305 1.1034479141235352 1.8275861740112305\n-18.0 4.0 10.0 0.0 1.0 -0.0 3.603447914123535 -0.6724138259887695 3.603447914123535 -0.6724138259887695\n-15.0 4.0 5.0 0.0 1.0 -0.0 5.103447914123535 1.8275861740112305 5.103447914123535 1.8275861740112305\n-18.0 4.0 5.0 0.0 1.0 -0.0 3.603447914123535 1.8275861740112305 3.603447914123535 1.8275861740112305\n-15.0 4.0 10.0 0.7070833444595337 0.7070833444595337 -0.0 5.103447914123535 -0.6724138259887695 5.103447914123535 -0.6724138259887695\n-13.0 2.0 5.0 0.7070833444595337 0.7070833444595337 -0.0 6.103447914123535 1.8275861740112305 6.103447914123535 1.8275861740112305\n-15.0 4.0 5.0 0.7070833444595337 0.7070833444595337 -0.0 5.103447914123535 1.8275861740112305 5.103447914123535 1.8275861740112305\n-13.0 2.0 10.0 0.0 1.0 -0.0 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-11.0 2.0 5.0 0.0 1.0 -0.0 7.103447914123535 1.8275861740112305 7.103447914123535 1.8275861740112305\n-13.0 2.0 5.0 0.0 1.0 -0.0 6.103447914123535 1.8275861740112305 6.103447914123535 1.8275861740112305\n-23.0 0.0 14.0 0.6363414525985718 0.765556812286377 0.09445478767156601 1.1034479141235352 -2.6724138259887695 1.1034479141235352 -2.6724138259887695\n-20.0 -2.0 10.0 0.6330454349517822 0.7687917947769165 0.09039582312107086 2.603447914123535 -0.6724138259887695 2.603447914123535 -0.6724138259887695\n-23.0 0.0 10.0 0.5546739101409912 0.8320261240005493 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-20.0 -2.0 10.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 2.603447914123535 -0.6724138259887695 2.603447914123535 -0.6724138259887695\n-17.0 -2.0 14.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 4.103447914123535 -2.6724138259887695 4.103447914123535 -2.6724138259887695\n-17.0 -1.0 10.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 4.103447914123535 -0.6724138259887695 4.103447914123535 -0.6724138259887695\n-17.0 -2.0 14.0 0.4988860785961151 0.8148136734962463 0.2951750159263611 4.103447914123535 -2.6724138259887695 4.103447914123535 -2.6724138259887695\n-13.0 -3.0 10.0 0.5069429874420166 0.8060243725776672 0.30542925000190735 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-17.0 -1.0 10.0 0.4364146888256073 0.8728598952293396 0.21820734441280365 4.103447914123535 -0.6724138259887695 4.103447914123535 -0.6724138259887695\n-13.0 -3.0 10.0 -0.24002808332443237 0.8278145790100098 0.5070040225982666 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-8.0 -4.0 14.0 -0.24893948435783386 0.8195440769195557 0.5160679817199707 8.603447914123535 -2.6724138259887695 8.603447914123535 -2.6724138259887695\n-8.0 -1.0 10.0 -0.30475783348083496 0.7619251012802124 0.5714285969734192 8.603447914123535 -0.6724138259887695 8.603447914123535 -0.6724138259887695\n-36.0 1.0 14.0 1.0 0.0 -0.0 -2.6724138259887695 0.6198276281356812 -2.6724138259887695 0.6198276281356812\n-36.0 5.0 10.0 1.0 0.0 -0.0 -0.6724138259887695 2.6198275089263916 -0.6724138259887695 2.6198275089263916\n-36.0 5.0 14.0 1.0 0.0 -0.0 -2.6724138259887695 2.6198275089263916 -2.6724138259887695 2.6198275089263916\n-36.0 0.800000011920929 10.0 1.0 0.0 -0.0 -0.6724138259887695 0.5198276042938232 -0.6724138259887695 0.5198276042938232\n-36.0 5.0 5.0 1.0 0.0 -0.0 1.8275861740112305 2.6198275089263916 1.8275861740112305 2.6198275089263916\n-36.0 5.0 10.0 1.0 0.0 -0.0 -0.6724138259887695 2.6198275089263916 -0.6724138259887695 2.6198275089263916\n-11.0 2.0 10.0 -0.7070833444595337 0.7070833444595337 -0.0 7.103447914123535 -0.6724138259887695 7.103447914123535 -0.6724138259887695\n-10.0 3.0 5.0 -0.7070833444595337 0.7070833444595337 -0.0 7.603447914123535 1.8275861740112305 7.603447914123535 1.8275861740112305\n-11.0 2.0 5.0 -0.7070833444595337 0.7070833444595337 -0.0 7.103447914123535 1.8275861740112305 7.103447914123535 1.8275861740112305\n-10.0 3.0 10.0 -1.0 0.0 -0.0 -0.6724138259887695 1.6198276281356812 -0.6724138259887695 1.6198276281356812\n-10.0 5.0 5.0 -1.0 0.0 -0.0 1.8275861740112305 2.6198275089263916 1.8275861740112305 2.6198275089263916\n-10.0 3.0 5.0 -1.0 0.0 -0.0 1.8275861740112305 1.6198276281356812 1.8275861740112305 1.6198276281356812\n-10.0 5.0 10.0 -0.44718772172927856 -0.8944059610366821 -0.0 7.603447914123535 -0.6724138259887695 7.603447914123535 -0.6724138259887695\n-12.0 6.0 5.0 -0.44718772172927856 -0.8944059610366821 -0.0 6.603447914123535 1.8275861740112305 6.603447914123535 1.8275861740112305\n-10.0 5.0 5.0 -0.44718772172927856 -0.8944059610366821 -0.0 7.603447914123535 1.8275861740112305 7.603447914123535 1.8275861740112305\n-36.0 0.0 3.0 -0.024964140728116035 0.999664306640625 -0.0 -5.396552085876465 2.8275861740112305 -5.396552085876465 2.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-34.0 0.0 1.0 -0.012482070364058018 0.99920654296875 -0.03744621202349663 -4.396552085876465 3.8275861740112305 -4.396552085876465 3.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-29.0 0.30000001192092896 3.0 -0.007446516305208206 0.9987487196922302 -0.04931791126728058 -1.8965520858764648 2.8275861740112305 -1.8965520858764648 2.8275861740112305\n-29.0 0.0 1.0 -0.006286812946200371 0.9915769100189209 -0.12924589216709137 -1.8965520858764648 3.8275861740112305 -1.8965520858764648 3.8275861740112305\n-34.0 0.10000000149011612 3.0 -0.03735465556383133 0.999267578125 -0.006042664870619774 -4.396552085876465 2.8275861740112305 -4.396552085876465 2.8275861740112305\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-36.0 0.0 3.0 -0.024964140728116035 0.999664306640625 -0.0 -5.396552085876465 2.8275861740112305 -5.396552085876465 2.8275861740112305\n-36.0 0.0 5.0 0.029908139258623123 0.9986571669578552 -0.04184087738394737 -5.396552085876465 1.8275861740112305 -5.396552085876465 1.8275861740112305\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-29.0 0.0 1.0 -0.006286812946200371 0.9915769100189209 -0.12924589216709137 -1.8965520858764648 3.8275861740112305 -1.8965520858764648 3.8275861740112305\n-29.0 0.30000001192092896 3.0 -0.007446516305208206 0.9987487196922302 -0.04931791126728058 -1.8965520858764648 2.8275861740112305 -1.8965520858764648 2.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-29.0 0.20000000298023224 5.0 -0.007477034814655781 0.9989318251609802 0.044953763484954834 -1.8965520858764648 1.8275861740112305 -1.8965520858764648 1.8275861740112305\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-34.0 0.0 5.0 -0.013733329251408577 0.9998779296875 0.0012207403779029846 -4.396552085876465 1.8275861740112305 -4.396552085876465 1.8275861740112305\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-36.0 0.0 5.0 0.029908139258623123 0.9986571669578552 -0.04184087738394737 -5.396552085876465 1.8275861740112305 -5.396552085876465 1.8275861740112305\n-36.0 0.800000011920929 10.0 0.20490127801895142 0.9681386947631836 -0.143772691488266 -5.396552085876465 -0.6724138259887695 -5.396552085876465 -0.6724138259887695\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-29.0 0.0 10.0 0.038636431097984314 0.9979247450828552 -0.05093539133667946 -1.8965520858764648 -0.6724138259887695 -1.8965520858764648 -0.6724138259887695\n-29.0 0.6000000238418579 14.0 0.10681478679180145 0.982451856136322 -0.15274514257907867 -1.8965520858764648 -2.6724138259887695 -1.8965520858764648 -2.6724138259887695\n-25.0 0.0 14.0 0.03720206394791603 0.9985961318016052 -0.03720206394791603 0.10344791412353516 -2.6724138259887695 0.10344791412353516 -2.6724138259887695\n-34.0 0.30000001192092896 10.0 0.13812677562236786 0.981749951839447 -0.13052766025066376 -4.396552085876465 -0.6724138259887695 -4.396552085876465 -0.6724138259887695\n-34.0 1.0 14.0 0.07565538585186005 0.9887691736221313 -0.12881863117218018 -4.396552085876465 -2.6724138259887695 -4.396552085876465 -2.6724138259887695\n-29.0 0.6000000238418579 14.0 0.10681478679180145 0.982451856136322 -0.15274514257907867 -1.8965520858764648 -2.6724138259887695 -1.8965520858764648 -2.6724138259887695\n-36.0 0.800000011920929 10.0 0.20490127801895142 0.9681386947631836 -0.143772691488266 -5.396552085876465 -0.6724138259887695 -5.396552085876465 -0.6724138259887695\n-36.0 1.0 14.0 0.0 0.9987487196922302 -0.04992828145623207 -5.396552085876465 -2.6724138259887695 -5.396552085876465 -2.6724138259887695\n-34.0 1.0 14.0 0.07565538585186005 0.9887691736221313 -0.12881863117218018 -4.396552085876465 -2.6724138259887695 -4.396552085876465 -2.6724138259887695\n-25.0 0.0 1.0 0.024903103709220886 0.9968870878219604 -0.07467879354953766 0.10344791412353516 3.8275861740112305 0.10344791412353516 3.8275861740112305\n-25.0 0.20000000298023224 3.0 0.05777153745293617 0.9978942275047302 -0.02844325080513954 0.10344791412353516 2.8275861740112305 0.10344791412353516 2.8275861740112305\n-23.0 0.0 3.0 0.062288276851177216 0.9979552626609802 -0.012451551854610443 1.1034479141235352 2.8275861740112305 1.1034479141235352 2.8275861740112305\n-25.0 0.10000000149011612 5.0 0.04098635911941528 0.9986571669578552 0.031556136906147 0.10344791412353516 1.8275861740112305 0.10344791412353516 1.8275861740112305\n-23.0 0.0 5.0 0.043885618448257446 0.9989928603172302 0.007568590342998505 1.1034479141235352 1.8275861740112305 1.1034479141235352 1.8275861740112305\n-23.0 0.0 3.0 0.062288276851177216 0.9979552626609802 -0.012451551854610443 1.1034479141235352 2.8275861740112305 1.1034479141235352 2.8275861740112305\n-25.0 0.0 10.0 0.003021332435309887 0.999969482421875 0.006195257417857647 0.10344791412353516 -0.6724138259887695 0.10344791412353516 -0.6724138259887695\n-23.0 0.0 10.0 0.0 1.0 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-23.0 0.0 5.0 0.043885618448257446 0.9989928603172302 0.007568590342998505 1.1034479141235352 1.8275861740112305 1.1034479141235352 1.8275861740112305\n-25.0 0.0 14.0 0.03720206394791603 0.9985961318016052 -0.03720206394791603 0.10344791412353516 -2.6724138259887695 0.10344791412353516 -2.6724138259887695\n-23.0 0.0 14.0 0.0 1.0 -0.0 1.1034479141235352 -2.6724138259887695 1.1034479141235352 -2.6724138259887695\n-23.0 0.0 10.0 0.0 1.0 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-23.0 0.0 10.0 -0.6246833801269531 0.7808465957641602 -0.0 1.1034479141235352 -0.6724138259887695 1.1034479141235352 -0.6724138259887695\n-18.0 4.0 10.0 -0.6246833801269531 0.7808465957641602 -0.0 3.603447914123535 -0.6724138259887695 3.603447914123535 -0.6724138259887695\n-18.0 4.0 5.0 -0.6246833801269531 0.7808465957641602 -0.0 3.603447914123535 1.8275861740112305 3.603447914123535 1.8275861740112305\n-18.0 4.0 10.0 0.0 1.0 -0.0 3.603447914123535 -0.6724138259887695 3.603447914123535 -0.6724138259887695\n-15.0 4.0 10.0 0.0 1.0 -0.0 5.103447914123535 -0.6724138259887695 5.103447914123535 -0.6724138259887695\n-15.0 4.0 5.0 0.0 1.0 -0.0 5.103447914123535 1.8275861740112305 5.103447914123535 1.8275861740112305\n-15.0 4.0 10.0 0.7070833444595337 0.7070833444595337 -0.0 5.103447914123535 -0.6724138259887695 5.103447914123535 -0.6724138259887695\n-13.0 2.0 10.0 0.7070833444595337 0.7070833444595337 -0.0 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-13.0 2.0 5.0 0.7070833444595337 0.7070833444595337 -0.0 6.103447914123535 1.8275861740112305 6.103447914123535 1.8275861740112305\n-13.0 2.0 10.0 0.0 1.0 -0.0 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-11.0 2.0 10.0 0.0 1.0 -0.0 7.103447914123535 -0.6724138259887695 7.103447914123535 -0.6724138259887695\n-11.0 2.0 5.0 0.0 1.0 -0.0 7.103447914123535 1.8275861740112305 7.103447914123535 1.8275861740112305\n-23.0 0.0 14.0 0.6363414525985718 0.765556812286377 0.09445478767156601 1.1034479141235352 -2.6724138259887695 1.1034479141235352 -2.6724138259887695\n-20.0 -3.0 14.0 0.69631028175354 0.69631028175354 0.174077570438385 2.603447914123535 -2.6724138259887695 2.603447914123535 -2.6724138259887695\n-20.0 -2.0 10.0 0.6330454349517822 0.7687917947769165 0.09039582312107086 2.603447914123535 -0.6724138259887695 2.603447914123535 -0.6724138259887695\n-20.0 -2.0 10.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 2.603447914123535 -0.6724138259887695 2.603447914123535 -0.6724138259887695\n-20.0 -3.0 14.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 2.603447914123535 -2.6724138259887695 2.603447914123535 -2.6724138259887695\n-17.0 -2.0 14.0 -0.3076876103878021 0.9230628609657288 0.2307504564523697 4.103447914123535 -2.6724138259887695 4.103447914123535 -2.6724138259887695\n-17.0 -2.0 14.0 0.4988860785961151 0.8148136734962463 0.2951750159263611 4.103447914123535 -2.6724138259887695 4.103447914123535 -2.6724138259887695\n-13.0 -5.0 14.0 0.557084858417511 0.7427594661712646 0.3713797330856323 6.103447914123535 -2.6724138259887695 6.103447914123535 -2.6724138259887695\n-13.0 -3.0 10.0 0.5069429874420166 0.8060243725776672 0.30542925000190735 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-13.0 -3.0 10.0 -0.24002808332443237 0.8278145790100098 0.5070040225982666 6.103447914123535 -0.6724138259887695 6.103447914123535 -0.6724138259887695\n-13.0 -5.0 14.0 -0.17606128752231598 0.8804284930229187 0.44019898772239685 6.103447914123535 -2.6724138259887695 6.103447914123535 -2.6724138259887695\n-8.0 -4.0 14.0 -0.24893948435783386 0.8195440769195557 0.5160679817199707 8.603447914123535 -2.6724138259887695 8.603447914123535 -2.6724138259887695\n-36.0 1.0 14.0 1.0 0.0 -0.0 -2.6724138259887695 0.6198276281356812 -2.6724138259887695 0.6198276281356812\n-36.0 0.800000011920929 10.0 1.0 0.0 -0.0 -0.6724138259887695 0.5198276042938232 -0.6724138259887695 0.5198276042938232\n-36.0 5.0 10.0 1.0 0.0 -0.0 -0.6724138259887695 2.6198275089263916 -0.6724138259887695 2.6198275089263916\n-36.0 0.800000011920929 10.0 1.0 0.0 -0.0 -0.6724138259887695 0.5198276042938232 -0.6724138259887695 0.5198276042938232\n-36.0 0.0 5.0 1.0 0.0 -0.0 1.8275861740112305 0.11982759833335876 1.8275861740112305 0.11982759833335876\n-36.0 5.0 5.0 1.0 0.0 -0.0 1.8275861740112305 2.6198275089263916 1.8275861740112305 2.6198275089263916\n-11.0 2.0 10.0 -0.7070833444595337 0.7070833444595337 -0.0 7.103447914123535 -0.6724138259887695 7.103447914123535 -0.6724138259887695\n-10.0 3.0 10.0 -0.7070833444595337 0.7070833444595337 -0.0 7.603447914123535 -0.6724138259887695 7.603447914123535 -0.6724138259887695\n-10.0 3.0 5.0 -0.7070833444595337 0.7070833444595337 -0.0 7.603447914123535 1.8275861740112305 7.603447914123535 1.8275861740112305\n-10.0 3.0 10.0 -1.0 0.0 -0.0 -0.6724138259887695 1.6198276281356812 -0.6724138259887695 1.6198276281356812\n-10.0 5.0 10.0 -1.0 0.0 -0.0 -0.6724138259887695 2.6198275089263916 -0.6724138259887695 2.6198275089263916\n-10.0 5.0 5.0 -1.0 0.0 -0.0 1.8275861740112305 2.6198275089263916 1.8275861740112305 2.6198275089263916\n-10.0 5.0 10.0 -0.44718772172927856 -0.8944059610366821 -0.0 7.603447914123535 -0.6724138259887695 7.603447914123535 -0.6724138259887695\n-12.0 6.0 10.0 -0.44718772172927856 -0.8944059610366821 -0.0 6.603447914123535 -0.6724138259887695 6.603447914123535 -0.6724138259887695\n-12.0 6.0 5.0 -0.44718772172927856 -0.8944059610366821 -0.0 6.603447914123535 1.8275861740112305 6.603447914123535 1.8275861740112305\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n"
  },
  {
    "path": "data/models/kadbusest.dymdl",
    "content": "DYMDLv1 23748 7916 1 1 1\nstolentoilet\n2.073303461074829 0.3344895839691162 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.46527335047721863 0.618800163269043 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.0 0.0 1.0 0.4800960421562195 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.47247588634490967 0.6193457841873169 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 0.0 0.0 1.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.0 0.0 1.0 0.4800960421562195 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.46527335047721863 0.618800163269043 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 0.0 0.0 1.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.0 0.0 1.0 0.48747992515563965 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.0 0.0 1.0 0.4800960421562195 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 0.0 0.0 1.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.0 0.0 1.0 0.48747992515563965 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 0.0 0.0 1.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 0.0 0.0 1.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.0 0.0 1.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.0 0.0 1.0 0.48747992515563965 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 0.0 0.0 1.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.0 0.0 1.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 0.0 0.0 1.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 0.0 0.0 1.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.0 0.0 1.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.0 0.0 1.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 0.0 0.0 1.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.0 0.0 1.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 0.0 0.0 1.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 0.0 0.0 1.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.0 0.0 1.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 0.0 0.0 1.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 0.0 0.0 1.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 0.0 0.0 1.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.0 0.0 1.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 0.0 0.0 1.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.0 0.0 1.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 0.0 0.0 1.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 0.0 0.0 1.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.0 0.0 1.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.0 0.0 1.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 0.0 0.0 1.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.0 0.0 1.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 0.0 0.0 1.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 0.0 0.0 1.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.0 0.0 1.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.0 0.0 1.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 0.0 0.0 1.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.0 0.0 1.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 0.0 0.0 1.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 0.0 0.0 1.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.0 0.0 1.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.0 0.0 1.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 0.0 0.0 1.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.0 0.0 1.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 0.0 0.0 1.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 0.0 0.0 1.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.0 0.0 1.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.0 0.0 1.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 0.0 0.0 1.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.0 0.0 1.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 0.0 0.0 1.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 0.0 0.0 1.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.0 0.0 1.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.0 0.0 1.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 0.0 0.0 1.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.0 0.0 1.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 0.0 0.0 1.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 0.0 0.0 1.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.0 0.0 1.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.0 0.0 1.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 0.0 0.0 0.999969482421875 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.0 0.0 1.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 0.0 0.0 1.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 0.0 0.0 0.999969482421875 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.0 0.0 1.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.0 0.0 1.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 0.0 0.0 0.999969482421875 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.0 0.0 1.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 0.0 0.0 0.999969482421875 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 0.0 0.0 0.999969482421875 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.0 0.0 1.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.0 0.0 1.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 0.0 0.0 1.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.0 0.0 1.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 0.0 0.0 0.999969482421875 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 0.0 0.0 1.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.0 0.0 1.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.0 0.0 1.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 0.0 0.0 1.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.0 0.0 1.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 0.0 0.0 1.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 0.0 0.0 1.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0 0.0 1.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.0 0.0 1.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0 0.0 1.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.0 0.0 1.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.0 0.0 1.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 0.0 0.0 1.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.0 0.0 1.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0 0.0 1.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 0.21605446934700012 0.0 -0.0003662221133708954 0.999969482421875 0.4767376482486725 0.5481581687927246 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.0 0.0 1.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0 0.0 1.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.0 0.0 1.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 0.0 0.0 1.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 0.0 9.155552834272385e-05 1.0 0.4803523123264313 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.0 0.0 1.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 0.21605446934700012 0.0 -0.0003662221133708954 0.999969482421875 0.4767376482486725 0.5481581687927246 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 0.21605446934700012 0.0 0.0 1.0 0.4658893346786499 0.5478110909461975 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.0 0.0 1.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 0.0 9.155552834272385e-05 1.0 0.4803523123264313 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.0 0.0 1.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 0.2160544991493225 0.0 9.155552834272385e-05 0.999969482421875 0.4838416874408722 0.5467280149459839 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 0.0 9.155552834272385e-05 1.0 0.4803523123264313 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 0.2160544991493225 0.0 0.0 1.0 0.46249303221702576 0.5470205545425415 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 0.21605446934700012 0.0 0.0 1.0 0.4658893346786499 0.5478110909461975 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 0.2160544991493225 0.0 0.0 1.0 0.48720449209213257 0.5455227494239807 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 0.2160544991493225 0.0 9.155552834272385e-05 0.999969482421875 0.4838416874408722 0.5467280149459839 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 0.2160544991493225 0.0 0.0 1.0 0.459200918674469 0.5458978414535522 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 0.2160544991493225 0.0 0.0 1.0 0.46249303221702576 0.5470205545425415 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.49043959379196167 0.5439919233322144 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 0.2160544991493225 0.0 0.0 1.0 0.48720449209213257 0.5455227494239807 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 0.2160544991493225 0.0 0.0 1.0 0.45601141452789307 0.5444464683532715 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 0.2160544991493225 0.0 0.0 1.0 0.459200918674469 0.5458978414535522 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 0.2160544991493225 0.0 0.0 1.0 0.4935469329357147 0.5421359539031982 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.49043959379196167 0.5439919233322144 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 0.21605446934700012 0.0 0.0 0.999969482421875 0.45292267203330994 0.5426691770553589 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 0.2160544991493225 0.0 0.0 1.0 0.45601141452789307 0.5444464683532715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 0.2160544991493225 0.0 0.0 1.0 0.4965265691280365 0.5399552583694458 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 0.2160544991493225 0.0 0.0 1.0 0.4935469329357147 0.5421359539031982 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 0.21605446934700012 0.0 0.0 1.0 0.44993263483047485 0.5405683517456055 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 0.21605446934700012 0.0 0.0 0.999969482421875 0.45292267203330994 0.5426691770553589 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 0.0 0.0 0.999969482421875 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 0.2160544991493225 0.0 0.0 1.0 0.4965265691280365 0.5399552583694458 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.0 0.0 1.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 0.21605446934700012 0.0 0.0 1.0 0.44993263483047485 0.5405683517456055 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 0.0 0.0 0.999969482421875 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.0 0.0 1.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 0.0 0.0 1.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 0.0 0.0 0.999969482421875 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.0 0.0 1.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 0.21605448424816132 0.0 0.0 1.0 0.5021044611930847 0.5346182584762573 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 0.0 0.0 0.999969482421875 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 0.0 0.0 0.999969482421875 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 0.21605448424816132 0.0 0.0 1.0 0.4442402422428131 0.5354030728340149 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.0 0.0 1.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 0.21605448424816132 0.0 0.0 1.0 0.5047039985656738 0.5314600467681885 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 0.21605448424816132 0.0 0.0 1.0 0.5021044611930847 0.5346182584762573 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 0.0 0.0 0.999969482421875 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 0.21605448424816132 0.0 0.0 1.0 0.4415329396724701 0.5323407649993896 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 0.21605448424816132 0.0 0.0 1.0 0.4442402422428131 0.5354030728340149 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 0.21605448424816132 0.0 0.0 1.0 0.507178783416748 0.527972936630249 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 0.21605448424816132 0.0 0.0 1.0 0.5047039985656738 0.5314600467681885 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 0.0 0.0 0.999969482421875 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.0 0.0 1.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 0.21605448424816132 0.0 0.0 1.0 0.4415329396724701 0.5323407649993896 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 0.0 0.0 0.999969482421875 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 0.21605448424816132 0.0 0.0 1.0 0.507178783416748 0.527972936630249 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 0.0 0.0 0.999969482421875 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.0 0.0 1.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.0 0.0 1.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 0.0 0.0 1.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.0 0.0 1.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 0.0 0.0 0.999969482421875 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 0.0 0.0 1.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 0.21605448424816132 0.0 0.0 1.0 0.4363836348056793 0.525258481502533 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.0 0.0 1.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 0.21605448424816132 0.0 0.0 1.0 0.5117291212081909 0.5201003551483154 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.0 0.0 1.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 0.0 0.0 0.999969482421875 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 0.0 0.0 1.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 0.21605448424816132 0.0 0.0 1.0 0.43394935131073 0.5212298631668091 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 0.21605448424816132 0.0 0.0 1.0 0.4363836348056793 0.525258481502533 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 0.0 0.0 1.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.0 0.0 1.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 0.21605448424816132 0.0 0.0 1.0 0.5117291212081909 0.5201003551483154 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 0.0 0.0 1.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.0 0.0 1.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 0.21605448424816132 0.0 0.0 1.0 0.43394935131073 0.5212298631668091 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 0.0 0.0 1.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.0 0.0 1.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.0 0.0 1.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 0.0 0.0 1.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.0 0.0 1.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 0.0 0.0 1.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 0.21605448424816132 0.0 0.0 1.0 0.5155841708183289 0.5115742087364197 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.0 0.0 1.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 0.0 0.0 1.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 0.0 0.0 1.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 0.21605448424816132 0.0 0.0 0.999969482421875 0.4293980002403259 0.5121585726737976 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.0 0.0 1.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 0.0 0.0 1.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.0 0.0 1.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 0.21605448424816132 0.0 0.0 1.0 0.5155841708183289 0.5115742087364197 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 0.0 0.0 1.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.0 0.0 0.999969482421875 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 0.21605448424816132 0.0 0.0 0.999969482421875 0.4293980002403259 0.5121585726737976 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 0.0 0.0 1.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.0 0.0 1.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.0 0.0 1.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 0.21605448424816132 0.0 0.0 1.0 0.5187181234359741 0.5024833083152771 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.0 0.0 1.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 0.0 0.0 1.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 0.0 0.0 0.999969482421875 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.0 0.0 0.999969482421875 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 0.0 0.0 1.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 0.0 0.0 0.999969482421875 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 0.21605448424816132 0.0 0.0 1.0 0.4252496063709259 0.5017184019088745 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.0 0.0 0.999969482421875 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 0.21605448424816132 0.0 0.0 1.0 0.5200154185295105 0.4977208375930786 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.0 0.0 1.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 0.21605448424816132 0.0 0.0 1.0 0.5187181234359741 0.5024833083152771 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 0.0 0.0 1.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.0 0.0 1.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 0.21605448424816132 0.0 0.0 1.0 0.5200154185295105 0.4977208375930786 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 0.0 0.0 0.999969482421875 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.0 0.0 1.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 0.21605448424816132 0.0 0.0 1.0 0.4252496063709259 0.5017184019088745 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 0.0 0.0 1.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.0 0.0 1.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.0 0.0 1.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 0.0 0.0 1.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.0 0.0 1.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 0.0 0.0 0.999969482421875 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 0.21605448424816132 0.0 0.0 0.999969482421875 0.5220695734024048 0.48774731159210205 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.0 0.0 1.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 0.0 0.0 1.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 0.0 0.0 1.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 0.21605448424816132 0.0 0.0 1.0 0.42148181796073914 0.4898841977119446 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.0 0.0 1.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 0.0 0.0 0.999969482421875 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.0 0.0 1.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 0.21605448424816132 0.0 0.0 0.999969482421875 0.5220695734024048 0.48774731159210205 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 0.0 0.0 0.999969482421875 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.0 0.0 1.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.0 0.0 1.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 0.0 0.0 1.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.0 0.0 1.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 0.21605448424816132 0.0 0.0 1.0 0.42148181796073914 0.4898841977119446 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 0.0 0.0 1.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.0 0.0 1.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 0.0 0.0 1.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 0.21605448424816132 0.0 0.0 1.0 0.5234003663063049 0.47715163230895996 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.0 0.0 1.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 0.0 0.0 0.999969482421875 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 0.0 0.0 1.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.0 0.0 1.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.0 0.0 1.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 0.0 0.0 1.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.0 0.0 1.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 0.21605448424816132 0.0 0.0 1.0 0.5234003663063049 0.47715163230895996 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 0.0 0.0 1.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.0 0.0 1.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.0 0.0 1.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 0.21605448424816132 0.0 0.0 1.0 0.5239977240562439 0.46590250730514526 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.0 0.0 1.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 0.0 0.0 1.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 0.0 0.0 1.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.0 0.0 1.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 0.0 0.0 1.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 0.0 0.0 1.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 0.21605448424816132 0.0 0.0 1.0 0.41650107502937317 0.4694640636444092 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.0 0.0 1.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 0.0 0.0 1.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.0 0.0 1.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 0.21605448424816132 0.0 0.0 1.0 0.5239977240562439 0.46590250730514526 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 0.0 0.0 1.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.0 0.0 1.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.0 0.0 1.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 0.0 0.0 1.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 0.21605448424816132 0.0 0.0 0.999969482421875 0.41501089930534363 0.46193617582321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 0.21605448424816132 0.0 0.0 1.0 0.41650107502937317 0.4694640636444092 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 0.21605448424816132 0.0 0.0 1.0 0.5239424109458923 0.45764970779418945 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.0 0.0 1.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 0.0 0.0 1.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 0.21605448424816132 0.0 0.0 1.0 0.41360267996788025 0.4540458917617798 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 0.21605448424816132 0.0 0.0 0.999969482421875 0.41501089930534363 0.46193617582321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 0.0 0.0 1.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 0.0 0.0 1.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.0 0.0 1.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 0.21605448424816132 0.0 0.0 1.0 0.5239424109458923 0.45764970779418945 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 0.0 0.0 1.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.0 0.0 1.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.0 0.0 1.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 0.21605448424816132 0.0 0.0 1.0 0.5234435200691223 0.4495640993118286 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.0 0.0 1.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 0.0 0.0 1.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 0.0 0.0 1.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.0 0.0 1.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 0.21605448424816132 0.0 0.0 1.0 0.5234435200691223 0.4495640993118286 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 0.0 0.0 1.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.0 0.0 1.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.0 0.0 1.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 0.0 0.0 1.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.0 0.0 1.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 0.0 0.0 1.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 0.0 0.0 1.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.0 0.0 1.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.0 0.0 1.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 0.21605446934700012 0.0 0.0 1.0 0.5218402743339539 0.43775051832199097 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.0 0.0 1.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 0.0 0.0 1.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 0.0 0.0 1.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.0 0.0 1.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 0.21605446934700012 0.0 0.0 1.0 0.5218402743339539 0.43775051832199097 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 0.0 0.0 1.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.0 0.0 1.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.0 0.0 1.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 0.21605446934700012 0.0 0.0 1.0 0.5201833248138428 0.4300884008407593 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.0 0.0 1.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 0.0 0.0 1.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 0.0 0.0 1.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.0 0.0 1.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 0.21605446934700012 0.0 0.0 1.0 0.5201833248138428 0.4300884008407593 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 0.0 0.0 1.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.0 0.0 0.999969482421875 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.0 0.0 1.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 0.0 0.0 1.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.0 0.0 0.999969482421875 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 0.0 0.0 1.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 0.0 0.0 1.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.0 0.0 0.999969482421875 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.0 0.0 0.999969482421875 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 0.21605446934700012 0.0 0.0 1.0 0.5167807936668396 0.41893166303634644 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.0 0.0 0.999969482421875 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 0.0 0.0 1.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 0.0 0.0 1.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.0 0.0 0.999969482421875 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 0.21605446934700012 0.0 0.0 1.0 0.5167807936668396 0.41893166303634644 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 0.0 0.0 1.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.0 0.0 1.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.0 0.0 0.999969482421875 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 0.21605446934700012 0.0 0.0 1.0 0.5144461989402771 0.4134361743927002 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.0 0.0 1.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 0.0 0.0 1.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 0.0 0.0 1.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.0 0.0 1.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 0.21605446934700012 0.0 0.0 1.0 0.5144461989402771 0.4134361743927002 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 0.0 0.0 1.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.0 0.0 1.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.0 0.0 1.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 0.21605446934700012 0.0 0.0 1.0 0.5108454823493958 0.406189501285553 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.0 0.0 1.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 0.0 0.0 1.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 0.0 0.0 1.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.0 0.0 1.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 0.21605446934700012 0.0 0.0 1.0 0.5108454823493958 0.406189501285553 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 0.0 0.0 1.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.0 0.0 1.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.0 0.0 1.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 0.0 0.0 1.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.0 0.0 1.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 0.0 0.0 1.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 0.0 0.0 1.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.0 0.0 0.999969482421875 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.0 0.0 1.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 0.21605446934700012 0.0 0.0 0.999969482421875 0.5029294490814209 0.39210838079452515 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.0 0.0 0.999969482421875 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 0.0 0.0 1.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 0.0 0.0 1.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.0 0.0 0.999969482421875 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 0.21605446934700012 0.0 0.0 0.999969482421875 0.5029294490814209 0.39210838079452515 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 0.0 0.0 1.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.0 0.0 0.999969482421875 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 0.0 0.0 1.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 0.0 0.0 1.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 0.0 0.0 1.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.0 0.0 1.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 0.0 0.0 0.999969482421875 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.0 0.0 1.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 0.0 0.0 1.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 0.0 0.0 0.999969482421875 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.0 0.0 1.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.0 0.0 1.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 0.0 0.0 1.0 0.487287312746048 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.0 0.0 1.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 0.0 0.0 0.999969482421875 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 0.0 0.0 1.0 0.487287312746048 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.0 0.0 0.999969482421875 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.0 0.0 1.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 0.0 0.0 1.0 0.4824126362800598 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.0 0.0 0.999969482421875 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 0.0 0.0 1.0 0.487287312746048 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 0.0 0.0 1.0 0.4824126362800598 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.0 0.0 1.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.0 0.0 0.999969482421875 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 0.0 0.0 1.0 0.47745370864868164 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.0 0.0 1.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 0.0 0.0 1.0 0.4824126362800598 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 0.0 0.0 1.0 0.47745370864868164 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.0 0.0 1.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.0 0.0 1.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 0.0 0.0 1.0 0.47272929549217224 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.0 0.0 1.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 0.0 0.0 1.0 0.47745370864868164 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 0.0 0.0 1.0 0.47272929549217224 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.0 0.0 1.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.0 0.0 1.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 0.0 0.0 1.0 0.46825069189071655 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.0 0.0 1.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 0.0 0.0 1.0 0.47272929549217224 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 0.0 0.0 1.0 0.46825069189071655 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.0 0.0 1.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.0 0.0 1.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 0.0 0.0 1.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.0 0.0 1.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 0.0 0.0 1.0 0.46825069189071655 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 0.0 0.0 1.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.0 0.0 1.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.0 0.0 1.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 0.21605446934700012 0.0 0.0 0.999969482421875 0.4600628614425659 0.3301432728767395 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.0 0.0 1.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 0.0 0.0 1.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 0.0 0.0 1.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.0 0.0 1.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 0.21605446934700012 0.0 0.0 0.999969482421875 0.4600628614425659 0.3301432728767395 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 0.0 0.0 1.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.0 0.0 0.999969482421875 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.0 0.0 1.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 0.0 0.0 1.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.0 0.0 0.999969482421875 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 0.0 0.0 1.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 0.0 0.0 1.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.0 0.0 0.999969482421875 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.0 0.0 0.999969482421875 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 0.21605446934700012 0.0 0.0 1.0 0.4497760236263275 0.31446272134780884 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.0 0.0 0.999969482421875 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 0.0 0.0 1.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 0.0 0.0 0.999969482421875 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.0 0.0 0.999969482421875 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 0.21605446934700012 0.0 0.0 1.0 0.4497760236263275 0.31446272134780884 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 0.0 0.0 0.999969482421875 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.0 0.0 0.999969482421875 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.0 0.0 0.999969482421875 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 0.0 0.0 1.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.0 0.0 0.999969482421875 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 0.0 0.0 0.999969482421875 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 0.0 0.0 1.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.0 0.0 1.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.0 0.0 0.999969482421875 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 0.21605446934700012 0.0 0.0 1.0 0.44192713499069214 0.3004010319709778 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.0 0.0 1.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 0.0 0.0 1.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 0.0 0.0 1.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.0 0.0 1.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 0.21605446934700012 0.0 0.0 1.0 0.44192713499069214 0.3004010319709778 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 0.0 0.0 1.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.0 0.0 1.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.0 0.0 1.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 0.0 0.0 0.999969482421875 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.0 0.0 1.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 0.0 0.0 1.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 0.0 0.0 0.999969482421875 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.0 0.0 1.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.0 0.0 1.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 0.0 0.0 1.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.0 0.0 1.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 0.0 0.0 0.999969482421875 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 0.0 0.0 1.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 0.21605446934700012 0.0 0.0 0.999969482421875 0.5175286531448364 0.2802373170852661 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.0 0.0 1.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 0.0 0.0 1.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.0 0.0 1.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 0.21605446934700012 0.0 0.0 0.999969482421875 0.5175286531448364 0.2802373170852661 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 0.0 0.0 1.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.0 0.0 1.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 0.0 0.0 1.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 0.0 0.0 1.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.0 0.0 1.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.0 0.0 1.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 0.0 0.0 1.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.0 0.0 1.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 0.0 0.0 1.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 0.0 0.0 1.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 0.21605446934700012 0.0 0.0 1.0 0.5095055103302002 0.2678421139717102 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.0 0.0 1.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 0.0 0.0 1.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.0 0.0 1.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 0.21605446934700012 0.0 0.0 1.0 0.5095055103302002 0.2678421139717102 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 0.0 0.0 1.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.0 0.0 1.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 0.0 0.0 1.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 0.0 0.0 1.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.0 0.0 1.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.0 0.0 1.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 0.0 0.0 1.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.0 0.0 1.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 0.0 0.0 1.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 0.0 0.0 1.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 0.21605446934700012 0.0 0.0 1.0 0.5033973455429077 0.2575761675834656 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.0 0.0 1.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 0.0 0.0 1.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.0 0.0 1.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 0.21605446934700012 0.0 0.0 1.0 0.5033973455429077 0.2575761675834656 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 0.0 0.0 1.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.0 0.0 1.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 0.0 0.0 1.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 0.0 0.0 1.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5004804134368896 0.2517651915550232 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.0 0.0 1.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 0.0 0.0 1.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.0 0.0 1.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5004804134368896 0.2517651915550232 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 0.0 0.0 1.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.0 0.0 1.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 0.0 0.0 1.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 0.0 0.0 1.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 0.21605446934700012 0.0 0.0 1.0 0.49845102429389954 0.24645698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.0 0.0 1.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 0.0 0.0 1.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.0 0.0 1.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 0.21605446934700012 0.0 0.0 1.0 0.49845102429389954 0.24645698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 0.0 0.0 1.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.0 0.0 1.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 0.0 0.0 1.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 0.0 0.0 1.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 0.21605446934700012 0.0 0.0 1.0 0.4968274235725403 0.24024468660354614 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.0 0.0 1.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 0.0 0.0 1.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.0 0.0 0.999969482421875 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 0.21605446934700012 0.0 0.0 1.0 0.4968274235725403 0.24024468660354614 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 0.0 0.0 0.999969482421875 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.0 0.0 0.999969482421875 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 0.0 0.0 1.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 0.0 0.0 0.999969482421875 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 0.21605446934700012 0.0 0.0 1.0 0.4955292344093323 0.23297131061553955 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.0 0.0 0.999969482421875 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 0.0 0.0 0.999969482421875 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.0 0.0 1.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 0.21605446934700012 0.0 0.0 1.0 0.4955292344093323 0.23297131061553955 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 0.0 0.0 1.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.0 0.0 1.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 0.0 0.0 0.999969482421875 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 0.0 0.0 1.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.0 0.0 0.999969482421875 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.0 0.0 1.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 0.0 0.0 1.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.0 0.0 0.999969482421875 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 0.0 0.0 1.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 0.0 0.0 1.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 0.21605446934700012 0.0 0.0 0.999969482421875 0.4942011833190918 0.2202945351600647 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.0 0.0 0.999969482421875 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 0.0 0.0 1.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 0.21605446934700012 0.0 0.0 0.999969482421875 0.4942011833190918 0.2202945351600647 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 0.21605446934700012 0.0 0.0 1.0 0.4244113266468048 0.23255091905593872 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 0.0 0.0 1.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 0.21605446934700012 0.0 0.0 1.0 0.4243272542953491 0.23172283172607422 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 0.21605446934700012 0.0 0.0 1.0 0.4244113266468048 0.23255091905593872 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 0.21605446934700012 0.0 0.0 1.0 0.4242281913757324 0.2307267189025879 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 0.21605446934700012 0.0 0.0 1.0 0.4243272542953491 0.23172283172607422 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 0.21605446934700012 0.0 0.0 1.0 0.4241137206554413 0.22956520318984985 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 0.21605446934700012 0.0 0.0 1.0 0.4242281913757324 0.2307267189025879 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 0.0 0.0 1.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 0.21605446934700012 0.0 0.0 1.0 0.4241137206554413 0.22956520318984985 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 0.0 0.0 1.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.0 0.0 1.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.0 0.0 0.999969482421875 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 0.21605446934700012 0.0 0.0 1.0 0.4238378405570984 0.2267565131187439 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.0 0.0 1.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 0.0 0.0 1.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 0.21605446934700012 0.0 0.0 0.999969482421875 0.423676073551178 0.22511571645736694 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.0 0.0 1.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 0.21605446934700012 0.0 0.0 1.0 0.4238378405570984 0.2267565131187439 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 0.0 0.0 1.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.0 0.0 1.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 0.21605446934700012 0.0 0.0 0.999969482421875 0.423676073551178 0.22511571645736694 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 0.0 0.0 1.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.0 0.0 1.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.0 0.0 1.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 0.21605446934700012 0.0 0.0 1.0 0.42330440878868103 0.22137945890426636 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.0 0.0 1.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 0.0 0.0 1.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 0.0 0.0 1.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.0 0.0 1.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 0.21605446934700012 0.0 0.0 1.0 0.42330440878868103 0.22137945890426636 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 0.0 0.0 1.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.0 0.0 1.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.0 0.0 1.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 0.21605446934700012 0.0 0.0 1.0 0.4228658974170685 0.21706622838974 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.0 0.0 1.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 0.0 0.0 1.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 0.21605446934700012 0.0 0.0 1.0 0.4226208031177521 0.214705228805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.0 0.0 1.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 0.21605446934700012 0.0 0.0 1.0 0.4228658974170685 0.21706622838974 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.40843620896339417 0.13705360889434814 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 0.21605446934700012 0.0 0.0 1.0 0.5012896656990051 0.17674368619918823 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 0.21605446934700012 0.0 0.0 1.0 0.4193791449069977 0.19080489873886108 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.40843620896339417 0.13705360889434814 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.5014961957931519 0.1221572756767273 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 0.21605446934700012 0.0 0.0 1.0 0.5012896656990051 0.17674368619918823 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 0.2160544991493225 0.0 0.0 1.0 0.45288121700286865 0.7265979051589966 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 0.21605446934700012 0.0 0.0 1.0 0.4990980625152588 0.7493226528167725 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 0.2160544991493225 0.0 0.0 1.0 0.45288121700286865 0.7265979051589966 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.42952170968055725 0.6872974038124084 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.531541109085083 0.6883732080459595 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.531541109085083 0.6883732080459595 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 0.0 1.0 -0.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.0 0.999969482421875 -0.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.9892269372940063 0.06616412848234177 0.13046662509441376 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 0.0 0.0 1.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 0.0 -1.0 -0.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 0.0 0.0 1.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 0.21605446934700012 0.0 0.0 1.0 0.4987790882587433 0.5032071471214294 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 0.0 0.0 1.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 0.0 0.0 1.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 0.21605446934700012 0.0 0.0 1.0 0.49877843260765076 0.49449795484542847 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 0.21605446934700012 0.0 0.0 1.0 0.4987790882587433 0.5032071471214294 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 0.0 0.0 1.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.0 0.0 1.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 0.21605446934700012 0.0 0.0 1.0 0.49877843260765076 0.49449795484542847 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 0.0 0.0 1.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.0 0.0 1.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 0.0 0.0 1.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 0.0 0.0 1.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 0.21605446934700012 0.0 0.0 1.0 0.4988292455673218 0.47867339849472046 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.0 0.0 1.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 0.0 0.0 1.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.0 0.0 1.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 0.21605446934700012 0.0 0.0 1.0 0.4988292455673218 0.47867339849472046 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 0.0 0.0 1.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.0 0.0 1.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 0.0 0.0 1.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 0.0 0.0 1.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.0 0.0 1.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.0 0.0 1.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 0.0 0.0 1.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.0 0.0 1.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 0.0 0.0 1.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 0.0 0.0 1.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 0.21605446934700012 0.0 0.0 1.0 0.4990389347076416 0.45932698249816895 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.0 0.0 1.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 0.0 0.0 1.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.0 0.0 1.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 0.21605446934700012 0.0 0.0 1.0 0.4990389347076416 0.45932698249816895 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 0.0 0.0 1.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.0 0.0 1.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 0.0 0.0 1.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 0.0 0.0 1.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.0 0.0 0.999969482421875 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.0 0.0 1.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 0.0 0.0 1.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.0 0.0 0.999969482421875 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 0.0 0.0 1.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 0.0 0.0 1.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 0.21605446934700012 0.0 0.0 1.0 0.49941331148147583 0.4456617832183838 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.0 0.0 0.999969482421875 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 0.0 0.0 1.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 0.21605446934700012 0.0 0.0 1.0 0.4995746612548828 0.4424140453338623 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 0.21605446934700012 0.0 0.0 1.0 0.49941331148147583 0.4456617832183838 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 0.0 0.0 1.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.0 0.0 1.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 0.21605446934700012 0.0 0.0 1.0 0.4995746612548828 0.4424140453338623 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.0 0.0 1.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 0.0 0.0 1.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 0.21605446934700012 0.0 0.0 0.999969482421875 0.4999516010284424 0.43790704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.0 0.0 1.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 0.21605446934700012 0.0 0.0 1.0 0.5001802444458008 0.4363413453102112 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 0.21605446934700012 0.0 0.0 0.999969482421875 0.4999516010284424 0.43790704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 0.21605446934700012 0.0 0.0 1.0 0.5004534125328064 0.43482106924057007 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 0.21605446934700012 0.0 0.0 1.0 0.5001802444458008 0.4363413453102112 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.0 0.0 1.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 0.21605446934700012 0.0 0.0 1.0 0.5004534125328064 0.43482106924057007 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.0 0.0 1.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 0.0 0.0 1.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 0.21605446934700012 0.0 0.0 1.0 0.5011327862739563 0.43191802501678467 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.0 0.0 1.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 0.21605446934700012 0.0 0.0 1.0 0.5015394687652588 0.43053603172302246 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 0.21605446934700012 0.0 0.0 1.0 0.5011327862739563 0.43191802501678467 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 0.21605446934700012 0.0 0.0 1.0 0.5019909143447876 0.4292007088661194 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 0.21605446934700012 0.0 0.0 1.0 0.5015394687652588 0.43053603172302246 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 0.21605446934700012 0.0 0.0 1.0 0.5024871230125427 0.42791253328323364 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 0.21605446934700012 0.0 0.0 1.0 0.5019909143447876 0.4292007088661194 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 0.21605446934700012 0.0 0.0 1.0 0.537887454032898 0.42787182331085205 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 0.21605446934700012 0.0 0.0 1.0 0.5403105616569519 0.4299470782279968 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.0 0.0 0.999969482421875 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 0.21605446934700012 0.0 0.0 1.0 0.5024871230125427 0.42791253328323364 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.0 0.0 0.999969482421875 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 0.0 0.0 1.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 0.21605446934700012 0.0 0.0 1.0 0.5036134123802185 0.4254789352416992 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.0 0.0 0.999969482421875 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 0.21605446934700012 0.0 0.0 0.999969482421875 0.5355287790298462 0.42596107721328735 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 0.21605446934700012 0.0 0.0 1.0 0.537887454032898 0.42787182331085205 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 0.21605446934700012 0.0 0.0 1.0 0.5042434334754944 0.42433422803878784 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 0.21605446934700012 0.0 0.0 1.0 0.5036134123802185 0.4254789352416992 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 0.21605446934700012 0.0 0.0 1.0 0.5049180388450623 0.4232381582260132 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 0.21605446934700012 0.0 0.0 1.0 0.5042434334754944 0.42433422803878784 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 0.21605446934700012 0.0 0.0 0.999969482421875 0.5332391262054443 0.42421799898147583 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 0.21605446934700012 0.0 0.0 0.999969482421875 0.5355287790298462 0.42596107721328735 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 0.21605446934700012 0.0 0.0 1.0 0.5056371688842773 0.4221910834312439 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 0.21605446934700012 0.0 0.0 1.0 0.5049180388450623 0.4232381582260132 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 0.21605446934700012 0.0 0.0 1.0 0.5310229659080505 0.4226453900337219 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 0.21605446934700012 0.0 0.0 0.999969482421875 0.5332391262054443 0.42421799898147583 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.0 0.0 0.999969482421875 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 0.21605446934700012 0.0 0.0 1.0 0.5056371688842773 0.4221910834312439 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 0.21605446934700012 0.0 0.0 1.0 0.5288844108581543 0.4212455749511719 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 0.21605446934700012 0.0 0.0 1.0 0.5310229659080505 0.4226453900337219 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.0 0.0 0.999969482421875 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 0.0 0.0 0.999969482421875 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5071730017662048 0.42032450437545776 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.0 0.0 0.999969482421875 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 0.21605446934700012 0.0 0.0 1.0 0.5079805254936218 0.4195253252983093 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5071730017662048 0.42032450437545776 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 0.21605446934700012 0.0 0.0 1.0 0.5268273949623108 0.42002010345458984 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 0.21605446934700012 0.0 0.0 1.0 0.5288844108581543 0.4212455749511719 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 0.21605446934700012 0.0 0.0 0.999969482421875 0.5088142156600952 0.4188156723976135 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 0.21605446934700012 0.0 0.0 1.0 0.5079805254936218 0.4195253252983093 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 0.21605446934700012 0.0 0.0 1.0 0.5248557925224304 0.41897040605545044 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 0.21605446934700012 0.0 0.0 1.0 0.5268273949623108 0.42002010345458984 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 0.21605446934700012 0.0 0.0 1.0 0.509673535823822 0.41819584369659424 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 0.21605446934700012 0.0 0.0 0.999969482421875 0.5088142156600952 0.4188156723976135 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 0.21605446934700012 0.0 0.0 1.0 0.5105586647987366 0.41766583919525146 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 0.21605446934700012 0.0 0.0 1.0 0.509673535823822 0.41819584369659424 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 0.21605446934700012 0.0 0.0 1.0 0.5229727029800415 0.41809719800949097 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 0.21605446934700012 0.0 0.0 1.0 0.5248557925224304 0.41897040605545044 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.511468768119812 0.41722571849823 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 0.21605446934700012 0.0 0.0 1.0 0.5105586647987366 0.41766583919525146 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 0.21605446934700012 0.0 0.0 1.0 0.5211812257766724 0.4174010157585144 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 0.21605446934700012 0.0 0.0 1.0 0.5229727029800415 0.41809719800949097 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.5124037265777588 0.4168756604194641 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.511468768119812 0.41722571849823 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 0.21605446934700012 0.0 0.0 1.0 0.5194841623306274 0.41688209772109985 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 0.21605446934700012 0.0 0.0 1.0 0.5211812257766724 0.4174010157585144 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5133629441261292 0.4166155457496643 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.5124037265777588 0.4168756604194641 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.514346182346344 0.4164454936981201 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5133629441261292 0.4166155457496643 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 0.21605446934700012 0.0 0.0 1.0 0.5178840756416321 0.41654032468795776 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 0.21605446934700012 0.0 0.0 1.0 0.5194841623306274 0.41688209772109985 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 0.21605446934700012 0.0 -9.155552834272385e-05 0.999969482421875 0.5153530836105347 0.41636550426483154 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.514346182346344 0.4164454936981201 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 0.0 0.0 1.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 0.21605446934700012 0.0 0.0 1.0 0.5178840756416321 0.41654032468795776 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 0.0 0.0 1.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 0.21605446934700012 0.0 -9.155552834272385e-05 0.999969482421875 0.5153530836105347 0.41636550426483154 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 0.0 0.0 1.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 0.21605446934700012 0.0 0.0 1.0 0.43650829792022705 0.4166916012763977 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 0.0 0.0 1.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 0.21605446934700012 0.0 0.0 1.0 0.4365590512752533 0.4122923016548157 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 0.21605446934700012 0.0 0.0 1.0 0.43650829792022705 0.4166916012763977 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 0.21605446934700012 0.0 0.0 1.0 0.43666714429855347 0.4084749221801758 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 0.21605446934700012 0.0 0.0 1.0 0.4365590512752533 0.4122923016548157 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 0.21605446934700012 0.0 0.0 1.0 0.43683189153671265 0.40360039472579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 0.21605446934700012 0.0 0.0 1.0 0.43666714429855347 0.4084749221801758 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 0.21605446934700012 0.0 0.0 1.0 0.4370587468147278 0.39888298511505127 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 0.21605446934700012 0.0 0.0 1.0 0.43683189153671265 0.40360039472579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 0.21605446934700012 0.0 0.0 1.0 0.4373483657836914 0.39432311058044434 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 0.21605446934700012 0.0 0.0 1.0 0.4370587468147278 0.39888298511505127 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 0.21605446934700012 0.0 0.0 0.999969482421875 0.4377015233039856 0.38992077112197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 0.21605446934700012 0.0 0.0 1.0 0.4373483657836914 0.39432311058044434 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 0.21605446934700012 0.0 0.0 0.999969482421875 0.4381193518638611 0.38567590713500977 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 0.21605446934700012 0.0 0.0 0.999969482421875 0.4377015233039856 0.38992077112197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 0.21605446934700012 0.0 0.0 1.0 0.4386027455329895 0.3815883994102478 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 0.21605446934700012 0.0 0.0 0.999969482421875 0.4381193518638611 0.38567590713500977 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 0.21605446934700012 0.0 0.0 1.0 0.43915221095085144 0.37765800952911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 0.21605446934700012 0.0 0.0 1.0 0.4386027455329895 0.3815883994102478 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 0.21605446934700012 0.0 0.0 1.0 0.43976858258247375 0.3738844394683838 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 0.21605446934700012 0.0 0.0 1.0 0.43915221095085144 0.37765800952911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 0.21605446934700012 0.0 0.0 0.999969482421875 0.4404529929161072 0.3702673316001892 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 0.21605446934700012 0.0 0.0 1.0 0.43976858258247375 0.3738844394683838 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 0.21605446934700012 0.0 0.0 1.0 0.44120627641677856 0.3668063282966614 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 0.21605446934700012 0.0 0.0 0.999969482421875 0.4404529929161072 0.3702673316001892 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 0.21605446934700012 0.0 0.0 1.0 0.4420292377471924 0.36350131034851074 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 0.21605446934700012 0.0 0.0 1.0 0.44120627641677856 0.3668063282966614 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 0.21605446934700012 0.0 0.0 1.0 0.44292232394218445 0.360352098941803 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 0.21605446934700012 0.0 0.0 1.0 0.4420292377471924 0.36350131034851074 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 0.21605446934700012 0.0 0.0 1.0 0.44390809535980225 0.35731375217437744 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 0.21605446934700012 0.0 0.0 1.0 0.44292232394218445 0.360352098941803 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 0.21605446934700012 0.0 0.0 1.0 0.4450095295906067 0.35434210300445557 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 0.21605446934700012 0.0 0.0 1.0 0.44390809535980225 0.35731375217437744 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 0.21605446934700012 0.0 0.0 1.0 0.44622862339019775 0.35143786668777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 0.21605446934700012 0.0 0.0 1.0 0.4450095295906067 0.35434210300445557 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 0.21605446934700012 0.0 0.0 1.0 0.44756728410720825 0.3486024737358093 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 0.21605446934700012 0.0 0.0 1.0 0.44622862339019775 0.35143786668777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 0.21605445444583893 0.0 0.0 1.0 0.4490269422531128 0.34583741426467896 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 0.21605446934700012 0.0 0.0 1.0 0.44756728410720825 0.3486024737358093 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 0.21605445444583893 0.0 0.0 1.0 0.4506097733974457 0.34314483404159546 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 0.21605445444583893 0.0 0.0 1.0 0.4490269422531128 0.34583741426467896 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 0.21605445444583893 0.0 0.0 1.0 0.4523172080516815 0.3405272960662842 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 0.21605445444583893 0.0 0.0 1.0 0.4506097733974457 0.34314483404159546 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 0.21605445444583893 0.0 0.0 1.0 0.45415133237838745 0.3379872441291809 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 0.21605445444583893 0.0 0.0 1.0 0.4523172080516815 0.3405272960662842 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 0.0 0.0 0.999969482421875 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 0.21605445444583893 0.0 0.0 1.0 0.45415133237838745 0.3379872441291809 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 0.0 0.0 0.999969482421875 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.0 0.0 1.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.0 0.0 0.999969482421875 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 0.0 0.0 1.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.0 0.0 1.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 0.0 0.0 0.999969482421875 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 0.0 0.0 1.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.0 0.0 1.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.0 0.0 1.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 0.21605445444583893 0.0 0.0 1.0 0.46042805910110474 0.3308688998222351 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.0 0.0 1.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 0.0 0.0 1.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 0.0 0.0 0.999969482421875 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.0 0.0 1.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 0.21605445444583893 0.0 0.0 1.0 0.46042805910110474 0.3308688998222351 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 0.0 0.0 0.999969482421875 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.0 0.0 1.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.0 0.0 1.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 0.0 0.0 1.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.0 0.0 1.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 0.0 0.0 0.999969482421875 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 0.0 0.0 1.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.0 0.0 1.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.0 0.0 1.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 0.0 0.0 1.0 0.4677753150463104 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.0 0.0 1.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 0.0 0.0 1.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 0.0 0.0 1.0 0.4677753150463104 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.0 0.0 1.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.0 0.0 1.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 0.21605445444583893 0.0 0.0 1.0 0.4703820049762726 0.32301509380340576 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.0 0.0 1.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 0.0 0.0 1.0 0.4677753150463104 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 0.0 0.0 0.999969482421875 0.4730609655380249 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.0 0.0 1.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 0.21605445444583893 0.0 0.0 1.0 0.4703820049762726 0.32301509380340576 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 0.0 0.0 0.999969482421875 0.4730609655380249 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.0 0.0 1.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.0 0.0 1.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4758097231388092 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.0 0.0 1.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 0.0 0.0 0.999969482421875 0.4730609655380249 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4758097231388092 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.0 0.0 1.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.0 0.0 1.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.47862690687179565 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.0 0.0 1.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4758097231388092 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.47862690687179565 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.0 0.0 1.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.0 0.0 1.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.48150941729545593 0.3179537057876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.0 0.0 1.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.47862690687179565 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.48150941729545593 0.3179537057876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.0 0.0 1.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 0.21605445444583893 0.0 0.0 1.0 0.48445528745651245 0.31715285778045654 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.48150941729545593 0.3179537057876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 0.0 0.0 1.0 0.48746082186698914 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 0.21605445444583893 0.0 0.0 1.0 0.48445528745651245 0.31715285778045654 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 0.0 0.0 1.0 0.48746082186698914 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.0 0.0 1.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 0.0 0.0 1.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.0 0.0 1.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 0.0 0.0 1.0 0.48746082186698914 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 0.0 0.0 1.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.0 0.0 1.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.0 0.0 1.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 0.21605445444583893 0.0 0.0 1.0 0.4936390817165375 0.31591135263442993 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.0 0.0 1.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 0.0 0.0 1.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 0.21605445444583893 0.0 0.0 1.0 0.4936390817165375 0.31591135263442993 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 0.21605445444583893 0.0 0.0002441480755805969 0.999969482421875 0.49680399894714355 0.3158932328224182 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.0 0.0 1.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.4772617220878601 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 0.21605448424816132 0.0 0.0 0.999969482421875 0.4912264943122864 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 0.21605448424816132 0.0 0.0 1.0 0.4844118058681488 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.4772617220878601 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 0.21605448424816132 0.0 0.0 0.999969482421875 0.4912264943122864 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 0.0 0.0 0.999969482421875 0.4704526364803314 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.4772617220878601 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 0.0 0.0 0.999969482421875 0.4704526364803314 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 0.0 0.0 0.999969482421875 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 0.0 0.0 0.999969482421875 0.4704526364803314 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 0.0 0.0 0.999969482421875 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 0.0 0.0 0.999969482421875 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.0 0.0 0.999969482421875 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.0 0.0 0.999969482421875 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.0 0.0 1.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.0 0.0 0.999969482421875 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.0 0.0 1.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.0 0.0 1.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 0.21605448424816132 0.0 0.0 1.0 0.5298388004302979 0.6121903657913208 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 0.21605448424816132 0.0 0.0 1.0 0.5298388004302979 0.6121903657913208 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 0.0 0.0 1.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 0.0 0.0 1.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 0.0 0.0 1.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 0.0 0.0 1.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 0.0 0.0 1.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 0.0 0.0 1.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 0.21605446934700012 0.0 0.0 1.0 0.5563123226165771 0.5777289867401123 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 0.21605446934700012 0.0 0.0 1.0 0.5563123226165771 0.5777289867401123 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.0 0.0 1.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.0 0.0 1.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.0 0.0 1.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 0.0 0.0 0.999969482421875 0.4844020903110504 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 0.0 0.0 0.999969482421875 0.4844020903110504 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.4873412549495697 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.4873412549495697 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.47720322012901306 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.47720322012901306 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 0.21605446934700012 0.0 0.00039674062281847 0.999969482421875 0.480711966753006 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 0.21605446934700012 0.0 0.00039674062281847 0.999969482421875 0.480711966753006 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 0.0 0.0 0.999969482421875 0.4844020903110504 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 0.21605446934700012 0.0 -0.0005493331700563431 0.999969482421875 0.49016404151916504 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.4873412549495697 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 0.21605446934700012 0.0 0.0 0.999969482421875 0.473876416683197 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.47720322012901306 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 0.21605446934700012 0.0 0.0 1.0 0.492870569229126 0.5609473586082458 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 0.21605446934700012 0.0 -0.0005493331700563431 0.999969482421875 0.49016404151916504 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.4707322120666504 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 0.21605446934700012 0.0 0.0 0.999969482421875 0.473876416683197 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 0.21605446934700012 0.0 0.0 1.0 0.4954600930213928 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 0.21605446934700012 0.0 0.0 1.0 0.492870569229126 0.5609473586082458 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 0.21605446934700012 0.0 0.0 1.0 0.46776947379112244 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.4707322120666504 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.497933030128479 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 0.21605446934700012 0.0 0.0 1.0 0.4954600930213928 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 0.21605446934700012 0.0 0.0 1.0 0.4649874269962311 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 0.21605446934700012 0.0 0.0 1.0 0.46776947379112244 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 0.21605446934700012 0.0 0.0 1.0 0.5002896785736084 0.5582361221313477 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.497933030128479 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 0.21605446934700012 0.0 0.0 1.0 0.46238431334495544 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 0.21605446934700012 0.0 0.0 1.0 0.4649874269962311 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 0.21605446934700012 0.0 0.0 1.0 0.5025306344032288 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 0.21605446934700012 0.0 0.0 1.0 0.5002896785736084 0.5582361221313477 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 0.21605446934700012 0.0 0.0 1.0 0.4599589407444 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 0.21605446934700012 0.0 0.0 1.0 0.46238431334495544 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 0.0 0.0 0.999969482421875 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 0.21605446934700012 0.0 0.0 1.0 0.5025306344032288 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 0.0 0.0 0.999969482421875 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 0.21605446934700012 0.0 0.0 1.0 0.4599589407444 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 0.21605446934700012 0.0 0.0 0.999969482421875 0.5066676139831543 0.553982675075531 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 0.0 0.0 0.999969482421875 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 0.21605446934700012 0.0 0.0 1.0 0.4556320011615753 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 0.21605446934700012 0.0 0.0 1.0 0.5085653066635132 0.5522264838218689 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 0.21605446934700012 0.0 0.0 0.999969482421875 0.5066676139831543 0.553982675075531 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 0.21605446934700012 0.0 0.0 1.0 0.4537268579006195 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 0.21605446934700012 0.0 0.0 1.0 0.4556320011615753 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 0.21605446934700012 0.0 0.0 1.0 0.5103503465652466 0.5503014326095581 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 0.21605446934700012 0.0 0.0 1.0 0.5085653066635132 0.5522264838218689 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 0.21605446934700012 0.0 0.0 1.0 0.45199093222618103 0.5508368015289307 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 0.21605446934700012 0.0 0.0 1.0 0.4537268579006195 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 0.21605446934700012 0.0 0.0 1.0 0.5120236873626709 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 0.21605446934700012 0.0 0.0 1.0 0.5103503465652466 0.5503014326095581 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 0.21605446934700012 0.0 0.0 1.0 0.4509287476539612 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 0.21605446934700012 0.0 0.0 1.0 0.45199093222618103 0.5508368015289307 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 0.0 0.0 1.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 0.21605446934700012 0.0 0.0 1.0 0.5120236873626709 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 0.0 0.0 1.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 0.21605446934700012 0.0 0.0 1.0 0.4509287476539612 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 0.21605446934700012 0.0 0.0 1.0 0.44905880093574524 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 0.21605446934700012 0.0 0.0 1.0 0.5150936245918274 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 0.0 0.0 1.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 0.21605446934700012 0.0 0.0 1.0 0.44824984669685364 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 0.21605446934700012 0.0 0.0 1.0 0.44905880093574524 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 0.21605446934700012 0.0 0.0 1.0 0.5165054798126221 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 0.21605446934700012 0.0 0.0 1.0 0.5150936245918274 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 0.21605446934700012 0.0 0.0 0.999969482421875 0.4475242495536804 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 0.21605446934700012 0.0 0.0 1.0 0.44824984669685364 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 0.0 0.0 1.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 0.21605446934700012 0.0 0.0 1.0 0.5165054798126221 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 0.21605446934700012 0.0 0.0 0.999969482421875 0.446882039308548 0.5414314270019531 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 0.21605446934700012 0.0 0.0 0.999969482421875 0.4475242495536804 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 0.21605446934700012 0.0 0.0 0.999969482421875 0.446882039308548 0.5414314270019531 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 0.0 0.0 1.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 0.0 0.0 0.999969482421875 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 0.21605446934700012 0.0 0.0 0.999969482421875 0.5190862417221069 0.5353896021842957 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 0.0 0.0 1.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 0.21605446934700012 0.0 0.0 1.0 0.4458465576171875 0.5377424359321594 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 0.21605446934700012 0.0 0.0 1.0 0.5202562808990479 0.532355546951294 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 0.21605446934700012 0.0 0.0 0.999969482421875 0.5190862417221069 0.5353896021842957 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 0.21605446934700012 0.0 0.0 1.0 0.44545286893844604 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 0.21605446934700012 0.0 0.0 1.0 0.4458465576171875 0.5377424359321594 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 0.21605446934700012 0.0 0.0 1.0 0.44514212012290955 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 0.21605446934700012 0.0 0.0 1.0 0.44545286893844604 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 0.21605446934700012 0.0 0.0 1.0 0.5213466882705688 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 0.21605446934700012 0.0 0.0 1.0 0.5202562808990479 0.532355546951294 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 0.21605446934700012 0.0 0.0 1.0 0.44514212012290955 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 0.21605446934700012 0.0 0.0 1.0 0.5213466882705688 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 0.21605446934700012 0.0 0.0 0.999969482421875 0.5223576426506042 0.5258004665374756 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 0.21605446934700012 0.0 0.0 0.999969482421875 0.5223576426506042 0.5258004665374756 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 0.21605446934700012 0.0 0.0 1.0 0.5232900381088257 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 0.21605446934700012 0.0 0.0 1.0 0.5232900381088257 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 0.21605446934700012 0.0 0.0 1.0 0.5241435170173645 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 0.21605446934700012 0.0 0.0 1.0 0.5241435170173645 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 0.21605446934700012 0.0 0.0 1.0 0.5249184966087341 0.5147104263305664 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 0.21605446934700012 0.0 0.0 1.0 0.5249184966087341 0.5147104263305664 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 0.21605446934700012 0.0 0.0 1.0 0.5256151556968689 0.5106664299964905 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.0 0.0 1.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 0.21605446934700012 0.0 0.0 1.0 0.4447696805000305 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 0.21605446934700012 0.0 0.0 0.999969482421875 0.44472062587738037 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 0.21605446934700012 0.0 0.0 1.0 0.4447696805000305 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 0.21605446934700012 0.0 0.0 1.0 0.4447501301765442 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 0.21605446934700012 0.0 0.0 0.999969482421875 0.44472062587738037 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 0.21605446934700012 0.0 0.0 1.0 0.4447501301765442 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 0.21605446934700012 0.0 0.0 1.0 0.44504600763320923 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 0.21605446934700012 0.0 0.0 1.0 0.44531333446502686 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 0.21605446934700012 0.0 0.0 1.0 0.44504600763320923 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 0.21605446934700012 0.0 0.0 0.999969482421875 0.44566109776496887 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 0.21605446934700012 0.0 0.0 1.0 0.44531333446502686 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 0.21605446934700012 0.0 0.0 1.0 0.4460899531841278 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 0.21605446934700012 0.0 0.0 0.999969482421875 0.44566109776496887 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 0.21605446934700012 0.0 0.0 1.0 0.4460899531841278 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 0.21605446934700012 0.0 0.0 1.0 0.44719308614730835 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 0.21605446934700012 0.0 0.0 1.0 0.4478687345981598 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 0.21605446934700012 0.0 0.0 1.0 0.44719308614730835 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 0.21605446934700012 0.0 0.0 1.0 0.44862794876098633 0.5109697580337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 0.21605446934700012 0.0 0.0 1.0 0.4478687345981598 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 0.21605446934700012 0.0 0.0 1.0 0.44947174191474915 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 0.21605446934700012 0.0 0.0 1.0 0.44862794876098633 0.5109697580337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 0.21605446934700012 0.0 0.0 1.0 0.45094093680381775 0.5075438618659973 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 0.21605446934700012 0.0 0.0 1.0 0.44947174191474915 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 0.21605446934700012 0.0 0.0 0.999969482421875 0.45294734835624695 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 0.21605446934700012 0.0 0.0 1.0 0.45094093680381775 0.5075438618659973 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 0.21605446934700012 0.0 0.0 0.999969482421875 0.45294734835624695 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 0.21605446934700012 0.0 0.0 1.0 0.4586208760738373 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 0.21605446934700012 0.0 0.0 1.0 0.4623155891895294 0.49790245294570923 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 0.21605446934700012 0.0 0.0 1.0 0.4586208760738373 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 0.21605446934700012 0.0 0.0 1.0 0.46660125255584717 0.49503183364868164 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 0.21605446934700012 0.0 0.0 1.0 0.4623155891895294 0.49790245294570923 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.0 0.0 1.0 0.47149011492729187 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 0.21605446934700012 0.0 0.0 1.0 0.46660125255584717 0.49503183364868164 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.0 0.0 1.0 0.47149011492729187 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 0.0 0.0 0.999969482421875 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 0.21605446934700012 0.0 0.0 1.0 0.4769904911518097 0.48872560262680054 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.0 0.0 1.0 0.47149011492729187 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 0.21605446934700012 0.0 0.0 1.0 0.48310548067092896 0.4853035807609558 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 0.21605446934700012 0.0 0.0 1.0 0.4769904911518097 0.48872560262680054 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 0.21605446934700012 0.0 0.0 1.0 0.48310548067092896 0.4853035807609558 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 0.21605446934700012 0.0 0.0 0.999969482421875 0.4971461296081543 0.4780082702636719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 0.21605446934700012 0.0 0.0 1.0 0.5050248503684998 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 0.21605446934700012 0.0 0.0 0.999969482421875 0.4971461296081543 0.4780082702636719 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 0.21605446934700012 0.0 0.0 1.0 0.5050248503684998 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 0.21605446934700012 0.0 0.0 1.0 0.520378828048706 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 0.21605446934700012 0.0 0.0 1.0 0.520378828048706 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 0.21605446934700012 0.0 0.0 1.0 0.5337929725646973 0.45867598056793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 0.21605446934700012 0.0 0.0 1.0 0.5337929725646973 0.45867598056793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 0.21605446934700012 0.0 0.0 1.0 0.5452778935432434 0.45086079835891724 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 0.21605446934700012 0.0 0.0 1.0 0.5452778935432434 0.45086079835891724 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 0.21605446934700012 0.0 0.0 1.0 0.5549329519271851 0.44296425580978394 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.0 0.0 1.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 0.21605446934700012 0.0 0.0 1.0 0.5549329519271851 0.44296425580978394 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.0 0.0 1.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.0 0.0 1.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 0.0 0.0 0.999969482421875 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 0.0 0.0 0.999969482421875 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 0.21605446934700012 0.0 0.0 1.0 0.5662946105003357 0.43078118562698364 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 0.0 0.0 0.999969482421875 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 0.21605446934700012 0.0 0.0 1.0 0.5662946105003357 0.43078118562698364 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 0.0 0.0 1.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 0.0 0.0 0.999969482421875 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 0.0 0.0 1.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.0 0.0 0.999969482421875 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.0 0.0 0.999969482421875 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 0.0 0.0 1.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.0 0.0 0.999969482421875 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 0.21605446934700012 0.0 0.0 1.0 0.4191212058067322 0.41234201192855835 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 0.21605446934700012 0.0 0.0 1.0 0.4191212058067322 0.41234201192855835 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 0.0 0.0 0.999969482421875 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 0.0 0.0 0.999969482421875 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.0 0.0 1.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.0 0.0 1.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 0.0 0.0 0.999969482421875 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.0 0.0 1.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 0.21605446934700012 0.0 0.0 0.999969482421875 0.44204047322273254 0.38775986433029175 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 0.21605446934700012 0.0 0.0 0.999969482421875 0.44204047322273254 0.38775986433029175 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 0.0 0.0 0.999969482421875 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 0.0 0.0 0.999969482421875 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 0.21605446934700012 0.0 0.0 1.0 0.46977055072784424 0.3677605390548706 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 0.0 0.0 0.999969482421875 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 0.0 0.0 0.999969482421875 0.4811851382255554 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 0.21605446934700012 0.0 0.0 1.0 0.46977055072784424 0.3677605390548706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 0.0 0.0 0.999969482421875 0.4811851382255554 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 0.21605446934700012 0.0 0.0 1.0 0.4936075210571289 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 0.0 0.0 0.999969482421875 0.4811851382255554 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 0.0 0.0 1.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 0.21605446934700012 0.0 0.0 1.0 0.4936075210571289 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 0.0 0.0 1.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 0.21605446934700012 0.0 0.0 1.0 0.5097460150718689 0.3499676585197449 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 0.0 0.0 1.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 0.21605446934700012 0.0 0.0 0.999969482421875 0.512410044670105 0.34898412227630615 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 0.21605446934700012 0.0 0.0 1.0 0.5097460150718689 0.3499676585197449 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 0.21605446934700012 0.0 0.0 0.999969482421875 0.5148946046829224 0.34800630807876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 0.21605446934700012 0.0 0.0 0.999969482421875 0.512410044670105 0.34898412227630615 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 0.21605446934700012 0.0 0.0 0.999969482421875 0.5148946046829224 0.34800630807876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 0.21605446934700012 0.0 0.0 1.0 0.5193288922309875 0.3460422158241272 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 0.21605446934700012 0.0 0.0 1.0 0.5212814807891846 0.34504401683807373 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 0.21605446934700012 0.0 0.0 1.0 0.5193288922309875 0.3460422158241272 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 0.21605446934700012 0.0 0.0 1.0 0.5230599045753479 0.3440280556678772 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 0.21605446934700012 0.0 0.0 1.0 0.5212814807891846 0.34504401683807373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 0.21605446934700012 0.0 0.0 1.0 0.5246654152870178 0.34298932552337646 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 0.21605446934700012 0.0 0.0 1.0 0.5230599045753479 0.3440280556678772 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 0.21605446934700012 0.0 0.0 0.999969482421875 0.5260999202728271 0.34192365407943726 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 0.21605446934700012 0.0 0.0 1.0 0.5246654152870178 0.34298932552337646 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 0.0 0.0 0.999969482421875 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 0.21605446934700012 0.0 0.0 0.999969482421875 0.5260999202728271 0.34192365407943726 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 0.0 0.0 0.999969482421875 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 0.21605446934700012 0.0 0.0 1.0 0.528460681438446 0.3396955132484436 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 0.0 0.0 0.999969482421875 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 0.21605446934700012 0.0 0.0 0.999969482421875 0.5293893814086914 0.33852624893188477 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 0.21605446934700012 0.0 0.0 1.0 0.528460681438446 0.3396955132484436 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 0.21605446934700012 0.0 0.0 1.0 0.5301671624183655 0.3372293710708618 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 0.21605446934700012 0.0 0.0 0.999969482421875 0.5293893814086914 0.33852624893188477 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 0.0 0.0 1.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 0.21605446934700012 0.0 0.0 1.0 0.4319748282432556 0.3392902612686157 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 0.21605446934700012 0.0 0.0 1.0 0.4315911829471588 0.34482574462890625 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 0.21605446934700012 0.0 0.0 0.999969482421875 0.5308826565742493 0.33586663007736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 0.21605446934700012 0.0 0.0 1.0 0.5301671624183655 0.3372293710708618 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 0.21605446934700012 0.0 0.0 1.0 0.5315366387367249 0.3344380259513855 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 0.21605446934700012 0.0 0.0 0.999969482421875 0.5308826565742493 0.33586663007736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 0.21605446934700012 0.0 0.0 1.0 0.5315366387367249 0.3344380259513855 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 0.0 0.0 1.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 0.21605446934700012 0.0 0.0 1.0 0.4324910044670105 0.3339676856994629 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 0.21605446934700012 0.0 0.0 1.0 0.4319748282432556 0.3392902612686157 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 0.21605446934700012 0.0 0.0 0.999969482421875 0.5326599478721619 0.3313811421394348 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 0.21605446934700012 0.0 0.0 1.0 0.5331296324729919 0.3297526240348816 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 0.21605446934700012 0.0 0.0 0.999969482421875 0.5326599478721619 0.3313811421394348 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 0.21605446934700012 0.0 0.0 1.0 0.5335382223129272 0.3280572295188904 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 0.21605446934700012 0.0 0.0 1.0 0.5331296324729919 0.3297526240348816 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 0.0 0.0 1.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 0.21605446934700012 0.0 0.0 1.0 0.4331422448158264 0.3288542628288269 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 0.21605446934700012 0.0 0.0 1.0 0.4324910044670105 0.3339676856994629 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 0.21605446934700012 0.0 0.0 0.999969482421875 0.5338857173919678 0.3262949585914612 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 0.21605446934700012 0.0 0.0 1.0 0.5335382223129272 0.3280572295188904 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 0.21605446934700012 0.0 0.0 1.0 0.5341720581054688 0.3244657516479492 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 0.21605446934700012 0.0 0.0 0.999969482421875 0.5338857173919678 0.3262949585914612 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 0.21605446934700012 0.0 0.0 1.0 0.5341720581054688 0.3244657516479492 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.0 0.0 1.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 0.0 0.0 1.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 0.21605446934700012 0.0 0.0 1.0 0.4331422448158264 0.3288542628288269 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 0.21605446934700012 0.0 0.0 1.0 0.534561038017273 0.3206070065498352 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 0.0 0.0 1.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 0.21605446934700012 0.0 0.0 1.0 0.534663200378418 0.31857776641845703 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 0.21605446934700012 0.0 0.0 1.0 0.534561038017273 0.3206070065498352 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 0.21605446934700012 0.0 0.0 1.0 0.43486201763153076 0.3192406892776489 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 0.21605446934700012 0.0 0.0 1.0 0.5347064137458801 0.3155938982963562 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 0.21605446934700012 0.0 0.0 1.0 0.534663200378418 0.31857776641845703 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 0.21605446934700012 0.0 0.0 1.0 0.5347064137458801 0.3155938982963562 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 0.21605446934700012 0.0 0.0 1.0 0.43486201763153076 0.3192406892776489 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 0.21605446934700012 0.0 0.0 1.0 0.5344240665435791 0.30988991260528564 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 0.0 0.0 0.999969482421875 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 0.0 0.0 0.999969482421875 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 0.21605446934700012 0.0 0.0 1.0 0.4371563494205475 0.3104267716407776 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 0.21605446934700012 0.0 0.0 1.0 0.534095287322998 0.30716514587402344 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 0.21605446934700012 0.0 0.0 1.0 0.5344240665435791 0.30988991260528564 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 0.0 0.0 0.999969482421875 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 0.21605446934700012 0.0 0.0 1.0 0.534095287322998 0.30716514587402344 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 0.0 0.0 0.999969482421875 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 0.21605446934700012 0.0 0.0 1.0 0.4371563494205475 0.3104267716407776 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 0.0 0.0 0.999969482421875 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 0.21605446934700012 0.0 0.0 0.999969482421875 0.5330555438995361 0.30196118354797363 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 0.0 0.0 0.999969482421875 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 0.0 0.0 0.999969482421875 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 0.21605446934700012 0.0 0.0 1.0 0.44004958868026733 0.30239802598953247 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 0.21605446934700012 0.0 0.0 1.0 0.532341718673706 0.29947996139526367 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 0.21605446934700012 0.0 0.0 0.999969482421875 0.5330555438995361 0.30196118354797363 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 0.21605446934700012 0.0 0.0 1.0 0.5314958691596985 0.29707831144332886 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 0.21605446934700012 0.0 0.0 1.0 0.532341718673706 0.29947996139526367 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 0.21605446934700012 0.0 0.0 1.0 0.44172802567481995 0.29867666959762573 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 0.21605446934700012 0.0 0.0 1.0 0.44004958868026733 0.30239802598953247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 0.21605446934700012 0.0 0.0 1.0 0.5314958691596985 0.29707831144332886 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 0.21605446934700012 0.0 0.0 1.0 0.44172802567481995 0.29867666959762573 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 0.21605446934700012 0.0 0.0 1.0 0.5294012427330017 0.2925146222114563 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 0.0 0.0 1.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 0.21605446934700012 0.0 0.0 1.0 0.5281489491462708 0.29035401344299316 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 0.21605446934700012 0.0 0.0 1.0 0.5294012427330017 0.2925146222114563 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 0.0 0.0 1.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 0.21605446934700012 0.0 0.0 1.0 0.44556230306625366 0.2918233871459961 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 0.21605446934700012 0.0 0.0 1.0 0.526757001876831 0.2882760167121887 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 0.21605446934700012 0.0 0.0 1.0 0.5281489491462708 0.29035401344299316 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 0.0 0.0 1.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 0.21605446934700012 0.0 0.0 1.0 0.44773662090301514 0.2886993885040283 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 0.21605446934700012 0.0 0.0 1.0 0.44556230306625366 0.2918233871459961 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 0.0 0.0 0.999969482421875 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 0.21605446934700012 0.0 0.0 1.0 0.526757001876831 0.2882760167121887 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 0.0 0.0 0.999969482421875 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 0.0 0.0 1.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 0.21605446934700012 0.0 0.0 1.0 0.44773662090301514 0.2886993885040283 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 0.21605446934700012 0.0 0.0 1.0 0.5219641923904419 0.2828214764595032 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 0.0 0.0 0.999969482421875 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 0.0 0.0 1.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 0.21605446934700012 0.0 0.0 1.0 0.45266157388687134 0.2830924987792969 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 0.21605446934700012 0.0 0.0 1.0 0.5192333459854126 0.28040528297424316 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 0.21605446934700012 0.0 0.0 1.0 0.5219641923904419 0.2828214764595032 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 0.21605446934700012 0.0 0.0 0.999969482421875 0.45541685819625854 0.2806207537651062 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 0.21605446934700012 0.0 0.0 1.0 0.45266157388687134 0.2830924987792969 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 0.21605446934700012 0.0 0.0 1.0 0.5162762403488159 0.2782074809074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 0.21605446934700012 0.0 0.0 1.0 0.5192333459854126 0.28040528297424316 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 0.21605446934700012 0.0 0.0 1.0 0.45837000012397766 0.2783792018890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 0.21605446934700012 0.0 0.0 0.999969482421875 0.45541685819625854 0.2806207537651062 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 0.21605446934700012 0.0 0.0 1.0 0.5162762403488159 0.2782074809074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 0.21605446934700012 0.0 0.0 1.0 0.46152105927467346 0.2763766050338745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 0.21605446934700012 0.0 0.0 1.0 0.45837000012397766 0.2783792018890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 0.21605446934700012 0.0 0.0 0.999969482421875 0.5096758604049683 0.2745087742805481 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 0.21605446934700012 0.0 0.0 1.0 0.46152105927467346 0.2763766050338745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 0.21605446934700012 0.0 0.0 1.0 0.5060319304466248 0.2730323076248169 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 0.21605446934700012 0.0 0.0 0.999969482421875 0.5096758604049683 0.2745087742805481 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 0.0 0.0 1.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 0.21605446934700012 0.0 0.0 1.0 0.468416303396225 0.2731272578239441 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.5021612048149109 0.2718231678009033 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 0.21605446934700012 0.0 0.0 1.0 0.5060319304466248 0.2730323076248169 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 0.21605446934700012 0.0 0.0 1.0 0.47215694189071655 0.2719026207923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 0.21605446934700012 0.0 0.0 1.0 0.468416303396225 0.2731272578239441 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 0.21605446934700012 0.0 0.0 0.999969482421875 0.4980665147304535 0.2708966135978699 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.5021612048149109 0.2718231678009033 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 0.21605446934700012 0.0 3.0518509447574615e-05 0.999969482421875 0.4760883152484894 0.2709609866142273 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 0.21605446934700012 0.0 0.0 1.0 0.47215694189071655 0.2719026207923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4937530755996704 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 0.21605446934700012 0.0 0.0 0.999969482421875 0.4980665147304535 0.2708966135978699 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.480205237865448 0.27031540870666504 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 0.21605446934700012 0.0 3.0518509447574615e-05 0.999969482421875 0.4760883152484894 0.2709609866142273 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 0.21605446934700012 0.0 0.0 1.0 0.4892280697822571 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4937530755996704 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450079560279846 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.480205237865448 0.27031540870666504 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450079560279846 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 0.21605446934700012 0.0 0.0 1.0 0.4892280697822571 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450079560279846 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.0 0.0 0.999969482421875 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.0 0.0 0.999969482421875 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 0.0 0.0 1.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.0 0.0 0.999969482421875 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.0 0.0 1.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.0 0.0 1.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.0 0.0 1.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.0 0.0 0.999969482421875 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 0.21605446934700012 0.0 0.0 0.999969482421875 0.40223488211631775 0.2527579665184021 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.0 0.0 0.999969482421875 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.0 0.0 0.999969482421875 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 0.21605446934700012 0.0 0.0 0.999969482421875 0.40223488211631775 0.2527579665184021 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.0 0.0 0.999969482421875 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.0 0.0 1.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.0 0.0 1.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.0 0.0 1.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.0 0.0 0.999969482421875 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.0 0.0 0.999969482421875 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.0 0.0 0.999969482421875 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 0.0 0.0 0.999969482421875 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 0.0 0.0 0.999969482421875 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 0.0 0.0 0.999969482421875 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 0.0 0.0 1.0 0.4629644751548767 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 0.0 0.0 1.0 0.4629644751548767 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 0.21605445444583893 0.0 0.0 1.0 0.47274866700172424 0.20689111948013306 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 0.0 0.0 1.0 0.4629644751548767 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 0.21605445444583893 0.0 0.0 1.0 0.47274866700172424 0.20689111948013306 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 0.21605445444583893 0.0 6.103701889514923e-05 1.0 0.48303502798080444 0.20598739385604858 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 0.21605448424816132 0.0 0.0 1.0 0.48100516200065613 0.630024254322052 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.0 0.0 1.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.48762810230255127 0.6301566958427429 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 0.0 0.0 1.0 0.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.0 0.0 1.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 0.21605448424816132 0.0 0.0 1.0 0.48100516200065613 0.630024254322052 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 0.0 0.0 1.0 0.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.0 0.0 0.999969482421875 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.0 0.0 1.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 0.0 0.0 1.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.0 0.0 0.999969482421875 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 0.0 0.0 1.0 0.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 0.0 0.0 1.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.0 0.0 1.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.0 0.0 0.999969482421875 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 0.0 0.0 0.999969482421875 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.0 0.0 1.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 0.0 0.0 1.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 0.0 0.0 0.999969482421875 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.0 0.0 1.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.0 0.0 1.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 0.0 0.0 1.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.0 0.0 1.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 0.0 0.0 0.999969482421875 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 0.0 0.0 1.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.0 0.0 0.999969482421875 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.0 0.0 1.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 0.0 0.0 1.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.0 0.0 0.999969482421875 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 0.0 0.0 1.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 0.0 0.0 1.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.0 0.0 1.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.0 0.0 0.999969482421875 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 0.0 0.0 1.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.0 0.0 1.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 0.0 0.0 1.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 0.0 0.0 1.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.0 0.0 1.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.0 0.0 1.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 0.0 0.0 1.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.0 0.0 1.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 0.0 0.0 1.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 0.0 0.0 1.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.0 0.0 1.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.0 0.0 1.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 0.0 0.0 0.999969482421875 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.0 0.0 1.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 0.0 0.0 1.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 0.0 0.0 0.999969482421875 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.0 0.0 0.999969482421875 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.0 0.0 1.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 0.0 0.0 1.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.0 0.0 0.999969482421875 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 0.0 0.0 0.999969482421875 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 0.0 0.0 1.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.0 0.0 0.999969482421875 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.0 0.0 0.999969482421875 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 0.0 0.0 1.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.0 0.0 0.999969482421875 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 0.0 0.0 1.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 0.0 0.0 1.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.0 0.0 1.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.0 0.0 0.999969482421875 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 0.0 0.0 0.999969482421875 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.0 0.0 1.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 0.0 0.0 1.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 0.0 0.0 0.999969482421875 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.0 0.0 1.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.0 0.0 1.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 0.0 0.0 0.999969482421875 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.0 0.0 1.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 0.0 0.0 0.999969482421875 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 0.0 0.0 0.999969482421875 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.0 0.0 1.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.0 0.0 1.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 0.0 0.0 1.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.0 0.0 1.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 0.0 0.0 0.999969482421875 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 0.0 0.0 1.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.0 0.0 0.999969482421875 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.0 0.0 1.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4871401786804199 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 0.0 0.0 1.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4871401786804199 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 0.0 0.0 1.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.0 0.0 0.999969482421875 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 0.0 0.0 1.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 0.0 0.0 1.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.0 0.0 0.999969482421875 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 0.0 0.0 1.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.0 0.0 0.999969482421875 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 0.21605446934700012 0.0 -0.0002136295661330223 0.999969482421875 0.4959324598312378 0.5607290267944336 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 0.0 0.0 1.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 0.21605446934700012 0.0 0.0 1.0 0.48413458466529846 0.5612612962722778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4871401786804199 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 0.21605446934700012 0.0 0.0 1.0 0.49866729974746704 0.5597536563873291 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 0.21605446934700012 0.0 -0.0002136295661330223 0.999969482421875 0.4959324598312378 0.5607290267944336 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 0.21605446934700012 0.0 0.0 0.999969482421875 0.48121345043182373 0.5605089664459229 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 0.21605446934700012 0.0 0.0 1.0 0.48413458466529846 0.5612612962722778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 0.21605446934700012 0.0 0.0 0.999969482421875 0.5013262033462524 0.5584465265274048 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 0.21605446934700012 0.0 0.0 1.0 0.49866729974746704 0.5597536563873291 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 0.21605446934700012 0.0 0.0 1.0 0.4783760607242584 0.5593962669372559 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 0.21605446934700012 0.0 0.0 0.999969482421875 0.48121345043182373 0.5605089664459229 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 0.21605446934700012 0.0 0.0 0.999969482421875 0.503910481929779 0.5568075776100159 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 0.21605446934700012 0.0 0.0 0.999969482421875 0.5013262033462524 0.5584465265274048 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 0.21605446934700012 0.0 0.0 1.0 0.47562140226364136 0.5579229593276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 0.21605446934700012 0.0 0.0 1.0 0.4783760607242584 0.5593962669372559 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 0.21605446934700012 0.0 0.0 1.0 0.5064213275909424 0.5548363924026489 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 0.21605446934700012 0.0 0.0 0.999969482421875 0.503910481929779 0.5568075776100159 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.0 0.0 0.999969482421875 0.47294849157333374 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 0.21605446934700012 0.0 0.0 1.0 0.47562140226364136 0.5579229593276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 0.21605446934700012 0.0 0.0 1.0 0.508860170841217 0.5525315999984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 0.21605446934700012 0.0 0.0 1.0 0.5064213275909424 0.5548363924026489 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.0 0.0 0.999969482421875 0.47294849157333374 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 0.0 0.0 1.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 0.21605446934700012 0.0 0.0 1.0 0.4703560471534729 0.5538910627365112 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.0 0.0 0.999969482421875 0.47294849157333374 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 0.21605446934700012 0.0 0.0 0.999969482421875 0.5112283229827881 0.5498915910720825 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 0.21605446934700012 0.0 0.0 1.0 0.508860170841217 0.5525315999984741 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 0.21605446934700012 0.0 0.0 1.0 0.46784284710884094 0.5513290166854858 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 0.21605446934700012 0.0 0.0 1.0 0.4703560471534729 0.5538910627365112 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 0.0 0.0 1.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 0.21605446934700012 0.0 0.0 0.999969482421875 0.5112283229827881 0.5498915910720825 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 0.21605446934700012 0.0 0.0 0.999969482421875 0.46540743112564087 0.5483993887901306 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 0.21605446934700012 0.0 0.0 1.0 0.46784284710884094 0.5513290166854858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 0.0 0.0 1.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.0 0.0 1.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 0.21605446934700012 0.0 0.0 1.0 0.5157588124275208 0.5435953140258789 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 0.0 0.0 1.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 0.21605446934700012 0.0 0.0 1.0 0.46304842829704285 0.5450987815856934 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 0.21605446934700012 0.0 0.0 0.999969482421875 0.46540743112564087 0.5483993887901306 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 0.21605446934700012 0.0 0.0 0.999969482421875 0.5179241895675659 0.5399326086044312 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 0.21605446934700012 0.0 0.0 1.0 0.5157588124275208 0.5435953140258789 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.0 0.0 1.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 0.21605446934700012 0.0 0.0 1.0 0.46304842829704285 0.5450987815856934 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 0.0 0.0 1.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.0 0.0 1.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 0.0 0.0 1.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 0.21605446934700012 0.0 0.0 0.999969482421875 0.520024836063385 0.5359216332435608 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 0.21605446934700012 0.0 0.0 0.999969482421875 0.5179241895675659 0.5399326086044312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 0.0 0.0 1.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 0.21605446934700012 0.0 0.0 1.0 0.4585532248020172 0.5373673439025879 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.0 0.0 1.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 0.0 0.0 0.999969482421875 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 0.21605446934700012 0.0 0.0 0.999969482421875 0.520024836063385 0.5359216332435608 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 0.0 0.0 0.999969482421875 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.0 0.0 1.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.0 0.0 1.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 0.0 0.0 1.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 0.21605446934700012 0.0 0.0 1.0 0.45645686984062195 0.5329769849777222 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 0.21605446934700012 0.0 0.0 1.0 0.4585532248020172 0.5373673439025879 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 0.21605446934700012 0.0 0.0 1.0 0.5238659977912903 0.5269047021865845 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.0 0.0 1.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 0.0 0.0 0.999969482421875 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 0.0 0.0 1.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.0 0.0 0.999969482421875 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 0.21605446934700012 0.0 0.0 1.0 0.45645686984062195 0.5329769849777222 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 0.0 0.0 1.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.0 0.0 0.999969482421875 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 0.0 0.0 1.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 0.21605446934700012 0.0 0.0 1.0 0.5255663990974426 0.5219049453735352 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.0 0.0 1.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 0.21605446934700012 0.0 0.0 1.0 0.5238659977912903 0.5269047021865845 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 0.0 0.0 1.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 0.21605446934700012 0.0 0.0 1.0 0.45273035764694214 0.52332603931427 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.0 0.0 0.999969482421875 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 0.0 0.0 1.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.0 0.0 1.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 0.21605446934700012 0.0 0.0 1.0 0.5255663990974426 0.5219049453735352 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 0.0 0.0 1.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.0 0.0 1.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.0 0.0 1.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 0.0 0.0 1.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.0 0.0 1.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 0.21605446934700012 0.0 0.0 1.0 0.45273035764694214 0.52332603931427 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 0.21605446934700012 0.0 0.0 0.999969482421875 0.528533935546875 0.5108895301818848 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.0 0.0 1.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 0.0 0.0 1.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 0.0 0.0 1.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.0 0.0 1.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 0.0 0.0 1.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 0.0 0.0 1.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 0.21605446934700012 0.0 0.0 1.0 0.4496181607246399 0.512480616569519 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.0 0.0 1.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 0.0 0.0 1.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.0 0.0 1.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 0.21605446934700012 0.0 0.0 0.999969482421875 0.528533935546875 0.5108895301818848 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 0.0 0.0 1.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 0.21605446934700012 0.0 0.0 1.0 0.44829061627388 0.5065951347351074 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 0.21605446934700012 0.0 0.0 1.0 0.4496181607246399 0.512480616569519 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 0.0 0.0 1.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.0 0.0 1.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.0 0.0 1.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 0.21605446934700012 0.0 0.0 1.0 0.5309305191040039 0.49846935272216797 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.0 0.0 1.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 0.0 0.0 1.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 0.0 0.0 1.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.0 0.0 1.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 0.21605446934700012 0.0 0.0 1.0 0.44829061627388 0.5065951347351074 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 0.0 0.0 1.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.0 0.0 1.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 0.0 0.0 1.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 0.21605446934700012 0.0 0.0 1.0 0.5319159626960754 0.49171215295791626 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.0 0.0 1.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 0.21605446934700012 0.0 0.0 1.0 0.5309305191040039 0.49846935272216797 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 0.0 0.0 1.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 0.21605446934700012 0.0 0.0 1.0 0.4460909366607666 0.49386513233184814 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.0 0.0 1.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.0 0.0 1.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 0.21605446934700012 0.0 0.0 1.0 0.5319159626960754 0.49171215295791626 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 0.0 0.0 1.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.0 0.0 0.999969482421875 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 0.21605446934700012 0.0 0.0 1.0 0.4460909366607666 0.49386513233184814 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.0 0.0 1.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.0 0.0 1.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 0.0 0.0 1.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.0 0.0 0.999969482421875 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 0.0 0.0 1.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 0.21605446934700012 0.0 0.0 0.999969482421875 0.533460259437561 0.47706329822540283 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.0 0.0 1.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 0.0 0.0 1.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 0.21605446934700012 0.0 0.0 1.0 0.44450050592422485 0.4798106551170349 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.0 0.0 0.999969482421875 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 0.0 0.0 1.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.0 0.0 1.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 0.21605446934700012 0.0 0.0 0.999969482421875 0.533460259437561 0.47706329822540283 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 0.0 0.0 1.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.0 0.0 1.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 0.21605446934700012 0.0 0.0 1.0 0.44450050592422485 0.4798106551170349 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 0.0 0.0 0.999969482421875 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.0 0.0 1.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 0.0 0.0 1.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 0.0 0.0 1.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.0 0.0 0.999969482421875 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.0 0.0 1.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 0.0 0.0 1.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.0 0.0 0.999969482421875 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 0.0 0.0 1.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 0.0 0.0 0.999969482421875 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 0.21605446934700012 0.0 0.0 1.0 0.44352710247039795 0.4643810987472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.0 0.0 1.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 0.0 0.0 0.999969482421875 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 0.0 0.0 1.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 0.21605446934700012 0.0 0.0 1.0 0.44352710247039795 0.4643810987472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 0.0 0.0 0.999969482421875 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.0 0.0 0.999969482421875 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 0.0 0.0 1.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 0.0 0.0 0.999969482421875 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.0 0.0 0.999969482421875 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 0.0 0.0 0.999969482421875 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 0.0 0.0 0.999969482421875 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.0 0.0 1.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.0 0.0 0.999969482421875 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 0.0 0.0 1.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.0 0.0 1.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 0.0 0.0 0.999969482421875 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 0.0 0.0 1.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.0 0.0 1.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.0 0.0 1.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 0.0 0.0 1.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.0 0.0 1.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 0.0 0.0 1.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 0.0 0.0 1.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 0.0 0.0 1.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.0 0.0 1.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 0.0 0.0 1.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 0.0 0.0 1.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 0.0 0.0 1.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 0.0 0.0 1.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 0.0 0.0 1.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 0.0 0.0 1.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 0.0 0.0 1.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 0.0 0.0 1.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 0.21605446934700012 0.0 0.0 1.0 0.43873849511146545 0.3827359676361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 0.0 0.0 1.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.0 0.0 1.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 0.21605446934700012 0.0 0.0 1.0 0.43873849511146545 0.3827359676361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 0.0 0.0 1.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.0 0.0 1.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 0.0 0.0 1.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 0.0 0.0 1.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 0.21605446934700012 0.0 0.0 1.0 0.43886324763298035 0.3663843274116516 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.0 0.0 1.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 0.0 0.0 1.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.0 0.0 1.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 0.21605446934700012 0.0 0.0 1.0 0.43886324763298035 0.3663843274116516 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 0.0 0.0 1.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.0 0.0 1.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 0.0 0.0 1.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 0.0 0.0 1.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 0.21605446934700012 0.0 0.0 1.0 0.43983423709869385 0.3513116240501404 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.0 0.0 1.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 0.0 0.0 1.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.0 0.0 1.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 0.21605446934700012 0.0 0.0 1.0 0.43983423709869385 0.3513116240501404 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 0.0 0.0 1.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.0 0.0 1.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 0.0 0.0 1.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 0.0 0.0 1.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 0.21605446934700012 0.0 0.0 1.0 0.44169366359710693 0.33748435974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.0 0.0 1.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 0.21605446934700012 0.0 0.0 1.0 0.5337579846382141 0.33563095331192017 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.0 0.0 1.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 0.21605446934700012 0.0 0.0 1.0 0.5344954133033752 0.34105902910232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 0.21605446934700012 0.0 0.0 1.0 0.5329328179359436 0.33046531677246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.0 0.0 1.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 0.21605446934700012 0.0 0.0 1.0 0.5337579846382141 0.33563095331192017 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 0.0 0.0 1.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.0 0.0 1.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 0.21605446934700012 0.0 0.0 1.0 0.44169366359710693 0.33748435974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 0.0 0.0 1.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.0 0.0 1.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 0.0 0.0 1.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 0.21605446934700012 0.0 0.0 1.0 0.5320184826850891 0.325559139251709 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.0 0.0 1.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 0.21605446934700012 0.0 0.0 1.0 0.5329328179359436 0.33046531677246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 0.0 0.0 1.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 0.21605446934700012 0.0 0.0 0.999969482421875 0.44448772072792053 0.3248738646507263 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.0 0.0 1.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 0.0 0.0 1.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.0 0.0 1.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 0.21605446934700012 0.0 0.0 1.0 0.5320184826850891 0.325559139251709 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 0.0 0.0 1.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.0 0.0 1.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 0.21605446934700012 0.0 0.0 0.999969482421875 0.44448772072792053 0.3248738646507263 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 0.0 0.0 1.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.0 0.0 1.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 0.0 0.0 1.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 0.0 0.0 1.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.0 0.0 1.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.0 0.0 1.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 0.21605446934700012 0.0 0.0 1.0 0.5299165844917297 0.3165135383605957 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.0 0.0 1.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 0.0 0.0 1.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 0.0 0.0 1.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 0.21605446934700012 0.0 0.0 1.0 0.4482648968696594 0.3134663701057434 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.0 0.0 1.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 0.21605446934700012 0.0 0.0 1.0 0.5287265181541443 0.3123684525489807 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.0 0.0 1.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 0.21605446934700012 0.0 0.0 1.0 0.5299165844917297 0.3165135383605957 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 0.0 0.0 1.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.0 0.0 1.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 0.21605446934700012 0.0 0.0 1.0 0.5287265181541443 0.3123684525489807 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 0.0 0.0 1.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.0 0.0 1.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 0.21605446934700012 0.0 0.0 1.0 0.4482648968696594 0.3134663701057434 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 0.0 0.0 1.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.0 0.0 1.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.0 0.0 1.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 0.0 0.0 1.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.0 0.0 1.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 0.0 0.0 1.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 0.21605446934700012 0.0 0.0 1.0 0.5260624289512634 0.3048214912414551 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.0 0.0 1.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 0.0 0.0 1.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 0.0 0.0 1.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 0.21605446934700012 0.0 0.0 1.0 0.45302438735961914 0.30331945419311523 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.0 0.0 1.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 0.21605446934700012 0.0 0.0 1.0 0.5245863199234009 0.30141550302505493 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.0 0.0 1.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 0.21605446934700012 0.0 0.0 1.0 0.5260624289512634 0.3048214912414551 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 0.0 0.0 1.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 0.21605446934700012 0.0 0.0 1.0 0.45567893981933594 0.2988291382789612 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 0.21605446934700012 0.0 0.0 1.0 0.45302438735961914 0.30331945419311523 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 0.0 0.0 1.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.0 0.0 1.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 0.21605446934700012 0.0 0.0 1.0 0.5245863199234009 0.30141550302505493 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 0.0 0.0 1.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.0 0.0 1.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.0 0.0 1.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 0.21605446934700012 0.0 0.0 1.0 0.5213418006896973 0.29533177614212036 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.0 0.0 1.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 0.0 0.0 1.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 0.0 0.0 1.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.0 0.0 1.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 0.21605446934700012 0.0 0.0 1.0 0.45567893981933594 0.2988291382789612 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 0.0 0.0 1.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.0 0.0 1.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 0.0 0.0 1.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 0.21605446934700012 0.0 0.0 0.999969482421875 0.5195723176002502 0.292652428150177 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.0 0.0 1.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 0.21605446934700012 0.0 0.0 1.0 0.5213418006896973 0.29533177614212036 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 0.0 0.0 1.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 0.21605446934700012 0.0 0.0 1.0 0.46149224042892456 0.29107022285461426 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.0 0.0 1.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 0.0 0.0 1.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.0 0.0 1.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 0.21605446934700012 0.0 0.0 0.999969482421875 0.5195723176002502 0.292652428150177 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 0.0 0.0 1.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.0 0.0 1.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 0.0 0.0 1.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 0.21605446934700012 0.0 0.0 1.0 0.46464958786964417 0.2878061532974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 0.21605446934700012 0.0 0.0 1.0 0.46149224042892456 0.29107022285461426 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 0.21605446934700012 0.0 0.0 1.0 0.5157464742660522 0.2879374027252197 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 0.0 0.0 1.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 0.21605446934700012 0.0 0.0 1.0 0.5136916637420654 0.28588324785232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 0.21605446934700012 0.0 0.0 1.0 0.5157464742660522 0.2879374027252197 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 0.0 0.0 1.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.0 0.0 1.0 0.4679713547229767 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 0.21605446934700012 0.0 0.0 1.0 0.46464958786964417 0.2878061532974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.0 0.0 1.0 0.4679713547229767 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 0.0 0.0 1.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 0.21605446934700012 0.0 0.0 1.0 0.5115428566932678 0.2840333580970764 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 0.21605446934700012 0.0 0.0 1.0 0.5136916637420654 0.28588324785232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 0.21605446934700012 0.0 0.0 0.999969482421875 0.4714545011520386 0.2825276851654053 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.0 0.0 1.0 0.4679713547229767 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 0.21605446934700012 0.0 0.0 1.0 0.5093002319335938 0.28238970041275024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 0.21605446934700012 0.0 0.0 1.0 0.5115428566932678 0.2840333580970764 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 0.0 0.0 1.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 0.21605446934700012 0.0 0.0 1.0 0.5093002319335938 0.28238970041275024 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 0.21605446934700012 0.0 0.0 1.0 0.4750945568084717 0.28052353858947754 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 0.21605446934700012 0.0 0.0 0.999969482421875 0.4714545011520386 0.2825276851654053 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 0.0 0.0 1.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 0.21605446934700012 0.0 0.0 1.0 0.5045377612113953 0.2797309160232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 0.0 0.0 1.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 0.21605446934700012 0.0 0.0 0.999969482421875 0.47888582944869995 0.2789512276649475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 0.21605446934700012 0.0 0.0 1.0 0.4750945568084717 0.28052353858947754 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5020204186439514 0.2787216305732727 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 0.21605446934700012 0.0 0.0 1.0 0.5045377612113953 0.2797309160232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 0.21605446934700012 0.0 0.0 1.0 0.4828212261199951 0.27781784534454346 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 0.21605446934700012 0.0 0.0 0.999969482421875 0.47888582944869995 0.2789512276649475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 0.21605446934700012 0.0 0.0 0.999969482421875 0.49941444396972656 0.27793002128601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5020204186439514 0.2787216305732727 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 0.21605446934700012 0.0 0.0 1.0 0.4967222511768341 0.2773597836494446 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 0.21605446934700012 0.0 0.0 0.999969482421875 0.49941444396972656 0.27793002128601074 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 0.21605446934700012 0.0 0.0 0.999969482421875 0.48689237236976624 0.27713125944137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 0.21605446934700012 0.0 0.0 1.0 0.4828212261199951 0.27781784534454346 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 0.21605446934700012 0.0 0.0 1.0 0.4939463436603546 0.2770150303840637 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 0.21605446934700012 0.0 0.0 1.0 0.4967222511768341 0.2773597836494446 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0 0.0 1.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 0.21605446934700012 0.0 0.0 0.999969482421875 0.48689237236976624 0.27713125944137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0 0.0 1.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 0.21605446934700012 0.0 0.0 1.0 0.4939463436603546 0.2770150303840637 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0 0.0 1.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 0.0 0.0 0.999969482421875 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 0.0 0.0 1.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 0.0 0.0 0.999969482421875 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.0 0.0 0.999969482421875 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.0 0.0 1.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 0.0 0.0 1.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.0 0.0 0.999969482421875 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 0.0 0.0 0.999969482421875 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 0.0 0.0 1.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 0.21605446934700012 0.0 0.0 1.0 0.5796647667884827 0.28530943393707275 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.0 0.0 0.999969482421875 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 0.0 0.0 1.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.0 0.0 1.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 0.21605446934700012 0.0 0.0 1.0 0.5796647667884827 0.28530943393707275 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 0.0 0.0 0.999969482421875 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.0 0.0 1.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 0.0 0.0 1.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 0.0 0.0 0.999969482421875 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.0 0.0 1.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.0 0.0 1.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 0.0 0.0 1.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.0 0.0 1.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 0.0 0.0 0.999969482421875 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 0.0 0.0 1.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 0.21605446934700012 0.0 0.0 0.999969482421875 0.5713964104652405 0.2639002203941345 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.0 0.0 1.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 0.0 0.0 1.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.0 0.0 0.999969482421875 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 0.21605446934700012 0.0 0.0 0.999969482421875 0.5713964104652405 0.2639002203941345 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 0.0 0.0 0.999969482421875 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.0 0.0 0.999969482421875 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 0.0 0.0 1.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 0.0 0.0 0.999969482421875 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 0.21605446934700012 0.0 0.0 1.0 0.5642899870872498 0.25105178356170654 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.0 0.0 0.999969482421875 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 0.0 0.0 0.999969482421875 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.0 0.0 0.999969482421875 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 0.21605446934700012 0.0 0.0 1.0 0.5642899870872498 0.25105178356170654 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 0.0 0.0 1.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.0 0.0 0.999969482421875 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 0.0 0.0 0.999969482421875 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 0.0 0.0 1.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.0 0.0 1.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.0 0.0 0.999969482421875 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 0.0 0.0 0.999969482421875 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.0 0.0 1.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 0.0 0.0 1.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 0.0 0.0 0.999969482421875 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 0.21605445444583893 0.0 0.0 1.0 0.550920307636261 0.23428791761398315 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.0 0.0 1.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 0.0 0.0 0.999969482421875 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.0 0.0 1.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 0.21605445444583893 0.0 0.0 1.0 0.550920307636261 0.23428791761398315 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 0.0 0.0 1.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.0 0.0 1.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 0.0 0.0 0.999969482421875 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 0.0 0.0 1.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.0 0.0 0.999969482421875 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.0 0.0 1.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 0.0 0.0 1.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.0 0.0 0.999969482421875 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 0.0 0.0 1.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 0.0 0.0 1.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 0.21605445444583893 0.0 0.0 1.0 0.5339774489402771 0.22114479541778564 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.0 0.0 0.999969482421875 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 0.0 0.0 1.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.0 0.0 1.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 0.21605445444583893 0.0 0.0 1.0 0.5339774489402771 0.22114479541778564 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 0.0 0.0 1.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.0 0.0 1.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 0.0 0.0 1.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 0.0 0.0 1.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.0 0.0 1.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.0 0.0 1.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 0.0 0.0 1.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.0 0.0 1.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 0.0 0.0 1.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 0.0 0.0 1.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 0.21605445444583893 0.0 0.0 1.0 0.5133183598518372 0.21246552467346191 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.0 0.0 1.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 0.0 0.0 1.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.0 0.0 1.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 0.21605445444583893 0.0 0.0 1.0 0.5133183598518372 0.21246552467346191 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4763302505016327 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.0 0.0 1.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 0.0 0.0 1.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4763302505016327 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 0.21605445444583893 0.0 0.0 1.0 0.49765321612358093 0.20969903469085693 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.0 0.0 1.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 0.21605445444583893 0.0 0.0 1.0 0.4893549680709839 0.20935219526290894 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 0.21605445444583893 0.0 0.0 1.0 0.49765321612358093 0.20969903469085693 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4763302505016327 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.4341694116592407 0.6617535948753357 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.5445256233215332 0.6925103664398193 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.4373004734516144 0.6980294585227966 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.4341694116592407 0.6617535948753357 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.5467431545257568 0.6560397148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.5445256233215332 0.6925103664398193 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 0.0 0.0 1.0 0.477262407541275 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 0.21605448424816132 0.0 -6.103701889514923e-05 1.0 0.49122709035873413 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 0.21605448424816132 0.0 -6.103701889514923e-05 1.0 0.4844124913215637 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 0.0 0.0 1.0 0.477262407541275 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 0.21605448424816132 0.0 -6.103701889514923e-05 1.0 0.49122709035873413 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 0.0 0.0 1.0 0.47045332193374634 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 0.0 0.0 1.0 0.477262407541275 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 0.0 0.0 1.0 0.47045332193374634 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.0 0.0 1.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 0.0 0.0 1.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 0.0 0.0 1.0 0.47045332193374634 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 0.0 0.0 1.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.0 0.0 1.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 0.0 0.0 1.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.0 0.0 1.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.0 0.0 1.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.0 0.0 1.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 0.0 0.0 1.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.0 0.0 0.999969482421875 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.0 0.0 1.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.0 0.0 0.999969482421875 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 0.0 0.0 1.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.0 0.0 0.999969482421875 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 0.0 0.0 1.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 0.21605448424816132 0.0 0.0 1.0 0.5298394560813904 0.6121901869773865 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.0 0.0 1.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 0.21605448424816132 0.0 0.0 1.0 0.5298394560813904 0.6121901869773865 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 0.0 0.0 1.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.0 0.0 1.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 0.0 0.0 1.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.0 0.0 1.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 0.0 0.0 1.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.0 0.0 1.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 0.0 0.0 0.999969482421875 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 0.0 0.0 1.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 0.0 0.0 0.999969482421875 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.0 0.0 1.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 0.0 0.0 0.999969482421875 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 0.0 0.0 0.999969482421875 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 0.0 0.0 0.999969482421875 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.0 0.0 1.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 0.0 0.0 0.999969482421875 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.0 0.0 1.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 0.0 0.0 1.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 0.21605446934700012 0.0 0.0 1.0 0.5563127994537354 0.5777288675308228 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.0 0.0 1.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 0.21605446934700012 0.0 0.0 1.0 0.5563127994537354 0.5777288675308228 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 0.0 0.0 1.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.0 0.0 1.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 0.0 0.0 0.999969482421875 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.0 0.0 0.999969482421875 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.0 0.0 1.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.0 0.0 0.999969482421875 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 0.0 0.0 1.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.0 0.0 0.999969482421875 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 0.0 0.0 1.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.48440268635749817 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.48440268635749817 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.48734185099601746 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.48734185099601746 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.0 0.0 1.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.4772038161754608 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.4772038161754608 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 0.21605446934700012 0.0 0.00039674062281847 0.999969482421875 0.48071256279945374 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 0.21605446934700012 0.0 0.00039674062281847 0.999969482421875 0.48071256279945374 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 0.0 0.0 1.0 0.48440268635749817 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 0.0 0.0 0.999969482421875 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 0.21605446934700012 0.0 0.0 1.0 0.49016478657722473 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 0.0 -0.00030518509447574615 0.999969482421875 0.48734185099601746 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4738771617412567 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.0 -9.155552834272385e-05 1.0 0.4772038161754608 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 0.21605446934700012 0.0 0.0 1.0 0.49287116527557373 0.5609472990036011 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 0.21605446934700012 0.0 0.0 1.0 0.49016478657722473 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 0.21605446934700012 0.0 0.0 0.999969482421875 0.47073280811309814 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4738771617412567 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 0.21605446934700012 0.0 0.0 1.0 0.4954608380794525 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 0.21605446934700012 0.0 0.0 1.0 0.49287116527557373 0.5609472990036011 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 0.21605446934700012 0.0 0.0 1.0 0.4677700698375702 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 0.21605446934700012 0.0 0.0 0.999969482421875 0.47073280811309814 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 0.21605446934700012 0.0 0.0 1.0 0.4979337751865387 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 0.21605446934700012 0.0 0.0 1.0 0.4954608380794525 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 0.21605446934700012 0.0 0.0 1.0 0.46498802304267883 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 0.21605446934700012 0.0 0.0 1.0 0.4677700698375702 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 0.21605446934700012 0.0 0.0 0.999969482421875 0.5002904534339905 0.5582360029220581 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 0.21605446934700012 0.0 0.0 1.0 0.4979337751865387 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 0.21605446934700012 0.0 0.0 1.0 0.46238505840301514 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 0.21605446934700012 0.0 0.0 1.0 0.46498802304267883 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 0.21605446934700012 0.0 0.0 1.0 0.5025313496589661 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 0.21605446934700012 0.0 0.0 0.999969482421875 0.5002904534339905 0.5582360029220581 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 0.21605446934700012 0.0 0.0 1.0 0.4599595367908478 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 0.21605446934700012 0.0 0.0 1.0 0.46238505840301514 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 0.0 0.0 1.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 0.21605446934700012 0.0 0.0 1.0 0.5025313496589661 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 0.0 0.0 1.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.0 0.0 1.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 0.21605446934700012 0.0 0.0 1.0 0.4599595367908478 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 0.21605446934700012 0.0 0.0 1.0 0.5066683292388916 0.5539826154708862 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 0.0 0.0 1.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 0.0 0.0 1.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 0.21605446934700012 0.0 0.0 1.0 0.4556327164173126 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.0 0.0 1.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 0.21605446934700012 0.0 0.0 1.0 0.5085660219192505 0.5522264242172241 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 0.21605446934700012 0.0 0.0 1.0 0.5066683292388916 0.5539826154708862 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 0.21605446934700012 0.0 0.0 1.0 0.45372745394706726 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 0.21605446934700012 0.0 0.0 1.0 0.4556327164173126 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 0.21605446934700012 0.0 0.0 1.0 0.5103511214256287 0.5503013730049133 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 0.21605446934700012 0.0 0.0 1.0 0.5085660219192505 0.5522264242172241 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 0.21605446934700012 0.0 0.0 1.0 0.4519915282726288 0.5508368611335754 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 0.21605446934700012 0.0 0.0 1.0 0.45372745394706726 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 0.21605446934700012 0.0 0.0 1.0 0.512024462223053 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 0.21605446934700012 0.0 0.0 1.0 0.5103511214256287 0.5503013730049133 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 0.21605446934700012 0.0 0.0 1.0 0.4509294629096985 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 0.21605446934700012 0.0 0.0 1.0 0.4519915282726288 0.5508368611335754 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 0.0 0.0 0.999969482421875 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 0.21605446934700012 0.0 0.0 1.0 0.512024462223053 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 0.0 0.0 0.999969482421875 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.0 0.0 1.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 0.21605446934700012 0.0 0.0 1.0 0.4509294629096985 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 0.0 0.0 1.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 0.21605446934700012 0.0 0.0 1.0 0.4490593671798706 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.0 0.0 1.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 0.21605446934700012 0.0 0.0 1.0 0.5150942206382751 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 0.0 0.0 0.999969482421875 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 0.21605446934700012 0.0 0.0 1.0 0.448250412940979 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 0.21605446934700012 0.0 0.0 1.0 0.4490593671798706 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 0.21605446934700012 0.0 0.0 1.0 0.5165062546730042 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 0.21605446934700012 0.0 0.0 1.0 0.5150942206382751 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 0.21605446934700012 0.0 0.0 1.0 0.4475249648094177 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 0.21605446934700012 0.0 0.0 1.0 0.448250412940979 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 0.0 0.0 0.999969482421875 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 0.21605446934700012 0.0 0.0 1.0 0.5165062546730042 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 0.21605446934700012 0.0 0.0 0.999969482421875 0.4468827545642853 0.5414315462112427 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 0.21605446934700012 0.0 0.0 1.0 0.4475249648094177 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 0.21605446934700012 0.0 0.0 0.999969482421875 0.4468827545642853 0.5414315462112427 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 0.0 0.0 0.999969482421875 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.0 0.0 1.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 0.0 0.0 1.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 0.21605446934700012 0.0 0.0 1.0 0.519087016582489 0.5353895425796509 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 0.0 0.0 0.999969482421875 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 0.21605446934700012 0.0 0.0 1.0 0.44584715366363525 0.5377424955368042 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.0 0.0 1.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 0.21605446934700012 0.0 0.0 1.0 0.5202569961547852 0.5323554277420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 0.21605446934700012 0.0 0.0 1.0 0.519087016582489 0.5353895425796509 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 0.21605446934700012 0.0 0.0 1.0 0.44545358419418335 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 0.21605446934700012 0.0 0.0 1.0 0.44584715366363525 0.5377424955368042 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 0.21605446934700012 0.0 0.0 0.999969482421875 0.44514283537864685 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 0.21605446934700012 0.0 0.0 1.0 0.44545358419418335 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 0.21605446934700012 0.0 0.0 1.0 0.5213472843170166 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 0.21605446934700012 0.0 0.0 1.0 0.5202569961547852 0.5323554277420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 0.21605446934700012 0.0 0.0 0.999969482421875 0.44514283537864685 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 0.21605446934700012 0.0 0.0 1.0 0.5213472843170166 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 0.21605446934700012 0.0 0.0 0.999969482421875 0.5223584175109863 0.5258004069328308 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 0.21605446934700012 0.0 0.0 0.999969482421875 0.5223584175109863 0.5258004069328308 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 0.21605446934700012 0.0 0.0 0.999969482421875 0.5232906341552734 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 0.21605446934700012 0.0 0.0 0.999969482421875 0.5232906341552734 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 0.21605446934700012 0.0 0.0 1.0 0.5241441130638123 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 0.21605446934700012 0.0 0.0 1.0 0.5241441130638123 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 0.21605446934700012 0.0 0.0 1.0 0.5249190926551819 0.5147103667259216 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 0.21605446934700012 0.0 0.0 1.0 0.5249190926551819 0.5147103667259216 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 0.21605446934700012 0.0 0.0 1.0 0.5256157517433167 0.5106663703918457 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.0 0.0 0.999969482421875 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 0.0 0.0 1.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 0.21605446934700012 0.0 0.0 1.0 0.4447703957557678 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.0 0.0 1.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 0.21605446934700012 0.0 0.0 1.0 0.4447213411331177 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 0.21605446934700012 0.0 0.0 1.0 0.4447703957557678 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 0.21605446934700012 0.0 0.0 1.0 0.44475072622299194 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 0.21605446934700012 0.0 0.0 1.0 0.4447213411331177 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 0.21605446934700012 0.0 0.0 1.0 0.44475072622299194 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 0.0 0.0 1.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 0.21605446934700012 0.0 0.0 1.0 0.445046603679657 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.0 0.0 1.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 0.21605446934700012 0.0 0.0 1.0 0.44531404972076416 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 0.21605446934700012 0.0 0.0 1.0 0.445046603679657 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 0.21605446934700012 0.0 0.0 1.0 0.44566184282302856 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 0.21605446934700012 0.0 0.0 1.0 0.44531404972076416 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 0.21605446934700012 0.0 0.0 1.0 0.4460906684398651 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 0.21605446934700012 0.0 0.0 1.0 0.44566184282302856 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.0 0.0 0.999969482421875 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 0.21605446934700012 0.0 0.0 1.0 0.4460906684398651 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.0 0.0 0.999969482421875 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 0.0 0.0 1.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 0.21605446934700012 0.0 0.0 1.0 0.4471936523914337 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.0 0.0 0.999969482421875 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 0.21605446934700012 0.0 0.0 1.0 0.44786933064460754 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 0.21605446934700012 0.0 0.0 1.0 0.4471936523914337 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 0.21605446934700012 0.0 0.0 1.0 0.448628693819046 0.5109696984291077 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 0.21605446934700012 0.0 0.0 1.0 0.44786933064460754 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 0.21605446934700012 0.0 0.0 1.0 0.4494723379611969 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 0.21605446934700012 0.0 0.0 1.0 0.448628693819046 0.5109696984291077 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 0.21605446934700012 0.0 0.0 1.0 0.45094168186187744 0.5075438022613525 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 0.21605446934700012 0.0 0.0 1.0 0.4494723379611969 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 0.21605446934700012 0.0 0.0 0.999969482421875 0.45294809341430664 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 0.21605446934700012 0.0 0.0 1.0 0.45094168186187744 0.5075438022613525 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 0.21605446934700012 0.0 0.0 0.999969482421875 0.45294809341430664 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 0.0 0.0 1.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 0.21605446934700012 0.0 0.0 1.0 0.4586215019226074 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.0 0.0 1.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 0.21605446934700012 0.0 0.0 1.0 0.4623163640499115 0.49790239334106445 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 0.21605446934700012 0.0 0.0 1.0 0.4586215019226074 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 0.21605446934700012 0.0 0.0 0.999969482421875 0.46660202741622925 0.49503177404403687 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 0.21605446934700012 0.0 0.0 1.0 0.4623163640499115 0.49790239334106445 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.0 0.0 0.999969482421875 0.4714907705783844 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 0.21605446934700012 0.0 0.0 0.999969482421875 0.46660202741622925 0.49503177404403687 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.0 0.0 0.999969482421875 0.4714907705783844 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 0.0 0.0 1.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 0.21605446934700012 0.0 0.0 1.0 0.47699129581451416 0.48872554302215576 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.0 0.0 0.999969482421875 0.4714907705783844 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 0.21605446934700012 0.0 0.0 1.0 0.4831062853336334 0.48530352115631104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 0.21605446934700012 0.0 0.0 1.0 0.47699129581451416 0.48872554302215576 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 0.21605446934700012 0.0 0.0 1.0 0.4831062853336334 0.48530352115631104 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 0.0 0.0 1.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 0.21605446934700012 0.0 0.0 1.0 0.4971467852592468 0.4780082106590271 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.0 0.0 1.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 0.21605446934700012 0.0 0.0 1.0 0.5050256252288818 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 0.21605446934700012 0.0 0.0 1.0 0.4971467852592468 0.4780082106590271 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 0.21605446934700012 0.0 0.0 1.0 0.5050256252288818 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 0.0 0.0 1.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 0.21605446934700012 0.0 0.0 1.0 0.5203794836997986 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.0 0.0 1.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 0.21605446934700012 0.0 0.0 1.0 0.5203794836997986 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 0.0 0.0 0.999969482421875 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 0.21605446934700012 0.0 0.0 1.0 0.5337937474250793 0.4586760401725769 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.0 0.0 1.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 0.21605446934700012 0.0 0.0 1.0 0.5337937474250793 0.4586760401725769 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 0.0 0.0 1.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 0.21605446934700012 0.0 0.0 1.0 0.5452784299850464 0.450860857963562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.0 0.0 1.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 0.21605446934700012 0.0 0.0 1.0 0.5452784299850464 0.450860857963562 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 0.0 0.0 1.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 0.21605446934700012 0.0 0.0 1.0 0.5549336075782776 0.4429643750190735 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.0 0.0 1.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 0.21605446934700012 0.0 0.0 1.0 0.5549336075782776 0.4429643750190735 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 0.0 0.0 1.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 0.0 0.0 1.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 0.0 0.0 1.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 0.0 0.0 1.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 0.21605446934700012 0.0 0.0 1.0 0.5662951469421387 0.4307813048362732 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.0 0.0 1.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 0.0 0.0 1.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 0.21605446934700012 0.0 0.0 1.0 0.5662951469421387 0.4307813048362732 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 0.0 0.0 0.999969482421875 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 0.0 0.0 1.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 0.0 0.0 0.999969482421875 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.0 0.0 1.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.0 0.0 1.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.0 0.0 1.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 0.0 0.0 0.999969482421875 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.0 0.0 1.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 0.0 0.0 1.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.0 0.0 1.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 0.21605446934700012 0.0 0.0 1.0 0.4191216230392456 0.4123419523239136 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 0.0 0.0 1.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 0.21605446934700012 0.0 0.0 1.0 0.4191216230392456 0.4123419523239136 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.0 0.0 1.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 0.0 0.0 1.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 0.0 0.0 1.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 0.0 0.0 1.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.0 0.0 0.999969482421875 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.0 0.0 1.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.0 0.0 0.999969482421875 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 0.0 0.0 1.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.0 0.0 0.999969482421875 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 0.21605446934700012 0.0 0.0 1.0 0.44204097986221313 0.387759804725647 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 0.0 0.0 1.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 0.21605446934700012 0.0 0.0 1.0 0.44204097986221313 0.387759804725647 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.0 0.0 1.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 0.0 0.0 1.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 0.0 0.0 1.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 0.0 0.0 1.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.0 0.0 0.999969482421875 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 0.21605446934700012 0.0 0.0 1.0 0.4697710871696472 0.36776047945022583 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 0.0 0.0 1.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 0.0 0.0 1.0 0.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 0.21605446934700012 0.0 0.0 1.0 0.4697710871696472 0.36776047945022583 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 0.0 0.0 1.0 0.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.0 0.0 1.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 0.21605446934700012 0.0 0.0 1.0 0.4936082363128662 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 0.0 0.0 1.0 0.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 0.0 0.0 0.999969482421875 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 0.21605446934700012 0.0 0.0 1.0 0.4936082363128662 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 0.0 0.0 0.999969482421875 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.0 0.0 1.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 0.21605446934700012 0.0 0.0 1.0 0.5097468495368958 0.34996771812438965 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 0.0 0.0 0.999969482421875 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 0.21605446934700012 0.0 0.0 0.999969482421875 0.5124109387397766 0.3489842414855957 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 0.21605446934700012 0.0 0.0 1.0 0.5097468495368958 0.34996771812438965 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 0.21605446934700012 0.0 0.0 0.999969482421875 0.5148954391479492 0.3480064272880554 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 0.21605446934700012 0.0 0.0 0.999969482421875 0.5124109387397766 0.3489842414855957 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 0.21605446934700012 0.0 0.0 0.999969482421875 0.5148954391479492 0.3480064272880554 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.0 0.0 1.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 0.21605446934700012 0.0 0.0 1.0 0.5193297863006592 0.346042275428772 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 0.0 0.0 1.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 0.21605446934700012 0.0 0.0 1.0 0.5212823152542114 0.3450441360473633 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 0.21605446934700012 0.0 0.0 1.0 0.5193297863006592 0.346042275428772 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 0.21605446934700012 0.0 0.0 1.0 0.5230607390403748 0.344028115272522 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 0.21605446934700012 0.0 0.0 1.0 0.5212823152542114 0.3450441360473633 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 0.21605446934700012 0.0 0.0 1.0 0.5246662497520447 0.3429895043373108 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 0.21605446934700012 0.0 0.0 1.0 0.5230607390403748 0.344028115272522 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 0.21605446934700012 0.0 0.0 1.0 0.526100754737854 0.3419238328933716 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 0.21605446934700012 0.0 0.0 1.0 0.5246662497520447 0.3429895043373108 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 0.0 0.0 1.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 0.21605446934700012 0.0 0.0 1.0 0.526100754737854 0.3419238328933716 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 0.0 0.0 1.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.0 0.0 1.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 0.21605446934700012 0.0 0.0 0.999969482421875 0.5284615159034729 0.33969563245773315 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 0.0 0.0 1.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 0.21605446934700012 0.0 0.0 1.0 0.5293902158737183 0.3385264277458191 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 0.21605446934700012 0.0 0.0 0.999969482421875 0.5284615159034729 0.33969563245773315 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 0.21605446934700012 0.0 0.0 1.0 0.5301678776741028 0.33722954988479614 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 0.21605446934700012 0.0 0.0 1.0 0.5293902158737183 0.3385264277458191 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 0.0 0.0 0.999969482421875 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 0.21605446934700012 0.0 0.0 1.0 0.43197548389434814 0.3392900228500366 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 0.21605446934700012 0.0 0.0 1.0 0.4315919876098633 0.34482550621032715 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 0.21605446934700012 0.0 0.0 1.0 0.5308834910392761 0.33586686849594116 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 0.21605446934700012 0.0 0.0 1.0 0.5301678776741028 0.33722954988479614 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 0.21605446934700012 0.0 0.0 1.0 0.5315372943878174 0.3344380855560303 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 0.21605446934700012 0.0 0.0 1.0 0.5308834910392761 0.33586686849594116 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 0.21605446934700012 0.0 0.0 1.0 0.5315372943878174 0.3344380855560303 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 0.0 0.0 0.999969482421875 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 0.21605446934700012 0.0 0.0 1.0 0.432491660118103 0.33396750688552856 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 0.21605446934700012 0.0 0.0 1.0 0.43197548389434814 0.3392900228500366 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.0 0.0 1.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 0.21605446934700012 0.0 0.0 1.0 0.5326606631278992 0.33138126134872437 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 0.0 0.0 1.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 0.21605446934700012 0.0 0.0 1.0 0.5331304669380188 0.3297528028488159 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 0.21605446934700012 0.0 0.0 1.0 0.5326606631278992 0.33138126134872437 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 0.21605446934700012 0.0 0.0 1.0 0.5335390567779541 0.3280574083328247 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 0.21605446934700012 0.0 0.0 1.0 0.5331304669380188 0.3297528028488159 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 0.0 0.0 0.999969482421875 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 0.21605446934700012 0.0 0.0 1.0 0.43314307928085327 0.3288540244102478 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 0.21605446934700012 0.0 0.0 1.0 0.432491660118103 0.33396750688552856 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 0.21605446934700012 0.0 0.0 0.999969482421875 0.5338865518569946 0.3262951970100403 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 0.21605446934700012 0.0 0.0 1.0 0.5335390567779541 0.3280574083328247 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 0.21605446934700012 0.0 0.0 1.0 0.5341729521751404 0.32446593046188354 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 0.21605446934700012 0.0 0.0 0.999969482421875 0.5338865518569946 0.3262951970100403 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 0.21605446934700012 0.0 0.0 1.0 0.5341729521751404 0.32446593046188354 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.0 0.0 0.999969482421875 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 0.0 0.0 0.999969482421875 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 0.21605446934700012 0.0 0.0 1.0 0.43314307928085327 0.3288540244102478 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 0.21605446934700012 0.0 0.0 1.0 0.5345618724822998 0.3206072449684143 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 0.0 0.0 0.999969482421875 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 0.0 0.0 0.999969482421875 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 0.21605446934700012 0.0 0.0 1.0 0.5346640348434448 0.31857800483703613 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 0.21605446934700012 0.0 0.0 1.0 0.5345618724822998 0.3206072449684143 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 0.21605446934700012 0.0 0.0 1.0 0.4348626732826233 0.3192404508590698 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.0 0.0 1.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 0.21605446934700012 0.0 0.0 1.0 0.534707248210907 0.3155941367149353 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 0.21605446934700012 0.0 0.0 1.0 0.5346640348434448 0.31857800483703613 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 0.21605446934700012 0.0 0.0 1.0 0.534707248210907 0.3155941367149353 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 0.21605446934700012 0.0 0.0 1.0 0.4348626732826233 0.3192404508590698 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.0 0.0 1.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 0.21605446934700012 0.0 0.0 1.0 0.5344247221946716 0.30989009141921997 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 0.0 0.0 1.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 0.0 0.0 1.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 0.0 0.0 1.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 0.0 0.0 1.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 0.21605446934700012 0.0 0.0 1.0 0.43715718388557434 0.3104264736175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.0 0.0 1.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 0.21605446934700012 0.0 0.0 0.999969482421875 0.5340960025787354 0.307165265083313 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 0.21605446934700012 0.0 0.0 1.0 0.5344247221946716 0.30989009141921997 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 0.0 0.0 1.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 0.21605446934700012 0.0 0.0 0.999969482421875 0.5340960025787354 0.307165265083313 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 0.0 0.0 1.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 0.21605446934700012 0.0 0.0 1.0 0.43715718388557434 0.3104264736175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 0.0 0.0 1.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.0 0.0 1.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 0.21605446934700012 0.0 0.0 1.0 0.5330564379692078 0.30196136236190796 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 0.0 0.0 1.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 0.0 0.0 1.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 0.21605446934700012 0.0 0.0 1.0 0.44005027413368225 0.30239778757095337 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.0 0.0 1.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 0.21605446934700012 0.0 0.0 0.999969482421875 0.5323424339294434 0.2994800806045532 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 0.21605446934700012 0.0 0.0 1.0 0.5330564379692078 0.30196136236190796 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 0.21605446934700012 0.0 0.0 1.0 0.5314965844154358 0.2970784902572632 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 0.21605446934700012 0.0 0.0 0.999969482421875 0.5323424339294434 0.2994800806045532 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 0.21605446934700012 0.0 0.0 1.0 0.44172874093055725 0.29867643117904663 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 0.21605446934700012 0.0 0.0 1.0 0.44005027413368225 0.30239778757095337 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 0.21605446934700012 0.0 0.0 1.0 0.5314965844154358 0.2970784902572632 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.0 0.0 1.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 0.21605446934700012 0.0 0.0 1.0 0.44172874093055725 0.29867643117904663 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 0.21605446934700012 0.0 0.0 0.999969482421875 0.5294021368026733 0.29251474142074585 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 0.0 0.0 1.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 0.0 0.0 0.999969482421875 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 0.0 0.0 1.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 0.21605446934700012 0.0 0.0 0.999969482421875 0.5281496644020081 0.2903541922569275 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 0.21605446934700012 0.0 0.0 0.999969482421875 0.5294021368026733 0.29251474142074585 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 0.0 0.0 0.999969482421875 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 0.21605446934700012 0.0 0.0 1.0 0.44556304812431335 0.291823148727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.0 0.0 1.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 0.21605446934700012 0.0 0.0 1.0 0.5267577171325684 0.28827619552612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 0.21605446934700012 0.0 0.0 0.999969482421875 0.5281496644020081 0.2903541922569275 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 0.0 0.0 0.999969482421875 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 0.21605446934700012 0.0 0.0 1.0 0.44773736596107483 0.288699209690094 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 0.21605446934700012 0.0 0.0 1.0 0.44556304812431335 0.291823148727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 0.0 0.0 1.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 0.21605446934700012 0.0 0.0 1.0 0.5267577171325684 0.28827619552612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 0.0 0.0 1.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.0 0.0 1.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 0.0 0.0 0.999969482421875 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 0.21605446934700012 0.0 0.0 1.0 0.44773736596107483 0.288699209690094 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 0.21605446934700012 0.0 0.0 1.0 0.5219649076461792 0.2828216552734375 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 0.0 0.0 1.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 0.0 0.0 0.999969482421875 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 0.21605446934700012 0.0 0.0 1.0 0.45266231894493103 0.2830923795700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.0 0.0 1.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 0.21605446934700012 0.0 0.0 1.0 0.5192342400550842 0.2804054617881775 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 0.21605446934700012 0.0 0.0 1.0 0.5219649076461792 0.2828216552734375 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 0.21605446934700012 0.0 0.0 0.999969482421875 0.45541778206825256 0.2806205153465271 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 0.21605446934700012 0.0 0.0 1.0 0.45266231894493103 0.2830923795700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 0.21605446934700012 0.0 0.0 1.0 0.516277015209198 0.2782076597213745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 0.21605446934700012 0.0 0.0 1.0 0.5192342400550842 0.2804054617881775 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 0.21605446934700012 0.0 0.0 0.999969482421875 0.45837074518203735 0.27837908267974854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 0.21605446934700012 0.0 0.0 0.999969482421875 0.45541778206825256 0.2806205153465271 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 0.21605446934700012 0.0 0.0 1.0 0.516277015209198 0.2782076597213745 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.0 0.0 1.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 0.21605446934700012 0.0 0.0 1.0 0.4615219831466675 0.27637648582458496 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 0.21605446934700012 0.0 0.0 0.999969482421875 0.45837074518203735 0.27837908267974854 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 0.21605446934700012 0.0 0.0 0.999969482421875 0.5096766352653503 0.27450883388519287 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 0.0 0.0 1.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 0.21605446934700012 0.0 0.0 1.0 0.4615219831466675 0.27637648582458496 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 0.21605446934700012 0.0 0.0 1.0 0.5060328841209412 0.27303242683410645 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 0.21605446934700012 0.0 0.0 0.999969482421875 0.5096766352653503 0.27450883388519287 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 0.0 0.0 0.999969482421875 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 0.21605446934700012 0.0 0.0 0.999969482421875 0.4684172570705414 0.27312713861465454 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.0 0.0 1.0 0.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 0.21605446934700012 0.0 0.0 1.0 0.502161979675293 0.2718232274055481 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 0.21605446934700012 0.0 0.0 1.0 0.5060328841209412 0.27303242683410645 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 0.21605446934700012 0.0 0.0 1.0 0.47215789556503296 0.27190256118774414 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 0.21605446934700012 0.0 0.0 0.999969482421875 0.4684172570705414 0.27312713861465454 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 0.21605446934700012 0.0 0.0 0.999969482421875 0.49806731939315796 0.27089667320251465 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 0.21605446934700012 0.0 0.0 1.0 0.502161979675293 0.2718232274055481 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.4760892987251282 0.27096086740493774 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 0.21605446934700012 0.0 0.0 1.0 0.47215789556503296 0.27190256118774414 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 0.21605446934700012 0.0 0.0 0.999969482421875 0.4937538802623749 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 0.21605446934700012 0.0 0.0 0.999969482421875 0.49806731939315796 0.27089667320251465 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 0.21605446934700012 0.0 -0.00012207403779029846 1.0 0.4802062213420868 0.27031534910202026 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.4760892987251282 0.27096086740493774 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 0.21605446934700012 0.0 0.0 1.0 0.48922884464263916 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 0.21605446934700012 0.0 0.0 0.999969482421875 0.4937538802623749 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450160026550293 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 0.21605446934700012 0.0 -0.00012207403779029846 1.0 0.4802062213420868 0.27031534910202026 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450160026550293 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 0.21605446934700012 0.0 0.0 1.0 0.48922884464263916 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0 0.0 1.0 0.48450160026550293 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.0 0.0 1.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.0 0.0 1.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.0 0.0 1.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 0.0 0.0 0.999969482421875 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.0 0.0 1.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 0.0 0.0 1.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.0 0.0 1.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 0.0 0.0 1.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.0 0.0 0.999969482421875 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.0 0.0 1.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.0 0.0 0.999969482421875 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 0.0 0.0 1.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.0 0.0 0.999969482421875 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 0.0 0.0 1.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.0 0.0 1.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 0.0 0.0 1.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.0 0.0 1.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.0 0.0 1.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 0.21605446934700012 0.0 0.0 1.0 0.4022355079650879 0.25275760889053345 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.0 0.0 1.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 0.0 0.0 1.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.0 0.0 1.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 0.21605446934700012 0.0 0.0 1.0 0.4022355079650879 0.25275760889053345 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.0 0.0 1.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 0.0 0.0 1.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.0 0.0 0.999969482421875 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.0 0.0 1.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.0 0.0 0.999969482421875 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 0.0 0.0 1.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.0 0.0 0.999969482421875 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 0.0 0.0 1.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.0 0.0 1.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.0 0.0 1.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.0 0.0 1.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 0.0 0.0 1.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.0 0.0 1.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 0.0 0.0 1.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 0.0 0.0 1.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 0.0 0.0 1.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.0 0.0 1.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 0.0 0.0 1.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.0 0.0 1.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 0.0 0.0 1.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.0 0.0 0.999969482421875 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 0.0 0.0 0.999969482421875 0.46296530961990356 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 0.0 0.0 0.999969482421875 0.46296530961990356 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0 0.0 1.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 0.21605445444583893 0.0 0.0 0.999969482421875 0.4727497100830078 0.2068910002708435 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 0.0 0.0 0.999969482421875 0.46296530961990356 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 0.21605445444583893 0.0 0.0 0.999969482421875 0.4727497100830078 0.2068910002708435 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 0.21605445444583893 0.0 0.0 1.0 0.4830358922481537 0.2059873342514038 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.0 0.0 1.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.46700388193130493 0.6951695084571838 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.42104125022888184 0.6850046515464783 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 0.21605446934700012 0.0 0.0 1.0 0.4619511365890503 0.5655359625816345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.46700388193130493 0.6951695084571838 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 0.0 0.0 1.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.5768240690231323 0.6677558422088623 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 0.21605448424816132 0.0 0.0 1.0 0.536641538143158 0.6864609718322754 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 0.0 0.0 1.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 0.21605448424816132 0.0 0.0 0.999969482421875 0.5768240690231323 0.6677558422088623 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 0.21605446934700012 0.0 0.0 1.0 0.5418952107429504 0.560042142868042 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 0.0 0.0 1.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 0.21605446934700012 0.0 0.0 1.0 0.5422479510307312 0.548079252243042 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 0.21605446934700012 0.0 0.0 1.0 0.5418952107429504 0.560042142868042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 0.21605446934700012 0.0 0.0 1.0 0.46153777837753296 0.5524322390556335 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 0.21605446934700012 0.0 0.0 1.0 0.4619511365890503 0.5655359625816345 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 0.21605446934700012 0.0 0.0 1.0 0.5425242185592651 0.5365892648696899 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 0.21605446934700012 0.0 0.0 1.0 0.5422479510307312 0.548079252243042 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 0.21605446934700012 0.0 0.0 1.0 0.4611889123916626 0.5397636890411377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 0.21605446934700012 0.0 0.0 1.0 0.46153777837753296 0.5524322390556335 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 0.21605446934700012 0.0 0.0 0.999969482421875 0.542721152305603 0.5256565809249878 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 0.21605446934700012 0.0 0.0 1.0 0.5425242185592651 0.5365892648696899 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 0.21605446934700012 0.0 0.0 1.0 0.4609074592590332 0.5276371240615845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 0.21605446934700012 0.0 0.0 1.0 0.4611889123916626 0.5397636890411377 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 0.21605446934700012 0.0 0.0 1.0 0.5428363680839539 0.515357255935669 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 0.21605446934700012 0.0 0.0 0.999969482421875 0.542721152305603 0.5256565809249878 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 0.21605446934700012 0.0 0.0 0.999969482421875 0.4606959819793701 0.5161502361297607 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 0.21605446934700012 0.0 0.0 1.0 0.4609074592590332 0.5276371240615845 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 0.21605446934700012 0.0 0.0 1.0 0.5428673028945923 0.5057579278945923 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 0.21605446934700012 0.0 0.0 1.0 0.5428363680839539 0.515357255935669 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 0.21605446934700012 0.0 0.0 1.0 0.46055692434310913 0.5053889751434326 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 0.21605446934700012 0.0 0.0 0.999969482421875 0.4606959819793701 0.5161502361297607 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 0.21605446934700012 0.0 0.0 0.999969482421875 0.5428118705749512 0.4969159960746765 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 0.21605446934700012 0.0 0.0 1.0 0.5428673028945923 0.5057579278945923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 0.21605446934700012 0.0 0.0 0.999969482421875 0.46049249172210693 0.4954274892807007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 0.21605446934700012 0.0 0.0 1.0 0.46055692434310913 0.5053889751434326 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 0.21605446934700012 0.0 0.0 0.999969482421875 0.5426681041717529 0.4888794422149658 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 0.21605446934700012 0.0 0.0 0.999969482421875 0.5428118705749512 0.4969159960746765 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.0 0.0 1.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 0.21605446934700012 0.0 0.0 0.999969482421875 0.46049249172210693 0.4954274892807007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 0.0 0.0 1.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.0 0.0 1.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 0.0 0.0 1.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 0.21605446934700012 0.0 0.0 1.0 0.5424344539642334 0.4816877245903015 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 0.21605446934700012 0.0 0.0 0.999969482421875 0.5426681041717529 0.4888794422149658 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 0.0 0.0 1.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.0 0.0 0.999969482421875 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.0 0.0 1.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 0.21605446934700012 0.0 0.0 0.999969482421875 0.5421093106269836 0.475372850894928 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 0.21605446934700012 0.0 0.0 1.0 0.5424344539642334 0.4816877245903015 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 0.0 0.0 1.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.0 0.0 0.999969482421875 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 0.0 0.0 1.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 0.0 0.0 1.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.0 0.0 1.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.0 0.0 0.999969482421875 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 0.21605446934700012 0.0 0.0 1.0 0.5416918396949768 0.46996021270751953 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 0.21605446934700012 0.0 0.0 0.999969482421875 0.5421093106269836 0.475372850894928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 0.0 0.0 1.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.0 0.0 1.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 0.0 0.0 1.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 0.21605446934700012 0.0 0.0 1.0 0.5411810278892517 0.4654701352119446 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 0.21605446934700012 0.0 0.0 1.0 0.5416918396949768 0.46996021270751953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 0.0 0.0 1.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 0.21605446934700012 0.0 0.0 0.999969482421875 0.46101683378219604 0.46464651823043823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.0 0.0 1.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 0.21605446934700012 0.0 0.0 1.0 0.5405697822570801 0.46148681640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 0.21605446934700012 0.0 0.0 1.0 0.5411810278892517 0.4654701352119446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 0.0 0.0 1.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.0 0.0 1.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 0.21605446934700012 0.0 0.0 0.999969482421875 0.46101683378219604 0.46464651823043823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 0.0 0.0 1.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.0 0.0 1.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 0.0 0.0 1.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 0.21605446934700012 0.0 0.0 1.0 0.5398499369621277 0.45758336782455444 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 0.21605446934700012 0.0 0.0 1.0 0.5405697822570801 0.46148681640625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 0.0 0.0 1.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 0.21605446934700012 0.0 0.0 1.0 0.4617636799812317 0.45516467094421387 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.0 0.0 1.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 0.21605446934700012 0.0 0.0 1.0 0.5390197038650513 0.45376038551330566 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 0.21605446934700012 0.0 0.0 1.0 0.5398499369621277 0.45758336782455444 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 0.0 0.0 1.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.0 0.0 0.999969482421875 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 0.21605446934700012 0.0 0.0 1.0 0.4617636799812317 0.45516467094421387 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 0.21605446934700012 0.0 0.0 1.0 0.5380769968032837 0.45001834630966187 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 0.21605446934700012 0.0 0.0 1.0 0.5390197038650513 0.45376038551330566 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 0.0 0.0 1.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.0 0.0 0.999969482421875 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 0.0 0.0 1.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 0.0 0.0 1.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 0.21605446934700012 0.0 0.0 1.0 0.4628440737724304 0.44795089960098267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.0 0.0 0.999969482421875 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 0.21605446934700012 0.0 0.0 1.0 0.5370199084281921 0.4463580846786499 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 0.21605446934700012 0.0 0.0 1.0 0.5380769968032837 0.45001834630966187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 0.0 0.0 1.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.0 0.0 1.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 0.21605446934700012 0.0 0.0 1.0 0.4628440737724304 0.44795089960098267 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 0.21605446934700012 0.0 0.0 1.0 0.5358461737632751 0.44278061389923096 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 0.21605446934700012 0.0 0.0 1.0 0.5370199084281921 0.4463580846786499 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 0.0 0.0 0.999969482421875 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.0 0.0 1.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 0.0 0.0 1.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 0.0 0.0 0.999969482421875 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 0.21605446934700012 0.0 0.0 1.0 0.4642685651779175 0.4411802887916565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.0 0.0 1.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 0.21605446934700012 0.0 0.0 1.0 0.5345537662506104 0.43928706645965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 0.21605446934700012 0.0 0.0 1.0 0.5358461737632751 0.44278061389923096 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 0.0 0.0 0.999969482421875 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 0.21605446934700012 0.0 0.0 1.0 0.4651119112968445 0.4379647970199585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 0.21605446934700012 0.0 0.0 1.0 0.4642685651779175 0.4411802887916565 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 0.21605446934700012 0.0 0.0 1.0 0.5331403017044067 0.4358789324760437 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 0.21605446934700012 0.0 0.0 1.0 0.5345537662506104 0.43928706645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 0.0 0.0 0.999969482421875 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.0 0.0 1.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 0.21605446934700012 0.0 0.0 1.0 0.4651119112968445 0.4379647970199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 0.21605446934700012 0.0 0.0 0.999969482421875 0.5316035151481628 0.43255800008773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 0.21605446934700012 0.0 0.0 1.0 0.5331403017044067 0.4358789324760437 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 0.0 0.0 1.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.0 0.0 1.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 0.0 0.0 0.999969482421875 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 0.0 0.0 1.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 0.21605446934700012 0.0 0.0 1.0 0.46706393361091614 0.4318809509277344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.0 0.0 1.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 0.21605446934700012 0.0 0.0 1.0 0.5299412608146667 0.42932629585266113 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 0.21605446934700012 0.0 0.0 0.999969482421875 0.5316035151481628 0.43255800008773804 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 0.0 0.0 1.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 0.21605446934700012 0.0 0.0 1.0 0.46817395091056824 0.4290156364440918 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 0.21605446934700012 0.0 0.0 1.0 0.46706393361091614 0.4318809509277344 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 0.0 0.0 1.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 0.21605446934700012 0.0 0.0 1.0 0.5299412608146667 0.42932629585266113 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 0.0 0.0 1.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.0 0.0 0.999969482421875 0.4693742096424103 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 0.21605446934700012 0.0 0.0 1.0 0.46817395091056824 0.4290156364440918 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.0 0.0 0.999969482421875 0.4693742096424103 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 0.0 0.0 1.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5262308716773987 0.42314088344573975 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 0.0 0.0 1.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 0.0 0.0 1.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 0.21605446934700012 0.0 0.0 1.0 0.4706650972366333 0.42364639043807983 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.0 0.0 0.999969482421875 0.4693742096424103 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 0.21605446934700012 0.0 0.0 1.0 0.47204694151878357 0.421146035194397 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 0.21605446934700012 0.0 0.0 1.0 0.4706650972366333 0.42364639043807983 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 0.21605446934700012 0.0 0.0 1.0 0.5242090225219727 0.42025721073150635 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 0.21605446934700012 0.0 0.0 0.999969482421875 0.5262308716773987 0.42314088344573975 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 0.21605446934700012 0.0 0.0 0.999969482421875 0.47352027893066406 0.418770968914032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 0.21605446934700012 0.0 0.0 1.0 0.47204694151878357 0.421146035194397 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 0.21605446934700012 0.0 0.0 1.0 0.5221152901649475 0.4176033139228821 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 0.21605446934700012 0.0 0.0 1.0 0.5242090225219727 0.42025721073150635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.0 0.0 1.0 0.4750799536705017 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 0.21605446934700012 0.0 0.0 0.999969482421875 0.47352027893066406 0.418770968914032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.0 0.0 1.0 0.4750799536705017 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 0.0 0.0 1.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 0.21605446934700012 0.0 0.0 1.0 0.5199500918388367 0.4151836633682251 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 0.21605446934700012 0.0 0.0 1.0 0.5221152901649475 0.4176033139228821 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 0.21605446934700012 0.0 0.0 1.0 0.4767209589481354 0.4145115613937378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.0 0.0 1.0 0.4750799536705017 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 0.21605446934700012 0.0 0.0 1.0 0.5177140831947327 0.41300249099731445 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 0.21605446934700012 0.0 0.0 1.0 0.5199500918388367 0.4151836633682251 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 0.21605446934700012 0.0 0.0 1.0 0.47844284772872925 0.4126579165458679 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 0.21605446934700012 0.0 0.0 1.0 0.4767209589481354 0.4145115613937378 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 0.21605446934700012 0.0 0.0 1.0 0.5154080986976624 0.4110640287399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 0.21605446934700012 0.0 0.0 1.0 0.5177140831947327 0.41300249099731445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 0.21605446934700012 0.0 0.0 0.999969482421875 0.48024505376815796 0.4109910726547241 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 0.21605446934700012 0.0 0.0 1.0 0.47844284772872925 0.4126579165458679 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 0.21605446934700012 0.0 0.0 1.0 0.5130330324172974 0.40937238931655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 0.21605446934700012 0.0 0.0 1.0 0.5154080986976624 0.4110640287399292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.0 0.0 0.999969482421875 0.4821268618106842 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 0.21605446934700012 0.0 0.0 0.999969482421875 0.48024505376815796 0.4109910726547241 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.0 0.0 0.999969482421875 0.4821268618106842 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 0.0 0.0 1.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 0.21605446934700012 0.0 0.0 1.0 0.48408734798431396 0.40822577476501465 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.0 0.0 0.999969482421875 0.4821268618106842 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 0.21605446934700012 0.0 0.0 0.999969482421875 0.5105903148651123 0.40793150663375854 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 0.21605446934700012 0.0 0.0 1.0 0.5130330324172974 0.40937238931655884 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 0.21605446934700012 0.0 0.0 1.0 0.48612532019615173 0.40713149309158325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 0.21605446934700012 0.0 0.0 1.0 0.48408734798431396 0.40822577476501465 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080812573432922 0.40674519538879395 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 0.21605446934700012 0.0 0.0 0.999969482421875 0.5105903148651123 0.40793150663375854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 0.21605446934700012 0.0 0.0 1.0 0.48823946714401245 0.4062318801879883 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 0.21605446934700012 0.0 0.0 1.0 0.48612532019615173 0.40713149309158325 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.50550776720047 0.4058172106742859 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080812573432922 0.40674519538879395 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 0.21605446934700012 0.0 0.0 1.0 0.4904281795024872 0.4055290222167969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 0.21605446934700012 0.0 0.0 1.0 0.48823946714401245 0.4062318801879883 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 0.21605446934700012 0.0 0.0 1.0 0.5028718709945679 0.4051510691642761 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.50550776720047 0.4058172106742859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4926895201206207 0.40502452850341797 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 0.21605446934700012 0.0 0.0 1.0 0.4904281795024872 0.4055290222167969 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 0.21605446934700012 0.0 0.0 1.0 0.5001758337020874 0.4047499895095825 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 0.21605446934700012 0.0 0.0 1.0 0.5028718709945679 0.4051510691642761 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 0.21605446934700012 0.0 -0.0001831110566854477 1.0 0.4950215816497803 0.4047200679779053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4926895201206207 0.40502452850341797 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 0.0 0.0 1.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 0.21605446934700012 0.0 0.0 1.0 0.5001758337020874 0.4047499895095825 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 0.0 0.0 1.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 0.21605446934700012 0.0 -0.0001831110566854477 1.0 0.4950215816497803 0.4047200679779053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 0.0 0.0 1.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 0.21605446934700012 0.0 0.0 1.0 0.40534508228302 0.41134870052337646 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 0.0 0.0 1.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 0.0 0.0 1.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 0.21605446934700012 0.0 0.0 1.0 0.40534508228302 0.41134870052337646 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 0.0 0.0 1.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.0 0.0 1.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.5546995401382446 0.3343638777732849 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.0 0.0 1.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 0.0 0.0 1.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.0 0.0 1.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 0.0 0.0 1.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 0.0 0.0 1.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.0 0.0 1.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.0 0.0 1.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 0.0 0.0 1.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.0 0.0 1.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 0.0 0.0 1.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 0.0 0.0 1.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.0 0.0 1.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.0 0.0 1.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 0.0 0.0 1.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.0 0.0 1.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 0.0 0.0 1.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 0.0 0.0 1.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.0 0.0 1.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.0 0.0 1.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 0.0 0.0 1.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.0 0.0 1.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 0.0 0.0 1.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 0.0 0.0 1.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.0 0.0 1.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.0 0.0 1.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 0.0 0.0 1.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.0 0.0 1.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 0.0 0.0 1.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 0.0 0.0 1.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.0 0.0 1.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 0.0 0.0 0.999969482421875 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 0.0 0.0 1.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 0.0 0.0 0.999969482421875 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.0 0.0 1.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 0.0 0.0 1.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.0 0.0 1.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 0.0 0.0 0.999969482421875 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 0.0 0.0 1.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.0 0.0 1.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.0 0.0 1.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 0.0 0.0 0.999969482421875 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.0 0.0 1.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 0.0 0.0 1.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 0.0 0.0 0.999969482421875 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.0 0.0 1.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.0 0.0 1.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 0.0 0.0 1.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.0 0.0 1.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 0.0 0.0 0.999969482421875 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 0.0 0.0 1.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 0.21605446934700012 0.0 0.0 1.0 0.5273538827896118 0.3437744975090027 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.0 0.0 1.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 0.0 0.0 1.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 0.21605446934700012 0.0 0.0 1.0 0.5273538827896118 0.3437744975090027 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 0.0 0.0 1.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 0.0 0.0 1.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.0 0.0 1.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 0.21605446934700012 0.0 0.0 1.0 0.5273538827896118 0.3437744975090027 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 0.0 0.0 1.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.0 0.0 1.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 0.0 0.0 1.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 0.0 0.0 1.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.0 0.0 1.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.0 0.0 1.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 0.0 0.0 1.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.0 0.0 1.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 0.0 0.0 1.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 0.0 0.0 1.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.0 0.0 1.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.0 0.0 1.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 0.0 0.0 0.999969482421875 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.0 0.0 1.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 0.0 0.0 1.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 0.0 0.0 0.999969482421875 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.0 0.0 1.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.0 0.0 1.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 0.0 0.0 1.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.0 0.0 1.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 0.0 0.0 0.999969482421875 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 0.0 0.0 1.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.0 0.0 1.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.0 0.0 1.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 0.0 0.0 1.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.0 0.0 1.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 0.0 0.0 1.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 0.0 0.0 1.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.0 0.0 1.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.0 0.0 1.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 0.0 0.0 1.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.0 0.0 1.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 0.0 0.0 1.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 0.0 0.0 1.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.0 0.0 1.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.0 0.0 1.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 0.0 0.0 0.999969482421875 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.0 0.0 1.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 0.0 0.0 1.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 0.0 0.0 0.999969482421875 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.0 0.0 1.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.0 0.0 1.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 0.0 0.0 1.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.0 0.0 1.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 0.0 0.0 0.999969482421875 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 0.0 0.0 1.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.0 0.0 1.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.0 0.0 1.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 0.0 0.0 1.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.0 0.0 1.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 0.0 0.0 1.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 0.0 0.0 1.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.0 0.0 1.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.0 0.0 1.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 0.0 0.0 1.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.0 0.0 1.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 0.0 0.0 1.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 0.0 0.0 1.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.0 0.0 1.0 0.48406782746315 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.0 0.0 1.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 0.0 0.0 1.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.0 0.0 1.0 0.48406782746315 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 0.0 0.0 1.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 0.0 0.0 1.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0 0.0 1.0 0.4797341823577881 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.0 0.0 1.0 0.48406782746315 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0 0.0 1.0 0.4797341823577881 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 0.0 0.0 1.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4753739535808563 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0 0.0 1.0 0.4797341823577881 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 0.21605445444583893 0.0 0.0 1.0 0.4665878415107727 0.31540971994400024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4753739535808563 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 0.0 6.103701889514923e-05 1.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 0.21605445444583893 0.0 0.0 1.0 0.4665878415107727 0.31540971994400024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 0.21605445444583893 0.0 0.00015259254723787308 0.999969482421875 0.4709974229335785 0.31470078229904175 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.0 -3.0518509447574615e-05 0.999969482421875 0.4753739535808563 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.44902312755584717 0.7215856313705444 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.5506380796432495 0.7342168092727661 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.4513011574745178 0.7462323307991028 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.44902312755584717 0.7215856313705444 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 0.21605448424816132 0.0 0.0 1.0 0.5528576970100403 0.7088805437088013 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 0.21605446934700012 0.0 0.0 1.0 0.5506380796432495 0.7342168092727661 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 0.21605446934700012 0.0 0.0 0.999969482421875 0.43876373767852783 0.7131302356719971 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.39915820956230164 0.6972336173057556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 0.21605446934700012 0.0 0.0 0.999969482421875 0.43876373767852783 0.7131302356719971 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 0.0 0.0 1.0 0.48317551612854004 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 0.21605448424816132 0.0 0.0 1.0 0.494787335395813 0.6400524377822876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 0.21605448424816132 0.0 -6.103701889514923e-05 1.0 0.48874813318252563 0.6407021284103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 0.0 0.0 1.0 0.48317551612854004 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 0.21605448424816132 0.0 0.0 1.0 0.494787335395813 0.6400524377822876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 0.0 0.0 1.0 0.4777190089225769 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 0.0 0.0 1.0 0.48317551612854004 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 0.0 0.0 1.0 0.4777190089225769 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 0.0 0.0 1.0 0.47238123416900635 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 0.0 0.0 1.0 0.4777190089225769 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 0.0 0.0 1.0 0.47238123416900635 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 0.0 0.0 1.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 0.0 0.0 1.0 0.47238123416900635 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 0.0 0.0 1.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.0 0.0 0.999969482421875 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 0.0 0.0 1.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.0 0.0 0.999969482421875 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 0.0 0.0 1.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 0.0 0.0 1.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.0 0.0 0.999969482421875 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.0 0.0 0.999969482421875 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 0.0 0.0 1.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.0 0.0 0.999969482421875 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 0.0 0.0 1.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 0.0 0.0 1.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.0 0.0 0.999969482421875 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 0.0 0.0 0.999969482421875 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 0.0 0.0 1.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 0.0 0.0 0.999969482421875 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.0 0.0 1.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 0.0 0.0 0.999969482421875 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.0 0.0 1.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 0.0 0.0 0.999969482421875 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 0.0 0.0 0.999969482421875 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.0 0.0 1.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 0.0 0.0 1.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 0.0 0.0 0.999969482421875 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 0.0 0.0 1.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.0 0.0 1.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 0.0 0.0 1.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.0 0.0 1.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 0.0 0.0 1.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 0.0 0.0 1.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.0 0.0 1.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 0.0 0.0 1.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 0.0 0.0 1.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 0.0 0.0 1.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 0.0 0.0 1.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.0 0.0 1.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.0 0.0 1.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 0.21605446934700012 0.0 0.0 1.0 0.4322170615196228 0.5300252437591553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 0.21605446934700012 0.0 0.0 1.0 0.4322170615196228 0.5300252437591553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 0.21605446934700012 0.0 0.0 1.0 0.4342000186443329 0.5359824895858765 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 0.21605446934700012 0.0 0.0 1.0 0.4342000186443329 0.5359824895858765 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 0.21605446934700012 0.0 0.0 1.0 0.43633294105529785 0.5414889454841614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 0.21605446934700012 0.0 0.0 1.0 0.43633294105529785 0.5414889454841614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 0.21605446934700012 0.0 0.0 1.0 0.43861955404281616 0.5465542078018188 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 0.21605446934700012 0.0 0.0 1.0 0.43861955404281616 0.5465542078018188 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 0.21605446934700012 0.0 0.0 1.0 0.44102004170417786 0.5511919260025024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 0.21605446934700012 0.0 0.0 1.0 0.44102004170417786 0.5511919260025024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 0.21605446934700012 0.0 0.0 1.0 0.4434939920902252 0.5554137825965881 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 0.21605446934700012 0.0 0.0 1.0 0.4434939920902252 0.5554137825965881 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 0.21605446934700012 0.0 0.0 1.0 0.44604381918907166 0.5592247247695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 0.21605446934700012 0.0 0.0 1.0 0.44604381918907166 0.5592247247695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 0.21605446934700012 0.0 0.0 1.0 0.4486721456050873 0.562628984451294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 0.21605446934700012 0.0 0.0 1.0 0.4486721456050873 0.562628984451294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 0.21605446934700012 0.0 0.0 1.0 0.4513814449310303 0.5656299591064453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 0.21605446934700012 0.0 0.0 1.0 0.4513814449310303 0.5656299591064453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 0.21605446934700012 0.0 0.0 1.0 0.4541741907596588 0.5682300329208374 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 0.21605446934700012 0.0 0.0 1.0 0.4541741907596588 0.5682300329208374 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 0.21605446934700012 0.0 0.0 1.0 0.45705264806747437 0.5704306364059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 0.21605446934700012 0.0 0.0 1.0 0.45705264806747437 0.5704306364059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 0.21605446934700012 0.0 0.0 1.0 0.4600192606449127 0.5722322463989258 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 0.21605446934700012 0.0 0.0 1.0 0.4600192606449127 0.5722322463989258 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 0.21605446934700012 0.0 0.0 1.0 0.46307632327079773 0.573634147644043 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 0.21605446934700012 0.0 0.0 1.0 0.46307632327079773 0.573634147644043 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.0 0.0 1.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.0 0.0 1.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.0 0.0 1.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.0 0.0 1.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.0 0.0 1.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.0 0.0 0.999969482421875 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.0 0.0 0.999969482421875 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.0 0.0 1.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.47280994057655334 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.0 0.0 0.999969482421875 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.47280994057655334 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.0 0.0 1.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.0 0.0 0.999969482421875 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 0.21605446934700012 0.0 0.0 1.0 0.4762154221534729 0.5751924514770508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.0 0.0 1.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.47280994057655334 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 0.21605446934700012 0.0 0.0 1.0 0.4795198440551758 0.5745433568954468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.0 0.0 1.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 0.21605446934700012 0.0 0.0 1.0 0.4762154221534729 0.5751924514770508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 0.0 0.0 0.999969482421875 0.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.0 0.0 1.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 0.21605446934700012 0.0 0.0 1.0 0.4795198440551758 0.5745433568954468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 0.0 0.0 0.999969482421875 0.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.0 0.0 1.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 0.21605446934700012 0.0 0.0 1.0 0.48582515120506287 0.5719797611236572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 0.0 0.0 0.999969482421875 0.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 0.21605446934700012 0.0 0.0 1.0 0.4888266324996948 0.5700627565383911 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 0.21605446934700012 0.0 0.0 1.0 0.48582515120506287 0.5719797611236572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 0.21605446934700012 0.0 0.0 1.0 0.49172791838645935 0.5677193403244019 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 0.21605446934700012 0.0 0.0 1.0 0.4888266324996948 0.5700627565383911 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 0.21605446934700012 0.0 0.0 1.0 0.49453020095825195 0.564945638179779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 0.21605446934700012 0.0 0.0 1.0 0.49172791838645935 0.5677193403244019 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 0.0 0.0 1.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 0.21605446934700012 0.0 0.0 1.0 0.49453020095825195 0.564945638179779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 0.0 0.0 1.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.0 0.0 1.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.0 0.0 1.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 0.21605446934700012 0.0 0.0 1.0 0.49984145164489746 0.5580880641937256 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.0 0.0 1.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 0.0 0.0 1.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 0.21605446934700012 0.0 0.0 1.0 0.5023529529571533 0.5539916753768921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.0 0.0 1.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 0.21605446934700012 0.0 0.0 1.0 0.49984145164489746 0.5580880641937256 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 0.0 0.0 1.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.0 0.0 1.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 0.21605446934700012 0.0 0.0 1.0 0.5023529529571533 0.5539916753768921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 0.0 0.0 1.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.0 0.0 1.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.0 0.0 1.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 0.21605446934700012 0.0 0.0 1.0 0.5070947408676147 0.5444257855415344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.0 0.0 1.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 0.0 0.0 1.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 0.21605446934700012 0.0 0.0 1.0 0.5092871785163879 0.5388861894607544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.0 0.0 1.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 0.21605446934700012 0.0 0.0 1.0 0.5070947408676147 0.5444257855415344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 0.0 0.0 1.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.0 0.0 1.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 0.21605446934700012 0.0 0.0 1.0 0.5092871785163879 0.5388861894607544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 0.0 0.0 1.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.0 0.0 1.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.0 0.0 1.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 0.21605446934700012 0.0 0.0 1.0 0.513160228729248 0.5260202884674072 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.0 0.0 1.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 0.0 0.0 1.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 0.0 0.0 1.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.0 0.0 1.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 0.21605446934700012 0.0 0.0 1.0 0.513160228729248 0.5260202884674072 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 0.0 0.0 1.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.0 0.0 1.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.0 0.0 1.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.42868953943252563 0.5167142152786255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.0 0.0 1.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 0.21605446934700012 0.0 0.0 1.0 0.516359806060791 0.510663628578186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.0 0.0 1.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 0.0 0.0 1.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 0.21605446934700012 0.0 0.0 1.0 0.42713963985443115 0.509336531162262 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.42868953943252563 0.5167142152786255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 0.0 0.0 1.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.0 0.0 1.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 0.21605446934700012 0.0 0.0 1.0 0.516359806060791 0.510663628578186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 0.0 0.0 1.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.0 0.0 1.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.0 0.0 1.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 0.21605446934700012 0.0 0.0 1.0 0.4257296025753021 0.5014607906341553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 0.21605446934700012 0.0 0.0 1.0 0.42713963985443115 0.509336531162262 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 0.0 0.0 1.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.0 0.0 1.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 0.0 0.0 1.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 0.21605446934700012 0.0 0.0 0.999969482421875 0.424457848072052 0.4930746555328369 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 0.21605446934700012 0.0 0.0 1.0 0.4257296025753021 0.5014607906341553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 0.0 0.0 1.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.0 0.0 1.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.0 0.0 1.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 0.21605446934700012 0.0 0.0 1.0 0.5199055075645447 0.4826669692993164 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.0 0.0 1.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 0.0 0.0 1.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 0.21605446934700012 0.0 0.0 1.0 0.4233233332633972 0.48416680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 0.21605446934700012 0.0 0.0 0.999969482421875 0.424457848072052 0.4930746555328369 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 0.0 0.0 1.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.0 0.0 1.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 0.21605446934700012 0.0 0.0 1.0 0.5199055075645447 0.4826669692993164 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 0.21605446934700012 0.0 0.0 1.0 0.42232567071914673 0.4747272729873657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 0.21605446934700012 0.0 0.0 1.0 0.4233233332633972 0.48416680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 0.0 0.0 1.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.0 0.0 0.999969482421875 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.0 0.0 1.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 0.21605446934700012 0.0 0.0 0.999969482421875 0.5214253664016724 0.46054428815841675 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.0 0.0 0.999969482421875 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 0.0 0.0 1.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 0.21605446934700012 0.0 0.0 1.0 0.4214646518230438 0.4647483229637146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 0.21605446934700012 0.0 0.0 1.0 0.42232567071914673 0.4747272729873657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.0 0.0 0.999969482421875 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 0.21605446934700012 0.0 0.0 0.999969482421875 0.5214253664016724 0.46054428815841675 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 0.0 0.0 1.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.0 0.0 0.999969482421875 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 0.21605446934700012 0.0 0.0 1.0 0.42074114084243774 0.4542253017425537 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 0.21605446934700012 0.0 0.0 1.0 0.4214646518230438 0.4647483229637146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 0.0 0.0 1.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 0.0 0.0 1.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 0.21605446934700012 0.0 0.0 1.0 0.4201444983482361 0.44329583644866943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 0.21605446934700012 0.0 0.0 1.0 0.42074114084243774 0.4542253017425537 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 0.0 0.0 1.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.0 0.0 1.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 0.0 0.0 1.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 0.21605446934700012 0.0 0.0 1.0 0.5223656892776489 0.42353588342666626 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.0 0.0 1.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 0.0 0.0 1.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 0.21605446934700012 0.0 0.0 0.999969482421875 0.4197072982788086 0.4327854514122009 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 0.21605446934700012 0.0 0.0 1.0 0.4201444983482361 0.44329583644866943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 0.21605446934700012 0.0 0.0 1.0 0.41943296790122986 0.42270857095718384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 0.21605446934700012 0.0 0.0 0.999969482421875 0.4197072982788086 0.4327854514122009 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 0.0 0.0 1.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.0 0.0 1.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 0.21605446934700012 0.0 0.0 1.0 0.5223656892776489 0.42353588342666626 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 0.0 0.0 1.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.0 0.0 1.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.0 0.0 1.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 0.21605446934700012 0.0 0.0 1.0 0.4193257689476013 0.41307467222213745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 0.21605446934700012 0.0 0.0 1.0 0.41943296790122986 0.42270857095718384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.0 0.0 1.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 0.0 0.0 1.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.0 0.0 1.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.0 0.0 1.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 0.21605446934700012 0.0 0.0 1.0 0.41938960552215576 0.40388965606689453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 0.21605446934700012 0.0 0.0 1.0 0.4193257689476013 0.41307467222213745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 0.21605446934700012 0.0 0.0 0.999969482421875 0.5214453935623169 0.3904763460159302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.0 0.0 1.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 0.0 0.0 0.999969482421875 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 0.21605446934700012 0.0 0.0 0.999969482421875 0.41962891817092896 0.39515578746795654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 0.21605446934700012 0.0 0.0 1.0 0.41938960552215576 0.40388965606689453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 0.0 0.0 0.999969482421875 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.0 0.0 1.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 0.21605446934700012 0.0 0.0 0.999969482421875 0.5214453935623169 0.3904763460159302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 0.0 0.0 0.999969482421875 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.0 0.0 1.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.0 0.0 1.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 0.21605446934700012 0.0 0.0 1.0 0.4200480282306671 0.38687312602996826 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 0.21605446934700012 0.0 0.0 0.999969482421875 0.41962891817092896 0.39515578746795654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 0.21605446934700012 0.0 0.0 0.999969482421875 0.5197115540504456 0.37125450372695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.0 0.0 1.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 0.0 0.0 0.999969482421875 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 0.21605446934700012 0.0 0.0 0.999969482421875 0.4206518530845642 0.3790395259857178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 0.21605446934700012 0.0 0.0 1.0 0.4200480282306671 0.38687312602996826 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 0.0 0.0 1.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.0 0.0 1.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 0.21605446934700012 0.0 0.0 0.999969482421875 0.5197115540504456 0.37125450372695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 0.0 0.0 1.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.0 0.0 1.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.0 0.0 1.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 0.21605446934700012 0.0 0.0 1.0 0.42144501209259033 0.3716520071029663 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 0.21605446934700012 0.0 0.0 0.999969482421875 0.4206518530845642 0.3790395259857178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 0.21605446934700012 0.0 0.0 1.0 0.517025351524353 0.35432738065719604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.0 0.0 1.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 0.0 0.0 1.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 0.21605446934700012 0.0 0.0 1.0 0.4224327802658081 0.36470645666122437 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 0.21605446934700012 0.0 0.0 1.0 0.42144501209259033 0.3716520071029663 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 0.0 0.0 0.999969482421875 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.0 0.0 1.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 0.21605446934700012 0.0 0.0 1.0 0.517025351524353 0.35432738065719604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 0.21605446934700012 0.0 0.0 0.999969482421875 0.4236200749874115 0.3581991195678711 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 0.21605446934700012 0.0 0.0 1.0 0.4224327802658081 0.36470645666122437 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 0.0 0.0 0.999969482421875 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.0 0.0 1.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.0 0.0 1.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 0.21605446934700012 0.0 0.0 1.0 0.42501261830329895 0.3521260619163513 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 0.21605446934700012 0.0 0.0 0.999969482421875 0.4236200749874115 0.3581991195678711 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 0.21605446934700012 0.0 0.0 0.999969482421875 0.5133412480354309 0.33968716859817505 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.0 0.0 1.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 0.0 0.0 0.999969482421875 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 0.21605446934700012 0.0 0.0 1.0 0.4272269308567047 0.3441292643547058 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 0.21605446934700012 0.0 0.0 1.0 0.42501261830329895 0.3521260619163513 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 0.0 0.0 1.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.0 0.0 1.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 0.21605446934700012 0.0 0.0 0.999969482421875 0.5133412480354309 0.33968716859817505 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 0.0 0.0 1.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.0 0.0 1.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.0 0.0 1.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 0.21605446934700012 0.0 0.0 0.999969482421875 0.42968177795410156 0.3367283344268799 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 0.21605446934700012 0.0 0.0 1.0 0.4272269308567047 0.3441292643547058 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 0.21605446934700012 0.0 0.0 1.0 0.5086210370063782 0.3273197412490845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.0 0.0 1.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 0.0 0.0 1.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 0.0 0.0 1.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.0 0.0 1.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 0.21605446934700012 0.0 0.0 1.0 0.5086210370063782 0.3273197412490845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 0.21605446934700012 0.0 0.0 1.0 0.43238383531570435 0.3299248218536377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 0.21605446934700012 0.0 0.0 0.999969482421875 0.42968177795410156 0.3367283344268799 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 0.0 0.0 1.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.0 0.0 1.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.0 0.0 1.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 0.21605446934700012 0.0 0.0 1.0 0.5031017065048218 0.3171094059944153 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.0 0.0 1.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 0.0 0.0 1.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.0 0.0 1.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 0.21605446934700012 0.0 0.0 1.0 0.43238383531570435 0.3299248218536377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 0.21605446934700012 0.0 0.0 1.0 0.5001419186592102 0.3127697706222534 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.0 0.0 1.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 0.21605446934700012 0.0 0.0 1.0 0.5031017065048218 0.3171094059944153 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.0 0.0 1.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 0.21605446934700012 0.0 0.0 1.0 0.43855130672454834 0.31812357902526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.0 0.0 1.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 0.0 0.0 1.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.0 0.0 1.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 0.21605446934700012 0.0 0.0 1.0 0.5001419186592102 0.3127697706222534 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 0.21605446934700012 0.0 0.0 1.0 0.4420255124568939 0.31313610076904297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 0.21605446934700012 0.0 0.0 1.0 0.43855130672454834 0.31812357902526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 0.0 0.0 1.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.0 0.0 1.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 0.21605446934700012 0.0 0.0 1.0 0.4938368499279022 0.3056175708770752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 0.0 0.0 1.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 0.21605446934700012 0.0 0.0 1.0 0.4457634687423706 0.30876803398132324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 0.21605446934700012 0.0 0.0 1.0 0.4420255124568939 0.31313610076904297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 0.21605446934700012 0.0 0.0 0.999969482421875 0.4905005395412445 0.3028048276901245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 0.21605446934700012 0.0 0.0 1.0 0.4938368499279022 0.3056175708770752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 0.21605446934700012 0.0 0.0 0.999969482421875 0.48704904317855835 0.30050182342529297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 0.21605446934700012 0.0 0.0 0.999969482421875 0.4905005395412445 0.3028048276901245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 0.21605446934700012 0.0 0.0 1.0 0.449765145778656 0.3050304651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 0.21605446934700012 0.0 0.0 1.0 0.4457634687423706 0.30876803398132324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 0.21605446934700012 0.0 0.0 1.0 0.48348918557167053 0.2987098693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 0.21605446934700012 0.0 0.0 0.999969482421875 0.48704904317855835 0.30050182342529297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 0.21605446934700012 0.0 0.0 1.0 0.4540289342403412 0.30193692445755005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 0.21605446934700012 0.0 0.0 1.0 0.449765145778656 0.3050304651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 0.0 0.0 1.0 0.4798286557197571 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 0.21605446934700012 0.0 0.0 1.0 0.48348918557167053 0.2987098693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 0.21605446934700012 0.0 0.0 1.0 0.4585503935813904 0.2995036840438843 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 0.21605446934700012 0.0 0.0 1.0 0.4540289342403412 0.30193692445755005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 0.0 0.0 1.0 0.4798286557197571 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.0 0.0 1.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 0.21605446934700012 0.0 0.0 1.0 0.4760758876800537 0.29666680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 0.0 0.0 1.0 0.4798286557197571 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 0.21605446934700012 0.0 0.0 1.0 0.4633219242095947 0.2977495789527893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 0.21605446934700012 0.0 0.0 1.0 0.4585503935813904 0.2995036840438843 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 0.21605446934700012 0.0 0.0 0.999969482421875 0.472240686416626 0.2964206337928772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 0.21605446934700012 0.0 0.0 1.0 0.4760758876800537 0.29666680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0 0.0 0.999969482421875 0.468332976102829 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 0.21605446934700012 0.0 0.0 1.0 0.4633219242095947 0.2977495789527893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0 0.0 0.999969482421875 0.468332976102829 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 0.21605446934700012 0.0 0.0 0.999969482421875 0.472240686416626 0.2964206337928772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0 0.0 0.999969482421875 0.468332976102829 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.0 0.0 1.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.0 0.0 0.999969482421875 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.4008871912956238 0.25336402654647827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 0.0 0.0 1.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.0 0.0 1.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 0.0 0.0 1.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.0 0.0 1.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.0 0.0 1.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 0.21605446934700012 0.0 0.0 1.0 0.40969035029411316 0.2901642918586731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.0 0.0 1.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 0.0 0.0 1.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 0.0 0.0 1.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.0 0.0 1.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 0.21605446934700012 0.0 0.0 1.0 0.40969035029411316 0.2901642918586731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 0.0 0.0 1.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.0 0.0 1.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.0 0.0 1.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 0.21605446934700012 0.0 0.0 1.0 0.4138440191745758 0.27900052070617676 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.0 0.0 1.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 0.0 0.0 1.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 0.0 0.0 1.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.0 0.0 1.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 0.21605446934700012 0.0 0.0 1.0 0.4138440191745758 0.27900052070617676 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 0.0 0.0 1.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.0 0.0 1.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.0 0.0 1.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 0.0 0.0 0.999969482421875 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.0 0.0 1.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 0.0 0.0 1.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 0.0 0.0 0.999969482421875 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.0 0.0 1.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.0 0.0 1.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 0.21605446934700012 0.0 0.0 1.0 0.4211760461330414 0.2638515830039978 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.0 0.0 1.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 0.0 0.0 0.999969482421875 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 0.0 0.0 1.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.0 0.0 1.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 0.21605446934700012 0.0 0.0 1.0 0.4211760461330414 0.2638515830039978 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 0.0 0.0 1.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.0 0.0 1.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.0 0.0 1.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 0.21605446934700012 0.0 0.0 1.0 0.4268491864204407 0.25484126806259155 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.0 0.0 1.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 0.0 0.0 1.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 0.0 0.0 1.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.0 0.0 1.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 0.21605446934700012 0.0 0.0 1.0 0.4268491864204407 0.25484126806259155 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 0.0 0.0 1.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.0 0.0 1.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.0 0.0 1.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 0.21605445444583893 0.0 0.0 1.0 0.43318602442741394 0.2467350959777832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.0 0.0 1.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 0.0 0.0 1.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 0.0 0.0 1.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.0 0.0 1.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 0.21605445444583893 0.0 0.0 1.0 0.43318602442741394 0.2467350959777832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 0.0 0.0 1.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.0 0.0 0.999969482421875 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.0 0.0 1.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 0.21605445444583893 0.0 0.0 1.0 0.4401699900627136 0.23959076404571533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.0 0.0 0.999969482421875 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 0.0 0.0 1.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 0.0 0.0 1.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.0 0.0 0.999969482421875 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 0.21605445444583893 0.0 0.0 1.0 0.4401699900627136 0.23959076404571533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 0.0 0.0 1.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.0 0.0 1.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.0 0.0 0.999969482421875 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 0.21605445444583893 0.0 0.0 1.0 0.447567880153656 0.23354434967041016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.0 0.0 1.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 0.0 0.0 1.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 0.0 0.0 1.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.0 0.0 1.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 0.21605445444583893 0.0 0.0 1.0 0.447567880153656 0.23354434967041016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 0.0 0.0 1.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.0 0.0 0.999969482421875 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.0 0.0 1.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 0.0 0.0 1.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.0 0.0 0.999969482421875 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 0.0 0.0 1.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 0.0 0.0 1.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.0 0.0 1.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.0 0.0 0.999969482421875 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 0.21605445444583893 0.0 0.0 1.0 0.4592951536178589 0.22660183906555176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.0 0.0 1.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 0.0 0.0 1.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 0.0 0.0 1.0 0.46334928274154663 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.0 0.0 1.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 0.21605445444583893 0.0 0.0 1.0 0.4592951536178589 0.22660183906555176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 0.0 0.0 1.0 0.46334928274154663 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.0 0.0 1.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.0 0.0 1.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 0.21605445444583893 0.0 0.0 1.0 0.4674643576145172 0.22341382503509521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.0 0.0 1.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 0.0 0.0 1.0 0.46334928274154663 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4716324210166931 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.0 0.0 1.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 0.21605445444583893 0.0 0.0 1.0 0.4674643576145172 0.22341382503509521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4716324210166931 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.0 0.0 1.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.0 0.0 1.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 0.21605445444583893 0.0 0.0 1.0 0.47584494948387146 0.2213945984840393 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.0 0.0 1.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4716324210166931 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 0.21605445444583893 0.0 0.0 1.0 0.48009300231933594 0.2208271622657776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.0 0.0 1.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 0.21605445444583893 0.0 0.0 1.0 0.47584494948387146 0.2213945984840393 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 0.21605445444583893 0.0 0.0 1.0 0.48009300231933594 0.2208271622657776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 0.21605445444583893 0.0 0.0 1.0 0.4843671917915344 0.22055619955062866 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.0 0.0 1.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.6138039231300354 0.688823938369751 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.5745580792427063 0.6996983289718628 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.6138039231300354 0.688823938369751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 0.21605448424816132 0.0 0.0 1.0 0.522833526134491 0.6211022734642029 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0 0.0 0.999969482421875 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 0.21605448424816132 0.0 -6.103701889514923e-05 1.0 0.5286993384361267 0.6222618818283081 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0 0.0 0.999969482421875 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 0.21605448424816132 0.0 0.0 1.0 0.522833526134491 0.6211022734642029 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.0 0.0 1.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0 0.0 0.999969482421875 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.0 0.0 1.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 0.0 0.0 1.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.0 0.0 1.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.0 0.0 1.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.0 0.0 1.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 0.0 0.0 1.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.0 0.0 1.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.0 0.0 1.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 0.0 0.0 1.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.0 0.0 1.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 0.0 0.0 1.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 0.0 0.0 1.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.0 0.0 1.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.0 0.0 1.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 0.0 0.0 1.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.0 0.0 1.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 0.0 0.0 1.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 0.0 0.0 1.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.0 0.0 1.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.0 0.0 1.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.0 0.0 1.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 0.0 0.0 1.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.0 0.0 1.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.0 0.0 1.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 0.0 0.0 0.999969482421875 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.0 0.0 1.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 0.0 0.0 1.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 0.0 0.0 0.999969482421875 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.0 0.0 1.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.0 0.0 1.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.0 0.0 1.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 0.0 0.0 0.999969482421875 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.0 0.0 1.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.0 0.0 1.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 0.0 0.0 0.999969482421875 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.0 0.0 1.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 0.0 0.0 1.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 0.0 0.0 0.999969482421875 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.0 0.0 1.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.0 0.0 1.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.0 0.0 1.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 0.0 0.0 0.999969482421875 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.0 0.0 1.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.0 0.0 1.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.0 0.0 1.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 0.0 0.0 1.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.0 0.0 1.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 0.0 0.0 1.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 0.0 0.0 1.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 0.0 0.0 1.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 0.0 0.0 1.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 0.0 0.0 1.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 0.21605446934700012 0.0 0.0 1.0 0.5556848645210266 0.5576752424240112 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 0.21605446934700012 0.0 0.0 1.0 0.5556848645210266 0.5576752424240112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 0.21605446934700012 0.0 0.0 1.0 0.5587841272354126 0.556570291519165 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 0.21605446934700012 0.0 0.0 1.0 0.5587841272354126 0.556570291519165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 0.21605446934700012 0.0 0.0 0.999969482421875 0.5617994070053101 0.5550513863563538 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 0.21605446934700012 0.0 0.0 0.999969482421875 0.5617994070053101 0.5550513863563538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 0.21605446934700012 0.0 0.0 1.0 0.5647335052490234 0.5531189441680908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 0.21605446934700012 0.0 0.0 1.0 0.5647335052490234 0.5531189441680908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 0.21605446934700012 0.0 0.0 1.0 0.567589282989502 0.5507723093032837 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 0.21605446934700012 0.0 0.0 1.0 0.567589282989502 0.5507723093032837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 0.21605446934700012 0.0 0.0 1.0 0.5703694224357605 0.5480096936225891 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 0.21605446934700012 0.0 0.0 1.0 0.5703694224357605 0.5480096936225891 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 0.21605446934700012 0.0 0.0 1.0 0.5730769038200378 0.5448282957077026 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 0.21605446934700012 0.0 0.0 1.0 0.5730769038200378 0.5448282957077026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 0.21605446934700012 0.0 0.0 1.0 0.5757145881652832 0.5412243604660034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 0.21605446934700012 0.0 0.0 1.0 0.5757145881652832 0.5412243604660034 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 0.21605446934700012 0.0 0.0 1.0 0.5782853364944458 0.5371930599212646 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 0.21605446934700012 0.0 0.0 1.0 0.5782853364944458 0.5371930599212646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 0.21605446934700012 0.0 0.0 1.0 0.5807920694351196 0.5327289700508118 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 0.21605446934700012 0.0 0.0 1.0 0.5807920694351196 0.5327289700508118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 0.21605446934700012 0.0 0.0 1.0 0.5832045078277588 0.5277668237686157 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 0.21605446934700012 0.0 0.0 1.0 0.5832045078277588 0.5277668237686157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 0.21605446934700012 0.0 0.0 1.0 0.5854932069778442 0.5222377777099609 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 0.21605446934700012 0.0 0.0 1.0 0.5854932069778442 0.5222377777099609 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 0.0 0.0 1.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 0.0 0.0 1.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.0 0.0 1.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 0.0 0.0 1.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 0.0 0.0 1.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 0.0 0.0 1.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 0.0 0.0 1.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 0.0 0.0 1.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 0.0 0.0 1.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 0.0 0.0 0.999969482421875 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 0.0 0.0 1.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 0.0 0.0 1.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 0.0 0.0 1.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 0.0 0.0 0.999969482421875 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.542594313621521 0.5579367280006409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0 0.0 1.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 0.0 0.0 0.999969482421875 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.5394285321235657 0.5569874048233032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 0.21605446934700012 0.0 3.0518509447574615e-05 1.0 0.542594313621521 0.5579367280006409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 0.0 0.0 0.999969482421875 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.0 0.0 1.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.5394285321235657 0.5569874048233032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.0 0.0 1.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 0.0 0.0 0.999969482421875 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 0.21605446934700012 0.0 0.0 1.0 0.5333884954452515 0.553887128829956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.0 0.0 1.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 0.21605446934700012 0.0 0.0 0.999969482421875 0.5305119752883911 0.5517319440841675 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 0.21605446934700012 0.0 0.0 1.0 0.5333884954452515 0.553887128829956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 0.21605446934700012 0.0 0.0 1.0 0.5277293920516968 0.5491690635681152 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 0.21605446934700012 0.0 0.0 0.999969482421875 0.5305119752883911 0.5517319440841675 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 0.21605446934700012 0.0 0.0 1.0 0.5250393152236938 0.5461939573287964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 0.21605446934700012 0.0 0.0 1.0 0.5277293920516968 0.5491690635681152 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.0 0.0 1.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 0.21605446934700012 0.0 0.0 1.0 0.5250393152236938 0.5461939573287964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 0.0 0.0 1.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.0 0.0 1.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 0.0 0.0 1.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 0.0 0.0 1.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 0.21605446934700012 0.0 0.0 1.0 0.5199300646781921 0.5389848947525024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.0 0.0 1.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 0.0 0.0 1.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 0.21605446934700012 0.0 0.0 1.0 0.5175074934959412 0.5347373485565186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 0.21605446934700012 0.0 0.0 1.0 0.5199300646781921 0.5389848947525024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 0.0 0.0 1.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.0 0.0 1.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 0.21605446934700012 0.0 0.0 1.0 0.5175074934959412 0.5347373485565186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 0.0 0.0 0.999969482421875 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.0 0.0 1.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 0.0 0.0 1.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 0.0 0.0 0.999969482421875 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 0.21605446934700012 0.0 0.0 1.0 0.5129179954528809 0.5249159336090088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.0 0.0 1.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 0.0 0.0 0.999969482421875 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 0.21605446934700012 0.0 0.0 1.0 0.510796844959259 0.5193343758583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 0.21605446934700012 0.0 0.0 1.0 0.5129179954528809 0.5249159336090088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 0.0 0.0 0.999969482421875 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.0 0.0 1.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 0.21605446934700012 0.0 0.0 1.0 0.510796844959259 0.5193343758583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 0.0 0.0 1.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.0 0.0 1.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 0.0 0.0 0.999969482421875 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 0.0 0.0 1.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 0.21605446934700012 0.0 0.0 1.0 0.5070923566818237 0.5068193078041077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.0 0.0 1.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 0.0 0.0 1.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.0 0.0 0.999969482421875 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 0.21605446934700012 0.0 0.0 1.0 0.5070923566818237 0.5068193078041077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 0.21605446934700012 0.0 0.0 0.999969482421875 0.5897163152694702 0.5094247460365295 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 0.0 0.0 1.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 0.0 0.0 1.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.0 0.0 0.999969482421875 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 0.0 0.0 1.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 0.0 0.0 1.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 0.21605446934700012 0.0 0.0 1.0 0.5041013956069946 0.4924224019050598 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.0 0.0 0.999969482421875 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 0.21605446934700012 0.0 0.0 1.0 0.5916581749916077 0.5021109580993652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 0.21605446934700012 0.0 0.0 0.999969482421875 0.5897163152694702 0.5094247460365295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 0.0 0.0 1.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.0 0.0 1.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 0.21605446934700012 0.0 0.0 1.0 0.5041013956069946 0.4924224019050598 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 0.21605446934700012 0.0 0.0 1.0 0.5934914350509644 0.4941715598106384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 0.21605446934700012 0.0 0.0 1.0 0.5916581749916077 0.5021109580993652 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 0.0 0.0 0.999969482421875 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.0 0.0 1.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 0.0 0.0 1.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 0.0 0.0 0.999969482421875 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 0.21605446934700012 0.0 0.0 1.0 0.5018256902694702 0.476043701171875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.0 0.0 1.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 0.21605446934700012 0.0 0.0 1.0 0.5952191948890686 0.4855912923812866 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 0.21605446934700012 0.0 0.0 1.0 0.5934914350509644 0.4941715598106384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 0.0 0.0 0.999969482421875 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.0 0.0 1.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 0.21605446934700012 0.0 0.0 1.0 0.5018256902694702 0.476043701171875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 0.0 0.0 1.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.0 0.0 1.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 0.0 0.0 0.999969482421875 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 0.21605446934700012 0.0 0.0 1.0 0.596843957901001 0.47635602951049805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 0.21605446934700012 0.0 0.0 1.0 0.5952191948890686 0.4855912923812866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 0.0 0.0 1.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 0.21605446934700012 0.0 0.0 1.0 0.500276505947113 0.45759135484695435 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.0 0.0 1.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 0.21605446934700012 0.0 0.0 1.0 0.5983680486679077 0.4664538502693176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 0.21605446934700012 0.0 0.0 1.0 0.596843957901001 0.47635602951049805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 0.0 0.0 1.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.0 0.0 1.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 0.21605446934700012 0.0 0.0 1.0 0.500276505947113 0.45759135484695435 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 0.0 0.0 0.999969482421875 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.0 0.0 1.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 0.0 0.0 1.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 0.21605446934700012 0.0 0.0 1.0 0.5997934341430664 0.4558762311935425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 0.21605446934700012 0.0 0.0 1.0 0.5983680486679077 0.4664538502693176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 0.0 0.0 0.999969482421875 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 0.21605446934700012 0.0 0.0 1.0 0.49947699904441833 0.4370027780532837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.0 0.0 1.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 0.21605446934700012 0.0 0.0 1.0 0.6011215448379517 0.44461947679519653 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 0.21605446934700012 0.0 0.0 1.0 0.5997934341430664 0.4558762311935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 0.0 0.0 0.999969482421875 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.0 0.0 1.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 0.21605446934700012 0.0 0.0 1.0 0.49947699904441833 0.4370027780532837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 0.0 0.0 1.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.0 0.0 1.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 0.0 0.0 0.999969482421875 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 0.21605446934700012 0.0 0.0 1.0 0.6023536920547485 0.432685911655426 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 0.21605446934700012 0.0 0.0 1.0 0.6011215448379517 0.44461947679519653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 0.0 0.0 1.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.0 0.0 1.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.0 0.0 1.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 0.0 0.0 1.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.0 0.0 1.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 0.0 0.0 1.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 0.21605446934700012 0.0 0.0 1.0 0.6033116579055786 0.4218752980232239 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 0.21605446934700012 0.0 0.0 1.0 0.6023536920547485 0.432685911655426 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 0.0 0.0 1.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 0.21605446934700012 0.0 0.0 1.0 0.49964436888694763 0.40247344970703125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.0 0.0 1.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 0.21605446934700012 0.0 0.0 0.999969482421875 0.604060173034668 0.4114415645599365 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 0.21605446934700012 0.0 0.0 1.0 0.6033116579055786 0.4218752980232239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 0.0 0.0 1.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.0 0.0 1.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 0.21605446934700012 0.0 0.0 1.0 0.49964436888694763 0.40247344970703125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 0.0 0.0 1.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.0 0.0 1.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 0.0 0.0 1.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 0.0 0.0 1.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 0.21605446934700012 0.0 0.0 1.0 0.5005269646644592 0.3812466263771057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.0 0.0 1.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 0.21605446934700012 0.0 0.0 1.0 0.6045933961868286 0.40139156579971313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 0.21605446934700012 0.0 0.0 0.999969482421875 0.604060173034668 0.4114415645599365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 0.0 0.0 1.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.0 0.0 1.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 0.21605446934700012 0.0 0.0 1.0 0.5005269646644592 0.3812466263771057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 0.0 0.0 1.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.0 0.0 1.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 0.0 0.0 1.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 0.21605446934700012 0.0 0.0 1.0 0.6049054265022278 0.3917279839515686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 0.21605446934700012 0.0 0.0 1.0 0.6045933961868286 0.40139156579971313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 0.0 0.0 1.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.0 0.0 0.999969482421875 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.0 0.0 1.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 0.21605446934700012 0.0 0.0 0.999969482421875 0.6049898862838745 0.38245081901550293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 0.21605446934700012 0.0 0.0 1.0 0.6049054265022278 0.3917279839515686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 0.0 0.0 1.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.0 0.0 0.999969482421875 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 0.0 0.0 1.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 0.0 0.0 1.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 0.21605446934700012 0.0 0.0 1.0 0.5030751824378967 0.35380715131759644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.0 0.0 0.999969482421875 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 0.21605446934700012 0.0 0.0 1.0 0.6048398613929749 0.3735578656196594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 0.21605446934700012 0.0 0.0 0.999969482421875 0.6049898862838745 0.38245081901550293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 0.0 0.0 1.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.0 0.0 0.999969482421875 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 0.21605446934700012 0.0 0.0 1.0 0.5030751824378967 0.35380715131759644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 0.21605446934700012 0.0 0.0 1.0 0.6044479608535767 0.3650451898574829 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 0.21605446934700012 0.0 0.0 1.0 0.6048398613929749 0.3735578656196594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 0.0 0.0 1.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.0 0.0 0.999969482421875 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 0.0 0.0 1.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 0.0 0.0 1.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 0.21605446934700012 0.0 0.0 1.0 0.505640983581543 0.33850187063217163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.0 0.0 0.999969482421875 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 0.21605446934700012 0.0 0.0 0.999969482421875 0.60380619764328 0.35690802335739136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 0.21605446934700012 0.0 0.0 1.0 0.6044479608535767 0.3650451898574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 0.0 0.0 1.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 0.21605446934700012 0.0 0.0 1.0 0.5071949362754822 0.33174222707748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 0.21605446934700012 0.0 0.0 1.0 0.505640983581543 0.33850187063217163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 0.21605446934700012 0.0 0.0 0.999969482421875 0.6029060482978821 0.34914159774780273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 0.21605446934700012 0.0 0.0 0.999969482421875 0.60380619764328 0.35690802335739136 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 0.0 0.0 1.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.0 0.0 1.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 0.21605446934700012 0.0 0.0 1.0 0.5071949362754822 0.33174222707748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 0.0 0.0 1.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.0 0.0 1.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 0.0 0.0 1.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 0.21605446934700012 0.0 0.0 0.999969482421875 0.6017383337020874 0.3417413830757141 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 0.21605446934700012 0.0 0.0 0.999969482421875 0.6029060482978821 0.34914159774780273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 0.0 0.0 1.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 0.21605446934700012 0.0 0.0 1.0 0.510858416557312 0.31999123096466064 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.0 0.0 1.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 0.21605446934700012 0.0 0.0 0.999969482421875 0.6002932786941528 0.33470362424850464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 0.21605446934700012 0.0 0.0 0.999969482421875 0.6017383337020874 0.3417413830757141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 0.0 0.0 1.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.0 0.0 1.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 0.21605446934700012 0.0 0.0 1.0 0.510858416557312 0.31999123096466064 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 0.0 0.0 1.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.0 0.0 1.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 0.0 0.0 1.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 0.21605446934700012 0.0 0.0 1.0 0.5985607504844666 0.32802635431289673 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 0.21605446934700012 0.0 0.0 0.999969482421875 0.6002932786941528 0.33470362424850464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 0.0 0.0 1.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 0.21605446934700012 0.0 0.0 0.999969482421875 0.5171929597854614 0.30614006519317627 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.0 0.0 1.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 0.21605446934700012 0.0 0.0 1.0 0.5965896844863892 0.32174062728881836 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 0.21605446934700012 0.0 0.0 1.0 0.5985607504844666 0.32802635431289673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 0.0 0.0 1.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.0 0.0 1.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 0.21605446934700012 0.0 0.0 0.999969482421875 0.5171929597854614 0.30614006519317627 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 0.21605446934700012 0.0 0.0 0.999969482421875 0.5944331288337708 0.3158789873123169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 0.21605446934700012 0.0 0.0 1.0 0.5965896844863892 0.32174062728881836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 0.0 0.0 1.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.0 0.0 1.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 0.0 0.0 1.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 0.0 0.0 1.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 0.21605446934700012 0.0 0.0 1.0 0.5245062708854675 0.2952185273170471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.0 0.0 1.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 0.0 0.0 0.999969482421875 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 0.21605446934700012 0.0 0.0 0.999969482421875 0.5944331288337708 0.3158789873123169 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 0.0 0.0 1.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 0.21605446934700012 0.0 0.0 1.0 0.5285190939903259 0.2908620238304138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 0.21605446934700012 0.0 0.0 1.0 0.5245062708854675 0.2952185273170471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 0.21605446934700012 0.0 0.0 1.0 0.5895469188690186 0.30543601512908936 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 0.0 0.0 0.999969482421875 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 0.0 0.0 0.999969482421875 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 0.0 0.0 1.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.0 0.0 1.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 0.21605446934700012 0.0 0.0 1.0 0.5285190939903259 0.2908620238304138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.0 0.0 1.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 0.0 0.0 1.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 0.21605446934700012 0.0 0.0 1.0 0.586810290813446 0.30086058378219604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 0.21605446934700012 0.0 0.0 1.0 0.5895469188690186 0.30543601512908936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 0.21605446934700012 0.0 0.0 1.0 0.5838744640350342 0.2967216968536377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 0.21605446934700012 0.0 0.0 1.0 0.586810290813446 0.30086058378219604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 0.21605446934700012 0.0 0.0 1.0 0.537212610244751 0.28437894582748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.0 0.0 1.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 0.21605446934700012 0.0 0.0 1.0 0.5807379484176636 0.2930253744125366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 0.21605446934700012 0.0 0.0 1.0 0.5838744640350342 0.2967216968536377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 0.21605446934700012 0.0 0.0 1.0 0.5418664813041687 0.2822644114494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 0.21605446934700012 0.0 0.0 1.0 0.537212610244751 0.28437894582748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 0.21605446934700012 0.0 0.0 1.0 0.5774003267288208 0.2897791862487793 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 0.21605446934700012 0.0 0.0 1.0 0.5807379484176636 0.2930253744125366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 0.21605446934700012 0.0 0.0 0.999969482421875 0.5467023253440857 0.2809107303619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 0.21605446934700012 0.0 0.0 1.0 0.5418664813041687 0.2822644114494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 0.21605446934700012 0.0 0.0 1.0 0.5738626718521118 0.28699201345443726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 0.21605446934700012 0.0 0.0 1.0 0.5774003267288208 0.2897791862487793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.0 0.0 1.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 0.21605446934700012 0.0 0.0 0.999969482421875 0.5467023253440857 0.2809107303619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 0.0 0.0 1.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.0 0.0 1.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 0.0 0.0 1.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 0.21605446934700012 0.0 0.0 1.0 0.5701271891593933 0.28467416763305664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 0.21605446934700012 0.0 0.0 1.0 0.5738626718521118 0.28699201345443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 0.0 0.0 1.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 0.21605446934700012 0.0 0.0 1.0 0.5568340420722961 0.28051841259002686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.0 0.0 1.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5661978721618652 0.28283756971359253 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 0.21605446934700012 0.0 0.0 1.0 0.5701271891593933 0.28467416763305664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 0.0 0.0 1.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.0 0.0 1.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 0.21605446934700012 0.0 0.0 1.0 0.5568340420722961 0.28051841259002686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.0 0.0 1.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5661978721618652 0.28283756971359253 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 0.0 0.0 1.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.0 0.0 1.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 0.0 0.0 0.999969482421875 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 0.0 0.0 1.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 0.0 0.0 0.999969482421875 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.0 0.0 0.999969482421875 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6307469606399536 0.2462201714515686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.0 0.0 1.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 0.0 0.0 1.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.0 0.0 0.999969482421875 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 0.0 0.0 0.999969482421875 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 0.0 0.0 1.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 0.21605446934700012 0.0 0.0 0.999969482421875 0.619458019733429 0.2813679575920105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.0 0.0 0.999969482421875 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 0.0 0.0 1.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.0 0.0 1.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 0.21605446934700012 0.0 0.0 0.999969482421875 0.619458019733429 0.2813679575920105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 0.0 0.0 1.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.0 0.0 1.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 0.0 0.0 1.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 0.0 0.0 1.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 0.21605446934700012 0.0 0.0 1.0 0.6158398389816284 0.26952022314071655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.0 0.0 1.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 0.0 0.0 1.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.0 0.0 1.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 0.21605446934700012 0.0 0.0 1.0 0.6158398389816284 0.26952022314071655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 0.0 0.0 1.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.0 0.0 1.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 0.0 0.0 1.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 0.0 0.0 1.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.0 0.0 1.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.0 0.0 1.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 0.0 0.0 1.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.0 0.0 1.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 0.0 0.0 1.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 0.0 0.0 1.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 0.21605446934700012 0.0 0.0 0.999969482421875 0.6092228889465332 0.25332319736480713 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.0 0.0 1.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 0.0 0.0 1.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.0 0.0 1.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 0.21605446934700012 0.0 0.0 0.999969482421875 0.6092228889465332 0.25332319736480713 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 0.0 0.0 1.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.0 0.0 1.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 0.0 0.0 1.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 0.0 0.0 1.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 0.21605446934700012 0.0 0.0 1.0 0.6039486527442932 0.24359291791915894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.0 0.0 1.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 0.0 0.0 1.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.0 0.0 0.999969482421875 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 0.21605446934700012 0.0 0.0 1.0 0.6039486527442932 0.24359291791915894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 0.0 0.0 1.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.0 0.0 0.999969482421875 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 0.0 0.0 1.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 0.0 0.0 1.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 0.21605445444583893 0.0 0.0 1.0 0.5979301333427429 0.23474663496017456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.0 0.0 0.999969482421875 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 0.0 0.0 1.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.0 0.0 1.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 0.21605445444583893 0.0 0.0 1.0 0.5979301333427429 0.23474663496017456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 0.0 0.0 0.999969482421875 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.0 0.0 1.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 0.0 0.0 1.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 0.0 0.0 0.999969482421875 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 0.21605445444583893 0.0 0.0 1.0 0.5911673903465271 0.22683840990066528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.0 0.0 1.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 0.0 0.0 0.999969482421875 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.0 0.0 1.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 0.21605445444583893 0.0 0.0 1.0 0.5911673903465271 0.22683840990066528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 0.0 0.0 1.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.0 0.0 1.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 0.0 0.0 0.999969482421875 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 0.0 0.0 1.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.0 0.0 1.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.0 0.0 1.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 0.0 0.0 1.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.0 0.0 1.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 0.0 0.0 1.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 0.0 0.0 1.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 0.21605445444583893 0.0 0.0 1.0 0.5800744295120239 0.21697372198104858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.0 0.0 1.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 0.0 0.0 1.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.0 0.0 0.999969482421875 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 0.21605445444583893 0.0 0.0 1.0 0.5800744295120239 0.21697372198104858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 0.0 0.0 1.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.0 0.0 0.999969482421875 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 0.0 0.0 1.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 0.0 0.0 1.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 0.21605445444583893 0.0 0.0 1.0 0.5721230506896973 0.21177977323532104 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.0 0.0 0.999969482421875 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 0.0 0.0 1.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.0 0.0 1.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 0.21605445444583893 0.0 0.0 1.0 0.5721230506896973 0.21177977323532104 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 0.0 0.0 1.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.0 0.0 1.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 0.0 0.0 1.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 0.0 0.0 1.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 0.21605445444583893 0.0 0.0 1.0 0.563776969909668 0.20772206783294678 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.0 0.0 1.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 0.0 0.0 1.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.0 0.0 1.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 0.21605445444583893 0.0 0.0 1.0 0.563776969909668 0.20772206783294678 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.0 0.0 1.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 0.0 0.0 1.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.5550970435142517 0.20482593774795532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.0 0.0 1.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 0.21605445444583893 0.0 0.0 1.0 0.5506551265716553 0.203821063041687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 0.21605445444583893 0.0 3.0518509447574615e-05 0.999969482421875 0.5550970435142517 0.20482593774795532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 0.21605445444583893 0.0 0.00015259254723787308 1.0 0.546159029006958 0.2031153440475464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 0.21605445444583893 0.0 0.0 1.0 0.5506551265716553 0.203821063041687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 0.0 -3.0518509447574615e-05 1.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 0.0 0.0 0.999969482421875 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.5351086258888245 0.6307108402252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 0.21605448424816132 0.0 0.0 1.0 0.529496967792511 0.6301011443138123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 0.0 0.0 0.999969482421875 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.0 0.0 1.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 0.21605448424816132 0.0 -3.0518509447574615e-05 1.0 0.5351086258888245 0.6307108402252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 0.0 0.0 1.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.0 0.0 1.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 0.0 0.0 0.999969482421875 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 0.0 0.0 1.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.0 0.0 1.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.0 0.0 1.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 0.0 0.0 1.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.0 0.0 1.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 0.0 0.0 1.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 0.0 0.0 1.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0 0.0 1.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.0 0.0 1.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 0.0 0.0 0.999969482421875 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0 0.0 1.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 0.0 0.0 1.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 0.0 0.0 0.999969482421875 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 0.21605448424816132 0.0 0.0 1.0 0.5551243424415588 0.6301071643829346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0 0.0 1.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 0.0 0.0 0.999969482421875 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.0 0.0 0.999969482421875 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 0.21605448424816132 0.0 0.0 1.0 0.5551243424415588 0.6301071643829346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 0.0 0.0 1.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.0 0.0 0.999969482421875 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 0.0 0.0 0.999969482421875 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 0.0 0.0 1.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.0 0.0 1.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.0 0.0 0.999969482421875 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 0.0 0.0 1.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.0 0.0 1.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 0.0 0.0 1.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 0.0 0.0 1.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.0 0.0 1.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.0 0.0 1.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 0.0 0.0 0.999969482421875 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.0 0.0 1.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 0.0 0.0 1.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 0.0 0.0 0.999969482421875 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 0.21605448424816132 0.0 0.0 1.0 0.5711308121681213 0.6254566311836243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.0 0.0 1.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 0.0 0.0 0.999969482421875 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.0 0.0 1.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 0.21605448424816132 0.0 0.0 1.0 0.5711308121681213 0.6254566311836243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 0.0 0.0 0.999969482421875 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.0 0.0 1.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 0.0 0.0 0.999969482421875 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 0.0 0.0 0.999969482421875 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.0 0.0 0.999969482421875 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.0 0.0 1.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 0.0 0.0 0.999969482421875 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.0 0.0 0.999969482421875 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 0.0 0.0 0.999969482421875 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 0.0 0.0 0.999969482421875 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.0 0.0 1.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.0 0.0 0.999969482421875 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 0.0 0.0 1.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.0 0.0 1.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 0.0 0.0 0.999969482421875 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 0.0 0.0 1.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.0 0.0 0.999969482421875 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.0 0.0 1.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 0.0 0.0 1.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.0 0.0 0.999969482421875 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 0.0 0.0 1.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 0.0 0.0 1.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 0.21605448424816132 0.0 0.0 1.0 0.5859435200691223 0.6153281331062317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.0 0.0 0.999969482421875 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 0.0 0.0 1.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.0 0.0 1.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 0.21605448424816132 0.0 0.0 1.0 0.5859435200691223 0.6153281331062317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 0.0 0.0 1.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.0 0.0 1.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 0.0 0.0 1.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 0.0 0.0 1.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.0 0.0 0.999969482421875 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.0 0.0 1.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 0.0 0.0 1.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.0 0.0 0.999969482421875 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 0.0 0.0 1.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 0.0 0.0 1.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5929959416389465 0.6077929735183716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.0 0.0 0.999969482421875 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 0.0 0.0 1.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.0 0.0 1.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 0.21605446934700012 0.0 0.0 0.999969482421875 0.5929959416389465 0.6077929735183716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 0.0 0.0 1.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.0 0.0 1.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 0.0 0.0 1.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 0.0 0.0 1.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.0 0.0 1.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.0 0.0 1.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 0.0 0.0 0.999969482421875 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.0 0.0 1.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 0.0 0.0 1.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 0.0 0.0 0.999969482421875 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 0.21605446934700012 0.0 0.0 1.0 0.5989435911178589 0.5993620157241821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.0 0.0 1.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 0.0 0.0 0.999969482421875 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.0 0.0 1.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 0.21605446934700012 0.0 0.0 1.0 0.5989435911178589 0.5993620157241821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 0.0 0.0 1.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.0 0.0 1.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 0.0 0.0 0.999969482421875 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 0.0 0.0 1.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.0 0.0 1.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.0 0.0 1.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 0.0 0.0 1.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.0 0.0 1.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 0.0 0.0 1.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 0.0 0.0 1.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 0.21605446934700012 0.0 0.0 1.0 0.6038513779640198 0.5900272727012634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.0 0.0 1.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 0.0 0.0 1.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.0 0.0 1.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 0.21605446934700012 0.0 0.0 1.0 0.6038513779640198 0.5900272727012634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 0.0 0.0 1.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.0 0.0 1.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 0.0 0.0 1.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 0.0 0.0 1.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.0 0.0 1.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.0 0.0 1.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 0.0 0.0 1.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.0 0.0 1.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 0.0 0.0 1.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 0.0 0.0 1.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 0.21605446934700012 0.0 0.0 1.0 0.6079329252243042 0.5789923667907715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.0 0.0 1.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 0.0 0.0 1.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.0 0.0 1.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 0.21605446934700012 0.0 0.0 1.0 0.6079329252243042 0.5789923667907715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 0.0 0.0 1.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.0 0.0 1.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 0.0 0.0 1.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 0.0 0.0 1.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.0 0.0 1.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.0 0.0 1.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.0 0.0 1.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 0.0 0.0 1.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.0 0.0 1.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0 0.0 0.999969482421875 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 0.0 0.0 1.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0 0.0 0.999969482421875 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.0 0.0 1.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 0.0 0.0 1.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 0.21605446934700012 0.0 0.0 1.0 0.5315316915512085 0.566885232925415 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.0 0.0 1.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0 0.0 0.999969482421875 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 0.21605446934700012 0.0 0.00015259254723787308 0.999969482421875 0.5232311487197876 0.565461277961731 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.0 0.0 1.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 0.0 -0.0001831110566854477 0.999969482421875 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.0 0.0 1.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 0.21605446934700012 0.0 0.0 1.0 0.5315316915512085 0.566885232925415 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5210064053535461 0.5647562146186829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 0.21605446934700012 0.0 0.00015259254723787308 0.999969482421875 0.5232311487197876 0.565461277961731 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 0.0 -0.0001831110566854477 0.999969482421875 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.0 0.0 1.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 0.21605446934700012 0.0 0.0 1.0 0.5380936861038208 0.5670830011367798 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 0.0 -0.0001831110566854477 0.999969482421875 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 0.21605446934700012 0.0 0.0 0.999969482421875 0.5188777446746826 0.5639165043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5210064053535461 0.5647562146186829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 0.21605446934700012 0.0 0.0 1.0 0.5410932898521423 0.5668658018112183 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 0.21605446934700012 0.0 0.0 1.0 0.5380936861038208 0.5670830011367798 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 0.21605446934700012 0.0 0.0 0.999969482421875 0.516844630241394 0.5629432797431946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 0.21605446934700012 0.0 0.0 0.999969482421875 0.5188777446746826 0.5639165043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 0.21605446934700012 0.0 0.0 1.0 0.5439050197601318 0.5664436221122742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 0.21605446934700012 0.0 0.0 1.0 0.5410932898521423 0.5668658018112183 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 0.21605446934700012 0.0 0.0 1.0 0.514906108379364 0.5618376135826111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 0.21605446934700012 0.0 0.0 0.999969482421875 0.516844630241394 0.5629432797431946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 0.21605446934700012 0.0 0.0 1.0 0.5465291142463684 0.5658203363418579 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 0.21605446934700012 0.0 0.0 1.0 0.5439050197601318 0.5664436221122742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 0.21605446934700012 0.0 0.0 1.0 0.5130614042282104 0.5606002807617188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 0.21605446934700012 0.0 0.0 1.0 0.514906108379364 0.5618376135826111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 0.21605446934700012 0.0 0.0 0.999969482421875 0.5489665269851685 0.5649992227554321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 0.21605446934700012 0.0 0.0 1.0 0.5465291142463684 0.5658203363418579 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 0.21605446934700012 0.0 0.0 1.0 0.5113095641136169 0.5592316389083862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 0.21605446934700012 0.0 0.0 1.0 0.5130614042282104 0.5606002807617188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 0.21605446934700012 0.0 0.0 1.0 0.5512181520462036 0.5639832019805908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 0.21605446934700012 0.0 0.0 0.999969482421875 0.5489665269851685 0.5649992227554321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.0 0.0 1.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 0.21605446934700012 0.0 0.0 1.0 0.5113095641136169 0.5592316389083862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.0 0.0 1.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 0.0 0.0 0.999969482421875 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 0.21605446934700012 0.0 0.0 0.999969482421875 0.5532851219177246 0.5627743005752563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 0.21605446934700012 0.0 0.0 1.0 0.5512181520462036 0.5639832019805908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080809593200684 0.5561013221740723 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.0 0.0 1.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 0.0 0.0 1.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 0.21605446934700012 0.0 0.0 0.999969482421875 0.5532851219177246 0.5627743005752563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 0.0 0.0 1.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.0 0.0 1.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.0 0.0 1.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 0.21605446934700012 0.0 0.0 1.0 0.5066025257110596 0.5543391704559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 0.21605446934700012 0.0 0.0 0.999969482421875 0.5080809593200684 0.5561013221740723 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 0.21605446934700012 0.0 0.0 1.0 0.55687016248703 0.5597825050354004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.0 0.0 1.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 0.0 0.0 1.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 0.21605446934700012 0.0 0.0 1.0 0.5052133798599243 0.5524446964263916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 0.21605446934700012 0.0 0.0 1.0 0.5066025257110596 0.5543391704559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 0.21605446934700012 0.0 0.0 0.999969482421875 0.5583904981613159 0.5580000877380371 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.0 0.0 1.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 0.21605446934700012 0.0 0.0 1.0 0.55687016248703 0.5597825050354004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 0.21605446934700012 0.0 0.0 1.0 0.503890335559845 0.5503765344619751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 0.21605446934700012 0.0 0.0 1.0 0.5052133798599243 0.5524446964263916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 0.0 0.0 1.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.0 0.0 1.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 0.21605446934700012 0.0 0.0 0.999969482421875 0.5583904981613159 0.5580000877380371 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.0 0.0 1.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 0.21605446934700012 0.0 0.0 1.0 0.503890335559845 0.5503765344619751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.0 0.0 1.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 0.0 0.0 1.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 0.0 0.0 1.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.0 0.0 1.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.0 0.0 1.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 0.21605446934700012 0.0 0.0 0.999969482421875 0.5013704895973206 0.545587956905365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.0 0.0 1.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 0.21605446934700012 0.0 0.0 1.0 0.5610678791999817 0.5537543296813965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.0 0.0 1.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 0.0 0.0 1.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 0.21605446934700012 0.0 0.0 1.0 0.5001721382141113 0.5428614020347595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 0.21605446934700012 0.0 0.0 0.999969482421875 0.5013704895973206 0.545587956905365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 0.21605446934700012 0.0 0.0 1.0 0.5622706413269043 0.5512592792510986 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.0 0.0 1.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 0.21605446934700012 0.0 0.0 1.0 0.5610678791999817 0.5537543296813965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 0.21605446934700012 0.0 0.0 1.0 0.4990137815475464 0.539908766746521 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 0.21605446934700012 0.0 0.0 1.0 0.5001721382141113 0.5428614020347595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 0.0 0.0 1.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.0 0.0 1.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 0.21605446934700012 0.0 0.0 1.0 0.5622706413269043 0.5512592792510986 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 0.0 0.0 1.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.0 0.0 1.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.0 0.0 1.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.0 0.0 1.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 0.21605446934700012 0.0 0.0 1.0 0.4990137815475464 0.539908766746521 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.0 0.0 1.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 0.0 0.0 1.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 0.21605446934700012 0.0 0.0 1.0 0.5644075870513916 0.545503556728363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.0 0.0 1.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 0.0 0.0 1.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 0.21605446934700012 0.0 0.0 1.0 0.49681398272514343 0.533308744430542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.0 0.0 1.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 0.21605446934700012 0.0 0.0 1.0 0.565342903137207 0.5422323942184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.0 0.0 1.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 0.21605446934700012 0.0 0.0 1.0 0.5644075870513916 0.545503556728363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 0.21605446934700012 0.0 0.0 0.999969482421875 0.495771199464798 0.5296525955200195 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 0.21605446934700012 0.0 0.0 1.0 0.49681398272514343 0.533308744430542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 0.0 0.0 1.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.0 0.0 1.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 0.21605446934700012 0.0 0.0 1.0 0.565342903137207 0.5422323942184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 0.0 0.0 1.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.0 0.0 1.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.0 0.0 1.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 0.21605446934700012 0.0 0.0 1.0 0.4919670522212982 0.5125381350517273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 0.21605446934700012 0.0 0.0 1.0 0.49286413192749023 0.5172007083892822 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 0.21605446934700012 0.0 0.0 1.0 0.49286413192749023 0.5172007083892822 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 0.21605446934700012 0.0 0.0 1.0 0.49379682540893555 0.5216037034988403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 0.21605446934700012 0.0 0.0 1.0 0.49379682540893555 0.5216037034988403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 0.21605446934700012 0.0 0.0 1.0 0.4947656989097595 0.5257526636123657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 0.21605446934700012 0.0 0.0 1.0 0.4947656989097595 0.5257526636123657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 0.21605446934700012 0.0 0.0 0.999969482421875 0.495771199464798 0.5296525955200195 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 0.0 0.0 1.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 0.21605446934700012 0.0 0.0 1.0 0.5669488906860352 0.5348721742630005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.0 0.0 1.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 0.0 0.0 1.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 0.0 0.0 1.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.0 0.0 1.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 0.21605446934700012 0.0 0.0 1.0 0.5669488906860352 0.5348721742630005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 0.0 0.0 1.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.0 0.0 1.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.0 0.0 1.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 0.21605446934700012 0.0 0.0 0.999969482421875 0.5682021379470825 0.5263727903366089 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.0 0.0 1.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 0.0 0.0 1.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 0.0 0.0 1.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.0 0.0 1.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 0.21605446934700012 0.0 0.0 0.999969482421875 0.5682021379470825 0.5263727903366089 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 0.0 0.0 1.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.0 0.0 1.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.0 0.0 1.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 0.21605446934700012 0.0 0.0 1.0 0.5691002607345581 0.5166683197021484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.0 0.0 1.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 0.0 0.0 1.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 0.0 0.0 1.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.0 0.0 1.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 0.21605446934700012 0.0 0.0 1.0 0.5691002607345581 0.5166683197021484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 0.0 0.0 1.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.0 0.0 1.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.0 0.0 1.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 0.21605446934700012 0.0 0.0 0.999969482421875 0.5672665238380432 0.5033541917800903 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.0 0.0 1.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 0.0 0.0 1.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 0.21605446934700012 0.0 0.0 1.0 0.5643073916435242 0.5007731914520264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.0 0.0 1.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 0.21605446934700012 0.0 0.0 0.999969482421875 0.5672665238380432 0.5033541917800903 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 0.0 0.0 1.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.0 0.0 1.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 0.21605446934700012 0.0 0.0 1.0 0.5643073916435242 0.5007731914520264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 0.0 0.0 1.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.0 0.0 1.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 0.21605446934700012 0.0 0.0 1.0 0.5572380423545837 0.495286762714386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 0.0 0.0 1.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 0.21605446934700012 0.0 0.0 1.0 0.5531123876571655 0.4923807382583618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 0.21605446934700012 0.0 0.0 1.0 0.5572380423545837 0.495286762714386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 0.21605446934700012 0.0 0.0 1.0 0.5485851168632507 0.48936909437179565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 0.21605446934700012 0.0 0.0 1.0 0.5531123876571655 0.4923807382583618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 0.21605446934700012 0.0 0.0 1.0 0.5436533093452454 0.4862578511238098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 0.21605446934700012 0.0 0.0 1.0 0.5485851168632507 0.48936909437179565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 0.21605446934700012 0.0 0.0 1.0 0.5383179187774658 0.4830561876296997 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 0.21605446934700012 0.0 0.0 1.0 0.5436533093452454 0.4862578511238098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 0.21605446934700012 0.0 0.0 0.999969482421875 0.5325842499732971 0.47977715730667114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 0.21605446934700012 0.0 0.0 1.0 0.5383179187774658 0.4830561876296997 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 0.0 0.0 1.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 0.21605446934700012 0.0 0.0 0.999969482421875 0.5325842499732971 0.47977715730667114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 0.21605446934700012 0.0 0.0 0.999969482421875 0.519971489906311 0.473061203956604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 0.0 0.0 1.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 0.0 0.0 1.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 0.21605446934700012 0.0 0.0 0.999969482421875 0.5131340026855469 0.46967190504074097 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 0.21605446934700012 0.0 0.0 0.999969482421875 0.519971489906311 0.473061203956604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 0.21605446934700012 0.0 0.0 1.0 0.5080614686012268 0.46713006496429443 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 0.21605446934700012 0.0 0.0 0.999969482421875 0.5131340026855469 0.46967190504074097 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 0.21605446934700012 0.0 0.0 1.0 0.5032224059104919 0.46460527181625366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 0.21605446934700012 0.0 0.0 1.0 0.5080614686012268 0.46713006496429443 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 0.21605446934700012 0.0 0.0 1.0 0.4986191391944885 0.46209830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 0.21605446934700012 0.0 0.0 1.0 0.5032224059104919 0.46460527181625366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 0.21605446934700012 0.0 0.0 1.0 0.49425211548805237 0.459608793258667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 0.21605446934700012 0.0 0.0 1.0 0.4986191391944885 0.46209830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 0.21605446934700012 0.0 0.0 1.0 0.4901202917098999 0.4571353793144226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 0.21605446934700012 0.0 0.0 1.0 0.49425211548805237 0.459608793258667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 0.21605446934700012 0.0 0.0 1.0 0.4862211048603058 0.45467615127563477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 0.21605446934700012 0.0 0.0 1.0 0.4901202917098999 0.4571353793144226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 0.21605446934700012 0.0 0.0 1.0 0.4825509786605835 0.452228307723999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 0.21605446934700012 0.0 0.0 1.0 0.4862211048603058 0.45467615127563477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 0.21605446934700012 0.0 0.0 1.0 0.47910571098327637 0.44978851079940796 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 0.21605446934700012 0.0 0.0 1.0 0.4825509786605835 0.452228307723999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 0.21605446934700012 0.0 0.0 1.0 0.47588011622428894 0.4473530650138855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 0.21605446934700012 0.0 0.0 1.0 0.47910571098327637 0.44978851079940796 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 0.21605446934700012 0.0 0.0 1.0 0.47286897897720337 0.4449179768562317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 0.21605446934700012 0.0 0.0 1.0 0.47588011622428894 0.4473530650138855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 0.21605446934700012 0.0 0.0 1.0 0.4700668454170227 0.4424787759780884 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 0.21605446934700012 0.0 0.0 1.0 0.47286897897720337 0.4449179768562317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 0.21605446934700012 0.0 0.0 1.0 0.4674680829048157 0.44003111124038696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 0.21605446934700012 0.0 0.0 1.0 0.4700668454170227 0.4424787759780884 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 0.21605446934700012 0.0 0.0 1.0 0.4650213122367859 0.43750661611557007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 0.21605446934700012 0.0 0.0 1.0 0.4674680829048157 0.44003111124038696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 0.21605446934700012 0.0 0.0 1.0 0.4626764953136444 0.43484050035476685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 0.21605446934700012 0.0 0.0 1.0 0.4650213122367859 0.43750661611557007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 0.21605446934700012 0.0 0.0 0.999969482421875 0.46043041348457336 0.4320330023765564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 0.21605446934700012 0.0 0.0 1.0 0.4626764953136444 0.43484050035476685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 0.21605446934700012 0.0 0.0 1.0 0.4582798480987549 0.4290844798088074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 0.21605446934700012 0.0 0.0 0.999969482421875 0.46043041348457336 0.4320330023765564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 0.21605446934700012 0.0 0.0 1.0 0.4562217891216278 0.425994873046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 0.21605446934700012 0.0 0.0 1.0 0.4582798480987549 0.4290844798088074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 0.21605446934700012 0.0 0.0 1.0 0.4542531371116638 0.4227641224861145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 0.21605446934700012 0.0 0.0 1.0 0.4562217891216278 0.425994873046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 0.0 0.0 1.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 0.21605446934700012 0.0 0.0 1.0 0.4542531371116638 0.4227641224861145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 0.0 0.0 1.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 0.21605446934700012 0.0 0.0 1.0 0.5732494592666626 0.4284428358078003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 0.21605446934700012 0.0 0.0 1.0 0.5769625306129456 0.40624701976776123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.0 -6.103701889514923e-05 1.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 0.0 0.0 1.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 0.21605446934700012 0.0 0.0 1.0 0.5711151957511902 0.42655032873153687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 0.21605446934700012 0.0 0.0 1.0 0.5732494592666626 0.4284428358078003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 0.0 0.0 1.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 0.21605446934700012 0.0 0.0 1.0 0.5711151957511902 0.42655032873153687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 0.0 0.0 1.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 0.0 0.0 1.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 0.0 0.0 1.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 0.21605446934700012 0.0 0.0 0.999969482421875 0.5662178993225098 0.4225098490715027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.0 0.0 0.999969482421875 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 0.0 0.0 1.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.0 0.0 1.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 0.21605446934700012 0.0 0.0 0.999969482421875 0.5662178993225098 0.4225098490715027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 0.0 0.0 1.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.0 0.0 1.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 0.0 0.0 1.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 0.0 0.0 1.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 0.21605446934700012 0.0 0.0 1.0 0.5604545474052429 0.41815340518951416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.0 0.0 1.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 0.0 0.0 1.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 0.21605446934700012 0.0 0.0 1.0 0.5572388768196106 0.4158700704574585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 0.21605446934700012 0.0 0.0 1.0 0.5604545474052429 0.41815340518951416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 0.0 0.0 1.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.0 0.0 1.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 0.21605446934700012 0.0 0.0 1.0 0.5572388768196106 0.4158700704574585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 0.0 0.0 1.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.0 0.0 1.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 0.0 0.0 1.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 0.0 0.0 1.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 0.21605446934700012 0.0 0.0 1.0 0.550125002861023 0.4111306071281433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.0 0.0 1.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 0.0 0.0 1.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 0.21605446934700012 0.0 0.0 1.0 0.5462237000465393 0.40869390964508057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 0.21605446934700012 0.0 0.0 1.0 0.550125002861023 0.4111306071281433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 0.0 0.0 1.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.0 0.0 1.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 0.21605446934700012 0.0 0.0 1.0 0.5462237000465393 0.40869390964508057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 0.0 0.0 1.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.0 0.0 1.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 0.0 0.0 1.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 0.0 0.0 1.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 0.21605446934700012 0.0 0.0 0.999969482421875 0.5377336740493774 0.4037465453147888 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.0 0.0 1.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 0.0 0.0 1.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 0.21605446934700012 0.0 0.0 0.999969482421875 0.5333826541900635 0.40131789445877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 0.21605446934700012 0.0 0.0 0.999969482421875 0.5377336740493774 0.4037465453147888 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 0.0 0.0 1.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.0 0.0 1.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 0.21605446934700012 0.0 0.0 0.999969482421875 0.5333826541900635 0.40131789445877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 0.0 0.0 0.999969482421875 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.0 0.0 1.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 0.0 0.0 1.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 0.0 0.0 0.999969482421875 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 0.21605446934700012 0.0 0.0 1.0 0.5254290699958801 0.39677244424819946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.0 0.0 1.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 0.0 0.0 0.999969482421875 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.0 0.0 1.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 0.21605446934700012 0.0 0.0 1.0 0.5254290699958801 0.39677244424819946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 0.21605446934700012 0.0 0.0 1.0 0.5774822235107422 0.39922070503234863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 0.21605446934700012 0.0 0.0 1.0 0.5769625306129456 0.40624701976776123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 0.0 0.0 1.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.0 0.0 1.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 0.0 0.0 0.999969482421875 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 0.0 0.0 1.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 0.21605446934700012 0.0 0.0 1.0 0.5185067653656006 0.39258718490600586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.0 0.0 1.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 0.0 0.0 1.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 0.21605446934700012 0.0 0.0 1.0 0.5154390335083008 0.39060717821121216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 0.21605446934700012 0.0 0.0 1.0 0.5185067653656006 0.39258718490600586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 0.0 0.0 1.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.0 0.0 1.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 0.21605446934700012 0.0 0.0 1.0 0.5154390335083008 0.39060717821121216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 0.0 0.0 1.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.0 0.0 1.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 0.0 0.0 1.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 0.0 0.0 1.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 0.21605446934700012 0.0 0.0 1.0 0.5100929737091064 0.38682734966278076 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.0 0.0 1.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 0.21605446934700012 0.0 0.0 1.0 0.5779449343681335 0.3925821781158447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 0.21605446934700012 0.0 0.0 1.0 0.5774822235107422 0.39922070503234863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 0.0 0.0 1.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 0.21605446934700012 0.0 0.0 1.0 0.5078138709068298 0.3850102424621582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 0.21605446934700012 0.0 0.0 1.0 0.5100929737091064 0.38682734966278076 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 0.0 0.0 1.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.0 0.0 1.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 0.21605446934700012 0.0 0.0 1.0 0.5078138709068298 0.3850102424621582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 0.0 0.0 1.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.0 0.0 1.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 0.0 0.0 1.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 0.0 0.0 1.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 0.21605446934700012 0.0 0.0 1.0 0.5040379166603088 0.3814815282821655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.0 0.0 1.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 0.21605446934700012 0.0 0.0 0.999969482421875 0.5783491134643555 0.38633376359939575 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 0.21605446934700012 0.0 0.0 1.0 0.5779449343681335 0.3925821781158447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 0.0 0.0 1.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 0.21605446934700012 0.0 0.0 0.999969482421875 0.5025386214256287 0.3797556757926941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 0.21605446934700012 0.0 0.0 1.0 0.5040379166603088 0.3814815282821655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 0.0 0.0 1.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.0 0.0 1.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 0.21605446934700012 0.0 0.0 0.999969482421875 0.5025386214256287 0.3797556757926941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 0.0 0.0 1.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.0 0.0 1.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 0.0 0.0 1.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 0.0 0.0 1.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 0.21605446934700012 0.0 0.0 0.999969482421875 0.4986985921859741 0.373982310295105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.0 0.0 1.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 0.21605446934700012 0.0 0.0 1.0 0.5786933898925781 0.3804762363433838 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 0.21605446934700012 0.0 0.0 0.999969482421875 0.5783491134643555 0.38633376359939575 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 0.0 0.0 1.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.0 0.0 1.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 0.21605446934700012 0.0 0.0 0.999969482421875 0.4986985921859741 0.373982310295105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 0.0 0.0 1.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.0 0.0 1.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 0.0 0.0 1.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 0.0 0.0 1.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 0.21605446934700012 0.0 0.0 0.999969482421875 0.49554482102394104 0.3678079843521118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.0 0.0 1.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 0.21605446934700012 0.0 0.0 1.0 0.5789764523506165 0.3750090003013611 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 0.21605446934700012 0.0 0.0 1.0 0.5786933898925781 0.3804762363433838 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 0.0 0.0 1.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.0 0.0 1.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 0.21605446934700012 0.0 0.0 0.999969482421875 0.49554482102394104 0.3678079843521118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 0.0 0.0 1.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.0 0.0 1.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 0.0 0.0 1.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 0.0 0.0 1.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.0 0.0 1.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.0 0.0 1.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 0.21605446934700012 0.0 0.0 1.0 0.579197108745575 0.3699303865432739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 0.21605446934700012 0.0 0.0 1.0 0.5789764523506165 0.3750090003013611 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 0.0 0.0 0.999969482421875 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.0 0.0 1.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 0.0 0.0 1.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 0.0 0.0 0.999969482421875 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 0.21605446934700012 0.0 0.0 0.999969482421875 0.49208465218544006 0.35773760080337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.0 0.0 1.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 0.21605446934700012 0.0 0.0 1.0 0.5793541073799133 0.3652379512786865 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 0.21605446934700012 0.0 0.0 1.0 0.579197108745575 0.3699303865432739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 0.0 0.0 0.999969482421875 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.0 0.0 1.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 0.21605446934700012 0.0 0.0 0.999969482421875 0.49208465218544006 0.35773760080337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 0.0 0.0 0.999969482421875 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.0 0.0 1.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 0.0 0.0 0.999969482421875 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 0.0 0.0 0.999969482421875 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 0.21605446934700012 0.0 0.0 1.0 0.5793541073799133 0.3652379512786865 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 0.0 0.0 0.999969482421875 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.0 0.0 1.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.0 0.0 1.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 0.0 0.0 0.999969482421875 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.0 0.0 1.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.0 0.0 1.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 0.21605446934700012 0.0 0.0 1.0 0.579473078250885 0.3569989800453186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.0 0.0 1.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 0.0 0.0 0.999969482421875 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 0.0 0.0 1.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.0 0.0 1.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 0.0 0.0 0.999969482421875 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 0.0 0.0 1.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 0.21605446934700012 0.0 0.0 0.999969482421875 0.49014294147491455 0.3466310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.0 0.0 1.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 0.21605446934700012 0.0 0.0 1.0 0.5794331431388855 0.3534455895423889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.0 0.0 1.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 0.21605446934700012 0.0 0.0 1.0 0.579473078250885 0.3569989800453186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 0.0 0.0 1.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.0 0.0 1.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 0.21605446934700012 0.0 0.0 0.999969482421875 0.49014294147491455 0.3466310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 0.0 0.0 1.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.0 0.0 1.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 0.0 0.0 1.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 0.0 0.0 0.999969482421875 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.0 0.0 1.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 0.21605446934700012 0.0 0.0 1.0 0.5794331431388855 0.3534455895423889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 0.0 0.0 1.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.0 0.0 0.999969482421875 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.0 0.0 1.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 0.0 0.0 0.999969482421875 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.0 0.0 1.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.0 0.0 1.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 0.21605446934700012 0.0 0.0 1.0 0.579150915145874 0.3474537134170532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.0 0.0 1.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 0.0 0.0 0.999969482421875 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 0.0 0.0 1.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.0 0.0 0.999969482421875 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 0.0 0.0 1.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 0.0 0.0 1.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 0.21605446934700012 0.0 0.0 1.0 0.489724725484848 0.33461397886276245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.0 0.0 0.999969482421875 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 0.21605446934700012 0.0 0.0 1.0 0.5788003206253052 0.3434860110282898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.0 0.0 1.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 0.21605446934700012 0.0 0.0 1.0 0.579150915145874 0.3474537134170532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 0.0 0.0 1.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.0 0.0 1.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 0.21605446934700012 0.0 0.0 1.0 0.489724725484848 0.33461397886276245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 0.0 0.0 1.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.0 0.0 1.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 0.21605446934700012 0.0 0.0 1.0 0.5788003206253052 0.3434860110282898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 0.0 0.0 1.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.0 0.0 1.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 0.0 0.0 1.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 0.0 0.0 1.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.0 0.0 1.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.0 0.0 1.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 0.0 0.0 1.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 0.21605446934700012 0.0 0.0 1.0 0.4902057349681854 0.32686203718185425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.0 0.0 1.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 0.21605446934700012 0.0 0.0 1.0 0.5777221322059631 0.3357633352279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.0 0.0 1.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 0.0 0.0 1.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 0.0 0.0 1.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.0 0.0 1.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 0.21605446934700012 0.0 0.0 1.0 0.5777221322059631 0.3357633352279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 0.0 0.0 1.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.0 0.0 1.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 0.21605446934700012 0.0 0.0 1.0 0.4902057349681854 0.32686203718185425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 0.0 0.0 0.999969482421875 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.0 0.0 1.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 0.0 0.0 1.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 0.0 0.0 1.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.0 0.0 1.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.0 0.0 1.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 0.21605446934700012 0.0 0.0 1.0 0.5761270523071289 0.3283221125602722 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.0 0.0 1.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 0.0 0.0 1.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 0.0 0.0 0.999969482421875 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 0.21605446934700012 0.0 0.0 1.0 0.49127960205078125 0.31945616006851196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.0 0.0 1.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 0.21605446934700012 0.0 0.0 0.999969482421875 0.5751299858093262 0.32470762729644775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.0 0.0 1.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 0.21605446934700012 0.0 0.0 1.0 0.5761270523071289 0.3283221125602722 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 0.0 0.0 0.999969482421875 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.0 0.0 1.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 0.21605446934700012 0.0 0.0 1.0 0.49127960205078125 0.31945616006851196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 0.0 0.0 0.999969482421875 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.0 0.0 1.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 0.0 0.0 0.999969482421875 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 0.0 0.0 1.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.0 0.0 1.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 0.21605446934700012 0.0 0.0 0.999969482421875 0.5751299858093262 0.32470762729644775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 0.0 0.0 0.999969482421875 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 0.21605446934700012 0.0 0.0 0.999969482421875 0.4929672181606293 0.31238698959350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.0 0.0 1.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 0.0 0.0 1.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.0 0.0 1.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.0 0.0 1.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 0.21605446934700012 0.0 0.0 1.0 0.5727245807647705 0.31769561767578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.0 0.0 1.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 0.0 0.0 1.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 0.0 0.0 0.999969482421875 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 0.21605446934700012 0.0 0.0 0.999969482421875 0.4940483868122101 0.3089780807495117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 0.21605446934700012 0.0 0.0 0.999969482421875 0.4929672181606293 0.31238698959350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 0.0 0.0 1.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.0 0.0 1.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 0.21605446934700012 0.0 0.0 1.0 0.5727245807647705 0.31769561767578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 0.0 0.0 0.999969482421875 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.0 0.0 1.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 0.21605446934700012 0.0 0.0 0.999969482421875 0.4940483868122101 0.3089780807495117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 0.0 0.0 1.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.0 0.0 1.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 0.0 0.0 0.999969482421875 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 0.0 0.0 1.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.0 0.0 1.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.0 0.0 1.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 0.21605446934700012 0.0 0.0 1.0 0.5697541236877441 0.31098443269729614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.0 0.0 1.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 0.0 0.0 1.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 0.0 0.0 1.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 0.21605446934700012 0.0 0.0 1.0 0.49670082330703735 0.30241620540618896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.0 0.0 1.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 0.21605446934700012 0.0 0.0 0.999969482421875 0.5680505633354187 0.30774790048599243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.0 0.0 1.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 0.21605446934700012 0.0 0.0 1.0 0.5697541236877441 0.31098443269729614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 0.0 0.0 1.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.0 0.0 1.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 0.21605446934700012 0.0 0.0 1.0 0.49670082330703735 0.30241620540618896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 0.0 0.0 1.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.0 0.0 1.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 0.21605446934700012 0.0 0.0 0.999969482421875 0.5680505633354187 0.30774790048599243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 0.0 0.0 1.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.0 0.0 0.999969482421875 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.0 0.0 1.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 0.0 0.0 1.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.0 0.0 1.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 0.0 0.0 1.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 0.0 0.0 1.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 0.21605446934700012 0.0 0.0 1.0 0.5000284910202026 0.29620879888534546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.0 0.0 1.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 0.21605446934700012 0.0 0.0 1.0 0.5635403990745544 0.3006412386894226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.0 0.0 0.999969482421875 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 0.0 0.0 1.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 0.0 0.0 1.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 0.21605446934700012 0.0 0.0 1.0 0.5019184947013855 0.2933226227760315 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 0.21605446934700012 0.0 0.0 1.0 0.5000284910202026 0.29620879888534546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 0.0 0.0 1.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.0 0.0 0.999969482421875 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 0.21605446934700012 0.0 0.0 1.0 0.5635403990745544 0.3006412386894226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 0.0 0.0 1.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.0 0.0 0.999969482421875 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.0 0.0 0.999969482421875 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 0.0 0.0 1.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.0 0.0 1.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 0.21605446934700012 0.0 0.0 1.0 0.5019184947013855 0.2933226227760315 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 0.21605446934700012 0.0 0.0 1.0 0.5579749345779419 0.29369932413101196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.0 0.0 0.999969482421875 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 0.0 0.0 1.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.0 0.0 1.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 0.0 0.0 1.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 0.21605446934700012 0.0 0.0 0.999969482421875 0.5060164332389832 0.2883031964302063 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.0 0.0 1.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 0.21605446934700012 0.0 0.0 1.0 0.5550726652145386 0.2907138466835022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.0 0.0 0.999969482421875 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 0.21605446934700012 0.0 0.0 1.0 0.5579749345779419 0.29369932413101196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 0.21605446934700012 0.0 0.0 1.0 0.5082241296768188 0.2861729860305786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 0.21605446934700012 0.0 0.0 0.999969482421875 0.5060164332389832 0.2883031964302063 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 0.0 0.0 1.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.0 0.0 0.999969482421875 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 0.21605446934700012 0.0 0.0 1.0 0.5550726652145386 0.2907138466835022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 0.0 0.0 1.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.0 0.0 0.999969482421875 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.0 0.0 0.999969482421875 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 0.21605446934700012 0.0 0.0 1.0 0.5105367302894592 0.2842988967895508 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 0.21605446934700012 0.0 0.0 1.0 0.5082241296768188 0.2861729860305786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 0.21605446934700012 0.0 0.0 1.0 0.5490454435348511 0.2857193946838379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.0 0.0 0.999969482421875 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 0.0 0.0 1.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.0 0.0 0.999969482421875 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 0.21605446934700012 0.0 0.0 1.0 0.5105367302894592 0.2842988967895508 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.5459287166595459 0.2837129235267639 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.0 0.0 0.999969482421875 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 0.21605446934700012 0.0 0.0 1.0 0.5490454435348511 0.2857193946838379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.0 0.0 0.999969482421875 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 0.0 0.0 1.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 0.21605446934700012 0.0 0.0 1.0 0.5154720544815063 0.28133004903793335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.0 0.0 0.999969482421875 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 0.0 0.0 1.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.0 0.0 0.999969482421875 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 0.21605446934700012 0.0 -3.0518509447574615e-05 0.999969482421875 0.5459287166595459 0.2837129235267639 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 0.21605446934700012 0.0 0.0 0.999969482421875 0.5180913805961609 0.28024226427078247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 0.21605446934700012 0.0 0.0 1.0 0.5154720544815063 0.28133004903793335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 0.0 0.0 1.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.0 0.0 0.999969482421875 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 0.21605446934700012 0.0 0.0 1.0 0.5395126342773438 0.2806873917579651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 0.0 0.0 1.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 0.21605446934700012 0.0 0.0 1.0 0.5208086371421814 0.27942436933517456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 0.21605446934700012 0.0 0.0 0.999969482421875 0.5180913805961609 0.28024226427078247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 0.21605446934700012 0.0 0.0 1.0 0.5362241268157959 0.2796708345413208 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 0.21605446934700012 0.0 0.0 1.0 0.5395126342773438 0.2806873917579651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5236209630966187 0.27888089418411255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 0.21605446934700012 0.0 0.0 1.0 0.5208086371421814 0.27942436933517456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 0.21605446934700012 0.0 0.0 1.0 0.5328900814056396 0.2789868116378784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 0.21605446934700012 0.0 0.0 1.0 0.5362241268157959 0.2796708345413208 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 0.21605446934700012 0.0 0.00015259254723787308 1.0 0.5265249013900757 0.2786164879798889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 0.21605446934700012 0.0 -3.0518509447574615e-05 1.0 0.5236209630966187 0.27888089418411255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 0.0 0.0 0.999969482421875 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 0.21605446934700012 0.0 0.0 1.0 0.5328900814056396 0.2789868116378784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 0.0 0.0 0.999969482421875 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 0.21605446934700012 0.0 0.00015259254723787308 1.0 0.5265249013900757 0.2786164879798889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 0.0 0.0 0.999969482421875 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.0 0.0 0.999969482421875 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.0 0.0 0.999969482421875 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 0.0 0.0 1.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.0 0.0 0.999969482421875 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 0.0 0.0 1.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 0.0 0.0 1.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.0 0.0 1.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.0 0.0 0.999969482421875 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 0.0 0.0 0.999969482421875 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.0 0.0 1.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 0.0 0.0 1.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 0.0 0.0 0.999969482421875 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 0.21605446934700012 0.0 0.0 1.0 0.6467007398605347 0.3154236078262329 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.0 0.0 1.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 0.0 0.0 0.999969482421875 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.0 0.0 1.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 0.21605446934700012 0.0 0.0 1.0 0.6467007398605347 0.3154236078262329 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 0.0 0.0 1.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.0 0.0 1.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 0.0 0.0 0.999969482421875 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 0.0 0.0 1.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.0 0.0 1.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.0 0.0 1.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.0 0.0 1.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.0 0.0 1.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 0.0 0.0 1.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.0 0.0 1.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.0 0.0 1.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 0.21605446934700012 0.0 0.0 1.0 0.595079779624939 0.27352941036224365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.0 0.0 1.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 0.21605446934700012 0.0 0.0 1.0 0.5952936410903931 0.27301520109176636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 0.21605446934700012 0.0 0.0 1.0 0.595079779624939 0.27352941036224365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 0.21605446934700012 0.0 0.0 1.0 0.5955314636230469 0.27242761850357056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 0.21605446934700012 0.0 0.0 1.0 0.5952936410903931 0.27301520109176636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 0.0 0.0 1.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.0 0.0 1.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 0.0 0.0 1.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 0.21605446934700012 0.0 0.0 1.0 0.5957931876182556 0.27176743745803833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 0.21605446934700012 0.0 0.0 1.0 0.5955314636230469 0.27242761850357056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 0.0 0.0 0.999969482421875 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 0.21605446934700012 0.0 0.0 1.0 0.5957931876182556 0.27176743745803833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 0.0 0.0 0.999969482421875 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.0 0.0 1.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 0.21605446934700012 0.0 0.0 1.0 0.5963889360427856 0.2702317237854004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 0.0 0.0 0.999969482421875 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 0.0 0.0 1.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.0 0.0 1.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.0 0.0 1.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 0.21605446934700012 0.0 0.0 1.0 0.5967231392860413 0.2693578600883484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 0.21605446934700012 0.0 0.0 1.0 0.5963889360427856 0.2702317237854004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 0.21605446934700012 0.0 0.0 1.0 0.5970817804336548 0.26841461658477783 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 0.21605446934700012 0.0 0.0 1.0 0.5967231392860413 0.2693578600883484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 0.0 0.0 1.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 0.21605446934700012 0.0 0.0 1.0 0.5970817804336548 0.26841461658477783 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 0.0 0.0 1.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.0 0.0 1.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.0 0.0 1.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 0.0 0.0 1.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.0 0.0 1.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 0.0 0.0 1.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 0.21605446934700012 0.0 0.0 1.0 0.5978724956512451 0.26632362604141235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.0 0.0 1.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 0.0 0.0 1.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 0.0 0.0 1.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 0.21605446934700012 0.0 0.0 1.0 0.5873936414718628 0.25871068239212036 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.0 0.0 1.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 0.21605446934700012 0.0 0.0 0.999969482421875 0.5983049869537354 0.26517820358276367 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.0 0.0 1.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 0.21605446934700012 0.0 0.0 1.0 0.5978724956512451 0.26632362604141235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.0 0.0 1.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 0.21605446934700012 0.0 0.0 0.999969482421875 0.5983049869537354 0.26517820358276367 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.0 0.0 1.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.0 0.0 1.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 0.0 0.0 1.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.0 0.0 1.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 0.21605446934700012 0.0 0.0 1.0 0.5873936414718628 0.25871068239212036 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 0.21605446934700012 0.0 0.0 1.0 0.5998045206069946 0.2613224983215332 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.0 0.0 1.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 0.0 0.0 1.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 0.0 0.0 0.999969482421875 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.0 0.0 1.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 0.0 0.0 1.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 0.0 0.0 1.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.0 0.0 1.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 0.21605446934700012 0.0 0.0 1.0 0.5998045206069946 0.2613224983215332 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 0.0 0.0 1.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.0 0.0 0.999969482421875 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.0 0.0 1.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 0.0 0.0 0.999969482421875 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.0 0.0 1.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.0 0.0 1.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 0.0 0.0 1.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.0 0.0 0.999969482421875 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 0.0 0.0 1.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 0.0 0.0 1.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.0 0.0 1.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 0.0 0.0 0.999969482421875 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 0.0 0.0 1.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 0.21605446934700012 0.0 0.0 1.0 0.5788551568984985 0.2454366683959961 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.0 0.0 1.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 0.0 0.0 1.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.0 0.0 1.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.0 0.0 0.999969482421875 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 0.0 0.0 1.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.0 0.0 1.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 0.0 0.0 1.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 0.0 0.0 1.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.0 0.0 1.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 0.21605446934700012 0.0 0.0 1.0 0.5788551568984985 0.2454366683959961 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 0.0 0.0 1.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.0 0.0 1.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 0.0 0.0 1.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 0.0 0.0 1.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.0 0.0 1.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.0 0.0 1.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 0.21605446934700012 0.0 0.0 1.0 0.6036663055419922 0.2522021532058716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.0 0.0 1.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 0.0 0.0 1.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 0.0 0.0 1.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 0.21605445444583893 0.0 0.0 1.0 0.5725734233856201 0.23772281408309937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.0 0.0 1.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 0.0 0.0 1.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.0 0.0 1.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 0.21605446934700012 0.0 0.0 1.0 0.6036663055419922 0.2522021532058716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 0.0 0.0 1.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.0 0.0 1.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 0.21605445444583893 0.0 0.0 1.0 0.5725734233856201 0.23772281408309937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 0.0 0.0 1.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.0 0.0 1.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 0.0 0.0 1.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 0.0 0.0 1.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.0 0.0 1.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.0 0.0 1.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 0.21605445444583893 0.0 0.0 1.0 0.6054056882858276 0.2484617829322815 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.0 0.0 1.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 0.0 0.0 1.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 0.0 0.0 1.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.0 0.0 1.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.0 0.0 1.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 0.0 0.0 1.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.0 0.0 1.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 0.21605445444583893 0.0 0.0 1.0 0.6054056882858276 0.2484617829322815 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 0.0 0.0 1.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.0 0.0 1.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 0.0 0.0 1.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 0.0 0.0 1.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.0 0.0 1.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.0 0.0 1.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 0.0 0.0 1.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 0.21605445444583893 0.0 0.0 1.0 0.5622788071632385 0.22790998220443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.0 0.0 1.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 0.21605445444583893 0.0 0.0 0.999969482421875 0.6070125102996826 0.24522966146469116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.0 0.0 1.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 0.0 0.0 1.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 0.0 0.0 1.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 0.21605445444583893 0.0 0.0 1.0 0.5622788071632385 0.22790998220443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 0.0 0.0 1.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.0 0.0 1.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 0.21605445444583893 0.0 0.0 0.999969482421875 0.6070125102996826 0.24522966146469116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 0.0 0.0 1.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 0.0 0.0 1.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 0.0 0.0 1.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.0 0.0 1.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 0.0 0.0 1.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.0 0.0 1.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.0 0.0 0.999969482421875 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 0.21605445444583893 0.0 0.0 1.0 0.6084837913513184 0.2424808144569397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 0.0 0.0 1.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 0.0 0.0 0.999969482421875 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.0 0.0 1.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 0.0 0.0 1.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 0.0 0.0 0.999969482421875 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 0.21605445444583893 0.0 0.0 0.999969482421875 0.55098956823349 0.22027724981307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.0 0.0 1.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.609167754650116 0.24128073453903198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 0.21605445444583893 0.0 0.0 1.0 0.6084837913513184 0.2424808144569397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 0.0 0.0 0.999969482421875 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.0 0.0 1.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 0.21605445444583893 0.0 0.0 0.999969482421875 0.55098956823349 0.22027724981307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 0.0 0.0 1.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.0 0.0 1.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 0.0 0.0 0.999969482421875 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 0.0 0.0 1.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 0.21605445444583893 0.0 0.0 1.0 0.5429552793502808 0.21644043922424316 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.0 0.0 1.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 0.0 0.0 1.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.0 0.0 1.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 0.21605445444583893 0.0 0.0 1.0 0.5429552793502808 0.21644043922424316 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 0.0 0.0 1.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.0 0.0 1.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 0.0 0.0 1.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 0.0 0.0 1.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.0 0.0 1.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.0 0.0 1.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 0.0 0.0 0.999969482421875 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.0 0.0 1.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 0.0 0.0 1.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 0.0 0.0 0.999969482421875 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 0.21605445444583893 0.0 0.0 1.0 0.5302750468254089 0.21262699365615845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.0 0.0 1.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 0.0 0.0 0.999969482421875 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.0 -3.0518509447574615e-05 1.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 0.21605445444583893 0.0 0.0 1.0 0.5302750468254089 0.21262699365615845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.0 -3.0518509447574615e-05 1.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 0.0 0.0 0.999969482421875 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.0 0.0 1.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.0 -3.0518509447574615e-05 1.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 0.0 0.0 0.999969482421875 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.0 0.0 1.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 0.0 0.0 0.999969482421875 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.5170558094978333 0.2112075686454773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.0 0.0 1.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 0.0 0.0 0.999969482421875 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 0.21605445444583893 0.0 -3.0518509447574615e-05 1.0 0.5125783681869507 0.21127527952194214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 0.21605445444583893 0.0 3.0518509447574615e-05 1.0 0.5170558094978333 0.2112075686454773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 0.21605445444583893 0.0 0.0 0.999969482421875 0.5080843567848206 0.21161502599716187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 0.21605445444583893 0.0 -3.0518509447574615e-05 1.0 0.5125783681869507 0.21127527952194214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 0.0 0.0 0.999969482421875 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.5239897966384888 0.5807267427444458 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.48620134592056274 0.5522602796554565 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.5239897966384888 0.5807267427444458 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.6648842692375183 0.6340523362159729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.6141318082809448 0.6253429651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.0 0.0 1.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 0.21605446934700012 0.0 0.0 1.0 0.6648842692375183 0.6340523362159729 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.0 0.0 1.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.0 0.0 1.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.0 0.0 1.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.7767902612686157 0.3119933009147644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.0 0.0 1.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 0.0 0.0 0.999969482421875 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 0.0 0.0 0.999969482421875 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.0 0.0 1.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 0.0 0.0 1.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.7532170414924622 0.2296181321144104 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 0.21605445444583893 0.0 0.0 0.999969482421875 0.7767902612686157 0.3119933009147644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.0 0.0 1.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 0.21605445444583893 0.0 0.0 1.0 0.5862001776695251 0.0954430103302002 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 0.0 0.0 0.999969482421875 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 1.0169769525527954 0.7806612253189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 1.0064716339111328 0.7823371291160583 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.0 0.0 -1.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 0.0 0.0 -1.0 1.0268683433532715 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 1.0169769525527954 0.7806612253189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.0 0.0 -1.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 0.0 0.0 -1.0 1.0268683433532715 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.0 0.0 -1.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.0 0.0 -1.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 0.0 0.0 -1.0 1.0360887050628662 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 0.0 0.0 -1.0 1.0268683433532715 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.0 0.0 -1.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 0.0 0.0 -1.0 1.0360887050628662 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.0 0.0 -1.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.0 0.0 -1.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 0.0 0.0 -1.0 1.044609785079956 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 0.0 0.0 -1.0 1.0360887050628662 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.0 0.0 -1.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 0.0 0.0 -1.0 1.044609785079956 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.0 0.0 -1.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.0 0.0 -1.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 0.0 0.0 -1.0 1.0524262189865112 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 0.0 0.0 -1.0 1.044609785079956 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.0 0.0 -1.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 0.0 0.0 -1.0 1.0524262189865112 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.0 0.0 -1.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 0.0 0.0 -1.0 1.0595505237579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 0.0 0.0 -1.0 1.0524262189865112 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 0.0 0.0 -1.0 1.0595505237579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.0 0.0 -1.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 0.0 0.0 -1.0 1.0660085678100586 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 0.0 0.0 -1.0 1.0595505237579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.0 0.0 -1.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 0.0 0.0 -1.0 1.0660085678100586 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.0 0.0 -1.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.0 0.0 -1.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 0.0 0.0 -1.0 1.071833610534668 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 0.0 0.0 -1.0 1.0660085678100586 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.0 0.0 -1.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 0.0 0.0 -1.0 1.071833610534668 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.0 0.0 -1.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.0 0.0 -1.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 0.0 0.0 -1.0 1.0770642757415771 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 0.0 0.0 -1.0 1.071833610534668 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.0 0.0 -1.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 0.0 0.0 -1.0 1.0770642757415771 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.0 0.0 -1.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.0 0.0 -1.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 0.0 0.0 -1.0 1.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 0.0 0.0 -1.0 1.0770642757415771 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.0 0.0 -1.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 0.0 0.0 -1.0 1.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.0 0.0 -1.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.0 0.0 -1.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 0.0 0.0 -1.0 1.0859029293060303 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 0.0 0.0 -1.0 1.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.0 0.0 -1.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 0.0 0.0 -1.0 1.0859029293060303 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.0 0.0 -1.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.0 0.0 -1.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 0.0 0.0 -1.0 1.0895897150039673 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 0.0 0.0 -1.0 1.0859029293060303 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.0 0.0 -1.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 0.0 0.0 -1.0 1.0895897150039673 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.0 0.0 -1.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.0 0.0 -1.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0928035974502563 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 0.0 0.0 -1.0 1.0895897150039673 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.0 0.0 -1.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0928035974502563 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.0 0.0 -1.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.0 0.0 -1.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0955517292022705 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0928035974502563 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.0 0.0 -1.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0955517292022705 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.0 0.0 -1.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.0 0.0 -1.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 0.0 0.0 -1.0 1.0978741645812988 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0955517292022705 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.0 0.0 -1.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 0.0 0.0 -1.0 1.0978741645812988 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.0 0.0 -1.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.0 0.0 -1.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 0.0 0.0 -1.0 1.0998048782348633 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 0.0 0.0 -1.0 1.0978741645812988 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.0 0.0 -1.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 0.0 0.0 -1.0 1.0998048782348633 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.0 0.0 -1.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0 0.0 -1.0 1.002812147140503 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0 0.0 -1.0 1.002812147140503 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.0 0.0 -1.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.0 0.0 -1.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 0.0 0.0 -1.0 0.09980490803718567 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0 0.0 -1.0 0.002812206745147705 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.0 0.0 -1.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 -0.2839455306529999 0.0 0.0 -1.0 0.9981156587600708 0.7116611003875732 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0 0.0 -1.0 1.002812147140503 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.0 0.0 -1.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 0.0 0.0 -1.0 0.09980490803718567 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.0 0.0 -1.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 0.0 0.0 -1.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 -0.2839455306529999 0.0 0.0 -1.0 0.9981156587600708 0.7116611003875732 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.0 0.0 -1.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.0 0.0 -1.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 -0.2839455306529999 0.0 0.0 -1.0 0.011683493852615356 0.7100631594657898 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 0.0 0.0 -1.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.0 0.0 -1.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989181399345398 0.7105580568313599 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 0.0 0.0 -1.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 -0.2839455306529999 0.0 0.0 -1.0 0.011683493852615356 0.7100631594657898 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 -0.2839455306529999 0.0 0.0 -1.0 0.015869349241256714 0.7086991667747498 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9849684238433838 0.7093707323074341 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989181399345398 0.7105580568313599 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 -0.2839455306529999 0.0 0.0 -1.0 0.015869349241256714 0.7086991667747498 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.01988041400909424 0.7069413065910339 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9809385538101196 0.7077746987342834 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9849684238433838 0.7093707323074341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.01988041400909424 0.7069413065910339 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 -0.2839455306529999 0.0 0.0 -1.0 0.02371254563331604 0.704802393913269 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 -0.2839455306529999 0.0 0.0 -1.0 0.9770991802215576 0.7057809829711914 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9809385538101196 0.7077746987342834 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 -0.2839455306529999 0.0 0.0 -1.0 0.02371254563331604 0.704802393913269 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02736303210258484 0.7022942900657654 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 -0.2839455306529999 0.0 0.0 -1.0 0.9734561443328857 0.7034001350402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 -0.2839455306529999 0.0 0.0 -1.0 0.9770991802215576 0.7057809829711914 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02736303210258484 0.7022942900657654 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 -0.2839455306529999 0.0 0.0 -1.0 0.030830442905426025 0.6994280815124512 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 -0.2839455306529999 0.0 0.0 -1.0 0.9734561443328857 0.7034001350402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 -0.2839455306529999 0.0 0.0 -1.0 0.030830442905426025 0.6994280815124512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.0 0.0 -1.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 0.0 0.0 -1.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.0 0.0 -1.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.0 0.0 -1.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 -0.2839455306529999 0.0 0.0 -1.0 0.9667751789093018 0.697515070438385 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.0 0.0 -1.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 -0.2839455306529999 0.0 0.0 -1.0 0.03721565008163452 0.6926599740982056 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 -0.2839455306529999 0.0 0.0 -1.0 0.9637418985366821 0.6940274238586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 -0.2839455306529999 0.0 0.0 -1.0 0.9667751789093018 0.697515070438385 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 -0.2839455306529999 0.0 0.0 -1.0 0.03721565008163452 0.6926599740982056 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 -0.2839455306529999 0.0 0.0 -1.0 0.0401361882686615 0.6887743473052979 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 -0.2839455306529999 0.0 0.0 -1.0 0.960913896560669 0.690185546875 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 -0.2839455306529999 0.0 0.0 -1.0 0.9637418985366821 0.6940274238586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 -0.2839455306529999 0.0 0.0 -1.0 0.0401361882686615 0.6887743473052979 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.0 0.0 -1.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 -0.2839455306529999 0.0 0.0 -1.0 0.960913896560669 0.690185546875 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.0 0.0 -1.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.0 0.0 -1.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 0.0 0.0 -1.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.0 0.0 -1.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 0.0 0.0 -1.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.0 0.0 -1.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 -0.2839455306529999 0.0 0.0 -1.0 0.045444995164871216 0.6800327301025391 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 -0.2839455306529999 0.0 0.0 -1.0 0.9559001922607422 0.6815630197525024 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.0 0.0 -1.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 0.0 0.0 -1.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 -0.2839455306529999 0.0 0.0 -1.0 0.045444995164871216 0.6800327301025391 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 -0.2839455306529999 0.0 0.0 -1.0 0.04782417416572571 0.6751836538314819 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 0.0 0.0 -1.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 -0.2839455306529999 0.0 0.0 -1.0 0.9559001922607422 0.6815630197525024 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.0 0.0 -1.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 0.0 0.0 -1.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 -0.2839455306529999 0.0 0.0 -1.0 0.04782417416572571 0.6751836538314819 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.0 0.0 -1.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 0.0 0.0 -1.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.0 0.0 -1.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.0 0.0 -1.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 0.0 0.0 -1.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 0.0 0.0 -1.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.0 0.0 -1.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 -0.2839455306529999 0.0 0.0 -1.0 0.9518887996673584 0.6723135113716125 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 0.0 0.0 -1.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.0 0.0 -1.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 0.0 0.0 -1.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.0 0.0 -1.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.051993101835250854 0.6645351648330688 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 0.0 0.0 -1.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 -0.2839455306529999 0.0 0.0 -1.0 0.9518887996673584 0.6723135113716125 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.0 0.0 -1.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 0.0 0.0 -1.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.051993101835250854 0.6645351648330688 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 0.0 0.0 -1.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.0 0.0 -1.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.0 0.0 -1.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 -0.2839455306529999 0.0 0.0 -1.0 0.9488654136657715 0.6625887155532837 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 0.0 0.0 -1.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.0 0.0 -1.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 0.0 0.0 -1.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 -0.2839455306529999 0.0 0.0 -1.0 0.0554124116897583 0.652630627155304 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 -0.2839455306529999 0.0 0.0 -1.0 0.9477107524871826 0.6575570106506348 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 -0.2839455306529999 0.0 0.0 -1.0 0.9488654136657715 0.6625887155532837 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.0 0.0 -1.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 0.0 0.0 -1.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 -0.2839455306529999 0.0 0.0 -1.0 0.9477107524871826 0.6575570106506348 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.0 0.0 -1.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 -0.2839455306529999 0.0 0.0 -1.0 0.0554124116897583 0.652630627155304 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.0 0.0 -1.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 0.0 0.0 -1.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.0 0.0 -1.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.0 0.0 -1.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 0.0 0.0 -1.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.0 0.0 -1.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9460904598236084 0.6471614837646484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 0.0 0.0 -1.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.0 0.0 -1.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 0.0 0.0 -1.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.0 0.0 -1.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 -0.2839455306529999 0.0 0.0 -1.0 0.058125704526901245 0.6394720077514648 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9460904598236084 0.6471614837646484 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.0 0.0 -1.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.0 0.0 -1.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.0 0.0 -1.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 0.0 0.0 -1.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 -0.2839455306529999 0.0 0.0 -1.0 0.058125704526901245 0.6394720077514648 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.0 0.0 -1.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 0.0 0.0 -1.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 0.0 0.0 -1.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.0 0.0 -1.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 -0.2839455306529999 0.0 0.0 -1.0 0.9453579187393188 0.6363179683685303 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.0 0.0 -1.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 0.0 0.0 -1.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.0 0.0 -1.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.0 0.0 -1.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 0.0 0.0 -1.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 -0.2839455306529999 0.0 0.0 -1.0 0.9453579187393188 0.6363179683685303 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.0 0.0 -1.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 0.0 0.0 -1.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.0 0.0 -1.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.0 0.0 -1.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 -0.2839455306529999 0.0 0.0 -1.0 0.9454828500747681 0.6250084638595581 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 0.0 0.0 -1.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.0 0.0 -1.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 0.0 0.0 -1.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 0.0 0.0 -1.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.0 0.0 -1.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 0.0 0.0 -1.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.0 0.0 -1.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 -0.2839455306529999 0.0 0.0 -1.0 0.06096261739730835 0.6173686385154724 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 0.0 0.0 -1.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 -0.2839455306529999 0.0 0.0 -1.0 0.9454828500747681 0.6250084638595581 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.0 0.0 -1.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 0.0 0.0 -1.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.0 0.0 -1.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.0 0.0 -1.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 0.0 0.0 -1.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 -0.2839455306529999 0.0 0.0 -1.0 0.06096261739730835 0.6173686385154724 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.061599165201187134 0.6093670129776001 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 -0.2839455306529999 0.0 0.0 -1.0 0.9460951685905457 0.6168336868286133 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 0.0 0.0 -1.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.0 0.0 -1.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 -0.2839455306529999 0.0 0.0 -1.0 0.062088608741760254 0.6010488271713257 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 0.0 0.0 -1.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.061599165201187134 0.6093670129776001 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 0.0 0.0 -1.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 -0.2839455306529999 0.0 0.0 -1.0 0.9460951685905457 0.6168336868286133 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.0 0.0 -1.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 0.0 0.0 -1.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.0 0.0 -1.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.0 0.0 -1.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 -0.2839455306529999 0.0 0.0 -1.0 0.9471457004547119 0.6089298129081726 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 0.0 0.0 -1.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.0 0.0 -1.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 0.0 0.0 -1.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 -0.2839455306529999 0.0 0.0 -1.0 0.9471457004547119 0.6089298129081726 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.0 0.0 -1.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 0.0 0.0 -1.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.0 0.0 -1.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.0 0.0 -1.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 0.0 0.0 -1.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 0.0 0.0 -1.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.0 0.0 -1.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 0.0 0.0 -1.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.0 0.0 -1.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.0 0.0 -1.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 -0.2839455306529999 0.0 0.0 -1.0 0.9495338201522827 0.5975706577301025 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 0.0 0.0 -1.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.0 0.0 -1.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 0.0 0.0 -1.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 -0.2839455306529999 0.0 0.0 -1.0 0.9495338201522827 0.5975706577301025 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.0 0.0 -1.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 0.0 0.0 -1.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.0 0.0 -1.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.0 0.0 -1.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 -0.2839455306529999 0.0 0.0 -1.0 0.9516648054122925 0.5903184413909912 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 0.0 0.0 -1.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.0 0.0 -1.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 0.0 0.0 -1.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 -0.2839455306529999 0.0 0.0 -1.0 0.9516648054122925 0.5903184413909912 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.0 0.0 -1.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 0.0 0.0 -1.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.0 0.0 -1.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 0.0 0.0 -1.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 0.0 0.0 -1.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 0.0 0.0 -1.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 -0.2839455306529999 0.0 0.0 -1.0 0.9556704759597778 0.5799009799957275 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 0.0 0.0 -1.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 0.0 0.0 -1.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 -0.2839455306529999 0.0 0.0 -1.0 0.9556704759597778 0.5799009799957275 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 0.0 0.0 -1.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.0 0.0 -1.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 -0.2839455306529999 0.0 0.0 -1.0 0.958246648311615 0.5748494267463684 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 0.0 0.0 -1.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.0 0.0 -1.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 0.0 0.0 -1.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 -0.2839455306529999 0.0 0.0 -1.0 0.958246648311615 0.5748494267463684 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.0 0.0 -1.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 0.0 0.0 -1.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.0 0.0 -1.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.0 0.0 -1.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 -0.2839455306529999 0.0 0.0 -1.0 0.9620909690856934 0.5682055354118347 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 0.0 0.0 -1.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.0 0.0 -1.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 0.0 0.0 -1.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 -0.2839455306529999 0.0 0.0 -1.0 0.9620909690856934 0.5682055354118347 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.0 0.0 -1.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 0.0 0.0 -1.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.0 0.0 -1.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.0 0.0 -1.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 0.0 0.0 -1.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 0.0 0.0 -1.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.0 0.0 -1.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 0.0 0.0 -1.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.0 0.0 -1.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9702067375183105 0.5551329851150513 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 0.0 0.0 -1.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 0.0 0.0 -1.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9702067375183105 0.5551329851150513 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 0.0 0.0 -1.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 0.0 0.0 -1.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 0.0 0.0 -1.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 0.0 0.0 -1.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.0 0.0 -1.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 0.0 0.0 -1.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.0 0.0 -1.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.0 0.0 -1.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.0 0.0 -1.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 0.0 0.0 -1.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.0 0.0 -1.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 0.0 0.0 -1.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.0 0.0 -1.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 0.0 0.0 -1.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 0.0 0.0 -1.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 0.0 0.0 -1.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.0 0.0 -1.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 0.0 0.0 -1.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 0.0 0.0 -1.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.0 0.0 -1.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 0.0 0.0 -1.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.0 0.0 -1.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.0 0.0 -1.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 0.0 0.0 -1.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 0.0 0.0 -1.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.0 0.0 -1.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 0.0 0.0 -1.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.0 0.0 -1.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.0 0.0 -1.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 0.0 0.0 -1.0 1.0019910335540771 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 0.0 0.0 -1.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.0 0.0 -1.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 0.0 0.0 -1.0 1.0019910335540771 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.0 0.0 -1.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.0 0.0 -1.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 0.0 0.0 -1.0 1.0054943561553955 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 0.0 0.0 -1.0 1.0019910335540771 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.0 0.0 -1.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 0.0 0.0 -1.0 1.0054943561553955 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.0 0.0 -1.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.0 0.0 -1.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0087041854858398 0.4921778440475464 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 0.0 0.0 -1.0 1.0054943561553955 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.0 0.0 -1.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 0.0 0.0 -1.0 1.011627435684204 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0087041854858398 0.4921778440475464 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.0 0.0 -1.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 0.0 0.0 -1.0 1.011627435684204 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.0 0.0 -1.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 0.0 0.0 -1.0 1.0142714977264404 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 0.0 0.0 -1.0 1.011627435684204 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 0.0 0.0 -1.0 1.0142714977264404 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 -0.2839455306529999 0.0 0.0 -1.0 1.01664400100708 0.4748919606208801 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 0.0 0.0 -1.0 1.0142714977264404 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0187523365020752 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 -0.2839455306529999 0.0 0.0 -1.0 1.01664400100708 0.4748919606208801 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0187523365020752 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 0.0 0.0 -1.0 1.020604133605957 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0187523365020752 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 0.0 0.0 -1.0 1.020604133605957 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.0 0.0 -1.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 -0.2839455306529999 0.0 0.0 -1.0 1.0222060680389404 0.45933693647384644 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 0.0 0.0 -1.0 1.020604133605957 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.0 0.0 -1.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 0.0 0.0 -1.0 1.0235652923583984 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 -0.2839455306529999 0.0 0.0 -1.0 1.0222060680389404 0.45933693647384644 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.0 0.0 -1.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 0.0 0.0 -1.0 1.0235652923583984 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.0 0.0 -1.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.0 0.0 -1.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0247397422790527 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 0.0 0.0 -1.0 1.0235652923583984 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.0 0.0 -1.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0247397422790527 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.0 0.0 -1.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.0 0.0 -1.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 0.0 0.0 -1.0 1.0257843732833862 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0247397422790527 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.0 0.0 -1.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 0.0 0.0 -1.0 1.0257843732833862 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.0 0.0 -1.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9617165923118591 0.441719651222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 0.0 0.0 -1.0 1.0257843732833862 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9617165923118591 0.441719651222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.0 0.0 -1.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 0.0 0.0 -1.0 1.0267016887664795 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 0.0 0.0 -1.0 1.0257843732833862 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.0 0.0 -1.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 0.0 0.0 -1.0 1.0267016887664795 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.0 0.0 -1.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.0 0.0 -1.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 0.0 0.0 -1.0 1.0274937152862549 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 0.0 0.0 -1.0 1.0267016887664795 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.0 0.0 -1.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 0.0 0.0 -1.0 1.0274937152862549 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.0 0.0 -1.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 -0.2839455306529999 0.0 0.0 -1.0 0.9684454798698425 0.4304148554801941 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 0.0 0.0 -1.0 1.0274937152862549 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 -0.2839455306529999 0.0 0.0 -1.0 0.9684454798698425 0.4304148554801941 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.0 0.0 -1.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 0.0 0.0 -1.0 1.028162956237793 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 0.0 0.0 -1.0 1.0274937152862549 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.0 0.0 -1.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 0.0 0.0 -1.0 1.028162956237793 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.0 0.0 -1.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.0 0.0 -1.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 0.0 0.0 -1.0 1.0287117958068848 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 0.0 0.0 -1.0 1.028162956237793 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.0 0.0 -1.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 0.0 0.0 -1.0 1.0287117958068848 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.0 0.0 -1.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 -0.2839455306529999 0.0 0.0 -1.0 0.9733879566192627 0.4207465648651123 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 0.0 0.0 -1.0 1.0287117958068848 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 -0.2839455306529999 0.0 0.0 -1.0 0.9733879566192627 0.4207465648651123 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.0 0.0 -1.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 0.0 0.0 -1.0 1.0291422605514526 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 0.0 0.0 -1.0 1.0287117958068848 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.0 0.0 -1.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 0.0 0.0 -1.0 1.0291422605514526 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.0 0.0 -1.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9757001996040344 0.4151532053947449 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 0.0 0.0 -1.0 1.0291422605514526 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9757001996040344 0.4151532053947449 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.0 0.0 -1.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 0.0 0.0 -1.0 1.0294564962387085 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 0.0 0.0 -1.0 1.0291422605514526 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.0 0.0 -1.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 0.0 0.0 -1.0 1.0294564962387085 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.0 0.0 -1.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 -0.2839455306529999 0.0 0.0 -1.0 0.9773029088973999 0.4099716544151306 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 0.0 0.0 -1.0 1.0294564962387085 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 -0.2839455306529999 0.0 0.0 -1.0 0.9773029088973999 0.4099716544151306 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.0 0.0 -1.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 0.0 0.0 -1.0 1.0296567678451538 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 0.0 0.0 -1.0 1.0294564962387085 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.0 0.0 -1.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 0.0 0.0 -1.0 1.0296567678451538 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.0 0.0 -1.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 -0.2839455306529999 0.0 0.0 -1.0 0.9785953760147095 0.40384650230407715 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 0.0 0.0 -1.0 1.0296567678451538 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 -0.2839455306529999 0.0 0.0 -1.0 0.9785953760147095 0.40384650230407715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02974534034729 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 0.0 0.0 -1.0 1.0296567678451538 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02974534034729 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 -0.2839455306529999 0.0 0.0 -1.0 0.9796422719955444 0.39663392305374146 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02974534034729 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 -0.2839455306529999 0.0 0.0 -1.0 0.9796422719955444 0.39663392305374146 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.0 0.0 -1.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 0.0 0.0 -1.0 1.0297237634658813 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02974534034729 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.0 0.0 -1.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 0.0 0.0 -1.0 1.0297237634658813 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.0 0.0 -1.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 0.0 0.0 -1.0 1.0295944213867188 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 0.0 0.0 -1.0 1.0297237634658813 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 0.0 0.0 -1.0 1.0295944213867188 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.980755090713501 0.38401156663894653 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 0.0 0.0 -1.0 1.0295944213867188 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.980755090713501 0.38401156663894653 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 -0.2839455306529999 0.0 0.0 -1.0 1.0295729637145996 0.3881494998931885 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 0.0 0.0 -1.0 1.0295944213867188 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 -0.2839455306529999 0.0 0.0 -1.0 1.0295437574386597 0.387315571308136 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 -0.2839455306529999 0.0 0.0 -1.0 1.0295729637145996 0.3881494998931885 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 -0.2839455306529999 0.0 0.0 -1.0 1.0295066833496094 0.386313259601593 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 -0.2839455306529999 0.0 0.0 -1.0 1.0295437574386597 0.387315571308136 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 -0.2839455306529999 0.0 0.0 -1.0 1.0294619798660278 0.3851448893547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 -0.2839455306529999 0.0 0.0 -1.0 1.0295066833496094 0.386313259601593 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 0.0 0.0 -1.0 1.0294097661972046 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 -0.2839455306529999 0.0 0.0 -1.0 1.0294619798660278 0.3851448893547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 0.0 0.0 -1.0 1.0294097661972046 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.0 0.0 -1.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 -0.2839455306529999 0.0 0.0 -1.0 1.0293500423431396 0.3823206424713135 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 0.0 0.0 -1.0 1.0294097661972046 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.0 0.0 -1.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.029282808303833 0.38067108392715454 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 -0.2839455306529999 0.0 0.0 -1.0 1.0293500423431396 0.3823206424713135 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.0 0.0 -1.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 0.0 0.0 -1.0 1.0292080640792847 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.029282808303833 0.38067108392715454 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.0 0.0 -1.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 0.0 0.0 -1.0 1.0292080640792847 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.0 0.0 -1.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 -0.2839455306529999 0.0 0.0 -1.0 1.0291260480880737 0.37691545486450195 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 0.0 0.0 -1.0 1.0292080640792847 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 0.0 0.0 -1.0 1.0290367603302002 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 -0.2839455306529999 0.0 0.0 -1.0 1.0291260480880737 0.37691545486450195 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 0.0 0.0 -1.0 1.0290367603302002 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.0 0.0 -1.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 -0.2839455306529999 0.0 0.0 -1.0 1.0289404392242432 0.3725799322128296 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 0.0 0.0 -1.0 1.0290367603302002 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.0 0.0 -1.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 -0.2839455306529999 0.0 0.0 -1.0 1.0288370847702026 0.3702065348625183 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 -0.2839455306529999 0.0 0.0 -1.0 1.0289404392242432 0.3725799322128296 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.0 0.0 -1.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 1.0259606838226318 0.29135721921920776 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 -0.2839455306529999 0.0 0.0 -1.0 1.0280404090881348 0.3460407257080078 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 -0.2839455306529999 0.0 0.0 -1.0 0.9771514534950256 0.34017306566238403 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 1.0259606838226318 0.29135721921920776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 -0.2839455306529999 0.0 0.0 -1.0 0.9771514534950256 0.34017306566238403 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9788987040519714 0.285663366317749 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 -0.2839455306529999 0.0 0.0 -1.0 1.0583765506744385 0.8830084204673767 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 -0.2839455306529999 0.0 0.0 -1.0 0.9526037573814392 0.9118335843086243 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 1.052425503730774 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 -0.2839455306529999 0.0 0.0 -1.0 1.0583765506744385 0.8830084204673767 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 0.0777084231376648 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.08506765961647034 0.8339129686355591 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.052425503730773926 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 1.0777084827423096 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 1.052425503730774 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 1.0777084827423096 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9053249359130859 0.8409206867218018 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 1.0777084827423096 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9053249359130859 0.8409206867218018 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 0.0 -1.0 -0.0 1.0472700595855713 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.983153760433197 0.06576738506555557 -0.17044587433338165 1.0777084827423096 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 0.0 0.0 -1.0 1.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 1.0472700595855713 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 0.0 1.0 -0.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 0.0 0.999969482421875 -0.0 1.0472700595855713 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 0.0 0.0 -1.0 1.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 0.0 0.0 -1.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 -0.2839455306529999 0.0 0.0 -1.0 0.9716988801956177 0.6664947867393494 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 0.0 0.0 -1.0 1.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 -0.2839455306529999 0.0 0.0 -1.0 0.9716988801956177 0.6664947867393494 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 -0.2839455306529999 0.0 0.0 -1.0 0.9719215631484985 0.6577943563461304 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 0.0 0.0 -1.0 1.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 -0.2839455306529999 0.0 0.0 -1.0 0.9719215631484985 0.6577943563461304 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.0 0.0 -1.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 0.0 0.0 -1.0 1.038870096206665 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 0.0 0.0 -1.0 1.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.0 0.0 -1.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 0.0 0.0 -1.0 1.038870096206665 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.0 0.0 -1.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 -0.2839455306529999 0.0 0.0 -1.0 0.9722524285316467 0.6419804692268372 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 0.0 0.0 -1.0 1.038870096206665 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 -0.2839455306529999 0.0 0.0 -1.0 0.9722524285316467 0.6419804692268372 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.0 0.0 -1.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 0.0 0.0 -1.0 1.0385088920593262 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 0.0 0.0 -1.0 1.038870096206665 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.0 0.0 -1.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 0.0 0.0 -1.0 1.0385088920593262 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.0 0.0 -1.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.0 0.0 -1.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 0.0 0.0 -1.0 1.0381453037261963 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 0.0 0.0 -1.0 1.0385088920593262 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.0 0.0 -1.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 0.0 0.0 -1.0 1.0381453037261963 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.0 0.0 -1.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 -0.2839455306529999 0.0 0.0 -1.0 0.9724791049957275 0.6226339936256409 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 0.0 0.0 -1.0 1.0381453037261963 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 -0.2839455306529999 0.0 0.0 -1.0 0.9724791049957275 0.6226339936256409 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.0 0.0 -1.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 0.0 0.0 -1.0 1.0377793312072754 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 0.0 0.0 -1.0 1.0381453037261963 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.0 0.0 -1.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 0.0 0.0 -1.0 1.0377793312072754 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.0 0.0 -1.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 0.0 0.0 -1.0 1.0374102592468262 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 0.0 0.0 -1.0 1.0377793312072754 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 0.0 0.0 -1.0 1.0374102592468262 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 -0.2839455306529999 0.0 0.0 -1.0 0.9723979234695435 0.6089496612548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 0.0 0.0 -1.0 1.0374102592468262 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 -0.2839455306529999 0.0 0.0 -1.0 0.9723979234695435 0.6089496612548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 -0.2839455306529999 0.0 0.0 -1.0 0.9723045825958252 0.6056911945343018 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 0.0 0.0 -1.0 1.0374102592468262 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 -0.2839455306529999 0.0 0.0 -1.0 0.9723045825958252 0.6056911945343018 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.0 0.0 -1.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 0.0 0.0 -1.0 1.0374102592468262 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.0 0.0 -1.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.0 0.0 -1.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9720193147659302 0.6011558771133423 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9720193147659302 0.6011558771133423 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 -0.2839455306529999 0.0 0.0 -1.0 0.9718208312988281 0.5995715856552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 -0.2839455306529999 0.0 0.0 -1.0 0.9718208312988281 0.5995715856552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 -0.2839455306529999 0.0 0.0 -1.0 0.9715766310691833 0.5980284214019775 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 -0.2839455306529999 0.0 0.0 -1.0 0.9715766310691833 0.5980284214019775 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 0.0 0.0 -1.0 1.0370373725891113 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 -0.2839455306529999 0.0 0.0 -1.0 0.9709528684616089 0.5950659513473511 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 -0.2839455306529999 0.0 0.0 -1.0 0.9709528684616089 0.5950659513473511 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 -0.2839455306529999 0.0 0.0 -1.0 0.9705733060836792 0.5936467051506042 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 -0.2839455306529999 0.0 0.0 -1.0 0.9705733060836792 0.5936467051506042 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 -0.2839455306529999 0.0 0.0 -1.0 0.9701488018035889 0.5922689437866211 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 -0.2839455306529999 0.0 0.0 -1.0 0.9701488018035889 0.5922689437866211 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 -0.2839455306529999 0.0 0.0 -1.0 0.9696797132492065 0.5909324884414673 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 -0.2839455306529999 0.0 0.0 -1.0 0.934057891368866 0.5834326148033142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 -0.2839455306529999 0.0 0.0 -1.0 0.9314653873443604 0.5846927165985107 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 -0.2839455306529999 0.0 0.0 -1.0 0.9696797132492065 0.5909324884414673 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 0.0 0.0 -1.0 1.0366603136062622 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 -0.2839455306529999 0.0 0.0 -1.0 0.9686083793640137 0.5883837938308716 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9365617036819458 0.5822762250900269 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 -0.2839455306529999 0.0 0.0 -1.0 0.934057891368866 0.5834326148033142 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 -0.2839455306529999 0.0 0.0 -1.0 0.9686083793640137 0.5883837938308716 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 -0.2839455306529999 0.0 0.0 -1.0 0.9680066108703613 0.5871713161468506 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 -0.2839455306529999 0.0 0.0 -1.0 0.9680066108703613 0.5871713161468506 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 -0.2839455306529999 0.0 0.0 -1.0 0.9673608541488647 0.5859999656677246 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9389737844467163 0.5812290906906128 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9365617036819458 0.5822762250900269 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 -0.2839455306529999 0.0 0.0 -1.0 0.9673608541488647 0.5859999656677246 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 -0.2839455306529999 0.0 0.0 -1.0 0.9666714072227478 0.5848695635795593 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 -0.2839455306529999 0.0 0.0 -1.0 0.9412914514541626 0.5802960395812988 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9389737844467163 0.5812290906906128 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 -0.2839455306529999 0.0 0.0 -1.0 0.9666714072227478 0.5848695635795593 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 -0.2839455306529999 0.0 0.0 -1.0 0.9435123205184937 0.579481840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 -0.2839455306529999 0.0 0.0 -1.0 0.9412914514541626 0.5802960395812988 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.036278486251831 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9651947021484375 0.5828148126602173 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9651947021484375 0.5828148126602173 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9644157290458679 0.5819108486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 -0.2839455306529999 0.0 0.0 -1.0 0.9456341862678528 0.5787909030914307 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 -0.2839455306529999 0.0 0.0 -1.0 0.9435123205184937 0.579481840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9644157290458679 0.5819108486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9636095762252808 0.5810889005661011 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 -0.2839455306529999 0.0 0.0 -1.0 0.9476549029350281 0.5782271027565002 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 -0.2839455306529999 0.0 0.0 -1.0 0.9456341862678528 0.5787909030914307 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9636095762252808 0.5810889005661011 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9627766609191895 0.5803487300872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9627766609191895 0.5803487300872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 0.9619163274765015 0.5796900987625122 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 -0.2839455306529999 0.0 0.0 -1.0 0.9495729804039001 0.577794075012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 -0.2839455306529999 0.0 0.0 -1.0 0.9476549029350281 0.5782271027565002 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 0.9619163274765015 0.5796900987625122 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 -0.2839455306529999 0.0 0.0 -1.0 0.9610292911529541 0.5791126489639282 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 -0.2839455306529999 0.0 0.0 -1.0 0.9513869285583496 0.5774950981140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 -0.2839455306529999 0.0 0.0 -1.0 0.9495729804039001 0.577794075012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 -0.2839455306529999 0.0 0.0 -1.0 0.9610292911529541 0.5791126489639282 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 -0.2839455306529999 0.0 0.0 -1.0 0.9601153135299683 0.5786160230636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 -0.2839455306529999 0.0 0.0 -1.0 0.953095555305481 0.5773330926895142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 -0.2839455306529999 0.0 0.0 -1.0 0.9513869285583496 0.5774950981140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 -0.2839455306529999 0.0 0.0 -1.0 0.9601153135299683 0.5786160230636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9591747522354126 0.5781999826431274 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9591747522354126 0.5781999826431274 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 -0.2839455306529999 0.0 -0.00045777764171361923 -0.999969482421875 0.9582072496414185 0.5778639912605286 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 -0.2839455306529999 0.0 0.0 -1.0 0.9546976089477539 0.5773108601570129 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 -0.2839455306529999 0.0 0.0 -1.0 0.953095555305481 0.5773330926895142 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 -0.2839455306529999 0.0 -0.00045777764171361923 -0.999969482421875 0.9582072496414185 0.5778639912605286 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 -0.2839455306529999 0.0 9.155552834272385e-05 -0.999969482421875 0.9572130441665649 0.5776077508926392 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 0.0 0.0 -1.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 -0.2839455306529999 0.0 0.0 -1.0 0.9546976089477539 0.5773108601570129 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 -0.2839455306529999 0.0 9.155552834272385e-05 -0.999969482421875 0.9572130441665649 0.5776077508926392 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 0.0 0.0 -1.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 0.0 0.0 -1.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 -0.2839455306529999 0.0 0.0 -1.0 1.0354984998703003 0.5730034112930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 0.0 0.0 -1.0 1.0358915328979492 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 -0.2839455306529999 0.0 0.0 -1.0 1.0350993871688843 0.5686724185943604 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 -0.2839455306529999 0.0 0.0 -1.0 1.0354984998703003 0.5730034112930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 -0.2839455306529999 0.0 0.0 -1.0 1.0346932411193848 0.5649328231811523 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 -0.2839455306529999 0.0 0.0 -1.0 1.0350993871688843 0.5686724185943604 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 -0.2839455306529999 0.0 0.0 -1.0 1.0341529846191406 0.5601645112037659 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 -0.2839455306529999 0.0 0.0 -1.0 1.0346932411193848 0.5649328231811523 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 -0.2839455306529999 0.0 0.0 -1.0 1.0335702896118164 0.5555682182312012 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 -0.2839455306529999 0.0 0.0 -1.0 1.0341529846191406 0.5601645112037659 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 -0.2839455306529999 0.0 0.0 -1.0 1.032945156097412 0.5511438846588135 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 -0.2839455306529999 0.0 0.0 -1.0 1.0335702896118164 0.5555682182312012 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0322777032852173 0.5468913316726685 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 -0.2839455306529999 0.0 0.0 -1.0 1.032945156097412 0.5511438846588135 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0315674543380737 0.5428102016448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0322777032852173 0.5468913316726685 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 -0.2839455306529999 0.0 0.0 -1.0 1.030814290046692 0.5388997793197632 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0315674543380737 0.5428102016448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 -0.2839455306529999 0.0 0.0 -1.0 1.0300182104110718 0.5351594090461731 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 -0.2839455306529999 0.0 0.0 -1.0 1.030814290046692 0.5388997793197632 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 -0.2839455306529999 0.0 0.0 -1.0 1.0291790962219238 0.5315882563591003 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 -0.2839455306529999 0.0 0.0 -1.0 1.0300182104110718 0.5351594090461731 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0282961130142212 0.5281853675842285 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 -0.2839455306529999 0.0 0.0 -1.0 1.0291790962219238 0.5315882563591003 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 -0.2839455306529999 0.0 0.0 -1.0 1.0273691415786743 0.5249497294425964 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0282961130142212 0.5281853675842285 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 -0.2839455306529999 0.0 0.0 -1.0 1.026397705078125 0.5218805074691772 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 -0.2839455306529999 0.0 0.0 -1.0 1.0273691415786743 0.5249497294425964 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 -0.2839455306529999 0.0 0.0 -1.0 1.0253818035125732 0.5189765691757202 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 -0.2839455306529999 0.0 0.0 -1.0 1.026397705078125 0.5218805074691772 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 -0.2839455306529999 0.0 0.0 -1.0 1.0242984294891357 0.516197681427002 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 -0.2839455306529999 0.0 0.0 -1.0 1.0253818035125732 0.5189765691757202 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 -0.2839455306529999 0.0 0.0 -1.0 1.0231249332427979 0.5135035514831543 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 -0.2839455306529999 0.0 0.0 -1.0 1.0242984294891357 0.516197681427002 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 -0.2839455306529999 0.0 0.0 -1.0 1.0218608379364014 0.5108931660652161 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 -0.2839455306529999 0.0 0.0 -1.0 1.0231249332427979 0.5135035514831543 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 -0.2839455306529999 0.0 0.0 -1.0 1.020505428314209 0.5083656311035156 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 -0.2839455306529999 0.0 0.0 -1.0 1.0218608379364014 0.5108931660652161 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 -0.2839455306529999 0.0 0.0 -1.0 1.019058346748352 0.5059202909469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 -0.2839455306529999 0.0 0.0 -1.0 1.020505428314209 0.5083656311035156 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 -0.2839455306529999 0.0 0.0 -1.0 1.0175189971923828 0.5035566091537476 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 -0.2839455306529999 0.0 0.0 -1.0 1.019058346748352 0.5059202909469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 -0.2839455306529999 0.0 0.0 -1.0 1.0158870220184326 0.5012739896774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 -0.2839455306529999 0.0 0.0 -1.0 1.0175189971923828 0.5035566091537476 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 -0.2839455306529999 0.0 0.0 -1.0 1.014161467552185 0.49907225370407104 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 -0.2839455306529999 0.0 0.0 -1.0 1.0158870220184326 0.5012739896774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.012341856956482 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 -0.2839455306529999 0.0 0.0 -1.0 1.014161467552185 0.49907225370407104 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.012341856956482 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.0 0.0 -1.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 0.0 0.0 -1.0 1.0104280710220337 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.012341856956482 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.0 0.0 -1.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 0.0 0.0 -1.0 1.0104280710220337 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.0 0.0 -1.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.0 0.0 -1.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 -0.2839455306529999 0.0 0.0 -1.0 1.0084195137023926 0.4929516911506653 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 0.0 0.0 -1.0 1.0104280710220337 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.0 0.0 -1.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0063157081604004 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 -0.2839455306529999 0.0 0.0 -1.0 1.0084195137023926 0.4929516911506653 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.0 0.0 -1.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0063157081604004 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.0 0.0 -1.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.0 0.0 -1.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 0.0 0.0 -1.0 1.0041418075561523 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0063157081604004 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.0 0.0 -1.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 0.0 0.0 -1.0 1.0041418075561523 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.0 0.0 -1.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.0 0.0 -1.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 0.0 0.0 -1.0 1.00192391872406 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 0.0 0.0 -1.0 1.0041418075561523 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.0 0.0 -1.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 0.0 0.0 -1.0 1.00192391872406 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.0 0.0 -1.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.0 0.0 -1.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 -0.2839455306529999 0.0 0.0 -1.0 0.9996620416641235 0.48620885610580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 0.0 0.0 -1.0 1.00192391872406 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.0 0.0 -1.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 -0.2839455306529999 0.0 0.0 -1.0 0.9996620416641235 0.48620885610580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.0 0.0 -1.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.0 0.0 -1.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.0 0.0 -1.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.0 0.0 -1.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.0 0.0 -1.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.0 0.0 -1.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9926097393035889 0.48264533281326294 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.0 0.0 -1.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9926097393035889 0.48264533281326294 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.0 0.0 -1.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.0 0.0 -1.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.9926097393035889 0.48264533281326294 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.0 0.0 -1.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.0 0.0 -1.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 -0.2839455306529999 0.0 0.0 -1.0 0.9876875281333923 0.4809969663619995 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 0.0 0.0 -1.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 -0.2839455306529999 0.0 0.0 -1.0 0.9876875281333923 0.4809969663619995 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 0.0 0.0 -1.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 0.0 0.0 -1.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 0.0 0.0 -1.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 0.0 0.0 -1.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 -0.2839455306529999 0.0 0.0 -1.0 0.9799787998199463 0.4796203374862671 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 0.0 0.0 -1.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 -0.2839455306529999 0.0 0.0 -1.0 0.9799787998199463 0.4796203374862671 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 -0.2839455306529999 0.0 -0.0005188146606087685 -0.999969482421875 0.9773244857788086 0.4794541597366333 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 -0.2839455306529999 0.0 0.0 -1.0 0.9889234304428101 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.978659987449646 0.7900841236114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.978659987449646 0.7900841236114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0098533630371094 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0098533630371094 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0193462371826172 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0098533630371094 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0193462371826172 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281201601028442 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0193462371826172 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281201601028442 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.036157250404358 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281201601028442 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.036157250404358 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.0 0.0 -1.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434596538543701 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.036157250404358 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.0 0.0 -1.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434596538543701 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.0 0.0 -1.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.0500460863113403 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434596538543701 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.0500460863113403 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 -0.2839455306529999 0.0 0.0 -1.0 0.9239938855171204 0.767682671546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.0500460863113403 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 -0.2839455306529999 0.0 0.0 -1.0 0.9239938855171204 0.767682671546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559453964233398 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.0500460863113403 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559453964233398 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611937046051025 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559453964233398 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611937046051025 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658286809921265 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611937046051025 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658286809921265 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 0.0 0.0 -1.0 1.069889783859253 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658286809921265 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 0.0 0.0 -1.0 1.069889783859253 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 0.0 0.0 -1.0 1.0734143257141113 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 0.0 0.0 -1.0 1.069889783859253 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 0.0 0.0 -1.0 1.0734143257141113 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.0764634609222412 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 0.0 0.0 -1.0 1.0734143257141113 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.0764634609222412 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.0790928602218628 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.0764634609222412 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.0790928602218628 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 -0.2839455306529999 0.0 0.0 -1.0 0.8954375982284546 0.7221292853355408 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.0790928602218628 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 -0.2839455306529999 0.0 0.0 -1.0 0.8954375982284546 0.7221292853355408 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813308954238892 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.0790928602218628 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813308954238892 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832023620605469 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813308954238892 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832023620605469 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.0 0.0 -1.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.0847290754318237 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832023620605469 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.0 0.0 -1.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.0847290754318237 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.0 0.0 -1.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859298706054688 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.0847290754318237 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859298706054688 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 1.0868213176727295 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859298706054688 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859298706054688 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.993322491645813 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.993322491645813 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859298706054688 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9811047315597534 0.725290834903717 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 1.0868213176727295 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 -0.2839455306529999 0.0 -0.0001831110566854477 -0.999969482421875 1.0021334886550903 0.7248518466949463 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 -0.2839455306529999 0.0 0.0 -1.0 0.9776201248168945 0.724622368812561 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9811047315597534 0.725290834903717 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 -0.2839455306529999 0.0 -0.0001831110566854477 -0.999969482421875 0.0021335184574127197 0.7248518466949463 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.006159782409667969 0.7239813804626465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 -0.2839455306529999 0.0 0.0 -1.0 0.974300742149353 0.7237285375595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 -0.2839455306529999 0.0 0.0 -1.0 0.9776201248168945 0.724622368812561 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.006159782409667969 0.7239813804626465 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 -0.2839455306529999 0.0 0.0 -1.0 0.009929001331329346 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.971149206161499 0.7226189374923706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 -0.2839455306529999 0.0 0.0 -1.0 0.974300742149353 0.7237285375595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 -0.2839455306529999 0.0 0.0 -1.0 0.009929001331329346 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.013439804315567017 0.7215794920921326 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 -0.2839455306529999 0.0 0.0 -1.0 0.968167781829834 0.7213026285171509 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.971149206161499 0.7226189374923706 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.013439804315567017 0.7215794920921326 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.016692906618118286 0.7200816869735718 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 -0.2839455306529999 0.0 0.0 -1.0 0.9653576612472534 0.7197879552841187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 -0.2839455306529999 0.0 0.0 -1.0 0.968167781829834 0.7213026285171509 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.016692906618118286 0.7200816869735718 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 -0.2839455306529999 0.0 0.0 -1.0 0.01968926191329956 0.7184059023857117 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 -0.2839455306529999 0.0 0.0 -1.0 0.9653576612472534 0.7197879552841187 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 -0.2839455306529999 0.0 0.0 -1.0 0.01968926191329956 0.7184059023857117 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9602533578872681 0.716193675994873 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 -0.2839455306529999 0.0 0.0 -1.0 0.0249251127243042 0.7145698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 -0.2839455306529999 0.0 0.0 -1.0 0.9579584002494812 0.7141270637512207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9602533578872681 0.716193675994873 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 -0.2839455306529999 0.0 0.0 -1.0 0.0249251127243042 0.7145698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 -0.2839455306529999 0.0 0.0 -1.0 0.02717110514640808 0.7124300003051758 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 -0.2839455306529999 0.0 0.0 -1.0 0.9558334350585938 0.7118881940841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 -0.2839455306529999 0.0 0.0 -1.0 0.9579584002494812 0.7141270637512207 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 -0.2839455306529999 0.0 0.0 -1.0 0.02717110514640808 0.7124300003051758 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 -0.2839455306529999 0.0 0.0 -1.0 0.02917507290840149 0.7101532816886902 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 -0.2839455306529999 0.0 0.0 -1.0 0.9538769721984863 0.7094813585281372 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 -0.2839455306529999 0.0 0.0 -1.0 0.9558334350585938 0.7118881940841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 -0.2839455306529999 0.0 0.0 -1.0 0.02917507290840149 0.7101532816886902 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 -0.2839455306529999 0.0 0.0 -1.0 0.03036937117576599 0.7084847688674927 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 0.0 0.0 -1.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 -0.2839455306529999 0.0 0.0 -1.0 0.9538769721984863 0.7094813585281372 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 0.0 0.0 -1.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 -0.2839455306529999 0.0 0.0 -1.0 0.03036937117576599 0.7084847688674927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 -0.2839455306529999 0.0 0.0 -1.0 0.03240564465522766 0.7049999833106995 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 -0.2839455306529999 0.0 0.0 -1.0 0.9503920078277588 0.7042019963264465 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 0.0 0.0 -1.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 -0.2839455306529999 0.0 0.0 -1.0 0.03240564465522766 0.7049999833106995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 -0.2839455306529999 0.0 0.0 -1.0 0.03325092792510986 0.7031859159469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 -0.2839455306529999 0.0 0.0 -1.0 0.9488427639007568 0.701339602470398 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 -0.2839455306529999 0.0 0.0 -1.0 0.9503920078277588 0.7042019963264465 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 -0.2839455306529999 0.0 0.0 -1.0 0.03325092792510986 0.7031859159469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0339830219745636 0.7013248801231384 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 0.0 0.0 -1.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 -0.2839455306529999 0.0 0.0 -1.0 0.9488427639007568 0.701339602470398 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0339830219745636 0.7013248801231384 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03460294008255005 0.6994173526763916 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03460294008255005 0.6994173526763916 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 0.0 0.0 -1.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9461220502853394 0.6951749324798584 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 0.0 0.0 -1.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 -0.2839455306529999 0.0 0.0 -1.0 0.03551158308982849 0.6954619884490967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 -0.2839455306529999 0.0 0.0 -1.0 0.9449471235275269 0.6918734312057495 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9461220502853394 0.6951749324798584 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 -0.2839455306529999 0.0 0.0 -1.0 0.03551158308982849 0.6954619884490967 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 -0.2839455306529999 0.0 0.0 -1.0 0.03580290079116821 0.6934131383895874 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 -0.2839455306529999 0.0 0.0 -1.0 0.03580290079116821 0.6934131383895874 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 -0.2839455306529999 0.0 0.0 -1.0 0.03598657250404358 0.691315770149231 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 -0.2839455306529999 0.0 0.0 -1.0 0.9438934922218323 0.688425600528717 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 -0.2839455306529999 0.0 0.0 -1.0 0.9449471235275269 0.6918734312057495 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 -0.2839455306529999 0.0 0.0 -1.0 0.03598657250404358 0.691315770149231 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 -0.2839455306529999 0.0 0.0 -1.0 0.9438934922218323 0.688425600528717 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429594278335571 0.6848307847976685 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429594278335571 0.6848307847976685 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 -0.2839455306529999 0.0 0.0 -1.0 0.9421427249908447 0.6810876131057739 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 -0.2839455306529999 0.0 0.0 -1.0 0.9421427249908447 0.6810876131057739 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9414418935775757 0.6771947145462036 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9414418935775757 0.6771947145462036 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 -0.2839455306529999 0.0 0.0 -1.0 0.940855085849762 0.6731501817703247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 -0.2839455306529999 0.0 0.0 -1.0 0.940855085849762 0.6731501817703247 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.0 0.0 -1.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 -0.2839455306529999 0.0 0.0 -1.0 0.9403803944587708 0.6689517498016357 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 -0.2839455306529999 0.0 0.0 -1.0 0.03603509068489075 0.6869707107543945 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 -0.2839455306529999 0.0 0.0 -1.0 0.03603509068489075 0.6869707107543945 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.035921454429626465 0.6850959062576294 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.035921454429626465 0.6850959062576294 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 -0.2839455306529999 0.0 0.0 -1.0 0.03572002053260803 0.6832842230796814 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 -0.2839455306529999 0.0 0.0 -1.0 0.03572002053260803 0.6832842230796814 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 -0.2839455306529999 0.0 0.0 -1.0 0.03505560755729675 0.6798492670059204 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 -0.2839455306529999 0.0 0.0 -1.0 0.03505560755729675 0.6798492670059204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 -0.2839455306529999 0.0 0.0 -1.0 0.034592777490615845 0.6782253980636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 -0.2839455306529999 0.0 0.0 -1.0 0.034592777490615845 0.6782253980636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.034042567014694214 0.6766630411148071 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.034042567014694214 0.6766630411148071 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 -0.2839455306529999 0.0 0.0 -1.0 0.0334048867225647 0.6751617789268494 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 -0.2839455306529999 0.0 0.0 -1.0 0.0334048867225647 0.6751617789268494 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 -0.2839455306529999 0.0 0.0 -1.0 0.0318661630153656 0.6723392009735107 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 -0.2839455306529999 0.0 0.0 -1.0 0.0318661630153656 0.6723392009735107 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 -0.2839455306529999 0.0 0.0 -1.0 0.030964285135269165 0.6710160970687866 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 -0.2839455306529999 0.0 0.0 -1.0 0.030964285135269165 0.6710160970687866 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 -0.2839455306529999 0.0 0.0 -1.0 0.029973596334457397 0.6697502732276917 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 -0.2839455306529999 0.0 0.0 -1.0 0.029973596334457397 0.6697502732276917 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 -0.2839455306529999 0.0 0.0 -1.0 0.02889317274093628 0.6685408353805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 -0.2839455306529999 0.0 0.0 -1.0 0.02889317274093628 0.6685408353805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 -0.2839455306529999 0.0 0.0 -1.0 0.02706146240234375 0.6669514179229736 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 -0.2839455306529999 0.0 0.0 -1.0 0.02706146240234375 0.6669514179229736 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0246143639087677 0.6653087139129639 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0246143639087677 0.6653087139129639 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 -0.2839455306529999 0.0 0.0 -1.0 0.017840862274169922 0.6617412567138672 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 -0.2839455306529999 0.0 0.0 -1.0 0.017840862274169922 0.6617412567138672 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 -0.2839455306529999 0.0 0.0 -1.0 0.013497740030288696 0.6597400307655334 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 -0.2839455306529999 0.0 0.0 -1.0 0.013497740030288696 0.6597400307655334 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 -0.2839455306529999 0.0 0.0 -1.0 0.008508294820785522 0.6575323343276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 -0.2839455306529999 0.0 0.0 -1.0 0.008508294820785522 0.6575323343276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.0 0.0 -1.0 0.002871215343475342 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 0.08384203910827637 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.0 0.0 -1.0 0.002871215343475342 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838420391082764 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.0 0.0 -1.0 1.0028712749481201 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 -0.2839455306529999 0.0 0.0 -1.0 0.99659264087677 0.6522814631462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838420391082764 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 -0.2839455306529999 0.0 0.0 -1.0 0.99659264087677 0.6522814631462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 -0.2839455306529999 0.0 0.0 -1.0 0.9896879196166992 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838420391082764 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 -0.2839455306529999 0.0 0.0 -1.0 0.9896879196166992 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822651386260986 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838420391082764 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822651386260986 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9741263389587402 0.6414514780044556 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822651386260986 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9741263389587402 0.6414514780044556 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 -0.2839455306529999 0.0 0.0 -1.0 0.9655718803405762 0.6368474364280701 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822651386260986 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 -0.2839455306529999 0.0 0.0 -1.0 0.9655718803405762 0.6368474364280701 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804260969161987 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822651386260986 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804260969161987 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 -0.2839455306529999 0.0 0.0 -1.0 0.949317455291748 0.6264196634292603 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804260969161987 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 -0.2839455306529999 0.0 0.0 -1.0 0.949317455291748 0.6264196634292603 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.078317642211914 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804260969161987 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.078317642211914 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 -0.2839455306529999 0.0 0.0 -1.0 0.9356687068939209 0.6151248216629028 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.078317642211914 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 -0.2839455306529999 0.0 0.0 -1.0 0.9356687068939209 0.6151248216629028 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759305953979492 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.078317642211914 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759305953979492 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 -0.2839455306529999 0.0 0.0 -1.0 0.9244864583015442 0.6035186052322388 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759305953979492 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 -0.2839455306529999 0.0 0.0 -1.0 0.9244864583015442 0.6035186052322388 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732536315917969 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759305953979492 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732536315917969 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 -0.2839455306529999 0.0 0.0 -1.0 0.9155389070510864 0.5919426679611206 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732536315917969 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 -0.2839455306529999 0.0 0.0 -1.0 0.9155389070510864 0.5919426679611206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.0 0.0 -1.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273995399475 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732536315917969 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.0 0.0 -1.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273995399475 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.0 0.0 -1.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0669773817062378 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273995399475 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0669773817062378 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 -0.2839455306529999 0.0 0.0 -1.0 0.9057615399360657 0.574970006942749 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0669773817062378 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 -0.2839455306529999 0.0 0.0 -1.0 0.9057615399360657 0.574970006942749 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -1.0 1.0633478164672852 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0669773817062378 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -1.0 1.0633478164672852 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.0593676567077637 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -1.0 1.0633478164672852 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.0593676567077637 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560197830200195 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.0593676567077637 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560197830200195 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 -0.2839455306529999 0.0 0.0 -1.0 1.0519672632217407 0.5626709461212158 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560197830200195 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.0471773147583008 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 -0.2839455306529999 0.0 0.0 -1.0 1.0519672632217407 0.5626709461212158 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.0471773147583008 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0416150093078613 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.0471773147583008 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0416150093078613 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -1.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.035246729850769 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0416150093078613 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -1.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.035246729850769 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -1.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0280433893203735 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.035246729850769 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.0199857950210571 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0280433893203735 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.0199857950210571 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0110712051391602 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.0199857950210571 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0110712051391602 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 -0.2839455306529999 0.0 0.0 -1.0 1.0013197660446167 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0110712051391602 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 -0.2839455306529999 0.0 0.0 -1.0 1.0013197660446167 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 -0.2839455306529999 0.0 0.0 -1.0 0.9795480966567993 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -1.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 -0.2839455306529999 0.0 0.0 -1.0 0.9795480966567993 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -1.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 -0.2839455306529999 0.0 0.0 -1.0 0.9652423858642578 0.5122944116592407 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -1.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9629137516021729 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 -0.2839455306529999 0.0 0.0 -1.0 0.9652423858642578 0.5122944116592407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9607535004615784 0.5096025466918945 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9629137516021729 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9607535004615784 0.5096025466918945 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 -0.2839455306529999 0.0 0.0 -1.0 0.9569313526153564 0.5069000720977783 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9552655220031738 0.5055458545684814 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 -0.2839455306529999 0.0 0.0 -1.0 0.9569313526153564 0.5069000720977783 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 -0.2839455306529999 0.0 0.0 -1.0 0.9537605047225952 0.5041895508766174 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9552655220031738 0.5055458545684814 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 -0.2839455306529999 0.0 0.0 -1.0 0.9524144530296326 0.502831220626831 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 -0.2839455306529999 0.0 0.0 -1.0 0.9537605047225952 0.5041895508766174 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9512251019477844 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 -0.2839455306529999 0.0 0.0 -1.0 0.9524144530296326 0.502831220626831 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9512251019477844 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 -0.2839455306529999 0.0 0.0 -1.0 0.9493098258972168 0.4987393021583557 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9485805034637451 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 -0.2839455306529999 0.0 0.0 -1.0 0.9493098258972168 0.4987393021583557 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 -0.2839455306529999 0.0 0.0 -1.0 0.9479937553405762 0.49590182304382324 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9485805034637451 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -1.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 -0.2839455306529999 0.0 0.0 -1.0 0.034252822399139404 0.5006027221679688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 -0.2839455306529999 0.0 0.0 -1.0 0.03346306085586548 0.4952545762062073 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9474684596061707 0.49438297748565674 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 -0.2839455306529999 0.0 0.0 -1.0 0.9479937553405762 0.49590182304382324 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 -0.2839455306529999 0.0 0.0 -1.0 0.9470036625862122 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9474684596061707 0.49438297748565674 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 -0.2839455306529999 0.0 0.0 -1.0 0.9470036625862122 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -1.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 -0.2839455306529999 0.0 0.0 -1.0 0.03346306085586548 0.4952545762062073 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 -0.2839455306529999 0.0 0.0 -1.0 0.032583266496658325 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9462549090385437 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 -0.2839455306529999 0.0 0.0 -1.0 0.9459701180458069 0.4877855181694031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9462549090385437 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 -0.2839455306529999 0.0 0.0 -1.0 0.945744514465332 0.48600685596466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 -0.2839455306529999 0.0 0.0 -1.0 0.9459701180458069 0.4877855181694031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -1.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 -0.2839455306529999 0.0 0.0 -1.0 0.032583266496658325 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 -0.2839455306529999 0.0 0.0 -1.0 0.03161323070526123 0.4852879047393799 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9455776214599609 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 -0.2839455306529999 0.0 0.0 -1.0 0.945744514465332 0.48600685596466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 -0.2839455306529999 0.0 0.0 -1.0 0.9454691410064697 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9455776214599609 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 -0.2839455306529999 0.0 0.0 -1.0 0.9454691410064697 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -1.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -1.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 -0.2839455306529999 0.0 0.0 -1.0 0.03161323070526123 0.4852879047393799 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 -0.2839455306529999 0.0 0.0 -1.0 0.9454262256622314 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -1.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 -0.2839455306529999 0.0 0.0 -1.0 0.9454910755157471 0.47634971141815186 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 -0.2839455306529999 0.0 0.0 -1.0 0.9454262256622314 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 -0.2839455306529999 0.0 0.0 -1.0 0.029400289058685303 0.4762616753578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 -0.2839455306529999 0.0 0.0 -1.0 0.9456768035888672 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 -0.2839455306529999 0.0 0.0 -1.0 0.9454910755157471 0.47634971141815186 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 -0.2839455306529999 0.0 0.0 -1.0 0.9456768035888672 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 -0.2839455306529999 0.0 0.0 -1.0 0.029400289058685303 0.4762616753578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 -0.2839455306529999 0.0 0.0 -1.0 0.9463337659835815 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 -0.2839455306529999 0.0 0.0 -1.0 0.026820480823516846 0.46813976764678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 -0.2839455306529999 0.0 0.0 -1.0 0.9468050003051758 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 -0.2839455306529999 0.0 0.0 -1.0 0.9463337659835815 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 -0.2839455306529999 0.0 0.0 -1.0 0.9468050003051758 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 -0.2839455306529999 0.0 0.0 -1.0 0.026820480823516846 0.46813976764678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9480323791503906 0.4602992534637451 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.023867100477218628 0.46089041233062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 -0.2839455306529999 0.0 0.0 -1.0 0.9487885236740112 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9480323791503906 0.4602992534637451 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 -0.2839455306529999 0.0 0.0 -1.0 0.9496400952339172 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 -0.2839455306529999 0.0 0.0 -1.0 0.9487885236740112 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.023867100477218628 0.46089041233062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 -0.2839455306529999 0.0 0.0 -1.0 0.022248119115829468 0.45758455991744995 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 -0.2839455306529999 0.0 0.0 -1.0 0.9496400952339172 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 -0.2839455306529999 0.0 0.0 -1.0 0.022248119115829468 0.45758455991744995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 -0.2839455306529999 0.0 0.0 -1.0 0.9516310691833496 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -1.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 -0.2839455306529999 0.0 0.0 -1.0 0.9527712464332581 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 -0.2839455306529999 0.0 0.0 -1.0 0.9516310691833496 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -1.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 -0.2839455306529999 0.0 0.0 -1.0 0.018720537424087524 0.45159733295440674 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 -0.2839455306529999 0.0 0.0 -1.0 0.9540088772773743 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 -0.2839455306529999 0.0 0.0 -1.0 0.9527712464332581 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -1.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 -0.2839455306529999 0.0 0.0 -1.0 0.018720537424087524 0.45159733295440674 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 -0.2839455306529999 0.0 0.0 -1.0 0.01679942011833191 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 -0.2839455306529999 0.0 0.0 -1.0 0.9540088772773743 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -1.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 -0.2839455306529999 0.0 0.0 -1.0 0.01679942011833191 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 -0.2839455306529999 0.0 0.0 -1.0 0.9581106901168823 0.4435710906982422 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -1.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 -0.2839455306529999 0.0 0.0 -1.0 0.012598484754562378 0.4442101716995239 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 -0.2839455306529999 0.0 0.0 -1.0 0.9603778123855591 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 -0.2839455306529999 0.0 0.0 -1.0 0.9581106901168823 0.4435710906982422 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 -0.2839455306529999 0.0 0.0 -1.0 0.012598484754562378 0.4442101716995239 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.01031571626663208 0.4421793818473816 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 -0.2839455306529999 0.0 0.0 -1.0 0.9627910852432251 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 -0.2839455306529999 0.0 0.0 -1.0 0.9603778123855591 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.01031571626663208 0.4421793818473816 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 -0.2839455306529999 0.0 0.0 -1.0 0.007909178733825684 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 -0.2839455306529999 0.0 0.0 -1.0 0.9627910852432251 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 -0.2839455306529999 0.0 0.0 -1.0 0.007909178733825684 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 -0.2839455306529999 0.0 0.0 -1.0 0.005378127098083496 0.43876564502716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9680638909339905 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 -0.2839455306529999 0.0 0.0 -1.0 0.005378127098083496 0.43876564502716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.0 0.0 -1.0 0.002721160650253296 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 -0.2839455306529999 0.0 0.0 -1.0 0.9709261655807495 0.4359474182128906 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9680638909339905 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 0.07005223631858826 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -1.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.0 0.0 -1.0 0.002721160650253296 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.0 0.0 -1.0 1.0027211904525757 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 -0.2839455306529999 0.0 0.0 -1.0 0.9999371767044067 0.43622368574142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 -0.2839455306529999 0.0 0.0 -1.0 0.9739401340484619 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 -0.2839455306529999 0.0 0.0 -1.0 0.9709261655807495 0.4359474182128906 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 -0.2839455306529999 0.0 0.0 -1.0 0.9999371767044067 0.43622368574142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 -0.2839455306529999 0.0 0.0 -1.0 0.9970256090164185 0.43528425693511963 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9771068096160889 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 -0.2839455306529999 0.0 0.0 -1.0 0.9739401340484619 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 -0.2839455306529999 0.0 0.0 -1.0 0.9970256090164185 0.43528425693511963 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9939858913421631 0.43456923961639404 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 -0.2839455306529999 0.0 0.0 -1.0 0.9804263114929199 0.4339858293533325 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9771068096160889 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 -0.2839455306529999 0.0 -3.0518509447574615e-05 -0.999969482421875 0.9939858913421631 0.43456923961639404 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 0.9908179044723511 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 -0.2839455306529999 0.0 0.0 -1.0 0.9838982820510864 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 -0.2839455306529999 0.0 0.0 -1.0 0.9804263114929199 0.4339858293533325 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 0.9908179044723511 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 -0.2839455306529999 0.0 0.0 -1.0 0.9838982820510864 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.0674748420715332 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -1.0 1.0700522661209106 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.0674748420715332 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.064708948135376 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.0674748420715332 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.064708948135376 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.061747670173645 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.064708948135376 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.061747670173645 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -1.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585827827453613 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.061747670173645 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -1.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585827827453613 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -1.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552059412002563 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585827827453613 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552059412002563 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516088008880615 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552059412002563 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516088008880615 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0477819442749023 0.40075987577438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516088008880615 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.043715238571167 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0477819442749023 0.40075987577438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.043715238571167 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393989086151123 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.043715238571167 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393989086151123 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -1.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348238945007324 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393989086151123 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -1.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348238945007324 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -1.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299824476242065 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348238945007324 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299824476242065 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.024867057800293 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299824476242065 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.024867057800293 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.019472360610962 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.024867057800293 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.019472360610962 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.013795018196106 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.019472360610962 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.013795018196106 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0078344345092773 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.013795018196106 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0078344345092773 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -1.0 1.0015931129455566 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0078344345092773 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -1.0 1.0015931129455566 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.9950774908065796 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -1.0 1.0015931129455566 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.9950774908065796 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 -0.2839455306529999 0.0 0.0 -1.0 0.9882978200912476 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9941284656524658 0.7937484979629517 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9840543270111084 0.7939989566802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.0 0.0 -1.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 0.0 0.0 -1.0 1.0038418769836426 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9941284656524658 0.7937484979629517 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.0 0.0 -1.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 0.0 0.0 -1.0 1.0038418769836426 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.0 0.0 -1.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 0.0 0.0 -1.0 1.013106107711792 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 0.0 0.0 -1.0 1.0038418769836426 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 0.0 0.0 -1.0 1.013106107711792 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.0 0.0 -1.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0218535661697388 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 0.0 0.0 -1.0 1.013106107711792 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.0 0.0 -1.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0218535661697388 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.0 0.0 -1.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.0 0.0 -1.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 0.0 0.0 -1.0 1.030038595199585 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0218535661697388 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.0 0.0 -1.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 0.0 0.0 -1.0 1.030038595199585 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.0 0.0 -1.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 0.0 0.0 -1.0 1.0376348495483398 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 0.0 0.0 -1.0 1.030038595199585 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 0.0 0.0 -1.0 1.0376348495483398 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.0 0.0 -1.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 0.0 0.0 -1.0 1.044634222984314 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 0.0 0.0 -1.0 1.0376348495483398 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.0 0.0 -1.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 0.0 0.0 -1.0 1.044634222984314 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.0 0.0 -1.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.0 0.0 -1.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 0.0 0.0 -1.0 1.051041603088379 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 0.0 0.0 -1.0 1.044634222984314 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.0 0.0 -1.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 0.0 0.0 -1.0 1.051041603088379 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.0 0.0 -1.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.0 0.0 -1.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0568726062774658 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 0.0 0.0 -1.0 1.051041603088379 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.0 0.0 -1.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0568726062774658 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.0 0.0 -1.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 0.0 0.0 -1.0 1.0621501207351685 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0568726062774658 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 0.0 0.0 -1.0 1.0621501207351685 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 0.0 0.0 -1.0 1.066901683807373 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 0.0 0.0 -1.0 1.0621501207351685 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 0.0 0.0 -1.0 1.066901683807373 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.0 0.0 -1.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0711573362350464 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 0.0 0.0 -1.0 1.066901683807373 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.0 0.0 -1.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0711573362350464 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.0 0.0 -1.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.0 0.0 -1.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.074866533279419 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0711573362350464 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.0 0.0 -1.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.074866533279419 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.0 0.0 -1.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.0 0.0 -1.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 0.0 0.0 -1.0 1.0779918432235718 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.074866533279419 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.0 0.0 -1.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 0.0 0.0 -1.0 1.0779918432235718 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.0 0.0 -1.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 0.0 0.0 -1.0 1.0779918432235718 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.0 0.0 -1.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.0 0.0 -1.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 0.0 0.0 -1.0 1.0779918432235718 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 0.0 0.0 -1.0 1.0779918432235718 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 0.0 0.0 -1.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 0.0 0.0 -1.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 -0.2839455306529999 0.0 0.0 -1.0 0.9736800193786621 0.7242040634155273 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 0.0 0.0 -1.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.0 0.0 -1.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 -0.2839455306529999 0.0 -0.00012207403779029846 -1.0 0.9888919591903687 0.7250957489013672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 -0.2839455306529999 0.0 0.0 -1.0 0.9701930284500122 0.7229883670806885 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 -0.2839455306529999 0.0 0.0 -1.0 0.9736800193786621 0.7242040634155273 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 -0.2839455306529999 0.0 -0.00012207403779029846 -1.0 0.9888919591903687 0.7250957489013672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9926527738571167 0.7242611050605774 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9668347239494324 0.7213927507400513 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 -0.2839455306529999 0.0 0.0 -1.0 0.9701930284500122 0.7229883670806885 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.9926527738571167 0.7242611050605774 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 -0.2839455306529999 0.0 0.0 -1.0 0.9962847232818604 0.7230038642883301 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9636092185974121 0.7194227576255798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9668347239494324 0.7213927507400513 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 -0.2839455306529999 0.0 0.0 -1.0 0.9962847232818604 0.7230038642883301 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 -0.2839455306529999 0.0 0.0 -1.0 0.9997810125350952 0.7213302850723267 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 -0.2839455306529999 0.0 0.0 -1.0 0.9605203866958618 0.7170834541320801 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9636092185974121 0.7194227576255798 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 1.0805798768997192 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 -0.2839455306529999 0.0 0.0 -1.0 0.9997810125350952 0.7213302850723267 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0031362771987915 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 -0.2839455306529999 0.0 0.0 -1.0 0.9575706124305725 0.7143791913986206 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 -0.2839455306529999 0.0 0.0 -1.0 0.9605203866958618 0.7170834541320801 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 0.0 0.0 -1.0 0.08057984709739685 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.003136277198791504 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.003136277198791504 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 -0.2839455306529999 0.0 0.0 -1.0 0.006345778703689575 0.7167558670043945 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9547619819641113 0.7113131284713745 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 -0.2839455306529999 0.0 0.0 -1.0 0.9575706124305725 0.7143791913986206 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 -0.2839455306529999 0.0 0.0 -1.0 0.006345778703689575 0.7167558670043945 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 -0.2839455306529999 0.0 0.0 -1.0 0.00940614938735962 0.7138638496398926 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 0.0 0.0 -1.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9547619819641113 0.7113131284713745 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 -0.2839455306529999 0.0 0.0 -1.0 0.00940614938735962 0.7138638496398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012314856052398682 0.7105729579925537 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 0.0 0.0 -1.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.0 0.0 -1.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 -0.2839455306529999 0.0 0.0 -1.0 0.9495713114738464 0.7041049003601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 0.0 0.0 -1.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012314856052398682 0.7105729579925537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 -0.2839455306529999 0.0 0.0 -1.0 0.015070319175720215 0.7068853378295898 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9471895694732666 0.699965238571167 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 -0.2839455306529999 0.0 0.0 -1.0 0.9495713114738464 0.7041049003601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 -0.2839455306529999 0.0 0.0 -1.0 0.015070319175720215 0.7068853378295898 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.0 0.0 -1.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 0.0 0.0 -1.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 0.0 0.0 -1.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.0 0.0 -1.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9449496269226074 0.6954689025878906 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9471895694732666 0.699965238571167 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 0.0 0.0 -1.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.0 0.0 -1.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 -0.2839455306529999 0.0 0.0 -1.0 0.020119577646255493 0.698323130607605 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9449496269226074 0.6954689025878906 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.0 0.0 -1.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.0 0.0 -1.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 0.0 0.0 -1.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 -0.2839455306529999 0.0 0.0 -1.0 0.020119577646255493 0.698323130607605 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 -0.2839455306529999 0.0 0.0 -1.0 0.022365719079971313 0.6935079097747803 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 -0.2839455306529999 0.0 0.0 -1.0 0.941087543964386 0.6855176687240601 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.0 0.0 -1.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 0.0 0.0 -1.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 -0.2839455306529999 0.0 0.0 -1.0 0.022365719079971313 0.6935079097747803 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 0.0 0.0 -1.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 0.0 0.0 -1.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 -0.2839455306529999 0.0 0.0 -1.0 0.939506471157074 0.6800910234451294 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 -0.2839455306529999 0.0 0.0 -1.0 0.941087543964386 0.6855176687240601 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.0 0.0 -1.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 0.0 0.0 -1.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 -0.2839455306529999 0.0 0.0 -1.0 0.026126623153686523 0.6830544471740723 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 0.0 0.0 -1.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 -0.2839455306529999 0.0 0.0 -1.0 0.939506471157074 0.6800910234451294 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.0 0.0 -1.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 0.0 0.0 -1.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.0 0.0 -1.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.0 0.0 -1.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 0.0 0.0 -1.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 -0.2839455306529999 0.0 0.0 -1.0 0.026126623153686523 0.6830544471740723 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.0 0.0 -1.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9370168447494507 0.6683270931243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 0.0 0.0 -1.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.0 0.0 -1.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 0.0 0.0 -1.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 0.0 0.0 -1.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.0 0.0 -1.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 0.0 0.0 -1.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.0 0.0 -1.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 -0.2839455306529999 0.0 0.0 -1.0 0.028948843479156494 0.6715095043182373 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 0.0 0.0 -1.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9370168447494507 0.6683270931243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.0 0.0 -1.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 0.0 0.0 -1.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 -0.2839455306529999 0.0 0.0 -1.0 0.028948843479156494 0.6715095043182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 -0.2839455306529999 0.0 0.0 -1.0 0.03002151846885681 0.6653246879577637 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 0.0 0.0 -1.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.0 0.0 -1.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.0 0.0 -1.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 -0.2839455306529999 0.0 0.0 -1.0 0.9353874921798706 0.6553221940994263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 0.0 0.0 -1.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.0 0.0 -1.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 0.0 0.0 -1.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 -0.2839455306529999 0.0 0.0 -1.0 0.03002151846885681 0.6653246879577637 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.0 0.0 -1.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 0.0 0.0 -1.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 0.0 0.0 -1.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.0 0.0 -1.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 -0.2839455306529999 0.0 0.0 -1.0 0.9348825812339783 0.6483409404754639 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 -0.2839455306529999 0.0 0.0 -1.0 0.9353874921798706 0.6553221940994263 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.0 0.0 -1.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 0.0 0.0 -1.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.0 0.0 -1.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 -0.2839455306529999 0.0 0.0 -1.0 0.031516820192337036 0.6521144509315491 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 -0.2839455306529999 0.0 0.0 -1.0 0.9348825812339783 0.6483409404754639 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.0 0.0 -1.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 0.0 0.0 -1.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 -0.2839455306529999 0.0 0.0 -1.0 0.031516820192337036 0.6521144509315491 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.0 0.0 -1.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.0 0.0 -1.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 0.0 0.0 -1.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 0.0 0.0 -1.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9344682097434998 0.6333895921707153 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.0 0.0 -1.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 0.0 0.0 -1.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 -0.2839455306529999 0.0 0.0 -1.0 0.032178282737731934 0.6377542018890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 0.0 0.0 -1.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9344682097434998 0.6333895921707153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.0 0.0 -1.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 0.0 0.0 -1.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 -0.2839455306529999 0.0 0.0 -1.0 0.032178282737731934 0.6377542018890381 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.0 0.0 -1.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08653220534324646 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 0.0 0.0 -1.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.0 0.0 -1.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 0.0 0.0 -1.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.0 0.0 -1.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 0.0 0.0 -1.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 0.0 0.0 -1.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08653220534324646 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.0 0.0 -1.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 -0.2839455306529999 0.0 0.0 -1.0 0.03204253315925598 0.6222053170204163 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0865322351455688 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 -0.2839455306529999 0.0 0.0 -1.0 1.0320425033569336 0.6222053170204163 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 0.0 0.0 -1.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0865322351455688 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 0.0 0.0 -1.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859289169311523 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0865322351455688 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859289169311523 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.0 0.0 -1.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 0.0 0.0 -1.0 1.085007905960083 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859289169311523 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.0 0.0 -1.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 0.0 0.0 -1.0 1.085007905960083 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.0 0.0 -1.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.0 0.0 -1.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 0.0 0.0 -1.0 1.0840163230895996 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 0.0 0.0 -1.0 1.085007905960083 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.0 0.0 -1.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 0.0 0.0 -1.0 1.0840163230895996 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.0 0.0 -1.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 0.0 0.0 -1.0 1.0828447341918945 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 0.0 0.0 -1.0 1.0840163230895996 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 0.0 0.0 -1.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 0.0 0.0 -1.0 0.08284473419189453 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 0.03118249773979187 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 1.0311825275421143 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 0.0 0.0 -1.0 1.0828447341918945 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 0.0 0.0 -1.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.0 0.0 -1.0 0.03118249773979187 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 -0.2839455306529999 0.0 0.0 -1.0 0.03077256679534912 0.540071964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 0.0 0.0 -1.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 -0.2839455306529999 0.0 0.0 -1.0 0.03077256679534912 0.540071964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.0 0.0 -1.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 0.0 0.0 -1.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 0.0 0.0 -1.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.0 0.0 -1.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 0.0 0.0 -1.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.0 0.0 -1.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 -0.2839455306529999 0.0 0.0 -1.0 0.029464364051818848 0.5239272117614746 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 0.0 0.0 -1.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 -0.2839455306529999 0.0 0.0 -1.0 0.029464364051818848 0.5239272117614746 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.0 0.0 -1.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 0.0 0.0 -1.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 0.0 0.0 -1.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.0 0.0 -1.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 0.0 0.0 -1.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.0 0.0 -1.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 -0.2839455306529999 0.0 0.0 -1.0 0.027515262365341187 0.5092605352401733 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 0.0 0.0 -1.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 -0.2839455306529999 0.0 0.0 -1.0 0.027515262365341187 0.5092605352401733 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.0 0.0 -1.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 0.0 0.0 -1.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 0.0 0.0 -1.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.0 0.0 -1.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 0.0 0.0 -1.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.0 0.0 -1.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 -0.2839455306529999 0.0 0.0 -1.0 0.02493041753768921 0.4960223436355591 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 -0.2839455306529999 0.0 0.0 -1.0 0.9450085163116455 0.49344611167907715 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 -0.2839455306529999 0.0 0.0 -1.0 0.9439747929573059 0.4986279010772705 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.0 0.0 -1.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 -0.2839455306529999 0.0 0.0 -1.0 0.946087121963501 0.488539457321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 -0.2839455306529999 0.0 0.0 -1.0 0.9450085163116455 0.49344611167907715 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.0 0.0 -1.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 0.0 0.0 -1.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 -0.2839455306529999 0.0 0.0 -1.0 0.02493041753768921 0.4960223436355591 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.0 0.0 -1.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 0.0 0.0 -1.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 0.0 0.0 -1.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.0 0.0 -1.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 -0.2839455306529999 0.0 0.0 -1.0 0.9472108483314514 0.48390400409698486 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 -0.2839455306529999 0.0 0.0 -1.0 0.946087121963501 0.488539457321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.0 0.0 -1.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 0.0 0.0 -1.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.0 0.0 -1.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.021708518266677856 0.4841575026512146 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 0.0 0.0 -1.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 -0.2839455306529999 0.0 0.0 -1.0 0.9472108483314514 0.48390400409698486 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.0 0.0 -1.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 0.0 0.0 -1.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.021708518266677856 0.4841575026512146 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.0 0.0 -1.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 0.0 0.0 -1.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 0.0 0.0 -1.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.0 0.0 -1.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 0.0 0.0 -1.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.0 0.0 -1.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.0 0.0 -1.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 -0.2839455306529999 0.0 0.0 -1.0 0.9495965242385864 0.47543054819107056 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 0.0 0.0 -1.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.0 0.0 -1.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 0.0 0.0 -1.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.0 0.0 -1.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 -0.2839455306529999 0.0 0.0 -1.0 0.01784294843673706 0.4736138582229614 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 -0.2839455306529999 0.0 0.0 -1.0 0.9508596658706665 0.4715844988822937 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 -0.2839455306529999 0.0 0.0 -1.0 0.9495965242385864 0.47543054819107056 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.0 0.0 -1.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 0.0 0.0 -1.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 -0.2839455306529999 0.0 0.0 -1.0 0.9508596658706665 0.4715844988822937 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.0 0.0 -1.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 0.0 0.0 -1.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 -0.2839455306529999 0.0 0.0 -1.0 0.01784294843673706 0.4736138582229614 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.0 0.0 -1.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 0.0 0.0 -1.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.0 0.0 -1.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.0 0.0 -1.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 0.0 0.0 -1.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 0.0 0.0 -1.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.0 0.0 -1.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 -0.2839455306529999 0.0 0.0 -1.0 0.9535298347473145 0.46465450525283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 0.0 0.0 -1.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.0 0.0 -1.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 0.0 0.0 -1.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.0 0.0 -1.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 -0.2839455306529999 0.0 0.0 -1.0 0.013366401195526123 0.464388370513916 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 -0.2839455306529999 0.0 0.0 -1.0 0.954938530921936 0.4615635275840759 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 -0.2839455306529999 0.0 0.0 -1.0 0.9535298347473145 0.46465450525283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.0 0.0 -1.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 0.0 0.0 -1.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 -0.2839455306529999 0.0 0.0 -1.0 0.013366401195526123 0.464388370513916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 -0.2839455306529999 0.0 0.0 -1.0 0.010986119508743286 0.46034443378448486 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 0.0 0.0 -1.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 -0.2839455306529999 0.0 0.0 -1.0 0.954938530921936 0.4615635275840759 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.0 0.0 -1.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 0.0 0.0 -1.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.0 0.0 -1.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.0 0.0 -1.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 -0.2839455306529999 0.0 0.0 -1.0 0.9579070806503296 0.4561135172843933 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 0.0 0.0 -1.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.0 0.0 -1.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 0.0 0.0 -1.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 -0.2839455306529999 0.0 0.0 -1.0 0.010986119508743286 0.46034443378448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.0 0.0 -1.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 0.0 0.0 -1.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 0.0 0.0 -1.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.0 0.0 -1.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9594686031341553 0.4537491202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 -0.2839455306529999 0.0 0.0 -1.0 0.9579070806503296 0.4561135172843933 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.0 0.0 -1.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 0.0 0.0 -1.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.0 0.0 -1.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 -0.2839455306529999 0.0 0.0 -1.0 0.0059764087200164795 0.45341217517852783 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 0.0 0.0 -1.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9594686031341553 0.4537491202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.0 0.0 -1.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 0.0 0.0 -1.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.0 0.0 -1.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 0.0 0.0 -1.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 -0.2839455306529999 0.0 0.0 -1.0 0.0059764087200164795 0.45341217517852783 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 -0.2839455306529999 0.0 0.0 -1.0 0.0033438801765441895 0.4505161643028259 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 -0.2839455306529999 0.0 0.0 -1.0 0.9627474546432495 0.44964832067489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 0.0 0.0 -1.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.964465856552124 0.44788867235183716 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 -0.2839455306529999 0.0 0.0 -1.0 0.9627474546432495 0.44964832067489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 0.0 0.0 -1.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 -0.2839455306529999 0.0 0.0 -1.0 0.0033438801765441895 0.4505161643028259 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.0 0.0 -1.0 0.0006244778633117676 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 0.06383192539215088 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 0.0 0.0 -1.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.0 0.0 -1.0 0.0006244778633117676 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 -0.2839455306529999 0.0 0.0 -1.0 0.9662376642227173 0.44632160663604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.964465856552124 0.44788867235183716 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.0 0.0 -1.0 1.000624418258667 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9978166818618774 0.4458499550819397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 -0.2839455306529999 0.0 0.0 -1.0 0.9680637121200562 0.4449465274810791 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 -0.2839455306529999 0.0 0.0 -1.0 0.9662376642227173 0.44632160663604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 -0.2839455306529999 0.0 0.0 -1.0 0.9680637121200562 0.4449465274810791 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9978166818618774 0.4458499550819397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 -0.2839455306529999 0.0 0.0 -1.0 0.9949193596839905 0.4440760612487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 -0.2839455306529999 0.0 0.0 -1.0 0.9718810319900513 0.44277089834213257 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 -0.2839455306529999 0.0 0.0 -1.0 0.9949193596839905 0.4440760612487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9919314384460449 0.4426735043525696 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 -0.2839455306529999 0.0 0.0 -1.0 0.9738736152648926 0.4419704079627991 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 -0.2839455306529999 0.0 0.0 -1.0 0.9718810319900513 0.44277089834213257 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9919314384460449 0.4426735043525696 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 -0.2839455306529999 0.0 0.0 -1.0 0.9888521432876587 0.4416421055793762 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9759230017662048 0.44136184453964233 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 -0.2839455306529999 0.0 0.0 -1.0 0.9738736152648926 0.4419704079627991 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 -0.2839455306529999 0.0 0.0 -1.0 0.978029727935791 0.44094574451446533 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9759230017662048 0.44136184453964233 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 -0.2839455306529999 0.0 0.0 -1.0 0.9888521432876587 0.4416421055793762 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9856808185577393 0.4409821033477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 -0.2839455306529999 0.0 0.0 -1.0 0.9801942110061646 0.4407229423522949 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 -0.2839455306529999 0.0 0.0 -1.0 0.978029727935791 0.44094574451446533 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9856808185577393 0.4409821033477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0 0.0 -1.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0 0.0 -1.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 -0.2839455306529999 0.0 0.0 -1.0 0.9801942110061646 0.4407229423522949 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0 0.0 -1.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0606844425201416 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 0.0 0.0 -1.0 1.0638319253921509 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0606844425201416 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.0 0.0 -1.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 0.0 0.0 -1.0 1.0564019680023193 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0606844425201416 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 0.0 0.0 -1.0 1.0564019680023193 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 -0.2839455306529999 0.0 0.0 -1.0 0.9130018949508667 0.4282703995704651 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 0.0 0.0 -1.0 1.0564019680023193 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 -0.2839455306529999 0.0 0.0 -1.0 0.9130018949508667 0.4282703995704651 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.0 0.0 -1.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.051793098449707 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 0.0 0.0 -1.0 1.0564019680023193 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.0 0.0 -1.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.051793098449707 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.0 0.0 -1.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.0 0.0 -1.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 0.0 0.0 -1.0 1.0468385219573975 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.051793098449707 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.0 0.0 -1.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 0.0 0.0 -1.0 1.0468385219573975 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.0 0.0 -1.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9222360253334045 0.4110592007637024 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 0.0 0.0 -1.0 1.0468385219573975 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9222360253334045 0.4110592007637024 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0415186882019043 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 0.0 0.0 -1.0 1.0468385219573975 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0415186882019043 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 -0.2839455306529999 0.0 0.0 -1.0 0.9291298389434814 0.4012235999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0415186882019043 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 -0.2839455306529999 0.0 0.0 -1.0 0.9291298389434814 0.4012235999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 0.0 0.0 -1.0 1.0358147621154785 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0415186882019043 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 0.0 0.0 -1.0 1.0358147621154785 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.0 0.0 -1.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0297091007232666 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 0.0 0.0 -1.0 1.0358147621154785 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.0 0.0 -1.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0297091007232666 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.0 0.0 -1.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 -0.2839455306529999 0.0 0.0 -1.0 0.9406315088272095 0.38906025886535645 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0297091007232666 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 -0.2839455306529999 0.0 0.0 -1.0 0.9406315088272095 0.38906025886535645 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.0 0.0 -1.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 0.0 0.0 -1.0 1.023186206817627 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0297091007232666 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.0 0.0 -1.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 0.0 0.0 -1.0 1.023186206817627 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.0 0.0 -1.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 0.0 0.0 -1.0 1.0162346363067627 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 0.0 0.0 -1.0 1.023186206817627 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 0.0 0.0 -1.0 1.0162346363067627 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 -0.2839455306529999 0.0 0.0 -1.0 0.9535930156707764 0.3801887631416321 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 0.0 0.0 -1.0 1.0162346363067627 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 -0.2839455306529999 0.0 0.0 -1.0 0.9535930156707764 0.3801887631416321 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.0 0.0 -1.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 0.0 0.0 -1.0 1.0088480710983276 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 0.0 0.0 -1.0 1.0162346363067627 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.0 0.0 -1.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 0.0 0.0 -1.0 1.0088480710983276 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.0 0.0 -1.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.0 0.0 -1.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 0.0 0.0 -1.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 0.0 0.0 -1.0 1.0088480710983276 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.0 0.0 -1.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 0.0 0.0 -1.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.0 0.0 -1.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 -0.2839455306529999 0.0 0.0 -1.0 0.968092679977417 0.37479931116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 0.0 0.0 -1.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 -0.2839455306529999 0.0 0.0 -1.0 0.968092679977417 0.37479931116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.0 0.0 -1.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 0.0 0.0 -1.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.0 0.0 -1.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.0 0.0 -1.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 -0.2839455306529999 0.0 0.0 -1.0 0.9786159992218018 0.373282253742218 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 -0.2839455306529999 0.0 0.0 -1.0 0.9841258525848389 0.3731839060783386 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 -0.2839455306529999 0.0 0.0 -1.0 0.9786159992218018 0.373282253742218 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 1.0703219175338745 0.8121410012245178 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 1.0762239694595337 0.8483100533485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 0.8829363584518433 0.837841272354126 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 1.0703219175338745 0.8121410012245178 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 0.8829363584518433 0.837841272354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 0.8911066055297852 0.8022257685661316 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 0.0 0.0 -1.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9889223575592041 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9786590337753296 0.7900840640068054 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 0.0 0.0 -1.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9786590337753296 0.7900840640068054 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.0 0.0 -1.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 0.0 0.0 -1.0 1.009852409362793 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 0.0 0.0 -1.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.0 0.0 -1.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 0.0 0.0 -1.0 1.009852409362793 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.0 0.0 -1.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 0.0 0.0 -1.0 1.0193452835083008 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 0.0 0.0 -1.0 1.009852409362793 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 0.0 0.0 -1.0 1.0193452835083008 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.0 0.0 -1.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281193256378174 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 0.0 0.0 -1.0 1.0193452835083008 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281193256378174 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.0 0.0 -1.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.0 0.0 -1.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.0361562967300415 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 0.0 0.0 -1.0 1.0281193256378174 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.0 0.0 -1.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.0361562967300415 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.0 0.0 -1.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434587001800537 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 0.0 0.0 -1.0 1.0361562967300415 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434587001800537 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.050045132637024 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 0.0 0.0 -1.0 1.0434587001800537 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.050045132637024 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.0 0.0 -1.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 -0.2839455306529999 0.0 0.0 -1.0 0.9239929914474487 0.7676823139190674 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.050045132637024 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 -0.2839455306529999 0.0 0.0 -1.0 0.9239929914474487 0.7676823139190674 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559446811676025 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 0.0 0.0 -1.0 1.050045132637024 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559446811676025 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.0 0.0 -1.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611928701400757 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 0.0 0.0 -1.0 1.0559446811676025 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611928701400757 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.0 0.0 -1.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658278465270996 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 0.0 0.0 -1.0 1.0611928701400757 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658278465270996 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.0 0.0 -1.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.069888949394226 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 0.0 0.0 -1.0 1.0658278465270996 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.069888949394226 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.0 0.0 -1.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0734137296676636 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.069888949394226 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0734137296676636 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.0 0.0 -1.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.076462745666504 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0734137296676636 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.076462745666504 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.0 0.0 -1.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.079092264175415 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 0.0 0.0 -1.0 1.076462745666504 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.079092264175415 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.0 0.0 -1.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 -0.2839455306529999 0.0 0.0 -1.0 0.8954370021820068 0.7221288681030273 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.079092264175415 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 -0.2839455306529999 0.0 0.0 -1.0 0.8954370021820068 0.7221288681030273 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813302993774414 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 0.0 0.0 -1.0 1.079092264175415 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813302993774414 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.0 0.0 -1.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832017660140991 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0813302993774414 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832017660140991 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.0 0.0 -1.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.084728479385376 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 0.0 0.0 -1.0 1.0832017660140991 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.084728479385376 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859293937683105 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 0.0 0.0 -1.0 1.084728479385376 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859293937683105 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.0 0.0 -1.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 1.0868208408355713 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859293937683105 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859293937683105 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9933216571807861 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9933216571807861 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0859293937683105 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 0.0 0.0 -1.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 -0.2839455306529999 0.0 0.0 -1.0 0.9811038374900818 0.7252907752990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 1.0868208408355713 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.0 0.0 -1.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 1.002132534980774 0.7248519659042358 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 -0.2839455306529999 0.0 0.0 -1.0 0.9776194095611572 0.7246223092079163 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 -0.2839455306529999 0.0 0.0 -1.0 0.9811038374900818 0.7252907752990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 -0.2839455306529999 0.0 9.155552834272385e-05 -1.0 0.0021325647830963135 0.7248519659042358 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 -0.2839455306529999 0.0 -9.155552834272385e-05 -0.999969482421875 0.006159007549285889 0.723981499671936 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 -0.2839455306529999 0.0 0.0 -1.0 0.9742997884750366 0.7237284183502197 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 -0.2839455306529999 0.0 0.0 -1.0 0.9776194095611572 0.7246223092079163 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 -0.2839455306529999 0.0 -9.155552834272385e-05 -0.999969482421875 0.006159007549285889 0.723981499671936 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 -0.2839455306529999 0.0 0.0 -1.0 0.009928256273269653 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 -0.2839455306529999 0.0 0.0 -1.0 0.9711482524871826 0.7226188778877258 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 -0.2839455306529999 0.0 0.0 -1.0 0.9742997884750366 0.7237284183502197 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 -0.2839455306529999 0.0 0.0 -1.0 0.009928256273269653 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.013439029455184937 0.7215795516967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9681668281555176 0.7213025093078613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 -0.2839455306529999 0.0 0.0 -1.0 0.9711482524871826 0.7226188778877258 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.013439029455184937 0.7215795516967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.01669195294380188 0.7200818061828613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.965356707572937 0.7197878360748291 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9681668281555176 0.7213025093078613 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.01669195294380188 0.7200818061828613 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 -0.2839455306529999 0.0 0.0 -1.0 0.019688516855239868 0.718406081199646 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 0.0 0.0 -1.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.965356707572937 0.7197878360748291 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 0.0 0.0 -1.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.0 0.0 -1.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 -0.2839455306529999 0.0 0.0 -1.0 0.019688516855239868 0.718406081199646 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 -0.2839455306529999 0.0 0.0 -1.0 0.9602524042129517 0.716193437576294 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 0.0 0.0 -1.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 0.0 0.0 -1.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.0 0.0 -1.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 -0.2839455306529999 0.0 0.0 -1.0 0.02492421865463257 0.7145699262619019 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 -0.2839455306529999 0.0 0.0 -1.0 0.9579575061798096 0.7141268253326416 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 -0.2839455306529999 0.0 0.0 -1.0 0.9602524042129517 0.716193437576294 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 -0.2839455306529999 0.0 0.0 -1.0 0.02492421865463257 0.7145699262619019 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 -0.2839455306529999 0.0 0.0 -1.0 0.027170389890670776 0.7124302387237549 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 -0.2839455306529999 0.0 0.0 -1.0 0.9558324813842773 0.7118879556655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 -0.2839455306529999 0.0 0.0 -1.0 0.9579575061798096 0.7141268253326416 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 -0.2839455306529999 0.0 0.0 -1.0 0.027170389890670776 0.7124302387237549 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 -0.2839455306529999 0.0 0.0 -1.0 0.029174327850341797 0.7101534605026245 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 -0.2839455306529999 0.0 0.0 -1.0 0.9538760185241699 0.7094811201095581 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 -0.2839455306529999 0.0 0.0 -1.0 0.9558324813842773 0.7118879556655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 -0.2839455306529999 0.0 0.0 -1.0 0.029174327850341797 0.7101534605026245 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 -0.2839455306529999 0.0 0.0 -1.0 0.030368447303771973 0.708484947681427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 -0.2839455306529999 0.0 0.0 -1.0 0.9538760185241699 0.7094811201095581 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.0 0.0 -1.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 -0.2839455306529999 0.0 0.0 -1.0 0.030368447303771973 0.708484947681427 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 0.0 0.0 -1.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.0 0.0 -1.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 -0.2839455306529999 0.0 0.0 -1.0 0.032404929399490356 0.7050001621246338 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 -0.2839455306529999 0.0 0.0 -1.0 0.9503912925720215 0.7042018175125122 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 -0.2839455306529999 0.0 0.0 -1.0 0.032404929399490356 0.7050001621246338 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 -0.2839455306529999 0.0 0.0 -1.0 0.033250242471694946 0.7031860947608948 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 -0.2839455306529999 0.0 0.0 -1.0 0.9488418102264404 0.7013393640518188 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 -0.2839455306529999 0.0 0.0 -1.0 0.9503912925720215 0.7042018175125122 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 -0.2839455306529999 0.0 0.0 -1.0 0.033250242471694946 0.7031860947608948 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 -0.2839455306529999 0.0 0.0 -1.0 0.033982157707214355 0.7013251185417175 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 -0.2839455306529999 0.0 0.0 -1.0 0.9488418102264404 0.7013393640518188 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 -0.2839455306529999 0.0 0.0 -1.0 0.033982157707214355 0.7013251185417175 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03460210561752319 0.6994175910949707 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03460210561752319 0.6994175910949707 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.0 0.0 -1.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 0.0 0.0 -1.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 -0.2839455306529999 0.0 0.0 -1.0 0.9461212158203125 0.6951746940612793 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.0 0.0 -1.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 -0.2839455306529999 0.0 0.0 -1.0 0.035510897636413574 0.6954621076583862 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 -0.2839455306529999 0.0 0.0 -1.0 0.9449462890625 0.6918731927871704 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 -0.2839455306529999 0.0 0.0 -1.0 0.9461212158203125 0.6951746940612793 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 -0.2839455306529999 0.0 0.0 -1.0 0.035510897636413574 0.6954621076583862 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 -0.2839455306529999 0.0 0.0 -1.0 0.03580203652381897 0.6934133172035217 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 -0.2839455306529999 0.0 0.0 -1.0 0.03580203652381897 0.6934133172035217 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03598567843437195 0.6913160681724548 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 -0.2839455306529999 0.0 0.0 -1.0 0.943892776966095 0.6884253621101379 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 -0.2839455306529999 0.0 0.0 -1.0 0.9449462890625 0.6918731927871704 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03598567843437195 0.6913160681724548 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 -0.2839455306529999 0.0 0.0 -1.0 0.943892776966095 0.6884253621101379 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429585933685303 0.6848305463790894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9429585933685303 0.6848305463790894 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9421420097351074 0.6810873746871948 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9421420097351074 0.6810873746871948 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9414411783218384 0.6771945357322693 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9414411783218384 0.6771945357322693 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 -0.2839455306529999 0.0 0.0 -1.0 0.9408544301986694 0.6731500029563904 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 -0.2839455306529999 0.0 0.0 -1.0 0.9408544301986694 0.6731500029563904 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 -0.2839455306529999 0.0 0.0 -1.0 0.9403797388076782 0.6689515113830566 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 0.0 0.0 -1.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.0 0.0 -1.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 -0.2839455306529999 0.0 0.0 -1.0 0.036034226417541504 0.6869708895683289 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 -0.2839455306529999 0.0 0.0 -1.0 0.036034226417541504 0.6869708895683289 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 -0.2839455306529999 0.0 0.0 -1.0 0.035920560359954834 0.6850960850715637 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 -0.2839455306529999 0.0 0.0 -1.0 0.035920560359954834 0.6850960850715637 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 -0.2839455306529999 0.0 0.0 -1.0 0.035719335079193115 0.6832844018936157 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 -0.2839455306529999 0.0 0.0 -1.0 0.035719335079193115 0.6832844018936157 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 0.0 0.0 -1.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.0 0.0 -1.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 -0.2839455306529999 0.0 0.0 -1.0 0.035054922103881836 0.6798495054244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 -0.2839455306529999 0.0 0.0 -1.0 0.035054922103881836 0.6798495054244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 -0.2839455306529999 0.0 0.0 -1.0 0.0345919132232666 0.6782255172729492 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 -0.2839455306529999 0.0 0.0 -1.0 0.0345919132232666 0.6782255172729492 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 -0.2839455306529999 0.0 0.0 -1.0 0.03404173254966736 0.6766632795333862 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 -0.2839455306529999 0.0 0.0 -1.0 0.03404173254966736 0.6766632795333862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 -0.2839455306529999 0.0 0.0 -1.0 0.03340405225753784 0.6751619577407837 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 -0.2839455306529999 0.0 0.0 -1.0 0.03340405225753784 0.6751619577407837 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 0.0 0.0 -1.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 -0.2839455306529999 0.0 0.0 -1.0 0.031865477561950684 0.6723393201828003 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 -0.2839455306529999 0.0 0.0 -1.0 0.031865477561950684 0.6723393201828003 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 -0.2839455306529999 0.0 0.0 -1.0 0.030963599681854248 0.6710162162780762 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 -0.2839455306529999 0.0 0.0 -1.0 0.030963599681854248 0.6710162162780762 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 -0.2839455306529999 0.0 0.0 -1.0 0.029972761869430542 0.669750452041626 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 -0.2839455306529999 0.0 0.0 -1.0 0.029972761869430542 0.669750452041626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 -0.2839455306529999 0.0 0.0 -1.0 0.028892487287521362 0.668540894985199 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 -0.2839455306529999 0.0 0.0 -1.0 0.028892487287521362 0.668540894985199 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 -0.2839455306529999 0.0 0.0 -1.0 0.027060627937316895 0.6669516563415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 -0.2839455306529999 0.0 0.0 -1.0 0.027060627937316895 0.6669516563415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.024613529443740845 0.6653088331222534 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.024613529443740845 0.6653088331222534 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 0.0 0.0 -1.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.0 0.0 -1.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 -0.2839455306529999 0.0 0.0 -1.0 0.017840147018432617 0.6617413759231567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 -0.2839455306529999 0.0 0.0 -1.0 0.017840147018432617 0.6617413759231567 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 -0.2839455306529999 0.0 0.0 -1.0 0.013496875762939453 0.6597400903701782 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 -0.2839455306529999 0.0 0.0 -1.0 0.013496875762939453 0.6597400903701782 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.008507370948791504 0.6575324535369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.008507370948791504 0.6575324535369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.002870500087738037 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 0.08384156227111816 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 0.0 0.0 -1.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.002870500087738037 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838415622711182 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0028705596923828 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 -0.2839455306529999 0.0 0.0 -1.0 0.9965918064117432 0.6522815227508545 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838415622711182 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 -0.2839455306529999 0.0 0.0 -1.0 0.9965918064117432 0.6522815227508545 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 -0.2839455306529999 0.0 0.0 -1.0 0.9896869659423828 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838415622711182 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 -0.2839455306529999 0.0 0.0 -1.0 0.9896869659423828 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822646617889404 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 0.0 0.0 -1.0 1.0838415622711182 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822646617889404 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.0 0.0 -1.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 -0.2839455306529999 0.0 0.0 -1.0 0.9741256237030029 0.6414514183998108 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822646617889404 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 -0.2839455306529999 0.0 0.0 -1.0 0.9741256237030029 0.6414514183998108 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 -0.2839455306529999 0.0 0.0 -1.0 0.9655709862709045 0.6368472576141357 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822646617889404 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 -0.2839455306529999 0.0 0.0 -1.0 0.9655709862709045 0.6368472576141357 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804256200790405 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 0.0 0.0 -1.0 1.0822646617889404 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804256200790405 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.0 0.0 -1.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 -0.2839455306529999 0.0 0.0 -1.0 0.9493167996406555 0.6264195442199707 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804256200790405 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 -0.2839455306529999 0.0 0.0 -1.0 0.9493167996406555 0.6264195442199707 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.0783171653747559 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0804256200790405 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.0783171653747559 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.0 0.0 -1.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 -0.2839455306529999 0.0 0.0 -1.0 0.9356679320335388 0.6151246428489685 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.0783171653747559 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 -0.2839455306529999 0.0 0.0 -1.0 0.9356679320335388 0.6151246428489685 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759299993515015 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 0.0 0.0 -1.0 1.0783171653747559 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759299993515015 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.0 0.0 -1.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 -0.2839455306529999 0.0 0.0 -1.0 0.9244858622550964 0.6035184860229492 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759299993515015 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 -0.2839455306529999 0.0 0.0 -1.0 0.9244858622550964 0.6035184860229492 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732531547546387 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 0.0 0.0 -1.0 1.0759299993515015 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732531547546387 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.0 0.0 -1.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 -0.2839455306529999 0.0 0.0 -1.0 0.9155381917953491 0.5919424295425415 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732531547546387 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 -0.2839455306529999 0.0 0.0 -1.0 0.9155381917953491 0.5919424295425415 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273518562317 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 0.0 0.0 -1.0 1.0732531547546387 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273518562317 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 0.0 0.0 -1.0 1.06697678565979 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 0.0 0.0 -1.0 1.070273518562317 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 0.0 0.0 -1.0 1.06697678565979 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.0 0.0 -1.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 -0.2839455306529999 0.0 0.0 -1.0 0.9057610034942627 0.5749698281288147 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 0.0 0.0 -1.0 1.06697678565979 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 -0.2839455306529999 0.0 0.0 -1.0 0.9057610034942627 0.5749698281288147 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0633471012115479 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 0.0 0.0 -1.0 1.06697678565979 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0633471012115479 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.0 0.0 -1.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -1.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.059367060661316 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0633471012115479 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -1.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.059367060661316 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.0 0.0 -1.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560194253921509 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 0.0 0.0 -1.0 1.059367060661316 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560194253921509 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.0 0.0 -1.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 -0.2839455306529999 0.0 0.0 -1.0 1.051966905593872 0.5626710653305054 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 0.0 0.0 -1.0 1.0560194253921509 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.047176718711853 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 -0.2839455306529999 0.0 0.0 -1.0 1.051966905593872 0.5626710653305054 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.047176718711853 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.0 0.0 -1.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -1.0 1.041614294052124 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 0.0 0.0 -1.0 1.047176718711853 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -1.0 1.041614294052124 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.0 0.0 -1.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.0352461338043213 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 0.0 0.0 -1.0 1.041614294052124 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.0352461338043213 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 -0.2839455306529999 0.0 0.0 -1.0 1.0280427932739258 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 0.0 0.0 -1.0 1.0352461338043213 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.019985318183899 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 -0.2839455306529999 0.0 0.0 -1.0 1.0280427932739258 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.019985318183899 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.0 0.0 -1.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -1.0 1.0110704898834229 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 0.0 0.0 -1.0 1.019985318183899 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -1.0 1.0110704898834229 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 -0.2839455306529999 0.0 0.0 -1.0 1.0013192892074585 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 0.0 0.0 -1.0 1.0110704898834229 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -1.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 -0.2839455306529999 0.0 0.0 -1.0 1.0013192892074585 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -1.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.0 0.0 -1.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 -0.2839455306529999 0.0 0.0 -1.0 0.9795475006103516 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 0.0 0.0 -1.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 -0.2839455306529999 0.0 0.0 -1.0 0.9795475006103516 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.0 0.0 -1.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 -0.2839455306529999 0.0 0.0 -1.0 0.965241551399231 0.512294352054596 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9629130363464355 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 -0.2839455306529999 0.0 0.0 -1.0 0.965241551399231 0.512294352054596 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9607527256011963 0.5096024870872498 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9629130363464355 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9607527256011963 0.5096024870872498 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.0 0.0 -1.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 -0.2839455306529999 0.0 0.0 -1.0 0.9569305777549744 0.5069000124931335 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9552648067474365 0.5055457353591919 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 -0.2839455306529999 0.0 0.0 -1.0 0.9569305777549744 0.5069000124931335 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 -0.2839455306529999 0.0 0.0 -1.0 0.9537597894668579 0.5041894912719727 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9552648067474365 0.5055457353591919 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 -0.2839455306529999 0.0 0.0 -1.0 0.9524136781692505 0.5028311610221863 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 -0.2839455306529999 0.0 0.0 -1.0 0.9537597894668579 0.5041894912719727 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 -0.2839455306529999 0.0 0.0 -1.0 0.9512243270874023 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 -0.2839455306529999 0.0 0.0 -1.0 0.9524136781692505 0.5028311610221863 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 0.0 0.0 -1.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 -0.2839455306529999 0.0 0.0 -1.0 0.9512243270874023 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 0.0 0.0 -1.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.0 0.0 -1.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9493091106414795 0.49873924255371094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 0.0 0.0 -1.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 -0.2839455306529999 0.0 0.0 -1.0 0.9485797882080078 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9493091106414795 0.49873924255371094 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 -0.2839455306529999 0.0 0.0 -1.0 0.9479931592941284 0.49590176343917847 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 -0.2839455306529999 0.0 0.0 -1.0 0.9485797882080078 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 -0.2839455306529999 0.0 0.0 -1.0 0.0342521071434021 0.500602662563324 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 -0.2839455306529999 0.0 0.0 -1.0 0.03346249461174011 0.4952545166015625 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 -0.2839455306529999 0.0 0.0 -1.0 0.9474676847457886 0.49438291788101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 -0.2839455306529999 0.0 0.0 -1.0 0.9479931592941284 0.49590176343917847 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 -0.2839455306529999 0.0 0.0 -1.0 0.9470030069351196 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 -0.2839455306529999 0.0 0.0 -1.0 0.9474676847457886 0.49438291788101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 -0.2839455306529999 0.0 0.0 -1.0 0.9470030069351196 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 -0.2839455306529999 0.0 0.0 -1.0 0.03346249461174011 0.4952545166015625 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 -0.2839455306529999 0.0 0.0 -1.0 0.03258267045021057 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.0 0.0 -1.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 -0.2839455306529999 0.0 0.0 -1.0 0.946254312992096 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 0.0 0.0 -1.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 -0.2839455306529999 0.0 0.0 -1.0 0.9459694027900696 0.4877854585647583 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 -0.2839455306529999 0.0 0.0 -1.0 0.946254312992096 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 -0.2839455306529999 0.0 0.0 -1.0 0.9457437992095947 0.48600679636001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 -0.2839455306529999 0.0 0.0 -1.0 0.9459694027900696 0.4877854585647583 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 -0.2839455306529999 0.0 0.0 -1.0 0.03258267045021057 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 -0.2839455306529999 0.0 0.0 -1.0 0.031612515449523926 0.4852878451347351 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9455769062042236 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 -0.2839455306529999 0.0 0.0 -1.0 0.9457437992095947 0.48600679636001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 -0.2839455306529999 0.0 0.0 -1.0 0.9454684257507324 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9455769062042236 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 -0.2839455306529999 0.0 0.0 -1.0 0.9454684257507324 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 -0.2839455306529999 0.0 0.0 -1.0 0.031612515449523926 0.4852878451347351 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 -0.2839455306529999 0.0 0.0 -1.0 0.9454255104064941 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 -0.2839455306529999 0.0 0.0 -1.0 0.9454903602600098 0.4763496518135071 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 -0.2839455306529999 0.0 0.0 -1.0 0.9454255104064941 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.0 0.0 -1.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 -0.2839455306529999 0.0 0.0 -1.0 0.02939966320991516 0.47626161575317383 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 -0.2839455306529999 0.0 0.0 -1.0 0.9456760883331299 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 -0.2839455306529999 0.0 0.0 -1.0 0.9454903602600098 0.4763496518135071 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 -0.2839455306529999 0.0 0.0 -1.0 0.9456760883331299 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 -0.2839455306529999 0.0 0.0 -1.0 0.02939966320991516 0.47626161575317383 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.0 0.0 -1.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 -0.2839455306529999 0.0 0.0 -1.0 0.9463331699371338 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 0.0 0.0 -1.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -1.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 0.0 0.0 -1.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -1.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.0 0.0 -1.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 -0.2839455306529999 0.0 0.0 -1.0 0.02681976556777954 0.4681397080421448 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.946804404258728 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 -0.2839455306529999 0.0 0.0 -1.0 0.9463331699371338 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -1.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.946804404258728 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -1.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 -0.2839455306529999 0.0 0.0 -1.0 0.02681976556777954 0.4681397080421448 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -1.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.0 0.0 -1.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 -0.2839455306529999 0.0 0.0 -1.0 0.9480316638946533 0.4602993130683899 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 0.0 0.0 -1.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 0.0 0.0 -1.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.0 0.0 -1.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.02386653423309326 0.46089035272598267 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9487879276275635 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 -0.2839455306529999 0.0 0.0 -1.0 0.9480316638946533 0.4602993130683899 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 -0.2839455306529999 0.0 0.0 -1.0 0.9496395587921143 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9487879276275635 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.02386653423309326 0.46089035272598267 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 -0.2839455306529999 0.0 0.0 -1.0 0.022247523069381714 0.4575845003128052 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 -0.2839455306529999 0.0 0.0 -1.0 0.9496395587921143 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.0 0.0 -1.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 -0.2839455306529999 0.0 0.0 -1.0 0.022247523069381714 0.4575845003128052 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9516303539276123 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 0.0 0.0 -1.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 0.0 0.0 -1.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9527706503868103 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9516303539276123 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.0 0.0 -1.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 -0.2839455306529999 0.0 0.0 -1.0 0.01871994137763977 0.45159727334976196 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 -0.2839455306529999 0.0 0.0 -1.0 0.9540083408355713 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9527706503868103 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 -0.2839455306529999 0.0 0.0 -1.0 0.01871994137763977 0.45159727334976196 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 -0.2839455306529999 0.0 0.0 -1.0 0.016798853874206543 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -1.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 -0.2839455306529999 0.0 0.0 -1.0 0.9540083408355713 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -1.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.0 0.0 -1.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 -0.2839455306529999 0.0 0.0 -1.0 0.016798853874206543 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 -0.2839455306529999 0.0 0.0 -1.0 0.9581100940704346 0.44357115030288696 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 0.0 0.0 -1.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.0 0.0 -1.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 -0.2839455306529999 0.0 0.0 -1.0 0.012597858905792236 0.44421011209487915 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 -0.2839455306529999 0.0 0.0 -1.0 0.960377037525177 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 -0.2839455306529999 0.0 0.0 -1.0 0.9581100940704346 0.44357115030288696 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 -0.2839455306529999 0.0 0.0 -1.0 0.012597858905792236 0.44421011209487915 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.01031494140625 0.4421793222427368 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 -0.2839455306529999 0.0 0.0 -1.0 0.9627904891967773 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 -0.2839455306529999 0.0 0.0 -1.0 0.960377037525177 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.01031494140625 0.4421793222427368 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.007908552885055542 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 -0.2839455306529999 0.0 0.0 -1.0 0.9627904891967773 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.0 0.0 -1.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.007908552885055542 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 -0.2839455306529999 0.0 0.0 -1.0 0.005377382040023804 0.43876558542251587 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9680632948875427 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 -0.2839455306529999 0.0 0.0 -1.0 0.005377382040023804 0.43876558542251587 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.002720385789871216 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 -0.2839455306529999 0.0 0.0 -1.0 0.9709254503250122 0.43594735860824585 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9680632948875427 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07005178928375244 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.002720385789871216 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 1.0027203559875488 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9999364614486694 0.4362236261367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 -0.2839455306529999 0.0 0.0 -1.0 0.9739395380020142 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 -0.2839455306529999 0.0 0.0 -1.0 0.9709254503250122 0.43594735860824585 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9999364614486694 0.4362236261367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 -0.2839455306529999 0.0 0.0 -1.0 0.9970248341560364 0.43528419733047485 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9771062135696411 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 -0.2839455306529999 0.0 0.0 -1.0 0.9739395380020142 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 -0.2839455306529999 0.0 0.0 -1.0 0.9970248341560364 0.43528419733047485 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9939851760864258 0.43456918001174927 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9804256558418274 0.43398576974868774 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9771062135696411 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9939851760864258 0.43456918001174927 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 -0.2839455306529999 0.0 0.00012207403779029846 -1.0 0.9908171892166138 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 -0.2839455306529999 0.0 0.0 -1.0 0.9838976860046387 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9804256558418274 0.43398576974868774 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 -0.2839455306529999 0.0 0.00012207403779029846 -1.0 0.9908171892166138 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 -0.2839455306529999 0.0 0.0 -1.0 0.9838976860046387 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0 0.0 -1.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.0 0.0 -1.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -1.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.067474365234375 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0700517892837524 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -1.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.067474365234375 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.0 0.0 -1.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.0647085905075073 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 0.0 0.0 -1.0 1.067474365234375 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.0647085905075073 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.0 0.0 -1.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.0617470741271973 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 0.0 0.0 -1.0 1.0647085905075073 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.0617470741271973 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.0 0.0 -1.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585821866989136 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 0.0 0.0 -1.0 1.0617470741271973 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585821866989136 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552053451538086 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 0.0 0.0 -1.0 1.0585821866989136 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552053451538086 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.0 0.0 -1.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516083240509033 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 0.0 0.0 -1.0 1.0552053451538086 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516083240509033 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.0 0.0 -1.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -1.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 -0.2839455306529999 0.0 0.0 -1.0 1.0477814674377441 0.400759756565094 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 0.0 0.0 -1.0 1.0516083240509033 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -1.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.0437146425247192 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 -0.2839455306529999 0.0 0.0 -1.0 1.0477814674377441 0.400759756565094 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -1.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.0437146425247192 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.0 0.0 -1.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393983125686646 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 0.0 0.0 -1.0 1.0437146425247192 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393983125686646 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.0 0.0 -1.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348234176635742 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 0.0 0.0 -1.0 1.0393983125686646 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348234176635742 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299818515777588 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 0.0 0.0 -1.0 1.0348234176635742 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299818515777588 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.0 0.0 -1.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -1.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.0248663425445557 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 0.0 0.0 -1.0 1.0299818515777588 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -1.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.0248663425445557 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.0 0.0 -1.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -1.0 1.0194717645645142 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 0.0 0.0 -1.0 1.0248663425445557 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -1.0 1.0194717645645142 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.0 0.0 -1.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.0137944221496582 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 0.0 0.0 -1.0 1.0194717645645142 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.0137944221496582 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.0 0.0 -1.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -1.0 1.0078338384628296 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 0.0 0.0 -1.0 1.0137944221496582 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -1.0 1.0078338384628296 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0015926361083984 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 0.0 0.0 -1.0 1.0078338384628296 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0015926361083984 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0 0.0 -1.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9950767755508423 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0015926361083984 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9950767755508423 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.0 0.0 -1.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 -0.2839455306529999 0.0 0.0 -1.0 0.9882972240447998 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.09209313988685608 0.823844313621521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.018389105796813965 0.8526803851127625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.018389105796813965 0.8526803851127625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 -0.2839455306529999 0.0 0.0 -1.0 0.014768153429031372 0.7227939367294312 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 0.0 0.0 -1.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 -0.2839455306529999 0.0 0.0 -1.0 0.896752655506134 0.8321271538734436 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8460309505462646 0.7894145250320435 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 0.0 0.0 -1.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8460309505462646 0.7894145250320435 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 -0.2839455306529999 0.0 0.0 -1.0 0.9140788316726685 0.7073009014129639 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 0.0 0.0 -1.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 -0.2839455306529999 0.0 0.0 -1.0 0.9152042865753174 0.6954561471939087 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 -0.2839455306529999 0.0 0.0 -1.0 0.9140788316726685 0.7073009014129639 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 -0.2839455306529999 0.0 0.0 -1.0 0.014768153429031372 0.7227939367294312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 -0.2839455306529999 0.0 0.0 -1.0 0.014528810977935791 0.7096704244613647 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 -0.2839455306529999 0.0 0.0 -1.0 0.9162991046905518 0.6840966939926147 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 -0.2839455306529999 0.0 0.0 -1.0 0.9152042865753174 0.6954561471939087 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 -0.2839455306529999 0.0 0.0 -1.0 0.014528810977935791 0.7096704244613647 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 -0.2839455306529999 0.0 0.0 -1.0 0.014256507158279419 0.6969905495643616 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9173672795295715 0.6733074188232422 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 -0.2839455306529999 0.0 0.0 -1.0 0.9162991046905518 0.6840966939926147 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 -0.2839455306529999 0.0 0.0 -1.0 0.014256507158279419 0.6969905495643616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 -0.2839455306529999 0.0 0.0 -1.0 0.01395145058631897 0.6848616600036621 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 -0.2839455306529999 0.0 0.0 -1.0 0.9184120893478394 0.6631647944450378 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9173672795295715 0.6733074188232422 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 -0.2839455306529999 0.0 0.0 -1.0 0.01395145058631897 0.6848616600036621 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.013614147901535034 0.6733810901641846 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 -0.2839455306529999 0.0 0.0 -1.0 0.9194369316101074 0.6537357568740845 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 -0.2839455306529999 0.0 0.0 -1.0 0.9184120893478394 0.6631647944450378 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.013614147901535034 0.6733810901641846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 -0.2839455306529999 0.0 0.0 -1.0 0.013244688510894775 0.6626352667808533 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9204447269439697 0.6450778245925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 -0.2839455306529999 0.0 0.0 -1.0 0.9194369316101074 0.6537357568740845 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 -0.2839455306529999 0.0 0.0 -1.0 0.013244688510894775 0.6626352667808533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012842893600463867 0.6526980996131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9214386343955994 0.6372390985488892 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9204447269439697 0.6450778245925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012842893600463867 0.6526980996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.0 0.0 -1.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 0.0 0.0 -1.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 0.0 0.0 -1.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.0 0.0 -1.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 -0.2839455306529999 0.0 0.0 -1.0 0.9224212169647217 0.6302591562271118 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9214386343955994 0.6372390985488892 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 0.0 0.0 -1.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.0 0.0 -1.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9233952164649963 0.6241699457168579 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 -0.2839455306529999 0.0 0.0 -1.0 0.9224212169647217 0.6302591562271118 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 0.0 0.0 -1.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 0.0 0.0 -1.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 0.0 0.0 -1.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.0 0.0 -1.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 -0.2839455306529999 0.0 0.0 -1.0 0.9243631362915039 0.6189967393875122 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9233952164649963 0.6241699457168579 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 0.0 0.0 -1.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 0.0 0.0 -1.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.0 0.0 -1.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 -0.2839455306529999 0.0 0.0 -1.0 0.925327718257904 0.6147598028182983 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 -0.2839455306529999 0.0 0.0 -1.0 0.9243631362915039 0.6189967393875122 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 0.0 0.0 -1.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.0 0.0 -1.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.010903030633926392 0.6221014261245728 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 -0.2839455306529999 0.0 0.0 -1.0 0.9263383150100708 0.6110518574714661 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 -0.2839455306529999 0.0 0.0 -1.0 0.925327718257904 0.6147598028182983 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 0.0 0.0 -1.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.010903030633926392 0.6221014261245728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.0 0.0 -1.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 0.0 0.0 -1.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 0.0 0.0 -1.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.0 0.0 -1.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 -0.2839455306529999 0.0 0.0 -1.0 0.9274437427520752 0.6074543595314026 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 -0.2839455306529999 0.0 0.0 -1.0 0.9263383150100708 0.6110518574714661 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 0.0 0.0 -1.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.0 0.0 -1.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 -0.2839455306529999 0.0 0.0 -1.0 0.009722918272018433 0.6127604246139526 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 -0.2839455306529999 0.0 0.0 -1.0 0.9286445379257202 0.603966474533081 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 -0.2839455306529999 0.0 0.0 -1.0 0.9274437427520752 0.6074543595314026 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 0.0 0.0 -1.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 -0.2839455306529999 0.0 0.0 -1.0 0.009722918272018433 0.6127604246139526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 -0.2839455306529999 0.0 0.0 -1.0 0.9299417734146118 0.6005876064300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 -0.2839455306529999 0.0 0.0 -1.0 0.9286445379257202 0.603966474533081 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 0.0 0.0 -1.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 0.0 0.0 -1.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 0.0 0.0 -1.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 -0.2839455306529999 0.0 0.0 -1.0 0.00831332802772522 0.6057209968566895 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 -0.2839455306529999 0.0 0.0 -1.0 0.9313363432884216 0.5973168015480042 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 -0.2839455306529999 0.0 0.0 -1.0 0.9299417734146118 0.6005876064300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 0.0 0.0 -1.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 -0.2839455306529999 0.0 0.0 -1.0 0.00831332802772522 0.6057209968566895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.0 0.0 -1.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 -0.2839455306529999 0.0 0.0 -1.0 0.9328294992446899 0.5941532850265503 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 -0.2839455306529999 0.0 0.0 -1.0 0.9313363432884216 0.5973168015480042 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 0.0 0.0 -1.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.0 0.0 -1.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.0 0.0 -1.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 -0.2839455306529999 0.0 0.0 -1.0 0.006594359874725342 0.5991576910018921 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 -0.2839455306529999 0.0 0.0 -1.0 0.9344223737716675 0.5910961627960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 -0.2839455306529999 0.0 0.0 -1.0 0.9328294992446899 0.5941532850265503 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 -0.2839455306529999 0.0 0.0 -1.0 0.006594359874725342 0.5991576910018921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 -0.2839455306529999 0.0 0.0 -1.0 0.005618959665298462 0.5960554480552673 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 -0.2839455306529999 0.0 0.0 -1.0 0.9361163377761841 0.5881446599960327 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 -0.2839455306529999 0.0 0.0 -1.0 0.9344223737716675 0.5910961627960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 -0.2839455306529999 0.0 0.0 -1.0 0.005618959665298462 0.5960554480552673 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.0 0.0 -1.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9379128217697144 0.5852980613708496 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 -0.2839455306529999 0.0 0.0 -1.0 0.9361163377761841 0.5881446599960327 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 0.0 0.0 -1.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.0 0.0 -1.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 0.0 0.0 -1.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.0 0.0 -1.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 -0.2839455306529999 0.0 0.0 -1.0 0.003436654806137085 0.5902106761932373 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 -0.2839455306529999 0.0 0.0 -1.0 0.9398130178451538 0.5825554728507996 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9379128217697144 0.5852980613708496 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 0.0 0.0 -1.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 -0.2839455306529999 0.0 0.0 -1.0 0.003436654806137085 0.5902106761932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 -0.2839455306529999 0.0 0.0 -1.0 0.0022296011447906494 0.5874682068824768 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 0.0 0.0 -1.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 -0.2839455306529999 0.0 0.0 -1.0 0.9398130178451538 0.5825554728507996 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 0.0 0.0 -1.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 -0.2839455306529999 0.0 0.0 -1.0 0.0022296011447906494 0.5874682068824768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0009450018405914307 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 0.06625154614448547 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 0.0 0.0 -1.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0009450018405914307 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9439307451248169 0.5773794651031494 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 0.0 0.0 -1.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 0.0 0.0 -1.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 1.066251516342163 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.000944972038269 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 -0.2839455306529999 0.0 0.0 -1.0 0.999582827091217 0.5823426246643066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 1.066251516342163 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 -0.2839455306529999 0.0 0.0 -1.0 0.999582827091217 0.5823426246643066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 -0.2839455306529999 0.0 0.0 -1.0 0.9981430768966675 0.5799591541290283 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 -0.2839455306529999 0.0 0.0 -1.0 0.9461168050765991 0.5750011205673218 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9439307451248169 0.5773794651031494 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 1.066251516342163 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 -0.2839455306529999 0.0 0.0 -1.0 0.9981430768966675 0.5799591541290283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9966254830360413 0.5776949524879456 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 -0.2839455306529999 0.0 0.0 -1.0 0.9483439922332764 0.5728389024734497 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 -0.2839455306529999 0.0 0.0 -1.0 0.9461168050765991 0.5750011205673218 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 1.066251516342163 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9966254830360413 0.5776949524879456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.0 0.0 -1.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 0.0 0.0 -1.0 1.066251516342163 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.0 0.0 -1.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 -0.2839455306529999 0.0 0.0 -1.0 0.9506131410598755 0.5708950757980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 -0.2839455306529999 0.0 0.0 -1.0 0.9483439922332764 0.5728389024734497 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.0 0.0 -1.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 -0.2839455306529999 0.0 0.0 -1.0 0.9933782815933228 0.5736287832260132 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 -0.2839455306529999 0.0 0.0 -1.0 0.9529252052307129 0.569171667098999 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 -0.2839455306529999 0.0 0.0 -1.0 0.9506131410598755 0.5708950757980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 -0.2839455306529999 0.0 0.0 -1.0 0.9933782815933228 0.5736287832260132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9916535019874573 0.5718526840209961 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 -0.2839455306529999 0.0 0.0 -1.0 0.9552810788154602 0.567670464515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 -0.2839455306529999 0.0 0.0 -1.0 0.9529252052307129 0.569171667098999 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9916535019874573 0.5718526840209961 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989861011505127 0.5702477097511292 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 -0.2839455306529999 0.0 0.0 -1.0 0.9576817154884338 0.5663930773735046 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 -0.2839455306529999 0.0 0.0 -1.0 0.9552810788154602 0.567670464515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989861011505127 0.5702477097511292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 0.0 0.0 -1.0 1.0651140213012695 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 -0.2839455306529999 0.0 0.0 -1.0 0.9860718846321106 0.5675491690635681 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9601279497146606 0.5653409957885742 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 -0.2839455306529999 0.0 0.0 -1.0 0.9576817154884338 0.5663930773735046 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 -0.2839455306529999 0.0 0.0 -1.0 0.9860718846321106 0.5675491690635681 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 -0.2839455306529999 0.0 0.0 -1.0 0.9840749502182007 0.5664546489715576 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9626204967498779 0.5645154714584351 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9601279497146606 0.5653409957885742 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 -0.2839455306529999 0.0 0.0 -1.0 0.9840749502182007 0.5664546489715576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 -0.2839455306529999 0.0 0.0 -1.0 0.982009768486023 0.5655289888381958 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9651601314544678 0.5639175772666931 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9626204967498779 0.5645154714584351 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 -0.2839455306529999 0.0 0.0 -1.0 0.982009768486023 0.5655289888381958 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9798762798309326 0.5647714138031006 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 -0.2839455306529999 0.0 0.0 -1.0 0.9677476286888123 0.5635481476783752 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9651601314544678 0.5639175772666931 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9798762798309326 0.5647714138031006 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 -0.2839455306529999 0.0 0.0 -1.0 0.9776747822761536 0.5641809701919556 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 -0.2839455306529999 0.0 0.0 -1.0 0.9703834056854248 0.5634076595306396 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 -0.2839455306529999 0.0 0.0 -1.0 0.9677476286888123 0.5635481476783752 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 -0.2839455306529999 0.0 0.0 -1.0 0.9776747822761536 0.5641809701919556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 -0.2839455306529999 0.0 0.0001831110566854477 -1.0 0.9754053354263306 0.5637564659118652 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 0.0 0.0 -1.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 -0.2839455306529999 0.0 0.0 -1.0 0.9703834056854248 0.5634076595306396 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 -0.2839455306529999 0.0 0.0001831110566854477 -1.0 0.9754053354263306 0.5637564659118652 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 0.0 0.0 -1.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 0.0 0.0 -1.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 -0.2839455306529999 0.0 0.0 -1.0 1.0626260042190552 0.5522772073745728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 0.0 0.0 -1.0 1.063905954360962 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 0.0 0.0 -1.0 1.061272144317627 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 -0.2839455306529999 0.0 0.0 -1.0 1.0626260042190552 0.5522772073745728 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 0.0 0.0 -1.0 1.061272144317627 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.0 0.0 -1.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9250865578651428 0.48120373487472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.0 0.0 -1.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 0.0 0.0 -1.0 1.0598280429840088 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 0.0 0.0 -1.0 1.061272144317627 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.0 0.0 -1.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 0.0 0.0 -1.0 1.0598280429840088 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.0 0.0 -1.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.0 0.0 -1.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 0.0 0.0 -1.0 1.0582770109176636 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 0.0 0.0 -1.0 1.0598280429840088 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.0 0.0 -1.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 0.0 0.0 -1.0 1.0582770109176636 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.0 0.0 -1.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.0 0.0 -1.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 0.0 0.0 -1.0 1.0566167831420898 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 0.0 0.0 -1.0 1.0582770109176636 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.0 0.0 -1.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 0.0 0.0 -1.0 1.0566167831420898 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.0 0.0 -1.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.0 0.0 -1.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 0.0 0.0 -1.0 1.0548452138900757 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 0.0 0.0 -1.0 1.0566167831420898 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.0 0.0 -1.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 0.0 0.0 -1.0 1.0548452138900757 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.0 0.0 -1.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.0 0.0 -1.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 0.0 0.0 -1.0 1.0529595613479614 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 0.0 0.0 -1.0 1.0548452138900757 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.0 0.0 -1.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 0.0 0.0 -1.0 1.0529595613479614 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.0 0.0 -1.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.050957202911377 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 0.0 0.0 -1.0 1.0529595613479614 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.050957202911377 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.0 0.0 -1.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 0.0 0.0 -1.0 1.048835039138794 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.050957202911377 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.0 0.0 -1.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 0.0 0.0 -1.0 1.048835039138794 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.0 0.0 -1.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.0 0.0 -1.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0465903282165527 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 0.0 0.0 -1.0 1.048835039138794 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.0 0.0 -1.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0465903282165527 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.0 0.0 -1.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.0 0.0 -1.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 0.0 0.0 -1.0 1.044219732284546 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0465903282165527 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.0 0.0 -1.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 0.0 0.0 -1.0 1.044219732284546 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.0 0.0 -1.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.0 0.0 -1.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 0.0 0.0 -1.0 1.0417201519012451 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 0.0 0.0 -1.0 1.044219732284546 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.0 0.0 -1.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 0.0 0.0 -1.0 1.0417201519012451 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.0 0.0 -1.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 -0.2839455306529999 0.0 0.0 -1.0 0.9511236548423767 0.49488651752471924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 0.0 0.0 -1.0 1.039088249206543 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 0.0 0.0 -1.0 1.0417201519012451 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 -0.2839455306529999 0.0 0.0 -1.0 0.9511236548423767 0.49488651752471924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 0.0 0.0 -1.0 1.039088249206543 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 -0.2839455306529999 0.0 0.0 -1.0 0.9511236548423767 0.49488651752471924 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.0 0.0 -1.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 0.0 0.0 -1.0 1.0363209247589111 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 0.0 0.0 -1.0 1.039088249206543 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.0 0.0 -1.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 0.0 0.0 -1.0 1.0363209247589111 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.0 0.0 -1.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.0 0.0 -1.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0334495306015015 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 0.0 0.0 -1.0 1.0363209247589111 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.0 0.0 -1.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0334495306015015 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.0 0.0 -1.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.0 0.0 -1.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 0.0 0.0 -1.0 1.0305064916610718 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0334495306015015 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.0 0.0 -1.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 0.0 0.0 -1.0 1.0305064916610718 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.0 0.0 -1.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.0 0.0 -1.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 0.0 0.0 -1.0 1.0274903774261475 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 0.0 0.0 -1.0 1.0305064916610718 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.0 0.0 -1.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 0.0 0.0 -1.0 1.0274903774261475 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.0 0.0 -1.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.0 0.0 -1.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 0.0 0.0 -1.0 1.0244001150131226 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 0.0 0.0 -1.0 1.0274903774261475 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.0 0.0 -1.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 0.0 0.0 -1.0 1.0244001150131226 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.0 0.0 -1.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.0 0.0 -1.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0212342739105225 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 0.0 0.0 -1.0 1.0244001150131226 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.0 0.0 -1.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0212342739105225 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.0 0.0 -1.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.0 0.0 -1.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 0.0 0.0 -1.0 1.0179916620254517 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0212342739105225 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.0 0.0 -1.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 0.0 0.0 -1.0 1.0179916620254517 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.0 0.0 -1.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 1.0146715641021729 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 0.0 0.0 -1.0 1.0179916620254517 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 1.0146715641021729 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.0 0.0 -1.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.0 0.0 -1.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 0.0 0.0 -1.0 1.0112733840942383 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 1.0146715641021729 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.0 0.0 -1.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 0.0 0.0 -1.0 1.0112733840942383 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.0 0.0 -1.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.0 0.0 -1.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 1.0077967643737793 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 0.0 0.0 -1.0 1.0112733840942383 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.0 0.0 -1.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 1.0077967643737793 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.0 0.0 -1.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 0.0 0.0 -1.0 1.0042415857315063 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 1.0077967643737793 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 0.0 0.0 -1.0 1.0042415857315063 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 -0.2839455306529999 0.0 0.0 -1.0 1.0006078481674194 0.47387105226516724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 0.0 0.0 -1.0 1.0042415857315063 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 -0.2839455306529999 0.0 0.0 -1.0 1.0006078481674194 0.47387105226516724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9968962669372559 0.4735258221626282 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 1.0582492351531982 0.8729636073112488 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 1.0641034841537476 0.897499144077301 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 0.8537107706069946 0.8676877617835999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 1.0582492351531982 0.8729636073112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 -0.2839455306529999 0.0 0.0 -1.0 0.8537107706069946 0.8676877617835999 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 -0.2839455306529999 0.0 0.0 -1.0 0.8631843328475952 0.8435003757476807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.12790176272392273 0.820160448551178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07377690076828003 0.8601027727127075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07377690076828003 0.8601027727127075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 -0.2839455306529999 0.0 0.0 -1.0 0.9794628620147705 0.7999661564826965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.970216691493988 0.7989437580108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.970216691493988 0.7989437580108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 0.0 0.0 -1.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 0.0 0.0 -1.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 0.0 0.0 -1.0 1.0044747591018677 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 0.0 0.0 -1.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 0.0 0.0 -1.0 1.0044747591018677 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 0.0 0.0 -1.0 1.0122272968292236 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 0.0 0.0 -1.0 1.0044747591018677 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 0.0 0.0 -1.0 1.0122272968292236 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 0.0 0.0 -1.0 1.0196059942245483 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 0.0 0.0 -1.0 1.0122272968292236 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 0.0 0.0 -1.0 1.0196059942245483 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 0.0 0.0 -1.0 1.026578664779663 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 0.0 0.0 -1.0 1.0196059942245483 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 0.0 0.0 -1.0 1.026578664779663 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0331246852874756 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 0.0 0.0 -1.0 1.026578664779663 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0331246852874756 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.0 0.0 -1.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0392340421676636 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0331246852874756 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.0 0.0 -1.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0392340421676636 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.0 0.0 -1.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 0.0 0.0 -1.0 1.0449049472808838 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0392340421676636 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 0.0 0.0 -1.0 1.0449049472808838 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.0 0.0 -1.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 0.0 0.0 -1.0 1.0501424074172974 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 0.0 0.0 -1.0 1.0449049472808838 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.0 0.0 -1.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 0.0 0.0 -1.0 1.0501424074172974 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.0 0.0 -1.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 0.0 0.0 -1.0 1.0549571514129639 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 0.0 0.0 -1.0 1.0501424074172974 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 0.0 0.0 -1.0 1.0549571514129639 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 1.059363842010498 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 0.0 0.0 -1.0 1.0549571514129639 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 1.059363842010498 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.0 0.0 -1.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.0 0.0 -1.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 -0.2839455306529999 0.0 0.0 -1.0 0.0478324294090271 0.6794154644012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 -0.2839455306529999 0.0 0.0 -1.0 0.0478324294090271 0.6794154644012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 -0.2839455306529999 0.0 0.0 -1.0 0.04617246985435486 0.685994029045105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 -0.2839455306529999 0.0 0.0 -1.0 0.04617246985435486 0.685994029045105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 -0.2839455306529999 0.0 0.0 -1.0 0.044251084327697754 0.6921672821044922 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 -0.2839455306529999 0.0 0.0 -1.0 0.044251084327697754 0.6921672821044922 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 -0.2839455306529999 0.0 0.0 -1.0 0.04205942153930664 0.6979392766952515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 -0.2839455306529999 0.0 0.0 -1.0 0.04205942153930664 0.6979392766952515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 -0.2839455306529999 0.0 0.0 -1.0 0.039642542600631714 0.7033029794692993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 -0.2839455306529999 0.0 0.0 -1.0 0.039642542600631714 0.7033029794692993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 -0.2839455306529999 0.0 0.0 -1.0 0.03704848885536194 0.7082504034042358 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 -0.2839455306529999 0.0 0.0 -1.0 0.03704848885536194 0.7082504034042358 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 -0.2839455306529999 0.0 0.0 -1.0 0.03427475690841675 0.712781548500061 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 -0.2839455306529999 0.0 0.0 -1.0 0.03427475690841675 0.712781548500061 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 -0.2839455306529999 0.0 0.0 -1.0 0.031319111585617065 0.7168951034545898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 -0.2839455306529999 0.0 0.0 -1.0 0.031319111585617065 0.7168951034545898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 -0.2839455306529999 0.0 0.0 -1.0 0.028180181980133057 0.7205884456634521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 -0.2839455306529999 0.0 0.0 -1.0 0.028180181980133057 0.7205884456634521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 -0.2839455306529999 0.0 0.0 -1.0 0.024857670068740845 0.7238576412200928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 -0.2839455306529999 0.0 0.0 -1.0 0.024857670068740845 0.7238576412200928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 -0.2839455306529999 0.0 0.0 -1.0 0.021352380514144897 0.7266969680786133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 -0.2839455306529999 0.0 0.0 -1.0 0.021352380514144897 0.7266969680786133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 -0.2839455306529999 0.0 0.0 -1.0 0.0176660418510437 0.7290995121002197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 -0.2839455306529999 0.0 0.0 -1.0 0.0176660418510437 0.7290995121002197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 -0.2839455306529999 0.0 0.0 -1.0 0.013802021741867065 0.7310566306114197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 -0.2839455306529999 0.0 0.0 -1.0 0.013802021741867065 0.7310566306114197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.0 0.0 -1.0 0.009765088558197021 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.0 0.0 -1.0 1.0097651481628418 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 1.059363842010498 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.0 0.0 -1.0 1.0097651481628418 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.0 0.0 -1.0 1.0055617094039917 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.0 0.0 -1.0 1.0055617094039917 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.0 0.0 -1.0 1.0055617094039917 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 1.0011998414993286 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 1.0011998414993286 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.0 0.0 -1.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 -0.2839455306529999 0.0 0.0 -1.0 0.9967317581176758 0.7342070937156677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 1.0011998414993286 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.0 0.0 -1.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 -0.2839455306529999 0.0 0.0 -1.0 0.9923887252807617 0.7337468862533569 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 -0.2839455306529999 0.0 0.0 -1.0 0.9967317581176758 0.7342070937156677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.0 0.0 -1.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 -0.2839455306529999 0.0 0.0 -1.0 0.9923887252807617 0.7337468862533569 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.0 0.0 -1.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.0 0.0 -1.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9841297268867493 0.7313036918640137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 -0.2839455306529999 0.0 0.0 -1.0 0.9802356958389282 0.7293342351913452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.9841297268867493 0.7313036918640137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 -0.2839455306529999 0.0 0.0 -1.0 0.976510763168335 0.7268737554550171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 -0.2839455306529999 0.0 0.0 -1.0 0.9802356958389282 0.7293342351913452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 -0.2839455306529999 0.0 0.0 -1.0 0.9729613661766052 0.7239266633987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 -0.2839455306529999 0.0 0.0 -1.0 0.976510763168335 0.7268737554550171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 0.0 0.0 -1.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 -0.2839455306529999 0.0 0.0 -1.0 0.9729613661766052 0.7239266633987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 0.0 0.0 -1.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.0 0.0 -1.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.0 0.0 -1.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 -0.2839455306529999 0.0 0.0 -1.0 0.9664097428321838 0.7165837287902832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 0.0 0.0 -1.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.0 0.0 -1.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 -0.2839455306529999 0.0 0.0 -1.0 0.9634137153625488 0.7121903896331787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 -0.2839455306529999 0.0 0.0 -1.0 0.9664097428321838 0.7165837287902832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.0 0.0 -1.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 0.0 0.0 -1.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 -0.2839455306529999 0.0 0.0 -1.0 0.9634137153625488 0.7121903896331787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.0 0.0 -1.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 0.0 0.0 -1.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.0 0.0 -1.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.0 0.0 -1.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 -0.2839455306529999 0.0 0.0 -1.0 0.9579875469207764 0.7019557952880859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 0.0 0.0 -1.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.0 0.0 -1.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 -0.2839455306529999 0.0 0.0 -1.0 0.9556089639663696 0.6960643529891968 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 -0.2839455306529999 0.0 0.0 -1.0 0.9579875469207764 0.7019557952880859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.0 0.0 -1.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 0.0 0.0 -1.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 -0.2839455306529999 0.0 0.0 -1.0 0.9556089639663696 0.6960643529891968 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.0 0.0 -1.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 0.0 0.0 -1.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.0 0.0 -1.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.0 0.0 -1.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 -0.2839455306529999 0.0 0.0 -1.0 0.9517133235931396 0.6825268268585205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 0.0 0.0 -1.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.0 0.0 -1.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 0.0 0.0 -1.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 -0.2839455306529999 0.0 0.0 -1.0 0.9517133235931396 0.6825268268585205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.0 0.0 -1.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 0.0 0.0 -1.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.0 0.0 -1.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.0 0.0 -1.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.0 0.0 -1.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.05040016770362854 0.6650172472000122 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 -0.2839455306529999 0.0 0.0 -1.0 0.9489279985427856 0.6665880680084229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 0.0 0.0 -1.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.0 0.0 -1.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.05040016770362854 0.6650172472000122 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 -0.2839455306529999 0.0 0.0 -1.0 0.05132386088371277 0.657180666923523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 0.0 0.0 -1.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 -0.2839455306529999 0.0 0.0 -1.0 0.9489279985427856 0.6665880680084229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.0 0.0 -1.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 0.0 0.0 -1.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.0 0.0 -1.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.0 0.0 -1.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 -0.2839455306529999 0.0 0.0 -1.0 0.05132386088371277 0.657180666923523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 -0.2839455306529999 0.0 0.0 -1.0 0.052017420530319214 0.6489062309265137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 0.0 0.0 -1.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 0.0 0.0 -1.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.0 0.0 -1.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 -0.2839455306529999 0.0 0.0 -1.0 0.052017420530319214 0.6489062309265137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.052487730979919434 0.6401838064193726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 0.0 0.0 -1.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.0 0.0 -1.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.0 0.0 -1.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 -0.2839455306529999 0.0 0.0 -1.0 0.9467159509658813 0.637975811958313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 0.0 0.0 -1.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.0 0.0 -1.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.052487730979919434 0.6401838064193726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 -0.2839455306529999 0.0 0.0 -1.0 0.05274131894111633 0.6310035586357117 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 0.0 0.0 -1.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 -0.2839455306529999 0.0 0.0 -1.0 0.9467159509658813 0.637975811958313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.0 0.0 -1.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 -0.2839455306529999 0.0 0.0 -1.0 0.05274131894111633 0.6310035586357117 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 -0.2839455306529999 0.0 0.0 -1.0 0.05278405547142029 0.6213566064834595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 0.0 0.0 -1.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.0 0.0 -1.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9464700222015381 0.6156516075134277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 0.0 0.0 -1.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 -0.2839455306529999 0.0 0.0 -1.0 0.05278405547142029 0.6213566064834595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 -0.2839455306529999 0.0 0.0 -1.0 0.052621930837631226 0.6112359762191772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9464700222015381 0.6156516075134277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 0.0 0.0 -1.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 -0.2839455306529999 0.0 0.0 -1.0 0.052621930837631226 0.6112359762191772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 -0.2839455306529999 0.0 0.0 -1.0 0.05225995182991028 0.600637674331665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 0.0 0.0 -1.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 0.0 0.0 -1.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 -0.2839455306529999 0.0 0.0 -1.0 0.05225995182991028 0.600637674331665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 -0.2839455306529999 0.0 0.0 -1.0 0.0517292320728302 0.5896918773651123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 0.0 0.0 -1.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 0.0 0.0 -1.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.0 0.0 -1.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 -0.2839455306529999 0.0 0.0 -1.0 0.9477471709251404 0.5786771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 0.0 0.0 -1.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.0 0.0 -1.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 -0.2839455306529999 0.0 0.0 -1.0 0.0517292320728302 0.5896918773651123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.051086753606796265 0.5792196989059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.051086753606796265 0.5792196989059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 -0.2839455306529999 0.0 0.0 -1.0 0.05033385753631592 0.5692355036735535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 0.0 0.0 -1.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 -0.2839455306529999 0.0 0.0 -1.0 0.9477471709251404 0.5786771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.0 0.0 -1.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 0.0 0.0 -1.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.0 0.0 -1.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.0 0.0 -1.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 -0.2839455306529999 0.0 0.0 -1.0 0.05033385753631592 0.5692355036735535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 -0.2839455306529999 0.0 0.0 -1.0 0.049470871686935425 0.5597488880157471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 0.0 0.0 -1.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.0 0.0 -1.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.0 0.0 -1.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.0 0.0 -1.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 -0.2839455306529999 0.0 0.0 -1.0 0.049470871686935425 0.5597488880157471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 -0.2839455306529999 0.0 0.0 -1.0 0.04849809408187866 0.5507650375366211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9505323171615601 0.5460243225097656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.0 0.0 -1.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 -0.2839455306529999 0.0 0.0 -1.0 0.04849809408187866 0.5507650375366211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04741498827934265 0.5422860383987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9505323171615601 0.5460243225097656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.0 0.0 -1.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.0 0.0 -1.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.0 0.0 -1.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04741498827934265 0.5422860383987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 -0.2839455306529999 0.0 0.0 -1.0 0.046220988035202026 0.5343106985092163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9531815648078918 0.5272574424743652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.0 0.0 -1.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 -0.2839455306529999 0.0 0.0 -1.0 0.046220988035202026 0.5343106985092163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04491466283798218 0.5268359780311584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 0.0 0.0 -1.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9531815648078918 0.5272574424743652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.0 0.0 -1.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 0.0 0.0 -1.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.0 0.0 -1.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.0 0.0 -1.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04491466283798218 0.5268359780311584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 -0.2839455306529999 0.0 0.0 -1.0 0.0434948205947876 0.5198570489883423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 -0.2839455306529999 0.0 0.0 -1.0 0.9564605951309204 0.5109021067619324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 0.0 0.0 -1.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.0 0.0 -1.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 -0.2839455306529999 0.0 0.0 -1.0 0.0434948205947876 0.5198570489883423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 -0.2839455306529999 0.0 0.0 -1.0 0.04195922613143921 0.5133682489395142 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 -0.2839455306529999 0.0 0.0 -1.0 0.9564605951309204 0.5109021067619324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.0 0.0 -1.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 -0.2839455306529999 0.0 0.0 -1.0 0.04195922613143921 0.5133682489395142 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0403059720993042 0.5073632597923279 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.0 0.0 -1.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.0 0.0 -1.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0403059720993042 0.5073632597923279 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 -0.2839455306529999 0.0 0.0 -1.0 0.03853201866149902 0.5018355250358582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.960374653339386 0.4969112277030945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.0 0.0 -1.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 -0.2839455306529999 0.0 0.0 -1.0 0.03853201866149902 0.5018355250358582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 -0.2839455306529999 0.0 0.0 -1.0 0.03590008616447449 0.4946441054344177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 0.0 0.0 -1.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.960374653339386 0.4969112277030945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.0 0.0 -1.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 0.0 0.0 -1.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.0 0.0 -1.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.0 0.0 -1.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 -0.2839455306529999 0.0 0.0 -1.0 0.03590008616447449 0.4946441054344177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.033157676458358765 0.48806750774383545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 -0.2839455306529999 0.0 0.0 -1.0 0.9649338722229004 0.4852173924446106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 0.0 0.0 -1.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.0 0.0 -1.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 0.0 0.0 -1.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 -0.2839455306529999 0.0 0.0 -1.0 0.9649338722229004 0.4852173924446106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.0 0.0 -1.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.033157676458358765 0.48806750774383545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 -0.2839455306529999 0.0 0.0 -1.0 0.030300259590148926 0.4821009039878845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 0.0 0.0 -1.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.0 0.0 -1.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.0 0.0 -1.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 -0.2839455306529999 0.0 0.0 -1.0 0.9699341058731079 0.47561323642730713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 0.0 0.0 -1.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.0 0.0 -1.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 -0.2839455306529999 0.0 0.0 -1.0 0.030300259590148926 0.4821009039878845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.0 0.0 -1.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 -0.2839455306529999 0.0 0.0 -1.0 0.9725217819213867 0.47152602672576904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 -0.2839455306529999 0.0 0.0 -1.0 0.9699341058731079 0.47561323642730713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.0 0.0 -1.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.0 0.0 -1.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.0 0.0 -1.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 -0.2839455306529999 0.0 0.0 -1.0 0.02422255277633667 0.4719785451889038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 0.0 0.0 -1.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 -0.2839455306529999 0.0 0.0 -1.0 0.9725217819213867 0.47152602672576904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.0 0.0 -1.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 -0.2839455306529999 0.0 0.0 -1.0 0.02422255277633667 0.4719785451889038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 -0.2839455306529999 0.0 0.0 -1.0 0.02099284529685974 0.46781474351882935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 0.0 0.0 -1.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.0 0.0 -1.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 -0.2839455306529999 0.0 0.0 -1.0 0.9778796434402466 0.46475380659103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 0.0 0.0 -1.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 -0.2839455306529999 0.0 0.0 -1.0 0.02099284529685974 0.46781474351882935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 -0.2839455306529999 0.0 0.0 -1.0 0.01762986183166504 0.4642455577850342 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.980652391910553 0.4620588421821594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 -0.2839455306529999 0.0 0.0 -1.0 0.9778796434402466 0.46475380659103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9834892749786377 0.45981884002685547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.980652391910553 0.4620588421821594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 -0.2839455306529999 0.0 0.0 -1.0 0.01762986183166504 0.4642455577850342 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 -0.2839455306529999 0.0 0.0 -1.0 0.014129281044006348 0.46126997470855713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 -0.2839455306529999 0.0 0.0 -1.0 0.9863911867141724 0.4580300450325012 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9834892749786377 0.45981884002685547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 -0.2839455306529999 0.0 0.0 -1.0 0.014129281044006348 0.46126997470855713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 -0.2839455306529999 0.0 0.0 -1.0 0.010486572980880737 0.4588884115219116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 0.0 0.0 -1.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 -0.2839455306529999 0.0 0.0 -1.0 0.9863911867141724 0.4580300450325012 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 -0.2839455306529999 0.0 0.0 -1.0 0.010486572980880737 0.4588884115219116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 -0.2839455306529999 0.0 0.0 -1.0 0.006697714328765869 0.45710289478302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 0.0 0.0 -1.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.0 0.0 -1.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 -0.2839455306529999 0.0 0.0 -1.0 0.9923943281173706 0.4557947516441345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 0.0 0.0 -1.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 -0.2839455306529999 0.0 0.0 -1.0 0.006697714328765869 0.45710289478302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 -0.2839455306529999 0.0 0.0 -1.0 0.0027590692043304443 0.4559170603752136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9954967498779297 0.45534396171569824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 -0.2839455306529999 0.0 0.0 -1.0 0.9923943281173706 0.4557947516441345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 1.0493335723876953 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 -0.2839455306529999 0.0 0.0 -1.0 1.0027590990066528 0.4559170603752136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9954967498779297 0.45534396171569824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 1.0493335723876953 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 1.0493335723876953 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.0 0.0 -1.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.047188133001327515 0.39707428216934204 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 0.0 0.0 -1.0 1.047232747077942 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 1.0493335723876953 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.0 0.0 -1.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 0.0 0.0 -1.0 1.047232747077942 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.0 0.0 -1.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.0 0.0 -1.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 -0.2839455306529999 0.0 0.0 -1.0 1.045076608657837 0.4359728693962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 0.0 0.0 -1.0 1.047232747077942 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.0 0.0 -1.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 0.0 0.0 -1.0 1.0428640842437744 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 -0.2839455306529999 0.0 0.0 -1.0 1.045076608657837 0.4359728693962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.0 0.0 -1.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 0.0 0.0 -1.0 1.0428640842437744 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.0 0.0 -1.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.0 0.0 -1.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 -0.2839455306529999 0.0 0.0 -1.0 1.0405933856964111 0.42649346590042114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 0.0 0.0 -1.0 1.0428640842437744 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.0 0.0 -1.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 0.0 0.0 -1.0 1.0382630825042725 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 -0.2839455306529999 0.0 0.0 -1.0 1.0405933856964111 0.42649346590042114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.0 0.0 -1.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 0.0 0.0 -1.0 1.0382630825042725 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.0 0.0 -1.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.0 0.0 -1.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0358721017837524 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 0.0 0.0 -1.0 1.0382630825042725 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.0 0.0 -1.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0358721017837524 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.0 0.0 -1.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.0 0.0 -1.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 -0.2839455306529999 0.0 0.0 -1.0 1.0334187746047974 0.4139173626899719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0358721017837524 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.0 0.0 -1.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 0.0 0.0 -1.0 1.0309019088745117 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 -0.2839455306529999 0.0 0.0 -1.0 1.0334187746047974 0.4139173626899719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.0 0.0 -1.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 0.0 0.0 -1.0 1.0309019088745117 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.0 0.0 -1.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.0 0.0 -1.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 -0.2839455306529999 0.0 0.0 -1.0 1.0283204317092896 0.40661054849624634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 0.0 0.0 -1.0 1.0309019088745117 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.0 0.0 -1.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 0.0 0.0 -1.0 1.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 -0.2839455306529999 0.0 0.0 -1.0 1.0283204317092896 0.40661054849624634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.0 0.0 -1.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 0.0 0.0 -1.0 1.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.0 0.0 -1.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.0 0.0 -1.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 -0.2839455306529999 0.0 0.0 -1.0 1.0229582786560059 0.40015560388565063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 0.0 0.0 -1.0 1.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.0 0.0 -1.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 0.0 0.0 -1.0 1.0201754570007324 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 -0.2839455306529999 0.0 0.0 -1.0 1.0229582786560059 0.40015560388565063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.0 0.0 -1.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 0.0 0.0 -1.0 1.0201754570007324 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.0 0.0 -1.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 -0.2839455306529999 0.0 0.0 -1.0 1.0173530578613281 0.39455825090408325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 0.0 0.0 -1.0 1.0201754570007324 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 0.0 0.0 -1.0 1.0145189762115479 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 -0.2839455306529999 0.0 0.0 -1.0 1.0173530578613281 0.39455825090408325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 0.0 0.0 -1.0 1.0145189762115479 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.0 0.0 -1.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 -0.2839455306529999 0.0 0.0 -1.0 1.011673927307129 0.38986819982528687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 0.0 0.0 -1.0 1.0145189762115479 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.0 0.0 -1.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 0.0 0.0 -1.0 1.0088175535202026 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 -0.2839455306529999 0.0 0.0 -1.0 1.011673927307129 0.38986819982528687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.0 0.0 -1.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 0.0 0.0 -1.0 1.0088175535202026 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.0 0.0 -1.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 0.0 0.0 -1.0 1.0059502124786377 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 0.0 0.0 -1.0 1.0088175535202026 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 0.0 0.0 -1.0 1.0059502124786377 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.0 0.0 -1.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 -0.2839455306529999 0.0 0.0 -1.0 1.0030720233917236 0.38453078269958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 0.0 0.0 -1.0 1.0059502124786377 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.0 0.0 -1.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 0.0 0.0 -1.0 1.00018310546875 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 -0.2839455306529999 0.0 0.0 -1.0 1.0030720233917236 0.38453078269958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.0 0.0 -1.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 0.0 0.0 -1.0 1.00018310546875 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.0 0.0 -1.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.0 0.0 -1.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 -0.2839455306529999 0.0 0.0 -1.0 0.9972836971282959 0.3820924758911133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 0.0 0.0 -1.0 1.00018310546875 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.0 0.0 -1.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 0.0 0.0 -1.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 -0.2839455306529999 0.0 0.0 -1.0 0.9972836971282959 0.3820924758911133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.0 0.0 -1.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 0.0 0.0 -1.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.0 0.0 -1.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.0 0.0 -1.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 -0.2839455306529999 0.0 0.0 -1.0 0.9914541840553284 0.38054370880126953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 0.0 0.0 -1.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.0 0.0 -1.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 -0.2839455306529999 0.0 0.00012207403779029846 -1.0 0.9885245561599731 0.38010191917419434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 -0.2839455306529999 0.0 0.0 -1.0 0.9914541840553284 0.38054370880126953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.0 0.0 -1.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 -0.2839455306529999 0.0 0.00012207403779029846 -1.0 0.9885245561599731 0.38010191917419434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.0 0.0 -1.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 -0.2839455306529999 0.0 0.0 -1.0 0.9855853915214539 0.37988173961639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.9500210285186768 0.8827873468399048 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.8878573775291443 0.842465877532959 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.8878573775291443 0.842465877532959 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 -0.2839455306529999 0.0 0.0 -1.0 0.06184554100036621 0.8146851658821106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.052008867263793945 0.8166701197624207 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 -0.2839455306529999 0.0 0.0 -1.0 0.06184554100036621 0.8146851658821106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.0 0.0 -1.0 0.033646225929260254 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 0.0 0.0 -1.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.0 0.0 -1.0 0.033646225929260254 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.0 0.0 -1.0 0.033646225929260254 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.0 0.0 -1.0 0.024738222360610962 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 0.0 0.0 -1.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.0 0.0 -1.0 0.024738222360610962 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.0 0.0 -1.0 0.024738222360610962 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.0 0.0 -1.0 0.016127586364746094 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 0.0 0.0 -1.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 0.0 0.0 -1.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.0 0.0 -1.0 0.016127586364746094 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 0.0 0.0 -1.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.0 0.0 -1.0 0.016127586364746094 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.0 0.0 -1.0 0.007884740829467773 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 0.0 0.0 -1.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 0.0 0.0 -1.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.0 0.0 -1.0 0.007884740829467773 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 0.0 0.0 -1.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.0 0.0 -1.0 0.007884740829467773 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.0 0.0 -1.0 6.493926048278809e-05 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 0.10748907923698425 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 0.0 0.0 -1.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.0 0.0 -1.0 6.493926048278809e-05 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 1.1074891090393066 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.0 0.0 -1.0 1.0000649690628052 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.0 0.0 -1.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1128166913986206 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 0.0 0.0 -1.0 1.1074891090393066 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.0 0.0 -1.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1128166913986206 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.0 0.0 -1.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.0 0.0 -1.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 1.1175563335418701 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1128166913986206 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.0 0.0 -1.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 1.1175563335418701 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.0 0.0 -1.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.0 0.0 -1.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1217445135116577 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 0.0 0.0 -1.0 1.1175563335418701 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.0 0.0 -1.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1217445135116577 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.0 0.0 -1.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.0 0.0 -1.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 1.1254181861877441 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1217445135116577 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.0 0.0 -1.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 1.1254181861877441 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.0 0.0 -1.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.0 0.0 -1.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 1.1286132335662842 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 0.0 0.0 -1.0 1.1254181861877441 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.0 0.0 -1.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 1.1286132335662842 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.0 0.0 -1.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 0.0 0.0 -1.0 1.1312880516052246 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 0.0 0.0 -1.0 1.1286132335662842 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 0.0 0.0 -1.0 1.1312880516052246 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 0.0 0.0 -1.0 1.0160439014434814 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 0.0 0.0 -1.0 1.0160439014434814 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 -0.2839455306529999 0.0 0.0 -1.0 1.0116513967514038 0.7508395314216614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 -0.2839455306529999 0.0 0.0 -1.0 1.0116513967514038 0.7508395314216614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 -0.2839455306529999 0.0 0.0 -1.0 1.007440447807312 0.7491217851638794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 -0.2839455306529999 0.0 0.0 -1.0 1.007440447807312 0.7491217851638794 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0034195184707642 0.7469233274459839 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0034195184707642 0.7469233274459839 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 -0.2839455306529999 0.0 0.0 -1.0 0.9995948672294617 0.7442548871040344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 -0.2839455306529999 0.0 0.0 -1.0 0.9995948672294617 0.7442548871040344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 -0.2839455306529999 0.0 0.0 -1.0 0.9959707856178284 0.7411254644393921 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 -0.2839455306529999 0.0 0.0 -1.0 0.9959707856178284 0.7411254644393921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 -0.2839455306529999 0.0 0.0 -1.0 0.9925497770309448 0.7375422716140747 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 -0.2839455306529999 0.0 0.0 -1.0 0.9925497770309448 0.7375422716140747 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 -0.2839455306529999 0.0 0.0 -1.0 0.989332914352417 0.7335114479064941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 -0.2839455306529999 0.0 0.0 -1.0 0.989332914352417 0.7335114479064941 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 -0.2839455306529999 0.0 0.0 -1.0 0.9863194823265076 0.7290369868278503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 -0.2839455306529999 0.0 0.0 -1.0 0.9863194823265076 0.7290369868278503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 -0.2839455306529999 0.0 0.0 -1.0 0.9835079908370972 0.7241215705871582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 -0.2839455306529999 0.0 0.0 -1.0 0.9835079908370972 0.7241215705871582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 -0.2839455306529999 0.0 0.0 -1.0 0.9808957576751709 0.7187663316726685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 -0.2839455306529999 0.0 0.0 -1.0 0.9808957576751709 0.7187663316726685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 -0.2839455306529999 0.0 0.0 -1.0 0.9785283803939819 0.7129271030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 -0.2839455306529999 0.0 0.0 -1.0 0.9785283803939819 0.7129271030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 -0.2839455306529999 0.0 0.0 -1.0 0.9764478802680969 0.7065575122833252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 -0.2839455306529999 0.0 0.0 -1.0 0.9764478802680969 0.7065575122833252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 0.0 0.0 -1.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 0.0 0.0 -1.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.0 0.0 -1.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 0.0 0.0 -1.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 0.0 0.0 -1.0 0.13128799200057983 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 0.0 0.0 -1.0 0.02060776948928833 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 0.0 0.0 -1.0 0.02060776948928833 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 0.0 0.0 -1.0 0.13128799200057983 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 0.0 0.0 -1.0 0.01604396104812622 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 0.0 0.0 -1.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.025330007076263428 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.025330007076263428 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 0.0 0.0 -1.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 0.0 0.0 -1.0 0.02060776948928833 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0 0.0 -1.0 0.025330007076263428 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.02992081642150879 0.7526613473892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.02992081642150879 0.7526613473892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.03436863422393799 0.7518304586410522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 0.03436863422393799 0.7518304586410522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.0 0.0 -1.0 0.038658708333969116 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.0 0.0 -1.0 0.038658708333969116 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.0 0.0 -1.0 0.038658708333969116 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 -0.2839455306529999 0.0 0.0 -1.0 0.0427783727645874 0.7486751079559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 -0.2839455306529999 0.0 0.0 -1.0 0.0427783727645874 0.7486751079559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04671713709831238 0.7463663816452026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04671713709831238 0.7463663816452026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 -0.2839455306529999 0.0 0.0 -1.0 0.050466328859329224 0.7435793876647949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 -0.2839455306529999 0.0 0.0 -1.0 0.050466328859329224 0.7435793876647949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 -0.2839455306529999 0.0 0.0 -1.0 0.05401936173439026 0.7403191328048706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 -0.2839455306529999 0.0 0.0 -1.0 0.05401936173439026 0.7403191328048706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.0 0.0 -1.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 0.0 0.0 -1.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 0.0 0.0 -1.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.0 0.0 -1.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 0.0 0.0 -1.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.0 0.0 -1.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 -0.2839455306529999 0.0 0.0 -1.0 0.06051981449127197 0.7323944568634033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 0.0 0.0 -1.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 -0.2839455306529999 0.0 0.0 -1.0 0.06051981449127197 0.7323944568634033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 -0.2839455306529999 0.0 0.0 -1.0 0.06346258521080017 0.7277339696884155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 0.0 0.0 -1.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 -0.2839455306529999 0.0 0.0 -1.0 0.06346258521080017 0.7277339696884155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.0 0.0 -1.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 0.0 0.0 -1.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.0 0.0 -1.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.0 0.0 -1.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 -0.2839455306529999 0.0 0.0 -1.0 0.06873214244842529 0.7170165777206421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 -0.2839455306529999 0.0 0.0 -1.0 0.06873214244842529 0.7170165777206421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 -0.2839455306529999 0.0 0.0 -1.0 0.07100096344947815 0.7109781503677368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 -0.2839455306529999 0.0 0.0 -1.0 0.07100096344947815 0.7109781503677368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.0 0.0 -1.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 0.0 0.0 -1.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.0 0.0 -1.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 0.0 0.0 -1.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.0 0.0 -1.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 -0.2839455306529999 0.0 0.0 -1.0 0.07459104061126709 0.6976232528686523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 0.0 0.0 -1.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 -0.2839455306529999 0.0 0.0 -1.0 0.07459104061126709 0.6976232528686523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9731119275093079 0.6922006011009216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 0.0 0.0 -1.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 0.0 0.0 -1.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 0.0 0.0 -1.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 0.0 0.0 -1.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 -0.2839455306529999 0.0 0.0 -1.0 0.07697618007659912 0.6825403571128845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 -0.2839455306529999 0.0 0.0 -1.0 0.9718380570411682 0.6841946840286255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9731119275093079 0.6922006011009216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 0.0 0.0 -1.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 -0.2839455306529999 0.0 0.0 -1.0 0.07697618007659912 0.6825403571128845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.0 0.0 -1.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 -0.2839455306529999 0.0 0.0 -1.0 0.9708145260810852 0.6756221055984497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 -0.2839455306529999 0.0 0.0 -1.0 0.9718380570411682 0.6841946840286255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 0.0 0.0 -1.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.0 0.0 -1.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.0 0.0 -1.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 -0.2839455306529999 0.0 0.0 -1.0 0.07822781801223755 0.6656776666641235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 -0.2839455306529999 0.0 0.0 -1.0 0.9700321555137634 0.6664710640907288 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 -0.2839455306529999 0.0 0.0 -1.0 0.9708145260810852 0.6756221055984497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 -0.2839455306529999 0.0 0.0 -1.0 0.07822781801223755 0.6656776666641235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.0 0.0 -1.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 0.0 0.0 -1.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.0 0.0 -1.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 -0.2839455306529999 0.0 0.0 -1.0 0.9694821834564209 0.656730055809021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 -0.2839455306529999 0.0 0.0 -1.0 0.9700321555137634 0.6664710640907288 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 0.0 0.0 -1.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.0 0.0 -1.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 -0.2839455306529999 0.0 0.0 -1.0 0.0784153938293457 0.6469727158546448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 -0.2839455306529999 0.0 0.0 -1.0 0.9691557884216309 0.6463892459869385 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 -0.2839455306529999 0.0 0.0 -1.0 0.9694821834564209 0.656730055809021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 0.0 0.0 -1.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 -0.2839455306529999 0.0 0.0 -1.0 0.0784153938293457 0.6469727158546448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.0 0.0 -1.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 0.0 0.0 -1.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.0 0.0 -1.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 -0.2839455306529999 0.0 0.0 -1.0 0.9690446853637695 0.6354416608810425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 -0.2839455306529999 0.0 0.0 -1.0 0.9691557884216309 0.6463892459869385 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.0 0.0 -1.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 -0.2839455306529999 0.0 0.0 -1.0 0.0776045024394989 0.6263766288757324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 -0.2839455306529999 0.0 0.0 -1.0 0.9691407680511475 0.6238844990730286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 -0.2839455306529999 0.0 0.0 -1.0 0.9690446853637695 0.6354416608810425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 -0.2839455306529999 0.0 0.0 -1.0 0.0776045024394989 0.6263766288757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.0 0.0 -1.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 0.0 0.0 -1.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.0 0.0 -1.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 -0.2839455306529999 0.0 0.0 -1.0 0.9694360494613647 0.6117208003997803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 -0.2839455306529999 0.0 0.0 -1.0 0.9691407680511475 0.6238844990730286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 0.0 0.0 -1.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.0 0.0 -1.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.0 0.0 -1.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 0.0 0.0 -1.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 0.0 0.0 -1.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.0 0.0 -1.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 -0.2839455306529999 0.0 0.0 -1.0 0.9698705673217773 0.6007810831069946 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 -0.2839455306529999 0.0 0.0 -1.0 0.9694360494613647 0.6117208003997803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 0.0 0.0 -1.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.0 0.0 -1.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 -0.2839455306529999 0.0 0.0 -1.0 0.07480058073997498 0.5922513008117676 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9704671502113342 0.5903095006942749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 -0.2839455306529999 0.0 0.0 -1.0 0.9698705673217773 0.6007810831069946 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 0.0 0.0 -1.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 -0.2839455306529999 0.0 0.0 -1.0 0.07480058073997498 0.5922513008117676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.0 0.0 -1.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 0.0 0.0 -1.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 0.0 0.0 -1.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.0 0.0 -1.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 0.0 0.0 -1.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.0 0.0 -1.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 -0.2839455306529999 0.0 0.0 -1.0 0.07243585586547852 0.5714563131332397 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 -0.2839455306529999 0.0 0.0 -1.0 0.9712231159210205 0.580313503742218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9704671502113342 0.5903095006942749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 0.0 0.0 -1.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 -0.2839455306529999 0.0 0.0 -1.0 0.07243585586547852 0.5714563131332397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.0 0.0 -1.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 0.0 0.0 -1.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 0.0 0.0 -1.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.0 0.0 -1.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 -0.2839455306529999 0.0 0.0 -1.0 0.972136378288269 0.570796012878418 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 -0.2839455306529999 0.0 0.0 -1.0 0.9712231159210205 0.580313503742218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 0.0 0.0 -1.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.0 0.0 -1.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9732059240341187 0.5617566108703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 -0.2839455306529999 0.0 0.0 -1.0 0.972136378288269 0.570796012878418 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 0.0 0.0 -1.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 0.0 0.0 -1.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 0.0 0.0 -1.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 -0.2839455306529999 0.0 0.0 -1.0 0.06827953457832336 0.5448507070541382 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 -0.2839455306529999 0.0 0.0 -1.0 0.9744312167167664 0.553192138671875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9732059240341187 0.5617566108703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 0.0 0.0 -1.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 -0.2839455306529999 0.0 0.0 -1.0 0.06827953457832336 0.5448507070541382 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 -0.2839455306529999 0.0 0.0 -1.0 0.9758127927780151 0.5450972318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 -0.2839455306529999 0.0 0.0 -1.0 0.9744312167167664 0.553192138671875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 0.0 0.0 -1.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 0.0 0.0 -1.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 0.0 0.0 -1.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 -0.2839455306529999 0.0 0.0 -1.0 0.0650908350944519 0.5301951169967651 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.977351725101471 0.53746497631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 -0.2839455306529999 0.0 0.0 -1.0 0.9758127927780151 0.5450972318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 0.0 0.0 -1.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 -0.2839455306529999 0.0 0.0 -1.0 0.0650908350944519 0.5301951169967651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 -0.2839455306529999 0.0 0.0 -1.0 0.06336680054664612 0.523777961730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.979049801826477 0.5302878022193909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.977351725101471 0.53746497631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 0.0 0.0 -1.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 -0.2839455306529999 0.0 0.0 -1.0 0.06336680054664612 0.523777961730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.0 0.0 -1.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 0.0 0.0 -1.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 0.0 0.0 -1.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.0 0.0 -1.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9809092879295349 0.5235574245452881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.979049801826477 0.5302878022193909 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 0.0 0.0 -1.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.0 0.0 -1.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 -0.2839455306529999 0.0 0.0 -1.0 0.05965006351470947 0.5127252340316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9829331636428833 0.5172655582427979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9809092879295349 0.5235574245452881 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 0.0 0.0 -1.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 -0.2839455306529999 0.0 0.0 -1.0 0.05965006351470947 0.5127252340316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.0 0.0 -1.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 0.0 0.0 -1.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 0.0 0.0 -1.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.0 0.0 -1.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 -0.2839455306529999 0.0 0.0 -1.0 0.9851247668266296 0.5114044547080994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9829331636428833 0.5172655582427979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 0.0 0.0 -1.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.0 0.0 -1.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05381375551223755 0.4998077154159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 -0.2839455306529999 0.0 0.0 -1.0 0.9874353408813477 0.5059763193130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 -0.2839455306529999 0.0 0.0 -1.0 0.9851247668266296 0.5114044547080994 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 0.0 0.0 -1.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05381375551223755 0.4998077154159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.0 0.0 -1.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989815354347229 0.5009863376617432 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 -0.2839455306529999 0.0 0.0 -1.0 0.9874353408813477 0.5059763193130493 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 0.0 0.0 -1.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 0.0 0.0 -1.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.0 0.0 -1.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 0.0 0.0 -1.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.0 0.0 -1.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 -0.2839455306529999 0.0 0.0 -1.0 0.04757365584373474 0.48960989713668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.989815354347229 0.5009863376617432 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 0.0 0.0 -1.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 -0.2839455306529999 0.0 0.0 -1.0 0.04757365584373474 0.48960989713668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 -0.2839455306529999 0.0 0.0 -1.0 0.044294536113739014 0.48550617694854736 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 -0.2839455306529999 0.0 0.0 -1.0 0.9947965145111084 0.4923076033592224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 0.0 0.0 -1.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 -0.2839455306529999 0.0 0.0 -1.0 0.044294536113739014 0.48550617694854736 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.0 0.0 -1.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 0.0 0.0 -1.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.0 0.0 -1.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 -0.2839455306529999 0.0 0.0 -1.0 0.9974039793014526 0.4886128902435303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 -0.2839455306529999 0.0 0.0 -1.0 0.9947965145111084 0.4923076033592224 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 -0.2839455306529999 0.0 0.0 -1.0 1.000093698501587 0.4853445887565613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 -0.2839455306529999 0.0 0.0 -1.0 0.9974039793014526 0.4886128902435303 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.0 0.0 -1.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 -0.2839455306529999 0.0 0.0 -1.0 0.03740385174751282 0.4792447090148926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 -0.2839455306529999 0.0 0.0 -1.0 1.0028687715530396 0.48250114917755127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 -0.2839455306529999 0.0 0.0 -1.0 1.000093698501587 0.4853445887565613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 -0.2839455306529999 0.0 0.0 -1.0 0.03740385174751282 0.4792447090148926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 -0.2839455306529999 0.0 0.0 -1.0 0.03378739953041077 0.47707217931747437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 -0.2839455306529999 0.0 0.0 -1.0 1.005732536315918 0.48008131980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 -0.2839455306529999 0.0 0.0 -1.0 1.0028687715530396 0.48250114917755127 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 -0.2839455306529999 0.0 0.0 -1.0 0.03378739953041077 0.47707217931747437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.030053943395614624 0.47553038597106934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 -0.2839455306529999 0.0 0.0 -1.0 1.0086880922317505 0.47808516025543213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 -0.2839455306529999 0.0 0.0 -1.0 1.005732536315918 0.48008131980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.030053943395614624 0.47553038597106934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.0 0.0 -1.0 0.026201844215393066 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 0.0 0.0 -1.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 0.0 0.0 -1.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.0 0.0 -1.0 0.026201844215393066 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 -0.2839455306529999 0.0 0.0 -1.0 1.0117387771606445 0.47651296854019165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 -0.2839455306529999 0.0 0.0 -1.0 1.0086880922317505 0.47808516025543213 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 0.0 0.0 -1.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.0 0.0 -1.0 0.026201844215393066 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 -0.2839455306529999 0.0 0.0 -1.0 0.022230058908462524 0.4743214249610901 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 1.0148876905441284 0.4753662943840027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 -0.2839455306529999 0.0 0.0 -1.0 1.0117387771606445 0.47651296854019165 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 0.0 0.0 -1.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 -0.2839455306529999 0.0 0.0 -1.0 0.022230058908462524 0.4743214249610901 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -1.0 0.01813778281211853 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -1.0 1.018137812614441 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 1.0148876905441284 0.4753662943840027 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 0.0 0.0 -1.0 1.1020373106002808 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.0 0.0 -1.0 1.018137812614441 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.09788179397583 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 0.0 0.0 -1.0 1.1020373106002808 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.09788179397583 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9718600511550903 0.41916149854660034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.0 0.0 -1.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 0.0 0.0 -1.0 1.0934579372406006 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.09788179397583 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 0.0 0.0 -1.0 1.0934579372406006 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9744249582290649 0.45770955085754395 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 0.0 0.0 -1.0 1.0934579372406006 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9744249582290649 0.45770955085754395 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.0 0.0 -1.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 0.0 0.0 -1.0 1.0888556241989136 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 0.0 0.0 -1.0 1.0934579372406006 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.0 0.0 -1.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 0.0 0.0 -1.0 1.0888556241989136 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.0 0.0 -1.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 -0.2839455306529999 0.0 0.0 -1.0 0.9787807464599609 0.447887122631073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 0.0 0.0 -1.0 1.0888556241989136 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 -0.2839455306529999 0.0 0.0 -1.0 0.9787807464599609 0.447887122631073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.0 0.0 -1.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 0.0 0.0 -1.0 1.084169626235962 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 0.0 0.0 -1.0 1.0888556241989136 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.0 0.0 -1.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 0.0 0.0 -1.0 1.084169626235962 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.0 0.0 -1.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.0 0.0 -1.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 0.0 0.0 -1.0 1.0793944597244263 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 0.0 0.0 -1.0 1.084169626235962 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.0 0.0 -1.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 0.0 0.0 -1.0 1.0793944597244263 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.0 0.0 -1.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9857213497161865 0.4348520040512085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 0.0 0.0 -1.0 1.0793944597244263 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9857213497161865 0.4348520040512085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.0 0.0 -1.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 0.0 0.0 -1.0 1.0745253562927246 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 0.0 0.0 -1.0 1.0793944597244263 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.0 0.0 -1.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 0.0 0.0 -1.0 1.0745253562927246 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.0 0.0 -1.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 -0.2839455306529999 0.0 0.0 -1.0 0.9906381964683533 0.4272674322128296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 0.0 0.0 -1.0 1.0745253562927246 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 -0.2839455306529999 0.0 0.0 -1.0 0.9906381964683533 0.4272674322128296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 0.0 0.0 -1.0 1.0695576667785645 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 0.0 0.0 -1.0 1.0745253562927246 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 0.0 0.0 -1.0 1.0695576667785645 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.0 0.0 -1.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 0.0 0.0 -1.0 1.0695576667785645 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.0 0.0 -1.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 -0.2839455306529999 0.0 0.0 -1.0 0.9984782338142395 0.41751396656036377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.064487338066101 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 0.0 0.0 -1.0 1.0695576667785645 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 -0.2839455306529999 0.0 0.0 -1.0 0.9984782338142395 0.41751396656036377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.064487338066101 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 -0.2839455306529999 0.0 0.0 -1.0 0.9984782338142395 0.41751396656036377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 -0.2839455306529999 0.0 0.0 -1.0 1.0011929273605347 0.41469377279281616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06448733806610107 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 -0.2839455306529999 0.0 0.0 -1.0 0.0011928975582122803 0.41469377279281616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.0 0.0 -1.0 0.0039174556732177734 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 0.0 0.0 -1.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06448733806610107 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.0 0.0 -1.0 0.0039174556732177734 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 0.0 0.0 -1.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.0 0.0 -1.0 0.0039174556732177734 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.0 0.0 -1.0 0.0066522955894470215 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 0.0 0.0 -1.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 0.0 0.0 -1.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.0 0.0 -1.0 0.0066522955894470215 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 0.0 0.0 -1.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.0 0.0 -1.0 0.0066522955894470215 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 -0.2839455306529999 0.0 0.0 -1.0 0.009397745132446289 0.40753376483917236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 0.0 0.0 -1.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 -0.2839455306529999 0.0 0.0 -1.0 0.009397745132446289 0.40753376483917236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012153983116149902 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 0.0 0.0 -1.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 0.0 0.0 -1.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012153983116149902 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 0.0 0.0 -1.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.012153983116149902 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 -0.2839455306529999 0.0 0.0 -1.0 0.014921396970748901 0.4038327932357788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 0.0 0.0 -1.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 -0.2839455306529999 0.0 0.0 -1.0 0.014921396970748901 0.4038327932357788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.0 0.0 -1.0 0.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 0.0 0.0 -1.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 0.0 0.0 -1.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.0 0.0 -1.0 0.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 0.0 0.0 -1.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.0 0.0 -1.0 0.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 -0.2839455306529999 0.0 0.0 -1.0 0.020490676164627075 0.40098077058792114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 0.0 0.0 -1.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 -0.2839455306529999 0.0 0.0 -1.0 0.020490676164627075 0.40098077058792114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.023293018341064453 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 0.0 0.0 -1.0 0.03750342130661011 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 0.0 0.0 -1.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.023293018341064453 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 0.0 0.0 -1.0 0.03750342130661011 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.023293018341064453 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02610740065574646 0.39897215366363525 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 0.0 0.0 -1.0 0.03750342130661011 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02610740065574646 0.39897215366363525 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.028934001922607422 0.3982831835746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 -0.2839455306529999 0.0 0.00030518509447574615 -0.999969482421875 0.031773000955581665 0.3978040814399719 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 0.0 0.0 -1.0 0.03750342130661011 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.028934001922607422 0.3982831835746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 -0.2839455306529999 0.0 0.00012207403779029846 -1.0 0.051040977239608765 0.8245793581008911 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 -0.2839455306529999 0.0 0.0 -1.0 0.041211605072021484 0.8255455493927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 -0.2839455306529999 0.0 0.0 -1.0 0.041211605072021484 0.8255455493927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.03174707293510437 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.03174707293510437 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.03174707293510437 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.0 0.0 -1.0 0.022726356983184814 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 0.0 0.0 -1.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.0 0.0 -1.0 0.022726356983184814 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 0.0 0.0 -1.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.0 0.0 -1.0 0.022726356983184814 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0 0.0 -1.0 0.014209866523742676 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08913213014602661 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 0.0 0.0 -1.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0 0.0 -1.0 0.014209866523742676 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08913213014602661 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0 0.0 -1.0 0.014209866523742676 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 -0.2839455306529999 0.0 0.0 -1.0 0.006239652633666992 0.8229754567146301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0891320705413818 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 -0.2839455306529999 0.0 0.0 -1.0 1.006239652633667 0.8229754567146301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 0.0 0.0 -1.0 1.096716046333313 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0891320705413818 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 0.0 0.0 -1.0 1.096716046333313 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.0 0.0 -1.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 0.0 0.0 -1.0 1.1035447120666504 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 0.0 0.0 -1.0 1.096716046333313 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.0 0.0 -1.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 0.0 0.0 -1.0 1.1035447120666504 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.0 0.0 -1.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.0 0.0 -1.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1096538305282593 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 0.0 0.0 -1.0 1.1035447120666504 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.0 0.0 -1.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1096538305282593 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.0 0.0 -1.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 -0.2839455306529999 0.0 0.0 -1.0 0.9801024794578552 0.8133453130722046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1096538305282593 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 -0.2839455306529999 0.0 0.0 -1.0 0.9801024794578552 0.8133453130722046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.0 0.0 -1.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1150856018066406 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1096538305282593 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.0 0.0 -1.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1150856018066406 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.0 0.0 -1.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.119884729385376 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1150856018066406 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.119884729385376 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.0 0.0 -1.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 0.0 0.0 -1.0 1.1240952014923096 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.119884729385376 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.0 0.0 -1.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 0.0 0.0 -1.0 1.1240952014923096 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.0 0.0 -1.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 0.0 0.0 -1.0 1.1277600526809692 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 0.0 0.0 -1.0 1.1240952014923096 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 0.0 0.0 -1.0 1.1277600526809692 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 -0.2839455306529999 0.0 0.0 -1.0 0.959189236164093 0.7965185046195984 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 0.0 0.0 -1.0 1.1277600526809692 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 -0.2839455306529999 0.0 0.0 -1.0 0.959189236164093 0.7965185046195984 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.0 0.0 -1.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 0.0 0.0 -1.0 1.1309187412261963 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 0.0 0.0 -1.0 1.1277600526809692 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.0 0.0 -1.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 0.0 0.0 -1.0 1.1309187412261963 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.0 0.0 -1.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 0.0 0.0 -1.0 1.133660912513733 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 0.0 0.0 -1.0 1.1309187412261963 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 0.0 0.0 -1.0 1.133660912513733 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9507166147232056 0.7853257656097412 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 0.0 0.0 -1.0 1.133660912513733 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9507166147232056 0.7853257656097412 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.0 0.0 -1.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 0.0 0.0 -1.0 1.1360664367675781 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 0.0 0.0 -1.0 1.133660912513733 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.0 0.0 -1.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 0.0 0.0 -1.0 1.1360664367675781 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.0 0.0 -1.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.0 0.0 -1.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1381559371948242 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 0.0 0.0 -1.0 1.1360664367675781 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.0 0.0 -1.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1381559371948242 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.0 0.0 -1.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 -0.2839455306529999 0.0 0.0 -1.0 0.944506049156189 0.7736969590187073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1381559371948242 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 -0.2839455306529999 0.0 0.0 -1.0 0.944506049156189 0.7736969590187073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.0 0.0 -1.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 0.0 0.0 -1.0 1.1399489641189575 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1381559371948242 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.0 0.0 -1.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 0.0 0.0 -1.0 1.1399489641189575 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.0 0.0 -1.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.0 0.0 -1.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 0.0 0.0 -1.0 1.1414625644683838 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 0.0 0.0 -1.0 1.1399489641189575 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.0 0.0 -1.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 0.0 0.0 -1.0 1.1414625644683838 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.0 0.0 -1.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 -0.2839455306529999 0.0 0.0 -1.0 0.9402449131011963 0.7617413997650146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 0.0 0.0 -1.0 1.1414625644683838 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 -0.2839455306529999 0.0 0.0 -1.0 0.9402449131011963 0.7617413997650146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.0 0.0 -1.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 0.0 0.0 -1.0 1.1427130699157715 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 0.0 0.0 -1.0 1.1414625644683838 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.0 0.0 -1.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 0.0 0.0 -1.0 1.1427130699157715 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.0 0.0 -1.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.0 0.0 -1.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 0.0 0.0 -1.0 1.1437146663665771 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 0.0 0.0 -1.0 1.1427130699157715 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.0 0.0 -1.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 0.0 0.0 -1.0 1.1437146663665771 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.0 0.0 -1.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 -0.2839455306529999 0.0 0.0 -1.0 0.9376671314239502 0.7486661672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 0.0 0.0 -1.0 1.1437146663665771 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 -0.2839455306529999 0.0 0.0 -1.0 0.9376671314239502 0.7486661672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.0 0.0 -1.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 0.0 0.0 -1.0 1.1444804668426514 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 0.0 0.0 -1.0 1.1437146663665771 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.0 0.0 -1.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 0.0 0.0 -1.0 1.1444804668426514 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.0 0.0 -1.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.0 0.0 -1.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 0.0 0.0 -1.0 0.14448046684265137 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.0 0.0 -1.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.0 0.0 -1.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 0.0 0.0 -1.0 0.14448046684265137 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.05072706937789917 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.050727128982544 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 0.0 0.0 -1.0 1.1444804668426514 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.0 0.0 -1.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 -0.2839455306529999 0.0 0.0 -1.0 1.0456355810165405 0.7615771293640137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.050727128982544 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.0 0.0 -1.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.0 0.0 -1.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 -0.2839455306529999 0.0 0.0006408886983990669 -0.999969482421875 0.057448118925094604 0.7593033909797668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 0.0 0.0001831110566854477 -0.999969482421875 1.0407905578613281 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 -0.2839455306529999 0.0 0.0 -1.0 1.0456355810165405 0.7615771293640137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.0 0.0 -1.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 -0.2839455306529999 0.0 0.0006408886983990669 -0.999969482421875 0.057448118925094604 0.7593033909797668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.060566484928131104 0.7582532167434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 0.0 0.0001831110566854477 -0.999969482421875 1.0407905578613281 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.0 0.0 -1.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 -0.2839455306529999 0.0 0.0 -1.0 1.0362075567245483 0.7619456648826599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 0.0 0.0001831110566854477 -0.999969482421875 1.0407905578613281 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 -0.2839455306529999 0.0 -9.155552834272385e-05 -1.0 0.060566484928131104 0.7582532167434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 -0.2839455306529999 0.0 -6.103701889514923e-05 -0.999969482421875 0.06352132558822632 0.757038414478302 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 -0.2839455306529999 0.0 0.0 -1.0 1.0318984985351562 0.76165771484375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 -0.2839455306529999 0.0 0.0 -1.0 1.0362075567245483 0.7619456648826599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 -0.2839455306529999 0.0 -6.103701889514923e-05 -0.999969482421875 0.06352132558822632 0.757038414478302 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06631192564964294 0.7556670308113098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 -0.2839455306529999 0.0 0.0 -1.0 1.027872085571289 0.7610847353935242 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 -0.2839455306529999 0.0 0.0 -1.0 1.0318984985351562 0.76165771484375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06631192564964294 0.7556670308113098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 -0.2839455306529999 0.0 0.0 -1.0 0.06893846392631531 0.7541464567184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 -0.2839455306529999 0.0 0.0 -1.0 1.0241351127624512 0.7602477073669434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 -0.2839455306529999 0.0 0.0 -1.0 1.027872085571289 0.7610847353935242 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 -0.2839455306529999 0.0 0.0 -1.0 0.06893846392631531 0.7541464567184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 -0.2839455306529999 0.0 0.0 -1.0 0.07140150666236877 0.7524835467338562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02069091796875 0.75916588306427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 -0.2839455306529999 0.0 0.0 -1.0 1.0241351127624512 0.7602477073669434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 -0.2839455306529999 0.0 0.0 -1.0 0.07140150666236877 0.7524835467338562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 -0.2839455306529999 0.0 0.0 -1.0 0.07370230555534363 0.7506841421127319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 1.0175414085388184 0.7578567266464233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.02069091796875 0.75916588306427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 -0.2839455306529999 0.0 0.0 -1.0 0.07370230555534363 0.7506841421127319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0146870613098145 0.7563359141349792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 1.0175414085388184 0.7578567266464233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.0 3.0518509447574615e-05 -1.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0778232216835022 0.746696949005127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 0.0 0.0 -1.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0146870613098145 0.7563359141349792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 0.0 0.0 -1.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.0 0.0 -1.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.0 0.0 -1.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0778232216835022 0.746696949005127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 -0.2839455306529999 0.0 0.0 -1.0 0.07964730262756348 0.74451744556427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 1.0098564624786377 0.7527108192443848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 0.0 0.0 -1.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.0 0.0 -1.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 -0.2839455306529999 0.0 0.0 -1.0 0.07964730262756348 0.74451744556427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 -0.2839455306529999 0.0 0.0 -1.0 0.0813169777393341 0.7422186136245728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0078752040863037 0.7506272792816162 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 1.0098564624786377 0.7527108192443848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.0 0.0 -1.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 -0.2839455306529999 0.0 0.0 -1.0 0.0813169777393341 0.7422186136245728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 -0.2839455306529999 0.0 0.0 -1.0 0.08286002278327942 0.7397554516792297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 0.0 0.0 -1.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0078752040863037 0.7506272792816162 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.0 0.0 -1.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 -0.2839455306529999 0.0 0.0 -1.0 0.08286002278327942 0.7397554516792297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.0 0.0 -1.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 0.0 0.0 -1.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.0 0.0 -1.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 0.0 0.0 -1.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.0 0.0 -1.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.0 0.0 -1.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08564883470535278 0.7341939210891724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 -0.2839455306529999 0.0 0.0 -1.0 1.0045299530029297 0.7458109259605408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 0.0 0.0 -1.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08564883470535278 0.7341939210891724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 -0.2839455306529999 0.0 0.0 -1.0 0.08689627051353455 0.7310928106307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 -0.2839455306529999 0.0 0.0 -1.0 1.0031040906906128 0.7430456280708313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 -0.2839455306529999 0.0 0.0 -1.0 1.0045299530029297 0.7458109259605408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 -0.2839455306529999 0.0 0.0 -1.0 0.08689627051353455 0.7310928106307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 -0.2839455306529999 0.0 0.0 -1.0 0.08804729580879211 0.727775514125824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 0.0 0.0 -1.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 -0.2839455306529999 0.0 0.0 -1.0 1.0031040906906128 0.7430456280708313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 0.0 0.0 -1.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.0 0.0 -1.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.0 0.0 -1.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 -0.2839455306529999 0.0 0.0 -1.0 0.08804729580879211 0.727775514125824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.0 0.0 -1.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 0.0 0.0 -1.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.0 0.0 -1.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 -0.2839455306529999 0.0 0.0 -1.0 1.000737190246582 0.7367956042289734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 0.0 0.0 -1.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.0 0.0 -1.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.0 0.0 -1.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 -0.2839455306529999 0.0 0.0 -1.0 0.09006515145301819 0.7204816341400146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 -0.2839455306529999 0.0 0.0 -1.0 0.9997917413711548 0.733305811882019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 -0.2839455306529999 0.0 0.0 -1.0 1.000737190246582 0.7367956042289734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.0 0.0 -1.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 -0.2839455306529999 0.0 0.0 -1.0 0.09006515145301819 0.7204816341400146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.09093481302261353 0.716498613357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 0.0 0.0 -1.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 -0.2839455306529999 0.0 0.0 -1.0 0.9997917413711548 0.733305811882019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.0 0.0 -1.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 0.0 0.0 -1.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.0 0.0 -1.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.0 0.0 -1.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 -0.2839455306529999 0.0 0.0 -1.0 0.09352043271064758 0.6982331871986389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 -0.2839455306529999 0.0 0.0 -1.0 0.09300467371940613 0.7031583786010742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 -0.2839455306529999 0.0 0.0 -1.0 0.09300467371940613 0.7031583786010742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 -0.2839455306529999 0.0 0.0 -1.0 0.09240296483039856 0.7078412771224976 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 -0.2839455306529999 0.0 0.0 -1.0 0.09240296483039856 0.7078412771224976 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 -0.2839455306529999 0.0 0.0 -1.0 0.09171348810195923 0.7122865319252014 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 -0.2839455306529999 0.0 0.0 -1.0 0.09171348810195923 0.7122865319252014 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 0.0 0.0 -1.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.09093481302261353 0.716498613357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 -0.2839455306529999 0.0 0.0 -1.0 0.9983647465705872 0.7255765199661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 0.0 0.0 -1.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.0 0.0 -1.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 0.0 0.0 -1.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 -0.2839455306529999 0.0 0.0 -1.0 0.9983647465705872 0.7255765199661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.0 0.0 -1.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 0.0 0.0 -1.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.0 0.0 -1.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.0 0.0 -1.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9975391626358032 0.7168097496032715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 0.0 0.0 -1.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.0 0.0 -1.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 0.0 0.0 -1.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9975391626358032 0.7168097496032715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.0 0.0 -1.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 0.0 0.0 -1.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.0 0.0 -1.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.0 0.0 -1.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 -0.2839455306529999 0.0 0.0 -1.0 0.9972931146621704 0.7069487571716309 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 0.0 0.0 -1.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.0 0.0 -1.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 0.0 0.0 -1.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 -0.2839455306529999 0.0 0.0 -1.0 0.9972931146621704 0.7069487571716309 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.0 0.0 -1.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 0.0 0.0 -1.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.0 0.0 -1.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 0.0 0.0 -1.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0006707906723022 0.6942631006240845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 0.0 0.0 -1.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 0.0 0.0 -1.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 -0.2839455306529999 0.0 0.0 -1.0 1.0044422149658203 0.692439079284668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0006707906723022 0.6942631006240845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 0.0 0.0 -1.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 0.0 0.0 -1.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 -0.2839455306529999 0.0 0.0 -1.0 1.0044422149658203 0.692439079284668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 0.0 0.0 -1.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 0.0 0.0 -1.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 0.0 0.0 -1.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 -0.2839455306529999 0.0 0.0 -1.0 1.0132920742034912 0.6884256601333618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 0.0 0.0 -1.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 -0.2839455306529999 0.0 0.0 -1.0 1.0183712244033813 0.6861664056777954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 -0.2839455306529999 0.0 0.0 -1.0 1.0132920742034912 0.6884256601333618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 -0.2839455306529999 0.0 0.0 -1.0 1.0238808393478394 0.6836882829666138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 -0.2839455306529999 0.0 0.0 -1.0 1.0183712244033813 0.6861664056777954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 -0.2839455306529999 0.0 0.0 -1.0 1.029810905456543 0.6809518337249756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 -0.2839455306529999 0.0 0.0 -1.0 1.0238808393478394 0.6836882829666138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 -0.2839455306529999 0.0 0.0 -1.0 1.0361446142196655 0.6779175996780396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 -0.2839455306529999 0.0 0.0 -1.0 1.029810905456543 0.6809518337249756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0428584814071655 0.6745481491088867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 -0.2839455306529999 0.0 0.0 -1.0 1.0361446142196655 0.6779175996780396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 0.0 0.0 -1.0 1.0499213933944702 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0428584814071655 0.6745481491088867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0572938919067383 0.6666763424873352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 0.0 0.0 -1.0 1.0499213933944702 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 0.0 0.0 -1.0 1.0499213933944702 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0649290084838867 0.6621288657188416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0572938919067383 0.6666763424873352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 -0.2839455306529999 0.0 0.0 -1.0 1.0704984664916992 0.6584956645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0649290084838867 0.6621288657188416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 -0.2839455306529999 0.0 0.0 -1.0 1.0757272243499756 0.6547515392303467 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 -0.2839455306529999 0.0 0.0 -1.0 1.0704984664916992 0.6584956645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 -0.2839455306529999 0.0 0.0 -1.0 1.0806195735931396 0.6509283781051636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 -0.2839455306529999 0.0 0.0 -1.0 1.0757272243499756 0.6547515392303467 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 -0.2839455306529999 0.0 0.0 -1.0 1.0851824283599854 0.6470544338226318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 -0.2839455306529999 0.0 0.0 -1.0 1.0806195735931396 0.6509283781051636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 -0.2839455306529999 0.0 0.0 -1.0 1.0894246101379395 0.6431540250778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 -0.2839455306529999 0.0 0.0 -1.0 1.0851824283599854 0.6470544338226318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 -0.2839455306529999 0.0 0.0 -1.0 1.0933563709259033 0.6392477750778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 -0.2839455306529999 0.0 0.0 -1.0 1.0894246101379395 0.6431540250778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 -0.2839455306529999 0.0 0.0 -1.0 1.0969890356063843 0.6353528499603271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 -0.2839455306529999 0.0 0.0 -1.0 1.0933563709259033 0.6392477750778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 -0.2839455306529999 0.0 0.0 -1.0 1.1003341674804688 0.6314833760261536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 -0.2839455306529999 0.0 0.0 -1.0 1.0969890356063843 0.6353528499603271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 -0.2839455306529999 0.0 0.0 -1.0 1.1034035682678223 0.6276503801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 -0.2839455306529999 0.0 0.0 -1.0 1.1003341674804688 0.6314833760261536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 -0.2839455306529999 0.0 0.0 -1.0 1.1062092781066895 0.6238624453544617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 -0.2839455306529999 0.0 0.0 -1.0 1.1034035682678223 0.6276503801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 -0.2839455306529999 0.0 0.0 -1.0 1.1087620258331299 0.6201258897781372 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 -0.2839455306529999 0.0 0.0 -1.0 1.1062092781066895 0.6238624453544617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 -0.2839455306529999 0.0 0.0 -1.0 1.1110731363296509 0.616445004940033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 -0.2839455306529999 0.0 0.0 -1.0 1.1087620258331299 0.6201258897781372 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 -0.2839455306529999 0.0 0.0 -1.0 1.1131898164749146 0.6127371788024902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 -0.2839455306529999 0.0 0.0 -1.0 1.1110731363296509 0.616445004940033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 -0.2839455306529999 0.0 0.0 -1.0 1.115155816078186 0.6089204549789429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 -0.2839455306529999 0.0 0.0 -1.0 1.1131898164749146 0.6127371788024902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.116976022720337 0.6049986481666565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 -0.2839455306529999 0.0 0.0 -1.0 1.115155816078186 0.6089204549789429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 -0.2839455306529999 0.0 0.0 -1.0 1.1186549663543701 0.6009750366210938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.116976022720337 0.6049986481666565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 -0.2839455306529999 0.0 0.0 -1.0 1.1201975345611572 0.59685218334198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 -0.2839455306529999 0.0 0.0 -1.0 1.1186549663543701 0.6009750366210938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 -0.2839455306529999 0.0 0.0 -1.0 1.1216081380844116 0.5926323533058167 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 -0.2839455306529999 0.0 0.0 -1.0 1.1201975345611572 0.59685218334198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 0.0 0.0 -1.0 1.1228907108306885 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 -0.2839455306529999 0.0 0.0 -1.0 1.1216081380844116 0.5926323533058167 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 0.0 0.0 -1.0 1.1228907108306885 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 -0.2839455306529999 0.0 0.0 -1.0 0.9996907711029053 0.6184368133544922 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 -0.2839455306529999 0.0 0.0 -1.0 0.9976115226745605 0.5954424738883972 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.0 6.103701889514923e-05 -1.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 0.0 0.0 -1.0 1.1228907108306885 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 -0.2839455306529999 0.0 0.0 -1.0 0.9996907711029053 0.6184368133544922 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 -0.2839455306529999 0.0 0.0 -1.0 1.002036690711975 0.6171183586120605 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 0.0 0.0 -1.0 0.12289077043533325 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 -0.2839455306529999 0.0 0.0 -1.0 0.0020366907119750977 0.6171183586120605 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.004590243101119995 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 0.0 0.0 -1.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 0.0 0.0 -1.0 0.12289077043533325 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.004590243101119995 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 0.0 0.0 -1.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.004590243101119995 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.007352739572525024 0.6142528057098389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 0.0 0.0 -1.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.007352739572525024 0.6142528057098389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.0 0.0 -1.0 0.010325044393539429 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 0.0 0.0 -1.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 0.0 0.0 -1.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.0 0.0 -1.0 0.010325044393539429 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 0.0 0.0 -1.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.0 0.0 -1.0 0.010325044393539429 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 -0.2839455306529999 0.0 0.0 -1.0 0.013507217168807983 0.6110315918922424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 0.0 0.0 -1.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 -0.2839455306529999 0.0 0.0 -1.0 0.013507217168807983 0.6110315918922424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 -0.2839455306529999 0.0 0.0 -1.0 0.016898751258850098 0.6092678904533386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 0.0 0.0 -1.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 -0.2839455306529999 0.0 0.0 -1.0 0.016898751258850098 0.6092678904533386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.0 0.0 -1.0 0.020498305559158325 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 0.0 0.0 -1.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 0.0 0.0 -1.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.0 0.0 -1.0 0.020498305559158325 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 0.0 0.0 -1.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.0 0.0 -1.0 0.020498305559158325 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 -0.2839455306529999 0.0 0.0 -1.0 0.0243033766746521 0.6053946018218994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 0.0 0.0 -1.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 -0.2839455306529999 0.0 0.0 -1.0 0.0243033766746521 0.6053946018218994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 -0.2839455306529999 0.0 0.0 -1.0 0.028309911489486694 0.6032699346542358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 0.0 0.0 -1.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 -0.2839455306529999 0.0 0.0 -1.0 0.028309911489486694 0.6032699346542358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.0 0.0 -1.0 0.032512813806533813 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 0.0 0.0 -1.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 0.0 0.0 -1.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.0 0.0 -1.0 0.032512813806533813 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 0.0 0.0 -1.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.0 0.0 -1.0 0.032512813806533813 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.036905378103256226 0.59861159324646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 0.0 0.0 -1.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.036905378103256226 0.59861159324646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04124736785888672 0.5961276888847351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 0.0 0.0 -1.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04124736785888672 0.5961276888847351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.0 0.0 -1.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 0.0 0.0 -1.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.0 0.0 -1.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.0 0.0 -1.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 -0.2839455306529999 0.0 0.0 -1.0 0.049069106578826904 0.591133713722229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 -0.2839455306529999 0.0 0.0 -1.0 0.049069106578826904 0.591133713722229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.0 0.0 -1.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 -0.2839455306529999 0.0 0.0 -1.0 0.9976453185081482 0.5883469581604004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 -0.2839455306529999 0.0 0.0 -1.0 0.9976115226745605 0.5954424738883972 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 0.0 0.0 -1.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.0 0.0 -1.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 0.0 0.0 -1.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.0 0.0 -1.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 -0.2839455306529999 0.0 0.0 -1.0 0.05574190616607666 0.5862020254135132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 0.0 0.0 -1.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 -0.2839455306529999 0.0 0.0 -1.0 0.05574190616607666 0.5862020254135132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 -0.2839455306529999 0.0 0.0 -1.0 0.05865311622619629 0.5837885141372681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 0.0 0.0 -1.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 -0.2839455306529999 0.0 0.0 -1.0 0.05865311622619629 0.5837885141372681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.0 0.0 -1.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 0.0 0.0 -1.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 0.0 0.0 -1.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.0 0.0 -1.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 0.0 0.0 -1.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.0 0.0 -1.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 -0.2839455306529999 0.0 0.0 -1.0 0.0636448860168457 0.5791078805923462 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 -0.2839455306529999 0.0 0.0 -1.0 0.9977109432220459 0.581652045249939 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 -0.2839455306529999 0.0 0.0 -1.0 0.9976453185081482 0.5883469581604004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 0.0 0.0 -1.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 -0.2839455306529999 0.0 0.0 -1.0 0.0636448860168457 0.5791078805923462 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 -0.2839455306529999 0.0 0.0 -1.0 0.06573435664176941 0.5768525004386902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 0.0 0.0 -1.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 -0.2839455306529999 0.0 0.0 -1.0 0.06573435664176941 0.5768525004386902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.0 0.0 -1.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 0.0 0.0 -1.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 0.0 0.0 -1.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.0 0.0 -1.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 0.0 0.0 -1.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.0 0.0 -1.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 -0.2839455306529999 0.0 0.0 -1.0 0.06912404298782349 0.5725313425064087 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9978078603744507 0.5753602981567383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 -0.2839455306529999 0.0 0.0 -1.0 0.9977109432220459 0.581652045249939 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 0.0 0.0 -1.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 -0.2839455306529999 0.0 0.0 -1.0 0.06912404298782349 0.5725313425064087 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.070433109998703 0.5704699754714966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 0.0 0.0 -1.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.070433109998703 0.5704699754714966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.0 0.0 -1.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 0.0 0.0 -1.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 0.0 0.0 -1.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.0 0.0 -1.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 0.0 0.0 -1.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.0 0.0 -1.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07364055514335632 0.5637936592102051 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 -0.2839455306529999 0.0 0.0 -1.0 0.9979357123374939 0.5694729089736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9978078603744507 0.5753602981567383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 0.0 0.0 -1.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07364055514335632 0.5637936592102051 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.0 0.0 -1.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 0.0 0.0 -1.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 0.0 0.0 -1.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.0 0.0 -1.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 0.0 0.0 -1.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.0 0.0 -1.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07609990239143372 0.5568383932113647 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 -0.2839455306529999 0.0 0.0 -1.0 0.9980939626693726 0.5639892220497131 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 -0.2839455306529999 0.0 0.0 -1.0 0.9979357123374939 0.5694729089736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 0.0 0.0 -1.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07609990239143372 0.5568383932113647 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.0 0.0 -1.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 0.0 0.0 -1.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 0.0 0.0 -1.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.0 0.0 -1.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 0.0 0.0 -1.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.0 0.0 -1.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.0 0.0 -1.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 -0.2839455306529999 0.0 0.0 -1.0 0.9982823729515076 0.5589078664779663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 -0.2839455306529999 0.0 0.0 -1.0 0.9980939626693726 0.5639892220497131 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 0.0 0.0 -1.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.0 0.0 -1.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.0 0.0 -1.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0784434974193573 0.5459051728248596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 -0.2839455306529999 0.0 0.0 -1.0 0.9985008239746094 0.554226279258728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 -0.2839455306529999 0.0 0.0 -1.0 0.9982823729515076 0.5589078664779663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.0784434974193573 0.5459051728248596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.0 0.0 -1.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.0 0.0 -1.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 -0.2839455306529999 0.0 0.0 -1.0 0.9985008239746094 0.554226279258728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.0 0.0 -1.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.0 0.0 -1.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.0 0.0 -1.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.0 0.0 -1.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 -0.2839455306529999 0.0 0.0 -1.0 0.9990274310112 0.5460504293441772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.0 0.0 -1.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 0.0 0.0 -1.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.0 0.0 -1.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 0.0 0.0 -1.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.0 0.0 -1.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07924100756645203 0.5343766212463379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 -0.2839455306529999 0.0 0.0 -1.0 0.9993356466293335 0.5425490736961365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 -0.2839455306529999 0.0 0.0 -1.0 0.9990274310112 0.5460504293441772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.0 0.0 -1.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 0.0 0.0 -1.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07924100756645203 0.5343766212463379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.0 0.0 -1.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 0.0 0.0 -1.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 0.0 0.0 -1.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.0 0.0 -1.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 -0.2839455306529999 0.0 0.0 -1.0 0.9993356466293335 0.5425490736961365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.0 0.0 -1.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 0.0 0.0 -1.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.0 0.0 -1.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.0 0.0 -1.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.0 0.0 -1.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 -0.2839455306529999 0.0 0.0 -1.0 1.000042200088501 0.5367017984390259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.0 0.0 -1.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 0.0 0.0 -1.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 0.0 0.0 -1.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 0.0 0.0 -1.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 -0.2839455306529999 0.0 0.0 -1.0 0.07858288288116455 0.5224087238311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 -0.2839455306529999 0.0 0.0 -1.0 1.0006492137908936 0.532871663570404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 -0.2839455306529999 0.0 0.0 -1.0 1.000042200088501 0.5367017984390259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.0 0.0 -1.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 0.0 0.0 -1.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 -0.2839455306529999 0.0 0.0 -1.0 0.07858288288116455 0.5224087238311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.0 0.0 -1.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 0.0 0.0 -1.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 -0.2839455306529999 0.0 0.0 -1.0 1.0006492137908936 0.532871663570404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.0 0.0 -1.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 0.0 0.0 -1.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 0.0 0.0 -1.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.0 0.0 -1.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 0.0 0.0 -1.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.0 0.0 -1.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.0 0.0 -1.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 0.0 0.0 -1.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.0 0.0 -1.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 -0.2839455306529999 0.0 0.0 -1.0 0.07751825451850891 0.514907956123352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 -0.2839455306529999 0.0 0.0 -1.0 1.002156376838684 0.5255098938941956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 0.0 0.0 -1.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.0 0.0 -1.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 0.0 0.0 -1.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 -0.2839455306529999 0.0 0.0 -1.0 1.002156376838684 0.5255098938941956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.0 0.0 -1.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 0.0 0.0 -1.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 -0.2839455306529999 0.0 0.0 -1.0 0.07751825451850891 0.514907956123352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.0 0.0 -1.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 0.0 0.0 -1.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.0 0.0 -1.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 0.0 0.0 -1.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.0 0.0 -1.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.0 0.0 -1.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 -0.2839455306529999 0.0 0.0 -1.0 1.004052996635437 0.5185349583625793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 0.0 0.0 -1.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.0 0.0 -1.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.0 0.0 -1.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 -0.2839455306529999 0.0 0.0 -1.0 0.07600328326225281 0.5079073905944824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0051469802856445 0.5151885747909546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 -0.2839455306529999 0.0 0.0 -1.0 1.004052996635437 0.5185349583625793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.0 0.0 -1.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 -0.2839455306529999 0.0 0.0 -1.0 0.07600328326225281 0.5079073905944824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.0 0.0 -1.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.0 0.0 -1.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 0.0 0.0 -1.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0051469802856445 0.5151885747909546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.0 0.0 -1.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.0 0.0 -1.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07403913140296936 0.5013856887817383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 0.0 0.0 -1.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.0 0.0 -1.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.0 0.0 -1.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 -0.2839455306529999 0.0 0.0 -1.0 1.0076266527175903 0.5087709426879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 0.0 0.0 -1.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.0 0.0 -1.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07403913140296936 0.5013856887817383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07288837432861328 0.49829840660095215 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 0.0 0.0 -1.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 -0.2839455306529999 0.0 0.0 -1.0 1.0076266527175903 0.5087709426879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.0 0.0 -1.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07288837432861328 0.49829840660095215 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.0 0.0 -1.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 0.0 0.0 -1.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.0 0.0 -1.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 0.0 0.0 -1.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.0 0.0 -1.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.0 0.0 -1.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 -0.2839455306529999 0.0 0.0 -1.0 1.0104960203170776 0.5027124881744385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 0.0 0.0 -1.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.0 0.0 -1.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 0.0 0.0 -1.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.0 0.0 -1.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 -0.2839455306529999 0.0 0.0 -1.0 0.07024794816970825 0.49246126413345337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0120773315429688 0.49981552362442017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 -0.2839455306529999 0.0 0.0 -1.0 1.0104960203170776 0.5027124881744385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.0 0.0 -1.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 0.0 0.0 -1.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 -0.2839455306529999 0.0 0.0 -1.0 0.07024794816970825 0.49246126413345337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.0 0.0 -1.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 0.0 0.0 -1.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0120773315429688 0.49981552362442017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.0 0.0 -1.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 0.0 0.0 -1.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.0 0.0 -1.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 0.0 0.0 -1.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 0.0 0.0 -1.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.0 0.0 -1.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 0.0 0.0 -1.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.0 0.0 -1.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 -0.2839455306529999 0.0 0.0 -1.0 0.06715226173400879 0.48706352710723877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 -0.2839455306529999 0.0 0.0 -1.0 1.016105055809021 0.493499755859375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 0.0 0.0 -1.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 0.0 0.0 -1.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 -0.2839455306529999 0.0 0.0 -1.0 0.06715226173400879 0.48706352710723877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 -0.2839455306529999 0.0 0.0 -1.0 0.06546497344970703 0.4845954179763794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 0.0 0.0 -1.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 -0.2839455306529999 0.0 0.0 -1.0 1.016105055809021 0.493499755859375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 0.0 0.0 -1.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 0.0 0.0 -1.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 -0.2839455306529999 0.0 0.0 -1.0 0.06546497344970703 0.4845954179763794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.0 0.0 -1.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 -0.2839455306529999 0.0 0.0 -1.0 1.0208572149276733 0.48733770847320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 0.0 0.0 -1.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 0.0 0.0 -1.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.0 0.0 -1.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.0 0.0 -1.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06193813681602478 0.4803890585899353 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 -0.2839455306529999 0.0 0.0 -1.0 1.023262858390808 0.48467862606048584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 -0.2839455306529999 0.0 0.0 -1.0 1.0208572149276733 0.48733770847320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06193813681602478 0.4803890585899353 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 -0.2839455306529999 0.0 0.0 -1.0 0.06009626388549805 0.4786478877067566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 0.0 0.0 -1.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 -0.2839455306529999 0.0 0.0 -1.0 1.023262858390808 0.48467862606048584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 0.0 0.0 -1.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 -0.2839455306529999 0.0 0.0 -1.0 0.06009626388549805 0.4786478877067566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 -0.2839455306529999 0.0 0.0 -1.0 0.058200687170028687 0.47714662551879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 -0.2839455306529999 0.0 0.0 -1.0 1.0281380414962769 0.4801962971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 0.0 0.0 -1.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 -0.2839455306529999 0.0 0.0 -1.0 0.058200687170028687 0.47714662551879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 1.030609130859375 0.47836989164352417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 -0.2839455306529999 0.0 0.0 -1.0 1.0281380414962769 0.4801962971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 0.0 0.0 -1.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 -0.2839455306529999 0.0 0.0 -1.0 0.05424368381500244 0.47486114501953125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 0.0 0.0 -1.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 -0.2839455306529999 0.0 3.0518509447574615e-05 -0.999969482421875 1.030609130859375 0.47836989164352417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 -0.2839455306529999 0.0 0.0 -1.0 0.05424368381500244 0.47486114501953125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.052179962396621704 0.4740765690803528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 0.0 0.0 -1.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 -0.2839455306529999 0.0 0.0 -1.0 1.0356225967407227 0.47553956508636475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 0.0 0.0 -1.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.052179962396621704 0.4740765690803528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 -0.2839455306529999 0.0 0.0 -1.0 0.050057947635650635 0.47353076934814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 -0.2839455306529999 0.0 0.0 -1.0 1.0381664037704468 0.4745330810546875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 -0.2839455306529999 0.0 0.0 -1.0 1.0356225967407227 0.47553956508636475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 -0.2839455306529999 0.0 0.0 -1.0 0.050057947635650635 0.47353076934814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.047876596450805664 0.47322434186935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 -0.2839455306529999 0.0 0.0 -1.0 1.0407357215881348 0.4737977385520935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 -0.2839455306529999 0.0 0.0 -1.0 1.0381664037704468 0.4745330810546875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 -0.2839455306529999 0.0 -6.103701889514923e-05 -1.0 0.047876596450805664 0.47322434186935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 -0.2839455306529999 0.0 0.0 -1.0 0.045634716749191284 0.47315794229507446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0433313846588135 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 -0.2839455306529999 0.0 0.0 -1.0 1.0407357215881348 0.4737977385520935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 -0.2839455306529999 0.0 0.0 -1.0 0.045634716749191284 0.47315794229507446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.04333144426345825 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 1.1191487312316895 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.0433313846588135 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 1.1191487312316895 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 0.0 0.0 -1.0 1.1171609163284302 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 0.0 0.0 -1.0 1.1191487312316895 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 0.0 0.0 -1.0 1.1171609163284302 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.0 0.0 -1.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1149934530258179 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 0.0 0.0 -1.0 1.1171609163284302 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.0 0.0 -1.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1149934530258179 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.0 0.0 -1.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 -0.2839455306529999 0.0 0.0 -1.0 0.947985827922821 0.47552597522735596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1149934530258179 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 -0.2839455306529999 0.0 0.0 -1.0 0.947985827922821 0.47552597522735596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.0 0.0 -1.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 0.0 0.0 -1.0 1.1126412153244019 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 0.0 0.0 -0.999969482421875 1.1149934530258179 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.0 0.0 -1.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 0.0 0.0 -1.0 1.1126412153244019 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.0 0.0 -1.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 0.0 0.0 -1.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 0.0 0.0 -1.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.0 0.0 -1.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 0.0 0.0 -1.0 1.1126412153244019 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 0.0 0.0 -1.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.0 0.0 -1.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 -0.2839455306529999 0.0 0.0 -1.0 0.9936280846595764 0.4593122601509094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 0.0 0.0 -1.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 -0.2839455306529999 0.0 0.0 -1.0 0.9935218095779419 0.4587423801422119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 -0.2839455306529999 0.0 0.0 -1.0 0.9936280846595764 0.4593122601509094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 -0.2839455306529999 0.0 0.0 -1.0 0.9934057593345642 0.45809316635131836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 -0.2839455306529999 0.0 0.0 -1.0 0.9935218095779419 0.4587423801422119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 0.0 0.0 -1.0 1.110098123550415 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 0.0 0.0 -1.0 1.1126412153244019 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.0 0.0 -1.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 -0.2839455306529999 0.0 0.0 -1.0 0.9932801127433777 0.4573652744293213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 -0.2839455306529999 0.0 0.0 -1.0 0.9934057593345642 0.45809316635131836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 -0.2839455306529999 0.0 0.0 -1.0 0.9932801127433777 0.4573652744293213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.0 0.0 -1.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 -0.2839455306529999 0.0 0.0 -1.0 0.9930000901222229 0.45567595958709717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 0.0 0.0 -1.0 1.110098123550415 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.0 0.0 -1.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.0 0.0 -1.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 -0.2839455306529999 0.0 0.0 -1.0 0.992845892906189 0.4547160267829895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 -0.2839455306529999 0.0 0.0 -1.0 0.9930000901222229 0.45567595958709717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 -0.2839455306529999 0.0 0.0 -1.0 0.9926822185516357 0.4536803960800171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 -0.2839455306529999 0.0 0.0 -1.0 0.992845892906189 0.4547160267829895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 0.0 0.0 -1.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 -0.2839455306529999 0.0 0.0 -1.0 0.9926822185516357 0.4536803960800171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 0.0 0.0 -1.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.0 0.0 -1.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.0 0.0 -1.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 0.0 0.0 -1.0 1.1073575019836426 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 0.0 0.0 -1.0 1.110098123550415 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.0 0.0 -1.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 -0.2839455306529999 0.0 0.0 -1.0 0.9923274517059326 0.451385498046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 0.0 0.0 -1.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.0 0.0 -1.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 0.0 0.0 -1.0 1.1073575019836426 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.0 0.0 -1.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 -0.2839455306529999 0.0 0.0 -1.0 1.0007305145263672 0.44697535037994385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9921363592147827 0.45012837648391724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 -0.2839455306529999 0.0 0.0 -1.0 0.9923274517059326 0.451385498046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.0 0.0 -1.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9921363592147827 0.45012837648391724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.0 0.0 -1.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.0 0.0 -1.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.0 0.0 -1.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 0.0 0.0 -1.0 0.10735753178596497 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 -0.2839455306529999 0.0 0.0 -1.0 0.0007304549217224121 0.44697535037994385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.0 0.0 -1.0 0.003111541271209717 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 -0.2839455306529999 0.0 0.0 -1.0 0.9914758205413818 0.4458812475204468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 0.0 0.0 -1.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.0 0.0 -1.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 0.0 0.0 -1.0 0.10735753178596497 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.0 0.0 -1.0 0.003111541271209717 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 0.0 0.0 -1.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 -0.2839455306529999 0.0 0.0 -1.0 0.9914758205413818 0.4458812475204468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.0 0.0 -1.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 0.0 0.0 -1.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.0 0.0 -1.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.0 0.0 -1.0 0.003111541271209717 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.0 0.0 -1.0 0.005516260862350464 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 0.0 0.0 -1.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 0.0 0.0 -1.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 0.0 0.0 -1.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.0 0.0 -1.0 0.005516260862350464 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 0.0 0.0 -1.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.0 0.0 -1.0 0.005516260862350464 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 -0.2839455306529999 0.0 0.0 -1.0 0.007945001125335693 0.43590283393859863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 0.0 0.0 -1.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.0 0.0 -1.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 0.0 0.0 -1.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 0.0 0.0 -1.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.0 0.0 -1.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 0.0 0.0 -1.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 -0.2839455306529999 0.0 0.0 -1.0 0.007945001125335693 0.43590283393859863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.0 0.0 -1.0 0.01039820909500122 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 0.0 0.0 -1.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 0.0 0.0 -1.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.0 0.0 -1.0 0.01039820909500122 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 0.0 0.0 -1.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.0 0.0 -1.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.0 0.0 -1.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 -0.2839455306529999 0.0 0.0 -1.0 0.9897835850715637 0.4357222318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 0.0 0.0 -1.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.0 0.0 -1.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 0.0 0.0 -1.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.0 0.0 -1.0 0.01039820909500122 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 -0.2839455306529999 0.0 0.0 -1.0 0.012876123189926147 0.42947977781295776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 0.0 0.0 -1.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 -0.2839455306529999 0.0 0.0 -1.0 0.9897835850715637 0.4357222318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.0 0.0 -1.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 0.0 0.0 -1.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 -0.2839455306529999 0.0 0.0 -1.0 0.012876123189926147 0.42947977781295776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.0 0.0 -1.0 0.01537904143333435 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 0.0 0.0 -1.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 0.0 0.0 -1.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.0 0.0 -1.0 0.01537904143333435 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 0.0 0.0 -1.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.0 0.0 -1.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.0 0.0 -1.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 -0.2839455306529999 0.0 0.0 -1.0 0.989022433757782 0.43149906396865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 0.0 0.0 -1.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.0 0.0 -1.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 0.0 0.0 -1.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.0 0.0 -1.0 0.01537904143333435 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.0 0.0 -1.0 0.017907321453094482 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 0.0 0.0 -1.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 -0.2839455306529999 0.0 0.0 -1.0 0.989022433757782 0.43149906396865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.0 0.0 -1.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 0.0 0.0 -1.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 0.0 0.0 -1.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.0 0.0 -1.0 0.017907321453094482 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 0.0 0.0 -1.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.0 0.0 -1.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.0 0.0 -1.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 0.0 0.0 -1.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.0 0.0 -1.0 0.017907321453094482 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 -0.2839455306529999 0.0 0.0 -1.0 0.02046099305152893 0.42125678062438965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9883145093917847 0.4278113842010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 0.0 0.0 -1.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.0 0.0 -1.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 0.0 0.0 -1.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 -0.2839455306529999 0.0 0.0 -1.0 0.02046099305152893 0.42125678062438965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02304023504257202 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 0.0 0.0 -1.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9883145093917847 0.4278113842010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.0 0.0 -1.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 0.0 0.0 -1.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 0.0 0.0 -1.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02304023504257202 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 0.0 0.0 -1.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.0 0.0 -1.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 0.0 0.0 -1.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.02304023504257202 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.0 0.0 -1.0 0.025646448135375977 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 -0.2839455306529999 0.0 0.0 -1.0 0.9876574277877808 0.4246361255645752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 0.0 0.0 -1.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 0.0 0.0 -1.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.0 0.0 -1.0 0.025646448135375977 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.0 0.0 -1.0 0.025646448135375977 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.028280913829803467 0.41469669342041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9873474836349487 0.42323416471481323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 -0.2839455306529999 0.0 0.0 -1.0 0.9876574277877808 0.4246361255645752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.028280913829803467 0.41469669342041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.0 0.0 -1.0 0.030943751335144043 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 0.0 0.0 -1.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.0 0.0 -1.0 0.030943751335144043 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 0.0 0.0 -1.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.0 0.0 -1.0 0.030943751335144043 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 -0.2839455306529999 0.0 0.0 -1.0 0.033634722232818604 0.41123098134994507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 0.0 0.0 -1.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 -0.2839455306529999 0.0 0.0 -1.0 0.033634722232818604 0.41123098134994507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.0 0.0 -1.0 0.03635364770889282 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 0.0 0.0 -1.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 0.0 0.0 -1.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.0 0.0 -1.0 0.03635364770889282 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 0.0 0.0 -1.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.0 0.0 -1.0 0.03635364770889282 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.0 0.0 -1.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 0.0 0.0 -1.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.0 0.0 -1.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.0 0.0 -1.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 -0.2839455306529999 0.0 0.0 -1.0 0.041874319314956665 0.40737658739089966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 -0.2839455306529999 0.0 0.0 -1.0 0.041874319314956665 0.40737658739089966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.0 0.0 -1.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.0 0.0 -1.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.0 0.0 -1.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.0 0.0 -1.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 0.0 -3.0518509447574615e-05 -1.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.0 0.0 -1.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.0 0.0 -1.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 -0.2839455306529999 0.0 0.0 -1.0 0.05035579204559326 0.40511953830718994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 -0.2839455306529999 0.0 0.0 -1.0 0.05035579204559326 0.40511953830718994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 -0.2839455306529999 0.0 0.0 -1.0 0.05323415994644165 0.40471965074539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 -0.2839455306529999 0.0 -0.00045777764171361923 -0.999969482421875 0.05613693594932556 0.4044952392578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 -0.2839455306529999 0.0 0.0 -1.0 0.05323415994644165 0.40471965074539185 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.2695856988430023 0.7537210583686829 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.2427637279033661 0.8259592056274414 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.2427637279033661 0.8259592056274414 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 1.1574673652648926 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 1.0224628448486328 0.9180190563201904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.9051481485366821 0.8624878525733948 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 1.1574673652648926 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 -0.2839455306529999 0.0 0.0 -1.0 0.9051481485366821 0.8624878525733948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.0 0.0 -1.0 1.0517487525939941 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.0 0.0 -1.0 0.051748692989349365 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 0.0 0.0 -1.0 0.09213393926620483 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 0.0 0.0 -1.0 1.0921339988708496 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.0 0.0 -1.0 1.0517487525939941 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9581927061080933 0.48435938358306885 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 0.0 0.0 -1.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 0.0 0.0 -1.0 0.09213393926620483 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 1.000122308731079 0.4517623782157898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 0.0 0.0 -1.0 1.0921339988708496 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.9581927061080933 0.48435938358306885 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 0.0 0.0 -0.999969482421875 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 -0.2839455306529999 0.0 0.0 -1.0 0.0974959135055542 0.39517903327941895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 -0.9951170086860657 -0.09848322719335556 -0.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 -0.9917600154876709 -0.1280556619167328 -0.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 -0.9951170086860657 -0.09848322719335556 -0.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.18597979843616486 -0.982543408870697 -0.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.21970275044441223 -0.9755546450614929 -0.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.18597979843616486 -0.982543408870697 -0.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.7109591960906982 0.7032074928283691 -0.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 0.21605446934700012 0.765251636505127 0.6436964273452759 -0.0 0.5171929597854614 0.30614006519317627 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.7109591960906982 0.7032074928283691 -0.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.7399212718009949 0.6726584434509277 -0.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 0.21605446934700012 0.7799615263938904 0.6258125305175781 -0.0 0.49670082330703735 0.30241620540618896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.7399212718009949 0.6726584434509277 -0.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 -0.24948881566524506 -0.9683523178100586 -0.0 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 -0.21604052186012268 -0.9763786792755127 -0.0 1.4758096933364868 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 -0.24951933324337006 -0.9683523178100586 -0.0 1.473060965538025 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 -0.2839455306529999 -0.7314981818199158 0.6818140149116516 -0.0 0.9874353408813477 0.5059763193130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 0.21605446934700012 -0.6860560774803162 0.7275307178497314 -0.0 0.5944331288337708 0.3158789873123169 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 0.21605446934700012 -0.7314981818199158 0.6818140149116516 -0.0 0.5965896844863892 0.32174062728881836 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 -0.2839455306529999 0.9620655179023743 0.27271339297294617 -0.0 0.027515262365341187 0.5092605352401733 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.9760735034942627 0.21732230484485626 -0.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 0.21605446934700012 0.9620655179023743 0.27271339297294617 -0.0 0.43983423709869385 0.3513116240501404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 -0.2839455306529999 -0.634144127368927 0.773186445236206 -0.0 1.0120773315429688 0.49981552362442017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 -0.5924558043479919 0.8055665493011475 -0.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 0.21605446934700012 -0.634144127368927 0.773186445236206 -0.0 0.5680505633354187 0.30774790048599243 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 -0.2839455306529999 0.921811580657959 0.3875850737094879 -0.0 0.00831332802772522 0.6057209968566895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.940336287021637 0.3401898145675659 -0.0 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 0.21605446934700012 0.921811580657959 0.3875850737094879 -0.0 0.4628440737724304 0.44795089960098267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 -0.9320352673530579 -0.36234626173973083 -0.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 -0.9059419631958008 -0.42335277795791626 -0.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 -0.9320352673530579 -0.36234626173973083 -0.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.9438154101371765 0.33039337396621704 -0.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 0.21605446934700012 0.9620655179023743 0.27271339297294617 -0.0 0.43983423709869385 0.3513116240501404 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.9438154101371765 0.33039337396621704 -0.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 -0.2839455306529999 -0.8451185822486877 0.5345317125320435 -0.0 0.9299417734146118 0.6005876064300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 0.21605446934700012 -0.8147831559181213 0.5797296166419983 -0.0 0.5370199084281921 0.4463580846786499 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 0.21605446934700012 -0.8451185822486877 0.5345317125320435 -0.0 0.5380769968032837 0.45001834630966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.15292824804782867 -0.9882198572158813 -0.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.18597979843616486 -0.982543408870697 -0.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.15292824804782867 -0.9882198572158813 -0.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 -0.9742423892021179 -0.22537919878959656 -0.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 -0.9611499309539795 -0.2759788930416107 -0.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 -0.9742423892021179 -0.22537919878959656 -0.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.9967039823532104 0.08105716109275818 -0.0 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.9978331923484802 0.06543168425559998 -0.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.9967039823532104 0.08105716109275818 -0.0 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 -0.21604052186012268 -0.9763786792755127 -0.0 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 -0.1830805391073227 -0.983092725276947 -0.0 1.4786269664764404 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 -0.21604052186012268 -0.9763786792755127 -0.0 1.4758096933364868 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 -0.982329785823822 -0.18707846105098724 -0.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 -0.9673146605491638 -0.2534867525100708 -0.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 -0.982329785823822 -0.18707846105098724 -0.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 -0.2839455306529999 0.6484572887420654 0.7612231969833374 -0.0 0.04757365584373474 0.48960989713668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.7109591960906982 0.7032074928283691 -0.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 0.21605446934700012 0.6484572887420654 0.7612231969833374 -0.0 0.5245062708854675 0.2952185273170471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.9002349972724915 0.4353770613670349 -0.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 0.21605446934700012 0.921811580657959 0.3875850737094879 -0.0 0.4628440737724304 0.44795089960098267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.9002349972724915 0.4353770613670349 -0.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 -0.2839455306529999 -0.6860560774803162 0.7275307178497314 -0.0 0.989815354347229 0.5009863376617432 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 0.21605446934700012 -0.6860560774803162 0.7275307178497314 -0.0 0.5944331288337708 0.3158789873123169 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 -0.2839455306529999 0.9208654761314392 0.3898129165172577 -0.0 0.02493041753768921 0.4960223436355591 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.9438154101371765 0.33039337396621704 -0.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 0.21605446934700012 0.9208654761314392 0.3898129165172577 -0.0 0.44169366359710693 0.33748435974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 -0.2839455306529999 -0.8147831559181213 0.5797296166419983 -0.0 0.9313363432884216 0.5973168015480042 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 0.21605446934700012 -0.7824946045875549 0.6226081252098083 -0.0 0.5358461737632751 0.44278061389923096 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 0.21605446934700012 -0.8147831559181213 0.5797296166419983 -0.0 0.5370199084281921 0.4463580846786499 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.12060914933681488 -0.9926755428314209 -0.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.15292824804782867 -0.9882198572158813 -0.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.12060914933681488 -0.9926755428314209 -0.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 -0.2839455306529999 -0.9562364816665649 0.2925504446029663 -0.0 0.9439747929573059 0.4986279010772705 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 0.21605446934700012 -0.9508346915245056 0.3096713125705719 -0.0 0.5337579846382141 0.33563095331192017 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 0.21605446934700012 -0.9562364816665649 0.2925504446029663 -0.0 0.5344954133033752 0.34105902910232544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 -0.2839455306529999 0.6976531147956848 0.7163915038108826 -0.0 0.06715226173400879 0.48706352710723877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.7399212718009949 0.6726584434509277 -0.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 0.21605446934700012 0.6976531147956848 0.7163915038108826 -0.0 0.5000284910202026 0.29620879888534546 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 -0.1830805391073227 -0.983092725276947 -0.0 1.4786269664764404 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 -0.1507004052400589 -0.9885555505752563 -0.0 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 0.21605445444583893 -0.1507004052400589 -0.9885555505752563 -0.0 1.4815094470977783 0.3179537057876587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 -0.5924558043479919 0.8055665493011475 -0.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 0.21605446934700012 -0.5498520135879517 0.8352305889129639 -0.0 0.5635403990745544 0.3006412386894226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 -0.5924558043479919 0.8055665493011475 -0.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 -0.9917600154876709 -0.1280556619167328 -0.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 -0.9870906472206116 -0.15994751453399658 -0.0 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 -0.9917600154876709 -0.1280556619167328 -0.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 -0.2839455306529999 0.5781121253967285 0.8159428834915161 -0.0 0.044294536113739014 0.48550617694854736 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 0.21605446934700012 0.6484572887420654 0.7612231969833374 -0.0 0.5245062708854675 0.2952185273170471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 0.21605446934700012 0.5781121253967285 0.8159428834915161 -0.0 0.5285190939903259 0.2908620238304138 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.16553239524364471 0.9861751198768616 -0.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 0.21605446934700012 0.16553239524364471 0.9861751198768616 -0.0 0.5344954133033752 0.34105902910232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.16553239524364471 0.9861751198768616 -0.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 0.21605446934700012 -0.5775933265686035 0.8163090944290161 -0.0 0.5895469188690186 0.30543601512908936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 -0.2839455306529999 -0.9508346915245056 0.3096713125705719 -0.0 0.9450085163116455 0.49344611167907715 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 0.21605446934700012 -0.938657820224762 0.34482863545417786 -0.0 0.5329328179359436 0.33046531677246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 0.21605446934700012 -0.9508346915245056 0.3096713125705719 -0.0 0.5337579846382141 0.33563095331192017 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.08911404758691788 -0.9960020780563354 -0.0 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.12060914933681488 -0.9926755428314209 -0.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.08911404758691788 -0.9960020780563354 -0.0 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 -0.2839455306529999 0.6505020260810852 0.7594836354255676 -0.0 0.06546497344970703 0.4845954179763794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 0.21605446934700012 0.6976531147956848 0.7163915038108826 -0.0 0.5000284910202026 0.29620879888534546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 0.21605446934700012 0.6505020260810852 0.7594836354255676 -0.0 0.5019184947013855 0.2933226227760315 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 -0.2839455306529999 0.8754844665527344 0.4831995666027069 -0.0 0.006594359874725342 0.5991576910018921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.9002349972724915 0.4353770613670349 -0.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 0.21605446934700012 0.8754844665527344 0.4831995666027069 -0.0 0.4642685651779175 0.4411802887916565 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 -0.1507004052400589 -0.9885555505752563 -0.0 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 0.21605445444583893 -0.1189611479640007 -0.9928891658782959 -0.0 1.4844553470611572 0.31715285778045654 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 0.21605445444583893 -0.1507004052400589 -0.9885555505752563 -0.0 1.4815094470977783 0.3179537057876587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 -0.2839455306529999 -0.5498520135879517 0.8352305889129639 -0.0 1.016105055809021 0.493499755859375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 -0.5103610157966614 0.8599200248718262 -0.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 0.21605446934700012 -0.5498520135879517 0.8352305889129639 -0.0 0.5635403990745544 0.3006412386894226 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 -0.2839455306529999 -0.7824946045875549 0.6226081252098083 -0.0 0.9328294992446899 0.5941532850265503 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 0.21605446934700012 -0.748680055141449 0.6629230380058289 -0.0 0.5345537662506104 0.43928706645965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 0.21605446934700012 -0.7824946045875549 0.6226081252098083 -0.0 0.5358461737632751 0.44278061389923096 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.8929105401039124 0.4501785337924957 -0.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 0.21605446934700012 0.9208654761314392 0.3898129165172577 -0.0 0.44169366359710693 0.33748435974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.8929105401039124 0.4502090513706207 -0.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 -0.2839455306529999 -0.1189611479640007 -0.9928891658782959 -0.0 0.9876875281333923 0.4809969663619995 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 -0.08798485994338989 -0.9960936307907104 -0.0 1.4874608516693115 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 0.21605445444583893 -0.1189611479640007 -0.9928891658782959 -0.0 1.4844553470611572 0.31715285778045654 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 -0.9611499309539795 -0.2759788930416107 -0.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 -0.9447309970855713 -0.32776880264282227 -0.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 -0.9611499309539795 -0.2759788930416107 -0.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.5009002685546875 0.8654744029045105 -0.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 0.21605446934700012 0.5781121253967285 0.8159428834915161 -0.0 0.5285190939903259 0.2908620238304138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.5009002685546875 0.8654744029045105 -0.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.9950864911079407 0.09869685769081116 -0.0 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.9967039823532104 0.08105716109275818 -0.0 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.9950864911079407 0.09869685769081116 -0.0 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 -0.2839455306529999 0.8476210832595825 0.5305337905883789 -0.0 0.005618959665298462 0.5960554480552673 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 0.21605446934700012 0.8754844665527344 0.4831995666027069 -0.0 0.4642685651779175 0.4411802887916565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 0.21605446934700012 0.8476210832595825 0.5305337905883789 -0.0 0.4651119112968445 0.4379647970199585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 -0.9059419631958008 -0.42335277795791626 -0.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 -0.8745384216308594 -0.4849391281604767 -0.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 -0.9059419631958008 -0.42335277795791626 -0.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 -0.2839455306529999 -0.938657820224762 0.34482863545417786 -0.0 0.946087121963501 0.488539457321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 0.21605446934700012 -0.9241004586219788 0.3820917308330536 -0.0 0.5320184826850891 0.325559139251709 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 0.21605446934700012 -0.938657820224762 0.34482863545417786 -0.0 0.5329328179359436 0.33046531677246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 -0.2839455306529999 -0.748680055141449 0.6629230380058289 -0.0 0.9344223737716675 0.5910961627960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 0.21605446934700012 -0.713675320148468 0.7004303336143494 -0.0 0.5331403017044067 0.4358789324760437 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 0.21605446934700012 -0.748680055141449 0.6629230380058289 -0.0 0.5345537662506104 0.43928706645965576 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.05850398167967796 -0.9982604384422302 -0.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.08911404758691788 -0.9960020780563354 -0.0 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.05850398167967796 -0.9982604384422302 -0.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.5980712175369263 0.8014160394668579 -0.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 0.21605446934700012 0.6505020260810852 0.7594836354255676 -0.0 0.5019184947013855 0.2933226227760315 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.5980712175369263 0.8014160394668579 -0.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 -0.08798485994338989 -0.9960936307907104 -0.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 -0.05783257633447647 -0.9983214735984802 -0.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 -0.08798485994338989 -0.9960936307907104 -0.0 0.48746082186698914 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 -0.2839455306529999 -0.5775933265686035 0.8163090944290161 -0.0 0.9947965145111084 0.4923076033592224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 0.21605446934700012 -0.5148167610168457 0.8572649359703064 -0.0 0.586810290813446 0.30086058378219604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 0.21605446934700012 -0.5775933265686035 0.8163090944290161 -0.0 0.5895469188690186 0.30543601512908936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 -0.5103610157966614 0.8599200248718262 -0.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 0.21605446934700012 -0.4681234061717987 0.8836328983306885 -0.0 0.5579749345779419 0.29369932413101196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 -0.5103610157966614 0.8599200248718262 -0.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 -0.2839455306529999 0.8597369194030762 0.5107272267341614 -0.0 0.021708518266677856 0.4841575026512146 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.8929105401039124 0.4502090513706207 -0.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 0.21605446934700012 0.8597369194030762 0.5107272267341614 -0.0 0.44448772072792053 0.3248738646507263 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.8167668581008911 0.5769218802452087 -0.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 0.21605446934700012 0.8476210832595825 0.5305337905883789 -0.0 0.4651119112968445 0.4379647970199585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.8167668581008911 0.5769218802452087 -0.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 -0.2839455306529999 -0.5148167610168457 0.8572649359703064 -0.0 0.9974039793014526 0.4886128902435303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 0.21605446934700012 -0.44703513383865356 0.8944975137710571 -0.0 0.5838744640350342 0.2967216968536377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 0.21605446934700012 -0.5148167610168457 0.8572649359703064 -0.0 0.586810290813446 0.30086058378219604 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 -0.2839455306529999 -0.9241004586219788 0.3820917308330536 -0.0 0.9472108483314514 0.48390400409698486 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 -0.9068269729614258 0.4214606285095215 -0.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 0.21605446934700012 -0.9241004586219788 0.3820917308330536 -0.0 0.5320184826850891 0.325559139251709 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 -0.9673146605491638 -0.2534867525100708 -0.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 -0.9472029805183411 -0.32053589820861816 -0.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 -0.9673146605491638 -0.2534867525100708 -0.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 -0.2839455306529999 -0.713675320148468 0.7004303336143494 -0.0 0.9361163377761841 0.5881446599960327 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 0.21605446934700012 -0.6779381632804871 0.7350993156433105 -0.0 0.5316035151481628 0.43255800008773804 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 0.21605446934700012 -0.713675320148468 0.7004303336143494 -0.0 0.5331403017044067 0.4358789324760437 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.028839990496635437 -0.99957275390625 -0.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.05850398167967796 -0.9982604384422302 -0.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.028809472918510437 -0.99957275390625 -0.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 -0.05783257633447647 -0.9983214735984802 -0.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 0.21605445444583893 -0.02850428782403469 -0.99957275390625 -0.0 0.4936390817165375 0.31591135263442993 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 -0.05783257633447647 -0.9983214735984802 -0.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 -0.9870906472206116 -0.15994751453399658 -0.0 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 -0.9809259176254272 -0.19437238574028015 -0.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 -0.9870906472206116 -0.15994751453399658 -0.0 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 -0.2839455306529999 0.41840875148773193 0.9082308411598206 -0.0 0.03740385174751282 0.4792447090148926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.5009002685546875 0.8654744029045105 -0.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 0.21605446934700012 0.41840875148773193 0.9082308411598206 -0.0 0.537212610244751 0.28437894582748413 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.8213446736335754 0.5703604221343994 -0.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 0.21605446934700012 0.8597369194030762 0.5107272267341614 -0.0 0.44448772072792053 0.3248738646507263 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.8213446736335754 0.5703604221343994 -0.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 -0.2839455306529999 0.5419476628303528 0.8403881788253784 -0.0 0.06193813681602478 0.4803890585899353 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.5980712175369263 0.8014160394668579 -0.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 0.21605446934700012 0.5419476628303528 0.8403881788253784 -0.0 0.5060164332389832 0.2883031964302063 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 -0.2839455306529999 -0.02850428782403469 -0.99957275390625 -0.0 0.9799787998199463 0.4796203374862671 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 0.21605445444583893 6.103701889514923e-05 -1.0 -0.0 0.49680399894714355 0.3158932328224182 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 0.21605445444583893 -0.02850428782403469 -0.99957275390625 -0.0 0.4936390817165375 0.31591135263442993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 -0.2839455306529999 -0.44703513383865356 0.8944975137710571 -0.0 1.000093698501587 0.4853445887565613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 0.21605446934700012 -0.3751335144042969 0.9269387125968933 -0.0 0.5807379484176636 0.2930253744125366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 0.21605446934700012 -0.44703513383865356 0.8944975137710571 -0.0 0.5838744640350342 0.2967216968536377 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 -0.9447309970855713 -0.32776880264282227 -0.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 -0.9248634576797485 -0.3802911341190338 -0.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 -0.9447309970855713 -0.32776880264282227 -0.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 -0.2839455306529999 -0.4681234061717987 0.8836328983306885 -0.0 1.0208572149276733 0.48733770847320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 0.21605446934700012 -0.42313912510871887 0.9060335159301758 -0.0 0.5550726652145386 0.2907138466835022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 0.21605446934700012 -0.4681234061717987 0.8836328983306885 -0.0 0.5579749345779419 0.29369932413101196 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 -0.2839455306529999 6.103701889514923e-05 -1.0 -0.0 0.9773244857788086 0.4794541597366333 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.028809472918510437 -0.99957275390625 -0.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 0.21605445444583893 6.103701889514923e-05 -1.0 -0.0 0.49680399894714355 0.3158932328224182 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 -0.2839455306529999 0.7831049561500549 0.6218451261520386 -0.0 0.003436654806137085 0.5902106761932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.8167668581008911 0.5769218802452087 -0.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 0.21605446934700012 0.7831049561500549 0.6218451261520386 -0.0 0.46706393361091614 0.4318809509277344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889234304428101 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772617816925049 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.4844118356704712 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 -0.2839455306529999 -0.6779381632804871 0.7350993156433105 -0.0 0.9379128217697144 0.5852980613708496 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 0.21605446934700012 -0.6418347954750061 0.7668386101722717 -0.0 0.5299412608146667 0.42932629585266113 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 0.21605446934700012 -0.6779381632804871 0.7350993156433105 -0.0 0.5316035151481628 0.43255800008773804 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 -0.2839455306529999 0.3327127993106842 0.9429914355278015 -0.0 1.0337873697280884 0.47707217931747437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 0.21605446934700012 0.41840875148773193 0.9082308411598206 -0.0 0.537212610244751 0.28437894582748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 0.21605446934700012 0.3327127993106842 0.9429914355278015 -0.0 0.5418664813041687 0.2822644114494324 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.9282204508781433 -0.3719290792942047 -0.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.9363078474998474 -0.35114598274230957 -0.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.9282204508781433 -0.3719290792942047 -0.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 -0.2839455306529999 0.4827722907066345 0.8757286071777344 -0.0 0.06009626388549805 0.4786478877067566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 0.21605446934700012 0.5419476628303528 0.8403881788253784 -0.0 0.5060164332389832 0.2883031964302063 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 0.21605446934700012 0.4827722907066345 0.8757286071777344 -0.0 0.5082241296768188 0.2861729860305786 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.978659987449646 0.7900841236114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.4844118356704712 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.4912264943122864 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 -0.2839455306529999 -0.3751335144042969 0.9269387125968933 -0.0 1.0028687715530396 0.48250114917755127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 0.21605446934700012 -0.3003937005996704 0.9537949562072754 -0.0 0.5774003267288208 0.2897791862487793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 0.21605446934700012 -0.3751335144042969 0.9269387125968933 -0.0 0.5807379484176636 0.2930253744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 -0.9068269729614258 0.4214606285095215 -0.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 0.21605446934700012 -0.886410117149353 0.46284371614456177 -0.0 0.5299165844917297 0.3165135383605957 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 -0.9068269729614258 0.4214606285095215 -0.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 -0.2839455306529999 -0.42313912510871887 0.9060335159301758 -0.0 1.023262858390808 0.48467862606048584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 -0.37565234303474426 0.9267250299453735 -0.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 0.21605446934700012 -0.42313912510871887 0.9060335159301758 -0.0 0.5550726652145386 0.2907138466835022 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.4912264943122864 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 -0.2839455306529999 0.7468489408493042 0.6649677753448486 -0.0 0.0022296011447906494 0.5874682068824768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 0.21605446934700012 0.7831049561500549 0.6218451261520386 -0.0 0.46706393361091614 0.4318809509277344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 0.21605446934700012 0.7468489408493042 0.6649372577667236 -0.0 0.46817395091056824 0.4290156364440918 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 1.4704526662826538 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772617816925049 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 -0.2839455306529999 -0.6418042778968811 0.7668386101722717 -0.0 0.9398130178451538 0.5825554728507996 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 -0.6056703329086304 0.7957090735435486 -0.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 0.21605446934700012 -0.6418347954750061 0.7668386101722717 -0.0 0.5299412608146667 0.42932629585266113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 -0.2839455306529999 0.2460707426071167 0.9692373275756836 -0.0 1.030053973197937 0.47553038597106934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 0.21605446934700012 0.3327127993106842 0.9429914355278015 -0.0 0.5418664813041687 0.2822644114494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 0.21605446934700012 0.2460707426071167 0.9692373275756836 -0.0 0.5467023253440857 0.2809107303619385 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 -0.2839455306529999 0.7780693769454956 0.6281319856643677 -0.0 0.01784294843673706 0.4736138582229614 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.8213446736335754 0.5703604221343994 -0.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 0.21605446934700012 0.7780693769454956 0.6281319856643677 -0.0 0.4482648968696594 0.3134663701057434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.9928891658782959 0.1188085600733757 -0.0 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.9950864911079407 0.09869685769081116 -0.0 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.9928891658782959 0.1188085600733757 -0.0 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 -0.2839455306529999 -0.3003937005996704 0.9537949562072754 -0.0 1.005732536315918 0.48008131980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 0.21605446934700012 -0.22412793338298798 0.9745475649833679 -0.0 0.5738626718521118 0.28699201345443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 0.21605446934700012 -0.3003937005996704 0.9537949562072754 -0.0 0.5774003267288208 0.2897791862487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 -0.2839455306529999 -0.886410117149353 0.46284371614456177 -0.0 0.9495965242385864 0.47543054819107056 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 0.21605446934700012 -0.8624531030654907 0.5060579180717468 -0.0 0.5287265181541443 0.3123684525489807 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 0.21605446934700012 -0.886410117149353 0.46284371614456177 -0.0 0.5299165844917297 0.3165135383605957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 -0.2839455306529999 0.4213385283946991 0.9068880081176758 -0.0 0.058200687170028687 0.47714662551879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 0.21605446934700012 0.4827722907066345 0.8757286071777344 -0.0 0.5082241296768188 0.2861729860305786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 0.21605446934700012 0.4213385283946991 0.9068880081176758 -0.0 0.5105367302894592 0.2842988967895508 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.7084261775016785 0.7057710289955139 -0.0 0.0009450018405914307 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 0.21605446934700012 0.7468489408493042 0.6649372577667236 -0.0 0.46817395091056824 0.4290156364440918 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.7084261775016785 0.7057710289955139 -0.0 0.4693742096424103 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 -0.2839455306529999 -0.8624531030654907 0.5060579180717468 -0.0 0.9508596658706665 0.4715844988822937 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 -0.8345591425895691 0.5508896112442017 -0.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 0.21605446934700012 -0.8624531030654907 0.5060579180717468 -0.0 0.5287265181541443 0.3123684525489807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 -0.37565234303474426 0.9267250299453735 -0.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 0.21605446934700012 -0.3258461356163025 0.9454023838043213 -0.0 0.5490454435348511 0.2857193946838379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 -0.37565234303474426 0.9267250299453735 -0.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 0.00985342264175415 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 0.4704526364803314 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 -0.9809259176254272 -0.19437238574028015 -0.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 -0.9728385210037231 -0.23145237565040588 -0.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 -0.9809259176254272 -0.19437238574028015 -0.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.16067995131015778 0.9869990944862366 -0.0 1.026201844215393 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 0.21605446934700012 0.2460707426071167 0.9692373275756836 -0.0 0.5467023253440857 0.2809107303619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.16067995131015778 0.9869990944862366 -0.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 -0.8745384216308594 -0.4849391281604767 -0.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 -0.8377330899238586 -0.5460371971130371 -0.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 -0.8745384216308594 -0.4849391281604767 -0.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 -0.6056703329086304 0.7957090735435486 -0.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 0.21605446934700012 -0.5684072375297546 0.8227179646492004 -0.0 0.5262308716773987 0.42314088344573975 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 -0.6056703329086304 0.7957090735435486 -0.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.7320474982261658 0.6812036633491516 -0.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 0.21605446934700012 0.7780693769454956 0.6281319856643677 -0.0 0.4482648968696594 0.3134663701057434 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.7320474982261658 0.6812036633491516 -0.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.3585619628429413 0.9334696531295776 -0.0 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 0.21605446934700012 0.4213385283946991 0.9068880081176758 -0.0 0.5105367302894592 0.2842988967895508 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.3585619628429413 0.9334696531295776 -0.0 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 -0.2839455306529999 -0.22412793338298798 0.9745475649833679 -0.0 1.0086880922317505 0.47808516025543213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 0.21605446934700012 -0.14783166348934174 0.9889827966690063 -0.0 0.5701271891593933 0.28467416763305664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 0.21605446934700012 -0.22412793338298798 0.9745475649833679 -0.0 0.5738626718521118 0.28699201345443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 -0.2839455306529999 -0.3258461356163025 0.9454023838043213 -0.0 1.0281380414962769 0.4801962971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 0.21605446934700012 -0.27402570843696594 0.9616992473602295 -0.0 0.5459287166595459 0.2837129235267639 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 0.21605446934700012 -0.3258461356163025 0.9454023838043213 -0.0 0.5490454435348511 0.2857193946838379 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019346296787261963 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.9102755784988403 -0.4139530658721924 -0.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.9282204508781433 -0.3719290792942047 -0.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.9102755784988403 -0.4139530658721924 -0.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 -0.9248634576797485 -0.3802911341190338 -0.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 -0.9013641476631165 -0.43299660086631775 -0.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 -0.9248634576797485 -0.3802911341190338 -0.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 -0.9472029805183411 -0.32053589820861816 -0.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 -0.921933650970459 -0.3872798979282379 -0.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 -0.9472029805183411 -0.32053589820861816 -0.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 -0.2839455306529999 0.07840204983949661 0.9969176054000854 -0.0 1.0222300291061401 0.4743214249610901 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.16067995131015778 0.9869990944862366 -0.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 0.21605446934700012 0.07840204983949661 0.9969176054000854 -0.0 0.5568340420722961 0.28051841259002686 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 -0.2839455306529999 0.6682027578353882 0.7439497113227844 -0.0 0.999582827091217 0.5823426246643066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.7084261775016785 0.7057710289955139 -0.0 1.469374179840088 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 0.21605446934700012 0.6682027578353882 0.7439497113227844 -0.0 1.4706650972366333 0.42364639043807983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 -0.2839455306529999 -0.14783166348934174 0.9889827966690063 -0.0 1.0117387771606445 0.47651296854019165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 0.21605446934700012 -0.07284767925739288 0.9973143935203552 -0.0 0.5661978721618652 0.28283756971359253 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 0.21605446934700012 -0.14783166348934174 0.9889827966690063 -0.0 0.5701271891593933 0.28467416763305664 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 -0.8345591425895691 0.5508896112442017 -0.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 0.21605446934700012 -0.8022705912590027 0.5969420671463013 -0.0 0.5260624289512634 0.3048214912414551 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 -0.8345591425895691 0.5508896112442017 -0.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02812016010284424 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 -0.2839455306529999 0.2953581213951111 0.9553819298744202 -0.0 0.05424368381500244 0.47486114501953125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.3585619628429413 0.9334696531295776 -0.0 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 0.21605446934700012 0.2953581213951111 0.9553819298744202 -0.0 0.5154720544815063 0.28133004903793335 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 -0.2839455306529999 0.6266365647315979 0.7792901396751404 -0.0 0.9981430768966675 0.5799591541290283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 0.21605446934700012 0.6682027578353882 0.7439497113227844 -0.0 1.4706650972366333 0.42364639043807983 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 0.21605446934700012 0.6266365647315979 0.7792901396751404 -0.0 1.472046971321106 0.421146035194397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 -0.2839455306529999 -0.27402570843696594 0.9616992473602295 -0.0 1.030609130859375 0.47836989164352417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 -0.22058779001235962 0.9753410220146179 -0.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 0.21605446934700012 -0.27402570843696594 0.9616992473602295 -0.0 0.5459287166595459 0.2837129235267639 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 -0.2839455306529999 -0.5684072375297546 0.8227179646492004 -0.0 0.9439307451248169 0.5773794651031494 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 0.21605446934700012 -0.5277870893478394 0.8493301272392273 -0.0 0.5242090225219727 0.42025721073150635 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 0.21605446934700012 -0.5684072375297546 0.8227179646492004 -0.0 0.5262308716773987 0.42314088344573975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.00119022186845541 0.999969482421875 -0.0 1.018137812614441 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 0.21605446934700012 0.07840204983949661 0.9969176054000854 -0.0 0.5568340420722961 0.28051841259002686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.00119022186845541 0.999969482421875 -0.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 -0.2839455306529999 0.6852015852928162 0.7283242344856262 -0.0 0.013366401195526123 0.464388370513916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.7320474982261658 0.6812036633491516 -0.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 0.21605446934700012 0.6852015852928162 0.7283242344856262 -0.0 0.45302438735961914 0.30331945419311523 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 -0.2839455306529999 -0.07284767925739288 0.9973143935203552 -0.0 1.0148876905441284 0.4753662943840027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.00119022186845541 0.999969482421875 -0.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 0.21605446934700012 -0.07284767925739288 0.9973143935203552 -0.0 0.5661978721618652 0.28283756971359253 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 -0.2839455306529999 -0.8022705912590027 0.5969420671463013 -0.0 0.9535298347473145 0.46465450525283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 0.21605446934700012 -0.765282154083252 0.6436659097671509 -0.0 0.5245863199234009 0.30141550302505493 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 0.21605446934700012 -0.8022705912590027 0.5969420671463013 -0.0 0.5260624289512634 0.3048214912414551 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.03615725040435791 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 -0.2839455306529999 0.23261207342147827 0.9725638628005981 -0.0 0.052179962396621704 0.4740765690803528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 0.21605446934700012 0.2953581213951111 0.9553819298744202 -0.0 0.5154720544815063 0.28133004903793335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 0.21605446934700012 0.23261207342147827 0.9725638628005981 -0.0 0.5180913805961609 0.28024226427078247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 -0.2839455306529999 0.5824762582778931 0.8127994537353516 -0.0 0.9966254830360413 0.5776949524879456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 0.21605446934700012 0.6266365647315979 0.7792901396751404 -0.0 1.472046971321106 0.421146035194397 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 0.21605446934700012 0.5824762582778931 0.8128299713134766 -0.0 1.473520278930664 0.418770968914032 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 -0.2839455306529999 -0.5277870893478394 0.8493301272392273 -0.0 0.9461168050765991 0.5750011205673218 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 0.21605446934700012 -0.4839625358581543 0.8750572204589844 -0.0 0.5221152901649475 0.4176033139228821 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 0.21605446934700012 -0.5277870893478394 0.8493301272392273 -0.0 0.5242090225219727 0.42025721073150635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 -0.8377330899238586 -0.5460371971130371 -0.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 -0.7957395911216736 -0.6056092977523804 -0.0 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 -0.8377330899238586 -0.5460371971130371 -0.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 -0.2839455306529999 0.635425865650177 0.7721487879753113 -0.0 0.010986119508743286 0.46034443378448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 0.21605446934700012 0.6852015852928162 0.7283242344856262 -0.0 0.45302438735961914 0.30331945419311523 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 0.21605446934700012 0.635425865650177 0.7721487879753113 -0.0 0.45567893981933594 0.2988291382789612 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.9898678660392761 0.14185002446174622 -0.0 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.9928891658782959 0.1188085600733757 -0.0 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.9898678660392761 0.14185002446174622 -0.0 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 -0.2839455306529999 -0.765282154083252 0.6436659097671509 -0.0 0.954938530921936 0.4615635275840759 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 -0.7233496904373169 0.6904507875442505 -0.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 0.21605446934700012 -0.765282154083252 0.6436659097671509 -0.0 0.5245863199234009 0.30141550302505493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 -0.22058779001235962 0.9753410220146179 -0.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 0.21605446934700012 -0.1659596562385559 0.9861140847206116 -0.0 0.5395126342773438 0.2806873917579651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 -0.22058779001235962 0.9753410220146179 -0.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345959424972534 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.5338907837867737 0.8455153107643127 -0.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 0.21605446934700012 0.5824762582778931 0.8128299713134766 -0.0 1.473520278930664 0.418770968914032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.5338907837867737 0.8455153107643127 -0.0 1.4750800132751465 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.7927793264389038 -0.6094546318054199 -0.0 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.8035218119621277 -0.5952635407447815 -0.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.7927793264389038 -0.6094546318054199 -0.0 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 -0.9728385210037231 -0.23145237565040588 -0.0 0.06625154614448547 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 -0.9624622464179993 -0.2713705897331238 -0.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 -0.9728385210037231 -0.23145237565040588 -0.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 -0.999969482421875 0.0 -0.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.6307469606399536 0.2462201714515686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 -1.0 0.0 -0.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.8894924521446228 -0.45689260959625244 -0.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.9102755784988403 -0.4139530658721924 -0.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.8894924521446228 -0.45689260959625244 -0.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 -0.2839455306529999 0.17114779353141785 0.9852290153503418 -0.0 0.050057947635650635 0.47353076934814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 0.21605446934700012 0.23261207342147827 0.9725638628005981 -0.0 0.5180913805961609 0.28024226427078247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 0.21605446934700012 0.17114779353141785 0.9852290153503418 -0.0 0.5208086371421814 0.27942436933517456 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239938855171204 0.767682671546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298388004302979 0.6121903657913208 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9718600511550903 0.41916149854660034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.6307469606399536 0.2462201714515686 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 -0.7233496904373169 0.6904507875442505 -0.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 0.21605446934700012 -0.6763817071914673 0.7365337014198303 -0.0 0.5213418006896973 0.29533177614212036 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 -0.7233496904373169 0.6904507875442505 -0.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 -0.2839455306529999 -0.1659901738166809 0.9861140847206116 -0.0 1.0356225967407227 0.47553956508636475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 0.21605446934700012 -0.1106906309723854 0.9938352704048157 -0.0 0.5362241268157959 0.2796708345413208 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 0.21605446934700012 -0.1659596562385559 0.9861140847206116 -0.0 0.5395126342773438 0.2806873917579651 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 -0.2839455306529999 -0.4839625358581543 0.8750572204589844 -0.0 0.9483439922332764 0.5728389024734497 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 0.21605446934700012 -0.4382458031177521 0.8988311290740967 -0.0 0.5199500918388367 0.4151836633682251 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 0.21605446934700012 -0.4839625358581543 0.8750572204589844 -0.0 0.5221152901649475 0.4176033139228821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 -0.7957395911216736 -0.6056092977523804 -0.0 0.09788185358047485 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 -0.7514267563819885 -0.6597796678543091 -0.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 -0.7957395911216736 -0.6056092977523804 -0.0 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298388004302979 0.6121903657913208 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.05004608631134033 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.5808892846107483 0.8139591813087463 -0.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 0.21605446934700012 0.635425865650177 0.7721487879753113 -0.0 0.45567893981933594 0.2988291382789612 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.5808892846107483 0.8139591813087463 -0.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 -0.2839455306529999 0.1116367056965828 0.9937437176704407 -0.0 0.047876596450805664 0.47322434186935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 0.21605446934700012 0.17114779353141785 0.9852290153503418 -0.0 0.5208086371421814 0.27942436933517456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 0.21605446934700012 0.1116367056965828 0.9937437176704407 -0.0 0.5236209630966187 0.27888089418411255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 -0.2839455306529999 0.4822840094566345 0.8760032653808594 -0.0 0.9933782815933228 0.5736287832260132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.5338907837867737 0.8455153107643127 -0.0 1.4750800132751465 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 0.21605446934700012 0.4822534918785095 0.8760032653808594 -0.0 1.476720929145813 0.4145115613937378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 -0.2839455306529999 0.7701956033706665 -0.6377758383750916 -0.0 0.9744249582290649 0.45770955085754395 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.7927793264389038 -0.6094546318054199 -0.0 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 0.21605446934700012 0.7701956033706665 -0.6377758383750916 -0.0 0.619458019733429 0.2813679575920105 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 -0.9013641476631165 -0.43299660086631775 -0.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 -0.8742942810058594 -0.4853358566761017 -0.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 -0.9013641476631165 -0.43299660086631775 -0.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 -0.2839455306529999 -0.1106906309723854 0.9938352704048157 -0.0 0.03816637396812439 0.4745330810546875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 0.21605446934700012 -0.055207982659339905 0.9984435439109802 -0.0 0.5328900814056396 0.2789868116378784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 0.21605446934700012 -0.1106906309723854 0.9938352704048157 -0.0 0.5362241268157959 0.2796708345413208 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 -0.2839455306529999 -0.4382458031177521 0.8988311290740967 -0.0 0.9506131410598755 0.5708950757980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 0.21605446934700012 -0.3908810615539551 0.9204077124595642 -0.0 0.5177140831947327 0.41300249099731445 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 0.21605446934700012 -0.4382458031177521 0.8988311290740967 -0.0 0.5199500918388367 0.4151836633682251 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9030731916427612 -0.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9030731916427612 -0.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.7458113431930542 -0.6661275029182434 -0.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 0.21605446934700012 0.7701956033706665 -0.6377758383750916 -0.0 0.619458019733429 0.2813679575920105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.7458113431930542 -0.6661275029182434 -0.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 -0.2839455306529999 -0.6763817071914673 0.7365337014198303 -0.0 0.9579070806503296 0.4561135172843933 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 0.21605446934700012 -0.6264839768409729 0.7794122099876404 -0.0 0.5195723176002502 0.292652428150177 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 0.21605446934700012 -0.6763817071914673 0.7365337014198303 -0.0 0.5213418006896973 0.29533177614212036 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594542622566223 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 -0.7514267563819885 -0.6597796678543091 -0.0 0.0934579074382782 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 -0.7076326608657837 -0.7065340280532837 -0.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 -0.7514267563819885 -0.6597796678543091 -0.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 -0.2839455306529999 0.05456709489226341 0.9985045790672302 -0.0 0.045634716749191284 0.47315794229507446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 0.21605446934700012 0.1116367056965828 0.9937437176704407 -0.0 0.5236209630966187 0.27888089418411255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 0.21605446934700012 0.05456709489226341 0.9985045790672302 -0.0 0.5265249013900757 0.2786164879798889 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 -0.2839455306529999 0.4297921657562256 0.9028900861740112 -0.0 0.9916535019874573 0.5718526840209961 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 0.21605446934700012 0.4822534918785095 0.8760032653808594 -0.0 1.476720929145813 0.4145115613937378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 0.21605446934700012 0.4297921657562256 0.9028900861740112 -0.0 1.478442907333374 0.4126579165458679 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 -0.2839455306529999 -0.055207982659339905 0.9984435439109802 -0.0 0.04073569178581238 0.4737977385520935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 -0.0003662221133708954 0.999969482421875 -0.0 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 0.21605446934700012 -0.055207982659339905 0.9984435439109802 -0.0 0.5328900814056396 0.2789868116378784 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 -0.2839455306529999 -0.3908810615539551 0.9204077124595642 -0.0 0.9529252052307129 0.569171667098999 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 0.21605446934700012 -0.3422650694847107 0.939573347568512 -0.0 0.5154080986976624 0.4110640287399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 0.21605446934700012 -0.3908810615539551 0.9204077124595642 -0.0 0.5177140831947327 0.41300249099731445 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 -0.2839455306529999 0.522049605846405 0.8529008030891418 -0.0 0.0059764087200164795 0.45341217517852783 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.5808892846107483 0.8139591813087463 -0.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 0.21605446934700012 0.522049605846405 0.8529008030891418 -0.0 0.46149224042892456 0.29107022285461426 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.4920499324798584 0.8705404996871948 -0.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9030731916427612 -0.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.4920499324798584 0.8705404996871948 -0.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 -0.2839455306529999 0.7195959091186523 -0.69435715675354 -0.0 0.9787807464599609 0.447887122631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.7458113431930542 -0.6661275029182434 -0.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 0.21605446934700012 0.7195959091186523 -0.69435715675354 -0.0 0.6158398389816284 0.26952022314071655 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 -0.2839455306529999 -0.6264839768409729 0.7794122099876404 -0.0 0.9594686031341553 0.4537491202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 -0.5766472220420837 0.8169804811477661 -0.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 0.21605446934700012 -0.6264839768409729 0.7794122099876404 -0.0 0.5195723176002502 0.292652428150177 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.06119370460510254 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 -0.0003662221133708954 0.999969482421875 -0.0 0.04333144426345825 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 0.21605446934700012 0.05456709489226341 0.9985045790672302 -0.0 0.5265249013900757 0.2786164879798889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 -0.0003662221133708954 0.999969482421875 -0.0 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 -0.2839455306529999 0.37705618143081665 0.9261757135391235 -0.0 0.989861011505127 0.5702477097511292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 0.21605446934700012 0.4297921657562256 0.9028900861740112 -0.0 1.478442907333374 0.4126579165458679 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 0.21605446934700012 0.37705618143081665 0.9261757135391235 -0.0 1.4802451133728027 0.4109910726547241 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.6915494203567505 -0.7223120927810669 -0.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 0.21605446934700012 0.7195959091186523 -0.69435715675354 -0.0 0.6158398389816284 0.26952022314071655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.6915494203567505 -0.7223120927810669 -0.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 -0.2839455306529999 -0.3422955870628357 0.939573347568512 -0.0 0.9552810788154602 0.567670464515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 0.21605446934700012 -0.2927945852279663 0.9561449289321899 -0.0 0.5130330324172974 0.40937238931655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 0.21605446934700012 -0.3422650694847107 0.939573347568512 -0.0 0.5154080986976624 0.4110640287399292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 -0.7076326608657837 -0.7065340280532837 -0.0 0.08885562419891357 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 -0.6614276766777039 -0.7499618530273438 -0.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 -0.7076326608657837 -0.7065340280532837 -0.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.8657185435295105 -0.5005035400390625 -0.0 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.8894924521446228 -0.45689260959625244 -0.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.8657185435295105 -0.5005035400390625 -0.0 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.4920499324798584 0.8705404996871948 -0.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.9856868386268616 0.16852320730686188 -0.0 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.9898678660392761 0.14185002446174622 -0.0 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.9856868386268616 0.16852320730686188 -0.0 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582871079444885 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 -0.2839455306529999 0.4595782458782196 0.8881191611289978 -0.0 0.0033438801765441895 0.4505161643028259 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 0.21605446934700012 0.522049605846405 0.8529008030891418 -0.0 0.46149224042892456 0.29107022285461426 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 0.21605446934700012 0.4595782458782196 0.8881191611289978 -0.0 0.46464958786964417 0.2878061532974243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 -0.921933650970459 -0.3872798979282379 -0.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 -0.8916593194007874 -0.4526505470275879 -0.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 -0.921933650970459 -0.3872798979282379 -0.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.3246864080429077 0.9457991123199463 -0.0 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 0.21605446934700012 0.37705618143081665 0.9261757135391235 -0.0 1.4802451133728027 0.4109910726547241 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.3246864080429077 0.9457991123199463 -0.0 1.4821268320083618 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.6617023348808289 -0.7497482299804688 -0.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.6915494203567505 -0.7223120927810669 -0.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.6617023348808289 -0.7497482299804688 -0.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 -0.5766167044639587 0.8169804811477661 -0.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 0.21605446934700012 -0.5260170102119446 0.8504592776298523 -0.0 0.5157464742660522 0.2879374027252197 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 -0.5766472220420837 0.8169804811477661 -0.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 -0.9624622464179993 -0.2713705897331238 -0.0 0.06511396169662476 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 -0.9493392705917358 -0.31418806314468384 -0.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 -0.9624622464179993 -0.2713705897331238 -0.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 -0.6614276766777039 -0.7499618530273438 -0.0 0.08416959643363953 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 -0.6098818778991699 -0.7924436330795288 -0.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 -0.6614276766777039 -0.7499618530273438 -0.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.6066164374351501 0.7949766516685486 -0.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.6066164374351501 0.7949766516685486 -0.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 -0.2839455306529999 -0.5260170102119446 0.8504592776298523 -0.0 0.9627474546432495 0.44964832067489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 0.21605446934700012 -0.47331157326698303 0.8808557391166687 -0.0 0.5136916637420654 0.28588324785232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 0.21605446934700012 -0.5260170102119446 0.8504592776298523 -0.0 0.5157464742660522 0.2879374027252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.9803460836410522 0.19721060991287231 -0.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.9856868386268616 0.16852320730686188 -0.0 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.9803460836410522 0.19721060991287231 -0.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988972425460815 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 -0.8916593194007874 -0.4526505470275879 -0.0 0.11716088652610779 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 -0.8568071722984314 -0.5155797004699707 -0.0 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 -0.8916593194007874 -0.4526505470275879 -0.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 -0.2839455306529999 0.27314066886901855 0.9619433879852295 -0.0 0.9860718846321106 0.5675491690635681 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.3246864080429077 0.9457991123199463 -0.0 1.4821268320083618 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 0.21605446934700012 0.27311015129089355 0.9619739651679993 -0.0 1.484087347984314 0.40822577476501465 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 -0.2839455306529999 0.6300546526908875 -0.7765129804611206 -0.0 0.9857213497161865 0.4348520040512085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.6617023348808289 -0.7497482299804688 -0.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 0.21605446934700012 0.6300546526908875 -0.7765129804611206 -0.0 0.6092228889465332 0.25332319736480713 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 -0.2839455306529999 -0.2928251028060913 0.9561449289321899 -0.0 0.9576817154884338 0.5663930773735046 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 0.21605446934700012 -0.24289681017398834 0.9700308442115784 -0.0 0.5105903148651123 0.40793150663375854 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 0.21605446934700012 -0.2927945852279663 0.9561449289321899 -0.0 0.5130330324172974 0.40937238931655884 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.39429914951324463 0.9189733266830444 -0.0 0.0006244778633117676 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 0.21605446934700012 0.4595782458782196 0.8881191611289978 -0.0 0.46464958786964417 0.2878061532974243 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.39429914951324463 0.9189733266830444 -0.0 0.4679713547229767 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.6066164374351501 0.7949766516685486 -0.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.5967284440994263 -0.8024231791496277 -0.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 0.21605446934700012 0.6300546526908875 -0.7765129804611206 -0.0 0.6092228889465332 0.25332319736480713 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.5967284440994263 -0.8024231791496277 -0.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 -0.8742942810058594 -0.4853358566761017 -0.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 -0.843745231628418 -0.5366985201835632 -0.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 -0.8742942810058594 -0.4853358566761017 -0.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 -0.2839455306529999 0.9746391177177429 0.22376170754432678 -0.0 0.947985827922821 0.47552597522735596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.9803460836410522 0.19721060991287231 -0.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 0.21605446934700012 0.9746086001396179 0.22376170754432678 -0.0 0.6467007398605347 0.3154236078262329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341435551643372 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 -0.6098818778991699 -0.7924436330795288 -0.0 0.07939448952674866 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 -0.5531174540519714 -0.8330637812614441 -0.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 -0.6098818778991699 -0.7924436330795288 -0.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 -0.2839455306529999 0.2228461503982544 0.9748222231864929 -0.0 0.9840749502182007 0.5664546489715576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 0.21605446934700012 0.27311015129089355 0.9619739651679993 -0.0 1.484087347984314 0.40822577476501465 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 0.21605446934700012 0.2228461503982544 0.9748222231864929 -0.0 0.48612532019615173 0.40713149309158325 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 -0.2839455306529999 -0.47331157326698303 0.8808557391166687 -0.0 0.964465856552124 0.44788867235183716 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 0.21605446934700012 -0.4191106855869293 0.9078951478004456 -0.0 0.5115428566932678 0.2840333580970764 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 0.21605446934700012 -0.47331157326698303 0.8808557391166687 -0.0 0.5136916637420654 0.28588324785232544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.9688100814819336 0.24771873652935028 -0.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 0.21605446934700012 0.9746086001396179 0.22376170754432678 -0.0 0.6467007398605347 0.3154236078262329 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.9688100814819336 0.24771873652935028 -0.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 -0.2839455306529999 -0.24289681017398834 0.9700308442115784 -0.0 0.9601279497146606 0.5653409957885742 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 0.21605446934700012 -0.19290749728679657 0.9812005758285522 -0.0 0.5080812573432922 0.40674519538879395 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 0.21605446934700012 -0.24289681017398834 0.9700308442115784 -0.0 0.5105903148651123 0.40793150663375854 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 -0.8568071722984314 -0.5155797004699707 -0.0 0.11499348282814026 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 -0.8179876208305359 -0.575182318687439 -0.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 -0.8568071722984314 -0.5155797004699707 -0.0 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 -0.2839455306529999 0.5618457794189453 -0.8272347450256348 -0.0 0.9906381964683533 0.4272674322128296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.5967284440994263 -0.8024231791496277 -0.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 0.21605446934700012 0.5618457794189453 -0.8272347450256348 -0.0 0.6039486527442932 0.24359291791915894 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.07646352052688599 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671346426010132 -0.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 -0.2839455306529999 0.3271889388561249 0.9449446201324463 -0.0 0.9978166818618774 0.4458499550819397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.39429914951324463 0.9189733266830444 -0.0 1.4679713249206543 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 0.21605446934700012 0.3271889388561249 0.9449446201324463 -0.0 1.4714545011520386 0.2825276851654053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 -0.2839455306529999 0.1742301732301712 0.9846796989440918 -0.0 0.982009768486023 0.5655289888381958 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 0.21605446934700012 0.2228461503982544 0.9748222231864929 -0.0 0.48612532019615173 0.40713149309158325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 0.21605446934700012 0.1742301732301712 0.9846796989440918 -0.0 0.48823946714401245 0.4062318801879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.5254982113838196 -0.8507645130157471 -0.0 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 0.21605446934700012 0.5618457794189453 -0.8272347450256348 -0.0 0.6039486527442932 0.24359291791915894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.5254982113838196 -0.8507645130157471 -0.0 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 -0.2839455306529999 -0.4191106855869293 0.9079256653785706 -0.0 0.9662376642227173 0.44632160663604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 0.21605446934700012 -0.3640247881412506 0.9313638806343079 -0.0 0.5093002319335938 0.28238970041275024 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 0.21605446934700012 -0.4191106855869293 0.9078951478004456 -0.0 0.5115428566932678 0.2840333580970764 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 -0.2839455306529999 -0.19293801486492157 0.9812005758285522 -0.0 0.9626204967498779 0.5645154714584351 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 0.21605446934700012 -0.143314927816391 0.9896542429924011 -0.0 0.50550776720047 0.4058172106742859 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 0.21605446934700012 -0.19290749728679657 0.9812005758285522 -0.0 0.5080812573432922 0.40674519538879395 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 -0.5531174540519714 -0.8330637812614441 -0.0 0.07452532649040222 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 -0.491470068693161 -0.8708761930465698 -0.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 -0.5531174540519714 -0.8330637812614441 -0.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954375982284546 0.7221292853355408 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563123226165771 0.5777289867401123 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 -0.2839455306529999 -0.3640247881412506 0.9313638806343079 -0.0 0.9680637121200562 0.4449465274810791 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 -0.3086642026901245 0.9511398673057556 -0.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 0.21605446934700012 -0.3640247881412506 0.9313638806343079 -0.0 0.5093002319335938 0.28238970041275024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.9626453518867493 0.2706686556339264 -0.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.9688100814819336 0.24771873652935028 -0.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.9626453518867493 0.2706686556339264 -0.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563123226165771 0.5777289867401123 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 -0.2839455306529999 0.1275063306093216 0.9918210506439209 -0.0 0.9798762798309326 0.5647714138031006 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 0.21605446934700012 0.1742301732301712 0.9846796989440918 -0.0 0.48823946714401245 0.4062318801879883 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 0.21605446934700012 0.1275063306093216 0.9918210506439209 -0.0 0.4904281795024872 0.4055290222167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.48789942264556885 -0.8728904128074646 -0.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.5254982113838196 -0.8507645130157471 -0.0 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 0.21605445444583893 0.48786890506744385 -0.8728904128074646 -0.0 0.5979301333427429 0.23474663496017456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.6773888468742371 -0.7355876564979553 -0.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.6873989105224609 -0.7262489795684814 -0.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.6773888468742371 -0.7355876564979553 -0.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671346426010132 -0.0 0.07909286022186279 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671346426010132 -0.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 -0.2839455306529999 -0.143314927816391 0.9896542429924011 -0.0 0.9651601314544678 0.5639175772666931 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 0.21605446934700012 -0.09445478767156601 0.9955137968063354 -0.0 0.5028718709945679 0.4051510691642761 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 0.21605446934700012 -0.143314927816391 0.9896542429924011 -0.0 0.50550776720047 0.4058172106742859 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 -0.2839455306529999 0.2593768239021301 0.965758204460144 -0.0 0.9949193596839905 0.4440760612487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 0.21605446934700012 0.3271889388561249 0.9449446201324463 -0.0 1.4714545011520386 0.2825276851654053 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 0.21605446934700012 0.2593768239021301 0.965758204460144 -0.0 1.4750945568084717 0.28052353858947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 -0.939817488193512 -0.3415936827659607 -0.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 0.21605446934700012 -0.9425031542778015 -0.3341471552848816 -0.0 0.595079779624939 0.27352941036224365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 -0.939817488193512 -0.3415936827659607 -0.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.4513382315635681 -0.8923307061195374 -0.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.48789942264556885 -0.8728904128074646 -0.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 0.21605445444583893 0.48786890506744385 -0.8728904128074646 -0.0 0.5979301333427429 0.23474663496017456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 -0.491470068693161 -0.8708761930465698 -0.0 0.06955760717391968 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 -0.42558062076568604 -0.904904305934906 -0.0 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 -0.491470068693161 -0.8708761930465698 -0.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.8388012051582336 -0.5444197058677673 -0.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.8657185435295105 -0.5005035400390625 -0.0 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.8388012051582336 -0.5444197058677673 -0.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 -0.2839455306529999 -0.9425031542778015 -0.3341471552848816 -0.0 0.9936280846595764 0.4593122601509094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 0.21605446934700012 -0.9470503926277161 -0.32102420926094055 -0.0 0.5952936410903931 0.27301520109176636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 0.21605446934700012 -0.9425031542778015 -0.3341471552848816 -0.0 0.595079779624939 0.27352941036224365 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 -0.2839455306529999 0.08285775035619736 0.9965513944625854 -0.0 0.9776747822761536 0.5641809701919556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 0.21605446934700012 0.1275063306093216 0.9918210506439209 -0.0 0.4904281795024872 0.4055290222167969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 0.21605446934700012 0.08285775035619736 0.9965513944625854 -0.0 0.4926895201206207 0.40502452850341797 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 -0.3086642026901245 0.9511398673057556 -0.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 0.21605446934700012 -0.2536393404006958 0.9672841429710388 -0.0 0.5045377612113953 0.2797309160232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 -0.3086642026901245 0.9511398673057556 -0.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133089542388916 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 -0.2839455306529999 -0.09445478767156601 0.9955137968063354 -0.0 0.9677476286888123 0.5635481476783752 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 0.21605446934700012 -0.04663228243589401 0.9989013075828552 -0.0 0.5001758337020874 0.4047499895095825 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 0.21605446934700012 -0.09445478767156601 0.9955137968063354 -0.0 0.5028718709945679 0.4051510691642761 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 -0.2839455306529999 -0.9470503926277161 -0.32102420926094055 -0.0 0.9935218095779419 0.4587423801422119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 0.21605446934700012 -0.9504989981651306 -0.3106784224510193 -0.0 0.5955314636230469 0.27242761850357056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 0.21605446934700012 -0.9470503926277161 -0.32102420926094055 -0.0 0.5952936410903931 0.27301520109176636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 -0.2839455306529999 0.41798150539398193 -0.9084444642066956 -0.0 1.0011929273605347 0.41469377279281616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.4513382315635681 -0.8923307061195374 -0.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 0.21605445444583893 0.41798150539398193 -0.9084444642066956 -0.0 0.5911673903465271 0.22683840990066528 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 -0.2839455306529999 0.19186986982822418 0.9814141988754272 -0.0 0.9919314384460449 0.4426735043525696 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 0.21605446934700012 0.2593768239021301 0.965758204460144 -0.0 1.4750945568084717 0.28052353858947754 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 0.21605446934700012 0.19186986982822418 0.9814141988754272 -0.0 1.4788858890533447 0.2789512276649475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 -0.8179876208305359 -0.575182318687439 -0.0 0.11264124512672424 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 -0.7759636044502258 -0.6307260394096375 -0.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 -0.8179876208305359 -0.575182318687439 -0.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 -0.2839455306529999 0.04043702408671379 0.999176025390625 -0.0 0.9754053354263306 0.5637564659118652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 0.21605446934700012 0.08285775035619736 0.9965513944625854 -0.0 0.4926895201206207 0.40502452850341797 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 0.21605446934700012 0.04043702408671379 0.999176025390625 -0.0 0.4950215816497803 0.4047200679779053 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.38541826605796814 -0.922727108001709 -0.0 1.0039174556732178 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 0.21605445444583893 0.41798150539398193 -0.9084444642066956 -0.0 0.5911673903465271 0.22683840990066528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.38541826605796814 -0.922727108001709 -0.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 -0.2839455306529999 -0.2536393404006958 0.9672841429710388 -0.0 0.9718810319900513 0.44277089834213257 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 0.21605446934700012 -0.19953002035617828 0.9798578023910522 -0.0 0.5020204186439514 0.2787216305732727 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 0.21605446934700012 -0.2536393404006958 0.9672841429710388 -0.0 0.5045377612113953 0.2797309160232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320233225822449 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 -0.2839455306529999 -0.04663228243589401 0.9989013075828552 -0.0 0.9703834056854248 0.5634076595306396 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 -0.0016174810007214546 0.999969482421875 -0.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 0.21605446934700012 -0.04663228243589401 0.9989013075828552 -0.0 0.5001758337020874 0.4047499895095825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 -0.42558062076568604 -0.904904305934906 -0.0 0.06448733806610107 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 -0.3563341200351715 -0.9343241453170776 -0.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 -0.42558062076568604 -0.904904305934906 -0.0 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 -0.2839455306529999 -0.9504989981651306 -0.3106784224510193 -0.0 0.9934057593345642 0.45809316635131836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 0.21605446934700012 -0.9531540870666504 -0.3024079203605652 -0.0 0.5957931876182556 0.27176743745803833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 0.21605446934700012 -0.9504989981651306 -0.3106784224510193 -0.0 0.5955314636230469 0.27242761850357056 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 -0.2839455306529999 0.12570573389530182 0.9920651912689209 -0.0 0.9888521432876587 0.4416421055793762 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 0.21605446934700012 0.19186986982822418 0.9814141988754272 -0.0 1.4788858890533447 0.2789512276649475 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 0.21605446934700012 0.12570573389530182 0.9920651912689209 -0.0 1.4828212261199951 0.27781784534454346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 -0.2839455306529999 -0.9531540870666504 -0.3024079203605652 -0.0 0.9932801127433777 0.4573652744293213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 -0.9552598595619202 -0.29566332697868347 -0.0 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 0.21605446934700012 -0.9531540870666504 -0.3024079203605652 -0.0 0.5957931876182556 0.27176743745803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 -0.0016174810007214546 0.999969482421875 -0.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 0.21605446934700012 0.04043702408671379 0.999176025390625 -0.0 0.4950215816497803 0.4047200679779053 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 -0.0016174810007214546 0.999969482421875 -0.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.35142064094543457 -0.9361857771873474 -0.0 1.0066523551940918 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.38541826605796814 -0.922727108001709 -0.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.35142064094543457 -0.9361857771873474 -0.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 -0.2839455306529999 -0.19953002035617828 0.9798578023910522 -0.0 0.9738736152648926 0.4419704079627991 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 0.21605446934700012 -0.14679403603076935 0.9891353845596313 -0.0 0.49941444396972656 0.27793002128601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 0.21605446934700012 -0.19953002035617828 0.9798578023910522 -0.0 0.5020204186439514 0.2787216305732727 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472907543182373 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 -0.3563341200351715 -0.9343241453170776 -0.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 -0.2848292589187622 -0.9585558772087097 -0.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 -0.3563341200351715 -0.9343241453170776 -0.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 -0.9493392705917358 -0.31418806314468384 -0.0 0.0639059841632843 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 0.21605446934700012 -0.9329508543014526 -0.35996583104133606 -0.0 0.40534508228302 0.41134870052337646 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 -0.9493392705917358 -0.31418806314468384 -0.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 -0.2839455306529999 -0.14679403603076935 0.9891353845596313 -0.0 0.9759230017662048 0.44136184453964233 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 0.21605446934700012 -0.095828115940094 0.9953917264938354 -0.0 0.4967222511768341 0.2773597836494446 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 0.21605446934700012 -0.14679403603076935 0.9891353845596313 -0.0 0.49941444396972656 0.27793002128601074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.9561754465103149 0.2926725149154663 -0.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.9626453518867493 0.2706686556339264 -0.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.9561754465103149 0.2926725149154663 -0.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 -0.9552598595619202 -0.29566332697868347 -0.0 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 0.21605446934700012 -0.9569994211196899 -0.29004791378974915 -0.0 0.5963889360427856 0.2702317237854004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 -0.9552598595619202 -0.29566332697868347 -0.0 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 -0.2839455306529999 -0.9329508543014526 -0.35996583104133606 -0.0 0.06262597441673279 0.5522772073745728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 -0.9130222201347351 -0.40784937143325806 -0.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 0.21605446934700012 -0.9329508543014526 -0.35996583104133606 -0.0 0.40534508228302 0.41134870052337646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 -0.2839455306529999 0.3161107301712036 -0.9486984014511108 -0.0 1.0093977451324463 0.40753376483917236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.35142064094543457 -0.9361857771873474 -0.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 0.21605445444583893 0.3161107301712036 -0.9486984014511108 -0.0 0.5800744295120239 0.21697372198104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 1.487341284751892 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.484402060508728 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 -0.2839455306529999 0.06164738908410072 0.9980773329734802 -0.0 0.9856808185577393 0.4409821033477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 0.21605446934700012 0.12570573389530182 0.9920651912689209 -0.0 1.4828212261199951 0.27781784534454346 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 0.21605446934700012 0.06164738908410072 0.9980773329734802 -0.0 1.4868923425674438 0.27713125944137573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.2795190215110779 -0.9601123332977295 -0.0 1.01215398311615 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 0.21605445444583893 0.3161107301712036 -0.9486984014511108 -0.0 0.5800744295120239 0.21697372198104858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.2795190215110779 -0.9601123332977295 -0.0 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 -0.2839455306529999 -0.095828115940094 0.9953917264938354 -0.0 0.978029727935791 0.44094574451446533 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 0.21605446934700012 -0.04693746566772461 0.9988707900047302 -0.0 0.4939463436603546 0.2770150303840637 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 0.21605446934700012 -0.095828115940094 0.9953917264938354 -0.0 0.4967222511768341 0.2773597836494446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.6567277908325195 -0.7541123628616333 -0.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.6773888468742371 -0.7355876564979553 -0.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.6567277908325195 -0.7541123628616333 -0.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.8020874857902527 -0.5971556901931763 -0.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.8142643570899963 -0.5804315209388733 -0.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.8020874857902527 -0.5971556901931763 -0.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 -0.2848292589187622 -0.9585558772087097 -0.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 -0.21228675544261932 -0.9772026538848877 -0.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 -0.2848292589187622 -0.9585558772087097 -0.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 -0.2839455306529999 -0.9569994211196899 -0.29004791378974915 -0.0 0.9930000901222229 0.45567595958709717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 0.21605446934700012 -0.9584032893180847 -0.2854090929031372 -0.0 0.5967231392860413 0.2693578600883484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 0.21605446934700012 -0.9569994211196899 -0.29004791378974915 -0.0 0.5963889360427856 0.2702317237854004 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 -1.0 0.0 -0.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.5546995401382446 0.3343638777732849 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 -1.0 0.0 -0.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592993021011353 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9250865578651428 0.48120373487472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.5546995401382446 0.3343638777732849 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0036011841148138046 0.999969482421875 -0.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 0.21605446934700012 0.06164738908410072 0.9980773329734802 -0.0 0.48689237236976624 0.27713125944137573 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0036011841148138046 0.999969482421875 -0.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 -0.2839455306529999 -0.9584032893180847 -0.2854090929031372 -0.0 0.992845892906189 0.4547160267829895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 0.21605446934700012 -0.9595934748649597 -0.28131961822509766 -0.0 0.5970817804336548 0.26841461658477783 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 0.21605446934700012 -0.9584032893180847 -0.2854090929031372 -0.0 0.5967231392860413 0.2693578600883484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 -0.9130222201347351 -0.40784937143325806 -0.0 0.061272114515304565 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 -0.8899502754211426 -0.45600757002830505 -0.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 -0.9130222201347351 -0.40784937143325806 -0.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 -0.2839455306529999 0.24179814755916595 -0.9703055024147034 -0.0 1.0149214267730713 0.4038327932357788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.2795190215110779 -0.9601123332977295 -0.0 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 0.21605445444583893 0.24179814755916595 -0.9703055024147034 -0.0 0.5721230506896973 0.21177977323532104 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 -0.2839455306529999 -0.04693746566772461 0.9988707900047302 -0.0 0.9801942110061646 0.4407229423522949 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0036011841148138046 0.999969482421875 -0.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 0.21605446934700012 -0.04693746566772461 0.9988707900047302 -0.0 0.4939463436603546 0.2770150303840637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 -0.2839455306529999 -0.9595934748649597 -0.28131961822509766 -0.0 0.9926822185516357 0.4536803960800171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 -0.9606311321258545 -0.2778099775314331 -0.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 0.21605446934700012 -0.9595934748649597 -0.28131961822509766 -0.0 0.5970817804336548 0.26841461658477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807119369506836 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772032499313354 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.20303964614868164 -0.9791558384895325 -0.0 1.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 0.21605445444583893 0.24179814755916595 -0.9703055024147034 -0.0 0.5721230506896973 0.21177977323532104 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.20303964614868164 -0.9791558384895325 -0.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.7765740156173706 -0.6299936175346375 -0.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.8020874857902527 -0.5971556901931763 -0.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.7765740156173706 -0.6299936175346375 -0.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 -0.21228675544261932 -0.9772026538848877 -0.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 -0.13995788991451263 -0.9901425242424011 -0.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 -0.21228675544261932 -0.9772026538848877 -0.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 -0.843745231628418 -0.5366985201835632 -0.0 0.06383192539215088 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 -0.8044373989105225 -0.5940122604370117 -0.0 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 -0.843745231628418 -0.5366985201835632 -0.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.993322491645813 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.484402060508728 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807119369506836 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 -0.8899502754211426 -0.45600757002830505 -0.0 0.059828102588653564 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 -0.8639789819717407 -0.503494381904602 -0.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 -0.8899502754211426 -0.45600757002830505 -0.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.9494918584823608 0.31376078724861145 -0.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.9561754465103149 0.2926725149154663 -0.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.9494918584823608 0.31376078724861145 -0.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016404151916504 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 0.4873412549495697 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 -0.7759636044502258 -0.6307260394096375 -0.0 0.11009809374809265 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 -0.7316507697105408 -0.6816614270210266 -0.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 -0.7759636044502258 -0.6307260394096375 -0.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 -0.2839455306529999 0.16342662274837494 -0.9865413308143616 -0.0 1.0204906463623047 0.40098077058792114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.20303964614868164 -0.9791558384895325 -0.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 0.21605445444583893 0.16342662274837494 -0.9865413308143616 -0.0 0.563776969909668 0.20772206783294678 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.808679461479187 -0.5881832242012024 -0.0 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.8388012051582336 -0.5444197058677673 -0.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.808679461479187 -0.5881832242012024 -0.0 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.7494735717773438 -0.6619769930839539 -0.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.7765740156173706 -0.6299936175346375 -0.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.7494735717773438 -0.6619769930839539 -0.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 -0.8044373989105225 -0.5940122604370117 -0.0 0.06068447232246399 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 -0.7527390122413635 -0.6582842469215393 -0.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 -0.8044373989105225 -0.5940122604370117 -0.0 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 -0.9606311321258545 -0.2778099775314331 -0.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 0.21605446934700012 -0.9614856243133545 -0.27478864789009094 -0.0 0.5978724956512451 0.26632362604141235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 -0.9606311321258545 -0.2778099775314331 -0.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 1.0021334886550903 0.7248518466949463 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772032499313354 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 1.4738764762878418 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 -0.8639789819717407 -0.503494381904602 -0.0 0.05827704071998596 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 -0.8349558711051941 -0.5502792596817017 -0.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 -0.8639789819717407 -0.503494381904602 -0.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.12314218282699585 -0.9923703670501709 -0.0 1.0232930183410645 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 0.21605445444583893 0.16342662274837494 -0.9865413308143616 -0.0 0.563776969909668 0.20772206783294678 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.12314218282699585 -0.9923703670501709 -0.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811047315597534 0.725290834903717 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.492870569229126 0.5609473586082458 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016404151916504 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 -0.13995788991451263 -0.9901425242424011 -0.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 -0.06897182762622833 -0.9975890517234802 -0.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 -0.13995788991451263 -0.9901425242424011 -0.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 -0.2839455306529999 0.7754448056221008 -0.6313974261283875 -0.0 0.9130018949508667 0.4282703995704651 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.808679461479187 -0.5881832242012024 -0.0 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 0.21605446934700012 0.7754448056221008 -0.6313974261283875 -0.0 0.5796647667884827 0.28530943393707275 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 -0.2839455306529999 0.634998619556427 -0.772484540939331 -0.0 1.0007305145263672 0.44697535037994385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.6567277908325195 -0.7541123628616333 -0.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 0.21605446934700012 0.634998619556427 -0.772484540939331 -0.0 0.5873936414718628 0.25871068239212036 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.7209387421607971 -0.6929532885551453 -0.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.7494735717773438 -0.6619769930839539 -0.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.7209387421607971 -0.6929532885551453 -0.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 -0.2839455306529999 -0.9614856243133545 -0.27478864789009094 -0.0 0.9923274517059326 0.451385498046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 0.21605446934700012 -0.9622486233711243 -0.27207252383232117 -0.0 0.5983049869537354 0.26517820358276367 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 0.21605446934700012 -0.9614856243133545 -0.27478864789009094 -0.0 0.5978724956512451 0.26632362604141235 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159782409667969 0.7239813804626465 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 0.473876416683197 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.4707322120666504 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 -0.8349558711051941 -0.5502792596817017 -0.0 0.05661684274673462 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 -0.8030640482902527 -0.5958738923072815 -0.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 -0.8349558711051941 -0.5502792596817017 -0.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 -0.2839455306529999 0.08230841904878616 -0.9965819120407104 -0.0 1.0261074304580688 0.39897215366363525 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.12314218282699585 -0.9923703670501709 -0.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 0.21605445444583893 0.08230841904878616 -0.9965819120407104 -0.0 0.5550970435142517 0.20482593774795532 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.7391277551651001 -0.6735435128211975 -0.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 0.21605446934700012 0.7754448056221008 -0.6313974261283875 -0.0 0.5796647667884827 0.28530943393707275 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.7391277551651001 -0.6735435128211975 -0.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776201248168945 0.724622368812561 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954600930213928 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.492870569229126 0.5609473586082458 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 -0.7527390122413635 -0.6582842469215393 -0.0 0.05640202760696411 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 -0.6926481127738953 -0.7212439179420471 -0.0 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 -0.7527390122413635 -0.6582842469215393 -0.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 -0.2839455306529999 -0.9622486233711243 -0.27207252383232117 -0.0 0.9921363592147827 0.45012837648391724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 -0.9611499309539795 -0.2760094106197357 -0.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 0.21605446934700012 -0.9622486233711243 -0.27207252383232117 -0.0 0.5983049869537354 0.26517820358276367 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 -0.2839455306529999 0.04119998961687088 -0.9991455078125 -0.0 1.0289340019226074 0.3982831835746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 0.21605445444583893 0.08230841904878616 -0.9965819120407104 -0.0 0.5550970435142517 0.20482593774795532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 0.21605445444583893 0.04119998961687088 -0.9991455078125 -0.0 0.5506551265716553 0.203821063041687 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.6910916566848755 -0.7227393388748169 -0.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.7209387421607971 -0.6929532885551453 -0.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.6910916566848755 -0.7227393388748169 -0.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 -0.06897182762622833 -0.9975890517234802 -0.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 -0.2839455306529999 -0.006653035059571266 -0.999969482421875 -0.0 1.0317729711532593 0.3978040814399719 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 0.21605445444583893 -0.006683553569018841 -0.999969482421875 -0.0 0.546159029006958 0.2031153440475464 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009929001331329346 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.4707322120666504 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.46776947379112244 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 -0.8030640482902527 -0.5958738923072815 -0.0 0.054845213890075684 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 -0.7685170769691467 -0.6397900581359863 -0.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 -0.8030640482902527 -0.5958738923072815 -0.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 -0.2839455306529999 -0.006653035059571266 -0.999969482421875 -0.0 1.0317729711532593 0.3978040814399719 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 0.21605445444583893 0.04119998961687088 -0.9991455078125 -0.0 0.5506551265716553 0.203821063041687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 0.21605445444583893 -0.006683553569018841 -0.999969482421875 -0.0 0.546159029006958 0.2031153440475464 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.6999419927597046 -0.7141636610031128 -0.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.7391277551651001 -0.6735435128211975 -0.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.6999419927597046 -0.7141636610031128 -0.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.9425641894340515 0.3339335322380066 -0.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.9494918584823608 0.31376078724861145 -0.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.9425641894340515 0.3339335322380066 -0.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.974300742149353 0.7237285375595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.497933030128479 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954600930213928 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 -0.2839455306529999 -0.0025635547935962677 0.999969482421875 -0.0 0.051040977239608765 0.8245793581008911 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 -0.031373027712106705 0.999481201171875 -0.0 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 0.21605448424816132 -0.0025635547935962677 0.999969482421875 -0.0 0.529496967792511 0.6301011443138123 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 -0.6926481127738953 -0.7212439179420471 -0.0 0.05179312825202942 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 -0.6262093186378479 -0.7796258330345154 -0.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 -0.6926481127738953 -0.7212439179420471 -0.0 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.6121707558631897 -0.790704071521759 -0.0 1.0031116008758545 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 0.21605446934700012 0.634998619556427 -0.772484540939331 -0.0 0.5873936414718628 0.25871068239212036 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.6121707558631897 -0.790704071521759 -0.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.6600848436355591 -0.7511520981788635 -0.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.6910916566848755 -0.7227393388748169 -0.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.6600848436355591 -0.7511826157569885 -0.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 -0.2839455306529999 0.020813623443245888 0.999755859375 -0.0 0.041211605072021484 0.8255455493927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 0.21605448424816132 -0.0025635547935962677 0.999969482421875 -0.0 0.529496967792511 0.6301011443138123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 0.21605448424816132 0.020813623443245888 0.999755859375 -0.0 0.5351086258888245 0.6307108402252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 -0.9611194133758545 -0.2760094106197357 -0.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 0.21605446934700012 -0.9590136408805847 -0.28333383798599243 -0.0 0.5998045206069946 0.2613224983215332 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 -0.9611499309539795 -0.2760094106197357 -0.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439804315567017 0.7215794920921326 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.46776947379112244 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.4649874269962311 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 -0.7685170769691467 -0.6397900581359863 -0.0 0.052959591150283813 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 -0.7316202521324158 -0.6816614270210266 -0.0 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 -0.7685170769691467 -0.6397900581359863 -0.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 -0.2839455306529999 0.6581926941871643 -0.7528305649757385 -0.0 0.9222360253334045 0.4110592007637024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.6999419927597046 -0.7141636610031128 -0.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 0.21605446934700012 0.6581926941871643 -0.7528305649757385 -0.0 0.5713964104652405 0.2639002203941345 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.971149206161499 0.7226189374923706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002896785736084 0.5582361221313477 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.497933030128479 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.043336283415555954 0.999053955078125 -0.0 1.0317471027374268 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 0.21605448424816132 0.020813623443245888 0.999755859375 -0.0 0.5351086258888245 0.6307108402252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.043336283415555954 0.999053955078125 -0.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 -0.7316507697105408 -0.6816614270210266 -0.0 0.10735753178596497 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 -0.6841028928756714 -0.7293313145637512 -0.0 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 -0.7316507697105408 -0.6816614270210266 -0.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 -0.031373027712106705 0.999481201171875 -0.0 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 -0.06512650102376938 0.9978637099266052 -0.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 -0.031373027712106705 0.999481201171875 -0.0 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.6142460107803345 -0.7890865802764893 -0.0 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 0.21605446934700012 0.6581926941871643 -0.7528305649757385 -0.0 0.5713964104652405 0.2639002203941345 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.6142460107803345 -0.7890865802764893 -0.0 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.6281014680862427 -0.7780998945236206 -0.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.6600848436355591 -0.7511826157569885 -0.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.6281014680862427 -0.7780998945236206 -0.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 -0.6262093186378479 -0.7796258330345154 -0.0 0.04683852195739746 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 -0.5548264980316162 -0.8319345712661743 -0.0 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 -0.6262093186378479 -0.7796258330345154 -0.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 -0.2839455306529999 -0.9590136408805847 -0.28333383798599243 -0.0 0.9914758205413818 0.4458812475204468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 -0.9577013254165649 -0.28766748309135437 -0.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 0.21605446934700012 -0.9590136408805847 -0.28333383798599243 -0.0 0.5998045206069946 0.2613224983215332 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.016692906618118286 0.7200816869735718 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.4649874269962311 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238431334495544 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 -0.7316202521324158 -0.6816614270210266 -0.0 0.05095714330673218 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 -0.6927701830863953 -0.7211218476295471 -0.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 -0.7316202521324158 -0.6816614270210266 -0.0 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.968167781829834 0.7213026285171509 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025306344032288 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002896785736084 0.5582361221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.06796471774578094 0.9976806044578552 -0.0 1.02272629737854 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.043336283415555954 0.999053955078125 -0.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.06796471774578094 0.9976806044578552 -0.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 -0.06512650102376938 0.9978637099266052 -0.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 -0.10180974751710892 0.9947813153266907 -0.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 -0.06512650102376938 0.9978637099266052 -0.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 -0.2839455306529999 0.5680715441703796 -0.8229621052742004 -0.0 0.9291298389434814 0.4012235999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.6142460107803345 -0.7890865802764893 -0.0 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 0.21605446934700012 0.5680715441703796 -0.8229621052742004 -0.0 0.5642899870872498 0.25105178356170654 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.9355143904685974 0.35322123765945435 -0.0 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.9425641894340515 0.3339335322380066 -0.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.9355143904685974 0.35322123765945435 -0.0 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.5953550934791565 -0.8034607768058777 -0.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.6281014680862427 -0.7780998945236206 -0.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.5953550934791565 -0.8034607768058777 -0.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.01968926191329956 0.7184059023857117 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238431334495544 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599589407444 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 -0.6927701830863953 -0.7211218476295471 -0.0 0.04883506894111633 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 -0.652363657951355 -0.7578661441802979 -0.0 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 -0.6927701830863953 -0.7211218476295471 -0.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.5195471048355103 -0.8544266819953918 -0.0 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 0.21605446934700012 0.5680715441703796 -0.8229621052742004 -0.0 0.5642899870872498 0.25105178356170654 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.5195471048355103 -0.8544266819953918 -0.0 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.5882442593574524 -0.808648943901062 -0.0 1.0055162906646729 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.6121707558631897 -0.790704071521759 -0.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.5882442593574524 -0.808648943901062 -0.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.9653576612472534 0.7197879552841187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025306344032288 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0949736014008522 0.9954527616500854 -0.0 1.0142098665237427 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.06796471774578094 0.9976806044578552 -0.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0949736014008522 0.9954527616500854 -0.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 -0.5548264980316162 -0.8319345712661743 -0.0 0.04151874780654907 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 -0.48020875453948975 -0.8771324753761292 -0.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 -0.5548264980316162 -0.8319345712661743 -0.0 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 -0.9577013254165649 -0.28766748309135437 -0.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 -0.9562975168228149 -0.2923673093318939 -0.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 -0.9577013254165649 -0.28766748309135437 -0.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 -0.10180974751710892 0.9947813153266907 -0.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 -0.14157536625862122 0.9898983836174011 -0.0 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 -0.10180974751710892 0.9947813153266907 -0.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.5619983673095703 -0.82711261510849 -0.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.5953550934791565 -0.8034607768058777 -0.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.5619983673095703 -0.82711261510849 -0.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 -0.6841028928756714 -0.7293618321418762 -0.0 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 -0.6310006976127625 -0.7757499814033508 -0.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 -0.6841028928756714 -0.7293313145637512 -0.0 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712271451950073 -0.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712271451950073 -0.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 -0.652363657951355 -0.7578661441802979 -0.0 0.04659029841423035 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 -0.6108585000038147 -0.791711151599884 -0.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 -0.652363657951355 -0.7578661441802979 -0.0 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.4693136513233185 -0.8830225467681885 -0.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.5195471048355103 -0.8544266819953918 -0.0 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.4693136513233185 -0.8830225467681885 -0.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 -0.2839455306529999 0.12469863146543503 0.9921872615814209 -0.0 1.006239652633667 0.8229754567146301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0949736014008522 0.9954527616500854 -0.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 0.21605448424816132 0.12469863146543503 0.9921872615814209 -0.0 0.5551243424415588 0.6301071643829346 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 -0.48020875453948975 -0.8771324753761292 -0.0 0.0358147919178009 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 -0.4042481780052185 -0.9146091938018799 -0.0 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 -0.48020875453948975 -0.8771324753761292 -0.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.34345531463623047 -0.939146101474762 -0.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599589407444 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.34345531463623047 -0.939146101474762 -0.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 -0.2839455306529999 0.5632495880126953 -0.82625812292099 -0.0 1.0079450607299805 0.43590283393859863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.5882442593574524 -0.808648943901062 -0.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 0.21605446934700012 0.5632495880126953 -0.82625812292099 -0.0 0.5788551568984985 0.2454366683959961 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186071157455444 -0.0 0.5066676139831543 0.553982675075531 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.5282753705978394 -0.8490554690361023 -0.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.5619983673095703 -0.82711261510849 -0.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 0.21605446934700012 0.5282753705978394 -0.8490554690361023 -0.0 0.5273538827896118 0.3437744975090027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.15738394856452942 0.9875179529190063 -0.0 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 0.21605448424816132 0.12469863146543503 0.9921872615814209 -0.0 0.5551243424415588 0.6301071643829346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.15738394856452942 0.9875179529190063 -0.0 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 -0.6108585000038147 -0.791711151599884 -0.0 0.0442197322845459 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 -0.5687124133110046 -0.8225043416023254 -0.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 -0.6108585000038147 -0.791711151599884 -0.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 -0.14157536625862122 0.9898983836174011 -0.0 0.08913213014602661 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 -0.18469801545143127 0.982787549495697 -0.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 -0.14157536625862122 0.9898983836174011 -0.0 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 -0.2839455306529999 0.41837823390960693 -0.9082613587379456 -0.0 0.9406315088272095 0.38906025886535645 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.4693136513233185 -0.8830225467681885 -0.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 0.21605445444583893 0.41837823390960693 -0.9082613587379456 -0.0 0.550920307636261 0.23428791761398315 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.9283425211906433 0.3716544210910797 -0.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.9355143904685974 0.35322123765945435 -0.0 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.9283425211906433 0.3716544210910797 -0.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 -0.9562669992446899 -0.2923673093318939 -0.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 -0.9546800255775452 -0.29752495884895325 -0.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 -0.9562975168228149 -0.2923673093318939 -0.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.3672292232513428 -0.9301126003265381 -0.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 0.21605445444583893 0.41837823390960693 -0.9082613587379456 -0.0 0.550920307636261 0.23428791761398315 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.3672292232513428 -0.9301126003265381 -0.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.4943388104438782 -0.869228184223175 -0.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.5282753705978394 -0.8490554690361023 -0.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 0.21605446934700012 0.5282753705978394 -0.8490554690361023 -0.0 0.5273538827896118 0.3437744975090027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.19345682859420776 0.9810785055160522 -0.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.15738394856452942 0.9875179529190063 -0.0 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.19345682859420776 0.9810785055160522 -0.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 -0.4042481780052185 -0.9146091938018799 -0.0 0.029709041118621826 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 -0.32877591252326965 -0.9443953037261963 -0.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 -0.4042481780052185 -0.9146091938018799 -0.0 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.0249251127243042 0.7145698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.34345531463623047 -0.939146101474762 -0.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556320011615753 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 -0.5687124133110046 -0.8225043416023254 -0.0 0.04172012209892273 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 -0.5263221859931946 -0.8502761721611023 -0.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 -0.5687124133110046 -0.8225043416023254 -0.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 -0.18469801545143127 0.982787549495697 -0.0 0.0967160165309906 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 -0.23126927018165588 0.9728690385818481 -0.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 -0.18469801545143127 0.982787549495697 -0.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.5372173190116882 -0.843409538269043 -0.0 1.0103981494903564 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 0.21605446934700012 0.5632495880126953 -0.82625812292099 -0.0 0.5788551568984985 0.2454366683959961 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.5372173190116882 -0.843409538269043 -0.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186071157455444 -0.0 0.9602533578872681 0.716193675994873 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085653066635132 0.5522264838218689 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186071157455444 -0.0 0.5066676139831543 0.553982675075531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 -0.6310006976127625 -0.7757499814033508 -0.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 -0.5730155110359192 -0.8195135593414307 -0.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 -0.6310006976127625 -0.7757499814033508 -0.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.3164159059524536 -0.9486068487167358 -0.0 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.3672292232513428 -0.9301126003265381 -0.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.3164159059524536 -0.9486068487167358 -0.0 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.4603717029094696 -0.887691855430603 -0.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.4943388104438782 -0.869228184223175 -0.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.4603717029094696 -0.887691855430603 -0.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.23322245478630066 0.9724112749099731 -0.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.19345682859420776 0.9810785055160522 -0.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.23322245478630066 0.9724112749099731 -0.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 -0.32877591252326965 -0.9443953037261963 -0.0 0.023186177015304565 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 -0.2553483545780182 -0.9668263792991638 -0.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 -0.32877591252326965 -0.9443953037261963 -0.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 -0.2839455306529999 0.47178563475608826 -0.8816797137260437 -0.0 0.02717110514640808 0.7124300003051758 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556320011615753 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 0.21605446934700012 0.47178563475608826 -0.8816797137260437 -0.0 0.4537268579006195 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 -0.5263221859931946 -0.8502761721611023 -0.0 0.03908824920654297 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 -0.4847559928894043 -0.8746299743652344 -0.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 -0.5263221859931946 -0.8502761721611023 -0.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 -0.23126927018165588 0.9728690385818481 -0.0 0.10354465246200562 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 -0.28141117095947266 0.9595629572868347 -0.0 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 -0.23126927018165588 0.9728690385818481 -0.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.921079158782959 0.3892941176891327 -0.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.9283425211906433 0.3716544210910797 -0.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.921079158782959 0.3892941176891327 -0.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579584002494812 0.7141270637512207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103503465652466 0.5503014326095581 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085653066635132 0.5522264838218689 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 -0.9546800255775452 -0.29752495884895325 -0.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 0.21605446934700012 -0.9529099464416504 -0.3031708598136902 -0.0 0.6036663055419922 0.2522021532058716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 -0.9546800255775452 -0.29752495884895325 -0.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 -0.2839455306529999 0.26642659306526184 -0.9638355374336243 -0.0 0.9535930156707764 0.3801887631416321 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.3164159059524536 -0.9486068487167358 -0.0 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 0.21605445444583893 0.26642659306526184 -0.9638355374336243 -0.0 0.5339774489402771 0.22114479541778564 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.42597734928131104 -0.904721200466156 -0.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.4603717029094696 -0.887691855430603 -0.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.42597734928131104 -0.904721200466156 -0.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 -0.2839455306529999 0.2771080732345581 0.9608142375946045 -0.0 0.9801024794578552 0.8133453130722046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.23322245478630066 0.9724112749099731 -0.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 0.21605448424816132 0.2771080732345581 0.9608142375946045 -0.0 0.5711308121681213 0.6254566311836243 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 -0.2839455306529999 0.5498825311660767 -0.8352305889129639 -0.0 0.02917507290840149 0.7101532816886902 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 0.21605446934700012 0.47178563475608826 -0.8816797137260437 -0.0 0.4537268579006195 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 0.21605446934700012 0.5498825311660767 -0.8352305889129639 -0.0 0.45199093222618103 0.5508368015289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 -0.4847559928894043 -0.8746299743652344 -0.0 0.03632086515426636 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 -0.4444410502910614 -0.8957793116569519 -0.0 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 -0.4847559928894043 -0.8746299743652344 -0.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.21759697794914246 -0.9760124683380127 -0.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 0.21605445444583893 0.26642659306526184 -0.9638355374336243 -0.0 0.5339774489402771 0.22114479541778564 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.21759697794914246 -0.9760124683380127 -0.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 -0.2839455306529999 0.5101473927497864 -0.8600726127624512 -0.0 1.0128761529922485 0.42947977781295776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.5372173190116882 -0.843409538269043 -0.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 0.21605445444583893 0.5101168751716614 -0.8600726127624512 -0.0 0.5725734233856201 0.23772281408309937 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558334350585938 0.7118881940841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.5120236873626709 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103503465652466 0.5503014326095581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.3254493772983551 0.9455549716949463 -0.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 0.21605448424816132 0.2771080732345581 0.9608142375946045 -0.0 0.5711308121681213 0.6254566311836243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.3254493772983551 0.9455549716949463 -0.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 -0.2553483545780182 -0.9668263792991638 -0.0 0.016234666109085083 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 -0.18515579402446747 -0.982695996761322 -0.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 -0.2553483545780182 -0.9668263792991638 -0.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 -0.2839455306529999 -0.9529099464416504 -0.3032013773918152 -0.0 0.9897835850715637 0.4357222318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 -0.9508957266807556 -0.3094271719455719 -0.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 0.21605446934700012 -0.9529099464416504 -0.3031708598136902 -0.0 0.6036663055419922 0.2522021532058716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 -0.28141117095947266 0.9595629572868347 -0.0 0.10965383052825928 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 -0.335001677274704 0.9421979188919067 -0.0 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 -0.28141117095947266 0.9595629572868347 -0.0 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.3904538154602051 -0.9205908179283142 -0.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.42597734928131104 -0.904721200466156 -0.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.3904538154602051 -0.9205908179283142 -0.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 -0.2839455306529999 0.6188543438911438 -0.7854548692703247 -0.0 0.03036937117576599 0.7084847688674927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 0.21605446934700012 0.5498825311660767 -0.8352305889129639 -0.0 0.45199093222618103 0.5508368015289307 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 0.21605446934700012 0.6188543438911438 -0.7854548692703247 -0.0 0.4509287476539612 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 -0.4444410502910614 -0.8957793116569519 -0.0 0.033449530601501465 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 -0.4040650725364685 -0.9147007465362549 -0.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 -0.4444410502910614 -0.8957793116569519 -0.0 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.17029328644275665 -0.9853816032409668 -0.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.21759697794914246 -0.9760124683380127 -0.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.17029328644275665 -0.9853816032409668 -0.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.4820703864097595 -0.8761253952980042 -0.0 1.0153790712356567 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 0.21605445444583893 0.5101168751716614 -0.8600726127624512 -0.0 0.5725734233856201 0.23772281408309937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.4820703864097595 -0.8761253952980042 -0.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538769721984863 0.7094813585281372 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.5120236873626709 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.3784600496292114 0.9255958795547485 -0.0 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.3254493772983551 0.9455549716949463 -0.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.3784600496292114 0.9255958795547485 -0.0 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 -0.18515579402446747 -0.982695996761322 -0.0 0.008848100900650024 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 -0.1190221905708313 -0.9928891658782959 -0.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 -0.18515579402446747 -0.982695996761322 -0.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 -0.5730155110359192 -0.8195135593414307 -0.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 -0.5124973058700562 -0.8586688041687012 -0.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 -0.5730155110359192 -0.8195135593414307 -0.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 -0.335001677274704 0.9421979188919067 -0.0 0.1150856614112854 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 -0.39191868901252747 0.9199804663658142 -0.0 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 -0.335001677274704 0.9421979188919067 -0.0 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.35383158922195435 -0.9353007674217224 -0.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.3904538154602051 -0.9205908179283142 -0.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.35383158922195435 -0.9353007674217224 -0.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712271451950073 -0.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 -0.4040650725364685 -0.9147007465362549 -0.0 0.030506521463394165 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 -0.3629566431045532 -0.9317911267280579 -0.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 -0.4040650725364685 -0.9147007465362549 -0.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 -0.2839455306529999 0.12475966662168503 -0.9921567440032959 -0.0 0.968092679977417 0.37479931116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.17029328644275665 -0.9853816032409668 -0.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 0.21605445444583893 0.12475966662168503 -0.9921567440032959 -0.0 0.5133183598518372 0.21246552467346191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.9137852191925049 0.4061403274536133 -0.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.921079158782959 0.3892941176891327 -0.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.9137852191925049 0.4061403274536133 -0.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.4292428493499756 0.9031647443771362 -0.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.3784600496292114 0.9255958795547485 -0.0 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.4292428493499756 0.9031647443771362 -0.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 -0.9508957266807556 -0.3094271719455719 -0.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 0.21605445444583893 -0.9486373662948608 -0.3163243532180786 -0.0 0.6054056882858276 0.2484617829322815 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 -0.9508957266807556 -0.3094271719455719 -0.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.6719870567321777 -0.7405316233634949 -0.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 0.21605446934700012 0.6188543438911438 -0.7854548692703247 -0.0 0.4509287476539612 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.6719870567321777 -0.7405316233634949 -0.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 -0.39191868901252747 0.9199804663658142 -0.0 0.11988469958305359 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 -0.4516434073448181 0.8921781182289124 -0.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 -0.39191868901252747 0.9199804663658142 -0.0 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.08117923140525818 -0.9966734647750854 -0.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 0.21605445444583893 0.12475966662168503 -0.9921567440032959 -0.0 0.5133183598518372 0.21246552467346191 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.08117923140525818 -0.9966734647750854 -0.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.3161717653274536 -0.9486678838729858 -0.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.35383158922195435 -0.9353007674217224 -0.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.3161717653274536 -0.9486678838729858 -0.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 -0.1190221905708313 -0.9928891658782959 -0.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 -0.05743583291769028 -0.9983214735984802 -0.0 1.476330280303955 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 -0.1190221905708313 -0.9928891658782959 -0.0 1.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 -0.3629566431045532 -0.9317911267280579 -0.0 0.027490437030792236 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 -0.3629566431045532 -0.9317911267280579 -0.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.4530472755432129 -0.8914456367492676 -0.0 1.0179073810577393 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.4820703864097595 -0.8761253952980042 -0.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.4530472755432129 -0.8914456367492676 -0.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.4697103798389435 0.8828089237213135 -0.0 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.4292428493499756 0.9031647443771362 -0.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.4697103798389435 0.8828089237213135 -0.0 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 -0.2839455306529999 -0.9486373662948608 -0.3163243532180786 -0.0 0.989022433757782 0.43149906396865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 -0.9460432529449463 -0.3239845037460327 -0.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 0.21605445444583893 -0.9486373662948608 -0.3163243532180786 -0.0 0.6054056882858276 0.2484617829322815 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 -0.2839455306529999 0.7252418398857117 -0.6884670257568359 -0.0 0.03240564465522766 0.7049999833106995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.6719870567321777 -0.7405316233634949 -0.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 0.21605446934700012 0.7252418398857117 -0.6884670257568359 -0.0 0.44905880093574524 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 -0.4516434073448181 0.8921781182289124 -0.0 0.12409523129463196 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 -0.5134739279747009 0.8580889105796814 -0.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 -0.4516434073448181 0.8921781182289124 -0.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 -0.2839455306529999 0.039674062281847 -0.99920654296875 -0.0 0.9786159992218018 0.373282253742218 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.08117923140525818 -0.9966734647750854 -0.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 0.21605445444583893 0.039674062281847 -0.99920654296875 -0.0 0.49765321612358093 0.20969903469085693 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150936245918274 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.2776573896408081 -0.9606616497039795 -0.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.3161717653274536 -0.9486678838729858 -0.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.2776573896408081 -0.9606616497039795 -0.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 -0.05743583291769028 -0.9983214735984802 -0.0 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 0.21605445444583893 -0.004181035794317722 -0.999969482421875 -0.0 1.4893549680709839 0.20935219526290894 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 -0.05743583291769028 -0.9983214735984802 -0.0 1.476330280303955 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 -0.5124973058700562 -0.8586688041687012 -0.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 -0.4504531919956207 -0.8927884697914124 -0.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 -0.5124973058700562 -0.8586688041687012 -0.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 -0.32139042019844055 -0.9469283223152161 -0.0 0.02440011501312256 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 -0.2796105742454529 -0.9600818157196045 -0.0 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 -0.2839455306529999 -0.004181035794317722 -0.999969482421875 -0.0 0.9841258525848389 0.3731839060783386 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 0.21605445444583893 0.039674062281847 -0.99920654296875 -0.0 0.49765321612358093 0.20969903469085693 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 0.21605445444583893 -0.004181035794317722 -0.999969482421875 -0.0 0.4893549680709839 0.20935219526290894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 -0.2839455306529999 0.5051729083061218 0.8630024194717407 -0.0 0.959189236164093 0.7965185046195984 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.4697103798389435 0.8828089237213135 -0.0 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 0.21605448424816132 0.5051729083061218 0.8630024194717407 -0.0 0.5859435200691223 0.6153281331062317 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 -0.2839455306529999 -1.0 0.0 -0.0 0.07622396945953369 0.8483100533485413 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 0.21605448424816132 -1.0 0.0 -0.0 0.4341694116592407 0.6617535948753357 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 0.21605446934700012 -1.0 0.0 -0.0 0.4373004734516144 0.6980294585227966 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 -0.2839455306529999 0.7772759199142456 -0.6291085481643677 -0.0 0.03325092792510986 0.7031859159469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 0.21605446934700012 0.7252418398857117 -0.6884670257568359 -0.0 0.44905880093574524 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 0.21605446934700012 0.7772759199142456 -0.6291085481643677 -0.0 0.44824984669685364 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.9064607620239258 0.4222540855407715 -0.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.9137852191925049 0.4061403274536133 -0.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.9064607620239258 0.4222540855407715 -0.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503920078277588 0.7042019963264465 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165054798126221 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150936245918274 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.2385021448135376 -0.9711294770240784 -0.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.2776573896408081 -0.9606616497039795 -0.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.2385021448135376 -0.9711294770240784 -0.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.5418866276741028 0.8404186964035034 -0.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 0.21605448424816132 0.5051729083061218 0.8630024194717407 -0.0 0.5859435200691223 0.6153281331062317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.5418866276741028 0.8404186964035034 -0.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 0.8829363584518433 0.837841272354126 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.4373004734516144 0.6980294585227966 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.5445256233215332 0.6925103664398193 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 -0.2796105742454529 -0.9600818157196045 -0.0 0.021234214305877686 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 -0.2378612607717514 -0.9712820649147034 -0.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 -0.2796105742454529 -0.9600818157196045 -0.0 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 -0.5134739279747009 0.8580889105796814 -0.0 0.12776002287864685 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 -0.573870062828064 0.8189031481742859 -0.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 -0.5134739279747009 0.8580889105796814 -0.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 1.0703219175338745 0.8121410012245178 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.5467431545257568 0.6560397148132324 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.4341694116592407 0.6617535948753357 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 -0.2839455306529999 0.42316964268684387 -0.9060335159301758 -0.0 1.0204609632492065 0.42125678062438965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.4530472755432129 -0.8914456367492676 -0.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 0.21605445444583893 0.42316964268684387 -0.9060335159301758 -0.0 0.5622788071632385 0.22790998220443726 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 -0.2839455306529999 1.0 0.0 -0.0 0.8911066055297852 0.8022257685661316 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 0.21605446934700012 0.999969482421875 0.0 -0.0 0.5445256233215332 0.6925103664398193 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 0.21605448424816132 1.0 0.0 -0.0 0.5467431545257568 0.6560397148132324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 -0.9460432529449463 -0.3239845037460327 -0.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 0.21605445444583893 -0.9430524706840515 -0.3325907289981842 -0.0 0.6070125102996826 0.24522966146469116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 -0.9460432529449463 -0.3239845037460327 -0.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 -0.2839455306529999 0.826776921749115 -0.5624866485595703 -0.0 0.0339830219745636 0.7013248801231384 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 0.21605446934700012 0.7772759199142456 -0.6291085481643677 -0.0 0.44824984669685364 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 0.21605446934700012 0.826776921749115 -0.5624866485595703 -0.0 0.4475242495536804 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889223575592041 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772623777389526 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.484412431716919 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488427639007568 0.701339602470398 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165054798126221 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.1988280862569809 -0.9800103902816772 -0.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.2385021448135376 -0.9711294770240784 -0.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.1988280862569809 -0.9800103902816772 -0.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 -0.2378612607717514 -0.9712820649147034 -0.0 0.01799166202545166 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 -0.19635608792304993 -0.9804986715316772 -0.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 -0.2378612607717514 -0.9712820649147034 -0.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.9786590337753296 0.7900840640068054 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.484412431716919 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.49122709035873413 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.39243751764297485 -0.9197668433189392 -0.0 1.0230402946472168 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 0.21605445444583893 0.42316964268684387 -0.9060335159301758 -0.0 0.5622788071632385 0.22790998220443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.39243751764297485 -0.9197668433189392 -0.0 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 -0.2839455306529999 -0.9430524706840515 -0.3325907289981842 -0.0 0.9883145093917847 0.4278113842010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 -0.939573347568512 -0.3422955870628357 -0.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 0.21605445444583893 -0.9430524706840515 -0.3325907289981842 -0.0 0.6070125102996826 0.24522966146469116 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 -0.2839455306529999 0.8721274733543396 -0.48924222588539124 -0.0 0.03460294008255005 0.6994173526763916 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 0.21605446934700012 0.826776921749115 -0.5624866485595703 -0.0 0.4475242495536804 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 0.21605446934700012 0.8721274733543396 -0.48924222588539124 -0.0 0.446882039308548 0.5414314270019531 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.49122709035873413 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02811935544013977 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.158879354596138 -0.9872737526893616 -0.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.1988280862569809 -0.9800103902816772 -0.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.158879354596138 -0.9872737526893616 -0.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 1.4704532623291016 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772623777389526 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 -0.4504531919956207 -0.8927884697914124 -0.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 -0.3879207670688629 -0.921689510345459 -0.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 -0.4504531919956207 -0.8927884697914124 -0.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.9117404818534851 -0.4107486307621002 -0.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 0.21605446934700012 0.8721274733543396 -0.48924222588539124 -0.0 0.446882039308548 0.5414314270019531 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.9117404818534851 -0.4107486307621002 -0.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 -0.19635608792304993 -0.9804986715316772 -0.0 0.014671623706817627 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 -0.15540024638175964 -0.9878231287002563 -0.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 -0.19635608792304993 -0.9804986715316772 -0.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.9540696144104004 0.299539178609848 -0.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.9540696144104004 0.299539178609848 -0.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.9027680158615112 0.4300973415374756 -0.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.9064607620239258 0.4222540855407715 -0.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.9027680158615112 0.4300973415374756 -0.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.036156296730041504 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.1188390776515007 -0.9928891658782959 -0.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.158879354596138 -0.9872737526893616 -0.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.1188390776515007 -0.9928891658782959 -0.0 1.4840677976608276 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 0.009852409362792969 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 0.47045332193374634 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 -0.15540024638175964 -0.9878231287002563 -0.0 0.011273443698883057 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 -0.11511582136154175 -0.9933469891548157 -0.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 -0.15540024638175964 -0.9878231287002563 -0.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.36082032322883606 -0.9326151013374329 -0.0 1.025646448135376 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.39243751764297485 -0.9197668433189392 -0.0 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.36082032322883606 -0.9326151013374329 -0.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.5190862417221069 0.5353896021842957 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 -0.939573347568512 -0.3422955870628357 -0.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 0.21605445444583893 -0.9354838728904724 -0.35331279039382935 -0.0 0.6084837913513184 0.2424808144569397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 -0.939573347568512 -0.3422955870628357 -0.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345867037773132 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0788903459906578 -0.9968565702438354 -0.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.1188390776515007 -0.9928891658782959 -0.0 1.4840677976608276 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0788903459906578 -0.9968565702438354 -0.0 1.479734182357788 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019345253705978394 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 -0.3879207670688629 -0.921689510345459 -0.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 -0.3258766531944275 -0.9454023838043213 -0.0 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 -0.3879207670688629 -0.921689510345459 -0.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 -0.2839455306529999 0.9444258213043213 -0.32862329483032227 -0.0 0.03551158308982849 0.6954619884490967 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.9117404818534851 -0.4107486307621002 -0.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 0.21605446934700012 0.9444258213043213 -0.32862329483032227 -0.0 0.4458465576171875 0.5377424359321594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 -0.11511582136154175 -0.9933469891548157 -0.0 0.007796823978424072 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 -0.07571642100811005 -0.9971007108688354 -0.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 -0.11511582136154175 -0.9933469891548157 -0.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461220502853394 0.6951749324798584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 0.21605446934700012 -0.8272042274475098 -0.5618457794189453 -0.0 0.5202562808990479 0.532355546951294 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.5190862417221069 0.5353896021842957 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239929914474487 0.7676823139190674 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298394560813904 0.6121901869773865 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 -0.2839455306529999 0.32856225967407227 -0.9444563388824463 -0.0 1.0282809734344482 0.41469669342041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.36082032322883606 -0.9326151013374329 -0.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 0.21605445444583893 0.32856225967407227 -0.9444563388824463 -0.0 0.55098956823349 0.22027724981307983 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 -0.2839455306529999 -0.00039674062281847 0.999969482421875 -0.0 0.0064716339111328125 0.7823371291160583 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 0.21605446934700012 -0.047090061008930206 0.9988707900047302 -0.0 0.46527335047721863 0.618800163269043 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 0.21605446934700012 -0.00039674062281847 0.999969482421875 -0.0 0.47247588634490967 0.6193457841873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.039246805012226105 -0.99920654296875 -0.0 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0788903459906578 -0.9968565702438354 -0.0 1.479734182357788 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.039246805012226105 -0.99920654296875 -0.0 1.4753739833831787 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 -0.2839455306529999 -0.9354838728904724 -0.35331279039382935 -0.0 0.9876574277877808 0.4246361255645752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 0.21605445444583893 -0.9332560300827026 -0.35914182662963867 -0.0 0.609167754650116 0.24128073453903198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 0.21605445444583893 -0.9354838728904724 -0.35331279039382935 -0.0 0.6084837913513184 0.2424808144569397 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298394560813904 0.6121901869773865 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 -0.2839455306529999 0.9696035385131836 -0.24460585415363312 -0.0 0.03580290079116821 0.6934131383895874 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 0.21605446934700012 0.9444258213043213 -0.32862329483032227 -0.0 0.4458465576171875 0.5377424359321594 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 0.21605446934700012 0.9696035385131836 -0.24460585415363312 -0.0 0.44545286893844604 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 -0.07571642100811005 -0.9971007108688354 -0.0 0.00424155592918396 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 0.21605445444583893 -0.03735465556383133 -0.999298095703125 -0.0 0.4665878415107727 0.31540971994400024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 -0.07571642100811005 -0.9971007108688354 -0.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.9873474836349487 0.42323416471481323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.609167754650116 0.24128073453903198 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.04541154205799103 0.9989623427391052 -0.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 0.21605446934700012 -0.00039674062281847 0.999969482421875 -0.0 1.4724758863449097 0.6193457841873169 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.04541154205799103 0.9989623427391052 -0.0 1.4800961017608643 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.050045162439346313 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 -0.2839455306529999 -0.047090061008930206 0.9988707900047302 -0.0 0.01697695255279541 0.7806612253189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 -0.09668263792991638 0.9953001737594604 -0.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 0.21605446934700012 -0.047090061008930206 0.9988707900047302 -0.0 0.46527335047721863 0.618800163269043 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16061891615390778 -0.0 0.03598657250404358 0.691315770149231 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 0.21605446934700012 0.9696035385131836 -0.24460585415363312 -0.0 0.44545286893844604 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16061891615390778 -0.0 0.44514212012290955 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 -0.2839455306529999 -0.03735465556383133 -0.999298095703125 -0.0 1.0006078481674194 0.47387105226516724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 0.21605445444583893 0.0005188146606087685 -0.999969482421875 -0.0 1.4709974527359009 0.31470078229904175 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 0.21605445444583893 -0.03735465556383133 -0.999298095703125 -0.0 1.466587781906128 0.31540971994400024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.29584643244743347 -0.9552293419837952 -0.0 1.030943751335144 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 0.21605445444583893 0.32856225967407227 -0.9444563388824463 -0.0 0.55098956823349 0.22027724981307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.29584643244743347 -0.9551988244056702 -0.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 -0.2839455306529999 -0.8272042274475098 -0.5618457794189453 -0.0 0.9449471235275269 0.6918734312057495 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213466882705688 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 0.21605446934700012 -0.8272042274475098 -0.5618457794189453 -0.0 0.5202562808990479 0.532355546951294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 -0.2839455306529999 0.0005188146606087685 -0.999969482421875 -0.0 0.9968962669372559 0.4735258221626282 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.039246805012226105 -0.99920654296875 -0.0 1.4753739833831787 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 0.21605445444583893 0.0005188146606087685 -0.999969482421875 -0.0 1.4709974527359009 0.31470078229904175 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 -0.3258766531944275 -0.9454023838043213 -0.0 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 -0.26517534255981445 -0.964171290397644 -0.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 -0.3258766531944275 -0.9454023838043213 -0.0 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9031037092208862 -0.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9031037092208862 -0.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 -0.2839455306529999 -1.0 0.0 -0.0 0.06410348415374756 0.897499144077301 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 0.21605448424816132 -1.0 0.0 -0.0 0.44902312755584717 0.7215856313705444 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 0.21605446934700012 -1.0 0.0 -0.0 0.4513011574745178 0.7462323307991028 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.09347819536924362 0.9956053495407104 -0.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.04541154205799103 0.9989623427391052 -0.0 1.4800961017608643 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.09347819536924362 0.9956053495407104 -0.0 1.4874799251556396 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594471096992493 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 -0.09668263792991638 0.9953001737594604 -0.0 0.02686828374862671 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 -0.14902187883853912 0.9888302087783813 -0.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 -0.09668263792991638 0.9953001737594604 -0.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16061891615390778 -0.0 0.44514212012290955 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 0.8537107706069946 0.8676877617835999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.4513011574745178 0.7462323307991028 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.5506380796432495 0.7342168092727661 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 -0.2839455306529999 0.2627948820590973 -0.964842677116394 -0.0 1.0336346626281738 0.41123098134994507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.29584643244743347 -0.9551988244056702 -0.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 0.21605445444583893 0.2627948820590973 -0.964842677116394 -0.0 0.5429552793502808 0.21644043922424316 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.9438934922218323 0.688425600528717 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223576426506042 0.5258004665374756 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213466882705688 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 1.0582492351531982 0.8729636073112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.5528576970100403 0.7088805437088013 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.44902312755584717 0.7215856313705444 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.4920804500579834 0.8705404996871948 -0.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9031037092208862 -0.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.4920804500579834 0.8705404996871948 -0.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 -0.2839455306529999 1.0 0.0 -0.0 0.8631843328475952 0.8435003757476807 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 0.21605446934700012 0.999969482421875 0.0 -0.0 0.5506380796432495 0.7342168092727661 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 0.21605448424816132 1.0 0.0 -0.0 0.5528576970100403 0.7088805437088013 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.2294991910457611 -0.9732962846755981 -0.0 1.036353588104248 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 0.21605445444583893 0.2627948820590973 -0.964842677116394 -0.0 0.5429552793502808 0.21644043922424316 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.2295297086238861 -0.9732962846755981 -0.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.14444410800933838 0.9895016551017761 -0.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.09347819536924362 0.9956053495407104 -0.0 0.48747992515563965 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.14444410800933838 0.9895016551017761 -0.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.061192870140075684 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429594278335571 0.6848307847976685 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41044342517852783 -0.0 0.5232900381088257 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223576426506042 0.5258004665374756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.12790176272392273 0.820160448551178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 0.21605446934700012 -1.0 0.0 -0.0 0.39915820956230164 0.6972336173057556 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 -0.26517534255981445 -0.964171290397644 -0.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 -0.20651875436306 -0.9784234166145325 -0.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 -0.26517534255981445 -0.964171290397644 -0.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 -0.14902187883853912 0.9888302087783813 -0.0 0.0360887348651886 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 -0.20380260050296783 0.9790032505989075 -0.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 -0.14902187883853912 0.9888302087783813 -0.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41044342517852783 -0.0 0.9421427249908447 0.6810876131057739 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241435170173645 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41044342517852783 -0.0 0.5232900381088257 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.07377690076828003 0.8601027727127075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 0.21605446934700012 0.0 0.999969482421875 -0.0 0.39915820956230164 0.6972336173057556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.43876373767852783 0.7131302356719971 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.4920804500579834 0.8705404996871948 -0.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.19614246487617493 -0.9805597066879272 -0.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.2295297086238861 -0.9732962846755981 -0.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.19614246487617493 -0.9805597066879272 -0.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.1981566846370697 0.9801629781723022 -0.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.14444410800933838 0.9895016551017761 -0.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.1981566846370697 0.9801629781723022 -0.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582790613174438 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414418935775757 0.6771947145462036 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249184966087341 0.5147104263305664 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241435170173645 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 1.0 0.0 -0.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.43876373767852783 0.7131302356719971 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 1.0 0.0 -0.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 -0.20651875436306 -0.9784234166145325 -0.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 -0.1504257321357727 -0.9886165857315063 -0.0 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 -0.20651875436306 -0.9784234166145325 -0.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 -0.20380260050296783 0.9790032505989075 -0.0 0.04460981488227844 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 -0.2606891095638275 0.965391993522644 -0.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 -0.20380260050296783 0.9790032505989075 -0.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 -0.2839455306529999 -0.0021973326802253723 0.999969482421875 -0.0 0.9794628620147705 0.7999661564826965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 -0.0710165724158287 0.9974669814109802 -0.0 1.48317551612854 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 0.21605448424816132 -0.0021973326802253723 0.999969482421875 -0.0 0.48874813318252563 0.6407021284103394 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.940855085849762 0.6731501817703247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 0.21605446934700012 -0.9576708078384399 -0.28785058856010437 -0.0 0.5256151556968689 0.5106664299964905 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249184966087341 0.5147104263305664 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.6065859198570251 0.7949766516685486 -0.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.6065859198570251 0.7949766516685486 -0.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.9403803944587708 0.6689517498016357 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5256151556968689 0.5106664299964905 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 -0.2839455306529999 0.062410350888967514 0.9980468153953552 -0.0 0.970216691493988 0.7989437580108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 0.21605448424816132 -0.0021973326802253723 0.999969482421875 -0.0 0.48874813318252563 0.6407021284103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 0.21605448424816132 0.062410350888967514 0.9980468153953552 -0.0 0.494787335395813 0.6400524377822876 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 -0.2839455306529999 0.16275520622730255 -0.9866328835487366 -0.0 0.041874319314956665 0.40737658739089966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.19614246487617493 -0.9805597066879272 -0.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 0.21605445444583893 0.16275520622730255 -0.9866328835487366 -0.0 0.5302750468254089 0.21262699365615845 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.2543107271194458 0.9671010375022888 -0.0 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.1981566846370697 0.9801629781723022 -0.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.2543107271194458 0.9671010375022888 -0.0 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988894939422607 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 -0.2606891095638275 0.965391993522644 -0.0 0.05242618918418884 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 -0.3191625773906708 0.9476912617683411 -0.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 -0.2606891095638275 0.965391993522644 -0.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.1273842602968216 0.9918210506439209 -0.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 0.21605448424816132 0.062410350888967514 0.9980468153953552 -0.0 0.494787335395813 0.6400524377822876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.1273842602968216 0.9918210506439209 -0.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.12952055037021637 -0.9915463924407959 -0.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 0.21605445444583893 0.16275520622730255 -0.9866328835487366 -0.0 0.5302750468254089 0.21262699365615845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.12952055037021637 -0.9915463924407959 -0.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 -0.0710165724158287 0.9974669814109802 -0.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 -0.143803209066391 0.9895932078361511 -0.0 1.4777190685272217 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 -0.0710165724158287 0.9974669814109802 -0.0 1.48317551612854 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 -0.1504257321357727 -0.9886165857315063 -0.0 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 -0.09726248681545258 -0.9952391386032104 -0.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 -0.1504257321357727 -0.9886165857315063 -0.0 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.6065859198570251 0.7949766516685486 -0.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 -0.2839455306529999 1.0 0.00027466658502817154 -0.0 0.03603509068489075 0.6869707107543945 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00027466658502817154 -0.0 0.4447696805000305 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.31247901916503906 0.9499191045761108 -0.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.2543107271194458 0.9671010375022888 -0.0 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.31247901916503906 0.9499191045761108 -0.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341375946998596 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 -0.3191625773906708 0.9476912617683411 -0.0 0.059550583362579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 -0.3786126375198364 0.9255348443984985 -0.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 -0.3191625773906708 0.9476912617683411 -0.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 -0.2839455306529999 0.9967650175094604 0.07998901605606079 -0.0 0.035921454429626465 0.6850959062576294 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00027466658502817154 -0.0 0.4447696805000305 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 0.21605446934700012 0.9967650175094604 0.07998901605606079 -0.0 0.44472062587738037 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.19467757642269135 0.9808648824691772 -0.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.1273842602968216 0.9918210506439209 -0.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.19467757642269135 0.9808648824691772 -0.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.09653004258871078 -0.9953001737594604 -0.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.12952055037021637 -0.9915463924407959 -0.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.09653004258871078 -0.9953001737594604 -0.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 -0.143803209066391 0.9895932078361511 -0.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 -0.21765801310539246 0.9760124683380127 -0.0 1.4723812341690063 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 -0.143803209066391 0.9895932078361511 -0.0 1.4777190685272217 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 -0.09726248681545258 -0.9952391386032104 -0.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 -0.047242652624845505 -0.9988707900047302 -0.0 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 -0.09726248681545258 -0.9952391386032104 -0.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 -0.2839455306529999 0.9867854714393616 0.16187018156051636 -0.0 0.03572002053260803 0.6832842230796814 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 0.21605446934700012 0.9967650175094604 0.07998901605606079 -0.0 0.44472062587738037 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 0.21605446934700012 0.9867854714393616 0.16187018156051636 -0.0 0.4447501301765442 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.3720511496067047 0.9281899333000183 -0.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.31247901916503906 0.9499191045761108 -0.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.3720511496067047 0.9281899333000183 -0.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.0764627754688263 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671651601791382 -0.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 -0.3786126375198364 0.9255348443984985 -0.0 0.06600850820541382 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 -0.4382152855396271 0.8988311290740967 -0.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 -0.3786126375198364 0.9255348443984985 -0.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 0.21605446934700012 0.9867854714393616 0.16187018156051636 -0.0 0.4447501301765442 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.2634052634239197 0.964659571647644 -0.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.19467757642269135 0.9808648824691772 -0.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.2634052634239197 0.964659571647644 -0.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 -0.2839455306529999 0.0639057606458664 -0.9979247450828552 -0.0 0.05035579204559326 0.40511953830718994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.09653004258871078 -0.9953001737594604 -0.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 0.21605445444583893 0.0639057606458664 -0.9979247450828552 -0.0 0.5170558094978333 0.2112075686454773 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 -0.21765801310539246 0.9760124683380127 -0.0 0.004474729299545288 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 -0.29132968187332153 0.9566026926040649 -0.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 -0.21765801310539246 0.9760124683380127 -0.0 0.47238123416900635 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954370021820068 0.7221288681030273 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563127994537354 0.5777288675308228 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 -0.2839455306529999 0.0317087322473526 -0.999481201171875 -0.0 0.05323415994644165 0.40471965074539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 0.21605445444583893 0.0639057606458664 -0.9979247450828552 -0.0 0.5170558094978333 0.2112075686454773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 0.21605445444583893 0.0317087322473526 -0.999481201171875 -0.0 0.5125783681869507 0.21127527952194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.43232521414756775 0.9016999006271362 -0.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.3720511496067047 0.9281899333000183 -0.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.43232521414756775 0.9016999006271362 -0.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 -0.047242652624845505 -0.9988707900047302 -0.0 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 0.21605445444583893 -0.0036011841148138046 -0.999969482421875 -0.0 0.5080843567848206 0.21161502599716187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 -0.047242652624845505 -0.9988707900047302 -0.0 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 -0.4382152855396271 0.8988311290740967 -0.0 0.07183364033699036 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 -0.49723806977272034 0.8676106929779053 -0.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 -0.4382152855396271 0.8988311290740967 -0.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563127994537354 0.5777288675308228 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266090750694275 -0.0 0.03505560755729675 0.6798492670059204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266090750694275 -0.0 0.44504600763320923 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.3325602114200592 0.9430524706840515 -0.0 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.2634052634239197 0.964659571647644 -0.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.3325602114200592 0.9430524706840515 -0.0 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 -0.2839455306529999 -0.0036011841148138046 -0.999969482421875 -0.0 0.05613693594932556 0.4044952392578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 0.21605445444583893 0.0317087322473526 -0.999481201171875 -0.0 0.5125783681869507 0.21127527952194214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 0.21605445444583893 -0.0036011841148138046 -0.999969482421875 -0.0 0.5080843567848206 0.21161502599716187 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671651601791382 -0.0 0.07909229397773743 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671651601791382 -0.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 -0.29132968187332153 0.9566026926040649 -0.0 0.012227356433868408 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 -0.3634754419326782 0.9315775036811829 -0.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 -0.29132968187332153 0.9566026926040649 -0.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.2695856988430023 0.7537210583686829 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 0.21605446934700012 -1.0 0.0 -0.0 0.48620134592056274 0.5522602796554565 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 -0.2839455306529999 0.9139072895050049 0.4058656692504883 -0.0 0.034592777490615845 0.6782253980636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266090750694275 -0.0 0.44504600763320923 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 0.21605446934700012 0.9139072895050049 0.4058656692504883 -0.0 0.44531333446502686 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.4924161434173584 0.8703268766403198 -0.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.43232521414756775 0.9016999006271362 -0.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.4924161434173584 0.8703268766403198 -0.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.2427637279033661 0.8259592056274414 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.48620134592056274 0.5522602796554565 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.5239897966384888 0.5807267427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 -0.49723806977272034 0.8676106929779053 -0.0 0.07706430554389954 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 -0.5547044277191162 0.8320261240005493 -0.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 -0.49723806977272034 0.8676106929779053 -0.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.034042567014694214 0.6766630411148071 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 0.21605446934700012 0.9139072895050049 0.4058656692504883 -0.0 0.44531333446502686 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566109776496887 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.40098270773887634 0.9160435795783997 -0.0 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.3325602114200592 0.9430524706840515 -0.0 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.40098270773887634 0.9160435795783997 -0.0 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133035898208618 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 -0.3634754419326782 0.9315775036811829 -0.0 0.019606024026870728 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 -0.43293556571006775 0.9013947248458862 -0.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 -0.3634754419326782 0.9315775036811829 -0.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 1.0 0.0 -0.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.5239897966384888 0.5807267427444458 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 1.0 0.0 -0.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 -0.2839455306529999 0.8348032832145691 0.5504928827285767 -0.0 0.0334048867225647 0.6751617789268494 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566109776496887 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 0.21605446934700012 0.8348032832145691 0.5504928827285767 -0.0 0.4460899531841278 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 -0.2839455306529999 -0.7364421486854553 0.6764732599258423 -0.0 1.0224628448486328 0.9180190563201904 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 -0.7364421486854553 0.6764732599258423 -0.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 0.21605446934700012 -0.7364421486854553 0.6764732599258423 -0.0 0.6141318082809448 0.6253429651260376 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.5514389276504517 0.8341929316520691 -0.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.4924161434173584 0.8703268766403198 -0.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.5514389276504517 0.8341929316520691 -0.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 -0.5547044277191162 0.8320261240005493 -0.0 0.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 -0.6098513603210449 0.7924741506576538 -0.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 -0.5547044277191162 0.8320261240005493 -0.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.7896358966827393 0.6135441064834595 -0.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 0.21605446934700012 0.8348032832145691 0.5504928827285767 -0.0 0.4460899531841278 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.7896358966827393 0.6135441064834595 -0.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.4675740897655487 0.8839381337165833 -0.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.40098270773887634 0.9160435795783997 -0.0 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.4675740897655487 0.8839381337165833 -0.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9051481485366821 0.8624878525733948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 0.21605446934700012 0.0 0.999969482421875 -0.0 0.6141318082809448 0.6253429651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.6648842692375183 0.6340523362159729 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320179581642151 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 -0.43293556571006775 0.9013947248458862 -0.0 0.02657860517501831 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 -0.4985809028148651 0.8668172359466553 -0.0 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 -0.43293556571006775 0.9013947248458862 -0.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.7189550399780273 -0.69502854347229 -0.0 1.0517487525939941 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 0.21605446934700012 0.7189550399780273 -0.69502854347229 -0.0 0.6648842692375183 0.6340523362159729 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.7189550399780273 -0.69502854347229 -0.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.6084475517272949 0.7935727834701538 -0.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.5514389276504517 0.8341929316520691 -0.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.6084475517272949 0.7935727834701538 -0.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 -0.6098513603210449 0.7924741506576538 -0.0 0.08590298891067505 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 -0.6600238084793091 0.7512131333351135 -0.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 -0.6098513603210449 0.7924741506576538 -0.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.0318661630153656 0.6723392009735107 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.7896358966827393 0.6135441064834595 -0.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.44719308614730835 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.5312051773071289 0.8472243547439575 -0.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.4675740897655487 0.8839381337165833 -0.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.5312051773071289 0.8472243547439575 -0.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472853899002075 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 -0.4985809028148651 0.8668172359466553 -0.0 0.03312462568283081 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 -0.5596179366111755 0.8287301063537598 -0.0 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 -0.4985809028148651 0.8668172359466553 -0.0 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 -0.2839455306529999 0.694570779800415 0.7194128036499023 -0.0 0.030964285135269165 0.6710160970687866 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.44719308614730835 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 0.21605446934700012 0.694570779800415 0.7194128036499023 -0.0 0.4478687345981598 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 -0.2839455306529999 0.8383129239082336 0.5451521277427673 -0.0 0.9581927061080933 0.48435938358306885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.8383129239082336 0.5451521277427673 -0.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 0.21605445444583893 0.8383129239082336 0.5451521277427673 -0.0 0.7767902612686157 0.3119933009147644 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.6599017381668091 0.7513352036476135 -0.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.6084475517272949 0.7935727834701538 -0.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.6599017381668091 0.7513352036476135 -0.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 -0.6600238084793091 0.7512131333351135 -0.0 0.08958971500396729 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 -0.7042756676673889 0.7098910212516785 -0.0 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 -0.6600238084793091 0.7512131333351135 -0.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029973596334457397 0.6697502732276917 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 0.21605446934700012 0.694570779800415 0.7194128036499023 -0.0 0.4478687345981598 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.44862794876098633 0.5109697580337524 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.5909909605979919 0.8066347241401672 -0.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.5312051773071289 0.8472243547439575 -0.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.5909909605979919 0.8066347241401672 -0.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 1.4873418807983398 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.4844026565551758 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 -0.5596179366111755 0.8287301063537598 -0.0 0.039234012365341187 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 -0.6155278086662292 0.7881100177764893 -0.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 -0.5596179366111755 0.8287301063537598 -0.0 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 0.7143467664718628 -0.6997588872909546 -0.0 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.7143467664718628 -0.6997588872909546 -0.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 0.7143467664718628 -0.6997588872909546 -0.0 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.02889317274093628 0.6685408353805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.44862794876098633 0.5109697580337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.44947174191474915 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 -0.8628498315811157 -0.5054170489311218 -0.0 1.0921339988708496 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 0.21605445444583893 -0.8628498315811157 -0.5054170489311218 -0.0 0.7532170414924622 0.2296181321144104 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 -0.8628498315811157 -0.5054170489311218 -0.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.7043672204017639 0.7097994685173035 -0.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.6599017381668091 0.7513352036476135 -0.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.7043672204017639 0.7097994685173035 -0.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 1.000122308731079 0.4517623782157898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.7767902612686157 0.3119933009147644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.7532170414924622 0.2296181321144104 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 -0.7042756676673889 0.7098910212516785 -0.0 0.09280359745025635 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 -0.7458418607711792 0.6660969853401184 -0.0 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 -0.7042756676673889 0.7098910212516785 -0.0 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 -0.2839455306529999 0.4928129017353058 0.8701131939888 -0.0 0.02706146240234375 0.6669514179229736 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.44947174191474915 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 0.21605446934700012 0.4928129017353058 0.8701131939888 -0.0 0.45094093680381775 0.5075438618659973 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.6462294459342957 0.7631153464317322 -0.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.5909909605979919 0.8066347241401672 -0.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.6462294459342957 0.7631153464317322 -0.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.5862001776695251 0.0954430103302002 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592939376831055 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 -0.6155278086662292 0.7881100177764893 -0.0 0.044904887676239014 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 -0.6660054326057434 0.7459028959274292 -0.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 -0.6155278086662292 0.7881100177764893 -0.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.0974959135055542 0.39517903327941895 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 1.0 0.0 -0.0 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 0.21605445444583893 1.0 0.0 -0.0 0.5862001776695251 0.0954430103302002 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.0246143639087677 0.6653087139129639 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 0.21605446934700012 0.4928129017353058 0.8701131939888 -0.0 0.45094093680381775 0.5075438618659973 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294734835624695 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.7461165189743042 0.6657918095588684 -0.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.7043672204017639 0.7097994685173035 -0.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.7460860013961792 0.6657918095588684 -0.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 -0.7458418607711792 0.6660969853401184 -0.0 0.0955517590045929 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 -0.7863399386405945 0.617755651473999 -0.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 -0.7458418607711792 0.6660969853401184 -0.0 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807125329971313 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772038459777832 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294734835624695 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.6964934468269348 0.7175206542015076 -0.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.6462294459342957 0.7631153464317322 -0.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.6964934468269348 0.7175206542015076 -0.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 -0.6660054326057434 0.7459028959274292 -0.0 0.050142377614974976 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 -0.7111117839813232 0.7030549049377441 -0.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 -0.6660054326057434 0.7459028959274292 -0.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.9933216571807861 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.4844026565551758 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807125329971313 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.7873775362968445 0.616412878036499 -0.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.7460860013961792 0.6657918095588684 -0.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.7873775362968445 0.616412878036499 -0.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016478657722473 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 0.48734185099601746 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 -0.7863399386405945 0.617755651473999 -0.0 0.09787419438362122 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 -0.8250068426132202 0.5650807023048401 -0.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 -0.7863399386405945 0.617755651473999 -0.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840862274169922 0.6617412567138672 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586208760738373 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.7440717816352844 0.6680806875228882 -0.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.6964934468269348 0.7175206542015076 -0.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.7440717816352844 0.6680806875228882 -0.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 -0.7111117839813232 0.7030549049377441 -0.0 0.05495721101760864 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 -0.7320169806480408 0.6812646985054016 -0.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 -0.7111117839813232 0.7030549049377441 -0.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 1.002132534980774 0.7248519659042358 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772038459777832 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 1.473877191543579 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013497740030288696 0.6597400307655334 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586208760738373 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623155891895294 0.49790245294570923 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811038374900818 0.7252907752990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.49287116527557373 0.5609472990036011 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016478657722473 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 -0.2839455306529999 0.28867459297180176 0.9573961496353149 -0.0 0.008508294820785522 0.6575323343276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623155891895294 0.49790245294570923 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 0.21605446934700012 0.28867459297180176 0.9573961496353149 -0.0 0.46660125255584717 0.49503183364868164 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.791283905506134 0.6114383339881897 -0.0 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.7440717816352844 0.6680806875228882 -0.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.791283905506134 0.6114383339881897 -0.0 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.8273873329162598 0.5616016387939453 -0.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.7873775362968445 0.616412878036499 -0.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.8273873329162598 0.5616016387939453 -0.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159007549285889 0.723981499671936 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 0.4738771617412567 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.47073280811309814 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 0.002871215343475342 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 0.21605446934700012 0.28867459297180176 0.9573961496353149 -0.0 0.46660125255584717 0.49503183364868164 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 0.47149011492729187 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.04907376319169998 -0.9987792372703552 -0.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0008545182645320892 -0.999969482421875 -0.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.04907376319169998 -0.9987792372703552 -0.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776194095611572 0.7246223092079163 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954608380794525 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.49287116527557373 0.5609472990036011 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.9208349585533142 -0.3899044692516327 -0.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 0.21605446934700012 0.8912014961242676 -0.4535660743713379 -0.0 0.4322170615196228 0.5300252437591553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.9208349585533142 -0.3899044692516327 -0.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0008545182645320892 -0.999969482421875 -0.0 1.002812147140503 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 0.21605446934700012 -0.04580828174948692 -0.9989318251609802 -0.0 1.47673761844635 0.5481581687927246 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0008545182645320892 -0.999969482421875 -0.0 1.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 -0.2839455306529999 0.8912014961242676 -0.4535660743713379 -0.0 0.0478324294090271 0.6794154644012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 0.21605446934700012 0.8547929525375366 -0.5189062356948853 -0.0 0.4342000186443329 0.5359824895858765 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 0.21605446934700012 0.8912014961242676 -0.4535660743713379 -0.0 0.4322170615196228 0.5300252437591553 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 -0.8250068426132202 0.5650807023048401 -0.0 0.09980490803718567 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 -0.861079752445221 0.5084383487701416 -0.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 -0.8250068426132202 0.5650807023048401 -0.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009928256273269653 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.47073280811309814 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.4677700698375702 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.99659264087677 0.6522814631462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 1.4714901447296143 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769904613494873 0.48872560262680054 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.9742997884750366 0.7237284183502197 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.4979337751865387 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954608380794525 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 -0.2839455306529999 0.8547929525375366 -0.5189062356948853 -0.0 0.04617246985435486 0.685994029045105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 0.21605446934700012 0.8112429976463318 -0.5846735835075378 -0.0 0.43633294105529785 0.5414889454841614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 0.21605446934700012 0.8547929525375366 -0.5189062356948853 -0.0 0.4342000186443329 0.5359824895858765 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 -0.2839455306529999 -0.04580828174948692 -0.9989318251609802 -0.0 0.9981156587600708 0.7116611003875732 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 -0.09424115717411041 -0.9955443143844604 -0.0 1.4803522825241089 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 0.21605446934700012 -0.04580828174948692 -0.9989318251609802 -0.0 1.47673761844635 0.5481581687927246 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896879196166992 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769904613494873 0.48872560262680054 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.4831054210662842 0.4853035807609558 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 -0.2839455306529999 0.8112429976463318 -0.5846735835075378 -0.0 0.044251084327697754 0.6921672821044922 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 0.21605446934700012 0.7638782858848572 -0.6453138589859009 -0.0 0.43861955404281616 0.5465542078018188 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 0.21605446934700012 0.8112429976463318 -0.5846735835075378 -0.0 0.43633294105529785 0.5414889454841614 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439029455184937 0.7215795516967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.4677700698375702 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.46498802304267883 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.4831054210662842 0.4853035807609558 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 -0.2839455306529999 0.10028382390737534 -0.9949339032173157 -0.0 0.011683493852615356 0.7100631594657898 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.04907376319169998 -0.9987792372703552 -0.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 0.21605446934700012 0.10028382390737534 -0.9949339032173157 -0.0 0.4658893346786499 0.5478110909461975 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.9711482524871826 0.7226188778877258 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002904534339905 0.5582360029220581 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.4979337751865387 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384203910827637 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 -0.2839455306529999 0.7638782858848572 -0.6453138589859009 -0.0 0.04205942153930664 0.6979392766952515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 0.21605446934700012 0.7173070311546326 -0.6967375874519348 -0.0 0.44102004170417786 0.5511919260025024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 0.21605446934700012 0.7638782858848572 -0.6453138589859009 -0.0 0.43861955404281616 0.5465542078018188 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.8651387095451355 0.5015106797218323 -0.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.8273873329162598 0.5616016387939453 -0.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.8651387095451355 0.5015106797218323 -0.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 -0.2839455306529999 0.7173070311546326 -0.6967375874519348 -0.0 0.039642542600631714 0.7033029794692993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 0.21605446934700012 0.6687520742416382 -0.7434614300727844 -0.0 0.4434939920902252 0.5554137825965881 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 0.21605446934700012 0.7173070311546326 -0.6967375874519348 -0.0 0.44102004170417786 0.5511919260025024 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 -0.09424115717411041 -0.9955443143844604 -0.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 0.2160544991493225 -0.14563432335853577 -0.9893185496330261 -0.0 1.4838416576385498 0.5467280149459839 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 -0.09424115717411041 -0.9955443143844604 -0.0 1.4803522825241089 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.01669195294380188 0.7200818061828613 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.46498802304267883 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238505840301514 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741263389587402 0.6414514780044556 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971461296081543 0.4780082702636719 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.9681668281555176 0.7213025093078613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025313496589661 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002904534339905 0.5582360029220581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 -0.2839455306529999 0.6687520742416382 -0.7434614300727844 -0.0 0.03704848885536194 0.7082504034042358 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 0.21605446934700012 0.6146733164787292 -0.7887508869171143 -0.0 0.44604381918907166 0.5592247247695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 0.21605446934700012 0.6687520742416382 -0.7434614300727844 -0.0 0.4434939920902252 0.5554137825965881 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655718803405762 0.6368474364280701 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971461296081543 0.4780082702636719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050248503684998 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 -0.2839455306529999 0.15363018214702606 -0.9880977869033813 -0.0 0.015869349241256714 0.7086991667747498 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 0.21605446934700012 0.10028382390737534 -0.9949339032173157 -0.0 0.4658893346786499 0.5478110909461975 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 0.2160544991493225 0.15366069972515106 -0.9880977869033813 -0.0 0.46249303221702576 0.5470205545425415 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 -0.2839455306529999 0.6146733164787292 -0.7887508869171143 -0.0 0.03427475690841675 0.712781548500061 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 0.21605446934700012 0.5552842617034912 -0.8316293954849243 -0.0 0.4486721456050873 0.562628984451294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 0.21605446934700012 0.6146733164787292 -0.7887508869171143 -0.0 0.44604381918907166 0.5592247247695923 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 -0.2839455306529999 -0.14563432335853577 -0.9893185496330261 -0.0 0.989181399345398 0.7105580568313599 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 0.2160544991493225 -0.19977416098117828 -0.9798272848129272 -0.0 1.4872045516967773 0.5455227494239807 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 0.2160544991493225 -0.14563432335853577 -0.9893185496330261 -0.0 1.4838416576385498 0.5467280149459839 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.019688516855239868 0.718406081199646 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238505840301514 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599595367908478 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050248503684998 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.965356707572937 0.7197878360748291 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025313496589661 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226513862609863 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 -0.2839455306529999 0.5552842617034912 -0.8316293954849243 -0.0 0.031319111585617065 0.7168951034545898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 0.21605446934700012 0.491225928068161 -0.8710287809371948 -0.0 0.4513814449310303 0.5656299591064453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 0.21605446934700012 0.5552842617034912 -0.8316293954849243 -0.0 0.4486721456050873 0.562628984451294 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 -0.2839455306529999 0.20883816480636597 -0.9779351353645325 -0.0 0.01988041400909424 0.7069413065910339 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 0.2160544991493225 0.15366069972515106 -0.9880977869033813 -0.0 0.46249303221702576 0.5470205545425415 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 0.2160544991493225 0.20883816480636597 -0.9779351353645325 -0.0 0.459200918674469 0.5458978414535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 -0.2839455306529999 0.491225928068161 -0.8710287809371948 -0.0 0.028180181980133057 0.7205884456634521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 0.21605446934700012 0.42326119542121887 -0.9059724807739258 -0.0 0.4541741907596588 0.5682300329208374 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 0.21605446934700012 0.491225928068161 -0.8710287809371948 -0.0 0.4513814449310303 0.5656299591064453 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 -0.2839455306529999 -0.19977416098117828 -0.9798272848129272 -0.0 0.9849684238433838 0.7093707323074341 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 0.21605446934700012 -0.2563554644584656 -0.9665517210960388 -0.0 0.49043959379196167 0.5439919233322144 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 0.2160544991493225 -0.19977416098117828 -0.9798272848129272 -0.0 0.48720449209213257 0.5455227494239807 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712576627731323 -0.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712576627731323 -0.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.949317455291748 0.6264196634292603 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.520378828048706 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 -0.2839455306529999 0.42326119542121887 -0.9059724807739258 -0.0 0.024857670068740845 0.7238576412200928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 0.21605446934700012 0.35254982113838196 -0.9357585310935974 -0.0 0.45705264806747437 0.5704306364059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 0.21605446934700012 0.42326119542121887 -0.9059724807739258 -0.0 0.4541741907596588 0.5682300329208374 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.34348583221435547 -0.939146101474762 -0.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599595367908478 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.34348583221435547 -0.939146101474762 -0.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.520378828048706 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 -0.2839455306529999 0.26538896560668945 -0.964140772819519 -0.0 0.02371254563331604 0.704802393913269 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 0.2160544991493225 0.20883816480636597 -0.9779351353645325 -0.0 0.459200918674469 0.5458978414535522 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 0.2160544991493225 0.26535844802856445 -0.964140772819519 -0.0 0.45601141452789307 0.5444464683532715 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186376333236694 -0.0 0.5066683292388916 0.5539826154708862 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042612671852112 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 -0.2839455306529999 0.35254982113838196 -0.9357585310935974 -0.0 0.021352380514144897 0.7266969680786133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 0.21605446934700012 0.28028199076652527 -0.9598986506462097 -0.0 0.4600192606449127 0.5722322463989258 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 0.21605446934700012 0.35254982113838196 -0.9357585310935974 -0.0 0.45705264806747437 0.5704306364059448 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 -0.2839455306529999 -0.2563554644584656 -0.9665517210960388 -0.0 0.9809385538101196 0.7077746987342834 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 0.2160544991493225 -0.31492048501968384 -0.9490951299667358 -0.0 0.4935469329357147 0.5421359539031982 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 0.21605446934700012 -0.2563554644584656 -0.9665517210960388 -0.0 0.49043959379196167 0.5439919233322144 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 -0.2839455306529999 0.28028199076652527 -0.9598986506462097 -0.0 0.0176660418510437 0.7290995121002197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 0.21605446934700012 0.20780053734779358 -0.9781487584114075 -0.0 0.46307632327079773 0.573634147644043 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 0.21605446934700012 0.28028199076652527 -0.9598986506462097 -0.0 0.4600192606449127 0.5722322463989258 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356687068939209 0.6151248216629028 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337929725646973 0.45867598056793213 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 -0.2839455306529999 0.32270270586013794 -0.9464705586433411 -0.0 0.02736303210258484 0.7022942900657654 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 0.2160544991493225 0.26535844802856445 -0.964140772819519 -0.0 0.45601141452789307 0.5444464683532715 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 0.21605446934700012 0.32270270586013794 -0.9464705586433411 -0.0 0.45292267203330994 0.5426691770553589 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 -0.2839455306529999 0.20780053734779358 -0.9781487584114075 -0.0 0.013802021741867065 0.7310566306114197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.13629566133022308 -0.9906613230705261 -0.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 0.21605446934700012 0.20780053734779358 -0.9781487584114075 -0.0 0.46307632327079773 0.573634147644043 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 -0.2839455306529999 -0.31492048501968384 -0.9490951299667358 -0.0 0.9770991802215576 0.7057809829711914 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 0.2160544991493225 -0.3748893737792969 -0.9270607829093933 -0.0 0.4965265691280365 0.5399552583694458 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 0.2160544991493225 -0.31492048501968384 -0.9490951299667358 -0.0 0.4935469329357147 0.5421359539031982 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.02492421865463257 0.7145699262619019 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.34348583221435547 -0.939146101474762 -0.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556327164173126 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337929725646973 0.45867598056793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186376333236694 -0.0 0.9602524042129517 0.716193437576294 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085660219192505 0.5522264242172241 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186376333236694 -0.0 0.5066683292388916 0.5539826154708862 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831767201423645 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.13629566133022308 -0.9906613230705261 -0.0 0.009765088558197021 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.06689657270908356 -0.9977416396141052 -0.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.13629566133022308 -0.9906613230705261 -0.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 -0.2839455306529999 0.3802300989627838 -0.9248634576797485 -0.0 0.030830442905426025 0.6994280815124512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 0.21605446934700012 0.32270270586013794 -0.9464705586433411 -0.0 0.45292267203330994 0.5426691770553589 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 0.21605446934700012 0.3802300989627838 -0.9248634576797485 -0.0 0.44993263483047485 0.5405683517456055 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 -0.2839455306529999 -0.3748893737792969 -0.9270607829093933 -0.0 0.9734561443328857 0.7034001350402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 -0.4354686141014099 -0.9001739621162415 -0.0 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 0.2160544991493225 -0.3748893737792969 -0.9270607829093933 -0.0 0.4965265691280365 0.5399552583694458 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 -0.2839455306529999 0.47175511717796326 -0.8817102313041687 -0.0 0.027170389890670776 0.7124302387237549 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556327164173126 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 0.21605446934700012 0.47175511717796326 -0.8817102313041687 -0.0 0.45372745394706726 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244864583015442 0.6035186052322388 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452778935432434 0.45086079835891724 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579575061798096 0.7141268253326416 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103511214256287 0.5503013730049133 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085660219192505 0.5522264242172241 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.8353221416473389 0.5496993660926819 -0.0 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.791283905506134 0.6114383339881897 -0.0 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.8353221416473389 0.5496993660926819 -0.0 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452778935432434 0.45086079835891724 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.06689657270908356 -0.9977416396141052 -0.0 0.005561709403991699 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 -9.155552834272385e-05 -1.0 -0.0 0.47280994057655334 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.06689657270908356 -0.9977416396141052 -0.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.4372081756591797 -0.8993194103240967 -0.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 0.21605446934700012 0.3802300989627838 -0.9248634576797485 -0.0 0.44993263483047485 0.5405683517456055 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.4372081756591797 -0.8993194103240967 -0.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593053579330444 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 -0.861079752445221 0.5084383487701416 -0.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 -0.8938566446304321 0.44828638434410095 -0.0 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 -0.861079752445221 0.5084383487701416 -0.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 -0.2839455306529999 0.5499130487442017 -0.8352000713348389 -0.0 0.029174327850341797 0.7101534605026245 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 0.21605446934700012 0.47175511717796326 -0.8817102313041687 -0.0 0.45372745394706726 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 0.21605446934700012 0.5499130487442017 -0.8352000713348389 -0.0 0.4519915282726288 0.5508368611335754 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558324813842773 0.7118879556655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.512024462223053 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103511214256287 0.5503013730049133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.8735617995262146 0.4866481423377991 -0.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.8353221416473389 0.5496993660926819 -0.0 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.8735617995262146 0.4866481423377991 -0.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8961150050163269 -0.0 0.9155389070510864 0.5919426679611206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8961150050163269 -0.0 0.5549329519271851 0.44296425580978394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 -9.155552834272385e-05 -1.0 -0.0 1.0011998414993286 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 1.4762153625488281 0.5751924514770508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 -9.155552834272385e-05 -1.0 -0.0 1.472809910774231 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.8996551632881165 0.4365672767162323 -0.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.8651387095451355 0.5015106797218323 -0.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.8996551632881165 0.4365672767162323 -0.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 -0.4354686141014099 -0.9001739621162415 -0.0 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 0.21605448424816132 -0.49580371379852295 -0.8684042096138 -0.0 0.5021044611930847 0.5346182584762573 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 -0.4354686141014099 -0.9001739621162415 -0.0 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 -0.2839455306529999 0.6188848614692688 -0.7854548692703247 -0.0 0.030368447303771973 0.708484947681427 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 0.21605446934700012 0.5499130487442017 -0.8352000713348389 -0.0 0.4519915282726288 0.5508368611335754 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 0.21605446934700012 0.6188848614692688 -0.7854548692703247 -0.0 0.4509294629096985 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8738059401512146 -0.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8961150050163269 -0.0 0.5549329519271851 0.44296425580978394 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8738059401512146 -0.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 0.9967317581176758 0.7342070937156677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 1.4795198440551758 0.5745433568954468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 1.4762153625488281 0.5751924514770508 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538760185241699 0.7094811201095581 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.512024462223053 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.07325360178947449 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 0.9923887252807617 0.7337468862533569 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 1.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 1.4795198440551758 0.5745433568954468 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 -0.2839455306529999 0.4929349720478058 -0.870021641254425 -0.0 0.03721565008163452 0.6926599740982056 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.4372081756591797 -0.8993194103240967 -0.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 0.21605448424816132 0.4929349720478058 -0.870021641254425 -0.0 0.4442402422428131 0.5354030728340149 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 -0.2839455306529999 -0.49580371379852295 -0.8684042096138 -0.0 0.9667751789093018 0.697515070438385 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 0.21605448424816132 -0.5549790859222412 -0.8318430185317993 -0.0 0.5047039985656738 0.5314600467681885 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 0.21605448424816132 -0.49580371379852295 -0.8684042096138 -0.0 0.5021044611930847 0.5346182584762573 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712576627731323 -0.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8738059401512146 -0.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.07027402520179749 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.9059114456176758 0.42344433069229126 -0.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.8735617995262146 0.4866481423377991 -0.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.9059114456176758 0.42344433069229126 -0.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.6719565391540527 -0.7405621409416199 -0.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 0.21605446934700012 0.6188848614692688 -0.7854548692703247 -0.0 0.4509294629096985 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.6719565391540527 -0.7405621409416199 -0.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 1.4858251810073853 0.5719797611236572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 1.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 -0.2839455306529999 0.5467696189880371 -0.8372753262519836 -0.0 0.0401361882686615 0.6887743473052979 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 0.21605448424816132 0.4929349720478058 -0.870021641254425 -0.0 0.4442402422428131 0.5354030728340149 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 0.21605448424816132 0.5467696189880371 -0.8372753262519836 -0.0 0.4415329396724701 0.5323407649993896 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 -0.2839455306529999 -0.5549790859222412 -0.8318430185317993 -0.0 0.9637418985366821 0.6940274238586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 0.21605448424816132 -0.6120181679725647 -0.790826141834259 -0.0 0.507178783416748 0.527972936630249 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 0.21605448424816132 -0.5549790859222412 -0.8318430185317993 -0.0 0.5047039985656738 0.5314600467681885 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057615399360657 0.574970006942749 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662946105003357 0.43078118562698364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 0.9841297268867493 0.7313036918640137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.4888266324996948 0.5700627565383911 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 0.48582515120506287 0.5719797611236572 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 -0.2839455306529999 0.7252113223075867 -0.6884975433349609 -0.0 0.032404929399490356 0.7050001621246338 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.6719565391540527 -0.7405621409416199 -0.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 0.21605446934700012 0.7252113223075867 -0.6884975433349609 -0.0 0.4490593671798706 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662946105003357 0.43078118562698364 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 0.9802356958389282 0.7293342351913452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.49172791838645935 0.5677193403244019 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.4888266324996948 0.5700627565383911 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.5980406999588013 -0.8014465570449829 -0.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 0.21605448424816132 0.5467696189880371 -0.8372753262519836 -0.0 0.4415329396724701 0.5323407649993896 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.5980406999588013 -0.8014465570449829 -0.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150942206382751 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.0669773519039154 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 -0.2839455306529999 -0.6120181679725647 -0.790826141834259 -0.0 0.960913896560669 0.690185546875 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 -0.6639912128448486 -0.747703492641449 -0.0 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 0.21605448424816132 -0.6120181679725647 -0.790826141834259 -0.0 0.507178783416748 0.527972936630249 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.976510763168335 0.7268737554550171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.49453020095825195 0.564945638179779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.49172791838645935 0.5677193403244019 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 -0.2839455306529999 0.7773064374923706 -0.6290780305862427 -0.0 0.033250242471694946 0.7031860947608948 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 0.21605446934700012 0.7252113223075867 -0.6884975433349609 -0.0 0.4490593671798706 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 0.21605446934700012 0.7773064374923706 -0.6290780305862427 -0.0 0.448250412940979 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101657390594482 -0.0 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101657390594482 -0.0 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9729613661766052 0.7239266633987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.49453020095825195 0.564945638179779 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.9299905300140381 0.3675343990325928 -0.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.8996551632881165 0.4365672767162323 -0.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.9299905300140381 0.3675343990325928 -0.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503912925720215 0.7042018175125122 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165062546730042 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150942206382751 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334775686264038 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 -0.5591601133346558 -0.8290352821350098 -0.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 -0.8938566446304321 0.44828638434410095 -0.0 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 -0.922727108001709 0.38541826605796814 -0.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 -0.8938566446304321 0.44828638434410095 -0.0 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.9324930310249329 0.36115604639053345 -0.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.9059114456176758 0.42344433069229126 -0.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.9324930310249329 0.36115604639053345 -0.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 -0.2839455306529999 0.82680743932724 -0.5624561309814453 -0.0 0.033982157707214355 0.7013251185417175 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 0.21605446934700012 0.7773064374923706 -0.6290780305862427 -0.0 0.448250412940979 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 0.21605446934700012 0.82680743932724 -0.5624561309814453 -0.0 0.4475249648094177 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101657390594482 -0.0 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.49984145164489746 0.5580880641937256 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 -0.2839455306529999 0.6477859020233154 -0.7618030309677124 -0.0 0.045444995164871216 0.6800327301025391 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.5980406999588013 -0.8014465570449829 -0.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 0.21605448424816132 0.6477859020233154 -0.7618030309677124 -0.0 0.4363836348056793 0.525258481502533 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488418102264404 0.7013393640518188 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165062546730042 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 -0.5591601133346558 -0.8290352821350098 -0.0 0.05936765670776367 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 -0.5591601133346558 -0.8290352821350098 -0.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 -0.6639912128448486 -0.747703492641449 -0.0 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 0.21605448424816132 -0.7098605036735535 -0.7043061852455139 -0.0 0.5117291212081909 0.5201003551483154 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 -0.6639912128448486 -0.747703492641449 -0.0 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.9664097428321838 0.7165837287902832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5023529529571533 0.5539916753768921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.49984145164489746 0.5580880641937256 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 -0.2839455306529999 0.8720968961715698 -0.48930326104164124 -0.0 0.03460210561752319 0.6994175910949707 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 0.21605446934700012 0.82680743932724 -0.5624561309814453 -0.0 0.4475249648094177 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 0.21605446934700012 0.8720968961715698 -0.48930326104164124 -0.0 0.4468827545642853 0.5414315462112427 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9634137153625488 0.7121903896331787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5023529529571533 0.5539916753768921 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 -0.2839455306529999 0.6968291401863098 -0.7172154784202576 -0.0 0.04782417416572571 0.6751836538314819 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 0.21605448424816132 0.6477859020233154 -0.7618030309677124 -0.0 0.4363836348056793 0.525258481502533 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 0.21605448424816132 0.6968291401863098 -0.7172154784202576 -0.0 0.43394935131073 0.5212298631668091 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601981282234192 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191212058067322 0.41234201192855835 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 -0.2839455306529999 -0.7098605036735535 -0.7043061852455139 -0.0 0.9559001922607422 0.6815630197525024 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 -0.7530442476272583 -0.6579485535621643 -0.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 0.21605448424816132 -0.7098605036735535 -0.7043061852455139 -0.0 0.5117291212081909 0.5201003551483154 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.9117099642753601 -0.4108096659183502 -0.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 0.21605446934700012 0.8720968961715698 -0.48930326104164124 -0.0 0.4468827545642853 0.5414315462112427 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.9117099642753601 -0.4108096659183502 -0.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.05196726322174072 0.5626709461212158 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191212058067322 0.41234201192855835 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.9537034034729004 0.3006683588027954 -0.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.9324930310249329 0.36115604639053345 -0.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.9537034034729004 0.3006683588027954 -0.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.9540696144104004 0.299539178609848 -0.0 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.9540696144104004 0.299539178609848 -0.0 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 0.21605446934700012 -0.7774590253829956 -0.6289254426956177 -0.0 0.5070947408676147 0.5444257855415344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.7431256771087646 -0.669148862361908 -0.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 0.21605448424816132 0.6968291401863098 -0.7172154784202576 -0.0 0.43394935131073 0.5212298631668091 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.7431256771087646 -0.669148862361908 -0.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 -0.2839455306529999 -0.7774590253829956 -0.6289254426956177 -0.0 0.9579875469207764 0.7019557952880859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 0.21605446934700012 -0.82644122838974 -0.5630054473876953 -0.0 0.5092871785163879 0.5388861894607544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 0.21605446934700012 -0.7774590253829956 -0.6289254426956177 -0.0 0.5070947408676147 0.5444257855415344 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.519087016582489 0.5353895425796509 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.9553819298744202 0.2953581213951111 -0.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.9299905300140381 0.3675343990325928 -0.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.9553819298744202 0.2953581213951111 -0.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.047177255153656006 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 -0.922727108001709 0.38541826605796814 -0.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 -0.9471724629402161 0.32068848609924316 -0.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 -0.922727108001709 0.38541826605796814 -0.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 -0.2839455306529999 -0.82644122838974 -0.5630054473876953 -0.0 0.9556089639663696 0.6960643529891968 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 -0.8703573942184448 -0.4923551082611084 -0.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 0.21605446934700012 -0.82644122838974 -0.5630054473876953 -0.0 0.5092871785163879 0.5388861894607544 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 -0.2839455306529999 0.9444563388824463 -0.32856225967407227 -0.0 0.035510897636413574 0.6954621076583862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.9117099642753601 -0.4108096659183502 -0.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 0.21605446934700012 0.9444563388824463 -0.32856225967407227 -0.0 0.44584715366363525 0.5377424955368042 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 -0.7530442476272583 -0.6579485535621643 -0.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 0.21605448424816132 -0.7951902747154236 -0.6063417196273804 -0.0 0.5155841708183289 0.5115742087364197 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 -0.7530442476272583 -0.6579485535621643 -0.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461212158203125 0.6951746940612793 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 0.21605446934700012 -0.8272347450256348 -0.5618152618408203 -0.0 0.5202569961547852 0.5323554277420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.519087016582489 0.5353895425796509 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.9700918793678284 0.24268318712711334 -0.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.9537034034729004 0.3006683588027954 -0.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.9700918793678284 0.24268318712711334 -0.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.04161494970321655 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 -0.8703573942184448 -0.4923551082611084 -0.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 0.21605446934700012 -0.9055147171020508 -0.42426830530166626 -0.0 0.513160228729248 0.5260202884674072 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 -0.8703573942184448 -0.4923551082611084 -0.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 -0.2839455306529999 0.7848750352859497 -0.6196172833442688 -0.0 0.051993101835250854 0.6645351648330688 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.7431256771087646 -0.669148862361908 -0.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 0.21605448424816132 0.7848750352859497 -0.6196172833442688 -0.0 0.4293980002403259 0.5121585726737976 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 -0.2839455306529999 0.9696340560913086 -0.24454481899738312 -0.0 0.03580203652381897 0.6934133172035217 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 0.21605446934700012 0.9444563388824463 -0.32856225967407227 -0.0 0.44584715366363525 0.5377424955368042 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 0.21605446934700012 0.9696340560913086 -0.24454481899738312 -0.0 0.44545358419418335 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 -0.2839455306529999 -0.7951902747154236 -0.6063417196273804 -0.0 0.9518887996673584 0.6723135113716125 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 -0.8354136943817139 -0.5495772957801819 -0.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 0.21605448424816132 -0.7951902747154236 -0.6063417196273804 -0.0 0.5155841708183289 0.5115742087364197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 -0.2839455306529999 -0.9055147171020508 -0.42426830530166626 -0.0 0.9517133235931396 0.6825268268585205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 -0.9329813718795776 -0.35990479588508606 -0.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 0.21605446934700012 -0.9055147171020508 -0.42426830530166626 -0.0 0.513160228729248 0.5260202884674072 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3882870078086853 -0.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3882870078086853 -0.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524675965309143 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204047322273254 0.38775986433029175 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16067995131015778 -0.0 0.03598567843437195 0.6913160681724548 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 0.21605446934700012 0.9696340560913086 -0.24454481899738312 -0.0 0.44545358419418335 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16067995131015778 -0.0 0.44514283537864685 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 -0.2839455306529999 -0.8272347450256348 -0.5618152618408203 -0.0 0.9449462890625 0.6918731927871704 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213472843170166 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 0.21605446934700012 -0.8272347450256348 -0.5618152618408203 -0.0 0.5202569961547852 0.5323554277420044 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.8219855427742004 -0.5694754123687744 -0.0 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 0.21605448424816132 0.7848750352859497 -0.6196172833442688 -0.0 0.4293980002403259 0.5121585726737976 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.8219855427742004 -0.5694754123687744 -0.0 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.982207715511322 0.18762779235839844 -0.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.9700918793678284 0.24268318712711334 -0.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.982207715511322 0.18762779235839844 -0.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028043359518051147 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204047322273254 0.38775986433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.9751884341239929 0.2212591916322708 -0.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.9553819298744202 0.2953581213951111 -0.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.9751884341239929 0.2212591916322708 -0.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 -0.2839455306529999 0.9443647861480713 -0.32883694767951965 -0.0 0.05040016770362854 0.6650172472000122 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.9208349585533142 -0.3899044692516327 -0.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 0.21605446934700012 0.9443647861480713 -0.32883694767951965 -0.0 0.42868953943252563 0.5167142152786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16067995131015778 -0.0 0.44514283537864685 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 -0.8354136943817139 -0.5495772957801819 -0.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 0.21605448424816132 -0.8727683424949646 -0.48808252811431885 -0.0 0.5187181234359741 0.5024833083152771 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 -0.8354136943817139 -0.5495772957801819 -0.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 -0.9329813718795776 -0.35990479588508606 -0.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 0.21605446934700012 -0.9539475440979004 -0.299874871969223 -0.0 0.516359806060791 0.510663628578186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 -0.9329813718795776 -0.35990479588508606 -0.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3882870078086853 -0.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.943892776966095 0.6884253621101379 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223584175109863 0.5258004069328308 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213472843170166 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.01998576521873474 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 -0.9471724629402161 0.32068848609924316 -0.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 -0.9669179320335388 0.2550126612186432 -0.0 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 -0.9471724629402161 0.32068848609924316 -0.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429585933685303 0.6848305463790894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41041290760040283 -0.0 0.5232906341552734 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223584175109863 0.5258004069328308 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 -0.2839455306529999 0.9625537991523743 -0.2710043787956238 -0.0 0.05132386088371277 0.657180666923523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 0.21605446934700012 0.9443647861480713 -0.32883694767951965 -0.0 0.42868953943252563 0.5167142152786255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 0.21605446934700012 0.9625537991523743 -0.2710043787956238 -0.0 0.42713963985443115 0.509336531162262 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 -0.2839455306529999 -0.9539475440979004 -0.299874871969223 -0.0 0.9489279985427856 0.6665880680084229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 -0.9696340560913086 -0.24448378384113312 -0.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 0.21605446934700012 -0.9539475440979004 -0.299874871969223 -0.0 0.516359806060791 0.510663628578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41041290760040283 -0.0 0.9421420097351074 0.6810873746871948 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241441130638123 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41041290760040283 -0.0 0.5232906341552734 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 -0.2839455306529999 0.8544571995735168 -0.5194555521011353 -0.0 0.0554124116897583 0.652630627155304 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.8219855427742004 -0.5694754123687744 -0.0 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 0.21605448424816132 0.8544571995735168 -0.5194555521011353 -0.0 0.4252496063709259 0.5017184019088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.011071175336837769 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 0.46977055072784424 0.3677605390548706 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 -0.2839455306529999 -0.8727683424949646 -0.48808252811431885 -0.0 0.9488654136657715 0.6625887155532837 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 0.21605448424816132 -0.9063692092895508 -0.42240670323371887 -0.0 0.5200154185295105 0.4977208375930786 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 0.21605448424816132 -0.8727683424949646 -0.48808252811431885 -0.0 0.5187181234359741 0.5024833083152771 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414411783218384 0.6771945357322693 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249190926551819 0.5147103667259216 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241441130638123 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.9907223582267761 0.1358378827571869 -0.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.982207715511322 0.18762779235839844 -0.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.9907223582267761 0.1358378827571869 -0.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 1.0013197660446167 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811851978302002 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 1.4697705507278442 0.3677605390548706 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 -0.2839455306529999 -0.9063692092895508 -0.42240670323371887 -0.0 0.9477107524871826 0.6575570106506348 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 -0.9354228377342224 -0.35349589586257935 -0.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 0.21605448424816132 -0.9063692092895508 -0.42240670323371887 -0.0 0.5200154185295105 0.4977208375930786 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.9408544301986694 0.6731500029563904 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 0.21605446934700012 -0.9576708078384399 -0.28785058856010437 -0.0 0.5256157517433167 0.5106663703918457 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249190926551819 0.5147103667259216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 -0.2839455306529999 0.9761955738067627 -0.21677297353744507 -0.0 0.052017420530319214 0.6489062309265137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 0.21605446934700012 0.9625537991523743 -0.2710043787956238 -0.0 0.42713963985443115 0.509336531162262 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 0.21605446934700012 0.9761955738067627 -0.21677297353744507 -0.0 0.4257296025753021 0.5014607906341553 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.9403797388076782 0.6689515113830566 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5256157517433167 0.5106663703918457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 -0.9696340560913086 -0.24448378384113312 -0.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 -0.9810479879379272 -0.19373150169849396 -0.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 -0.9696340560913086 -0.24448378384113312 -0.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.8825342655181885 -0.4701986610889435 -0.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 0.21605448424816132 0.8544571995735168 -0.5194555521011353 -0.0 0.4252496063709259 0.5017184019088745 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.8825342655181885 -0.4701986610889435 -0.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936075210571289 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811851978302002 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.9891964197158813 0.14651936292648315 -0.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.9751884341239929 0.2212591916322708 -0.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.9891964197158813 0.14651936292648315 -0.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 -0.2839455306529999 0.9860530495643616 -0.1663258820772171 -0.0 0.052487730979919434 0.6401838064193726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 0.21605446934700012 0.9761955738067627 -0.21677297353744507 -0.0 0.4257296025753021 0.5014607906341553 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 0.21605446934700012 0.9860530495643616 -0.1663258820772171 -0.0 0.424457848072052 0.4930746555328369 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795480966567993 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936075210571289 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 -0.2839455306529999 1.0 0.00030518509447574615 -0.0 0.036034226417541504 0.6869708895683289 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00030518509447574615 -0.0 0.4447703957557678 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 -0.9669179320335388 0.2550126612186432 -0.0 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 -0.981872022151947 0.1893673539161682 -0.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 -0.9669179320335388 0.2550126612186432 -0.0 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.9961546659469604 0.0873439759016037 -0.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.9907223582267761 0.1358378827571869 -0.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.9961546659469604 0.0873439759016037 -0.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 -0.2839455306529999 0.9967955350875854 0.0799279734492302 -0.0 0.035920560359954834 0.6850960850715637 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00030518509447574615 -0.0 0.4447703957557678 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 0.21605446934700012 0.9967955350875854 0.0799279734492302 -0.0 0.4447213411331177 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 -0.9354228377342224 -0.35349589586257935 -0.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 0.21605448424816132 -0.9592577815055847 -0.28247931599617004 -0.0 0.5220695734024048 0.48774731159210205 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 -0.9354228377342224 -0.35349589586257935 -0.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 -0.9810479879379272 -0.19373150169849396 -0.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 0.21605446934700012 -0.9890438318252563 -0.14740440249443054 -0.0 0.5199055075645447 0.4826669692993164 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 -0.9810479879379272 -0.19373150169849396 -0.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097460150718689 0.3499676585197449 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 -0.2839455306529999 0.9868159890174866 0.16180913150310516 -0.0 0.035719335079193115 0.6832844018936157 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 0.21605446934700012 0.9967955350875854 0.0799279734492302 -0.0 0.4447213411331177 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 0.21605446934700012 0.9868159890174866 0.16180913150310516 -0.0 0.44475072622299194 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 -0.2839455306529999 0.9064912796020508 -0.4221625328063965 -0.0 0.058125704526901245 0.6394720077514648 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.8825342655181885 -0.4701986610889435 -0.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 0.21605448424816132 0.9064912796020508 -0.4221625328063965 -0.0 0.42148181796073914 0.4898841977119446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 -0.2839455306529999 0.9927976131439209 -0.11957152187824249 -0.0 0.05274131894111633 0.6310035586357117 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 0.21605446934700012 0.9860530495643616 -0.1663258820772171 -0.0 0.424457848072052 0.4930746555328369 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 0.21605446934700012 0.9927976131439209 -0.11957152187824249 -0.0 0.4233233332633972 0.48416680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.9652423858642578 0.5122944116592407 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.512410044670105 0.34898412227630615 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097460150718689 0.3499676585197449 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 0.21605446934700012 0.9868159890174866 0.16180913150310516 -0.0 0.44475072622299194 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 -0.2839455306529999 -0.9592577815055847 -0.28247931599617004 -0.0 0.9460904598236084 0.6471614837646484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 -0.9775688648223877 -0.21048615872859955 -0.0 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 0.21605448424816132 -0.9592577815055847 -0.28247931599617004 -0.0 0.5220695734024048 0.48774731159210205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 -0.2839455306529999 -0.9890438318252563 -0.14740440249443054 -0.0 0.9467159509658813 0.637975811958313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 -0.9944151043891907 -0.10525833815336227 -0.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 0.21605446934700012 -0.9890438318252563 -0.14740440249443054 -0.0 0.5199055075645447 0.4826669692993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629137516021729 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148946046829224 0.34800630807876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.512410044670105 0.34898412227630615 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.9973449110984802 0.07248146086931229 -0.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.9891964197158813 0.14651936292648315 -0.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.9973449110984802 0.07248146086931229 -0.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 -0.2839455306529999 0.9970701932907104 -0.07647938281297684 -0.0 0.05278405547142029 0.6213566064834595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 0.21605446934700012 0.9927976131439209 -0.11957152187824249 -0.0 0.4233233332633972 0.48416680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 0.21605446934700012 0.9970701932907104 -0.07647938281297684 -0.0 0.42232567071914673 0.4747272729873657 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607535004615784 0.5096025466918945 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148946046829224 0.34800630807876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266701102256775 -0.0 0.035054922103881836 0.6798495054244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266701102256775 -0.0 0.445046603679657 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.9266639947891235 -0.37580493092536926 -0.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 0.21605448424816132 0.9064912796020508 -0.4221625328063965 -0.0 0.42148181796073914 0.4898841977119446 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.9266639947891235 -0.37580493092536926 -0.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.99908447265625 0.04223761707544327 -0.0 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.9961546659469604 0.0873439759016037 -0.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.99908447265625 0.04223761707544327 -0.0 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 -0.2839455306529999 0.9138767719268799 0.4059267044067383 -0.0 0.0345919132232666 0.6782255172729492 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266701102256775 -0.0 0.445046603679657 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 0.21605446934700012 0.9138767719268799 0.4059267044067383 -0.0 0.44531404972076416 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 -0.981872022151947 0.1893673539161682 -0.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 -0.9921872615814209 0.12463758885860443 -0.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 -0.981872022151947 0.1893673539161682 -0.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 -0.9944151043891907 -0.10525833815336227 -0.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 0.21605446934700012 -0.9977416396141052 -0.06692709028720856 -0.0 0.5214253664016724 0.46054428815841675 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 -0.9944151043891907 -0.10525833815336227 -0.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193288922309875 0.3460422158241272 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.03404173254966736 0.6766632795333862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 0.21605446934700012 0.9138767719268799 0.4059267044067383 -0.0 0.44531404972076416 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566184282302856 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 -0.9775688648223877 -0.21048615872859955 -0.0 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 0.21605448424816132 -0.9903256297111511 -0.13870662450790405 -0.0 0.5234003663063049 0.47715163230895996 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 -0.9775688648223877 -0.21048615872859955 -0.0 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 -0.2839455306529999 0.999298095703125 -0.036805324256420135 -0.0 0.052621930837631226 0.6112359762191772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 0.21605446934700012 0.9970701932907104 -0.07647938281297684 -0.0 0.42232567071914673 0.4747272729873657 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 0.21605446934700012 0.999298095703125 -0.036805324256420135 -0.0 0.4214646518230438 0.4647483229637146 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569313526153564 0.5069000720977783 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212814807891846 0.34504401683807373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193288922309875 0.3460422158241272 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 -0.2839455306529999 0.8348338007926941 0.5504318475723267 -0.0 0.03340405225753784 0.6751619577407837 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566184282302856 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 0.21605446934700012 0.8348338007926941 0.5504318475723267 -0.0 0.4460906684398651 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 -0.2839455306529999 -0.9977416396141052 -0.06692709028720856 -0.0 0.9464700222015381 0.6156516075134277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 -0.999481201171875 -0.0320444330573082 -0.0 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 0.21605446934700012 -0.9977416396141052 -0.06692709028720856 -0.0 0.5214253664016724 0.46054428815841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.9434491991996765 -0.33143100142478943 -0.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.9266639947891235 -0.37580493092536926 -0.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.9434491991996765 -0.33143100142478943 -0.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552655220031738 0.5055458545684814 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230599045753479 0.3440280556678772 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212814807891846 0.34504401683807373 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.7896664142608643 0.6135135889053345 -0.0 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 0.21605446934700012 0.8348338007926941 0.5504318475723267 -0.0 0.4460906684398651 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.7896664142608643 0.6135135889053345 -0.0 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 -0.2839455306529999 -0.9903256297111511 -0.13870662450790405 -0.0 0.9453579187393188 0.6363179683685303 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 -0.9976500868797302 -0.06833094358444214 -0.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 0.21605448424816132 -0.9903256297111511 -0.13870662450790405 -0.0 0.5234003663063049 0.47715163230895996 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 1.0 0.00012207403779029846 -0.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.99908447265625 0.04223761707544327 -0.0 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 1.0 0.00012207403779029846 -0.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537605047225952 0.5041895508766174 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246654152870178 0.34298932552337646 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230599045753479 0.3440280556678772 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.999969482421875 0.0060731833800673485 -0.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.9973449110984802 0.07248146086931229 -0.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.999969482421875 0.0060731833800673485 -0.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.0021973326802253723 -0.0 0.05225995182991028 0.600637674331665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 0.21605446934700012 0.999298095703125 -0.036805324256420135 -0.0 0.4214646518230438 0.4647483229637146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.0021973326802253723 -0.0 0.42074114084243774 0.4542253017425537 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524144530296326 0.502831220626831 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.5260999202728271 0.34192365407943726 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246654152870178 0.34298932552337646 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.031865477561950684 0.6723393201828003 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.7896664142608643 0.6135135889053345 -0.0 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.4471936523914337 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 -0.9976500868797302 -0.06833094358444214 -0.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 0.21605448424816132 -0.999969482421875 -0.003723258152604103 -0.0 0.5239977240562439 0.46590250730514526 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 -0.9976500868797302 -0.06833094358444214 -0.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 -0.999481201171875 -0.0320444330573082 -0.0 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 -0.999969482421875 0.0004272591322660446 -0.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 -0.999481201171875 -0.0320444330573082 -0.0 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512251019477844 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.5260999202728271 0.34192365407943726 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 -0.2839455306529999 0.69454026222229 0.7194433212280273 -0.0 0.030963599681854248 0.6710162162780762 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.4471936523914337 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 0.21605446934700012 0.69454026222229 0.7194433212280273 -0.0 0.44786933064460754 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 -0.9921872615814209 0.12463758885860443 -0.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 -0.9956969022750854 0.09256263822317123 -0.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 -0.9921872615814209 0.12463758885860443 -0.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 -0.2839455306529999 0.999603271484375 0.02774132415652275 -0.0 0.0517292320728302 0.5896918773651123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.0021973326802253723 -0.0 0.42074114084243774 0.4542253017425537 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 0.21605446934700012 0.999603271484375 0.02774132415652275 -0.0 0.4201444983482361 0.44329583644866943 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029972761869430542 0.669750452041626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 0.21605446934700012 0.69454026222229 0.7194433212280273 -0.0 0.44786933064460754 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.448628693819046 0.5109696984291077 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 -0.2839455306529999 0.9572435617446899 -0.28919339179992676 -0.0 0.06096261739730835 0.6173686385154724 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.9434491991996765 -0.33143100142478943 -0.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 0.21605448424816132 0.9572435617446899 -0.28919339179992676 -0.0 0.41650107502937317 0.4694640636444092 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.999114990234375 -0.041627246886491776 -0.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 1.0 0.00012207403779029846 -0.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.999114990234375 -0.041627246886491776 -0.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.528460681438446 0.3396955132484436 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.028892487287521362 0.668540894985199 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.448628693819046 0.5109696984291077 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.4494723379611969 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 -0.2839455306529999 -0.999969482421875 -0.003723258152604103 -0.0 0.9454828500747681 0.6250084638595581 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 -0.9985656142234802 0.05301064997911453 -0.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 0.21605448424816132 -0.999969482421875 -0.003723258152604103 -0.0 0.5239977240562439 0.46590250730514526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 -0.999969482421875 0.0004272591322660446 -0.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 0.21605446934700012 -0.999420166015625 0.033783990889787674 -0.0 0.5223656892776489 0.42353588342666626 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 -0.999969482421875 0.0004272591322660446 -0.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493098258972168 0.4987393021583557 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 0.21605446934700012 -0.6999725103378296 -0.7141331434249878 -0.0 0.5293893814086914 0.33852624893188477 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.528460681438446 0.3396955132484436 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 -0.2839455306529999 0.4927823841571808 0.8701131939888 -0.0 0.027060627937316895 0.6669516563415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.4494723379611969 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 0.21605446934700012 0.4927823841571808 0.8701131939888 -0.0 0.45094168186187744 0.5075438022613525 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.9988707900047302 -0.0474562831223011 -0.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.999969482421875 0.0060731833800673485 -0.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.9988707900047302 -0.0474562831223011 -0.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 -0.2839455306529999 0.9983214735984802 0.05777153745293617 -0.0 0.051086753606796265 0.5792196989059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 0.21605446934700012 0.999603271484375 0.02774132415652275 -0.0 0.4201444983482361 0.44329583644866943 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 0.21605446934700012 0.9983214735984802 0.05777153745293617 -0.0 0.4197072982788086 0.4327854514122009 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 -0.2839455306529999 -0.6999725103378296 -0.7141331434249878 -0.0 0.9485805034637451 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301671624183655 0.3372293710708618 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 0.21605446934700012 -0.6999725103378296 -0.7141331434249878 -0.0 0.5293893814086914 0.33852624893188477 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.024613529443740845 0.6653088331222534 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 0.21605446934700012 0.4927823841571808 0.8701131939888 -0.0 0.45094168186187744 0.5075438022613525 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294809341430664 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 -0.2839455306529999 0.9684438705444336 -0.24918362498283386 -0.0 0.061599165201187134 0.6093670129776001 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 0.21605448424816132 0.9572435617446899 -0.28919339179992676 -0.0 0.41650107502937317 0.4694640636444092 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 0.21605448424816132 0.9684438705444336 -0.24918362498283386 -0.0 0.41501089930534363 0.46193617582321167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 -0.2839455306529999 0.9958800077438354 0.09060945361852646 -0.0 0.05033385753631592 0.5692355036735535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 0.21605446934700012 0.9983214735984802 0.05777153745293617 -0.0 0.4197072982788086 0.4327854514122009 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 0.21605446934700012 0.9958800077438354 0.09060945361852646 -0.0 0.41943296790122986 0.42270857095718384 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.034252822399139404 0.5006027221679688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.4315911829471588 0.34482574462890625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294809341430664 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 -0.9985656142234802 0.05301064997911453 -0.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 0.21605448424816132 -0.9942319989204407 0.10705892741680145 -0.0 0.5239424109458923 0.45764970779418945 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 -0.9985656142234802 0.05301064997911453 -0.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 -0.2839455306529999 -0.999420166015625 0.033783990889787674 -0.0 0.9477471709251404 0.5786771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 -0.9974974989891052 0.07034516334533691 -0.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 0.21605446934700012 -0.999420166015625 0.033783990889787674 -0.0 0.5223656892776489 0.42353588342666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 -0.2839455306529999 0.965819239616394 0.25910213589668274 -0.0 0.03346306085586548 0.4952545762062073 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 0.21605446934700012 0.9716482758522034 0.23633533716201782 -0.0 0.4315911829471588 0.34482574462890625 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 0.21605446934700012 0.965819239616394 0.25910213589668274 -0.0 0.4319748282432556 0.3392902612686157 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 -0.12308114767074585 -0.9923703670501709 -0.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 0.21605448424816132 -0.12308114767074585 -0.9923703670501709 -0.0 0.41360267996788025 0.4540458917617798 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 -0.12308114767074585 -0.9923703670501709 -0.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479937553405762 0.49590182304382324 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308826565742493 0.33586663007736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301671624183655 0.3372293710708618 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 -0.2839455306529999 0.9732352495193481 -0.2297128140926361 -0.0 0.062088608741760254 0.6010488271713257 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 0.21605448424816132 0.9684438705444336 -0.24918362498283386 -0.0 0.41501089930534363 0.46193617582321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 0.21605448424816132 0.9732352495193481 -0.2297128140926361 -0.0 0.41360267996788025 0.4540458917617798 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.9962767362594604 -0.08603167533874512 -0.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.999114990234375 -0.041627246886491776 -0.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.9962767362594604 -0.08603167533874512 -0.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840147018432617 0.6617413759231567 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586215019226074 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 -0.2839455306529999 -0.9942319989204407 0.10705892741680145 -0.0 0.9460951685905457 0.6168336868286133 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 -0.9868465065956116 0.16162602603435516 -0.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 0.21605448424816132 -0.9942319989204407 0.10705892741680145 -0.0 0.5239424109458923 0.45764970779418945 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474684596061707 0.49438297748565674 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315366387367249 0.3344380259513855 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308826565742493 0.33586663007736206 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 -0.2839455306529999 0.9919431209564209 0.1265602558851242 -0.0 0.049470871686935425 0.5597488880157471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 0.21605446934700012 0.9958800077438354 0.09060945361852646 -0.0 0.41943296790122986 0.42270857095718384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 0.21605446934700012 0.9919431209564209 0.1265602558851242 -0.0 0.4193257689476013 0.41307467222213745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.5418866276741028 0.8404186964035034 -0.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013496875762939453 0.6597400903701782 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586215019226074 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623163640499115 0.49790239334106445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 -0.9974974989891052 0.07034516334533691 -0.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 -0.9938657879829407 0.11035493016242981 -0.0 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 -0.9974974989891052 0.07034516334533691 -0.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470036625862122 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315366387367249 0.3344380259513855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 -0.573870062828064 0.8189031481742859 -0.0 0.1309186816215515 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 -0.6284676790237427 0.7778252363204956 -0.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 -0.573870062828064 0.8189031481742859 -0.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.9954222440719604 -0.0953703448176384 -0.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.9988707900047302 -0.0474562831223011 -0.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.9954222440719604 -0.0953703448176384 -0.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 -0.2839455306529999 0.28870511054992676 0.9573961496353149 -0.0 0.008507370948791504 0.6575324535369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623163640499115 0.49790239334106445 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 0.21605446934700012 0.28870511054992676 0.9573961496353149 -0.0 0.46660202741622925 0.49503177404403687 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 -0.9868465065956116 0.16162602603435516 -0.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 0.21605448424816132 -0.9762871265411377 0.21634571254253387 -0.0 0.5234435200691223 0.4495640993118286 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 -0.9868465065956116 0.16162602603435516 -0.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.9909970164299011 -0.13370159268379211 -0.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.9962767362594604 -0.08603167533874512 -0.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.9909970164299011 -0.13370159268379211 -0.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30545976758003235 -0.0 0.032583266496658325 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 0.21605446934700012 0.965819239616394 0.25910213589668274 -0.0 0.4319748282432556 0.3392902612686157 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30545976758003235 -0.0 0.4324910044670105 0.3339676856994629 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 -0.2839455306529999 0.6184576153755188 0.7857905626296997 -0.0 0.9507166147232056 0.7853257656097412 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 0.21605446934700012 0.6184576153755188 0.7857905626296997 -0.0 0.5929959416389465 0.6077929735183716 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 0.002870500087738037 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 0.21605446934700012 0.28870511054992676 0.9573961496353149 -0.0 0.46660202741622925 0.49503177404403687 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 0.4714907705783844 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 -0.2839455306529999 -0.9762871265411377 0.21634571254253387 -0.0 0.9471457004547119 0.6089298129081726 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 -0.9626453518867493 0.2706381380558014 -0.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 0.21605448424816132 -0.9762871265411377 0.21634571254253387 -0.0 0.5234435200691223 0.4495640993118286 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 -0.2839455306529999 0.9861140847206116 0.1658986210823059 -0.0 0.04849809408187866 0.5507650375366211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 0.21605446934700012 0.9919431209564209 0.1265602558851242 -0.0 0.4193257689476013 0.41307467222213745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 0.21605446934700012 0.9861140847206116 0.1658986210823059 -0.0 0.41938960552215576 0.40388965606689453 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714743509888649 -0.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714743509888649 -0.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.6577044129371643 0.7532578706741333 -0.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 0.21605446934700012 0.6184576153755188 0.7857905626296997 -0.0 0.5929959416389465 0.6077929735183716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.6577044129371643 0.7532578706741333 -0.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 -0.9938657879829407 0.11035493016242981 -0.0 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 0.21605446934700012 -0.9880367517471313 0.15405744314193726 -0.0 0.5214453935623169 0.3904763460159302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 -0.9938657879829407 0.11035493016242981 -0.0 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326599478721619 0.3313811421394348 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 -0.6284676790237427 0.7778252363204956 -0.0 0.13366088271141052 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 -0.6779686808586121 0.7350382804870605 -0.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 -0.6284676790237427 0.7778252363204956 -0.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.9896237254142761 -0.143559068441391 -0.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.9954222440719604 -0.0953703448176384 -0.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.9896237254142761 -0.143559068441391 -0.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.9965918064117432 0.6522815227508545 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 1.471490740776062 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769912958145142 0.48872554302215576 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 -0.9626453518867493 0.2706381380558014 -0.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 -0.9460127353668213 0.3240455389022827 -0.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 -0.9626453518867493 0.2706381380558014 -0.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.9462549090385437 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35312968492507935 -0.0 0.5331296324729919 0.3297526240348816 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326599478721619 0.3313811421394348 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 -0.2839455306529999 0.9779046177864075 0.20896023511886597 -0.0 0.04741498827934265 0.5422860383987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 0.21605446934700012 0.9861140847206116 0.1658986210823059 -0.0 0.41938960552215576 0.40388965606689453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 0.21605446934700012 0.9779046177864075 0.20896023511886597 -0.0 0.41962891817092896 0.39515578746795654 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.6970732808113098 0.7169713377952576 -0.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.6577044129371643 0.7532578706741333 -0.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.6970732808113098 0.7169713377952576 -0.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896869659423828 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769912958145142 0.48872554302215576 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.483106255531311 0.48530352115631104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 -0.2839455306529999 -0.9880367517471313 0.15405744314193726 -0.0 0.9505323171615601 0.5460243225097656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 -0.9794304966926575 0.20175786316394806 -0.0 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 0.21605446934700012 -0.9880367517471313 0.15405744314193726 -0.0 0.5214453935623169 0.3904763460159302 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35312968492507935 -0.0 0.9459701180458069 0.4877855181694031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335382223129272 0.3280572295188904 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35312968492507935 -0.0 0.5331296324729919 0.3297526240348816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 -0.6779686808586121 0.7350382804870605 -0.0 0.13606640696525574 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 -0.7241126894950867 0.6896572709083557 -0.0 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 -0.6779686808586121 0.7350382804870605 -0.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.9814752340316772 -0.191534161567688 -0.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.9896237254142761 -0.143559068441391 -0.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.9814752340316772 -0.191534161567688 -0.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.483106255531311 0.48530352115631104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 -0.9460127353668213 0.3240455389022827 -0.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 0.21605446934700012 -0.9265724420547485 0.37604907155036926 -0.0 0.5218402743339539 0.43775051832199097 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 -0.9460127353668213 0.3240455389022827 -0.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384156227111816 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.982787549495697 -0.18463698029518127 -0.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.9909970164299011 -0.13370159268379211 -0.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.982787549495697 -0.18463698029518127 -0.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35370951890945435 -0.0 0.03161323070526123 0.4852879047393799 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30545976758003235 -0.0 0.4324910044670105 0.3339676856994629 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35370951890945435 -0.0 0.4331422448158264 0.3288542628288269 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 -0.2839455306529999 0.7360759377479553 0.6768700480461121 -0.0 0.944506049156189 0.7736969590187073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.6970732808113098 0.7169713377952576 -0.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 0.21605446934700012 0.7360759377479553 0.6768700480461121 -0.0 0.5989435911178589 0.5993620157241821 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 -0.2839455306529999 -0.9265724420547485 0.37604907155036926 -0.0 0.9495338201522827 0.5975706577301025 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 -0.904599130153656 0.42622148990631104 -0.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 0.21605446934700012 -0.9265724420547485 0.37604907155036926 -0.0 0.5218402743339539 0.43775051832199097 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.945744514465332 0.48600685596466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338857173919678 0.3262949585914612 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335382223129272 0.3280572295188904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 -0.2839455306529999 0.9666737914085388 0.2559587359428406 -0.0 0.046220988035202026 0.5343106985092163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 0.21605446934700012 0.9779046177864075 0.20896023511886597 -0.0 0.41962891817092896 0.39515578746795654 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 0.21605446934700012 0.9666737914085388 0.2559587359428406 -0.0 0.4200480282306671 0.38687312602996826 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.774163007736206 0.6329538822174072 -0.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 0.21605446934700012 0.7360759377479553 0.6768700480461121 -0.0 0.5989435911178589 0.5993620157241821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.774163007736206 0.6329538822174072 -0.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741256237030029 0.6414514183998108 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971467852592468 0.4780082106590271 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 -0.9794304966926575 0.20175786316394806 -0.0 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 0.21605446934700012 -0.9672841429710388 0.2535783052444458 -0.0 0.5197115540504456 0.37125450372695923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 -0.9794304966926575 0.20175786316394806 -0.0 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455776214599609 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341720581054688 0.3244657516479492 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338857173919678 0.3262949585914612 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 -0.7241126894950867 0.6896572709083557 -0.0 0.1381559669971466 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 -0.766411304473877 0.6423230767250061 -0.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 -0.7241126894950867 0.6896572709083557 -0.0 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.9709768891334534 -0.23905149102210999 -0.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.9814752340316772 -0.191534161567688 -0.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.9709768891334534 -0.23905149102210999 -0.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655709862709045 0.6368472576141357 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971467852592468 0.4780082106590271 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050256252288818 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 -0.904599130153656 0.42622148990631104 -0.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 0.21605446934700012 -0.8803979754447937 0.4742271304130554 -0.0 0.5201833248138428 0.4300884008407593 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 -0.904599130153656 0.42622148990631104 -0.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454691410064697 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341720581054688 0.3244657516479492 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 -0.2839455306529999 0.9516586661338806 0.30710774660110474 -0.0 0.04491466283798218 0.5268359780311584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 0.21605446934700012 0.9666737914085388 0.2559587359428406 -0.0 0.4200480282306671 0.38687312602996826 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 0.21605446934700012 0.9516586661338806 0.30710774660110474 -0.0 0.4206518530845642 0.3790395259857178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.8107852339744568 0.5853145122528076 -0.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.774163007736206 0.6329538822174072 -0.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.8107852339744568 0.5853145122528076 -0.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050256252288818 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 -0.2839455306529999 -0.8803979754447937 0.4742271304130554 -0.0 0.9516648054122925 0.5903184413909912 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 -0.8543351292610168 0.5196996927261353 -0.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 0.21605446934700012 -0.8803979754447937 0.4742271304130554 -0.0 0.5201833248138428 0.4300884008407593 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 -0.2839455306529999 -0.9672841429710388 0.2535783052444458 -0.0 0.9531815648078918 0.5272574424743652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 -0.9508652091026306 0.3095797598361969 -0.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 0.21605446934700012 -0.9672841429710388 0.2535783052444458 -0.0 0.5197115540504456 0.37125450372695923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 -0.766411304473877 0.6423230767250061 -0.0 0.13994893431663513 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 -0.8045899868011475 0.5937681198120117 -0.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 -0.766411304473877 0.6423230767250061 -0.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226463198661804 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14477980136871338 -0.0 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714743509888649 -0.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14477980136871338 -0.0 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.9582812190055847 -0.2857753336429596 -0.0 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.9709768891334534 -0.23905149102210999 -0.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.9582812190055847 -0.2857753336429596 -0.0 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.9710684418678284 -0.2387463003396988 -0.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.982787549495697 -0.18463698029518127 -0.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.9710684418678284 -0.2387463003396988 -0.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.9149143695831299 0.4035767614841461 -0.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35370951890945435 -0.0 0.4331422448158264 0.3288542628288269 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.9149143695831299 0.4035767614841461 -0.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 -0.2839455306529999 0.8453016877174377 0.5342265367507935 -0.0 0.9402449131011963 0.7617413997650146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.8107852339744568 0.5853145122528076 -0.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 0.21605446934700012 0.8453016877174377 0.5342265367507935 -0.0 0.6038513779640198 0.5900272727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.9493167996406555 0.6264195442199707 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.5203794836997986 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 -0.8543351292610168 0.5196996927261353 -0.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 -0.826776921749115 0.5624866485595703 -0.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 -0.8543351292610168 0.5196996927261353 -0.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.534561038017273 0.3206070065498352 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 -0.2839455306529999 0.9319742321968079 0.36243781447410583 -0.0 0.0434948205947876 0.5198570489883423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 0.21605446934700012 0.9516586661338806 0.30710774660110474 -0.0 0.4206518530845642 0.3790395259857178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 0.21605446934700012 0.9319742321968079 0.36243781447410583 -0.0 0.42144501209259033 0.3716520071029663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.8803369402885437 0.4743186831474304 -0.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 0.21605446934700012 0.8453016877174377 0.5342265367507935 -0.0 0.6038513779640198 0.5900272727012634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.8803369402885437 0.4743186831474304 -0.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.5203794836997986 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 -0.9508652091026306 0.3095797598361969 -0.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 0.21605446934700012 -0.9291665554046631 0.36960965394973755 -0.0 0.517025351524353 0.35432738065719604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 -0.9508652091026306 0.3095797598361969 -0.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 -0.9610888957977295 -0.2762230336666107 -0.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 -0.9610888957977295 -0.2762230336666107 -0.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 -0.8045899868011475 0.5937681198120117 -0.0 0.14146259427070618 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 -0.8385875821113586 0.5446943640708923 -0.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 -0.8045899868011475 0.5937681198120117 -0.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042562007904053 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.9434797167778015 -0.33136996626853943 -0.0 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.9582812190055847 -0.2857753336429596 -0.0 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.9434797167778015 -0.33136996626853943 -0.0 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 -0.826776921749115 0.5624866485595703 -0.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 0.21605446934700012 -0.791283905506134 0.6114078164100647 -0.0 0.5167807936668396 0.41893166303634644 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 -0.826776921749115 0.5624866485595703 -0.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454262256622314 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.534663200378418 0.31857776641845703 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.534561038017273 0.3206070065498352 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 -0.2839455306529999 0.9066743850708008 0.4217963218688965 -0.0 0.04195922613143921 0.5133682489395142 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 0.21605446934700012 0.9319742321968079 0.36243781447410583 -0.0 0.42144501209259033 0.3716520071029663 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 0.21605446934700012 0.9066743850708008 0.4217963218688965 -0.0 0.4224327802658081 0.36470645666122437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.9144566059112549 0.4046449065208435 -0.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.8803369402885437 0.4743186831474304 -0.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.9144566059112549 0.4046449065208435 -0.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356679320335388 0.6151246428489685 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337937474250793 0.4586760401725769 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 -0.2839455306529999 -0.791283905506134 0.6114078164100647 -0.0 0.9556704759597778 0.5799009799957275 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 -0.7531358003616333 0.6578570008277893 -0.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 0.21605446934700012 -0.791283905506134 0.6114078164100647 -0.0 0.5167807936668396 0.41893166303634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 -0.2839455306529999 -0.9291665554046631 0.36960965394973755 -0.0 0.9564605951309204 0.5109021067619324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 -0.9012420773506165 0.43327128887176514 -0.0 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 0.21605446934700012 -0.9291665554046631 0.36960965394973755 -0.0 0.517025351524353 0.35432738065719604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 -0.8385875821113586 0.5446943640708923 -0.0 0.14271312952041626 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 -0.868434727191925 0.49577319622039795 -0.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 -0.8385875821113586 0.5446943640708923 -0.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4545121490955353 -0.0 0.029400289058685303 0.4762616753578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.9149143695831299 0.4035767614841461 -0.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4545121490955353 -0.0 0.43486201763153076 0.3192406892776489 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337937474250793 0.4586760401725769 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454910755157471 0.47634971141815186 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.5347064137458801 0.3155938982963562 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.534663200378418 0.31857776641845703 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831719517707825 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.9267555475234985 -0.37559130787849426 -0.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.9434797167778015 -0.33136996626853943 -0.0 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.9267555475234985 -0.37559130787849426 -0.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 -0.2839455306529999 0.8746299743652344 0.4847254753112793 -0.0 0.0403059720993042 0.5073632597923279 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 0.21605446934700012 0.9066743850708008 0.4217963218688965 -0.0 0.4224327802658081 0.36470645666122437 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 0.21605446934700012 0.8746299743652344 0.4847254753112793 -0.0 0.4236200749874115 0.3581991195678711 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 -0.2839455306529999 0.9413434267044067 0.33738210797309875 -0.0 0.9376671314239502 0.7486661672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.9144566059112549 0.4046449065208435 -0.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 0.21605446934700012 0.9413434267044067 0.33738210797309875 -0.0 0.6079329252243042 0.5789923667907715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 -0.7531358003616333 0.6578570008277893 -0.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 0.21605446934700012 -0.7249366641044617 0.6888027787208557 -0.0 0.5144461989402771 0.4134361743927002 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 -0.7531358003616333 0.6578570008277893 -0.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456768035888672 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13968321681022644 -0.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.5347064137458801 0.3155938982963562 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.9552598595619202 -0.29572436213493347 -0.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.9710684418678284 -0.2387463003396988 -0.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.9552598595619202 -0.29572436213493347 -0.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.9602038860321045 0.2792138457298279 -0.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 0.21605446934700012 0.9413434267044067 0.33738210797309875 -0.0 0.6079329252243042 0.5789923667907715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.9602038860321045 0.2792138457298279 -0.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244858622550964 0.6035184860229492 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452784299850464 0.450860857963562 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 -0.2839455306529999 -0.7249366641044617 0.6888027787208557 -0.0 0.958246648311615 0.5748494267463684 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 -0.7040925025939941 0.7100741863250732 -0.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 0.21605446934700012 -0.7249366641044617 0.6888027787208557 -0.0 0.5144461989402771 0.4134361743927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 -0.868434727191925 0.49577319622039795 -0.0 0.14371469616889954 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 -0.8942533731460571 0.44749289751052856 -0.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 -0.868434727191925 0.49577319622039795 -0.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 -0.2839455306529999 0.8384044766426086 0.5450300574302673 -0.0 0.03853201866149902 0.5018355250358582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 0.21605446934700012 0.8746299743652344 0.4847254753112793 -0.0 0.4236200749874115 0.3581991195678711 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 0.21605446934700012 0.8384044766426086 0.5450300574302673 -0.0 0.42501261830329895 0.3521260619163513 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4545121490955353 -0.0 0.43486201763153076 0.3192406892776489 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452784299850464 0.450860857963562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 -0.9012420773506165 0.43327128887176514 -0.0 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 0.21605446934700012 -0.8661457896232605 0.4997711181640625 -0.0 0.5133412480354309 0.33968716859817505 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 -0.9012420773506165 0.43327128887176514 -0.0 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593002915382385 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.9083529114723206 -0.41816461086273193 -0.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.9267555475234985 -0.37559130787849426 -0.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.9083529114723206 -0.41816461086273193 -0.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14477980136871338 -0.0 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.9733878374099731 0.22907193005084991 -0.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.9602038860321045 0.2792138457298279 -0.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.9733878374099731 0.22907193005084991 -0.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 -0.7040925025939941 0.7100741863250732 -0.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 0.21605446934700012 -0.6881923675537109 0.7255164980888367 -0.0 0.5108454823493958 0.406189501285553 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 -0.7040925025939941 0.7100741863250732 -0.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13968321681022644 -0.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2141483873128891 -0.0 0.5344240665435791 0.30988991260528564 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13968321681022644 -0.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 -0.8942533731460571 0.44749289751052856 -0.0 0.14448046684265137 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 -0.9163182377815247 0.40040284395217896 -0.0 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 -0.8942533731460571 0.44749289751052856 -0.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 -0.2839455306529999 0.7995849251747131 0.600512683391571 -0.0 0.03590008616447449 0.4946441054344177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 0.21605446934700012 0.8384044766426086 0.5450300574302673 -0.0 0.42501261830329895 0.3521260619163513 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 0.21605446934700012 0.7995849251747131 0.600512683391571 -0.0 0.4272269308567047 0.3441292643547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 -0.2839455306529999 -0.6881923675537109 0.7255164980888367 -0.0 0.9620909690856934 0.5682055354118347 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 -0.6756492853164673 0.7372050881385803 -0.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 0.21605446934700012 -0.6881923675537109 0.7255164980888367 -0.0 0.5108454823493958 0.406189501285553 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8960844874382019 -0.0 0.9155381917953491 0.5919424295425415 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8960844874382019 -0.0 0.5549336075782776 0.4429643750190735 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 -0.2839455306529999 -0.8661457896232605 0.4997711181640625 -0.0 0.960374653339386 0.4969112277030945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 -0.8230536580085754 0.5679494738578796 -0.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 0.21605446934700012 -0.8661457896232605 0.4997711181640625 -0.0 0.5133412480354309 0.33968716859817505 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.03430280461907387 -0.9993896484375 -0.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0016785180196166039 -0.999969482421875 -0.0 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.03430280461907387 -0.9993896484375 -0.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8737754225730896 -0.0 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8960844874382019 -0.0 0.5549336075782776 0.4429643750190735 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8737754225730896 -0.0 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.8884548544883728 -0.4589068293571472 -0.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.9083529114723206 -0.41816461086273193 -0.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.8884548544883728 -0.4589068293571472 -0.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.0732530951499939 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557573139667511 -0.0 0.026820480823516846 0.46813976764678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557573139667511 -0.0 0.4371563494205475 0.3104267716407776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.9347819685935974 -0.3551744222640991 -0.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.9552598595619202 -0.29572436213493347 -0.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.9347819685935974 -0.3551744222640991 -0.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 -0.6756492853164673 0.7372050881385803 -0.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 -0.6655476689338684 0.7463301420211792 -0.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 -0.6756492853164673 0.7372050881385803 -0.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2141483873128891 -0.0 0.9463337659835815 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 0.21605446934700012 -0.9568468332290649 0.29050567746162415 -0.0 0.534095287322998 0.30716514587402344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2141483873128891 -0.0 0.5344240665435791 0.30988991260528564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0016785180196166039 -0.999969482421875 -0.0 0.05072706937789917 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 0.21605446934700012 -0.02774132415652275 -0.999603271484375 -0.0 0.5315316915512085 0.566885232925415 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0016785180196166039 -0.999969482421875 -0.0 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 -0.2839455306529999 0.7547837495803833 0.6559343338012695 -0.0 0.033157676458358765 0.48806750774383545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 0.21605446934700012 0.7995849251747131 0.600512683391571 -0.0 0.4272269308567047 0.3441292643547058 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 0.21605446934700012 0.7547837495803833 0.6559343338012695 -0.0 0.42968177795410156 0.3367283344268799 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8737754225730896 -0.0 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 -0.2839455306529999 -0.9568468332290649 0.29050567746162415 -0.0 0.9468050003051758 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3671071529388428 -0.0 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 0.21605446934700012 -0.9568468332290649 0.29050567746162415 -0.0 0.534095287322998 0.30716514587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 -0.8230536580085754 0.5679494738578796 -0.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 0.21605446934700012 -0.7761772274971008 0.6304818987846375 -0.0 0.5086210370063782 0.3273197412490845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 -0.8230536580085754 0.5679494738578796 -0.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.8673055171966553 -0.4977263808250427 -0.0 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.8884548544883728 -0.4589068293571472 -0.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.8673055171966553 -0.4977263808250427 -0.0 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.0702734887599945 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 -0.2839455306529999 0.07089449465274811 -0.9974669814109802 -0.0 0.057448118925094604 0.7593033909797668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.03430280461907387 -0.9993896484375 -0.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 0.21605446934700012 0.07089449465274811 -0.9974669814109802 -0.0 0.5232311487197876 0.565461277961731 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 -0.6655476689338684 0.7463301420211792 -0.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 0.21605446934700012 -0.6572160720825195 0.7536851167678833 -0.0 0.5029294490814209 0.39210838079452515 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 -0.6655476689338684 0.7463301420211792 -0.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 -0.2839455306529999 -0.7761772274971008 0.6304818987846375 -0.0 0.9649338722229004 0.4852173924446106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 -0.7318033576011658 0.6814783215522766 -0.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 0.21605446934700012 -0.7761772274971008 0.6304818987846375 -0.0 0.5086210370063782 0.3273197412490845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 -0.2839455306529999 -0.02774132415652275 -0.999603271484375 -0.0 0.04563558101654053 0.7615771293640137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 -0.058351390063762665 -0.9982909560203552 -0.0 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 0.21605446934700012 -0.02774132415652275 -0.999603271484375 -0.0 0.5315316915512085 0.566885232925415 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557573139667511 -0.0 0.4371563494205475 0.3104267716407776 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 -0.2839455306529999 -0.6572160720825195 0.7536851167678833 -0.0 0.9702067375183105 0.5551329851150513 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 -0.6502273678779602 0.7596972584724426 -0.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 0.21605446934700012 -0.6572160720825195 0.7536851167678833 -0.0 0.5029294490814209 0.39210838079452515 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057610034942627 0.5749698281288147 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662951469421387 0.4307813048362732 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2938016951084137 -0.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2938016951084137 -0.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 -0.2839455306529999 0.7024445533752441 0.7116916179656982 -0.0 0.030300259590148926 0.4821009039878845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 0.21605446934700012 0.7547837495803833 0.6559343338012695 -0.0 0.42968177795410156 0.3367283344268799 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 0.21605446934700012 0.7024445533752441 0.7116916179656982 -0.0 0.43238383531570435 0.3299248218536377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 -0.2839455306529999 0.11017181724309921 -0.9938963055610657 -0.0 0.060566484928131104 0.7582532167434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 0.21605446934700012 0.07089449465274811 -0.9974669814109802 -0.0 0.5232311487197876 0.565461277961731 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 0.21605446934700012 0.11017181724309921 -0.9938963055610657 -0.0 0.5210064053535461 0.5647562146186829 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662951469421387 0.4307813048362732 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3671071529388428 -0.0 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 0.21605446934700012 -0.8968169093132019 0.4423657953739166 -0.0 0.5330555438995361 0.30196118354797363 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3671071529388428 -0.0 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.843317985534668 -0.5373699069023132 -0.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.8673055171966553 -0.4977263808250427 -0.0 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.843317985534668 -0.5373699069023132 -0.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.06697684526443481 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.9091463685035706 -0.41645556688308716 -0.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.9347819685935974 -0.3551744222640991 -0.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.9091463685035706 -0.41645556688308716 -0.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.982573926448822 0.18573564291000366 -0.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.9733878374099731 0.22907193005084991 -0.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.982573926448822 0.18573564291000366 -0.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 -0.6502273678779602 0.7596972584724426 -0.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 -0.6443067789077759 0.764732837677002 -0.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 -0.6502273678779602 0.7596972584724426 -0.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 -0.7318033576011658 0.6814783215522766 -0.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 0.21605446934700012 -0.6865749359130859 0.7270119190216064 -0.0 0.5031017065048218 0.3171094059944153 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 -0.7318033576011658 0.6814783215522766 -0.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 -0.058351390063762665 -0.9982909560203552 -0.0 0.04079052805900574 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 0.21605446934700012 -0.09262367337942123 -0.9956969022750854 -0.0 0.5380936861038208 0.5670830011367798 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 -0.058351390063762665 -0.9982909560203552 -0.0 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101962566375732 -0.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101962566375732 -0.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.8160954713821411 -0.5778679847717285 -0.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.843317985534668 -0.5373699069023132 -0.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.8160954713821411 -0.5778679847717285 -0.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334707140922546 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 -0.5591906309127808 -0.8290352821350098 -0.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 -0.2839455306529999 0.7530137300491333 0.6579790711402893 -0.0 0.023867100477218628 0.46089041233062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 0.21605446934700012 0.7530137300491333 0.6579790711402893 -0.0 0.44004958868026733 0.30239802598953247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.6422925591468811 0.766411304473877 -0.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 0.21605446934700012 0.7024445533752441 0.7116916179656982 -0.0 0.43238383531570435 0.3299248218536377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.6422925591468811 0.766411304473877 -0.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 -0.2839455306529999 0.15222632884979248 -0.9883114099502563 -0.0 0.06352132558822632 0.757038414478302 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 0.21605446934700012 0.11017181724309921 -0.9938963055610657 -0.0 0.5210064053535461 0.5647562146186829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 0.21605446934700012 0.15222632884979248 -0.9883114099502563 -0.0 0.5188777446746826 0.5639165043830872 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 -0.6443067789077759 0.764732837677002 -0.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 -0.6392101645469666 0.7690054178237915 -0.0 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 -0.6443067789077759 0.764732837677002 -0.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 -0.2839455306529999 -0.8968169093132019 0.4423657953739166 -0.0 0.9480323791503906 0.4602992534637451 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149083137512207 -0.0 0.532341718673706 0.29947996139526367 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 0.21605446934700012 -0.8968169093132019 0.4423657953739166 -0.0 0.5330555438995361 0.30196118354797363 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 -0.2839455306529999 -0.6865749359130859 0.7270119190216064 -0.0 0.9699341058731079 0.47561323642730713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 0.21605446934700012 -0.635486900806427 0.7720877528190613 -0.0 0.5001419186592102 0.3127697706222534 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 0.21605446934700012 -0.6865749359130859 0.7270119190216064 -0.0 0.5031017065048218 0.3171094059944153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 -0.2839455306529999 -0.09262367337942123 -0.9956969022750854 -0.0 1.0362075567245483 0.7619456648826599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 0.21605446934700012 -0.13116855919361115 -0.9913327693939209 -0.0 0.5410932898521423 0.5668658018112183 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 0.21605446934700012 -0.09262367337942123 -0.9956969022750854 -0.0 0.5380936861038208 0.5670830011367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101962566375732 -0.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149083137512207 -0.0 0.9487885236740112 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 0.21605446934700012 -0.8122501373291016 0.5832697749137878 -0.0 0.5314958691596985 0.29707831144332886 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149083137512207 -0.0 0.532341718673706 0.29947996139526367 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.7895443439483643 -0.6136661767959595 -0.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.8160954713821411 -0.5778679847717285 -0.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.7895443439483643 -0.6136661767959595 -0.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 -0.5591906309127808 -0.8290352821350098 -0.0 0.05936703085899353 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 -0.5591906309127808 -0.8290352821350098 -0.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 -0.2839455306529999 0.19714957475662231 -0.9803460836410522 -0.0 0.06631192564964294 0.7556670308113098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 0.21605446934700012 0.15222632884979248 -0.9883114099502563 -0.0 0.5188777446746826 0.5639165043830872 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 0.21605446934700012 0.19714957475662231 -0.9803460836410522 -0.0 0.516844630241394 0.5629432797431946 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 -0.6392101645469666 0.7690054178237915 -0.0 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 0.487287312746048 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 -0.6392101645469666 0.7690054178237915 -0.0 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 -0.2839455306529999 -0.13116855919361115 -0.9913327693939209 -0.0 1.0318984985351562 0.76165771484375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 0.21605446934700012 -0.1745963990688324 -0.9846186637878418 -0.0 0.5439050197601318 0.5664436221122742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 0.21605446934700012 -0.13116855919361115 -0.9913327693939209 -0.0 0.5410932898521423 0.5668658018112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022248119115829468 0.45758455991744995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 0.21605446934700012 0.7530137300491333 0.6579790711402893 -0.0 0.44004958868026733 0.30239802598953247 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172802567481995 0.29867666959762573 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 -0.2839455306529999 0.574510931968689 0.8184759020805359 -0.0 0.02422255277633667 0.4719785451889038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.6422925591468811 0.766411304473877 -0.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 0.21605446934700012 0.574510931968689 0.8184759020805359 -0.0 0.43855130672454834 0.31812357902526855 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 -0.2839455306529999 -0.8122501373291016 0.5832697749137878 -0.0 0.9496400952339172 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 -0.7631458640098572 0.6461989283561707 -0.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 0.21605446934700012 -0.8122501373291016 0.5832697749137878 -0.0 0.5314958691596985 0.29707831144332886 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 -0.2839455306529999 -0.635486900806427 0.7720877528190613 -0.0 0.9725217819213867 0.47152602672576904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 -0.5784783363342285 0.8156682252883911 -0.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 0.21605446934700012 -0.635486900806427 0.7720877528190613 -0.0 0.5001419186592102 0.3127697706222534 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.765923023223877 -0.6429029107093811 -0.0 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.7895443439483643 -0.6136661767959595 -0.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.765923023223877 -0.6429029107093811 -0.0 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601939558982849 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191216230392456 0.4123419523239136 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 -0.2839455306529999 0.2448805272579193 -0.9695425033569336 -0.0 0.06893846392631531 0.7541464567184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 0.21605446934700012 0.19714957475662231 -0.9803460836410522 -0.0 0.516844630241394 0.5629432797431946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 0.21605446934700012 0.2448805272579193 -0.9695425033569336 -0.0 0.514906108379364 0.5618376135826111 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 -0.635517418384552 0.7720572352409363 -0.0 1.482412576675415 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 1.4872872829437256 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 -0.2839455306529999 -0.1745963990688324 -0.9846186637878418 -0.0 1.027872085571289 0.7610847353935242 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 0.21605446934700012 -0.22357860207557678 -0.9746696352958679 -0.0 0.5465291142463684 0.5658203363418579 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 0.21605446934700012 -0.1745963990688324 -0.9846186637878418 -0.0 0.5439050197601318 0.5664436221122742 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.051966845989227295 0.5626710653305054 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191216230392456 0.4123419523239136 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667104244232178 -0.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2938016951084137 -0.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667104244232178 -0.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 -0.2839455306529999 0.4997406005859375 0.8661457896232605 -0.0 0.02099284529685974 0.46781474351882935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 0.21605446934700012 0.574510931968689 0.8184759020805359 -0.0 0.43855130672454834 0.31812357902526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 0.21605446934700012 0.4997406005859375 0.8661457896232605 -0.0 0.4420255124568939 0.31313610076904297 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.7449567914009094 -0.6670736074447632 -0.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.765923023223877 -0.6429029107093811 -0.0 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.7449567914009094 -0.6670736074447632 -0.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172802567481995 0.29867666959762573 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.8779259324073792 -0.47877436876296997 -0.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.9091463685035706 -0.41645556688308716 -0.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.8779259324073792 -0.47877436876296997 -0.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 -0.2839455306529999 0.2953581213951111 -0.9553819298744202 -0.0 0.07140150666236877 0.7524835467338562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 0.21605446934700012 0.2448805272579193 -0.9695425033569336 -0.0 0.514906108379364 0.5618376135826111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 0.21605446934700012 0.2953581213951111 -0.9553819298744202 -0.0 0.5130614042282104 0.5606002807617188 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 -0.635517418384552 0.7720572352409363 -0.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 1.4774537086486816 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 -0.635517418384552 0.7720572352409363 -0.0 1.482412576675415 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 -0.7631458640098572 0.6461989283561707 -0.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 0.21605446934700012 -0.7112338542938232 0.7029328346252441 -0.0 0.5294012427330017 0.2925146222114563 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 -0.7631458640098572 0.6461989283561707 -0.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 -0.5784783363342285 0.8156682252883911 -0.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 0.21605446934700012 -0.5158543586730957 0.8566545844078064 -0.0 0.4938368499279022 0.3056175708770752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 -0.5784783363342285 0.8156682252883911 -0.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 -0.2839455306529999 -0.22357860207557678 -0.9746696352958679 -0.0 1.0241351127624512 0.7602477073669434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 0.21605446934700012 -0.2787865698337555 -0.9603259563446045 -0.0 0.5489665269851685 0.5649992227554321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 0.21605446934700012 -0.22357860207557678 -0.9746696352958679 -0.0 0.5465291142463684 0.5658203363418579 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.04717668890953064 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.7263100147247314 -0.6873378753662109 -0.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.7449567914009094 -0.6670736074447632 -0.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.7263100147247314 -0.6873378753662109 -0.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 -0.2839455306529999 0.4193548262119293 0.9078035950660706 -0.0 0.01762986183166504 0.4642455577850342 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 0.21605446934700012 0.4997406005859375 0.8661457896232605 -0.0 0.4420255124568939 0.31313610076904297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 0.21605446934700012 0.4193548262119293 0.9078035950660706 -0.0 0.4457634687423706 0.30876803398132324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 -0.2839455306529999 0.3482772409915924 -0.9373760223388672 -0.0 0.07370230555534363 0.7506841421127319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 0.21605446934700012 0.2953581213951111 -0.9553819298744202 -0.0 0.5130614042282104 0.5606002807617188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 0.21605446934700012 0.3482772409915924 -0.9373760223388672 -0.0 0.5113095641136169 0.5592316389083862 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 -0.6625263094902039 0.749015748500824 -0.0 1.4727293252944946 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 1.4774537086486816 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 -0.2839455306529999 -0.7112338542938232 0.7029328346252441 -0.0 0.9516310691833496 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532273530960083 -0.0 0.5281489491462708 0.29035401344299316 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 0.21605446934700012 -0.7112338542938232 0.7029328346252441 -0.0 0.5294012427330017 0.2925146222114563 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 -0.2839455306529999 -0.5158543586730957 0.8566545844078064 -0.0 0.9778796434402466 0.46475380659103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 0.21605446934700012 -0.44813379645347595 0.8939481973648071 -0.0 0.4905005395412445 0.3028048276901245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 0.21605446934700012 -0.5158543586730957 0.8566545844078064 -0.0 0.4938368499279022 0.3056175708770752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 -0.2839455306529999 -0.2787865698337555 -0.9603259563446045 -0.0 1.02069091796875 0.75916588306427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 0.21605446934700012 -0.3408612310886383 -0.940092146396637 -0.0 0.5512181520462036 0.5639832019805908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 0.21605446934700012 -0.2787865698337555 -0.9603259563446045 -0.0 0.5489665269851685 0.5649992227554321 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.0416143536567688 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 -0.2839455306529999 -0.44813379645347595 0.8939481973648071 -0.0 0.980652391910553 0.4620588421821594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 0.21605446934700012 -0.37626269459724426 0.9264808893203735 -0.0 0.48704904317855835 0.30050182342529297 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 0.21605446934700012 -0.44813379645347595 0.8939481973648071 -0.0 0.4905005395412445 0.3028048276901245 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.7097079157829285 -0.7044892907142639 -0.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.7263100147247314 -0.6873378753662109 -0.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.7097079157829285 -0.7044892907142639 -0.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 -0.2839455306529999 0.6100039482116699 0.7923520803451538 -0.0 0.018720537424087524 0.45159733295440674 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 0.21605446934700012 0.6100039482116699 0.7923520803451538 -0.0 0.44556230306625366 0.2918233871459961 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.4033326208591461 -0.9150364398956299 -0.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 0.21605446934700012 0.3482772409915924 -0.9373760223388672 -0.0 0.5113095641136169 0.5592316389083862 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.4033326208591461 -0.9150364398956299 -0.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 -0.6625263094902039 0.749015748500824 -0.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 -0.6799523830413818 0.7332376837730408 -0.0 1.4682507514953613 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 -0.6625263094902039 0.749015748500824 -0.0 1.4727293252944946 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3883175253868103 -0.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3883175253868103 -0.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532273530960083 -0.0 0.9527712464332581 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.526757001876831 0.2882760167121887 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532273530960083 -0.0 0.5281489491462708 0.29035401344299316 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 -0.9163182377815247 0.40040284395217896 -0.0 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 -0.9163182377815247 0.40040284395217896 -0.0 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524616360664368 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204097986221313 0.387759804725647 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 -0.2839455306529999 0.335123747587204 0.9421674013137817 -0.0 0.014129281044006348 0.46126997470855713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 0.21605446934700012 0.4193548262119293 0.9078035950660706 -0.0 0.4457634687423706 0.30876803398132324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 0.21605446934700012 0.335123747587204 0.9421674013137817 -0.0 0.449765145778656 0.3050304651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 -0.2839455306529999 -0.37626269459724426 0.9264808893203735 -0.0 0.9834892749786377 0.45981884002685547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 0.21605446934700012 -0.3014313280582428 0.9534592628479004 -0.0 1.4834891557693481 0.2987098693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 0.21605446934700012 -0.37626269459724426 0.9264808893203735 -0.0 0.48704904317855835 0.30050182342529297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 -0.2839455306529999 -0.3408612310886383 -0.940092146396637 -0.0 1.0175414085388184 0.7578567266464233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 0.21605446934700012 -0.41007721424102783 -0.9120151400566101 -0.0 0.5532851219177246 0.5627743005752563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 0.21605446934700012 -0.3408612310886383 -0.940092146396637 -0.0 0.5512181520462036 0.5639832019805908 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.694814920425415 -0.7191686630249023 -0.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.7097079157829285 -0.7044892907142639 -0.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.694814920425415 -0.7191686630249023 -0.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028042852878570557 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204097986221313 0.387759804725647 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.01679942011833191 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 0.21605446934700012 0.6100039482116699 0.7923520803451538 -0.0 0.44556230306625366 0.2918233871459961 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773662090301514 0.2886993885040283 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 -0.6799523830413818 0.7332376837730408 -0.0 0.0019910037517547607 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 -0.6985381841659546 0.7155674695968628 -0.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 -0.6799523830413818 0.7332376837730408 -0.0 0.46825069189071655 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540088772773743 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.526757001876831 0.2882760167121887 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 -0.2839455306529999 0.24909207224845886 0.9684743881225586 -0.0 0.010486572980880737 0.4588884115219116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 0.21605446934700012 0.335123747587204 0.9421674013137817 -0.0 0.449765145778656 0.3050304651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 0.21605446934700012 0.24909207224845886 0.9684743881225586 -0.0 0.4540289342403412 0.30193692445755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 -0.2839455306529999 0.4599749743938446 -0.8879055380821228 -0.0 0.0778232216835022 0.746696949005127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.4033326208591461 -0.9150364398956299 -0.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 0.21605446934700012 0.4599749743938446 -0.8879055380821228 -0.0 0.5080809593200684 0.5561013221740723 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3883175253868103 -0.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 -0.2839455306529999 -0.3014313280582428 0.9534592628479004 -0.0 0.9863911867141724 0.4580300450325012 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 -0.22501297295093536 0.9743339419364929 -0.0 1.4798285961151123 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 0.21605446934700012 -0.3014313280582428 0.9534592628479004 -0.0 1.4834891557693481 0.2987098693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 -0.2839455306529999 -0.41007721424102783 -0.9120151400566101 -0.0 1.0146870613098145 0.7563359141349792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 -0.4862819314002991 -0.8737754225730896 -0.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 0.21605446934700012 -0.41007721424102783 -0.9120151400566101 -0.0 0.5532851219177246 0.5627743005752563 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.6814478039741516 -0.7318338751792908 -0.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.694814920425415 -0.7191686630249023 -0.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.6814478039741516 -0.7318338751792908 -0.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.019985288381576538 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667104244232178 -0.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 -0.6985381841659546 0.7155674695968628 -0.0 0.00549432635307312 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 0.21605446934700012 -0.7183446884155273 0.695669412612915 -0.0 0.4600628614425659 0.3301432728767395 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 -0.6985381841659546 0.7155674695968628 -0.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773662090301514 0.2886993885040283 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 -0.2839455306529999 0.16342662274837494 0.9865413308143616 -0.0 0.006697714328765869 0.45710289478302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 0.21605446934700012 0.24909207224845886 0.9684743881225586 -0.0 0.4540289342403412 0.30193692445755005 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 0.21605446934700012 0.16342662274837494 0.9865413308143616 -0.0 0.4585503935813904 0.2995036840438843 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.9889522790908813 0.14807580411434174 -0.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.982573926448822 0.18573564291000366 -0.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.9889522790908813 0.14807580411434174 -0.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 -0.2839455306529999 -0.7183446884155273 0.695669412612915 -0.0 0.00870424509048462 0.4921778440475464 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 -0.7394329905509949 0.6732078194618225 -0.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 0.21605446934700012 -0.7183446884155273 0.695669412612915 -0.0 0.4600628614425659 0.3301432728767395 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219641923904419 0.2828214764595032 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.01107051968574524 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 0.4697710871696472 0.36776047945022583 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.8409680724143982 -0.5410626530647278 -0.0 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.8779259324073792 -0.47877436876296997 -0.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.8409680724143982 -0.5410626530647278 -0.0 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 -0.2839455306529999 0.5174718499183655 -0.8556779623031616 -0.0 0.07964730262756348 0.74451744556427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 0.21605446934700012 0.4599749743938446 -0.8879055380821228 -0.0 0.5080809593200684 0.5561013221740723 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 0.21605446934700012 0.5174718499183655 -0.8556779623031616 -0.0 0.5066025257110596 0.5543391704559326 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 -0.22501297295093536 0.9743339419364929 -0.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 0.21605446934700012 -0.14847254753112793 0.9888912439346313 -0.0 1.4760758876800537 0.29666680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 -0.22501297295093536 0.9743339419364929 -0.0 1.4798285961151123 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 -0.4862819314002991 -0.8737754225730896 -0.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 0.21605446934700012 -0.5684377551078796 -0.8226874470710754 -0.0 0.55687016248703 0.5597825050354004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 -0.4862819314002991 -0.8737754225730896 -0.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.669362485408783 -0.7429120540618896 -0.0 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.6814478039741516 -0.7318338751792908 -0.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.669362485408783 -0.7429120540618896 -0.0 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 1.0013192892074585 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 1.469771146774292 0.36776047945022583 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 -0.7394329905509949 0.6732078194618225 -0.0 0.011627405881881714 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 -0.7618335485458374 0.6477248668670654 -0.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 -0.7394329905509949 0.6732078194618225 -0.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012598484754562378 0.4442101716995239 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266157388687134 0.2830924987792969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 -0.2839455306529999 0.08008056879043579 0.9967650175094604 -0.0 0.0027590692043304443 0.4559170603752136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 0.21605446934700012 0.16342662274837494 0.9865413308143616 -0.0 0.4585503935813904 0.2995036840438843 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 0.21605446934700012 0.08008056879043579 0.9967650175094604 -0.0 0.4633219242095947 0.2977495789527893 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 -0.2839455306529999 0.5755485892295837 -0.8177434802055359 -0.0 0.0813169777393341 0.7422186136245728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 0.21605446934700012 0.5174718499183655 -0.8556779623031616 -0.0 0.5066025257110596 0.5543391704559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 0.21605446934700012 0.5755485892295837 -0.8177434802055359 -0.0 0.5052133798599243 0.5524446964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581106901168823 0.4435710906982422 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192333459854126 0.28040528297424316 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219641923904419 0.2828214764595032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 -0.2839455306529999 -0.14847254753112793 0.9888912439346313 -0.0 0.9923943281173706 0.4557947516441345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 0.21605446934700012 -0.07318338751792908 0.9973143935203552 -0.0 1.472240686416626 0.2964206337928772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 0.21605446934700012 -0.14847254753112793 0.9888912439346313 -0.0 1.4760758876800537 0.29666680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 -0.2839455306529999 -0.5684377551078796 -0.8226874470710754 -0.0 1.0098564624786377 0.7527108192443848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 0.21605446934700012 -0.6502884030342102 -0.7596667408943176 -0.0 0.5583904981613159 0.5580000877380371 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 0.21605446934700012 -0.5684377551078796 -0.8226874470710754 -0.0 0.55687016248703 0.5597825050354004 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.6584368348121643 -0.7526169419288635 -0.0 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.669362485408783 -0.7429120540618896 -0.0 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.6584368348121643 -0.7526169419288635 -0.0 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936082363128662 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 -0.7618335485458374 0.6477248668670654 -0.0 0.014271557331085205 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 0.21605446934700012 -0.7855769395828247 0.6187322735786438 -0.0 0.4497760236263275 0.31446272134780884 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 -0.7618335485458374 0.6477248668670654 -0.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795475006103516 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936082363128662 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031571626663208 0.4421793818473816 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266157388687134 0.2830924987792969 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541685819625854 0.2806207537651062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0015564439818263054 0.999969482421875 -0.0 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 0.21605446934700012 0.08008056879043579 0.9967650175094604 -0.0 1.4633219242095947 0.2977495789527893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0015564439818263054 0.999969482421875 -0.0 1.4683330059051514 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 -0.2839455306529999 0.6321604251861572 -0.7748039364814758 -0.0 0.08286002278327942 0.7397554516792297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 0.21605446934700012 0.5755485892295837 -0.8177434802055359 -0.0 0.5052133798599243 0.5524446964263916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 0.21605446934700012 0.6321604251861572 -0.7748039364814758 -0.0 0.503890335559845 0.5503765344619751 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 -0.2839455306529999 -0.7855769395828247 0.6187322735786438 -0.0 0.016644001007080078 0.4748919606208801 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 -0.8104800581932068 0.5857112407684326 -0.0 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 0.21605446934700012 -0.7855769395828247 0.6187322735786438 -0.0 0.4497760236263275 0.31446272134780884 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.9603778123855591 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.5162762403488159 0.2782074809074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192333459854126 0.28040528297424316 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 -0.2839455306529999 -0.07318338751792908 0.9973143935203552 -0.0 0.9954967498779297 0.45534396171569824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0015564439818263054 0.999969482421875 -0.0 1.4683330059051514 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 0.21605446934700012 -0.07318338751792908 0.9973143935203552 -0.0 1.472240686416626 0.2964206337928772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 -0.2839455306529999 -0.6502884030342102 -0.7596667408943176 -0.0 1.0078752040863037 0.7506272792816162 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 -0.7228308916091919 -0.6909695863723755 -0.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 0.21605446934700012 -0.6502884030342102 -0.7596667408943176 -0.0 0.5583904981613159 0.5580000877380371 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.6484572887420654 -0.7612231969833374 -0.0 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.6584368348121643 -0.7526169419288635 -0.0 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.6484572887420654 -0.7612231969833374 -0.0 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097468495368958 0.34996771812438965 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007909178733825684 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541685819625854 0.2806207537651062 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837000012397766 0.2783792018890381 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.6839808225631714 -0.7294839024543762 -0.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 0.21605446934700012 0.6321604251861572 -0.7748039364814758 -0.0 0.503890335559845 0.5503765344619751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.6839808225631714 -0.7294839024543762 -0.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 -0.8104800581932068 0.5857112407684326 -0.0 0.01875227689743042 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 -0.8364818096160889 0.5479598641395569 -0.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 -0.8104800581932068 0.5857112407684326 -0.0 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939054548740387 -0.0 0.9627910852432251 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.5162762403488159 0.2782074809074402 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.7983031868934631 -0.6022217273712158 -0.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.8409680724143982 -0.5410626530647278 -0.0 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.7983031868934631 -0.6022217273712158 -0.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 -0.9503769278526306 0.3110446333885193 -0.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.965241551399231 0.512294352054596 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.5124109387397766 0.3489842414855957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097468495368958 0.34996771812438965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.4008871912956238 0.25336402654647827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 -0.2839455306529999 0.999969482421875 0.0 -0.0 0.047188133001327515 0.39707428216934204 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 1.0 0.0 -0.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 0.21605445444583893 1.0 0.0 -0.0 0.4008871912956238 0.25336402654647827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.6444898843765259 -0.7645801901817322 -0.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.6484572887420654 -0.7612231969833374 -0.0 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.6444898843765259 -0.7645801901817322 -0.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629130363464355 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148954391479492 0.3480064272880554 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.5124109387397766 0.3489842414855957 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 -0.8016296625137329 -0.5977965593338013 -0.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 -0.790887176990509 -0.6119571328163147 -0.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 -0.8016296625137329 -0.5977965593338013 -0.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.9933164715766907 0.11523789167404175 -0.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.9889522790908813 0.14807580411434174 -0.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.9933164715766907 0.11523789167404175 -0.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 -0.8364818096160889 0.5479598641395569 -0.0 0.020604074001312256 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 0.21605446934700012 -0.8632160425186157 0.504806637763977 -0.0 0.44192713499069214 0.3004010319709778 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 -0.8364818096160889 0.5479598641395569 -0.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607527256011963 0.5096024870872498 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148954391479492 0.3480064272880554 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005378127098083496 0.43876564502716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837000012397766 0.2783792018890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.46152105927467346 0.2763766050338745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 -0.2839455306529999 0.729941725730896 -0.6834925413131714 -0.0 0.08564883470535278 0.7341939210891724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.6839808225631714 -0.7294839024543762 -0.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 0.21605446934700012 0.729941725730896 -0.6834925413131714 -0.0 0.5013704895973206 0.545587956905365 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 -0.2839455306529999 -0.8632160425186157 0.504806637763977 -0.0 0.022206127643585205 0.45933693647384644 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 -0.8892483115196228 0.45738089084625244 -0.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 0.21605446934700012 -0.8632160425186157 0.504806637763977 -0.0 0.44192713499069214 0.3004010319709778 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096758604049683 0.2745087742805481 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.7530442476272583 -0.6579485535621643 -0.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.7983031868934631 -0.6022217273712158 -0.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.7530442476272583 -0.6579485535621643 -0.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 -0.7228308916091919 -0.6909695863723755 -0.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 0.21605446934700012 -0.7848140001296997 -0.6197088360786438 -0.0 0.5610678791999817 0.5537543296813965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 -0.7228308916091919 -0.6909695863723755 -0.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 -0.790887176990509 -0.6119571328163147 -0.0 0.04723277688026428 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 0.21605446934700012 -0.7683034539222717 -0.6400341987609863 -0.0 0.40969035029411316 0.2901642918586731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 -0.790887176990509 -0.6119571328163147 -0.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.651570200920105 -0.7585680484771729 -0.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.6444898843765259 -0.7645801901817322 -0.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.651570200920105 -0.7585680484771729 -0.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193297863006592 0.346042275428772 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 0.002721160650253296 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.46152105927467346 0.2763766050338745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 0.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 -0.2839455306529999 -0.7683034539222717 -0.6400341987609863 -0.0 0.04507666826248169 0.4359728693962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 -0.7441022992134094 -0.6680501699447632 -0.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 0.21605446934700012 -0.7683034539222717 -0.6400341987609863 -0.0 0.40969035029411316 0.2901642918586731 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 -0.2839455306529999 0.7702566385269165 -0.6377147436141968 -0.0 0.08689627051353455 0.7310928106307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 0.21605446934700012 0.729941725730896 -0.6834925413131714 -0.0 0.5013704895973206 0.545587956905365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 0.21605446934700012 0.7702566385269165 -0.6377147436141968 -0.0 0.5001721382141113 0.5428614020347595 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 -0.8892483115196228 0.45738089084625244 -0.0 0.023565351963043213 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 -0.9120456576347351 0.41001617908477783 -0.0 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 -0.8892483115196228 0.45738089084625244 -0.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680638909339905 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060319304466248 0.2730323076248169 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096758604049683 0.2745087742805481 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 -0.2839455306529999 -0.7848140001296997 -0.6197088360786438 -0.0 1.0045299530029297 0.7458109259605408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 0.21605446934700012 -0.8379467129707336 -0.5457014441490173 -0.0 0.5622706413269043 0.5512592792510986 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 0.21605446934700012 -0.7848140001296997 -0.6197088360786438 -0.0 0.5610678791999817 0.5537543296813965 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569305777549744 0.5069000124931335 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212823152542114 0.3450441360473633 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193297863006592 0.346042275428772 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.7084261775016785 -0.7057710289955139 -0.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.7530442476272583 -0.6579485535621643 -0.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.7084261775016785 -0.7057710289955139 -0.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.6648457050323486 -0.7469404935836792 -0.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.651570200920105 -0.7585680484771729 -0.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.6648457050323486 -0.7469404935836792 -0.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552648067474365 0.5055457353591919 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230607390403748 0.344028115272522 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212823152542114 0.3450441360473633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 -0.7441022992134094 -0.6680501699447632 -0.0 0.04286402463912964 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 0.21605446934700012 -0.7181615829467773 -0.69582200050354 -0.0 0.4138440191745758 0.27900052070617676 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 -0.7441022992134094 -0.6680501699447632 -0.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 -0.2839455306529999 0.8052613735198975 -0.5928831100463867 -0.0 0.08804729580879211 0.727775514125824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 0.21605446934700012 0.7702566385269165 -0.6377147436141968 -0.0 0.5001721382141113 0.5428614020347595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 0.21605446934700012 0.8052613735198975 -0.5928831100463867 -0.0 0.4990137815475464 0.539908766746521 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 -0.9120456576347351 0.41001617908477783 -0.0 0.024739772081375122 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 -0.9311502575874329 0.3645741045475006 -0.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 -0.9120456576347351 0.41001617908477783 -0.0 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 -0.2839455306529999 -0.8379467129707336 -0.5457014441490173 -0.0 1.0031040906906128 0.7430456280708313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 -0.8820154666900635 -0.47117525339126587 -0.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 0.21605446934700012 -0.8379467129707336 -0.5457014441490173 -0.0 0.5622706413269043 0.5512592792510986 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537597894668579 0.5041894912719727 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246662497520447 0.3429895043373108 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230607390403748 0.344028115272522 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999371767044067 0.43622368574142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 1.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684163331985474 0.2731272578239441 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 -0.2839455306529999 -0.7181615829467773 -0.69582200050354 -0.0 0.04059332609176636 0.42649346590042114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 -0.6906033754348755 -0.7232276201248169 -0.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 0.21605446934700012 -0.7181615829467773 -0.69582200050354 -0.0 0.4138440191745758 0.27900052070617676 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709261655807495 0.4359474182128906 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.5021612048149109 0.2718231678009033 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060319304466248 0.2730323076248169 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 -0.2839455306529999 0.6794335842132568 -0.7336955070495605 -0.0 0.9617165923118591 0.441719651222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.6648457050323486 -0.7469404935836792 -0.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 0.21605446934700012 0.6794335842132568 -0.7336955070495605 -0.0 0.5175286531448364 0.2802373170852661 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524136781692505 0.5028311610221863 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.526100754737854 0.3419238328933716 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246662497520447 0.3429895043373108 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.9962462186813354 0.08639790117740631 -0.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.9933164715766907 0.11523789167404175 -0.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.9962462186813354 0.08639790117740631 -0.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.6615192294120789 -0.7499008178710938 -0.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.7084261775016785 -0.7057710289955139 -0.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.6615192294120789 -0.7499008178710938 -0.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.695547342300415 -0.7184667587280273 -0.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 0.21605446934700012 0.6794335842132568 -0.7336955070495605 -0.0 0.5175286531448364 0.2802373170852661 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.695547342300415 -0.7184667587280273 -0.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512243270874023 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.526100754737854 0.3419238328933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970256090164185 0.43528425693511963 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684163331985474 0.2731272578239441 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721570014953613 0.2719026207923889 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 -0.6906033754348755 -0.7232276201248169 -0.0 0.038263142108917236 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 -0.6613666415214539 -0.7500228881835938 -0.0 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 -0.6906033754348755 -0.7232276201248169 -0.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.8354747295379639 -0.5494857430458069 -0.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 0.21605446934700012 0.8052613735198975 -0.5928831100463867 -0.0 0.4990137815475464 0.539908766746521 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.8354747295379639 -0.5494857430458069 -0.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 -0.9311502575874329 0.3645741045475006 -0.0 0.025784343481063843 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 -0.9472640156745911 0.32038331031799316 -0.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 -0.9311502575874329 0.3645741045475006 -0.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739401340484619 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.4980665147304535 0.2708966135978699 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.5021612048149109 0.2718231678009033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 -0.9503769278526306 0.3110446333885193 -0.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 -0.9571214914321899 0.28955960273742676 -0.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 -0.9503769278526306 0.3110446333885193 -0.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.6092715263366699 -0.7929319143295288 -0.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.6615192294120789 -0.7499008178710938 -0.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.6092715263366699 -0.7929319143295288 -0.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 -0.8820154666900635 -0.47117525339126587 -0.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 0.21605446934700012 -0.9173253774642944 -0.3980834484100342 -0.0 0.5644075870513916 0.545503556728363 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 -0.8820154666900635 -0.47117525339126587 -0.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.713370144367218 -0.7007355093955994 -0.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.695547342300415 -0.7184667587280273 -0.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.713370144367218 -0.7007355093955994 -0.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.5284615159034729 0.33969563245773315 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939858913421631 0.43456923961639404 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721570014953613 0.2719026207923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.476088285446167 0.2709609866142273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 -0.6613666415214539 -0.7500228881835938 -0.0 0.035872071981430054 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 0.21605446934700012 -0.6306039690971375 -0.7760856747627258 -0.0 0.4211760461330414 0.2638515830039978 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 -0.6613666415214539 -0.7500228881835938 -0.0 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 -0.9472640156745911 0.32038331031799316 -0.0 0.026701629161834717 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 -0.9606616497039795 0.2776268720626831 -0.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 -0.9472640156745911 0.32038331031799316 -0.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771068096160889 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937530755996704 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.4980665147304535 0.2708966135978699 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493091106414795 0.49873924255371094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 0.21605446934700012 -0.7000030279159546 -0.7141026258468628 -0.0 0.5293902158737183 0.3385264277458191 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.5284615159034729 0.33969563245773315 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 -0.2839455306529999 -0.6306039690971375 -0.7760856747627258 -0.0 0.033418744802474976 0.4139173626899719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 -0.5983458757400513 -0.8012024164199829 -0.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 0.21605446934700012 -0.6306039690971375 -0.7760856747627258 -0.0 0.4211760461330414 0.2638515830039978 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 -0.2839455306529999 0.861384928226471 -0.5079195499420166 -0.0 0.09006515145301819 0.7204816341400146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.8354747295379639 -0.5494857430458069 -0.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 0.21605446934700012 0.861384928226471 -0.5079195499420166 -0.0 0.49681398272514343 0.533308744430542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 -0.2839455306529999 -0.9173253774642944 -0.3980834484100342 -0.0 1.000737190246582 0.7367956042289734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 0.21605446934700012 -0.9446699619293213 -0.32795190811157227 -0.0 0.565342903137207 0.5422323942184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 0.21605446934700012 -0.9173253774642944 -0.3980834484100342 -0.0 0.5644075870513916 0.545503556728363 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 -0.2839455306529999 0.7331461310386658 -0.6800439357757568 -0.0 0.9684454798698425 0.4304148554801941 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.713370144367218 -0.7007355093955994 -0.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 0.21605446934700012 0.7331461310386658 -0.6800439357757568 -0.0 0.5095055103302002 0.2678421139717102 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 -0.2839455306529999 -0.7000030279159546 -0.7141026258468628 -0.0 0.9485797882080078 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301678776741028 0.33722954988479614 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 0.21605446934700012 -0.7000030279159546 -0.7141026258468628 -0.0 0.5293902158737183 0.3385264277458191 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908179044723511 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.476088285446167 0.2709609866142273 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802052974700928 0.27031540870666504 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804263114929199 0.4339858293533325 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.4892280697822571 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937530755996704 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.5518357157707214 -0.8339182734489441 -0.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.6092715263366699 -0.7929319143295288 -0.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.5518357157707214 -0.8339182734489441 -0.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.7550889849662781 -0.6555986404418945 -0.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 0.21605446934700012 0.7331461310386658 -0.6800439357757568 -0.0 0.5095055103302002 0.2678421139717102 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.7550889849662781 -0.6555986404418945 -0.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.0342521071434021 0.500602662563324 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.4315919876098633 0.34482550621032715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 -0.5983458757400513 -0.8012024164199829 -0.0 0.03090190887451172 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 0.21605446934700012 -0.5647144913673401 -0.825251042842865 -0.0 0.4268491864204407 0.25484126806259155 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 -0.5983458757400513 -0.8012024164199829 -0.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 -0.2839455306529999 0.8835108280181885 -0.4683675765991211 -0.0 0.09093481302261353 0.716498613357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 0.21605446934700012 0.861384928226471 -0.5079195499420166 -0.0 0.49681398272514343 0.533308744430542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 0.21605446934700012 0.8835108280181885 -0.4683675765991211 -0.0 0.495771199464798 0.5296525955200195 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 -0.9606616497039795 0.2776268720626831 -0.0 0.027493685483932495 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 -0.9715872406959534 0.23657947778701782 -0.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 -0.9606616497039795 0.2776268720626831 -0.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 -0.2839455306529999 -0.9446699619293213 -0.32795190811157227 -0.0 0.9997917413711548 0.733305811882019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 -0.965117335319519 -0.2617572546005249 -0.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 0.21605446934700012 -0.9446699619293213 -0.32795190811157227 -0.0 0.565342903137207 0.5422323942184448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 -0.2839455306529999 0.965849757194519 0.25907161831855774 -0.0 0.03346249461174011 0.4952545166015625 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 0.21605446934700012 0.9716482758522034 0.23630481958389282 -0.0 0.4315919876098633 0.34482550621032715 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 0.21605446934700012 0.965849757194519 0.25907161831855774 -0.0 0.43197548389434814 0.3392900228500366 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802052974700928 0.27031540870666504 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484500765800476 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 -0.2839455306529999 -0.5647450089454651 -0.825251042842865 -0.0 0.028320401906967163 0.40661054849624634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 -0.5298928618431091 -0.8480483293533325 -0.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 0.21605446934700012 -0.5647144913673401 -0.825251042842865 -0.0 0.4268491864204407 0.25484126806259155 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479931592941284 0.49590176343917847 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308834910392761 0.33586686849594116 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301678776741028 0.33722954988479614 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838982820510864 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484500765800476 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.4892280697822571 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.7795037627220154 -0.6263619065284729 -0.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.7550889849662781 -0.6555986404418945 -0.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.7795037627220154 -0.6263619065284729 -0.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.9981383681297302 0.06097598373889923 -0.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.9962462186813354 0.08639790117740631 -0.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.9981383681297302 0.06097598373889923 -0.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 -0.9715872406959534 0.23657947778701782 -0.0 0.02816295623779297 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 -0.9803155660629272 0.19730216264724731 -0.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 -0.9715872406959534 0.23657947778701782 -0.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474676847457886 0.49438291788101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315372943878174 0.3344380855560303 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308834910392761 0.33586686849594116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.48963895440101624 -0.8719137907028198 -0.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.5518357157707214 -0.8339182734489441 -0.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.48963895440101624 -0.8719137907028198 -0.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 -0.17752617597579956 -0.9840998649597168 -0.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 0.21605446934700012 -0.17752617597579956 -0.9840998649597168 -0.0 0.4919670522212982 0.5125381350517273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 -0.17752617597579956 -0.9840998649597168 -0.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 -0.5298928618431091 -0.8480483293533325 -0.0 0.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 0.21605445444583893 -0.4940031170845032 -0.86944180727005 -0.0 0.43318602442741394 0.2467350959777832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 -0.5298928618431091 -0.8480483293533325 -0.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 -0.2839455306529999 0.9379558563232422 -0.34669026732444763 -0.0 0.09352043271064758 0.6982331871986389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 0.21605446934700012 0.9318826794624329 -0.36271247267723083 -0.0 0.49286413192749023 0.5172007083892822 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 0.21605446934700012 0.9379558563232422 -0.34669026732444763 -0.0 0.4919670522212982 0.5125381350517273 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470030069351196 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315372943878174 0.3344380855560303 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 -0.2839455306529999 0.8065431714057922 -0.5911435484886169 -0.0 0.9733879566192627 0.4207465648651123 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.7795037627220154 -0.6263619065284729 -0.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 0.21605446934700012 0.8065431714057922 -0.5911435484886169 -0.0 0.5033973455429077 0.2575761675834656 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005223631858826 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 -0.2839455306529999 -0.4940031170845032 -0.86944180727005 -0.0 0.02295824885368347 0.40015560388565063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 -0.4586932063102722 -0.8885769248008728 -0.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 0.21605445444583893 -0.4940031170845032 -0.86944180727005 -0.0 0.43318602442741394 0.2467350959777832 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 -0.2839455306529999 0.9318826794624329 -0.36271247267723083 -0.0 0.09300467371940613 0.7031583786010742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 0.21605446934700012 0.9183324575424194 -0.395764023065567 -0.0 0.49379682540893555 0.5216037034988403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 0.21605446934700012 0.9318826794624329 -0.36271247267723083 -0.0 0.49286413192749023 0.5172007083892822 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.8363292217254639 -0.5481734871864319 -0.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 0.21605446934700012 0.8065431714057922 -0.5911435484886169 -0.0 0.5033973455429077 0.2575761675834656 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.8363292217254639 -0.5481734871864319 -0.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30549028515815735 -0.0 0.03258267045021057 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 0.21605446934700012 0.965849757194519 0.25907161831855774 -0.0 0.43197548389434814 0.3392900228500366 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30549028515815735 -0.0 0.432491660118103 0.33396750688552856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 -0.2839455306529999 0.9183324575424194 -0.395764023065567 -0.0 0.09240296483039856 0.7078412771224976 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 0.21605446934700012 0.9023407697677612 -0.430982381105423 -0.0 0.4947656989097595 0.5257526636123657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 0.21605446934700012 0.9183324575424194 -0.395764023065567 -0.0 0.49379682540893555 0.5216037034988403 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 -0.9803155660629272 0.19730216264724731 -0.0 0.02871173620223999 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 -0.9871211647987366 0.1598559468984604 -0.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 -0.9803155660629272 0.19730216264724731 -0.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.42332223057746887 -0.9059419631958008 -0.0 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.48963895440101624 -0.8719137907028198 -0.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.42332223057746887 -0.9059419631958008 -0.0 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714438334107399 -0.0 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714438334107399 -0.0 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747478246688843 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 -0.4587237238883972 -0.8885769248008728 -0.0 0.020175516605377197 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 0.21605445444583893 -0.42536699771881104 -0.904995858669281 -0.0 0.4401699900627136 0.23959076404571533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 -0.4586932063102722 -0.8885769248008728 -0.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 -0.2839455306529999 0.9023407697677612 -0.430982381105423 -0.0 0.09171348810195923 0.7122865319252014 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 0.21605446934700012 0.8835108280181885 -0.4683675765991211 -0.0 0.495771199464798 0.5296525955200195 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 0.21605446934700012 0.9023407697677612 -0.430982381105423 -0.0 0.4947656989097595 0.5257526636123657 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326606631278992 0.33138126134872437 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 -0.965117335319519 -0.2617572546005249 -0.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 0.21605446934700012 -0.9797357320785522 -0.20014038681983948 -0.0 0.5669488906860352 0.5348721742630005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 -0.965117335319519 -0.2617572546005249 -0.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 -0.2839455306529999 0.868739902973175 -0.49525436758995056 -0.0 0.9757001996040344 0.4151532053947449 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.8363292217254639 -0.5481734871864319 -0.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 0.21605446934700012 0.868739902973175 -0.49525436758995056 -0.0 0.5004804134368896 0.2517651915550232 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 -0.2839455306529999 -0.42536699771881104 -0.904995858669281 -0.0 0.01735299825668335 0.39455825090408325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 -0.39213234186172485 -0.9198889136314392 -0.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 0.21605445444583893 -0.42536699771881104 -0.904995858669281 -0.0 0.4401699900627136 0.23959076404571533 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.946254312992096 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35319072008132935 -0.0 0.5331304669380188 0.3297528028488159 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326606631278992 0.33138126134872437 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 -0.2839455306529999 -0.9797357320785522 -0.20014038681983948 -0.0 0.9983647465705872 0.7255765199661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 -0.9896542429924011 -0.143314927816391 -0.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 0.21605446934700012 -0.9797357320785522 -0.20014038681983948 -0.0 0.5669488906860352 0.5348721742630005 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.9028900861740112 -0.4298532009124756 -0.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 0.21605446934700012 0.868739902973175 -0.49525436758995056 -0.0 0.5004804134368896 0.2517651915550232 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.9028900861740112 -0.4298532009124756 -0.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470900774002075 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 -0.7042451500892639 -0.7099520564079285 -0.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 -0.9871211647987366 0.1598559468984604 -0.0 0.029142290353775024 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 -0.9922177791595459 0.12427137047052383 -0.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 -0.9871211647987366 0.1598559468984604 -0.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35319072008132935 -0.0 0.9459694027900696 0.4877854585647583 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335390567779541 0.3280574083328247 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35319072008132935 -0.0 0.5331304669380188 0.3297528028488159 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.35386210680007935 -0.9352702498435974 -0.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.42332223057746887 -0.9059419631958008 -0.0 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.35386210680007935 -0.9352702498435974 -0.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 -0.39213234186172485 -0.9198889136314392 -0.0 0.014519035816192627 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 0.21605445444583893 -0.3574327826499939 -0.9338968992233276 -0.0 0.447567880153656 0.23354434967041016 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 -0.39213234186172485 -0.9198889136314392 -0.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.999237060546875 0.03839228302240372 -0.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.9981383681297302 0.06097598373889923 -0.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.999237060546875 0.03839228302240372 -0.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.6964018940925598 -0.7176427245140076 -0.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 -0.9896542429924011 -0.143314927816391 -0.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 0.21605446934700012 -0.9958189725875854 -0.09121982753276825 -0.0 0.5682021379470825 0.5263727903366089 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 -0.9896542429924011 -0.143314927816391 -0.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 -0.2839455306529999 0.9330118894577026 -0.35981321334838867 -0.0 0.9773029088973999 0.4099716544151306 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.9028900861740112 -0.4298532009124756 -0.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 0.21605446934700012 0.9330118894577026 -0.35981321334838867 -0.0 0.49845102429389954 0.24645698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35374003648757935 -0.0 0.031612515449523926 0.4852878451347351 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30549028515815735 -0.0 0.432491660118103 0.33396750688552856 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35374003648757935 -0.0 0.43314307928085327 0.3288540244102478 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 -0.7042451500892639 -0.7099520564079285 -0.0 0.06174764037132263 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 -0.7042451500892639 -0.7099520564079285 -0.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 -0.2839455306529999 -0.3574633002281189 -0.9338968992233276 -0.0 0.01167386770248413 0.38986819982528687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 0.21605445444583893 -0.3574327826499939 -0.9338968992233276 -0.0 0.447567880153656 0.23354434967041016 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.9457437992095947 0.48600679636001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338865518569946 0.3262951970100403 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335390567779541 0.3280574083328247 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 -0.2839455306529999 -0.9958189725875854 -0.09121982753276825 -0.0 0.9975391626358032 0.7168097496032715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 -0.9990233778953552 -0.04370250552892685 -0.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 0.21605446934700012 -0.9958189725875854 -0.09121982753276825 -0.0 0.5682021379470825 0.5263727903366089 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.9549241662025452 -0.29682302474975586 -0.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 0.21605446934700012 0.9330118894577026 -0.35981321334838867 -0.0 0.49845102429389954 0.24645698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.9549241662025452 -0.29682302474975586 -0.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 -0.9922177791595459 0.12427137047052383 -0.0 0.029456526041030884 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 -0.9958800077438354 0.09057893604040146 -0.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 -0.9922177791595459 0.12427137047052383 -0.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455769062042236 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341729521751404 0.32446593046188354 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338865518569946 0.3262951970100403 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.28241828083992004 -0.9592882990837097 -0.0 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.35386210680007935 -0.9352702498435974 -0.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.28241828083992004 -0.9592882990837097 -0.0 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.05858275294303894 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 -0.32142093777656555 -0.9469283223152161 -0.0 0.008817553520202637 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 -0.2840968072414398 -0.9587695002555847 -0.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.99981689453125 0.01825006864964962 -0.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.999237060546875 0.03839228302240372 -0.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.99981689453125 0.01825006864964962 -0.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454684257507324 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341729521751404 0.32446593046188354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 -0.9990233778953552 -0.04370250552892685 -0.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 0.21605446934700012 -0.99993896484375 -0.010528885759413242 -0.0 0.5691002607345581 0.5166683197021484 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 -0.9990233778953552 -0.04370250552892685 -0.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 -0.2839455306529999 0.9700918793678284 -0.24265266954898834 -0.0 0.9785953760147095 0.40384650230407715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.9549241662025452 -0.29682302474975586 -0.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 0.21605446934700012 0.9700918793678284 -0.24265266954898834 -0.0 0.4968274235725403 0.24024468660354614 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.21015045046806335 -0.9776604771614075 -0.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.28241828083992004 -0.9592882990837097 -0.0 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.21015045046806335 -0.9776604771614075 -0.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 -0.2839455306529999 -0.99993896484375 -0.010528885759413242 -0.0 0.9972931146621704 0.7069487571716309 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 -1.0 0.0 -0.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 0.21605446934700012 -0.99993896484375 -0.010528885759413242 -0.0 0.5691002607345581 0.5166683197021484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.9805902242660522 -0.19598986208438873 -0.0 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 0.21605446934700012 0.9700918793678284 -0.24265266954898834 -0.0 0.4968274235725403 0.24024468660354614 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.9805902242660522 -0.19598986208438873 -0.0 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14481033384799957 -0.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714438334107399 -0.0 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14481033384799957 -0.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.05520591139793396 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 -0.2840968072414398 -0.9587695002555847 -0.0 0.005950242280960083 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 0.21605445444583893 -0.2456129640340805 -0.9693593978881836 -0.0 0.4592951536178589 0.22660183906555176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 -0.2840968072414398 -0.9587695002555847 -0.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 -0.9958800077438354 0.09057893604040146 -0.0 0.029656797647476196 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 -0.9982604384422302 0.05868709459900856 -0.0 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 -0.9958800077438354 0.09057893604040146 -0.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.9149448871612549 0.4035462439060211 -0.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35374003648757935 -0.0 0.43314307928085327 0.3288540244102478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.9149448871612549 0.4035462439060211 -0.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 -0.2839455306529999 -0.2456129640340805 -0.9693593978881836 -0.0 0.0030720531940460205 0.38453078269958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 -0.2061525285243988 -0.9785149693489075 -0.0 0.46334928274154663 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 0.21605445444583893 -0.2456129640340805 -0.9693593978881836 -0.0 0.4592951536178589 0.22660183906555176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 1.0 -0.0001831110566854477 -0.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.99981689453125 0.01825006864964962 -0.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.999969482421875 -0.0001831110566854477 -0.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.5345618724822998 0.3206072449684143 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 -0.36930447816848755 0.9292886257171631 -0.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 0.21605446934700012 -0.35322123765945435 0.9355143904685974 -0.0 0.5672665238380432 0.5033541917800903 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 -0.36930447816848755 0.9292886257171631 -0.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 -0.2839455306529999 0.9877620935440063 -0.15576647222042084 -0.0 0.9796422719955444 0.39663392305374146 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.9805902242660522 -0.19598986208438873 -0.0 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 0.21605446934700012 0.9877620935440063 -0.15576647222042084 -0.0 0.4955292344093323 0.23297131061553955 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.05160874128341675 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.40223488211631775 0.2527579665184021 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 -0.9610888957977295 -0.2762230336666107 -0.0 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 -0.9610888957977295 -0.2762230336666107 -0.0 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.13834039866924286 -0.9903561472892761 -0.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.21015045046806335 -0.9776604771614075 -0.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.13834039866924286 -0.9903561472892761 -0.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 -0.2839455306529999 -0.35322123765945435 0.9355143904685974 -0.0 1.0006707906723022 0.6942631006240845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 0.21605446934700012 -0.3237403631210327 0.9461348056793213 -0.0 0.5643073916435242 0.5007731914520264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 0.21605446934700012 -0.35322123765945435 0.9355143904685974 -0.0 0.5672665238380432 0.5033541917800903 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.9926450252532959 -0.12082277983427048 -0.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 0.21605446934700012 0.9877620935440063 -0.15576647222042084 -0.0 0.4955292344093323 0.23297131061553955 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.9926450252532959 -0.12082277983427048 -0.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781914472579956 0.40075987577438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 -0.4602191150188446 -0.8877834677696228 -0.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.40223488211631775 0.2527579665184021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 -0.2061220109462738 -0.9785149693489075 -0.0 1.00018310546875 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 0.21605445444583893 -0.1658070683479309 -0.9861446022987366 -0.0 1.4674643278121948 0.22341382503509521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 -0.2061525285243988 -0.9785149693489075 -0.0 1.4633493423461914 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 -0.9982604384422302 0.05868709459900856 -0.0 0.029745280742645264 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 -0.99957275390625 0.02856532484292984 -0.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 -0.9982604384422302 0.05868709459900856 -0.0 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454255104064941 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.5346640348434448 0.31857800483703613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.5345618724822998 0.3206072449684143 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 -0.2839455306529999 -0.3237403631210327 0.9461348056793213 -0.0 1.0044422149658203 0.692439079284668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 -0.29914242029190063 0.9541917443275452 -0.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 0.21605446934700012 -0.3237403631210327 0.9461348056793213 -0.0 0.5643073916435242 0.5007731914520264 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 -0.2839455306529999 -0.1658070683479309 -0.9861446022987366 -0.0 0.9972836971282959 0.3820924758911133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 -0.12482070177793503 -0.9921567440032959 -0.0 1.471632480621338 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 0.21605445444583893 -0.1658070683479309 -0.9861446022987366 -0.0 1.4674643278121948 0.22341382503509521 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.9959105253219604 -0.09027375280857086 -0.0 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.9926450252532959 -0.12082277983427048 -0.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.9959105253219604 -0.09027375280857086 -0.0 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4544816315174103 -0.0 0.02939966320991516 0.47626161575317383 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.9149448871612549 0.4035462439060211 -0.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4544816315174103 -0.0 0.4348626732826233 0.3192404508590698 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 -0.4602191150188446 -0.8877834677696228 -0.0 0.04371529817581177 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 -0.4050111472606659 -0.9142735004425049 -0.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 -0.4602191150188446 -0.8877834677696228 -0.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.999969482421875 -0.0025025177747011185 -0.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.999969482421875 -0.0001831110566854477 -0.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.999969482421875 -0.0025025177747011185 -0.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 -0.99957275390625 0.02856532484292984 -0.0 0.029723763465881348 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 -0.999969482421875 0.005493331700563431 -0.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 -0.99957275390625 0.02856532484292984 -0.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454903602600098 0.4763496518135071 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.534707248210907 0.3155941367149353 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.5346640348434448 0.31857800483703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.06811731308698654 -0.9976500868797302 -0.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.13834039866924286 -0.9903561472892761 -0.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.06811731308698654 -0.9976500868797302 -0.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 -0.29914242029190063 0.9541917443275452 -0.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 0.21605446934700012 -0.2783593237400055 0.9604480266571045 -0.0 0.5572380423545837 0.495286762714386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 -0.29914242029190063 0.9541917443275452 -0.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 -0.12482070177793503 -0.9921567440032959 -0.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 0.21605445444583893 -0.08340708911418915 -0.9964903593063354 -0.0 1.4758449792861938 0.2213945984840393 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 -0.12482070177793503 -0.9921567440032959 -0.0 1.471632480621338 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456760883331299 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13974425196647644 -0.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.534707248210907 0.3155941367149353 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 -0.2839455306529999 -0.2783593237400055 0.9604480266571045 -0.0 1.0132920742034912 0.6884256601333618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 0.21605446934700012 -0.2605975568294525 0.965422511100769 -0.0 0.5531123876571655 0.4923807382583618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 0.21605446934700012 -0.2783593237400055 0.9604480266571045 -0.0 0.5572380423545837 0.495286762714386 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 -0.2839455306529999 0.9979857802391052 -0.0634174644947052 -0.0 0.980755090713501 0.38401156663894653 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.9959105253219604 -0.09027375280857086 -0.0 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 0.21605446934700012 0.9979857802391052 -0.0634174644947052 -0.0 0.4942011833190918 0.2202945351600647 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 -0.4050111472606659 -0.9142735004425049 -0.0 0.03939896821975708 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 -0.4050111472606659 -0.9142735004425049 -0.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 -0.2839455306529999 -0.08340708911418915 -0.9964903593063354 -0.0 0.9914541840553284 0.38054370880126953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 0.21605445444583893 -0.041718803346157074 -0.999114990234375 -0.0 1.480093002319336 0.2208271622657776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 0.21605445444583893 -0.08340708911418915 -0.9964903593063354 -0.0 1.4758449792861938 0.2213945984840393 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 -0.2839455306529999 -0.2605975568294525 0.965422511100769 -0.0 1.0183712244033813 0.6861664056777954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 0.21605446934700012 -0.2452772557735443 0.9694204330444336 -0.0 0.5485851168632507 0.48936909437179565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 0.21605446934700012 -0.2605975568294525 0.965422511100769 -0.0 0.5531123876571655 0.4923807382583618 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.99920654296875 -0.0397351011633873 -0.0 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 0.21605446934700012 0.9979857802391052 -0.0634174644947052 -0.0 0.4942011833190918 0.2202945351600647 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.99920654296875 -0.0397351011633873 -0.0 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4544816315174103 -0.0 0.4348626732826233 0.3192404508590698 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 -0.2839455306529999 -0.041718803346157074 -0.999114990234375 -0.0 0.9885245561599731 0.38010191917419434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 0.21605445444583893 0.006317331455647945 -0.999969482421875 -0.0 1.4843671321868896 0.22055619955062866 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 0.21605445444583893 -0.041718803346157074 -0.999114990234375 -0.0 1.480093002319336 0.2208271622657776 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 -0.999969482421875 0.005493331700563431 -0.0 0.029594451189041138 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 0.21605446934700012 -0.999969482421875 -0.005005035549402237 -0.0 0.4244113266468048 0.23255091905593872 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 -0.999969482421875 0.005493331700563431 -0.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 -0.2839455306529999 0.006317331455647945 -0.999969482421875 -0.0 0.9855853915214539 0.37988173961639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.06811731308698654 -0.9976500868797302 -0.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 0.21605445444583893 0.006317331455647945 -0.999969482421875 -0.0 1.4843671321868896 0.22055619955062866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 -0.2839455306529999 -0.2452772557735443 0.9694204330444336 -0.0 1.0238808393478394 0.6836882829666138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 0.21605446934700012 -0.23191015422344208 0.9727164506912231 -0.0 0.5436533093452454 0.4862578511238098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 0.21605446934700012 -0.2452772557735443 0.9694204330444336 -0.0 0.5485851168632507 0.48936909437179565 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14481033384799957 -0.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.0348239541053772 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 -0.29874569177627563 -0.9543138146400452 -0.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.9500210285186768 0.8827873468399048 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 -1.0 0.0 -0.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 0.21605446934700012 -1.0 0.0 -0.0 0.5745580792427063 0.6996983289718628 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 -0.2839455306529999 -0.999969482421875 -0.005005035549402237 -0.0 0.02957293391227722 0.3881494998931885 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 0.21605446934700012 -0.99993896484375 -0.008575701154768467 -0.0 0.4243272542953491 0.23172283172607422 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 0.21605446934700012 -0.999969482421875 -0.005005035549402237 -0.0 0.4244113266468048 0.23255091905593872 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13974425196647644 -0.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2142094224691391 -0.0 0.5344247221946716 0.30989009141921997 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13974425196647644 -0.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 -0.2839455306529999 -0.23191015422344208 0.9727164506912231 -0.0 1.029810905456543 0.6809518337249756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 0.21605446934700012 -0.22016052901744843 0.9754325747489929 -0.0 0.5383179187774658 0.4830561876296997 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 0.21605446934700012 -0.23191015422344208 0.9727164506912231 -0.0 0.5436533093452454 0.4862578511238098 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.8878573775291443 0.842465877532959 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.5745580792427063 0.6996983289718628 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.6138039231300354 0.688823938369751 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 -0.2839455306529999 -0.99993896484375 -0.008575701154768467 -0.0 0.029543757438659668 0.387315571308136 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 0.21605446934700012 -0.99993896484375 -0.01104770042002201 -0.0 0.4242281913757324 0.2307267189025879 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 0.21605446934700012 -0.99993896484375 -0.008575701154768467 -0.0 0.4243272542953491 0.23172283172607422 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 -0.2839455306529999 -0.22016052901744843 0.9754325747489929 -0.0 1.0361446142196655 0.6779175996780396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 0.21605446934700012 -0.20975372195243835 0.9777215123176575 -0.0 0.5325842499732971 0.47977715730667114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 0.21605446934700012 -0.22016052901744843 0.9754325747489929 -0.0 0.5383179187774658 0.4830561876296997 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.02998247742652893 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 -0.29874569177627563 -0.9543138146400452 -0.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.6138039231300354 0.688823938369751 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 1.0 0.0 -0.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 -0.2839455306529999 -0.999908447265625 -0.01104770042002201 -0.0 0.029506683349609375 0.386313259601593 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 0.21605446934700012 -0.999908447265625 -0.012665181420743465 -0.0 0.4241137206554413 0.22956520318984985 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 0.21605446934700012 -0.99993896484375 -0.01104770042002201 -0.0 0.4242281913757324 0.2307267189025879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 -0.2839455306529999 0.0021973326802253723 0.999969482421875 -0.0 0.052008867263793945 0.8166701197624207 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 0.21605448424816132 -0.062410350888967514 0.9980468153953552 -0.0 0.522833526134491 0.6211022734642029 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 0.21605448424816132 0.0021973326802253723 0.999969482421875 -0.0 0.5286993384361267 0.6222618818283081 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 -0.2839455306529999 -0.20975372195243835 0.9777215123176575 -0.0 0.042858511209487915 0.6745481491088867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 -0.20047609508037567 0.9796746969223022 -0.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 0.21605446934700012 -0.20975372195243835 0.9777215123176575 -0.0 0.5325842499732971 0.47977715730667114 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557603657245636 -0.0 0.02681976556777954 0.4681397080421448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557603657245636 -0.0 0.43715718388557434 0.3104264736175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 -0.2839455306529999 -0.999908447265625 -0.012665181420743465 -0.0 0.029461979866027832 0.3851448893547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 -0.9998779296875 -0.01388592179864645 -0.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 0.21605446934700012 -0.999908447265625 -0.012665181420743465 -0.0 0.4241137206554413 0.22956520318984985 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2142094224691391 -0.0 0.9463331699371338 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 0.21605446934700012 -0.9568773508071899 0.29047515988349915 -0.0 0.5340960025787354 0.307165265083313 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2142094224691391 -0.0 0.5344247221946716 0.30989009141921997 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0710165724158287 0.9974669814109802 -0.0 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 0.21605448424816132 0.0021973326802253723 0.999969482421875 -0.0 0.5286993384361267 0.6222618818283081 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0710165724158287 0.9974669814109802 -0.0 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 -0.20047609508037567 0.9796746969223022 -0.0 0.049921393394470215 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 0.21605446934700012 -0.19217506051063538 0.9813531637191772 -0.0 0.519971489906311 0.473061203956604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 -0.20047609508037567 0.9796746969223022 -0.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.02486705780029297 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 -0.2839455306529999 -0.062410350888967514 0.9980468153953552 -0.0 0.06184554100036621 0.8146851658821106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 -0.1273842602968216 0.9918210506439209 -0.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 0.21605448424816132 -0.062410350888967514 0.9980468153953552 -0.0 0.522833526134491 0.6211022734642029 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 -0.2839455306529999 -0.9568773508071899 0.29047515988349915 -0.0 0.946804404258728 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3670461177825928 -0.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 0.21605446934700012 -0.9568773508071899 0.29047515988349915 -0.0 0.5340960025787354 0.307165265083313 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.99981689453125 -0.018677327781915665 -0.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.99920654296875 -0.0397351011633873 -0.0 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.99981689453125 -0.018677327781915665 -0.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 -0.9998779296875 -0.01388592179864645 -0.0 0.029409736394882202 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 0.21605446934700012 -0.9998779296875 -0.014831995591521263 -0.0 0.4238378405570984 0.2267565131187439 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 -0.9998779296875 -0.01388592179864645 -0.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.143803209066391 0.9895932078361511 -0.0 1.0336462259292603 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0710165724158287 0.9974669814109802 -0.0 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.143803209066391 0.9895932078361511 -0.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 -0.2839455306529999 -0.19217506051063538 0.9813531637191772 -0.0 0.05729389190673828 0.6666763424873352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 0.21605446934700012 -0.191381573677063 0.981505811214447 -0.0 0.5131340026855469 0.46967190504074097 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 0.21605446934700012 -0.19217506051063538 0.9813531637191772 -0.0 0.519971489906311 0.473061203956604 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557603657245636 -0.0 0.43715718388557434 0.3104264736175537 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.01947242021560669 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 -0.1273842602968216 0.9918210506439209 -0.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 -0.19467757642269135 0.9808648824691772 -0.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 -0.1273842602968216 0.9918210506439209 -0.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 -0.2839455306529999 -0.9998779296875 -0.014831995591521263 -0.0 0.02935001254081726 0.3823206424713135 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 0.21605446934700012 -0.999847412109375 -0.0157170332968235 -0.0 0.423676073551178 0.22511571645736694 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 0.21605446934700012 -0.9998779296875 -0.014831995591521263 -0.0 0.4238378405570984 0.2267565131187439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 -0.2839455306529999 -0.191381573677063 0.981505811214447 -0.0 0.0649290382862091 0.6621288657188416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 0.21605446934700012 -0.20114749670028687 0.9795526266098022 -0.0 0.5080614686012268 0.46713006496429443 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 0.21605446934700012 -0.191381573677063 0.981505811214447 -0.0 0.5131340026855469 0.46967190504074097 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2937711775302887 -0.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2937711775302887 -0.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 -0.2839455306529999 -0.999847412109375 -0.0157170332968235 -0.0 0.029282838106155396 0.38067108392715454 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 -0.999847412109375 -0.016449477523565292 -0.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 0.21605446934700012 -0.999847412109375 -0.0157170332968235 -0.0 0.423676073551178 0.22511571645736694 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3670461177825928 -0.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 0.21605446934700012 -0.8967863917350769 0.4424268305301666 -0.0 0.5330564379692078 0.30196136236190796 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3670461177825928 -0.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.21765801310539246 0.9760124683380127 -0.0 1.0247381925582886 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.143803209066391 0.9895932078361511 -0.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.21765801310539246 0.9760124683380127 -0.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 -0.2839455306529999 -0.20114749670028687 0.9795526266098022 -0.0 0.07049843668937683 0.6584956645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 0.21605446934700012 -0.2148197889328003 0.9766228199005127 -0.0 0.5032224059104919 0.46460527181625366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 0.21605446934700012 -0.20114749670028687 0.9795526266098022 -0.0 0.5080614686012268 0.46713006496429443 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013795018196105957 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 -0.19467757642269135 0.9808648824691772 -0.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 -0.2634052634239197 0.964659571647644 -0.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 -0.19467757642269135 0.9808648824691772 -0.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 -0.2839455306529999 -0.2148197889328003 0.9766228199005127 -0.0 0.07572722434997559 0.6547515392303467 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 0.21605446934700012 -0.2295602262020111 0.9732657670974731 -0.0 0.4986191391944885 0.46209830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 0.21605446934700012 -0.2148197889328003 0.9766228199005127 -0.0 0.5032224059104919 0.46460527181625366 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 1.0 0.00015259254723787308 -0.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.99981689453125 -0.018677327781915665 -0.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.999969482421875 0.00015259254723787308 -0.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 -0.999847412109375 -0.016449477523565292 -0.0 0.029208064079284668 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 0.21605446934700012 -0.999847412109375 -0.016968291252851486 -0.0 0.42330440878868103 0.22137945890426636 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 -0.999847412109375 -0.016449477523565292 -0.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.29132968187332153 0.9566026926040649 -0.0 1.016127586364746 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.21765801310539246 0.9760124683380127 -0.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.29132968187332153 0.9566026926040649 -0.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 -0.2839455306529999 -0.2295602262020111 0.9732657670974731 -0.0 0.08061960339546204 0.6509283781051636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 0.21605446934700012 -0.2454603761434555 0.9693899154663086 -0.0 0.49425211548805237 0.459608793258667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 0.21605446934700012 -0.2295602262020111 0.9732657670974731 -0.0 0.4986191391944885 0.46209830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 -0.2839455306529999 0.7530442476272583 0.6579485535621643 -0.0 0.02386653423309326 0.46089035272598267 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 0.21605446934700012 0.7530442476272583 0.6579485535621643 -0.0 0.44005027413368225 0.30239778757095337 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.007834404706954956 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 0.4629644751548767 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 -0.2634052634239197 0.964659571647644 -0.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 -0.3325602114200592 0.9430524706840515 -0.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 -0.2634052634239197 0.964659571647644 -0.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 -0.2839455306529999 -0.999847412109375 -0.016968291252851486 -0.0 0.029126018285751343 0.37691545486450195 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 -0.999847412109375 -0.01739555038511753 -0.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 0.21605446934700012 -0.999847412109375 -0.016968291252851486 -0.0 0.42330440878868103 0.22137945890426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 -0.2839455306529999 -0.8967863917350769 0.4424268305301666 -0.0 0.9480316638946533 0.4602993130683899 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149388313293457 -0.0 0.5323424339294434 0.2994800806045532 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 0.21605446934700012 -0.8967863917350769 0.4424268305301666 -0.0 0.5330564379692078 0.30196136236190796 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 -0.2839455306529999 -0.2454603761434555 0.9693899154663086 -0.0 0.08518248796463013 0.6470544338226318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 0.21605446934700012 -0.2627033293247223 0.964842677116394 -0.0 0.4901202917098999 0.4571353793144226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 0.21605446934700012 -0.2454603761434555 0.9693899154663086 -0.0 0.49425211548805237 0.459608793258667 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149693489074707 -0.0 0.9487879276275635 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 0.21605446934700012 -0.8122806549072266 0.5832392573356628 -0.0 0.5314965844154358 0.2970784902572632 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149388313293457 -0.0 0.5323424339294434 0.2994800806045532 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.3634754419326782 0.9315775036811829 -0.0 1.0078847408294678 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.29132968187332153 0.9566026926040649 -0.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.3634754419326782 0.9315775036811829 -0.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 -0.2839455306529999 -0.2627033293247223 0.964842677116394 -0.0 0.08942463994026184 0.6431540250778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 0.21605446934700012 -0.28144168853759766 0.9595629572868347 -0.0 0.4862211048603058 0.45467615127563477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 0.21605446934700012 -0.2627033293247223 0.964842677116394 -0.0 0.4901202917098999 0.4571353793144226 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.99993896484375 0.009094515815377235 -0.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.999969482421875 0.00015259254723787308 -0.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.99993896484375 0.009094515815377235 -0.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 1.0015931129455566 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727486371994019 0.20689111948013306 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 1.4629645347595215 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 -0.3325602114200592 0.9430524706840515 -0.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 -0.40098270773887634 0.9160435795783997 -0.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 -0.3325602114200592 0.9430524706840515 -0.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 -0.999847412109375 -0.01739555038511753 -0.0 0.029036760330200195 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 0.21605446934700012 -0.99981689453125 -0.017761772498488426 -0.0 0.4228658974170685 0.21706622838974 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 -0.999847412109375 -0.01739555038511753 -0.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 -0.2839455306529999 -0.28144168853759766 0.9595629572868347 -0.0 0.09335640072822571 0.6392477750778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 0.21605446934700012 -0.3018280565738678 0.9533371925354004 -0.0 0.4825509786605835 0.452228307723999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 0.21605446934700012 -0.28144168853759766 0.9595629572868347 -0.0 0.4862211048603058 0.45467615127563477 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022247523069381714 0.4575845003128052 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 0.21605446934700012 0.7530442476272583 0.6579485535621643 -0.0 0.44005027413368225 0.30239778757095337 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172874093055725 0.29867643117904663 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950774908065796 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.4830350875854492 0.20598739385604858 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727486371994019 0.20689111948013306 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 -0.2839455306529999 -0.99981689453125 -0.017761772498488426 -0.0 0.028940409421920776 0.3725799322128296 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 0.21605446934700012 -0.99981689453125 -0.017944883555173874 -0.0 0.4226208031177521 0.214705228805542 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 0.21605446934700012 -0.99981689453125 -0.017761772498488426 -0.0 0.4228658974170685 0.21706622838974 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 -0.2839455306529999 -0.8122806549072266 0.5832392573356628 -0.0 0.9496395587921143 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 -0.7631763815879822 0.6461684107780457 -0.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 0.21605446934700012 -0.8122806549072266 0.5832392573356628 -0.0 0.5314965844154358 0.2970784902572632 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882978200912476 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.4830350875854492 0.20598739385604858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.43293556571006775 0.9013947248458862 -0.0 1.0000649690628052 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.3634754419326782 0.9315775036811829 -0.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.43293556571006775 0.9013947248458862 -0.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 -0.2839455306529999 -0.3018280565738678 0.9533371925354004 -0.0 0.09698906540870667 0.6353528499603271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 0.21605446934700012 -0.3240455389022827 0.9460127353668213 -0.0 0.47910571098327637 0.44978851079940796 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 0.21605446934700012 -0.3018280565738678 0.9533371925354004 -0.0 0.4825509786605835 0.452228307723999 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 -0.2839455306529999 0.0 -1.0 -0.0 1.0288370847702026 0.3702065348625183 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.0 -1.0 -0.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 0.21605446934700012 0.0 -1.0 -0.0 1.4226207733154297 0.214705228805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 -0.2839455306529999 -0.0009460737928748131 0.999969482421875 -0.0 0.9840543270111084 0.7939989566802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 0.21605448424816132 -0.06106753647327423 0.9981078505516052 -0.0 1.4810051918029785 0.630024254322052 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 0.21605448424816132 -0.0009460737928748131 0.999969482421875 -0.0 1.4876281023025513 0.6301566958427429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 -0.40098270773887634 0.9160435795783997 -0.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 -0.4675740897655487 0.8839381337165833 -0.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 -0.40098270773887634 0.9160435795783997 -0.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 -0.2839455306529999 -1.0 0.0 -0.0 0.02804046869277954 0.3460407257080078 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.40843620896339417 0.13705360889434814 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 0.21605446934700012 -1.0 0.0 -0.0 0.4193791449069977 0.19080489873886108 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 -0.2839455306529999 -0.3240455389022827 0.9460127353668213 -0.0 0.10033413767814636 0.6314833760261536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 0.21605446934700012 -0.3483077585697174 0.9373760223388672 -0.0 0.47588011622428894 0.4473530650138855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 0.21605446934700012 -0.3240455389022827 0.9460127353668213 -0.0 0.47910571098327637 0.44978851079940796 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667409420013428 -0.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2937711775302887 -0.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667409420013428 -0.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.05740531533956528 0.9983214735984802 -0.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 0.21605448424816132 -0.0009460737928748131 0.999969482421875 -0.0 0.48762810230255127 0.6301566958427429 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.05740531533956528 0.9983214735984802 -0.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9771514534950256 0.34017306566238403 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 0.21605446934700012 0.0 0.999969482421875 -0.0 1.4193791151046753 0.19080489873886108 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 0.21605446934700012 0.0 1.0 -0.0 0.5012896656990051 0.17674368619918823 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 -0.2839455306529999 -0.06106753647327423 0.9981078505516052 -0.0 0.9941284656524658 0.7937484979629517 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 -0.12469863146543503 0.9921872615814209 -0.0 1.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 0.21605448424816132 -0.06106753647327423 0.9981078505516052 -0.0 1.4810051918029785 0.630024254322052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.4985809028148651 0.8668172359466553 -0.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.43293556571006775 0.9013947248458862 -0.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.4985809028148651 0.8668172359466553 -0.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 -0.2839455306529999 -0.3483077585697174 0.9373760223388672 -0.0 0.10340362787246704 0.6276503801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 0.21605446934700012 -0.3748893737792969 0.9270607829093933 -0.0 0.47286897897720337 0.4449179768562317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 0.21605446934700012 -0.3483077585697174 0.9373760223388672 -0.0 0.47588011622428894 0.4473530650138855 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 1.0259606838226318 0.29135721921920776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.5014961957931519 0.1221572756767273 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 1.4084361791610718 0.13705360889434814 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172874093055725 0.29867643117904663 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 -0.4675740897655487 0.8839381337165833 -0.0 0.10748907923698425 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 -0.5312051773071289 0.8472243547439575 -0.0 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 -0.4675740897655487 0.8839381337165833 -0.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.9788987040519714 0.285663366317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 0.21605446934700012 1.0 0.0 -0.0 0.5012896656990051 0.17674368619918823 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 0.21605445444583893 1.0 0.0 -0.0 0.5014961957931519 0.1221572756767273 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 -0.7631763815879822 0.6461684107780457 -0.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 0.21605446934700012 -0.7112033367156982 0.7029633522033691 -0.0 0.5294021368026733 0.29251474142074585 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 -0.7631763815879822 0.6461684107780457 -0.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 -0.2839455306529999 -0.3748893737792969 0.9270607829093933 -0.0 0.10620921850204468 0.6238624453544617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 0.21605446934700012 -0.4040345549583435 0.9147312641143799 -0.0 0.4700668454170227 0.4424787759780884 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 0.21605446934700012 -0.3748893737792969 0.9270607829093933 -0.0 0.47286897897720337 0.4449179768562317 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 -0.2839455306529999 -0.5027008652687073 0.8644368052482605 -0.0 0.9526037573814392 0.9118335843086243 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 0.2160544991493225 -0.5027008652687073 0.8644368052482605 -0.0 0.45288121700286865 0.7265979051589966 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 0.21605446934700012 -0.5027008652687073 0.8644368052482605 -0.0 0.4990980625152588 0.7493226528167725 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.11801507323980331 0.9929807186126709 -0.0 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.05740531533956528 0.9983214735984802 -0.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.11801507323980331 0.9929807186126709 -0.0 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 -0.12469863146543503 0.9921872615814209 -0.0 0.0038418173789978027 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 -0.1906491219997406 0.981627881526947 -0.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 -0.12469863146543503 0.9921872615814209 -0.0 0.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.5596179366111755 0.8287301063537598 -0.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.4985809028148651 0.8668172359466553 -0.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.5596179366111755 0.8287301063537598 -0.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 -0.2839455306529999 -0.4040345549583435 0.9147312641143799 -0.0 0.10876205563545227 0.6201258897781372 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 0.21605446934700012 -0.4372386932373047 0.8993194103240967 -0.0 0.4674680829048157 0.44003111124038696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 0.21605446934700012 -0.4040345549583435 0.9147312641143799 -0.0 0.4700668454170227 0.4424787759780884 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 1.0 0.0 -0.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 0.21605446934700012 1.0 0.0 -0.0 0.4990980625152588 0.7493226528167725 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 -0.5312051773071289 0.8472243547439575 -0.0 0.11281666159629822 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 -0.5909909605979919 0.8066347241401672 -0.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 -0.5312051773071289 0.8472243547439575 -0.0 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 -0.2839455306529999 -1.0 0.0 -0.0 0.05837661027908325 0.8830084204673767 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 -1.0 0.0 -0.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 0.2160544991493225 -1.0 0.0 -0.0 0.45288121700286865 0.7265979051589966 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 -0.2839455306529999 -0.7112033367156982 0.7029633522033691 -0.0 0.9516303539276123 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532578706741333 -0.0 0.5281496644020081 0.2903541922569275 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 0.21605446934700012 -0.7112033367156982 0.7029633522033691 -0.0 0.5294021368026733 0.29251474142074585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 -0.2839455306529999 -0.4372386932373047 0.8993194103240967 -0.0 0.11107313632965088 0.616445004940033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 0.21605446934700012 -0.4748374819755554 0.8800622820854187 -0.0 0.4650213122367859 0.43750661611557007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 0.21605446934700012 -0.4372386932373047 0.8993194103240967 -0.0 0.4674680829048157 0.44003111124038696 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.1819208413362503 0.983306348323822 -0.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.11801507323980331 0.9929807186126709 -0.0 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.1819208413362503 0.983306348323822 -0.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.08506765961647034 0.8339129686355591 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 -1.0 0.0 -0.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 0.21605448424816132 -1.0 0.0 -0.0 0.42952170968055725 0.6872974038124084 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 -0.1906491219997406 0.981627881526947 -0.0 0.013106107711791992 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 -0.25815606117248535 0.9660939574241638 -0.0 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 -0.1906491219997406 0.981627881526947 -0.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.6155278086662292 0.7881100177764893 -0.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.5596179366111755 0.8287301063537598 -0.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.6155278086662292 0.7881100177764893 -0.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 -0.2839455306529999 -0.4748374819755554 0.8800622820854187 -0.0 0.11318978667259216 0.6127371788024902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 0.21605446934700012 -0.5141758322715759 0.8576616644859314 -0.0 0.4626764953136444 0.43484050035476685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 0.21605446934700012 -0.4748374819755554 0.8800622820854187 -0.0 0.4650213122367859 0.43750661611557007 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 -0.2839455306529999 0.6100344657897949 0.7923520803451538 -0.0 0.01871994137763977 0.45159727334976196 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 0.21605446934700012 0.6100344657897949 0.7923520803451538 -0.0 0.44556304812431335 0.291823148727417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 -0.5909909605979919 0.8066347241401672 -0.0 0.1175563633441925 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 -0.5909909605979919 0.8066347241401672 -0.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.052425503730773926 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.42952170968055725 0.6872974038124084 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532578706741333 -0.0 0.9527706503868103 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.5267577171325684 0.28827619552612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532578706741333 -0.0 0.5281496644020081 0.2903541922569275 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 -0.2839455306529999 -0.5141758322715759 0.8576616644859314 -0.0 0.11515578627586365 0.6089204549789429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 0.21605446934700012 -0.5533921122550964 0.8328806161880493 -0.0 0.46043041348457336 0.4320330023765564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 0.21605446934700012 -0.5141758322715759 0.8576616644859314 -0.0 0.4626764953136444 0.43484050035476685 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.24851222336292267 0.9686269760131836 -0.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.1819208413362503 0.983306348323822 -0.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.24851222336292267 0.9686269760131836 -0.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 -0.25815606117248535 0.9660939574241638 -0.0 0.02185356616973877 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 -0.3262123465538025 0.9452803134918213 -0.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 -0.25815606117248535 0.9660939574241638 -0.0 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.6660054326057434 0.7459028959274292 -0.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.6155278086662292 0.7881100177764893 -0.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.6660054326057434 0.7459028959274292 -0.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 -0.2839455306529999 -0.5533921122550964 0.8328806161880493 -0.0 0.11697599291801453 0.6049986481666565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 0.21605446934700012 -0.5922421813011169 0.8057497143745422 -0.0 0.4582798480987549 0.4290844798088074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 0.21605446934700012 -0.5533921122550964 0.8328806161880493 -0.0 0.46043041348457336 0.4320330023765564 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9053249359130859 0.8409206867218018 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.531541109085083 0.6883732080459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.016798853874206543 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 0.21605446934700012 0.6100344657897949 0.7923520803451538 -0.0 0.44556304812431335 0.291823148727417 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773736596107483 0.288699209690094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.12174451351165771 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 -0.6964934468269348 0.7175511717796326 -0.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540083408355713 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.5267577171325684 0.28827619552612305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 -0.2839455306529999 -0.5922421813011169 0.8057497143745422 -0.0 0.11865502595901489 0.6009750366210938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 0.21605446934700012 -0.6303598284721375 0.7762992978096008 -0.0 0.4562217891216278 0.425994873046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 0.21605446934700012 -0.5922421813011169 0.8057497143745422 -0.0 0.4582798480987549 0.4290844798088074 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 1.0 0.0 -0.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.531541109085083 0.6883732080459595 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.999969482421875 0.0 -0.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.316965252161026 0.9484237432479858 -0.0 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.24851222336292267 0.9686269760131836 -0.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.316965252161026 0.9484237432479858 -0.0 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 -1.0 -0.0 0.0777084231376648 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 0.0 -1.0 -0.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 0.0 -1.0 -0.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 -0.3262123465538025 0.9452803134918213 -0.0 0.030038535594940186 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 -0.39381083846092224 0.9191870093345642 -0.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 -0.3262123465538025 0.9452803134918213 -0.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.7111117839813232 0.7030549049377441 -0.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.6660054326057434 0.7459028959274292 -0.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.7111117839813232 0.7030549049377441 -0.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 -0.2839455306529999 -0.6303598284721375 0.7762992978096008 -0.0 0.120197594165802 0.59685218334198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 0.21605446934700012 -0.6674398183822632 0.7446210980415344 -0.0 0.4542531371116638 0.4227641224861145 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 0.21605446934700012 -0.6303598284721375 0.7762992978096008 -0.0 0.4562217891216278 0.425994873046875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667409420013428 -0.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 -0.6964934468269348 0.7175511717796326 -0.0 0.12541812658309937 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 -0.7443769574165344 0.6677144765853882 -0.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 -0.6964934468269348 0.7175511717796326 -0.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 -1.0 0.0 -0.0 0.04727005958557129 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 -0.999969482421875 -0.0012817773967981339 -0.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 -1.0 0.0 -0.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 -0.2839455306529999 -0.6674398183822632 0.7446210980415344 -0.0 0.12160813808441162 0.5926323533058167 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 -0.7032380104064941 0.7109286785125732 -0.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 0.21605446934700012 -0.6674398183822632 0.7446210980415344 -0.0 0.4542531371116638 0.4227641224861145 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773736596107483 0.288699209690094 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.3862422704696655 0.922391414642334 -0.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.316965252161026 0.9484237432479858 -0.0 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.3862422704696655 0.922391414642334 -0.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219649076461792 0.2828216552734375 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 -0.39381083846092224 0.9191870093345642 -0.0 0.03763490915298462 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 -0.4597918689250946 0.8879970908164978 -0.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 -0.39381083846092224 0.9191870093345642 -0.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.7320169806480408 0.6812646985054016 -0.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.7111117839813232 0.7030549049377441 -0.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 0.7320169806480408 0.6812646985054016 -0.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 0.0 -1.0 -0.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 -0.7443769574165344 0.6677144765853882 -0.0 0.1286132037639618 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 -0.7923825979232788 0.6100039482116699 -0.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 -0.7443769574165344 0.6677144765853882 -0.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 -0.2839455306529999 0.299569696187973 -0.9540390968322754 -0.0 0.9996907711029053 0.6184368133544922 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.3073824346065521 -0.9515671133995056 -0.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 0.21605446934700012 0.299569696187973 -0.9540390968322754 -0.0 0.5732494592666626 0.4284428358078003 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 -1.0 0.0 -0.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 0.21605446934700012 -0.999969482421875 0.0023194067180156708 -0.0 0.5769625306129456 0.40624701976776123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 -1.0 0.0 -0.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 -0.2839455306529999 0.999969482421875 0.0008850367739796638 -0.0 0.9716988801956177 0.6664947867393494 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 1.0 0.0 -0.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 0.21605446934700012 0.999969482421875 0.0008850367739796638 -0.0 0.4987790882587433 0.5032071471214294 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.45512253046035767 0.8904080390930176 -0.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.3862422704696655 0.922391414642334 -0.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.45512253046035767 0.8904080390930176 -0.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 -0.4597918689250946 0.8879970908164978 -0.0 0.04463425278663635 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 -0.5230872631072998 0.8522598743438721 -0.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 -0.4597918689250946 0.8879970908164978 -0.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 -0.2839455306529999 0.999969482421875 0.0038453321903944016 -0.0 0.9719215631484985 0.6577943563461304 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 0.21605446934700012 0.999969482421875 0.0008850367739796638 -0.0 0.4987790882587433 0.5032071471214294 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 0.21605446934700012 0.999969482421875 0.0038453321903944016 -0.0 0.49877843260765076 0.49449795484542847 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012597858905792236 0.44421011209487915 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266231894493103 0.2830923795700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 1.0160439014434814 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 0.5556848645210266 0.5576752424240112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 -0.2839455306529999 0.2850733995437622 -0.9584948420524597 -0.0 1.002036690711975 0.6171183586120605 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 0.21605446934700012 0.299569696187973 -0.9540390968322754 -0.0 0.5732494592666626 0.4284428358078003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 0.21605446934700012 0.2850733995437622 -0.9584948420524597 -0.0 0.5711151957511902 0.42655032873153687 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581100940704346 0.44357115030288696 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192342400550842 0.2804054617881775 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219649076461792 0.2828216552734375 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.99993896484375 0.008301034569740295 -0.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 0.21605446934700012 0.999969482421875 0.0038453321903944016 -0.0 0.49877843260765076 0.49449795484542847 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.99993896484375 0.008301034569740295 -0.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.52232426404953 0.8527176976203918 -0.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.45512253046035767 0.8904080390930176 -0.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.52232426404953 0.8527176976203918 -0.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 1.0116513967514038 0.7508395314216614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 0.5587841272354126 0.556570291519165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 0.5556848645210266 0.5576752424240112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.27262184023857117 -0.9620960354804993 -0.0 1.0045902729034424 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 0.21605446934700012 0.2850733995437622 -0.9584948420524597 -0.0 0.5711151957511902 0.42655032873153687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.27262184023857117 -0.9620960354804993 -0.0 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 -0.999969482421875 -0.0012817773967981339 -0.0 0.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 -0.999969482421875 -0.005371257662773132 -0.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 -0.999969482421875 -0.0012817773967981339 -0.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 -0.5230872631072998 0.8522598743438721 -0.0 0.05104157328605652 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 -0.5828424692153931 0.8125553131103516 -0.0 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 -0.5230872631072998 0.8522598743438721 -0.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 -0.7032380104064941 0.7109286785125732 -0.0 0.12289077043533325 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 -0.7373882532119751 0.6754356622695923 -0.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 -0.7032380104064941 0.7109286785125732 -0.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031494140625 0.4421793222427368 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266231894493103 0.2830923795700073 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541778206825256 0.2806205153465271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 1.007440447807312 0.7491217851638794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.5617994070053101 0.5550513863563538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 0.5587841272354126 0.556570291519165 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.960377037525177 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.516277015209198 0.2782076597213745 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192342400550842 0.2804054617881775 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 -0.2839455306529999 0.999908447265625 0.01348918117582798 -0.0 0.9722524285316467 0.6419804692268372 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.99993896484375 0.008301034569740295 -0.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 0.21605446934700012 0.999908447265625 0.01348918117582798 -0.0 0.4988292455673218 0.47867339849472046 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.5866267681121826 0.8098391890525818 -0.0 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.52232426404953 0.8527176976203918 -0.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.5866267681121826 0.8098391890525818 -0.0 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 1.0034195184707642 0.7469233274459839 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.5647335052490234 0.5531189441680908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.5617994070053101 0.5550513863563538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 -0.2839455306529999 0.2618182897567749 -0.965086817741394 -0.0 1.0073527097702026 0.6142528057098389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.27262184023857117 -0.9620960354804993 -0.0 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 0.21605446934700012 0.2618182897567749 -0.965086817741394 -0.0 0.5662178993225098 0.4225098490715027 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 -0.5828424692153931 0.8125553131103516 -0.0 0.05687263607978821 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 -0.6382641196250916 0.7697988748550415 -0.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 -0.5828424692153931 0.8125553131103516 -0.0 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.999786376953125 0.019684437662363052 -0.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 0.21605446934700012 0.999908447265625 0.01348918117582798 -0.0 0.4988292455673218 0.47867339849472046 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.999786376953125 0.019684437662363052 -0.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007908552885055542 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541778206825256 0.2806205153465271 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837074518203735 0.27837908267974854 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.9995948672294617 0.7442548871040344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.567589282989502 0.5507723093032837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.5647335052490234 0.5531189441680908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.252327024936676 -0.9676198363304138 -0.0 1.0103250741958618 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 0.21605446934700012 0.2618182897567749 -0.965086817741394 -0.0 0.5662178993225098 0.4225098490715027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.252327024936676 -0.9676198363304138 -0.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 -0.999969482421875 -0.005371257662773132 -0.0 0.03887012600898743 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 -0.999908447265625 -0.011413922533392906 -0.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 -0.999969482421875 -0.005371257662773132 -0.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939085066318512 -0.0 0.9627904891967773 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.516277015209198 0.2782076597213745 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 -0.7373882532119751 0.6754356622695923 -0.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 -0.7697073221206665 0.6383861899375916 -0.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 -0.7373882532119751 0.6754356622695923 -0.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.6469008326530457 0.7625354528427124 -0.0 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.5866267681121826 0.8098391890525818 -0.0 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.6469008326530457 0.7625354528427124 -0.0 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9959707856178284 0.7411254644393921 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.5703694224357605 0.5480096936225891 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.567589282989502 0.5507723093032837 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 -0.6382641196250916 0.7697988748550415 -0.0 0.06215009093284607 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 -0.6889248490333557 0.7248145937919617 -0.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 -0.6382641196250916 0.7697988748550415 -0.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.999603271484375 0.027222510427236557 -0.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.999786376953125 0.019684437662363052 -0.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.999603271484375 0.027222510427236557 -0.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9925497770309448 0.7375422716140747 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.5730769038200378 0.5448282957077026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.5703694224357605 0.5480096936225891 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 -0.2839455306529999 0.24396497011184692 -0.9697561264038086 -0.0 1.0135072469711304 0.6110315918922424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.252327024936676 -0.9676198363304138 -0.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 0.21605446934700012 0.24396497011184692 -0.9697561264038086 -0.0 0.5604545474052429 0.41815340518951416 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 -0.999908447265625 -0.011413922533392906 -0.0 0.03850892186164856 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 -0.99981689453125 -0.01825006864964962 -0.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 -0.999908447265625 -0.011413922533392906 -0.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005377382040023804 0.43876558542251587 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837074518203735 0.27837908267974854 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.4615219831466675 0.27637648582458496 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.7022919654846191 0.7118747234344482 -0.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.6469008326530457 0.7625354528427124 -0.0 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.7022919654846191 0.7118747234344482 -0.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.989332914352417 0.7335114479064941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5757145881652832 0.5412243604660034 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.5730769038200378 0.5448282957077026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 -0.2839455306529999 0.23651844263076782 -0.9716177582740784 -0.0 1.01689875125885 0.6092678904533386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 0.21605446934700012 0.24396497011184692 -0.9697561264038086 -0.0 0.5604545474052429 0.41815340518951416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 0.21605446934700012 0.23651844263076782 -0.9716177582740784 -0.0 0.5572388768196106 0.4158700704574585 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096766352653503 0.27450883388519287 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 -0.6889248490333557 0.7248145937919617 -0.0 0.06690171360969543 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 -0.7363505959510803 0.6765648126602173 -0.0 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 -0.6889248490333557 0.7248145937919617 -0.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 -0.2839455306529999 0.99932861328125 0.03656117618083954 -0.0 0.9724791049957275 0.6226339936256409 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.999603271484375 0.027222510427236557 -0.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 0.21605446934700012 0.99932861328125 0.03656117618083954 -0.0 0.4990389347076416 0.45932698249816895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9863194823265076 0.7290369868278503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5782853364944458 0.5371930599212646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5757145881652832 0.5412243604660034 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.2298654168844223 -0.9732047319412231 -0.0 1.020498275756836 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 0.21605446934700012 0.23651844263076782 -0.9716177582740784 -0.0 0.5572388768196106 0.4158700704574585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.2298654168844223 -0.9732047319412231 -0.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 -0.7697073221206665 0.6383861899375916 -0.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 -0.7999511957168579 0.600054919719696 -0.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 -0.7697073221206665 0.6383861899375916 -0.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.9988097548484802 0.04849391058087349 -0.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 0.21605446934700012 0.99932861328125 0.03656117618083954 -0.0 0.4990389347076416 0.45932698249816895 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.9988097548484802 0.04849391058087349 -0.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 0.002720385789871216 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.4615219831466675 0.27637648582458496 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 0.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.7547532320022583 0.6559648513793945 -0.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.7022919654846191 0.7118747234344482 -0.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.7547532320022583 0.6559648513793945 -0.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9835079908370972 0.7241215705871582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 0.21605446934700012 -0.7775200605392456 -0.6288338899612427 -0.0 0.5807920694351196 0.5327289700508118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5782853364944458 0.5371930599212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 -0.99981689453125 -0.01825006864964962 -0.0 0.03814530372619629 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 -0.9996337890625 -0.026032287627458572 -0.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 -0.99981689453125 -0.01825006864964962 -0.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680632948875427 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060328841209412 0.27303242683410645 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096766352653503 0.27450883388519287 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 -0.7363505959510803 0.6765648126602173 -0.0 0.07115733623504639 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 -0.7825861573219299 0.6225165724754333 -0.0 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 -0.7363505959510803 0.6765648126602173 -0.0 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 -0.2839455306529999 -0.7775200605392456 -0.6288338899612427 -0.0 0.9808957576751709 0.7187663316726685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 0.21605446934700012 -0.82668536901474 -0.5626392364501953 -0.0 0.5832045078277588 0.5277668237686157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 0.21605446934700012 -0.7775200605392456 -0.6288338899612427 -0.0 0.5807920694351196 0.5327289700508118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 -0.2839455306529999 0.22385326027870178 -0.9746086001396179 -0.0 1.0243034362792969 0.6053946018218994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.2298654168844223 -0.9732047319412231 -0.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 0.21605446934700012 0.22385326027870178 -0.9746086001396179 -0.0 0.550125002861023 0.4111306071281433 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.9979247450828552 0.06414990872144699 -0.0 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.9988097548484802 0.04849391058087349 -0.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.9979247450828552 0.06414990872144699 -0.0 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.8058107495307922 0.5921201109886169 -0.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.7547532320022583 0.6559648513793945 -0.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.8058107495307922 0.5921201109886169 -0.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 -0.2839455306529999 -0.82668536901474 -0.5626392364501953 -0.0 0.9785283803939819 0.7129271030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 0.21605446934700012 -0.8707236051559448 -0.4917142391204834 -0.0 0.5854932069778442 0.5222377777099609 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 0.21605446934700012 -0.82668536901474 -0.5626392364501953 -0.0 0.5832045078277588 0.5277668237686157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 -0.2839455306529999 0.21842096745967865 -0.9758293628692627 -0.0 1.028309941291809 0.6032699346542358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 0.21605446934700012 0.22385326027870178 -0.9746086001396179 -0.0 0.550125002861023 0.4111306071281433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 0.21605446934700012 0.21842096745967865 -0.9758293628692627 -0.0 0.5462237000465393 0.40869390964508057 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 -0.9996337890625 -0.026032287627458572 -0.0 0.03777933120727539 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 -0.999359130859375 -0.03509628772735596 -0.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 -0.9996337890625 -0.026032287627458572 -0.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 -0.7825861573219299 0.6225165724754333 -0.0 0.07486656308174133 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 -0.82601398229599 0.5636158585548401 -0.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 -0.7825861573219299 0.6225165724754333 -0.0 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999364614486694 0.4362236261367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 1.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684172868728638 0.27312713861465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 -0.2839455306529999 -0.8707236051559448 -0.4917142391204834 -0.0 0.9764478802680969 0.7065575122833252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 -0.9058809280395508 -0.42347484827041626 -0.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 0.21605446934700012 -0.8707236051559448 -0.4917142391204834 -0.0 0.5854932069778442 0.5222377777099609 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.2135074883699417 -0.9769279956817627 -0.0 1.0325127840042114 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 0.21605446934700012 0.21842096745967865 -0.9758293628692627 -0.0 0.5462237000465393 0.40869390964508057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.2135074883699417 -0.9769279956817627 -0.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709254503250122 0.43594735860824585 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.502161979675293 0.2718232274055481 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060328841209412 0.27303242683410645 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 -0.7999511957168579 0.600054919719696 -0.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 -0.8279671669006348 0.5607470870018005 -0.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 -0.7999511957168579 0.600054919719696 -0.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 -0.2839455306529999 0.9963072538375854 0.08566545695066452 -0.0 0.9723979234695435 0.6089496612548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.9979247450828552 0.06414990872144699 -0.0 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 0.21605446934700012 0.9963072538375854 0.08566545695066452 -0.0 0.49941331148147583 0.4456617832183838 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.8518326282501221 0.5237891674041748 -0.0 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.8058107495307922 0.5921201109886169 -0.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.8518326282501221 0.5237891674041748 -0.0 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 -0.82601398229599 0.5636158585548401 -0.0 0.07799184322357178 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 -0.8645283579826355 0.5025787949562073 -0.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 -0.82601398229599 0.5636158585548401 -0.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 -0.7923825979232788 0.6100039482116699 -0.0 0.13128799200057983 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 -0.8371227383613586 0.5469832420349121 -0.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 -0.7923825979232788 0.6100039482116699 -0.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 -0.2839455306529999 0.9931027889251709 0.11709952354431152 -0.0 0.9723045825958252 0.6056911945343018 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 0.21605446934700012 0.9963072538375854 0.08566545695066452 -0.0 0.49941331148147583 0.4456617832183838 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 0.21605446934700012 0.9931027889251709 0.11709952354431152 -0.0 0.4995746612548828 0.4424140453338623 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970248341560364 0.43528419733047485 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684172868728638 0.27312713861465454 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721579551696777 0.27190256118774414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 -0.2839455306529999 0.21283608675003052 -0.9770805835723877 -0.0 1.0369054079055786 0.59861159324646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.2135074883699417 -0.9769279956817627 -0.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 0.21605446934700012 0.21283608675003052 -0.9770805835723877 -0.0 0.5377336740493774 0.4037465453147888 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739395380020142 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.49806731939315796 0.27089667320251465 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.502161979675293 0.2718232274055481 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.9859004616737366 0.1672719568014145 -0.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 0.21605446934700012 0.9931027889251709 0.11709952354431152 -0.0 0.4995746612548828 0.4424140453338623 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.9859004616737366 0.1672719568014145 -0.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.06277657300233841 -0.9980162978172302 -0.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 -0.0001831110566854477 -0.999969482421875 -0.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.06277657300233841 -0.9980162978172302 -0.0 0.4871401786804199 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 1.0206077098846436 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 -0.2839455306529999 0.22058779001235962 -0.9753410220146179 -0.0 0.04124736785888672 0.5961276888847351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 0.21605446934700012 0.21283608675003052 -0.9770805835723877 -0.0 0.5377336740493774 0.4037465453147888 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 0.21605446934700012 0.22058779001235962 -0.9753410220146179 -0.0 0.5333826541900635 0.40131789445877075 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 -0.999359130859375 -0.03509628772735596 -0.0 0.037410229444503784 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 -0.9989318251609802 -0.045625172555446625 -0.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 -0.999359130859375 -0.03509628772735596 -0.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 -0.8371227383613586 0.5469832420349121 -0.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 -0.8756370544433594 0.4829248785972595 -0.0 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 -0.8371227383613586 0.5469832420349121 -0.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939851760864258 0.43456918001174927 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721579551696777 0.27190256118774414 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.4760892391204834 0.27096086740493774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.23349711298942566 -0.9723502397537231 -0.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 0.21605446934700012 0.22058779001235962 -0.9753410220146179 -0.0 0.5333826541900635 0.40131789445877075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.23349711298942566 -0.9723502397537231 -0.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771062135696411 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937538802623749 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.49806731939315796 0.27089667320251465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 -0.0001831110566854477 -1.0 -0.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 -0.0633259043097496 -0.9979857802391052 -0.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 -0.0001831110566854477 -0.999969482421875 -0.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 -0.8279671669006348 0.5607470870018005 -0.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 -0.8537247776985168 0.52067631483078 -0.0 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 -0.8279671669006348 0.5607470870018005 -0.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 -0.2839455306529999 0.9713736176490784 0.2374339997768402 -0.0 0.9720193147659302 0.6011558771133423 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.9859004616737366 0.1672719568014145 -0.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 0.21605446934700012 0.9713736176490784 0.2374339997768402 -0.0 0.4999516010284424 0.43790704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0002441480755805969 -0.999969482421875 -0.0 1.0253300666809082 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0002441480755805969 -1.0 -0.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 -0.2839455306529999 0.9525132179260254 0.30448317527770996 -0.0 0.9718208312988281 0.5995715856552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 0.21605446934700012 0.9713736176490784 0.2374339997768402 -0.0 0.4999516010284424 0.43790704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 0.21605446934700012 0.9525132179260254 0.30448317527770996 -0.0 0.5001802444458008 0.4363413453102112 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908171892166138 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.4760892391204834 0.27096086740493774 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802062511444092 0.27031534910202026 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.8901638984680176 0.45558029413223267 -0.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.8518326282501221 0.5237891674041748 -0.0 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.8901638984680176 0.45558029413223267 -0.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 -0.2839455306529999 0.06833094358444214 -0.9976500868797302 -0.0 1.0299208164215088 0.7526613473892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0002441480755805969 -1.0 -0.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 0.21605446934700012 0.06833094358444214 -0.9976500868797302 -0.0 0.542594313621521 0.5579367280006409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 -0.2839455306529999 0.24808496236801147 -0.9687185287475586 -0.0 0.049069106578826904 0.591133713722229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.23349711298942566 -0.9723502397537231 -0.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 0.21605446934700012 0.24808496236801147 -0.9687185287475586 -0.0 0.5254290699958801 0.39677244424819946 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804256558418274 0.43398576974868774 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.48922884464263916 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937538802623749 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 -0.0633259043097496 -0.9979857802391052 -0.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 0.21605446934700012 -0.12878811359405518 -0.9916684627532959 -0.0 0.4959324598312378 0.5607290267944336 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 -0.0633259043097496 -0.9979857802391052 -0.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 -0.2839455306529999 0.9325845837593079 0.36088138818740845 -0.0 0.9715766310691833 0.5980284214019775 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 0.21605446934700012 0.9525132179260254 0.30448317527770996 -0.0 0.5001802444458008 0.4363413453102112 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 0.21605446934700012 0.9325845837593079 0.36088138818740845 -0.0 0.5004534125328064 0.43482106924057007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 -0.2839455306529999 0.13904233276844025 -0.9902645945549011 -0.0 1.034368634223938 0.7518304586410522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 0.21605446934700012 0.06833094358444214 -0.9976500868797302 -0.0 0.542594313621521 0.5579367280006409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 0.21605446934700012 0.13904233276844025 -0.9902645945549011 -0.0 0.5394285321235657 0.5569874048233032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.26462599635124207 -0.964323878288269 -0.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 0.21605446934700012 0.24808496236801147 -0.9687185287475586 -0.0 0.5254290699958801 0.39677244424819946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.26462599635124207 -0.964323878288269 -0.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 -0.2839455306529999 -0.999969482421875 0.0023194067180156708 -0.0 0.9976115226745605 0.5954424738883972 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 0.21605446934700012 -0.99993896484375 0.009704886004328728 -0.0 0.5774822235107422 0.39922070503234863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 0.21605446934700012 -0.999969482421875 0.0023194067180156708 -0.0 0.5769625306129456 0.40624701976776123 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.9089937806129456 0.41679129004478455 -0.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 0.21605446934700012 0.9325845837593079 0.36088138818740845 -0.0 0.5004534125328064 0.43482106924057007 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.9089937806129456 0.41679129004478455 -0.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802062511444092 0.27031534910202026 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484501600265503 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 -0.2839455306529999 0.1281472146511078 -0.9917294979095459 -0.0 0.9888919591903687 0.7250957489013672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.06277657300233841 -0.9980162978172302 -0.0 1.48714017868042 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 0.21605446934700012 0.1281472146511078 -0.9917294979095459 -0.0 1.484134554862976 0.5612612962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.21167638897895813 -0.9773247241973877 -0.0 1.0386587381362915 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 0.21605446934700012 0.13904233276844025 -0.9902645945549011 -0.0 0.5394285321235657 0.5569874048233032 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.21167638897895813 -0.9773247241973877 -0.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 -0.9989318251609802 -0.045625172555446625 -0.0 0.03703737258911133 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 -0.9982909560203552 -0.05813775956630707 -0.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 -0.9989318251609802 -0.045625172555446625 -0.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838976860046387 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484501600265503 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.48922884464263916 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 -0.2839455306529999 -0.12878811359405518 -0.9916684627532959 -0.0 0.9736800193786621 0.7242040634155273 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 0.21605446934700012 -0.19602037966251373 -0.9805902242660522 -0.0 0.49866729974746704 0.5597536563873291 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 0.21605446934700012 -0.12878811359405518 -0.9916684627532959 -0.0 0.4959324598312378 0.5607290267944336 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 -0.8756370544433594 0.4829248785972595 -0.0 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 -0.9079561829566956 0.4190496504306793 -0.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 -0.8756370544433594 0.4829248785972595 -0.0 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 -0.8537247776985168 0.52067631483078 -0.0 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 -0.8774986863136292 0.47950682044029236 -0.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 -0.8537247776985168 0.52067631483078 -0.0 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 -0.2839455306529999 0.8817102313041687 0.47172459959983826 -0.0 0.9709528684616089 0.5950659513473511 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.9089937806129456 0.41679129004478455 -0.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 0.21605446934700012 0.8817102313041687 0.47172459959983826 -0.0 0.5011327862739563 0.43191802501678467 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 -0.2839455306529999 0.19583727419376373 -0.9806207418441772 -0.0 0.9926527738571167 0.7242611050605774 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 0.21605446934700012 0.1281472146511078 -0.9917294979095459 -0.0 1.484134554862976 0.5612612962722778 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 0.21605446934700012 0.19583727419376373 -0.9806207418441772 -0.0 1.4812134504318237 0.5605089664459229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 -0.2839455306529999 0.2850123643875122 -0.9584948420524597 -0.0 0.0427783727645874 0.7486751079559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.21167638897895813 -0.9773247241973877 -0.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 0.21605446934700012 0.2850123643875122 -0.9584948420524597 -0.0 0.5333884954452515 0.553887128829956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 -0.2839455306529999 0.28357797861099243 -0.9589220881462097 -0.0 0.05574190616607666 0.5862020254135132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.26462599635124207 -0.964323878288269 -0.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 0.21605446934700012 0.28357797861099243 -0.9589220881462097 -0.0 0.5185067653656006 0.39258718490600586 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 -0.2839455306529999 -0.19602037966251373 -0.9805902242660522 -0.0 0.9701930284500122 0.7229883670806885 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 0.21605446934700012 -0.2641376852989197 -0.964476466178894 -0.0 0.5013262033462524 0.5584465265274048 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 0.21605446934700012 -0.19602037966251373 -0.9805902242660522 -0.0 0.49866729974746704 0.5597536563873291 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 -0.2839455306529999 0.8511307239532471 0.5248878598213196 -0.0 0.9705733060836792 0.5936467051506042 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 0.21605446934700012 0.8817102313041687 0.47172459959983826 -0.0 0.5011327862739563 0.43191802501678467 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 0.21605446934700012 0.8511307239532471 0.5248878598213196 -0.0 0.5015394687652588 0.43053603172302246 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005178928375244 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 -0.2839455306529999 0.3577989935874939 -0.9337748289108276 -0.0 0.04671713709831238 0.7463663816452026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 0.21605446934700012 0.2850123643875122 -0.9584948420524597 -0.0 0.5333884954452515 0.553887128829956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 0.21605446934700012 0.3577989935874939 -0.9337748289108276 -0.0 0.5305119752883911 0.5517319440841675 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 -0.2839455306529999 0.30545976758003235 -0.9521775245666504 -0.0 0.05865311622619629 0.5837885141372681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 0.21605446934700012 0.28357797861099243 -0.9589220881462097 -0.0 0.5185067653656006 0.39258718490600586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 0.21605446934700012 0.30545976758003235 -0.9521775245666504 -0.0 0.5154390335083008 0.39060717821121216 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 -0.2839455306529999 0.8176214098930359 0.5757316946983337 -0.0 0.9701488018035889 0.5922689437866211 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 0.21605446934700012 0.8511307239532471 0.5248878598213196 -0.0 0.5015394687652588 0.43053603172302246 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 0.21605446934700012 0.8176214098930359 0.5757011771202087 -0.0 0.5019909143447876 0.4292007088661194 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 -0.2839455306529999 0.26499220728874207 -0.964232325553894 -0.0 0.9962847232818604 0.7230038642883301 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 0.21605446934700012 0.19583727419376373 -0.9806207418441772 -0.0 1.4812134504318237 0.5605089664459229 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 0.21605446934700012 0.26499220728874207 -0.964232325553894 -0.0 1.478376030921936 0.5593962669372559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 -0.2839455306529999 0.4286935031414032 -0.903439462184906 -0.0 0.050466328859329224 0.7435793876647949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 0.21605446934700012 0.3577989935874939 -0.9337748289108276 -0.0 0.5305119752883911 0.5517319440841675 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 0.21605446934700012 0.4286935031414032 -0.903439462184906 -0.0 0.5277293920516968 0.5491690635681152 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.33097323775291443 -0.9436323046684265 -0.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 0.21605446934700012 0.30545976758003235 -0.9521775245666504 -0.0 0.5154390335083008 0.39060717821121216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.33097323775291443 -0.9436323046684265 -0.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 -0.2839455306529999 -0.2641376852989197 -0.964476466178894 -0.0 0.9668347239494324 0.7213927507400513 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 0.21605446934700012 -0.3320719003677368 -0.9432355761528015 -0.0 0.503910481929779 0.5568075776100159 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 0.21605446934700012 -0.2641376852989197 -0.964476466178894 -0.0 0.5013262033462524 0.5584465265274048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 -0.8774986863136292 0.47950682044029236 -0.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 -0.8994414806365967 0.4369945228099823 -0.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 -0.8774986863136292 0.47950682044029236 -0.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 -0.2839455306529999 0.7817316055297852 0.6235846877098083 -0.0 0.9696797132492065 0.5909324884414673 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 0.21605446934700012 0.8176214098930359 0.5757011771202087 -0.0 0.5019909143447876 0.4292007088661194 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 0.21605446934700012 0.7817316055297852 0.6235846877098083 -0.0 0.5024871230125427 0.42791253328323364 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747433543205261 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 -0.2839455306529999 0.49647510051727295 -0.8680074214935303 -0.0 0.05401936173439026 0.7403191328048706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 0.21605446934700012 0.4286935031414032 -0.903439462184906 -0.0 0.5277293920516968 0.5491690635681152 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 0.21605446934700012 0.49647510051727295 -0.8680074214935303 -0.0 0.5250393152236938 0.5461939573287964 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 -0.2839455306529999 -0.33594775199890137 0.9418622255325317 -0.0 0.9314653873443604 0.5846927165985107 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 0.21605446934700012 -0.32862329483032227 0.9444258213043213 -0.0 0.537887454032898 0.42787182331085205 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 0.21605446934700012 -0.33594775199890137 0.9418622255325317 -0.0 0.5403105616569519 0.4299470782279968 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 -0.2839455306529999 0.334574431180954 -0.9423505067825317 -0.0 0.9997810125350952 0.7213302850723267 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 0.21605446934700012 0.26499220728874207 -0.964232325553894 -0.0 1.478376030921936 0.5593962669372559 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 0.21605446934700012 0.334574431180954 -0.9423505067825317 -0.0 1.4756214618682861 0.5579229593276978 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.5601367354393005 -0.8283944129943848 -0.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 0.21605446934700012 0.49647510051727295 -0.8680074214935303 -0.0 0.5250393152236938 0.5461939573287964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.5601367354393005 -0.8283944129943848 -0.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 -0.2839455306529999 0.36106449365615845 -0.9325235486030579 -0.0 0.0636448860168457 0.5791078805923462 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.33097323775291443 -0.9436323046684265 -0.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 0.21605446934700012 0.36106449365615845 -0.9325235486030579 -0.0 0.5100929737091064 0.38682734966278076 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.9939878582954407 0.10940885543823242 -0.0 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 0.21605446934700012 0.9939878582954407 0.10940885543823242 -0.0 0.5403105616569519 0.4299470782279968 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.9939878582954407 0.10940885543823242 -0.0 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 -0.2839455306529999 -0.3320719003677368 -0.9432355761528015 -0.0 0.9636092185974121 0.7194227576255798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 0.21605446934700012 -0.3988158702850342 -0.9170202016830444 -0.0 0.5064213275909424 0.5548363924026489 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 0.21605446934700012 -0.3320719003677368 -0.9432355761528015 -0.0 0.503910481929779 0.5568075776100159 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 -0.9079561829566956 0.4190496504306793 -0.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 -0.9342936277389526 0.3564561903476715 -0.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 -0.9079561829566956 0.4190496504306793 -0.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 -0.2839455306529999 -0.99993896484375 0.009704886004328728 -0.0 0.9976453185081482 0.5883469581604004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 0.21605446934700012 -0.999786376953125 0.02047792077064514 -0.0 0.5779449343681335 0.3925821781158447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 0.21605446934700012 -0.99993896484375 0.009704886004328728 -0.0 0.5774822235107422 0.39922070503234863 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470856070518494 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 -0.7042146325111389 -0.7099520564079285 -0.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.7437971234321594 0.6683858633041382 -0.0 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 0.21605446934700012 0.7817316055297852 0.6235846877098083 -0.0 0.5024871230125427 0.42791253328323364 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.7437971234321594 0.6683858633041382 -0.0 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 -0.9982909560203552 -0.05813775956630707 -0.0 0.03666028380393982 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 -0.9973143935203552 -0.07306130975484848 -0.0 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 -0.9982909560203552 -0.05813775956630707 -0.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.4033631384372711 -0.9150059223175049 -0.0 1.0031362771987915 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 0.21605446934700012 0.334574431180954 -0.9423505067825317 -0.0 1.4756214618682861 0.5579229593276978 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.4033631384372711 -0.9150059223175049 -0.0 1.4729485511779785 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 -0.2839455306529999 0.6188238263130188 -0.7854853868484497 -0.0 0.06051981449127197 0.7323944568634033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.5601367354393005 -0.8283944129943848 -0.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 0.21605446934700012 0.6188238263130188 -0.7854853868484497 -0.0 0.5199300646781921 0.5389848947525024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 -0.2839455306529999 0.3968626856803894 -0.9178441762924194 -0.0 0.06573435664176941 0.5768525004386902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 0.21605446934700012 0.36106449365615845 -0.9325235486030579 -0.0 0.5100929737091064 0.38682734966278076 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 0.21605446934700012 0.3968626856803894 -0.9178441762924194 -0.0 0.5078138709068298 0.3850102424621582 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.6963713765144348 -0.7176427245140076 -0.0 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 -0.2839455306529999 -0.3988158702850342 -0.9170202016830444 -0.0 0.9605203866958618 0.7170834541320801 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 0.21605446934700012 -0.46327096223831177 -0.886196494102478 -0.0 0.508860170841217 0.5525315999984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 0.21605446934700012 -0.3988158702850342 -0.9170202016830444 -0.0 0.5064213275909424 0.5548363924026489 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 -0.7042146325111389 -0.7099520564079285 -0.0 0.06174713373184204 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 -0.7042146325111389 -0.7099520564079285 -0.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 -0.2839455306529999 0.6721396446228027 -0.7404095530509949 -0.0 0.06346258521080017 0.7277339696884155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 0.21605446934700012 0.6188238263130188 -0.7854853868484497 -0.0 0.5199300646781921 0.5389848947525024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 0.21605446934700012 0.6721396446228027 -0.7404095530509949 -0.0 0.5175074934959412 0.5347373485565186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.44001588225364685 -0.8979766368865967 -0.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 0.21605446934700012 0.3968626856803894 -0.9178441762924194 -0.0 0.5078138709068298 0.3850102424621582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.44001588225364685 -0.8979766368865967 -0.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 -0.2839455306529999 0.7044587731361389 0.7097384333610535 -0.0 0.9686083793640137 0.5883837938308716 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.7437971234321594 0.6683858633041382 -0.0 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 0.21605446934700012 0.7044587731361389 0.7097384333610535 -0.0 0.5036134123802185 0.4254789352416992 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 -0.8645283579826355 0.5025787949562073 -0.0 0.08057984709739685 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 -0.8977630138397217 0.44041261076927185 -0.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 -0.8645283579826355 0.5025787949562073 -0.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 -0.8994414806365967 0.4369945228099823 -0.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 -0.9193701148033142 0.39335307478904724 -0.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 -0.8994414806365967 0.4369945228099823 -0.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 -0.2839455306529999 -0.32862329483032227 0.9444258213043213 -0.0 0.934057891368866 0.5834326148033142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 0.21605446934700012 -0.31321147084236145 0.9496444463729858 -0.0 0.5355287790298462 0.42596107721328735 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 0.21605446934700012 -0.32862329483032227 0.9444258213043213 -0.0 0.537887454032898 0.42787182331085205 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.7198401093482971 -0.6941129565238953 -0.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 0.21605446934700012 0.6721396446228027 -0.7404095530509949 -0.0 0.5175074934959412 0.5347373485565186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.7198401093482971 -0.6941129565238953 -0.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 -0.9342936277389526 0.3564561903476715 -0.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 -0.9551683068275452 0.29602953791618347 -0.0 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 -0.9342936277389526 0.3564561903476715 -0.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.058582156896591187 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 -0.2839455306529999 0.47025972604751587 -0.8825037479400635 -0.0 0.006345778703689575 0.7167558670043945 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.4033631384372711 -0.9150059223175049 -0.0 0.47294849157333374 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 0.21605446934700012 0.47025972604751587 -0.8825037479400635 -0.0 0.4703560471534729 0.5538910627365112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 -0.2839455306529999 0.4925687313079834 -0.8702658414840698 -0.0 0.06912404298782349 0.5725313425064087 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.44001588225364685 -0.8979766368865967 -0.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 0.21605446934700012 0.4925687313079834 -0.8702658414840698 -0.0 0.5040379166603088 0.3814815282821655 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 -0.2839455306529999 0.6643574237823486 0.747398316860199 -0.0 0.9680066108703613 0.5871713161468506 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 0.21605446934700012 0.7044587731361389 0.7097384333610535 -0.0 0.5036134123802185 0.4254789352416992 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 0.21605446934700012 0.6643574237823486 0.747398316860199 -0.0 0.5042434334754944 0.42433422803878784 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 -0.2839455306529999 -0.46327096223831177 -0.886196494102478 -0.0 0.9575706124305725 0.7143791913986206 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 0.21605446934700012 -0.5246132016181946 -0.8513138294219971 -0.0 0.5112283229827881 0.5498915910720825 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 0.21605446934700012 -0.46327096223831177 -0.886196494102478 -0.0 0.508860170841217 0.5525315999984741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 -0.2839455306529999 -0.999786376953125 0.02047792077064514 -0.0 0.9977109432220459 0.581652045249939 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 0.21605446934700012 -0.99945068359375 0.03262428566813469 -0.0 0.5783491134643555 0.38633376359939575 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 0.21605446934700012 -0.999786376953125 0.02047792077064514 -0.0 0.5779449343681335 0.3925821781158447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 -0.2839455306529999 0.765373706817627 -0.6435437798500061 -0.0 0.06873214244842529 0.7170165777206421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.7198401093482971 -0.6941129565238953 -0.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 0.21605446934700012 0.765373706817627 -0.6435437798500061 -0.0 0.5129179954528809 0.5249159336090088 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 -0.2839455306529999 0.6238288283348083 0.7815485000610352 -0.0 0.9673608541488647 0.5859999656677246 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 0.21605446934700012 0.6643574237823486 0.747398316860199 -0.0 0.5042434334754944 0.42433422803878784 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 0.21605446934700012 0.6238288283348083 0.7815485000610352 -0.0 0.5049180388450623 0.4232381582260132 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 -0.2839455306529999 -0.31321147084236145 0.9496444463729858 -0.0 0.9365617036819458 0.5822762250900269 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 0.21605446934700012 -0.29615160822868347 0.9551072716712952 -0.0 0.5332391262054443 0.42421799898147583 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 0.21605446934700012 -0.31321147084236145 0.9496444463729858 -0.0 0.5355287790298462 0.42596107721328735 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.055205315351486206 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 -0.2839455306529999 0.5341349244117737 -0.8453627228736877 -0.0 0.00940614938735962 0.7138638496398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 0.21605446934700012 0.47025972604751587 -0.8825037479400635 -0.0 0.4703560471534729 0.5538910627365112 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 0.21605446934700012 0.5341349244117737 -0.8453627228736877 -0.0 0.46784284710884094 0.5513290166854858 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 -0.2839455306529999 0.8116397857666016 -0.5841242671012878 -0.0 0.07100096344947815 0.7109781503677368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 0.21605446934700012 0.765373706817627 -0.6435437798500061 -0.0 0.5129179954528809 0.5249159336090088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 0.21605446934700012 0.8116397857666016 -0.5841242671012878 -0.0 0.510796844959259 0.5193343758583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 -0.2839455306529999 0.5629138946533203 -0.82650226354599 -0.0 0.070433109998703 0.5704699754714966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 0.21605446934700012 0.4925687313079834 -0.8702658414840698 -0.0 0.5040379166603088 0.3814815282821655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 0.21605446934700012 0.5629138946533203 -0.82650226354599 -0.0 0.5025386214256287 0.3797556757926941 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 -0.2839455306529999 -0.5246132016181946 -0.8513138294219971 -0.0 0.9547619819641113 0.7113131284713745 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 -0.5820184946060181 -0.8131656646728516 -0.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 0.21605446934700012 -0.5246132016181946 -0.8513138294219971 -0.0 0.5112283229827881 0.5498915910720825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.8543656468391418 -0.5196386575698853 -0.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 0.21605446934700012 0.8116397857666016 -0.5841242671012878 -0.0 0.510796844959259 0.5193343758583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.8543656468391418 -0.5196386575698853 -0.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.6290780305862427 -0.7773369550704956 -0.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 0.21605446934700012 0.5629138946533203 -0.82650226354599 -0.0 0.5025386214256287 0.3797556757926941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.6290780305862427 -0.7773369550704956 -0.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 -0.2839455306529999 0.5818048715591431 0.8133182525634766 -0.0 0.9666714072227478 0.5848695635795593 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 0.21605446934700012 0.6238288283348083 0.7815485000610352 -0.0 0.5049180388450623 0.4232381582260132 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 0.21605446934700012 0.5818048715591431 0.8133182525634766 -0.0 0.5056371688842773 0.4221910834312439 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 -0.9551683068275452 0.29602953791618347 -0.0 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 -0.9711599946022034 0.2384105920791626 -0.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 -0.9551683068275452 0.29602953791618347 -0.0 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 -0.9193701148033142 0.39335307478904724 -0.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 -0.9371318817138672 0.3489181101322174 -0.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 -0.9193701148033142 0.39335307478904724 -0.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 -0.2839455306529999 -0.29615160822868347 0.9551072716712952 -0.0 0.9389737844467163 0.5812290906906128 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 0.21605446934700012 -0.2771385908126831 0.9608142375946045 -0.0 0.5310229659080505 0.4226453900337219 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 0.21605446934700012 -0.29615160822868347 0.9551072716712952 -0.0 0.5332391262054443 0.42421799898147583 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.051608264446258545 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.4022355079650879 0.25275760889053345 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 -0.2839455306529999 0.5941038131713867 -0.8043763637542725 -0.0 0.012314856052398682 0.7105729579925537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 0.21605446934700012 0.5341349244117737 -0.8453627228736877 -0.0 0.46784284710884094 0.5513290166854858 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 0.21605446934700012 0.5941038131713867 -0.8043763637542725 -0.0 0.46540743112564087 0.5483993887901306 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781407833099365 0.400759756565094 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 -0.4601885974407196 -0.8877834677696228 -0.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.4022355079650879 0.25275760889053345 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.921262264251709 0.3888668417930603 -0.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.8901638984680176 0.45558029413223267 -0.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.921262264251709 0.3888668417930603 -0.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 -0.2839455306529999 0.8903164863586426 -0.45530563592910767 -0.0 0.07459104061126709 0.6976232528686523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.8543656468391418 -0.5196386575698853 -0.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 0.21605446934700012 0.8903164863586426 -0.45530563592910767 -0.0 0.5070923566818237 0.5068193078041077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 -0.2839455306529999 0.6803796291351318 -0.7328409552574158 -0.0 0.07364055514335632 0.5637936592102051 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.6290780305862427 -0.7773369550704956 -0.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 0.21605446934700012 0.6803796291351318 -0.7328409552574158 -0.0 0.4986985921859741 0.373982310295105 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.5360575914382935 0.844141960144043 -0.0 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 0.21605446934700012 0.5818048715591431 0.8133182525634766 -0.0 0.5056371688842773 0.4221910834312439 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.5360575914382935 0.844141960144043 -0.0 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 -0.5820184946060181 -0.8131656646728516 -0.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 0.21605446934700012 -0.634968101978302 -0.772515058517456 -0.0 0.5157588124275208 0.5435953140258789 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 -0.5820184946060181 -0.8131656646728516 -0.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 -0.2839455306529999 -0.99945068359375 0.03262428566813469 -0.0 0.9978078603744507 0.5753602981567383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 0.21605446934700012 -0.9989013075828552 0.046418651938438416 -0.0 0.5786933898925781 0.3804762363433838 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 0.21605446934700012 -0.99945068359375 0.03262428566813469 -0.0 0.5783491134643555 0.38633376359939575 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 -0.2839455306529999 -0.2771385908126831 0.9608142375946045 -0.0 0.9412914514541626 0.5802960395812988 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 0.21605446934700012 -0.2558977007865906 0.9666737914085388 -0.0 0.5288844108581543 0.4212455749511719 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 0.21605446934700012 -0.2771385908126831 0.9608142375946045 -0.0 0.5310229659080505 0.4226453900337219 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.9197973608970642 -0.39231544733047485 -0.0 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 0.21605446934700012 0.8903164863586426 -0.45530563592910767 -0.0 0.5070923566818237 0.5068193078041077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.9197973608970642 -0.39231544733047485 -0.0 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 -0.9058809280395508 -0.42347484827041626 -0.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 0.21605446934700012 -0.9333170652389526 -0.35898923873901367 -0.0 0.5897163152694702 0.5094247460365295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 -0.9058809280395508 -0.42347484827041626 -0.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 -0.9973143935203552 -0.07306130975484848 -0.0 0.03627842664718628 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 -0.9957884550094604 -0.09140293300151825 -0.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 -0.9973143935203552 -0.07306130975484848 -0.0 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 -0.4601885974407196 -0.8877834677696228 -0.0 0.04371464252471924 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 -0.4050416648387909 -0.9142735004425049 -0.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 -0.4601885974407196 -0.8877834677696228 -0.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 -0.2839455306529999 0.6494033336639404 -0.7603991627693176 -0.0 0.015070319175720215 0.7068853378295898 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 0.21605446934700012 0.5941038131713867 -0.8043763637542725 -0.0 0.46540743112564087 0.5483993887901306 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 0.21605446934700012 0.6494033336639404 -0.7603991627693176 -0.0 0.46304842829704285 0.5450987815856934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.7318338751792908 -0.6814478039741516 -0.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 0.21605446934700012 0.6803796291351318 -0.7328409552574158 -0.0 0.4986985921859741 0.373982310295105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.7318338751792908 -0.6814478039741516 -0.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 -0.2839455306529999 -0.634968101978302 -0.772515058517456 -0.0 0.9495713114738464 0.7041049003601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 0.21605446934700012 -0.6831873655319214 -0.730216383934021 -0.0 0.5179241895675659 0.5399326086044312 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 0.21605446934700012 -0.634968101978302 -0.772515058517456 -0.0 0.5157588124275208 0.5435953140258789 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 -0.9711599946022034 0.2384105920791626 -0.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 -0.982909619808197 0.18393506109714508 -0.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 -0.9711599946022034 0.2384105920791626 -0.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 -0.9371318817138672 0.3489181101322174 -0.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 -0.9526658058166504 0.3039643466472626 -0.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 -0.9371318817138672 0.3489181101322174 -0.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 -0.2839455306529999 0.48716697096824646 0.8732871413230896 -0.0 0.9651947021484375 0.5828148126602173 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.5360575914382935 0.844141960144043 -0.0 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 0.21605446934700012 0.48716697096824646 0.8732871413230896 -0.0 0.5071730017662048 0.42032450437545776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 -0.4050416648387909 -0.9142735004425049 -0.0 0.03939831256866455 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 -0.4050416648387909 -0.9142735004425049 -0.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.6996368169784546 -0.7144688367843628 -0.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 0.21605446934700012 0.6494033336639404 -0.7603991627693176 -0.0 0.46304842829704285 0.5450987815856934 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.6996368169784546 -0.7144688367843628 -0.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 -0.2839455306529999 0.9433881640434265 -0.3316446542739868 -0.0 0.07697618007659912 0.6825403571128845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.9197973608970642 -0.39231544733047485 -0.0 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 0.21605446934700012 0.9433881640434265 -0.3316446542739868 -0.0 0.5041013956069946 0.4924224019050598 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 -0.2839455306529999 0.7822809815406799 -0.6229133009910583 -0.0 0.07609990239143372 0.5568383932113647 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.7318338751792908 -0.6814478039741516 -0.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 0.21605446934700012 0.7822809815406799 -0.6229133009910583 -0.0 0.49554482102394104 0.3678079843521118 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 -0.2839455306529999 0.4368419349193573 0.8995330929756165 -0.0 0.9644157290458679 0.5819108486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 0.21605446934700012 0.48716697096824646 0.8732871413230896 -0.0 0.5071730017662048 0.42032450437545776 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 0.21605446934700012 0.4368419349193573 0.8995330929756165 -0.0 0.5079805254936218 0.4195253252983093 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 -0.8977630138397217 0.44041261076927185 -0.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 -0.9256874322891235 0.37824639678001404 -0.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 -0.8977630138397217 0.44041261076927185 -0.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 -0.2839455306529999 -0.9333170652389526 -0.35898923873901367 -0.0 0.9731119275093079 0.6922006011009216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 0.21605446934700012 -0.9542527794837952 -0.29895931482315063 -0.0 0.5916581749916077 0.5021109580993652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 0.21605446934700012 -0.9333170652389526 -0.35898923873901367 -0.0 0.5897163152694702 0.5094247460365295 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 -0.2839455306529999 -0.9989013075828552 0.046418651938438416 -0.0 0.9979357123374939 0.5694729089736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 0.21605446934700012 -0.9980468153953552 0.06216620281338692 -0.0 0.5789764523506165 0.3750090003013611 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 0.21605446934700012 -0.9989013075828552 0.046418651938438416 -0.0 0.5786933898925781 0.3804762363433838 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 -0.2839455306529999 -0.2558977007865906 0.9666737914085388 -0.0 0.9435123205184937 0.579481840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 0.21605446934700012 -0.23200170695781708 0.9726859331130981 -0.0 0.5268273949623108 0.42002010345458984 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 0.21605446934700012 -0.2558977007865906 0.9666737914085388 -0.0 0.5288844108581543 0.4212455749511719 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 -0.2839455306529999 -0.6831873655319214 -0.730216383934021 -0.0 0.9471895694732666 0.699965238571167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 0.21605446934700012 -0.729789137840271 -0.6836451292037964 -0.0 0.520024836063385 0.5359216332435608 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 0.21605446934700012 -0.6831873655319214 -0.730216383934021 -0.0 0.5179241895675659 0.5399326086044312 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.03482341766357422 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 -0.29871517419815063 -0.9543138146400452 -0.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.9617297649383545 -0.27390360832214355 -0.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 0.21605446934700012 0.9433881640434265 -0.3316446542739868 -0.0 0.5041013956069946 0.4924224019050598 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.9617297649383545 -0.27390360832214355 -0.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.8302560448646545 -0.557359516620636 -0.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 0.21605446934700012 0.7822809815406799 -0.6229133009910583 -0.0 0.49554482102394104 0.3678079843521118 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.8302560448646545 -0.557359516620636 -0.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 -0.2839455306529999 0.38569292426109314 0.922605037689209 -0.0 0.9636095762252808 0.5810889005661011 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 0.21605446934700012 0.4368419349193573 0.8995330929756165 -0.0 0.5079805254936218 0.4195253252983093 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 0.21605446934700012 0.38569292426109314 0.922605037689209 -0.0 0.5088142156600952 0.4188156723976135 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 -0.2839455306529999 -0.9542527794837952 -0.29895931482315063 -0.0 0.9718380570411682 0.6841946840286255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 0.21605446934700012 -0.9698477387428284 -0.24362926185131073 -0.0 0.5934914350509644 0.4941715598106384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 0.21605446934700012 -0.9542527794837952 -0.29895931482315063 -0.0 0.5916581749916077 0.5021109580993652 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 -0.9526658058166504 0.3039643466472626 -0.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 -0.9659108519554138 0.25885799527168274 -0.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 -0.9526658058166504 0.3039643466472626 -0.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 -0.2839455306529999 -0.23200170695781708 0.9726859331130981 -0.0 0.9456341862678528 0.5787909030914307 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 0.21605446934700012 -0.20502334833145142 0.9787285923957825 -0.0 0.5248557925224304 0.41897040605545044 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 0.21605446934700012 -0.23200170695781708 0.9726859331130981 -0.0 0.5268273949623108 0.42002010345458984 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 -0.2839455306529999 0.7461775541305542 -0.6657002568244934 -0.0 0.020119577646255493 0.698323130607605 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.6996368169784546 -0.7144688367843628 -0.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 0.21605446934700012 0.7461775541305542 -0.6657002568244934 -0.0 0.4585532248020172 0.5373673439025879 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 -0.2839455306529999 -0.729789137840271 -0.6836451292037964 -0.0 0.9449496269226074 0.6954689025878906 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 -0.7776726484298706 -0.6286507844924927 -0.0 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 0.21605446934700012 -0.729789137840271 -0.6836451292037964 -0.0 0.520024836063385 0.5359216332435608 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 -0.982909619808197 0.18393506109714508 -0.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 -0.9911190867424011 0.13290810585021973 -0.0 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 -0.982909619808197 0.18393506109714508 -0.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.029981791973114014 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 -0.29871517419815063 -0.9543138146400452 -0.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.8742637634277344 -0.4853968918323517 -0.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.8302560448646545 -0.557359516620636 -0.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.8742637634277344 -0.4853968918323517 -0.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 -0.2839455306529999 0.3342081904411316 0.9424726366996765 -0.0 0.9627766609191895 0.5803487300872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 0.21605446934700012 0.38569292426109314 0.922605037689209 -0.0 0.5088142156600952 0.4188156723976135 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 0.21605446934700012 0.3341776728630066 0.9424726366996765 -0.0 0.509673535823822 0.41819584369659424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 -0.2839455306529999 -0.9980468153953552 0.06216620281338692 -0.0 0.9980939626693726 0.5639892220497131 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 0.21605446934700012 -0.9967344999313354 0.08038575202226639 -0.0 0.579197108745575 0.3699303865432739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 0.21605446934700012 -0.9980468153953552 0.06216620281338692 -0.0 0.5789764523506165 0.3750090003013611 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.9457685947418213 0.3248085081577301 -0.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.921262264251709 0.3888668417930603 -0.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.9457685947418213 0.3248085081577301 -0.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 -0.2839455306529999 0.9755851626396179 -0.21955016255378723 -0.0 0.07822781801223755 0.6656776666641235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.9617297649383545 -0.27390360832214355 -0.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 0.21605446934700012 0.9755851626396179 -0.21955016255378723 -0.0 0.5018256902694702 0.476043701171875 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 -0.2839455306529999 0.28284555673599243 0.9591357111930847 -0.0 0.9619163274765015 0.5796900987625122 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 0.21605446934700012 0.3341776728630066 0.9424726366996765 -0.0 0.509673535823822 0.41819584369659424 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 0.21605446934700012 0.28284555673599243 0.9591357111930847 -0.0 0.5105586647987366 0.41766583919525146 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 -0.2839455306529999 -0.9698477387428284 -0.24362926185131073 -0.0 0.9708145260810852 0.6756221055984497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 0.21605446934700012 -0.9812005758285522 -0.19296853244304657 -0.0 0.5952191948890686 0.4855912923812866 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 0.21605446934700012 -0.9698477387428284 -0.24362926185131073 -0.0 0.5934914350509644 0.4941715598106384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 -0.9659108519554138 0.25885799527168274 -0.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 -0.9768364429473877 0.2138737142086029 -0.0 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 -0.9659108519554138 0.25885799527168274 -0.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 -0.2839455306529999 -0.20505386590957642 0.9787285923957825 -0.0 0.9476549029350281 0.5782271027565002 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 0.21605446934700012 -0.1743827611207962 0.9846491813659668 -0.0 0.5229727029800415 0.41809719800949097 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 0.21605446934700012 -0.20502334833145142 0.9787285923957825 -0.0 0.5248557925224304 0.41897040605545044 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.024866372346878052 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 -0.2839455306529999 0.790978729724884 -0.6118045449256897 -0.0 0.022365719079971313 0.6935079097747803 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 0.21605446934700012 0.7461775541305542 -0.6657002568244934 -0.0 0.4585532248020172 0.5373673439025879 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 0.21605446934700012 0.790978729724884 -0.6118045449256897 -0.0 0.45645686984062195 0.5329769849777222 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 -0.7776726484298706 -0.6286507844924927 -0.0 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 0.21605446934700012 -0.8231146931648254 -0.5678274035453796 -0.0 0.5238659977912903 0.5269047021865845 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 -0.7776726484298706 -0.6286507844924927 -0.0 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.9856563210487366 -0.16873684525489807 -0.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 0.21605446934700012 0.9755851626396179 -0.21955016255378723 -0.0 0.5018256902694702 0.476043701171875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.9856563210487366 -0.16873684525489807 -0.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 -0.2839455306529999 0.9129306674003601 -0.40809351205825806 -0.0 0.0784434974193573 0.5459051728248596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.8742637634277344 -0.4853968918323517 -0.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 0.21605446934700012 0.9129306674003601 -0.40809351205825806 -0.0 0.49208465218544006 0.35773760080337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 -0.2839455306529999 0.23218482732772827 0.9726554155349731 -0.0 0.9610292911529541 0.5791126489639282 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 0.21605446934700012 0.28284555673599243 0.9591357111930847 -0.0 0.5105586647987366 0.41766583919525146 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 0.21605446934700012 0.23218482732772827 0.9726554155349731 -0.0 0.511468768119812 0.41722571849823 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 -0.9911190867424011 0.13290810585021973 -0.0 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 -0.9963377714157104 0.08532975614070892 -0.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 -0.9911190867424011 0.13290810585021973 -0.0 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 -0.2839455306529999 -0.9967344999313354 0.08038575202226639 -0.0 0.9982823729515076 0.5589078664779663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 0.21605446934700012 -0.9948118329048157 0.10165715217590332 -0.0 0.5793541073799133 0.3652379512786865 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 0.21605446934700012 -0.9967344999313354 0.08038575202226639 -0.0 0.579197108745575 0.3699303865432739 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 -0.2839455306529999 -0.1743827611207962 0.9846491813659668 -0.0 0.9495729804039001 0.577794075012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 0.21605446934700012 -0.13934750854969025 0.9902340769767761 -0.0 0.5211812257766724 0.4174010157585144 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 0.21605446934700012 -0.1743827611207962 0.9846491813659668 -0.0 0.5229727029800415 0.41809719800949097 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.019471734762191772 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.8328500986099243 -0.5534836649894714 -0.0 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 0.21605446934700012 0.790978729724884 -0.6118045449256897 -0.0 0.45645686984062195 0.5329769849777222 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.8328500986099243 -0.5534836649894714 -0.0 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 -0.9256874322891235 0.37824639678001404 -0.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 -0.9484237432479858 0.316934734582901 -0.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 -0.9256874322891235 0.37824639678001404 -0.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 -0.2839455306529999 -0.9812005758285522 -0.19296853244304657 -0.0 0.9700321555137634 0.6664710640907288 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 0.21605446934700012 -0.9891659021377563 -0.14676351845264435 -0.0 0.596843957901001 0.47635602951049805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 0.21605446934700012 -0.9812005758285522 -0.19296853244304657 -0.0 0.5952191948890686 0.4855912923812866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.9450361728668213 -0.3269447982311249 -0.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 0.21605446934700012 0.9129306674003601 -0.40809351205825806 -0.0 0.49208465218544006 0.35773760080337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.9450361728668213 -0.3269447982311249 -0.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 -0.2839455306529999 0.1825312077999115 0.983184278011322 -0.0 0.9601153135299683 0.5786160230636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 0.21605446934700012 0.23218482732772827 0.9726554155349731 -0.0 0.511468768119812 0.41722571849823 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 0.21605446934700012 0.1825312077999115 0.983184278011322 -0.0 0.5124037265777588 0.4168756604194641 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 -0.2839455306529999 -0.8231146931648254 -0.5678274035453796 -0.0 0.941087543964386 0.6855176687240601 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 0.21605446934700012 -0.8627277612686157 -0.5056306719779968 -0.0 0.5255663990974426 0.5219049453735352 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 0.21605446934700012 -0.8231146931648254 -0.5678274035453796 -0.0 0.5238659977912903 0.5269047021865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 -0.9768364429473877 0.2138737142086029 -0.0 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 -0.9855342507362366 0.16928617656230927 -0.0 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 -0.9768364429473877 0.2138737142086029 -0.0 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 -0.2839455306529999 -0.13934750854969025 0.9902340769767761 -0.0 0.9513869285583496 0.5774950981140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 0.21605446934700012 -0.09912411868572235 0.9950559735298157 -0.0 0.5194841623306274 0.41688209772109985 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 0.21605446934700012 -0.13934750854969025 0.9902340769767761 -0.0 0.5211812257766724 0.4174010157585144 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013794481754302979 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 -0.2839455306529999 0.9925839900970459 -0.12149418890476227 -0.0 0.0784153938293457 0.6469727158546448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.9856563210487366 -0.16873684525489807 -0.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 0.21605446934700012 0.9925839900970459 -0.12149418890476227 -0.0 0.500276505947113 0.45759135484695435 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 -0.2839455306529999 -0.9891659021377563 -0.14676351845264435 -0.0 0.9694821834564209 0.656730055809021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 0.21605446934700012 -0.9944761395454407 -0.10477004200220108 -0.0 0.5983680486679077 0.4664538502693176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 0.21605446934700012 -0.9891659021377563 -0.14676351845264435 -0.0 0.596843957901001 0.47635602951049805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 -0.2839455306529999 -0.9948118329048157 0.10165715217590332 -0.0 0.9985008239746094 0.554226279258728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 -0.9919126033782959 0.1267433762550354 -0.0 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 0.21605446934700012 -0.9948118329048157 0.10165715217590332 -0.0 0.5793541073799133 0.3652379512786865 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 -0.2839455306529999 0.8699911236763 -0.4930265247821808 -0.0 0.026126623153686523 0.6830544471740723 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.8328500986099243 -0.5534836649894714 -0.0 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 0.21605446934700012 0.8699911236763 -0.4930265247821808 -0.0 0.45273035764694214 0.52332603931427 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 -0.2839455306529999 0.1342814415693283 0.9909359812736511 -0.0 0.9591747522354126 0.5781999826431274 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 0.21605446934700012 0.1825312077999115 0.983184278011322 -0.0 0.5124037265777588 0.4168756604194641 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 0.21605446934700012 0.1342814415693283 0.9909359812736511 -0.0 0.5133629441261292 0.4166155457496643 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 -0.2839455306529999 -0.8627277612686157 -0.5056306719779968 -0.0 0.939506471157074 0.6800910234451294 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 -0.8963896632194519 -0.443250834941864 -0.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 0.21605446934700012 -0.8627277612686157 -0.5056306719779968 -0.0 0.5255663990974426 0.5219049453735352 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.00783383846282959 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 0.46296530961990356 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.9969481229782104 -0.07782220095396042 -0.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 0.21605446934700012 0.9925839900970459 -0.12149418890476227 -0.0 0.500276505947113 0.45759135484695435 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.9969481229782104 -0.07782220095396042 -0.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.9698172211647034 -0.24378184974193573 -0.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.9450361728668213 -0.3269447982311249 -0.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.9698172211647034 -0.24378184974193573 -0.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 -0.2839455306529999 0.0876796767115593 0.9961241483688354 -0.0 0.9582072496414185 0.5778639912605286 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 0.21605446934700012 0.1342814415693283 0.9909359812736511 -0.0 0.5133629441261292 0.4166155457496643 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 0.21605446934700012 0.0876796767115593 0.9961241483688354 -0.0 0.514346182346344 0.4164454936981201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 -0.9963377714157104 0.08532975614070892 -0.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 -0.9991455078125 0.04119998961687088 -0.0 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 -0.9963377714157104 0.08532975614070892 -0.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 -0.2839455306529999 -0.09912411868572235 0.9950559735298157 -0.0 0.953095555305481 0.5773330926895142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 0.21605446934700012 -0.052674949169158936 0.9985961318016052 -0.0 0.5178840756416321 0.41654032468795776 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 0.21605446934700012 -0.09912411868572235 0.9950559735298157 -0.0 0.5194841623306274 0.41688209772109985 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.964476466178894 0.2641376852989197 -0.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.9457685947418213 0.3248085081577301 -0.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.964476466178894 0.2641376852989197 -0.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.99993896484375 0.008484145626425743 -0.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.999969482421875 -0.0025025177747011185 -0.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.99993896484375 0.008484145626425743 -0.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 -0.2839455306529999 -0.9944761395454407 -0.10477004200220108 -0.0 0.9691557884216309 0.6463892459869385 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 0.21605446934700012 -0.9977721571922302 -0.06659138947725296 -0.0 0.5997934341430664 0.4558762311935425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 0.21605446934700012 -0.9944761395454407 -0.10477004200220108 -0.0 0.5983680486679077 0.4664538502693176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 -0.9919126033782959 0.1267433762550354 -0.0 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 0.21605446934700012 -0.9876095056533813 0.15674306452274323 -0.0 0.579473078250885 0.3569989800453186 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 -0.9919126033782959 0.1267433762550354 -0.0 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 1.0015926361083984 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727497100830078 0.2068910002708435 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 1.4629652500152588 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.9021271467208862 -0.43140965700149536 -0.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 0.21605446934700012 0.8699911236763 -0.4930265247821808 -0.0 0.45273035764694214 0.52332603931427 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.9021271467208862 -0.43140965700149536 -0.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 -0.2839455306529999 0.04293954372406006 0.999053955078125 -0.0 0.9572130441665649 0.5776077508926392 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 0.21605446934700012 0.0876796767115593 0.9961241483688354 -0.0 0.514346182346344 0.4164454936981201 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 0.21605446934700012 0.04293954372406006 0.999053955078125 -0.0 0.5153530836105347 0.41636550426483154 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 -0.8963896632194519 -0.443250834941864 -0.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 0.21605446934700012 -0.9242530465126038 -0.3817560374736786 -0.0 0.528533935546875 0.5108895301818848 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 -0.8963896632194519 -0.443250834941864 -0.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 -0.9855342507362366 0.16928617656230927 -0.0 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 -0.9920957088470459 0.12540055811405182 -0.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 -0.9855342507362366 0.16928617656230927 -0.0 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950767755508423 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.483035922050476 0.2059873342514038 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727497100830078 0.2068910002708435 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 -0.2839455306529999 -0.052705466747283936 0.9985961318016052 -0.0 0.9546976089477539 0.5773108601570129 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 -0.003326517529785633 0.999969482421875 -0.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 0.21605446934700012 -0.052674949169158936 0.9985961318016052 -0.0 0.5178840756416321 0.41654032468795776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 -0.2839455306529999 0.999267578125 -0.03750724717974663 -0.0 0.0776045024394989 0.6263766288757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.9969481229782104 -0.07782220095396042 -0.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 0.21605446934700012 0.999267578125 -0.03750724717974663 -0.0 0.49947699904441833 0.4370027780532837 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882972240447998 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.483035922050476 0.2059873342514038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 -0.2839455306529999 -0.9977721571922302 -0.06659138947725296 -0.0 0.9690446853637695 0.6354416608810425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 0.21605446934700012 -0.999481201171875 -0.0318918414413929 -0.0 0.6011215448379517 0.44461947679519653 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 0.21605446934700012 -0.9977721571922302 -0.06659138947725296 -0.0 0.5997934341430664 0.4558762311935425 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 -0.9484237432479858 0.316934734582901 -0.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 -0.9663075804710388 0.25730153918266296 -0.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 -0.9484237432479858 0.316934734582901 -0.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.09209313988685608 0.823844313621521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 -0.999969482421875 -0.005340739153325558 -0.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 0.21605448424816132 -1.0 0.0 -0.0 0.42104125022888184 0.6850046515464783 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 -0.2839455306529999 0.9870296120643616 -0.16049684584140778 -0.0 0.07924100756645203 0.5343766212463379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.9698172211647034 -0.24378184974193573 -0.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 0.21605446934700012 0.9870296120643616 -0.16049684584140778 -0.0 0.49014294147491455 0.3466310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 -0.003326517529785633 0.999969482421875 -0.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 0.21605446934700012 0.04293954372406006 0.999053955078125 -0.0 0.5153530836105347 0.41636550426483154 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 -0.003326517529785633 0.999969482421875 -0.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 -0.2839455306529999 -0.9876095056533813 0.15674306452274323 -0.0 0.9990274310112 0.5460504293441772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 0.21605446934700012 -0.9811395406723022 0.19315165281295776 -0.0 0.5794331431388855 0.3534455895423889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 0.21605446934700012 -0.9876095056533813 0.15674306452274323 -0.0 0.579473078250885 0.3569989800453186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.018389105796813965 0.8526803851127625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.42104125022888184 0.6850046515464783 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.46700388193130493 0.6951695084571838 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.00317392498254776 -0.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 0.21605446934700012 0.999267578125 -0.03750724717974663 -0.0 0.49947699904441833 0.4370027780532837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.00317392498254776 -0.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 -0.2839455306529999 0.9291360378265381 -0.36967071890830994 -0.0 0.028948843479156494 0.6715095043182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.9021271467208862 -0.43140965700149536 -0.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 0.21605446934700012 0.9291360378265381 -0.36967071890830994 -0.0 0.4496181607246399 0.512480616569519 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 -0.9957884550094604 -0.09140293300151825 -0.0 0.03589153289794922 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 0.21605446934700012 -0.9934385418891907 -0.11429181694984436 -0.0 0.43650829792022705 0.4166916012763977 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 -0.9957884550094604 -0.09140293300151825 -0.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 -0.9991455078125 0.04119998961687088 -0.0 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 -0.999969482421875 -0.00045777764171361923 -0.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 -0.9991455078125 0.04119998961687088 -0.0 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 -0.2839455306529999 -0.9242530465126038 -0.3817560374736786 -0.0 0.9370168447494507 0.6683270931243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 -0.9467146992683411 -0.32203131914138794 -0.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 0.21605446934700012 -0.9242530465126038 -0.3817560374736786 -0.0 0.528533935546875 0.5108895301818848 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 -0.2839455306529999 0.999969482421875 0.0014648884534835815 -0.0 0.014768153429031372 0.7227939367294312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.46700388193130493 0.6951695084571838 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 0.21605446934700012 0.999969482421875 0.0014648884534835815 -0.0 0.4619511365890503 0.5655359625816345 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 0.21605446934700012 0.9870296120643616 -0.16049684584140778 -0.0 0.49014294147491455 0.3466310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.896752655506134 0.8321271538734436 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 -0.999969482421875 0.0019531846046447754 -0.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 0.21605448424816132 -1.0 0.0 -0.0 0.536641538143158 0.6864609718322754 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 -0.2839455306529999 -0.9934385418891907 -0.11429181694984436 -0.0 0.03549852967262268 0.5730034112930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 0.21605446934700012 -0.9896237254142761 -0.143589586019516 -0.0 0.4365590512752533 0.4122923016548157 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 0.21605446934700012 -0.9934385418891907 -0.11429181694984436 -0.0 0.43650829792022705 0.4166916012763977 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 -0.2839455306529999 -0.999481201171875 -0.0318918414413929 -0.0 0.9691407680511475 0.6238844990730286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 0.21605446934700012 -0.999969482421875 0.0011291848495602608 -0.0 0.6023536920547485 0.432685911655426 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 0.21605446934700012 -0.999481201171875 -0.0318918414413929 -0.0 0.6011215448379517 0.44461947679519653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 -0.9920957088470459 0.12540055811405182 -0.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 -0.9965819120407104 0.08249153196811676 -0.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 -0.9920957088470459 0.12540055811405182 -0.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 -0.2839455306529999 0.9511398673057556 -0.3086947202682495 -0.0 0.03002151846885681 0.6653246879577637 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 0.21605446934700012 0.9291360378265381 -0.36967071890830994 -0.0 0.4496181607246399 0.512480616569519 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 0.21605446934700012 0.9511398673057556 -0.3086947202682495 -0.0 0.44829061627388 0.5065951347351074 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.8460309505462646 0.7894145250320435 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.536641538143158 0.6864609718322754 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.5768240690231323 0.6677558422088623 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 -0.2839455306529999 -0.9896237254142761 -0.143589586019516 -0.0 0.03509938716888428 0.5686724185943604 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 0.21605446934700012 -0.9862361550331116 -0.16528823971748352 -0.0 0.43666714429855347 0.4084749221801758 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 0.21605446934700012 -0.9896237254142761 -0.143589586019516 -0.0 0.4365590512752533 0.4122923016548157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 -0.2839455306529999 -0.9811395406723022 0.19315165281295776 -0.0 0.9993356466293335 0.5425490736961365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 -0.9712515473365784 0.2380138486623764 -0.0 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 0.21605446934700012 -0.9811395406723022 0.19315165281295776 -0.0 0.5794331431388855 0.3534455895423889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.99969482421875 0.024445325136184692 -0.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.00317392498254776 -0.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.99969482421875 0.024445325136184692 -0.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.9782708287239075 0.2072817087173462 -0.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.964476466178894 0.2641376852989197 -0.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.9782708287239075 0.2072817087173462 -0.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.5768240690231323 0.6677558422088623 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 1.0 0.0 -0.0 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 -0.2839455306529999 -0.9862361550331116 -0.16528823971748352 -0.0 0.03469330072402954 0.5649328231811523 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 0.21605446934700012 -0.982909619808197 -0.18402661383152008 -0.0 0.43683189153671265 0.40360039472579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 0.21605446934700012 -0.9862361550331116 -0.16528823971748352 -0.0 0.43666714429855347 0.4084749221801758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 -0.999969482421875 -0.00045777764171361923 -0.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 -0.999053955078125 -0.04312265291810036 -0.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 -0.999969482421875 -0.00045777764171361923 -0.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 -0.9467146992683411 -0.32203131914138794 -0.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 0.21605446934700012 -0.964293360710144 -0.26471754908561707 -0.0 0.5309305191040039 0.49846935272216797 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 -0.9467146992683411 -0.32203131914138794 -0.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 -0.999969482421875 0.0019531846046447754 -0.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 0.21605446934700012 -0.99993896484375 0.008301034569740295 -0.0 0.5418952107429504 0.560042142868042 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 -0.999969482421875 0.0019531846046447754 -0.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 -0.2839455306529999 -0.982909619808197 -0.18402661383152008 -0.0 0.0341530442237854 0.5601645112037659 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 0.21605446934700012 -0.9772636890411377 -0.21192052960395813 -0.0 0.4370587468147278 0.39888298511505127 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 0.21605446934700012 -0.982909619808197 -0.18402661383152008 -0.0 0.43683189153671265 0.40360039472579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 -0.2839455306529999 -0.999969482421875 0.0011291848495602608 -0.0 0.9694360494613647 0.6117208003997803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 0.21605446934700012 -0.99932861328125 0.03643909841775894 -0.0 0.6033116579055786 0.4218752980232239 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 0.21605446934700012 -0.999969482421875 0.0011291848495602608 -0.0 0.6023536920547485 0.432685911655426 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 -0.2839455306529999 -0.99993896484375 0.008301034569740295 -0.0 0.9140788316726685 0.7073009014129639 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 0.21605446934700012 -0.99981689453125 0.017670217901468277 -0.0 0.5422479510307312 0.548079252243042 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 0.21605446934700012 -0.99993896484375 0.008301034569740295 -0.0 0.5418952107429504 0.560042142868042 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.9684133529663086 -0.24930571019649506 -0.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 0.21605446934700012 0.9511398673057556 -0.3086947202682495 -0.0 0.44829061627388 0.5065951347351074 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.9684133529663086 -0.24930571019649506 -0.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.99981689453125 0.017700735479593277 -0.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.99993896484375 0.008484145626425743 -0.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.99981689453125 0.017700735479593277 -0.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 -0.2839455306529999 -0.9772636890411377 -0.21192052960395813 -0.0 0.03357023000717163 0.5555682182312012 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 0.21605446934700012 -0.9704275727272034 -0.24134036898612976 -0.0 0.4373483657836914 0.39432311058044434 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 0.21605446934700012 -0.9772636890411377 -0.21192052960395813 -0.0 0.4370587468147278 0.39888298511505127 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 -0.9663075804710388 0.25730153918266296 -0.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 -0.9797662496566772 0.19998779892921448 -0.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 -0.9663075804710388 0.25730153918266296 -0.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 -0.9712515473365784 0.2380138486623764 -0.0 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 0.21605446934700012 -0.9586474299430847 0.2845240533351898 -0.0 0.579150915145874 0.3474537134170532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 -0.9712515473365784 0.2380138486623764 -0.0 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 -0.2839455306529999 0.9986876845359802 0.05102694779634476 -0.0 0.07480058073997498 0.5922513008117676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.99969482421875 0.024445325136184692 -0.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 0.21605446934700012 0.9986876845359802 0.05102694779634476 -0.0 0.49964436888694763 0.40247344970703125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 -0.2839455306529999 0.999969482421875 0.006256294436752796 -0.0 0.014528810977935791 0.7096704244613647 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 0.21605446934700012 0.999969482421875 0.0014648884534835815 -0.0 0.4619511365890503 0.5655359625816345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 0.21605446934700012 0.999969482421875 0.006256294436752796 -0.0 0.46153777837753296 0.5524322390556335 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 -0.2839455306529999 -0.9704275727272034 -0.24134036898612976 -0.0 0.03294515609741211 0.5511438846588135 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 0.21605446934700012 -0.9621570706367493 -0.27240821719169617 -0.0 0.4377015233039856 0.38992077112197876 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 0.21605446934700012 -0.9704275727272034 -0.24134036898612976 -0.0 0.4373483657836914 0.39432311058044434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 -0.2839455306529999 -0.99932861328125 0.03643909841775894 -0.0 0.9698705673217773 0.6007810831069946 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 0.21605446934700012 -0.9971312880516052 0.07553330808877945 -0.0 0.604060173034668 0.4114415645599365 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 0.21605446934700012 -0.99932861328125 0.03643909841775894 -0.0 0.6033116579055786 0.4218752980232239 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 -0.2839455306529999 -0.964293360710144 -0.26471754908561707 -0.0 0.9353874921798706 0.6553221940994263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 0.21605446934700012 -0.9776299595832825 -0.21030305325984955 -0.0 0.5319159626960754 0.49171215295791626 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 0.21605446934700012 -0.964293360710144 -0.26471754908561707 -0.0 0.5309305191040039 0.49846935272216797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 -0.9965819120407104 0.08249153196811676 -0.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 -0.9991455078125 0.04068117216229439 -0.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 -0.9965819120407104 0.08249153196811676 -0.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 -0.2839455306529999 -0.99981689453125 0.017670217901468277 -0.0 0.9152042865753174 0.6954561471939087 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 0.21605446934700012 -0.99957275390625 0.02847376838326454 -0.0 0.5425242185592651 0.5365892648696899 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 0.21605446934700012 -0.99981689453125 0.017670217901468277 -0.0 0.5422479510307312 0.548079252243042 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 -0.2839455306529999 -0.9621570706367493 -0.27240821719169617 -0.0 0.032277703285217285 0.5468913316726685 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 0.21605446934700012 -0.9522690773010254 -0.30521562695503235 -0.0 0.4381193518638611 0.38567590713500977 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 0.21605446934700012 -0.9621570706367493 -0.27240821719169617 -0.0 0.4377015233039856 0.38992077112197876 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.9967650175094604 0.08032471686601639 -0.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 0.21605446934700012 0.9986876845359802 0.05102694779634476 -0.0 0.49964436888694763 0.40247344970703125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.9967650175094604 0.08032471686601639 -0.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 -0.2839455306529999 0.9813531637191772 -0.19205297529697418 -0.0 0.031516820192337036 0.6521144509315491 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.9684133529663086 -0.24930571019649506 -0.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 0.21605446934700012 0.9813531637191772 -0.19205297529697418 -0.0 0.4460909366607666 0.49386513233184814 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 -0.2839455306529999 0.9979552626609802 0.0637531653046608 -0.0 0.07858288288116455 0.5224087238311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 0.21605446934700012 0.9979552626609802 0.0637531653046608 -0.0 0.489724725484848 0.33461397886276245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 -0.2839455306529999 0.999908447265625 0.013367107138037682 -0.0 0.014256507158279419 0.6969905495643616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 0.21605446934700012 0.999969482421875 0.006256294436752796 -0.0 0.46153777837753296 0.5524322390556335 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 0.21605446934700012 0.999908447265625 0.013367107138037682 -0.0 0.4611889123916626 0.5397636890411377 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 -0.2839455306529999 -0.9522690773010254 -0.30521562695503235 -0.0 0.03156742453575134 0.5428102016448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 0.21605446934700012 -0.9405499696731567 -0.3395794630050659 -0.0 0.4386027455329895 0.3815883994102478 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 0.21605446934700012 -0.9522690773010254 -0.30521562695503235 -0.0 0.4381193518638611 0.38567590713500977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 -0.999053955078125 -0.04312265291810036 -0.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 -0.9960020780563354 -0.08899196982383728 -0.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 -0.999053955078125 -0.04312265291810036 -0.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 -0.2839455306529999 -0.9776299595832825 -0.21030305325984955 -0.0 0.9348825812339783 0.6483409404754639 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 -0.9872432351112366 -0.1590624749660492 -0.0 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 0.21605446934700012 -0.9776299595832825 -0.21030305325984955 -0.0 0.5319159626960754 0.49171215295791626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 -0.2839455306529999 -0.9586474299430847 0.2845240533351898 -0.0 1.000042200088501 0.5367017984390259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 0.21605446934700012 -0.9429304003715515 0.3329569399356842 -0.0 0.5788003206253052 0.3434860110282898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 0.21605446934700012 -0.9586474299430847 0.2845240533351898 -0.0 0.579150915145874 0.3474537134170532 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 -0.2839455306529999 -0.99957275390625 0.02847376838326454 -0.0 0.9162991046905518 0.6840966939926147 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 0.21605446934700012 -0.9991455078125 0.04104739427566528 -0.0 0.542721152305603 0.5256565809249878 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 0.21605446934700012 -0.99957275390625 0.02847376838326454 -0.0 0.5425242185592651 0.5365892648696899 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 -0.2839455306529999 -0.9405499696731567 -0.3395794630050659 -0.0 0.030814290046691895 0.5388997793197632 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 0.21605446934700012 -0.9267860651016235 -0.37553027272224426 -0.0 0.43915221095085144 0.37765800952911377 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 0.21605446934700012 -0.9405499696731567 -0.3395794630050659 -0.0 0.4386027455329895 0.3815883994102478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 -0.2839455306529999 0.9936216473579407 0.11270485818386078 -0.0 0.07243585586547852 0.5714563131332397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.9967650175094604 0.08032471686601639 -0.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 0.21605446934700012 0.9936216473579407 0.11270485818386078 -0.0 0.5005269646644592 0.3812466263771057 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.9904782176017761 -0.13745537400245667 -0.0 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 0.21605446934700012 0.9813531637191772 -0.19205297529697418 -0.0 0.4460909366607666 0.49386513233184814 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.9904782176017761 -0.13745537400245667 -0.0 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.9915769100189209 0.12933744490146637 -0.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 0.21605446934700012 0.9979552626609802 0.0637531653046608 -0.0 0.489724725484848 0.33461397886276245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.9915769100189209 0.12933744490146637 -0.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 -0.2839455306529999 0.999755859375 0.021607104688882828 -0.0 0.01395145058631897 0.6848616600036621 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 0.21605446934700012 0.999908447265625 0.013367107138037682 -0.0 0.4611889123916626 0.5397636890411377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 0.21605446934700012 0.999755859375 0.021607104688882828 -0.0 0.4609074592590332 0.5276371240615845 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 -0.2839455306529999 -0.9267860651016235 -0.37553027272224426 -0.0 0.030018210411071777 0.5351594090461731 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 0.21605446934700012 -0.9106723070144653 -0.41309854388237 -0.0 0.43976858258247375 0.3738844394683838 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 0.21605446934700012 -0.9267860651016235 -0.37553027272224426 -0.0 0.43915221095085144 0.37765800952911377 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 -0.2839455306529999 -0.9971312880516052 0.07553330808877945 -0.0 0.9704671502113342 0.5903095006942749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 0.21605446934700012 -0.9930112361907959 0.11798455566167831 -0.0 0.6045933961868286 0.40139156579971313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 0.21605446934700012 -0.9971312880516052 0.07553330808877945 -0.0 0.604060173034668 0.4114415645599365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 -0.2839455306529999 -0.9429304003715515 0.3329569399356842 -0.0 1.0006492137908936 0.532871663570404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 -0.922421932220459 0.38612017035484314 -0.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 0.21605446934700012 -0.9429304003715515 0.3329569399356842 -0.0 0.5788003206253052 0.3434860110282898 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 -0.2839455306529999 -0.9991455078125 0.04104739427566528 -0.0 0.9173672795295715 0.6733074188232422 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 0.21605446934700012 -0.9984130263328552 0.055848874151706696 -0.0 0.5428363680839539 0.515357255935669 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 0.21605446934700012 -0.9991455078125 0.04104739427566528 -0.0 0.542721152305603 0.5256565809249878 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.9879757165908813 0.15445417165756226 -0.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.9782708287239075 0.2072817087173462 -0.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.9879757165908813 0.15445417165756226 -0.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 -0.2839455306529999 -0.9106723070144653 -0.41309854388237 -0.0 0.029179036617279053 0.5315882563591003 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 0.21605446934700012 -0.8919339776039124 -0.4521317183971405 -0.0 0.4404529929161072 0.3702673316001892 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 0.21605446934700012 -0.9106723070144653 -0.41309854388237 -0.0 0.43976858258247375 0.3738844394683838 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 -0.9797662496566772 0.19998779892921448 -0.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 -0.9893490672111511 0.14545121788978577 -0.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 -0.9797662496566772 0.19998779892921448 -0.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 -0.9991455078125 0.04068117216229439 -0.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 -0.999969482421875 -0.004608294926583767 -0.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 -0.9991455078125 0.04068117216229439 -0.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.9888912439346313 0.14853358268737793 -0.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 0.21605446934700012 0.9936216473579407 0.11270485818386078 -0.0 0.5005269646644592 0.3812466263771057 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.9888912439346313 0.14853358268737793 -0.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 -0.2839455306529999 0.999481201171875 0.031281471252441406 -0.0 0.013614147901535034 0.6733810901641846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 0.21605446934700012 0.999755859375 0.021607104688882828 -0.0 0.4609074592590332 0.5276371240615845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 0.21605446934700012 0.999481201171875 0.031281471252441406 -0.0 0.4606959819793701 0.5161502361297607 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 -0.2839455306529999 -0.8919339776039124 -0.4521317183971405 -0.0 0.02829611301422119 0.5281853675842285 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 0.21605446934700012 -0.8702963590621948 -0.4924771785736084 -0.0 0.44120627641677856 0.3668063282966614 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 0.21605446934700012 -0.8919339776039124 -0.4521317183971405 -0.0 0.4404529929161072 0.3702673316001892 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 -0.9960020780563354 -0.08899196982383728 -0.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 -0.9904171824455261 -0.13800470530986786 -0.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 -0.9960020780563354 -0.08899196982383728 -0.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 -0.9872432351112366 -0.1590624749660492 -0.0 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 0.21605446934700012 -0.9938047528266907 -0.1110873743891716 -0.0 0.533460259437561 0.47706329822540283 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 -0.9872432351112366 -0.1590624749660492 -0.0 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 -0.2839455306529999 -0.9984130263328552 0.055848874151706696 -0.0 0.9184120893478394 0.6631647944450378 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 0.21605446934700012 -0.9972838759422302 0.07354960590600967 -0.0 0.5428673028945923 0.5057579278945923 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 0.21605446934700012 -0.9984130263328552 0.055848874151706696 -0.0 0.5428363680839539 0.515357255935669 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.999603271484375 0.02786339819431305 -0.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.99981689453125 0.017700735479593277 -0.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.999603271484375 0.02786339819431305 -0.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 -0.2839455306529999 -0.8702963590621948 -0.4924771785736084 -0.0 0.027369141578674316 0.5249497294425964 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 0.21605446934700012 -0.8456068634986877 -0.5337381958961487 -0.0 0.4420292377471924 0.36350131034851074 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 0.21605446934700012 -0.8702963590621948 -0.4924771785736084 -0.0 0.44120627641677856 0.3668063282966614 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 -0.2839455306529999 -0.9930112361907959 0.11798455566167831 -0.0 0.9712231159210205 0.580313503742218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 0.21605446934700012 -0.9864497780799866 0.16388440132141113 -0.0 0.6049054265022278 0.3917279839515686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 0.21605446934700012 -0.9930112361907959 0.11798455566167831 -0.0 0.6045933961868286 0.40139156579971313 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 -0.2839455306529999 0.9963072538375854 -0.08575700968503952 -0.0 0.032178282737731934 0.6377542018890381 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.9904782176017761 -0.13745537400245667 -0.0 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 0.21605446934700012 0.9963072538375854 -0.08575700968503952 -0.0 0.44450050592422485 0.4798106551170349 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 -0.2839455306529999 0.9805291891098022 0.19629505276679993 -0.0 0.07751825451850891 0.514907956123352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.9915769100189209 0.12933744490146637 -0.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 0.21605446934700012 0.9805291891098022 0.19629505276679993 -0.0 0.4902057349681854 0.32686203718185425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 -0.2839455306529999 0.999053955078125 0.04281746968626976 -0.0 0.013244688510894775 0.6626352667808533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 0.21605446934700012 0.999481201171875 0.031281471252441406 -0.0 0.4606959819793701 0.5161502361297607 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 0.21605446934700012 0.999053955078125 0.04281746968626976 -0.0 0.46055692434310913 0.5053889751434326 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 -0.2839455306529999 -0.8456068634986877 -0.5337381958961487 -0.0 0.026397764682769775 0.5218805074691772 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 0.21605446934700012 -0.8166447877883911 -0.5770744681358337 -0.0 0.44292232394218445 0.360352098941803 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 0.21605446934700012 -0.8456068634986877 -0.5337381958961487 -0.0 0.4420292377471924 0.36350131034851074 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 -0.2839455306529999 -0.9938047528266907 -0.1110873743891716 -0.0 0.9344682097434998 0.6333895921707153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 -0.9977721571922302 -0.06640827655792236 -0.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 0.21605446934700012 -0.9938047528266907 -0.1110873743891716 -0.0 0.533460259437561 0.47706329822540283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 -0.922421932220459 0.38612017035484314 -0.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 0.21605446934700012 -0.8988006114959717 0.4383068382740021 -0.0 0.5777221322059631 0.3357633352279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 -0.922421932220459 0.38612017035484314 -0.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 -0.2839455306529999 -0.9972838759422302 0.07354960590600967 -0.0 0.9194369316101074 0.6537357568740845 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 0.21605446934700012 -0.9954527616500854 0.0950651541352272 -0.0 0.5428118705749512 0.4969159960746765 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 0.21605446934700012 -0.9972838759422302 0.07354960590600967 -0.0 0.5428673028945923 0.5057579278945923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.982116162776947 0.18823817372322083 -0.0 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.9888912439346313 0.14853358268737793 -0.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.982116162776947 0.18823817372322083 -0.0 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 -0.2839455306529999 -0.8166447877883911 -0.5770744681358337 -0.0 0.025381773710250854 0.5189765691757202 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 0.21605446934700012 -0.7828608155250549 -0.6221808791160583 -0.0 0.44390809535980225 0.35731375217437744 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 0.21605446934700012 -0.8166447877883911 -0.5770744681358337 -0.0 0.44292232394218445 0.360352098941803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 -0.2839455306529999 -0.9864497780799866 0.16388440132141113 -0.0 0.972136378288269 0.570796012878418 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 0.21605446934700012 -0.9769585132598877 0.2133854180574417 -0.0 0.6049898862838745 0.38245081901550293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 0.21605446934700012 -0.9864497780799866 0.16388440132141113 -0.0 0.6049054265022278 0.3917279839515686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 -0.2839455306529999 -0.8988006114959717 0.4383068382740021 -0.0 1.002156376838684 0.5255098938941956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 -0.8722190260887146 0.48908963799476624 -0.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 0.21605446934700012 -0.8988006114959717 0.4383068382740021 -0.0 0.5777221322059631 0.3357633352279663 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.999298095703125 -0.03717154264450073 -0.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 0.21605446934700012 0.9963072538375854 -0.08575700968503952 -0.0 0.44450050592422485 0.4798106551170349 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.999298095703125 -0.03717154264450073 -0.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 -0.2839455306529999 0.9983825087547302 0.056764427572488785 -0.0 0.012842893600463867 0.6526980996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 0.21605446934700012 0.999053955078125 0.04281746968626976 -0.0 0.46055692434310913 0.5053889751434326 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 0.21605446934700012 0.9983825087547302 0.056764427572488785 -0.0 0.46049249172210693 0.4954274892807007 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 -0.2839455306529999 -0.7828608155250549 -0.6221808791160583 -0.0 0.024298399686813354 0.516197681427002 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 0.21605446934700012 -0.7462080717086792 -0.6656697392463684 -0.0 0.4450095295906067 0.35434210300445557 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 0.21605446934700012 -0.7828608155250549 -0.6221808791160583 -0.0 0.44390809535980225 0.35731375217437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 -0.9904171824455261 -0.13800470530986786 -0.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 -0.981749951839447 -0.1900997906923294 -0.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 -0.9904171824455261 -0.13800470530986786 -0.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 -0.9893490672111511 0.14545121788978577 -0.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 -0.9955748319625854 0.09390545636415482 -0.0 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 -0.9893490672111511 0.14545121788978577 -0.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 -0.2839455306529999 -0.9954527616500854 0.0950651541352272 -0.0 0.9204447269439697 0.6450778245925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 0.21605446934700012 -0.9925534725189209 0.12170781195163727 -0.0 0.5426681041717529 0.4888794422149658 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 0.21605446934700012 -0.9954527616500854 0.0950651541352272 -0.0 0.5428118705749512 0.4969159960746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.964598536491394 0.2636799216270447 -0.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 0.21605446934700012 0.9805291891098022 0.19629505276679993 -0.0 0.4902057349681854 0.32686203718185425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.964598536491394 0.2637104392051697 -0.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 -0.2839455306529999 -0.7462080717086792 -0.6656697392463684 -0.0 0.02312496304512024 0.5135035514831543 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 0.21605446934700012 -0.7084872126579285 -0.7057099938392639 -0.0 0.44622862339019775 0.35143786668777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 0.21605446934700012 -0.7462080717086792 -0.6656697392463684 -0.0 0.4450095295906067 0.35434210300445557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 -0.999969482421875 -0.004608294926583767 -0.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 -0.9981994032859802 -0.059907834976911545 -0.0 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 -0.999969482421875 -0.004608294926583767 -0.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 -0.2839455306529999 0.9726554155349731 0.23221534490585327 -0.0 0.06827953457832336 0.5448507070541382 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.982116162776947 0.18823817372322083 -0.0 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 0.21605446934700012 0.9726554155349731 0.23221534490585327 -0.0 0.5030751824378967 0.35380715131759644 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.9943845868110657 0.10565508157014847 -0.0 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.9879757165908813 0.15445417165756226 -0.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.9943845868110657 0.10565508157014847 -0.0 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.9972533583641052 0.07397686690092087 -0.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 0.21605446934700012 0.9983825087547302 0.056764427572488785 -0.0 0.46049249172210693 0.4954274892807007 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.9972533583641052 0.07397686690092087 -0.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 -0.2839455306529999 -0.7084872126579285 -0.7057099938392639 -0.0 0.021860778331756592 0.5108931660652161 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 0.21605446934700012 -0.670186460018158 -0.7421491146087646 -0.0 0.44756728410720825 0.3486024737358093 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 0.21605446934700012 -0.7084872126579285 -0.7057099938392639 -0.0 0.44622862339019775 0.35143786668777466 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 -0.2839455306529999 -0.9769585132598877 0.2133854180574417 -0.0 0.9732059240341187 0.5617566108703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 0.21605446934700012 -0.9638355374336243 0.26645711064338684 -0.0 0.6048398613929749 0.3735578656196594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 0.21605446934700012 -0.9769585132598877 0.2133854180574417 -0.0 0.6049898862838745 0.38245081901550293 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 -0.9977721571922302 -0.06640827655792236 -0.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 -0.9989623427391052 -0.044892728328704834 -0.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 -0.9977721571922302 -0.06640827655792236 -0.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 -0.999969482421875 -0.005340739153325558 -0.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 -0.999725341796875 -0.02209540084004402 -0.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 -0.999969482421875 -0.005340739153325558 -0.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.99920654296875 0.03906369209289551 -0.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.999603271484375 0.02786339819431305 -0.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.99920654296875 0.03906369209289551 -0.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 -0.2839455306529999 -0.670186460018158 -0.7421491146087646 -0.0 0.02050536870956421 0.5083656311035156 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 0.21605445444583893 -0.6318246722221375 -0.7750785946846008 -0.0 0.4490269422531128 0.34583741426467896 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 0.21605446934700012 -0.670186460018158 -0.7421491146087646 -0.0 0.44756728410720825 0.3486024737358093 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 -0.8722190260887146 0.48908963799476624 -0.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 0.21605446934700012 -0.842982292175293 0.5379192233085632 -0.0 0.5761270523071289 0.3283221125602722 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 -0.8722190260887146 0.48908963799476624 -0.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 -0.2839455306529999 -0.9925534725189209 0.12170781195163727 -0.0 0.9214386343955994 0.6372390985488892 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 0.21605446934700012 -0.9878231287002563 0.15552231669425964 -0.0 0.5424344539642334 0.4816877245903015 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 0.21605446934700012 -0.9925534725189209 0.12170781195163727 -0.0 0.5426681041717529 0.4888794422149658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.9597155451774597 0.28095340728759766 -0.0 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 0.21605446934700012 0.9726554155349731 0.23221534490585327 -0.0 0.5030751824378967 0.35380715131759644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.9597155451774597 0.28095340728759766 -0.0 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 -0.2839455306529999 0.9998779296875 -0.013641773723065853 -0.0 0.03204253315925598 0.6222053170204163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.999298095703125 -0.03717154264450073 -0.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 0.21605446934700012 0.9998779296875 -0.013641773723065853 -0.0 0.44352710247039795 0.4643810987472534 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 -0.2839455306529999 -0.6318246722221375 -0.7750785946846008 -0.0 0.01905834674835205 0.5059202909469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 0.21605445444583893 -0.5937376022338867 -0.8046205043792725 -0.0 0.4506097733974457 0.34314483404159546 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 0.21605445444583893 -0.6318246722221375 -0.7750785946846008 -0.0 0.4490269422531128 0.34583741426467896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 -0.2839455306529999 -0.9638355374336243 0.26645711064338684 -0.0 0.9744312167167664 0.553192138671875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 0.21605446934700012 -0.9464095234870911 0.3229468762874603 -0.0 0.6044479608535767 0.3650451898574829 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 0.21605446934700012 -0.9638355374336243 0.26645711064338684 -0.0 0.6048398613929749 0.3735578656196594 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 0.21605446934700012 0.0 0.999969482421875 -0.0 0.44352710247039795 0.4643810987472534 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 0.0 1.0 -0.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 -0.2839455306529999 0.9437543749809265 0.33060702681541443 -0.0 0.07600328326225281 0.5079073905944824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.964598536491394 0.2637104392051697 -0.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 0.21605446934700012 0.9437543749809265 0.33060702681541443 -0.0 0.49127960205078125 0.31945616006851196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.9953917264938354 0.095736563205719 -0.0 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.9972533583641052 0.07397686690092087 -0.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.9953917264938354 0.095736563205719 -0.0 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 -0.2839455306529999 -0.5937376022338867 -0.8046205043792725 -0.0 0.0175190269947052 0.5035566091537476 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 0.21605445444583893 -0.556291401386261 -0.8309579491615295 -0.0 0.4523172080516815 0.3405272960662842 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 0.21605445444583893 -0.5937376022338867 -0.8046205043792725 -0.0 0.4506097733974457 0.34314483404159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 -0.981749951839447 -0.1900997906923294 -0.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 -0.9694814682006836 -0.2451246678829193 -0.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 -0.981749951839447 -0.1900997906923294 -0.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 -0.2839455306529999 -0.842982292175293 0.5379192233085632 -0.0 1.004052996635437 0.5185349583625793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 0.21605446934700012 -0.8114261031150818 0.5843989253044128 -0.0 0.5751299858093262 0.32470762729644775 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 0.21605446934700012 -0.842982292175293 0.5379192233085632 -0.0 0.5761270523071289 0.3283221125602722 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 -0.2839455306529999 -0.9878231287002563 0.15552231669425964 -0.0 0.9224212169647217 0.6302591562271118 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 0.21605446934700012 -0.9798578023910522 0.19965209066867828 -0.0 0.5421093106269836 0.475372850894928 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 0.21605446934700012 -0.9878231287002563 0.15552231669425964 -0.0 0.5424344539642334 0.4816877245903015 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 -0.9955748319625854 0.09390545636415482 -0.0 0.08653220534324646 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 -0.9989318251609802 0.045564133673906326 -0.0 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 -0.9955748319625854 0.09390545636415482 -0.0 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 -0.2839455306529999 -0.556291401386261 -0.8309579491615295 -0.0 0.01588699221611023 0.5012739896774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 0.21605445444583893 -0.5197302103042603 -0.8543046116828918 -0.0 0.45415133237838745 0.3379872441291809 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 0.21605445444583893 -0.556291401386261 -0.8309579491615295 -0.0 0.4523172080516815 0.3405272960662842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 -0.999755859375 -0.02209540084004402 -0.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 -0.9989318251609802 -0.045686207711696625 -0.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 -0.999725341796875 -0.02209540084004402 -0.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 -0.2839455306529999 0.9422894716262817 0.334727019071579 -0.0 0.0650908350944519 0.5301951169967651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.9597155451774597 0.28095340728759766 -0.0 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 0.21605446934700012 0.9422894716262817 0.334727019071579 -0.0 0.505640983581543 0.33850187063217163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.9182103872299194 0.3960081934928894 -0.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 0.21605446934700012 0.9437543749809265 0.33060702681541443 -0.0 0.49127960205078125 0.31945616006851196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.9182103872299194 0.3960081934928894 -0.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 -0.2839455306529999 -0.5197302103042603 -0.8543046116828918 -0.0 0.014161437749862671 0.49907225370407104 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 -0.4842982292175293 -0.8748741149902344 -0.0 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 0.21605445444583893 -0.5197302103042603 -0.8543046116828918 -0.0 0.45415133237838745 0.3379872441291809 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 -0.2839455306529999 -0.9464095234870911 0.3229468762874603 -0.0 0.9758127927780151 0.5450972318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 0.21605446934700012 -0.9239173531532288 0.382519006729126 -0.0 0.60380619764328 0.35690802335739136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 0.21605446934700012 -0.9464095234870911 0.3229468762874603 -0.0 0.6044479608535767 0.3650451898574829 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.9981383681297302 0.060731835663318634 -0.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.9943845868110657 0.10565508157014847 -0.0 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.9981383681297302 0.060731835663318634 -0.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 -0.9981994032859802 -0.059907834976911545 -0.0 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 -0.9924619197845459 -0.12231818586587906 -0.0 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 -0.9981994032859802 -0.059907834976911545 -0.0 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 -0.9989318251609802 0.045564133673906326 -0.0 0.08592897653579712 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 -0.999969482421875 0.001037629321217537 -0.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 -0.9989318251609802 0.045564133673906326 -0.0 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.9922482967376709 0.12408825755119324 -0.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.9953917264938354 0.095736563205719 -0.0 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.9922482967376709 0.12408825755119324 -0.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 -0.2839455306529999 -0.8114261031150818 0.5843989253044128 -0.0 1.0051469802856445 0.5151885747909546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 -0.7780083417892456 0.6282235383987427 -0.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 0.21605446934700012 -0.8114261031150818 0.5843989253044128 -0.0 0.5751299858093262 0.32470762729644775 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 -0.2839455306529999 -0.9798578023910522 0.19965209066867828 -0.0 0.9233952164649963 0.6241699457168579 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 0.21605446934700012 -0.965788722038269 0.25922420620918274 -0.0 0.5416918396949768 0.46996021270751953 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 0.21605446934700012 -0.9798578023910522 0.19965209066867828 -0.0 0.5421093106269836 0.475372850894928 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.3588061034679413 -0.9333781003952026 -0.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.37635424733161926 -0.9264503717422485 -0.0 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.3588061034679413 -0.9333781003952026 -0.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 -0.2839455306529999 0.9191870093345642 0.39378032088279724 -0.0 0.06336680054664612 0.523777961730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 0.21605446934700012 0.9422894716262817 0.334727019071579 -0.0 0.505640983581543 0.33850187063217163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 0.21605446934700012 0.9191870093345642 0.39378032088279724 -0.0 0.5071949362754822 0.33174222707748413 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 -0.4842982292175293 -0.8748741149902344 -0.0 0.012341886758804321 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 -0.4501480162143707 -0.8929410576820374 -0.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 -0.4842982292175293 -0.8748741149902344 -0.0 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 -0.2839455306529999 -0.9239173531532288 0.382519006729126 -0.0 0.977351725101471 0.53746497631073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 0.21605446934700012 -0.8956877589225769 0.4446241557598114 -0.0 0.6029060482978821 0.34914159774780273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 0.21605446934700012 -0.9239173531532288 0.382519006729126 -0.0 0.60380619764328 0.35690802335739136 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.999786376953125 0.019562363624572754 -0.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.9981383681297302 0.060731835663318634 -0.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.999786376953125 0.019562363624572754 -0.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 -0.9989318251609802 -0.045686207711696625 -0.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 -0.9974669814109802 -0.0710776075720787 -0.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 -0.9989318251609802 -0.045686207711696625 -0.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 -0.999969482421875 0.001037629321217537 -0.0 0.08500796556472778 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 -0.9991455078125 -0.04101687669754028 -0.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 -0.999969482421875 0.001037629321217537 -0.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 -0.2839455306529999 0.8884548544883728 0.4589373469352722 -0.0 0.07403913140296936 0.5013856887817383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.9182103872299194 0.3960081934928894 -0.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 0.21605446934700012 0.8884548544883728 0.4589373469352722 -0.0 0.4929672181606293 0.31238698959350586 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 -0.2839455306529999 -0.965788722038269 0.25922420620918274 -0.0 0.9243631362915039 0.6189967393875122 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 0.21605446934700012 -0.9444563388824463 0.32856225967407227 -0.0 0.5411810278892517 0.4654701352119446 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 0.21605446934700012 -0.965788722038269 0.25922420620918274 -0.0 0.5416918396949768 0.46996021270751953 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.3236792981624603 -0.9461653232574463 -0.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.3588061034679413 -0.9333781003952026 -0.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.3236792981624603 -0.9461653232574463 -0.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.8889431357383728 0.45799127221107483 -0.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 0.21605446934700012 0.9191870093345642 0.39378032088279724 -0.0 0.5071949362754822 0.33174222707748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.8889431357383728 0.45799127221107483 -0.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.9986571669578552 0.05151524394750595 -0.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.99920654296875 0.03906369209289551 -0.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.9986571669578552 0.05151524394750595 -0.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 -0.4501480162143707 -0.8929410576820374 -0.0 0.010428071022033691 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 0.21605445444583893 -0.41734060645103455 -0.9087191224098206 -0.0 0.46042805910110474 0.3308688998222351 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 -0.4501480162143707 -0.8929410576820374 -0.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 -0.9694814682006836 -0.2451246678829193 -0.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 -0.9530625343322754 -0.3026825785636902 -0.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 -0.9694814682006836 -0.2451246678829193 -0.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.999969482421875 -9.155552834272385e-05 -0.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.999786376953125 0.019562363624572754 -0.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 1.0 -9.155552834272385e-05 -0.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 -0.7780083417892456 0.6282235383987427 -0.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 0.21605446934700012 -0.7431256771087646 0.669118344783783 -0.0 0.5727245807647705 0.31769561767578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 -0.7780083417892456 0.6282235383987427 -0.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 -0.9991455078125 -0.04101687669754028 -0.0 0.08401632308959961 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 -0.9964598417282104 -0.08398693799972534 -0.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 -0.9991455078125 -0.04101687669754028 -0.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 -0.2839455306529999 0.9866939187049866 0.16248054802417755 -0.0 0.010903030633926392 0.6221014261245728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.9922482967376709 0.12408825755119324 -0.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 0.21605446934700012 0.9866939187049866 0.16248054802417755 -0.0 0.46101683378219604 0.46464651823043823 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 -0.2839455306529999 -0.41731008887290955 -0.9087496399879456 -0.0 0.00841948390007019 0.4929516911506653 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 -0.38496047258377075 -0.9229102730751038 -0.0 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 0.21605445444583893 -0.41734060645103455 -0.9087191224098206 -0.0 0.46042805910110474 0.3308688998222351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 -0.2839455306529999 -0.8956877589225769 0.4446241557598114 -0.0 0.979049801826477 0.5302878022193909 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 0.21605446934700012 -0.861079752445221 0.5084078311920166 -0.0 0.6017383337020874 0.3417413830757141 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 0.21605446934700012 -0.8956877589225769 0.4446241557598114 -0.0 0.6029060482978821 0.34914159774780273 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 -0.2839455306529999 -0.9444563388824463 0.32856225967407227 -0.0 0.925327718257904 0.6147598028182983 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 0.21605446934700012 -0.921384334564209 0.3885921835899353 -0.0 0.5405697822570801 0.46148681640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 0.21605446934700012 -0.9444563388824463 0.32856225967407227 -0.0 0.5411810278892517 0.4654701352119446 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 -0.9964598417282104 -0.08398693799972534 -0.0 0.08284473419189453 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 -0.9916074275970459 -0.12915432453155518 -0.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 -0.9964598417282104 -0.08398693799972534 -0.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 -0.2839455306529999 0.8549760580062866 0.5186010599136353 -0.0 0.07288837432861328 0.49829840660095215 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 0.21605446934700012 0.8884548544883728 0.4589373469352722 -0.0 0.4929672181606293 0.31238698959350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 0.21605446934700012 0.8549760580062866 0.5186010599136353 -0.0 0.4940483868122101 0.3089780807495117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 -0.2839455306529999 -0.7431256771087646 0.669118344783783 -0.0 1.0076266527175903 0.5087709426879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 -0.7072664499282837 0.7069307565689087 -0.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 0.21605446934700012 -0.7431256771087646 0.669118344783783 -0.0 0.5727245807647705 0.31769561767578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.28867459297180176 -0.9573961496353149 -0.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.3236792981624603 -0.9461653232574463 -0.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.28867459297180176 -0.9573961496353149 -0.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 -0.2839455306529999 0.8522293567657471 0.5231177806854248 -0.0 0.05965006351470947 0.5127252340316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.8889431357383728 0.45799127221107483 -0.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 0.21605446934700012 0.8522293567657471 0.5231177806854248 -0.0 0.510858416557312 0.31999123096466064 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.9761345386505127 0.21701711416244507 -0.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 0.21605446934700012 0.9866939187049866 0.16248054802417755 -0.0 0.46101683378219604 0.46464651823043823 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.9761345386505127 0.21701711416244507 -0.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 -0.38496047258377075 -0.9229102730751038 -0.0 0.006315648555755615 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 -0.35154271125793457 -0.9361552596092224 -0.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 -0.38496047258377075 -0.9229102730751038 -0.0 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 -0.2839455306529999 -0.861079752445221 0.5084078311920166 -0.0 0.9809092879295349 0.5235574245452881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 0.21605446934700012 -0.8197271823883057 0.5727408528327942 -0.0 0.6002932786941528 0.33470362424850464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 0.21605446934700012 -0.861079752445221 0.5084078311920166 -0.0 0.6017383337020874 0.3417413830757141 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.0 -0.999969482421875 -0.0 1.0311825275421143 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.0 -1.0 -0.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 -0.9974669814109802 -0.0710776075720787 -0.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 -0.9951170086860657 -0.09848322719335556 -0.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 -0.9974669814109802 -0.0710776075720787 -0.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.8185674548149109 0.574358344078064 -0.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 0.21605446934700012 0.8549760580062866 0.5186010599136353 -0.0 0.4940483868122101 0.3089780807495117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.8185674548149109 0.574388861656189 -0.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 -0.2839455306529999 0.9976500868797302 0.06805627793073654 -0.0 0.03077256679534912 0.540071964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.9989623427391052 0.04544205963611603 -0.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 0.21605446934700012 0.9976500868797302 0.06805627793073654 -0.0 0.43873849511146545 0.3827359676361084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 -0.9924619197845459 -0.12231818586587906 -0.0 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 -0.982329785823822 -0.18707846105098724 -0.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 -0.9924619197845459 -0.12231818586587906 -0.0 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 -0.2839455306529999 -0.921384334564209 0.3885921835899353 -0.0 0.9263383150100708 0.6110518574714661 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 0.21605446934700012 -0.8986785411834717 0.4385509788990021 -0.0 0.5398499369621277 0.45758336782455444 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 0.21605446934700012 -0.921384334564209 0.3885921835899353 -0.0 0.5405697822570801 0.46148681640625 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.2539750337600708 -0.9671925902366638 -0.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.28867459297180176 -0.9573961496353149 -0.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.2539750337600708 -0.9671925902366638 -0.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.8114871382713318 0.5843378901481628 -0.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 0.21605446934700012 0.8522293567657471 0.5231177806854248 -0.0 0.510858416557312 0.31999123096466064 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.8114871382713318 0.5843378901481628 -0.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 -0.35154271125793457 -0.9361552596092224 -0.0 0.004141867160797119 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 -0.317392498254776 -0.9482711553573608 -0.0 0.4677753150463104 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 -0.35154271125793457 -0.9361552596092224 -0.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 -0.9530625343322754 -0.3026825785636902 -0.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 -0.9320352673530579 -0.36234626173973083 -0.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 -0.9530625343322754 -0.3026825785636902 -0.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.9933775067329407 0.11484114825725555 -0.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 0.21605446934700012 0.9976500868797302 0.06805627793073654 -0.0 0.43873849511146545 0.3827359676361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.9933775067329407 0.11484114825725555 -0.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 -0.9916074275970459 -0.12915432453155518 -0.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 -0.9843134880065918 -0.17636646330356598 -0.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 -0.9916074275970459 -0.12915432453155518 -0.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.9978331923484802 0.06543168425559998 -0.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.9986571669578552 0.05151524394750595 -0.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.9978331923484802 0.06543168425559998 -0.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 -0.2839455306529999 0.9590746760368347 0.28302866220474243 -0.0 0.009722918272018433 0.6127604246139526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.9761345386505127 0.21701711416244507 -0.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 0.21605446934700012 0.9591051936149597 0.28302866220474243 -0.0 0.4617636799812317 0.45516467094421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 -0.2839455306529999 -0.8197271823883057 0.5727408528327942 -0.0 0.9829331636428833 0.5172655582427979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 0.21605446934700012 -0.7750175595283508 0.6319162845611572 -0.0 0.5985607504844666 0.32802635431289673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 0.21605446934700012 -0.8197271823883057 0.5727408528327942 -0.0 0.6002932786941528 0.33470362424850464 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 -0.7072664499282837 0.7069307565689087 -0.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 0.21605446934700012 -0.670796811580658 0.7416303157806396 -0.0 0.5697541236877441 0.31098443269729614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 -0.7072664499282837 0.7069307565689087 -0.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 -0.2839455306529999 -0.8986785411834717 0.4385509788990021 -0.0 0.9274437427520752 0.6074543595314026 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 0.21605446934700012 -0.8731955885887146 0.48731955885887146 -0.0 0.5390197038650513 0.45376038551330566 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 0.21605446934700012 -0.8986785411834717 0.4385509788990021 -0.0 0.5398499369621277 0.45758336782455444 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.21970275044441223 -0.9755546450614929 -0.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.2539750337600708 -0.9671925902366638 -0.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.21970275044441223 -0.9755546450614929 -0.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 -0.317392498254776 -0.9482711553573608 -0.0 1.00192391872406 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 0.21605445444583893 -0.28333383798599243 -0.9590136408805847 -0.0 1.4703819751739502 0.32301509380340576 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 -0.317392498254776 -0.9482711553573608 -0.0 1.4677753448486328 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 -0.2839455306529999 0.9863277077674866 0.16461683809757233 -0.0 0.029464364051818848 0.5239272117614746 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.9933775067329407 0.11484114825725555 -0.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 0.21605446934700012 0.9863277077674866 0.16461683809757233 -0.0 0.43886324763298035 0.3663843274116516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 -0.2839455306529999 0.765251636505127 0.6436964273452759 -0.0 0.05381375551223755 0.4998077154159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.8114871382713318 0.5843378901481628 -0.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 0.21605446934700012 0.765251636505127 0.6436964273452759 -0.0 0.5171929597854614 0.30614006519317627 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 -0.2839455306529999 0.7799615263938904 0.6258125305175781 -0.0 0.07024794816970825 0.49246126413345337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.8185674548149109 0.574388861656189 -0.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 0.21605446934700012 0.7799615263938904 0.6258125305175781 -0.0 0.49670082330703735 0.30241620540618896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.940336287021637 0.3401898145675659 -0.0 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 0.21605446934700012 0.9591051936149597 0.28302866220474243 -0.0 0.4617636799812317 0.45516467094421387 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.940336287021637 0.3401898145675659 -0.0 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 -0.2839455306529999 -0.28333383798599243 -0.9590136408805847 -0.0 0.9996620416641235 0.48620885610580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 -0.24951933324337006 -0.9683523178100586 -0.0 1.473060965538025 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 0.21605445444583893 -0.28333383798599243 -0.9590136408805847 -0.0 1.4703819751739502 0.32301509380340576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 -0.2839455306529999 -0.7750175595283508 0.6319162845611572 -0.0 0.9851247668266296 0.5114044547080994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 0.21605446934700012 -0.7314981818199158 0.6818140149116516 -0.0 0.5965896844863892 0.32174062728881836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 0.21605446934700012 -0.7750175595283508 0.6319162845611572 -0.0 0.5985607504844666 0.32802635431289673 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.9760735034942627 0.21732230484485626 -0.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 0.21605446934700012 0.9863277077674866 0.16461683809757233 -0.0 0.43886324763298035 0.3663843274116516 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.9760735034942627 0.21732230484485626 -0.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 -0.2839455306529999 -0.670796811580658 0.7416303157806396 -0.0 1.0104960203170776 0.5027124881744385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 0.21605446934700012 -0.634144127368927 0.773186445236206 -0.0 0.5680505633354187 0.30774790048599243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 0.21605446934700012 -0.670796811580658 0.7416303157806396 -0.0 0.5697541236877441 0.31098443269729614 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 -0.2839455306529999 -0.8731955885887146 0.48731955885887146 -0.0 0.9286445379257202 0.603966474533081 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 0.21605446934700012 -0.8451185822486877 0.5345317125320435 -0.0 0.5380769968032837 0.45001834630966187 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 0.21605446934700012 -0.8731955885887146 0.48731955885887146 -0.0 0.5390197038650513 0.45376038551330566 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 -0.9843134880065918 -0.17636646330356598 -0.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 -0.9742423892021179 -0.22537919878959656 -0.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 -0.9843134880065918 -0.17636646330356598 -0.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 -0.9951170086860657 -0.09848322719335556 -0.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 -0.9917600154876709 -0.1280556619167328 -0.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 0.21605446934700012 -0.9917600154876709 -0.1280556619167328 -0.0 0.40391385555267334 0.45400524139404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.18597979843616486 -0.982543408870697 -0.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.21970275044441223 -0.9755546450614929 -0.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 0.21605445444583893 0.21970275044441223 -0.9755546450614929 -0.0 0.5298887491226196 0.3255653381347656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.7109591960906982 0.7032074928283691 -0.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 -0.2839455306529999 0.765251636505127 0.6436964273452759 -0.0 0.05381375551223755 0.4998077154159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 0.21605446934700012 0.765251636505127 0.6436964273452759 -0.0 0.5171929597854614 0.30614006519317627 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.7399212718009949 0.6726584434509277 -0.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 -0.2839455306529999 0.7799615263938904 0.6258125305175781 -0.0 0.07024794816970825 0.49246126413345337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 0.21605446934700012 0.7799615263938904 0.6258125305175781 -0.0 0.49670082330703735 0.30241620540618896 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 -0.24948881566524506 -0.9683523178100586 -0.0 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 -0.21604052186012268 -0.9763786792755127 -0.0 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 0.21605445444583893 -0.21604052186012268 -0.9763786792755127 -0.0 1.4758096933364868 0.32011890411376953 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 -0.2839455306529999 -0.7314981818199158 0.6818140149116516 -0.0 0.9874353408813477 0.5059763193130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 -0.2839455306529999 -0.6860560774803162 0.7275307178497314 -0.0 0.989815354347229 0.5009863376617432 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 0.21605446934700012 -0.6860560774803162 0.7275307178497314 -0.0 0.5944331288337708 0.3158789873123169 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 -0.2839455306529999 0.9620655179023743 0.27271339297294617 -0.0 0.027515262365341187 0.5092605352401733 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.9760735034942627 0.21732230484485626 -0.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 0.21605446934700012 0.9760735034942627 0.21732230484485626 -0.0 0.439240425825119 0.35869020223617554 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 -0.2839455306529999 -0.634144127368927 0.773186445236206 -0.0 1.0120773315429688 0.49981552362442017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 -0.5924558043479919 0.8055665493011475 -0.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 0.21605446934700012 -0.5924558043479919 0.8055665493011475 -0.0 0.5661982893943787 0.3045951724052429 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 -0.2839455306529999 0.921811580657959 0.3875850737094879 -0.0 0.00831332802772522 0.6057209968566895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.940336287021637 0.3401898145675659 -0.0 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 0.21605446934700012 0.940336287021637 0.3401898145675659 -0.0 0.4622611999511719 0.45150309801101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 -0.9320352673530579 -0.36234626173973083 -0.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 -0.9059419631958008 -0.42335277795791626 -0.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 0.21605446934700012 -0.9059419631958008 -0.42335277795791626 -0.0 0.4478146731853485 0.3064257502555847 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.9438154101371765 0.33039337396621704 -0.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 -0.2839455306529999 0.9620655179023743 0.27271339297294617 -0.0 0.027515262365341187 0.5092605352401733 0 1.0 0 0.0 0 0.0 0 0.0\n0.9573602676391602 -0.0594380721449852 0.21605446934700012 0.9620655179023743 0.27271339297294617 -0.0 0.43983423709869385 0.3513116240501404 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 -0.2839455306529999 -0.8451185822486877 0.5345317125320435 -0.0 0.9299417734146118 0.6005876064300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 -0.2839455306529999 -0.8147831559181213 0.5797296166419983 -0.0 0.9313363432884216 0.5973168015480042 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 0.21605446934700012 -0.8147831559181213 0.5797296166419983 -0.0 0.5370199084281921 0.4463580846786499 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.15292824804782867 -0.9882198572158813 -0.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 -0.2839455306529999 0.18597979843616486 -0.982543408870697 -0.0 0.9527758359909058 0.482984721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.8204905986785889 -0.18867407739162445 0.21605445444583893 0.18597979843616486 -0.982543408870697 -0.0 0.5256187319755554 0.3231980800628662 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 -0.9742423892021179 -0.22537919878959656 -0.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 -0.9611499309539795 -0.2759788930416107 -0.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 0.21605446934700012 -0.9611499309539795 -0.2759788930416107 -0.0 0.3854953348636627 0.3617415428161621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.9967039823532104 0.08105716109275818 -0.0 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.9978331923484802 0.06543168425559998 -0.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 0.21605446934700012 0.9978331923484802 0.06543168425559998 -0.0 0.6398884057998657 0.34505248069763184 0 1.0 0 0.0 0 0.0 0 0.0\n1.750065565109253 -0.18931257724761963 -0.2839455306529999 -0.21604052186012268 -0.9763786792755127 -0.0 0.9950048923492432 0.4836880564689636 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 -0.2839455306529999 -0.1830805391073227 -0.983092725276947 -0.0 0.9926097393035889 0.48264533281326294 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 -0.1830805391073227 -0.983092725276947 -0.0 1.4786269664764404 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 -0.982329785823822 -0.18707846105098724 -0.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 -0.9673146605491638 -0.2534867525100708 -0.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 0.21605446934700012 -0.9673146605491638 -0.2534867525100708 -0.0 0.43276700377464294 0.3138952851295471 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 -0.2839455306529999 0.6484572887420654 0.7612231969833374 -0.0 0.04757365584373474 0.48960989713668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 -0.2839455306529999 0.7109591960906982 0.7032074928283691 -0.0 0.05074578523635864 0.49437379837036133 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1235111951828003 -0.09292101114988327 0.21605446934700012 0.7109591960906982 0.7032074928283691 -0.0 0.5207288265228271 0.3003121018409729 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.9002349972724915 0.4353770613670349 -0.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 -0.2839455306529999 0.921811580657959 0.3875850737094879 -0.0 0.00831332802772522 0.6057209968566895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.052057743072509766 -0.08473362028598785 0.21605446934700012 0.921811580657959 0.3875850737094879 -0.0 0.4628440737724304 0.44795089960098267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0204806327819824 -0.09452638030052185 -0.2839455306529999 -0.6860560774803162 0.7275307178497314 -0.0 0.989815354347229 0.5009863376617432 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 0.5920868515968323 0.31044334173202515 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 -0.2839455306529999 0.9208654761314392 0.3898129165172577 -0.0 0.02493041753768921 0.4960223436355591 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 -0.2839455306529999 0.9438154101371765 0.33039337396621704 -0.0 0.026302307844161987 0.5024663209915161 0 1.0 0 0.0 0 0.0 0 0.0\n0.9591941833496094 -0.06525024771690369 0.21605446934700012 0.9438154101371765 0.33039337396621704 -0.0 0.4406500458717346 0.3442443609237671 0 1.0 0 0.0 0 0.0 0 0.0\n0.06628727912902832 -0.08515442907810211 -0.2839455306529999 -0.8147831559181213 0.5797296166419983 -0.0 0.9313363432884216 0.5973168015480042 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 -0.2839455306529999 -0.7824946045875549 0.6226081252098083 -0.0 0.9328294992446899 0.5941532850265503 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 0.21605446934700012 -0.7824946045875549 0.6226081252098083 -0.0 0.5358461737632751 0.44278061389923096 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.12060914933681488 -0.9926755428314209 -0.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 -0.2839455306529999 0.15292824804782867 -0.9882198572158813 -0.0 0.9566332101821899 0.48179370164871216 0 1.0 0 0.0 0 0.0 0 0.0\n1.8139474391937256 -0.18979783356189728 0.21605445444583893 0.15292824804782867 -0.9882198572158813 -0.0 0.5211864709854126 0.3211352229118347 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 -0.2839455306529999 -0.9562364816665649 0.2925504446029663 -0.0 0.9439747929573059 0.4986279010772705 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 -0.2839455306529999 -0.9508346915245056 0.3096713125705719 -0.0 0.9450085163116455 0.49344611167907715 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 0.21605446934700012 -0.9508346915245056 0.3096713125705719 -0.0 0.5337579846382141 0.33563095331192017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 -0.2839455306529999 0.6976531147956848 0.7163915038108826 -0.0 0.06715226173400879 0.48706352710723877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 -0.2839455306529999 0.7399212718009949 0.6726584434509277 -0.0 0.06875726580619812 0.48970818519592285 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5450183153152466 -0.10538940131664276 0.21605446934700012 0.7399212718009949 0.6726584434509277 -0.0 0.4982786476612091 0.2992667555809021 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 0.21605443954467773 -0.1830805391073227 -0.983092725276947 -0.0 1.4786269664764404 0.31894344091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.754028081893921 -0.1901189088821411 -0.2839455306529999 -0.1830805391073227 -0.983092725276947 -0.0 0.9926097393035889 0.48264533281326294 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 -0.1507004052400589 -0.9885555505752563 -0.0 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n-1.452539324760437 -0.10548669099807739 -0.2839455306529999 -0.5924558043479919 0.8055665493011475 -0.0 1.0137566328048706 0.49700599908828735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 -0.2839455306529999 -0.5498520135879517 0.8352305889129639 -0.0 1.016105055809021 0.493499755859375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 0.21605446934700012 -0.5498520135879517 0.8352305889129639 -0.0 0.5635403990745544 0.3006412386894226 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15565800666809082 -0.08717329800128937 -0.2839455306529999 -0.9917600154876709 -0.1280556619167328 -0.0 0.06925424933433533 0.593031644821167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 -0.9870906472206116 -0.15994751453399658 -0.0 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 0.21605446934700012 -0.9870906472206116 -0.15994751453399658 -0.0 0.40385371446609497 0.4461749792098999 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 -0.2839455306529999 0.5781121253967285 0.8159428834915161 -0.0 0.044294536113739014 0.48550617694854736 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 -0.2839455306529999 0.6484572887420654 0.7612231969833374 -0.0 0.04757365584373474 0.48960989713668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.118622064590454 -0.09746956080198288 0.21605446934700012 0.6484572887420654 0.7612231969833374 -0.0 0.5245062708854675 0.2952185273170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.16553239524364471 0.9861751198768616 -0.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 -0.2839455306529999 0.16553239524364471 0.9861751198768616 -0.0 0.9439747929573059 0.4986279010772705 0 1.0 0 0.0 0 0.0 0 0.0\n1.0959722995758057 -0.06555674225091934 0.21605446934700012 0.16553239524364471 0.9861751198768616 -0.0 0.5344954133033752 0.34105902910232544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0248029232025146 -0.09833913296461105 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9922680258750916 0.4964311718940735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 -0.2839455306529999 -0.5775933265686035 0.8163090944290161 -0.0 0.9947965145111084 0.4923076033592224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 0.21605446934700012 -0.5775933265686035 0.8163090944290161 -0.0 0.5895469188690186 0.30543601512908936 0 1.0 0 0.0 0 0.0 0 0.0\n1.094576120376587 -0.07011988759040833 -0.2839455306529999 -0.9508346915245056 0.3096713125705719 -0.0 0.9450085163116455 0.49344611167907715 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 -0.2839455306529999 -0.938657820224762 0.34482863545417786 -0.0 0.946087121963501 0.488539457321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 0.21605446934700012 -0.938657820224762 0.34482863545417786 -0.0 0.5329328179359436 0.33046531677246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.08911404758691788 -0.9960020780563354 -0.0 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 -0.2839455306529999 0.12060914933681488 -0.9926755428314209 -0.0 0.9605854749679565 0.4808386564254761 0 1.0 0 0.0 0 0.0 0 0.0\n1.8072779178619385 -0.19071727991104126 0.21605445444583893 0.12060914933681488 -0.9926755428314209 -0.0 0.5165964961051941 0.31939154863357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 -0.2839455306529999 0.6505020260810852 0.7594836354255676 -0.0 0.06546497344970703 0.4845954179763794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 -0.2839455306529999 0.6976531147956848 0.7163915038108826 -0.0 0.06715226173400879 0.48706352710723877 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5425567626953125 -0.10793852806091309 0.21605446934700012 0.6976531147956848 0.7163915038108826 -0.0 0.5000284910202026 0.29620879888534546 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 -0.2839455306529999 0.8754844665527344 0.4831995666027069 -0.0 0.006594359874725342 0.5991576910018921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 -0.2839455306529999 0.9002349972724915 0.4353770613670349 -0.0 0.00749245285987854 0.602379560470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0508427619934082 -0.08742626756429672 0.21605446934700012 0.9002349972724915 0.4353770613670349 -0.0 0.46351292729377747 0.44450944662094116 0 1.0 0 0.0 0 0.0 0 0.0\n1.7580630779266357 -0.190801203250885 -0.2839455306529999 -0.1507004052400589 -0.9885555505752563 -0.0 0.9901707172393799 0.48174822330474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 -0.2839455306529999 -0.1189611479640007 -0.9928891658782959 -0.0 0.9876875281333923 0.4809969663619995 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 0.21605445444583893 -0.1189611479640007 -0.9928891658782959 -0.0 1.4844553470611572 0.31715285778045654 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4565843343734741 -0.10828392952680588 -0.2839455306529999 -0.5498520135879517 0.8352305889129639 -0.0 1.016105055809021 0.493499755859375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 -0.5103610157966614 0.8599200248718262 -0.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 0.21605446934700012 -0.5103610157966614 0.8599200248718262 -0.0 0.5607984662055969 0.2970088720321655 0 1.0 0 0.0 0 0.0 0 0.0\n0.06409811973571777 -0.08806112408638 -0.2839455306529999 -0.7824946045875549 0.6226081252098083 -0.0 0.9328294992446899 0.5941532850265503 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 -0.2839455306529999 -0.748680055141449 0.6629230380058289 -0.0 0.9344223737716675 0.5910961627960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 0.21605446934700012 -0.748680055141449 0.6629230380058289 -0.0 0.5345537662506104 0.43928706645965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.8929105401039124 0.4501785337924957 -0.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 -0.2839455306529999 0.9208654761314392 0.3898129165172577 -0.0 0.02493041753768921 0.4960223436355591 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613299369812012 -0.07079242914915085 0.21605446934700012 0.9208654761314392 0.3898129165172577 -0.0 0.44169366359710693 0.33748435974121094 0 1.0 0 0.0 0 0.0 0 0.0\n1.7621715068817139 -0.19135943055152893 -0.2839455306529999 -0.1189611479640007 -0.9928891658782959 -0.0 0.9876875281333923 0.4809969663619995 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 -0.08798485994338989 -0.9960936307907104 -0.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 0.21605445444583893 -0.08798485994338989 -0.9960936307907104 -0.0 1.4874608516693115 0.3165437579154968 0 1.0 0 0.0 0 0.0 0 0.0\n0.8610334396362305 -0.07151120901107788 -0.2839455306529999 -0.9611499309539795 -0.2759788930416107 -0.0 0.07633981108665466 0.4980389475822449 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 -0.9447309970855713 -0.32776880264282227 -0.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 0.21605446934700012 -0.9447309970855713 -0.32776880264282227 -0.0 0.3860163688659668 0.35041290521621704 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.5009002685546875 0.8654744029045105 -0.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 -0.2839455306529999 0.5781121253967285 0.8159428834915161 -0.0 0.044294536113739014 0.48550617694854736 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1134703159332275 -0.10148298740386963 0.21605446934700012 0.5781121253967285 0.8159428834915161 -0.0 0.5285190939903259 0.2908620238304138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.9950864911079407 0.09869685769081116 -0.0 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 -0.2839455306529999 0.9967039823532104 0.08105716109275818 -0.0 0.9483141899108887 0.5016369223594666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3279880285263062 -0.1101532131433487 0.21605446934700012 0.9967039823532104 0.08105716109275818 -0.0 0.64090496301651 0.3395833373069763 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 -0.2839455306529999 0.8476210832595825 0.5305337905883789 -0.0 0.005618959665298462 0.5960554480552673 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 -0.2839455306529999 0.8754844665527344 0.4831995666027069 -0.0 0.006594359874725342 0.5991576910018921 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04950380325317383 -0.09001675248146057 0.21605446934700012 0.8754844665527344 0.4831995666027069 -0.0 0.4642685651779175 0.4411802887916565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2332748174667358 -0.10171164572238922 -0.2839455306529999 -0.9059419631958008 -0.42335277795791626 -0.0 0.1095895767211914 0.47815340757369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 -0.8745384216308594 -0.4849391281604767 -0.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 0.21605446934700012 -0.8745384216308594 -0.4849391281604767 -0.0 0.4501752555370331 0.29445379972457886 0 1.0 0 0.0 0 0.0 0 0.0\n1.0930728912353516 -0.07446898519992828 -0.2839455306529999 -0.938657820224762 0.34482863545417786 -0.0 0.946087121963501 0.488539457321167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 -0.2839455306529999 -0.9241004586219788 0.3820917308330536 -0.0 0.9472108483314514 0.48390400409698486 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 0.21605446934700012 -0.9241004586219788 0.3820917308330536 -0.0 0.5320184826850891 0.325559139251709 0 1.0 0 0.0 0 0.0 0 0.0\n0.06173396110534668 -0.09087538719177246 -0.2839455306529999 -0.748680055141449 0.6629230380058289 -0.0 0.9344223737716675 0.5910961627960205 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 -0.2839455306529999 -0.713675320148468 0.7004303336143494 -0.0 0.9361163377761841 0.5881446599960327 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 0.21605446934700012 -0.713675320148468 0.7004303336143494 -0.0 0.5331403017044067 0.4358789324760437 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.05850398167967796 -0.9982604384422302 -0.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 -0.2839455306529999 0.08911404758691788 -0.9960020780563354 -0.0 0.9646320343017578 0.4801236391067505 0 1.0 0 0.0 0 0.0 0 0.0\n1.8004820346832275 -0.1914324015378952 0.21605445444583893 0.08911404758691788 -0.9960020780563354 -0.0 0.5118548274040222 0.317981481552124 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.5980712175369263 0.8014160394668579 -0.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 -0.2839455306529999 0.6505020260810852 0.7594836354255676 -0.0 0.06546497344970703 0.4845954179763794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.539929747581482 -0.11034414917230606 0.21605446934700012 0.6505020260810852 0.7594836354255676 -0.0 0.5019184947013855 0.2933226227760315 0 1.0 0 0.0 0 0.0 0 0.0\n1.7663524150848389 -0.19179360568523407 -0.2839455306529999 -0.08798485994338989 -0.9960936307907104 -0.0 0.9851610660552979 0.48039180040359497 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 -0.05783257633447647 -0.9983214735984802 -0.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 0.21605445444583893 -0.05783257633447647 -0.9983214735984802 -0.0 0.49052339792251587 0.3161289691925049 0 1.0 0 0.0 0 0.0 0 0.0\n-1.029266357421875 -0.10175054520368576 -0.2839455306529999 -0.5775933265686035 0.8163090944290161 -0.0 0.9947965145111084 0.4923076033592224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 -0.2839455306529999 -0.5148167610168457 0.8572649359703064 -0.0 0.9974039793014526 0.4886128902435303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 0.21605446934700012 -0.5148167610168457 0.8572649359703064 -0.0 0.586810290813446 0.30086058378219604 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4606634378433228 -0.11083792895078659 -0.2839455306529999 -0.5103610157966614 0.8599200248718262 -0.0 1.018471598625183 0.4902775287628174 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 -0.2839455306529999 -0.4681234061717987 0.8836328983306885 -0.0 1.0208572149276733 0.48733770847320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 0.21605446934700012 -0.4681234061717987 0.8836328983306885 -0.0 0.5579749345779419 0.29369932413101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 -0.2839455306529999 0.8597369194030762 0.5107272267341614 -0.0 0.021708518266677856 0.4841575026512146 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 -0.2839455306529999 0.8929105401039124 0.4501785337924957 -0.0 0.023399382829666138 0.4899216294288635 0 1.0 0 0.0 0 0.0 0 0.0\n0.9637672901153564 -0.07606461644172668 0.21605446934700012 0.8929105401039124 0.4502090513706207 -0.0 0.442970871925354 0.3310282826423645 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.8167668581008911 0.5769218802452087 -0.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 -0.2839455306529999 0.8476210832595825 0.5305337905883789 -0.0 0.005618959665298462 0.5960554480552673 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04804062843322754 -0.0925050750374794 0.21605446934700012 0.8476210832595825 0.5305337905883789 -0.0 0.4651119112968445 0.4379647970199585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033870816230774 -0.10476061701774597 -0.2839455306529999 -0.5148167610168457 0.8572649359703064 -0.0 0.9974039793014526 0.4886128902435303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 -0.2839455306529999 -0.44703513383865356 0.8944975137710571 -0.0 1.000093698501587 0.4853445887565613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 0.21605446934700012 -0.44703513383865356 0.8944975137710571 -0.0 0.5838744640350342 0.2967216968536377 0 1.0 0 0.0 0 0.0 0 0.0\n1.0914626121520996 -0.07860402762889862 -0.2839455306529999 -0.9241004586219788 0.3820917308330536 -0.0 0.9472108483314514 0.48390400409698486 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 -0.9068269729614258 0.4214606285095215 -0.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 0.21605446934700012 -0.9068269729614258 0.4214606285095215 -0.0 0.5310134887695312 0.3209095001220703 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6527143716812134 -0.11229734867811203 -0.2839455306529999 -0.9673146605491638 -0.2534867525100708 -0.0 0.12260499596595764 0.47699278593063354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 -0.9472029805183411 -0.32053589820861816 -0.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 0.21605446934700012 -0.9472029805183411 -0.32053589820861816 -0.0 0.433250367641449 0.3067089319229126 0 1.0 0 0.0 0 0.0 0 0.0\n0.05919456481933594 -0.09359721839427948 -0.2839455306529999 -0.713675320148468 0.7004303336143494 -0.0 0.9361163377761841 0.5881446599960327 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 -0.2839455306529999 -0.6779381632804871 0.7350993156433105 -0.0 0.9379128217697144 0.5852980613708496 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 0.21605446934700012 -0.6779381632804871 0.7350993156433105 -0.0 0.5316035151481628 0.43255800008773804 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.028839990496635437 -0.99957275390625 -0.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 -0.2839455306529999 0.05850398167967796 -0.9982604384422302 -0.0 0.9687719941139221 0.47965240478515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.7935593128204346 -0.1919431984424591 0.21605445444583893 0.05850398167967796 -0.9982604384422302 -0.0 0.5069688558578491 0.31691932678222656 0 1.0 0 0.0 0 0.0 0 0.0\n1.7706067562103271 -0.19210374355316162 -0.2839455306529999 -0.05783257633447647 -0.9983214735984802 -0.0 0.9825912714004517 0.47993284463882446 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 -0.2839455306529999 -0.02850428782403469 -0.99957275390625 -0.0 0.9799787998199463 0.4796203374862671 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 0.21605445444583893 -0.02850428782403469 -0.99957275390625 -0.0 0.4936390817165375 0.31591135263442993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15464115142822266 -0.09419071674346924 -0.2839455306529999 -0.9870906472206116 -0.15994751453399658 -0.0 0.06832051277160645 0.5854088664054871 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 -0.9809259176254272 -0.19437238574028015 -0.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 0.21605446934700012 -0.9809259176254272 -0.19437238574028015 -0.0 0.4039095640182495 0.43862825632095337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 -0.2839455306529999 0.41840875148773193 0.9082308411598206 -0.0 0.03740385174751282 0.4792447090148926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 -0.2839455306529999 0.5009002685546875 0.8654744029045105 -0.0 0.04090547561645508 0.4820537567138672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108055830001831 -0.10496129095554352 0.21605446934700012 0.5009002685546875 0.8654744029045105 -0.0 0.5327584743499756 0.28724706172943115 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.8213446736335754 0.5703604221343994 -0.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 -0.2839455306529999 0.8597369194030762 0.5107272267341614 -0.0 0.021708518266677856 0.4841575026512146 0 1.0 0 0.0 0 0.0 0 0.0\n0.9665062427520752 -0.0810668095946312 0.21605446934700012 0.8597369194030762 0.5107272267341614 -0.0 0.44448772072792053 0.3248738646507263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 -0.2839455306529999 0.5419476628303528 0.8403881788253784 -0.0 0.06193813681602478 0.4803890585899353 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 -0.2839455306529999 0.5980712175369263 0.8014160394668579 -0.0 0.06372728943824768 0.48237109184265137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5371860265731812 -0.1125405877828598 0.21605446934700012 0.5980712175369263 0.8014160394668579 -0.0 0.503914475440979 0.29068702459335327 0 1.0 0 0.0 0 0.0 0 0.0\n1.7749340534210205 -0.1922898143529892 -0.2839455306529999 -0.02850428782403469 -0.99957275390625 -0.0 0.9799787998199463 0.4796203374862671 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 -0.2839455306529999 6.103701889514923e-05 -1.0 -0.0 0.9773244857788086 0.4794541597366333 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 0.21605445444583893 6.103701889514923e-05 -1.0 -0.0 0.49680399894714355 0.3158932328224182 0 1.0 0 0.0 0 0.0 0 0.0\n-1.038616418838501 -0.10736934840679169 -0.2839455306529999 -0.44703513383865356 0.8944975137710571 -0.0 1.000093698501587 0.4853445887565613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 -0.2839455306529999 -0.3751335144042969 0.9269387125968933 -0.0 1.0028687715530396 0.48250114917755127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 0.21605446934700012 -0.3751335144042969 0.9269387125968933 -0.0 0.5807379484176636 0.2930253744125366 0 1.0 0 0.0 0 0.0 0 0.0\n0.8643536567687988 -0.08200936019420624 -0.2839455306529999 -0.9447309970855713 -0.32776880264282227 -0.0 0.07424464821815491 0.48747164011001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 -0.9248634576797485 -0.3802911341190338 -0.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 0.21605446934700012 -0.9248634576797485 -0.3802911341190338 -0.0 0.3868318498134613 0.33936208486557007 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4647765159606934 -0.11314868927001953 -0.2839455306529999 -0.4681234061717987 0.8836328983306885 -0.0 1.0208572149276733 0.48733770847320557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 -0.2839455306529999 -0.42313912510871887 0.9060335159301758 -0.0 1.023262858390808 0.48467862606048584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 0.21605446934700012 -0.42313912510871887 0.9060335159301758 -0.0 0.5550726652145386 0.2907138466835022 0 1.0 0 0.0 0 0.0 0 0.0\n1.779334306716919 -0.19235184788703918 -0.2839455306529999 6.103701889514923e-05 -1.0 -0.0 0.9773244857788086 0.4794541597366333 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 -0.2839455306529999 0.028839990496635437 -0.99957275390625 -0.0 0.9730034470558167 0.4794282913208008 0 1.0 0 0.0 0 0.0 0 0.0\n1.7865102291107178 -0.19224967062473297 0.21605445444583893 0.028809472918510437 -0.99957275390625 -0.0 0.5019482970237732 0.31621891260147095 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 -0.2839455306529999 0.7831049561500549 0.6218451261520386 -0.0 0.003436654806137085 0.5902106761932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 -0.2839455306529999 0.8167668581008911 0.5769218802452087 -0.0 0.004566401243209839 0.5930731296539307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04645347595214844 -0.09489124268293381 0.21605446934700012 0.8167668581008911 0.5769218802452087 -0.0 0.4660434424877167 0.43486452102661133 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889234304428101 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772617816925049 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n0.05647993087768555 -0.09622661769390106 -0.2839455306529999 -0.6779381632804871 0.7350993156433105 -0.0 0.9379128217697144 0.5852980613708496 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 -0.2839455306529999 -0.6418042778968811 0.7668386101722717 -0.0 0.9398130178451538 0.5825554728507996 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 0.21605446934700012 -0.6418347954750061 0.7668386101722717 -0.0 0.5299412608146667 0.42932629585266113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 -0.2839455306529999 0.3327127993106842 0.9429914355278015 -0.0 1.0337873697280884 0.47707217931747437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 -0.2839455306529999 0.41840875148773193 0.9082308411598206 -0.0 1.0374038219451904 0.4792447090148926 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1023786067962646 -0.10790447145700455 0.21605446934700012 0.41840875148773193 0.9082308411598206 -0.0 0.537212610244751 0.28437894582748413 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.9282204508781433 -0.3719290792942047 -0.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 -0.2839455306529999 0.9363078474998474 -0.35114598274230957 -0.0 0.895880401134491 0.4805034399032593 0 1.0 0 0.0 0 0.0 0 0.0\n1.1940457820892334 -0.08201909065246582 0.21605446934700012 0.9363078474998474 -0.35114598274230957 -0.0 0.5900315642356873 0.3451066017150879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 -0.2839455306529999 0.4827722907066345 0.8757286071777344 -0.0 0.06009626388549805 0.4786478877067566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 -0.2839455306529999 0.5419476628303528 0.8403881788253784 -0.0 0.06193813681602478 0.4803890585899353 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5343255996704102 -0.11452784389257431 0.21605446934700012 0.5419476628303528 0.8403881788253784 -0.0 0.5060164332389832 0.2883031964302063 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.978659987449646 0.7900841236114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889234304428101 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n1.4150612354278564 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.4844118356704712 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0435030460357666 -0.10957673192024231 -0.2839455306529999 -0.3751335144042969 0.9269387125968933 -0.0 1.0028687715530396 0.48250114917755127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 -0.2839455306529999 -0.3003937005996704 0.9537949562072754 -0.0 1.005732536315918 0.48008131980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 0.21605446934700012 -0.3003937005996704 0.9537949562072754 -0.0 0.5774003267288208 0.2897791862487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.089745283126831 -0.08252502232789993 -0.2839455306529999 -0.9068269729614258 0.4214606285095215 -0.0 0.9483804702758789 0.47953569889068604 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 -0.2839455306529999 -0.886410117149353 0.46284371614456177 -0.0 0.9495965242385864 0.47543054819107056 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 0.21605446934700012 -0.886410117149353 0.46284371614456177 -0.0 0.5299165844917297 0.3165135383605957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689236879348755 -0.1152162104845047 -0.2839455306529999 -0.42313912510871887 0.9060335159301758 -0.0 1.023262858390808 0.48467862606048584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 -0.37565234303474426 0.9267250299453735 -0.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 0.21605446934700012 -0.37565234303474426 0.9267250299453735 -0.0 0.5520947575569153 0.2880534529685974 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.978659987449646 0.7900841236114502 0 1.0 0 0.0 0 0.0 0 0.0\n1.4275152683258057 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.4912264943122864 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 -0.2839455306529999 0.7468489408493042 0.6649677753448486 -0.0 0.0022296011447906494 0.5874682068824768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 -0.2839455306529999 0.7831049561500549 0.6218451261520386 -0.0 0.003436654806137085 0.5902106761932373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04474234580993652 -0.0971752479672432 0.21605446934700012 0.7831049561500549 0.6218451261520386 -0.0 0.46706393361091614 0.4318809509277344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4019849300384521 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996871948242188 0.7901116609573364 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 1.0098533630371094 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 1.4704526662826538 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n0.05359029769897461 -0.0987635925412178 -0.2839455306529999 -0.6418042778968811 0.7668386101722717 -0.0 0.9398130178451538 0.5825554728507996 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 -0.6056703329086304 0.7957090735435486 -0.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 0.21605446934700012 -0.6056703329086304 0.7957090735435486 -0.0 0.5281510353088379 0.42618632316589355 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 -0.2839455306529999 0.2460707426071167 0.9692373275756836 -0.0 1.030053973197937 0.47553038597106934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 -0.2839455306529999 0.3327127993106842 0.9429914355278015 -0.0 1.0337873697280884 0.47707217931747437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0964387655258179 -0.11031252890825272 0.21605446934700012 0.3327127993106842 0.9429914355278015 -0.0 0.5418664813041687 0.2822644114494324 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 -0.2839455306529999 0.7780693769454956 0.6281319856643677 -0.0 0.01784294843673706 0.4736138582229614 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 -0.2839455306529999 0.8213446736335754 0.5703604221343994 -0.0 0.019856750965118408 0.47872352600097656 0 1.0 0 0.0 0 0.0 0 0.0\n0.9695467948913574 -0.08579900860786438 0.21605446934700012 0.8213446736335754 0.5703604221343994 -0.0 0.446250319480896 0.3190198540687561 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.9928891658782959 0.1188085600733757 -0.0 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 -0.2839455306529999 0.9950864911079407 0.09869685769081116 -0.0 0.9483753442764282 0.49630945920944214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3274954557418823 -0.11564431339502335 0.21605446934700012 0.9950864911079407 0.09869685769081116 -0.0 0.6419074535369873 0.33454930782318115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0485308170318604 -0.11138277500867844 -0.2839455306529999 -0.3003937005996704 0.9537949562072754 -0.0 1.005732536315918 0.48008131980895996 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 -0.2839455306529999 -0.22412793338298798 0.9745475649833679 -0.0 1.0086880922317505 0.47808516025543213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 0.21605446934700012 -0.22412793338298798 0.9745475649833679 -0.0 0.5738626718521118 0.28699201345443726 0 1.0 0 0.0 0 0.0 0 0.0\n1.087920904159546 -0.08623196929693222 -0.2839455306529999 -0.886410117149353 0.46284371614456177 -0.0 0.9495965242385864 0.47543054819107056 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 -0.2839455306529999 -0.8624531030654907 0.5060579180717468 -0.0 0.9508596658706665 0.4715844988822937 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 0.21605446934700012 -0.8624531030654907 0.5060579180717468 -0.0 0.5287265181541443 0.3123684525489807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 -0.2839455306529999 0.4213385283946991 0.9068880081176758 -0.0 0.058200687170028687 0.47714662551879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 -0.2839455306529999 0.4827722907066345 0.8757286071777344 -0.0 0.06009626388549805 0.4786478877067566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5313483476638794 -0.11630591750144958 0.21605446934700012 0.4827722907066345 0.8757286071777344 -0.0 0.5082241296768188 0.2861729860305786 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.968928337097168 0.7887187600135803 0 1.0 0 0.0 0 0.0 0 0.0\n1.4394242763519287 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.49773043394088745 0.625482439994812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.7084261775016785 0.7057710289955139 -0.0 0.0009450018405914307 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 -0.2839455306529999 0.7468489408493042 0.6649677753448486 -0.0 0.0022296011447906494 0.5874682068824768 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0429072380065918 -0.09935709089040756 0.21605446934700012 0.7468489408493042 0.6649372577667236 -0.0 0.46817395091056824 0.4290156364440918 0 1.0 0 0.0 0 0.0 0 0.0\n1.0859894752502441 -0.08972486853599548 -0.2839455306529999 -0.8624531030654907 0.5060579180717468 -0.0 0.9508596658706665 0.4715844988822937 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 -0.8345591425895691 0.5508896112442017 -0.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 0.21605446934700012 -0.8345591425895691 0.5508896112442017 -0.0 0.527442216873169 0.30847179889678955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4731050729751587 -0.1170404925942421 -0.2839455306529999 -0.37565234303474426 0.9267250299453735 -0.0 1.0256896018981934 0.48229867219924927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 -0.2839455306529999 -0.3258461356163025 0.9454023838043213 -0.0 1.0281380414962769 0.4801962971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 0.21605446934700012 -0.3258461356163025 0.9454023838043213 -0.0 0.5490454435348511 0.2857193946838379 0 1.0 0 0.0 0 0.0 0 0.0\n1.3894922733306885 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 0.00985342264175415 0.7886281609535217 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019346296787261963 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.4639950394630432 0.6246772408485413 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15343952178955078 -0.10089192539453506 -0.2839455306529999 -0.9809259176254272 -0.19437238574028015 -0.0 0.06731992959976196 0.5781137943267822 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 -0.9728385210037231 -0.23145237565040588 -0.0 0.06625154614448547 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 0.21605446934700012 -0.9728385210037231 -0.23145237565040588 -0.0 0.4040839374065399 0.4313696026802063 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.16067995131015778 0.9869990944862366 -0.0 1.026201844215393 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 -0.2839455306529999 0.2460707426071167 0.9692373275756836 -0.0 1.030053973197937 0.47553038597106934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0902361869812012 -0.11218546330928802 0.21605446934700012 0.2460707426071167 0.9692373275756836 -0.0 0.5467023253440857 0.2809107303619385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2278786897659302 -0.11230587214231491 -0.2839455306529999 -0.8745384216308594 -0.4849391281604767 -0.0 0.10593611001968384 0.467909574508667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 -0.8377330899238586 -0.5460371971130371 -0.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 0.21605446934700012 -0.8377330899238586 -0.5460371971130371 -0.0 0.45306360721588135 0.28299450874328613 0 1.0 0 0.0 0 0.0 0 0.0\n0.05052542686462402 -0.10120813548564911 -0.2839455306529999 -0.6056703329086304 0.7957090735435486 -0.0 0.9418185949325562 0.5799161791801453 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 -0.2839455306529999 -0.5684072375297546 0.8227179646492004 -0.0 0.9439307451248169 0.5773794651031494 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 0.21605446934700012 -0.5684072375297546 0.8227179646492004 -0.0 0.5262308716773987 0.42314088344573975 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.7320474982261658 0.6812036633491516 -0.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 -0.2839455306529999 0.7780693769454956 0.6281319856643677 -0.0 0.01784294843673706 0.4736138582229614 0 1.0 0 0.0 0 0.0 0 0.0\n0.9728889465332031 -0.09026120603084564 0.21605446934700012 0.7780693769454956 0.6281319856643677 -0.0 0.4482648968696594 0.3134663701057434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.3585619628429413 0.9334696531295776 -0.0 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 -0.2839455306529999 0.4213385283946991 0.9068880081176758 -0.0 0.058200687170028687 0.47714662551879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5282543897628784 -0.11787480115890503 0.21605446934700012 0.4213385283946991 0.9068880081176758 -0.0 0.5105367302894592 0.2842988967895508 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597978591918945 0.7865923643112183 0 1.0 0 0.0 0 0.0 0 0.0\n1.4507882595062256 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039108395576477 0.6241855025291443 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0536996126174927 -0.11278747767210007 -0.2839455306529999 -0.22412793338298798 0.9745475649833679 -0.0 1.0086880922317505 0.47808516025543213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 -0.2839455306529999 -0.14783166348934174 0.9889827966690063 -0.0 1.0117387771606445 0.47651296854019165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 0.21605446934700012 -0.14783166348934174 0.9889827966690063 -0.0 0.5701271891593933 0.28467416763305664 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4773203134536743 -0.11862154304981232 -0.2839455306529999 -0.3258461356163025 0.9454023838043213 -0.0 1.0281380414962769 0.4801962971687317 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 -0.2839455306529999 -0.27402570843696594 0.9616992473602295 -0.0 1.030609130859375 0.47836989164352417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 0.21605446934700012 -0.27402570843696594 0.9616992473602295 -0.0 0.5459287166595459 0.2837129235267639 0 1.0 0 0.0 0 0.0 0 0.0\n1.3775832653045654 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019346296787261963 0.7862545847892761 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02812016010284424 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.4578937888145447 0.6229137778282166 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.9102755784988403 -0.4139530658721924 -0.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 -0.2839455306529999 0.9282204508781433 -0.3719290792942047 -0.0 0.8979910612106323 0.4719502925872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.1907413005828857 -0.09083038568496704 0.21605446934700012 0.9282204508781433 -0.3719290792942047 -0.0 0.5891975164413452 0.3356865644454956 0 1.0 0 0.0 0 0.0 0 0.0\n0.8681845664978027 -0.09213779121637344 -0.2839455306529999 -0.9248634576797485 -0.3802911341190338 -0.0 0.07195284962654114 0.4773102402687073 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 -0.9013641476631165 -0.43299660086631775 -0.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 0.21605446934700012 -0.9013641476631165 -0.43299660086631775 -0.0 0.38795796036720276 0.32857829332351685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6506456136703491 -0.11920773983001709 -0.2839455306529999 -0.9472029805183411 -0.32053589820861816 -0.0 0.12096211314201355 0.47054606676101685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 -0.921933650970459 -0.3872798979282379 -0.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 0.21605446934700012 -0.921933650970459 -0.3872798979282379 -0.0 0.4339945912361145 0.2996535301208496 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 -0.2839455306529999 0.07840204983949661 0.9969176054000854 -0.0 1.0222300291061401 0.4743214249610901 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 -0.2839455306529999 0.16067995131015778 0.9869990944862366 -0.0 1.026201844215393 0.4746147394180298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0837708711624146 -0.11352327466011047 0.21605446934700012 0.16067995131015778 0.9869990944862366 -0.0 0.5516993403434753 0.28032606840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513123035430908 0.7838001847267151 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097600817680359 0.6224872469902039 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 -0.2839455306529999 0.6682027578353882 0.7439497113227844 -0.0 0.999582827091217 0.5823426246643066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 -0.2839455306529999 0.7084261775016785 0.7057710289955139 -0.0 1.000944972038269 0.5848455429077148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040947914123535156 -0.10143677890300751 0.21605446934700012 0.7084261775016785 0.7057710289955139 -0.0 1.469374179840088 0.42627018690109253 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590094327926636 -0.1137908324599266 -0.2839455306529999 -0.14783166348934174 0.9889827966690063 -0.0 1.0117387771606445 0.47651296854019165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 -0.2839455306529999 -0.07284767925739288 0.9973143935203552 -0.0 1.0148876905441284 0.4753662943840027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 0.21605446934700012 -0.07284767925739288 0.9973143935203552 -0.0 0.5661978721618652 0.28283756971359253 0 1.0 0 0.0 0 0.0 0 0.0\n1.0839512348175049 -0.09300372004508972 -0.2839455306529999 -0.8345591425895691 0.5508896112442017 -0.0 0.9521704912185669 0.46799367666244507 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 -0.2839455306529999 -0.8022705912590027 0.5969420671463013 -0.0 0.9535298347473145 0.46465450525283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 0.21605446934700012 -0.8022705912590027 0.5969420671463013 -0.0 0.5260624289512634 0.3048214912414551 0 1.0 0 0.0 0 0.0 0 0.0\n1.3662583827972412 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02812016010284424 0.7831013202667236 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.03615725040435791 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214810967445374 0.6206684112548828 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 -0.2839455306529999 0.2953581213951111 0.9553819298744202 -0.0 0.05424368381500244 0.47486114501953125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 -0.2839455306529999 0.3585619628429413 0.9334696531295776 -0.0 0.056250184774398804 0.47588449716567993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250436067581177 -0.11923450231552124 0.21605446934700012 0.3585619628429413 0.9334696531295776 -0.0 0.5129532814025879 0.28268343210220337 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 -0.2839455306529999 0.6266365647315979 0.7792901396751404 -0.0 0.9981430768966675 0.5799591541290283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 -0.2839455306529999 0.6682027578353882 0.7439497113227844 -0.0 0.999582827091217 0.5823426246643066 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0388646125793457 -0.10341430455446243 0.21605446934700012 0.6682027578353882 0.7439497113227844 -0.0 1.4706650972366333 0.42364639043807983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4815696477890015 -0.11995935440063477 -0.2839455306529999 -0.27402570843696594 0.9616992473602295 -0.0 1.030609130859375 0.47836989164352417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 -0.22058779001235962 0.9753410220146179 -0.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 0.21605446934700012 -0.22058779001235962 0.9753410220146179 -0.0 0.5427493453025818 0.28203511238098145 0 1.0 0 0.0 0 0.0 0 0.0\n0.04728555679321289 -0.10356024652719498 -0.2839455306529999 -0.5684072375297546 0.8227179646492004 -0.0 0.9439307451248169 0.5773794651031494 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 -0.2839455306529999 -0.5277870893478394 0.8493301272392273 -0.0 0.9461168050765991 0.5750011205673218 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 0.21605446934700012 -0.5277870893478394 0.8493301272392273 -0.0 0.5242090225219727 0.42025721073150635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.00119022186845541 0.999969482421875 -0.0 1.018137812614441 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 -0.2839455306529999 0.07840204983949661 0.9969176054000854 -0.0 1.0222300291061401 0.4743214249610901 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0770429372787476 -0.11432596296072006 0.21605446934700012 0.07840204983949661 0.9969176054000854 -0.0 0.5568340420722961 0.28051841259002686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 -0.2839455306529999 0.6852015852928162 0.7283242344856262 -0.0 0.013366401195526123 0.464388370513916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 -0.2839455306529999 0.7320474982261658 0.6812036633491516 -0.0 0.015665769577026367 0.4688234329223633 0 1.0 0 0.0 0 0.0 0 0.0\n0.9765326976776123 -0.09445341676473618 0.21605446934700012 0.7320474982261658 0.6812036633491516 -0.0 0.45053744316101074 0.3082153797149658 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434927105903625 0.7804336547851562 0 1.0 0 0.0 0 0.0 0 0.0\n1.471881628036499 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152754187583923 0.6204149723052979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0644603967666626 -0.11439284682273865 -0.2839455306529999 -0.07284767925739288 0.9973143935203552 -0.0 1.0148876905441284 0.4753662943840027 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 -0.2839455306529999 0.00119022186845541 0.999969482421875 -0.0 1.018137812614441 0.4746472239494324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0700523853302002 -0.1145935207605362 0.21605446934700012 0.00119022186845541 0.999969482421875 -0.0 0.5620806217193604 0.2814953923225403 0 1.0 0 0.0 0 0.0 0 0.0\n1.081805944442749 -0.09606851637363434 -0.2839455306529999 -0.8022705912590027 0.5969420671463013 -0.0 0.9535298347473145 0.46465450525283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 -0.2839455306529999 -0.765282154083252 0.6436659097671509 -0.0 0.954938530921936 0.4615635275840759 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 0.21605446934700012 -0.765282154083252 0.6436659097671509 -0.0 0.5245863199234009 0.30141550302505493 0 1.0 0 0.0 0 0.0 0 0.0\n1.3555166721343994 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.03615725040435791 0.7792714238166809 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345959424972534 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675424695014954 0.6179689168930054 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 -0.2839455306529999 0.23261207342147827 0.9725638628005981 -0.0 0.052179962396621704 0.4740765690803528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 -0.2839455306529999 0.2953581213951111 0.9553819298744202 -0.0 0.05424368381500244 0.47486114501953125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5217162370681763 -0.12038502097129822 0.21605446934700012 0.2953581213951111 0.9553819298744202 -0.0 0.5154720544815063 0.28133004903793335 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 -0.2839455306529999 0.5824762582778931 0.8127994537353516 -0.0 0.9966254830360413 0.5776949524879456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 -0.2839455306529999 0.6266365647315979 0.7792901396751404 -0.0 0.9981430768966675 0.5799591541290283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03665733337402344 -0.10528966784477234 0.21605446934700012 0.6266365647315979 0.7792901396751404 -0.0 1.472046971321106 0.421146035194397 0 1.0 0 0.0 0 0.0 0 0.0\n0.043921709060668945 -0.1057700365781784 -0.2839455306529999 -0.5277870893478394 0.8493301272392273 -0.0 0.9461168050765991 0.5750011205673218 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 -0.2839455306529999 -0.4839625358581543 0.8750572204589844 -0.0 0.9483439922332764 0.5728389024734497 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 0.21605446934700012 -0.4839625358581543 0.8750572204589844 -0.0 0.5221152901649475 0.4176033139228821 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2218475341796875 -0.1223333552479744 -0.2839455306529999 -0.8377330899238586 -0.5460371971130371 -0.0 0.10203734040260315 0.4583163857460022 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 -0.7957395911216736 -0.6056092977523804 -0.0 0.09788185358047485 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 0.21605446934700012 -0.7957395911216736 -0.6056092977523804 -0.0 0.4565242528915405 0.27205127477645874 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 -0.2839455306529999 0.635425865650177 0.7721487879753113 -0.0 0.010986119508743286 0.46034443378448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 -0.2839455306529999 0.6852015852928162 0.7283242344856262 -0.0 0.013366401195526123 0.464388370513916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9804050922393799 -0.09834157675504684 0.21605446934700012 0.6852015852928162 0.7283242344856262 -0.0 0.45302438735961914 0.30331945419311523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.9898678660392761 0.14185002446174622 -0.0 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 -0.2839455306529999 0.9928891658782959 0.1188085600733757 -0.0 0.9483891725540161 0.4913962483406067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3269373178482056 -0.12077785283327103 0.21605446934700012 0.9928891658782959 0.1188085600733757 -0.0 0.6428943872451782 0.32994168996810913 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363420009613037 0.7765767574310303 0 1.0 0 0.0 0 0.0 0 0.0\n1.4816114902496338 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204575657844543 0.6179937124252319 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795536041259766 -0.09891926497220993 -0.2839455306529999 -0.765282154083252 0.6436659097671509 -0.0 0.954938530921936 0.4615635275840759 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 -0.7233496904373169 0.6904507875442505 -0.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 0.21605446934700012 -0.7233496904373169 0.6904507875442505 -0.0 0.5230129957199097 0.2982526421546936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858530759811401 -0.12105392664670944 -0.2839455306529999 -0.22058779001235962 0.9753410220146179 -0.0 1.0331037044525146 0.4768180847167969 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 -0.2839455306529999 -0.1659901738166809 0.9861140847206116 -0.0 1.0356225967407227 0.47553956508636475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 0.21605446934700012 -0.1659596562385559 0.9861140847206116 -0.0 0.5395126342773438 0.2806873917579651 0 1.0 0 0.0 0 0.0 0 0.0\n1.3453590869903564 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345959424972534 0.7748583555221558 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.05004608631134033 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.44170477986335754 0.6148389577865601 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.5338907837867737 0.8455153107643127 -0.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 -0.2839455306529999 0.5824762582778931 0.8127994537353516 -0.0 0.9966254830360413 0.5776949524879456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.10706286877393723 0.21605446934700012 0.5824762582778931 0.8128299713134766 -0.0 1.473520278930664 0.418770968914032 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.7927793264389038 -0.6094546318054199 -0.0 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 0.8035218119621277 -0.5952635407447815 -0.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 0.21605446934700012 0.8035218119621277 -0.5952635407447815 -0.0 0.6224963665008545 0.2940528988838196 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1520531177520752 -0.10727692395448685 -0.2839455306529999 -0.9728385210037231 -0.23145237565040588 -0.0 0.06625154614448547 0.5711506009101868 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 -0.9624622464179993 -0.2713705897331238 -0.0 0.06511396169662476 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 0.21605446934700012 -0.9624622464179993 -0.2713705897331238 -0.0 0.4043794870376587 0.424402117729187 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.12930455803871155 -0.2839455306529999 -0.999969482421875 0.0 -0.0 0.9702714085578918 0.46846210956573486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 -0.2839455306529999 -1.0 0.0 -0.0 0.9718600511550903 0.41916149854660034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.6307469606399536 0.2462201714515686 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.8894924521446228 -0.45689260959625244 -0.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 -0.2839455306529999 0.9102755784988403 -0.4139530658721924 -0.0 0.9002060294151306 0.4637722969055176 0 1.0 0 0.0 0 0.0 0 0.0\n1.1871328353881836 -0.09928411990404129 0.21605446934700012 0.9102755784988403 -0.4139530658721924 -0.0 0.5881662368774414 0.3265685439109802 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 -0.2839455306529999 0.17114779353141785 0.9852290153503418 -0.0 0.050057947635650635 0.47353076934814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 -0.2839455306529999 0.23261207342147827 0.9725638628005981 -0.0 0.052179962396621704 0.4740765690803528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5182719230651855 -0.12132634967565536 0.21605446934700012 0.23261207342147827 0.9725638628005981 -0.0 0.5180913805961609 0.28024226427078247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239938855171204 0.767682671546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.9298497438430786 0.7723049521446228 0 1.0 0 0.0 0 0.0 0 0.0\n1.4907958507537842 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253098607063293 0.6152458190917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9817862510681152 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9718600511550903 0.41916149854660034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.6724605560302734 0.28865742683410645 0 1.0 0 0.0 0 0.0 0 0.0\n1.0771942138671875 -0.1015559658408165 -0.2839455306529999 -0.7233496904373169 0.6904507875442505 -0.0 0.9563973546028137 0.4587175250053406 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 -0.2839455306529999 -0.6763817071914673 0.7365337014198303 -0.0 0.9579070806503296 0.4561135172843933 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 0.21605446934700012 -0.6763817071914673 0.7365337014198303 -0.0 0.5213418006896973 0.29533177614212036 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4901705980300903 -0.12190525233745575 -0.2839455306529999 -0.1659901738166809 0.9861140847206116 -0.0 1.0356225967407227 0.47553956508636475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 -0.2839455306529999 -0.1106906309723854 0.9938352704048157 -0.0 1.0381664037704468 0.4745330810546875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 0.21605446934700012 -0.1106906309723854 0.9938352704048157 -0.0 0.5362241268157959 0.2796708345413208 0 1.0 0 0.0 0 0.0 0 0.0\n0.04048466682434082 -0.10778769105672836 -0.2839455306529999 -0.4839625358581543 0.8750572204589844 -0.0 0.9483439922332764 0.5728389024734497 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 -0.2839455306529999 -0.4382458031177521 0.8988311290740967 -0.0 0.9506131410598755 0.5708950757980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 0.21605446934700012 -0.4382458031177521 0.8988311290740967 -0.0 0.5199500918388367 0.4151836633682251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.215181589126587 -0.13179409503936768 -0.2839455306529999 -0.7957395911216736 -0.6056092977523804 -0.0 0.09788185358047485 0.44936132431030273 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 -0.7514267563819885 -0.6597796678543091 -0.0 0.0934579074382782 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 0.21605446934700012 -0.7514267563819885 -0.6597796678543091 -0.0 0.46060603857040405 0.26163506507873535 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239938855171204 0.767682671546936 0 1.0 0 0.0 0 0.0 0 0.0\n1.4994356632232666 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298388004302979 0.6121903657913208 0 1.0 0 0.0 0 0.0 0 0.0\n1.335785150527954 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.05004608631134033 0.7699426412582397 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594542622566223 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.4369904398918152 0.6112979650497437 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.5808892846107483 0.8139591813087463 -0.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 -0.2839455306529999 0.635425865650177 0.7721487879753113 -0.0 0.010986119508743286 0.46034443378448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.9844331741333008 -0.10189163684844971 0.21605446934700012 0.635425865650177 0.7721487879753113 -0.0 0.45567893981933594 0.2988291382789612 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 -0.2839455306529999 0.1116367056965828 0.9937437176704407 -0.0 0.047876596450805664 0.47322434186935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 -0.2839455306529999 0.17114779353141785 0.9852290153503418 -0.0 0.050057947635650635 0.47353076934814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5147109031677246 -0.12205849587917328 0.21605446934700012 0.17114779353141785 0.9852290153503418 -0.0 0.5208086371421814 0.27942436933517456 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 -0.2839455306529999 0.4822840094566345 0.8760032653808594 -0.0 0.9933782815933228 0.5736287832260132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 -0.2839455306529999 0.5338907837867737 0.8455153107643127 -0.0 0.9950354695320129 0.57557612657547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03187894821166992 -0.10871323943138123 0.21605446934700012 0.5338907837867737 0.8455153107643127 -0.0 1.4750800132751465 0.4165498614311218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 -0.2839455306529999 0.7701956033706665 -0.6377758383750916 -0.0 0.9744249582290649 0.45770955085754395 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 -0.2839455306529999 0.7927793264389038 -0.6094546318054199 -0.0 0.9723237752914429 0.46296828985214233 0 1.0 0 0.0 0 0.0 0 0.0\n-0.985637903213501 -0.13450376689434052 0.21605446934700012 0.7927793264389038 -0.6094546318054199 -0.0 0.6210468411445618 0.2876055836677551 0 1.0 0 0.0 0 0.0 0 0.0\n0.8725264072418213 -0.1018965020775795 -0.2839455306529999 -0.9013641476631165 -0.43299660086631775 -0.0 0.06945812702178955 0.4675431251525879 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 -0.8742942810058594 -0.4853358566761017 -0.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 0.21605446934700012 -0.8742942810058594 -0.4853358566761017 -0.0 0.3894132971763611 0.3180522322654724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.494522213935852 -0.12251335382461548 -0.2839455306529999 -0.1106906309723854 0.9938352704048157 -0.0 0.03816637396812439 0.4745330810546875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 -0.2839455306529999 -0.055207982659339905 0.9984435439109802 -0.0 0.04073569178581238 0.4737977385520935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 0.21605446934700012 -0.055207982659339905 0.9984435439109802 -0.0 0.5328900814056396 0.2789868116378784 0 1.0 0 0.0 0 0.0 0 0.0\n0.03697466850280762 -0.10961319506168365 -0.2839455306529999 -0.4382458031177521 0.8988311290740967 -0.0 0.9506131410598755 0.5708950757980347 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 -0.2839455306529999 -0.3908810615539551 0.9204077124595642 -0.0 0.9529252052307129 0.569171667098999 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 0.21605446934700012 -0.3908810615539551 0.9204077124595642 -0.0 0.5177140831947327 0.41300249099731445 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9030731916427612 -0.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187467098236084 0.7627642154693604 0 1.0 0 0.0 0 0.0 0 0.0\n1.507530927658081 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340521335601807 0.6088429689407349 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.7458113431930542 -0.6661275029182434 -0.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 -0.2839455306529999 0.7701956033706665 -0.6377758383750916 -0.0 0.9744249582290649 0.45770955085754395 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9896038770675659 -0.13947677612304688 0.21605446934700012 0.7701956033706665 -0.6377758383750916 -0.0 0.619458019733429 0.2813679575920105 0 1.0 0 0.0 0 0.0 0 0.0\n1.0747277736663818 -0.10397861897945404 -0.2839455306529999 -0.6763817071914673 0.7365337014198303 -0.0 0.9579070806503296 0.4561135172843933 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 -0.2839455306529999 -0.6264839768409729 0.7794122099876404 -0.0 0.9594686031341553 0.4537491202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 0.21605446934700012 -0.6264839768409729 0.7794122099876404 -0.0 0.5195723176002502 0.292652428150177 0 1.0 0 0.0 0 0.0 0 0.0\n1.3267953395843506 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594542622566223 0.7645923495292664 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.06119370460510254 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.43259984254837036 0.6073609590530396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2078808546066284 -0.14068809151649475 -0.2839455306529999 -0.7514267563819885 -0.6597796678543091 -0.0 0.0934579074382782 0.44103407859802246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 -0.7076326608657837 -0.7065340280532837 -0.0 0.08885562419891357 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 0.21605446934700012 -0.7076326608657837 -0.7065340280532837 -0.0 0.4652387797832489 0.2518855929374695 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 -0.2839455306529999 0.05456709489226341 0.9985045790672302 -0.0 0.045634716749191284 0.47315794229507446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 -0.2839455306529999 0.1116367056965828 0.9937437176704407 -0.0 0.047876596450805664 0.47322434186935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5110331773757935 -0.12258145213127136 0.21605446934700012 0.1116367056965828 0.9937437176704407 -0.0 0.5236209630966187 0.27888089418411255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 -0.2839455306529999 0.4297921657562256 0.9028900861740112 -0.0 0.9916535019874573 0.5718526840209961 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 -0.2839455306529999 0.4822840094566345 0.8760032653808594 -0.0 0.9933782815933228 0.5736287832260132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.029325008392333984 -0.11022009700536728 0.21605446934700012 0.4822534918785095 0.8760032653808594 -0.0 1.476720929145813 0.4145115613937378 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4989076852798462 -0.12287820875644684 -0.2839455306529999 -0.055207982659339905 0.9984435439109802 -0.0 0.04073569178581238 0.4737977385520935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 -0.0003662221133708954 0.999969482421875 -0.0 0.04333144426345825 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 0.21605446934700012 -0.0003662221133708954 0.999969482421875 -0.0 0.5295165181159973 0.2786363959312439 0 1.0 0 0.0 0 0.0 0 0.0\n0.033391714096069336 -0.11124654114246368 -0.2839455306529999 -0.3908810615539551 0.9204077124595642 -0.0 0.9529252052307129 0.569171667098999 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 -0.2839455306529999 -0.3422955870628357 0.939573347568512 -0.0 0.9552810788154602 0.567670464515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 0.21605446934700012 -0.3422650694847107 0.939573347568512 -0.0 0.5154080986976624 0.4110640287399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 -0.2839455306529999 0.522049605846405 0.8529008030891418 -0.0 0.0059764087200164795 0.45341217517852783 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 -0.2839455306529999 0.5808892846107483 0.8139591813087463 -0.0 0.008523315191268921 0.4566870927810669 0 1.0 0 0.0 0 0.0 0 0.0\n0.988616943359375 -0.10510359704494476 0.21605446934700012 0.5808892846107483 0.8139591813087463 -0.0 0.4585016369819641 0.29474544525146484 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.4920499324798584 0.8705404996871948 -0.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9030731916427612 -0.0 0.914077639579773 0.7575942277908325 0 1.0 0 0.0 0 0.0 0 0.0\n1.5150806903839111 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9030731916427612 -0.0 0.5379581451416016 0.6052162051200867 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 -0.2839455306529999 0.7195959091186523 -0.69435715675354 -0.0 0.9787807464599609 0.447887122631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 -0.2839455306529999 0.7458113431930542 -0.6661275029182434 -0.0 0.9765768051147461 0.45268338918685913 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9936841726303101 -0.14422355592250824 0.21605446934700012 0.7458113431930542 -0.6661275029182434 -0.0 0.6177242398262024 0.2753394842147827 0 1.0 0 0.0 0 0.0 0 0.0\n1.0721542835235596 -0.10618721693754196 -0.2839455306529999 -0.6264839768409729 0.7794122099876404 -0.0 0.9594686031341553 0.4537491202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 -0.5766167044639587 0.8169804811477661 -0.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 0.21605446934700012 -0.5766472220420837 0.8169804811477661 -0.0 0.5177067518234253 0.29019415378570557 0 1.0 0 0.0 0 0.0 0 0.0\n1.3183887004852295 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.06119370460510254 0.7588618993759155 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582871079444885 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.42852169275283813 0.6030383110046387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5033273696899414 -0.12299982458353043 -0.2839455306529999 -0.0003662221133708954 0.999969482421875 -0.0 0.04333144426345825 0.47333264350891113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 -0.2839455306529999 0.05456709489226341 0.9985045790672302 -0.0 0.045634716749191284 0.47315794229507446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5072386264801025 -0.12289523333311081 0.21605446934700012 0.05456709489226341 0.9985045790672302 -0.0 0.5265249013900757 0.2786164879798889 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 -0.2839455306529999 0.37705618143081665 0.9261757135391235 -0.0 0.989861011505127 0.5702477097511292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 -0.2839455306529999 0.4297921657562256 0.9028900861740112 -0.0 0.9916535019874573 0.5718526840209961 0 1.0 0 0.0 0 0.0 0 0.0\n-0.026664018630981445 -0.11158344894647598 0.21605446934700012 0.4297921657562256 0.9028900861740112 -0.0 1.478442907333374 0.4126579165458679 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.6915494203567505 -0.7223120927810669 -0.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 -0.2839455306529999 0.7195959091186523 -0.69435715675354 -0.0 0.9787807464599609 0.447887122631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9978787899017334 -0.148744136095047 0.21605446934700012 0.7195959091186523 -0.69435715675354 -0.0 0.6158398389816284 0.26952022314071655 0 1.0 0 0.0 0 0.0 0 0.0\n0.029735803604125977 -0.11268772929906845 -0.2839455306529999 -0.3422955870628357 0.939573347568512 -0.0 0.9552810788154602 0.567670464515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 -0.2839455306529999 -0.2928251028060913 0.9561449289321899 -0.0 0.9576817154884338 0.5663930773735046 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 0.21605446934700012 -0.2927945852279663 0.9561449289321899 -0.0 0.5130330324172974 0.40937238931655884 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2001348733901978 -0.14893993735313416 -0.2839455306529999 -0.7076326608657837 -0.7065340280532837 -0.0 0.08885562419891357 0.4333972930908203 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 -0.6614276766777039 -0.7499618530273438 -0.0 0.08416959643363953 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 0.21605446934700012 -0.6614276766777039 -0.7499618530273438 -0.0 0.4703311324119568 0.24293971061706543 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.8657185435295105 -0.5005035400390625 -0.0 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 -0.2839455306529999 0.8894924521446228 -0.45689260959625244 -0.0 0.9025294780731201 0.45596277713775635 0 1.0 0 0.0 0 0.0 0 0.0\n1.183220386505127 -0.10738029330968857 0.21605446934700012 0.8894924521446228 -0.45689260959625244 -0.0 0.5869276523590088 0.31774646043777466 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 -0.2839455306529999 0.4920499324798584 0.8705404996871948 -0.0 0.9099534153938293 0.7522071599960327 0 1.0 0 0.0 0 0.0 0 0.0\n1.5220859050750732 0.1755431890487671 0.21605448424816132 0.4920499324798584 0.8705404996871948 -0.0 0.5415668487548828 0.6013186573982239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.9856868386268616 0.16852320730686188 -0.0 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 -0.2839455306529999 0.9898678660392761 0.14185002446174622 -0.0 0.9483564496040344 0.4868885278701782 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3263133764266968 -0.12555383145809174 0.21605446934700012 0.9898678660392761 0.14185002446174622 -0.0 0.6438645124435425 0.3257516026496887 0 1.0 0 0.0 0 0.0 0 0.0\n1.3105661869049072 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582871079444885 0.7527941465377808 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988972425460815 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247434735298157 0.5983360409736633 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 -0.2839455306529999 0.4595782458782196 0.8881191611289978 -0.0 0.0033438801765441895 0.4505161643028259 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 -0.2839455306529999 0.522049605846405 0.8529008030891418 -0.0 0.0059764087200164795 0.45341217517852783 0 1.0 0 0.0 0 0.0 0 0.0\n0.9929563999176025 -0.10797744989395142 0.21605446934700012 0.522049605846405 0.8529008030891418 -0.0 0.46149224042892456 0.29107022285461426 0 1.0 0 0.0 0 0.0 0 0.0\n-1.648117184638977 -0.12588948011398315 -0.2839455306529999 -0.921933650970459 -0.3872798979282379 -0.0 0.11914879083633423 0.4643626809120178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 -0.8916593194007874 -0.4526505470275879 -0.0 0.11716088652610779 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 0.21605446934700012 -0.8916593194007874 -0.4526505470275879 -0.0 0.43501198291778564 0.29271793365478516 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.3246864080429077 0.9457991123199463 -0.0 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 -0.2839455306529999 0.37705618143081665 0.9261757135391235 -0.0 0.989861011505127 0.5702477097511292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.023895978927612305 -0.11280328780412674 0.21605446934700012 0.37705618143081665 0.9261757135391235 -0.0 1.4802451133728027 0.4109910726547241 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.6617023348808289 -0.7497482299804688 -0.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 -0.2839455306529999 0.6915494203567505 -0.7223120927810669 -0.0 0.9810384511947632 0.44331806898117065 0 1.0 0 0.0 0 0.0 0 0.0\n-1.002187728881836 -0.15303850173950195 0.21605446934700012 0.6915494203567505 -0.7223120927810669 -0.0 0.6137987971305847 0.26391035318374634 0 1.0 0 0.0 0 0.0 0 0.0\n1.06947660446167 -0.10820123553276062 -0.2839455306529999 -0.5766167044639587 0.8169804811477661 -0.0 0.9610819220542908 0.45160144567489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 -0.2839455306529999 -0.5260170102119446 0.8504592776298523 -0.0 0.9627474546432495 0.44964832067489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 0.21605446934700012 -0.5260170102119446 0.8504592776298523 -0.0 0.5157464742660522 0.2879374027252197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1504817008972168 -0.11334571242332458 -0.2839455306529999 -0.9624622464179993 -0.2713705897331238 -0.0 0.06511396169662476 0.564522385597229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 -0.9493392705917358 -0.31418806314468384 -0.0 0.0639059841632843 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 0.21605446934700012 -0.9493392705917358 -0.31418806314468384 -0.0 0.4047989249229431 0.4177280068397522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1921335458755493 -0.15647423267364502 -0.2839455306529999 -0.6614276766777039 -0.7499618530273438 -0.0 0.08416959643363953 0.4265134930610657 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 -0.6098818778991699 -0.7924436330795288 -0.0 0.07939448952674866 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 0.21605446934700012 -0.6098818778991699 -0.7924436330795288 -0.0 0.4759005308151245 0.23481398820877075 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.6066164374351501 0.7949766516685486 -0.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063416719436646 0.7466293573379517 0 1.0 0 0.0 0 0.0 0 0.0\n1.5285465717315674 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448878407478333 0.597155749797821 0 1.0 0 0.0 0 0.0 0 0.0\n1.0666964054107666 -0.11004011332988739 -0.2839455306529999 -0.5260170102119446 0.8504592776298523 -0.0 0.9627474546432495 0.44964832067489624 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 -0.2839455306529999 -0.47331157326698303 0.8808557391166687 -0.0 0.964465856552124 0.44788867235183716 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 0.21605446934700012 -0.47331157326698303 0.8808557391166687 -0.0 0.5136916637420654 0.28588324785232544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.9803460836410522 0.19721060991287231 -0.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 -0.2839455306529999 0.9856868386268616 0.16852320730686188 -0.0 0.94827800989151 0.48277735710144043 0 1.0 0 0.0 0 0.0 0 0.0\n-1.325623869895935 -0.12997224926948547 0.21605446934700012 0.9856868386268616 0.16852320730686188 -0.0 0.6448163986206055 0.32196974754333496 0 1.0 0 0.0 0 0.0 0 0.0\n1.3033273220062256 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988972425460815 0.7464204430580139 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341435551643372 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212533235549927 0.593255877494812 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6451290845870972 -0.13234259188175201 -0.2839455306529999 -0.8916593194007874 -0.4526505470275879 -0.0 0.11716088652610779 0.45843058824539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 -0.8568071722984314 -0.5155797004699707 -0.0 0.11499348282814026 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 0.21605446934700012 -0.8568071722984314 -0.5155797004699707 -0.0 0.4363168179988861 0.2858927845954895 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 -0.2839455306529999 0.27314066886901855 0.9619433879852295 -0.0 0.9860718846321106 0.5675491690635681 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 -0.2839455306529999 0.3246864080429077 0.9457991123199463 -0.0 0.9880005121231079 0.5688133239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.021020889282226562 -0.11387961357831955 0.21605446934700012 0.3246864080429077 0.9457991123199463 -0.0 1.4821268320083618 0.409512996673584 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 -0.2839455306529999 0.6300546526908875 -0.7765129804611206 -0.0 0.9857213497161865 0.4348520040512085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 -0.2839455306529999 0.6617023348808289 -0.7497482299804688 -0.0 0.983351469039917 0.4389737844467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0066109895706177 -0.1571066677570343 0.21605446934700012 0.6617023348808289 -0.7497482299804688 -0.0 0.6115951538085938 0.25851088762283325 0 1.0 0 0.0 0 0.0 0 0.0\n0.02600693702697754 -0.11393675953149796 -0.2839455306529999 -0.2928251028060913 0.9561449289321899 -0.0 0.9576817154884338 0.5663930773735046 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 -0.2839455306529999 -0.24289681017398834 0.9700308442115784 -0.0 0.9601279497146606 0.5653409957885742 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 0.21605446934700012 -0.24289681017398834 0.9700308442115784 -0.0 0.5105903148651123 0.40793150663375854 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.39429914951324463 0.9189733266830444 -0.0 0.0006244778633117676 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 -0.2839455306529999 0.4595782458782196 0.8881191611289978 -0.0 0.0033438801765441895 0.4505161643028259 0 1.0 0 0.0 0 0.0 0 0.0\n0.9974515438079834 -0.11051320284605026 0.21605446934700012 0.4595782458782196 0.8881191611289978 -0.0 0.46464958786964417 0.2878061532974243 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 -0.2839455306529999 0.6066164374351501 0.7949766516685486 -0.0 0.9031447768211365 0.740845263004303 0 1.0 0 0.0 0 0.0 0 0.0\n1.5345737934112549 0.16726094484329224 0.21605446934700012 0.6066164374351501 0.7949766516685486 -0.0 0.5479841232299805 0.5927216410636902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.5967284440994263 -0.8024231791496277 -0.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 -0.2839455306529999 0.6300546526908875 -0.7765129804611206 -0.0 0.9857213497161865 0.4348520040512085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0111485719680786 -0.16094860434532166 0.21605446934700012 0.6300546526908875 -0.7765129804611206 -0.0 0.6092228889465332 0.25332319736480713 0 1.0 0 0.0 0 0.0 0 0.0\n0.8773789405822754 -0.1112854853272438 -0.2839455306529999 -0.8742942810058594 -0.4853358566761017 -0.0 0.06675374507904053 0.4581591486930847 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 -0.843745231628418 -0.5366985201835632 -0.0 0.06383192539215088 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 0.21605446934700012 -0.843745231628418 -0.5366985201835632 -0.0 0.3912193775177002 0.3077763319015503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 -0.2839455306529999 0.9746391177177429 0.22376170754432678 -0.0 0.947985827922821 0.47552597522735596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 -0.2839455306529999 0.9803460836410522 0.19721060991287231 -0.0 0.9481543302536011 0.47905391454696655 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3248685598373413 -0.13403309881687164 0.21605446934700012 0.9803460836410522 0.19721060991287231 -0.0 0.6457487344741821 0.31858688592910767 0 1.0 0 0.0 0 0.0 0 0.0\n1.2966725826263428 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341435551643372 0.7397623658180237 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.07646352052688599 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.41803431510925293 0.5878973007202148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.183876872062683 -0.16329097747802734 -0.2839455306529999 -0.6098818778991699 -0.7924436330795288 -0.0 0.07939448952674866 0.42037463188171387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 -0.5531174540519714 -0.8330637812614441 -0.0 0.07452532649040222 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 0.21605446934700012 -0.5531174540519714 -0.8330637812614441 -0.0 0.48195916414260864 0.22752833366394043 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 -0.2839455306529999 0.2228461503982544 0.9748222231864929 -0.0 0.9840749502182007 0.5664546489715576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 -0.2839455306529999 0.27314066886901855 0.9619433879852295 -0.0 0.9860718846321106 0.5675491690635681 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01803874969482422 -0.11481243371963501 0.21605446934700012 0.27311015129089355 0.9619739651679993 -0.0 1.484087347984314 0.40822577476501465 0 1.0 0 0.0 0 0.0 0 0.0\n1.0638139247894287 -0.11170385777950287 -0.2839455306529999 -0.47331157326698303 0.8808557391166687 -0.0 0.964465856552124 0.44788867235183716 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 -0.2839455306529999 -0.4191106855869293 0.9079256653785706 -0.0 0.9662376642227173 0.44632160663604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 0.21605446934700012 -0.4191106855869293 0.9078951478004456 -0.0 0.5115428566932678 0.2840333580970764 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.9688100814819336 0.24771873652935028 -0.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 -0.2839455306529999 0.9746391177177429 0.22376170754432678 -0.0 0.947985827922821 0.47552597522735596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3240233659744263 -0.13793829083442688 0.21605446934700012 0.9746086001396179 0.22376170754432678 -0.0 0.6467007398605347 0.3154236078262329 0 1.0 0 0.0 0 0.0 0 0.0\n0.022205114364624023 -0.1149936318397522 -0.2839455306529999 -0.24289681017398834 0.9700308442115784 -0.0 0.9601279497146606 0.5653409957885742 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 -0.2839455306529999 -0.19293801486492157 0.9812005758285522 -0.0 0.9626204967498779 0.5645154714584351 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 0.21605446934700012 -0.19290749728679657 0.9812005758285522 -0.0 0.5080812573432922 0.40674519538879395 0 1.0 0 0.0 0 0.0 0 0.0\n-1.64168119430542 -0.13856706023216248 -0.2839455306529999 -0.8568071722984314 -0.5155797004699707 -0.0 0.11499348282814026 0.45273905992507935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 -0.8179876208305359 -0.575182318687439 -0.0 0.11264124512672424 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 0.21605446934700012 -0.8179876208305359 -0.575182318687439 -0.0 0.4379253089427948 0.27917128801345825 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002732038497925 0.7348307967185974 0 1.0 0 0.0 0 0.0 0 0.0\n1.5402801036834717 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509166121482849 0.5880075693130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 -0.2839455306529999 0.5618457794189453 -0.8272347450256348 -0.0 0.9906381964683533 0.4272674322128296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 -0.2839455306529999 0.5967284440994263 -0.8024231791496277 -0.0 0.9881497621536255 0.4309505224227905 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0158004760742188 -0.1645643413066864 0.21605446934700012 0.5967284440994263 -0.8024231791496277 -0.0 0.6066759824752808 0.24834954738616943 0 1.0 0 0.0 0 0.0 0 0.0\n1.290574312210083 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.07646352052688599 0.7329279184341431 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671346426010132 -0.0 0.07909286022186279 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671346426010132 -0.0 0.4150726795196533 0.582361102104187 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 -0.2839455306529999 0.3271889388561249 0.9449446201324463 -0.0 0.9978166818618774 0.4458499550819397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 -0.2839455306529999 0.39429914951324463 0.9189733266830444 -0.0 1.000624418258667 0.4479961395263672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0021021366119385 -0.1127108559012413 0.21605446934700012 0.39429914951324463 0.9189733266830444 -0.0 1.4679713249206543 0.28495705127716064 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 -0.2839455306529999 0.1742301732301712 0.9846796989440918 -0.0 0.982009768486023 0.5655289888381958 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 -0.2839455306529999 0.2228461503982544 0.9748222231864929 -0.0 0.9840749502182007 0.5664546489715576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.014949560165405273 -0.11560174077749252 0.21605446934700012 0.2228461503982544 0.9748222231864929 -0.0 0.48612532019615173 0.40713149309158325 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.5254982113838196 -0.8507645130157471 -0.0 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 -0.2839455306529999 0.5618457794189453 -0.8272347450256348 -0.0 0.9906381964683533 0.4272674322128296 0 1.0 0 0.0 0 0.0 0 0.0\n-1.020566701889038 -0.16795386373996735 0.21605446934700012 0.5618457794189453 -0.8272347450256348 -0.0 0.6039486527442932 0.24359291791915894 0 1.0 0 0.0 0 0.0 0 0.0\n1.0608294010162354 -0.11319247633218765 -0.2839455306529999 -0.4191106855869293 0.9079256653785706 -0.0 0.9662376642227173 0.44632160663604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 -0.2839455306529999 -0.3640247881412506 0.9313638806343079 -0.0 0.9680637121200562 0.4449465274810791 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 0.21605446934700012 -0.3640247881412506 0.9313638806343079 -0.0 0.5093002319335938 0.28238970041275024 0 1.0 0 0.0 0 0.0 0 0.0\n0.01833033561706543 -0.11585834622383118 -0.2839455306529999 -0.19293801486492157 0.9812005758285522 -0.0 0.9626204967498779 0.5645154714584351 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 -0.2839455306529999 -0.143314927816391 0.9896542429924011 -0.0 0.9651601314544678 0.5639175772666931 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 0.21605446934700012 -0.143314927816391 0.9896542429924011 -0.0 0.50550776720047 0.4058172106742859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1753647327423096 -0.16939017176628113 -0.2839455306529999 -0.5531174540519714 -0.8330637812614441 -0.0 0.07452532649040222 0.4149724841117859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 -0.491470068693161 -0.8708761930465698 -0.0 0.06955760717391968 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 0.21605445444583893 -0.491470068693161 -0.8708761930465698 -0.0 0.48851171135902405 0.22110700607299805 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954375982284546 0.7221292853355408 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977097272872925 0.7285913228988647 0 1.0 0 0.0 0 0.0 0 0.0\n1.5456655025482178 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536909103393555 0.583011269569397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0577425956726074 -0.11450596153736115 -0.2839455306529999 -0.3640247881412506 0.9313638806343079 -0.0 0.9680637121200562 0.4449465274810791 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 -0.3086642026901245 0.9511398673057556 -0.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 0.21605446934700012 -0.3086642026901245 0.9511398673057556 -0.0 0.506964921951294 0.2809547185897827 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.9626453518867493 0.2706686556339264 -0.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 -0.2839455306529999 0.9688100814819336 0.24771873652935028 -0.0 0.9477726221084595 0.4720093607902527 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3230637311935425 -0.14188969135284424 0.21605446934700012 0.9688100814819336 0.24771873652935028 -0.0 0.6477121114730835 0.31230872869491577 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954375982284546 0.7221292853355408 0 1.0 0 0.0 0 0.0 0 0.0\n1.5507299900054932 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563123226165771 0.5777289867401123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 -0.2839455306529999 0.1275063306093216 0.9918210506439209 -0.0 0.9798762798309326 0.5647714138031006 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 -0.2839455306529999 0.1742301732301712 0.9846796989440918 -0.0 0.982009768486023 0.5655289888381958 0 1.0 0 0.0 0 0.0 0 0.0\n-0.011753320693969727 -0.11624753475189209 0.21605446934700012 0.1742301732301712 0.9846796989440918 -0.0 0.48823946714401245 0.4062318801879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.48789942264556885 -0.8728904128074646 -0.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 -0.2839455306529999 0.5254982113838196 -0.8507645130157471 -0.0 0.9931881427764893 0.4238011837005615 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0254472494125366 -0.1711171716451645 0.21605445444583893 0.5254982113838196 -0.8507645130157471 -0.0 0.6010351181030273 0.23905706405639648 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.6773888468742371 -0.7355876564979553 -0.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 0.6873989105224609 -0.7262489795684814 -0.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 0.21605446934700012 0.6873989105224609 -0.7262489795684814 -0.0 0.5948898792266846 0.2739698886871338 0 1.0 0 0.0 0 0.0 0 0.0\n1.2850067615509033 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671346426010132 -0.0 0.07909286022186279 0.7260227799415588 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133089542388916 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235947608947754 0.5766454935073853 0 1.0 0 0.0 0 0.0 0 0.0\n0.014382600784301758 -0.1165309026837349 -0.2839455306529999 -0.143314927816391 0.9896542429924011 -0.0 0.9651601314544678 0.5639175772666931 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 -0.2839455306529999 -0.09445478767156601 0.9955137968063354 -0.0 0.9677476286888123 0.5635481476783752 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 0.21605446934700012 -0.09445478767156601 0.9955137968063354 -0.0 0.5028718709945679 0.4051510691642761 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 -0.2839455306529999 0.2593768239021301 0.965758204460144 -0.0 0.9949193596839905 0.4440760612487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 -0.2839455306529999 0.3271889388561249 0.9449446201324463 -0.0 0.9978166818618774 0.4458499550819397 0 1.0 0 0.0 0 0.0 0 0.0\n1.0069084167480469 -0.11457040905952454 0.21605446934700012 0.3271889388561249 0.9449446201324463 -0.0 1.4714545011520386 0.2825276851654053 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4175130128860474 -0.14331506192684174 -0.2839455306529999 -0.939817488193512 -0.3415936827659607 -0.0 0.993724524974823 0.45980244874954224 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 -0.2839455306529999 -0.9425031542778015 -0.3341471552848816 -0.0 0.9936280846595764 0.4593122601509094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 0.21605446934700012 -0.9425031542778015 -0.3341471552848816 -0.0 0.595079779624939 0.27352941036224365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.4513382315635681 -0.8923307061195374 -0.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 -0.2839455306529999 0.4513382315635681 -0.8923307061195374 -0.0 0.9984782338142395 0.41751396656036377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0304421186447144 -0.17405426502227783 -0.2839455306529999 0.48789942264556885 -0.8728904128074646 -0.0 0.9958009719848633 0.4205503463745117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1665972471237183 -0.17477181553840637 -0.2839455306529999 -0.491470068693161 -0.8708761930465698 -0.0 0.06955760717391968 0.41030001640319824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 -0.42558062076568604 -0.904904305934906 -0.0 0.06448733806610107 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 0.21605445444583893 -0.42558062076568604 -0.904904305934906 -0.0 0.49555355310440063 0.2155786156654358 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.8388012051582336 -0.5444197058677673 -0.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 -0.2839455306529999 0.8657185435295105 -0.5005035400390625 -0.0 0.9049659967422485 0.44851458072662354 0 1.0 0 0.0 0 0.0 0 0.0\n1.1790039539337158 -0.11511890590190887 0.21605446934700012 0.8657185435295105 -0.5005035400390625 -0.0 0.5854707956314087 0.30921435356140137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4173282384872437 -0.14382342994213104 -0.2839455306529999 -0.9425031542778015 -0.3341471552848816 -0.0 0.9936280846595764 0.4593122601509094 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 -0.2839455306529999 -0.9470503926277161 -0.32102420926094055 -0.0 0.9935218095779419 0.4587423801422119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 0.21605446934700012 -0.9470503926277161 -0.32102420926094055 -0.0 0.5952936410903931 0.27301520109176636 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934417963027954 0.7154445648193359 0 1.0 0 0.0 0 0.0 0 0.0\n1.5554730892181396 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587857961654663 0.5721555948257446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 -0.2839455306529999 0.08285775035619736 0.9965513944625854 -0.0 0.9776747822761536 0.5641809701919556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 -0.2839455306529999 0.1275063306093216 0.9918210506439209 -0.0 0.9798762798309326 0.5647714138031006 0 1.0 0 0.0 0 0.0 0 0.0\n-0.008450031280517578 -0.1167498230934143 0.21605446934700012 0.1275063306093216 0.9918210506439209 -0.0 0.4904281795024872 0.4055290222167969 0 1.0 0 0.0 0 0.0 0 0.0\n1.054553747177124 -0.11564431339502335 -0.2839455306529999 -0.3086642026901245 0.9511398673057556 -0.0 0.9699445366859436 0.44376295804977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 -0.2839455306529999 -0.2536393404006958 0.9672841429710388 -0.0 0.9718810319900513 0.44277089834213257 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 0.21605446934700012 -0.2536393404006958 0.9672841429710388 -0.0 0.5045377612113953 0.2797309160232544 0 1.0 0 0.0 0 0.0 0 0.0\n1.2799692153930664 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133089542388916 0.7190530300140381 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320233225822449 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098869264125824 0.5707464218139648 0 1.0 0 0.0 0 0.0 0 0.0\n0.010361909866333008 -0.11701130121946335 -0.2839455306529999 -0.09445478767156601 0.9955137968063354 -0.0 0.9677476286888123 0.5635481476783752 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 -0.2839455306529999 -0.04663228243589401 0.9989013075828552 -0.0 0.9703834056854248 0.5634076595306396 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 0.21605446934700012 -0.04663228243589401 0.9989013075828552 -0.0 0.5001758337020874 0.4047499895095825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4171239137649536 -0.1444144994020462 -0.2839455306529999 -0.9470503926277161 -0.32102420926094055 -0.0 0.9935218095779419 0.4587423801422119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 -0.2839455306529999 -0.9504989981651306 -0.3106784224510193 -0.0 0.9934057593345642 0.45809316635131836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 0.21605446934700012 -0.9504989981651306 -0.3106784224510193 -0.0 0.5955314636230469 0.27242761850357056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 -0.2839455306529999 0.41798150539398193 -0.9084444642066956 -0.0 1.0011929273605347 0.41469377279281616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 -0.2839455306529999 0.4513382315635681 -0.8923307061195374 -0.0 0.9984782338142395 0.41751396656036377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0355515480041504 -0.17676514387130737 0.21605443954467773 0.4513382315635681 -0.8923307061195374 -0.0 0.5946286916732788 0.2306671142578125 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 -0.2839455306529999 0.19186986982822418 0.9814141988754272 -0.0 0.9919314384460449 0.4426735043525696 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 -0.2839455306529999 0.2593768239021301 0.965758204460144 -0.0 0.9949193596839905 0.4440760612487793 0 1.0 0 0.0 0 0.0 0 0.0\n1.0118703842163086 -0.11609186232089996 0.21605446934700012 0.2593768239021301 0.965758204460144 -0.0 1.4750945568084717 0.28052353858947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6377736330032349 -0.14456287026405334 -0.2839455306529999 -0.8179876208305359 -0.575182318687439 -0.0 0.11264124512672424 0.4472789764404297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 -0.7759636044502258 -0.6307260394096375 -0.0 0.11009809374809265 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 0.21605446934700012 -0.7759636044502258 -0.6307260394096375 -0.0 0.43985608220100403 0.2725491523742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.8917075395584106 0.708534300327301 0 1.0 0 0.0 0 0.0 0 0.0\n1.5598952770233154 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.561116635799408 0.5662844777107239 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 -0.2839455306529999 0.04043702408671379 0.999176025390625 -0.0 0.9754053354263306 0.5637564659118652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 -0.2839455306529999 0.08285775035619736 0.9965513944625854 -0.0 0.9776747822761536 0.5641809701919556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.00503993034362793 -0.11710859835147858 0.21605446934700012 0.08285775035619736 0.9965513944625854 -0.0 0.4926895201206207 0.40502452850341797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.38541826605796814 -0.922727108001709 -0.0 1.0039174556732178 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 -0.2839455306529999 0.41798150539398193 -0.9084444642066956 -0.0 1.0011929273605347 0.41469377279281616 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0407215356826782 -0.1792546957731247 0.21605445444583893 0.41798150539398193 -0.9084444642066956 -0.0 0.5911673903465271 0.22683840990066528 0 1.0 0 0.0 0 0.0 0 0.0\n1.051262617111206 -0.11660753190517426 -0.2839455306529999 -0.2536393404006958 0.9672841429710388 -0.0 0.9718810319900513 0.44277089834213257 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 -0.2839455306529999 -0.19953002035617828 0.9798578023910522 -0.0 0.9738736152648926 0.4419704079627991 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 0.21605446934700012 -0.19953002035617828 0.9798578023910522 -0.0 0.5020204186439514 0.2787216305732727 0 1.0 0 0.0 0 0.0 0 0.0\n1.2754619121551514 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320233225822449 0.7120205163955688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472907543182373 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764760971069336 0.5646572709083557 0 1.0 0 0.0 0 0.0 0 0.0\n0.00626826286315918 -0.11729954183101654 -0.2839455306529999 -0.04663228243589401 0.9989013075828552 -0.0 0.9703834056854248 0.5634076595306396 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 -0.0016174810007214546 0.999969482421875 -0.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 0.21605446934700012 -0.0016174810007214546 0.999969482421875 -0.0 0.4974221885204315 0.4046170711517334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1575742959976196 -0.17943590879440308 -0.2839455306529999 -0.42558062076568604 -0.904904305934906 -0.0 0.06448733806610107 0.40635156631469727 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 -0.3563341200351715 -0.9343241453170776 -0.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 0.21605445444583893 -0.3563341200351715 -0.9343241453170776 -0.0 0.5030680298805237 0.2109755277633667 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4169000387191772 -0.14508827030658722 -0.2839455306529999 -0.9504989981651306 -0.3106784224510193 -0.0 0.9934057593345642 0.45809316635131836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 -0.2839455306529999 -0.9531540870666504 -0.3024079203605652 -0.0 0.9932801127433777 0.4573652744293213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 0.21605446934700012 -0.9531540870666504 -0.3024079203605652 -0.0 0.5957931876182556 0.27176743745803833 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 -0.2839455306529999 0.12570573389530182 0.9920651912689209 -0.0 0.9888521432876587 0.4416421055793762 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 -0.2839455306529999 0.19186986982822418 0.9814141988754272 -0.0 0.9919314384460449 0.4426735043525696 0 1.0 0 0.0 0 0.0 0 0.0\n1.0169880390167236 -0.11727521568536758 0.21605446934700012 0.19186986982822418 0.9814141988754272 -0.0 1.4788858890533447 0.2789512276649475 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4166568517684937 -0.1458447277545929 -0.2839455306529999 -0.9531540870666504 -0.3024079203605652 -0.0 0.9932801127433777 0.4573652744293213 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 -0.9552598595619202 -0.29566332697868347 -0.0 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 0.21605446934700012 -0.9552598595619202 -0.29566332697868347 -0.0 0.5960790514945984 0.27103519439697266 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902221322059631 0.7013939619064331 0 1.0 0 0.0 0 0.0 0 0.0\n1.5639960765838623 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633092522621155 0.5601080656051636 0 1.0 0 0.0 0 0.0 0 0.0\n0.0021016597747802734 -0.11739562451839447 -0.2839455306529999 -0.0016174810007214546 0.999969482421875 -0.0 0.973068118095398 0.5634965896606445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 -0.2839455306529999 0.04043702408671379 0.999176025390625 -0.0 0.9754053354263306 0.5637564659118652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0015227794647216797 -0.1173238605260849 0.21605446934700012 0.04043702408671379 0.999176025390625 -0.0 0.4950215816497803 0.4047200679779053 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.35142064094543457 -0.9361857771873474 -0.0 1.0066523551940918 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 -0.2839455306529999 0.38541826605796814 -0.922727108001709 -0.0 1.0039174556732178 0.41209107637405396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0458989143371582 -0.1815277487039566 0.21605445444583893 0.38541826605796814 -0.922727108001709 -0.0 0.5875861644744873 0.22327786684036255 0 1.0 0 0.0 0 0.0 0 0.0\n1.0478694438934326 -0.11739562451839447 -0.2839455306529999 -0.19953002035617828 0.9798578023910522 -0.0 0.9738736152648926 0.4419704079627991 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 -0.2839455306529999 -0.14679403603076935 0.9891353845596313 -0.0 0.9759230017662048 0.44136184453964233 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 0.21605446934700012 -0.14679403603076935 0.9891353845596313 -0.0 0.49941444396972656 0.27793002128601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.2714848518371582 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472907543182373 0.7049227952957153 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592993021011353 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563517808914185 0.5583691596984863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1482959985733032 -0.18338243663311005 -0.2839455306529999 -0.3563341200351715 -0.9343241453170776 -0.0 0.059311121702194214 0.4031233787536621 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 -0.2848292589187622 -0.9585558772087097 -0.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 0.21605445444583893 -0.2848292589187622 -0.9585558772087097 -0.0 0.5110252499580383 0.20733344554901123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1487255096435547 -0.11909829080104828 -0.2839455306529999 -0.9493392705917358 -0.31418806314468384 -0.0 0.0639059841632843 0.558230996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 -0.2839455306529999 -0.9329508543014526 -0.35996583104133606 -0.0 0.06262597441673279 0.5522772073745728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 0.21605446934700012 -0.9329508543014526 -0.35996583104133606 -0.0 0.40534508228302 0.41134870052337646 0 1.0 0 0.0 0 0.0 0 0.0\n1.0443739891052246 -0.1180085837841034 -0.2839455306529999 -0.14679403603076935 0.9891353845596313 -0.0 0.9759230017662048 0.44136184453964233 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 -0.2839455306529999 -0.095828115940094 0.9953917264938354 -0.0 0.978029727935791 0.44094574451446533 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 0.21605446934700012 -0.095828115940094 0.9953917264938354 -0.0 0.4967222511768341 0.2773597836494446 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.9561754465103149 0.2926725149154663 -0.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 -0.2839455306529999 0.9626453518867493 0.2706686556339264 -0.0 0.9475157260894775 0.46850723028182983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.321989893913269 -0.14588730037212372 0.21605446934700012 0.9626453518867493 0.2706686556339264 -0.0 0.6487820148468018 0.3092452883720398 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4163941144943237 -0.14668390154838562 -0.2839455306529999 -0.9552598595619202 -0.29566332697868347 -0.0 0.9931448698043823 0.45655930042266846 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 -0.2839455306529999 -0.9569994211196899 -0.29004791378974915 -0.0 0.9930000901222229 0.45567595958709717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 0.21605446934700012 -0.9569994211196899 -0.29004791378974915 -0.0 0.5963889360427856 0.2702317237854004 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14678454399108887 -0.12453465908765793 -0.2839455306529999 -0.9329508543014526 -0.35996583104133606 -0.0 0.06262597441673279 0.5522772073745728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 -0.9130222201347351 -0.40784937143325806 -0.0 0.061272114515304565 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 0.21605446934700012 -0.9130222201347351 -0.40784937143325806 -0.0 0.40602123737335205 0.40526485443115234 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 -0.2839455306529999 0.3161107301712036 -0.9486984014511108 -0.0 1.0093977451324463 0.40753376483917236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 -0.2839455306529999 0.35142064094543457 -0.9361857771873474 -0.0 1.0066523551940918 0.4097048044204712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0510835647583008 -0.1835843324661255 0.21605445444583893 0.35142064094543457 -0.9361857771873474 -0.0 0.5838873982429504 0.2199886441230774 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 1.487341284751892 0.5618768334388733 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 -0.2839455306529999 0.06164738908410072 0.9980773329734802 -0.0 0.9856808185577393 0.4409821033477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 -0.2839455306529999 0.12570573389530182 0.9920651912689209 -0.0 0.9888521432876587 0.4416421055793762 0 1.0 0 0.0 0 0.0 0 0.0\n1.022261381149292 -0.1181204691529274 0.21605446934700012 0.12570573389530182 0.9920651912689209 -0.0 1.4828212261199951 0.27781784534454346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.2795190215110779 -0.9601123332977295 -0.0 1.01215398311615 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 -0.2839455306529999 0.3161107301712036 -0.9486984014511108 -0.0 1.0093977451324463 0.40753376483917236 0 1.0 0 0.0 0 0.0 0 0.0\n-1.056275486946106 -0.18542441725730896 0.21605445444583893 0.3161107301712036 -0.9486984014511108 -0.0 0.5800744295120239 0.21697372198104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.0407764911651611 -0.11844640970230103 -0.2839455306529999 -0.095828115940094 0.9953917264938354 -0.0 0.978029727935791 0.44094574451446533 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 -0.2839455306529999 -0.04693746566772461 0.9988707900047302 -0.0 0.9801942110061646 0.4407229423522949 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 0.21605446934700012 -0.04693746566772461 0.9988707900047302 -0.0 0.4939463436603546 0.2770150303840637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.6567277908325195 -0.7541123628616333 -0.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 -0.2839455306529999 0.6773888468742371 -0.7355876564979553 -0.0 0.9960373640060425 0.4553300738334656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4217404127120972 -0.1473163217306137 0.21605446934700012 0.6773888468742371 -0.7355876564979553 -0.0 0.5925045013427734 0.26866674423217773 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.8020874857902527 -0.5971556901931763 -0.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 0.8142643570899963 -0.5804315209388733 -0.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 0.21605446934700012 0.8142643570899963 -0.5804315209388733 -0.0 0.5518236756324768 0.39705806970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1387622356414795 -0.18661142885684967 -0.2839455306529999 -0.2848292589187622 -0.9585558772087097 -0.0 0.05402609705924988 0.4006136655807495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 -0.21228675544261932 -0.9772026538848877 -0.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 0.21605445444583893 -0.21228675544261932 -0.9772026538848877 -0.0 0.5193799734115601 0.20468991994857788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4161120653152466 -0.1476057767868042 -0.2839455306529999 -0.9569994211196899 -0.29004791378974915 -0.0 0.9930000901222229 0.45567595958709717 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 -0.2839455306529999 -0.9584032893180847 -0.2854090929031372 -0.0 0.992845892906189 0.4547160267829895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 0.21605446934700012 -0.9584032893180847 -0.2854090929031372 -0.0 0.5967231392860413 0.2693578600883484 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889729976654053 0.694016695022583 0 1.0 0 0.0 0 0.0 0 0.0\n1.5677759647369385 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653682947158813 0.5536173582077026 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.1282537579536438 -0.2839455306529999 -1.0 0.0 -0.0 0.9213816523551941 0.5436801314353943 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 -0.2839455306529999 -1.0 0.0 -0.0 0.9250865578651428 0.48120373487472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.5546995401382446 0.3343638777732849 0 1.0 0 0.0 0 0.0 0 0.0\n1.268038272857666 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592993021011353 0.6977540254592896 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038437008857727 0.5518712997436523 0 1.0 0 0.0 0 0.0 0 0.0\n0.08896684646606445 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9250865578651428 0.48120373487472534 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.6000452637672424 0.3568435311317444 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0036011841148138046 0.999969482421875 -0.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 -0.2839455306529999 0.06164738908410072 0.9980773329734802 -0.0 0.9856808185577393 0.4409821033477783 0 1.0 0 0.0 0 0.0 0 0.0\n1.0276904106140137 -0.1186276227235794 0.21605446934700012 0.06164738908410072 0.9980773329734802 -0.0 0.48689237236976624 0.27713125944137573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.415810465812683 -0.14861035346984863 -0.2839455306529999 -0.9584032893180847 -0.2854090929031372 -0.0 0.992845892906189 0.4547160267829895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 -0.2839455306529999 -0.9595934748649597 -0.28131961822509766 -0.0 0.9926822185516357 0.4536803960800171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 0.21605446934700012 -0.9595934748649597 -0.28131961822509766 -0.0 0.5970817804336548 0.26841461658477783 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14465856552124023 -0.12965482473373413 -0.2839455306529999 -0.9130222201347351 -0.40784937143325806 -0.0 0.061272114515304565 0.546661376953125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 -0.8899502754211426 -0.45600757002830505 -0.0 0.059828102588653564 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 0.21605446934700012 -0.8899502754211426 -0.45600757002830505 -0.0 0.40683630108833313 0.3993995785713196 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 -0.2839455306529999 0.24179814755916595 -0.9703055024147034 -0.0 1.0149214267730713 0.4038327932357788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 -0.2839455306529999 0.2795190215110779 -0.9601123332977295 -0.0 1.01215398311615 0.4055767059326172 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0614746809005737 -0.1870480328798294 0.21605445444583893 0.2795190215110779 -0.9601123332977295 -0.0 0.5761512517929077 0.21423637866973877 0 1.0 0 0.0 0 0.0 0 0.0\n1.0370769500732422 -0.11870910972356796 -0.2839455306529999 -0.04693746566772461 0.9988707900047302 -0.0 0.9801942110061646 0.4407229423522949 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 -0.2839455306529999 0.0036011841148138046 0.999969482421875 -0.0 0.982417106628418 0.4406943917274475 0 1.0 0 0.0 0 0.0 0 0.0\n1.0332751274108887 -0.11879667639732361 0.21605446934700012 0.0036011841148138046 0.999969482421875 -0.0 0.49108949303627014 0.2768997550010681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4154893159866333 -0.14969763159751892 -0.2839455306529999 -0.9595934748649597 -0.28131961822509766 -0.0 0.9926822185516357 0.4536803960800171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 -0.9606311321258545 -0.2778099775314331 -0.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 0.21605446934700012 -0.9606311321258545 -0.2778099775314331 -0.0 0.5974647998809814 0.2674028277397156 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.993322491645813 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807119369506836 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.20303964614868164 -0.9791558384895325 -0.0 1.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 -0.2839455306529999 0.24179814755916595 -0.9703055024147034 -0.0 1.0149214267730713 0.4038327932357788 0 1.0 0 0.0 0 0.0 0 0.0\n-1.066681146621704 -0.18845516443252563 0.21605445444583893 0.24179814755916595 -0.9703055024147034 -0.0 0.5721230506896973 0.21177977323532104 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.7765740156173706 -0.6299936175346375 -0.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 -0.2839455306529999 0.8020874857902527 -0.5971556901931763 -0.0 0.92360520362854 0.5383328199386597 0 1.0 0 0.0 0 0.0 0 0.0\n0.08549213409423828 -0.13312825560569763 0.21605446934700012 0.8020874857902527 -0.5971556901931763 -0.0 0.5500854253768921 0.39095473289489746 0 1.0 0 0.0 0 0.0 0 0.0\n-1.128973126411438 -0.18912285566329956 -0.2839455306529999 -0.21228675544261932 -0.9772026538848877 -0.0 0.04863038659095764 0.39882320165634155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 -0.13995788991451263 -0.9901425242424011 -0.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 0.21605445444583893 -0.13995788991451263 -0.9901425242424011 -0.0 0.5280721187591553 0.20308256149291992 0 1.0 0 0.0 0 0.0 0 0.0\n0.8827424049377441 -0.12030474841594696 -0.2839455306529999 -0.843745231628418 -0.5366985201835632 -0.0 0.06383192539215088 0.4491479992866516 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 -0.8044373989105225 -0.5940122604370117 -0.0 0.06068447232246399 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 0.21605446934700012 -0.8044373989105225 -0.5940122604370117 -0.0 0.39340054988861084 0.29774606227874756 0 1.0 0 0.0 0 0.0 0 0.0\n1.4104859828948975 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.993322491645813 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885505437850952 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n1.4168126583099365 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.484402060508728 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14232611656188965 -0.13452443480491638 -0.2839455306529999 -0.8899502754211426 -0.45600757002830505 -0.0 0.059828102588653564 0.5413103103637695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 -0.8639789819717407 -0.503494381904602 -0.0 0.05827704071998596 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 0.21605446934700012 -0.8639789819717407 -0.503494381904602 -0.0 0.4078006148338318 0.3936748504638672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.9494918584823608 0.31376078724861145 -0.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 -0.2839455306529999 0.9561754465103149 0.2926725149154663 -0.0 0.9472158551216125 0.46502256393432617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3208016157150269 -0.1499311327934265 0.21605446934700012 0.9561754465103149 0.2926725149154663 -0.0 0.6499096751213074 0.3062366247177124 0 1.0 0 0.0 0 0.0 0 0.0\n1.421851396560669 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847497940063477 0.7257237434387207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811047315597534 0.725290834903717 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016404151916504 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6334062814712524 -0.15033003687858582 -0.2839455306529999 -0.7759636044502258 -0.6307260394096375 -0.0 0.11009809374809265 0.44204282760620117 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 -0.7316507697105408 -0.6816614270210266 -0.0 0.10735753178596497 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 0.21605446934700012 -0.7316507697105408 -0.6816614270210266 -0.0 0.44213002920150757 0.2660250663757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 -0.2839455306529999 0.16342662274837494 -0.9865413308143616 -0.0 1.0204906463623047 0.40098077058792114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 -0.2839455306529999 0.20303964614868164 -0.9791558384895325 -0.0 1.0177001953125 0.4023010730743408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0718950033187866 -0.18964582681655884 0.21605445444583893 0.20303964614868164 -0.9791558384895325 -0.0 0.5679959058761597 0.20960724353790283 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.808679461479187 -0.5881832242012024 -0.0 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 -0.2839455306529999 0.8388012051582336 -0.5444197058677673 -0.0 0.9075202941894531 0.4414207935333252 0 1.0 0 0.0 0 0.0 0 0.0\n1.174483299255371 -0.12249995768070221 0.21605446934700012 0.8388012051582336 -0.5444197058677673 -0.0 0.5837835669517517 0.3009667992591858 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.7494735717773438 -0.6619769930839539 -0.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 -0.2839455306529999 0.7765740156173706 -0.6299936175346375 -0.0 0.9259190559387207 0.5331619381904602 0 1.0 0 0.0 0 0.0 0 0.0\n0.08183979988098145 -0.13782760500907898 0.21605446934700012 0.7765740156173706 -0.6299936175346375 -0.0 0.548201322555542 0.385007381439209 0 1.0 0 0.0 0 0.0 0 0.0\n0.8886165618896484 -0.12895429134368896 -0.2839455306529999 -0.8044373989105225 -0.5940122604370117 -0.0 0.06068447232246399 0.4405009150505066 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 -0.7527390122413635 -0.6582842469215393 -0.0 0.05640202760696411 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 0.21605446934700012 -0.7527390122413635 -0.6582842469215393 -0.0 0.39674311876296997 0.28568243980407715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4151488542556763 -0.15086759626865387 -0.2839455306529999 -0.9606311321258545 -0.2778099775314331 -0.0 0.9925094842910767 0.4525699019432068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 -0.2839455306529999 -0.9614856243133545 -0.27478864789009094 -0.0 0.9923274517059326 0.451385498046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 0.21605446934700012 -0.9614856243133545 -0.27478864789009094 -0.0 0.5978724956512451 0.26632362604141235 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 1.0021334886550903 0.7248518466949463 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978524446487427 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n1.404465913772583 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772032499313354 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13976478576660156 -0.13920921087265015 -0.2839455306529999 -0.8639789819717407 -0.503494381904602 -0.0 0.05827704071998596 0.5361497402191162 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 -0.8349558711051941 -0.5502792596817017 -0.0 0.05661684274673462 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 0.21605446934700012 -0.8349558711051941 -0.5502792596817017 -0.0 0.40891844034194946 0.38809001445770264 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.12314218282699585 -0.9923703670501709 -0.0 1.0232930183410645 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 -0.2839455306529999 0.16342662274837494 -0.9865413308143616 -0.0 1.0204906463623047 0.40098077058792114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0771161317825317 -0.19061999022960663 0.21605445444583893 0.16342662274837494 -0.9865413308143616 -0.0 0.563776969909668 0.20772206783294678 0 1.0 0 0.0 0 0.0 0 0.0\n1.4266927242279053 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811047315597534 0.725290834903717 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776201248168945 0.724622368812561 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.492870569229126 0.5609473586082458 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1189286708831787 -0.1909167319536209 -0.2839455306529999 -0.13995788991451263 -0.9901425242424011 -0.0 0.04312288761138916 0.3977545499801636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 -0.06897182762622833 -0.9975890517234802 -0.0 0.03750342130661011 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 -0.06897182762622833 -0.9975890517234802 -0.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 -0.2839455306529999 0.7754448056221008 -0.6313974261283875 -0.0 0.9130018949508667 0.4282703995704651 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 -0.2839455306529999 0.808679461479187 -0.5881832242012024 -0.0 0.9101971983909607 0.4346746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.1696586608886719 -0.12952345609664917 0.21605446934700012 0.808679461479187 -0.5881832242012024 -0.0 0.5818529725074768 0.2929994463920593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 -0.2839455306529999 0.634998619556427 -0.772484540939331 -0.0 1.0007305145263672 0.44697535037994385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 -0.2839455306529999 0.6567277908325195 -0.7541123628616333 -0.0 0.9983725547790527 0.4510546922683716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4260165691375732 -0.15114732086658478 0.21605446934700012 0.6567277908325195 -0.7541123628616333 -0.0 0.5900063514709473 0.26357966661453247 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.7209387421607971 -0.6929532885551453 -0.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 -0.2839455306529999 0.7494735717773438 -0.6619769930839539 -0.0 0.9283249378204346 0.5281692743301392 0 1.0 0 0.0 0 0.0 0 0.0\n0.07801008224487305 -0.14235183596611023 0.21605446934700012 0.7494735717773438 -0.6619769930839539 -0.0 0.5461670756340027 0.3792210817337036 0 1.0 0 0.0 0 0.0 0 0.0\n-1.414788842201233 -0.15212027728557587 -0.2839455306529999 -0.9614856243133545 -0.27478864789009094 -0.0 0.9923274517059326 0.451385498046875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 -0.2839455306529999 -0.9622486233711243 -0.27207252383232117 -0.0 0.9921363592147827 0.45012837648391724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 0.21605446934700012 -0.9622486233711243 -0.27207252383232117 -0.0 0.5983049869537354 0.26517820358276367 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159782409667969 0.7239813804626465 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 0.0021335184574127197 0.7248518466949463 0 1.0 0 0.0 0 0.0 0 0.0\n1.398751974105835 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 0.473876416683197 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13697481155395508 -0.14370910823345184 -0.2839455306529999 -0.8349558711051941 -0.5502792596817017 -0.0 0.05661684274673462 0.5311776399612427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 -0.8030640482902527 -0.5958738923072815 -0.0 0.054845213890075684 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 0.21605446934700012 -0.8030640482902527 -0.5958738923072815 -0.0 0.410194456577301 0.38264477252960205 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 -0.2839455306529999 0.08230841904878616 -0.9965819120407104 -0.0 1.0261074304580688 0.39897215366363525 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 -0.2839455306529999 0.12314218282699585 -0.9923703670501709 -0.0 1.0232930183410645 0.399871289730072 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0823445320129395 -0.1913776695728302 0.21605445444583893 0.12314218282699585 -0.9923703670501709 -0.0 0.5594743490219116 0.20612728595733643 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.7391277551651001 -0.6735435128211975 -0.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 -0.2839455306529999 0.7754448056221008 -0.6313974261283875 -0.0 0.9130018949508667 0.4282703995704651 0 1.0 0 0.0 0 0.0 0 0.0\n1.1645300388336182 -0.13618940114974976 0.21605446934700012 0.7754448056221008 -0.6313974261283875 -0.0 0.5796647667884827 0.28530943393707275 0 1.0 0 0.0 0 0.0 0 0.0\n1.431337594985962 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776201248168945 0.724622368812561 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.974300742149353 0.7237285375595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954600930213928 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n0.896730899810791 -0.13908028602600098 -0.2839455306529999 -0.7527390122413635 -0.6582842469215393 -0.0 0.05640202760696411 0.43033796548843384 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 -0.6926481127738953 -0.7212439179420471 -0.0 0.05179312825202942 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 0.21605446934700012 -0.6926481127738953 -0.7212439179420471 -0.0 0.4007539749145508 0.274305522441864 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4144092798233032 -0.15345565974712372 -0.2839455306529999 -0.9622486233711243 -0.27207252383232117 -0.0 0.9921363592147827 0.45012837648391724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 -0.9611194133758545 -0.2760094106197357 -0.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 0.21605446934700012 -0.9611499309539795 -0.2760094106197357 -0.0 0.5987622737884521 0.26396769285202026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 -0.2839455306529999 0.04119998961687088 -0.9991455078125 -0.0 1.0289340019226074 0.3982831835746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 -0.2839455306529999 0.08230841904878616 -0.9965819120407104 -0.0 1.0261074304580688 0.39897215366363525 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0875802040100098 -0.19191887974739075 0.21605445444583893 0.08230841904878616 -0.9965819120407104 -0.0 0.5550970435142517 0.20482593774795532 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.6910916566848755 -0.7227393388748169 -0.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 -0.2839455306529999 0.7209387421607971 -0.6929532885551453 -0.0 0.9308251142501831 0.5233567953109741 0 1.0 0 0.0 0 0.0 0 0.0\n0.07400274276733398 -0.1467009335756302 0.21605446934700012 0.7209387421607971 -0.6929532885551453 -0.0 0.5439779758453369 0.373601496219635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 0.21605443954467773 -0.06897182762622833 -0.9975890517234802 -0.0 0.5370272397994995 0.2025470733642578 0 1.0 0 0.0 0 0.0 0 0.0\n-1.108628749847412 -0.19199305772781372 -0.2839455306529999 -0.06897182762622833 -0.9975890517234802 -0.0 1.0375034809112549 0.3974127173423767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 -0.2839455306529999 -0.006653035059571266 -0.999969482421875 -0.0 1.0317729711532593 0.3978040814399719 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009929001331329346 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159782409667969 0.7239813804626465 0 1.0 0 0.0 0 0.0 0 0.0\n1.3933451175689697 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.4707322120666504 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1339561939239502 -0.14802414178848267 -0.2839455306529999 -0.8030640482902527 -0.5958738923072815 -0.0 0.054845213890075684 0.5263919830322266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 -0.7685170769691467 -0.6397900581359863 -0.0 0.052959591150283813 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 0.21605446934700012 -0.7685170769691467 -0.6397900581359863 -0.0 0.41163375973701477 0.37733936309814453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0980734825134277 -0.19235184788703918 -0.2839455306529999 -0.006653035059571266 -0.999969482421875 -0.0 1.0317729711532593 0.3978040814399719 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 -0.2839455306529999 0.04119998961687088 -0.9991455078125 -0.0 1.0289340019226074 0.3982831835746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0928231477737427 -0.19224360585212708 0.21605445444583893 0.04119998961687088 -0.9991455078125 -0.0 0.5506551265716553 0.203821063041687 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.6999419927597046 -0.7141636610031128 -0.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 -0.2839455306529999 0.7391277551651001 -0.6735435128211975 -0.0 0.9159396886825562 0.4222024083137512 0 1.0 0 0.0 0 0.0 0 0.0\n1.15909743309021 -0.14249777793884277 0.21605446934700012 0.7391277551651001 -0.6735435128211975 -0.0 0.5772037506103516 0.2778952717781067 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.9425641894340515 0.3339335322380066 -0.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 -0.2839455306529999 0.9494918584823608 0.31376078724861145 -0.0 0.9468740224838257 0.46155840158462524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.319499135017395 -0.15402118861675262 0.21605446934700012 0.9494918584823608 0.31376078724861145 -0.0 0.6510940194129944 0.30328530073165894 0 1.0 0 0.0 0 0.0 0 0.0\n1.4357850551605225 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.974300742149353 0.7237285375595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.971149206161499 0.7226189374923706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.497933030128479 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 -0.2839455306529999 -0.0025635547935962677 0.999969482421875 -0.0 0.051040977239608765 0.8245793581008911 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 -0.031373027712106705 0.999481201171875 -0.0 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 0.21605448424816132 -0.031373027712106705 0.999481201171875 -0.0 0.5233350992202759 0.6290465593338013 0 1.0 0 0.0 0 0.0 0 0.0\n0.9055459499359131 -0.14832577109336853 -0.2839455306529999 -0.6926481127738953 -0.7212439179420471 -0.0 0.05179312825202942 0.4209994077682495 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 -0.6262093186378479 -0.7796258330345154 -0.0 0.04683852195739746 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 0.21605446934700012 -0.6262093186378479 -0.7796258330345154 -0.0 0.40549376606941223 0.2636224627494812 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.6121707558631897 -0.790704071521759 -0.0 1.0031116008758545 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 -0.2839455306529999 0.634998619556427 -0.772484540939331 -0.0 1.0007305145263672 0.44697535037994385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.430341362953186 -0.15480805933475494 0.21605446934700012 0.634998619556427 -0.772484540939331 -0.0 0.5873936414718628 0.25871068239212036 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.6600848436355591 -0.7511520981788635 -0.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 -0.2839455306529999 0.6910916566848755 -0.7227393388748169 -0.0 0.9334215521812439 0.5187262892723083 0 1.0 0 0.0 0 0.0 0 0.0\n0.06981778144836426 -0.15087489783763885 0.21605446934700012 0.6910916566848755 -0.7227393388748169 -0.0 0.5416295528411865 0.3681548833847046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 -0.2839455306529999 0.020813623443245888 0.999755859375 -0.0 0.041211605072021484 0.8255455493927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 -0.2839455306529999 -0.0025635547935962677 0.999969482421875 -0.0 0.051040977239608765 0.8245793581008911 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 0.19643977284431458 0.21605448424816132 -0.0025635547935962677 0.999969482421875 -0.0 0.529496967792511 0.6301011443138123 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4140104055404663 -0.15487372875213623 -0.2839455306529999 -0.9611194133758545 -0.2760094106197357 -0.0 0.9919363260269165 0.4487995505332947 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 -0.2839455306529999 -0.9590136408805847 -0.28333383798599243 -0.0 0.9914758205413818 0.4458812475204468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 0.21605446934700012 -0.9590136408805847 -0.28333383798599243 -0.0 0.5998045206069946 0.2613224983215332 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439804315567017 0.7215794920921326 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009929001331329346 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n1.388244390487671 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.46776947379112244 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13070893287658691 -0.1521543264389038 -0.2839455306529999 -0.7685170769691467 -0.6397900581359863 -0.0 0.052959591150283813 0.5217910408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 -0.7316202521324158 -0.6816614270210266 -0.0 0.05095714330673218 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 0.21605446934700012 -0.7316202521324158 -0.6816614270210266 -0.0 0.4132416844367981 0.3721746802330017 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 -0.2839455306529999 0.6581926941871643 -0.7528305649757385 -0.0 0.9222360253334045 0.4110592007637024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 -0.2839455306529999 0.6999419927597046 -0.7141636610031128 -0.0 0.9190158843994141 0.41646647453308105 0 1.0 0 0.0 0 0.0 0 0.0\n1.1533606052398682 -0.14844858646392822 0.21605446934700012 0.6999419927597046 -0.7141636610031128 -0.0 0.5744532942771912 0.270757794380188 0 1.0 0 0.0 0 0.0 0 0.0\n1.4400355815887451 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.971149206161499 0.7226189374923706 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.968167781829834 0.7213026285171509 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002896785736084 0.5582361221313477 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.043336283415555954 0.999053955078125 -0.0 1.0317471027374268 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 -0.2839455306529999 0.020813623443245888 0.999755859375 -0.0 0.041211605072021484 0.8255455493927002 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4743722677230835 0.19633153080940247 0.21605448424816132 0.020813623443245888 0.999755859375 -0.0 0.5351086258888245 0.6307108402252197 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6285791397094727 -0.15586857497692108 -0.2839455306529999 -0.7316507697105408 -0.6816614270210266 -0.0 0.10735753178596497 0.4370245933532715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 -0.6841028928756714 -0.7293618321418762 -0.0 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 0.21605446934700012 -0.6841028928756714 -0.7293313145637512 -0.0 0.44477057456970215 0.2596014142036438 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4969496726989746 0.1962597668170929 -0.2839455306529999 -0.031373027712106705 0.999481201171875 -0.0 0.0616915225982666 0.8226818442344666 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 -0.06512650102376938 0.9978637099266052 -0.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 0.21605448424816132 -0.06512650102376938 0.9978637099266052 -0.0 0.5174651741981506 0.6276100873947144 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.6142460107803345 -0.7890865802764893 -0.0 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 -0.2839455306529999 0.6581926941871643 -0.7528305649757385 -0.0 0.9222360253334045 0.4110592007637024 0 1.0 0 0.0 0 0.0 0 0.0\n1.1473197937011719 -0.1540418416261673 0.21605446934700012 0.6581926941871643 -0.7528305649757385 -0.0 0.5713964104652405 0.2639002203941345 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.6281014680862427 -0.7780998945236206 -0.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 -0.2839455306529999 0.6600848436355591 -0.7511520981788635 -0.0 0.9361163377761841 0.514279842376709 0 1.0 0 0.0 0 0.0 0 0.0\n0.06545519828796387 -0.15487372875213623 0.21605446934700012 0.6600848436355591 -0.7511826157569885 -0.0 0.5391175150871277 0.3628878593444824 0 1.0 0 0.0 0 0.0 0 0.0\n0.9150614738464355 -0.15669071674346924 -0.2839455306529999 -0.6262093186378479 -0.7796258330345154 -0.0 0.04683852195739746 0.41246914863586426 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 -0.5548264980316162 -0.8319345712661743 -0.0 0.04151874780654907 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 0.21605446934700012 -0.5548264980316162 -0.8319345712661743 -0.0 0.4110276997089386 0.2536557912826538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4130885601043701 -0.1580187976360321 -0.2839455306529999 -0.9590136408805847 -0.28333383798599243 -0.0 0.9914758205413818 0.4458812475204468 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 -0.9577013254165649 -0.28766748309135437 -0.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 0.21605446934700012 -0.9577013254165649 -0.28766748309135437 -0.0 0.6008166074752808 0.25882768630981445 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.016692906618118286 0.7200816869735718 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439804315567017 0.7215794920921326 0 1.0 0 0.0 0 0.0 0 0.0\n1.3834502696990967 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.4649874269962311 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12723302841186523 -0.15609964728355408 -0.2839455306529999 -0.7316202521324158 -0.6816614270210266 -0.0 0.05095714330673218 0.5173731446266174 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 -0.6927701830863953 -0.7211218476295471 -0.0 0.04883506894111633 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 0.21605446934700012 -0.6927701830863953 -0.7211218476295471 -0.0 0.41502389311790466 0.36715227365493774 0 1.0 0 0.0 0 0.0 0 0.0\n1.4440891742706299 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.968167781829834 0.7213026285171509 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.9653576612472534 0.7197879552841187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025306344032288 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.06796471774578094 0.9976806044578552 -0.0 1.02272629737854 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 -0.2839455306529999 0.043336283415555954 0.999053955078125 -0.0 1.0317471027374268 0.825800359249115 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640979766845703 0.19600680470466614 0.21605448424816132 0.043336283415555954 0.999053955078125 -0.0 0.5404836535453796 0.6309982538223267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5082894563674927 0.19571977853775024 -0.2839455306529999 -0.06512650102376938 0.9978637099266052 -0.0 0.07161593437194824 0.8200180530548096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 -0.10180974751710892 0.9947813153266907 -0.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 0.21605448424816132 -0.10180974751710892 0.9947813153266907 -0.0 0.5118923187255859 0.6258165240287781 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 -0.2839455306529999 0.5680715441703796 -0.8229621052742004 -0.0 0.9291298389434814 0.4012235999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 -0.2839455306529999 0.6142460107803345 -0.7890865802764893 -0.0 0.9256055355072021 0.4059785008430481 0 1.0 0 0.0 0 0.0 0 0.0\n1.140974998474121 -0.15927754342556 0.21605446934700012 0.6142460107803345 -0.7890865802764893 -0.0 0.5680148601531982 0.2573285698890686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.9355143904685974 0.35322123765945435 -0.0 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 -0.2839455306529999 0.9425641894340515 0.3339335322380066 -0.0 0.946491003036499 0.4581177234649658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3180822134017944 -0.15815743803977966 0.21605446934700012 0.9425641894340515 0.3339335322380066 -0.0 0.6523339748382568 0.3003944158554077 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.5953550934791565 -0.8034607768058777 -0.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 -0.2839455306529999 0.6281014680862427 -0.7780998945236206 -0.0 0.9389110207557678 0.5100195407867432 0 1.0 0 0.0 0 0.0 0 0.0\n0.060915231704711914 -0.15869742631912231 0.21605446934700012 0.6281014680862427 -0.7780998945236206 -0.0 0.5364377498626709 0.35780781507492065 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.01968926191329956 0.7184059023857117 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.016692906618118286 0.7200816869735718 0 1.0 0 0.0 0 0.0 0 0.0\n1.3789622783660889 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238431334495544 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n-0.12352848052978516 -0.15986010432243347 -0.2839455306529999 -0.6927701830863953 -0.7211218476295471 -0.0 0.04883506894111633 0.5131371021270752 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 -0.652363657951355 -0.7578661441802979 -0.0 0.04659029841423035 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 0.21605446934700012 -0.652363657951355 -0.7578661441802979 -0.0 0.4169861674308777 0.36227452754974365 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.5195471048355103 -0.8544266819953918 -0.0 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 -0.2839455306529999 0.5680715441703796 -0.8229621052742004 -0.0 0.9291298389434814 0.4012235999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.1343259811401367 -0.16415569186210632 0.21605446934700012 0.5680715441703796 -0.8229621052742004 -0.0 0.5642899870872498 0.25105178356170654 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.5882442593574524 -0.808648943901062 -0.0 1.0055162906646729 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 -0.2839455306529999 0.6121707558631897 -0.790704071521759 -0.0 1.0031116008758545 0.4430910348892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4347147941589355 -0.158298522233963 0.21605446934700012 0.6121707558631897 -0.790704071521759 -0.0 0.5846648812294006 0.254062294960022 0 1.0 0 0.0 0 0.0 0 0.0\n1.4479458332061768 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.9653576612472534 0.7197879552841187 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046564340591431 0.5555700063705444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0949736014008522 0.9954527616500854 -0.0 1.0142098665237427 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 -0.2839455306529999 0.06796471774578094 0.9976806044578552 -0.0 1.02272629737854 0.8254101276397705 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4542906284332275 0.1954655945301056 0.21605448424816132 0.06796471774578094 0.9976806044578552 -0.0 0.5456142425537109 0.6309813857078552 0 1.0 0 0.0 0 0.0 0 0.0\n0.9252774715423584 -0.1641751527786255 -0.2839455306529999 -0.5548264980316162 -0.8319345712661743 -0.0 0.04151874780654907 0.40473806858062744 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 -0.48020875453948975 -0.8771324753761292 -0.0 0.0358147919178009 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 0.21605445444583893 -0.48020875453948975 -0.8771324753761292 -0.0 0.41742268204689026 0.24444663524627686 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4121910333633423 -0.1610325127840042 -0.2839455306529999 -0.9577013254165649 -0.28766748309135437 -0.0 0.9910306334495544 0.4431183338165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 -0.9562669992446899 -0.2923673093318939 -0.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 0.21605446934700012 -0.9562975168228149 -0.2923673093318939 -0.0 0.6017979383468628 0.2564786672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5191329717636108 0.19481980800628662 -0.2839455306529999 -0.10180974751710892 0.9947813153266907 -0.0 0.08076804876327515 0.8166956305503845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 -0.14157536625862122 0.9898983836174011 -0.0 0.08913213014602661 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 0.21605448424816132 -0.14157536625862122 0.9898983836174011 -0.0 0.5066177845001221 0.6236889958381653 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.5619983673095703 -0.82711261510849 -0.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 -0.2839455306529999 0.5953550934791565 -0.8034607768058777 -0.0 0.9418076276779175 0.5059475302696228 0 1.0 0 0.0 0 0.0 0 0.0\n0.0561976432800293 -0.1623460054397583 0.21605446934700012 0.5953550934791565 -0.8034607768058777 -0.0 0.5335861444473267 0.3529229164123535 0 1.0 0 0.0 0 0.0 0 0.0\n-1.623292326927185 -0.16117845475673676 -0.2839455306529999 -0.6841028928756714 -0.7293618321418762 -0.0 0.10441264510154724 0.4322202205657959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 -0.6310006976127625 -0.7757499814033508 -0.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 0.21605446934700012 -0.6310006976127625 -0.7757499814033508 -0.0 0.44777432084083557 0.2533940076828003 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712271451950073 -0.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.8879491686820984 0.6863942742347717 0 1.0 0 0.0 0 0.0 0 0.0\n1.571234941482544 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672978758811951 0.5468026995658875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11959528923034668 -0.16343571245670319 -0.2839455306529999 -0.652363657951355 -0.7578661441802979 -0.0 0.04659029841423035 0.5090819597244263 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 -0.6108585000038147 -0.791711151599884 -0.0 0.0442197322845459 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 0.21605446934700012 -0.6108585000038147 -0.791711151599884 -0.0 0.41913461685180664 0.35754483938217163 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.4693136513233185 -0.8830225467681885 -0.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 -0.2839455306529999 0.5195471048355103 -0.8544266819953918 -0.0 0.9328085780143738 0.3968101739883423 0 1.0 0 0.0 0 0.0 0 0.0\n1.127382755279541 -0.1686592400074005 0.21605446934700012 0.5195471048355103 -0.8544266819953918 -0.0 0.5602080821990967 0.2450999617576599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 -0.2839455306529999 0.12469863146543503 0.9921872615814209 -0.0 1.006239652633667 0.8229754567146301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 -0.2839455306529999 0.0949736014008522 0.9954527616500854 -0.0 1.0142098665237427 0.8244448900222778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4449502229690552 0.19470790028572083 0.21605448424816132 0.0949736014008522 0.9954527616500854 -0.0 0.550495445728302 0.6306784749031067 0 1.0 0 0.0 0 0.0 0 0.0\n0.9361939430236816 -0.1707790642976761 -0.2839455306529999 -0.48020875453948975 -0.8771324753761292 -0.0 0.0358147919178009 0.39780449867248535 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 -0.4042481780052185 -0.9146091938018799 -0.0 0.029709041118621826 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 0.21605445444583893 -0.4042481780052185 -0.9146091938018799 -0.0 0.4247432053089142 0.23605746030807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.34345531463623047 -0.939146101474762 -0.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.01968926191329956 0.7184059023857117 0 1.0 0 0.0 0 0.0 0 0.0\n1.3747813701629639 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599589407444 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 -0.2839455306529999 0.5632495880126953 -0.82625812292099 -0.0 1.0079450607299805 0.43590283393859863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 -0.2839455306529999 0.5882442593574524 -0.808648943901062 -0.0 1.0055162906646729 0.4394006133079529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4391368627548218 -0.16161872446537018 0.21605446934700012 0.5882442593574524 -0.808648943901062 -0.0 0.5818189978599548 0.24963682889938354 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516055583953857 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627194404602051 0.7180825471878052 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186071157455444 -0.0 0.9602533578872681 0.716193675994873 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186071157455444 -0.0 0.5066676139831543 0.553982675075531 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.5282753705978394 -0.8490554690361023 -0.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 -0.2839455306529999 0.5619983673095703 -0.82711261510849 -0.0 0.944807767868042 0.5020663142204285 0 1.0 0 0.0 0 0.0 0 0.0\n0.051302433013916016 -0.1658194363117218 0.21605446934700012 0.5619983673095703 -0.82711261510849 -0.0 0.5305591821670532 0.3482418656349182 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.15738394856452942 0.9875179529190063 -0.0 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 -0.2839455306529999 0.12469863146543503 0.9921872615814209 -0.0 1.006239652633667 0.8229754567146301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4360769987106323 0.19373372197151184 0.21605448424816132 0.12469863146543503 0.9921872615814209 -0.0 0.5551243424415588 0.6301071643829346 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1154334545135498 -0.16682644188404083 -0.2839455306529999 -0.6108585000038147 -0.791711151599884 -0.0 0.0442197322845459 0.5052071809768677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 -0.5687124133110046 -0.8225043416023254 -0.0 0.04172012209892273 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 0.21605446934700012 -0.5687124133110046 -0.8225043416023254 -0.0 0.4214754104614258 0.35296761989593506 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5294803380966187 0.19355982542037964 -0.2839455306529999 -0.14157536625862122 0.9898983836174011 -0.0 0.08913213014602661 0.8128165006637573 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 -0.18469801545143127 0.982787549495697 -0.0 0.0967160165309906 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 0.21605448424816132 -0.18469801545143127 0.982787549495697 -0.0 0.5016401410102844 0.6212486028671265 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 -0.2839455306529999 0.41837823390960693 -0.9082613587379456 -0.0 0.9406315088272095 0.38906025886535645 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 -0.2839455306529999 0.4693136513233185 -0.8830225467681885 -0.0 0.9366409182548523 0.39275485277175903 0 1.0 0 0.0 0 0.0 0 0.0\n1.120154857635498 -0.17277118563652039 0.21605445444583893 0.4693136513233185 -0.8830225467681885 -0.0 0.5557567477226257 0.23950564861297607 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.9283425211906433 0.3716544210910797 -0.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 -0.2839455306529999 0.9355143904685974 0.35322123765945435 -0.0 0.9460681080818176 0.45470309257507324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3165510892868042 -0.1623399257659912 0.21605446934700012 0.9355143904685974 0.35322123765945435 -0.0 0.6536282896995544 0.29756665229797363 0 1.0 0 0.0 0 0.0 0 0.0\n1.2651219367980957 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682137727737427 0.6905054450035095 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022684395313263 0.5451506972312927 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4113178253173828 -0.16391488909721375 -0.2839455306529999 -0.9562669992446899 -0.2923673093318939 -0.0 0.9906004667282104 0.4405066967010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 -0.9546800255775452 -0.29752495884895325 -0.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 0.21605446934700012 -0.9546800255775452 -0.29752495884895325 -0.0 0.6027480363845825 0.25427156686782837 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.3672292232513428 -0.9301126003265381 -0.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 -0.2839455306529999 0.41837823390960693 -0.9082613587379456 -0.0 0.9406315088272095 0.38906025886535645 0 1.0 0 0.0 0 0.0 0 0.0\n1.112642526626587 -0.17649151384830475 0.21605445444583893 0.41837823390960693 -0.9082613587379456 -0.0 0.550920307636261 0.23428791761398315 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.4943388104438782 -0.869228184223175 -0.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 -0.2839455306529999 0.4943388104438782 -0.869228184223175 -0.0 0.9511236548423767 0.49488651752471924 0 1.0 0 0.0 0 0.0 0 0.0\n0.04622983932495117 -0.1691177487373352 -0.2839455306529999 0.5282753705978394 -0.8490554690361023 -0.0 0.9479126930236816 0.4983783960342407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.19345682859420776 0.9810785055160522 -0.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 -0.2839455306529999 0.15738394856452942 0.9875179529190063 -0.0 0.9988397359848022 0.8210697174072266 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276705980300903 0.19254305958747864 0.21605448424816132 0.15738394856452942 0.9875179529190063 -0.0 0.5595005750656128 0.6292844414710999 0 1.0 0 0.0 0 0.0 0 0.0\n0.9478108882904053 -0.17650245130062103 -0.2839455306529999 -0.4042481780052185 -0.9146091938018799 -0.0 0.029709041118621826 0.3916749358177185 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 -0.32877591252326965 -0.9443953037261963 -0.0 0.023186177015304565 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 0.21605445444583893 -0.32877591252326965 -0.9443953037261963 -0.0 0.4330454468727112 0.22857457399368286 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.0249251127243042 0.7145698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 -0.2839455306529999 0.34345531463623047 -0.939146101474762 -0.0 0.02243223786354065 0.7165648937225342 0 1.0 0 0.0 0 0.0 0 0.0\n1.3709065914154053 0.119579017162323 0.21605446934700012 0.34345531463623047 -0.939146101474762 -0.0 0.45770883560180664 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11104297637939453 -0.1700323224067688 -0.2839455306529999 -0.5687124133110046 -0.8225043416023254 -0.0 0.04172012209892273 0.5015124082565308 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 -0.5263221859931946 -0.8502761721611023 -0.0 0.03908824920654297 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 0.21605445444583893 -0.5263221859931946 -0.8502761721611023 -0.0 0.4240148663520813 0.3485482335090637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5393314361572266 0.19193986058235168 -0.2839455306529999 -0.18469801545143127 0.982787549495697 -0.0 0.0967160165309906 0.8084730505943298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 -0.23126927018165588 0.9728690385818481 -0.0 0.10354465246200562 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 0.21605448424816132 -0.23126927018165588 0.9728690385818481 -0.0 0.4969555139541626 0.6185140609741211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.5372173190116882 -0.843409538269043 -0.0 1.0103981494903564 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 -0.2839455306529999 0.5632495880126953 -0.82625812292099 -0.0 1.0079450607299805 0.43590283393859863 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4436075687408447 -0.16476865112781525 0.21605446934700012 0.5632495880126953 -0.82625812292099 -0.0 0.5788551568984985 0.2454366683959961 0 1.0 0 0.0 0 0.0 0 0.0\n1.4550678730010986 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186071157455444 -0.0 0.9602533578872681 0.716193675994873 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579584002494812 0.7141270637512207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085653066635132 0.5522264838218689 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6176066398620605 -0.1661575436592102 -0.2839455306529999 -0.6310006976127625 -0.7757499814033508 -0.0 0.10129424929618835 0.42771822214126587 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 -0.5730155110359192 -0.8195135593414307 -0.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 0.21605445444583893 -0.5730155110359192 -0.8195135593414307 -0.0 0.4511343836784363 0.24751901626586914 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.3164159059524536 -0.9486068487167358 -0.0 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 -0.2839455306529999 0.3672292232513428 -0.9301126003265381 -0.0 0.9447846412658691 0.3857303857803345 0 1.0 0 0.0 0 0.0 0 0.0\n1.1048455238342285 -0.1798202246427536 0.21605445444583893 0.3672292232513428 -0.9301126003265381 -0.0 0.5456847548484802 0.2294696569442749 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.4603717029094696 -0.887691855430603 -0.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 -0.2839455306529999 0.4943388104438782 -0.869228184223175 -0.0 0.9511236548423767 0.49488651752471924 0 1.0 0 0.0 0 0.0 0 0.0\n0.040979623794555664 -0.17224091291427612 0.21605443954467773 0.4943388104438782 -0.869228184223175 -0.0 0.5239675045013428 0.3395310640335083 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.23322245478630066 0.9724112749099731 -0.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 -0.2839455306529999 0.19345682859420776 0.9810785055160522 -0.0 0.9920201301574707 0.8187916874885559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4197313785552979 0.19113591313362122 0.21605448424816132 0.19345682859420776 0.9810785055160522 -0.0 0.563625156879425 0.6282258033752441 0 1.0 0 0.0 0 0.0 0 0.0\n0.9601285457611084 -0.18134532868862152 -0.2839455306529999 -0.32877591252326965 -0.9443953037261963 -0.0 0.023186177015304565 0.3863646388053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 -0.2553483545780182 -0.9668263792991638 -0.0 0.016234666109085083 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 0.21605445444583893 -0.2553483545780182 -0.9668263792991638 -0.0 0.4423677325248718 0.22210901975631714 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 -0.2839455306529999 0.47178563475608826 -0.8816797137260437 -0.0 0.02717110514640808 0.7124300003051758 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.0249251127243042 0.7145698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n1.367337942123413 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556320011615753 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10642385482788086 -0.1730533391237259 -0.2839455306529999 -0.5263221859931946 -0.8502761721611023 -0.0 0.03908824920654297 0.49799811840057373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 -0.4847559928894043 -0.8746299743652344 -0.0 0.03632086515426636 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 0.21605445444583893 -0.4847559928894043 -0.8746299743652344 -0.0 0.42675918340682983 0.34429383277893066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5486863851547241 0.18995991349220276 -0.2839455306529999 -0.23126927018165588 0.9728690385818481 -0.0 0.10354465246200562 0.8037464022636414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 -0.28141117095947266 0.9595629572868347 -0.0 0.10965383052825928 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 0.21605448424816132 -0.28141117095947266 0.9595629572868347 -0.0 0.4925583004951477 0.6155014038085938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.921079158782959 0.3892941176891327 -0.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 -0.2839455306529999 0.9283425211906433 0.3716544210910797 -0.0 0.9456060528755188 0.45131754875183105 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3149055242538452 -0.1665686070919037 0.21605446934700012 0.9283425211906433 0.3716544210910797 -0.0 0.6549756526947021 0.2948046922683716 0 1.0 0 0.0 0 0.0 0 0.0\n1.4583332538604736 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579584002494812 0.7141270637512207 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558334350585938 0.7118881940841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103503465652466 0.5503014326095581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4104689359664917 -0.1666659116744995 -0.2839455306529999 -0.9546800255775452 -0.29752495884895325 -0.0 0.9901849031448364 0.4380425810813904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 -0.2839455306529999 -0.9529099464416504 -0.3032013773918152 -0.0 0.9897835850715637 0.4357222318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 0.21605446934700012 -0.9529099464416504 -0.3031708598136902 -0.0 0.6036663055419922 0.2522021532058716 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 -0.2839455306529999 0.26642659306526184 -0.9638355374336243 -0.0 0.9535930156707764 0.3801887631416321 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 -0.2839455306529999 0.3164159059524536 -0.9486068487167358 -0.0 0.9491041898727417 0.382770836353302 0 1.0 0 0.0 0 0.0 0 0.0\n1.0967638492584229 -0.18275731801986694 0.21605445444583893 0.3164159059524536 -0.9486068487167358 -0.0 0.5400393009185791 0.22507810592651367 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.42597734928131104 -0.904721200466156 -0.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 -0.2839455306529999 0.4603717029094696 -0.887691855430603 -0.0 0.9544415473937988 0.49159348011016846 0 1.0 0 0.0 0 0.0 0 0.0\n0.03555178642272949 -0.17518897354602814 0.21605445444583893 0.4603717029094696 -0.887691855430603 -0.0 0.5203983187675476 0.33552277088165283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 -0.2839455306529999 0.2771080732345581 0.9608142375946045 -0.0 0.9801024794578552 0.8133453130722046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 -0.2839455306529999 0.23322245478630066 0.9724112749099731 -0.0 0.9857782125473022 0.8161996603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4122591018676758 0.18951231241226196 0.21605448424816132 0.23322245478630066 0.9724112749099731 -0.0 0.5675007104873657 0.6269457340240479 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 -0.2839455306529999 0.5498825311660767 -0.8352305889129639 -0.0 0.02917507290840149 0.7101532816886902 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 -0.2839455306529999 0.47178563475608826 -0.8816797137260437 -0.0 0.02717110514640808 0.7124300003051758 0 1.0 0 0.0 0 0.0 0 0.0\n1.3640763759613037 0.1165628731250763 0.21605446934700012 0.47178563475608826 -0.8816797137260437 -0.0 0.4537268579006195 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10157608985900879 -0.1758894920349121 -0.2839455306529999 -0.4847559928894043 -0.8746299743652344 -0.0 0.03632086515426636 0.49466484785079956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 -0.4444410502910614 -0.8957793116569519 -0.0 0.033449530601501465 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 0.21605445444583893 -0.4444410502910614 -0.8957793116569519 -0.0 0.42967790365219116 0.3402499556541443 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.21759697794914246 -0.9760124683380127 -0.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 -0.2839455306529999 0.26642659306526184 -0.9638355374336243 -0.0 0.9535930156707764 0.3801887631416321 0 1.0 0 0.0 0 0.0 0 0.0\n1.088397741317749 -0.18530280888080597 0.21605445444583893 0.26642659306526184 -0.9638355374336243 -0.0 0.5339774489402771 0.22114479541778564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 -0.2839455306529999 0.5101473927497864 -0.8600726127624512 -0.0 1.0128761529922485 0.42947977781295776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 -0.2839455306529999 0.5372173190116882 -0.843409538269043 -0.0 1.0103981494903564 0.43259626626968384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4481269121170044 -0.1677483171224594 0.21605446934700012 0.5372173190116882 -0.843409538269043 -0.0 0.5757732391357422 0.2414644956588745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4614017009735107 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558334350585938 0.7118881940841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538769721984863 0.7094813585281372 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.5120236873626709 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.3254493772983551 0.9455549716949463 -0.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 -0.2839455306529999 0.2771080732345581 0.9608142375946045 -0.0 0.9801024794578552 0.8133453130722046 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4052537679672241 0.1876722276210785 0.21605448424816132 0.2771080732345581 0.9608142375946045 -0.0 0.5711308121681213 0.6254566311836243 0 1.0 0 0.0 0 0.0 0 0.0\n0.9731466770172119 -0.18530766665935516 -0.2839455306529999 -0.2553483545780182 -0.9668263792991638 -0.0 0.016234666109085083 0.3818973898887634 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 -0.18515579402446747 -0.982695996761322 -0.0 0.008848100900650024 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 0.21605445444583893 -0.18515579402446747 -0.982695996761322 -0.0 0.45271965861320496 0.21679538488388062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.409644365310669 -0.1692855805158615 -0.2839455306529999 -0.9529099464416504 -0.3032013773918152 -0.0 0.9897835850715637 0.4357222318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 -0.9508957266807556 -0.3094271719455719 -0.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 0.21605445444583893 -0.9508957266807556 -0.3094271719455719 -0.0 0.6045523881912231 0.2502666711807251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575450658798218 0.18761995434761047 -0.2839455306529999 -0.28141117095947266 0.9595629572868347 -0.0 0.10965383052825928 0.7987056970596313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 -0.335001677274704 0.9421979188919067 -0.0 0.1150856614112854 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 0.21605448424816132 -0.335001677274704 0.9421979188919067 -0.0 0.48844146728515625 0.6122236251831055 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.3904538154602051 -0.9205908179283142 -0.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 -0.2839455306529999 0.42597734928131104 -0.904721200466156 -0.0 0.9578284025192261 0.48853766918182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.03000950813293457 -0.17793026566505432 0.21605445444583893 0.42597734928131104 -0.904721200466156 -0.0 0.5166881084442139 0.33180397748947144 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 -0.2839455306529999 0.6188543438911438 -0.7854548692703247 -0.0 0.03036937117576599 0.7084847688674927 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 -0.2839455306529999 0.5498825311660767 -0.8352305889129639 -0.0 0.02917507290840149 0.7101532816886902 0 1.0 0 0.0 0 0.0 0 0.0\n1.3611209392547607 0.11482855677604675 0.21605446934700012 0.5498825311660767 -0.8352305889129639 -0.0 0.45199093222618103 0.5508368015289307 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09656071662902832 -0.1785188913345337 -0.2839455306529999 -0.4444410502910614 -0.8957793116569519 -0.0 0.033449530601501465 0.49154067039489746 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 -0.4040650725364685 -0.9147007465362549 -0.0 0.030506521463394165 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 0.21605445444583893 -0.4040650725364685 -0.9147007465362549 -0.0 0.43273794651031494 0.3364626169204712 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.17029328644275665 -0.9853816032409668 -0.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 -0.2839455306529999 0.21759697794914246 -0.9760124683380127 -0.0 0.9582534432411194 0.3779926896095276 0 1.0 0 0.0 0 0.0 0 0.0\n1.079746961593628 -0.18745668232440948 0.21605445444583893 0.21759697794914246 -0.9760124683380127 -0.0 0.5274980664253235 0.2177051305770874 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.4820703864097595 -0.8761253952980042 -0.0 1.0153790712356567 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 -0.2839455306529999 0.5101473927497864 -0.8600726127624512 -0.0 1.0128761529922485 0.42947977781295776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4526948928833008 -0.17055772244930267 0.21605445444583893 0.5101168751716614 -0.8600726127624512 -0.0 0.5725734233856201 0.23772281408309937 0 1.0 0 0.0 0 0.0 0 0.0\n1.46427321434021 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538769721984863 0.7094813585281372 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5135997533798218 0.5459520816802979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.3784600496292114 0.9255958795547485 -0.0 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 -0.2839455306529999 0.3254493772983551 0.9455549716949463 -0.0 0.9749752879142761 0.8102735877037048 0 1.0 0 0.0 0 0.0 0 0.0\n-1.398715615272522 0.1856156587600708 0.21605448424816132 0.3254493772983551 0.9455549716949463 -0.0 0.5745198130607605 0.6237694025039673 0 1.0 0 0.0 0 0.0 0 0.0\n0.9868652820587158 -0.18838949501514435 -0.2839455306529999 -0.18515579402446747 -0.982695996761322 -0.0 0.008848100900650024 0.3783048391342163 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 -0.1190221905708313 -0.9928891658782959 -0.0 0.001026839017868042 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 0.21605445444583893 -0.1190221905708313 -0.9928891658782959 -0.0 0.464069128036499 0.212787926197052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.61158287525177 -0.17070366442203522 -0.2839455306529999 -0.5730155110359192 -0.8195135593414307 -0.0 0.09803354740142822 0.4236064553260803 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 -0.5124973058700562 -0.8586688041687012 -0.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 0.21605445444583893 -0.5124973058700562 -0.8586688041687012 -0.0 0.45487111806869507 0.24198591709136963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.565907597541809 0.18492001295089722 -0.2839455306529999 -0.335001677274704 0.9421979188919067 -0.0 0.1150856614112854 0.793408215045929 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 -0.39191868901252747 0.9199804663658142 -0.0 0.11988469958305359 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 0.21605448424816132 -0.39191868901252747 0.9199804663658142 -0.0 0.4845971167087555 0.6086910367012024 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.35383158922195435 -0.9353007674217224 -0.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 -0.2839455306529999 0.3904538154602051 -0.9205908179283142 -0.0 0.9612451195716858 0.48575735092163086 0 1.0 0 0.0 0 0.0 0 0.0\n0.024416208267211914 -0.18043318390846252 0.21605445444583893 0.3904538154602051 -0.9205908179283142 -0.0 0.5128822922706604 0.3284263610839844 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712271451950073 -0.0 0.8871409893035889 0.6785174608230591 0 1.0 0 0.0 0 0.0 0 0.0\n1.5743725299835205 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712271451950073 -0.0 0.5691015720367432 0.5396533012390137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.09143805503845215 -0.18091964721679688 -0.2839455306529999 -0.4040650725364685 -0.9147007465362549 -0.0 0.030506521463394165 0.48865455389022827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 -0.3629566431045532 -0.9317911267280579 -0.0 0.027490437030792236 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 0.21605445444583893 -0.3629566431045532 -0.9317911267280579 -0.0 0.43594032526016235 0.3329399824142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 -0.2839455306529999 0.12475966662168503 -0.9921567440032959 -0.0 0.968092679977417 0.37479931116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 -0.2839455306529999 0.17029328644275665 -0.9853816032409668 -0.0 0.963086724281311 0.376192569732666 0 1.0 0 0.0 0 0.0 0 0.0\n1.0708115100860596 -0.1892189383506775 0.21605445444583893 0.17029328644275665 -0.9853816032409668 -0.0 0.5206069350242615 0.21479815244674683 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.9137852191925049 0.4061403274536133 -0.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 -0.2839455306529999 0.921079158782959 0.3892941176891327 -0.0 0.945106029510498 0.4479633569717407 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3131457567214966 -0.17084351181983948 0.21605445444583893 0.921079158782959 0.3892941176891327 -0.0 0.656374454498291 0.2921108603477478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.4292428493499756 0.9031647443771362 -0.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 -0.2839455306529999 0.3784600496292114 0.9255958795547485 -0.0 0.9703744649887085 0.8070228099822998 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3926442861557007 0.1833426058292389 0.21605448424816132 0.3784600496292114 0.9255958795547485 -0.0 0.5776726603507996 0.6218934059143066 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4088441133499146 -0.17177391052246094 -0.2839455306529999 -0.9508957266807556 -0.3094271719455719 -0.0 0.9893962144851685 0.4335421919822693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 -0.2839455306529999 -0.9486373662948608 -0.3163243532180786 -0.0 0.989022433757782 0.43149906396865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 0.21605445444583893 -0.9486373662948608 -0.3163243532180786 -0.0 0.6054056882858276 0.2484617829322815 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.6719870567321777 -0.7405316233634949 -0.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 -0.2839455306529999 0.6188543438911438 -0.7854548692703247 -0.0 0.03036937117576599 0.7084847688674927 0 1.0 0 0.0 0 0.0 0 0.0\n1.359330415725708 0.11351263523101807 0.21605446934700012 0.6188543438911438 -0.7854548692703247 -0.0 0.4509287476539612 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-1.573773980140686 0.181860089302063 -0.2839455306529999 -0.39191868901252747 0.9199804663658142 -0.0 0.11988469958305359 0.7878999710083008 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 -0.4516434073448181 0.8921781182289124 -0.0 0.12409523129463196 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 0.21605448424816132 -0.4516434073448181 0.8921781182289124 -0.0 0.48101699352264404 0.6049108505249023 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.08117923140525818 -0.9966734647750854 -0.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 -0.2839455306529999 0.12475966662168503 -0.9921567440032959 -0.0 0.968092679977417 0.37479931116104126 0 1.0 0 0.0 0 0.0 0 0.0\n1.061591625213623 -0.19058957695960999 0.21605445444583893 0.12475966662168503 -0.9921567440032959 -0.0 0.5133183598518372 0.21246552467346191 0 1.0 0 0.0 0 0.0 0 0.0\n1.2627358436584473 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741724491119385 0.6831651926040649 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009055495262146 0.538192629814148 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.3161717653274536 -0.9486678838729858 -0.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 -0.2839455306529999 0.35383158922195435 -0.9353007674217224 -0.0 0.9646912813186646 0.48325538635253906 0 1.0 0 0.0 0 0.0 0 0.0\n0.018771886825561523 -0.18269772827625275 0.21605445444583893 0.35383158922195435 -0.9353007674217224 -0.0 0.508985698223114 0.32539719343185425 0 1.0 0 0.0 0 0.0 0 0.0\n1.0012843608856201 -0.19059079885482788 -0.2839455306529999 -0.1190221905708313 -0.9928891658782959 -0.0 1.0010268688201904 0.3756256103515625 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 -0.05743583291769028 -0.9983214735984802 -0.0 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 0.21605445444583893 -0.05743583291769028 -0.9983214735984802 -0.0 1.476330280303955 0.21025210618972778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.08620834350585938 -0.18309177458286285 -0.2839455306529999 -0.3629566431045532 -0.9317911267280579 -0.0 0.027490437030792236 0.48600929975509644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 -0.32139042019844055 -0.9469283223152161 -0.0 0.02440011501312256 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4392855167388916 0.3296908140182495 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.4530472755432129 -0.8914456367492676 -0.0 1.0179073810577393 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 -0.2839455306529999 0.4820703864097595 -0.8761253952980042 -0.0 1.0153790712356567 0.426551878452301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4573115110397339 -0.17319685220718384 0.21605445444583893 0.4820703864097595 -0.8761253952980042 -0.0 0.569256603717804 0.23421460390090942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.4697103798389435 0.8828089237213135 -0.0 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 -0.2839455306529999 0.4292428493499756 0.9031647443771362 -0.0 0.9662760496139526 0.8036254048347473 0 1.0 0 0.0 0 0.0 0 0.0\n-1.387040138244629 0.18085306882858276 0.21605448424816132 0.4292428493499756 0.9031647443771362 -0.0 0.580594539642334 0.6198358535766602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4080681800842285 -0.1741308867931366 -0.2839455306529999 -0.9486373662948608 -0.3163243532180786 -0.0 0.989022433757782 0.43149906396865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 -0.9460432529449463 -0.3239845037460327 -0.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 0.21605445444583893 -0.9460432529449463 -0.3239845037460327 -0.0 0.606225848197937 0.24678385257720947 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 -0.2839455306529999 0.7252418398857117 -0.6884670257568359 -0.0 0.03240564465522766 0.7049999833106995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 -0.2839455306529999 0.6719870567321777 -0.7405316233634949 -0.0 0.03144568204879761 0.7067665457725525 0 1.0 0 0.0 0 0.0 0 0.0\n1.3576958179473877 0.11213347315788269 0.21605446934700012 0.6719870567321777 -0.7405316233634949 -0.0 0.44995152950286865 0.5479726791381836 0 1.0 0 0.0 0 0.0 0 0.0\n-1.581144094467163 0.1784401535987854 -0.2839455306529999 -0.4516434073448181 0.8921781182289124 -0.0 0.12409523129463196 0.7822171449661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 -0.5134739279747009 0.8580889105796814 -0.0 0.12776002287864685 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 0.21605448424816132 -0.5134739279747009 0.8580889105796814 -0.0 0.4776924252510071 0.6008874773979187 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 -0.2839455306529999 0.039674062281847 -0.99920654296875 -0.0 0.9786159992218018 0.373282253742218 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 -0.2839455306529999 0.08117923140525818 -0.9966734647750854 -0.0 0.973270058631897 0.3738250136375427 0 1.0 0 0.0 0 0.0 0 0.0\n1.0520870685577393 -0.19156861305236816 0.21605445444583893 0.08117923140525818 -0.9966734647750854 -0.0 0.5056557655334473 0.21075117588043213 0 1.0 0 0.0 0 0.0 0 0.0\n1.4669716358184814 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520698189735413 0.7069165110588074 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503920078277588 0.7042019963264465 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150936245918274 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.2776573896408081 -0.9606616497039795 -0.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 -0.2839455306529999 0.3161717653274536 -0.9486678838729858 -0.0 0.9681662321090698 0.4810340404510498 0 1.0 0 0.0 0 0.0 0 0.0\n0.013076543807983398 -0.184723898768425 0.21605445444583893 0.3161717653274536 -0.9486678838729858 -0.0 0.5050041079521179 0.32272303104400635 0 1.0 0 0.0 0 0.0 0 0.0\n1.016404151916504 -0.19191157817840576 -0.2839455306529999 -0.05743583291769028 -0.9983214735984802 -0.0 0.9927797317504883 0.37390339374542236 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 -0.2839455306529999 -0.004181035794317722 -0.999969482421875 -0.0 0.9841258525848389 0.3731839060783386 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 0.21605445444583893 -0.004181035794317722 -0.999969482421875 -0.0 1.4893549680709839 0.20935219526290894 0 1.0 0 0.0 0 0.0 0 0.0\n-1.605220913887024 -0.1748168170452118 -0.2839455306529999 -0.5124973058700562 -0.8586688041687012 -0.0 0.09462365508079529 0.419883131980896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 -0.4504531919956207 -0.8927884697914124 -0.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 0.21605445444583893 -0.4504531919956207 -0.8927884697914124 -0.0 0.459004670381546 0.2368086576461792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0808718204498291 -0.18503524363040924 -0.2839455306529999 -0.32139042019844055 -0.9469283223152161 -0.0 0.02440011501312256 0.48360782861709595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 -0.2796105742454529 -0.9600818157196045 -0.0 0.021234214305877686 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 0.21605445444583893 -0.2796105742454529 -0.9600818157196045 -0.0 0.4427735507488251 0.326724112033844 0 1.0 0 0.0 0 0.0 0 0.0\n1.032224416732788 -0.19235184788703918 -0.2839455306529999 -0.004181035794317722 -0.999969482421875 -0.0 0.9841258525848389 0.3731839060783386 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 -0.2839455306529999 0.039674062281847 -0.99920654296875 -0.0 0.9786159992218018 0.373282253742218 0 1.0 0 0.0 0 0.0 0 0.0\n1.0422980785369873 -0.19215603172779083 0.21605445444583893 0.039674062281847 -0.99920654296875 -0.0 0.49765321612358093 0.20969903469085693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 -0.2839455306529999 0.5051729083061218 0.8630024194717407 -0.0 0.959189236164093 0.7965185046195984 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 -0.2839455306529999 0.4697103798389435 0.8828089237213135 -0.0 0.962579071521759 0.8001152873039246 0 1.0 0 0.0 0 0.0 0 0.0\n-1.381801962852478 0.17819690704345703 0.21605448424816132 0.4697103798389435 0.8828089237213135 -0.0 0.5833354592323303 0.6176351308822632 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 -0.2839455306529999 -1.0 0.0 -0.0 0.07622396945953369 0.8483100533485413 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 -0.2839455306529999 -1.0 0.0 -0.0 0.07032191753387451 0.8121410012245178 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 0.21605448424816132 -1.0 0.0 -0.0 0.4341694116592407 0.6617535948753357 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 -0.2839455306529999 0.7772759199142456 -0.6291085481643677 -0.0 0.03325092792510986 0.7031859159469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 -0.2839455306529999 0.7252418398857117 -0.6884670257568359 -0.0 0.03240564465522766 0.7049999833106995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3562171459197998 0.11069107055664062 0.21605446934700012 0.7252418398857117 -0.6884670257568359 -0.0 0.44905880093574524 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.9064607620239258 0.4222540855407715 -0.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 -0.2839455306529999 0.9137852191925049 0.4061403274536133 -0.0 0.9445689916610718 0.44464319944381714 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3112715482711792 -0.17516463994979858 0.21605445444583893 0.9137852191925049 0.4061403274536133 -0.0 0.6578232645988464 0.2894875407218933 0 1.0 0 0.0 0 0.0 0 0.0\n1.46952223777771 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503920078277588 0.7042019963264465 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488427639007568 0.701339602470398 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165054798126221 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.2385021448135376 -0.9711294770240784 -0.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 -0.2839455306529999 0.2776573896408081 -0.9606616497039795 -0.0 0.9716694355010986 0.4790952801704407 0 1.0 0 0.0 0 0.0 0 0.0\n0.0073299407958984375 -0.18651169538497925 0.21605445444583893 0.2776573896408081 -0.9606616497039795 -0.0 0.5009436011314392 0.32041001319885254 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.5418866276741028 0.8404186964035034 -0.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 -0.2839455306529999 0.5051729083061218 0.8630024194717407 -0.0 0.959189236164093 0.7965185046195984 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3768290281295776 0.1754239797592163 0.21605448424816132 0.5051729083061218 0.8630024194717407 -0.0 0.5859435200691223 0.6153281331062317 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 0.8829363584518433 0.837841272354126 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 1.0762239694595337 0.8483100533485413 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.4373004734516144 0.6980294585227966 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07542824745178223 -0.18675006926059723 -0.2839455306529999 -0.2796105742454529 -0.9600818157196045 -0.0 0.021234214305877686 0.481453001499176 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 -0.2378612607717514 -0.9712820649147034 -0.0 0.01799166202545166 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 0.21605445444583893 -0.2378612607717514 -0.9712820649147034 -0.0 0.4464035928249359 0.32404953241348267 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5880180597305298 0.17466023564338684 -0.2839455306529999 -0.5134739279747009 0.8580889105796814 -0.0 0.12776002287864685 0.7763864398002625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 -0.573870062828064 0.8189031481742859 -0.0 0.1309186816215515 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 0.21605448424816132 -0.573870062828064 0.8189031481742859 -0.0 0.4746149778366089 0.5966225862503052 0 1.0 0 0.0 0 0.0 0 0.0\n0.914886474609375 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 1.0703219175338745 0.8121410012245178 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 0.8911066055297852 0.8022257685661316 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.5467431545257568 0.6560397148132324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 -0.2839455306529999 0.42316964268684387 -0.9060335159301758 -0.0 1.0204609632492065 0.42125678062438965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 -0.2839455306529999 0.4530472755432129 -0.8914456367492676 -0.0 1.0179073810577393 0.42381131649017334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4619768857955933 -0.1756657212972641 0.21605445444583893 0.4530472755432129 -0.8914456367492676 -0.0 0.5658243298530579 0.23094266653060913 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.24932944774627686 -0.2839455306529999 1.0 0.0 -0.0 0.8911066055297852 0.8022257685661316 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 -0.2839455306529999 1.0 0.0 -0.0 0.8829363584518433 0.837841272354126 0 1.0 0 0.0 0 0.0 0 0.0\n1.1404554843902588 0.314128041267395 0.21605446934700012 0.999969482421875 0.0 -0.0 0.5445256233215332 0.6925103664398193 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4073165655136108 -0.1763565093278885 -0.2839455306529999 -0.9460432529449463 -0.3239845037460327 -0.0 0.9886620044708252 0.42958980798721313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 -0.2839455306529999 -0.9430524706840515 -0.3325907289981842 -0.0 0.9883145093917847 0.4278113842010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 0.21605445444583893 -0.9430524706840515 -0.3325907289981842 -0.0 0.6070125102996826 0.24522966146469116 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 -0.2839455306529999 0.826776921749115 -0.5624866485595703 -0.0 0.0339830219745636 0.7013248801231384 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 -0.2839455306529999 0.7772759199142456 -0.6291085481643677 -0.0 0.03325092792510986 0.7031859159469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3548939228057861 0.10918542742729187 0.21605446934700012 0.7772759199142456 -0.6291085481643677 -0.0 0.44824984669685364 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889223575592041 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 0.21605448424816132 -0.036133915185928345 0.99932861328125 -0.0 1.4772623777389526 0.6266326904296875 0 1.0 0 0.0 0 0.0 0 0.0\n1.471924066543579 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488427639007568 0.701339602470398 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178361535072327 0.5382644534111023 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.1988280862569809 -0.9800103902816772 -0.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 -0.2839455306529999 0.2385021448135376 -0.9711294770240784 -0.0 0.9751999378204346 0.4774407744407654 0 1.0 0 0.0 0 0.0 0 0.0\n0.0015323162078857422 -0.18806111812591553 0.21605445444583893 0.2385021448135376 -0.9711294770240784 -0.0 0.49681156873703003 0.31846362352371216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06987762451171875 -0.18823625147342682 -0.2839455306529999 -0.2378612607717514 -0.9712820649147034 -0.0 0.01799166202545166 0.4795478582382202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 -0.19635608792304993 -0.9804986715316772 -0.0 0.014671623706817627 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 0.21605445444583893 -0.19635608792304993 -0.9804986715316772 -0.0 0.45017388463020325 0.32167673110961914 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.9786590337753296 0.7900840640068054 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 -0.2839455306529999 -0.0018005920574069023 0.999969482421875 -0.0 0.9889223575592041 0.7905939221382141 0 1.0 0 0.0 0 0.0 0 0.0\n0.4178636074066162 0.19643977284431458 0.21605448424816132 -0.0018005920574069023 0.999969482421875 -0.0 1.484412431716919 0.626757025718689 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.39243751764297485 -0.9197668433189392 -0.0 1.0230402946472168 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 -0.2839455306529999 0.42316964268684387 -0.9060335159301758 -0.0 1.0204609632492065 0.42125678062438965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4666908979415894 -0.17796431481838226 0.21605445444583893 0.42316964268684387 -0.9060335159301758 -0.0 0.5622788071632385 0.22790998220443726 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4065892696380615 -0.1784507930278778 -0.2839455306529999 -0.9430524706840515 -0.3325907289981842 -0.0 0.9883145093917847 0.4278113842010498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 -0.939573347568512 -0.3422955870628357 -0.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 0.21605445444583893 -0.939573347568512 -0.3422955870628357 -0.0 0.607765257358551 0.24379628896713257 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 0.21605448424816132 0.13031403720378876 0.9914548397064209 -0.0 0.5097607374191284 0.6224871873855591 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 -0.2839455306529999 0.8721274733543396 -0.48924222588539124 -0.0 0.03460294008255005 0.6994173526763916 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 -0.2839455306529999 0.826776921749115 -0.5624866485595703 -0.0 0.0339830219745636 0.7013248801231384 0 1.0 0 0.0 0 0.0 0 0.0\n1.3537261486053467 0.10761654376983643 0.21605446934700012 0.826776921749115 -0.5624866485595703 -0.0 0.4475242495536804 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 -0.2839455306529999 0.02865688130259514 0.99957275390625 -0.0 0.9786590337753296 0.7900840640068054 0 1.0 0 0.0 0 0.0 0 0.0\n0.43031740188598633 0.19626706838607788 0.21605448424816132 0.02865688130259514 0.99957275390625 -0.0 0.49122709035873413 0.6263492107391357 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02811935544013977 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.036156296730041504 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 0.21605448424816132 -0.2143009752035141 0.9767448902130127 -0.0 0.45214876532554626 0.6206685304641724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.158879354596138 -0.9872737526893616 -0.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 -0.2839455306529999 0.1988280862569809 -0.9800103902816772 -0.0 0.9787569046020508 0.4760715961456299 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0043163299560546875 -0.18937218189239502 0.21605445444583893 0.1988280862569809 -0.9800103902816772 -0.0 0.49261587858200073 0.3168887495994568 0 1.0 0 0.0 0 0.0 0 0.0\n0.4047873020172119 0.1962110698223114 -0.2839455306529999 -0.036133915185928345 0.99932861328125 -0.0 0.9996861219406128 0.790111780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 1.009852409362793 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 0.21605448424816132 -0.07519760727882385 0.9971618056297302 -0.0 1.4704532623291016 0.6259280443191528 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5985209941864014 -0.17849700152873993 -0.2839455306529999 -0.4504531919956207 -0.8927884697914124 -0.0 0.09105780720710754 0.41654813289642334 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 -0.3879207670688629 -0.921689510345459 -0.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 0.21605445444583893 -0.3879207670688629 -0.921689510345459 -0.0 0.46355491876602173 0.23200583457946777 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.9117404818534851 -0.4107486307621002 -0.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 -0.2839455306529999 0.8721274733543396 -0.48924222588539124 -0.0 0.03460294008255005 0.6994173526763916 0 1.0 0 0.0 0 0.0 0 0.0\n1.3527143001556396 0.10598441958427429 0.21605446934700012 0.8721274733543396 -0.48924222588539124 -0.0 0.446882039308548 0.5414314270019531 0 1.0 0 0.0 0 0.0 0 0.0\n-0.06421995162963867 -0.189493790268898 -0.2839455306529999 -0.19635608792304993 -0.9804986715316772 -0.0 0.014671623706817627 0.47789525985717773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 -0.15540024638175964 -0.9878231287002563 -0.0 0.011273443698883057 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 0.21605445444583893 -0.15540024638175964 -0.9878231287002563 -0.0 0.4540817141532898 0.3196159601211548 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 -0.2839455306529999 0.17062897980213165 0.9853205680847168 -0.0 0.9434916973114014 0.7804332971572876 0 1.0 0 0.0 0 0.0 0 0.0\n0.4746840000152588 0.19212231040000916 0.21605448424816132 0.17062897980213165 0.9853205680847168 -0.0 0.5152760744094849 0.6204148530960083 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.9540696144104004 0.299539178609848 -0.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865392804145813 0.6703754663467407 0 1.0 0 0.0 0 0.0 0 0.0\n1.5771892070770264 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707830190658569 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 -0.2839455306529999 0.05960264801979065 0.9981994032859802 -0.0 0.9689275026321411 0.7887187004089355 0 1.0 0 0.0 0 0.0 0 0.0\n0.4422264099121094 0.19574898481369019 0.21605448424816132 0.05960264801979065 0.9981994032859802 -0.0 0.4977310299873352 0.6254823803901672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.9027680158615112 0.4300973415374756 -0.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 -0.2839455306529999 0.9064607620239258 0.4222540855407715 -0.0 0.943996250629425 0.4413594603538513 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3092831373214722 -0.1795319765806198 0.21605445444583893 0.9064607620239258 0.4222540855407715 -0.0 0.6593202352523804 0.28693681955337524 0 1.0 0 0.0 0 0.0 0 0.0\n0.3583190441131592 0.19072362780570984 -0.2839455306529999 -0.2143009752035141 0.9767448902130127 -0.0 0.036156296730041504 0.7792717218399048 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345867037773132 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 0.21605448424816132 -0.2685323655605316 0.9632557034492493 -0.0 0.44675490260124207 0.6179690361022949 0 1.0 0 0.0 0 0.0 0 0.0\n1.2608799934387207 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772903680801392 0.6757194399833679 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975225925445557 0.53098064661026 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.1188390776515007 -0.9928891658782959 -0.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 -0.2839455306529999 0.158879354596138 -0.9872737526893616 -0.0 0.9823390245437622 0.47498881816864014 0 1.0 0 0.0 0 0.0 0 0.0\n-0.010215997695922852 -0.19044485688209534 0.21605445444583893 0.158879354596138 -0.9872737526893616 -0.0 0.4883649945259094 0.3156893849372864 0 1.0 0 0.0 0 0.0 0 0.0\n0.39229464530944824 0.1955251395702362 -0.2839455306529999 -0.07519760727882385 0.9971618056297302 -0.0 0.009852409362792969 0.7886282801628113 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019345253705978394 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 0.21605448424816132 -0.11777092516422272 0.9930112361907959 -0.0 0.46399572491645813 0.624677300453186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05845522880554199 -0.1905226856470108 -0.2839455306529999 -0.15540024638175964 -0.9878231287002563 -0.0 0.011273443698883057 0.4764983654022217 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 -0.11511582136154175 -0.9933469891548157 -0.0 0.007796823978424072 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 0.21605445444583893 -0.11511582136154175 -0.9933469891548157 -0.0 0.45812341570854187 0.3178775906562805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.36082032322883606 -0.9326151013374329 -0.0 1.025646448135376 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 -0.2839455306529999 0.39243751764297485 -0.9197668433189392 -0.0 1.0230402946472168 0.41888707876205444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4714535474777222 -0.18009264767169952 0.21605445444583893 0.39243751764297485 -0.9197668433189392 -0.0 0.5586231350898743 0.22511959075927734 0 1.0 0 0.0 0 0.0 0 0.0\n1.474177598953247 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474200010299683 0.6983304023742676 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461220502853394 0.6951749324798584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.5190862417221069 0.5353896021842957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4058862924575806 -0.18041372299194336 -0.2839455306529999 -0.939573347568512 -0.3422955870628357 -0.0 0.9879797697067261 0.4261610507965088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 -0.2839455306529999 -0.9354838728904724 -0.35331279039382935 -0.0 0.9876574277877808 0.4246361255645752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 0.21605445444583893 -0.9354838728904724 -0.35331279039382935 -0.0 0.6084837913513184 0.2424808144569397 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 -0.2839455306529999 0.2145756334066391 0.9766838550567627 -0.0 0.9363412857055664 0.7765765190124512 0 1.0 0 0.0 0 0.0 0 0.0\n0.48441362380981445 0.1902226209640503 0.21605448424816132 0.2145756334066391 0.9766838550567627 -0.0 0.5204581022262573 0.6179935932159424 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 0.19367659091949463 -0.2839455306529999 0.13031403720378876 0.9914548397064209 -0.0 0.9513112306594849 0.7838000059127808 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 -0.2839455306529999 0.09341716021299362 0.9956053495407104 -0.0 0.9597970247268677 0.7865921854972839 0 1.0 0 0.0 0 0.0 0 0.0\n0.45359039306640625 0.1948854923248291 0.21605448424816132 0.09341716021299362 0.9956053495407104 -0.0 0.5039113759994507 0.6241854429244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.3481614589691162 0.18820855021476746 -0.2839455306529999 -0.2685323655605316 0.9632557034492493 -0.0 0.04345867037773132 0.7748587131500244 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.050045162439346313 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 0.21605448424816132 -0.3266090750694275 0.9451277256011963 -0.0 0.4417054355144501 0.6148390769958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0788903459906578 -0.9968565702438354 -0.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 -0.2839455306529999 0.1188390776515007 -0.9928891658782959 -0.0 0.9859455823898315 0.4741927981376648 0 1.0 0 0.0 0 0.0 0 0.0\n-0.01616692543029785 -0.19127915799617767 0.21605445444583893 0.1188390776515007 -0.9928891658782959 -0.0 1.4840677976608276 0.3148688077926636 0 1.0 0 0.0 0 0.0 0 0.0\n0.3803856372833252 0.1943819224834442 -0.2839455306529999 -0.11777092516422272 0.9930112361907959 -0.0 0.019345253705978394 0.7862547636032104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 -0.2839455306529999 -0.16406750679016113 0.9864192605018616 -0.0 0.02811935544013977 0.783101499080658 0 1.0 0 0.0 0 0.0 0 0.0\n0.3690605163574219 0.19278141856193542 0.21605448424816132 -0.16406750679016113 0.9864192605018616 -0.0 0.45789432525634766 0.6229138374328613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5914828777313232 -0.18174423277378082 -0.2839455306529999 -0.3879207670688629 -0.921689510345459 -0.0 0.08732900023460388 0.41360336542129517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 -0.3258766531944275 -0.9454023838043213 -0.0 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 0.21605445444583893 -0.3258766531944275 -0.9454023838043213 -0.0 0.46853989362716675 0.22760164737701416 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 -0.2839455306529999 0.9444258213043213 -0.32862329483032227 -0.0 0.03551158308982849 0.6954619884490967 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 -0.2839455306529999 0.9117404818534851 -0.4107486307621002 -0.0 0.03511199355125427 0.6974631547927856 0 1.0 0 0.0 0 0.0 0 0.0\n1.351858377456665 0.10428905487060547 0.21605446934700012 0.9117404818534851 -0.4107486307621002 -0.0 0.4463229477405548 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05258345603942871 -0.1913229376077652 -0.2839455306529999 -0.11511582136154175 -0.9933469891548157 -0.0 0.007796823978424072 0.47536009550094604 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 -0.07571642100811005 -0.9971007108688354 -0.0 0.00424155592918396 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 0.21605446934700012 -0.07571642100811005 -0.9971007108688354 -0.0 0.4622941017150879 0.3164721131324768 0 1.0 0 0.0 0 0.0 0 0.0\n1.4762828350067139 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461220502853394 0.6951749324798584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 -0.2839455306529999 -0.8272042274475098 -0.5618457794189453 -0.0 0.9449471235275269 0.6918734312057495 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 0.21605446934700012 -0.8272042274475098 -0.5618457794189453 -0.0 0.5202562808990479 0.532355546951294 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239929914474487 0.7676823139190674 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 -0.2839455306529999 0.2623981535434723 0.964934229850769 -0.0 0.929848849773407 0.7723045945167542 0 1.0 0 0.0 0 0.0 0 0.0\n0.49359822273254395 0.18797752261161804 0.21605448424816132 0.2623981535434723 0.964934229850769 -0.0 0.5253105163574219 0.6152456402778625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 -0.2839455306529999 0.32856225967407227 -0.9444563388824463 -0.0 1.0282809734344482 0.41469669342041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 -0.2839455306529999 0.36082032322883606 -0.9326151013374329 -0.0 1.025646448135376 0.4167007803916931 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4762672185897827 -0.18205071985721588 0.21605445444583893 0.36082032322883606 -0.9326151013374329 -0.0 0.5548592209815979 0.2225743532180786 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 -0.2839455306529999 -0.00039674062281847 0.999969482421875 -0.0 0.0064716339111328125 0.7823371291160583 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 -0.2839455306529999 -0.047090061008930206 0.9988707900047302 -0.0 0.01697695255279541 0.7806612253189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 0.21605446934700012 -0.047090061008930206 0.9988707900047302 -0.0 0.46527335047721863 0.618800163269043 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.039246805012226105 -0.99920654296875 -0.0 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 -0.2839455306529999 0.0788903459906578 -0.9968565702438354 -0.0 0.9895748496055603 0.47368383407592773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.022168874740600586 -0.19187510013580322 0.21605445444583893 0.0788903459906578 -0.9968565702438354 -0.0 1.479734182357788 0.3144296407699585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.405207633972168 -0.18224529922008514 -0.2839455306529999 -0.9354838728904724 -0.35331279039382935 -0.0 0.9876574277877808 0.4246361255645752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 -0.2839455306529999 -0.9332560300827026 -0.35917234420776367 -0.0 0.9873474836349487 0.42323416471481323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 0.21605445444583893 -0.9332560300827026 -0.35914182662963867 -0.0 0.609167754650116 0.24128073453903198 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 -0.2839455306529999 0.31418806314468384 0.9493392705917358 -0.0 0.9239929914474487 0.7676823139190674 0 1.0 0 0.0 0 0.0 0 0.0\n0.5022380352020264 0.1853870451450348 0.21605448424816132 0.31418806314468384 0.9493392705917358 -0.0 0.5298394560813904 0.6121901869773865 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 -0.2839455306529999 0.9696035385131836 -0.24460585415363312 -0.0 0.03580290079116821 0.6934131383895874 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 -0.2839455306529999 0.9444258213043213 -0.32862329483032227 -0.0 0.03551158308982849 0.6954619884490967 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511579036712646 0.10253044962882996 0.21605446934700012 0.9444258213043213 -0.32862329483032227 -0.0 0.4458465576171875 0.5377424359321594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.04660463333129883 -0.1918945610523224 -0.2839455306529999 -0.07571642100811005 -0.9971007108688354 -0.0 0.00424155592918396 0.4744833707809448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 -0.2839455306529999 -0.03735465556383133 -0.999298095703125 -0.0 0.0006078481674194336 0.47387105226516724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 0.21605445444583893 -0.03735465556383133 -0.999298095703125 -0.0 0.4665878415107727 0.31540971994400024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4045532941818237 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.9873474836349487 0.42323416471481323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9433887004852295 0.43811434507369995 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3071802854537964 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.6608636379241943 0.2844606637954712 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.04541154205799103 0.9989623427391052 -0.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 -0.2839455306529999 -0.00039674062281847 0.999969482421875 -0.0 1.0064716339111328 0.7823371291160583 0 1.0 0 0.0 0 0.0 0 0.0\n2.086514711380005 0.3347935080528259 0.21605446934700012 -0.00039674062281847 0.999969482421875 -0.0 1.4724758863449097 0.6193457841873169 0 1.0 0 0.0 0 0.0 0 0.0\n0.33858752250671387 0.18523618578910828 -0.2839455306529999 -0.3266090750694275 0.9451277256011963 -0.0 0.050045162439346313 0.769943118095398 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594471096992493 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 0.21605448424816132 -0.3882870078086853 0.921536922454834 -0.0 0.43699097633361816 0.6112980842590332 0 1.0 0 0.0 0 0.0 0 0.0\n2.073303461074829 0.3344895839691162 -0.2839455306529999 -0.047090061008930206 0.9988707900047302 -0.0 0.01697695255279541 0.7806612253189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 -0.09668263792991638 0.9953001737594604 -0.0 0.02686828374862671 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 0.21605446934700012 -0.09668263792991638 0.9953001737594604 -0.0 0.45836377143859863 0.6175618171691895 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16061891615390778 -0.0 0.03598657250404358 0.691315770149231 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 -0.2839455306529999 0.9696035385131836 -0.24460585415363312 -0.0 0.03580290079116821 0.6934131383895874 0 1.0 0 0.0 0 0.0 0 0.0\n1.3506128787994385 0.10070860385894775 0.21605446934700012 0.9696035385131836 -0.24460585415363312 -0.0 0.44545286893844604 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.040518760681152344 -0.19223752617835999 -0.2839455306529999 -0.03735465556383133 -0.999298095703125 -0.0 1.0006078481674194 0.47387105226516724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 -0.2839455306529999 0.0005188146606087685 -0.999969482421875 -0.0 0.9968962669372559 0.4735258221626282 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 0.21605445444583893 0.0005188146606087685 -0.999969482421875 -0.0 1.4709974527359009 0.31470078229904175 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.29584643244743347 -0.9552293419837952 -0.0 1.030943751335144 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 -0.2839455306529999 0.32856225967407227 -0.9444563388824463 -0.0 1.0282809734344482 0.41469669342041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.481134295463562 -0.18383851647377014 0.21605445444583893 0.32856225967407227 -0.9444563388824463 -0.0 0.55098956823349 0.22027724981307983 0 1.0 0 0.0 0 0.0 0 0.0\n1.4782397747039795 0.10002994537353516 -0.2839455306529999 -0.8272042274475098 -0.5618457794189453 -0.0 0.9449471235275269 0.6918734312057495 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.9438934922218323 0.688425600528717 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213466882705688 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03432583808898926 -0.19235184788703918 -0.2839455306529999 0.0005188146606087685 -0.999969482421875 -0.0 0.9968962669372559 0.4735258221626282 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 -0.2839455306529999 0.039246805012226105 -0.99920654296875 -0.0 0.9932255744934082 0.47346174716949463 0 1.0 0 0.0 0 0.0 0 0.0\n-0.028221845626831055 -0.1922326534986496 0.21605445444583893 0.039246805012226105 -0.99920654296875 -0.0 1.4753739833831787 0.3143734931945801 0 1.0 0 0.0 0 0.0 0 0.0\n-1.584106683731079 -0.18455849587917328 -0.2839455306529999 -0.3258766531944275 -0.9454023838043213 -0.0 0.08343049883842468 0.4110526442527771 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 -0.26517534255981445 -0.964171290397644 -0.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 0.21605445444583893 -0.26517534255981445 -0.964171290397644 -0.0 0.47397521138191223 0.22362583875656128 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9031037092208862 -0.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 -0.2839455306529999 0.36994537711143494 0.9290444850921631 -0.0 0.9187459945678711 0.7627639174461365 0 1.0 0 0.0 0 0.0 0 0.0\n0.5103330612182617 0.18245115876197815 0.21605448424816132 0.36994537711143494 0.9290444850921631 -0.0 0.5340526103973389 0.6088428497314453 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 -0.2839455306529999 -1.0 0.0 -0.0 0.06410348415374756 0.897499144077301 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 -0.2839455306529999 -1.0 0.0 -0.0 0.05824926495552063 0.8729636073112488 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 0.21605448424816132 -1.0 0.0 -0.0 0.44902312755584717 0.7215856313705444 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.09347819536924362 0.9956053495407104 -0.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 -0.2839455306529999 0.04541154205799103 0.9989623427391052 -0.0 0.9952402710914612 0.7828429341316223 0 1.0 0 0.0 0 0.0 0 0.0\n2.1004011631011963 0.33448582887649536 0.21605446934700012 0.04541154205799103 0.9989623427391052 -0.0 1.4800961017608643 0.6191619634628296 0 1.0 0 0.0 0 0.0 0 0.0\n0.32959747314453125 0.1818065345287323 -0.2839455306529999 -0.3882870078086853 0.921536922454834 -0.0 0.05594471096992493 0.7645926475524902 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.061192870140075684 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 0.21605448424816132 -0.4528946876525879 0.8915371894836426 -0.0 0.4326004981994629 0.6073610782623291 0 1.0 0 0.0 0 0.0 0 0.0\n2.0605223178863525 0.3335774540901184 -0.2839455306529999 -0.09668263792991638 0.9953001737594604 -0.0 0.02686828374862671 0.7779173851013184 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 -0.14902187883853912 0.9888302087783813 -0.0 0.0360887348651886 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 0.21605446934700012 -0.14902187883853912 0.9888302087783813 -0.0 0.4517524838447571 0.6156635284423828 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16061891615390778 -0.0 0.03598657250404358 0.691315770149231 0 1.0 0 0.0 0 0.0 0 0.0\n1.3502237796783447 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16061891615390778 -0.0 0.44514212012290955 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 0.8537107706069946 0.8676877617835999 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 -0.2839455306529999 0.0 1.0 -0.0 1.0641034841537476 0.897499144077301 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.314128041267395 0.21605446934700012 0.0 1.0 -0.0 0.4513011574745178 0.7462323307991028 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 -0.2839455306529999 0.2627948820590973 -0.964842677116394 -0.0 1.0336346626281738 0.41123098134994507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 -0.2839455306529999 0.29584643244743347 -0.9552293419837952 -0.0 1.030943751335144 0.41287368535995483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4860550165176392 -0.1854560375213623 0.21605445444583893 0.29584643244743347 -0.9551988244056702 -0.0 0.5470194220542908 0.2182314395904541 0 1.0 0 0.0 0 0.0 0 0.0\n1.480048418045044 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.9438934922218323 0.688425600528717 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429594278335571 0.6848307847976685 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223576426506042 0.5258004665374756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1012258529663086 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 1.0582492351531982 0.8729636073112488 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 -0.2839455306529999 0.0 -1.0 -0.0 0.8631843328475952 0.8435003757476807 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 0.21605448424816132 0.0 -1.0 -0.0 0.5528576970100403 0.7088805437088013 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.4920804500579834 0.8705404996871948 -0.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 -0.2839455306529999 0.4293954372406006 0.9031037092208862 -0.0 0.9140768051147461 0.7575938105583191 0 1.0 0 0.0 0 0.0 0 0.0\n0.5178830623626709 0.17916986346244812 0.21605448424816132 0.4293954372406006 0.9031037092208862 -0.0 0.5379588007926941 0.6052160263061523 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.24932944774627686 -0.2839455306529999 1.0 0.0 -0.0 0.8631843328475952 0.8435003757476807 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 -0.2839455306529999 1.0 0.0 -0.0 0.8537107706069946 0.8676877617835999 0 1.0 0 0.0 0 0.0 0 0.0\n0.1243431568145752 0.314128041267395 0.21605446934700012 0.999969482421875 0.0 -0.0 0.5506380796432495 0.7342168092727661 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.2294991910457611 -0.9732962846755981 -0.0 1.036353588104248 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 -0.2839455306529999 0.2627948820590973 -0.964842677116394 -0.0 1.0336346626281738 0.41123098134994507 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4910292625427246 -0.18690331280231476 0.21605445444583893 0.2627948820590973 -0.964842677116394 -0.0 0.5429552793502808 0.21644043922424316 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.14444410800933838 0.9895016551017761 -0.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 -0.2839455306529999 0.09347819536924362 0.9956053495407104 -0.0 0.9843412637710571 0.7820700407028198 0 1.0 0 0.0 0 0.0 0 0.0\n2.1138060092926025 0.3335627317428589 0.21605446934700012 0.09347819536924362 0.9956053495407104 -0.0 0.48747992515563965 0.618225634098053 0 1.0 0 0.0 0 0.0 0 0.0\n0.32119107246398926 0.17791959643363953 -0.2839455306529999 -0.4528946876525879 0.8915371894836426 -0.0 0.061192870140075684 0.7588622570037842 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582790613174438 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 0.21605448424816132 -0.5195165872573853 0.8544266819953918 -0.0 0.4285222887992859 0.6030384302139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.481708288192749 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429594278335571 0.6848307847976685 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41044342517852783 -0.0 0.9421427249908447 0.6810876131057739 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41044342517852783 -0.0 0.5232900381088257 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.12790176272392273 0.820160448551178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 -1.0 0.0 -0.0 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.3570616841316223 0.2896650433540344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.576392412185669 -0.1869397908449173 -0.2839455306529999 -0.26517534255981445 -0.964171290397644 -0.0 0.07935571670532227 0.40890204906463623 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 -0.20651875436306 -0.9784234166145325 -0.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 0.21605445444583893 -0.20651875436306 -0.9784234166145325 -0.0 0.47987258434295654 0.22011399269104004 0 1.0 0 0.0 0 0.0 0 0.0\n2.0481717586517334 0.3320571780204773 -0.2839455306529999 -0.14902187883853912 0.9888302087783813 -0.0 0.0360887348651886 0.7742131352424622 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 -0.20380260050296783 0.9790032505989075 -0.0 0.04460981488227844 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 0.21605446934700012 -0.20380260050296783 0.9790032505989075 -0.0 0.4454401135444641 0.6131366491317749 0 1.0 0 0.0 0 0.0 0 0.0\n1.4832203388214111 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41044342517852783 -0.0 0.9421427249908447 0.6810876131057739 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414418935775757 0.6771947145462036 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241435170173645 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.07377690076828003 0.8601027727127075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.12790176272392273 0.820160448551178 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 0.32953959703445435 0.21605446934700012 0.0 0.999969482421875 -0.0 0.39915820956230164 0.6972336173057556 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 -0.2839455306529999 0.4920804500579834 0.8705404996871948 -0.0 0.9099525809288025 0.7522066831588745 0 1.0 0 0.0 0 0.0 0 0.0\n0.524888277053833 0.1755431890487671 0.21605448424816132 0.4920804500579834 0.8705404996871948 -0.0 0.5415674448013306 0.6013184785842896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.19614246487617493 -0.9805597066879272 -0.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 -0.2839455306529999 0.2294991910457611 -0.9732962846755981 -0.0 1.036353588104248 0.40976768732070923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4960569143295288 -0.18818031251430511 0.21605445444583893 0.2295297086238861 -0.9732962846755981 -0.0 0.5388044118881226 0.21490734815597534 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.1981566846370697 0.9801629781723022 -0.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 -0.2839455306529999 0.14444410800933838 0.9895016551017761 -0.0 0.9739037156105042 0.7800891399383545 0 1.0 0 0.0 0 0.0 0 0.0\n2.1267292499542236 0.3320242762565613 0.21605446934700012 0.14444410800933838 0.9895016551017761 -0.0 0.4946056604385376 0.6165568828582764 0 1.0 0 0.0 0 0.0 0 0.0\n0.313368558883667 0.17357537150382996 -0.2839455306529999 -0.5195165872573853 0.8544266819953918 -0.0 0.06582790613174438 0.7527945637702942 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988894939422607 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 0.21605446934700012 -0.5868709087371826 0.8096560835838318 -0.0 0.4247440695762634 0.5983362197875977 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845836162567139 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414418935775757 0.6771947145462036 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.940855085849762 0.6731501817703247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249184966087341 0.5147104263305664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 1.0 0.0 -0.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 -0.2839455306529999 1.0 0.0 -0.0 0.07377690076828003 0.8601027727127075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.43876373767852783 0.7131302356719971 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5683399438858032 -0.18888813257217407 -0.2839455306529999 -0.20651875436306 -0.9784234166145325 -0.0 0.07509827613830566 0.40715938806533813 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 -0.1504257321357727 -0.9886165857315063 -0.0 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 0.21605445444583893 -0.1504257321357727 -0.9886165857315063 -0.0 0.48623794317245483 0.2171075940132141 0 1.0 0 0.0 0 0.0 0 0.0\n2.0362517833709717 0.32992881536483765 -0.2839455306529999 -0.20380260050296783 0.9790032505989075 -0.0 0.04460981488227844 0.769651472568512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 -0.2606891095638275 0.965391993522644 -0.0 0.05242618918418884 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 0.21605446934700012 -0.2606891095638275 0.965391993522644 -0.0 0.43942350149154663 0.6100096702575684 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 -0.2839455306529999 -0.0021973326802253723 0.999969482421875 -0.0 0.9794628620147705 0.7999661564826965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 -0.0710165724158287 0.9974669814109802 -0.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 0.21605448424816132 -0.0710165724158287 0.9974669814109802 -0.0 1.48317551612854 0.6406345367431641 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857985973358154 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.940855085849762 0.6731501817703247 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 -0.2839455306529999 -0.9576708078384399 -0.28785058856010437 -0.0 0.9403803944587708 0.6689517498016357 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 0.21605446934700012 -0.9576708078384399 -0.28785058856010437 -0.0 0.5256151556968689 0.5106664299964905 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.6065859198570251 0.7949766516685486 -0.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 -0.2839455306529999 0.5530259013175964 0.8331248164176941 -0.0 0.9063409566879272 0.7466289401054382 0 1.0 0 0.0 0 0.0 0 0.0\n0.531348705291748 0.17157110571861267 0.21605448424816132 0.5530259013175964 0.8331248164176941 -0.0 0.5448883175849915 0.5971555709838867 0 1.0 0 0.0 0 0.0 0 0.0\n1.4868652820587158 0.08085307478904724 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.9403803944587708 0.6689517498016357 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.8861360549926758 0.6619568467140198 0 1.0 0 0.0 0 0.0 0 0.0\n1.5796849727630615 0.0980159342288971 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5723452568054199 0.5243043899536133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 -0.2839455306529999 0.062410350888967514 0.9980468153953552 -0.0 0.970216691493988 0.7989437580108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 -0.2839455306529999 -0.0021973326802253723 0.999969482421875 -0.0 0.9794628620147705 0.7999661564826965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39194393157958984 0.19643977284431458 0.21605448424816132 -0.0021973326802253723 0.999969482421875 -0.0 0.48874813318252563 0.6407021284103394 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 -0.2839455306529999 0.16275520622730255 -0.9866328835487366 -0.0 0.041874319314956665 0.40737658739089966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 -0.2839455306529999 0.19614246487617493 -0.9805597066879272 -0.0 0.039100319147109985 0.4084831476211548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5011382102966309 -0.18928703665733337 0.21605445444583893 0.19614246487617493 -0.9805597066879272 -0.0 0.5345746278762817 0.21363526582717896 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.2543107271194458 0.9671010375022888 -0.0 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 -0.2839455306529999 0.1981566846370697 0.9801629781723022 -0.0 0.9640299081802368 0.7769839763641357 0 1.0 0 0.0 0 0.0 0 0.0\n2.1391708850860596 0.32987040281295776 0.21605446934700012 0.1981566846370697 0.9801629781723022 -0.0 0.5014569759368896 0.6141777038574219 0 1.0 0 0.0 0 0.0 0 0.0\n0.30612969398498535 0.1687738597393036 -0.2839455306529999 -0.5868709087371826 0.8096560835838318 -0.0 0.06988894939422607 0.7464208602905273 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341375946998596 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 0.21605446934700012 -0.6484267711639404 0.7612537145614624 -0.0 0.4212538003921509 0.5932559967041016 0 1.0 0 0.0 0 0.0 0 0.0\n1.259554386138916 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.08776611089706421 0.6681519746780396 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.39880692958831787 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n2.0247623920440674 0.32719236612319946 -0.2839455306529999 -0.2606891095638275 0.965391993522644 -0.0 0.05242618918418884 0.7643268704414368 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 -0.3191625773906708 0.9476912617683411 -0.0 0.059550583362579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 0.21605446934700012 -0.3191625773906708 0.9476912617683411 -0.0 0.4336964786052704 0.606307864189148 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.1273842602968216 0.9918210506439209 -0.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 -0.2839455306529999 0.062410350888967514 0.9980468153953552 -0.0 0.970216691493988 0.7989437580108643 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3807816505432129 0.19609802961349487 0.21605448424816132 0.062410350888967514 0.9980468153953552 -0.0 0.494787335395813 0.6400524377822876 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.12952055037021637 -0.9915463924407959 -0.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 -0.2839455306529999 0.16275520622730255 -0.9866328835487366 -0.0 0.041874319314956665 0.40737658739089966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5062729120254517 -0.19022351503372192 0.21605445444583893 0.16275520622730255 -0.9866328835487366 -0.0 0.5302750468254089 0.21262699365615845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4022181034088135 0.19607976078987122 -0.2839455306529999 -0.0710165724158287 0.9974669814109802 -0.0 0.9880318641662598 0.799943745136261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 -0.143803209066391 0.9895932078361511 -0.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 0.21605448424816132 -0.143803209066391 0.9895932078361511 -0.0 1.4777190685272217 0.6398723721504211 0 1.0 0 0.0 0 0.0 0 0.0\n-1.559949517250061 -0.1904035061597824 -0.2839455306529999 -0.1504257321357727 -0.9886165857315063 -0.0 0.07065242528915405 0.40583473443984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 -0.09726248681545258 -0.9952391386032104 -0.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 0.21605445444583893 -0.09726248681545258 -0.9952391386032104 -0.0 0.4930703639984131 0.21465349197387695 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 -0.2839455306529999 0.6065859198570251 0.7949766516685486 -0.0 0.9031440019607544 0.7408447861671448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5373761653900146 0.16726094484329224 0.21605446934700012 0.6065859198570251 0.7949766516685486 -0.0 0.5479847192764282 0.5927214622497559 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 -0.2839455306529999 1.0 0.00027466658502817154 -0.0 0.03603509068489075 0.6869707107543945 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.03606346249580383 0.6891689300537109 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499906063079834 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.44491448998451233 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.31247901916503906 0.9499191045761108 -0.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 -0.2839455306529999 0.2543107271194458 0.9671010375022888 -0.0 0.9547929763793945 0.7728448510169983 0 1.0 0 0.0 0 0.0 0 0.0\n2.1511309146881104 0.32710111141204834 0.21605446934700012 0.2543107271194458 0.9671010375022888 -0.0 0.5080228447914124 0.6111105680465698 0 1.0 0 0.0 0 0.0 0 0.0\n0.29947471618652344 0.16351506114006042 -0.2839455306529999 -0.6484267711639404 0.7612537145614624 -0.0 0.07341375946998596 0.7397626638412476 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.0764627754688263 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 0.21605446934700012 -0.6993011236190796 0.7147740125656128 -0.0 0.4180349111557007 0.5878974199295044 0 1.0 0 0.0 0 0.0 0 0.0\n2.0137035846710205 0.32384783029556274 -0.2839455306529999 -0.3191625773906708 0.9476912617683411 -0.0 0.059550583362579346 0.758323073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 -0.3786126375198364 0.9255348443984985 -0.0 0.06600850820541382 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 0.21605446934700012 -0.3786126375198364 0.9255348443984985 -0.0 0.4282504916191101 0.6020529270172119 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 -0.2839455306529999 0.9967650175094604 0.07998901605606079 -0.0 0.035921454429626465 0.6850959062576294 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 -0.2839455306529999 1.0 0.00027466658502817154 -0.0 0.03603509068489075 0.6869707107543945 0 1.0 0 0.0 0 0.0 0 0.0\n1.349912405014038 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00027466658502817154 -0.0 0.4447696805000305 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.19467757642269135 0.9808648824691772 -0.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 -0.2839455306529999 0.1273842602968216 0.9918210506439209 -0.0 0.9613829851150513 0.7969457507133484 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3699455261230469 0.19507277011871338 0.21605448424816132 0.1273842602968216 0.9918210506439209 -0.0 0.5006298422813416 0.6387298703193665 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.09653004258871078 -0.9953001737594604 -0.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 -0.2839455306529999 0.12952055037021637 -0.9915463924407959 -0.0 0.04467529058456421 0.40644752979278564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5114612579345703 -0.19098970293998718 0.21605445444583893 0.12952055037021637 -0.9915463924407959 -0.0 0.5259150266647339 0.21188491582870483 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122591018676758 0.1949997842311859 -0.2839455306529999 -0.143803209066391 0.9895932078361511 -0.0 0.9963911771774292 0.7989473342895508 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 -0.21765801310539246 0.9760124683380127 -0.0 1.0044747591018677 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 0.21605448424816132 -0.21765801310539246 0.9760124683380127 -0.0 1.4723812341690063 0.638421893119812 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5512208938598633 -0.1914859116077423 -0.2839455306529999 -0.09726248681545258 -0.9952391386032104 -0.0 0.06601288914680481 0.40493983030319214 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 -0.047242652624845505 -0.9988707900047302 -0.0 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 0.21605445444583893 -0.047242652624845505 -0.9988707900047302 -0.0 0.5003594756126404 0.21280395984649658 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 -0.2839455306529999 0.6549577116966248 0.7556383013725281 -0.0 0.9002724885940552 0.7348303198814392 0 1.0 0 0.0 0 0.0 0 0.0\n0.5430824756622314 0.16261997818946838 0.21605446934700012 0.6549577116966248 0.7556383013725281 -0.0 0.5509172081947327 0.588007390499115 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 -0.2839455306529999 0.9867854714393616 0.16187018156051636 -0.0 0.03572002053260803 0.6832842230796814 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 -0.2839455306529999 0.9967650175094604 0.07998901605606079 -0.0 0.035921454429626465 0.6850959062576294 0 1.0 0 0.0 0 0.0 0 0.0\n1.3499805927276611 0.09313416481018066 0.21605446934700012 0.9967650175094604 0.07998901605606079 -0.0 0.44472062587738037 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.3720511496067047 0.9281899333000183 -0.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 -0.2839455306529999 0.31247901916503906 0.9499191045761108 -0.0 0.9462374448776245 0.767762303352356 0 1.0 0 0.0 0 0.0 0 0.0\n2.162609338760376 0.3237164616584778 0.21605446934700012 0.31247901916503906 0.9499191045761108 -0.0 0.5142971873283386 0.6073771715164185 0 1.0 0 0.0 0 0.0 0 0.0\n0.2933766841888428 0.15792062878608704 -0.2839455306529999 -0.6993011236190796 0.7147740125656128 -0.0 0.0764627754688263 0.7329283952713013 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671651601791382 -0.0 0.07909229397773743 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 0.21605446934700012 -0.7448957562446594 0.6671651601791382 -0.0 0.41507312655448914 0.5823611617088318 0 1.0 0 0.0 0 0.0 0 0.0\n2.003075361251831 0.3198952078819275 -0.2839455306529999 -0.3786126375198364 0.9255348443984985 -0.0 0.06600850820541382 0.7517114877700806 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 -0.4382152855396271 0.8988311290740967 -0.0 0.07183364033699036 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 0.21605446934700012 -0.4382152855396271 0.8988311290740967 -0.0 0.42307525873184204 0.5972629189491272 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 -0.2839455306529999 0.9867854714393616 0.16187018156051636 -0.0 0.03572002053260803 0.6832842230796814 0 1.0 0 0.0 0 0.0 0 0.0\n1.3501851558685303 0.09144851565361023 0.21605446934700012 0.9867854714393616 0.16187018156051636 -0.0 0.4447501301765442 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.2634052634239197 0.964659571647644 -0.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 -0.2839455306529999 0.19467757642269135 0.9808648824691772 -0.0 0.9530216455459595 0.7940287590026855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3594350814819336 0.19336402416229248 0.21605448424816132 0.19467757642269135 0.9808648824691772 -0.0 0.5062727332115173 0.636748731136322 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 -0.2839455306529999 0.0639057606458664 -0.9979247450828552 -0.0 0.05035579204559326 0.40511953830718994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 -0.2839455306529999 0.09653004258871078 -0.9953001737594604 -0.0 0.04750263690948486 0.405695378780365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5167030096054077 -0.19158564507961273 0.21605445444583893 0.09653004258871078 -0.9953001737594604 -0.0 0.5215050578117371 0.21141117811203003 0 1.0 0 0.0 0 0.0 0 0.0\n1.2587590217590332 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753597736358643 0.6604448556900024 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806902408599854 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n-0.42206645011901855 0.19319981336593628 -0.2839455306529999 -0.21765801310539246 0.9760124683380127 -0.0 0.004474729299545288 0.7970054745674133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 -0.29132968187332153 0.9566026926040649 -0.0 0.012227356433868408 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 0.21605448424816132 -0.29132968187332153 0.9566026926040649 -0.0 0.46716344356536865 0.6362869739532471 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954370021820068 0.7221288681030273 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 -0.2839455306529999 0.7010712027549744 0.713064968585968 -0.0 0.8977089524269104 0.7285908460617065 0 1.0 0 0.0 0 0.0 0 0.0\n0.5484678745269775 0.1576482057571411 0.21605446934700012 0.7010712027549744 0.713064968585968 -0.0 0.5536915063858032 0.5830111503601074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 -0.2839455306529999 0.0317087322473526 -0.999481201171875 -0.0 0.05323415994644165 0.40471965074539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 -0.2839455306529999 0.0639057606458664 -0.9979247450828552 -0.0 0.05035579204559326 0.40511953830718994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5219982862472534 -0.19201131165027618 0.21605445444583893 0.0639057606458664 -0.9979247450828552 -0.0 0.5170558094978333 0.2112075686454773 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.43232521414756775 0.9016999006271362 -0.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 -0.2839455306529999 0.3720511496067047 0.9281899333000183 -0.0 0.9383829832077026 0.7618219256401062 0 1.0 0 0.0 0 0.0 0 0.0\n2.1736061573028564 0.3197163939476013 0.21605446934700012 0.3720511496067047 0.9281899333000183 -0.0 0.5202778577804565 0.602996826171875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5421541929244995 -0.19213536381721497 -0.2839455306529999 -0.047242652624845505 -0.9988707900047302 -0.0 0.06117549538612366 0.40448832511901855 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 -0.2839455306529999 -0.0036011841148138046 -0.999969482421875 -0.0 0.05613693594932556 0.4044952392578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 0.21605445444583893 -0.0036011841148138046 -0.999969482421875 -0.0 0.5080843567848206 0.21161502599716187 0 1.0 0 0.0 0 0.0 0 0.0\n1.992877721786499 0.3153344988822937 -0.2839455306529999 -0.4382152855396271 0.8988311290740967 -0.0 0.07183364033699036 0.7445515394210815 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 -0.49723806977272034 0.8676106929779053 -0.0 0.07706430554389954 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 0.21605446934700012 -0.49723806977272034 0.8676106929779053 -0.0 0.4181593060493469 0.591951847076416 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 -0.2839455306529999 0.7444074749946594 0.6676839590072632 -0.0 0.8954370021820068 0.7221288681030273 0 1.0 0 0.0 0 0.0 0 0.0\n0.5535321235656738 0.15234562754631042 0.21605446934700012 0.7444074749946594 0.6676839590072632 -0.0 0.5563127994537354 0.5777288675308228 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266090750694275 -0.0 0.03505560755729675 0.6798492670059204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.035431504249572754 0.6815354228019714 0 1.0 0 0.0 0 0.0 0 0.0\n1.3505256175994873 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.4448583722114563 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.3325602114200592 0.9430524706840515 -0.0 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 -0.2839455306529999 0.2634052634239197 0.964659571647644 -0.0 0.945175290107727 0.7902482748031616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34925079345703125 0.19097179174423218 0.21605448424816132 0.2634052634239197 0.964659571647644 -0.0 0.5117148160934448 0.6341213583946228 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5327494144439697 -0.19235184788703918 -0.2839455306529999 -0.0036011841148138046 -0.999969482421875 -0.0 0.05613693594932556 0.4044952392578125 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 -0.2839455306529999 0.0317087322473526 -0.999481201171875 -0.0 0.05323415994644165 0.40471965074539185 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5273470878601074 -0.19226670265197754 0.21605445444583893 0.0317087322473526 -0.999481201171875 -0.0 0.5125783681869507 0.21127527952194214 0 1.0 0 0.0 0 0.0 0 0.0\n0.287808895111084 0.15211209654808044 -0.2839455306529999 -0.7448957562446594 0.6671651601791382 -0.0 0.07909229397773743 0.7260230779647827 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133035898208618 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 0.21605446934700012 -0.7892391681671143 0.6140323877334595 -0.0 0.41235995292663574 0.5766456127166748 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4316401481628418 0.1906798779964447 -0.2839455306529999 -0.29132968187332153 0.9566026926040649 -0.0 0.012227356433868408 0.7941473126411438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 -0.3634754419326782 0.9315775036811829 -0.0 0.019606024026870728 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 0.21605448424816132 -0.3634754419326782 0.9315775036811829 -0.0 0.46206551790237427 0.6334686875343323 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.2695856988430023 0.7537210583686829 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 -1.0 0.0 -0.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.45949652791023254 0.11472934484481812 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 -0.2839455306529999 0.9139072895050049 0.4058656692504883 -0.0 0.034592777490615845 0.6782253980636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266090750694275 -0.0 0.03505560755729675 0.6798492670059204 0 1.0 0 0.0 0 0.0 0 0.0\n1.3510024547576904 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266090750694275 -0.0 0.44504600763320923 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.4924161434173584 0.8703268766403198 -0.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 -0.2839455306529999 0.43232521414756775 0.9016999006271362 -0.0 0.9312289953231812 0.7551016211509705 0 1.0 0 0.0 0 0.0 0 0.0\n2.1841213703155518 0.3151009678840637 0.21605446934700012 0.43232521414756775 0.9016999006271362 -0.0 0.5259664058685303 0.5979864597320557 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.2427637279033661 0.8259592056274414 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.2695856988430023 0.7537210583686829 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.48620134592056274 0.5522602796554565 0 1.0 0 0.0 0 0.0 0 0.0\n1.9831106662750244 0.3101657032966614 -0.2839455306529999 -0.49723806977272034 0.8676106929779053 -0.0 0.07706430554389954 0.7368909120559692 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 -0.5547044277191162 0.8320261240005493 -0.0 0.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 0.2160544991493225 -0.5547044277191162 0.8320261240005493 -0.0 0.41349029541015625 0.5861303806304932 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 -0.2839455306529999 0.7844783067703247 0.6201055645942688 -0.0 0.8934412002563477 0.7154441475868225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5582752227783203 0.14671224355697632 0.21605446934700012 0.7844783067703247 0.6201055645942688 -0.0 0.5587862730026245 0.5721554756164551 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.034042567014694214 0.6766630411148071 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 -0.2839455306529999 0.9139072895050049 0.4058656692504883 -0.0 0.034592777490615845 0.6782253980636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.3516151905059814 0.08665427565574646 0.21605446934700012 0.9139072895050049 0.4058656692504883 -0.0 0.44531333446502686 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.40098270773887634 0.9160435795783997 -0.0 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 -0.2839455306529999 0.3325602114200592 0.9430524706840515 -0.0 0.9378687143325806 0.7856563329696655 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33939218521118164 0.18789604306221008 0.21605448424816132 0.3325602114200592 0.9430524706840515 -0.0 0.5169574022293091 0.6308568716049194 0 1.0 0 0.0 0 0.0 0 0.0\n0.28277134895324707 0.14608952403068542 -0.2839455306529999 -0.7892391681671143 0.6140323877334595 -0.0 0.08133035898208618 0.7190533876419067 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320179581642151 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 0.21605446934700012 -0.8313852548599243 0.5556504726409912 -0.0 0.4098873734474182 0.5707465410232544 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4409806728363037 0.1874399483203888 -0.2839455306529999 -0.3634754419326782 0.9315775036811829 -0.0 0.019606024026870728 0.7904014587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 -0.43293556571006775 0.9013947248458862 -0.0 0.02657860517501831 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 0.21605448424816132 -0.43293556571006775 0.9013947248458862 -0.0 0.4570869505405426 0.6299653649330139 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 1.0 0.0 -0.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 -0.2839455306529999 1.0 0.0 -0.0 0.2427637279033661 0.8259592056274414 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.5239897966384888 0.5807267427444458 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 -0.2839455306529999 0.8348032832145691 0.5504928827285767 -0.0 0.0334048867225647 0.6751617789268494 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.034042567014694214 0.6766630411148071 0 1.0 0 0.0 0 0.0 0 0.0\n1.3523643016815186 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566109776496887 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 -0.2839455306529999 -0.7364421486854553 0.6764732599258423 -0.0 1.0224628448486328 0.9180190563201904 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 -0.2839455306529999 -0.7364421486854553 0.6764732599258423 -0.0 0.1574673056602478 0.6584711074829102 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 0.10151857137680054 0.21605446934700012 -0.7364421486854553 0.6764732599258423 -0.0 0.5355800986289978 0.37752383947372437 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.5514389276504517 0.8341929316520691 -0.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 -0.2839455306529999 0.4924161434173584 0.8703268766403198 -0.0 0.9247593283653259 0.7476687431335449 0 1.0 0 0.0 0 0.0 0 0.0\n2.194154977798462 0.3098701238632202 0.21605446934700012 0.4924161434173584 0.8703268766403198 -0.0 0.5313672423362732 0.592359721660614 0 1.0 0 0.0 0 0.0 0 0.0\n1.9737741947174072 0.30438879132270813 -0.2839455306529999 -0.5547044277191162 0.8320261240005493 -0.0 0.0817406177520752 0.728766679763794 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 -0.6098513603210449 0.7924741506576538 -0.0 0.08590298891067505 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 0.21605446934700012 -0.6098513603210449 0.7924741506576538 -0.0 0.40905532240867615 0.5798054933547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 -0.2839455306529999 0.8209478855133057 0.5709707736968994 -0.0 0.891707181930542 0.7085340023040771 0 1.0 0 0.0 0 0.0 0 0.0\n0.562697172164917 0.1407480537891388 0.21605446934700012 0.8209478855133057 0.5709707736968994 -0.0 0.5611169934272766 0.5662843585014343 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.7896358966827393 0.6135441064834595 -0.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 -0.2839455306529999 0.8348032832145691 0.5504928827285767 -0.0 0.0334048867225647 0.6751617789268494 0 1.0 0 0.0 0 0.0 0 0.0\n1.3532497882843018 0.08367705345153809 0.21605446934700012 0.8348032832145691 0.5504928827285767 -0.0 0.4460899531841278 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.4675740897655487 0.8839381337165833 -0.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 -0.2839455306529999 0.40098270773887634 0.9160435795783997 -0.0 0.9311127662658691 0.7802994251251221 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32985973358154297 0.18413680791854858 0.21605448424816132 0.40098270773887634 0.9160435795783997 -0.0 0.5220027565956116 0.6269617676734924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9051481485366821 0.8624878525733948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 1.0224628448486328 0.9180190563201904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8332748413085938 0.32953959703445435 0.21605446934700012 0.0 0.999969482421875 -0.0 0.6141318082809448 0.6253429651260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.27826404571533203 0.13985291123390198 -0.2839455306529999 -0.8313852548599243 0.5556504726409912 -0.0 0.08320179581642151 0.7120208144187927 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472853899002075 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 0.21605446934700012 -0.8703268766403198 0.4924161434173584 -0.0 0.40764808654785156 0.5646573305130005 0 1.0 0 0.0 0 0.0 0 0.0\n1.2584939002990723 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704417943954468 0.6525783538818359 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975094258785248 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4500875473022461 0.18348002433776855 -0.2839455306529999 -0.43293556571006775 0.9013947248458862 -0.0 0.02657860517501831 0.7857947945594788 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 -0.4985809028148651 0.8668172359466553 -0.0 0.03312462568283081 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 0.21605448424816132 -0.4985809028148651 0.8668172359466553 -0.0 0.45222604274749756 0.6257724165916443 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.7189550399780273 -0.69502854347229 -0.0 1.0517487525939941 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 -0.2839455306529999 0.7189550399780273 -0.69502854347229 -0.0 0.9051481485366821 0.8624878525733948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6938703060150146 0.32953959703445435 0.21605446934700012 0.7189550399780273 -0.69502854347229 -0.0 0.6648842692375183 0.6340523362159729 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.6084475517272949 0.7935727834701538 -0.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 -0.2839455306529999 0.5514389276504517 0.8341929316520691 -0.0 0.9189475774765015 0.7395798563957214 0 1.0 0 0.0 0 0.0 0 0.0\n2.203706979751587 0.3040238916873932 0.2160544991493225 0.5514389276504517 0.8341929316520691 -0.0 0.5364871025085449 0.5861265063285828 0 1.0 0 0.0 0 0.0 0 0.0\n1.9648678302764893 0.29800379276275635 -0.2839455306529999 -0.6098513603210449 0.7924741506576538 -0.0 0.08590298891067505 0.7202064990997314 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 -0.6600238084793091 0.7512131333351135 -0.0 0.08958971500396729 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 0.2160544991493225 -0.6600238084793091 0.7512131333351135 -0.0 0.4048417806625366 0.572981595993042 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 -0.2839455306529999 0.8536027073860168 0.520889937877655 -0.0 0.8902215957641602 0.7013935446739197 0 1.0 0 0.0 0 0.0 0 0.0\n0.566798210144043 0.13445305824279785 0.21605446934700012 0.8536027073860168 0.520889937877655 -0.0 0.5633097290992737 0.560107946395874 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.0318661630153656 0.6723392009735107 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 -0.2839455306529999 0.7896358966827393 0.6135441064834595 -0.0 0.032679468393325806 0.6737208366394043 0 1.0 0 0.0 0 0.0 0 0.0\n1.354271650314331 0.08225411176681519 0.21605446934700012 0.7896358966827393 0.6135441064834595 -0.0 0.44660046696662903 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.5312051773071289 0.8472243547439575 -0.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 -0.2839455306529999 0.4675740897655487 0.8839381337165833 -0.0 0.9249056577682495 0.7742172479629517 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32065320014953613 0.1796940565109253 0.21605448424816132 0.4675740897655487 0.8839381337165833 -0.0 0.5268549919128418 0.6224387288093567 0 1.0 0 0.0 0 0.0 0 0.0\n0.27428698539733887 0.13340222835540771 -0.2839455306529999 -0.8703268766403198 0.4924161434173584 -0.0 0.08472853899002075 0.7049230933189392 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592939376831055 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 0.21605446934700012 -0.905117928981781 0.42512282729148865 -0.0 0.40563562512397766 0.5583692789077759 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45896077156066895 0.17880013585090637 -0.2839455306529999 -0.4985809028148651 0.8668172359466553 -0.0 0.03312462568283081 0.7803508043289185 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 -0.5596179366111755 0.8287301063537598 -0.0 0.039234012365341187 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 0.21605448424816132 -0.5596179366111755 0.8287301063537598 -0.0 0.44748032093048096 0.6208823919296265 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 -0.2839455306529999 0.694570779800415 0.7194128036499023 -0.0 0.030964285135269165 0.6710160970687866 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.0318661630153656 0.6723392009735107 0 1.0 0 0.0 0 0.0 0 0.0\n1.3554294109344482 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.44719308614730835 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 -0.2839455306529999 0.8383129239082336 0.5451521277427673 -0.0 0.9581927061080933 0.48435938358306885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 -0.2839455306529999 0.8383129239082336 0.5451521277427673 -0.0 1.0517487525939941 0.751492440700531 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8872151374816895 0.1295395791530609 0.21605446934700012 0.8383129239082336 0.5451521277427673 -0.0 0.6251898407936096 0.4582964777946472 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.6599017381668091 0.7513352036476135 -0.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 -0.2839455306529999 0.6084475517272949 0.7935727834701538 -0.0 0.9137606024742126 0.7308803200721741 0 1.0 0 0.0 0 0.0 0 0.0\n2.2127773761749268 0.29756227135658264 0.2160544991493225 0.6084475517272949 0.7935727834701538 -0.0 0.5413342714309692 0.5792933702468872 0 1.0 0 0.0 0 0.0 0 0.0\n1.9563920497894287 0.29101070761680603 -0.2839455306529999 -0.6600238084793091 0.7512131333351135 -0.0 0.08958971500396729 0.7112299203872681 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 -0.7042756676673889 0.7098910212516785 -0.0 0.09280359745025635 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 0.21605446934700012 -0.7042756676673889 0.7098910212516785 -0.0 0.40089285373687744 0.5658196806907654 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029973596334457397 0.6697502732276917 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 -0.2839455306529999 0.694570779800415 0.7194128036499023 -0.0 0.030964285135269165 0.6710160970687866 0 1.0 0 0.0 0 0.0 0 0.0\n1.3567235469818115 0.07953956723213196 0.21605446934700012 0.694570779800415 0.7194128036499023 -0.0 0.4478687345981598 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.5909909605979919 0.8066347241401672 -0.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 -0.2839455306529999 0.5312051773071289 0.8472243547439575 -0.0 0.9192360639572144 0.7674424052238464 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31177258491516113 0.1745678186416626 0.21605448424816132 0.5312051773071289 0.8472243547439575 -0.0 0.5315191745758057 0.6172875761985779 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 0.21605446934700012 -0.03277687728404999 -0.99945068359375 -0.0 1.4873418807983398 0.5618767738342285 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46760058403015137 0.17340025305747986 -0.2839455306529999 -0.5596179366111755 0.8287301063537598 -0.0 0.039234012365341187 0.7740890979766846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 -0.6155278086662292 0.7881100177764893 -0.0 0.044904887676239014 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 0.21605446934700012 -0.6155278086662292 0.7881100177764893 -0.0 0.44284671545028687 0.6152850389480591 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 0.7143467664718628 -0.6997588872909546 -0.0 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 0.7143467664718628 -0.6997588872909546 -0.0 1.0921339988708496 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 0.21605446934700012 0.7143467664718628 -0.6997588872909546 -0.0 0.5975133776664734 0.3468474745750427 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.02889317274093628 0.6685408353805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029973596334457397 0.6697502732276917 0 1.0 0 0.0 0 0.0 0 0.0\n1.3581535816192627 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.44862794876098633 0.5109697580337524 0 1.0 0 0.0 0 0.0 0 0.0\n-1.9586687088012695 0.057035207748413086 -0.2839455306529999 -0.8628498315811157 -0.5054170489311218 -0.0 1.0921339988708496 0.6466642618179321 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 -0.2839455306529999 -0.8628498315811157 -0.5054170489311218 -0.0 1.000122308731079 0.4517623782157898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 0.21605445444583893 -0.8628498315811157 -0.5054170489311218 -0.0 0.7532170414924622 0.2296181321144104 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.7043672204017639 0.7097994685173035 -0.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 -0.2839455306529999 0.6599017381668091 0.7513352036476135 -0.0 0.9091619849205017 0.7216052412986755 0 1.0 0 0.0 0 0.0 0 0.0\n2.2213656902313232 0.29048529267311096 0.2160544991493225 0.6599017381668091 0.7513352036476135 -0.0 0.5459181070327759 0.5718633532524109 0 1.0 0 0.0 0 0.0 0 0.0\n-1.8175129890441895 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 1.000122308731079 0.4517623782157898 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9581927061080933 0.48435938358306885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.683362364768982 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.7767902612686157 0.3119933009147644 0 1.0 0 0.0 0 0.0 0 0.0\n1.948448896408081 0.2835822105407715 -0.2839455306529999 -0.7042756676673889 0.7098910212516785 -0.0 0.09280359745025635 0.7020356059074402 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 -0.7458418607711792 0.6660969853401184 -0.0 0.0955517590045929 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 0.2160544991493225 -0.7458418607711792 0.6660969853401184 -0.0 0.39724987745285034 0.5584805607795715 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 -0.2839455306529999 0.8823511600494385 0.47053438425064087 -0.0 0.8889724016189575 0.6940163373947144 0 1.0 0 0.0 0 0.0 0 0.0\n0.5705780982971191 0.1278272569179535 0.21605446934700012 0.8823511600494385 0.47053438425064087 -0.0 0.5653687715530396 0.5536172986030579 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 -0.2839455306529999 0.4928129017353058 0.8701131939888 -0.0 0.02706146240234375 0.6669514179229736 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.02889317274093628 0.6685408353805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.35971999168396 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.44947174191474915 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.6462294459342957 0.7631153464317322 -0.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 -0.2839455306529999 0.5909909605979919 0.8066347241401672 -0.0 0.9140862226486206 0.7599997520446777 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30321788787841797 0.1687580645084381 0.21605446934700012 0.5909909605979919 0.8066347241401672 -0.0 0.5360012650489807 0.6115046739578247 0 1.0 0 0.0 0 0.0 0 0.0\n-2.146409511566162 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.14069145917892456 0.3820388913154602 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.0974959135055542 0.39517903327941895 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 0.21605445444583893 0.0 -1.0 -0.0 0.5862001776695251 0.0954430103302002 0 1.0 0 0.0 0 0.0 0 0.0\n0.2708404064178467 0.12673750519752502 -0.2839455306529999 -0.905117928981781 0.42512282729148865 -0.0 0.08592939376831055 0.6977543830871582 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4038441479206085 0.5518714189529419 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47600698471069336 0.167280375957489 -0.2839455306529999 -0.6155278086662292 0.7881100177764893 -0.0 0.044904887676239014 0.7670250535011292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 -0.6660054326057434 0.7459028959274292 -0.0 0.050142377614974976 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 0.21605446934700012 -0.6660054326057434 0.7459028959274292 -0.0 0.4383218288421631 0.6089680790901184 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.0974959135055542 0.39517903327941895 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 -0.2839455306529999 1.0 0.0 -0.0 0.12446880340576172 0.5184248089790344 0 1.0 0 0.0 0 0.0 0 0.0\n-2.042731761932373 -0.02877916395664215 0.21605446934700012 1.0 0.0 -0.0 0.5489316582679749 0.22549867630004883 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.0246143639087677 0.6653087139129639 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 -0.2839455306529999 0.4928129017353058 0.8701131939888 -0.0 0.02706146240234375 0.6669514179229736 0 1.0 0 0.0 0 0.0 0 0.0\n1.362391710281372 0.07530966401100159 0.21605446934700012 0.4928129017353058 0.8701131939888 -0.0 0.45094093680381775 0.5075438618659973 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.7461165189743042 0.6657918095588684 -0.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 -0.2839455306529999 0.7043672204017639 0.7097994685173035 -0.0 0.9051555395126343 0.7120082378387451 0 1.0 0 0.0 0 0.0 0 0.0\n2.2293660640716553 0.2829996347427368 0.21605446934700012 0.7043672204017639 0.7097994685173035 -0.0 0.5501882433891296 0.564041256904602 0 1.0 0 0.0 0 0.0 0 0.0\n1.94114089012146 0.2758910357952118 -0.2839455306529999 -0.7458418607711792 0.6660969853401184 -0.0 0.0955517590045929 0.6928189992904663 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 -0.7863399386405945 0.617755651473999 -0.0 0.09787419438362122 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 0.2160544991493225 -0.7863399386405945 0.617755651473999 -0.0 0.39389708638191223 0.5509626269340515 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.9933216571807861 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 0.21605446934700012 0.02471999265253544 -0.999664306640625 -0.0 1.4807125329971313 0.5621060132980347 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.0246143639087677 0.6653087139129639 0 1.0 0 0.0 0 0.0 0 0.0\n1.3659708499908447 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294734835624695 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.6964934468269348 0.7175206542015076 -0.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 -0.2839455306529999 0.6462294459342957 0.7631153464317322 -0.0 0.9094334840774536 0.7519071102142334 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29498910903930664 0.16226482391357422 0.21605446934700012 0.6462294459342957 0.7631153464317322 -0.0 0.540307879447937 0.6050833463668823 0 1.0 0 0.0 0 0.0 0 0.0\n1.258800745010376 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622920513153076 0.6439353227615356 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.39723891019821167 0.49852633476257324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4841797351837158 0.16044053435325623 -0.2839455306529999 -0.6660054326057434 0.7459028959274292 -0.0 0.050142377614974976 0.7591694593429565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 -0.7111117839813232 0.7030549049377441 -0.0 0.05495721101760864 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 0.21605446934700012 -0.7111117839813232 0.7030549049377441 -0.0 0.43390145897865295 0.601917028427124 0 1.0 0 0.0 0 0.0 0 0.0\n0.4132881164550781 0.1256113052368164 -0.2839455306529999 0.02471999265253544 -0.999664306640625 -0.0 0.9933216571807861 0.7258370518684387 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 -0.2839455306529999 -0.00198370311409235 -0.999969482421875 -0.0 0.9885497689247131 0.7259107828140259 0 1.0 0 0.0 0 0.0 0 0.0\n0.4196147918701172 0.12568670511245728 0.21605446934700012 -0.00198370311409235 -0.999969482421875 -0.0 1.4844026565551758 0.5620718598365784 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.7873775362968445 0.616412878036499 -0.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 -0.2839455306529999 0.7461165189743042 0.6657918095588684 -0.0 0.9017375707626343 0.7023459672927856 0 1.0 0 0.0 0 0.0 0 0.0\n2.236670732498169 0.2753120958805084 0.2160544991493225 0.7460860013961792 0.6657918095588684 -0.0 0.5540941953659058 0.5560380220413208 0 1.0 0 0.0 0 0.0 0 0.0\n0.4246535301208496 0.1256064474582672 -0.2839455306529999 -0.03277687728404999 -0.99945068359375 -0.0 0.9847489595413208 0.7257236838340759 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811038374900818 0.7252907752990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 0.21605446934700012 -0.06787316501140594 -0.9976806044578552 -0.0 0.49016478657722473 0.5615012645721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.9344675540924072 0.26793715357780457 -0.2839455306529999 -0.7863399386405945 0.617755651473999 -0.0 0.09787419438362122 0.6835832595825195 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 -0.8250068426132202 0.5650807023048401 -0.0 0.09980490803718567 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 0.21605446934700012 -0.8250068426132202 0.5650807023048401 -0.0 0.3908200263977051 0.5432608127593994 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840862274169922 0.6617412567138672 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021543771028518677 0.6635836362838745 0 1.0 0 0.0 0 0.0 0 0.0\n1.370457410812378 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550280809402466 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.7440717816352844 0.6680806875228882 -0.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 -0.2839455306529999 0.6964934468269348 0.7175206542015076 -0.0 0.9052527546882629 0.7431755065917969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28708624839782715 0.15508809685707092 0.21605446934700012 0.6964934468269348 0.7175206542015076 -0.0 0.5444459915161133 0.5980141162872314 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49211907386779785 0.1528806984424591 -0.2839455306529999 -0.7111117839813232 0.7030549049377441 -0.0 0.05495721101760864 0.7505285739898682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 -0.2839455306529999 -0.7320169806480408 0.6812646985054016 -0.0 0.05936384201049805 0.7411052584648132 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49982476234436035 0.14460089802742004 0.21605446934700012 -0.7320169806480408 0.6812646985054016 -0.0 0.42958128452301025 0.5941163897514343 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 1.002132534980774 0.7248519659042358 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 -0.2839455306529999 0.05169835686683655 -0.9986571669578552 -0.0 0.9978516697883606 0.7254770994186401 0 1.0 0 0.0 0 0.0 0 0.0\n0.40726804733276367 0.1253851056098938 0.21605446934700012 0.05169835686683655 -0.9986571669578552 -0.0 1.4772038459777832 0.5619494318962097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013497740030288696 0.6597400307655334 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840862274169922 0.6617412567138672 0 1.0 0 0.0 0 0.0 0 0.0\n1.3758513927459717 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586208760738373 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n0.42949509620666504 0.12536564469337463 -0.2839455306529999 -0.06787316501140594 -0.9976806044578552 -0.0 0.9811038374900818 0.7252907752990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776194095611572 0.7246223092079163 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 0.21605446934700012 -0.10571611672639847 -0.9943845868110657 -0.0 0.49287116527557373 0.5609472990036011 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 -0.2839455306529999 0.28867459297180176 0.9573961496353149 -0.0 0.008508294820785522 0.6575323343276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013497740030288696 0.6597400307655334 0 1.0 0 0.0 0 0.0 0 0.0\n1.3821523189544678 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623155891895294 0.49790245294570923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.791283905506134 0.6114383339881897 -0.0 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 -0.2839455306529999 0.7440717816352844 0.6680806875228882 -0.0 0.9015175104141235 0.7338099479675293 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2795095443725586 0.14722785353660583 0.21605446934700012 0.7440717816352844 0.6680806875228882 -0.0 0.5484229326248169 0.5902849435806274 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.8273873329162598 0.5616016387939453 -0.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 -0.2839455306529999 0.7873775362968445 0.616412878036499 -0.0 0.898861289024353 0.6926416158676147 0 1.0 0 0.0 0 0.0 0 0.0\n2.2432796955108643 0.2674226760864258 0.21605446934700012 0.7873775362968445 0.616412878036499 -0.0 0.557647705078125 0.547858476638794 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159007549285889 0.723981499671936 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 -0.2839455306529999 0.08148442208766937 -0.9966429471969604 -0.0 0.0021325647830963135 0.7248519659042358 0 1.0 0 0.0 0 0.0 0 0.0\n0.4015543460845947 0.12500807642936707 0.21605446934700012 0.08148442208766937 -0.9966429471969604 -0.0 0.4738771617412567 0.5616071224212646 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 0.002871215343475342 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 -0.2839455306529999 0.28867459297180176 0.9573961496353149 -0.0 0.008508294820785522 0.6575323343276978 0 1.0 0 0.0 0 0.0 0 0.0\n1.3893606662750244 0.06517881155014038 0.21605446934700012 0.28867459297180176 0.9573961496353149 -0.0 0.46660125255584717 0.49503183364868164 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.04907376319169998 -0.9987792372703552 -0.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0008545182645320892 -0.999969482421875 -0.0 0.002812206745147705 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 0.2160544991493225 0.0008545182645320892 -0.999969482421875 -0.0 0.4729996919631958 0.548380970954895 0 1.0 0 0.0 0 0.0 0 0.0\n0.4341397285461426 0.12496429681777954 -0.2839455306529999 -0.10571611672639847 -0.9943845868110657 -0.0 0.9776194095611572 0.7246223092079163 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.9742997884750366 0.7237284183502197 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 0.21605446934700012 -0.14645832777023315 -0.9891964197158813 -0.0 0.4954608380794525 0.5602172613143921 0 1.0 0 0.0 0 0.0 0 0.0\n1.2597200870513916 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516228199005127 0.6356387138366699 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384203910827637 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726346731185913 0.49021202325820923 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.9208349585533142 -0.3899044692516327 -0.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 -0.2839455306529999 0.8912014961242676 -0.4535660743713379 -0.0 0.0478324294090271 0.6794154644012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 0.21605446934700012 0.8912014961242676 -0.4535660743713379 -0.0 0.4322170615196228 0.5300252437591553 0 1.0 0 0.0 0 0.0 0 0.0\n2.0907180309295654 0.2598372995853424 -0.2839455306529999 0.0008545182645320892 -0.999969482421875 -0.0 1.002812147140503 0.7115545868873596 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 -0.2839455306529999 -0.04580828174948692 -0.9989318251609802 -0.0 0.9981156587600708 0.7116611003875732 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 0.21605446934700012 -0.04580828174948692 -0.9989318251609802 -0.0 1.47673761844635 0.5481581687927246 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48732495307922363 0.07810565829277039 -0.2839455306529999 0.8912014961242676 -0.4535660743713379 -0.0 0.0478324294090271 0.6794154644012451 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 -0.2839455306529999 0.8547929525375366 -0.5189062356948853 -0.0 0.04617246985435486 0.685994029045105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 0.21605446934700012 0.8547929525375366 -0.5189062356948853 -0.0 0.4342000186443329 0.5359824895858765 0 1.0 0 0.0 0 0.0 0 0.0\n1.928429365158081 0.2597205638885498 -0.2839455306529999 -0.8250068426132202 0.5650807023048401 -0.0 0.09980490803718567 0.6743261814117432 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 -0.861079752445221 0.5084383487701416 -0.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 0.2160544991493225 -0.861079752445221 0.5084383487701416 -0.0 0.38800495862960815 0.5353667140007019 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009928256273269653 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 -0.2839455306529999 0.11453596502542496 -0.9934080243110657 -0.0 0.006159007549285889 0.723981499671936 0 1.0 0 0.0 0 0.0 0 0.0\n0.3961472511291504 0.1244802474975586 0.21605446934700012 0.11453596502542496 -0.9934080243110657 -0.0 0.47073280811309814 0.5610840916633606 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.99659264087677 0.6522814631462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 1.0028712749481201 0.6550651788711548 0 1.0 0 0.0 0 0.0 0 0.0\n1.3974764347076416 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 1.4714901447296143 0.49197161197662354 0 1.0 0 0.0 0 0.0 0 0.0\n0.4385874271392822 0.12440240383148193 -0.2839455306529999 -0.14645832777023315 -0.9891964197158813 -0.0 0.9742997884750366 0.7237284183502197 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.9711482524871826 0.7226188778877258 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 0.21605446934700012 -0.1902218759059906 -0.981719434261322 -0.0 0.4979337751865387 0.5593129396438599 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48422837257385254 0.08367946743965149 -0.2839455306529999 0.8547929525375366 -0.5189062356948853 -0.0 0.04617246985435486 0.685994029045105 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 -0.2839455306529999 0.8112429976463318 -0.5846735835075378 -0.0 0.044251084327697754 0.6921672821044922 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 0.21605446934700012 0.8112429976463318 -0.5846735835075378 -0.0 0.43633294105529785 0.5414889454841614 0 1.0 0 0.0 0 0.0 0 0.0\n2.0970871448516846 0.25969499349594116 -0.2839455306529999 -0.04580828174948692 -0.9989318251609802 -0.0 0.9981156587600708 0.7116611003875732 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 -0.09424115717411041 -0.9955443143844604 -0.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 0.21605446934700012 -0.09424115717411041 -0.9955443143844604 -0.0 1.4803522825241089 0.5476068258285522 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896879196166992 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.99659264087677 0.6522814631462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.4064991474151611 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769904613494873 0.48872560262680054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4808061122894287 0.0888567864894867 -0.2839455306529999 0.8112429976463318 -0.5846735835075378 -0.0 0.044251084327697754 0.6921672821044922 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 -0.2839455306529999 0.7638782858848572 -0.6453138589859009 -0.0 0.04205942153930664 0.6979392766952515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 0.21605446934700012 0.7638782858848572 -0.6453138589859009 -0.0 0.43861955404281616 0.5465542078018188 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439029455184937 0.7215795516967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 -0.2839455306529999 0.1511887013912201 -0.9884945154190063 -0.0 0.009928256273269653 0.7228847742080688 0 1.0 0 0.0 0 0.0 0 0.0\n0.39104652404785156 0.12380161881446838 0.21605446934700012 0.1511887013912201 -0.9884945154190063 -0.0 0.4677700698375702 0.5603847503662109 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896879196166992 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n1.4164292812347412 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.4831054210662842 0.4853035807609558 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 -0.2839455306529999 0.10028382390737534 -0.9949339032173157 -0.0 0.011683493852615356 0.7100631594657898 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 -0.2839455306529999 0.04907376319169998 -0.9987792372703552 -0.0 0.007328629493713379 0.7110196352005005 0 1.0 0 0.0 0 0.0 0 0.0\n2.084556818008423 0.2596889138221741 0.21605446934700012 0.04907376319169998 -0.9987792372703552 -0.0 0.46939122676849365 0.5482659339904785 0 1.0 0 0.0 0 0.0 0 0.0\n0.4428379535675049 0.1236799955368042 -0.2839455306529999 -0.1902218759059906 -0.981719434261322 -0.0 0.9711482524871826 0.7226188778877258 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.9681668281555176 0.7213025093078613 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 0.21605446934700012 -0.2370677888393402 -0.9714651703834534 -0.0 0.5002904534339905 0.5582360029220581 0 1.0 0 0.0 0 0.0 0 0.0\n1.2612524032592773 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384203910827637 0.6276835203170776 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226513862609863 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759036898612976 0.48207831382751465 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47705769538879395 0.09363764524459839 -0.2839455306529999 0.7638782858848572 -0.6453138589859009 -0.0 0.04205942153930664 0.6979392766952515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 -0.2839455306529999 0.7173070311546326 -0.6967375874519348 -0.0 0.039642542600631714 0.7033029794692993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 0.21605446934700012 0.7173070311546326 -0.6967375874519348 -0.0 0.44102004170417786 0.5511919260025024 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.8651387095451355 0.5015106797218323 -0.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 -0.2839455306529999 0.8273873329162598 0.5616016387939453 -0.0 0.8964853882789612 0.6829080581665039 0 1.0 0 0.0 0 0.0 0 0.0\n2.249192953109741 0.2593313753604889 0.2160544991493225 0.8273873329162598 0.5616016387939453 -0.0 0.5608602166175842 0.5395023822784424 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47306370735168457 0.09802931547164917 -0.2839455306529999 0.7173070311546326 -0.6967375874519348 -0.0 0.039642542600631714 0.7033029794692993 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 -0.2839455306529999 0.6687520742416382 -0.7434614300727844 -0.0 0.03704848885536194 0.7082504034042358 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 0.21605446934700012 0.6687520742416382 -0.7434614300727844 -0.0 0.4434939920902252 0.5554137825965881 0 1.0 0 0.0 0 0.0 0 0.0\n2.1032350063323975 0.2592681050300598 -0.2839455306529999 -0.09424115717411041 -0.9955443143844604 -0.0 0.9935676455497742 0.7113252878189087 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 -0.2839455306529999 -0.14563432335853577 -0.9893185496330261 -0.0 0.989181399345398 0.7105580568313599 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 0.2160544991493225 -0.14563432335853577 -0.9893185496330261 -0.0 1.4838416576385498 0.5467280149459839 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.01669195294380188 0.7200818061828613 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 -0.2839455306529999 0.19196142256259918 -0.9813836812973022 -0.0 0.013439029455184937 0.7215795516967773 0 1.0 0 0.0 0 0.0 0 0.0\n0.38625240325927734 0.12297219038009644 0.21605446934700012 0.19196142256259918 -0.9813836812973022 -0.0 0.46498802304267883 0.55951327085495 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741263389587402 0.6414514780044556 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821848273277283 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n1.4272668361663818 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48982954025268555 0.4817225933074951 0 1.0 0 0.0 0 0.0 0 0.0\n0.44689154624938965 0.12279704213142395 -0.2839455306529999 -0.2370677888393402 -0.9714651703834534 -0.0 0.9681668281555176 0.7213025093078613 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.965356707572937 0.7197878360748291 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 0.21605446934700012 -0.286935031414032 -0.9579149484634399 -0.0 0.5025313496589661 0.556988000869751 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4689042568206787 0.10203909873962402 -0.2839455306529999 0.6687520742416382 -0.7434614300727844 -0.0 0.03704848885536194 0.7082504034042358 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 -0.2839455306529999 0.6146733164787292 -0.7887508869171143 -0.0 0.03427475690841675 0.712781548500061 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 0.21605446934700012 0.6146733164787292 -0.7887508869171143 -0.0 0.44604381918907166 0.5592247247695923 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655718803405762 0.6368474364280701 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741263389587402 0.6414514780044556 0 1.0 0 0.0 0 0.0 0 0.0\n1.439011812210083 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971461296081543 0.4780082702636719 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 -0.2839455306529999 0.15363018214702606 -0.9880977869033813 -0.0 0.015869349241256714 0.7086991667747498 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 -0.2839455306529999 0.10028382390737534 -0.9949339032173157 -0.0 0.011683493852615356 0.7100631594657898 0 1.0 0 0.0 0 0.0 0 0.0\n2.078565835952759 0.25924378633499146 0.21605446934700012 0.10028382390737534 -0.9949339032173157 -0.0 0.4658893346786499 0.5478110909461975 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46457958221435547 0.10566699504852295 -0.2839455306529999 0.6146733164787292 -0.7887508869171143 -0.0 0.03427475690841675 0.712781548500061 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 -0.2839455306529999 0.5552842617034912 -0.8316293954849243 -0.0 0.031319111585617065 0.7168951034545898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 0.21605446934700012 0.5552842617034912 -0.8316293954849243 -0.0 0.4486721456050873 0.562628984451294 0 1.0 0 0.0 0 0.0 0 0.0\n2.109161615371704 0.25855663418769836 -0.2839455306529999 -0.14563432335853577 -0.9893185496330261 -0.0 0.989181399345398 0.7105580568313599 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 -0.2839455306529999 -0.19977416098117828 -0.9798272848129272 -0.0 0.9849684238433838 0.7093707323074341 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 0.2160544991493225 -0.19977416098117828 -0.9798272848129272 -0.0 1.4872045516967773 0.5455227494239807 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.019688516855239868 0.718406081199646 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 -0.2839455306529999 0.2373119294643402 -0.9714041352272034 -0.0 0.01669195294380188 0.7200818061828613 0 1.0 0 0.0 0 0.0 0 0.0\n0.38176465034484863 0.12199193239212036 0.21605446934700012 0.2373119294643402 -0.9714041352272034 -0.0 0.46238505840301514 0.5584733486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655718803405762 0.6368474364280701 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516637325286865 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050248503684998 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n0.4507482051849365 0.12175354361534119 -0.2839455306529999 -0.286935031414032 -0.9579149484634399 -0.0 0.965356707572937 0.7197878360748291 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 0.21605446934700012 -0.3397320508956909 -0.9405194520950317 -0.0 0.5046570301055908 0.5555698871612549 0 1.0 0 0.0 0 0.0 0 0.0\n1.2633976936340332 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226513862609863 0.6200631856918335 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042612671852112 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982289433479309 0.47411829233169556 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46008944511413574 0.10891300439834595 -0.2839455306529999 0.5552842617034912 -0.8316293954849243 -0.0 0.031319111585617065 0.7168951034545898 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 -0.2839455306529999 0.491225928068161 -0.8710287809371948 -0.0 0.028180181980133057 0.7205884456634521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 0.21605446934700012 0.491225928068161 -0.8710287809371948 -0.0 0.4513814449310303 0.5656299591064453 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 -0.2839455306529999 0.20883816480636597 -0.9779351353645325 -0.0 0.01988041400909424 0.7069413065910339 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 -0.2839455306529999 0.15363018214702606 -0.9880977869033813 -0.0 0.015869349241256714 0.7086991667747498 0 1.0 0 0.0 0 0.0 0 0.0\n2.0727450847625732 0.25850191712379456 0.2160544991493225 0.15366069972515106 -0.9880977869033813 -0.0 0.46249303221702576 0.5470205545425415 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45543384552001953 0.11177712678909302 -0.2839455306529999 0.491225928068161 -0.8710287809371948 -0.0 0.028180181980133057 0.7205884456634521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 -0.2839455306529999 0.42326119542121887 -0.9059724807739258 -0.0 0.024857670068740845 0.7238576412200928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 0.21605446934700012 0.42326119542121887 -0.9059724807739258 -0.0 0.4541741907596588 0.5682300329208374 0 1.0 0 0.0 0 0.0 0 0.0\n2.1148669719696045 0.2575605809688568 -0.2839455306529999 -0.19977416098117828 -0.9798272848129272 -0.0 0.9849684238433838 0.7093707323074341 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 -0.2839455306529999 -0.2563554644584656 -0.9665517210960388 -0.0 0.9809385538101196 0.7077746987342834 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 0.21605446934700012 -0.2563554644584656 -0.9665517210960388 -0.0 0.49043959379196167 0.5439919233322144 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712576627731323 -0.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 -0.2839455306529999 0.9072847962379456 0.4204840362071991 -0.0 0.887948751449585 0.6863940358161926 0 1.0 0 0.0 0 0.0 0 0.0\n0.5740368366241455 0.12087064981460571 0.21605446934700012 0.9072847962379456 0.4204840362071991 -0.0 0.5672982335090637 0.5468026399612427 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.949317455291748 0.6264196634292603 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571168422698975 0.6317853927612305 0 1.0 0 0.0 0 0.0 0 0.0\n1.464440107345581 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129398107528687 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45061278343200684 0.11425936222076416 -0.2839455306529999 0.42326119542121887 -0.9059724807739258 -0.0 0.024857670068740845 0.7238576412200928 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 -0.2839455306529999 0.35254982113838196 -0.9357585310935974 -0.0 0.021352380514144897 0.7266969680786133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 0.21605446934700012 0.35254982113838196 -0.9357585310935974 -0.0 0.45705264806747437 0.5704306364059448 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.34348583221435547 -0.939146101474762 -0.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 -0.2839455306529999 0.28769800066947937 -0.9577013254165649 -0.0 0.019688516855239868 0.718406081199646 0 1.0 0 0.0 0 0.0 0 0.0\n0.37758350372314453 0.12086087465286255 0.21605446934700012 0.28769800066947937 -0.9577013254165649 -0.0 0.4599595367908478 0.5572682619094849 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.949317455291748 0.6264196634292603 0 1.0 0 0.0 0 0.0 0 0.0\n1.4765570163726807 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.520378828048706 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 -0.2839455306529999 0.26538896560668945 -0.964140772819519 -0.0 0.02371254563331604 0.704802393913269 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 -0.2839455306529999 0.20883816480636597 -0.9779351353645325 -0.0 0.01988041400909424 0.7069413065910339 0 1.0 0 0.0 0 0.0 0 0.0\n2.067094564437866 0.2574633061885834 0.2160544991493225 0.20883816480636597 -0.9779351353645325 -0.0 0.459200918674469 0.5458978414535522 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544076919555664 0.12054949998855591 -0.2839455306529999 -0.3397320508956909 -0.9405194520950317 -0.0 0.9627187252044678 0.7180824279785156 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186376333236694 -0.0 0.9602524042129517 0.716193437576294 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 0.21605446934700012 -0.395092636346817 -0.9186376333236694 -0.0 0.5066683292388916 0.5539826154708862 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042612671852112 0.6127701997756958 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831767201423645 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.39919033646583557 0.46632468700408936 0 1.0 0 0.0 0 0.0 0 0.0\n-0.44562649726867676 0.11635971069335938 -0.2839455306529999 0.35254982113838196 -0.9357585310935974 -0.0 0.021352380514144897 0.7266969680786133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 -0.2839455306529999 0.28028199076652527 -0.9598986506462097 -0.0 0.0176660418510437 0.7290995121002197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 0.21605446934700012 0.28028199076652527 -0.9598986506462097 -0.0 0.4600192606449127 0.5722322463989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.1203505992889404 0.25627994537353516 -0.2839455306529999 -0.2563554644584656 -0.9665517210960388 -0.0 0.9809385538101196 0.7077746987342834 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 -0.2839455306529999 -0.31492048501968384 -0.9490951299667358 -0.0 0.9770991802215576 0.7057809829711914 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 0.2160544991493225 -0.31492048501968384 -0.9490951299667358 -0.0 0.4935469329357147 0.5421359539031982 0 1.0 0 0.0 0 0.0 0 0.0\n0.26792407035827637 0.1198587417602539 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.08682084083557129 0.6905057430267334 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 0.21605446934700012 -0.9591967463493347 0.28269293904304504 -0.0 0.4022688865661621 0.5451507568359375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4404747486114502 0.11807817220687866 -0.2839455306529999 0.28028199076652527 -0.9598986506462097 -0.0 0.0176660418510437 0.7290995121002197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 -0.2839455306529999 0.20780053734779358 -0.9781487584114075 -0.0 0.013802021741867065 0.7310566306114197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 0.21605446934700012 0.20780053734779358 -0.9781487584114075 -0.0 0.46307632327079773 0.573634147644043 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356687068939209 0.6151248216629028 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421727657318115 0.6208406090736389 0 1.0 0 0.0 0 0.0 0 0.0\n1.4880144596099854 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273305177688599 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 -0.2839455306529999 0.32270270586013794 -0.9464705586433411 -0.0 0.02736303210258484 0.7022942900657654 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 -0.2839455306529999 0.26538896560668945 -0.964140772819519 -0.0 0.02371254563331604 0.704802393913269 0 1.0 0 0.0 0 0.0 0 0.0\n2.0616142749786377 0.2561279237270355 0.2160544991493225 0.26535844802856445 -0.964140772819519 -0.0 0.45601141452789307 0.5444464683532715 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43515753746032715 0.11941477656364441 -0.2839455306529999 0.20780053734779358 -0.9781487584114075 -0.0 0.013802021741867065 0.7310566306114197 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.13629566133022308 -0.9906613230705261 -0.0 0.009765088558197021 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 0.21605446934700012 0.13629566133022308 -0.9906613230705261 -0.0 0.46622589230537415 0.5746346116065979 0 1.0 0 0.0 0 0.0 0 0.0\n2.12561297416687 0.254714697599411 -0.2839455306529999 -0.31492048501968384 -0.9490951299667358 -0.0 0.9770991802215576 0.7057809829711914 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 -0.2839455306529999 -0.3748893737792969 -0.9270607829093933 -0.0 0.9734561443328857 0.7034001350402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 0.2160544991493225 -0.3748893737792969 -0.9270607829093933 -0.0 0.4965265691280365 0.5399552583694458 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.02492421865463257 0.7145699262619019 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 -0.2839455306529999 0.34348583221435547 -0.939146101474762 -0.0 0.022431492805480957 0.7165650129318237 0 1.0 0 0.0 0 0.0 0 0.0\n0.37370872497558594 0.119579017162323 0.21605446934700012 0.34348583221435547 -0.939146101474762 -0.0 0.4577094316482544 0.5559004545211792 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356687068939209 0.6151248216629028 0 1.0 0 0.0 0 0.0 0 0.0\n1.4988129138946533 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337929725646973 0.45867598056793213 0 1.0 0 0.0 0 0.0 0 0.0\n0.4578702449798584 0.1191849410533905 -0.2839455306529999 -0.395092636346817 -0.9186376333236694 -0.0 0.9602524042129517 0.716193437576294 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579575061798096 0.7141268253326416 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 0.21605446934700012 -0.4525589644908905 -0.8917203545570374 -0.0 0.5085660219192505 0.5522264242172241 0 1.0 0 0.0 0 0.0 0 0.0\n1.2695271968841553 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831767201423645 0.6057960987091064 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593053579330444 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048789978027344 0.4586907625198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4296748638153076 0.12036949396133423 -0.2839455306529999 0.13629566133022308 -0.9906613230705261 -0.0 0.009765088558197021 0.7325584888458252 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.06689657270908356 -0.9977416396141052 -0.0 0.005561709403991699 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 0.21605446934700012 0.06689657270908356 -0.9977416396141052 -0.0 0.4694697856903076 0.5752311944961548 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 -0.2839455306529999 0.3802300989627838 -0.9248634576797485 -0.0 0.030830442905426025 0.6994280815124512 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 -0.2839455306529999 0.32270270586013794 -0.9464705586433411 -0.0 0.02736303210258484 0.7022942900657654 0 1.0 0 0.0 0 0.0 0 0.0\n2.0563042163848877 0.2544957995414734 0.21605446934700012 0.32270270586013794 -0.9464705586433411 -0.0 0.45292267203330994 0.5426691770553589 0 1.0 0 0.0 0 0.0 0 0.0\n2.1306540966033936 0.25286486744880676 -0.2839455306529999 -0.3748893737792969 -0.9270607829093933 -0.0 0.9734561443328857 0.7034001350402832 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 -0.4354686141014099 -0.9001739621162415 -0.0 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 0.21605446934700012 -0.4354686141014099 -0.9001739621162415 -0.0 0.49937885999679565 0.5374495983123779 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 -0.2839455306529999 0.47175511717796326 -0.8817102313041687 -0.0 0.027170389890670776 0.7124302387237549 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 -0.2839455306529999 0.4048890769481659 -0.9143345355987549 -0.0 0.02492421865463257 0.7145699262619019 0 1.0 0 0.0 0 0.0 0 0.0\n0.37014031410217285 0.11814635992050171 0.21605446934700012 0.4048890769481659 -0.9143345355987549 -0.0 0.4556327164173126 0.5543718338012695 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244864583015442 0.6035186052322388 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297826290130615 0.6093347072601318 0 1.0 0 0.0 0 0.0 0 0.0\n1.5089523792266846 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397717952728271 0.45477455854415894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4611356258392334 0.11765983700752258 -0.2839455306529999 -0.4525589644908905 -0.8917203545570374 -0.0 0.9579575061798096 0.7141268253326416 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558324813842773 0.7118879556655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 0.21605446934700012 -0.5114291906356812 -0.8593096733093262 -0.0 0.5103511214256287 0.5503013730049133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.8353221416473389 0.5496993660926819 -0.0 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 -0.2839455306529999 0.791283905506134 0.6114383339881897 -0.0 0.8982787132263184 0.7239008545875549 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27240467071533203 0.13872790336608887 0.21605446934700012 0.791283905506134 0.6114383339881897 -0.0 0.5521750450134277 0.5819390416145325 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244864583015442 0.6035186052322388 0 1.0 0 0.0 0 0.0 0 0.0\n1.518432855606079 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452778935432434 0.45086079835891724 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4240269660949707 0.12094232439994812 -0.2839455306529999 0.06689657270908356 -0.9977416396141052 -0.0 0.005561709403991699 0.7335937023162842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 -9.155552834272385e-05 -1.0 -0.0 0.0011998414993286133 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 0.21605446934700012 -9.155552834272385e-05 -1.0 -0.0 0.47280994057655334 0.5754200220108032 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.4372081756591797 -0.8993194103240967 -0.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 -0.2839455306529999 0.3802300989627838 -0.9248634576797485 -0.0 0.030830442905426025 0.6994280815124512 0 1.0 0 0.0 0 0.0 0 0.0\n2.051164388656616 0.252566933631897 0.21605446934700012 0.3802300989627838 -0.9248634576797485 -0.0 0.44993263483047485 0.5405683517456055 0 1.0 0 0.0 0 0.0 0 0.0\n1.2735114097595215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593053579330444 0.5991321802139282 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.07325360178947449 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021371603012085 0.45121073722839355 0 1.0 0 0.0 0 0.0 0 0.0\n1.9230258464813232 0.2512412965297699 -0.2839455306529999 -0.861079752445221 0.5084383487701416 -0.0 0.10137379169464111 0.6650401949882507 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 -0.8938566446304321 0.44828638434410095 -0.0 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 0.21605448424816132 -0.8938566446304321 0.44828638434410095 -0.0 0.38543954491615295 0.5272694230079651 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 -0.2839455306529999 0.5499130487442017 -0.8352000713348389 -0.0 0.029174327850341797 0.7101534605026245 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 -0.2839455306529999 0.47175511717796326 -0.8817102313041687 -0.0 0.027170389890670776 0.7124302387237549 0 1.0 0 0.0 0 0.0 0 0.0\n0.3668785095214844 0.1165628731250763 0.21605446934700012 0.47175511717796326 -0.8817102313041687 -0.0 0.45372745394706726 0.5526838302612305 0 1.0 0 0.0 0 0.0 0 0.0\n0.4642040729522705 0.11597418785095215 -0.2839455306529999 -0.5114291906356812 -0.8593096733093262 -0.0 0.9558324813842773 0.7118879556655884 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538760185241699 0.7094811201095581 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 0.21605446934700012 -0.5681325793266296 -0.8229010701179504 -0.0 0.512024462223053 0.54820716381073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.8735617995262146 0.4866481423377991 -0.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 -0.2839455306529999 0.8353221416473389 0.5496993660926819 -0.0 0.8955774307250977 0.7135368585586548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2659175395965576 0.12963202595710754 0.21605446934700012 0.8353221416473389 0.5496993660926819 -0.0 0.5556415319442749 0.5730181932449341 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8961150050163269 -0.0 0.9155389070510864 0.5919426679611206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197492003440857 0.5977128744125366 0 1.0 0 0.0 0 0.0 0 0.0\n1.5272538661956787 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550325870513916 0.4469272494316101 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4182136058807373 0.12113326787948608 -0.2839455306529999 -9.155552834272385e-05 -1.0 -0.0 1.0011998414993286 0.7341498732566833 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 0.9967317581176758 0.7342070937156677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 1.4762153625488281 0.5751924514770508 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.8996551632881165 0.4365672767162323 -0.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 -0.2839455306529999 0.8651387095451355 0.5015106797218323 -0.0 0.8945741653442383 0.6731503009796143 0 1.0 0 0.0 0 0.0 0 0.0\n2.2544105052948 0.25103816390037537 0.2160544991493225 0.8651387095451355 0.5015106797218323 -0.0 0.5637426972389221 0.5309652090072632 0 1.0 0 0.0 0 0.0 0 0.0\n2.1354739665985107 0.2507304549217224 -0.2839455306529999 -0.4354686141014099 -0.9001739621162415 -0.0 0.9700139164924622 0.7006418704986572 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 -0.2839455306529999 -0.49580371379852295 -0.8684042096138 -0.0 0.9667751789093018 0.697515070438385 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 0.21605448424816132 -0.49580371379852295 -0.8684042096138 -0.0 0.5021044611930847 0.5346182584762573 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 -0.2839455306529999 0.6188848614692688 -0.7854548692703247 -0.0 0.030368447303771973 0.708484947681427 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 -0.2839455306529999 0.5499130487442017 -0.8352000713348389 -0.0 0.029174327850341797 0.7101534605026245 0 1.0 0 0.0 0 0.0 0 0.0\n0.3639230728149414 0.11482855677604675 0.21605446934700012 0.5499130487442017 -0.8352000713348389 -0.0 0.4519915282726288 0.5508368611335754 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8738059401512146 -0.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8961150050163269 -0.0 0.9155389070510864 0.5919426679611206 0 1.0 0 0.0 0 0.0 0 0.0\n1.5354154109954834 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8961150050163269 -0.0 0.5549329519271851 0.44296425580978394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4122908115386963 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 0.9967317581176758 0.7342070937156677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 0.9923887252807617 0.7337468862533569 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 1.4795198440551758 0.5745433568954468 0 1.0 0 0.0 0 0.0 0 0.0\n0.4670755863189697 0.11412802338600159 -0.2839455306529999 -0.5681325793266296 -0.8229010701179504 -0.0 0.9538760185241699 0.7094811201095581 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 0.21605446934700012 -0.6189153790473938 -0.7854243516921997 -0.0 0.5136004686355591 0.5459519624710083 0 1.0 0 0.0 0 0.0 0 0.0\n1.2781085968017578 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.07325360178947449 0.5927698612213135 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.07027402520179749 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.404155969619751 0.4438803195953369 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40654802322387695 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 0.9923887252807617 0.7337468862533569 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 1.4827231168746948 0.5734726786613464 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 -0.2839455306529999 0.4929349720478058 -0.870021641254425 -0.0 0.03721565008163452 0.6926599740982056 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 -0.2839455306529999 0.4372081756591797 -0.8993194103240967 -0.0 0.034114301204681396 0.6962137818336487 0 1.0 0 0.0 0 0.0 0 0.0\n2.0461952686309814 0.2503412961959839 0.21605446934700012 0.4372081756591797 -0.8993194103240967 -0.0 0.4470393657684326 0.5381458401679993 0 1.0 0 0.0 0 0.0 0 0.0\n2.1400725841522217 0.24831146001815796 -0.2839455306529999 -0.49580371379852295 -0.8684042096138 -0.0 0.9667751789093018 0.697515070438385 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 -0.2839455306529999 -0.5549790859222412 -0.8318430185317993 -0.0 0.9637418985366821 0.6940274238586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 0.21605448424816132 -0.5549790859222412 -0.8318430185317993 -0.0 0.5047039985656738 0.5314600467681885 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 -0.2839455306529999 0.9285256266593933 0.3712576627731323 -0.0 0.8871405124664307 0.6785171031951904 0 1.0 0 0.0 0 0.0 0 0.0\n0.5771746635437012 0.11358323693275452 0.21605446934700012 0.9285256266593933 0.3712576627731323 -0.0 0.5691020488739014 0.5396531820297241 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8738059401512146 -0.0 0.9118235111236572 0.5862239599227905 0 1.0 0 0.0 0 0.0 0 0.0\n1.5429184436798096 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8738059401512146 -0.0 0.5591180324554443 0.4389606714248657 0 1.0 0 0.0 0 0.0 0 0.0\n1.2833187580108643 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.07027402520179749 0.5867006778717041 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.0669773519039154 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.4065644145011902 0.43669772148132324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.9059114456176758 0.42344433069229126 -0.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 -0.2839455306529999 0.8735617995262146 0.4866481423377991 -0.0 0.8933745622634888 0.7027099132537842 0 1.0 0 0.0 0 0.0 0 0.0\n-0.26004815101623535 0.11994022130966187 0.21605446934700012 0.8735617995262146 0.4866481423377991 -0.0 0.5588341355323792 0.5635035634040833 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.6719565391540527 -0.7405621409416199 -0.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 -0.2839455306529999 0.6188848614692688 -0.7854548692703247 -0.0 0.030368447303771973 0.708484947681427 0 1.0 0 0.0 0 0.0 0 0.0\n0.3621327877044678 0.11351263523101807 0.21605446934700012 0.6188848614692688 -0.7854548692703247 -0.0 0.4509294629096985 0.5494382381439209 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4009850025177002 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 0.9881839752197266 0.7327767610549927 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 0.9841297268867493 0.7313036918640137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 1.4858251810073853 0.5719797611236572 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 -0.2839455306529999 0.5467696189880371 -0.8372753262519836 -0.0 0.0401361882686615 0.6887743473052979 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 -0.2839455306529999 0.4929349720478058 -0.870021641254425 -0.0 0.03721565008163452 0.6926599740982056 0 1.0 0 0.0 0 0.0 0 0.0\n2.041396379470825 0.24781891703605652 0.21605448424816132 0.4929349720478058 -0.870021641254425 -0.0 0.4442402422428131 0.5354030728340149 0 1.0 0 0.0 0 0.0 0 0.0\n0.26553797721862793 0.11276590824127197 -0.2839455306529999 -0.9591967463493347 0.28269293904304504 -0.0 0.08741673827171326 0.6831655502319336 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 0.21605446934700012 -0.9776909947395325 0.20999786257743835 -0.0 0.4009059965610504 0.5381927490234375 0 1.0 0 0.0 0 0.0 0 0.0\n2.144449472427368 0.2456078827381134 -0.2839455306529999 -0.5549790859222412 -0.8318430185317993 -0.0 0.9637418985366821 0.6940274238586426 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 -0.2839455306529999 -0.6120181679725647 -0.790826141834259 -0.0 0.960913896560669 0.690185546875 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 0.21605448424816132 -0.6120181679725647 -0.790826141834259 -0.0 0.507178783416748 0.527972936630249 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057615399360657 0.574970006942749 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085736274719238 0.5805654525756836 0 1.0 0 0.0 0 0.0 0 0.0\n1.5497620105743408 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.5628992319107056 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3956022262573242 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 0.9841297268867493 0.7313036918640137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 0.9802356958389282 0.7293342351913452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.4888266324996948 0.5700627565383911 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 -0.2839455306529999 0.7252113223075867 -0.6884975433349609 -0.0 0.032404929399490356 0.7050001621246338 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 -0.2839455306529999 0.6719565391540527 -0.7405621409416199 -0.0 0.031444817781448364 0.7067667841911316 0 1.0 0 0.0 0 0.0 0 0.0\n0.36049818992614746 0.11213347315788269 0.21605446934700012 0.6719565391540527 -0.7405621409416199 -0.0 0.44995224475860596 0.5479727387428284 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057615399360657 0.574970006942749 0 1.0 0 0.0 0 0.0 0 0.0\n1.5559461116790771 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662946105003357 0.43078118562698364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3903992176055908 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 0.9802356958389282 0.7293342351913452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.976510763168335 0.7268737554550171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.49172791838645935 0.5677193403244019 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.5980406999588013 -0.8014465570449829 -0.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 -0.2839455306529999 0.5467696189880371 -0.8372753262519836 -0.0 0.0401361882686615 0.6887743473052979 0 1.0 0 0.0 0 0.0 0 0.0\n2.0367677211761475 0.24499979615211487 0.21605448424816132 0.5467696189880371 -0.8372753262519836 -0.0 0.4415329396724701 0.5323407649993896 0 1.0 0 0.0 0 0.0 0 0.0\n0.4697740077972412 0.1121310293674469 -0.2839455306529999 -0.6189153790473938 -0.7854243516921997 -0.0 0.9520689249038696 0.706916332244873 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503912925720215 0.7042018175125122 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 0.21605446934700012 -0.6656697392463684 -0.7462080717086792 -0.0 0.5150942206382751 0.5435440540313721 0 1.0 0 0.0 0 0.0 0 0.0\n1.2891418933868408 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.0669773519039154 0.5809162855148315 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334775686264038 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.40938490629196167 0.42966437339782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1486051082611084 0.24261972308158875 -0.2839455306529999 -0.6120181679725647 -0.790826141834259 -0.0 0.960913896560669 0.690185546875 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 -0.6639912128448486 -0.747703492641449 -0.0 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 0.21605448424816132 -0.6639912128448486 -0.747703492641449 -0.0 0.5095299482345581 0.5241546630859375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3853764533996582 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.976510763168335 0.7268737554550171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9729613661766052 0.7239266633987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.49453020095825195 0.564945638179779 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 -0.2839455306529999 0.7773064374923706 -0.6290780305862427 -0.0 0.033250242471694946 0.7031860947608948 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 -0.2839455306529999 0.7252113223075867 -0.6884975433349609 -0.0 0.032404929399490356 0.7050001621246338 0 1.0 0 0.0 0 0.0 0 0.0\n0.35901927947998047 0.11069107055664062 0.21605446934700012 0.7252113223075867 -0.6884975433349609 -0.0 0.4490593671798706 0.5464398860931396 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101657390594482 -0.0 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033616185188293 0.5694353580474854 0 1.0 0 0.0 0 0.0 0 0.0\n1.5614712238311768 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693216323852539 0.4265783429145813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38053345680236816 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9729613661766052 0.7239266633987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.4972342252731323 0.5617371201515198 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.9299905300140381 0.3675343990325928 -0.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 -0.2839455306529999 0.8996551632881165 0.4365672767162323 -0.0 0.8930968046188354 0.6633660793304443 0 1.0 0 0.0 0 0.0 0 0.0\n2.25893235206604 0.2425430715084076 0.21605448424816132 0.8996551632881165 0.4365672767162323 -0.0 0.5663050413131714 0.5222381353378296 0 1.0 0 0.0 0 0.0 0 0.0\n0.4723243713378906 0.10999298095703125 -0.2839455306529999 -0.6656697392463684 -0.7462080717086792 -0.0 0.9503912925720215 0.7042018175125122 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488418102264404 0.7013393640518188 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 0.21605446934700012 -0.7104098796844482 -0.7037568092346191 -0.0 0.5165062546730042 0.5409820079803467 0 1.0 0 0.0 0 0.0 0 0.0\n1.2955777645111084 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334775686264038 0.5754095315933228 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 -0.5591601133346558 -0.8290352821350098 -0.0 0.05936765670776367 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 0.21605446934700012 -0.5591601133346558 -0.8290352821350098 -0.0 0.412642240524292 0.4227854609489441 0 1.0 0 0.0 0 0.0 0 0.0\n1.9182569980621338 0.24249932169914246 -0.2839455306529999 -0.8938566446304321 0.44828638434410095 -0.0 0.10260581970214844 0.6557139158248901 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 -0.922727108001709 0.38541826605796814 -0.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 0.21605448424816132 -0.922727108001709 0.38541826605796814 -0.0 0.38311290740966797 0.5189554691314697 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.9324930310249329 0.36115604639053345 -0.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 -0.2839455306529999 0.9059114456176758 0.42344433069229126 -0.0 0.8916356563568115 0.691405177116394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25479650497436523 0.10965245962142944 0.21605446934700012 0.9059114456176758 0.42344433069229126 -0.0 0.5617637038230896 0.5533726215362549 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 -0.2839455306529999 0.82680743932724 -0.5624561309814453 -0.0 0.033982157707214355 0.7013251185417175 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 -0.2839455306529999 0.7773064374923706 -0.6290780305862427 -0.0 0.033250242471694946 0.7031860947608948 0 1.0 0 0.0 0 0.0 0 0.0\n0.3576960563659668 0.10918542742729187 0.21605446934700012 0.7773064374923706 -0.6290780305862427 -0.0 0.448250412940979 0.5448392033576965 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101657390594482 -0.0 0.9013361930847168 0.5637887716293335 0 1.0 0 0.0 0 0.0 0 0.0\n1.5663940906524658 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101657390594482 -0.0 0.5720328688621521 0.42212748527526855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3758707046508789 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9695932269096375 0.7204959988594055 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.9664097428321838 0.7165837287902832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.49984145164489746 0.5580880641937256 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 -0.2839455306529999 0.6477859020233154 -0.7618030309677124 -0.0 0.045444995164871216 0.6800327301025391 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 -0.2839455306529999 0.5980406999588013 -0.8014465570449829 -0.0 0.04287832975387573 0.684563398361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.0323092937469482 0.24188390374183655 0.21605448424816132 0.5980406999588013 -0.8014465570449829 -0.0 0.4389148950576782 0.5289592742919922 0 1.0 0 0.0 0 0.0 0 0.0\n0.47472643852233887 0.10771384835243225 -0.2839455306529999 -0.7104098796844482 -0.7037568092346191 -0.0 0.9488418102264404 0.7013393640518188 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 0.21605446934700012 -0.7525253891944885 -0.6585283875465393 -0.0 0.5178369283676147 0.5382643938064575 0 1.0 0 0.0 0 0.0 0 0.0\n1.3026268482208252 -0.0014586597681045532 -0.2839455306529999 -0.5591601133346558 -0.8290352821350098 -0.0 0.05936765670776367 0.5701737403869629 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601981282234192 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.41551315784454346 0.4177248477935791 0 1.0 0 0.0 0 0.0 0 0.0\n2.1525394916534424 0.2393469512462616 -0.2839455306529999 -0.6639912128448486 -0.747703492641449 -0.0 0.958290696144104 0.6859949827194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 -0.2839455306529999 -0.7098605036735535 -0.7043061852455139 -0.0 0.9559001922607422 0.6815630197525024 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 0.21605448424816132 -0.7098605036735535 -0.7043061852455139 -0.0 0.5117291212081909 0.5201003551483154 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3713877201080322 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.9664097428321838 0.7165837287902832 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9634137153625488 0.7121903896331787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5023529529571533 0.5539916753768921 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 -0.2839455306529999 0.8720968961715698 -0.48930326104164124 -0.0 0.03460210561752319 0.6994175910949707 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 -0.2839455306529999 0.82680743932724 -0.5624561309814453 -0.0 0.033982157707214355 0.7013251185417175 0 1.0 0 0.0 0 0.0 0 0.0\n0.35652852058410645 0.10761654376983643 0.21605446934700012 0.82680743932724 -0.5624561309814453 -0.0 0.4475249648094177 0.5431699752807617 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995866775512695 0.5579736828804016 0 1.0 0 0.0 0 0.0 0 0.0\n1.5708892345428467 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745283365249634 0.4174097776412964 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36708498001098633 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9634137153625488 0.7121903896331787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5047703385353088 0.5494404435157776 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 -0.2839455306529999 0.6968291401863098 -0.7172154784202576 -0.0 0.04782417416572571 0.6751836538314819 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 -0.2839455306529999 0.6477859020233154 -0.7618030309677124 -0.0 0.045444995164871216 0.6800327301025391 0 1.0 0 0.0 0 0.0 0 0.0\n2.0280210971832275 0.23847129940986633 0.21605448424816132 0.6477859020233154 -0.7618030309677124 -0.0 0.4363836348056793 0.525258481502533 0 1.0 0 0.0 0 0.0 0 0.0\n1.3085453510284424 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601981282234192 0.5664651393890381 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.05196726322174072 0.5626709461212158 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191212058067322 0.41234201192855835 0 1.0 0 0.0 0 0.0 0 0.0\n2.1562039852142334 0.23587459325790405 -0.2839455306529999 -0.7098605036735535 -0.7043061852455139 -0.0 0.9559001922607422 0.6815630197525024 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 -0.7530442476272583 -0.6579485535621643 -0.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 0.21605448424816132 -0.7530442476272583 -0.6579485535621643 -0.0 0.5137469172477722 0.5159071683883667 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.9117099642753601 -0.4108096659183502 -0.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 -0.2839455306529999 0.8720968961715698 -0.48930326104164124 -0.0 0.03460210561752319 0.6994175910949707 0 1.0 0 0.0 0 0.0 0 0.0\n0.3555166721343994 0.10598441958427429 0.21605446934700012 0.8720968961715698 -0.48930326104164124 -0.0 0.4468827545642853 0.5414315462112427 0 1.0 0 0.0 0 0.0 0 0.0\n1.3156745433807373 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.05196726322174072 0.5626709461212158 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.047177255153656006 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.42351773381233215 0.4066343903541565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.9537034034729004 0.3006683588027954 -0.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 -0.2839455306529999 0.9324930310249329 0.36115604639053345 -0.0 0.8903305530548096 0.6796026229858398 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25016283988952637 0.09876877069473267 0.21605446934700012 0.9324930310249329 0.36115604639053345 -0.0 0.5644399523735046 0.5426000356674194 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.9540696144104004 0.299539178609848 -0.0 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 -0.2839455306529999 0.9462873935699463 0.3232520520687103 -0.0 0.8865388035774231 0.6703751087188721 0 1.0 0 0.0 0 0.0 0 0.0\n0.579991340637207 0.1059650182723999 0.21605446934700012 0.9462873935699463 0.3232520520687103 -0.0 0.5707834959030151 0.5321577787399292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.362962007522583 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9606061577796936 0.7073150277137756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 -0.2839455306529999 -0.7774590253829956 -0.6289254426956177 -0.0 0.9579875469207764 0.7019557952880859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 0.21605446934700012 -0.7774590253829956 -0.6289254426956177 -0.0 0.5070947408676147 0.5444257855415344 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.7431256771087646 -0.669148862361908 -0.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 -0.2839455306529999 0.6968291401863098 -0.7172154784202576 -0.0 0.04782417416572571 0.6751836538314819 0 1.0 0 0.0 0 0.0 0 0.0\n2.0239274501800537 0.23475462198257446 0.21605448424816132 0.6968291401863098 -0.7172154784202576 -0.0 0.43394935131073 0.5212298631668091 0 1.0 0 0.0 0 0.0 0 0.0\n0.26368212699890137 0.10545903444290161 -0.2839455306529999 -0.9776909947395325 0.20999786257743835 -0.0 0.08772853016853333 0.6757197380065918 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 0.21605446934700012 -0.9904171824455261 0.13800470530986786 -0.0 0.39975273609161377 0.5309807062149048 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.8981013298034668 0.5519905090332031 0 1.0 0 0.0 0 0.0 0 0.0\n1.5749561786651611 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768167972564697 0.41242218017578125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35901927947998047 0.09293714165687561 -0.2839455306529999 -0.7774590253829956 -0.6289254426956177 -0.0 0.9579875469207764 0.7019557952880859 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 -0.2839455306529999 -0.82644122838974 -0.5630054473876953 -0.0 0.9556089639663696 0.6960643529891968 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 0.21605446934700012 -0.82644122838974 -0.5630054473876953 -0.0 0.5092871785163879 0.5388861894607544 0 1.0 0 0.0 0 0.0 0 0.0\n0.47697997093200684 0.1052936315536499 -0.2839455306529999 -0.7525253891944885 -0.6585283875465393 -0.0 0.9474191069602966 0.6983301043510437 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461212158203125 0.6951746940612793 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 0.21605446934700012 -0.791589081287384 -0.6110110878944397 -0.0 0.519087016582489 0.5353895425796509 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.9553819298744202 0.2953581213951111 -0.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 -0.2839455306529999 0.9299905300140381 0.3675343990325928 -0.0 0.8920276165008545 0.6535477638244629 0 1.0 0 0.0 0 0.0 0 0.0\n2.262758493423462 0.23384609818458557 0.21605448424816132 0.9299905300140381 0.3675343990325928 -0.0 0.5685557723045349 0.5133090019226074 0 1.0 0 0.0 0 0.0 0 0.0\n1.3240149021148682 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.047177255153656006 0.5587553977966309 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.04161494970321655 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.42876115441322327 0.40061187744140625 0 1.0 0 0.0 0 0.0 0 0.0\n1.914123296737671 0.23349463939666748 -0.2839455306529999 -0.922727108001709 0.38541826605796814 -0.0 0.10352206230163574 0.646332859992981 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 -0.9471724629402161 0.32068848609924316 -0.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 0.21605448424816132 -0.9471724629402161 0.32068848609924316 -0.0 0.3810150623321533 0.5104093551635742 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35532689094543457 0.08799093961715698 -0.2839455306529999 -0.82644122838974 -0.5630054473876953 -0.0 0.9556089639663696 0.6960643529891968 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 -0.8703573942184448 -0.4923551082611084 -0.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 0.21605446934700012 -0.8703573942184448 -0.4923551082611084 -0.0 0.5113084316253662 0.5327562093734741 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 -0.2839455306529999 0.9444563388824463 -0.32856225967407227 -0.0 0.035510897636413574 0.6954621076583862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 -0.2839455306529999 0.9117099642753601 -0.4108096659183502 -0.0 0.03511127829551697 0.6974632740020752 0 1.0 0 0.0 0 0.0 0 0.0\n0.3546605110168457 0.10428905487060547 0.21605446934700012 0.9117099642753601 -0.4108096659183502 -0.0 0.4463235139846802 0.5396226644515991 0 1.0 0 0.0 0 0.0 0 0.0\n2.1595494747161865 0.23228806257247925 -0.2839455306529999 -0.7530442476272583 -0.6579485535621643 -0.0 0.9537681341171265 0.6770002841949463 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 -0.2839455306529999 -0.7951902747154236 -0.6063417196273804 -0.0 0.9518887996673584 0.6723135113716125 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 0.21605448424816132 -0.7951902747154236 -0.6063417196273804 -0.0 0.5155841708183289 0.5115742087364197 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968690633773804 0.5458383560180664 0 1.0 0 0.0 0 0.0 0 0.0\n1.5785949230194092 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789067149162292 0.4071614742279053 0 1.0 0 0.0 0 0.0 0 0.0\n0.47908520698547363 0.1027323305606842 -0.2839455306529999 -0.791589081287384 -0.6110110878944397 -0.0 0.9461212158203125 0.6951746940612793 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 -0.2839455306529999 -0.8272347450256348 -0.5618152618408203 -0.0 0.9449462890625 0.6918731927871704 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 0.21605446934700012 -0.8272347450256348 -0.5618152618408203 -0.0 0.5202569961547852 0.5323554277420044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.9700918793678284 0.24268318712711334 -0.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 -0.2839455306529999 0.9537034034729004 0.3006683588027954 -0.0 0.8894327878952026 0.667277991771698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24614691734313965 0.08728915452957153 0.21605446934700012 0.9537034034729004 0.3006683588027954 -0.0 0.5668718218803406 0.5311582088470459 0 1.0 0 0.0 0 0.0 0 0.0\n1.3335669040679932 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.04161494970321655 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524675965309143 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349140524864197 0.3943028450012207 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3519556522369385 0.08255091309547424 -0.2839455306529999 -0.8703573942184448 -0.4923551082611084 -0.0 0.953519344329834 0.689590573310852 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 -0.2839455306529999 -0.9055147171020508 -0.42426830530166626 -0.0 0.9517133235931396 0.6825268268585205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 0.21605446934700012 -0.9055147171020508 -0.42426830530166626 -0.0 0.513160228729248 0.5260202884674072 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 -0.2839455306529999 0.7848750352859497 -0.6196172833442688 -0.0 0.051993101835250854 0.6645351648330688 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 -0.2839455306529999 0.7431256771087646 -0.669148862361908 -0.0 0.05000510811805725 0.6700170040130615 0 1.0 0 0.0 0 0.0 0 0.0\n2.020052671432495 0.23072659969329834 0.21605448424816132 0.7431256771087646 -0.669148862361908 -0.0 0.43162181973457336 0.5168639421463013 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 -0.2839455306529999 0.9696340560913086 -0.24454481899738312 -0.0 0.03580203652381897 0.6934133172035217 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 -0.2839455306529999 0.9444563388824463 -0.32856225967407227 -0.0 0.035510897636413574 0.6954621076583862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539600372314453 0.10253044962882996 0.21605446934700012 0.9444563388824463 -0.32856225967407227 -0.0 0.44584715366363525 0.5377424955368042 0 1.0 0 0.0 0 0.0 0 0.0\n2.16257643699646 0.22858721017837524 -0.2839455306529999 -0.7951902747154236 -0.6063417196273804 -0.0 0.9518887996673584 0.6723135113716125 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 -0.8354136943817139 -0.5495772957801819 -0.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 0.21605448424816132 -0.8354136943817139 -0.5495772957801819 -0.0 0.5172411203384399 0.5071002244949341 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3489053249359131 0.07661712169647217 -0.2839455306529999 -0.9055147171020508 -0.42426830530166626 -0.0 0.9517133235931396 0.6825268268585205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 -0.9329813718795776 -0.35990479588508606 -0.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 0.21605446934700012 -0.9329813718795776 -0.35990479588508606 -0.0 0.5148437023162842 0.5186618566513062 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3882870078086853 -0.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958801031112671 0.5395151972770691 0 1.0 0 0.0 0 0.0 0 0.0\n1.581805944442749 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808056592941284 0.4016239047050476 0 1.0 0 0.0 0 0.0 0 0.0\n1.344330072402954 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524675965309143 0.5504133701324463 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028043359518051147 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204047322273254 0.38775986433029175 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16067995131015778 -0.0 0.03598567843437195 0.6913160681724548 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 -0.2839455306529999 0.9696340560913086 -0.24454481899738312 -0.0 0.03580203652381897 0.6934133172035217 0 1.0 0 0.0 0 0.0 0 0.0\n0.35341525077819824 0.10070860385894775 0.21605446934700012 0.9696340560913086 -0.24454481899738312 -0.0 0.44545358419418335 0.5357896089553833 0 1.0 0 0.0 0 0.0 0 0.0\n0.48104214668273926 0.10002994537353516 -0.2839455306529999 -0.8272347450256348 -0.5618152618408203 -0.0 0.9449462890625 0.6918731927871704 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.943892776966095 0.6884253621101379 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 0.21605446934700012 -0.8592181205749512 -0.5115817785263062 -0.0 0.5213472843170166 0.5291599035263062 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.8219855427742004 -0.5694754123687744 -0.0 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 -0.2839455306529999 0.7848750352859497 -0.6196172833442688 -0.0 0.051993101835250854 0.6645351648330688 0 1.0 0 0.0 0 0.0 0 0.0\n2.0163967609405518 0.22638723254203796 0.21605448424816132 0.7848750352859497 -0.6196172833442688 -0.0 0.4293980002403259 0.5121585726737976 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.982207715511322 0.18762779235839844 -0.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 -0.2839455306529999 0.9700918793678284 0.24268318712711334 -0.0 0.8889200687408447 0.6544054746627808 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24274897575378418 0.07521361112594604 0.21605446934700012 0.9700918793678284 0.24268318712711334 -0.0 0.5690667629241943 0.5190191268920898 0 1.0 0 0.0 0 0.0 0 0.0\n1.3563048839569092 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028043359518051147 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.01998576521873474 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.4501991868019104 0.38106727600097656 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.9751884341239929 0.2212591916322708 -0.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 -0.2839455306529999 0.9553819298744202 0.2953581213951111 -0.0 0.8913447856903076 0.6436830163002014 0 1.0 0 0.0 0 0.0 0 0.0\n2.2658889293670654 0.2249472439289093 0.21605448424816132 0.9553819298744202 0.2953581213951111 -0.0 0.5705021023750305 0.5041624307632446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 -0.2839455306529999 0.9443647861480713 -0.32883694767951965 -0.0 0.05040016770362854 0.6650172472000122 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 -0.2839455306529999 0.9208349585533142 -0.3899044692516327 -0.0 0.04923892021179199 0.6724258065223694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4900953769683838 0.07213538885116577 0.21605446934700012 0.9208349585533142 -0.3899044692516327 -0.0 0.430381178855896 0.5236064195632935 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 -0.2839455306529999 0.9869990944862366 -0.16067995131015778 -0.0 0.03598567843437195 0.6913160681724548 0 1.0 0 0.0 0 0.0 0 0.0\n0.3530261516571045 0.09882351756095886 0.21605446934700012 0.9869990944862366 -0.16067995131015778 -0.0 0.44514283537864685 0.5337626934051514 0 1.0 0 0.0 0 0.0 0 0.0\n2.1652848720550537 0.22477203607559204 -0.2839455306529999 -0.8354136943817139 -0.5495772957801819 -0.0 0.95025634765625 0.6675083637237549 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 -0.2839455306529999 -0.8727683424949646 -0.48808252811431885 -0.0 0.9488654136657715 0.6625887155532837 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 0.21605448424816132 -0.8727683424949646 -0.48808252811431885 -0.0 0.5187181234359741 0.5024833083152771 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3461761474609375 0.07018956542015076 -0.2839455306529999 -0.9329813718795776 -0.35990479588508606 -0.0 0.9501850008964539 0.6748630404472351 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 -0.2839455306529999 -0.9539475440979004 -0.299874871969223 -0.0 0.9489279985427856 0.6665880680084229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 0.21605446934700012 -0.9539475440979004 -0.299874871969223 -0.0 0.516359806060791 0.510663628578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3882870078086853 -0.0 0.8951258659362793 0.5330184698104858 0 1.0 0 0.0 0 0.0 0 0.0\n1.5845882892608643 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3882870078086853 -0.0 0.5825195908546448 0.3958056569099426 0 1.0 0 0.0 0 0.0 0 0.0\n0.4828505516052246 0.09718650579452515 -0.2839455306529999 -0.8592181205749512 -0.5115817785263062 -0.0 0.943892776966095 0.6884253621101379 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429585933685303 0.6848305463790894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 0.21605446934700012 -0.887417197227478 -0.460921049118042 -0.0 0.5223584175109863 0.5258004069328308 0 1.0 0 0.0 0 0.0 0 0.0\n1.3694908618927002 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.01998576521873474 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.011071175336837769 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.4594356119632721 0.37434643507003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.9106242656707764 0.22422727942466736 -0.2839455306529999 -0.9471724629402161 0.32068848609924316 -0.0 0.10414043068885803 0.6368800401687622 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 -0.9669179320335388 0.2550126612186432 -0.0 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 0.21605448424816132 -0.9669179320335388 0.2550126612186432 -0.0 0.3791377544403076 0.5016137361526489 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845106601715088 0.09420198202133179 -0.2839455306529999 -0.887417197227478 -0.460921049118042 -0.0 0.9429585933685303 0.6848305463790894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41041290760040283 -0.0 0.9421420097351074 0.6810873746871948 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 0.21605446934700012 -0.9118625521659851 -0.41041290760040283 -0.0 0.5232906341552734 0.5222742557525635 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 -0.2839455306529999 0.9625537991523743 -0.2710043787956238 -0.0 0.05132386088371277 0.657180666923523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 -0.2839455306529999 0.9443647861480713 -0.32883694767951965 -0.0 0.05040016770362854 0.6650172472000122 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4925398826599121 0.06576862931251526 0.21605446934700012 0.9443647861480713 -0.32883694767951965 -0.0 0.42868953943252563 0.5167142152786255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3437681198120117 0.06326821446418762 -0.2839455306529999 -0.9539475440979004 -0.299874871969223 -0.0 0.9489279985427856 0.6665880680084229 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 -0.9696340560913086 -0.24448378384113312 -0.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 0.21605446934700012 -0.9696340560913086 -0.24448378384113312 -0.0 0.5177088975906372 0.5020086765289307 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945986032485962 0.5263450145721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.5869429111480713 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840545892715454 0.38970285654067993 0 1.0 0 0.0 0 0.0 0 0.0\n0.4860224723815918 0.09107637405395508 -0.2839455306529999 -0.9118625521659851 -0.41041290760040283 -0.0 0.9421420097351074 0.6810873746871948 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414411783218384 0.6771945357322693 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 0.21605446934700012 -0.9327067136764526 -0.36057618260383606 -0.0 0.5241441130638123 0.5185786485671997 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 -0.2839455306529999 0.8544571995735168 -0.5194555521011353 -0.0 0.0554124116897583 0.652630627155304 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 -0.2839455306529999 0.8219855427742004 -0.5694754123687744 -0.0 0.05379372835159302 0.6587395071983337 0 1.0 0 0.0 0 0.0 0 0.0\n2.0129597187042236 0.22173652052879333 0.21605448424816132 0.8219855427742004 -0.5694754123687744 -0.0 0.4272748827934265 0.5071110725402832 0 1.0 0 0.0 0 0.0 0 0.0\n1.3838880062103271 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.011071175336837769 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 0.0013197362422943115 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 0.46977055072784424 0.3677605390548706 0 1.0 0 0.0 0 0.0 0 0.0\n2.1676747798919678 0.22084254026412964 -0.2839455306529999 -0.8727683424949646 -0.48808252811431885 -0.0 0.9488654136657715 0.6625887155532837 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 -0.2839455306529999 -0.9063692092895508 -0.42240670323371887 -0.0 0.9477107524871826 0.6575570106506348 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 0.21605448424816132 -0.9063692092895508 -0.42240670323371887 -0.0 0.5200154185295105 0.4977208375930786 0 1.0 0 0.0 0 0.0 0 0.0\n0.48738574981689453 0.08780968189239502 -0.2839455306529999 -0.9327067136764526 -0.36057618260383606 -0.0 0.9414411783218384 0.6771945357322693 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.9408544301986694 0.6731500029563904 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 0.21605446934700012 -0.9501022100448608 -0.3119296729564667 -0.0 0.5249190926551819 0.5147103667259216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.9907223582267761 0.1358378827571869 -0.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 -0.2839455306529999 0.982207715511322 0.18762779235839844 -0.0 0.88877272605896 0.6409586668014526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23996877670288086 0.06254212558269501 0.21605446934700012 0.982207715511322 0.18762779235839844 -0.0 0.5710310339927673 0.506155252456665 0 1.0 0 0.0 0 0.0 0 0.0\n1.3994967937469482 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 1.0013197660446167 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811851978302002 0.3615119457244873 0 1.0 0 0.0 0 0.0 0 0.0\n2.169746160507202 0.21679872274398804 -0.2839455306529999 -0.9063692092895508 -0.42240670323371887 -0.0 0.9477107524871826 0.6575570106506348 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 -0.9354228377342224 -0.35349589586257935 -0.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 0.21605448424816132 -0.9354228377342224 -0.35349589586257935 -0.0 0.5211325287818909 0.4928099513053894 0 1.0 0 0.0 0 0.0 0 0.0\n0.4886007308959961 0.08440190553665161 -0.2839455306529999 -0.9501022100448608 -0.3119296729564667 -0.0 0.9408544301986694 0.6731500029563904 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 -0.2839455306529999 -0.9576708078384399 -0.28785058856010437 -0.0 0.9403797388076782 0.6689515113830566 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 0.21605446934700012 -0.9576708078384399 -0.28785058856010437 -0.0 0.5256157517433167 0.5106663703918457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 -0.2839455306529999 0.9761955738067627 -0.21677297353744507 -0.0 0.052017420530319214 0.6489062309265137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 -0.2839455306529999 0.9625537991523743 -0.2710043787956238 -0.0 0.05132386088371277 0.657180666923523 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4946584701538086 0.05900539457798004 0.21605446934700012 0.9625537991523743 -0.2710043787956238 -0.0 0.42713963985443115 0.509336531162262 0 1.0 0 0.0 0 0.0 0 0.0\n0.4896674156188965 0.08085307478904724 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.9403797388076782 0.6689515113830566 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 -0.2839455306529999 0.1817987561225891 -0.983306348323822 -0.0 0.8861355781555176 0.6619564890861511 0 1.0 0 0.0 0 0.0 0 0.0\n0.5824871063232422 0.0980159342288971 0.21605446934700012 0.1817987561225891 -0.983306348323822 -0.0 0.5723457336425781 0.5243042707443237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34168124198913574 0.05585309863090515 -0.2839455306529999 -0.9696340560913086 -0.24448378384113312 -0.0 0.9479355216026306 0.6576895713806152 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 -0.9810479879379272 -0.19373150169849396 -0.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 0.21605446934700012 -0.9810479879379272 -0.19373150169849396 -0.0 0.5188910961151123 0.49268102645874023 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942915797233582 0.5194913744926453 0 1.0 0 0.0 0 0.0 0 0.0\n1.588869333267212 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854150056838989 0.38331174850463867 0 1.0 0 0.0 0 0.0 0 0.0\n0.2623565196990967 0.09793812036514282 -0.2839455306529999 -0.9904171824455261 0.13800470530986786 -0.0 0.0877656638622284 0.6681522727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 0.21605446934700012 -0.9976806044578552 0.06784264743328094 -0.0 0.3988074064254761 0.5234965085983276 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.8825342655181885 -0.4701986610889435 -0.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 -0.2839455306529999 0.8544571995735168 -0.5194555521011353 -0.0 0.0554124116897583 0.652630627155304 0 1.0 0 0.0 0 0.0 0 0.0\n2.0097415447235107 0.21677446365356445 0.21605448424816132 0.8544571995735168 -0.5194555521011353 -0.0 0.4252496063709259 0.5017184019088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4163167476654053 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907829761505127 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795480966567993 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936075210571289 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.9891964197158813 0.14651936292648315 -0.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 -0.2839455306529999 0.9751884341239929 0.2212591916322708 -0.0 0.8910309076309204 0.6337556838989258 0 1.0 0 0.0 0 0.0 0 0.0\n2.2683236598968506 0.2158464789390564 0.21605448424816132 0.9751884341239929 0.2212591916322708 -0.0 0.5721495151519775 0.4947805404663086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 -0.2839455306529999 0.9860530495643616 -0.1663258820772171 -0.0 0.052487730979919434 0.6401838064193726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 -0.2839455306529999 0.9761955738067627 -0.21677297353744507 -0.0 0.052017420530319214 0.6489062309265137 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49645113945007324 0.05184568464756012 0.21605446934700012 0.9761955738067627 -0.21677297353744507 -0.0 0.4257296025753021 0.5014607906341553 0 1.0 0 0.0 0 0.0 0 0.0\n1.4343478679656982 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795480966567993 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.5069013833999634 0.3509639501571655 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 -0.2839455306529999 1.0 0.00030518509447574615 -0.0 0.036034226417541504 0.6869708895683289 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.036062777042388916 0.6891690492630005 0 1.0 0 0.0 0 0.0 0 0.0\n0.35279273986816406 0.09687519073486328 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4449150860309601 0.5316601991653442 0 1.0 0 0.0 0 0.0 0 0.0\n1.9077603816986084 0.2146972119808197 -0.2839455306529999 -0.9669179320335388 0.2550126612186432 -0.0 0.10447537899017334 0.6273366212844849 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 -0.981872022151947 0.1893673539161682 -0.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 0.21605448424816132 -0.981872022151947 0.1893673539161682 -0.0 0.37747377157211304 0.4925498366355896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.9961546659469604 0.0873439759016037 -0.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 -0.2839455306529999 0.9907223582267761 0.1358378827571869 -0.0 0.8889747858047485 0.6269134283065796 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2378063201904297 0.049274712800979614 0.21605446934700012 0.9907223582267761 0.1358378827571869 -0.0 0.5727694630622864 0.4925420880317688 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 -0.2839455306529999 0.9967955350875854 0.0799279734492302 -0.0 0.035920560359954834 0.6850960850715637 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 -0.2839455306529999 1.0 0.00030518509447574615 -0.0 0.036034226417541504 0.6869708895683289 0 1.0 0 0.0 0 0.0 0 0.0\n0.35271477699279785 0.09486359357833862 0.21605446934700012 0.999969482421875 0.00030518509447574615 -0.0 0.4447703957557678 0.5294804573059082 0 1.0 0 0.0 0 0.0 0 0.0\n2.1714985370635986 0.21264058351516724 -0.2839455306529999 -0.9354228377342224 -0.35349589586257935 -0.0 0.9467873573303223 0.6524146795272827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 -0.2839455306529999 -0.9592577815055847 -0.28247931599617004 -0.0 0.9460904598236084 0.6471614837646484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 0.21605448424816132 -0.9592577815055847 -0.28247931599617004 -0.0 0.5220695734024048 0.48774731159210205 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33991527557373047 0.04794420301914215 -0.2839455306529999 -0.9810479879379272 -0.19373150169849396 -0.0 0.9472004771232605 0.6481556296348572 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 -0.2839455306529999 -0.9890438318252563 -0.14740440249443054 -0.0 0.9467159509658813 0.637975811958313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 0.21605446934700012 -0.9890438318252563 -0.14740440249443054 -0.0 0.5199055075645447 0.4826669692993164 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941991329193115 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.5903680324554443 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866047143936157 0.37662893533706665 0 1.0 0 0.0 0 0.0 0 0.0\n1.4535901546478271 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677410125732422 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.9652423858642578 0.5122944116592407 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097460150718689 0.3499676585197449 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 -0.2839455306529999 0.9868159890174866 0.16180913150310516 -0.0 0.035719335079193115 0.6832844018936157 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 -0.2839455306529999 0.9967955350875854 0.0799279734492302 -0.0 0.035920560359954834 0.6850960850715637 0 1.0 0 0.0 0 0.0 0 0.0\n0.3527829647064209 0.09313416481018066 0.21605446934700012 0.9967955350875854 0.0799279734492302 -0.0 0.4447213411331177 0.5275986194610596 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 -0.2839455306529999 0.9064912796020508 -0.4221625328063965 -0.0 0.058125704526901245 0.6394720077514648 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 -0.2839455306529999 0.8825342655181885 -0.4701986610889435 -0.0 0.05685460567474365 0.6462084054946899 0 1.0 0 0.0 0 0.0 0 0.0\n2.006742238998413 0.21150106191635132 0.21605448424816132 0.8825342655181885 -0.4701986610889435 -0.0 0.4233194589614868 0.49597716331481934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 -0.2839455306529999 0.9927976131439209 -0.11957152187824249 -0.0 0.05274131894111633 0.6310035586357117 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 -0.2839455306529999 0.9860530495643616 -0.1663258820772171 -0.0 0.052487730979919434 0.6401838064193726 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49791789054870605 0.04428949952125549 0.21605446934700012 0.9860530495643616 -0.1663258820772171 -0.0 0.424457848072052 0.4930746555328369 0 1.0 0 0.0 0 0.0 0 0.0\n1.4577252864837646 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.9652423858642578 0.5122944116592407 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629137516021729 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.512410044670105 0.34898412227630615 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 -0.2839455306529999 0.9868159890174866 0.16180913150310516 -0.0 0.035719335079193115 0.6832844018936157 0 1.0 0 0.0 0 0.0 0 0.0\n0.35298728942871094 0.09144851565361023 0.21605446934700012 0.9868159890174866 0.16180913150310516 -0.0 0.44475072622299194 0.5257568359375 0 1.0 0 0.0 0 0.0 0 0.0\n2.1729323863983154 0.20836812257766724 -0.2839455306529999 -0.9592577815055847 -0.28247931599617004 -0.0 0.9460904598236084 0.6471614837646484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 -0.9775688648223877 -0.21048615872859955 -0.0 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 0.21605448424816132 -0.9775688648223877 -0.21048615872859955 -0.0 0.5228258371353149 0.4825291633605957 0 1.0 0 0.0 0 0.0 0 0.0\n-0.338470458984375 0.039541542530059814 -0.2839455306529999 -0.9890438318252563 -0.14740440249443054 -0.0 0.9467159509658813 0.637975811958313 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 -0.9944151043891907 -0.10525833815336227 -0.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 0.21605446934700012 -0.9944151043891907 -0.10525833815336227 -0.0 0.5207509398460388 0.47195643186569214 0 1.0 0 0.0 0 0.0 0 0.0\n0.26156115531921387 0.09020313620567322 -0.2839455306529999 -0.9976806044578552 0.06784264743328094 -0.0 0.08753547072410583 0.6604450941085815 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 0.21605446934700012 -0.999969482421875 -0.00079348124563694 -0.0 0.39806950092315674 0.5157207250595093 0 1.0 0 0.0 0 0.0 0 0.0\n1.4616072177886963 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629137516021729 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607535004615784 0.5096025466918945 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148946046829224 0.34800630807876587 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.9973449110984802 0.07248146086931229 -0.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 -0.2839455306529999 0.9891964197158813 0.14651936292648315 -0.0 0.8910720348358154 0.6237470507621765 0 1.0 0 0.0 0 0.0 0 0.0\n2.2700626850128174 0.20654383301734924 0.21605448424816132 0.9891964197158813 0.14651936292648315 -0.0 0.5735015273094177 0.48514336347579956 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 -0.2839455306529999 0.9970701932907104 -0.07647938281297684 -0.0 0.05278405547142029 0.6213566064834595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 -0.2839455306529999 0.9927976131439209 -0.11957152187824249 -0.0 0.05274131894111633 0.6310035586357117 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49905872344970703 0.03633683919906616 0.21605446934700012 0.9927976131439209 -0.11957152187824249 -0.0 0.4233233332633972 0.48416680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n1.4652364253997803 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607535004615784 0.5096025466918945 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172003507614136 0.3470277190208435 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266701102256775 -0.0 0.035054922103881836 0.6798495054244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 -0.2839455306529999 0.9695730209350586 0.24469740688800812 -0.0 0.03543075919151306 0.6815356016159058 0 1.0 0 0.0 0 0.0 0 0.0\n0.35332775115966797 0.08980664610862732 0.21605446934700012 0.9695730209350586 0.24469740688800812 -0.0 0.44485893845558167 0.5239549279212952 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.9266639947891235 -0.37580493092536926 -0.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 -0.2839455306529999 0.9064912796020508 -0.4221625328063965 -0.0 0.058125704526901245 0.6394720077514648 0 1.0 0 0.0 0 0.0 0 0.0\n2.0039618015289307 0.20591631531715393 0.21605448424816132 0.9064912796020508 -0.4221625328063965 -0.0 0.42148181796073914 0.4898841977119446 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.99908447265625 0.04223761707544327 -0.0 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 -0.2839455306529999 0.9961546659469604 0.0873439759016037 -0.0 0.8895126581192017 0.6122499108314514 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23626184463500977 0.03541135787963867 0.21605446934700012 0.9961546659469604 0.0873439759016037 -0.0 0.5742851495742798 0.47815972566604614 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 -0.2839455306529999 0.9138767719268799 0.4059267044067383 -0.0 0.0345919132232666 0.6782255172729492 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 -0.2839455306529999 0.9451277256011963 0.3266701102256775 -0.0 0.035054922103881836 0.6798495054244995 0 1.0 0 0.0 0 0.0 0 0.0\n0.3538045883178711 0.08820855617523193 0.21605446934700012 0.9451277256011963 0.3266701102256775 -0.0 0.445046603679657 0.5221929550170898 0 1.0 0 0.0 0 0.0 0 0.0\n1.9055311679840088 0.2049044370651245 -0.2839455306529999 -0.981872022151947 0.1893673539161682 -0.0 0.10453879833221436 0.6176819205284119 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 -0.9921872615814209 0.12463758885860443 -0.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 0.21605448424816132 -0.9921872615814209 0.12463758885860443 -0.0 0.3760174810886383 0.4831979274749756 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33734679222106934 0.030645102262496948 -0.2839455306529999 -0.9944151043891907 -0.10525833815336227 -0.0 0.9464748501777649 0.6271423101425171 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 -0.2839455306529999 -0.9977416396141052 -0.06692709028720856 -0.0 0.9464700222015381 0.6156516075134277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 0.21605446934700012 -0.9977416396141052 -0.06692709028720856 -0.0 0.5214253664016724 0.46054428815841675 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943167924880981 0.5052310228347778 0 1.0 0 0.0 0 0.0 0 0.0\n1.5914380550384521 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.5876259803771973 0.36965125799179077 0 1.0 0 0.0 0 0.0 0 0.0\n1.4686124324798584 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587600827217102 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569313526153564 0.5069000720977783 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193288922309875 0.3460422158241272 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.03404173254966736 0.6766632795333862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 -0.2839455306529999 0.9138767719268799 0.4059267044067383 -0.0 0.0345919132232666 0.6782255172729492 0 1.0 0 0.0 0 0.0 0 0.0\n0.3544175624847412 0.08665427565574646 0.21605446934700012 0.9138767719268799 0.4059267044067383 -0.0 0.44531404972076416 0.5204707384109497 0 1.0 0 0.0 0 0.0 0 0.0\n2.1740477085113525 0.20398133993148804 -0.2839455306529999 -0.9775688648223877 -0.21048615872859955 -0.0 0.945615291595459 0.6417965888977051 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 -0.2839455306529999 -0.9903256297111511 -0.13870662450790405 -0.0 0.9453579187393188 0.6363179683685303 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 0.21605448424816132 -0.9903256297111511 -0.13870662450790405 -0.0 0.5234003663063049 0.47715163230895996 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 -0.2839455306529999 0.999298095703125 -0.036805324256420135 -0.0 0.052621930837631226 0.6112359762191772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 -0.2839455306529999 0.9970701932907104 -0.07647938281297684 -0.0 0.05278405547142029 0.6213566064834595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49987339973449707 0.027987703680992126 0.21605446934700012 0.9970701932907104 -0.07647938281297684 -0.0 0.42232567071914673 0.4747272729873657 0 1.0 0 0.0 0 0.0 0 0.0\n1.4717357158660889 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569313526153564 0.5069000720977783 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552655220031738 0.5055458545684814 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212814807891846 0.34504401683807373 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 -0.2839455306529999 0.8348338007926941 0.5504318475723267 -0.0 0.03340405225753784 0.6751619577407837 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 -0.2839455306529999 0.8767052292823792 0.48097169399261475 -0.0 0.03404173254966736 0.6766632795333862 0 1.0 0 0.0 0 0.0 0 0.0\n0.3551666736602783 0.08514377474784851 0.21605446934700012 0.8767052292823792 0.48097169399261475 -0.0 0.44566184282302856 0.5187883377075195 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3365440368652344 0.021254897117614746 -0.2839455306529999 -0.9977416396141052 -0.06692709028720856 -0.0 0.9464700222015381 0.6156516075134277 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 -0.999481201171875 -0.0320444330573082 -0.0 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 0.21605446934700012 -0.999481201171875 -0.0320444330573082 -0.0 0.5219259262084961 0.44843196868896484 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.9434491991996765 -0.33143100142478943 -0.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 -0.2839455306529999 0.9266639947891235 -0.37580493092536926 -0.0 0.05923062562942505 0.6324205994606018 0 1.0 0 0.0 0 0.0 0 0.0\n2.0014007091522217 0.2000202238559723 0.21605448424816132 0.9266639947891235 -0.37580493092536926 -0.0 0.41973450779914856 0.4834361672401428 0 1.0 0 0.0 0 0.0 0 0.0\n1.4746057987213135 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552655220031738 0.5055458545684814 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537605047225952 0.5041895508766174 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230599045753479 0.3440280556678772 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.7896664142608643 0.6135135889053345 -0.0 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 -0.2839455306529999 0.8348338007926941 0.5504318475723267 -0.0 0.03340405225753784 0.6751619577407837 0 1.0 0 0.0 0 0.0 0 0.0\n0.3560521602630615 0.08367705345153809 0.21605446934700012 0.8348338007926941 0.5504318475723267 -0.0 0.4460906684398651 0.5171455144882202 0 1.0 0 0.0 0 0.0 0 0.0\n2.17484450340271 0.19948023557662964 -0.2839455306529999 -0.9903256297111511 -0.13870662450790405 -0.0 0.9453579187393188 0.6363179683685303 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 -0.9976500868797302 -0.06833094358444214 -0.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 0.21605448424816132 -0.9976500868797302 -0.06833094358444214 -0.0 0.523791491985321 0.4716107249259949 0 1.0 0 0.0 0 0.0 0 0.0\n0.26129603385925293 0.08225411176681519 -0.2839455306529999 -0.999969482421875 -0.00079348124563694 -0.0 0.08704373240470886 0.652578592300415 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 0.21605446934700012 -0.9974059462547302 -0.0716574639081955 -0.0 0.3975098729133606 0.5070275068283081 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 1.0 0.00012207403779029846 -0.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 -0.2839455306529999 0.99908447265625 0.04223761707544327 -0.0 0.8903750777244568 0.5969552993774414 0 1.0 0 0.0 0 0.0 0 0.0\n-0.235335111618042 0.020952075719833374 0.21605446934700012 0.99908447265625 0.04223761707544327 -0.0 0.575579822063446 0.46299588680267334 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772231578826904 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537605047225952 0.5041895508766174 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524144530296326 0.502831220626831 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246654152870178 0.34298932552337646 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.999969482421875 0.0060731833800673485 -0.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 -0.2839455306529999 0.9973449110984802 0.07248146086931229 -0.0 0.8914575576782227 0.6136360168457031 0 1.0 0 0.0 0 0.0 0 0.0\n2.271106004714966 0.19703930616378784 0.21605448424816132 0.9973449110984802 0.07248146086931229 -0.0 0.5745598077774048 0.4752293825149536 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.0021973326802253723 -0.0 0.05225995182991028 0.600637674331665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 -0.2839455306529999 0.999298095703125 -0.036805324256420135 -0.0 0.052621930837631226 0.6112359762191772 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003623962402344 0.019242078065872192 0.21605446934700012 0.999298095703125 -0.036805324256420135 -0.0 0.4214646518230438 0.4647483229637146 0 1.0 0 0.0 0 0.0 0 0.0\n1.4795873165130615 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524144530296326 0.502831220626831 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512251019477844 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.5260999202728271 0.34192365407943726 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.031865477561950684 0.6723393201828003 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 -0.2839455306529999 0.7896664142608643 0.6135135889053345 -0.0 0.03267878293991089 0.6737209558486938 0 1.0 0 0.0 0 0.0 0 0.0\n0.3570737838745117 0.08225411176681519 0.21605446934700012 0.7896664142608643 0.6135135889053345 -0.0 0.4466010630130768 0.5155422687530518 0 1.0 0 0.0 0 0.0 0 0.0\n2.1753222942352295 0.19486480951309204 -0.2839455306529999 -0.9976500868797302 -0.06833094358444214 -0.0 0.9453150033950806 0.6307230591773987 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 -0.2839455306529999 -0.999969482421875 -0.003723258152604103 -0.0 0.9454828500747681 0.6250084638595581 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 0.21605448424816132 -0.999969482421875 -0.003723258152604103 -0.0 0.5239977240562439 0.46590250730514526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360624313354492 0.011370927095413208 -0.2839455306529999 -0.999481201171875 -0.0320444330573082 -0.0 0.9466947317123413 0.6035062670707703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 -0.999969482421875 0.0004272591322660446 -0.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 0.21605446934700012 -0.999969482421875 0.0004272591322660446 -0.0 0.5222489237785339 0.4356297254562378 0 1.0 0 0.0 0 0.0 0 0.0\n1.481698751449585 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512251019477844 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273644328117371 0.3408268690109253 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 -0.2839455306529999 0.69454026222229 0.7194433212280273 -0.0 0.030963599681854248 0.6710162162780762 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 -0.2839455306529999 0.7424542903900146 0.669850766658783 -0.0 0.031865477561950684 0.6723393201828003 0 1.0 0 0.0 0 0.0 0 0.0\n0.3582315444946289 0.08087494969367981 0.21605446934700012 0.7424542903900146 0.669850766658783 -0.0 0.4471936523914337 0.5139785408973694 0 1.0 0 0.0 0 0.0 0 0.0\n1.9039366245269775 0.19484898447990417 -0.2839455306529999 -0.9921872615814209 0.12463758885860443 -0.0 0.10434016585350037 0.6078946590423584 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 -0.9956969022750854 0.09256263822317123 -0.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 0.21605448424816132 -0.9956969022750854 0.09256263822317123 -0.0 0.3747648000717163 0.4735370874404907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 -0.2839455306529999 0.999603271484375 0.02774132415652275 -0.0 0.0517292320728302 0.5896918773651123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.0021973326802253723 -0.0 0.05225995182991028 0.600637674331665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5005252361297607 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.0021973326802253723 -0.0 0.42074114084243774 0.4542253017425537 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029972761869430542 0.669750452041626 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 -0.2839455306529999 0.69454026222229 0.7194433212280273 -0.0 0.030963599681854248 0.6710162162780762 0 1.0 0 0.0 0 0.0 0 0.0\n0.3595256805419922 0.07953956723213196 0.21605446934700012 0.69454026222229 0.7194433212280273 -0.0 0.44786933064460754 0.5124543905258179 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.894640326499939 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n1.5920803546905518 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884809494018555 0.36237651109695435 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 -0.2839455306529999 0.9572435617446899 -0.28919339179992676 -0.0 0.06096261739730835 0.6173686385154724 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 -0.2839455306529999 0.9434491991996765 -0.33143100142478943 -0.0 0.060174643993377686 0.6250530481338501 0 1.0 0 0.0 0 0.0 0 0.0\n1.999058485031128 0.1938127875328064 0.21605448424816132 0.9434491991996765 -0.33143100142478943 -0.0 0.41807496547698975 0.4766302704811096 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.999114990234375 -0.041627246886491776 -0.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 -0.2839455306529999 1.0 0.00012207403779029846 -0.0 0.8915530443191528 0.5810273289680481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23502612113952637 0.005896851420402527 0.21605446934700012 1.0 0.00012207403779029846 -0.0 0.5766531825065613 0.44704872369766235 0 1.0 0 0.0 0 0.0 0 0.0\n1.4835569858551025 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501909017562866 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493098258972168 0.4987393021583557 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.528460681438446 0.3396955132484436 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.028892487287521362 0.668540894985199 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 -0.2839455306529999 0.6469618678092957 0.7625049352645874 -0.0 0.029972761869430542 0.669750452041626 0 1.0 0 0.0 0 0.0 0 0.0\n0.36095595359802246 0.07824796438217163 0.21605446934700012 0.6469618678092957 0.7625049352645874 -0.0 0.448628693819046 0.5109696984291077 0 1.0 0 0.0 0 0.0 0 0.0\n2.1754815578460693 0.19013503193855286 -0.2839455306529999 -0.999969482421875 -0.003723258152604103 -0.0 0.9454828500747681 0.6250084638595581 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 -0.9985656142234802 0.05301064997911453 -0.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 0.21605448424816132 -0.9985656142234802 0.05301064997911453 -0.0 0.5240249633789062 0.4617552161216736 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33590197563171387 0.0009931772947311401 -0.2839455306529999 -0.999969482421875 0.0004272591322660446 -0.0 0.9471420049667358 0.5907166004180908 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 -0.2839455306529999 -0.999420166015625 0.033783990889787674 -0.0 0.9477471709251404 0.5786771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 0.21605446934700012 -0.999420166015625 0.033783990889787674 -0.0 0.5223656892776489 0.42353588342666626 0 1.0 0 0.0 0 0.0 0 0.0\n1.4851624965667725 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493098258972168 0.4987393021583557 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 -0.2839455306529999 -0.6999725103378296 -0.7141331434249878 -0.0 0.9485805034637451 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 0.21605446934700012 -0.6999725103378296 -0.7141331434249878 -0.0 0.5293893814086914 0.33852624893188477 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 -0.2839455306529999 0.4927823841571808 0.8701131939888 -0.0 0.027060627937316895 0.6669516563415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.028892487287521362 0.668540894985199 0 1.0 0 0.0 0 0.0 0 0.0\n0.3625221252441406 0.07700017094612122 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.4494723379611969 0.5095247030258179 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.9988707900047302 -0.0474562831223011 -0.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 -0.2839455306529999 0.999969482421875 0.0060731833800673485 -0.0 0.8921797275543213 0.6034001111984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.271453619003296 0.18733292818069458 0.21605448424816132 0.999969482421875 0.0060731833800673485 -0.0 0.5753237009048462 0.46501606702804565 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 -0.2839455306529999 0.9983214735984802 0.05777153745293617 -0.0 0.051086753606796265 0.5792196989059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 -0.2839455306529999 0.999603271484375 0.02774132415652275 -0.0 0.0517292320728302 0.5896918773651123 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5003988742828369 0.000676959753036499 0.21605446934700012 0.999603271484375 0.02774132415652275 -0.0 0.4201444983482361 0.44329583644866943 0 1.0 0 0.0 0 0.0 0 0.0\n1.4865148067474365 -0.06240437924861908 -0.2839455306529999 -0.6999725103378296 -0.7141331434249878 -0.0 0.9485805034637451 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479937553405762 0.49590182304382324 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301671624183655 0.3372293710708618 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.024613529443740845 0.6653088331222534 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 -0.2839455306529999 0.4927823841571808 0.8701131939888 -0.0 0.027060627937316895 0.6669516563415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.36519408226013184 0.07530966401100159 0.21605446934700012 0.4927823841571808 0.8701131939888 -0.0 0.45094168186187744 0.5075438022613525 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 -0.2839455306529999 0.9684438705444336 -0.24918362498283386 -0.0 0.061599165201187134 0.6093670129776001 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 -0.2839455306529999 0.9572435617446899 -0.28919339179992676 -0.0 0.06096261739730835 0.6173686385154724 0 1.0 0 0.0 0 0.0 0 0.0\n1.9969351291656494 0.18729400634765625 0.21605448424816132 0.9572435617446899 -0.28919339179992676 -0.0 0.41650107502937317 0.4694640636444092 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 -0.2839455306529999 0.9958800077438354 0.09060945361852646 -0.0 0.05033385753631592 0.5692355036735535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 -0.2839455306529999 0.9983214735984802 0.05777153745293617 -0.0 0.051086753606796265 0.5792196989059448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5000193119049072 -0.008327707648277283 0.21605446934700012 0.9983214735984802 0.05777153745293617 -0.0 0.4197072982788086 0.4327854514122009 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.034252822399139404 0.5006027221679688 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.3779359459877014 0.35555046796798706 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 -0.2839455306529999 0.4213080108165741 0.9068880081176758 -0.0 0.024613529443740845 0.6653088331222534 0 1.0 0 0.0 0 0.0 0 0.0\n0.3687732219696045 0.07350727915763855 0.21605446934700012 0.4213080108165741 0.9068880081176758 -0.0 0.45294809341430664 0.5053983926773071 0 1.0 0 0.0 0 0.0 0 0.0\n2.175391912460327 0.18671512603759766 -0.2839455306529999 -0.9985656142234802 0.05301064997911453 -0.0 0.9457338452339172 0.6208869218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 -0.2839455306529999 -0.9942319989204407 0.10705892741680145 -0.0 0.9460951685905457 0.6168336868286133 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 0.21605448424816132 -0.9942319989204407 0.10705892741680145 -0.0 0.5239424109458923 0.45764970779418945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3360614776611328 -0.00876675546169281 -0.2839455306529999 -0.999420166015625 0.033783990889787674 -0.0 0.9477471709251404 0.5786771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 -0.9974974989891052 0.07034516334533691 -0.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 0.21605446934700012 -0.9974974989891052 0.07034516334533691 -0.0 0.5222747325897217 0.41196632385253906 0 1.0 0 0.0 0 0.0 0 0.0\n0.26160287857055664 0.0734853744506836 -0.2839455306529999 -0.9974059462547302 -0.0716574639081955 -0.0 0.08622869849205017 0.6439356207847595 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 0.21605446934700012 -0.9891353845596313 -0.14697714149951935 -0.0 0.3972393870353699 0.49852627515792847 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 -0.2839455306529999 0.965819239616394 0.25910213589668274 -0.0 0.03346306085586548 0.4952545762062073 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 -0.2839455306529999 0.9716482758522034 0.23633533716201782 -0.0 0.034252822399139404 0.5006027221679688 0 1.0 0 0.0 0 0.0 0 0.0\n1.3436076641082764 -0.06275463849306107 0.21605446934700012 0.9716482758522034 0.23633533716201782 -0.0 0.4315911829471588 0.34482574462890625 0 1.0 0 0.0 0 0.0 0 0.0\n1.9029772281646729 0.1845308244228363 -0.2839455306529999 -0.12308114767074585 -0.9923703670501709 -0.0 0.10388633608818054 0.5979529023170471 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 -0.2839455306529999 -0.12308114767074585 -0.9923703670501709 -0.0 0.062088608741760254 0.6010488271713257 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 0.21605448424816132 -0.12308114767074585 -0.9923703670501709 -0.0 0.41360267996788025 0.4540458917617798 0 1.0 0 0.0 0 0.0 0 0.0\n1.4876339435577393 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479937553405762 0.49590182304382324 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474684596061707 0.49438297748565674 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308826565742493 0.33586663007736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.993345022201538 0.17332243919372559 -0.2839455306529999 0.9732352495193481 -0.2297128140926361 -0.0 0.062088608741760254 0.6010488271713257 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 -0.2839455306529999 0.9684438705444336 -0.24918362498283386 -0.0 0.061599165201187134 0.6093670129776001 0 1.0 0 0.0 0 0.0 0 0.0\n1.9950306415557861 0.18046388030052185 0.21605448424816132 0.9684438705444336 -0.24918362498283386 -0.0 0.41501089930534363 0.46193617582321167 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.9962767362594604 -0.08603167533874512 -0.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 -0.2839455306529999 0.999114990234375 -0.041627246886491776 -0.0 0.8930354118347168 0.5645591020584106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23534107208251953 -0.009677678346633911 0.21605446934700012 0.999114990234375 -0.041627246886491776 -0.0 0.5774952173233032 0.430411159992218 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840147018432617 0.6617413759231567 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 -0.2839455306529999 0.3721121847629547 0.9281594157218933 -0.0 0.021542906761169434 0.6635837554931641 0 1.0 0 0.0 0 0.0 0 0.0\n0.3732597827911377 0.07159298658370972 0.21605446934700012 0.3721121847629547 0.9281594157218933 -0.0 0.45550355315208435 0.5030808448791504 0 1.0 0 0.0 0 0.0 0 0.0\n2.175122022628784 0.18334385752677917 -0.2839455306529999 -0.9942319989204407 0.10705892741680145 -0.0 0.9460951685905457 0.6168336868286133 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 -0.9868465065956116 0.16162602603435516 -0.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 0.21605448424816132 -0.9868465065956116 0.16162602603435516 -0.0 0.5237489342689514 0.45358604192733765 0 1.0 0 0.0 0 0.0 0 0.0\n1.4886553287506104 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474684596061707 0.49438297748565674 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470036625862122 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315366387367249 0.3344380259513855 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 -0.2839455306529999 0.9919431209564209 0.1265602558851242 -0.0 0.049470871686935425 0.5597488880157471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 -0.2839455306529999 0.9958800077438354 0.09060945361852646 -0.0 0.05033385753631592 0.5692355036735535 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4993870258331299 -0.016914010047912598 0.21605446934700012 0.9958800077438354 0.09060945361852646 -0.0 0.41943296790122986 0.42270857095718384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 -0.2839455306529999 0.5418866276741028 0.8404186964035034 -0.0 0.9560917615890503 0.7928478717803955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3721212148666382 0.17253431677818298 0.21605448424816132 0.5418866276741028 0.8404186964035034 -0.0 0.5884212851524353 0.612917423248291 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013496875762939453 0.6597400903701782 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 -0.2839455306529999 0.33652761578559875 0.9416486024856567 -0.0 0.017840147018432617 0.6617413759231567 0 1.0 0 0.0 0 0.0 0 0.0\n0.37865352630615234 0.06956681609153748 0.21605446934700012 0.33652761578559875 0.9416486024856567 -0.0 0.4586215019226074 0.5005841851234436 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33653950691223145 -0.018081560730934143 -0.2839455306529999 -0.9974974989891052 0.07034516334533691 -0.0 0.9485154747962952 0.5672034025192261 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 -0.9938657879829407 0.11035493016242981 -0.0 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 0.21605446934700012 -0.9938657879829407 0.11035493016242981 -0.0 0.5219700336456299 0.4009416699409485 0 1.0 0 0.0 0 0.0 0 0.0\n1.4895799160003662 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470036625862122 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321288108825684 0.33294278383255005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5943957567214966 0.1705203354358673 -0.2839455306529999 -0.573870062828064 0.8189031481742859 -0.0 0.1309186816215515 0.7704271078109741 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 -0.6284676790237427 0.7778252363204956 -0.0 0.13366088271141052 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 0.21605446934700012 -0.6284676790237427 0.7778252363204956 -0.0 0.47173115611076355 0.5920871496200562 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.9954222440719604 -0.0953703448176384 -0.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 -0.2839455306529999 0.9988707900047302 -0.0474562831223011 -0.0 0.892727255821228 0.597734272480011 0 1.0 0 0.0 0 0.0 0 0.0\n2.2713258266448975 0.18192818760871887 0.21605448424816132 0.9988707900047302 -0.0474562831223011 -0.0 0.5756058096885681 0.45928263664245605 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 -0.2839455306529999 0.28870511054992676 0.9573961496353149 -0.0 0.008507370948791504 0.6575324535369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 -0.2839455306529999 0.3096407949924469 0.9508346915245056 -0.0 0.013496875762939453 0.6597400903701782 0 1.0 0 0.0 0 0.0 0 0.0\n0.38495469093322754 0.06742876768112183 0.21605446934700012 0.3096407949924469 0.9508346915245056 -0.0 0.4623163640499115 0.49790239334106445 0 1.0 0 0.0 0 0.0 0 0.0\n2.1746718883514404 0.1800212264060974 -0.2839455306529999 -0.9868465065956116 0.16162602603435516 -0.0 0.946566104888916 0.612848162651062 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 -0.2839455306529999 -0.9762871265411377 0.21634571254253387 -0.0 0.9471457004547119 0.6089298129081726 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 0.21605448424816132 -0.9762871265411377 0.21634571254253387 -0.0 0.5234435200691223 0.4495640993118286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.9909970164299011 -0.13370159268379211 -0.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 -0.2839455306529999 0.9962767362594604 -0.08603167533874512 -0.0 0.894726037979126 0.5487753748893738 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23628616333007812 -0.02464410662651062 0.21605446934700012 0.9962767362594604 -0.08603167533874512 -0.0 0.5780245661735535 0.41431325674057007 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30545976758003235 -0.0 0.032583266496658325 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 -0.2839455306529999 0.965819239616394 0.25910213589668274 -0.0 0.03346306085586548 0.4952545762062073 0 1.0 0 0.0 0 0.0 0 0.0\n1.3447487354278564 -0.06744548678398132 0.21605446934700012 0.965819239616394 0.25910213589668274 -0.0 0.4319748282432556 0.3392902612686157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 -0.2839455306529999 0.6184576153755188 0.7857905626296997 -0.0 0.9507166147232056 0.7853257656097412 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 -0.2839455306529999 0.5797296166419983 0.8147831559181213 -0.0 0.9532722234725952 0.7891139984130859 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3676784038543701 0.16952788829803467 0.21605446934700012 0.5797296166419983 0.8147831559181213 -0.0 0.5907711982727051 0.6104052066802979 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 0.002870500087738037 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 -0.2839455306529999 0.28870511054992676 0.9573961496353149 -0.0 0.008507370948791504 0.6575324535369873 0 1.0 0 0.0 0 0.0 0 0.0\n0.3921630382537842 0.06517881155014038 0.21605446934700012 0.28870511054992676 0.9573961496353149 -0.0 0.46660202741622925 0.49503177404403687 0 1.0 0 0.0 0 0.0 0 0.0\n2.174041986465454 0.17674723267555237 -0.2839455306529999 -0.9762871265411377 0.21634571254253387 -0.0 0.9471457004547119 0.6089298129081726 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 -0.9626453518867493 0.2706381380558014 -0.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 0.21605448424816132 -0.9626453518867493 0.2706381380558014 -0.0 0.5230244994163513 0.4455840587615967 0 1.0 0 0.0 0 0.0 0 0.0\n0.26252222061157227 0.06504258513450623 -0.2839455306529999 -0.9891353845596313 -0.14697714149951935 -0.0 0.08516183495521545 0.635638952255249 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384156227111816 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 0.21605446934700012 -0.9741813540458679 -0.22565385699272156 -0.0 0.39726391434669495 0.49021196365356445 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 -0.2839455306529999 0.9861140847206116 0.1658986210823059 -0.0 0.04849809408187866 0.5507650375366211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 -0.2839455306529999 0.9919431209564209 0.1265602558851242 -0.0 0.049470871686935425 0.5597488880157471 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4985015392303467 -0.025081947445869446 0.21605446934700012 0.9919431209564209 0.1265602558851242 -0.0 0.4193257689476013 0.41307467222213745 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714743509888649 -0.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.8951667547225952 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n1.592294454574585 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.5891700387001038 0.35480350255966187 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.6577044129371643 0.7532578706741333 -0.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 -0.2839455306529999 0.6184576153755188 0.7857905626296997 -0.0 0.9507166147232056 0.7853257656097412 0 1.0 0 0.0 0 0.0 0 0.0\n-1.363500714302063 0.16640472412109375 0.21605446934700012 0.6184576153755188 0.7857905626296997 -0.0 0.5929959416389465 0.6077929735183716 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33733606338500977 -0.02695123851299286 -0.2839455306529999 -0.9938657879829407 0.11035493016242981 -0.0 0.9494444131851196 0.5563149452209473 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 -0.2839455306529999 -0.9880367517471313 0.15405744314193726 -0.0 0.9505323171615601 0.5460243225097656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 0.21605446934700012 -0.9880367517471313 0.15405744314193726 -0.0 0.5214453935623169 0.3904763460159302 0 1.0 0 0.0 0 0.0 0 0.0\n1.4904067516326904 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465994834899902 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.9462549090385437 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326599478721619 0.3313811421394348 0 1.0 0 0.0 0 0.0 0 0.0\n-1.600374460220337 0.16600584983825684 -0.2839455306529999 -0.6284676790237427 0.7778252363204956 -0.0 0.13366088271141052 0.7642955780029297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 -0.6779686808586121 0.7350382804870605 -0.0 0.13606640696525574 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 0.21605446934700012 -0.6779686808586121 0.7350382804870605 -0.0 0.46898940205574036 0.5872495174407959 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.9896237254142761 -0.143559068441391 -0.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 -0.2839455306529999 0.9954222440719604 -0.0953703448176384 -0.0 0.8933857083320618 0.5921443700790405 0 1.0 0 0.0 0 0.0 0 0.0\n2.2709429264068604 0.17657208442687988 0.21605448424816132 0.9954222440719604 -0.0953703448176384 -0.0 0.5757695436477661 0.4535619616508484 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.9965918064117432 0.6522815227508545 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 -0.2839455306529999 0.2719199061393738 0.9623096585273743 -0.0 1.0028705596923828 0.6550652384757996 0 1.0 0 0.0 0 0.0 0 0.0\n0.40027856826782227 0.06281697750091553 0.21605446934700012 0.2719199061393738 0.9623096585273743 -0.0 1.471490740776062 0.49197155237197876 0 1.0 0 0.0 0 0.0 0 0.0\n2.173231840133667 0.17352190613746643 -0.2839455306529999 -0.9626453518867493 0.2706381380558014 -0.0 0.947833776473999 0.6050781011581421 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 -0.9460127353668213 0.3240455389022827 -0.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 0.21605446934700012 -0.9460127353668213 0.3240455389022827 -0.0 0.5224907398223877 0.44164609909057617 0 1.0 0 0.0 0 0.0 0 0.0\n1.4911367893218994 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.9462549090385437 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35312968492507935 -0.0 0.9459701180458069 0.4877855181694031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35312968492507935 -0.0 0.5331296324729919 0.3297526240348816 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 -0.2839455306529999 0.9779046177864075 0.20896023511886597 -0.0 0.04741498827934265 0.5422860383987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 -0.2839455306529999 0.9861140847206116 0.1658986210823059 -0.0 0.04849809408187866 0.5507650375366211 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4973633289337158 -0.03283150494098663 0.21605446934700012 0.9861140847206116 0.1658986210823059 -0.0 0.41938960552215576 0.40388965606689453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.6970732808113098 0.7169713377952576 -0.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 -0.2839455306529999 0.6577044129371643 0.7532578706741333 -0.0 0.9484119415283203 0.7814901471138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3595882654190063 0.16316479444503784 0.21605446934700012 0.6577044129371643 0.7532578706741333 -0.0 0.5950978398323059 0.6050815582275391 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896869659423828 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 -0.2839455306529999 0.25818657875061035 0.9660634398460388 -0.0 0.9965918064117432 0.6522815227508545 0 1.0 0 0.0 0 0.0 0 0.0\n0.4093015193939209 0.06034325063228607 0.21605446934700012 0.25818657875061035 0.9660634398460388 -0.0 1.4769912958145142 0.48872554302215576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3384511470794678 -0.03537578880786896 -0.2839455306529999 -0.9880367517471313 0.15405744314193726 -0.0 0.9505323171615601 0.5460243225097656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 -0.9794304966926575 0.20175786316394806 -0.0 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 0.21605446934700012 -0.9794304966926575 0.20175786316394806 -0.0 0.5206946134567261 0.38057905435562134 0 1.0 0 0.0 0 0.0 0 0.0\n1.4917690753936768 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35312968492507935 -0.0 0.9459701180458069 0.4877855181694031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.945744514465332 0.48600685596466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335382223129272 0.3280572295188904 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6060515642166138 0.16110217571258545 -0.2839455306529999 -0.6779686808586121 0.7350382804870605 -0.0 0.13606640696525574 0.7579406499862671 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 -0.7241126894950867 0.6896572709083557 -0.0 0.1381559669971466 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 0.21605446934700012 -0.7241126894950867 0.6896572709083557 -0.0 0.46638426184654236 0.5821032524108887 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.9814752340316772 -0.191534161567688 -0.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 -0.2839455306529999 0.9896237254142761 -0.143559068441391 -0.0 0.8941553831100464 0.5866265892982483 0 1.0 0 0.0 0 0.0 0 0.0\n2.2703044414520264 0.1712646186351776 0.21605448424816132 0.9896237254142761 -0.143559068441391 -0.0 0.5758130550384521 0.4478500485420227 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 -0.2839455306529999 0.2467421442270279 0.9690542221069336 -0.0 0.9896869659423828 0.6491220593452454 0 1.0 0 0.0 0 0.0 0 0.0\n0.419231653213501 0.057757630944252014 0.21605446934700012 0.2467421442270279 0.9690542221069336 -0.0 1.483106255531311 0.48530352115631104 0 1.0 0 0.0 0 0.0 0 0.0\n2.1722419261932373 0.1703452169895172 -0.2839455306529999 -0.9460127353668213 0.3240455389022827 -0.0 0.9486297369003296 0.6012919545173645 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 -0.2839455306529999 -0.9265724420547485 0.37604907155036926 -0.0 0.9495338201522827 0.5975706577301025 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 0.21605446934700012 -0.9265724420547485 0.37604907155036926 -0.0 0.5218402743339539 0.43775051832199097 0 1.0 0 0.0 0 0.0 0 0.0\n0.264054536819458 0.05692572891712189 -0.2839455306529999 -0.9741813540458679 -0.22565385699272156 -0.0 0.08384156227111816 0.6276837587356567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226463198661804 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 0.21605446934700012 -0.9519028067588806 -0.30628377199172974 -0.0 0.39759084582328796 0.4820782542228699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.982787549495697 -0.18463698029518127 -0.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 -0.2839455306529999 0.9909970164299011 -0.13370159268379211 -0.0 0.8966271877288818 0.53370201587677 0 1.0 0 0.0 0 0.0 0 0.0\n-0.23786115646362305 -0.039002448320388794 0.21605446934700012 0.9909970164299011 -0.13370159268379211 -0.0 0.5782297849655151 0.39878058433532715 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35370951890945435 -0.0 0.03161323070526123 0.4852879047393799 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30545976758003235 -0.0 0.032583266496658325 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n1.346069574356079 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30545976758003235 -0.0 0.4324910044670105 0.3339676856994629 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 -0.2839455306529999 0.7360759377479553 0.6768700480461121 -0.0 0.944506049156189 0.7736969590187073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 -0.2839455306529999 0.6970732808113098 0.7169713377952576 -0.0 0.9463456273078918 0.777612566947937 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3559409379959106 0.15980809926986694 0.21605446934700012 0.6970732808113098 0.7169713377952576 -0.0 0.5970795750617981 0.602271318435669 0 1.0 0 0.0 0 0.0 0 0.0\n2.171071767807007 0.1672171652317047 -0.2839455306529999 -0.9265724420547485 0.37604907155036926 -0.0 0.9495338201522827 0.5975706577301025 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 -0.904599130153656 0.42622148990631104 -0.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 0.21605446934700012 -0.904599130153656 0.42622148990631104 -0.0 0.5210717916488647 0.4338977336883545 0 1.0 0 0.0 0 0.0 0 0.0\n1.4923040866851807 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.945744514465332 0.48600685596466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455776214599609 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338857173919678 0.3262949585914612 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 -0.2839455306529999 0.9666737914085388 0.2559587359428406 -0.0 0.046220988035202026 0.5343106985092163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 -0.2839455306529999 0.9779046177864075 0.20896023511886597 -0.0 0.04741498827934265 0.5422860383987427 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4959719181060791 -0.040162697434425354 0.21605446934700012 0.9779046177864075 0.20896023511886597 -0.0 0.41962891817092896 0.39515578746795654 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.774163007736206 0.6329538822174072 -0.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 -0.2839455306529999 0.7360759377479553 0.6768700480461121 -0.0 0.944506049156189 0.7736969590187073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3525587320327759 0.15633466839790344 0.21605446934700012 0.7360759377479553 0.6768700480461121 -0.0 0.5989435911178589 0.5993620157241821 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741256237030029 0.6414514183998108 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 -0.2839455306529999 0.2370677888393402 0.9714651703834534 -0.0 0.9821839332580566 0.6455293893814087 0 1.0 0 0.0 0 0.0 0 0.0\n0.4300692081451416 0.055060118436813354 0.21605446934700012 0.2370677888393402 0.9714651703834534 -0.0 0.48983034491539 0.48172253370285034 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33988499641418457 -0.04335521161556244 -0.2839455306529999 -0.9794304966926575 0.20175786316394806 -0.0 0.9517782330513 0.5363379716873169 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 -0.2839455306529999 -0.9672841429710388 0.2535783052444458 -0.0 0.9531815648078918 0.5272574424743652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 0.21605446934700012 -0.9672841429710388 0.2535783052444458 -0.0 0.5197115540504456 0.37125450372695923 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927418231964111 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455776214599609 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454691410064697 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341720581054688 0.3244657516479492 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6114271879196167 0.15580931305885315 -0.2839455306529999 -0.7241126894950867 0.6896572709083557 -0.0 0.1381559669971466 0.751362144947052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 -0.766411304473877 0.6423230767250061 -0.0 0.13994893431663513 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 0.21605446934700012 -0.766411304473877 0.6423230767250061 -0.0 0.46391069889068604 0.5766407251358032 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.9709768891334534 -0.23905149102210999 -0.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 -0.2839455306529999 0.9814752340316772 -0.191534161567688 -0.0 0.8950365781784058 0.5811769962310791 0 1.0 0 0.0 0 0.0 0 0.0\n2.2694103717803955 0.16600582003593445 0.21605446934700012 0.9814752340316772 -0.191534161567688 -0.0 0.575734555721283 0.4421430826187134 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655709862709045 0.6368472576141357 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 -0.2839455306529999 0.22879727184772491 0.9734488725662231 -0.0 0.9741256237030029 0.6414514183998108 0 1.0 0 0.0 0 0.0 0 0.0\n0.44181394577026367 0.05225071310997009 0.21605446934700012 0.22879727184772491 0.9734488725662231 -0.0 0.4971467852592468 0.4780082106590271 0 1.0 0 0.0 0 0.0 0 0.0\n2.169721841812134 0.16413778066635132 -0.2839455306529999 -0.904599130153656 0.42622148990631104 -0.0 0.9505453109741211 0.593913197517395 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 -0.2839455306529999 -0.8803979754447937 0.4742271304130554 -0.0 0.9516648054122925 0.5903184413909912 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 0.21605446934700012 -0.8803979754447937 0.4742271304130554 -0.0 0.5201833248138428 0.4300884008407593 0 1.0 0 0.0 0 0.0 0 0.0\n1.4930822849273682 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454691410064697 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.5343972444534302 0.3225697875022888 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 -0.2839455306529999 0.9516586661338806 0.30710774660110474 -0.0 0.04491466283798218 0.5268359780311584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 -0.2839455306529999 0.9666737914085388 0.2559587359428406 -0.0 0.046220988035202026 0.5343106985092163 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4943277835845947 -0.04707552492618561 0.21605446934700012 0.9666737914085388 0.2559587359428406 -0.0 0.4200480282306671 0.38687312602996826 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.8107852339744568 0.5853145122528076 -0.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 -0.2839455306529999 0.774163007736206 0.6329538822174072 -0.0 0.9428825378417969 0.7697458267211914 0 1.0 0 0.0 0 0.0 0 0.0\n-1.349441647529602 0.15274447202682495 0.21605446934700012 0.774163007736206 0.6329538822174072 -0.0 0.600692093372345 0.5963525772094727 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 -0.2839455306529999 0.22797326743602753 0.9736624956130981 -0.0 0.9655709862709045 0.6368472576141357 0 1.0 0 0.0 0 0.0 0 0.0\n0.4544661045074463 0.04932942986488342 0.21605446934700012 0.22797326743602753 0.9736624956130981 -0.0 0.5050256252288818 0.4741957187652588 0 1.0 0 0.0 0 0.0 0 0.0\n2.16819167137146 0.16110703349113464 -0.2839455306529999 -0.8803979754447937 0.4742271304130554 -0.0 0.9516648054122925 0.5903184413909912 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 -0.8543351292610168 0.5196996927261353 -0.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 0.21605446934700012 -0.8543351292610168 0.5196996927261353 -0.0 0.5191733241081238 0.4263235330581665 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34163761138916016 -0.0508895069360733 -0.2839455306529999 -0.9672841429710388 0.2535783052444458 -0.0 0.9531815648078918 0.5272574424743652 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 -0.9508652091026306 0.3095797598361969 -0.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 0.21605446934700012 -0.9508652091026306 0.3095797598361969 -0.0 0.5184904336929321 0.36250418424606323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6165012121200562 0.15012726187705994 -0.2839455306529999 -0.766411304473877 0.6423230767250061 -0.0 0.13994893431663513 0.7445569038391113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 -0.8045899868011475 0.5937681198120117 -0.0 0.14146259427070618 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 0.21605446934700012 -0.8045899868011475 0.5937681198120117 -0.0 0.4615637958049774 0.5708528161048889 0 1.0 0 0.0 0 0.0 0 0.0\n0.26619982719421387 0.04913482069969177 -0.2839455306529999 -0.9519028067588806 -0.30628377199172974 -0.0 0.08226463198661804 0.6200634241104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042562007904053 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 0.21605446934700012 -0.921994686126709 -0.3871577978134155 -0.0 0.3982294201850891 0.4741182327270508 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14477980136871338 -0.0 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714743509888649 -0.0 0.8959654569625854 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n1.5919973850250244 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714743509888649 -0.0 0.5896905660629272 0.34646421670913696 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.9582812190055847 -0.2857753336429596 -0.0 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 -0.2839455306529999 0.9709768891334534 -0.23905149102210999 -0.0 0.8960297703742981 0.5757913589477539 0 1.0 0 0.0 0 0.0 0 0.0\n2.268261194229126 0.160795658826828 0.21605446934700012 0.9709768891334534 -0.23905149102210999 -0.0 0.5755319595336914 0.4364372491836548 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.9710684418678284 -0.2387463003396988 -0.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 -0.2839455306529999 0.982787549495697 -0.18463698029518127 -0.0 0.8987429141998291 0.5193524956703186 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2400660514831543 -0.05275268852710724 0.21605446934700012 0.982787549495697 -0.18463698029518127 -0.0 0.5780972838401794 0.38382643461227417 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.9149143695831299 0.4035767614841461 -0.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35370951890945435 -0.0 0.03161323070526123 0.4852879047393799 0 1.0 0 0.0 0 0.0 0 0.0\n1.3475701808929443 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35370951890945435 -0.0 0.4331422448158264 0.3288542628288269 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 -0.2839455306529999 0.8453016877174377 0.5342265367507935 -0.0 0.9402449131011963 0.7617413997650146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 -0.2839455306529999 0.8107852339744568 0.5853145122528076 -0.0 0.9414651393890381 0.7657605409622192 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3465896844863892 0.14903751015663147 0.21605446934700012 0.8107852339744568 0.5853145122528076 -0.0 0.6023273468017578 0.5932416915893555 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.9493167996406555 0.6264195442199707 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 -0.2839455306529999 0.24109622836112976 0.9704886078834534 -0.0 0.9571162462234497 0.6317852735519409 0 1.0 0 0.0 0 0.0 0 0.0\n0.4672422409057617 0.04629625380039215 0.21605446934700012 0.24109622836112976 0.9704886078834534 -0.0 0.5129404664039612 0.47033530473709106 0 1.0 0 0.0 0 0.0 0 0.0\n2.1664817333221436 0.1581249237060547 -0.2839455306529999 -0.8543351292610168 0.5196996927261353 -0.0 0.9528919458389282 0.5867855548858643 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 -0.826776921749115 0.5624866485595703 -0.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 0.21605446934700012 -0.826776921749115 0.5624866485595703 -0.0 0.5180397033691406 0.42260414361953735 0 1.0 0 0.0 0 0.0 0 0.0\n1.4933254718780518 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.9454188346862793 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454262256622314 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.534561038017273 0.3206070065498352 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 -0.2839455306529999 0.9319742321968079 0.36243781447410583 -0.0 0.0434948205947876 0.5198570489883423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 -0.2839455306529999 0.9516586661338806 0.30710774660110474 -0.0 0.04491466283798218 0.5268359780311584 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4924304485321045 -0.0535699725151062 0.21605446934700012 0.9516586661338806 0.30710774660110474 -0.0 0.4206518530845642 0.3790395259857178 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.8803369402885437 0.4743186831474304 -0.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 -0.2839455306529999 0.8453016877174377 0.5342265367507935 -0.0 0.9402449131011963 0.7617413997650146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3440028429031372 0.14521381258964539 0.21605446934700012 0.8453016877174377 0.5342265367507935 -0.0 0.6038513779640198 0.5900272727012634 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 -0.2839455306529999 0.2623371183872223 0.964964747428894 -0.0 0.9493167996406555 0.6264195442199707 0 1.0 0 0.0 0 0.0 0 0.0\n0.47935914993286133 0.04315118491649628 0.21605446934700012 0.2623371183872223 0.964964747428894 -0.0 0.5203794836997986 0.4664573073387146 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34370875358581543 -0.05797867476940155 -0.2839455306529999 -0.9508652091026306 0.3095797598361969 -0.0 0.9547421932220459 0.518780529499054 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 -0.2839455306529999 -0.9291665554046631 0.36960965394973755 -0.0 0.9564605951309204 0.5109021067619324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 0.21605446934700012 -0.9291665554046631 0.36960965394973755 -0.0 0.517025351524353 0.35432738065719604 0 1.0 0 0.0 0 0.0 0 0.0\n1.2448337078094482 -0.0778159350156784 -0.2839455306529999 -0.9610888957977295 -0.2762230336666107 -0.0 0.08192142844200134 0.48803091049194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.37815624475479126 0.34659135341644287 0 1.0 0 0.0 0 0.0 0 0.0\n-1.621273398399353 0.1440560519695282 -0.2839455306529999 -0.8045899868011475 0.5937681198120117 -0.0 0.14146259427070618 0.7375191450119019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 -0.8385875821113586 0.5446943640708923 -0.0 0.14271312952041626 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 0.21605446934700012 -0.8385875821113586 0.5446943640708923 -0.0 0.4593387544155121 0.5647287964820862 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 0.04166984558105469 -0.2839455306529999 -0.921994686126709 -0.3871577978134155 -0.0 0.08042562007904053 0.6127703785896301 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831719517707825 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 0.21605446934700012 -0.8845790028572083 -0.4663533568382263 -0.0 0.3991908133029938 0.4663246273994446 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.9434797167778015 -0.33136996626853943 -0.0 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 -0.2839455306529999 0.9582812190055847 -0.2857753336429596 -0.0 0.8971360921859741 0.5704658031463623 0 1.0 0 0.0 0 0.0 0 0.0\n2.2668564319610596 0.15563416481018066 0.21605446934700012 0.9582812190055847 -0.2857753336429596 -0.0 0.5752025246620178 0.43072861433029175 0 1.0 0 0.0 0 0.0 0 0.0\n2.1645915508270264 0.15519148111343384 -0.2839455306529999 -0.826776921749115 0.5624866485595703 -0.0 0.9542272686958313 0.5833134055137634 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 -0.2839455306529999 -0.791283905506134 0.6114078164100647 -0.0 0.9556704759597778 0.5799009799957275 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 0.21605446934700012 -0.791283905506134 0.6114078164100647 -0.0 0.5167807936668396 0.41893166303634644 0 1.0 0 0.0 0 0.0 0 0.0\n1.493471384048462 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454262256622314 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454910755157471 0.47634971141815186 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.534663200378418 0.31857776641845703 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 -0.2839455306529999 0.9066743850708008 0.4217963218688965 -0.0 0.04195922613143921 0.5133682489395142 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 -0.2839455306529999 0.9319742321968079 0.36243781447410583 -0.0 0.0434948205947876 0.5198570489883423 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4902803897857666 -0.05964605510234833 0.21605446934700012 0.9319742321968079 0.36243781447410583 -0.0 0.42144501209259033 0.3716520071029663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.9144566059112549 0.4046449065208435 -0.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 -0.2839455306529999 0.8803369402885437 0.4743186831474304 -0.0 0.9392135143280029 0.7576877474784851 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3416811227798462 0.1412733793258667 0.21605446934700012 0.8803369402885437 0.4743186831474304 -0.0 0.6052660942077637 0.586706817150116 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356679320335388 0.6151246428489685 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 -0.2839455306529999 0.2856227159500122 0.9583117365837097 -0.0 0.9421719908714294 0.6208404302597046 0 1.0 0 0.0 0 0.0 0 0.0\n0.4908168315887451 0.0398942232131958 0.21605446934700012 0.2856227159500122 0.9583117365837097 -0.0 0.5273312330245972 0.46256983280181885 0 1.0 0 0.0 0 0.0 0 0.0\n2.1625216007232666 0.1523066759109497 -0.2839455306529999 -0.791283905506134 0.6114078164100647 -0.0 0.9556704759597778 0.5799009799957275 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 -0.7531358003616333 0.6578570008277893 -0.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 0.21605446934700012 -0.7531358003616333 0.6578570008277893 -0.0 0.5157681703567505 0.4164031744003296 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3460984230041504 -0.06462271511554718 -0.2839455306529999 -0.9291665554046631 0.36960965394973755 -0.0 0.9564605951309204 0.5109021067619324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 -0.9012420773506165 0.43327128887176514 -0.0 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 0.21605446934700012 -0.9012420773506165 0.43327128887176514 -0.0 0.5153106451034546 0.34672248363494873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6257442235946655 0.13759565353393555 -0.2839455306529999 -0.8385875821113586 0.5446943640708923 -0.0 0.14271312952041626 0.7302404642105103 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 -0.868434727191925 0.49577319622039795 -0.0 0.14371469616889954 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 0.21605446934700012 -0.868434727191925 0.49577319622039795 -0.0 0.457231342792511 0.5582568645477295 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4545121490955353 -0.0 0.029400289058685303 0.4762616753578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 -0.2839455306529999 0.9149143695831299 0.4035767614841461 -0.0 0.030552387237548828 0.480659544467926 0 1.0 0 0.0 0 0.0 0 0.0\n1.3492510318756104 -0.08036507666110992 0.21605446934700012 0.9149143695831299 0.4035767614841461 -0.0 0.4339316487312317 0.3239462971687317 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 -0.2839455306529999 0.3112582862377167 0.9503158926963806 -0.0 0.9356679320335388 0.6151246428489685 0 1.0 0 0.0 0 0.0 0 0.0\n0.5016152858734131 0.036525383591651917 0.21605446934700012 0.3112582862377167 0.9503158926963806 -0.0 0.5337937474250793 0.4586760401725769 0 1.0 0 0.0 0 0.0 0 0.0\n1.4935200214385986 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454910755157471 0.47634971141815186 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456768035888672 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.5347064137458801 0.3155938982963562 0 1.0 0 0.0 0 0.0 0 0.0\n0.27232933044433594 0.034530818462371826 -0.2839455306529999 -0.8845790028572083 -0.4663533568382263 -0.0 0.07831719517707825 0.605796217918396 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593002915382385 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 0.21605446934700012 -0.8403576612472534 -0.5420087575912476 -0.0 0.40048840641975403 0.45869070291519165 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.9267555475234985 -0.37559130787849426 -0.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 -0.2839455306529999 0.9434797167778015 -0.33136996626853943 -0.0 0.8983566761016846 0.5651962161064148 0 1.0 0 0.0 0 0.0 0 0.0\n2.2651965618133545 0.15052130818367004 0.21605446934700012 0.9434797167778015 -0.33136996626853943 -0.0 0.574743390083313 0.4250136613845825 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 -0.2839455306529999 0.8746299743652344 0.4847254753112793 -0.0 0.0403059720993042 0.5073632597923279 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 -0.2839455306529999 0.9066743850708008 0.4217963218688965 -0.0 0.04195922613143921 0.5133682489395142 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48787713050842285 -0.06530377268791199 0.21605446934700012 0.9066743850708008 0.4217963218688965 -0.0 0.4224327802658081 0.36470645666122437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 -0.2839455306529999 0.9413434267044067 0.33738210797309875 -0.0 0.9376671314239502 0.7486661672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 -0.2839455306529999 0.9144566059112549 0.4046449065208435 -0.0 0.9383580684661865 0.7533990740776062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3395832777023315 0.13699603080749512 0.21605446934700012 0.9144566059112549 0.4046449065208435 -0.0 0.6066126227378845 0.5830934643745422 0 1.0 0 0.0 0 0.0 0 0.0\n2.1608784198760986 0.15032914280891418 -0.2839455306529999 -0.7531358003616333 0.6578570008277893 -0.0 0.9567999243736267 0.5775706768035889 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 -0.2839455306529999 -0.7249366641044617 0.6888027787208557 -0.0 0.958246648311615 0.5748494267463684 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 0.21605446934700012 -0.7249366641044617 0.6888027787208557 -0.0 0.5144461989402771 0.4134361743927002 0 1.0 0 0.0 0 0.0 0 0.0\n1.49342942237854 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456768035888672 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13968321681022644 -0.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13968321681022644 -0.0 0.5346271991729736 0.31269872188568115 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.9552598595619202 -0.29572436213493347 -0.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 -0.2839455306529999 0.9710684418678284 -0.2387463003396988 -0.0 0.9010788798332214 0.5057295560836792 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24290084838867188 -0.06589483469724655 0.21605446934700012 0.9710684418678284 -0.2387463003396988 -0.0 0.5776110291481018 0.3694540858268738 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.9602038860321045 0.2792138457298279 -0.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 -0.2839455306529999 0.9413434267044067 0.33738210797309875 -0.0 0.9376671314239502 0.7486661672592163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.33766770362854 0.1321616768836975 0.21605446934700012 0.9413434267044067 0.33738210797309875 -0.0 0.6079329252243042 0.5789923667907715 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244858622550964 0.6035184860229492 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 -0.2839455306529999 0.3395489454269409 0.9405804872512817 -0.0 0.9297819137573242 0.6093344688415527 0 1.0 0 0.0 0 0.0 0 0.0\n0.5117547512054443 0.03304465115070343 0.21605446934700012 0.3395489454269409 0.9405804872512817 -0.0 0.5397725105285645 0.4547746181488037 0 1.0 0 0.0 0 0.0 0 0.0\n2.15875506401062 0.14801594614982605 -0.2839455306529999 -0.7249366641044617 0.6888027787208557 -0.0 0.958246648311615 0.5748494267463684 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 -0.7040925025939941 0.7100741863250732 -0.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 0.21605446934700012 -0.7040925025939941 0.7100741863250732 -0.0 0.5128077268600464 0.41003090143203735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6299132108688354 0.13074606657028198 -0.2839455306529999 -0.868434727191925 0.49577319622039795 -0.0 0.14371469616889954 0.7227109670639038 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 -0.8942533731460571 0.44749289751052856 -0.0 0.14448046684265137 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 0.21605446934700012 -0.8942533731460571 0.44749289751052856 -0.0 0.4552372395992279 0.5514237880706787 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 -0.2839455306529999 0.8384044766426086 0.5450300574302673 -0.0 0.03853201866149902 0.5018355250358582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 -0.2839455306529999 0.8746299743652344 0.4847254753112793 -0.0 0.0403059720993042 0.5073632597923279 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48522114753723145 -0.07054311782121658 0.21605446934700012 0.8746299743652344 0.4847254753112793 -0.0 0.4236200749874115 0.3581991195678711 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4545121490955353 -0.0 0.029400289058685303 0.4762616753578186 0 1.0 0 0.0 0 0.0 0 0.0\n1.3511121273040771 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4545121490955353 -0.0 0.43486201763153076 0.3192406892776489 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 -0.2839455306529999 0.3708304166793823 0.9286782145500183 -0.0 0.9244858622550964 0.6035184860229492 0 1.0 0 0.0 0 0.0 0 0.0\n0.5212349891662598 0.029452025890350342 0.21605446934700012 0.3708304166793823 0.9286782145500183 -0.0 0.5452784299850464 0.450860857963562 0 1.0 0 0.0 0 0.0 0 0.0\n-0.34880685806274414 -0.07082163542509079 -0.2839455306529999 -0.9012420773506165 0.43327128887176514 -0.0 0.958337664604187 0.5036150813102722 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 -0.2839455306529999 -0.8661457896232605 0.4997711181640625 -0.0 0.960374653339386 0.4969112277030945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 0.21605446934700012 -0.8661457896232605 0.4997711181640625 -0.0 0.5133412480354309 0.33968716859817505 0 1.0 0 0.0 0 0.0 0 0.0\n0.27631354331970215 0.027717724442481995 -0.2839455306529999 -0.8403576612472534 -0.5420087575912476 -0.0 0.07593002915382385 0.5991324186325073 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.0732530951499939 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 0.21605446934700012 -0.790459930896759 -0.6125065088272095 -0.0 0.4021376669406891 0.451210618019104 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.9083529114723206 -0.41816461086273193 -0.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 -0.2839455306529999 0.9267555475234985 -0.37559130787849426 -0.0 0.8996932506561279 0.5599786043167114 0 1.0 0 0.0 0 0.0 0 0.0\n2.2632811069488525 0.14545708894729614 0.21605446934700012 0.9267555475234985 -0.37559130787849426 -0.0 0.5741510391235352 0.4192887544631958 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14477980136871338 -0.0 0.8969948291778564 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n1.5911071300506592 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14477980136871338 -0.0 0.5899286270141602 0.33825957775115967 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.9733878374099731 0.22907193005084991 -0.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 -0.2839455306529999 0.9602038860321045 0.2792138457298279 -0.0 0.9371362924575806 0.7434725761413574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3359346389770508 0.12677031755447388 0.21605446934700012 0.9602038860321045 0.2792138457298279 -0.0 0.6092292666435242 0.574386715888977 0 1.0 0 0.0 0 0.0 0 0.0\n2.1561501026153564 0.1453670859336853 -0.2839455306529999 -0.7040925025939941 0.7100741863250732 -0.0 0.9600106477737427 0.5717301964759827 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 -0.2839455306529999 -0.6881923675537109 0.7255164980888367 -0.0 0.9620909690856934 0.5682055354118347 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 0.21605446934700012 -0.6881923675537109 0.7255164980888367 -0.0 0.5108454823493958 0.406189501285553 0 1.0 0 0.0 0 0.0 0 0.0\n1.493159532546997 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13968321681022644 -0.0 0.9459576606750488 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2141483873128891 -0.0 0.9463337659835815 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2141483873128891 -0.0 0.5344240665435791 0.30988991260528564 0 1.0 0 0.0 0 0.0 0 0.0\n-1.633780837059021 0.1235072910785675 -0.2839455306529999 -0.8942533731460571 0.44749289751052856 -0.0 0.14448046684265137 0.7149181365966797 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 -0.9163182377815247 0.40040284395217896 -0.0 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 0.21605446934700012 -0.9163182377815247 0.40040284395217896 -0.0 0.4533528983592987 0.5442155599594116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 -0.2839455306529999 0.7995849251747131 0.600512683391571 -0.0 0.03590008616447449 0.4946441054344177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 -0.2839455306529999 0.8384044766426086 0.5450300574302673 -0.0 0.03853201866149902 0.5018355250358582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4823117256164551 -0.07536409795284271 0.21605446934700012 0.8384044766426086 0.5450300574302673 -0.0 0.42501261830329895 0.3521260619163513 0 1.0 0 0.0 0 0.0 0 0.0\n2.1530635356903076 0.14238256216049194 -0.2839455306529999 -0.6881923675537109 0.7255164980888367 -0.0 0.9620909690856934 0.5682055354118347 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 -0.6756492853164673 0.7372050881385803 -0.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 0.21605446934700012 -0.6756492853164673 0.7372050881385803 -0.0 0.5085511207580566 0.40191638469696045 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8960844874382019 -0.0 0.9155381917953491 0.5919424295425415 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 -0.2839455306529999 0.4054689109325409 0.9140903949737549 -0.0 0.9197486042976379 0.5977127552032471 0 1.0 0 0.0 0 0.0 0 0.0\n0.5300559997558594 0.02574750781059265 0.21605446934700012 0.4054689109325409 0.9140903949737549 -0.0 0.550326406955719 0.4469273090362549 0 1.0 0 0.0 0 0.0 0 0.0\n1.2473232746124268 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034449815750122 0.47963446378707886 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786007761955261 0.33784085512161255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3518340587615967 -0.07657542824745178 -0.2839455306529999 -0.8661457896232605 0.4997711181640625 -0.0 0.960374653339386 0.4969112277030945 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 -0.8230536580085754 0.5679494738578796 -0.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 0.21605446934700012 -0.8230536580085754 0.5679494738578796 -0.0 0.511112630367279 0.33321988582611084 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.03430280461907387 -0.9993896484375 -0.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0016785180196166039 -0.999969482421875 -0.0 0.05072706937789917 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 0.21605446934700012 0.0016785180196166039 -0.999969482421875 -0.0 0.527971625328064 0.5664610266685486 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8737754225730896 -0.0 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 -0.2839455306529999 0.443800151348114 0.8960844874382019 -0.0 0.9155381917953491 0.5919424295425415 0 1.0 0 0.0 0 0.0 0 0.0\n0.5382177829742432 0.02193109691143036 0.21605446934700012 0.443800151348114 0.8960844874382019 -0.0 0.5549336075782776 0.4429643750190735 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.8884548544883728 -0.4589068293571472 -0.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 -0.2839455306529999 0.9083529114723206 -0.41816461086273193 -0.0 0.9011474847793579 0.5548092126846313 0 1.0 0 0.0 0 0.0 0 0.0\n2.2611100673675537 0.14044153690338135 0.21605446934700012 0.9083529114723206 -0.41816461086273193 -0.0 0.5734215378761292 0.4135507345199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.2809107303619385 0.021230563521385193 -0.2839455306529999 -0.790459930896759 -0.6125065088272095 -0.0 0.0732530951499939 0.5927700996398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.0702734887599945 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 0.21605446934700012 -0.7363200783729553 -0.6765953302383423 -0.0 0.40415647625923157 0.4438801407814026 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557573139667511 -0.0 0.026820480823516846 0.46813976764678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028156548738479614 0.4720897674560547 0 1.0 0 0.0 0 0.0 0 0.0\n1.3531529903411865 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.435935914516449 0.31473487615585327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.9347819685935974 -0.3551744222640991 -0.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 -0.2839455306529999 0.9552598595619202 -0.29572436213493347 -0.0 0.903641939163208 0.4928281903266907 0 1.0 0 0.0 0 0.0 0 0.0\n-0.24636578559875488 -0.07842888683080673 0.21605446934700012 0.9552598595619202 -0.29572436213493347 -0.0 0.576752245426178 0.35565972328186035 0 1.0 0 0.0 0 0.0 0 0.0\n2.1494953632354736 0.13906237483024597 -0.2839455306529999 -0.6756492853164673 0.7372050881385803 -0.0 0.9644855260848999 0.5642683506011963 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 -0.6655476689338684 0.7463301420211792 -0.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 0.21605446934700012 -0.6655476689338684 0.7463301420211792 -0.0 0.505915641784668 0.3972187638282776 0 1.0 0 0.0 0 0.0 0 0.0\n1.4927098751068115 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2141483873128891 -0.0 0.9463337659835815 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 -0.2839455306529999 -0.9568468332290649 0.29050567746162415 -0.0 0.9468050003051758 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 0.21605446934700012 -0.9568468332290649 0.29050567746162415 -0.0 0.534095287322998 0.30716514587402344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4921189546585083 0.12113326787948608 -0.2839455306529999 0.0016785180196166039 -0.999969482421875 -0.0 0.05072706937789917 0.7608742713928223 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 -0.2839455306529999 -0.02774132415652275 -0.999603271484375 -0.0 0.04563558101654053 0.7615771293640137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 0.21605446934700012 -0.02774132415652275 -0.999603271484375 -0.0 0.5315316915512085 0.566885232925415 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 -0.2839455306529999 0.7547837495803833 0.6559343338012695 -0.0 0.033157676458358765 0.48806750774383545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 -0.2839455306529999 0.7995849251747131 0.600512683391571 -0.0 0.03590008616447449 0.4946441054344177 0 1.0 0 0.0 0 0.0 0 0.0\n-0.477933406829834 -0.0816299095749855 0.21605446934700012 0.7995849251747131 0.600512683391571 -0.0 0.4272269308567047 0.3441292643547058 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 -0.2839455306529999 0.4862514138221741 0.8737754225730896 -0.0 0.9118230938911438 0.5862237811088562 0 1.0 0 0.0 0 0.0 0 0.0\n0.5457203388214111 0.018002808094024658 0.21605446934700012 0.4862514138221741 0.8737754225730896 -0.0 0.5591184496879578 0.4389607310295105 0 1.0 0 0.0 0 0.0 0 0.0\n1.4920799732208252 -0.09120375663042068 -0.2839455306529999 -0.9568468332290649 0.29050567746162415 -0.0 0.9468050003051758 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3671071529388428 -0.0 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3671071529388428 -0.0 0.5336395502090454 0.30452263355255127 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3551797866821289 -0.08188409358263016 -0.2839455306529999 -0.8230536580085754 0.5679494738578796 -0.0 0.9625728130340576 0.4907815456390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 -0.2839455306529999 -0.7761772274971008 0.6304818987846375 -0.0 0.9649338722229004 0.4852173924446106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 0.21605446934700012 -0.7761772274971008 0.6304818987846375 -0.0 0.5086210370063782 0.3273197412490845 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.8673055171966553 -0.4977263808250427 -0.0 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 -0.2839455306529999 0.8884548544883728 -0.4589068293571472 -0.0 0.9027214050292969 0.5496842861175537 0 1.0 0 0.0 0 0.0 0 0.0\n2.258683919906616 0.13547462224960327 0.21605446934700012 0.8884548544883728 -0.4589068293571472 -0.0 0.5725508332252502 0.4077966809272766 0 1.0 0 0.0 0 0.0 0 0.0\n0.2861208915710449 0.015069350600242615 -0.2839455306529999 -0.7363200783729553 -0.6765953302383423 -0.0 0.0702734887599945 0.5867007374763489 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.06697684526443481 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 0.21605446934700012 -0.6795861721038818 -0.7335734367370605 -0.0 0.40656495094299316 0.4366976022720337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 -0.2839455306529999 0.07089449465274811 -0.9974669814109802 -0.0 0.057448118925094604 0.7593033909797668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 -0.2839455306529999 0.03430280461907387 -0.9993896484375 -0.0 0.05416753888130188 0.7601801156997681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4964169263839722 0.1210615336894989 0.21605446934700012 0.03430280461907387 -0.9993896484375 -0.0 0.5255527496337891 0.5660300254821777 0 1.0 0 0.0 0 0.0 0 0.0\n2.1454455852508545 0.135406494140625 -0.2839455306529999 -0.6655476689338684 0.7463301420211792 -0.0 0.9671920537948608 0.5599122643470764 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 -0.2839455306529999 -0.6572160720825195 0.7536851167678833 -0.0 0.9702067375183105 0.5551329851150513 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 0.21605446934700012 -0.6572160720825195 0.7536851167678833 -0.0 0.5029294490814209 0.39210838079452515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3588440418243408 -0.08674763888120651 -0.2839455306529999 -0.7761772274971008 0.6304818987846375 -0.0 0.9649338722229004 0.4852173924446106 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 -0.7318033576011658 0.6814783215522766 -0.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 0.21605446934700012 -0.7318033576011658 0.6814783215522766 -0.0 0.5059289336204529 0.32195907831192017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4858118295669556 0.12104934453964233 -0.2839455306529999 -0.02774132415652275 -0.999603271484375 -0.0 0.04563558101654053 0.7615771293640137 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 -0.058351390063762665 -0.9982909560203552 -0.0 0.04079052805900574 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 0.21605446934700012 -0.058351390063762665 -0.9982909560203552 -0.0 0.534906268119812 0.5670909881591797 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557573139667511 -0.0 0.026820480823516846 0.46813976764678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3553736209869385 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557573139667511 -0.0 0.4371563494205475 0.3104267716407776 0 1.0 0 0.0 0 0.0 0 0.0\n2.14091420173645 0.13141494989395142 -0.2839455306529999 -0.6572160720825195 0.7536851167678833 -0.0 0.9702067375183105 0.5551329851150513 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 -0.6502273678779602 0.7596972584724426 -0.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 0.21605446934700012 -0.6502273678779602 0.7596972584724426 -0.0 0.4995826780796051 0.3866015672683716 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057610034942627 0.5749698281288147 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 -0.2839455306529999 0.5330973267555237 0.8460341095924377 -0.0 0.9085732102394104 0.580565333366394 0 1.0 0 0.0 0 0.0 0 0.0\n0.5525639057159424 0.013962626457214355 0.21605446934700012 0.5330973267555237 0.8460341095924377 -0.0 0.562899649143219 0.4349040985107422 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2938016951084137 -0.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982555270195007 0.4663318991661072 0 1.0 0 0.0 0 0.0 0 0.0\n1.5896236896514893 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898779034614563 0.3301680088043213 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 -0.2839455306529999 0.7024445533752441 0.7116916179656982 -0.0 0.030300259590148926 0.4821009039878845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 -0.2839455306529999 0.7547837495803833 0.6559343338012695 -0.0 0.033157676458358765 0.48806750774383545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47332167625427246 -0.08735086768865585 0.21605446934700012 0.7547837495803833 0.6559343338012695 -0.0 0.42968177795410156 0.3367283344268799 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 -0.2839455306529999 0.11017181724309921 -0.9938963055610657 -0.0 0.060566484928131104 0.7582532167434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 -0.2839455306529999 0.07089449465274811 -0.9974669814109802 -0.0 0.057448118925094604 0.7593033909797668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5005544424057007 0.12084627151489258 0.21605446934700012 0.07089449465274811 -0.9974669814109802 -0.0 0.5232311487197876 0.565461277961731 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 -0.2839455306529999 0.5844904780387878 0.8113650679588318 -0.0 0.9057610034942627 0.5749698281288147 0 1.0 0 0.0 0 0.0 0 0.0\n0.5587482452392578 0.00981055200099945 0.21605446934700012 0.5844904780387878 0.8113650679588318 -0.0 0.5662951469421387 0.4307813048362732 0 1.0 0 0.0 0 0.0 0 0.0\n1.491269826889038 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3671071529388428 -0.0 0.947371244430542 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 -0.2839455306529999 -0.8968169093132019 0.4423657953739166 -0.0 0.9480323791503906 0.4602992534637451 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 0.21605446934700012 -0.8968169093132019 0.4423657953739166 -0.0 0.5330555438995361 0.30196118354797363 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.843317985534668 -0.5373699069023132 -0.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 -0.2839455306529999 0.8673055171966553 -0.4977263808250427 -0.0 0.9044173359870911 0.5446003675460815 0 1.0 0 0.0 0 0.0 0 0.0\n2.256002187728882 0.13055634498596191 0.21605446934700012 0.8673055171966553 -0.4977263808250427 -0.0 0.5715339183807373 0.4020240902900696 0 1.0 0 0.0 0 0.0 0 0.0\n0.2919440269470215 0.009234070777893066 -0.2839455306529999 -0.6795861721038818 -0.7335734367370605 -0.0 0.06697684526443481 0.5809164047241211 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334707140922546 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 0.21605446934700012 -0.6217535734176636 -0.7831659913063049 -0.0 0.4093855619430542 0.42966413497924805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.9091463685035706 -0.41645556688308716 -0.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 -0.2839455306529999 0.9347819685935974 -0.3551744222640991 -0.0 0.9064401388168335 0.4806376099586487 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2504608631134033 -0.09035484492778778 0.21605446934700012 0.9347819685935974 -0.3551744222640991 -0.0 0.5754992365837097 0.3424345850944519 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.982573926448822 0.18573564291000366 -0.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 -0.2839455306529999 0.9733878374099731 0.22907193005084991 -0.0 0.9367607831954956 0.7377991676330566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3343840837478638 0.12082192301750183 0.21605446934700012 0.9733878374099731 0.22907193005084991 -0.0 0.6105040311813354 0.569257378578186 0 1.0 0 0.0 0 0.0 0 0.0\n2.1359012126922607 0.12708774209022522 -0.2839455306529999 -0.6502273678779602 0.7596972584724426 -0.0 0.9735246300697327 0.5499288439750671 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 -0.6443067789077759 0.764732837677002 -0.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 0.21605446934700012 -0.6443067789077759 0.764732837677002 -0.0 0.4958657920360565 0.380720853805542 0 1.0 0 0.0 0 0.0 0 0.0\n1.2502384185791016 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.07861322164535522 0.47155576944351196 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792789578437805 0.3292854428291321 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3627345561981201 -0.0911952406167984 -0.2839455306529999 -0.7318033576011658 0.6814783215522766 -0.0 0.9674052000045776 0.4801751375198364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 -0.2839455306529999 -0.6865749359130859 0.7270119190216064 -0.0 0.9699341058731079 0.47561323642730713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 0.21605446934700012 -0.6865749359130859 0.7270119190216064 -0.0 0.5031017065048218 0.3171094059944153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479849934577942 0.12079760432243347 -0.2839455306529999 -0.058351390063762665 -0.9982909560203552 -0.0 0.04079052805900574 0.761926531791687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 -0.2839455306529999 -0.09262367337942123 -0.9956969022750854 -0.0 1.0362075567245483 0.7619456648826599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 0.21605446934700012 -0.09262367337942123 -0.9956969022750854 -0.0 0.5380936861038208 0.5670830011367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101962566375732 -0.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 -0.2839455306529999 0.6442762613296509 0.764763355255127 -0.0 0.9033610820770264 0.569435179233551 0 1.0 0 0.0 0 0.0 0 0.0\n0.5642733573913574 0.005546584725379944 0.21605446934700012 0.6442762613296509 0.764763355255127 -0.0 0.5693221092224121 0.4265784025192261 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.8160954713821411 -0.5778679847717285 -0.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 -0.2839455306529999 0.843317985534668 -0.5373699069023132 -0.0 0.9062378406524658 0.5395541191101074 0 1.0 0 0.0 0 0.0 0 0.0\n2.2530648708343506 0.12568670511245728 0.21605446934700012 0.843317985534668 -0.5373699069023132 -0.0 0.5703655481338501 0.39623093605041504 0 1.0 0 0.0 0 0.0 0 0.0\n0.29838013648986816 0.0037247389554977417 -0.2839455306529999 -0.6217535734176636 -0.7831659913063049 -0.0 0.06334707140922546 0.5754096508026123 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 -0.5591906309127808 -0.8290352821350098 -0.0 0.05936703085899353 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 0.21605446934700012 -0.5591906309127808 -0.8290352821350098 -0.0 0.4126429259777069 0.42278528213500977 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 -0.2839455306529999 0.7530137300491333 0.6579790711402893 -0.0 0.023867100477218628 0.46089041233062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.02539101243019104 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n1.3577744960784912 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.43852657079696655 0.30631476640701294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.6422925591468811 0.766411304473877 -0.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 -0.2839455306529999 0.7024445533752441 0.7116916179656982 -0.0 0.030300259590148926 0.4821009039878845 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4684762954711914 -0.09252697229385376 0.21605446934700012 0.7024445533752441 0.7116916179656982 -0.0 0.43238383531570435 0.3299248218536377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 -0.2839455306529999 0.15222632884979248 -0.9883114099502563 -0.0 0.06352132558822632 0.757038414478302 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 -0.2839455306529999 0.11017181724309921 -0.9938963055610657 -0.0 0.060566484928131104 0.7582532167434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5045313835144043 0.1204875111579895 0.21605446934700012 0.11017181724309921 -0.9938963055610657 -0.0 0.5210064053535461 0.5647562146186829 0 1.0 0 0.0 0 0.0 0 0.0\n2.130406618118286 0.12242487072944641 -0.2839455306529999 -0.6443067789077759 0.764732837677002 -0.0 0.9771391153335571 0.5443018674850464 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 -0.6392101645469666 0.7690054178237915 -0.0 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 0.21605446934700012 -0.6392101645469666 0.7690054178237915 -0.0 0.49176985025405884 0.37449586391448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.4902799129486084 -0.09576690196990967 -0.2839455306529999 -0.8968169093132019 0.4423657953739166 -0.0 0.9480323791503906 0.4602992534637451 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149083137512207 -0.0 0.9487885236740112 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149083137512207 -0.0 0.532341718673706 0.29947996139526367 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3667590618133545 -0.09525609761476517 -0.2839455306529999 -0.6865749359130859 0.7270119190216064 -0.0 0.9699341058731079 0.47561323642730713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 -0.2839455306529999 -0.635486900806427 0.7720877528190613 -0.0 0.9725217819213867 0.47152602672576904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 0.21605446934700012 -0.635486900806427 0.7720877528190613 -0.0 0.5001419186592102 0.3127697706222534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.474233627319336 0.12037801742553711 -0.2839455306529999 -0.09262367337942123 -0.9956969022750854 -0.0 1.0362075567245483 0.7619456648826599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 -0.2839455306529999 -0.13116855919361115 -0.9913327693939209 -0.0 1.0318984985351562 0.76165771484375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 0.21605446934700012 -0.13116855919361115 -0.9913327693939209 -0.0 0.5410932898521423 0.5668658018112183 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 -0.2839455306529999 0.7040009498596191 0.7101962566375732 -0.0 0.901335597038269 0.563788652420044 0 1.0 0 0.0 0 0.0 0 0.0\n0.5691964626312256 0.0010247975587844849 0.21605446934700012 0.7040009498596191 0.7101962566375732 -0.0 0.5720335245132446 0.4221276044845581 0 1.0 0 0.0 0 0.0 0 0.0\n1.4891102313995361 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149083137512207 -0.0 0.9487885236740112 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 -0.2839455306529999 -0.8122501373291016 0.5832697749137878 -0.0 0.9496400952339172 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 0.21605446934700012 -0.8122501373291016 0.5832697749137878 -0.0 0.5314958691596985 0.29707831144332886 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.7895443439483643 -0.6136661767959595 -0.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 -0.2839455306529999 0.8160954713821411 -0.5778679847717285 -0.0 0.9082791805267334 0.5343690514564514 0 1.0 0 0.0 0 0.0 0 0.0\n2.249709367752075 0.12069547176361084 0.21605446934700012 0.8160954713821411 -0.5778679847717285 -0.0 0.5689668655395508 0.39020174741744995 0 1.0 0 0.0 0 0.0 0 0.0\n0.30542922019958496 -0.0014586597681045532 -0.2839455306529999 -0.5591906309127808 -0.8290352821350098 -0.0 0.05936703085899353 0.5701738595962524 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601939558982849 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 0.21605446934700012 -0.4938505291938782 -0.869533360004425 -0.0 0.4155136048793793 0.41772472858428955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 -0.2839455306529999 0.19714957475662231 -0.9803460836410522 -0.0 0.06631192564964294 0.7556670308113098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 -0.2839455306529999 0.15222632884979248 -0.9883114099502563 -0.0 0.06352132558822632 0.757038414478302 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5083478689193726 0.11998522281646729 0.21605446934700012 0.15222632884979248 -0.9883114099502563 -0.0 0.5188777446746826 0.5639165043830872 0 1.0 0 0.0 0 0.0 0 0.0\n2.1244304180145264 0.11742633581161499 -0.2839455306529999 -0.6392101645469666 0.7690054178237915 -0.0 0.9810415506362915 0.5382588505744934 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 0.21605446934700012 -0.634754478931427 0.772667646408081 -0.0 0.487287312746048 0.36796391010284424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4689626693725586 0.11979058384895325 -0.2839455306529999 -0.13116855919361115 -0.9913327693939209 -0.0 1.0318984985351562 0.76165771484375 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 -0.2839455306529999 -0.1745963990688324 -0.9846186637878418 -0.0 1.027872085571289 0.7610847353935242 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 0.21605446934700012 -0.1745963990688324 -0.9846186637878418 -0.0 0.5439050197601318 0.5664436221122742 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022248119115829468 0.45758455991744995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 -0.2839455306529999 0.7530137300491333 0.6579790711402893 -0.0 0.023867100477218628 0.46089041233062744 0 1.0 0 0.0 0 0.0 0 0.0\n1.3603556156158447 -0.09805455803871155 0.21605446934700012 0.7530137300491333 0.6579790711402893 -0.0 0.44004958868026733 0.30239802598953247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 -0.2839455306529999 0.574510931968689 0.8184759020805359 -0.0 0.02422255277633667 0.4719785451889038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 -0.2839455306529999 0.6422925591468811 0.766411304473877 -0.0 0.027323424816131592 0.47673940658569336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4633975028991699 -0.09715822339057922 0.21605446934700012 0.6422925591468811 0.766411304473877 -0.0 0.43533870577812195 0.32372188568115234 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 -0.2839455306529999 0.7566148638725281 0.6538285613059998 -0.0 0.8995860815048218 0.5579735040664673 0 1.0 0 0.0 0 0.0 0 0.0\n0.5736916065216064 -0.0037840157747268677 0.21605446934700012 0.7566148638725281 0.6538285613059998 -0.0 0.5745289325714111 0.41740989685058594 0 1.0 0 0.0 0 0.0 0 0.0\n1.487760305404663 -0.0999603271484375 -0.2839455306529999 -0.8122501373291016 0.5832697749137878 -0.0 0.9496400952339172 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 -0.7631458640098572 0.6461989283561707 -0.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 0.21605446934700012 -0.7631458640098572 0.6461989283561707 -0.0 0.5305162668228149 0.29475635290145874 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37091708183288574 -0.09893020987510681 -0.2839455306529999 -0.635486900806427 0.7720877528190613 -0.0 0.9725217819213867 0.47152602672576904 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 -0.5784783363342285 0.8156682252883911 -0.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 0.21605446934700012 -0.5784783363342285 0.8156682252883911 -0.0 0.49705228209495544 0.30893921852111816 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.765923023223877 -0.6429029107093811 -0.0 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 -0.2839455306529999 0.7895443439483643 -0.6136661767959595 -0.0 0.910639762878418 0.5288608074188232 0 1.0 0 0.0 0 0.0 0 0.0\n2.24577260017395 0.11541235446929932 0.21605446934700012 0.7895443439483643 -0.6136661767959595 -0.0 0.5672522187232971 0.3837152123451233 0 1.0 0 0.0 0 0.0 0 0.0\n0.31134724617004395 -0.005109667778015137 -0.2839455306529999 -0.4938505291938782 -0.869533360004425 -0.0 0.05601939558982849 0.5664652585983276 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.051966845989227295 0.5626710653305054 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 0.21605446934700012 -0.4374523162841797 -0.8992278575897217 -0.0 0.4191216230392456 0.4123419523239136 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 -0.2839455306529999 0.2448805272579193 -0.9695425033569336 -0.0 0.06893846392631531 0.7541464567184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 -0.2839455306529999 0.19714957475662231 -0.9803460836410522 -0.0 0.06631192564964294 0.7556670308113098 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5120036602020264 0.11933943629264832 0.21605446934700012 0.19714957475662231 -0.9803460836410522 -0.0 0.516844630241394 0.5629432797431946 0 1.0 0 0.0 0 0.0 0 0.0\n2.1179726123809814 0.11209213733673096 -0.2839455306529999 -0.634754478931427 0.772667646408081 -0.0 0.9852210283279419 0.5318124890327454 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 -0.635517418384552 0.7720572352409363 -0.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 0.21605446934700012 -0.635517418384552 0.7720572352409363 -0.0 1.482412576675415 0.36117082834243774 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4640370607376099 0.11903533339500427 -0.2839455306529999 -0.1745963990688324 -0.9846186637878418 -0.0 1.027872085571289 0.7610847353935242 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 -0.2839455306529999 -0.22357860207557678 -0.9746696352958679 -0.0 1.0241351127624512 0.7602477073669434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 0.21605446934700012 -0.22357860207557678 -0.9746696352958679 -0.0 0.5465291142463684 0.5658203363418579 0 1.0 0 0.0 0 0.0 0 0.0\n0.31847643852233887 -0.00882391631603241 -0.2839455306529999 -0.4374523162841797 -0.8992278575897217 -0.0 0.051966845989227295 0.5626710653305054 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.04717668890953064 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 0.21605446934700012 -0.39289528131484985 -0.9195532202720642 -0.0 0.4235183298587799 0.40663421154022217 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667104244232178 -0.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2938016951084137 -0.0 0.8997503519058228 0.4588809609413147 0 1.0 0 0.0 0 0.0 0 0.0\n1.5875461101531982 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2938016951084137 -0.0 0.589529275894165 0.3221694827079773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 -0.2839455306529999 0.4997406005859375 0.8661457896232605 -0.0 0.02099284529685974 0.46781474351882935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 -0.2839455306529999 0.574510931968689 0.8184759020805359 -0.0 0.02422255277633667 0.4719785451889038 0 1.0 0 0.0 0 0.0 0 0.0\n-0.458085298538208 -0.10124462097883224 0.21605446934700012 0.574510931968689 0.8184759020805359 -0.0 0.43855130672454834 0.31812357902526855 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.7449567914009094 -0.6670736074447632 -0.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 -0.2839455306529999 0.765923023223877 -0.6429029107093811 -0.0 0.9133265018463135 0.5230157375335693 0 1.0 0 0.0 0 0.0 0 0.0\n2.2412545680999756 0.1098373532295227 0.21605446934700012 0.765923023223877 -0.6429029107093811 -0.0 0.5652036666870117 0.3767634630203247 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022248119115829468 0.45758455991744995 0 1.0 0 0.0 0 0.0 0 0.0\n1.3631165027618408 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172802567481995 0.29867666959762573 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.8779259324073792 -0.47877436876296997 -0.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 -0.2839455306529999 0.9091463685035706 -0.41645556688308716 -0.0 0.9094827175140381 0.4691436290740967 0 1.0 0 0.0 0 0.0 0 0.0\n-0.255185604095459 -0.1016727089881897 0.21605446934700012 0.9091463685035706 -0.41645556688308716 -0.0 0.5738273859024048 0.3297680616378784 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 -0.2839455306529999 0.2953581213951111 -0.9553819298744202 -0.0 0.07140150666236877 0.7524835467338562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 -0.2839455306529999 0.2448805272579193 -0.9695425033569336 -0.0 0.06893846392631531 0.7541464567184448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5154989957809448 0.1185501217842102 0.21605446934700012 0.2448805272579193 -0.9695425033569336 -0.0 0.514906108379364 0.5618376135826111 0 1.0 0 0.0 0 0.0 0 0.0\n2.1110332012176514 0.10642224550247192 -0.2839455306529999 -0.635517418384552 0.7720572352409363 -0.0 0.9896643757820129 0.5249820947647095 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 1.4774537086486816 0.3544101119041443 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 -0.2839455306529999 0.8056581020355225 0.5923642516136169 -0.0 0.898100733757019 0.5519903302192688 0 1.0 0 0.0 0 0.0 0 0.0\n0.5777585506439209 -0.008879855275154114 0.21605446934700012 0.8056581020355225 0.5923642516136169 -0.0 0.5768174529075623 0.4124223589897156 0 1.0 0 0.0 0 0.0 0 0.0\n1.4862301349639893 -0.10191839188337326 -0.2839455306529999 -0.7631458640098572 0.6461989283561707 -0.0 0.9505875706672668 0.4537401795387268 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 -0.2839455306529999 -0.7112338542938232 0.7029328346252441 -0.0 0.9516310691833496 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 0.21605446934700012 -0.7112338542938232 0.7029328346252441 -0.0 0.5294012427330017 0.2925146222114563 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37520909309387207 -0.10221756994724274 -0.2839455306529999 -0.5784783363342285 0.8156682252883911 -0.0 0.9751698970794678 0.46790796518325806 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 -0.2839455306529999 -0.5158543586730957 0.8566545844078064 -0.0 0.9778796434402466 0.46475380659103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 0.21605446934700012 -0.5158543586730957 0.8566545844078064 -0.0 0.4938368499279022 0.3056175708770752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4594570398330688 0.1181122362613678 -0.2839455306529999 -0.22357860207557678 -0.9746696352958679 -0.0 1.0241351127624512 0.7602477073669434 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 -0.2839455306529999 -0.2787865698337555 -0.9603259563446045 -0.0 1.02069091796875 0.75916588306427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 0.21605446934700012 -0.2787865698337555 -0.9603259563446045 -0.0 0.5489665269851685 0.5649992227554321 0 1.0 0 0.0 0 0.0 0 0.0\n0.32681703567504883 -0.012601405382156372 -0.2839455306529999 -0.39289528131484985 -0.9195532202720642 -0.0 0.04717668890953064 0.5587554574012756 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.0416143536567688 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 0.21605446934700012 -0.3570665717124939 -0.9340494871139526 -0.0 0.4287617802619934 0.4006116986274719 0 1.0 0 0.0 0 0.0 0 0.0\n1.2535793781280518 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672339677810669 0.4637816548347473 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.380201518535614 0.32091307640075684 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.7263100147247314 -0.6873378753662109 -0.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 -0.2839455306529999 0.7449567914009094 -0.6670736074447632 -0.0 0.9163463115692139 0.5168219804763794 0 1.0 0 0.0 0 0.0 0 0.0\n2.2361552715301514 0.10397043824195862 0.21605446934700012 0.7449567914009094 -0.6670736074447632 -0.0 0.5628004670143127 0.3693418502807617 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 -0.2839455306529999 0.4193548262119293 0.9078035950660706 -0.0 0.01762986183166504 0.4642455577850342 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 -0.2839455306529999 0.4997406005859375 0.8661457896232605 -0.0 0.02099284529685974 0.46781474351882935 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45253944396972656 -0.10478616505861282 0.21605446934700012 0.4997406005859375 0.8661457896232605 -0.0 0.4420255124568939 0.31313610076904297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 -0.2839455306529999 0.3482772409915924 -0.9373760223388672 -0.0 0.07370230555534363 0.7506841421127319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 -0.2839455306529999 0.2953581213951111 -0.9553819298744202 -0.0 0.07140150666236877 0.7524835467338562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5188337564468384 0.11761730909347534 0.21605446934700012 0.2953581213951111 -0.9553819298744202 -0.0 0.5130614042282104 0.5606002807617188 0 1.0 0 0.0 0 0.0 0 0.0\n2.1040523052215576 0.10063314437866211 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.9940800070762634 0.5180487632751465 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 -0.6625263094902039 0.749015748500824 -0.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 0.21605446934700012 -0.6625263094902039 0.749015748500824 -0.0 1.4727293252944946 0.34793686866760254 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 -0.2839455306529999 0.8499709963798523 0.5268105268478394 -0.0 0.8968684673309326 0.5458382368087769 0 1.0 0 0.0 0 0.0 0 0.0\n0.581397294998169 -0.01426270604133606 0.21605446934700012 0.8499709963798523 0.5268105268478394 -0.0 0.5789073705673218 0.4071616530418396 0 1.0 0 0.0 0 0.0 0 0.0\n1.4845201969146729 -0.10378402471542358 -0.2839455306529999 -0.7112338542938232 0.7029328346252441 -0.0 0.9516310691833496 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532273530960083 -0.0 0.9527712464332581 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532273530960083 -0.0 0.5281489491462708 0.29035401344299316 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3796348571777344 -0.10511818528175354 -0.2839455306529999 -0.5158543586730957 0.8566545844078064 -0.0 0.9778796434402466 0.46475380659103394 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 -0.2839455306529999 -0.44813379645347595 0.8939481973648071 -0.0 0.980652391910553 0.4620588421821594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 0.21605446934700012 -0.44813379645347595 0.8939481973648071 -0.0 0.4905005395412445 0.3028048276901245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.455222249031067 0.11702132225036621 -0.2839455306529999 -0.2787865698337555 -0.9603259563446045 -0.0 1.02069091796875 0.75916588306427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 -0.2839455306529999 -0.3408612310886383 -0.940092146396637 -0.0 1.0175414085388184 0.7578567266464233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 0.21605446934700012 -0.3408612310886383 -0.940092146396637 -0.0 0.5512181520462036 0.5639832019805908 0 1.0 0 0.0 0 0.0 0 0.0\n0.33636903762817383 -0.016442134976387024 -0.2839455306529999 -0.3570665717124939 -0.9340494871139526 -0.0 0.0416143536567688 0.554681658744812 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524616360664368 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 0.21605446934700012 -0.32773828506469727 -0.9447309970855713 -0.0 0.4349146783351898 0.3943026661872864 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38419437408447266 -0.10763204842805862 -0.2839455306529999 -0.44813379645347595 0.8939481973648071 -0.0 0.980652391910553 0.4620588421821594 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 -0.2839455306529999 -0.37626269459724426 0.9264808893203735 -0.0 0.9834892749786377 0.45981884002685547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 0.21605446934700012 -0.37626269459724426 0.9264808893203735 -0.0 0.48704904317855835 0.30050182342529297 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.7097079157829285 -0.7044892907142639 -0.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 -0.2839455306529999 0.7263100147247314 -0.6873378753662109 -0.0 0.9197068810462952 0.5102700591087341 0 1.0 0 0.0 0 0.0 0 0.0\n2.2304742336273193 0.09781163930892944 0.21605446934700012 0.7263100147247314 -0.6873378753662109 -0.0 0.5600180625915527 0.3614509701728821 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 -0.2839455306529999 0.6100039482116699 0.7923520803451538 -0.0 0.018720537424087524 0.45159733295440674 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532876253128052 0.4544876217842102 0 1.0 0 0.0 0 0.0 0 0.0\n1.3660571575164795 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435648024082184 0.2951512336730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.4033326208591461 -0.9150364398956299 -0.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 -0.2839455306529999 0.3482772409915924 -0.9373760223388672 -0.0 0.07370230555534363 0.7506841421127319 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5220080614089966 0.11654096841812134 0.21605446934700012 0.3482772409915924 -0.9373760223388672 -0.0 0.5113095641136169 0.5592316389083862 0 1.0 0 0.0 0 0.0 0 0.0\n2.0974700450897217 0.09494137763977051 -0.2839455306529999 -0.6625263094902039 0.749015748500824 -0.0 0.9981878995895386 0.5112894177436829 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 -0.6799523830413818 0.7332376837730408 -0.0 1.0019910335540771 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 0.21605446934700012 -0.6799523830413818 0.7332376837730408 -0.0 1.4682507514953613 0.3417431116104126 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3883175253868103 -0.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 -0.2839455306529999 0.8887600302696228 0.45832696557044983 -0.0 0.8958795666694641 0.5395151376724243 0 1.0 0 0.0 0 0.0 0 0.0\n0.5846080780029297 -0.0199325829744339 0.21605446934700012 0.8887600302696228 0.45832696557044983 -0.0 0.5808061361312866 0.40162408351898193 0 1.0 0 0.0 0 0.0 0 0.0\n1.4826304912567139 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532273530960083 -0.0 0.9527712464332581 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540088772773743 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.526757001876831 0.2882760167121887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.637346625328064 0.1158793568611145 -0.2839455306529999 -0.9163182377815247 0.40040284395217896 -0.0 0.14502182602882385 0.7068488597869873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 0.21605446934700012 -0.9349040389060974 0.35483869910240173 -0.0 0.4515746533870697 0.5366171598434448 0 1.0 0 0.0 0 0.0 0 0.0\n0.34713220596313477 -0.020346105098724365 -0.2839455306529999 -0.32773828506469727 -0.9447309970855713 -0.0 0.03524616360664368 0.5504134297370911 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028042852878570557 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 0.21605446934700012 -0.3034150302410126 -0.9528489112854004 -0.0 0.44204097986221313 0.387759804725647 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 -0.2839455306529999 0.335123747587204 0.9421674013137817 -0.0 0.014129281044006348 0.46126997470855713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 -0.2839455306529999 0.4193548262119293 0.9078035950660706 -0.0 0.01762986183166504 0.4642455577850342 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4467599391937256 -0.10778285562992096 0.21605446934700012 0.4193548262119293 0.9078035950660706 -0.0 0.4457634687423706 0.30876803398132324 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3888876438140869 -0.10975916683673859 -0.2839455306529999 -0.37626269459724426 0.9264808893203735 -0.0 0.9834892749786377 0.45981884002685547 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 -0.2839455306529999 -0.3014313280582428 0.9534592628479004 -0.0 0.9863911867141724 0.4580300450325012 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 0.21605446934700012 -0.3014313280582428 0.9534592628479004 -0.0 1.4834891557693481 0.2987098693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4513328075408936 0.11576256155967712 -0.2839455306529999 -0.3408612310886383 -0.940092146396637 -0.0 1.0175414085388184 0.7578567266464233 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 -0.2839455306529999 -0.41007721424102783 -0.9120151400566101 -0.0 1.0146870613098145 0.7563359141349792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 0.21605446934700012 -0.41007721424102783 -0.9120151400566101 -0.0 0.5532851219177246 0.5627743005752563 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.694814920425415 -0.7191686630249023 -0.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 -0.2839455306529999 0.7097079157829285 -0.7044892907142639 -0.0 0.923414945602417 0.5033544301986694 0 1.0 0 0.0 0 0.0 0 0.0\n2.2242119312286377 0.09136095643043518 0.21605446934700012 0.7097079157829285 -0.7044892907142639 -0.0 0.5568292737007141 0.3530978560447693 0 1.0 0 0.0 0 0.0 0 0.0\n0.35910677909851074 -0.024313315749168396 -0.2839455306529999 -0.3034150302410126 -0.9528489112854004 -0.0 0.028042852878570557 0.545917272567749 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.019985288381576538 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 0.21605446934700012 -0.28290659189224243 -0.9591357111930847 -0.0 0.450199693441391 0.381067156791687 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.01679942011833191 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 -0.2839455306529999 0.6100039482116699 0.7923520803451538 -0.0 0.018720537424087524 0.45159733295440674 0 1.0 0 0.0 0 0.0 0 0.0\n1.3691771030426025 -0.10636235028505325 0.21605446934700012 0.6100039482116699 0.7923520803451538 -0.0 0.44556230306625366 0.2918233871459961 0 1.0 0 0.0 0 0.0 0 0.0\n2.0912868976593018 0.08934691548347473 -0.2839455306529999 -0.6799523830413818 0.7332376837730408 -0.0 0.0019910037517547607 0.5047188401222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 -0.6985381841659546 0.7155674695968628 -0.0 0.00549432635307312 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 0.21605446934700012 -0.6985381841659546 0.7155674695968628 -0.0 0.46402648091316223 0.3358168601989746 0 1.0 0 0.0 0 0.0 0 0.0\n1.480560541152954 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540088772773743 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244709849357605 0.28544747829437256 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 -0.2839455306529999 0.24909207224845886 0.9684743881225586 -0.0 0.010486572980880737 0.4588884115219116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 -0.2839455306529999 0.335123747587204 0.9421674013137817 -0.0 0.014129281044006348 0.46126997470855713 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4407472610473633 -0.11023469269275665 0.21605446934700012 0.335123747587204 0.9421674013137817 -0.0 0.449765145778656 0.3050304651260376 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 -0.2839455306529999 0.4599749743938446 -0.8879055380821228 -0.0 0.0778232216835022 0.746696949005127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 -0.2839455306529999 0.4033326208591461 -0.9150364398956299 -0.0 0.0758422315120697 0.7487537860870361 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5250217914581299 0.11532112956047058 0.21605446934700012 0.4033326208591461 -0.9150364398956299 -0.0 0.5096496939659119 0.5577319860458374 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 -0.2839455306529999 0.921506404876709 0.3883175253868103 -0.0 0.8951253294944763 0.5330183506011963 0 1.0 0 0.0 0 0.0 0 0.0\n0.587390661239624 -0.025889486074447632 0.21605446934700012 0.921506404876709 0.3883175253868103 -0.0 0.5825201869010925 0.39580583572387695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39371466636657715 -0.11149953305721283 -0.2839455306529999 -0.3014313280582428 0.9534592628479004 -0.0 0.9863911867141724 0.4580300450325012 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 -0.22501297295093536 0.9743339419364929 -0.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 0.21605446934700012 -0.22501297295093536 0.9743339419364929 -0.0 1.4798285961151123 0.29743075370788574 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4477888345718384 0.11433598399162292 -0.2839455306529999 -0.41007721424102783 -0.9120151400566101 -0.0 1.0146870613098145 0.7563359141349792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 -0.4862819314002991 -0.8737754225730896 -0.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 0.21605446934700012 -0.4862819314002991 -0.8737754225730896 -0.0 0.5551687479019165 0.5613738298416138 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.6814478039741516 -0.7318338751792908 -0.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 -0.2839455306529999 0.694814920425415 -0.7191686630249023 -0.0 0.927477240562439 0.4960745573043823 0 1.0 0 0.0 0 0.0 0 0.0\n2.2173683643341064 0.08461838960647583 0.21605446934700012 0.694814920425415 -0.7191686630249023 -0.0 0.5532031655311584 0.3442986011505127 0 1.0 0 0.0 0 0.0 0 0.0\n0.37229275703430176 -0.028343766927719116 -0.2839455306529999 -0.28290659189224243 -0.9591357111930847 -0.0 0.019985288381576538 0.541165828704834 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.01107051968574524 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 0.21605446934700012 -0.26541948318481445 -0.964110255241394 -0.0 0.459436297416687 0.37434637546539307 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667104244232178 -0.0 0.901482343673706 0.4516540765762329 0 1.0 0 0.0 0 0.0 0 0.0\n1.5848753452301025 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667104244232178 -0.0 0.5888720750808716 0.3142467737197876 0 1.0 0 0.0 0 0.0 0 0.0\n2.085502862930298 0.08384972810745239 -0.2839455306529999 -0.6985381841659546 0.7155674695968628 -0.0 0.00549432635307312 0.49834656715393066 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 -0.2839455306529999 -0.7183446884155273 0.695669412612915 -0.0 0.00870424509048462 0.4921778440475464 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 0.21605446934700012 -0.7183446884155273 0.695669412612915 -0.0 0.4600628614425659 0.3301432728767395 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.01679942011833191 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.3724949359893799 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773662090301514 0.2886993885040283 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 -0.2839455306529999 0.16342662274837494 0.9865413308143616 -0.0 0.006697714328765869 0.45710289478302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 -0.2839455306529999 0.24909207224845886 0.9684743881225586 -0.0 0.010486572980880737 0.4588884115219116 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43450093269348145 -0.1121416762471199 0.21605446934700012 0.24909207224845886 0.9684743881225586 -0.0 0.4540289342403412 0.30193692445755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.9889522790908813 0.14807580411434174 -0.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 -0.2839455306529999 0.982573926448822 0.18573564291000366 -0.0 0.9365357160568237 0.7316248416900635 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3330157995224 0.11431652307510376 0.21605446934700012 0.982573926448822 0.18573564291000366 -0.0 0.6117595434188843 0.5635828971862793 0 1.0 0 0.0 0 0.0 0 0.0\n2.0801174640655518 0.07844984531402588 -0.2839455306529999 -0.7183446884155273 0.695669412612915 -0.0 0.00870424509048462 0.4921778440475464 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 -0.7394329905509949 0.6732078194618225 -0.0 0.011627405881881714 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 0.21605446934700012 -0.7394329905509949 0.6732078194618225 -0.0 0.45636481046676636 0.32470518350601196 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 -0.2839455306529999 0.9480269551277161 0.3180944323539734 -0.0 0.8945980072021484 0.526344895362854 0 1.0 0 0.0 0 0.0 0 0.0\n0.589745283126831 -0.032133400440216064 0.21605446934700012 0.9480269551277161 0.3180944323539734 -0.0 0.5840551853179932 0.38970309495925903 0 1.0 0 0.0 0 0.0 0 0.0\n1.4772183895111084 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559882879257202 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581106901168823 0.4435710906982422 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219641923904419 0.2828214764595032 0 1.0 0 0.0 0 0.0 0 0.0\n0.3866901397705078 -0.032437458634376526 -0.2839455306529999 -0.26541948318481445 -0.964110255241394 -0.0 0.01107051968574524 0.5361419320106506 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 0.0013192594051361084 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 0.21605446934700012 -0.25034332275390625 -0.9681386947631836 -0.0 0.4697710871696472 0.36776047945022583 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.8409680724143982 -0.5410626530647278 -0.0 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 -0.2839455306529999 0.8779259324073792 -0.47877436876296997 -0.0 0.9127802848815918 0.45833027362823486 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2605404853820801 -0.11238247901201248 0.21605446934700012 0.8779259324073792 -0.47877436876296997 -0.0 0.5717080235481262 0.31764930486679077 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 -0.2839455306529999 0.5174718499183655 -0.8556779623031616 -0.0 0.07964730262756348 0.74451744556427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 -0.2839455306529999 0.4599749743938446 -0.8879055380821228 -0.0 0.0778232216835022 0.746696949005127 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5278749465942383 0.11395779252052307 0.21605446934700012 0.4599749743938446 -0.8879055380821228 -0.0 0.5080809593200684 0.5561013221740723 0 1.0 0 0.0 0 0.0 0 0.0\n1.2573459148406982 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07467031478881836 0.45629990100860596 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.3813808858394623 0.3127126097679138 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39867544174194336 -0.11285315454006195 -0.2839455306529999 -0.22501297295093536 0.9743339419364929 -0.0 0.9893592596054077 0.4566894769668579 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 -0.2839455306529999 -0.14847254753112793 0.9888912439346313 -0.0 0.9923943281173706 0.4557947516441345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 0.21605446934700012 -0.14847254753112793 0.9888912439346313 -0.0 1.4760758876800537 0.29666680097579956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4445902109146118 0.11274155974388123 -0.2839455306529999 -0.4862819314002991 -0.8737754225730896 -0.0 1.012126088142395 0.7546167373657227 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 -0.2839455306529999 -0.5684377551078796 -0.8226874470710754 -0.0 1.0098564624786377 0.7527108192443848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 0.21605446934700012 -0.5684377551078796 -0.8226874470710754 -0.0 0.55687016248703 0.5597825050354004 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.669362485408783 -0.7429120540618896 -0.0 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 -0.2839455306529999 0.6814478039741516 -0.7318338751792908 -0.0 0.9318990707397461 0.4884364604949951 0 1.0 0 0.0 0 0.0 0 0.0\n2.2099435329437256 0.07758393883705139 0.21605446934700012 0.6814478039741516 -0.7318338751792908 -0.0 0.5491054058074951 0.3350799083709717 0 1.0 0 0.0 0 0.0 0 0.0\n0.4022986888885498 -0.036594390869140625 -0.2839455306529999 -0.25034332275390625 -0.9681386947631836 -0.0 1.0013192892074585 0.5308443307876587 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 0.21605446934700012 -0.2372203767299652 -0.9714346528053284 -0.0 1.4811856746673584 0.36151188611984253 0 1.0 0 0.0 0 0.0 0 0.0\n2.0751311779022217 0.07314726710319519 -0.2839455306529999 -0.7394329905509949 0.6732078194618225 -0.0 0.011627405881881714 0.4862140417098999 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 -0.7618335485458374 0.6477248668670654 -0.0 0.014271557331085205 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 0.21605446934700012 -0.7618335485458374 0.6477248668670654 -0.0 0.4529351592063904 0.31948477029800415 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012598484754562378 0.4442101716995239 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014759421348571777 0.4464564919471741 0 1.0 0 0.0 0 0.0 0 0.0\n1.3760263919830322 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010197162628174 0.28578758239746094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 -0.2839455306529999 0.08008056879043579 0.9967650175094604 -0.0 0.0027590692043304443 0.4559170603752136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 -0.2839455306529999 0.16342662274837494 0.9865413308143616 -0.0 0.006697714328765869 0.45710289478302 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4280209541320801 -0.11350381374359131 0.21605446934700012 0.16342662274837494 0.9865413308143616 -0.0 0.4585503935813904 0.2995036840438843 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 -0.2839455306529999 0.5755485892295837 -0.8177434802055359 -0.0 0.0813169777393341 0.7422186136245728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 -0.2839455306529999 0.5174718499183655 -0.8556779623031616 -0.0 0.07964730262756348 0.74451744556427 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5305675268173218 0.11245092749595642 0.21605446934700012 0.5174718499183655 -0.8556779623031616 -0.0 0.5066025257110596 0.5543391704559326 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 -0.2839455306529999 0.9685049057006836 0.24893948435783386 -0.0 0.8942910432815552 0.5194913148880005 0 1.0 0 0.0 0 0.0 0 0.0\n0.5916717052459717 -0.03866434097290039 0.21605446934700012 0.9685049057006836 0.24893948435783386 -0.0 0.5854156017303467 0.38331204652786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.4736135005950928 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581106901168823 0.4435710906982422 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.9603778123855591 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192333459854126 0.28040528297424316 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40377020835876465 -0.11382002383470535 -0.2839455306529999 -0.14847254753112793 0.9888912439346313 -0.0 0.9923943281173706 0.4557947516441345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 -0.2839455306529999 -0.07318338751792908 0.9973143935203552 -0.0 0.9954967498779297 0.45534396171569824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 0.21605446934700012 -0.07318338751792908 0.9973143935203552 -0.0 1.472240686416626 0.2964206337928772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4417370557785034 0.11097931861877441 -0.2839455306529999 -0.5684377551078796 -0.8226874470710754 -0.0 1.0098564624786377 0.7527108192443848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 -0.2839455306529999 -0.6502884030342102 -0.7596667408943176 -0.0 1.0078752040863037 0.7506272792816162 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 0.21605446934700012 -0.6502884030342102 -0.7596667408943176 -0.0 0.5583904981613159 0.5580000877380371 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.6584368348121643 -0.7526169419288635 -0.0 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 -0.2839455306529999 0.669362485408783 -0.7429120540618896 -0.0 0.9366838932037354 0.48045414686203003 0 1.0 0 0.0 0 0.0 0 0.0\n2.201937437057495 0.07025760412216187 0.21605446934700012 0.669362485408783 -0.7429120540618896 -0.0 0.5444985628128052 0.3254818916320801 0 1.0 0 0.0 0 0.0 0 0.0\n0.41911864280700684 -0.040814563632011414 -0.2839455306529999 -0.2372203767299652 -0.9714346528053284 -0.0 0.9907824397087097 0.5252926349639893 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795475006103516 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 0.21605446934700012 -0.22571489214897156 -0.9741813540458679 -0.0 0.4936082363128662 0.35583263635635376 0 1.0 0 0.0 0 0.0 0 0.0\n2.0705435276031494 0.06794196367263794 -0.2839455306529999 -0.7618335485458374 0.6477248668670654 -0.0 0.014271557331085205 0.4804534316062927 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 -0.2839455306529999 -0.7855769395828247 0.6187322735786438 -0.0 0.016644001007080078 0.4748919606208801 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 0.21605446934700012 -0.7855769395828247 0.6187322735786438 -0.0 0.4497760236263275 0.31446272134780884 0 1.0 0 0.0 0 0.0 0 0.0\n0.4371500015258789 -0.045097991824150085 -0.2839455306529999 -0.22571489214897156 -0.9741813540458679 -0.0 0.9795475006103516 0.5195319652557373 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 0.21605446934700012 -0.22766807675361633 -0.9737235903739929 -0.0 0.506902277469635 0.3509640097618103 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031571626663208 0.4421793818473816 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012598484754562378 0.4442101716995239 0 1.0 0 0.0 0 0.0 0 0.0\n1.379772424697876 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266157388687134 0.2830924987792969 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0015564439818263054 0.999969482421875 -0.0 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 -0.2839455306529999 0.08008056879043579 0.9967650175094604 -0.0 1.0027590990066528 0.4559170603752136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4213075637817383 -0.11432109773159027 0.21605446934700012 0.08008056879043579 0.9967650175094604 -0.0 1.4633219242095947 0.2977495789527893 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 -0.2839455306529999 0.6321604251861572 -0.7748039364814758 -0.0 0.08286002278327942 0.7397554516792297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 -0.2839455306529999 0.5755485892295837 -0.8177434802055359 -0.0 0.0813169777393341 0.7422186136245728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5330997705459595 0.11080053448677063 0.21605446934700012 0.5755485892295837 -0.8177434802055359 -0.0 0.5052133798599243 0.5524446964263916 0 1.0 0 0.0 0 0.0 0 0.0\n2.066354990005493 0.06283397972583771 -0.2839455306529999 -0.7855769395828247 0.6187322735786438 -0.0 0.016644001007080078 0.4748919606208801 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 -0.8104800581932068 0.5857112407684326 -0.0 0.01875227689743042 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 0.21605446934700012 -0.8104800581932068 0.5857112407684326 -0.0 0.44688835740089417 0.3096204400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.4697458744049072 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.9603778123855591 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939054548740387 -0.0 0.9627910852432251 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.5162762403488159 0.2782074809074402 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4089984893798828 -0.11440014839172363 -0.2839455306529999 -0.07318338751792908 0.9973143935203552 -0.0 0.9954967498779297 0.45534396171569824 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 -0.2839455306529999 0.0015564439818263054 0.999969482421875 -0.0 0.9986672401428223 0.4553358554840088 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41436076164245605 -0.1145935207605362 0.21605446934700012 0.0015564439818263054 0.999969482421875 -0.0 1.4683330059051514 0.29669511318206787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4392293691635132 0.1090492308139801 -0.2839455306529999 -0.6502884030342102 -0.7596667408943176 -0.0 1.0078752040863037 0.7506272792816162 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 -0.7228308916091919 -0.6909695863723755 -0.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 0.21605446934700012 -0.7228308916091919 -0.6909695863723755 -0.0 0.5597748756408691 0.5560001134872437 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 -0.2839455306529999 0.983306348323822 0.1818903088569641 -0.0 0.8941986560821533 0.5124542713165283 0 1.0 0 0.0 0 0.0 0 0.0\n0.593170166015625 -0.04548230767250061 0.21605446934700012 0.983306348323822 0.1818903088569641 -0.0 0.5866051912307739 0.376629114151001 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.6484572887420654 -0.7612231969833374 -0.0 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 -0.2839455306529999 0.6584368348121643 -0.7526169419288635 -0.0 0.9418329000473022 0.47215110063552856 0 1.0 0 0.0 0 0.0 0 0.0\n2.193350076675415 0.06263938546180725 0.21605446934700012 0.6584368348121643 -0.7526169419288635 -0.0 0.5393425226211548 0.3155598044395447 0 1.0 0 0.0 0 0.0 0 0.0\n0.4563925266265869 -0.04944466054439545 -0.2839455306529999 -0.22766807675361633 -0.9737235903739929 -0.0 0.9677401781082153 0.513634443283081 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.965241551399231 0.512294352054596 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 0.21605446934700012 -0.24390393495559692 -0.9697867035865784 -0.0 0.5097468495368958 0.34996771812438965 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007909178733825684 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031571626663208 0.4421793818473816 0 1.0 0 0.0 0 0.0 0 0.0\n1.3837320804595947 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541685819625854 0.2806207537651062 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.6839808225631714 -0.7294839024543762 -0.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 -0.2839455306529999 0.6321604251861572 -0.7748039364814758 -0.0 0.08286002278327942 0.7397554516792297 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5355125665664673 0.10897016525268555 0.21605446934700012 0.6321604251861572 -0.7748039364814758 -0.0 0.503890335559845 0.5503765344619751 0 1.0 0 0.0 0 0.0 0 0.0\n2.062565565109253 0.05782328546047211 -0.2839455306529999 -0.8104800581932068 0.5857112407684326 -0.0 0.01875227689743042 0.46952366828918457 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 -0.8364818096160889 0.5479598641395569 -0.0 0.020604074001312256 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 0.21605446934700012 -0.8364818096160889 0.5479598641395569 -0.0 0.4442720413208008 0.3049391508102417 0 1.0 0 0.0 0 0.0 0 0.0\n1.46561598777771 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939054548740387 -0.0 0.9627910852432251 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130904912948608 0.2762381434440613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.7983031868934631 -0.6022217273712158 -0.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 -0.2839455306529999 0.8409680724143982 -0.5410626530647278 -0.0 0.9163439869880676 0.4481813907623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2665255069732666 -0.12248415499925613 0.21605446934700012 0.8409680724143982 -0.5410626530647278 -0.0 0.5691090226173401 0.30606985092163086 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6406108140945435 0.10786223411560059 -0.2839455306529999 -0.9349040389060974 0.35483869910240173 -0.0 0.14534926414489746 0.6984879970550537 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 -0.9503769278526306 0.3110446333885193 -0.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 0.21605446934700012 -0.9503769278526306 0.3110446333885193 -0.0 0.4498993456363678 0.5286128520965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.4605276584625244 -0.05044436454772949 -0.2839455306529999 -0.24390393495559692 -0.9697867035865784 -0.0 0.965241551399231 0.512294352054596 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629130363464355 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 0.21605446934700012 -0.2627643644809723 -0.964842677116394 -0.0 0.5124109387397766 0.3489842414855957 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5982487201690674 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.08586367964744568 0.4110969305038452 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.047188133001327515 0.39707428216934204 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.4008871912956238 0.25336402654647827 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.18394553661346436 -0.2839455306529999 0.999969482421875 0.0 -0.0 0.047188133001327515 0.39707428216934204 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 1.0 0.0 -0.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 0.21605446934700012 1.0 0.0 -0.0 0.40608155727386475 0.3021705150604248 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.6444898843765259 -0.7645801901817322 -0.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 -0.2839455306529999 0.6484572887420654 -0.7612231969833374 -0.0 0.9473441243171692 0.46356165409088135 0 1.0 0 0.0 0 0.0 0 0.0\n2.184180974960327 0.05472928285598755 0.21605446934700012 0.6484572887420654 -0.7612231969833374 -0.0 0.5335952639579773 0.3053867816925049 0 1.0 0 0.0 0 0.0 0 0.0\n0.46440958976745605 -0.05145867168903351 -0.2839455306529999 -0.2627643644809723 -0.964842677116394 -0.0 0.9629130363464355 0.5109500885009766 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607527256011963 0.5096024870872498 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 0.21605446934700012 -0.2840357720851898 -0.9588000178337097 -0.0 0.5148954391479492 0.3480064272880554 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034565687179565 0.4446355104446411 0 1.0 0 0.0 0 0.0 0 0.0\n1.5816113948822021 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878925919532776 0.306384801864624 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5068299770355225 -0.12930455803871155 -0.2839455306529999 -0.8016296625137329 -0.5977965593338013 -0.0 0.049333542585372925 0.44634634256362915 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 -0.790887176990509 -0.6119571328163147 -0.0 0.04723277688026428 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 0.21605446934700012 -0.790887176990509 -0.6119571328163147 -0.0 0.40782004594802856 0.29606229066848755 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.9933164715766907 0.11523789167404175 -0.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 -0.2839455306529999 0.9889522790908813 0.14807580411434174 -0.0 0.9364566206932068 0.7249259948730469 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3318300247192383 0.10725411772727966 0.21605446934700012 0.9889522790908813 0.14807580411434174 -0.0 0.6129981279373169 0.5573402047157288 0 1.0 0 0.0 0 0.0 0 0.0\n2.0591747760772705 0.05290988087654114 -0.2839455306529999 -0.8364818096160889 0.5479598641395569 -0.0 0.020604074001312256 0.464341402053833 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 -0.2839455306529999 -0.8632160425186157 0.504806637763977 -0.0 0.022206127643585205 0.45933693647384644 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 0.21605446934700012 -0.8632160425186157 0.504806637763977 -0.0 0.44192713499069214 0.3004010319709778 0 1.0 0 0.0 0 0.0 0 0.0\n0.46803879737854004 -0.0524875670671463 -0.2839455306529999 -0.2840357720851898 -0.9588000178337097 -0.0 0.9607527256011963 0.5096024870872498 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 0.21605446934700012 -0.3080843389034271 -0.9513229727745056 -0.0 0.5172011852264404 0.3470277786254883 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005378127098083496 0.43876564502716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007909178733825684 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n1.3879063129425049 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837000012397766 0.2783792018890381 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 -0.2839455306529999 0.729941725730896 -0.6834925413131714 -0.0 0.08564883470535278 0.7341939210891724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 -0.2839455306529999 0.6839808225631714 -0.7294839024543762 -0.0 0.08430370688438416 0.7370809316635132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.537847638130188 0.10692331194877625 0.21605446934700012 0.6839808225631714 -0.7294839024543762 -0.0 0.5026096105575562 0.5480918884277344 0 1.0 0 0.0 0 0.0 0 0.0\n2.056183099746704 0.0480937659740448 -0.2839455306529999 -0.8632160425186157 0.504806637763977 -0.0 0.022206127643585205 0.45933693647384644 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 -0.8892483115196228 0.45738089084625244 -0.0 0.023565351963043213 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 0.21605446934700012 -0.8892483115196228 0.45738089084625244 -0.0 0.4398529827594757 0.2959889769554138 0 1.0 0 0.0 0 0.0 0 0.0\n1.4612228870391846 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653527736663818 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680638909339905 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096758604049683 0.2745087742805481 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.7530442476272583 -0.6579485535621643 -0.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 -0.2839455306529999 0.7983031868934631 -0.6022217273712158 -0.0 0.9201858043670654 0.4386823773384094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27314019203186035 -0.13197773694992065 0.21605446934700012 0.7983031868934631 -0.6022217273712158 -0.0 0.5659947991371155 0.29502570629119873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4369914531707764 0.10692211985588074 -0.2839455306529999 -0.7228308916091919 -0.6909695863723755 -0.0 1.006119728088379 0.7483381628990173 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 -0.2839455306529999 -0.7848140001296997 -0.6197088360786438 -0.0 1.0045299530029297 0.7458109259605408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 0.21605446934700012 -0.7848140001296997 -0.6197088360786438 -0.0 0.5610678791999817 0.5537543296813965 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5030343532562256 -0.1343943178653717 -0.2839455306529999 -0.790887176990509 -0.6119571328163147 -0.0 0.04723277688026428 0.4410468339920044 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 -0.2839455306529999 -0.7683034539222717 -0.6400341987609863 -0.0 0.04507666826248169 0.4359728693962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 0.21605446934700012 -0.7683034539222717 -0.6400341987609863 -0.0 0.40969035029411316 0.2901642918586731 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 -0.2839455306529999 0.9930112361907959 0.11780144274234772 -0.0 0.8943162560462952 0.5052309036254883 0 1.0 0 0.0 0 0.0 0 0.0\n0.5942404270172119 -0.05258728563785553 0.21605446934700012 0.9930112361907959 0.11780144274234772 -0.0 0.587626576423645 0.3696514964103699 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.651570200920105 -0.7585680484771729 -0.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 -0.2839455306529999 0.6444898843765259 -0.7645801901817322 -0.0 0.9532111287117004 0.45473164319992065 0 1.0 0 0.0 0 0.0 0 0.0\n2.1744306087493896 0.046527326107025146 0.21605446934700012 0.6444898843765259 -0.7645801901817322 -0.0 0.527215301990509 0.29505491256713867 0 1.0 0 0.0 0 0.0 0 0.0\n0.47141480445861816 -0.05353105068206787 -0.2839455306529999 -0.3080843389034271 -0.9513229727745056 -0.0 0.9587593078613281 0.5082523822784424 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569305777549744 0.5069000124931335 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 0.21605446934700012 -0.33548998832702637 -0.9420148134231567 -0.0 0.5193297863006592 0.346042275428772 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 0.002721160650253296 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005378127098083496 0.43876564502716064 0 1.0 0 0.0 0 0.0 0 0.0\n1.39229416847229 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.46152105927467346 0.2763766050338745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49911928176879883 -0.13927245140075684 -0.2839455306529999 -0.7683034539222717 -0.6400341987609863 -0.0 0.04507666826248169 0.4359728693962097 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 -0.7441022992134094 -0.6680501699447632 -0.0 0.04286402463912964 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 0.21605446934700012 -0.7441022992134094 -0.6680501699447632 -0.0 0.41169679164886475 0.2844768166542053 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 -0.2839455306529999 0.7702566385269165 -0.6377147436141968 -0.0 0.08689627051353455 0.7310928106307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 -0.2839455306529999 0.729941725730896 -0.6834925413131714 -0.0 0.08564883470535278 0.7341939210891724 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5401049852371216 0.10465997457504272 0.21605446934700012 0.729941725730896 -0.6834925413131714 -0.0 0.5013704895973206 0.545587956905365 0 1.0 0 0.0 0 0.0 0 0.0\n2.0535900592803955 0.04337495565414429 -0.2839455306529999 -0.8892483115196228 0.45738089084625244 -0.0 0.023565351963043213 0.45450156927108765 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 -0.9120456576347351 0.41001617908477783 -0.0 0.024739772081375122 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 0.21605446934700012 -0.9120456576347351 0.41001617908477783 -0.0 0.43797069787979126 0.29154956340789795 0 1.0 0 0.0 0 0.0 0 0.0\n1.4565675258636475 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680638909339905 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709261655807495 0.4359474182128906 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060319304466248 0.2730323076248169 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4349483251571655 0.10456877946853638 -0.2839455306529999 -0.7848140001296997 -0.6197088360786438 -0.0 1.0045299530029297 0.7458109259605408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 -0.2839455306529999 -0.8379467129707336 -0.5457014441490173 -0.0 1.0031040906906128 0.7430456280708313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 0.21605446934700012 -0.8379467129707336 -0.5457014441490173 -0.0 0.5622706413269043 0.5512592792510986 0 1.0 0 0.0 0 0.0 0 0.0\n0.47453808784484863 -0.05458913743495941 -0.2839455306529999 -0.33548998832702637 -0.9420148134231567 -0.0 0.9569305777549744 0.5069000124931335 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552648067474365 0.5055457353591919 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 0.21605446934700012 -0.3668935298919678 -0.9302346706390381 -0.0 0.5212823152542114 0.3450441360473633 0 1.0 0 0.0 0 0.0 0 0.0\n1.261538028717041 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244861125946045 0.44909894466400146 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005223631858826 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283151388168335 0.30467474460601807 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.7084261775016785 -0.7057710289955139 -0.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 -0.2839455306529999 0.7530442476272583 -0.6579485535621643 -0.0 0.9243186712265015 0.4298208951950073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28038525581359863 -0.14086322486400604 0.21605446934700012 0.7530442476272583 -0.6579485535621643 -0.0 0.562325656414032 0.2845187783241272 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.6648457050323486 -0.7469404935836792 -0.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 -0.2839455306529999 0.651570200920105 -0.7585680484771729 -0.0 0.9562410712242126 0.4502038359642029 0 1.0 0 0.0 0 0.0 0 0.0\n2.1693994998931885 0.04227796196937561 0.21605446934700012 0.651570200920105 -0.7585680484771729 -0.0 0.5238203406333923 0.28983134031295776 0 1.0 0 0.0 0 0.0 0 0.0\n0.47740817070007324 -0.05566181242465973 -0.2839455306529999 -0.3668935298919678 -0.9302346706390381 -0.0 0.9552648067474365 0.5055457353591919 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537597894668579 0.5041894912719727 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 0.21605446934700012 -0.4031189978122711 -0.9151280522346497 -0.0 0.5230607390403748 0.344028115272522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4950852394104004 -0.14393897354602814 -0.2839455306529999 -0.7441022992134094 -0.6680501699447632 -0.0 0.04286402463912964 0.43112242221832275 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 -0.2839455306529999 -0.7181615829467773 -0.69582200050354 -0.0 0.04059332609176636 0.42649346590042114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 0.21605446934700012 -0.7181615829467773 -0.69582200050354 -0.0 0.4138440191745758 0.27900052070617676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 -0.2839455306529999 0.8052613735198975 -0.5928831100463867 -0.0 0.08804729580879211 0.727775514125824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 -0.2839455306529999 0.7702566385269165 -0.6377147436141968 -0.0 0.08689627051353455 0.7310928106307983 0 1.0 0 0.0 0 0.0 0 0.0\n-1.542284369468689 0.10218015313148499 0.21605446934700012 0.7702566385269165 -0.6377147436141968 -0.0 0.5001721382141113 0.5428614020347595 0 1.0 0 0.0 0 0.0 0 0.0\n2.0512959957122803 0.03859776258468628 -0.2839455306529999 -0.9120456576347351 0.41001617908477783 -0.0 0.024739772081375122 0.44967198371887207 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 -0.9311502575874329 0.3645741045475006 -0.0 0.025784343481063843 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 0.21605446934700012 -0.9311502575874329 0.3645741045475006 -0.0 0.43620121479034424 0.2869437336921692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.433099627494812 0.10198923945426941 -0.2839455306529999 -0.8379467129707336 -0.5457014441490173 -0.0 1.0031040906906128 0.7430456280708313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 -0.8820154666900635 -0.47117525339126587 -0.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 0.21605446934700012 -0.8820154666900635 -0.47117525339126587 -0.0 0.5633835792541504 0.5485106706619263 0 1.0 0 0.0 0 0.0 0 0.0\n0.4800255298614502 -0.05674909055233002 -0.2839455306529999 -0.4031189978122711 -0.9151280522346497 -0.0 0.9537597894668579 0.5041894912719727 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524136781692505 0.5028311610221863 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 0.21605446934700012 -0.4450819492340088 -0.8954740762710571 -0.0 0.5246662497520447 0.3429895043373108 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999371767044067 0.43622368574142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 1.0027211904525757 0.4373849034309387 0 1.0 0 0.0 0 0.0 0 0.0\n1.3968961238861084 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 1.4648702144622803 0.27462238073349 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49093198776245117 -0.14839386940002441 -0.2839455306529999 -0.7181615829467773 -0.69582200050354 -0.0 0.04059332609176636 0.42649346590042114 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 -0.6906033754348755 -0.7232276201248169 -0.0 0.038263142108917236 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 0.21605446934700012 -0.6906033754348755 -0.7232276201248169 -0.0 0.41613665223121643 0.27373653650283813 0 1.0 0 0.0 0 0.0 0 0.0\n1.4516489505767822 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709261655807495 0.4359474182128906 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739401340484619 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.5021612048149109 0.2718231678009033 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 -0.2839455306529999 0.6794335842132568 -0.7336955070495605 -0.0 0.9617165923118591 0.441719651222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 -0.2839455306529999 0.6648457050323486 -0.7469404935836792 -0.0 0.9590770602226257 0.4458661675453186 0 1.0 0 0.0 0 0.0 0 0.0\n2.164696455001831 0.03816966712474823 0.21605446934700012 0.6648457050323486 -0.7469404935836792 -0.0 0.5205872654914856 0.2848947048187256 0 1.0 0 0.0 0 0.0 0 0.0\n0.4823896884918213 -0.05785095691680908 -0.2839455306529999 -0.4450819492340088 -0.8954740762710571 -0.0 0.9524136781692505 0.5028311610221863 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512243270874023 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 0.21605446934700012 -0.4939115643501282 -0.8695028424263 -0.0 0.526100754737854 0.3419238328933716 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.9962462186813354 0.08639790117740631 -0.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 -0.2839455306529999 0.9933164715766907 0.11523789167404175 -0.0 0.9365185499191284 0.7176774144172668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3308266401290894 0.09963467717170715 0.21605446934700012 0.9933164715766907 0.11523789167404175 -0.0 0.6142219305038452 0.550504207611084 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.6615192294120789 -0.7499008178710938 -0.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 -0.2839455306529999 0.7084261775016785 -0.7057710289955139 -0.0 0.9286611676216125 0.4216494560241699 0 1.0 0 0.0 0 0.0 0 0.0\n-0.28807997703552246 -0.1490871012210846 0.21605446934700012 0.7084261775016785 -0.7057710289955139 -0.0 0.5581673979759216 0.27465975284576416 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.695547342300415 -0.7184667587280273 -0.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 -0.2839455306529999 0.6794335842132568 -0.7336955070495605 -0.0 0.9617165923118591 0.441719651222229 0 1.0 0 0.0 0 0.0 0 0.0\n2.1603219509124756 0.0342024564743042 0.21605446934700012 0.6794335842132568 -0.7336955070495605 -0.0 0.5175286531448364 0.2802373170852661 0 1.0 0 0.0 0 0.0 0 0.0\n0.4845011234283447 -0.05896741896867752 -0.2839455306529999 -0.4939115643501282 -0.8695028424263 -0.0 0.9512243270874023 0.5014703273773193 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 0.21605446934700012 -0.5507370233535767 -0.8346506953239441 -0.0 0.5273653268814087 0.3408270478248596 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970256090164185 0.43528425693511963 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999371767044067 0.43622368574142456 0 1.0 0 0.0 0 0.0 0 0.0\n1.40171217918396 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684163331985474 0.2731272578239441 0 1.0 0 0.0 0 0.0 0 0.0\n-0.48665952682495117 -0.15263715386390686 -0.2839455306529999 -0.6906033754348755 -0.7232276201248169 -0.0 0.038263142108917236 0.42208415269851685 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 -0.6613666415214539 -0.7500228881835938 -0.0 0.035872071981430054 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 0.21605446934700012 -0.6613666415214539 -0.7500228881835938 -0.0 0.41857919096946716 0.26868611574172974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.8354747295379639 -0.5494857430458069 -0.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 -0.2839455306529999 0.8052613735198975 -0.5928831100463867 -0.0 0.08804729580879211 0.727775514125824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5443859100341797 0.09948384761810303 0.21605446934700012 0.8052613735198975 -0.5928831100463867 -0.0 0.4990137815475464 0.539908766746521 0 1.0 0 0.0 0 0.0 0 0.0\n2.049201726913452 0.03360651433467865 -0.2839455306529999 -0.9311502575874329 0.3645741045475006 -0.0 0.025784343481063843 0.4446961283683777 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 -0.9472640156745911 0.32038331031799316 -0.0 0.026701629161834717 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 0.21605446934700012 -0.9472640156745911 0.32038331031799316 -0.0 0.434542715549469 0.282177209854126 0 1.0 0 0.0 0 0.0 0 0.0\n1.4464681148529053 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739401340484619 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771068096160889 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.4980665147304535 0.2708966135978699 0 1.0 0 0.0 0 0.0 0 0.0\n-1.643573522567749 0.09945592284202576 -0.2839455306529999 -0.9503769278526306 0.3110446333885193 -0.0 0.14547201991081238 0.6898198127746582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 -0.9571214914321899 0.28955960273742676 -0.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 0.21605446934700012 -0.9571214914321899 0.28955960273742676 -0.0 0.4483241140842438 0.5201866626739502 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 -0.2839455306529999 0.9983519911766052 0.05722220614552498 -0.0 0.8946398496627808 0.4978189468383789 0 1.0 0 0.0 0 0.0 0 0.0\n0.5948824882507324 -0.05997928977012634 0.21605446934700012 0.9983519911766052 0.05722220614552498 -0.0 0.5884814262390137 0.36237674951553345 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.6092715263366699 -0.7929319143295288 -0.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 -0.2839455306529999 0.6615192294120789 -0.7499008178710938 -0.0 0.9331279993057251 0.41422218084335327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.29604482650756836 -0.1565958559513092 0.21605446934700012 0.6615192294120789 -0.7499008178710938 -0.0 0.553600549697876 0.2655588388442993 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4314457178115845 0.09918349981307983 -0.2839455306529999 -0.8820154666900635 -0.47117525339126587 -0.0 1.001840591430664 0.740041196346283 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 -0.2839455306529999 -0.9173253774642944 -0.3980834484100342 -0.0 1.000737190246582 0.7367956042289734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 0.21605446934700012 -0.9173253774642944 -0.3980834484100342 -0.0 0.5644075870513916 0.545503556728363 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.713370144367218 -0.7007355093955994 -0.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 -0.2839455306529999 0.695547342300415 -0.7184667587280273 -0.0 0.9641584157943726 0.43776363134384155 0 1.0 0 0.0 0 0.0 0 0.0\n2.156275510787964 0.030376330018043518 0.21605446934700012 0.695547342300415 -0.7184667587280273 -0.0 0.5146552920341492 0.27584993839263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.4863593578338623 -0.06009847670793533 -0.2839455306529999 -0.5507370233535767 -0.8346506953239441 -0.0 0.9501901865005493 0.5001065731048584 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493091106414795 0.49873924255371094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 0.21605446934700012 -0.616595983505249 -0.7872554659843445 -0.0 0.5284615159034729 0.33969563245773315 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939858913421631 0.43456923961639404 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970256090164185 0.43528425693511963 0 1.0 0 0.0 0 0.0 0 0.0\n1.4067423343658447 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721570014953613 0.2719026207923889 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4822678565979004 -0.15666882693767548 -0.2839455306529999 -0.6613666415214539 -0.7500228881835938 -0.0 0.035872071981430054 0.4178926348686218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 -0.2839455306529999 -0.6306039690971375 -0.7760856747627258 -0.0 0.033418744802474976 0.4139173626899719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 0.21605446934700012 -0.6306039690971375 -0.7760856747627258 -0.0 0.4211760461330414 0.2638515830039978 0 1.0 0 0.0 0 0.0 0 0.0\n2.047306776046753 0.028401225805282593 -0.2839455306529999 -0.9472640156745911 0.32038331031799316 -0.0 0.026701629161834717 0.4395824074745178 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 -0.9606616497039795 0.2776268720626831 -0.0 0.027493685483932495 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 0.21605446934700012 -0.9606616497039795 0.2776268720626831 -0.0 0.4329943060874939 0.2772558331489563 0 1.0 0 0.0 0 0.0 0 0.0\n1.4410245418548584 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771068096160889 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804263114929199 0.4339858293533325 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937530755996704 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n0.4879648685455322 -0.06124413013458252 -0.2839455306529999 -0.616595983505249 -0.7872554659843445 -0.0 0.9493091106414795 0.49873924255371094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 -0.2839455306529999 -0.7000030279159546 -0.7141026258468628 -0.0 0.9485797882080078 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 0.21605446934700012 -0.7000030279159546 -0.7141026258468628 -0.0 0.5293902158737183 0.3385264277458191 0 1.0 0 0.0 0 0.0 0 0.0\n-0.47775697708129883 -0.16048887372016907 -0.2839455306529999 -0.6306039690971375 -0.7760856747627258 -0.0 0.033418744802474976 0.4139173626899719 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 -0.5983458757400513 -0.8012024164199829 -0.0 0.03090190887451172 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 0.21605446934700012 -0.5983458757400513 -0.8012024164199829 -0.0 0.42393144965171814 0.2592355012893677 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 -0.2839455306529999 0.861384928226471 -0.5079195499420166 -0.0 0.09006515145301819 0.7204816341400146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 -0.2839455306529999 0.8354747295379639 -0.5494857430458069 -0.0 0.08910319209098816 0.7242394685745239 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5464097261428833 0.09657105803489685 0.21605446934700012 0.8354747295379639 -0.5494857430458069 -0.0 0.4978945851325989 0.5367259383201599 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299862384796143 0.09615153074264526 -0.2839455306529999 -0.9173253774642944 -0.3980834484100342 -0.0 1.000737190246582 0.7367956042289734 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 -0.2839455306529999 -0.9446699619293213 -0.32795190811157227 -0.0 0.9997917413711548 0.733305811882019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 0.21605446934700012 -0.9446699619293213 -0.32795190811157227 -0.0 0.565342903137207 0.5422323942184448 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 -0.2839455306529999 0.7331461310386658 -0.6800439357757568 -0.0 0.9684454798698425 0.4304148554801941 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 -0.2839455306529999 0.713370144367218 -0.7007355093955994 -0.0 0.9664015173912048 0.43399637937545776 0 1.0 0 0.0 0 0.0 0 0.0\n2.152557611465454 0.026691272854804993 0.21605446934700012 0.713370144367218 -0.7007355093955994 -0.0 0.5119778513908386 0.2717220187187195 0 1.0 0 0.0 0 0.0 0 0.0\n0.4893171787261963 -0.06240437924861908 -0.2839455306529999 -0.7000030279159546 -0.7141026258468628 -0.0 0.9485797882080078 0.49736785888671875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479931592941284 0.49590176343917847 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 0.21605446934700012 -0.7671437859535217 -0.6414380073547363 -0.0 0.5301678776741028 0.33722954988479614 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908179044723511 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939858913421631 0.43456923961639404 0 1.0 0 0.0 0 0.0 0 0.0\n1.4119865894317627 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.476088285446167 0.2709609866142273 0 1.0 0 0.0 0 0.0 0 0.0\n1.4353182315826416 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804263114929199 0.4339858293533325 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838982820510864 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.4892280697822571 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.5518357157707214 -0.8339182734489441 -0.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 -0.2839455306529999 0.6092715263366699 -0.7929319143295288 -0.0 0.9377249479293823 0.4075313210487366 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30427980422973633 -0.16338948905467987 0.21605446934700012 0.6092715263366699 -0.7929319143295288 -0.0 0.5486077070236206 0.2572265863418579 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.7550889849662781 -0.6555986404418945 -0.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 -0.2839455306529999 0.7331461310386658 -0.6800439357757568 -0.0 0.9684454798698425 0.4304148554801941 0 1.0 0 0.0 0 0.0 0 0.0\n2.1491682529449463 0.023147299885749817 0.21605446934700012 0.7331461310386658 -0.6800439357757568 -0.0 0.5095055103302002 0.2678421139717102 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.0342521071434021 0.500602662563324 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 -0.1507309228181839 0.9885555505752563 -0.0 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 0.21605446934700012 -0.1507309228181839 0.9885555505752563 -0.0 0.37793639302253723 0.3555501699447632 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4731268882751465 -0.16409730911254883 -0.2839455306529999 -0.5983458757400513 -0.8012024164199829 -0.0 0.03090190887451172 0.41015708446502686 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 -0.2839455306529999 -0.5647450089454651 -0.825251042842865 -0.0 0.028320401906967163 0.40661054849624634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 0.21605446934700012 -0.5647144913673401 -0.825251042842865 -0.0 0.4268491864204407 0.25484126806259155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 -0.2839455306529999 0.8835108280181885 -0.4683675765991211 -0.0 0.09093481302261353 0.716498613357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 -0.2839455306529999 0.861384928226471 -0.5079195499420166 -0.0 0.09006515145301819 0.7204816341400146 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5483555793762207 0.09344181418418884 0.21605446934700012 0.861384928226471 -0.5079195499420166 -0.0 0.49681398272514343 0.533308744430542 0 1.0 0 0.0 0 0.0 0 0.0\n2.045611619949341 0.022981882095336914 -0.2839455306529999 -0.9606616497039795 0.2776268720626831 -0.0 0.027493685483932495 0.4343390464782715 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 -0.9715872406959534 0.23657947778701782 -0.0 0.02816295623779297 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 0.21605446934700012 -0.9715872406959534 0.23657947778701782 -0.0 0.43155452609062195 0.2721865177154541 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4287214279174805 0.09289336204528809 -0.2839455306529999 -0.9446699619293213 -0.32795190811157227 -0.0 0.9997917413711548 0.733305811882019 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 -0.965117335319519 -0.2617572546005249 -0.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 0.21605446934700012 -0.965117335319519 -0.2617572546005249 -0.0 0.5661900043487549 0.5386909246444702 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 -0.2839455306529999 0.965849757194519 0.25907161831855774 -0.0 0.03346249461174011 0.4952545166015625 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 -0.2839455306529999 0.9716482758522034 0.23630481958389282 -0.0 0.0342521071434021 0.500602662563324 0 1.0 0 0.0 0 0.0 0 0.0\n0.34641003608703613 -0.06275463849306107 0.21605446934700012 0.9716482758522034 0.23630481958389282 -0.0 0.4315919876098633 0.34482550621032715 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908179044723511 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n1.4174449443817139 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802052974700928 0.27031540870666504 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46837782859802246 -0.16749413311481476 -0.2839455306529999 -0.5647450089454651 -0.825251042842865 -0.0 0.028320401906967163 0.40661054849624634 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 -0.5298928618431091 -0.8480483293533325 -0.0 0.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 0.21605445444583893 -0.5298928618431091 -0.8480483293533325 -0.0 0.429933100938797 0.2506728768348694 0 1.0 0 0.0 0 0.0 0 0.0\n0.4904360771179199 -0.06365705281496048 -0.2839455306529999 -0.7671437859535217 -0.6414380073547363 -0.0 0.9479931592941284 0.49590176343917847 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474676847457886 0.49438291788101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 0.21605446934700012 -0.807763934135437 -0.5894650220870972 -0.0 0.5308834910392761 0.33586686849594116 0 1.0 0 0.0 0 0.0 0 0.0\n1.4293491840362549 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838982820510864 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875220060348511 0.43382418155670166 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484500765800476 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.7795037627220154 -0.6263619065284729 -0.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 -0.2839455306529999 0.7550889849662781 -0.6555986404418945 -0.0 0.9702909588813782 0.4270155429840088 0 1.0 0 0.0 0 0.0 0 0.0\n2.1461069583892822 0.019744396209716797 0.21605446934700012 0.7550889849662781 -0.6555986404418945 -0.0 0.5072463750839233 0.26419901847839355 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.9981383681297302 0.06097598373889923 -0.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 -0.2839455306529999 0.9962462186813354 0.08639790117740631 -0.0 0.9367170333862305 0.7098526954650879 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3300057649612427 0.09145823121070862 0.21605446934700012 0.9962462186813354 0.08639790117740631 -0.0 0.6154331564903259 0.5430489778518677 0 1.0 0 0.0 0 0.0 0 0.0\n2.0441157817840576 0.017348498106002808 -0.2839455306529999 -0.9715872406959534 0.23657947778701782 -0.0 0.02816295623779297 0.42897486686706543 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 -0.9803155660629272 0.19730216264724731 -0.0 0.02871173620223999 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 0.21605446934700012 -0.9803155660629272 0.19730216264724731 -0.0 0.4302225410938263 0.26697635650634766 0 1.0 0 0.0 0 0.0 0 0.0\n0.4914577007293701 -0.06496324390172958 -0.2839455306529999 -0.807763934135437 -0.5894650220870972 -0.0 0.9474676847457886 0.49438291788101196 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470030069351196 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 0.21605446934700012 -0.8454847931861877 -0.5339518189430237 -0.0 0.5315372943878174 0.3344380855560303 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.48963895440101624 -0.8719137907028198 -0.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 -0.2839455306529999 0.5518357157707214 -0.8339182734489441 -0.0 0.9424571990966797 0.4015697240829468 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31278467178344727 -0.1694680154323578 0.21605446934700012 0.5518357157707214 -0.8339182734489441 -0.0 0.5431747436523438 0.24967700242996216 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6462346315383911 0.09066042304039001 -0.2839455306529999 -0.17752617597579956 -0.9840998649597168 -0.0 0.14539822936058044 0.6808279752731323 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 -0.2839455306529999 -0.17752617597579956 -0.9840998649597168 -0.0 0.09352043271064758 0.6982331871986389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 0.21605446934700012 -0.17752617597579956 -0.9840998649597168 -0.0 0.4919670522212982 0.5125381350517273 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46350932121276855 -0.17067933082580566 -0.2839455306529999 -0.5298928618431091 -0.8480483293533325 -0.0 0.0256727933883667 0.4032769203186035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 -0.2839455306529999 -0.4940031170845032 -0.86944180727005 -0.0 0.02295824885368347 0.40015560388565063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 0.21605445444583893 -0.4940031170845032 -0.86944180727005 -0.0 0.43318602442741394 0.2467350959777832 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5569175481796265 0.07454833388328552 -0.2839455306529999 0.9379558563232422 -0.34669026732444763 -0.0 0.09352043271064758 0.6982331871986389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 -0.2839455306529999 0.9318826794624329 -0.36271247267723083 -0.0 0.09300467371940613 0.7031583786010742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 0.21605446934700012 0.9318826794624329 -0.36271247267723083 -0.0 0.49286413192749023 0.5172007083892822 0 1.0 0 0.0 0 0.0 0 0.0\n0.4923820495605469 -0.0663229450583458 -0.2839455306529999 -0.8454847931861877 -0.5339518189430237 -0.0 0.9470030069351196 0.4928116202354431 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 0.21605446934700012 -0.8796654939651489 -0.4755394160747528 -0.0 0.5321296453475952 0.33294302225112915 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056793451309204 0.43781161308288574 0 1.0 0 0.0 0 0.0 0 0.0\n1.5777533054351807 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.586573600769043 0.2985709309577942 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 -0.2839455306529999 0.8065431714057922 -0.5911435484886169 -0.0 0.9733879566192627 0.4207465648651123 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 -0.2839455306529999 0.7795037627220154 -0.6263619065284729 -0.0 0.9719381332397461 0.4237942695617676 0 1.0 0 0.0 0 0.0 0 0.0\n2.14337420463562 0.016482576727867126 0.21605446934700012 0.7795037627220154 -0.6263619065284729 -0.0 0.5052080750465393 0.2607806921005249 0 1.0 0 0.0 0 0.0 0 0.0\n1.2661559581756592 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005223631858826 0.44216883182525635 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747478246688843 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38456952571868896 0.296792209148407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.45852184295654297 -0.17365291714668274 -0.2839455306529999 -0.4940031170845032 -0.86944180727005 -0.0 0.02295824885368347 0.40015560388565063 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 -0.4587237238883972 -0.8885769248008728 -0.0 0.020175516605377197 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 0.21605445444583893 -0.4586932063102722 -0.8885769248008728 -0.0 0.43661075830459595 0.24303346872329712 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5553607940673828 0.07875999808311462 -0.2839455306529999 0.9318826794624329 -0.36271247267723083 -0.0 0.09300467371940613 0.7031583786010742 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 -0.2839455306529999 0.9183324575424194 -0.395764023065567 -0.0 0.09240296483039856 0.7078412771224976 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 0.21605446934700012 0.9183324575424194 -0.395764023065567 -0.0 0.49379682540893555 0.5216037034988403 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.8363292217254639 -0.5481734871864319 -0.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 -0.2839455306529999 0.8065431714057922 -0.5911435484886169 -0.0 0.9733879566192627 0.4207465648651123 0 1.0 0 0.0 0 0.0 0 0.0\n2.14096999168396 0.013361826539039612 0.21605446934700012 0.8065431714057922 -0.5911435484886169 -0.0 0.5033973455429077 0.2575761675834656 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30549028515815735 -0.0 0.03258267045021057 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 -0.2839455306529999 0.965849757194519 0.25907161831855774 -0.0 0.03346249461174011 0.4952545166015625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3475508689880371 -0.06744548678398132 0.21605446934700012 0.965849757194519 0.25907161831855774 -0.0 0.43197548389434814 0.3392900228500366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.553726315498352 0.0827551782131195 -0.2839455306529999 0.9183324575424194 -0.395764023065567 -0.0 0.09240296483039856 0.7078412771224976 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 -0.2839455306529999 0.9023407697677612 -0.430982381105423 -0.0 0.09171348810195923 0.7122865319252014 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 0.21605446934700012 0.9023407697677612 -0.430982381105423 -0.0 0.4947656989097595 0.5257526636123657 0 1.0 0 0.0 0 0.0 0 0.0\n2.0428192615509033 0.01150105893611908 -0.2839455306529999 -0.9803155660629272 0.19730216264724731 -0.0 0.02871173620223999 0.4234986901283264 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 -0.9871211647987366 0.1598559468984604 -0.0 0.029142290353775024 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 0.21605446934700012 -0.9871211647987366 0.1598559468984604 -0.0 0.4289977252483368 0.2616328001022339 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081575274467468 0.43117111921310425 0 1.0 0 0.0 0 0.0 0 0.0\n1.5733020305633545 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848955512046814 0.2907964587211609 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.42332223057746887 -0.9059419631958008 -0.0 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 -0.2839455306529999 0.48963895440101624 -0.8719137907028198 -0.0 0.9473295211791992 0.39633166790008545 0 1.0 0 0.0 0 0.0 0 0.0\n-0.32155942916870117 -0.17483140528202057 0.21605445444583893 0.48963895440101624 -0.8719137907028198 -0.0 0.5372918844223022 0.24292826652526855 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714438334107399 -0.0 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.895166277885437 0.4902169108390808 0 1.0 0 0.0 0 0.0 0 0.0\n0.5950965881347656 -0.06765832006931305 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.589170515537262 0.35480374097824097 0 1.0 0 0.0 0 0.0 0 0.0\n1.2711994647979736 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747478246688843 0.4355006217956543 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470900774002075 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.3866134285926819 0.2890600562095642 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4534149169921875 -0.17641489207744598 -0.2839455306529999 -0.4587237238883972 -0.8885769248008728 -0.0 0.020175516605377197 0.3972463607788086 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 -0.2839455306529999 -0.42536699771881104 -0.904995858669281 -0.0 0.01735299825668335 0.39455825090408325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 0.21605445444583893 -0.42536699771881104 -0.904995858669281 -0.0 0.4401699900627136 0.23959076404571533 0 1.0 0 0.0 0 0.0 0 0.0\n-1.552013874053955 0.08653387427330017 -0.2839455306529999 0.9023407697677612 -0.430982381105423 -0.0 0.09171348810195923 0.7122865319252014 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 -0.2839455306529999 0.8835108280181885 -0.4683675765991211 -0.0 0.09093481302261353 0.716498613357544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.550223708152771 0.09009608626365662 0.21605446934700012 0.8835108280181885 -0.4683675765991211 -0.0 0.495771199464798 0.5296525955200195 0 1.0 0 0.0 0 0.0 0 0.0\n0.4932091236114502 -0.06773615628480911 -0.2839455306529999 -0.8796654939651489 -0.4755394160747528 -0.0 0.9465987682342529 0.4911881685256958 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.946254312992096 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 0.21605446934700012 -0.9097872972488403 -0.41502121090888977 -0.0 0.5326606631278992 0.33138126134872437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4276511669158936 0.08940896391868591 -0.2839455306529999 -0.965117335319519 -0.2617572546005249 -0.0 0.999001681804657 0.7295677661895752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 -0.2839455306529999 -0.9797357320785522 -0.20014038681983948 -0.0 0.9983647465705872 0.7255765199661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 0.21605446934700012 -0.9797357320785522 -0.20014038681983948 -0.0 0.5669488906860352 0.5348721742630005 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 -0.2839455306529999 0.868739902973175 -0.49525436758995056 -0.0 0.9757001996040344 0.4151532053947449 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 -0.2839455306529999 0.8363292217254639 -0.5481734871864319 -0.0 0.9746416807174683 0.4178677797317505 0 1.0 0 0.0 0 0.0 0 0.0\n2.1388938426971436 0.010382160544395447 0.21605446934700012 0.8363292217254639 -0.5481734871864319 -0.0 0.5018196105957031 0.2545742988586426 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4482426643371582 -0.17896036803722382 -0.2839455306529999 -0.42536699771881104 -0.904995858669281 -0.0 0.01735299825668335 0.39455825090408325 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 -0.39213234186172485 -0.9198889136314392 -0.0 0.014519035816192627 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 0.21605445444583893 -0.39213234186172485 -0.9198889136314392 -0.0 0.4438236653804779 0.23642700910568237 0 1.0 0 0.0 0 0.0 0 0.0\n0.4939389228820801 -0.06920288503170013 -0.2839455306529999 -0.9097872972488403 -0.41502121090888977 -0.0 0.946254312992096 0.48951268196105957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35319072008132935 -0.0 0.9459694027900696 0.4877854585647583 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 0.21605446934700012 -0.9355449080467224 -0.35319072008132935 -0.0 0.5331304669380188 0.3297528028488159 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.91089928150177 0.42470550537109375 0 1.0 0 0.0 0 0.0 0 0.0\n1.5682575702667236 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828350782394409 0.28305596113204956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.426775574684143 0.08569836616516113 -0.2839455306529999 -0.9797357320785522 -0.20014038681983948 -0.0 0.9983647465705872 0.7255765199661255 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 -0.9896542429924011 -0.143314927816391 -0.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 0.21605446934700012 -0.9896542429924011 -0.143314927816391 -0.0 0.5676197409629822 0.5307688117027283 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.9028900861740112 -0.4298532009124756 -0.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 -0.2839455306529999 0.868739902973175 -0.49525436758995056 -0.0 0.9757001996040344 0.4151532053947449 0 1.0 0 0.0 0 0.0 0 0.0\n2.137146234512329 0.0075435638427734375 0.21605446934700012 0.868739902973175 -0.49525436758995056 -0.0 0.5004804134368896 0.2517651915550232 0 1.0 0 0.0 0 0.0 0 0.0\n1.2766687870025635 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470900774002075 0.4290871024131775 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 -0.7042451500892639 -0.7099520564079285 -0.0 0.06174764037132263 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 0.21605446934700012 -0.7042451500892639 -0.7099520564079285 -0.0 0.38898372650146484 0.2814762592315674 0 1.0 0 0.0 0 0.0 0 0.0\n2.041722059249878 0.00543956458568573 -0.2839455306529999 -0.9871211647987366 0.1598559468984604 -0.0 0.029142290353775024 0.4179196357727051 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 -0.9922177791595459 0.12427137047052383 -0.0 0.029456526041030884 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 0.21605446934700012 -0.9922177791595459 0.12427137047052383 -0.0 0.42788001894950867 0.25616389513015747 0 1.0 0 0.0 0 0.0 0 0.0\n0.4945714473724365 -0.07072312384843826 -0.2839455306529999 -0.9355449080467224 -0.35319072008132935 -0.0 0.9459694027900696 0.4877854585647583 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.9457437992095947 0.48600679636001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 0.21605446934700012 -0.9567247629165649 -0.29096347093582153 -0.0 0.5335390567779541 0.3280574083328247 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.35386210680007935 -0.9352702498435974 -0.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 -0.2839455306529999 0.42332223057746887 -0.9059419631958008 -0.0 0.9523460268974304 0.3918129801750183 0 1.0 0 0.0 0 0.0 0 0.0\n-0.33060407638549805 -0.1794796884059906 0.21605445444583893 0.42332223057746887 -0.9059419631958008 -0.0 0.5309553146362305 0.2370031476020813 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4430580139160156 -0.18128451704978943 -0.2839455306529999 -0.39213234186172485 -0.9198889136314392 -0.0 0.014519035816192627 0.3920992612838745 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 -0.2839455306529999 -0.3574633002281189 -0.9338968992233276 -0.0 0.01167386770248413 0.38986819982528687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 0.21605445444583893 -0.3574327826499939 -0.9338968992233276 -0.0 0.447567880153656 0.23354434967041016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.999237060546875 0.03839228302240372 -0.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 -0.2839455306529999 0.9981383681297302 0.06097598373889923 -0.0 0.9370471835136414 0.7014241814613342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293672800064087 0.08272477984428406 0.21605446934700012 0.9981383681297302 0.06097598373889923 -0.0 0.6166341304779053 0.5349475145339966 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.6964018940925598 -0.7176427245140076 -0.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139140844345093 0.41840875148773193 0 1.0 0 0.0 0 0.0 0 0.0\n1.5626189708709717 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803644061088562 0.27534836530685425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42609441280365 0.08176156878471375 -0.2839455306529999 -0.9896542429924011 -0.143314927816391 -0.0 0.9978780746459961 0.7213261127471924 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 -0.2839455306529999 -0.9958189725875854 -0.09121982753276825 -0.0 0.9975391626358032 0.7168097496032715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 0.21605446934700012 -0.9958189725875854 -0.09121982753276825 -0.0 0.5682021379470825 0.5263727903366089 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 -0.2839455306529999 0.9330118894577026 -0.35981321334838867 -0.0 0.9773029088973999 0.4099716544151306 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 -0.2839455306529999 0.9028900861740112 -0.4298532009124756 -0.0 0.9765651226043701 0.4125983715057373 0 1.0 0 0.0 0 0.0 0 0.0\n2.1357266902923584 0.004846066236495972 0.21605446934700012 0.9028900861740112 -0.4298532009124756 -0.0 0.49938392639160156 0.2491394281387329 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35374003648757935 -0.0 0.031612515449523926 0.4852878451347351 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 -0.2839455306529999 0.9521775245666504 0.30549028515815735 -0.0 0.03258267045021057 0.49015122652053833 0 1.0 0 0.0 0 0.0 0 0.0\n0.34887170791625977 -0.07194417715072632 0.21605446934700012 0.9521775245666504 0.30549028515815735 -0.0 0.432491660118103 0.33396750688552856 0 1.0 0 0.0 0 0.0 0 0.0\n1.2825636863708496 -0.14473800361156464 -0.2839455306529999 -0.7042451500892639 -0.7099520564079285 -0.0 0.06174764037132263 0.42292261123657227 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.05858275294303894 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.3917032480239868 0.2740423083305359 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43786120414733887 -0.18338730931282043 -0.2839455306529999 -0.3574633002281189 -0.9338968992233276 -0.0 0.01167386770248413 0.38986819982528687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 -0.32142093777656555 -0.9469283223152161 -0.0 0.008817553520202637 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 0.21605445444583893 -0.32139042019844055 -0.9469283223152161 -0.0 0.4513981342315674 0.23094463348388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.49510645866394043 -0.0722968727350235 -0.2839455306529999 -0.9567247629165649 -0.29096347093582153 -0.0 0.9457437992095947 0.48600679636001587 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455769062042236 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 0.21605446934700012 -0.9733573198318481 -0.2292550504207611 -0.0 0.5338865518569946 0.3262951970100403 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256080389022827 0.07759854197502136 -0.2839455306529999 -0.9958189725875854 -0.09121982753276825 -0.0 0.9975391626358032 0.7168097496032715 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 -0.9990233778953552 -0.04370250552892685 -0.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 0.21605446934700012 -0.9990233778953552 -0.04370250552892685 -0.0 0.5686959028244019 0.5216755270957947 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.9549241662025452 -0.29682302474975586 -0.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 -0.2839455306529999 0.9330118894577026 -0.35981321334838867 -0.0 0.9773029088973999 0.4099716544151306 0 1.0 0 0.0 0 0.0 0 0.0\n2.134528875350952 0.0020464062690734863 0.21605446934700012 0.9330118894577026 -0.35981321334838867 -0.0 0.49845102429389954 0.24645698070526123 0 1.0 0 0.0 0 0.0 0 0.0\n2.0408246517181396 -0.0008359700441360474 -0.2839455306529999 -0.9922177791595459 0.12427137047052383 -0.0 0.029456526041030884 0.4122468829154968 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 -0.9958800077438354 0.09057893604040146 -0.0 0.029656797647476196 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 0.21605446934700012 -0.9958800077438354 0.09057893604040146 -0.0 0.4268689751625061 0.2505781054496765 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955441951751709 -0.07392413169145584 -0.2839455306529999 -0.9733573198318481 -0.2292550504207611 -0.0 0.9455769062042236 0.4841769337654114 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454684257507324 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 0.21605446934700012 -0.9856258034706116 -0.16876736283302307 -0.0 0.5341729521751404 0.32446593046188354 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 -0.2839455306529999 0.6964018940925598 -0.7176427245140076 -0.0 0.9172113537788391 0.4122779965400696 0 1.0 0 0.0 0 0.0 0 0.0\n1.556387186050415 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774527788162231 0.2676782011985779 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.28241828083992004 -0.9592882990837097 -0.0 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 -0.2839455306529999 0.35386210680007935 -0.9352702498435974 -0.0 0.957510232925415 0.3880120515823364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.339918851852417 -0.1834128499031067 0.21605445444583893 0.35386210680007935 -0.9352702498435974 -0.0 0.5241689682006836 0.2319294810295105 0 1.0 0 0.0 0 0.0 0 0.0\n1.288883924484253 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.05858275294303894 0.41700345277786255 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.05520591139793396 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947977125644684 0.26676273345947266 0 1.0 0 0.0 0 0.0 0 0.0\n-0.43265223503112793 -0.18526874482631683 -0.2839455306529999 -0.32142093777656555 -0.9469283223152161 -0.0 0.008817553520202637 0.3878638744354248 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 -0.2840968072414398 -0.9587695002555847 -0.0 0.005950242280960083 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 0.21605445444583893 -0.2840968072414398 -0.9587695002555847 -0.0 0.4553092122077942 0.22862982749938965 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.99981689453125 0.01825006864964962 -0.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 -0.2839455306529999 0.999237060546875 0.03839228302240372 -0.0 0.9375044107437134 0.6923645734786987 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3289111852645874 0.07343429327011108 0.21605446934700012 0.999237060546875 0.03839228302240372 -0.0 0.6178270578384399 0.526172935962677 0 1.0 0 0.0 0 0.0 0 0.0\n0.49588465690612793 -0.07560490816831589 -0.2839455306529999 -0.9856258034706116 -0.16876736283302307 -0.0 0.9454684257507324 0.4822959899902344 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 0.21605446934700012 -0.9938963055610657 -0.11014129966497421 -0.0 0.534398078918457 0.32256996631622314 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253160953521729 0.07320931553840637 -0.2839455306529999 -0.9990233778953552 -0.04370250552892685 -0.0 0.9973450899124146 0.7120200395584106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 -0.2839455306529999 -0.99993896484375 -0.010528885759413242 -0.0 0.9972931146621704 0.7069487571716309 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 0.21605446934700012 -0.99993896484375 -0.010528885759413242 -0.0 0.5691002607345581 0.5166683197021484 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 -0.2839455306529999 0.9700918793678284 -0.24265266954898834 -0.0 0.9785953760147095 0.40384650230407715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 -0.2839455306529999 0.9549241662025452 -0.29682302474975586 -0.0 0.9779797792434692 0.4070509076118469 0 1.0 0 0.0 0 0.0 0 0.0\n2.1334450244903564 -0.0010986626148223877 0.21605446934700012 0.9549241662025452 -0.29682302474975586 -0.0 0.49759870767593384 0.24348896741867065 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208014011383057 0.4063137173652649 0 1.0 0 0.0 0 0.0 0 0.0\n1.5495622158050537 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740647315979004 0.2600557804107666 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.21015045046806335 -0.9776604771614075 -0.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 -0.2839455306529999 0.28241828083992004 -0.9592882990837097 -0.0 0.9628244638442993 0.384929358959198 0 1.0 0 0.0 0 0.0 0 0.0\n-0.349503755569458 -0.18663088977336884 0.21605445444583893 0.28241828083992004 -0.9592882990837097 -0.0 0.5169462561607361 0.2277390956878662 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.06859388947486877 -0.2839455306529999 -0.99993896484375 -0.010528885759413242 -0.0 0.9972931146621704 0.7069487571716309 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 -1.0 0.0 -0.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 0.21605446934700012 -1.0 0.0 -0.0 0.5698535442352295 0.5058304071426392 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.9805902242660522 -0.19598986208438873 -0.0 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 -0.2839455306529999 0.9700918793678284 -0.24265266954898834 -0.0 0.9785953760147095 0.40384650230407715 0 1.0 0 0.0 0 0.0 0 0.0\n2.1324756145477295 -0.0045891255140304565 0.21605446934700012 0.9700918793678284 -0.24265266954898834 -0.0 0.4968274235725403 0.24024468660354614 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14481033384799957 -0.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 -0.2839455306529999 0.9974364638328552 -0.0714438334107399 -0.0 0.8959649205207825 0.4819793105125427 0 1.0 0 0.0 0 0.0 0 0.0\n0.5947997570037842 -0.07608164846897125 0.21605446934700012 0.9974364638328552 -0.0714438334107399 -0.0 0.589691162109375 0.3464645743370056 0 1.0 0 0.0 0 0.0 0 0.0\n1.2956302165985107 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.05520591139793396 0.4113277792930603 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.05160874128341675 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.3982948064804077 0.2596473693847656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4274311065673828 -0.186928853392601 -0.2839455306529999 -0.2840968072414398 -0.9587695002555847 -0.0 0.005950242280960083 0.38608503341674805 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 -0.2839455306529999 -0.2456129640340805 -0.9693593978881836 -0.0 0.0030720531940460205 0.38453078269958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 0.21605445444583893 -0.2456129640340805 -0.9693593978881836 -0.0 0.4592951536178589 0.22660183906555176 0 1.0 0 0.0 0 0.0 0 0.0\n2.0401265621185303 -0.007325559854507446 -0.2839455306529999 -0.9958800077438354 0.09057893604040146 -0.0 0.029656797647476196 0.4064900279045105 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 -0.9982604384422302 0.05868709459900856 -0.0 0.029745280742645264 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 0.21605446934700012 -0.9982604384422302 0.05868709459900856 -0.0 0.4259648323059082 0.244884192943573 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.9149448871612549 0.4035462439060211 -0.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 -0.2839455306529999 0.9353312849998474 0.35374003648757935 -0.0 0.031612515449523926 0.4852878451347351 0 1.0 0 0.0 0 0.0 0 0.0\n0.3503725528717041 -0.07625070214271545 0.21605446934700012 0.9353312849998474 0.35374003648757935 -0.0 0.43314307928085327 0.3288540244102478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4221978187561035 -0.18836760520935059 -0.2839455306529999 -0.2456129640340805 -0.9693593978881836 -0.0 0.0030720531940460205 0.38453078269958496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 -0.2061220109462738 -0.9785149693489075 -0.0 0.0001831650733947754 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 0.21605445444583893 -0.2061525285243988 -0.9785149693489075 -0.0 0.46334928274154663 0.22486257553100586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 1.0 -0.0001831110566854477 -0.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 -0.2839455306529999 0.99981689453125 0.01825006864964962 -0.0 0.9380841851234436 0.6826471090316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3286374807357788 0.06358680129051208 0.21605446934700012 0.99981689453125 0.01825006864964962 -0.0 0.6190141439437866 0.5166995525360107 0 1.0 0 0.0 0 0.0 0 0.0\n0.4961278438568115 -0.07733919471502304 -0.2839455306529999 -0.9938963055610657 -0.11014129966497421 -0.0 0.945418119430542 0.4803643226623535 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454255104064941 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 0.21605446934700012 -0.9985350966453552 -0.05386516824364662 -0.0 0.5345618724822998 0.3206072449684143 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246799349784851 0.40065109729766846 0 1.0 0 0.0 0 0.0 0 0.0\n1.5421555042266846 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701556205749512 0.25263315439224243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 0.05878652632236481 -0.2839455306529999 -0.36930447816848755 0.9292886257171631 -0.0 0.9973304867744446 0.6960070133209229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 -0.2839455306529999 -0.35322123765945435 0.9355143904685974 -0.0 1.0006707906723022 0.6942631006240845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 0.21605446934700012 -0.35322123765945435 0.9355143904685974 -0.0 0.5672665238380432 0.5033541917800903 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 -0.2839455306529999 0.9877620935440063 -0.15576647222042084 -0.0 0.9796422719955444 0.39663392305374146 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 -0.2839455306529999 0.9805902242660522 -0.19598986208438873 -0.0 0.9791495203971863 0.40036994218826294 0 1.0 0 0.0 0 0.0 0 0.0\n2.1316206455230713 -0.00842498242855072 0.21605446934700012 0.9805902242660522 -0.19598986208438873 -0.0 0.49613747000694275 0.23673486709594727 0 1.0 0 0.0 0 0.0 0 0.0\n1.302802324295044 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.05160874128341675 0.40589576959609985 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781914472579956 0.40075987577438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.40223488211631775 0.2527579665184021 0 1.0 0 0.0 0 0.0 0 0.0\n0.2476358413696289 -0.0778159350156784 -0.2839455306529999 -0.9610888957977295 -0.2762230336666107 -0.0 0.08192101120948792 0.4880308508872986 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 0.21605446934700012 -0.9530014991760254 -0.3029267191886902 -0.0 0.3781566917896271 0.346591055393219 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.13834039866924286 -0.9903561472892761 -0.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 -0.2839455306529999 0.21015045046806335 -0.9776604771614075 -0.0 0.968289852142334 0.38256824016571045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.359358549118042 -0.18913380801677704 0.21605445444583893 0.21015045046806335 -0.9776604771614075 -0.0 0.5093119740486145 0.224467933177948 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4299498796463013 0.056906312704086304 -0.2839455306529999 -0.35322123765945435 0.9355143904685974 -0.0 1.0006707906723022 0.6942631006240845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 -0.2839455306529999 -0.3237403631210327 0.9461348056793213 -0.0 1.0044422149658203 0.692439079284668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 0.21605446934700012 -0.3237403631210327 0.9461348056793213 -0.0 0.5643073916435242 0.5007731914520264 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.9926450252532959 -0.12082277983427048 -0.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 -0.2839455306529999 0.9877620935440063 -0.15576647222042084 -0.0 0.9796422719955444 0.39663392305374146 0 1.0 0 0.0 0 0.0 0 0.0\n2.130880117416382 -0.012606248259544373 0.21605446934700012 0.9877620935440063 -0.15576647222042084 -0.0 0.4955292344093323 0.23297131061553955 0 1.0 0 0.0 0 0.0 0 0.0\n1.3104074001312256 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781914472579956 0.40075987577438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 -0.4602191150188446 -0.8877834677696228 -0.0 0.04371529817581177 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 0.21605445444583893 -0.4602191150188446 -0.8877834677696228 -0.0 0.40666019916534424 0.24616098403930664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.41695237159729004 -0.18958501517772675 -0.2839455306529999 -0.2061220109462738 -0.9785149693489075 -0.0 1.00018310546875 0.38320016860961914 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 -0.2839455306529999 -0.1658070683479309 -0.9861446022987366 -0.0 0.9972836971282959 0.3820924758911133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 0.21605445444583893 -0.1658070683479309 -0.9861446022987366 -0.0 1.4674643278121948 0.22341382503509521 0 1.0 0 0.0 0 0.0 0 0.0\n2.03962779045105 -0.014029204845428467 -0.2839455306529999 -0.9982604384422302 0.05868709459900856 -0.0 0.029745280742645264 0.40065884590148926 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 -0.99957275390625 0.02856532484292984 -0.0 0.029723763465881348 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 0.21605446934700012 -0.99957275390625 0.02856532484292984 -0.0 0.42516839504241943 0.23909145593643188 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962737560272217 -0.0791269913315773 -0.2839455306529999 -0.9985350966453552 -0.05386516824364662 -0.0 0.9454255104064941 0.4783821105957031 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454903602600098 0.4763496518135071 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 0.21605446934700012 -0.999969482421875 0.00357066560536623 -0.0 0.5346640348434448 0.31857800483703613 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4352694749832153 0.05500175058841705 -0.2839455306529999 -0.3237403631210327 0.9461348056793213 -0.0 1.0044422149658203 0.692439079284668 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 -0.29914242029190063 0.9541917443275452 -0.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 0.21605446934700012 -0.29914242029190063 0.9541917443275452 -0.0 0.5609673261642456 0.49808448553085327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4116947650909424 -0.1905810683965683 -0.2839455306529999 -0.1658070683479309 -0.9861446022987366 -0.0 0.9972836971282959 0.3820924758911133 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 -0.12482070177793503 -0.9921567440032959 -0.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 0.21605445444583893 -0.12482070177793503 -0.9921567440032959 -0.0 1.471632480621338 0.2222573161125183 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288433790206909 0.39542311429977417 0 1.0 0 0.0 0 0.0 0 0.0\n1.534179925918579 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656803846359253 0.2455642819404602 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.9959105253219604 -0.09027375280857086 -0.0 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 -0.2839455306529999 0.9926450252532959 -0.12082277983427048 -0.0 0.9800739884376526 0.3926522135734558 0 1.0 0 0.0 0 0.0 0 0.0\n2.130253553390503 -0.01713290810585022 0.21605446934700012 0.9926450252532959 -0.12082277983427048 -0.0 0.49500298500061035 0.22896718978881836 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4544816315174103 -0.0 0.02939966320991516 0.47626161575317383 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 -0.2839455306529999 0.9149448871612549 0.4035462439060211 -0.0 0.030551671981811523 0.48065948486328125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3520534038543701 -0.08036507666110992 0.21605446934700012 0.9149448871612549 0.4035462439060211 -0.0 0.43393248319625854 0.3239459991455078 0 1.0 0 0.0 0 0.0 0 0.0\n1.3184521198272705 -0.1709468960762024 -0.2839455306529999 -0.4602191150188446 -0.8877834677696228 -0.0 0.04371529817581177 0.3959727883338928 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 -0.4050111472606659 -0.9142735004425049 -0.0 0.03939896821975708 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 0.21605445444583893 -0.4050111472606659 -0.9142735004425049 -0.0 0.41160446405410767 0.23988109827041626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.999969482421875 -0.0025025177747011185 -0.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 -0.2839455306529999 1.0 -0.0001831110566854477 -0.0 0.9387819170951843 0.6722474098205566 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3285462856292725 0.053182318806648254 0.21605446934700012 0.999969482421875 -0.0001831110566854477 -0.0 0.6201977729797363 0.5065033435821533 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393288135528564 -0.020946890115737915 -0.2839455306529999 -0.99957275390625 0.02856532484292984 -0.0 0.029723763465881348 0.39476317167282104 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 -0.999969482421875 0.005493331700563431 -0.0 0.029594451189041138 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 0.21605446934700012 -0.999969482421875 0.005493331700563431 -0.0 0.4244801998138428 0.23320960998535156 0 1.0 0 0.0 0 0.0 0 0.0\n0.4963223934173584 -0.08096829801797867 -0.2839455306529999 -0.999969482421875 0.00357066560536623 -0.0 0.9454903602600098 0.4763496518135071 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456760883331299 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 0.21605446934700012 -0.9976500868797302 0.06833094358444214 -0.0 0.534707248210907 0.3155941367149353 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.06811731308698654 -0.9976500868797302 -0.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 -0.2839455306529999 0.13834039866924286 -0.9903561472892761 -0.0 0.9739063382148743 0.38093429803848267 0 1.0 0 0.0 0 0.0 0 0.0\n-0.36948323249816895 -0.1909216046333313 0.21605445444583893 0.13834039866924286 -0.9903561472892761 -0.0 0.5013026595115662 0.22215431928634644 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4411777257919312 0.05307286977767944 -0.2839455306529999 -0.29914242029190063 0.9541917443275452 -0.0 1.0086486339569092 0.6905044317245483 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 -0.2839455306529999 -0.2783593237400055 0.9604480266571045 -0.0 1.0132920742034912 0.6884256601333618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 0.21605446934700012 -0.2783593237400055 0.9604480266571045 -0.0 0.5572380423545837 0.495286762714386 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40642499923706055 -0.19135577976703644 -0.2839455306529999 -0.12482070177793503 -0.9921567440032959 -0.0 0.9943739771842957 0.3812071681022644 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 -0.2839455306529999 -0.08340708911418915 -0.9964903593063354 -0.0 0.9914541840553284 0.38054370880126953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 0.21605445444583893 -0.08340708911418915 -0.9964903593063354 -0.0 1.4758449792861938 0.2213945984840393 0 1.0 0 0.0 0 0.0 0 0.0\n0.4962317943572998 -0.08366581052541733 -0.2839455306529999 -0.9976500868797302 0.06833094358444214 -0.0 0.9456760883331299 0.4733878970146179 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13974425196647644 -0.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 0.21605446934700012 -0.9901730418205261 0.13974425196647644 -0.0 0.5346280336380005 0.31269896030426025 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333043694496155 0.3906322121620178 0 1.0 0 0.0 0 0.0 0 0.0\n1.525635004043579 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605970621109009 0.238874614238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4476746320724487 0.051119670271873474 -0.2839455306529999 -0.2783593237400055 0.9604480266571045 -0.0 1.0132920742034912 0.6884256601333618 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 -0.2839455306529999 -0.2605975568294525 0.965422511100769 -0.0 1.0183712244033813 0.6861664056777954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 0.21605446934700012 -0.2605975568294525 0.965422511100769 -0.0 0.5531123876571655 0.4923807382583618 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 -0.2839455306529999 0.9979857802391052 -0.0634174644947052 -0.0 0.980755090713501 0.38401156663894653 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 -0.2839455306529999 0.9959105253219604 -0.09027375280857086 -0.0 0.9804447889328003 0.3884395360946655 0 1.0 0 0.0 0 0.0 0 0.0\n2.1297414302825928 -0.02200496196746826 0.21605446934700012 0.9959105253219604 -0.09027375280857086 -0.0 0.4945599436759949 0.22473657131195068 0 1.0 0 0.0 0 0.0 0 0.0\n1.3269374370574951 -0.17501384019851685 -0.2839455306529999 -0.4050111472606659 -0.9142735004425049 -0.0 0.03939896821975708 0.3915392756462097 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.0348239541053772 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710081696510315 0.2339511513710022 0 1.0 0 0.0 0 0.0 0 0.0\n-0.40114307403564453 -0.19190914928913116 -0.2839455306529999 -0.08340708911418915 -0.9964903593063354 -0.0 0.9914541840553284 0.38054370880126953 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 -0.2839455306529999 -0.041718803346157074 -0.999114990234375 -0.0 0.9885245561599731 0.38010191917419434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 0.21605445444583893 -0.041718803346157074 -0.999114990234375 -0.0 1.480093002319336 0.2208271622657776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547600746154785 0.04914213716983795 -0.2839455306529999 -0.2605975568294525 0.965422511100769 -0.0 1.0183712244033813 0.6861664056777954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 -0.2839455306529999 -0.2452772557735443 0.9694204330444336 -0.0 1.0238808393478394 0.6836882829666138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 0.21605446934700012 -0.2452772557735443 0.9694204330444336 -0.0 0.5485851168632507 0.48936909437179565 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.99920654296875 -0.0397351011633873 -0.0 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 -0.2839455306529999 0.9979857802391052 -0.0634174644947052 -0.0 0.980755090713501 0.38401156663894653 0 1.0 0 0.0 0 0.0 0 0.0\n2.1293437480926514 -0.027222424745559692 0.21605446934700012 0.9979857802391052 -0.0634174644947052 -0.0 0.4942011833190918 0.2202945351600647 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 -0.2839455306529999 0.8907132148742676 0.4544816315174103 -0.0 0.02939966320991516 0.47626161575317383 0 1.0 0 0.0 0 0.0 0 0.0\n0.3539142608642578 -0.08428728580474854 0.21605446934700012 0.8907132148742676 0.4544816315174103 -0.0 0.4348626732826233 0.3192404508590698 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39584898948669434 -0.19224116206169128 -0.2839455306529999 -0.041718803346157074 -0.999114990234375 -0.0 0.9885245561599731 0.38010191917419434 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 -0.2839455306529999 0.006317331455647945 -0.999969482421875 -0.0 0.9855853915214539 0.37988173961639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 0.21605445444583893 0.006317331455647945 -0.999969482421875 -0.0 1.4843671321868896 0.22055619955062866 0 1.0 0 0.0 0 0.0 0 0.0\n2.039229154586792 -0.028078630566596985 -0.2839455306529999 -0.999969482421875 0.005493331700563431 -0.0 0.029594451189041138 0.38881319761276245 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 -0.2839455306529999 -0.999969482421875 -0.005005035549402237 -0.0 0.02957293391227722 0.3881494998931885 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 0.21605446934700012 -0.999969482421875 -0.005005035549402237 -0.0 0.4244113266468048 0.23255091905593872 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380753040313721 0.3862854242324829 0 1.0 0 0.0 0 0.0 0 0.0\n1.5165207386016846 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.554863452911377 0.23260116577148438 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39054274559020996 -0.19235184788703918 -0.2839455306529999 0.006317331455647945 -0.999969482421875 -0.0 0.9855853915214539 0.37988173961639404 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 -0.2839455306529999 0.06811731308698654 -0.9976500868797302 -0.0 0.9796726107597351 0.38003551959991455 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37987804412841797 -0.19199427962303162 0.21605445444583893 0.06811731308698654 -0.9976500868797302 -0.0 0.49296727776527405 0.22083759307861328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.46243417263031 0.04714028537273407 -0.2839455306529999 -0.2452772557735443 0.9694204330444336 -0.0 1.0238808393478394 0.6836882829666138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 -0.2839455306529999 -0.23191015422344208 0.9727164506912231 -0.0 1.029810905456543 0.6809518337249756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 0.21605446934700012 -0.23191015422344208 0.9727164506912231 -0.0 0.5436533093452454 0.4862578511238098 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 -0.2839455306529999 0.9894406199455261 -0.14481033384799957 -0.0 0.8969942331314087 0.47402477264404297 0 1.0 0 0.0 0 0.0 0 0.0\n0.593909502029419 -0.0843055248260498 0.21605446934700012 0.9894406199455261 -0.14481033384799957 -0.0 0.5899292230606079 0.3382599353790283 0 1.0 0 0.0 0 0.0 0 0.0\n1.3358633518218994 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.0348239541053772 0.38746732473373413 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.02998247742652893 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 0.21605445444583893 -0.29874569177627563 -0.9543138146400452 -0.0 0.4231798052787781 0.22841310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 -0.2839455306529999 -1.0 0.0 -0.0 0.9500210285186768 0.8827873468399048 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 -1.0 0.0 -0.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 0.21605446934700012 -1.0 0.0 -0.0 0.5881415009498596 0.5820229053497314 0 1.0 0 0.0 0 0.0 0 0.0\n2.039231538772583 -0.028883740305900574 -0.2839455306529999 -0.999969482421875 -0.005005035549402237 -0.0 0.02957293391227722 0.3881494998931885 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 -0.2839455306529999 -0.99993896484375 -0.008575701154768467 -0.0 0.029543757438659668 0.387315571308136 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 0.21605446934700012 -0.99993896484375 -0.008575701154768467 -0.0 0.4243272542953491 0.23172283172607422 0 1.0 0 0.0 0 0.0 0 0.0\n0.49596190452575684 -0.08627089112997055 -0.2839455306529999 -0.9901730418205261 0.13974425196647644 -0.0 0.9459569454193115 0.47054433822631836 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2142094224691391 -0.0 0.9463331699371338 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 0.21605446934700012 -0.9767754077911377 0.2142094224691391 -0.0 0.5344247221946716 0.30989009141921997 0 1.0 0 0.0 0 0.0 0 0.0\n-1.470697045326233 0.04511411488056183 -0.2839455306529999 -0.23191015422344208 0.9727164506912231 -0.0 1.029810905456543 0.6809518337249756 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 -0.2839455306529999 -0.22016052901744843 0.9754325747489929 -0.0 1.0361446142196655 0.6779175996780396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 0.21605446934700012 -0.22016052901744843 0.9754325747489929 -0.0 0.5383179187774658 0.4830561876296997 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.8878573775291443 0.842465877532959 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 -0.2839455306529999 0.0 1.0 -0.0 0.9500210285186768 0.8827873468399048 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.32953959703445435 0.21605446934700012 0.0 1.0 -0.0 0.5745580792427063 0.6996983289718628 0 1.0 0 0.0 0 0.0 0 0.0\n2.039238691329956 -0.02989804744720459 -0.2839455306529999 -0.99993896484375 -0.008575701154768467 -0.0 0.029543757438659668 0.387315571308136 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 -0.2839455306529999 -0.999908447265625 -0.01104770042002201 -0.0 0.029506683349609375 0.386313259601593 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 0.21605446934700012 -0.99993896484375 -0.01104770042002201 -0.0 0.4242281913757324 0.2307267189025879 0 1.0 0 0.0 0 0.0 0 0.0\n0.2501254081726074 -0.08647764474153519 -0.2839455306529999 -0.9530014991760254 -0.3029267191886902 -0.0 0.08034408092498779 0.4796344041824341 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 0.21605446934700012 -0.9342631101608276 -0.3565477430820465 -0.0 0.3786012530326843 0.3378404974937439 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431672096252441 0.38239455223083496 0 1.0 0 0.0 0 0.0 0 0.0\n1.5068376064300537 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484396815299988 0.22679340839385986 0 1.0 0 0.0 0 0.0 0 0.0\n-1.479548454284668 0.043063610792160034 -0.2839455306529999 -0.22016052901744843 0.9754325747489929 -0.0 1.0361446142196655 0.6779175996780396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 -0.2839455306529999 -0.20975372195243835 0.9777215123176575 -0.0 0.042858511209487915 0.6745481491088867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 0.21605446934700012 -0.20975372195243835 0.9777215123176575 -0.0 0.5325842499732971 0.47977715730667114 0 1.0 0 0.0 0 0.0 0 0.0\n1.345228910446167 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.02998247742652893 0.3837679624557495 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.02486705780029297 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298694431781769 0.2233176827430725 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.934088408946991 0.4341752529144287 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 -0.2839455306529999 1.0 0.0 -0.0 0.8878573775291443 0.842465877532959 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8903676271438599 0.32953959703445435 0.21605446934700012 1.0 0.0 -0.0 0.6138039231300354 0.688823938369751 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392510890960693 -0.03112153708934784 -0.2839455306529999 -0.999908447265625 -0.01104770042002201 -0.0 0.029506683349609375 0.386313259601593 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 -0.2839455306529999 -0.999908447265625 -0.012665181420743465 -0.0 0.029461979866027832 0.3851448893547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 0.21605446934700012 -0.999908447265625 -0.012665181420743465 -0.0 0.4241137206554413 0.22956520318984985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 -0.2839455306529999 0.0021973326802253723 0.999969482421875 -0.0 0.052008867263793945 0.8166701197624207 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 -0.2839455306529999 -0.062410350888967514 0.9980468153953552 -0.0 0.06184554100036621 0.8146851658821106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 0.21605448424816132 -0.062410350888967514 0.9980468153953552 -0.0 0.522833526134491 0.6211022734642029 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4889885187149048 0.04098878800868988 -0.2839455306529999 -0.20975372195243835 0.9777215123176575 -0.0 0.042858511209487915 0.6745481491088867 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 -0.20047609508037567 0.9796746969223022 -0.0 0.049921393394470215 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 0.21605446934700012 -0.20047609508037567 0.9796746969223022 -0.0 0.5264630317687988 0.4764382839202881 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557603657245636 -0.0 0.02681976556777954 0.4681397080421448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 -0.2839455306529999 0.8624836206436157 0.5060274004936218 -0.0 0.028155982494354248 0.4720897078514099 0 1.0 0 0.0 0 0.0 0 0.0\n0.3559551239013672 -0.08801734447479248 0.21605446934700012 0.8624836206436157 0.5060274004936218 -0.0 0.4359365999698639 0.31473463773727417 0 1.0 0 0.0 0 0.0 0 0.0\n2.0392682552337646 -0.03255420923233032 -0.2839455306529999 -0.999908447265625 -0.012665181420743465 -0.0 0.029461979866027832 0.3851448893547058 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 -0.9998779296875 -0.01388592179864645 -0.0 0.029409736394882202 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 0.21605446934700012 -0.9998779296875 -0.01388592179864645 -0.0 0.4239836633205414 0.22824078798294067 0 1.0 0 0.0 0 0.0 0 0.0\n0.4955120086669922 -0.08878353983163834 -0.2839455306529999 -0.9767754077911377 0.2142094224691391 -0.0 0.9463331699371338 0.46781617403030396 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 -0.2839455306529999 -0.9568773508071899 0.29047515988349915 -0.0 0.946804404258728 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 0.21605446934700012 -0.9568773508071899 0.29047515988349915 -0.0 0.5340960025787354 0.307165265083313 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485904574394226 0.37897586822509766 0 1.0 0 0.0 0 0.0 0 0.0\n1.4965851306915283 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412901043891907 0.22151345014572144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0710165724158287 0.9974669814109802 -0.0 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 -0.2839455306529999 0.0021973326802253723 0.999969482421875 -0.0 0.052008867263793945 0.8166701197624207 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0966724157333374 0.19643977284431458 0.21605448424816132 0.0021973326802253723 0.999969482421875 -0.0 0.5286993384361267 0.6222618818283081 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4990172386169434 0.03888964653015137 -0.2839455306529999 -0.20047609508037567 0.9796746969223022 -0.0 0.049921393394470215 0.6708100438117981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 -0.2839455306529999 -0.19217506051063538 0.9813531637191772 -0.0 0.05729389190673828 0.6666763424873352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 0.21605446934700012 -0.19217506051063538 0.9813531637191772 -0.0 0.519971489906311 0.473061203956604 0 1.0 0 0.0 0 0.0 0 0.0\n1.3550350666046143 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.02486705780029297 0.3804551362991333 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.01947242021560669 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43718987703323364 0.21872544288635254 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1078346967697144 0.19609802961349487 -0.2839455306529999 -0.062410350888967514 0.9980468153953552 -0.0 0.06184554100036621 0.8146851658821106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 -0.1273842602968216 0.9918210506439209 -0.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 0.21605448424816132 -0.1273842602968216 0.9918210506439209 -0.0 0.5171758532524109 0.6193115711212158 0 1.0 0 0.0 0 0.0 0 0.0\n0.49488210678100586 -0.09120375663042068 -0.2839455306529999 -0.9568773508071899 0.29047515988349915 -0.0 0.946804404258728 0.46520084142684937 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3670461177825928 -0.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 0.21605446934700012 -0.9301736354827881 0.3670461177825928 -0.0 0.533640444278717 0.3045228123664856 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.99981689453125 -0.018677327781915665 -0.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 -0.2839455306529999 0.99920654296875 -0.0397351011633873 -0.0 0.9810053706169128 0.37938469648361206 0 1.0 0 0.0 0 0.0 0 0.0\n2.1290605068206787 -0.03278528153896332 0.21605446934700012 0.99920654296875 -0.0397351011633873 -0.0 0.4939279854297638 0.2156570553779602 0 1.0 0 0.0 0 0.0 0 0.0\n2.039290189743042 -0.03419606387615204 -0.2839455306529999 -0.9998779296875 -0.01388592179864645 -0.0 0.029409736394882202 0.38381296396255493 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 -0.2839455306529999 -0.9998779296875 -0.014831995591521263 -0.0 0.02935001254081726 0.3823206424713135 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 0.21605446934700012 -0.9998779296875 -0.014831995591521263 -0.0 0.4238378405570984 0.2267565131187439 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543532133102417 0.3760504722595215 0 1.0 0 0.0 0 0.0 0 0.0\n1.4857633113861084 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333886742591858 0.21683746576309204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.143803209066391 0.9895932078361511 -0.0 1.0336462259292603 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 -0.2839455306529999 0.0710165724158287 0.9974669814109802 -0.0 0.042767733335494995 0.8174909353256226 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0863980054855347 0.1960797905921936 0.21605448424816132 0.0710165724158287 0.9974669814109802 -0.0 0.5341312289237976 0.6226881742477417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5096346139907837 0.036766186356544495 -0.2839455306529999 -0.19217506051063538 0.9813531637191772 -0.0 0.05729389190673828 0.6666763424873352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 -0.2839455306529999 -0.191381573677063 0.981505811214447 -0.0 0.0649290382862091 0.6621288657188416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 0.21605446934700012 -0.191381573677063 0.981505811214447 -0.0 0.5131340026855469 0.46967190504074097 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 -0.2839455306529999 0.8301034569740295 0.557603657245636 -0.0 0.02681976556777954 0.4681397080421448 0 1.0 0 0.0 0 0.0 0 0.0\n0.35817599296569824 -0.09155523777008057 0.21605446934700012 0.8301034569740295 0.557603657245636 -0.0 0.43715718388557434 0.3104264736175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.365281343460083 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.01947242021560669 0.37754589319229126 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013795018196105957 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.44515177607536316 0.21470582485198975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.11867094039917 0.19507277011871338 -0.2839455306529999 -0.1273842602968216 0.9918210506439209 -0.0 0.07110142707824707 0.8117210865020752 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 -0.19467757642269135 0.9808648824691772 -0.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 0.21605448424816132 -0.19467757642269135 0.9808648824691772 -0.0 0.5117258429527283 0.6169023513793945 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393168926239014 -0.03604710102081299 -0.2839455306529999 -0.9998779296875 -0.014831995591521263 -0.0 0.02935001254081726 0.3823206424713135 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 -0.2839455306529999 -0.999847412109375 -0.0157170332968235 -0.0 0.029282838106155396 0.38067108392715454 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 0.21605446934700012 -0.999847412109375 -0.0157170332968235 -0.0 0.423676073551178 0.22511571645736694 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5208405256271362 0.03461839258670807 -0.2839455306529999 -0.191381573677063 0.981505811214447 -0.0 0.0649290382862091 0.6621288657188416 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 -0.2839455306529999 -0.20114749670028687 0.9795526266098022 -0.0 0.07049843668937683 0.6584956645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 0.21605446934700012 -0.20114749670028687 0.9795526266098022 -0.0 0.5080614686012268 0.46713006496429443 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2937711775302887 -0.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 -0.2839455306529999 0.9756157398223877 -0.21933652460575104 -0.0 0.8982551097869873 0.46633195877075195 0 1.0 0 0.0 0 0.0 0 0.0\n0.5924258232116699 -0.0923299491405487 0.21605446934700012 0.9756157398223877 -0.21933652460575104 -0.0 0.5898783802986145 0.33016830682754517 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393483638763428 -0.03810732066631317 -0.2839455306529999 -0.999847412109375 -0.0157170332968235 -0.0 0.029282838106155396 0.38067108392715454 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 -0.999847412109375 -0.016449477523565292 -0.0 0.029208064079284668 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 0.21605446934700012 -0.999847412109375 -0.016449477523565292 -0.0 0.4234984517097473 0.22332197427749634 0 1.0 0 0.0 0 0.0 0 0.0\n0.49407219886779785 -0.0935315415263176 -0.2839455306529999 -0.9301736354827881 0.3670461177825928 -0.0 0.9473705291748047 0.4626959562301636 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 -0.2839455306529999 -0.8967863917350769 0.4424268305301666 -0.0 0.9480316638946533 0.4602993130683899 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 0.21605446934700012 -0.8967863917350769 0.4424268305301666 -0.0 0.5330564379692078 0.30196136236190796 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604605436325073 0.37364357709884644 0 1.0 0 0.0 0 0.0 0 0.0\n1.4743726253509521 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247240662574768 0.21285516023635864 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.21765801310539246 0.9760124683380127 -0.0 1.0247381925582886 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 -0.2839455306529999 0.143803209066391 0.9895932078361511 -0.0 1.0336462259292603 0.817267894744873 0 1.0 0 0.0 0 0.0 0 0.0\n-1.076357126235962 0.1949998140335083 0.21605448424816132 0.143803209066391 0.9895932078361511 -0.0 0.5394721627235413 0.6224310398101807 0 1.0 0 0.0 0 0.0 0 0.0\n-1.529197096824646 0.03296072781085968 -0.2839455306529999 -0.20114749670028687 0.9795526266098022 -0.0 0.07049843668937683 0.6584956645965576 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 -0.2839455306529999 -0.2148197889328003 0.9766228199005127 -0.0 0.07572722434997559 0.6547515392303467 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 0.21605446934700012 -0.2148197889328003 0.9766228199005127 -0.0 0.5032224059104919 0.46460527181625366 0 1.0 0 0.0 0 0.0 0 0.0\n1.3759682178497314 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013795018196105957 0.3750600218772888 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.007834404706954956 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.45375072956085205 0.211337149143219 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1291812658309937 0.19336402416229248 -0.2839455306529999 -0.19467757642269135 0.9808648824691772 -0.0 0.07971975207328796 0.8078523278236389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 -0.2634052634239197 0.964659571647644 -0.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 0.21605448424816132 -0.2634052634239197 0.964659571647644 -0.0 0.5064813494682312 0.6138845086097717 0 1.0 0 0.0 0 0.0 0 0.0\n0.2530405521392822 -0.09483286738395691 -0.2839455306529999 -0.9342631101608276 -0.3565477430820465 -0.0 0.0786128044128418 0.4715557098388672 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 0.21605446934700012 -0.9118015170097351 -0.41059601306915283 -0.0 0.3792794346809387 0.3292851448059082 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5372202396392822 0.031256839632987976 -0.2839455306529999 -0.2148197889328003 0.9766228199005127 -0.0 0.07572722434997559 0.6547515392303467 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 -0.2839455306529999 -0.2295602262020111 0.9732657670974731 -0.0 0.08061960339546204 0.6509283781051636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 0.21605446934700012 -0.2295602262020111 0.9732657670974731 -0.0 0.4986191391944885 0.46209830045700073 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 1.0 0.00015259254723787308 -0.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 -0.2839455306529999 0.99981689453125 -0.018677327781915665 -0.0 0.9811965227127075 0.37457603216171265 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288912296295166 -0.03869353234767914 0.21605446934700012 0.99981689453125 -0.018677327781915665 -0.0 0.493741512298584 0.2108408808708191 0 1.0 0 0.0 0 0.0 0 0.0\n2.0393850803375244 -0.04037673771381378 -0.2839455306529999 -0.999847412109375 -0.016449477523565292 -0.0 0.029208064079284668 0.3788679838180542 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 -0.2839455306529999 -0.999847412109375 -0.016968291252851486 -0.0 0.029126018285751343 0.37691545486450195 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 0.21605446934700012 -0.999847412109375 -0.016968291252851486 -0.0 0.42330440878868103 0.22137945890426636 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669144153594971 0.3717842102050781 0 1.0 0 0.0 0 0.0 0 0.0\n1.4624125957489014 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153047442436218 0.20966774225234985 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.29132968187332153 0.9566026926040649 -0.0 1.016127586364746 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 -0.2839455306529999 0.21765801310539246 0.9760124683380127 -0.0 1.0247381925582886 0.8160241842269897 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0665497779846191 0.19319984316825867 0.21605448424816132 0.21765801310539246 0.9760124683380127 -0.0 0.544721782207489 0.6214948892593384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.544910192489624 0.02950674295425415 -0.2839455306529999 -0.2295602262020111 0.9732657670974731 -0.0 0.08061960339546204 0.6509283781051636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 -0.2839455306529999 -0.2454603761434555 0.9693899154663086 -0.0 0.08518248796463013 0.6470544338226318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 0.21605446934700012 -0.2454603761434555 0.9693899154663086 -0.0 0.49425211548805237 0.459608793258667 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 -0.2839455306529999 0.7530442476272583 0.6579485535621643 -0.0 0.02386653423309326 0.46089035272598267 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 -0.2839455306529999 0.7935422658920288 0.6084780693054199 -0.0 0.025390267372131348 0.464407742023468 0 1.0 0 0.0 0 0.0 0 0.0\n0.360576868057251 -0.09490098059177399 0.21605446934700012 0.7935422658920288 0.6084780693054199 -0.0 0.4385274052619934 0.30631446838378906 0 1.0 0 0.0 0 0.0 0 0.0\n1.3870952129364014 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.007834404706954956 0.3730197548866272 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 0.0015931427478790283 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 0.4629644751548767 0.20870304107666016 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139365553855896 0.19097179174423218 -0.2839455306529999 -0.2634052634239197 0.964659571647644 -0.0 0.08766904473304749 0.8031498789787292 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 -0.3325602114200592 0.9430524706840515 -0.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 0.21605448424816132 -0.3325602114200592 0.9430524706840515 -0.0 0.5014384388923645 0.6102650165557861 0 1.0 0 0.0 0 0.0 0 0.0\n2.039426565170288 -0.042855337262153625 -0.2839455306529999 -0.999847412109375 -0.016968291252851486 -0.0 0.029126018285751343 0.37691545486450195 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 -0.999847412109375 -0.01739555038511753 -0.0 0.029036760330200195 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 0.21605446934700012 -0.999847412109375 -0.01739555038511753 -0.0 0.42309364676475525 0.21929270029067993 0 1.0 0 0.0 0 0.0 0 0.0\n0.49308228492736816 -0.09576690196990967 -0.2839455306529999 -0.8967863917350769 0.4424268305301666 -0.0 0.9480316638946533 0.4602993130683899 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149693489074707 -0.0 0.9487879276275635 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 0.21605446934700012 -0.8572039008140564 0.5149388313293457 -0.0 0.5323424339294434 0.2994800806045532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5522669553756714 0.027710437774658203 -0.2839455306529999 -0.2454603761434555 0.9693899154663086 -0.0 0.08518248796463013 0.6470544338226318 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 -0.2839455306529999 -0.2627033293247223 0.964842677116394 -0.0 0.08942463994026184 0.6431540250778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 0.21605446934700012 -0.2627033293247223 0.964842677116394 -0.0 0.4901202917098999 0.4571353793144226 0 1.0 0 0.0 0 0.0 0 0.0\n0.4919123649597168 -0.0979098305106163 -0.2839455306529999 -0.8572039008140564 0.5149693489074707 -0.0 0.9487879276275635 0.45800888538360596 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 -0.2839455306529999 -0.8122806549072266 0.5832392573356628 -0.0 0.9496395587921143 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 0.21605446934700012 -0.8122806549072266 0.5832392573356628 -0.0 0.5314965844154358 0.2970784902572632 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737119674682617 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.449883222579956 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051661133766174 0.2073853611946106 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.3634754419326782 0.9315775036811829 -0.0 1.0078847408294678 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 -0.2839455306529999 0.29132968187332153 0.9566026926040649 -0.0 1.016127586364746 0.8137865662574768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0569759607315063 0.1906799077987671 0.21605448424816132 0.29132968187332153 0.9566026926040649 -0.0 0.5498804450035095 0.6198821067810059 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5592904090881348 0.02586790919303894 -0.2839455306529999 -0.2627033293247223 0.964842677116394 -0.0 0.08942463994026184 0.6431540250778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 -0.2839455306529999 -0.28144168853759766 0.9595629572868347 -0.0 0.09335640072822571 0.6392477750778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 0.21605446934700012 -0.28144168853759766 0.9595629572868347 -0.0 0.4862211048603058 0.45467615127563477 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.99993896484375 0.009094515815377235 -0.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 -0.2839455306529999 1.0 0.00015259254723787308 -0.0 0.9813289642333984 0.3696032762527466 0 1.0 0 0.0 0 0.0 0 0.0\n2.1288363933563232 -0.04494717717170715 0.21605446934700012 0.999969482421875 0.00015259254723787308 -0.0 0.49364396929740906 0.20586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n1.3986623287200928 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 1.0015931129455566 0.37144917249679565 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950774908065796 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727486371994019 0.20689111948013306 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1492239236831665 0.18789604306221008 -0.2839455306529999 -0.3325602114200592 0.9430524706840515 -0.0 0.09493982791900635 0.7976773977279663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 -0.40098270773887634 0.9160435795783997 -0.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 0.21605448424816132 -0.40098270773887634 0.9160435795783997 -0.0 0.49659207463264465 0.6060476303100586 0 1.0 0 0.0 0 0.0 0 0.0\n2.039472818374634 -0.0455431193113327 -0.2839455306529999 -0.999847412109375 -0.01739555038511753 -0.0 0.029036760330200195 0.3748179078102112 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 -0.2839455306529999 -0.99981689453125 -0.017761772498488426 -0.0 0.028940409421920776 0.3725799322128296 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 0.21605446934700012 -0.99981689453125 -0.017761772498488426 -0.0 0.4228658974170685 0.21706622838974 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5659806728363037 0.023979172110557556 -0.2839455306529999 -0.28144168853759766 0.9595629572868347 -0.0 0.09335640072822571 0.6392477750778198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 -0.2839455306529999 -0.3018280565738678 0.9533371925354004 -0.0 0.09698906540870667 0.6353528499603271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 0.21605446934700012 -0.3018280565738678 0.9533371925354004 -0.0 0.4825509786605835 0.452228307723999 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022247523069381714 0.4575845003128052 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 -0.2839455306529999 0.7530442476272583 0.6579485535621643 -0.0 0.02386653423309326 0.46089035272598267 0 1.0 0 0.0 0 0.0 0 0.0\n0.3631577491760254 -0.09805455803871155 0.21605446934700012 0.7530442476272583 0.6579485535621643 -0.0 0.44005027413368225 0.30239778757095337 0 1.0 0 0.0 0 0.0 0 0.0\n1.4106695652008057 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950774908065796 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882978200912476 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.4830350875854492 0.20598739385604858 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395238399505615 -0.04844008386135101 -0.2839455306529999 -0.99981689453125 -0.017761772498488426 -0.0 0.028940409421920776 0.3725799322128296 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 -0.2839455306529999 -0.99981689453125 -0.017944883555173874 -0.0 0.02883705496788025 0.3702065348625183 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 0.21605446934700012 -0.99981689453125 -0.017944883555173874 -0.0 0.4226208031177521 0.214705228805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.49056243896484375 -0.0999603271484375 -0.2839455306529999 -0.8122806549072266 0.5832392573356628 -0.0 0.9496395587921143 0.45582300424575806 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 -0.7631763815879822 0.6461684107780457 -0.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 0.21605446934700012 -0.7631763815879822 0.6461684107780457 -0.0 0.5305171012878418 0.29475659132003784 0 1.0 0 0.0 0 0.0 0 0.0\n1.4231173992156982 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882978200912476 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808444976806641 0.36983776092529297 0 1.0 0 0.0 0 0.0 0 0.0\n1.4367849826812744 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437573552131653 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.43293556571006775 0.9013947248458862 -0.0 1.0000649690628052 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 -0.2839455306529999 0.3634754419326782 0.9315775036811829 -0.0 1.0078847408294678 0.810584545135498 0 1.0 0 0.0 0 0.0 0 0.0\n-1.047635555267334 0.18743997812271118 0.21605448424816132 0.3634754419326782 0.9315775036811829 -0.0 0.5549494028091431 0.6175920963287354 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5723377466201782 0.022044211626052856 -0.2839455306529999 -0.3018280565738678 0.9533371925354004 -0.0 0.09698906540870667 0.6353528499603271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 -0.2839455306529999 -0.3240455389022827 0.9460127353668213 -0.0 0.10033413767814636 0.6314833760261536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 0.21605446934700012 -0.3240455389022827 0.9460127353668213 -0.0 0.47910571098327637 0.44978851079940796 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.05154623091220856 -0.2839455306529999 0.0 -1.0 -0.0 1.0288370847702026 0.3702065348625183 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 -0.2839455306529999 0.0 -1.0 -0.0 0.9814033508300781 0.3644845485687256 0 1.0 0 0.0 0 0.0 0 0.0\n2.128896474838257 -0.05154623091220856 0.21605446934700012 0.0 -1.0 -0.0 0.4936378598213196 0.20074313879013062 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 -0.2839455306529999 -0.0009460737928748131 0.999969482421875 -0.0 0.9840543270111084 0.7939989566802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 -0.2839455306529999 -0.06106753647327423 0.9981078505516052 -0.0 0.9941284656524658 0.7937484979629517 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 0.21605448424816132 -0.06106753647327423 0.9981078505516052 -0.0 1.4810051918029785 0.630024254322052 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1587563753128052 0.18413680791854858 -0.2839455306529999 -0.40098270773887634 0.9160435795783997 -0.0 0.10153970122337341 0.7914900183677673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 -0.4675740897655487 0.8839381337165833 -0.0 0.10748907923698425 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 0.21605448424816132 -0.4675740897655487 0.8839381337165833 -0.0 0.4919360876083374 0.6012330055236816 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 -0.2839455306529999 -1.0 0.0 -0.0 0.02804046869277954 0.3460407257080078 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 -0.2839455306529999 -1.0 0.0 -0.0 0.025960713624954224 0.29135721921920776 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 0.21605445444583893 -1.0 0.0 -0.0 0.40843620896339417 0.13705360889434814 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5783613920211792 0.020063042640686035 -0.2839455306529999 -0.3240455389022827 0.9460127353668213 -0.0 0.10033413767814636 0.6314833760261536 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 -0.2839455306529999 -0.3483077585697174 0.9373760223388672 -0.0 0.10340362787246704 0.6276503801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 0.21605446934700012 -0.3483077585697174 0.9373760223388672 -0.0 0.47588011622428894 0.4473530650138855 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667409420013428 -0.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 -0.2839455306529999 0.9558396935462952 -0.2937711775302887 -0.0 0.899749755859375 0.4588810205459595 0 1.0 0 0.0 0 0.0 0 0.0\n0.590348482131958 -0.10015491396188736 0.21605446934700012 0.9558396935462952 -0.2937711775302887 -0.0 0.5895298719406128 0.32216984033584595 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.05740531533956528 0.9983214735984802 -0.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 -0.2839455306529999 -0.0009460737928748131 0.999969482421875 -0.0 0.9840543270111084 0.7939989566802979 0 1.0 0 0.0 0 0.0 0 0.0\n1.0224170684814453 0.19643977284431458 0.21605448424816132 -0.0009460737928748131 0.999969482421875 -0.0 0.48762810230255127 0.6301566958427429 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9771514534950256 0.34017306566238403 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 -0.2839455306529999 0.0 1.0 -0.0 1.0280404090881348 0.3460407257080078 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.08552171289920807 0.21605446934700012 0.0 0.999969482421875 -0.0 1.4193791151046753 0.19080489873886108 0 1.0 0 0.0 0 0.0 0 0.0\n1.0102767944335938 0.19607609510421753 -0.2839455306529999 -0.06106753647327423 0.9981078505516052 -0.0 0.9941284656524658 0.7937484979629517 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 -0.12469863146543503 0.9921872615814209 -0.0 1.0038418769836426 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 0.21605448424816132 -0.12469863146543503 0.9921872615814209 -0.0 1.4745757579803467 0.6291228532791138 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.4985809028148651 0.8668172359466553 -0.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 -0.2839455306529999 0.43293556571006775 0.9013947248458862 -0.0 1.0000649690628052 0.8064477443695068 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0385286808013916 0.18348005414009094 0.21605448424816132 0.43293556571006775 0.9013947248458862 -0.0 0.5599304437637329 0.6146221160888672 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5840519666671753 0.0180356502532959 -0.2839455306529999 -0.3483077585697174 0.9373760223388672 -0.0 0.10340362787246704 0.6276503801345825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 -0.2839455306529999 -0.3748893737792969 0.9270607829093933 -0.0 0.10620921850204468 0.6238624453544617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 0.21605446934700012 -0.3748893737792969 0.9270607829093933 -0.0 0.47286897897720337 0.4449179768562317 0 1.0 0 0.0 0 0.0 0 0.0\n2.0395796298980713 -0.18394553661346436 -0.2839455306529999 0.0 -0.999969482421875 -0.0 1.0259606838226318 0.29135721921920776 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 -0.2839455306529999 0.0 -1.0 -0.0 0.9788987040519714 0.285663366317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 0.21605445444583893 0.0 -0.999969482421875 -0.0 0.5014961957931519 0.1221572756767273 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 -0.2839455306529999 0.7088534235954285 0.7053132653236389 -0.0 0.022247523069381714 0.4575845003128052 0 1.0 0 0.0 0 0.0 0 0.0\n0.3659186363220215 -0.10101598501205444 0.21605446934700012 0.7088534235954285 0.7053132653236389 -0.0 0.44172874093055725 0.29867643117904663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.167962908744812 0.1796940565109253 -0.2839455306529999 -0.4675740897655487 0.8839381337165833 -0.0 0.10748907923698425 0.7846333980560303 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 -0.5312051773071289 0.8472243547439575 -0.0 0.11281666159629822 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 0.21605448424816132 -0.5312051773071289 0.8472243547439575 -0.0 0.4874635338783264 0.595818281173706 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.9788987040519714 0.285663366317749 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 -0.2839455306529999 1.0 0.0 -0.0 0.9771514534950256 0.34017306566238403 0 1.0 0 0.0 0 0.0 0 0.0\n2.1380035877227783 -0.08552171289920807 0.21605446934700012 1.0 0.0 -0.0 0.5012896656990051 0.17674368619918823 0 1.0 0 0.0 0 0.0 0 0.0\n0.489032506942749 -0.10191839188337326 -0.2839455306529999 -0.7631763815879822 0.6461684107780457 -0.0 0.9505868554115295 0.4537402391433716 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 -0.2839455306529999 -0.7112033367156982 0.7029633522033691 -0.0 0.9516303539276123 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 0.21605446934700012 -0.7112033367156982 0.7029633522033691 -0.0 0.5294021368026733 0.29251474142074585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.589409351348877 0.01596204936504364 -0.2839455306529999 -0.3748893737792969 0.9270607829093933 -0.0 0.10620921850204468 0.6238624453544617 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 -0.2839455306529999 -0.4040345549583435 0.9147312641143799 -0.0 0.10876205563545227 0.6201258897781372 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 0.21605446934700012 -0.4040345549583435 0.9147312641143799 -0.0 0.4700668454170227 0.4424787759780884 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 -0.2839455306529999 -0.5027008652687073 0.8644368052482605 -0.0 0.9526037573814392 0.9118335843086243 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 -0.2839455306529999 -0.5027008652687073 0.8644368052482605 -0.0 1.0583765506744385 0.8830084204673767 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 0.2160544991493225 -0.5027008652687073 0.8644368052482605 -0.0 0.45288121700286865 0.7265979051589966 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.11801507323980331 0.9929807186126709 -0.0 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 -0.2839455306529999 0.05740531533956528 0.9983214735984802 -0.0 0.9728249311447144 0.7929335236549377 0 1.0 0 0.0 0 0.0 0 0.0\n1.0360093116760254 0.19605910778045654 0.21605448424816132 0.05740531533956528 0.9983214735984802 -0.0 0.49503153562545776 0.6294469833374023 0 1.0 0 0.0 0 0.0 0 0.0\n0.2563815116882324 -0.10288161039352417 -0.2839455306529999 -0.9118015170097351 -0.41059601306915283 -0.0 0.07672294974327087 0.46378159523010254 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 0.21605446934700012 -0.8855555653572083 -0.46449172496795654 -0.0 0.3802019953727722 0.3209127187728882 0 1.0 0 0.0 0 0.0 0 0.0\n0.9984920024871826 0.19498518109321594 -0.2839455306529999 -0.12469863146543503 0.9921872615814209 -0.0 0.0038418173789978027 0.7923401594161987 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 -0.1906491219997406 0.981627881526947 -0.0 0.013106107711791992 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 0.21605448424816132 -0.1906491219997406 0.981627881526947 -0.0 0.4683462977409363 0.6274691820144653 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.5596179366111755 0.8287301063537598 -0.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 -0.2839455306529999 0.4985809028148651 0.8668172359466553 -0.0 0.9927076101303101 0.8014048933982849 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0296553373336792 0.17880016565322876 0.21605448424816132 0.4985809028148651 0.8668172359466553 -0.0 0.5648260116577148 0.610966145992279 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5944334268569946 0.013842225074768066 -0.2839455306529999 -0.4040345549583435 0.9147312641143799 -0.0 0.10876205563545227 0.6201258897781372 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 -0.2839455306529999 -0.4372386932373047 0.8993194103240967 -0.0 0.11107313632965088 0.616445004940033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 0.21605446934700012 -0.4372386932373047 0.8993194103240967 -0.0 0.4674680829048157 0.44003111124038696 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 1.0 0.0 -0.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 -0.2839455306529999 1.0 0.0 -0.0 0.9526037573814392 0.9118335843086243 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.3193819522857666 0.21605446934700012 1.0 0.0 -0.0 0.4990980625152588 0.7493226528167725 0 1.0 0 0.0 0 0.0 0 0.0\n-1.176843523979187 0.1745678186416626 -0.2839455306529999 -0.5312051773071289 0.8472243547439575 -0.0 0.11281666159629822 0.7771431803703308 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 -0.5909909605979919 0.8066347241401672 -0.0 0.1175563633441925 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 0.21605446934700012 -0.5909909605979919 0.8066347241401672 -0.0 0.48316690325737 0.5897977352142334 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.2619388997554779 -0.2839455306529999 -1.0 0.0 -0.0 0.05837661027908325 0.8830084204673767 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.052425503730773926 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 0.21605448424816132 -1.0 0.0 -0.0 0.45019370317459106 0.6925525665283203 0 1.0 0 0.0 0 0.0 0 0.0\n0.4873225688934326 -0.10378402471542358 -0.2839455306529999 -0.7112033367156982 0.7029633522033691 -0.0 0.9516303539276123 0.4517591595649719 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532578706741333 -0.0 0.9527706503868103 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 0.21605446934700012 -0.6577044129371643 0.7532578706741333 -0.0 0.5281496644020081 0.2903541922569275 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5991243124008179 0.011676192283630371 -0.2839455306529999 -0.4372386932373047 0.8993194103240967 -0.0 0.11107313632965088 0.616445004940033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 -0.2839455306529999 -0.4748374819755554 0.8800622820854187 -0.0 0.11318978667259216 0.6127371788024902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 0.21605446934700012 -0.4748374819755554 0.8800622820854187 -0.0 0.4650213122367859 0.43750661611557007 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.1819208413362503 0.983306348323822 -0.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 -0.2839455306529999 0.11801507323980331 0.9929807186126709 -0.0 0.9621782302856445 0.7905840873718262 0 1.0 0 0.0 0 0.0 0 0.0\n1.0491149425506592 0.19491711258888245 0.21605448424816132 0.11801507323980331 0.9929807186126709 -0.0 0.5021440386772156 0.627916157245636 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.08506765961647034 0.8339129686355591 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 -1.0 0.0 -0.0 0.0777084231376648 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 0.21605446934700012 -1.0 0.0 -0.0 0.42526912689208984 0.6394941806793213 0 1.0 0 0.0 0 0.0 0 0.0\n0.9870622158050537 0.19316697120666504 -0.2839455306529999 -0.1906491219997406 0.981627881526947 -0.0 0.013106107711791992 0.7898356914520264 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 -0.25815606117248535 0.9660939574241638 -0.0 0.02185356616973877 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 0.21605448424816132 -0.25815606117248535 0.9660939574241638 -0.0 0.4623207747936249 0.6250783205032349 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.6155278086662292 0.7881100177764893 -0.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 -0.2839455306529999 0.5596179366111755 0.8287301063537598 -0.0 0.9858372211456299 0.7954815626144409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0210155248641968 0.17340028285980225 0.21605448424816132 0.5596179366111755 0.8287301063537598 -0.0 0.5696391463279724 0.6066159009933472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6035646200180054 0.009406790137290955 -0.2839455306529999 -0.4748374819755554 0.8800622820854187 -0.0 0.11318978667259216 0.6127371788024902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 -0.2839455306529999 -0.5141758322715759 0.8576616644859314 -0.0 0.11515578627586365 0.6089204549789429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 0.21605446934700012 -0.5141758322715759 0.8576616644859314 -0.0 0.4626764953136444 0.43484050035476685 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 -0.2839455306529999 0.6100344657897949 0.7923520803451538 -0.0 0.01871994137763977 0.45159727334976196 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 -0.2839455306529999 0.6615497469902039 0.7498703002929688 -0.0 0.020532160997390747 0.45448750257492065 0 1.0 0 0.0 0 0.0 0 0.0\n0.36885952949523926 -0.10378524661064148 0.21605446934700012 0.6615497469902039 0.7498703002929688 -0.0 0.4435656666755676 0.2951509952545166 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1853982210159302 0.1687580645084381 -0.2839455306529999 -0.5909909605979919 0.8066347241401672 -0.0 0.1175563633441925 0.769045889377594 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.12174451351165771 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 0.21605446934700012 -0.6462294459342957 0.7631153464317322 -0.0 0.4790382981300354 0.5831623077392578 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.052425503730773926 0.8490404486656189 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.08506765961647034 0.8339129686355591 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.18803346157073975 0.21605448424816132 0.0 1.0 -0.0 0.42952170968055725 0.6872974038124084 0 1.0 0 0.0 0 0.0 0 0.0\n0.48543262481689453 -0.10555722564458847 -0.2839455306529999 -0.6577044129371643 0.7532578706741333 -0.0 0.9527706503868103 0.44987887144088745 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540083408355713 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 0.21605446934700012 -0.5939817428588867 0.8044679164886475 -0.0 0.5267577171325684 0.28827619552612305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6078370809555054 0.0069768428802490234 -0.2839455306529999 -0.5141758322715759 0.8576616644859314 -0.0 0.11515578627586365 0.6089204549789429 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 -0.2839455306529999 -0.5533921122550964 0.8328806161880493 -0.0 0.11697599291801453 0.6049986481666565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 0.21605446934700012 -0.5533921122550964 0.8328806161880493 -0.0 0.46043041348457336 0.4320330023765564 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.24851222336292267 0.9686269760131836 -0.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 -0.2839455306529999 0.1819208413362503 0.983306348323822 -0.0 0.9522119760513306 0.7870548367500305 0 1.0 0 0.0 0 0.0 0 0.0\n1.0617341995239258 0.19301378726959229 0.21605448424816132 0.1819208413362503 0.983306348323822 -0.0 0.5089559555053711 0.6255924701690674 0 1.0 0 0.0 0 0.0 0 0.0\n0.9759876728057861 0.1906214952468872 -0.2839455306529999 -0.25815606117248535 0.9660939574241638 -0.0 0.02185356616973877 0.7862992882728577 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 -0.3262123465538025 0.9452803134918213 -0.0 0.030038535594940186 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 0.21605448424816132 -0.3262123465538025 0.9452803134918213 -0.0 0.4565003216266632 0.6219629049301147 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.6660054326057434 0.7459028959274292 -0.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 -0.2839455306529999 0.6155278086662292 0.7881100177764893 -0.0 0.9794652462005615 0.7886999249458313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0126092433929443 0.1672804057598114 0.21605446934700012 0.6155278086662292 0.7881100177764893 -0.0 0.574373185634613 0.6015603542327881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6119416952133179 0.004386350512504578 -0.2839455306529999 -0.5533921122550964 0.8328806161880493 -0.0 0.11697599291801453 0.6049986481666565 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 -0.2839455306529999 -0.5922421813011169 0.8057497143745422 -0.0 0.11865502595901489 0.6009750366210938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 0.21605446934700012 -0.5922421813011169 0.8057497143745422 -0.0 0.4582798480987549 0.4290844798088074 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9053249359130859 0.8409206867218018 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.9619265794754028 0.8576733469963074 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.49900293350219727 0.6947826147079468 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.016798853874206543 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 -0.2839455306529999 0.6100344657897949 0.7923520803451538 -0.0 0.01871994137763977 0.45159727334976196 0 1.0 0 0.0 0 0.0 0 0.0\n0.3719792366027832 -0.10636235028505325 0.21605446934700012 0.6100344657897949 0.7923520803451538 -0.0 0.44556304812431335 0.291823148727417 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1936269998550415 0.16226482391357422 -0.2839455306529999 -0.6462294459342957 0.7631153464317322 -0.0 0.12174451351165771 0.760358989238739 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 -0.6964934468269348 0.7175511717796326 -0.0 0.12541812658309937 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 0.21605446934700012 -0.6964934468269348 0.7175511717796326 -0.0 0.47506946325302124 0.5759004354476929 0 1.0 0 0.0 0 0.0 0 0.0\n0.48336267471313477 -0.10723800212144852 -0.2839455306529999 -0.5939817428588867 0.8044679164886475 -0.0 0.9540083408355713 0.4480985999107361 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 0.21605446934700012 -0.5250709652900696 0.8510391712188721 -0.0 0.5244717597961426 0.2854476571083069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6158784627914429 0.001635327935218811 -0.2839455306529999 -0.5922421813011169 0.8057497143745422 -0.0 0.11865502595901489 0.6009750366210938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 -0.2839455306529999 -0.6303598284721375 0.7762992978096008 -0.0 0.120197594165802 0.59685218334198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 0.21605446934700012 -0.6303598284721375 0.7762992978096008 -0.0 0.4562217891216278 0.425994873046875 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 1.0 0.0 -0.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 -0.2839455306529999 1.0 0.0 -0.0 0.9053249359130859 0.8409206867218018 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.531541109085083 0.6883732080459595 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.316965252161026 0.9484237432479858 -0.0 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 -0.2839455306529999 0.24851222336292267 0.9686269760131836 -0.0 0.9429885149002075 0.7824501991271973 0 1.0 0 0.0 0 0.0 0 0.0\n1.073866844177246 0.19034910202026367 0.21605448424816132 0.24851222336292267 0.9686269760131836 -0.0 0.5154626369476318 0.6225020289421082 0 1.0 0 0.0 0 0.0 0 0.0\n1.6378281116485596 0.10957461595535278 -0.2839455306529999 0.0 -1.0 -0.0 0.0777084231376648 0.7862430810928345 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 0.0 -1.0 -0.0 0.04727005958557129 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 0.21605446934700012 0.0 -1.0 -0.0 0.4469967484474182 0.6443145275115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.9652681350708008 0.18734872341156006 -0.2839455306529999 -0.3262123465538025 0.9452803134918213 -0.0 0.030038535594940186 0.781794548034668 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 -0.39381083846092224 0.9191870093345642 -0.0 0.03763490915298462 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 0.21605448424816132 -0.39381083846092224 0.9191870093345642 -0.0 0.45088422298431396 0.6181330680847168 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.7111117839813232 0.7030549049377441 -0.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 -0.2839455306529999 0.6660054326057434 0.7459028959274292 -0.0 0.9735915064811707 0.7810776829719543 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044364929199219 0.1604405641555786 0.21605446934700012 0.6660054326057434 0.7459028959274292 -0.0 0.5790320634841919 0.595786452293396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6196473836898804 -0.0012762397527694702 -0.2839455306529999 -0.6303598284721375 0.7762992978096008 -0.0 0.120197594165802 0.59685218334198 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 -0.2839455306529999 -0.6674398183822632 0.7446210980415344 -0.0 0.12160813808441162 0.5926323533058167 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 0.21605446934700012 -0.6674398183822632 0.7446210980415344 -0.0 0.4542531371116638 0.4227641224861145 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 -0.2839455306529999 0.9302957057952881 -0.3667409420013428 -0.0 0.9014818072319031 0.4516541361808777 0 1.0 0 0.0 0 0.0 0 0.0\n0.5876777172088623 -0.10778042674064636 0.21605446934700012 0.9302957057952881 -0.3667409420013428 -0.0 0.5888727307319641 0.314247190952301 0 1.0 0 0.0 0 0.0 0 0.0\n-1.201529860496521 0.15508809685707092 -0.2839455306529999 -0.6964934468269348 0.7175511717796326 -0.0 0.12541812658309937 0.7510921955108643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 -0.7443769574165344 0.6677144765853882 -0.0 0.1286132037639618 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 0.21605446934700012 -0.7443769574165344 0.6677144765853882 -0.0 0.4712521433830261 0.5679982900619507 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 0.10957461595535278 -0.2839455306529999 -1.0 0.0 -0.0 0.04727005958557129 0.8007837533950806 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 -0.999969482421875 -0.0012817773967981339 -0.0 0.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 0.21605446934700012 -0.999969482421875 -0.0012817773967981339 -0.0 0.4389623999595642 0.49155598878860474 0 1.0 0 0.0 0 0.0 0 0.0\n-1.62324857711792 -0.004348337650299072 -0.2839455306529999 -0.6674398183822632 0.7446210980415344 -0.0 0.12160813808441162 0.5926323533058167 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 -0.7032380104064941 0.7109286785125732 -0.0 0.12289077043533325 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 0.21605446934700012 -0.7032380104064941 0.7109286785125732 -0.0 0.45237112045288086 0.4193921685218811 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 -0.2839455306529999 0.5534226298332214 0.8328806161880493 -0.0 0.016798853874206543 0.44891852140426636 0 1.0 0 0.0 0 0.0 0 0.0\n0.37529706954956055 -0.10874000191688538 0.21605446934700012 0.5534226298332214 0.8328806161880493 -0.0 0.44773736596107483 0.288699209690094 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.3862422704696655 0.922391414642334 -0.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 -0.2839455306529999 0.316965252161026 0.9484237432479858 -0.0 0.9345377087593079 0.7768685817718506 0 1.0 0 0.0 0 0.0 0 0.0\n1.0855131149291992 0.186923086643219 0.21605448424816132 0.316965252161026 0.9484237432479858 -0.0 0.5216641426086426 0.6186676621437073 0 1.0 0 0.0 0 0.0 0 0.0\n0.48002052307128906 -0.10947578400373459 -0.2839455306529999 -0.5250709652900696 0.8510391712188721 -0.0 0.9559876918792725 0.44572991132736206 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581100940704346 0.44357115030288696 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 0.21605446934700012 -0.46244698762893677 0.886623740196228 -0.0 0.5219649076461792 0.2828216552734375 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549038410186768 0.18334868550300598 -0.2839455306529999 -0.39381083846092224 0.9191870093345642 -0.0 0.03763490915298462 0.776381254196167 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 -0.4597918689250946 0.8879970908164978 -0.0 0.04463425278663635 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 0.21605448424816132 -0.4597918689250946 0.8879970908164978 -0.0 0.44546952843666077 0.6135957837104797 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9887914657592773 0.14460089802742004 -0.2839455306529999 0.7320169806480408 0.6812646985054016 -0.0 0.9632974863052368 0.7633605003356934 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 -0.2839455306529999 0.7111117839813232 0.7030549049377441 -0.0 0.9682073593139648 0.772628128528595 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9964971542358398 0.1528807282447815 0.21605446934700012 0.7111117839813232 0.7030549049377441 -0.0 0.583620011806488 0.589279294013977 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 0.0 -0.999969482421875 -0.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 -0.2839455306529999 0.0 -1.0 -0.0 0.9139398336410522 0.793278694152832 0 1.0 0 0.0 0 0.0 0 0.0\n1.8490369319915771 0.10957461595535278 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.5335628986358643 0.6399606466293335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2091068029403687 0.14722785353660583 -0.2839455306529999 -0.7443769574165344 0.6677144765853882 -0.0 0.1286132037639618 0.7412484288215637 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 -0.7923825979232788 0.6100039482116699 -0.0 0.13128799200057983 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 0.21605446934700012 -0.7923825979232788 0.6100039482116699 -0.0 0.4676472246646881 0.5594847202301025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 -0.2839455306529999 0.299569696187973 -0.9540390968322754 -0.0 0.9996907711029053 0.6184368133544922 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 0.3073824346065521 -0.9515671133995056 -0.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 0.21605446934700012 0.3073824346065521 -0.9515671133995056 -0.0 0.5751795768737793 0.43024682998657227 0 1.0 0 0.0 0 0.0 0 0.0\n0.2601480484008789 -0.11062387377023697 -0.2839455306529999 -0.8855555653572083 -0.46449172496795654 -0.0 0.07466986775398254 0.4562997817993164 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 0.21605446934700012 -0.8555864095687866 -0.5175939202308655 -0.0 0.38138139247894287 0.31271225214004517 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.005311548709869385 -0.2839455306529999 -1.0 0.0 -0.0 0.9975510835647583 0.6196885108947754 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 -0.2839455306529999 -0.999969482421875 0.0023194067180156708 -0.0 0.9976115226745605 0.5954424738883972 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 0.21605446934700012 -0.999969482421875 0.0023194067180156708 -0.0 0.5769625306129456 0.40624701976776123 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 -0.2839455306529999 0.999969482421875 0.0008850367739796638 -0.0 0.9716988801956177 0.6664947867393494 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 -0.2839455306529999 1.0 0.0 -0.0 0.9659538269042969 0.8092734813690186 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 0.10957461595535278 0.21605446934700012 1.0 0.0 -0.0 0.49893590807914734 0.6462191343307495 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.45512253046035767 0.8904080390930176 -0.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 -0.2839455306529999 0.3862422704696655 0.922391414642334 -0.0 0.9268628358840942 0.7703980207443237 0 1.0 0 0.0 0 0.0 0 0.0\n1.096672773361206 0.18273574113845825 0.21605448424816132 0.3862422704696655 0.922391414642334 -0.0 0.5275639891624451 0.6141082048416138 0 1.0 0 0.0 0 0.0 0 0.0\n0.944894552230835 0.1786213517189026 -0.2839455306529999 -0.4597918689250946 0.8879970908164978 -0.0 0.04463425278663635 0.7701126933097839 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 -0.5230872631072998 0.8522598743438721 -0.0 0.05104157328605652 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 0.21605448424816132 -0.5230872631072998 0.8522598743438721 -0.0 0.44025203585624695 0.6083549857139587 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 -0.2839455306529999 0.999969482421875 0.0038453321903944016 -0.0 0.9719215631484985 0.6577943563461304 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 -0.2839455306529999 0.999969482421875 0.0008850367739796638 -0.0 0.9716988801956177 0.6664947867393494 0 1.0 0 0.0 0 0.0 0 0.0\n1.7817862033843994 -0.040337830781936646 0.21605446934700012 0.999969482421875 0.0008850367739796638 -0.0 0.4987790882587433 0.5032071471214294 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012597858905792236 0.44421011209487915 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 -0.2839455306529999 0.4943082928657532 0.8692587018013 -0.0 0.014758676290512085 0.4464564323425293 0 1.0 0 0.0 0 0.0 0 0.0\n0.378828763961792 -0.11091089993715286 0.21605446934700012 0.4943082928657532 0.8692587018013 -0.0 0.45010286569595337 0.2857872247695923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 1.0160439014434814 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 1.0116513967514038 0.7508395314216614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 0.21605446934700012 -0.21018096804618835 -0.9776299595832825 -0.0 0.5556848645210266 0.5576752424240112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 -0.2839455306529999 0.2850733995437622 -0.9584948420524597 -0.0 1.002036690711975 0.6171183586120605 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 -0.2839455306529999 0.299569696187973 -0.9540390968322754 -0.0 0.9996907711029053 0.6184368133544922 0 1.0 0 0.0 0 0.0 0 0.0\n-1.428524374961853 -0.006379365921020508 0.21605446934700012 0.299569696187973 -0.9540390968322754 -0.0 0.5732494592666626 0.4284428358078003 0 1.0 0 0.0 0 0.0 0 0.0\n0.47641563415527344 -0.1115189865231514 -0.2839455306529999 -0.46244698762893677 0.886623740196228 -0.0 0.9581100940704346 0.44357115030288696 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.960377037525177 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 0.21605446934700012 -0.40171512961387634 0.9157384037971497 -0.0 0.5192342400550842 0.2804054617881775 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.99993896484375 0.008301034569740295 -0.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 -0.2839455306529999 0.999969482421875 0.0038453321903944016 -0.0 0.9719215631484985 0.6577943563461304 0 1.0 0 0.0 0 0.0 0 0.0\n1.781799554824829 -0.047662943601608276 0.21605446934700012 0.999969482421875 0.0038453321903944016 -0.0 0.49877843260765076 0.49449795484542847 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.52232426404953 0.8527176976203918 -0.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 -0.2839455306529999 0.45512253046035767 0.8904080390930176 -0.0 0.9199471473693848 0.7631135582923889 0 1.0 0 0.0 0 0.0 0 0.0\n1.1073460578918457 0.17778706550598145 0.21605448424816132 0.45512253046035767 0.8904080390930176 -0.0 0.5331688523292542 0.6088377237319946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.053524374961853 0.11937102675437927 -0.2839455306529999 -0.21018096804618835 -0.9776299595832825 -0.0 1.0116513967514038 0.7508395314216614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 1.007440447807312 0.7491217851638794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 0.21605446934700012 -0.2839747369289398 -0.9588000178337097 -0.0 0.5587841272354126 0.556570291519165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.27262184023857117 -0.9620960354804993 -0.0 1.0045902729034424 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 -0.2839455306529999 0.2850733995437622 -0.9584948420524597 -0.0 1.002036690711975 0.6171183586120605 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4321365356445312 -0.007481232285499573 0.21605446934700012 0.2850733995437622 -0.9584948420524597 -0.0 0.5711151957511902 0.42655032873153687 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830122470855713 -0.05259701609611511 -0.2839455306529999 -0.999969482421875 -0.0012817773967981339 -0.0 0.0392301082611084 0.6476972699165344 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 -0.999969482421875 -0.005371257662773132 -0.0 0.03887012600898743 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 0.21605446934700012 -0.999969482421875 -0.005371257662773132 -0.0 0.4384920597076416 0.4817414879798889 0 1.0 0 0.0 0 0.0 0 0.0\n0.9352405071258545 0.17316675186157227 -0.2839455306529999 -0.5230872631072998 0.8522598743438721 -0.0 0.05104157328605652 0.763035237789154 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 -0.5828424692153931 0.8125553131103516 -0.0 0.05687263607978821 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 0.21605446934700012 -0.5828424692153931 0.8125553131103516 -0.0 0.4352259635925293 0.6024113893508911 0 1.0 0 0.0 0 0.0 0 0.0\n-1.626681923866272 -0.007580965757369995 -0.2839455306529999 -0.7032380104064941 0.7109286785125732 -0.0 0.12289077043533325 0.5883170366287231 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 -0.7373882532119751 0.6754356622695923 -0.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 0.21605446934700012 -0.7373882532119751 0.6754356622695923 -0.0 0.45057305693626404 0.4158787727355957 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031494140625 0.4421793222427368 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 -0.2839455306529999 0.4352244734764099 0.9002960324287415 -0.0 0.012597858905792236 0.44421011209487915 0 1.0 0 0.0 0 0.0 0 0.0\n0.38257455825805664 -0.11287504434585571 0.21605446934700012 0.4352244734764099 0.9002960324287415 -0.0 0.45266231894493103 0.2830923795700073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0481414794921875 0.11800038814544678 -0.2839455306529999 -0.2839747369289398 -0.9588000178337097 -0.0 1.007440447807312 0.7491217851638794 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 1.0034195184707642 0.7469233274459839 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 0.21605446934700012 -0.3577074408531189 -0.9338053464889526 -0.0 0.5617994070053101 0.5550513863563538 0 1.0 0 0.0 0 0.0 0 0.0\n0.472548246383667 -0.11336759477853775 -0.2839455306529999 -0.40171512961387634 0.9157384037971497 -0.0 0.960377037525177 0.441622257232666 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939085066318512 -0.0 0.9627904891967773 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 0.21605446934700012 -0.34366893768310547 0.939085066318512 -0.0 0.516277015209198 0.2782076597213745 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 -0.2839455306529999 0.999908447265625 0.01348918117582798 -0.0 0.9722524285316467 0.6419804692268372 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 -0.2839455306529999 0.99993896484375 0.008301034569740295 -0.0 0.9721057415008545 0.6496121883392334 0 1.0 0 0.0 0 0.0 0 0.0\n1.7818396091461182 -0.054460227489471436 0.21605446934700012 0.99993896484375 0.008301034569740295 -0.0 0.49879494309425354 0.4863094091415405 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.5866267681121826 0.8098391890525818 -0.0 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 -0.2839455306529999 0.52232426404953 0.8527176976203918 -0.0 0.9137599468231201 0.7550764679908752 0 1.0 0 0.0 0 0.0 0 0.0\n1.1175329685211182 0.17207705974578857 0.21605448424816132 0.52232426404953 0.8527176976203918 -0.0 0.5384877324104309 0.60286545753479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0429385900497437 0.11623811721801758 -0.2839455306529999 -0.3577074408531189 -0.9338053464889526 -0.0 1.0034195184707642 0.7469233274459839 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.9995948672294617 0.7442548871040344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 0.21605446934700012 -0.4300057888031006 -0.9027985334396362 -0.0 0.5647335052490234 0.5531189441680908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 -0.2839455306529999 0.2618182897567749 -0.965086817741394 -0.0 1.0073527097702026 0.6142528057098389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 -0.2839455306529999 0.27262184023857117 -0.9620960354804993 -0.0 1.0045902729034424 0.615726113319397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.436055064201355 -0.00861714780330658 0.21605446934700012 0.27262184023857117 -0.9620960354804993 -0.0 0.5687727928161621 0.424571692943573 0 1.0 0 0.0 0 0.0 0 0.0\n0.9259414672851562 0.16698485612869263 -0.2839455306529999 -0.5828424692153931 0.8125553131103516 -0.0 0.05687263607978821 0.7551867961883545 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 -0.6382641196250916 0.7697988748550415 -0.0 0.06215009093284607 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 0.21605446934700012 -0.6382641196250916 0.7697988748550415 -0.0 0.4303847849369049 0.5957629680633545 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.999786376953125 0.019684437662363052 -0.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 -0.2839455306529999 0.999908447265625 0.01348918117582798 -0.0 0.9722524285316467 0.6419804692268372 0 1.0 0 0.0 0 0.0 0 0.0\n1.7819068431854248 -0.06072968244552612 0.21605446934700012 0.999908447265625 0.01348918117582798 -0.0 0.4988292455673218 0.47867339849472046 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007908552885055542 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 -0.2839455306529999 0.37711721658706665 0.9261451959609985 -0.0 0.01031494140625 0.4421793222427368 0 1.0 0 0.0 0 0.0 0 0.0\n0.3865344524383545 -0.11463243514299393 0.21605446934700012 0.37711721658706665 0.9261451959609985 -0.0 0.45541778206825256 0.2806205153465271 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0379157066345215 0.11408424377441406 -0.2839455306529999 -0.4300057888031006 -0.9027985334396362 -0.0 0.9995948672294617 0.7442548871040344 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9959707856178284 0.7411254644393921 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 0.21605446934700012 -0.4994964301586151 -0.8662984371185303 -0.0 0.567589282989502 0.5507723093032837 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.252327024936676 -0.9676198363304138 -0.0 1.0103250741958618 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 -0.2839455306529999 0.2618182897567749 -0.965086817741394 -0.0 1.0073527097702026 0.6142528057098389 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4402800798416138 -0.009787127375602722 0.21605446934700012 0.2618182897567749 -0.965086817741394 -0.0 0.5662178993225098 0.4225098490715027 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830341815948486 -0.06105197221040726 -0.2839455306529999 -0.999969482421875 -0.005371257662773132 -0.0 0.03887012600898743 0.6378592848777771 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 -0.999908447265625 -0.011413922533392906 -0.0 0.03850892186164856 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 0.21605446934700012 -0.999908447265625 -0.011413922533392906 -0.0 0.43806785345077515 0.47238510847091675 0 1.0 0 0.0 0 0.0 0 0.0\n0.4684181213378906 -0.11502161622047424 -0.2839455306529999 -0.34366893768310547 0.939085066318512 -0.0 0.9627904891967773 0.43988388776779175 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 0.21605446934700012 -0.28882718086242676 0.9573656320571899 -0.0 0.5130914449691772 0.27623826265335083 0 1.0 0 0.0 0 0.0 0 0.0\n-1.629947304725647 -0.010974138975143433 -0.2839455306529999 -0.7373882532119751 0.6754356622695923 -0.0 0.12404951453208923 0.5839077234268188 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 -0.7697073221206665 0.6383861899375916 -0.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 0.21605446934700012 -0.7697073221206665 0.6383861899375916 -0.0 0.4488561451435089 0.4122235178947449 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.6469008326530457 0.7625354528427124 -0.0 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 -0.2839455306529999 0.5866267681121826 0.8098391890525818 -0.0 0.9082623720169067 0.7463341951370239 0 1.0 0 0.0 0 0.0 0 0.0\n1.1272332668304443 0.16560572385787964 0.21605446934700012 0.5866267681121826 0.8098391890525818 -0.0 0.5435309410095215 0.5961958169937134 0 1.0 0 0.0 0 0.0 0 0.0\n-1.033072829246521 0.11153876781463623 -0.2839455306529999 -0.4994964301586151 -0.8662984371185303 -0.0 0.9959707856178284 0.7411254644393921 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9925497770309448 0.7375422716140747 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 0.21605446934700012 -0.5649586319923401 -0.8250983953475952 -0.0 0.5703694224357605 0.5480096936225891 0 1.0 0 0.0 0 0.0 0 0.0\n0.9169976711273193 0.16007569432258606 -0.2839455306529999 -0.6382641196250916 0.7697988748550415 -0.0 0.06215009093284607 0.7465975880622864 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 -0.6889248490333557 0.7248145937919617 -0.0 0.06690171360969543 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 0.21605446934700012 -0.6889248490333557 0.7248145937919617 -0.0 0.4257209300994873 0.588405191898346 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.999603271484375 0.027222510427236557 -0.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 -0.2839455306529999 0.999786376953125 0.019684437662363052 -0.0 0.9723632335662842 0.6349261999130249 0 1.0 0 0.0 0 0.0 0 0.0\n1.7820003032684326 -0.06647131592035294 0.21605446934700012 0.999786376953125 0.019684437662363052 -0.0 0.4988810122013092 0.4716169834136963 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 -0.2839455306529999 0.8994414806365967 -0.4369640052318573 -0.0 0.9034560918807983 0.4446355700492859 0 1.0 0 0.0 0 0.0 0 0.0\n0.5844135284423828 -0.11520648002624512 0.21605446934700012 0.8994414806365967 -0.4369640052318573 -0.0 0.5878931283950806 0.3063850998878479 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0284099578857422 0.1086016595363617 -0.2839455306529999 -0.5649586319923401 -0.8250983953475952 -0.0 0.9925497770309448 0.7375422716140747 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.989332914352417 0.7335114479064941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 0.21605446934700012 -0.6255073547363281 -0.7801751494407654 -0.0 0.5730769038200378 0.5448282957077026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 -0.2839455306529999 0.24396497011184692 -0.9697561264038086 -0.0 1.0135072469711304 0.6110315918922424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 -0.2839455306529999 0.252327024936676 -0.9676198363304138 -0.0 1.0103250741958618 0.6126905679702759 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4448117017745972 -0.010991156101226807 0.21605446934700012 0.252327024936676 -0.9676198363304138 -0.0 0.5634464025497437 0.4203687906265259 0 1.0 0 0.0 0 0.0 0 0.0\n1.6830995082855225 -0.06902045011520386 -0.2839455306529999 -0.999908447265625 -0.011413922533392906 -0.0 0.03850892186164856 0.6284879446029663 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 -0.99981689453125 -0.01825006864964962 -0.0 0.03814530372619629 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 0.21605446934700012 -0.99981689453125 -0.01825006864964962 -0.0 0.4376918077468872 0.463517427444458 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005377382040023804 0.43876558542251587 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 -0.2839455306529999 0.32065796852111816 0.9471724629402161 -0.0 0.007908552885055542 0.4403642416000366 0 1.0 0 0.0 0 0.0 0 0.0\n0.39070844650268555 -0.1161830797791481 0.21605446934700012 0.32065796852111816 0.9471724629402161 -0.0 0.45837074518203735 0.27837908267974854 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.7022919654846191 0.7118747234344482 -0.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 -0.2839455306529999 0.6469008326530457 0.7625354528427124 -0.0 0.9034109115600586 0.7369210720062256 0 1.0 0 0.0 0 0.0 0 0.0\n1.1364471912384033 0.15837302803993225 0.21605446934700012 0.6469008326530457 0.7625354528427124 -0.0 0.5483102798461914 0.5888283848762512 0 1.0 0 0.0 0 0.0 0 0.0\n-1.023927092552185 0.10527294874191284 -0.2839455306529999 -0.6255073547363281 -0.7801751494407654 -0.0 0.989332914352417 0.7335114479064941 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9863194823265076 0.7290369868278503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 0.21605446934700012 -0.6805322170257568 -0.7326883673667908 -0.0 0.5757145881652832 0.5412243604660034 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 -0.2839455306529999 0.23651844263076782 -0.9716177582740784 -0.0 1.01689875125885 0.6092678904533386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 -0.2839455306529999 0.24396497011184692 -0.9697561264038086 -0.0 1.0135072469711304 0.6110315918922424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.449649691581726 -0.012229233980178833 0.21605446934700012 0.24396497011184692 -0.9697561264038086 -0.0 0.5604545474052429 0.41815340518951416 0 1.0 0 0.0 0 0.0 0 0.0\n0.46402525901794434 -0.11648104339838028 -0.2839455306529999 -0.28882718086242676 0.9573656320571899 -0.0 0.9653520584106445 0.43835723400115967 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680632948875427 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 0.21605446934700012 -0.2374645173549652 0.9713736176490784 -0.0 0.5096766352653503 0.27450883388519287 0 1.0 0 0.0 0 0.0 0 0.0\n0.9084088802337646 0.15243923664093018 -0.2839455306529999 -0.6889248490333557 0.7248145937919617 -0.0 0.06690171360969543 0.7372899651527405 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 -0.7363505959510803 0.6765648126602173 -0.0 0.07115733623504639 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 0.21605446934700012 -0.7363505959510803 0.6765648126602173 -0.0 0.42122650146484375 0.580331563949585 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 -0.2839455306529999 0.99932861328125 0.03656117618083954 -0.0 0.9724791049957275 0.6226339936256409 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 -0.2839455306529999 0.999603271484375 0.027222510427236557 -0.0 0.9724383354187012 0.6284713745117188 0 1.0 0 0.0 0 0.0 0 0.0\n1.782120943069458 -0.07168512046337128 0.21605446934700012 0.999603271484375 0.027222510427236557 -0.0 0.4989510476589203 0.4651622176170349 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0196242332458496 0.10155263543128967 -0.2839455306529999 -0.6805322170257568 -0.7326883673667908 -0.0 0.9863194823265076 0.7290369868278503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9835079908370972 0.7241215705871582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 0.21605446934700012 -0.729667067527771 -0.6837671995162964 -0.0 0.5782853364944458 0.5371930599212646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.2298654168844223 -0.9732047319412231 -0.0 1.020498275756836 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 -0.2839455306529999 0.23651844263076782 -0.9716177582740784 -0.0 1.01689875125885 0.6092678904533386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4547940492630005 -0.013501375913619995 0.21605446934700012 0.23651844263076782 -0.9716177582740784 -0.0 0.5572388768196106 0.4158700704574585 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6330450773239136 -0.014527842402458191 -0.2839455306529999 -0.7697073221206665 0.6383861899375916 -0.0 0.12508833408355713 0.5794050693511963 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 -0.7999511957168579 0.600054919719696 -0.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 0.21605446934700012 -0.7999511957168579 0.600054919719696 -0.0 0.4472181797027588 0.4084261655807495 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.9988097548484802 0.04849391058087349 -0.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 -0.2839455306529999 0.99932861328125 0.03656117618083954 -0.0 0.9724791049957275 0.6226339936256409 0 1.0 0 0.0 0 0.0 0 0.0\n1.7822678089141846 -0.07637109607458115 0.21605446934700012 0.99932861328125 0.03656117618083954 -0.0 0.4990389347076416 0.45932698249816895 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 0.002720385789871216 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 -0.2839455306529999 0.26645711064338684 0.9638355374336243 -0.0 0.005377382040023804 0.43876558542251587 0 1.0 0 0.0 0 0.0 0 0.0\n0.3950965404510498 -0.11752697080373764 0.21605446934700012 0.26645711064338684 0.9638355374336243 -0.0 0.4615219831466675 0.27637648582458496 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.7547532320022583 0.6559648513793945 -0.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 -0.2839455306529999 0.7022919654846191 0.7118747234344482 -0.0 0.8991608619689941 0.7268599271774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.145174503326416 0.1503790020942688 0.21605446934700012 0.7022919654846191 0.7118747234344482 -0.0 0.552838146686554 0.5807584524154663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0155013799667358 0.0974406898021698 -0.2839455306529999 -0.729667067527771 -0.6837671995162964 -0.0 0.9835079908370972 0.7241215705871582 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 -0.2839455306529999 -0.7775200605392456 -0.6288338899612427 -0.0 0.9808957576751709 0.7187663316726685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 0.21605446934700012 -0.7775200605392456 -0.6288338899612427 -0.0 0.5807920694351196 0.5327289700508118 0 1.0 0 0.0 0 0.0 0 0.0\n1.6832091808319092 -0.07650244981050491 -0.2839455306529999 -0.99981689453125 -0.01825006864964962 -0.0 0.03814530372619629 0.6196141839027405 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 -0.9996337890625 -0.026032287627458572 -0.0 0.03777933120727539 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 0.21605446934700012 -0.9996337890625 -0.026032287627458572 -0.0 0.4373648166656494 0.45516377687454224 0 1.0 0 0.0 0 0.0 0 0.0\n0.4593696594238281 -0.11774588376283646 -0.2839455306529999 -0.2374645173549652 0.9713736176490784 -0.0 0.9680632948875427 0.43704426288604736 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709254503250122 0.43594735860824585 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 0.21605446934700012 -0.1896725296974182 0.981841504573822 -0.0 0.5060328841209412 0.27303242683410645 0 1.0 0 0.0 0 0.0 0 0.0\n0.9001753330230713 0.14407548308372498 -0.2839455306529999 -0.7363505959510803 0.6765648126602173 -0.0 0.07115733623504639 0.7272799015045166 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 -0.7825861573219299 0.6225165724754333 -0.0 0.07486656308174133 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 0.21605446934700012 -0.7825861573219299 0.6225165724754333 -0.0 0.41697314381599426 0.571623682975769 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0115585327148438 0.09293714165687561 -0.2839455306529999 -0.7775200605392456 -0.6288338899612427 -0.0 0.9808957576751709 0.7187663316726685 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 -0.2839455306529999 -0.82668536901474 -0.5626392364501953 -0.0 0.9785283803939819 0.7129271030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 0.21605446934700012 -0.82668536901474 -0.5626392364501953 -0.0 0.5832045078277588 0.5277668237686157 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 -0.2839455306529999 0.22385326027870178 -0.9746086001396179 -0.0 1.0243034362792969 0.6053946018218994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 -0.2839455306529999 0.2298654168844223 -0.9732047319412231 -0.0 1.020498275756836 0.6073914766311646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4602450132369995 -0.014807567000389099 0.21605446934700012 0.2298654168844223 -0.9732047319412231 -0.0 0.5537964105606079 0.41352611780166626 0 1.0 0 0.0 0 0.0 0 0.0\n0.2643401622772217 -0.1180596575140953 -0.2839455306529999 -0.8555864095687866 -0.5175939202308655 -0.0 0.07244819402694702 0.4490988850593567 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005178928375244 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 0.21605446934700012 -0.8221076130867004 -0.5692922472953796 -0.0 0.38283199071884155 0.3046743869781494 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.9979247450828552 0.06414990872144699 -0.0 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 -0.2839455306529999 0.9988097548484802 0.04849391058087349 -0.0 0.9724854826927185 0.6174278855323792 0 1.0 0 0.0 0 0.0 0 0.0\n1.7824418544769287 -0.08052925020456314 0.21605446934700012 0.9988097548484802 0.04849391058087349 -0.0 0.49914538860321045 0.4541251063346863 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.8058107495307922 0.5921201109886169 -0.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 -0.2839455306529999 0.7547532320022583 0.6559648513793945 -0.0 0.8954682946205139 0.7161635160446167 0 1.0 0 0.0 0 0.0 0 0.0\n1.1534152030944824 0.14162364602088928 0.21605446934700012 0.7547532320022583 0.6559648513793945 -0.0 0.5571272969245911 0.5719776153564453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0078662633895874 0.08798837661743164 -0.2839455306529999 -0.82668536901474 -0.5626392364501953 -0.0 0.9785283803939819 0.7129271030426025 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 -0.2839455306529999 -0.8707236051559448 -0.4917142391204834 -0.0 0.9764478802680969 0.7065575122833252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 0.21605446934700012 -0.8707236051559448 -0.4917142391204834 -0.0 0.5854932069778442 0.5222377777099609 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 -0.2839455306529999 0.21842096745967865 -0.9758293628692627 -0.0 1.028309941291809 0.6032699346542358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 -0.2839455306529999 0.22385326027870178 -0.9746086001396179 -0.0 1.0243034362792969 0.6053946018218994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4660025835037231 -0.016147807240486145 0.21605446934700012 0.22385326027870178 -0.9746086001396179 -0.0 0.550125002861023 0.4111306071281433 0 1.0 0 0.0 0 0.0 0 0.0\n1.6833622455596924 -0.08349797874689102 -0.2839455306529999 -0.9996337890625 -0.026032287627458572 -0.0 0.03777933120727539 0.6112633943557739 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 -0.999359130859375 -0.03509628772735596 -0.0 0.037410229444503784 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 0.21605446934700012 -0.999359130859375 -0.03509628772735596 -0.0 0.4370885491371155 0.4473446011543274 0 1.0 0 0.0 0 0.0 0 0.0\n0.8924548625946045 0.1350696086883545 -0.2839455306529999 -0.7825861573219299 0.6225165724754333 -0.0 0.07486656308174133 0.7167055606842041 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 -0.82601398229599 0.5636158585548401 -0.0 0.07799184322357178 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 0.21605446934700012 -0.82601398229599 0.5636158585548401 -0.0 0.4130285978317261 0.5623630285263062 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999364614486694 0.4362236261367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 -0.2839455306529999 0.2148503065109253 0.9766228199005127 -0.0 1.0027203559875488 0.43738478422164917 0 1.0 0 0.0 0 0.0 0 0.0\n0.39969849586486816 -0.11866410821676254 0.21605446934700012 0.2148503065109253 0.9766228199005127 -0.0 1.4648711681365967 0.27462226152420044 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0044950246810913 0.0825410783290863 -0.2839455306529999 -0.8707236051559448 -0.4917142391204834 -0.0 0.9764478802680969 0.7065575122833252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 -0.9058809280395508 -0.42347484827041626 -0.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 0.21605446934700012 -0.9058809280395508 -0.42347484827041626 -0.0 0.5876625180244446 0.5161285400390625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.2135074883699417 -0.9769279956817627 -0.0 1.0325127840042114 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 -0.2839455306529999 0.21842096745967865 -0.9758293628692627 -0.0 1.028309941291809 0.6032699346542358 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4720665216445923 -0.017522096633911133 0.21605446934700012 0.21842096745967865 -0.9758293628692627 -0.0 0.5462237000465393 0.40869390964508057 0 1.0 0 0.0 0 0.0 0 0.0\n0.454451322555542 -0.11881612986326218 -0.2839455306529999 -0.1896725296974182 0.981841504573822 -0.0 0.9709254503250122 0.43594735860824585 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739395380020142 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 0.21605446934700012 -0.14542070031166077 0.9893490672111511 -0.0 0.502161979675293 0.2718232274055481 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6359747648239136 -0.018242090940475464 -0.2839455306529999 -0.7999511957168579 0.600054919719696 -0.0 0.12601065635681152 0.5748099088668823 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 -0.8279671669006348 0.5607470870018005 -0.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 0.21605446934700012 -0.8279671669006348 0.5607470870018005 -0.0 0.44565656781196594 0.4044862389564514 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 -0.2839455306529999 0.9963072538375854 0.08566545695066452 -0.0 0.9723979234695435 0.6089496612548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 -0.2839455306529999 0.9979247450828552 0.06414990872144699 -0.0 0.9724583625793457 0.6128637790679932 0 1.0 0 0.0 0 0.0 0 0.0\n1.7826426029205322 -0.08415957540273666 0.21605446934700012 0.9979247450828552 0.06414990872144699 -0.0 0.4992702007293701 0.44956737756729126 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.8518326282501221 0.5237891674041748 -0.0 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 -0.2839455306529999 0.8058107495307922 0.5921201109886169 -0.0 0.8923484086990356 0.7048517465591431 0 1.0 0 0.0 0 0.0 0 0.0\n1.1610651016235352 0.13208264112472534 0.21605446934700012 0.8058107495307922 0.5921201109886169 -0.0 0.5611436367034912 0.562463641166687 0 1.0 0 0.0 0 0.0 0 0.0\n0.8854057788848877 0.1255066990852356 -0.2839455306529999 -0.82601398229599 0.5636158585548401 -0.0 0.07799184322357178 0.7057040929794312 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 -0.8645283579826355 0.5025787949562073 -0.0 0.08057984709739685 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 0.21605446934700012 -0.8645283579826355 0.5025787949562073 -0.0 0.4093787670135498 0.5525389909744263 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2162116765975952 0.1387108862400055 -0.2839455306529999 -0.7923825979232788 0.6100039482116699 -0.0 0.13128799200057983 0.7309117317199707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 -0.8371227383613586 0.5469832420349121 -0.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 0.21605446934700012 -0.8371227383613586 0.5469832420349121 -0.0 0.46431317925453186 0.5503852367401123 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 -0.2839455306529999 0.9931027889251709 0.11709952354431152 -0.0 0.9723045825958252 0.6056911945343018 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 -0.2839455306529999 0.9963072538375854 0.08566545695066452 -0.0 0.9723979234695435 0.6089496612548828 0 1.0 0 0.0 0 0.0 0 0.0\n1.7828700542449951 -0.08726207166910172 0.21605446934700012 0.9963072538375854 0.08566545695066452 -0.0 0.49941331148147583 0.4456617832183838 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970248341560364 0.43528419733047485 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 -0.2839455306529999 0.1660817265510559 0.9860835671424866 -0.0 0.9999364614486694 0.4362236261367798 0 1.0 0 0.0 0 0.0 0 0.0\n0.4045145511627197 -0.11959449201822281 0.21605446934700012 0.1660817265510559 0.9860835671424866 -0.0 1.4684172868728638 0.27312713861465454 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 -0.2839455306529999 0.21283608675003052 -0.9770805835723877 -0.0 1.0369054079055786 0.59861159324646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 -0.2839455306529999 0.2135074883699417 -0.9769279956817627 -0.0 1.0325127840042114 0.601010799407959 0 1.0 0 0.0 0 0.0 0 0.0\n-1.478436827659607 -0.018930450081825256 0.21605446934700012 0.2135074883699417 -0.9769279956817627 -0.0 0.5420928001403809 0.4062280058860779 0 1.0 0 0.0 0 0.0 0 0.0\n0.44927024841308594 -0.11969178915023804 -0.2839455306529999 -0.14542070031166077 0.9893490672111511 -0.0 0.9739395380020142 0.43506962060928345 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771062135696411 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 0.21605446934700012 -0.10455641150474548 0.9945066571235657 -0.0 0.49806731939315796 0.27089667320251465 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.9859004616737366 0.1672719568014145 -0.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 -0.2839455306529999 0.9931027889251709 0.11709952354431152 -0.0 0.9723045825958252 0.6056911945343018 0 1.0 0 0.0 0 0.0 0 0.0\n1.7831242084503174 -0.08983674645423889 0.21605446934700012 0.9931027889251709 0.11709952354431152 -0.0 0.4995746612548828 0.4424140453338623 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.06277657300233841 -0.9980162978172302 -0.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 -0.0001831110566854477 -1.0 -0.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 0.21605446934700012 -0.0001831110566854477 -0.999969482421875 -0.0 0.49023085832595825 0.5616816878318787 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 1.0206077098846436 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 -0.2839455306529999 -0.13760796189308167 -0.9904782176017761 -0.0 1.0160439014434814 0.7520646452903748 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0590872764587402 0.12035006284713745 0.21605446934700012 -0.13760796189308167 -0.9904782176017761 -0.0 0.5524991154670715 0.5583648085594177 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 -0.2839455306529999 0.22058779001235962 -0.9753410220146179 -0.0 0.04124736785888672 0.5961276888847351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 -0.2839455306529999 0.21283608675003052 -0.9770805835723877 -0.0 1.0369054079055786 0.59861159324646 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4851137399673462 -0.020372852683067322 0.21605446934700012 0.21283608675003052 -0.9770805835723877 -0.0 0.5377336740493774 0.4037465453147888 0 1.0 0 0.0 0 0.0 0 0.0\n1.6835591793060303 -0.09000702947378159 -0.2839455306529999 -0.999359130859375 -0.03509628772735596 -0.0 0.037410229444503784 0.6034562587738037 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 -0.9989318251609802 -0.045625172555446625 -0.0 0.03703737258911133 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 0.21605446934700012 -0.9989318251609802 -0.045625172555446625 -0.0 0.4368642568588257 0.4400756359100342 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2226988077163696 0.12956392765045166 -0.2839455306529999 -0.8371227383613586 0.5469832420349121 -0.0 0.13340923190116882 0.7201611995697021 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 -0.8756370544433594 0.4829248785972595 -0.0 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 0.21605446934700012 -0.8756370544433594 0.4829248785972595 -0.0 0.4612388014793396 0.5406763553619385 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939851760864258 0.43456918001174927 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 -0.2839455306529999 0.12024292349815369 0.9927365779876709 -0.0 0.9970248341560364 0.43528419733047485 0 1.0 0 0.0 0 0.0 0 0.0\n0.4095447063446045 -0.12031812220811844 0.21605446934700012 0.12024292349815369 0.9927365779876709 -0.0 1.4721579551696777 0.27190256118774414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.23349711298942566 -0.9723502397537231 -0.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 -0.2839455306529999 0.22058779001235962 -0.9753410220146179 -0.0 0.04124736785888672 0.5961276888847351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4917467832565308 -0.021829843521118164 0.21605446934700012 0.22058779001235962 -0.9753410220146179 -0.0 0.5333826541900635 0.40131789445877075 0 1.0 0 0.0 0 0.0 0 0.0\n0.44382667541503906 -0.12037285417318344 -0.2839455306529999 -0.10455641150474548 0.9945066571235657 -0.0 0.9771062135696411 0.43441450595855713 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804256558418274 0.43398576974868774 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 0.21605446934700012 -0.06689657270908356 0.9977416396141052 -0.0 0.4937538802623749 0.2702690362930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.0283715724945068 0.12113326787948608 -0.2839455306529999 -0.0001831110566854477 -1.0 -0.0 0.9810165762901306 0.7254688739776611 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 -0.0633259043097496 -0.9979857802391052 -0.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 0.21605446934700012 -0.0633259043097496 -0.9979857802391052 -0.0 0.4931207001209259 0.5613721013069153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6387368440628052 -0.022116869688034058 -0.2839455306529999 -0.8279671669006348 0.5607470870018005 -0.0 0.1268201470375061 0.570122480392456 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 -0.8537247776985168 0.52067631483078 -0.0 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 0.21605446934700012 -0.8537247776985168 0.52067631483078 -0.0 0.44416937232017517 0.4004032611846924 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 -0.2839455306529999 0.9713736176490784 0.2374339997768402 -0.0 0.9720193147659302 0.6011558771133423 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 -0.2839455306529999 0.9859004616737366 0.1672719568014145 -0.0 0.9721783995628357 0.6030924320220947 0 1.0 0 0.0 0 0.0 0 0.0\n1.783405065536499 -0.0918835923075676 0.21605446934700012 0.9859004616737366 0.1672719568014145 -0.0 0.4997541606426239 0.4398283362388611 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0002441480755805969 -0.999969482421875 -0.0 1.0253300666809082 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 -0.2839455306529999 -0.06741538643836975 -0.9977111220359802 -0.0 1.0206077098846436 0.7527838349342346 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0648301839828491 0.12093746662139893 0.21605446934700012 -0.06741538643836975 -0.9977111220359802 -0.0 0.549224317073822 0.5586365461349487 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 -0.2839455306529999 0.9525132179260254 0.30448317527770996 -0.0 0.9718208312988281 0.5995715856552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 -0.2839455306529999 0.9713736176490784 0.2374339997768402 -0.0 0.9720193147659302 0.6011558771133423 0 1.0 0 0.0 0 0.0 0 0.0\n1.78371262550354 -0.09340262413024902 0.21605446934700012 0.9713736176490784 0.2374339997768402 -0.0 0.4999516010284424 0.43790704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908171892166138 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 -0.2839455306529999 0.07739493995904922 0.9969786405563354 -0.0 0.9939851760864258 0.43456918001174927 0 1.0 0 0.0 0 0.0 0 0.0\n0.41478896141052246 -0.12083500623703003 0.21605446934700012 0.07739493995904922 0.9969786405563354 -0.0 1.4760892391204834 0.27096086740493774 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.8901638984680176 0.45558029413223267 -0.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 -0.2839455306529999 0.8518326282501221 0.5237891674041748 -0.0 0.8898118734359741 0.6929334402084351 0 1.0 0 0.0 0 0.0 0 0.0\n1.1680192947387695 0.12173163890838623 0.21605446934700012 0.8518326282501221 0.5237891674041748 -0.0 0.5648558139801025 0.5521864295005798 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 -0.2839455306529999 0.06833094358444214 -0.9976500868797302 -0.0 1.0299208164215088 0.7526613473892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 -0.2839455306529999 0.0002441480755805969 -0.999969482421875 -0.0 1.0253300666809082 0.7529829144477844 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0707529783248901 0.12113326787948608 0.21605446934700012 0.0002441480755805969 -1.0 -0.0 0.5458582043647766 0.558487057685852 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 -0.2839455306529999 0.24808496236801147 -0.9687185287475586 -0.0 0.049069106578826904 0.591133713722229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 -0.2839455306529999 0.23349711298942566 -0.9723502397537231 -0.0 0.045302391052246094 0.5936297178268433 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4979859590530396 -0.023281976580619812 0.21605446934700012 0.23349711298942566 -0.9723502397537231 -0.0 0.5292789340019226 0.3989958167076111 0 1.0 0 0.0 0 0.0 0 0.0\n0.43812036514282227 -0.12085933238267899 -0.2839455306529999 -0.06689657270908356 0.9977416396141052 -0.0 0.9804256558418274 0.43398576974868774 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838976860046387 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 0.21605446934700012 -0.032227545976638794 0.99945068359375 -0.0 0.48922884464263916 0.2699575424194336 0 1.0 0 0.0 0 0.0 0 0.0\n1.0333290100097656 0.12097880244255066 -0.2839455306529999 -0.0633259043097496 -0.9979857802391052 -0.0 0.9772898554801941 0.725033164024353 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 -0.2839455306529999 -0.12878811359405518 -0.9916684627532959 -0.0 0.9736800193786621 0.7242040634155273 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 0.21605446934700012 -0.12878811359405518 -0.9916684627532959 -0.0 0.4959324598312378 0.5607290267944336 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 -0.2839455306529999 0.9325845837593079 0.36088138818740845 -0.0 0.9715766310691833 0.5980284214019775 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 -0.2839455306529999 0.9525132179260254 0.30448317527770996 -0.0 0.9718208312988281 0.5995715856552124 0 1.0 0 0.0 0 0.0 0 0.0\n1.7840678691864014 -0.09463948756456375 0.21605446934700012 0.9525132179260254 0.30448317527770996 -0.0 0.5001802444458008 0.4363413453102112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 -0.2839455306529999 0.13904233276844025 -0.9902645945549011 -0.0 1.034368634223938 0.7518304586410522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 -0.2839455306529999 0.06833094358444214 -0.9976500868797302 -0.0 1.0299208164215088 0.7526613473892212 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0765116214752197 0.12093991041183472 0.21605446934700012 0.06833094358444214 -0.9976500868797302 -0.0 0.542594313621521 0.5579367280006409 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.26462599635124207 -0.964323878288269 -0.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 -0.2839455306529999 0.24808496236801147 -0.9687185287475586 -0.0 0.049069106578826904 0.591133713722229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.503830909729004 -0.024729236960411072 0.21605446934700012 0.24808496236801147 -0.9687185287475586 -0.0 0.5254290699958801 0.39677244424819946 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252188205718994 -0.024926260113716125 -0.2839455306529999 -0.999969482421875 0.0023194067180156708 -0.0 0.9976115226745605 0.5954424738883972 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 -0.2839455306529999 -0.99993896484375 0.009704886004328728 -0.0 0.9976453185081482 0.5883469581604004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 0.21605446934700012 -0.99993896484375 0.009704886004328728 -0.0 0.5774822235107422 0.39922070503234863 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.9089937806129456 0.41679129004478455 -0.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 -0.2839455306529999 0.9325845837593079 0.36088138818740845 -0.0 0.9715766310691833 0.5980284214019775 0 1.0 0 0.0 0 0.0 0 0.0\n1.7844913005828857 -0.09583986550569534 0.21605446934700012 0.9325845837593079 0.36088138818740845 -0.0 0.5004534125328064 0.43482106924057007 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 -0.2839455306529999 0.03747672960162163 0.999267578125 -0.0 0.9908171892166138 0.434081494808197 0 1.0 0 0.0 0 0.0 0 0.0\n0.42024731636047363 -0.12114513665437698 0.21605446934700012 0.03747672960162163 0.999267578125 -0.0 1.4802062511444092 0.27031534910202026 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 -0.2839455306529999 0.1281472146511078 -0.9917294979095459 -0.0 0.9888919591903687 0.7250957489013672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 -0.2839455306529999 0.06277657300233841 -0.9980162978172302 -0.0 0.9850102663040161 0.7255008220672607 0 1.0 0 0.0 0 0.0 0 0.0\n1.0230786800384521 0.12097030878067017 0.21605446934700012 0.06277657300233841 -0.9980162978172302 -0.0 1.48714017868042 0.5616525411605835 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.21167638897895813 -0.9773247241973877 -0.0 1.0386587381362915 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 -0.2839455306529999 0.13904233276844025 -0.9902645945549011 -0.0 1.034368634223938 0.7518304586410522 0 1.0 0 0.0 0 0.0 0 0.0\n-1.082112193107605 0.12035977840423584 0.21605446934700012 0.13904233276844025 -0.9902645945549011 -0.0 0.5394285321235657 0.5569874048233032 0 1.0 0 0.0 0 0.0 0 0.0\n1.6837999820709229 -0.0960296019911766 -0.2839455306529999 -0.9989318251609802 -0.045625172555446625 -0.0 0.03703737258911133 0.5962085127830505 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 -0.9982909560203552 -0.05813775956630707 -0.0 0.03666028380393982 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 0.21605446934700012 -0.9982909560203552 -0.05813775956630707 -0.0 0.43669307231903076 0.4333688020706177 0 1.0 0 0.0 0 0.0 0 0.0\n0.43215131759643555 -0.12115121632814407 -0.2839455306529999 -0.032227545976638794 0.99945068359375 -0.0 0.9838976860046387 0.43378758430480957 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 -0.2839455306529999 0.0012817773967981339 0.999969482421875 -0.0 0.9875213503837585 0.4338241219520569 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.1212485134601593 0.21605446934700012 0.0012817773967981339 0.999969482421875 -0.0 1.484501600265503 0.2699793577194214 0 1.0 0 0.0 0 0.0 0 0.0\n1.0381596088409424 0.12051543593406677 -0.2839455306529999 -0.12878811359405518 -0.9916684627532959 -0.0 0.9736800193786621 0.7242040634155273 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 -0.2839455306529999 -0.19602037966251373 -0.9805902242660522 -0.0 0.9701930284500122 0.7229883670806885 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 0.21605446934700012 -0.19602037966251373 -0.9805902242660522 -0.0 0.49866729974746704 0.5597536563873291 0 1.0 0 0.0 0 0.0 0 0.0\n-1.228568196296692 0.11978697776794434 -0.2839455306529999 -0.8756370544433594 0.4829248785972595 -0.0 0.1350199580192566 0.7089823484420776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 -0.9079561829566956 0.4190496504306793 -0.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 0.21605446934700012 -0.9079561829566956 0.4190496504306793 -0.0 0.45841383934020996 0.530331015586853 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6413308382034302 -0.026152193546295166 -0.2839455306529999 -0.8537247776985168 0.52067631483078 -0.0 0.12751969695091248 0.5653431415557861 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 -0.8774986863136292 0.47950682044029236 -0.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 0.21605446934700012 -0.8774986863136292 0.47950682044029236 -0.0 0.44276612997055054 0.396209716796875 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 -0.2839455306529999 0.8817102313041687 0.47172459959983826 -0.0 0.9709528684616089 0.5950659513473511 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 -0.2839455306529999 0.9089937806129456 0.41679129004478455 -0.0 0.9712873697280884 0.5965265035629272 0 1.0 0 0.0 0 0.0 0 0.0\n1.784982442855835 -0.0970037579536438 0.21605446934700012 0.9089937806129456 0.41679129004478455 -0.0 0.5007707476615906 0.4333465099334717 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 -0.2839455306529999 0.19583727419376373 -0.9806207418441772 -0.0 0.9926527738571167 0.7242611050605774 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 -0.2839455306529999 0.1281472146511078 -0.9917294979095459 -0.0 0.9888919591903687 0.7250957489013672 0 1.0 0 0.0 0 0.0 0 0.0\n1.0179414749145508 0.12048140168190002 0.21605446934700012 0.1281472146511078 -0.9917294979095459 -0.0 1.484134554862976 0.5612612962722778 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 -0.2839455306529999 0.2850123643875122 -0.9584948420524597 -0.0 0.0427783727645874 0.7486751079559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 -0.2839455306529999 0.21167638897895813 -0.9773247241973877 -0.0 0.038658708333969116 0.7504989504814148 0 1.0 0 0.0 0 0.0 0 0.0\n-1.087554693222046 0.11939290165901184 0.21605446934700012 0.21167638897895813 -0.9773247241973877 -0.0 0.5363602638244629 0.5556380748748779 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 -0.2839455306529999 0.28357797861099243 -0.9589220881462097 -0.0 0.05574190616607666 0.5862020254135132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 -0.2839455306529999 0.26462599635124207 -0.964323878288269 -0.0 0.05254825949668884 0.5886538028717041 0 1.0 0 0.0 0 0.0 0 0.0\n-1.509281873703003 -0.026171639561653137 0.21605446934700012 0.26462599635124207 -0.964323878288269 -0.0 0.5218374133110046 0.39463919401168823 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 -0.2839455306529999 0.8640400171279907 -0.503372311592102 -0.0 0.9056787490844727 0.4378116726875305 0 1.0 0 0.0 0 0.0 0 0.0\n0.5805556774139404 -0.12243308126926422 0.21605446934700012 0.8640400171279907 -0.503372311592102 -0.0 0.5865741968154907 0.2985714077949524 0 1.0 0 0.0 0 0.0 0 0.0\n1.0428638458251953 0.11974316835403442 -0.2839455306529999 -0.19602037966251373 -0.9805902242660522 -0.0 0.9701930284500122 0.7229883670806885 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 -0.2839455306529999 -0.2641376852989197 -0.964476466178894 -0.0 0.9668347239494324 0.7213927507400513 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 0.21605446934700012 -0.2641376852989197 -0.964476466178894 -0.0 0.5013262033462524 0.5584465265274048 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 -0.2839455306529999 0.8511307239532471 0.5248878598213196 -0.0 0.9705733060836792 0.5936467051506042 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 -0.2839455306529999 0.8817102313041687 0.47172459959983826 -0.0 0.9709528684616089 0.5950659513473511 0 1.0 0 0.0 0 0.0 0 0.0\n1.7855417728424072 -0.09813116490840912 0.21605446934700012 0.8817102313041687 0.47172459959983826 -0.0 0.5011327862739563 0.43191802501678467 0 1.0 0 0.0 0 0.0 0 0.0\n0.26895809173583984 -0.12518896162509918 -0.2839455306529999 -0.8221076130867004 -0.5692922472953796 -0.0 0.07005178928375244 0.4421687126159668 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747433543205261 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 0.21605446934700012 -0.7854243516921997 -0.6189458966255188 -0.0 0.38457003235816956 0.29679185152053833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 -0.2839455306529999 0.3577989935874939 -0.9337748289108276 -0.0 0.04671713709831238 0.7463663816452026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 -0.2839455306529999 0.2850123643875122 -0.9584948420524597 -0.0 0.0427783727645874 0.7486751079559326 0 1.0 0 0.0 0 0.0 0 0.0\n-1.092839002609253 0.11803928017616272 0.21605446934700012 0.2850123643875122 -0.9584948420524597 -0.0 0.5333884954452515 0.553887128829956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 -0.2839455306529999 0.30545976758003235 -0.9521775245666504 -0.0 0.05865311622619629 0.5837885141372681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 -0.2839455306529999 0.28357797861099243 -0.9589220881462097 -0.0 0.05574190616607666 0.5862020254135132 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5143388509750366 -0.027609169483184814 0.21605446934700012 0.28357797861099243 -0.9589220881462097 -0.0 0.5185067653656006 0.39258718490600586 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 -0.2839455306529999 0.8176214098930359 0.5757316946983337 -0.0 0.9701488018035889 0.5922689437866211 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 -0.2839455306529999 0.8511307239532471 0.5248878598213196 -0.0 0.9705733060836792 0.5936467051506042 0 1.0 0 0.0 0 0.0 0 0.0\n1.7861692905426025 -0.0992220863699913 0.21605446934700012 0.8511307239532471 0.5248878598213196 -0.0 0.5015394687652588 0.43053603172302246 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 -0.2839455306529999 0.26499220728874207 -0.964232325553894 -0.0 0.9962847232818604 0.7230038642883301 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 -0.2839455306529999 0.19583727419376373 -0.9806207418441772 -0.0 0.9926527738571167 0.7242611050605774 0 1.0 0 0.0 0 0.0 0 0.0\n1.0129599571228027 0.11966654658317566 0.21605446934700012 0.19583727419376373 -0.9806207418441772 -0.0 1.4812134504318237 0.5605089664459229 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 -0.2839455306529999 0.4286935031414032 -0.903439462184906 -0.0 0.050466328859329224 0.7435793876647949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 -0.2839455306529999 0.3577989935874939 -0.9337748289108276 -0.0 0.04671713709831238 0.7463663816452026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0979652404785156 0.11629891395568848 0.21605446934700012 0.3577989935874939 -0.9337748289108276 -0.0 0.5305119752883911 0.5517319440841675 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.33097323775291443 -0.9436323046684265 -0.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 -0.2839455306529999 0.30545976758003235 -0.9521775245666504 -0.0 0.05865311622619629 0.5837885141372681 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5190016031265259 -0.029041841626167297 0.21605446934700012 0.30545976758003235 -0.9521775245666504 -0.0 0.5154390335083008 0.39060717821121216 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 -0.2839455306529999 0.8250373601913452 -0.5650196671485901 -0.0 0.9081569910049438 0.431171178817749 0 1.0 0 0.0 0 0.0 0 0.0\n0.5761044025421143 -0.12946023046970367 0.21605446934700012 0.8250373601913452 -0.5650196671485901 -0.0 0.5848962068557739 0.2907968759536743 0 1.0 0 0.0 0 0.0 0 0.0\n1.0474414825439453 0.11866196990013123 -0.2839455306529999 -0.2641376852989197 -0.964476466178894 -0.0 0.9668347239494324 0.7213927507400513 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 -0.2839455306529999 -0.3320719003677368 -0.9432355761528015 -0.0 0.9636092185974121 0.7194227576255798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 0.21605446934700012 -0.3320719003677368 -0.9432355761528015 -0.0 0.503910481929779 0.5568075776100159 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6437366008758545 -0.03031519055366516 -0.2839455306529999 -0.8774986863136292 0.47950682044029236 -0.0 0.1281072497367859 0.5605101585388184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 -0.8994414806365967 0.4369945228099823 -0.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 0.21605446934700012 -0.8994414806365967 0.4369945228099823 -0.0 0.44145694375038147 0.39193618297576904 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 -0.2839455306529999 0.7817316055297852 0.6235846877098083 -0.0 0.9696797132492065 0.5909324884414673 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 -0.2839455306529999 0.8176214098930359 0.5757316946983337 -0.0 0.9701488018035889 0.5922689437866211 0 1.0 0 0.0 0 0.0 0 0.0\n1.786864995956421 -0.10027652233839035 0.21605446934700012 0.8176214098930359 0.5757011771202087 -0.0 0.5019909143447876 0.4292007088661194 0 1.0 0 0.0 0 0.0 0 0.0\n0.2740015983581543 -0.1320118010044098 -0.2839455306529999 -0.7854243516921997 -0.6189458966255188 -0.0 0.06747433543205261 0.43550050258636475 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470856070518494 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 0.21605446934700012 -0.7459334135055542 -0.6659749150276184 -0.0 0.38661396503448486 0.28905969858169556 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 -0.2839455306529999 0.49647510051727295 -0.8680074214935303 -0.0 0.05401936173439026 0.7403191328048706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 -0.2839455306529999 0.4286935031414032 -0.903439462184906 -0.0 0.050466328859329224 0.7435793876647949 0 1.0 0 0.0 0 0.0 0 0.0\n-1.102933406829834 0.11417180299758911 0.21605446934700012 0.4286935031414032 -0.903439462184906 -0.0 0.5277293920516968 0.5491690635681152 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 -0.2839455306529999 -0.33594775199890137 0.9418622255325317 -0.0 0.9314653873443604 0.5846927165985107 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 -0.2839455306529999 -0.32862329483032227 0.9444258213043213 -0.0 0.934057891368866 0.5834326148033142 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 0.21605446934700012 -0.32862329483032227 0.9444258213043213 -0.0 0.537887454032898 0.42787182331085205 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 -0.2839455306529999 0.334574431180954 -0.9423505067825317 -0.0 0.9997810125350952 0.7213302850723267 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 -0.2839455306529999 0.26499220728874207 -0.964232325553894 -0.0 0.9962847232818604 0.7230038642883301 0 1.0 0 0.0 0 0.0 0 0.0\n1.008134126663208 0.11852577328681946 0.21605446934700012 0.26499220728874207 -0.964232325553894 -0.0 1.478376030921936 0.5593962669372559 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.5601367354393005 -0.8283944129943848 -0.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 -0.2839455306529999 0.49647510051727295 -0.8680074214935303 -0.0 0.05401936173439026 0.7403191328048706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1077433824539185 0.11165794730186462 0.21605446934700012 0.49647510051727295 -0.8680074214935303 -0.0 0.5250393152236938 0.5461939573287964 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 -0.2839455306529999 0.36106449365615845 -0.9325235486030579 -0.0 0.0636448860168457 0.5791078805923462 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 -0.2839455306529999 0.33097323775291443 -0.9436323046684265 -0.0 0.06128603219985962 0.5814216136932373 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5232704877853394 -0.030469655990600586 0.21605446934700012 0.33097323775291443 -0.9436323046684265 -0.0 0.5126344561576843 0.38869017362594604 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.9939878582954407 0.10940885543823242 -0.0 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 -0.2839455306529999 0.9939878582954407 0.10940885543823242 -0.0 0.9314653873443604 0.5846927165985107 0 1.0 0 0.0 0 0.0 0 0.0\n1.8486864566802979 -0.10128353536128998 0.21605446934700012 0.9939878582954407 0.10940885543823242 -0.0 0.5403105616569519 0.4299470782279968 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 -0.2839455306529999 0.7834406495094299 -0.6214483976364136 -0.0 0.9108988046646118 0.4247055649757385 0 1.0 0 0.0 0 0.0 0 0.0\n0.5710597038269043 -0.13628791272640228 0.21605446934700012 0.7834406495094299 -0.6214483976364136 -0.0 0.5828356146812439 0.2830563187599182 0 1.0 0 0.0 0 0.0 0 0.0\n1.0518927574157715 0.11727187037467957 -0.2839455306529999 -0.3320719003677368 -0.9432355761528015 -0.0 0.9636092185974121 0.7194227576255798 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 -0.2839455306529999 -0.3988158702850342 -0.9170202016830444 -0.0 0.9605203866958618 0.7170834541320801 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 0.21605446934700012 -0.3988158702850342 -0.9170202016830444 -0.0 0.5064213275909424 0.5548363924026489 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2338197231292725 0.10938003659248352 -0.2839455306529999 -0.9079561829566956 0.4190496504306793 -0.0 0.13615745306015015 0.6973543167114258 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 -0.9342936277389526 0.3564561903476715 -0.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 0.21605446934700012 -0.9342936277389526 0.3564561903476715 -0.0 0.4558292329311371 0.5193195939064026 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4252455234527588 -0.030664265155792236 -0.2839455306529999 -0.99993896484375 0.009704886004328728 -0.0 0.9976453185081482 0.5883469581604004 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 -0.2839455306529999 -0.999786376953125 0.02047792077064514 -0.0 0.9977109432220459 0.581652045249939 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 0.21605446934700012 -0.999786376953125 0.02047792077064514 -0.0 0.5779449343681335 0.3925821781158447 0 1.0 0 0.0 0 0.0 0 0.0\n0.27947092056274414 -0.13852813839912415 -0.2839455306529999 -0.7459334135055542 -0.6659749150276184 -0.0 0.06470856070518494 0.42908698320388794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 -0.7042146325111389 -0.7099520564079285 -0.0 0.06174713373184204 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 0.21605446934700012 -0.7042146325111389 -0.7099520564079285 -0.0 0.3889842629432678 0.28147590160369873 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.7437971234321594 0.6683858633041382 -0.0 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 -0.2839455306529999 0.7817316055297852 0.6235846877098083 -0.0 0.9696797132492065 0.5909324884414673 0 1.0 0 0.0 0 0.0 0 0.0\n1.7876288890838623 -0.10129447281360626 0.21605446934700012 0.7817316055297852 0.6235846877098083 -0.0 0.5024871230125427 0.42791253328323364 0 1.0 0 0.0 0 0.0 0 0.0\n1.6840846538543701 -0.10156569629907608 -0.2839455306529999 -0.9982909560203552 -0.05813775956630707 -0.0 0.03666028380393982 0.589532196521759 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 -0.9973143935203552 -0.07306130975484848 -0.0 0.03627842664718628 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 0.21605446934700012 -0.9973143935203552 -0.07306130975484848 -0.0 0.43657612800598145 0.42723244428634644 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.4033631384372711 -0.9150059223175049 -0.0 1.0031362771987915 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 -0.2839455306529999 0.334574431180954 -0.9423505067825317 -0.0 0.9997810125350952 0.7213302850723267 0 1.0 0 0.0 0 0.0 0 0.0\n1.0034639835357666 0.11705905199050903 0.21605446934700012 0.334574431180954 -0.9423505067825317 -0.0 1.4756214618682861 0.5579229593276978 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 -0.2839455306529999 0.6188238263130188 -0.7854853868484497 -0.0 0.06051981449127197 0.7323944568634033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 -0.2839455306529999 0.5601367354393005 -0.8283944129943848 -0.0 0.05737152695655823 0.7365900278091431 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1123952865600586 0.10875734686851501 0.21605446934700012 0.5601367354393005 -0.8283944129943848 -0.0 0.5224400758743286 0.5428013801574707 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 -0.2839455306529999 0.3968626856803894 -0.9178441762924194 -0.0 0.06573435664176941 0.5768525004386902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 -0.2839455306529999 0.36106449365615845 -0.9325235486030579 -0.0 0.0636448860168457 0.5791078805923462 0 1.0 0 0.0 0 0.0 0 0.0\n-1.527145266532898 -0.031892597675323486 0.21605446934700012 0.36106449365615845 -0.9325235486030579 -0.0 0.5100929737091064 0.38682734966278076 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.6963713765144348 -0.7176427245140076 -0.0 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 -0.2839455306529999 0.7402264475822449 -0.6723227500915527 -0.0 0.9139134883880615 0.4184088706970215 0 1.0 0 0.0 0 0.0 0 0.0\n0.5654213428497314 -0.14291614294052124 0.21605446934700012 0.7402264475822449 -0.6723227500915527 -0.0 0.5803650617599487 0.27534884214401245 0 1.0 0 0.0 0 0.0 0 0.0\n1.0562174320220947 0.11557283997535706 -0.2839455306529999 -0.3988158702850342 -0.9170202016830444 -0.0 0.9605203866958618 0.7170834541320801 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 -0.2839455306529999 -0.46327096223831177 -0.886196494102478 -0.0 0.9575706124305725 0.7143791913986206 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 0.21605446934700012 -0.46327096223831177 -0.886196494102478 -0.0 0.508860170841217 0.5525315999984741 0 1.0 0 0.0 0 0.0 0 0.0\n0.2853658199310303 -0.14473800361156464 -0.2839455306529999 -0.7042146325111389 -0.7099520564079285 -0.0 0.06174713373184204 0.42292243242263794 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.058582156896591187 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 0.21605446934700012 -0.6608172655105591 -0.7505111694335938 -0.0 0.39170393347740173 0.2740418314933777 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 -0.2839455306529999 0.6721396446228027 -0.7404095530509949 -0.0 0.06346258521080017 0.7277339696884155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 -0.2839455306529999 0.6188238263130188 -0.7854853868484497 -0.0 0.06051981449127197 0.7323944568634033 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1168891191482544 0.1054699718952179 0.21605446934700012 0.6188238263130188 -0.7854853868484497 -0.0 0.5199300646781921 0.5389848947525024 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.44001588225364685 -0.8979766368865967 -0.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 -0.2839455306529999 0.3968626856803894 -0.9178441762924194 -0.0 0.06573435664176941 0.5768525004386902 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5306259393692017 -0.03331068158149719 0.21605446934700012 0.3968626856803894 -0.9178441762924194 -0.0 0.5078138709068298 0.3850102424621582 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 -0.2839455306529999 0.7044587731361389 0.7097384333610535 -0.0 0.9686083793640137 0.5883837938308716 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 -0.2839455306529999 0.7437971234321594 0.6683858633041382 -0.0 0.9691663384437561 0.5896375179290771 0 1.0 0 0.0 0 0.0 0 0.0\n1.7884604930877686 -0.10227593779563904 0.21605446934700012 0.7437971234321594 0.6683858633041382 -0.0 0.5030277371406555 0.4266718029975891 0 1.0 0 0.0 0 0.0 0 0.0\n0.8790280818939209 0.11538678407669067 -0.2839455306529999 -0.8645283579826355 0.5025787949562073 -0.0 0.08057984709739685 0.6942784786224365 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 -0.8977630138397217 0.44041261076927185 -0.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 0.21605446934700012 -0.8977630138397217 0.44041261076927185 -0.0 0.40601009130477905 0.5421374440193176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6459330320358276 -0.03457307815551758 -0.2839455306529999 -0.8994414806365967 0.4369945228099823 -0.0 0.12858033180236816 0.5556603074073792 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 -0.9193701148033142 0.39335307478904724 -0.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 0.21605446934700012 -0.9193701148033142 0.39335307478904724 -0.0 0.4402400553226471 0.3875800371170044 0 1.0 0 0.0 0 0.0 0 0.0\n1.844451665878296 -0.10279404371976852 -0.2839455306529999 -0.32862329483032227 0.9444258213043213 -0.0 0.934057891368866 0.5834326148033142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 -0.2839455306529999 -0.31321147084236145 0.9496444463729858 -0.0 0.9365617036819458 0.5822762250900269 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 0.21605446934700012 -0.31321147084236145 0.9496444463729858 -0.0 0.5355287790298462 0.42596107721328735 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.7198401093482971 -0.6941129565238953 -0.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 -0.2839455306529999 0.6721396446228027 -0.7404095530509949 -0.0 0.06346258521080017 0.7277339696884155 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1212248802185059 0.10179585218429565 0.21605446934700012 0.6721396446228027 -0.7404095530509949 -0.0 0.5175074934959412 0.5347373485565186 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 -0.2839455306529999 0.6963713765144348 -0.7176427245140076 -0.0 0.9172108173370361 0.41227811574935913 0 1.0 0 0.0 0 0.0 0 0.0\n0.5591895580291748 -0.14934493601322174 0.21605446934700012 0.6964018940925598 -0.7176427245140076 -0.0 0.5774534940719604 0.2676786184310913 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2384533882141113 0.09834310412406921 -0.2839455306529999 -0.9342936277389526 0.3564561903476715 -0.0 0.1368536651134491 0.685250997543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 -0.9551683068275452 0.29602953791618347 -0.0 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 0.21605446934700012 -0.9551683068275452 0.29602953791618347 -0.0 0.45347699522972107 0.5076109170913696 0 1.0 0 0.0 0 0.0 0 0.0\n0.2916862964630127 -0.15064138174057007 -0.2839455306529999 -0.6608172655105591 -0.7505111694335938 -0.0 0.058582156896591187 0.4170032739639282 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.055205315351486206 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 0.21605446934700012 -0.616290807723999 -0.7874996066093445 -0.0 0.3947984278202057 0.26676231622695923 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 -0.2839455306529999 0.47025972604751587 -0.8825037479400635 -0.0 0.006345778703689575 0.7167558670043945 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 -0.2839455306529999 0.4033631384372711 -0.9150059223175049 -0.0 0.003136277198791504 0.7192459106445312 0 1.0 0 0.0 0 0.0 0 0.0\n0.9989495277404785 0.11526638269424438 0.21605446934700012 0.4033631384372711 -0.9150059223175049 -0.0 0.47294849157333374 0.5560883283615112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 -0.2839455306529999 0.4925687313079834 -0.8702658414840698 -0.0 0.06912404298782349 0.5725313425064087 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 -0.2839455306529999 0.44001588225364685 -0.8979766368865967 -0.0 0.06755927205085754 0.5746594667434692 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5337127447128296 -0.03472389280796051 0.21605446934700012 0.44001588225364685 -0.8979766368865967 -0.0 0.5057958364486694 0.3832308053970337 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 -0.2839455306529999 0.6643574237823486 0.747398316860199 -0.0 0.9680066108703613 0.5871713161468506 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 -0.2839455306529999 0.7044587731361389 0.7097384333610535 -0.0 0.9686083793640137 0.5883837938308716 0 1.0 0 0.0 0 0.0 0 0.0\n1.789360761642456 -0.10322091728448868 0.21605446934700012 0.7044587731361389 0.7097384333610535 -0.0 0.5036134123802185 0.4254789352416992 0 1.0 0 0.0 0 0.0 0 0.0\n1.0604157447814941 0.11356490850448608 -0.2839455306529999 -0.46327096223831177 -0.886196494102478 -0.0 0.9575706124305725 0.7143791913986206 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 -0.2839455306529999 -0.5246132016181946 -0.8513138294219971 -0.0 0.9547619819641113 0.7113131284713745 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 0.21605446934700012 -0.5246132016181946 -0.8513138294219971 -0.0 0.5112283229827881 0.5498915910720825 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4253257513046265 -0.03608603775501251 -0.2839455306529999 -0.999786376953125 0.02047792077064514 -0.0 0.9977109432220459 0.581652045249939 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 -0.2839455306529999 -0.99945068359375 0.03262428566813469 -0.0 0.9978078603744507 0.5753602981567383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 0.21605446934700012 -0.99945068359375 0.03262428566813469 -0.0 0.5783491134643555 0.38633376359939575 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 -0.2839455306529999 0.765373706817627 -0.6435437798500061 -0.0 0.06873214244842529 0.7170165777206421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 -0.2839455306529999 0.7198401093482971 -0.6941129565238953 -0.0 0.0661996603012085 0.7226083278656006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1254024505615234 0.09773498773574829 0.21605446934700012 0.7198401093482971 -0.6941129565238953 -0.0 0.5151707530021667 0.5300506353378296 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 -0.2839455306529999 0.6238288283348083 0.7815485000610352 -0.0 0.9673608541488647 0.5859999656677246 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 -0.2839455306529999 0.6643574237823486 0.747398316860199 -0.0 0.9680066108703613 0.5871713161468506 0 1.0 0 0.0 0 0.0 0 0.0\n1.7903287410736084 -0.10412941128015518 0.21605446934700012 0.6643574237823486 0.747398316860199 -0.0 0.5042434334754944 0.42433422803878784 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 -0.2839455306529999 0.6481521129608154 -0.7614978551864624 -0.0 0.9208009243011475 0.40631377696990967 0 1.0 0 0.0 0 0.0 0 0.0\n0.5523643493652344 -0.1555742621421814 0.21605446934700012 0.6481521129608154 -0.7614978551864624 -0.0 0.5740653872489929 0.26005619764328003 0 1.0 0 0.0 0 0.0 0 0.0\n1.8403871059417725 -0.1041732057929039 -0.2839455306529999 -0.31321147084236145 0.9496444463729858 -0.0 0.9365617036819458 0.5822762250900269 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 -0.2839455306529999 -0.29615160822868347 0.9551072716712952 -0.0 0.9389737844467163 0.5812290906906128 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 0.21605446934700012 -0.29615160822868347 0.9551072716712952 -0.0 0.5332391262054443 0.42421799898147583 0 1.0 0 0.0 0 0.0 0 0.0\n0.2984325885772705 -0.15623830258846283 -0.2839455306529999 -0.616290807723999 -0.7874996066093445 -0.0 0.055205315351486206 0.411327600479126 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.051608264446258545 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 0.21605446934700012 -0.5687734484672546 -0.8224738240242004 -0.0 0.39829540252685547 0.2596469521522522 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 -0.2839455306529999 0.5341349244117737 -0.8453627228736877 -0.0 0.00940614938735962 0.7138638496398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 -0.2839455306529999 0.47025972604751587 -0.8825037479400635 -0.0 0.006345778703689575 0.7167558670043945 0 1.0 0 0.0 0 0.0 0 0.0\n0.9945907592773438 0.11314776539802551 0.21605446934700012 0.47025972604751587 -0.8825037479400635 -0.0 0.4703560471534729 0.5538910627365112 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 -0.2839455306529999 0.8116397857666016 -0.5841242671012878 -0.0 0.07100096344947815 0.7109781503677368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 -0.2839455306529999 0.765373706817627 -0.6435437798500061 -0.0 0.06873214244842529 0.7170165777206421 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1294219493865967 0.0932874083518982 0.21605446934700012 0.765373706817627 -0.6435437798500061 -0.0 0.5129179954528809 0.5249159336090088 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 -0.2839455306529999 0.5629138946533203 -0.82650226354599 -0.0 0.070433109998703 0.5704699754714966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 -0.2839455306529999 0.4925687313079834 -0.8702658414840698 -0.0 0.06912404298782349 0.5725313425064087 0 1.0 0 0.0 0 0.0 0 0.0\n-1.536405324935913 -0.036132246255874634 0.21605446934700012 0.4925687313079834 -0.8702658414840698 -0.0 0.5040379166603088 0.3814815282821655 0 1.0 0 0.0 0 0.0 0 0.0\n1.0644874572753906 0.11124807596206665 -0.2839455306529999 -0.5246132016181946 -0.8513138294219971 -0.0 0.9547619819641113 0.7113131284713745 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 -0.5820184946060181 -0.8131656646728516 -0.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 0.21605446934700012 -0.5820184946060181 -0.8131656646728516 -0.0 0.5135274529457092 0.5469138622283936 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.8543656468391418 -0.5196386575698853 -0.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 -0.2839455306529999 0.8116397857666016 -0.5841242671012878 -0.0 0.07100096344947815 0.7109781503677368 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1331982612609863 0.08845549821853638 0.21605446934700012 0.8116397857666016 -0.5841242671012878 -0.0 0.510796844959259 0.5193343758583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.6290780305862427 -0.7773369550704956 -0.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 -0.2839455306529999 0.5629138946533203 -0.82650226354599 -0.0 0.070433109998703 0.5704699754714966 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5387039184570312 -0.03753572702407837 0.21605446934700012 0.5629138946533203 -0.82650226354599 -0.0 0.5025386214256287 0.3797556757926941 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 -0.2839455306529999 0.5818048715591431 0.8133182525634766 -0.0 0.9666714072227478 0.5848695635795593 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 -0.2839455306529999 0.6238288283348083 0.7815485000610352 -0.0 0.9673608541488647 0.5859999656677246 0 1.0 0 0.0 0 0.0 0 0.0\n1.7913649082183838 -0.10500141978263855 0.21605446934700012 0.6238288283348083 0.7815485000610352 -0.0 0.5049180388450623 0.4232381582260132 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 -0.2839455306529999 0.5901364088058472 -0.8072755932807922 -0.0 0.9246793389320374 0.40065115690231323 0 1.0 0 0.0 0 0.0 0 0.0\n0.5449578762054443 -0.16144844889640808 0.21605446934700012 0.5901364088058472 -0.8072755932807922 -0.0 0.5701563954353333 0.25263357162475586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2424691915512085 0.08667618036270142 -0.2839455306529999 -0.9551683068275452 0.29602953791618347 -0.0 0.13713571429252625 0.6726433038711548 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 -0.9711599946022034 0.2384105920791626 -0.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 0.21605446934700012 -0.9711599946022034 0.2384105920791626 -0.0 0.45135048031806946 0.49517351388931274 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6479202508926392 -0.03892582654953003 -0.2839455306529999 -0.9193701148033142 0.39335307478904724 -0.0 0.12894189357757568 0.5507911443710327 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 -0.9371318817138672 0.3489181101322174 -0.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 0.21605446934700012 -0.9371318817138672 0.3489181101322174 -0.0 0.4391138553619385 0.38313859701156616 0 1.0 0 0.0 0 0.0 0 0.0\n1.8364927768707275 -0.10542101413011551 -0.2839455306529999 -0.29615160822868347 0.9551072716712952 -0.0 0.9389737844467163 0.5812290906906128 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 -0.2839455306529999 -0.2771385908126831 0.9608142375946045 -0.0 0.9412914514541626 0.5802960395812988 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 0.21605446934700012 -0.2771385908126831 0.9608142375946045 -0.0 0.5310229659080505 0.4226453900337219 0 1.0 0 0.0 0 0.0 0 0.0\n0.3056044578552246 -0.16152872145175934 -0.2839455306529999 -0.5687734484672546 -0.8224738240242004 -0.0 0.051608264446258545 0.4058956503868103 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781407833099365 0.400759756565094 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 0.21605446934700012 -0.5158543586730957 -0.8566545844078064 -0.0 0.4022355079650879 0.25275760889053345 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 -0.2839455306529999 0.5941038131713867 -0.8043763637542725 -0.0 0.012314856052398682 0.7105729579925537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 -0.2839455306529999 0.5341349244117737 -0.8453627228736877 -0.0 0.00940614938735962 0.7138638496398926 0 1.0 0 0.0 0 0.0 0 0.0\n0.9903876781463623 0.1107032299041748 0.21605446934700012 0.5341349244117737 -0.8453627228736877 -0.0 0.46784284710884094 0.5513290166854858 0 1.0 0 0.0 0 0.0 0 0.0\n0.31320953369140625 -0.1664518564939499 -0.2839455306529999 -0.5158543586730957 -0.8566545844078064 -0.0 0.047781407833099365 0.400759756565094 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 -0.4601885974407196 -0.8877834677696228 -0.0 0.04371464252471924 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 0.21605445444583893 -0.4601885974407196 -0.8877834677696228 -0.0 0.4066609740257263 0.2461605668067932 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.921262264251709 0.3888668417930603 -0.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 -0.2839455306529999 0.8901638984680176 0.45558029413223267 -0.0 0.8878135681152344 0.680391788482666 0 1.0 0 0.0 0 0.0 0 0.0\n1.1742777824401855 0.11057066917419434 0.21605446934700012 0.8901638984680176 0.45558029413223267 -0.0 0.5682803988456726 0.5411200523376465 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 -0.2839455306529999 0.8903164863586426 -0.45530563592910767 -0.0 0.07459104061126709 0.6976232528686523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 -0.2839455306529999 0.8543656468391418 -0.5196386575698853 -0.0 0.07295101881027222 0.7045143842697144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366461515426636 0.08324170112609863 0.21605446934700012 0.8543656468391418 -0.5196386575698853 -0.0 0.5088552236557007 0.5133059024810791 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 -0.2839455306529999 0.6803796291351318 -0.7328409552574158 -0.0 0.07364055514335632 0.5637936592102051 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 -0.2839455306529999 0.6290780305862427 -0.7773369550704956 -0.0 0.07213199138641357 0.5671678185462952 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5417808294296265 -0.03986351191997528 0.21605446934700012 0.6290780305862427 -0.7773369550704956 -0.0 0.5005322694778442 0.37691736221313477 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.5360575914382935 0.844141960144043 -0.0 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 -0.2839455306529999 0.5818048715591431 0.8133182525634766 -0.0 0.9666714072227478 0.5848695635795593 0 1.0 0 0.0 0 0.0 0 0.0\n1.7924692630767822 -0.10583695024251938 0.21605446934700012 0.5818048715591431 0.8133182525634766 -0.0 0.5056371688842773 0.4221910834312439 0 1.0 0 0.0 0 0.0 0 0.0\n1.0684328079223633 0.10862231254577637 -0.2839455306529999 -0.5820184946060181 -0.8131656646728516 -0.0 0.9520952701568604 0.7078877687454224 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 -0.2839455306529999 -0.634968101978302 -0.772515058517456 -0.0 0.9495713114738464 0.7041049003601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 0.21605446934700012 -0.634968101978302 -0.772515058517456 -0.0 0.5157588124275208 0.5435953140258789 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4254595041275024 -0.04119160771369934 -0.2839455306529999 -0.99945068359375 0.03262428566813469 -0.0 0.9978078603744507 0.5753602981567383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 -0.2839455306529999 -0.9989013075828552 0.046418651938438416 -0.0 0.9979357123374939 0.5694729089736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 0.21605446934700012 -0.9989013075828552 0.046418651938438416 -0.0 0.5786933898925781 0.3804762363433838 0 1.0 0 0.0 0 0.0 0 0.0\n1.8327686786651611 -0.10653747618198395 -0.2839455306529999 -0.2771385908126831 0.9608142375946045 -0.0 0.9412914514541626 0.5802960395812988 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 -0.2839455306529999 -0.2558977007865906 0.9666737914085388 -0.0 0.9435123205184937 0.579481840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 0.21605446934700012 -0.2558977007865906 0.9666737914085388 -0.0 0.5288844108581543 0.4212455749511719 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.9197973608970642 -0.39231544733047485 -0.0 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 -0.2839455306529999 0.8903164863586426 -0.45530563592910767 -0.0 0.07459104061126709 0.6976232528686523 0 1.0 0 0.0 0 0.0 0 0.0\n-1.139765739440918 0.07764601707458496 0.21605446934700012 0.8903164863586426 -0.45530563592910767 -0.0 0.5070923566818237 0.5068193078041077 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 -0.2839455306529999 0.5262916684150696 -0.8502761721611023 -0.0 0.9288429021835327 0.3954232335090637 0 1.0 0 0.0 0 0.0 0 0.0\n0.5369820594787598 -0.16681185364723206 0.21605446934700012 0.5262916684150696 -0.8502761721611023 -0.0 0.5656810402870178 0.24556457996368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0014448165893555 0.07659512758255005 -0.2839455306529999 -0.9058809280395508 -0.42347484827041626 -0.0 0.9746454954147339 0.6996514797210693 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 -0.2839455306529999 -0.9333170652389526 -0.35898923873901367 -0.0 0.9731119275093079 0.6922006011009216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 0.21605446934700012 -0.9333170652389526 -0.35898923873901367 -0.0 0.5897163152694702 0.5094247460365295 0 1.0 0 0.0 0 0.0 0 0.0\n1.684413194656372 -0.10661531984806061 -0.2839455306529999 -0.9973143935203552 -0.07306130975484848 -0.0 0.03627842664718628 0.5834358334541321 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 -0.9957884550094604 -0.09140293300151825 -0.0 0.03589153289794922 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 0.21605446934700012 -0.9957884550094604 -0.09140293300151825 -0.0 0.43651407957077026 0.4216722249984741 0 1.0 0 0.0 0 0.0 0 0.0\n0.3212544918060303 -0.1709468960762024 -0.2839455306529999 -0.4601885974407196 -0.8877834677696228 -0.0 0.04371464252471924 0.3959726095199585 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 -0.4050416648387909 -0.9142735004425049 -0.0 0.03939831256866455 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 0.21605445444583893 -0.4050416648387909 -0.9142735004425049 -0.0 0.4116052985191345 0.23988062143325806 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 -0.2839455306529999 0.6494033336639404 -0.7603991627693176 -0.0 0.015070319175720215 0.7068853378295898 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 -0.2839455306529999 0.5941038131713867 -0.8043763637542725 -0.0 0.012314856052398682 0.7105729579925537 0 1.0 0 0.0 0 0.0 0 0.0\n0.9863402843475342 0.10793274641036987 0.21605446934700012 0.5941038131713867 -0.8043763637542725 -0.0 0.46540743112564087 0.5483993887901306 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.7318338751792908 -0.6814478039741516 -0.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 -0.2839455306529999 0.6803796291351318 -0.7328409552574158 -0.0 0.07364055514335632 0.5637936592102051 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5445903539657593 -0.04229345917701721 0.21605446934700012 0.6803796291351318 -0.7328409552574158 -0.0 0.4986985921859741 0.373982310295105 0 1.0 0 0.0 0 0.0 0 0.0\n1.072251558303833 0.10568764805793762 -0.2839455306529999 -0.634968101978302 -0.772515058517456 -0.0 0.9495713114738464 0.7041049003601074 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 -0.2839455306529999 -0.6831873655319214 -0.730216383934021 -0.0 0.9471895694732666 0.699965238571167 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 0.21605446934700012 -0.6831873655319214 -0.730216383934021 -0.0 0.5179241895675659 0.5399326086044312 0 1.0 0 0.0 0 0.0 0 0.0\n-1.245867371559143 0.07437929511070251 -0.2839455306529999 -0.9711599946022034 0.2384105920791626 -0.0 0.13702672719955444 0.659500241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 -0.982909619808197 0.18393506109714508 -0.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 0.21605446934700012 -0.982909619808197 0.18393506109714508 -0.0 0.4494447708129883 0.48197758197784424 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6496983766555786 -0.043373435735702515 -0.2839455306529999 -0.9371318817138672 0.3489181101322174 -0.0 0.1291947066783905 0.5459003448486328 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 -0.9526658058166504 0.3039643466472626 -0.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 0.21605446934700012 -0.9526658058166504 0.3039643466472626 -0.0 0.43807706236839294 0.3786091208457947 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 -0.2839455306529999 0.48716697096824646 0.8732871413230896 -0.0 0.9651947021484375 0.5828148126602173 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 -0.2839455306529999 0.5360575914382935 0.844141960144043 -0.0 0.9659465551376343 0.5838009119033813 0 1.0 0 0.0 0 0.0 0 0.0\n1.793628454208374 -0.1066201776266098 0.21605446934700012 0.5360575914382935 0.844141960144043 -0.0 0.5063918828964233 0.42121315002441406 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 -0.2839455306529999 0.4622333347797394 -0.886745810508728 -0.0 0.9333038926124573 0.3906322717666626 0 1.0 0 0.0 0 0.0 0 0.0\n0.5284371376037598 -0.17166444659233093 0.21605445444583893 0.4622333347797394 -0.886745810508728 -0.0 0.5605977177619934 0.2388749122619629 0 1.0 0 0.0 0 0.0 0 0.0\n0.3297398090362549 -0.17501384019851685 -0.2839455306529999 -0.4050416648387909 -0.9142735004425049 -0.0 0.03939831256866455 0.39153915643692017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.03482341766357422 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 0.21605445444583893 -0.3510238826274872 -0.9363383650779724 -0.0 0.41710150241851807 0.23395079374313354 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.6996368169784546 -0.7144688367843628 -0.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 -0.2839455306529999 0.6494033336639404 -0.7603991627693176 -0.0 0.015070319175720215 0.7068853378295898 0 1.0 0 0.0 0 0.0 0 0.0\n0.9824485778808594 0.10483631491661072 0.21605446934700012 0.6494033336639404 -0.7603991627693176 -0.0 0.46304842829704285 0.5450987815856934 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 -0.2839455306529999 0.9433881640434265 -0.3316446542739868 -0.0 0.07697618007659912 0.6825403571128845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 -0.2839455306529999 0.9197973608970642 -0.39231544733047485 -0.0 0.07592976093292236 0.6903005838394165 0 1.0 0 0.0 0 0.0 0 0.0\n-1.14255690574646 0.07166844606399536 0.21605446934700012 0.9197973608970642 -0.39231544733047485 -0.0 0.50550776720047 0.49986231327056885 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 -0.2839455306529999 0.7822809815406799 -0.6229133009910583 -0.0 0.07609990239143372 0.5568383932113647 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 -0.2839455306529999 0.7318338751792908 -0.6814478039741516 -0.0 0.07496204972267151 0.5603500008583069 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547132134437561 -0.04482556879520416 0.21605446934700012 0.7318338751792908 -0.6814478039741516 -0.0 0.49703651666641235 0.370947003364563 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 -0.2839455306529999 0.4368419349193573 0.8995330929756165 -0.0 0.9644157290458679 0.5819108486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 -0.2839455306529999 0.48716697096824646 0.8732871413230896 -0.0 0.9651947021484375 0.5828148126602173 0 1.0 0 0.0 0 0.0 0 0.0\n1.7948286533355713 -0.10733529925346375 0.21605446934700012 0.48716697096824646 0.8732871413230896 -0.0 0.5071730017662048 0.42032450437545776 0 1.0 0 0.0 0 0.0 0 0.0\n0.8733217716217041 0.10470986366271973 -0.2839455306529999 -0.8977630138397217 0.44041261076927185 -0.0 0.08267199993133545 0.6824241280555725 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 -0.9256874322891235 0.37824639678001404 -0.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 0.21605446934700012 -0.9256874322891235 0.37824639678001404 -0.0 0.4029099941253662 0.5311414003372192 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9987156391143799 0.07015055418014526 -0.2839455306529999 -0.9333170652389526 -0.35898923873901367 -0.0 0.9731119275093079 0.6922006011009216 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 -0.2839455306529999 -0.9542527794837952 -0.29895931482315063 -0.0 0.9718380570411682 0.6841946840286255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 0.21605446934700012 -0.9542527794837952 -0.29895931482315063 -0.0 0.5916581749916077 0.5021109580993652 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4256469011306763 -0.04598096013069153 -0.2839455306529999 -0.9989013075828552 0.046418651938438416 -0.0 0.9979357123374939 0.5694729089736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 -0.2839455306529999 -0.9980468153953552 0.06216620281338692 -0.0 0.9980939626693726 0.5639892220497131 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 0.21605446934700012 -0.9980468153953552 0.06216620281338692 -0.0 0.5789764523506165 0.3750090003013611 0 1.0 0 0.0 0 0.0 0 0.0\n1.8292148113250732 -0.10752259194850922 -0.2839455306529999 -0.2558977007865906 0.9666737914085388 -0.0 0.9435123205184937 0.579481840133667 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 -0.2839455306529999 -0.23200170695781708 0.9726859331130981 -0.0 0.9456341862678528 0.5787909030914307 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 0.21605446934700012 -0.23200170695781708 0.9726859331130981 -0.0 0.5268273949623108 0.42002010345458984 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 -0.2839455306529999 0.39918211102485657 -0.9168370366096497 -0.0 0.9380745887756348 0.38628554344177246 0 1.0 0 0.0 0 0.0 0 0.0\n0.5193231105804443 -0.1760062575340271 0.21605445444583893 0.39918211102485657 -0.9168370366096497 -0.0 0.5548642873764038 0.2326015830039978 0 1.0 0 0.0 0 0.0 0 0.0\n1.075943946838379 0.10244408249855042 -0.2839455306529999 -0.6831873655319214 -0.730216383934021 -0.0 0.9471895694732666 0.699965238571167 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 -0.2839455306529999 -0.729789137840271 -0.6836451292037964 -0.0 0.9449496269226074 0.6954689025878906 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 0.21605446934700012 -0.729789137840271 -0.6836451292037964 -0.0 0.520024836063385 0.5359216332435608 0 1.0 0 0.0 0 0.0 0 0.0\n0.3386654853820801 -0.17865267395973206 -0.2839455306529999 -0.3510238826274872 -0.9363383650779724 -0.0 0.03482341766357422 0.3874672055244446 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.029981791973114014 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 0.21605445444583893 -0.29871517419815063 -0.9543138146400452 -0.0 0.4231806993484497 0.22841274738311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.9617297649383545 -0.27390360832214355 -0.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 -0.2839455306529999 0.9433881640434265 -0.3316446542739868 -0.0 0.07697618007659912 0.6825403571128845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1450196504592896 0.06530898809432983 0.21605446934700012 0.9433881640434265 -0.3316446542739868 -0.0 0.5041013956069946 0.4924224019050598 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.8302560448646545 -0.557359516620636 -0.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 -0.2839455306529999 0.7822809815406799 -0.6229133009910583 -0.0 0.07609990239143372 0.5568383932113647 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5494064092636108 -0.04745984077453613 0.21605446934700012 0.7822809815406799 -0.6229133009910583 -0.0 0.49554482102394104 0.3678079843521118 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 -0.2839455306529999 0.38569292426109314 0.922605037689209 -0.0 0.9636095762252808 0.5810889005661011 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 -0.2839455306529999 0.4368419349193573 0.8995330929756165 -0.0 0.9644157290458679 0.5819108486175537 0 1.0 0 0.0 0 0.0 0 0.0\n1.7960703372955322 -0.10798231512308121 0.21605446934700012 0.4368419349193573 0.8995330929756165 -0.0 0.5079805254936218 0.4195253252983093 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9963076114654541 0.06320734322071075 -0.2839455306529999 -0.9542527794837952 -0.29895931482315063 -0.0 0.9718380570411682 0.6841946840286255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 -0.2839455306529999 -0.9698477387428284 -0.24362926185131073 -0.0 0.9708145260810852 0.6756221055984497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 0.21605446934700012 -0.9698477387428284 -0.24362926185131073 -0.0 0.5934914350509644 0.4941715598106384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.651267170906067 -0.047915905714035034 -0.2839455306529999 -0.9526658058166504 0.3039643466472626 -0.0 0.12934094667434692 0.5409854650497437 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 -0.9659108519554138 0.25885799527168274 -0.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 0.21605446934700012 -0.9659108519554138 0.25885799527168274 -0.0 0.437128484249115 0.3739891052246094 0 1.0 0 0.0 0 0.0 0 0.0\n1.8258311748504639 -0.10837635397911072 -0.2839455306529999 -0.23200170695781708 0.9726859331130981 -0.0 0.9456341862678528 0.5787909030914307 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 -0.2839455306529999 -0.20505386590957642 0.9787285923957825 -0.0 0.9476549029350281 0.5782271027565002 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 0.21605446934700012 -0.20502334833145142 0.9787285923957825 -0.0 0.5248557925224304 0.41897040605545044 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 -0.2839455306529999 0.7461775541305542 -0.6657002568244934 -0.0 0.020119577646255493 0.698323130607605 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 -0.2839455306529999 0.6996368169784546 -0.7144688367843628 -0.0 0.017671942710876465 0.7028019428253174 0 1.0 0 0.0 0 0.0 0 0.0\n0.9787123203277588 0.10141396522521973 0.21605446934700012 0.6996368169784546 -0.7144688367843628 -0.0 0.46076416969299316 0.541422963142395 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 -0.2839455306529999 0.33814507722854614 -0.9410687685012817 -0.0 0.9431666135787964 0.38239461183547974 0 1.0 0 0.0 0 0.0 0 0.0\n0.5096397399902344 -0.17983725666999817 0.21605445444583893 0.33814507722854614 -0.9410687685012817 -0.0 0.5484403967857361 0.22679364681243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.0795097351074219 0.09889158606529236 -0.2839455306529999 -0.729789137840271 -0.6836451292037964 -0.0 0.9449496269226074 0.6954689025878906 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 -0.7776726484298706 -0.6286507844924927 -0.0 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 0.21605446934700012 -0.7776726484298706 -0.6286507844924927 -0.0 0.5220193862915039 0.5315750241279602 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2486475706100464 0.06145240366458893 -0.2839455306529999 -0.982909619808197 0.18393506109714508 -0.0 0.13654586672782898 0.6457922458648682 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 -0.9911190867424011 0.13290810585021973 -0.0 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 0.21605446934700012 -0.9911190867424011 0.13290810585021973 -0.0 0.44775623083114624 0.4679969549179077 0 1.0 0 0.0 0 0.0 0 0.0\n0.34803128242492676 -0.18186341226100922 -0.2839455306529999 -0.29874569177627563 -0.9543138146400452 -0.0 0.029981791973114014 0.3837677836418152 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.024866372346878052 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 0.21605445444583893 -0.24854274094104767 -0.9685964584350586 -0.0 0.4298703670501709 0.22331726551055908 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.8742637634277344 -0.4853968918323517 -0.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 -0.2839455306529999 0.8302560448646545 -0.557359516620636 -0.0 0.07705748081207275 0.5532599687576294 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5514131784439087 -0.05019627511501312 0.21605446934700012 0.8302560448646545 -0.557359516620636 -0.0 0.49422264099121094 0.3645620346069336 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 -0.2839455306529999 0.3342081904411316 0.9424726366996765 -0.0 0.9627766609191895 0.5803487300872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 -0.2839455306529999 0.38569292426109314 0.922605037689209 -0.0 0.9636095762252808 0.5810889005661011 0 1.0 0 0.0 0 0.0 0 0.0\n1.7973535060882568 -0.10856122523546219 0.21605446934700012 0.38569292426109314 0.922605037689209 -0.0 0.5088142156600952 0.4188156723976135 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4258877038955688 -0.05045410990715027 -0.2839455306529999 -0.9980468153953552 0.06216620281338692 -0.0 0.9980939626693726 0.5639892220497131 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 -0.2839455306529999 -0.9967344999313354 0.08038575202226639 -0.0 0.9982823729515076 0.5589078664779663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 0.21605446934700012 -0.9967344999313354 0.08038575202226639 -0.0 0.579197108745575 0.3699303865432739 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.9457685947418213 0.3248085081577301 -0.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 -0.2839455306529999 0.921262264251709 0.3888668417930603 -0.0 0.8863137364387512 0.667203426361084 0 1.0 0 0.0 0 0.0 0 0.0\n1.1798405647277832 0.09859970211982727 0.21605446934700012 0.921262264251709 0.3888668417930603 -0.0 0.5714326500892639 0.5292354226112366 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 -0.2839455306529999 0.9755851626396179 -0.21955016255378723 -0.0 0.07822781801223755 0.6656776666641235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 -0.2839455306529999 0.9617297649383545 -0.27390360832214355 -0.0 0.07773932814598083 0.6743353605270386 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1471540927886963 0.05856764316558838 0.21605446934700012 0.9617297649383545 -0.27390360832214355 -0.0 0.5028736591339111 0.4844869375228882 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 -0.2839455306529999 0.28284555673599243 0.9591357111930847 -0.0 0.9619163274765015 0.5796900987625122 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 -0.2839455306529999 0.3342081904411316 0.9424726366996765 -0.0 0.9627766609191895 0.5803487300872803 0 1.0 0 0.0 0 0.0 0 0.0\n1.798677682876587 -0.10907202214002609 0.21605446934700012 0.3341776728630066 0.9424726366996765 -0.0 0.509673535823822 0.41819584369659424 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 -0.2839455306529999 0.2797936797142029 -0.9600512981414795 -0.0 0.9485899209976196 0.37897592782974243 0 1.0 0 0.0 0 0.0 0 0.0\n0.499387264251709 -0.18315744400024414 0.21605445444583893 0.2797936797142029 -0.9600512981414795 -0.0 0.5412908792495728 0.22151362895965576 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9942206144332886 0.05576547980308533 -0.2839455306529999 -0.9698477387428284 -0.24362926185131073 -0.0 0.9708145260810852 0.6756221055984497 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 -0.2839455306529999 -0.9812005758285522 -0.19296853244304657 -0.0 0.9700321555137634 0.6664710640907288 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 0.21605446934700012 -0.9812005758285522 -0.19296853244304657 -0.0 0.5952191948890686 0.4855912923812866 0 1.0 0 0.0 0 0.0 0 0.0\n-1.652626872062683 -0.05255323648452759 -0.2839455306529999 -0.9659108519554138 0.25885799527168274 -0.0 0.1293828785419464 0.5360437631607056 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 -0.9768364429473877 0.2138737142086029 -0.0 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 0.21605446934700012 -0.9768364429473877 0.2138737142086029 -0.0 0.436267226934433 0.3692759871482849 0 1.0 0 0.0 0 0.0 0 0.0\n1.8226182460784912 -0.10909876972436905 -0.2839455306529999 -0.20505386590957642 0.9787285923957825 -0.0 0.9476549029350281 0.5782271027565002 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 -0.2839455306529999 -0.1743827611207962 0.9846491813659668 -0.0 0.9495729804039001 0.577794075012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 0.21605446934700012 -0.1743827611207962 0.9846491813659668 -0.0 0.5229727029800415 0.41809719800949097 0 1.0 0 0.0 0 0.0 0 0.0\n0.357837438583374 -0.18464605510234833 -0.2839455306529999 -0.24854274094104767 -0.9685964584350586 -0.0 0.024866372346878052 0.38045501708984375 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.019471734762191772 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 0.21605445444583893 -0.20072023570537567 -0.9796441793441772 -0.0 0.43719086050987244 0.2187250852584839 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 -0.2839455306529999 0.790978729724884 -0.6118045449256897 -0.0 0.022365719079971313 0.6935079097747803 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 -0.2839455306529999 0.7461775541305542 -0.6657002568244934 -0.0 0.020119577646255493 0.698323130607605 0 1.0 0 0.0 0 0.0 0 0.0\n0.9751315116882324 0.09766566753387451 0.21605446934700012 0.7461775541305542 -0.6657002568244934 -0.0 0.4585532248020172 0.5373673439025879 0 1.0 0 0.0 0 0.0 0 0.0\n1.082874059677124 0.09504234790802002 -0.2839455306529999 -0.7776726484298706 -0.6286507844924927 -0.0 0.9429000616073608 0.6906435489654541 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 -0.2839455306529999 -0.8231146931648254 -0.5678274035453796 -0.0 0.941087543964386 0.6855176687240601 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 0.21605446934700012 -0.8231146931648254 -0.5678274035453796 -0.0 0.5238659977912903 0.5269047021865845 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.9856563210487366 -0.16873684525489807 -0.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 -0.2839455306529999 0.9755851626396179 -0.21955016255378723 -0.0 0.07822781801223755 0.6656776666641235 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1489601135253906 0.051444411277770996 0.21605446934700012 0.9755851626396179 -0.21955016255378723 -0.0 0.5018256902694702 0.476043701171875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 -0.2839455306529999 0.9129306674003601 -0.40809351205825806 -0.0 0.0784434974193573 0.5459051728248596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 -0.2839455306529999 0.8742637634277344 -0.4853968918323517 -0.0 0.07783758640289307 0.5496155023574829 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5531522035598755 -0.05303485691547394 0.21605446934700012 0.8742637634277344 -0.4853968918323517 -0.0 0.49306946992874146 0.36120617389678955 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 -0.2839455306529999 0.23218482732772827 0.9726554155349731 -0.0 0.9610292911529541 0.5791126489639282 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 -0.2839455306529999 0.28284555673599243 0.9591357111930847 -0.0 0.9619163274765015 0.5796900987625122 0 1.0 0 0.0 0 0.0 0 0.0\n1.8000438213348389 -0.10951471328735352 0.21605446934700012 0.28284555673599243 0.9591357111930847 -0.0 0.5105586647987366 0.41766583919525146 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 -0.2839455306529999 0.22461622953414917 -0.9744254946708679 -0.0 0.9543525576591492 0.37605053186416626 0 1.0 0 0.0 0 0.0 0 0.0\n0.48856568336486816 -0.1859668493270874 0.21605445444583893 0.22461622953414917 -0.9744254946708679 -0.0 0.5333896279335022 0.21683770418167114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.250809907913208 0.047895535826683044 -0.2839455306529999 -0.9911190867424011 0.13290810585021973 -0.0 0.1357092559337616 0.6314922571182251 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 -0.9963377714157104 0.08532975614070892 -0.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 0.21605446934700012 -0.9963377714157104 0.08532975614070892 -0.0 0.4462829530239105 0.45321154594421387 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4261819124221802 -0.05461104214191437 -0.2839455306529999 -0.9967344999313354 0.08038575202226639 -0.0 0.9982823729515076 0.5589078664779663 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 -0.2839455306529999 -0.9948118329048157 0.10165715217590332 -0.0 0.9985008239746094 0.554226279258728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 0.21605446934700012 -0.9948118329048157 0.10165715217590332 -0.0 0.5793541073799133 0.3652379512786865 0 1.0 0 0.0 0 0.0 0 0.0\n1.819575548171997 -0.10968983918428421 -0.2839455306529999 -0.1743827611207962 0.9846491813659668 -0.0 0.9495729804039001 0.577794075012207 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 -0.2839455306529999 -0.13934750854969025 0.9902340769767761 -0.0 0.9513869285583496 0.5774950981140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 0.21605446934700012 -0.13934750854969025 0.9902340769767761 -0.0 0.5211812257766724 0.4174010157585144 0 1.0 0 0.0 0 0.0 0 0.0\n0.3680837154388428 -0.1870006024837494 -0.2839455306529999 -0.20072023570537567 -0.9796441793441772 -0.0 0.019471734762191772 0.3775457739830017 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013794481754302979 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 0.21605445444583893 -0.15546128153800964 -0.9878231287002563 -0.0 0.4451525807380676 0.21470564603805542 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.8328500986099243 -0.5534836649894714 -0.0 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 -0.2839455306529999 0.790978729724884 -0.6118045449256897 -0.0 0.022365719079971313 0.6935079097747803 0 1.0 0 0.0 0 0.0 0 0.0\n0.9717772006988525 0.09363764524459839 0.21605446934700012 0.790978729724884 -0.6118045449256897 -0.0 0.45645686984062195 0.5329769849777222 0 1.0 0 0.0 0 0.0 0 0.0\n0.8682868480682373 0.09347590804100037 -0.2839455306529999 -0.9256874322891235 0.37824639678001404 -0.0 0.08430463075637817 0.6701304316520691 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 -0.9484237432479858 0.316934734582901 -0.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 0.21605446934700012 -0.9484237432479858 0.316934734582901 -0.0 0.4000667333602905 0.5195320844650269 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9924546480178833 0.047824978828430176 -0.2839455306529999 -0.9812005758285522 -0.19296853244304657 -0.0 0.9700321555137634 0.6664710640907288 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 -0.2839455306529999 -0.9891659021377563 -0.14676351845264435 -0.0 0.9694821834564209 0.656730055809021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 0.21605446934700012 -0.9891659021377563 -0.14676351845264435 -0.0 0.596843957901001 0.47635602951049805 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.9450361728668213 -0.3269447982311249 -0.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 -0.2839455306529999 0.9129306674003601 -0.40809351205825806 -0.0 0.0784434974193573 0.5459051728248596 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5546238422393799 -0.05597560107707977 0.21605446934700012 0.9129306674003601 -0.40809351205825806 -0.0 0.49208465218544006 0.35773760080337524 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 -0.2839455306529999 0.1825312077999115 0.983184278011322 -0.0 0.9601153135299683 0.5786160230636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 -0.2839455306529999 0.23218482732772827 0.9726554155349731 -0.0 0.9610292911529541 0.5791126489639282 0 1.0 0 0.0 0 0.0 0 0.0\n1.8014509677886963 -0.10988929867744446 0.21605446934700012 0.23218482732772827 0.9726554155349731 -0.0 0.511468768119812 0.41722571849823 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 -0.2839455306529999 0.17285683751106262 -0.9849238395690918 -0.0 0.9604600667953491 0.3736436367034912 0 1.0 0 0.0 0 0.0 0 0.0\n0.4771747589111328 -0.18826544284820557 0.21605445444583893 0.17285683751106262 -0.9849238395690918 -0.0 0.5247248411178589 0.21285533905029297 0 1.0 0 0.0 0 0.0 0 0.0\n1.085960865020752 0.09090852737426758 -0.2839455306529999 -0.8231146931648254 -0.5678274035453796 -0.0 0.941087543964386 0.6855176687240601 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 -0.2839455306529999 -0.8627277612686157 -0.5056306719779968 -0.0 0.939506471157074 0.6800910234451294 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 0.21605446934700012 -0.8627277612686157 -0.5056306719779968 -0.0 0.5255663990974426 0.5219049453735352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6537773609161377 -0.057285428047180176 -0.2839455306529999 -0.9768364429473877 0.2138737142086029 -0.0 0.129322350025177 0.5310729742050171 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 -0.9855342507362366 0.16928617656230927 -0.0 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 0.21605446934700012 -0.9855342507362366 0.16928617656230927 -0.0 0.4354926347732544 0.3644673228263855 0 1.0 0 0.0 0 0.0 0 0.0\n1.8167030811309814 -0.1101495623588562 -0.2839455306529999 -0.13934750854969025 0.9902340769767761 -0.0 0.9513869285583496 0.5774950981140137 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 -0.2839455306529999 -0.09912411868572235 0.9950559735298157 -0.0 0.953095555305481 0.5773330926895142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 0.21605446934700012 -0.09912411868572235 0.9950559735298157 -0.0 0.5194841623306274 0.41688209772109985 0 1.0 0 0.0 0 0.0 0 0.0\n0.3787703514099121 -0.1889270544052124 -0.2839455306529999 -0.15546128153800964 -0.9878231287002563 -0.0 0.013794481754302979 0.37505996227264404 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.00783383846282959 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 0.21605445444583893 -0.11279641091823578 -0.9935911297798157 -0.0 0.4537515640258789 0.2113369107246399 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 -0.2839455306529999 0.9925839900970459 -0.12149418890476227 -0.0 0.0784153938293457 0.6469727158546448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 -0.2839455306529999 0.9856563210487366 -0.16873684525489807 -0.0 0.07845044136047363 0.65655916929245 0 1.0 0 0.0 0 0.0 0 0.0\n-1.150437831878662 0.04393930733203888 0.21605446934700012 0.9856563210487366 -0.16873684525489807 -0.0 0.5009591579437256 0.4670816659927368 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910098314285278 0.0393858402967453 -0.2839455306529999 -0.9891659021377563 -0.14676351845264435 -0.0 0.9694821834564209 0.656730055809021 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 -0.2839455306529999 -0.9944761395454407 -0.10477004200220108 -0.0 0.9691557884216309 0.6463892459869385 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 0.21605446934700012 -0.9944761395454407 -0.10477004200220108 -0.0 0.5983680486679077 0.4664538502693176 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4265297651290894 -0.05845177173614502 -0.2839455306529999 -0.9948118329048157 0.10165715217590332 -0.0 0.9985008239746094 0.554226279258728 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 -0.9919126033782959 0.1267433762550354 -0.0 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 0.21605446934700012 -0.9919126033782959 0.1267433762550354 -0.0 0.5794463753700256 0.36092859506607056 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 -0.2839455306529999 0.8699911236763 -0.4930265247821808 -0.0 0.026126623153686523 0.6830544471740723 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 -0.2839455306529999 0.8328500986099243 -0.5534836649894714 -0.0 0.024366289377212524 0.6884176731109619 0 1.0 0 0.0 0 0.0 0 0.0\n0.9687197208404541 0.08937612175941467 0.21605446934700012 0.8328500986099243 -0.5534836649894714 -0.0 0.45451629161834717 0.5282981395721436 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 -0.2839455306529999 0.1342814415693283 0.9909359812736511 -0.0 0.9591747522354126 0.5781999826431274 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 -0.2839455306529999 0.1825312077999115 0.983184278011322 -0.0 0.9601153135299683 0.5786160230636597 0 1.0 0 0.0 0 0.0 0 0.0\n1.8028995990753174 -0.11019577831029892 0.21605446934700012 0.1825312077999115 0.983184278011322 -0.0 0.5124037265777588 0.4168756604194641 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 -0.2839455306529999 0.12463758885860443 -0.9921872615814209 -0.0 0.9669138193130493 0.3717842698097229 0 1.0 0 0.0 0 0.0 0 0.0\n0.46521472930908203 -0.19005325436592102 0.21605445444583893 0.12463758885860443 -0.9921872615814209 -0.0 0.5153055787086487 0.20966792106628418 0 1.0 0 0.0 0 0.0 0 0.0\n1.0887703895568848 0.08649012446403503 -0.2839455306529999 -0.8627277612686157 -0.5056306719779968 -0.0 0.939506471157074 0.6800910234451294 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 -0.8963896632194519 -0.443250834941864 -0.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 0.21605446934700012 -0.8963896632194519 -0.443250834941864 -0.0 0.5271219611167908 0.5165688991546631 0 1.0 0 0.0 0 0.0 0 0.0\n0.38989734649658203 -0.19042539596557617 -0.2839455306529999 -0.11279641091823578 -0.9935911297798157 -0.0 0.00783383846282959 0.3730196952819824 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 0.0015925765037536621 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 0.21605445444583893 -0.07275612652301788 -0.9973449110984802 -0.0 0.46296530961990356 0.2087029218673706 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.9969481229782104 -0.07782220095396042 -0.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 -0.2839455306529999 0.9925839900970459 -0.12149418890476227 -0.0 0.0784153938293457 0.6469727158546448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1515871286392212 0.036052316427230835 0.21605446934700012 0.9925839900970459 -0.12149418890476227 -0.0 0.500276505947113 0.45759135484695435 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.9698172211647034 -0.24378184974193573 -0.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 -0.2839455306529999 0.9450361728668213 -0.3269447982311249 -0.0 0.07887768745422363 0.5421288013458252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5558278560638428 -0.05901850759983063 0.21605446934700012 0.9450361728668213 -0.3269447982311249 -0.0 0.4912683963775635 0.3541536331176758 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 -0.2839455306529999 0.0876796767115593 0.9961241483688354 -0.0 0.9582072496414185 0.5778639912605286 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 -0.2839455306529999 0.1342814415693283 0.9909359812736511 -0.0 0.9591747522354126 0.5781999826431274 0 1.0 0 0.0 0 0.0 0 0.0\n1.804389238357544 -0.1104341521859169 0.21605446934700012 0.1342814415693283 0.9909359812736511 -0.0 0.5133629441261292 0.4166155457496643 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523545026779175 0.03370867669582367 -0.2839455306529999 -0.9963377714157104 0.08532975614070892 -0.0 0.13453033566474915 0.6165791153907776 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 -0.9991455078125 0.04119998961687088 -0.0 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 0.21605446934700012 -0.9991455078125 0.04119998961687088 -0.0 0.44502511620521545 0.437610387802124 0 1.0 0 0.0 0 0.0 0 0.0\n1.8140008449554443 -0.11047793179750443 -0.2839455306529999 -0.09912411868572235 0.9950559735298157 -0.0 0.953095555305481 0.5773330926895142 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 -0.2839455306529999 -0.052705466747283936 0.9985961318016052 -0.0 0.9546976089477539 0.5773108601570129 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 0.21605446934700012 -0.052674949169158936 0.9985961318016052 -0.0 0.5178840756416321 0.41654032468795776 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.964476466178894 0.2641376852989197 -0.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 -0.2839455306529999 0.9457685947418213 0.3248085081577301 -0.0 0.885278046131134 0.65334153175354 0 1.0 0 0.0 0 0.0 0 0.0\n1.1847076416015625 0.08581876754760742 0.21605446934700012 0.9457685947418213 0.3248085081577301 -0.0 0.57432621717453 0.5165024995803833 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.99993896484375 0.008484145626425743 -0.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 -0.2839455306529999 0.999969482421875 -0.0025025177747011185 -0.0 0.9464728236198425 0.5510927438735962 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295971155166626 -0.06170385330915451 0.21605446934700012 0.999969482421875 -0.0025025177747011185 -0.0 0.6335775852203369 0.3873562812805176 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 -0.2839455306529999 0.0798974558711052 -0.9967955350875854 -0.0 0.9737112522125244 0.37050437927246094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4526855945587158 -0.19133025407791138 0.21605445444583893 0.0798974558711052 -0.9967955350875854 -0.0 0.5051671266555786 0.20738548040390015 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9898860454559326 0.0304480642080307 -0.2839455306529999 -0.9944761395454407 -0.10477004200220108 -0.0 0.9691557884216309 0.6463892459869385 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 -0.2839455306529999 -0.9977721571922302 -0.06659138947725296 -0.0 0.9690446853637695 0.6354416608810425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 0.21605446934700012 -0.9977721571922302 -0.06659138947725296 -0.0 0.5997934341430664 0.4558762311935425 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4269311428070068 -0.06197628378868103 -0.2839455306529999 -0.9919126033782959 0.1267433762550354 -0.0 0.9987492561340332 0.5499416589736938 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 -0.2839455306529999 -0.9876095056533813 0.15674306452274323 -0.0 0.9990274310112 0.5460504293441772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 0.21605446934700012 -0.9876095056533813 0.15674306452274323 -0.0 0.579473078250885 0.3569989800453186 0 1.0 0 0.0 0 0.0 0 0.0\n0.40146446228027344 -0.1914956420660019 -0.2839455306529999 -0.07275612652301788 -0.9973449110984802 -0.0 1.0015926361083984 0.3714491128921509 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950767755508423 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 0.21605445444583893 -0.035279396921396255 -0.999359130859375 -0.0 1.4727497100830078 0.2068910002708435 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.9021271467208862 -0.43140965700149536 -0.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 -0.2839455306529999 0.8699911236763 -0.4930265247821808 -0.0 0.026126623153686523 0.6830544471740723 0 1.0 0 0.0 0 0.0 0 0.0\n0.9659590721130371 0.08488109707832336 0.21605446934700012 0.8699911236763 -0.4930265247821808 -0.0 0.45273035764694214 0.52332603931427 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 -0.2839455306529999 0.04293954372406006 0.999053955078125 -0.0 0.9572130441665649 0.5776077508926392 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 -0.2839455306529999 0.0876796767115593 0.9961241483688354 -0.0 0.9582072496414185 0.5778639912605286 0 1.0 0 0.0 0 0.0 0 0.0\n1.8059203624725342 -0.1106044203042984 0.21605446934700012 0.0876796767115593 0.9961241483688354 -0.0 0.514346182346344 0.4164454936981201 0 1.0 0 0.0 0 0.0 0 0.0\n1.0913023948669434 0.081787109375 -0.2839455306529999 -0.8963896632194519 -0.443250834941864 -0.0 0.938151478767395 0.6743619441986084 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 -0.2839455306529999 -0.9242530465126038 -0.3817560374736786 -0.0 0.9370168447494507 0.6683270931243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 0.21605446934700012 -0.9242530465126038 -0.3817560374736786 -0.0 0.528533935546875 0.5108895301818848 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6547187566757202 -0.062112487852573395 -0.2839455306529999 -0.9855342507362366 0.16928617656230927 -0.0 0.12916091084480286 0.5260705351829529 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 -0.9920957088470459 0.12540055811405182 -0.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 0.21605446934700012 -0.9920957088470459 0.12540055811405182 -0.0 0.43480435013771057 0.3595607280731201 0 1.0 0 0.0 0 0.0 0 0.0\n0.41347193717956543 -0.19213779270648956 -0.2839455306529999 -0.035279396921396255 -0.999359130859375 -0.0 0.9950767755508423 0.37037354707717896 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882972240447998 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 0.21605445444583893 0.0007324442267417908 -0.999969482421875 -0.0 1.483035922050476 0.2059873342514038 0 1.0 0 0.0 0 0.0 0 0.0\n1.8114688396453857 -0.11067495495080948 -0.2839455306529999 -0.052705466747283936 0.9985961318016052 -0.0 0.9546976089477539 0.5773108601570129 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 -0.003326517529785633 0.999969482421875 -0.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 0.21605446934700012 -0.003326517529785633 0.999969482421875 -0.0 0.5163832306861877 0.4163755178451538 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 -0.2839455306529999 0.999267578125 -0.03750724717974663 -0.0 0.0776045024394989 0.6263766288757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 -0.2839455306529999 0.9969481229782104 -0.07782220095396042 -0.0 0.0781308114528656 0.6369128227233887 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1524080038070679 0.027783438563346863 0.21605446934700012 0.9969481229782104 -0.07782220095396042 -0.0 0.49978107213974 0.44756609201431274 0 1.0 0 0.0 0 0.0 0 0.0\n0.4259195327758789 -0.19235184788703918 -0.2839455306529999 0.0007324442267417908 -0.999969482421875 -0.0 0.9882972240447998 0.3698185086250305 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 -0.2839455306529999 0.038544878363609314 -0.999237060546875 -0.0 0.9808439016342163 0.36983782052993774 0 1.0 0 0.0 0 0.0 0 0.0\n0.4395871162414551 -0.19209645688533783 0.21605445444583893 0.038544878363609314 -0.999237060546875 -0.0 0.49437659978866577 0.20612168312072754 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9890834093093872 0.021011650562286377 -0.2839455306529999 -0.9977721571922302 -0.06659138947725296 -0.0 0.9690446853637695 0.6354416608810425 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 -0.2839455306529999 -0.999481201171875 -0.0318918414413929 -0.0 0.9691407680511475 0.6238844990730286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 0.21605446934700012 -0.999481201171875 -0.0318918414413929 -0.0 0.6011215448379517 0.44461947679519653 0 1.0 0 0.0 0 0.0 0 0.0\n0.8639230728149414 0.08168494701385498 -0.2839455306529999 -0.9484237432479858 0.316934734582901 -0.0 0.08550941944122314 0.6573827266693115 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 -0.9663075804710388 0.25730153918266296 -0.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 0.21605446934700012 -0.9663075804710388 0.25730153918266296 -0.0 0.39746999740600586 0.5072903633117676 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.09209313988685608 0.823844313621521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 -0.999969482421875 -0.005340739153325558 -0.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 0.21605446934700012 -0.999969482421875 -0.005340739153325558 -0.0 0.4058777093887329 0.4971381425857544 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 -0.2839455306529999 0.9870296120643616 -0.16049684584140778 -0.0 0.07924100756645203 0.5343766212463379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 -0.2839455306529999 0.9698172211647034 -0.24378184974193573 -0.0 0.07914271950721741 0.5382862091064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5567642450332642 -0.0621635764837265 0.21605446934700012 0.9698172211647034 -0.24378184974193573 -0.0 0.4906209409236908 0.35045212507247925 0 1.0 0 0.0 0 0.0 0 0.0\n1.8091070652008057 -0.11074063181877136 -0.2839455306529999 -0.003326517529785633 0.999969482421875 -0.0 0.9561920166015625 0.5774307250976562 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 -0.2839455306529999 0.04293954372406006 0.999053955078125 -0.0 0.9572130441665649 0.5776077508926392 0 1.0 0 0.0 0 0.0 0 0.0\n1.807492971420288 -0.11070658266544342 0.21605446934700012 0.04293954372406006 0.999053955078125 -0.0 0.5153530836105347 0.41636550426483154 0 1.0 0 0.0 0 0.0 0 0.0\n-1.427385926246643 -0.0651845932006836 -0.2839455306529999 -0.9876095056533813 0.15674306452274323 -0.0 0.9990274310112 0.5460504293441772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 -0.2839455306529999 -0.9811395406723022 0.19315165281295776 -0.0 0.9993356466293335 0.5425490736961365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 0.21605446934700012 -0.9811395406723022 0.19315165281295776 -0.0 0.5794331431388855 0.3534455895423889 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.018389105796813965 0.8526803851127625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.09209313988685608 0.823844313621521 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.42104125022888184 0.6850046515464783 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.00317392498254776 -0.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 -0.2839455306529999 0.999267578125 -0.03750724717974663 -0.0 0.0776045024394989 0.6263766288757324 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1529005765914917 0.019132673740386963 0.21605446934700012 0.999267578125 -0.03750724717974663 -0.0 0.49947699904441833 0.4370027780532837 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 -0.2839455306529999 0.9291360378265381 -0.36967071890830994 -0.0 0.028948843479156494 0.6715095043182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 -0.2839455306529999 0.9021271467208862 -0.43140965700149536 -0.0 0.027652353048324585 0.6774187088012695 0 1.0 0 0.0 0 0.0 0 0.0\n0.9634950160980225 0.08015254139900208 0.21605446934700012 0.9021271467208862 -0.43140965700149536 -0.0 0.45109784603118896 0.5180555582046509 0 1.0 0 0.0 0 0.0 0 0.0\n1.6847851276397705 -0.11117846518754959 -0.2839455306529999 -0.9957884550094604 -0.09140293300151825 -0.0 0.03589153289794922 0.5779250860214233 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 -0.2839455306529999 -0.9934385418891907 -0.11429181694984436 -0.0 0.03549852967262268 0.5730034112930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 0.21605446934700012 -0.9934385418891907 -0.11429181694984436 -0.0 0.43650829792022705 0.4166916012763977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532812356948853 0.018891841173171997 -0.2839455306529999 -0.9991455078125 0.04119998961687088 -0.0 0.13302001357078552 0.6010407209396362 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 -0.999969482421875 -0.00045777764171361923 -0.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 0.21605446934700012 -0.999969482421875 -0.00045777764171361923 -0.0 0.4439847469329834 0.42119497060775757 0 1.0 0 0.0 0 0.0 0 0.0\n1.0935571193695068 0.07679951190948486 -0.2839455306529999 -0.9242530465126038 -0.3817560374736786 -0.0 0.9370168447494507 0.6683270931243896 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 -0.9467146992683411 -0.32203131914138794 -0.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 0.21605446934700012 -0.9467146992683411 -0.32203131914138794 -0.0 0.5298032760620117 0.5048590898513794 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 -0.2839455306529999 0.999969482421875 0.0014648884534835815 -0.0 0.014768153429031372 0.7227939367294312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 -0.2839455306529999 1.0 0.0 -0.0 0.018389105796813965 0.8526803851127625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.46700388193130493 0.6951695084571838 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 -0.2839455306529999 0.9870296120643616 -0.16049684584140778 -0.0 0.07924100756645203 0.5343766212463379 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5574332475662231 -0.0654108077287674 0.21605446934700012 0.9870296120643616 -0.16049684584140778 -0.0 0.49014294147491455 0.3466310501098633 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 -0.2839455306529999 -1.0 0.0 -0.0 0.896752655506134 0.8321271538734436 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 -0.999969482421875 0.0019531846046447754 -0.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 0.21605446934700012 -0.999969482421875 0.0019531846046447754 -0.0 0.5414687395095825 0.5723863840103149 0 1.0 0 0.0 0 0.0 0 0.0\n1.6852014064788818 -0.11525513231754303 -0.2839455306529999 -0.9934385418891907 -0.11429181694984436 -0.0 0.03549852967262268 0.5730034112930298 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 -0.2839455306529999 -0.9896237254142761 -0.143589586019516 -0.0 0.03509938716888428 0.5686724185943604 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 0.21605446934700012 -0.9896237254142761 -0.143589586019516 -0.0 0.4365590512752533 0.4122923016548157 0 1.0 0 0.0 0 0.0 0 0.0\n-0.988601803779602 0.011076599359512329 -0.2839455306529999 -0.999481201171875 -0.0318918414413929 -0.0 0.9691407680511475 0.6238844990730286 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 -0.2839455306529999 -0.999969482421875 0.0011291848495602608 -0.0 0.9694360494613647 0.6117208003997803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 0.21605446934700012 -0.999969482421875 0.0011291848495602608 -0.0 0.6023536920547485 0.432685911655426 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6554508209228516 -0.06703440845012665 -0.2839455306529999 -0.9920957088470459 0.12540055811405182 -0.0 0.1288999617099762 0.5210342407226562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 -0.9965819120407104 0.08249153196811676 -0.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 0.21605446934700012 -0.9965819120407104 0.08249153196811676 -0.0 0.4342021346092224 0.35455411672592163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 -0.2839455306529999 0.9511398673057556 -0.3086947202682495 -0.0 0.03002151846885681 0.6653246879577637 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 -0.2839455306529999 0.9291360378265381 -0.36967071890830994 -0.0 0.028948843479156494 0.6715095043182373 0 1.0 0 0.0 0 0.0 0 0.0\n0.9613277912139893 0.0751904845237732 0.21605446934700012 0.9291360378265381 -0.36967071890830994 -0.0 0.4496181607246399 0.512480616569519 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.8460309505462646 0.7894145250320435 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 -0.2839455306529999 0.0 1.0 -0.0 0.896752655506134 0.8321271538734436 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.18803346157073975 0.21605448424816132 0.0 0.999969482421875 -0.0 0.536641538143158 0.6864609718322754 0 1.0 0 0.0 0 0.0 0 0.0\n1.6856610774993896 -0.11884532123804092 -0.2839455306529999 -0.9896237254142761 -0.143589586019516 -0.0 0.03509938716888428 0.5686724185943604 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 -0.2839455306529999 -0.9862361550331116 -0.16528823971748352 -0.0 0.03469330072402954 0.5649328231811523 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 0.21605446934700012 -0.9862361550331116 -0.16528823971748352 -0.0 0.43666714429855347 0.4084749221801758 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4278943538665771 -0.06807669252157211 -0.2839455306529999 -0.9811395406723022 0.19315165281295776 -0.0 0.9993356466293335 0.5425490736961365 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 -0.9712515473365784 0.2380138486623764 -0.0 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 0.21605446934700012 -0.9712515473365784 0.2380138486623764 -0.0 0.5793260335922241 0.35026490688323975 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.99969482421875 0.024445325136184692 -0.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 -0.2839455306529999 0.999969482421875 -0.00317392498254776 -0.0 0.07684415578842163 0.6153649091720581 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1530647277832031 0.010100007057189941 0.21605446934700012 0.999969482421875 -0.00317392498254776 -0.0 0.4993695318698883 0.4259029030799866 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.9782708287239075 0.2072817087173462 -0.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 -0.2839455306529999 0.964476466178894 0.2641376852989197 -0.0 0.884676992893219 0.6387784481048584 0 1.0 0 0.0 0 0.0 0 0.0\n1.1888792514801025 0.0722278356552124 0.21605446934700012 0.964476466178894 0.2641376852989197 -0.0 0.5769736170768738 0.5028921365737915 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 -0.18394553661346436 -0.2839455306529999 1.0 0.0 -0.0 0.8834002017974854 0.4818020462989807 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 -0.2839455306529999 1.0 0.0 -0.0 0.8460309505462646 0.7894145250320435 0 1.0 0 0.0 0 0.0 0 0.0\n0.18038535118103027 0.18803346157073975 0.21605448424816132 1.0 0.0 -0.0 0.5768240690231323 0.6677558422088623 0 1.0 0 0.0 0 0.0 0 0.0\n1.6861646175384521 -0.12194903194904327 -0.2839455306529999 -0.9862361550331116 -0.16528823971748352 -0.0 0.03469330072402954 0.5649328231811523 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 -0.2839455306529999 -0.982909619808197 -0.18402661383152008 -0.0 0.0341530442237854 0.5601645112037659 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 0.21605446934700012 -0.982909619808197 -0.18402661383152008 -0.0 0.43683189153671265 0.40360039472579956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2535901069641113 0.0034450143575668335 -0.2839455306529999 -0.999969482421875 -0.00045777764171361923 -0.0 0.13118746876716614 0.5848770141601562 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 -0.999053955078125 -0.04312265291810036 -0.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 0.21605446934700012 -0.999053955078125 -0.04312265291810036 -0.0 0.4432278871536255 0.40499669313430786 0 1.0 0 0.0 0 0.0 0 0.0\n1.0955345630645752 0.07152733206748962 -0.2839455306529999 -0.9467146992683411 -0.32203131914138794 -0.0 0.936097264289856 0.6619822978973389 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 -0.2839455306529999 -0.964293360710144 -0.26471754908561707 -0.0 0.9353874921798706 0.6553221940994263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 0.21605446934700012 -0.964293360710144 -0.26471754908561707 -0.0 0.5309305191040039 0.49846935272216797 0 1.0 0 0.0 0 0.0 0 0.0\n0.08196139335632324 0.03111577033996582 -0.2839455306529999 -0.999969482421875 0.0019531846046447754 -0.0 0.9129189848899841 0.7195390462875366 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 -0.2839455306529999 -0.99993896484375 0.008301034569740295 -0.0 0.9140788316726685 0.7073009014129639 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 0.21605446934700012 -0.99993896484375 0.008301034569740295 -0.0 0.5418952107429504 0.560042142868042 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 -0.2839455306529999 0.9968565702438354 -0.0788903459906578 -0.0 0.07917439937591553 0.5303995609283447 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557834506034851 -0.06876019388437271 0.21605446934700012 0.9968565702438354 -0.0788903459906578 -0.0 0.4898357689380646 0.3426889181137085 0 1.0 0 0.0 0 0.0 0 0.0\n1.6868493556976318 -0.12590773403644562 -0.2839455306529999 -0.982909619808197 -0.18402661383152008 -0.0 0.0341530442237854 0.5601645112037659 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 -0.2839455306529999 -0.9772636890411377 -0.21192052960395813 -0.0 0.03357023000717163 0.5555682182312012 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 0.21605446934700012 -0.9772636890411377 -0.21192052960395813 -0.0 0.4370587468147278 0.39888298511505127 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9884412288665771 0.0006429105997085571 -0.2839455306529999 -0.999969482421875 0.0011291848495602608 -0.0 0.9694360494613647 0.6117208003997803 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 -0.2839455306529999 -0.99932861328125 0.03643909841775894 -0.0 0.9698705673217773 0.6007810831069946 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 0.21605446934700012 -0.99932861328125 0.03643909841775894 -0.0 0.6033116579055786 0.4218752980232239 0 1.0 0 0.0 0 0.0 0 0.0\n0.08191061019897461 0.01821810007095337 -0.2839455306529999 -0.99993896484375 0.008301034569740295 -0.0 0.9140788316726685 0.7073009014129639 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 -0.2839455306529999 -0.99981689453125 0.017670217901468277 -0.0 0.9152042865753174 0.6954561471939087 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 0.21605446934700012 -0.99981689453125 0.017670217901468277 -0.0 0.5422479510307312 0.548079252243042 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.9684133529663086 -0.24930571019649506 -0.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 -0.2839455306529999 0.9511398673057556 -0.3086947202682495 -0.0 0.03002151846885681 0.6653246879577637 0 1.0 0 0.0 0 0.0 0 0.0\n0.9594573974609375 0.06999492645263672 0.21605446934700012 0.9511398673057556 -0.3086947202682495 -0.0 0.44829061627388 0.5065951347351074 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.99981689453125 0.017700735479593277 -0.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 -0.2839455306529999 0.99993896484375 0.008484145626425743 -0.0 0.946895956993103 0.5426977872848511 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3295642137527466 -0.06969787180423737 0.21605446934700012 0.99993896484375 0.008484145626425743 -0.0 0.6346471905708313 0.37915945053100586 0 1.0 0 0.0 0 0.0 0 0.0\n1.6876194477081299 -0.1297277808189392 -0.2839455306529999 -0.9772636890411377 -0.21192052960395813 -0.0 0.03357023000717163 0.5555682182312012 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 -0.2839455306529999 -0.9704275727272034 -0.24134036898612976 -0.0 0.03294515609741211 0.5511438846588135 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 0.21605446934700012 -0.9704275727272034 -0.24134036898612976 -0.0 0.4373483657836914 0.39432311058044434 0 1.0 0 0.0 0 0.0 0 0.0\n0.8602306842803955 0.06933698058128357 -0.2839455306529999 -0.9663075804710388 0.25730153918266296 -0.0 0.08631324768066406 0.644163966178894 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 -0.9797662496566772 0.19998779892921448 -0.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 0.21605446934700012 -0.9797662496566772 0.19998779892921448 -0.0 0.3951107859611511 0.4943978190422058 0 1.0 0 0.0 0 0.0 0 0.0\n-1.42845618724823 -0.07065258175134659 -0.2839455306529999 -0.9712515473365784 0.2380138486623764 -0.0 0.9996737241744995 0.5394340753555298 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 -0.2839455306529999 -0.9586474299430847 0.2845240533351898 -0.0 1.000042200088501 0.5367017984390259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 0.21605446934700012 -0.9586474299430847 0.2845240533351898 -0.0 0.579150915145874 0.3474537134170532 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 -0.2839455306529999 0.9986876845359802 0.05102694779634476 -0.0 0.07480058073997498 0.5922513008117676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 -0.2839455306529999 0.99969482421875 0.024445325136184692 -0.0 0.07586252689361572 0.6035301685333252 0 1.0 0 0.0 0 0.0 0 0.0\n-1.152950406074524 0.00040453672409057617 0.21605446934700012 0.99969482421875 0.024445325136184692 -0.0 0.4994335174560547 0.4139253497123718 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 -0.2839455306529999 0.999969482421875 0.006256294436752796 -0.0 0.014528810977935791 0.7096704244613647 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 -0.2839455306529999 0.999969482421875 0.0014648884534835815 -0.0 0.014768153429031372 0.7227939367294312 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05954456329345703 0.01710525155067444 0.21605446934700012 0.999969482421875 0.0014648884534835815 -0.0 0.4619511365890503 0.5655359625816345 0 1.0 0 0.0 0 0.0 0 0.0\n1.688474416732788 -0.13340918719768524 -0.2839455306529999 -0.9704275727272034 -0.24134036898612976 -0.0 0.03294515609741211 0.5511438846588135 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 -0.2839455306529999 -0.9621570706367493 -0.27240821719169617 -0.0 0.032277703285217285 0.5468913316726685 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 0.21605446934700012 -0.9621570706367493 -0.27240821719169617 -0.0 0.4377015233039856 0.38992077112197876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9886071681976318 -0.008732706308364868 -0.2839455306529999 -0.99932861328125 0.03643909841775894 -0.0 0.9698705673217773 0.6007810831069946 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 -0.2839455306529999 -0.9971312880516052 0.07553330808877945 -0.0 0.9704671502113342 0.5903095006942749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 0.21605446934700012 -0.9971312880516052 0.07553330808877945 -0.0 0.604060173034668 0.4114415645599365 0 1.0 0 0.0 0 0.0 0 0.0\n1.0972347259521484 0.06597055494785309 -0.2839455306529999 -0.964293360710144 -0.26471754908561707 -0.0 0.9353874921798706 0.6553221940994263 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 -0.2839455306529999 -0.9776299595832825 -0.21030305325984955 -0.0 0.9348825812339783 0.6483409404754639 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 0.21605446934700012 -0.9776299595832825 -0.21030305325984955 -0.0 0.5319159626960754 0.49171215295791626 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6559737920761108 -0.07205118983983994 -0.2839455306529999 -0.9965819120407104 0.08249153196811676 -0.0 0.1285407841205597 0.515961766242981 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 -0.9991455078125 0.04068117216229439 -0.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 0.21605446934700012 -0.9991455078125 0.04068117216229439 -0.0 0.4336860775947571 0.34944528341293335 0 1.0 0 0.0 0 0.0 0 0.0\n0.0817573070526123 0.006144970655441284 -0.2839455306529999 -0.99981689453125 0.017670217901468277 -0.0 0.9152042865753174 0.6954561471939087 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 -0.2839455306529999 -0.99957275390625 0.02847376838326454 -0.0 0.9162991046905518 0.6840966939926147 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 0.21605446934700012 -0.99957275390625 0.02847376838326454 -0.0 0.5425242185592651 0.5365892648696899 0 1.0 0 0.0 0 0.0 0 0.0\n1.6894142627716064 -0.13695195317268372 -0.2839455306529999 -0.9621570706367493 -0.27240821719169617 -0.0 0.032277703285217285 0.5468913316726685 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 -0.2839455306529999 -0.9522690773010254 -0.30521562695503235 -0.0 0.03156742453575134 0.5428102016448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 0.21605446934700012 -0.9522690773010254 -0.30521562695503235 -0.0 0.4381193518638611 0.38567590713500977 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.9967650175094604 0.08032471686601639 -0.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 -0.2839455306529999 0.9986876845359802 0.05102694779634476 -0.0 0.07480058073997498 0.5922513008117676 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1526074409484863 -0.008833646774291992 0.21605446934700012 0.9986876845359802 0.05102694779634476 -0.0 0.49964436888694763 0.40247344970703125 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 -0.2839455306529999 0.9813531637191772 -0.19205297529697418 -0.0 0.031516820192337036 0.6521144509315491 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 -0.2839455306529999 0.9684133529663086 -0.24930571019649506 -0.0 0.030875861644744873 0.6588609218597412 0 1.0 0 0.0 0 0.0 0 0.0\n0.9578835964202881 0.06456585228443146 0.21605446934700012 0.9684133529663086 -0.24930571019649506 -0.0 0.44711482524871826 0.5003923177719116 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 -0.2839455306529999 0.9979552626609802 0.0637531653046608 -0.0 0.07858288288116455 0.5224087238311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 -0.2839455306529999 0.999969482421875 -0.003662221133708954 -0.0 0.07894507050514221 0.5263540744781494 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5579683780670166 -0.07221173495054245 0.21605446934700012 0.999969482421875 -0.003662221133708954 -0.0 0.4897008240222931 0.33862465620040894 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 -0.2839455306529999 0.999908447265625 0.013367107138037682 -0.0 0.014256507158279419 0.6969905495643616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 -0.2839455306529999 0.999969482421875 0.006256294436752796 -0.0 0.014528810977935791 0.7096704244613647 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059506893157958984 0.004450798034667969 0.21605446934700012 0.999969482421875 0.006256294436752796 -0.0 0.46153777837753296 0.5524322390556335 0 1.0 0 0.0 0 0.0 0 0.0\n1.6904394626617432 -0.14035606384277344 -0.2839455306529999 -0.9522690773010254 -0.30521562695503235 -0.0 0.03156742453575134 0.5428102016448975 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 -0.2839455306529999 -0.9405499696731567 -0.3395794630050659 -0.0 0.030814290046691895 0.5388997793197632 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 0.21605446934700012 -0.9405499696731567 -0.3395794630050659 -0.0 0.4386027455329895 0.3815883994102478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2532728910446167 -0.011683180928230286 -0.2839455306529999 -0.999053955078125 -0.04312265291810036 -0.0 0.12915363907814026 0.5690999031066895 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 -0.9960020780563354 -0.08899196982383728 -0.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 0.21605446934700012 -0.9960020780563354 -0.08899196982383728 -0.0 0.4427863359451294 0.38930970430374146 0 1.0 0 0.0 0 0.0 0 0.0\n1.0986576080322266 0.06012919545173645 -0.2839455306529999 -0.9776299595832825 -0.21030305325984955 -0.0 0.9348825812339783 0.6483409404754639 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 -0.9872432351112366 -0.1590624749660492 -0.0 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 0.21605446934700012 -0.9872432351112366 -0.1590624749660492 -0.0 0.5327593684196472 0.4845793843269348 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4290716648101807 -0.07291226089000702 -0.2839455306529999 -0.9586474299430847 0.2845240533351898 -0.0 1.000042200088501 0.5367017984390259 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 -0.2839455306529999 -0.9429304003715515 0.3329569399356842 -0.0 1.0006492137908936 0.532871663570404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 0.21605446934700012 -0.9429304003715515 0.3329569399356842 -0.0 0.5788003206253052 0.3434860110282898 0 1.0 0 0.0 0 0.0 0 0.0\n0.08150196075439453 -0.005103573203086853 -0.2839455306529999 -0.99957275390625 0.02847376838326454 -0.0 0.9162991046905518 0.6840966939926147 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 -0.2839455306529999 -0.9991455078125 0.04104739427566528 -0.0 0.9173672795295715 0.6733074188232422 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 0.21605446934700012 -0.9991455078125 0.04104739427566528 -0.0 0.542721152305603 0.5256565809249878 0 1.0 0 0.0 0 0.0 0 0.0\n1.6915500164031982 -0.1436215341091156 -0.2839455306529999 -0.9405499696731567 -0.3395794630050659 -0.0 0.030814290046691895 0.5388997793197632 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 -0.2839455306529999 -0.9267860651016235 -0.37553027272224426 -0.0 0.030018210411071777 0.5351594090461731 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 0.21605446934700012 -0.9267860651016235 -0.37553027272224426 -0.0 0.43915221095085144 0.37765800952911377 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 -0.2839455306529999 0.9936216473579407 0.11270485818386078 -0.0 0.07243585586547852 0.5714563131332397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 -0.2839455306529999 0.9967650175094604 0.08032471686601639 -0.0 0.07365843653678894 0.5815540552139282 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1520358324050903 -0.017614543437957764 0.21605446934700012 0.9967650175094604 0.08032471686601639 -0.0 0.5000072121620178 0.39157402515411377 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.9904782176017761 -0.13745537400245667 -0.0 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 -0.2839455306529999 0.9813531637191772 -0.19205297529697418 -0.0 0.031516820192337036 0.6521144509315491 0 1.0 0 0.0 0 0.0 0 0.0\n0.9566066265106201 0.058903276920318604 0.21605446934700012 0.9813531637191772 -0.19205297529697418 -0.0 0.4460909366607666 0.49386513233184814 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.9915769100189209 0.12933744490146637 -0.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 -0.2839455306529999 0.9979552626609802 0.0637531653046608 -0.0 0.07858288288116455 0.5224087238311768 0 1.0 0 0.0 0 0.0 0 0.0\n-1.557861328125 -0.07561706751585007 0.21605446934700012 0.9979552626609802 0.0637531653046608 -0.0 0.489724725484848 0.33461397886276245 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 -0.2839455306529999 0.999755859375 0.021607104688882828 -0.0 0.01395145058631897 0.6848616600036621 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 -0.2839455306529999 0.999908447265625 0.013367107138037682 -0.0 0.014256507158279419 0.6969905495643616 0 1.0 0 0.0 0 0.0 0 0.0\n-0.059393882751464844 -0.007359623908996582 0.21605446934700012 0.999908447265625 0.013367107138037682 -0.0 0.4611889123916626 0.5397636890411377 0 1.0 0 0.0 0 0.0 0 0.0\n1.6927454471588135 -0.1467483639717102 -0.2839455306529999 -0.9267860651016235 -0.37553027272224426 -0.0 0.030018210411071777 0.5351594090461731 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 -0.2839455306529999 -0.9106723070144653 -0.41309854388237 -0.0 0.029179036617279053 0.5315882563591003 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 0.21605446934700012 -0.9106723070144653 -0.41309854388237 -0.0 0.43976858258247375 0.3738844394683838 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9891033172607422 -0.017711833119392395 -0.2839455306529999 -0.9971312880516052 0.07553330808877945 -0.0 0.9704671502113342 0.5903095006942749 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 -0.2839455306529999 -0.9930112361907959 0.11798455566167831 -0.0 0.9712231159210205 0.580313503742218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 0.21605446934700012 -0.9930112361907959 0.11798455566167831 -0.0 0.6045933961868286 0.40139156579971313 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4300907850265503 -0.07608164101839066 -0.2839455306529999 -0.9429304003715515 0.3329569399356842 -0.0 1.0006492137908936 0.532871663570404 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 -0.922421932220459 0.38612017035484314 -0.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 0.21605446934700012 -0.922421932220459 0.38612017035484314 -0.0 0.5783247351646423 0.3395894765853882 0 1.0 0 0.0 0 0.0 0 0.0\n0.08114433288574219 -0.015527546405792236 -0.2839455306529999 -0.9991455078125 0.04104739427566528 -0.0 0.9173672795295715 0.6733074188232422 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 -0.2839455306529999 -0.9984130263328552 0.055848874151706696 -0.0 0.9184120893478394 0.6631647944450378 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 0.21605446934700012 -0.9984130263328552 0.055848874151706696 -0.0 0.5428363680839539 0.515357255935669 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.9879757165908813 0.15445417165756226 -0.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 -0.2839455306529999 0.9782708287239075 0.2072817087173462 -0.0 0.8844856023788452 0.6234896779060364 0 1.0 0 0.0 0 0.0 0 0.0\n1.1923551559448242 0.0578269362449646 0.21605446934700012 0.9782708287239075 0.2072817087173462 -0.0 0.5793853402137756 0.4883795976638794 0 1.0 0 0.0 0 0.0 0 0.0\n1.6940257549285889 -0.14973653852939606 -0.2839455306529999 -0.9106723070144653 -0.41309854388237 -0.0 0.029179036617279053 0.5315882563591003 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 -0.2839455306529999 -0.8919339776039124 -0.4521317183971405 -0.0 0.02829611301422119 0.5281853675842285 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 0.21605446934700012 -0.8919339776039124 -0.4521317183971405 -0.0 0.4404529929161072 0.3702673316001892 0 1.0 0 0.0 0 0.0 0 0.0\n0.8572096824645996 0.056431978940963745 -0.2839455306529999 -0.9797662496566772 0.19998779892921448 -0.0 0.08673921227455139 0.6304571628570557 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 -0.9893490672111511 0.14545121788978577 -0.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 0.21605446934700012 -0.9893490672111511 0.14545121788978577 -0.0 0.39298132061958313 0.48083871603012085 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6562875509262085 -0.07716283947229385 -0.2839455306529999 -0.9991455078125 0.04068117216229439 -0.0 0.1280842125415802 0.5108512043952942 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 -0.999969482421875 -0.004608294926583767 -0.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 0.21605446934700012 -0.999969482421875 -0.004608294926583767 -0.0 0.43325650691986084 0.34423261880874634 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.9888912439346313 0.14853358268737793 -0.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 -0.2839455306529999 0.9936216473579407 0.11270485818386078 -0.0 0.07243585586547852 0.5714563131332397 0 1.0 0 0.0 0 0.0 0 0.0\n-1.151235580444336 -0.02593815326690674 0.21605446934700012 0.9936216473579407 0.11270485818386078 -0.0 0.5005269646644592 0.3812466263771057 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 -0.2839455306529999 0.999481201171875 0.031281471252441406 -0.0 0.013614147901535034 0.6733810901641846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 -0.2839455306529999 0.999755859375 0.021607104688882828 -0.0 0.01395145058631897 0.6848616600036621 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05920529365539551 -0.018326014280319214 0.21605446934700012 0.999755859375 0.021607104688882828 -0.0 0.4609074592590332 0.5276371240615845 0 1.0 0 0.0 0 0.0 0 0.0\n1.6953914165496826 -0.15258607268333435 -0.2839455306529999 -0.8919339776039124 -0.4521317183971405 -0.0 0.02829611301422119 0.5281853675842285 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 -0.2839455306529999 -0.8702963590621948 -0.4924771785736084 -0.0 0.027369141578674316 0.5249497294425964 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 0.21605446934700012 -0.8702963590621948 -0.4924771785736084 -0.0 0.44120627641677856 0.3668063282966614 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2523205280303955 -0.026244625449180603 -0.2839455306529999 -0.9960020780563354 -0.08899196982383728 -0.0 0.12694236636161804 0.5540019273757935 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 -0.9904171824455261 -0.13800470530986786 -0.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 0.21605446934700012 -0.9904171824455261 -0.13800470530986786 -0.0 0.44267547130584717 0.37415337562561035 0 1.0 0 0.0 0 0.0 0 0.0\n1.0998032093048096 0.05400325357913971 -0.2839455306529999 -0.9872432351112366 -0.1590624749660492 -0.0 0.9345777034759521 0.6410322189331055 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 -0.2839455306529999 -0.9938047528266907 -0.1110873743891716 -0.0 0.9344682097434998 0.6333895921707153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 0.21605446934700012 -0.9938047528266907 -0.1110873743891716 -0.0 0.533460259437561 0.47706329822540283 0 1.0 0 0.0 0 0.0 0 0.0\n0.08068466186523438 -0.025126934051513672 -0.2839455306529999 -0.9984130263328552 0.055848874151706696 -0.0 0.9184120893478394 0.6631647944450378 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 -0.2839455306529999 -0.9972838759422302 0.07354960590600967 -0.0 0.9194369316101074 0.6537357568740845 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 0.21605446934700012 -0.9972838759422302 0.07354960590600967 -0.0 0.5428673028945923 0.5057579278945923 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.999603271484375 0.02786339819431305 -0.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 -0.2839455306529999 0.99981689453125 0.017700735479593277 -0.0 0.9472634792327881 0.5347473621368408 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3294657468795776 -0.07733432948589325 0.21605446934700012 0.99981689453125 0.017700735479593277 -0.0 0.635711669921875 0.371421754360199 0 1.0 0 0.0 0 0.0 0 0.0\n1.6968424320220947 -0.15529696643352509 -0.2839455306529999 -0.8702963590621948 -0.4924771785736084 -0.0 0.027369141578674316 0.5249497294425964 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 -0.2839455306529999 -0.8456068634986877 -0.5337381958961487 -0.0 0.026397764682769775 0.5218805074691772 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 0.21605446934700012 -0.8456068634986877 -0.5337381958961487 -0.0 0.4420292377471924 0.36350131034851074 0 1.0 0 0.0 0 0.0 0 0.0\n-0.989930272102356 -0.026294484734535217 -0.2839455306529999 -0.9930112361907959 0.11798455566167831 -0.0 0.9712231159210205 0.580313503742218 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 -0.2839455306529999 -0.9864497780799866 0.16388440132141113 -0.0 0.972136378288269 0.570796012878418 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 0.21605446934700012 -0.9864497780799866 0.16388440132141113 -0.0 0.6049054265022278 0.3917279839515686 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 -0.2839455306529999 0.9963072538375854 -0.08575700968503952 -0.0 0.032178282737731934 0.6377542018890381 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 -0.2839455306529999 0.9904782176017761 -0.13745537400245667 -0.0 0.03194934129714966 0.64508056640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9556264877319336 0.05300718545913696 0.21605446934700012 0.9904782176017761 -0.13745537400245667 -0.0 0.4452192783355713 0.4870067834854126 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 -0.2839455306529999 0.9805291891098022 0.19629505276679993 -0.0 0.07751825451850891 0.514907956123352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 -0.2839455306529999 0.9915769100189209 0.12933744490146637 -0.0 0.07810711860656738 0.5185943841934204 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5575402975082397 -0.07894456386566162 0.21605446934700012 0.9915769100189209 0.12933744490146637 -0.0 0.48989224433898926 0.3306938409805298 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 -0.2839455306529999 0.999053955078125 0.04281746968626976 -0.0 0.013244688510894775 0.6626352667808533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 -0.2839455306529999 0.999481201171875 0.031281471252441406 -0.0 0.013614147901535034 0.6733810901641846 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05894136428833008 -0.028448358178138733 0.21605446934700012 0.999481201171875 0.031281471252441406 -0.0 0.4606959819793701 0.5161502361297607 0 1.0 0 0.0 0 0.0 0 0.0\n1.6983788013458252 -0.15786920487880707 -0.2839455306529999 -0.8456068634986877 -0.5337381958961487 -0.0 0.026397764682769775 0.5218805074691772 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 -0.2839455306529999 -0.8166447877883911 -0.5770744681358337 -0.0 0.025381773710250854 0.5189765691757202 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 0.21605446934700012 -0.8166447877883911 -0.5770744681358337 -0.0 0.44292232394218445 0.360352098941803 0 1.0 0 0.0 0 0.0 0 0.0\n1.1006715297698975 0.04759271442890167 -0.2839455306529999 -0.9938047528266907 -0.1110873743891716 -0.0 0.9344682097434998 0.6333895921707153 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 -0.9977721571922302 -0.06640827655792236 -0.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 0.21605446934700012 -0.9977721571922302 -0.06640827655792236 -0.0 0.5340175628662109 0.46915704011917114 0 1.0 0 0.0 0 0.0 0 0.0\n-1.431280255317688 -0.07916833460330963 -0.2839455306529999 -0.922421932220459 0.38612017035484314 -0.0 1.0013539791107178 0.5291415452957153 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 -0.2839455306529999 -0.8988006114959717 0.4383068382740021 -0.0 1.002156376838684 0.5255098938941956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 0.21605446934700012 -0.8988006114959717 0.4383068382740021 -0.0 0.5777221322059631 0.3357633352279663 0 1.0 0 0.0 0 0.0 0 0.0\n0.08012270927429199 -0.033901751041412354 -0.2839455306529999 -0.9972838759422302 0.07354960590600967 -0.0 0.9194369316101074 0.6537357568740845 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 -0.2839455306529999 -0.9954527616500854 0.0950651541352272 -0.0 0.9204447269439697 0.6450778245925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 0.21605446934700012 -0.9954527616500854 0.0950651541352272 -0.0 0.5428118705749512 0.4969159960746765 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.982116162776947 0.18823817372322083 -0.0 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 -0.2839455306529999 0.9888912439346313 0.14853358268737793 -0.0 0.07113239169120789 0.5619699954986572 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1502066850662231 -0.033804476261138916 0.21605446934700012 0.9888912439346313 0.14853358268737793 -0.0 0.5012085437774658 0.3715049624443054 0 1.0 0 0.0 0 0.0 0 0.0\n1.7000000476837158 -0.1603028029203415 -0.2839455306529999 -0.8166447877883911 -0.5770744681358337 -0.0 0.025381773710250854 0.5189765691757202 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 -0.2839455306529999 -0.7828608155250549 -0.6221808791160583 -0.0 0.024298399686813354 0.516197681427002 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 0.21605446934700012 -0.7828608155250549 -0.6221808791160583 -0.0 0.44390809535980225 0.35731375217437744 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9910880327224731 -0.034480661153793335 -0.2839455306529999 -0.9864497780799866 0.16388440132141113 -0.0 0.972136378288269 0.570796012878418 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 -0.2839455306529999 -0.9769585132598877 0.2133854180574417 -0.0 0.9732059240341187 0.5617566108703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 0.21605446934700012 -0.9769585132598877 0.2133854180574417 -0.0 0.6049898862838745 0.38245081901550293 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4326399564743042 -0.08217232674360275 -0.2839455306529999 -0.8988006114959717 0.4383068382740021 -0.0 1.002156376838684 0.5255098938941956 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 -0.8722190260887146 0.48908963799476624 -0.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 0.21605446934700012 -0.8722190260887146 0.48908963799476624 -0.0 0.5769903659820557 0.3320075273513794 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.999298095703125 -0.03717154264450073 -0.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 -0.2839455306529999 0.9963072538375854 -0.08575700968503952 -0.0 0.032178282737731934 0.6377542018890381 0 1.0 0 0.0 0 0.0 0 0.0\n0.9549429416656494 0.04687759280204773 0.21605446934700012 0.9963072538375854 -0.08575700968503952 -0.0 0.44450050592422485 0.4798106551170349 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 -0.2839455306529999 0.9983825087547302 0.056764427572488785 -0.0 0.012842893600463867 0.6526980996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 -0.2839455306529999 0.999053955078125 0.04281746968626976 -0.0 0.013244688510894775 0.6626352667808533 0 1.0 0 0.0 0 0.0 0 0.0\n-0.058602094650268555 -0.03772667050361633 0.21605446934700012 0.999053955078125 0.04281746968626976 -0.0 0.46055692434310913 0.5053889751434326 0 1.0 0 0.0 0 0.0 0 0.0\n1.7017428874969482 -0.1626305878162384 -0.2839455306529999 -0.7828608155250549 -0.6221808791160583 -0.0 0.024298399686813354 0.516197681427002 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 -0.2839455306529999 -0.7462080717086792 -0.6656697392463684 -0.0 0.02312496304512024 0.5135035514831543 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 0.21605446934700012 -0.7462080717086792 -0.6656697392463684 -0.0 0.4450095295906067 0.35434210300445557 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2507333755493164 -0.04023931920528412 -0.2839455306529999 -0.9904171824455261 -0.13800470530986786 -0.0 0.12454873323440552 0.5396028161048889 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 -0.981749951839447 -0.1900997906923294 -0.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 0.21605446934700012 -0.981749951839447 -0.1900997906923294 -0.0 0.4429131746292114 0.3595367670059204 0 1.0 0 0.0 0 0.0 0 0.0\n0.8548600673675537 0.042969971895217896 -0.2839455306529999 -0.9893490672111511 0.14545121788978577 -0.0 0.08680680394172668 0.6162465214729309 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 -0.9955748319625854 0.09390545636415482 -0.0 0.08653220534324646 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 0.21605446934700012 -0.9955748319625854 0.09390545636415482 -0.0 0.3910754919052124 0.46660172939300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.07945871353149414 -0.04185198247432709 -0.2839455306529999 -0.9954527616500854 0.0950651541352272 -0.0 0.9204447269439697 0.6450778245925903 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 -0.2839455306529999 -0.9925534725189209 0.12170781195163727 -0.0 0.9214386343955994 0.6372390985488892 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 0.21605446934700012 -0.9925534725189209 0.12170781195163727 -0.0 0.5426681041717529 0.4888794422149658 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.964598536491394 0.2636799216270447 -0.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 -0.2839455306529999 0.9805291891098022 0.19629505276679993 -0.0 0.07751825451850891 0.514907956123352 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5570050477981567 -0.08219422399997711 0.21605446934700012 0.9805291891098022 0.19629505276679993 -0.0 0.4902057349681854 0.32686203718185425 0 1.0 0 0.0 0 0.0 0 0.0\n1.703643560409546 -0.16488540172576904 -0.2839455306529999 -0.7462080717086792 -0.6656697392463684 -0.0 0.02312496304512024 0.5135035514831543 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 -0.2839455306529999 -0.7084872126579285 -0.7057099938392639 -0.0 0.021860778331756592 0.5108931660652161 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 0.21605446934700012 -0.7084872126579285 -0.7057099938392639 -0.0 0.44622862339019775 0.35143786668777466 0 1.0 0 0.0 0 0.0 0 0.0\n-1.656392216682434 -0.0823693498969078 -0.2839455306529999 -0.999969482421875 -0.004608294926583767 -0.0 0.12753111124038696 0.5057005882263184 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 -0.9981994032859802 -0.059907834976911545 -0.0 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 0.21605446934700012 -0.9981994032859802 -0.059907834976911545 -0.0 0.4327855110168457 0.3363778591156006 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 -0.2839455306529999 0.9726554155349731 0.23221534490585327 -0.0 0.06827953457832336 0.5448507070541382 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 -0.2839455306529999 0.982116162776947 0.18823817372322083 -0.0 0.06974729895591736 0.5531009435653687 0 1.0 0 0.0 0 0.0 0 0.0\n-1.148949146270752 -0.0412134975194931 0.21605446934700012 0.982116162776947 0.18823817372322083 -0.0 0.5020564794540405 0.36235707998275757 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.9943845868110657 0.10565508157014847 -0.0 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 -0.2839455306529999 0.9879757165908813 0.15445417165756226 -0.0 0.8846826553344727 0.6074569225311279 0 1.0 0 0.0 0 0.0 0 0.0\n1.1951353549957275 0.04261605441570282 0.21605446934700012 0.9879757165908813 0.15445417165756226 -0.0 0.5815703272819519 0.47294706106185913 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.9972533583641052 0.07397686690092087 -0.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 -0.2839455306529999 0.9983825087547302 0.056764427572488785 -0.0 0.012842893600463867 0.6526980996131897 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05818748474121094 -0.046160951256752014 0.21605446934700012 0.9983825087547302 0.056764427572488785 -0.0 0.46049249172210693 0.4954274892807007 0 1.0 0 0.0 0 0.0 0 0.0\n1.705702543258667 -0.1670672595500946 -0.2839455306529999 -0.7084872126579285 -0.7057099938392639 -0.0 0.021860778331756592 0.5108931660652161 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 -0.2839455306529999 -0.670186460018158 -0.7421491146087646 -0.0 0.02050536870956421 0.5083656311035156 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 0.21605446934700012 -0.670186460018158 -0.7421491146087646 -0.0 0.44756728410720825 0.3486024737358093 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9925765991210938 -0.04227036237716675 -0.2839455306529999 -0.9769585132598877 0.2133854180574417 -0.0 0.9732059240341187 0.5617566108703613 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 -0.2839455306529999 -0.9638355374336243 0.26645711064338684 -0.0 0.9744312167167664 0.553192138671875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 0.21605446934700012 -0.9638355374336243 0.26645711064338684 -0.0 0.6048398613929749 0.3735578656196594 0 1.0 0 0.0 0 0.0 0 0.0\n1.1012625694274902 0.04089759290218353 -0.2839455306529999 -0.9977721571922302 -0.06640827655792236 -0.0 0.9345499277114868 0.6254070997238159 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 -0.9989623427391052 -0.044892728328704834 -0.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 0.21605446934700012 -0.9989623427391052 -0.044892728328704834 -0.0 0.5344297289848328 0.460854709148407 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15796852111816406 -0.04734307527542114 -0.2839455306529999 -0.999969482421875 -0.005340739153325558 -0.0 0.07294094562530518 0.635789155960083 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 -0.999755859375 -0.02209540084004402 -0.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 0.21605446934700012 -0.999725341796875 -0.02209540084004402 -0.0 0.4052700400352478 0.48801618814468384 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.99920654296875 0.03906369209289551 -0.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 -0.2839455306529999 0.999603271484375 0.02786339819431305 -0.0 0.9475767612457275 0.5272431373596191 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3293014764785767 -0.08461322635412216 0.21605446934700012 0.999603271484375 0.02786339819431305 -0.0 0.6367695331573486 0.36414480209350586 0 1.0 0 0.0 0 0.0 0 0.0\n1.7079198360443115 -0.1691761314868927 -0.2839455306529999 -0.670186460018158 -0.7421491146087646 -0.0 0.02050536870956421 0.5083656311035156 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 -0.2839455306529999 -0.6318246722221375 -0.7750785946846008 -0.0 0.01905834674835205 0.5059202909469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 0.21605445444583893 -0.6318246722221375 -0.7750785946846008 -0.0 0.4490269422531128 0.34583741426467896 0 1.0 0 0.0 0 0.0 0 0.0\n-1.434169888496399 -0.08509361743927002 -0.2839455306529999 -0.8722190260887146 0.48908963799476624 -0.0 1.0030560493469238 0.5219749212265015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 -0.2839455306529999 -0.842982292175293 0.5379192233085632 -0.0 1.004052996635437 0.5185349583625793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 0.21605446934700012 -0.842982292175293 0.5379192233085632 -0.0 0.5761270523071289 0.3283221125602722 0 1.0 0 0.0 0 0.0 0 0.0\n0.07869243621826172 -0.04897764325141907 -0.2839455306529999 -0.9925534725189209 0.12170781195163727 -0.0 0.9214386343955994 0.6372390985488892 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 -0.2839455306529999 -0.9878231287002563 0.15552231669425964 -0.0 0.9224212169647217 0.6302591562271118 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 0.21605446934700012 -0.9878231287002563 0.15552231669425964 -0.0 0.5424344539642334 0.4816877245903015 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.9597155451774597 0.28095340728759766 -0.0 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 -0.2839455306529999 0.9726554155349731 0.23221534490585327 -0.0 0.06827953457832336 0.5448507070541382 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1474629640579224 -0.04816523194313049 0.21605446934700012 0.9726554155349731 0.23221534490585327 -0.0 0.5030751824378967 0.35380715131759644 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 -0.2839455306529999 0.9998779296875 -0.013641773723065853 -0.0 0.03204253315925598 0.6222053170204163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 -0.2839455306529999 0.999298095703125 -0.03717154264450073 -0.0 0.032207876443862915 0.6301307082176208 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545562267303467 0.04051448404788971 0.21605446934700012 0.999298095703125 -0.03717154264450073 -0.0 0.44393593072891235 0.47227048873901367 0 1.0 0 0.0 0 0.0 0 0.0\n1.7102949619293213 -0.17121203243732452 -0.2839455306529999 -0.6318246722221375 -0.7750785946846008 -0.0 0.01905834674835205 0.5059202909469604 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 -0.2839455306529999 -0.5937376022338867 -0.8046205043792725 -0.0 0.0175190269947052 0.5035566091537476 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 0.21605445444583893 -0.5937376022338867 -0.8046205043792725 -0.0 0.4506097733974457 0.34314483404159546 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9943959712982178 -0.04966357350349426 -0.2839455306529999 -0.9638355374336243 0.26645711064338684 -0.0 0.9744312167167664 0.553192138671875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 -0.2839455306529999 -0.9464095234870911 0.3229468762874603 -0.0 0.9758127927780151 0.5450972318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 0.21605446934700012 -0.9464095234870911 0.3229468762874603 -0.0 0.6044479608535767 0.3650451898574829 0 1.0 0 0.0 0 0.0 0 0.0\n1.101576328277588 0.0339178740978241 -0.2839455306529999 0.0 0.999969482421875 -0.0 0.9348187446594238 0.6170793771743774 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 -0.2839455306529999 0.0 1.0 -0.0 1.0320425033569336 0.6222053170204163 0 1.0 0 0.0 0 0.0 0 0.0\n0.9544661045074463 0.0339178740978241 0.21605446934700012 0.0 0.999969482421875 -0.0 0.44352710247039795 0.4643810987472534 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 -0.2839455306529999 0.9437543749809265 0.33060702681541443 -0.0 0.07600328326225281 0.5079073905944824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 -0.2839455306529999 0.964598536491394 0.2636799216270447 -0.0 0.07681694626808167 0.5113465785980225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5562559366226196 -0.08536604791879654 0.21605446934700012 0.964598536491394 0.2637104392051697 -0.0 0.49066728353500366 0.32311660051345825 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.9953917264938354 0.095736563205719 -0.0 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 -0.2839455306529999 0.9972533583641052 0.07397686690092087 -0.0 0.012408286333084106 0.6436313390731812 0 1.0 0 0.0 0 0.0 0 0.0\n-0.057697296142578125 -0.053751200437545776 0.21605446934700012 0.9972533583641052 0.07397686690092087 -0.0 0.46050482988357544 0.48632752895355225 0 1.0 0 0.0 0 0.0 0 0.0\n1.7128283977508545 -0.17317496240139008 -0.2839455306529999 -0.5937376022338867 -0.8046205043792725 -0.0 0.0175190269947052 0.5035566091537476 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 -0.2839455306529999 -0.556291401386261 -0.8309579491615295 -0.0 0.01588699221611023 0.5012739896774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 0.21605445444583893 -0.556291401386261 -0.8309579491615295 -0.0 0.4523172080516815 0.3405272960662842 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2485114336013794 -0.053667277097702026 -0.2839455306529999 -0.981749951839447 -0.1900997906923294 -0.0 0.12196633219718933 0.525911808013916 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 -0.9694814682006836 -0.2451246678829193 -0.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 0.21605446934700012 -0.9694814682006836 -0.2451246678829193 -0.0 0.44352030754089355 0.3454611897468567 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4358701705932617 -0.08793220669031143 -0.2839455306529999 -0.842982292175293 0.5379192233085632 -0.0 1.004052996635437 0.5185349583625793 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 -0.2839455306529999 -0.8114261031150818 0.5843989253044128 -0.0 1.0051469802856445 0.5151885747909546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 0.21605446934700012 -0.8114261031150818 0.5843989253044128 -0.0 0.5751299858093262 0.32470762729644775 0 1.0 0 0.0 0 0.0 0 0.0\n0.07782411575317383 -0.0552787184715271 -0.2839455306529999 -0.9878231287002563 0.15552231669425964 -0.0 0.9224212169647217 0.6302591562271118 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 -0.2839455306529999 -0.9798578023910522 0.19965209066867828 -0.0 0.9233952164649963 0.6241699457168579 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 0.21605446934700012 -0.9798578023910522 0.19965209066867828 -0.0 0.5421093106269836 0.475372850894928 0 1.0 0 0.0 0 0.0 0 0.0\n0.8531818389892578 0.028950944542884827 -0.2839455306529999 -0.9955748319625854 0.09390545636415482 -0.0 0.08653220534324646 0.6015206575393677 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 -0.9989318251609802 0.045564133673906326 -0.0 0.08592897653579712 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 0.21605446934700012 -0.9989318251609802 0.045564133673906326 -0.0 0.3893885314464569 0.45168209075927734 0 1.0 0 0.0 0 0.0 0 0.0\n1.715519666671753 -0.17506492137908936 -0.2839455306529999 -0.556291401386261 -0.8309579491615295 -0.0 0.01588699221611023 0.5012739896774292 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 -0.2839455306529999 -0.5197302103042603 -0.8543046116828918 -0.0 0.014161437749862671 0.49907225370407104 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 0.21605445444583893 -0.5197302103042603 -0.8543046116828918 -0.0 0.45415133237838745 0.3379872441291809 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15787625312805176 -0.05594152212142944 -0.2839455306529999 -0.999755859375 -0.02209540084004402 -0.0 0.07233351469039917 0.6266542673110962 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 -0.9989318251609802 -0.045686207711696625 -0.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 0.21605446934700012 -0.9989318251609802 -0.045686207711696625 -0.0 0.4047679007053375 0.4791291356086731 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 -0.2839455306529999 0.9422894716262817 0.334727019071579 -0.0 0.0650908350944519 0.5301951169967651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 -0.2839455306529999 0.9597155451774597 0.28095340728759766 -0.0 0.06672787666320801 0.5372171401977539 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1457481384277344 -0.054659679532051086 0.21605446934700012 0.9597155451774597 0.28095340728759766 -0.0 0.5042688250541687 0.3458558917045593 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.9182103872299194 0.3960081934928894 -0.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 -0.2839455306529999 0.9437543749809265 0.33060702681541443 -0.0 0.07600328326225281 0.5079073905944824 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5552927255630493 -0.0884600356221199 0.21605446934700012 0.9437543749809265 0.33060702681541443 -0.0 0.49127960205078125 0.31945616006851196 0 1.0 0 0.0 0 0.0 0 0.0\n1.7183692455291748 -0.17688190937042236 -0.2839455306529999 -0.5197302103042603 -0.8543046116828918 -0.0 0.014161437749862671 0.49907225370407104 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 -0.4842982292175293 -0.8748741149902344 -0.0 0.012341886758804321 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 0.21605445444583893 -0.4842982292175293 -0.8748741149902344 -0.0 0.45611369609832764 0.33552831411361694 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9965461492538452 -0.05666030943393707 -0.2839455306529999 -0.9464095234870911 0.3229468762874603 -0.0 0.9758127927780151 0.5450972318649292 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 -0.2839455306529999 -0.9239173531532288 0.382519006729126 -0.0 0.977351725101471 0.53746497631073 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 0.21605446934700012 -0.9239173531532288 0.382519006729126 -0.0 0.60380619764328 0.35690802335739136 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.9981383681297302 0.060731835663318634 -0.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 -0.2839455306529999 0.9943845868110657 0.10565508157014847 -0.0 0.8852506279945374 0.5906726121902466 0 1.0 0 0.0 0 0.0 0 0.0\n1.1972198486328125 0.026595190167427063 0.21605446934700012 0.9943845868110657 0.10565508157014847 -0.0 0.58353590965271 0.4565879702568054 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6561623811721802 -0.09019431471824646 -0.2839455306529999 -0.9981994032859802 -0.059907834976911545 -0.0 0.12654244899749756 0.49805402755737305 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 -0.9924619197845459 -0.12231818586587906 -0.0 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 0.21605446934700012 -0.9924619197845459 -0.12231818586587906 -0.0 0.43254271149635315 0.3287145495414734 0 1.0 0 0.0 0 0.0 0 0.0\n0.8521747589111328 0.014374911785125732 -0.2839455306529999 -0.9989318251609802 0.045564133673906326 -0.0 0.08592897653579712 0.5862740278244019 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 -0.999969482421875 0.001037629321217537 -0.0 0.08500796556472778 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 0.21605446934700012 -0.999969482421875 0.001037629321217537 -0.0 0.3879176378250122 0.43608367443084717 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.9922482967376709 0.12408825755119324 -0.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 -0.2839455306529999 0.9953917264938354 0.095736563205719 -0.0 0.011940598487854004 0.6354849934577942 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05713176727294922 -0.06049741059541702 0.21605446934700012 0.9953917264938354 0.095736563205719 -0.0 0.46059542894363403 0.4781392812728882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.437740683555603 -0.09068809449672699 -0.2839455306529999 -0.8114261031150818 0.5843989253044128 -0.0 1.0051469802856445 0.5151885747909546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 -0.7780083417892456 0.6282235383987427 -0.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 0.21605446934700012 -0.7780083417892456 0.6282235383987427 -0.0 0.5739966630935669 0.32116496562957764 0 1.0 0 0.0 0 0.0 0 0.0\n0.07685351371765137 -0.06075522303581238 -0.2839455306529999 -0.9798578023910522 0.19965209066867828 -0.0 0.9233952164649963 0.6241699457168579 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 -0.2839455306529999 -0.965788722038269 0.25922420620918274 -0.0 0.9243631362915039 0.6189967393875122 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 0.21605446934700012 -0.965788722038269 0.25922420620918274 -0.0 0.5416918396949768 0.46996021270751953 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.3588061034679413 -0.9333781003952026 -0.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 -0.2839455306529999 0.37635424733161926 -0.9264503717422485 -0.0 0.931607186794281 0.4948465824127197 0 1.0 0 0.0 0 0.0 0 0.0\n1.857093095779419 -0.17764081060886383 0.21605445444583893 0.37635424733161926 -0.9264503717422485 -0.0 0.5487398505210876 0.3414847254753113 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 -0.2839455306529999 0.9191870093345642 0.39378032088279724 -0.0 0.06336680054664612 0.523777961730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 -0.2839455306529999 0.9422894716262817 0.334727019071579 -0.0 0.0650908350944519 0.5301951169967651 0 1.0 0 0.0 0 0.0 0 0.0\n-1.143804669380188 -0.06069684773683548 0.21605446934700012 0.9422894716262817 0.334727019071579 -0.0 0.505640983581543 0.33850187063217163 0 1.0 0 0.0 0 0.0 0 0.0\n1.7213771343231201 -0.1786259263753891 -0.2839455306529999 -0.4842982292175293 -0.8748741149902344 -0.0 0.012341886758804321 0.49695128202438354 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 -0.4501480162143707 -0.8929410576820374 -0.0 0.010428071022033691 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 0.21605445444583893 -0.4501480162143707 -0.8929410576820374 -0.0 0.4582054913043976 0.3331541419029236 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9990271329879761 -0.06326057016849518 -0.2839455306529999 -0.9239173531532288 0.382519006729126 -0.0 0.977351725101471 0.53746497631073 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 -0.2839455306529999 -0.8956877589225769 0.4446241557598114 -0.0 0.979049801826477 0.5302878022193909 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 0.21605446934700012 -0.8956877589225769 0.4446241557598114 -0.0 0.6029060482978821 0.34914159774780273 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.999786376953125 0.019562363624572754 -0.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 -0.2839455306529999 0.9981383681297302 0.060731835663318634 -0.0 0.886174738407135 0.5731443166732788 0 1.0 0 0.0 0 0.0 0 0.0\n1.198608636856079 0.009764343500137329 0.21605446934700012 0.9981383681297302 0.060731835663318634 -0.0 0.58528733253479 0.43931108713150024 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15759897232055664 -0.06422378122806549 -0.2839455306529999 -0.9989318251609802 -0.045686207711696625 -0.0 0.07166120409965515 0.6177982091903687 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 -0.9974669814109802 -0.0710776075720787 -0.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 0.21605446934700012 -0.9974669814109802 -0.0710776075720787 -0.0 0.4043731093406677 0.4704909324645996 0 1.0 0 0.0 0 0.0 0 0.0\n0.8518390655517578 -0.0007581412792205811 -0.2839455306529999 -0.999969482421875 0.001037629321217537 -0.0 0.08500796556472778 0.5705099701881409 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 -0.9991455078125 -0.04101687669754028 -0.0 0.08401632308959961 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 0.21605446934700012 -0.9991455078125 -0.04101687669754028 -0.0 0.3868945240974426 0.42290353775024414 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 -0.2839455306529999 0.8884548544883728 0.4589373469352722 -0.0 0.07403913140296936 0.5013856887817383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 -0.2839455306529999 0.9182103872299194 0.3960081934928894 -0.0 0.07507732510566711 0.5045878887176514 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5541154146194458 -0.0914761871099472 0.21605446934700012 0.9182103872299194 0.3960081934928894 -0.0 0.4920453131198883 0.3158797025680542 0 1.0 0 0.0 0 0.0 0 0.0\n0.07578086853027344 -0.0654071494936943 -0.2839455306529999 -0.965788722038269 0.25922420620918274 -0.0 0.9243631362915039 0.6189967393875122 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 -0.2839455306529999 -0.9444563388824463 0.32856225967407227 -0.0 0.925327718257904 0.6147598028182983 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 0.21605446934700012 -0.9444563388824463 0.32856225967407227 -0.0 0.5411810278892517 0.4654701352119446 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.3236792981624603 -0.9461653232574463 -0.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 -0.2839455306529999 0.3588061034679413 -0.9333781003952026 -0.0 0.9349046945571899 0.4923299551010132 0 1.0 0 0.0 0 0.0 0 0.0\n1.851309061050415 -0.1799904853105545 0.21605445444583893 0.3588061034679413 -0.9333781003952026 -0.0 0.5453030467033386 0.33780014514923096 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.8889431357383728 0.45799127221107483 -0.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 -0.2839455306529999 0.9191870093345642 0.39378032088279724 -0.0 0.06336680054664612 0.523777961730957 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1416325569152832 -0.06627672910690308 0.21605446934700012 0.9191870093345642 0.39378032088279724 -0.0 0.5071949362754822 0.33174222707748413 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.9986571669578552 0.05151524394750595 -0.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 -0.2839455306529999 0.99920654296875 0.03906369209289551 -0.0 0.947837233543396 0.5201842188835144 0 1.0 0 0.0 0 0.0 0 0.0\n-1.3290716409683228 -0.0915345624089241 0.21605446934700012 0.99920654296875 0.03906369209289551 -0.0 0.6378192901611328 0.35732704401016235 0 1.0 0 0.0 0 0.0 0 0.0\n1.7245428562164307 -0.18029697239398956 -0.2839455306529999 -0.4501480162143707 -0.8929410576820374 -0.0 0.010428071022033691 0.4949110746383667 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 -0.2839455306529999 -0.41731008887290955 -0.9087496399879456 -0.0 0.00841948390007019 0.4929516911506653 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 0.21605445444583893 -0.41734060645103455 -0.9087191224098206 -0.0 0.46042805910110474 0.3308688998222351 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2456544637680054 -0.06652848422527313 -0.2839455306529999 -0.9694814682006836 -0.2451246678829193 -0.0 0.11918789148330688 0.5129293203353882 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 -0.9530625343322754 -0.3026825785636902 -0.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 0.21605446934700012 -0.9530625343322754 -0.3026825785636902 -0.0 0.44452062249183655 0.33192235231399536 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.999969482421875 -9.155552834272385e-05 -0.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 -0.2839455306529999 0.999786376953125 0.019562363624572754 -0.0 0.8874428272247314 0.5548990964889526 0 1.0 0 0.0 0 0.0 0 0.0\n1.1993017196655273 -0.007876485586166382 0.21605446934700012 0.999786376953125 0.019562363624572754 -0.0 0.586828351020813 0.4211447238922119 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4397814273834229 -0.0933612808585167 -0.2839455306529999 -0.7780083417892456 0.6282235383987427 -0.0 1.006338119506836 0.5119343400001526 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 -0.2839455306529999 -0.7431256771087646 0.669118344783783 -0.0 1.0076266527175903 0.5087709426879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 0.21605446934700012 -0.7431256771087646 0.669118344783783 -0.0 0.5727245807647705 0.31769561767578125 0 1.0 0 0.0 0 0.0 0 0.0\n0.8520944118499756 -0.013474613428115845 -0.2839455306529999 -0.9991455078125 -0.04101687669754028 -0.0 0.08401632308959961 0.5573220252990723 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 -0.9964598417282104 -0.08398693799972534 -0.0 0.08284473419189453 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 0.21605446934700012 -0.9964598417282104 -0.08398693799972534 -0.0 0.3861108422279358 0.4100426435470581 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 -0.2839455306529999 0.9866939187049866 0.16248054802417755 -0.0 0.010903030633926392 0.6221014261245728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 -0.2839455306529999 0.9922482967376709 0.12408825755119324 -0.0 0.01143917441368103 0.628298282623291 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05649089813232422 -0.06639958173036575 0.21605446934700012 0.9922482967376709 0.12408825755119324 -0.0 0.4607657194137573 0.47090214490890503 0 1.0 0 0.0 0 0.0 0 0.0\n1.7278664112091064 -0.18189504742622375 -0.2839455306529999 -0.41731008887290955 -0.9087496399879456 -0.0 0.00841948390007019 0.4929516911506653 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 -0.38496047258377075 -0.9229102730751038 -0.0 0.006315648555755615 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 0.21605445444583893 -0.38496047258377075 -0.9229102730751038 -0.0 0.46278277039527893 0.3286771774291992 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0018389225006104 -0.06946435570716858 -0.2839455306529999 -0.8956877589225769 0.4446241557598114 -0.0 0.979049801826477 0.5302878022193909 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 -0.2839455306529999 -0.861079752445221 0.5084078311920166 -0.0 0.9809092879295349 0.5235574245452881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 0.21605446934700012 -0.861079752445221 0.5084078311920166 -0.0 0.6017383337020874 0.3417413830757141 0 1.0 0 0.0 0 0.0 0 0.0\n0.07460594177246094 -0.06923449784517288 -0.2839455306529999 -0.9444563388824463 0.32856225967407227 -0.0 0.925327718257904 0.6147598028182983 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 -0.2839455306529999 -0.921384334564209 0.3885921835899353 -0.0 0.9263383150100708 0.6110518574714661 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 0.21605446934700012 -0.921384334564209 0.3885921835899353 -0.0 0.5405697822570801 0.46148681640625 0 1.0 0 0.0 0 0.0 0 0.0\n0.852860689163208 -0.025821372866630554 -0.2839455306529999 -0.9964598417282104 -0.08398693799972534 -0.0 0.08284473419189453 0.5445805788040161 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 -0.9916074275970459 -0.12915432453155518 -0.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 0.21605446934700012 -0.9916074275970459 -0.12915432453155518 -0.0 0.38557168841362 0.3975013494491577 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 -0.2839455306529999 0.8549760580062866 0.5186010599136353 -0.0 0.07288837432861328 0.49829840660095215 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 -0.2839455306529999 0.8884548544883728 0.4589373469352722 -0.0 0.07403913140296936 0.5013856887817383 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5527241230010986 -0.09441450238227844 0.21605446934700012 0.8884548544883728 0.4589373469352722 -0.0 0.4929672181606293 0.31238698959350586 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4419924020767212 -0.09595176577568054 -0.2839455306529999 -0.7431256771087646 0.669118344783783 -0.0 1.0076266527175903 0.5087709426879883 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 -0.7072664499282837 0.7069307565689087 -0.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 0.21605446934700012 -0.7072664499282837 0.7069307565689087 -0.0 0.5713112354278564 0.3143012523651123 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.28867459297180176 -0.9573961496353149 -0.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 -0.2839455306529999 0.3236792981624603 -0.9461653232574463 -0.0 0.938292920589447 0.4900234341621399 0 1.0 0 0.0 0 0.0 0 0.0\n1.845398187637329 -0.18213585019111633 0.21605445444583893 0.3236792981624603 -0.9461653232574463 -0.0 0.5417003035545349 0.33435338735580444 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 -0.2839455306529999 0.8522293567657471 0.5231177806854248 -0.0 0.05965006351470947 0.5127252340316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 -0.2839455306529999 0.8889431357383728 0.45799127221107483 -0.0 0.06155392527580261 0.5179575085639954 0 1.0 0 0.0 0 0.0 0 0.0\n-1.13923180103302 -0.07139932364225388 0.21605446934700012 0.8889431357383728 0.45799127221107483 -0.0 0.5089333653450012 0.32557326555252075 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.9761345386505127 0.21701711416244507 -0.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 -0.2839455306529999 0.9866939187049866 0.16248054802417755 -0.0 0.010903030633926392 0.6221014261245728 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05577445030212402 -0.07145771384239197 0.21605446934700012 0.9866939187049866 0.16248054802417755 -0.0 0.46101683378219604 0.46464651823043823 0 1.0 0 0.0 0 0.0 0 0.0\n1.7313482761383057 -0.18342013657093048 -0.2839455306529999 -0.38496047258377075 -0.9229102730751038 -0.0 0.006315648555755615 0.4910735487937927 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 -0.35154271125793457 -0.9361552596092224 -0.0 0.004141867160797119 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 0.21605445444583893 -0.35154271125793457 -0.9361552596092224 -0.0 0.4652417302131653 0.32661813497543335 0 1.0 0 0.0 0 0.0 0 0.0\n-1.004981517791748 -0.07527166604995728 -0.2839455306529999 -0.861079752445221 0.5084078311920166 -0.0 0.9809092879295349 0.5235574245452881 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 -0.2839455306529999 -0.8197271823883057 0.5727408528327942 -0.0 0.9829331636428833 0.5172655582427979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 0.21605446934700012 -0.8197271823883057 0.5727408528327942 -0.0 0.6002932786941528 0.33470362424850464 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.0 -0.999969482421875 -0.0 1.0311825275421143 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 -0.2839455306529999 0.0 -1.0 -0.0 0.8890448212623596 0.535987377166748 0 1.0 0 0.0 0 0.0 0 0.0\n1.1992995738983154 -0.026327311992645264 0.21605446934700012 0.0 -0.999969482421875 -0.0 0.5881603956222534 0.40214085578918457 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1571369171142578 -0.0721898302435875 -0.2839455306529999 -0.9974669814109802 -0.0710776075720787 -0.0 0.0709240734577179 0.6092349290847778 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 -0.2839455306529999 -0.9951170086860657 -0.09848322719335556 -0.0 0.0701218843460083 0.6009762287139893 0 1.0 0 0.0 0 0.0 0 0.0\n-0.15648984909057617 -0.07983966916799545 0.21605446934700012 -0.9951170086860657 -0.09848322719335556 -0.0 0.40408778190612793 0.46211308240890503 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.8185674548149109 0.574358344078064 -0.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 -0.2839455306529999 0.8549760580062866 0.5186010599136353 -0.0 0.07288837432861328 0.49829840660095215 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5511187314987183 -0.09727498143911362 0.21605446934700012 0.8549760580062866 0.5186010599136353 -0.0 0.4940483868122101 0.3089780807495117 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 -0.2839455306529999 0.9976500868797302 0.06805627793073654 -0.0 0.03077256679534912 0.540071964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 -0.2839455306529999 0.9989623427391052 0.04544205963611603 -0.0 0.03118249773979187 0.5487100481987 0 1.0 0 0.0 0 0.0 0 0.0\n0.9527146816253662 -0.026327311992645264 0.21605446934700012 0.9989623427391052 0.04544205963611603 -0.0 0.4389815330505371 0.39140015840530396 0 1.0 0 0.0 0 0.0 0 0.0\n-1.655472755432129 -0.09779063612222672 -0.2839455306529999 -0.9924619197845459 -0.12231818586587906 -0.0 0.12539279460906982 0.4907315969467163 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 -0.2839455306529999 -0.982329785823822 -0.18707846105098724 -0.0 0.12408101558685303 0.4837164282798767 0 1.0 0 0.0 0 0.0 0 0.0\n-1.6543234586715698 -0.10515831410884857 0.21605446934700012 -0.982329785823822 -0.18707846105098724 -0.0 0.43253403902053833 0.32122570276260376 0 1.0 0 0.0 0 0.0 0 0.0\n0.07329249382019043 -0.07260335236787796 -0.2839455306529999 -0.921384334564209 0.3885921835899353 -0.0 0.9263383150100708 0.6110518574714661 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 -0.2839455306529999 -0.8986785411834717 0.4385509788990021 -0.0 0.9274437427520752 0.6074543595314026 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 0.21605446934700012 -0.8986785411834717 0.4385509788990021 -0.0 0.5398499369621277 0.45758336782455444 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.2539750337600708 -0.9671925902366638 -0.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 -0.2839455306529999 0.28867459297180176 -0.9573961496353149 -0.0 0.9417729377746582 0.4879313111305237 0 1.0 0 0.0 0 0.0 0 0.0\n1.8393609523773193 -0.18407689034938812 0.21605445444583893 0.28867459297180176 -0.9573961496353149 -0.0 0.5379304885864258 0.33115673065185547 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.8114871382713318 0.5843378901481628 -0.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 -0.2839455306529999 0.8522293567657471 0.5231177806854248 -0.0 0.05965006351470947 0.5127252340316772 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1366022825241089 -0.07606462389230728 0.21605446934700012 0.8522293567657471 0.5231177806854248 -0.0 0.510858416557312 0.31999123096466064 0 1.0 0 0.0 0 0.0 0 0.0\n1.7349460124969482 -0.18484672904014587 -0.2839455306529999 -0.35154271125793457 -0.9361552596092224 -0.0 0.004141867160797119 0.4893079400062561 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 -0.317392498254776 -0.9482711553573608 -0.0 0.0019239485263824463 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 0.21605445444583893 -0.317392498254776 -0.9482711553573608 -0.0 0.4677753150463104 0.3247298002243042 0 1.0 0 0.0 0 0.0 0 0.0\n-1.242162823677063 -0.07882294803857803 -0.2839455306529999 -0.9530625343322754 -0.3026825785636902 -0.0 0.11620524525642395 0.5006495714187622 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 -0.2839455306529999 -0.9320352673530579 -0.36234626173973083 -0.0 0.11300912499427795 0.48906201124191284 0 1.0 0 0.0 0 0.0 0 0.0\n-1.2380362749099731 -0.09055066853761673 0.21605446934700012 -0.9320352673530579 -0.36234626173973083 -0.0 0.44594162702560425 0.31891322135925293 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.9933775067329407 0.11484114825725555 -0.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 -0.2839455306529999 0.9976500868797302 0.06805627793073654 -0.0 0.03077256679534912 0.540071964263916 0 1.0 0 0.0 0 0.0 0 0.0\n0.953040599822998 -0.03348945081233978 0.21605446934700012 0.9976500868797302 0.06805627793073654 -0.0 0.43873849511146545 0.3827359676361084 0 1.0 0 0.0 0 0.0 0 0.0\n0.854137659072876 -0.03779841959476471 -0.2839455306529999 -0.9916074275970459 -0.12915432453155518 -0.0 0.08149310946464539 0.532286524772644 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 -0.9843134880065918 -0.17636646330356598 -0.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 0.21605446934700012 -0.9843134880065918 -0.17636646330356598 -0.0 0.38528379797935486 0.38527578115463257 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328415036201477 -0.10430455207824707 -0.2839455306529999 0.9978331923484802 0.06543168425559998 -0.0 0.9482048749923706 0.5073869228363037 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 -0.2839455306529999 0.9986571669578552 0.05151524394750595 -0.0 0.9480462074279785 0.5135672092437744 0 1.0 0 0.0 0 0.0 0 0.0\n-1.328776240348816 -0.09809833765029907 0.21605446934700012 0.9986571669578552 0.05151524394750595 -0.0 0.6388593912124634 0.3509647846221924 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 -0.2839455306529999 0.9590746760368347 0.28302866220474243 -0.0 0.009722918272018433 0.6127604246139526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 -0.2839455306529999 0.9761345386505127 0.21701711416244507 -0.0 0.010331302881240845 0.6169167160987854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.054982662200927734 -0.07567181438207626 0.21605446934700012 0.9761345386505127 0.21701711416244507 -0.0 0.46134936809539795 0.4593951106071472 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0084549188613892 -0.08068249374628067 -0.2839455306529999 -0.8197271823883057 0.5727408528327942 -0.0 0.9829331636428833 0.5172655582427979 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 -0.2839455306529999 -0.7750175595283508 0.6319162845611572 -0.0 0.9851247668266296 0.5114044547080994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 0.21605446934700012 -0.7750175595283508 0.6319162845611572 -0.0 0.5985607504844666 0.32802635431289673 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4443737268447876 -0.09845954924821854 -0.2839455306529999 -0.7072664499282837 0.7069307565689087 -0.0 1.0090125799179077 0.5056973695755005 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 -0.2839455306529999 -0.670796811580658 0.7416303157806396 -0.0 1.0104960203170776 0.5027124881744385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 0.21605446934700012 -0.670796811580658 0.7416303157806396 -0.0 0.5697541236877441 0.31098443269729614 0 1.0 0 0.0 0 0.0 0 0.0\n0.07180380821228027 -0.075879767537117 -0.2839455306529999 -0.8986785411834717 0.4385509788990021 -0.0 0.9274437427520752 0.6074543595314026 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 -0.2839455306529999 -0.8731955885887146 0.48731955885887146 -0.0 0.9286445379257202 0.603966474533081 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 0.21605446934700012 -0.8731955885887146 0.48731955885887146 -0.0 0.5390197038650513 0.45376038551330566 0 1.0 0 0.0 0 0.0 0 0.0\n1.8269073963165283 -0.18734599649906158 -0.2839455306529999 0.21970275044441223 -0.9755546450614929 -0.0 0.9490134716033936 0.48440754413604736 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 -0.2839455306529999 0.2539750337600708 -0.9671925902366638 -0.0 0.9453461170196533 0.4860578179359436 0 1.0 0 0.0 0 0.0 0 0.0\n1.8331973552703857 -0.18581360578536987 0.21605445444583893 0.2539750337600708 -0.9671925902366638 -0.0 0.533993124961853 0.32822293043136597 0 1.0 0 0.0 0 0.0 0 0.0\n1.738616704940796 -0.18614926934242249 -0.2839455306529999 -0.317392498254776 -0.9482711553573608 -0.0 1.00192391872406 0.48768627643585205 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 -0.2839455306529999 -0.28333383798599243 -0.9590136408805847 -0.0 0.9996620416641235 0.48620885610580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 0.21605445444583893 -0.28333383798599243 -0.9590136408805847 -0.0 1.4703819751739502 0.32301509380340576 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 -0.2839455306529999 0.9863277077674866 0.16461683809757233 -0.0 0.029464364051818848 0.5239272117614746 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 -0.2839455306529999 0.9933775067329407 0.11484114825725555 -0.0 0.03019922971725464 0.5318121910095215 0 1.0 0 0.0 0 0.0 0 0.0\n0.9536681175231934 -0.040381595492362976 0.21605446934700012 0.9933775067329407 0.11484114825725555 -0.0 0.43869754672050476 0.37439829111099243 0 1.0 0 0.0 0 0.0 0 0.0\n-1.1281375885009766 -0.0878373384475708 -0.2839455306529999 0.765251636505127 0.6436964273452759 -0.0 0.05381375551223755 0.4998077154159546 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 -0.2839455306529999 0.8114871382713318 0.5843378901481628 -0.0 0.05678075551986694 0.505921483039856 0 1.0 0 0.0 0 0.0 0 0.0\n-1.132501244544983 -0.08221854269504547 0.21605446934700012 0.8114871382713318 0.5843378901481628 -0.0 0.5139024257659912 0.3127002716064453 0 1.0 0 0.0 0 0.0 0 0.0\n-1.547265887260437 -0.10276243090629578 -0.2839455306529999 0.7799615263938904 0.6258125305175781 -0.0 0.07024794816970825 0.49246126413345337 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 -0.2839455306529999 0.8185674548149109 0.574358344078064 -0.0 0.07162481546401978 0.49532419443130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.5492993593215942 -0.10005762428045273 0.21605446934700012 0.8185674548149109 0.574388861656189 -0.0 0.4952918291091919 0.30565404891967773 0 1.0 0 0.0 0 0.0 0 0.0\n-0.053148746490478516 -0.08193881809711456 -0.2839455306529999 0.940336287021637 0.3401898145675659 -0.0 0.009056895971298218 0.6091814041137695 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 -0.2839455306529999 0.9590746760368347 0.28302866220474243 -0.0 0.009722918272018433 0.6127604246139526 0 1.0 0 0.0 0 0.0 0 0.0\n-0.05411553382873535 -0.07904185354709625 0.21605446934700012 0.9591051936149597 0.28302866220474243 -0.0 0.4617636799812317 0.45516467094421387 0 1.0 0 0.0 0 0.0 0 0.0\n1.7423598766326904 -0.18732775747776031 -0.2839455306529999 -0.28333383798599243 -0.9590136408805847 -0.0 0.9996620416641235 0.48620885610580444 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 -0.2839455306529999 -0.24948881566524506 -0.9683523178100586 -0.0 0.9973554611206055 0.48487597703933716 0 1.0 0 0.0 0 0.0 0 0.0\n1.7461764812469482 -0.18838219344615936 0.21605445444583893 -0.24951933324337006 -0.9683523178100586 -0.0 1.473060965538025 0.32147711515426636 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0122591257095337 -0.08569684624671936 -0.2839455306529999 -0.7750175595283508 0.6319162845611572 -0.0 0.9851247668266296 0.5114044547080994 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 -0.2839455306529999 -0.7314981818199158 0.6818140149116516 -0.0 0.9874353408813477 0.5059763193130493 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0162993669509888 -0.09031227976083755 0.21605446934700012 -0.7314981818199158 0.6818140149116516 -0.0 0.5965896844863892 0.32174062728881836 0 1.0 0 0.0 0 0.0 0 0.0\n0.9558279514312744 -0.053355902433395386 -0.2839455306529999 0.9760735034942627 0.21732230484485626 -0.0 0.028569430112838745 0.5164120197296143 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 -0.2839455306529999 0.9863277077674866 0.16461683809757233 -0.0 0.029464364051818848 0.5239272117614746 0 1.0 0 0.0 0 0.0 0 0.0\n0.9545972347259521 -0.047003746032714844 0.21605446934700012 0.9863277077674866 0.16461683809757233 -0.0 0.43886324763298035 0.3663843274116516 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4469252824783325 -0.10088463127613068 -0.2839455306529999 -0.670796811580658 0.7416303157806396 -0.0 1.0104960203170776 0.5027124881744385 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 -0.2839455306529999 -0.634144127368927 0.773186445236206 -0.0 1.0120773315429688 0.49981552362442017 0 1.0 0 0.0 0 0.0 0 0.0\n-1.4496471881866455 -0.10322701185941696 0.21605446934700012 -0.634144127368927 0.773186445236206 -0.0 0.5680505633354187 0.30774790048599243 0 1.0 0 0.0 0 0.0 0 0.0\n0.07014012336730957 -0.07906375080347061 -0.2839455306529999 -0.8731955885887146 0.48731955885887146 -0.0 0.9286445379257202 0.603966474533081 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 -0.2839455306529999 -0.8451185822486877 0.5345317125320435 -0.0 0.9299417734146118 0.6005876064300537 0 1.0 0 0.0 0 0.0 0 0.0\n0.06830120086669922 -0.08215530216693878 0.21605446934700012 -0.8451185822486877 0.5345317125320435 -0.0 0.5380769968032837 0.45001834630966187 0 1.0 0 0.0 0 0.0 0 0.0\n0.8559255599975586 -0.04940573871135712 -0.2839455306529999 -0.9843134880065918 -0.17636646330356598 -0.0 0.07996010780334473 0.5204365253448486 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 -0.2839455306529999 -0.9742423892021179 -0.22537919878959656 -0.0 0.07824346423149109 0.5090236663818359 0 1.0 0 0.0 0 0.0 0 0.0\n0.8582241535186768 -0.06064333766698837 0.21605446934700012 -0.9742423892021179 -0.22537919878959656 -0.0 0.3852550685405731 0.37335896492004395 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n384 385 386 0\n387 388 389 0\n390 391 392 0\n393 394 395 0\n396 397 398 0\n399 400 401 0\n402 403 404 0\n405 406 407 0\n408 409 410 0\n411 412 413 0\n414 415 416 0\n417 418 419 0\n420 421 422 0\n423 424 425 0\n426 427 428 0\n429 430 431 0\n432 433 434 0\n435 436 437 0\n438 439 440 0\n441 442 443 0\n444 445 446 0\n447 448 449 0\n450 451 452 0\n453 454 455 0\n456 457 458 0\n459 460 461 0\n462 463 464 0\n465 466 467 0\n468 469 470 0\n471 472 473 0\n474 475 476 0\n477 478 479 0\n480 481 482 0\n483 484 485 0\n486 487 488 0\n489 490 491 0\n492 493 494 0\n495 496 497 0\n498 499 500 0\n501 502 503 0\n504 505 506 0\n507 508 509 0\n510 511 512 0\n513 514 515 0\n516 517 518 0\n519 520 521 0\n522 523 524 0\n525 526 527 0\n528 529 530 0\n531 532 533 0\n534 535 536 0\n537 538 539 0\n540 541 542 0\n543 544 545 0\n546 547 548 0\n549 550 551 0\n552 553 554 0\n555 556 557 0\n558 559 560 0\n561 562 563 0\n564 565 566 0\n567 568 569 0\n570 571 572 0\n573 574 575 0\n576 577 578 0\n579 580 581 0\n582 583 584 0\n585 586 587 0\n588 589 590 0\n591 592 593 0\n594 595 596 0\n597 598 599 0\n600 601 602 0\n603 604 605 0\n606 607 608 0\n609 610 611 0\n612 613 614 0\n615 616 617 0\n618 619 620 0\n621 622 623 0\n624 625 626 0\n627 628 629 0\n630 631 632 0\n633 634 635 0\n636 637 638 0\n639 640 641 0\n642 643 644 0\n645 646 647 0\n648 649 650 0\n651 652 653 0\n654 655 656 0\n657 658 659 0\n660 661 662 0\n663 664 665 0\n666 667 668 0\n669 670 671 0\n672 673 674 0\n675 676 677 0\n678 679 680 0\n681 682 683 0\n684 685 686 0\n687 688 689 0\n690 691 692 0\n693 694 695 0\n696 697 698 0\n699 700 701 0\n702 703 704 0\n705 706 707 0\n708 709 710 0\n711 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n723 724 725 0\n726 727 728 0\n729 730 731 0\n732 733 734 0\n735 736 737 0\n738 739 740 0\n741 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n753 754 755 0\n756 757 758 0\n759 760 761 0\n762 763 764 0\n765 766 767 0\n768 769 770 0\n771 772 773 0\n774 775 776 0\n777 778 779 0\n780 781 782 0\n783 784 785 0\n786 787 788 0\n789 790 791 0\n792 793 794 0\n795 796 797 0\n798 799 800 0\n801 802 803 0\n804 805 806 0\n807 808 809 0\n810 811 812 0\n813 814 815 0\n816 817 818 0\n819 820 821 0\n822 823 824 0\n825 826 827 0\n828 829 830 0\n831 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n843 844 845 0\n846 847 848 0\n849 850 851 0\n852 853 854 0\n855 856 857 0\n858 859 860 0\n861 862 863 0\n864 865 866 0\n867 868 869 0\n870 871 872 0\n873 874 875 0\n876 877 878 0\n879 880 881 0\n882 883 884 0\n885 886 887 0\n888 889 890 0\n891 892 893 0\n894 895 896 0\n897 898 899 0\n900 901 902 0\n903 904 905 0\n906 907 908 0\n909 910 911 0\n912 913 914 0\n915 916 917 0\n918 919 920 0\n921 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n933 934 935 0\n936 937 938 0\n939 940 941 0\n942 943 944 0\n945 946 947 0\n948 949 950 0\n951 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n963 964 965 0\n966 967 968 0\n969 970 971 0\n972 973 974 0\n975 976 977 0\n978 979 980 0\n981 982 983 0\n984 985 986 0\n987 988 989 0\n990 991 992 0\n993 994 995 0\n996 997 998 0\n999 1000 1001 0\n1002 1003 1004 0\n1005 1006 1007 0\n1008 1009 1010 0\n1011 1012 1013 0\n1014 1015 1016 0\n1017 1018 1019 0\n1020 1021 1022 0\n1023 1024 1025 0\n1026 1027 1028 0\n1029 1030 1031 0\n1032 1033 1034 0\n1035 1036 1037 0\n1038 1039 1040 0\n1041 1042 1043 0\n1044 1045 1046 0\n1047 1048 1049 0\n1050 1051 1052 0\n1053 1054 1055 0\n1056 1057 1058 0\n1059 1060 1061 0\n1062 1063 1064 0\n1065 1066 1067 0\n1068 1069 1070 0\n1071 1072 1073 0\n1074 1075 1076 0\n1077 1078 1079 0\n1080 1081 1082 0\n1083 1084 1085 0\n1086 1087 1088 0\n1089 1090 1091 0\n1092 1093 1094 0\n1095 1096 1097 0\n1098 1099 1100 0\n1101 1102 1103 0\n1104 1105 1106 0\n1107 1108 1109 0\n1110 1111 1112 0\n1113 1114 1115 0\n1116 1117 1118 0\n1119 1120 1121 0\n1122 1123 1124 0\n1125 1126 1127 0\n1128 1129 1130 0\n1131 1132 1133 0\n1134 1135 1136 0\n1137 1138 1139 0\n1140 1141 1142 0\n1143 1144 1145 0\n1146 1147 1148 0\n1149 1150 1151 0\n1152 1153 1154 0\n1155 1156 1157 0\n1158 1159 1160 0\n1161 1162 1163 0\n1164 1165 1166 0\n1167 1168 1169 0\n1170 1171 1172 0\n1173 1174 1175 0\n1176 1177 1178 0\n1179 1180 1181 0\n1182 1183 1184 0\n1185 1186 1187 0\n1188 1189 1190 0\n1191 1192 1193 0\n1194 1195 1196 0\n1197 1198 1199 0\n1200 1201 1202 0\n1203 1204 1205 0\n1206 1207 1208 0\n1209 1210 1211 0\n1212 1213 1214 0\n1215 1216 1217 0\n1218 1219 1220 0\n1221 1222 1223 0\n1224 1225 1226 0\n1227 1228 1229 0\n1230 1231 1232 0\n1233 1234 1235 0\n1236 1237 1238 0\n1239 1240 1241 0\n1242 1243 1244 0\n1245 1246 1247 0\n1248 1249 1250 0\n1251 1252 1253 0\n1254 1255 1256 0\n1257 1258 1259 0\n1260 1261 1262 0\n1263 1264 1265 0\n1266 1267 1268 0\n1269 1270 1271 0\n1272 1273 1274 0\n1275 1276 1277 0\n1278 1279 1280 0\n1281 1282 1283 0\n1284 1285 1286 0\n1287 1288 1289 0\n1290 1291 1292 0\n1293 1294 1295 0\n1296 1297 1298 0\n1299 1300 1301 0\n1302 1303 1304 0\n1305 1306 1307 0\n1308 1309 1310 0\n1311 1312 1313 0\n1314 1315 1316 0\n1317 1318 1319 0\n1320 1321 1322 0\n1323 1324 1325 0\n1326 1327 1328 0\n1329 1330 1331 0\n1332 1333 1334 0\n1335 1336 1337 0\n1338 1339 1340 0\n1341 1342 1343 0\n1344 1345 1346 0\n1347 1348 1349 0\n1350 1351 1352 0\n1353 1354 1355 0\n1356 1357 1358 0\n1359 1360 1361 0\n1362 1363 1364 0\n1365 1366 1367 0\n1368 1369 1370 0\n1371 1372 1373 0\n1374 1375 1376 0\n1377 1378 1379 0\n1380 1381 1382 0\n1383 1384 1385 0\n1386 1387 1388 0\n1389 1390 1391 0\n1392 1393 1394 0\n1395 1396 1397 0\n1398 1399 1400 0\n1401 1402 1403 0\n1404 1405 1406 0\n1407 1408 1409 0\n1410 1411 1412 0\n1413 1414 1415 0\n1416 1417 1418 0\n1419 1420 1421 0\n1422 1423 1424 0\n1425 1426 1427 0\n1428 1429 1430 0\n1431 1432 1433 0\n1434 1435 1436 0\n1437 1438 1439 0\n1440 1441 1442 0\n1443 1444 1445 0\n1446 1447 1448 0\n1449 1450 1451 0\n1452 1453 1454 0\n1455 1456 1457 0\n1458 1459 1460 0\n1461 1462 1463 0\n1464 1465 1466 0\n1467 1468 1469 0\n1470 1471 1472 0\n1473 1474 1475 0\n1476 1477 1478 0\n1479 1480 1481 0\n1482 1483 1484 0\n1485 1486 1487 0\n1488 1489 1490 0\n1491 1492 1493 0\n1494 1495 1496 0\n1497 1498 1499 0\n1500 1501 1502 0\n1503 1504 1505 0\n1506 1507 1508 0\n1509 1510 1511 0\n1512 1513 1514 0\n1515 1516 1517 0\n1518 1519 1520 0\n1521 1522 1523 0\n1524 1525 1526 0\n1527 1528 1529 0\n1530 1531 1532 0\n1533 1534 1535 0\n1536 1537 1538 0\n1539 1540 1541 0\n1542 1543 1544 0\n1545 1546 1547 0\n1548 1549 1550 0\n1551 1552 1553 0\n1554 1555 1556 0\n1557 1558 1559 0\n1560 1561 1562 0\n1563 1564 1565 0\n1566 1567 1568 0\n1569 1570 1571 0\n1572 1573 1574 0\n1575 1576 1577 0\n1578 1579 1580 0\n1581 1582 1583 0\n1584 1585 1586 0\n1587 1588 1589 0\n1590 1591 1592 0\n1593 1594 1595 0\n1596 1597 1598 0\n1599 1600 1601 0\n1602 1603 1604 0\n1605 1606 1607 0\n1608 1609 1610 0\n1611 1612 1613 0\n1614 1615 1616 0\n1617 1618 1619 0\n1620 1621 1622 0\n1623 1624 1625 0\n1626 1627 1628 0\n1629 1630 1631 0\n1632 1633 1634 0\n1635 1636 1637 0\n1638 1639 1640 0\n1641 1642 1643 0\n1644 1645 1646 0\n1647 1648 1649 0\n1650 1651 1652 0\n1653 1654 1655 0\n1656 1657 1658 0\n1659 1660 1661 0\n1662 1663 1664 0\n1665 1666 1667 0\n1668 1669 1670 0\n1671 1672 1673 0\n1674 1675 1676 0\n1677 1678 1679 0\n1680 1681 1682 0\n1683 1684 1685 0\n1686 1687 1688 0\n1689 1690 1691 0\n1692 1693 1694 0\n1695 1696 1697 0\n1698 1699 1700 0\n1701 1702 1703 0\n1704 1705 1706 0\n1707 1708 1709 0\n1710 1711 1712 0\n1713 1714 1715 0\n1716 1717 1718 0\n1719 1720 1721 0\n1722 1723 1724 0\n1725 1726 1727 0\n1728 1729 1730 0\n1731 1732 1733 0\n1734 1735 1736 0\n1737 1738 1739 0\n1740 1741 1742 0\n1743 1744 1745 0\n1746 1747 1748 0\n1749 1750 1751 0\n1752 1753 1754 0\n1755 1756 1757 0\n1758 1759 1760 0\n1761 1762 1763 0\n1764 1765 1766 0\n1767 1768 1769 0\n1770 1771 1772 0\n1773 1774 1775 0\n1776 1777 1778 0\n1779 1780 1781 0\n1782 1783 1784 0\n1785 1786 1787 0\n1788 1789 1790 0\n1791 1792 1793 0\n1794 1795 1796 0\n1797 1798 1799 0\n1800 1801 1802 0\n1803 1804 1805 0\n1806 1807 1808 0\n1809 1810 1811 0\n1812 1813 1814 0\n1815 1816 1817 0\n1818 1819 1820 0\n1821 1822 1823 0\n1824 1825 1826 0\n1827 1828 1829 0\n1830 1831 1832 0\n1833 1834 1835 0\n1836 1837 1838 0\n1839 1840 1841 0\n1842 1843 1844 0\n1845 1846 1847 0\n1848 1849 1850 0\n1851 1852 1853 0\n1854 1855 1856 0\n1857 1858 1859 0\n1860 1861 1862 0\n1863 1864 1865 0\n1866 1867 1868 0\n1869 1870 1871 0\n1872 1873 1874 0\n1875 1876 1877 0\n1878 1879 1880 0\n1881 1882 1883 0\n1884 1885 1886 0\n1887 1888 1889 0\n1890 1891 1892 0\n1893 1894 1895 0\n1896 1897 1898 0\n1899 1900 1901 0\n1902 1903 1904 0\n1905 1906 1907 0\n1908 1909 1910 0\n1911 1912 1913 0\n1914 1915 1916 0\n1917 1918 1919 0\n1920 1921 1922 0\n1923 1924 1925 0\n1926 1927 1928 0\n1929 1930 1931 0\n1932 1933 1934 0\n1935 1936 1937 0\n1938 1939 1940 0\n1941 1942 1943 0\n1944 1945 1946 0\n1947 1948 1949 0\n1950 1951 1952 0\n1953 1954 1955 0\n1956 1957 1958 0\n1959 1960 1961 0\n1962 1963 1964 0\n1965 1966 1967 0\n1968 1969 1970 0\n1971 1972 1973 0\n1974 1975 1976 0\n1977 1978 1979 0\n1980 1981 1982 0\n1983 1984 1985 0\n1986 1987 1988 0\n1989 1990 1991 0\n1992 1993 1994 0\n1995 1996 1997 0\n1998 1999 2000 0\n2001 2002 2003 0\n2004 2005 2006 0\n2007 2008 2009 0\n2010 2011 2012 0\n2013 2014 2015 0\n2016 2017 2018 0\n2019 2020 2021 0\n2022 2023 2024 0\n2025 2026 2027 0\n2028 2029 2030 0\n2031 2032 2033 0\n2034 2035 2036 0\n2037 2038 2039 0\n2040 2041 2042 0\n2043 2044 2045 0\n2046 2047 2048 0\n2049 2050 2051 0\n2052 2053 2054 0\n2055 2056 2057 0\n2058 2059 2060 0\n2061 2062 2063 0\n2064 2065 2066 0\n2067 2068 2069 0\n2070 2071 2072 0\n2073 2074 2075 0\n2076 2077 2078 0\n2079 2080 2081 0\n2082 2083 2084 0\n2085 2086 2087 0\n2088 2089 2090 0\n2091 2092 2093 0\n2094 2095 2096 0\n2097 2098 2099 0\n2100 2101 2102 0\n2103 2104 2105 0\n2106 2107 2108 0\n2109 2110 2111 0\n2112 2113 2114 0\n2115 2116 2117 0\n2118 2119 2120 0\n2121 2122 2123 0\n2124 2125 2126 0\n2127 2128 2129 0\n2130 2131 2132 0\n2133 2134 2135 0\n2136 2137 2138 0\n2139 2140 2141 0\n2142 2143 2144 0\n2145 2146 2147 0\n2148 2149 2150 0\n2151 2152 2153 0\n2154 2155 2156 0\n2157 2158 2159 0\n2160 2161 2162 0\n2163 2164 2165 0\n2166 2167 2168 0\n2169 2170 2171 0\n2172 2173 2174 0\n2175 2176 2177 0\n2178 2179 2180 0\n2181 2182 2183 0\n2184 2185 2186 0\n2187 2188 2189 0\n2190 2191 2192 0\n2193 2194 2195 0\n2196 2197 2198 0\n2199 2200 2201 0\n2202 2203 2204 0\n2205 2206 2207 0\n2208 2209 2210 0\n2211 2212 2213 0\n2214 2215 2216 0\n2217 2218 2219 0\n2220 2221 2222 0\n2223 2224 2225 0\n2226 2227 2228 0\n2229 2230 2231 0\n2232 2233 2234 0\n2235 2236 2237 0\n2238 2239 2240 0\n2241 2242 2243 0\n2244 2245 2246 0\n2247 2248 2249 0\n2250 2251 2252 0\n2253 2254 2255 0\n2256 2257 2258 0\n2259 2260 2261 0\n2262 2263 2264 0\n2265 2266 2267 0\n2268 2269 2270 0\n2271 2272 2273 0\n2274 2275 2276 0\n2277 2278 2279 0\n2280 2281 2282 0\n2283 2284 2285 0\n2286 2287 2288 0\n2289 2290 2291 0\n2292 2293 2294 0\n2295 2296 2297 0\n2298 2299 2300 0\n2301 2302 2303 0\n2304 2305 2306 0\n2307 2308 2309 0\n2310 2311 2312 0\n2313 2314 2315 0\n2316 2317 2318 0\n2319 2320 2321 0\n2322 2323 2324 0\n2325 2326 2327 0\n2328 2329 2330 0\n2331 2332 2333 0\n2334 2335 2336 0\n2337 2338 2339 0\n2340 2341 2342 0\n2343 2344 2345 0\n2346 2347 2348 0\n2349 2350 2351 0\n2352 2353 2354 0\n2355 2356 2357 0\n2358 2359 2360 0\n2361 2362 2363 0\n2364 2365 2366 0\n2367 2368 2369 0\n2370 2371 2372 0\n2373 2374 2375 0\n2376 2377 2378 0\n2379 2380 2381 0\n2382 2383 2384 0\n2385 2386 2387 0\n2388 2389 2390 0\n2391 2392 2393 0\n2394 2395 2396 0\n2397 2398 2399 0\n2400 2401 2402 0\n2403 2404 2405 0\n2406 2407 2408 0\n2409 2410 2411 0\n2412 2413 2414 0\n2415 2416 2417 0\n2418 2419 2420 0\n2421 2422 2423 0\n2424 2425 2426 0\n2427 2428 2429 0\n2430 2431 2432 0\n2433 2434 2435 0\n2436 2437 2438 0\n2439 2440 2441 0\n2442 2443 2444 0\n2445 2446 2447 0\n2448 2449 2450 0\n2451 2452 2453 0\n2454 2455 2456 0\n2457 2458 2459 0\n2460 2461 2462 0\n2463 2464 2465 0\n2466 2467 2468 0\n2469 2470 2471 0\n2472 2473 2474 0\n2475 2476 2477 0\n2478 2479 2480 0\n2481 2482 2483 0\n2484 2485 2486 0\n2487 2488 2489 0\n2490 2491 2492 0\n2493 2494 2495 0\n2496 2497 2498 0\n2499 2500 2501 0\n2502 2503 2504 0\n2505 2506 2507 0\n2508 2509 2510 0\n2511 2512 2513 0\n2514 2515 2516 0\n2517 2518 2519 0\n2520 2521 2522 0\n2523 2524 2525 0\n2526 2527 2528 0\n2529 2530 2531 0\n2532 2533 2534 0\n2535 2536 2537 0\n2538 2539 2540 0\n2541 2542 2543 0\n2544 2545 2546 0\n2547 2548 2549 0\n2550 2551 2552 0\n2553 2554 2555 0\n2556 2557 2558 0\n2559 2560 2561 0\n2562 2563 2564 0\n2565 2566 2567 0\n2568 2569 2570 0\n2571 2572 2573 0\n2574 2575 2576 0\n2577 2578 2579 0\n2580 2581 2582 0\n2583 2584 2585 0\n2586 2587 2588 0\n2589 2590 2591 0\n2592 2593 2594 0\n2595 2596 2597 0\n2598 2599 2600 0\n2601 2602 2603 0\n2604 2605 2606 0\n2607 2608 2609 0\n2610 2611 2612 0\n2613 2614 2615 0\n2616 2617 2618 0\n2619 2620 2621 0\n2622 2623 2624 0\n2625 2626 2627 0\n2628 2629 2630 0\n2631 2632 2633 0\n2634 2635 2636 0\n2637 2638 2639 0\n2640 2641 2642 0\n2643 2644 2645 0\n2646 2647 2648 0\n2649 2650 2651 0\n2652 2653 2654 0\n2655 2656 2657 0\n2658 2659 2660 0\n2661 2662 2663 0\n2664 2665 2666 0\n2667 2668 2669 0\n2670 2671 2672 0\n2673 2674 2675 0\n2676 2677 2678 0\n2679 2680 2681 0\n2682 2683 2684 0\n2685 2686 2687 0\n2688 2689 2690 0\n2691 2692 2693 0\n2694 2695 2696 0\n2697 2698 2699 0\n2700 2701 2702 0\n2703 2704 2705 0\n2706 2707 2708 0\n2709 2710 2711 0\n2712 2713 2714 0\n2715 2716 2717 0\n2718 2719 2720 0\n2721 2722 2723 0\n2724 2725 2726 0\n2727 2728 2729 0\n2730 2731 2732 0\n2733 2734 2735 0\n2736 2737 2738 0\n2739 2740 2741 0\n2742 2743 2744 0\n2745 2746 2747 0\n2748 2749 2750 0\n2751 2752 2753 0\n2754 2755 2756 0\n2757 2758 2759 0\n2760 2761 2762 0\n2763 2764 2765 0\n2766 2767 2768 0\n2769 2770 2771 0\n2772 2773 2774 0\n2775 2776 2777 0\n2778 2779 2780 0\n2781 2782 2783 0\n2784 2785 2786 0\n2787 2788 2789 0\n2790 2791 2792 0\n2793 2794 2795 0\n2796 2797 2798 0\n2799 2800 2801 0\n2802 2803 2804 0\n2805 2806 2807 0\n2808 2809 2810 0\n2811 2812 2813 0\n2814 2815 2816 0\n2817 2818 2819 0\n2820 2821 2822 0\n2823 2824 2825 0\n2826 2827 2828 0\n2829 2830 2831 0\n2832 2833 2834 0\n2835 2836 2837 0\n2838 2839 2840 0\n2841 2842 2843 0\n2844 2845 2846 0\n2847 2848 2849 0\n2850 2851 2852 0\n2853 2854 2855 0\n2856 2857 2858 0\n2859 2860 2861 0\n2862 2863 2864 0\n2865 2866 2867 0\n2868 2869 2870 0\n2871 2872 2873 0\n2874 2875 2876 0\n2877 2878 2879 0\n2880 2881 2882 0\n2883 2884 2885 0\n2886 2887 2888 0\n2889 2890 2891 0\n2892 2893 2894 0\n2895 2896 2897 0\n2898 2899 2900 0\n2901 2902 2903 0\n2904 2905 2906 0\n2907 2908 2909 0\n2910 2911 2912 0\n2913 2914 2915 0\n2916 2917 2918 0\n2919 2920 2921 0\n2922 2923 2924 0\n2925 2926 2927 0\n2928 2929 2930 0\n2931 2932 2933 0\n2934 2935 2936 0\n2937 2938 2939 0\n2940 2941 2942 0\n2943 2944 2945 0\n2946 2947 2948 0\n2949 2950 2951 0\n2952 2953 2954 0\n2955 2956 2957 0\n2958 2959 2960 0\n2961 2962 2963 0\n2964 2965 2966 0\n2967 2968 2969 0\n2970 2971 2972 0\n2973 2974 2975 0\n2976 2977 2978 0\n2979 2980 2981 0\n2982 2983 2984 0\n2985 2986 2987 0\n2988 2989 2990 0\n2991 2992 2993 0\n2994 2995 2996 0\n2997 2998 2999 0\n3000 3001 3002 0\n3003 3004 3005 0\n3006 3007 3008 0\n3009 3010 3011 0\n3012 3013 3014 0\n3015 3016 3017 0\n3018 3019 3020 0\n3021 3022 3023 0\n3024 3025 3026 0\n3027 3028 3029 0\n3030 3031 3032 0\n3033 3034 3035 0\n3036 3037 3038 0\n3039 3040 3041 0\n3042 3043 3044 0\n3045 3046 3047 0\n3048 3049 3050 0\n3051 3052 3053 0\n3054 3055 3056 0\n3057 3058 3059 0\n3060 3061 3062 0\n3063 3064 3065 0\n3066 3067 3068 0\n3069 3070 3071 0\n3072 3073 3074 0\n3075 3076 3077 0\n3078 3079 3080 0\n3081 3082 3083 0\n3084 3085 3086 0\n3087 3088 3089 0\n3090 3091 3092 0\n3093 3094 3095 0\n3096 3097 3098 0\n3099 3100 3101 0\n3102 3103 3104 0\n3105 3106 3107 0\n3108 3109 3110 0\n3111 3112 3113 0\n3114 3115 3116 0\n3117 3118 3119 0\n3120 3121 3122 0\n3123 3124 3125 0\n3126 3127 3128 0\n3129 3130 3131 0\n3132 3133 3134 0\n3135 3136 3137 0\n3138 3139 3140 0\n3141 3142 3143 0\n3144 3145 3146 0\n3147 3148 3149 0\n3150 3151 3152 0\n3153 3154 3155 0\n3156 3157 3158 0\n3159 3160 3161 0\n3162 3163 3164 0\n3165 3166 3167 0\n3168 3169 3170 0\n3171 3172 3173 0\n3174 3175 3176 0\n3177 3178 3179 0\n3180 3181 3182 0\n3183 3184 3185 0\n3186 3187 3188 0\n3189 3190 3191 0\n3192 3193 3194 0\n3195 3196 3197 0\n3198 3199 3200 0\n3201 3202 3203 0\n3204 3205 3206 0\n3207 3208 3209 0\n3210 3211 3212 0\n3213 3214 3215 0\n3216 3217 3218 0\n3219 3220 3221 0\n3222 3223 3224 0\n3225 3226 3227 0\n3228 3229 3230 0\n3231 3232 3233 0\n3234 3235 3236 0\n3237 3238 3239 0\n3240 3241 3242 0\n3243 3244 3245 0\n3246 3247 3248 0\n3249 3250 3251 0\n3252 3253 3254 0\n3255 3256 3257 0\n3258 3259 3260 0\n3261 3262 3263 0\n3264 3265 3266 0\n3267 3268 3269 0\n3270 3271 3272 0\n3273 3274 3275 0\n3276 3277 3278 0\n3279 3280 3281 0\n3282 3283 3284 0\n3285 3286 3287 0\n3288 3289 3290 0\n3291 3292 3293 0\n3294 3295 3296 0\n3297 3298 3299 0\n3300 3301 3302 0\n3303 3304 3305 0\n3306 3307 3308 0\n3309 3310 3311 0\n3312 3313 3314 0\n3315 3316 3317 0\n3318 3319 3320 0\n3321 3322 3323 0\n3324 3325 3326 0\n3327 3328 3329 0\n3330 3331 3332 0\n3333 3334 3335 0\n3336 3337 3338 0\n3339 3340 3341 0\n3342 3343 3344 0\n3345 3346 3347 0\n3348 3349 3350 0\n3351 3352 3353 0\n3354 3355 3356 0\n3357 3358 3359 0\n3360 3361 3362 0\n3363 3364 3365 0\n3366 3367 3368 0\n3369 3370 3371 0\n3372 3373 3374 0\n3375 3376 3377 0\n3378 3379 3380 0\n3381 3382 3383 0\n3384 3385 3386 0\n3387 3388 3389 0\n3390 3391 3392 0\n3393 3394 3395 0\n3396 3397 3398 0\n3399 3400 3401 0\n3402 3403 3404 0\n3405 3406 3407 0\n3408 3409 3410 0\n3411 3412 3413 0\n3414 3415 3416 0\n3417 3418 3419 0\n3420 3421 3422 0\n3423 3424 3425 0\n3426 3427 3428 0\n3429 3430 3431 0\n3432 3433 3434 0\n3435 3436 3437 0\n3438 3439 3440 0\n3441 3442 3443 0\n3444 3445 3446 0\n3447 3448 3449 0\n3450 3451 3452 0\n3453 3454 3455 0\n3456 3457 3458 0\n3459 3460 3461 0\n3462 3463 3464 0\n3465 3466 3467 0\n3468 3469 3470 0\n3471 3472 3473 0\n3474 3475 3476 0\n3477 3478 3479 0\n3480 3481 3482 0\n3483 3484 3485 0\n3486 3487 3488 0\n3489 3490 3491 0\n3492 3493 3494 0\n3495 3496 3497 0\n3498 3499 3500 0\n3501 3502 3503 0\n3504 3505 3506 0\n3507 3508 3509 0\n3510 3511 3512 0\n3513 3514 3515 0\n3516 3517 3518 0\n3519 3520 3521 0\n3522 3523 3524 0\n3525 3526 3527 0\n3528 3529 3530 0\n3531 3532 3533 0\n3534 3535 3536 0\n3537 3538 3539 0\n3540 3541 3542 0\n3543 3544 3545 0\n3546 3547 3548 0\n3549 3550 3551 0\n3552 3553 3554 0\n3555 3556 3557 0\n3558 3559 3560 0\n3561 3562 3563 0\n3564 3565 3566 0\n3567 3568 3569 0\n3570 3571 3572 0\n3573 3574 3575 0\n3576 3577 3578 0\n3579 3580 3581 0\n3582 3583 3584 0\n3585 3586 3587 0\n3588 3589 3590 0\n3591 3592 3593 0\n3594 3595 3596 0\n3597 3598 3599 0\n3600 3601 3602 0\n3603 3604 3605 0\n3606 3607 3608 0\n3609 3610 3611 0\n3612 3613 3614 0\n3615 3616 3617 0\n3618 3619 3620 0\n3621 3622 3623 0\n3624 3625 3626 0\n3627 3628 3629 0\n3630 3631 3632 0\n3633 3634 3635 0\n3636 3637 3638 0\n3639 3640 3641 0\n3642 3643 3644 0\n3645 3646 3647 0\n3648 3649 3650 0\n3651 3652 3653 0\n3654 3655 3656 0\n3657 3658 3659 0\n3660 3661 3662 0\n3663 3664 3665 0\n3666 3667 3668 0\n3669 3670 3671 0\n3672 3673 3674 0\n3675 3676 3677 0\n3678 3679 3680 0\n3681 3682 3683 0\n3684 3685 3686 0\n3687 3688 3689 0\n3690 3691 3692 0\n3693 3694 3695 0\n3696 3697 3698 0\n3699 3700 3701 0\n3702 3703 3704 0\n3705 3706 3707 0\n3708 3709 3710 0\n3711 3712 3713 0\n3714 3715 3716 0\n3717 3718 3719 0\n3720 3721 3722 0\n3723 3724 3725 0\n3726 3727 3728 0\n3729 3730 3731 0\n3732 3733 3734 0\n3735 3736 3737 0\n3738 3739 3740 0\n3741 3742 3743 0\n3744 3745 3746 0\n3747 3748 3749 0\n3750 3751 3752 0\n3753 3754 3755 0\n3756 3757 3758 0\n3759 3760 3761 0\n3762 3763 3764 0\n3765 3766 3767 0\n3768 3769 3770 0\n3771 3772 3773 0\n3774 3775 3776 0\n3777 3778 3779 0\n3780 3781 3782 0\n3783 3784 3785 0\n3786 3787 3788 0\n3789 3790 3791 0\n3792 3793 3794 0\n3795 3796 3797 0\n3798 3799 3800 0\n3801 3802 3803 0\n3804 3805 3806 0\n3807 3808 3809 0\n3810 3811 3812 0\n3813 3814 3815 0\n3816 3817 3818 0\n3819 3820 3821 0\n3822 3823 3824 0\n3825 3826 3827 0\n3828 3829 3830 0\n3831 3832 3833 0\n3834 3835 3836 0\n3837 3838 3839 0\n3840 3841 3842 0\n3843 3844 3845 0\n3846 3847 3848 0\n3849 3850 3851 0\n3852 3853 3854 0\n3855 3856 3857 0\n3858 3859 3860 0\n3861 3862 3863 0\n3864 3865 3866 0\n3867 3868 3869 0\n3870 3871 3872 0\n3873 3874 3875 0\n3876 3877 3878 0\n3879 3880 3881 0\n3882 3883 3884 0\n3885 3886 3887 0\n3888 3889 3890 0\n3891 3892 3893 0\n3894 3895 3896 0\n3897 3898 3899 0\n3900 3901 3902 0\n3903 3904 3905 0\n3906 3907 3908 0\n3909 3910 3911 0\n3912 3913 3914 0\n3915 3916 3917 0\n3918 3919 3920 0\n3921 3922 3923 0\n3924 3925 3926 0\n3927 3928 3929 0\n3930 3931 3932 0\n3933 3934 3935 0\n3936 3937 3938 0\n3939 3940 3941 0\n3942 3943 3944 0\n3945 3946 3947 0\n3948 3949 3950 0\n3951 3952 3953 0\n3954 3955 3956 0\n3957 3958 3959 0\n3960 3961 3962 0\n3963 3964 3965 0\n3966 3967 3968 0\n3969 3970 3971 0\n3972 3973 3974 0\n3975 3976 3977 0\n3978 3979 3980 0\n3981 3982 3983 0\n3984 3985 3986 0\n3987 3988 3989 0\n3990 3991 3992 0\n3993 3994 3995 0\n3996 3997 3998 0\n3999 4000 4001 0\n4002 4003 4004 0\n4005 4006 4007 0\n4008 4009 4010 0\n4011 4012 4013 0\n4014 4015 4016 0\n4017 4018 4019 0\n4020 4021 4022 0\n4023 4024 4025 0\n4026 4027 4028 0\n4029 4030 4031 0\n4032 4033 4034 0\n4035 4036 4037 0\n4038 4039 4040 0\n4041 4042 4043 0\n4044 4045 4046 0\n4047 4048 4049 0\n4050 4051 4052 0\n4053 4054 4055 0\n4056 4057 4058 0\n4059 4060 4061 0\n4062 4063 4064 0\n4065 4066 4067 0\n4068 4069 4070 0\n4071 4072 4073 0\n4074 4075 4076 0\n4077 4078 4079 0\n4080 4081 4082 0\n4083 4084 4085 0\n4086 4087 4088 0\n4089 4090 4091 0\n4092 4093 4094 0\n4095 4096 4097 0\n4098 4099 4100 0\n4101 4102 4103 0\n4104 4105 4106 0\n4107 4108 4109 0\n4110 4111 4112 0\n4113 4114 4115 0\n4116 4117 4118 0\n4119 4120 4121 0\n4122 4123 4124 0\n4125 4126 4127 0\n4128 4129 4130 0\n4131 4132 4133 0\n4134 4135 4136 0\n4137 4138 4139 0\n4140 4141 4142 0\n4143 4144 4145 0\n4146 4147 4148 0\n4149 4150 4151 0\n4152 4153 4154 0\n4155 4156 4157 0\n4158 4159 4160 0\n4161 4162 4163 0\n4164 4165 4166 0\n4167 4168 4169 0\n4170 4171 4172 0\n4173 4174 4175 0\n4176 4177 4178 0\n4179 4180 4181 0\n4182 4183 4184 0\n4185 4186 4187 0\n4188 4189 4190 0\n4191 4192 4193 0\n4194 4195 4196 0\n4197 4198 4199 0\n4200 4201 4202 0\n4203 4204 4205 0\n4206 4207 4208 0\n4209 4210 4211 0\n4212 4213 4214 0\n4215 4216 4217 0\n4218 4219 4220 0\n4221 4222 4223 0\n4224 4225 4226 0\n4227 4228 4229 0\n4230 4231 4232 0\n4233 4234 4235 0\n4236 4237 4238 0\n4239 4240 4241 0\n4242 4243 4244 0\n4245 4246 4247 0\n4248 4249 4250 0\n4251 4252 4253 0\n4254 4255 4256 0\n4257 4258 4259 0\n4260 4261 4262 0\n4263 4264 4265 0\n4266 4267 4268 0\n4269 4270 4271 0\n4272 4273 4274 0\n4275 4276 4277 0\n4278 4279 4280 0\n4281 4282 4283 0\n4284 4285 4286 0\n4287 4288 4289 0\n4290 4291 4292 0\n4293 4294 4295 0\n4296 4297 4298 0\n4299 4300 4301 0\n4302 4303 4304 0\n4305 4306 4307 0\n4308 4309 4310 0\n4311 4312 4313 0\n4314 4315 4316 0\n4317 4318 4319 0\n4320 4321 4322 0\n4323 4324 4325 0\n4326 4327 4328 0\n4329 4330 4331 0\n4332 4333 4334 0\n4335 4336 4337 0\n4338 4339 4340 0\n4341 4342 4343 0\n4344 4345 4346 0\n4347 4348 4349 0\n4350 4351 4352 0\n4353 4354 4355 0\n4356 4357 4358 0\n4359 4360 4361 0\n4362 4363 4364 0\n4365 4366 4367 0\n4368 4369 4370 0\n4371 4372 4373 0\n4374 4375 4376 0\n4377 4378 4379 0\n4380 4381 4382 0\n4383 4384 4385 0\n4386 4387 4388 0\n4389 4390 4391 0\n4392 4393 4394 0\n4395 4396 4397 0\n4398 4399 4400 0\n4401 4402 4403 0\n4404 4405 4406 0\n4407 4408 4409 0\n4410 4411 4412 0\n4413 4414 4415 0\n4416 4417 4418 0\n4419 4420 4421 0\n4422 4423 4424 0\n4425 4426 4427 0\n4428 4429 4430 0\n4431 4432 4433 0\n4434 4435 4436 0\n4437 4438 4439 0\n4440 4441 4442 0\n4443 4444 4445 0\n4446 4447 4448 0\n4449 4450 4451 0\n4452 4453 4454 0\n4455 4456 4457 0\n4458 4459 4460 0\n4461 4462 4463 0\n4464 4465 4466 0\n4467 4468 4469 0\n4470 4471 4472 0\n4473 4474 4475 0\n4476 4477 4478 0\n4479 4480 4481 0\n4482 4483 4484 0\n4485 4486 4487 0\n4488 4489 4490 0\n4491 4492 4493 0\n4494 4495 4496 0\n4497 4498 4499 0\n4500 4501 4502 0\n4503 4504 4505 0\n4506 4507 4508 0\n4509 4510 4511 0\n4512 4513 4514 0\n4515 4516 4517 0\n4518 4519 4520 0\n4521 4522 4523 0\n4524 4525 4526 0\n4527 4528 4529 0\n4530 4531 4532 0\n4533 4534 4535 0\n4536 4537 4538 0\n4539 4540 4541 0\n4542 4543 4544 0\n4545 4546 4547 0\n4548 4549 4550 0\n4551 4552 4553 0\n4554 4555 4556 0\n4557 4558 4559 0\n4560 4561 4562 0\n4563 4564 4565 0\n4566 4567 4568 0\n4569 4570 4571 0\n4572 4573 4574 0\n4575 4576 4577 0\n4578 4579 4580 0\n4581 4582 4583 0\n4584 4585 4586 0\n4587 4588 4589 0\n4590 4591 4592 0\n4593 4594 4595 0\n4596 4597 4598 0\n4599 4600 4601 0\n4602 4603 4604 0\n4605 4606 4607 0\n4608 4609 4610 0\n4611 4612 4613 0\n4614 4615 4616 0\n4617 4618 4619 0\n4620 4621 4622 0\n4623 4624 4625 0\n4626 4627 4628 0\n4629 4630 4631 0\n4632 4633 4634 0\n4635 4636 4637 0\n4638 4639 4640 0\n4641 4642 4643 0\n4644 4645 4646 0\n4647 4648 4649 0\n4650 4651 4652 0\n4653 4654 4655 0\n4656 4657 4658 0\n4659 4660 4661 0\n4662 4663 4664 0\n4665 4666 4667 0\n4668 4669 4670 0\n4671 4672 4673 0\n4674 4675 4676 0\n4677 4678 4679 0\n4680 4681 4682 0\n4683 4684 4685 0\n4686 4687 4688 0\n4689 4690 4691 0\n4692 4693 4694 0\n4695 4696 4697 0\n4698 4699 4700 0\n4701 4702 4703 0\n4704 4705 4706 0\n4707 4708 4709 0\n4710 4711 4712 0\n4713 4714 4715 0\n4716 4717 4718 0\n4719 4720 4721 0\n4722 4723 4724 0\n4725 4726 4727 0\n4728 4729 4730 0\n4731 4732 4733 0\n4734 4735 4736 0\n4737 4738 4739 0\n4740 4741 4742 0\n4743 4744 4745 0\n4746 4747 4748 0\n4749 4750 4751 0\n4752 4753 4754 0\n4755 4756 4757 0\n4758 4759 4760 0\n4761 4762 4763 0\n4764 4765 4766 0\n4767 4768 4769 0\n4770 4771 4772 0\n4773 4774 4775 0\n4776 4777 4778 0\n4779 4780 4781 0\n4782 4783 4784 0\n4785 4786 4787 0\n4788 4789 4790 0\n4791 4792 4793 0\n4794 4795 4796 0\n4797 4798 4799 0\n4800 4801 4802 0\n4803 4804 4805 0\n4806 4807 4808 0\n4809 4810 4811 0\n4812 4813 4814 0\n4815 4816 4817 0\n4818 4819 4820 0\n4821 4822 4823 0\n4824 4825 4826 0\n4827 4828 4829 0\n4830 4831 4832 0\n4833 4834 4835 0\n4836 4837 4838 0\n4839 4840 4841 0\n4842 4843 4844 0\n4845 4846 4847 0\n4848 4849 4850 0\n4851 4852 4853 0\n4854 4855 4856 0\n4857 4858 4859 0\n4860 4861 4862 0\n4863 4864 4865 0\n4866 4867 4868 0\n4869 4870 4871 0\n4872 4873 4874 0\n4875 4876 4877 0\n4878 4879 4880 0\n4881 4882 4883 0\n4884 4885 4886 0\n4887 4888 4889 0\n4890 4891 4892 0\n4893 4894 4895 0\n4896 4897 4898 0\n4899 4900 4901 0\n4902 4903 4904 0\n4905 4906 4907 0\n4908 4909 4910 0\n4911 4912 4913 0\n4914 4915 4916 0\n4917 4918 4919 0\n4920 4921 4922 0\n4923 4924 4925 0\n4926 4927 4928 0\n4929 4930 4931 0\n4932 4933 4934 0\n4935 4936 4937 0\n4938 4939 4940 0\n4941 4942 4943 0\n4944 4945 4946 0\n4947 4948 4949 0\n4950 4951 4952 0\n4953 4954 4955 0\n4956 4957 4958 0\n4959 4960 4961 0\n4962 4963 4964 0\n4965 4966 4967 0\n4968 4969 4970 0\n4971 4972 4973 0\n4974 4975 4976 0\n4977 4978 4979 0\n4980 4981 4982 0\n4983 4984 4985 0\n4986 4987 4988 0\n4989 4990 4991 0\n4992 4993 4994 0\n4995 4996 4997 0\n4998 4999 5000 0\n5001 5002 5003 0\n5004 5005 5006 0\n5007 5008 5009 0\n5010 5011 5012 0\n5013 5014 5015 0\n5016 5017 5018 0\n5019 5020 5021 0\n5022 5023 5024 0\n5025 5026 5027 0\n5028 5029 5030 0\n5031 5032 5033 0\n5034 5035 5036 0\n5037 5038 5039 0\n5040 5041 5042 0\n5043 5044 5045 0\n5046 5047 5048 0\n5049 5050 5051 0\n5052 5053 5054 0\n5055 5056 5057 0\n5058 5059 5060 0\n5061 5062 5063 0\n5064 5065 5066 0\n5067 5068 5069 0\n5070 5071 5072 0\n5073 5074 5075 0\n5076 5077 5078 0\n5079 5080 5081 0\n5082 5083 5084 0\n5085 5086 5087 0\n5088 5089 5090 0\n5091 5092 5093 0\n5094 5095 5096 0\n5097 5098 5099 0\n5100 5101 5102 0\n5103 5104 5105 0\n5106 5107 5108 0\n5109 5110 5111 0\n5112 5113 5114 0\n5115 5116 5117 0\n5118 5119 5120 0\n5121 5122 5123 0\n5124 5125 5126 0\n5127 5128 5129 0\n5130 5131 5132 0\n5133 5134 5135 0\n5136 5137 5138 0\n5139 5140 5141 0\n5142 5143 5144 0\n5145 5146 5147 0\n5148 5149 5150 0\n5151 5152 5153 0\n5154 5155 5156 0\n5157 5158 5159 0\n5160 5161 5162 0\n5163 5164 5165 0\n5166 5167 5168 0\n5169 5170 5171 0\n5172 5173 5174 0\n5175 5176 5177 0\n5178 5179 5180 0\n5181 5182 5183 0\n5184 5185 5186 0\n5187 5188 5189 0\n5190 5191 5192 0\n5193 5194 5195 0\n5196 5197 5198 0\n5199 5200 5201 0\n5202 5203 5204 0\n5205 5206 5207 0\n5208 5209 5210 0\n5211 5212 5213 0\n5214 5215 5216 0\n5217 5218 5219 0\n5220 5221 5222 0\n5223 5224 5225 0\n5226 5227 5228 0\n5229 5230 5231 0\n5232 5233 5234 0\n5235 5236 5237 0\n5238 5239 5240 0\n5241 5242 5243 0\n5244 5245 5246 0\n5247 5248 5249 0\n5250 5251 5252 0\n5253 5254 5255 0\n5256 5257 5258 0\n5259 5260 5261 0\n5262 5263 5264 0\n5265 5266 5267 0\n5268 5269 5270 0\n5271 5272 5273 0\n5274 5275 5276 0\n5277 5278 5279 0\n5280 5281 5282 0\n5283 5284 5285 0\n5286 5287 5288 0\n5289 5290 5291 0\n5292 5293 5294 0\n5295 5296 5297 0\n5298 5299 5300 0\n5301 5302 5303 0\n5304 5305 5306 0\n5307 5308 5309 0\n5310 5311 5312 0\n5313 5314 5315 0\n5316 5317 5318 0\n5319 5320 5321 0\n5322 5323 5324 0\n5325 5326 5327 0\n5328 5329 5330 0\n5331 5332 5333 0\n5334 5335 5336 0\n5337 5338 5339 0\n5340 5341 5342 0\n5343 5344 5345 0\n5346 5347 5348 0\n5349 5350 5351 0\n5352 5353 5354 0\n5355 5356 5357 0\n5358 5359 5360 0\n5361 5362 5363 0\n5364 5365 5366 0\n5367 5368 5369 0\n5370 5371 5372 0\n5373 5374 5375 0\n5376 5377 5378 0\n5379 5380 5381 0\n5382 5383 5384 0\n5385 5386 5387 0\n5388 5389 5390 0\n5391 5392 5393 0\n5394 5395 5396 0\n5397 5398 5399 0\n5400 5401 5402 0\n5403 5404 5405 0\n5406 5407 5408 0\n5409 5410 5411 0\n5412 5413 5414 0\n5415 5416 5417 0\n5418 5419 5420 0\n5421 5422 5423 0\n5424 5425 5426 0\n5427 5428 5429 0\n5430 5431 5432 0\n5433 5434 5435 0\n5436 5437 5438 0\n5439 5440 5441 0\n5442 5443 5444 0\n5445 5446 5447 0\n5448 5449 5450 0\n5451 5452 5453 0\n5454 5455 5456 0\n5457 5458 5459 0\n5460 5461 5462 0\n5463 5464 5465 0\n5466 5467 5468 0\n5469 5470 5471 0\n5472 5473 5474 0\n5475 5476 5477 0\n5478 5479 5480 0\n5481 5482 5483 0\n5484 5485 5486 0\n5487 5488 5489 0\n5490 5491 5492 0\n5493 5494 5495 0\n5496 5497 5498 0\n5499 5500 5501 0\n5502 5503 5504 0\n5505 5506 5507 0\n5508 5509 5510 0\n5511 5512 5513 0\n5514 5515 5516 0\n5517 5518 5519 0\n5520 5521 5522 0\n5523 5524 5525 0\n5526 5527 5528 0\n5529 5530 5531 0\n5532 5533 5534 0\n5535 5536 5537 0\n5538 5539 5540 0\n5541 5542 5543 0\n5544 5545 5546 0\n5547 5548 5549 0\n5550 5551 5552 0\n5553 5554 5555 0\n5556 5557 5558 0\n5559 5560 5561 0\n5562 5563 5564 0\n5565 5566 5567 0\n5568 5569 5570 0\n5571 5572 5573 0\n5574 5575 5576 0\n5577 5578 5579 0\n5580 5581 5582 0\n5583 5584 5585 0\n5586 5587 5588 0\n5589 5590 5591 0\n5592 5593 5594 0\n5595 5596 5597 0\n5598 5599 5600 0\n5601 5602 5603 0\n5604 5605 5606 0\n5607 5608 5609 0\n5610 5611 5612 0\n5613 5614 5615 0\n5616 5617 5618 0\n5619 5620 5621 0\n5622 5623 5624 0\n5625 5626 5627 0\n5628 5629 5630 0\n5631 5632 5633 0\n5634 5635 5636 0\n5637 5638 5639 0\n5640 5641 5642 0\n5643 5644 5645 0\n5646 5647 5648 0\n5649 5650 5651 0\n5652 5653 5654 0\n5655 5656 5657 0\n5658 5659 5660 0\n5661 5662 5663 0\n5664 5665 5666 0\n5667 5668 5669 0\n5670 5671 5672 0\n5673 5674 5675 0\n5676 5677 5678 0\n5679 5680 5681 0\n5682 5683 5684 0\n5685 5686 5687 0\n5688 5689 5690 0\n5691 5692 5693 0\n5694 5695 5696 0\n5697 5698 5699 0\n5700 5701 5702 0\n5703 5704 5705 0\n5706 5707 5708 0\n5709 5710 5711 0\n5712 5713 5714 0\n5715 5716 5717 0\n5718 5719 5720 0\n5721 5722 5723 0\n5724 5725 5726 0\n5727 5728 5729 0\n5730 5731 5732 0\n5733 5734 5735 0\n5736 5737 5738 0\n5739 5740 5741 0\n5742 5743 5744 0\n5745 5746 5747 0\n5748 5749 5750 0\n5751 5752 5753 0\n5754 5755 5756 0\n5757 5758 5759 0\n5760 5761 5762 0\n5763 5764 5765 0\n5766 5767 5768 0\n5769 5770 5771 0\n5772 5773 5774 0\n5775 5776 5777 0\n5778 5779 5780 0\n5781 5782 5783 0\n5784 5785 5786 0\n5787 5788 5789 0\n5790 5791 5792 0\n5793 5794 5795 0\n5796 5797 5798 0\n5799 5800 5801 0\n5802 5803 5804 0\n5805 5806 5807 0\n5808 5809 5810 0\n5811 5812 5813 0\n5814 5815 5816 0\n5817 5818 5819 0\n5820 5821 5822 0\n5823 5824 5825 0\n5826 5827 5828 0\n5829 5830 5831 0\n5832 5833 5834 0\n5835 5836 5837 0\n5838 5839 5840 0\n5841 5842 5843 0\n5844 5845 5846 0\n5847 5848 5849 0\n5850 5851 5852 0\n5853 5854 5855 0\n5856 5857 5858 0\n5859 5860 5861 0\n5862 5863 5864 0\n5865 5866 5867 0\n5868 5869 5870 0\n5871 5872 5873 0\n5874 5875 5876 0\n5877 5878 5879 0\n5880 5881 5882 0\n5883 5884 5885 0\n5886 5887 5888 0\n5889 5890 5891 0\n5892 5893 5894 0\n5895 5896 5897 0\n5898 5899 5900 0\n5901 5902 5903 0\n5904 5905 5906 0\n5907 5908 5909 0\n5910 5911 5912 0\n5913 5914 5915 0\n5916 5917 5918 0\n5919 5920 5921 0\n5922 5923 5924 0\n5925 5926 5927 0\n5928 5929 5930 0\n5931 5932 5933 0\n5934 5935 5936 0\n5937 5938 5939 0\n5940 5941 5942 0\n5943 5944 5945 0\n5946 5947 5948 0\n5949 5950 5951 0\n5952 5953 5954 0\n5955 5956 5957 0\n5958 5959 5960 0\n5961 5962 5963 0\n5964 5965 5966 0\n5967 5968 5969 0\n5970 5971 5972 0\n5973 5974 5975 0\n5976 5977 5978 0\n5979 5980 5981 0\n5982 5983 5984 0\n5985 5986 5987 0\n5988 5989 5990 0\n5991 5992 5993 0\n5994 5995 5996 0\n5997 5998 5999 0\n6000 6001 6002 0\n6003 6004 6005 0\n6006 6007 6008 0\n6009 6010 6011 0\n6012 6013 6014 0\n6015 6016 6017 0\n6018 6019 6020 0\n6021 6022 6023 0\n6024 6025 6026 0\n6027 6028 6029 0\n6030 6031 6032 0\n6033 6034 6035 0\n6036 6037 6038 0\n6039 6040 6041 0\n6042 6043 6044 0\n6045 6046 6047 0\n6048 6049 6050 0\n6051 6052 6053 0\n6054 6055 6056 0\n6057 6058 6059 0\n6060 6061 6062 0\n6063 6064 6065 0\n6066 6067 6068 0\n6069 6070 6071 0\n6072 6073 6074 0\n6075 6076 6077 0\n6078 6079 6080 0\n6081 6082 6083 0\n6084 6085 6086 0\n6087 6088 6089 0\n6090 6091 6092 0\n6093 6094 6095 0\n6096 6097 6098 0\n6099 6100 6101 0\n6102 6103 6104 0\n6105 6106 6107 0\n6108 6109 6110 0\n6111 6112 6113 0\n6114 6115 6116 0\n6117 6118 6119 0\n6120 6121 6122 0\n6123 6124 6125 0\n6126 6127 6128 0\n6129 6130 6131 0\n6132 6133 6134 0\n6135 6136 6137 0\n6138 6139 6140 0\n6141 6142 6143 0\n6144 6145 6146 0\n6147 6148 6149 0\n6150 6151 6152 0\n6153 6154 6155 0\n6156 6157 6158 0\n6159 6160 6161 0\n6162 6163 6164 0\n6165 6166 6167 0\n6168 6169 6170 0\n6171 6172 6173 0\n6174 6175 6176 0\n6177 6178 6179 0\n6180 6181 6182 0\n6183 6184 6185 0\n6186 6187 6188 0\n6189 6190 6191 0\n6192 6193 6194 0\n6195 6196 6197 0\n6198 6199 6200 0\n6201 6202 6203 0\n6204 6205 6206 0\n6207 6208 6209 0\n6210 6211 6212 0\n6213 6214 6215 0\n6216 6217 6218 0\n6219 6220 6221 0\n6222 6223 6224 0\n6225 6226 6227 0\n6228 6229 6230 0\n6231 6232 6233 0\n6234 6235 6236 0\n6237 6238 6239 0\n6240 6241 6242 0\n6243 6244 6245 0\n6246 6247 6248 0\n6249 6250 6251 0\n6252 6253 6254 0\n6255 6256 6257 0\n6258 6259 6260 0\n6261 6262 6263 0\n6264 6265 6266 0\n6267 6268 6269 0\n6270 6271 6272 0\n6273 6274 6275 0\n6276 6277 6278 0\n6279 6280 6281 0\n6282 6283 6284 0\n6285 6286 6287 0\n6288 6289 6290 0\n6291 6292 6293 0\n6294 6295 6296 0\n6297 6298 6299 0\n6300 6301 6302 0\n6303 6304 6305 0\n6306 6307 6308 0\n6309 6310 6311 0\n6312 6313 6314 0\n6315 6316 6317 0\n6318 6319 6320 0\n6321 6322 6323 0\n6324 6325 6326 0\n6327 6328 6329 0\n6330 6331 6332 0\n6333 6334 6335 0\n6336 6337 6338 0\n6339 6340 6341 0\n6342 6343 6344 0\n6345 6346 6347 0\n6348 6349 6350 0\n6351 6352 6353 0\n6354 6355 6356 0\n6357 6358 6359 0\n6360 6361 6362 0\n6363 6364 6365 0\n6366 6367 6368 0\n6369 6370 6371 0\n6372 6373 6374 0\n6375 6376 6377 0\n6378 6379 6380 0\n6381 6382 6383 0\n6384 6385 6386 0\n6387 6388 6389 0\n6390 6391 6392 0\n6393 6394 6395 0\n6396 6397 6398 0\n6399 6400 6401 0\n6402 6403 6404 0\n6405 6406 6407 0\n6408 6409 6410 0\n6411 6412 6413 0\n6414 6415 6416 0\n6417 6418 6419 0\n6420 6421 6422 0\n6423 6424 6425 0\n6426 6427 6428 0\n6429 6430 6431 0\n6432 6433 6434 0\n6435 6436 6437 0\n6438 6439 6440 0\n6441 6442 6443 0\n6444 6445 6446 0\n6447 6448 6449 0\n6450 6451 6452 0\n6453 6454 6455 0\n6456 6457 6458 0\n6459 6460 6461 0\n6462 6463 6464 0\n6465 6466 6467 0\n6468 6469 6470 0\n6471 6472 6473 0\n6474 6475 6476 0\n6477 6478 6479 0\n6480 6481 6482 0\n6483 6484 6485 0\n6486 6487 6488 0\n6489 6490 6491 0\n6492 6493 6494 0\n6495 6496 6497 0\n6498 6499 6500 0\n6501 6502 6503 0\n6504 6505 6506 0\n6507 6508 6509 0\n6510 6511 6512 0\n6513 6514 6515 0\n6516 6517 6518 0\n6519 6520 6521 0\n6522 6523 6524 0\n6525 6526 6527 0\n6528 6529 6530 0\n6531 6532 6533 0\n6534 6535 6536 0\n6537 6538 6539 0\n6540 6541 6542 0\n6543 6544 6545 0\n6546 6547 6548 0\n6549 6550 6551 0\n6552 6553 6554 0\n6555 6556 6557 0\n6558 6559 6560 0\n6561 6562 6563 0\n6564 6565 6566 0\n6567 6568 6569 0\n6570 6571 6572 0\n6573 6574 6575 0\n6576 6577 6578 0\n6579 6580 6581 0\n6582 6583 6584 0\n6585 6586 6587 0\n6588 6589 6590 0\n6591 6592 6593 0\n6594 6595 6596 0\n6597 6598 6599 0\n6600 6601 6602 0\n6603 6604 6605 0\n6606 6607 6608 0\n6609 6610 6611 0\n6612 6613 6614 0\n6615 6616 6617 0\n6618 6619 6620 0\n6621 6622 6623 0\n6624 6625 6626 0\n6627 6628 6629 0\n6630 6631 6632 0\n6633 6634 6635 0\n6636 6637 6638 0\n6639 6640 6641 0\n6642 6643 6644 0\n6645 6646 6647 0\n6648 6649 6650 0\n6651 6652 6653 0\n6654 6655 6656 0\n6657 6658 6659 0\n6660 6661 6662 0\n6663 6664 6665 0\n6666 6667 6668 0\n6669 6670 6671 0\n6672 6673 6674 0\n6675 6676 6677 0\n6678 6679 6680 0\n6681 6682 6683 0\n6684 6685 6686 0\n6687 6688 6689 0\n6690 6691 6692 0\n6693 6694 6695 0\n6696 6697 6698 0\n6699 6700 6701 0\n6702 6703 6704 0\n6705 6706 6707 0\n6708 6709 6710 0\n6711 6712 6713 0\n6714 6715 6716 0\n6717 6718 6719 0\n6720 6721 6722 0\n6723 6724 6725 0\n6726 6727 6728 0\n6729 6730 6731 0\n6732 6733 6734 0\n6735 6736 6737 0\n6738 6739 6740 0\n6741 6742 6743 0\n6744 6745 6746 0\n6747 6748 6749 0\n6750 6751 6752 0\n6753 6754 6755 0\n6756 6757 6758 0\n6759 6760 6761 0\n6762 6763 6764 0\n6765 6766 6767 0\n6768 6769 6770 0\n6771 6772 6773 0\n6774 6775 6776 0\n6777 6778 6779 0\n6780 6781 6782 0\n6783 6784 6785 0\n6786 6787 6788 0\n6789 6790 6791 0\n6792 6793 6794 0\n6795 6796 6797 0\n6798 6799 6800 0\n6801 6802 6803 0\n6804 6805 6806 0\n6807 6808 6809 0\n6810 6811 6812 0\n6813 6814 6815 0\n6816 6817 6818 0\n6819 6820 6821 0\n6822 6823 6824 0\n6825 6826 6827 0\n6828 6829 6830 0\n6831 6832 6833 0\n6834 6835 6836 0\n6837 6838 6839 0\n6840 6841 6842 0\n6843 6844 6845 0\n6846 6847 6848 0\n6849 6850 6851 0\n6852 6853 6854 0\n6855 6856 6857 0\n6858 6859 6860 0\n6861 6862 6863 0\n6864 6865 6866 0\n6867 6868 6869 0\n6870 6871 6872 0\n6873 6874 6875 0\n6876 6877 6878 0\n6879 6880 6881 0\n6882 6883 6884 0\n6885 6886 6887 0\n6888 6889 6890 0\n6891 6892 6893 0\n6894 6895 6896 0\n6897 6898 6899 0\n6900 6901 6902 0\n6903 6904 6905 0\n6906 6907 6908 0\n6909 6910 6911 0\n6912 6913 6914 0\n6915 6916 6917 0\n6918 6919 6920 0\n6921 6922 6923 0\n6924 6925 6926 0\n6927 6928 6929 0\n6930 6931 6932 0\n6933 6934 6935 0\n6936 6937 6938 0\n6939 6940 6941 0\n6942 6943 6944 0\n6945 6946 6947 0\n6948 6949 6950 0\n6951 6952 6953 0\n6954 6955 6956 0\n6957 6958 6959 0\n6960 6961 6962 0\n6963 6964 6965 0\n6966 6967 6968 0\n6969 6970 6971 0\n6972 6973 6974 0\n6975 6976 6977 0\n6978 6979 6980 0\n6981 6982 6983 0\n6984 6985 6986 0\n6987 6988 6989 0\n6990 6991 6992 0\n6993 6994 6995 0\n6996 6997 6998 0\n6999 7000 7001 0\n7002 7003 7004 0\n7005 7006 7007 0\n7008 7009 7010 0\n7011 7012 7013 0\n7014 7015 7016 0\n7017 7018 7019 0\n7020 7021 7022 0\n7023 7024 7025 0\n7026 7027 7028 0\n7029 7030 7031 0\n7032 7033 7034 0\n7035 7036 7037 0\n7038 7039 7040 0\n7041 7042 7043 0\n7044 7045 7046 0\n7047 7048 7049 0\n7050 7051 7052 0\n7053 7054 7055 0\n7056 7057 7058 0\n7059 7060 7061 0\n7062 7063 7064 0\n7065 7066 7067 0\n7068 7069 7070 0\n7071 7072 7073 0\n7074 7075 7076 0\n7077 7078 7079 0\n7080 7081 7082 0\n7083 7084 7085 0\n7086 7087 7088 0\n7089 7090 7091 0\n7092 7093 7094 0\n7095 7096 7097 0\n7098 7099 7100 0\n7101 7102 7103 0\n7104 7105 7106 0\n7107 7108 7109 0\n7110 7111 7112 0\n7113 7114 7115 0\n7116 7117 7118 0\n7119 7120 7121 0\n7122 7123 7124 0\n7125 7126 7127 0\n7128 7129 7130 0\n7131 7132 7133 0\n7134 7135 7136 0\n7137 7138 7139 0\n7140 7141 7142 0\n7143 7144 7145 0\n7146 7147 7148 0\n7149 7150 7151 0\n7152 7153 7154 0\n7155 7156 7157 0\n7158 7159 7160 0\n7161 7162 7163 0\n7164 7165 7166 0\n7167 7168 7169 0\n7170 7171 7172 0\n7173 7174 7175 0\n7176 7177 7178 0\n7179 7180 7181 0\n7182 7183 7184 0\n7185 7186 7187 0\n7188 7189 7190 0\n7191 7192 7193 0\n7194 7195 7196 0\n7197 7198 7199 0\n7200 7201 7202 0\n7203 7204 7205 0\n7206 7207 7208 0\n7209 7210 7211 0\n7212 7213 7214 0\n7215 7216 7217 0\n7218 7219 7220 0\n7221 7222 7223 0\n7224 7225 7226 0\n7227 7228 7229 0\n7230 7231 7232 0\n7233 7234 7235 0\n7236 7237 7238 0\n7239 7240 7241 0\n7242 7243 7244 0\n7245 7246 7247 0\n7248 7249 7250 0\n7251 7252 7253 0\n7254 7255 7256 0\n7257 7258 7259 0\n7260 7261 7262 0\n7263 7264 7265 0\n7266 7267 7268 0\n7269 7270 7271 0\n7272 7273 7274 0\n7275 7276 7277 0\n7278 7279 7280 0\n7281 7282 7283 0\n7284 7285 7286 0\n7287 7288 7289 0\n7290 7291 7292 0\n7293 7294 7295 0\n7296 7297 7298 0\n7299 7300 7301 0\n7302 7303 7304 0\n7305 7306 7307 0\n7308 7309 7310 0\n7311 7312 7313 0\n7314 7315 7316 0\n7317 7318 7319 0\n7320 7321 7322 0\n7323 7324 7325 0\n7326 7327 7328 0\n7329 7330 7331 0\n7332 7333 7334 0\n7335 7336 7337 0\n7338 7339 7340 0\n7341 7342 7343 0\n7344 7345 7346 0\n7347 7348 7349 0\n7350 7351 7352 0\n7353 7354 7355 0\n7356 7357 7358 0\n7359 7360 7361 0\n7362 7363 7364 0\n7365 7366 7367 0\n7368 7369 7370 0\n7371 7372 7373 0\n7374 7375 7376 0\n7377 7378 7379 0\n7380 7381 7382 0\n7383 7384 7385 0\n7386 7387 7388 0\n7389 7390 7391 0\n7392 7393 7394 0\n7395 7396 7397 0\n7398 7399 7400 0\n7401 7402 7403 0\n7404 7405 7406 0\n7407 7408 7409 0\n7410 7411 7412 0\n7413 7414 7415 0\n7416 7417 7418 0\n7419 7420 7421 0\n7422 7423 7424 0\n7425 7426 7427 0\n7428 7429 7430 0\n7431 7432 7433 0\n7434 7435 7436 0\n7437 7438 7439 0\n7440 7441 7442 0\n7443 7444 7445 0\n7446 7447 7448 0\n7449 7450 7451 0\n7452 7453 7454 0\n7455 7456 7457 0\n7458 7459 7460 0\n7461 7462 7463 0\n7464 7465 7466 0\n7467 7468 7469 0\n7470 7471 7472 0\n7473 7474 7475 0\n7476 7477 7478 0\n7479 7480 7481 0\n7482 7483 7484 0\n7485 7486 7487 0\n7488 7489 7490 0\n7491 7492 7493 0\n7494 7495 7496 0\n7497 7498 7499 0\n7500 7501 7502 0\n7503 7504 7505 0\n7506 7507 7508 0\n7509 7510 7511 0\n7512 7513 7514 0\n7515 7516 7517 0\n7518 7519 7520 0\n7521 7522 7523 0\n7524 7525 7526 0\n7527 7528 7529 0\n7530 7531 7532 0\n7533 7534 7535 0\n7536 7537 7538 0\n7539 7540 7541 0\n7542 7543 7544 0\n7545 7546 7547 0\n7548 7549 7550 0\n7551 7552 7553 0\n7554 7555 7556 0\n7557 7558 7559 0\n7560 7561 7562 0\n7563 7564 7565 0\n7566 7567 7568 0\n7569 7570 7571 0\n7572 7573 7574 0\n7575 7576 7577 0\n7578 7579 7580 0\n7581 7582 7583 0\n7584 7585 7586 0\n7587 7588 7589 0\n7590 7591 7592 0\n7593 7594 7595 0\n7596 7597 7598 0\n7599 7600 7601 0\n7602 7603 7604 0\n7605 7606 7607 0\n7608 7609 7610 0\n7611 7612 7613 0\n7614 7615 7616 0\n7617 7618 7619 0\n7620 7621 7622 0\n7623 7624 7625 0\n7626 7627 7628 0\n7629 7630 7631 0\n7632 7633 7634 0\n7635 7636 7637 0\n7638 7639 7640 0\n7641 7642 7643 0\n7644 7645 7646 0\n7647 7648 7649 0\n7650 7651 7652 0\n7653 7654 7655 0\n7656 7657 7658 0\n7659 7660 7661 0\n7662 7663 7664 0\n7665 7666 7667 0\n7668 7669 7670 0\n7671 7672 7673 0\n7674 7675 7676 0\n7677 7678 7679 0\n7680 7681 7682 0\n7683 7684 7685 0\n7686 7687 7688 0\n7689 7690 7691 0\n7692 7693 7694 0\n7695 7696 7697 0\n7698 7699 7700 0\n7701 7702 7703 0\n7704 7705 7706 0\n7707 7708 7709 0\n7710 7711 7712 0\n7713 7714 7715 0\n7716 7717 7718 0\n7719 7720 7721 0\n7722 7723 7724 0\n7725 7726 7727 0\n7728 7729 7730 0\n7731 7732 7733 0\n7734 7735 7736 0\n7737 7738 7739 0\n7740 7741 7742 0\n7743 7744 7745 0\n7746 7747 7748 0\n7749 7750 7751 0\n7752 7753 7754 0\n7755 7756 7757 0\n7758 7759 7760 0\n7761 7762 7763 0\n7764 7765 7766 0\n7767 7768 7769 0\n7770 7771 7772 0\n7773 7774 7775 0\n7776 7777 7778 0\n7779 7780 7781 0\n7782 7783 7784 0\n7785 7786 7787 0\n7788 7789 7790 0\n7791 7792 7793 0\n7794 7795 7796 0\n7797 7798 7799 0\n7800 7801 7802 0\n7803 7804 7805 0\n7806 7807 7808 0\n7809 7810 7811 0\n7812 7813 7814 0\n7815 7816 7817 0\n7818 7819 7820 0\n7821 7822 7823 0\n7824 7825 7826 0\n7827 7828 7829 0\n7830 7831 7832 0\n7833 7834 7835 0\n7836 7837 7838 0\n7839 7840 7841 0\n7842 7843 7844 0\n7845 7846 7847 0\n7848 7849 7850 0\n7851 7852 7853 0\n7854 7855 7856 0\n7857 7858 7859 0\n7860 7861 7862 0\n7863 7864 7865 0\n7866 7867 7868 0\n7869 7870 7871 0\n7872 7873 7874 0\n7875 7876 7877 0\n7878 7879 7880 0\n7881 7882 7883 0\n7884 7885 7886 0\n7887 7888 7889 0\n7890 7891 7892 0\n7893 7894 7895 0\n7896 7897 7898 0\n7899 7900 7901 0\n7902 7903 7904 0\n7905 7906 7907 0\n7908 7909 7910 0\n7911 7912 7913 0\n7914 7915 7916 0\n7917 7918 7919 0\n7920 7921 7922 0\n7923 7924 7925 0\n7926 7927 7928 0\n7929 7930 7931 0\n7932 7933 7934 0\n7935 7936 7937 0\n7938 7939 7940 0\n7941 7942 7943 0\n7944 7945 7946 0\n7947 7948 7949 0\n7950 7951 7952 0\n7953 7954 7955 0\n7956 7957 7958 0\n7959 7960 7961 0\n7962 7963 7964 0\n7965 7966 7967 0\n7968 7969 7970 0\n7971 7972 7973 0\n7974 7975 7976 0\n7977 7978 7979 0\n7980 7981 7982 0\n7983 7984 7985 0\n7986 7987 7988 0\n7989 7990 7991 0\n7992 7993 7994 0\n7995 7996 7997 0\n7998 7999 8000 0\n8001 8002 8003 0\n8004 8005 8006 0\n8007 8008 8009 0\n8010 8011 8012 0\n8013 8014 8015 0\n8016 8017 8018 0\n8019 8020 8021 0\n8022 8023 8024 0\n8025 8026 8027 0\n8028 8029 8030 0\n8031 8032 8033 0\n8034 8035 8036 0\n8037 8038 8039 0\n8040 8041 8042 0\n8043 8044 8045 0\n8046 8047 8048 0\n8049 8050 8051 0\n8052 8053 8054 0\n8055 8056 8057 0\n8058 8059 8060 0\n8061 8062 8063 0\n8064 8065 8066 0\n8067 8068 8069 0\n8070 8071 8072 0\n8073 8074 8075 0\n8076 8077 8078 0\n8079 8080 8081 0\n8082 8083 8084 0\n8085 8086 8087 0\n8088 8089 8090 0\n8091 8092 8093 0\n8094 8095 8096 0\n8097 8098 8099 0\n8100 8101 8102 0\n8103 8104 8105 0\n8106 8107 8108 0\n8109 8110 8111 0\n8112 8113 8114 0\n8115 8116 8117 0\n8118 8119 8120 0\n8121 8122 8123 0\n8124 8125 8126 0\n8127 8128 8129 0\n8130 8131 8132 0\n8133 8134 8135 0\n8136 8137 8138 0\n8139 8140 8141 0\n8142 8143 8144 0\n8145 8146 8147 0\n8148 8149 8150 0\n8151 8152 8153 0\n8154 8155 8156 0\n8157 8158 8159 0\n8160 8161 8162 0\n8163 8164 8165 0\n8166 8167 8168 0\n8169 8170 8171 0\n8172 8173 8174 0\n8175 8176 8177 0\n8178 8179 8180 0\n8181 8182 8183 0\n8184 8185 8186 0\n8187 8188 8189 0\n8190 8191 8192 0\n8193 8194 8195 0\n8196 8197 8198 0\n8199 8200 8201 0\n8202 8203 8204 0\n8205 8206 8207 0\n8208 8209 8210 0\n8211 8212 8213 0\n8214 8215 8216 0\n8217 8218 8219 0\n8220 8221 8222 0\n8223 8224 8225 0\n8226 8227 8228 0\n8229 8230 8231 0\n8232 8233 8234 0\n8235 8236 8237 0\n8238 8239 8240 0\n8241 8242 8243 0\n8244 8245 8246 0\n8247 8248 8249 0\n8250 8251 8252 0\n8253 8254 8255 0\n8256 8257 8258 0\n8259 8260 8261 0\n8262 8263 8264 0\n8265 8266 8267 0\n8268 8269 8270 0\n8271 8272 8273 0\n8274 8275 8276 0\n8277 8278 8279 0\n8280 8281 8282 0\n8283 8284 8285 0\n8286 8287 8288 0\n8289 8290 8291 0\n8292 8293 8294 0\n8295 8296 8297 0\n8298 8299 8300 0\n8301 8302 8303 0\n8304 8305 8306 0\n8307 8308 8309 0\n8310 8311 8312 0\n8313 8314 8315 0\n8316 8317 8318 0\n8319 8320 8321 0\n8322 8323 8324 0\n8325 8326 8327 0\n8328 8329 8330 0\n8331 8332 8333 0\n8334 8335 8336 0\n8337 8338 8339 0\n8340 8341 8342 0\n8343 8344 8345 0\n8346 8347 8348 0\n8349 8350 8351 0\n8352 8353 8354 0\n8355 8356 8357 0\n8358 8359 8360 0\n8361 8362 8363 0\n8364 8365 8366 0\n8367 8368 8369 0\n8370 8371 8372 0\n8373 8374 8375 0\n8376 8377 8378 0\n8379 8380 8381 0\n8382 8383 8384 0\n8385 8386 8387 0\n8388 8389 8390 0\n8391 8392 8393 0\n8394 8395 8396 0\n8397 8398 8399 0\n8400 8401 8402 0\n8403 8404 8405 0\n8406 8407 8408 0\n8409 8410 8411 0\n8412 8413 8414 0\n8415 8416 8417 0\n8418 8419 8420 0\n8421 8422 8423 0\n8424 8425 8426 0\n8427 8428 8429 0\n8430 8431 8432 0\n8433 8434 8435 0\n8436 8437 8438 0\n8439 8440 8441 0\n8442 8443 8444 0\n8445 8446 8447 0\n8448 8449 8450 0\n8451 8452 8453 0\n8454 8455 8456 0\n8457 8458 8459 0\n8460 8461 8462 0\n8463 8464 8465 0\n8466 8467 8468 0\n8469 8470 8471 0\n8472 8473 8474 0\n8475 8476 8477 0\n8478 8479 8480 0\n8481 8482 8483 0\n8484 8485 8486 0\n8487 8488 8489 0\n8490 8491 8492 0\n8493 8494 8495 0\n8496 8497 8498 0\n8499 8500 8501 0\n8502 8503 8504 0\n8505 8506 8507 0\n8508 8509 8510 0\n8511 8512 8513 0\n8514 8515 8516 0\n8517 8518 8519 0\n8520 8521 8522 0\n8523 8524 8525 0\n8526 8527 8528 0\n8529 8530 8531 0\n8532 8533 8534 0\n8535 8536 8537 0\n8538 8539 8540 0\n8541 8542 8543 0\n8544 8545 8546 0\n8547 8548 8549 0\n8550 8551 8552 0\n8553 8554 8555 0\n8556 8557 8558 0\n8559 8560 8561 0\n8562 8563 8564 0\n8565 8566 8567 0\n8568 8569 8570 0\n8571 8572 8573 0\n8574 8575 8576 0\n8577 8578 8579 0\n8580 8581 8582 0\n8583 8584 8585 0\n8586 8587 8588 0\n8589 8590 8591 0\n8592 8593 8594 0\n8595 8596 8597 0\n8598 8599 8600 0\n8601 8602 8603 0\n8604 8605 8606 0\n8607 8608 8609 0\n8610 8611 8612 0\n8613 8614 8615 0\n8616 8617 8618 0\n8619 8620 8621 0\n8622 8623 8624 0\n8625 8626 8627 0\n8628 8629 8630 0\n8631 8632 8633 0\n8634 8635 8636 0\n8637 8638 8639 0\n8640 8641 8642 0\n8643 8644 8645 0\n8646 8647 8648 0\n8649 8650 8651 0\n8652 8653 8654 0\n8655 8656 8657 0\n8658 8659 8660 0\n8661 8662 8663 0\n8664 8665 8666 0\n8667 8668 8669 0\n8670 8671 8672 0\n8673 8674 8675 0\n8676 8677 8678 0\n8679 8680 8681 0\n8682 8683 8684 0\n8685 8686 8687 0\n8688 8689 8690 0\n8691 8692 8693 0\n8694 8695 8696 0\n8697 8698 8699 0\n8700 8701 8702 0\n8703 8704 8705 0\n8706 8707 8708 0\n8709 8710 8711 0\n8712 8713 8714 0\n8715 8716 8717 0\n8718 8719 8720 0\n8721 8722 8723 0\n8724 8725 8726 0\n8727 8728 8729 0\n8730 8731 8732 0\n8733 8734 8735 0\n8736 8737 8738 0\n8739 8740 8741 0\n8742 8743 8744 0\n8745 8746 8747 0\n8748 8749 8750 0\n8751 8752 8753 0\n8754 8755 8756 0\n8757 8758 8759 0\n8760 8761 8762 0\n8763 8764 8765 0\n8766 8767 8768 0\n8769 8770 8771 0\n8772 8773 8774 0\n8775 8776 8777 0\n8778 8779 8780 0\n8781 8782 8783 0\n8784 8785 8786 0\n8787 8788 8789 0\n8790 8791 8792 0\n8793 8794 8795 0\n8796 8797 8798 0\n8799 8800 8801 0\n8802 8803 8804 0\n8805 8806 8807 0\n8808 8809 8810 0\n8811 8812 8813 0\n8814 8815 8816 0\n8817 8818 8819 0\n8820 8821 8822 0\n8823 8824 8825 0\n8826 8827 8828 0\n8829 8830 8831 0\n8832 8833 8834 0\n8835 8836 8837 0\n8838 8839 8840 0\n8841 8842 8843 0\n8844 8845 8846 0\n8847 8848 8849 0\n8850 8851 8852 0\n8853 8854 8855 0\n8856 8857 8858 0\n8859 8860 8861 0\n8862 8863 8864 0\n8865 8866 8867 0\n8868 8869 8870 0\n8871 8872 8873 0\n8874 8875 8876 0\n8877 8878 8879 0\n8880 8881 8882 0\n8883 8884 8885 0\n8886 8887 8888 0\n8889 8890 8891 0\n8892 8893 8894 0\n8895 8896 8897 0\n8898 8899 8900 0\n8901 8902 8903 0\n8904 8905 8906 0\n8907 8908 8909 0\n8910 8911 8912 0\n8913 8914 8915 0\n8916 8917 8918 0\n8919 8920 8921 0\n8922 8923 8924 0\n8925 8926 8927 0\n8928 8929 8930 0\n8931 8932 8933 0\n8934 8935 8936 0\n8937 8938 8939 0\n8940 8941 8942 0\n8943 8944 8945 0\n8946 8947 8948 0\n8949 8950 8951 0\n8952 8953 8954 0\n8955 8956 8957 0\n8958 8959 8960 0\n8961 8962 8963 0\n8964 8965 8966 0\n8967 8968 8969 0\n8970 8971 8972 0\n8973 8974 8975 0\n8976 8977 8978 0\n8979 8980 8981 0\n8982 8983 8984 0\n8985 8986 8987 0\n8988 8989 8990 0\n8991 8992 8993 0\n8994 8995 8996 0\n8997 8998 8999 0\n9000 9001 9002 0\n9003 9004 9005 0\n9006 9007 9008 0\n9009 9010 9011 0\n9012 9013 9014 0\n9015 9016 9017 0\n9018 9019 9020 0\n9021 9022 9023 0\n9024 9025 9026 0\n9027 9028 9029 0\n9030 9031 9032 0\n9033 9034 9035 0\n9036 9037 9038 0\n9039 9040 9041 0\n9042 9043 9044 0\n9045 9046 9047 0\n9048 9049 9050 0\n9051 9052 9053 0\n9054 9055 9056 0\n9057 9058 9059 0\n9060 9061 9062 0\n9063 9064 9065 0\n9066 9067 9068 0\n9069 9070 9071 0\n9072 9073 9074 0\n9075 9076 9077 0\n9078 9079 9080 0\n9081 9082 9083 0\n9084 9085 9086 0\n9087 9088 9089 0\n9090 9091 9092 0\n9093 9094 9095 0\n9096 9097 9098 0\n9099 9100 9101 0\n9102 9103 9104 0\n9105 9106 9107 0\n9108 9109 9110 0\n9111 9112 9113 0\n9114 9115 9116 0\n9117 9118 9119 0\n9120 9121 9122 0\n9123 9124 9125 0\n9126 9127 9128 0\n9129 9130 9131 0\n9132 9133 9134 0\n9135 9136 9137 0\n9138 9139 9140 0\n9141 9142 9143 0\n9144 9145 9146 0\n9147 9148 9149 0\n9150 9151 9152 0\n9153 9154 9155 0\n9156 9157 9158 0\n9159 9160 9161 0\n9162 9163 9164 0\n9165 9166 9167 0\n9168 9169 9170 0\n9171 9172 9173 0\n9174 9175 9176 0\n9177 9178 9179 0\n9180 9181 9182 0\n9183 9184 9185 0\n9186 9187 9188 0\n9189 9190 9191 0\n9192 9193 9194 0\n9195 9196 9197 0\n9198 9199 9200 0\n9201 9202 9203 0\n9204 9205 9206 0\n9207 9208 9209 0\n9210 9211 9212 0\n9213 9214 9215 0\n9216 9217 9218 0\n9219 9220 9221 0\n9222 9223 9224 0\n9225 9226 9227 0\n9228 9229 9230 0\n9231 9232 9233 0\n9234 9235 9236 0\n9237 9238 9239 0\n9240 9241 9242 0\n9243 9244 9245 0\n9246 9247 9248 0\n9249 9250 9251 0\n9252 9253 9254 0\n9255 9256 9257 0\n9258 9259 9260 0\n9261 9262 9263 0\n9264 9265 9266 0\n9267 9268 9269 0\n9270 9271 9272 0\n9273 9274 9275 0\n9276 9277 9278 0\n9279 9280 9281 0\n9282 9283 9284 0\n9285 9286 9287 0\n9288 9289 9290 0\n9291 9292 9293 0\n9294 9295 9296 0\n9297 9298 9299 0\n9300 9301 9302 0\n9303 9304 9305 0\n9306 9307 9308 0\n9309 9310 9311 0\n9312 9313 9314 0\n9315 9316 9317 0\n9318 9319 9320 0\n9321 9322 9323 0\n9324 9325 9326 0\n9327 9328 9329 0\n9330 9331 9332 0\n9333 9334 9335 0\n9336 9337 9338 0\n9339 9340 9341 0\n9342 9343 9344 0\n9345 9346 9347 0\n9348 9349 9350 0\n9351 9352 9353 0\n9354 9355 9356 0\n9357 9358 9359 0\n9360 9361 9362 0\n9363 9364 9365 0\n9366 9367 9368 0\n9369 9370 9371 0\n9372 9373 9374 0\n9375 9376 9377 0\n9378 9379 9380 0\n9381 9382 9383 0\n9384 9385 9386 0\n9387 9388 9389 0\n9390 9391 9392 0\n9393 9394 9395 0\n9396 9397 9398 0\n9399 9400 9401 0\n9402 9403 9404 0\n9405 9406 9407 0\n9408 9409 9410 0\n9411 9412 9413 0\n9414 9415 9416 0\n9417 9418 9419 0\n9420 9421 9422 0\n9423 9424 9425 0\n9426 9427 9428 0\n9429 9430 9431 0\n9432 9433 9434 0\n9435 9436 9437 0\n9438 9439 9440 0\n9441 9442 9443 0\n9444 9445 9446 0\n9447 9448 9449 0\n9450 9451 9452 0\n9453 9454 9455 0\n9456 9457 9458 0\n9459 9460 9461 0\n9462 9463 9464 0\n9465 9466 9467 0\n9468 9469 9470 0\n9471 9472 9473 0\n9474 9475 9476 0\n9477 9478 9479 0\n9480 9481 9482 0\n9483 9484 9485 0\n9486 9487 9488 0\n9489 9490 9491 0\n9492 9493 9494 0\n9495 9496 9497 0\n9498 9499 9500 0\n9501 9502 9503 0\n9504 9505 9506 0\n9507 9508 9509 0\n9510 9511 9512 0\n9513 9514 9515 0\n9516 9517 9518 0\n9519 9520 9521 0\n9522 9523 9524 0\n9525 9526 9527 0\n9528 9529 9530 0\n9531 9532 9533 0\n9534 9535 9536 0\n9537 9538 9539 0\n9540 9541 9542 0\n9543 9544 9545 0\n9546 9547 9548 0\n9549 9550 9551 0\n9552 9553 9554 0\n9555 9556 9557 0\n9558 9559 9560 0\n9561 9562 9563 0\n9564 9565 9566 0\n9567 9568 9569 0\n9570 9571 9572 0\n9573 9574 9575 0\n9576 9577 9578 0\n9579 9580 9581 0\n9582 9583 9584 0\n9585 9586 9587 0\n9588 9589 9590 0\n9591 9592 9593 0\n9594 9595 9596 0\n9597 9598 9599 0\n9600 9601 9602 0\n9603 9604 9605 0\n9606 9607 9608 0\n9609 9610 9611 0\n9612 9613 9614 0\n9615 9616 9617 0\n9618 9619 9620 0\n9621 9622 9623 0\n9624 9625 9626 0\n9627 9628 9629 0\n9630 9631 9632 0\n9633 9634 9635 0\n9636 9637 9638 0\n9639 9640 9641 0\n9642 9643 9644 0\n9645 9646 9647 0\n9648 9649 9650 0\n9651 9652 9653 0\n9654 9655 9656 0\n9657 9658 9659 0\n9660 9661 9662 0\n9663 9664 9665 0\n9666 9667 9668 0\n9669 9670 9671 0\n9672 9673 9674 0\n9675 9676 9677 0\n9678 9679 9680 0\n9681 9682 9683 0\n9684 9685 9686 0\n9687 9688 9689 0\n9690 9691 9692 0\n9693 9694 9695 0\n9696 9697 9698 0\n9699 9700 9701 0\n9702 9703 9704 0\n9705 9706 9707 0\n9708 9709 9710 0\n9711 9712 9713 0\n9714 9715 9716 0\n9717 9718 9719 0\n9720 9721 9722 0\n9723 9724 9725 0\n9726 9727 9728 0\n9729 9730 9731 0\n9732 9733 9734 0\n9735 9736 9737 0\n9738 9739 9740 0\n9741 9742 9743 0\n9744 9745 9746 0\n9747 9748 9749 0\n9750 9751 9752 0\n9753 9754 9755 0\n9756 9757 9758 0\n9759 9760 9761 0\n9762 9763 9764 0\n9765 9766 9767 0\n9768 9769 9770 0\n9771 9772 9773 0\n9774 9775 9776 0\n9777 9778 9779 0\n9780 9781 9782 0\n9783 9784 9785 0\n9786 9787 9788 0\n9789 9790 9791 0\n9792 9793 9794 0\n9795 9796 9797 0\n9798 9799 9800 0\n9801 9802 9803 0\n9804 9805 9806 0\n9807 9808 9809 0\n9810 9811 9812 0\n9813 9814 9815 0\n9816 9817 9818 0\n9819 9820 9821 0\n9822 9823 9824 0\n9825 9826 9827 0\n9828 9829 9830 0\n9831 9832 9833 0\n9834 9835 9836 0\n9837 9838 9839 0\n9840 9841 9842 0\n9843 9844 9845 0\n9846 9847 9848 0\n9849 9850 9851 0\n9852 9853 9854 0\n9855 9856 9857 0\n9858 9859 9860 0\n9861 9862 9863 0\n9864 9865 9866 0\n9867 9868 9869 0\n9870 9871 9872 0\n9873 9874 9875 0\n9876 9877 9878 0\n9879 9880 9881 0\n9882 9883 9884 0\n9885 9886 9887 0\n9888 9889 9890 0\n9891 9892 9893 0\n9894 9895 9896 0\n9897 9898 9899 0\n9900 9901 9902 0\n9903 9904 9905 0\n9906 9907 9908 0\n9909 9910 9911 0\n9912 9913 9914 0\n9915 9916 9917 0\n9918 9919 9920 0\n9921 9922 9923 0\n9924 9925 9926 0\n9927 9928 9929 0\n9930 9931 9932 0\n9933 9934 9935 0\n9936 9937 9938 0\n9939 9940 9941 0\n9942 9943 9944 0\n9945 9946 9947 0\n9948 9949 9950 0\n9951 9952 9953 0\n9954 9955 9956 0\n9957 9958 9959 0\n9960 9961 9962 0\n9963 9964 9965 0\n9966 9967 9968 0\n9969 9970 9971 0\n9972 9973 9974 0\n9975 9976 9977 0\n9978 9979 9980 0\n9981 9982 9983 0\n9984 9985 9986 0\n9987 9988 9989 0\n9990 9991 9992 0\n9993 9994 9995 0\n9996 9997 9998 0\n9999 10000 10001 0\n10002 10003 10004 0\n10005 10006 10007 0\n10008 10009 10010 0\n10011 10012 10013 0\n10014 10015 10016 0\n10017 10018 10019 0\n10020 10021 10022 0\n10023 10024 10025 0\n10026 10027 10028 0\n10029 10030 10031 0\n10032 10033 10034 0\n10035 10036 10037 0\n10038 10039 10040 0\n10041 10042 10043 0\n10044 10045 10046 0\n10047 10048 10049 0\n10050 10051 10052 0\n10053 10054 10055 0\n10056 10057 10058 0\n10059 10060 10061 0\n10062 10063 10064 0\n10065 10066 10067 0\n10068 10069 10070 0\n10071 10072 10073 0\n10074 10075 10076 0\n10077 10078 10079 0\n10080 10081 10082 0\n10083 10084 10085 0\n10086 10087 10088 0\n10089 10090 10091 0\n10092 10093 10094 0\n10095 10096 10097 0\n10098 10099 10100 0\n10101 10102 10103 0\n10104 10105 10106 0\n10107 10108 10109 0\n10110 10111 10112 0\n10113 10114 10115 0\n10116 10117 10118 0\n10119 10120 10121 0\n10122 10123 10124 0\n10125 10126 10127 0\n10128 10129 10130 0\n10131 10132 10133 0\n10134 10135 10136 0\n10137 10138 10139 0\n10140 10141 10142 0\n10143 10144 10145 0\n10146 10147 10148 0\n10149 10150 10151 0\n10152 10153 10154 0\n10155 10156 10157 0\n10158 10159 10160 0\n10161 10162 10163 0\n10164 10165 10166 0\n10167 10168 10169 0\n10170 10171 10172 0\n10173 10174 10175 0\n10176 10177 10178 0\n10179 10180 10181 0\n10182 10183 10184 0\n10185 10186 10187 0\n10188 10189 10190 0\n10191 10192 10193 0\n10194 10195 10196 0\n10197 10198 10199 0\n10200 10201 10202 0\n10203 10204 10205 0\n10206 10207 10208 0\n10209 10210 10211 0\n10212 10213 10214 0\n10215 10216 10217 0\n10218 10219 10220 0\n10221 10222 10223 0\n10224 10225 10226 0\n10227 10228 10229 0\n10230 10231 10232 0\n10233 10234 10235 0\n10236 10237 10238 0\n10239 10240 10241 0\n10242 10243 10244 0\n10245 10246 10247 0\n10248 10249 10250 0\n10251 10252 10253 0\n10254 10255 10256 0\n10257 10258 10259 0\n10260 10261 10262 0\n10263 10264 10265 0\n10266 10267 10268 0\n10269 10270 10271 0\n10272 10273 10274 0\n10275 10276 10277 0\n10278 10279 10280 0\n10281 10282 10283 0\n10284 10285 10286 0\n10287 10288 10289 0\n10290 10291 10292 0\n10293 10294 10295 0\n10296 10297 10298 0\n10299 10300 10301 0\n10302 10303 10304 0\n10305 10306 10307 0\n10308 10309 10310 0\n10311 10312 10313 0\n10314 10315 10316 0\n10317 10318 10319 0\n10320 10321 10322 0\n10323 10324 10325 0\n10326 10327 10328 0\n10329 10330 10331 0\n10332 10333 10334 0\n10335 10336 10337 0\n10338 10339 10340 0\n10341 10342 10343 0\n10344 10345 10346 0\n10347 10348 10349 0\n10350 10351 10352 0\n10353 10354 10355 0\n10356 10357 10358 0\n10359 10360 10361 0\n10362 10363 10364 0\n10365 10366 10367 0\n10368 10369 10370 0\n10371 10372 10373 0\n10374 10375 10376 0\n10377 10378 10379 0\n10380 10381 10382 0\n10383 10384 10385 0\n10386 10387 10388 0\n10389 10390 10391 0\n10392 10393 10394 0\n10395 10396 10397 0\n10398 10399 10400 0\n10401 10402 10403 0\n10404 10405 10406 0\n10407 10408 10409 0\n10410 10411 10412 0\n10413 10414 10415 0\n10416 10417 10418 0\n10419 10420 10421 0\n10422 10423 10424 0\n10425 10426 10427 0\n10428 10429 10430 0\n10431 10432 10433 0\n10434 10435 10436 0\n10437 10438 10439 0\n10440 10441 10442 0\n10443 10444 10445 0\n10446 10447 10448 0\n10449 10450 10451 0\n10452 10453 10454 0\n10455 10456 10457 0\n10458 10459 10460 0\n10461 10462 10463 0\n10464 10465 10466 0\n10467 10468 10469 0\n10470 10471 10472 0\n10473 10474 10475 0\n10476 10477 10478 0\n10479 10480 10481 0\n10482 10483 10484 0\n10485 10486 10487 0\n10488 10489 10490 0\n10491 10492 10493 0\n10494 10495 10496 0\n10497 10498 10499 0\n10500 10501 10502 0\n10503 10504 10505 0\n10506 10507 10508 0\n10509 10510 10511 0\n10512 10513 10514 0\n10515 10516 10517 0\n10518 10519 10520 0\n10521 10522 10523 0\n10524 10525 10526 0\n10527 10528 10529 0\n10530 10531 10532 0\n10533 10534 10535 0\n10536 10537 10538 0\n10539 10540 10541 0\n10542 10543 10544 0\n10545 10546 10547 0\n10548 10549 10550 0\n10551 10552 10553 0\n10554 10555 10556 0\n10557 10558 10559 0\n10560 10561 10562 0\n10563 10564 10565 0\n10566 10567 10568 0\n10569 10570 10571 0\n10572 10573 10574 0\n10575 10576 10577 0\n10578 10579 10580 0\n10581 10582 10583 0\n10584 10585 10586 0\n10587 10588 10589 0\n10590 10591 10592 0\n10593 10594 10595 0\n10596 10597 10598 0\n10599 10600 10601 0\n10602 10603 10604 0\n10605 10606 10607 0\n10608 10609 10610 0\n10611 10612 10613 0\n10614 10615 10616 0\n10617 10618 10619 0\n10620 10621 10622 0\n10623 10624 10625 0\n10626 10627 10628 0\n10629 10630 10631 0\n10632 10633 10634 0\n10635 10636 10637 0\n10638 10639 10640 0\n10641 10642 10643 0\n10644 10645 10646 0\n10647 10648 10649 0\n10650 10651 10652 0\n10653 10654 10655 0\n10656 10657 10658 0\n10659 10660 10661 0\n10662 10663 10664 0\n10665 10666 10667 0\n10668 10669 10670 0\n10671 10672 10673 0\n10674 10675 10676 0\n10677 10678 10679 0\n10680 10681 10682 0\n10683 10684 10685 0\n10686 10687 10688 0\n10689 10690 10691 0\n10692 10693 10694 0\n10695 10696 10697 0\n10698 10699 10700 0\n10701 10702 10703 0\n10704 10705 10706 0\n10707 10708 10709 0\n10710 10711 10712 0\n10713 10714 10715 0\n10716 10717 10718 0\n10719 10720 10721 0\n10722 10723 10724 0\n10725 10726 10727 0\n10728 10729 10730 0\n10731 10732 10733 0\n10734 10735 10736 0\n10737 10738 10739 0\n10740 10741 10742 0\n10743 10744 10745 0\n10746 10747 10748 0\n10749 10750 10751 0\n10752 10753 10754 0\n10755 10756 10757 0\n10758 10759 10760 0\n10761 10762 10763 0\n10764 10765 10766 0\n10767 10768 10769 0\n10770 10771 10772 0\n10773 10774 10775 0\n10776 10777 10778 0\n10779 10780 10781 0\n10782 10783 10784 0\n10785 10786 10787 0\n10788 10789 10790 0\n10791 10792 10793 0\n10794 10795 10796 0\n10797 10798 10799 0\n10800 10801 10802 0\n10803 10804 10805 0\n10806 10807 10808 0\n10809 10810 10811 0\n10812 10813 10814 0\n10815 10816 10817 0\n10818 10819 10820 0\n10821 10822 10823 0\n10824 10825 10826 0\n10827 10828 10829 0\n10830 10831 10832 0\n10833 10834 10835 0\n10836 10837 10838 0\n10839 10840 10841 0\n10842 10843 10844 0\n10845 10846 10847 0\n10848 10849 10850 0\n10851 10852 10853 0\n10854 10855 10856 0\n10857 10858 10859 0\n10860 10861 10862 0\n10863 10864 10865 0\n10866 10867 10868 0\n10869 10870 10871 0\n10872 10873 10874 0\n10875 10876 10877 0\n10878 10879 10880 0\n10881 10882 10883 0\n10884 10885 10886 0\n10887 10888 10889 0\n10890 10891 10892 0\n10893 10894 10895 0\n10896 10897 10898 0\n10899 10900 10901 0\n10902 10903 10904 0\n10905 10906 10907 0\n10908 10909 10910 0\n10911 10912 10913 0\n10914 10915 10916 0\n10917 10918 10919 0\n10920 10921 10922 0\n10923 10924 10925 0\n10926 10927 10928 0\n10929 10930 10931 0\n10932 10933 10934 0\n10935 10936 10937 0\n10938 10939 10940 0\n10941 10942 10943 0\n10944 10945 10946 0\n10947 10948 10949 0\n10950 10951 10952 0\n10953 10954 10955 0\n10956 10957 10958 0\n10959 10960 10961 0\n10962 10963 10964 0\n10965 10966 10967 0\n10968 10969 10970 0\n10971 10972 10973 0\n10974 10975 10976 0\n10977 10978 10979 0\n10980 10981 10982 0\n10983 10984 10985 0\n10986 10987 10988 0\n10989 10990 10991 0\n10992 10993 10994 0\n10995 10996 10997 0\n10998 10999 11000 0\n11001 11002 11003 0\n11004 11005 11006 0\n11007 11008 11009 0\n11010 11011 11012 0\n11013 11014 11015 0\n11016 11017 11018 0\n11019 11020 11021 0\n11022 11023 11024 0\n11025 11026 11027 0\n11028 11029 11030 0\n11031 11032 11033 0\n11034 11035 11036 0\n11037 11038 11039 0\n11040 11041 11042 0\n11043 11044 11045 0\n11046 11047 11048 0\n11049 11050 11051 0\n11052 11053 11054 0\n11055 11056 11057 0\n11058 11059 11060 0\n11061 11062 11063 0\n11064 11065 11066 0\n11067 11068 11069 0\n11070 11071 11072 0\n11073 11074 11075 0\n11076 11077 11078 0\n11079 11080 11081 0\n11082 11083 11084 0\n11085 11086 11087 0\n11088 11089 11090 0\n11091 11092 11093 0\n11094 11095 11096 0\n11097 11098 11099 0\n11100 11101 11102 0\n11103 11104 11105 0\n11106 11107 11108 0\n11109 11110 11111 0\n11112 11113 11114 0\n11115 11116 11117 0\n11118 11119 11120 0\n11121 11122 11123 0\n11124 11125 11126 0\n11127 11128 11129 0\n11130 11131 11132 0\n11133 11134 11135 0\n11136 11137 11138 0\n11139 11140 11141 0\n11142 11143 11144 0\n11145 11146 11147 0\n11148 11149 11150 0\n11151 11152 11153 0\n11154 11155 11156 0\n11157 11158 11159 0\n11160 11161 11162 0\n11163 11164 11165 0\n11166 11167 11168 0\n11169 11170 11171 0\n11172 11173 11174 0\n11175 11176 11177 0\n11178 11179 11180 0\n11181 11182 11183 0\n11184 11185 11186 0\n11187 11188 11189 0\n11190 11191 11192 0\n11193 11194 11195 0\n11196 11197 11198 0\n11199 11200 11201 0\n11202 11203 11204 0\n11205 11206 11207 0\n11208 11209 11210 0\n11211 11212 11213 0\n11214 11215 11216 0\n11217 11218 11219 0\n11220 11221 11222 0\n11223 11224 11225 0\n11226 11227 11228 0\n11229 11230 11231 0\n11232 11233 11234 0\n11235 11236 11237 0\n11238 11239 11240 0\n11241 11242 11243 0\n11244 11245 11246 0\n11247 11248 11249 0\n11250 11251 11252 0\n11253 11254 11255 0\n11256 11257 11258 0\n11259 11260 11261 0\n11262 11263 11264 0\n11265 11266 11267 0\n11268 11269 11270 0\n11271 11272 11273 0\n11274 11275 11276 0\n11277 11278 11279 0\n11280 11281 11282 0\n11283 11284 11285 0\n11286 11287 11288 0\n11289 11290 11291 0\n11292 11293 11294 0\n11295 11296 11297 0\n11298 11299 11300 0\n11301 11302 11303 0\n11304 11305 11306 0\n11307 11308 11309 0\n11310 11311 11312 0\n11313 11314 11315 0\n11316 11317 11318 0\n11319 11320 11321 0\n11322 11323 11324 0\n11325 11326 11327 0\n11328 11329 11330 0\n11331 11332 11333 0\n11334 11335 11336 0\n11337 11338 11339 0\n11340 11341 11342 0\n11343 11344 11345 0\n11346 11347 11348 0\n11349 11350 11351 0\n11352 11353 11354 0\n11355 11356 11357 0\n11358 11359 11360 0\n11361 11362 11363 0\n11364 11365 11366 0\n11367 11368 11369 0\n11370 11371 11372 0\n11373 11374 11375 0\n11376 11377 11378 0\n11379 11380 11381 0\n11382 11383 11384 0\n11385 11386 11387 0\n11388 11389 11390 0\n11391 11392 11393 0\n11394 11395 11396 0\n11397 11398 11399 0\n11400 11401 11402 0\n11403 11404 11405 0\n11406 11407 11408 0\n11409 11410 11411 0\n11412 11413 11414 0\n11415 11416 11417 0\n11418 11419 11420 0\n11421 11422 11423 0\n11424 11425 11426 0\n11427 11428 11429 0\n11430 11431 11432 0\n11433 11434 11435 0\n11436 11437 11438 0\n11439 11440 11441 0\n11442 11443 11444 0\n11445 11446 11447 0\n11448 11449 11450 0\n11451 11452 11453 0\n11454 11455 11456 0\n11457 11458 11459 0\n11460 11461 11462 0\n11463 11464 11465 0\n11466 11467 11468 0\n11469 11470 11471 0\n11472 11473 11474 0\n11475 11476 11477 0\n11478 11479 11480 0\n11481 11482 11483 0\n11484 11485 11486 0\n11487 11488 11489 0\n11490 11491 11492 0\n11493 11494 11495 0\n11496 11497 11498 0\n11499 11500 11501 0\n11502 11503 11504 0\n11505 11506 11507 0\n11508 11509 11510 0\n11511 11512 11513 0\n11514 11515 11516 0\n11517 11518 11519 0\n11520 11521 11522 0\n11523 11524 11525 0\n11526 11527 11528 0\n11529 11530 11531 0\n11532 11533 11534 0\n11535 11536 11537 0\n11538 11539 11540 0\n11541 11542 11543 0\n11544 11545 11546 0\n11547 11548 11549 0\n11550 11551 11552 0\n11553 11554 11555 0\n11556 11557 11558 0\n11559 11560 11561 0\n11562 11563 11564 0\n11565 11566 11567 0\n11568 11569 11570 0\n11571 11572 11573 0\n11574 11575 11576 0\n11577 11578 11579 0\n11580 11581 11582 0\n11583 11584 11585 0\n11586 11587 11588 0\n11589 11590 11591 0\n11592 11593 11594 0\n11595 11596 11597 0\n11598 11599 11600 0\n11601 11602 11603 0\n11604 11605 11606 0\n11607 11608 11609 0\n11610 11611 11612 0\n11613 11614 11615 0\n11616 11617 11618 0\n11619 11620 11621 0\n11622 11623 11624 0\n11625 11626 11627 0\n11628 11629 11630 0\n11631 11632 11633 0\n11634 11635 11636 0\n11637 11638 11639 0\n11640 11641 11642 0\n11643 11644 11645 0\n11646 11647 11648 0\n11649 11650 11651 0\n11652 11653 11654 0\n11655 11656 11657 0\n11658 11659 11660 0\n11661 11662 11663 0\n11664 11665 11666 0\n11667 11668 11669 0\n11670 11671 11672 0\n11673 11674 11675 0\n11676 11677 11678 0\n11679 11680 11681 0\n11682 11683 11684 0\n11685 11686 11687 0\n11688 11689 11690 0\n11691 11692 11693 0\n11694 11695 11696 0\n11697 11698 11699 0\n11700 11701 11702 0\n11703 11704 11705 0\n11706 11707 11708 0\n11709 11710 11711 0\n11712 11713 11714 0\n11715 11716 11717 0\n11718 11719 11720 0\n11721 11722 11723 0\n11724 11725 11726 0\n11727 11728 11729 0\n11730 11731 11732 0\n11733 11734 11735 0\n11736 11737 11738 0\n11739 11740 11741 0\n11742 11743 11744 0\n11745 11746 11747 0\n11748 11749 11750 0\n11751 11752 11753 0\n11754 11755 11756 0\n11757 11758 11759 0\n11760 11761 11762 0\n11763 11764 11765 0\n11766 11767 11768 0\n11769 11770 11771 0\n11772 11773 11774 0\n11775 11776 11777 0\n11778 11779 11780 0\n11781 11782 11783 0\n11784 11785 11786 0\n11787 11788 11789 0\n11790 11791 11792 0\n11793 11794 11795 0\n11796 11797 11798 0\n11799 11800 11801 0\n11802 11803 11804 0\n11805 11806 11807 0\n11808 11809 11810 0\n11811 11812 11813 0\n11814 11815 11816 0\n11817 11818 11819 0\n11820 11821 11822 0\n11823 11824 11825 0\n11826 11827 11828 0\n11829 11830 11831 0\n11832 11833 11834 0\n11835 11836 11837 0\n11838 11839 11840 0\n11841 11842 11843 0\n11844 11845 11846 0\n11847 11848 11849 0\n11850 11851 11852 0\n11853 11854 11855 0\n11856 11857 11858 0\n11859 11860 11861 0\n11862 11863 11864 0\n11865 11866 11867 0\n11868 11869 11870 0\n11871 11872 11873 0\n11874 11875 11876 0\n11877 11878 11879 0\n11880 11881 11882 0\n11883 11884 11885 0\n11886 11887 11888 0\n11889 11890 11891 0\n11892 11893 11894 0\n11895 11896 11897 0\n11898 11899 11900 0\n11901 11902 11903 0\n11904 11905 11906 0\n11907 11908 11909 0\n11910 11911 11912 0\n11913 11914 11915 0\n11916 11917 11918 0\n11919 11920 11921 0\n11922 11923 11924 0\n11925 11926 11927 0\n11928 11929 11930 0\n11931 11932 11933 0\n11934 11935 11936 0\n11937 11938 11939 0\n11940 11941 11942 0\n11943 11944 11945 0\n11946 11947 11948 0\n11949 11950 11951 0\n11952 11953 11954 0\n11955 11956 11957 0\n11958 11959 11960 0\n11961 11962 11963 0\n11964 11965 11966 0\n11967 11968 11969 0\n11970 11971 11972 0\n11973 11974 11975 0\n11976 11977 11978 0\n11979 11980 11981 0\n11982 11983 11984 0\n11985 11986 11987 0\n11988 11989 11990 0\n11991 11992 11993 0\n11994 11995 11996 0\n11997 11998 11999 0\n12000 12001 12002 0\n12003 12004 12005 0\n12006 12007 12008 0\n12009 12010 12011 0\n12012 12013 12014 0\n12015 12016 12017 0\n12018 12019 12020 0\n12021 12022 12023 0\n12024 12025 12026 0\n12027 12028 12029 0\n12030 12031 12032 0\n12033 12034 12035 0\n12036 12037 12038 0\n12039 12040 12041 0\n12042 12043 12044 0\n12045 12046 12047 0\n12048 12049 12050 0\n12051 12052 12053 0\n12054 12055 12056 0\n12057 12058 12059 0\n12060 12061 12062 0\n12063 12064 12065 0\n12066 12067 12068 0\n12069 12070 12071 0\n12072 12073 12074 0\n12075 12076 12077 0\n12078 12079 12080 0\n12081 12082 12083 0\n12084 12085 12086 0\n12087 12088 12089 0\n12090 12091 12092 0\n12093 12094 12095 0\n12096 12097 12098 0\n12099 12100 12101 0\n12102 12103 12104 0\n12105 12106 12107 0\n12108 12109 12110 0\n12111 12112 12113 0\n12114 12115 12116 0\n12117 12118 12119 0\n12120 12121 12122 0\n12123 12124 12125 0\n12126 12127 12128 0\n12129 12130 12131 0\n12132 12133 12134 0\n12135 12136 12137 0\n12138 12139 12140 0\n12141 12142 12143 0\n12144 12145 12146 0\n12147 12148 12149 0\n12150 12151 12152 0\n12153 12154 12155 0\n12156 12157 12158 0\n12159 12160 12161 0\n12162 12163 12164 0\n12165 12166 12167 0\n12168 12169 12170 0\n12171 12172 12173 0\n12174 12175 12176 0\n12177 12178 12179 0\n12180 12181 12182 0\n12183 12184 12185 0\n12186 12187 12188 0\n12189 12190 12191 0\n12192 12193 12194 0\n12195 12196 12197 0\n12198 12199 12200 0\n12201 12202 12203 0\n12204 12205 12206 0\n12207 12208 12209 0\n12210 12211 12212 0\n12213 12214 12215 0\n12216 12217 12218 0\n12219 12220 12221 0\n12222 12223 12224 0\n12225 12226 12227 0\n12228 12229 12230 0\n12231 12232 12233 0\n12234 12235 12236 0\n12237 12238 12239 0\n12240 12241 12242 0\n12243 12244 12245 0\n12246 12247 12248 0\n12249 12250 12251 0\n12252 12253 12254 0\n12255 12256 12257 0\n12258 12259 12260 0\n12261 12262 12263 0\n12264 12265 12266 0\n12267 12268 12269 0\n12270 12271 12272 0\n12273 12274 12275 0\n12276 12277 12278 0\n12279 12280 12281 0\n12282 12283 12284 0\n12285 12286 12287 0\n12288 12289 12290 0\n12291 12292 12293 0\n12294 12295 12296 0\n12297 12298 12299 0\n12300 12301 12302 0\n12303 12304 12305 0\n12306 12307 12308 0\n12309 12310 12311 0\n12312 12313 12314 0\n12315 12316 12317 0\n12318 12319 12320 0\n12321 12322 12323 0\n12324 12325 12326 0\n12327 12328 12329 0\n12330 12331 12332 0\n12333 12334 12335 0\n12336 12337 12338 0\n12339 12340 12341 0\n12342 12343 12344 0\n12345 12346 12347 0\n12348 12349 12350 0\n12351 12352 12353 0\n12354 12355 12356 0\n12357 12358 12359 0\n12360 12361 12362 0\n12363 12364 12365 0\n12366 12367 12368 0\n12369 12370 12371 0\n12372 12373 12374 0\n12375 12376 12377 0\n12378 12379 12380 0\n12381 12382 12383 0\n12384 12385 12386 0\n12387 12388 12389 0\n12390 12391 12392 0\n12393 12394 12395 0\n12396 12397 12398 0\n12399 12400 12401 0\n12402 12403 12404 0\n12405 12406 12407 0\n12408 12409 12410 0\n12411 12412 12413 0\n12414 12415 12416 0\n12417 12418 12419 0\n12420 12421 12422 0\n12423 12424 12425 0\n12426 12427 12428 0\n12429 12430 12431 0\n12432 12433 12434 0\n12435 12436 12437 0\n12438 12439 12440 0\n12441 12442 12443 0\n12444 12445 12446 0\n12447 12448 12449 0\n12450 12451 12452 0\n12453 12454 12455 0\n12456 12457 12458 0\n12459 12460 12461 0\n12462 12463 12464 0\n12465 12466 12467 0\n12468 12469 12470 0\n12471 12472 12473 0\n12474 12475 12476 0\n12477 12478 12479 0\n12480 12481 12482 0\n12483 12484 12485 0\n12486 12487 12488 0\n12489 12490 12491 0\n12492 12493 12494 0\n12495 12496 12497 0\n12498 12499 12500 0\n12501 12502 12503 0\n12504 12505 12506 0\n12507 12508 12509 0\n12510 12511 12512 0\n12513 12514 12515 0\n12516 12517 12518 0\n12519 12520 12521 0\n12522 12523 12524 0\n12525 12526 12527 0\n12528 12529 12530 0\n12531 12532 12533 0\n12534 12535 12536 0\n12537 12538 12539 0\n12540 12541 12542 0\n12543 12544 12545 0\n12546 12547 12548 0\n12549 12550 12551 0\n12552 12553 12554 0\n12555 12556 12557 0\n12558 12559 12560 0\n12561 12562 12563 0\n12564 12565 12566 0\n12567 12568 12569 0\n12570 12571 12572 0\n12573 12574 12575 0\n12576 12577 12578 0\n12579 12580 12581 0\n12582 12583 12584 0\n12585 12586 12587 0\n12588 12589 12590 0\n12591 12592 12593 0\n12594 12595 12596 0\n12597 12598 12599 0\n12600 12601 12602 0\n12603 12604 12605 0\n12606 12607 12608 0\n12609 12610 12611 0\n12612 12613 12614 0\n12615 12616 12617 0\n12618 12619 12620 0\n12621 12622 12623 0\n12624 12625 12626 0\n12627 12628 12629 0\n12630 12631 12632 0\n12633 12634 12635 0\n12636 12637 12638 0\n12639 12640 12641 0\n12642 12643 12644 0\n12645 12646 12647 0\n12648 12649 12650 0\n12651 12652 12653 0\n12654 12655 12656 0\n12657 12658 12659 0\n12660 12661 12662 0\n12663 12664 12665 0\n12666 12667 12668 0\n12669 12670 12671 0\n12672 12673 12674 0\n12675 12676 12677 0\n12678 12679 12680 0\n12681 12682 12683 0\n12684 12685 12686 0\n12687 12688 12689 0\n12690 12691 12692 0\n12693 12694 12695 0\n12696 12697 12698 0\n12699 12700 12701 0\n12702 12703 12704 0\n12705 12706 12707 0\n12708 12709 12710 0\n12711 12712 12713 0\n12714 12715 12716 0\n12717 12718 12719 0\n12720 12721 12722 0\n12723 12724 12725 0\n12726 12727 12728 0\n12729 12730 12731 0\n12732 12733 12734 0\n12735 12736 12737 0\n12738 12739 12740 0\n12741 12742 12743 0\n12744 12745 12746 0\n12747 12748 12749 0\n12750 12751 12752 0\n12753 12754 12755 0\n12756 12757 12758 0\n12759 12760 12761 0\n12762 12763 12764 0\n12765 12766 12767 0\n12768 12769 12770 0\n12771 12772 12773 0\n12774 12775 12776 0\n12777 12778 12779 0\n12780 12781 12782 0\n12783 12784 12785 0\n12786 12787 12788 0\n12789 12790 12791 0\n12792 12793 12794 0\n12795 12796 12797 0\n12798 12799 12800 0\n12801 12802 12803 0\n12804 12805 12806 0\n12807 12808 12809 0\n12810 12811 12812 0\n12813 12814 12815 0\n12816 12817 12818 0\n12819 12820 12821 0\n12822 12823 12824 0\n12825 12826 12827 0\n12828 12829 12830 0\n12831 12832 12833 0\n12834 12835 12836 0\n12837 12838 12839 0\n12840 12841 12842 0\n12843 12844 12845 0\n12846 12847 12848 0\n12849 12850 12851 0\n12852 12853 12854 0\n12855 12856 12857 0\n12858 12859 12860 0\n12861 12862 12863 0\n12864 12865 12866 0\n12867 12868 12869 0\n12870 12871 12872 0\n12873 12874 12875 0\n12876 12877 12878 0\n12879 12880 12881 0\n12882 12883 12884 0\n12885 12886 12887 0\n12888 12889 12890 0\n12891 12892 12893 0\n12894 12895 12896 0\n12897 12898 12899 0\n12900 12901 12902 0\n12903 12904 12905 0\n12906 12907 12908 0\n12909 12910 12911 0\n12912 12913 12914 0\n12915 12916 12917 0\n12918 12919 12920 0\n12921 12922 12923 0\n12924 12925 12926 0\n12927 12928 12929 0\n12930 12931 12932 0\n12933 12934 12935 0\n12936 12937 12938 0\n12939 12940 12941 0\n12942 12943 12944 0\n12945 12946 12947 0\n12948 12949 12950 0\n12951 12952 12953 0\n12954 12955 12956 0\n12957 12958 12959 0\n12960 12961 12962 0\n12963 12964 12965 0\n12966 12967 12968 0\n12969 12970 12971 0\n12972 12973 12974 0\n12975 12976 12977 0\n12978 12979 12980 0\n12981 12982 12983 0\n12984 12985 12986 0\n12987 12988 12989 0\n12990 12991 12992 0\n12993 12994 12995 0\n12996 12997 12998 0\n12999 13000 13001 0\n13002 13003 13004 0\n13005 13006 13007 0\n13008 13009 13010 0\n13011 13012 13013 0\n13014 13015 13016 0\n13017 13018 13019 0\n13020 13021 13022 0\n13023 13024 13025 0\n13026 13027 13028 0\n13029 13030 13031 0\n13032 13033 13034 0\n13035 13036 13037 0\n13038 13039 13040 0\n13041 13042 13043 0\n13044 13045 13046 0\n13047 13048 13049 0\n13050 13051 13052 0\n13053 13054 13055 0\n13056 13057 13058 0\n13059 13060 13061 0\n13062 13063 13064 0\n13065 13066 13067 0\n13068 13069 13070 0\n13071 13072 13073 0\n13074 13075 13076 0\n13077 13078 13079 0\n13080 13081 13082 0\n13083 13084 13085 0\n13086 13087 13088 0\n13089 13090 13091 0\n13092 13093 13094 0\n13095 13096 13097 0\n13098 13099 13100 0\n13101 13102 13103 0\n13104 13105 13106 0\n13107 13108 13109 0\n13110 13111 13112 0\n13113 13114 13115 0\n13116 13117 13118 0\n13119 13120 13121 0\n13122 13123 13124 0\n13125 13126 13127 0\n13128 13129 13130 0\n13131 13132 13133 0\n13134 13135 13136 0\n13137 13138 13139 0\n13140 13141 13142 0\n13143 13144 13145 0\n13146 13147 13148 0\n13149 13150 13151 0\n13152 13153 13154 0\n13155 13156 13157 0\n13158 13159 13160 0\n13161 13162 13163 0\n13164 13165 13166 0\n13167 13168 13169 0\n13170 13171 13172 0\n13173 13174 13175 0\n13176 13177 13178 0\n13179 13180 13181 0\n13182 13183 13184 0\n13185 13186 13187 0\n13188 13189 13190 0\n13191 13192 13193 0\n13194 13195 13196 0\n13197 13198 13199 0\n13200 13201 13202 0\n13203 13204 13205 0\n13206 13207 13208 0\n13209 13210 13211 0\n13212 13213 13214 0\n13215 13216 13217 0\n13218 13219 13220 0\n13221 13222 13223 0\n13224 13225 13226 0\n13227 13228 13229 0\n13230 13231 13232 0\n13233 13234 13235 0\n13236 13237 13238 0\n13239 13240 13241 0\n13242 13243 13244 0\n13245 13246 13247 0\n13248 13249 13250 0\n13251 13252 13253 0\n13254 13255 13256 0\n13257 13258 13259 0\n13260 13261 13262 0\n13263 13264 13265 0\n13266 13267 13268 0\n13269 13270 13271 0\n13272 13273 13274 0\n13275 13276 13277 0\n13278 13279 13280 0\n13281 13282 13283 0\n13284 13285 13286 0\n13287 13288 13289 0\n13290 13291 13292 0\n13293 13294 13295 0\n13296 13297 13298 0\n13299 13300 13301 0\n13302 13303 13304 0\n13305 13306 13307 0\n13308 13309 13310 0\n13311 13312 13313 0\n13314 13315 13316 0\n13317 13318 13319 0\n13320 13321 13322 0\n13323 13324 13325 0\n13326 13327 13328 0\n13329 13330 13331 0\n13332 13333 13334 0\n13335 13336 13337 0\n13338 13339 13340 0\n13341 13342 13343 0\n13344 13345 13346 0\n13347 13348 13349 0\n13350 13351 13352 0\n13353 13354 13355 0\n13356 13357 13358 0\n13359 13360 13361 0\n13362 13363 13364 0\n13365 13366 13367 0\n13368 13369 13370 0\n13371 13372 13373 0\n13374 13375 13376 0\n13377 13378 13379 0\n13380 13381 13382 0\n13383 13384 13385 0\n13386 13387 13388 0\n13389 13390 13391 0\n13392 13393 13394 0\n13395 13396 13397 0\n13398 13399 13400 0\n13401 13402 13403 0\n13404 13405 13406 0\n13407 13408 13409 0\n13410 13411 13412 0\n13413 13414 13415 0\n13416 13417 13418 0\n13419 13420 13421 0\n13422 13423 13424 0\n13425 13426 13427 0\n13428 13429 13430 0\n13431 13432 13433 0\n13434 13435 13436 0\n13437 13438 13439 0\n13440 13441 13442 0\n13443 13444 13445 0\n13446 13447 13448 0\n13449 13450 13451 0\n13452 13453 13454 0\n13455 13456 13457 0\n13458 13459 13460 0\n13461 13462 13463 0\n13464 13465 13466 0\n13467 13468 13469 0\n13470 13471 13472 0\n13473 13474 13475 0\n13476 13477 13478 0\n13479 13480 13481 0\n13482 13483 13484 0\n13485 13486 13487 0\n13488 13489 13490 0\n13491 13492 13493 0\n13494 13495 13496 0\n13497 13498 13499 0\n13500 13501 13502 0\n13503 13504 13505 0\n13506 13507 13508 0\n13509 13510 13511 0\n13512 13513 13514 0\n13515 13516 13517 0\n13518 13519 13520 0\n13521 13522 13523 0\n13524 13525 13526 0\n13527 13528 13529 0\n13530 13531 13532 0\n13533 13534 13535 0\n13536 13537 13538 0\n13539 13540 13541 0\n13542 13543 13544 0\n13545 13546 13547 0\n13548 13549 13550 0\n13551 13552 13553 0\n13554 13555 13556 0\n13557 13558 13559 0\n13560 13561 13562 0\n13563 13564 13565 0\n13566 13567 13568 0\n13569 13570 13571 0\n13572 13573 13574 0\n13575 13576 13577 0\n13578 13579 13580 0\n13581 13582 13583 0\n13584 13585 13586 0\n13587 13588 13589 0\n13590 13591 13592 0\n13593 13594 13595 0\n13596 13597 13598 0\n13599 13600 13601 0\n13602 13603 13604 0\n13605 13606 13607 0\n13608 13609 13610 0\n13611 13612 13613 0\n13614 13615 13616 0\n13617 13618 13619 0\n13620 13621 13622 0\n13623 13624 13625 0\n13626 13627 13628 0\n13629 13630 13631 0\n13632 13633 13634 0\n13635 13636 13637 0\n13638 13639 13640 0\n13641 13642 13643 0\n13644 13645 13646 0\n13647 13648 13649 0\n13650 13651 13652 0\n13653 13654 13655 0\n13656 13657 13658 0\n13659 13660 13661 0\n13662 13663 13664 0\n13665 13666 13667 0\n13668 13669 13670 0\n13671 13672 13673 0\n13674 13675 13676 0\n13677 13678 13679 0\n13680 13681 13682 0\n13683 13684 13685 0\n13686 13687 13688 0\n13689 13690 13691 0\n13692 13693 13694 0\n13695 13696 13697 0\n13698 13699 13700 0\n13701 13702 13703 0\n13704 13705 13706 0\n13707 13708 13709 0\n13710 13711 13712 0\n13713 13714 13715 0\n13716 13717 13718 0\n13719 13720 13721 0\n13722 13723 13724 0\n13725 13726 13727 0\n13728 13729 13730 0\n13731 13732 13733 0\n13734 13735 13736 0\n13737 13738 13739 0\n13740 13741 13742 0\n13743 13744 13745 0\n13746 13747 13748 0\n13749 13750 13751 0\n13752 13753 13754 0\n13755 13756 13757 0\n13758 13759 13760 0\n13761 13762 13763 0\n13764 13765 13766 0\n13767 13768 13769 0\n13770 13771 13772 0\n13773 13774 13775 0\n13776 13777 13778 0\n13779 13780 13781 0\n13782 13783 13784 0\n13785 13786 13787 0\n13788 13789 13790 0\n13791 13792 13793 0\n13794 13795 13796 0\n13797 13798 13799 0\n13800 13801 13802 0\n13803 13804 13805 0\n13806 13807 13808 0\n13809 13810 13811 0\n13812 13813 13814 0\n13815 13816 13817 0\n13818 13819 13820 0\n13821 13822 13823 0\n13824 13825 13826 0\n13827 13828 13829 0\n13830 13831 13832 0\n13833 13834 13835 0\n13836 13837 13838 0\n13839 13840 13841 0\n13842 13843 13844 0\n13845 13846 13847 0\n13848 13849 13850 0\n13851 13852 13853 0\n13854 13855 13856 0\n13857 13858 13859 0\n13860 13861 13862 0\n13863 13864 13865 0\n13866 13867 13868 0\n13869 13870 13871 0\n13872 13873 13874 0\n13875 13876 13877 0\n13878 13879 13880 0\n13881 13882 13883 0\n13884 13885 13886 0\n13887 13888 13889 0\n13890 13891 13892 0\n13893 13894 13895 0\n13896 13897 13898 0\n13899 13900 13901 0\n13902 13903 13904 0\n13905 13906 13907 0\n13908 13909 13910 0\n13911 13912 13913 0\n13914 13915 13916 0\n13917 13918 13919 0\n13920 13921 13922 0\n13923 13924 13925 0\n13926 13927 13928 0\n13929 13930 13931 0\n13932 13933 13934 0\n13935 13936 13937 0\n13938 13939 13940 0\n13941 13942 13943 0\n13944 13945 13946 0\n13947 13948 13949 0\n13950 13951 13952 0\n13953 13954 13955 0\n13956 13957 13958 0\n13959 13960 13961 0\n13962 13963 13964 0\n13965 13966 13967 0\n13968 13969 13970 0\n13971 13972 13973 0\n13974 13975 13976 0\n13977 13978 13979 0\n13980 13981 13982 0\n13983 13984 13985 0\n13986 13987 13988 0\n13989 13990 13991 0\n13992 13993 13994 0\n13995 13996 13997 0\n13998 13999 14000 0\n14001 14002 14003 0\n14004 14005 14006 0\n14007 14008 14009 0\n14010 14011 14012 0\n14013 14014 14015 0\n14016 14017 14018 0\n14019 14020 14021 0\n14022 14023 14024 0\n14025 14026 14027 0\n14028 14029 14030 0\n14031 14032 14033 0\n14034 14035 14036 0\n14037 14038 14039 0\n14040 14041 14042 0\n14043 14044 14045 0\n14046 14047 14048 0\n14049 14050 14051 0\n14052 14053 14054 0\n14055 14056 14057 0\n14058 14059 14060 0\n14061 14062 14063 0\n14064 14065 14066 0\n14067 14068 14069 0\n14070 14071 14072 0\n14073 14074 14075 0\n14076 14077 14078 0\n14079 14080 14081 0\n14082 14083 14084 0\n14085 14086 14087 0\n14088 14089 14090 0\n14091 14092 14093 0\n14094 14095 14096 0\n14097 14098 14099 0\n14100 14101 14102 0\n14103 14104 14105 0\n14106 14107 14108 0\n14109 14110 14111 0\n14112 14113 14114 0\n14115 14116 14117 0\n14118 14119 14120 0\n14121 14122 14123 0\n14124 14125 14126 0\n14127 14128 14129 0\n14130 14131 14132 0\n14133 14134 14135 0\n14136 14137 14138 0\n14139 14140 14141 0\n14142 14143 14144 0\n14145 14146 14147 0\n14148 14149 14150 0\n14151 14152 14153 0\n14154 14155 14156 0\n14157 14158 14159 0\n14160 14161 14162 0\n14163 14164 14165 0\n14166 14167 14168 0\n14169 14170 14171 0\n14172 14173 14174 0\n14175 14176 14177 0\n14178 14179 14180 0\n14181 14182 14183 0\n14184 14185 14186 0\n14187 14188 14189 0\n14190 14191 14192 0\n14193 14194 14195 0\n14196 14197 14198 0\n14199 14200 14201 0\n14202 14203 14204 0\n14205 14206 14207 0\n14208 14209 14210 0\n14211 14212 14213 0\n14214 14215 14216 0\n14217 14218 14219 0\n14220 14221 14222 0\n14223 14224 14225 0\n14226 14227 14228 0\n14229 14230 14231 0\n14232 14233 14234 0\n14235 14236 14237 0\n14238 14239 14240 0\n14241 14242 14243 0\n14244 14245 14246 0\n14247 14248 14249 0\n14250 14251 14252 0\n14253 14254 14255 0\n14256 14257 14258 0\n14259 14260 14261 0\n14262 14263 14264 0\n14265 14266 14267 0\n14268 14269 14270 0\n14271 14272 14273 0\n14274 14275 14276 0\n14277 14278 14279 0\n14280 14281 14282 0\n14283 14284 14285 0\n14286 14287 14288 0\n14289 14290 14291 0\n14292 14293 14294 0\n14295 14296 14297 0\n14298 14299 14300 0\n14301 14302 14303 0\n14304 14305 14306 0\n14307 14308 14309 0\n14310 14311 14312 0\n14313 14314 14315 0\n14316 14317 14318 0\n14319 14320 14321 0\n14322 14323 14324 0\n14325 14326 14327 0\n14328 14329 14330 0\n14331 14332 14333 0\n14334 14335 14336 0\n14337 14338 14339 0\n14340 14341 14342 0\n14343 14344 14345 0\n14346 14347 14348 0\n14349 14350 14351 0\n14352 14353 14354 0\n14355 14356 14357 0\n14358 14359 14360 0\n14361 14362 14363 0\n14364 14365 14366 0\n14367 14368 14369 0\n14370 14371 14372 0\n14373 14374 14375 0\n14376 14377 14378 0\n14379 14380 14381 0\n14382 14383 14384 0\n14385 14386 14387 0\n14388 14389 14390 0\n14391 14392 14393 0\n14394 14395 14396 0\n14397 14398 14399 0\n14400 14401 14402 0\n14403 14404 14405 0\n14406 14407 14408 0\n14409 14410 14411 0\n14412 14413 14414 0\n14415 14416 14417 0\n14418 14419 14420 0\n14421 14422 14423 0\n14424 14425 14426 0\n14427 14428 14429 0\n14430 14431 14432 0\n14433 14434 14435 0\n14436 14437 14438 0\n14439 14440 14441 0\n14442 14443 14444 0\n14445 14446 14447 0\n14448 14449 14450 0\n14451 14452 14453 0\n14454 14455 14456 0\n14457 14458 14459 0\n14460 14461 14462 0\n14463 14464 14465 0\n14466 14467 14468 0\n14469 14470 14471 0\n14472 14473 14474 0\n14475 14476 14477 0\n14478 14479 14480 0\n14481 14482 14483 0\n14484 14485 14486 0\n14487 14488 14489 0\n14490 14491 14492 0\n14493 14494 14495 0\n14496 14497 14498 0\n14499 14500 14501 0\n14502 14503 14504 0\n14505 14506 14507 0\n14508 14509 14510 0\n14511 14512 14513 0\n14514 14515 14516 0\n14517 14518 14519 0\n14520 14521 14522 0\n14523 14524 14525 0\n14526 14527 14528 0\n14529 14530 14531 0\n14532 14533 14534 0\n14535 14536 14537 0\n14538 14539 14540 0\n14541 14542 14543 0\n14544 14545 14546 0\n14547 14548 14549 0\n14550 14551 14552 0\n14553 14554 14555 0\n14556 14557 14558 0\n14559 14560 14561 0\n14562 14563 14564 0\n14565 14566 14567 0\n14568 14569 14570 0\n14571 14572 14573 0\n14574 14575 14576 0\n14577 14578 14579 0\n14580 14581 14582 0\n14583 14584 14585 0\n14586 14587 14588 0\n14589 14590 14591 0\n14592 14593 14594 0\n14595 14596 14597 0\n14598 14599 14600 0\n14601 14602 14603 0\n14604 14605 14606 0\n14607 14608 14609 0\n14610 14611 14612 0\n14613 14614 14615 0\n14616 14617 14618 0\n14619 14620 14621 0\n14622 14623 14624 0\n14625 14626 14627 0\n14628 14629 14630 0\n14631 14632 14633 0\n14634 14635 14636 0\n14637 14638 14639 0\n14640 14641 14642 0\n14643 14644 14645 0\n14646 14647 14648 0\n14649 14650 14651 0\n14652 14653 14654 0\n14655 14656 14657 0\n14658 14659 14660 0\n14661 14662 14663 0\n14664 14665 14666 0\n14667 14668 14669 0\n14670 14671 14672 0\n14673 14674 14675 0\n14676 14677 14678 0\n14679 14680 14681 0\n14682 14683 14684 0\n14685 14686 14687 0\n14688 14689 14690 0\n14691 14692 14693 0\n14694 14695 14696 0\n14697 14698 14699 0\n14700 14701 14702 0\n14703 14704 14705 0\n14706 14707 14708 0\n14709 14710 14711 0\n14712 14713 14714 0\n14715 14716 14717 0\n14718 14719 14720 0\n14721 14722 14723 0\n14724 14725 14726 0\n14727 14728 14729 0\n14730 14731 14732 0\n14733 14734 14735 0\n14736 14737 14738 0\n14739 14740 14741 0\n14742 14743 14744 0\n14745 14746 14747 0\n14748 14749 14750 0\n14751 14752 14753 0\n14754 14755 14756 0\n14757 14758 14759 0\n14760 14761 14762 0\n14763 14764 14765 0\n14766 14767 14768 0\n14769 14770 14771 0\n14772 14773 14774 0\n14775 14776 14777 0\n14778 14779 14780 0\n14781 14782 14783 0\n14784 14785 14786 0\n14787 14788 14789 0\n14790 14791 14792 0\n14793 14794 14795 0\n14796 14797 14798 0\n14799 14800 14801 0\n14802 14803 14804 0\n14805 14806 14807 0\n14808 14809 14810 0\n14811 14812 14813 0\n14814 14815 14816 0\n14817 14818 14819 0\n14820 14821 14822 0\n14823 14824 14825 0\n14826 14827 14828 0\n14829 14830 14831 0\n14832 14833 14834 0\n14835 14836 14837 0\n14838 14839 14840 0\n14841 14842 14843 0\n14844 14845 14846 0\n14847 14848 14849 0\n14850 14851 14852 0\n14853 14854 14855 0\n14856 14857 14858 0\n14859 14860 14861 0\n14862 14863 14864 0\n14865 14866 14867 0\n14868 14869 14870 0\n14871 14872 14873 0\n14874 14875 14876 0\n14877 14878 14879 0\n14880 14881 14882 0\n14883 14884 14885 0\n14886 14887 14888 0\n14889 14890 14891 0\n14892 14893 14894 0\n14895 14896 14897 0\n14898 14899 14900 0\n14901 14902 14903 0\n14904 14905 14906 0\n14907 14908 14909 0\n14910 14911 14912 0\n14913 14914 14915 0\n14916 14917 14918 0\n14919 14920 14921 0\n14922 14923 14924 0\n14925 14926 14927 0\n14928 14929 14930 0\n14931 14932 14933 0\n14934 14935 14936 0\n14937 14938 14939 0\n14940 14941 14942 0\n14943 14944 14945 0\n14946 14947 14948 0\n14949 14950 14951 0\n14952 14953 14954 0\n14955 14956 14957 0\n14958 14959 14960 0\n14961 14962 14963 0\n14964 14965 14966 0\n14967 14968 14969 0\n14970 14971 14972 0\n14973 14974 14975 0\n14976 14977 14978 0\n14979 14980 14981 0\n14982 14983 14984 0\n14985 14986 14987 0\n14988 14989 14990 0\n14991 14992 14993 0\n14994 14995 14996 0\n14997 14998 14999 0\n15000 15001 15002 0\n15003 15004 15005 0\n15006 15007 15008 0\n15009 15010 15011 0\n15012 15013 15014 0\n15015 15016 15017 0\n15018 15019 15020 0\n15021 15022 15023 0\n15024 15025 15026 0\n15027 15028 15029 0\n15030 15031 15032 0\n15033 15034 15035 0\n15036 15037 15038 0\n15039 15040 15041 0\n15042 15043 15044 0\n15045 15046 15047 0\n15048 15049 15050 0\n15051 15052 15053 0\n15054 15055 15056 0\n15057 15058 15059 0\n15060 15061 15062 0\n15063 15064 15065 0\n15066 15067 15068 0\n15069 15070 15071 0\n15072 15073 15074 0\n15075 15076 15077 0\n15078 15079 15080 0\n15081 15082 15083 0\n15084 15085 15086 0\n15087 15088 15089 0\n15090 15091 15092 0\n15093 15094 15095 0\n15096 15097 15098 0\n15099 15100 15101 0\n15102 15103 15104 0\n15105 15106 15107 0\n15108 15109 15110 0\n15111 15112 15113 0\n15114 15115 15116 0\n15117 15118 15119 0\n15120 15121 15122 0\n15123 15124 15125 0\n15126 15127 15128 0\n15129 15130 15131 0\n15132 15133 15134 0\n15135 15136 15137 0\n15138 15139 15140 0\n15141 15142 15143 0\n15144 15145 15146 0\n15147 15148 15149 0\n15150 15151 15152 0\n15153 15154 15155 0\n15156 15157 15158 0\n15159 15160 15161 0\n15162 15163 15164 0\n15165 15166 15167 0\n15168 15169 15170 0\n15171 15172 15173 0\n15174 15175 15176 0\n15177 15178 15179 0\n15180 15181 15182 0\n15183 15184 15185 0\n15186 15187 15188 0\n15189 15190 15191 0\n15192 15193 15194 0\n15195 15196 15197 0\n15198 15199 15200 0\n15201 15202 15203 0\n15204 15205 15206 0\n15207 15208 15209 0\n15210 15211 15212 0\n15213 15214 15215 0\n15216 15217 15218 0\n15219 15220 15221 0\n15222 15223 15224 0\n15225 15226 15227 0\n15228 15229 15230 0\n15231 15232 15233 0\n15234 15235 15236 0\n15237 15238 15239 0\n15240 15241 15242 0\n15243 15244 15245 0\n15246 15247 15248 0\n15249 15250 15251 0\n15252 15253 15254 0\n15255 15256 15257 0\n15258 15259 15260 0\n15261 15262 15263 0\n15264 15265 15266 0\n15267 15268 15269 0\n15270 15271 15272 0\n15273 15274 15275 0\n15276 15277 15278 0\n15279 15280 15281 0\n15282 15283 15284 0\n15285 15286 15287 0\n15288 15289 15290 0\n15291 15292 15293 0\n15294 15295 15296 0\n15297 15298 15299 0\n15300 15301 15302 0\n15303 15304 15305 0\n15306 15307 15308 0\n15309 15310 15311 0\n15312 15313 15314 0\n15315 15316 15317 0\n15318 15319 15320 0\n15321 15322 15323 0\n15324 15325 15326 0\n15327 15328 15329 0\n15330 15331 15332 0\n15333 15334 15335 0\n15336 15337 15338 0\n15339 15340 15341 0\n15342 15343 15344 0\n15345 15346 15347 0\n15348 15349 15350 0\n15351 15352 15353 0\n15354 15355 15356 0\n15357 15358 15359 0\n15360 15361 15362 0\n15363 15364 15365 0\n15366 15367 15368 0\n15369 15370 15371 0\n15372 15373 15374 0\n15375 15376 15377 0\n15378 15379 15380 0\n15381 15382 15383 0\n15384 15385 15386 0\n15387 15388 15389 0\n15390 15391 15392 0\n15393 15394 15395 0\n15396 15397 15398 0\n15399 15400 15401 0\n15402 15403 15404 0\n15405 15406 15407 0\n15408 15409 15410 0\n15411 15412 15413 0\n15414 15415 15416 0\n15417 15418 15419 0\n15420 15421 15422 0\n15423 15424 15425 0\n15426 15427 15428 0\n15429 15430 15431 0\n15432 15433 15434 0\n15435 15436 15437 0\n15438 15439 15440 0\n15441 15442 15443 0\n15444 15445 15446 0\n15447 15448 15449 0\n15450 15451 15452 0\n15453 15454 15455 0\n15456 15457 15458 0\n15459 15460 15461 0\n15462 15463 15464 0\n15465 15466 15467 0\n15468 15469 15470 0\n15471 15472 15473 0\n15474 15475 15476 0\n15477 15478 15479 0\n15480 15481 15482 0\n15483 15484 15485 0\n15486 15487 15488 0\n15489 15490 15491 0\n15492 15493 15494 0\n15495 15496 15497 0\n15498 15499 15500 0\n15501 15502 15503 0\n15504 15505 15506 0\n15507 15508 15509 0\n15510 15511 15512 0\n15513 15514 15515 0\n15516 15517 15518 0\n15519 15520 15521 0\n15522 15523 15524 0\n15525 15526 15527 0\n15528 15529 15530 0\n15531 15532 15533 0\n15534 15535 15536 0\n15537 15538 15539 0\n15540 15541 15542 0\n15543 15544 15545 0\n15546 15547 15548 0\n15549 15550 15551 0\n15552 15553 15554 0\n15555 15556 15557 0\n15558 15559 15560 0\n15561 15562 15563 0\n15564 15565 15566 0\n15567 15568 15569 0\n15570 15571 15572 0\n15573 15574 15575 0\n15576 15577 15578 0\n15579 15580 15581 0\n15582 15583 15584 0\n15585 15586 15587 0\n15588 15589 15590 0\n15591 15592 15593 0\n15594 15595 15596 0\n15597 15598 15599 0\n15600 15601 15602 0\n15603 15604 15605 0\n15606 15607 15608 0\n15609 15610 15611 0\n15612 15613 15614 0\n15615 15616 15617 0\n15618 15619 15620 0\n15621 15622 15623 0\n15624 15625 15626 0\n15627 15628 15629 0\n15630 15631 15632 0\n15633 15634 15635 0\n15636 15637 15638 0\n15639 15640 15641 0\n15642 15643 15644 0\n15645 15646 15647 0\n15648 15649 15650 0\n15651 15652 15653 0\n15654 15655 15656 0\n15657 15658 15659 0\n15660 15661 15662 0\n15663 15664 15665 0\n15666 15667 15668 0\n15669 15670 15671 0\n15672 15673 15674 0\n15675 15676 15677 0\n15678 15679 15680 0\n15681 15682 15683 0\n15684 15685 15686 0\n15687 15688 15689 0\n15690 15691 15692 0\n15693 15694 15695 0\n15696 15697 15698 0\n15699 15700 15701 0\n15702 15703 15704 0\n15705 15706 15707 0\n15708 15709 15710 0\n15711 15712 15713 0\n15714 15715 15716 0\n15717 15718 15719 0\n15720 15721 15722 0\n15723 15724 15725 0\n15726 15727 15728 0\n15729 15730 15731 0\n15732 15733 15734 0\n15735 15736 15737 0\n15738 15739 15740 0\n15741 15742 15743 0\n15744 15745 15746 0\n15747 15748 15749 0\n15750 15751 15752 0\n15753 15754 15755 0\n15756 15757 15758 0\n15759 15760 15761 0\n15762 15763 15764 0\n15765 15766 15767 0\n15768 15769 15770 0\n15771 15772 15773 0\n15774 15775 15776 0\n15777 15778 15779 0\n15780 15781 15782 0\n15783 15784 15785 0\n15786 15787 15788 0\n15789 15790 15791 0\n15792 15793 15794 0\n15795 15796 15797 0\n15798 15799 15800 0\n15801 15802 15803 0\n15804 15805 15806 0\n15807 15808 15809 0\n15810 15811 15812 0\n15813 15814 15815 0\n15816 15817 15818 0\n15819 15820 15821 0\n15822 15823 15824 0\n15825 15826 15827 0\n15828 15829 15830 0\n15831 15832 15833 0\n15834 15835 15836 0\n15837 15838 15839 0\n15840 15841 15842 0\n15843 15844 15845 0\n15846 15847 15848 0\n15849 15850 15851 0\n15852 15853 15854 0\n15855 15856 15857 0\n15858 15859 15860 0\n15861 15862 15863 0\n15864 15865 15866 0\n15867 15868 15869 0\n15870 15871 15872 0\n15873 15874 15875 0\n15876 15877 15878 0\n15879 15880 15881 0\n15882 15883 15884 0\n15885 15886 15887 0\n15888 15889 15890 0\n15891 15892 15893 0\n15894 15895 15896 0\n15897 15898 15899 0\n15900 15901 15902 0\n15903 15904 15905 0\n15906 15907 15908 0\n15909 15910 15911 0\n15912 15913 15914 0\n15915 15916 15917 0\n15918 15919 15920 0\n15921 15922 15923 0\n15924 15925 15926 0\n15927 15928 15929 0\n15930 15931 15932 0\n15933 15934 15935 0\n15936 15937 15938 0\n15939 15940 15941 0\n15942 15943 15944 0\n15945 15946 15947 0\n15948 15949 15950 0\n15951 15952 15953 0\n15954 15955 15956 0\n15957 15958 15959 0\n15960 15961 15962 0\n15963 15964 15965 0\n15966 15967 15968 0\n15969 15970 15971 0\n15972 15973 15974 0\n15975 15976 15977 0\n15978 15979 15980 0\n15981 15982 15983 0\n15984 15985 15986 0\n15987 15988 15989 0\n15990 15991 15992 0\n15993 15994 15995 0\n15996 15997 15998 0\n15999 16000 16001 0\n16002 16003 16004 0\n16005 16006 16007 0\n16008 16009 16010 0\n16011 16012 16013 0\n16014 16015 16016 0\n16017 16018 16019 0\n16020 16021 16022 0\n16023 16024 16025 0\n16026 16027 16028 0\n16029 16030 16031 0\n16032 16033 16034 0\n16035 16036 16037 0\n16038 16039 16040 0\n16041 16042 16043 0\n16044 16045 16046 0\n16047 16048 16049 0\n16050 16051 16052 0\n16053 16054 16055 0\n16056 16057 16058 0\n16059 16060 16061 0\n16062 16063 16064 0\n16065 16066 16067 0\n16068 16069 16070 0\n16071 16072 16073 0\n16074 16075 16076 0\n16077 16078 16079 0\n16080 16081 16082 0\n16083 16084 16085 0\n16086 16087 16088 0\n16089 16090 16091 0\n16092 16093 16094 0\n16095 16096 16097 0\n16098 16099 16100 0\n16101 16102 16103 0\n16104 16105 16106 0\n16107 16108 16109 0\n16110 16111 16112 0\n16113 16114 16115 0\n16116 16117 16118 0\n16119 16120 16121 0\n16122 16123 16124 0\n16125 16126 16127 0\n16128 16129 16130 0\n16131 16132 16133 0\n16134 16135 16136 0\n16137 16138 16139 0\n16140 16141 16142 0\n16143 16144 16145 0\n16146 16147 16148 0\n16149 16150 16151 0\n16152 16153 16154 0\n16155 16156 16157 0\n16158 16159 16160 0\n16161 16162 16163 0\n16164 16165 16166 0\n16167 16168 16169 0\n16170 16171 16172 0\n16173 16174 16175 0\n16176 16177 16178 0\n16179 16180 16181 0\n16182 16183 16184 0\n16185 16186 16187 0\n16188 16189 16190 0\n16191 16192 16193 0\n16194 16195 16196 0\n16197 16198 16199 0\n16200 16201 16202 0\n16203 16204 16205 0\n16206 16207 16208 0\n16209 16210 16211 0\n16212 16213 16214 0\n16215 16216 16217 0\n16218 16219 16220 0\n16221 16222 16223 0\n16224 16225 16226 0\n16227 16228 16229 0\n16230 16231 16232 0\n16233 16234 16235 0\n16236 16237 16238 0\n16239 16240 16241 0\n16242 16243 16244 0\n16245 16246 16247 0\n16248 16249 16250 0\n16251 16252 16253 0\n16254 16255 16256 0\n16257 16258 16259 0\n16260 16261 16262 0\n16263 16264 16265 0\n16266 16267 16268 0\n16269 16270 16271 0\n16272 16273 16274 0\n16275 16276 16277 0\n16278 16279 16280 0\n16281 16282 16283 0\n16284 16285 16286 0\n16287 16288 16289 0\n16290 16291 16292 0\n16293 16294 16295 0\n16296 16297 16298 0\n16299 16300 16301 0\n16302 16303 16304 0\n16305 16306 16307 0\n16308 16309 16310 0\n16311 16312 16313 0\n16314 16315 16316 0\n16317 16318 16319 0\n16320 16321 16322 0\n16323 16324 16325 0\n16326 16327 16328 0\n16329 16330 16331 0\n16332 16333 16334 0\n16335 16336 16337 0\n16338 16339 16340 0\n16341 16342 16343 0\n16344 16345 16346 0\n16347 16348 16349 0\n16350 16351 16352 0\n16353 16354 16355 0\n16356 16357 16358 0\n16359 16360 16361 0\n16362 16363 16364 0\n16365 16366 16367 0\n16368 16369 16370 0\n16371 16372 16373 0\n16374 16375 16376 0\n16377 16378 16379 0\n16380 16381 16382 0\n16383 16384 16385 0\n16386 16387 16388 0\n16389 16390 16391 0\n16392 16393 16394 0\n16395 16396 16397 0\n16398 16399 16400 0\n16401 16402 16403 0\n16404 16405 16406 0\n16407 16408 16409 0\n16410 16411 16412 0\n16413 16414 16415 0\n16416 16417 16418 0\n16419 16420 16421 0\n16422 16423 16424 0\n16425 16426 16427 0\n16428 16429 16430 0\n16431 16432 16433 0\n16434 16435 16436 0\n16437 16438 16439 0\n16440 16441 16442 0\n16443 16444 16445 0\n16446 16447 16448 0\n16449 16450 16451 0\n16452 16453 16454 0\n16455 16456 16457 0\n16458 16459 16460 0\n16461 16462 16463 0\n16464 16465 16466 0\n16467 16468 16469 0\n16470 16471 16472 0\n16473 16474 16475 0\n16476 16477 16478 0\n16479 16480 16481 0\n16482 16483 16484 0\n16485 16486 16487 0\n16488 16489 16490 0\n16491 16492 16493 0\n16494 16495 16496 0\n16497 16498 16499 0\n16500 16501 16502 0\n16503 16504 16505 0\n16506 16507 16508 0\n16509 16510 16511 0\n16512 16513 16514 0\n16515 16516 16517 0\n16518 16519 16520 0\n16521 16522 16523 0\n16524 16525 16526 0\n16527 16528 16529 0\n16530 16531 16532 0\n16533 16534 16535 0\n16536 16537 16538 0\n16539 16540 16541 0\n16542 16543 16544 0\n16545 16546 16547 0\n16548 16549 16550 0\n16551 16552 16553 0\n16554 16555 16556 0\n16557 16558 16559 0\n16560 16561 16562 0\n16563 16564 16565 0\n16566 16567 16568 0\n16569 16570 16571 0\n16572 16573 16574 0\n16575 16576 16577 0\n16578 16579 16580 0\n16581 16582 16583 0\n16584 16585 16586 0\n16587 16588 16589 0\n16590 16591 16592 0\n16593 16594 16595 0\n16596 16597 16598 0\n16599 16600 16601 0\n16602 16603 16604 0\n16605 16606 16607 0\n16608 16609 16610 0\n16611 16612 16613 0\n16614 16615 16616 0\n16617 16618 16619 0\n16620 16621 16622 0\n16623 16624 16625 0\n16626 16627 16628 0\n16629 16630 16631 0\n16632 16633 16634 0\n16635 16636 16637 0\n16638 16639 16640 0\n16641 16642 16643 0\n16644 16645 16646 0\n16647 16648 16649 0\n16650 16651 16652 0\n16653 16654 16655 0\n16656 16657 16658 0\n16659 16660 16661 0\n16662 16663 16664 0\n16665 16666 16667 0\n16668 16669 16670 0\n16671 16672 16673 0\n16674 16675 16676 0\n16677 16678 16679 0\n16680 16681 16682 0\n16683 16684 16685 0\n16686 16687 16688 0\n16689 16690 16691 0\n16692 16693 16694 0\n16695 16696 16697 0\n16698 16699 16700 0\n16701 16702 16703 0\n16704 16705 16706 0\n16707 16708 16709 0\n16710 16711 16712 0\n16713 16714 16715 0\n16716 16717 16718 0\n16719 16720 16721 0\n16722 16723 16724 0\n16725 16726 16727 0\n16728 16729 16730 0\n16731 16732 16733 0\n16734 16735 16736 0\n16737 16738 16739 0\n16740 16741 16742 0\n16743 16744 16745 0\n16746 16747 16748 0\n16749 16750 16751 0\n16752 16753 16754 0\n16755 16756 16757 0\n16758 16759 16760 0\n16761 16762 16763 0\n16764 16765 16766 0\n16767 16768 16769 0\n16770 16771 16772 0\n16773 16774 16775 0\n16776 16777 16778 0\n16779 16780 16781 0\n16782 16783 16784 0\n16785 16786 16787 0\n16788 16789 16790 0\n16791 16792 16793 0\n16794 16795 16796 0\n16797 16798 16799 0\n16800 16801 16802 0\n16803 16804 16805 0\n16806 16807 16808 0\n16809 16810 16811 0\n16812 16813 16814 0\n16815 16816 16817 0\n16818 16819 16820 0\n16821 16822 16823 0\n16824 16825 16826 0\n16827 16828 16829 0\n16830 16831 16832 0\n16833 16834 16835 0\n16836 16837 16838 0\n16839 16840 16841 0\n16842 16843 16844 0\n16845 16846 16847 0\n16848 16849 16850 0\n16851 16852 16853 0\n16854 16855 16856 0\n16857 16858 16859 0\n16860 16861 16862 0\n16863 16864 16865 0\n16866 16867 16868 0\n16869 16870 16871 0\n16872 16873 16874 0\n16875 16876 16877 0\n16878 16879 16880 0\n16881 16882 16883 0\n16884 16885 16886 0\n16887 16888 16889 0\n16890 16891 16892 0\n16893 16894 16895 0\n16896 16897 16898 0\n16899 16900 16901 0\n16902 16903 16904 0\n16905 16906 16907 0\n16908 16909 16910 0\n16911 16912 16913 0\n16914 16915 16916 0\n16917 16918 16919 0\n16920 16921 16922 0\n16923 16924 16925 0\n16926 16927 16928 0\n16929 16930 16931 0\n16932 16933 16934 0\n16935 16936 16937 0\n16938 16939 16940 0\n16941 16942 16943 0\n16944 16945 16946 0\n16947 16948 16949 0\n16950 16951 16952 0\n16953 16954 16955 0\n16956 16957 16958 0\n16959 16960 16961 0\n16962 16963 16964 0\n16965 16966 16967 0\n16968 16969 16970 0\n16971 16972 16973 0\n16974 16975 16976 0\n16977 16978 16979 0\n16980 16981 16982 0\n16983 16984 16985 0\n16986 16987 16988 0\n16989 16990 16991 0\n16992 16993 16994 0\n16995 16996 16997 0\n16998 16999 17000 0\n17001 17002 17003 0\n17004 17005 17006 0\n17007 17008 17009 0\n17010 17011 17012 0\n17013 17014 17015 0\n17016 17017 17018 0\n17019 17020 17021 0\n17022 17023 17024 0\n17025 17026 17027 0\n17028 17029 17030 0\n17031 17032 17033 0\n17034 17035 17036 0\n17037 17038 17039 0\n17040 17041 17042 0\n17043 17044 17045 0\n17046 17047 17048 0\n17049 17050 17051 0\n17052 17053 17054 0\n17055 17056 17057 0\n17058 17059 17060 0\n17061 17062 17063 0\n17064 17065 17066 0\n17067 17068 17069 0\n17070 17071 17072 0\n17073 17074 17075 0\n17076 17077 17078 0\n17079 17080 17081 0\n17082 17083 17084 0\n17085 17086 17087 0\n17088 17089 17090 0\n17091 17092 17093 0\n17094 17095 17096 0\n17097 17098 17099 0\n17100 17101 17102 0\n17103 17104 17105 0\n17106 17107 17108 0\n17109 17110 17111 0\n17112 17113 17114 0\n17115 17116 17117 0\n17118 17119 17120 0\n17121 17122 17123 0\n17124 17125 17126 0\n17127 17128 17129 0\n17130 17131 17132 0\n17133 17134 17135 0\n17136 17137 17138 0\n17139 17140 17141 0\n17142 17143 17144 0\n17145 17146 17147 0\n17148 17149 17150 0\n17151 17152 17153 0\n17154 17155 17156 0\n17157 17158 17159 0\n17160 17161 17162 0\n17163 17164 17165 0\n17166 17167 17168 0\n17169 17170 17171 0\n17172 17173 17174 0\n17175 17176 17177 0\n17178 17179 17180 0\n17181 17182 17183 0\n17184 17185 17186 0\n17187 17188 17189 0\n17190 17191 17192 0\n17193 17194 17195 0\n17196 17197 17198 0\n17199 17200 17201 0\n17202 17203 17204 0\n17205 17206 17207 0\n17208 17209 17210 0\n17211 17212 17213 0\n17214 17215 17216 0\n17217 17218 17219 0\n17220 17221 17222 0\n17223 17224 17225 0\n17226 17227 17228 0\n17229 17230 17231 0\n17232 17233 17234 0\n17235 17236 17237 0\n17238 17239 17240 0\n17241 17242 17243 0\n17244 17245 17246 0\n17247 17248 17249 0\n17250 17251 17252 0\n17253 17254 17255 0\n17256 17257 17258 0\n17259 17260 17261 0\n17262 17263 17264 0\n17265 17266 17267 0\n17268 17269 17270 0\n17271 17272 17273 0\n17274 17275 17276 0\n17277 17278 17279 0\n17280 17281 17282 0\n17283 17284 17285 0\n17286 17287 17288 0\n17289 17290 17291 0\n17292 17293 17294 0\n17295 17296 17297 0\n17298 17299 17300 0\n17301 17302 17303 0\n17304 17305 17306 0\n17307 17308 17309 0\n17310 17311 17312 0\n17313 17314 17315 0\n17316 17317 17318 0\n17319 17320 17321 0\n17322 17323 17324 0\n17325 17326 17327 0\n17328 17329 17330 0\n17331 17332 17333 0\n17334 17335 17336 0\n17337 17338 17339 0\n17340 17341 17342 0\n17343 17344 17345 0\n17346 17347 17348 0\n17349 17350 17351 0\n17352 17353 17354 0\n17355 17356 17357 0\n17358 17359 17360 0\n17361 17362 17363 0\n17364 17365 17366 0\n17367 17368 17369 0\n17370 17371 17372 0\n17373 17374 17375 0\n17376 17377 17378 0\n17379 17380 17381 0\n17382 17383 17384 0\n17385 17386 17387 0\n17388 17389 17390 0\n17391 17392 17393 0\n17394 17395 17396 0\n17397 17398 17399 0\n17400 17401 17402 0\n17403 17404 17405 0\n17406 17407 17408 0\n17409 17410 17411 0\n17412 17413 17414 0\n17415 17416 17417 0\n17418 17419 17420 0\n17421 17422 17423 0\n17424 17425 17426 0\n17427 17428 17429 0\n17430 17431 17432 0\n17433 17434 17435 0\n17436 17437 17438 0\n17439 17440 17441 0\n17442 17443 17444 0\n17445 17446 17447 0\n17448 17449 17450 0\n17451 17452 17453 0\n17454 17455 17456 0\n17457 17458 17459 0\n17460 17461 17462 0\n17463 17464 17465 0\n17466 17467 17468 0\n17469 17470 17471 0\n17472 17473 17474 0\n17475 17476 17477 0\n17478 17479 17480 0\n17481 17482 17483 0\n17484 17485 17486 0\n17487 17488 17489 0\n17490 17491 17492 0\n17493 17494 17495 0\n17496 17497 17498 0\n17499 17500 17501 0\n17502 17503 17504 0\n17505 17506 17507 0\n17508 17509 17510 0\n17511 17512 17513 0\n17514 17515 17516 0\n17517 17518 17519 0\n17520 17521 17522 0\n17523 17524 17525 0\n17526 17527 17528 0\n17529 17530 17531 0\n17532 17533 17534 0\n17535 17536 17537 0\n17538 17539 17540 0\n17541 17542 17543 0\n17544 17545 17546 0\n17547 17548 17549 0\n17550 17551 17552 0\n17553 17554 17555 0\n17556 17557 17558 0\n17559 17560 17561 0\n17562 17563 17564 0\n17565 17566 17567 0\n17568 17569 17570 0\n17571 17572 17573 0\n17574 17575 17576 0\n17577 17578 17579 0\n17580 17581 17582 0\n17583 17584 17585 0\n17586 17587 17588 0\n17589 17590 17591 0\n17592 17593 17594 0\n17595 17596 17597 0\n17598 17599 17600 0\n17601 17602 17603 0\n17604 17605 17606 0\n17607 17608 17609 0\n17610 17611 17612 0\n17613 17614 17615 0\n17616 17617 17618 0\n17619 17620 17621 0\n17622 17623 17624 0\n17625 17626 17627 0\n17628 17629 17630 0\n17631 17632 17633 0\n17634 17635 17636 0\n17637 17638 17639 0\n17640 17641 17642 0\n17643 17644 17645 0\n17646 17647 17648 0\n17649 17650 17651 0\n17652 17653 17654 0\n17655 17656 17657 0\n17658 17659 17660 0\n17661 17662 17663 0\n17664 17665 17666 0\n17667 17668 17669 0\n17670 17671 17672 0\n17673 17674 17675 0\n17676 17677 17678 0\n17679 17680 17681 0\n17682 17683 17684 0\n17685 17686 17687 0\n17688 17689 17690 0\n17691 17692 17693 0\n17694 17695 17696 0\n17697 17698 17699 0\n17700 17701 17702 0\n17703 17704 17705 0\n17706 17707 17708 0\n17709 17710 17711 0\n17712 17713 17714 0\n17715 17716 17717 0\n17718 17719 17720 0\n17721 17722 17723 0\n17724 17725 17726 0\n17727 17728 17729 0\n17730 17731 17732 0\n17733 17734 17735 0\n17736 17737 17738 0\n17739 17740 17741 0\n17742 17743 17744 0\n17745 17746 17747 0\n17748 17749 17750 0\n17751 17752 17753 0\n17754 17755 17756 0\n17757 17758 17759 0\n17760 17761 17762 0\n17763 17764 17765 0\n17766 17767 17768 0\n17769 17770 17771 0\n17772 17773 17774 0\n17775 17776 17777 0\n17778 17779 17780 0\n17781 17782 17783 0\n17784 17785 17786 0\n17787 17788 17789 0\n17790 17791 17792 0\n17793 17794 17795 0\n17796 17797 17798 0\n17799 17800 17801 0\n17802 17803 17804 0\n17805 17806 17807 0\n17808 17809 17810 0\n17811 17812 17813 0\n17814 17815 17816 0\n17817 17818 17819 0\n17820 17821 17822 0\n17823 17824 17825 0\n17826 17827 17828 0\n17829 17830 17831 0\n17832 17833 17834 0\n17835 17836 17837 0\n17838 17839 17840 0\n17841 17842 17843 0\n17844 17845 17846 0\n17847 17848 17849 0\n17850 17851 17852 0\n17853 17854 17855 0\n17856 17857 17858 0\n17859 17860 17861 0\n17862 17863 17864 0\n17865 17866 17867 0\n17868 17869 17870 0\n17871 17872 17873 0\n17874 17875 17876 0\n17877 17878 17879 0\n17880 17881 17882 0\n17883 17884 17885 0\n17886 17887 17888 0\n17889 17890 17891 0\n17892 17893 17894 0\n17895 17896 17897 0\n17898 17899 17900 0\n17901 17902 17903 0\n17904 17905 17906 0\n17907 17908 17909 0\n17910 17911 17912 0\n17913 17914 17915 0\n17916 17917 17918 0\n17919 17920 17921 0\n17922 17923 17924 0\n17925 17926 17927 0\n17928 17929 17930 0\n17931 17932 17933 0\n17934 17935 17936 0\n17937 17938 17939 0\n17940 17941 17942 0\n17943 17944 17945 0\n17946 17947 17948 0\n17949 17950 17951 0\n17952 17953 17954 0\n17955 17956 17957 0\n17958 17959 17960 0\n17961 17962 17963 0\n17964 17965 17966 0\n17967 17968 17969 0\n17970 17971 17972 0\n17973 17974 17975 0\n17976 17977 17978 0\n17979 17980 17981 0\n17982 17983 17984 0\n17985 17986 17987 0\n17988 17989 17990 0\n17991 17992 17993 0\n17994 17995 17996 0\n17997 17998 17999 0\n18000 18001 18002 0\n18003 18004 18005 0\n18006 18007 18008 0\n18009 18010 18011 0\n18012 18013 18014 0\n18015 18016 18017 0\n18018 18019 18020 0\n18021 18022 18023 0\n18024 18025 18026 0\n18027 18028 18029 0\n18030 18031 18032 0\n18033 18034 18035 0\n18036 18037 18038 0\n18039 18040 18041 0\n18042 18043 18044 0\n18045 18046 18047 0\n18048 18049 18050 0\n18051 18052 18053 0\n18054 18055 18056 0\n18057 18058 18059 0\n18060 18061 18062 0\n18063 18064 18065 0\n18066 18067 18068 0\n18069 18070 18071 0\n18072 18073 18074 0\n18075 18076 18077 0\n18078 18079 18080 0\n18081 18082 18083 0\n18084 18085 18086 0\n18087 18088 18089 0\n18090 18091 18092 0\n18093 18094 18095 0\n18096 18097 18098 0\n18099 18100 18101 0\n18102 18103 18104 0\n18105 18106 18107 0\n18108 18109 18110 0\n18111 18112 18113 0\n18114 18115 18116 0\n18117 18118 18119 0\n18120 18121 18122 0\n18123 18124 18125 0\n18126 18127 18128 0\n18129 18130 18131 0\n18132 18133 18134 0\n18135 18136 18137 0\n18138 18139 18140 0\n18141 18142 18143 0\n18144 18145 18146 0\n18147 18148 18149 0\n18150 18151 18152 0\n18153 18154 18155 0\n18156 18157 18158 0\n18159 18160 18161 0\n18162 18163 18164 0\n18165 18166 18167 0\n18168 18169 18170 0\n18171 18172 18173 0\n18174 18175 18176 0\n18177 18178 18179 0\n18180 18181 18182 0\n18183 18184 18185 0\n18186 18187 18188 0\n18189 18190 18191 0\n18192 18193 18194 0\n18195 18196 18197 0\n18198 18199 18200 0\n18201 18202 18203 0\n18204 18205 18206 0\n18207 18208 18209 0\n18210 18211 18212 0\n18213 18214 18215 0\n18216 18217 18218 0\n18219 18220 18221 0\n18222 18223 18224 0\n18225 18226 18227 0\n18228 18229 18230 0\n18231 18232 18233 0\n18234 18235 18236 0\n18237 18238 18239 0\n18240 18241 18242 0\n18243 18244 18245 0\n18246 18247 18248 0\n18249 18250 18251 0\n18252 18253 18254 0\n18255 18256 18257 0\n18258 18259 18260 0\n18261 18262 18263 0\n18264 18265 18266 0\n18267 18268 18269 0\n18270 18271 18272 0\n18273 18274 18275 0\n18276 18277 18278 0\n18279 18280 18281 0\n18282 18283 18284 0\n18285 18286 18287 0\n18288 18289 18290 0\n18291 18292 18293 0\n18294 18295 18296 0\n18297 18298 18299 0\n18300 18301 18302 0\n18303 18304 18305 0\n18306 18307 18308 0\n18309 18310 18311 0\n18312 18313 18314 0\n18315 18316 18317 0\n18318 18319 18320 0\n18321 18322 18323 0\n18324 18325 18326 0\n18327 18328 18329 0\n18330 18331 18332 0\n18333 18334 18335 0\n18336 18337 18338 0\n18339 18340 18341 0\n18342 18343 18344 0\n18345 18346 18347 0\n18348 18349 18350 0\n18351 18352 18353 0\n18354 18355 18356 0\n18357 18358 18359 0\n18360 18361 18362 0\n18363 18364 18365 0\n18366 18367 18368 0\n18369 18370 18371 0\n18372 18373 18374 0\n18375 18376 18377 0\n18378 18379 18380 0\n18381 18382 18383 0\n18384 18385 18386 0\n18387 18388 18389 0\n18390 18391 18392 0\n18393 18394 18395 0\n18396 18397 18398 0\n18399 18400 18401 0\n18402 18403 18404 0\n18405 18406 18407 0\n18408 18409 18410 0\n18411 18412 18413 0\n18414 18415 18416 0\n18417 18418 18419 0\n18420 18421 18422 0\n18423 18424 18425 0\n18426 18427 18428 0\n18429 18430 18431 0\n18432 18433 18434 0\n18435 18436 18437 0\n18438 18439 18440 0\n18441 18442 18443 0\n18444 18445 18446 0\n18447 18448 18449 0\n18450 18451 18452 0\n18453 18454 18455 0\n18456 18457 18458 0\n18459 18460 18461 0\n18462 18463 18464 0\n18465 18466 18467 0\n18468 18469 18470 0\n18471 18472 18473 0\n18474 18475 18476 0\n18477 18478 18479 0\n18480 18481 18482 0\n18483 18484 18485 0\n18486 18487 18488 0\n18489 18490 18491 0\n18492 18493 18494 0\n18495 18496 18497 0\n18498 18499 18500 0\n18501 18502 18503 0\n18504 18505 18506 0\n18507 18508 18509 0\n18510 18511 18512 0\n18513 18514 18515 0\n18516 18517 18518 0\n18519 18520 18521 0\n18522 18523 18524 0\n18525 18526 18527 0\n18528 18529 18530 0\n18531 18532 18533 0\n18534 18535 18536 0\n18537 18538 18539 0\n18540 18541 18542 0\n18543 18544 18545 0\n18546 18547 18548 0\n18549 18550 18551 0\n18552 18553 18554 0\n18555 18556 18557 0\n18558 18559 18560 0\n18561 18562 18563 0\n18564 18565 18566 0\n18567 18568 18569 0\n18570 18571 18572 0\n18573 18574 18575 0\n18576 18577 18578 0\n18579 18580 18581 0\n18582 18583 18584 0\n18585 18586 18587 0\n18588 18589 18590 0\n18591 18592 18593 0\n18594 18595 18596 0\n18597 18598 18599 0\n18600 18601 18602 0\n18603 18604 18605 0\n18606 18607 18608 0\n18609 18610 18611 0\n18612 18613 18614 0\n18615 18616 18617 0\n18618 18619 18620 0\n18621 18622 18623 0\n18624 18625 18626 0\n18627 18628 18629 0\n18630 18631 18632 0\n18633 18634 18635 0\n18636 18637 18638 0\n18639 18640 18641 0\n18642 18643 18644 0\n18645 18646 18647 0\n18648 18649 18650 0\n18651 18652 18653 0\n18654 18655 18656 0\n18657 18658 18659 0\n18660 18661 18662 0\n18663 18664 18665 0\n18666 18667 18668 0\n18669 18670 18671 0\n18672 18673 18674 0\n18675 18676 18677 0\n18678 18679 18680 0\n18681 18682 18683 0\n18684 18685 18686 0\n18687 18688 18689 0\n18690 18691 18692 0\n18693 18694 18695 0\n18696 18697 18698 0\n18699 18700 18701 0\n18702 18703 18704 0\n18705 18706 18707 0\n18708 18709 18710 0\n18711 18712 18713 0\n18714 18715 18716 0\n18717 18718 18719 0\n18720 18721 18722 0\n18723 18724 18725 0\n18726 18727 18728 0\n18729 18730 18731 0\n18732 18733 18734 0\n18735 18736 18737 0\n18738 18739 18740 0\n18741 18742 18743 0\n18744 18745 18746 0\n18747 18748 18749 0\n18750 18751 18752 0\n18753 18754 18755 0\n18756 18757 18758 0\n18759 18760 18761 0\n18762 18763 18764 0\n18765 18766 18767 0\n18768 18769 18770 0\n18771 18772 18773 0\n18774 18775 18776 0\n18777 18778 18779 0\n18780 18781 18782 0\n18783 18784 18785 0\n18786 18787 18788 0\n18789 18790 18791 0\n18792 18793 18794 0\n18795 18796 18797 0\n18798 18799 18800 0\n18801 18802 18803 0\n18804 18805 18806 0\n18807 18808 18809 0\n18810 18811 18812 0\n18813 18814 18815 0\n18816 18817 18818 0\n18819 18820 18821 0\n18822 18823 18824 0\n18825 18826 18827 0\n18828 18829 18830 0\n18831 18832 18833 0\n18834 18835 18836 0\n18837 18838 18839 0\n18840 18841 18842 0\n18843 18844 18845 0\n18846 18847 18848 0\n18849 18850 18851 0\n18852 18853 18854 0\n18855 18856 18857 0\n18858 18859 18860 0\n18861 18862 18863 0\n18864 18865 18866 0\n18867 18868 18869 0\n18870 18871 18872 0\n18873 18874 18875 0\n18876 18877 18878 0\n18879 18880 18881 0\n18882 18883 18884 0\n18885 18886 18887 0\n18888 18889 18890 0\n18891 18892 18893 0\n18894 18895 18896 0\n18897 18898 18899 0\n18900 18901 18902 0\n18903 18904 18905 0\n18906 18907 18908 0\n18909 18910 18911 0\n18912 18913 18914 0\n18915 18916 18917 0\n18918 18919 18920 0\n18921 18922 18923 0\n18924 18925 18926 0\n18927 18928 18929 0\n18930 18931 18932 0\n18933 18934 18935 0\n18936 18937 18938 0\n18939 18940 18941 0\n18942 18943 18944 0\n18945 18946 18947 0\n18948 18949 18950 0\n18951 18952 18953 0\n18954 18955 18956 0\n18957 18958 18959 0\n18960 18961 18962 0\n18963 18964 18965 0\n18966 18967 18968 0\n18969 18970 18971 0\n18972 18973 18974 0\n18975 18976 18977 0\n18978 18979 18980 0\n18981 18982 18983 0\n18984 18985 18986 0\n18987 18988 18989 0\n18990 18991 18992 0\n18993 18994 18995 0\n18996 18997 18998 0\n18999 19000 19001 0\n19002 19003 19004 0\n19005 19006 19007 0\n19008 19009 19010 0\n19011 19012 19013 0\n19014 19015 19016 0\n19017 19018 19019 0\n19020 19021 19022 0\n19023 19024 19025 0\n19026 19027 19028 0\n19029 19030 19031 0\n19032 19033 19034 0\n19035 19036 19037 0\n19038 19039 19040 0\n19041 19042 19043 0\n19044 19045 19046 0\n19047 19048 19049 0\n19050 19051 19052 0\n19053 19054 19055 0\n19056 19057 19058 0\n19059 19060 19061 0\n19062 19063 19064 0\n19065 19066 19067 0\n19068 19069 19070 0\n19071 19072 19073 0\n19074 19075 19076 0\n19077 19078 19079 0\n19080 19081 19082 0\n19083 19084 19085 0\n19086 19087 19088 0\n19089 19090 19091 0\n19092 19093 19094 0\n19095 19096 19097 0\n19098 19099 19100 0\n19101 19102 19103 0\n19104 19105 19106 0\n19107 19108 19109 0\n19110 19111 19112 0\n19113 19114 19115 0\n19116 19117 19118 0\n19119 19120 19121 0\n19122 19123 19124 0\n19125 19126 19127 0\n19128 19129 19130 0\n19131 19132 19133 0\n19134 19135 19136 0\n19137 19138 19139 0\n19140 19141 19142 0\n19143 19144 19145 0\n19146 19147 19148 0\n19149 19150 19151 0\n19152 19153 19154 0\n19155 19156 19157 0\n19158 19159 19160 0\n19161 19162 19163 0\n19164 19165 19166 0\n19167 19168 19169 0\n19170 19171 19172 0\n19173 19174 19175 0\n19176 19177 19178 0\n19179 19180 19181 0\n19182 19183 19184 0\n19185 19186 19187 0\n19188 19189 19190 0\n19191 19192 19193 0\n19194 19195 19196 0\n19197 19198 19199 0\n19200 19201 19202 0\n19203 19204 19205 0\n19206 19207 19208 0\n19209 19210 19211 0\n19212 19213 19214 0\n19215 19216 19217 0\n19218 19219 19220 0\n19221 19222 19223 0\n19224 19225 19226 0\n19227 19228 19229 0\n19230 19231 19232 0\n19233 19234 19235 0\n19236 19237 19238 0\n19239 19240 19241 0\n19242 19243 19244 0\n19245 19246 19247 0\n19248 19249 19250 0\n19251 19252 19253 0\n19254 19255 19256 0\n19257 19258 19259 0\n19260 19261 19262 0\n19263 19264 19265 0\n19266 19267 19268 0\n19269 19270 19271 0\n19272 19273 19274 0\n19275 19276 19277 0\n19278 19279 19280 0\n19281 19282 19283 0\n19284 19285 19286 0\n19287 19288 19289 0\n19290 19291 19292 0\n19293 19294 19295 0\n19296 19297 19298 0\n19299 19300 19301 0\n19302 19303 19304 0\n19305 19306 19307 0\n19308 19309 19310 0\n19311 19312 19313 0\n19314 19315 19316 0\n19317 19318 19319 0\n19320 19321 19322 0\n19323 19324 19325 0\n19326 19327 19328 0\n19329 19330 19331 0\n19332 19333 19334 0\n19335 19336 19337 0\n19338 19339 19340 0\n19341 19342 19343 0\n19344 19345 19346 0\n19347 19348 19349 0\n19350 19351 19352 0\n19353 19354 19355 0\n19356 19357 19358 0\n19359 19360 19361 0\n19362 19363 19364 0\n19365 19366 19367 0\n19368 19369 19370 0\n19371 19372 19373 0\n19374 19375 19376 0\n19377 19378 19379 0\n19380 19381 19382 0\n19383 19384 19385 0\n19386 19387 19388 0\n19389 19390 19391 0\n19392 19393 19394 0\n19395 19396 19397 0\n19398 19399 19400 0\n19401 19402 19403 0\n19404 19405 19406 0\n19407 19408 19409 0\n19410 19411 19412 0\n19413 19414 19415 0\n19416 19417 19418 0\n19419 19420 19421 0\n19422 19423 19424 0\n19425 19426 19427 0\n19428 19429 19430 0\n19431 19432 19433 0\n19434 19435 19436 0\n19437 19438 19439 0\n19440 19441 19442 0\n19443 19444 19445 0\n19446 19447 19448 0\n19449 19450 19451 0\n19452 19453 19454 0\n19455 19456 19457 0\n19458 19459 19460 0\n19461 19462 19463 0\n19464 19465 19466 0\n19467 19468 19469 0\n19470 19471 19472 0\n19473 19474 19475 0\n19476 19477 19478 0\n19479 19480 19481 0\n19482 19483 19484 0\n19485 19486 19487 0\n19488 19489 19490 0\n19491 19492 19493 0\n19494 19495 19496 0\n19497 19498 19499 0\n19500 19501 19502 0\n19503 19504 19505 0\n19506 19507 19508 0\n19509 19510 19511 0\n19512 19513 19514 0\n19515 19516 19517 0\n19518 19519 19520 0\n19521 19522 19523 0\n19524 19525 19526 0\n19527 19528 19529 0\n19530 19531 19532 0\n19533 19534 19535 0\n19536 19537 19538 0\n19539 19540 19541 0\n19542 19543 19544 0\n19545 19546 19547 0\n19548 19549 19550 0\n19551 19552 19553 0\n19554 19555 19556 0\n19557 19558 19559 0\n19560 19561 19562 0\n19563 19564 19565 0\n19566 19567 19568 0\n19569 19570 19571 0\n19572 19573 19574 0\n19575 19576 19577 0\n19578 19579 19580 0\n19581 19582 19583 0\n19584 19585 19586 0\n19587 19588 19589 0\n19590 19591 19592 0\n19593 19594 19595 0\n19596 19597 19598 0\n19599 19600 19601 0\n19602 19603 19604 0\n19605 19606 19607 0\n19608 19609 19610 0\n19611 19612 19613 0\n19614 19615 19616 0\n19617 19618 19619 0\n19620 19621 19622 0\n19623 19624 19625 0\n19626 19627 19628 0\n19629 19630 19631 0\n19632 19633 19634 0\n19635 19636 19637 0\n19638 19639 19640 0\n19641 19642 19643 0\n19644 19645 19646 0\n19647 19648 19649 0\n19650 19651 19652 0\n19653 19654 19655 0\n19656 19657 19658 0\n19659 19660 19661 0\n19662 19663 19664 0\n19665 19666 19667 0\n19668 19669 19670 0\n19671 19672 19673 0\n19674 19675 19676 0\n19677 19678 19679 0\n19680 19681 19682 0\n19683 19684 19685 0\n19686 19687 19688 0\n19689 19690 19691 0\n19692 19693 19694 0\n19695 19696 19697 0\n19698 19699 19700 0\n19701 19702 19703 0\n19704 19705 19706 0\n19707 19708 19709 0\n19710 19711 19712 0\n19713 19714 19715 0\n19716 19717 19718 0\n19719 19720 19721 0\n19722 19723 19724 0\n19725 19726 19727 0\n19728 19729 19730 0\n19731 19732 19733 0\n19734 19735 19736 0\n19737 19738 19739 0\n19740 19741 19742 0\n19743 19744 19745 0\n19746 19747 19748 0\n19749 19750 19751 0\n19752 19753 19754 0\n19755 19756 19757 0\n19758 19759 19760 0\n19761 19762 19763 0\n19764 19765 19766 0\n19767 19768 19769 0\n19770 19771 19772 0\n19773 19774 19775 0\n19776 19777 19778 0\n19779 19780 19781 0\n19782 19783 19784 0\n19785 19786 19787 0\n19788 19789 19790 0\n19791 19792 19793 0\n19794 19795 19796 0\n19797 19798 19799 0\n19800 19801 19802 0\n19803 19804 19805 0\n19806 19807 19808 0\n19809 19810 19811 0\n19812 19813 19814 0\n19815 19816 19817 0\n19818 19819 19820 0\n19821 19822 19823 0\n19824 19825 19826 0\n19827 19828 19829 0\n19830 19831 19832 0\n19833 19834 19835 0\n19836 19837 19838 0\n19839 19840 19841 0\n19842 19843 19844 0\n19845 19846 19847 0\n19848 19849 19850 0\n19851 19852 19853 0\n19854 19855 19856 0\n19857 19858 19859 0\n19860 19861 19862 0\n19863 19864 19865 0\n19866 19867 19868 0\n19869 19870 19871 0\n19872 19873 19874 0\n19875 19876 19877 0\n19878 19879 19880 0\n19881 19882 19883 0\n19884 19885 19886 0\n19887 19888 19889 0\n19890 19891 19892 0\n19893 19894 19895 0\n19896 19897 19898 0\n19899 19900 19901 0\n19902 19903 19904 0\n19905 19906 19907 0\n19908 19909 19910 0\n19911 19912 19913 0\n19914 19915 19916 0\n19917 19918 19919 0\n19920 19921 19922 0\n19923 19924 19925 0\n19926 19927 19928 0\n19929 19930 19931 0\n19932 19933 19934 0\n19935 19936 19937 0\n19938 19939 19940 0\n19941 19942 19943 0\n19944 19945 19946 0\n19947 19948 19949 0\n19950 19951 19952 0\n19953 19954 19955 0\n19956 19957 19958 0\n19959 19960 19961 0\n19962 19963 19964 0\n19965 19966 19967 0\n19968 19969 19970 0\n19971 19972 19973 0\n19974 19975 19976 0\n19977 19978 19979 0\n19980 19981 19982 0\n19983 19984 19985 0\n19986 19987 19988 0\n19989 19990 19991 0\n19992 19993 19994 0\n19995 19996 19997 0\n19998 19999 20000 0\n20001 20002 20003 0\n20004 20005 20006 0\n20007 20008 20009 0\n20010 20011 20012 0\n20013 20014 20015 0\n20016 20017 20018 0\n20019 20020 20021 0\n20022 20023 20024 0\n20025 20026 20027 0\n20028 20029 20030 0\n20031 20032 20033 0\n20034 20035 20036 0\n20037 20038 20039 0\n20040 20041 20042 0\n20043 20044 20045 0\n20046 20047 20048 0\n20049 20050 20051 0\n20052 20053 20054 0\n20055 20056 20057 0\n20058 20059 20060 0\n20061 20062 20063 0\n20064 20065 20066 0\n20067 20068 20069 0\n20070 20071 20072 0\n20073 20074 20075 0\n20076 20077 20078 0\n20079 20080 20081 0\n20082 20083 20084 0\n20085 20086 20087 0\n20088 20089 20090 0\n20091 20092 20093 0\n20094 20095 20096 0\n20097 20098 20099 0\n20100 20101 20102 0\n20103 20104 20105 0\n20106 20107 20108 0\n20109 20110 20111 0\n20112 20113 20114 0\n20115 20116 20117 0\n20118 20119 20120 0\n20121 20122 20123 0\n20124 20125 20126 0\n20127 20128 20129 0\n20130 20131 20132 0\n20133 20134 20135 0\n20136 20137 20138 0\n20139 20140 20141 0\n20142 20143 20144 0\n20145 20146 20147 0\n20148 20149 20150 0\n20151 20152 20153 0\n20154 20155 20156 0\n20157 20158 20159 0\n20160 20161 20162 0\n20163 20164 20165 0\n20166 20167 20168 0\n20169 20170 20171 0\n20172 20173 20174 0\n20175 20176 20177 0\n20178 20179 20180 0\n20181 20182 20183 0\n20184 20185 20186 0\n20187 20188 20189 0\n20190 20191 20192 0\n20193 20194 20195 0\n20196 20197 20198 0\n20199 20200 20201 0\n20202 20203 20204 0\n20205 20206 20207 0\n20208 20209 20210 0\n20211 20212 20213 0\n20214 20215 20216 0\n20217 20218 20219 0\n20220 20221 20222 0\n20223 20224 20225 0\n20226 20227 20228 0\n20229 20230 20231 0\n20232 20233 20234 0\n20235 20236 20237 0\n20238 20239 20240 0\n20241 20242 20243 0\n20244 20245 20246 0\n20247 20248 20249 0\n20250 20251 20252 0\n20253 20254 20255 0\n20256 20257 20258 0\n20259 20260 20261 0\n20262 20263 20264 0\n20265 20266 20267 0\n20268 20269 20270 0\n20271 20272 20273 0\n20274 20275 20276 0\n20277 20278 20279 0\n20280 20281 20282 0\n20283 20284 20285 0\n20286 20287 20288 0\n20289 20290 20291 0\n20292 20293 20294 0\n20295 20296 20297 0\n20298 20299 20300 0\n20301 20302 20303 0\n20304 20305 20306 0\n20307 20308 20309 0\n20310 20311 20312 0\n20313 20314 20315 0\n20316 20317 20318 0\n20319 20320 20321 0\n20322 20323 20324 0\n20325 20326 20327 0\n20328 20329 20330 0\n20331 20332 20333 0\n20334 20335 20336 0\n20337 20338 20339 0\n20340 20341 20342 0\n20343 20344 20345 0\n20346 20347 20348 0\n20349 20350 20351 0\n20352 20353 20354 0\n20355 20356 20357 0\n20358 20359 20360 0\n20361 20362 20363 0\n20364 20365 20366 0\n20367 20368 20369 0\n20370 20371 20372 0\n20373 20374 20375 0\n20376 20377 20378 0\n20379 20380 20381 0\n20382 20383 20384 0\n20385 20386 20387 0\n20388 20389 20390 0\n20391 20392 20393 0\n20394 20395 20396 0\n20397 20398 20399 0\n20400 20401 20402 0\n20403 20404 20405 0\n20406 20407 20408 0\n20409 20410 20411 0\n20412 20413 20414 0\n20415 20416 20417 0\n20418 20419 20420 0\n20421 20422 20423 0\n20424 20425 20426 0\n20427 20428 20429 0\n20430 20431 20432 0\n20433 20434 20435 0\n20436 20437 20438 0\n20439 20440 20441 0\n20442 20443 20444 0\n20445 20446 20447 0\n20448 20449 20450 0\n20451 20452 20453 0\n20454 20455 20456 0\n20457 20458 20459 0\n20460 20461 20462 0\n20463 20464 20465 0\n20466 20467 20468 0\n20469 20470 20471 0\n20472 20473 20474 0\n20475 20476 20477 0\n20478 20479 20480 0\n20481 20482 20483 0\n20484 20485 20486 0\n20487 20488 20489 0\n20490 20491 20492 0\n20493 20494 20495 0\n20496 20497 20498 0\n20499 20500 20501 0\n20502 20503 20504 0\n20505 20506 20507 0\n20508 20509 20510 0\n20511 20512 20513 0\n20514 20515 20516 0\n20517 20518 20519 0\n20520 20521 20522 0\n20523 20524 20525 0\n20526 20527 20528 0\n20529 20530 20531 0\n20532 20533 20534 0\n20535 20536 20537 0\n20538 20539 20540 0\n20541 20542 20543 0\n20544 20545 20546 0\n20547 20548 20549 0\n20550 20551 20552 0\n20553 20554 20555 0\n20556 20557 20558 0\n20559 20560 20561 0\n20562 20563 20564 0\n20565 20566 20567 0\n20568 20569 20570 0\n20571 20572 20573 0\n20574 20575 20576 0\n20577 20578 20579 0\n20580 20581 20582 0\n20583 20584 20585 0\n20586 20587 20588 0\n20589 20590 20591 0\n20592 20593 20594 0\n20595 20596 20597 0\n20598 20599 20600 0\n20601 20602 20603 0\n20604 20605 20606 0\n20607 20608 20609 0\n20610 20611 20612 0\n20613 20614 20615 0\n20616 20617 20618 0\n20619 20620 20621 0\n20622 20623 20624 0\n20625 20626 20627 0\n20628 20629 20630 0\n20631 20632 20633 0\n20634 20635 20636 0\n20637 20638 20639 0\n20640 20641 20642 0\n20643 20644 20645 0\n20646 20647 20648 0\n20649 20650 20651 0\n20652 20653 20654 0\n20655 20656 20657 0\n20658 20659 20660 0\n20661 20662 20663 0\n20664 20665 20666 0\n20667 20668 20669 0\n20670 20671 20672 0\n20673 20674 20675 0\n20676 20677 20678 0\n20679 20680 20681 0\n20682 20683 20684 0\n20685 20686 20687 0\n20688 20689 20690 0\n20691 20692 20693 0\n20694 20695 20696 0\n20697 20698 20699 0\n20700 20701 20702 0\n20703 20704 20705 0\n20706 20707 20708 0\n20709 20710 20711 0\n20712 20713 20714 0\n20715 20716 20717 0\n20718 20719 20720 0\n20721 20722 20723 0\n20724 20725 20726 0\n20727 20728 20729 0\n20730 20731 20732 0\n20733 20734 20735 0\n20736 20737 20738 0\n20739 20740 20741 0\n20742 20743 20744 0\n20745 20746 20747 0\n20748 20749 20750 0\n20751 20752 20753 0\n20754 20755 20756 0\n20757 20758 20759 0\n20760 20761 20762 0\n20763 20764 20765 0\n20766 20767 20768 0\n20769 20770 20771 0\n20772 20773 20774 0\n20775 20776 20777 0\n20778 20779 20780 0\n20781 20782 20783 0\n20784 20785 20786 0\n20787 20788 20789 0\n20790 20791 20792 0\n20793 20794 20795 0\n20796 20797 20798 0\n20799 20800 20801 0\n20802 20803 20804 0\n20805 20806 20807 0\n20808 20809 20810 0\n20811 20812 20813 0\n20814 20815 20816 0\n20817 20818 20819 0\n20820 20821 20822 0\n20823 20824 20825 0\n20826 20827 20828 0\n20829 20830 20831 0\n20832 20833 20834 0\n20835 20836 20837 0\n20838 20839 20840 0\n20841 20842 20843 0\n20844 20845 20846 0\n20847 20848 20849 0\n20850 20851 20852 0\n20853 20854 20855 0\n20856 20857 20858 0\n20859 20860 20861 0\n20862 20863 20864 0\n20865 20866 20867 0\n20868 20869 20870 0\n20871 20872 20873 0\n20874 20875 20876 0\n20877 20878 20879 0\n20880 20881 20882 0\n20883 20884 20885 0\n20886 20887 20888 0\n20889 20890 20891 0\n20892 20893 20894 0\n20895 20896 20897 0\n20898 20899 20900 0\n20901 20902 20903 0\n20904 20905 20906 0\n20907 20908 20909 0\n20910 20911 20912 0\n20913 20914 20915 0\n20916 20917 20918 0\n20919 20920 20921 0\n20922 20923 20924 0\n20925 20926 20927 0\n20928 20929 20930 0\n20931 20932 20933 0\n20934 20935 20936 0\n20937 20938 20939 0\n20940 20941 20942 0\n20943 20944 20945 0\n20946 20947 20948 0\n20949 20950 20951 0\n20952 20953 20954 0\n20955 20956 20957 0\n20958 20959 20960 0\n20961 20962 20963 0\n20964 20965 20966 0\n20967 20968 20969 0\n20970 20971 20972 0\n20973 20974 20975 0\n20976 20977 20978 0\n20979 20980 20981 0\n20982 20983 20984 0\n20985 20986 20987 0\n20988 20989 20990 0\n20991 20992 20993 0\n20994 20995 20996 0\n20997 20998 20999 0\n21000 21001 21002 0\n21003 21004 21005 0\n21006 21007 21008 0\n21009 21010 21011 0\n21012 21013 21014 0\n21015 21016 21017 0\n21018 21019 21020 0\n21021 21022 21023 0\n21024 21025 21026 0\n21027 21028 21029 0\n21030 21031 21032 0\n21033 21034 21035 0\n21036 21037 21038 0\n21039 21040 21041 0\n21042 21043 21044 0\n21045 21046 21047 0\n21048 21049 21050 0\n21051 21052 21053 0\n21054 21055 21056 0\n21057 21058 21059 0\n21060 21061 21062 0\n21063 21064 21065 0\n21066 21067 21068 0\n21069 21070 21071 0\n21072 21073 21074 0\n21075 21076 21077 0\n21078 21079 21080 0\n21081 21082 21083 0\n21084 21085 21086 0\n21087 21088 21089 0\n21090 21091 21092 0\n21093 21094 21095 0\n21096 21097 21098 0\n21099 21100 21101 0\n21102 21103 21104 0\n21105 21106 21107 0\n21108 21109 21110 0\n21111 21112 21113 0\n21114 21115 21116 0\n21117 21118 21119 0\n21120 21121 21122 0\n21123 21124 21125 0\n21126 21127 21128 0\n21129 21130 21131 0\n21132 21133 21134 0\n21135 21136 21137 0\n21138 21139 21140 0\n21141 21142 21143 0\n21144 21145 21146 0\n21147 21148 21149 0\n21150 21151 21152 0\n21153 21154 21155 0\n21156 21157 21158 0\n21159 21160 21161 0\n21162 21163 21164 0\n21165 21166 21167 0\n21168 21169 21170 0\n21171 21172 21173 0\n21174 21175 21176 0\n21177 21178 21179 0\n21180 21181 21182 0\n21183 21184 21185 0\n21186 21187 21188 0\n21189 21190 21191 0\n21192 21193 21194 0\n21195 21196 21197 0\n21198 21199 21200 0\n21201 21202 21203 0\n21204 21205 21206 0\n21207 21208 21209 0\n21210 21211 21212 0\n21213 21214 21215 0\n21216 21217 21218 0\n21219 21220 21221 0\n21222 21223 21224 0\n21225 21226 21227 0\n21228 21229 21230 0\n21231 21232 21233 0\n21234 21235 21236 0\n21237 21238 21239 0\n21240 21241 21242 0\n21243 21244 21245 0\n21246 21247 21248 0\n21249 21250 21251 0\n21252 21253 21254 0\n21255 21256 21257 0\n21258 21259 21260 0\n21261 21262 21263 0\n21264 21265 21266 0\n21267 21268 21269 0\n21270 21271 21272 0\n21273 21274 21275 0\n21276 21277 21278 0\n21279 21280 21281 0\n21282 21283 21284 0\n21285 21286 21287 0\n21288 21289 21290 0\n21291 21292 21293 0\n21294 21295 21296 0\n21297 21298 21299 0\n21300 21301 21302 0\n21303 21304 21305 0\n21306 21307 21308 0\n21309 21310 21311 0\n21312 21313 21314 0\n21315 21316 21317 0\n21318 21319 21320 0\n21321 21322 21323 0\n21324 21325 21326 0\n21327 21328 21329 0\n21330 21331 21332 0\n21333 21334 21335 0\n21336 21337 21338 0\n21339 21340 21341 0\n21342 21343 21344 0\n21345 21346 21347 0\n21348 21349 21350 0\n21351 21352 21353 0\n21354 21355 21356 0\n21357 21358 21359 0\n21360 21361 21362 0\n21363 21364 21365 0\n21366 21367 21368 0\n21369 21370 21371 0\n21372 21373 21374 0\n21375 21376 21377 0\n21378 21379 21380 0\n21381 21382 21383 0\n21384 21385 21386 0\n21387 21388 21389 0\n21390 21391 21392 0\n21393 21394 21395 0\n21396 21397 21398 0\n21399 21400 21401 0\n21402 21403 21404 0\n21405 21406 21407 0\n21408 21409 21410 0\n21411 21412 21413 0\n21414 21415 21416 0\n21417 21418 21419 0\n21420 21421 21422 0\n21423 21424 21425 0\n21426 21427 21428 0\n21429 21430 21431 0\n21432 21433 21434 0\n21435 21436 21437 0\n21438 21439 21440 0\n21441 21442 21443 0\n21444 21445 21446 0\n21447 21448 21449 0\n21450 21451 21452 0\n21453 21454 21455 0\n21456 21457 21458 0\n21459 21460 21461 0\n21462 21463 21464 0\n21465 21466 21467 0\n21468 21469 21470 0\n21471 21472 21473 0\n21474 21475 21476 0\n21477 21478 21479 0\n21480 21481 21482 0\n21483 21484 21485 0\n21486 21487 21488 0\n21489 21490 21491 0\n21492 21493 21494 0\n21495 21496 21497 0\n21498 21499 21500 0\n21501 21502 21503 0\n21504 21505 21506 0\n21507 21508 21509 0\n21510 21511 21512 0\n21513 21514 21515 0\n21516 21517 21518 0\n21519 21520 21521 0\n21522 21523 21524 0\n21525 21526 21527 0\n21528 21529 21530 0\n21531 21532 21533 0\n21534 21535 21536 0\n21537 21538 21539 0\n21540 21541 21542 0\n21543 21544 21545 0\n21546 21547 21548 0\n21549 21550 21551 0\n21552 21553 21554 0\n21555 21556 21557 0\n21558 21559 21560 0\n21561 21562 21563 0\n21564 21565 21566 0\n21567 21568 21569 0\n21570 21571 21572 0\n21573 21574 21575 0\n21576 21577 21578 0\n21579 21580 21581 0\n21582 21583 21584 0\n21585 21586 21587 0\n21588 21589 21590 0\n21591 21592 21593 0\n21594 21595 21596 0\n21597 21598 21599 0\n21600 21601 21602 0\n21603 21604 21605 0\n21606 21607 21608 0\n21609 21610 21611 0\n21612 21613 21614 0\n21615 21616 21617 0\n21618 21619 21620 0\n21621 21622 21623 0\n21624 21625 21626 0\n21627 21628 21629 0\n21630 21631 21632 0\n21633 21634 21635 0\n21636 21637 21638 0\n21639 21640 21641 0\n21642 21643 21644 0\n21645 21646 21647 0\n21648 21649 21650 0\n21651 21652 21653 0\n21654 21655 21656 0\n21657 21658 21659 0\n21660 21661 21662 0\n21663 21664 21665 0\n21666 21667 21668 0\n21669 21670 21671 0\n21672 21673 21674 0\n21675 21676 21677 0\n21678 21679 21680 0\n21681 21682 21683 0\n21684 21685 21686 0\n21687 21688 21689 0\n21690 21691 21692 0\n21693 21694 21695 0\n21696 21697 21698 0\n21699 21700 21701 0\n21702 21703 21704 0\n21705 21706 21707 0\n21708 21709 21710 0\n21711 21712 21713 0\n21714 21715 21716 0\n21717 21718 21719 0\n21720 21721 21722 0\n21723 21724 21725 0\n21726 21727 21728 0\n21729 21730 21731 0\n21732 21733 21734 0\n21735 21736 21737 0\n21738 21739 21740 0\n21741 21742 21743 0\n21744 21745 21746 0\n21747 21748 21749 0\n21750 21751 21752 0\n21753 21754 21755 0\n21756 21757 21758 0\n21759 21760 21761 0\n21762 21763 21764 0\n21765 21766 21767 0\n21768 21769 21770 0\n21771 21772 21773 0\n21774 21775 21776 0\n21777 21778 21779 0\n21780 21781 21782 0\n21783 21784 21785 0\n21786 21787 21788 0\n21789 21790 21791 0\n21792 21793 21794 0\n21795 21796 21797 0\n21798 21799 21800 0\n21801 21802 21803 0\n21804 21805 21806 0\n21807 21808 21809 0\n21810 21811 21812 0\n21813 21814 21815 0\n21816 21817 21818 0\n21819 21820 21821 0\n21822 21823 21824 0\n21825 21826 21827 0\n21828 21829 21830 0\n21831 21832 21833 0\n21834 21835 21836 0\n21837 21838 21839 0\n21840 21841 21842 0\n21843 21844 21845 0\n21846 21847 21848 0\n21849 21850 21851 0\n21852 21853 21854 0\n21855 21856 21857 0\n21858 21859 21860 0\n21861 21862 21863 0\n21864 21865 21866 0\n21867 21868 21869 0\n21870 21871 21872 0\n21873 21874 21875 0\n21876 21877 21878 0\n21879 21880 21881 0\n21882 21883 21884 0\n21885 21886 21887 0\n21888 21889 21890 0\n21891 21892 21893 0\n21894 21895 21896 0\n21897 21898 21899 0\n21900 21901 21902 0\n21903 21904 21905 0\n21906 21907 21908 0\n21909 21910 21911 0\n21912 21913 21914 0\n21915 21916 21917 0\n21918 21919 21920 0\n21921 21922 21923 0\n21924 21925 21926 0\n21927 21928 21929 0\n21930 21931 21932 0\n21933 21934 21935 0\n21936 21937 21938 0\n21939 21940 21941 0\n21942 21943 21944 0\n21945 21946 21947 0\n21948 21949 21950 0\n21951 21952 21953 0\n21954 21955 21956 0\n21957 21958 21959 0\n21960 21961 21962 0\n21963 21964 21965 0\n21966 21967 21968 0\n21969 21970 21971 0\n21972 21973 21974 0\n21975 21976 21977 0\n21978 21979 21980 0\n21981 21982 21983 0\n21984 21985 21986 0\n21987 21988 21989 0\n21990 21991 21992 0\n21993 21994 21995 0\n21996 21997 21998 0\n21999 22000 22001 0\n22002 22003 22004 0\n22005 22006 22007 0\n22008 22009 22010 0\n22011 22012 22013 0\n22014 22015 22016 0\n22017 22018 22019 0\n22020 22021 22022 0\n22023 22024 22025 0\n22026 22027 22028 0\n22029 22030 22031 0\n22032 22033 22034 0\n22035 22036 22037 0\n22038 22039 22040 0\n22041 22042 22043 0\n22044 22045 22046 0\n22047 22048 22049 0\n22050 22051 22052 0\n22053 22054 22055 0\n22056 22057 22058 0\n22059 22060 22061 0\n22062 22063 22064 0\n22065 22066 22067 0\n22068 22069 22070 0\n22071 22072 22073 0\n22074 22075 22076 0\n22077 22078 22079 0\n22080 22081 22082 0\n22083 22084 22085 0\n22086 22087 22088 0\n22089 22090 22091 0\n22092 22093 22094 0\n22095 22096 22097 0\n22098 22099 22100 0\n22101 22102 22103 0\n22104 22105 22106 0\n22107 22108 22109 0\n22110 22111 22112 0\n22113 22114 22115 0\n22116 22117 22118 0\n22119 22120 22121 0\n22122 22123 22124 0\n22125 22126 22127 0\n22128 22129 22130 0\n22131 22132 22133 0\n22134 22135 22136 0\n22137 22138 22139 0\n22140 22141 22142 0\n22143 22144 22145 0\n22146 22147 22148 0\n22149 22150 22151 0\n22152 22153 22154 0\n22155 22156 22157 0\n22158 22159 22160 0\n22161 22162 22163 0\n22164 22165 22166 0\n22167 22168 22169 0\n22170 22171 22172 0\n22173 22174 22175 0\n22176 22177 22178 0\n22179 22180 22181 0\n22182 22183 22184 0\n22185 22186 22187 0\n22188 22189 22190 0\n22191 22192 22193 0\n22194 22195 22196 0\n22197 22198 22199 0\n22200 22201 22202 0\n22203 22204 22205 0\n22206 22207 22208 0\n22209 22210 22211 0\n22212 22213 22214 0\n22215 22216 22217 0\n22218 22219 22220 0\n22221 22222 22223 0\n22224 22225 22226 0\n22227 22228 22229 0\n22230 22231 22232 0\n22233 22234 22235 0\n22236 22237 22238 0\n22239 22240 22241 0\n22242 22243 22244 0\n22245 22246 22247 0\n22248 22249 22250 0\n22251 22252 22253 0\n22254 22255 22256 0\n22257 22258 22259 0\n22260 22261 22262 0\n22263 22264 22265 0\n22266 22267 22268 0\n22269 22270 22271 0\n22272 22273 22274 0\n22275 22276 22277 0\n22278 22279 22280 0\n22281 22282 22283 0\n22284 22285 22286 0\n22287 22288 22289 0\n22290 22291 22292 0\n22293 22294 22295 0\n22296 22297 22298 0\n22299 22300 22301 0\n22302 22303 22304 0\n22305 22306 22307 0\n22308 22309 22310 0\n22311 22312 22313 0\n22314 22315 22316 0\n22317 22318 22319 0\n22320 22321 22322 0\n22323 22324 22325 0\n22326 22327 22328 0\n22329 22330 22331 0\n22332 22333 22334 0\n22335 22336 22337 0\n22338 22339 22340 0\n22341 22342 22343 0\n22344 22345 22346 0\n22347 22348 22349 0\n22350 22351 22352 0\n22353 22354 22355 0\n22356 22357 22358 0\n22359 22360 22361 0\n22362 22363 22364 0\n22365 22366 22367 0\n22368 22369 22370 0\n22371 22372 22373 0\n22374 22375 22376 0\n22377 22378 22379 0\n22380 22381 22382 0\n22383 22384 22385 0\n22386 22387 22388 0\n22389 22390 22391 0\n22392 22393 22394 0\n22395 22396 22397 0\n22398 22399 22400 0\n22401 22402 22403 0\n22404 22405 22406 0\n22407 22408 22409 0\n22410 22411 22412 0\n22413 22414 22415 0\n22416 22417 22418 0\n22419 22420 22421 0\n22422 22423 22424 0\n22425 22426 22427 0\n22428 22429 22430 0\n22431 22432 22433 0\n22434 22435 22436 0\n22437 22438 22439 0\n22440 22441 22442 0\n22443 22444 22445 0\n22446 22447 22448 0\n22449 22450 22451 0\n22452 22453 22454 0\n22455 22456 22457 0\n22458 22459 22460 0\n22461 22462 22463 0\n22464 22465 22466 0\n22467 22468 22469 0\n22470 22471 22472 0\n22473 22474 22475 0\n22476 22477 22478 0\n22479 22480 22481 0\n22482 22483 22484 0\n22485 22486 22487 0\n22488 22489 22490 0\n22491 22492 22493 0\n22494 22495 22496 0\n22497 22498 22499 0\n22500 22501 22502 0\n22503 22504 22505 0\n22506 22507 22508 0\n22509 22510 22511 0\n22512 22513 22514 0\n22515 22516 22517 0\n22518 22519 22520 0\n22521 22522 22523 0\n22524 22525 22526 0\n22527 22528 22529 0\n22530 22531 22532 0\n22533 22534 22535 0\n22536 22537 22538 0\n22539 22540 22541 0\n22542 22543 22544 0\n22545 22546 22547 0\n22548 22549 22550 0\n22551 22552 22553 0\n22554 22555 22556 0\n22557 22558 22559 0\n22560 22561 22562 0\n22563 22564 22565 0\n22566 22567 22568 0\n22569 22570 22571 0\n22572 22573 22574 0\n22575 22576 22577 0\n22578 22579 22580 0\n22581 22582 22583 0\n22584 22585 22586 0\n22587 22588 22589 0\n22590 22591 22592 0\n22593 22594 22595 0\n22596 22597 22598 0\n22599 22600 22601 0\n22602 22603 22604 0\n22605 22606 22607 0\n22608 22609 22610 0\n22611 22612 22613 0\n22614 22615 22616 0\n22617 22618 22619 0\n22620 22621 22622 0\n22623 22624 22625 0\n22626 22627 22628 0\n22629 22630 22631 0\n22632 22633 22634 0\n22635 22636 22637 0\n22638 22639 22640 0\n22641 22642 22643 0\n22644 22645 22646 0\n22647 22648 22649 0\n22650 22651 22652 0\n22653 22654 22655 0\n22656 22657 22658 0\n22659 22660 22661 0\n22662 22663 22664 0\n22665 22666 22667 0\n22668 22669 22670 0\n22671 22672 22673 0\n22674 22675 22676 0\n22677 22678 22679 0\n22680 22681 22682 0\n22683 22684 22685 0\n22686 22687 22688 0\n22689 22690 22691 0\n22692 22693 22694 0\n22695 22696 22697 0\n22698 22699 22700 0\n22701 22702 22703 0\n22704 22705 22706 0\n22707 22708 22709 0\n22710 22711 22712 0\n22713 22714 22715 0\n22716 22717 22718 0\n22719 22720 22721 0\n22722 22723 22724 0\n22725 22726 22727 0\n22728 22729 22730 0\n22731 22732 22733 0\n22734 22735 22736 0\n22737 22738 22739 0\n22740 22741 22742 0\n22743 22744 22745 0\n22746 22747 22748 0\n22749 22750 22751 0\n22752 22753 22754 0\n22755 22756 22757 0\n22758 22759 22760 0\n22761 22762 22763 0\n22764 22765 22766 0\n22767 22768 22769 0\n22770 22771 22772 0\n22773 22774 22775 0\n22776 22777 22778 0\n22779 22780 22781 0\n22782 22783 22784 0\n22785 22786 22787 0\n22788 22789 22790 0\n22791 22792 22793 0\n22794 22795 22796 0\n22797 22798 22799 0\n22800 22801 22802 0\n22803 22804 22805 0\n22806 22807 22808 0\n22809 22810 22811 0\n22812 22813 22814 0\n22815 22816 22817 0\n22818 22819 22820 0\n22821 22822 22823 0\n22824 22825 22826 0\n22827 22828 22829 0\n22830 22831 22832 0\n22833 22834 22835 0\n22836 22837 22838 0\n22839 22840 22841 0\n22842 22843 22844 0\n22845 22846 22847 0\n22848 22849 22850 0\n22851 22852 22853 0\n22854 22855 22856 0\n22857 22858 22859 0\n22860 22861 22862 0\n22863 22864 22865 0\n22866 22867 22868 0\n22869 22870 22871 0\n22872 22873 22874 0\n22875 22876 22877 0\n22878 22879 22880 0\n22881 22882 22883 0\n22884 22885 22886 0\n22887 22888 22889 0\n22890 22891 22892 0\n22893 22894 22895 0\n22896 22897 22898 0\n22899 22900 22901 0\n22902 22903 22904 0\n22905 22906 22907 0\n22908 22909 22910 0\n22911 22912 22913 0\n22914 22915 22916 0\n22917 22918 22919 0\n22920 22921 22922 0\n22923 22924 22925 0\n22926 22927 22928 0\n22929 22930 22931 0\n22932 22933 22934 0\n22935 22936 22937 0\n22938 22939 22940 0\n22941 22942 22943 0\n22944 22945 22946 0\n22947 22948 22949 0\n22950 22951 22952 0\n22953 22954 22955 0\n22956 22957 22958 0\n22959 22960 22961 0\n22962 22963 22964 0\n22965 22966 22967 0\n22968 22969 22970 0\n22971 22972 22973 0\n22974 22975 22976 0\n22977 22978 22979 0\n22980 22981 22982 0\n22983 22984 22985 0\n22986 22987 22988 0\n22989 22990 22991 0\n22992 22993 22994 0\n22995 22996 22997 0\n22998 22999 23000 0\n23001 23002 23003 0\n23004 23005 23006 0\n23007 23008 23009 0\n23010 23011 23012 0\n23013 23014 23015 0\n23016 23017 23018 0\n23019 23020 23021 0\n23022 23023 23024 0\n23025 23026 23027 0\n23028 23029 23030 0\n23031 23032 23033 0\n23034 23035 23036 0\n23037 23038 23039 0\n23040 23041 23042 0\n23043 23044 23045 0\n23046 23047 23048 0\n23049 23050 23051 0\n23052 23053 23054 0\n23055 23056 23057 0\n23058 23059 23060 0\n23061 23062 23063 0\n23064 23065 23066 0\n23067 23068 23069 0\n23070 23071 23072 0\n23073 23074 23075 0\n23076 23077 23078 0\n23079 23080 23081 0\n23082 23083 23084 0\n23085 23086 23087 0\n23088 23089 23090 0\n23091 23092 23093 0\n23094 23095 23096 0\n23097 23098 23099 0\n23100 23101 23102 0\n23103 23104 23105 0\n23106 23107 23108 0\n23109 23110 23111 0\n23112 23113 23114 0\n23115 23116 23117 0\n23118 23119 23120 0\n23121 23122 23123 0\n23124 23125 23126 0\n23127 23128 23129 0\n23130 23131 23132 0\n23133 23134 23135 0\n23136 23137 23138 0\n23139 23140 23141 0\n23142 23143 23144 0\n23145 23146 23147 0\n23148 23149 23150 0\n23151 23152 23153 0\n23154 23155 23156 0\n23157 23158 23159 0\n23160 23161 23162 0\n23163 23164 23165 0\n23166 23167 23168 0\n23169 23170 23171 0\n23172 23173 23174 0\n23175 23176 23177 0\n23178 23179 23180 0\n23181 23182 23183 0\n23184 23185 23186 0\n23187 23188 23189 0\n23190 23191 23192 0\n23193 23194 23195 0\n23196 23197 23198 0\n23199 23200 23201 0\n23202 23203 23204 0\n23205 23206 23207 0\n23208 23209 23210 0\n23211 23212 23213 0\n23214 23215 23216 0\n23217 23218 23219 0\n23220 23221 23222 0\n23223 23224 23225 0\n23226 23227 23228 0\n23229 23230 23231 0\n23232 23233 23234 0\n23235 23236 23237 0\n23238 23239 23240 0\n23241 23242 23243 0\n23244 23245 23246 0\n23247 23248 23249 0\n23250 23251 23252 0\n23253 23254 23255 0\n23256 23257 23258 0\n23259 23260 23261 0\n23262 23263 23264 0\n23265 23266 23267 0\n23268 23269 23270 0\n23271 23272 23273 0\n23274 23275 23276 0\n23277 23278 23279 0\n23280 23281 23282 0\n23283 23284 23285 0\n23286 23287 23288 0\n23289 23290 23291 0\n23292 23293 23294 0\n23295 23296 23297 0\n23298 23299 23300 0\n23301 23302 23303 0\n23304 23305 23306 0\n23307 23308 23309 0\n23310 23311 23312 0\n23313 23314 23315 0\n23316 23317 23318 0\n23319 23320 23321 0\n23322 23323 23324 0\n23325 23326 23327 0\n23328 23329 23330 0\n23331 23332 23333 0\n23334 23335 23336 0\n23337 23338 23339 0\n23340 23341 23342 0\n23343 23344 23345 0\n23346 23347 23348 0\n23349 23350 23351 0\n23352 23353 23354 0\n23355 23356 23357 0\n23358 23359 23360 0\n23361 23362 23363 0\n23364 23365 23366 0\n23367 23368 23369 0\n23370 23371 23372 0\n23373 23374 23375 0\n23376 23377 23378 0\n23379 23380 23381 0\n23382 23383 23384 0\n23385 23386 23387 0\n23388 23389 23390 0\n23391 23392 23393 0\n23394 23395 23396 0\n23397 23398 23399 0\n23400 23401 23402 0\n23403 23404 23405 0\n23406 23407 23408 0\n23409 23410 23411 0\n23412 23413 23414 0\n23415 23416 23417 0\n23418 23419 23420 0\n23421 23422 23423 0\n23424 23425 23426 0\n23427 23428 23429 0\n23430 23431 23432 0\n23433 23434 23435 0\n23436 23437 23438 0\n23439 23440 23441 0\n23442 23443 23444 0\n23445 23446 23447 0\n23448 23449 23450 0\n23451 23452 23453 0\n23454 23455 23456 0\n23457 23458 23459 0\n23460 23461 23462 0\n23463 23464 23465 0\n23466 23467 23468 0\n23469 23470 23471 0\n23472 23473 23474 0\n23475 23476 23477 0\n23478 23479 23480 0\n23481 23482 23483 0\n23484 23485 23486 0\n23487 23488 23489 0\n23490 23491 23492 0\n23493 23494 23495 0\n23496 23497 23498 0\n23499 23500 23501 0\n23502 23503 23504 0\n23505 23506 23507 0\n23508 23509 23510 0\n23511 23512 23513 0\n23514 23515 23516 0\n23517 23518 23519 0\n23520 23521 23522 0\n23523 23524 23525 0\n23526 23527 23528 0\n23529 23530 23531 0\n23532 23533 23534 0\n23535 23536 23537 0\n23538 23539 23540 0\n23541 23542 23543 0\n23544 23545 23546 0\n23547 23548 23549 0\n23550 23551 23552 0\n23553 23554 23555 0\n23556 23557 23558 0\n23559 23560 23561 0\n23562 23563 23564 0\n23565 23566 23567 0\n23568 23569 23570 0\n23571 23572 23573 0\n23574 23575 23576 0\n23577 23578 23579 0\n23580 23581 23582 0\n23583 23584 23585 0\n23586 23587 23588 0\n23589 23590 23591 0\n23592 23593 23594 0\n23595 23596 23597 0\n23598 23599 23600 0\n23601 23602 23603 0\n23604 23605 23606 0\n23607 23608 23609 0\n23610 23611 23612 0\n23613 23614 23615 0\n23616 23617 23618 0\n23619 23620 23621 0\n23622 23623 23624 0\n23625 23626 23627 0\n23628 23629 23630 0\n23631 23632 23633 0\n23634 23635 23636 0\n23637 23638 23639 0\n23640 23641 23642 0\n23643 23644 23645 0\n23646 23647 23648 0\n23649 23650 23651 0\n23652 23653 23654 0\n23655 23656 23657 0\n23658 23659 23660 0\n23661 23662 23663 0\n23664 23665 23666 0\n23667 23668 23669 0\n23670 23671 23672 0\n23673 23674 23675 0\n23676 23677 23678 0\n23679 23680 23681 0\n23682 23683 23684 0\n23685 23686 23687 0\n23688 23689 23690 0\n23691 23692 23693 0\n23694 23695 23696 0\n23697 23698 23699 0\n23700 23701 23702 0\n23703 23704 23705 0\n23706 23707 23708 0\n23709 23710 23711 0\n23712 23713 23714 0\n23715 23716 23717 0\n23718 23719 23720 0\n23721 23722 23723 0\n23724 23725 23726 0\n23727 23728 23729 0\n23730 23731 23732 0\n23733 23734 23735 0\n23736 23737 23738 0\n23739 23740 23741 0\n23742 23743 23744 0\n23745 23746 23747 0\nBone -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nBone\n"
  },
  {
    "path": "data/models/metalakaste.dymdl",
    "content": "DYMDLv1 324 108 2 1 1\nmetalakaste\nmetalareste\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.994900643825531 0.005098938941955566 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949007630348206 0.994900643825531 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.0 0.999969482421875 -0.0 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 0.3720000088214874 0.0 0.999969482421875 -0.0 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.0 1.0 -0.0 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.47049999237060547 0.0 0.0 0.999969482421875 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.0 0.0 0.999969482421875 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.0 0.0 1.0 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 0.3720000088214874 -0.999969482421875 0.0 -0.0 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 -0.3720000088214874 -0.999969482421875 0.0 -0.0 0.13179369270801544 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 0.3720000088214874 -1.0 0.0 -0.0 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.13179369270801544 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.0 -0.999969482421875 -0.0 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.0 -0.999969482421875 -0.0 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.0 -1.0 -0.0 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.999969482421875 0.0 -0.0 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.999969482421875 0.0 -0.0 0.13179358839988708 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 -0.3720000088214874 1.0 0.0 -0.0 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.0 0.0 -0.999969482421875 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.0 0.0 -0.999969482421875 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.0 0.0 -1.0 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.994900643825531 0.005098938941955566 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.994900643825531 0.005098938941955566 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949007630348206 0.994900643825531 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949007630348206 0.994900643825531 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949008226394653 0.9949010014533997 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949008822441101 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.005099177360534668 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005099058151245117 0.005098968744277954 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949010610580444 0.005099087953567505 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9949009418487549 0.9949009418487549 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.005098968744277954 0.9949008226394653 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.005098938941955566 0.005099058151245117 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.005098938941955566 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9949008822441101 0.005098938941955566 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9949008822441101 0.9949010014533997 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.0 0.999969482421875 -0.0 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 0.3720000088214874 0.0 1.0 -0.0 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 0.3720000088214874 0.0 0.999969482421875 -0.0 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 -0.3720000088214874 -0.3014923632144928 0.904507577419281 0.3014923632144928 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 -0.3720000088214874 0.3014923632144928 0.904507577419281 0.3014923632144928 0.13179366290569305 0.8682063817977905 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.5 0.3720000088214874 0.3014923632144928 0.904507577419281 -0.3014923632144928 0.1317935734987259 0.13179369270801544 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682060837745667 0.8682060241699219 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.5 0.3720000088214874 -0.3014923632144928 0.904507577419281 -0.3014923632144928 0.8682059049606323 0.13179358839988708 0 0.9999986290931702 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.47049999237060547 0.0 0.0 0.999969482421875 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.47049999237060547 0.0 0.0 1.0 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.0 0.0 0.999969482421875 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.5 -0.3014923632144928 0.3014923632144928 0.904507577419281 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 0.5 -0.3014923632144928 -0.3014923632144928 0.904507577419281 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 0.5 0.3014923632144928 -0.3014923632144928 0.904507577419281 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 0.5 0.3014923632144928 0.3014923632144928 0.904507577419281 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 0.3720000088214874 -0.999969482421875 0.0 -0.0 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 -0.3720000088214874 -1.0 0.0 -0.0 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 -0.3720000088214874 -0.999969482421875 0.0 -0.0 0.13179369270801544 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 0.3720000088214874 -0.904507577419281 0.3014923632144928 -0.3014923632144928 0.8682063817977905 0.13179370760917664 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 0.3720000088214874 -0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.13179369270801544 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.5 0.3720000088214874 -0.3720000088214874 -0.904507577419281 -0.3014923632144928 0.3014923632144928 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.13179369270801544 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.5 -0.3720000088214874 -0.3720000088214874 -0.904507577419281 0.3014923632144928 0.3014923632144928 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.0 -0.999969482421875 -0.0 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.0 -1.0 -0.0 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.0 -0.999969482421875 -0.0 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 -0.3720000088214874 0.3014923632144928 -0.904507577419281 0.3014923632144928 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 -0.3720000088214874 -0.7070833444595337 0.0 0.7070833444595337 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 -0.3720000088214874 -0.3014923632144928 -0.904507577419281 0.3014923632144928 0.8682063221931458 0.13179363310337067 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.47049999237060547 0.3720000088214874 -0.7070833444595337 0.0 -0.7070833444595337 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.5 0.3720000088214874 -0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.868206262588501 0.8682063221931458 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 -0.3720000088214874 0.7070833444595337 0.0 0.7070833444595337 0.13179358839988708 0.13179369270801544 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.47049999237060547 0.3720000088214874 0.7070833444595337 0.0 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.5 0.3720000088214874 0.3014923632144928 -0.904507577419281 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.999969482421875 0.0 -0.0 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 0.3720000088214874 1.0 0.0 -0.0 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.999969482421875 0.0 -0.0 0.13179358839988708 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 -0.3720000088214874 0.904507577419281 0.3014923632144928 0.3014923632144928 0.868206262588501 0.1317937821149826 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 -0.3720000088214874 0.0 -0.7070833444595337 0.7070833444595337 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 -0.3720000088214874 0.904507577419281 -0.3014923632144928 0.3014923632144928 0.868206262588501 0.8682063817977905 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.47049999237060547 0.3720000088214874 0.3720000088214874 0.0 -0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.5 0.3720000088214874 0.3720000088214874 0.904507577419281 -0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.868206262588501 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 -0.3720000088214874 0.0 0.7070833444595337 0.7070833444595337 0.868206262588501 0.1317937821149826 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.47049999237060547 -0.3720000088214874 0.3720000088214874 0.0 0.7070833444595337 -0.7070833444595337 0.13179358839988708 0.13179361820220947 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.5 -0.3720000088214874 0.3720000088214874 0.904507577419281 0.3014923632144928 -0.3014923632144928 0.13179358839988708 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.0 0.0 -0.999969482421875 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.0 0.0 -1.0 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.0 0.0 -0.999969482421875 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.5 0.3014923632144928 0.3014923632144928 -0.904507577419281 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.47049999237060547 0.7070833444595337 -0.7070833444595337 -0.0 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 0.3720000088214874 -0.5 0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.8682063221931458 0.8682063221931458 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.47049999237060547 -0.7070833444595337 -0.7070833444595337 -0.0 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n0.3720000088214874 0.3720000088214874 -0.5 -0.3014923632144928 -0.3014923632144928 -0.904507577419281 0.13179363310337067 0.8682062029838562 0 0.9999986886978149 0 0.0 0 0.0 0 0.0\n-0.3720000088214874 -0.3720000088214874 -0.47049999237060547 0.7070833444595337 0.7070833444595337 -0.0 0.8682063817977905 0.13179370760917664 0 0.9999985098838806 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.47049999237060547 -0.7070833444595337 0.7070833444595337 -0.0 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0.3720000088214874 -0.3720000088214874 -0.5 -0.3014923632144928 0.3014923632144928 -0.904507577419281 0.13179369270801544 0.13179361820220947 0 0.9999984502792358 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 1\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 1\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 1\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 1\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 1\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 1\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 1\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 1\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 1\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 1\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 1\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 1\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\nBone -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nBone\n"
  },
  {
    "path": "data/models/mongus.dymdl",
    "content": "DYMDLv1 1500 500 1 13 13\nmongus\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.03984704613685608 0.00020304521603975445 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.15271435678005219 1.1326109170913696 -0.08103625476360321 0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6765074133872986 0 0.47961559891700745 0 0.0 0 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.11636289954185486 1.018743872642517 -0.2921942174434662 0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.5560586452484131 0 0.11100900918245316 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.11636289954185486 1.018743872642517 -0.2921942174434662 0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.5560586452484131 0 0.11100900918245316 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6316680908203125 0.00020304521603975445 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n0.09310946613550186 1.0738946199417114 -0.5040848851203918 0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.4915311634540558 0 0.0 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.5117232203483582 0.08085393905639648 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.15597429871559143 1.3777180910110474 -0.39357221126556396 0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.52517169713974 0 0.0 0 0.0 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.026100318878889084 0.1768089085817337 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.6893323659896851 0.9525341987609863 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.09388621896505356 1.0232656002044678 -0.1361936777830124 0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.7094021439552307 0.8353738784790039 1 0.7060643434524536 0 0.5053098201751709 0 0.0 0 0.0\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.7870696783065796 0.8129236102104187 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.08727402985095978 1.2957605123519897 0.34337759017944336 0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.06262505799531937 1 0.050292082130908966 0 0.0\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.47005921602249146 0.38950857520103455 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.19893279671669006 1.1545631885528564 0.1498781144618988 0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08959674090147018 5 0.05332915484905243 2 0.01339690014719963\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.17454805970191956 1.2118858098983765 0.34130558371543884 0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.04487593099474907 1 0.04441479220986366 5 0.026416389271616936\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.27312296628952026 0.7278225421905518 0.2726402282714844 0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 5 0.5454463958740234 6 0.39267078042030334 0 0.01460160594433546 2 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.26951444149017334 0.581256628036499 0.0984039455652237 0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 6 0.8896211981773376 7 0.05666887015104294 5 0.0470425970852375 0 0.0\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.26951444149017334 0.581256628036499 0.0984039455652237 0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 6 0.8896211981773376 7 0.05666887015104294 5 0.0470425970852375 0 0.0\n0.20572468638420105 0.5131307244300842 -0.0020905807614326477 0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 6 0.8090380430221558 7 0.16335545480251312 0 0.0 0 0.0\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.27883782982826233 0.4228806495666504 0.18713346123695374 0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 7 0.8290210962295532 6 0.15059085190296173 0 0.0 0 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.26951444149017334 0.581256628036499 0.0984039455652237 0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 6 0.8896211981773376 7 0.05666887015104294 5 0.0470425970852375 0 0.0\n0.20572468638420105 0.5131307244300842 -0.0020905807614326477 0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 6 0.8090380430221558 7 0.16335545480251312 0 0.0 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.27883782982826233 0.4228806495666504 0.18713346123695374 0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 7 0.8290210962295532 6 0.15059085190296173 0 0.0 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.2353973239660263 0.23234236240386963 0.17769855260849 0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 7 0.9059193730354309 8 0.08363302052021027 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.27312296628952026 0.7278225421905518 0.2726402282714844 0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 5 0.5454463958740234 6 0.39267078042030334 0 0.01460160594433546 2 0.0\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.14257946610450745 0.8637868762016296 0.4032813608646393 0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 5 0.4740718603134155 0 0.22005127370357513 9 0.13825324177742004 6 0.051402490586042404\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n0.14257946610450745 0.8637868762016296 0.4032813608646393 0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 5 0.4740718603134155 0 0.22005127370357513 9 0.13825324177742004 6 0.051402490586042404\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n0.0 0.9395209550857544 0.5993262529373169 0.0 -0.9361247420310974 -0.35163426399230957 0.8234695196151733 0.2191833257675171 3 0.5215328335762024 2 0.47024640440940857 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.8176729083061218 0.17667889595031738 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.9395209550857544 0.5993262529373169 0.0 -0.9361247420310974 -0.35163426399230957 0.8234695196151733 0.2191833257675171 3 0.5215328335762024 2 0.47024640440940857 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.969742476940155 0.00020304521603975445 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n0.0 1.2170524597167969 0.4608973264694214 0.0 0.6628314852714539 0.748741090297699 0.9399983286857605 0.08305945992469788 2 0.008227117359638214 0 0.0 0 0.0 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n0.04474841430783272 0.9156687259674072 1.1921391487121582 0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.04474841430783272 0.9156687259674072 1.1921391487121582 0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.9405403137207031 1.2368535995483398 0.0 0.5934019088745117 0.8048951625823975 0.9683864712715149 0.5302330851554871 4 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.0 0.886214554309845 1.234582543373108 0.0 -0.6190374493598938 0.7853327989578247 0.9404031038284302 0.540774941444397 4 0.9999971985816956 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n0.04474841430783272 0.9156687259674072 1.1921391487121582 0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.886214554309845 1.234582543373108 0.0 -0.6190374493598938 0.7853327989578247 0.9404031038284302 0.540774941444397 4 0.9999971985816956 0 0.0 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.09310946613550186 1.0738946199417114 -0.5040848851203918 0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.4915311634540558 0 0.0 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.5117232203483582 0.08085393905639648 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.19168177247047424 1.123900294303894 -0.138879656791687 0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7593101859092712 0 0.2120208442211151 0 0.0 0 0.0\n0.15271435678005219 1.1326109170913696 -0.08103625476360321 0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.8785715699195862 0.6217155456542969 1 0.6765074133872986 0 0.47961559891700745 0 0.0 0 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.19893279671669006 1.1545631885528564 0.1498781144618988 0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08959674090147018 5 0.05332915484905243 2 0.01339690014719963\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.240505188703537 1.1706992387771606 -0.23119430243968964 0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6799764037132263 0 0.0969119518995285 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.240505188703537 1.1706992387771606 -0.23119430243968964 0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6799764037132263 0 0.0969119518995285 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.19168177247047424 1.123900294303894 -0.138879656791687 0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7593101859092712 0 0.2120208442211151 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.6893323659896851 0.7009080648422241 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.240505188703537 1.1706992387771606 -0.23119430243968964 0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6799764037132263 0 0.0969119518995285 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.11636289954185486 1.018743872642517 -0.2921942174434662 0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.5560586452484131 0 0.11100900918245316 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.47005921602249146 0.38950857520103455 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.11636289954185486 1.018743872642517 -0.2921942174434662 0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.5560586452484131 0 0.11100900918245316 0 0.0 0 0.0\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n0.0 0.7435801029205322 0.44523051381111145 0.0 -0.7386089563369751 0.6740928292274475 0.4464085102081299 0.5209009647369385 0 0.31352901458740234 9 0.3085489273071289 5 0.3085489273071289 2 0.014867695979773998\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.0 0.7435801029205322 0.44523051381111145 0.0 -0.7386089563369751 0.6740928292274475 0.4464085102081299 0.5209009647369385 0 0.31352901458740234 9 0.3085489273071289 5 0.3085489273071289 2 0.014867695979773998\n0.13284938037395477 0.36867111921310425 0.12644071877002716 -0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 7 0.8813955783843994 6 0.1107533648610115 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.1377425193786621 0.11639571189880371 0.12225279957056046 -0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 7 0.5234586596488953 8 0.4755793809890747 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.11494315415620804 0.6430489420890808 0.021784529089927673 -0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.651059091091156 0.5829592347145081 6 0.7448842525482178 5 0.13043087720870972 9 0.03415199741721153 0 0.016842413693666458\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.3776485323905945 0.7474589347839355 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n0.11494315415620804 0.6430489420890808 0.021784529089927673 -0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.3135816156864166 0.732850193977356 6 0.7448842525482178 5 0.13043087720870972 9 0.03415199741721153 0 0.016842413693666458\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.20572468638420105 0.5131307244300842 -0.0020905807614326477 0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.6855449676513672 0.6661345958709717 6 0.8090380430221558 7 0.16335545480251312 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.6889263391494751 0.5882138609886169 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.20572468638420105 0.5131307244300842 -0.0020905807614326477 0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.6855449676513672 0.6661345958709717 6 0.8090380430221558 7 0.16335545480251312 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.2353973239660263 0.23234236240386963 0.17769855260849 0.2641071677207947 -0.28104496002197266 0.922605037689209 0.5196957588195801 0.8159016370773315 7 0.9059193730354309 8 0.08363302052021027 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.2353973239660263 0.23234236240386963 0.17769855260849 0.2641071677207947 -0.28104496002197266 0.922605037689209 0.5196957588195801 0.8159016370773315 7 0.9059193730354309 8 0.08363302052021027 0 0.0 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.4704653024673462 0.5733580589294434 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.09388621896505356 1.0232656002044678 -0.1361936777830124 0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.05223001912236214 0.31676408648490906 1 0.7060643434524536 0 0.5053098201751709 0 0.0 0 0.0\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.11275650560855865 0.858371376991272 -0.07582104951143265 0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033954620361328 6 0.14807792007923126 5 0.11798923462629318 1 0.06080198287963867\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n0.0 0.8078899383544922 -0.10290303826332092 0.0 -0.5152745246887207 -0.8569902777671814 0.00020304521603975445 0.4368830919265747 0 0.5602840185165405 5 0.09895451366901398 9 0.09895450621843338 6 0.08096460998058319\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.0 0.8078899383544922 -0.10290303826332092 0.0 -0.5152745246887207 -0.8569902777671814 0.00020304521603975445 0.4368830919265747 0 0.5602840185165405 5 0.09895451366901398 9 0.09895450621843338 6 0.08096460998058319\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.6893323659896851 0.9525341987609863 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.7870696783065796 0.8129236102104187 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.0 0.9426074624061584 -0.1419200301170349 0.0 -0.413312166929245 -0.9105807542800903 0.7870696783065796 0.9376175999641418 0 0.6058444380760193 1 0.249999538064003 5 0.01192476972937584 9 0.011924747377634048\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.24097920954227448 0.052500367164611816 0.1248338520526886 0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 8 0.824219822883606 7 0.1755632609128952 0 0.0 0 0.0\n0.1377425193786621 0.11639571189880371 0.12225279957056046 -0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 7 0.5234586596488953 8 0.4755793809890747 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.24097920954227448 0.052500367164611816 0.1248338520526886 0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 8 0.824219822883606 7 0.1755632609128952 0 0.0 0 0.0\n0.17186416685581207 0.0006354935467243195 0.08157961070537567 -0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 8 0.915589451789856 7 0.08427349478006363 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.24097920954227448 0.052500367164611816 0.1248338520526886 0.40839868783950806 -0.49644458293914795 0.765953540802002 0.1878468245267868 0.882355809211731 8 0.824219822883606 7 0.1755632609128952 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.2862442135810852 0.08407890796661377 -0.013642758131027222 0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 8 0.9602087140083313 7 0.029473546892404556 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.20350560545921326 0.0006354935467243195 -0.11223234236240387 -0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 8 0.9989274144172668 0 0.0 0 0.0 0 0.0\n0.2590513527393341 0.0006354935467243195 -0.09128285944461823 0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.6261083483695984 0.999796986579895 8 0.9953135848045349 0 0.0 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.16382159292697906 0.0006354935467243195 -0.08050514757633209 -0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 8 0.986153244972229 0 0.0 0 0.0 0 0.0\n0.17186416685581207 0.0006354935467243195 0.08157961070537567 -0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 8 0.915589451789856 7 0.08427349478006363 0 0.0 0 0.0\n0.20350560545921326 0.0006354935467243195 -0.11223234236240387 -0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 8 0.9989274144172668 0 0.0 0 0.0 0 0.0\n0.14809073507785797 0.03774738311767578 -0.1051795557141304 -0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 8 0.9824442863464355 0 0.0 0 0.0 0 0.0\n0.21444743871688843 0.05028212070465088 -0.15147438645362854 0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.6889263391494751 0.9614924192428589 8 1.0102593898773193 0 0.0 0 0.0 0 0.0\n0.2590513527393341 0.0006354935467243195 -0.09128285944461823 0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 8 0.9953135848045349 0 0.0 0 0.0 0 0.0\n0.21444743871688843 0.05028212070465088 -0.15147438645362854 0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 8 1.0102593898773193 0 0.0 0 0.0 0 0.0\n0.27682194113731384 0.03609919548034668 -0.09393604099750519 0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 8 0.9938223958015442 0 0.0 0 0.0 0 0.0\n0.16382159292697906 0.0006354935467243195 -0.08050514757633209 -0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 8 0.986153244972229 0 0.0 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.17186416685581207 0.0006354935467243195 0.08157961070537567 -0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 8 0.915589451789856 7 0.08427349478006363 0 0.0 0 0.0\n0.14809073507785797 0.03774738311767578 -0.1051795557141304 -0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 8 0.9824442863464355 0 0.0 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.21444743871688843 0.05028212070465088 -0.15147438645362854 0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.6889263391494751 0.9614924192428589 8 1.0102593898773193 0 0.0 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.2590513527393341 0.0006354935467243195 -0.09128285944461823 0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 8 0.9953135848045349 0 0.0 0 0.0 0 0.0\n0.27682194113731384 0.03609919548034668 -0.09393604099750519 0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 8 0.9938223958015442 0 0.0 0 0.0 0 0.0\n0.2862442135810852 0.08407890796661377 -0.013642758131027222 0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 8 0.9602087140083313 7 0.029473546892404556 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.27682194113731384 0.03609919548034668 -0.09393604099750519 0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 8 0.9938223958015442 0 0.0 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.27682194113731384 0.03609919548034668 -0.09393604099750519 0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 8 0.9938223958015442 0 0.0 0 0.0 0 0.0\n0.21444743871688843 0.05028212070465088 -0.15147438645362854 0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 8 1.0102593898773193 0 0.0 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.15271435678005219 1.1326109170913696 -0.08103625476360321 0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6765074133872986 0 0.47961559891700745 0 0.0 0 0.0\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.19893279671669006 1.1545631885528564 0.1498781144618988 0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08959674090147018 5 0.05332915484905243 2 0.01339690014719963\n0.17711219191551208 1.193559169769287 0.0424371063709259 0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.7151136994361877 1 0.23585881292819977 2 0.016049621626734734 0 0.0\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.19893279671669006 1.1545631885528564 0.1498781144618988 0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08959674090147018 5 0.05332915484905243 2 0.01339690014719963\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.09388621896505356 1.0232656002044678 -0.1361936777830124 0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.8785715699195862 0.6988553404808044 1 0.7060643434524536 0 0.5053098201751709 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.007275765296071768 0.5337982773780823 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.11494315415620804 0.6430489420890808 0.021784529089927673 -0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.07110165804624557 0.5535106658935547 6 0.7448842525482178 5 0.13043087720870972 9 0.03415199741721153 0 0.016842413693666458\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n0.0 0.9426074624061584 -0.1419200301170349 0.0 -0.413312166929245 -0.9105807542800903 0.0026334882713854313 0.3612455725669861 0 0.6058444380760193 1 0.249999538064003 5 0.01192476972937584 9 0.011924747377634048\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n0.15597429871559143 1.3777180910110474 -0.39357221126556396 0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.52517169713974 0 0.0 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.15597429871559143 1.3777180910110474 -0.39357221126556396 0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.52517169713974 0 0.0 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.0 1.2263679504394531 -0.5837152004241943 0.0 0.3245033025741577 -0.9458601474761963 0.7843695878982544 0.1751059889793396 1 0.5790085792541504 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.08727402985095978 1.2957605123519897 0.34337759017944336 0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.06262505799531937 1 0.050292082130908966 0 0.0\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.17454805970191956 1.2118858098983765 0.34130558371543884 0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.04487593099474907 1 0.04441479220986366 5 0.026416389271616936\n0.08727402985095978 1.2957605123519897 0.34337759017944336 0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.06262505799531937 1 0.050292082130908966 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.06429819017648697 1.3896068334579468 -0.43792080879211426 0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.532609224319458 0 0.0 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.8172668218612671 0.550440788269043 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n0.06429819017648697 1.3896068334579468 -0.43792080879211426 0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.532609224319458 0 0.0 0 0.0 0 0.0\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.03984704613685608 0.00020304521603975445 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n-0.15271435678005219 1.1326109170913696 -0.08103625476360321 -0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6775277256965637 0 0.479615181684494 2 0.0 0 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n-0.11636289954185486 1.018743872642517 -0.2921942174434662 -0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.556355357170105 0 0.11100170016288757 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6987836360931396 0.8125174641609192 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6316680908203125 0.00020304521603975445 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n-0.09310946613550186 1.0738946199417114 -0.5040848851203918 -0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.49157246947288513 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.4704653024673462 0.463824987411499 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.026100318878889084 0.1768089085817337 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.6893323659896851 0.9525341987609863 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.7870696783065796 0.8129236102104187 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.09388621896505356 1.0232656002044678 -0.1361936777830124 -0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.7094021439552307 0.8353738784790039 1 0.7061814665794373 0 0.505308985710144 0 0.0 0 0.0\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n-0.08727402985095978 1.2957605123519897 0.34337759017944336 -0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.05475941300392151 1 0.038439225405454636 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.47005921602249146 0.38950857520103455 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.19893279671669006 1.1545631885528564 0.1498781144618988 -0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08576151728630066 9 0.05332915112376213 2 0.03160868585109711\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.17454805970191956 1.2118858098983765 0.34130558371543884 -0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.06258596479892731 1 0.03174738213419914 9 0.02641637995839119\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.27312296628952026 0.7278225421905518 0.2726402282714844 -0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 9 0.5454464554786682 10 0.39267075061798096 0 0.01460160594433546 0 0.0\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.27312296628952026 0.7278225421905518 0.2726402282714844 -0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 9 0.5454464554786682 10 0.39267075061798096 0 0.01460160594433546 0 0.0\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.26951444149017334 0.581256628036499 0.0984039455652237 -0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 10 0.8896211981773376 11 0.05666887387633324 9 0.0470425970852375 0 0.0\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.27883782982826233 0.4228806495666504 0.18713346123695374 -0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 11 0.8290210962295532 10 0.15059085190296173 0 0.0 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.26951444149017334 0.581256628036499 0.0984039455652237 -0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 10 0.8896211981773376 11 0.05666887387633324 9 0.0470425970852375 0 0.0\n-0.20572468638420105 0.5131307244300842 -0.0020905807614326477 -0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 10 0.8090380430221558 11 0.16335545480251312 0 0.0 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.26951444149017334 0.581256628036499 0.0984039455652237 -0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 10 0.8896211981773376 11 0.05666887387633324 9 0.0470425970852375 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.27883782982826233 0.4228806495666504 0.18713346123695374 -0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 11 0.8290210962295532 10 0.15059085190296173 0 0.0 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.27883782982826233 0.4228806495666504 0.18713346123695374 -0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 11 0.8290210962295532 10 0.15059085190296173 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.2353973239660263 0.23234236240386963 0.17769855260849 -0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 11 0.9059193730354309 12 0.08363302052021027 0 0.0 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.27312296628952026 0.7278225421905518 0.2726402282714844 -0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 9 0.5454464554786682 10 0.39267075061798096 0 0.01460160594433546 0 0.0\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n-0.14257946610450745 0.8637868762016296 0.4032813608646393 -0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 9 0.4740718901157379 0 0.22005127370357513 5 0.13825324177742004 10 0.05140248313546181\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n-0.14257946610450745 0.8637868762016296 0.4032813608646393 -0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 9 0.4740718901157379 0 0.22005127370357513 5 0.13825324177742004 10 0.05140248313546181\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n-0.14257946610450745 0.8637868762016296 0.4032813608646393 -0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 9 0.4740718901157379 0 0.22005127370357513 5 0.13825324177742004 10 0.05140248313546181\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.9395209550857544 0.5993262529373169 0.0 -0.9361247420310974 -0.35163426399230957 0.8234695196151733 0.2191833257675171 3 0.5215328335762024 2 0.47024640440940857 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.8176729083061218 0.17667889595031738 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.969742476940155 0.00020304521603975445 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n0.0 1.2170524597167969 0.4608973264694214 0.0 0.6628314852714539 0.748741090297699 0.9399983286857605 0.08305945992469788 2 0.008227117359638214 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n-0.04474841430783272 0.9156687259674072 1.1921391487121582 -0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.9405403137207031 1.2368535995483398 0.0 0.5934019088745117 0.8048951625823975 0.9683864712715149 0.5302330851554871 4 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n0.0 0.886214554309845 1.234582543373108 0.0 -0.6190374493598938 0.7853327989578247 0.9404031038284302 0.540774941444397 4 0.9999971985816956 0 0.0 0 0.0 0 0.0\n-0.04474841430783272 0.9156687259674072 1.1921391487121582 -0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.6893323659896851 0.7009080648422241 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.09310946613550186 1.0738946199417114 -0.5040848851203918 -0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.49157246947288513 0 0.0 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n-0.15271435678005219 1.1326109170913696 -0.08103625476360321 -0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.8785715699195862 0.6217155456542969 1 0.6775277256965637 0 0.479615181684494 2 0.0 0 0.0\n-0.19168177247047424 1.123900294303894 -0.138879656791687 -0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7599913477897644 0 0.21201929450035095 0 0.0 0 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.19893279671669006 1.1545631885528564 0.1498781144618988 -0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08576151728630066 9 0.05332915112376213 2 0.03160868585109711\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.240505188703537 1.1706992387771606 -0.23119430243968964 -0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6814895868301392 0 0.09690888226032257 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.19168177247047424 1.123900294303894 -0.138879656791687 -0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7599913477897644 0 0.21201929450035095 0 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.240505188703537 1.1706992387771606 -0.23119430243968964 -0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6814895868301392 0 0.09690888226032257 0 0.0 0 0.0\n-0.19168177247047424 1.123900294303894 -0.138879656791687 -0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7599913477897644 0 0.21201929450035095 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.6893323659896851 0.7009080648422241 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.47005921602249146 0.38950857520103455 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n-0.11636289954185486 1.018743872642517 -0.2921942174434662 -0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.556355357170105 0 0.11100170016288757 0 0.0 0 0.0\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n0.0 0.7435801029205322 0.44523051381111145 0.0 -0.7386089563369751 0.6740928292274475 0.4464085102081299 0.5209009647369385 0 0.31352901458740234 9 0.3085489273071289 5 0.3085489273071289 2 0.014867695979773998\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.13284938037395477 0.36867111921310425 0.12644071877002716 0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 11 0.8813955783843994 10 0.1107533648610115 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n-0.13284938037395477 0.36867111921310425 0.12644071877002716 0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 11 0.8813955783843994 10 0.1107533648610115 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.3776485323905945 0.7474589347839355 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n-0.11494315415620804 0.6430489420890808 0.021784529089927673 0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.3135816156864166 0.732850193977356 10 0.7448842525482178 9 0.13043087720870972 5 0.03415199741721153 0 0.01684240624308586\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n0.0 0.6631669402122498 0.12123018503189087 0.0 -0.9987182021141052 -0.05050813406705856 0.3871926963329315 0.6944447755813599 9 0.30585911870002747 5 0.30585911870002747 10 0.179423525929451 6 0.179423525929451\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.6889263391494751 0.5882138609886169 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.20572468638420105 0.5131307244300842 -0.0020905807614326477 -0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.6855449676513672 0.6661345958709717 10 0.8090380430221558 11 0.16335545480251312 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.2353973239660263 0.23234236240386963 0.17769855260849 -0.2641071677207947 -0.28104496002197266 0.922605037689209 0.5196957588195801 0.8159016370773315 11 0.9059193730354309 12 0.08363302052021027 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.13284938037395477 0.36867111921310425 0.12644071877002716 0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 11 0.8813955783843994 10 0.1107533648610115 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.4704653024673462 0.5733580589294434 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.09388621896505356 1.0232656002044678 -0.1361936777830124 -0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.05223001912236214 0.31676408648490906 1 0.7061814665794373 0 0.505308985710144 0 0.0 0 0.0\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n-0.11494315415620804 0.6430489420890808 0.021784529089927673 0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.07110165804624557 0.5535106658935547 10 0.7448842525482178 9 0.13043087720870972 5 0.03415199741721153 0 0.01684240624308586\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n-0.11275650560855865 0.858371376991272 -0.07582104951143265 -0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033953428268433 10 0.14807790517807007 9 0.11798921227455139 1 0.0606958270072937\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.6893323659896851 0.9525341987609863 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.0 0.9426074624061584 -0.1419200301170349 0.0 -0.413312166929245 -0.9105807542800903 0.7870696783065796 0.9376175999641418 0 0.6058444380760193 1 0.249999538064003 5 0.01192476972937584 9 0.011924747377634048\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.7870696783065796 0.8129236102104187 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.1377425193786621 0.11639571189880371 0.12225279957056046 0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 11 0.5234586596488953 12 0.4755793809890747 0 0.0 0 0.0\n-0.1377425193786621 0.11639571189880371 0.12225279957056046 0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 11 0.5234586596488953 12 0.4755793809890747 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.17186416685581207 0.0006354935467243195 0.08157961070537567 0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 12 0.915589451789856 11 0.08427349478006363 0 0.0 0 0.0\n-0.24097920954227448 0.052500367164611816 0.1248338520526886 -0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 12 0.824219822883606 11 0.1755632609128952 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.2862442135810852 0.08407890796661377 -0.013642758131027222 -0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 12 0.9602087140083313 11 0.029473556205630302 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.2862442135810852 0.08407890796661377 -0.013642758131027222 -0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 12 0.9602087140083313 11 0.029473556205630302 0 0.0 0 0.0\n-0.20350560545921326 0.0006354935467243195 -0.11223234236240387 0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 12 0.9989274144172668 0 0.0 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.2590513527393341 0.0006354935467243195 -0.09128285944461823 -0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.6261083483695984 0.999796986579895 12 0.9953135848045349 0 0.0 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.16382159292697906 0.0006354935467243195 -0.08050514757633209 0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 12 0.986153244972229 0 0.0 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.17186416685581207 0.0006354935467243195 0.08157961070537567 0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 12 0.915589451789856 11 0.08427349478006363 0 0.0 0 0.0\n-0.14809073507785797 0.03774738311767578 -0.1051795557141304 0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 12 0.9824442863464355 0 0.0 0 0.0 0 0.0\n-0.20350560545921326 0.0006354935467243195 -0.11223234236240387 0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 12 0.9989274144172668 0 0.0 0 0.0 0 0.0\n-0.21444743871688843 0.05028212070465088 -0.15147438645362854 -0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.6889263391494751 0.9614924192428589 12 1.0102593898773193 0 0.0 0 0.0 0 0.0\n-0.2590513527393341 0.0006354935467243195 -0.09128285944461823 -0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 12 0.9953135848045349 0 0.0 0 0.0 0 0.0\n-0.21444743871688843 0.05028212070465088 -0.15147438645362854 -0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 12 1.0102593898773193 0 0.0 0 0.0 0 0.0\n-0.20350560545921326 0.0006354935467243195 -0.11223234236240387 0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.043840546160936356 0.9365466833114624 12 0.9989274144172668 0 0.0 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.16382159292697906 0.0006354935467243195 -0.08050514757633209 0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 12 0.986153244972229 0 0.0 0 0.0 0 0.0\n-0.17186416685581207 0.0006354935467243195 0.08157961070537567 0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 12 0.915589451789856 11 0.08427349478006363 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.14809073507785797 0.03774738311767578 -0.1051795557141304 0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 12 0.9824442863464355 0 0.0 0 0.0 0 0.0\n-0.21444743871688843 0.05028212070465088 -0.15147438645362854 -0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.6889263391494751 0.9614924192428589 12 1.0102593898773193 0 0.0 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.2590513527393341 0.0006354935467243195 -0.09128285944461823 -0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 12 0.9953135848045349 0 0.0 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.2862442135810852 0.08407890796661377 -0.013642758131027222 -0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 12 0.9602087140083313 11 0.029473556205630302 0 0.0 0 0.0\n-0.27682194113731384 0.03609919548034668 -0.09393604099750519 -0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 12 0.9938223958015442 0 0.0 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.27682194113731384 0.03609919548034668 -0.09393604099750519 -0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 12 0.9938223958015442 0 0.0 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.21444743871688843 0.05028212070465088 -0.15147438645362854 -0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 12 1.0102593898773193 0 0.0 0 0.0 0 0.0\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.15271435678005219 1.1326109170913696 -0.08103625476360321 -0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6775277256965637 0 0.479615181684494 2 0.0 0 0.0\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.19893279671669006 1.1545631885528564 0.1498781144618988 -0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08576151728630066 9 0.05332915112376213 2 0.03160868585109711\n-0.17711219191551208 1.193559169769287 0.0424371063709259 -0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.715113639831543 1 0.2307407557964325 2 0.01808408461511135 0 0.0\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.09388621896505356 1.0232656002044678 -0.1361936777830124 -0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.8785715699195862 0.6988553404808044 1 0.7061814665794373 0 0.505308985710144 0 0.0 0 0.0\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.007275765296071768 0.5337982773780823 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n-0.11494315415620804 0.6430489420890808 0.021784529089927673 0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.07110165804624557 0.5535106658935547 10 0.7448842525482178 9 0.13043087720870972 5 0.03415199741721153 0 0.01684240624308586\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n-0.11275650560855865 0.858371376991272 -0.07582104951143265 -0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033953428268433 10 0.14807790517807007 9 0.11798921227455139 1 0.0606958270072937\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n-0.15597429871559143 1.3777180910110474 -0.39357221126556396 -0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.5218733549118042 0 0.0 0 0.0 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n-0.06429819017648697 1.3896068334579468 -0.43792080879211426 -0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.5313303470611572 0 0.0 0 0.0 0 0.0\n-0.15597429871559143 1.3777180910110474 -0.39357221126556396 -0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.5218733549118042 0 0.0 0 0.0 0 0.0\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.08727402985095978 1.2957605123519897 0.34337759017944336 -0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.05475941300392151 1 0.038439225405454636 0 0.0\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.17454805970191956 1.2118858098983765 0.34130558371543884 -0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.06258596479892731 1 0.03174738213419914 9 0.02641637995839119\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n-0.17454805970191956 1.2118858098983765 0.34130558371543884 -0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.06258596479892731 1 0.03174738213419914 9 0.02641637995839119\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n-0.06429819017648697 1.3896068334579468 -0.43792080879211426 -0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.5313303470611572 0 0.0 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.8172668218612671 0.550440788269043 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.058150164783000946 1.453392744064331 -0.0034714294597506523 0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.38084477186203003 0 0.2609921395778656 2 0.015516634099185467 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.17711219191551208 1.193559169769287 0.0424371063709259 0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.7151136994361877 1 0.23585881292819977 2 0.016049621626734734 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.15271435678005219 1.1326109170913696 -0.08103625476360321 0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6765074133872986 0 0.47961559891700745 0 0.0 0 0.0\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.11275650560855865 0.858371376991272 -0.07582104951143265 0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033954620361328 6 0.14807792007923126 5 0.11798923462629318 1 0.06080198287963867\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.11636289954185486 1.018743872642517 -0.2921942174434662 0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.5560586452484131 0 0.11100900918245316 0 0.0 0 0.0\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6987836360931396 0.8125174641609192 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6316680908203125 0.00020304521603975445 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n0.09310946613550186 1.0738946199417114 -0.5040848851203918 0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.4915311634540558 0 0.0 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.4704653024673462 0.463824987411499 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.026100318878889084 0.1768089085817337 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n0.08727402985095978 1.2957605123519897 0.34337759017944336 0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.06262505799531937 1 0.050292082130908966 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.17454805970191956 1.2118858098983765 0.34130558371543884 0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.04487593099474907 1 0.04441479220986366 5 0.026416389271616936\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.27312296628952026 0.7278225421905518 0.2726402282714844 0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 5 0.5454463958740234 6 0.39267078042030334 0 0.01460160594433546 2 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.26951444149017334 0.581256628036499 0.0984039455652237 0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 6 0.8896211981773376 7 0.05666887015104294 5 0.0470425970852375 0 0.0\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.27883782982826233 0.4228806495666504 0.18713346123695374 0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 7 0.8290210962295532 6 0.15059085190296173 0 0.0 0 0.0\n0.28093862533569336 0.5757372379302979 0.21273201704025269 0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 6 0.7957403063774109 5 0.1119142472743988 7 0.07978744804859161 0 0.0\n0.27883782982826233 0.4228806495666504 0.18713346123695374 0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 7 0.8290210962295532 6 0.15059085190296173 0 0.0 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.20572468638420105 0.5131307244300842 -0.0020905807614326477 0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 6 0.8090380430221558 7 0.16335545480251312 0 0.0 0 0.0\n0.26951444149017334 0.581256628036499 0.0984039455652237 0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 6 0.8896211981773376 7 0.05666887015104294 5 0.0470425970852375 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.2353973239660263 0.23234236240386963 0.17769855260849 0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 7 0.9059193730354309 8 0.08363302052021027 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.27883782982826233 0.4228806495666504 0.18713346123695374 0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 7 0.8290210962295532 6 0.15059085190296173 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.2707471251487732 0.4457245469093323 0.09905719757080078 0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 7 0.9251940250396729 6 0.06983630359172821 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.2353973239660263 0.23234236240386963 0.17769855260849 0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 7 0.9059193730354309 8 0.08363302052021027 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.2784595489501953 0.2965812683105469 0.1400669515132904 0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 7 0.967033863067627 0 0.0 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.27060168981552124 0.31022095680236816 0.05954404175281525 0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 7 0.9850865006446838 0 0.0 0 0.0 0 0.0\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.27312296628952026 0.7278225421905518 0.2726402282714844 0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 5 0.5454463958740234 6 0.39267078042030334 0 0.01460160594433546 2 0.0\n0.2720791697502136 0.7299654483795166 0.11808101087808609 0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 5 0.7446416020393372 6 0.1995791345834732 0 0.022359486669301987 0 0.0\n0.27550312876701355 0.891650915145874 0.1857611984014511 0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 5 0.6623887419700623 0 0.23774738609790802 6 0.02405529096722603 2 0.0070293257012963295\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.27312296628952026 0.7278225421905518 0.2726402282714844 0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 5 0.5454463958740234 6 0.39267078042030334 0 0.01460160594433546 2 0.0\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.14257946610450745 0.8637868762016296 0.4032813608646393 0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 5 0.4740718603134155 0 0.22005127370357513 9 0.13825324177742004 6 0.051402490586042404\n0.22658583521842957 0.8450055122375488 0.3317200243473053 0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 5 0.6072814464569092 0 0.1840784102678299 6 0.09625957161188126 9 0.0649503543972969\n0.14257946610450745 0.8637868762016296 0.4032813608646393 0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 5 0.4740718603134155 0 0.22005127370357513 9 0.13825324177742004 6 0.051402490586042404\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.15384304523468018 0.9721025228500366 0.4255926311016083 0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 5 0.23368224501609802 9 0.17045892775058746 2 0.005570483859628439\n0.14257946610450745 0.8637868762016296 0.4032813608646393 0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 5 0.4740718603134155 0 0.22005127370357513 9 0.13825324177742004 6 0.051402490586042404\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.04179486632347107 0.9364920258522034 0.7827037572860718 0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.8176729083061218 0.17667889595031738 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n0.043747562915086746 0.9720137119293213 0.6651729345321655 0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.06145928055047989 1.0601720809936523 0.5009114146232605 0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.3894650638103485 0 0.0 0 0.0 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.0 1.2170524597167969 0.4608973264694214 0.0 0.6628314852714539 0.748741090297699 0.9399983286857605 0.08305945992469788 2 0.008227117359638214 0 0.0 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.04474841430783272 0.9156687259674072 1.1921391487121582 0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n0.04474841430783272 0.9156687259674072 1.1921391487121582 0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n0.0 0.9405403137207031 1.2368535995483398 0.0 0.5934019088745117 0.8048951625823975 0.9683864712715149 0.5302330851554871 4 0.9999966025352478 0 0.0 0 0.0 0 0.0\n0.11636289954185486 1.0498738288879395 -0.43372729420661926 0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4745221734046936 0 0.016028281301259995 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.6893323659896851 0.7009080648422241 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.09310946613550186 1.0738946199417114 -0.5040848851203918 0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.4915311634540558 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.19168177247047424 1.123900294303894 -0.138879656791687 0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7593101859092712 0 0.2120208442211151 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.15271435678005219 1.1326109170913696 -0.08103625476360321 0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.8785715699195862 0.6217155456542969 1 0.6765074133872986 0 0.47961559891700745 0 0.0 0 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.17711219191551208 1.193559169769287 0.0424371063709259 0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.7151136994361877 1 0.23585881292819977 2 0.016049621626734734 0 0.0\n0.19893279671669006 1.1545631885528564 0.1498781144618988 0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08959674090147018 5 0.05332915484905243 2 0.01339690014719963\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.240505188703537 1.1706992387771606 -0.23119430243968964 0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6799764037132263 0 0.0969119518995285 0 0.0 0 0.0\n0.19168177247047424 1.123900294303894 -0.138879656791687 0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7593101859092712 0 0.2120208442211151 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.240505188703537 1.1706992387771606 -0.23119430243968964 0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6799764037132263 0 0.0969119518995285 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.2077341377735138 1.1319550275802612 -0.30893459916114807 0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6332035660743713 0 0.06388173252344131 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.18298302590847015 1.097515344619751 -0.457849383354187 0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5162564516067505 0 0.0 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.19168177247047424 1.123900294303894 -0.138879656791687 0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7593101859092712 0 0.2120208442211151 0 0.0 0 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.11636289954185486 1.0278944969177246 -0.36559149622917175 0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48844844102859497 0 0.06050974503159523 0 0.0 0 0.0\n0.18298302590847015 1.0755360126495361 -0.3897135853767395 0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.514851450920105 0 0.025219354778528214 0 0.0 0 0.0\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.18298302590847015 1.0663853883743286 -0.31631630659103394 0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5746728181838989 0 0.07987833023071289 0 0.0 0 0.0\n0.19168177247047424 1.1063168048858643 -0.18283823132514954 0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7554553151130676 0 0.16079266369342804 0 0.0 0 0.0\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n0.19692060351371765 0.6521245837211609 0.3191433846950531 0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 5 0.6037587523460388 6 0.2468358874320984 9 0.06982867419719696 0 0.03735736384987831\n0.0700145810842514 0.7434864640235901 0.4208555817604065 0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 9 0.3594251573085785 0 0.33582302927970886 5 0.23320455849170685 6 0.009845871478319168\n0.13284938037395477 0.36867111921310425 0.12644071877002716 -0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 7 0.8813955783843994 6 0.1107533648610115 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.13284938037395477 0.36867111921310425 0.12644071877002716 -0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 7 0.8813955783843994 6 0.1107533648610115 0 0.0 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.0 0.6631669402122498 0.12123018503189087 0.0 -0.9987182021141052 -0.05050813406705856 0.3871926963329315 0.6944447755813599 9 0.30585911870002747 5 0.30585911870002747 10 0.179423525929451 6 0.179423525929451\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.3776485323905945 0.7474589347839355 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n0.0 0.6631669402122498 0.12123018503189087 0.0 -0.9987182021141052 -0.05050813406705856 0.3871926963329315 0.6944447755813599 9 0.30585911870002747 5 0.30585911870002747 10 0.179423525929451 6 0.179423525929451\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.15695250034332275 0.13945317268371582 0.05766453221440315 -0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 7 0.7702589631080627 8 0.229200541973114 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.21422770619392395 0.2696647644042969 0.002181949093937874 0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 7 0.95918208360672 8 0.022087600082159042 0 0.0 0 0.0\n0.16027027368545532 0.24704813957214355 0.04676051810383797 -0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 7 0.9630122780799866 8 0.014977212063968182 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.22422879934310913 0.414276123046875 0.015284525230526924 0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 7 0.9109067320823669 6 0.0850052535533905 0 0.0 0 0.0\n0.14990682899951935 0.3839050531387329 0.037518344819545746 -0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 7 0.9107308983802795 6 0.08409671485424042 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.14543934166431427 0.49590951204299927 0.026219138875603676 -0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 6 0.8432952761650085 7 0.1331702321767807 0 0.0 0 0.0\n0.11494315415620804 0.6430489420890808 0.021784529089927673 -0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.651059091091156 0.5829592347145081 6 0.7448842525482178 5 0.13043087720870972 9 0.03415199741721153 0 0.016842413693666458\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.6889263391494751 0.5882138609886169 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.1377425193786621 0.11639571189880371 0.12225279957056046 -0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 7 0.5234586596488953 8 0.4755793809890747 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.13284938037395477 0.36867111921310425 0.12644071877002716 -0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 7 0.8813955783843994 6 0.1107533648610115 0 0.0 0 0.0\n0.14394588768482208 0.23762118816375732 0.13662073016166687 -0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 7 0.9305272102355957 8 0.05715407058596611 0 0.0 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.13284938037395477 0.36867111921310425 0.12644071877002716 -0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 7 0.8813955783843994 6 0.1107533648610115 0 0.0 0 0.0\n0.22996719181537628 0.3549819588661194 0.21869893372058868 0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 7 0.8741137981414795 6 0.10180454701185226 0 0.0 0 0.0\n0.09827211499214172 0.6246875524520874 0.11954677850008011 -0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 6 0.836905837059021 5 0.07508403807878494 9 0.04053134843707085 0 0.0\n0.13148938119411469 0.47692030668258667 0.12428713589906693 -0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 6 0.8819923400878906 7 0.10448935627937317 0 0.0 0 0.0\n0.23106297850608826 0.49126142263412476 0.25890085101127625 0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 6 0.7228800058364868 7 0.17418056726455688 5 0.08285880833864212 0 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.17758521437644958 1.0509424209594727 -0.009452779777348042 0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504677176475525 1 0.16195771098136902 5 0.05459079146385193 2 0.0\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.18157455325126648 0.6501905918121338 0.005674920976161957 0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 6 0.7585892677307129 5 0.17383593320846558 0 0.0 0 0.0\n0.11494315415620804 0.6430489420890808 0.021784529089927673 -0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.07110165804624557 0.5535106658935547 6 0.7448842525482178 5 0.13043087720870972 9 0.03415199741721153 0 0.016842413693666458\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n0.11275650560855865 0.858371376991272 -0.07582104951143265 0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033954620361328 6 0.14807792007923126 5 0.11798923462629318 1 0.06080198287963867\n0.07171060144901276 0.7989503741264343 -0.08710231631994247 0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 6 0.14961421489715576 5 0.14801231026649475 9 0.0648399293422699\n0.2632824182510376 0.192702054977417 0.030293196439743042 0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 7 0.8625421524047852 8 0.13671985268592834 0 0.0 0 0.0\n0.27068033814430237 0.17515099048614502 0.10558918118476868 0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 7 0.8328282237052917 8 0.16480152308940887 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.1377425193786621 0.11639571189880371 0.12225279957056046 -0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 7 0.5234586596488953 8 0.4755793809890747 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.24138523638248444 0.1334514617919922 0.1541205644607544 0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 7 0.5651088356971741 8 0.4341517984867096 0 0.0 0 0.0\n0.24097920954227448 0.052500367164611816 0.1248338520526886 0.40839868783950806 -0.49644458293914795 0.765953540802002 0.1878468245267868 0.882355809211731 8 0.824219822883606 7 0.1755632609128952 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.24097920954227448 0.052500367164611816 0.1248338520526886 0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 8 0.824219822883606 7 0.1755632609128952 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.17186416685581207 0.0006354935467243195 0.08157961070537567 -0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 8 0.915589451789856 7 0.08427349478006363 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.17186416685581207 0.0006354935467243195 0.08157961070537567 -0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 8 0.915589451789856 7 0.08427349478006363 0 0.0 0 0.0\n0.14728760719299316 0.0641862154006958 0.11256571114063263 -0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 8 0.7242515683174133 7 0.27535006403923035 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.279649019241333 0.08738040924072266 0.07750121504068375 0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 8 0.8143556118011475 7 0.185213103890419 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.2741932272911072 0.11445808410644531 0.004911437630653381 0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 8 0.8897741436958313 7 0.11008638888597488 0 0.0 0 0.0\n0.2862442135810852 0.08407890796661377 -0.013642758131027222 0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 8 0.9602087140083313 7 0.029473546892404556 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.21539007127285004 0.1667546033859253 -0.007906094193458557 -0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 8 0.8476832509040833 7 0.15203344821929932 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.14809073507785797 0.03774738311767578 -0.1051795557141304 -0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 8 0.9824442863464355 0 0.0 0 0.0 0 0.0\n0.16382159292697906 0.0006354935467243195 -0.08050514757633209 -0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 8 0.986153244972229 0 0.0 0 0.0 0 0.0\n0.20350560545921326 0.0006354935467243195 -0.11223234236240387 -0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 8 0.9989274144172668 0 0.0 0 0.0 0 0.0\n0.16382159292697906 0.0006354935467243195 -0.08050514757633209 -0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 8 0.986153244972229 0 0.0 0 0.0 0 0.0\n0.14809073507785797 0.03774738311767578 -0.1051795557141304 -0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 8 0.9824442863464355 0 0.0 0 0.0 0 0.0\n0.2590513527393341 0.0006354935467243195 -0.09128285944461823 0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 8 0.9953135848045349 0 0.0 0 0.0 0 0.0\n0.20350560545921326 0.0006354935467243195 -0.11223234236240387 -0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.043840546160936356 0.9365466833114624 8 0.9989274144172668 0 0.0 0 0.0 0 0.0\n0.21444743871688843 0.05028212070465088 -0.15147438645362854 0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 8 1.0102593898773193 0 0.0 0 0.0 0 0.0\n0.16382159292697906 0.0006354935467243195 -0.08050514757633209 -0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 8 0.986153244972229 0 0.0 0 0.0 0 0.0\n0.20350560545921326 0.0006354935467243195 -0.11223234236240387 -0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 8 0.9989274144172668 0 0.0 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.14809073507785797 0.03774738311767578 -0.1051795557141304 -0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 8 0.9824442863464355 0 0.0 0 0.0 0 0.0\n0.1543327420949936 0.08759307861328125 0.01969859004020691 -0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 8 0.8263624310493469 7 0.17350547015666962 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.2765810489654541 0.0468442440032959 0.0249030739068985 0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 8 0.9507208466529846 7 0.0483645461499691 0 0.0 0 0.0\n0.24350489675998688 0.0006354935467243195 0.051150236278772354 0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 8 0.951987624168396 7 0.045869868248701096 0 0.0 0 0.0\n0.2590513527393341 0.0006354935467243195 -0.09128285944461823 0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 8 0.9953135848045349 0 0.0 0 0.0 0 0.0\n0.22046658396720886 0.09783637523651123 -0.07096876204013824 0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 8 0.99355149269104 0 0.0 0 0.0 0 0.0\n0.2862442135810852 0.08407890796661377 -0.013642758131027222 0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 8 0.9602087140083313 7 0.029473546892404556 0 0.0 0 0.0\n0.27682194113731384 0.03609919548034668 -0.09393604099750519 0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 8 0.9938223958015442 0 0.0 0 0.0 0 0.0\n0.17711219191551208 1.2111425399780273 -0.08284486830234528 0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6505640745162964 0 0.27260327339172363 0 0.0 0 0.0\n0.17711219191551208 1.193559169769287 0.0424371063709259 0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.7151136994361877 1 0.23585881292819977 2 0.016049621626734734 0 0.0\n0.17734870314598083 1.1222507953643799 0.016492163762450218 0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400460243225098 1 0.2110891044139862 5 0.021712277084589005 2 0.0\n0.2174592912197113 1.1028785705566406 0.2627961039543152 0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 5 0.11019442975521088 1 0.029866231605410576 2 0.00028992959414608777\n0.23453930020332336 0.9702152013778687 0.2602241337299347 0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.49000686407089233 5 0.30810508131980896 9 0.014790344052016735 6 0.01452652644366026\n0.23453930020332336 1.0399465560913086 0.12781919538974762 0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 5 0.15077143907546997 1 0.04978937283158302 2 0.004751469939947128\n0.17711219191551208 1.193559169769287 0.0424371063709259 0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.7151136994361877 1 0.23585881292819977 2 0.016049621626734734 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.11636289954185486 1.053910732269287 -0.19108946621418 0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.827496349811554 0 0.24267560243606567 0 0.0 0 0.0\n0.1329372525215149 1.081725835800171 -0.11218704283237457 0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7744880318641663 0 0.403382271528244 0 0.0 0 0.0\n0.09388621896505356 1.0232656002044678 -0.1361936777830124 0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.8785715699195862 0.6988553404808044 1 0.7060643434524536 0 0.5053098201751709 0 0.0 0 0.0\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.007275765296071768 0.5337982773780823 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n0.09191875904798508 0.7384775280952454 -0.004247918725013733 0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 6 0.3449857234954834 5 0.3330496847629547 0 0.19796177744865417 9 0.05866539850831032\n0.10067398101091385 0.9663213491439819 -0.08786684274673462 0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806142330169678 1 0.19555994868278503 5 0.04794131591916084 6 0.04703441634774208\n0.11275650560855865 0.858371376991272 -0.07582104951143265 0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033954620361328 6 0.14807792007923126 5 0.11798923462629318 1 0.06080198287963867\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n0.16467930376529694 0.764995813369751 -0.0035517215728759766 0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 6 0.42210859060287476 5 0.36726126074790955 0 0.15537992119789124 0 0.0\n0.11275650560855865 0.858371376991272 -0.07582104951143265 0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033954620361328 6 0.14807792007923126 5 0.11798923462629318 1 0.06080198287963867\n0.17548006772994995 0.9740344882011414 0.03773410618305206 0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296561002731323 5 0.13401056826114655 1 0.05976245924830437 6 0.02519860677421093\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n0.05299364775419235 0.9086697101593018 1.127077579498291 0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n0.04524477198719978 0.9055635929107666 0.9612237811088562 0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757720947266 0 0.0 0 0.0 0 0.0\n0.15597429871559143 1.3777180910110474 -0.39357221126556396 0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.52517169713974 0 0.0 0 0.0 0 0.0\n0.06429819017648697 1.3896068334579468 -0.43792080879211426 0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.532609224319458 0 0.0 0 0.0 0 0.0\n0.09474784880876541 1.4414864778518677 -0.305348664522171 0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.4937168061733246 0 0.006853099912405014 0 0.0 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.06429819017648697 1.3896068334579468 -0.43792080879211426 0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.532609224319458 0 0.0 0 0.0 0 0.0\n0.15597429871559143 1.3777180910110474 -0.39357221126556396 0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.52517169713974 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.09310946613550186 1.0738946199417114 -0.5040848851203918 0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.4915311634540558 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n0.0 1.2263679504394531 -0.5837152004241943 0.0 0.3245033025741577 -0.9458601474761963 0.7843695878982544 0.1751059889793396 1 0.5790085792541504 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.06438668072223663 1.2186225652694702 -0.5522415637969971 0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5838661193847656 0 0.0 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.11392863094806671 1.1170620918273926 -0.5390962958335876 0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5385183095932007 0 0.0 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.21954664587974548 1.2720890045166016 -0.26756638288497925 0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.4704653024673462 0.463824987411499 1 0.5512939095497131 0 0.05323823541402817 0 0.0 0 0.0\n0.19536322355270386 1.1583302021026611 -0.38174155354499817 0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.5957530736923218 0 0.01954641565680504 0 0.0 0 0.0\n0.07297612726688385 1.3934298753738403 0.16687017679214478 0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.19868381321430206 2 0.00027996301651000977 0 0.0\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.11630034446716309 1.385688066482544 0.011257962323725224 0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 1 0.4200000762939453 0 0.41010770201683044 2 0.021439071744680405 0 0.0\n0.08727402985095978 1.2957605123519897 0.34337759017944336 0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.06262505799531937 1 0.050292082130908966 0 0.0\n0.17454805970191956 1.2118858098983765 0.34130558371543884 0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.04487593099474907 1 0.04441479220986366 5 0.026416389271616936\n0.1459522545337677 1.3251063823699951 0.18270058929920197 0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.13441134989261627 2 0.0002072147763101384 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n0.0650172010064125 1.190718173980713 0.442444771528244 0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.05483977124094963 0 0.0 0 0.0 0 0.0\n0.1461862027645111 1.0710813999176025 0.3844836950302124 0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 5 0.10197971016168594 9 0.05613459274172783 2 0.03635368496179581\n0.17454805970191956 1.2118858098983765 0.34130558371543884 0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.04487593099474907 1 0.04441479220986366 5 0.026416389271616936\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.18102072179317474 1.268702745437622 -0.39696988463401794 0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5544809699058533 0 0.0 0 0.0 0 0.0\n0.1287733018398285 1.2108771800994873 -0.5207679867744446 0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5873615145683289 0 0.0 0 0.0 0 0.0\n0.06429819017648697 1.3896068334579468 -0.43792080879211426 0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.532609224319458 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.8172668218612671 0.550440788269043 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n0.07297612726688385 1.460466742515564 -0.16172027587890625 0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.43864887952804565 0 0.0806228369474411 0 0.0 0 0.0\n0.1459522545337677 1.3888463973999023 -0.1359991729259491 0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.47086650133132935 0 0.11861134320497513 0 0.0 0 0.0\n0.18949569761753082 1.3684693574905396 -0.2584112286567688 0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.5081745386123657 0 0.03876670077443123 0 0.0 0 0.0\n0.04986967518925667 1.2690738439559937 -0.4816516935825348 0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5935874581336975 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n0.0 1.4161217212677002 0.1510397493839264 0.0 0.9378948211669922 0.34690389037132263 0.28625792264938354 0.11215589195489883 0 0.4460723102092743 1 0.2005683183670044 2 0.000560328655410558 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n0.0 1.4864554405212402 -0.1874413788318634 0.0 0.999664306640625 -0.02554399147629738 0.12280824035406113 0.02889185957610607 1 0.42892152070999146 0 0.06715913861989975 0 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.17711219191551208 1.193559169769287 0.0424371063709259 -0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.715113639831543 1 0.2307407557964325 2 0.01808408461511135 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.15271435678005219 1.1326109170913696 -0.08103625476360321 -0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.10731169581413269 0.2683471441268921 1 0.6775277256965637 0 0.479615181684494 2 0.0 0 0.0\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.11275650560855865 0.858371376991272 -0.07582104951143265 -0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033953428268433 10 0.14807790517807007 9 0.11798921227455139 1 0.0606958270072937\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n0.0 1.0181424617767334 -0.20196408033370972 0.0 -0.9700308442115784 -0.24283577501773834 0.8594119548797607 0.7608353495597839 1 0.9506118297576904 0 0.27259060740470886 0 0.0 0 0.0\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n-0.11636289954185486 1.018743872642517 -0.2921942174434662 -0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.556355357170105 0 0.11100170016288757 0 0.0 0 0.0\n0.0 1.0058256387710571 -0.31092268228530884 0.0 -0.999969482421875 0.0018921475857496262 0.8017098903656006 0.7843313217163086 1 0.5234434008598328 0 0.1049714908003807 0 0.0 0 0.0\n-0.11636289954185486 1.018743872642517 -0.2921942174434662 -0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.556355357170105 0 0.11100170016288757 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n0.0 1.0128729343414307 -0.41166767477989197 0.0 -0.9807122945785522 -0.19541001319885254 0.7478660345077515 0.8006981611251831 1 0.45380619168281555 0 0.0400310717523098 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n0.0 1.0367169380187988 -0.4998640716075897 0.0 -0.82528156042099 -0.5646839737892151 0.6316680908203125 0.00020304521603975445 1 0.4652153253555298 0 0.0 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.5117232203483582 0.08085393905639648 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n-0.09310946613550186 1.0738946199417114 -0.5040848851203918 -0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.49157246947288513 0 0.0 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n-0.15597429871559143 1.3777180910110474 -0.39357221126556396 -0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.5218733549118042 0 0.0 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.026100318878889084 0.1768089085817337 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.1459522545337677 1.3888463973999023 -0.1359991729259491 -0.8357188701629639 0.5164341926574707 0.18662068247795105 0.11418572813272476 0.1270817071199417 1 0.4451029896736145 0 0.11861109733581543 0 0.0 0 0.0\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n-0.08727402985095978 1.2957605123519897 0.34337759017944336 -0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.05475941300392151 1 0.038439225405454636 0 0.0\n0.0 1.3340036869049072 0.3454495668411255 0.0 0.8117618560791016 0.5839411616325378 0.3762849271297455 0.1762322634458542 0 0.15578706562519073 1 0.05526821315288544 2 0.030873998999595642 0 0.0\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.4337987005710602 0.340542733669281 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.17454805970191956 1.2118858098983765 0.34130558371543884 -0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.06258596479892731 1 0.03174738213419914 9 0.02641637995839119\n-0.1461862027645111 1.0710813999176025 0.3844836950302124 -0.808252215385437 0.17184972763061523 0.5631580352783203 0.3577803373336792 0.3372943699359894 0 0.205034539103508 9 0.10197971016168594 5 0.05613458901643753 2 0.02603248320519924\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.26951444149017334 0.581256628036499 0.0984039455652237 -0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 10 0.8896211981773376 11 0.05666887387633324 9 0.0470425970852375 0 0.0\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.20572468638420105 0.5131307244300842 -0.0020905807614326477 -0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 10 0.8090380430221558 11 0.16335545480251312 0 0.0 0 0.0\n-0.26951444149017334 0.581256628036499 0.0984039455652237 -0.9248329401016235 0.04589983820915222 -0.37754449248313904 0.17511127889156342 0.5908189415931702 10 0.8896211981773376 11 0.05666887387633324 9 0.0470425970852375 0 0.0\n-0.27883782982826233 0.4228806495666504 0.18713346123695374 -0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 11 0.8290210962295532 10 0.15059085190296173 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.26937639713287354 0.6458678245544434 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.27883782982826233 0.4228806495666504 0.18713346123695374 -0.938962996006012 -0.1031220406293869 0.32813501358032227 0.219543918967247 0.6785994172096252 11 0.8290210962295532 10 0.15059085190296173 0 0.0 0 0.0\n-0.28093862533569336 0.5757372379302979 0.21273201704025269 -0.9537339210510254 -0.05871761217713356 0.2947782874107361 0.23695819079875946 0.5966961979866028 10 0.7957403063774109 9 0.1119142398238182 11 0.07978744059801102 0 0.0\n-0.20572468638420105 0.5131307244300842 -0.0020905807614326477 -0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.10834519565105438 0.6240481734275818 10 0.8090380430221558 11 0.16335545480251312 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.2353973239660263 0.23234236240386963 0.17769855260849 -0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 11 0.9059193730354309 12 0.08363302052021027 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.24566324055194855 0.7194404006004333 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.2707471251487732 0.4457245469093323 0.09905719757080078 -0.9538865089416504 0.043977171182632446 -0.29688405990600586 0.17186789214611053 0.6645772457122803 11 0.9251940250396729 10 0.06983630359172821 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.2784595489501953 0.2965812683105469 0.1400669515132904 -0.9597155451774597 -0.10385448485612869 0.2609942853450775 0.19252367317676544 0.7464392781257629 11 0.967033863067627 0 0.0 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.11860677599906921 0.6787413358688354 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.2353973239660263 0.23234236240386963 0.17769855260849 -0.2641071677207947 -0.28104496002197266 0.922605037689209 0.21930597722530365 0.7849949598312378 11 0.9059193730354309 12 0.08363302052021027 0 0.0 0 0.0\n-0.27060168981552124 0.31022095680236816 0.05954404175281525 -0.9107333421707153 0.04211554303765297 -0.4108096659183502 0.1486281454563141 0.7380485534667969 11 0.9850865006446838 0 0.0 0 0.0 0 0.0\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.27068033814430237 0.17515099048614502 0.10558918118476868 -0.9747001528739929 -0.030365917831659317 0.2213507443666458 0.17252767086029053 0.8140662312507629 11 0.8328282237052917 12 0.16480152308940887 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.10336703807115555 0.7562169432640076 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.2720791697502136 0.7299654483795166 0.11808101087808609 -0.9231238961219788 0.09189122915267944 -0.3733329176902771 0.19017235934734344 0.5118117332458496 9 0.7446416020393372 10 0.1995791345834732 0 0.022359486669301987 0 0.0\n-0.27312296628952026 0.7278225421905518 0.2726402282714844 -0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 9 0.5454464554786682 10 0.39267075061798096 0 0.01460160594433546 0 0.0\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n-0.27312296628952026 0.7278225421905518 0.2726402282714844 -0.8949247598648071 -0.053621020168066025 0.442945659160614 0.2700149416923523 0.5173874497413635 9 0.5454464554786682 10 0.39267075061798096 0 0.01460160594433546 0 0.0\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.27550312876701355 0.891650915145874 0.1857611984014511 -0.9843134880065918 0.15448468923568726 -0.08484145998954773 0.2322322577238083 0.43014711141586304 9 0.6623887419700623 0 0.23774738609790802 10 0.02405528351664543 2 0.014952762052416801\n-0.22658583521842957 0.8450055122375488 0.3317200243473053 -0.7574999332427979 0.09625537693500519 0.6456496119499207 0.3105680048465729 0.4587601125240326 9 0.6072814464569092 0 0.1840784102678299 10 0.09625955671072006 5 0.06495034694671631\n-0.15384304523468018 0.9721025228500366 0.4255926311016083 -0.7845393419265747 0.012146366760134697 0.6199224591255188 0.37392598390579224 0.3897009491920471 0 0.2848208546638489 9 0.23368224501609802 5 0.17045892775058746 2 0.012886017560958862\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.14257946610450745 0.8637868762016296 0.4032813608646393 -0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 9 0.4740718901157379 0 0.22005127370357513 5 0.13825324177742004 10 0.05140248313546181\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n0.0 0.857164740562439 0.5244574546813965 0.0 -0.2601702809333801 0.965544581413269 0.47005921602249146 0.45042261481285095 9 0.27887073159217834 5 0.27887073159217834 0 0.22324655950069427 2 0.006800635252147913\n-0.14257946610450745 0.8637868762016296 0.4032813608646393 -0.6905118227005005 -0.1661732792854309 0.7039399147033691 0.36863672733306885 0.4478047788143158 9 0.4740718901157379 0 0.22005127370357513 5 0.13825324177742004 10 0.05140248313546181\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.8555480241775513 0.9201857447624207 0.0 -0.9908444285392761 -0.1347697377204895 0.8575089573860168 0.39543601870536804 4 0.9604564309120178 3 0.029231343418359756 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n0.0 0.9917649626731873 0.767984926700592 0.0 0.9606006145477295 0.2778710424900055 0.9070184826850891 0.2867380976676941 3 0.9851999282836914 0 0.0 0 0.0 0 0.0\n0.0 0.8914740085601807 0.7481175661087036 0.0 -0.9678640365600586 -0.25135043263435364 0.8374303579330444 0.3030059337615967 3 0.9701143503189087 0 0.0 0 0.0 0 0.0\n-0.04179486632347107 0.9364920258522034 0.7827037572860718 -0.99993896484375 -0.010345774702727795 0.00030518509447574615 0.8751721382141113 0.30800822377204895 3 0.9776166081428528 4 0.0011483989655971527 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 0.9691419005393982 0.525084912776947 0.0 -0.6431470513343811 0.765709400177002 0.8176729083061218 0.17667889595031738 3 0.08929336071014404 9 0.04753170534968376 5 0.04753170534968376 0 0.04456418380141258\n0.0 0.9395209550857544 0.5993262529373169 0.0 -0.9361247420310974 -0.35163426399230957 0.8234695196151733 0.2191833257675171 3 0.5215328335762024 2 0.47024640440940857 0 0.0 0 0.0\n-0.043747562915086746 0.9720137119293213 0.6651729345321655 -0.9987487196922302 -0.040162358433008194 0.028748435899615288 0.8648558259010315 0.24106882512569427 3 0.904050886631012 2 0.09398713707923889 0 0.0 0 0.0\n0.0 1.0387544631958008 0.6412699818611145 0.0 0.8650471568107605 0.5016327500343323 0.9012990593910217 0.21379756927490234 2 0.7522167563438416 3 0.18018202483654022 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n-0.06145928055047989 1.0601720809936523 0.5009114146232605 -0.7973570823669434 0.13812677562236786 0.5874508023262024 0.8645750880241394 0.13949787616729736 2 0.09433535486459732 0 0.0 0 0.0 0 0.0\n0.0 1.0994129180908203 0.5527057647705078 0.0 0.6721396446228027 0.7404095530509949 0.9092386364936829 0.15684354305267334 2 0.008453886024653912 0 0.0 0 0.0 0 0.0\n0.0 1.2170524597167969 0.4608973264694214 0.0 0.6628314852714539 0.748741090297699 0.9399983286857605 0.08305945992469788 2 0.008227117359638214 0 0.0 0 0.0 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.9024972915649414 0.07288584858179092 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n0.0 0.8668436408042908 1.1575727462768555 0.0 -0.9759819507598877 0.21778008341789246 0.9091423749923706 0.51222825050354 4 0.9999624490737915 0 0.0 0 0.0 0 0.0\n-0.04474841430783272 0.9156687259674072 1.1921391487121582 -0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n-0.04474841430783272 0.9156687259674072 1.1921391487121582 -0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.9566136598587036 1.1525006294250488 0.0 0.999267578125 0.03787346929311752 0.969742476940155 0.4851236343383789 4 0.9999452829360962 0 0.0 0 0.0 0 0.0\n-0.04474841430783272 0.9156687259674072 1.1921391487121582 -0.9490646123886108 0.0554216131567955 0.3100985884666443 0.9444119334220886 0.5085054636001587 4 0.9999980926513672 0 0.0 0 0.0 0 0.0\n0.0 0.886214554309845 1.234582543373108 0.0 -0.6190374493598938 0.7853327989578247 0.9404031038284302 0.540774941444397 4 0.9999971985816956 0 0.0 0 0.0 0 0.0\n0.0 0.9405403137207031 1.2368535995483398 0.0 0.5934019088745117 0.8048951625823975 0.9683864712715149 0.5302330851554871 4 0.9999966025352478 0 0.0 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.7156935930252075 0.7401500344276428 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n-0.09310946613550186 1.0738946199417114 -0.5040848851203918 -0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.49157246947288513 0 0.0 0 0.0 0 0.0\n-0.11636289954185486 1.0498738288879395 -0.43372729420661926 -0.37830743193626404 -0.8667256832122803 -0.3249916136264801 0.5117232203483582 0.08085393905639648 1 0.4748282730579376 0 0.015973743051290512 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.15271435678005219 1.1326109170913696 -0.08103625476360321 -0.9580675959587097 -0.28070923686027527 0.05710013210773468 0.8785715699195862 0.6217155456542969 1 0.6775277256965637 0 0.479615181684494 2 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.19168177247047424 1.123900294303894 -0.138879656791687 -0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7599913477897644 0 0.21201929450035095 0 0.0 0 0.0\n-0.19893279671669006 1.1545631885528564 0.1498781144618988 -0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08576151728630066 9 0.05332915112376213 2 0.03160868585109711\n-0.17711219191551208 1.193559169769287 0.0424371063709259 -0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.715113639831543 1 0.2307407557964325 2 0.01808408461511135 0 0.0\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n-0.240505188703537 1.1706992387771606 -0.23119430243968964 -0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6814895868301392 0 0.09690888226032257 0 0.0 0 0.0\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.8621803522109985 0.5771147608757019 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.240505188703537 1.1706992387771606 -0.23119430243968964 -0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6814895868301392 0 0.09690888226032257 0 0.0 0 0.0\n-0.18298302590847015 1.0755360126495361 -0.3897135853767395 -0.8033387064933777 -0.5719473958015442 -0.16568498313426971 0.7276731133460999 0.6964173316955566 1 0.5155777931213379 0 0.02516910806298256 0 0.0 0 0.0\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.7145208716392517 0.653191328048706 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.2077341377735138 1.1319550275802612 -0.30893459916114807 -0.963957667350769 -0.23200170695781708 -0.13016144931316376 0.7566397786140442 0.6517723798751831 1 0.6343690752983093 0 0.06386665999889374 0 0.0 0 0.0\n-0.240505188703537 1.1706992387771606 -0.23119430243968964 -0.9902951121330261 -0.1357768476009369 0.029206212610006332 0.7882214188575745 0.6180115342140198 1 0.6814895868301392 0 0.09690888226032257 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.7538788914680481 0.5733580589294434 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.18298302590847015 1.097515344619751 -0.457849383354187 -0.8365123271942139 -0.36155277490615845 -0.4116947054862976 0.5151460766792297 0.1754748821258545 1 0.5168794393539429 0 0.0 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.19168177247047424 1.123900294303894 -0.138879656791687 -0.8033081889152527 -0.43974119424819946 0.40159305930137634 0.841719388961792 0.630566418170929 1 0.7599913477897644 0 0.21201929450035095 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.11636289954185486 1.0278944969177246 -0.36559149622917175 -0.35953855514526367 -0.9165623784065247 -0.1748405396938324 0.753631055355072 0.7329650521278381 1 0.48877400159835815 0 0.06049613654613495 0 0.0 0 0.0\n-0.11636289954185486 1.018743872642517 -0.2921942174434662 -0.3807489275932312 -0.9202551245689392 0.09018219262361526 0.7902564406394958 0.7220689654350281 1 0.556355357170105 0 0.11100170016288757 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n-0.19168177247047424 1.1063168048858643 -0.18283823132514954 -0.7293313145637512 -0.6620075106620789 0.17261269688606262 0.8232441544532776 0.6466988325119019 1 0.7561824321746826 0 0.16079038381576538 0 0.0 0 0.0\n-0.18298302590847015 1.0663853883743286 -0.31631630659103394 -0.7708975672721863 -0.6364635229110718 0.02456739917397499 0.7648314833641052 0.6872797608375549 1 0.5752794146537781 0 0.07986343652009964 0 0.0 0 0.0\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n0.0 0.7435801029205322 0.44523051381111145 0.0 -0.7386089563369751 0.6740928292274475 0.4464085102081299 0.5209009647369385 0 0.31352901458740234 9 0.3085489273071289 5 0.3085489273071289 2 0.014867695979773998\n-0.0700145810842514 0.7434864640235901 0.4208555817604065 -0.34348583221435547 -0.5904721021652222 0.730277419090271 0.4059433937072754 0.5164225101470947 5 0.3594251573085785 0 0.33582305908203125 9 0.23320455849170685 10 0.009845860302448273\n-0.13284938037395477 0.36867111921310425 0.12644071877002716 0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 11 0.8813955783843994 10 0.1107533648610115 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.1377425193786621 0.11639571189880371 0.12225279957056046 0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 11 0.5234586596488953 12 0.4755793809890747 0 0.0 0 0.0\n-0.15695250034332275 0.13945317268371582 0.05766453221440315 0.9262672662734985 0.10943937301635742 -0.36057618260383606 0.613688588142395 0.8671387434005737 11 0.7702589631080627 12 0.229200541973114 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.11494315415620804 0.6430489420890808 0.021784529089927673 0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.651059091091156 0.5829592347145081 10 0.7448842525482178 9 0.13043087720870972 5 0.03415199741721153 0 0.01684240624308586\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.3776485323905945 0.7474589347839355 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n0.0 0.6631669402122498 0.12123018503189087 0.0 -0.9987182021141052 -0.05050813406705856 0.3871926963329315 0.6944447755813599 9 0.30585911870002747 5 0.30585911870002747 10 0.179423525929451 6 0.179423525929451\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n0.0 0.6803773045539856 0.31026414036750793 0.0 -0.9349040389060974 0.35480818152427673 0.4156637191772461 0.5957323312759399 9 0.4312181770801544 5 0.4312181770801544 0 0.0485517717897892 6 0.029864637181162834\n-0.19692060351371765 0.6521245837211609 0.3191433846950531 -0.23175756633281708 -0.5444197058677673 0.8061159253120422 0.31354808807373047 0.5612506866455078 9 0.6037588119506836 10 0.246835857629776 5 0.06982867419719696 0 0.037357356399297714\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.3315928876399994 0.6813181042671204 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.16027027368545532 0.24704813957214355 0.04676051810383797 0.8637043237686157 -0.0394604317843914 -0.5024262070655823 0.6260561943054199 0.8096365928649902 11 0.9630122780799866 12 0.014977204613387585 0 0.0 0 0.0\n-0.21422770619392395 0.2696647644042969 0.002181949093937874 -0.03393658250570297 0.06097598373889923 -0.9975585341453552 0.6666253805160522 0.8024744987487793 11 0.95918208360672 12 0.02208760753273964 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.14990682899951935 0.3839050531387329 0.037518344819545746 0.7688833475112915 -0.0393993966281414 -0.6381420493125916 0.635796308517456 0.7324582934379578 11 0.9107308983802795 10 0.08409671485424042 0 0.0 0 0.0\n-0.22422879934310913 0.414276123046875 0.015284525230526924 -0.3885311484336853 0.034516435116529465 -0.9207739233970642 0.6815839409828186 0.7228387594223022 11 0.9109067320823669 10 0.0850052610039711 0 0.0 0 0.0\n-0.20572468638420105 0.5131307244300842 -0.0020905807614326477 -0.2683492600917816 -0.022766808047890663 -0.9630420804023743 0.6855449676513672 0.6661345958709717 10 0.8090380430221558 11 0.16335545480251312 0 0.0 0 0.0\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.6889263391494751 0.5882138609886169 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.11494315415620804 0.6430489420890808 0.021784529089927673 0.44160282611846924 -0.4353465437889099 -0.7844783067703247 0.651059091091156 0.5829592347145081 10 0.7448842525482178 9 0.13043087720870972 5 0.03415199741721153 0 0.01684240624308586\n-0.14543934166431427 0.49590951204299927 0.026219138875603676 0.7388530969619751 -0.1509750634431839 -0.6567277908325195 0.6462750434875488 0.6684547066688538 10 0.8432952761650085 11 0.1331702321767807 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.1377425193786621 0.11639571189880371 0.12225279957056046 0.8777428269386292 -0.13699759542942047 0.4590594172477722 0.5784492492675781 0.8728861808776855 11 0.5234586596488953 12 0.4755793809890747 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.2353973239660263 0.23234236240386963 0.17769855260849 -0.2641071677207947 -0.28104496002197266 0.922605037689209 0.5196957588195801 0.8159016370773315 11 0.9059193730354309 12 0.08363302052021027 0 0.0 0 0.0\n-0.14394588768482208 0.23762118816375732 0.13662073016166687 0.8795129060745239 -0.12250129878520966 0.4598223865032196 0.574836015701294 0.8107243776321411 11 0.9305272102355957 12 0.05715406686067581 0 0.0 0 0.0\n-0.22996719181537628 0.3549819588661194 0.21869893372058868 -0.035431988537311554 -0.23514512181282043 0.9713125824928284 0.5098583698272705 0.7451364398002625 11 0.8741137981414795 10 0.10180453956127167 0 0.0 0 0.0\n-0.13284938037395477 0.36867111921310425 0.12644071877002716 0.9558396935462952 -0.032807398587465286 0.2919705808162689 0.5843212604522705 0.7378981113433838 11 0.8813955783843994 10 0.1107533648610115 0 0.0 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n-0.23106297850608826 0.49126142263412476 0.25890085101127625 -0.01269569993019104 -0.28205206990242004 0.9592882990837097 0.4915243089199066 0.6694369912147522 10 0.7228800058364868 11 0.17418056726455688 9 0.08285880833864212 0 0.0\n-0.13148938119411469 0.47692030668258667 0.12428713589906693 0.9563280344009399 -0.13162633776664734 0.2609332501888275 0.5875352025032043 0.6752210855484009 10 0.8819923400878906 11 0.10448934882879257 0 0.0 0 0.0\n-0.09827211499214172 0.6246875524520874 0.11954677850008011 0.6931974291801453 -0.7169103026390076 0.07397686690092087 0.5954965353012085 0.5888605713844299 10 0.836905837059021 9 0.07508403807878494 5 0.04053134843707085 0 0.0\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n-0.17758521437644958 1.0509424209594727 -0.009452779777348042 -0.9080782532691956 -0.1265297383069992 -0.39918211102485657 0.13626915216445923 0.3208780884742737 0 0.7504675388336182 1 0.16131067276000977 9 0.05459078028798103 2 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.08180608600378036 0.2900291383266449 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.11275650560855865 0.858371376991272 -0.07582104951143265 -0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033953428268433 10 0.14807790517807007 9 0.11798921227455139 1 0.0606958270072937\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n-0.18157455325126648 0.6501905918121338 0.005674920976161957 -0.335276335477829 -0.02075258642435074 -0.9418622255325317 0.10874716937541962 0.547910213470459 10 0.7585892677307129 9 0.17383593320846558 0 0.0 0 0.0\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n0.0 0.8078899383544922 -0.10290303826332092 0.0 -0.5152745246887207 -0.8569902777671814 0.00020304521603975445 0.4368830919265747 0 0.5602840185165405 5 0.09895451366901398 9 0.09895450621843338 6 0.08096460998058319\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n0.0 0.8078899383544922 -0.10290303826332092 0.0 -0.5152745246887207 -0.8569902777671814 0.00020304521603975445 0.4368830919265747 0 0.5602840185165405 5 0.09895451366901398 9 0.09895450621843338 6 0.08096460998058319\n-0.07171060144901276 0.7989503741264343 -0.08710231631994247 -0.34336376190185547 -0.4688863754272461 -0.8137760758399963 0.038444168865680695 0.4439431428909302 0 0.5288071632385254 10 0.14961419999599457 9 0.14801231026649475 5 0.0648399293422699\n-0.2632824182510376 0.192702054977417 0.030293196439743042 -0.8633686304092407 0.13098543882369995 -0.48722800612449646 0.129202738404274 0.8032676577568054 11 0.8625421524047852 12 0.13671983778476715 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.5243164896965027 0.8715741634368896 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.24097920954227448 0.052500367164611816 0.1248338520526886 -0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 12 0.824219822883606 11 0.1755632609128952 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.24097920954227448 0.052500367164611816 0.1248338520526886 -0.40839868783950806 -0.49644458293914795 0.765953540802002 0.1878468245267868 0.882355809211731 12 0.824219822883606 11 0.1755632609128952 0 0.0 0 0.0\n-0.24138523638248444 0.1334514617919922 0.1541205644607544 -0.37720876932144165 -0.20023193955421448 0.904202401638031 0.20311272144317627 0.8384818434715271 11 0.5651088356971741 12 0.4341517984867096 0 0.0 0 0.0\n-0.17186416685581207 0.0006354935467243195 0.08157961070537567 0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 12 0.915589451789856 11 0.08427349478006363 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.24097920954227448 0.052500367164611816 0.1248338520526886 -0.40839868783950806 -0.49644458293914795 0.765953540802002 0.5384967923164368 0.9167900085449219 12 0.824219822883606 11 0.1755632609128952 0 0.0 0 0.0\n-0.14728760719299316 0.0641862154006958 0.11256571114063263 0.7809076309204102 -0.348002552986145 0.5186620950698853 0.5806708335876465 0.896611750125885 12 0.7242515683174133 11 0.27535006403923035 0 0.0 0 0.0\n-0.17186416685581207 0.0006354935467243195 0.08157961070537567 0.47993406653404236 -0.790582001209259 0.3802606165409088 0.5846631526947021 0.9269393086433411 12 0.915589451789856 11 0.08427349478006363 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.1503724455833435 0.9156708121299744 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.24097920954227448 0.052500367164611816 0.1248338520526886 -0.40839868783950806 -0.49644458293914795 0.765953540802002 0.1878468245267868 0.882355809211731 12 0.824219822883606 11 0.1755632609128952 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.279649019241333 0.08738040924072266 0.07750121504068375 -0.9613330364227295 -0.143650621175766 0.23493148386478424 0.15701256692409515 0.8617966175079346 12 0.8143556118011475 11 0.185213103890419 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.2741932272911072 0.11445808410644531 0.004911437630653381 -0.8896145224571228 0.3404645025730133 -0.30430006980895996 0.11660508066415787 0.8494014739990234 12 0.8897741436958313 11 0.11008638888597488 0 0.0 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.09296010434627533 0.8117510676383972 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.21539007127285004 0.1667546033859253 -0.007906094193458557 0.14654988050460815 0.3664967715740204 -0.9187902212142944 0.6632874011993408 0.8602080941200256 12 0.8476832509040833 11 0.15203344821929932 0 0.0 0 0.0\n-0.16382159292697906 0.0006354935467243195 -0.08050514757633209 0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 12 0.986153244972229 0 0.0 0 0.0 0 0.0\n-0.14809073507785797 0.03774738311767578 -0.1051795557141304 0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 12 0.9824442863464355 0 0.0 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.14809073507785797 0.03774738311767578 -0.1051795557141304 0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 12 0.9824442863464355 0 0.0 0 0.0 0 0.0\n-0.16382159292697906 0.0006354935467243195 -0.08050514757633209 0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 12 0.986153244972229 0 0.0 0 0.0 0 0.0\n-0.20350560545921326 0.0006354935467243195 -0.11223234236240387 0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 12 0.9989274144172668 0 0.0 0 0.0 0 0.0\n-0.2590513527393341 0.0006354935467243195 -0.09128285944461823 -0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 12 0.9953135848045349 0 0.0 0 0.0 0 0.0\n-0.27682194113731384 0.03609919548034668 -0.09393604099750519 -0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 12 0.9938223958015442 0 0.0 0 0.0 0 0.0\n-0.21444743871688843 0.05028212070465088 -0.15147438645362854 -0.03833124786615372 0.21689504384994507 -0.9754325747489929 0.029200129210948944 0.8926466703414917 12 1.0102593898773193 0 0.0 0 0.0 0 0.0\n-0.24350489675998688 0.0006354935467243195 0.051150236278772354 -0.47935423254966736 -0.8420056700706482 0.24741356074810028 0.5689922571182251 0.960877001285553 12 0.9519876837730408 11 0.045869868248701096 0 0.0 0 0.0\n-0.20350560545921326 0.0006354935467243195 -0.11223234236240387 0.10193182528018951 -0.844508171081543 -0.5256813168525696 0.6475530862808228 0.9809802174568176 12 0.9989274144172668 0 0.0 0 0.0 0 0.0\n-0.16382159292697906 0.0006354935467243195 -0.08050514757633209 0.6014587879180908 -0.7863094210624695 -0.14111758768558502 0.6353160738945007 0.9585727453231812 12 0.986153244972229 0 0.0 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.6826233267784119 0.909465491771698 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.1543327420949936 0.08759307861328125 0.01969859004020691 0.9604480266571045 0.17163610458374023 -0.21918393671512604 0.624218761920929 0.8986101746559143 12 0.8263624310493469 11 0.17350547015666962 0 0.0 0 0.0\n-0.14809073507785797 0.03774738311767578 -0.1051795557141304 0.8722190260887146 0.06930753588676453 -0.4841151237487793 0.6554734706878662 0.94559645652771 12 0.9824442863464355 0 0.0 0 0.0 0 0.0\n-0.2765810489654541 0.0468442440032959 0.0249030739068985 -0.940153181552887 -0.31360819935798645 0.13303017616271973 0.13173434138298035 0.8852612376213074 12 0.9507208466529846 11 0.0483645461499691 0 0.0 0 0.0\n-0.27682194113731384 0.03609919548034668 -0.09393604099750519 -0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 12 0.9938223958015442 0 0.0 0 0.0 0 0.0\n-0.2590513527393341 0.0006354935467243195 -0.09128285944461823 -0.5378581881523132 -0.7852412462234497 -0.30668050050735474 0.07569105178117752 0.9268571734428406 12 0.9953135848045349 0 0.0 0 0.0 0 0.0\n-0.27682194113731384 0.03609919548034668 -0.09393604099750519 -0.8938566446304321 0.03878902643918991 -0.4466078579425812 0.07372365891933441 0.8974340558052063 12 0.9938223958015442 0 0.0 0 0.0 0 0.0\n-0.2862442135810852 0.08407890796661377 -0.013642758131027222 -0.9532761573791504 0.27402570843696594 -0.1270180344581604 0.10861167311668396 0.8684667348861694 12 0.9602087140083313 11 0.029473556205630302 0 0.0 0 0.0\n-0.22046658396720886 0.09783637523651123 -0.07096876204013824 -0.016296884045004845 0.8249458074569702 -0.5649281144142151 0.06424757838249207 0.8535482883453369 12 0.99355149269104 0 0.0 0 0.0 0 0.0\n-0.17734870314598083 1.1222507953643799 0.016492163762450218 -0.9736624956130981 0.07391583174467087 -0.21564379334449768 0.15870711207389832 0.2861701548099518 0 0.7400459051132202 1 0.20915496349334717 9 0.02171226218342781 2 0.0\n-0.17711219191551208 1.193559169769287 0.0424371063709259 -0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.715113639831543 1 0.2307407557964325 2 0.01808408461511135 0 0.0\n-0.17711219191551208 1.2111425399780273 -0.08284486830234528 -0.9780877232551575 0.07745597511529922 0.19315165281295776 0.11920919269323349 0.2266269475221634 1 0.6532512903213501 0 0.27260318398475647 2 0.0 0 0.0\n-0.23453930020332336 1.0399465560913086 0.12781919538974762 -0.9630115628242493 0.15222632884979248 -0.2221747487783432 0.2123546004295349 0.34633561968803406 0 0.7073097229003906 9 0.15077142417430878 1 0.04680754616856575 2 7.789886149112135e-05\n-0.23453930020332336 0.9702152013778687 0.2602241337299347 -0.922513484954834 0.1750236451625824 0.34394359588623047 0.278250515460968 0.390413373708725 0 0.4900068938732147 9 0.30810508131980896 2 0.017765844240784645 5 0.014790344052016735\n-0.2174592912197113 1.1028785705566406 0.2627961039543152 -0.9561144113540649 0.17743460834026337 0.23300881683826447 0.28516799211502075 0.32168421149253845 0 0.5695722103118896 9 0.11019442975521088 2 0.033312100917100906 1 0.024461444467306137\n-0.17711219191551208 1.193559169769287 0.0424371063709259 -0.9813531637191772 0.1826837956905365 -0.05929746478796005 0.18139240145683289 0.2521224319934845 0 0.715113639831543 1 0.2307407557964325 2 0.01808408461511135 0 0.0\n-0.19893279671669006 1.1545631885528564 0.1498781144618988 -0.9536118507385254 0.28800317645072937 -0.0874660462141037 0.23297777771949768 0.28563162684440613 0 0.7194539904594421 1 0.08576151728630066 9 0.05332915112376213 2 0.03160868585109711\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.09388621896505356 1.0232656002044678 -0.1361936777830124 -0.6617023348808289 -0.5929136276245117 -0.4588763117790222 0.8785715699195862 0.6988553404808044 1 0.7061814665794373 0 0.505308985710144 0 0.0 0 0.0\n-0.1329372525215149 1.081725835800171 -0.11218704283237457 -0.8476821184158325 -0.5233924388885498 -0.08630634844303131 0.8733172416687012 0.657466471195221 1 0.7749943137168884 0 0.4033813774585724 0 0.0 0 0.0\n-0.11636289954185486 1.053910732269287 -0.19108946621418 -0.5185399651527405 -0.8486281633377075 0.10443434119224548 0.8408097624778748 0.693621814250946 1 0.8277724981307983 0 0.24267315864562988 0 0.0 0 0.0\n-0.09191875904798508 0.7384775280952454 -0.004247918725013733 -0.11261329799890518 -0.5351725816726685 -0.8371837735176086 0.058216046541929245 0.4974377155303955 10 0.3449857234954834 9 0.3330496847629547 0 0.19796177744865417 5 0.05866539850831032\n0.0 0.7530391812324524 -0.05506258085370064 0.0 -0.7327799201011658 -0.6804406642913818 0.002868201583623886 0.4762572944164276 0 0.40316474437713623 9 0.17333783209323883 5 0.17333783209323883 6 0.10585487633943558\n0.0 0.6821010708808899 0.023523900657892227 0.0 -0.7949461340904236 -0.6066469550132751 0.007275765296071768 0.5337982773780823 9 0.252836138010025 5 0.252836138010025 10 0.18387460708618164 6 0.18387460708618164\n-0.10067398101091385 0.9663213491439819 -0.08786684274673462 -0.712576687335968 -0.24292734265327454 -0.6581621766090393 0.06711860746145248 0.3559820055961609 0 0.6806139349937439 1 0.1954726278781891 9 0.04794127866625786 10 0.04703438654541969\n0.0 0.9426074624061584 -0.1419200301170349 0.0 -0.413312166929245 -0.9105807542800903 0.0026334882713854313 0.3612455725669861 0 0.6058444380760193 1 0.249999538064003 5 0.01192476972937584 9 0.011924747377634048\n0.0 0.866442084312439 -0.12817779183387756 0.0 -0.19495223462581635 -0.9808038473129272 0.00040259622619487345 0.4023122787475586 0 0.6251106858253479 1 0.10255718231201172 5 0.061067480593919754 9 0.06106747314333916\n-0.17548006772994995 0.9740344882011414 0.03773410618305206 -0.8627887964248657 -0.095828115940094 -0.49632251262664795 0.14806827902793884 0.3685593605041504 0 0.7296560406684875 9 0.13401056826114655 1 0.059292711317539215 10 0.025198591873049736\n-0.11275650560855865 0.858371376991272 -0.07582104951143265 -0.6566362380981445 -0.06662190705537796 -0.7512131333351135 0.06558506190776825 0.4164593815803528 0 0.6033953428268433 10 0.14807790517807007 9 0.11798921227455139 1 0.0606958270072937\n-0.16467930376529694 0.764995813369751 -0.0035517215728759766 -0.6215704679489136 -0.09994811564683914 -0.7769402265548706 0.10110408067703247 0.4813825190067291 10 0.42210859060287476 9 0.36726126074790955 0 0.15537990629673004 0 0.0\n0.0 0.8515796661376953 1.0820811986923218 0.0 -0.9989928603172302 0.04452650621533394 0.8863584995269775 0.47759830951690674 4 0.9997074007987976 0 0.0 0 0.0 0 0.0\n-0.05299364775419235 0.9086697101593018 1.127077579498291 -0.9984740614891052 0.004181035794317722 0.05499435216188431 0.9316335320472717 0.4823167026042938 4 0.9999160170555115 0 0.0 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n0.0 0.9533488154411316 1.0950424671173096 0.0 0.9988097548484802 -0.048158206045627594 0.9595854878425598 0.4558004140853882 4 0.9995507597923279 0 0.0 0 0.0 0 0.0\n0.0 0.956256628036499 0.9388030171394348 0.0 0.9941099286079407 0.10831019282341003 0.9283884763717651 0.3782193958759308 4 0.9637963771820068 3 0.022601444274187088 0 0.0 0 0.0\n-0.04524477198719978 0.9055635929107666 0.9612237811088562 -0.99981689453125 -0.011352885514497757 -0.013397625647485256 0.8992534875869751 0.4032728672027588 4 0.9947757124900818 0 0.0 0 0.0 0 0.0\n-0.15597429871559143 1.3777180910110474 -0.39357221126556396 -0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.5218733549118042 0 0.0 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.5453251600265503 0.5488014817237854 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n-0.15597429871559143 1.3777180910110474 -0.39357221126556396 -0.6780602335929871 0.5271767377853394 -0.5121310949325562 0.6492087841033936 0.4990021586418152 1 0.5218733549118042 0 0.0 0 0.0 0 0.0\n-0.06429819017648697 1.3896068334579468 -0.43792080879211426 -0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.5313303470611572 0 0.0 0 0.0 0 0.0\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n0.0 1.102358341217041 -0.5441152453422546 0.0 -0.5053865313529968 -0.8628803491592407 0.6952515840530396 0.0594245009124279 1 0.49531272053718567 0 0.0 0 0.0 0 0.0\n-0.09310946613550186 1.0738946199417114 -0.5040848851203918 -0.31342509388923645 -0.7467879056930542 -0.5865352153778076 0.578464150428772 0.07731097936630249 1 0.49157246947288513 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n0.0 1.2747960090637207 -0.5200934410095215 0.0 0.7257301807403564 -0.6879787445068359 0.7898815870285034 0.26401570439338684 1 0.5951871871948242 0 0.0 0 0.0 0 0.0\n0.0 1.2263679504394531 -0.5837152004241943 0.0 0.3245033025741577 -0.9458601474761963 0.7843695878982544 0.1751059889793396 1 0.5790085792541504 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n0.0 1.2263679504394531 -0.5837152004241943 0.0 0.3245033025741577 -0.9458601474761963 0.7843695878982544 0.1751059889793396 1 0.5790085792541504 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n0.0 1.1535732746124268 -0.5664279460906982 0.0 -0.22562333941459656 -0.9742118716239929 0.7363960146903992 0.10636518150568008 1 0.524931788444519 0 0.0 0 0.0 0 0.0\n-0.11392863094806671 1.1170620918273926 -0.5390962958335876 -0.45652636885643005 -0.3259071707725525 -0.8278450965881348 0.6125847101211548 0.13550977408885956 1 0.5383314490318298 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n-0.19536322355270386 1.1583302021026611 -0.38174155354499817 -0.9667958617210388 0.013214514590799809 -0.2551042139530182 0.4866374433040619 0.2810833156108856 1 0.597184419631958 0 0.0194740928709507 0 0.0 0 0.0\n-0.21954664587974548 1.2720890045166016 -0.26756638288497925 -0.9747001528739929 0.22016052901744843 -0.038422804325819016 0.4704653024673462 0.463824987411499 1 0.5544829368591309 0 0.05324206128716469 0 0.0 0 0.0\n-0.18102072179317474 1.268702745437622 -0.39696988463401794 -0.8454847931861877 0.23203222453594208 -0.48088014125823975 0.5643640756607056 0.39259523153305054 1 0.5556833148002625 0 0.0 0 0.0 0 0.0\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n-0.11630034446716309 1.385688066482544 0.011257962323725224 -0.8467971086502075 0.5172887444496155 0.12363047897815704 0.19177863001823425 0.14417126774787903 0 0.41010767221450806 1 0.3941728472709656 2 0.021439071744680405 0 0.0\n-0.08727402985095978 1.2957605123519897 0.34337759017944336 -0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.05475941300392151 1 0.038439225405454636 0 0.0\n-0.07297612726688385 1.3934298753738403 0.16687017679214478 -0.4526505470275879 0.8392895460128784 0.3011261224746704 0.27515244483947754 0.15112540125846863 0 0.46099191904067993 1 0.1663425862789154 2 0.00029648616327904165 0 0.0\n-0.1459522545337677 1.3251063823699951 0.18270058929920197 -0.8204901218414307 0.5527207255363464 0.14572587609291077 0.2664920687675476 0.20125365257263184 0 0.5595225095748901 1 0.11560860276222229 2 0.00013760886213276535 0 0.0\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n-0.058150164783000946 1.453392744064331 -0.0034714294597506523 -0.5017548203468323 0.843226432800293 0.19284646213054657 0.19909562170505524 0.09749332815408707 1 0.3855680227279663 0 0.2609920799732208 2 5.212068208493292e-05 0 0.0\n0.0 1.4754657745361328 -0.018200816586613655 0.0 0.9835200309753418 0.18070009350776672 0.2048933058977127 0.06445963680744171 1 0.39598000049591064 0 0.22064290940761566 2 0.005581408739089966 0 0.0\n-0.0650172010064125 1.190718173980713 0.442444771528244 -0.5703604221343994 0.43330180644989014 0.6977751851081848 0.4042886793613434 0.26924484968185425 2 0.034502845257520676 0 0.0 0 0.0 0 0.0\n-0.08727402985095978 1.2957605123519897 0.34337759017944336 -0.4752952754497528 0.6862391829490662 0.5505844354629517 0.3502945005893707 0.2176021784543991 0 0.1636802703142166 2 0.05475941300392151 1 0.038439225405454636 0 0.0\n-0.17454805970191956 1.2118858098983765 0.34130558371543884 -0.8105410933494568 0.3488875925540924 0.47038179636001587 0.3298243582248688 0.2703784704208374 0 0.21865041553974152 2 0.06258596479892731 1 0.03174738213419914 9 0.02641637995839119\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n-0.06438668072223663 1.2186225652694702 -0.5522415637969971 -0.40809351205825806 0.41642504930496216 -0.8124027252197266 0.7213020324707031 0.204230397939682 1 0.5807928442955017 0 0.0 0 0.0 0 0.0\n-0.1287733018398285 1.2108771800994873 -0.5207679867744446 -0.6269417405128479 0.4066286087036133 -0.6644794940948486 0.6418904066085815 0.2361043244600296 1 0.5891550183296204 0 0.0 0 0.0 0 0.0\n-0.06429819017648697 1.3896068334579468 -0.43792080879211426 -0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.5313303470611572 0 0.0 0 0.0 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.6945981383323669 0.5729519724845886 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n0.0 1.4688720703125 -0.35228610038757324 0.0 0.9361552596092224 -0.35151219367980957 0.8172668218612671 0.550440788269043 1 0.5002522468566895 0 0.0 0 0.0 0 0.0\n-0.07297612726688385 1.460466742515564 -0.16172027587890625 -0.5019684433937073 0.8640094995498657 0.03888057917356491 0.12038150429725647 0.0717666819691658 1 0.424686998128891 0 0.08062247186899185 0 0.0 0 0.0\n-0.09474784880876541 1.4414864778518677 -0.305348664522171 -0.47962889075279236 0.8599505424499512 -0.1743827611207962 0.04443186894059181 0.0578567311167717 1 0.48631343245506287 0 0.006849147379398346 0 0.0 0 0.0\n-0.18949569761753082 1.3684693574905396 -0.2584112286567688 -0.860957682132721 0.5083467960357666 0.01657155156135559 0.04436533525586128 0.12631487846374512 1 0.4894542992115021 0 0.038765352219343185 0 0.0 0 0.0\n-0.04986967518925667 1.2690738439559937 -0.4816516935825348 -0.4589068293571472 0.574968695640564 -0.6773278117179871 0.7414538264274597 0.31137514114379883 1 0.5933704376220703 0 0.0 0 0.0 0 0.0\n-0.06429819017648697 1.3896068334579468 -0.43792080879211426 -0.3429059684276581 0.5780205726623535 -0.7404400706291199 0.7636973261833191 0.4662829637527466 1 0.5313303470611572 0 0.0 0 0.0 0 0.0\n0.0 1.3950845003128052 -0.45135900378227234 0.0 0.598864734172821 -0.8008362054824829 0.8172668218612671 0.41208434104919434 1 0.5343004465103149 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n57 58 59 0\n60 61 62 0\n63 64 65 0\n66 67 68 0\n69 70 71 0\n72 73 74 0\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\n168 169 170 0\n171 172 173 0\n174 175 176 0\n177 178 179 0\n180 181 182 0\n183 184 185 0\n186 187 188 0\n189 190 191 0\n192 193 194 0\n195 196 197 0\n198 199 200 0\n201 202 203 0\n204 205 206 0\n207 208 209 0\n210 211 212 0\n213 214 215 0\n216 217 218 0\n219 220 221 0\n222 223 224 0\n225 226 227 0\n228 229 230 0\n231 232 233 0\n234 235 236 0\n237 238 239 0\n240 241 242 0\n243 244 245 0\n246 247 248 0\n249 250 251 0\n252 253 254 0\n255 256 257 0\n258 259 260 0\n261 262 263 0\n264 265 266 0\n267 268 269 0\n270 271 272 0\n273 274 275 0\n276 277 278 0\n279 280 281 0\n282 283 284 0\n285 286 287 0\n288 289 290 0\n291 292 293 0\n294 295 296 0\n297 298 299 0\n300 301 302 0\n303 304 305 0\n306 307 308 0\n309 310 311 0\n312 313 314 0\n315 316 317 0\n318 319 320 0\n321 322 323 0\n324 325 326 0\n327 328 329 0\n330 331 332 0\n333 334 335 0\n336 337 338 0\n339 340 341 0\n342 343 344 0\n345 346 347 0\n348 349 350 0\n351 352 353 0\n354 355 356 0\n357 358 359 0\n360 361 362 0\n363 364 365 0\n366 367 368 0\n369 370 371 0\n372 373 374 0\n375 376 377 0\n378 379 380 0\n381 382 383 0\n384 385 386 0\n387 388 389 0\n390 391 392 0\n393 394 395 0\n396 397 398 0\n399 400 401 0\n402 403 404 0\n405 406 407 0\n408 409 410 0\n411 412 413 0\n414 415 416 0\n417 418 419 0\n420 421 422 0\n423 424 425 0\n426 427 428 0\n429 430 431 0\n432 433 434 0\n435 436 437 0\n438 439 440 0\n441 442 443 0\n444 445 446 0\n447 448 449 0\n450 451 452 0\n453 454 455 0\n456 457 458 0\n459 460 461 0\n462 463 464 0\n465 466 467 0\n468 469 470 0\n471 472 473 0\n474 475 476 0\n477 478 479 0\n480 481 482 0\n483 484 485 0\n486 487 488 0\n489 490 491 0\n492 493 494 0\n495 496 497 0\n498 499 500 0\n501 502 503 0\n504 505 506 0\n507 508 509 0\n510 511 512 0\n513 514 515 0\n516 517 518 0\n519 520 521 0\n522 523 524 0\n525 526 527 0\n528 529 530 0\n531 532 533 0\n534 535 536 0\n537 538 539 0\n540 541 542 0\n543 544 545 0\n546 547 548 0\n549 550 551 0\n552 553 554 0\n555 556 557 0\n558 559 560 0\n561 562 563 0\n564 565 566 0\n567 568 569 0\n570 571 572 0\n573 574 575 0\n576 577 578 0\n579 580 581 0\n582 583 584 0\n585 586 587 0\n588 589 590 0\n591 592 593 0\n594 595 596 0\n597 598 599 0\n600 601 602 0\n603 604 605 0\n606 607 608 0\n609 610 611 0\n612 613 614 0\n615 616 617 0\n618 619 620 0\n621 622 623 0\n624 625 626 0\n627 628 629 0\n630 631 632 0\n633 634 635 0\n636 637 638 0\n639 640 641 0\n642 643 644 0\n645 646 647 0\n648 649 650 0\n651 652 653 0\n654 655 656 0\n657 658 659 0\n660 661 662 0\n663 664 665 0\n666 667 668 0\n669 670 671 0\n672 673 674 0\n675 676 677 0\n678 679 680 0\n681 682 683 0\n684 685 686 0\n687 688 689 0\n690 691 692 0\n693 694 695 0\n696 697 698 0\n699 700 701 0\n702 703 704 0\n705 706 707 0\n708 709 710 0\n711 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n723 724 725 0\n726 727 728 0\n729 730 731 0\n732 733 734 0\n735 736 737 0\n738 739 740 0\n741 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n753 754 755 0\n756 757 758 0\n759 760 761 0\n762 763 764 0\n765 766 767 0\n768 769 770 0\n771 772 773 0\n774 775 776 0\n777 778 779 0\n780 781 782 0\n783 784 785 0\n786 787 788 0\n789 790 791 0\n792 793 794 0\n795 796 797 0\n798 799 800 0\n801 802 803 0\n804 805 806 0\n807 808 809 0\n810 811 812 0\n813 814 815 0\n816 817 818 0\n819 820 821 0\n822 823 824 0\n825 826 827 0\n828 829 830 0\n831 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n843 844 845 0\n846 847 848 0\n849 850 851 0\n852 853 854 0\n855 856 857 0\n858 859 860 0\n861 862 863 0\n864 865 866 0\n867 868 869 0\n870 871 872 0\n873 874 875 0\n876 877 878 0\n879 880 881 0\n882 883 884 0\n885 886 887 0\n888 889 890 0\n891 892 893 0\n894 895 896 0\n897 898 899 0\n900 901 902 0\n903 904 905 0\n906 907 908 0\n909 910 911 0\n912 913 914 0\n915 916 917 0\n918 919 920 0\n921 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n933 934 935 0\n936 937 938 0\n939 940 941 0\n942 943 944 0\n945 946 947 0\n948 949 950 0\n951 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n963 964 965 0\n966 967 968 0\n969 970 971 0\n972 973 974 0\n975 976 977 0\n978 979 980 0\n981 982 983 0\n984 985 986 0\n987 988 989 0\n990 991 992 0\n993 994 995 0\n996 997 998 0\n999 1000 1001 0\n1002 1003 1004 0\n1005 1006 1007 0\n1008 1009 1010 0\n1011 1012 1013 0\n1014 1015 1016 0\n1017 1018 1019 0\n1020 1021 1022 0\n1023 1024 1025 0\n1026 1027 1028 0\n1029 1030 1031 0\n1032 1033 1034 0\n1035 1036 1037 0\n1038 1039 1040 0\n1041 1042 1043 0\n1044 1045 1046 0\n1047 1048 1049 0\n1050 1051 1052 0\n1053 1054 1055 0\n1056 1057 1058 0\n1059 1060 1061 0\n1062 1063 1064 0\n1065 1066 1067 0\n1068 1069 1070 0\n1071 1072 1073 0\n1074 1075 1076 0\n1077 1078 1079 0\n1080 1081 1082 0\n1083 1084 1085 0\n1086 1087 1088 0\n1089 1090 1091 0\n1092 1093 1094 0\n1095 1096 1097 0\n1098 1099 1100 0\n1101 1102 1103 0\n1104 1105 1106 0\n1107 1108 1109 0\n1110 1111 1112 0\n1113 1114 1115 0\n1116 1117 1118 0\n1119 1120 1121 0\n1122 1123 1124 0\n1125 1126 1127 0\n1128 1129 1130 0\n1131 1132 1133 0\n1134 1135 1136 0\n1137 1138 1139 0\n1140 1141 1142 0\n1143 1144 1145 0\n1146 1147 1148 0\n1149 1150 1151 0\n1152 1153 1154 0\n1155 1156 1157 0\n1158 1159 1160 0\n1161 1162 1163 0\n1164 1165 1166 0\n1167 1168 1169 0\n1170 1171 1172 0\n1173 1174 1175 0\n1176 1177 1178 0\n1179 1180 1181 0\n1182 1183 1184 0\n1185 1186 1187 0\n1188 1189 1190 0\n1191 1192 1193 0\n1194 1195 1196 0\n1197 1198 1199 0\n1200 1201 1202 0\n1203 1204 1205 0\n1206 1207 1208 0\n1209 1210 1211 0\n1212 1213 1214 0\n1215 1216 1217 0\n1218 1219 1220 0\n1221 1222 1223 0\n1224 1225 1226 0\n1227 1228 1229 0\n1230 1231 1232 0\n1233 1234 1235 0\n1236 1237 1238 0\n1239 1240 1241 0\n1242 1243 1244 0\n1245 1246 1247 0\n1248 1249 1250 0\n1251 1252 1253 0\n1254 1255 1256 0\n1257 1258 1259 0\n1260 1261 1262 0\n1263 1264 1265 0\n1266 1267 1268 0\n1269 1270 1271 0\n1272 1273 1274 0\n1275 1276 1277 0\n1278 1279 1280 0\n1281 1282 1283 0\n1284 1285 1286 0\n1287 1288 1289 0\n1290 1291 1292 0\n1293 1294 1295 0\n1296 1297 1298 0\n1299 1300 1301 0\n1302 1303 1304 0\n1305 1306 1307 0\n1308 1309 1310 0\n1311 1312 1313 0\n1314 1315 1316 0\n1317 1318 1319 0\n1320 1321 1322 0\n1323 1324 1325 0\n1326 1327 1328 0\n1329 1330 1331 0\n1332 1333 1334 0\n1335 1336 1337 0\n1338 1339 1340 0\n1341 1342 1343 0\n1344 1345 1346 0\n1347 1348 1349 0\n1350 1351 1352 0\n1353 1354 1355 0\n1356 1357 1358 0\n1359 1360 1361 0\n1362 1363 1364 0\n1365 1366 1367 0\n1368 1369 1370 0\n1371 1372 1373 0\n1374 1375 1376 0\n1377 1378 1379 0\n1380 1381 1382 0\n1383 1384 1385 0\n1386 1387 1388 0\n1389 1390 1391 0\n1392 1393 1394 0\n1395 1396 1397 0\n1398 1399 1400 0\n1401 1402 1403 0\n1404 1405 1406 0\n1407 1408 1409 0\n1410 1411 1412 0\n1413 1414 1415 0\n1416 1417 1418 0\n1419 1420 1421 0\n1422 1423 1424 0\n1425 1426 1427 0\n1428 1429 1430 0\n1431 1432 1433 0\n1434 1435 1436 0\n1437 1438 1439 0\n1440 1441 1442 0\n1443 1444 1445 0\n1446 1447 1448 0\n1449 1450 1451 0\n1452 1453 1454 0\n1455 1456 1457 0\n1458 1459 1460 0\n1461 1462 1463 0\n1464 1465 1466 0\n1467 1468 1469 0\n1470 1471 1472 0\n1473 1474 1475 0\n1476 1477 1478 0\n1479 1480 1481 0\n1482 1483 1484 0\n1485 1486 1487 0\n1488 1489 1490 0\n1491 1492 1493 0\n1494 1495 1496 0\n1497 1498 1499 0\nRoot -1 0.0 0.8413141965866089 0.23588795959949493 5.6222051756381825e-18 1.196816086769104 -0.04905375838279724 0.0\nHead 0 5.6222051756381825e-18 1.196816086769104 -0.04905375838279724 1.967771687396272e-17 1.260116457939148 -0.39720597863197327 1.8611563782443123e-24\nTail1 -1 -7.122113747843234e-17 1.1588577032089233 0.41520965099334717 9.862938988101759e-17 0.9773882031440735 0.6198499798774719 2.11758312544222e-22\nTail2 2 9.862938988101759e-17 0.9773882031440735 0.6198499798774719 8.316832544121743e-17 0.9077577590942383 0.9141968488693237 4.658683633279353e-21\nTail3 3 8.316832544121743e-17 0.9077577590942383 0.9141968488693237 8.246555279279238e-17 0.904592752456665 1.1927186250686646 5.2351485486656853e-20\nShoulderR -1 0.0 0.8413141965866089 0.23588795959949493 0.17407608032226562 0.7052183151245117 0.15359744429588318 0.0\nUpperarmR 5 0.17407608032226562 0.7052183151245117 0.15359744429588318 0.2152213305234909 0.4678418040275574 0.0966271162033081 -2.7939680791178034e-08\nForearmR 6 0.2152213305234909 0.4678418040275574 0.0966271162033081 0.21205630898475647 0.1576698124408722 0.05231688916683197 3.614695742726326e-08\nFootR 7 0.21205630898475647 0.1576698124408722 0.05231688916683197 0.21205630898475647 0.04056406766176224 -0.08061395585536957 -2.0747501494611242e-09\nShoulderL -1 0.0 0.8413141965866089 0.23588795959949493 -0.17407608032226562 0.7052183151245117 0.15359744429588318 0.0\nUpperarmL 9 -0.17407608032226562 0.7052183151245117 0.15359744429588318 -0.2152213305234909 0.4678418040275574 0.0966271162033081 2.7939680791178034e-08\nForearmL 10 -0.2152213305234909 0.4678418040275574 0.0966271162033081 -0.21205630898475647 0.1576698124408722 0.05231688916683197 -3.614695742726326e-08\nFootL 11 -0.21205630898475647 0.1576698124408722 0.05231688916683197 -0.21205630898475647 0.04056406766176224 -0.08061395585536957 2.0747501494611242e-09\nRoot\nHead\nTail1\nTail2\nTail3\nShoulderR\nUpperarmR\nForearmR\nFootR\nShoulderL\nUpperarmL\nForearmL\nFootL\n"
  },
  {
    "path": "data/models/movs.collmdl",
    "content": "cloud 8 \n-4 0 4 \n-4 0.25 4 \n-4 0 -4 \n-4 0.25 -4 \n4 0 4 \n4 0.25 4 \n4 0 -4 \n4 0.25 -4 \ncloud 8 \n-4 0.25 4 \n-4 2.5 4 \n-4 0.25 -4 \n-4 2.5 -4 \n-3.875 0.25 4 \n-3.875 2.5 4 \n-3.875 0.25 -4 \n-3.875 2.5 -4 \ncloud 8 \n3.875 0.25 4 \n3.875 2.25 4 \n3.875 0.25 -4 \n3.875 2.25 -4 \n4 0.25 4 \n4 2.25 4 \n4 0.25 -4 \n4 2.25 -4 \ncloud 8 \n-3.875 0.25 4 \n-3.875 2.25 4 \n-3.875 0.25 3.875 \n-3.875 2.25 3.875 \n3.875 0.25 4 \n3.875 2.25 4 \n3.875 0.25 3.875 \n3.875 2.25 3.875 \ncloud 8 \n-3 0.25 3.875 \n-3 0.5 3.875 \n-3 0.25 3.125 \n-3 0.5 3.125 \n-2.5 0.25 3.875 \n-2.5 0.5 3.875 \n-2.5 0.25 3.125 \n-2.5 0.5 3.125 \ncloud 8 \n-2.5 0.5 3.875 \n-2.5 0.75 3.875 \n-2.5 0.5 3.125 \n-2.5 0.75 3.125 \n-2 0.5 3.875 \n-2 0.75 3.875 \n-2 0.5 3.125 \n-2 0.75 3.125 \ncloud 8 \n-2 0.75 3.875 \n-2 1 3.875 \n-2 0.75 3.125 \n-2 1 3.125 \n-1.5 0.75 3.875 \n-1.5 1 3.875 \n-1.5 0.75 3.125 \n-1.5 1 3.125 \ncloud 8 \n-1.5 1 3.875 \n-1.5 1.25 3.875 \n-1.5 1 3.125 \n-1.5 1.25 3.125 \n-1 1 3.875 \n-1 1.25 3.875 \n-1 1 3.125 \n-1 1.25 3.125 \ncloud 8 \n-1 1.25 3.875 \n-1 1.5 3.875 \n-1 1.25 3.125 \n-1 1.5 3.125 \n-0.5 1.25 3.875 \n-0.5 1.5 3.875 \n-0.5 1.25 3.125 \n-0.5 1.5 3.125 \ncloud 8 \n-0.5 1.5 3.875 \n-0.5 1.75 3.875 \n-0.5 1.5 3.125 \n-0.5 1.75 3.125 \n0 1.5 3.875 \n0 1.75 3.875 \n0 1.5 3.125 \n0 1.75 3.125 \ncloud 8 \n0 1.75 3.875 \n0 2 3.875 \n0 1.75 3.125 \n0 2 3.125 \n0.5 1.75 3.875 \n0.5 2 3.875 \n0.5 1.75 3.125 \n0.5 2 3.125 \ncloud 8 \n0.5 2 3.875 \n0.5 2.25 3.875 \n0.5 2 3.125 \n0.5 2.25 3.125 \n1 2 3.875 \n1 2.25 3.875 \n1 2 3.125 \n1 2.25 3.125 \ncloud 8 \n1.375 0.25 1 \n1.375 0.5 1 \n1.375 0.25 0.25 \n1.375 0.5 0.25 \n1.625 0.25 1 \n1.625 0.5 1 \n1.625 0.25 0.25 \n1.625 0.5 0.25 \ncloud 8 \n1.625 0.5 1 \n1.625 0.75 1 \n1.625 0.5 0.25 \n1.625 0.75 0.25 \n1.875 0.5 1 \n1.875 0.75 1 \n1.875 0.5 0.25 \n1.875 0.75 0.25 \ncloud 8 \n1.875 0.75 1 \n1.875 1 1 \n1.875 0.75 0.25 \n1.875 1 0.25 \n2.125 0.75 1 \n2.125 1 1 \n2.125 0.75 0.25 \n2.125 1 0.25 \ncloud 8 \n2.125 1 1 \n2.125 1.25 1 \n2.125 1 0.25 \n2.125 1.25 0.25 \n2.375 1 1 \n2.375 1.25 1 \n2.375 1 0.25 \n2.375 1.25 0.25 \ncloud 8 \n2.375 1.25 1 \n2.375 1.5 1 \n2.375 1.25 0.25 \n2.375 1.5 0.25 \n2.625 1.25 1 \n2.625 1.5 1 \n2.625 1.25 0.25 \n2.625 1.5 0.25 \ncloud 8 \n2.625 1.5 1 \n2.625 1.75 1 \n2.625 1.5 0.25 \n2.625 1.75 0.25 \n2.875 1.5 1 \n2.875 1.75 1 \n2.875 1.5 0.25 \n2.875 1.75 0.25 \ncloud 8 \n3.125 2 -0 \n3.125 2.25 -0 \n3.125 2 -0.25 \n3.125 2.25 -0.25 \n3.875 2 -0 \n3.875 2.25 -0 \n3.875 2 -0.25 \n3.875 2.25 -0.25 \ncloud 8 \n3 0.25 3.875 \n3 1.25 3.875 \n3 0.25 3 \n3 1.25 3 \n3.875 0.25 3.875 \n3.875 1.25 3.875 \n3.875 0.25 3 \n3.875 1.25 3 \ncloud 8 \n3 0.25 2.75 \n3 1.25 2.75 \n3 0.25 2.625 \n3 1.25 2.625 \n3.875 0.25 2.75 \n3.875 1.25 2.75 \n3.875 0.25 2.625 \n3.875 1.25 2.625 \ncloud 8 \n3 0.25 2.375 \n3 1.25 2.375 \n3 0.25 2.25 \n3 1.25 2.25 \n3.875 0.25 2.375 \n3.875 1.25 2.375 \n3.875 0.25 2.25 \n3.875 1.25 2.25 \ncloud 8 \n3 0.25 2 \n3 1.25 2 \n3 0.25 1.5 \n3 1.25 1.5 \n3.875 0.25 2 \n3.875 1.25 2 \n3.875 0.25 1.5 \n3.875 1.25 1.5 \ncloud 8 \n3 0.25 -0 \n3 1.25 -0 \n3 0.25 -1 \n3 1.25 -1 \n3.875 0.25 -0 \n3.875 1.25 -0 \n3.875 0.25 -1 \n3.875 1.25 -1 \ncloud 8 \n3 0.25 -3 \n3 1.25 -3 \n3 0.25 -4 \n3 1.25 -4 \n3.875 0.25 -3 \n3.875 1.25 -3 \n3.875 0.25 -4 \n3.875 1.25 -4 \ncloud 6 \n-3.875 0.25 1.7499847 \n-3.875 1.2499913 -1.1920929e-07 \n-3.875 0.25 -0 \n-3.5 0.25 1.7499847 \n-3.5 1.2499913 -1.19037274e-07 \n-3.5 0.25 -0 \ncloud 8 \n-3.5 0.25 0.75 \n-3.5 0.5 0.75 \n-3.5 0.25 0.5 \n-3.5 0.5 0.5 \n-3.125 0.25 0.75 \n-3.125 0.5 0.75 \n-3.125 0.25 0.5 \n-3.125 0.5 0.5 \ncloud 8 \n-3.5 0.5 0.5 \n-3.5 0.75 0.5 \n-3.5 0.5 0.25 \n-3.5 0.75 0.25 \n-3.125 0.5 0.5 \n-3.125 0.75 0.5 \n-3.125 0.5 0.25 \n-3.125 0.75 0.25 \ncloud 8 \n-3.5 0.75 0.25 \n-3.5 1 0.25 \n-3.5 0.75 -0 \n-3.5 1 -0 \n-3.125 0.75 0.25 \n-3.125 1 0.25 \n-3.125 0.75 -0 \n-3.125 1 -0 \ncloud 8 \n-3.875 0.25 -0 \n-3.875 1.25 -0 \n-3.875 0.25 -0.375 \n-3.875 1.25 -0.375 \n-3.125 0.25 -0 \n-3.125 1.25 -0 \n-3.125 0.25 -0.375 \n-3.125 1.25 -0.375 \ncloud 8 \n-3.875 0.25 -0.375 \n-3.875 1.25 -0.375 \n-3.875 0.25 -4 \n-3.875 1.25 -4 \n-3.5 0.25 -0.375 \n-3.5 1.25 -0.375 \n-3.84375 0.25 -4 \n-3.84375 1.25 -4 \ncloud 8 \n-4 0 -4 \n-4 0.25 -4 \n-4 0 -7.5 \n-4 0.25 -7.5 \n4 0 -4 \n4 0.25 -4 \n4 0 -7.5 \n4 0.25 -7.5 \ncloud 8 \n-1.75 0.25 -4 \n-1.75 2.25 -4 \n-1.75 0.25 -4.125 \n-1.75 2.25 -4.125 \n4 0.25 -4 \n4 2.25 -4 \n4 0.25 -4.125 \n4 2.25 -4.125 \ncloud 8 \n-4 0.25 -4 \n-4 2.25 -4 \n-4 0.25 -4.125 \n-4 2.25 -4.125 \n-3.25 0.25 -4 \n-3.25 2.25 -4 \n-3.25 0.25 -4.125 \n-3.25 2.25 -4.125 \ncloud 8 \n-4 2.25 -4 \n-4 2.5 -4 \n-4 2.25 -7.5 \n-4 2.5 -7.5 \n4 2.25 -4 \n4 2.5 -4 \n4 2.25 -7.5 \n4 2.5 -7.5 \ncloud 8 \n-4 0.25 -7.375 \n-4 2.25 -7.375 \n-4 0.25 -7.5 \n-4 2.25 -7.5 \n4 0.25 -7.375 \n4 2.25 -7.375 \n4 0.25 -7.5 \n4 2.25 -7.5 \ncloud 8 \n-4 0.25 -4.125 \n-4 2.25 -4.125 \n-4 0.25 -7.375 \n-4 2.25 -7.375 \n-3.875 0.25 -4.125 \n-3.875 2.25 -4.125 \n-3.875 0.25 -7.375 \n-3.875 2.25 -7.375 \ncloud 8 \n3.875 0.25 -4.125 \n3.875 2.25 -4.125 \n3.875 0.25 -7.375 \n3.875 2.25 -7.375 \n4 0.25 -4.125 \n4 2.25 -4.125 \n4 0.25 -7.375 \n4 2.25 -7.375 \ncloud 6 \n-4 2.5 -2 \n-4 3.7500005 -2 \n-4 2.5 -3.6666675 \n-3.875 2.5 -2 \n-3.875 3.7500005 -2 \n-3.875 2.5 -3.6666675 \ncloud 6 \n3.875 2.25 -2 \n3.875 3.7500005 -2 \n3.875 2.25 -4.000001 \n4 2.25 -2 \n4 3.7500005 -2 \n4 2.25 -4.000001 \ncloud 8 \n-4 3.7499695 -2 \n-4 4.0000005 -2 \n-4 2.2499697 -4 \n-4 2.5000005 -4 \n4 3.7499695 -2 \n4 4.0000005 -2 \n4 2.2499697 -4 \n4 2.5000005 -4 \ncloud 8 \n-3.25 2 -4 \n-3.25 2.25 -4 \n-3.25 2 -4.125 \n-3.25 2.25 -4.125 \n-1.75 2 -4 \n-1.75 2.25 -4 \n-1.75 2 -4.125 \n-1.75 2.25 -4.125 \ncloud 8 \n3.125 2.25 -0.25 \n3.125 2.5 -0.25 \n3.125 2.25 -0.5 \n3.125 2.5 -0.5 \n3.875 2.25 -0.25 \n3.875 2.5 -0.25 \n3.875 2.25 -0.5 \n3.875 2.5 -0.5 \ncloud 8 \n3.125 2.5 -0.5 \n3.125 2.75 -0.5 \n3.125 2.5 -0.75 \n3.125 2.75 -0.75 \n3.875 2.5 -0.5 \n3.875 2.75 -0.5 \n3.875 2.5 -0.75 \n3.875 2.75 -0.75 \ncloud 8 \n3.125 2.75 -0.75 \n3.125 3 -0.75 \n3.125 2.75 -1 \n3.125 3 -1 \n3.875 2.75 -0.75 \n3.875 3 -0.75 \n3.875 2.75 -1 \n3.875 3 -1 \ncloud 8 \n3.125 3 -1 \n3.125 3.25 -1 \n3.125 3 -1.25 \n3.125 3.25 -1.25 \n3.875 3 -1 \n3.875 3.25 -1 \n3.875 3 -1.25 \n3.875 3.25 -1.25 \ncloud 8 \n3.125 3.25 -1.25 \n3.125 3.5 -1.25 \n3.125 3.25 -1.5 \n3.125 3.5 -1.5 \n3.875 3.25 -1.25 \n3.875 3.5 -1.25 \n3.875 3.25 -1.5 \n3.875 3.5 -1.5 \ncloud 8 \n3.125 3.5 -1.5 \n3.125 3.75 -1.5 \n3.125 3.5 -1.75 \n3.125 3.75 -1.75 \n3.875 3.5 -1.5 \n3.875 3.75 -1.5 \n3.875 3.5 -1.75 \n3.875 3.75 -1.75 \ncloud 8 \n3.125 3.75 -1.75 \n3.125 4 -1.75 \n3.125 3.75 -2 \n3.125 4 -2 \n3.875 3.75 -1.75 \n3.875 4 -1.75 \n3.875 3.75 -2 \n3.875 4 -2 \ncloud 8 \n3.125 1.75 0.25 \n3.125 2 0.25 \n3.125 1.75 -0 \n3.125 2 -0 \n3.875 1.75 1 \n3.875 2 1 \n3.875 1.75 -0 \n3.875 2 -0 \ncloud 8 \n2.875 1.75 1 \n2.875 2 1 \n2.875 1.75 0.25 \n2.875 2 0.25 \n3.875 1.75 1 \n3.875 2 1 \n3.1249847 1.75 0.25 \n3.1249847 2 0.25 \ncloud 8 \n-28 0 4 \n-28 0.25 4 \n-28 0 -7.5 \n-28 0.25 -7.5 \n-4 0 4 \n-4 0.25 4 \n-4 0 -7.5 \n-4 0.25 -7.5 \ncloud 6 \n-6 0.2500038 0.49995422 \n-6 2.2499924 -7.4999995 \n-6 0.2500037 -7.5 \n-4 0.25000378 0.4999541 \n-4 2.2499924 -7.4999995 \n-4 0.25000367 -7.5 \ncloud 6 \n-8 0.2500038 0.49995422 \n-8 2.2499924 -7.4999995 \n-8 0.2500037 -7.5 \n-6 0.25000378 0.4999541 \n-6 2.2499924 -7.4999995 \n-6 0.25000367 -7.5 \ncloud 6 \n-10 0.25 -0.5 \n-10 2.25 -7.5 \n-10 0.25 -7.5 \n-8 0.25 -0.50000036 \n-8 2.25 -7.5 \n-8 0.25 -7.5 \ncloud 6 \n-12 0.25 -1.5 \n-12 2.25 -7.5 \n-12 0.25 -7.5 \n-10 0.24999994 -1.4999996 \n-10 2.25 -7.5 \n-10 0.24999994 -7.5 \ncloud 6 \n-14 0.25 -2.4999695 \n-14 2.2500122 -7.5 \n-14 0.25 -7.5 \n-12 0.25000006 -2.4999695 \n-12 2.2500122 -7.5 \n-12 0.25000006 -7.5 \ncloud 6 \n-16 0.25 -3.5000305 \n-16 2.2499847 -7.5 \n-16 0.25 -7.5 \n-14 0.24999994 -3.5000305 \n-14 2.2499847 -7.5 \n-14 0.24999994 -7.5 \ncloud 6 \n-18 0.25 -4.5 \n-18 2.2500002 -7.5 \n-18 0.25 -7.5 \n-16 0.25 -4.5 \n-16 2.2500002 -7.5 \n-16 0.25 -7.5 \ncloud 6 \n-20 0.25001526 -5.0000305 \n-20 2.249991 -7.5 \n-20 0.2500151 -7.5 \n-18 0.25001514 -5.0000305 \n-18 2.249991 -7.5 \n-18 0.250015 -7.5 \ncloud 6 \n-22 0.25 -5.5 \n-22 2.25 -7.5 \n-22 0.25 -7.5 \n-20 0.25 -5.5 \n-20 2.25 -7.5 \n-20 0.25 -7.5 \ncloud 6 \n-24 0.25 -6.0000153 \n-24 2.2499795 -7.5 \n-24 0.25 -7.5 \n-22 0.25 -6.0000153 \n-22 2.2499795 -7.5 \n-22 0.25 -7.5 \ncloud 6 \n-26 0.25 -6.5 \n-26 2.25 -7.5 \n-26 0.25 -7.5 \n-24 0.25 -6.5 \n-24 2.2499998 -7.5 \n-24 0.25 -7.5 \ncloud 6 \n-28 0.25 -7.0000076 \n-28 2.2499692 -7.5 \n-28 0.25 -7.5 \n-26 0.25 -7.0000076 \n-26 2.249969 -7.5 \n-26 0.25 -7.5 \ncloud 8 \n-6 2.25 1.5 \n-6 2.5 1.5 \n-6 2.25 -7.5 \n-6 2.5 -7.5 \n-4 2.25 1.5 \n-4 2.5 1.5 \n-4 2.25 -7.5 \n-4 2.5 -7.5 \n"
  },
  {
    "path": "data/models/movs.stmdl",
    "content": "STMDLv1 1317 665 5 1 \nlightmap 512 512 \nconcrete067 \nbrick002 \nconcrete103 \nconcrete090 \nbrick052 \n-4 2.21875 -7.375 -1 -0 0 1.84375 0.5546875 0 0 \n-4 2.2500002 -7.5 -1 -0 0 1.875 0.56250006 0 0 \n-4 2.25 -7.5 -1 -0 0 1.875 0.5625 0 0 \n-10 0.25 -0.5 -1 0 0 0.25 0.125 0 0 \n-10 2.25 -7.5 -1 0 0 3.75 1.125 0 0 \n-12 0.25 -1.5 -1 0 0 0.75 0.125 0 0 \n-12 2.25 -7.5 -1 0 0 3.75 1.125 0 0 \n4 0 4 -0 -0 1 -2 1.7484555e-07 0.25683594 0.13378906 \n4 0.25 4 -0 -0 1 -2 -0.12499982 0.25683594 0.13183594 \n-4 0.25 4 -0 -0 1 2 -0.12500018 0.19433594 0.13183594 \n-4 0 4 -0 -0 1 2 -1.7484555e-07 0.19433594 0.13378906 \n-28 0.25 4 -0 -0 1 14 -0.12500122 0.0068359375 0.13183594 \n-28 0 4 -0 -0 1 14 -1.2239188e-06 0.0068359375 0.13378906 \n4 0 4 1 -0 0 2 -1.7484555e-07 0.028320312 0.14355469 \n4 0.25 -4 1 -0 0 -2 -0.12499982 0.09082031 0.14550781 \n4 0.25 4 1 -0 0 2 -0.12500018 0.028320312 0.14550781 \n4 0.25 4 1 -0 0 1 -0.06250009 0.028320312 0.14550781 \n4 0.25 -4 1 -0 0 -1 -0.06249991 0.09082031 0.14550781 \n4 2.25 -4 1 -0 0 -1 -0.5624999 0.09082031 0.16113281 \n4 2.25 4 1 -0 0 1 -0.5625001 0.028320312 0.16113281 \n4 2.25 -4.125 1 -0 0 -1.03125 -0.5624999 0.091796875 0.16113281 \n4 0.25 -4.125 1 -0 0 -1.03125 -0.06249991 0.091796875 0.14550781 \n4 2.25 -7.375 1 -0 0 -1.84375 -0.5624999 0.1171875 0.16113281 \n4 0.25 -7.375 1 -0 0 -1.84375 -0.062499836 0.1171875 0.14550781 \n4 2.25 -7.5 1 -0 0 -1.875 -0.5624999 0.11816406 0.16113281 \n4 0.25 -7.5 1 -0 0 -1.875 -0.062499836 0.11816406 0.14550781 \n4 0 -4 1 -0 0 -2 1.7484555e-07 0.09082031 0.14355469 \n4 0.25 -7.5 1 -0 0 -3.75 -0.12499967 0.11816406 0.14550781 \n4 0 -7.5 1 -0 0 -3.75 3.278354e-07 0.11816406 0.14355469 \n4 0 -4 -0 -1 0 2 2 0.2626953 0.06738281 \n4 0 4 -0 -1 0 2 -2 0.2626953 0.0048828125 \n-4 0 4 -0 -1 0 -2 -2 0.20019531 0.0048828125 \n-4 0 -4 -0 -1 0 -2 2 0.20019531 0.06738281 \n4 0 -7.5 -0 -1 0 2 3.75 0.2626953 0.09472656 \n-4 0 -7.5 -0 -1 0 -2 3.75 0.20019531 0.09472656 \n-4 0 -7.5 -0 -0 -1 -2 0 0.06542969 0.12207031 \n4 0.25 -7.5 -0 -0 -1 2 0.125 0.0029296875 0.12011719 \n4 0 -7.5 -0 -0 -1 2 0 0.0029296875 0.12207031 \n-4 0.25 -7.5 -0 -0 -1 -2 0.125 0.06542969 0.12011719 \n-4 0.25 -7.5 -0 -0 -1 -1 0.0625 0.06542969 0.12011719 \n4 2.25 -7.5 -0 -0 -1 1 0.5625 0.0029296875 0.10449219 \n4 0.25 -7.5 -0 -0 -1 1 0.0625 0.0029296875 0.12011719 \n-4 2.25 -7.5 -0 -0 -1 -1 0.5625 0.06542969 0.10449219 \n-4 2.25 -7.5 -0 -0 -1 -2 1.125 0.06542969 0.10449219 \n4 2.5 -7.5 -0 -0 -1 2 1.25 0.0029296875 0.10253906 \n4 2.25 -7.5 -0 -0 -1 2 1.125 0.0029296875 0.10449219 \n-4 2.5 -7.5 -0 -0 -1 -2 1.25 0.06542969 0.10253906 \n-6 2.25 -7.5 -0 -0 -1 -3 1.125 0.08105469 0.10449219 \n-6 2.5 -7.5 -0 -0 -1 -3 1.25 0.08105469 0.10253906 \n-28 0 -7.5 -0 -0 -1 -14 0 0.2529297 0.12207031 \n-28 0.25 -7.5 -0 -0 -1 -14 0.125 0.2529297 0.12011719 \n4 0.25 4 -0 -0 1 -1 -0.06249991 0.15722656 0.3095703 \n4 2.25 4 -0 -0 1 -1 -0.5624999 0.15722656 0.2939453 \n3.875 2.25 4 -0 -0 1 -0.96875 -0.5624999 0.1562345 0.2939453 \n3.875 0.25 4 -0 -0 1 -0.96875 -0.062499918 0.1562345 0.3095703 \n-3.875 2.25 4 -0 -0 1 0.96875 -0.5625001 0.09472656 0.2939453 \n-3.875 0.25 4 -0 -0 1 0.96875 -0.06250009 0.09472656 0.3095703 \n3.875 2.25 4 -0 1 0 -0.9687499 1 0.09082031 0.10449219 \n4 2.25 4 -0 1 0 -0.9999999 1 0.09082031 0.10644531 \n4 2.25 -2 -0 1 0 -1 -0.49999994 0.13769531 0.10644531 \n3.875 2.25 -2 -0 1 0 -0.96875 -0.49999994 0.13769531 0.10449219 \n3.875 2.25 3.875 -0 1 0 -0.9687499 0.9687501 0.2998047 0.08691406 \n-3.875 2.25 4 -0 1 0 0.9687501 0.9999999 0.29785156 0.026367188 \n3.875 2.25 4 -0 1 0 -0.9687499 1 0.29785156 0.08691406 \n-3.875 2.25 3.875 -0 1 0 0.9687501 0.9687499 0.2998047 0.026367188 \n4 2.25 -2 -0 -0 1 -1 -0.5624999 0.41308594 0.10449219 \n3.875 3.7500005 -2 -0 -0 1 -0.9687501 -0.9375 0.4111328 0.09082031 \n3.875 2.25 -2 -0 -0 1 -0.96875 -0.5624999 0.4111328 0.10449219 \n4 3.7500005 -2 -0 -0 1 -1 -0.9375 0.41308594 0.09082031 \n3.875 2.25 -2 -1 -0 0 0.5 0.5625 0.39941406 0.30566406 \n3.875 3.7500005 -2 -1 -0 0 0.5 0.9375001 0.3857422 0.30566406 \n3.875 2.25 -4.000001 -1 -0 0 1.0000002 0.5625 0.39941406 0.28808594 \n4 2.25 -2 1 -0 0 -0.5 -0.5625 0.0068359375 0.39941406 \n4 2.25 -4.000001 1 -0 0 -1.0000002 -0.5624999 0.024414062 0.39941406 \n4 3.7500005 -2 1 -0 0 -0.5000001 -0.9375001 0.0068359375 0.3857422 \n4 2.25 -4 1 -0 0 -2 -1.1249998 0.29785156 0.19042969 \n4 2.25 -7.5 1 -0 0 -3.75 -1.1249998 0.29785156 0.21777344 \n4 2.5 -7.5 1 -0 0 -3.75 -1.2499998 0.29589844 0.21777344 \n4 2.5 -4 1 -0 0 -2 -1.2499998 0.29589844 0.19042969 \n4 2.5 -7.5 -0 1 0 -2.0000005 -3.75 0.25683594 0.22363281 \n-4 2.5 -4 -0 1 0 1.9999998 -2 0.19433594 0.19628906 \n4 2.5 -4 -0 1 0 -2 -1.9999998 0.25683594 0.19628906 \n-4 2.5 -7.5 -0 1 0 1.9999998 -3.75 0.19433594 0.22363281 \n-4 2.25 -7.5 -0 -1 0 -2 3.75 0.16503906 0.2841797 \n-6 2.25 1.5 -0 -1 0 -3 -0.75 0.09472656 0.2685547 \n-6 2.25 -7.5 -0 -1 0 -3 3.75 0.16503906 0.2685547 \n-4 2.25 1.5 -0 -1 0 -2 -0.75 0.09472656 0.2841797 \n-6 2.25 1.5 -1 -0 0 -0.75 1.125 0.3095703 0.018554688 \n-6 2.5 -7.5 -1 -0 0 3.75 1.25 0.31152344 0.08886719 \n-6 2.25 -7.5 -1 -0 0 3.75 1.125 0.3095703 0.08886719 \n-6 2.5 1.5 -1 -0 0 -0.75 1.25 0.31152344 0.018554688 \n-4 2.25 1.5 -0 -0 1 2 -1.1250002 0.4033203 0.11621094 \n-6 2.5 1.5 -0 -0 1 3 -1.2500002 0.3876953 0.11425781 \n-6 2.25 1.5 -0 -0 1 3 -1.1250002 0.3876953 0.11621094 \n-4 2.5 1.5 -0 -0 1 2 -1.2500002 0.4033203 0.11425781 \n-4 2.5 -7.5 -0 1 0 1.9999998 -3.75 0.07519531 0.27246094 \n-6 2.5 -7.5 -0 1 0 2.9999995 -3.7500005 0.07519531 0.25683594 \n-6 2.5 1.5 -0 1 0 3 0.74999976 0.0048828125 0.25683594 \n-4 2.5 1.5 -0 1 0 2 0.7499999 0.0048828125 0.27246094 \n-4 0 -7.5 -0 -1 0 -2 3.75 0.18847656 0.09082031 \n-28 0 4 -0 -1 0 -14 -2 0.0009765625 0.0009765625 \n-28 0 -7.5 -0 -1 0 -14 3.75 0.0009765625 0.09082031 \n-4 0 4 -0 -1 0 -2 -2 0.18847656 0.0009765625 \n-28 0 4 -1 -0 0 -2 0 0.15136719 0.10449219 \n-28 0.25 -7.5 -1 -0 0 3.75 0.125 0.24121094 0.10644531 \n-28 0 -7.5 -1 -0 0 3.75 0 0.24121094 0.10449219 \n-28 0.25 4 -1 -0 0 -2 0.125 0.15136719 0.10644531 \n-3.875 0.25 1.75 -0 1 0 1.9375 0.8749999 0.08691406 0.4013672 \n-3 0.25 3.875 -0 1 0 1.5000002 1.9374998 0.06933594 0.3935547 \n-3 0.25 1.75 -0 1 0 1.5 0.8749999 0.08691406 0.3935547 \n-3.875 0.25 3.875 -0 1 0 1.9375002 1.9374998 0.06933594 0.4013672 \n-3.875 0.25 1.75 1 -0 0 0.4375 -0.062500045 0.31152344 0.20666233 \n-3.875 2.25 3.875 1 -0 0 0.96875 -0.5625001 0.32714844 0.22363281 \n-3.875 0.25 3.875 1 -0 0 0.96875 -0.06250009 0.31152344 0.22363281 \n-3.875 2.25 -1.75 1 -0 0 -0.43750006 -0.5625 0.32714844 0.17871094 \n-3.875 0.25 3.875 -0 -0 -1 -0.96875 0.0625 0.40527344 0.18066406 \n-3 2.25 3.875 -0 -0 -1 -0.75 0.5625 0.39746094 0.16503906 \n-3 0.25 3.875 -0 -0 -1 -0.75 0.0625 0.39746094 0.18066406 \n-3.875 2.25 3.875 -0 -0 -1 -0.96875 0.5625 0.40527344 0.16503906 \n-3 0.25 -4 -0 1 0 1.4999998 -2 0.36621094 0.16113281 \n-3.8437505 0.25 -4 -0 1 0 1.921875 -2 0.37402344 0.16113281 \n-3.5000002 0.25 -0.375 -0 1 0 1.7500001 -0.18750015 0.37084058 0.13183594 \n-3 0.25 -0.375 -0 1 0 1.5 -0.18750012 0.36621094 0.13183594 \n-3.125 0.25 -0 -0 1 0 1.5625 -1.3659809e-07 0.3779297 0.4482422 \n-3 0.25 -0.375 -0 1 0 1.5 -0.18750012 0.38183594 0.4501953 \n-3.125 0.25 -0.375 -0 1 0 1.5625 -0.18750015 0.38183594 0.4482422 \n-3 0.25 -0 -0 1 0 1.5 -1.3113416e-07 0.3779297 0.4501953 \n-3.125 0.25 -0 1 -0 0 0 0.0703125 0.07910156 0.4111328 \n-3.125 0.25 -0.375 1 -0 0 0.1875 0.0703125 0.07910156 0.41503906 \n-3.125 1.25 -0.375 1 -0 0 0.1875 0.5703125 0.07128906 0.41503906 \n-3.125 1.25 -0 1 -0 0 0 0.5703125 0.07128906 0.4111328 \n-3.125 0.25 -0.375 -0 -0 -1 -1.5625 0.0703125 0.39160156 0.41503906 \n-3.5000002 1.25 -0.375 -0 -0 -1 -1.7500001 0.5703125 0.38378906 0.4111328 \n-3.125 1.25 -0.375 -0 -0 -1 -1.5625 0.5703125 0.38378906 0.41503906 \n-3.5000002 0.25 -0.375 -0 -0 -1 -1.7500001 0.0703125 0.39160156 0.4111328 \n-3.125 1.25 -0.375 -0 1 0 -1.5625 0.1328125 0.026367188 0.4267578 \n-3.875 1.25 -0 -0 1 0 -1.9375 -0.0546875 0.020507812 0.42285156 \n-3.125 1.25 -0 -0 1 0 -1.5625 -0.0546875 0.026367188 0.42285156 \n-3.875 1.25 -0.375 -0 1 0 -1.9375 0.1328125 0.020507812 0.4267578 \n-3.5 0.25 1.75 -0 1 0 1.75 0.8749999 0.21386719 0.4033203 \n-3 0.25 0.75 -0 1 0 1.5 0.37499988 0.21777344 0.4111328 \n-3.5 0.25 0.75 -0 1 0 1.75 0.37499982 0.21386719 0.4111328 \n-3 0.25 1.75 -0 1 0 1.5 0.8749999 0.21777344 0.4033203 \n-3.5 0.25 0.5 -0 1 0 1.75 0.24999985 0.43847656 0.2841797 \n-3 0.25 -0 -0 1 0 1.5 -1.3113416e-07 0.4423828 0.28808594 \n-3.5 0.25 -0 -0 1 0 1.75 -1.5298986e-07 0.43847656 0.28808594 \n-3 0.25 0.5 -0 1 0 1.5 0.24999988 0.4423828 0.2841797 \n-3.5 0.25 -0 1 -0 0 0 0.0703125 0.35058594 0.4482422 \n-3.5 0.5 0.5 1 -0 0 -0.25 0.1953125 0.3544922 0.4501953 \n-3.5 0.25 0.5 1 -0 0 -0.25 0.0703125 0.3544922 0.4482422 \n-3.5 0.5 -2.9759576e-08 1 -0 0 1.4879788e-08 0.1953125 0.35058594 0.4501953 \n-3.5 0.25 0.5 -0 -0 -1 -1.75 0.0703125 0.44628906 0.12011719 \n-3.5 0.5 0.5 -0 -0 -1 -1.75 0.1953125 0.44628906 0.11816406 \n-3.125 0.5 0.5 -0 -0 -1 -1.5625 0.1953125 0.4423828 0.11816406 \n-3.125 0.25 0.5 -0 -0 -1 -1.5625 0.0703125 0.4423828 0.12011719 \n-3.125 0.5 0.25 -0 -1 0 -1.5625 -0.1796875 0.21972656 0.4482422 \n-3.125 0.5 0.5 -0 -1 0 -1.5625 -0.3046875 0.21972656 0.44628906 \n-3.5 0.5 0.5 -0 -1 0 -1.75 -0.3046875 0.21582031 0.44628906 \n-3.5 0.5 0.25 -0 -1 0 -1.75 -0.1796875 0.21582031 0.4482422 \n-3.125 0.25 0.75 1 -0 0 -0.375 0.0703125 0.45214844 0.22558594 \n-3.125 0.25 0.5 1 -0 0 -0.25 0.0703125 0.45410156 0.22558594 \n-3.125 0.5 0.5 1 -0 0 -0.25 0.1953125 0.45410156 0.22363281 \n-3.125 0.5 0.75 1 -0 0 -0.375 0.1953125 0.45214844 0.22363281 \n-3.125 0.25 0.75 -0 1 0 1.5625 0.37499988 0.45214844 0.3857422 \n-3 0.25 0.5 -0 1 0 1.5 0.24999988 0.45410156 0.3876953 \n-3.125 0.25 0.5 -0 1 0 1.5625 0.24999985 0.45410156 0.3857422 \n-3 0.25 0.75 -0 1 0 1.5 0.37499988 0.45214844 0.3876953 \n-3.125 0.5 0.5 -0 1 0 -1.5625 -0.3046875 0.026367188 0.4501953 \n-3.5 0.5 0.75 -0 1 0 -1.75 -0.4296875 0.022460938 0.4482422 \n-3.125 0.5 0.75 -0 1 0 -1.5625 -0.4296875 0.026367188 0.4482422 \n-3.5 0.5 0.5 -0 1 0 -1.75 -0.3046875 0.022460938 0.4501953 \n-3.125 0.25 0.75 -0 -0 1 -1.5625 0.0703125 0.4482422 0.09667969 \n-3.125 0.5 0.75 -0 -0 1 -1.5625 0.1953125 0.44628906 0.09667969 \n-3.5 0.5 0.75 -0 -0 1 -1.75 0.1953125 0.44628906 0.09277344 \n-3.5 0.25 0.75 -0 -0 1 -1.75 0.0703125 0.4482422 0.09277344 \n-3.125 0.5 0.5 -0 -0 1 -1.5625 0.1953125 0.4482422 0.21191406 \n-3.5 0.75 0.5 -0 -0 1 -1.75 0.3203125 0.44433594 0.20996094 \n-3.5 0.5 0.5 -0 -0 1 -1.75 0.1953125 0.44433594 0.21191406 \n-3.125 0.75 0.5 -0 -0 1 -1.5625 0.3203125 0.4482422 0.20996094 \n-3.5 0.82141984 0.74999994 1 -0 0 -0.37499997 0.35602242 0.44433594 0.33375898 \n-3.5 0.5 0.75 1 -0 0 -0.375 0.1953125 0.44433594 0.3310547 \n-3.5 0.5 0.5 1 -0 0 -0.25 0.1953125 0.44628906 0.3310547 \n-3.5 0.96427697 0.5 1 -0 0 -0.25 0.42745098 0.44628906 0.33496094 \n-3.125 0.5 0.5 1 -0 0 -0.25 0.1953125 0.4501953 0.2705078 \n-3.125 0.75 0.25 1 -0 0 -0.125 0.3203125 0.45214844 0.27246094 \n-3.125 0.75 0.5 1 -0 0 -0.25 0.3203125 0.45214844 0.2705078 \n-3.125 0.5 0.25 1 -0 0 -0.125 0.1953125 0.4501953 0.27246094 \n-3.125 0.75 0.25 -0 1 0 -1.5625 -0.1796875 0.3408203 0.4482422 \n-3.5 0.75 0.5 -0 1 0 -1.75 -0.3046875 0.33691406 0.44628906 \n-3.125 0.75 0.5 -0 1 0 -1.5625 -0.3046875 0.3408203 0.44628906 \n-3.5 0.75 0.25 -0 1 0 -1.75 -0.1796875 0.33691406 0.4482422 \n-3.5 0.5 0.25 -0 -0 -1 -1.75 0.1953125 0.14941406 0.4482422 \n-3.5 0.75 0.25 -0 -0 -1 -1.75 0.3203125 0.14941406 0.44628906 \n-3.125 0.75 0.25 -0 -0 -1 -1.5625 0.3203125 0.14550781 0.44628906 \n-3.125 0.5 0.25 -0 -0 -1 -1.5625 0.1953125 0.14550781 0.4482422 \n-3.5 0.96427697 0.5 1 -0 0 -0.25 0.42745098 0.09824222 0.44628906 \n-3.5 0.75 0.5 1 -0 0 -0.25 0.3203125 0.10058594 0.44628906 \n-3.5 0.75 0.25 1 -0 0 -0.125 0.3203125 0.10058594 0.4482422 \n-3.5 1.1071341 0.25 1 -0 0 -0.125 0.49887955 0.09667969 0.4482422 \n-3.5 0.5 0.25 1 -0 0 -0.125 0.1953125 0.17285156 0.44433594 \n-3.5 0.75 -5.9519156e-08 1 -0 0 2.9759578e-08 0.3203125 0.16894531 0.44628906 \n-3.5 0.75 0.25 1 -0 0 -0.125 0.3203125 0.17285156 0.44628906 \n-3.5 0.5 -2.9759576e-08 1 -0 0 1.4879788e-08 0.1953125 0.16894531 0.44433594 \n-3.125 0.75 -0 -0 -1 0 -1.5625 -0.0546875 0.4482422 0.041992188 \n-3.125 0.75 0.25 -0 -1 0 -1.5625 -0.1796875 0.44628906 0.041992188 \n-3.5 0.75 0.25 -0 -1 0 -1.75 -0.1796875 0.44628906 0.038085938 \n-3.5 0.75 -0 -0 -1 0 -1.75 -0.0546875 0.4482422 0.038085938 \n-3.125 0.75 0.25 1 -0 0 -0.125 0.3203125 0.2783203 0.45214844 \n-3.125 0.75 -0 1 -0 0 0 0.3203125 0.28027344 0.45214844 \n-3.125 1 -0 1 -0 0 0 0.4453125 0.28027344 0.4501953 \n-3.125 1 0.25 1 -0 0 -0.125 0.4453125 0.2783203 0.4501953 \n-3.125 0.75 0.25 -0 -0 1 -1.5625 0.3203125 0.4482422 0.2529297 \n-3.5 1 0.25 -0 -0 1 -1.75 0.4453125 0.44433594 0.25097656 \n-3.5 0.75 0.25 -0 -0 1 -1.75 0.3203125 0.44433594 0.2529297 \n-3.125 1 0.25 -0 -0 1 -1.5625 0.4453125 0.4482422 0.25097656 \n-3.125 0.25 -0 -0 -0 1 -1.5625 0.0703125 0.4423828 0.22949219 \n-3.125 0.75 -0 -0 -0 1 -1.5625 0.3203125 0.43847656 0.22949219 \n-3.5 0.75 -0 -0 -0 1 -1.75 0.3203125 0.43847656 0.22558594 \n-3.5 0.25 -0 -0 -0 1 -1.75 0.0703125 0.4423828 0.22558594 \n-3.125 1 -0 -0 1 0 -1.5625 -0.0546875 0.44628906 0.30371094 \n-3.5 1 0.25 -0 1 0 -1.75 -0.1796875 0.44433594 0.2998047 \n-3.125 1 0.25 -0 1 0 -1.5625 -0.1796875 0.44433594 0.30371094 \n-3.5 1 -0 -0 1 0 -1.75 -0.0546875 0.44628906 0.2998047 \n-3.125 1 -0 -0 -0 1 -1.5625 0.4453125 0.11425781 0.44628906 \n-3.5 1.25 -0 -0 -0 1 -1.75 0.5703125 0.11035156 0.44433594 \n-3.5 1 -0 -0 -0 1 -1.75 0.4453125 0.11035156 0.44628906 \n-3.125 1.25 -0 -0 -0 1 -1.5625 0.5703125 0.11425781 0.44433594 \n1.375 0.25 -4 -0 1 0 -0.6875001 -2 0.16894531 0.20605469 \n-3 0.25 -4 -0 1 0 1.4999998 -2 0.16894531 0.17089844 \n-3 0.25 3.125 -0 1 0 1.5000002 1.5624998 0.11230469 0.17089844 \n1.375 0.25 3.125 -0 1 0 -0.6874999 1.5625 0.11230469 0.20605469 \n1.375 0.25 1 -0 1 0 -0.6875 0.5000001 0.39746094 0.15527344 \n1.375 0.25 3.125 -0 1 0 -0.6874999 1.5625 0.39746094 0.13769531 \n3 0.25 3.125 -0 1 0 -1.4999998 1.5625002 0.38378906 0.13769531 \n3 0.25 1 -0 1 0 -1.5 0.5000001 0.38378906 0.15527344 \n3 0.25 3 -0 1 0 -1.4999998 1.5000002 0.059570312 0.41308594 \n3.875 0.25 2.75 -0 1 0 -1.9374998 1.3750002 0.061523438 0.42089844 \n3 0.25 2.75 -0 1 0 -1.4999998 1.3750002 0.061523438 0.41308594 \n3.875 0.25 3 -0 1 0 -1.9374998 1.5000002 0.059570312 0.42089844 \n3.875 0.25 2.75 -0 -0 1 -0.96875 -0.124999836 0.4169922 0.23730469 \n3 1.25 2.75 -0 -0 1 -0.75 -0.6249999 0.4091797 0.22949219 \n3 0.25 2.75 -0 -0 1 -0.75 -0.124999866 0.4169922 0.22949219 \n3.875 1.25 2.75 -0 -0 1 -0.96875 -0.6249999 0.4091797 0.23730469 \n3 0.25 2.75 -1 -0 0 -0.6875 0.125 0.2939453 0.3076172 \n3 1.25 2.75 -1 -0 0 -0.6875 0.625 0.3017578 0.3076172 \n3 1.25 2.625 -1 -0 0 -0.65625 0.625 0.3017578 0.3095703 \n3 0.25 2.625 -1 -0 0 -0.65625 0.125 0.2939453 0.3095703 \n3.875 1.25 2.625 -0 1 0 -0.96875 1.3125002 0.15527344 0.4248047 \n3 1.25 2.625 -0 1 0 -0.75 1.3125002 0.14746094 0.4248047 \n3 1.25 2.75 -0 1 0 -0.7499999 1.3750002 0.14746094 0.42285156 \n3.875 1.25 2.75 -0 1 0 -0.9687499 1.3750002 0.15527344 0.42285156 \n3 0.25 2.625 -0 -0 -1 0.75 0.125 0.41503906 0.20214844 \n3 1.25 2.625 -0 -0 -1 0.75 0.625 0.40722656 0.20214844 \n3.875 1.25 2.625 -0 -0 -1 0.96875 0.625 0.40722656 0.19433594 \n3.875 0.25 2.625 -0 -0 -1 0.96875 0.125 0.41503906 0.19433594 \n3.875 0.25 2.625 -1 -0 0 -0.65625 0.0625 0.0009765625 0.17480469 \n3.875 1.25 2.625 -1 -0 0 -0.65625 0.3125 0.0009765625 0.18261719 \n3.875 1.25 2.375 -1 -0 0 -0.59375 0.3125 0.0029296875 0.18261719 \n3.875 0.25 2.375 -1 -0 0 -0.59375 0.0625 0.0029296875 0.17480469 \n3 0.25 2.625 -0 1 0 -1.5 1.3125002 0.3720703 0.4091797 \n3.875 0.25 2.625 -0 1 0 -1.9375 1.3125002 0.3720703 0.4169922 \n3.875 0.25 2.375 -0 1 0 -1.9375 1.1875002 0.37402344 0.4169922 \n3 0.25 2.375 -0 1 0 -1.5 1.1875002 0.37402344 0.4091797 \n3.875 0.25 2.375 -0 -0 1 -0.96875 -0.124999836 0.41503906 0.3486328 \n3 1.25 2.375 -0 -0 1 -0.75 -0.6249999 0.40722656 0.3408203 \n3 0.25 2.375 -0 -0 1 -0.75 -0.124999866 0.40722656 0.3486328 \n3.875 1.25 2.375 -0 -0 1 -0.96875 -0.6249999 0.41503906 0.3408203 \n3 0.25 2.375 -1 -0 0 -0.59375 0.125 0.12988281 0.42089844 \n3 1.25 2.375 -1 -0 0 -0.59375 0.625 0.13769531 0.42089844 \n3 1.25 2.25 -1 -0 0 -0.5625 0.625 0.13769531 0.42285156 \n3 0.25 2.25 -1 -0 0 -0.5625 0.125 0.12988281 0.42285156 \n3.875 1.25 2.25 -0 1 0 -0.96875 1.1250002 0.42089844 0.24902344 \n3 1.25 2.25 -0 1 0 -0.75 1.1250002 0.41308594 0.24902344 \n3 1.25 2.375 -0 1 0 -0.75 1.1875002 0.41308594 0.24707031 \n3.875 1.25 2.375 -0 1 0 -0.96875 1.1875002 0.42089844 0.24707031 \n3 0.25 2.25 -0 -0 -1 0.75 0.125 0.41503906 0.38183594 \n3 1.25 2.25 -0 -0 -1 0.75 0.625 0.41503906 0.37402344 \n3.875 1.25 2.25 -0 -0 -1 0.96875 0.625 0.40722656 0.37402344 \n3.875 0.25 2.25 -0 -0 -1 0.96875 0.125 0.40722656 0.38183594 \n3.875 0.25 2.25 -1 -0 0 -0.5625 0.0625 0.11035156 0.4189453 \n3.875 1.25 2.25 -1 -0 0 -0.5625 0.3125 0.11816406 0.4189453 \n3.875 1.25 2 -1 -0 0 -0.5 0.3125 0.11816406 0.42089844 \n3.875 0.25 2 -1 -0 0 -0.5 0.0625 0.11035156 0.42089844 \n3 0.25 2.25 -0 1 0 -1.5 1.1250002 0.41308594 0.0146484375 \n3.875 0.25 2.25 -0 1 0 -1.9375 1.1250002 0.42089844 0.0146484375 \n3.875 0.25 2 -0 1 0 -1.9375 1.0000002 0.42089844 0.016601562 \n3 0.25 2 -0 1 0 -1.5 1.0000002 0.41308594 0.016601562 \n3.875 0.25 2 -0 -0 1 -0.96875 -0.124999836 0.41503906 0.13769531 \n3 1.25 2 -0 -0 1 -0.75 -0.6249999 0.40722656 0.12988281 \n3 0.25 2 -0 -0 1 -0.75 -0.124999866 0.40722656 0.13769531 \n3.875 1.25 2 -0 -0 1 -0.96875 -0.6249999 0.41503906 0.12988281 \n3 0.25 2 -1 -0 0 -0.5 0.125 0.3544922 0.4091797 \n3 1.25 2 -1 -0 0 -0.5 0.625 0.3623047 0.4091797 \n3 1.25 1.5 -1 -0 0 -0.375 0.625 0.3623047 0.41308594 \n3 0.25 1.5 -1 -0 0 -0.375 0.125 0.3544922 0.41308594 \n3.875 1.25 1.5 -0 1 0 -0.96875 0.7500001 0.028320312 0.41308594 \n3 1.25 1.5 -0 1 0 -0.75 0.7500001 0.020507812 0.41308594 \n3 1.25 2 -0 1 0 -0.75 1.0000002 0.020507812 0.4091797 \n3.875 1.25 2 -0 1 0 -0.96875 1.0000002 0.028320312 0.4091797 \n3 0.25 1.5 -0 -0 -1 0.75 0.125 0.41503906 0.40527344 \n3 1.25 1.5 -0 -0 -1 0.75 0.625 0.40722656 0.40527344 \n3.875 1.25 1.5 -0 -0 -1 0.96875 0.625 0.40722656 0.39746094 \n3.875 0.25 1.5 -0 -0 -1 0.96875 0.125 0.41503906 0.39746094 \n3.875 0.25 1.5 -1 -0 0 -0.375 0.0625 0.16894531 0.3330078 \n3.875 1.25 1.5 -1 -0 0 -0.375 0.3125 0.16894531 0.3408203 \n3.875 1.25 -0 -1 -0 0 0 0.3125 0.18066406 0.3408203 \n3.875 0.25 -0 -1 -0 0 0 0.0625 0.18066406 0.3330078 \n3 0.25 1.5 -0 1 0 -1.5 0.7500001 0.3330078 0.4091797 \n3.875 0.25 1.5 -0 1 0 -1.9375 0.7500001 0.3408203 0.4091797 \n3.875 0.25 1 -0 1 0 -1.9375 0.5000001 0.3408203 0.41308594 \n3 0.25 1 -0 1 0 -1.5 0.5000001 0.3330078 0.41308594 \n3.875 0.25 -0 -0 -0 1 -0.96875 -0.124999836 0.41503906 0.21972656 \n3.875 1.25 -0 -0 -0 1 -0.96875 -0.6249999 0.41503906 0.21191406 \n3 1.25 -0 -0 -0 1 -0.75 -0.6249999 0.40722656 0.21191406 \n3 0.25 -0 -0 -0 1 -0.75 -0.124999866 0.40722656 0.21972656 \n3.875 1.25 -1 -0 1 0 -0.96875 -0.49999982 0.0087890625 0.37597656 \n3 1.25 -0 -0 1 0 -0.75 1.3113416e-07 0.0009765625 0.36816406 \n3.875 1.25 -0 -0 1 0 -0.96875 1.6938164e-07 0.0087890625 0.36816406 \n3 1.25 -1 -0 1 0 -0.75 -0.49999988 0.0009765625 0.37597656 \n3 0.25 -0 -1 -0 0 0 0.125 0.40722656 0.06738281 \n3 1.25 -0 -1 -0 0 0 0.625 0.40722656 0.07519531 \n3 1.25 -1 -1 -0 0 0.25 0.625 0.41503906 0.07519531 \n3 0.25 -1 -1 -0 0 0.25 0.125 0.41503906 0.06738281 \n3 0.25 -0 -0 1 0 -1.5 1.3113416e-07 0.4248047 0.10253906 \n3.875 0.25 0.25 -0 1 0 -1.9375 0.12500018 0.42285156 0.09472656 \n3.875 0.25 -0 -0 1 0 -1.9375 1.6938164e-07 0.4248047 0.09472656 \n3 0.25 0.25 -0 1 0 -1.5 0.12500012 0.42285156 0.10253906 \n3 0.25 -1 -0 -0 -1 0.75 0.125 0.4111328 0.053710938 \n3 1.25 -1 -0 -0 -1 0.75 0.625 0.4033203 0.053710938 \n3.875 1.25 -1 -0 -0 -1 0.96875 0.625 0.4033203 0.045898438 \n3.875 0.25 -1 -0 -0 -1 0.96875 0.125 0.4111328 0.045898438 \n3.875 0.25 -1 -1 -0 0 0.25 0.0625 0.3310547 0.07324219 \n3.875 1.25 -1 -1 -0 0 0.25 0.3125 0.3310547 0.08105469 \n3.875 1.25 -3 -1 -0 0 0.75 0.3125 0.3466797 0.08105469 \n3.875 0.25 -3 -1 -0 0 0.75 0.0625 0.3466797 0.07324219 \n3 0.25 -3 -0 1 0 -1.5000002 -1.4999998 0.22167969 0.3779297 \n3 0.25 -1 -0 1 0 -1.5 -0.49999988 0.20605469 0.3779297 \n3.875 0.25 -1 -0 1 0 -1.9375 -0.49999982 0.20605469 0.3701172 \n3.875 0.25 -3 -0 1 0 -1.9375002 -1.4999998 0.22167969 0.3701172 \n3.875 0.25 -3 -0 -0 1 -0.96875 -0.124999836 0.23535156 0.40722656 \n3 1.25 -3 -0 -0 1 -0.75 -0.6249999 0.22753906 0.39941406 \n3 0.25 -3 -0 -0 1 -0.75 -0.124999866 0.23535156 0.39941406 \n3.875 1.25 -3 -0 -0 1 -0.96875 -0.6249999 0.22753906 0.40722656 \n3 0.25 -3 -1 -0 0 0.75 0.125 0.09277344 0.19628906 \n3 1.25 -3 -1 -0 0 0.75 0.625 0.09277344 0.20410156 \n3 1.25 -4 -1 -0 0 1 0.625 0.10058594 0.20410156 \n3 0.25 -4 -1 -0 0 1 0.125 0.10058594 0.19628906 \n3.875 1.25 -4 -0 1 0 -0.9687501 -1.9999998 0.40527344 0.27246094 \n3 1.25 -4 -0 1 0 -0.7500001 -1.9999998 0.40527344 0.26464844 \n3 1.25 -3 -0 1 0 -0.7500001 -1.4999998 0.39746094 0.26464844 \n3.875 1.25 -3 -0 1 0 -0.9687501 -1.4999998 0.39746094 0.27246094 \n3.875 1.25 -4 -0 -0 1 -0.96875 -0.31249994 0.10644531 0.35839844 \n3 2.25 -4 -0 -0 1 -0.75 -0.5624999 0.09863281 0.35058594 \n3 1.25 -4 -0 -0 1 -0.75 -0.31249994 0.10644531 0.35058594 \n3.875 2.25 -4 -0 -0 1 -0.96875 -0.5624999 0.09863281 0.35839844 \n3.875 0.25 3 -1 -0 0 -0.75 0.0625 0.32128906 0.40722656 \n3.875 1.25 2.75 -1 -0 0 -0.6875 0.3125 0.3232422 0.41503906 \n3.875 0.25 2.75 -1 -0 0 -0.6875 0.0625 0.3232422 0.40722656 \n3.875 1.25 3 -1 -0 0 -0.75 0.3125 0.32128906 0.41503906 \n3 0.25 3 -0 -0 -1 0.75 0.125 0.3076172 0.11035156 \n3.875 1.25 3 -0 -0 -1 0.96875 0.625 0.2998047 0.10253906 \n3.875 0.25 3 -0 -0 -1 0.96875 0.125 0.2998047 0.11035156 \n3 1.25 3 -0 -0 -1 0.75 0.625 0.3076172 0.10253906 \n3 0.25 3.875 -1 -0 0 -0.96875 0.125 0.37402344 0.33691406 \n3 1.25 3 -1 -0 0 -0.75 0.625 0.38183594 0.34472656 \n3 0.25 3 -1 -0 0 -0.75 0.125 0.38183594 0.33691406 \n3 1.25 3.875 -1 -0 0 -0.96875 0.625 0.37402344 0.34472656 \n3.875 1.25 3 -0 1 0 -0.9687499 1.5000002 0.29785156 0.35253906 \n3 1.25 3 -0 1 0 -0.7499999 1.5000002 0.29785156 0.34472656 \n3 1.25 3.875 -0 1 0 -0.7499999 1.9375002 0.29003906 0.34472656 \n3.875 1.25 3.875 -0 1 0 -0.9687499 1.9375002 0.29003906 0.35253906 \n3 0.25 -4 -0 1 0 -1.5000002 -1.9999998 0.036132812 0.3564453 \n1.375 0.25 -4 -0 1 0 -0.6875001 -2 0.036132812 0.34277344 \n1.375 0.25 0.25 -0 1 0 -0.6875 0.12500006 0.0029296875 0.34277344 \n3 0.25 0.25 -0 1 0 -1.5 0.12500012 0.0029296875 0.3564453 \n1.625 0.25 1 -0 1 0 -0.8125 0.5000001 0.2548828 0.23730469 \n3.875 0.25 0.25 -0 1 0 -1.9375 0.12500018 0.2607422 0.2548828 \n1.625 0.25 0.25 -0 1 0 -0.8125 0.12500006 0.2607422 0.23730469 \n3.875 0.25 1 -0 1 0 -1.9375 0.5000001 0.2548828 0.2548828 \n1.625 0.25 1 1 -0 0 -0.5 0.125 0.2685547 0.4404297 \n1.625 0.25 0.25 1 -0 0 -0.125 0.125 0.27441406 0.4404297 \n1.625 0.5 0.25 1 -0 0 -0.125 0.25 0.27441406 0.43847656 \n1.625 0.5 1 1 -0 0 -0.5 0.25 0.2685547 0.43847656 \n1.375 0.25 0.25 -0 -0 -1 -0.6875 -0.12499994 0.45214844 0.4248047 \n1.625 0.5 0.25 -0 -0 -1 -0.8125 -0.24999994 0.4501953 0.42285156 \n1.625 0.25 0.25 -0 -0 -1 -0.8125 -0.124999925 0.45214844 0.42285156 \n1.375 0.5 0.25 -0 -0 -1 -0.6875 -0.24999994 0.4501953 0.4248047 \n1.875 0.5 0.25 -0 -1 0 0.9375 -0.125 0.3935547 0.4423828 \n1.625 0.5 1 -0 -1 0 0.8125 -0.5 0.39160156 0.43652344 \n1.625 0.5 0.25 -0 -1 0 0.8125 -0.125 0.39160156 0.4423828 \n1.875 0.5 1 -0 -1 0 0.9375 -0.5 0.3935547 0.43652344 \n1.625 0.25 1 -0 -0 1 0.8125 0.125 0.26660156 0.45214844 \n1.625 0.5 1 -0 -0 1 0.8125 0.25 0.26464844 0.45214844 \n1.375 0.5 1 -0 -0 1 0.6875 0.25 0.26464844 0.4501953 \n1.375 0.25 1 -0 -0 1 0.6875 0.125 0.26660156 0.4501953 \n1.625 0.5 0.25 -0 1 0 -0.8125 0.12500006 0.18847656 0.4423828 \n1.375 0.5 1 -0 1 0 -0.6875 0.5000001 0.18261719 0.4404297 \n1.625 0.5 1 -0 1 0 -0.8125 0.5000001 0.18261719 0.4423828 \n1.375 0.5 0.25 -0 1 0 -0.6875 0.12500006 0.18847656 0.4404297 \n1.375 0.25 1 -1 -0 0 0.5 -0.12500003 0.08105469 0.43652344 \n1.375 0.5 1 -1 -0 0 0.5 -0.25000006 0.08105469 0.43847656 \n1.375 0.5 0.25 -1 -0 0 0.124999985 -0.25 0.08691406 0.43847656 \n1.375 0.25 0.25 -1 -0 0 0.124999985 -0.125 0.08691406 0.43652344 \n1.625 0.5 1 -1 -0 0 0.5 -0.25000006 0.43847656 0.26464844 \n1.625 0.75 0.25 -1 -0 0 0.12499997 -0.375 0.4404297 0.2705078 \n1.625 0.5 0.25 -1 -0 0 0.124999985 -0.25 0.43847656 0.2705078 \n1.625 0.75 1 -1 -0 0 0.49999994 -0.37500006 0.4404297 0.26464844 \n1.625 0.5 0.25 -0 -0 -1 -0.8125 -0.24999994 0.45214844 0.20019531 \n1.625 0.75 0.25 -0 -0 -1 -0.8125 -0.37499994 0.4501953 0.20019531 \n1.875 0.75 0.25 -0 -0 -1 -0.9375 -0.37499994 0.4501953 0.19824219 \n1.875 0.5 0.25 -0 -0 -1 -0.9375 -0.24999991 0.45214844 0.19824219 \n1.875 0.75 0.25 -0 1 0 -0.9375 0.12500009 0.35839844 0.43847656 \n1.625 0.75 0.25 -0 1 0 -0.8125 0.12500006 0.35839844 0.43652344 \n1.625 0.75 1 -0 1 0 -0.8125 0.5000001 0.35253906 0.43652344 \n1.875 0.75 1 -0 1 0 -0.9375 0.5000001 0.35253906 0.43847656 \n1.875 0.5 1 1 -0 0 -0.5 0.25 0.4345703 0.3642578 \n1.875 0.5 0.25 1 -0 0 -0.125 0.25 0.4404297 0.3642578 \n1.875 0.75 0.25 1 -0 0 -0.125 0.375 0.4404297 0.3623047 \n1.875 0.75 1 1 -0 0 -0.5 0.375 0.4345703 0.3623047 \n2.125 0.75 0.25 -0 -1 0 1.0625 -0.125 0.3173828 0.43847656 \n1.875 0.75 1 -0 -1 0 0.9375 -0.5 0.31152344 0.43652344 \n1.875 0.75 0.25 -0 -1 0 0.9375 -0.125 0.3173828 0.43652344 \n2.125 0.75 1 -0 -1 0 1.0625 -0.5 0.31152344 0.43847656 \n1.875 0.5 1 -0 -0 1 0.9375 0.25 0.45214844 0.3154297 \n1.875 0.75 1 -0 -0 1 0.9375 0.375 0.45214844 0.31347656 \n1.625 0.75 1 -0 -0 1 0.8125 0.375 0.4501953 0.31347656 \n1.625 0.5 1 -0 -0 1 0.8125 0.25 0.4501953 0.3154297 \n1.875 0.75 1 -1 -0 0 0.49999994 -0.37500006 0.43847656 0.12988281 \n1.875 1 0.25 -1 -0 0 0.124999955 -0.5 0.4404297 0.13574219 \n1.875 0.75 0.25 -1 -0 0 0.12499997 -0.375 0.43847656 0.13574219 \n1.875 1 1 -1 -0 0 0.49999994 -0.5 0.4404297 0.12988281 \n1.875 0.75 0.25 -0 -0 -1 -0.9375 -0.37499994 0.08496094 0.3154297 \n1.875 1 0.25 -0 -0 -1 -0.9375 -0.49999994 0.08300781 0.3154297 \n2.125 1 0.25 -0 -0 -1 -1.0625 -0.49999988 0.08300781 0.31347656 \n2.125 0.75 0.25 -0 -0 -1 -1.0625 -0.37499988 0.08496094 0.31347656 \n2.125 1 0.25 -0 1 0 -1.0625 0.12500009 0.4404297 0.32128906 \n1.875 1 0.25 -0 1 0 -0.9375 0.12500009 0.43847656 0.32128906 \n1.875 1 1 -0 1 0 -0.9375 0.5000001 0.43847656 0.3154297 \n2.125 1 1 -0 1 0 -1.0625 0.5000001 0.4404297 0.3154297 \n2.125 0.75 1 1 -0 0 -0.5 0.375 0.4404297 0.42089844 \n2.125 0.75 0.25 1 -0 0 -0.125 0.375 0.4404297 0.4267578 \n2.125 1 0.25 1 -0 0 -0.125 0.5 0.43847656 0.4267578 \n2.125 1 1 1 -0 0 -0.5 0.5 0.43847656 0.42089844 \n2.375 1 0.25 -0 -1 0 1.1875 -0.125 0.23535156 0.43652344 \n2.125 1 1 -0 -1 0 1.0625 -0.5 0.23339844 0.43066406 \n2.125 1 0.25 -0 -1 0 1.0625 -0.125 0.23339844 0.43652344 \n2.375 1 1 -0 -1 0 1.1875 -0.5 0.23535156 0.43066406 \n2.125 0.75 1 -0 -0 1 1.0625 0.375 0.45214844 0.36035156 \n2.125 1 1 -0 -0 1 1.0625 0.5 0.45214844 0.35839844 \n1.875 1 1 -0 -0 1 0.9375 0.5 0.4501953 0.35839844 \n1.875 0.75 1 -0 -0 1 0.9375 0.375 0.4501953 0.36035156 \n2.125 1 1 -1 -0 0 0.49999994 -0.5 0.0048828125 0.43652344 \n2.125 1.25 0.25 -1 -0 0 0.12499994 -0.625 0.0107421875 0.43847656 \n2.125 1 0.25 -1 -0 0 0.124999955 -0.5 0.0107421875 0.43652344 \n2.125 1.25 1 -1 -0 0 0.49999994 -0.625 0.0048828125 0.43847656 \n2.125 1 0.25 -0 -0 -1 -1.0625 -0.49999988 0.43847656 0.4501953 \n2.125 1.25 0.25 -0 -0 -1 -1.0625 -0.6249999 0.43847656 0.4482422 \n2.375 1.25 0.25 -0 -0 -1 -1.1875 -0.6249999 0.43652344 0.4482422 \n2.375 1 0.25 -0 -0 -1 -1.1875 -0.49999988 0.43652344 0.4501953 \n2.375 1.25 0.25 -0 1 0 -1.1875 0.12500009 0.43847656 0.19628906 \n2.125 1.25 0.25 -0 1 0 -1.0625 0.12500009 0.43652344 0.19628906 \n2.125 1.25 1 -0 1 0 -1.0625 0.5000001 0.43652344 0.19042969 \n2.375 1.25 1 -0 1 0 -1.1875 0.5000001 0.43847656 0.19042969 \n2.375 1 1 1 -0 0 -0.5 0.5 0.43652344 0.038085938 \n2.375 1 0.25 1 -0 0 -0.125 0.5 0.43652344 0.043945312 \n2.375 1.25 0.25 1 -0 0 -0.125 0.625 0.4345703 0.043945312 \n2.375 1.25 1 1 -0 0 -0.5 0.625 0.4345703 0.038085938 \n2.625 1.25 0.25 -0 -1 0 1.3125 -0.125 0.43847656 0.43847656 \n2.375 1.25 1 -0 -1 0 1.1875 -0.5 0.4326172 0.43652344 \n2.375 1.25 0.25 -0 -1 0 1.1875 -0.125 0.43847656 0.43652344 \n2.625 1.25 1 -0 -1 0 1.3125 -0.5 0.4326172 0.43847656 \n2.375 1 1 -0 -0 1 1.1875 0.5 0.45214844 0.13183594 \n2.375 1.25 1 -0 -0 1 1.1875 0.625 0.45214844 0.12988281 \n2.125 1.25 1 -0 -0 1 1.0625 0.625 0.4501953 0.12988281 \n2.125 1 1 -0 -0 1 1.0625 0.5 0.4501953 0.13183594 \n2.375 1.25 1 -1 -0 0 0.49999994 -0.625 0.026367188 0.43652344 \n2.375 1.5 0.25 -1 -0 0 0.12499994 -0.75 0.032226562 0.43847656 \n2.375 1.25 0.25 -1 -0 0 0.12499994 -0.625 0.032226562 0.43652344 \n2.375 1.5 1 -1 -0 0 0.49999994 -0.75 0.026367188 0.43847656 \n2.375 1.25 0.25 -0 -0 -1 -1.1875 -0.6249999 0.45214844 0.07714844 \n2.375 1.5 0.25 -0 -0 -1 -1.1875 -0.7499999 0.45214844 0.07519531 \n2.625 1.5 0.25 -0 -0 -1 -1.3125 -0.7499999 0.4501953 0.07519531 \n2.625 1.25 0.25 -0 -0 -1 -1.3125 -0.6249999 0.4501953 0.07714844 \n2.625 1.5 0.25 -0 1 0 -1.3125 0.12500012 0.3798828 0.43847656 \n2.375 1.5 0.25 -0 1 0 -1.1875 0.12500009 0.3798828 0.43652344 \n2.375 1.5 1 -0 1 0 -1.1875 0.5000001 0.37402344 0.43652344 \n2.625 1.5 1 -0 1 0 -1.3125 0.5000001 0.37402344 0.43847656 \n2.625 1.25 1 1 -0 0 -0.5 0.625 0.24902344 0.43847656 \n2.625 1.25 0.25 1 -0 0 -0.125 0.625 0.2548828 0.43847656 \n2.625 1.5 0.25 1 -0 0 -0.125 0.75 0.2548828 0.43652344 \n2.625 1.5 1 1 -0 0 -0.5 0.75 0.24902344 0.43652344 \n2.875 1.5 0.25 -0 -1 0 1.4375 -0.125 0.20605469 0.43652344 \n2.625 1.5 1 -0 -1 0 1.3125 -0.5 0.20019531 0.4345703 \n2.625 1.5 0.25 -0 -1 0 1.3125 -0.125 0.20605469 0.4345703 \n2.875 1.5 1 -0 -1 0 1.4375 -0.5 0.20019531 0.43652344 \n2.625 1.25 1 -0 -0 1 1.3125 0.625 0.4501953 0.18847656 \n2.625 1.5 1 -0 -0 1 1.3125 0.75 0.4501953 0.18652344 \n2.375 1.5 1 -0 -0 1 1.1875 0.75 0.4482422 0.18652344 \n2.375 1.25 1 -0 -0 1 1.1875 0.625 0.4482422 0.18847656 \n2.625 1.5 1 -1 -0 0 0.49999994 -0.75 0.43652344 0.07519531 \n2.625 1.75 0.25 -1 -0 0 0.124999925 -0.875 0.43847656 0.08105469 \n2.625 1.5 0.25 -1 -0 0 0.12499994 -0.75 0.43652344 0.08105469 \n2.625 1.75 1 -1 -0 0 0.49999994 -0.875 0.43847656 0.07519531 \n2.625 1.5 0.25 -0 -0 -1 -1.3125 -0.7499999 0.36816406 0.4501953 \n2.625 1.75 0.25 -0 -0 -1 -1.3125 -0.8749999 0.36816406 0.4482422 \n2.875 1.75 0.25 -0 -0 -1 -1.4375 -0.8749999 0.36621094 0.4482422 \n2.875 1.5 0.25 -0 -0 -1 -1.4375 -0.7499999 0.36621094 0.4501953 \n2.875 1.75 0.25 -0 1 0 -1.4375 0.12500012 0.22363281 0.43652344 \n2.625 1.75 0.25 -0 1 0 -1.3125 0.12500012 0.22363281 0.4345703 \n2.625 1.75 1 -0 1 0 -1.3125 0.5000001 0.21777344 0.4345703 \n2.875 1.75 1 -0 1 0 -1.4375 0.5000001 0.21777344 0.43652344 \n2.875 1.5 1 1 -0 0 -0.5 0.75 0.32910156 0.43652344 \n2.875 1.5 0.25 1 -0 0 -0.125 0.75 0.33496094 0.43652344 \n2.875 1.75 0.25 1 -0 0 -0.125 0.875 0.33496094 0.4345703 \n2.875 1.75 1 1 -0 0 -0.5 0.875 0.32910156 0.4345703 \n3.1249847 1.75 0.25 -0 -1 0 1.5624924 -0.125 0.40917957 0.15527344 \n2.875 1.75 1 -0 -1 0 1.4375 -0.5 0.40722656 0.14941406 \n2.875 1.75 0.25 -0 -1 0 1.4375 -0.125 0.40722656 0.15527344 \n3.875 1.75 1 -0 -1 0 1.9375 -0.5 0.41503906 0.14941406 \n2.875 1.5 1 -0 -0 1 1.4375 0.75 0.4501953 0.43847656 \n2.875 1.75 1 -0 -0 1 1.4375 0.875 0.4501953 0.43652344 \n2.625 1.75 1 -0 -0 1 1.3125 0.875 0.4482422 0.43652344 \n2.625 1.5 1 -0 -0 1 1.3125 0.75 0.4482422 0.43847656 \n2.875 1.75 1 -1 -0 0 0.49999994 -0.875 0.43652344 0.3935547 \n2.875 2 0.25 -1 -0 0 0.12499991 -1 0.43847656 0.39941406 \n2.875 1.75 0.25 -1 -0 0 0.124999925 -0.875 0.43652344 0.39941406 \n2.875 2 1 -1 -0 0 0.49999994 -1 0.43847656 0.3935547 \n2.875 1.75 0.25 -0 -0 -1 -1.4375 -0.8749999 0.4501953 0.4501953 \n2.875 2 0.25 -0 -0 -1 -1.4375 -0.9999999 0.4501953 0.4482422 \n3.1249847 2 0.25 -0 -0 -1 -1.5624924 -0.9999999 0.4482422 0.4482422 \n3.1249847 1.75 0.25 -0 -0 -1 -1.5624924 -0.8749999 0.4482422 0.4501953 \n3.1249847 2 0.25 -0 1 0 -1.5624924 0.12500015 0.41503918 0.3095703 \n2.875 2 0.25 -0 1 0 -1.4375 0.12500012 0.4169922 0.3095703 \n2.875 2 1 -0 1 0 -1.4375 0.5000001 0.4169922 0.30371094 \n3.875 2 1 -0 1 0 -1.9375 0.5000001 0.4091797 0.30371094 \n3.875 1.75 1 -0 -0 1 1.9375 0.875 0.20214844 0.42089844 \n3.875 2 1 -0 -0 1 1.9375 1 0.20019531 0.42089844 \n2.875 2 1 -0 -0 1 1.4375 1 0.20019531 0.41308594 \n2.875 1.75 1 -0 -0 1 1.4375 0.875 0.20214844 0.41308594 \n-2.5 0.25 3.875 -0 1 0 1.2500002 1.9375 0.35839844 0.07910156 \n3 0.25 3.875 -0 1 0 -1.4999998 1.9375002 0.35839844 0.12207031 \n3 0.25 3.125 -0 1 0 -1.4999998 1.5625002 0.3642578 0.12207031 \n-2.5 0.25 3.125 -0 1 0 1.2500002 1.5625 0.3642578 0.07910156 \n3 0.25 3.875 -0 -0 -1 0.75 0.0625 0.08886719 0.3564453 \n-2.5 0.25 3.875 -0 -0 -1 -0.625 0.0625 0.045898438 0.3564453 \n-2.5 0.5 3.875 -0 -0 -1 -0.625 0.125 0.045898438 0.3544922 \n3 0.5 3.875 -0 -0 -1 0.75 0.125 0.08886719 0.3544922 \n-2.5 0.25 3.875 1 -0 0 1.9375 -0.12500018 0.08691406 0.2529297 \n-2.5 0.25 3.125 1 -0 0 1.5625 -0.12500015 0.08691406 0.25878906 \n-2.5 0.5 3.125 1 -0 0 1.5625 -0.25000012 0.08496094 0.25878906 \n-2.5 0.5 3.875 1 -0 0 1.9375 -0.25000018 0.08496094 0.2529297 \n-3 0.25 3.125 -0 -0 -1 -1.5 0.125 0.44628906 0.17089844 \n-2.5 0.5 3.125 -0 -0 -1 -1.25 0.25 0.44433594 0.16699219 \n-2.5 0.25 3.125 -0 -0 -1 -1.25 0.125 0.44628906 0.16699219 \n-3 0.5 3.125 -0 -0 -1 -1.5 0.25 0.44433594 0.17089844 \n-2 0.5 3.125 -0 -1 0 -1 -1.5625 0.2548828 0.11035156 \n-2.5 0.5 3.875 -0 -1 0 -1.25 -1.9375 0.25097656 0.10449219 \n-2.5 0.5 3.125 -0 -1 0 -1.25 -1.5625 0.25097656 0.11035156 \n-2 0.5 3.875 -0 -1 0 -1 -1.9375 0.2548828 0.10449219 \n-2.5 0.5 3.875 -1 -0 0 -1.9375 0.25 0.14941406 0.4345703 \n-2.5 0.75 3.125 -1 -0 0 -1.5625 0.375 0.15527344 0.43652344 \n-2.5 0.5 3.125 -1 -0 0 -1.5625 0.25 0.15527344 0.4345703 \n-2.5 0.75 3.875 -1 -0 0 -1.9375 0.375 0.14941406 0.43652344 \n-2.5 0.5 3.125 -0 -0 -1 -1.25 0.25 0.4091797 0.44433594 \n-2 0.75 3.125 -0 -0 -1 -1 0.375 0.40527344 0.4423828 \n-2 0.5 3.125 -0 -0 -1 -1 0.25 0.40527344 0.44433594 \n-2.5 0.75 3.125 -0 -0 -1 -1.25 0.375 0.4091797 0.4423828 \n-2 0.5 3.875 1 -0 0 1.9375 -0.25000018 0.23144531 0.3779297 \n-2 0.5 3.125 1 -0 0 1.5625 -0.25000012 0.23730469 0.3779297 \n-2 0.75 3.125 1 -0 0 1.5625 -0.37500012 0.23730469 0.37597656 \n-2 0.75 3.875 1 -0 0 1.9375 -0.37500018 0.23144531 0.37597656 \n-1.5 0.75 3.125 -0 -1 0 -0.75 -1.5625 0.4189453 0.3642578 \n-2 0.75 3.875 -0 -1 0 -1 -1.9375 0.41308594 0.36035156 \n-2 0.75 3.125 -0 -1 0 -1 -1.5625 0.4189453 0.36035156 \n-1.5 0.75 3.875 -0 -1 0 -0.75 -1.9375 0.41308594 0.3642578 \n3 0.5 3.875 -0 -0 -1 0.75 0.125 0.35058594 0.3544922 \n-2 0.5 3.875 -0 -0 -1 -0.5 0.125 0.31152344 0.3544922 \n-2 0.75 3.875 -0 -0 -1 -0.5 0.1875 0.31152344 0.35253906 \n3 0.75 3.875 -0 -0 -1 0.75 0.1875 0.35058594 0.35253906 \n-2 0.75 3.875 -1 -0 0 -1.9375 0.375 0.43652344 0.34472656 \n-2 1 3.125 -1 -0 0 -1.5625 0.5 0.43847656 0.35058594 \n-2 0.75 3.125 -1 -0 0 -1.5625 0.375 0.43652344 0.35058594 \n-2 1 3.875 -1 -0 0 -1.9375 0.5 0.43847656 0.34472656 \n-2 0.75 3.125 -0 -0 -1 -1 0.375 0.44433594 0.0107421875 \n-1.5 1 3.125 -0 -0 -1 -0.75 0.5 0.4423828 0.0068359375 \n-1.5 0.75 3.125 -0 -0 -1 -0.75 0.375 0.44433594 0.0068359375 \n-2 1 3.125 -0 -0 -1 -1 0.5 0.4423828 0.0107421875 \n-1.5 0.75 3.875 1 -0 0 1.9375 -0.37500018 0.13183594 0.4345703 \n-1.5 0.75 3.125 1 -0 0 1.5625 -0.37500012 0.13769531 0.4345703 \n-1.5 1 3.125 1 -0 0 1.5625 -0.5000001 0.13769531 0.4326172 \n-1.5 1 3.875 1 -0 0 1.9375 -0.5000001 0.13183594 0.4326172 \n-1 1 3.125 -0 -1 0 -0.5 -1.5625 0.4248047 0.047851562 \n-1.5 1 3.875 -0 -1 0 -0.75 -1.9375 0.42089844 0.041992188 \n-1.5 1 3.125 -0 -1 0 -0.75 -1.5625 0.42089844 0.047851562 \n-1 1 3.875 -0 -1 0 -0.5 -1.9375 0.4248047 0.041992188 \n3 0.75 3.875 -0 -0 -1 0.75 0.1875 0.37597656 0.32714844 \n-1.5 0.75 3.875 -0 -0 -1 -0.375 0.1875 0.37597656 0.2919922 \n-1.5 1 3.875 -0 -0 -1 -0.375 0.25 0.37402344 0.2919922 \n3 1 3.875 -0 -0 -1 0.75 0.25 0.37402344 0.32714844 \n-1.5 1 3.875 -1 -0 0 -1.9375 0.5 0.43652344 0.14941406 \n-1.5 1.25 3.125 -1 -0 0 -1.5625 0.625 0.43847656 0.15527344 \n-1.5 1 3.125 -1 -0 0 -1.5625 0.5 0.43652344 0.15527344 \n-1.5 1.25 3.875 -1 -0 0 -1.9375 0.625 0.43847656 0.14941406 \n-1.5 1 3.125 -0 -0 -1 -0.75 0.5 0.4423828 0.10839844 \n-1 1.25 3.125 -0 -0 -1 -0.5 0.625 0.43847656 0.10644531 \n-1 1 3.125 -0 -0 -1 -0.5 0.5 0.43847656 0.10839844 \n-1.5 1.25 3.125 -0 -0 -1 -0.75 0.625 0.4423828 0.10644531 \n-1 1 3.875 1 -0 0 1.9375 -0.5000001 0.055664062 0.4326172 \n-1 1 3.125 1 -0 0 1.5625 -0.5000001 0.061523438 0.4326172 \n-1 1.25 3.125 1 -0 0 1.5625 -0.6250001 0.061523438 0.43066406 \n-1 1.25 3.875 1 -0 0 1.9375 -0.6250001 0.055664062 0.43066406 \n-0.5 1.25 3.125 -0 -1 0 -0.25 -1.5625 0.37597656 0.20800781 \n-1 1.25 3.875 -0 -1 0 -0.5 -1.9375 0.3720703 0.20214844 \n-1 1.25 3.125 -0 -1 0 -0.5 -1.5625 0.3720703 0.20800781 \n-0.5 1.25 3.875 -0 -1 0 -0.25 -1.9375 0.37597656 0.20214844 \n3 1 3.875 -0 -0 -1 0.75 0.25 0.3779297 0.24902344 \n-1 1 3.875 -0 -0 -1 -0.25 0.25 0.3779297 0.21777344 \n-1 1.25 3.875 -0 -0 -1 -0.25 0.3125 0.37597656 0.21777344 \n3 1.25 3.875 -0 -0 -1 0.75 0.3125 0.37597656 0.24902344 \n-1 1.25 3.875 -1 -0 0 -1.9375 0.625 0.4345703 0.09082031 \n-1 1.5 3.125 -1 -0 0 -1.5625 0.75 0.43652344 0.09667969 \n-1 1.25 3.125 -1 -0 0 -1.5625 0.625 0.4345703 0.09667969 \n-1 1.5 3.875 -1 -0 0 -1.9375 0.75 0.43652344 0.09082031 \n-1 1.25 3.125 -0 -0 -1 -0.5 0.625 0.44433594 0.028320312 \n-0.5 1.5 3.125 -0 -0 -1 -0.25 0.75 0.4423828 0.024414062 \n-0.5 1.25 3.125 -0 -0 -1 -0.25 0.625 0.44433594 0.024414062 \n-1 1.5 3.125 -0 -0 -1 -0.5 0.75 0.4423828 0.028320312 \n-0.5 1.25 3.875 1 -0 0 1.9375 -0.6250001 0.3095703 0.0009765625 \n-0.5 1.25 3.125 1 -0 0 1.5625 -0.6250001 0.3095703 0.0068359375 \n-0.5 1.5 3.125 1 -0 0 1.5625 -0.7500001 0.3076172 0.0068359375 \n-0.5 1.5 3.875 1 -0 0 1.9375 -0.7500001 0.3076172 0.0009765625 \n0 1.5 3.125 -0 -1 0 0 -1.5625 0.29785156 0.4189453 \n-0.5 1.5 3.875 -0 -1 0 -0.25 -1.9375 0.2939453 0.41308594 \n-0.5 1.5 3.125 -0 -1 0 -0.25 -1.5625 0.2939453 0.4189453 \n0 1.5 3.875 -0 -1 0 0 -1.9375 0.29785156 0.41308594 \n3.875 1.25 3.875 -0 -0 -1 0.96875 0.3125 0.18847656 0.3701172 \n-0.5 1.25 3.875 -0 -0 -1 -0.125 0.3125 0.15332031 0.3701172 \n-0.5 1.5 3.875 -0 -0 -1 -0.125 0.375 0.15332031 0.36816406 \n3.875 1.5 3.875 -0 -0 -1 0.96875 0.375 0.18847656 0.36816406 \n-0.5 1.5 3.875 -1 -0 0 -1.9375 0.75 0.09667969 0.4326172 \n-0.5 1.75 3.125 -1 -0 0 -1.5625 0.875 0.10253906 0.4345703 \n-0.5 1.5 3.125 -1 -0 0 -1.5625 0.75 0.10253906 0.4326172 \n-0.5 1.75 3.875 -1 -0 0 -1.9375 0.875 0.09667969 0.4345703 \n-0.5 1.5 3.125 -0 -0 -1 -0.25 0.75 0.3876953 0.16699219 \n0 1.75 3.125 -0 -0 -1 0 0.875 0.38378906 0.16503906 \n0 1.5 3.125 -0 -0 -1 0 0.75 0.38378906 0.16699219 \n-0.5 1.75 3.125 -0 -0 -1 -0.25 0.875 0.3876953 0.16503906 \n0 1.5 3.875 1 -0 0 1.9375 -0.7500001 0.4033203 0.4326172 \n0 1.5 3.125 1 -0 0 1.5625 -0.7500001 0.4091797 0.4326172 \n0 1.75 3.125 1 -0 0 1.5625 -0.8750001 0.4091797 0.43066406 \n0 1.75 3.875 1 -0 0 1.9375 -0.8750001 0.4033203 0.43066406 \n0.5 1.75 3.125 -0 -1 0 0.25 -1.5625 0.42089844 0.17480469 \n0 1.75 3.875 -0 -1 0 0 -1.9375 0.41503906 0.17089844 \n0 1.75 3.125 -0 -1 0 0 -1.5625 0.42089844 0.17089844 \n0.5 1.75 3.875 -0 -1 0 0.25 -1.9375 0.41503906 0.17480469 \n3.875 1.5 3.875 -0 -0 -1 0.96875 0.375 0.22949219 0.38964844 \n0 1.5 3.875 -0 -0 -1 0 0.375 0.19824219 0.38964844 \n0 1.75 3.875 -0 -0 -1 0 0.4375 0.19824219 0.3876953 \n3.875 1.75 3.875 -0 -0 -1 0.96875 0.4375 0.22949219 0.3876953 \n0 1.75 3.875 -1 -0 0 -1.9375 0.875 0.42871094 0.3330078 \n0 2 3.125 -1 -0 0 -1.5625 1 0.4345703 0.33496094 \n0 1.75 3.125 -1 -0 0 -1.5625 0.875 0.4345703 0.3330078 \n0 2 3.875 -1 -0 0 -1.9375 1 0.42871094 0.33496094 \n0 1.75 3.125 -0 -0 -1 0 0.875 0.4423828 0.06347656 \n0.5 2 3.125 -0 -0 -1 0.25 1 0.4404297 0.059570312 \n0.5 1.75 3.125 -0 -0 -1 0.25 0.875 0.4423828 0.059570312 \n0 2 3.125 -0 -0 -1 0 1 0.4404297 0.06347656 \n0.5 1.75 3.875 1 -0 0 1.9375 -0.8750001 0.42871094 0.21386719 \n0.5 1.75 3.125 1 -0 0 1.5625 -0.8750001 0.4345703 0.21386719 \n0.5 2 3.125 1 -0 0 1.5625 -1.0000002 0.4345703 0.21191406 \n0.5 2 3.875 1 -0 0 1.9375 -1.0000002 0.42871094 0.21191406 \n1 2 3.125 -0 -1 0 0.5 -1.5625 0.2783203 0.38378906 \n0.5 2 3.875 -0 -1 0 0.25 -1.9375 0.27246094 0.3798828 \n0.5 2 3.125 -0 -1 0 0.25 -1.5625 0.2783203 0.3798828 \n1 2 3.875 -0 -1 0 0.5 -1.9375 0.27246094 0.38378906 \n3.875 1.75 3.875 -0 -0 -1 0.96875 0.4375 0.18261719 0.22363281 \n0.5 1.75 3.875 -0 -0 -1 0.125 0.4375 0.18261719 0.19628906 \n0.5 2 3.875 -0 -0 -1 0.125 0.5 0.18066406 0.19628906 \n3.875 2 3.875 -0 -0 -1 0.96875 0.5 0.18066406 0.22363281 \n0.5 2 3.875 -1 -0 0 -1.9375 1 0.4248047 0.059570312 \n0.5 2.25 3.125 -1 -0 0 -1.5625 1.125 0.43066406 0.061523438 \n0.5 2 3.125 -1 -0 0 -1.5625 1 0.43066406 0.059570312 \n0.5 2.25 3.875 -1 -0 0 -1.9375 1.125 0.4248047 0.061523438 \n0.5 2 3.125 -0 -0 -1 0.25 1 0.42285156 0.44433594 \n1 2.25 3.125 -0 -0 -1 0.5 1.125 0.42089844 0.4404297 \n1 2 3.125 -0 -0 -1 0.5 1 0.42285156 0.4404297 \n0.5 2.25 3.125 -0 -0 -1 0.25 1.125 0.42089844 0.44433594 \n1 2 3.875 1 -0 0 1.9375 -1.0000002 0.17089844 0.4267578 \n1 2 3.125 1 -0 0 1.5625 -1.0000002 0.17089844 0.4326172 \n1 2.25 3.125 1 -0 0 1.5625 -1.1250002 0.16894531 0.4326172 \n1 2.25 3.875 1 -0 0 1.9375 -1.1250002 0.16894531 0.4267578 \n1 2.25 3.125 -0 1 0 -0.49999988 1.5625 0.23339844 0.42089844 \n0.5 2.25 3.875 -0 1 0 -0.24999982 1.9375 0.22753906 0.4169922 \n1 2.25 3.875 -0 1 0 -0.49999982 1.9375 0.22753906 0.42089844 \n0.5 2.25 3.125 -0 1 0 -0.24999985 1.5625 0.23339844 0.4169922 \n3.875 2 3.875 -0 -0 -1 0.96875 0.5 0.33496094 0.3095703 \n1 2 3.875 -0 -0 -1 0.25 0.5 0.31152344 0.3095703 \n1 2.25 3.875 -0 -0 -1 0.25 0.5625 0.31152344 0.3076172 \n3.875 2.25 3.875 -0 -0 -1 0.96875 0.5625 0.33496094 0.3076172 \n0.5 2 3.875 -0 -0 -1 0.125 0.5 0.29785156 0.44433594 \n0 2.25 3.875 -0 -0 -1 0 0.5625 0.2939453 0.4423828 \n0.5 2.25 3.875 -0 -0 -1 0.125 0.5625 0.29785156 0.4423828 \n0 2 3.875 -0 -0 -1 0 0.5 0.2939453 0.44433594 \n0.5 2 3.125 -0 1 0 -0.24999985 1.5625 0.4169922 0.12011719 \n0 2 3.875 -0 1 0 1.6938164e-07 1.9375 0.41308594 0.11425781 \n0.5 2 3.875 -0 1 0 -0.24999982 1.9375 0.4169922 0.11425781 \n0 2 3.125 -0 1 0 1.3659809e-07 1.5625 0.41308594 0.12011719 \n0 1.75 3.125 -0 1 0 1.3659809e-07 1.5625 0.4169922 0.4189453 \n-0.5 1.75 3.875 -0 1 0 0.25000018 1.9375 0.4111328 0.41503906 \n0 1.75 3.875 -0 1 0 1.6938164e-07 1.9375 0.4111328 0.4189453 \n-0.5 1.75 3.125 -0 1 0 0.25000012 1.5625 0.4169922 0.41503906 \n0 1.75 3.875 -0 -0 -1 0 0.4375 0.4326172 0.3017578 \n-0.5 1.75 3.875 -0 -0 -1 -0.125 0.4375 0.4326172 0.29785156 \n-0.5 2.25 3.875 -0 -0 -1 -0.125 0.5625 0.42871094 0.29785156 \n0 2.25 3.875 -0 -0 -1 0 0.5625 0.42871094 0.3017578 \n-0.5 1.5 3.125 -0 1 0 0.25000012 1.5625 0.09863281 0.4189453 \n-1 1.5 3.875 -0 1 0 0.5000001 1.9375 0.09277344 0.41503906 \n-0.5 1.5 3.875 -0 1 0 0.25000018 1.9375 0.09277344 0.4189453 \n-1 1.5 3.125 -0 1 0 0.5000001 1.5625 0.09863281 0.41503906 \n-0.5 1.5 3.875 -0 -0 -1 -0.125 0.375 0.17480469 0.4169922 \n-1 1.5 3.875 -0 -0 -1 -0.25 0.375 0.17480469 0.41308594 \n-1 2.25 3.875 -0 -0 -1 -0.25 0.5625 0.16894531 0.41308594 \n-0.5 2.25 3.875 -0 -0 -1 -0.125 0.5625 0.16894531 0.4169922 \n-1 1.25 3.125 -0 1 0 0.5000001 1.5625 0.4169922 0.032226562 \n-1.5 1.25 3.875 -0 1 0 0.7500001 1.9375 0.41308594 0.026367188 \n-1 1.25 3.875 -0 1 0 0.5000001 1.9375 0.4169922 0.026367188 \n-1.5 1.25 3.125 -0 1 0 0.7500001 1.5625 0.41308594 0.032226562 \n-1 1.25 3.875 -0 -0 -1 -0.25 0.3125 0.049804688 0.41308594 \n-1.5 1.25 3.875 -0 -0 -1 -0.375 0.3125 0.049804688 0.4091797 \n-1.5 2.25 3.875 -0 -0 -1 -0.375 0.5625 0.041992188 0.4091797 \n-1 2.25 3.875 -0 -0 -1 -0.25 0.5625 0.041992188 0.41308594 \n-1.5 1 3.125 -0 1 0 0.7500001 1.5625 0.0068359375 0.41503906 \n-2 1 3.875 -0 1 0 1.0000002 1.9375 0.0009765625 0.4111328 \n-1.5 1 3.875 -0 1 0 0.7500001 1.9375 0.0009765625 0.41503906 \n-2 1 3.125 -0 1 0 1.0000002 1.5625 0.0068359375 0.4111328 \n-1.5 1 3.875 -0 -0 -1 -0.375 0.25 0.31152344 0.4111328 \n-2 1 3.875 -0 -0 -1 -0.5 0.25 0.3076172 0.4111328 \n-2 2.25 3.875 -0 -0 -1 -0.5 0.5625 0.3076172 0.4013672 \n-1.5 2.25 3.875 -0 -0 -1 -0.375 0.5625 0.31152344 0.4013672 \n-2 0.75 3.125 -0 1 0 1.0000002 1.5625 0.26660156 0.4169922 \n-2.5 0.75 3.875 -0 1 0 1.2500002 1.9375 0.2626953 0.4111328 \n-2 0.75 3.875 -0 1 0 1.0000002 1.9375 0.26660156 0.4111328 \n-2.5 0.75 3.125 -0 1 0 1.2500002 1.5625 0.2626953 0.4169922 \n-2 0.75 3.875 -0 -0 -1 -0.5 0.1875 0.061523438 0.34472656 \n-2.5 0.75 3.875 -0 -0 -1 -0.625 0.1875 0.061523438 0.3408203 \n-2.5 2.25 3.875 -0 -0 -1 -0.625 0.5625 0.049804688 0.3408203 \n-2 2.25 3.875 -0 -0 -1 -0.5 0.5625 0.049804688 0.34472656 \n-2.5 0.5 3.125 -0 1 0 1.2500002 1.5625 0.19042969 0.41503906 \n-3 0.5 3.875 -0 1 0 1.5000002 1.9374998 0.18457031 0.4111328 \n-2.5 0.5 3.875 -0 1 0 1.2500002 1.9375 0.18457031 0.41503906 \n-3 0.5 3.125 -0 1 0 1.5000002 1.5624998 0.19042969 0.4111328 \n-2.5 0.5 3.875 -0 -0 -1 -0.625 0.125 0.11035156 0.40527344 \n-3 0.5 3.875 -0 -0 -1 -0.75 0.125 0.11035156 0.4013672 \n-3 2.25 3.875 -0 -0 -1 -0.75 0.5625 0.09667969 0.4013672 \n-2.5 2.25 3.875 -0 -0 -1 -0.625 0.5625 0.09667969 0.40527344 \n-3 0.25 3.875 -1 -0 0 -1.9375 0.125 0.43066406 0.020507812 \n-3 0.5 3.875 -1 -0 0 -1.9375 0.25 0.4326172 0.020507812 \n-3 0.5 3.125 -1 -0 0 -1.5625 0.25 0.4326172 0.026367188 \n-3 0.25 3.125 -1 -0 0 -1.5625 0.125 0.43066406 0.026367188 \n-4 0.25 4 -1 -0 0 -1 0.0625 0.36035156 0.3544922 \n-4 2.5 1.5 -1 -0 0 -0.375 0.625 0.3779297 0.37402344 \n-4 0.25 1.5 -1 -0 0 -0.375 0.0625 0.36035156 0.37402344 \n-4 2.5 4 -1 -0 0 -1 0.625 0.3779297 0.3544922 \n-3.875 0.25 4 -0 -0 1 0.96875 -0.06250009 0.17285156 0.24316406 \n-4 2.5 4 -0 -0 1 1 -0.6250001 0.15527344 0.24121094 \n-4 0.25 4 -0 -0 1 1 -0.06250009 0.17285156 0.24121094 \n-3.875 2.5 4 -0 -0 1 0.96875 -0.6250001 0.15527344 0.24316406 \n-4 2.5 4 -0 1 0 1 0.9999999 0.36035156 0.18457031 \n-3.875 2.5 4 -0 1 0 0.9687501 0.9999999 0.3623047 0.18457031 \n-3.875 2.5 -2 -0 1 0 0.96875 -0.5000001 0.3623047 0.23144531 \n-4 2.5 -2 -0 1 0 1 -0.5000001 0.36035156 0.23144531 \n-3.875 2.5 -2 -0 -0 1 0.96875 -0.6250001 0.12402344 0.4091797 \n-4 3.7500005 -2 -0 -0 1 0.9999999 -0.93750024 0.12207031 0.39746094 \n-4 2.5 -2 -0 -0 1 1 -0.6250001 0.12207031 0.4091797 \n-3.875 3.7500005 -2 -0 -0 1 0.9687499 -0.93750024 0.12402344 0.39746094 \n-4 2.5 -2 -1 -0 0 0.5 0.625 0.39941406 0.10449219 \n-4 3.7500005 -2 -1 -0 0 0.5 0.9375001 0.3876953 0.10449219 \n-4 2.5 -3.6666675 -1 -0 0 0.91666687 0.625 0.39941406 0.09082031 \n-3.875 2.5 -2 1 -0 0 -0.5 -0.625 0.39746094 0.20214844 \n-3.875 2.5 -3.6666675 1 -0 0 -0.91666687 -0.6249999 0.39746094 0.21582031 \n-3.875 3.7500005 -2 1 -0 0 -0.5000001 -0.9375001 0.3857422 0.20214844 \n-4 0.25 1.5 -1 -0 0 -0.375 0.0625 0.09667969 0.24316406 \n-4 1.375 -4 -1 -0 0 1 0.34375 0.13964844 0.25195312 \n-4 0.25 0.50000024 -1 -0 0 -0.12500006 0.0625 0.10449219 0.24316406 \n-4 2.25 -4 -1 -0 0 1 0.5625 0.13964844 0.25878906 \n-4 2.25 -4.125 -1 -0 0 1.03125 0.5625 0.140625 0.25878906 \n-4 1.4062501 -4.125 -1 -0 0 1.03125 0.35156253 0.140625 0.25219727 \n-4 2.25 -7.375 -1 -0 0 1.84375 0.5625 0.16601562 0.25878906 \n-4 2.21875 -7.375 -1 -0 0 1.84375 0.5546875 0.16601562 0.25854492 \n-4 2.25 -7.5 -1 -0 0 1.875 0.5625 0.16699219 0.25878906 \n-4 2.25 1.5 -1 -0 0 -0.375 0.5625 0.09667969 0.25878906 \n-3.875 2.5 -4 -0 1 0 0.9687499 -1 0.043945312 0.43847656 \n-4 2.5 -4 -0 1 0 0.9999999 -1 0.041992188 0.43847656 \n-4 2.5 -3.6666675 -0 1 0 0.9999999 -0.916667 0.041992188 0.4345703 \n-3.875 2.5 -3.6666675 -0 1 0 0.9687499 -0.916667 0.043945312 0.4345703 \n-3.875 2.25 4 1 -0 0 1 -0.5625001 0.19042969 0.3330078 \n-3.875 2.5 -4 1 -0 0 -1 -0.6249999 0.2529297 0.33496094 \n-3.875 2.5 4 1 -0 0 1 -0.6250001 0.19042969 0.33496094 \n-3.875 2.25 -4 1 -0 0 -1 -0.5624999 0.2529297 0.3330078 \n-3.875 1.25 1.1920929e-07 1 -0 0 2.4827038e-09 -0.3125 0.24707031 0.3623047 \n-3.875 2.25 -4 1 -0 0 -1 -0.5624999 0.2783203 0.3701172 \n-3.875 2.25 -1.75 1 -0 0 -0.43750006 -0.5625 0.2607422 0.3701172 \n-3.875 1.25 -4 1 -0 0 -1 -0.31249994 0.2783203 0.3623047 \n-3.25 1.25 -4 -0 -0 1 0.8125 -0.31250006 0.32910156 0.23925781 \n-3.875 2.25 -4 -0 -0 1 0.96875 -0.5625001 0.32128906 0.23339844 \n-3.875 1.25 -4 -0 -0 1 0.96875 -0.31250006 0.32910156 0.23339844 \n-3.25 2.25 -4 -0 -0 1 0.8125 -0.5625001 0.32128906 0.23925781 \n3.875 1.25 3.875 -1 -0 0 -0.96875 0.3125 0.36035156 0.0029296875 \n3.875 2.25 0.99999905 -1 -0 0 -0.24999976 0.5625 0.38378906 0.0107421875 \n3.875 1.25 0.99999905 -1 -0 0 -0.24999976 0.3125 0.38378906 0.0029296875 \n3.875 2.25 3.875 -1 -0 0 -0.96875 0.5625 0.36035156 0.0107421875 \n3.875 1.25 0.99999905 -1 -0 0 -0.24999976 0.3125 0.2763672 0.4091797 \n3.875 1.75 -0 -1 -0 0 0 0.4375 0.2841797 0.41308594 \n3.875 1.25 -0 -1 -0 0 0 0.3125 0.2841797 0.4091797 \n3.875 1.75 0.99999905 -1 -0 0 -0.24999976 0.4375 0.2763672 0.41308594 \n3.875 2 -0 -1 -0 0 0 0.5 0.15527344 0.41308594 \n3.875 2 0.99999905 -1 -0 0 -0.24999976 0.5 0.14746094 0.41308594 \n3.875 2.25 0.99999905 -1 -0 0 -0.24999976 0.5625 0.14746094 0.4111328 \n3.875 2.25 -0 -1 -0 0 0 0.5625 0.15527344 0.4111328 \n3.875 2 -0 -0 0 1 1.9375 1 0.4326172 0.24902344 \n3.875 2.25 -0 -0 0 1 1.9375 1.125 0.43066406 0.24902344 \n3.125 2.25 -0 -0 0 1 1.5625 1.125 0.43066406 0.24316406 \n3.125 2 -0 -0 0 1 1.5625 1 0.4326172 0.24316406 \n3.875 2.25 -0.25 -0 1 0 -1.9375 -0.124999836 0.4326172 0.17675781 \n3.125 2.25 -0 -0 1 0 -1.5625 1.3659809e-07 0.43066406 0.17089844 \n3.875 2.25 -0 -0 1 0 -1.9375 1.6938164e-07 0.43066406 0.17675781 \n3.125 2.25 -0.25 -0 1 0 -1.5625 -0.124999866 0.4326172 0.17089844 \n3.125 2 -0 -1 -0 0 -8.742278e-08 -1 0.043945312 0.4482422 \n3.125 2.25 -0 -1 -0 0 -9.8350625e-08 -1.125 0.043945312 0.4501953 \n3.125 2.25 -0.25 -1 -0 0 -0.12500009 -1.125 0.045898438 0.4501953 \n3.125 2 -0.25 -1 -0 0 -0.12500009 -1 0.045898438 0.4482422 \n3.875 2 -0.25 -0 -1 -0 1.9375 0.125 0.12011719 0.4326172 \n3.875 2 -0 -0 -1 -0 1.9375 0 0.12011719 0.43066406 \n3.125 2 -0 -0 -1 -0 1.5625 0 0.11425781 0.43066406 \n3.125 2 -0.25 -0 -1 -0 1.5625 0.125 0.11425781 0.4326172 \n3.125 1.75 -0 -0 -0 -1 -1.5625 -0.8749999 0.4326172 0.4111328 \n3.125 2 -0 -0 -0 -1 -1.5625 -0.9999999 0.4326172 0.4091797 \n3.875 2 -0 -0 -0 -1 -1.9375 -0.9999999 0.4267578 0.4091797 \n3.875 1.75 -0 -0 -0 -1 -1.9375 -0.8749999 0.4267578 0.4111328 \n3.125 2 -0.25 -0 -0 -1 -1.5625 -0.9999999 0.4326172 0.12011719 \n3.875 2.25 -0.25 -0 -0 -1 -1.9375 -1.1249998 0.4267578 0.11816406 \n3.875 2 -0.25 -0 -0 -1 -1.9375 -0.9999999 0.4267578 0.12011719 \n3.125 2.25 -0.25 -0 -0 -1 -1.5625 -1.1249998 0.4326172 0.11816406 \n3.875 2 -4 -1 -0 0 1 0.5 0.39746094 0.36621094 \n3.875 2 -0.25 -1 -0 0 0.0625 0.5 0.39746094 0.33691406 \n3.875 2.25 -0.25 -1 -0 0 0.0625 0.5625 0.3955078 0.33691406 \n3.875 2.25 -4 -1 -0 0 1 0.5625 0.3955078 0.36621094 \n3.875 2.25 -0.5 -0 -1 -0 1.9375 0.25 0.29003906 0.4326172 \n3.875 2.25 -0.25 -0 -1 -0 1.9375 0.125 0.29003906 0.43066406 \n3.125 2.25 -0.25 -0 -1 -0 1.5625 0.125 0.2841797 0.43066406 \n3.125 2.25 -0.5 -0 -1 -0 1.5625 0.25 0.2841797 0.4326172 \n3.875 2.25 -0.25 1 -0 0 0.125 1.125 0.4482422 0.14941406 \n3.875 2.25 -0.5 1 -0 0 0.25 1.125 0.4501953 0.14941406 \n3.875 2.5 -0.5 1 -0 0 0.25 1.25 0.4501953 0.14746094 \n3.875 2.5 -0.25 1 -0 0 0.125 1.25 0.4482422 0.14746094 \n3.875 2.25 -0.25 -0 0 1 1.9375 1.125 0.43066406 0.3798828 \n3.125 2.5 -0.25 -0 0 1 1.5625 1.25 0.42871094 0.37402344 \n3.125 2.25 -0.25 -0 0 1 1.5625 1.125 0.43066406 0.37402344 \n3.875 2.5 -0.25 -0 0 1 1.9375 1.25 0.42871094 0.3798828 \n3.125 2.25 -0.25 -1 -0 0 -0.12500009 -1.125 0.0048828125 0.4482422 \n3.125 2.5 -0.5 -1 -0 0 -0.25000012 -1.25 0.0068359375 0.4501953 \n3.125 2.25 -0.5 -1 -0 0 -0.25000012 -1.125 0.0068359375 0.4482422 \n3.125 2.5 -0.25 -1 -0 0 -0.12500012 -1.25 0.0048828125 0.4501953 \n3.125 2.25 -0.5 -0 -0 -1 -1.5625 -1.1249998 0.4326172 0.0048828125 \n3.875 2.5 -0.5 -0 -0 -1 -1.9375 -1.2499998 0.4267578 0.0029296875 \n3.875 2.25 -0.5 -0 -0 -1 -1.9375 -1.1249998 0.4267578 0.0048828125 \n3.125 2.5 -0.5 -0 -0 -1 -1.5625 -1.2499998 0.4326172 0.0029296875 \n3.875 2.5 -0.75 -0 -1 -0 1.9375 0.375 0.27246094 0.42871094 \n3.875 2.5 -0.5 -0 -1 -0 1.9375 0.25 0.27246094 0.4267578 \n3.125 2.5 -0.5 -0 -1 -0 1.5625 0.25 0.26660156 0.4267578 \n3.125 2.5 -0.75 -0 -1 -0 1.5625 0.375 0.26660156 0.42871094 \n3.875 2.5 -0.5 1 -0 0 0.25 1.25 0.2998047 0.22949219 \n3.875 2.5 -0.75 1 -0 0 0.375 1.25 0.3017578 0.22949219 \n3.875 2.75 -0.75 1 -0 0 0.375 1.375 0.3017578 0.22753906 \n3.875 2.75 -0.5 1 -0 0 0.25 1.375 0.2998047 0.22753906 \n3.875 2.5 -0.5 -0 0 1 1.9375 1.25 0.07910156 0.4267578 \n3.125 2.75 -0.5 -0 0 1 1.5625 1.375 0.07324219 0.4248047 \n3.125 2.5 -0.5 -0 0 1 1.5625 1.25 0.07324219 0.4267578 \n3.875 2.75 -0.5 -0 0 1 1.9375 1.375 0.07910156 0.4248047 \n3.125 2.5 -0.5 -1 -0 0 -0.25000012 -1.25 0.4482422 0.3466797 \n3.125 2.75 -0.75 -1 -0 0 -0.37500012 -1.375 0.4501953 0.3486328 \n3.125 2.5 -0.75 -1 -0 0 -0.37500012 -1.25 0.4482422 0.3486328 \n3.125 2.75 -0.5 -1 -0 0 -0.25000012 -1.375 0.4501953 0.3466797 \n3.125 2.5 -0.75 -0 -0 -1 -1.5625 -1.2499998 0.3154297 0.4267578 \n3.875 2.75 -0.75 -0 -0 -1 -1.9375002 -1.3749998 0.3095703 0.4248047 \n3.875 2.5 -0.75 -0 -0 -1 -1.9375 -1.2499998 0.3095703 0.4267578 \n3.125 2.75 -0.75 -0 -0 -1 -1.5625002 -1.3749998 0.3154297 0.4248047 \n3.875 2.75 -1 -0 -1 -0 1.9375 0.5 0.42871094 0.2861328 \n3.875 2.75 -0.75 -0 -1 -0 1.9375 0.375 0.4267578 0.2861328 \n3.125 2.75 -0.75 -0 -1 -0 1.5625 0.375 0.4267578 0.28027344 \n3.125 2.75 -1 -0 -1 -0 1.5625 0.5 0.42871094 0.28027344 \n3.875 2.75 -0.75 1 -0 0 0.375 1.375 0.4482422 0.4091797 \n3.875 2.75 -1 1 -0 0 0.5 1.375 0.4482422 0.4111328 \n3.875 3 -1 1 -0 0 0.5 1.5 0.44628906 0.4111328 \n3.875 3 -0.75 1 -0 0 0.375 1.5 0.44628906 0.4091797 \n3.875 2.75 -0.75 -0 0 1 1.9375 1.375 0.4267578 0.15722656 \n3.125 3 -0.75 -0 0 1 1.5625 1.5 0.4248047 0.15136719 \n3.125 2.75 -0.75 -0 0 1 1.5625 1.375 0.4267578 0.15136719 \n3.875 3 -0.75 -0 0 1 1.9375 1.5 0.4248047 0.15722656 \n3.125 2.75 -0.75 -1 -0 0 -0.37500012 -1.375 0.4482422 0.39746094 \n3.125 3 -1 -1 -0 0 -0.5000001 -1.5 0.4501953 0.39941406 \n3.125 2.75 -1 -1 -0 0 -0.5000001 -1.375 0.4501953 0.39746094 \n3.125 3 -0.75 -1 -0 0 -0.37500012 -1.5 0.4482422 0.39941406 \n3.125 2.75 -1 -0 -0 -1 -1.5625002 -1.3749998 0.42871094 0.26660156 \n3.875 3 -1 -0 -0 -1 -1.9375002 -1.4999998 0.4267578 0.2607422 \n3.875 2.75 -1 -0 -0 -1 -1.9375002 -1.3749998 0.42871094 0.2607422 \n3.125 3 -1 -0 -0 -1 -1.5625002 -1.4999998 0.4267578 0.26660156 \n3.875 3 -1.25 -0 -1 -0 1.9375 0.625 0.42871094 0.32128906 \n3.875 3 -1 -0 -1 -0 1.9375 0.5 0.4267578 0.32128906 \n3.125 3 -1 -0 -1 -0 1.5625 0.5 0.4267578 0.3154297 \n3.125 3 -1.25 -0 -1 -0 1.5625 0.625 0.42871094 0.3154297 \n3.875 3 -1 1 -0 0 0.5 1.5 0.08496094 0.4482422 \n3.875 3 -1.25 1 -0 0 0.625 1.5 0.08496094 0.4501953 \n3.875 3.25 -1.25 1 -0 0 0.625 1.625 0.08300781 0.4501953 \n3.875 3.25 -1 1 -0 0 0.5 1.625 0.08300781 0.4482422 \n3.875 3 -1 -0 0 1 1.9375 1.5 0.42871094 0.22949219 \n3.125 3.25 -1 -0 0 1 1.5625 1.625 0.4267578 0.22363281 \n3.125 3 -1 -0 0 1 1.5625 1.5 0.42871094 0.22363281 \n3.875 3.25 -1 -0 0 1 1.9375 1.625 0.4267578 0.22949219 \n3.125 3 -1 -1 -0 0 -0.5000001 -1.5 0.3095703 0.4482422 \n3.125 3.25 -1.25 -1 -0 0 -0.6250001 -1.625 0.31152344 0.4501953 \n3.125 3 -1.25 -1 -0 0 -0.6250001 -1.5 0.31152344 0.4482422 \n3.125 3.25 -1 -1 -0 0 -0.5000001 -1.625 0.3095703 0.4501953 \n3.125 3 -1.25 -0 -0 -1 -1.5625002 -1.4999998 0.42871094 0.4267578 \n3.875 3.25 -1.25 -0 -0 -1 -1.9375002 -1.6249998 0.4267578 0.42089844 \n3.875 3 -1.25 -0 -0 -1 -1.9375002 -1.4999998 0.42871094 0.42089844 \n3.125 3.25 -1.25 -0 -0 -1 -1.5625002 -1.6249998 0.4267578 0.4267578 \n3.875 3.25 -1.5 -0 -1 -0 1.9375 0.75 0.3623047 0.4248047 \n3.875 3.25 -1.25 -0 -1 -0 1.9375 0.625 0.3623047 0.42285156 \n3.125 3.25 -1.25 -0 -1 -0 1.5625 0.625 0.3564453 0.42285156 \n3.125 3.25 -1.5 -0 -1 -0 1.5625 0.75 0.3564453 0.4248047 \n3.875 3.25 -1.25 1 -0 0 0.625 1.625 0.44628906 0.23925781 \n3.875 3.25 -1.5 1 -0 0 0.75 1.625 0.44628906 0.24121094 \n3.875 3.5 -1.5 1 -0 0 0.75 1.75 0.44433594 0.24121094 \n3.875 3.5 -1.25 1 -0 0 0.625 1.75 0.44433594 0.23925781 \n3.875 3.25 -1.25 -0 0 1 1.9375 1.625 0.3935547 0.12792969 \n3.125 3.5 -1.25 -0 0 1 1.5625 1.75 0.3876953 0.12597656 \n3.125 3.25 -1.25 -0 0 1 1.5625 1.625 0.3876953 0.12792969 \n3.875 3.5 -1.25 -0 0 1 1.9375 1.75 0.3935547 0.12597656 \n3.125 3.25 -1.25 -1 -0 0 -0.6250001 -1.625 0.32128906 0.4482422 \n3.125 3.5 -1.5 -1 -0 0 -0.7500001 -1.75 0.3232422 0.4501953 \n3.125 3.25 -1.5 -1 -0 0 -0.7500001 -1.625 0.3232422 0.4482422 \n3.125 3.5 -1.25 -1 -0 0 -0.6250001 -1.75 0.32128906 0.4501953 \n3.125 3.25 -1.5 -0 -0 -1 -1.5625002 -1.6249998 0.42871094 0.13769531 \n3.875 3.5 -1.5 -0 -0 -1 -1.9375002 -1.7499998 0.4267578 0.13183594 \n3.875 3.25 -1.5 -0 -0 -1 -1.9375002 -1.6249998 0.42871094 0.13183594 \n3.125 3.5 -1.5 -0 -0 -1 -1.5625002 -1.7499998 0.4267578 0.13769531 \n3.875 3.5 -1.75 -0 -1 -0 1.9375 0.875 0.19042969 0.4267578 \n3.875 3.5 -1.5 -0 -1 -0 1.9375 0.75 0.19042969 0.4248047 \n3.125 3.5 -1.5 -0 -1 -0 1.5625 0.75 0.18457031 0.4248047 \n3.125 3.5 -1.75 -0 -1 -0 1.5625 0.875 0.18457031 0.4267578 \n3.875 3.5 -1.5 1 -0 0 0.75 1.75 0.25097656 0.4482422 \n3.875 3.5 -1.75 1 -0 0 0.875 1.75 0.25097656 0.4501953 \n3.875 3.75 -1.75 1 -0 0 0.875 1.875 0.24902344 0.4501953 \n3.875 3.75 -1.5 1 -0 0 0.75 1.875 0.24902344 0.4482422 \n3.875 3.5 -1.5 -0 0 1 1.9375 1.75 0.4267578 0.20214844 \n3.125 3.75 -1.5 -0 0 1 1.5625 1.875 0.4248047 0.19628906 \n3.125 3.5 -1.5 -0 0 1 1.5625 1.75 0.4267578 0.19628906 \n3.875 3.75 -1.5 -0 0 1 1.9375 1.875 0.4248047 0.20214844 \n3.125 3.5 -1.5 -1 -0 0 -0.7500001 -1.75 0.12792969 0.44433594 \n3.125 3.75 -1.75 -1 -0 0 -0.8750001 -1.875 0.12988281 0.44628906 \n3.125 3.5 -1.75 -1 -0 0 -0.8750001 -1.75 0.12792969 0.44628906 \n3.125 3.75 -1.5 -1 -0 0 -0.7500001 -1.875 0.12988281 0.44433594 \n3.125 3.5 -1.75 -0 -0 -1 -1.5625002 -1.7499998 0.25097656 0.4248047 \n3.875 3.75 -1.75 -0 -0 -1 -1.9375002 -1.8749998 0.24511719 0.42285156 \n3.875 3.5 -1.75 -0 -0 -1 -1.9375002 -1.7499998 0.24511719 0.4248047 \n3.125 3.75 -1.75 -0 -0 -1 -1.5625002 -1.8749998 0.25097656 0.42285156 \n3.875 3.75 -2 -0 -1 -0 1.9375 1 0.4267578 0.39746094 \n3.875 3.75 -1.75 -0 -1 -0 1.9375 0.875 0.4248047 0.39746094 \n3.125 3.75 -1.75 -0 -1 -0 1.5625 0.875 0.4248047 0.39160156 \n3.125 3.75 -2 -0 -1 -0 1.5625 1 0.4267578 0.39160156 \n3.875 3.75 -1.75 1 -0 0 0.875 1.875 0.06933594 0.4482422 \n3.875 3.75 -2 1 -0 0 1 1.875 0.07128906 0.4482422 \n3.875 4 -2 1 -0 0 1 2 0.07128906 0.44628906 \n3.875 4 -1.75 1 -0 0 0.875 2 0.06933594 0.44628906 \n3.875 3.75 -1.75 -0 0 1 1.9375 1.875 0.4267578 0.35058594 \n3.125 4 -1.75 -0 0 1 1.5625 2 0.4248047 0.34472656 \n3.125 3.75 -1.75 -0 0 1 1.5625 1.875 0.4267578 0.34472656 \n3.875 4 -1.75 -0 0 1 1.9375 2 0.4248047 0.35058594 \n3.125 3.75 -1.75 -1 -0 0 -0.8750001 -1.875 0.19824219 0.44628906 \n3.125 4 -2 -1 -0 0 -1.0000002 -2 0.20019531 0.4482422 \n3.125 3.75 -2 -1 -0 0 -1.0000002 -1.875 0.19824219 0.4482422 \n3.125 4 -1.75 -1 -0 0 -0.8750001 -2 0.20019531 0.44628906 \n3.875 4 -2 -0 1 0 -1.9375 -0.9999999 0.4267578 0.07714844 \n3.125 4 -2 -0 1 0 -1.5625 -0.9999999 0.4267578 0.07128906 \n3.125 4 -1.75 -0 1 0 -1.5625 -0.8749999 0.4248047 0.07128906 \n3.875 4 -1.75 -0 1 0 -1.9375 -0.8749999 0.4248047 0.07714844 \n3.875 3.75 -1.75 -0 1 0 -1.9375 -0.8749999 0.32714844 0.16894531 \n3.125 3.75 -1.75 -0 1 0 -1.5625 -0.8749999 0.32128906 0.16894531 \n3.125 3.75 -1.5 -0 1 0 -1.5625 -0.7499999 0.32128906 0.16699219 \n3.875 3.75 -1.5 -0 1 0 -1.9375 -0.7499999 0.32714844 0.16699219 \n3.875 3.5 -1.5 -0 1 0 -1.9375 -0.7499999 0.045898438 0.4248047 \n3.125 3.5 -1.5 -0 1 0 -1.5625 -0.7499999 0.040039062 0.4248047 \n3.125 3.5 -1.25 -0 1 0 -1.5625 -0.6249999 0.040039062 0.42285156 \n3.875 3.5 -1.25 -0 1 0 -1.9375 -0.6249999 0.045898438 0.42285156 \n3.875 3.25 -1.25 -0 1 0 -1.9375 -0.6249999 0.21777344 0.4248047 \n3.125 3.25 -1.25 -0 1 0 -1.5625 -0.6249999 0.21191406 0.4248047 \n3.125 3.25 -1 -0 1 0 -1.5625 -0.49999988 0.21191406 0.42285156 \n3.875 3.25 -1 -0 1 0 -1.9375 -0.49999982 0.21777344 0.42285156 \n3.875 3 -1 -0 1 0 -1.9375 -0.49999982 0.0068359375 0.4267578 \n3.125 3 -1 -0 1 0 -1.5625 -0.49999988 0.0009765625 0.4267578 \n3.125 3 -0.75 -0 1 0 -1.5625 -0.37499988 0.0009765625 0.4248047 \n3.875 3 -0.75 -0 1 0 -1.9375 -0.37499982 0.0068359375 0.4248047 \n3.875 2.75 -0.75 -0 1 0 -1.9375 -0.37499982 0.38964844 0.4267578 \n3.125 2.75 -0.75 -0 1 0 -1.5625 -0.37499988 0.38378906 0.4267578 \n3.125 2.75 -0.5 -0 1 0 -1.5625 -0.24999985 0.38378906 0.4248047 \n3.875 2.75 -0.5 -0 1 0 -1.9375 -0.24999982 0.38964844 0.4248047 \n3.875 2.5 -0.5 -0 1 0 -1.9375 -0.24999982 0.3408203 0.4248047 \n3.125 2.5 -0.5 -0 1 0 -1.5625 -0.24999985 0.33496094 0.4248047 \n3.125 2.5 -0.25 -0 1 0 -1.5625 -0.124999866 0.33496094 0.42285156 \n3.875 2.5 -0.25 -0 1 0 -1.9375 -0.124999836 0.3408203 0.42285156 \n3.125 1.75 0.25 -1 -0 0 0.124999925 -0.875 0.22949219 0.4482422 \n3.125 2 -0 -1 -0 0 -8.742278e-08 -1 0.23144531 0.4501953 \n3.125 1.75 -0 -1 -0 0 -7.649493e-08 -0.875 0.22949219 0.4501953 \n3.125 2 0.25 -1 -0 0 0.12499991 -1 0.23144531 0.4482422 \n3.875 2 -0 -0 1 0 -1.9375 1.6938164e-07 0.4169922 0.32714844 \n3.125 2 -0 -0 1 0 -1.5625 1.3659809e-07 0.4111328 0.32714844 \n3.125 2 0.25 -0 1 0 -1.5625 0.12500015 0.4111328 0.3251953 \n3.875 2 1 -0 1 0 -1.9375 0.5000001 0.4169922 0.31933594 \n3.875 1.75 -0 -0 -1 0 1.9375 0 0.2529297 0.4111328 \n3.125 1.75 0.25 -0 -1 0 1.5625 -0.125 0.25097656 0.40527344 \n3.125 1.75 -0 -0 -1 0 1.5625 0 0.2529297 0.40527344 \n3.875 1.75 1 -0 -1 0 1.9375 -0.5 0.24511719 0.4111328 \n3.875 1.25 -4 -1 -0 0 1 0.3125 0.049804688 0.37402344 \n3.875 2 -0 -1 -0 0 0 0.5 0.018554688 0.36816406 \n3.875 2 -4 -1 -0 0 1 0.5 0.049804688 0.36816406 \n3.875 1.25 -0 -1 -0 0 0 0.3125 0.018554688 0.37402344 \n-3.5 0.25 1.7499847 -0 0.8682431 0.49613893 -1.75 -0.9296799 0.39941406 0.016601562 \n-3.5 1.2499913 -1.19037274e-07 -0 0.8682431 0.49613893 -1.75 -0.05468744 0.39941406 0.034179688 \n-3.875 1.2499913 -1.1920929e-07 -0 0.8682431 0.49613893 -1.9375 -0.05468744 0.4033203 0.034179688 \n-3.875 0.25 1.7499847 -0 0.8682431 0.49613893 -1.9375 -0.9296799 0.4033203 0.016601562 \n-3.5 0.25 1.7499847 1 -0 0 -0.8749924 0.0703125 0.24707031 0.34472656 \n-3.5 0.25 0.75 1 -0 0 -0.375 0.0703125 0.24707031 0.35253906 \n-3.5 0.82141984 0.74999994 1 -0 0 -0.37499997 0.35602242 0.2529297 0.35253906 \n-3.5 1.1071341 0.25 1 -0 0 -0.125 0.49887955 0.44126672 0.37597656 \n-3.5 1 0.25 1 -0 0 -0.125 0.4453125 0.4404297 0.37597656 \n-3.5 1 -8.927873e-08 1 -0 0 4.4639364e-08 0.4453125 0.4404297 0.3798828 \n-3.5 1.2499913 -1.19037274e-07 1 -0 0 5.9518637e-08 0.57030815 0.4423828 0.3798828 \n-3.84375 1.25 -4 -0 1 -0 -1.921875 1.9453125 0.18457031 0.38736978 \n-3.875 1.25 -4 -0 1 -0 -1.9375 1.9453125 0.18457031 0.3876953 \n-3.875 1.25 -0.375 -0 1 0 -1.9375 0.1328125 0.15527344 0.3876953 \n-3.5 1.25 -0.375 -0 1 -0 -1.75 0.1328125 0.15527344 0.38378906 \n-3.5 0.25 -0.375 0.995534 -0 -0.09440409 0.1875 0.0703125 0.34277344 0.3720703 \n-3.84375 1.25 -4 0.995534 -0 -0.09440409 2 0.5703125 0.31347656 0.3642578 \n-3.5 1.25 -0.375 0.995534 -0 -0.09440409 0.1875 0.5703125 0.34277344 0.3642578 \n-3.84375 0.25 -4 0.995534 -0 -0.09440409 2 0.0703125 0.31347656 0.3720703 \n-3.875 0.25 -4.125 -0 1 0 1.9374998 -2.0625 0.24511719 0.23339844 \n-1.75 0.25 -7.375 -0 1 0 0.87499964 -3.6875 0.22851562 0.25878906 \n-3.875 0.25 -7.375 -0 1 0 1.9374998 -3.6875 0.24511719 0.25878906 \n-1.75 0.25 -4.125 -0 1 0 0.87499976 -2.0625 0.22851562 0.23339844 \n3.875 0.25 -4.125 -0 1 0 -1.9375002 -2.0625 0.18457031 0.23339844 \n3.875 0.25 -7.375 -0 1 0 -1.9375002 -3.6875 0.18457031 0.25878906 \n-3.875 0.25 -4.125 1 -0 0 1.0122871 -0.2065368 0.2783203 0.32714844 \n-3.875 0.25 -7.375 1 -0 0 1.797102 -0.41682732 0.2783203 0.35253906 \n-3.875 2.25 -7.375 1 -0 0 1.9265114 0.066135585 0.2626953 0.35253906 \n-3.875 2.25 -4.125 1 -0 0 1.1416967 0.2764261 0.2626953 0.32714844 \n3.875 0.25 -7.375 -0 -0 1 -0.96875 -0.062499918 0.24316406 0.3095703 \n-3.875 2.25 -7.375 -0 -0 1 0.96875 -0.5625001 0.18261719 0.2939453 \n-3.875 0.25 -7.375 -0 -0 1 0.96875 -0.06250009 0.18261719 0.3095703 \n3.875 2.25 -7.375 -0 -0 1 -0.96875 -0.5624999 0.24316406 0.2939453 \n-3.875 2.25 -4.125 -0 -1 0 -1.9375 2.0625 0.06738281 0.22167969 \n-3.875 2.25 -7.375 -0 -1 0 -1.9375 3.6875 0.06738281 0.24707031 \n-1.75 2.25 -7.375 -0 -1 0 -0.875 3.6875 0.05078125 0.24707031 \n-1.75 2.25 -4.125 -0 -1 0 -0.875 2.0625 0.05078125 0.22167969 \n3.875 2.25 -4.125 -0 -1 0 1.9375 2.0625 0.0068359375 0.22167969 \n3.875 2.25 -7.375 -0 -1 0 1.9375 3.6875 0.0068359375 0.24707031 \n-3.25 0.25 -4.125 -0 -0 -1 -0.8125 0.0625 0.08300781 0.23730469 \n-3.875 0.25 -4.125 -0 -0 -1 -0.96875 0.0625 0.07714844 0.23730469 \n-3.875 2.25 -4.125 -0 -0 -1 -0.96875 0.5625 0.07714844 0.22167969 \n-3.25 2.25 -4.125 -0 -0 -1 -0.8125 0.5625 0.08300781 0.22167969 \n-1.75 0.25 -4.125 -0 -0 -1 -0.4375 0.0625 0.33496094 0.33496094 \n-1.75 2.25 -4.125 -0 -0 -1 -0.4375 0.5625 0.33496094 0.31933594 \n3.875 2.25 -4.125 -0 -0 -1 0.96875 0.5625 0.29003906 0.31933594 \n3.875 0.25 -4.125 -0 -0 -1 0.96875 0.0625 0.29003906 0.33496094 \n3.875 0.25 -4.125 -1 -0 0 1.03125 0.0625 0.20019531 0.34472656 \n3.875 2.25 -4.125 -1 -0 0 1.03125 0.5625 0.20019531 0.36035156 \n3.875 2.25 -7.375 -1 -0 0 1.84375 0.5625 0.22558594 0.36035156 \n3.875 0.25 -7.375 -1 -0 0 1.84375 0.0625 0.22558594 0.34472656 \n-3.25 0.25 -4.125 -0 1 0 1.6249998 -2.0625 0.41503906 0.0029296875 \n-1.75 0.25 -4 -0 1 0 0.8749999 -2 0.4033203 0.0009765625 \n-1.75 0.25 -4.125 -0 1 0 0.87499976 -2.0625 0.4033203 0.0029296875 \n-3.25 0.25 -4 -0 1 0 1.6249998 -2 0.41503906 0.0009765625 \n-1.75 0.25 -4 -1 -0 0 1 0.0625 0.16113281 0.39746094 \n-1.75 2 -4.125 -1 -0 0 1.03125 0.5 0.17480469 0.39941406 \n-1.75 0.25 -4.125 -1 -0 0 1.03125 0.0625 0.16113281 0.39941406 \n-1.75 2 -4 -1 -0 0 1 0.5 0.17480469 0.39746094 \n-1.75 2 -4.125 -0 -1 0 -0.4375 1.03125 0.2548828 0.3173828 \n-1.75 2 -4 -0 -1 0 -0.4375 1 0.2529297 0.3173828 \n-3.25 2 -4 -0 -1 0 -0.8125 1 0.2529297 0.30566406 \n-3.25 2 -4.125 -0 -1 0 -0.8125 1.03125 0.2548828 0.30566406 \n-1.75 2 -4 -0 -0 1 0.43749994 -0.5 0.35058594 0.0029296875 \n-3.25 2.25 -4 -0 -0 1 0.8125 -0.5625001 0.3388672 0.0009765625 \n-3.25 2 -4 -0 -0 1 0.8125 -0.5000001 0.3388672 0.0029296875 \n-1.75 2.25 -4 -0 -0 1 0.43749994 -0.5625 0.35058594 0.0009765625 \n-3.25 0.25 -4 1 -0 0 -1 -0.06249991 0.23535156 0.35253906 \n-3.25 2 -4.125 1 -0 0 -1.03125 -0.49999988 0.23730469 0.36621094 \n-3.25 2 -4 1 -0 0 -1 -0.49999994 0.23535156 0.36621094 \n-3.25 0.25 -4.125 1 -0 0 -1.03125 -0.06249991 0.23730469 0.35253906 \n-3.25 2 -4.125 -0 -0 -1 -0.8125 0.5 0.4169922 0.2705078 \n-1.75 2.25 -4.125 -0 -0 -1 -0.4375 0.5625 0.41503906 0.25878906 \n-1.75 2 -4.125 -0 -0 -1 -0.4375 0.5 0.4169922 0.25878906 \n-3.25 2.25 -4.125 -0 -0 -1 -0.8125 0.5625 0.41503906 0.2705078 \n3 0.25 -4 -0 -0 1 -0.75 -0.062499933 0.35253906 0.17089844 \n3 2.25 -4 -0 -0 1 -0.75 -0.5624999 0.33691406 0.17089844 \n-1.75 2.25 -4 -0 -0 1 0.43749994 -0.5625 0.33691406 0.13378906 \n-1.75 0.25 -4 -0 -0 1 0.4375 -0.062500045 0.35253906 0.13378906 \n-3.25 0.25 -4 -0 -0 1 0.8125 -0.062500075 0.41503906 0.29003906 \n-3.8437505 1.25 -4 -0 -0 1 0.9609376 -0.31250006 0.4091797 0.28222656 \n-3.8437505 0.25 -4 -0 -0 1 0.9609376 -0.06250009 0.4091797 0.29003906 \n-3.25 1.25 -4 -0 -0 1 0.8125 -0.31250006 0.41503906 0.28222656 \n-4 3.7499695 -2 -1 -0 0 1 1.8749847 0.3232422 0.13769531 \n-4 2.5 -4 -1 -0 0 2 1.25 0.3232422 0.15722656 \n-4 2.5 -3.6666265 -1 -0 0 1.8333132 1.25 0.32128906 0.15488543 \n-4 3.7499695 -2 -1 -0 0 1 1.8749847 0.18574233 0.39941406 \n-4 4.0000005 -2 -1 -0 0 1 2.0000002 0.18457031 0.4013672 \n-4 2.5000005 -4 -1 -0 0 2 1.2500002 0.20410156 0.4013672 \n3.125 3.7499695 -2 0 -0 1 -1.5625002 -1.8749845 0.3251953 0.06347656 \n-4 4.0000005 -2 0 -0 1 1.9999998 -2.0000002 0.32128906 0.0068359375 \n-4 3.7499695 -2 0 -0 1 1.9999998 -1.874985 0.3251953 0.0068359375 \n3.125 4.0000005 -2 0 -0 1 -1.5625002 -2.0000002 0.32128906 0.06347656 \n4 2.5000005 -4 -0 0.8 -0.6 1.9999998 -2 0.2861328 0.11425781 \n-4 2.5000005 -4 -0 0.8 -0.6 -2 -1.9999998 0.2861328 0.17675781 \n-4 4.0000005 -2 -0 0.8 -0.6 -1.9999998 -0.9999999 0.26660156 0.17675781 \n4 4.0000005 -2 -0 0.8 -0.6 2 -1.0000002 0.26660156 0.11425781 \n4 3.7499695 -2 1 -0 0 -1.0000002 -1.8749847 0.07714844 0.3024947 \n4 2.5000005 -4 1 -0 0 -2 -1.25 0.07910156 0.2834428 \n4 4.0000005 -2 1 -0 0 -1.0000002 -2.0000002 0.07910156 0.30371094 \n4 2.2499697 -4 1 -0 0 -2 -1.1249846 0.07714844 0.28222656 \n4 3.7499695 -2 0 -0 1 -2 -1.8749845 0.059570312 0.44433594 \n4 4.0000005 -2 0 -0 1 -2 -2.0000002 0.055664062 0.44433594 \n3.875 4.0000005 -2 0 -0 1 -1.9375002 -2.0000002 0.055664062 0.4423828 \n3.875 3.7499695 -2 0 -0 1 -1.9375002 -1.8749845 0.059570312 0.4423828 \n3.875 2.2499697 -4 -0 -0.8 0.6 1.9375 2 0.0048828125 0.3310547 \n-4 2.5 -3.6666265 -0 -0.8 0.6 -2 1.8333132 0.06738281 0.32714844 \n-4 2.2499697 -4 -0 -0.8 0.6 -2 2 0.06738281 0.3310547 \n3.875 2.5 -3.6666262 -0 -0.8 0.6 1.9375 1.8333131 0.0048828125 0.32714844 \n-3.875 2.5 -3.6666265 -0 -0.8 0.6 -1.9375 1.8333132 0.06542969 0.2998047 \n3.875 2.5 -3.6666262 -0 -0.8 0.6 1.9375 1.8333131 0.0048828125 0.2998047 \n3.875 3.7499695 -2 -0 -0.8 0.6 1.9375 1 0.0048828125 0.28222656 \n-3.875 3.7499695 -2 -0 -0.8 0.6 -1.9375 1 0.06542969 0.28222656 \n-28 0.25 4 -0 1 0 14 1.9999988 0.17089844 0.14550781 \n-26 0.25 -7.0000005 -0 1 0 13 -3.5000012 0.25683594 0.16113281 \n-28 0.25 -7 -0 1 0 14 -3.5000014 0.25683594 0.14550781 \n-26 0.25 4 -0 1 0 13 1.9999988 0.17089844 0.16113281 \n-24 0.25 -6.499999 -0 1 0 12 -3.2500005 0.09472656 0.18652344 \n-26 0.25 -6.499999 -0 1 0 13 -3.2500005 0.09472656 0.17089844 \n-26 0.25 4 -0 1 0 13 1.9999988 0.0126953125 0.17089844 \n-24 0.25 4 -0 1 0 12 1.999999 0.0126953125 0.18652344 \n-22 0.25 -6.0000005 -0 1 0 11 -3.0000012 0.25683594 0.18652344 \n-24 0.25 -6.0000005 -0 1 0 12 -3.0000012 0.25683594 0.17089844 \n-24 0.25 4 -0 1 0 12 1.999999 0.17871094 0.17089844 \n-22 0.25 4 -0 1 0 11 1.999999 0.17871094 0.18652344 \n-22 0.25 -5.5 -1 0 0 2.75 0.125 0.39941406 0.22949219 \n-22 2.25 -7.5 -1 0 0 3.75 1.125 0.39941406 0.2529297 \n-22 2.2499995 -7.5 -1 0 0 3.75 1.1249998 0.39941406 0.2529297 \n-22 0.25 -6 -1 0 0 3 0.125 0.3955078 0.23242188 \n-22 2.25 -7.5 -0 -0 -1 -11 1.125 0.38183594 0.38378906 \n-20 2.25 -7.5 -0 -0 -1 -10 1.125 0.39746094 0.38378906 \n-20 0.25 -7.5 -0 -0 -1 -10 0.125 0.39746094 0.39941406 \n-22 0.25 -7.5 -0 -0 -1 -11 0.125 0.38183594 0.39941406 \n-20 0.25 -5.5 -0 1 0 10 -2.750001 0.07519531 0.19628906 \n-22 0.25 -5.5 -0 1 0 11 -2.750001 0.07519531 0.21191406 \n-22 0.25 4 -0 1 0 11 1.999999 0.0009765625 0.21191406 \n-20 0.25 4 -0 1 0 10 1.999999 0.0009765625 0.19628906 \n-20 0.25 -5.5 -0 0.70710677 0.70710677 -10 -4.0839453 0.27441406 0.016601562 \n-20 2.25 -7.5 -0 0.70710677 0.70710677 -10 -5.0839453 0.29785156 0.016601562 \n-22 2.25 -7.5 -0 0.70710677 0.70710677 -11 -5.0839453 0.29785156 0.0009765625 \n-22 0.25 -5.5 -0 0.70710677 0.70710677 -11 -4.0839453 0.27441406 0.0009765625 \n-18 0.25 -5 -0 1 0 9 -2.500001 0.16308594 0.23144531 \n-20 0.25 -5 -0 1 0 10 -2.500001 0.16308594 0.21582031 \n-20 0.25 4 -0 1 0 10 1.999999 0.09277344 0.21582031 \n-18 0.25 4 -0 1 0 9 1.9999993 0.09277344 0.23144531 \n-18 2.2500002 -7.5 -0 -0 -1 -9 1.1250001 0.09667969 0.3720703 \n-16 2.2500002 -7.5 -0 -0 -1 -8 1.1250001 0.11230469 0.3720703 \n-16 0.25 -7.5 -0 -0 -1 -8 0.125 0.11230469 0.38964844 \n-18 0.25 -7.5 -0 -0 -1 -9 0.125 0.09667969 0.38964844 \n-16 0.25 -4.5 -0 1 0 8 -2.2500005 0.24511719 0.2685547 \n-18 0.25 -4.5 -0 1 0 9 -2.250001 0.24511719 0.2841797 \n-18 0.25 4 -0 1 0 9 1.9999993 0.17871094 0.2841797 \n-16 0.25 4 -0 1 0 8 1.9999993 0.17871094 0.2685547 \n-16 0.25 -4.5 -0 0.8320503 0.5547002 -8 -2.9776063 0.13183594 0.15917969 \n-16 2.2500002 -7.5 -0 0.8320503 0.5547002 -8 -4.4776063 0.16113281 0.15917969 \n-18 2.2500002 -7.5 -0 0.8320503 0.5547002 -9 -4.477606 0.16113281 0.14355469 \n-18 0.25 -4.5 -0 0.8320503 0.5547002 -9 -2.9776058 0.13183594 0.14355469 \n-14 0.25 -3.5 -0 1 0 7 -1.7500007 0.31152344 0.29785156 \n-16 0.25 -3.5 -0 1 0 8 -1.7500007 0.29589844 0.29785156 \n-16 0.25 4 -0 1 0 8 1.9999993 0.29589844 0.23925781 \n-14 0.25 4 -0 1 0 7 1.9999993 0.31152344 0.23925781 \n-12 0.25 -2.5 -0 1 0 6 -1.2500005 0.15917969 0.33496094 \n-14 0.25 -2.5 -0 1 0 7 -1.2500007 0.15917969 0.31933594 \n-14 0.25 4 -0 1 0 7 1.9999993 0.10839844 0.31933594 \n-12 0.25 4 -0 1 0 6 1.9999995 0.10839844 0.33496094 \n-10 0.25 -1.5 -0 1 0 5 -0.7500005 0.35058594 0.057617188 \n-12 0.25 -1.5 -0 1 0 6 -0.7500005 0.33496094 0.057617188 \n-12 0.25 4 -0 1 0 6 1.9999995 0.33496094 0.0146484375 \n-10 0.25 4 -0 1 0 5 1.9999995 0.35058594 0.0146484375 \n-8 0.25 -0.5 -0 1 0 4 -0.25000036 0.3642578 0.33691406 \n-10 0.25 -0.5 -0 1 0 5 -0.25000042 0.3486328 0.33691406 \n-10 0.25 4 -0 1 0 5 1.9999995 0.3486328 0.3017578 \n-8 0.25 4 -0 1 0 4 1.9999998 0.3642578 0.3017578 \n-6 0.25 0.50000095 -0 1 0 3 0.25000024 0.3486328 0.10839844 \n-8 0.25 0.50000095 -0 1 0 4 0.25000012 0.3486328 0.12402344 \n-8 0.25 4 -0 1 0 4 1.9999998 0.32128906 0.12402344 \n-6 0.25 4 -0 1 0 3 1.9999998 0.32128906 0.10839844 \n-4 0.25 0.50000095 -0 1 0 2 0.2500003 0.3486328 0.09277344 \n-4 0.25 4 -0 1 0 2 1.9999998 0.32128906 0.09277344 \n-4 0.25000378 0.4999541 -0 0.97014254 0.24253564 2 0.28029382 0.27246094 0.036132812 \n-4 2.2499924 -7.4999995 -0 0.97014254 0.24253564 1.9999998 -3.7196827 0.27246094 0.10058594 \n-6 2.2499924 -7.4999995 -0 0.97014254 0.24253564 2.9999995 -3.7196832 0.28808594 0.10058594 \n-6 0.2500038 0.49995422 -0 0.97014254 0.24253564 3 0.2802938 0.28808594 0.036132812 \n-6 2.2499924 -7.4999995 -0 -0 -1 -3 1.1249962 0.3701172 0.39941406 \n-4 2.2499924 -7.4999995 -0 -0 -1 -2 1.1249962 0.3544922 0.39941406 \n-4 0.25000367 -7.5 -0 -0 -1 -2 0.12500183 0.3544922 0.38378906 \n-6 0.2500037 -7.5 -0 -0 -1 -3 0.12500185 0.3701172 0.38378906 \n-8 0.2500038 0.49995422 -1 -0 0 -0.24997711 0.1250019 0.0087890625 0.3154297 \n-8 2.2499394 -7.499788 -1 -0 0 3.749894 1.1249697 0.07324219 0.3154297 \n-8 0.2500038 -0.50001335 -1 -0 0 0.25000668 0.1250019 0.016371781 0.31347656 \n-6 0.25000378 0.4999541 -0 0.97014254 0.24253564 3 0.28029373 0.2705078 0.19042969 \n-6 2.2499924 -7.4999995 -0 0.97014254 0.24253564 2.9999995 -3.7196832 0.2705078 0.2548828 \n-8 2.2499924 -7.4999995 -0 0.97014254 0.24253564 3.9999995 -3.7196832 0.2861328 0.2548828 \n-8 0.2500038 0.49995422 -0 0.97014254 0.24253564 4 0.2802937 0.2861328 0.19042969 \n-8 2.2499924 -7.4999995 -0 -0 -1 -4 1.1249962 0.051757812 0.39941406 \n-6 2.2499924 -7.4999995 -0 -0 -1 -3 1.1249962 0.051757812 0.38378906 \n-6 0.25000367 -7.5 -0 -0 -1 -3 0.12500183 0.036132812 0.38378906 \n-8 0.2500037 -7.5 -0 -0 -1 -4 0.12500185 0.036132812 0.39941406 \n-10 0.25 -0.5 -1 0 0 0.25 0.125 0.18457031 0.3232422 \n-10 2.25 -7.5 -1 0 0 3.75 1.125 0.24316406 0.3232422 \n-10 0.25 -1.5000002 -1 0 0 0.7500001 0.125 0.19230911 0.31933594 \n-8 0.25 -0.50000036 -0 0.9615239 0.27472112 4 -0.28464854 0.29589844 0.12011719 \n-10 2.25 -7.5 -0 0.9615239 0.27472112 5 -3.7846484 0.31152344 0.17871094 \n-10 0.25 -0.5 -0 0.9615239 0.27472112 5 -0.28464842 0.31152344 0.12011719 \n-8 2.25 -7.5 -0 0.9615239 0.27472112 3.9999995 -3.7846484 0.29589844 0.17871094 \n-10 2.25 -7.5 -0 -0 -1 -5 1.125 0.3779297 0.061523438 \n-8 2.25 -7.5 -0 -0 -1 -4 1.125 0.3779297 0.07714844 \n-8 0.25 -7.5 -0 -0 -1 -4 0.125 0.3935547 0.07714844 \n-10 0.25 -7.5 -0 -0 -1 -5 0.125 0.3935547 0.061523438 \n-12 2.25 -7.5 -0 -0 -1 -6 1.125 0.32128906 0.38183594 \n-10 2.25 -7.5 -0 -0 -1 -5 1.125 0.32128906 0.39746094 \n-10 0.24999994 -7.5 -0 -0 -1 -5 0.12499997 0.33691406 0.39746094 \n-12 0.25 -7.5 -0 -0 -1 -6 0.125 0.33691406 0.38183594 \n-10 0.24999994 -1.4999996 -0 0.94868326 0.31622776 5 -0.8712681 0.28027344 0.26464844 \n-10 2.25 -7.5 -0 0.94868326 0.31622776 5 -3.8712683 0.28027344 0.3154297 \n-12 2.25 -7.5 -0 0.94868326 0.31622776 6 -3.8712683 0.26464844 0.3154297 \n-12 0.25 -1.5 -0 0.94868326 0.31622776 6 -0.8712683 0.26464844 0.26464844 \n-12 0.25 -1.5 -1 0 0 0.75 0.125 0.34472656 0.18457031 \n-12 2.25 -7.5 -1 0 0 3.75 1.125 0.34472656 0.23535156 \n-12 0.25 -2.5 -1 0 0 1.25 0.125 0.3408203 0.1921875 \n-14 2.2500122 -7.5 -0 -0 -1 -7 1.1250061 0.12207031 0.3857422 \n-12 2.2500122 -7.5 -0 -0 -1 -6 1.1250061 0.12207031 0.3701172 \n-12 0.25000006 -7.5 -0 -0 -1 -6 0.12500003 0.13964844 0.3701172 \n-14 0.25 -7.5 -0 -0 -1 -7 0.125 0.13964844 0.3857422 \n-12 0.25000006 -2.4999695 -0 0.9284767 0.37139067 6 -1.4925218 0.33691406 0.24902344 \n-12 2.2500122 -7.5 -0 0.9284767 0.37139067 6 -3.992537 0.33691406 0.2919922 \n-14 2.2500122 -7.5 -0 0.9284767 0.37139067 7 -3.992537 0.32128906 0.2919922 \n-14 0.25 -2.4999695 -0 0.9284767 0.37139067 7 -1.492522 0.32128906 0.24902344 \n-14 0.25 -2.4999695 -1 0 0 1.2499847 0.125 0.3642578 0.020507812 \n-14 2.2500122 -7.5 -1 0 0 3.75 1.1250061 0.3642578 0.06347656 \n-14 2.25 -7.5 -1 0 0 3.75 1.125 0.3642577 0.06347653 \n-14 0.25 -3.4999998 -1 0 0 1.7499999 0.125 0.36035156 0.027916394 \n-16 0.25 -3.5000305 -1 0 0 1.7500153 0.125 0.15136719 0.3564453 \n-16 2.2499402 -7.499911 -1 0 0 3.7499554 1.1249701 0.18652344 0.3564453 \n-16 0.25 -4.5000005 -1 0 0 2.2500002 0.125 0.15839843 0.35253906 \n-14 0.24999994 -3.5000305 -0 0.8944272 0.4472136 7 -2.1744533 0.3466797 0.25097656 \n-14 2.2499847 -7.5 -0 0.8944272 0.4472136 7 -4.1744375 0.3466797 0.2861328 \n-16 2.2499847 -7.5 -0 0.8944272 0.4472136 8 -4.1744375 0.3623047 0.2861328 \n-16 0.25 -3.5000305 -0 0.8944272 0.4472136 8 -2.1744533 0.3623047 0.25097656 \n-16 2.2499847 -7.5 -0 -0 -1 -8 1.1249924 0.24707031 0.3798828 \n-14 2.2499847 -7.5 -0 -0 -1 -7 1.1249924 0.2626953 0.3798828 \n-14 0.24999994 -7.5 -0 -0 -1 -7 0.12499997 0.2626953 0.3955078 \n-16 0.25 -7.5 -0 -0 -1 -8 0.125 0.24707031 0.3955078 \n-18 0.25 -4.5 -1 0 0 2.25 0.125 0.3779297 0.09082031 \n-18 2.2499995 -7.5 -1 0 0 3.75 1.1249998 0.3779297 0.12011719 \n-18 0.25 -5.0000005 -1 0 0 2.5000002 0.125 0.37402344 0.09420072 \n-20 0.25001526 -5.0000305 -1 0 0 2.5000153 0.12500763 0.27246094 0.39941406 \n-20 2.249955 -7.499955 -1 0 0 3.7499776 1.1249775 0.29785156 0.39941406 \n-20 0.25001523 -5.5000153 -1 0 0 2.7500076 0.12500761 0.27555734 0.3955078 \n-18 0.25001514 -5.0000305 -0 0.7808688 0.62469506 -9 -3.4701576 0.11621094 0.34472656 \n-18 2.249991 -7.5 -0 0.7808688 0.62469506 -9 -4.7201424 0.14160156 0.34472656 \n-20 2.249991 -7.5 -0 0.7808688 0.62469506 -10 -4.7201424 0.14160156 0.36035156 \n-20 0.25001526 -5.0000305 -0 0.7808688 0.62469506 -10 -3.4701576 0.11621094 0.36035156 \n-20 2.249991 -7.5 -0 -0 -1 -10 1.1249955 0.37402344 0.026367188 \n-18 2.249991 -7.5 -0 -0 -1 -9 1.1249955 0.38964844 0.026367188 \n-18 0.250015 -7.5 -0 -0 -1 -9 0.1250075 0.38964844 0.041992188 \n-20 0.2500151 -7.5 -0 -0 -1 -10 0.12500755 0.37402344 0.041992188 \n-24 0.25 -6.0000153 -1 0 0 3.0000076 0.125 0.17285156 0.2998047 \n-24 2.249936 -7.4999676 -1 0 0 3.7499838 1.124968 0.17285156 0.31933594 \n-24 0.25 -6.4999995 -1 0 0 3.2499998 0.125 0.16894531 0.30214843 \n-22 0.25 -6.0000153 -0 0.6 0.8 -11 2.8208485 0.07714844 0.3251953 \n-22 2.2499795 -7.5 -0 0.6 0.8 -11 2.070856 0.09667969 0.3251953 \n-24 2.2499795 -7.5 -0 0.6 0.8 -12 2.070856 0.09667969 0.3408203 \n-24 0.25 -6.0000153 -0 0.6 0.8 -12 2.8208485 0.07714844 0.3408203 \n-24 2.2499795 -7.5 -0 -0 -1 -12 1.1249897 0.3720703 0.2607422 \n-22 2.2499795 -7.5 -0 -0 -1 -11 1.1249897 0.3720703 0.2763672 \n-22 0.25 -7.5 -0 -0 -1 -11 0.125 0.3876953 0.2763672 \n-24 0.25 -7.5 -0 -0 -1 -12 0.125 0.3876953 0.2607422 \n-26 0.25 -6.5 -1 0 0 3.25 0.125 0.13378906 0.4013672 \n-26 2.2499979 -7.5 -1 0 0 3.75 1.1249989 0.15136719 0.4013672 \n-26 0.25 -7.0000005 -1 0 0 3.5000002 0.125 0.13554688 0.39746094 \n-24 0.25 -6.5 -0 0.4472136 0.8944272 12 2.3338885 0.018554688 0.14355469 \n-24 2.2499998 -7.5 -0 0.4472136 0.8944272 12 1.3338886 0.0009765662 0.14355469 \n-26 2.25 -7.5 -0 0.4472136 0.8944272 13 1.3338883 0.0009765625 0.15917969 \n-26 0.25 -6.5 -0 0.4472136 0.8944272 13 2.3338883 0.018554688 0.15917969 \n-26 2.25 -7.5 -0 -0 -1 -13 1.125 0.28808594 0.36816406 \n-24 2.2499998 -7.5 -0 -0 -1 -12 1.1249999 0.28808594 0.38378906 \n-24 0.25 -7.5 -0 -0 -1 -12 0.125 0.30371094 0.38378906 \n-26 0.25 -7.5 -0 -0 -1 -13 0.125 0.30371094 0.36816406 \n-28 0.25 -7.0000076 -1 0 0 3.5000038 0.125 0.4013672 0.3232422 \n-28 2.2499692 -7.5 -1 0 0 3.75 1.1249846 0.3857422 0.32714844 \n-28 0.25 -7.5 -1 0 0 3.75 0.125 0.4013672 0.32714844 \n-26 0.25 -7.0000076 -0 0.24253564 0.97014254 13 2.4551558 0.08691406 0.36816406 \n-28 2.2499692 -7.5 -0 0.24253564 0.97014254 14 1.4551712 0.06933594 0.38378906 \n-28 0.25 -7.0000076 -0 0.24253564 0.97014254 14 2.4551558 0.08691406 0.38378906 \n-26 2.249969 -7.5 -0 0.24253564 0.97014254 13 1.4551713 0.069335945 0.36816406 \n-28 2.2499692 -7.5 -0 -0 -1 -14 1.1249846 0.3720703 0.17675781 \n-26 0.25 -7.5 -0 -0 -1 -13 0.125 0.3876953 0.19238281 \n-28 0.25 -7.5 -0 -0 -1 -14 0.125 0.3720703 0.19238281 \n-26 2.249969 -7.5 -0 -0 -1 -13 1.1249845 0.3876953 0.17675781 \n7 8 9 0 \n7 9 10 0 \n29 31 32 0 \n29 30 31 0 \n107 108 109 0 \n107 110 108 0 \n119 120 121 0 \n119 121 122 0 \n123 124 125 0 \n123 126 124 0 \n139 140 141 0 \n139 142 140 0 \n143 144 145 0 \n143 146 144 0 \n163 164 165 0 \n163 166 164 0 \n227 228 229 0 \n227 229 230 0 \n231 232 233 0 \n231 233 234 0 \n235 236 237 0 \n235 238 236 0 \n259 261 262 0 \n259 260 261 0 \n283 285 286 0 \n283 284 285 0 \n307 309 310 0 \n307 308 309 0 \n371 372 373 0 \n371 373 374 0 \n323 326 324 0 \n323 324 325 0 \n335 336 337 0 \n335 337 338 0 \n375 376 377 0 \n375 378 376 0 \n539 540 541 0 \n539 541 542 0 \n13 14 15 0 \n13 26 14 0 \n759 760 761 1 \n759 762 760 1 \n781 782 783 1 \n781 784 782 1 \n781 790 784 1 \n763 766 764 1 \n763 764 765 1 \n767 769 770 1 \n767 768 769 1 \n791 792 793 1 \n791 793 794 1 \n795 796 797 1 \n795 798 796 1 \n111 112 113 1 \n111 114 112 1 \n799 800 801 1 \n799 802 800 1 \n807 808 809 1 \n807 810 808 1 \n811 812 813 1 \n811 814 812 1 \n815 816 817 1 \n815 817 818 1 \n355 356 357 1 \n355 358 356 1 \n255 257 258 1 \n255 256 257 1 \n279 281 282 1 \n279 280 281 1 \n303 304 305 1 \n303 305 306 1 \n1023 1024 1025 1 \n1023 1026 1024 1 \n331 333 334 1 \n331 332 333 1 \n843 844 845 1 \n843 845 846 1 \n51 52 53 1 \n51 53 54 1 \n57 59 60 1 \n57 58 59 1 \n16 18 19 1 \n16 17 18 1 \n54 53 55 1 \n54 55 56 1 \n61 64 62 1 \n61 62 63 1 \n115 116 117 1 \n115 118 116 1 \n751 752 753 1 \n751 753 754 1 \n743 744 745 1 \n743 745 746 1 \n735 736 737 1 \n735 737 738 1 \n727 728 729 1 \n727 729 730 1 \n719 720 721 1 \n719 721 722 1 \n711 712 713 1 \n711 713 714 1 \n699 702 700 1 \n699 700 701 1 \n695 696 697 1 \n695 697 698 1 \n675 676 677 1 \n675 677 678 1 \n655 656 657 1 \n655 657 658 1 \n635 636 637 1 \n635 637 638 1 \n615 616 617 1 \n615 617 618 1 \n595 596 597 1 \n595 597 598 1 \n575 576 577 1 \n575 577 578 1 \n543 544 545 1 \n543 545 546 1 \n755 757 758 2 \n755 756 757 2 \n747 750 748 2 \n747 748 749 2 \n551 552 553 2 \n551 554 552 2 \n547 549 550 2 \n547 548 549 2 \n559 560 561 2 \n559 562 560 2 \n555 556 557 2 \n555 558 556 2 \n739 742 740 2 \n739 740 741 2 \n563 564 565 2 \n563 566 564 2 \n567 569 570 2 \n567 568 569 2 \n579 580 581 2 \n579 582 580 2 \n571 572 573 2 \n571 574 572 2 \n731 734 732 2 \n731 732 733 2 \n583 584 585 2 \n583 586 584 2 \n587 589 590 2 \n587 588 589 2 \n599 600 601 2 \n599 602 600 2 \n591 592 593 2 \n591 594 592 2 \n723 726 724 2 \n723 724 725 2 \n603 604 605 2 \n603 606 604 2 \n607 609 610 2 \n607 608 609 2 \n619 620 621 2 \n619 622 620 2 \n611 612 613 2 \n611 614 612 2 \n715 718 716 2 \n715 716 717 2 \n623 624 625 2 \n623 626 624 2 \n627 629 630 2 \n627 628 629 2 \n639 640 641 2 \n639 642 640 2 \n631 632 633 2 \n631 634 632 2 \n707 710 708 2 \n707 708 709 2 \n643 644 645 2 \n643 646 644 2 \n647 649 650 2 \n647 648 649 2 \n659 660 661 2 \n659 662 660 2 \n651 652 653 2 \n651 654 652 2 \n703 706 704 2 \n703 704 705 2 \n663 664 665 2 \n663 666 664 2 \n667 669 670 2 \n667 668 669 2 \n679 680 681 2 \n679 682 680 2 \n671 672 673 2 \n671 674 672 2 \n691 694 692 2 \n691 692 693 2 \n683 684 685 2 \n683 686 684 2 \n687 689 690 2 \n687 688 689 2 \n399 401 402 2 \n399 400 401 2 \n391 392 393 2 \n391 393 394 2 \n395 398 396 2 \n395 396 397 2 \n383 384 385 2 \n383 386 384 2 \n379 381 382 2 \n379 380 381 2 \n403 404 405 2 \n403 406 404 2 \n423 424 425 2 \n423 425 426 2 \n387 388 389 2 \n387 390 388 2 \n411 412 413 2 \n411 413 414 2 \n407 409 410 2 \n407 408 409 2 \n415 417 418 2 \n415 416 417 2 \n427 428 429 2 \n427 430 428 2 \n447 448 449 2 \n447 449 450 2 \n419 420 421 2 \n419 422 420 2 \n435 436 437 2 \n435 437 438 2 \n431 433 434 2 \n431 432 433 2 \n439 441 442 2 \n439 440 441 2 \n451 452 453 2 \n451 454 452 2 \n471 472 473 2 \n471 473 474 2 \n443 444 445 2 \n443 446 444 2 \n459 460 461 2 \n459 461 462 2 \n455 457 458 2 \n455 456 457 2 \n463 465 466 2 \n463 464 465 2 \n475 476 477 2 \n475 478 476 2 \n495 496 497 2 \n495 497 498 2 \n467 468 469 2 \n467 470 468 2 \n483 484 485 2 \n483 485 486 2 \n479 481 482 2 \n479 480 481 2 \n487 489 490 2 \n487 488 489 2 \n499 500 501 2 \n499 502 500 2 \n519 520 521 2 \n519 521 522 2 \n491 492 493 2 \n491 494 492 2 \n507 508 509 2 \n507 509 510 2 \n503 505 506 2 \n503 504 505 2 \n511 513 514 2 \n511 512 513 2 \n827 829 830 2 \n827 828 829 2 \n819 820 821 2 \n819 821 822 2 \n831 833 834 2 \n831 832 833 2 \n823 826 824 2 \n823 824 825 2 \n839 840 841 2 \n839 842 840 2 \n363 364 365 3 \n363 366 364 3 \n367 368 369 3 \n367 369 370 3 \n359 360 361 3 \n359 362 360 3 \n243 245 246 3 \n243 244 245 3 \n239 242 240 3 \n239 240 241 3 \n247 248 249 3 \n247 249 250 3 \n251 253 254 3 \n251 252 253 3 \n267 269 270 3 \n267 268 269 3 \n263 266 264 3 \n263 264 265 3 \n271 272 273 3 \n271 273 274 3 \n275 277 278 3 \n275 276 277 3 \n291 293 294 3 \n291 292 293 3 \n287 290 288 3 \n287 288 289 3 \n295 296 297 3 \n295 297 298 3 \n299 301 302 3 \n299 300 301 3 \n319 321 322 3 \n319 320 321 3 \n311 312 313 3 \n311 313 314 3 \n315 318 316 3 \n315 316 317 3 \n327 329 330 3 \n327 328 329 3 \n343 345 346 3 \n343 344 345 3 \n339 342 340 3 \n339 340 341 3 \n347 348 349 3 \n347 349 350 3 \n1027 1028 1029 4 \n1027 1029 1030 4 \n1031 1032 1033 4 \n179 181 182 4 \n179 180 181 4 \n195 197 198 4 \n195 196 197 4 \n1034 1035 1036 4 \n1034 1036 1037 4 \n199 200 201 4 \n199 202 200 4 \n147 148 149 4 \n147 150 148 4 \n171 172 173 4 \n171 173 174 4 \n167 170 168 4 \n167 168 169 4 \n151 153 154 4 \n151 152 153 4 \n159 161 162 4 \n159 160 161 4 \n175 178 176 4 \n175 176 177 4 \n155 157 158 4 \n155 156 157 4 \n187 190 188 4 \n187 188 189 4 \n191 193 194 4 \n191 192 193 4 \n183 184 185 4 \n183 186 184 4 \n211 214 212 4 \n211 212 213 4 \n203 205 206 4 \n203 204 205 4 \n219 222 220 4 \n219 220 221 4 \n207 209 210 4 \n207 208 209 4 \n215 216 217 4 \n215 217 218 4 \n223 224 225 4 \n223 226 224 4 \n135 138 136 4 \n135 136 137 4 \n131 134 132 4 \n131 132 133 4 \n127 129 130 4 \n127 128 129 4 \n1038 1039 1040 4 \n1038 1040 1041 4 \n1042 1043 1044 4 \n1042 1045 1043 4 \n33 32 34 0 \n33 29 32 0 \n1046 1047 1048 0 \n1046 1049 1047 0 \n1078 1079 1080 0 \n1078 1081 1079 0 \n1050 1051 1047 0 \n1050 1047 1049 0 \n35 36 37 0 \n35 38 36 0 \n26 27 14 0 \n26 28 27 0 \n1082 1085 1083 1 \n1082 1083 1084 1 \n1102 1103 1104 1 \n1102 1104 1105 1 \n351 352 353 1 \n351 354 352 1 \n1070 1072 1073 1 \n1070 1071 1072 1 \n17 20 18 1 \n17 21 20 1 \n782 785 786 1 \n782 784 785 1 \n803 804 805 1 \n803 806 804 1 \n1106 1107 1108 1 \n1106 1109 1107 1 \n1066 1067 1068 1 \n1066 1068 1069 1 \n1094 1095 1096 1 \n1094 1097 1095 1 \n1060 1061 1062 2 \n1060 1062 1063 2 \n1064 1062 1065 2 \n1064 1063 1062 2 \n79 82 80 2 \n79 80 81 2 \n43 44 45 2 \n43 46 44 2 \n75 77 78 2 \n75 76 77 2 \n0 1 2 1 \n788 787 789 1 \n1056 1057 1058 1 \n1056 1059 1057 1 \n39 40 41 1 \n39 42 40 1 \n23 24 22 1 \n23 25 24 1 \n786 787 788 1 \n786 785 787 1 \n1052 1054 1055 1 \n1052 1053 1054 1 \n1074 1076 1077 1 \n1074 1075 1076 1 \n21 22 20 1 \n21 23 22 1 \n775 776 777 1 \n771 774 772 1 \n771 772 773 1 \n778 779 780 1 \n69 70 71 1 \n65 68 66 1 \n65 66 67 1 \n72 73 74 1 \n1110 1111 1112 2 \n1113 1114 1115 2 \n1116 1119 1117 2 \n1116 1117 1118 2 \n1128 1130 1131 2 \n1128 1129 1130 2 \n1132 1133 1134 2 \n1132 1135 1133 2 \n1136 1137 1138 2 \n1136 1138 1139 2 \n1120 1121 1122 2 \n1120 1122 1123 2 \n1124 1125 1126 2 \n1124 1127 1125 2 \n1090 1093 1091 1 \n1090 1091 1092 1 \n1086 1088 1089 1 \n1086 1087 1088 1 \n1098 1099 1100 1 \n1098 1101 1099 1 \n859 860 861 2 \n859 862 860 2 \n855 858 856 2 \n855 856 857 2 \n847 849 850 2 \n847 848 849 2 \n1007 1008 1009 2 \n1007 1009 1010 2 \n863 864 865 2 \n863 866 864 2 \n851 853 854 2 \n851 852 853 2 \n879 880 881 2 \n879 882 880 2 \n875 878 876 2 \n875 876 877 2 \n867 869 870 2 \n867 868 869 2 \n1003 1004 1005 2 \n1003 1005 1006 2 \n883 884 885 2 \n883 886 884 2 \n871 873 874 2 \n871 872 873 2 \n899 900 901 2 \n899 902 900 2 \n895 898 896 2 \n895 896 897 2 \n887 889 890 2 \n887 888 889 2 \n999 1000 1001 2 \n999 1001 1002 2 \n903 904 905 2 \n903 906 904 2 \n891 893 894 2 \n891 892 893 2 \n919 920 921 2 \n919 922 920 2 \n915 918 916 2 \n915 916 917 2 \n907 909 910 2 \n907 908 909 2 \n995 996 997 2 \n995 997 998 2 \n923 924 925 2 \n923 926 924 2 \n911 913 914 2 \n911 912 913 2 \n939 940 941 2 \n939 942 940 2 \n935 938 936 2 \n935 936 937 2 \n927 929 930 2 \n927 928 929 2 \n991 992 993 2 \n991 993 994 2 \n943 944 945 2 \n943 946 944 2 \n931 933 934 2 \n931 932 933 2 \n959 960 961 2 \n959 962 960 2 \n955 958 956 2 \n955 956 957 2 \n947 949 950 2 \n947 948 949 2 \n987 988 989 2 \n987 989 990 2 \n963 964 965 2 \n963 966 964 2 \n951 953 954 2 \n951 952 953 2 \n979 980 981 2 \n979 982 980 2 \n975 978 976 2 \n975 976 977 2 \n967 969 970 2 \n967 968 969 2 \n983 984 985 2 \n983 985 986 2 \n971 973 974 2 \n971 972 973 2 \n1011 1012 1013 2 \n1011 1014 1012 2 \n1019 1020 1021 2 \n1019 1022 1020 2 \n1015 1016 1017 2 \n1015 1017 1018 2 \n835 837 838 2 \n835 836 837 2 \n523 524 525 2 \n523 526 524 2 \n535 536 537 2 \n535 537 538 2 \n515 516 517 2 \n515 518 516 2 \n531 532 533 2 \n531 533 534 2 \n527 529 530 2 \n527 528 529 2 \n103 104 105 0 \n103 106 104 0 \n10 9 11 0 \n10 11 12 0 \n99 100 101 0 \n99 102 100 0 \n1140 1141 1142 0 \n1140 1143 1141 0 \n1144 1145 1146 0 \n1144 1146 1147 0 \n1148 1149 1150 0 \n1148 1150 1151 0 \n1160 1161 1162 0 \n1160 1162 1163 0 \n1168 1169 1170 0 \n1168 1170 1171 0 \n1176 1177 1178 0 \n1176 1178 1179 0 \n1184 1185 1186 0 \n1184 1186 1187 0 \n1188 1189 1190 0 \n1188 1190 1191 0 \n1192 1193 1194 0 \n1192 1194 1195 0 \n1196 1197 1198 0 \n1196 1198 1199 0 \n1200 1201 1202 0 \n1200 1202 1203 0 \n1204 1200 1203 0 \n1204 1203 1205 0 \n49 38 35 0 \n49 50 38 0 \n1206 1207 1208 2 \n1206 1208 1209 2 \n1210 1211 1212 2 \n1210 1212 1213 2 \n1214 1215 1216 2 \n1217 1218 1219 2 \n1217 1219 1220 2 \n1221 1222 1223 2 \n1221 1223 1224 2 \n3 4 4 2 \n1225 1226 1227 2 \n1228 1231 1229 2 \n1228 1229 1230 2 \n1232 1233 1234 2 \n1232 1234 1235 2 \n5 6 6 2 \n1244 1245 1246 2 \n1240 1241 1242 2 \n1240 1242 1243 2 \n1236 1237 1238 2 \n1236 1238 1239 2 \n1255 1256 1257 2 \n1255 1257 1258 2 \n1251 1252 1253 2 \n1251 1253 1254 2 \n1247 1248 1249 2 \n1247 1249 1250 2 \n1259 1260 1261 2 \n1262 1263 1264 2 \n1262 1264 1265 2 \n1266 1267 1268 2 \n1266 1268 1269 2 \n1270 1271 1272 2 \n1180 1181 1182 2 \n1180 1182 1183 2 \n1172 1173 1174 2 \n1172 1174 1175 2 \n1273 1274 1275 2 \n1276 1277 1278 2 \n1276 1278 1279 2 \n1280 1281 1282 2 \n1280 1282 1283 2 \n1152 1153 1154 2 \n1152 1154 1155 2 \n1164 1165 1166 2 \n1164 1166 1167 2 \n1156 1157 1158 2 \n1156 1158 1159 2 \n1284 1285 1286 2 \n1287 1288 1289 2 \n1287 1289 1290 2 \n1291 1292 1293 2 \n1291 1293 1294 2 \n1295 1296 1297 2 \n1298 1299 1300 2 \n1298 1300 1301 2 \n1302 1303 1304 2 \n1302 1304 1305 2 \n1306 1307 1308 2 \n1309 1312 1310 2 \n1309 1310 1311 2 \n1313 1316 1314 2 \n1313 1314 1315 2 \n87 88 89 2 \n87 90 88 2 \n91 94 92 2 \n91 92 93 2 \n83 84 85 2 \n83 86 84 2 \n95 96 97 2 \n95 97 98 2 \n47 46 43 2 \n47 48 46 2 \n"
  },
  {
    "path": "data/models/plane.dymdl",
    "content": "DYMDLv1 192 64 2 2 1\nbrick001\nbrick002\n0.0 0.0 -2.0 0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5719782710075378 0.441872239112854 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5699204802513123 0.3323860466480255 0 1.0 0 0.0 0 0.0 0 0.0\n0.2123682200908661 0.0 -1.7286243438720703 0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5820232629776001 0.40807393193244934 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.6495254635810852 0.7569811344146729 -0.0713522732257843 0.09166642278432846 0.4745960235595703 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 0.6801354885101318 0.7275307178497314 -0.08996856212615967 0.5759083032608032 0.9659298658370972 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 0.6404004096984863 0.765190601348877 -0.06591998040676117 0.022350959479808807 0.968824028968811 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 2.0 0.32792139053344727 0.8122806549072266 0.4823145270347595 0.3789503574371338 0.21925367414951324 0 1.0 0 0.0 0 0.0 0 0.0\n0.6899517178535461 0.0 1.5308918952941895 0.32792139053344727 0.8122806549072266 0.4823145270347595 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 0.32792139053344727 0.8122806549072266 0.4823145270347595 0.4058072865009308 0.15567173063755035 0 1.0 0 0.0 0 0.0 0 0.0\n2.066875457763672 0.0 1.8436307907104492 0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.46079012751579285 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n0.6899517178535461 0.0 1.5308918952941895 -0.08020263910293579 0.9320963025093079 0.35316020250320435 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n2.066875457763672 0.0 1.8436307907104492 -0.08020263910293579 0.9320963025093079 0.35316020250320435 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.08020263910293579 0.9320963025093079 0.35316020250320435 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5661211609840393 0.16870616376399994 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5897995829582214 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5897995233535767 0.18009646236896515 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 0.46467483043670654 0.8666341304779053 0.1816156506538391 0.4058072865009308 0.15567173063755035 0 1.0 0 0.0 0 0.0 0 0.0\n0.6899517178535461 0.0 1.5308918952941895 0.46467483043670654 0.8666341304779053 0.1816156506538391 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 0.46467483043670654 0.8666341304779053 0.1816156506538391 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n0.2123682200908661 0.0 -1.7286243438720703 0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.448937326669693 0.4079761207103729 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.13739442825317383 -1.833680510520935 0.0 -0.9247108101844788 -0.3805963397026062 0.4401704668998718 0.38775280117988586 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -2.0 0.0 -0.7709586024284363 -0.6368602514266968 0.448937326669693 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n0.2123682200908661 0.0 -1.7286243438720703 0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.5549721717834473 0.5125557780265808 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.541559100151062 0.2870542109012604 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.541559100151062 0.2870542109012604 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.9976500868797302 -0.06811731308698654 0.5661211609840393 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n2.066875457763672 0.0 1.8436307907104492 0.08911404758691788 -0.9923703670501709 -0.08487197756767273 0.541559100151062 0.34930598735809326 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.9976500868797302 -0.06811731308698654 0.541559100151062 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.46079015731811523 0.14816278219223022 0 1.0 0 0.0 0 0.0 0 0.0\n0.6899517178535461 0.0 1.5308918952941895 -0.10245063900947571 0.886532187461853 0.4511246085166931 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 -0.10245063900947571 0.886532187461853 0.4511246085166931 0.3880477845668793 0.19627457857131958 0 1.0 0 0.0 0 0.0 0 0.0\n2.066875457763672 0.0 1.8436307907104492 -0.10245063900947571 0.886532187461853 0.4511246085166931 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 2.0 0.0 -0.8500015139579773 0.5267189741134644 0.5056122541427612 0.34930598735809326 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.8500015139579773 0.5267189741134644 0.493749737739563 0.36691027879714966 0 1.0 0 0.0 0 0.0 0 0.0\n0.6899517178535461 0.0 1.5308918952941895 0.33716848492622375 -0.8002258539199829 0.49589526653289795 0.5056122541427612 0.4486411213874817 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 0.0 0.0 0.999969482421875 0.1406300961971283 0.27182716131210327 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.14471876621246338 0.9894406199455261 0.14336399734020233 0.2139897346496582 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 0.29032257199287415 -0.9569078683853149 0.057119086384773254 0.10288871824741364 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 0.0 0.1979735642671585 -0.9801934957504272 0.02790761925280094 0.12156404554843903 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.14471876621246338 0.9894406199455261 0.14336399734020233 0.2139897346496582 0 1.0 0 0.0 0 0.0 0 0.0\n0.3635571300983429 0.11192654818296432 0.8394175171852112 -0.6936551928520203 0.7162999510765076 -0.07550279051065445 0.08156658709049225 0.1950477957725525 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 0.29032257199287415 -0.9569078683853149 0.057119086384773254 0.10288871824741364 0 1.0 0 0.0 0 0.0 0 0.0\n0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.3635571300983429 0.11192654818296432 0.8394175171852112 -0.6936551928520203 0.7162999510765076 -0.07550279051065445 0.08156658709049225 0.1950477957725525 0 1.0 0 0.0 0 0.0 0 0.0\n0.3635571300983429 0.11192654818296432 0.8394175171852112 0.0 1.0 -0.0 0.8416548371315002 0.19483327865600586 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.999969482421875 -0.0 0.9031996130943298 0.016386881470680237 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 1.0 -0.0 0.9031996130943298 0.3273632526397705 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.3993307948112488 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1615772396326065 0.1639711558818817 0.8538424968719482 -0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.9779636859893799 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.3993307948112488 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n0.11098125576972961 0.5722616314888 1.089372158050537 0.460463285446167 0.8848536610603333 -0.07046724110841751 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17454108595848083 0.22346490621566772 1.201465129852295 -0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.17454108595848083 0.22346490621566772 1.201465129852295 0.8923917412757874 0.2770470380783081 0.3561204969882965 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.1646122932434082 0.6305167078971863 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.31249547004699707 0.49016785621643066 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.3524409532546997 0.510452151298523 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n0.11098125576972961 0.5722616314888 1.089372158050537 0.460463285446167 0.8848536610603333 -0.07046724110841751 0.3993307948112488 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.9779636859893799 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11098125576972961 0.5722616314888 1.089372158050537 -0.460463285446167 0.8848536610603333 -0.07046724110841751 0.3993307948112488 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n0.1615772396326065 0.1639711558818817 0.8538424968719482 0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17253082990646362 0.08795484900474548 0.8336168527603149 -0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1615772396326065 0.1639711558818817 0.8538424968719482 -0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.17253082990646362 0.08795484900474548 0.8336168527603149 0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.1615772396326065 0.1639711558818817 0.8538424968719482 0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.17454108595848083 0.22346490621566772 1.201465129852295 0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.19624733924865723 0.09315037727355957 1.211909294128418 0.9851984977722168 0.1589709222316742 -0.0639362782239914 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -2.0 -0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5719782710075378 0.441872239112854 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2123682200908661 0.0 -1.7286243438720703 -0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5820232629776001 0.40807393193244934 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 -0.3553880453109741 0.8923612236976624 -0.2781151831150055 0.5699204802513123 0.3323860466480255 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.6495254635810852 0.7569811344146729 -0.0713522732257843 0.5997053384780884 0.4745960235595703 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 -0.6801354885101318 0.7275307178497314 -0.08996856212615967 0.11546345055103302 0.9659298658370972 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2123682200908661 0.0 -1.7286243438720703 -0.6881923675537109 0.7192602157592773 -0.0949736014008522 -0.1573365181684494 0.7140350341796875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 2.0 -0.32792139053344727 0.8122806549072266 0.4823145270347595 0.3789503574371338 0.21925367414951324 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 -0.32792139053344727 0.8122806549072266 0.4823145270347595 0.4058072865009308 0.15567173063755035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6899517178535461 0.0 1.5308918952941895 -0.32792139053344727 0.8122806549072266 0.4823145270347595 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n-2.066875457763672 0.0 1.8436307907104492 -0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.35267189145088196 0.8733481764793396 -0.33588671684265137 0.46079012751579285 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6899517178535461 0.0 1.5308918952941895 0.08020263910293579 0.9320963025093079 0.35316020250320435 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 0.08020263910293579 0.9320963025093079 0.35316020250320435 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n-2.066875457763672 0.0 1.8436307907104492 0.08020263910293579 0.9320963025093079 0.35316020250320435 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 -0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5661211609840393 0.16870616376399994 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5897995233535767 0.18009646236896515 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.5688344836235046 0.7640308737754822 -0.30439162254333496 0.5897995829582214 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 -0.46467483043670654 0.8666341304779053 0.1816156506538391 0.4058072865009308 0.15567173063755035 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 -0.46467483043670654 0.8666341304779053 0.1816156506538391 0.43947339057922363 0.15942440927028656 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6899517178535461 0.0 1.5308918952941895 -0.46467483043670654 0.8666341304779053 0.1816156506538391 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2123682200908661 0.0 -1.7286243438720703 -0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.448937326669693 0.4079761207103729 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -2.0 0.0 -0.7709586024284363 -0.6368602514266968 0.448937326669693 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.13739442825317383 -1.833680510520935 0.0 -0.9247108101844788 -0.3805963397026062 0.4401704668998718 0.38775280117988586 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2123682200908661 0.0 -1.7286243438720703 -0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.5549721717834473 0.5125557780265808 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.541559100151062 0.2870542109012604 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.9976500868797302 -0.06811731308698654 0.5661211609840393 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.541559100151062 0.2870542109012604 0 1.0 0 0.0 0 0.0 0 0.0\n-2.066875457763672 0.0 1.8436307907104492 -0.08911404758691788 -0.9923703670501709 -0.08487197756767273 0.541559100151062 0.34930598735809326 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.2933744192123413 -0.9551377892494202 -0.0398876927793026 0.46079015731811523 0.14816278219223022 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.9976500868797302 -0.06811731308698654 0.541559100151062 0.10165080428123474 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6899517178535461 0.0 1.5308918952941895 0.10245063900947571 0.886532187461853 0.4511246085166931 0.42093485593795776 0.2359992265701294 0 1.0 0 0.0 0 0.0 0 0.0\n-2.066875457763672 0.0 1.8436307907104492 0.10245063900947571 0.886532187461853 0.4511246085166931 0.46079015731811523 0.37654685974121094 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.10245063900947571 0.886532187461853 0.4511246085166931 0.3880477845668793 0.19627457857131958 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 2.0 0.0 -0.8500015139579773 0.5267189741134644 0.5056122541427612 0.34930598735809326 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6899517178535461 0.0 1.5308918952941895 -0.33716848492622375 -0.8002258539199829 0.49589526653289795 0.5056122541427612 0.4486411213874817 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.1748637557029724 1.7178194522857666 0.0 -0.8500015139579773 0.5267189741134644 0.493749737739563 0.36691027879714966 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.14471876621246338 0.9894406199455261 0.14336399734020233 0.2139897346496582 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 0.0 0.0 0.999969482421875 0.1406300961971283 0.27182716131210327 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.41978955268859863 1.2930455207824707 0.0 0.1979735642671585 -0.9801934957504272 0.02790761925280094 0.12156404554843903 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 0.29032257199287415 -0.9569078683853149 0.057119086384773254 0.10288871824741364 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.14471876621246338 0.9894406199455261 0.14336399734020233 0.2139897346496582 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3635571300983429 0.11192654818296432 0.8394175171852112 0.6936551928520203 0.7162999510765076 -0.07550279051065445 0.08156658709049225 0.1950477957725525 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 0.29032257199287415 -0.9569078683853149 0.057119086384773254 0.10288871824741364 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3635571300983429 0.11192654818296432 0.8394175171852112 0.6936551928520203 0.7162999510765076 -0.07550279051065445 0.08156658709049225 0.1950477957725525 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5017969012260437 0.24579858779907227 0.8394175171852112 0.8163701295852661 0.574633002281189 -0.05737479776144028 0.07139185070991516 0.22664135694503784 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3635571300983429 0.11192654818296432 0.8394175171852112 0.0 1.0 -0.0 0.8416548371315002 0.19483327865600586 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 1.2308577299118042 0.0 1.0 -0.0 0.9031996130943298 0.3273632526397705 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.11192654818296432 0.3123588263988495 0.0 0.999969482421875 -0.0 0.9031996130943298 0.016386881470680237 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.1646122932434082 0.6305167078971863 0.0 0.538560152053833 0.8425549864768982 0.015935510396957397 0.5099356174468994 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.3524409532546997 0.510452151298523 0.0 0.538560152053833 0.8425549864768982 0.9840644598007202 0.9920641183853149 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.3524409532546997 0.510452151298523 0.0 0.538560152053833 0.8425549864768982 0.015935540199279785 0.9920641183853149 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.12466680258512497 0.610232412815094 0.0 -0.4527420997619629 0.8915982246398926 0.2707086205482483 0.14956773817539215 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.1646122932434082 0.6305167078971863 0.0 -0.4527420997619629 0.8915982246398926 0.34770241379737854 0.02391555905342102 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.1646122932434082 0.6305167078971863 0.0 -0.4527420997619629 0.8915982246398926 0.34770241379737854 0.27521979808807373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.31249547004699707 0.49016785621643066 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.1646122932434082 0.6305167078971863 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.3524409532546997 0.510452151298523 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.3524409532546997 0.510452151298523 0.0 0.4527420997619629 -0.8915982246398926 0.34810900688171387 0.27522456645965576 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.31249547004699707 0.49016785621643066 0.0 0.4527420997619629 -0.8915982246398926 0.27111518383026123 0.1495724320411682 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.3524409532546997 0.510452151298523 0.0 0.4527420997619629 -0.8915982246398926 0.34810900688171387 0.023920297622680664 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17253082990646362 0.08795484900474548 0.8336168527603149 -0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19624733924865723 0.09315037727355957 1.211909294128418 -0.9851984977722168 0.1589709222316742 -0.0639362782239914 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17454108595848083 0.22346490621566772 1.201465129852295 -0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11098125576972961 0.5722616314888 1.089372158050537 -0.460463285446167 0.8848536610603333 -0.07046724110841751 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.4747193157672882 0.0 0.17187312245368958 0.6495254635810852 0.7569811344146729 -0.0713522732257843 0.09166642278432846 0.4745960235595703 0 1.0 0 0.0 0 0.0 0 0.0\n0.2123682200908661 0.0 -1.7286243438720703 0.6881923675537109 0.7192602157592773 -0.0949736014008522 0.8487082719802856 0.7140350341796875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 0.6801354885101318 0.7275307178497314 -0.08996856212615967 0.5759083032608032 0.9659298658370972 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.13739442825317383 -1.833680510520935 0.0 -0.9247108101844788 -0.3805963397026062 0.5660311579704285 0.5233492255210876 0 1.0 0 0.0 0 0.0 0 0.0\n0.2123682200908661 0.0 -1.7286243438720703 0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.5549721717834473 0.5125557780265808 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.3993307948112488 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n0.1615772396326065 0.1639711558818817 0.8538424968719482 0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.9779636859893799 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1615772396326065 0.1639711558818817 0.8538424968719482 -0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.9779636859893799 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n0.11098125576972961 0.5722616314888 1.089372158050537 0.460463285446167 0.8848536610603333 -0.07046724110841751 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.11098125576972961 0.5722616314888 1.089372158050537 -0.460463285446167 0.8848536610603333 -0.07046724110841751 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17454108595848083 0.22346490621566772 1.201465129852295 -0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.1646122932434082 0.6305167078971863 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.12466680258512497 0.610232412815094 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.31249547004699707 0.49016785621643066 0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n0.11098125576972961 0.5722616314888 1.089372158050537 0.460463285446167 0.8848536610603333 -0.07046724110841751 0.3993307948112488 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.9779636859893799 0.4682326316833496 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.9779636859893799 0.023303017020225525 0 1.0 0 0.0 0 0.0 0 0.0\n0.1615772396326065 0.1639711558818817 0.8538424968719482 0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.17253082990646362 0.08795484900474548 0.8336168527603149 0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17253082990646362 0.08795484900474548 0.8336168527603149 -0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.19624733924865723 0.09315037727355957 1.211909294128418 0.9851984977722168 0.1589709222316742 -0.0639362782239914 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.17253082990646362 0.08795484900474548 0.8336168527603149 0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.1724889725446701 0.16573193669319153 1.0263258218765259 0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n0.11098125576972961 0.5722616314888 1.089372158050537 0.460463285446167 0.8848536610603333 -0.07046724110841751 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0.17454108595848083 0.22346490621566772 1.201465129852295 0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4747193157672882 0.0 0.17187312245368958 -0.6495254635810852 0.7569811344146729 -0.0713522732257843 0.5997053384780884 0.4745960235595703 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.4094167947769165 0.3123588263988495 -0.6404004096984863 0.765190601348877 -0.06591998040676117 0.6690207719802856 0.968824028968811 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.2904391288757324 -1.0681514739990234 -0.6801354885101318 0.7275307178497314 -0.08996856212615967 0.11546345055103302 0.9659298658370972 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2123682200908661 0.0 -1.7286243438720703 -0.5695059299468994 -0.809167742729187 -0.14444410800933838 0.5549721717834473 0.5125557780265808 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.13739442825317383 -1.833680510520935 0.0 -0.9247108101844788 -0.3805963397026062 0.5660311579704285 0.5233492255210876 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.18801343441009521 0.11876698583364487 0.0 -0.99969482421875 -0.024353770539164543 0.5661211609840393 0.2911384105682373 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.1646122932434082 0.6305167078971863 0.0 0.538560152053833 0.8425549864768982 0.015935510396957397 0.5099356174468994 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.1646122932434082 0.6305167078971863 0.0 0.538560152053833 0.8425549864768982 0.9840644598007202 0.5099356174468994 0 1.0 0 0.0 0 0.0 0 0.0\n0.182428777217865 0.3524409532546997 0.510452151298523 0.0 0.538560152053833 0.8425549864768982 0.9840644598007202 0.9920641183853149 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.31249547004699707 0.49016785621643066 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.020358771085739136 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.12466680258512497 0.610232412815094 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.22654783725738525 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n-0.182428777217865 0.1646122932434082 0.6305167078971863 -0.2070070505142212 -0.5269020795822144 -0.8243049383163452 0.021336063742637634 0.1640915721654892 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1615772396326065 0.1639711558818817 0.8538424968719482 -0.5196081399917603 0.6817834973335266 -0.5148777961730957 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17253082990646362 0.08795484900474548 0.8336168527603149 -0.6330759525299072 0.28290659189224243 -0.7205114960670471 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1724889725446701 0.16573193669319153 1.0263258218765259 -0.8324838876724243 0.4540849030017853 -0.317331463098526 0.39494186639785767 0.02007424831390381 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19624733924865723 0.09315037727355957 1.211909294128418 -0.9851984977722168 0.1589709222316742 -0.0639362782239914 0.39494186639785767 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n-0.17454108595848083 0.22346490621566772 1.201465129852295 -0.8923917412757874 0.2770470380783081 0.3561204969882965 0.9791973829269409 0.4761120080947876 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n18 19 20 0\n21 22 23 0\n24 25 26 0\n27 28 29 0\n30 31 32 0\n33 34 35 0\n36 37 38 0\n39 40 41 0\n42 43 44 0\n45 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 1\n57 58 59 1\n60 61 62 1\n63 64 65 1\n66 67 68 1\n69 70 71 1\n72 73 74 1\n75 76 77 0\n78 79 80 0\n81 82 83 0\n84 85 86 0\n87 88 89 0\n90 91 92 0\n93 94 95 0\n96 97 98 0\n99 100 101 0\n102 103 104 0\n105 106 107 0\n108 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 1\n132 133 134 1\n135 136 137 1\n138 139 140 1\n141 142 143 1\n144 145 146 1\n147 148 149 0\n150 151 152 0\n153 154 155 1\n156 157 158 1\n159 160 161 1\n162 163 164 1\n165 166 167 1\n168 169 170 1\n171 172 173 1\n174 175 176 0\n177 178 179 0\n180 181 182 1\n183 184 185 1\n186 187 188 1\n189 190 191 1\nRoot -1 0.0 0.0 -0.0 0.0 1.0 -0.0 0.0\nSeat -1 0.0 0.2033674120903015 0.8016459941864014 0.0 1.2033674716949463 0.8016459941864014 0.0\nRoot\n"
  },
  {
    "path": "data/models/sphere.dymdl",
    "content": "DYMDLv1 1984 960 1 1 0\ndev/white\n6.356849979738399e-08 -0.38268327713012695 -0.9238790273666382 0.0 -0.3805353045463562 -0.9247413277626038 0.75 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.19509020447731018 -0.9807853102684021 0.0 -0.19391460716724396 -0.9809869527816772 0.75 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134178757667542 -0.19509020447731018 -0.9619397521018982 0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.71875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 -0.9061274528503418 0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.71875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8314695954322815 -0.5555702447891235 0.0 0.8286385536193848 -0.5597705245018005 0.75 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9238795042037964 -0.3826834559440613 0.0 0.921689510345459 -0.3878597319126129 0.75 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790957212448 0.9238795042037964 -0.3753302991390228 0.07565538585186005 0.921689510345459 -0.3804132342338562 0.71875 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838644951581955 0.8314695954322815 -0.5448951125144958 0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.71875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n2.7218476361667854e-07 -0.5555701851844788 -0.8314687609672546 0.0 -0.5527512431144714 -0.8333384394645691 0.7499998807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 -0.9238790273666382 0.0 -0.3805353045463562 -0.9247413277626038 0.75 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 -0.9061274528503418 0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.71875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 -0.5555701851844788 -0.8154931664466858 0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.71875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.7071067690849304 -0.7071067690849304 0.0 0.7040314674377441 -0.7101352214813232 0.75 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8314695954322815 -0.5555702447891235 0.0 0.8286385536193848 -0.5597705245018005 0.75 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838644951581955 0.8314695954322815 -0.5448951125144958 0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.71875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 0.7071067690849304 -0.6935198903083801 0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.71875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n1.529754740658973e-07 -0.7071067690849304 -0.707106351852417 0.0 -0.7040314674377441 -0.7101352214813232 0.7499998807907104 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n2.7218476361667854e-07 -0.5555701851844788 -0.8314687609672546 0.0 -0.5527512431144714 -0.8333384394645691 0.7499998807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 -0.5555701851844788 -0.8154931664466858 0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.71875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 -0.7071067690849304 -0.6935198903083801 0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.71875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5555701851844788 -0.8314696550369263 0.0 0.5527512431144714 -0.8333384394645691 0.75 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.7071067690849304 -0.7071067690849304 0.0 0.7040314674377441 -0.7101352214813232 0.75 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 0.7071067690849304 -0.6935198903083801 0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.71875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 0.5555701851844788 -0.8154931664466858 0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.71875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.8314696550369263 -0.5555701851844788 0.0 -0.8286385536193848 -0.5597705245018005 0.75 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n1.529754740658973e-07 -0.7071067690849304 -0.707106351852417 0.0 -0.7040314674377441 -0.7101352214813232 0.7499998807907104 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 -0.7071067690849304 -0.6935198903083801 0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.71875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838643461465836 -0.8314696550369263 -0.5448950529098511 0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.71875 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3826834261417389 -0.9238795042037964 0.0 0.3805353045463562 -0.9247413277626038 0.75 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5555701851844788 -0.8314696550369263 0.0 0.5527512431144714 -0.8333384394645691 0.75 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 0.5555701851844788 -0.8154931664466858 0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.71875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 0.3826834261417389 -0.906127393245697 0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.71875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n7.846966099123165e-08 -0.9238796234130859 -0.3826829195022583 0.0 -0.921689510345459 -0.3878597319126129 0.7499998807907104 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.8314696550369263 -0.5555701851844788 0.0 -0.8286385536193848 -0.5597705245018005 0.75 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838643461465836 -0.8314696550369263 -0.5448950529098511 0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.71875 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578723192215 -0.9238796234130859 -0.3753301203250885 0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.71875 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.19509035348892212 -0.9807852506637573 0.0 0.19391460716724396 -0.9809869527816772 0.75 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3826834261417389 -0.9238795042037964 0.0 0.3805353045463562 -0.9247413277626038 0.75 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 0.3826834261417389 -0.906127393245697 0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.71875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134177267551422 0.19509035348892212 -0.9619396924972534 0.191381573677063 0.19391460716724396 -0.9621570706367493 0.71875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n1.513972591737911e-08 -0.9807853102684021 -0.1950899213552475 0.0 -0.9795831441879272 -0.20096439123153687 0.75 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n7.846966099123165e-08 -0.9238796234130859 -0.3826829195022583 0.0 -0.921689510345459 -0.3878597319126129 0.7499998807907104 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578723192215 -0.9238796234130859 -0.3753301203250885 0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.71875 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.038060251623392105 -0.9807853102684021 -0.19134147465229034 0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 7.549790126404332e-08 -1.0 0.0 0.0 -1.0 0.75 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.19509035348892212 -0.9807852506637573 0.0 0.19391460716724396 -0.9809869527816772 0.75 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134177267551422 0.19509035348892212 -0.9619396924972534 0.191381573677063 0.19391460716724396 -0.9621570706367493 0.71875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903832912445 7.549790126404332e-08 -0.9807852506637573 0.19507431983947754 0.0 -0.9807733297348022 0.71875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9807852506637573 -0.19509032368659973 0.0 0.9795831441879272 -0.20096439123153687 0.75 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.734375 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806029632687569 0.9807852506637573 -0.19134171307086945 0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.7343748807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n1.513972591737911e-08 -0.9807853102684021 -0.1950899213552475 0.0 -0.9795831441879272 -0.20096439123153687 0.75 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.038060251623392105 -0.9807853102684021 -0.19134147465229034 0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.19509020447731018 -0.9807853102684021 0.0 -0.19391460716724396 -0.9809869527816772 0.75 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 7.549790126404332e-08 -1.0 0.0 0.0 -1.0 0.75 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903832912445 7.549790126404332e-08 -0.9807852506637573 0.19507431983947754 0.0 -0.9807733297348022 0.71875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134178757667542 -0.19509020447731018 -0.9619397521018982 0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.71875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9238795042037964 -0.3826834559440613 0.0 0.921689510345459 -0.3878597319126129 0.75 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9807852506637573 -0.19509032368659973 0.0 0.9795831441879272 -0.20096439123153687 0.75 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806029632687569 0.9807852506637573 -0.19134171307086945 0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790957212448 0.9238795042037964 -0.3753302991390228 0.07565538585186005 0.921689510345459 -0.3804132342338562 0.71875 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.7031248807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.038060251623392105 -0.9807853102684021 -0.19134147465229034 0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578648686409 -0.9807853102684021 -0.1802397072315216 0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134178757667542 -0.19509020447731018 -0.9619397521018982 0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.71875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903832912445 7.549790126404332e-08 -0.9807852506637573 0.19507431983947754 0.0 -0.9807733297348022 0.71875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 7.549790126404332e-08 -0.9238794445991516 0.382671594619751 0.0 -0.9238563179969788 0.6875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.19509020447731018 -0.9061273336410522 0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.6875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790957212448 0.9238795042037964 -0.3753302991390228 0.07565538585186005 0.921689510345459 -0.3804132342338562 0.71875 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806029632687569 0.9807852506637573 -0.19134171307086945 0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465796172618866 0.9807852506637573 -0.1802399456501007 0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644673466682434 0.9238795042037964 -0.3535534143447876 0.14841151237487793 0.921689510345459 -0.3583483397960663 0.6874998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 -0.9061274528503418 0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.71875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134178757667542 -0.19509020447731018 -0.9619397521018982 0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.71875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.19509020447731018 -0.9061273336410522 0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.6875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355350375175476 -0.38268327713012695 -0.8535533547401428 0.35389262437820435 -0.3805353045463562 -0.8543656468391418 0.6875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838644951581955 0.8314695954322815 -0.5448951125144958 0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.71875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790957212448 0.9238795042037964 -0.3753302991390228 0.07565538585186005 0.921689510345459 -0.3804132342338562 0.71875 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644673466682434 0.9238795042037964 -0.3535534143447876 0.14841151237487793 0.921689510345459 -0.3583483397960663 0.6874998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.8314695954322815 -0.513279914855957 0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 -0.5555701851844788 -0.8154931664466858 0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.71875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 -0.9061274528503418 0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.71875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355350375175476 -0.38268327713012695 -0.8535533547401428 0.35389262437820435 -0.3805353045463562 -0.8543656468391418 0.6875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 -0.5555701851844788 -0.7681776881217957 0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.6875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 0.7071067690849304 -0.6935198903083801 0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.71875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838644951581955 0.8314695954322815 -0.5448951125144958 0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.71875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.8314695954322815 -0.513279914855957 0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 0.7071067690849304 -0.6532813906669617 0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 -0.7071067690849304 -0.6935198903083801 0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.71875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 -0.5555701851844788 -0.8154931664466858 0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.71875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 -0.5555701851844788 -0.7681776881217957 0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.6875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.7071067690849304 -0.6532813906669617 0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 0.5555701851844788 -0.8154931664466858 0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.71875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 0.7071067690849304 -0.6935198903083801 0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.71875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 0.7071067690849304 -0.6532813906669617 0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 0.5555701851844788 -0.7681776881217957 0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.6875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838643461465836 -0.8314696550369263 -0.5448950529098511 0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.71875 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794974982738495 -0.7071067690849304 -0.6935198903083801 0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.71875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.7071067690849304 -0.6532813906669617 0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.8314696550369263 -0.5132798552513123 0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 0.3826834261417389 -0.906127393245697 0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.71875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221174597740173 0.5555701851844788 -0.8154931664466858 0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.71875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 0.5555701851844788 -0.7681776881217957 0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.6875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 -0.853553295135498 0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.6875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578723192215 -0.9238796234130859 -0.3753301203250885 0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.71875 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838643461465836 -0.8314696550369263 -0.5448950529098511 0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.71875 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.8314696550369263 -0.5132798552513123 0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644667506217957 -0.9238796234130859 -0.35355323553085327 0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.6874998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134177267551422 0.19509035348892212 -0.9619396924972534 0.191381573677063 0.19391460716724396 -0.9621570706367493 0.71875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 0.3826834261417389 -0.906127393245697 0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.71875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 -0.853553295135498 0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.6875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 0.19509035348892212 -0.9061273336410522 0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.6875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.038060251623392105 -0.9807853102684021 -0.19134147465229034 0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578723192215 -0.9238796234130859 -0.3753301203250885 0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.71875 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644667506217957 -0.9238796234130859 -0.35355323553085327 0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.6874998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578648686409 -0.9807853102684021 -0.1802397072315216 0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903832912445 7.549790126404332e-08 -0.9807852506637573 0.19507431983947754 0.0 -0.9807733297348022 0.71875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134177267551422 0.19509035348892212 -0.9619396924972534 0.191381573677063 0.19391460716724396 -0.9621570706367493 0.71875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 0.19509035348892212 -0.9061273336410522 0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.6875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 7.549790126404332e-08 -0.9238794445991516 0.382671594619751 0.0 -0.9238563179969788 0.6875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806029632687569 0.9807852506637573 -0.19134171307086945 0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.7187498807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.7031248807907104 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465796172618866 0.9807852506637573 -0.1802399456501007 0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.8314696550369263 -0.5132798552513123 0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.7071067690849304 -0.6532813906669617 0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.7071067690849304 -0.5879377126693726 0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584210395813 -0.8314696550369263 -0.46193963289260864 0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 -0.853553295135498 0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.6875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 0.5555701851844788 -0.7681776881217957 0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.6875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.5555701851844788 -0.6913416385650635 0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.65625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 -0.7681776285171509 0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.65625 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644667506217957 -0.9238796234130859 -0.35355323553085327 0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.6874998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.8314696550369263 -0.5132798552513123 0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584210395813 -0.8314696550369263 -0.46193963289260864 0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.9238796234130859 -0.31818947196006775 0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.6562498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 0.19509035348892212 -0.9061273336410522 0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.6875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 -0.853553295135498 0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.6875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 -0.7681776285171509 0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.65625 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 0.19509035348892212 -0.8154929876327515 0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.65625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578648686409 -0.9807853102684021 -0.1802397072315216 0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644667506217957 -0.9238796234130859 -0.35355323553085327 0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.6874998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.9238796234130859 -0.31818947196006775 0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.6562498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838641971349716 -0.9807853102684021 -0.16221143305301666 0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.6562498807907104 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 7.549790126404332e-08 -0.9238794445991516 0.382671594619751 0.0 -0.9238563179969788 0.6875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 0.19509035348892212 -0.9061273336410522 0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.6875 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 0.19509035348892212 -0.8154929876327515 0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.65625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704236030579 7.549790126404332e-08 -0.8314694762229919 0.5555589199066162 0.0 -0.8314462900161743 0.6562498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465796172618866 0.9807852506637573 -0.1802399456501007 0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.6718747615814209 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.1083865687251091 0.9807852506637573 -0.16221162676811218 0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.6562497615814209 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.6718747615814209 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578648686409 -0.9807853102684021 -0.1802397072315216 0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838641971349716 -0.9807853102684021 -0.16221143305301666 0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.6562498807907104 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.19509020447731018 -0.9061273336410522 0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.6875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 7.549790126404332e-08 -0.9238794445991516 0.382671594619751 0.0 -0.9238563179969788 0.6875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704236030579 7.549790126404332e-08 -0.8314694762229919 0.5555589199066162 0.0 -0.8314462900161743 0.6562498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.19509020447731018 -0.8154929876327515 0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.65625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644673466682434 0.9238795042037964 -0.3535534143447876 0.14841151237487793 0.921689510345459 -0.3583483397960663 0.6874998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465796172618866 0.9807852506637573 -0.1802399456501007 0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.6874998807907104 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.1083865687251091 0.9807852506637573 -0.16221162676811218 0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.6562497615814209 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126077115535736 0.9238795042037964 -0.3181896209716797 0.2154911905527115 0.921689510345459 -0.32248908281326294 0.6562498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355350375175476 -0.38268327713012695 -0.8535533547401428 0.35389262437820435 -0.3805353045463562 -0.8543656468391418 0.6875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.19509020447731018 -0.9061273336410522 0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.6875 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.19509020447731018 -0.8154929876327515 0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.65625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 -0.7681776881217957 0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.65625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.8314695954322815 -0.513279914855957 0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644673466682434 0.9238795042037964 -0.3535534143447876 0.14841151237487793 0.921689510345459 -0.3583483397960663 0.6874998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126077115535736 0.9238795042037964 -0.3181896209716797 0.2154911905527115 0.921689510345459 -0.32248908281326294 0.6562498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584508419037 0.8314695954322815 -0.4619396924972534 0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 -0.5555701851844788 -0.7681776881217957 0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.6875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355350375175476 -0.38268327713012695 -0.8535533547401428 0.35389262437820435 -0.3805353045463562 -0.8543656468391418 0.6875 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 -0.7681776881217957 0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.65625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.5555701851844788 -0.6913416385650635 0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.65625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 0.7071067690849304 -0.6532813906669617 0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.8314695954322815 -0.513279914855957 0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.6874998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584508419037 0.8314695954322815 -0.4619396924972534 0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 0.7071067690849304 -0.5879377126693726 0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.7071067690849304 -0.6532813906669617 0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 -0.5555701851844788 -0.7681776881217957 0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.6875 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.5555701851844788 -0.6913416385650635 0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.65625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.7071067690849304 -0.5879377126693726 0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181897699832916 0.5555701851844788 -0.7681776881217957 0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.6875 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 0.7071067690849304 -0.6532813906669617 0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.6874998807907104 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 0.7071067690849304 -0.5879377126693726 0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.5555701851844788 -0.6913416385650635 0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.65625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126077115535736 0.9238795042037964 -0.3181896209716797 0.2154911905527115 0.921689510345459 -0.32248908281326294 0.6562498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.1083865687251091 0.9807852506637573 -0.16221162676811218 0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.6562497615814209 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794992864131927 0.9807852506637573 -0.137949600815773 0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059829235076904 0.9238795042037964 -0.2705979645252228 0.27426984906196594 0.921689510345459 -0.27426984906196594 0.6249998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 -0.7681776881217957 0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.65625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.19509020447731018 -0.8154929876327515 0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.65625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.19509020447731018 -0.6935197114944458 0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 -0.6532813906669617 0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584508419037 0.8314695954322815 -0.4619396924972534 0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126077115535736 0.9238795042037964 -0.3181896209716797 0.2154911905527115 0.921689510345459 -0.32248908281326294 0.6562498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059829235076904 0.9238795042037964 -0.2705979645252228 0.27426984906196594 0.921689510345459 -0.27426984906196594 0.6249998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476870059967 0.8314695954322815 -0.39284735918045044 0.395794540643692 0.8286385536193848 -0.395794540643692 0.6249998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.5555701851844788 -0.6913416385650635 0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.65625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 -0.7681776881217957 0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.65625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 -0.6532813906669617 0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.5555701851844788 -0.5879376530647278 0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 0.7071067690849304 -0.5879377126693726 0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584508419037 0.8314695954322815 -0.4619396924972534 0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476870059967 0.8314695954322815 -0.39284735918045044 0.395794540643692 0.8286385536193848 -0.395794540643692 0.6249998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 0.7071067690849304 -0.49999988079071045 0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.7071067690849304 -0.5879377126693726 0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.5555701851844788 -0.6913416385650635 0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.65625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.5555701851844788 -0.5879376530647278 0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 -0.7071067690849304 -0.49999988079071045 0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.5555701851844788 -0.6913416385650635 0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.65625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 0.7071067690849304 -0.5879377126693726 0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 0.7071067690849304 -0.49999988079071045 0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.5555701851844788 -0.5879376530647278 0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584210395813 -0.8314696550369263 -0.46193963289260864 0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.7071067690849304 -0.5879377126693726 0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.6562498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 -0.7071067690849304 -0.49999988079071045 0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.8314696550369263 -0.39284729957580566 0.395794540643692 -0.8286385536193848 -0.395794540643692 0.6249998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 -0.7681776285171509 0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.65625 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.5555701851844788 -0.6913416385650635 0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.65625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.5555701851844788 -0.5879376530647278 0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 -0.6532813310623169 0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.6249998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.9238796234130859 -0.31818947196006775 0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.6562498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086584210395813 -0.8314696550369263 -0.46193963289260864 0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.6562498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.8314696550369263 -0.39284729957580566 0.395794540643692 -0.8286385536193848 -0.395794540643692 0.6249998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.9238796234130859 -0.2705978751182556 0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.6249998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 0.19509035348892212 -0.8154929876327515 0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.65625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 -0.7681776285171509 0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.65625 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 -0.6532813310623169 0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.6249998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.19509035348892212 -0.6935197114944458 0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838641971349716 -0.9807853102684021 -0.16221143305301666 0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.6562498807907104 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260762214660645 -0.9238796234130859 -0.31818947196006775 0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.6562498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.9238796234130859 -0.2705978751182556 0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.6249998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794973492622375 -0.9807853102684021 -0.13794943690299988 0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704236030579 7.549790126404332e-08 -0.8314694762229919 0.5555589199066162 0.0 -0.8314462900161743 0.6562498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 0.19509035348892212 -0.8154929876327515 0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.65625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.19509035348892212 -0.6935197114944458 0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071070075035095 7.549790126404332e-08 -0.7071065902709961 0.7070833444595337 0.0 -0.7070833444595337 0.6249998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.1083865687251091 0.9807852506637573 -0.16221162676811218 0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.6562497615814209 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.6406247615814209 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794992864131927 0.9807852506637573 -0.137949600815773 0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.6406247615814209 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838641971349716 -0.9807853102684021 -0.16221143305301666 0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.6562498807907104 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794973492622375 -0.9807853102684021 -0.13794943690299988 0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.19509020447731018 -0.8154929876327515 0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.65625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704236030579 7.549790126404332e-08 -0.8314694762229919 0.5555589199066162 0.0 -0.8314462900161743 0.6562498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071070075035095 7.549790126404332e-08 -0.7071065902709961 0.7070833444595337 0.0 -0.7070833444595337 0.6249998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.19509020447731018 -0.6935197114944458 0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 -0.6532813310623169 0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.6249998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.5555701851844788 -0.5879376530647278 0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 0.5555701851844788 -0.46193957328796387 0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 0.3826834261417389 -0.5132797956466675 0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.5937498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.9238796234130859 -0.2705978751182556 0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.6249998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.8314696550369263 -0.39284729957580566 0.395794540643692 -0.8286385536193848 -0.395794540643692 0.6249998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.8314696550369263 -0.30865806341171265 0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.318189799785614 -0.9238796234130859 -0.21260732412338257 0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.5937498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.19509035348892212 -0.6935197114944458 0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 -0.6532813310623169 0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.6249998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 0.3826834261417389 -0.5132797956466675 0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.5937498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.19509035348892212 -0.544894814491272 0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794973492622375 -0.9807853102684021 -0.13794943690299988 0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.2705981731414795 -0.9238796234130859 -0.2705978751182556 0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.6249998807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.318189799785614 -0.9238796234130859 -0.21260732412338257 0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.5937498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221173107624054 -0.9807853102684021 -0.10838610678911209 0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071070075035095 7.549790126404332e-08 -0.7071065902709961 0.7070833444595337 0.0 -0.7070833444595337 0.6249998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.19509035348892212 -0.6935197114944458 0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.19509035348892212 -0.544894814491272 0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314698338508606 7.549790126404332e-08 -0.5555700063705444 0.8314462900161743 0.0 -0.5555589199066162 0.5937498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794992864131927 0.9807852506637573 -0.137949600815773 0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.6093746423721313 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221193969249725 0.9807852506637573 -0.10838623344898224 0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.6093746423721313 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794973492622375 -0.9807853102684021 -0.13794943690299988 0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221173107624054 -0.9807853102684021 -0.10838610678911209 0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.19509020447731018 -0.6935197114944458 0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071070075035095 7.549790126404332e-08 -0.7071065902709961 0.7070833444595337 0.0 -0.7070833444595337 0.6249998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314698338508606 7.549790126404332e-08 -0.5555700063705444 0.8314462900161743 0.0 -0.5555589199066162 0.5937498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.19509020447731018 -0.544894814491272 0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059829235076904 0.9238795042037964 -0.2705979645252228 0.27426984906196594 0.921689510345459 -0.27426984906196594 0.6249998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794992864131927 0.9807852506637573 -0.137949600815773 0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.6249997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221193969249725 0.9807852506637573 -0.10838623344898224 0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818991899490356 0.9238795042037964 -0.21260739862918854 0.32248908281326294 0.921689510345459 -0.2154911905527115 0.5937498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 -0.6532813906669617 0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.19509020447731018 -0.6935197114944458 0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.6249998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.19509020447731018 -0.544894814491272 0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 -0.38268327713012695 -0.5132798552513123 0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.59375 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476870059967 0.8314695954322815 -0.39284735918045044 0.395794540643692 0.8286385536193848 -0.395794540643692 0.6249998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059829235076904 0.9238795042037964 -0.2705979645252228 0.27426984906196594 0.921689510345459 -0.27426984906196594 0.6249998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818991899490356 0.9238795042037964 -0.21260739862918854 0.32248908281326294 0.921689510345459 -0.2154911905527115 0.5937498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399905204773 0.8314695954322815 -0.3086581230163574 0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.5555701851844788 -0.5879376530647278 0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 -0.6532813906669617 0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.625 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 -0.38268327713012695 -0.5132798552513123 0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.59375 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 -0.5555701851844788 -0.46193957328796387 0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 0.7071067690849304 -0.49999988079071045 0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476870059967 0.8314695954322815 -0.39284735918045044 0.395794540643692 0.8286385536193848 -0.395794540643692 0.6249998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399905204773 0.8314695954322815 -0.3086581230163574 0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.7071067690849304 -0.39284729957580566 0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 -0.7071067690849304 -0.49999988079071045 0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.5555701851844788 -0.5879376530647278 0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 -0.5555701851844788 -0.46193957328796387 0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.7071067690849304 -0.39284729957580566 0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.5555701851844788 -0.5879376530647278 0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.6249998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 0.7071067690849304 -0.49999988079071045 0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.7071067690849304 -0.39284729957580566 0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 0.5555701851844788 -0.46193957328796387 0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928476572036743 -0.8314696550369263 -0.39284729957580566 0.395794540643692 -0.8286385536193848 -0.395794540643692 0.6249998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000001788139343 -0.7071067690849304 -0.49999988079071045 0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.6249998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.7071067690849304 -0.39284729957580566 0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.8314696550369263 -0.30865806341171265 0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 -0.38268327713012695 -0.5132798552513123 0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.59375 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.19509020447731018 -0.544894814491272 0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 -0.19509020447731018 -0.3753299117088318 0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 -0.35355323553085327 0.8543656468391418 -0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399905204773 0.8314695954322815 -0.3086581230163574 0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818991899490356 0.9238795042037964 -0.21260739862918854 0.32248908281326294 0.921689510345459 -0.2154911905527115 0.5937498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536825656891 0.9238795042037964 -0.14644642174243927 0.3583483397960663 0.921689510345459 -0.14841151237487793 0.5624998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132802128791809 0.8314695954322815 -0.21260732412338257 0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 -0.5555701851844788 -0.46193957328796387 0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 -0.38268327713012695 -0.5132798552513123 0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.59375 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 -0.35355323553085327 0.8543656468391418 -0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 -0.5555701851844788 -0.3181893825531006 0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.7071067690849304 -0.39284729957580566 0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399905204773 0.8314695954322815 -0.3086581230163574 0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132802128791809 0.8314695954322815 -0.21260732412338257 0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 0.7071067690849304 -0.27059781551361084 0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.7071067690849304 -0.39284729957580566 0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 -0.5555701851844788 -0.46193957328796387 0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 -0.5555701851844788 -0.3181893825531006 0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 -0.7071067690849304 -0.27059781551361084 0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 0.5555701851844788 -0.46193957328796387 0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 0.7071067690849304 -0.39284729957580566 0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 0.7071067690849304 -0.27059781551361084 0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 0.5555701851844788 -0.3181893825531006 0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.8314696550369263 -0.30865806341171265 0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879380106925964 -0.7071067690849304 -0.39284729957580566 0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.5937498807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 -0.7071067690849304 -0.27059781551361084 0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 -0.8314696550369263 -0.2126072645187378 0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 0.3826834261417389 -0.5132797956466675 0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.5937498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6913419365882874 0.5555701851844788 -0.46193957328796387 0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.5937498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 0.5555701851844788 -0.3181893825531006 0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 -0.3535531759262085 0.8543656468391418 0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.318189799785614 -0.9238796234130859 -0.21260732412338257 0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.5937498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 -0.8314696550369263 -0.30865806341171265 0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.5937498807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 -0.8314696550369263 -0.2126072645187378 0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355353355407715 -0.9238796234130859 -0.1464463770389557 0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.5624998807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.19509035348892212 -0.544894814491272 0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779265403748 0.3826834261417389 -0.5132797956466675 0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.5937498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 -0.3535531759262085 0.8543656468391418 0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 0.19509035348892212 -0.3753299117088318 0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221173107624054 -0.9807853102684021 -0.10838610678911209 0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.318189799785614 -0.9238796234130859 -0.21260732412338257 0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.5937498807907104 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355353355407715 -0.9238796234130859 -0.1464463770389557 0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.5624998807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 -0.9807853102684021 -0.07465755194425583 0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314698338508606 7.549790126404332e-08 -0.5555700063705444 0.8314462900161743 0.0 -0.5555589199066162 0.5937498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.19509035348892212 -0.544894814491272 0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 0.19509035348892212 -0.3753299117088318 0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238797426223755 7.549790126404332e-08 -0.3826831579208374 0.9238563179969788 0.0 -0.382671594619751 0.5624998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221193969249725 0.9807852506637573 -0.10838623344898224 0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.5781245231628418 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024024367332458 0.9807852506637573 -0.0746576264500618 0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.5781246423721313 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221173107624054 -0.9807853102684021 -0.10838610678911209 0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 -0.9807853102684021 -0.07465755194425583 0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.19509020447731018 -0.544894814491272 0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.5937498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314698338508606 7.549790126404332e-08 -0.5555700063705444 0.8314462900161743 0.0 -0.5555589199066162 0.5937498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238797426223755 7.549790126404332e-08 -0.3826831579208374 0.9238563179969788 0.0 -0.382671594619751 0.5624998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 -0.19509020447731018 -0.3753299117088318 0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818991899490356 0.9238795042037964 -0.21260739862918854 0.32248908281326294 0.921689510345459 -0.2154911905527115 0.5937498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221193969249725 0.9807852506637573 -0.10838623344898224 0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.5937497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024024367332458 0.9807852506637573 -0.0746576264500618 0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536825656891 0.9238795042037964 -0.14644642174243927 0.3583483397960663 0.921689510345459 -0.14841151237487793 0.5624998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355353355407715 -0.9238796234130859 -0.1464463770389557 0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.5624998807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 -0.8314696550369263 -0.2126072645187378 0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952913284302 -0.8314696550369263 -0.1083860695362091 0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753304183483124 -0.9238796234130859 -0.07465755939483643 0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.5312498807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 0.19509035348892212 -0.3753299117088318 0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 -0.3535531759262085 0.8543656468391418 0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 -0.1802397072315216 0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 0.19509035348892212 -0.1913413405418396 0.9621570706367493 0.19391460716724396 -0.191381573677063 0.5312498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 -0.9807853102684021 -0.07465755194425583 0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.35355353355407715 -0.9238796234130859 -0.1464463770389557 0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.5624998807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753304183483124 -0.9238796234130859 -0.07465755939483643 0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.5312498807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 -0.038059934973716736 0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238797426223755 7.549790126404332e-08 -0.3826831579208374 0.9238563179969788 0.0 -0.382671594619751 0.5624998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 0.19509035348892212 -0.3753299117088318 0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 0.19509035348892212 -0.1913413405418396 0.9621570706367493 0.19391460716724396 -0.191381573677063 0.5312498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 -0.19508999586105347 0.9807733297348022 0.0 -0.19507431983947754 0.5312498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024024367332458 0.9807852506637573 -0.0746576264500618 0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.5468745231628418 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134201109409332 0.9807852506637573 -0.038059964776039124 0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.5468746423721313 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024000525474548 -0.9807853102684021 -0.07465755194425583 0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 -0.038059934973716736 0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 -0.19509020447731018 -0.3753299117088318 0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238797426223755 7.549790126404332e-08 -0.3826831579208374 0.9238563179969788 0.0 -0.382671594619751 0.5624998807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 -0.19508999586105347 0.9807733297348022 0.0 -0.19507431983947754 0.5312498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 -0.19509020447731018 -0.1913413405418396 0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.5312498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536825656891 0.9238795042037964 -0.14644642174243927 0.3583483397960663 0.921689510345459 -0.14841151237487793 0.5624998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024024367332458 0.9807852506637573 -0.0746576264500618 0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.5624997615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134201109409332 0.9807852506637573 -0.038059964776039124 0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753305673599243 0.9238795042037964 -0.07465757429599762 0.3804132342338562 0.921689510345459 -0.07565538585186005 0.5312498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 -0.35355323553085327 0.8543656468391418 -0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275124549866 -0.19509020447731018 -0.3753299117088318 0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.5624998807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 -0.19509020447731018 -0.1913413405418396 0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.5312498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 -0.18023976683616638 0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132802128791809 0.8314695954322815 -0.21260732412338257 0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536825656891 0.9238795042037964 -0.14644642174243927 0.3583483397960663 0.921689510345459 -0.14841151237487793 0.5624998807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753305673599243 0.9238795042037964 -0.07465757429599762 0.3804132342338562 0.921689510345459 -0.07565538585186005 0.5312498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 -0.10838611423969269 0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 -0.5555701851844788 -0.3181893825531006 0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 -0.35355323553085327 0.8543656468391418 -0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 -0.18023976683616638 0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 -0.5555701851844788 -0.1622113734483719 0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 0.7071067690849304 -0.27059781551361084 0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132802128791809 0.8314695954322815 -0.21260732412338257 0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 -0.10838611423969269 0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 0.7071067690849304 -0.13794942200183868 0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 -0.7071067690849304 -0.27059781551361084 0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 -0.5555701851844788 -0.3181893825531006 0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 -0.5555701851844788 -0.1622113734483719 0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 -0.7071067690849304 -0.13794942200183868 0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 0.5555701851844788 -0.3181893825531006 0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 0.7071067690849304 -0.27059781551361084 0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 0.7071067690849304 -0.13794942200183868 0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 0.5555701851844788 -0.1622113734483719 0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 -0.8314696550369263 -0.2126072645187378 0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.5624998807907104 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816886901855 -0.7071067690849304 -0.27059781551361084 0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.5624998807907104 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 -0.7071067690849304 -0.13794942200183868 0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952913284302 -0.8314696550369263 -0.1083860695362091 0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 -0.3535531759262085 0.8543656468391418 0.3805353045463562 -0.35386210680007935 0.5624998807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681779861450195 0.5555701851844788 -0.3181893825531006 0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.5624998807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 0.5555701851844788 -0.1622113734483719 0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 -0.1802397072315216 0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 -0.10838611423969269 0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753305673599243 0.9238795042037964 -0.07465757429599762 0.3804132342338562 0.921689510345459 -0.07565538585186005 0.5312498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826836943626404 0.9238795042037964 3.191853465978056e-07 0.3878597319126129 0.921689510345459 -0.0 0.49999985098838806 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704832077026 0.8314695954322815 3.117347660008818e-07 0.5597705245018005 0.8286385536193848 -0.0 0.49999988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 -0.5555701851844788 -0.1622113734483719 0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 -0.18023976683616638 0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 -0.38268327713012695 2.2977837943471968e-07 0.9247413277626038 -0.3805353045463562 -0.0 0.4999999403953552 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 -0.5555701851844788 3.340865077916533e-07 0.8333384394645691 -0.5527512431144714 -0.0 0.49999991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 0.7071067690849304 -0.13794942200183868 0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 -0.10838611423969269 0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704832077026 0.8314695954322815 3.117347660008818e-07 0.5597705245018005 0.8286385536193848 -0.0 0.49999988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 0.7071067690849304 3.191853465978056e-07 0.7101352214813232 0.7040314674377441 -0.0 0.49999991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 -0.7071067690849304 -0.13794942200183868 0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 -0.5555701851844788 -0.1622113734483719 0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 -0.5555701851844788 3.340865077916533e-07 0.8333384394645691 -0.5527512431144714 -0.0 0.49999991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 -0.7071067690849304 3.191853465978056e-07 0.7101352214813232 -0.7040314674377441 -0.0 0.49999991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 0.5555701851844788 -0.1622113734483719 0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 0.7071067690849304 -0.13794942200183868 0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 0.7071067690849304 3.191853465978056e-07 0.7101352214813232 0.7040314674377441 -0.0 0.49999991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 0.5555701851844788 3.340865077916533e-07 0.8333384394645691 0.5527512431144714 -0.0 0.49999991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952913284302 -0.8314696550369263 -0.1083860695362091 0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935201287269592 -0.7071067690849304 -0.13794942200183868 0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.5312498807907104 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 -0.7071067690849304 3.191853465978056e-07 0.7101352214813232 -0.7040314674377441 -0.0 0.49999991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555703639984131 -0.8314696550369263 3.415370883885771e-07 0.5597705245018005 -0.8286385536193848 -0.0 0.49999988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 -0.1802397072315216 0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154933452606201 0.5555701851844788 -0.1622113734483719 0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.5312498807907104 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 0.5555701851844788 3.340865077916533e-07 0.8333384394645691 0.5527512431144714 -0.0 0.49999991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 0.3826834261417389 2.7448186301626265e-07 0.9247413277626038 0.3805353045463562 -0.0 0.49999991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753304183483124 -0.9238796234130859 -0.07465755939483643 0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.5312498807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952913284302 -0.8314696550369263 -0.1083860695362091 0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.5312498807907104 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555703639984131 -0.8314696550369263 3.415370883885771e-07 0.5597705245018005 -0.8286385536193848 -0.0 0.49999988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 -0.9238796234130859 3.0428418540395796e-07 0.3878597319126129 -0.921689510345459 -0.0 0.49999985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 0.19509035348892212 -0.1913413405418396 0.9621570706367493 0.19391460716724396 -0.191381573677063 0.5312498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 -0.1802397072315216 0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 0.3826834261417389 2.7448186301626265e-07 0.9247413277626038 0.3805353045463562 -0.0 0.49999991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 0.19509035348892212 3.936911525670439e-07 0.9809869527816772 0.19391460716724396 -0.0 0.49999991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 -0.038059934973716736 0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753304183483124 -0.9238796234130859 -0.07465755939483643 0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.5312498807907104 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 -0.9238796234130859 3.0428418540395796e-07 0.3878597319126129 -0.921689510345459 -0.0 0.49999985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903683900833 -0.9807853102684021 3.080094757024199e-07 0.20096439123153687 -0.9795831441879272 -0.0 0.4999997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 -0.19508999586105347 0.9807733297348022 0.0 -0.19507431983947754 0.5312498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 0.19509035348892212 -0.1913413405418396 0.9621570706367493 0.19391460716724396 -0.191381573677063 0.5312498807907104 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 0.19509035348892212 3.936911525670439e-07 0.9809869527816772 0.19391460716724396 -0.0 0.49999991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n1.000000238418579 7.549790126404332e-08 3.7878999137319624e-07 1.0 0.0 -0.0 0.49999991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134201109409332 0.9807852506637573 -0.038059964776039124 0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.5156245231628418 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509060680866241 0.9807852506637573 3.2663592719472945e-07 0.20096439123153687 0.9795831441879272 -0.0 0.4999997019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.5156246423721313 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 -0.038059934973716736 0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903683900833 -0.9807853102684021 3.080094757024199e-07 0.20096439123153687 -0.9795831441879272 -0.0 0.4999997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 -0.19509020447731018 -0.1913413405418396 0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.5312498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 -0.19508999586105347 0.9807733297348022 0.0 -0.19507431983947754 0.5312498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n1.000000238418579 7.549790126404332e-08 3.7878999137319624e-07 1.0 0.0 -0.0 0.49999991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 -0.19509020447731018 3.936911525670439e-07 0.9809869527816772 -0.19391460716724396 -0.0 0.49999991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753305673599243 0.9238795042037964 -0.07465757429599762 0.3804132342338562 0.921689510345459 -0.07565538585186005 0.5312498807907104 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134201109409332 0.9807852506637573 -0.038059964776039124 0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.5312497615814209 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509060680866241 0.9807852506637573 3.2663592719472945e-07 0.20096439123153687 0.9795831441879272 -0.0 0.4999997019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826836943626404 0.9238795042037964 3.191853465978056e-07 0.3878597319126129 0.921689510345459 -0.0 0.49999985098838806 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 -0.18023976683616638 0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.5312498807907104 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.961939811706543 -0.19509020447731018 -0.1913413405418396 0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.5312498807907104 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 -0.19509020447731018 3.936911525670439e-07 0.9809869527816772 -0.19391460716724396 -0.0 0.49999991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 -0.38268327713012695 2.2977837943471968e-07 0.9247413277626038 -0.3805353045463562 -0.0 0.4999999403953552 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 0.19509035348892212 3.936911525670439e-07 0.9809869527816772 0.19391460716724396 -0.0 0.49999991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 0.3826834261417389 2.7448186301626265e-07 0.9247413277626038 0.3805353045463562 -0.0 0.49999991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 0.18024025857448578 0.9069795608520508 0.3805353045463562 0.18039490282535553 0.46874991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 0.19509035348892212 0.19134210050106049 0.9621570706367493 0.19391460716724396 0.191381573677063 0.46874991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903683900833 -0.9807853102684021 3.080094757024199e-07 0.20096439123153687 -0.9795831441879272 -0.0 0.4999997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 -0.9238796234130859 3.0428418540395796e-07 0.3878597319126129 -0.921689510345459 -0.0 0.49999985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.9238796234130859 0.07465816289186478 0.3804132342338562 -0.921689510345459 0.07565538585186005 0.46874985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 0.03806055337190628 0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.4687497317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n1.000000238418579 7.549790126404332e-08 3.7878999137319624e-07 1.0 0.0 -0.0 0.49999991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 0.19509035348892212 3.936911525670439e-07 0.9809869527816772 0.19391460716724396 -0.0 0.49999991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 0.19509035348892212 0.19134210050106049 0.9621570706367493 0.19391460716724396 0.191381573677063 0.46874991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 0.19509074091911316 0.9807733297348022 0.0 0.19507431983947754 0.46874991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509060680866241 0.9807852506637573 3.2663592719472945e-07 0.20096439123153687 0.9795831441879272 -0.0 0.4999997019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.484374463558197 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134199619293213 0.9807852506637573 0.038060616701841354 0.19708853960037231 0.9795831441879272 0.039185766130685806 0.4687497019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.4843745827674866 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.1950903683900833 -0.9807853102684021 3.080094757024199e-07 0.20096439123153687 -0.9795831441879272 -0.0 0.4999997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 0.03806055337190628 0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.4687497317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 -0.19509020447731018 3.936911525670439e-07 0.9809869527816772 -0.19391460716724396 -0.0 0.49999991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n1.000000238418579 7.549790126404332e-08 3.7878999137319624e-07 1.0 0.0 -0.0 0.49999991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 0.19509074091911316 0.9807733297348022 0.0 0.19507431983947754 0.46874991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 -0.19509020447731018 0.19134210050106049 0.9621570706367493 -0.19391460716724396 0.191381573677063 0.46874991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826836943626404 0.9238795042037964 3.191853465978056e-07 0.3878597319126129 0.921689510345459 -0.0 0.49999985098838806 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509060680866241 0.9807852506637573 3.2663592719472945e-07 0.20096439123153687 0.9795831441879272 -0.0 0.4999997019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134199619293213 0.9807852506637573 0.038060616701841354 0.19708853960037231 0.9795831441879272 0.039185766130685806 0.4687497019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533053755760193 0.9238795042037964 0.07465820759534836 0.3804132342338562 0.921689510345459 0.07565538585186005 0.46874985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 -0.38268327713012695 2.2977837943471968e-07 0.9247413277626038 -0.3805353045463562 -0.0 0.4999999403953552 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807852506637573 -0.19509020447731018 3.936911525670439e-07 0.9809869527816772 -0.19391460716724396 -0.0 0.49999991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 -0.19509020447731018 0.19134210050106049 0.9621570706367493 -0.19391460716724396 0.191381573677063 0.46874991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 0.1802402138710022 0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.4687499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704832077026 0.8314695954322815 3.117347660008818e-07 0.5597705245018005 0.8286385536193848 -0.0 0.49999988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826836943626404 0.9238795042037964 3.191853465978056e-07 0.3878597319126129 0.921689510345459 -0.0 0.49999985098838806 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533053755760193 0.9238795042037964 0.07465820759534836 0.3804132342338562 0.921689510345459 0.07565538585186005 0.46874985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 0.10838674008846283 0.5489974617958069 0.8286385536193848 0.10919522494077682 0.46874988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 -0.5555701851844788 3.340865077916533e-07 0.8333384394645691 -0.5527512431144714 -0.0 0.49999991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 -0.38268327713012695 2.2977837943471968e-07 0.9247413277626038 -0.3805353045463562 -0.0 0.4999999403953552 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 0.1802402138710022 0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.4687499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.5555701851844788 0.16221202909946442 0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.46874991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 0.7071067690849304 3.191853465978056e-07 0.7101352214813232 0.7040314674377441 -0.0 0.49999991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555704832077026 0.8314695954322815 3.117347660008818e-07 0.5597705245018005 0.8286385536193848 -0.0 0.49999988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 0.10838674008846283 0.5489974617958069 0.8286385536193848 0.10919522494077682 0.46874988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.7071067690849304 0.13795003294944763 0.6964934468269348 0.7040314674377441 0.13852351903915405 0.46874991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 -0.7071067690849304 3.191853465978056e-07 0.7101352214813232 -0.7040314674377441 -0.0 0.49999991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 -0.5555701851844788 3.340865077916533e-07 0.8333384394645691 -0.5527512431144714 -0.0 0.49999991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.5555701851844788 0.16221202909946442 0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.46874991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.7071067690849304 0.13795003294944763 0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.46874991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 0.5555701851844788 3.340865077916533e-07 0.8333384394645691 0.5527512431144714 -0.0 0.49999991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 0.7071067690849304 3.191853465978056e-07 0.7101352214813232 0.7040314674377441 -0.0 0.49999991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.7071067690849304 0.13795003294944763 0.6964934468269348 0.7040314674377441 0.13852351903915405 0.46874991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.5555701851844788 0.16221202909946442 0.8173161745071411 0.5527512431144714 0.16257210075855255 0.46874991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555703639984131 -0.8314696550369263 3.415370883885771e-07 0.5597705245018005 -0.8286385536193848 -0.0 0.49999988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071069478988647 -0.7071067690849304 3.191853465978056e-07 0.7101352214813232 -0.7040314674377441 -0.0 0.49999991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.7071067690849304 0.13795003294944763 0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.46874991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.8314696550369263 0.10838674753904343 0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.46874988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 0.3826834261417389 2.7448186301626265e-07 0.9247413277626038 0.3805353045463562 -0.0 0.49999991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8314697742462158 0.5555701851844788 3.340865077916533e-07 0.8333384394645691 0.5527512431144714 -0.0 0.49999991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.5555701851844788 0.16221202909946442 0.8173161745071411 0.5527512431144714 0.16257210075855255 0.46874991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 0.18024025857448578 0.9069795608520508 0.3805353045463562 0.18039490282535553 0.46874991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.38268354535102844 -0.9238796234130859 3.0428418540395796e-07 0.3878597319126129 -0.921689510345459 -0.0 0.49999985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555703639984131 -0.8314696550369263 3.415370883885771e-07 0.5597705245018005 -0.8286385536193848 -0.0 0.49999988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.8314696550369263 0.10838674753904343 0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.46874988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.9238796234130859 0.07465816289186478 0.3804132342338562 -0.921689510345459 0.07565538585186005 0.46874985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.5555701851844788 0.16221202909946442 0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.46874991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 0.1802402138710022 0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.4687499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 0.3535536527633667 0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.4374999403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 -0.5555701851844788 0.3181900382041931 0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.43749991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.7071067690849304 0.13795003294944763 0.6964934468269348 0.7040314674377441 0.13852351903915405 0.46874991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 0.10838674008846283 0.5489974617958069 0.8286385536193848 0.10919522494077682 0.46874988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 0.8314695954322815 0.21260792016983032 0.5171361565589905 0.8286385536193848 0.2142094224691391 0.43749988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.7071067690849304 0.2705984115600586 0.6560564041137695 0.7040314674377441 0.2717368006706238 0.43749991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.7071067690849304 0.13795003294944763 0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.46874991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 -0.5555701851844788 0.16221202909946442 0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.46874991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 -0.5555701851844788 0.3181900382041931 0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.43749991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.7071067690849304 0.2705984115600586 0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.43749991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.5555701851844788 0.16221202909946442 0.8173161745071411 0.5527512431144714 0.16257210075855255 0.46874991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 0.7071067690849304 0.13795003294944763 0.6964934468269348 0.7040314674377441 0.13852351903915405 0.46874991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.7071067690849304 0.2705984115600586 0.6560564041137695 0.7040314674377441 0.2717368006706238 0.43749991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 0.5555701851844788 0.3181900382041931 0.7698904275894165 0.5527512431144714 0.3188879191875458 0.43749991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.8314696550369263 0.10838674753904343 0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.46874988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935200691223145 -0.7071067690849304 0.13795003294944763 0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.46874991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.7071067690849304 0.2705984115600586 0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.43749991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800340652466 -0.8314696550369263 0.21260792016983032 0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.43749988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 0.18024025857448578 0.9069795608520508 0.3805353045463562 0.18039490282535553 0.46874991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154932856559753 0.5555701851844788 0.16221202909946442 0.8173161745071411 0.5527512431144714 0.16257210075855255 0.46874991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 0.5555701851844788 0.3181900382041931 0.7698904275894165 0.5527512431144714 0.3188879191875458 0.43749991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 0.3535537123680115 0.8543656468391418 0.3805353045463562 0.35386210680007935 0.4374999403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.9238796234130859 0.07465816289186478 0.3804132342338562 -0.921689510345459 0.07565538585186005 0.46874985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448952317237854 -0.8314696550369263 0.10838674753904343 0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.46874988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800340652466 -0.8314696550369263 0.21260792016983032 0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.43749988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.9238796234130859 0.14644695818424225 0.3583483397960663 -0.921689510345459 0.14841151237487793 0.43749985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 0.19509035348892212 0.19134210050106049 0.9621570706367493 0.19391460716724396 0.191381573677063 0.46874991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 0.3826834261417389 0.18024025857448578 0.9069795608520508 0.3805353045463562 0.18039490282535553 0.46874991059303284 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 0.3535537123680115 0.8543656468391418 0.3805353045463562 0.35386210680007935 0.4374999403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 0.19509035348892212 0.3753306269645691 0.9063386917114258 0.19391460716724396 0.3754081726074219 0.43749991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 0.03806055337190628 0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.4687497317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533038854599 -0.9238796234130859 0.07465816289186478 0.3804132342338562 -0.921689510345459 0.07565538585186005 0.46874985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.9238796234130859 0.14644695818424225 0.3583483397960663 -0.921689510345459 0.14841151237487793 0.43749985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.1802399903535843 -0.9807853102684021 0.07465816289186478 0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.4374997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 0.19509074091911316 0.9807733297348022 0.0 0.19507431983947754 0.46874991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 0.19509035348892212 0.19134210050106049 0.9621570706367493 0.19391460716724396 0.191381573677063 0.46874991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 0.19509035348892212 0.3753306269645691 0.9063386917114258 0.19391460716724396 0.3754081726074219 0.43749991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 7.549790126404332e-08 0.3826838731765747 0.9238563179969788 0.0 0.382671594619751 0.43749991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134199619293213 0.9807852506637573 0.038060616701841354 0.19708853960037231 0.9795831441879272 0.039185766130685806 0.4687497019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.453124463558197 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.180240198969841 0.9807852506637573 0.07465826719999313 0.18564409017562866 0.9795831441879272 0.07690664380788803 0.4374997317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.45312461256980896 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134175777435303 -0.9807853102684021 0.03806055337190628 0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.4687497317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.1802399903535843 -0.9807853102684021 0.07465816289186478 0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.4374997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 -0.19509020447731018 0.19134210050106049 0.9621570706367493 -0.19391460716724396 0.191381573677063 0.46874991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9807854890823364 7.549790126404332e-08 0.19509074091911316 0.9807733297348022 0.0 0.19507431983947754 0.46874991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 7.549790126404332e-08 0.3826838731765747 0.9238563179969788 0.0 0.382671594619751 0.43749991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 -0.19509020447731018 0.3753306269645691 0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.43749991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533053755760193 0.9238795042037964 0.07465820759534836 0.3804132342338562 0.921689510345459 0.07565538585186005 0.46874985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.19134199619293213 0.9807852506637573 0.038060616701841354 0.19708853960037231 0.9795831441879272 0.039185766130685806 0.4687497019767761 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.180240198969841 0.9807852506637573 0.07465826719999313 0.18564409017562866 0.9795831441879272 0.07690664380788803 0.4374997317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536229610443 0.9238795042037964 0.14644701778888702 0.3583483397960663 0.921689510345459 0.14841151237487793 0.43749985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061275720596313 -0.38268327713012695 0.1802402138710022 0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.4687499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.9619396924972534 -0.19509020447731018 0.19134210050106049 0.9621570706367493 -0.19391460716724396 0.191381573677063 0.46874991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 -0.19509020447731018 0.3753306269645691 0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.43749991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 0.3535536527633667 0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.4374999403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.544895350933075 0.8314695954322815 0.10838674008846283 0.5489974617958069 0.8286385536193848 0.10919522494077682 0.46874988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.37533053755760193 0.9238795042037964 0.07465820759534836 0.3804132342338562 0.921689510345459 0.07565538585186005 0.46874985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536229610443 0.9238795042037964 0.14644701778888702 0.3583483397960663 0.921689510345459 0.14841151237487793 0.43749985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 0.8314695954322815 0.21260792016983032 0.5171361565589905 0.8286385536193848 0.2142094224691391 0.43749988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.1802399903535843 -0.9807853102684021 0.07465816289186478 0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.4374997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.9238796234130859 0.14644695818424225 0.3583483397960663 -0.921689510345459 0.14841151237487793 0.43749985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818971037864685 -0.9238796234130859 0.21260789036750793 0.32248908281326294 -0.921689510345459 0.2154911905527115 0.40624985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221170127391815 -0.9807853102684021 0.10838671773672104 0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.4062497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 7.549790126404332e-08 0.3826838731765747 0.9238563179969788 0.0 0.382671594619751 0.43749991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 0.19509035348892212 0.3753306269645691 0.9063386917114258 0.19391460716724396 0.3754081726074219 0.43749991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 0.19509035348892212 0.5448954105377197 0.8156682252883911 0.19391460716724396 0.5449995398521423 0.40624991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.831469714641571 7.549790126404332e-08 0.555570662021637 0.8314462900161743 0.0 0.5555589199066162 0.40624991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.180240198969841 0.9807852506637573 0.07465826719999313 0.18564409017562866 0.9795831441879272 0.07690664380788803 0.4374997317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.4218744933605194 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221188008785248 0.9807852506637573 0.10838685184717178 0.1670888364315033 0.9795831441879272 0.1116367056965828 0.4062497317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.42187461256980896 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.1802399903535843 -0.9807853102684021 0.07465816289186478 0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.4374997317790985 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221170127391815 -0.9807853102684021 0.10838671773672104 0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.4062497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 -0.19509020447731018 0.3753306269645691 0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.43749991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.9238796830177307 7.549790126404332e-08 0.3826838731765747 0.9238563179969788 0.0 0.382671594619751 0.43749991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.831469714641571 7.549790126404332e-08 0.555570662021637 0.8314462900161743 0.0 0.5555589199066162 0.40624991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 -0.19509020447731018 0.5448954105377197 0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.40624991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536229610443 0.9238795042037964 0.14644701778888702 0.3583483397960663 0.921689510345459 0.14841151237487793 0.43749985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.180240198969841 0.9807852506637573 0.07465826719999313 0.18564409017562866 0.9795831441879272 0.07690664380788803 0.4374997317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221188008785248 0.9807852506637573 0.10838685184717178 0.1670888364315033 0.9795831441879272 0.1116367056965828 0.4062497317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181898593902588 0.9238795042037964 0.2126079499721527 0.32248908281326294 0.921689510345459 0.2154911905527115 0.40624988079071045 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 0.3535536527633667 0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.4374999403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 -0.19509020447731018 0.3753306269645691 0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.43749991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 -0.19509020447731018 0.5448954105377197 0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.40624991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 -0.38268327713012695 0.5132802724838257 0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.4062499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 0.8314695954322815 0.21260792016983032 0.5171361565589905 0.8286385536193848 0.2142094224691391 0.43749988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535536229610443 0.9238795042037964 0.14644701778888702 0.3583483397960663 0.921689510345459 0.14841151237487793 0.43749985098838806 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181898593902588 0.9238795042037964 0.2126079499721527 0.32248908281326294 0.921689510345459 0.2154911905527115 0.40624988079071045 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.8314695954322815 0.3086586892604828 0.46540728211402893 0.8286385536193848 0.3109835982322693 0.40624991059303284 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 -0.5555701851844788 0.3181900382041931 0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.43749991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 -0.38268327713012695 0.3535536527633667 0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.4374999403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 -0.38268327713012695 0.5132802724838257 0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.4062499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 -0.5555701851844788 0.4619401693344116 0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.40624991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.7071067690849304 0.2705984115600586 0.6560564041137695 0.7040314674377441 0.2717368006706238 0.43749991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132801532745361 0.8314695954322815 0.21260792016983032 0.5171361565589905 0.8286385536193848 0.2142094224691391 0.43749988079071045 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.8314695954322815 0.3086586892604828 0.46540728211402893 0.8286385536193848 0.3109835982322693 0.40624991059303284 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 0.7071067690849304 0.39284783601760864 0.5904415845870972 0.7040314674377441 0.39451277256011963 0.40624991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.7071067690849304 0.2705984115600586 0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.43749991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 -0.5555701851844788 0.3181900382041931 0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.43749991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 -0.5555701851844788 0.4619401693344116 0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.40624991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 -0.7071067690849304 0.39284783601760864 0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.40624991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 0.5555701851844788 0.3181900382041931 0.7698904275894165 0.5527512431144714 0.3188879191875458 0.43749991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.7071067690849304 0.2705984115600586 0.6560564041137695 0.7040314674377441 0.2717368006706238 0.43749991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 0.7071067690849304 0.39284783601760864 0.5904415845870972 0.7040314674377441 0.39451277256011963 0.40624991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 0.5555701851844788 0.4619401693344116 0.6928922533988953 0.5527512431144714 0.46296578645706177 0.40624991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800340652466 -0.8314696550369263 0.21260792016983032 0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.43749988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.7071067690849304 0.2705984115600586 0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.43749991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 -0.7071067690849304 0.39284783601760864 0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.40624991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.46193981170654297 -0.8314696550369263 0.3086586594581604 0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.40624988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 0.3535537123680115 0.8543656468391418 0.3805353045463562 0.35386210680007935 0.4374999403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7681778073310852 0.5555701851844788 0.3181900382041931 0.7698904275894165 0.5527512431144714 0.3188879191875458 0.43749991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 0.5555701851844788 0.4619401693344116 0.6928922533988953 0.5527512431144714 0.46296578645706177 0.40624991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 0.3826834261417389 0.5132802724838257 0.7689138650894165 0.3805353045463562 0.5137485861778259 0.4062499403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.9238796234130859 0.14644695818424225 0.3583483397960663 -0.921689510345459 0.14841151237487793 0.43749985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800340652466 -0.8314696550369263 0.21260792016983032 0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.43749988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.46193981170654297 -0.8314696550369263 0.3086586594581604 0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.40624988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818971037864685 -0.9238796234130859 0.21260789036750793 0.32248908281326294 -0.921689510345459 0.2154911905527115 0.40624985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.9061273336410522 0.19509035348892212 0.3753306269645691 0.9063386917114258 0.19391460716724396 0.3754081726074219 0.43749991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8535535335540771 0.3826834261417389 0.3535537123680115 0.8543656468391418 0.3805353045463562 0.35386210680007935 0.4374999403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 0.3826834261417389 0.5132802724838257 0.7689138650894165 0.3805353045463562 0.5137485861778259 0.4062499403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 0.19509035348892212 0.5448954105377197 0.8156682252883911 0.19391460716724396 0.5449995398521423 0.40624991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 -0.7071067690849304 0.39284783601760864 0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.40624991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 -0.5555701851844788 0.4619401693344116 0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.40624991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 -0.5555701851844788 0.5879381895065308 0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.37499991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 -0.7071067690849304 0.5000003576278687 0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.37499991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 0.5555701851844788 0.4619401693344116 0.6928922533988953 0.5527512431144714 0.46296578645706177 0.40624991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 0.7071067690849304 0.39284783601760864 0.5904415845870972 0.7040314674377441 0.39451277256011963 0.40624991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 0.7071067690849304 0.5000003576278687 0.5021210312843323 0.7040314674377441 0.5021210312843323 0.37499991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 0.5555701851844788 0.5879381895065308 0.5892513990402222 0.5527512431144714 0.5892513990402222 0.37499991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.46193981170654297 -0.8314696550369263 0.3086586594581604 0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.40624988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 -0.7071067690849304 0.39284783601760864 0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.40624991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 -0.7071067690849304 0.5000003576278687 0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.37499991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.8314696550369263 0.39284783601760864 0.395794540643692 -0.8286385536193848 0.395794540643692 0.37499991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 0.3826834261417389 0.5132802724838257 0.7689138650894165 0.3805353045463562 0.5137485861778259 0.4062499403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 0.5555701851844788 0.4619401693344116 0.6928922533988953 0.5527512431144714 0.46296578645706177 0.40624991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 0.5555701851844788 0.5879381895065308 0.5892513990402222 0.5527512431144714 0.5892513990402222 0.37499991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 0.6532818078994751 0.6538895964622498 0.3805353045463562 0.6538895964622498 0.3749999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818971037864685 -0.9238796234130859 0.21260789036750793 0.32248908281326294 -0.921689510345459 0.2154911905527115 0.40624985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.46193981170654297 -0.8314696550369263 0.3086586594581604 0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.40624988079071045 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.8314696550369263 0.39284783601760864 0.395794540643692 -0.8286385536193848 0.395794540643692 0.37499991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059808373451233 -0.9238796234130859 0.2705984115600586 0.27426984906196594 -0.921689510345459 0.27426984906196594 0.37499988079071045 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 0.19509035348892212 0.5448954105377197 0.8156682252883911 0.19391460716724396 0.5449995398521423 0.40624991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 0.3826834261417389 0.5132802724838257 0.7689138650894165 0.3805353045463562 0.5137485861778259 0.4062499403953552 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 0.6532818078994751 0.6538895964622498 0.3805353045463562 0.6538895964622498 0.3749999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 0.19509035348892212 0.693520188331604 0.6936551928520203 0.19391460716724396 0.6936551928520203 0.37499991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221170127391815 -0.9807853102684021 0.10838671773672104 0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.4062497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.31818971037864685 -0.9238796234130859 0.21260789036750793 0.32248908281326294 -0.921689510345459 0.2154911905527115 0.40624985098838806 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059808373451233 -0.9238796234130859 0.2705984115600586 0.27426984906196594 -0.921689510345459 0.27426984906196594 0.37499988079071045 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794970512390137 -0.9807853102684021 0.13795003294944763 0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.3749997913837433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.831469714641571 7.549790126404332e-08 0.555570662021637 0.8314462900161743 0.0 0.5555589199066162 0.40624991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 0.19509035348892212 0.5448954105377197 0.8156682252883911 0.19391460716724396 0.5449995398521423 0.40624991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 0.19509035348892212 0.693520188331604 0.6936551928520203 0.19391460716724396 0.6936551928520203 0.37499991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071068286895752 7.549790126404332e-08 0.7071072459220886 0.7070833444595337 0.0 0.7070833444595337 0.37499991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221188008785248 0.9807852506637573 0.10838685184717178 0.1670888364315033 0.9795831441879272 0.1116367056965828 0.4062497317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.3906245231628418 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.1379498541355133 0.9807852506637573 0.13795019686222076 0.1420941799879074 0.9795831441879272 0.1420941799879074 0.3749997913837433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.39062467217445374 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221170127391815 -0.9807853102684021 0.10838671773672104 0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.4062497615814209 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794970512390137 -0.9807853102684021 0.13795003294944763 0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.3749997913837433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 -0.19509020447731018 0.5448954105377197 0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.40624991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.831469714641571 7.549790126404332e-08 0.555570662021637 0.8314462900161743 0.0 0.5555589199066162 0.40624991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071068286895752 7.549790126404332e-08 0.7071072459220886 0.7070833444595337 0.0 0.7070833444595337 0.37499991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 -0.19509020447731018 0.693520188331604 0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.37499991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181898593902588 0.9238795042037964 0.2126079499721527 0.32248908281326294 0.921689510345459 0.2154911905527115 0.40624988079071045 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.16221188008785248 0.9807852506637573 0.10838685184717178 0.1670888364315033 0.9795831441879272 0.1116367056965828 0.4062497317790985 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.1379498541355133 0.9807852506637573 0.13795019686222076 0.1420941799879074 0.9795831441879272 0.1420941799879074 0.3749997913837433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059823274612427 0.9238795042037964 0.27059850096702576 0.27426984906196594 0.921689510345459 0.27426984906196594 0.37499991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 -0.38268327713012695 0.5132802724838257 0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.4062499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.8154930472373962 -0.19509020447731018 0.5448954105377197 0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.40624991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 -0.19509020447731018 0.693520188331604 0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.37499991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 0.6532818078994751 0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.3749999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.8314695954322815 0.3086586892604828 0.46540728211402893 0.8286385536193848 0.3109835982322693 0.40624991059303284 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181898593902588 0.9238795042037964 0.2126079499721527 0.32248908281326294 0.921689510345459 0.2154911905527115 0.40624988079071045 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059823274612427 0.9238795042037964 0.27059850096702576 0.27426984906196594 0.921689510345459 0.27426984906196594 0.37499991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.39284759759902954 0.8314695954322815 0.3928478956222534 0.395794540643692 0.8286385536193848 0.395794540643692 0.37499991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.691341757774353 -0.5555701851844788 0.4619401693344116 0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.40624991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.76817786693573 -0.38268327713012695 0.5132802724838257 0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.4062499403953552 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 0.6532818078994751 0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.3749999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 -0.5555701851844788 0.5879381895065308 0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.37499991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879379510879517 0.7071067690849304 0.39284783601760864 0.5904415845870972 0.7040314674377441 0.39451277256011963 0.40624991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619399309158325 0.8314695954322815 0.3086586892604828 0.46540728211402893 0.8286385536193848 0.3109835982322693 0.40624991059303284 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.39284759759902954 0.8314695954322815 0.3928478956222534 0.395794540643692 0.8286385536193848 0.395794540643692 0.37499991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 0.7071067690849304 0.5000003576278687 0.5021210312843323 0.7040314674377441 0.5021210312843323 0.37499991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.1379498541355133 0.9807852506637573 0.13795019686222076 0.1420941799879074 0.9795831441879272 0.1420941799879074 0.3749997913837433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.3593745827674866 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838649421930313 0.9807852506637573 0.16221219301223755 0.1116367056965828 0.9795831441879272 0.1670888364315033 0.3437498211860657 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.3593747317790985 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794970512390137 -0.9807853102684021 0.13795003294944763 0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.3749997913837433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838638991117477 -0.9807853102684021 0.16221201419830322 0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.3437498211860657 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 -0.19509020447731018 0.693520188331604 0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.37499991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071068286895752 7.549790126404332e-08 0.7071072459220886 0.7070833444595337 0.0 0.7070833444595337 0.37499991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555702447891235 7.549790126404332e-08 0.8314700722694397 0.5555589199066162 0.0 0.8314462900161743 0.3437499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 -0.19509020447731018 0.8154934048652649 0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.3437499403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059823274612427 0.9238795042037964 0.27059850096702576 0.27426984906196594 0.921689510345459 0.27426984906196594 0.37499991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.1379498541355133 0.9807852506637573 0.13795019686222076 0.1420941799879074 0.9795831441879272 0.1420941799879074 0.3749997913837433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838649421930313 0.9807852506637573 0.16221219301223755 0.1116367056965828 0.9795831441879272 0.1670888364315033 0.3437498211860657 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.9238795042037964 0.3181900978088379 0.2154911905527115 0.921689510345459 0.32248908281326294 0.34374991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 0.6532818078994751 0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.3749999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 -0.19509020447731018 0.693520188331604 0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.37499991059303284 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 -0.19509020447731018 0.8154934048652649 0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.3437499403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 0.7681781053543091 0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.3437499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.39284759759902954 0.8314695954322815 0.3928478956222534 0.395794540643692 0.8286385536193848 0.395794540643692 0.37499991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059823274612427 0.9238795042037964 0.27059850096702576 0.27426984906196594 0.921689510345459 0.27426984906196594 0.37499991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.9238795042037964 0.3181900978088379 0.2154911905527115 0.921689510345459 0.32248908281326294 0.34374991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086583614349365 0.8314695954322815 0.4619401693344116 0.3109835982322693 0.8286385536193848 0.46540728211402893 0.34374991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 -0.5555701851844788 0.5879381895065308 0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.37499991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 -0.38268327713012695 0.6532818078994751 0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.3749999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 0.7681781053543091 0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.3437499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 -0.5555701851844788 0.6913420557975769 0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.34374991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 0.7071067690849304 0.5000003576278687 0.5021210312843323 0.7040314674377441 0.5021210312843323 0.37499991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.39284759759902954 0.8314695954322815 0.3928478956222534 0.395794540643692 0.8286385536193848 0.395794540643692 0.37499991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086583614349365 0.8314695954322815 0.4619401693344116 0.3109835982322693 0.8286385536193848 0.46540728211402893 0.34374991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 0.7071067690849304 0.5879381895065308 0.39451277256011963 0.7040314674377441 0.5904415845870972 0.34374991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 -0.7071067690849304 0.5000003576278687 0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.37499991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 -0.5555701851844788 0.5879381895065308 0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.37499991059303284 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 -0.5555701851844788 0.6913420557975769 0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.34374991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.7071067690849304 0.5879381895065308 0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.34374991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 0.5555701851844788 0.5879381895065308 0.5892513990402222 0.5527512431144714 0.5892513990402222 0.37499991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 0.7071067690849304 0.5000003576278687 0.5021210312843323 0.7040314674377441 0.5021210312843323 0.37499991059303284 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 0.7071067690849304 0.5879381895065308 0.39451277256011963 0.7040314674377441 0.5904415845870972 0.34374991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 0.5555701851844788 0.6913420557975769 0.46296578645706177 0.5527512431144714 0.6928922533988953 0.34374991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.8314696550369263 0.39284783601760864 0.395794540643692 -0.8286385536193848 0.395794540643692 0.37499991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5000000596046448 -0.7071067690849304 0.5000003576278687 0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.37499991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.7071067690849304 0.5879381895065308 0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.34374991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.30865827202796936 -0.8314696550369263 0.46194010972976685 0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.34374991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 0.6532818078994751 0.6538895964622498 0.3805353045463562 0.6538895964622498 0.3749999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5879377722740173 0.5555701851844788 0.5879381895065308 0.5892513990402222 0.5527512431144714 0.5892513990402222 0.37499991059303284 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 0.5555701851844788 0.6913420557975769 0.46296578645706177 0.5527512431144714 0.6928922533988953 0.34374991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 0.7681781053543091 0.5137485861778259 0.3805353045463562 0.7689138650894165 0.3437499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059808373451233 -0.9238796234130859 0.2705984115600586 0.27426984906196594 -0.921689510345459 0.27426984906196594 0.37499988079071045 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.8314696550369263 0.39284783601760864 0.395794540643692 -0.8286385536193848 0.395794540643692 0.37499991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.30865827202796936 -0.8314696550369263 0.46194010972976685 0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.34374991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260754764080048 -0.9238796234130859 0.31818997859954834 0.2154911905527115 -0.921689510345459 0.32248908281326294 0.34374991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 0.19509035348892212 0.693520188331604 0.6936551928520203 0.19391460716724396 0.6936551928520203 0.37499991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.6532816290855408 0.3826834261417389 0.6532818078994751 0.6538895964622498 0.3805353045463562 0.6538895964622498 0.3749999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 0.7681781053543091 0.5137485861778259 0.3805353045463562 0.7689138650894165 0.3437499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 0.19509035348892212 0.8154934048652649 0.5449995398521423 0.19391460716724396 0.8156682252883911 0.3437499403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794970512390137 -0.9807853102684021 0.13795003294944763 0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.3749997913837433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059808373451233 -0.9238796234130859 0.2705984115600586 0.27426984906196594 -0.921689510345459 0.27426984906196594 0.37499988079071045 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260754764080048 -0.9238796234130859 0.31818997859954834 0.2154911905527115 -0.921689510345459 0.32248908281326294 0.34374991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838638991117477 -0.9807853102684021 0.16221201419830322 0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.3437498211860657 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.7071068286895752 7.549790126404332e-08 0.7071072459220886 0.7070833444595337 0.0 0.7070833444595337 0.37499991059303284 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.6935198307037354 0.19509035348892212 0.693520188331604 0.6936551928520203 0.19391460716724396 0.6936551928520203 0.37499991059303284 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 0.19509035348892212 0.8154934048652649 0.5449995398521423 0.19391460716724396 0.8156682252883911 0.3437499403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555702447891235 7.549790126404332e-08 0.8314700722694397 0.5555589199066162 0.0 0.8314462900161743 0.3437499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 0.5555701851844788 0.6913420557975769 0.46296578645706177 0.5527512431144714 0.6928922533988953 0.34374991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 0.7071067690849304 0.5879381895065308 0.39451277256011963 0.7040314674377441 0.5904415845870972 0.34374991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 0.7071067690849304 0.6532818078994751 0.2717368006706238 0.7040314674377441 0.6560564041137695 0.3124999403953552 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 0.5555701851844788 0.7681780457496643 0.3188879191875458 0.5527512431144714 0.7698904275894165 0.3124999403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.30865827202796936 -0.8314696550369263 0.46194010972976685 0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.34374991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.7071067690849304 0.5879381895065308 0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.34374991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 -0.7071067690849304 0.6532818078994751 0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.3124999403953552 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126075029373169 -0.8314696550369263 0.5132802724838257 0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.3124999403953552 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 0.7681781053543091 0.5137485861778259 0.3805353045463562 0.7689138650894165 0.3437499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 0.5555701851844788 0.6913420557975769 0.46296578645706177 0.5527512431144714 0.6928922533988953 0.34374991059303284 0.6874999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 0.5555701851844788 0.7681780457496643 0.3188879191875458 0.5527512431144714 0.7698904275894165 0.3124999403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 0.8535537123680115 0.35386210680007935 0.3805353045463562 0.8543656468391418 0.3124999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260754764080048 -0.9238796234130859 0.31818997859954834 0.2154911905527115 -0.921689510345459 0.32248908281326294 0.34374991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.30865827202796936 -0.8314696550369263 0.46194010972976685 0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.34374991059303284 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126075029373169 -0.8314696550369263 0.5132802724838257 0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.3124999403953552 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.1464466154575348 -0.9238796234130859 0.3535537123680115 0.14841151237487793 -0.921689510345459 0.3583483397960663 0.31249991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 0.19509035348892212 0.8154934048652649 0.5449995398521423 0.19391460716724396 0.8156682252883911 0.3437499403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 0.3826834261417389 0.7681781053543091 0.5137485861778259 0.3805353045463562 0.7689138650894165 0.3437499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 0.8535537123680115 0.35386210680007935 0.3805353045463562 0.8543656468391418 0.3124999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 0.19509035348892212 0.9061276316642761 0.3754081726074219 0.19391460716724396 0.9063386917114258 0.3124999403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838638991117477 -0.9807853102684021 0.16221201419830322 0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.3437498211860657 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260754764080048 -0.9238796234130859 0.31818997859954834 0.2154911905527115 -0.921689510345459 0.32248908281326294 0.34374991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.1464466154575348 -0.9238796234130859 0.3535537123680115 0.14841151237487793 -0.921689510345459 0.3583483397960663 0.31249991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578499674797 -0.9807853102684021 0.18024028837680817 0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.31249988079071045 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555702447891235 7.549790126404332e-08 0.8314700722694397 0.5555589199066162 0.0 0.8314462900161743 0.3437499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 0.19509035348892212 0.8154934048652649 0.5449995398521423 0.19391460716724396 0.8156682252883911 0.3437499403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 0.19509035348892212 0.9061276316642761 0.3754081726074219 0.19391460716724396 0.9063386917114258 0.3124999403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826833963394165 7.549790126404332e-08 0.9238799810409546 0.382671594619751 0.0 0.9238563179969788 0.3124999403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838649421930313 0.9807852506637573 0.16221219301223755 0.1116367056965828 0.9795831441879272 0.1670888364315033 0.3437498211860657 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.32812467217445374 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465791702270508 0.9807852506637573 0.1802404820919037 0.07690664380788803 0.9795831441879272 0.18564409017562866 0.31249988079071045 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.3281247913837433 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838638991117477 -0.9807853102684021 0.16221201419830322 0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.3437498211860657 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578499674797 -0.9807853102684021 0.18024028837680817 0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.31249988079071045 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 -0.19509020447731018 0.8154934048652649 0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.3437499403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.5555702447891235 7.549790126404332e-08 0.8314700722694397 0.5555589199066162 0.0 0.8314462900161743 0.3437499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826833963394165 7.549790126404332e-08 0.9238799810409546 0.382671594619751 0.0 0.9238563179969788 0.3124999403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 -0.19509020447731018 0.9061276316642761 0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.3124999403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.9238795042037964 0.3181900978088379 0.2154911905527115 0.921689510345459 0.32248908281326294 0.34374991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838649421930313 0.9807852506637573 0.16221219301223755 0.1116367056965828 0.9795831441879272 0.1670888364315033 0.3437498211860657 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465791702270508 0.9807852506637573 0.1802404820919037 0.07690664380788803 0.9795831441879272 0.18564409017562866 0.31249988079071045 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644670486450195 0.9238795042037964 0.353553831577301 0.14841151237487793 0.921689510345459 0.3583483397960663 0.3124999403953552 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 0.7681781053543091 0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.3437499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5448949933052063 -0.19509020447731018 0.8154934048652649 0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.3437499403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 -0.19509020447731018 0.9061276316642761 0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.3124999403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.38268327713012695 0.8535537123680115 0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.3124999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086583614349365 0.8314695954322815 0.4619401693344116 0.3109835982322693 0.8286385536193848 0.46540728211402893 0.34374991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260765194892883 0.9238795042037964 0.3181900978088379 0.2154911905527115 0.921689510345459 0.32248908281326294 0.34374991059303284 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644670486450195 0.9238795042037964 0.353553831577301 0.14841151237487793 0.921689510345459 0.3583483397960663 0.3124999403953552 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260759234428406 0.8314695954322815 0.5132803916931152 0.2142094224691391 0.8286385536193848 0.5171361565589905 0.3124999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 -0.5555701851844788 0.6913420557975769 0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.34374991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.5132800936698914 -0.38268327713012695 0.7681781053543091 0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.3437499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.38268327713012695 0.8535537123680115 0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.3124999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 -0.5555701851844788 0.7681780457496643 0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.3124999403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 0.7071067690849304 0.5879381895065308 0.39451277256011963 0.7040314674377441 0.5904415845870972 0.34374991059303284 0.7499998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3086583614349365 0.8314695954322815 0.4619401693344116 0.3109835982322693 0.8286385536193848 0.46540728211402893 0.34374991059303284 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260759234428406 0.8314695954322815 0.5132803916931152 0.2142094224691391 0.8286385536193848 0.5171361565589905 0.3124999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 0.7071067690849304 0.6532818078994751 0.2717368006706238 0.7040314674377441 0.6560564041137695 0.3124999403953552 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.3928475081920624 -0.7071067690849304 0.5879381895065308 0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.34374991059303284 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.4619397222995758 -0.5555701851844788 0.6913420557975769 0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.34374991059303284 0.31250011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 -0.5555701851844788 0.7681780457496643 0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.3124999403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 -0.7071067690849304 0.6532818078994751 0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.3124999403953552 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 -0.19509020447731018 0.9061276316642761 0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.3124999403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826833963394165 7.549790126404332e-08 0.9238799810409546 0.382671594619751 0.0 0.9238563179969788 0.3124999403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509024918079376 7.549790126404332e-08 0.9807857275009155 0.19507431983947754 0.0 0.9807733297348022 0.2812499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 -0.19509020447731018 0.9619399309158325 0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2812499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644670486450195 0.9238795042037964 0.353553831577301 0.14841151237487793 0.921689510345459 0.3583483397960663 0.3124999403953552 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465791702270508 0.9807852506637573 0.1802404820919037 0.07690664380788803 0.9795831441879272 0.18564409017562866 0.31249988079071045 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0380602702498436 0.9807852506637573 0.19134224951267242 0.039185766130685806 0.9795831441879272 0.19708853960037231 0.28124991059303284 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790212154388 0.9238795042037964 0.37533071637153625 0.07565538585186005 0.921689510345459 0.3804132342338562 0.2812499701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.38268327713012695 0.8535537123680115 0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.3124999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 -0.19509020447731018 0.9061276316642761 0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.3124999403953552 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 -0.19509020447731018 0.9619399309158325 0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2812499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 0.9061277508735657 0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.2812499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260759234428406 0.8314695954322815 0.5132803916931152 0.2142094224691391 0.8286385536193848 0.5171361565589905 0.3124999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.14644670486450195 0.9238795042037964 0.353553831577301 0.14841151237487793 0.921689510345459 0.3583483397960663 0.3124999403953552 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790212154388 0.9238795042037964 0.37533071637153625 0.07565538585186005 0.921689510345459 0.3804132342338562 0.2812499701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838642716407776 0.8314695954322815 0.5448955297470093 0.10919522494077682 0.8286385536193848 0.5489974617958069 0.2812499701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 -0.5555701851844788 0.7681780457496643 0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.3124999403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 -0.38268327713012695 0.8535537123680115 0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.3124999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 0.9061277508735657 0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.2812499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 -0.5555701851844788 0.8154933452606201 0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2812499403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 0.7071067690849304 0.6532818078994751 0.2717368006706238 0.7040314674377441 0.6560564041137695 0.3124999403953552 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.21260759234428406 0.8314695954322815 0.5132803916931152 0.2142094224691391 0.8286385536193848 0.5171361565589905 0.3124999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838642716407776 0.8314695954322815 0.5448955297470093 0.10919522494077682 0.8286385536193848 0.5489974617958069 0.2812499701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 0.7071067690849304 0.6935202479362488 0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2812499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 -0.7071067690849304 0.6532818078994751 0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.3124999403953552 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 -0.5555701851844788 0.7681780457496643 0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.3124999403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 -0.5555701851844788 0.8154933452606201 0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2812499403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 -0.7071067690849304 0.6935202479362488 0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2812499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 0.5555701851844788 0.7681780457496643 0.3188879191875458 0.5527512431144714 0.7698904275894165 0.3124999403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 0.7071067690849304 0.6532818078994751 0.2717368006706238 0.7040314674377441 0.6560564041137695 0.3124999403953552 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 0.7071067690849304 0.6935202479362488 0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2812499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 0.5555701851844788 0.8154933452606201 0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2812499403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126075029373169 -0.8314696550369263 0.5132802724838257 0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.3124999403953552 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.27059802412986755 -0.7071067690849304 0.6532818078994751 0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.3124999403953552 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 -0.7071067690849304 0.6935202479362488 0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2812499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838636010885239 -0.8314696550369263 0.5448954105377197 0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.2812499701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 0.8535537123680115 0.35386210680007935 0.3805353045463562 0.8543656468391418 0.3124999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3181895613670349 0.5555701851844788 0.7681780457496643 0.3188879191875458 0.5527512431144714 0.7698904275894165 0.3124999403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 0.5555701851844788 0.8154933452606201 0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2812499403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 0.3826834261417389 0.9061277508735657 0.18039490282535553 0.3805353045463562 0.9069795608520508 0.2812499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1464466154575348 -0.9238796234130859 0.3535537123680115 0.14841151237487793 -0.921689510345459 0.3583483397960663 0.31249991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.2126075029373169 -0.8314696550369263 0.5132802724838257 0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.3124999403953552 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838636010885239 -0.8314696550369263 0.5448954105377197 0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.2812499701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465784251689911 -0.9238796234130859 0.3753305971622467 0.07565538585186005 -0.921689510345459 0.3804132342338562 0.2812499701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 0.19509035348892212 0.9061276316642761 0.3754081726074219 0.19391460716724396 0.9063386917114258 0.3124999403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.3535534739494324 0.3826834261417389 0.8535537123680115 0.35386210680007935 0.3805353045463562 0.8543656468391418 0.3124999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 0.3826834261417389 0.9061277508735657 0.18039490282535553 0.3805353045463562 0.9069795608520508 0.2812499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 0.19509035348892212 0.9619399309158325 0.191381573677063 0.19391460716724396 0.9621570706367493 0.2812499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578499674797 -0.9807853102684021 0.18024028837680817 0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.31249988079071045 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.1464466154575348 -0.9238796234130859 0.3535537123680115 0.14841151237487793 -0.921689510345459 0.3583483397960663 0.31249991059303284 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465784251689911 -0.9238796234130859 0.3753305971622467 0.07565538585186005 -0.921689510345459 0.3804132342338562 0.2812499701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806024044752121 -0.9807853102684021 0.1913420408964157 0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.28124991059303284 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.3826833963394165 7.549790126404332e-08 0.9238799810409546 0.382671594619751 0.0 0.9238563179969788 0.3124999403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.3753301501274109 0.19509035348892212 0.9061276316642761 0.3754081726074219 0.19391460716724396 0.9063386917114258 0.3124999403953552 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 0.19509035348892212 0.9619399309158325 0.191381573677063 0.19391460716724396 0.9621570706367493 0.2812499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509024918079376 7.549790126404332e-08 0.9807857275009155 0.19507431983947754 0.0 0.9807733297348022 0.2812499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465791702270508 0.9807852506637573 0.1802404820919037 0.07690664380788803 0.9795831441879272 0.18564409017562866 0.31249988079071045 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.2968747317790985 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.0380602702498436 0.9807852506637573 0.19134224951267242 0.039185766130685806 0.9795831441879272 0.19708853960037231 0.28124991059303284 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.29687488079071045 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.0746578499674797 -0.9807853102684021 0.18024028837680817 0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.31249988079071045 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806024044752121 -0.9807853102684021 0.1913420408964157 0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.28124991059303284 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838636010885239 -0.8314696550369263 0.5448954105377197 0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.2812499701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 -0.7071067690849304 0.6935202479362488 0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2812499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 -0.7071067690849304 0.7071070671081543 0.0 -0.7040314674377441 0.7101352214813232 0.2499999701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0937306171854289e-08 -0.8314696550369263 0.5555704832077026 0.0 -0.8286385536193848 0.5597705245018005 0.2499999701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 0.3826834261417389 0.9061277508735657 0.18039490282535553 0.3805353045463562 0.9069795608520508 0.2812499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 0.5555701851844788 0.8154933452606201 0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2812499403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.5555701851844788 0.831469714641571 0.0 0.5527512431144714 0.8333384394645691 0.2499999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 0.3826834261417389 0.923879861831665 0.0 0.3805353045463562 0.9247413277626038 0.2499999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465784251689911 -0.9238796234130859 0.3753305971622467 0.07565538585186005 -0.921689510345459 0.3804132342338562 0.2812499701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838636010885239 -0.8314696550369263 0.5448954105377197 0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.2812499701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0937306171854289e-08 -0.8314696550369263 0.5555704832077026 0.0 -0.8286385536193848 0.5597705245018005 0.2499999701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9238796234130859 0.38268372416496277 0.0 -0.921689510345459 0.3878597319126129 0.2499999701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 0.19509035348892212 0.9619399309158325 0.191381573677063 0.19391460716724396 0.9621570706367493 0.2812499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 0.3826834261417389 0.9061277508735657 0.18039490282535553 0.3805353045463562 0.9069795608520508 0.2812499701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 0.3826834261417389 0.923879861831665 0.0 0.3805353045463562 0.9247413277626038 0.2499999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.19509035348892212 0.9807853698730469 0.0 0.19391460716724396 0.9809869527816772 0.2499999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806024044752121 -0.9807853102684021 0.1913420408964157 0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.28124991059303284 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465784251689911 -0.9238796234130859 0.3753305971622467 0.07565538585186005 -0.921689510345459 0.3804132342338562 0.2812499701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9238796234130859 0.38268372416496277 0.0 -0.921689510345459 0.3878597319126129 0.2499999701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9807853102684021 0.1950906366109848 0.0 -0.9795831441879272 0.20096439123153687 0.2499999701976776 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509024918079376 7.549790126404332e-08 0.9807857275009155 0.19507431983947754 0.0 0.9807733297348022 0.2812499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 0.19509035348892212 0.9619399309158325 0.191381573677063 0.19391460716724396 0.9621570706367493 0.2812499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.19509035348892212 0.9807853698730469 0.0 0.19391460716724396 0.9809869527816772 0.2499999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0034427333494023e-07 7.549790126404332e-08 1.0000003576278687 0.0 0.0 1.0 0.2499999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.0380602702498436 0.9807852506637573 0.19134224951267242 0.039185766130685806 0.9795831441879272 0.19708853960037231 0.28124991059303284 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.2656248211860657 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-7.2120158733923745e-09 0.9807852506637573 0.19509084522724152 0.0 0.9795831441879272 0.20096439123153687 0.2499999701976776 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.2656249403953552 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.03806024044752121 -0.9807853102684021 0.1913420408964157 0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.28124991059303284 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9807853102684021 0.1950906366109848 0.0 -0.9795831441879272 0.20096439123153687 0.2499999701976776 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 -0.19509020447731018 0.9619399309158325 0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2812499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.19509024918079376 7.549790126404332e-08 0.9807857275009155 0.19507431983947754 0.0 0.9807733297348022 0.2812499403953552 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0034427333494023e-07 7.549790126404332e-08 1.0000003576278687 0.0 0.0 1.0 0.2499999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.19509020447731018 0.9807853698730469 0.0 -0.19391460716724396 0.9809869527816772 0.2499999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790212154388 0.9238795042037964 0.37533071637153625 0.07565538585186005 0.921689510345459 0.3804132342338562 0.2812499701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.0380602702498436 0.9807852506637573 0.19134224951267242 0.039185766130685806 0.9795831441879272 0.19708853960037231 0.28124991059303284 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-7.2120158733923745e-09 0.9807852506637573 0.19509084522724152 0.0 0.9795831441879272 0.20096439123153687 0.2499999701976776 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n4.121675800661251e-08 0.9238795042037964 0.3826838433742523 0.0 0.921689510345459 0.3878597319126129 0.2499999701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 0.9061277508735657 0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.2812499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.1913416087627411 -0.19509020447731018 0.9619399309158325 0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2812499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.19509020447731018 0.9807853698730469 0.0 -0.19391460716724396 0.9809869527816772 0.2499999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 0.923879861831665 0.0 -0.3805353045463562 0.9247413277626038 0.2499999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838642716407776 0.8314695954322815 0.5448955297470093 0.10919522494077682 0.8286385536193848 0.5489974617958069 0.2812499701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.07465790212154388 0.9238795042037964 0.37533071637153625 0.07565538585186005 0.921689510345459 0.3804132342338562 0.2812499701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n4.121675800661251e-08 0.9238795042037964 0.3826838433742523 0.0 0.921689510345459 0.3878597319126129 0.2499999701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n2.6315596812764852e-08 0.8314695954322815 0.555570662021637 0.0 0.8286385536193848 0.5597705245018005 0.2499999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 -0.5555701851844788 0.8154933452606201 0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2812499403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.18024002015590668 -0.38268327713012695 0.9061277508735657 0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.2812499701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 0.923879861831665 0.0 -0.3805353045463562 0.9247413277626038 0.2499999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.5555701851844788 0.831469714641571 0.0 -0.5527512431144714 0.8333384394645691 0.2499999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 0.7071067690849304 0.6935202479362488 0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2812499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.10838642716407776 0.8314695954322815 0.5448955297470093 0.10919522494077682 0.8286385536193848 0.5489974617958069 0.2812499701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n2.6315596812764852e-08 0.8314695954322815 0.555570662021637 0.0 0.8286385536193848 0.5597705245018005 0.2499999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 0.7071067690849304 0.7071070671081543 0.0 0.7040314674377441 0.7101352214813232 0.2499999701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 -0.7071067690849304 0.6935202479362488 0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2812499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 -0.5555701851844788 0.8154933452606201 0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2812499403953552 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.5555701851844788 0.831469714641571 0.0 -0.5527512431144714 0.8333384394645691 0.2499999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 -0.7071067690849304 0.7071070671081543 0.0 -0.7040314674377441 0.7101352214813232 0.2499999701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n0.1622115671634674 0.5555701851844788 0.8154933452606201 0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2812499403953552 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.13794966042041779 0.7071067690849304 0.6935202479362488 0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2812499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 0.7071067690849304 0.7071070671081543 0.0 0.7040314674377441 0.7101352214813232 0.2499999701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.5555701851844788 0.831469714641571 0.0 0.5527512431144714 0.8333384394645691 0.2499999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n4.121675800661251e-08 0.9238795042037964 0.3826838433742523 0.0 0.921689510345459 0.3878597319126129 0.2499999701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-7.2120158733923745e-09 0.9807852506637573 0.19509084522724152 0.0 0.9795831441879272 0.20096439123153687 0.2499999701976776 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03806028142571449 0.9807852506637573 0.19134221971035004 -0.039185766130685806 0.9795831441879272 0.19708853960037231 0.2187500298023224 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465781271457672 0.9238795042037964 0.3753306567668915 -0.07565538585186005 0.921689510345459 0.3804132342338562 0.2187500298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 0.923879861831665 0.0 -0.3805353045463562 0.9247413277626038 0.2499999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.19509020447731018 0.9807853698730469 0.0 -0.19391460716724396 0.9809869527816772 0.2499999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 -0.19509020447731018 0.961939811706543 -0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2187499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 -0.38268327713012695 0.9061277508735657 -0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.21875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n2.6315596812764852e-08 0.8314695954322815 0.555570662021637 0.0 0.8286385536193848 0.5597705245018005 0.2499999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n4.121675800661251e-08 0.9238795042037964 0.3826838433742523 0.0 0.921689510345459 0.3878597319126129 0.2499999701976776 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465781271457672 0.9238795042037964 0.3753306567668915 -0.07565538585186005 0.921689510345459 0.3804132342338562 0.2187500298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 0.8314695954322815 0.5448955297470093 -0.10919522494077682 0.8286385536193848 0.5489974617958069 0.21875 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.5555701851844788 0.831469714641571 0.0 -0.5527512431144714 0.8333384394645691 0.2499999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 0.923879861831665 0.0 -0.3805353045463562 0.9247413277626038 0.2499999701976776 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 -0.38268327713012695 0.9061277508735657 -0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.21875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 -0.5555701851844788 0.8154932260513306 -0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2187499701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 0.7071067690849304 0.7071070671081543 0.0 0.7040314674377441 0.7101352214813232 0.2499999701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n2.6315596812764852e-08 0.8314695954322815 0.555570662021637 0.0 0.8286385536193848 0.5597705245018005 0.2499999701976776 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 0.8314695954322815 0.5448955297470093 -0.10919522494077682 0.8286385536193848 0.5489974617958069 0.21875 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 0.7071067690849304 0.693520188331604 -0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2187499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 -0.7071067690849304 0.7071070671081543 0.0 -0.7040314674377441 0.7101352214813232 0.2499999701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.5555701851844788 0.831469714641571 0.0 -0.5527512431144714 0.8333384394645691 0.2499999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 -0.5555701851844788 0.8154932260513306 -0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2187499701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 -0.7071067690849304 0.693520188331604 -0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2187499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.5555701851844788 0.831469714641571 0.0 0.5527512431144714 0.8333384394645691 0.2499999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 0.7071067690849304 0.7071070671081543 0.0 0.7040314674377441 0.7101352214813232 0.2499999701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 0.7071067690849304 0.693520188331604 -0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2187499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 0.5555701851844788 0.8154932260513306 -0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2187499701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0937306171854289e-08 -0.8314696550369263 0.5555704832077026 0.0 -0.8286385536193848 0.5597705245018005 0.2499999701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-2.5838467365701945e-08 -0.7071067690849304 0.7071070671081543 0.0 -0.7040314674377441 0.7101352214813232 0.2499999701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 -0.7071067690849304 0.693520188331604 -0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2187499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 -0.8314696550369263 0.544895350933075 -0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.21875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 0.3826834261417389 0.923879861831665 0.0 0.3805353045463562 0.9247413277626038 0.2499999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.5555701851844788 0.831469714641571 0.0 0.5527512431144714 0.8333384394645691 0.2499999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 0.5555701851844788 0.8154932260513306 -0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2187499701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 0.3826834261417389 0.9061277508735657 -0.18039490282535553 0.3805353045463562 0.9069795608520508 0.21875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9238796234130859 0.38268372416496277 0.0 -0.921689510345459 0.3878597319126129 0.2499999701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0937306171854289e-08 -0.8314696550369263 0.5555704832077026 0.0 -0.8286385536193848 0.5597705245018005 0.2499999701976776 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 -0.8314696550369263 0.544895350933075 -0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.21875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9238796234130859 0.37533053755760193 -0.07565538585186005 -0.921689510345459 0.3804132342338562 0.21875 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.19509035348892212 0.9807853698730469 0.0 0.19391460716724396 0.9809869527816772 0.2499999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 0.3826834261417389 0.923879861831665 0.0 0.3805353045463562 0.9247413277626038 0.2499999701976776 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 0.3826834261417389 0.9061277508735657 -0.18039490282535553 0.3805353045463562 0.9069795608520508 0.21875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 0.19509035348892212 0.961939811706543 -0.191381573677063 0.19391460716724396 0.9621570706367493 0.2187499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9807853102684021 0.1950906366109848 0.0 -0.9795831441879272 0.20096439123153687 0.2499999701976776 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9238796234130859 0.38268372416496277 0.0 -0.921689510345459 0.3878597319126129 0.2499999701976776 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9238796234130859 0.37533053755760193 -0.07565538585186005 -0.921689510345459 0.3804132342338562 0.21875 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060229271650314 -0.9807853102684021 0.19134202599525452 -0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.2187500298023224 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0034427333494023e-07 7.549790126404332e-08 1.0000003576278687 0.0 0.0 1.0 0.2499999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 0.19509035348892212 0.9807853698730469 0.0 0.19391460716724396 0.9809869527816772 0.2499999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 0.19509035348892212 0.961939811706543 -0.191381573677063 0.19391460716724396 0.9621570706367493 0.2187499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509044289588928 7.549790126404332e-08 0.980785608291626 -0.19507431983947754 0.0 0.9807733297348022 0.2187499701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-7.2120158733923745e-09 0.9807852506637573 0.19509084522724152 0.0 0.9795831441879272 0.20096439123153687 0.2499999701976776 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.23437494039535522 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03806028142571449 0.9807852506637573 0.19134221971035004 -0.039185766130685806 0.9795831441879272 0.19708853960037231 0.2187500298023224 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.2343750298023224 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n3.963855021993368e-09 -0.9807853102684021 0.1950906366109848 0.0 -0.9795831441879272 0.20096439123153687 0.2499999701976776 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060229271650314 -0.9807853102684021 0.19134202599525452 -0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.2187500298023224 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-8.544311214109257e-08 -0.19509020447731018 0.9807853698730469 0.0 -0.19391460716724396 0.9809869527816772 0.2499999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-1.0034427333494023e-07 7.549790126404332e-08 1.0000003576278687 0.0 0.0 1.0 0.2499999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509044289588928 7.549790126404332e-08 0.980785608291626 -0.19507431983947754 0.0 0.9807733297348022 0.2187499701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 -0.19509020447731018 0.961939811706543 -0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2187499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 0.3826834261417389 0.9061277508735657 -0.18039490282535553 0.3805353045463562 0.9069795608520508 0.21875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 0.5555701851844788 0.8154932260513306 -0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2187499701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.5555701851844788 0.7681777477264404 -0.3188879191875458 0.5527512431144714 0.7698904275894165 0.1874999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.3826834261417389 0.8535537123680115 -0.35386210680007935 0.3805353045463562 0.8543656468391418 0.1875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9238796234130859 0.37533053755760193 -0.07565538585186005 -0.921689510345459 0.3804132342338562 0.21875 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 -0.8314696550369263 0.544895350933075 -0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.21875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075029373169 -0.8314696550369263 0.5132802128791809 -0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.1875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464465856552124 -0.9238796234130859 0.3535536229610443 -0.14841151237487793 -0.921689510345459 0.3583483397960663 0.1875000298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 0.19509035348892212 0.961939811706543 -0.191381573677063 0.19391460716724396 0.9621570706367493 0.2187499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 0.3826834261417389 0.9061277508735657 -0.18039490282535553 0.3805353045463562 0.9069795608520508 0.21875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.3826834261417389 0.8535537123680115 -0.35386210680007935 0.3805353045463562 0.8543656468391418 0.1875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 0.19509035348892212 0.9061274528503418 -0.3754081726074219 0.19391460716724396 0.9063386917114258 0.1874999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060229271650314 -0.9807853102684021 0.19134202599525452 -0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.2187500298023224 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9238796234130859 0.37533053755760193 -0.07565538585186005 -0.921689510345459 0.3804132342338562 0.21875 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464465856552124 -0.9238796234130859 0.3535536229610443 -0.14841151237487793 -0.921689510345459 0.3583483397960663 0.1875000298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9807853102684021 0.18024024367332458 -0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.18750008940696716 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509044289588928 7.549790126404332e-08 0.980785608291626 -0.19507431983947754 0.0 0.9807733297348022 0.2187499701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 0.19509035348892212 0.961939811706543 -0.191381573677063 0.19391460716724396 0.9621570706367493 0.2187499701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 0.19509035348892212 0.9061274528503418 -0.3754081726074219 0.19391460716724396 0.9063386917114258 0.1874999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268357515335083 7.549790126404332e-08 0.9238798022270203 -0.382671594619751 0.0 0.9238563179969788 0.1874999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03806028142571449 0.9807852506637573 0.19134221971035004 -0.039185766130685806 0.9795831441879272 0.19708853960037231 0.2187500298023224 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.2031250298023224 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465790957212448 0.9807852506637573 0.1802404373884201 -0.07690664380788803 0.9795831441879272 0.18564409017562866 0.18750008940696716 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.20312508940696716 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060229271650314 -0.9807853102684021 0.19134202599525452 -0.039185766130685806 -0.9795831441879272 0.19708853960037231 0.2187500298023224 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9807853102684021 0.18024024367332458 -0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.18750008940696716 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 -0.19509020447731018 0.961939811706543 -0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2187499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509044289588928 7.549790126404332e-08 0.980785608291626 -0.19507431983947754 0.0 0.9807733297348022 0.2187499701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268357515335083 7.549790126404332e-08 0.9238798022270203 -0.382671594619751 0.0 0.9238563179969788 0.1874999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 -0.19509020447731018 0.9061274528503418 -0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.1874999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465781271457672 0.9238795042037964 0.3753306567668915 -0.07565538585186005 0.921689510345459 0.3804132342338562 0.2187500298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.03806028142571449 0.9807852506637573 0.19134221971035004 -0.039185766130685806 0.9795831441879272 0.19708853960037231 0.2187500298023224 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465790957212448 0.9807852506637573 0.1802404373884201 -0.07690664380788803 0.9795831441879272 0.18564409017562866 0.18750008940696716 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464466005563736 0.9238795042037964 0.35355374217033386 -0.14841151237487793 0.921689510345459 0.3583483397960663 0.1875000298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 -0.38268327713012695 0.9061277508735657 -0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.21875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134175777435303 -0.19509020447731018 0.961939811706543 -0.191381573677063 -0.19391460716724396 0.9621570706367493 0.2187499701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 -0.19509020447731018 0.9061274528503418 -0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.1874999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 -0.38268327713012695 0.8535537123680115 -0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.1875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 0.8314695954322815 0.5448955297470093 -0.10919522494077682 0.8286385536193848 0.5489974617958069 0.21875 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465781271457672 0.9238795042037964 0.3753306567668915 -0.07565538585186005 0.921689510345459 0.3804132342338562 0.2187500298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464466005563736 0.9238795042037964 0.35355374217033386 -0.14841151237487793 0.921689510345459 0.3583483397960663 0.1875000298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260753273963928 0.8314695954322815 0.5132803916931152 -0.2142094224691391 0.8286385536193848 0.5171361565589905 0.1875000298023224 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 -0.5555701851844788 0.8154932260513306 -0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2187499701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023990094661713 -0.38268327713012695 0.9061277508735657 -0.18039490282535553 -0.3805353045463562 0.9069795608520508 0.21875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 -0.38268327713012695 0.8535537123680115 -0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.1875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 -0.5555701851844788 0.7681777477264404 -0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.1874999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 0.7071067690849304 0.693520188331604 -0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2187499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 0.8314695954322815 0.5448955297470093 -0.10919522494077682 0.8286385536193848 0.5489974617958069 0.21875 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260753273963928 0.8314695954322815 0.5132803916931152 -0.2142094224691391 0.8286385536193848 0.5171361565589905 0.1875000298023224 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.7071067690849304 0.6532817482948303 -0.2717368006706238 0.7040314674377441 0.6560564041137695 0.1875 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 -0.7071067690849304 0.693520188331604 -0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2187499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 -0.5555701851844788 0.8154932260513306 -0.16257210075855255 -0.5527512431144714 0.8173161745071411 0.2187499701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 -0.5555701851844788 0.7681777477264404 -0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.1874999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 -0.7071067690849304 0.6532817482948303 -0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.1875 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221173107624054 0.5555701851844788 0.8154932260513306 -0.16257210075855255 0.5527512431144714 0.8173161745071411 0.2187499701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 0.7071067690849304 0.693520188331604 -0.13852351903915405 0.7040314674377441 0.6964934468269348 0.2187499701976776 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.7071067690849304 0.6532817482948303 -0.2717368006706238 0.7040314674377441 0.6560564041137695 0.1875 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.5555701851844788 0.7681777477264404 -0.3188879191875458 0.5527512431144714 0.7698904275894165 0.1874999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838636755943298 -0.8314696550369263 0.544895350933075 -0.10919522494077682 -0.8286385536193848 0.5489974617958069 0.21875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794972002506256 -0.7071067690849304 0.693520188331604 -0.13852351903915405 -0.7040314674377441 0.6964934468269348 0.2187499701976776 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 -0.7071067690849304 0.6532817482948303 -0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.1875 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075029373169 -0.8314696550369263 0.5132802128791809 -0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.1875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 -0.38268327713012695 0.8535537123680115 -0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.1875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 -0.19509020447731018 0.9061274528503418 -0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.1874999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 -0.19509020447731018 0.8154931664466858 -0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.15625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 -0.38268327713012695 0.7681780457496643 -0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.1562500298023224 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260753273963928 0.8314695954322815 0.5132803916931152 -0.2142094224691391 0.8286385536193848 0.5171361565589905 0.1875000298023224 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464466005563736 0.9238795042037964 0.35355374217033386 -0.14841151237487793 0.921689510345459 0.3583483397960663 0.1875000298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075178384781 0.9238795042037964 0.31818997859954834 -0.2154911905527115 0.921689510345459 0.32248908281326294 0.15625005960464478 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865830183029175 0.8314695954322815 0.4619401693344116 -0.3109835982322693 0.8286385536193848 0.46540728211402893 0.1562500298023224 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 -0.5555701851844788 0.7681777477264404 -0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.1874999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 -0.38268327713012695 0.8535537123680115 -0.35386210680007935 -0.3805353045463562 0.8543656468391418 0.1875 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 -0.38268327713012695 0.7681780457496643 -0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.1562500298023224 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.5555701851844788 0.6913416981697083 -0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.15625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.7071067690849304 0.6532817482948303 -0.2717368006706238 0.7040314674377441 0.6560564041137695 0.1875 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260753273963928 0.8314695954322815 0.5132803916931152 -0.2142094224691391 0.8286385536193848 0.5171361565589905 0.1875000298023224 0.8124998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865830183029175 0.8314695954322815 0.4619401693344116 -0.3109835982322693 0.8286385536193848 0.46540728211402893 0.1562500298023224 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 0.7071067690849304 0.5879380702972412 -0.39451277256011963 0.7040314674377441 0.5904415845870972 0.1562500298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 -0.7071067690849304 0.6532817482948303 -0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.1875 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 -0.5555701851844788 0.7681777477264404 -0.3188879191875458 -0.5527512431144714 0.7698904275894165 0.1874999701976776 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.5555701851844788 0.6913416981697083 -0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.15625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 -0.7071067690849304 0.5879380702972412 -0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.1562500298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.5555701851844788 0.7681777477264404 -0.3188879191875458 0.5527512431144714 0.7698904275894165 0.1874999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.7071067690849304 0.6532817482948303 -0.2717368006706238 0.7040314674377441 0.6560564041137695 0.1875 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 0.7071067690849304 0.5879380702972412 -0.39451277256011963 0.7040314674377441 0.5904415845870972 0.1562500298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 0.5555701851844788 0.6913416981697083 -0.46296578645706177 0.5527512431144714 0.6928922533988953 0.15625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075029373169 -0.8314696550369263 0.5132802128791809 -0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.1875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 -0.7071067690849304 0.6532817482948303 -0.2717368006706238 -0.7040314674377441 0.6560564041137695 0.1875 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 -0.7071067690849304 0.5879380702972412 -0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.1562500298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.308658242225647 -0.8314696550369263 0.4619399905204773 -0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.1562500298023224 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.3826834261417389 0.8535537123680115 -0.35386210680007935 0.3805353045463562 0.8543656468391418 0.1875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.5555701851844788 0.7681777477264404 -0.3188879191875458 0.5527512431144714 0.7698904275894165 0.1874999701976776 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 0.5555701851844788 0.6913416981697083 -0.46296578645706177 0.5527512431144714 0.6928922533988953 0.15625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 0.3826834261417389 0.7681780457496643 -0.5137485861778259 0.3805353045463562 0.7689138650894165 0.1562500298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464465856552124 -0.9238796234130859 0.3535536229610443 -0.14841151237487793 -0.921689510345459 0.3583483397960663 0.1875000298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075029373169 -0.8314696550369263 0.5132802128791809 -0.2142094224691391 -0.8286385536193848 0.5171361565589905 0.1875 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.308658242225647 -0.8314696550369263 0.4619399905204773 -0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.1562500298023224 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126074731349945 -0.9238796234130859 0.3181898593902588 -0.2154911905527115 -0.921689510345459 0.32248908281326294 0.1562500298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 0.19509035348892212 0.9061274528503418 -0.3754081726074219 0.19391460716724396 0.9063386917114258 0.1874999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.3826834261417389 0.8535537123680115 -0.35386210680007935 0.3805353045463562 0.8543656468391418 0.1875 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 0.3826834261417389 0.7681780457496643 -0.5137485861778259 0.3805353045463562 0.7689138650894165 0.1562500298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.19509035348892212 0.8154931664466858 -0.5449995398521423 0.19391460716724396 0.8156682252883911 0.15625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9807853102684021 0.18024024367332458 -0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.18750008940696716 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464465856552124 -0.9238796234130859 0.3535536229610443 -0.14841151237487793 -0.921689510345459 0.3583483397960663 0.1875000298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126074731349945 -0.9238796234130859 0.3181898593902588 -0.2154911905527115 -0.921689510345459 0.32248908281326294 0.1562500298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838634520769119 -0.9807853102684021 0.16221195459365845 -0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.15625014901161194 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268357515335083 7.549790126404332e-08 0.9238798022270203 -0.382671594619751 0.0 0.9238563179969788 0.1874999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 0.19509035348892212 0.9061274528503418 -0.3754081726074219 0.19391460716724396 0.9063386917114258 0.1874999701976776 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.19509035348892212 0.8154931664466858 -0.5449995398521423 0.19391460716724396 0.8156682252883911 0.15625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555703639984131 7.549790126404332e-08 0.8314698338508606 -0.5555589199066162 0.0 0.8314462900161743 0.15625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465790957212448 0.9807852506637573 0.1802404373884201 -0.07690664380788803 0.9795831441879272 0.18564409017562866 0.18750008940696716 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.17187511920928955 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838647186756134 0.9807852506637573 0.16221213340759277 -0.1116367056965828 0.9795831441879272 0.1670888364315033 0.15625011920928955 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.17187517881393433 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465782016515732 -0.9807853102684021 0.18024024367332458 -0.07690664380788803 -0.9795831441879272 0.18564409017562866 0.18750008940696716 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838634520769119 -0.9807853102684021 0.16221195459365845 -0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.15625014901161194 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533026933670044 -0.19509020447731018 0.9061274528503418 -0.3754081726074219 -0.19391460716724396 0.9063386917114258 0.1874999701976776 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268357515335083 7.549790126404332e-08 0.9238798022270203 -0.382671594619751 0.0 0.9238563179969788 0.1874999701976776 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555703639984131 7.549790126404332e-08 0.8314698338508606 -0.5555589199066162 0.0 0.8314462900161743 0.15625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 -0.19509020447731018 0.8154931664466858 -0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.15625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1464466005563736 0.9238795042037964 0.35355374217033386 -0.14841151237487793 0.921689510345459 0.3583483397960663 0.1875000298023224 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465790957212448 0.9807852506637573 0.1802404373884201 -0.07690664380788803 0.9795831441879272 0.18564409017562866 0.18750008940696716 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838647186756134 0.9807852506637573 0.16221213340759277 -0.1116367056965828 0.9795831441879272 0.1670888364315033 0.15625011920928955 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075178384781 0.9238795042037964 0.31818997859954834 -0.2154911905527115 0.921689510345459 0.32248908281326294 0.15625005960464478 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126074731349945 -0.9238796234130859 0.3181898593902588 -0.2154911905527115 -0.921689510345459 0.32248908281326294 0.1562500298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.308658242225647 -0.8314696550369263 0.4619399905204773 -0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.1562500298023224 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928474187850952 -0.8314696550369263 0.3928476870059967 -0.395794540643692 -0.8286385536193848 0.395794540643692 0.1250000298023224 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059799432754517 -0.9238796234130859 0.27059826254844666 -0.27426984906196594 -0.921689510345459 0.27426984906196594 0.12500005960464478 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.19509035348892212 0.8154931664466858 -0.5449995398521423 0.19391460716724396 0.8156682252883911 0.15625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 0.3826834261417389 0.7681780457496643 -0.5137485861778259 0.3805353045463562 0.7689138650894165 0.1562500298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 0.6532817482948303 -0.6538895964622498 0.3805353045463562 0.6538895964622498 0.1250000298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 0.19509035348892212 0.6935198903083801 -0.6936551928520203 0.19391460716724396 0.6936551928520203 0.12499997019767761 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838634520769119 -0.9807853102684021 0.16221195459365845 -0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.15625014901161194 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126074731349945 -0.9238796234130859 0.3181898593902588 -0.2154911905527115 -0.921689510345459 0.32248908281326294 0.1562500298023224 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059799432754517 -0.9238796234130859 0.27059826254844666 -0.27426984906196594 -0.921689510345459 0.27426984906196594 0.12500005960464478 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496455192566 -0.9807853102684021 0.13794997334480286 -0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.12500017881393433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555703639984131 7.549790126404332e-08 0.8314698338508606 -0.5555589199066162 0.0 0.8314462900161743 0.15625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.19509035348892212 0.8154931664466858 -0.5449995398521423 0.19391460716724396 0.8156682252883911 0.15625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 0.19509035348892212 0.6935198903083801 -0.6936551928520203 0.19391460716724396 0.6936551928520203 0.12499997019767761 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.70710688829422 7.549790126404332e-08 0.7071069478988647 -0.7070833444595337 0.0 0.7070833444595337 0.12499997019767761 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838647186756134 0.9807852506637573 0.16221213340759277 -0.1116367056965828 0.9795831441879272 0.1670888364315033 0.15625011920928955 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.1406252086162567 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794980943202972 0.9807852506637573 0.1379501223564148 -0.1420941799879074 0.9795831441879272 0.1420941799879074 0.12500017881393433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.1406252384185791 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838634520769119 -0.9807853102684021 0.16221195459365845 -0.1116367056965828 -0.9795831441879272 0.1670888364315033 0.15625014901161194 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496455192566 -0.9807853102684021 0.13794997334480286 -0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.12500017881393433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 -0.19509020447731018 0.8154931664466858 -0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.15625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555703639984131 7.549790126404332e-08 0.8314698338508606 -0.5555589199066162 0.0 0.8314462900161743 0.15625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.70710688829422 7.549790126404332e-08 0.7071069478988647 -0.7070833444595337 0.0 0.7070833444595337 0.12499997019767761 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 -0.19509020447731018 0.6935198903083801 -0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.12499997019767761 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075178384781 0.9238795042037964 0.31818997859954834 -0.2154911905527115 0.921689510345459 0.32248908281326294 0.15625005960464478 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838647186756134 0.9807852506637573 0.16221213340759277 -0.1116367056965828 0.9795831441879272 0.1670888364315033 0.15625011920928955 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794980943202972 0.9807852506637573 0.1379501223564148 -0.1420941799879074 0.9795831441879272 0.1420941799879074 0.12500017881393433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.9238795042037964 0.2705983519554138 -0.27426984906196594 0.921689510345459 0.27426984906196594 0.12500005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 -0.38268327713012695 0.7681780457496643 -0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.1562500298023224 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 -0.19509020447731018 0.8154931664466858 -0.5449995398521423 -0.19391460716724396 0.8156682252883911 0.15625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 -0.19509020447731018 0.6935198903083801 -0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.12499997019767761 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 0.6532817482948303 -0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.1250000298023224 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865830183029175 0.8314695954322815 0.4619401693344116 -0.3109835982322693 0.8286385536193848 0.46540728211402893 0.1562500298023224 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2126075178384781 0.9238795042037964 0.31818997859954834 -0.2154911905527115 0.921689510345459 0.32248908281326294 0.15625005960464478 0.8749998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.9238795042037964 0.2705983519554138 -0.27426984906196594 0.921689510345459 0.27426984906196594 0.12500005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928475081920624 0.8314695954322815 0.39284786581993103 -0.395794540643692 0.8286385536193848 0.395794540643692 0.12500005960464478 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.5555701851844788 0.6913416981697083 -0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.15625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 -0.38268327713012695 0.7681780457496643 -0.5137485861778259 -0.3805353045463562 0.7689138650894165 0.1562500298023224 0.37500011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 0.6532817482948303 -0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.1250000298023224 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.5555701851844788 0.5879377722740173 -0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.12499997019767761 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 0.7071067690849304 0.5879380702972412 -0.39451277256011963 0.7040314674377441 0.5904415845870972 0.1562500298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865830183029175 0.8314695954322815 0.4619401693344116 -0.3109835982322693 0.8286385536193848 0.46540728211402893 0.1562500298023224 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928475081920624 0.8314695954322815 0.39284786581993103 -0.395794540643692 0.8286385536193848 0.395794540643692 0.12500005960464478 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.7071067690849304 0.5000002384185791 -0.5021210312843323 0.7040314674377441 0.5021210312843323 0.1250000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 -0.7071067690849304 0.5879380702972412 -0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.1562500298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.5555701851844788 0.6913416981697083 -0.46296578645706177 -0.5527512431144714 0.6928922533988953 0.15625 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.5555701851844788 0.5879377722740173 -0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.12499997019767761 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.7071067690849304 0.5000002384185791 -0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.1250000298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 0.5555701851844788 0.6913416981697083 -0.46296578645706177 0.5527512431144714 0.6928922533988953 0.15625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 0.7071067690849304 0.5879380702972412 -0.39451277256011963 0.7040314674377441 0.5904415845870972 0.1562500298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.7071067690849304 0.5000002384185791 -0.5021210312843323 0.7040314674377441 0.5021210312843323 0.1250000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.5555701851844788 0.5879377722740173 -0.5892513990402222 0.5527512431144714 0.5892513990402222 0.12499997019767761 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.308658242225647 -0.8314696550369263 0.4619399905204773 -0.3109835982322693 -0.8286385536193848 0.46540728211402893 0.1562500298023224 0.18750005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284747838974 -0.7071067690849304 0.5879380702972412 -0.39451277256011963 -0.7040314674377441 0.5904415845870972 0.1562500298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.7071067690849304 0.5000002384185791 -0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.1250000298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928474187850952 -0.8314696550369263 0.3928476870059967 -0.395794540643692 -0.8286385536193848 0.395794540643692 0.1250000298023224 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.513279914855957 0.3826834261417389 0.7681780457496643 -0.5137485861778259 0.3805353045463562 0.7689138650894165 0.1562500298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 0.5555701851844788 0.6913416981697083 -0.46296578645706177 0.5527512431144714 0.6928922533988953 0.15625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.5555701851844788 0.5879377722740173 -0.5892513990402222 0.5527512431144714 0.5892513990402222 0.12499997019767761 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 0.6532817482948303 -0.6538895964622498 0.3805353045463562 0.6538895964622498 0.1250000298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.5555701851844788 0.5879377722740173 -0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.12499997019767761 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 0.6532817482948303 -0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.1250000298023224 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 -0.38268327713012695 0.5132802724838257 -0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.09375002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 -0.5555701851844788 0.4619397819042206 -0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.09375 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.7071067690849304 0.5000002384185791 -0.5021210312843323 0.7040314674377441 0.5021210312843323 0.1250000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928475081920624 0.8314695954322815 0.39284786581993103 -0.395794540643692 0.8286385536193848 0.395794540643692 0.12500005960464478 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619397819042206 0.8314695954322815 0.308658629655838 -0.46540728211402893 0.8286385536193848 0.3109835982322693 0.09375002980232239 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 0.7071067690849304 0.3928477168083191 -0.5904415845870972 0.7040314674377441 0.39451277256011963 0.09375002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.7071067690849304 0.5000002384185791 -0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.1250000298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.5555701851844788 0.5879377722740173 -0.5892513990402222 -0.5527512431144714 0.5892513990402222 0.12499997019767761 0.3125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 -0.5555701851844788 0.4619397819042206 -0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.09375 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 -0.7071067690849304 0.3928477168083191 -0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.09375002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.5555701851844788 0.5879377722740173 -0.5892513990402222 0.5527512431144714 0.5892513990402222 0.12499997019767761 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.7071067690849304 0.5000002384185791 -0.5021210312843323 0.7040314674377441 0.5021210312843323 0.1250000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 0.7071067690849304 0.3928477168083191 -0.5904415845870972 0.7040314674377441 0.39451277256011963 0.09375002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 0.5555701851844788 0.4619397819042206 -0.6928922533988953 0.5527512431144714 0.46296578645706177 0.09375 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928474187850952 -0.8314696550369263 0.3928476870059967 -0.395794540643692 -0.8286385536193848 0.395794540643692 0.1250000298023224 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.7071067690849304 0.5000002384185791 -0.5021210312843323 -0.7040314674377441 0.5021210312843323 0.1250000298023224 0.25000011920928955 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 -0.7071067690849304 0.3928477168083191 -0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.09375002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.8314696550369263 0.3086584806442261 -0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.09375002980232239 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 0.6532817482948303 -0.6538895964622498 0.3805353045463562 0.6538895964622498 0.1250000298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.5555701851844788 0.5879377722740173 -0.5892513990402222 0.5527512431144714 0.5892513990402222 0.12499997019767761 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 0.5555701851844788 0.4619397819042206 -0.6928922533988953 0.5527512431144714 0.46296578645706177 0.09375 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 0.3826834261417389 0.5132802724838257 -0.7689138650894165 0.3805353045463562 0.5137485861778259 0.09375002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059799432754517 -0.9238796234130859 0.27059826254844666 -0.27426984906196594 -0.921689510345459 0.27426984906196594 0.12500005960464478 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928474187850952 -0.8314696550369263 0.3928476870059967 -0.395794540643692 -0.8286385536193848 0.395794540643692 0.1250000298023224 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.8314696550369263 0.3086584806442261 -0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.09375002980232239 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 -0.9238796234130859 0.2126077115535736 -0.32248908281326294 -0.921689510345459 0.2154911905527115 0.09375008940696716 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 0.19509035348892212 0.6935198903083801 -0.6936551928520203 0.19391460716724396 0.6936551928520203 0.12499997019767761 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 0.6532817482948303 -0.6538895964622498 0.3805353045463562 0.6538895964622498 0.1250000298023224 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 0.3826834261417389 0.5132802724838257 -0.7689138650894165 0.3805353045463562 0.5137485861778259 0.09375002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 0.19509035348892212 0.5448950529098511 -0.8156682252883911 0.19391460716724396 0.5449995398521423 0.09375 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496455192566 -0.9807853102684021 0.13794997334480286 -0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.12500017881393433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059799432754517 -0.9238796234130859 0.27059826254844666 -0.27426984906196594 -0.921689510345459 0.27426984906196594 0.12500005960464478 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 -0.9238796234130859 0.2126077115535736 -0.32248908281326294 -0.921689510345459 0.2154911905527115 0.09375008940696716 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221162676811218 -0.9807853102684021 0.10838665813207626 -0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.09375020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.70710688829422 7.549790126404332e-08 0.7071069478988647 -0.7070833444595337 0.0 0.7070833444595337 0.12499997019767761 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 0.19509035348892212 0.6935198903083801 -0.6936551928520203 0.19391460716724396 0.6936551928520203 0.12499997019767761 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 0.19509035348892212 0.5448950529098511 -0.8156682252883911 0.19391460716724396 0.5449995398521423 0.09375 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314696550369263 7.549790126404332e-08 0.5555703639984131 -0.8314462900161743 0.0 0.5555589199066162 0.09375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794980943202972 0.9807852506637573 0.1379501223564148 -0.1420941799879074 0.9795831441879272 0.1420941799879074 0.12500017881393433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.10937532782554626 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622118055820465 0.9807852506637573 0.10838677734136581 -0.1670888364315033 0.9795831441879272 0.1116367056965828 0.09375020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.10937526822090149 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496455192566 -0.9807853102684021 0.13794997334480286 -0.1420941799879074 -0.9795831441879272 0.1420941799879074 0.12500017881393433 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221162676811218 -0.9807853102684021 0.10838665813207626 -0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.09375020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 -0.19509020447731018 0.6935198903083801 -0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.12499997019767761 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.70710688829422 7.549790126404332e-08 0.7071069478988647 -0.7070833444595337 0.0 0.7070833444595337 0.12499997019767761 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314696550369263 7.549790126404332e-08 0.5555703639984131 -0.8314462900161743 0.0 0.5555589199066162 0.09375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 -0.19509020447731018 0.5448950529098511 -0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.09375 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.9238795042037964 0.2705983519554138 -0.27426984906196594 0.921689510345459 0.27426984906196594 0.12500005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794980943202972 0.9807852506637573 0.1379501223564148 -0.1420941799879074 0.9795831441879272 0.1420941799879074 0.12500017881393433 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622118055820465 0.9807852506637573 0.10838677734136581 -0.1670888364315033 0.9795831441879272 0.1116367056965828 0.09375020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.9238795042037964 0.21260780096054077 -0.32248908281326294 0.921689510345459 0.2154911905527115 0.09375008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 0.6532817482948303 -0.6538895964622498 -0.3805353045463562 0.6538895964622498 0.1250000298023224 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935197710990906 -0.19509020447731018 0.6935198903083801 -0.6936551928520203 -0.19391460716724396 0.6936551928520203 0.12499997019767761 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 -0.19509020447731018 0.5448950529098511 -0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.09375 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 -0.38268327713012695 0.5132802724838257 -0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.09375002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928475081920624 0.8314695954322815 0.39284786581993103 -0.395794540643692 0.8286385536193848 0.395794540643692 0.12500005960464478 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.27059805393218994 0.9238795042037964 0.2705983519554138 -0.27426984906196594 0.921689510345459 0.27426984906196594 0.12500005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.9238795042037964 0.21260780096054077 -0.32248908281326294 0.921689510345459 0.2154911905527115 0.09375008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619397819042206 0.8314695954322815 0.308658629655838 -0.46540728211402893 0.8286385536193848 0.3109835982322693 0.09375002980232239 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221162676811218 -0.9807853102684021 0.10838665813207626 -0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.09375020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 -0.9238796234130859 0.2126077115535736 -0.32248908281326294 -0.921689510345459 0.2154911905527115 0.09375008940696716 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355326533317566 -0.9238796234130859 0.1464468091726303 -0.3583483397960663 -0.921689510345459 0.14841151237487793 0.06250005960464478 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 0.0746581181883812 -0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.06250020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314696550369263 7.549790126404332e-08 0.5555703639984131 -0.8314462900161743 0.0 0.5555589199066162 0.09375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 0.19509035348892212 0.5448950529098511 -0.8156682252883911 0.19391460716724396 0.5449995398521423 0.09375 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 0.19509035348892212 0.37533023953437805 -0.9063386917114258 0.19391460716724396 0.3754081726074219 0.0625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238795042037964 7.549790126404332e-08 0.38268354535102844 -0.9238563179969788 0.0 0.382671594619751 0.0625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622118055820465 0.9807852506637573 0.10838677734136581 -0.1670888364315033 0.9795831441879272 0.1116367056965828 0.09375020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.07812538743019104 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024009466171265 0.9807852506637573 0.07465820759534836 -0.18564409017562866 0.9795831441879272 0.07690664380788803 0.06250020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.07812532782554626 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221162676811218 -0.9807853102684021 0.10838665813207626 -0.1670888364315033 -0.9795831441879272 0.1116367056965828 0.09375020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 0.0746581181883812 -0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.06250020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 -0.19509020447731018 0.5448950529098511 -0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.09375 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314696550369263 7.549790126404332e-08 0.5555703639984131 -0.8314462900161743 0.0 0.5555589199066162 0.09375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238795042037964 7.549790126404332e-08 0.38268354535102844 -0.9238563179969788 0.0 0.382671594619751 0.0625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 -0.19509020447731018 0.37533023953437805 -0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.0625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.9238795042037964 0.21260780096054077 -0.32248908281326294 0.921689510345459 0.2154911905527115 0.09375008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622118055820465 0.9807852506637573 0.10838677734136581 -0.1670888364315033 0.9795831441879272 0.1116367056965828 0.09375020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024009466171265 0.9807852506637573 0.07465820759534836 -0.18564409017562866 0.9795831441879272 0.07690664380788803 0.06250020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535533547401428 0.9238795042037964 0.14644686877727509 -0.3583483397960663 0.921689510345459 0.14841151237487793 0.06250005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 -0.38268327713012695 0.5132802724838257 -0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.09375002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 -0.19509020447731018 0.5448950529098511 -0.8156682252883911 -0.19391460716724396 0.5449995398521423 0.09375 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 -0.19509020447731018 0.37533023953437805 -0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.0625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 -0.38268327713012695 0.3535537123680115 -0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.06250002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619397819042206 0.8314695954322815 0.308658629655838 -0.46540728211402893 0.8286385536193848 0.3109835982322693 0.09375002980232239 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181896507740021 0.9238795042037964 0.21260780096054077 -0.32248908281326294 0.921689510345459 0.2154911905527115 0.09375008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535533547401428 0.9238795042037964 0.14644686877727509 -0.3583483397960663 0.921689510345459 0.14841151237487793 0.06250005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132799744606018 0.8314695954322815 0.21260783076286316 -0.5171361565589905 0.8286385536193848 0.2142094224691391 0.06250005960464478 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 -0.5555701851844788 0.4619397819042206 -0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.09375 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 -0.38268327713012695 0.5132802724838257 -0.7689138650894165 -0.3805353045463562 0.5137485861778259 0.09375002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 -0.38268327713012695 0.3535537123680115 -0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.06250002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 -0.5555701851844788 0.31818968057632446 -0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.0625 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 0.7071067690849304 0.3928477168083191 -0.5904415845870972 0.7040314674377441 0.39451277256011963 0.09375002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619397819042206 0.8314695954322815 0.308658629655838 -0.46540728211402893 0.8286385536193848 0.3109835982322693 0.09375002980232239 0.8124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132799744606018 0.8314695954322815 0.21260783076286316 -0.5171361565589905 0.8286385536193848 0.2142094224691391 0.06250005960464478 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 0.7071067690849304 0.27059826254844666 -0.6560564041137695 0.7040314674377441 0.2717368006706238 0.06250002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 -0.7071067690849304 0.3928477168083191 -0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.09375002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 -0.5555701851844788 0.4619397819042206 -0.6928922533988953 -0.5527512431144714 0.46296578645706177 0.09375 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 -0.5555701851844788 0.31818968057632446 -0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.0625 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 -0.7071067690849304 0.27059826254844666 -0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.06250002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 0.5555701851844788 0.4619397819042206 -0.6928922533988953 0.5527512431144714 0.46296578645706177 0.09375 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 0.7071067690849304 0.3928477168083191 -0.5904415845870972 0.7040314674377441 0.39451277256011963 0.09375002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 0.7071067690849304 0.27059826254844666 -0.6560564041137695 0.7040314674377441 0.2717368006706238 0.06250002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 0.5555701851844788 0.31818968057632446 -0.7698904275894165 0.5527512431144714 0.3188879191875458 0.0625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.8314696550369263 0.3086584806442261 -0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.09375002980232239 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879377722740173 -0.7071067690849304 0.3928477168083191 -0.5904415845870972 -0.7040314674377441 0.39451277256011963 0.09375002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 -0.7071067690849304 0.27059826254844666 -0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.06250002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.8314696550369263 0.212607741355896 -0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.06250005960464478 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 0.3826834261417389 0.5132802724838257 -0.7689138650894165 0.3805353045463562 0.5137485861778259 0.09375002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6913415193557739 0.5555701851844788 0.4619397819042206 -0.6928922533988953 0.5527512431144714 0.46296578645706177 0.09375 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 0.5555701851844788 0.31818968057632446 -0.7698904275894165 0.5527512431144714 0.3188879191875458 0.0625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 0.3826834261417389 0.3535537123680115 -0.8543656468391418 0.3805353045463562 0.35386210680007935 0.06250002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 -0.9238796234130859 0.2126077115535736 -0.32248908281326294 -0.921689510345459 0.2154911905527115 0.09375008940696716 0.12500005960464478 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619396924972534 -0.8314696550369263 0.3086584806442261 -0.46540728211402893 -0.8286385536193848 0.3109835982322693 0.09375002980232239 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.8314696550369263 0.212607741355896 -0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.06250005960464478 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355326533317566 -0.9238796234130859 0.1464468091726303 -0.3583483397960663 -0.921689510345459 0.14841151237487793 0.06250005960464478 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154929280281067 0.19509035348892212 0.5448950529098511 -0.8156682252883911 0.19391460716724396 0.5449995398521423 0.09375 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776881217957 0.3826834261417389 0.5132802724838257 -0.7689138650894165 0.3805353045463562 0.5137485861778259 0.09375002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 0.3826834261417389 0.3535537123680115 -0.8543656468391418 0.3805353045463562 0.35386210680007935 0.06250002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 0.19509035348892212 0.37533023953437805 -0.9063386917114258 0.19391460716724396 0.3754081726074219 0.0625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 0.7071067690849304 0.27059826254844666 -0.6560564041137695 0.7040314674377441 0.2717368006706238 0.06250002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132799744606018 0.8314695954322815 0.21260783076286316 -0.5171361565589905 0.8286385536193848 0.2142094224691391 0.06250005960464478 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448951125144958 0.8314695954322815 0.10838666558265686 -0.5489974617958069 0.8286385536193848 0.10919522494077682 0.031250059604644775 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 0.7071067690849304 0.1379498839378357 -0.6964934468269348 0.7040314674377441 0.13852351903915405 0.03125002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 -0.7071067690849304 0.27059826254844666 -0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.06250002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 -0.5555701851844788 0.31818968057632446 -0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.0625 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 -0.5555701851844788 0.16221174597740173 -0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.03125002980232239 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 -0.7071067690849304 0.1379498839378357 -0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.03125002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 0.5555701851844788 0.31818968057632446 -0.7698904275894165 0.5527512431144714 0.3188879191875458 0.0625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 0.7071067690849304 0.27059826254844666 -0.6560564041137695 0.7040314674377441 0.2717368006706238 0.06250002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 0.7071067690849304 0.1379498839378357 -0.6964934468269348 0.7040314674377441 0.13852351903915405 0.03125002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 0.5555701851844788 0.16221174597740173 -0.8173161745071411 0.5527512431144714 0.16257210075855255 0.03125002980232239 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.8314696550369263 0.212607741355896 -0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.06250005960464478 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532814502716064 -0.7071067690849304 0.27059826254844666 -0.6560564041137695 -0.7040314674377441 0.2717368006706238 0.06250002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 -0.7071067690849304 0.1379498839378357 -0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.03125002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949933052063 -0.8314696550369263 0.10838662087917328 -0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.031250059604644775 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 0.3826834261417389 0.3535537123680115 -0.8543656468391418 0.3805353045463562 0.35386210680007935 0.06250002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 0.5555701851844788 0.31818968057632446 -0.7698904275894165 0.5527512431144714 0.3188879191875458 0.0625 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 0.5555701851844788 0.16221174597740173 -0.8173161745071411 0.5527512431144714 0.16257210075855255 0.03125002980232239 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 0.3826834261417389 0.18024027347564697 -0.9069795608520508 0.3805353045463562 0.18039490282535553 0.03125002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355326533317566 -0.9238796234130859 0.1464468091726303 -0.3583483397960663 -0.921689510345459 0.14841151237487793 0.06250005960464478 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.8314696550369263 0.212607741355896 -0.5171361565589905 -0.8286385536193848 0.2142094224691391 0.06250005960464478 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949933052063 -0.8314696550369263 0.10838662087917328 -0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.031250059604644775 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753301203250885 -0.9238796234130859 0.07465805858373642 -0.3804132342338562 -0.921689510345459 0.07565538585186005 0.03125008940696716 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 0.19509035348892212 0.37533023953437805 -0.9063386917114258 0.19391460716724396 0.3754081726074219 0.0625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 0.3826834261417389 0.3535537123680115 -0.8543656468391418 0.3805353045463562 0.35386210680007935 0.06250002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 0.3826834261417389 0.18024027347564697 -0.9069795608520508 0.3805353045463562 0.18039490282535553 0.03125002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 0.19509035348892212 0.19134174287319183 -0.9621570706367493 0.19391460716724396 0.191381573677063 0.031249970197677612 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 0.0746581181883812 -0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.06250020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355326533317566 -0.9238796234130859 0.1464468091726303 -0.3583483397960663 -0.921689510345459 0.14841151237487793 0.06250005960464478 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753301203250885 -0.9238796234130859 0.07465805858373642 -0.3804132342338562 -0.921689510345459 0.07565538585186005 0.03125008940696716 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 0.03806053474545479 -0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.0312502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238795042037964 7.549790126404332e-08 0.38268354535102844 -0.9238563179969788 0.0 0.382671594619751 0.0625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 0.19509035348892212 0.37533023953437805 -0.9063386917114258 0.19391460716724396 0.3754081726074219 0.0625 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 0.19509035348892212 0.19134174287319183 -0.9621570706367493 0.19391460716724396 0.191381573677063 0.031249970197677612 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807851910591125 7.549790126404332e-08 0.19509044289588928 -0.9807733297348022 0.0 0.19507431983947754 0.03125002980232239 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024009466171265 0.9807852506637573 0.07465820759534836 -0.18564409017562866 0.9795831441879272 0.07690664380788803 0.06250020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.04687541723251343 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134186208248138 0.9807852506637573 0.03806057572364807 -0.19708853960037231 0.9795831441879272 0.039185766130685806 0.0312502384185791 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.04687535762786865 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 0.0746581181883812 -0.18564409017562866 -0.9795831441879272 0.07690664380788803 0.06250020861625671 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 0.03806053474545479 -0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.0312502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 -0.19509020447731018 0.37533023953437805 -0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.0625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238795042037964 7.549790126404332e-08 0.38268354535102844 -0.9238563179969788 0.0 0.382671594619751 0.0625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807851910591125 7.549790126404332e-08 0.19509044289588928 -0.9807733297348022 0.0 0.19507431983947754 0.03125002980232239 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 -0.19509020447731018 0.19134174287319183 -0.9621570706367493 -0.19391460716724396 0.191381573677063 0.031249970197677612 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535533547401428 0.9238795042037964 0.14644686877727509 -0.3583483397960663 0.921689510345459 0.14841151237487793 0.06250005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024009466171265 0.9807852506637573 0.07465820759534836 -0.18564409017562866 0.9795831441879272 0.07690664380788803 0.06250020861625671 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134186208248138 0.9807852506637573 0.03806057572364807 -0.19708853960037231 0.9795831441879272 0.039185766130685806 0.0312502384185791 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 0.07465810328722 -0.3804132342338562 0.921689510345459 0.07565538585186005 0.03125008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 -0.38268327713012695 0.3535537123680115 -0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.06250002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061271548271179 -0.19509020447731018 0.37533023953437805 -0.9063386917114258 -0.19391460716724396 0.3754081726074219 0.0625 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 -0.19509020447731018 0.19134174287319183 -0.9621570706367493 -0.19391460716724396 0.191381573677063 0.031249970197677612 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 -0.38268327713012695 0.18024027347564697 -0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.03125002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132799744606018 0.8314695954322815 0.21260783076286316 -0.5171361565589905 0.8286385536193848 0.2142094224691391 0.06250005960464478 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535533547401428 0.9238795042037964 0.14644686877727509 -0.3583483397960663 0.921689510345459 0.14841151237487793 0.06250005960464478 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 0.07465810328722 -0.3804132342338562 0.921689510345459 0.07565538585186005 0.03125008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448951125144958 0.8314695954322815 0.10838666558265686 -0.5489974617958069 0.8286385536193848 0.10919522494077682 0.031250059604644775 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681774497032166 -0.5555701851844788 0.31818968057632446 -0.7698904275894165 -0.5527512431144714 0.3188879191875458 0.0625 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8535533547401428 -0.38268327713012695 0.3535537123680115 -0.8543656468391418 -0.3805353045463562 0.35386210680007935 0.06250002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 -0.38268327713012695 0.18024027347564697 -0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.03125002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 -0.5555701851844788 0.16221174597740173 -0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.03125002980232239 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807851910591125 7.549790126404332e-08 0.19509044289588928 -0.9807733297348022 0.0 0.19507431983947754 0.03125002980232239 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 0.19509035348892212 0.19134174287319183 -0.9621570706367493 0.19391460716724396 0.191381573677063 0.031249970197677612 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 0.19509035348892212 9.566792869009078e-08 -0.9809869527816772 0.19391460716724396 -0.0 0.0 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9999998211860657 7.549790126404332e-08 1.4037141227163374e-07 -1.0 0.0 -0.0 0.0 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134186208248138 0.9807852506637573 0.03806057572364807 -0.19708853960037231 0.9795831441879272 0.039185766130685806 0.0312502384185791 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.015625476837158203 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509045779705048 0.9807852506637573 3.117347660008818e-07 -0.20096439123153687 0.9795831441879272 -0.0 2.384185791015625e-07 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.015625357627868652 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 0.03806053474545479 -0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.0312502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509024918079376 -0.9807853102684021 3.154600562993437e-07 -0.20096439123153687 -0.9795831441879272 -0.0 2.384185791015625e-07 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 -0.19509020447731018 0.19134174287319183 -0.9621570706367493 -0.19391460716724396 0.191381573677063 0.031249970197677612 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807851910591125 7.549790126404332e-08 0.19509044289588928 -0.9807733297348022 0.0 0.19507431983947754 0.03125002980232239 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9999998211860657 7.549790126404332e-08 1.4037141227163374e-07 -1.0 0.0 -0.0 0.0 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 -0.19509020447731018 9.566792869009078e-08 -0.9809869527816772 -0.19391460716724396 -0.0 0.0 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 0.07465810328722 -0.3804132342338562 0.921689510345459 0.07565538585186005 0.03125008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134186208248138 0.9807852506637573 0.03806057572364807 -0.19708853960037231 0.9795831441879272 0.039185766130685806 0.0312502384185791 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509045779705048 0.9807852506637573 3.117347660008818e-07 -0.20096439123153687 0.9795831441879272 -0.0 2.384185791015625e-07 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3826833665370941 0.9238795042037964 2.819324436131865e-07 -0.3878597319126129 0.921689510345459 -0.0 8.940696716308594e-08 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 -0.38268327713012695 0.18024027347564697 -0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.03125002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 -0.19509020447731018 0.19134174287319183 -0.9621570706367493 -0.19391460716724396 0.191381573677063 0.031249970197677612 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 -0.19509020447731018 9.566792869009078e-08 -0.9809869527816772 -0.19391460716724396 -0.0 0.0 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 -0.38268327713012695 3.191853465978056e-07 -0.9247413277626038 -0.3805353045463562 -0.0 5.960464477539063e-08 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448951125144958 0.8314695954322815 0.10838666558265686 -0.5489974617958069 0.8286385536193848 0.10919522494077682 0.031250059604644775 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 0.07465810328722 -0.3804132342338562 0.921689510345459 0.07565538585186005 0.03125008940696716 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3826833665370941 0.9238795042037964 2.819324436131865e-07 -0.3878597319126129 0.921689510345459 -0.0 8.940696716308594e-08 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555701851844788 0.8314695954322815 2.819324436131865e-07 -0.5597705245018005 0.8286385536193848 -0.0 5.960464477539063e-08 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 -0.5555701851844788 0.16221174597740173 -0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.03125002980232239 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 -0.38268327713012695 0.18024027347564697 -0.9069795608520508 -0.3805353045463562 0.18039490282535553 0.03125002980232239 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 -0.38268327713012695 3.191853465978056e-07 -0.9247413277626038 -0.3805353045463562 -0.0 5.960464477539063e-08 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 -0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 -0.5527512431144714 -0.0 0.0 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 0.7071067690849304 0.1379498839378357 -0.6964934468269348 0.7040314674377441 0.13852351903915405 0.03125002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448951125144958 0.8314695954322815 0.10838666558265686 -0.5489974617958069 0.8286385536193848 0.10919522494077682 0.031250059604644775 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555701851844788 0.8314695954322815 2.819324436131865e-07 -0.5597705245018005 0.8286385536193848 -0.0 5.960464477539063e-08 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 0.7040314674377441 -0.0 0.0 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 -0.7071067690849304 0.1379498839378357 -0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.03125002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 -0.5555701851844788 0.16221174597740173 -0.8173161745071411 -0.5527512431144714 0.16257210075855255 0.03125002980232239 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 -0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 -0.5527512431144714 -0.0 0.0 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 -0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 -0.7040314674377441 -0.0 0.0 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 0.5555701851844788 0.16221174597740173 -0.8173161745071411 0.5527512431144714 0.16257210075855255 0.03125002980232239 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 0.7071067690849304 0.1379498839378357 -0.6964934468269348 0.7040314674377441 0.13852351903915405 0.03125002980232239 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 0.7040314674377441 -0.0 0.0 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 0.5527512431144714 -0.0 0.0 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949933052063 -0.8314696550369263 0.10838662087917328 -0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.031250059604644775 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198903083801 -0.7071067690849304 0.1379498839378357 -0.6964934468269348 -0.7040314674377441 0.13852351903915405 0.03125002980232239 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 -0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 -0.7040314674377441 -0.0 0.0 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555700659751892 -0.8314696550369263 2.59580701822415e-07 -0.5597705245018005 -0.8286385536193848 -0.0 5.960464477539063e-08 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 0.3826834261417389 0.18024027347564697 -0.9069795608520508 0.3805353045463562 0.18039490282535553 0.03125002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154928088188171 0.5555701851844788 0.16221174597740173 -0.8173161745071411 0.5527512431144714 0.16257210075855255 0.03125002980232239 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 0.5527512431144714 -0.0 0.0 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 0.3826834261417389 3.191853465978056e-07 -0.9247413277626038 0.3805353045463562 -0.0 5.960464477539063e-08 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753301203250885 -0.9238796234130859 0.07465805858373642 -0.3804132342338562 -0.921689510345459 0.07565538585186005 0.03125008940696716 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949933052063 -0.8314696550369263 0.10838662087917328 -0.5489974617958069 -0.8286385536193848 0.10919522494077682 0.031250059604644775 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555700659751892 -0.8314696550369263 2.59580701822415e-07 -0.5597705245018005 -0.8286385536193848 -0.0 5.960464477539063e-08 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268324732780457 -0.9238796234130859 2.5213012122549117e-07 -0.3878597319126129 -0.921689510345459 -0.0 8.940696716308594e-08 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619393944740295 0.19509035348892212 0.19134174287319183 -0.9621570706367493 0.19391460716724396 0.191381573677063 0.031249970197677612 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906127393245697 0.3826834261417389 0.18024027347564697 -0.9069795608520508 0.3805353045463562 0.18039490282535553 0.03125002980232239 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 0.3826834261417389 3.191853465978056e-07 -0.9247413277626038 0.3805353045463562 -0.0 5.960464477539063e-08 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 0.19509035348892212 9.566792869009078e-08 -0.9809869527816772 0.19391460716724396 -0.0 0.0 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 0.03806053474545479 -0.19708853960037231 -0.9795831441879272 0.039185766130685806 0.0312502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753301203250885 -0.9238796234130859 0.07465805858373642 -0.3804132342338562 -0.921689510345459 0.07565538585186005 0.03125008940696716 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268324732780457 -0.9238796234130859 2.5213012122549117e-07 -0.3878597319126129 -0.921689510345459 -0.0 8.940696716308594e-08 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509024918079376 -0.9807853102684021 3.154600562993437e-07 -0.20096439123153687 -0.9795831441879272 -0.0 2.384185791015625e-07 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 -0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 -0.7040314674377441 -0.0 1.0 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 -0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 -0.5527512431144714 -0.0 1.0 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 -0.5555701851844788 -0.16221146285533905 -0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.96875 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 -0.7071067690849304 -0.13794949650764465 -0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.96875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 0.5527512431144714 -0.0 1.0 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 0.7040314674377441 -0.0 1.0 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 0.7071067690849304 -0.13794949650764465 -0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.96875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 0.5555701851844788 -0.16221146285533905 -0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.96875 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555700659751892 -0.8314696550369263 2.59580701822415e-07 -0.5597705245018005 -0.8286385536193848 -0.0 1.0000001192092896 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 -0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 -0.7040314674377441 -0.0 1.0 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 -0.7071067690849304 -0.13794949650764465 -0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.96875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949337005615 -0.8314696550369263 -0.1083860844373703 -0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.96875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 0.3826834261417389 3.191853465978056e-07 -0.9247413277626038 0.3805353045463562 -0.0 1.0000001192092896 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 0.5527512431144714 -0.0 1.0 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 0.5555701851844788 -0.16221146285533905 -0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.96875 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 0.3826834261417389 -0.18023963272571564 -0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.96875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268324732780457 -0.9238796234130859 2.5213012122549117e-07 -0.3878597319126129 -0.921689510345459 -0.0 1.0000001192092896 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555700659751892 -0.8314696550369263 2.59580701822415e-07 -0.5597705245018005 -0.8286385536193848 -0.0 1.0000001192092896 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949337005615 -0.8314696550369263 -0.1083860844373703 -0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.96875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753300905227661 -0.9238796234130859 -0.07465754449367523 -0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.9687501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 0.19509035348892212 9.566792869009078e-08 -0.9809869527816772 0.19391460716724396 -0.0 1.0 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 0.3826834261417389 3.191853465978056e-07 -0.9247413277626038 0.3805353045463562 -0.0 1.0000001192092896 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 0.3826834261417389 -0.18023963272571564 -0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.96875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 0.19509035348892212 -0.19134153425693512 -0.9621570706367493 0.19391460716724396 -0.191381573677063 0.96875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509024918079376 -0.9807853102684021 3.154600562993437e-07 -0.20096439123153687 -0.9795831441879272 -0.0 1.000000238418579 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268324732780457 -0.9238796234130859 2.5213012122549117e-07 -0.3878597319126129 -0.921689510345459 -0.0 1.0000001192092896 0.125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753300905227661 -0.9238796234130859 -0.07465754449367523 -0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.9687501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 -0.03805990144610405 -0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9999998211860657 7.549790126404332e-08 1.4037141227163374e-07 -1.0 0.0 -0.0 1.0 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 0.19509035348892212 9.566792869009078e-08 -0.9809869527816772 0.19391460716724396 -0.0 1.0 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 0.19509035348892212 -0.19134153425693512 -0.9621570706367493 0.19391460716724396 -0.191381573677063 0.96875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807850122451782 7.549790126404332e-08 -0.1950901597738266 -0.9807733297348022 0.0 -0.19507431983947754 0.96875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509045779705048 0.9807852506637573 3.117347660008818e-07 -0.20096439123153687 0.9795831441879272 -0.0 1.000000238418579 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.9843754768371582 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913418471813202 0.9807852506637573 -0.03805994614958763 -0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.9843753576278687 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509024918079376 -0.9807853102684021 3.154600562993437e-07 -0.20096439123153687 -0.9795831441879272 -0.0 1.000000238418579 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 -0.03805990144610405 -0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 -0.19509020447731018 9.566792869009078e-08 -0.9809869527816772 -0.19391460716724396 -0.0 1.0 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9999998211860657 7.549790126404332e-08 1.4037141227163374e-07 -1.0 0.0 -0.0 1.0 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807850122451782 7.549790126404332e-08 -0.1950901597738266 -0.9807733297348022 0.0 -0.19507431983947754 0.96875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 -0.19509020447731018 -0.19134153425693512 -0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.96875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3826833665370941 0.9238795042037964 2.819324436131865e-07 -0.3878597319126129 0.921689510345459 -0.0 1.0000001192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19509045779705048 0.9807852506637573 3.117347660008818e-07 -0.20096439123153687 0.9795831441879272 -0.0 1.000000238418579 0.9374999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913418471813202 0.9807852506637573 -0.03805994614958763 -0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 -0.07465753704309464 -0.3804132342338562 0.921689510345459 -0.07565538585186005 0.9687501192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 -0.38268327713012695 3.191853465978056e-07 -0.9247413277626038 -0.3805353045463562 -0.0 1.0000001192092896 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807848334312439 -0.19509020447731018 9.566792869009078e-08 -0.9809869527816772 -0.19391460716724396 -0.0 1.0 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 -0.19509020447731018 -0.19134153425693512 -0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.96875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 -0.38268327713012695 -0.18023963272571564 -0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.96875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555701851844788 0.8314695954322815 2.819324436131865e-07 -0.5597705245018005 0.8286385536193848 -0.0 1.0000001192092896 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3826833665370941 0.9238795042037964 2.819324436131865e-07 -0.3878597319126129 0.921689510345459 -0.0 1.0000001192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 -0.07465753704309464 -0.3804132342338562 0.921689510345459 -0.07565538585186005 0.9687501192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.8314695954322815 -0.1083860844373703 -0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.96875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 -0.5555701851844788 1.4037141227163374e-07 -0.8333384394645691 -0.5527512431144714 -0.0 1.0 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238794445991516 -0.38268327713012695 3.191853465978056e-07 -0.9247413277626038 -0.3805353045463562 -0.0 1.0000001192092896 0.3750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 -0.38268327713012695 -0.18023963272571564 -0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.96875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 -0.5555701851844788 -0.16221146285533905 -0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.96875 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7071067094802856 0.7071067690849304 1.850748958531767e-07 -0.7101352214813232 0.7040314674377441 -0.0 1.0 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555701851844788 0.8314695954322815 2.819324436131865e-07 -0.5597705245018005 0.8286385536193848 -0.0 1.0000001192092896 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.8314695954322815 -0.1083860844373703 -0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.96875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 0.7071067690849304 -0.13794949650764465 -0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.96875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913418471813202 0.9807852506637573 -0.03805994614958763 -0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.9531254768371582 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024007976055145 0.9807852506637573 -0.07465756684541702 -0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.9531253576278687 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 -0.03805990144610405 -0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 -0.07465748488903046 -0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 -0.19509020447731018 -0.19134153425693512 -0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.96875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807850122451782 7.549790126404332e-08 -0.1950901597738266 -0.9807733297348022 0.0 -0.19507431983947754 0.96875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238792061805725 7.549790126404332e-08 -0.3826832175254822 -0.9238563179969788 0.0 -0.382671594619751 0.9375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 -0.19509020447731018 -0.37532997131347656 -0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.9375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 -0.07465753704309464 -0.3804132342338562 0.921689510345459 -0.07565538585186005 0.9687501192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913418471813202 0.9807852506637573 -0.03805994614958763 -0.19708853960037231 0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024007976055145 0.9807852506637573 -0.07465756684541702 -0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.9238795042037964 -0.14644630253314972 -0.3583483397960663 0.921689510345459 -0.14841151237487793 0.9375001192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 -0.38268327713012695 -0.18023963272571564 -0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.96875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 -0.19509020447731018 -0.19134153425693512 -0.9621570706367493 -0.19391460716724396 -0.191381573677063 0.96875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 -0.19509020447731018 -0.37532997131347656 -0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.9375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 -0.38268327713012695 -0.35355305671691895 -0.8543656468391418 -0.3805353045463562 -0.35389262437820435 0.9375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.8314695954322815 -0.1083860844373703 -0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.96875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37533020973205566 0.9238795042037964 -0.07465753704309464 -0.3804132342338562 0.921689510345459 -0.07565538585186005 0.9687501192092896 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.9238795042037964 -0.14644630253314972 -0.3583483397960663 0.921689510345459 -0.14841151237487793 0.9375001192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.8314695954322815 -0.2126072347164154 -0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.9375 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 -0.5555701851844788 -0.16221146285533905 -0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.96875 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 -0.38268327713012695 -0.18023963272571564 -0.9069795608520508 -0.3805353045463562 -0.18039490282535553 0.96875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 -0.38268327713012695 -0.35355305671691895 -0.8543656468391418 -0.3805353045463562 -0.35389262437820435 0.9375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 -0.5555701851844788 -0.3181893527507782 -0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.9375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 0.7071067690849304 -0.13794949650764465 -0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.96875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448950529098511 0.8314695954322815 -0.1083860844373703 -0.5489974617958069 0.8286385536193848 -0.10919522494077682 0.96875 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.8314695954322815 -0.2126072347164154 -0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.9375 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 0.7071067690849304 -0.2705978453159332 -0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.9375 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 -0.7071067690849304 -0.13794949650764465 -0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.96875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 -0.5555701851844788 -0.16221146285533905 -0.8173161745071411 -0.5527512431144714 -0.16257210075855255 0.96875 0.3124999403953552 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 -0.5555701851844788 -0.3181893527507782 -0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.9375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 -0.7071067690849304 -0.2705978453159332 -0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.9375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 0.5555701851844788 -0.16221146285533905 -0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.96875 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 0.7071067690849304 -0.13794949650764465 -0.6964934468269348 0.7040314674377441 -0.13852351903915405 0.96875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 0.7071067690849304 -0.2705978453159332 -0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.9375 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 0.5555701851844788 -0.3181893527507782 -0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.9375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949337005615 -0.8314696550369263 -0.1083860844373703 -0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.96875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935198307037354 -0.7071067690849304 -0.13794949650764465 -0.6964934468269348 -0.7040314674377441 -0.13852351903915405 0.96875 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 -0.7071067690849304 -0.2705978453159332 -0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.9375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132797360420227 -0.8314696550369263 -0.21260720491409302 -0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.9375 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 0.3826834261417389 -0.18023963272571564 -0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.96875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8154926896095276 0.5555701851844788 -0.16221146285533905 -0.8173161745071411 0.5527512431144714 -0.16257210075855255 0.96875 0.6875000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 0.5555701851844788 -0.3181893527507782 -0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.9375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 0.3826834261417389 -0.35355305671691895 -0.8543656468391418 0.3805353045463562 -0.35389262437820435 0.9375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753300905227661 -0.9238796234130859 -0.07465754449367523 -0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.9687501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448949337005615 -0.8314696550369263 -0.1083860844373703 -0.5489974617958069 -0.8286385536193848 -0.10919522494077682 0.96875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132797360420227 -0.8314696550369263 -0.21260720491409302 -0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.9375 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535532057285309 -0.9238796234130859 -0.14644628763198853 -0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.9375001192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 0.19509035348892212 -0.19134153425693512 -0.9621570706367493 0.19391460716724396 -0.191381573677063 0.96875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9061273336410522 0.3826834261417389 -0.18023963272571564 -0.9069795608520508 0.3805353045463562 -0.18039490282535553 0.96875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 0.3826834261417389 -0.35355305671691895 -0.8543656468391418 0.3805353045463562 -0.35389262437820435 0.9375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 0.19509035348892212 -0.37532997131347656 -0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.9375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19134163856506348 -0.9807853102684021 -0.03805990144610405 -0.19708853960037231 -0.9795831441879272 -0.039185766130685806 0.9687502384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3753300905227661 -0.9238796234130859 -0.07465754449367523 -0.3804132342338562 -0.921689510345459 -0.07565538585186005 0.9687501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535532057285309 -0.9238796234130859 -0.14644628763198853 -0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.9375001192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 -0.07465748488903046 -0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9807850122451782 7.549790126404332e-08 -0.1950901597738266 -0.9807733297348022 0.0 -0.19507431983947754 0.96875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9619392156600952 0.19509035348892212 -0.19134153425693512 -0.9621570706367493 0.19391460716724396 -0.191381573677063 0.96875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 0.19509035348892212 -0.37532997131347656 -0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.9375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238792061805725 7.549790126404332e-08 -0.3826832175254822 -0.9238563179969788 0.0 -0.382671594619751 0.9375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 0.5555701851844788 -0.3181893527507782 -0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.9375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 0.7071067690849304 -0.2705978453159332 -0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.9375 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.7071067690849304 -0.3928472399711609 -0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.90625 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 0.5555701851844788 -0.46193939447402954 -0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.90625 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132797360420227 -0.8314696550369263 -0.21260720491409302 -0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.9375 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 -0.7071067690849304 -0.2705978453159332 -0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.9375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.7071067690849304 -0.3928472399711609 -0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.90625 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619395136833191 -0.8314696550369263 -0.3086579144001007 -0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.90625 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 0.3826834261417389 -0.35355305671691895 -0.8543656468391418 0.3805353045463562 -0.35389262437820435 0.9375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 0.5555701851844788 -0.3181893527507782 -0.7698904275894165 0.5527512431144714 -0.3188879191875458 0.9375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 0.5555701851844788 -0.46193939447402954 -0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.90625 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 0.3826834261417389 -0.5132796168327332 -0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.90625 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535532057285309 -0.9238796234130859 -0.14644628763198853 -0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.9375001192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132797360420227 -0.8314696550369263 -0.21260720491409302 -0.5171361565589905 -0.8286385536193848 -0.2142094224691391 0.9375 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619395136833191 -0.8314696550369263 -0.3086579144001007 -0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.90625 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818944215774536 -0.9238796234130859 -0.21260716021060944 -0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.9062501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 0.19509035348892212 -0.37532997131347656 -0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.9375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 0.3826834261417389 -0.35355305671691895 -0.8543656468391418 0.3805353045463562 -0.35389262437820435 0.9375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 0.3826834261417389 -0.5132796168327332 -0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.90625 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 0.19509035348892212 -0.5448946952819824 -0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.90625 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 -0.07465748488903046 -0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3535532057285309 -0.9238796234130859 -0.14644628763198853 -0.3583483397960663 -0.921689510345459 -0.14841151237487793 0.9375001192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818944215774536 -0.9238796234130859 -0.21260716021060944 -0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.9062501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.162211611866951 -0.9807853102684021 -0.10838600248098373 -0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.9062502384185791 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238792061805725 7.549790126404332e-08 -0.3826832175254822 -0.9238563179969788 0.0 -0.382671594619751 0.9375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 0.19509035348892212 -0.37532997131347656 -0.9063386917114258 0.19391460716724396 -0.3754081726074219 0.9375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 0.19509035348892212 -0.5448946952819824 -0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.90625 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 7.549790126404332e-08 -0.5555699467658997 -0.8314462900161743 0.0 -0.5555589199066162 0.90625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024007976055145 0.9807852506637573 -0.07465756684541702 -0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.9218754768371582 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221177577972412 0.9807852506637573 -0.10838612914085388 -0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.9062501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.9218753576278687 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023988604545593 -0.9807853102684021 -0.07465748488903046 -0.18564409017562866 -0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.062499940395355225 0 1.0 0 0.0 0 0.0 0 0.0\n-0.162211611866951 -0.9807853102684021 -0.10838600248098373 -0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.9062502384185791 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 -0.19509020447731018 -0.37532997131347656 -0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.9375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.9238792061805725 7.549790126404332e-08 -0.3826832175254822 -0.9238563179969788 0.0 -0.382671594619751 0.9375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 7.549790126404332e-08 -0.5555699467658997 -0.8314462900161743 0.0 -0.5555589199066162 0.90625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 -0.19509020447731018 -0.5448946952819824 -0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.90625 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.9238795042037964 -0.14644630253314972 -0.3583483397960663 0.921689510345459 -0.14841151237487793 0.9375001192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18024007976055145 0.9807852506637573 -0.07465756684541702 -0.18564409017562866 0.9795831441879272 -0.07690664380788803 0.9375002384185791 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221177577972412 0.9807852506637573 -0.10838612914085388 -0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.9062501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 0.9238795042037964 -0.21260720491409302 -0.32248908281326294 0.921689510345459 -0.2154911905527115 0.9062501192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 -0.38268327713012695 -0.35355305671691895 -0.8543656468391418 -0.3805353045463562 -0.35389262437820435 0.9375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.906126856803894 -0.19509020447731018 -0.37532997131347656 -0.9063386917114258 -0.19391460716724396 -0.3754081726074219 0.9375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 -0.19509020447731018 -0.5448946952819824 -0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.90625 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 -0.38268327713012695 -0.5132796168327332 -0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.90625 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.8314695954322815 -0.2126072347164154 -0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.9375 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355332493782043 0.9238795042037964 -0.14644630253314972 -0.3583483397960663 0.921689510345459 -0.14841151237487793 0.9375001192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 0.9238795042037964 -0.21260720491409302 -0.32248908281326294 0.921689510345459 -0.2154911905527115 0.9062501192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46193963289260864 0.8314695954322815 -0.3086579740047455 -0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.90625 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 -0.5555701851844788 -0.3181893527507782 -0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.9375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.853553295135498 -0.38268327713012695 -0.35355305671691895 -0.8543656468391418 -0.3805353045463562 -0.35389262437820435 0.9375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 -0.38268327713012695 -0.5132796168327332 -0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.90625 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 -0.5555701851844788 -0.46193939447402954 -0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.90625 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 0.7071067690849304 -0.2705978453159332 -0.6560564041137695 0.7040314674377441 -0.2717368006706238 0.9375 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.8314695954322815 -0.2126072347164154 -0.5171361565589905 0.8286385536193848 -0.2142094224691391 0.9375 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46193963289260864 0.8314695954322815 -0.3086579740047455 -0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.90625 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.7071067690849304 -0.3928472399711609 -0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.90625 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813310623169 -0.7071067690849304 -0.2705978453159332 -0.6560564041137695 -0.7040314674377441 -0.2717368006706238 0.9375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681772708892822 -0.5555701851844788 -0.3181893527507782 -0.7698904275894165 -0.5527512431144714 -0.3188879191875458 0.9375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 -0.5555701851844788 -0.46193939447402954 -0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.90625 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.7071067690849304 -0.3928472399711609 -0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.90625 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 -0.19509020447731018 -0.5448946952819824 -0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.90625 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 7.549790126404332e-08 -0.5555699467658997 -0.8314462900161743 0.0 -0.5555589199066162 0.90625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.707106351852417 7.549790126404332e-08 -0.7071064114570618 -0.7070833444595337 0.0 -0.7070833444595337 0.875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 -0.19509020447731018 -0.6935193538665771 -0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 0.9238795042037964 -0.21260720491409302 -0.32248908281326294 0.921689510345459 -0.2154911905527115 0.9062501192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221177577972412 0.9807852506637573 -0.10838612914085388 -0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.9062501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794976472854614 0.9807852506637573 -0.13794946670532227 -0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705979347229004 0.9238795042037964 -0.2705976963043213 -0.27426984906196594 0.921689510345459 -0.27426984906196594 0.875 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 -0.38268327713012695 -0.5132796168327332 -0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.90625 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 -0.19509020447731018 -0.5448946952819824 -0.8156682252883911 -0.19391460716724396 -0.5449995398521423 0.90625 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 -0.19509020447731018 -0.6935193538665771 -0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 -0.6532810926437378 -0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46193963289260864 0.8314695954322815 -0.3086579740047455 -0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.90625 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3181895613670349 0.9238795042037964 -0.21260720491409302 -0.32248908281326294 0.921689510345459 -0.2154911905527115 0.9062501192092896 0.8750000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705979347229004 0.9238795042037964 -0.2705976963043213 -0.27426984906196594 0.921689510345459 -0.27426984906196594 0.875 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284732937812805 0.8314695954322815 -0.3928471505641937 -0.395794540643692 0.8286385536193848 -0.395794540643692 0.875 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 -0.5555701851844788 -0.46193939447402954 -0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.90625 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 -0.38268327713012695 -0.5132796168327332 -0.7689138650894165 -0.3805353045463562 -0.5137485861778259 0.90625 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 -0.6532810926437378 -0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 -0.5555701851844788 -0.5879373550415039 -0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.875 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.7071067690849304 -0.3928472399711609 -0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.90625 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.46193963289260864 0.8314695954322815 -0.3086579740047455 -0.46540728211402893 0.8286385536193848 -0.3109835982322693 0.90625 0.8125000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284732937812805 0.8314695954322815 -0.3928471505641937 -0.395794540643692 0.8286385536193848 -0.395794540643692 0.875 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 0.7071067690849304 -0.4999997317790985 -0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.7071067690849304 -0.3928472399711609 -0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.90625 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 -0.5555701851844788 -0.46193939447402954 -0.6928922533988953 -0.5527512431144714 -0.46296578645706177 0.90625 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 -0.5555701851844788 -0.5879373550415039 -0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.875 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 -0.7071067690849304 -0.4999997317790985 -0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.875 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 0.5555701851844788 -0.46193939447402954 -0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.90625 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 0.7071067690849304 -0.3928472399711609 -0.5904415845870972 0.7040314674377441 -0.39451277256011963 0.90625 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 0.7071067690849304 -0.4999997317790985 -0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 0.5555701851844788 -0.5879373550415039 -0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.875 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619395136833191 -0.8314696550369263 -0.3086579144001007 -0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.90625 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879376530647278 -0.7071067690849304 -0.3928472399711609 -0.5904415845870972 -0.7040314674377441 -0.39451277256011963 0.90625 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 -0.7071067690849304 -0.4999997317790985 -0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.875 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928472399711609 -0.8314696550369263 -0.39284706115722656 -0.395794540643692 -0.8286385536193848 -0.395794540643692 0.875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 0.3826834261417389 -0.5132796168327332 -0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.90625 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.69134122133255 0.5555701851844788 -0.46193939447402954 -0.6928922533988953 0.5527512431144714 -0.46296578645706177 0.90625 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 0.5555701851844788 -0.5879373550415039 -0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.875 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 -0.6532810926437378 -0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818944215774536 -0.9238796234130859 -0.21260716021060944 -0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.9062501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619395136833191 -0.8314696550369263 -0.3086579144001007 -0.46540728211402893 -0.8286385536193848 -0.3109835982322693 0.90625 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928472399711609 -0.8314696550369263 -0.39284706115722656 -0.395794540643692 -0.8286385536193848 -0.395794540643692 0.875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.9238796234130859 -0.2705976366996765 -0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.875 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 0.19509035348892212 -0.5448946952819824 -0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.90625 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.7681776285171509 0.3826834261417389 -0.5132796168327332 -0.7689138650894165 0.3805353045463562 -0.5137485861778259 0.90625 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 -0.6532810926437378 -0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 0.19509035348892212 -0.6935193538665771 -0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.162211611866951 -0.9807853102684021 -0.10838600248098373 -0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.9062502384185791 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818944215774536 -0.9238796234130859 -0.21260716021060944 -0.32248908281326294 -0.921689510345459 -0.2154911905527115 0.9062501192092896 0.12499988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.9238796234130859 -0.2705976366996765 -0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.875 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496306180954 -0.9807853102684021 -0.13794931769371033 -0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.8314692378044128 7.549790126404332e-08 -0.5555699467658997 -0.8314462900161743 0.0 -0.5555589199066162 0.90625 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.815492570400238 0.19509035348892212 -0.5448946952819824 -0.8156682252883911 0.19391460716724396 -0.5449995398521423 0.90625 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 0.19509035348892212 -0.6935193538665771 -0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.707106351852417 7.549790126404332e-08 -0.7071064114570618 -0.7070833444595337 0.0 -0.7070833444595337 0.875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.16221177577972412 0.9807852506637573 -0.10838612914085388 -0.1670888364315033 0.9795831441879272 -0.1116367056965828 0.9062501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.8906253576278687 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794976472854614 0.9807852506637573 -0.13794946670532227 -0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.8906252384185791 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.162211611866951 -0.9807853102684021 -0.10838600248098373 -0.1670888364315033 -0.9795831441879272 -0.1116367056965828 0.9062502384185791 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496306180954 -0.9807853102684021 -0.13794931769371033 -0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928472399711609 -0.8314696550369263 -0.39284706115722656 -0.395794540643692 -0.8286385536193848 -0.395794540643692 0.875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 -0.7071067690849304 -0.4999997317790985 -0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.875 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 -0.7071067690849304 -0.5879374742507935 -0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.84375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865806341171265 -0.8314696550369263 -0.4619393050670624 -0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.84375 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 -0.6532810926437378 -0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 0.5555701851844788 -0.5879373550415039 -0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.875 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 0.5555701851844788 -0.6913411617279053 -0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.84375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.3826834261417389 -0.768177330493927 -0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.84375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.9238796234130859 -0.2705976366996765 -0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.875 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3928472399711609 -0.8314696550369263 -0.39284706115722656 -0.395794540643692 -0.8286385536193848 -0.395794540643692 0.875 0.18749994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865806341171265 -0.8314696550369263 -0.4619393050670624 -0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.84375 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260736882686615 -0.9238796234130859 -0.31818920373916626 -0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.84375 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 0.19509035348892212 -0.6935193538665771 -0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 0.3826834261417389 -0.6532810926437378 -0.6538895964622498 0.3805353045463562 -0.6538895964622498 0.875 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.3826834261417389 -0.768177330493927 -0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.84375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 0.19509035348892212 -0.8154924511909485 -0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.84375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496306180954 -0.9807853102684021 -0.13794931769371033 -0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.9238796234130859 -0.2705976366996765 -0.27426984906196594 -0.921689510345459 -0.27426984906196594 0.875 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260736882686615 -0.9238796234130859 -0.31818920373916626 -0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.84375 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1083863228559494 -0.9807853102684021 -0.16221129894256592 -0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.707106351852417 7.549790126404332e-08 -0.7071064114570618 -0.7070833444595337 0.0 -0.7070833444595337 0.875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 0.19509035348892212 -0.6935193538665771 -0.6936551928520203 0.19391460716724396 -0.6936551928520203 0.875 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 0.19509035348892212 -0.8154924511909485 -0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.84375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555698275566101 7.549790126404332e-08 -0.8314691185951233 -0.5555589199066162 0.0 -0.8314462900161743 0.84375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794976472854614 0.9807852506637573 -0.13794946670532227 -0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.8593753576278687 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838642716407776 0.9807852506637573 -0.16221146285533905 -0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.8593752384185791 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1379496306180954 -0.9807853102684021 -0.13794931769371033 -0.1420941799879074 -0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1083863228559494 -0.9807853102684021 -0.16221129894256592 -0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 -0.19509020447731018 -0.6935193538665771 -0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.707106351852417 7.549790126404332e-08 -0.7071064114570618 -0.7070833444595337 0.0 -0.7070833444595337 0.875 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555698275566101 7.549790126404332e-08 -0.8314691185951233 -0.5555589199066162 0.0 -0.8314462900161743 0.84375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 -0.19509020447731018 -0.8154924511909485 -0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.84375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705979347229004 0.9238795042037964 -0.2705976963043213 -0.27426984906196594 0.921689510345459 -0.27426984906196594 0.875 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794976472854614 0.9807852506637573 -0.13794946670532227 -0.1420941799879074 0.9795831441879272 -0.1420941799879074 0.8750001192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838642716407776 0.9807852506637573 -0.16221146285533905 -0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260741353034973 0.9238795042037964 -0.31818926334381104 -0.2154911905527115 0.921689510345459 -0.32248908281326294 0.84375 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 -0.6532810926437378 -0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6935193538665771 -0.19509020447731018 -0.6935193538665771 -0.6936551928520203 -0.19391460716724396 -0.6936551928520203 0.875 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 -0.19509020447731018 -0.8154924511909485 -0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.84375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.38268327713012695 -0.768177330493927 -0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.84375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284732937812805 0.8314695954322815 -0.3928471505641937 -0.395794540643692 0.8286385536193848 -0.395794540643692 0.875 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705979347229004 0.9238795042037964 -0.2705976963043213 -0.27426984906196594 0.921689510345459 -0.27426984906196594 0.875 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260741353034973 0.9238795042037964 -0.31818926334381104 -0.2154911905527115 0.921689510345459 -0.32248908281326294 0.84375 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3086581230163574 0.8314695954322815 -0.46193939447402954 -0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.84375 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 -0.5555701851844788 -0.5879373550415039 -0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.875 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.6532813906669617 -0.38268327713012695 -0.6532810926437378 -0.6538895964622498 -0.3805353045463562 -0.6538895964622498 0.875 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.38268327713012695 -0.768177330493927 -0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.84375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 -0.5555701851844788 -0.6913411617279053 -0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.84375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 0.7071067690849304 -0.4999997317790985 -0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284732937812805 0.8314695954322815 -0.3928471505641937 -0.395794540643692 0.8286385536193848 -0.395794540643692 0.875 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3086581230163574 0.8314695954322815 -0.46193939447402954 -0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.84375 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 0.7071067690849304 -0.5879374742507935 -0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.84375 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 -0.7071067690849304 -0.4999997317790985 -0.5021210312843323 -0.7040314674377441 -0.5021210312843323 0.875 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 -0.5555701851844788 -0.5879373550415039 -0.5892513990402222 -0.5527512431144714 -0.5892513990402222 0.875 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 -0.5555701851844788 -0.6913411617279053 -0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.84375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 -0.7071067690849304 -0.5879374742507935 -0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.84375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5879372954368591 0.5555701851844788 -0.5879373550415039 -0.5892513990402222 0.5527512431144714 -0.5892513990402222 0.875 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.49999985098838806 0.7071067690849304 -0.4999997317790985 -0.5021210312843323 0.7040314674377441 -0.5021210312843323 0.875 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 0.7071067690849304 -0.5879374742507935 -0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.84375 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 0.5555701851844788 -0.6913411617279053 -0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.84375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.38268327713012695 -0.768177330493927 -0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.84375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 -0.19509020447731018 -0.8154924511909485 -0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.84375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 -0.19509020447731018 -0.9061266183853149 -0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.8125 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 -0.38268327713012695 -0.8535529375076294 -0.35386210680007935 -0.3805353045463562 -0.8543656468391418 0.8125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3086581230163574 0.8314695954322815 -0.46193939447402954 -0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.84375 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260741353034973 0.9238795042037964 -0.31818926334381104 -0.2154911905527115 0.921689510345459 -0.32248908281326294 0.84375 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644651114940643 0.9238795042037964 -0.35355299711227417 -0.14841151237487793 0.921689510345459 -0.3583483397960663 0.8125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260738372802734 0.8314695954322815 -0.5132795572280884 -0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.8125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 -0.5555701851844788 -0.6913411617279053 -0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.84375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 -0.38268327713012695 -0.768177330493927 -0.5137485861778259 -0.3805353045463562 -0.7689138650894165 0.84375 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 -0.38268327713012695 -0.8535529375076294 -0.35386210680007935 -0.3805353045463562 -0.8543656468391418 0.8125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 -0.5555701851844788 -0.7681770920753479 -0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.8125 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 0.7071067690849304 -0.5879374742507935 -0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.84375 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.3086581230163574 0.8314695954322815 -0.46193939447402954 -0.3109835982322693 0.8286385536193848 -0.46540728211402893 0.84375 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260738372802734 0.8314695954322815 -0.5132795572280884 -0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.8125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 0.7071067690849304 -0.6532811522483826 -0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.8125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 -0.7071067690849304 -0.5879374742507935 -0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.84375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 -0.5555701851844788 -0.6913411617279053 -0.46296578645706177 -0.5527512431144714 -0.6928922533988953 0.84375 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 -0.5555701851844788 -0.7681770920753479 -0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.8125 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.7071067690849304 -0.6532811522483826 -0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.8125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 0.5555701851844788 -0.6913411617279053 -0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.84375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 0.7071067690849304 -0.5879374742507935 -0.39451277256011963 0.7040314674377441 -0.5904415845870972 0.84375 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 0.7071067690849304 -0.6532811522483826 -0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.8125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 0.5555701851844788 -0.7681770920753479 -0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.8125 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865806341171265 -0.8314696550369263 -0.4619393050670624 -0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.84375 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.39284729957580566 -0.7071067690849304 -0.5879374742507935 -0.39451277256011963 -0.7040314674377441 -0.5904415845870972 0.84375 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.7071067690849304 -0.6532811522483826 -0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.8125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260732412338257 -0.8314696550369263 -0.5132794380187988 -0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.8125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.3826834261417389 -0.768177330493927 -0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.84375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.4619393050670624 0.5555701851844788 -0.6913411617279053 -0.46296578645706177 0.5527512431144714 -0.6928922533988953 0.84375 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 0.5555701851844788 -0.7681770920753479 -0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.8125 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 0.3826834261417389 -0.8535529375076294 -0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.8125 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260736882686615 -0.9238796234130859 -0.31818920373916626 -0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.84375 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.30865806341171265 -0.8314696550369263 -0.4619393050670624 -0.3109835982322693 -0.8286385536193848 -0.46540728211402893 0.84375 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260732412338257 -0.8314696550369263 -0.5132794380187988 -0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.8125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644648134708405 -0.9238796234130859 -0.3535529375076294 -0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.8125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 0.19509035348892212 -0.8154924511909485 -0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.84375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5132798552513123 0.3826834261417389 -0.768177330493927 -0.5137485861778259 0.3805353045463562 -0.7689138650894165 0.84375 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 0.3826834261417389 -0.8535529375076294 -0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.8125 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 0.19509035348892212 -0.9061266183853149 -0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.8125 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1083863228559494 -0.9807853102684021 -0.16221129894256592 -0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260736882686615 -0.9238796234130859 -0.31818920373916626 -0.2154911905527115 -0.921689510345459 -0.32248908281326294 0.84375 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644648134708405 -0.9238796234130859 -0.3535529375076294 -0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.8125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465779036283493 -0.9807853102684021 -0.18023957312107086 -0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.8125001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555698275566101 7.549790126404332e-08 -0.8314691185951233 -0.5555589199066162 0.0 -0.8314462900161743 0.84375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 0.19509035348892212 -0.8154924511909485 -0.5449995398521423 0.19391460716724396 -0.8156682252883911 0.84375 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 0.19509035348892212 -0.9061266183853149 -0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.8125 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268303871154785 7.549790126404332e-08 -0.9238789081573486 -0.382671594619751 0.0 -0.9238563179969788 0.8125 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838642716407776 0.9807852506637573 -0.16221146285533905 -0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.8281252384185791 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0746578574180603 0.9807852506637573 -0.18023976683616638 -0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.8125 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.8281251192092896 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1083863228559494 -0.9807853102684021 -0.16221129894256592 -0.1116367056965828 -0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465779036283493 -0.9807853102684021 -0.18023957312107086 -0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.8125001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5448945760726929 -0.19509020447731018 -0.8154924511909485 -0.5449995398521423 -0.19391460716724396 -0.8156682252883911 0.84375 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5555698275566101 7.549790126404332e-08 -0.8314691185951233 -0.5555589199066162 0.0 -0.8314462900161743 0.84375 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268303871154785 7.549790126404332e-08 -0.9238789081573486 -0.382671594619751 0.0 -0.9238563179969788 0.8125 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 -0.19509020447731018 -0.9061266183853149 -0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.8125 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260741353034973 0.9238795042037964 -0.31818926334381104 -0.2154911905527115 0.921689510345459 -0.32248908281326294 0.84375 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838642716407776 0.9807852506637573 -0.16221146285533905 -0.1116367056965828 0.9795831441879272 -0.1670888364315033 0.8437501192092896 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0746578574180603 0.9807852506637573 -0.18023976683616638 -0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.8125 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644651114940643 0.9238795042037964 -0.35355299711227417 -0.14841151237487793 0.921689510345459 -0.3583483397960663 0.8125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644648134708405 -0.9238796234130859 -0.3535529375076294 -0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.8125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260732412338257 -0.8314696550369263 -0.5132794380187988 -0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.8125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838620364665985 -0.8314696550369263 -0.5448945164680481 -0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.78125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465772330760956 -0.9238796234130859 -0.37532979249954224 -0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.78125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 0.19509035348892212 -0.9061266183853149 -0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.8125 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 0.3826834261417389 -0.8535529375076294 -0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.8125 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 0.3826834261417389 -0.9061269760131836 -0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.78125 0.6250001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 0.19509035348892212 -0.9619388580322266 -0.191381573677063 0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465779036283493 -0.9807853102684021 -0.18023957312107086 -0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.8125001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644648134708405 -0.9238796234130859 -0.3535529375076294 -0.14841151237487793 -0.921689510345459 -0.3583483397960663 0.8125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465772330760956 -0.9238796234130859 -0.37532979249954224 -0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.78125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060203194618225 -0.9807853102684021 -0.1913413256406784 -0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.78125 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268303871154785 7.549790126404332e-08 -0.9238789081573486 -0.382671594619751 0.0 -0.9238563179969788 0.8125 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 0.19509035348892212 -0.9061266183853149 -0.3754081726074219 0.19391460716724396 -0.9063386917114258 0.8125 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 0.19509035348892212 -0.9619388580322266 -0.191381573677063 0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19508998095989227 7.549790126404332e-08 -0.98078453540802 -0.19507431983947754 0.0 -0.9807733297348022 0.7812498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0746578574180603 0.9807852506637573 -0.18023976683616638 -0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.8125 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.7968752384185791 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060225546360016 0.9807852506637573 -0.19134151935577393 -0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.78125 0.9375001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.7968751192092896 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465779036283493 -0.9807853102684021 -0.18023957312107086 -0.07690664380788803 -0.9795831441879272 -0.18564409017562866 0.8125001192092896 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060203194618225 -0.9807853102684021 -0.1913413256406784 -0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.78125 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 -0.19509020447731018 -0.9061266183853149 -0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.8125 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.38268303871154785 7.549790126404332e-08 -0.9238789081573486 -0.382671594619751 0.0 -0.9238563179969788 0.8125 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19508998095989227 7.549790126404332e-08 -0.98078453540802 -0.19507431983947754 0.0 -0.9807733297348022 0.7812498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 -0.19509020447731018 -0.9619388580322266 -0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644651114940643 0.9238795042037964 -0.35355299711227417 -0.14841151237487793 0.921689510345459 -0.3583483397960663 0.8125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.0746578574180603 0.9807852506637573 -0.18023976683616638 -0.07690664380788803 0.9795831441879272 -0.18564409017562866 0.8125 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060225546360016 0.9807852506637573 -0.19134151935577393 -0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.78125 0.9375001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465773820877075 0.9238795042037964 -0.375329852104187 -0.07565538585186005 0.921689510345459 -0.3804132342338562 0.78125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 -0.38268327713012695 -0.8535529375076294 -0.35386210680007935 -0.3805353045463562 -0.8543656468391418 0.8125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.37532979249954224 -0.19509020447731018 -0.9061266183853149 -0.3754081726074219 -0.19391460716724396 -0.9063386917114258 0.8125 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 -0.19509020447731018 -0.9619388580322266 -0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 -0.38268327713012695 -0.9061269760131836 -0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.78125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260738372802734 0.8314695954322815 -0.5132795572280884 -0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.8125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.14644651114940643 0.9238795042037964 -0.35355299711227417 -0.14841151237487793 0.921689510345459 -0.3583483397960663 0.8125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465773820877075 0.9238795042037964 -0.375329852104187 -0.07565538585186005 0.921689510345459 -0.3804132342338562 0.78125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838624089956284 0.8314695954322815 -0.5448946356773376 -0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.78125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 -0.5555701851844788 -0.7681770920753479 -0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.8125 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 -0.38268327713012695 -0.8535529375076294 -0.35386210680007935 -0.3805353045463562 -0.8543656468391418 0.8125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 -0.38268327713012695 -0.9061269760131836 -0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.78125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 -0.5555701851844788 -0.8154923915863037 -0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 0.7071067690849304 -0.6532811522483826 -0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.8125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260738372802734 0.8314695954322815 -0.5132795572280884 -0.2142094224691391 0.8286385536193848 -0.5171361565589905 0.8125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838624089956284 0.8314695954322815 -0.5448946356773376 -0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.78125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 0.7071067690849304 -0.6935195326805115 -0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.78125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.7071067690849304 -0.6532811522483826 -0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.8125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 -0.5555701851844788 -0.7681770920753479 -0.3188879191875458 -0.5527512431144714 -0.7698904275894165 0.8125 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 -0.5555701851844788 -0.8154923915863037 -0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 -0.7071067690849304 -0.6935195326805115 -0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.78125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 0.5555701851844788 -0.7681770920753479 -0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.8125 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 0.7071067690849304 -0.6532811522483826 -0.2717368006706238 0.7040314674377441 -0.6560564041137695 0.8125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 0.7071067690849304 -0.6935195326805115 -0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.78125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 0.5555701851844788 -0.8154923915863037 -0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.21260732412338257 -0.8314696550369263 -0.5132794380187988 -0.2142094224691391 -0.8286385536193848 -0.5171361565589905 0.8125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.2705978751182556 -0.7071067690849304 -0.6532811522483826 -0.2717368006706238 -0.7040314674377441 -0.6560564041137695 0.8125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 -0.7071067690849304 -0.6935195326805115 -0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.78125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838620364665985 -0.8314696550369263 -0.5448945164680481 -0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.78125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.35355329513549805 0.3826834261417389 -0.8535529375076294 -0.35386210680007935 0.3805353045463562 -0.8543656468391418 0.8125 0.6250000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.31818920373916626 0.5555701851844788 -0.7681770920753479 -0.3188879191875458 0.5527512431144714 -0.7698904275894165 0.8125 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 0.5555701851844788 -0.8154923915863037 -0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 0.3826834261417389 -0.9061269760131836 -0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.78125 0.6250001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838624089956284 0.8314695954322815 -0.5448946356773376 -0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.78125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465773820877075 0.9238795042037964 -0.375329852104187 -0.07565538585186005 0.921689510345459 -0.3804132342338562 0.78125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9238795042037964 -0.3826834559440613 0.0 0.921689510345459 -0.3878597319126129 0.75 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8314695954322815 -0.5555702447891235 0.0 0.8286385536193848 -0.5597705245018005 0.75 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 -0.5555701851844788 -0.8154923915863037 -0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 -0.38268327713012695 -0.9061269760131836 -0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.78125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 -0.9238790273666382 0.0 -0.3805353045463562 -0.9247413277626038 0.75 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n2.7218476361667854e-07 -0.5555701851844788 -0.8314687609672546 0.0 -0.5527512431144714 -0.8333384394645691 0.7499998807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 0.7071067690849304 -0.6935195326805115 -0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.78125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838624089956284 0.8314695954322815 -0.5448946356773376 -0.10919522494077682 0.8286385536193848 -0.5489974617958069 0.78125 0.8125001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.8314695954322815 -0.5555702447891235 0.0 0.8286385536193848 -0.5597705245018005 0.75 0.8125 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.7071067690849304 -0.7071067690849304 0.0 0.7040314674377441 -0.7101352214813232 0.75 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 -0.7071067690849304 -0.6935195326805115 -0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.78125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 -0.5555701851844788 -0.8154923915863037 -0.16257210075855255 -0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n2.7218476361667854e-07 -0.5555701851844788 -0.8314687609672546 0.0 -0.5527512431144714 -0.8333384394645691 0.7499998807907104 0.31249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n1.529754740658973e-07 -0.7071067690849304 -0.707106351852417 0.0 -0.7040314674377441 -0.7101352214813232 0.7499998807907104 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 0.5555701851844788 -0.8154923915863037 -0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 0.7071067690849304 -0.6935195326805115 -0.13852351903915405 0.7040314674377441 -0.6964934468269348 0.78125 0.7500001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.7071067690849304 -0.7071067690849304 0.0 0.7040314674377441 -0.7101352214813232 0.75 0.7500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5555701851844788 -0.8314696550369263 0.0 0.5527512431144714 -0.8333384394645691 0.75 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838620364665985 -0.8314696550369263 -0.5448945164680481 -0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.78125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.13794952630996704 -0.7071067690849304 -0.6935195326805115 -0.13852351903915405 -0.7040314674377441 -0.6964934468269348 0.78125 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n1.529754740658973e-07 -0.7071067690849304 -0.707106351852417 0.0 -0.7040314674377441 -0.7101352214813232 0.7499998807907104 0.24999994039535522 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.8314696550369263 -0.5555701851844788 0.0 -0.8286385536193848 -0.5597705245018005 0.75 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 0.3826834261417389 -0.9061269760131836 -0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.78125 0.6250001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1622113138437271 0.5555701851844788 -0.8154923915863037 -0.16257210075855255 0.5527512431144714 -0.8173161745071411 0.7812498807907104 0.6875001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5555701851844788 -0.8314696550369263 0.0 0.5527512431144714 -0.8333384394645691 0.75 0.6875 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3826834261417389 -0.9238795042037964 0.0 0.3805353045463562 -0.9247413277626038 0.75 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465772330760956 -0.9238796234130859 -0.37532979249954224 -0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.78125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.10838620364665985 -0.8314696550369263 -0.5448945164680481 -0.10919522494077682 -0.8286385536193848 -0.5489974617958069 0.78125 0.18749982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.8314696550369263 -0.5555701851844788 0.0 -0.8286385536193848 -0.5597705245018005 0.75 0.1875 0 1.0 0 0.0 0 0.0 0 0.0\n7.846966099123165e-08 -0.9238796234130859 -0.3826829195022583 0.0 -0.921689510345459 -0.3878597319126129 0.7499998807907104 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 0.19509035348892212 -0.9619388580322266 -0.191381573677063 0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 0.3826834261417389 -0.9061269760131836 -0.18039490282535553 0.3805353045463562 -0.9069795608520508 0.78125 0.6250001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.3826834261417389 -0.9238795042037964 0.0 0.3805353045463562 -0.9247413277626038 0.75 0.625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.19509035348892212 -0.9807852506637573 0.0 0.19391460716724396 -0.9809869527816772 0.75 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060203194618225 -0.9807853102684021 -0.1913413256406784 -0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.78125 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465772330760956 -0.9238796234130859 -0.37532979249954224 -0.07565538585186005 -0.921689510345459 -0.3804132342338562 0.78125 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n7.846966099123165e-08 -0.9238796234130859 -0.3826829195022583 0.0 -0.921689510345459 -0.3878597319126129 0.7499998807907104 0.12499982118606567 0 1.0 0 0.0 0 0.0 0 0.0\n1.513972591737911e-08 -0.9807853102684021 -0.1950899213552475 0.0 -0.9795831441879272 -0.20096439123153687 0.75 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19508998095989227 7.549790126404332e-08 -0.98078453540802 -0.19507431983947754 0.0 -0.9807733297348022 0.7812498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 0.19509035348892212 -0.9619388580322266 -0.191381573677063 0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.5625000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.19509035348892212 -0.9807852506637573 0.0 0.19391460716724396 -0.9809869527816772 0.75 0.5625 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 7.549790126404332e-08 -1.0 0.0 0.0 -1.0 0.75 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060225546360016 0.9807852506637573 -0.19134151935577393 -0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.78125 0.9375001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-2.304045381151809e-07 1.0 5.562458795793646e-07 0.0 1.0 -0.0 0.7656251192092896 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9807852506637573 -0.19509032368659973 0.0 0.9795831441879272 -0.20096439123153687 0.75 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -1.0 3.2584136988589307e-07 0.0 -1.0 -0.0 0.765625 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060203194618225 -0.9807853102684021 -0.1913413256406784 -0.039185766130685806 -0.9795831441879272 -0.19708853960037231 0.78125 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n1.513972591737911e-08 -0.9807853102684021 -0.1950899213552475 0.0 -0.9795831441879272 -0.20096439123153687 0.75 0.06249988079071045 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 -0.19509020447731018 -0.9619388580322266 -0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.19508998095989227 7.549790126404332e-08 -0.98078453540802 -0.19507431983947754 0.0 -0.9807733297348022 0.7812498807907104 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 7.549790126404332e-08 -1.0 0.0 0.0 -1.0 0.75 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.19509020447731018 -0.9807853102684021 0.0 -0.19391460716724396 -0.9809869527816772 0.75 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.07465773820877075 0.9238795042037964 -0.375329852104187 -0.07565538585186005 0.921689510345459 -0.3804132342338562 0.78125 0.8750001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n-0.038060225546360016 0.9807852506637573 -0.19134151935577393 -0.039185766130685806 0.9795831441879272 -0.19708853960037231 0.78125 0.9375001192092896 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9807852506637573 -0.19509032368659973 0.0 0.9795831441879272 -0.20096439123153687 0.75 0.9375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.9238795042037964 -0.3826834559440613 0.0 0.921689510345459 -0.3878597319126129 0.75 0.875 0 1.0 0 0.0 0 0.0 0 0.0\n-0.18023987114429474 -0.38268327713012695 -0.9061269760131836 -0.18039490282535553 -0.3805353045463562 -0.9069795608520508 0.78125 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n-0.1913413405418396 -0.19509020447731018 -0.9619388580322266 -0.191381573677063 -0.19391460716724396 -0.9621570706367493 0.7812498807907104 0.4375 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.19509020447731018 -0.9807853102684021 0.0 -0.19391460716724396 -0.9809869527816772 0.75 0.4375000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n6.356849979738399e-08 -0.38268327713012695 -0.9238790273666382 0.0 -0.3805353045463562 -0.9247413277626038 0.75 0.375 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n0 2 3 0\n4 5 6 0\n4 6 7 0\n8 9 10 0\n8 10 11 0\n12 13 14 0\n12 14 15 0\n16 17 18 0\n16 18 19 0\n20 21 22 0\n20 22 23 0\n24 25 26 0\n24 26 27 0\n28 29 30 0\n28 30 31 0\n32 33 34 0\n32 34 35 0\n36 37 38 0\n36 38 39 0\n40 41 42 0\n40 42 43 0\n44 45 46 0\n44 46 47 0\n48 49 50 0\n51 52 53 0\n54 55 56 0\n54 56 57 0\n58 59 60 0\n58 60 61 0\n62 63 64 0\n65 66 67 0\n65 67 68 0\n69 70 71 0\n69 71 72 0\n73 74 75 0\n73 75 76 0\n77 78 79 0\n77 79 80 0\n81 82 83 0\n81 83 84 0\n85 86 87 0\n85 87 88 0\n89 90 91 0\n89 91 92 0\n93 94 95 0\n93 95 96 0\n97 98 99 0\n97 99 100 0\n101 102 103 0\n101 103 104 0\n105 106 107 0\n105 107 108 0\n109 110 111 0\n109 111 112 0\n113 114 115 0\n113 115 116 0\n117 118 119 0\n117 119 120 0\n121 122 123 0\n124 125 126 0\n124 126 127 0\n128 129 130 0\n128 130 131 0\n132 133 134 0\n132 134 135 0\n136 137 138 0\n136 138 139 0\n140 141 142 0\n140 142 143 0\n144 145 146 0\n144 146 147 0\n148 149 150 0\n151 152 153 0\n154 155 156 0\n154 156 157 0\n158 159 160 0\n158 160 161 0\n162 163 164 0\n162 164 165 0\n166 167 168 0\n166 168 169 0\n170 171 172 0\n170 172 173 0\n174 175 176 0\n174 176 177 0\n178 179 180 0\n178 180 181 0\n182 183 184 0\n182 184 185 0\n186 187 188 0\n186 188 189 0\n190 191 192 0\n190 192 193 0\n194 195 196 0\n194 196 197 0\n198 199 200 0\n198 200 201 0\n202 203 204 0\n202 204 205 0\n206 207 208 0\n206 208 209 0\n210 211 212 0\n210 212 213 0\n214 215 216 0\n214 216 217 0\n218 219 220 0\n218 220 221 0\n222 223 224 0\n222 224 225 0\n226 227 228 0\n226 228 229 0\n230 231 232 0\n230 232 233 0\n234 235 236 0\n234 236 237 0\n238 239 240 0\n241 242 243 0\n244 245 246 0\n244 246 247 0\n248 249 250 0\n248 250 251 0\n252 253 254 0\n252 254 255 0\n256 257 258 0\n256 258 259 0\n260 261 262 0\n260 262 263 0\n264 265 266 0\n264 266 267 0\n268 269 270 0\n271 272 273 0\n274 275 276 0\n274 276 277 0\n278 279 280 0\n278 280 281 0\n282 283 284 0\n282 284 285 0\n286 287 288 0\n286 288 289 0\n290 291 292 0\n290 292 293 0\n294 295 296 0\n294 296 297 0\n298 299 300 0\n298 300 301 0\n302 303 304 0\n302 304 305 0\n306 307 308 0\n306 308 309 0\n310 311 312 0\n310 312 313 0\n314 315 316 0\n314 316 317 0\n318 319 320 0\n318 320 321 0\n322 323 324 0\n322 324 325 0\n326 327 328 0\n326 328 329 0\n330 331 332 0\n330 332 333 0\n334 335 336 0\n334 336 337 0\n338 339 340 0\n338 340 341 0\n342 343 344 0\n342 344 345 0\n346 347 348 0\n346 348 349 0\n350 351 352 0\n350 352 353 0\n354 355 356 0\n354 356 357 0\n358 359 360 0\n361 362 363 0\n364 365 366 0\n364 366 367 0\n368 369 370 0\n368 370 371 0\n372 373 374 0\n372 374 375 0\n376 377 378 0\n376 378 379 0\n380 381 382 0\n380 382 383 0\n384 385 386 0\n384 386 387 0\n388 389 390 0\n391 392 393 0\n394 395 396 0\n394 396 397 0\n398 399 400 0\n398 400 401 0\n402 403 404 0\n402 404 405 0\n406 407 408 0\n406 408 409 0\n410 411 412 0\n410 412 413 0\n414 415 416 0\n414 416 417 0\n418 419 420 0\n418 420 421 0\n422 423 424 0\n422 424 425 0\n426 427 428 0\n426 428 429 0\n430 431 432 0\n430 432 433 0\n434 435 436 0\n434 436 437 0\n438 439 440 0\n438 440 441 0\n442 443 444 0\n442 444 445 0\n446 447 448 0\n446 448 449 0\n450 451 452 0\n450 452 453 0\n454 455 456 0\n454 456 457 0\n458 459 460 0\n458 460 461 0\n462 463 464 0\n462 464 465 0\n466 467 468 0\n466 468 469 0\n470 471 472 0\n470 472 473 0\n474 475 476 0\n474 476 477 0\n478 479 480 0\n481 482 483 0\n484 485 486 0\n484 486 487 0\n488 489 490 0\n488 490 491 0\n492 493 494 0\n492 494 495 0\n496 497 498 0\n496 498 499 0\n500 501 502 0\n500 502 503 0\n504 505 506 0\n504 506 507 0\n508 509 510 0\n511 512 513 0\n514 515 516 0\n514 516 517 0\n518 519 520 0\n518 520 521 0\n522 523 524 0\n522 524 525 0\n526 527 528 0\n526 528 529 0\n530 531 532 0\n530 532 533 0\n534 535 536 0\n534 536 537 0\n538 539 540 0\n538 540 541 0\n542 543 544 0\n542 544 545 0\n546 547 548 0\n546 548 549 0\n550 551 552 0\n550 552 553 0\n554 555 556 0\n554 556 557 0\n558 559 560 0\n558 560 561 0\n562 563 564 0\n562 564 565 0\n566 567 568 0\n566 568 569 0\n570 571 572 0\n570 572 573 0\n574 575 576 0\n574 576 577 0\n578 579 580 0\n578 580 581 0\n582 583 584 0\n582 584 585 0\n586 587 588 0\n586 588 589 0\n590 591 592 0\n590 592 593 0\n594 595 596 0\n594 596 597 0\n598 599 600 0\n601 602 603 0\n604 605 606 0\n604 606 607 0\n608 609 610 0\n608 610 611 0\n612 613 614 0\n612 614 615 0\n616 617 618 0\n616 618 619 0\n620 621 622 0\n620 622 623 0\n624 625 626 0\n624 626 627 0\n628 629 630 0\n631 632 633 0\n634 635 636 0\n634 636 637 0\n638 639 640 0\n638 640 641 0\n642 643 644 0\n642 644 645 0\n646 647 648 0\n646 648 649 0\n650 651 652 0\n650 652 653 0\n654 655 656 0\n654 656 657 0\n658 659 660 0\n658 660 661 0\n662 663 664 0\n662 664 665 0\n666 667 668 0\n666 668 669 0\n670 671 672 0\n670 672 673 0\n674 675 676 0\n674 676 677 0\n678 679 680 0\n678 680 681 0\n682 683 684 0\n682 684 685 0\n686 687 688 0\n686 688 689 0\n690 691 692 0\n690 692 693 0\n694 695 696 0\n694 696 697 0\n698 699 700 0\n698 700 701 0\n702 703 704 0\n702 704 705 0\n706 707 708 0\n706 708 709 0\n710 711 712 0\n710 712 713 0\n714 715 716 0\n717 718 719 0\n720 721 722 0\n720 722 723 0\n724 725 726 0\n724 726 727 0\n728 729 730 0\n728 730 731 0\n732 733 734 0\n732 734 735 0\n736 737 738 0\n736 738 739 0\n740 741 742 0\n740 742 743 0\n744 745 746 0\n747 748 749 0\n750 751 752 0\n750 752 753 0\n754 755 756 0\n754 756 757 0\n758 759 760 0\n758 760 761 0\n762 763 764 0\n762 764 765 0\n766 767 768 0\n766 768 769 0\n770 771 772 0\n770 772 773 0\n774 775 776 0\n774 776 777 0\n778 779 780 0\n778 780 781 0\n782 783 784 0\n782 784 785 0\n786 787 788 0\n786 788 789 0\n790 791 792 0\n790 792 793 0\n794 795 796 0\n794 796 797 0\n798 799 800 0\n798 800 801 0\n802 803 804 0\n802 804 805 0\n806 807 808 0\n806 808 809 0\n810 811 812 0\n810 812 813 0\n814 815 816 0\n814 816 817 0\n818 819 820 0\n818 820 821 0\n822 823 824 0\n822 824 825 0\n826 827 828 0\n826 828 829 0\n830 831 832 0\n830 832 833 0\n834 835 836 0\n837 838 839 0\n840 841 842 0\n840 842 843 0\n844 845 846 0\n844 846 847 0\n848 849 850 0\n848 850 851 0\n852 853 854 0\n852 854 855 0\n856 857 858 0\n856 858 859 0\n860 861 862 0\n860 862 863 0\n864 865 866 0\n864 866 867 0\n868 869 870 0\n868 870 871 0\n872 873 874 0\n872 874 875 0\n876 877 878 0\n876 878 879 0\n880 881 882 0\n880 882 883 0\n884 885 886 0\n884 886 887 0\n888 889 890 0\n888 890 891 0\n892 893 894 0\n892 894 895 0\n896 897 898 0\n896 898 899 0\n900 901 902 0\n900 902 903 0\n904 905 906 0\n904 906 907 0\n908 909 910 0\n908 910 911 0\n912 913 914 0\n912 914 915 0\n916 917 918 0\n916 918 919 0\n920 921 922 0\n920 922 923 0\n924 925 926 0\n927 928 929 0\n930 931 932 0\n930 932 933 0\n934 935 936 0\n934 936 937 0\n938 939 940 0\n938 940 941 0\n942 943 944 0\n942 944 945 0\n946 947 948 0\n946 948 949 0\n950 951 952 0\n950 952 953 0\n954 955 956 0\n957 958 959 0\n960 961 962 0\n960 962 963 0\n964 965 966 0\n964 966 967 0\n968 969 970 0\n968 970 971 0\n972 973 974 0\n972 974 975 0\n976 977 978 0\n976 978 979 0\n980 981 982 0\n980 982 983 0\n984 985 986 0\n984 986 987 0\n988 989 990 0\n988 990 991 0\n992 993 994 0\n992 994 995 0\n996 997 998 0\n996 998 999 0\n1000 1001 1002 0\n1000 1002 1003 0\n1004 1005 1006 0\n1004 1006 1007 0\n1008 1009 1010 0\n1008 1010 1011 0\n1012 1013 1014 0\n1012 1014 1015 0\n1016 1017 1018 0\n1016 1018 1019 0\n1020 1021 1022 0\n1020 1022 1023 0\n1024 1025 1026 0\n1024 1026 1027 0\n1028 1029 1030 0\n1028 1030 1031 0\n1032 1033 1034 0\n1032 1034 1035 0\n1036 1037 1038 0\n1036 1038 1039 0\n1040 1041 1042 0\n1040 1042 1043 0\n1044 1045 1046 0\n1047 1048 1049 0\n1050 1051 1052 0\n1050 1052 1053 0\n1054 1055 1056 0\n1054 1056 1057 0\n1058 1059 1060 0\n1058 1060 1061 0\n1062 1063 1064 0\n1062 1064 1065 0\n1066 1067 1068 0\n1066 1068 1069 0\n1070 1071 1072 0\n1070 1072 1073 0\n1074 1075 1076 0\n1077 1078 1079 0\n1080 1081 1082 0\n1080 1082 1083 0\n1084 1085 1086 0\n1084 1086 1087 0\n1088 1089 1090 0\n1088 1090 1091 0\n1092 1093 1094 0\n1092 1094 1095 0\n1096 1097 1098 0\n1096 1098 1099 0\n1100 1101 1102 0\n1100 1102 1103 0\n1104 1105 1106 0\n1104 1106 1107 0\n1108 1109 1110 0\n1108 1110 1111 0\n1112 1113 1114 0\n1112 1114 1115 0\n1116 1117 1118 0\n1116 1118 1119 0\n1120 1121 1122 0\n1120 1122 1123 0\n1124 1125 1126 0\n1124 1126 1127 0\n1128 1129 1130 0\n1128 1130 1131 0\n1132 1133 1134 0\n1132 1134 1135 0\n1136 1137 1138 0\n1136 1138 1139 0\n1140 1141 1142 0\n1140 1142 1143 0\n1144 1145 1146 0\n1144 1146 1147 0\n1148 1149 1150 0\n1148 1150 1151 0\n1152 1153 1154 0\n1152 1154 1155 0\n1156 1157 1158 0\n1156 1158 1159 0\n1160 1161 1162 0\n1160 1162 1163 0\n1164 1165 1166 0\n1167 1168 1169 0\n1170 1171 1172 0\n1170 1172 1173 0\n1174 1175 1176 0\n1174 1176 1177 0\n1178 1179 1180 0\n1178 1180 1181 0\n1182 1183 1184 0\n1182 1184 1185 0\n1186 1187 1188 0\n1186 1188 1189 0\n1190 1191 1192 0\n1190 1192 1193 0\n1194 1195 1196 0\n1197 1198 1199 0\n1200 1201 1202 0\n1200 1202 1203 0\n1204 1205 1206 0\n1204 1206 1207 0\n1208 1209 1210 0\n1208 1210 1211 0\n1212 1213 1214 0\n1212 1214 1215 0\n1216 1217 1218 0\n1216 1218 1219 0\n1220 1221 1222 0\n1220 1222 1223 0\n1224 1225 1226 0\n1224 1226 1227 0\n1228 1229 1230 0\n1228 1230 1231 0\n1232 1233 1234 0\n1232 1234 1235 0\n1236 1237 1238 0\n1236 1238 1239 0\n1240 1241 1242 0\n1240 1242 1243 0\n1244 1245 1246 0\n1244 1246 1247 0\n1248 1249 1250 0\n1248 1250 1251 0\n1252 1253 1254 0\n1252 1254 1255 0\n1256 1257 1258 0\n1256 1258 1259 0\n1260 1261 1262 0\n1260 1262 1263 0\n1264 1265 1266 0\n1264 1266 1267 0\n1268 1269 1270 0\n1268 1270 1271 0\n1272 1273 1274 0\n1272 1274 1275 0\n1276 1277 1278 0\n1276 1278 1279 0\n1280 1281 1282 0\n1283 1284 1285 0\n1286 1287 1288 0\n1286 1288 1289 0\n1290 1291 1292 0\n1290 1292 1293 0\n1294 1295 1296 0\n1294 1296 1297 0\n1298 1299 1300 0\n1298 1300 1301 0\n1302 1303 1304 0\n1302 1304 1305 0\n1306 1307 1308 0\n1306 1308 1309 0\n1310 1311 1312 0\n1313 1314 1315 0\n1316 1317 1318 0\n1316 1318 1319 0\n1320 1321 1322 0\n1320 1322 1323 0\n1324 1325 1326 0\n1324 1326 1327 0\n1328 1329 1330 0\n1328 1330 1331 0\n1332 1333 1334 0\n1332 1334 1335 0\n1336 1337 1338 0\n1336 1338 1339 0\n1340 1341 1342 0\n1340 1342 1343 0\n1344 1345 1346 0\n1344 1346 1347 0\n1348 1349 1350 0\n1348 1350 1351 0\n1352 1353 1354 0\n1352 1354 1355 0\n1356 1357 1358 0\n1356 1358 1359 0\n1360 1361 1362 0\n1360 1362 1363 0\n1364 1365 1366 0\n1364 1366 1367 0\n1368 1369 1370 0\n1368 1370 1371 0\n1372 1373 1374 0\n1372 1374 1375 0\n1376 1377 1378 0\n1376 1378 1379 0\n1380 1381 1382 0\n1380 1382 1383 0\n1384 1385 1386 0\n1384 1386 1387 0\n1388 1389 1390 0\n1388 1390 1391 0\n1392 1393 1394 0\n1392 1394 1395 0\n1396 1397 1398 0\n1396 1398 1399 0\n1400 1401 1402 0\n1403 1404 1405 0\n1406 1407 1408 0\n1406 1408 1409 0\n1410 1411 1412 0\n1410 1412 1413 0\n1414 1415 1416 0\n1414 1416 1417 0\n1418 1419 1420 0\n1418 1420 1421 0\n1422 1423 1424 0\n1422 1424 1425 0\n1426 1427 1428 0\n1426 1428 1429 0\n1430 1431 1432 0\n1433 1434 1435 0\n1436 1437 1438 0\n1436 1438 1439 0\n1440 1441 1442 0\n1440 1442 1443 0\n1444 1445 1446 0\n1444 1446 1447 0\n1448 1449 1450 0\n1448 1450 1451 0\n1452 1453 1454 0\n1452 1454 1455 0\n1456 1457 1458 0\n1456 1458 1459 0\n1460 1461 1462 0\n1460 1462 1463 0\n1464 1465 1466 0\n1464 1466 1467 0\n1468 1469 1470 0\n1468 1470 1471 0\n1472 1473 1474 0\n1472 1474 1475 0\n1476 1477 1478 0\n1476 1478 1479 0\n1480 1481 1482 0\n1480 1482 1483 0\n1484 1485 1486 0\n1484 1486 1487 0\n1488 1489 1490 0\n1488 1490 1491 0\n1492 1493 1494 0\n1492 1494 1495 0\n1496 1497 1498 0\n1496 1498 1499 0\n1500 1501 1502 0\n1500 1502 1503 0\n1504 1505 1506 0\n1504 1506 1507 0\n1508 1509 1510 0\n1508 1510 1511 0\n1512 1513 1514 0\n1512 1514 1515 0\n1516 1517 1518 0\n1516 1518 1519 0\n1520 1521 1522 0\n1523 1524 1525 0\n1526 1527 1528 0\n1526 1528 1529 0\n1530 1531 1532 0\n1530 1532 1533 0\n1534 1535 1536 0\n1534 1536 1537 0\n1538 1539 1540 0\n1538 1540 1541 0\n1542 1543 1544 0\n1542 1544 1545 0\n1546 1547 1548 0\n1546 1548 1549 0\n1550 1551 1552 0\n1553 1554 1555 0\n1556 1557 1558 0\n1556 1558 1559 0\n1560 1561 1562 0\n1560 1562 1563 0\n1564 1565 1566 0\n1564 1566 1567 0\n1568 1569 1570 0\n1568 1570 1571 0\n1572 1573 1574 0\n1572 1574 1575 0\n1576 1577 1578 0\n1576 1578 1579 0\n1580 1581 1582 0\n1580 1582 1583 0\n1584 1585 1586 0\n1584 1586 1587 0\n1588 1589 1590 0\n1588 1590 1591 0\n1592 1593 1594 0\n1592 1594 1595 0\n1596 1597 1598 0\n1596 1598 1599 0\n1600 1601 1602 0\n1600 1602 1603 0\n1604 1605 1606 0\n1604 1606 1607 0\n1608 1609 1610 0\n1608 1610 1611 0\n1612 1613 1614 0\n1612 1614 1615 0\n1616 1617 1618 0\n1616 1618 1619 0\n1620 1621 1622 0\n1620 1622 1623 0\n1624 1625 1626 0\n1624 1626 1627 0\n1628 1629 1630 0\n1628 1630 1631 0\n1632 1633 1634 0\n1632 1634 1635 0\n1636 1637 1638 0\n1636 1638 1639 0\n1640 1641 1642 0\n1643 1644 1645 0\n1646 1647 1648 0\n1646 1648 1649 0\n1650 1651 1652 0\n1650 1652 1653 0\n1654 1655 1656 0\n1654 1656 1657 0\n1658 1659 1660 0\n1658 1660 1661 0\n1662 1663 1664 0\n1662 1664 1665 0\n1666 1667 1668 0\n1666 1668 1669 0\n1670 1671 1672 0\n1670 1672 1673 0\n1674 1675 1676 0\n1674 1676 1677 0\n1678 1679 1680 0\n1678 1680 1681 0\n1682 1683 1684 0\n1682 1684 1685 0\n1686 1687 1688 0\n1686 1688 1689 0\n1690 1691 1692 0\n1690 1692 1693 0\n1694 1695 1696 0\n1694 1696 1697 0\n1698 1699 1700 0\n1698 1700 1701 0\n1702 1703 1704 0\n1702 1704 1705 0\n1706 1707 1708 0\n1706 1708 1709 0\n1710 1711 1712 0\n1710 1712 1713 0\n1714 1715 1716 0\n1714 1716 1717 0\n1718 1719 1720 0\n1718 1720 1721 0\n1722 1723 1724 0\n1722 1724 1725 0\n1726 1727 1728 0\n1726 1728 1729 0\n1730 1731 1732 0\n1733 1734 1735 0\n1736 1737 1738 0\n1736 1738 1739 0\n1740 1741 1742 0\n1740 1742 1743 0\n1744 1745 1746 0\n1744 1746 1747 0\n1748 1749 1750 0\n1748 1750 1751 0\n1752 1753 1754 0\n1752 1754 1755 0\n1756 1757 1758 0\n1756 1758 1759 0\n1760 1761 1762 0\n1763 1764 1765 0\n1766 1767 1768 0\n1766 1768 1769 0\n1770 1771 1772 0\n1770 1772 1773 0\n1774 1775 1776 0\n1774 1776 1777 0\n1778 1779 1780 0\n1778 1780 1781 0\n1782 1783 1784 0\n1782 1784 1785 0\n1786 1787 1788 0\n1786 1788 1789 0\n1790 1791 1792 0\n1790 1792 1793 0\n1794 1795 1796 0\n1794 1796 1797 0\n1798 1799 1800 0\n1798 1800 1801 0\n1802 1803 1804 0\n1802 1804 1805 0\n1806 1807 1808 0\n1806 1808 1809 0\n1810 1811 1812 0\n1810 1812 1813 0\n1814 1815 1816 0\n1814 1816 1817 0\n1818 1819 1820 0\n1818 1820 1821 0\n1822 1823 1824 0\n1822 1824 1825 0\n1826 1827 1828 0\n1826 1828 1829 0\n1830 1831 1832 0\n1830 1832 1833 0\n1834 1835 1836 0\n1834 1836 1837 0\n1838 1839 1840 0\n1838 1840 1841 0\n1842 1843 1844 0\n1842 1844 1845 0\n1846 1847 1848 0\n1849 1850 1851 0\n1852 1853 1854 0\n1852 1854 1855 0\n1856 1857 1858 0\n1856 1858 1859 0\n1860 1861 1862 0\n1860 1862 1863 0\n1864 1865 1866 0\n1864 1866 1867 0\n1868 1869 1870 0\n1868 1870 1871 0\n1872 1873 1874 0\n1872 1874 1875 0\n1876 1877 1878 0\n1879 1880 1881 0\n1882 1883 1884 0\n1882 1884 1885 0\n1886 1887 1888 0\n1886 1888 1889 0\n1890 1891 1892 0\n1890 1892 1893 0\n1894 1895 1896 0\n1894 1896 1897 0\n1898 1899 1900 0\n1898 1900 1901 0\n1902 1903 1904 0\n1902 1904 1905 0\n1906 1907 1908 0\n1906 1908 1909 0\n1910 1911 1912 0\n1910 1912 1913 0\n1914 1915 1916 0\n1914 1916 1917 0\n1918 1919 1920 0\n1918 1920 1921 0\n1922 1923 1924 0\n1922 1924 1925 0\n1926 1927 1928 0\n1926 1928 1929 0\n1930 1931 1932 0\n1930 1932 1933 0\n1934 1935 1936 0\n1934 1936 1937 0\n1938 1939 1940 0\n1938 1940 1941 0\n1942 1943 1944 0\n1942 1944 1945 0\n1946 1947 1948 0\n1946 1948 1949 0\n1950 1951 1952 0\n1950 1952 1953 0\n1954 1955 1956 0\n1954 1956 1957 0\n1958 1959 1960 0\n1958 1960 1961 0\n1962 1963 1964 0\n1962 1964 1965 0\n1966 1967 1968 0\n1969 1970 1971 0\n1972 1973 1974 0\n1972 1974 1975 0\n1976 1977 1978 0\n1976 1978 1979 0\n1980 1981 1982 0\n1980 1982 1983 0\nRoot -1 0.0 0.0 0.0 0.0 1.0 0.0 0.0\n"
  },
  {
    "path": "data/models/square10x10.collmdl",
    "content": "mesh 18\n4.25 0.0 4.25 -4.25 0.0 -4.25 -4.25 0.0 4.25\n-4.75 0.25 -4.75 -5.0 0.25 5.0 -4.75 0.25 4.75\n-4.75 0.25 4.75 5.0 0.25 5.0 4.75 0.25 4.75\n4.75 0.25 4.75 5.0 0.25 -5.0 4.75 0.25 -4.75\n4.75 0.25 -4.75 -5.0 0.25 -5.0 -4.75 0.25 -4.75\n-4.25 0.0 4.25 -4.75 0.25 -4.75 -4.75 0.25 4.75\n4.25 0.0 4.25 -4.75 0.25 4.75 4.75 0.25 4.75\n4.25 0.0 -4.25 4.75 0.25 4.75 4.75 0.25 -4.75\n-4.25 0.0 -4.25 4.75 0.25 -4.75 -4.75 0.25 -4.75\n4.25 0.0 4.25 4.25 0.0 -4.25 -4.25 0.0 -4.25\n-4.75 0.25 -4.75 -5.0 0.25 -5.0 -5.0 0.25 5.0\n-4.75 0.25 4.75 -5.0 0.25 5.0 5.0 0.25 5.0\n4.75 0.25 4.75 5.0 0.25 5.0 5.0 0.25 -5.0\n4.75 0.25 -4.75 5.0 0.25 -5.0 -5.0 0.25 -5.0\n-4.25 0.0 4.25 -4.25 0.0 -4.25 -4.75 0.25 -4.75\n4.25 0.0 4.25 -4.25 0.0 4.25 -4.75 0.25 4.75\n4.25 0.0 -4.25 4.25 0.0 4.25 4.75 0.25 4.75\n-4.25 0.0 -4.25 4.25 0.0 -4.25 4.75 0.25 -4.75\n"
  },
  {
    "path": "data/models/square10x10.stmdl",
    "content": "54 18 2\nconcrete018\nmetal003\n4.25 0.0 4.25 0.0 1.0 -0.0 1.0 0.0 1.0 0.0\n-4.25 0.0 -4.25 0.0 1.0 -0.0 0.0 1.0 0.0 1.0\n-4.25 0.0 4.25 0.0 1.0 -0.0 0.0 0.0 0.0 0.0\n-4.75 0.25 -4.75 0.0 1.0 -0.0 -1.875 2.875 -1.875 2.875\n-5.0 0.25 5.0 0.0 0.999969482421875 -0.0 -2.0 -2.0 -2.0 -2.0\n-4.75 0.25 4.75 0.0 1.0 -0.0 -1.875 -1.875 -1.875 -1.875\n-4.75 0.25 4.75 0.0 1.0 -0.0 -1.875 -1.875 -1.875 -1.875\n5.0 0.25 5.0 0.0 0.999969482421875 -0.0 3.0 -2.0 3.0 -2.0\n4.75 0.25 4.75 0.0 1.0 -0.0 2.875 -1.875 2.875 -1.875\n4.75 0.25 4.75 0.0 1.0 -0.0 2.875 -1.875 2.875 -1.875\n5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 3.0 3.0 3.0 3.0\n4.75 0.25 -4.75 0.0 1.0 -0.0 2.875 2.875 2.875 2.875\n4.75 0.25 -4.75 0.0 1.0 -0.0 2.875 2.875 2.875 2.875\n-5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 -2.0 3.0 -2.0 3.0\n-4.75 0.25 -4.75 0.0 1.0 -0.0 -1.875 2.875 -1.875 2.875\n-4.25 0.0 4.25 0.44718772172927856 0.8944059610366821 -0.0 -1.625 -1.625 -1.625 -1.625\n-4.75 0.25 -4.75 0.44718772172927856 0.8944059610366821 -0.0 -1.875 2.875 -1.875 2.875\n-4.75 0.25 4.75 0.44718772172927856 0.8944059610366821 -0.0 -1.875 -1.875 -1.875 -1.875\n4.25 0.0 4.25 0.0 0.8944059610366821 -0.44718772172927856 2.625 -1.625 2.625 -1.625\n-4.75 0.25 4.75 0.0 0.8944059610366821 -0.44718772172927856 -1.875 -1.875 -1.875 -1.875\n4.75 0.25 4.75 0.0 0.8944059610366821 -0.44718772172927856 2.875 -1.875 2.875 -1.875\n4.25 0.0 -4.25 -0.44718772172927856 0.8944059610366821 -0.0 2.625 2.625 2.625 2.625\n4.75 0.25 4.75 -0.44718772172927856 0.8944059610366821 -0.0 2.875 -1.875 2.875 -1.875\n4.75 0.25 -4.75 -0.44718772172927856 0.8944059610366821 -0.0 2.875 2.875 2.875 2.875\n-4.25 0.0 -4.25 0.0 0.8944059610366821 0.44718772172927856 -1.625 2.625 -1.625 2.625\n4.75 0.25 -4.75 0.0 0.8944059610366821 0.44718772172927856 2.875 2.875 2.875 2.875\n-4.75 0.25 -4.75 0.0 0.8944059610366821 0.44718772172927856 -1.875 2.875 -1.875 2.875\n4.25 0.0 4.25 0.0 1.0 -0.0 1.0 0.0 1.0 0.0\n4.25 0.0 -4.25 0.0 1.0 -0.0 1.0 1.0 1.0 1.0\n-4.25 0.0 -4.25 0.0 1.0 -0.0 0.0 1.0 0.0 1.0\n-4.75 0.25 -4.75 0.0 1.0 -0.0 -1.875 2.875 -1.875 2.875\n-5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 -2.0 3.0 -2.0 3.0\n-5.0 0.25 5.0 0.0 0.999969482421875 -0.0 -2.0 -2.0 -2.0 -2.0\n-4.75 0.25 4.75 0.0 1.0 -0.0 -1.875 -1.875 -1.875 -1.875\n-5.0 0.25 5.0 0.0 0.999969482421875 -0.0 -2.0 -2.0 -2.0 -2.0\n5.0 0.25 5.0 0.0 0.999969482421875 -0.0 3.0 -2.0 3.0 -2.0\n4.75 0.25 4.75 0.0 1.0 -0.0 2.875 -1.875 2.875 -1.875\n5.0 0.25 5.0 0.0 0.999969482421875 -0.0 3.0 -2.0 3.0 -2.0\n5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 3.0 3.0 3.0 3.0\n4.75 0.25 -4.75 0.0 1.0 -0.0 2.875 2.875 2.875 2.875\n5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 3.0 3.0 3.0 3.0\n-5.0 0.25 -5.0 0.0 0.999969482421875 -0.0 -2.0 3.0 -2.0 3.0\n-4.25 0.0 4.25 0.44718772172927856 0.8944059610366821 -0.0 -1.625 -1.625 -1.625 -1.625\n-4.25 0.0 -4.25 0.44718772172927856 0.8944059610366821 -0.0 -1.625 2.625 -1.625 2.625\n-4.75 0.25 -4.75 0.44718772172927856 0.8944059610366821 -0.0 -1.875 2.875 -1.875 2.875\n4.25 0.0 4.25 0.0 0.8944059610366821 -0.44718772172927856 2.625 -1.625 2.625 -1.625\n-4.25 0.0 4.25 0.0 0.8944059610366821 -0.44718772172927856 -1.625 -1.625 -1.625 -1.625\n-4.75 0.25 4.75 0.0 0.8944059610366821 -0.44718772172927856 -1.875 -1.875 -1.875 -1.875\n4.25 0.0 -4.25 -0.44718772172927856 0.8944059610366821 -0.0 2.625 2.625 2.625 2.625\n4.25 0.0 4.25 -0.44718772172927856 0.8944059610366821 -0.0 2.625 -1.625 2.625 -1.625\n4.75 0.25 4.75 -0.44718772172927856 0.8944059610366821 -0.0 2.875 -1.875 2.875 -1.875\n-4.25 0.0 -4.25 0.0 0.8944059610366821 0.44718772172927856 -1.625 2.625 -1.625 2.625\n4.25 0.0 -4.25 0.0 0.8944059610366821 0.44718772172927856 2.625 2.625 2.625 2.625\n4.75 0.25 -4.75 0.0 0.8944059610366821 0.44718772172927856 2.875 2.875 2.875 2.875\n0 1 2 0\n3 4 5 1\n6 7 8 1\n9 10 11 1\n12 13 14 1\n15 16 17 1\n18 19 20 1\n21 22 23 1\n24 25 26 1\n27 28 29 0\n30 31 32 1\n33 34 35 1\n36 37 38 1\n39 40 41 1\n42 43 44 1\n45 46 47 1\n48 49 50 1\n51 52 53 1\n"
  },
  {
    "path": "data/models/translucent.dymdl",
    "content": "DYMDLv1 168 72 1 1 0\ntranslucent\n0.25 -0.25 0.5 0.0 0.0 1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 0.5 0.0 0.0 1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 0.5 0.0 0.0 1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 0.25 -1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 0.25 -1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.0 -0.0 -1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.25 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.5 -0.0 0.0 -1.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 -0.25 1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 -0.25 1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.0 -0.0 1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 -0.5 0.0 0.0 -1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 -0.5 0.0 0.0 -1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.5 0.0 0.0 -1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 1.7881393432617188e-07 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 1.4901161193847656e-07 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 -0.25 0.0 1.0 -0.0 0.25 0.2500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 -0.25 0.0 1.0 -0.0 0.25000008940696716 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 1.4901161193847656e-07 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 1.7881393432617188e-07 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 0.25 0.0 1.0 -0.0 0.25000011920928955 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 -0.25 0.0 1.0 -0.0 0.25 0.2500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 1.7881393432617188e-07 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 0.25 0.0 1.0 -0.0 0.7500000596046448 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 0.25 0.0 1.0 -0.0 0.25000011920928955 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 1.7881393432617188e-07 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 -0.25 0.0 1.0 -0.0 0.25000008940696716 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 0.25 0.0 1.0 -0.0 0.7500000596046448 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9999998807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 0.5 0.0 0.0 1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 0.5 0.0 0.0 1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 5.960464477539063e-08 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 0.5 0.0 0.0 1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 0.5 0.0 0.0 1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 5.960464477539063e-08 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 0.5 0.0 0.0 1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 0.5 0.0 0.0 1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 0.9999998807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 0.5 0.0 0.0 1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 0.5 0.0 0.0 1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.1920928955078125e-07 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 0.25 -1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 0.25 -1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 0.5 -0.5773491859436035 0.5773491859436035 0.5773491859436035 0.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9999999403953552 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 -0.25 -1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 0.25 -1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.9999999403953552 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 -0.25 -1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 -0.25 -1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.1920928955078125e-07 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 0.25 -1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 -0.25 -1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.25 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.25 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 0.5 -0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.0 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.1920928955078125e-07 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 -0.25 1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 -0.25 1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 0.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9999999403953552 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 0.25 1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 -0.25 1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 0.5 0.5773491859436035 0.5773491859436035 0.5773491859436035 0.9999999403953552 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 0.25 1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 0.25 1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 0.5 0.5773491859436035 -0.5773491859436035 0.5773491859436035 1.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 1.1920928955078125e-07 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 -0.25 1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 0.25 1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9999998807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 -0.5 0.0 0.0 -1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 -0.5 0.0 0.0 -1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.5 -0.5 -0.5773491859436035 0.5773491859436035 -0.5773491859436035 1.0 0.9999998807907104 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 5.960464477539063e-08 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 -0.5 0.0 0.0 -1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 -0.5 0.0 0.0 -1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.5 -0.5 0.5773491859436035 0.5773491859436035 -0.5773491859436035 5.960464477539063e-08 1.0 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 -0.5 0.0 0.0 -1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 -0.5 0.0 0.0 -1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.5 -0.5 0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.0 2.9802322387695312e-08 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.5 -0.5 -0.5773491859436035 -0.5773491859436035 -0.5773491859436035 0.9999998807907104 0.0 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 -0.5 0.0 0.0 -1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 -0.5 0.0 0.0 -1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 -0.25 0.0 1.0 -0.0 0.25000008940696716 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 -0.25 0.0 1.0 -0.0 0.25 0.2500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5 -0.0 0.0 1.0 -0.0 0.5000000596046448 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 -0.25 0.0 1.0 -0.0 0.25 0.2500000596046448 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 0.25 0.0 1.0 -0.0 0.25000011920928955 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5 -0.0 0.0 1.0 -0.0 0.5000000596046448 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.5 0.25 0.0 1.0 -0.0 0.25000011920928955 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 0.25 0.0 1.0 -0.0 0.7500000596046448 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5 -0.0 0.0 1.0 -0.0 0.5000000596046448 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 0.25 0.0 1.0 -0.0 0.7500000596046448 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.5 -0.25 0.0 1.0 -0.0 0.25000008940696716 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.5 -0.0 0.0 1.0 -0.0 0.5000000596046448 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 0.5 0.0 0.0 1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 0.5 0.0 0.0 1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 0.5 0.0 0.0 1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 0.5 0.0 0.0 1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 0.5 0.0 0.0 1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 0.5 0.0 0.0 1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 0.5 0.0 0.0 1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 0.5 0.0 0.0 1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 0.5 0.0 0.0 1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 0.25 -1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 -0.25 -1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.0 -0.0 -1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.25 -0.25 -1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 -0.25 -1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.0 -0.0 -1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 -0.25 -1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 -0.25 0.25 -1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n-0.5 0.0 -0.0 -1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.25 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.5 -0.0 0.0 -1.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.5 -0.0 0.0 -1.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 0.25 0.0 -1.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.5 -0.25 0.0 -1.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 -0.5 -0.0 0.0 -1.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 -0.25 1.0 0.0 -0.0 0.25 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 0.25 1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.0 -0.0 1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.25 0.25 1.0 0.0 -0.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 0.25 1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.0 -0.0 1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 0.25 1.0 0.0 -0.0 0.75 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 -0.25 -0.25 1.0 0.0 -0.0 0.2500000596046448 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.5 0.0 -0.0 1.0 0.0 -0.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 0.25 -0.5 0.0 0.0 -1.0 0.75 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 -0.5 0.0 0.0 -1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.5 0.0 0.0 -1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 0.25 -0.5 0.0 0.0 -1.0 0.2500000298023224 0.75 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 -0.5 0.0 0.0 -1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.5 0.0 0.0 -1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0.25 -0.25 -0.5 0.0 0.0 -1.0 0.2499999850988388 0.25 0 1.0 0 0.0 0 0.0 0 0.0\n-0.25 -0.25 -0.5 0.0 0.0 -1.0 0.75 0.2499999701976776 0 1.0 0 0.0 0 0.0 0 0.0\n0.0 0.0 -0.5 0.0 0.0 -1.0 0.5 0.5 0 1.0 0 0.0 0 0.0 0 0.0\n0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n12 13 14 0\n15 16 17 0\n15 17 18 0\n19 20 21 0\n19 21 22 0\n23 24 25 0\n23 25 26 0\n27 28 29 0\n27 29 30 0\n31 32 33 0\n31 33 34 0\n35 36 37 0\n35 37 38 0\n39 40 41 0\n39 41 42 0\n43 44 45 0\n43 45 46 0\n47 48 49 0\n47 49 50 0\n51 52 53 0\n51 53 54 0\n55 56 57 0\n55 57 58 0\n59 60 61 0\n59 61 62 0\n63 64 65 0\n63 65 66 0\n67 68 69 0\n67 69 70 0\n71 72 73 0\n71 73 74 0\n75 76 77 0\n75 77 78 0\n79 80 81 0\n79 81 82 0\n83 84 85 0\n83 85 86 0\n87 88 89 0\n87 89 90 0\n91 92 93 0\n91 93 94 0\n95 96 97 0\n95 97 98 0\n99 100 101 0\n99 101 102 0\n103 104 105 0\n103 105 106 0\n107 108 109 0\n107 109 110 0\n111 112 113 0\n114 115 116 0\n117 118 119 0\n120 121 122 0\n123 124 125 0\n126 127 128 0\n129 130 131 0\n132 133 134 0\n135 136 137 0\n138 139 140 0\n141 142 143 0\n144 145 146 0\n147 148 149 0\n150 151 152 0\n153 154 155 0\n156 157 158 0\n159 160 161 0\n162 163 164 0\n165 166 167 0\nRoot -1 0.0 0.0 0.0 0.0 1.0 0.0 0.0\n"
  },
  {
    "path": "data/models/trigger.collmdl",
    "content": "cloud 8 \n-1 -0.75 1 \n-1 0.75 1 \n-1 -0.75 -1 \n-1 0.75 -1 \n1 -0.75 1 \n1 0.75 1 \n1 -0.75 -1 \n1 0.75 -1 \n"
  },
  {
    "path": "data/models/trigger.stmdl",
    "content": "STMDLv1 30 12 1 1 \norigin 1 1.25 -3 \ndev/trigger \n-1 -0.75 1 -1 -0 0 2 0.5 2 0.5 \n-1 -0.75 -1 -1 -0 0 4 0.5 4 0.5 \n-1 0.75 -1 -1 -0 0 4 2 4 2 \n-1 0.75 1 -1 -0 0 2 2 2 2 \n-1 0.75 -1 -1 -0 0 4 2 4 2 \n1 -0.75 1 -0 -0 1 2 0.5 2 0.5 \n1 0.75 1 -0 -0 1 2 2 2 2 \n-1 0.75 1 -0 -0 1 0 2 0 2 \n-1 -0.75 1 -0 -0 1 0 0.5 0 0.5 \n-1 0.75 1 -0 -0 1 0 2 0 2 \n1 -0.75 -1 -0 -1 0 2 4 2 4 \n-1 -0.75 1 -0 -1 0 0 2 0 2 \n-1 -0.75 -1 -0 -1 0 0 4 0 4 \n1 -0.75 1 -0 -1 0 2 2 2 2 \n-1 -0.75 1 -0 -1 0 0 2 0 2 \n1 0.75 -1 -0 1 0 2 4 2 4 \n-1 0.75 1 -0 1 0 0 2 0 2 \n-1 0.75 -1 -0 1 0 0 4 0 4 \n1 0.75 1 -0 1 0 2 2 2 2 \n-1 0.75 1 -0 1 0 0 2 0 2 \n-1 -0.75 -1 -0 -0 -1 0 0.5 0 0.5 \n1 -0.75 -1 -0 -0 -1 2 0.5 2 0.5 \n1 0.75 -1 -0 -0 -1 2 2 2 2 \n1 0.75 -1 -0 -0 -1 2 2 2 2 \n-1 0.75 -1 -0 -0 -1 0 2 0 2 \n1 -0.75 1 1 -0 0 2 0.5 2 0.5 \n1 0.75 -1 1 -0 0 4 2 4 2 \n1 0.75 1 1 -0 0 2 2 2 2 \n1 -0.75 -1 1 -0 0 4 0.5 4 0.5 \n1 0.75 -1 1 -0 0 4 2 4 2 \n0 2 1 0 \n0 3 4 0 \n5 6 7 0 \n5 9 8 0 \n10 11 12 0 \n10 13 14 0 \n15 17 16 0 \n15 19 18 0 \n20 22 21 0 \n20 24 23 0 \n25 26 27 0 \n25 28 29 0 \n"
  },
  {
    "path": "data/paths/test.path",
    "content": "PATHv2 \n\nnode -2 1 -2 \nnode 0 1 -2.5 \nnode 2 1 -2 \nnode 2.5 1 0 \nnode 2 1 2 \nnode 0 1 2.5 \nnode -2 1 2 \nnode -2.5 1 0 \n\nedge 0 1 \nedge 1 2 \nedge 2 3 \nedge 3 4 \nedge 4 5 \nedge 5 6 \nedge 6 7 \nedge 7 0 \n"
  },
  {
    "path": "data/quests.quest",
    "content": "# Tramway SDK Kitchensink Quest File\n# Generated by: Kitchensink Editor v0.0.9\n# Generated on: 2024.12.23. 7:46:06\n\nQUESTv1\n\nquest    pancake\nvariable pancake-count       value         int                 0                              \nvariable pancakes-enough     greater-equal pancake             pancake-count    int           15\nvariable pancakes-not-enough not           pancake             pancakes-enough                \nvariable quest-get           objective     pancake-start       pancake-gather   known         \nvariable quest-mid           objective     pancake-middle      pancake-gathered unknown       \nvariable quest-end           objective     pancake-end         pancake-finished unknown       \ntrigger  pancake-pickup      pancake       pancakes-not-enough increment        pancake-count    \ntrigger  pancake-pickup      pancake       pancakes-enough     set-objective    quest-get     2  \ntrigger  pancake-pickup      pancake       pancakes-enough     set-objective    quest-mid     1  \n"
  },
  {
    "path": "data/sprites/font_debug.spr",
    "content": "SPRv2 ui/font_debug\n\n0\t0\t8\t16\t8\t8\t0\t0\n16\t0\t8\t16\t8\t8\t0\t0\n32\t0\t8\t16\t8\t8\t0\t0\n48\t0\t8\t16\t8\t8\t0\t0\n64\t0\t8\t16\t8\t8\t0\t0\n80\t0\t8\t16\t8\t8\t0\t0\n96\t0\t8\t16\t8\t8\t0\t0\n112\t0\t8\t16\t8\t8\t0\t0\n128\t0\t8\t16\t8\t8\t0\t0\n144\t0\t8\t16\t8\t8\t0\t0\n160\t0\t8\t16\t8\t8\t0\t0\n176\t0\t8\t16\t8\t8\t0\t0\n192\t0\t8\t16\t8\t8\t0\t0\n208\t0\t8\t16\t8\t8\t0\t0\n224\t0\t8\t16\t8\t8\t0\t0\n240\t0\t8\t16\t8\t8\t0\t0\n0\t16\t8\t16\t8\t8\t0\t0\n16\t16\t8\t16\t8\t8\t0\t0\n32\t16\t8\t16\t8\t8\t0\t0\n48\t16\t8\t16\t8\t8\t0\t0\n64\t16\t8\t16\t8\t8\t0\t0\n80\t16\t8\t16\t8\t8\t0\t0\n96\t16\t8\t16\t8\t8\t0\t0\n112\t16\t8\t16\t8\t8\t0\t0\n128\t16\t8\t16\t8\t8\t0\t0\n144\t16\t8\t16\t8\t8\t0\t0\n160\t16\t8\t16\t8\t8\t0\t0\n176\t16\t8\t16\t8\t8\t0\t0\n192\t16\t8\t16\t8\t8\t0\t0\n208\t16\t8\t16\t8\t8\t0\t0\n224\t16\t8\t16\t8\t8\t0\t0\n240\t16\t8\t16\t8\t8\t0\t0\n0\t32\t8\t16\t8\t8\t0\t0\n16\t32\t8\t16\t8\t8\t0\t0\n32\t32\t8\t16\t8\t8\t0\t0\n48\t32\t8\t16\t8\t8\t0\t0\n64\t32\t8\t16\t8\t8\t0\t0\n80\t32\t8\t16\t8\t8\t0\t0\n96\t32\t8\t16\t8\t8\t0\t0\n112\t32\t8\t16\t8\t8\t0\t0\n128\t32\t8\t16\t8\t8\t0\t0\n144\t32\t8\t16\t8\t8\t0\t0\n160\t32\t8\t16\t8\t8\t0\t0\n176\t32\t8\t16\t8\t8\t0\t0\n192\t32\t8\t16\t8\t8\t0\t0\n208\t32\t8\t16\t8\t8\t0\t0\n224\t32\t8\t16\t8\t8\t0\t0\n240\t32\t8\t16\t8\t8\t0\t0\n0\t48\t8\t16\t8\t8\t0\t0\n16\t48\t8\t16\t8\t8\t0\t0\n32\t48\t8\t16\t8\t8\t0\t0\n48\t48\t8\t16\t8\t8\t0\t0\n64\t48\t8\t16\t8\t8\t0\t0\n80\t48\t8\t16\t8\t8\t0\t0\n96\t48\t8\t16\t8\t8\t0\t0\n112\t48\t8\t16\t8\t8\t0\t0\n128\t48\t8\t16\t8\t8\t0\t0\n144\t48\t8\t16\t8\t8\t0\t0\n160\t48\t8\t16\t8\t8\t0\t0\n176\t48\t8\t16\t8\t8\t0\t0\n192\t48\t8\t16\t8\t8\t0\t0\n208\t48\t8\t16\t8\t8\t0\t0\n224\t48\t8\t16\t8\t8\t0\t0\n240\t48\t8\t16\t8\t8\t0\t0\n0\t64\t8\t16\t8\t8\t0\t0\n16\t64\t8\t16\t8\t8\t0\t0\n32\t64\t8\t16\t8\t8\t0\t0\n48\t64\t8\t16\t8\t8\t0\t0\n64\t64\t8\t16\t8\t8\t0\t0\n80\t64\t8\t16\t8\t8\t0\t0\n96\t64\t8\t16\t8\t8\t0\t0\n112\t64\t8\t16\t8\t8\t0\t0\n128\t64\t8\t16\t8\t8\t0\t0\n144\t64\t8\t16\t8\t8\t0\t0\n160\t64\t8\t16\t8\t8\t0\t0\n176\t64\t8\t16\t8\t8\t0\t0\n192\t64\t8\t16\t8\t8\t0\t0\n208\t64\t8\t16\t8\t8\t0\t0\n224\t64\t8\t16\t8\t8\t0\t0\n240\t64\t8\t16\t8\t8\t0\t0\n0\t80\t8\t16\t8\t8\t0\t0\n16\t80\t8\t16\t8\t8\t0\t0\n32\t80\t8\t16\t8\t8\t0\t0\n48\t80\t8\t16\t8\t8\t0\t0\n64\t80\t8\t16\t8\t8\t0\t0\n80\t80\t8\t16\t8\t8\t0\t0\n96\t80\t8\t16\t8\t8\t0\t0\n112\t80\t8\t16\t8\t8\t0\t0\n128\t80\t8\t16\t8\t8\t0\t0\n144\t80\t8\t16\t8\t8\t0\t0\n160\t80\t8\t16\t8\t8\t0\t0\n176\t80\t8\t16\t8\t8\t0\t0\n192\t80\t8\t16\t8\t8\t0\t0\n208\t80\t8\t16\t8\t8\t0\t0\n224\t80\t8\t16\t8\t8\t0\t0\n240\t80\t8\t16\t8\t8\t0\t0\n0\t96\t8\t16\t8\t8\t0\t0\n16\t96\t8\t16\t8\t8\t0\t0\n32\t96\t8\t16\t8\t8\t0\t0\n48\t96\t8\t16\t8\t8\t0\t0\n64\t96\t8\t16\t8\t8\t0\t0\n80\t96\t8\t16\t8\t8\t0\t0\n96\t96\t8\t16\t8\t8\t0\t0\n112\t96\t8\t16\t8\t8\t0\t0\n128\t96\t8\t16\t8\t8\t0\t0\n144\t96\t8\t16\t8\t8\t0\t0\n160\t96\t8\t16\t8\t8\t0\t0\n176\t96\t8\t16\t8\t8\t0\t0\n192\t96\t8\t16\t8\t8\t0\t0\n208\t96\t8\t16\t8\t8\t0\t0\n224\t96\t8\t16\t8\t8\t0\t0\n240\t96\t8\t16\t8\t8\t0\t0\n0\t112\t8\t16\t8\t8\t0\t0\n16\t112\t8\t16\t8\t8\t0\t0\n32\t112\t8\t16\t8\t8\t0\t0\n48\t112\t8\t16\t8\t8\t0\t0\n64\t112\t8\t16\t8\t8\t0\t0\n80\t112\t8\t16\t8\t8\t0\t0\n96\t112\t8\t16\t8\t8\t0\t0\n112\t112\t8\t16\t8\t8\t0\t0\n128\t112\t8\t16\t8\t8\t0\t0\n144\t112\t8\t16\t8\t8\t0\t0\n160\t112\t8\t16\t8\t8\t0\t0\n176\t112\t8\t16\t8\t8\t0\t0\n192\t112\t8\t16\t8\t8\t0\t0\n208\t112\t8\t16\t8\t8\t0\t0\n224\t112\t8\t16\t8\t8\t0\t0\n240\t112\t8\t16\t8\t8\t0\t0\n0\t128\t8\t16\t8\t8\t0\t0\n16\t128\t8\t16\t8\t8\t0\t0\n32\t128\t8\t16\t8\t8\t0\t0\n48\t128\t8\t16\t8\t8\t0\t0\n64\t128\t8\t16\t8\t8\t0\t0\n80\t128\t8\t16\t8\t8\t0\t0\n96\t128\t8\t16\t8\t8\t0\t0\n112\t128\t8\t16\t8\t8\t0\t0\n128\t128\t8\t16\t8\t8\t0\t0\n144\t128\t8\t16\t8\t8\t0\t0\n160\t128\t8\t16\t8\t8\t0\t0\n176\t128\t8\t16\t8\t8\t0\t0\n192\t128\t8\t16\t8\t8\t0\t0\n208\t128\t8\t16\t8\t8\t0\t0\n224\t128\t8\t16\t8\t8\t0\t0\n240\t128\t8\t16\t8\t8\t0\t0\n0\t144\t8\t16\t8\t8\t0\t0\n16\t144\t8\t16\t8\t8\t0\t0\n32\t144\t8\t16\t8\t8\t0\t0\n48\t144\t8\t16\t8\t8\t0\t0\n64\t144\t8\t16\t8\t8\t0\t0\n80\t144\t8\t16\t8\t8\t0\t0\n96\t144\t8\t16\t8\t8\t0\t0\n112\t144\t8\t16\t8\t8\t0\t0\n128\t144\t8\t16\t8\t8\t0\t0\n144\t144\t8\t16\t8\t8\t0\t0\n160\t144\t8\t16\t8\t8\t0\t0\n176\t144\t8\t16\t8\t8\t0\t0\n192\t144\t8\t16\t8\t8\t0\t0\n208\t144\t8\t16\t8\t8\t0\t0\n224\t144\t8\t16\t8\t8\t0\t0\n240\t144\t8\t16\t8\t8\t0\t0\n0\t160\t8\t16\t8\t8\t0\t0\n16\t160\t8\t16\t8\t8\t0\t0\n32\t160\t8\t16\t8\t8\t0\t0\n48\t160\t8\t16\t8\t8\t0\t0\n64\t160\t8\t16\t8\t8\t0\t0\n80\t160\t8\t16\t8\t8\t0\t0\n96\t160\t8\t16\t8\t8\t0\t0\n112\t160\t8\t16\t8\t8\t0\t0\n128\t160\t8\t16\t8\t8\t0\t0\n144\t160\t8\t16\t8\t8\t0\t0\n160\t160\t8\t16\t8\t8\t0\t0\n176\t160\t8\t16\t8\t8\t0\t0\n192\t160\t8\t16\t8\t8\t0\t0\n208\t160\t8\t16\t8\t8\t0\t0\n224\t160\t8\t16\t8\t8\t0\t0\n240\t160\t8\t16\t8\t8\t0\t0\n0\t176\t8\t16\t8\t8\t0\t0\n16\t176\t8\t16\t8\t8\t0\t0\n32\t176\t8\t16\t8\t8\t0\t0\n48\t176\t8\t16\t8\t8\t0\t0\n64\t176\t8\t16\t8\t8\t0\t0\n80\t176\t8\t16\t8\t8\t0\t0\n96\t176\t8\t16\t8\t8\t0\t0\n112\t176\t8\t16\t8\t8\t0\t0\n128\t176\t8\t16\t8\t8\t0\t0\n144\t176\t8\t16\t8\t8\t0\t0\n160\t176\t8\t16\t8\t8\t0\t0\n176\t176\t8\t16\t8\t8\t0\t0\n192\t176\t8\t16\t8\t8\t0\t0\n208\t176\t8\t16\t8\t8\t0\t0\n224\t176\t8\t16\t8\t8\t0\t0\n240\t176\t8\t16\t8\t8\t0\t0\n0\t192\t8\t16\t8\t8\t0\t0\n16\t192\t8\t16\t8\t8\t0\t0\n32\t192\t8\t16\t8\t8\t0\t0\n48\t192\t8\t16\t8\t8\t0\t0\n64\t192\t8\t16\t8\t8\t0\t0\n80\t192\t8\t16\t8\t8\t0\t0\n96\t192\t8\t16\t8\t8\t0\t0\n112\t192\t8\t16\t8\t8\t0\t0\n128\t192\t8\t16\t8\t8\t0\t0\n144\t192\t8\t16\t8\t8\t0\t0\n160\t192\t8\t16\t8\t8\t0\t0\n176\t192\t8\t16\t8\t8\t0\t0\n192\t192\t8\t16\t8\t8\t0\t0\n208\t192\t8\t16\t8\t8\t0\t0\n224\t192\t8\t16\t8\t8\t0\t0\n240\t192\t8\t16\t8\t8\t0\t0\n0\t208\t8\t16\t8\t8\t0\t0\n16\t208\t8\t16\t8\t8\t0\t0\n32\t208\t8\t16\t8\t8\t0\t0\n48\t208\t8\t16\t8\t8\t0\t0\n64\t208\t8\t16\t8\t8\t0\t0\n80\t208\t8\t16\t8\t8\t0\t0\n96\t208\t8\t16\t8\t8\t0\t0\n112\t208\t8\t16\t8\t8\t0\t0\n128\t208\t8\t16\t8\t8\t0\t0\n144\t208\t8\t16\t8\t8\t0\t0\n160\t208\t8\t16\t8\t8\t0\t0\n176\t208\t8\t16\t8\t8\t0\t0\n192\t208\t8\t16\t8\t8\t0\t0\n208\t208\t8\t16\t8\t8\t0\t0\n224\t208\t8\t16\t8\t8\t0\t0\n240\t208\t8\t16\t8\t8\t0\t0\n0\t224\t8\t16\t8\t8\t0\t0\n16\t224\t8\t16\t8\t8\t0\t0\n32\t224\t8\t16\t8\t8\t0\t0\n48\t224\t8\t16\t8\t8\t0\t0\n64\t224\t8\t16\t8\t8\t0\t0\n80\t224\t8\t16\t8\t8\t0\t0\n96\t224\t8\t16\t8\t8\t0\t0\n112\t224\t8\t16\t8\t8\t0\t0\n128\t224\t8\t16\t8\t8\t0\t0\n144\t224\t8\t16\t8\t8\t0\t0\n160\t224\t8\t16\t8\t8\t0\t0\n176\t224\t8\t16\t8\t8\t0\t0\n192\t224\t8\t16\t8\t8\t0\t0\n208\t224\t8\t16\t8\t8\t0\t0\n224\t224\t8\t16\t8\t8\t0\t0\n240\t224\t8\t16\t8\t8\t0\t0\n0\t240\t8\t16\t8\t8\t0\t0\n16\t240\t8\t16\t8\t8\t0\t0\n32\t240\t8\t16\t8\t8\t0\t0\n48\t240\t8\t16\t8\t8\t0\t0\n64\t240\t8\t16\t8\t8\t0\t0\n80\t240\t8\t16\t8\t8\t0\t0\n96\t240\t8\t16\t8\t8\t0\t0\n112\t240\t8\t16\t8\t8\t0\t0\n128\t240\t8\t16\t8\t8\t0\t0\n144\t240\t8\t16\t8\t8\t0\t0\n160\t240\t8\t16\t8\t8\t0\t0\n176\t240\t8\t16\t8\t8\t0\t0\n192\t240\t8\t16\t8\t8\t0\t0\n208\t240\t8\t16\t8\t8\t0\t0\n224\t240\t8\t16\t8\t8\t0\t0\n240\t240\t8\t16\t8\t8\t0\t0\n"
  },
  {
    "path": "data/sprites/font_headers.spr",
    "content": "SPRv2 ui/font_headers\n\n0\t0\t40\t40\t20\t20\t0\t0\n40\t0\t40\t40\t20\t20\t0\t0\n80\t0\t40\t40\t20\t20\t0\t0\n120\t0\t40\t40\t20\t20\t0\t0\n160\t0\t40\t40\t20\t20\t0\t0\n200\t0\t40\t40\t20\t20\t0\t0\n0\t40\t40\t40\t20\t20\t0\t0\n40\t40\t40\t40\t20\t20\t0\t0\n80\t40\t40\t40\t20\t20\t0\t0\n120\t40\t40\t40\t20\t20\t0\t0\n160\t40\t40\t40\t20\t20\t0\t0\n200\t40\t40\t40\t20\t20\t0\t0\n0\t80\t40\t40\t20\t20\t0\t0\n40\t80\t40\t40\t20\t20\t0\t0\n80\t80\t40\t40\t20\t20\t0\t0\n120\t80\t40\t40\t20\t20\t0\t0\n160\t80\t40\t40\t20\t20\t0\t0\n200\t80\t40\t40\t20\t20\t0\t0\n0\t120\t40\t40\t20\t20\t0\t0\n40\t120\t40\t40\t20\t20\t0\t0\n80\t120\t40\t40\t20\t20\t0\t0\n120\t120\t40\t40\t20\t20\t0\t0\n160\t120\t40\t40\t20\t20\t0\t0\n200\t120\t40\t40\t20\t20\t0\t0"
  },
  {
    "path": "data/sprites/font_pixelart.spr",
    "content": "SPRv2 ui/font_pixelart\n\n0\t0\t16\t16\t8\t8\t0\t0\n16\t0\t16\t16\t8\t8\t0\t0\n32\t0\t16\t16\t8\t8\t0\t0\n48\t0\t16\t16\t8\t8\t0\t0\n64\t0\t16\t16\t8\t8\t0\t0\n80\t0\t16\t16\t8\t8\t0\t0\n96\t0\t16\t16\t8\t8\t0\t0\n112\t0\t16\t16\t8\t8\t0\t0\n128\t0\t16\t16\t8\t8\t0\t0\n144\t0\t16\t16\t8\t8\t0\t0\n160\t0\t16\t16\t8\t8\t0\t0\n176\t0\t16\t16\t8\t8\t0\t0\n192\t0\t16\t16\t8\t8\t0\t0\n208\t0\t16\t16\t8\t8\t0\t0\n224\t0\t16\t16\t8\t8\t0\t0\n240\t0\t16\t16\t8\t8\t0\t0\n0\t16\t16\t16\t8\t8\t0\t0\n16\t16\t16\t16\t8\t8\t0\t0\n32\t16\t16\t16\t8\t8\t0\t0\n48\t16\t16\t16\t8\t8\t0\t0\n64\t16\t16\t16\t8\t8\t0\t0\n80\t16\t16\t16\t8\t8\t0\t0\n96\t16\t16\t16\t8\t8\t0\t0\n112\t16\t16\t16\t8\t8\t0\t0\n128\t16\t16\t16\t8\t8\t0\t0\n144\t16\t16\t16\t8\t8\t0\t0\n160\t16\t16\t16\t8\t8\t0\t0\n176\t16\t16\t16\t8\t8\t0\t0\n192\t16\t16\t16\t8\t8\t0\t0\n208\t16\t16\t16\t8\t8\t0\t0\n224\t16\t16\t16\t8\t8\t0\t0\n240\t16\t16\t16\t8\t8\t0\t0\n0\t32\t16\t16\t8\t8\t0\t0\n16\t32\t16\t16\t8\t8\t0\t0\n32\t32\t16\t16\t8\t8\t0\t0\n48\t32\t16\t16\t8\t8\t0\t0\n64\t32\t16\t16\t8\t8\t0\t0\n80\t32\t16\t16\t8\t8\t0\t0\n96\t32\t16\t16\t8\t8\t0\t0\n112\t32\t16\t16\t8\t8\t0\t0\n128\t32\t16\t16\t8\t8\t0\t0\n144\t32\t16\t16\t8\t8\t0\t0\n160\t32\t16\t16\t8\t8\t0\t0\n176\t32\t16\t16\t8\t8\t0\t0\n192\t32\t16\t16\t8\t8\t0\t0\n208\t32\t16\t16\t8\t8\t0\t0\n224\t32\t16\t16\t8\t8\t0\t0\n240\t32\t16\t16\t8\t8\t0\t0\n0\t48\t16\t16\t8\t8\t0\t0\n16\t48\t16\t16\t8\t8\t0\t0\n32\t48\t16\t16\t8\t8\t0\t0\n48\t48\t16\t16\t8\t8\t0\t0\n64\t48\t16\t16\t8\t8\t0\t0\n80\t48\t16\t16\t8\t8\t0\t0\n96\t48\t16\t16\t8\t8\t0\t0\n112\t48\t16\t16\t8\t8\t0\t0\n128\t48\t16\t16\t8\t8\t0\t0\n144\t48\t16\t16\t8\t8\t0\t0\n160\t48\t16\t16\t8\t8\t0\t0\n176\t48\t16\t16\t8\t8\t0\t0\n192\t48\t16\t16\t8\t8\t0\t0\n208\t48\t16\t16\t8\t8\t0\t0\n224\t48\t16\t16\t8\t8\t0\t0\n240\t48\t16\t16\t8\t8\t0\t0\n0\t64\t16\t16\t8\t8\t0\t0\n16\t64\t16\t16\t8\t8\t0\t0\n32\t64\t16\t16\t8\t8\t0\t0\n48\t64\t16\t16\t8\t8\t0\t0\n64\t64\t16\t16\t8\t8\t0\t0\n80\t64\t16\t16\t8\t8\t0\t0\n96\t64\t16\t16\t8\t8\t0\t0\n112\t64\t16\t16\t8\t8\t0\t0\n128\t64\t16\t16\t8\t8\t0\t0\n144\t64\t16\t16\t8\t8\t0\t0\n160\t64\t16\t16\t8\t8\t0\t0\n176\t64\t16\t16\t8\t8\t0\t0\n192\t64\t16\t16\t8\t8\t0\t0\n208\t64\t16\t16\t8\t8\t0\t0\n224\t64\t16\t16\t8\t8\t0\t0\n240\t64\t16\t16\t8\t8\t0\t0\n0\t80\t16\t16\t8\t8\t0\t0\n16\t80\t16\t16\t8\t8\t0\t0\n32\t80\t16\t16\t8\t8\t0\t0\n48\t80\t16\t16\t8\t8\t0\t0\n64\t80\t16\t16\t8\t8\t0\t0\n80\t80\t16\t16\t8\t8\t0\t0\n96\t80\t16\t16\t8\t8\t0\t0\n112\t80\t16\t16\t8\t8\t0\t0\n128\t80\t16\t16\t8\t8\t0\t0\n144\t80\t16\t16\t8\t8\t0\t0\n160\t80\t16\t16\t8\t8\t0\t0\n176\t80\t16\t16\t8\t8\t0\t0\n192\t80\t16\t16\t8\t8\t0\t0\n208\t80\t16\t16\t8\t8\t0\t0\n224\t80\t16\t16\t8\t8\t0\t0\n240\t80\t16\t16\t8\t8\t0\t0\n0\t96\t16\t16\t8\t8\t0\t0\n16\t96\t16\t16\t8\t8\t0\t0\n32\t96\t16\t16\t8\t8\t0\t0\n48\t96\t16\t16\t8\t8\t0\t0\n64\t96\t16\t16\t8\t8\t0\t0\n80\t96\t16\t16\t8\t8\t0\t0\n96\t96\t16\t16\t8\t8\t0\t0\n112\t96\t16\t16\t8\t8\t0\t0\n128\t96\t16\t16\t8\t8\t0\t0\n144\t96\t16\t16\t8\t8\t0\t0\n160\t96\t16\t16\t8\t8\t0\t0\n176\t96\t16\t16\t8\t8\t0\t0\n192\t96\t16\t16\t8\t8\t0\t0\n208\t96\t16\t16\t8\t8\t0\t0\n224\t96\t16\t16\t8\t8\t0\t0\n240\t96\t16\t16\t8\t8\t0\t0\n0\t112\t16\t16\t8\t8\t0\t0\n16\t112\t16\t16\t8\t8\t0\t0\n32\t112\t16\t16\t8\t8\t0\t0\n48\t112\t16\t16\t8\t8\t0\t0\n64\t112\t16\t16\t8\t8\t0\t0\n80\t112\t16\t16\t8\t8\t0\t0\n96\t112\t16\t16\t8\t8\t0\t0\n112\t112\t16\t16\t8\t8\t0\t0\n128\t112\t16\t16\t8\t8\t0\t0\n144\t112\t16\t16\t8\t8\t0\t0\n160\t112\t16\t16\t8\t8\t0\t0\n176\t112\t16\t16\t8\t8\t0\t0\n192\t112\t16\t16\t8\t8\t0\t0\n208\t112\t16\t16\t8\t8\t0\t0\n224\t112\t16\t16\t8\t8\t0\t0\n240\t112\t16\t16\t8\t8\t0\t0\n0\t128\t16\t16\t8\t8\t0\t0\n16\t128\t16\t16\t8\t8\t0\t0\n32\t128\t16\t16\t8\t8\t0\t0\n48\t128\t16\t16\t8\t8\t0\t0\n64\t128\t16\t16\t8\t8\t0\t0\n80\t128\t16\t16\t8\t8\t0\t0\n96\t128\t16\t16\t8\t8\t0\t0\n112\t128\t16\t16\t8\t8\t0\t0\n128\t128\t16\t16\t8\t8\t0\t0\n144\t128\t16\t16\t8\t8\t0\t0\n160\t128\t16\t16\t8\t8\t0\t0\n176\t128\t16\t16\t8\t8\t0\t0\n192\t128\t16\t16\t8\t8\t0\t0\n208\t128\t16\t16\t8\t8\t0\t0\n224\t128\t16\t16\t8\t8\t0\t0\n240\t128\t16\t16\t8\t8\t0\t0\n0\t144\t16\t16\t8\t8\t0\t0\n16\t144\t16\t16\t8\t8\t0\t0\n32\t144\t16\t16\t8\t8\t0\t0\n48\t144\t16\t16\t8\t8\t0\t0\n64\t144\t16\t16\t8\t8\t0\t0\n80\t144\t16\t16\t8\t8\t0\t0\n96\t144\t16\t16\t8\t8\t0\t0\n112\t144\t16\t16\t8\t8\t0\t0\n128\t144\t16\t16\t8\t8\t0\t0\n144\t144\t16\t16\t8\t8\t0\t0\n160\t144\t16\t16\t8\t8\t0\t0\n176\t144\t16\t16\t8\t8\t0\t0\n192\t144\t16\t16\t8\t8\t0\t0\n208\t144\t16\t16\t8\t8\t0\t0\n224\t144\t16\t16\t8\t8\t0\t0\n240\t144\t16\t16\t8\t8\t0\t0\n0\t160\t16\t16\t8\t8\t0\t0\n16\t160\t16\t16\t8\t8\t0\t0\n32\t160\t16\t16\t8\t8\t0\t0\n48\t160\t16\t16\t8\t8\t0\t0\n64\t160\t16\t16\t8\t8\t0\t0\n80\t160\t16\t16\t8\t8\t0\t0\n96\t160\t16\t16\t8\t8\t0\t0\n112\t160\t16\t16\t8\t8\t0\t0\n128\t160\t16\t16\t8\t8\t0\t0\n144\t160\t16\t16\t8\t8\t0\t0\n160\t160\t16\t16\t8\t8\t0\t0\n176\t160\t16\t16\t8\t8\t0\t0\n192\t160\t16\t16\t8\t8\t0\t0\n208\t160\t16\t16\t8\t8\t0\t0\n224\t160\t16\t16\t8\t8\t0\t0\n240\t160\t16\t16\t8\t8\t0\t0\n0\t176\t16\t16\t8\t8\t0\t0\n16\t176\t16\t16\t8\t8\t0\t0\n32\t176\t16\t16\t8\t8\t0\t0\n48\t176\t16\t16\t8\t8\t0\t0\n64\t176\t16\t16\t8\t8\t0\t0\n80\t176\t16\t16\t8\t8\t0\t0\n96\t176\t16\t16\t8\t8\t0\t0\n112\t176\t16\t16\t8\t8\t0\t0\n128\t176\t16\t16\t8\t8\t0\t0\n144\t176\t16\t16\t8\t8\t0\t0\n160\t176\t16\t16\t8\t8\t0\t0\n176\t176\t16\t16\t8\t8\t0\t0\n192\t176\t16\t16\t8\t8\t0\t0\n208\t176\t16\t16\t8\t8\t0\t0\n224\t176\t16\t16\t8\t8\t0\t0\n240\t176\t16\t16\t8\t8\t0\t0\n0\t192\t16\t16\t8\t8\t0\t0\n16\t192\t16\t16\t8\t8\t0\t0\n32\t192\t16\t16\t8\t8\t0\t0\n48\t192\t16\t16\t8\t8\t0\t0\n64\t192\t16\t16\t8\t8\t0\t0\n80\t192\t16\t16\t8\t8\t0\t0\n96\t192\t16\t16\t8\t8\t0\t0\n112\t192\t16\t16\t8\t8\t0\t0\n128\t192\t16\t16\t8\t8\t0\t0\n144\t192\t16\t16\t8\t8\t0\t0\n160\t192\t16\t16\t8\t8\t0\t0\n176\t192\t16\t16\t8\t8\t0\t0\n192\t192\t16\t16\t8\t8\t0\t0\n208\t192\t16\t16\t8\t8\t0\t0\n224\t192\t16\t16\t8\t8\t0\t0\n240\t192\t16\t16\t8\t8\t0\t0\n0\t208\t16\t16\t8\t8\t0\t0\n16\t208\t16\t16\t8\t8\t0\t0\n32\t208\t16\t16\t8\t8\t0\t0\n48\t208\t16\t16\t8\t8\t0\t0\n64\t208\t16\t16\t8\t8\t0\t0\n80\t208\t16\t16\t8\t8\t0\t0\n96\t208\t16\t16\t8\t8\t0\t0\n112\t208\t16\t16\t8\t8\t0\t0\n128\t208\t16\t16\t8\t8\t0\t0\n144\t208\t16\t16\t8\t8\t0\t0\n160\t208\t16\t16\t8\t8\t0\t0\n176\t208\t16\t16\t8\t8\t0\t0\n192\t208\t16\t16\t8\t8\t0\t0\n208\t208\t16\t16\t8\t8\t0\t0\n224\t208\t16\t16\t8\t8\t0\t0\n240\t208\t16\t16\t8\t8\t0\t0\n0\t224\t16\t16\t8\t8\t0\t0\n16\t224\t16\t16\t8\t8\t0\t0\n32\t224\t16\t16\t8\t8\t0\t0\n48\t224\t16\t16\t8\t8\t0\t0\n64\t224\t16\t16\t8\t8\t0\t0\n80\t224\t16\t16\t8\t8\t0\t0\n96\t224\t16\t16\t8\t8\t0\t0\n112\t224\t16\t16\t8\t8\t0\t0\n128\t224\t16\t16\t8\t8\t0\t0\n144\t224\t16\t16\t8\t8\t0\t0\n160\t224\t16\t16\t8\t8\t0\t0\n176\t224\t16\t16\t8\t8\t0\t0\n192\t224\t16\t16\t8\t8\t0\t0\n208\t224\t16\t16\t8\t8\t0\t0\n224\t224\t16\t16\t8\t8\t0\t0\n240\t224\t16\t16\t8\t8\t0\t0\n0\t240\t16\t16\t8\t8\t0\t0\n16\t240\t16\t16\t8\t8\t0\t0\n32\t240\t16\t16\t8\t8\t0\t0\n48\t240\t16\t16\t8\t8\t0\t0\n64\t240\t16\t16\t8\t8\t0\t0\n80\t240\t16\t16\t8\t8\t0\t0\n96\t240\t16\t16\t8\t8\t0\t0\n112\t240\t16\t16\t8\t8\t0\t0\n128\t240\t16\t16\t8\t8\t0\t0\n144\t240\t16\t16\t8\t8\t0\t0\n160\t240\t16\t16\t8\t8\t0\t0\n176\t240\t16\t16\t8\t8\t0\t0\n192\t240\t16\t16\t8\t8\t0\t0\n208\t240\t16\t16\t8\t8\t0\t0\n224\t240\t16\t16\t8\t8\t0\t0\n240\t240\t16\t16\t8\t8\t0\t0"
  },
  {
    "path": "data/sprites/font_symbols.spr",
    "content": "SPRv2 ui/font_symbols\n\n0\t0\t16\t16\t8\t8\t0\t0\n0\t16\t16\t16\t8\t8\t0\t0\n0\t32\t16\t16\t8\t8\t0\t0\n0\t48\t16\t16\t8\t8\t0\t0\n16\t0\t16\t16\t8\t8\t0\t0\n16\t16\t16\t16\t8\t8\t0\t0\n16\t32\t16\t16\t8\t8\t0\t0\n16\t48\t16\t16\t8\t8\t0\t0\n32\t0\t16\t16\t8\t8\t0\t0\n32\t16\t16\t16\t8\t8\t0\t0\n32\t32\t16\t16\t8\t8\t0\t0\n32\t48\t16\t16\t8\t8\t0\t0\n48\t0\t16\t16\t8\t8\t0\t0\n48\t16\t16\t16\t8\t8\t0\t0\n48\t32\t16\t16\t8\t8\t0\t0\n48\t48\t16\t16\t8\t8\t0\t0\n64\t0\t16\t16\t8\t8\t0\t0\n64\t16\t16\t16\t8\t8\t0\t0\n64\t32\t16\t16\t8\t8\t0\t0\n64\t48\t16\t16\t8\t8\t0\t0\n80\t0\t16\t16\t8\t8\t0\t0\n80\t16\t16\t16\t8\t8\t0\t0\n80\t32\t16\t16\t8\t8\t0\t0\n80\t48\t16\t16\t8\t8\t0\t0\n96\t0\t16\t16\t8\t8\t0\t0\n96\t16\t16\t16\t8\t8\t0\t0\n96\t32\t16\t16\t8\t8\t0\t0\n96\t48\t16\t16\t8\t8\t0\t0\n112\t0\t16\t16\t8\t8\t0\t0\n112\t16\t16\t16\t8\t8\t0\t0\n112\t32\t16\t16\t8\t8\t0\t0\n112\t48\t16\t16\t8\t8\t0\t0\n128\t0\t16\t16\t8\t8\t0\t0\n128\t16\t16\t16\t8\t8\t0\t0\n128\t32\t16\t16\t8\t8\t0\t0\n128\t48\t16\t16\t8\t8\t0\t0\n144\t0\t16\t16\t8\t8\t0\t0\n144\t16\t16\t16\t8\t8\t0\t0\n144\t32\t16\t16\t8\t8\t0\t0\n144\t48\t16\t16\t8\t8\t0\t0\n0\t64\t20\t20\t10\t10\t0\t0\n0\t84\t20\t20\t10\t10\t0\t0\n0\t104\t20\t20\t10\t10\t0\t0\n0\t124\t20\t20\t10\t10\t0\t0\n20\t64\t20\t20\t10\t10\t0\t0\n20\t84\t20\t20\t10\t10\t0\t0\n20\t104\t20\t20\t10\t10\t0\t0\n20\t124\t20\t20\t10\t10\t0\t0\n40\t64\t20\t20\t10\t10\t0\t0\n40\t84\t20\t20\t10\t10\t0\t0\n40\t104\t20\t20\t10\t10\t0\t0\n40\t124\t20\t20\t10\t10\t0\t0\n60\t64\t20\t20\t10\t10\t0\t0\n60\t84\t20\t20\t10\t10\t0\t0\n60\t104\t20\t20\t10\t10\t0\t0\n60\t124\t20\t20\t10\t10\t0\t0\n80\t64\t20\t20\t10\t10\t0\t0\n80\t84\t20\t20\t10\t10\t0\t0\n80\t104\t20\t20\t10\t10\t0\t0\n80\t124\t20\t20\t10\t10\t0\t0\n100\t64\t20\t20\t10\t10\t0\t0\n100\t84\t20\t20\t10\t10\t0\t0\n100\t104\t20\t20\t10\t10\t0\t0\n100\t124\t20\t20\t10\t10\t0\t0\n120\t64\t20\t20\t10\t10\t0\t0\n120\t84\t20\t20\t10\t10\t0\t0\n120\t104\t20\t20\t10\t10\t0\t0\n120\t124\t20\t20\t10\t10\t0\t0\n140\t64\t20\t20\t10\t10\t0\t0\n140\t84\t20\t20\t10\t10\t0\t0\n140\t104\t20\t20\t10\t10\t0\t0\n140\t124\t20\t20\t10\t10\t0\t0\n160\t64\t20\t20\t10\t10\t0\t0\n160\t84\t20\t20\t10\t10\t0\t0\n160\t104\t20\t20\t10\t10\t0\t0\n160\t124\t20\t20\t10\t10\t0\t0\n0\t0\t0\t0\t0\t0\t0\t0\n0\t0\t0\t0\t0\t0\t0\t0\n0\t0\t0\t0\t0\t0\t0\t0\n0\t0\t0\t0\t0\t0\t0\t0\n60\t84\t5\t5\t2\t2\t0\t0\n75\t84\t5\t5\t2\t2\t0\t0\n60\t99\t5\t5\t2\t2\t0\t0\n75\t99\t5\t5\t2\t2\t0\t0\n65\t84\t10\t5\t5\t2\t0\t0\n75\t89\t5\t10\t2\t5\t0\t0\n60\t89\t5\t10\t2\t5\t0\t0\n65\t99\t10\t5\t5\t2\t0\t0\n65\t89\t10\t10\t5\t5\t0\t0\n240\t50\t16\t12\t8\t6\t0\t0\n240\t0\t16\t4\t8\t2\t0\t0\n240\t44\t16\t4\t8\t2\t0\t0\n240\t16\t16\t4\t8\t2\t0\t0"
  },
  {
    "path": "data/sprites/font_text.spr",
    "content": "SPRv2 ui/font_text\n\n0\t0\t10\t16\t8\t8\t0\t0\n16\t0\t10\t16\t8\t8\t0\t0\n32\t0\t10\t16\t8\t8\t0\t0\n48\t0\t10\t16\t8\t8\t0\t0\n64\t0\t10\t16\t8\t8\t0\t0\n80\t0\t10\t16\t8\t8\t0\t0\n96\t0\t10\t16\t8\t8\t0\t0\n112\t0\t10\t16\t8\t8\t0\t0\n128\t0\t10\t16\t8\t8\t0\t0\n144\t0\t10\t16\t8\t8\t0\t0\n160\t0\t10\t16\t8\t8\t0\t0\n176\t0\t10\t16\t8\t8\t0\t0\n192\t0\t10\t16\t8\t8\t0\t0\n208\t0\t10\t16\t8\t8\t0\t0\n224\t0\t10\t16\t8\t8\t0\t0\n240\t0\t10\t16\t8\t8\t0\t0\n0\t16\t10\t16\t8\t8\t0\t0\n16\t16\t10\t16\t8\t8\t0\t0\n32\t16\t10\t16\t8\t8\t0\t0\n48\t16\t10\t16\t8\t8\t0\t0\n64\t16\t10\t16\t8\t8\t0\t0\n80\t16\t10\t16\t8\t8\t0\t0\n96\t16\t10\t16\t8\t8\t0\t0\n112\t16\t10\t16\t8\t8\t0\t0\n128\t16\t10\t16\t8\t8\t0\t0\n144\t16\t10\t16\t8\t8\t0\t0\n160\t16\t10\t16\t8\t8\t0\t0\n176\t16\t10\t16\t8\t8\t0\t0\n192\t16\t10\t16\t8\t8\t0\t0\n208\t16\t10\t16\t8\t8\t0\t0\n224\t16\t10\t16\t8\t8\t0\t0\n240\t16\t10\t16\t8\t8\t0\t0\n0\t32\t4\t16\t8\t8\t0\t0\n16\t32\t3\t16\t8\t8\t0\t0\n32\t32\t5\t16\t8\t8\t0\t0\n48\t32\t7\t16\t8\t8\t0\t0\n64\t32\t7\t16\t8\t8\t0\t0\n80\t32\t12\t16\t8\t8\t0\t0\n96\t32\t9\t16\t8\t8\t0\t0\n112\t32\t2\t16\t8\t8\t0\t0\n128\t32\t4\t16\t8\t8\t0\t0\n144\t32\t4\t16\t8\t8\t0\t0\n160\t32\t5\t16\t8\t8\t0\t0\n176\t32\t8\t16\t8\t8\t0\t0\n192\t32\t4\t16\t8\t8\t0\t0\n208\t32\t4\t16\t8\t8\t0\t0\n224\t32\t4\t16\t8\t8\t0\t0\n240\t32\t4\t16\t8\t8\t0\t0\n0\t48\t7\t16\t8\t8\t0\t0\n16\t48\t7\t16\t8\t8\t0\t0\n32\t48\t7\t16\t8\t8\t0\t0\n48\t48\t7\t16\t8\t8\t0\t0\n64\t48\t7\t16\t8\t8\t0\t0\n80\t48\t7\t16\t8\t8\t0\t0\n96\t48\t7\t16\t8\t8\t0\t0\n112\t48\t7\t16\t8\t8\t0\t0\n128\t48\t7\t16\t8\t8\t0\t0\n144\t48\t7\t16\t8\t8\t0\t0\n160\t48\t4\t16\t8\t8\t0\t0\n176\t48\t4\t16\t8\t8\t0\t0\n192\t48\t8\t16\t8\t8\t0\t0\n208\t48\t8\t16\t8\t8\t0\t0\n224\t48\t8\t16\t8\t8\t0\t0\n240\t48\t7\t16\t8\t8\t0\t0\n0\t64\t13\t16\t8\t8\t0\t0\n16\t64\t9\t16\t8\t8\t0\t0\n32\t64\t9\t16\t8\t8\t0\t0\n48\t64\t9\t16\t8\t8\t0\t0\n64\t64\t9\t16\t8\t8\t0\t0\n80\t64\t9\t16\t8\t8\t0\t0\n96\t64\t8\t16\t8\t8\t0\t0\n112\t64\t10\t16\t8\t8\t0\t0\n128\t64\t9\t16\t8\t8\t0\t0\n144\t64\t3\t16\t8\t8\t0\t0\n160\t64\t6\t16\t8\t8\t0\t0\n176\t64\t9\t16\t8\t8\t0\t0\n192\t64\t7\t16\t8\t8\t0\t0\n208\t64\t11\t16\t8\t8\t0\t0\n224\t64\t9\t16\t8\t8\t0\t0\n240\t64\t10\t16\t8\t8\t0\t0\n0\t80\t9\t16\t8\t8\t0\t0\n16\t80\t10\t16\t8\t8\t0\t0\n32\t80\t9\t16\t8\t8\t0\t0\n48\t80\t9\t16\t8\t8\t0\t0\n64\t80\t7\t16\t8\t8\t0\t0\n80\t80\t9\t16\t8\t8\t0\t0\n96\t80\t9\t16\t8\t8\t0\t0\n112\t80\t13\t16\t8\t8\t0\t0\n128\t80\t7\t16\t8\t8\t0\t0\n144\t80\t9\t16\t8\t8\t0\t0\n160\t80\t7\t16\t8\t8\t0\t0\n176\t80\t4\t16\t8\t8\t0\t0\n192\t80\t4\t16\t8\t8\t0\t0\n208\t80\t4\t16\t8\t8\t0\t0\n224\t80\t5\t16\t8\t8\t0\t0\n240\t80\t7\t16\t8\t8\t0\t0\n0\t96\t4\t16\t8\t8\t0\t0\n16\t96\t7\t16\t8\t8\t0\t0\n32\t96\t7\t16\t8\t8\t0\t0\n48\t96\t7\t16\t8\t8\t0\t0\n64\t96\t7\t16\t8\t8\t0\t0\n80\t96\t7\t16\t8\t8\t0\t0\n96\t96\t3\t16\t8\t8\t0\t0\n112\t96\t7\t16\t8\t8\t0\t0\n128\t96\t7\t16\t8\t8\t0\t0\n144\t96\t3\t16\t8\t8\t0\t0\n160\t96\t3\t16\t8\t8\t0\t0\n176\t96\t7\t16\t8\t8\t0\t0\n192\t96\t3\t16\t8\t8\t0\t0\n208\t96\t11\t16\t8\t8\t0\t0\n224\t96\t7\t16\t8\t8\t0\t0\n240\t96\t7\t16\t8\t8\t0\t0\n0\t112\t7\t16\t8\t8\t0\t0\n16\t112\t7\t16\t8\t8\t0\t0\n32\t112\t4\t16\t8\t8\t0\t0\n48\t112\t7\t16\t8\t8\t0\t0\n64\t112\t4\t16\t8\t8\t0\t0\n80\t112\t7\t16\t8\t8\t0\t0\n96\t112\t5\t16\t8\t8\t0\t0\n112\t112\t9\t16\t8\t8\t0\t0\n128\t112\t7\t16\t8\t8\t0\t0\n144\t112\t7\t16\t8\t8\t0\t0\n160\t112\t7\t16\t8\t8\t0\t0\n176\t112\t4\t16\t8\t8\t0\t0\n192\t112\t3\t16\t8\t8\t0\t0\n208\t112\t4\t16\t8\t8\t0\t0\n224\t112\t8\t16\t8\t8\t0\t0\n240\t112\t10\t16\t8\t8\t0\t0\n0\t128\t7\t16\t8\t8\t0\t0\n16\t128\t10\t16\t8\t8\t0\t0\n32\t128\t3\t16\t8\t8\t0\t0\n48\t128\t10\t16\t8\t8\t0\t0\n64\t128\t4\t16\t8\t8\t0\t0\n80\t128\t13\t16\t8\t8\t0\t0\n96\t128\t7\t16\t8\t8\t0\t0\n112\t128\t7\t16\t8\t8\t0\t0\n128\t128\t10\t16\t8\t8\t0\t0\n144\t128\t14\t16\t8\t8\t0\t0\n160\t128\t10\t16\t8\t8\t0\t0\n176\t128\t4\t16\t8\t8\t0\t0\n192\t128\t10\t16\t8\t8\t0\t0\n208\t128\t4\t16\t8\t8\t0\t0\n224\t128\t4\t16\t8\t8\t0\t0\n240\t128\t4\t16\t8\t8\t0\t0\n0\t144\t10\t16\t8\t8\t0\t0\n16\t144\t3\t16\t8\t8\t0\t0\n32\t144\t3\t16\t8\t8\t0\t0\n48\t144\t4\t16\t8\t8\t0\t0\n64\t144\t4\t16\t8\t8\t0\t0\n80\t144\t5\t16\t8\t8\t0\t0\n96\t144\t7\t16\t8\t8\t0\t0\n112\t144\t13\t16\t8\t8\t0\t0\n128\t144\t10\t16\t8\t8\t0\t0\n144\t144\t13\t16\t8\t8\t0\t0\n160\t144\t10\t16\t8\t8\t0\t0\n176\t144\t4\t16\t8\t8\t0\t0\n192\t144\t10\t16\t8\t8\t0\t0\n208\t144\t7\t16\t8\t8\t0\t0\n224\t144\t4\t16\t8\t8\t0\t0\n240\t144\t10\t16\t8\t8\t0\t0\n0\t160\t4\t16\t8\t8\t0\t0\n16\t160\t10\t16\t8\t8\t0\t0\n32\t160\t7\t16\t8\t8\t0\t0\n48\t160\t7\t16\t8\t8\t0\t0\n64\t160\t7\t16\t8\t8\t0\t0\n80\t160\t10\t16\t8\t8\t0\t0\n96\t160\t3\t16\t8\t8\t0\t0\n112\t160\t7\t16\t8\t8\t0\t0\n128\t160\t10\t16\t8\t8\t0\t0\n144\t160\t10\t16\t8\t8\t0\t0\n160\t160\t9\t16\t8\t8\t0\t0\n176\t160\t7\t16\t8\t8\t0\t0\n192\t160\t8\t16\t8\t8\t0\t0\n208\t160\t4\t16\t8\t8\t0\t0\n224\t160\t10\t16\t8\t8\t0\t0\n240\t160\t13\t16\t8\t8\t0\t0\n0\t176\t5\t16\t8\t8\t0\t0\n16\t176\t7\t16\t8\t8\t0\t0\n32\t176\t4\t16\t8\t8\t0\t0\n48\t176\t4\t16\t8\t8\t0\t0\n64\t176\t4\t16\t8\t8\t0\t0\n80\t176\t7\t16\t8\t8\t0\t0\n96\t176\t7\t16\t8\t8\t0\t0\n112\t176\t4\t16\t8\t8\t0\t0\n128\t176\t7\t16\t8\t8\t0\t0\n144\t176\t4\t16\t8\t8\t0\t0\n160\t176\t4\t16\t8\t8\t0\t0\n176\t176\t7\t16\t8\t8\t0\t0\n192\t176\t11\t16\t8\t8\t0\t0\n208\t176\t11\t16\t8\t8\t0\t0\n224\t176\t11\t16\t8\t8\t0\t0\n240\t176\t12\t16\t8\t8\t0\t0\n0\t192\t9\t16\t8\t8\t0\t0\n16\t192\t3\t16\t8\t8\t0\t0\n32\t192\t9\t16\t8\t8\t0\t0\n48\t192\t9\t16\t8\t8\t0\t0\n64\t192\t9\t16\t8\t8\t0\t0\n80\t192\t9\t16\t8\t8\t0\t0\n96\t192\t9\t16\t8\t8\t0\t0\n112\t192\t9\t16\t8\t8\t0\t0\n128\t192\t9\t16\t8\t8\t0\t0\n144\t192\t9\t16\t8\t8\t0\t0\n160\t192\t7\t16\t8\t8\t0\t0\n176\t192\t9\t16\t8\t8\t0\t0\n192\t192\t10\t16\t8\t8\t0\t0\n208\t192\t9\t16\t8\t8\t0\t0\n224\t192\t3\t16\t8\t8\t0\t0\n240\t192\t7\t16\t8\t8\t0\t0\n0\t208\t9\t16\t8\t8\t0\t0\n16\t208\t9\t16\t8\t8\t0\t0\n32\t208\t9\t16\t8\t8\t0\t0\n48\t208\t10\t16\t8\t8\t0\t0\n64\t208\t10\t16\t8\t8\t0\t0\n80\t208\t10\t16\t8\t8\t0\t0\n96\t208\t10\t16\t8\t8\t0\t0\n112\t208\t8\t16\t8\t8\t0\t0\n128\t208\t9\t16\t8\t8\t0\t0\n144\t208\t7\t16\t8\t8\t0\t0\n160\t208\t9\t16\t8\t8\t0\t0\n176\t208\t9\t16\t8\t8\t0\t0\n192\t208\t9\t16\t8\t8\t0\t0\n208\t208\t7\t16\t8\t8\t0\t0\n224\t208\t7\t16\t8\t8\t0\t0\n240\t208\t9\t16\t8\t8\t0\t0\n0\t224\t7\t16\t8\t8\t0\t0\n16\t224\t3\t16\t8\t8\t0\t0\n32\t224\t7\t16\t8\t8\t0\t0\n48\t224\t7\t16\t8\t8\t0\t0\n64\t224\t7\t16\t8\t8\t0\t0\n80\t224\t7\t16\t8\t8\t0\t0\n96\t224\t7\t16\t8\t8\t0\t0\n112\t224\t7\t16\t8\t8\t0\t0\n128\t224\t7\t16\t8\t8\t0\t0\n144\t224\t7\t16\t8\t8\t0\t0\n160\t224\t7\t16\t8\t8\t0\t0\n176\t224\t7\t16\t8\t8\t0\t0\n192\t224\t7\t16\t8\t8\t0\t0\n208\t224\t7\t16\t8\t8\t0\t0\n224\t224\t3\t16\t8\t8\t0\t0\n240\t224\t3\t16\t8\t8\t0\t0\n0\t240\t7\t16\t8\t8\t0\t0\n16\t240\t7\t16\t8\t8\t0\t0\n32\t240\t7\t16\t8\t8\t0\t0\n48\t240\t7\t16\t8\t8\t0\t0\n64\t240\t7\t16\t8\t8\t0\t0\n80\t240\t7\t16\t8\t8\t0\t0\n96\t240\t7\t16\t8\t8\t0\t0\n112\t240\t7\t16\t8\t8\t0\t0\n128\t240\t7\t16\t8\t8\t0\t0\n144\t240\t3\t16\t8\t8\t0\t0\n160\t240\t7\t16\t8\t8\t0\t0\n176\t240\t7\t16\t8\t8\t0\t0\n192\t240\t7\t16\t8\t8\t0\t0\n208\t240\t7\t16\t8\t8\t0\t0\n224\t240\t7\t16\t8\t8\t0\t0\n240\t240\t4\t16\t8\t8\t0\t0"
  },
  {
    "path": "data/sprites/font_text_bold.spr",
    "content": "SPRv2 ui/font_text_bold\n\n0\t0\t10\t16\t8\t8\t0\t0\n16\t0\t10\t16\t8\t8\t0\t0\n32\t0\t10\t16\t8\t8\t0\t0\n48\t0\t10\t16\t8\t8\t0\t0\n64\t0\t10\t16\t8\t8\t0\t0\n80\t0\t10\t16\t8\t8\t0\t0\n96\t0\t10\t16\t8\t8\t0\t0\n112\t0\t10\t16\t8\t8\t0\t0\n128\t0\t10\t16\t8\t8\t0\t0\n144\t0\t10\t16\t8\t8\t0\t0\n160\t0\t10\t16\t8\t8\t0\t0\n176\t0\t10\t16\t8\t8\t0\t0\n192\t0\t10\t16\t8\t8\t0\t0\n208\t0\t10\t16\t8\t8\t0\t0\n224\t0\t10\t16\t8\t8\t0\t0\n240\t0\t10\t16\t8\t8\t0\t0\n0\t16\t10\t16\t8\t8\t0\t0\n16\t16\t10\t16\t8\t8\t0\t0\n32\t16\t10\t16\t8\t8\t0\t0\n48\t16\t10\t16\t8\t8\t0\t0\n64\t16\t10\t16\t8\t8\t0\t0\n80\t16\t10\t16\t8\t8\t0\t0\n96\t16\t10\t16\t8\t8\t0\t0\n112\t16\t10\t16\t8\t8\t0\t0\n128\t16\t10\t16\t8\t8\t0\t0\n144\t16\t10\t16\t8\t8\t0\t0\n160\t16\t10\t16\t8\t8\t0\t0\n176\t16\t10\t16\t8\t8\t0\t0\n192\t16\t10\t16\t8\t8\t0\t0\n208\t16\t10\t16\t8\t8\t0\t0\n224\t16\t10\t16\t8\t8\t0\t0\n240\t16\t10\t16\t8\t8\t0\t0\n0\t32\t4\t16\t8\t8\t0\t0\n16\t32\t4\t16\t8\t8\t0\t0\n32\t32\t6\t16\t8\t8\t0\t0\n48\t32\t7\t16\t8\t8\t0\t0\n64\t32\t7\t16\t8\t8\t0\t0\n80\t32\t10\t16\t8\t8\t0\t0\n96\t32\t9\t16\t8\t8\t0\t0\n112\t32\t3\t16\t8\t8\t0\t0\n128\t32\t4\t16\t8\t8\t0\t0\n144\t32\t4\t16\t8\t8\t0\t0\n160\t32\t5\t16\t8\t8\t0\t0\n176\t32\t8\t16\t8\t8\t0\t0\n192\t32\t4\t16\t8\t8\t0\t0\n208\t32\t4\t16\t8\t8\t0\t0\n224\t32\t4\t16\t8\t8\t0\t0\n240\t32\t4\t16\t8\t8\t0\t0\n0\t48\t7\t16\t8\t8\t0\t0\n16\t48\t7\t16\t8\t8\t0\t0\n32\t48\t7\t16\t8\t8\t0\t0\n48\t48\t7\t16\t8\t8\t0\t0\n64\t48\t7\t16\t8\t8\t0\t0\n80\t48\t7\t16\t8\t8\t0\t0\n96\t48\t7\t16\t8\t8\t0\t0\n112\t48\t7\t16\t8\t8\t0\t0\n128\t48\t7\t16\t8\t8\t0\t0\n144\t48\t7\t16\t8\t8\t0\t0\n160\t48\t4\t16\t8\t8\t0\t0\n176\t48\t4\t16\t8\t8\t0\t0\n192\t48\t8\t16\t8\t8\t0\t0\n208\t48\t8\t16\t8\t8\t0\t0\n224\t48\t8\t16\t8\t8\t0\t0\n240\t48\t8\t16\t8\t8\t0\t0\n0\t64\t13\t16\t8\t8\t0\t0\n16\t64\t9\t16\t8\t8\t0\t0\n32\t64\t9\t16\t8\t8\t0\t0\n48\t64\t9\t16\t8\t8\t0\t0\n64\t64\t9\t16\t8\t8\t0\t0\n80\t64\t8\t16\t8\t8\t0\t0\n96\t64\t8\t16\t8\t8\t0\t0\n112\t64\t10\t16\t8\t8\t0\t0\n128\t64\t9\t16\t8\t8\t0\t0\n144\t64\t4\t16\t8\t8\t0\t0\n160\t64\t7\t16\t8\t8\t0\t0\n176\t64\t9\t16\t8\t8\t0\t0\n192\t64\t8\t16\t8\t8\t0\t0\n208\t64\t11\t16\t8\t8\t0\t0\n224\t64\t9\t16\t8\t8\t0\t0\n240\t64\t10\t16\t8\t8\t0\t0\n0\t80\t9\t16\t8\t8\t0\t0\n16\t80\t10\t16\t8\t8\t0\t0\n32\t80\t9\t16\t8\t8\t0\t0\n48\t80\t9\t16\t8\t8\t0\t0\n64\t80\t8\t16\t8\t8\t0\t0\n80\t80\t9\t16\t8\t8\t0\t0\n96\t80\t9\t16\t8\t8\t0\t0\n112\t80\t13\t16\t8\t8\t0\t0\n128\t80\t9\t16\t8\t8\t0\t0\n144\t80\t8\t16\t8\t8\t0\t0\n160\t80\t7\t16\t8\t8\t0\t0\n176\t80\t4\t16\t8\t8\t0\t0\n192\t80\t4\t16\t8\t8\t0\t0\n208\t80\t4\t16\t8\t8\t0\t0\n224\t80\t8\t16\t8\t8\t0\t0\n240\t80\t7\t16\t8\t8\t0\t0\n0\t96\t4\t16\t8\t8\t0\t0\n16\t96\t8\t16\t8\t8\t0\t0\n32\t96\t8\t16\t8\t8\t0\t0\n48\t96\t7\t16\t8\t8\t0\t0\n64\t96\t8\t16\t8\t8\t0\t0\n80\t96\t8\t16\t8\t8\t0\t0\n96\t96\t4\t16\t8\t8\t0\t0\n112\t96\t8\t16\t8\t8\t0\t0\n128\t96\t8\t16\t8\t8\t0\t0\n144\t96\t4\t16\t8\t8\t0\t0\n160\t96\t4\t16\t8\t8\t0\t0\n176\t96\t7\t16\t8\t8\t0\t0\n192\t96\t4\t16\t8\t8\t0\t0\n208\t96\t12\t16\t8\t8\t0\t0\n224\t96\t8\t16\t8\t8\t0\t0\n240\t96\t8\t16\t8\t8\t0\t0\n0\t112\t8\t16\t8\t8\t0\t0\n16\t112\t8\t16\t8\t8\t0\t0\n32\t112\t5\t16\t8\t8\t0\t0\n48\t112\t6\t16\t8\t8\t0\t0\n64\t112\t4\t16\t8\t8\t0\t0\n80\t112\t8\t16\t8\t8\t0\t0\n96\t112\t7\t16\t8\t8\t0\t0\n112\t112\t11\t16\t8\t8\t0\t0\n128\t112\t8\t16\t8\t8\t0\t0\n144\t112\t7\t16\t8\t8\t0\t0\n160\t112\t7\t16\t8\t8\t0\t0\n176\t112\t5\t16\t8\t8\t0\t0\n192\t112\t3\t16\t8\t8\t0\t0\n208\t112\t5\t16\t8\t8\t0\t0\n224\t112\t8\t16\t8\t8\t0\t0\n240\t112\t10\t16\t8\t8\t0\t0\n0\t128\t7\t16\t8\t8\t0\t0\n16\t128\t10\t16\t8\t8\t0\t0\n32\t128\t4\t16\t8\t8\t0\t0\n48\t128\t10\t16\t8\t8\t0\t0\n64\t128\t7\t16\t8\t8\t0\t0\n80\t128\t13\t16\t8\t8\t0\t0\n96\t128\t7\t16\t8\t8\t0\t0\n112\t128\t7\t16\t8\t8\t0\t0\n128\t128\t10\t16\t8\t8\t0\t0\n144\t128\t12\t16\t8\t8\t0\t0\n160\t128\t10\t16\t8\t8\t0\t0\n176\t128\t4\t16\t8\t8\t0\t0\n192\t128\t10\t16\t8\t8\t0\t0\n208\t128\t4\t16\t8\t8\t0\t0\n224\t128\t4\t16\t8\t8\t0\t0\n240\t128\t4\t16\t8\t8\t0\t0\n0\t144\t10\t16\t8\t8\t0\t0\n16\t144\t4\t16\t8\t8\t0\t0\n32\t144\t4\t16\t8\t8\t0\t0\n48\t144\t7\t16\t8\t8\t0\t0\n64\t144\t7\t16\t8\t8\t0\t0\n80\t144\t5\t16\t8\t8\t0\t0\n96\t144\t7\t16\t8\t8\t0\t0\n112\t144\t13\t16\t8\t8\t0\t0\n128\t144\t10\t16\t8\t8\t0\t0\n144\t144\t13\t16\t8\t8\t0\t0\n160\t144\t10\t16\t8\t8\t0\t0\n176\t144\t4\t16\t8\t8\t0\t0\n192\t144\t10\t16\t8\t8\t0\t0\n208\t144\t7\t16\t8\t8\t0\t0\n224\t144\t4\t16\t8\t8\t0\t0\n240\t144\t10\t16\t8\t8\t0\t0\n0\t160\t4\t16\t8\t8\t0\t0\n16\t160\t10\t16\t8\t8\t0\t0\n32\t160\t7\t16\t8\t8\t0\t0\n48\t160\t7\t16\t8\t8\t0\t0\n64\t160\t7\t16\t8\t8\t0\t0\n80\t160\t10\t16\t8\t8\t0\t0\n96\t160\t3\t16\t8\t8\t0\t0\n112\t160\t7\t16\t8\t8\t0\t0\n128\t160\t10\t16\t8\t8\t0\t0\n144\t160\t10\t16\t8\t8\t0\t0\n160\t160\t9\t16\t8\t8\t0\t0\n176\t160\t7\t16\t8\t8\t0\t0\n192\t160\t8\t16\t8\t8\t0\t0\n208\t160\t4\t16\t8\t8\t0\t0\n224\t160\t10\t16\t8\t8\t0\t0\n240\t160\t13\t16\t8\t8\t0\t0\n0\t176\t5\t16\t8\t8\t0\t0\n16\t176\t7\t16\t8\t8\t0\t0\n32\t176\t4\t16\t8\t8\t0\t0\n48\t176\t4\t16\t8\t8\t0\t0\n64\t176\t4\t16\t8\t8\t0\t0\n80\t176\t7\t16\t8\t8\t0\t0\n96\t176\t7\t16\t8\t8\t0\t0\n112\t176\t4\t16\t8\t8\t0\t0\n128\t176\t8\t16\t8\t8\t0\t0\n144\t176\t4\t16\t8\t8\t0\t0\n160\t176\t5\t16\t8\t8\t0\t0\n176\t176\t7\t16\t8\t8\t0\t0\n192\t176\t11\t16\t8\t8\t0\t0\n208\t176\t11\t16\t8\t8\t0\t0\n224\t176\t11\t16\t8\t8\t0\t0\n240\t176\t12\t16\t8\t8\t0\t0\n0\t192\t9\t16\t8\t8\t0\t0\n16\t192\t4\t16\t8\t8\t0\t0\n32\t192\t9\t16\t8\t8\t0\t0\n48\t192\t9\t16\t8\t8\t0\t0\n64\t192\t9\t16\t8\t8\t0\t0\n80\t192\t9\t16\t8\t8\t0\t0\n96\t192\t8\t16\t8\t8\t0\t0\n112\t192\t8\t16\t8\t8\t0\t0\n128\t192\t9\t16\t8\t8\t0\t0\n144\t192\t8\t16\t8\t8\t0\t0\n160\t192\t7\t16\t8\t8\t0\t0\n176\t192\t8\t16\t8\t8\t0\t0\n192\t192\t10\t16\t8\t8\t0\t0\n208\t192\t9\t16\t8\t8\t0\t0\n224\t192\t4\t16\t8\t8\t0\t0\n240\t192\t8\t16\t8\t8\t0\t0\n0\t208\t9\t16\t8\t8\t0\t0\n16\t208\t9\t16\t8\t8\t0\t0\n32\t208\t9\t16\t8\t8\t0\t0\n48\t208\t10\t16\t8\t8\t0\t0\n64\t208\t10\t16\t8\t8\t0\t0\n80\t208\t10\t16\t8\t8\t0\t0\n96\t208\t10\t16\t8\t8\t0\t0\n112\t208\t8\t16\t8\t8\t0\t0\n128\t208\t9\t16\t8\t8\t0\t0\n144\t208\t8\t16\t8\t8\t0\t0\n160\t208\t9\t16\t8\t8\t0\t0\n176\t208\t9\t16\t8\t8\t0\t0\n192\t208\t9\t16\t8\t8\t0\t0\n208\t208\t7\t16\t8\t8\t0\t0\n224\t208\t7\t16\t8\t8\t0\t0\n240\t208\t8\t16\t8\t8\t0\t0\n0\t224\t8\t16\t8\t8\t0\t0\n16\t224\t4\t16\t8\t8\t0\t0\n32\t224\t8\t16\t8\t8\t0\t0\n48\t224\t7\t16\t8\t8\t0\t0\n64\t224\t8\t16\t8\t8\t0\t0\n80\t224\t8\t16\t8\t8\t0\t0\n96\t224\t8\t16\t8\t8\t0\t0\n112\t224\t8\t16\t8\t8\t0\t0\n128\t224\t7\t16\t8\t8\t0\t0\n144\t224\t8\t16\t8\t8\t0\t0\n160\t224\t7\t16\t8\t8\t0\t0\n176\t224\t8\t16\t8\t8\t0\t0\n192\t224\t8\t16\t8\t8\t0\t0\n208\t224\t7\t16\t8\t8\t0\t0\n224\t224\t4\t16\t8\t8\t0\t0\n240\t224\t4\t16\t8\t8\t0\t0\n0\t240\t6\t16\t8\t8\t0\t0\n16\t240\t8\t16\t8\t8\t0\t0\n32\t240\t8\t16\t8\t8\t0\t0\n48\t240\t8\t16\t8\t8\t0\t0\n64\t240\t8\t16\t8\t8\t0\t0\n80\t240\t8\t16\t8\t8\t0\t0\n96\t240\t8\t16\t8\t8\t0\t0\n112\t240\t7\t16\t8\t8\t0\t0\n128\t240\t8\t16\t8\t8\t0\t0\n144\t240\t4\t16\t8\t8\t0\t0\n160\t240\t6\t16\t8\t8\t0\t0\n176\t240\t8\t16\t8\t8\t0\t0\n192\t240\t8\t16\t8\t8\t0\t0\n208\t240\t7\t16\t8\t8\t0\t0\n224\t240\t7\t16\t8\t8\t0\t0\n240\t240\t4\t16\t8\t8\t0\t0"
  },
  {
    "path": "data/sprites/font_widgets.spr",
    "content": "SPRv2 ui/font_widgets\n\n# 0. button normal\n0\t0\t4\t4\t2\t2\t0\t0\n6\t0\t4\t4\t2\t2\t0\t0\n12\t0\t4\t4\t2\t2\t0\t0\n0\t6\t4\t4\t2\t2\t0\t0\n6\t6\t4\t4\t2\t2\t0\t0\n12\t6\t4\t4\t2\t2\t0\t0\n0\t12\t4\t4\t2\t2\t0\t0\n6\t12\t4\t4\t2\t2\t0\t0\n12\t12\t4\t4\t2\t2\t0\t0\n\n# 9. button pressed\n16\t0\t4\t4\t2\t2\t0\t0\n22\t0\t4\t4\t2\t2\t0\t0\n28\t0\t4\t4\t2\t2\t0\t0\n16\t6\t4\t4\t2\t2\t0\t0\n22\t6\t4\t4\t2\t2\t0\t0\n28\t6\t4\t4\t2\t2\t0\t0\n16\t12\t4\t4\t2\t2\t0\t0\n22\t12\t4\t4\t2\t2\t0\t0\n28\t12\t4\t4\t2\t2\t0\t0\n\n# 18. button selected enabled\n32\t0\t4\t4\t2\t2\t0\t0\n38\t0\t4\t4\t2\t2\t0\t0\n44\t0\t4\t4\t2\t2\t0\t0\n32\t6\t4\t4\t2\t2\t0\t0\n38\t6\t4\t4\t2\t2\t0\t0\n44\t6\t4\t4\t2\t2\t0\t0\n32\t12\t4\t4\t2\t2\t0\t0\n38\t12\t4\t4\t2\t2\t0\t0\n44\t12\t4\t4\t2\t2\t0\t0\n\n# 27. button selected disabled\n48\t0\t4\t4\t2\t2\t0\t0\n54\t0\t4\t4\t2\t2\t0\t0\n60\t0\t4\t4\t2\t2\t0\t0\n48\t6\t4\t4\t2\t2\t0\t0\n54\t6\t4\t4\t2\t2\t0\t0\n60\t6\t4\t4\t2\t2\t0\t0\n48\t12\t4\t4\t2\t2\t0\t0\n54\t12\t4\t4\t2\t2\t0\t0\n60\t12\t4\t4\t2\t2\t0\t0\n\n# 36. button disabled\n64\t0\t4\t4\t2\t2\t0\t0\n70\t0\t4\t4\t2\t2\t0\t0\n76\t0\t4\t4\t2\t2\t0\t0\n64\t6\t4\t4\t2\t2\t0\t0\n70\t6\t4\t4\t2\t2\t0\t0\n76\t6\t4\t4\t2\t2\t0\t0\n64\t12\t4\t4\t2\t2\t0\t0\n70\t12\t4\t4\t2\t2\t0\t0\n76\t12\t4\t4\t2\t2\t0\t0\n\n# 45. button pressed disabled\n80\t0\t4\t4\t2\t2\t0\t0\n86\t0\t4\t4\t2\t2\t0\t0\n92\t0\t4\t4\t2\t2\t0\t0\n80\t6\t4\t4\t2\t2\t0\t0\n86\t6\t4\t4\t2\t2\t0\t0\n92\t6\t4\t4\t2\t2\t0\t0\n80\t12\t4\t4\t2\t2\t0\t0\n86\t12\t4\t4\t2\t2\t0\t0\n92\t12\t4\t4\t2\t2\t0\t0\n\n# 54. window\n0\t0\t4\t4\t2\t2\t0\t0\n6\t0\t4\t4\t2\t2\t0\t0\n12\t0\t4\t4\t2\t2\t0\t0\n0\t6\t4\t4\t2\t2\t0\t0\n6\t6\t4\t4\t2\t2\t0\t0\n12\t6\t4\t4\t2\t2\t0\t0\n0\t12\t4\t4\t2\t2\t0\t0\n6\t12\t4\t4\t2\t2\t0\t0\n12\t12\t4\t4\t2\t2\t0\t0\n\n# 63. reverse window\n16\t0\t4\t4\t2\t2\t0\t0\n22\t0\t4\t4\t2\t2\t0\t0\n28\t0\t4\t4\t2\t2\t0\t0\n16\t6\t4\t4\t2\t2\t0\t0\n22\t6\t4\t4\t2\t2\t0\t0\n28\t6\t4\t4\t2\t2\t0\t0\n16\t12\t4\t4\t2\t2\t0\t0\n22\t12\t4\t4\t2\t2\t0\t0\n28\t12\t4\t4\t2\t2\t0\t0\n\n#  72. combo-box\n0\t32\t4\t4\t2\t2\t0\t0\n6\t32\t4\t4\t2\t2\t0\t0\n12\t32\t4\t4\t2\t2\t0\t0\n0\t38\t4\t4\t2\t2\t0\t0\n6\t38\t4\t4\t2\t2\t0\t0\n12\t38\t4\t4\t2\t2\t0\t0\n0\t44\t4\t4\t2\t2\t0\t0\n6\t44\t4\t4\t2\t2\t0\t0\n12\t44\t4\t4\t2\t2\t0\t0\n\n# 81. combo-box pressed\n16\t32\t4\t4\t2\t2\t0\t0\n22\t32\t4\t4\t2\t2\t0\t0\n28\t32\t4\t4\t2\t2\t0\t0\n16\t38\t4\t4\t2\t2\t0\t0\n22\t38\t4\t4\t2\t2\t0\t0\n28\t38\t4\t4\t2\t2\t0\t0\n16\t44\t4\t4\t2\t2\t0\t0\n22\t44\t4\t4\t2\t2\t0\t0\n28\t44\t4\t4\t2\t2\t0\t0\n\n# 90. combo-box selected\n32\t32\t4\t4\t2\t2\t0\t0\n38\t32\t4\t4\t2\t2\t0\t0\n44\t32\t4\t4\t2\t2\t0\t0\n32\t38\t4\t4\t2\t2\t0\t0\n38\t38\t4\t4\t2\t2\t0\t0\n44\t38\t4\t4\t2\t2\t0\t0\n32\t44\t4\t4\t2\t2\t0\t0\n38\t44\t4\t4\t2\t2\t0\t0\n44\t44\t4\t4\t2\t2\t0\t0\n\n# 99. text box\n0\t16\t4\t4\t2\t2\t0\t0\n6\t16\t4\t4\t2\t2\t0\t0\n12\t16\t4\t4\t2\t2\t0\t0\n0\t22\t4\t4\t2\t2\t0\t0\n6\t22\t4\t4\t2\t2\t0\t0\n12\t22\t4\t4\t2\t2\t0\t0\n0\t28\t4\t4\t2\t2\t0\t0\n6\t28\t4\t4\t2\t2\t0\t0\n12\t28\t4\t4\t2\t2\t0\t0\n\n# 108. text-box disabled\n16\t16\t4\t4\t2\t2\t0\t0\n22\t16\t4\t4\t2\t2\t0\t0\n28\t16\t4\t4\t2\t2\t0\t0\n16\t22\t4\t4\t2\t2\t0\t0\n22\t22\t4\t4\t2\t2\t0\t0\n28\t22\t4\t4\t2\t2\t0\t0\n16\t28\t4\t4\t2\t2\t0\t0\n22\t28\t4\t4\t2\t2\t0\t0\n28\t28\t4\t4\t2\t2\t0\t0\n\n# 117. border\n32\t16\t4\t4\t2\t2\t0\t0\n38\t16\t4\t4\t2\t2\t0\t0\n44\t16\t4\t4\t2\t2\t0\t0\n32\t22\t4\t4\t2\t2\t0\t0\n38\t22\t4\t4\t2\t2\t0\t0\n44\t22\t4\t4\t2\t2\t0\t0\n32\t28\t4\t4\t2\t2\t0\t0\n38\t28\t4\t4\t2\t2\t0\t0\n44\t28\t4\t4\t2\t2\t0\t0\n\n# 126. scrollbar track vertical\n48\t16\t2\t2\t1\t1\t0\t0\n54\t16\t2\t2\t2\t2\t0\t0\n62\t16\t2\t2\t2\t2\t0\t0\n\n# 129. scrollbar track horizontal\n62\t32\t2\t2\t1\t1\t0\t0\n62\t36\t2\t2\t2\t2\t0\t0\n62\t46\t2\t2\t2\t2\t0\t0\n\n# 132. divider vertical\n48\t16\t2\t2\t1\t1\t0\t0\n54\t16\t2\t2\t2\t2\t0\t0\n62\t16\t2\t2\t2\t2\t0\t0\n\n# 135. divider horizontal\n62\t32\t2\t2\t1\t1\t0\t0\n62\t36\t2\t2\t2\t2\t0\t0\n62\t46\t2\t2\t2\t2\t0\t0\n\n# 138. slider track vertical\n48\t16\t2\t2\t1\t1\t0\t0\n54\t16\t2\t2\t2\t2\t0\t0\n62\t16\t2\t2\t2\t2\t0\t0\n\n# 141. slider track horizontal\n62\t32\t2\t2\t1\t1\t0\t0\n62\t36\t2\t2\t2\t2\t0\t0\n62\t46\t2\t2\t2\t2\t0\t0\n\n# 144. scroll bar vertical \n48\t16\t2\t2\t1\t1\t0\t0\n54\t16\t2\t2\t2\t2\t0\t0\n62\t16\t2\t2\t2\t2\t0\t0\n\n# 147. scroll bar horizontal\n62\t32\t2\t2\t1\t1\t0\t0\n62\t36\t2\t2\t2\t2\t0\t0\n62\t46\t2\t2\t2\t2\t0\t0\n\n# 150. tab 3\n0\t0\t4\t4\t2\t2\t0\t0\n6\t0\t4\t4\t2\t2\t0\t0\n12\t0\t4\t4\t2\t2\t0\t0\n\n# 153. progress bar 3\n32\t32\t8\t16\t4\t8\t0\t0\n36\t32\t8\t16\t4\t8\t0\t0\n40\t32\t8\t16\t4\t8\t0\t0\n\n# 156. radio button\n0\t160\t16\t16\t8\t8\t0\t0\n0\t176\t16\t16\t8\t8\t0\t0\n0\t192\t16\t16\t8\t8\t0\t0\n0\t208\t16\t16\t8\t8\t0\t0\n0\t224\t16\t16\t8\t8\t0\t0\n0\t240\t16\t16\t8\t8\t0\t0\n# 162. check button\n16\t160\t16\t16\t8\t8\t0\t0\n16\t176\t16\t16\t8\t8\t0\t0\n16\t192\t16\t16\t8\t8\t0\t0\n16\t208\t16\t16\t8\t8\t0\t0\n16\t224\t16\t16\t8\t8\t0\t0\n16\t240\t16\t16\t8\t8\t0\t0\n# 168. slider horizontal\n32\t160\t16\t16\t8\t8\t0\t0\n32\t176\t16\t16\t8\t8\t0\t0\n32\t192\t16\t16\t8\t8\t0\t0\n32\t208\t16\t16\t8\t8\t0\t0\n32\t224\t16\t16\t8\t8\t0\t0\n32\t240\t16\t16\t8\t8\t0\t0\n# 174. slider vertical\n48\t160\t16\t16\t8\t8\t0\t0\n48\t176\t16\t16\t8\t8\t0\t0\n48\t192\t16\t16\t8\t8\t0\t0\n48\t208\t16\t16\t8\t8\t0\t0\n48\t224\t16\t16\t8\t8\t0\t0\n48\t240\t16\t16\t8\t8\t0\t0\n# 180. button up\n64\t160\t16\t16\t8\t8\t0\t0\n64\t176\t16\t16\t8\t8\t0\t0\n64\t192\t16\t16\t8\t8\t0\t0\n64\t208\t16\t16\t8\t8\t0\t0\n64\t224\t16\t16\t8\t8\t0\t0\n64\t240\t16\t16\t8\t8\t0\t0\n# 186. button down\n80\t160\t16\t16\t8\t8\t0\t0\n80\t176\t16\t16\t8\t8\t0\t0\n80\t192\t16\t16\t8\t8\t0\t0\n80\t208\t16\t16\t8\t8\t0\t0\n80\t224\t16\t16\t8\t8\t0\t0\n80\t240\t16\t16\t8\t8\t0\t0\n# 192. button left\n96\t160\t16\t16\t8\t8\t0\t0\n96\t176\t16\t16\t8\t8\t0\t0\n96\t192\t16\t16\t8\t8\t0\t0\n96\t208\t16\t16\t8\t8\t0\t0\n96\t224\t16\t16\t8\t8\t0\t0\n96\t240\t16\t16\t8\t8\t0\t0\n# 198. button right\n112\t160\t16\t16\t8\t8\t0\t0\n112\t176\t16\t16\t8\t8\t0\t0\n112\t192\t16\t16\t8\t8\t0\t0\n112\t208\t16\t16\t8\t8\t0\t0\n112\t224\t16\t16\t8\t8\t0\t0\n112\t240\t16\t16\t8\t8\t0\t0\n# 204. button exit\n112\t160\t16\t16\t8\t8\t0\t0\n112\t176\t16\t16\t8\t8\t0\t0\n112\t192\t16\t16\t8\t8\t0\t0\n112\t208\t16\t16\t8\t8\t0\t0\n112\t224\t16\t16\t8\t8\t0\t0\n112\t240\t16\t16\t8\t8\t0\t0\n# 210. button button help\n128\t160\t16\t16\t8\t8\t0\t0\n128\t176\t16\t16\t8\t8\t0\t0\n128\t192\t16\t16\t8\t8\t0\t0\n128\t208\t16\t16\t8\t8\t0\t0\n128\t224\t16\t16\t8\t8\t0\t0\n128\t240\t16\t16\t8\t8\t0\t0\n# 216. button 2 window\n144\t160\t16\t16\t8\t8\t0\t0\n144\t176\t16\t16\t8\t8\t0\t0\n144\t192\t16\t16\t8\t8\t0\t0\n144\t208\t16\t16\t8\t8\t0\t0\n144\t224\t16\t16\t8\t8\t0\t0\n144\t240\t16\t16\t8\t8\t0\t0\n# 222. button 1 window\n160\t160\t16\t16\t8\t8\t0\t0\n160\t176\t16\t16\t8\t8\t0\t0\n160\t192\t16\t16\t8\t8\t0\t0\n160\t208\t16\t16\t8\t8\t0\t0\n160\t224\t16\t16\t8\t8\t0\t0\n160\t240\t16\t16\t8\t8\t0\t0\n\n0\t0\t256\t256\t128\t128\t0\t0"
  },
  {
    "path": "data/sprites/poland.spr",
    "content": "SPRv2 poland\n\n0\t0\t40\t40\t20\t20\t0\t0\n40\t0\t40\t40\t20\t20\t0\t0\n80\t0\t40\t40\t20\t20\t0\t0\n120\t0\t40\t40\t20\t20\t0\t0\n160\t0\t40\t40\t20\t20\t0\t0\n200\t0\t40\t40\t20\t20\t0\t0\n0\t40\t40\t40\t20\t20\t0\t0\n40\t40\t40\t40\t20\t20\t0\t0\n80\t40\t40\t40\t20\t20\t0\t0\n120\t40\t40\t40\t20\t20\t0\t0\n160\t40\t40\t40\t20\t20\t0\t0\n200\t40\t40\t40\t20\t20\t0\t0\n0\t80\t40\t40\t20\t20\t0\t0\n40\t80\t40\t40\t20\t20\t0\t0\n80\t80\t40\t40\t20\t20\t0\t0\n120\t80\t40\t40\t20\t20\t0\t0\n160\t80\t40\t40\t20\t20\t0\t0\n200\t80\t40\t40\t20\t20\t0\t0\n0\t120\t40\t40\t20\t20\t0\t0\n40\t120\t40\t40\t20\t20\t0\t0\n80\t120\t40\t40\t20\t20\t0\t0\n120\t120\t40\t40\t20\t20\t0\t0\n160\t120\t40\t40\t20\t20\t0\t0\n200\t120\t40\t40\t20\t20\t0\t0"
  },
  {
    "path": "data/worldcells/demo_mov.cell",
    "content": "CELLv3 cell 0 0\n#staticwobj 0 worldspawn 0 0.000000 0.000000 0.000000 0.0 0.0 0.0 worldspawn fullbright\n#staticwobj 0 platforma 0 0.000000 0.000000 0.000000 0.0 0.0 0.0 platforma fullbright\nstaticwobj 0 paliktnis 0 0.000000 0.000000 0.000000 -3.141593 0.058408 -3.141593 movs lightmap/movs\ntrigger 0 trigeris 0 0.000000 0.000000 0.000000 -3.141593 0.058408 -3.141593 0 16 trigger \n#staticwobj 0 ftft 0 0.000000 0.000000 0.000000 -3.141593 0.058408 -3.141593 ftft fullbright\n#staticwobj 0 apliktnis 0 0.000000 0.000000 3.000000 -3.141593 0.058408 -3.141593 tepik fullbright\n#crate 0 muca 0 -1.400000 0.600000 3.800000 0.000000 0.785398 0.000000 crate_ligma crate\n#crate 0 none 0 -1.400000 0.600000 3.800000 0.000000 0.0 0.000000 crate_ligma crate\n#crate 0 none 0 -2.400000 0.600000 3.800000 0.000000 0.0 0.000000 crate_ligma crate\n#crate 0 none 0 -3.400000 0.600000 3.800000 0.000000 0.0 0.000000 crate_ligma crate\n#crate 0 muca 0 -4.000000 0.600000 6.800000 0.000000 0.785398 0.000000 crate_ligma crate\n#crate 0 none 0 -1.400000 2.600000 2.800000 0.000000 0.785398 0.000000 metalakaste crate \n#crate 0 nukta 0 -1.400000 2.600000 2.800000 0.000000 0.785398 0.000000 devukaste crate \n#crate 0 fukta 0 3.00000 7.000000 -3.000000 0.000000 0.00 0.000000 devukaste crate \nlight 200 none 0 2.0 1.0 7.0 0.0 0.0 0.0 5.0 5.0 0.0 15.0 0.0 0.0 -1.0 16.0\nlight 201 none 0 0.0 4.0 -3.0 0.0 0.0 0.0 0.0 5.0 5.0 15.0 0.0 -1.0 1.0 16.0\nsound 0 derp 0 0.0 1.0 0.0 0.0 0.0 0.0 1 derp 1.0\ndecoration 114 mongus 0 0.0 1.0 0.0 0.0 0.0 0.0 0 mongus mongus-run\n#signal 114 use derp 0.0 -1 toggle none\nsignal 114 use mongus 0.0 -1 set-animation name mongus-jump\nbutton 111 podzins 0 0.0 1.0 -1.0 0.0 0.0 0.0 7 dev/button fullbright 0.0 1.25 -1.0 0.0 0.0 -1.0 1.0 0.0 3.14 none tosnins\nbutton 112 tosnins 0 0.0 0.0 0.0 0.0 0.76 0.0 14 dev/button fullbright -1.5 1.25 -1.5 0.0 0.0 1.0 1.0 0.1 5.0 none none\n#crate 0 estijs 0 0.800000 1.000000 2.000000 0.000000 0.000000 0.000000 kadbusest crate\ntransition transition1 demo_mov 8 45.000000 -45.000000 45.000000 -45.000000 -45.000000 45.000000 45.000000 -45.000000 -45.000000 -45.000000 -45.000000 -45.000000 45.000000 45.000000 45.000000 -45.000000 45.000000 45.000000 45.000000 45.000000 -45.000000 -45.000000 45.000000 -45.000000\nsignal 111 progress tosnins 0.0 -1 set-progress none\ndecoration 151 plane 0 0.0 4.0 0.0 -1.0 0.0 0.0 0 dev/plane none\ndecoration 154 plane 0 0.0 1.0 2.0 0.0 0.0 0.0 0 translucent none"
  },
  {
    "path": "data/worldcells/demo_mov.light",
    "content": "LIGHTGRAPHv1 \n\nnode 2.3955717 1.065382 3.061773 1 1 \nnode 2.2798061 0.62470955 -1.6681721 1 1 \nnode -1.6146706 0.7124737 -2.6664987 1 1 \nnode -0.27091822 0.8291742 -3.2012365 1 1 \nnode -2.7671623 0.5653449 -0.6331367 1 1 \nnode -1.7670134 0.74795645 1.2415003 1 1 \nnode -3.315507 0.84328896 2.1502764 1 1 \nnode 0.26147276 0.8183051 2.9366233 1 1 \nnode 0.26147276 0.8183051 2.9366233 1 1 \nnode 2.340122 1.0259709 5.4186387 1 1 \nnode 0.109327964 0.66605645 6.845958 1 1 \nnode 0.0997588 0.6727086 4.855362 1 1 \nnode -3.368404 0.675698 5.3235793 1 1 \n\n\nedge 0 1 \nedge 1 2 \nedge 2 3 \nedge 2 4 \nedge 4 5 \nedge 5 6 \nedge 5 7 \nedge 7 0 \nedge 1 3 \nedge 7 8 \nedge 8 1 \nedge 1 5 \nedge 1 4 \nedge 0 9 \nedge 9 10 \nedge 10 11 \nedge 11 12 \nedge 12 10 \nedge 11 9 \nedge 8 4 \nedge 0 5 \nedge 8 6 \nedge 4 3 \n\n\nlight 0 0 r 0.23796882 -0.0030810356 0.24494854 -0.13280812 0.0015340593 -0.0031588406 0.093340226 -0.09410236 0.012750563 \nlight 0 0 g 0.37189424 0.050191045 0.106509395 -0.18751778 -0.01964145 -0.056737468 0.14302485 -0.05628046 0.018053468 \nlight 0 0 b 0.1339254 0.053272076 -0.1384391 -0.054709498 -0.021175507 -0.05357863 0.049684726 0.037821967 0.005302912 \n\nlight 1 0 r 0 0 0 0 0 0 0 0 0 \nlight 1 0 g 0.4142197 0.34469196 -0.16269274 -0.28856713 -0.24165417 -0.13269365 -0.0069550127 0.057388984 0.042715754 \nlight 1 0 b 0.4142197 0.34469196 -0.16269274 -0.28856713 -0.24165417 -0.13269365 -0.0069550127 0.057388984 0.042715754 \n\nlight 2 0 r 0 0 0 0 0 0 0 0 0 \nlight 2 0 g 0.47709438 0.44259784 -0.04024769 0.26636875 0.242967 -0.030677281 -0.020613363 -0.01508262 0.0079994025 \nlight 2 0 b 0.47709438 0.44259784 -0.04024769 0.26636875 0.242967 -0.030677281 -0.020613363 -0.01508262 0.0079994025 \n\nlight 3 0 r 0 0 0 0 0 0 0 0 0 \nlight 3 0 g 0 0 0 0 0 0 0 0 0 \nlight 3 0 b 0 0 0 0 0 0 0 0 0 \n\nlight 4 0 r 0 0 0 0 0 0 0 0 0 \nlight 4 0 g 0 0 0 0 0 0 0 0 0 \nlight 4 0 b 0 0 0 0 0 0 0 0 0 \n\nlight 5 0 r 0 0 0 0 0 0 0 0 0 \nlight 5 0 g 0.33242264 0.19500972 -0.31995404 0.13329415 0.07795984 -0.18712842 0.09794585 -0.07748457 0.015930604 \nlight 5 0 b 0.33242264 0.19500972 -0.31995404 0.13329415 0.07795984 -0.18712842 0.09794585 -0.07748457 0.015930604 \n\nlight 6 0 r 0 0 0 0 0 0 0 0 0 \nlight 6 0 g 0.27642378 0.1241428 -0.2548184 0.16403806 0.07213969 -0.11193633 0.068452634 -0.09899621 0.028449327 \nlight 6 0 b 0.27642378 0.1241428 -0.2548184 0.16403806 0.07213969 -0.11193633 0.068452634 -0.09899621 0.028449327 \n\nlight 7 0 r 0 0 0 0 0 0 0 0 0 \nlight 7 0 g 0.28255603 0.13122158 -0.3080221 -0.013567101 -0.006078719 -0.14026311 0.12406041 0.009654146 -0.002788415 \nlight 7 0 b 0.28255603 0.13122158 -0.3080221 -0.013567101 -0.006078719 -0.14026311 0.12406041 0.009654146 -0.002788415 \n\nlight 8 0 r 0 0 0 0 0 0 0 0 0 \nlight 8 0 g 0.28255603 0.13122158 -0.3080221 -0.013567101 -0.006078719 -0.14026311 0.12406041 0.009654146 -0.002788415 \nlight 8 0 b 0.28255603 0.13122158 -0.3080221 -0.013567101 -0.006078719 -0.14026311 0.12406041 0.009654146 -0.002788415 \n\nlight 9 0 r 0.32085544 -0.0027707259 0.22283371 -0.29381675 0.0023008017 -0.002086538 0.01144819 -0.13744909 0.08325424 \nlight 9 0 g 0.41900486 0.02730713 0.11571191 -0.32359472 -0.0064734747 -0.033785358 0.05484248 -0.115085006 0.084223814 \nlight 9 0 b 0.098149285 0.030077863 -0.107122116 -0.029777901 -0.008774273 -0.03169882 0.043394268 0.022363972 0.0009695679 \n\nlight 10 0 r 0.8293561 0.7472809 0.4743402 -0.2935533 -0.26382336 0.43217096 0.08109607 -0.07283246 -0.0251603 \nlight 10 0 g 0.8293561 0.7472809 0.4743402 -0.2935533 -0.26382336 0.43217096 0.08109607 -0.07283246 -0.0251603 \nlight 10 0 b 0 0 0 0 0 0 0 0 0 \n\nlight 11 0 r 0.7448924 0.1010016 0.8811078 -0.03668104 -0.0043490226 0.11520066 0.44735473 -0.030268116 -0.051788848 \nlight 11 0 g 0.7448924 0.1010016 0.8811078 -0.03668104 -0.0043490226 0.11520066 0.44735473 -0.030268116 -0.051788848 \nlight 11 0 b 0 0 0 0 0 0 0 0 0 \n\nlight 12 0 r 0.5336291 0.04311873 0.29677904 0.5314715 0.03990218 0.025203848 -0.036354 0.1953003 0.17024845 \nlight 12 0 g 0.5336291 0.04311873 0.29677904 0.5314715 0.03990218 0.025203848 -0.036354 0.1953003 0.17024845 \nlight 12 0 b 0 0 0 0 0 0 0 0 0 \n\n#entity 200 \n#entity 201 \n"
  },
  {
    "path": "devtools/codegen.py",
    "content": "import os.path\nimport sys\nimport re\nimport time\n\n# This script is pretty jank, but it should be somewhat usable.\n\ndef prepare_path(path):\n\t# check if this is being run from the /src/ directory or project root\n\tif not \"/src\" in path:\n\t\tpath = path + \"/src/\"\n\t\n\t# strip file extension\n\tif path.endswith(\".h\") or path.endswith(\".cpp\"):\n\t\tpath = path.removesuffix(\".h\")\n\t\tpath = path.removesuffix(\".cpp\")\n\t\t\n\tif not path.endswith(\"/\") and not path.endswith(\"\\\\\"):\n\t\tpath = path + '/'\n\t\n\treturn path\n\ndef find_project_root(path):\n\tpath = path.replace(\"\\\\\", \"/\")\n\tpath = path.split(\"/src\")\n\treturn path[0]\n\t\ndef make_file(name):\n\tpath = prepare_path(os.getcwd()) + name.replace(\"-\", \"\").lower()\n\t\n\t# check if file already generated\n\tis_h = os.path.isfile(path + \".h\")\n\tis_cpp = os.path.isfile(path + \".cpp\")\n\t\n\tif is_h:\n\t\tprint(\"File\", path + \".h\", \"already exists!\")\n\t\tsys.exit()\n\t\t\n\tif is_cpp:\n\t\tprint(\"File\", path + \".cpp\", \"already exists!\")\n\t\tsys.exit()\n\t\n\taccept = input(\"Create file \" + path + \".h? [y/n]\\n\")\n\t\n\tif accept != \"y\":\n\t\tprint(\"Cancelling...\")\n\t\tsys.exit()\n\t\n\tregister_name = name.lower()\n\tclass_name = \"\"\n\tfile_name = name.replace(\"-\", \"\")\n\t\n\tif '-' in name:\n\t\tfor str in name.split('-'):\n\t\t\tclass_name = class_name + str.lower().capitalize()\n\telse:\n\t\tclass_name = name\n\t\n\theader = f\"\"\"\n// Generated by Tramway SDK Code generator\n\n#include <framework/entity.h>\n#include <framework/serialization.h>\n\n#include <templates/macros.h>\n\nusing namespace tram;\n\nclass {class_name} : public Entity {{\npublic:\n\t{class_name}(const SharedEntityData&, const ValueArray&);\n\n\tTRAM_SDK_ENTITY_NAME(\"{register_name}\")\n\t\n\tvoid UpdateParameters();\n\tvoid SetParameters();\n\tvoid Load();\n\tvoid Unload();\n\tvoid Serialize();\n\tvoid EventHandler(Event& evt);\n\tvoid MessageHandler(Message& msg);\n\tname_t GetType();\n\tstatic void Register();\n}};\n\t\"\"\"\n\t\n\timplementation = f\"\"\"\n// Generated by Tramway SDK Code generator\n\n#include \"{file_name}.h\"\n#include \"{file_name}.inl\"\n\n#include <framework/event.h>\n#include <framework/message.h>\n\t\n{class_name}::{class_name}(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {{\n\tENTITY_IMPLEMENTATION_INITIALIZE\n}}\n\nvoid {class_name}::Register() {{\n\tENTITY_IMPLEMENTATION_REGISTER\n}}\n\nname_t {class_name}::GetType() {{\n\tENTITY_IMPLEMENTATION_GET_TYPE\n}}\n\nvoid {class_name}::UpdateParameters() {{\n\tif (!IsLoaded()) return;\n}}\n\nvoid {class_name}::SetParameters() {{\n\tif (!IsLoaded()) return;\n\t\n\tUpdateParameters();\n}}\n\nvoid {class_name}::Load() {{\n\tSetFlag(LOADED, true);\n}}\n\nvoid {class_name}::Unload() {{\n\tSetFlag(LOADED, false);\n}}\n\nvoid {class_name}::Serialize() {{\n\n}}\n\nvoid {class_name}::EventHandler(Event& evt) {{\n\n}}\n\nvoid {class_name}::MessageHandler(Message& msg) {{\n\n}}\n\t\"\"\"\n\t\n\topen(path + \".h\", \"w\").write(header)\n\topen(path + \".cpp\", \"w\").write(implementation)\n\t\n\tprint(\"Done!\")\n\t\n\t#print(header)\n\t#print(implementation)\n\t\ndef enumify(str):\n\treturn \"FIELD_\" + str.replace(\"-\", \"_\").upper().strip().replace(\"\\\"\", \"\")\n\t\ndef typeify(str):\n\tif str == \"name_t\":\n\t\treturn \"TYPE_NAME\"\n\t\t\n\tif str == \"bool\":\n\t\treturn \"TYPE_BOOL\"\n\tif str == \"int\":\n\t\treturn \"TYPE_INT32\"\n\t\t\n\tif str == \"float\":\n\t\treturn \"TYPE_FLOAT32\"\n\tif str == \"double\":\n\t\treturn \"TYPE_INT32\"\n\t\t\n\tif str == \"int8_t\":\n\t\treturn \"TYPE_INT8\"\n\tif str == \"int16_t\":\n\t\treturn \"TYPE_INT16\"\n\tif str == \"int32_t\":\n\t\treturn \"TYPE_INT32\"\n\t\t\n\tif str == \"uint8_t\":\n\t\treturn \"TYPE_UINT8\"\n\tif str == \"uint16_t\":\n\t\treturn \"TYPE_UINT16\"\n\tif str == \"uint32_t\":\n\t\treturn \"TYPE_UINT32\"\n\n\tif str == \"vec2\":\n\t\treturn \"TYPE_VEC2\"\n\tif str == \"vec3\":\n\t\treturn \"TYPE_VEC3\"\n\tif str == \"vec4\":\n\t\treturn \"TYPE_VEC4\"\n\tif str == \"quat\":\n\t\treturn \"TYPE_QUAT\"\n\n\tprint(\"Unrecognized type:\", str)\n\tsys.exit()\n\t\ndef enttipefy(str):\n\tif str == \"name_t\":\n\t\treturn \"string\"\n\t\t\n\tif str == \"bool\":\n\t\treturn \"bool\"\n\tif str == \"int\":\n\t\treturn \"int\"\n\t\t\n\tif str == \"float\":\n\t\treturn \"float\"\n\tif str == \"double\":\n\t\treturn \"float\"\n\t\t\n\tif str == \"int8_t\":\n\t\treturn \"int\"\n\tif str == \"int16_t\":\n\t\treturn \"int\"\n\tif str == \"int32_t\":\n\t\treturn \"int\"\n\t\t\n\tif str == \"uint8_t\":\n\t\treturn \"uint\"\n\tif str == \"uint16_t\":\n\t\treturn \"uint\"\n\tif str == \"uint32_t\":\n\t\treturn \"uint\"\n\n\tif str == \"vec2\":\n\t\treturn \"vec2\"\n\tif str == \"vec3\":\n\t\treturn \"vec3\"\n\tif str == \"vec4\":\n\t\treturn \"vec4\"\n\tif str == \"quat\":\n\t\treturn \"quat\"\n\n\tprint(\"Unrecognized type:\", str)\n\tsys.exit()\n\nFLOAT_RE = re.compile(r\"\"\"\n^[+-]?(\n\t(\\d+\\.\\d*|\\.\\d+)([eE][+-]?\\d+)?\t  # 1.0, .1, 1., 1.0e-3\n  | \\d+([eE][+-]?\\d+)?\t\t\t\t # 1, 1e3\n)(f|F)?$\n\"\"\", re.VERBOSE)\n\nINT_RE = re.compile(r\"^[+-]?\\d+$\")\n\ndef normalize_float(x):\n\tx = x.rstrip(\"fF\")\n\tif \".\" not in x:\n\t\treturn x + \".0\"\n\tif x.startswith(\".\"):\n\t\treturn \"0\" + x\n\tif x.endswith(\".\"):\n\t\treturn x + \"0\"\n\treturn x\n\ndef parse_vector(value, n: int, default):\n\tm = re.search(r\"\\{(.*)\\}|\\((.*)\\)\", value)\n\tif not m:\n\t\treturn default\n\tinside = m.group(1) or m.group(2)\n\tparts = [p.strip() for p in inside.split(\",\")]\n\tif len(parts) != n:\n\t\treturn default\n\n\tfloats = []\n\tfor p in parts:\n\t\tif not FLOAT_RE.match(p):\n\t\t\treturn default\n\t\tfloats.append(normalize_float(p))\n\treturn \" \".join(floats)\n\ndef validate_default(value, type):\n\tif not value:\n\t\tvalue = \"\"\n\n\tv = value.strip()\n\n\tif type == \"string\":\n\t\tif len(v) >= 2 and v.startswith('\"') and v.endswith('\"'):\n\t\t\treturn v\n\t\treturn '\"none\"'\n\tif type == \"bool\":\n\t\tif v == \"true\":\n\t\t\treturn \"1\"\n\t\tif v == \"false\":\n\t\t\treturn \"0\"\n\t\treturn \"0\"\n\tif type == \"float\":\n\t\tif FLOAT_RE.match(v):\n\t\t\treturn normalize_float(v)\n\t\treturn \"0.0\"\n\tif type in (\"int\", \"uint\"):\n\t\tif INT_RE.match(v):\n\t\t\treturn v\n\t\treturn \"0\"\n\tif type == \"vec2\":\n\t\treturn parse_vector(v, 2, \"1.0 0.0\")\n\tif type == \"vec3\":\n\t\treturn parse_vector(v, 3, \"0.0 0.0 0.0\")\n\tif type == \"vec4\":\n\t\treturn parse_vector(v, 4, \"0.0 0.0 0.0 0.0\")\n\tif type == \"quat\":\n\t\treturn parse_vector(v, 3, \"0.0 0.0 0.0\")\n\n\treturn \"\"\n\n\ndef refresh_file(name):\n\tpath = prepare_path(os.getcwd()) + name.replace(\"-\", \"\").lower()\n\t\n\tif not os.path.isfile(path + \".h\"):\n\t\tprint(\"File\", path + \".h\", \"not found!\")\n\t\tsys.exit()\n\t\t\n\tfile = open(path + \".h\", \"r\").read()\n\t\n\tproperty_list = []\n\t\n\tproperty_enum = \"\"\n\tinitializer = \"\"\n\tregister = \"\"\n\t\n\t# use regex to find stuff\n\tname_list = re.findall(\"TRAM_SDK_ENTITY_NAME\\((.*)\\)\", file)\n\tif len(name_list) < 1:\n\t\tprint(\"Couldn't find TRAM_SDK_ENTITY_NAME macro!\")\n\t\tsys.exit()\n\t\t\n\tclass_list = re.findall(\"class\\s+(.*)\\s+:\\s+public\\s+Entity\", file)\n\tif len(name_list) < 1:\n\t\tprint(\"Couldn't find class name!\")\n\t\tsys.exit()\n\t\n\tkey_values = re.findall(\"TRAM_SDK_KEY_VALUE\\((.*),(.*)\\)\", file)\n\t\n\t# parse properties\n\t#properties = re.findall(\"TRAM_SDK_PROPERTY\\((.*),(.*)\\)\\s+(\\S+)\\s+(\\S+)\\s*(?:=\\s*(.*?))?;\", file)\n\tproperties = re.findall(\"TRAM_SDK_PROPERTY\\(([^,]+),([^)]+)\\)\\s+(\\S+)\\s+(\\S+)\\s*(?:=\\s*([^;]*))?;\", file)\n\tfor property in properties:\n\t\tproperty_list.append({\n\t\t\t\"name\": property[0],\n\t\t\t\"type\": property[2],\n\t\t\t\"flags\": property[1],\n\t\t\t\"variable\": property[3],\n\t\t\t\"default\": property[4]\n\t\t})\n\t\n\t#properties = re.findall(\"TRAM_SDK_VIRTUAL_PROPERTY\\((.*),(.*),(.*)(?:,(.*))?\\)\", file)\n\tproperties = re.findall(\"TRAM_SDK_VIRTUAL_PROPERTY\\(([^,]+),([^,]+),([^,\\)]+)(?:,([^)]+))?\\)\", file)\n\tfor property in properties:\n\t\tproperty_list.append({\n\t\t\t\"name\": property[1],\n\t\t\t\"type\": property[0],\n\t\t\t\"flags\": property[2],\n\t\t\t\"variable\": None,\n\t\t\t\"default\": property[3]\n\t\t})\n\t\n\t# generate property enum\n\t\n\tfor property in property_list:\n\t\tif property_enum != \"\":\n\t\t\tproperty_enum += \",\\n\"\n\t\t\n\t\tproperty_enum += \"\\t\" + enumify(property[\"name\"])\n\t\t\n\tif property_enum == \"\":\n\t\tproperty_enum = \"FIELD_NONE\"\n\t\n\t# generate initializer\n\tfor property in property_list:\n\t\tif property[\"variable\"] is None:\n\t\t\tcontinue\n\t\t\t\n\t\tif initializer != \"\":\n\t\t\tinitializer += \" \\\\\\n\"\n\t\t\n\t\tinitializer += \"\\t\" + property[\"variable\"] + \" = field_array[\" + enumify(property[\"name\"]) + \"];\" \n\t\n\t# generate register\n\tfor property in property_list:\n\t\tif register != \"\":\n\t\t\tregister += \", \\\\\\n\"\n\t\t\n\t\tregister += \"\\t{\" + enumify(property[\"name\"]) + \", \" + typeify(property[\"type\"]) + \", \" + property[\"flags\"] + \"}\" \n\t\n\tgenerated = f\"\"\"\n// Generated by Tramway SDK Code generator\n// READ ONLY! Any and all changes will be overwritten!\n\t\nenum {{\n{property_enum}\n}};\n\n#define ENTITY_IMPLEMENTATION_INITIALIZE \\\\\n{initializer}\n\n#define ENTITY_IMPLEMENTATION_REGISTER\t\\\\\nEntity::RegisterType( \\\\\n\t{name_list[0]},\t \\\\\n\t[](const SharedEntityData& a, const ValueArray& b) -> Entity* {{ return new {class_list[0]}(a, b); }}, \\\\\n\t[](Entity* a) {{ delete a; }}, \\\\\n\t{{ \\\\\n{register} \\\\\n\t}} \\\\\n);\n\n#define ENTITY_IMPLEMENTATION_GET_TYPE return {name_list[0]};\n\n\t\"\"\"\n\t\n\t\n\tkey_value_str = \"\"\n\tfield_str = \"\"\n\t\n\tfor key_value in key_values:\n\t\tkey_value_str += \"\\t\" + key_value[0].replace(\"\\\"\", \"\") + \" \" + key_value[1].replace(\"\\\"\", \"\")\n\t\n\tfor property in property_list:\n\t\tfield_str += \"\\tfield \" + enttipefy(property[\"type\"]) + \" \" + property[\"name\"].replace(\"\\\"\", \"\") + \"\\n\"\n\t\n\tentity_name = name_list[0].replace(\"\\\"\", \"\").strip()\n\tversion_num = str(int(time.time()) - 1577836800)\n\t\n\tentity_definition = f\"\"\"\nbegin\n\tname {entity_name}\n\t\n{key_value_str}\n\t\n{field_str}\n\t\n\tversion {version_num}\nend\n\t\n\t\"\"\"\n\t\n\topen(path + \".inl\", \"w\").write(generated)\n\topen(find_project_root(path) + f\"/data/{entity_name}.{version_num}.entdef\", \"w\").write(entity_definition)\n\t\n\t#\n\t\n\tprint(\"Done!\")\n\t\n\t\ndef print_header():\n\tprint(\"Tramway SDK Code generator v0.1.1\")\n\ndef print_help():\n\tprint(\"This tool can generate C++ code for the Tramway SDK.\")\n\tprint(\"Commandline options:\")\n\tprint(\"\\t--help\\t\\tPrints this message\")\n\tprint(\"\\tmake [name]\\tGenerates a .h and .cpp file for an entity type\")\n\tprint(\"\\trefresh [file]\\tRegenerates code and entity definition from header file\")\n\tprint(\"\\t[file]\\t\\tSame as 'refresh' option\")\n\nif len(sys.argv) > 1:\n\tcommand = sys.argv[1]\n\tparameter = sys.argv[2] if len(sys.argv) > 2 else None\n\t\n\tif command == \"make\":\n\t\tprint_header()\n\t\t\n\t\tif parameter is None:\n\t\t\tprint(\"To use this command, specify the name of the entity type that will be\")\n\t\t\tprint(\"generated. This name will be used as the name of the entity type, name of the\")\n\t\t\tprint(\"entity C++ class, and the name of the source code files.\")\n\t\t\tprint(\"\")\n\t\t\tprint(\"For example, if you use 'bucket' as the name of the entity type, the resulting\")\n\t\t\tprint(\"code will be generated in the /src/bucket.h and /src/bucket.cpp files, the name\")\n\t\t\tprint(\"of the C++ class will be named 'Bucket' and the name inserted into the\")\n\t\t\tprint(\"Register() method will be 'bucket'.\")\n\t\t\tprint(\"\")\n\t\t\tprint(\"Example: codegen.py make bucket\")\n\t\t\t\n\t\t\tsys.exit()\n\t\t\n\t\t\n\t\t\n\t\tprint(\"making! \", command, parameter)\n\t\t\n\t\tmake_file(parameter)\n\telif command == \"refresh\":\n\t\tprint_header()\n\t\trefresh_file(parameter)\n\telif command == \"--help\":\n\t\tprint_header()\n\t\tprint_help()\n\telse:\n\t\tprint(\"Unrecognized command:\", command)\nelse:\n\tprint_header()\n\tprint_help()\n\t\n"
  },
  {
    "path": "devtools/converters/cbfg2sprite.py",
    "content": "import csv\nf = open(\"FontData.csv\")\nreader = csv.reader(f)\n\nresults = dict()\n\nfor line in reader:\n\tresults[line[0]] = line[1]\n\nf.close()\n\ndef find(xyz):\n\treturn results[xyz]\n\t\t\t\nf = open(\"Font.spr\", \"a\")\nf.write(\"SPRv2 ui/font_text\\n\\n\")\n\nfor i in range(0, 256):\n\tx = (i % 16) * 16\n\ty = int(int(i / 16) * 16)\n\t\n\tw = find(\"Char \"+str(i)+\" Base Width\")\n\th = 16\n\t\n\tcx = 8\n\tcy = 8\n\t\n\tbh = 0\n\tbv = 0\n\t\n\tf.write(str(x) + \"\\t\" + str(y) + \"\\t\" + str(w) + \"\\t\" + str(h) + \"\\t\" + str(cx) + \"\\t\" + str(cy) + \"\\t\" + str(bh) + \"\\t\" + str(bv) + \"\\n\")\n\nf.close()"
  },
  {
    "path": "devtools/converters/errorgenerator.py",
    "content": "# copy-paste static model vertices here\nsp = \"\"\"0.5110000371932983 -0.25 0.20000000298023224 0.0 0.0 1.0 0.9999083876609802 0.4583977460861206 0.9999083876609802 0.4583977460861206\n0.4970000088214874 -0.16300000250339508 0.20000000298023224 0.0 0.0 0.999969482421875 0.8314536213874817 0.48567795753479004 0.8314536213874817 0.48567795753479004\n0.42000001668930054 -0.16300000250339508 0.20000000298023224 0.0 0.0 1.0 0.8314536809921265 0.6364007592201233 0.8314536809921265 0.6364007592201233\n0.10300000756978989 -0.021000001579523087 -0.20000000298023224 -0.999725341796875 0.02294991910457611 -0.0 0.25119414925575256 0.8507025241851807 0.25119414925575256 0.8507025241851807\n0.0990000069141388 -0.1080000028014183 -0.20000000298023224 -0.9558702111244202 0.2937406599521637 -0.0 0.25119414925575256 0.7044740915298462 0.25119414925575256 0.7044740915298462\n0.0990000069141388 -0.1080000028014183 0.20000000298023224 -0.9558702111244202 0.2937406599521637 -0.0 -0.08367683738470078 0.7044740915298462 -0.08367683738470078 0.7044740915298462\"\"\".split()\n\nit = 0\n\ndef fp (bippa):\n\tooo = it * 10\n\tveve = sp[ooo + bippa]\n\treturn round(float(veve), 2)\n\nit = 0\nwhile it < len(sp)/10:\n\tprint(\"{{\", fp(0), \"f, \", fp(1), \"f, \", fp(2), \"f}, {\", fp(3), \"f, \", fp(4), \"f, \", fp(5), \"f}, {\", fp(6), \"f, \", fp(7), \"f}, {\", fp(8), \"f, \", fp(9), \"f}, 0},\", sep=\"\")\n\t\n\tit += 1\n\n# copy-paste static model indices here\nse = \"\"\"0 1 2 0\n3 4 5 0\n6 7 8 0\n9 10 11 0\n966 967 968 0\n969 970 971 0\"\"\".split()\n\n\nit = 0\nwhile it < len(se)/4:\n\tooo = it * 4\n\tprint(\"{{\", se[ooo + 0], \", \", se[ooo + 1], \", \", se[ooo + 2], \"}},\", sep=\"\")\n\t\n\tit += 1"
  },
  {
    "path": "devtools/exporters/tram_anim_export.py",
    "content": "import bpy\n\nbl_info = {\n    \"name\": \"Export Tram Animation\",\n    \"description\": \"Exports .anim files for Tramway SDK\",\n    \"author\": \"racenis\",\n    \"blender\": (2, 83, 0),\n    \"support\": \"COMMUNITY\",\n    \"category\": \"Import-Export\",\n}\n\ndef write_tram_animation(context, filepath):\n    for action in bpy.data.actions:\n        \n        full_path = filepath + action.name + \".anim\"\n        \n        print(\"Saving animation to: \", full_path)\n        os.makedirs(os.path.dirname(filepath), exist_ok=True)\n        f = open(full_path, 'w', encoding='utf-8')\n        \n        f.write(\"ANIMv1\\n\")\n        \n        f.write(action.name + \" \" + str(len(action.groups)) + \"\\n\")\n        for group in action.groups:\n            frames = len(group.channels[0].keyframe_points)\n            \n            f.write(group.name + \" \" + str(frames) + \"\\n\")\n            i = 0\n            while (i < frames):\n                kframe = \"\"\n                kframe += str(group.channels[0].keyframe_points[i].co[0]) + \" \"\n                kframe += str(group.channels[0].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[2].keyframe_points[i].co[1]) + \" \"\n                kframe += str(-group.channels[1].keyframe_points[i].co[1]) + \" \"\n                #kframe += str(group.channels[3].keyframe_points[i].co[1]) + \" \"\n                #kframe += str(group.channels[4].keyframe_points[i].co[1]) + \" \"\n                #kframe += str(group.channels[5].keyframe_points[i].co[1]) + \" \"\n                #kframe += str(group.channels[6].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[4].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[6].keyframe_points[i].co[1]) + \" \"\n                kframe += str(-group.channels[5].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[3].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[7].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[9].keyframe_points[i].co[1]) + \" \"\n                kframe += str(group.channels[8].keyframe_points[i].co[1]) + \"\\n\"\n                f.write(kframe)\n                i += 1\n        f.close()\n\n\n\nfrom bpy_extras.io_utils import ExportHelper\nfrom bpy.props import StringProperty, BoolProperty, EnumProperty\nfrom bpy.types import Operator\n\nclass ExportTramAnimation(bpy.types.Operator):\n    bl_idname = \"export_tram_animation.export_tram_anim\"\n    bl_label = \"Export Tram Animation\"\n    bl_options = {'REGISTER'}\n\n    directory: StringProperty(\n        name=\"Outdir Path\",\n        description=\"Where I will save my stuff\"\n        )\n\n    filter_folder: BoolProperty(\n        default=True,\n        options={\"HIDDEN\"}\n        )\n\n    def execute(self, context):\n        write_tram_animation(context, self.directory)\n        return {'FINISHED'}\n\n    def invoke(self, context, event):\n        context.window_manager.fileselect_add(self)\n        return {'RUNNING_MODAL'}\n\n\ndef menu_func_export(self, context):\n    self.layout.operator(ExportTramAnimation.bl_idname, text=\"Tram Animation Exporter\")\n\n\ndef register():\n    bpy.utils.register_class(ExportTramAnimation)\n    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)\n\n\ndef unregister():\n    bpy.utils.unregister_class(ExportTramAnimation)\n    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)\n\n\nif __name__ == \"__main__\":\n    register()\n"
  },
  {
    "path": "devtools/exporters/tram_collision_export.py",
    "content": "import bpy\nimport os\n\nbl_info = {\n    \"name\": \"Export Tram Collision Model\",\n    \"description\": \"Exports .collmdl files for Tramway SDK\",\n    \"author\": \"racenis\",\n    \"blender\": (2, 83, 0),\n    \"support\": \"COMMUNITY\",\n    \"category\": \"Import-Export\",\n}\n\n# TODO: improve performance\n# - instead of accumulating a string, just directly write out to file\n\n# TODO: improve readability\n# - instead of vert.co[0] use vert.x, etc.\n\ndef object_to_collision_mesh(c):\n    out = \"\"\n    \n    exported_poly_count = 0\n            \n    poly_str = \"\"\n    \n    for poly in c.data.polygons:\n        for i in range(0, len(poly.loop_indices) - 2):\n            exported_poly_count += 1\n            poly_str += str(c.data.vertices[poly.vertices[0]].co[0]) + \" \"\n            poly_str += str(c.data.vertices[poly.vertices[0]].co[2]) + \" \"\n            poly_str += str(-c.data.vertices[poly.vertices[0]].co[1]) + \" \"\n            poly_str += str(c.data.vertices[poly.vertices[i+1]].co[0]) + \" \"\n            poly_str += str(c.data.vertices[poly.vertices[i+1]].co[2]) + \" \"\n            poly_str += str(-c.data.vertices[poly.vertices[i+1]].co[1]) + \" \"\n            poly_str += str(c.data.vertices[poly.vertices[i+2]].co[0]) + \" \"\n            poly_str += str(c.data.vertices[poly.vertices[i+2]].co[2]) + \" \"\n            poly_str += str(-c.data.vertices[poly.vertices[i+2]].co[1]) + \"\\n\"\n    \n    out += \"mesh \" + str(exported_poly_count) + \"\\n\" + poly_str\n    return out\n\n\ndef write_tram_collision_model(context, ob, filepath):\n    out = \"\"\n\n    for c in ob.children:\n        if (\"Cube\") in c.name:\n            out += \"box \" + str(c.location[0]) + \" \" + str(c.location[2]) + \" \" + str(-c.location[1]) + \" \"\n            out += str(c.rotation_euler[0]) + \" \" + str(c.rotation_euler[2]) + \" \" + str(-c.rotation_euler[1]) + \" \"\n            out += str(c.scale[0]) + \" \" + str(c.scale[2]) + \" \" + str(c.scale[1]) + \"\\n\"\n        if (\"Cylinder\") in c.name:\n            out += \"cylinder \" + str(c.location[0]) + \" \" + str(c.location[2]) + \" \" + str(-c.location[1]) + \" \"\n            out += str(c.rotation_euler[0]) + \" \" + str(c.rotation_euler[2]) + \" \" + str(-c.rotation_euler[1]) + \" \"\n            out += str(c.scale[0]) + \" \" + str(c.scale[2]) + \" \" + str(c.scale[1]) + \"\\n\"\n        if (\"Capsule\") in c.name:\n            out += \"capsule \" + str(c.location[0]) + \" \" + str(c.location[2]) + \" \" + str(-c.location[1]) + \" \"\n            out += str(c.rotation_euler[0]) + \" \" + str(c.rotation_euler[2]) + \" \" + str(-c.rotation_euler[1]) + \" \"\n            out += str((c.scale[0] + c.scale[2]) / 2) + \" \" + str(c.scale[1]) + \"\\n\"\n        if (\"Cone\") in c.name:\n            out += \"cone \" + str(c.location[0]) + \" \" + str(c.location[2]) + \" \" + str(-c.location[1]) + \" \"\n            out += str(c.rotation_euler[0]) + \" \" + str(c.rotation_euler[2]) + \" \" + str(-c.rotation_euler[1]) + \" \"\n            out += str((c.scale[0] + c.scale[2]) / 2) + \" \" + str(c.scale[1]) + \"\\n\"\n        if (\"Sphere\") in c.name:\n            out += \"sphere \" + str(c.location[0]) + \" \" + str(c.location[2]) + \" \" + str(-c.location[1]) + \" \"\n            out += str(c.rotation_euler[0]) + \" \" + str(c.rotation_euler[2]) + \" \" + str(-c.rotation_euler[1]) + \" \"\n            out += str((c.scale[0] + c.scale[1] + c.scale[2]) / 3) + \"\\n\"\n        if (\"Cloud\") in c.name:\n            out += \"cloud \" + str(len(c.data.vertices)) + \"\\n\"\n            \n            for v in c.data.vertices:\n                out += str(v.co[0]) + \" \" + str(v.co[2]) + \" \" + str(-v.co[1]) + \"\\n\"\n        if (\"Mesh\") in c.name:            \n            out += object_to_collision_mesh(c)\n                \n    if len(ob.children) == 0:\n        out = object_to_collision_mesh(ob)\n            \n    os.makedirs(os.path.dirname(filepath), exist_ok=True)\n    f = open(filepath, 'w', encoding='utf-8')\n\n    f.write(out)\n   \n    f.close()\n\n\n# ExportHelper is a helper class, defines filename and\n# invoke() function which calls the file selector.\nfrom bpy_extras.io_utils import ExportHelper\nfrom bpy.props import StringProperty, BoolProperty, EnumProperty\nfrom bpy.types import Operator\n\n\nclass ExportTramCollisionObj(Operator, ExportHelper):\n    bl_idname = \"export_tram_collision_obj.export_dynamic_tram\"  # important since its how bpy.ops.import_test.some_data is constructed\n    bl_label = \"Export Tram Collision Model\"\n\n    # ExportHelper mixin class uses this\n    filename_ext = \".collmdl\"\n\n    filter_glob: StringProperty(\n        default=\"*.collmdl\",\n        options={'HIDDEN'},\n        maxlen=255,  # Max internal buffer length, longer would be clamped.\n    )\n\n    # List of operator properties, the attributes will be assigned\n    # to the class instance from the operator settings before calling.\n    use_setting: BoolProperty(\n        name=\"Example Boolean\",\n        description=\"Example Tooltip\",\n        default=True,\n    )\n\n    type: EnumProperty(\n        name=\"Example Enum\",\n        description=\"Choose between two items\",\n        items=(\n            ('OPT_A', \"First Option\", \"Description one\"),\n            ('OPT_B', \"Second Option\", \"Description two\"),\n        ),\n        default='OPT_A',\n    )\n\n    def invoke(self, context, _event):\n        object = bpy.context.object\n    \n        if object is None:\n            self.report({'ERROR'}, \"No object selected!\")\n            return {'CANCELLED'}\n        \n        if object.type != 'MESH':\n            self.report({'ERROR'}, \"Selected object is not a mesh!\")\n            return {'CANCELLED'}\n        \n        if not self.filepath or True:\n            blend_filepath = context.blend_data.filepath\n            if not blend_filepath:\n                blend_filepath = object.name\n            else:\n                path_dir = os.path.dirname(blend_filepath)\n                blend_filepath = os.path.join(path_dir, object.name)\n\n            self.filepath = blend_filepath + self.filename_ext\n\n        context.window_manager.fileselect_add(self)\n        return {'RUNNING_MODAL'}\n\n    def execute(self, context):\n        write_tram_collision_model(context, bpy.context.active_object, self.filepath)\n        return {'FINISHED'}\n\n\n# Only needed if you want to add into a dynamic menu\ndef menu_func_export(self, context):\n    self.layout.operator(ExportTramCollisionObj.bl_idname, text=\"Tram Collision Exporter\")\n\n\ndef register():\n    bpy.utils.register_class(ExportTramCollisionObj)\n    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)\n\n\ndef unregister():\n    bpy.utils.unregister_class(ExportTramCollisionObj)\n    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)\n\n\nif __name__ == \"__main__\":\n    register()\n"
  },
  {
    "path": "devtools/exporters/tram_dynamic_obj_export.py",
    "content": "import bpy\nimport os\n\nbl_info = {\n    \"name\": \"Export Tram Dynamic Model\",\n    \"description\": \"Exports .dymdl files for Tramway SDK\",\n    \"author\": \"racenis\",\n    \"blender\": (2, 83, 0),\n    \"support\": \"COMMUNITY\",\n    \"category\": \"Import-Export\",\n}\n\ndef write_tram_dynamic_model(context, ob, filepath):\n    \n    exp = {'uv':[],'vert':[],'vnorm':[],'polys':[],'vweight':[],'bones':[]}\n\n    #get uv coords\n    for uv in ob.data.uv_layers['UVMap'].data:\n        exp['uv'].append([uv.uv[0], uv.uv[1]])\n        \n    #get info of the loop vertices\n    for mloop in ob.data.loops:\n        vert = ob.data.vertices[mloop.vertex_index]\n        exp['vert'].append([vert.co[0], vert.co[2], -vert.co[1]])\n        exp['vnorm'].append([vert.normal[0], vert.normal[2], -vert.normal[1]])\n        \n        weights = []\n        for w in vert.groups:\n            weights.append([w.weight, w.group])\n        \n        # if vertex has no weights, then just bind it to root\n        if len(weights) < 1:\n            weights.append([1.0, 0])\n            \n        # if vertex has less than the minimum of 4 weights, then just\n        # add some blank weights to the root\n        while len(weights) < 4:\n            weights.append([0.0, 0])\n        \n        # if vertex has more than 4 weights, then find the weights\n        # that are the most significant and discard the rest\n        weights.sort(reverse=True)\n        weights = weights[:4]\n        \n        # TODO: normalize weights? maybe?\n        \n        exp['vweight'].append(weights)\n\n    # get all polygons\n    for poly in ob.data.polygons:\n        for i in range(0, len(poly.loop_indices) - 2):\n            exp['polys'].append([poly.loop_indices[0], poly.loop_indices[i+1], poly.loop_indices[i+2], poly.material_index])\n\n    # collect bones\n    if ob.parent is None:\n        \n        # if the object has no armature attached, then we will just\n        # assume that it has a single bone\n        boning = []\n        boning.append(\"Root\")\n        boning.append(0.0)\n        boning.append(0.0)\n        boning.append(0.0)\n        boning.append(0.0)\n        boning.append(1.0)\n        boning.append(0.0)\n        boning.append(0.0)\n        boning.append(-1)\n        \n        exp['bones'].append(boning)\n        \n    else:\n        \n        # otherwise, just add the armature bones\n        for bone in ob.parent.data.bones:\n            boning = []\n            boning.append(bone.name)\n            boning.append(bone.head_local[0])\n            boning.append(bone.head_local[2])\n            boning.append(-bone.head_local[1])\n            boning.append(bone.tail_local[0])\n            boning.append(bone.tail_local[2])\n            boning.append(-bone.tail_local[1])\n            boning.append(-bone.matrix.to_euler().z)\n            \n            if len(bone.parent_recursive) > 0:\n                boning.append(ob.parent.data.bones.find(bone.parent_recursive[0].name))\n            else:\n                boning.append(-1)\n\n            exp['bones'].append(boning)\n\n    \n    #ok now to compile everything together\n    os.makedirs(os.path.dirname(filepath), exist_ok=True)\n    f = open(filepath, 'w', encoding='utf-8')\n\n\n    info = \"DYMDLv1 \"\n    info += str(len(exp['vert'])) + \" \"\n    info += str(len(exp['polys'])) + \" \"\n    info += str(len(ob.material_slots)) + \" \"\n    info += str(len(exp['bones'])) + \" \"\n    info += str(len(ob.vertex_groups)) + \"\\n\"\n    f.write(info)\n\n    for mat in ob.material_slots:\n        f.write(mat.name  + \"\\n\")\n\n    vid = 0\n    while vid < len(exp['vert']):\n        line = \"\"\n        line += str(exp['vert'][vid][0]) + \" \"\n        line += str(exp['vert'][vid][1]) + \" \"\n        line += str(exp['vert'][vid][2]) + \" \"\n        line += str(exp['vnorm'][vid][0]) + \" \"\n        line += str(exp['vnorm'][vid][1]) + \" \"\n        line += str(exp['vnorm'][vid][2]) + \" \"\n        line += str(exp['uv'][vid][0]) + \" \"\n        line += str(exp['uv'][vid][1]) + \" \"\n        line += str(exp['vweight'][vid][0][1]) + \" \"\n        line += str(exp['vweight'][vid][0][0]) + \" \"\n        line += str(exp['vweight'][vid][1][1]) + \" \"\n        line += str(exp['vweight'][vid][1][0]) + \" \"\n        line += str(exp['vweight'][vid][2][1]) + \" \"\n        line += str(exp['vweight'][vid][2][0]) + \" \"\n        line += str(exp['vweight'][vid][3][1]) + \" \"\n        line += str(exp['vweight'][vid][3][0]) + \"\\n\"\n        f.write(line)\n        vid += 1\n        \n    for poly in exp['polys']:\n        line = \"\"\n        line += str(poly[0]) + \" \"\n        line += str(poly[1]) + \" \"\n        line += str(poly[2]) + \" \"\n        line += str(poly[3]) + \"\\n\"\n        f.write(line)\n        \n    for bone in exp['bones']:\n        line = \"\"\n        line += str(bone[0]) + \" \"\n        line += str(bone[8]) + \" \"\n        line += str(bone[1]) + \" \"\n        line += str(bone[2]) + \" \"\n        line += str(bone[3]) + \" \"\n        line += str(bone[4]) + \" \"\n        line += str(bone[5]) + \" \"\n        line += str(bone[6]) + \" \"\n        line += str(bone[7]) + \"\\n\"\n        f.write(line)\n        \n    for group in ob.vertex_groups:\n        f.write(group.name + \"\\n\")\n   \n    f.close()\n\n\n# ExportHelper is a helper class, defines filename and\n# invoke() function which calls the file selector.\nfrom bpy_extras.io_utils import ExportHelper\nfrom bpy.props import StringProperty, BoolProperty, EnumProperty\nfrom bpy.types import Operator\n\n\nclass ExportTramDynamicObj(Operator, ExportHelper):\n    \"\"\"This appears in the tooltip of the operator and in the generated docs\"\"\"\n    bl_idname = \"export_tram_dynamic_obj.export_dynamic_tram\"  # important since its how bpy.ops.import_test.some_data is constructed\n    bl_label = \"Export Tram Dynamic Model\"\n\n    # ExportHelper mixin class uses this\n    filename_ext = \".dymdl\"\n\n    filter_glob: StringProperty(\n        default=\"*.dymdl\",\n        options={'HIDDEN'},\n        maxlen=255,  # Max internal buffer length, longer would be clamped.\n    )\n\n    # List of operator properties, the attributes will be assigned\n    # to the class instance from the operator settings before calling.\n    use_setting: BoolProperty(\n        name=\"Example Boolean\",\n        description=\"Example Tooltip\",\n        default=True,\n    )\n\n    type: EnumProperty(\n        name=\"Example Enum\",\n        description=\"Choose between two items\",\n        items=(\n            ('OPT_A', \"First Option\", \"Description one\"),\n            ('OPT_B', \"Second Option\", \"Description two\"),\n        ),\n        default='OPT_A',\n    )\n\n    def invoke(self, context, _event):\n        object = bpy.context.object\n    \n        if object is None:\n            self.report({'ERROR'}, \"No object selected!\")\n            return {'CANCELLED'}\n        \n        if object.type != 'MESH':\n            self.report({'ERROR'}, \"Selected object is not a mesh!\")\n            return {'CANCELLED'}\n        \n        if not self.filepath or True:\n            blend_filepath = context.blend_data.filepath\n            if not blend_filepath:\n                blend_filepath = object.name\n            else:\n                path_dir = os.path.dirname(blend_filepath)\n                blend_filepath = os.path.join(path_dir, object.name)\n\n            self.filepath = blend_filepath + self.filename_ext\n\n        context.window_manager.fileselect_add(self)\n        return {'RUNNING_MODAL'}\n\n    def execute(self, context):\n        write_tram_dynamic_model(context, bpy.context.object, self.filepath)\n        \n        return {'FINISHED'}\n\n\n# Only needed if you want to add into a dynamic menu\ndef menu_func_export(self, context):\n    self.layout.operator(ExportTramDynamicObj.bl_idname, text=\"Tram Dynamic Exporter\")\n\n\ndef register():\n    bpy.utils.register_class(ExportTramDynamicObj)\n    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)\n\n\ndef unregister():\n    bpy.utils.unregister_class(ExportTramDynamicObj)\n    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)\n\n\nif __name__ == \"__main__\":\n    register()\n"
  },
  {
    "path": "devtools/exporters/tram_file_export.py",
    "content": "import bpy\n\nimport sys\nimport traceback\n\nfrom tram_static_obj_export import write_tram_static_model\nfrom tram_dynamic_obj_export import write_tram_dynamic_model\nfrom tram_collision_export import write_tram_collision_model\nfrom tram_anim_export import write_tram_animation\n\ndef main():\n    path_prefix = \"./\"\n\n    print(\"Autoexport script begin\")\n\n    # first we find all of the top-level objects\n    root_objects = []\n\n    for object in bpy.context.scene.objects:\n        if object.parent is None:\n            root_objects.append(object)\n\n    # then we process them\n    for object in root_objects:\n        if object.type == 'MESH':\n            global export_type\n            global export_name\n\t\t\t\n            export_name = object.name\n            \n            # check if allowed to export\n            if object.name.startswith('&'):\n                continue\n            \n            # determine if should be exported as dymdl or stmdl\n            export_type = 'STMDL'\n            \n            def determine_type(prefix, type):\n                global export_type\n                global export_name\n                \n                if object.name.startswith(prefix):\n                    export_type = type\n                    export_name = export_name[len(prefix):]\n            \n            determine_type('stmdl?', 'STMDL')\n            determine_type('s?', 'STMDL')\n            determine_type('stcol?', 'STMDL_COL')\n            \n            determine_type('dymdl?', 'DYDML')\n            determine_type('d?', 'DYDML')\n            \n            # export the mesh\n            if export_type == 'STMDL' or export_type == 'STMDL_COL':\n                file_path = path_prefix + \"data/models/\" + export_name + '.stmdl'\n                print(\"Exporting\", object.name, \"as\", file_path)\n                \n                write_tram_static_model(bpy.context, object, file_path)\n            else:\n                file_path = path_prefix + \"data/models/\" + export_name + '.dymdl'\n                print(\"Exporting\", object.name, \"as\", file_path)\n                \n                write_tram_dynamic_model(bpy.context, object, file_path)\n                \n                \n            # check if could be treated as collmdl\n            if len(object.children) > 0 or export_type == 'STMDL_COL':\n                file_path = path_prefix + \"data/models/\" + export_name + '.collmdl'\n                print(\"Exporting\", object.name, \"as\", file_path)\n                \n                write_tram_collision_model(bpy.context, object, file_path)\n        \n        \n        if object.type == 'ARMATURE':\n            for subobj in object.children:\n                \n                # check if allowed to export\n                if subobj.name.startswith('&'):\n                    continue\n                \n                # export as dymdl since has an armature\n                file_path = path_prefix + \"data/models/\" + subobj.name + '.dymdl'\n                print(\"Exporting\", subobj.name, \"as\", file_path)\n                \n                write_tram_dynamic_model(bpy.context, subobj, file_path)\n                \n                # check if could be treated as collmdl\n                if len(subobj.children) > 0:\n                    file_path = path_prefix + \"data/models/\" + subobj.name + '.collmdl'\n                    print(\"Exporting\", subobj.name, \"as\", file_path)\n                    \n                    write_tram_collision_model(bpy.context, subobj, file_path)\n                \n                \n    # finally we export animations\n    write_tram_animation(bpy.context, path_prefix + \"data/animations/\")\n    print(\"oke at de end\")\n\nif __name__ == \"__main__\":\n    try:\n        main()\n        print(\"Autoexport script finished\")\n    except Exception as e:\n        print(\"Autoexport script failed due to\", e)\n        traceback.print_exc()\n        sys.exit(1)"
  },
  {
    "path": "devtools/exporters/tram_material_import.py",
    "content": "import bpy\nimport os\n\nbl_info = {\n    \"name\": \"Import Tram Material\",\n    \"description\": \"Imports .mat files for Tramway SDK\",\n    \"author\": \"racenis\",\n    \"blender\": (2, 83, 0),\n    \"support\": \"COMMUNITY\",\n    \"category\": \"Import-Export\",\n}\n\ndef import_tram_material(context, path_prefix):\n    material_data = {}\n\n    texture_prefix = os.path.join(path_prefix, \"data\", \"textures\")\n\n    # scan in .png files from data/textures\n    for root, subdirs, files in os.walk(texture_prefix):\n        for file in files:\n            name, extension = os.path.splitext(os.path.join(root, file))\n            \n            if extension != '.png':\n                continue\n            \n            if name.endswith('.nrm') or name.endswith('.normal')\n                continue\n            \n            name = os.path.relpath(name, texture_prefix)\n            \n            \n            new_material = {\n                \"name\" : name,\n                \"path\" : os.path.join(root, file),\n                \n                \"type\" : \"flat\",\n                \"filter\" : \"nearest\",\n                \"texture_type\" : \"same\"\n            }\n            \n            material_data[name] = new_material\n            \n    # read in material definition, if there is one\n    file_path = os.path.join(path_prefix, \"data\", \"material.list\")\n    file = open(file_path, 'r')\n\n    if file.closed:\n        print(\"Can't open file\", file_path)\n    else:\n        first_line = file.readline().strip()\n        if first_line != \"MATv6\":\n            print(\"File\", file_path, \"is not a MATv6!\")\n        else:\n            for line in file:\n                stripped_line = line.strip()\n\n                if not stripped_line or stripped_line.startswith('#'):\n                    continue\n\n                tokens = stripped_line.split()\n                \n                material_name = tokens[0]\n                \n                if material_name in material_data:\n                    data = material_data[material_name]\n                else:\n                    data = {\n                        \"name\" : material_name,\n                        \"path\" : \"\"\n                    }\n                    \n                data[\"type\"] = tokens[1]\n                data[\"filter\"] = tokens[2]\n                data[\"property\"] = tokens[3]\n                data[\"color\"] = [float(tokens[4]), float(tokens[5]), float(tokens[6])]\n                data[\"specular_weight\"] = tokens[7]\n                data[\"specular_exponent\"] = tokens[8]\n                data[\"specular_transparency\"] = tokens[9]\n                data[\"texture_type\"] = tokens[10]\n                    \n                material_data[material_name] = data\n                \n\n    def get_texture(material):\n        if not material in material_data:\n            return \"\"\n        data = material_data[material]\n        if data[\"texture_type\"] == \"same\":\n            return data[\"path\"]\n        if data[\"texture_type\"] == \"none\":\n            return \"\"\n        return get_texture(data[\"texture_type\"])\n\n    # create and/or update blender materials    \n    for key, data in material_data.items():\n        \n        # check if material exists\n        material_index = bpy.data.materials.find(data[\"name\"])\n        \n        if material_index == -1:\n            # create a new material\n            material = bpy.data.materials.new(data[\"name\"])\n        else:\n            # take the existing one\n            material = bpy.data.materials[material_index]\n        \n        material.use_nodes = True\n        \n        if \"color\" in data:\n            color = data[\"color\"]\n        else:\n            color = [1.0, 1.0, 1.0]\n        \n        bsdf = material.node_tree.nodes[\"Principled BSDF\"]\n        bsdf.inputs[\"Base Color\"].default_value = (color[0], color[1], color[2], 1.0)\n\n        texture = get_texture(key)\n        \n        if not texture == \"\":\n            texImage = material.node_tree.nodes.new('ShaderNodeTexImage')\n            texImage.image = bpy.data.images.load(texture)\n            material.node_tree.links.new(bsdf.inputs['Base Color'], texImage.outputs['Color'])\n\n\n\nfrom bpy_extras.io_utils import ExportHelper\nfrom bpy.props import StringProperty, BoolProperty, EnumProperty\nfrom bpy.types import Operator\n\nclass ImportTramMaterial(bpy.types.Operator):\n    bl_idname = \"import_tram_material.import_tram_mat\"\n    bl_label = \"Select Project Directory\"\n    bl_options = {'REGISTER'}\n\n    directory: StringProperty(\n        name=\"Indir Path\",\n        description=\"Where I will load my stuff\"\n    )\n\n    filter_folder: BoolProperty(\n        default=True,\n        options={\"HIDDEN\"}\n    )\n\n    def execute(self, context):\n        import_tram_material(context, self.directory)\n        return {'FINISHED'}\n\n    def invoke(self, context, event):\n        context.window_manager.fileselect_add(self)\n        return {'RUNNING_MODAL'}\n\n\ndef menu_func_import(self, context):\n    self.layout.operator(ImportTramMaterial.bl_idname, text=\"Tram Material Importer\")\n\n\ndef register():\n    bpy.utils.register_class(ImportTramMaterial)\n    bpy.types.TOPBAR_MT_file_import.append(menu_func_import)\n\n\ndef unregister():\n    bpy.utils.unregister_class(ImportTramMaterial)\n    bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)\n\n\nif __name__ == \"__main__\":\n    register()\n"
  },
  {
    "path": "devtools/exporters/tram_static_obj_export.py",
    "content": "import bpy\nimport os\n\nbl_info = {\n    \"name\": \"Export Tram Static Model\",\n    \"description\": \"Exports .stmdl files for Tramway SDK\",\n    \"author\": \"racenis\",\n    \"blender\": (2, 83, 0),\n    \"support\": \"COMMUNITY\",\n    \"category\": \"Import-Export\",\n}\n\n# TODO: optimize the export\n# - currently the script will make copy of the model in memory\n# - Python objects kinda sus\n# - uses way too much memory\n\n# TODO: improve readability\n# - it would be better if instead of uv[0] we would uv.x, etc.\n\n# TODO: fix bug\n# - if mesh doesn't have UVMap then it crashes\n    \n# writes an object as a model\ndef write_tram_static_model(context, object, filepath):\n    ob = object\n    exp = {'uv':[],'lmap':[],'vert':[],'vnorm':[],'polys':[],'mat':[]}\n\n    #get uv coords\n    for uv in ob.data.uv_layers['UVMap'].data:\n        exp['uv'].append([uv.uv[0], uv.uv[1]])\n    #now do the same thing but for lightmap\n    if ob.data.uv_layers.get('LightMap', None) is None:\n        for uv in ob.data.uv_layers['UVMap'].data:\n            exp['lmap'].append([uv.uv[0], uv.uv[1]])\n    else:\n        for uv in ob.data.uv_layers['LightMap'].data:\n            exp['lmap'].append([uv.uv[0], uv.uv[1]])\n\n    #get info of the loop vertices\n    for mloop in ob.data.loops:\n        vert = ob.data.vertices[mloop.vertex_index]\n        exp['vert'].append([vert.co[0], vert.co[2], -vert.co[1]])\n        exp['vnorm'].append([vert.normal[0], vert.normal[2], -vert.normal[1]])\n\n    #get all polygons\n    for poly in ob.data.polygons:\n        for i in range(0, len(poly.loop_indices) - 2):\n            exp['polys'].append([poly.loop_indices[0], poly.loop_indices[i+1], poly.loop_indices[i+2], poly.material_index])\n\n    #ok now to compile everything together and write to disk\n    os.makedirs(os.path.dirname(filepath), exist_ok=True)\n    f = open(filepath, 'w', encoding='utf-8')\n\n    info = \"\"\n    info += str(len(exp['vert'])) + \" \"\n    info += str(len(exp['polys'])) + \" \"\n    info += str(len(ob.material_slots)) + \"\\n\"\n    f.write(info)\n\n\n    for mat in ob.material_slots:\n        f.write(mat.name  + \"\\n\")\n        \n    vid = 0\n    while vid < len(exp['vert']):\n        line = \"\"\n        line += str(exp['vert'][vid][0]) + \" \"\n        line += str(exp['vert'][vid][1]) + \" \"\n        line += str(exp['vert'][vid][2]) + \" \"\n        line += str(exp['vnorm'][vid][0]) + \" \"\n        line += str(exp['vnorm'][vid][1]) + \" \"\n        line += str(exp['vnorm'][vid][2]) + \" \"\n        line += str(exp['uv'][vid][0]) + \" \"\n        line += str(exp['uv'][vid][1]) + \" \"\n        line += str(exp['lmap'][vid][0]) + \" \"\n        line += str(exp['lmap'][vid][1]) + \"\\n\"\n        f.write(line)\n        vid += 1\n        \n    for poly in exp['polys']:\n        line = \"\"\n        line += str(poly[0]) + \" \"\n        line += str(poly[1]) + \" \"\n        line += str(poly[2]) + \" \"\n        line += str(poly[3]) + \"\\n\"\n        f.write(line)\n\n   \n   \n    f.close()\n\n\n# ExportHelper is a helper class, defines filename and\n# invoke() function which calls the file selector.\nfrom bpy_extras.io_utils import ExportHelper\nfrom bpy.props import StringProperty, BoolProperty, EnumProperty\nfrom bpy.types import Operator\n\n\nclass ExportTramStaticObj(Operator, ExportHelper):\n    \"\"\"This appears in the tooltip of the operator and in the generated docs\"\"\"\n    bl_idname = \"export_tram_static_obj.export_static_tram\"  # important since its how bpy.ops.import_test.some_data is constructed\n    bl_label = \"Export Tram Static Model\"\n\n    # ExportHelper mixin class uses this\n    filename_ext = \".stmdl\"\n\n    filter_glob: StringProperty(\n        default=\"*.stmdl\",\n        options={'HIDDEN'},\n        maxlen=255,  # Max internal buffer length, longer would be clamped.\n    )\n\n    # List of operator properties, the attributes will be assigned\n    # to the class instance from the operator settings before calling.\n    use_setting: BoolProperty(\n        name=\"Example Boolean\",\n        description=\"Example Tooltip\",\n        default=True,\n    )\n\n    type: EnumProperty(\n        name=\"Example Enum\",\n        description=\"Choose between two items\",\n        items=(\n            ('OPT_A', \"First Option\", \"Description one\"),\n            ('OPT_B', \"Second Option\", \"Description two\"),\n        ),\n        default='OPT_A',\n    )\n\n    def invoke(self, context, _event):\n        object = bpy.context.object\n    \n        if object is None:\n            self.report({'ERROR'}, \"No object selected!\")\n            return {'CANCELLED'}\n        \n        if object.type != 'MESH':\n            self.report({'ERROR'}, \"Selected object is not a mesh!\")\n            return {'CANCELLED'}\n        \n        if not self.filepath or True:\n            blend_filepath = context.blend_data.filepath\n            if not blend_filepath:\n                blend_filepath = object.name\n            else:\n                path_dir = os.path.dirname(blend_filepath)\n                blend_filepath = os.path.join(path_dir, object.name)\n\n            self.filepath = blend_filepath + self.filename_ext\n\n        context.window_manager.fileselect_add(self)\n        return {'RUNNING_MODAL'}\n\n    def execute(self, context):\n        write_tram_static_model(context, bpy.context.object, self.filepath)\n        \n        return {'FINISHED'}\n\n\n# Only needed if you want to add into a dynamic menu\ndef menu_func_export(self, context):\n    self.layout.operator(ExportTramStaticObj.bl_idname, text=\"Tram Static Exporter\")\n\n\ndef register():\n    bpy.utils.register_class(ExportTramStaticObj)\n    bpy.types.TOPBAR_MT_file_export.append(menu_func_export)\n\n\ndef unregister():\n    bpy.utils.unregister_class(ExportTramStaticObj)\n    bpy.types.TOPBAR_MT_file_export.remove(menu_func_export)\n\n\nif __name__ == \"__main__\":\n    register()\n"
  },
  {
    "path": "devtools/maketool.py",
    "content": "#!/usr/bin/python3\n\nimport os as os\nimport sys as sys\nimport configparser as configparser\n\n# Read the config file\nconfig = configparser.ConfigParser()\nif len(config.read(\"maketool.ini\")) != 1:\n\tsys.exit(\"Can't read the config file!\")\n\n# Extract the configuration variables\nproject_path = \"./\"\nproject_name = config[\"Project\"][\"name\"]\nproject_type = config[\"Project\"][\"type\"]\nplatform = config[\"Project\"][\"platform\"]\n\t\nis_library = project_type == \"LIBRARY\"\nis_project = project_type == \"PROJECT\"\n\ncompiler = config[\"Make\"][\"compiler\"]\narchiver = config[\"Make\"][\"archiver\"]\ntramsdk = config[\"Make\"][\"tramsdk\"]\n\nmodule_enables = config[\"Modules\"]\n\ndeleter = \"del\" if os.name == \"nt\" else \"rm\"\n\nwin32_bin = f\" -L{tramsdk}libraries/binaries/win32/\"\nwin64_bin = f\" -L{tramsdk}libraries/binaries/win64/\"\nlinux_bin = \"\"\nweb_bin = f\" -L{tramsdk}libraries/binaries/web/\"\n\nclass Module:\n\tdef __init__(self, name, group, compile_includes, linker_includes, linker_options):\n\t\tself.name = name\n\t\tself.group = group\n\t\tself.compile_includes = compile_includes\n\t\tself.linker_includes = linker_includes\n\t\tself.linker_options = linker_options\n\t\t\n\t\tself.enabled = False\n\tdef\tenable(self):\n\t\tself.enabled = True\n\tdef\tdisable(self):\n\t\tself.enabled = False\n\tdef is_enabled(self):\n\t\treturn self.enabled\n\tdef get_group(self):\n\t\treturn self.group\n\t\t\nmodules = {\n\t\"platform/glfw\": Module(\"platform/glfw\",\n\t\t\"platform\", \n\t\t{\"WEB\": \"\", \"WIN32\": f\" -I{tramsdk}libraries/glfw\", \"WIN64\": f\" -I{tramsdk}libraries/glfw\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \t\t\"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \" -sUSE_GLFW=3 \", \"WIN32\": \"-lglfw3 -lgdi32\", \"WIN64\": \"-lglfw3 -lgdi32\", \"LINUX\": \"-lglfw\"}),\n\t\"platform/sdl\": Module(\"platform/sdl\",\n\t\t\"platform\", \n\t\t{\"WEB\": \"\", \"WIN32\": f\" -I{tramsdk}libraries/sdl2 -I{tramsdk}libraries/glad\", \"WIN64\": f\" -I{tramsdk}libraries/sdl2 -I{tramsdk}libraries/glad\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \" -sUSE_SDL=2 \", \"WIN32\": \"-lSDL2.dll -lgdi32 -ld3d9\", \"WIN64\": \"-lSDL2.dll -lgdi32 -ld3d9\", \"LINUX\": \"-lsdl2\"}),\n\t\t\n\t\"audio/openal\": Module(\"audio/openal\",\n\t\t\"audio\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": win32_bin, \"WIN64\": win64_bin, \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"-lOpenAL32\", \"WIN64\": \"-lOpenAL32\", \"LINUX\": \"-lopenal\"}),\n\t\"audio/spatial\": Module(\"audio/spatial\",\n\t\t\"audio\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\"audio/template\": Module(\"audio/template\",\n\t\t\"audio\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\t\n\t\"render/opengl\": Module(\"render/opengl\",\n\t\t\"render\", \n\t\t{\"WEB\": \"\", \"WIN32\": f\" -I{tramsdk}libraries/glad\", \"WIN64\": f\" -I{tramsdk}libraries/glad\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"-lGL\"}),\n\t\"render/direct3d\": Module(\"render/direct3d\",\n\t\t\"render\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\"render/software\": Module(\"render/software\",\n\t\t\"render\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\"render/raytrace\": Module(\"render/raytrace\",\n\t\t\"render\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\t\n\t\"physics/bullet\": Module(\"physics/bullet\",\n\t\t\"physics\", \n\t\t{\"WEB\": f\" -I{tramsdk}libraries/bullet\", \"WIN32\": f\" -I{tramsdk}libraries/bullet\", \"WIN64\": f\" -I{tramsdk}libraries/bullet\", \"LINUX\": f\" -I/usr/include/bullet\"},\n\t\t{\"WEB\": web_bin, \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"-lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath \", \"WIN32\": \"-lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath \", \"WIN64\": \"-lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath \", \"LINUX\": \"-lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath \"}),\n\t\"physics/template\": Module(\"physics/template\",\n\t\t\"physics\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\n\t\"extensions/file\": Module(\"extensions/file\",\n\t\t\"extensions\", \n\t\t{\"WEB\": \"\", \"WIN32\": f\" -I{tramsdk}libraries/curl\", \"WIN64\": f\" -I{tramsdk}libraries/curl\", \"LINUX\": f\" -I{tramsdk}libraries/curl\"},\n\t\t{\"WEB\": web_bin, \"WIN32\": win32_bin, \"WIN64\": win64_bin, \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"-lws2_32 -lcurl -lminiz\", \"WIN64\": \"-lws2_32 -lcurl -lminiz\", \"LINUX\": \"-lcurl -lminiz\"}),\n\t\"extensions/camera\": Module(\"extensions/camera\",\n\t\t\"extensions\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\"extensions/menu\": Module(\"extensions/menu\",\n\t\t\"extensions\", \n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\", \"WIN64\": \"\", \"LINUX\": \"\"}),\n\t\"extensions/scripting/lua\": Module(\"extensions/scripting/lua\",\n\t\t\"extensions\", \n\t\t{\"WEB\": f\" -I{tramsdk}libraries/lua\", \"WIN32\": f\" -I{tramsdk}libraries/lua\", \"WIN64\": f\" -I{tramsdk}libraries/lua\", \"LINUX\": \" -I/usr/include/lua5.4\"},\n\t\t{\"WEB\": \"\", \"WIN32\": \"\",\t\t\"WIN64\": \"\", \t\t\"LINUX\": \"\"},\n\t\t{\"WEB\": \"-llua\", \"WIN32\": \"-llua\",\t\"WIN64\": \"-llua\",\t\"LINUX\": \"-llua5.4\"})\n}\n\nfor module, enable in module_enables.items():\n\tif not module in modules:\n\t\tprint(f\"Module '{module}' was not found!\")\n\tif enable == \"INCLUDE\":\n\t\tmodules[module].enable()\n\telif enable == \"EXCLUDE\":\n\t\tmodules[module].disable()\n\telse:\n\t\tprint(f\"Module '{module}' enable state '{enable}' not recognized!\")\n\n\t\t\n# Print the header\ndef print_header():\n\tprint(\"TRAM SDK Makefile generator v0.0.4\")\n\n# Print help\ndef print_help():\n\tprint_header()\n\tprint(\"This tool generates makefiles for compiling the Tramway SDK and\")\n\tprint(\"projects built on top of it. Please check your configuration\")\n\tprint(\"before generating the Makefile for the first time.\")\n\tprint(\"\\nCommand line options:\")\n\tprint(\"\\t--help\\t\\tDisplays this message.\")\n\tprint(\"\\t--version\\tAlso displays this message.\")\n\tprint(\"\\tconfig\\t\\tChecks the configuration.\")\n\tprint(\"\\tgenerate\\tGenerates a makefile in the project directory.\")\n\n# Print config\ndef print_config():\n\tprint_header()\n\tprint(\"Compiler:\\t\", compiler)\n\tprint(\"Archiver:\\t\", archiver)\n\tprint(\"Project type:\\t\", project_type)\n\tprint(\"Modules:\")\n\tprev_group = None\n\tfor module, include in modules.items():\n\t\tif not prev_group is None and include.group != prev_group:\n\t\t\tprint(\" \")\n\t\tprev_group = include.group\n\t\tprint(\"\\t[X]  \" if include.is_enabled() else \"\\t[ ]  \", module)\n\tprint(\"\\nYou can change the configuration in ./maketool.ini\")\n\ndef validate_config():\n\tis_valid = True\n\n\tif not os.path.isdir(project_path):\n\t\tprint(f\"Selected path '{project_path}' is not a directory.\")\n\t\tis_valid = False\n\n\tif ' ' in project_name:\n\t\tprint(f\"Project name '{project_name}' contains spaces.\")\n\t\tis_valid = False\n\t\t\n\tif not platform in [\"WEB\", \"WIN32\", \"WIN64\", \"LINUX\"]:\n\t\tprint(f\"Plaform '{platform}' not recognized.\")\n\t\tis_valid = False\n\n\tif not project_type in [\"LIBRARY\", \"PROJECT\"]:\n\t\tprint(f\"Project type '{project_type}' is not recognized.\")\n\t\tis_valid = False\n\t\t\n\t\n\tgroups = set(map(lambda mod: mod.group, modules.values()))\n\tgroups_included = {}\n\tfor group in groups:\n\t\tgroups_included[group] = 0\n\tfor module in modules.values():\n\t\tif module.is_enabled():\n\t\t\tgroups_included[module.group] += 1\n\tfor group in groups:\n\t\tif groups_included[group] == 0 and group != \"extensions\":\n\t\t\tprint(f\"At least one module in {group} needs to be enabled.\")\n\t\t\tis_valid = False\n\t\tif groups_included[group] > 1 and group != \"extensions\":\n\t\t\tprint(f\"Only one module {group} in can be enabled.\")\n\t\t\tis_valid = False\n\t\n\treturn is_valid\n\t\n# Generate makefile\ndef generate_makefile():\n\tif is_library:\n\t\tmakefile = \"default: library\\n\\n\"\n\telse:\n\t\tmakefile = \"default: project\\n\\n\"\n\t\n\tif not os.path.isdir(project_path + \"src\"):\n\t\tsys.exit(\"Can't find the ./src/ directory!\")\n\t\t\n\tprint(\"Generating makefile...\")\n\t\n\tunits = []\n\tsource_path = project_path + \"src/\"\n\t\n\tfor root, _, files in os.walk(source_path):\n\t\tfor name in files:\n\t\t\tfilename = os.path.join(root, name).replace('\\\\', '/')\n\t\t\t\n\t\t\tappend = filename.endswith(\".cpp\")\n\t\t\t\n\t\t\tfor module, include in modules.items():\n\t\t\t\tif filename.startswith(source_path + module) and not include.is_enabled():\n\t\t\t\t\tappend = False\n\t\t\t\n\t\t\tif is_library and filename == source_path + \"main.cpp\":\n\t\t\t\tappend = False\n\t\t\t\t\n\t\t\tif append:\n\t\t\t\tunits.append(filename)\n\t\n\tdef objectify(unit):\n\t\tunit = unit.replace('./', '')\n\t\tunit = unit.replace('/', '_')\n\t\treturn unit[:-4]\n\t\n\t# Generate translation unit rules\n\tfor unit in units:\n\t\tmakefile += objectify(unit) + \".o: \" + unit + \"\\n\"\n\t\tmakefile += \"\\t\" + compiler + \" -c -g -O0 -Wno-narrowing -std=c++20 -I./src\"\n\t\tmakefile += \" -I\" + tramsdk + \"libraries\"\n\t\tmakefile += \" -I\" + tramsdk + \"src\"\n\t\tif platform == \"WEB\":\n\t\t\tmakefile += \" -Wno-undefined-var-template\"\n\t\tfor module in modules.values():\n\t\t\tif module.is_enabled():\n\t\t\t\tmakefile += module.compile_includes[platform]\n\t\tmakefile += \" \" + unit + \" -o \" + objectify(unit) + \".o\\n\\n\"\n\t\n\t# Generate clean rule\n\tmakefile += \"clean:\\n\"\n\tfor unit in units:\n\t\tmakefile += \"\\t\" + deleter + \" \" + objectify(unit) + \".o\\n\"\t\n\tmakefile += \"\\n\"\n\t\n\t# Generate build rule\n\tif is_library:\n\t\tmakefile += \"library: \"\n\t\tfor unit in units:\n\t\t\tmakefile += objectify(unit) + \".o \"\n\t\tmakefile += \"\\n\\t\" + archiver\n\t\tif platform != \"WEB\":\n\t\t\tmakefile += \" -crf \"\n\t\telse:\n\t\t\tmakefile += \" rcs \"\n\t\tmakefile += \"libtramsdk.a \"\n\t\t\n\t\tfor unit in units:\n\t\t\tmakefile += objectify(unit) + \".o \"\n\t\t\n\t\tmakefile += \"\\n\"\n\t\t\n\tif not is_library:\n\t\tmakefile += \"project: \"\n\t\tfor unit in units:\n\t\t\tmakefile += objectify(unit) + \".o \"\n\t\tmakefile += \"\\n\\t\" + compiler\n\t\t\n\t\tif platform == \"WEB\":\n\t\t\tmakefile += \" -g \"\n\t\t\tfor unit in units:\n\t\t\t\tmakefile += objectify(unit) + \".o \"\n\t\t\tmakefile += \"-sASSERTIONS=2 -sSAFE_HEAP=0 -sALLOW_MEMORY_GROWTH \"\n\t\t\tmakefile += \"-sSTACK_OVERFLOW_CHECK=1 -sUSE_BULLET=1 \"\n\t\t\tmakefile += \"-sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 -L./ \"\n\t\t\tmakefile += \"-o \" + project_name + \".html --preload-file ./\"\n\t\telse:\n\t\t\tmakefile += \" -o \" + project_name\n\t\t\tmakefile += \" -L\" + tramsdk + \" \"\n\t\t\tif platform != \"LINUX\":\n\t\t\t\tmakefile += \"-static \"\n\t\t\tfor unit in units:\n\t\t\t\tmakefile += objectify(unit) + \".o \"\n\t\t\tif project_name != \"tramsdk\":\n\t\t\t\tmakefile += \"-ltramsdk \"\n\t\tfor module in modules.values():\n\t\t\tif module.is_enabled():\n\t\t\t\tmakefile += module.linker_includes[platform] + \" \"\n\t\t\t\tmakefile += module.linker_options[platform] + \" \"\n\t\n\t\n\twith open(project_path + \"Makefile\", \"w\") as makefile_file:\n\t\tmakefile_file.write(makefile)\n\t\n\tprint(\"ok.\")\n\t\nmode = sys.argv[1] if len(sys.argv) > 1 else -1\n\nif mode == \"config\":\n\tprint_config()\n\tprint(\"\")\n\tvalidate_config()\nelif mode == \"generate\":\n\tif validate_config():\n\t\tgenerate_makefile()\nelse:\n\tprint_help()\n\n\n\n\n\n\n\t\n"
  },
  {
    "path": "devtools/tbsp/engine_libs.cpp",
    "content": "#include <framework/file.cpp>\n#include <platform/file.cpp>\n#include <framework/logging.cpp>\n#include <framework/system.cpp>\n#include <framework/uid.cpp>\n#include <framework/math.cpp>\n\n#define STB_IMAGE_IMPLEMENTATION\n#include <stb_image.h>\n\n#include <platform/other.cpp>"
  },
  {
    "path": "devtools/tbsp/main.cpp",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n// Tramway SDK -- Map converter\n\n// TODO:\n\n// - mesh simplification(?) sometimes generates edges with NaN vertices\n//\t\t- this is not good and should be fixed.\n//\n// - atof() is very slow, replace with std::from_chars\n\n#include <iostream>\n#include <vector>\n#include <map>\n#include <algorithm>\n#include <cstring>\n\n#include <framework/logging.h>\n#include <framework/file.h>\n#include <framework/math.h>\n\n#include <platform/file.h>\n\n#include <stb_image.h>\n\nusing namespace tram;\n\nstruct Vertex {\n\tvec3 pos;\n\tvec3 nrm;\n\tvec2 tex;\n\tvec2 map;\n};\n\nstruct Triangle {\n\tuint32_t v1, v2, v3;\n\tuint32_t mat;\n};\n\nstruct Material {\n\tstd::string name;\n\tint width, height;\n};\n\nstruct Plane {\n\tfloat x_offset, y_offset;\n\tfloat x_scale, y_scale;\n\tfloat angle;\n\t\n\tvec3 p1, p2, p3;\n\t\n\tstd::string material;\n};\n\nstruct Edge {\n\tvec3 p1, p2;\n};\n\nstruct Polygon {\n\tstd::vector<Edge> edges;\n\tPlane plane;\n};\n\nstruct Brush {\n\tstd::vector<Plane> planes;\n\tstd::vector<Polygon> polys;\n\t\n\tstd::vector<vec3> hull;\n};\n\nstruct Entity {\n\tstd::vector<Brush> brushes;\n\tstd::string name;\n\t\n\tvec3 origin = {0.0f, 0.0f, 0.0f};\n\t\n\tstd::vector<Material> materials;\n\tstd::vector<Vertex> vertices;\n\tstd::vector<Triangle> indices;\n};\n\nvec4 PlaneToEquation(const Plane& plane) {\n\tvec3 dir1 = plane.p2 - plane.p1;\n\tvec3 dir2 = plane.p3 - plane.p1;\n\tvec3 cros = glm::normalize(glm::cross(dir1, dir2));\n\t\n\tfloat dist = glm::dot(cros, plane.p1);\n\t\n\treturn {cros, -dist};\n}\n\n// returns 0 if needs clipped, -1 if thrown away, 1 if kept\nint NeedsClipped(Polygon poly, vec4 eq, float bias = 0.01f) {\n\tint inside_vertices = 0;\n\tint outside_vertices = 0;\n\n\tfor (auto& edge : poly.edges) {\n\t\tfloat dist1 = glm::dot(vec3(eq), edge.p1) + eq.w;\n\t\tfloat dist2 = glm::dot(vec3(eq), edge.p2) + eq.w; \n\t\t\n\t\tif (dist1 > bias) inside_vertices++; \n\t\tif (dist2 > bias) inside_vertices++;\n\t\t\n\t\tif (dist1 < -bias) outside_vertices++; \n\t\tif (dist2 < -bias) outside_vertices++;\n\t}\n\n\tif (outside_vertices == 0) {\n\t\treturn 1;\n\t}\n\n\tif (inside_vertices == 0) {\n\t\treturn -1;\n\t}\n\t\n\treturn 0;\n}\n\nstd::pair<Polygon, Edge> Clip(Polygon poly, vec4 eq) {\n\tstd::vector<Edge> new_edges;\n\tEdge new_edge = {{INFINITY, INFINITY, INFINITY}, {0, 0, 0}};\n\tfor (auto& edge : poly.edges) {\n\t\tfloat dist1 = glm::dot(vec3(eq), edge.p1) + eq.w;\n\t\tfloat dist2 = glm::dot(vec3(eq), edge.p2) + eq.w;\n\t\t\n\t\tif (dist1 < 0.0f && dist2 < 0.0f) {\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tif (dist1 < 0.0f) {\n\t\t\tvec3 l0 = edge.p1;\n\t\t\tvec3 l = glm::normalize(edge.p2 - edge.p1);\n\t\t\tvec3 n = vec3(eq);\n\t\t\tvec3 p0 = n * -eq.w;\n\t\t\tfloat d = glm::dot((p0-l0), n) / glm::dot(l, n);\n\t\t\tedge.p1 = l0 + l*d;\n\t\t\t\n\t\t\tif (new_edge.p1.x == INFINITY) {\n\t\t\t\tnew_edge.p1 = edge.p1;\n\t\t\t} else {\n\t\t\t\tnew_edge.p2 = edge.p1;\n\t\t\t\tnew_edges.push_back(new_edge);\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (dist2 < 0.0f) {\n\t\t\tvec3 l0 = edge.p1;\n\t\t\tvec3 l = glm::normalize(edge.p2 - edge.p1);\n\t\t\tvec3 n = vec3(eq);\n\t\t\tvec3 p0 = n * -eq.w;\n\n\t\t\tfloat d = glm::dot((p0-l0), n) / glm::dot(l, n);\n\n\t\t\tedge.p2 = l0 + l*d;\n\t\t\t\n\t\t\tif (new_edge.p1.x == INFINITY) {\n\t\t\t\tnew_edge.p1 = edge.p2;\n\t\t\t} else {\n\t\t\t\tnew_edge.p2 = edge.p2;\n\t\t\t\tnew_edges.push_back(new_edge);\n\t\t\t}\n\t\t}\n\t\t\n\t\tnew_edges.push_back(edge);\n\t}\n\t\n\tpoly.edges = new_edges;\n\t\n\treturn {poly, new_edge};\n}\n\nint main(int argc, const char** argv) {\n\tstd::cout << \"Tramway SDK -- Map converter\" << std::endl;\n\t\n\t\n\tif (argc < 2) {\n\t\tstd::cout << \"Usage: tbsp map [flags]\";\n\t\tstd::cout << \"\\n\\tmap is the name of the map\";\n\t\tstd::cout << \"\\n\\tflags are flags\";\n\t\tstd::cout << \"\\n\\t\\t-nostmdl to skip outputting 3D model\";\n\t\tstd::cout << \"\\n\\t\\t-nocollmdl to skip outputting collsion model\";\n\t\tstd::cout << \"\\n\\t\\t-nohidden to skip hidden surface removal\";\n\t\tstd::cout << \"\\n\\t\\t-nonodraw to skip nodraw surface removal\";\n\t\tstd::cout << \"\\n\\t\\t-only entity to output only entity\";\n\t\tstd::cout << \"\\n\\t\\t-worldspawn name to override worldspawn name\";\n\t\treturn 0;\n\t}\n\t\n\tconst char* map_name = argv[1];\n\tconst char* entity_only = nullptr;\n\tconst char* worldspawn_name = \"worldspawn\";\n\t\n\tbool skip_model = false;\n\tbool skip_collision = false;\n\tbool skip_hidden = false;\n\tbool skip_nodraw = false;\n\t\n\tfor (int i = 2; i < argc; i++) {\n\t\tif (strcmp(argv[i], \"-nostmdl\") == 0)\t\tskip_model = true;\n\t\tif (strcmp(argv[i], \"-nocollmdl\") == 0)\t\tskip_collision = true;\n\t\tif (strcmp(argv[i], \"-nohidden\") == 0)\t\tskip_hidden = true;\n\t\tif (strcmp(argv[i], \"-nonodraw\") == 0)\t\tskip_nodraw = true;\t\t\n\t\tif (strcmp(argv[i], \"-only\") == 0)\t\t\tentity_only = argv[++i];\n\t\tif (strcmp(argv[i], \"-worldspawn\") == 0)\tworldspawn_name = argv[++i];\n\t}\n\t\n\t\n\tstd::vector<Entity> entities;\n\t\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                               MAP LOADER                              |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\t// This part is pretty simple -- first we load the map file into memory,\n\t// then we parse it. The file format itself consists of text. \n\n\t// This parser implementation is pretty bad and might not work with map \n\t// files generated by all programs.\n\t\n\tchar map_path[200] = \"\";\n\t\n\t// check if absolute path\n\tif (map_name[0] == '/' || map_name[1] == ':') {\n\t\tstrcpy(map_path, map_name);\n\t\tstrcat(map_path, \".map\");\n\t} else {\n\t\tstrcpy(map_path, \"assets/\");\n\t\tstrcat(map_path, map_name);\n\t\tstrcat(map_path, \".map\");\n\t}\n\t\n\tauto file = FileReader::GetReader(map_path);\n\t//File file(map_path, MODE_READ | MODE_PAUSE_LINE);\n\t\n\t//if (!file.is_open()) {\n\tif (file->GetStatus() != FileStatus::READY) {\n\t\tstd::cout << \"Error opening map file \" << map_path << std::endl;\n\t\treturn 1;\n\t}\n\t\n\tstd::cout << \"Reading map file \" << map_path << \"... \" << std::flush;\n\t\n\tconst char* cursor = file->GetContents();\n\tconst char* cursor_end = cursor + file->GetSize();\n\t\n\twhile (cursor < cursor_end) {\n\t\t\n\t\t// comment. skip until end of line\n\t\tif (*cursor == '/') {\n\t\t\twhile (*cursor != '\\n'/* || *cursor != '\\0'*/) {\n\t\t\t\tcursor++;\n\t\t\t}\n\t\t\tcursor++;\n\t\t\t\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\t// start of an entity\n\t\tif (*cursor == '{') {\n\t\t\tEntity entity;\n\t\t\t\n\t\t\t*cursor++; // skip opening bracket\n\t\t\t\n\t\t\t// read in parameters of the entity\n\t\t\tfor (;;) {\n\t\t\t\t\n\t\t\t\t// find parameter name opening bracket\n\t\t\t\twhile (*cursor != '\"' && *cursor != '{') cursor++;\n\t\t\t\t\n\t\t\t\t// we reached the part where the brush planes are defined\n\t\t\t\tif (*cursor == '{') break;\n\t\t\t\t\n\t\t\t\tcursor++; // skip opening quote\n\t\t\t\t\n\t\t\t\tchar parameter[256];\n\t\t\t\tchar value[256];\n\t\t\t\t\n\t\t\t\t// copy in parameter\n\t\t\t\tfor (char* p = parameter; *cursor != '\"'; p++ && cursor++) {\n\t\t\t\t\tp[0] = *cursor;\n\t\t\t\t\tp[1] = '\\0';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcursor++; \t\t\t\t\t\t\t\t// skip closing quote\n\t\t\t\twhile (*cursor != '\"') cursor++; \t\t// find next quote\n\t\t\t\tcursor++;\t\t\t\t\t\t\t\t// skip opening quote\n\t\t\t\t\n\t\t\t\t// copy in value\n\t\t\t\tfor (char* v = value; *cursor != '\"'; v++ && cursor++) {\n\t\t\t\t\tv[0] = *cursor;\n\t\t\t\t\tv[1] = '\\0';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tcursor++;  // skip closing quote\n\t\t\t\t\n\t\t\t\tif (std::string(parameter) == \"classname\" && std::string(value) == \"worldspawn\") {\n\t\t\t\t\tentity.name = worldspawn_name;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (std::string(parameter) == \"_tb_name\") {\n\t\t\t\t\tentity.name = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t// reading in brushes\n\t\t\tfor (;;) {\n\t\t\t\twhile(*cursor != '{' && *cursor != '}') cursor++;\n\t\t\t\t\n\t\t\t\tif (*cursor == '}') break;\n\t\t\t\t\n\t\t\t\tBrush brush;\n\t\t\t\t\n\t\t\t\t// read in all the planes\n\t\t\t\tfor (;;) {\n\t\t\t\t\tvec3 points[3];\n\t\t\t\t\t\n\t\t\t\t\t// read in planes\n\t\t\t\t\tfor (int i = 0; i < 3; i++) {\n\t\t\t\t\t\twhile (*cursor != '(') cursor++;\n\t\t\t\t\t\tcursor++;\n\t\t\t\t\t\t\n\t\t\t\t\t\tpoints[i].x = atof(cursor);\n\t\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\t\tpoints[i].y = atof(cursor);\n\t\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\t\tpoints[i].z = atof(cursor);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tPlane plane;\n\t\t\t\t\t\n\t\t\t\t\tplane.p1 = points[0];\n\t\t\t\t\tplane.p2 = points[1];\n\t\t\t\t\tplane.p3 = points[2];\n\t\t\t\t\t\n\t\t\t\t\tchar material[256];\n\t\t\t\t\t\n\t\t\t\t\twhile (*cursor != ')') cursor++;\n\t\t\t\t\tcursor++;\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\t\n\t\t\t\t\t// copy in material name\n\t\t\t\t\tfor (char* m = material; !isspace(*cursor); m++ && cursor++) {\n\t\t\t\t\t\tm[0] = *cursor;\n\t\t\t\t\t\tm[1] = '\\0';\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tplane.material = material;\n\t\t\t\t\t\n\t\t\t\t\tplane.x_offset = atof(cursor);\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\tplane.y_offset = atof(cursor);\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\tplane.angle = atof(cursor);\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\tplane.x_scale = atof(cursor);\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\tplane.y_scale = atof(cursor);\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\twhile (!isspace(*cursor)) cursor++;\n\t\t\t\t\t\n\t\t\t\t\tbrush.planes.push_back(plane);\n\t\t\t\t\t\n\t\t\t\t\twhile (isspace(*cursor)) cursor++;\n\t\t\t\t\t\n\t\t\t\t\tif (*cursor == '}') {\n\t\t\t\t\t\t*cursor++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tentity.brushes.push_back(brush);\n\t\t\t}\n\n\t\t\tif (!entity_only || entity.name == entity_only) {\n\t\t\t\tentities.push_back(entity);\n\t\t\t}\t\n\t\t}\n\t\t\n\t\tcursor++;\n\t}\n\t\n\tstd::cout << \" done!\" << std::endl;\n\t\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                            POLYGON CONVERTER                          |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\t// Now that the map has been parsed and loaded into memory, it is time to\n\t// convert the brushes (which are defined as planes), into polygons, which \n\t// we can use later for rendering.\n\t\n\t// For each brush we will initially create a very large polygonal cube. Then\n\t// we will start clipping it with each brush plane, until we have clipped it\n\t// into the shape of the brush.\n\t\n\tconst vec3 low_lft_bak = {-8192.0f, -8192.0f, -8192.0f};\n\tconst vec3 low_rgt_bak = { 8192.0f, -8192.0f, -8192.0f};\n\tconst vec3 low_rgt_frt = { 8192.0f, -8192.0f,  8192.0f};\n\tconst vec3 low_lft_frt = {-8192.0f, -8192.0f,  8192.0f};\n\tconst vec3 hgh_lft_bak = {-8192.0f,  8192.0f, -8192.0f};\n\tconst vec3 hgh_rgt_bak = { 8192.0f,  8192.0f, -8192.0f};\n\tconst vec3 hgh_rgt_frt = { 8192.0f,  8192.0f,  8192.0f};\n\tconst vec3 hgh_lft_frt = {-8192.0f,  8192.0f,  8192.0f};\n\t\n\tconst Plane blank = {\n\t\t0.0f, 0.0f, 0.0f, 0.0f, 0.0f,\n\t\t{0.0f, 0.0f, 0.0f},\n\t\t{1.0f, 0.0f, 0.0f},\n\t\t{0.0f, 1.0f, 0.0f},\n\t\t\"none\"\n\t};\n\t\n\tconst std::vector<Polygon> initial {\n\t\t{{{low_lft_bak, hgh_lft_bak}, {hgh_lft_bak, hgh_rgt_bak}, {hgh_rgt_bak, low_rgt_bak}, {low_rgt_bak, low_lft_bak}}, blank},\n\t\t{{{low_rgt_bak, hgh_rgt_bak}, {hgh_rgt_bak, hgh_rgt_frt}, {hgh_rgt_frt, low_rgt_frt}, {low_rgt_frt, low_rgt_bak}}, blank},\n\t\t{{{low_rgt_frt, hgh_rgt_frt}, {hgh_rgt_frt, hgh_lft_frt}, {hgh_lft_frt, low_lft_frt}, {low_lft_frt, low_rgt_frt}}, blank},\n\t\t{{{low_lft_frt, hgh_lft_frt}, {hgh_lft_frt, hgh_lft_bak}, {hgh_lft_bak, low_lft_bak}, {low_lft_bak, low_lft_frt}}, blank},\n\t\t{{{low_lft_bak, low_rgt_bak}, {low_rgt_bak, low_rgt_frt}, {low_rgt_frt, low_lft_frt}, {low_lft_frt, low_lft_bak}}, blank},\n\t\t{{{hgh_lft_bak, hgh_lft_frt}, {hgh_lft_frt, hgh_rgt_frt}, {hgh_rgt_frt, hgh_rgt_bak}, {hgh_rgt_bak, hgh_lft_bak}}, blank},\n\t};\n\t\n\tfor (size_t i = 0; i < entities.size(); i++) {\n\t\tauto& entity = entities[i];\n\t\t\n\t\tstd::cout << \"[\" << (i + 1) << \"/\" << entities.size() << \"] Converting \"<< entity.name <<\" to polygon soup... \" << std::flush;\n\t\t\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\t// make initial polygonal mega-cube\n\t\t\tbrush.polys = initial;\n\n\t\t\t// clip it down with brush planes\n\t\t\tfor (auto& plane : brush.planes) {\n\t\t\t\tstd::vector<Polygon> clipped_polys;\n\t\t\t\t\n\t\t\t\tvec4 eq = PlaneToEquation(plane);\n\t\t\t\t\n\t\t\t\tPolygon new_polygon = {.plane = plane}; // may or may not be filled\n\n\t\t\t\tfor (auto& poly : brush.polys) {\n\t\t\t\t\tint needs_clipped = NeedsClipped(poly, eq);\n\t\t\t\t\tif (needs_clipped == 1) {\n\t\t\t\t\t\tclipped_polys.push_back(poly);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (needs_clipped == -1) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tauto[clipped_poly, new_edge] = Clip(poly, eq);\n\t\t\t\t\t\n\t\t\t\t\tclipped_polys.push_back(clipped_poly);\n\t\t\t\t\tnew_polygon.edges.push_back(new_edge);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tclipped_polys.push_back(new_polygon);\n\t\t\t\t\n\t\t\t\tbrush.polys = clipped_polys;\n\t\t\t}\n\t\t}\n\t\t\n\t\tstd::cout << \"done!\" << std::endl;\n\t}\n\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                    POLYGON TO CONVEX HULL CONVERTER                   |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\tfor (auto& entity : entities) {\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\tfor (const auto& poly : brush.polys) {\n\t\t\tfor (const auto& edge : poly.edges) {\n\t\t\t\tbool found_p1 = false;\n\t\t\t\tbool found_p2 = false;\n\t\t\t\tfor (const auto& point : brush.hull) {\n\t\t\t\t\tif (point == edge.p1) found_p1 = true;\n\t\t\t\t\tif (point == edge.p2) found_p2 = true;\n\t\t\t\t}\n\t\t\t\tif (!found_p1 && !std::isnan(edge.p1.x) && !std::isinf(edge.p1.x)) brush.hull.push_back(edge.p1);\n\t\t\t\tif (!found_p2 && !std::isnan(edge.p2.x) && !std::isinf(edge.p2.x)) brush.hull.push_back(edge.p2);\n\t\t\t}}\n\t\t\t\n\t\t\tfor (auto& point : brush.hull) {\n\t\t\t\tpoint = {point.x, point.z, -point.y};\n\t\t\t\tpoint *= 1.0f/32.0f;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                         HIDDEN SURFACE REMOVAL                        |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\tif (!skip_hidden) for (size_t i = 0; i < entities.size(); i++) {\n\t\tauto& entity = entities[i];\n\t\t\n\t\tstd::cout << \"[\" << (i + 1) << \"/\" << entities.size() << \"] Removing hidden surfaces for \"<< entity.name <<\"... \" << std::flush;\n\t\t\n\t\tstd::vector<Brush> new_brushes;\n\t\t\n\t\t// iterate through all brushes of an entity\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\tBrush new_brush = {.planes = brush.planes, .hull = brush.hull};\n\t\t\t\n\t\t\t// then iterate through all polygons of a brush\n\t\t\tfor (auto& poly : brush.polys) {\n\t\t\t\t\n\t\t\t\t// compute the plane equation of the polygon\n\t\t\t\tvec4 eq = PlaneToEquation(poly.plane);\n\t\t\t\t\n\t\t\t\t// now find all of the brushes that are adjacent to the polygon\n\t\t\t\tstd::vector<Brush*> adjacent;\n\t\t\t\t\n\t\t\t\tfor (auto& brush_clip : entity.brushes) {\n\t\t\t\t\tif (&brush == &brush_clip) continue;\n\t\t\t\t\t\n\t\t\t\t\tbool shared_plane = false;\n\t\t\t\t\t\n\t\t\t\t\tfor (auto& poly_clip : brush_clip.polys) {\n\t\t\t\t\t\tbool on_plane = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (poly_clip.plane.material == \"dev/noclip\") continue;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (auto& edge_clip : poly_clip.edges) {\n\t\t\t\t\t\t\tif (abs(glm::dot(vec3(eq), edge_clip.p1) + eq.w) > 0.1f ||\n\t\t\t\t\t\t\t\tabs(glm::dot(vec3(eq), edge_clip.p2) + eq.w) > 0.1f\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\ton_plane = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (on_plane) {\n\t\t\t\t\t\t\tvec4 poly_eq = PlaneToEquation(poly_clip.plane);\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tvec3 eq1 = eq;\n\t\t\t\t\t\t\tvec3 eq2 = poly_eq;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (glm::dot(eq1, eq2) < 0.0f) {\n\t\t\t\t\t\t\t\tshared_plane = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (shared_plane) {\n\t\t\t\t\t\tadjacent.push_back(&brush_clip);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tstd::vector<Polygon> soup = {poly};\n\t\t\t\t\n\t\t\t\tfor (Brush* brush_clip : adjacent) {\n\t\t\t\t\tstd::vector<Polygon> new_soup;\n\t\t\t\t\t\n\t\t\t\t\tfor (auto& soup_poly : soup) {\n\t\t\t\t\t\tstd::vector<Polygon> speculative_soup;\n\t\t\t\t\t\tPolygon remainder = soup_poly;\n\t\t\t\t\t\tbool clipped = false;\n\t\t\t\t\t\tbool what_the_fuck = false;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (auto& plane : brush_clip->planes) {\n\t\t\t\t\t\t\tvec4 plane_eq = PlaneToEquation(plane);\n\n\t\t\t\t\t\t\t// this skips planes that have the same plane as polygon\n\t\t\t\t\t\t\tif (abs(glm::dot(vec3(eq), vec3(plane_eq))) > 0.99f) continue;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tint needs_clipped = NeedsClipped(remainder, plane_eq, 0.1f);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (needs_clipped == -1) {\n\t\t\t\t\t\t\t\twhat_the_fuck = true;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (needs_clipped == 1) {\n\t\t\t\t\t\t\t\tclipped = true;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tclipped = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tauto clipped_off = Clip(remainder, -plane_eq);\n\t\t\t\t\t\t\tauto new_remainder = Clip(remainder, plane_eq);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tspeculative_soup.push_back(clipped_off.first);\n\t\t\t\t\t\t\tremainder = new_remainder.first;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (what_the_fuck) {\n\t\t\t\t\t\t\tnew_soup.push_back(soup_poly);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (!clipped) speculative_soup.push_back(remainder);\n\t\t\t\t\t\t\n\t\t\t\t\t\tfor (auto& poly : speculative_soup) {\n\t\t\t\t\t\t\tnew_soup.push_back(poly);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tsoup = new_soup;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfor (auto& soup_polygon : soup) {\n\t\t\t\t\tnew_brush.polys.push_back(soup_polygon);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tnew_brushes.push_back(new_brush);\n\t\t}\n\t\t\n\t\tentity.brushes = new_brushes;\n\t\t\n\t\tstd::cout << \"done!\" << std::endl;\n\t}\n\t\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                     POLYGON TO TRIANGLE CONVERTER                     |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\t// This part here will convert our polygons, which are defined as a set of\n\t// edges, into little indexed traingles, that can be saved to a disk file.\n\t\n\t// First it will find a list of unique materials, then it will load in the\n\t// dimensions of the textures of these materials, and finally it will \n\t// triangulate our polygons, using the texture dimensions to help with\n\t// texture projection.\n\t\n\tfor (size_t i = 0; i < entities.size(); i++) {\n\t\tauto& entity = entities[i];\n\t\t\n\t\tstd::cout << \"[\" << (i + 1) << \"/\" << entities.size() << \"] Triangulating polygon soup for \"<< entity.name <<\"... \" << std::flush;\n\t\t\n\t\t// iterate through all planes and find all of the materials\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\tfor (auto& plane : brush.planes) {\n\t\t\t\tbool already_in_list = false;\n\t\t\t\tfor (int i = 0 ; i < entity.materials.size(); i++) {\n\t\t\t\t\tif (entity.materials[i].name == plane.material) {\n\t\t\t\t\t\talready_in_list = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (!already_in_list) entity.materials.push_back({.name=plane.material});\n\t\t\t}\n\t\t}\n\t\t\n\t\t// find the parameters of the materials\n\t\tfor (auto& mat : entity.materials) {\n\t\t\tstd::string path = \"data/textures/\";\n\t\t\tpath += mat.name;\n\t\t\tpath += \".png\";\n\t\t\t\n\t\t\tint x, y, n;\n\t\t\t\n\t\t\tif (!stbi_info(path.c_str(), &x, &y, &n)) {\n\t\t\t\tstd::cout << \"\\nFile \" << path << \" not found!\" << std::endl;\n\t\t\t\t\n\t\t\t\t// this is a sane resolution for a texture\n\t\t\t\tx = 32;\n\t\t\t\ty = 32;\n\t\t\t}\n\t\t\t\n\t\t\tmat.width = x;\n\t\t\tmat.height = y;\n\t\t}\n\t\t\t\n\t\t\n\t\tauto make_vertex = [](Plane plane, Material mat, vec3 vert, vec3 normal) -> Vertex {\n\t\t\tvec3 pos = vert * (1.0f/32.0f);\n\t\t\tvec2 tex = vec2{0.0f, 0.0f};\n\t\t\tvec2 map = vec2{0.0f, 0.0f};\n\t\t\t\n\t\t\tvec2 scl = {1.0f/plane.x_scale, 1.0f/plane.y_scale};\n\t\t\tvec2 off = {plane.x_offset * plane.x_scale, -plane.y_offset * plane.y_scale};\n\n\t\t\tif (abs(glm::dot(vec3(1.0f, 0.0f, 0.0f), normal))>0.5f) {\n\t\t\t\tmap = {vert.y, vert.z};\n\t\t\t\t\n\t\t\t\tvert = quat(vec3(-plane.angle * std::numbers::pi/180.0f, 0.0f, 0.0f)) * vert;\n\t\t\t\t\n\t\t\t\ttex = vec2{scl.x * (vert.y+off.x) * (1.0f/(float)mat.width), scl.y * (vert.z+off.y) * (1.0f/(float)mat.height)};\n\t\t\t}\n\t\t\t\n\t\t\tif (abs(glm::dot(vec3(0.0f, 1.0f, 0.0f), normal))>0.5f) {\n\t\t\t\tmap = {vert.x, vert.z};\n\t\t\t\t\n\t\t\t\tvert = quat(vec3(0.0f, plane.angle * std::numbers::pi/180.0f, 0.0f)) * vert;\n\t\t\t\t\n\t\t\t\ttex = vec2{scl.x * (vert.x+off.x) * (1.0f/(float)mat.width), scl.y * (vert.z+off.y) * (1.0f/(float)mat.height)};\n\t\t\t}\n\t\t\t\n\t\t\tif (abs(glm::dot(vec3(0.0f, 0.0f, 1.0f), normal))>0.5f) {\n\t\t\t\tmap = {vert.x, vert.y};\n\t\t\t\t\n\t\t\t\tvert = quat(vec3(0.0f, 0.0f, -plane.angle * std::numbers::pi/180.0f)) * vert;\n\t\t\t\t\n\t\t\t\ttex = vec2{scl.x * (vert.x+off.x) * (1.0f/(float)mat.width), scl.y * (vert.y+off.y) * (1.0f/(float)mat.height)};\n\t\t\t}\n\t\t\t\n\t\t\treturn {\n\t\t\t\t{pos.x, pos.z, -pos.y},\n\t\t\t\t{normal.x, normal.z, -normal.y},\n\t\t\t\ttex,\n\t\t\t\tmap / 32.0f\n\t\t\t};\n\t\t};\n\t\t\n\t\tfor (auto& brush : entity.brushes) {\n\t\tfor (auto& poly : brush.polys) {\n\t\t\tif (poly.edges.size() < 3) continue;\n\t\t\tif (!skip_nodraw && poly.plane.material == \"dev/nodraw\") continue;\n\n\t\t\tuint32_t mat = 0;\n\t\t\tfor (int i = 0 ; i < entity.materials.size(); i++) {\n\t\t\t\tif (entity.materials[i].name == poly.plane.material) mat = i;\n\t\t\t}\n\t\t\n\t\t\tvec3 eq = PlaneToEquation(poly.plane);\n\t\t\tvec3 pivot = poly.edges[0].p1;\n\t\t\t\n\t\t\tuint32_t p0 = entity.vertices.size();\n\t\t\t\n\t\t\tentity.vertices.push_back(make_vertex(poly.plane, entity.materials[mat], pivot, -eq));\n\t\t\t\n\t\t\tfor (auto& edge : poly.edges) {\n\t\t\t\tif (edge.p1 == pivot || edge.p2 == pivot) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// dumb hack. sometimes we generate polygons with no area, so\n\t\t\t\t// this part should yeet them before they get written to disk\n\t\t\t\tvec3 pp1 = glm::normalize(edge.p1 - pivot);\n\t\t\t\tvec3 pp2 = glm::normalize(edge.p2 - pivot);\n\t\t\t\t\n\t\t\t\tif (glm::dot(pp1, pp2) == 1.0f) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tuint32_t p1 = entity.vertices.size();\n\t\t\t\tuint32_t p2 = entity.vertices.size() + 1;\n\t\t\t\t\n\t\t\t\tentity.vertices.push_back(make_vertex(poly.plane, entity.materials[mat], edge.p1, -eq));\n\t\t\t\tentity.vertices.push_back(make_vertex(poly.plane, entity.materials[mat], edge.p2, -eq));\n\t\t\t\t\n\t\t\t\tif (glm::dot(glm::normalize(glm::cross(edge.p1-pivot, edge.p2-pivot)), vec3(eq)) < 0.0f) {\n\t\t\t\t\tentity.indices.push_back({p0, p1, p2, mat});\n\t\t\t\t} else {\n\t\t\t\t\tentity.indices.push_back({p0, p2, p1, mat});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t\n\t\t}\n\t\t}\n\t\t\n\t\tstd::cout << \"done!\" << std::endl;\n\t}\n\t\n\t// + --------------------------------------------------------------------- +\n\t// |                                                                       |\n\t// |                           MIDPOINT CENTERING                          |\n\t// |                                                                       |\n\t// + --------------------------------------------------------------------- +\n\t\n\tstd::cout << \"Midpoint recentering... \" << std::flush;\n\t\n\tfor (auto& entity : entities) {\n\t\tif (entity.name == worldspawn_name) continue;\n\t\t\n\t\tvec3 aabb_min = entity.brushes[0].hull[0];\n\t\tvec3 aabb_max = aabb_min;\n\t\t\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\tfor (auto& point : brush.hull) {\n\t\t\t\taabb_min = MergeAABBMin(aabb_min, point);\n\t\t\t\taabb_max = MergeAABBMax(aabb_max, point);\n\t\t\t}\n\t\t}\n\t\t\n\t\tentity.origin = glm::mix(aabb_min, aabb_max, 0.5f);\n\t\t\n\t\tfor (auto& brush : entity.brushes) {\n\t\t\tfor (auto& point : brush.hull) {\n\t\t\t\tpoint -= entity.origin;\n\t\t\t}\n\t\t}\n\t\t\n\t\tfor (auto& vertex : entity.vertices) {\n\t\t\tvertex.pos -= entity.origin;\n\t\t}\n\t}\n\t\n\tstd::cout << \"done!\" << std::endl;\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                             MODEL WRITER                              +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\tif (!skip_model) for (size_t i = 0; i < entities.size(); i++) {\n\t\tauto& entity = entities[i];\n\t\tstd::string path = \"data/models/\";\n\t\tpath += entity.name;\n\t\tpath += \".stmdl\";\n\t\t\n\t\tFile output(path.c_str(), File::WRITE);\n\t\t\n\t\tif (!output.is_open()) {\n\t\t\tstd::cout << \"Error writing to model file \" << path << std::endl;\n\t\t\tcontinue;\n\t\t}\n\n\t\tstd::cout << \"[\" << (i + 1) << \"/\" << entities.size() << \"] Writing \" << entity.name << \" 3D model to disk...\" << std::flush;\n\t\t\n\t\tconst bool needs_origin = entity.origin != vec3(0.0f, 0.0f, 0.0f);\n\t\t\n\t\toutput.write_name(\"STMDLv1\");\n\t\t\n\t\toutput.write_uint32(entity.vertices.size());\n\t\toutput.write_uint32(entity.indices.size());\n\t\toutput.write_uint32(entity.materials.size());\n\t\toutput.write_uint32(needs_origin ? 1 : 0);\n\t\t\n\t\toutput.write_newline();\n\t\t\n\t\tif (needs_origin) {\n\t\t\toutput.write_name(\"origin\");\n\t\t\t\n\t\t\toutput.write_float32(entity.origin.x);\n\t\t\toutput.write_float32(entity.origin.y);\n\t\t\toutput.write_float32(entity.origin.z);\n\t\t\t\n\t\t\toutput.write_newline();\n\t\t}\n\t\t\n\t\tfor (auto& mat : entity.materials) {\n\t\t\toutput.write_name(mat.name);\n\t\t\toutput.write_newline();\n\t\t}\n\t\t\n\t\tfor (auto& vertex : entity.vertices) {\n\t\t\toutput.write_float32(vertex.pos.x);\n\t\t\toutput.write_float32(vertex.pos.y);\n\t\t\toutput.write_float32(vertex.pos.z);\n\t\t\t\n\t\t\toutput.write_float32(vertex.nrm.x);\n\t\t\toutput.write_float32(vertex.nrm.y);\n\t\t\toutput.write_float32(vertex.nrm.z);\n\t\t\t\n\t\t\toutput.write_float32(vertex.tex.x);\n\t\t\toutput.write_float32(vertex.tex.y);\n\t\t\t\n\t\t\toutput.write_float32(vertex.map.x);\n\t\t\toutput.write_float32(vertex.map.y);\n\n\t\t\toutput.write_newline();\n\t\t}\n\t\t\n\t\tfor (auto& index : entity.indices) {\n\t\t\toutput.write_uint32(index.v1);\n\t\t\toutput.write_uint32(index.v2);\n\t\t\toutput.write_uint32(index.v3);\n\t\t\t\n\t\t\toutput.write_uint32(index.mat);\n\t\t\t\n\t\t\toutput.write_newline();\n\t\t}\n\t\t\n\t\tstd::cout << \"done!\" << std::endl;\n\t}\n\t\n\tif (!skip_collision) for (size_t i = 0; i < entities.size(); i++) {\n\t\tauto& entity = entities[i];\n\t\tstd::string path = \"data/models/\";\n\t\tpath += entity.name;\n\t\tpath += \".collmdl\";\n\t\t\n\t\tFile file(path.c_str(), File::WRITE);\n\t\t\n\t\tif (!file.is_open()) {\n\t\t\tstd::cout << \"Error writing to model file \" << path << std::endl;\n\t\t\tcontinue;\n\t\t}\n\t\t\n\t\tstd::cout << \"[\" << (i + 1) << \"/\" << entities.size() << \"] Writing \" << entity.name << \" collision model to disk...\" << std::flush;\n\t\t\n\t\tfor (const auto& brush : entity.brushes) {\n\t\t\tif (!brush.hull.size()) continue;\n\t\t\t\n\t\t\tfile.write_name(\"cloud\");\n\t\t\tfile.write_uint64(brush.hull.size());\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t\t\n\t\t\tfor (const auto& point : brush.hull) {\n\t\t\t\tfile.write_float32(point.x);\n\t\t\t\tfile.write_float32(point.y);\n\t\t\t\tfile.write_float32(point.z);\n\t\t\t\t\n\t\t\t\tfile.write_newline();\n\t\t\t}\n\t\t}\n\n\t\tstd::cout << \"done!\" << std::endl;\n\t}\n\t\n\t\n\tstd::cout << \"Finished!\" << std::endl;\n\t\n\treturn 0;\n}"
  },
  {
    "path": "devtools/tmap/engine_libs.cpp",
    "content": "#include <framework/file.cpp>\n#include <platform/file.cpp>\n#include <framework/logging.cpp>\n#include <framework/system.cpp>\n#include <framework/uid.cpp>\n#include <framework/math.cpp>\n\n#include <xatlas.cpp>\n\n#include <platform/other.cpp>"
  },
  {
    "path": "devtools/tmap/main.cpp",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n// Tramway SDK -- Lightmap packer\n\n#include <iostream>\n#include <vector>\n#include <map>\n\n#include <cstdarg>\n#include <cstring>\n\n#include <framework/logging.h>\n#include <framework/file.h>\n#include <framework/math.h>\n\n#include <xatlas.h>\n\nusing namespace tram;\n\nstruct Vertex {\n\tvec3 pos;\n\tvec3 nrm;\n\tvec2 tex;\n\tvec2 map;\n\t\n\tuint32_t mat;\n};\n\nstruct Triangle {\n\tuint32_t v1, v2, v3;\n};\n\nbool VertexCanMerge(const Vertex& a, const Vertex& b) {\n\treturn\n\t\ta.pos == b.pos &&\n\t\ta.nrm == b.nrm &&\n\t\ta.tex == b.tex &&\n\t\ta.mat == b.mat;\n}\n\nint XAtlasPrint(const char* format, ...) {\n\tva_list arg;\n\tva_start(arg, format);\n\tprintf(\"XAtlas: \");\n\tconst int result = vprintf(format, arg);\n\tva_end(arg);\n\treturn result;\n}\n\nint main(int argc, const char** argv) {\n\tstd::cout << \"Tramway SDK -- Lightmap packer\" << std::endl;\n\t\n\tif (argc < 3) {\n\t\tstd::cout << \"Usage: tmap <model> <size> [options]\";\n\t\tstd::cout << \"\\n\\nArguments:\";\n\t\tstd::cout << \"\\n  <model>\\t\\tName of the model, which will be packed\";\n\t\tstd::cout << \"\\n  <size> is the size of the lightmap, in pixels\";\n\t\t\n\t\tstd::cout << \"\\n\\nOptions:\";\n\t\tstd::cout << \"\\n  -pad <pixels> Padding of lightmap segments, in pixels\";\n\t\tstd::cout << \"\\n  -density <integer> Number of texels per meter\";\n\t\treturn 0;\n\t}\n\t\n\tconst char* model_name = argv[1];\n\tint lightmap_size = atoi(argv[2]);\n\tint lightmap_padding = 2;\n\tint lightmap_density = 4;\n\t\n\tif ((lightmap_size & (lightmap_size - 1)) != 0 || lightmap_size < 1) {\n\t\tstd::cout << \"Lightmap size has to be a power of two.\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tfor (int i = 3; i < argc; i++) {\n\t\tif (strcmp(argv[i], \"-pad\") == 0) {\n\t\t\tlightmap_padding = atoi(argv[++i]);\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-density\") == 0) {\n\t\t\tlightmap_density = atoi(argv[++i]);\n\t\t}\n\t}\n\t\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                             MODEL LOADER                              +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\t\n\tstd::string model_path = \"data/models/\";\n\tmodel_path += (const char*)model_name;\n\tmodel_path += \".stmdl\";\n\t\n\tFile file(model_path.c_str(), File::READ);\n\t\n\tif (!file.is_open()) {\n\t\tstd::cout << \"Error opening model file \" << model_path << std::endl;\n\t\treturn 1;\n\t}\n\t\n\tname_t header = file.read_name();\n\t\n\tif (header != \"STMDLv1\") {\n\t\tstd::cout << \"Unrecognized header \" << header << \" in file \" << model_path << std::endl;\n\t\treturn 1;\n\t}\n\t\n\tint vrt_c = file.read_int32();\n\tint tri_c = file.read_int32();\n\tint mat_c = file.read_int32();\n\t\n\tint metadata_count = file.read_int32();\n\t\n\tvec3 origin = {0.0f, 0.0f, 0.0f};\n\tfloat near = 0.0f;\n\tfloat far = INFINITY;\n\t\n\tfor (int i = 0; i < metadata_count; i++) {\n\t\tname_t field = file.read_name();\n\n\t\tif (field == \"lightmap\") {\n\t\t\t// I think that we just ignore this for now\n\t\t\tfile.read_int32();\n\t\t\tfile.read_int32();\n\t\t} else if (field == \"near\") {\n\t\t\tnear = file.read_float32();\n\t\t} else if (field == \"far\") {\n\t\t\tfar = file.read_float32();\n\t\t} else if (field == \"origin\") {\n\t\t\torigin = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\t} else {\n\t\t\tstd::cout << \"File\" << model_path << \"has unrecognized metadata\" << field << \"skipping entry\" << std::endl;\n\t\t\tfile.skip_linebreak();\n\t\t}\n\t}\n\t\n\tstd::vector<name_t> materials;\n\tfor (int i = 0; i < mat_c; i++) {\n\t\tmaterials.push_back(file.read_name());\n\t}\n\t\n\tstd::vector<Vertex> vertices;\n\tfor (int i = 0; i < vrt_c; i++) {\n\t\tVertex v;\n\t\t\n\t\tv.pos = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.nrm = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.tex = {file.read_float32(), file.read_float32()};\n\t\tv.map = {file.read_float32(), file.read_float32()};\n\t\t\n\t\tvertices.push_back(v);\n\t}\n\t\n\tstd::vector<Triangle> triangles;\n\tfor (int i = 0; i < tri_c; i++) {\n\t\tTriangle t;\n\t\t\n\t\tt.v1 = file.read_int32();\n\t\tt.v2 = file.read_int32();\n\t\tt.v3 = file.read_int32();\n\t\t\n\t\tuint32_t mat = file.read_int32();\n\t\t\n\t\tvertices[t.v1].mat = mat;\n\t\tvertices[t.v2].mat = mat;\n\t\tvertices[t.v3].mat = mat;\n\t\t\n\t\ttriangles.push_back(t);\n\t}\n\t\n\tstd::cout << \"Loaded model \" << model_name << \", it has \" << vrt_c << \" verts, \" << tri_c << \" tris, \" << mat_c << \" materials.\" << std::endl;\n\t\n\t\n\t\n\tstd::vector<Vertex> merged_vertices;\t// similar vertices merged\n\tstd::map<int, int> merged_mapping;\t\t// mapping from unmerged to merged\n\t\n\tfor (int v = 0; v < vertices.size(); v++) {\n\t\tint merge_index = -1;\n\t\t\n\t\tfor (int m = 0; m < merged_vertices.size(); m++) {\n\t\t\tif (VertexCanMerge(vertices[v], merged_vertices[m])) {\n\t\t\t\tmerge_index = m;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (merge_index == -1) {\n\t\t\tmerge_index = merged_vertices.size();\n\t\t\tmerged_vertices.push_back(vertices[v]);\n\t\t}\n\t\t\n\t\tmerged_mapping[v] = merge_index;\n\t}\n\t\n\tint vert_decrease = vertices.size() - merged_vertices.size();\n\tfloat vert_decrese_prop = (float)vert_decrease / (float)vertices.size();\n\tstd::cout << \"Merged \" << vert_decrease << \" vertices, \" << vert_decrese_prop * 100.0f << \"% decrease.\" << std::endl;\n\t\n\tfor (auto& tri : triangles) {\n\t\ttri.v1 = merged_mapping[tri.v1];\n\t\ttri.v2 = merged_mapping[tri.v2];\n\t\ttri.v3 = merged_mapping[tri.v3];\n\t}\n\t\n\tstd::swap(merged_vertices, vertices);\n\t\n\t\n\t\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                                PACKER                                 +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\t// create atlas\n\txatlas::SetPrint(XAtlasPrint, true);\n\txatlas::Atlas* atlas = xatlas::Create();\n\n\t// add in vertices and indices\n\txatlas::MeshDecl meshDecl;\n\tmeshDecl.vertexCount = vertices.size();\n\tmeshDecl.vertexPositionData = &vertices[0].pos;\n\tmeshDecl.vertexPositionStride = sizeof(Vertex);\n\t\n\tmeshDecl.vertexNormalData = &vertices[0].nrm;\n\tmeshDecl.vertexNormalStride = sizeof(Vertex);\n\t\n\tmeshDecl.vertexUvData = &vertices[0].map;\n\tmeshDecl.vertexUvStride = sizeof(Vertex);\n\n\tmeshDecl.indexCount = triangles.size() * 3;\n\tmeshDecl.indexData = &triangles[0];\n\tmeshDecl.indexFormat = xatlas::IndexFormat::UInt32;\n\t\n\txatlas::AddMeshError error = xatlas::AddMesh(atlas, meshDecl, 0); // idk what 0 hint\n\tif (error != xatlas::AddMeshError::Success) {\n\t\txatlas::Destroy(atlas);\n\t\tstd::cout << \"Error packing: \" << xatlas::StringForEnum(error) << std::endl;\n\t\treturn 0;\n\t}\n\n\txatlas::AddMeshJoin(atlas);\n\n\txatlas::ChartOptions chart_options = xatlas::ChartOptions();\n\t//chart_options.useInputMeshUvs = true;\n\t//chart_options.maxCost = 100000.0f;\n\t//chart_options.maxIterations = 160;\n\txatlas::ComputeCharts(atlas, chart_options);\n\t\n\txatlas::PackOptions pack_options = xatlas::PackOptions();\n\t//pack_options.texelsPerUnit = 16.0f;\n\tpack_options.padding = lightmap_padding;\n\tpack_options.resolution = lightmap_size;\n\tpack_options.texelsPerUnit = lightmap_density;\n\t//pack_options.bilinear = true;\n\t//pack_options.blockAlign = true;\n\t//pack_options.bruteForce = true;\n\t//pack_options.rotateChartsToAxis = false;\n\t//pack_options.rotateCharts = false;\n\t\n\txatlas::PackCharts(atlas, pack_options);\n\t//xatlas::Generate(atlas, chart_options, pack_options);\n\n\t\n\t\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                             MODEL WRITER                              +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\tFile output(model_path.c_str(), File::WRITE);\n\t\n\tif (!output.is_open()) {\n\t\tstd::cout << \"Error writing to model file \" << model_path << std::endl;\n\t\treturn 0;\n\t}\n\n\tstd::cout << \"Lightmap packed! Writing to disk...\" << std::flush;\n\t\n\tconst xatlas::Mesh& new_mesh = atlas->meshes[0];\n\t\n\tint metadatas = 1; // at least lightmap size\n\t\n\tif (near != 0.0f) metadatas++;\n\tif (far != INFINITY) metadatas++;\n\tif (origin != vec3(0.0f, 0.0f, 0.0f)) metadatas++;\n\t\n\toutput.write_name(\"STMDLv1\");\n\t\n\toutput.write_uint32(new_mesh.vertexCount);\n\toutput.write_uint32(new_mesh.indexCount / 3);\n\toutput.write_uint32(mat_c);\n\toutput.write_int32(metadatas);\n\t\n\toutput.write_newline();\n\t\n\toutput.write_name(\"lightmap\");\n\toutput.write_int32(lightmap_size);\n\toutput.write_int32(lightmap_size);\n\t\n\toutput.write_newline();\n\t\n\tif (near != 0.0f) {\n\t\toutput.write_name(\"near\");\n\t\toutput.write_float32(near);\n\t\toutput.write_newline();\n\t}\n\t\n\tif (far != INFINITY) {\n\t\toutput.write_name(\"far\");\n\t\toutput.write_float32(far);\n\t\toutput.write_newline();\n\t}\n\t\n\tif (origin != vec3(0.0f, 0.0f, 0.0f)) {\n\t\toutput.write_name(\"origin\");\n\t\toutput.write_float32(origin.x);\n\t\toutput.write_float32(origin.y);\n\t\toutput.write_float32(origin.z);\n\t\toutput.write_newline();\n\t}\n\t\n\tfor (auto& mat : materials) {\n\t\toutput.write_name(mat);\n\t\toutput.write_newline();\n\t}\n\t\n\tfor (uint32_t i = 0; i < new_mesh.vertexCount; i++) {\n\t\tuint32_t input = new_mesh.vertexArray[i].xref;\n\t\t\n\t\toutput.write_float32(vertices[input].pos.x);\n\t\toutput.write_float32(vertices[input].pos.y);\n\t\toutput.write_float32(vertices[input].pos.z);\n\t\t\n\t\toutput.write_float32(vertices[input].nrm.x);\n\t\toutput.write_float32(vertices[input].nrm.y);\n\t\toutput.write_float32(vertices[input].nrm.z);\n\t\t\n\t\toutput.write_float32(vertices[input].tex.x);\n\t\toutput.write_float32(vertices[input].tex.y);\n\t\t\n\t\toutput.write_float32((new_mesh.vertexArray[i].uv[0]) / (float)atlas->width);\n\t\toutput.write_float32((new_mesh.vertexArray[i].uv[1]) / (float)atlas->height);\n\n\t\toutput.write_newline();\n\t}\n\t\n\tfor (uint32_t i = 0; i < new_mesh.indexCount; i++) {\n\t\toutput.write_uint32(new_mesh.indexArray[i]);\n\t\t\n\t\tif (i % 3 != 2) continue;\n\t\t\n\t\tuint32_t input = new_mesh.vertexArray[new_mesh.indexArray[i]].xref;\n\t\t\n\t\toutput.write_uint32(vertices[input].mat);\n\t\toutput.write_newline();\n\t}\n\t\n\tstd::cout << \"done!\" << std::endl;\n\t\n\treturn 0;\n}"
  },
  {
    "path": "devtools/trad/engine_libs.cpp",
    "content": "#include <framework/file.cpp>\n#include <platform/file.cpp>\n#include <framework/logging.cpp>\n#include <framework/system.cpp>\n#include <framework/uid.cpp>\n#include <framework/math.cpp>\n\n#include <platform/other.cpp>"
  },
  {
    "path": "devtools/trad/main.cpp",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n// Tramway SDK -- Radiosity tool\n\n// TODO:\n// - add option to use multiple worldcells in the same bake\n// - make program go vroom vroom\n// - add indirect lighting\n// - add emissive materials\n// - go through ray tracing gems and see if anything is useful in there\n\n#include <iostream>\n#include <vector>\n\n#include <framework/file.h>\n#include <framework/math.h>\n#include <templates/aabb.h>\n\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include <stb_image_write.h>\n\nusing namespace tram;\n\nstruct Entity;\n\nstruct Vertex {\n\tvec3 pos;\n\tvec3 nrm;\n\tvec2 tex;\n\tvec2 map;\n\tvec2 exp;\n\t\n\tbool operator==(const Vertex& other) {\n\t\treturn pos == other.pos && nrm == other.nrm && tex == other.tex && map == other.map;\n\t}\n};\n\nstruct Triangle {\n\tVertex v1, v2, v3;\n\tname_t mat;\n};\n\nstruct Texel {\n\tvec3 color;\n};\n\nstruct SceneTriangle {\n\tTriangle triangle;\n\tEntity* entity;\n\t\n\t// * visibility matrix *\n\t// * skip matrix *\n\t\n\t// what else?\n};\n\nstruct Lightmap {\n\tLightmap() {\n\t\tt = nullptr;\n\t\tb = nullptr;\n\t\tw = 0;\n\t\th = 0;\n\t}\n\t\n\tLightmap(int width, int height) {\n\t\tt = new Texel[width*height];\n\t\tb = new bool[width*height];\n\t\tfor (int i = 0; i < width*height; i++) {\n\t\t\tt[i] = Texel {.color = {1.0f, 0.5f, 0.5f}};\n\t\t\tb[i] = false;\n\t\t}\n\t\tw = width;\n\t\th = height;\n\t}\n\t\n\tvoid Blit(int x, int y, Texel tex) {\n\t\tif (x < 0 || y < 0 || x >= w || y >= h) return;\n\t\tt[y*w+x] = tex;\n\t\tb[y*w+x] = true;\n\t}\n\t\n\tvoid BlitMix(int x, int y, Texel tex) {\n\t\tif (x < 0 || y < 0 || x >= w || y >= h) return;\n\t\tt[y*w+x].color += tex.color;\n\t\tb[y*w+x] = true;\n\t}\n\t\n\tTexel Sample(int x, int y) {\n\t\tif (x < 0) x = 0;\n\t\tif (y < 0) y = 0;\n\t\tif (x >= w) x = w - 1;\n\t\tif (y >= h) y = h - 1;\n\t\treturn t[y*w+x];\n\t}\n\t\n\tbool Blitted(int x, int y) {\n\t\tif (x < 0) x = 0;\n\t\tif (y < 0) y = 0;\n\t\tif (x >= w) x = w - 1;\n\t\tif (y >= h) y = h - 1;\n\t\treturn b[y*w+x];\n\t}\n\t\n\tvoid Fill(int pad) {\n\t\tfor (int x = 0; x < w; x++) {\n\t\t\tfor (int y = 0; y < h; y++) {\n\t\t\t\t\n\t\t\t\tif (Blitted(x, y)) continue;\n\t\t\t\t\n\t\t\t\tfloat nearest = INFINITY;\n\t\t\t\tvec3 color = {0.0f, 0.0f, 0.0f};\n\t\t\t\t\n\t\t\t\tfor (int s_x = x-pad; s_x < x+pad+1; s_x++) {\n\t\t\t\t\tfor (int s_y = y-pad; s_y < y+pad+1; s_y++) {\n\t\t\t\t\t\tif (!Blitted(s_x, s_y)) continue;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat dist = glm::distance(vec2(x, y), vec2(s_x, s_y));\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (dist < nearest) {\n\t\t\t\t\t\t\tnearest = dist;\n\t\t\t\t\t\t\tcolor = Sample(s_x, s_y).color;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (nearest == INFINITY) continue;\n\t\t\t\t\n\t\t\t\tt[y*w+x].color = color;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tTexel* t;\n\tbool* b;\n\tint w, h;\n};\n\nstruct Node {\n\tvec3 position;\n\t\n\tbool has_light;\n\tbool has_reflection;\n\t\n\tvec3 l00, l1m1, l10, l11, l2m2, l2m1, l20, l21, l22;\n};\n\nstruct Edge {\n\tuint32_t from;\n\tuint32_t to;\n};\n\nstruct Model {\n\tint lightmap_width;\n\tint lightmap_height;\n\t\n\tstd::vector<name_t> materials;\n\tstd::vector<Vertex> vertices;\n\tstd::vector<Triangle> triangles;\n};\n\nstruct Light {\n\tvec3 pos;\n\tvec3 color;\n\tfloat radius;\n\t\n\tuint32_t entity;\n};\n\nstruct Entity {\n\tvec3 pos;\n\tquat rot;\n\tuint32_t flags;\n\tuint32_t id;\n\tname_t name;\n\t\n\tname_t model_name;\n\tname_t lightmap_name;\n\t\n\tbool cast_shadows;\n\t\n\tModel model;\n\tLightmap lightmap;\n};\n\nvoid EvaluateSphericalHarmonic(Node& probe, vec3 direction, vec3 color) {\n\tconst float x = direction.x;\n\tconst float y = direction.y;\n\tconst float z = direction.z;\n\t\n\tconst float y00 = sqrtf(1.0f / 3.14f) / 2.0f;\n\n\tconst float y1m1 = sqrtf(3.0f / (4.0f * 3.14f)) * y;\n\tconst float y10 = sqrtf(3.0f / (4.0f * 3.14f)) * z;\n\tconst float y11 = sqrtf(3.0f / (4.0f * 3.14f)) * x;\n\n\tconst float y2m2 = (sqrtf(15.0f/3.14f) / 2.0f) * x * y;\n\tconst float y2m1 = (sqrtf(15.0f/3.14f) / 2.0f) * y * z;\n\tconst float y20 = (sqrtf(5.0f / 3.14f) / 4.0f) * (2.0f * z * z - x * x - y * y);\n\tconst float y21 = (sqrtf(15.0f/3.14f) / 2.0f) * x * z;\n\tconst float y22 = (sqrtf(15.0f/3.14f) / 4.0f) * (x * x - y * y);\n\t\n\tprobe.l00 += y00 * color;\n\t\n\tprobe.l1m1 += y1m1 * color;\n\tprobe.l10 += y10 * color;\n\tprobe.l11 += y11 * color;\n\t\n\tprobe.l2m2 += y2m2 * color;\n\tprobe.l2m1 += y2m1 * color;\n\tprobe.l20 += y20 * color;\n\tprobe.l21 += y21 * color;\n\tprobe.l22 += y22 * color;\n}\n\nModel LoadModel(const char* model_name) {\n\tstd::string model_path = \"data/models/\";\n\tmodel_path += (const char*)model_name;\n\tmodel_path += \".stmdl\";\n\t\n\tFile file(model_path.c_str(), File::READ);\n\t\n\tif (!file.is_open()) {\n\t\tstd::cout << \"Error opening model file \" << model_path << std::endl;\n\t\tabort();\n\t}\n\t\n\tname_t header = file.read_name();\n\t\n\tif (header != \"STMDLv1\") {\n\t\tstd::cout << \"Unrecognized header \" << header << \" in \" << model_path << std::endl;\n\t\tabort();\n\t}\n\t\n\tint vrt_c = file.read_int32();\n\tint tri_c = file.read_int32();\n\tint mat_c = file.read_int32();\n\tint metadata_count = file.read_int32();\n\t\n\tint lightmap_width = 0;\n\tint lightmap_height = 0;\n\t\n\tfor (int i = 0; i < metadata_count; i++) {\n\t\tname_t field = file.read_name();\n\n\t\tif (field == \"lightmap\") {\n\t\t\tlightmap_width = file.read_int32();\n\t\t\tlightmap_height = file.read_int32();\n\t\t} else if (field == \"near\") {\n\t\t\tfile.read_float32();\n\t\t} else if (field == \"far\") {\n\t\t\tfile.read_float32();\n\t\t} else if (field == \"origin\") {\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t} else {\n\t\t\tstd::cout << \"File\" << model_path << \"has unrecognized metadata\" << field << \"skipping entry\" << std::endl;\n\t\t\tfile.skip_linebreak();\n\t\t}\n\t}\n\t\n\tstd::vector<name_t> materials;\n\tfor (int i = 0; i < mat_c; i++) {\n\t\tmaterials.push_back(file.read_name());\n\t}\n\t\n\tstd::vector<Vertex> vertices;\n\tfor (int i = 0; i < vrt_c; i++) {\n\t\tVertex v;\n\t\t\n\t\tv.pos = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.nrm = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.tex = {file.read_float32(), file.read_float32()};\n\t\tv.map = {file.read_float32(), file.read_float32()};\n\t\t\n\t\tvertices.push_back(v);\n\t}\n\t\n\tstd::vector<Triangle> triangles;\n\tfor (int i = 0; i < tri_c; i++) {\n\t\tTriangle t;\n\t\t\n\t\tt.v1 = vertices[file.read_int32()];\n\t\tt.v2 = vertices[file.read_int32()];\n\t\tt.v3 = vertices[file.read_int32()];\n\t\tt.mat = materials[file.read_int32()];\n\t\t\n\t\ttriangles.push_back(t);\n\t}\n\t\n\tstd::cout << \"Loaded model \" << model_name << \", it has \" << vrt_c << \" verts, \" << tri_c << \" tris, \" << mat_c << \" materials.\" << std::endl;\n\t\n\treturn {lightmap_width, lightmap_height, materials, vertices, triangles};\n}\n\nfloat GetTriangleArea(const vec2& p1, const vec2& p2, const vec2& p3) {\n\treturn 0.5 * (p1.x * (p2.y - p3.y) + p2.x * (p3.y - p1.y) + p3.x * (p1.y - p2.y));\n}\n\nvec3 GetBarycentric(Triangle tri, float x, float y) {\n\tconst vec2 v1 = tri.v2.map - tri.v1.map;\n\tconst vec2 v2 = tri.v3.map - tri.v1.map;\n\tconst vec2 v3 = vec2(x, y) - tri.v1.map;\n\tconst float dominator = v1.x * v2.y - v2.x * v1.y;\n\tconst float d2 = (v3.x * v2.y - v2.x * v3.y) / dominator;\n\tconst float d3 = (v1.x * v3.y - v3.x * v1.y) / dominator;\n\tconst float d1 = 1.0f - d2 - d3;\n\treturn {d1, d2, d3};\n}\n\nstatic vec3 TriangleAABBMin (Triangle t) {\n\treturn {\n\t\tt.v1.pos.x < t.v2.pos.x ? (t.v1.pos.x < t.v3.pos.x ? t.v1.pos.x : t.v3.pos.x) : (t.v2.pos.x < t.v3.pos.x ? t.v2.pos.x : t.v3.pos.x),\n\t\tt.v1.pos.y < t.v2.pos.y ? (t.v1.pos.y < t.v3.pos.y ? t.v1.pos.y : t.v3.pos.y) : (t.v2.pos.y < t.v3.pos.y ? t.v2.pos.y : t.v3.pos.y),\n\t\tt.v1.pos.z < t.v2.pos.z ? (t.v1.pos.z < t.v3.pos.z ? t.v1.pos.z : t.v3.pos.z) : (t.v2.pos.z < t.v3.pos.z ? t.v2.pos.z : t.v3.pos.z)\n\t};\n}\n\nstatic vec3 TriangleAABBMax (Triangle t) {\n\treturn {\n\t\tt.v1.pos.x > t.v2.pos.x ? (t.v1.pos.x > t.v3.pos.x ? t.v1.pos.x : t.v3.pos.x) : (t.v2.pos.x > t.v3.pos.x ? t.v2.pos.x : t.v3.pos.x),\n\t\tt.v1.pos.y > t.v2.pos.y ? (t.v1.pos.y > t.v3.pos.y ? t.v1.pos.y : t.v3.pos.y) : (t.v2.pos.y > t.v3.pos.y ? t.v2.pos.y : t.v3.pos.y),\n\t\tt.v1.pos.z > t.v2.pos.z ? (t.v1.pos.z > t.v3.pos.z ? t.v1.pos.z : t.v3.pos.z) : (t.v2.pos.z > t.v3.pos.z ? t.v2.pos.z : t.v3.pos.z)\n\t};\n}\n\nvec3 FindNearestIntersection(const AABBTree& tree,\n\t\t\t\t\t\t\t const std::vector<SceneTriangle>& tris,\n\t\t\t\t\t\t\t const vec3& pos,\n\t\t\t\t\t\t\t const vec3& dir,\n\t\t\t\t\t\t\t float distance_limit,\n\t\t\t\t\t\t\t bool frontface = true,\n\t\t\t\t\t\t\t bool backface = true,\n\t\t\t\t\t\t\t uint32_t* index = nullptr)\n{\n\tuint32_t nearest = tree.FindIntersection(pos, dir, distance_limit, [&](vec3 pos, vec3 dir, uint32_t index) {\n\t\tif (!backface || !frontface) {\n\t\t\tvec3 v1v2 = glm::normalize(tris[index].triangle.v2.pos - tris[index].triangle.v1.pos);\n\t\t\tvec3 v1v3 = glm::normalize(tris[index].triangle.v3.pos - tris[index].triangle.v1.pos);\n\t\t\t\n\t\t\tvec3 normal = glm::cross(v1v2, v1v3);\n\t\t\t\n\t\t\tfloat facing = glm::dot(normal, dir);\n\t\t\t\n\t\t\t// hit backface\n\t\t\tif (facing > 0.0f && !backface) return INFINITY;\n\t\t\t\n\t\t\t// hit frontface\n\t\t\tif (facing < 0.0f && !frontface) return INFINITY;\n\t\t}\n\t\t\n\t\tvec3 intersection = RayTriangleIntersection(pos,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdir,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttris[index].triangle.v1.pos,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttris[index].triangle.v2.pos,\n\t\t\t\t\t\t\t\t\t\t\t\t\ttris[index].triangle.v3.pos);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\tif (intersection.x == INFINITY) return INFINITY;\n\t\t\n\t\treturn glm::distance(intersection, pos);\n\t});\n\t\n\tif (nearest == (uint32_t)-1) {\n\t\treturn {INFINITY, INFINITY, INFINITY};\n\t}\n\t\n\tif (index) *index = nearest;\n\t\n\treturn RayTriangleIntersection(pos,\n\t\t\t\t\t\t\t\t   dir,\n\t\t\t\t\t\t\t\t   tris[nearest].triangle.v1.pos,\n\t\t\t\t\t\t\t\t   tris[nearest].triangle.v2.pos,\n\t\t\t\t\t\t\t\t   tris[nearest].triangle.v3.pos);\n};\n\nvoid MovePositionTowardTriangleCenter(const AABBTree& tree,\n\t\t\t\t\t\t\t\t\t  const std::vector<SceneTriangle>& tris,\n\t\t\t\t\t\t\t\t\t  vec3& pos,\n\t\t\t\t\t\t\t\t\t  const vec3& normal,\n\t\t\t\t\t\t\t\t\t  vec3 mid)\n{\n\t// check if clear path to center\n\tvec3 mid_dir = glm::normalize(mid - pos);\n\tfloat mid_dist = glm::distance(mid, pos);\n\t\n\t// I have no idea what this does but okay\n\tpos += 0.05f * mid_dir;\n\t\n\tuint32_t intersect;\n\t\n\tvec3 nearest = FindNearestIntersection(tree, tris, pos, mid_dir, mid_dist, true, true, &intersect);\n\tif (glm::distance(nearest, pos) < mid_dist) {\n\t\t//return {1.0f, 0.0f, 0.0f};\n\t\tpos += mid_dir * 0.3f;\n\t\t//pos = nearest + 0.01f * normal;\n\t\t//pos += mid_dir * (glm::distance(nearest, pos) + 0.02f);\n\t\t//pos = nearest + (mid_dir * 0.1f);\n\t}\n}\n\nvoid MovePositionOutsideMesh(const AABBTree& tree,\n\t\t\t\t\t\t\t const std::vector<SceneTriangle>& tris,\n\t\t\t\t\t\t\t vec3& pos,\n\t\t\t\t\t\t\t const vec3& normal,\n\t\t\t\t\t\t\t const vec3& tangent,\n\t\t\t\t\t\t\t const vec3& bitangent,\n\t\t\t\t\t\t\t float bias = 0.0f)\n{\n\tconst float dir_amount = 0.25f;\n\t\n\tvec3 dir1 = tangent;\n\tvec3 dir2 = -tangent;\n\tvec3 dir3 = bitangent;\n\tvec3 dir4 = -bitangent;\n\t\n\tuint32_t nearest1 = -1;\n\tuint32_t nearest2 = -1;\n\tuint32_t nearest3 = -1;\n\tuint32_t nearest4 = -1;\n\t\n\t// we want the find the furthest intersection, so we're reversing the ray\n\t// direction and casting them from the other end\n\tvec3 point1 = FindNearestIntersection(tree, tris, pos + dir_amount * dir1, -dir1, dir_amount + bias, true, false, &nearest1);\n\tvec3 point2 = FindNearestIntersection(tree, tris, pos + dir_amount * dir2, -dir2, dir_amount + bias, true, false, &nearest2);\n\tvec3 point3 = FindNearestIntersection(tree, tris, pos + dir_amount * dir3, -dir3, dir_amount + bias, true, false, &nearest3);\n\tvec3 point4 = FindNearestIntersection(tree, tris, pos + dir_amount * dir4, -dir4, dir_amount + bias, true, false, &nearest4);\n\t\n\tfloat total_point = 0.0f;\n\tvec3 total_normal = {0.0f, 0.0f, 0.0f};\n\tint intersects = 0;\n\t\n\tif (float dist = glm::distance(pos, point1); dist < dir_amount + bias) {\n\t\ttotal_point += dist;\n\t\tintersects++;\n\t\t\n\t\tvec3 v1v2 = glm::normalize(tris[nearest1].triangle.v2.pos - tris[nearest1].triangle.v1.pos);\n\t\tvec3 v1v3 = glm::normalize(tris[nearest1].triangle.v3.pos - tris[nearest1].triangle.v1.pos);\n\t\t\n\t\tvec3 intersect_normal = glm::normalize(glm::cross(v1v2, v1v3));\n\t\t\n\t\tif (glm::dot(intersect_normal, normal) > -0.1f) {\n\t\t\ttotal_normal += intersect_normal;\n\t\t}\n\t}\n\t\n\tif (float dist = glm::distance(pos, point2); dist < dir_amount + bias) {\n\t\ttotal_point += dist;\n\t\tintersects++;\n\t\t\n\t\tvec3 v1v2 = glm::normalize(tris[nearest2].triangle.v2.pos - tris[nearest2].triangle.v1.pos);\n\t\tvec3 v1v3 = glm::normalize(tris[nearest2].triangle.v3.pos - tris[nearest2].triangle.v1.pos);\n\t\t\n\t\tvec3 intersect_normal = glm::normalize(glm::cross(v1v2, v1v3));\n\t\t\n\t\tif (glm::dot(intersect_normal, normal) > -0.1f) {\n\t\t\ttotal_normal += intersect_normal;\n\t\t}\n\t}\n\t\n\tif (float dist = glm::distance(pos, point3); dist < dir_amount + bias) {\n\t\ttotal_point += dist;\n\t\tintersects++;\n\t\t\n\t\tvec3 v1v2 = glm::normalize(tris[nearest3].triangle.v2.pos - tris[nearest3].triangle.v1.pos);\n\t\tvec3 v1v3 = glm::normalize(tris[nearest3].triangle.v3.pos - tris[nearest3].triangle.v1.pos);\n\t\t\n\t\tvec3 intersect_normal = glm::normalize(glm::cross(v1v2, v1v3));\n\t\t\n\t\tif (glm::dot(intersect_normal, normal) > -0.1f) {\n\t\t\ttotal_normal += intersect_normal;\n\t\t}\n\t}\n\t\n\tif (float dist = glm::distance(pos, point4); dist < dir_amount + bias) {\n\t\ttotal_point += dist;\n\t\tintersects++;\n\t\t\n\t\tvec3 v1v2 = glm::normalize(tris[nearest4].triangle.v2.pos - tris[nearest4].triangle.v1.pos);\n\t\tvec3 v1v3 = glm::normalize(tris[nearest4].triangle.v3.pos - tris[nearest4].triangle.v1.pos);\n\t\t\n\t\tvec3 intersect_normal = glm::normalize(glm::cross(v1v2, v1v3));\n\t\t\n\t\tif (glm::dot(intersect_normal, normal) > -0.1f) {\n\t\t\ttotal_normal += intersect_normal;\n\t\t}\n\t}\n\t\n\tif (!intersects) return;\n\t\n\t\n\tfloat point_div = intersects > 2 ? 2 : intersects;\n\t\n\tpos += (total_normal/(float)intersects) * (total_point/point_div + 0.1f);\n}\n\nbool IsTexelInShadow(const AABBTree& tree,\n\t\t\t\t\t const std::vector<SceneTriangle>& tris,\n\t\t\t\t\t const vec3& texel_pos,\n\t\t\t\t\t const vec3& light_pos)\n{\n\tfloat light_dist = glm::distance(light_pos, texel_pos);\n\t\n\tvec3 light_dir = glm::normalize(light_pos - texel_pos);\n\t\n\tvec3 nearest = FindNearestIntersection(tree, tris, texel_pos, light_dir, light_dist);\n\n\treturn light_dist > glm::distance(nearest, texel_pos);\n}\n\nvec3 FindTexelColorFromLight(const Light& light, const vec3& pos, const vec3& normal) {\n\tconst float light_dist = glm::distance(light.pos, pos);\n\treturn light.color * glm::max(glm::dot(normal, glm::normalize(light.pos - pos)), 0.0f) * (1.0f / (1.0f + 0.09f * light_dist + 0.032f * (light_dist * light_dist)));\n}\n\nstruct RasterParams {\n\tint l_w;\n\tint l_h;\n\tfloat expand;\n};\n\nvoid RasterizeTriangle(RasterParams p, Triangle tri, auto raster_f) {\n\t\n\t// expand the triangle a little bit\n\tfloat dist = p.expand * ( 1.0f / (float)p.l_h );\n\t\n\tvec2 mid = (tri.v1.map + tri.v2.map + tri.v3.map) / 3.0f;\n\t\n\ttri.v1.exp = tri.v1.map + dist * glm::sign(tri.v1.map - mid);\n\ttri.v2.exp = tri.v2.map + dist * glm::sign(tri.v2.map - mid);\n\ttri.v3.exp = tri.v3.map + dist * glm::sign(tri.v3.map - mid);\n\t\n\ttri.v1.exp = glm::clamp(tri.v1.exp, 0.0f, 1.0f);\n\ttri.v2.exp = glm::clamp(tri.v2.exp, 0.0f, 1.0f);\n\ttri.v3.exp = glm::clamp(tri.v3.exp, 0.0f, 1.0f);\n\t\n\t// find the lowest, highest and middle vertices\n\tVertex lowest = tri.v1;\n\tif (tri.v1.map.y < lowest.map.y) lowest = tri.v1;\n\tif (tri.v2.map.y < lowest.map.y) lowest = tri.v2;\n\tif (tri.v3.map.y < lowest.map.y) lowest = tri.v3;\n\t\n\tVertex highest = tri.v1;\n\tif (tri.v1.map.y > highest.map.y) highest = tri.v1;\n\tif (tri.v2.map.y > highest.map.y) highest = tri.v2;\n\tif (tri.v3.map.y > highest.map.y) highest = tri.v3;\n\t\n\t// this should not happen!\n\t//if (lowest == highest) std::cout << \"what the fuck\" << std::endl;\n\tif (lowest == highest) return;\n\t\n\tVertex middle;\n\tif ((tri.v2 == lowest || tri.v3 == lowest) && (tri.v2 == highest || tri.v3 == highest)) middle = tri.v1;\n\tif ((tri.v1 == lowest || tri.v3 == lowest) && (tri.v1 == highest || tri.v3 == highest)) middle = tri.v2;\n\tif ((tri.v1 == lowest || tri.v2 == lowest) && (tri.v1 == highest || tri.v2 == highest)) middle = tri.v3;\n\t\n\t// position of vertices on the raster image\n\tint lowest_y = floor(lowest.exp.y * (float)p.l_h);\n\tint middle_y = floor(middle.exp.y * (float)p.l_h);\n\tint highest_y = floor(highest.exp.y * (float)p.l_h);\n\t\n\tint lowest_x = floor(lowest.exp.x * (float)p.l_w);\n\tint middle_x = floor(middle.exp.x * (float)p.l_w);\n\tint highest_x = floor(highest.exp.x * (float)p.l_w);\n\t\n\t// compute raster line counts\n\tint low_high_lines = highest_y - lowest_y;\n\tint low_mid_lines = middle_y - lowest_y;\n\tint mid_high_lines = highest_y - middle_y;\n\t\n\t// compute raster directions\n\tfloat low_high_dir = (float)(highest_x - lowest_x) / (float)low_high_lines;\n\tfloat low_mid_dir = (float)(middle_x - lowest_x) / (float)low_mid_lines;\n\tfloat mid_high_dir = (float)(highest_x - middle_x) / (float)mid_high_lines;\n\t\n\tfloat left_pos = lowest_x;\n\tfloat right_pos = lowest_x;\n\t\n\t// stupid bug fix\n\tif (!low_mid_lines) {\n\t\tleft_pos = lowest_x;\n\t\tright_pos = middle_x;\n\t}\n\t\n\tfor (int row = lowest_y; row < middle_y; row++) {\n\t\tleft_pos += low_high_dir;\n\t\tright_pos += low_mid_dir;\n\n\t\tint from = left_pos;\n\t\tint to = right_pos;\n\t\t\n\t\tif (from > to) std::swap(from, to);\n\t\t\n\t\tfor (int col = from; col < to; col++) {\n\t\t\tvec3 d = GetBarycentric(tri, ((float)col + 0.5f) / (float)p.l_w, ((float)row + 0.5f) / (float)p.l_h);\n\t\t\t\n\t\t\tconst float thr = 1.0f/3.0f;\n\t\t\t\n\t\t\tvec3 pos = d.x * tri.v1.pos + d.y * tri.v2.pos + d.z * tri.v3.pos;\n\t\t\tvec3 nrm = d.x * tri.v1.nrm + d.y * tri.v2.nrm + d.z * tri.v3.nrm;\n\t\t\tvec3 mid = thr * tri.v1.pos + thr * tri.v2.pos + thr * tri.v3.pos;\n\t\t\t\n\t\t\traster_f(col, row, pos, nrm, mid);\n\t\t}\n\t}\n\t\n\tfor (int row = middle_y; row < highest_y; row++) {\n\t\tleft_pos += low_high_dir;\n\t\tright_pos += mid_high_dir;\n\t\t\n\t\tint from = left_pos;\n\t\tint to = right_pos;\n\t\t\n\t\tif (from > to) std::swap(from, to);\n\n\t\tfor (int col = from; col < to; col++) {\n\t\t\tvec3 d = GetBarycentric(tri, ((float)col + 0.5f) / (float)p.l_w, ((float)row + 0.5f) / (float)p.l_h);\n\t\t\t\n\t\t\tconst float thr = 1.0f/3.0f;\n\t\t\t\n\t\t\tvec3 pos = d.x * tri.v1.pos + d.y * tri.v2.pos + d.z * tri.v3.pos;\n\t\t\tvec3 nrm = d.x * tri.v1.nrm + d.y * tri.v2.nrm + d.z * tri.v3.nrm;\n\t\t\tvec3 mid = thr * tri.v1.pos + thr * tri.v2.pos + thr * tri.v3.pos;\n\t\t\t\n\t\t\traster_f(col, row, pos, nrm, mid);\n\t\t}\n\t}\n}\n\nint main(int argc, const char** argv) {\n\tstbi_flip_vertically_on_write(true);\n\n\tstd::cout << \"Tramway SDK -- Radiosity lightmapper v0.1.1\" << std::endl;\n\t\n\tif (argc < 2 || argc == 2 && strcmp(argv[1], \"--help\") == 0) {\n\t\tstd::cout << \"\\nUsage: trad <worldcell> [options]\";\n\t\t\n\t\tstd::cout << \"\\n\\nArguments:\\n\";\n\t\tstd::cout << \"  <worldcell>\\t\\tName of the worldcell which will be lightmapped\";\n\t\t\n\t\tstd::cout << \"\\n\\nOptions:\\n\";\n\t\tstd::cout << \"  -coords\\t\\tSets the color values of the lightmap to texel\\n\\t\\t\\tposition in 3D space instead of light value\\n\";\n\t\t\n\t\tstd::cout << \"  -verts\\t\\tDraws in a single pixel for each triangle vertex into\\n\\t\\t\\tthe lightmap\\n\";\n\t\t\n\t\tstd::cout << \"  -pad <pixels>\\t\\tAdds a border around each triangle\\n\";\n\t\tstd::cout << \"  -exp <pixels>\\t\\tExpands each triangle\\n\";\n\t\tstd::cout << \"  -scale <integer>\\tScales down lightmap\\n\";\n\t\tstd::cout << \"  -fast\\t\\t\\tDisables extra raycasts\\n\";\n\t\tstd::cout << \"  -fullbright\\t\\tSets each triangle's color to white\\n\";\n\t\tstd::cout << \"  -ambient <samples> <length>\\t\\tSets ambient occlusion samples and ray length\\n\";\n\t\tstd::cout << \"  -worldspawn <name>\\tTreats the named entity as a worldspawn and allows it\\n\\t\\t\\tto cast shadows\\n\";\n\t\t\n\t\tstd::cout << \"\\nThis program should be run from project root, e.g. the \";\n\t\tstd::cout << \"worldcell file should be\\naccessible through data/worldcells.cell relative path.\";\n\t\t\n\t\t\n\t\treturn 0;\n\t}\n\t\n\tconst char* worldcell = argv[1];\n\t\n\tbool paint_coords = false;\n\tbool paint_verts = false;\n\t\n\tbool force_fullbright = false;\n\t\n\tint ambient_occlusion = 0;\n\tfloat ambient_length = 1.0f;\n\t\n\tbool fast = false;\n\t\n\tint padding = 1;\n\tint expansion = 1;\n\tint scale = 1;\n\t\n\tstd::vector<std::string> worldspawns;\n\t\n\t// what we could do is we could add additional parameters, e.g.\n\t// - only entity to lightmap\n\t// - skip entity to lightmap\n\t// - override entity lightmap size\n\t\n\tfor (int i = 2; i < argc; i++) {\n\t\tif (strcmp(argv[i], \"-coords\") == 0) {\n\t\t\tpaint_coords = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-verts\") == 0) {\n\t\t\tpaint_verts = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-pad\") == 0) {\n\t\t\tpadding = atoi(argv[++i]);\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-exp\") == 0) {\n\t\t\texpansion = atoi(argv[++i]);\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-scale\") == 0) {\n\t\t\tscale = atoi(argv[++i]);\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-fast\") == 0) {\n\t\t\tfast = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-fullbright\") == 0) {\n\t\t\tforce_fullbright = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-ambient\") == 0) {\n\t\t\tambient_occlusion = atoi(argv[++i]);\n\t\t\tambient_length = atoi(argv[++i]);\n\t\t}\n\n\t\tif (strcmp(argv[i], \"-worldspawn\") == 0) {\n\t\t\tworldspawns.push_back(argv[++i]);\n\t\t}\n\t\t\n\t}\n\t\n\t\n\tstd::vector<Entity> entities;\n\tstd::vector<Light> lights;\n\t\n\tstd::vector<Node> nodes;\n\tstd::vector<Edge> edges;\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                           WORLDCELL LOADER                            +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\tstd::cout << \"Loading worldcell \" << worldcell << \"... \" << std::flush;\n\t\n\tstd::string worldcell_path = \"data/worldcells/\";\n\tworldcell_path += worldcell;\n\tworldcell_path += \".cell\";\n\t\n\t// this crashes if worldcell file doesn't exist\n\t// TODO: fix\n\tFile cell(worldcell_path.c_str(), File::READ | File::PAUSE_LINE);\n\t\n\tif (!cell.is_open()) {\n\t\tstd::cout << \"\\nError opening file: \" << worldcell_path << \"!\" <<std::endl;\n\t\treturn 0;\n\t}\n\t\n\tname_t file_version = cell.read_name(); cell.skip_linebreak();\n\t\n\tif (file_version != \"CELLv3\") {\n\t\tstd::cout << \"\\nUnrecognized worldcell file version: \" << file_version << \"!\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\twhile (cell.is_continue()) {\n\t\tname_t entity_type = cell.read_name();\n\t\t\n\t\t// right now I will hard-code the entity types directly into the program\n\t\t// later it might be a good idea to load them from the entity definition\n\t\t// file, when the format stabilizes\n\t\tif (entity_type == \"staticwobj\") {\n\t\t\tEntity entity;\n\t\t\t\n\t\t\tentity.id = cell.read_uint32();\n\t\t\tentity.name = cell.read_name();\n\t\t\tentity.flags = cell.read_uint64();\n\t\t\tentity.pos = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tentity.rot = vec3 {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tentity.model_name = cell.read_name();\n\t\t\tentity.lightmap_name = cell.read_name();\n\t\t\t\n\t\t\tentity.cast_shadows = true;\n\t\t\t\n\t\t\tentities.push_back(entity);\n\t\t}\n\t\t\n\t\tif (entity_type == \"button\") {\n\t\t\tEntity entity;\n\t\t\t\n\t\t\tentity.id = cell.read_uint32();\n\t\t\tentity.name = cell.read_name();\n\t\t\tentity.flags = cell.read_uint32();\n\t\t\tentity.pos = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tentity.rot = vec3 {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\t\n\t\t\tcell.read_int32();\n\t\t\tentity.model_name = cell.read_name();\n\t\t\tentity.lightmap_name = cell.read_name();\n\t\t\t\n\t\t\tentity.cast_shadows = false;\n\t\t\t\n\t\t\tentities.push_back(entity);\n\t\t}\n\t\t\n\t\tif (entity_type == \"light\") {\n\t\t\tLight light;\n\t\t\t\n\t\t\tlight.entity = cell.read_uint32();\n\t\t\tcell.read_name();\n\t\t\tcell.read_uint32();\n\t\t\tlight.pos = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tcell.read_float32(); cell.read_float32(); cell.read_float32();\n\t\t\tlight.color = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tlight.radius = cell.read_float32();\n\n\t\t\tlights.push_back(light);    \n\t\t}\n\t\t\n\t\tcell.skip_linebreak();\n\t}\n\n\tstd::cout << \"done!\" << std::endl;\n\t\n\t\n\tstd::string light_path = std::string(\"data/worldcells/\") + worldcell + \".light\";\n    \n    File file(light_path.c_str(), File::READ);\n    \n    if (!file.is_open()) {\n        Log(\"Light graph not found: {}\", light_path);\n    } else if (name_t header = file.read_name(); header != \"LIGHTGRAPHv1\") {\n        Log(\"Light unrecognized header '{}' in file: {}\", header, light_path);\n    } else while (file.is_continue()) {\n        name_t record_type = file.read_name();\n        \n        if (record_type == \"node\") {\n            Node new_node;\n            \n            new_node.position = {file.read_float32(),\n                                 file.read_float32(),\n                                 file.read_float32()};\n            \n            new_node.has_light = file.read_uint32();\n            new_node.has_reflection = file.read_uint32();\n            \n\t\t\tnew_node.l00 = {0.0f, 0.0f, 0.0f};\n\t\t\t\n\t\t\tnew_node.l1m1 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l10 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l11 = {0.0f, 0.0f, 0.0f};\n\t\t\t\n\t\t\tnew_node.l2m2 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l2m1 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l20 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l21 = {0.0f, 0.0f, 0.0f};\n\t\t\tnew_node.l22 = {0.0f, 0.0f, 0.0f};\n\t\t\t\n            nodes.push_back(new_node);\n            \n        } else if (record_type == \"edge\") {\n            const uint32_t from_node_index = file.read_uint32();\n            const uint32_t to_node_index = file.read_uint32();\n            \n            edges.push_back({from_node_index, to_node_index});\n            \n        } else if (record_type == \"light\") {\n\t\t\tfile.read_uint32();\n\t\t\tfile.read_uint32();\n\t\t\tfile.read_name();\n\t\t\t\n\t\t\tfile.read_float32();\n\t\t\t\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\t\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n\t\t\tfile.read_float32();\n        } else {\n            std::cout << \"unknown light graph record: \" << record_type << std::endl;\n\t\t}\n    }\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                             MODEL LOADER                              +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\t// the scene tree is an acceleration structure for raycast queries.\n\t// the scene triangles vector will contain all triangles that will be\n\t// lightmapped.\n\tAABBTree scene_tree;\n\tstd::vector<SceneTriangle> scene_triangles;\n\t\n\t// load up all entity models\n\tfor (auto& entity: entities) {\n\t\t\n\t\t// load up the model\n\t\tentity.model = LoadModel(entity.model_name);\n\t\t\n\t\t// check if it contains lightmap dimensions\n\t\tif (entity.model.lightmap_width == 0 || entity.model.lightmap_height == 0) {\n\t\t\tstd::cout << \"Model \" << entity.model_name << \" has invalid lightmap dimensions.\" << std::endl;\n\t\t\tstd::cout << \"Width \" << entity.model.lightmap_width;\n\t\t\tstd::cout << \" and height \" << entity.model.lightmap_height << std::endl;\n\t\t\tstd::cout << \"Run tmap to set the lightmap size in the model!\" << std::endl;\n\t\t\treturn 1;\n\t\t}\n\t\t\n\t\tstd::cout << \"Loaded \" << entity.model_name << \" for bake with\";\n\t\tstd::cout << \" a size of \" << entity.model.lightmap_width;\n\t\tstd::cout << \" by \" << entity.model.lightmap_height << \" texels.\" << std::endl;\n\t\t\n\t}\n\t\n\t// allocate lightmaps and insert them into the scene tree\n\tfor (auto& entity: entities) {\n\t\t\n\t\t// allocate lightmap\n\t\tentity.lightmap = Lightmap(entity.model.lightmap_width, entity.model.lightmap_height);\n\t\t\n\t\t// compute local space -> world space matrix\n\t\tmat4 matrix = PositionRotationToMatrix(entity.pos, entity.rot);\n\t\t\n\t\t// insert triangles into scene tree\n\t\tfor (const auto& tri : entity.model.triangles) {\n\t\t\tSceneTriangle new_tri;\n\t\t\t\n\t\t\tnew_tri.triangle.v1.pos = matrix * vec4(tri.v1.pos, 1.0f);\n\t\t\tnew_tri.triangle.v2.pos = matrix * vec4(tri.v2.pos, 1.0f);\n\t\t\tnew_tri.triangle.v3.pos = matrix * vec4(tri.v3.pos, 1.0f);\n\t\t\t\n\t\t\tnew_tri.triangle.v1.nrm = matrix * vec4(tri.v1.nrm, 0.0f);\n\t\t\tnew_tri.triangle.v2.nrm = matrix * vec4(tri.v2.nrm, 0.0f);\n\t\t\tnew_tri.triangle.v3.nrm = matrix * vec4(tri.v3.nrm, 0.0f);\n\t\t\t\n\t\t\tnew_tri.triangle.v1.tex = tri.v1.tex;\n\t\t\tnew_tri.triangle.v2.tex = tri.v2.tex;\n\t\t\tnew_tri.triangle.v3.tex = tri.v3.tex;\n\t\t\t\n\t\t\tnew_tri.triangle.v1.map = tri.v1.map;\n\t\t\tnew_tri.triangle.v2.map = tri.v2.map;\n\t\t\tnew_tri.triangle.v3.map = tri.v3.map;\n\t\t\t\n\t\t\tnew_tri.triangle.mat = tri.mat;\n\t\t\t\n\t\t\tnew_tri.entity = &entity;\n\t\t\t\n\t\t\tif (entity.cast_shadows)\n\t\t\tscene_tree.InsertLeaf(scene_triangles.size(),\n\t\t\t\t\t\t\t\t  TriangleAABBMin(new_tri.triangle),\n\t\t\t\t\t\t\t\t  TriangleAABBMax(new_tri.triangle));\n\t\t\tscene_triangles.push_back(new_tri);\n\t\t}\n\t}\n\t\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                        VISIBILITY CALCULATIONS                        +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\t// TODO: implement\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                        RADIOSITY CALCULATIONS                         +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\tif (lights.size() == 0) {\n\t\tstd::cout << \"Scene contains no lights!\" << std::endl;\n\t\tforce_fullbright = true;\n\t}\n\t\n\t\n\t// okay, so I think that we'll keep the first pass as-is.\n\t// as in, the following iteration through all of the scene_triangles is the\n\t// first radiosity pass.\n\t// after that we'll insert some additional, optional passes\n\t\n\t\n\t\n\t\n\tint last_dots = -1;\n\t\n\t// iterate through each triangle in the lightmap and rasterize it\n\tfor (size_t i = 0; i < scene_triangles.size(); i++) {\n\t\tconst auto& tri = scene_triangles[i];\n\t\t\n\t\t// draw a progress bar in the command line\n\t\tfloat progress = (float)i / (float)scene_triangles.size();\n\t\tint dots = ceil(progress * 62.0f);\n\t\tif (last_dots != dots) {\n\t\t\tstd::cout << \"\\rComputing [\";\n\t\t\tfor (int k = 0; k < 62; k++) std::cout << (k < dots ? (k % 9 == 8 ? ':' : '.') : ' ');\n\t\t\tstd::cout << \"] \" << ceil(progress*100.0f) << \"%\" << std::flush;\n\t\t\tlast_dots = dots;\n\t\t}\n\t\t\n\t\tauto& l = tri.entity->lightmap;\n\t\t\n\t\tRasterParams image_params = {\n\t\t\tl.w / scale,\n\t\t\tl.h / scale,\n\t\t\t(float)expansion\n\t\t};\n\t\t\n\t\tif (paint_coords) {\n\t\t\t\n\t\t\t// rasterize triangle and set color to position\n\t\t\tRasterizeTriangle(image_params, tri.triangle, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\tl.Blit(col, row, {pos});\n\t\t\t});\n\t\t\t\n\t\t} else if (force_fullbright && !ambient_occlusion) {\n\t\t\t\n\t\t\t// rasterize triangle to fullbright\n\t\t\tRasterizeTriangle(image_params, tri.triangle, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\tl.Blit(col, row, {{1.0f, 1.0f, 1.0f}});\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t\n\t\t\t// rasterize triangle and set color to light value\n\t\t\tRasterizeTriangle(image_params, tri.triangle, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\t\n\t\t\t\tif (l.Blitted(col, row)) return;\n\t\t\t\t\n\t\t\t\tvec3 texel_color = {0.0f, 0.0f, 0.0f};\n\n\t\t\t\tvec3 v1v2 = glm::normalize(tri.triangle.v2.pos - tri.triangle.v1.pos);\n\t\t\t\tvec3 v1v3 = glm::normalize(tri.triangle.v3.pos - tri.triangle.v1.pos);\n\t\t\t\t\n\t\t\t\tvec3 normal = glm::normalize(glm::cross(v1v2, v1v3));\n\t\t\t\tvec3 tangent = glm::normalize(glm::cross(normal, v1v2));\n\t\t\t\tvec3 bitangent = v1v2;\n\t\t\t\t\n\t\t\t\t// we might get a collision with the triangle, on which the texel is located\n\t\t\t\t// on, so we move it off of the surface a little bit\n\t\t\t\tvec3 shadow_pos = pos + 0.05f * nrm;\n\t\t\t\tmid += 0.05f * nrm;\n\t\t\t\t\n\t\t\t\t//if (!fast) MovePositionTowardTriangleCenter(scene_tree, scene_triangles, shadow_pos, nrm, mid);\n\t\t\t\tif (!fast) MovePositionOutsideMesh(scene_tree, scene_triangles, shadow_pos, normal, tangent, bitangent, 0.0f);\n\t\t\t\t\n\t\t\t\tif (!force_fullbright) for (const auto& light : lights) {\n\t\t\t\t\tconst vec3 light_color = FindTexelColorFromLight(light, pos, nrm);\n\n\t\t\t\t\tconst float epsilon = 1.0f / 256.0f;\n\t\t\t\t\tif (light_color.x < epsilon && light_color.y < epsilon && light_color.z < epsilon) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (IsTexelInShadow(scene_tree, scene_triangles, shadow_pos, light.pos)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttexel_color += light_color;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (ambient_occlusion) {\n\t\t\t\t\tMovePositionOutsideMesh(scene_tree, scene_triangles, shadow_pos, normal, tangent, bitangent, 0.1f);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tfloat total_distance = 0.0f;\n\t\t\t\tfor (int n = 0; n < ambient_occlusion; n++) {\n\t\t\t\t\t\n\t\t\t\t\tconst float double_inv = (1.0f / (glm::golden_ratio<float>() * glm::golden_ratio<float>()));\n\t\t\t\t\tconst float golden = glm::two_pi<float>() * double_inv;\n\n\t\t\t\t\t// 1.0f is a scaling constant and 0.99f pulls the spiral in\n\t\t\t\t\t// so that it doesn't go coplanar with flat part of the hemisphere\n\t\t\t\t\tconst float r = 0.99f * (1.0f * sqrtf((float)n)) / (1.0f * sqrtf((float)ambient_occlusion));\n\t\t\t\t\tconst float theta = golden * (float)n;\n\t\t\t\t\t\n\t\t\t\t\tconst float x = r * sin(theta);\n\t\t\t\t\tconst float y = r * cos(theta);\n\t\t\t\t\tconst float z = sqrtf(1.0f - (x * x + y * y));\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tvec3 w = mat3(tangent, bitangent, normal) * vec3(x, y, z);\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\tvec3 nearest = FindNearestIntersection(scene_tree,\n\t\t\t\t\t\t\t scene_triangles,\n\t\t\t\t\t\t\t shadow_pos,\n\t\t\t\t\t\t\t w,\n\t\t\t\t\t\t\t ambient_length,\n\t\t\t\t\t\t\t true,\n\t\t\t\t\t\t\t true);\n\t\t\t\t\t\n\t\t\t\t\tfloat dist = glm::distance(shadow_pos, nearest);\n\t\t\t\t\tif (nearest.x == INFINITY || dist > ambient_length + 0.1f) {\n\t\t\t\t\t\ttotal_distance += 1.0f;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\ttotal_distance += dist / ambient_length;\n\t\t\t\t\t\n\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (ambient_occlusion) {\n\t\t\t\t\tfloat inv_occlusion = total_distance / (float)ambient_occlusion;\n\n\t\t\t\t\tif (force_fullbright) {\n\t\t\t\t\t\ttexel_color = {inv_occlusion, inv_occlusion, inv_occlusion};\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttexel_color *= inv_occlusion;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tl.Blit(col, row, {texel_color});\n\t\t\t});\n\t\t\t\n\t\t}\n\t\t\n\t\t// paint in green dots in the triangle vertex positions\n\t\tif (paint_verts) {\n\t\t\tl.Blit(tri.triangle.v1.map.x * (float)l.w, tri.triangle.v1.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t\tl.Blit(tri.triangle.v2.map.x * (float)l.w, tri.triangle.v2.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t\tl.Blit(tri.triangle.v3.map.x * (float)l.w, tri.triangle.v3.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t}\n\t\t\n\t}\n\t\n\tfor (auto& node : nodes) {\n\t\tint lights_added = 0;\n\t\t\n\t\tfor (auto& light : lights) {\n\t\t\tif (IsTexelInShadow(scene_tree, scene_triangles, node.position, light.pos)) continue;\n\t\t\t\n\t\t\tvec3 direction = glm::normalize(light.pos - node.position);\n\t\t\tvec3 color = FindTexelColorFromLight(light, node.position, direction);\n\t\t\t\n\t\t\tEvaluateSphericalHarmonic(node, direction, color);\n\t\t\t\n\t\t\tlights_added++;\n\t\t\t\n\t\t\t// we could use an analytical approach here, but I am too eepy\n\t\n\t\t\t// when we'll implement radiosity, we'll have to use the numerical \n\t\t\t// approach anyways, since radiosity is a finite element method\n\t\t\t\n\t\t\tfor (float x = 0.0f; x < 2.0f * 3.14f; x += 3.14f / 16.0f) {\n\t\t\t\tfor (float y = 0.0f; y < 2.0f * 3.14f; y += 3.14f / 16.0f) {\n\t\t\t\t\t//vec3 direction = glm::normalize(light.pos - node.position);\n\t\t\t\t\tvec3 direction = glm::normalize(vec3{sinf(x), sinf(y), cosf(x)});\n\t\t\t\t\tvec3 color = FindTexelColorFromLight(light, node.position, direction);\n\t\t\t\t\t\n\t\t\t\t\t//color = {0.1f, 0.1f, 0.1f};\n\t\t\t\t\t\n\t\t\t\t\tEvaluateSphericalHarmonic(node, direction, color);\n\t\t\t\t\t\n\t\t\t\t\tlights_added++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}\n\t\t\n\t\tif (lights_added) {\n\t\t\tnode.l00 *= (4.0f * 3.14f) / lights_added;\n\t\t\n\t\t\tnode.l1m1 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l10 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l11 *= (4.0f * 3.14f) / lights_added;\n\t\t\t\n\t\t\tnode.l2m2 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l2m1 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l20 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l21 *= (4.0f * 3.14f) / lights_added;\n\t\t\tnode.l22 *= (4.0f * 3.14f) / lights_added;\n\t\t}\n\t\t\n\t\t\n\t}\n\t\n\tstd::cout << \"\\rComputing... done!\\t\\t\\t\\t\\t\\t\\t      \" << std::endl;\n\t\n\tstd::cout << \"Filling gaps... \" << std::flush;\n\tfor (auto& entity: entities) entity.lightmap.Fill(padding);\n\tstd::cout << \"done!\" << std::endl;\n\t\n\tstd::cout << \"Saving to disk... \" << std::flush;\n\t\n\tfor (auto& entity: entities) {\n\t\t\n\t\tif (!entity.lightmap_name || entity.lightmap_name == \"fullbright\") continue;\n\t\t\n\t\tauto& l = entity.lightmap;\n\t\t\n\t\t// convert finished lightmap from floating-point to byte\n\t\tunsigned char* img = new unsigned char[l.w*l.h*3];\n\t\tfor (int i = 0; i < l.w*l.h; i++) {\n\t\t\tfloat r = l.t[i].color.x;\n\t\t\tfloat g = l.t[i].color.y;\n\t\t\tfloat b = l.t[i].color.z;\n\t\t\t\n\t\t\tif (r > 1.0f) r = 1.0f;\n\t\t\tif (g > 1.0f) g = 1.0f;\n\t\t\tif (b > 1.0f) b = 1.0f;\n\t\t\t\n\t\t\tif (r < 0.0f) r = 0.0f;\n\t\t\tif (g < 0.0f) g = 0.0f;\n\t\t\tif (b < 0.0f) b = 0.0f;\n\t\t\t\n\t\t\timg[i*3+0] = r * 255.0f;\n\t\t\timg[i*3+1] = g * 255.0f;\n\t\t\timg[i*3+2] = b * 255.0f;\n\t\t}\n\t\t\n\t\t// then write it to a png\n\t\tstd::string output_path = \"data/textures/\";\n\t\toutput_path += (const char*)entity.lightmap_name;\n\t\toutput_path += \".png\";\n\t\t\n\t\tif (!stbi_write_png(output_path.c_str(), l.w, l.h, 3, img, 0)) {\n\t\t\tstd::cout << \"failed! Couldn't write file to disk.\" << std::endl;\n\t\t\treturn 0;\n\t\t}\n\t}\n\t\n\tif (nodes.size()) {\n\t\tstd::string path = \"data/worldcells/\";\n\t\tpath += worldcell;\n\t\tpath += \".light\";\n\t\t\n\t\tFile file (path.c_str(), File::WRITE);\n\t\t\n\t\tif (!file.is_open()) {\n\t\t\tstd::cout << \"Can't open light file for writing: \" << path << std::endl;\n\t\t}\n\t\t\n\t\tfile.write_name(\"LIGHTGRAPHv1\");\n\t\t\n\t\tfile.write_newline();\n\t\tfile.write_newline();\n\t\t\n\t\t\n\t\tfor (auto& node : nodes) {\n\t\t\tfile.write_name(\"node\");\n\t\t\t\n\t\t\tfile.write_float32(node.position.x);\n\t\t\tfile.write_float32(node.position.y);\n\t\t\tfile.write_float32(node.position.z);\n\t\t\t\n\t\t\tfile.write_uint32(node.has_light);\n\t\t\tfile.write_uint32(node.has_reflection);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t}\n\t\t\n\t\tfile.write_newline();\n\t\tfile.write_newline();\n\t\t\n\t\tfor (auto& edge : edges) {\n\t\t\tfile.write_name(\"edge\");\n\t\t\t\n\t\t\tfile.write_uint32(edge.from);\n\t\t\tfile.write_uint32(edge.to);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t}\n\t\n\t\tfile.write_newline();\n\t\tfile.write_newline();\n\t\n\t\tfor (size_t i = 0; i < nodes.size(); i++) {\n\t\t\tauto& node = nodes[i];\n\t\t\t\n\t\t\tfile.write_name(\"light\");\n\t\t\t\n\t\t\tfile.write_uint32(i);\n\t\t\tfile.write_uint32(0);\n\t\t\t\n\t\t\tfile.write_name(\"r\");\n\t\t\t\n\t\t\tfile.write_float32(node.l00.x);\n\n\t\t\tfile.write_float32(node.l1m1.x);\n\t\t\tfile.write_float32(node.l10.x);\n\t\t\tfile.write_float32(node.l11.x);\n\n\t\t\tfile.write_float32(node.l2m2.x);\n\t\t\tfile.write_float32(node.l2m1.x);\n\t\t\tfile.write_float32(node.l20.x);\n\t\t\tfile.write_float32(node.l21.x);\n\t\t\tfile.write_float32(node.l22.x);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t\t\n\t\t\t\n\t\t\tfile.write_name(\"light\");\n\t\t\t\n\t\t\tfile.write_uint32(i);\n\t\t\tfile.write_uint32(0);\n\t\t\t\n\t\t\tfile.write_name(\"g\");\n\t\t\t\n\t\t\tfile.write_float32(node.l00.y);\n\n\t\t\tfile.write_float32(node.l1m1.y);\n\t\t\tfile.write_float32(node.l10.y);\n\t\t\tfile.write_float32(node.l11.y);\n\n\t\t\tfile.write_float32(node.l2m2.y);\n\t\t\tfile.write_float32(node.l2m1.y);\n\t\t\tfile.write_float32(node.l20.y);\n\t\t\tfile.write_float32(node.l21.y);\n\t\t\tfile.write_float32(node.l22.y);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t\t\n\t\t\tfile.write_name(\"light\");\n\t\t\t\n\t\t\tfile.write_uint32(i);\n\t\t\tfile.write_uint32(0);\n\t\t\t\n\t\t\tfile.write_name(\"b\");\n\t\t\t\n\t\t\tfile.write_float32(node.l00.z);\n\n\t\t\tfile.write_float32(node.l1m1.z);\n\t\t\tfile.write_float32(node.l10.z);\n\t\t\tfile.write_float32(node.l11.z);\n\n\t\t\tfile.write_float32(node.l2m2.z);\n\t\t\tfile.write_float32(node.l2m1.z);\n\t\t\tfile.write_float32(node.l20.z);\n\t\t\tfile.write_float32(node.l21.z);\n\t\t\tfile.write_float32(node.l22.z);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t\tfile.write_newline();\n\t\t}\n\t\t\n\t\tfor (auto& light : lights) {\n\t\t\tfile.write_name(\"entity\");\n\t\t\tfile.write_uint32(light.entity);\n\t\t\t\n\t\t\tfile.write_newline();\n\t\t}\n\t}\n\t\n\tstd::cout << \"done!\" << std::endl;\n\t\n\treturn 0;\n}"
  },
  {
    "path": "devtools/trad/main2.cpp",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n// Tramway SDK -- Radiosity tool\n\n// TODO:\n// - add option to use multiple worldcells in the same bake\n// - allow loading multiple models in the same bake\n// - make program go vroom vroom\n// - add indirect lighting\n// - add emissive materials\n\n#include <iostream>\n#include <vector>\n\n#include <framework/file.h>\n#include <framework/math.h>\n#include <templates/aabb.h>\n\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include <stb_image_write.h>\n\nusing namespace tram;\n\nstruct Vertex {\n\tvec3 pos;\n\tvec3 nrm;\n\tvec2 tex;\n\tvec2 map;\n\t\n\tbool operator==(const Vertex& other) {\n\t\treturn pos == other.pos && nrm == other.nrm && tex == other.tex && map == other.map;\n\t}\n};\n\nstruct Triangle {\n\tVertex v1, v2, v3;\n\tname_t mat;\n};\n\nstruct Texel {\n\tvec3 color;\n};\n\nstruct Lightmap {\n\tLightmap(int width, int height) {\n\t\tt = new Texel[width*height];\n\t\tb = new bool[width*height];\n\t\tfor (int i = 0; i < width*height; i++) {\n\t\t\t//t[i] = Texel {.color = {0.0f, 0.0f, 0.0f}};\n\t\t\tt[i] = Texel {.color = {1.0f, 0.5f, 0.5f}};\n\t\t\tb[i] = false;\n\t\t}\n\t\tw = width;\n\t\th = height;\n\t}\n\t\n\tvoid Blit(int x, int y, Texel tex) {\n\t\tif (x < 0 || y < 0 || x >= w || y >= h) return;\n\t\tt[y*w+x] = tex;\n\t\tb[y*w+x] = true;\n\t}\n\t\n\tvoid BlitMix(int x, int y, Texel tex) {\n\t\tif (x < 0 || y < 0 || x >= w || y >= h) return;\n\t\tt[y*w+x].color += tex.color;\n\t\tb[y*w+x] = true;\n\t}\n\t\n\tTexel Sample(int x, int y) {\n\t\tif (x < 0) x = 0;\n\t\tif (y < 0) y = 0;\n\t\tif (x >= w) x = w - 1;\n\t\tif (y >= h) y = h - 1;\n\t\treturn t[y*w+x];\n\t}\n\t\n\tbool Blitted(int x, int y) {\n\t\tif (x < 0) x = 0;\n\t\tif (y < 0) y = 0;\n\t\tif (x >= w) x = w - 1;\n\t\tif (y >= h) y = h - 1;\n\t\treturn b[y*w+x];\n\t}\n\t\n\tvoid Fill(int pad) {\n\t\tfor (int x = 0; x < w; x++) {\n\t\t\tfor (int y = 0; y < h; y++) {\n\t\t\t\t\n\t\t\t\tif (Blitted(x, y)) continue;\n\t\t\t\t\n\t\t\t\tfloat nearest = INFINITY;\n\t\t\t\tvec3 color = {0.0f, 0.0f, 0.0f};\n\t\t\t\t\n\t\t\t\tfor (int s_x = x-pad; s_x < x+pad+1; s_x++) {\n\t\t\t\t\tfor (int s_y = y-pad; s_y < y+pad+1; s_y++) {\n\t\t\t\t\t\tif (!Blitted(s_x, s_y)) continue;\n\t\t\t\t\t\t\n\t\t\t\t\t\tfloat dist = glm::distance(vec2(x, y), vec2(s_x, s_y));\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (dist < nearest) {\n\t\t\t\t\t\t\tnearest = dist;\n\t\t\t\t\t\t\tcolor = Sample(s_x, s_y).color;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (nearest == INFINITY) continue;\n\t\t\t\t\n\t\t\t\tt[y*w+x].color = color;\n\t\t\t\t\n\t\t\t\t/*\n\t\t\t\tvec3 color = {0.0f, 0.0f, 0.0f};\n\t\t\t\tint count = 0;\n\t\t\t\t\n\t\t\t\tfor (int s_x = x-1; s_x < x+3; s_x++) {\n\t\t\t\t\tfor (int s_y = y-1; s_y < y+3; s_y++) {\n\t\t\t\t\t\tif (!Blitted(s_x, s_y)) continue;\n\t\t\t\t\t\tcolor += Sample(s_x, s_y).color;\n\t\t\t\t\t\tcount++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!count) continue;\n\t\t\t\t\n\t\t\t\tt[y*w+x].color = color / (float)count;*/\n\t\t\t}\n\t\t}\n\t}\n\t\n\tTexel* t;\n\tbool* b;\n\tint w, h;\n};\n\nstruct Light {\n\tvec3 pos;\n\tvec3 color;\n\tfloat radius;\n};\n\nstruct Entity {\n\tvec3 pos;\n\tquat rot;\n\tname_t id;\n\tname_t name;\n\tname_t model;\n\tname_t lightmap;\n};\n\nvec3 GetBarycentric(Triangle tri, float x, float y) {\n\tconst vec2 v1 = tri.v2.map - tri.v1.map;\n\tconst vec2 v2 = tri.v3.map - tri.v1.map;\n\tconst vec2 v3 = vec2(x, y) - tri.v1.map;\n\tconst float dominator = v1.x * v2.y - v2.x * v1.y;\n\tconst float d2 = (v3.x * v2.y - v2.x * v3.y) / dominator;\n\tconst float d3 = (v1.x * v3.y - v3.x * v1.y) / dominator;\n\tconst float d1 = 1.0f - d2 - d3;\n\treturn {d1, d2, d3};\n}\n\nstatic vec3 TriangleAABBMin (Triangle t) {\n    return {\n        t.v1.pos.x < t.v2.pos.x ? (t.v1.pos.x < t.v3.pos.x ? t.v1.pos.x : t.v3.pos.x) : (t.v2.pos.x < t.v3.pos.x ? t.v2.pos.x : t.v3.pos.x),\n        t.v1.pos.y < t.v2.pos.y ? (t.v1.pos.y < t.v3.pos.y ? t.v1.pos.y : t.v3.pos.y) : (t.v2.pos.y < t.v3.pos.y ? t.v2.pos.y : t.v3.pos.y),\n        t.v1.pos.z < t.v2.pos.z ? (t.v1.pos.z < t.v3.pos.z ? t.v1.pos.z : t.v3.pos.z) : (t.v2.pos.z < t.v3.pos.z ? t.v2.pos.z : t.v3.pos.z)\n    };\n}\n\nstatic vec3 TriangleAABBMax (Triangle t) {\n    return {\n        t.v1.pos.x > t.v2.pos.x ? (t.v1.pos.x > t.v3.pos.x ? t.v1.pos.x : t.v3.pos.x) : (t.v2.pos.x > t.v3.pos.x ? t.v2.pos.x : t.v3.pos.x),\n        t.v1.pos.y > t.v2.pos.y ? (t.v1.pos.y > t.v3.pos.y ? t.v1.pos.y : t.v3.pos.y) : (t.v2.pos.y > t.v3.pos.y ? t.v2.pos.y : t.v3.pos.y),\n        t.v1.pos.z > t.v2.pos.z ? (t.v1.pos.z > t.v3.pos.z ? t.v1.pos.z : t.v3.pos.z) : (t.v2.pos.z > t.v3.pos.z ? t.v2.pos.z : t.v3.pos.z)\n    };\n}\n\nvec3 FindNearestIntersection(AABBTree& tree, std::vector<Triangle>& tris, vec3 pos, vec3 dir) {\n\tstd::vector<uint32_t> results;\n\ttree.FindIntersection(pos, dir, tree.root, results);\n\n\tvec3 closest = {INFINITY, INFINITY, INFINITY};\n\t\n\tfor (auto res : results) {\n\t\tvec3 intr = RayTriangleIntersection(pos, dir, tris[res].v1.pos, tris[res].v2.pos, tris[res].v3.pos);\n\t\tif (intr.x == INFINITY) continue;\t\t\t\n\t\t//if(glm::dot(tris[res].v1.nrm, dir) > -0.01f /*&& glm::distance(pos, intr) < 0.1f*/) continue;\n\t\tif (glm::distance(pos, intr) < glm::distance(pos, closest)) closest = intr;\n\t}\n\t\n\treturn closest;\n};\n\nvec3 FindBetween(AABBTree& tree, std::vector<Triangle>& tris, vec3 from, vec3 to) {\n\tstd::vector<uint32_t> results;\n\tvec3 dir = glm::normalize(to - from);\n\tfrom += dir * 0.1f;\n\ttree.FindIntersection(from, dir, tree.root, results);\n\n\tvec3 total_normal = {0.0f, 0.0f, 0.0f};\n\t\n\t\n\tfor (auto res : results) {\n\t\tvec3 intr = RayTriangleIntersection(from, dir, tris[res].v1.pos, tris[res].v2.pos, tris[res].v3.pos);\n\t\tif (intr.x == INFINITY) continue;\t\t\t\n\t\t\n\t\tif (glm::distance(from, intr) < glm::distance(from, to)) {\n\t\t\ttotal_normal += tris[res].v1.nrm;\n\t\t}\n\t}\n\t\n\tif (total_normal.x == 0.0f && total_normal.y == 0.0f && total_normal.z == 0.0f) {\n\t\treturn {0.0f, 0.0f, 0.0f};\n\t} else {\n\t\treturn glm::normalize(total_normal);\n\t}\n};\n\nvec3 FindTexelColorFromLights(AABBTree& tree, std::vector<Triangle>& tris, std::vector<Light>& lights, vec3 pos, vec3 normal, vec3 mid) {\n\tvec3 color = {0.0f, 0.0f, 0.0f};\n\t\n\t// we might get a collision with the triangle, on which the texel is located\n\t// on, so we move it off of the surface a little bit\n\tpos += 0.01f * normal;\n\tmid += 0.01f * normal;\n\t\n\t// check if clear path to center\n\tvec3 dir = FindBetween(tree, tris, pos, mid);\n\tif (!(dir.x == 0.0f && dir.y == 0.0f && dir.z == 0.0f)) {\n\t\t//return {1.0f, 0.0f, 0.0f};\n\t\t//pos += mid_dir * 0.3f;\n\t\t//pos = nearest + 0.01f * normal;\n\t\t//pos += mid_dir * (glm::distance(nearest, pos) + 0.02f);\n\t\tdir = glm::normalize(dir - (glm::dot(dir, normal) * normal));\n\t\t\n\t\tpos += dir * 0.2f;\n\t}\n\t\n\tfor (const auto& light : lights) {\n\t\tif (light.radius < glm::distance(pos, light.pos)) continue;\n\t\t\n\t\tvec3 light_dir = glm::normalize(light.pos - pos);\n\t\t\n\t\tvec3 nearest = FindNearestIntersection(tree, tris, pos, light_dir);\n\n\t\tif (glm::distance(nearest, pos) > glm::distance(light.pos, pos)) {\n\t\t\tfloat distance1 = glm::length(light.pos - pos);\n\t\t\tcolor += light.color * glm::max(glm::dot(normal, glm::normalize(light.pos - pos)), 0.0f) * (1.0f / (1.0f + 0.09f * distance1 + 0.032f * (distance1 * distance1)));\n\t\t} \n\t}\n\t\n\treturn color;\n};\n\nstruct RasterParams {\n\tint l_w;\n\tint l_h;\n\tint stretch_low_x;\n\tint stretch_low_y;\n\tint stretch_high_x;\n\tint stretch_high_y;\n};\n\nvoid RasterizeTriangle(RasterParams p, Triangle tri, auto raster_f) {\n\t// find the lowest, highest and middle vertices\n\tVertex lowest = tri.v1;\n\tif (tri.v1.map.y < lowest.map.y) lowest = tri.v1;\n\tif (tri.v2.map.y < lowest.map.y) lowest = tri.v2;\n\tif (tri.v3.map.y < lowest.map.y) lowest = tri.v3;\n\t\n\tVertex highest = tri.v1;\n\tif (tri.v1.map.y > highest.map.y) highest = tri.v1;\n\tif (tri.v2.map.y > highest.map.y) highest = tri.v2;\n\tif (tri.v3.map.y > highest.map.y) highest = tri.v3;\n\t\n\t// this should not happen!\n\t//if (lowest == highest) std::cout << \"what the fuck\" << std::endl;\n\tif (lowest == highest) return;\n\t\n\tVertex middle;\n\tif ((tri.v2 == lowest || tri.v3 == lowest) && (tri.v2 == highest || tri.v3 == highest)) middle = tri.v1;\n\tif ((tri.v1 == lowest || tri.v3 == lowest) && (tri.v1 == highest || tri.v3 == highest)) middle = tri.v2;\n\tif ((tri.v1 == lowest || tri.v2 == lowest) && (tri.v1 == highest || tri.v2 == highest)) middle = tri.v3;\n\t\n\t// position of vertices on the raster image\n\tint lowest_y = floor(lowest.map.y * (float)p.l_h);\n\tint middle_y = floor(middle.map.y * (float)p.l_h);\n\tint highest_y = floor(highest.map.y * (float)p.l_h);\n\t\n\tint lowest_x = floor(lowest.map.x * (float)p.l_w);\n\tint middle_x = floor(middle.map.x * (float)p.l_w);\n\tint highest_x = floor(highest.map.x * (float)p.l_w);\n\t\n\t// push\n\tif (middle_y == highest_y) {\n\t\t//middle_y++;\n\t\t//highest_y++;\n\t} else {\n\t\t//highest_y++;\n\t}\n\t\n\t\n\t\n\t\n\t// compute raster line counts\n\tint low_high_lines = highest_y - lowest_y;\n\tint low_mid_lines = middle_y - lowest_y;\n\tint mid_high_lines = highest_y - middle_y;\n\t\n\t// compute raster directions\n\tfloat low_high_dir = (float)(highest_x - lowest_x) / (float)low_high_lines;\n\tfloat low_mid_dir = (float)(middle_x - lowest_x) / (float)low_mid_lines;\n\tfloat mid_high_dir = (float)(highest_x - middle_x) / (float)mid_high_lines;\n\t\n\tfloat left_pos = lowest_x;\n\tfloat right_pos = lowest_x;\n\t\n\t// stupid bug fix\n\tif (!low_mid_lines) {\n\t\t\n\t\tleft_pos = lowest_x;\n\t\tright_pos = middle_x;\n\t\t\n\t\t/*if (lowest_x > middle_x) {\n\t\t\tleft_pos = lowest_x;\n\t\t\tright_pos = middle_x;\n\t\t} else {\n\t\t\tleft_pos = middle_x;\n\t\t\tright_pos = lowest_x;\n\t\t\t\n\t\t\tstd::swap(low_high_dir, mid_high_dir);\n\t\t}*/\n\t}\n\t\n\t\n\t\n\tfor (int row = lowest_y; row < middle_y; row++) {\n\t\tleft_pos += low_high_dir;\n\t\tright_pos += low_mid_dir;\n\n\t\tint from = left_pos;\n\t\tint to = right_pos;\n\t\t\n\t\tif (from > to) std::swap(from, to);\n\t\t\n\t\tfor (int col = from; col < /*<=*/ /* push */ to; col++) {\n\t\t\tvec3 d = GetBarycentric(tri, (float)col / (float)p.l_w, (float)row / (float)p.l_h);\n\t\t\t\n\t\t\tconst float thr = 1.0f/3.0f;\n\t\t\t\n\t\t\tvec3 pos = d.x * tri.v1.pos + d.y * tri.v2.pos + d.z * tri.v3.pos;\n\t\t\tvec3 nrm = d.x * tri.v1.nrm + d.y * tri.v2.nrm + d.z * tri.v3.nrm;\n\t\t\tvec3 mid = thr * tri.v1.pos + thr * tri.v2.pos + thr * tri.v3.pos;\n\t\t\t\n\t\t\traster_f(col, row, pos, nrm, mid);\n\t\t}\n\t}\n\t\n\tfor (int row = middle_y; row < highest_y; row++) {\n\t\tleft_pos += low_high_dir;\n\t\tright_pos += mid_high_dir;\n\t\t\n\t\tint from = left_pos;\n\t\tint to = right_pos;\n\t\t\n\t\tif (from > to) std::swap(from, to);\n\n\t\tfor (int col = from; col < /*<=*/ /* push */ to; col++) {\n\t\t\tvec3 d = GetBarycentric(tri, (float)col / (float)p.l_w, (float)row / (float)p.l_h);\n\t\t\t\n\t\t\tconst float thr = 1.0f/3.0f;\n\t\t\t\n\t\t\tvec3 pos = d.x * tri.v1.pos + d.y * tri.v2.pos + d.z * tri.v3.pos;\n\t\t\tvec3 nrm = d.x * tri.v1.nrm + d.y * tri.v2.nrm + d.z * tri.v3.nrm;\n\t\t\tvec3 mid = thr * tri.v1.pos + thr * tri.v2.pos + thr * tri.v3.pos;\n\t\t\t\n\t\t\traster_f(col, row, pos, nrm, mid);\n\t\t}\n\t}\n}\n\nint main(int argc, const char** argv) {\n\tstbi_flip_vertically_on_write(true);\n\tSetSystemLoggingSeverity(System::SYSTEM_PLATFORM, SEVERITY_WARNING);\n\t\n\tstd::cout << \"Tramway SDK -- Radiosity lightmapper\" << std::endl;\n\t\n\tif (argc < 5) {\n\t\tstd::cout << \"Usage: trad worldcell entity width height\";\n\t\tstd::cout << \"\\n\\tworldcell is the name of the worldcell, that contains the entity and\";\n\t\tstd::cout << \"\\n\\t\\tthe light with which it will be illuminated with\";\n\t\tstd::cout << \"\\n\\tentity is the name or the id of an entity, for which the lightmap will\";\n\t\tstd::cout << \"\\n\\t\\tbe baked\";\n\t\tstd::cout << \"\\n\\twidth is the width of the lightmap, in texels\";\n\t\tstd::cout << \"\\n\\theight is the height of the lightmap, in texels\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tconst char* entity = argv[2];\n\tconst char* worldcell = argv[1];\n\t\n\tint lightmap_width = atoi(argv[3]);\n\tint lightmap_height = atoi(argv[4]); \n\t\n\tbool paint_coords = false;\n\tbool paint_verts = false;\n\t\n\tbool force_fullbright = false;\n\t\n\t// stretch the raster a little bit, to help with color bleeding\n\t//int stretch_low_x = -1;\n\t//int stretch_low_y = -1;\n\t//int stretch_high_x = 2;\n\t//int stretch_high_y = 2;\n\tint padding = 1;\n\t\n\tif (lightmap_width < 1 || lightmap_height < 1) {\n\t\tstd::cout << \"Lightmap size has to be at least something!!! NOT NEGATIVE!!!\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tif ((lightmap_width & (lightmap_width - 1)) != 0 || (lightmap_height & (lightmap_height - 1)) != 0) {\n\t\tstd::cout << \"Lightmap size has to be a power of two.\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tfor (int i = 5; i < argc; i++) {\n\t\tif (strcmp(argv[i], \"-coords\") == 0) {\n\t\t\tpaint_coords = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-verts\") == 0) {\n\t\t\tpaint_verts = true;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-pad\") == 0) {\n\t\t\tpadding = atoi(argv[++i]);\n\t\t\t//stretch_low_x = ammount;\n\t\t\t//stretch_low_y = ammount;\n\t\t\t//stretch_high_x = ammount + 1;\n\t\t\t//stretch_high_y = ammount + 1;\n\t\t}\n\t\t\n\t\tif (strcmp(argv[i], \"-fullbright\") == 0) {\n\t\t\tforce_fullbright = true;\n\t\t}\n\t\t\n\t}\n\t\n\t\n\tstd::vector<Entity> entities;\n\tstd::vector<Light> lights;\n\t\n\t\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                           WORLDCELL LOADER                            +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\tstd::cout << \"Loading worldcell \" << worldcell << \"... \" << std::flush;\n\t\n\tstd::string worldcell_path = \"data/worldcells/\";\n\tworldcell_path += worldcell;\n\tworldcell_path += \".cell\";\n\t\n\tFile cell(worldcell_path.c_str(), MODE_READ | MODE_PAUSE_LINE);\n\t\n\tif (!cell.is_open()) {\n\t\tstd::cout << \"\\nError opening file: \" << worldcell_path << \"!\" <<std::endl;\n\t\treturn 0;\n\t}\n\t\n\tname_t file_version = cell.read_name(); cell.skip_linebreak();\n\t\n\tif (file_version != \"CELLv2\") {\n\t\tstd::cout << \"\\nUnrecognized worldcell file version: \" << file_version << \"!\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\twhile (cell.is_continue()) {\n\t\tname_t entity_type = cell.read_name();\n\t\t\n\t\t// right now I will hard-code the entity types directly into the program\n\t\t// later it might be a good idea to load them from the entity definition\n\t\t// file, when the format stabilizes\n\t\tif (entity_type == \"staticwobj\") {\n\t\t\tEntity entity;\n\t\t\t\n\t\t\tentity.id = cell.read_name();\n\t\t\tentity.name = cell.read_name();\n\t\t\tentity.pos = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tentity.rot = vec3 {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tentity.model = cell.read_name();\n\t\t\tentity.lightmap = cell.read_name();\n\t\t\t\n\t\t\tentities.push_back(entity);\n\t\t}\n\t\t\n\t\tif (entity_type == \"light\") {\n\t\t\tLight light;\n\t\t\t\n\t\t\tcell.read_name();\n\t\t\tcell.read_name();\n\t\t\tlight.pos = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tcell.read_float32(); cell.read_float32(); cell.read_float32();\n\t\t\tlight.color = {cell.read_float32(), cell.read_float32(), cell.read_float32()};\n\t\t\tlight.radius = cell.read_float32();\n\t\t\t\n\t\t\tlights.push_back(light);\t\n\t\t}\n\t\t\n\t\tcell.skip_linebreak();\n\t}\n\n\tstd::cout << \"done!\" << std::endl;\n\t\n\tint entity_index = -1;\n\tfor (int i = 0; i < entities.size(); i++) {\n\t\tif (entities[i].name == entity || entities[i].id == entity) entity_index = i;\n\t}\n\t\n\tif (entity_index == -1) {\n\t\tstd::cout << \"Could not find entity \" << entity << \" in worldcell!\"  << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tname_t model_name = entities[entity_index].model;\n\tname_t lightmap_name = entities[entity_index].lightmap;\n\tvec3 inv_pos = -entities[entity_index].pos;\n\tquat inv_rot = glm::inverse(entities[entity_index].rot);\n\t\n\tfor (auto& light : lights) {\n\t\tlight.pos = inv_pos + light.pos;\n\t\tlight.pos = inv_rot * light.pos;\n\t}\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                             MODEL LOADER                              +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\t\n\tstd::string model_path = \"data/models/\";\n\tmodel_path += (const char*)model_name;\n\tmodel_path += \".stmdl\";\n\t\n\tFile file(model_path.c_str(), MODE_READ);\n\t\n\tif (!file.is_open()) {\n\t\tstd::cout << \"Error opening model file \" << model_path << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tint vrt_c = file.read_int32();\n\tint tri_c = file.read_int32();\n\tint mat_c = file.read_int32();\n\t\t\n\tstd::vector<name_t> materials;\n\tfor (int i = 0; i < mat_c; i++) {\n\t\tmaterials.push_back(file.read_name());\n\t}\n\t\n\tstd::vector<Vertex> vertices;\n\tfor (int i = 0; i < vrt_c; i++) {\n\t\tVertex v;\n\t\t\n\t\tv.pos = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.nrm = {file.read_float32(), file.read_float32(), file.read_float32()};\n\t\tv.tex = {file.read_float32(), file.read_float32()};\n\t\tv.map = {file.read_float32(), file.read_float32()};\n\t\t\n\t\tvertices.push_back(v);\n\t}\n\t\n\tstd::vector<Triangle> triangles;\n\tfor (int i = 0; i < tri_c; i++) {\n\t\tTriangle t;\n\t\t\n\t\tt.v1 = vertices[file.read_int32()];\n\t\tt.v2 = vertices[file.read_int32()];\n\t\tt.v3 = vertices[file.read_int32()];\n\t\tt.mat = materials[file.read_int32()];\n\t\t\n\t\ttriangles.push_back(t);\n\t}\n\t\n\tstd::cout << \"Loaded model \" << model_name << \", it has \" << vrt_c << \" verts, \" << tri_c << \" tris, \" << mat_c << \" materials.\" << std::endl;\n\t\n\t\n\t// +-----------------------------------------------------------------------+\n\t// +                                                                       +\n\t// +                        RADIOSITY CALCULATIONS                         +\n\t// +                                                                       +\n\t// +-----------------------------------------------------------------------+\n\t\n\t// this tree here will contain all of the triangles in the scene, at the\n\t// time of the radiosity computation.\n\t// we will use it to determine if there is a clear path between two points\n\tAABBTree all_tree;\n\tstd::vector<Triangle> all_tris;\n\t\n\tfor (const auto& tri : triangles) {\n\t\tall_tree.InsertLeaf(all_tris.size(), TriangleAABBMin(tri), TriangleAABBMax(tri));\n\t\tall_tris.push_back(tri);\n\t}\n\t\n\t\n\t\n\tstd::cout << \"Baking a lightmap with \" << lights.size() <<\" lights, \" << lightmap_width << \" by \" << lightmap_height << \" texels in size.\" << std::endl;\n\t\n\tif (lights.size() == 0) {\n\t\tstd::cout << \"Scene contains no lights!\" << std::endl;\n\t\tforce_fullbright = true;\n\t}\n\t\n\tLightmap l(lightmap_width, lightmap_height);\n\t\t\n\tRasterParams image_params = {\n\t\tl.w,\n\t\tl.h,\n\t\t//stretch_low_x,\n\t\t//stretch_low_y,\n\t\t//stretch_high_x,\n\t\t//stretch_high_y\n\t\t0, 0, 0, 0\n\t};\n\t\n\tint last_dots = -1;\n\t\n\t// iterate through each triangle in the lightmap and rasterize it\n\tfor (size_t i = 0; i < triangles.size(); i++) {\n\t\tconst auto& tri = triangles[i];\n\t\t\n\t\t// draw a progress bar in the command line\n\t\tfloat progress = (float)i / (float)triangles.size();\n\t\tint dots = ceil(progress * 62.0f);\n\t\tif (last_dots != dots) {\n\t\t\tstd::cout << \"\\rComputing [\";\n\t\t\tfor (int k = 0; k < 62; k++) std::cout << (k < dots ? (k % 9 == 8 ? ':' : '.') : ' ');\n\t\t\tstd::cout << \"] \" << ceil(progress*100.0f) << \"%\" << std::flush;\n\t\t\tlast_dots = dots;\n\t\t}\n\t\t\n\t\t\n\t\tif (paint_coords) {\n\t\t\t\n\t\t\t// rasterize triangle and set color to position\n\t\t\tRasterizeTriangle(image_params, tri, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\tl.Blit(col, row, {pos});\n\t\t\t});\n\t\t\t\n\t\t} else if (force_fullbright) {\n\t\t\t\n\t\t\t// rasterize triangle to fullbright\n\t\t\tRasterizeTriangle(image_params, tri, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\tl.Blit(col, row, {{1.0f, 1.0f, 1.0f}});\n\t\t\t});\n\t\t\t\n\t\t} else {\n\t\t\t\n\t\t\t// rasterize triangle and set color to light value\n\t\t\tRasterizeTriangle(image_params, tri, [&](int col, int row, vec3 pos, vec3 nrm, vec3 mid){\n\t\t\t\tvec3 color = FindTexelColorFromLights(all_tree, all_tris, lights, pos, nrm, mid);\n\t\t\t\tl.Blit(col, row, {color});\n\t\t\t});\n\t\t\t\n\t\t}\n\t\t\n\t\t// paint in green dots in the triangle vertex positions\n\t\tif (paint_verts) {\n\t\t\tl.Blit(tri.v1.map.x * (float)l.w, tri.v1.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t\tl.Blit(tri.v2.map.x * (float)l.w, tri.v2.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t\tl.Blit(tri.v3.map.x * (float)l.w, tri.v3.map.y * (float)l.h, {{0.0f, 1.0f, 0.0f}});\n\t\t}\n\t\t\n\t}\n\t\n\tstd::cout << \"\\rComputing... done!\\t\\t\\t\\t\\t\\t\\t      \" << std::endl;\n\t\n\tstd::cout << \"Filling gaps... \" << std::flush;\n\tl.Fill(padding);\n\tstd::cout << \"done!\" << std::endl;\n\t\n\tstd::cout << \"Saving to disk... \" << std::flush;\n\t\n\t// convert finished lightmap from floating-point to byte\n\tunsigned char* img = new unsigned char[l.w*l.h*3];\n\tfor (int i = 0; i < l.w*l.h; i++) {\n\t\tfloat r = l.t[i].color.x;\n\t\tfloat g = l.t[i].color.y;\n\t\tfloat b = l.t[i].color.z;\n\t\t\n\t\tif (r > 1.0f) r = 1.0f;\n\t\tif (g > 1.0f) g = 1.0f;\n\t\tif (b > 1.0f) b = 1.0f;\n\t\t\n\t\tif (r < 0.0f) r = 0.0f;\n\t\tif (g < 0.0f) g = 0.0f;\n\t\tif (b < 0.0f) b = 0.0f;\n\t\t\n\t\timg[i*3+0] = r * 255.0f;\n\t\timg[i*3+1] = g * 255.0f;\n\t\timg[i*3+2] = b * 255.0f;\n\t}\n\t\n\t// then write it to a png\n\tstd::string output_path = \"data/textures/\";\n\toutput_path += (const char*)lightmap_name;\n\toutput_path += \".png\";\n\t\n\tif (!stbi_write_png(output_path.c_str(), l.w, l.h, 3, img, 0)) {\n\t\tstd::cout << \"failed! Couldn't write file to disk.\" << std::endl;\n\t\treturn 0;\n\t}\n\t\n\tstd::cout << \"done!\" << std::endl;\n\t\n\treturn 0;\n}"
  },
  {
    "path": "docs/cppapi/aabb_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/aabb.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">aabb.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2aabb_8h_source.html\">render/aabb.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"templates_2aabb_8h_source.html\">templates/aabb.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_light_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_light_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene light tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6625049c0bc385b24b326868ad74a779\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">aabbleaf_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a> (RenderComponent *component, vec3 position, quat rotation, vec3 scale)</td></tr>\n<tr class=\"memdesc:a6625049c0bc385b24b326868ad74a779\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">More...</a><br /></td></tr>\n<tr class=\"separator:a6625049c0bc385b24b326868ad74a779\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a> (aabbleaf_t leaf_id)</td></tr>\n<tr class=\"memdesc:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a leaf from.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">More...</a><br /></td></tr>\n<tr class=\"separator:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631b3af49e3238165b6005edf3608394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">QueryResponse&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a> (vec3 ray_pos, vec3 ray_dir, uint32_t mask)</td></tr>\n<tr class=\"memdesc:a631b3af49e3238165b6005edf3608394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Peforms a raycast and retrieves the nearest object.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">More...</a><br /></td></tr>\n<tr class=\"separator:a631b3af49e3238165b6005edf3608394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a> ()</td></tr>\n<tr class=\"memdesc:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the scene tree for a single frame.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">More...</a><br /></td></tr>\n<tr class=\"separator:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Octree&lt; Light * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb\">tram::Render::LightTree::light_tree</a> (&quot;light tree&quot;, 200)</td></tr>\n<tr class=\"separator:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a> (light_t light, vec3 pos, float dist)</td></tr>\n<tr class=\"memdesc:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a light to the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">More...</a><br /></td></tr>\n<tr class=\"separator:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a> (vec3 position, light_t *dest)</td></tr>\n<tr class=\"memdesc:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the 4 nearest lights to a given position.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a> (light_t light)</td></tr>\n<tr class=\"memdesc:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a light from the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">More...</a><br /></td></tr>\n<tr class=\"separator:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; Light &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8\">tram::Render::LightTree::light_list</a> (&quot;lighttree pool&quot;, 200)</td></tr>\n<tr class=\"separator:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/aabb_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/aabb.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">aabb.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"aabb_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/aabb_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/aabb.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">aabb.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"aabb_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"logging_8h.html\">framework/logging.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html\">   16</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">   18</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">AABBTree</a>() {}</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">~AABBTree</a>() {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        <span class=\"comment\">//RemoveHierarchy(root);</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>        <span class=\"comment\">// TODO: fix </span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">   24</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">GetAABBMin</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>; }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">   25</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">GetAABBMax</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>; }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">   29</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">InsertLeaf</a> (uint32_t value, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* new_node = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a> = value;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = min;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = max;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>            new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>            </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>) {</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>            }</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>            </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>            <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>            new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>            </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>) {</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>            }</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>            </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>            <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        }</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling_parent = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* new_parent = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        <span class=\"keywordflow\">if</span> (sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == sibling) {</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>            sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == sibling) {</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>            sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        }</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = sibling_parent;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(new_parent);</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    }</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">   92</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">RemoveLeaf</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* parent = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == node ? parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> : parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <span class=\"keywordflow\">if</span> (parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> != node &amp;&amp; parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> != node) {</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        }</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        <span class=\"keywordflow\">if</span> (parent == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>            <span class=\"keywordflow\">if</span> (parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == node) {</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>                parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                <span class=\"keywordflow\">if</span> (sibling) {</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                }</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                <span class=\"keywordflow\">if</span> (sibling) {</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>                }</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>            }</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>            </div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>            </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            </div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        </div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* grandparent = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordflow\">if</span> (grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == parent) {</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>            grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>            grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        }</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        </div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = grandparent;</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        </div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(grandparent);</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        </div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"keyword\">delete</span> parent;</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        </div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    }</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    </div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">  144</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>()) {</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        }</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    }</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    </div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">  154</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">FindIntersection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, std::vector&lt;uint32_t&gt;&amp; result)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordtype\">bool</span> is_node_intersect = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a>(ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        </div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">if</span> (is_node_intersect) {</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>            <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                result.push_back(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>);</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>) <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">FindIntersection</a> (ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, result);</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>) <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">FindIntersection</a> (ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, result);</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            }</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        }</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    }</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    </div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba\">  167</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba\">FindIntersection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <span class=\"keywordtype\">float</span> distance_limit, <span class=\"keyword\">auto</span> filter)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        <span class=\"keywordtype\">bool</span> root_intersects = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a>(ray_pos, ray_dir, <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        <span class=\"keywordflow\">if</span> (!root_intersects) {</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>            <span class=\"keywordflow\">return</span> -1;</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        }</div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        </div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keywordtype\">float</span> nearest_dist = INFINITY;</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        uint32_t nearest_index = -1;</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        </div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>, filter);</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        </div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        <span class=\"keywordflow\">return</span> nearest_index;</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    }</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    </div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">// this should be marked private</span></div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">  183</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <span class=\"keywordtype\">float</span>&amp; nearest_dist, uint32_t&amp; nearest_index, <span class=\"keywordtype\">float</span> distance_limit, <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, <span class=\"keyword\">auto</span> filter)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>            <span class=\"keywordtype\">float</span> leaf_distance = filter(ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>);</div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>            </div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>            <span class=\"keywordflow\">if</span> (leaf_distance &lt; nearest_dist) {</div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                nearest_dist = leaf_distance;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                nearest_index = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>;</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>            }</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            </div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        }</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>        <span class=\"keywordtype\">float</span> left_distance = INFINITY;</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        <span class=\"keywordtype\">float</span> right_distance = INFINITY;</div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        </div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>) left_distance = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">AABBDistance</a>(ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>) right_distance = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">AABBDistance</a>(ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        </div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <span class=\"keywordflow\">if</span> (left_distance &lt; right_distance) {</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>            </div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>            <span class=\"keywordflow\">if</span> (left_distance &lt; nearest_dist &amp;&amp; left_distance &lt; distance_limit) {</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, filter);</div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>            }</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>            </div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>            <span class=\"keywordflow\">if</span> (right_distance &lt; nearest_dist &amp;&amp; right_distance &lt; distance_limit) {</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, filter);</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>            }</div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>            </div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>            </div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>            <span class=\"keywordflow\">if</span> (right_distance &lt; nearest_dist &amp;&amp; right_distance &lt; distance_limit) {</div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, filter);</div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>            }</div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>            </div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>            <span class=\"keywordflow\">if</span> (left_distance &lt; nearest_dist &amp;&amp; left_distance &lt; distance_limit) {</div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, filter);</div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>            }</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>            </div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        }</div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        </div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    }</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    </div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">  225</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <span class=\"keyword\">auto</span> callback) {</div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>, min, max, callback);</div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    }</div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    </div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"comment\">// should be private</span></div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab\">  230</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab\">FindAABBIntersection</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <span class=\"keyword\">auto</span> callback) {</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>)) {</div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                callback(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>);</div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>            }</div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>            </div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        }</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        </div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> &amp;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>)) {</div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, min, max, callback);</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        }</div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        </div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> &amp;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>)) {</div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, min, max, callback);</div>\n<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        }</div>\n<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        </div>\n<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    }</div>\n<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    </div>\n<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span><span class=\"comment\">//private:</span></div>\n<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    </div>\n<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">  251</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>        </div>\n<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        <span class=\"comment\">//assert(!node-&gt;IsLeaf());</span></div>\n<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>        </div>\n<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>()) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>        </div>\n<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* left_child = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>;</div>\n<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* right_child = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>;</div>\n<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>        </div>\n<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>        <span class=\"keywordflow\">if</span> (!left_child || !right_child) {</div>\n<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>            assert(node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>            </div>\n<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>            <span class=\"keywordflow\">if</span> (!left_child &amp;&amp; right_child) {</div>\n<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>            } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (left_child &amp;&amp; !right_child) {</div>\n<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>            }</div>\n<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>            </div>\n<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        }</div>\n<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        </div>\n<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>        </div>\n<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>, right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        </div>\n<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>);</div>\n<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        }</div>\n<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        </div>\n<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != node);</div>\n<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    }</div>\n<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    </div>\n<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"comment\">// searches the children of search_node to find a sibling for target_node</span></div>\n<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">  289</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>()) {</div>\n<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>            <span class=\"keywordflow\">return</span> node;</div>\n<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        }</div>\n<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        </div>\n<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>        }</div>\n<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        </div>\n<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> left_merge_min = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(min, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> left_merge_max = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        </div>\n<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> right_merge_min = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(min, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> right_merge_max = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        </div>\n<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        <span class=\"keywordtype\">float</span> left_merge_volume = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a>(left_merge_min, left_merge_max);</div>\n<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        <span class=\"keywordtype\">float</span> right_merge_volume = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a>(right_merge_min, right_merge_max);</div>\n<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        </div>\n<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        <span class=\"comment\">//float left_merge_volume = AABBSurface(left_merge_min, left_merge_max);</span></div>\n<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"comment\">//float right_merge_volume = AABBSurface(right_merge_min, right_merge_max);</span></div>\n<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        </div>\n<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        <span class=\"keywordflow\">if</span> (left_merge_volume &lt; right_merge_volume) {</div>\n<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>            <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>            <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        }</div>\n<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    }</div>\n<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    </div>\n<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    </div>\n<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">  322</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>        <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            <span class=\"comment\">//if (((Node*)0)-&gt;IsLeaf()) assert(false);</span></div>\n<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>        }</div>\n<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        </div>\n<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a> (node, 0);</div>\n<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    }</div>\n<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">  331</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">ValidateTree</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, <span class=\"keywordtype\">size_t</span> num) {</div>\n<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>        assert((<span class=\"keywordtype\">long</span> <span class=\"keywordtype\">long</span>)node &gt; 100);</div>\n<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        </div>\n<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        <span class=\"keywordflow\">if</span> (num &gt; 400) {</div>\n<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>            <span class=\"comment\">//if (((Node*)0)-&gt;IsLeaf()) assert(false);</span></div>\n<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>        }</div>\n<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>        </div>\n<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>            <span class=\"comment\">//assert(node-&gt;value &lt; 40000);</span></div>\n<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>            <span class=\"keywordflow\">if</span> (node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> || (node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> &amp;&amp; node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>))<a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, num+1);</div>\n<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>            <span class=\"keywordflow\">if</span> (node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> || (node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> &amp;&amp; node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>))<a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, num+1);</div>\n<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>        }</div>\n<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    }</div>\n<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    </div>\n<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">  347</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b) {</div>\n<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> {</div>\n<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>            a.x &lt; b.x ? a.x : b.x,</div>\n<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>            a.y &lt; b.y ? a.y : b.y,</div>\n<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>            a.z &lt; b.z ? a.z : b.z</div>\n<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        };<span class=\"comment\">// - vec3 {0.1f, 0.1f, 0.1f};</span></div>\n<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    </div>\n<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">  355</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b) {</div>\n<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> {</div>\n<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>            a.x &gt; b.x ? a.x : b.x,</div>\n<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>            a.y &gt; b.y ? a.y : b.y,</div>\n<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>            a.z &gt; b.z ? a.z : b.z</div>\n<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>        };<span class=\"comment\">// + vec3 {0.1f, 0.1f, 0.1f};</span></div>\n<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    }</div>\n<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    </div>\n<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">  363</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> other_min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> other_max) {</div>\n<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>        <span class=\"keywordflow\">return</span> min.x &lt;= other_max.x &amp;&amp; max.x &gt;= other_min.x &amp;&amp;</div>\n<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>               min.y &lt;= other_max.y &amp;&amp; max.y &gt;= other_min.y &amp;&amp;</div>\n<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>               min.z &lt;= other_max.z &amp;&amp; max.z &gt;= other_min.z;</div>\n<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    }</div>\n<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    </div>\n<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">  369</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>        <span class=\"keywordflow\">return</span> (max.x - min.x) * (max.y - min.y) * (max.z - min.z);</div>\n<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    }</div>\n<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    </div>\n<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">  373</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">AABBSurface</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>        <span class=\"keywordtype\">float</span> x = max.x - min.x;</div>\n<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>        <span class=\"keywordtype\">float</span> y = max.y - min.y;</div>\n<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>        <span class=\"keywordtype\">float</span> z = max.z - min.z;</div>\n<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>        </div>\n<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>        assert(max.x &gt;= min.x);</div>\n<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>        assert(max.y &gt;= min.y);</div>\n<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>        assert(max.z &gt;= min.z);</div>\n<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>        </div>\n<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>        <span class=\"keywordflow\">return</span> 2 * ((x * y) + (x * z) + (y * z));</div>\n<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    }</div>\n<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    </div>\n<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">  385</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1 = (min - ray_pos) / ray_dir; <span class=\"comment\">// what happens if ray_dir == 0.0f?</span></div>\n<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2 = (max - ray_pos) / ray_dir; <span class=\"comment\">// TODO: check</span></div>\n<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>        </div>\n<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1min = glm::min(t1, t2);</div>\n<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2max = glm::max(t1, t2);</div>\n<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>        </div>\n<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>        <span class=\"keywordtype\">float</span> tnear = glm::max(glm::max(t1min.x, t1min.y), t1min.z);</div>\n<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>        <span class=\"keywordtype\">float</span> tfar = glm::min(glm::min(t2max.x, t2max.y), t2max.z);</div>\n<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>        </div>\n<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>        <span class=\"keywordflow\">return</span> tfar &gt;= tnear;</div>\n<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    }</div>\n<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    </div>\n<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">  398</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">AABBDistance</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1 = (min - ray_pos) / ray_dir; <span class=\"comment\">// what happens if ray_dir == 0.0f?</span></div>\n<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2 = (max - ray_pos) / ray_dir; <span class=\"comment\">// TODO: check</span></div>\n<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        </div>\n<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1min = glm::min(t1, t2);</div>\n<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2max = glm::max(t1, t2);</div>\n<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        </div>\n<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> tnear = glm::max(glm::max(t1min.x, t1min.y), t1min.z);</div>\n<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> tfar = glm::min(glm::min(t2max.x, t2max.y), t2max.z);</div>\n<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        </div>\n<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keywordflow\">return</span> tfar &gt;= tnear ? tnear : INFINITY;</div>\n<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>    }</div>\n<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    </div>\n<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">  411</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">  412</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a> ()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == 0; }</div>\n<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        </div>\n<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">  414</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">Print</a> ()<span class=\"keyword\"> const </span>{ std::cout &lt;&lt; <span class=\"stringliteral\">&quot; l: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> &lt;&lt; <span class=\"stringliteral\">&quot; r: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> &lt;&lt; <span class=\"stringliteral\">&quot; p: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> &lt;&lt; std::endl; }</div>\n<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        </div>\n<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">  417</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">  418</a></span>            uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>;</div>\n<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>        };</div>\n<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>        </div>\n<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">  421</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">  422</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>        </div>\n<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">  424</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">  425</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    };</div>\n<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    </div>\n<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">  428</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {<span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}};</div>\n<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>};</div>\n<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span> </div>\n<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>}</div>\n<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></div><div class=\"ttdef\"><b>Definition:</b> aabb.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a09154884a07d9aec60f8e84f54292d41\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">tram::AABBTree::InsertLeaf</a></div><div class=\"ttdeci\">Node * InsertLeaf(uint32_t value, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a0fdc8691cc5674bcd2b18e1b287301e1\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">tram::AABBTree::AABBIntersect</a></div><div class=\"ttdeci\">static bool AABBIntersect(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:385</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a10e8e2eef3ea7b92fe8f62019efb6ebc\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">tram::AABBTree::~AABBTree</a></div><div class=\"ttdeci\">~AABBTree()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a1f62c3784491fc7b1b924e9801d5685d\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">tram::AABBTree::FindIntersection</a></div><div class=\"ttdeci\">void FindIntersection(vec3 ray_pos, vec3 ray_dir, Node *node, std::vector&lt; uint32_t &gt; &amp;result) const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:154</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a32675d95c889b42d34ec88309ccc1adc\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">tram::AABBTree::UpdateParentAABB</a></div><div class=\"ttdeci\">void UpdateParentAABB(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:251</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a509b43b26b87d2c14783fb7af4ddfb3d\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">tram::AABBTree::ValidateTree</a></div><div class=\"ttdeci\">void ValidateTree(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:322</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a51ebff27bd53240096c90c198b970dab\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab\">tram::AABBTree::FindAABBIntersection</a></div><div class=\"ttdeci\">void FindAABBIntersection(Node *node, vec3 min, vec3 max, auto callback)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:230</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a567a82fddf4d8649dec4f358fe08da29\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">tram::AABBTree::AABBTree</a></div><div class=\"ttdeci\">AABBTree()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a61d5cb103f8529afdd926a8b6a1cf79a\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">tram::AABBTree::GetAABBMax</a></div><div class=\"ttdeci\">vec3 GetAABBMax()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a6ce2d61d0eb768a2c41b5832177d71b1\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">tram::AABBTree::FindIntersectionRecursive</a></div><div class=\"ttdeci\">void FindIntersectionRecursive(vec3 ray_pos, vec3 ray_dir, float &amp;nearest_dist, uint32_t &amp;nearest_index, float distance_limit, Node *node, auto filter) const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:183</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a6e50b9b4d4d2dde317cef8dcb3ce648c\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">tram::AABBTree::root</a></div><div class=\"ttdeci\">Node * root</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:428</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a715f0769ae31e4adfcea697bf841dd77\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">tram::AABBTree::AABBVolume</a></div><div class=\"ttdeci\">static float AABBVolume(vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:369</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a72800aa33c03780b35f5510d8c80526b\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">tram::AABBTree::FindAABBIntersection</a></div><div class=\"ttdeci\">void FindAABBIntersection(vec3 min, vec3 max, auto callback)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:225</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a7381f1d5ef18522f092b20432af0c291\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">tram::AABBTree::MergeAABBMax</a></div><div class=\"ttdeci\">static vec3 MergeAABBMax(vec3 a, vec3 b)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:355</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a854ba4aa154dfc14b544cc142418b63b\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">tram::AABBTree::AABBDistance</a></div><div class=\"ttdeci\">static float AABBDistance(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:398</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a9efb144bb94afd82a7c58a0ecd16a1a6\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">tram::AABBTree::RemoveLeaf</a></div><div class=\"ttdeci\">void RemoveLeaf(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_aa064aa5b6071d82fe3dc84bb08c07474\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">tram::AABBTree::RemoveHierarchy</a></div><div class=\"ttdeci\">void RemoveHierarchy(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:144</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_aa25621c85212298d11a04b79b8638609\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">tram::AABBTree::MergeAABBMin</a></div><div class=\"ttdeci\">static vec3 MergeAABBMin(vec3 a, vec3 b)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:347</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ab2029865cbcf492b0c6dd70899a6fdf1\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">tram::AABBTree::FindSibling</a></div><div class=\"ttdeci\">Node * FindSibling(vec3 min, vec3 max, Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:289</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ab7b01ca3a4bd8402b5337819d0482fce\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">tram::AABBTree::GetAABBMin</a></div><div class=\"ttdeci\">vec3 GetAABBMin()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ab91f605c9d68f45e8d5d5c0ae05e12ba\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba\">tram::AABBTree::FindIntersection</a></div><div class=\"ttdeci\">uint32_t FindIntersection(vec3 ray_pos, vec3 ray_dir, float distance_limit, auto filter) const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:167</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_abc30ba522129a7fe8d093bce4f9ab6c9\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">tram::AABBTree::ValidateTree</a></div><div class=\"ttdeci\">void ValidateTree(Node *node, size_t num)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:331</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ad990b44be408032340081fb22dbc1ca2\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">tram::AABBTree::AABBSurface</a></div><div class=\"ttdeci\">static float AABBSurface(vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:373</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_afe35ffcff47d45bf7b4dad9b2d510d80\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">tram::AABBTree::AABBOverlap</a></div><div class=\"ttdeci\">static bool AABBOverlap(vec3 min, vec3 max, vec3 other_min, vec3 other_max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:363</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"alogging_8h_html\"><div class=\"ttname\"><a href=\"logging_8h.html\">logging.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></div><div class=\"ttdef\"><b>Definition:</b> aabb.h:411</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a31d0922f21e58394dad1993d731601b3\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">tram::AABBTree::Node::left</a></div><div class=\"ttdeci\">Node * left</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:417</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a57ca67dfe98a914549d55d710ef8fec6\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">tram::AABBTree::Node::right</a></div><div class=\"ttdeci\">Node * right</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:421</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a6ca75579cef2d995affbeced0c4f3ee4\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">tram::AABBTree::Node::IsLeaf</a></div><div class=\"ttdeci\">bool IsLeaf() const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:412</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a70fe0c482870a3a4a60f17eaacc2be33\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">tram::AABBTree::Node::parent</a></div><div class=\"ttdeci\">Node * parent</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:422</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a76065598bad42f58e74815676b4232fc\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">tram::AABBTree::Node::max</a></div><div class=\"ttdeci\">vec3 max</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:425</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a93c5a016f35c05c08f454db6db446113\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">tram::AABBTree::Node::min</a></div><div class=\"ttdeci\">vec3 min</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:424</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_ab59c932ba14cda33cd9918d02ef074c1\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">tram::AABBTree::Node::value</a></div><div class=\"ttdeci\">uint32_t value</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:418</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_aef471e23e1400e7c4f466576552a5146\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">tram::AABBTree::Node::Print</a></div><div class=\"ttdeci\">void Print() const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:414</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html\">tram::Node</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:16</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/actions_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/actions.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">actions.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;btBulletDynamicsCommon.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n</div>\n<p><a href=\"actions_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/actions_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/actions.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">actions.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"actions_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef PHYSICS_BULLET_ACTIONS_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define PHYSICS_BULLET_ACTIONS_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;btBulletDynamicsCommon.h&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2physics_8h.html\">components/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_path_action.html\">   11</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_path_action.html\">PathAction</a> : <span class=\"keyword\">public</span> btActionInterface {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">   13</a></span>        <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">PathAction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* physComponent){</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>            physcomp = physComponent;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>        }</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">   17</a></span>        <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">updateAction</a>(btCollisionWorld* collisionWorld, btScalar deltaTimeStep);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">   19</a></span>        <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">debugDraw</a>(btIDebugDraw* debugDrawer){}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>        <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* physcomp = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    };</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>}</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PHYSICS_BULLET_ACTIONS_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_path_action_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a></div><div class=\"ttdef\"><b>Definition:</b> actions.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_path_action_html_a22e23ed7cfd09968f5bc0663befd1d9c\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">tram::Physics::PathAction::PathAction</a></div><div class=\"ttdeci\">PathAction(PhysicsComponent *physComponent)</div><div class=\"ttdef\"><b>Definition:</b> actions.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_path_action_html_a41ae4385e939b2c9eca055424032d050\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">tram::Physics::PathAction::updateAction</a></div><div class=\"ttdeci\">virtual void updateAction(btCollisionWorld *collisionWorld, btScalar deltaTimeStep)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_path_action_html_a8dce3b286d6b2e756a8b9890bf9d9992\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">tram::Physics::PathAction::debugDraw</a></div><div class=\"ttdeci\">virtual void debugDraw(btIDebugDraw *debugDrawer)</div><div class=\"ttdef\"><b>Definition:</b> actions.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdoc\">Rigidbody wrapper.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:12</div></div>\n<div class=\"ttc\" id=\"acomponents_2physics_8h_html\"><div class=\"ttname\"><a href=\"components_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html\">tram::Physics</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ai_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/ai.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">ai.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"ai_8h_source.html\">extensions/kitchensink/ai.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">tram::Ext::Kitchensink::InitAI</a> ()</td></tr>\n<tr class=\"separator:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">tram::Ext::Kitchensink::UpdateAI</a> ()</td></tr>\n<tr class=\"separator:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ai_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/ai.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">ai.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n</div>\n<p><a href=\"ai_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">tram::Ext::Kitchensink::AIVariable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a7ed49c241e07b037e40bcb940995e442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef AIPackage *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">tram::Ext::Kitchensink::ai_package_constr</a>) (valuearray_t)</td></tr>\n<tr class=\"separator:a7ed49c241e07b037e40bcb940995e442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">tram::Ext::Kitchensink::InitAI</a> ()</td></tr>\n<tr class=\"separator:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">tram::Ext::Kitchensink::UpdateAI</a> ()</td></tr>\n<tr class=\"separator:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ai_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/ai.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">ai.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"ai_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"comment\">/*</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"comment\"> * AI framework for video game NPCs</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\"> * This is a half-finished framework for creating AI packages that could be used</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\"> * to make video game NPCs.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\"> * Haven&#39;t tried using it, probably doesn&#39;t work.</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\"> * Still working out the basic API and internal mechanics.</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keyword\">class </span>ControllerComponent;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>}</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">class </span>AnimationStateComponent;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"comment\">/*</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"comment\">    </span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"comment\">    if normal:</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"comment\">    if time is morning:</span></div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">        return go_eat()</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">    if time is day:</span></div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">        return go_stand(at_workplace)</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">    if time is evening:</span></div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">        return go_eat()</span></div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">    if time is night:</span></div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">        return go_sleep(home)</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">    if combat:</span></div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">    if health &gt; 10:</span></div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">        return attack</span></div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">    if true:</span></div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">        return retreat</span></div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">    inside_params -&gt; </span></div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">        attacker</span></div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">        attacker_faction</span></div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">    if normal and attack and victim_faction is self_faction:</span></div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">        combat_target = </span></div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">        attack</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">    AIAgent:</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">      list&lt;pair&lt;AICondition, AIPackage&gt;&gt; package_queue;</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">      name class;</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">      package_script</span></div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">      list&lt;Value&gt; variables</span></div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">    AIClass:</span></div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">      name parent_class;</span></div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">      package_script;</span></div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">      default_variables;</span></div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">    AIPackage:</span></div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">      state = running/finished</span></div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">      forced = true/false</span></div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">    SetAIPackage(AI_ATTACK, [(&quot;target&quot;, big_chungus)])</span></div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">    AI_ATTACK</span></div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">    AI_SLEEP</span></div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">    AI_EAT</span></div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">      </span></div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">AI_ATTACK -&gt;</span></div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">class </span>AIAgent;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">class </span>AIPackage;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">   85</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>* (*ai_package_constr)(<a class=\"code hl_typedef\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>);</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">InitAI</a>();</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">UpdateAI</a>();</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">   90</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> {</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">   92</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">Process</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">   94</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">~AIPackage</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">Register</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">ai_package_constr</a> constr);    </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">valuearray_t</a> params);</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">   99</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">parent</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>};</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">  102</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a> {</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">  103</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">value</a>;</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>};</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">  106</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a> {</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">  108</a></span>    std::vector&lt;AIPackage*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">package_stack</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">  109</a></span>    std::vector&lt;AIPackage*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">override_stack</a>;</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    </div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">  111</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">script</a>;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">  113</a></span>    std::vector&lt;AIVariable&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">variables</a>;</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">  115</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">Push</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>*);</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">  116</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">Clear</a>();</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">  118</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">PushOverride</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>*);</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">  119</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">ClearOverride</a>();</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">  123</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">SetControllerComponent</a>(<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>* c) { controllercomponent = c; }</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">  124</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">SetAnimationStateComponent</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a>* c) { animationstate = c; }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">  125</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">GetControllerComponent</a>() { <span class=\"keywordflow\">return</span> controllercomponent; }</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">  126</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">GetAnimationStateComponent</a>() { <span class=\"keywordflow\">return</span> animationstate; }</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">Find</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <span class=\"keywordtype\">id</span>);</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>* controllercomponent;</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a>* animationstate;</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>};</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>}</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></div><div class=\"ttdoc\">Provides an API for character controllers.</div><div class=\"ttdef\"><b>Definition:</b> controller.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></div><div class=\"ttdef\"><b>Definition:</b> ai.h:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a000cfce98b029d0db88a9cbbc17bc070\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">tram::Ext::Kitchensink::AIAgent::script</a></div><div class=\"ttdeci\">name_t script</div><div class=\"ttdef\"><b>Definition:</b> ai.h:111</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a07dad067bc1ef1dbfeaa7603a0c20130\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">tram::Ext::Kitchensink::AIAgent::variables</a></div><div class=\"ttdeci\">std::vector&lt; AIVariable &gt; variables</div><div class=\"ttdef\"><b>Definition:</b> ai.h:113</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a2d6f211e82a9785ead2324aa02ad7222\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">tram::Ext::Kitchensink::AIAgent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a3b750ab68f6cd76205f6f39a8b98f8e8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">tram::Ext::Kitchensink::AIAgent::SetAnimationStateComponent</a></div><div class=\"ttdeci\">void SetAnimationStateComponent(AnimationStateComponent *c)</div><div class=\"ttdef\"><b>Definition:</b> ai.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a74c4e40e62073f4a4016ef0080d144f4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">tram::Ext::Kitchensink::AIAgent::GetAnimationStateComponent</a></div><div class=\"ttdeci\">AnimationStateComponent * GetAnimationStateComponent()</div><div class=\"ttdef\"><b>Definition:</b> ai.h:126</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a7740703b2a0dfef31440331972ca0bdf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">tram::Ext::Kitchensink::AIAgent::SetControllerComponent</a></div><div class=\"ttdeci\">void SetControllerComponent(ControllerComponent *c)</div><div class=\"ttdef\"><b>Definition:</b> ai.h:123</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a7c1f9cd1c54afd025f332f11c4643cb1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">tram::Ext::Kitchensink::AIAgent::override_stack</a></div><div class=\"ttdeci\">std::vector&lt; AIPackage * &gt; override_stack</div><div class=\"ttdef\"><b>Definition:</b> ai.h:109</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a89181f116b73c484e5b57dbd2152a7c2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">tram::Ext::Kitchensink::AIAgent::PushOverride</a></div><div class=\"ttdeci\">void PushOverride(AIPackage *)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_a8b061b128f6b9e6494ed77517224db9a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">tram::Ext::Kitchensink::AIAgent::ClearOverride</a></div><div class=\"ttdeci\">void ClearOverride()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_aa8590467f7d1239c7e12e07a63ee0012\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">tram::Ext::Kitchensink::AIAgent::Push</a></div><div class=\"ttdeci\">void Push(AIPackage *)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_ab0e2c46e1b281bc6f2d87c2c7f432272\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">tram::Ext::Kitchensink::AIAgent::Clear</a></div><div class=\"ttdeci\">void Clear()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_ab263983af0673c1974878b5d7299492e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">tram::Ext::Kitchensink::AIAgent::Find</a></div><div class=\"ttdeci\">static AIAgent * Find(id_t id)</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_adfe0bb1d9761a59c4d36a83239fea93a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">tram::Ext::Kitchensink::AIAgent::GetControllerComponent</a></div><div class=\"ttdeci\">ControllerComponent * GetControllerComponent()</div><div class=\"ttdef\"><b>Definition:</b> ai.h:125</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_agent_html_aecf643b955c103675f0ae066f443dd16\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">tram::Ext::Kitchensink::AIAgent::package_stack</a></div><div class=\"ttdeci\">std::vector&lt; AIPackage * &gt; package_stack</div><div class=\"ttdef\"><b>Definition:</b> ai.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></div><div class=\"ttdef\"><b>Definition:</b> ai.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html_a084b23b5977c656c8b6792c3e2704df7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">tram::Ext::Kitchensink::AIPackage::Register</a></div><div class=\"ttdeci\">static void Register(name_t name, ai_package_constr constr)</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html_a9647c7b82c89b70b1f28c6b6fa7f6349\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">tram::Ext::Kitchensink::AIPackage::parent</a></div><div class=\"ttdeci\">AIAgent * parent</div><div class=\"ttdef\"><b>Definition:</b> ai.h:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html_ace7ea2819350d9638a0980f288c62416\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">tram::Ext::Kitchensink::AIPackage::Make</a></div><div class=\"ttdeci\">static AIPackage * Make(name_t name, valuearray_t params)</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html_ad02bb92b98ecc4359ded1713f01eb19e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">tram::Ext::Kitchensink::AIPackage::~AIPackage</a></div><div class=\"ttdeci\">virtual ~AIPackage()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_a_i_package_html_aefe04093df4daf73c85b271413d19868\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">tram::Ext::Kitchensink::AIPackage::Process</a></div><div class=\"ttdeci\">virtual bool Process()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a7ed49c241e07b037e40bcb940995e442\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">tram::Ext::Kitchensink::ai_package_constr</a></div><div class=\"ttdeci\">AIPackage *(* ai_package_constr)(valuearray_t)</div><div class=\"ttdef\"><b>Definition:</b> ai.h:85</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_aa032a6e16a417cef3ada074352b8a242\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">tram::Ext::Kitchensink::UpdateAI</a></div><div class=\"ttdeci\">void UpdateAI()</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab9a442aa76563ab70aff7c560a3bb953\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">tram::Ext::Kitchensink::InitAI</a></div><div class=\"ttdeci\">void InitAI()</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9a399a2754b52b60de20e936546d0637\"><div class=\"ttname\"><a href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></div><div class=\"ttdeci\">ValueArray valuearray_t</div><div class=\"ttdef\"><b>Definition:</b> value.h:325</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">tram::Ext::Kitchensink::AIVariable</a></div><div class=\"ttdef\"><b>Definition:</b> ai.h:102</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable_html_ab8f5ca82a06f30ec861907366c362436\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">tram::Ext::Kitchensink::AIVariable::value</a></div><div class=\"ttdeci\">Value value</div><div class=\"ttdef\"><b>Definition:</b> ai.h:103</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/animationtable_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/animationtable.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animationtable.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">extensions/kitchensink/animationtable.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/animationtable_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/animationtable.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animationtable.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n</div>\n<p><a href=\"animationtable_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">tram::Ext::Kitchensink::AnimStateSpace</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/animationtable_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/animationtable.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">animationtable.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"animationtable_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keyword\">class </span>AnimationComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">   17</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">AnimStateSpace</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">   18</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">name</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">   19</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>};</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">   22</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">AnimState</a> {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">   23</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">name</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">   25</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">animation</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">   26</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">repeats</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">   27</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">weight</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">   28</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">speed</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">   29</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">interpolate</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">   30</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">pause_last</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">   32</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">state_space</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">next_state</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>};</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">   37</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a> {</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">   38</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">from_state</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">   39</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">into_state</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">   41</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">fade_time</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">   44</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a> {</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">   45</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">from_state</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">   46</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">into_state</a>;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">   48</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">fade_time</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>};</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">   51</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a> {</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">   52</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">state</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">   54</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">fade_in_time</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">   55</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">fade_out_time</a>;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">   60</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a> {</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">   62</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">AnimationTable</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name) : name(name) {}</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">SwitchState</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a>* state_component);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">AddStateSpace</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> parent);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">AddState</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> space);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">SetStateAnimation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, uint32_t repeats, <span class=\"keywordtype\">float</span> weight, <span class=\"keywordtype\">float</span> speed, <span class=\"keywordtype\">bool</span> pause_last);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">SetStateNextState</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> next_state);</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">AddTransition</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a>);</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">AddTransition</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a>);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">AddTransition</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a>);</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* component = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    std::vector&lt;AnimStateSpace&gt; state_spaces;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    std::vector&lt;AnimState&gt; states;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    std::vector&lt;AnimStateTransitionFrom&gt; transition_from;</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    std::vector&lt;AnimStateTransitionInto&gt; transition_into;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    std::vector&lt;AnimStateTransitionDefault&gt; transition_default;</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>};</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">   90</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">   92</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) {}</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">   93</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">   95</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">SwitchState</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state) { <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">table</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">SwitchState</a>(state, <span class=\"keyword\">this</span>); }</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">   97</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">SetAnimationTable</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">table</a> = <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">AnimationTable::Find</a>(name); }</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">   98</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">SetAnimationComponent</a>(<a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a>) { this-&gt;component = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a>; }</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">   99</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">GetAnimationComponent</a>() { <span class=\"keywordflow\">return</span> this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a>; }</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">  101</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">table</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">  102</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">  103</a></span>    std::vector&lt;name_t&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">states</a>;</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123\">  104</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a>;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>};</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>}</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></div><div class=\"ttdoc\">Plays back Animations.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_a335a1c5814483482acbaf2417e624da4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">tram::Ext::Kitchensink::AnimationStateComponent::Start</a></div><div class=\"ttdeci\">void Start()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_a353c54cd4574695e428894719609c595\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">tram::Ext::Kitchensink::AnimationStateComponent::SetAnimationComponent</a></div><div class=\"ttdeci\">void SetAnimationComponent(AnimationComponent *component)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_a616a6e22840e08cf291834d172b22ee7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">tram::Ext::Kitchensink::AnimationStateComponent::SwitchState</a></div><div class=\"ttdeci\">void SwitchState(name_t state)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_a61c57d2abc379ab7551ae47f74d31688\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">tram::Ext::Kitchensink::AnimationStateComponent::table</a></div><div class=\"ttdeci\">AnimationTable * table</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_aa549e6a492118321af2af17a1c342290\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">tram::Ext::Kitchensink::AnimationStateComponent::SetAnimationTable</a></div><div class=\"ttdeci\">void SetAnimationTable(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:97</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_ab06a67f085e005f0e985fd03f1bd2dcc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">tram::Ext::Kitchensink::AnimationStateComponent::states</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; states</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_ac6894d78aa54b2d0bf5bb4f55766c43b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">tram::Ext::Kitchensink::AnimationStateComponent::GetAnimationComponent</a></div><div class=\"ttdeci\">AnimationComponent * GetAnimationComponent()</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_ad3332339eb0ad584e6dea173f1a03ad7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">tram::Ext::Kitchensink::AnimationStateComponent::component</a></div><div class=\"ttdeci\">AnimationComponent * component</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_state_component_html_af88977e10e060bf16fb2398dd127edad\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">tram::Ext::Kitchensink::AnimationStateComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_a1cb9d318dcab93ae71a377f195ceb3bc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">tram::Ext::Kitchensink::AnimationTable::AnimationTable</a></div><div class=\"ttdeci\">AnimationTable(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_a1d0ea0b121a54d5ecee11eda9b8a621c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">tram::Ext::Kitchensink::AnimationTable::AddTransition</a></div><div class=\"ttdeci\">void AddTransition(AnimStateTransitionFrom)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:212</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_a4ccd358ff8f03863bb1c431931175c8d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">tram::Ext::Kitchensink::AnimationTable::AddStateSpace</a></div><div class=\"ttdeci\">void AddStateSpace(name_t name, name_t parent)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:173</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_a504aca8b015e8fca48124474966a6e1e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">tram::Ext::Kitchensink::AnimationTable::SetStateAnimation</a></div><div class=\"ttdeci\">void SetStateAnimation(name_t state, name_t animation_name, uint32_t repeats, float weight, float speed, bool pause_last)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:188</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_a57b233bcdc733ea9c7128d23499ef5cc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">tram::Ext::Kitchensink::AnimationTable::SetStateNextState</a></div><div class=\"ttdeci\">void SetStateNextState(name_t state, name_t next_state)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:202</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_ac68d960146cdf7525c403fa80dce8d1f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">tram::Ext::Kitchensink::AnimationTable::SwitchState</a></div><div class=\"ttdeci\">void SwitchState(name_t state, AnimationStateComponent *state_component)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_ae762d3e66cb45a4739a5cbfa915da3a1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">tram::Ext::Kitchensink::AnimationTable::Find</a></div><div class=\"ttdeci\">static AnimationTable * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_animation_table_html_af80681af9d6461c2545e1ba6f3559a0d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">tram::Ext::Kitchensink::AnimationTable::AddState</a></div><div class=\"ttdeci\">void AddState(name_t state, name_t space)</div><div class=\"ttdef\"><b>Definition:</b> animationtable.cpp:183</div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_a076616449b844c51000c7b65940443b8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">tram::Ext::Kitchensink::AnimState::repeats</a></div><div class=\"ttdeci\">uint32_t repeats</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_a2d83ea50ba1cea2d5c129c0aef94ba37\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">tram::Ext::Kitchensink::AnimState::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_a3092db31243a93267bddd5f9797696fa\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">tram::Ext::Kitchensink::AnimState::interpolate</a></div><div class=\"ttdeci\">bool interpolate</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_a462487781aa6ea8911cb37bc3064b575\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">tram::Ext::Kitchensink::AnimState::state_space</a></div><div class=\"ttdeci\">name_t state_space</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_a96c66b08a366597595eac4038641834e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">tram::Ext::Kitchensink::AnimState::speed</a></div><div class=\"ttdeci\">float speed</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_aa4d3e08ffedcce66e94535cf569b183f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">tram::Ext::Kitchensink::AnimState::pause_last</a></div><div class=\"ttdeci\">bool pause_last</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_ab37350588a0e40d138aa060e4477a3ee\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">tram::Ext::Kitchensink::AnimState::next_state</a></div><div class=\"ttdeci\">name_t next_state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_ae1d093333e0433d071a618226768270e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">tram::Ext::Kitchensink::AnimState::weight</a></div><div class=\"ttdeci\">float weight</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_html_af2f443e6c0e1f4195e88666fd512708d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">tram::Ext::Kitchensink::AnimState::animation</a></div><div class=\"ttdeci\">name_t animation</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">tram::Ext::Kitchensink::AnimStateSpace</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space_html_a5ff4f114e9722b8a4bcda22212789b9a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">tram::Ext::Kitchensink::AnimStateSpace::parent</a></div><div class=\"ttdeci\">name_t parent</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space_html_ad0a26b8eab6b4bf5ceb070fb8a933e61\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">tram::Ext::Kitchensink::AnimStateSpace::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default_html_a2eb7130d015e139f42813ac89cf7cfee\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">tram::Ext::Kitchensink::AnimStateTransitionDefault::fade_out_time</a></div><div class=\"ttdeci\">float fade_out_time</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default_html_a48f08ce7495ae730fd0f89e7fcf19f57\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">tram::Ext::Kitchensink::AnimStateTransitionDefault::fade_in_time</a></div><div class=\"ttdeci\">float fade_in_time</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default_html_acf9e01d5a11aa7a4b40a7135a8bb10e9\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">tram::Ext::Kitchensink::AnimStateTransitionDefault::state</a></div><div class=\"ttdeci\">name_t state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from_html_a4fc967dfe7caf8f300842148f0b8eba0\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">tram::Ext::Kitchensink::AnimStateTransitionFrom::into_state</a></div><div class=\"ttdeci\">name_t into_state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from_html_a7ccb60919e27cfe5cf01b20e824f494a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">tram::Ext::Kitchensink::AnimStateTransitionFrom::fade_time</a></div><div class=\"ttdeci\">float fade_time</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from_html_abce9f4aa66e81f7bdacdd957145bf2d8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">tram::Ext::Kitchensink::AnimStateTransitionFrom::from_state</a></div><div class=\"ttdeci\">name_t from_state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into_html_a68ba9c13086b86f10f80cd36e61200d8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">tram::Ext::Kitchensink::AnimStateTransitionInto::into_state</a></div><div class=\"ttdeci\">name_t into_state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into_html_a800a33afe025e16593895da5634bff6e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">tram::Ext::Kitchensink::AnimStateTransitionInto::fade_time</a></div><div class=\"ttdeci\">float fade_time</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:48</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into_html_a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">tram::Ext::Kitchensink::AnimStateTransitionInto::from_state</a></div><div class=\"ttdeci\">name_t from_state</div><div class=\"ttdef\"><b>Definition:</b> animationtable.h:45</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/annotated.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Class List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span><span onclick=\"javascript:toggleLevel(4);\">4</span><span onclick=\"javascript:toggleLevel(5);\">5</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram.html\" target=\"_self\">tram</a></td><td class=\"desc\">Serialization, i.e </td></tr>\n<tr id=\"row_0_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_async.html\" target=\"_self\">Async</a></td><td class=\"desc\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming </td></tr>\n<tr id=\"row_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\" target=\"_self\">ResourceRequest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_\" class=\"arrow\" onclick=\"toggleFolder('0_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_audio.html\" target=\"_self\">Audio</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff </td></tr>\n<tr id=\"row_0_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_0_\" class=\"arrow\" onclick=\"toggleFolder('0_1_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\" target=\"_self\">Spatial</a></td><td class=\"desc\">Experimental path tracing audio system </td></tr>\n<tr id=\"row_0_1_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\" target=\"_self\">AudioBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\" target=\"_self\">AudioRender</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\" target=\"_self\">AudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\" target=\"_self\">PathExplorationResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\" target=\"_self\">PathFromAudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\" target=\"_self\">PathRenderingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_0_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\" target=\"_self\">PathTracingResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\" target=\"_self\">audiobuffer_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle </td></tr>\n<tr id=\"row_0_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\" target=\"_self\">audiosource_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle </td></tr>\n<tr id=\"row_0_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\" target=\"_self\">FilterParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\" target=\"_self\">Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource </td></tr>\n<tr id=\"row_0_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_5_\" class=\"arrow\" onclick=\"toggleFolder('0_1_5_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\" target=\"_self\">SoundGraph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_5_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_\" class=\"arrow\" onclick=\"toggleFolder('0_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext.html\" target=\"_self\">Ext</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_0_\" class=\"arrow\" onclick=\"toggleFolder('0_2_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\" target=\"_self\">Camera</a></td><td class=\"desc\">Several different camera implementations </td></tr>\n<tr id=\"row_0_2_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\" target=\"_self\">Camera</a></td><td class=\"desc\">Interface API for cameras </td></tr>\n<tr id=\"row_0_2_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\" target=\"_self\">FirstPersonCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_1_\" class=\"arrow\" onclick=\"toggleFolder('0_2_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\" target=\"_self\">Kitchensink</a></td><td class=\"desc\">Extension containing random stuff that doesn't fit in anywhere else </td></tr>\n<tr id=\"row_0_2_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\" target=\"_self\">AIAgent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\" target=\"_self\">AIPackage</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\" target=\"_self\">AIVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\" target=\"_self\">AnimationStateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\" target=\"_self\">AnimationTable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\" target=\"_self\">AnimState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\" target=\"_self\">AnimStateSpace</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\" target=\"_self\">AnimStateTransitionDefault</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\" target=\"_self\">AnimStateTransitionFrom</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\" target=\"_self\">AnimStateTransitionInto</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\" target=\"_self\">Attribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\" target=\"_self\">AttributeContainer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\" target=\"_self\">AttributeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\" target=\"_self\">BaseAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\" target=\"_self\">BaseFactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\" target=\"_self\">Breakable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\" target=\"_self\">Button</a></td><td class=\"desc\">Essentially a func_door </td></tr>\n<tr id=\"row_0_2_1_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\" target=\"_self\">Character</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_18_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\" target=\"_self\">CharacterClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_19_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\" target=\"_self\">CharacterDisposition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_20_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\" target=\"_self\">DebugShape</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_21_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\" target=\"_self\">DebugText</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_22_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\" target=\"_self\">DialogAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_23_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\" target=\"_self\">DialogCondition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_24_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\" target=\"_self\">DialogController</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_25_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\" target=\"_self\">DialogTopic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_26_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\" target=\"_self\">Effect</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_27_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\" target=\"_self\">EntityChildren</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_28_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\" target=\"_self\">Faction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_29_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\" target=\"_self\">FactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_30_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\" target=\"_self\">FactionRelation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_31_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\" target=\"_self\">InitialAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_32_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\" target=\"_self\">Inventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_33_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\" target=\"_self\">InventoryFactoryInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_34_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\" target=\"_self\">InventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_35_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\" target=\"_self\">ItemClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_36_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\" target=\"_self\">ItemInstance</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_37_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\" target=\"_self\">KitchensinkMenuList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_38_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\" target=\"_self\">ListDialog</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_39_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\" target=\"_self\">ListInventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_40_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\" target=\"_self\">ListInventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_41_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\" target=\"_self\">ListTrade</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_42_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\" target=\"_self\">Pickup</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_43_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\" target=\"_self\">Quest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_44_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\" target=\"_self\">QuestEntity</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_45_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\" target=\"_self\">QuestList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_46_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\" target=\"_self\">QuestTrigger</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_47_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\" target=\"_self\">QuestVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_48_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\" target=\"_self\">SoundTable</a></td><td class=\"desc\">Maps actions to sounds </td></tr>\n<tr id=\"row_0_2_1_49_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\" target=\"_self\">Train</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_50_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\" target=\"_self\">TriggerAutosave</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_51_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\" target=\"_self\">TriggerHurt</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_52_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\" target=\"_self\">TriggerMultiple</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_53_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\" target=\"_self\">TriggerOnce</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_54_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\" target=\"_self\">TriggerPlayerMovement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_55_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\" target=\"_self\">TriggerPush</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_56_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\" target=\"_self\">TriggerRemove</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_57_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\" target=\"_self\">TriggerTeleport</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_1_58_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\" target=\"_self\">Water</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_2_\" class=\"arrow\" onclick=\"toggleFolder('0_2_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\" target=\"_self\">Menu</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework </td></tr>\n<tr id=\"row_0_2_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\" target=\"_self\">Console</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\" target=\"_self\">DebugMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\" target=\"_self\">EntityPicker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\" target=\"_self\">EntityProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\" target=\"_self\">EventEmit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\" target=\"_self\">EventIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" target=\"_self\">Intercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\" target=\"_self\">InterceptMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\" target=\"_self\">ListSelection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\" target=\"_self\">LogIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" target=\"_self\">Menu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\" target=\"_self\">MessageIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\" target=\"_self\">MessageSend</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\" target=\"_self\">Options</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\" target=\"_self\">SettingsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\" target=\"_self\">SignalMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\" target=\"_self\">StatisticsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\" target=\"_self\">SystemMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_2_18_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\" target=\"_self\">WorldCellProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_3_\" class=\"arrow\" onclick=\"toggleFolder('0_2_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\" target=\"_self\">Scripting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_3_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_3_0_\" class=\"arrow\" onclick=\"toggleFolder('0_2_3_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\" target=\"_self\">Lua</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system </td></tr>\n<tr id=\"row_0_2_3_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\" target=\"_self\">Lua</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_\" class=\"arrow\" onclick=\"toggleFolder('0_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" target=\"_self\">GUI</a></td><td class=\"desc\">Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system </td></tr>\n<tr id=\"row_0_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\" target=\"_self\">FrameObject</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_4_\" class=\"arrow\" onclick=\"toggleFolder('0_4_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_physics.html\" target=\"_self\">Physics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_4_0_\" class=\"arrow\" onclick=\"toggleFolder('0_4_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" target=\"_self\">API</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a> </td></tr>\n<tr id=\"row_0_4_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\" target=\"_self\">CallbackMotionState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\" target=\"_self\">CollisionShapeTransform</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\" target=\"_self\">ObjectCollision</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\" target=\"_self\">PhysicsDebugDraw</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\" target=\"_self\">RigidbodyMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\" target=\"_self\">ShapecastCallback</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\" target=\"_self\">Collision</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data </td></tr>\n<tr id=\"row_0_4_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\" target=\"_self\">CollisionModel</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model </td></tr>\n<tr id=\"row_0_4_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" target=\"_self\">CollisionShape</a></td><td class=\"desc\">Shape for a collider </td></tr>\n<tr id=\"row_0_4_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\" target=\"_self\">collisionshape_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\" target=\"_self\">CollisionTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\" target=\"_self\">PathAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\" target=\"_self\">rigidbody_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\" target=\"_self\">trigger_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_5_\" class=\"arrow\" onclick=\"toggleFolder('0_5_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render.html\" target=\"_self\">Render</a></td><td class=\"desc\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a> </td></tr>\n<tr id=\"row_0_5_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_5_0_\" class=\"arrow\" onclick=\"toggleFolder('0_5_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\" target=\"_self\">AABB</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\" target=\"_self\">AABBLeaf</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\" target=\"_self\">QueryResponse</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_5_1_\" class=\"arrow\" onclick=\"toggleFolder('0_5_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" target=\"_self\">API</a></td><td class=\"desc\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a> </td></tr>\n<tr id=\"row_0_5_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\" target=\"_self\">ClipPoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\" target=\"_self\">ClipTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\" target=\"_self\">ColorVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\" target=\"_self\">D3DDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\" target=\"_self\">D3DLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\" target=\"_self\">DynamicVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\" target=\"_self\">FFPHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\" target=\"_self\">FragmentShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\" target=\"_self\">FVFHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\" target=\"_self\">GLDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\" target=\"_self\">GLLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\" target=\"_self\">GLMaterial</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\" target=\"_self\">LayerParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\" target=\"_self\">LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\" target=\"_self\">LinkedShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\" target=\"_self\">Point2D</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\" target=\"_self\">Scanline</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\" target=\"_self\">ScanlineBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\" target=\"_self\">ShaderBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\" target=\"_self\">ShaderUniformMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\" target=\"_self\">ShaderUniformModelMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\" target=\"_self\">StaticVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\" target=\"_self\">SWDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\" target=\"_self\">SWIndexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_24_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\" target=\"_self\">SWLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_25_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\" target=\"_self\">SWTexture</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_26_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\" target=\"_self\">SWVertexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_27_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\" target=\"_self\">VertexBufferMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_1_28_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\" target=\"_self\">VertexShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_5_2_\" class=\"arrow\" onclick=\"toggleFolder('0_5_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\" target=\"_self\">LightTree</a></td><td class=\"desc\">Scene light tree </td></tr>\n<tr id=\"row_0_5_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\" target=\"_self\">Light</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\" target=\"_self\">AABBTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" target=\"_self\">Animation</a></td><td class=\"desc\">Skeletal animation for a 3D model </td></tr>\n<tr id=\"row_0_5_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" target=\"_self\">Bone</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton </td></tr>\n<tr id=\"row_0_5_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\" target=\"_self\">BucketMapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\" target=\"_self\">drawlistentry_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\" target=\"_self\">DynamicModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\" target=\"_self\">DynamicModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\" target=\"_self\">indexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\" target=\"_self\">IndexRange</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" target=\"_self\">Keyframe</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation </td></tr>\n<tr id=\"row_0_5_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\" target=\"_self\">KeyframeHeader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\" target=\"_self\">light_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_5_15_\" class=\"arrow\" onclick=\"toggleFolder('0_5_15_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" target=\"_self\">LightGraph</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource </td></tr>\n<tr id=\"row_0_5_15_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\" target=\"_self\">LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" target=\"_self\">Material</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource </td></tr>\n<tr id=\"row_0_5_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\" target=\"_self\">material_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\" target=\"_self\">Model</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\" target=\"_self\">ModelAABB</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\" target=\"_self\">ModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\" target=\"_self\">Pose</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\" target=\"_self\">RegisteredVertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_24_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\" target=\"_self\">SphericalHarmonic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_25_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" target=\"_self\">Sprite</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource </td></tr>\n<tr id=\"row_0_5_26_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\" target=\"_self\">spritearray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_27_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\" target=\"_self\">SpriteFrame</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_28_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\" target=\"_self\">SpritePoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_29_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\" target=\"_self\">SpriteVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_30_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\" target=\"_self\">StaticModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_31_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\" target=\"_self\">StaticModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_32_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\" target=\"_self\">texturehandle_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_33_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\" target=\"_self\">Triangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_34_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\" target=\"_self\">TriangleBucket</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_35_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\" target=\"_self\">vertexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_36_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\" target=\"_self\">VertexAttribute</a></td><td class=\"desc\">Atributes for vertex buffer vertices </td></tr>\n<tr id=\"row_0_5_37_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\" target=\"_self\">VertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_6_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_6_\" class=\"arrow\" onclick=\"toggleFolder('0_6_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_script.html\" target=\"_self\">Script</a></td><td class=\"desc\">Scripting API </td></tr>\n<tr id=\"row_0_6_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\" target=\"_self\">Interface</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_7_\" class=\"arrow\" onclick=\"toggleFolder('0_7_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\" target=\"_self\">ScriptableType</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_7_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\" target=\"_self\">ScriptableTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_8_\" class=\"arrow\" onclick=\"toggleFolder('0_8_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_settings.html\" target=\"_self\">Settings</a></td><td class=\"desc\">Application setting management and CLI command parser </td></tr>\n<tr id=\"row_0_8_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\" target=\"_self\">Property</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\" target=\"_self\">RawSetting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\" target=\"_self\">SettingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_9_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_9_\" class=\"arrow\" onclick=\"toggleFolder('0_9_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_stats.html\" target=\"_self\">Stats</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics </td></tr>\n<tr id=\"row_0_9_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\" target=\"_self\">SystemStat</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_\" class=\"arrow\" onclick=\"toggleFolder('0_10_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_system.html\" target=\"_self\">System</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking </td></tr>\n<tr id=\"row_0_10_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\" target=\"_self\">SystemInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_11_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_11_\" class=\"arrow\" onclick=\"toggleFolder('0_11_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_u_i.html\" target=\"_self\">UI</a></td><td class=\"desc\">User interface system </td></tr>\n<tr id=\"row_0_11_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\" target=\"_self\">KeyBinding</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_12_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_12_\" class=\"arrow\" onclick=\"toggleFolder('0_12_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\" target=\"_self\">AABBTree</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_12_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_13_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_13_\" class=\"arrow\" onclick=\"toggleFolder('0_13_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_animation_component.html\" target=\"_self\">AnimationComponent</a></td><td class=\"desc\">Plays back Animations </td></tr>\n<tr id=\"row_0_13_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\" target=\"_self\">AnimationPlaybackInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_14_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_component.html\" target=\"_self\">AudioComponent</a></td><td class=\"desc\">Plays back Sounds </td></tr>\n<tr id=\"row_0_15_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_component.html\" target=\"_self\">Component</a></td><td class=\"desc\">Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer </td></tr>\n<tr id=\"row_0_16_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_controller_component.html\" target=\"_self\">ControllerComponent</a></td><td class=\"desc\">Provides an API for character controllers </td></tr>\n<tr id=\"row_0_17_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_crate.html\" target=\"_self\">Crate</a></td><td class=\"desc\">3D Model with a rigidbody attached to it </td></tr>\n<tr id=\"row_0_18_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decal_component.html\" target=\"_self\">DecalComponent</a></td><td class=\"desc\">Projects decals onto the scene </td></tr>\n<tr id=\"row_0_19_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decoration.html\" target=\"_self\">Decoration</a></td><td class=\"desc\">3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it </td></tr>\n<tr id=\"row_0_20_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_reader.html\" target=\"_self\">DiskReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_21_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_writer.html\" target=\"_self\">DiskWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_22_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_edge.html\" target=\"_self\">Edge</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_23_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_23_\" class=\"arrow\" onclick=\"toggleFolder('0_23_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity.html\" target=\"_self\">Entity</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class </td></tr>\n<tr id=\"row_0_23_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\" target=\"_self\">FieldInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_24_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity_component.html\" target=\"_self\">EntityComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class </td></tr>\n<tr id=\"row_0_25_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\" target=\"_self\">EntityTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_26_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_event.html\" target=\"_self\">Event</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data </td></tr>\n<tr id=\"row_0_27_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_event_listener.html\" target=\"_self\">EventListener</a></td><td class=\"desc\">Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners </td></tr>\n<tr id=\"row_0_28_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file.html\" target=\"_self\">File</a></td><td class=\"desc\">Very fast file reader/writer </td></tr>\n<tr id=\"row_0_29_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader.html\" target=\"_self\">FileReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_30_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\" target=\"_self\">FileReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_31_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_file_source.html\" target=\"_self\">FileSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_32_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer.html\" target=\"_self\">FileWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_33_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\" target=\"_self\">FileWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_34_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\" target=\"_self\">FPSControllerComponent</a></td><td class=\"desc\">Implementation of an FPS-style character controller </td></tr>\n<tr id=\"row_0_35_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_graph.html\" target=\"_self\">Graph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_36_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_36_\" class=\"arrow\" onclick=\"toggleFolder('0_36_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_hashmap.html\" target=\"_self\">Hashmap</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_36_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\" target=\"_self\">Record</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_37_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light.html\" target=\"_self\">Light</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper </td></tr>\n<tr id=\"row_0_38_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light_component.html\" target=\"_self\">LightComponent</a></td><td class=\"desc\">Provides a real-time illumination for the scene </td></tr>\n<tr id=\"row_0_39_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_listener_info.html\" target=\"_self\">ListenerInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_40_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_marker.html\" target=\"_self\">Marker</a></td><td class=\"desc\">Functionally inert </td></tr>\n<tr id=\"row_0_41_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_message.html\" target=\"_self\">Message</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data </td></tr>\n<tr id=\"row_0_42_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_navmesh.html\" target=\"_self\">Navmesh</a></td><td class=\"desc\">Not fully implemented yet </td></tr>\n<tr id=\"row_0_43_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\" target=\"_self\">NavmeshNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_44_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_45_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_45_\" class=\"arrow\" onclick=\"toggleFolder('0_45_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_octree.html\" target=\"_self\">Octree</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_45_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\" target=\"_self\">NearestSearch</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_45_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_46_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_46_\" class=\"arrow\" onclick=\"toggleFolder('0_46_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_particle_component.html\" target=\"_self\">ParticleComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_0_46_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\" target=\"_self\">Particle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_47_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path.html\" target=\"_self\">Path</a></td><td class=\"desc\">Base class for graphs </td></tr>\n<tr id=\"row_0_48_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\" target=\"_self\">PathEdgeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_49_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path_follower.html\" target=\"_self\">PathFollower</a></td><td class=\"desc\">Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a> </td></tr>\n<tr id=\"row_0_50_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_component.html\" target=\"_self\">PhysicsComponent</a></td><td class=\"desc\">Rigidbody wrapper </td></tr>\n<tr id=\"row_0_51_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player.html\" target=\"_self\">Player</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it </td></tr>\n<tr id=\"row_0_52_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player_component.html\" target=\"_self\">PlayerComponent</a></td><td class=\"desc\">Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </td></tr>\n<tr id=\"row_0_53_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_53_\" class=\"arrow\" onclick=\"toggleFolder('0_53_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool.html\" target=\"_self\">Pool</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_53_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\" target=\"_self\">iterator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_54_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\" target=\"_self\">PoolProxy</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_55_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\" target=\"_self\">PoolPtr</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_56_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_queue.html\" target=\"_self\">Queue</a></td><td class=\"desc\">Simple queue implementation </td></tr>\n<tr id=\"row_0_57_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\" target=\"_self\">RaycastControllerComponent</a></td><td class=\"desc\">Implementation of a simple character controller </td></tr>\n<tr id=\"row_0_58_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_component.html\" target=\"_self\">RenderComponent</a></td><td class=\"desc\">Renders a Model </td></tr>\n<tr id=\"row_0_59_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource.html\" target=\"_self\">Resource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_60_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\" target=\"_self\">ResourceProxy</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_61_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_scriptable.html\" target=\"_self\">Scriptable</a></td><td class=\"desc\">Provides script language subclassing </td></tr>\n<tr id=\"row_0_62_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" target=\"_self\">SharedEntityData</a></td><td class=\"desc\">Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters </td></tr>\n<tr id=\"row_0_63_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_signal.html\" target=\"_self\">Signal</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template </td></tr>\n<tr id=\"row_0_64_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_signal_table.html\" target=\"_self\">SignalTable</a></td><td class=\"desc\">List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates </td></tr>\n<tr id=\"row_0_65_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sound.html\" target=\"_self\">Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper </td></tr>\n<tr id=\"row_0_66_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_spinlock.html\" target=\"_self\">Spinlock</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_67_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sprite_component.html\" target=\"_self\">SpriteComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_0_68_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack.html\" target=\"_self\">Stack</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_69_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack_pool.html\" target=\"_self\">StackPool</a></td><td class=\"desc\">Allocator </td></tr>\n<tr id=\"row_0_70_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_static_world_object.html\" target=\"_self\">StaticWorldObject</a></td><td class=\"desc\">Worldspawn </td></tr>\n<tr id=\"row_0_71_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_template_component.html\" target=\"_self\">TemplateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_72_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\" target=\"_self\">TextReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_73_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\" target=\"_self\">TextWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_74_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_transition.html\" target=\"_self\">Transition</a></td><td class=\"desc\">Connects WorldCells together </td></tr>\n<tr id=\"row_0_75_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger.html\" target=\"_self\">Trigger</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper </td></tr>\n<tr id=\"row_0_76_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" target=\"_self\">TriggerComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper </td></tr>\n<tr id=\"row_0_77_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_d.html\" target=\"_self\">UID</a></td><td class=\"desc\">Interned string type </td></tr>\n<tr id=\"row_0_78_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value.html\" target=\"_self\">Value</a></td><td class=\"desc\">Generic, type-safe union </td></tr>\n<tr id=\"row_0_79_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_array.html\" target=\"_self\">ValueArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_80_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_ptr.html\" target=\"_self\">ValuePtr</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_81_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_world_cell.html\" target=\"_self\">WorldCell</a></td><td class=\"desc\">World streaming unit </td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"struct__test__case.html\" target=\"_self\">_test_case</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_reader.html\" target=\"_self\">FileReader</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> reading backend API </td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_writer.html\" target=\"_self\">FileWriter</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> writing backend API </td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" target=\"_self\">SoundGraph</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" title=\"SoundGraph resource.\">SoundGraph</a> resource </td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/api_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/api.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#define-members\">Macros</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">api.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"openal_8h_source.html\">audio/openal/openal.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"spatial_8h_source.html\">audio/spatial/spatial.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a55d13456a2eb64d6723410f84ea7a584\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"api_8cpp.html#a55d13456a2eb64d6723410f84ea7a584\">AUDIO_SYSTEM</a>&#160;&#160;&#160;OpenAL</td></tr>\n<tr class=\"separator:a55d13456a2eb64d6723410f84ea7a584\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:ae4700c24d6f820914c7f36ea15203727\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener position.  <a href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">More...</a><br /></td></tr>\n<tr class=\"separator:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd913701b5ffec0d613acaca89266eab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:acd913701b5ffec0d613acaca89266eab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener orientation.  <a href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">More...</a><br /></td></tr>\n<tr class=\"separator:acd913701b5ffec0d613acaca89266eab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36a32ffe56cae4e037d76a814437ca9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiobuffer_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a36a32ffe56cae4e037d76a814437ca9e\">tram::Audio::MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels, int32_t &amp;buffer_count)</td></tr>\n<tr class=\"memdesc:a36a32ffe56cae4e037d76a814437ca9e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates audio buffers from raw audio data.  <a href=\"namespacetram_1_1_audio.html#a36a32ffe56cae4e037d76a814437ca9e\">More...</a><br /></td></tr>\n<tr class=\"separator:a36a32ffe56cae4e037d76a814437ca9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fe3895d604fbacb627c325a2e9ceb5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a7fe3895d604fbacb627c325a2e9ceb5d\">tram::Audio::RemoveAudioBuffer</a> (audiobuffer_t *buffer, int32_t buffer_count)</td></tr>\n<tr class=\"memdesc:a7fe3895d604fbacb627c325a2e9ceb5d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes audio buffers.  <a href=\"namespacetram_1_1_audio.html#a7fe3895d604fbacb627c325a2e9ceb5d\">More...</a><br /></td></tr>\n<tr class=\"separator:a7fe3895d604fbacb627c325a2e9ceb5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4850c78bf055547e03d29aebb3ed8e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiosource_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#af4850c78bf055547e03d29aebb3ed8e1\">tram::Audio::MakeAudioSource</a> ()</td></tr>\n<tr class=\"memdesc:af4850c78bf055547e03d29aebb3ed8e1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an audio source.  <a href=\"namespacetram_1_1_audio.html#af4850c78bf055547e03d29aebb3ed8e1\">More...</a><br /></td></tr>\n<tr class=\"separator:af4850c78bf055547e03d29aebb3ed8e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dfa2dd08b3f47e14d1205c41344bb52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a0dfa2dd08b3f47e14d1205c41344bb52\">tram::Audio::SetAudioSourcePitch</a> (audiosource_t source, float pitch)</td></tr>\n<tr class=\"memdesc:a0dfa2dd08b3f47e14d1205c41344bb52\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the pitch of an audio source.  <a href=\"namespacetram_1_1_audio.html#a0dfa2dd08b3f47e14d1205c41344bb52\">More...</a><br /></td></tr>\n<tr class=\"separator:a0dfa2dd08b3f47e14d1205c41344bb52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a81bf25abb3924d2e24c1a8276d9757\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a9a81bf25abb3924d2e24c1a8276d9757\">tram::Audio::SetAudioSourceGain</a> (audiosource_t source, float gain)</td></tr>\n<tr class=\"memdesc:a9a81bf25abb3924d2e24c1a8276d9757\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the gain of an audio source.  <a href=\"namespacetram_1_1_audio.html#a9a81bf25abb3924d2e24c1a8276d9757\">More...</a><br /></td></tr>\n<tr class=\"separator:a9a81bf25abb3924d2e24c1a8276d9757\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7609ff94666f32614db22582839ac47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ab7609ff94666f32614db22582839ac47\">tram::Audio::SetAudioSourcePosition</a> (audiosource_t source, vec3 position)</td></tr>\n<tr class=\"memdesc:ab7609ff94666f32614db22582839ac47\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of an audio source.  <a href=\"namespacetram_1_1_audio.html#ab7609ff94666f32614db22582839ac47\">More...</a><br /></td></tr>\n<tr class=\"separator:ab7609ff94666f32614db22582839ac47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a099a908a6d05e82d515682e7ed848082\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a099a908a6d05e82d515682e7ed848082\">tram::Audio::SetAudioSourceVelocity</a> (audiosource_t source, vec3 velocity)</td></tr>\n<tr class=\"memdesc:a099a908a6d05e82d515682e7ed848082\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of an audio source.  <a href=\"namespacetram_1_1_audio.html#a099a908a6d05e82d515682e7ed848082\">More...</a><br /></td></tr>\n<tr class=\"separator:a099a908a6d05e82d515682e7ed848082\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39c6ae1cf084e092761ee6ca31bff677\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a39c6ae1cf084e092761ee6ca31bff677\">tram::Audio::SetAudioSourceRepeating</a> (audiosource_t source, bool repeating)</td></tr>\n<tr class=\"memdesc:a39c6ae1cf084e092761ee6ca31bff677\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repetition of an audio source.  <a href=\"namespacetram_1_1_audio.html#a39c6ae1cf084e092761ee6ca31bff677\">More...</a><br /></td></tr>\n<tr class=\"separator:a39c6ae1cf084e092761ee6ca31bff677\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453e786ca0391321dbaacf754c93af21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a453e786ca0391321dbaacf754c93af21\">tram::Audio::SetAudioSourceBuffer</a> (audiosource_t source, const audiobuffer_t *buffers, int32_t buffer_count)</td></tr>\n<tr class=\"memdesc:a453e786ca0391321dbaacf754c93af21\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the buffers that the audio source will play.  <a href=\"namespacetram_1_1_audio.html#a453e786ca0391321dbaacf754c93af21\">More...</a><br /></td></tr>\n<tr class=\"separator:a453e786ca0391321dbaacf754c93af21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a956355ac5eab6086bd7b8fba0214423e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a956355ac5eab6086bd7b8fba0214423e\">tram::Audio::PlayAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a956355ac5eab6086bd7b8fba0214423e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an audio source.  <a href=\"namespacetram_1_1_audio.html#a956355ac5eab6086bd7b8fba0214423e\">More...</a><br /></td></tr>\n<tr class=\"separator:a956355ac5eab6086bd7b8fba0214423e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ec0e09fbf21a78ff241b4167dcca710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a6ec0e09fbf21a78ff241b4167dcca710\">tram::Audio::PauseAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a6ec0e09fbf21a78ff241b4167dcca710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the audio source.  <a href=\"namespacetram_1_1_audio.html#a6ec0e09fbf21a78ff241b4167dcca710\">More...</a><br /></td></tr>\n<tr class=\"separator:a6ec0e09fbf21a78ff241b4167dcca710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab31a9bcdfccd10eb2f5e3b46c54b5e32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ab31a9bcdfccd10eb2f5e3b46c54b5e32\">tram::Audio::StopAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:ab31a9bcdfccd10eb2f5e3b46c54b5e32\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the audio source.  <a href=\"namespacetram_1_1_audio.html#ab31a9bcdfccd10eb2f5e3b46c54b5e32\">More...</a><br /></td></tr>\n<tr class=\"separator:ab31a9bcdfccd10eb2f5e3b46c54b5e32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ba1ad026a986014e58958e584cfc651\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a5ba1ad026a986014e58958e584cfc651\">tram::Audio::IsAudioSourcePlaying</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a5ba1ad026a986014e58958e584cfc651\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an audio source is playing.  <a href=\"namespacetram_1_1_audio.html#a5ba1ad026a986014e58958e584cfc651\">More...</a><br /></td></tr>\n<tr class=\"separator:a5ba1ad026a986014e58958e584cfc651\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef3ac76e01f83af6fe417fccad8736dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#aef3ac76e01f83af6fe417fccad8736dc\">tram::Audio::RemoveAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:aef3ac76e01f83af6fe417fccad8736dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes an audio source.  <a href=\"namespacetram_1_1_audio.html#aef3ac76e01f83af6fe417fccad8736dc\">More...</a><br /></td></tr>\n<tr class=\"separator:aef3ac76e01f83af6fe417fccad8736dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"a55d13456a2eb64d6723410f84ea7a584\" name=\"a55d13456a2eb64d6723410f84ea7a584\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55d13456a2eb64d6723410f84ea7a584\">&#9670;&nbsp;</a></span>AUDIO_SYSTEM</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define AUDIO_SYSTEM&#160;&#160;&#160;OpenAL</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/async_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/async.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">async.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of the Async system.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"queue_8h_source.html\">templates/queue.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"async_8h_source.html\">framework/async.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;thread&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_async\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">tram::Async</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_async\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a3852629b110e5e57e85140bb5fe518e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">tram::Async::RequestNotification</a> { <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\">tram::Async::NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\">tram::Async::COMPONENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\">tram::Async::CALLBACK</a>\n }</td></tr>\n<tr class=\"separator:a3852629b110e5e57e85140bb5fe518e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async::RequestResource</a> (EntityComponent *requester, Resource *resource)</td></tr>\n<tr class=\"memdesc:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">tram::Async::RequestResource</a> (void(*callback)(void *data), void *data, Resource *resource)</td></tr>\n<tr class=\"memdesc:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async::CancelRequest</a> (EntityComponent *requester, Resource *resource)</td></tr>\n<tr class=\"memdesc:a00df174c441553df6c3728c4355a4b7e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Cancels a resource load request.  <a href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">More...</a><br /></td></tr>\n<tr class=\"separator:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">tram::Async::LoadDependency</a> (Resource *resource)</td></tr>\n<tr class=\"memdesc:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a resource from disk, skipping the queue.  <a href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">More...</a><br /></td></tr>\n<tr class=\"separator:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15485706aae380a728a9e771feabb503\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">tram::Async::LoadResourcesFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:a15485706aae380a728a9e771feabb503\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the first resource queue.  <a href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">More...</a><br /></td></tr>\n<tr class=\"separator:a15485706aae380a728a9e771feabb503\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">tram::Async::LoadResourcesFromMemory</a> ()</td></tr>\n<tr class=\"memdesc:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the second resource queue.  <a href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">More...</a><br /></td></tr>\n<tr class=\"separator:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async::FinishResources</a> ()</td></tr>\n<tr class=\"memdesc:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies EntityComponents about finished resources.  <a href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">More...</a><br /></td></tr>\n<tr class=\"separator:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">tram::Async::Init</a> (size_t threads)</td></tr>\n<tr class=\"memdesc:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">More...</a><br /></td></tr>\n<tr class=\"separator:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">tram::Async::Yeet</a> ()</td></tr>\n<tr class=\"memdesc:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">More...</a><br /></td></tr>\n<tr class=\"separator:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af447ff406255f241322da550d5d027a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">tram::Async::GetWaitingResources</a> ()</td></tr>\n<tr class=\"memdesc:af447ff406255f241322da550d5d027a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns number of resources in queues.  <a href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">More...</a><br /></td></tr>\n<tr class=\"separator:af447ff406255f241322da550d5d027a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of the Async system. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/async_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/async.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">async.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cmath&gt;</code><br />\n</div>\n<p><a href=\"async_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_async\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">tram::Async</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_async\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async::RequestResource</a> (EntityComponent *requester, Resource *resource)</td></tr>\n<tr class=\"memdesc:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">tram::Async::RequestResource</a> (void(*callback)(void *data), void *data, Resource *resource)</td></tr>\n<tr class=\"memdesc:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async::CancelRequest</a> (EntityComponent *requester, Resource *resource)</td></tr>\n<tr class=\"memdesc:a00df174c441553df6c3728c4355a4b7e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Cancels a resource load request.  <a href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">More...</a><br /></td></tr>\n<tr class=\"separator:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">tram::Async::LoadDependency</a> (Resource *resource)</td></tr>\n<tr class=\"memdesc:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a resource from disk, skipping the queue.  <a href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">More...</a><br /></td></tr>\n<tr class=\"separator:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">tram::Async::Init</a> (size_t threads)</td></tr>\n<tr class=\"memdesc:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">More...</a><br /></td></tr>\n<tr class=\"separator:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">tram::Async::Yeet</a> ()</td></tr>\n<tr class=\"memdesc:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">More...</a><br /></td></tr>\n<tr class=\"separator:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15485706aae380a728a9e771feabb503\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">tram::Async::LoadResourcesFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:a15485706aae380a728a9e771feabb503\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the first resource queue.  <a href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">More...</a><br /></td></tr>\n<tr class=\"separator:a15485706aae380a728a9e771feabb503\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">tram::Async::LoadResourcesFromMemory</a> ()</td></tr>\n<tr class=\"memdesc:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the second resource queue.  <a href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">More...</a><br /></td></tr>\n<tr class=\"separator:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async::FinishResources</a> ()</td></tr>\n<tr class=\"memdesc:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies EntityComponents about finished resources.  <a href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">More...</a><br /></td></tr>\n<tr class=\"separator:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af447ff406255f241322da550d5d027a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">tram::Async::GetWaitingResources</a> ()</td></tr>\n<tr class=\"memdesc:af447ff406255f241322da550d5d027a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns number of resources in queues.  <a href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">More...</a><br /></td></tr>\n<tr class=\"separator:af447ff406255f241322da550d5d027a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/async_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/async.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">async.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"async_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_ASYNC_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_ASYNC_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cmath&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">class </span>EntityComponent;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">class </span><a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_async.html\">tram::Async</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">RequestResource</a>(EntityComponent* requester, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>* resource);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">RequestResource</a>(<span class=\"keywordtype\">void</span>(*callback)(<span class=\"keywordtype\">void</span>* data), <span class=\"keywordtype\">void</span>* data, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>* resource);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">CancelRequest</a>(EntityComponent* requester, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>* resource);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">LoadDependency</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>* res);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">Init</a>(<span class=\"keywordtype\">size_t</span> threads = 1);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">Yeet</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">LoadResourcesFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">LoadResourcesFromMemory</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">FinishResources</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">GetWaitingResources</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>}</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_ASYNC_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html\">tram::Async</a></div><div class=\"ttdoc\">Multi-threading and Resource streaming.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a00df174c441553df6c3728c4355a4b7e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async::CancelRequest</a></div><div class=\"ttdeci\">void CancelRequest(EntityComponent *requester, Resource *resource)</div><div class=\"ttdoc\">Cancels a resource load request.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:126</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a15485706aae380a728a9e771feabb503\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">tram::Async::LoadResourcesFromDisk</a></div><div class=\"ttdeci\">void LoadResourcesFromDisk()</div><div class=\"ttdoc\">Processes the first resource queue.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:198</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a165152c16b8171d9a4acdfd2d80592de\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">tram::Async::LoadResourcesFromMemory</a></div><div class=\"ttdeci\">void LoadResourcesFromMemory()</div><div class=\"ttdoc\">Processes the second resource queue.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:228</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a808bec0c78a3d989b202cc84afed0cfb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">tram::Async::Yeet</a></div><div class=\"ttdeci\">void Yeet()</div><div class=\"ttdoc\">Stops the async resource loader thread.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:284</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a9db009e1493d70c2ce388b2910e32fa2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async::RequestResource</a></div><div class=\"ttdeci\">void RequestResource(EntityComponent *requester, Resource *resource)</div><div class=\"ttdoc\">Adds a resource to the loading queue.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:91</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a9e1b28345fded87fa20aee192ddcce0f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">tram::Async::LoadDependency</a></div><div class=\"ttdeci\">void LoadDependency(Resource *resource)</div><div class=\"ttdoc\">Loads a resource from disk, skipping the queue.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:137</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_abf1180d68deb60ea65e90073f8f8eaf0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">tram::Async::Init</a></div><div class=\"ttdeci\">void Init(size_t threads)</div><div class=\"ttdoc\">Starts the async resource loader thread.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:262</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_aed73e549dce7f281ed1d2d8bb31c7b65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async::FinishResources</a></div><div class=\"ttdeci\">void FinishResources()</div><div class=\"ttdoc\">Notifies EntityComponents about finished resources.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:243</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_af447ff406255f241322da550d5d027a3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">tram::Async::GetWaitingResources</a></div><div class=\"ttdeci\">size_t GetWaitingResources()</div><div class=\"ttdoc\">Returns number of resources in queues.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:299</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a3308525cd94517390ff06b22b9fef78e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats::Resource</a></div><div class=\"ttdeci\">Resource</div><div class=\"ttdef\"><b>Definition:</b> stats.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/attributes_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/attributes.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">attributes.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">extensions/kitchensink/attributes.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aaea789ed77d5f63e8cfe9f4ca2a4ac42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; AttributeContainer * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42\">tram::Ext::Kitchensink::containers</a> (&quot;Ext::Kitchensink::AttributeContainer Hashmap&quot;, ATTRIBUTE_CONTAINER_COUNT)</td></tr>\n<tr class=\"separator:aaea789ed77d5f63e8cfe9f4ca2a4ac42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af26c7178edaf07fc00c3ffb0048472c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; AttributeInfo * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5\">tram::Ext::Kitchensink::infos</a> (&quot;Ext::Kitchensink::AttributeInfo Hashmap&quot;, ATTRIBUTE_INFO_COUNT)</td></tr>\n<tr class=\"separator:af26c7178edaf07fc00c3ffb0048472c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a84627f70639f661d824e70f33c21021d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8cpp.html#a84627f70639f661d824e70f33c21021d\">ATTRIBUTE_CONTAINER_COUNT</a> = 50</td></tr>\n<tr class=\"separator:a84627f70639f661d824e70f33c21021d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b8616fa5aa349f32551242738af8269\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269\">ATTRIBUTE_INFO_COUNT</a> = 50</td></tr>\n<tr class=\"separator:a9b8616fa5aa349f32551242738af8269\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a84627f70639f661d824e70f33c21021d\" name=\"a84627f70639f661d824e70f33c21021d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84627f70639f661d824e70f33c21021d\">&#9670;&nbsp;</a></span>ATTRIBUTE_CONTAINER_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t ATTRIBUTE_CONTAINER_COUNT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b8616fa5aa349f32551242738af8269\" name=\"a9b8616fa5aa349f32551242738af8269\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b8616fa5aa349f32551242738af8269\">&#9670;&nbsp;</a></span>ATTRIBUTE_INFO_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t ATTRIBUTE_INFO_COUNT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/attributes_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/attributes.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">attributes.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"attributes_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a6c0031a7853f40659433180bd98fb62a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: int { <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">tram::Ext::Kitchensink::EFFECT_RAISE_BASE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">tram::Ext::Kitchensink::EFFECT_RAISE_CONSTANT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">tram::Ext::Kitchensink::EFFECT_NEGATE_CHANGE</a>\n }</td></tr>\n<tr class=\"separator:a6c0031a7853f40659433180bd98fb62a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/attributes_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/attributes.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">attributes.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"attributes_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>enum : <span class=\"keywordtype\">int</span> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">EFFECT_RAISE_BASE</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">EFFECT_RAISE_CONSTANT</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">EFFECT_NEGATE_CHANGE</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">   23</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">   24</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">name</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">   25</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">base_value</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">   26</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">affected_value</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">   27</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">effective_value</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>};</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">   30</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> {</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">   31</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">attribute</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">   32</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">name</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">   33</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tag</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">   34</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">value</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">   35</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">type</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">   36</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">flags</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">   37</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">time</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>};</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">Recalculate</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">   46</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">GetName</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">Register</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a>*);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">   50</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">name</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>};</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">   53</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> {</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">GetAttribute</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> attribute);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">GetAttributeBase</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> attribute);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">SetAttribute</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> attribute, <span class=\"keywordtype\">float</span> base_value);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">ApplyEffect</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> effect);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">RemoveEffect</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> tag);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">HasAttribute</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> type);</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">Tick</a>();</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a>* <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">Find</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>*);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a>* <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">Find</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">LoadFromDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"comment\">// maybe instead use global clock???</span></div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">   71</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">last_tick</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">   73</a></span>    std::vector&lt;Attribute&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">attributes</a>;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">   74</a></span>    std::vector&lt;Effect&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">effects</a>;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>};</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>}</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></div><div class=\"ttdef\"><b>Definition:</b> attributes.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html_a1ed7709d6bccc5c11c042e1f9062c4c8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">tram::Ext::Kitchensink::AttributeInfo::Register</a></div><div class=\"ttdeci\">static void Register(AttributeInfo *)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html_a3ee5018c065a5d17681306983e5240b5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">tram::Ext::Kitchensink::AttributeInfo::Find</a></div><div class=\"ttdeci\">static AttributeInfo * Find(name_t)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html_a4dddff605761144769af37f736b0d99a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">tram::Ext::Kitchensink::AttributeInfo::GetName</a></div><div class=\"ttdeci\">name_t GetName()</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html_a7c20f9f0740b7cb843b7f83236c7ce48\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">tram::Ext::Kitchensink::AttributeInfo::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_attribute_info_html_ab2c7811e4fd4d8ef5c00a8085d0eef4b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">tram::Ext::Kitchensink::AttributeInfo::Recalculate</a></div><div class=\"ttdeci\">virtual void Recalculate(Attribute &amp;, const AttributeContainer &amp;)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:26</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">tram::Ext::Kitchensink::EFFECT_NEGATE_CHANGE</a></div><div class=\"ttdeci\">@ EFFECT_NEGATE_CHANGE</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">tram::Ext::Kitchensink::EFFECT_RAISE_CONSTANT</a></div><div class=\"ttdeci\">@ EFFECT_RAISE_CONSTANT</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">tram::Ext::Kitchensink::EFFECT_RAISE_BASE</a></div><div class=\"ttdeci\">@ EFFECT_RAISE_BASE</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></div><div class=\"ttdef\"><b>Definition:</b> attributes.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a16dcafc82dbe7851b127f9bbf6a42933\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">tram::Ext::Kitchensink::AttributeContainer::Find</a></div><div class=\"ttdeci\">static AttributeContainer * Find(Entity *)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:116</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a33b5848afcb8d3758b9c39b5ac3de2c1\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">tram::Ext::Kitchensink::AttributeContainer::last_tick</a></div><div class=\"ttdeci\">float last_tick</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:71</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a3ee8ff405063d9cbd58792ddfb225ac7\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">tram::Ext::Kitchensink::AttributeContainer::GetAttribute</a></div><div class=\"ttdeci\">float GetAttribute(name_t attribute)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:48</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a47b495de8ee956c0871fc192ab4fa224\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">tram::Ext::Kitchensink::AttributeContainer::RemoveEffect</a></div><div class=\"ttdeci\">void RemoveEffect(name_t tag)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:80</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a5256dac8514420f9b45698cb2298c024\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">tram::Ext::Kitchensink::AttributeContainer::Tick</a></div><div class=\"ttdeci\">void Tick()</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:88</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a5ac70ad8c111191b8c1fb8dd44e706e1\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">tram::Ext::Kitchensink::AttributeContainer::GetAttributeBase</a></div><div class=\"ttdeci\">float GetAttributeBase(name_t attribute)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a683cbb898b97a9d6e6d9ee800ea965a6\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">tram::Ext::Kitchensink::AttributeContainer::attributes</a></div><div class=\"ttdeci\">std::vector&lt; Attribute &gt; attributes</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:73</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a68b8159d853b0027b4afe738b67707f9\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">tram::Ext::Kitchensink::AttributeContainer::HasAttribute</a></div><div class=\"ttdeci\">bool HasAttribute(name_t type)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:84</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a69e3f0e2bea54c85f6ae123d0409a86e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">tram::Ext::Kitchensink::AttributeContainer::LoadFromDisk</a></div><div class=\"ttdeci\">static void LoadFromDisk(const char *)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:131</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a71f44dcd6e534fd2366ee31be69497ae\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">tram::Ext::Kitchensink::AttributeContainer::effects</a></div><div class=\"ttdeci\">std::vector&lt; Effect &gt; effects</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_a7e832ff6e766b735b531d9b7e9b10a64\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">tram::Ext::Kitchensink::AttributeContainer::SetAttribute</a></div><div class=\"ttdeci\">void SetAttribute(name_t attribute, float base_value)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:62</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html_aed0fd0323979e353abd8c61dcb9384a8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">tram::Ext::Kitchensink::AttributeContainer::ApplyEffect</a></div><div class=\"ttdeci\">void ApplyEffect(Effect effect)</div><div class=\"ttdef\"><b>Definition:</b> attributes.cpp:76</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></div><div class=\"ttdef\"><b>Definition:</b> attributes.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_html_a120d6552e1adf281dad0a69266fd0d7b\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">tram::Ext::Kitchensink::Attribute::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_html_a122e60f9dedb9ba701a35eceb8c82476\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">tram::Ext::Kitchensink::Attribute::affected_value</a></div><div class=\"ttdeci\">float affected_value</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_html_a9bccf3052c467ffcd74f2d542dfa7112\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">tram::Ext::Kitchensink::Attribute::effective_value</a></div><div class=\"ttdeci\">float effective_value</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_html_ae7621d33bbc6e85404781094a53a436e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">tram::Ext::Kitchensink::Attribute::base_value</a></div><div class=\"ttdeci\">float base_value</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></div><div class=\"ttdef\"><b>Definition:</b> attributes.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_a00596a75be2bf65fa1d2e03dcfeb435b\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tram::Ext::Kitchensink::Effect::tag</a></div><div class=\"ttdeci\">name_t tag</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_a1ed0d5f39ee959afa066eef7c765e546\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">tram::Ext::Kitchensink::Effect::type</a></div><div class=\"ttdeci\">int type</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_a22bd1353836cf3bde3fed6137a801617\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">tram::Ext::Kitchensink::Effect::attribute</a></div><div class=\"ttdeci\">name_t attribute</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_a57feec2c1a36fad9bebd6884684f1fd5\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">tram::Ext::Kitchensink::Effect::value</a></div><div class=\"ttdeci\">float value</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_a72c383540fc6f43645df6c5c658bbf63\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">tram::Ext::Kitchensink::Effect::flags</a></div><div class=\"ttdeci\">int flags</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_ab233fd8a0eeb7e70c0be0b243d8ebe4a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">tram::Ext::Kitchensink::Effect::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_effect_html_af2a9120bba4c62aabf617297bda2edaf\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">tram::Ext::Kitchensink::Effect::time</a></div><div class=\"ttdeci\">float time</div><div class=\"ttdef\"><b>Definition:</b> attributes.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2api_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/api.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">api.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Audio API implementation header.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n</div>\n<p><a href=\"audio_2api_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">tram::Audio::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API::Init</a> ()</td></tr>\n<tr class=\"separator:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55057fbdf290e0782209c5b31d972488\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API::Update</a> ()</td></tr>\n<tr class=\"separator:a55057fbdf290e0782209c5b31d972488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API::Uninit</a> ()</td></tr>\n<tr class=\"separator:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c238a85c44a1be22223921bb836673b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:a8c238a85c44a1be22223921bb836673b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener position.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c238a85c44a1be22223921bb836673b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener orientation.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">More...</a><br /></td></tr>\n<tr class=\"separator:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">tram::Audio::API::SetListenerGain</a> (float gain)</td></tr>\n<tr class=\"separator:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiobuffer_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API::MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels)</td></tr>\n<tr class=\"memdesc:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates audio buffers from raw audio data.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">More...</a><br /></td></tr>\n<tr class=\"separator:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API::RemoveAudioBuffer</a> (audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes audio buffers.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiosource_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API::MakeAudioSource</a> ()</td></tr>\n<tr class=\"memdesc:a02a046aaade1a4a0290db64f9514816b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">More...</a><br /></td></tr>\n<tr class=\"separator:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API::SetAudioSourcePitch</a> (audiosource_t source, float pitch)</td></tr>\n<tr class=\"memdesc:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the pitch of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API::SetAudioSourceGain</a> (audiosource_t source, float gain)</td></tr>\n<tr class=\"memdesc:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the gain of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API::SetAudioSourcePosition</a> (audiosource_t source, vec3 position)</td></tr>\n<tr class=\"memdesc:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">More...</a><br /></td></tr>\n<tr class=\"separator:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API::SetAudioSourceVelocity</a> (audiosource_t source, vec3 velocity)</td></tr>\n<tr class=\"memdesc:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API::SetAudioSourceRepeating</a> (audiosource_t source, bool repeating)</td></tr>\n<tr class=\"memdesc:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repetition of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">More...</a><br /></td></tr>\n<tr class=\"separator:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66d344898a8b0355218f36cddc369046\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API::SetAudioSourceBuffer</a> (audiosource_t source, audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a66d344898a8b0355218f36cddc369046\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the buffers that the audio source will play.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">More...</a><br /></td></tr>\n<tr class=\"separator:a66d344898a8b0355218f36cddc369046\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API::PlayAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">More...</a><br /></td></tr>\n<tr class=\"separator:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API::PauseAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:ab58ddd72a8b81823756b0d141e015590\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">More...</a><br /></td></tr>\n<tr class=\"separator:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API::StopAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">More...</a><br /></td></tr>\n<tr class=\"separator:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API::IsAudioSourcePlaying</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an audio source is playing.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">More...</a><br /></td></tr>\n<tr class=\"separator:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af490232ec82451014fb9e858f3feca68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API::RemoveAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:af490232ec82451014fb9e858f3feca68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">More...</a><br /></td></tr>\n<tr class=\"separator:af490232ec82451014fb9e858f3feca68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Audio API implementation header. </p>\n<p >This file contains the function signatures which need to be implemented by an Audio API backend. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2api_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/api.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"audio_2api_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_API_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_API_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"audio_2audio_8h.html\">audio/audio.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">tram::Audio::API</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">SetListenerPosition</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">SetListenerOrientation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">SetListenerGain</a>(<span class=\"keywordtype\">float</span> gain);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>audiobuffer_t <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">MakeAudioBuffer</a>(<span class=\"keyword\">const</span> int16_t* audio_data, int32_t length, int32_t samples, int32_t channels);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">RemoveAudioBuffer</a>(audiobuffer_t <a class=\"code hl_variable\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">buffer</a>);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>audiosource_t <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">MakeAudioSource</a>();</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">SetAudioSourcePitch</a>(audiosource_t source, <span class=\"keywordtype\">float</span> pitch);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">SetAudioSourceGain</a>(audiosource_t source, <span class=\"keywordtype\">float</span> gain);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">SetAudioSourcePosition</a>(audiosource_t source, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">SetAudioSourceVelocity</a>(audiosource_t source, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> velocity);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">SetAudioSourceRepeating</a>(audiosource_t source, <span class=\"keywordtype\">bool</span> repeating);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">SetAudioSourceBuffer</a>(audiosource_t source, audiobuffer_t <a class=\"code hl_variable\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">buffer</a>);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">PlayAudioSource</a>(audiosource_t source);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">PauseAudioSource</a>(audiosource_t source);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">StopAudioSource</a>(audiosource_t source);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">IsAudioSourcePlaying</a>(audiosource_t source);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">RemoveAudioSource</a>(audiosource_t source);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>}</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_API_H</span></div>\n<div class=\"ttc\" id=\"aaudio_2audio_8h_html\"><div class=\"ttname\"><a href=\"audio_2audio_8h.html\">audio.h</a></div><div class=\"ttdoc\">Main interface for the Audio system.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">tram::Audio::API</a></div><div class=\"ttdoc\">Audio backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a02a046aaade1a4a0290db64f9514816b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API::MakeAudioSource</a></div><div class=\"ttdeci\">audiosource_t MakeAudioSource()</div><div class=\"ttdoc\">Creates an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:115</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a0722507591b4bba19c85e8f9d8088704\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">tram::Audio::API::SetListenerGain</a></div><div class=\"ttdeci\">void SetListenerGain(float gain)</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:76</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a0724c17fd3523893b97ee2a6aa8a090d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API::RemoveAudioBuffer</a></div><div class=\"ttdeci\">void RemoveAudioBuffer(audiobuffer_t buffer)</div><div class=\"ttdoc\">Deletes audio buffers.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:110</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a0ec692e07524255ef5c814ccbff53b1b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API::SetListenerOrientation</a></div><div class=\"ttdeci\">void SetListenerOrientation(quat orientation)</div><div class=\"ttdoc\">Sets the listener orientation.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:67</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a273ec7fe95edfbd9414878e67eadaf4b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API::SetAudioSourcePosition</a></div><div class=\"ttdeci\">void SetAudioSourcePosition(audiosource_t source, vec3 position)</div><div class=\"ttdoc\">Sets the position of an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:129</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a55057fbdf290e0782209c5b31d972488\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a66d344898a8b0355218f36cddc369046\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API::SetAudioSourceBuffer</a></div><div class=\"ttdeci\">void SetAudioSourceBuffer(audiosource_t source, audiobuffer_t buffer)</div><div class=\"ttdoc\">Sets the buffers that the audio source will play.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:141</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a7420c760d8243ed9e24b2af3a77e4e2c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API::SetAudioSourceRepeating</a></div><div class=\"ttdeci\">void SetAudioSourceRepeating(audiosource_t source, bool repeating)</div><div class=\"ttdoc\">Sets the repetition of an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:137</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a77e3f4ff9024d2adb99aab7a03cb2261\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API::StopAudioSource</a></div><div class=\"ttdeci\">void StopAudioSource(audiosource_t source)</div><div class=\"ttdoc\">Stops the audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:157</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a7a9b62489392c6a82eda4a2157cad570\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API::SetAudioSourceVelocity</a></div><div class=\"ttdeci\">void SetAudioSourceVelocity(audiosource_t source, vec3 velocity)</div><div class=\"ttdoc\">Sets the velocity of an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:133</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a8c238a85c44a1be22223921bb836673b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API::SetListenerPosition</a></div><div class=\"ttdeci\">void SetListenerPosition(vec3 position)</div><div class=\"ttdoc\">Sets the listener position.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:63</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a8d3b6a316e9eabc092a7302995d545bd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a8e6b04b5e38e41ca29049e7d3f36d596\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API::IsAudioSourcePlaying</a></div><div class=\"ttdeci\">bool IsAudioSourcePlaying(audiosource_t source)</div><div class=\"ttdoc\">Checks if an audio source is playing.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:161</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_a909017b3d28ed5fe14bac0b516770bb5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API::PlayAudioSource</a></div><div class=\"ttdeci\">void PlayAudioSource(audiosource_t source)</div><div class=\"ttdoc\">Plays an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:149</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_aa34a3e351de4035848dc1280ef3e824f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API::SetAudioSourceGain</a></div><div class=\"ttdeci\">void SetAudioSourceGain(audiosource_t source, float gain)</div><div class=\"ttdoc\">Sets the gain of an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:125</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_aa3b7d9891305e368e07d7ad863d628c6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API::SetAudioSourcePitch</a></div><div class=\"ttdeci\">void SetAudioSourcePitch(audiosource_t source, float pitch)</div><div class=\"ttdoc\">Sets the pitch of an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:121</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_aaaac5e27e3363b227c4ea0d70f8844a0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API::MakeAudioBuffer</a></div><div class=\"ttdeci\">audiobuffer_t MakeAudioBuffer(const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels)</div><div class=\"ttdoc\">Creates audio buffers from raw audio data.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:80</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_ab58ddd72a8b81823756b0d141e015590\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API::PauseAudioSource</a></div><div class=\"ttdeci\">void PauseAudioSource(audiosource_t source)</div><div class=\"ttdoc\">Pauses the audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:153</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_adb92f6546681004b6ec62abf005d3f68\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:57</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_a_p_i_html_af490232ec82451014fb9e858f3feca68\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API::RemoveAudioSource</a></div><div class=\"ttdeci\">void RemoveAudioSource(audiosource_t source)</div><div class=\"ttdoc\">Deletes an audio source.</div><div class=\"ttdef\"><b>Definition:</b> openal.cpp:167</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI::orientation</a></div><div class=\"ttdeci\">orientation</div><div class=\"ttdef\"><b>Definition:</b> gui.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a8098d615040fde5cc1fc55269394ccb7\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">tram::implementation::buffer</a></div><div class=\"ttdeci\">char buffer[500]</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2audio_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/audio.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">audio.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Main Audio system interface implementation.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">tram::Audio::Init</a> ()</td></tr>\n<tr class=\"memdesc:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">More...</a><br /></td></tr>\n<tr class=\"separator:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">tram::Audio::Update</a> ()</td></tr>\n<tr class=\"memdesc:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">More...</a><br /></td></tr>\n<tr class=\"separator:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a999017ca4b466fef799869fd591d134e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">tram::Audio::Uninit</a> ()</td></tr>\n<tr class=\"separator:a999017ca4b466fef799869fd591d134e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">tram::Audio::SetVolume</a> (float value)</td></tr>\n<tr class=\"separator:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">tram::Audio::GetVolume</a> ()</td></tr>\n<tr class=\"separator:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:ae4700c24d6f820914c7f36ea15203727\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\" title=\"Sets the listener position.\">Audio::API::SetListenerPosition()</a>.  <a href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">More...</a><br /></td></tr>\n<tr class=\"separator:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd913701b5ffec0d613acaca89266eab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:acd913701b5ffec0d613acaca89266eab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\" title=\"Sets the listener orientation.\">Audio::API::SetListenerOrientation()</a>.  <a href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">More...</a><br /></td></tr>\n<tr class=\"separator:acd913701b5ffec0d613acaca89266eab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Main Audio system interface implementation. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2audio_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/audio.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">audio.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Main interface for the Audio system.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"audio_2audio_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle.  <a href=\"structtram_1_1_audio_1_1audiosource__t.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle.  <a href=\"structtram_1_1_audio_1_1audiobuffer__t.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">tram::Audio::Init</a> ()</td></tr>\n<tr class=\"memdesc:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">More...</a><br /></td></tr>\n<tr class=\"separator:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">tram::Audio::Update</a> ()</td></tr>\n<tr class=\"memdesc:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">More...</a><br /></td></tr>\n<tr class=\"separator:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a999017ca4b466fef799869fd591d134e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">tram::Audio::Uninit</a> ()</td></tr>\n<tr class=\"separator:a999017ca4b466fef799869fd591d134e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">tram::Audio::SetVolume</a> (float value)</td></tr>\n<tr class=\"separator:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">tram::Audio::GetVolume</a> ()</td></tr>\n<tr class=\"separator:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:ae4700c24d6f820914c7f36ea15203727\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\" title=\"Sets the listener position.\">Audio::API::SetListenerPosition()</a>.  <a href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">More...</a><br /></td></tr>\n<tr class=\"separator:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd913701b5ffec0d613acaca89266eab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:acd913701b5ffec0d613acaca89266eab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\" title=\"Sets the listener orientation.\">Audio::API::SetListenerOrientation()</a>.  <a href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">More...</a><br /></td></tr>\n<tr class=\"separator:acd913701b5ffec0d613acaca89266eab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Main interface for the Audio system. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2audio_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/audio.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">audio.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"audio_2audio_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_AUDIO_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_AUDIO_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">   18</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">   20</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">al_source</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e\">   21</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    };</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">   26</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> {</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">   29</a></span>            uint32_t* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">al_buffers</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">   30</a></span>            int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">al_buffer_count</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        };</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756\">   32</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    };</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>};</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">SetVolume</a>(<span class=\"keywordtype\">float</span> value);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">GetVolume</a>();</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">SetListenerPosition</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">SetListenerOrientation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>}</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_AUDIO_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></div><div class=\"ttdoc\">Audio data resource.</div><div class=\"ttdef\"><b>Definition:</b> sound.h:18</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html\">tram::Audio</a></div><div class=\"ttdoc\">System for doing audio related stuff.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_a95222c442aeb50c4b0efd0c1a284eea3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">tram::Audio::SetVolume</a></div><div class=\"ttdeci\">void SetVolume(float value)</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_a999017ca4b466fef799869fd591d134e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">tram::Audio::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:51</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_aabd3c9eadd115d4d66e324ffed163470\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">tram::Audio::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Starts the Audio system.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_ac8184c5ea205ddd19e0795f8ffdd7c1c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">tram::Audio::GetVolume</a></div><div class=\"ttdeci\">float GetVolume()</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:65</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_acb768aeb78a526fe6c4378db6041b06b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">tram::Audio::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Updates the Audio system.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_acd913701b5ffec0d613acaca89266eab\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio::SetListenerOrientation</a></div><div class=\"ttdeci\">void SetListenerOrientation(quat orientation)</div><div class=\"ttdoc\">See Audio::API::SetListenerOrientation().</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:75</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_ae4700c24d6f820914c7f36ea15203727\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio::SetListenerPosition</a></div><div class=\"ttdeci\">void SetListenerPosition(vec3 position)</div><div class=\"ttdoc\">See Audio::API::SetListenerPosition().</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:70</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI::orientation</a></div><div class=\"ttdeci\">orientation</div><div class=\"ttdef\"><b>Definition:</b> gui.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiobuffer__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></div><div class=\"ttdoc\">Audio buffer handle.</div><div class=\"ttdef\"><b>Definition:</b> audio.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiobuffer__t_html_a6885d64a1de9cf00a1c92e833342717c\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">tram::Audio::audiobuffer_t::al_buffer_count</a></div><div class=\"ttdeci\">int32_t al_buffer_count</div><div class=\"ttdef\"><b>Definition:</b> audio.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiobuffer__t_html_af57828b299513dfcf833b82c420376ad\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">tram::Audio::audiobuffer_t::al_buffers</a></div><div class=\"ttdeci\">uint32_t * al_buffers</div><div class=\"ttdef\"><b>Definition:</b> audio.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiosource__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a></div><div class=\"ttdoc\">Audio source handle.</div><div class=\"ttdef\"><b>Definition:</b> audio.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiosource__t_html_a329f753b9c5fe9317e2bc22bc493b3c7\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">tram::Audio::audiosource_t::al_source</a></div><div class=\"ttdeci\">uint32_t al_source</div><div class=\"ttdef\"><b>Definition:</b> audio.h:20</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2graph_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/graph.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">graph.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2graph_8h_source.html\">audio/graph.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2graph_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/graph.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">graph.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"audio_2graph_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">tram::Audio::FilterParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">tram::Audio::SoundGraph::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2graph_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/graph.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">graph.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"audio_2graph_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">   13</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">   14</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">param1</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">param2</a>; <span class=\"comment\">// TODO: figure out what the parameters should be</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>};</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">SoundGraph</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">LoadFromMemory</a>() {}</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">   24</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">LookupFilter</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a>* <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">   29</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">   30</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">position</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">   31</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">parameters</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    };</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">   34</a></span>    std::vector&lt;Node&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">   35</a></span>    std::vector&lt;std::pair&lt;uint32_t, uint32_t&gt;&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>};</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>}</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_GRAPH_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_a3d22cc051810eba6e6e9bcc88191e67f\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">tram::Audio::SoundGraph::LookupFilter</a></div><div class=\"ttdeci\">static FilterParameters LookupFilter(vec3 position)</div><div class=\"ttdef\"><b>Definition:</b> graph.cpp:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_a5e25152edb671610cb0edca497a653de\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">tram::Audio::SoundGraph::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> graph.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_a6862a1fe3026f98bafee3fc0cf8c465e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">tram::Audio::SoundGraph::edges</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; uint32_t, uint32_t &gt; &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> graph.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_aaa0cdf6c6a42f59b3cc2362db60c16d3\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">tram::Audio::SoundGraph::Find</a></div><div class=\"ttdeci\">static SoundGraph * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> graph.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_ac716178da1e5c588036e57756bbcd76f\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">tram::Audio::SoundGraph::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> graph.cpp:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_ad953426922078e22c045f5d04517b650\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">tram::Audio::SoundGraph::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> graph.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_ad9ef3ae1d9537e6e955cd7c8d1357d3c\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">tram::Audio::SoundGraph::SoundGraph</a></div><div class=\"ttdeci\">SoundGraph(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> graph.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_graph_html_afa8bc79a4c17ed1850d6f24d9110f37e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">tram::Audio::SoundGraph::nodes</a></div><div class=\"ttdeci\">std::vector&lt; Node &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> graph.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html\">tram::Audio</a></div><div class=\"ttdoc\">System for doing audio related stuff.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_filter_parameters_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_filter_parameters.html\">tram::Audio::FilterParameters</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_filter_parameters_html_a9850c062a0de94c19491e7f2cf65ce1e\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">tram::Audio::FilterParameters::param2</a></div><div class=\"ttdeci\">float param2</div><div class=\"ttdef\"><b>Definition:</b> graph.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_filter_parameters_html_ae3e26b76955919a2680af843d03241b2\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">tram::Audio::FilterParameters::param1</a></div><div class=\"ttdeci\">float param1</div><div class=\"ttdef\"><b>Definition:</b> graph.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_sound_graph_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">tram::Audio::SoundGraph::Node</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_sound_graph_1_1_node_html_a0a633c6d644b35fad08de5f63dbb9e83\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">tram::Audio::SoundGraph::Node::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> graph.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_sound_graph_1_1_node_html_a602e0ab95181fce7095038d2c7e8cc60\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">tram::Audio::SoundGraph::Node::parameters</a></div><div class=\"ttdeci\">FilterParameters parameters</div><div class=\"ttdef\"><b>Definition:</b> graph.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2sound_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;stb_vorbis.c&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2sound_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Sound resource definition.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n</div>\n<p><a href=\"audio_2sound_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource.  <a href=\"classtram_1_1_audio_1_1_sound.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Sound resource definition. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/audio_2sound_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sound.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"audio_2sound_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"audio_2audio_8h.html\">audio/audio.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html\">   18</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">   20</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">sound_buffer</a> = {0};</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">   21</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">channels</a> = 0;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">   22</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">sample_rate</a> = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">   23</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">sound_length</a> = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">   24</a></span>    int16_t* <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">sound_data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">   27</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">LoadFromMemory</a>(){}</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">   31</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">GetLength</a>() { <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">float</span>)<a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">sound_length</a>/(float)<a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">sample_rate</a>; }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a>* <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">Find</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">   35</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">Sound</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">   36</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">tram::Pool</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>}</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"ttc\" id=\"aaudio_2audio_8h_html\"><div class=\"ttname\"><a href=\"audio_2audio_8h.html\">audio.h</a></div><div class=\"ttdoc\">Main interface for the Audio system.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></div><div class=\"ttdoc\">Audio data resource.</div><div class=\"ttdef\"><b>Definition:</b> sound.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a31e7f9540ea880eb01e07c5a887d1911\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">tram::Audio::Sound::sample_rate</a></div><div class=\"ttdeci\">int32_t sample_rate</div><div class=\"ttdef\"><b>Definition:</b> sound.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a515eabe2a7fd2c3c230f651592ec2c53\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">tram::Audio::Sound::sound_buffer</a></div><div class=\"ttdeci\">audiobuffer_t sound_buffer</div><div class=\"ttdef\"><b>Definition:</b> sound.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a6070314c5146a08863b061aeafede2b2\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Audio::Sound::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Removes the sound from memory.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a8210efc515c9fff335ca38e09fadd398\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">tram::Audio::Sound::Sound</a></div><div class=\"ttdeci\">Sound(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> sound.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a8e7cecf626c003bbb39fd560da2d68a0\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">tram::Audio::Sound::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> sound.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a946974537a8c3a039a9c49a4edb7f369\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">tram::Audio::Sound::channels</a></div><div class=\"ttdeci\">int32_t channels</div><div class=\"ttdef\"><b>Definition:</b> sound.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a98e435c2eb675251a7b2826d1cee3e9d\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">tram::Audio::Sound::sound_data</a></div><div class=\"ttdeci\">int16_t * sound_data</div><div class=\"ttdef\"><b>Definition:</b> sound.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a9c780daf835dce88cf19d267aa427266\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">tram::Audio::Sound::GetLength</a></div><div class=\"ttdeci\">float GetLength()</div><div class=\"ttdoc\">Returns sound length in seconds.</div><div class=\"ttdef\"><b>Definition:</b> sound.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a9fd0ad9ee54f5c3beaa148532d97726e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">tram::Audio::Sound::sound_length</a></div><div class=\"ttdeci\">int32_t sound_length</div><div class=\"ttdef\"><b>Definition:</b> sound.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_add19eef6a4ddc9d13638368c623f572a\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">tram::Audio::Sound::Find</a></div><div class=\"ttdeci\">static Sound * Find(name_t name)</div><div class=\"ttdoc\">Finds a sound by a name.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_ae681916d6ba3394f2993162be809738c\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">tram::Audio::Sound::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdoc\">Loads the sound from the disk.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html\">tram::Audio</a></div><div class=\"ttdoc\">System for doing audio related stuff.</div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiobuffer__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></div><div class=\"ttdoc\">Audio buffer handle.</div><div class=\"ttdef\"><b>Definition:</b> audio.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/buffer_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/buffer.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">buffer.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2opengl_2sprite_8h_source.html\">render/opengl/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;GL/gl.h&gt;</code><br />\n<code>#include &lt;GLES3/gl3.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API::CreateIndexedVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array, indexarray_t &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f3030e7ef229bee087b336d8882232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API::CreateVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array)</td></tr>\n<tr class=\"separator:a76f3030e7ef229bee087b336d8882232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23acf51fa4097aecd557d23f73131463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API::UpdateVertexArray</a> (vertexarray_t &amp;vertex_buffer, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a23acf51fa4097aecd557d23f73131463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/buffer_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/buffer.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">buffer.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"buffer_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/buffer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/buffer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">buffer.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"buffer_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_BUFFER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_BUFFER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_BUFFER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/bullet_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/bullet.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">bullet.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"debugdrawer_8h_source.html\">physics/bullet/debugdrawer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;btBulletDynamicsCommon.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a142223787cfe33696de7cd92c8ae663c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c\">tram::Physics::API::UserIndex</a> : int { <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\">tram::Physics::API::USERINDEX_RIGIDBODY</a> = 3\n, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\">tram::Physics::API::USERINDEX_TRIGGER</a> = 4\n }</td></tr>\n<tr class=\"separator:a142223787cfe33696de7cd92c8ae663c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fe5a316a9a2a82e6fefebb795f58eb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">tram::Physics::API::MetadataType</a> { <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\">tram::Physics::API::METADATA_RIGIDBODY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\">tram::Physics::API::METADATA_TRIGGER</a>\n }</td></tr>\n<tr class=\"separator:a7fe5a316a9a2a82e6fefebb795f58eb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">collisionshape_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">tram::Physics::API::MakeCollisionShape</a> (CollisionShapeTransform *shapes, size_t shape_count)</td></tr>\n<tr class=\"separator:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">collisionshape_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a871da86313d2f9e88539c71940ac8e89\">tram::Physics::API::MakeCollisionShape</a> (CollisionShape shape)</td></tr>\n<tr class=\"separator:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">tram::Physics::API::YeetCollisionShape</a> (collisionshape_t shape)</td></tr>\n<tr class=\"separator:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">rigidbody_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">tram::Physics::API::MakeRigidbody</a> (collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</td></tr>\n<tr class=\"separator:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">tram::Physics::API::YeetRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0713a3c44d84eee3bd0823cb58705f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad0713a3c44d84eee3bd0823cb58705f6\">tram::Physics::API::SetRigidbodyTransformCallback</a> (rigidbody_t rigidbody, std::pair&lt; vec3, quat &gt;(*get_transform_callback)(void *), void(*set_transform_callback)(void *, std::pair&lt; vec3, quat &gt;), void *data)</td></tr>\n<tr class=\"separator:ad0713a3c44d84eee3bd0823cb58705f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">tram::Physics::API::SetRigidbodyCollisionCallback</a> (rigidbody_t rigidbody, col_callback callback, void *data)</td></tr>\n<tr class=\"separator:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">tram::Physics::API::SetRigidbodyCollisionMask</a> (rigidbody_t rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">tram::Physics::API::SetRigidbodyCollisionGroup</a> (rigidbody_t rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">tram::Physics::API::SetRigidbodyLocation</a> (rigidbody_t rigidbody, vec3 location)</td></tr>\n<tr class=\"separator:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">tram::Physics::API::SetRigidbodyRotation</a> (rigidbody_t rigidbody, quat rotation)</td></tr>\n<tr class=\"separator:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">tram::Physics::API::SetRigidbodyMass</a> (rigidbody_t rigidbody, float mass)</td></tr>\n<tr class=\"separator:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">tram::Physics::API::PushRigidbody</a> (rigidbody_t rigidbody, vec3 direction)</td></tr>\n<tr class=\"separator:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a04c616c8fd1cabe3561bc91f4a084392\">tram::Physics::API::PushRigidbody</a> (rigidbody_t rigidbody, vec3 direction, vec3 local)</td></tr>\n<tr class=\"separator:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">tram::Physics::API::SpinRigidbody</a> (rigidbody_t rigidbody, vec3 direction)</td></tr>\n<tr class=\"separator:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">tram::Physics::API::SetRigidbodyDebugDrawing</a> (rigidbody_t rigidbody, bool drawing)</td></tr>\n<tr class=\"separator:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">tram::Physics::API::SetRigidbodyKinematic</a> (rigidbody_t rigidbody, bool kinematic)</td></tr>\n<tr class=\"separator:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">tram::Physics::API::SetRigidbodyAngularFactor</a> (rigidbody_t rigidbody, vec3 factor)</td></tr>\n<tr class=\"separator:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4adab24a698129a226d8dc841539738a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">tram::Physics::API::SetRigidbodyLinearFactor</a> (rigidbody_t rigidbody, vec3 factor)</td></tr>\n<tr class=\"separator:a4adab24a698129a226d8dc841539738a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">tram::Physics::API::SetRigidbodyVelocity</a> (rigidbody_t rigidbody, vec3 velocity)</td></tr>\n<tr class=\"separator:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">tram::Physics::API::GetRigidbodyVelocity</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">tram::Physics::API::AwakenRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">tram::Physics::API::SleepRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">tram::Physics::API::DisableRigidbodyDeactivation</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">trigger_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">tram::Physics::API::MakeTrigger</a> (collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation)</td></tr>\n<tr class=\"separator:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">tram::Physics::API::YeetTrigger</a> (trigger_t)</td></tr>\n<tr class=\"separator:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">tram::Physics::API::SetTriggerCollisionCallback</a> (trigger_t rigidbody, col_callback callback, void *data)</td></tr>\n<tr class=\"separator:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4126218afb311b1eebc568240714fbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">tram::Physics::API::SetTriggerCollisionMask</a> (trigger_t rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:aa4126218afb311b1eebc568240714fbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">tram::Physics::API::SetTriggerCollisionGroup</a> (trigger_t rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">tram::Physics::API::SetTriggerLocation</a> (trigger_t rigidbody, vec3 location)</td></tr>\n<tr class=\"separator:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66528623ab1c92b411137a246641b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">tram::Physics::API::SetTriggerRotation</a> (trigger_t rigidbody, quat location)</td></tr>\n<tr class=\"separator:ad66528623ab1c92b411137a246641b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6725b1082075301a1d07f52948788fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; ObjectCollision, void * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">tram::Physics::API::Raycast</a> (vec3 from, vec3 to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:ab6725b1082075301a1d07f52948788fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; ObjectCollision, void * &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">tram::Physics::API::Shapecast</a> (CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a11e3876e4d86bc1c3b68d5d35c08ced6\">tram::Physics::API::DrawDebug</a> (bool)</td></tr>\n<tr class=\"separator:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">tram::Physics::API::Init</a> ()</td></tr>\n<tr class=\"separator:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">tram::Physics::API::StepPhysics</a> ()</td></tr>\n<tr class=\"separator:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">tram::Physics::API::DrawDebug</a> ()</td></tr>\n<tr class=\"separator:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a7fe1815cf77d8668e3eb109f279d1681\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; RigidbodyMetadata &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681\">tram::Physics::API::rigidbody_metadata_pool</a> (&quot;RigidbodyMetadata pool&quot;, RIGIDBODY_LIMIT)</td></tr>\n<tr class=\"separator:a7fe1815cf77d8668e3eb109f279d1681\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/bullet_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/bullet.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">bullet.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">physics/collisionshape.h</a>&gt;</code><br />\n</div>\n<p><a href=\"bullet_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">TODO: <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_bullet\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">tram::Physics::Bullet</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/bullet_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/bullet.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">bullet.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"bullet_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef PHYSICS_BULLET_BULLET_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define PHYSICS_BULLET_BULLET_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"collisionshape_8h.html\">physics/collisionshape.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">   10</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">tram::Physics::Bullet</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>        </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PHYSICS_BULLET_BULLET_H</span></div>\n<div class=\"ttc\" id=\"acollisionshape_8h_html\"><div class=\"ttname\"><a href=\"collisionshape_8h.html\">collisionshape.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_bullet_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_bullet.html\">tram::Physics::Bullet</a></div><div class=\"ttdef\"><b>Definition:</b> bullet.h:10</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/camera_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/camera.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">camera.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">tram::Ext::Camera::Init</a> ()</td></tr>\n<tr class=\"separator:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">tram::Ext::Camera::Update</a> ()</td></tr>\n<tr class=\"separator:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9ef902fd854a7068580fccde152ed56d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">System::system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d\">tram::Ext::Camera::CAMERA_SYSTEM</a> = -1u</td></tr>\n<tr class=\"separator:a9ef902fd854a7068580fccde152ed56d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf02ee4711f59697606b71a4712e98bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Camera *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc\">tram::Ext::Camera::selected_camera</a> = nullptr</td></tr>\n<tr class=\"separator:acf02ee4711f59697606b71a4712e98bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a810e7f445faeca85ab997f2c0d9c4bed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Settings::Property&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed\">tram::Ext::Camera::shake_multiplier</a> = {1.0f, &quot;camerashake&quot;, Settings::NONE}</td></tr>\n<tr class=\"separator:a810e7f445faeca85ab997f2c0d9c4bed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07e626d2d01f42be6f6f209cc12cbc18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">id_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18\">tram::Ext::Camera::look_at_entity</a> = 0</td></tr>\n<tr class=\"separator:a07e626d2d01f42be6f6f209cc12cbc18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2730c41e6bab8d84d06e89700724e9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">quat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e\">tram::Ext::Camera::look_at_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ae2730c41e6bab8d84d06e89700724e9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/camera_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/camera.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">camera.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n</div>\n<p><a href=\"camera_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Interface API for cameras.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">tram::Ext::Camera::Init</a> ()</td></tr>\n<tr class=\"separator:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">tram::Ext::Camera::Update</a> ()</td></tr>\n<tr class=\"separator:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/camera_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/camera.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">camera.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"camera_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"event_8h.html\">framework/event.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">   12</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">SetActive</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">SetFollowing</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>*);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">GetFollowing</a>();</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">   18</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">SetPosition</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a>) { this-&gt;position = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a>; }</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">   19</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a>) { this-&gt;rotation = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a>; }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">   21</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">GetPosition</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a>; }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">   22</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">GetRotation</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a>; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">SetViewTransform</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">SetListenerTransform</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">SetFollowingLookat</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> new_lookat);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">   29</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">SetLayerMask</a>(uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a>) { this-&gt;layer_mask = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a>; }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">Update</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">~Camera</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">   34</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">   37</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">following_listener</a> = 0;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">   39</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a> = 1 + 2;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">   41</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">following</a> = 0;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">   42</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">following_lookat</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>}</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></div><div class=\"ttdoc\">Interface API for cameras.</div><div class=\"ttdef\"><b>Definition:</b> camera.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a025cfc11ad96bc784c5b6b7dfdfd57cf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">tram::Ext::Camera::Camera::SetFollowingLookat</a></div><div class=\"ttdeci\">void SetFollowingLookat(quat new_lookat)</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a071bb8522454174c7048ed6f3dcda4df\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">tram::Ext::Camera::Camera::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> camera.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a1c2bd59cd7281d90dbc88be202982a93\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">tram::Ext::Camera::Camera::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat rotation)</div><div class=\"ttdef\"><b>Definition:</b> camera.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a35fe3922be2a20a08e724d5d18303111\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">tram::Ext::Camera::Camera::~Camera</a></div><div class=\"ttdeci\">virtual ~Camera()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a391d685c473cd0dcabbeb372938357f5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">tram::Ext::Camera::Camera::SetViewTransform</a></div><div class=\"ttdeci\">void SetViewTransform()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a3e35e4579d49fde2164b2eda46d38423\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">tram::Ext::Camera::Camera::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> camera.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a551344bef8e92a63362a56e61ba47e93\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">tram::Ext::Camera::Camera::SetPosition</a></div><div class=\"ttdeci\">void SetPosition(vec3 position)</div><div class=\"ttdef\"><b>Definition:</b> camera.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a7ed7e7879eb1dbfb568d72099a8c74d0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">tram::Ext::Camera::Camera::layer_mask</a></div><div class=\"ttdeci\">uint32_t layer_mask</div><div class=\"ttdef\"><b>Definition:</b> camera.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_a890d07770b117f45d57435f233f29da3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">tram::Ext::Camera::Camera::SetFollowing</a></div><div class=\"ttdeci\">void SetFollowing(Entity *)</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_aaa242b24d1a6f48e868dcf73b9ca72d5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">tram::Ext::Camera::Camera::following_lookat</a></div><div class=\"ttdeci\">quat following_lookat</div><div class=\"ttdef\"><b>Definition:</b> camera.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ab3f35ec6484b5b14ed1d67fda34e42f8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">tram::Ext::Camera::Camera::SetLayerMask</a></div><div class=\"ttdeci\">void SetLayerMask(uint32_t layer_mask)</div><div class=\"ttdef\"><b>Definition:</b> camera.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_abb082f0d019697d9555343905772e265\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">tram::Ext::Camera::Camera::GetFollowing</a></div><div class=\"ttdeci\">id_t GetFollowing()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ac3852212644df817be31acab2fb4231b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">tram::Ext::Camera::Camera::following_listener</a></div><div class=\"ttdeci\">listener_t following_listener</div><div class=\"ttdef\"><b>Definition:</b> camera.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ac812c8e3643823efb034b61ec368047a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">tram::Ext::Camera::Camera::GetRotation</a></div><div class=\"ttdeci\">quat GetRotation()</div><div class=\"ttdef\"><b>Definition:</b> camera.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ac824c2a2d2ec9f37965808a6f2197c79\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">tram::Ext::Camera::Camera::following</a></div><div class=\"ttdeci\">id_t following</div><div class=\"ttdef\"><b>Definition:</b> camera.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ad08e1bd8a37aa799617220b19e2df508\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">tram::Ext::Camera::Camera::SetActive</a></div><div class=\"ttdeci\">void SetActive()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_ae0d37368dbc256f74d6a8eb756fbcd63\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">tram::Ext::Camera::Camera::Update</a></div><div class=\"ttdeci\">virtual void Update()=0</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_af377217d1922777d7d6513b28434c876\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">tram::Ext::Camera::Camera::SetListenerTransform</a></div><div class=\"ttdeci\">void SetListenerTransform()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html_af738a04eb564e9d69d6f0c1db42f9f5b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">tram::Ext::Camera::Camera::GetPosition</a></div><div class=\"ttdeci\">vec3 GetPosition()</div><div class=\"ttdef\"><b>Definition:</b> camera.h:21</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"aevent_8h_html\"><div class=\"ttname\"><a href=\"event_8h.html\">event.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></div><div class=\"ttdoc\">Several different camera implementations.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html_abe8df61bea8ea5f58fa6efa942eeaa4c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">tram::Ext::Camera::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:52</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html_ad252c0b524249e43b5b04f649a6697c2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">tram::Ext::Camera::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> camera.cpp:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_abc1aacd663943b92d06f10950a9f10d0\"><div class=\"ttname\"><a href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram::listener_t</a></div><div class=\"ttdeci\">uint32_t listener_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:16</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/character_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/character.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">character.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">extensions/kitchensink/character.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">extensions/kitchensink/attributes.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">tram::Ext::Kitchensink::InitialAttribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab0abcbf31d67465bc42fb01a8eec2bef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; Faction * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef\">tram::Ext::Kitchensink::factions</a> (&quot;Ext::Kitchensink::Faction Hashmap&quot;, FACTION_COUNT)</td></tr>\n<tr class=\"separator:ab0abcbf31d67465bc42fb01a8eec2bef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4573e832ec8b71f1590c7f8e05a5c6c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; CharacterClass * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7\">tram::Ext::Kitchensink::character_classes</a> (&quot;Ext::Kitchensink::Character Hashmap&quot;, CHARACTER_COUNT)</td></tr>\n<tr class=\"separator:a4573e832ec8b71f1590c7f8e05a5c6c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4518a370e2bb8c8160f21d50cd952c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; Character * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4\">tram::Ext::Kitchensink::characters</a> (&quot;Ext::Kitchensink::CharacterClass Hashmap&quot;, CLASS_COUNT)</td></tr>\n<tr class=\"separator:ad4518a370e2bb8c8160f21d50cd952c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ae5c94b904d8f09d1f4fab73abcb58758\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758\">FACTION_COUNT</a> = 50</td></tr>\n<tr class=\"separator:ae5c94b904d8f09d1f4fab73abcb58758\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d152c6a0610a977ca689f1a964a1cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf\">CHARACTER_COUNT</a> = 50</td></tr>\n<tr class=\"separator:af6d152c6a0610a977ca689f1a964a1cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b511158ca6796bb813f3bdb64369417\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8cpp.html#a1b511158ca6796bb813f3bdb64369417\">CLASS_COUNT</a> = 50</td></tr>\n<tr class=\"separator:a1b511158ca6796bb813f3bdb64369417\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"af6d152c6a0610a977ca689f1a964a1cf\" name=\"af6d152c6a0610a977ca689f1a964a1cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6d152c6a0610a977ca689f1a964a1cf\">&#9670;&nbsp;</a></span>CHARACTER_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t CHARACTER_COUNT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1b511158ca6796bb813f3bdb64369417\" name=\"a1b511158ca6796bb813f3bdb64369417\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b511158ca6796bb813f3bdb64369417\">&#9670;&nbsp;</a></span>CLASS_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t CLASS_COUNT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae5c94b904d8f09d1f4fab73abcb58758\" name=\"ae5c94b904d8f09d1f4fab73abcb58758\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5c94b904d8f09d1f4fab73abcb58758\">&#9670;&nbsp;</a></span>FACTION_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t FACTION_COUNT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/character_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/character.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">character.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">extensions/kitchensink/attributes.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n</div>\n<p><a href=\"character_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">tram::Ext::Kitchensink::FactionRelation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">tram::Ext::Kitchensink::BaseAttribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">tram::Ext::Kitchensink::CharacterDisposition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/character_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/character.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">character.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"character_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"attributes_8h.html\">extensions/kitchensink/attributes.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">class </span>Character;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">class </span>Faction;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">   19</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">   20</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">faction</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">   21</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">disposition</a>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">   24</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">   25</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">character</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">   26</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">rank</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">   27</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">loyalty</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>};</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">   30</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a> {</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">   31</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">faction</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">   32</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">rank</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">   33</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">loyalty</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">   36</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> {</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">   38</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">name</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">AddCharacter</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">RemoveCharacter</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">HasCharacter</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">SetCharacterRank</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*, <span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">SetCharacterLoyalty</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*, <span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">GetCharacterRank</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">GetCharacterLoyalty</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">SetRelation</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>*, <span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">GetRelation</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>*);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">GetDisposition</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">name</a>);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">   53</a></span>    std::vector&lt;FactionRank&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">ranks</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">   54</a></span>    std::vector&lt;FactionRelation&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">relations</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">   57</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a> {</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">   58</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">name</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">   59</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">value</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>};</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">   62</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> {</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">AddBaseClass</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>*);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">HasBaseClass</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>*);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">SetAttribute</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> attribute, <span class=\"keywordtype\">float</span> value);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">GetAttribute</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> attribute);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">AddFaction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>*, <span class=\"keywordtype\">float</span>, <span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">GatherBaseAttributes</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">   73</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">GatherFactions</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">   77</a></span>    std::vector&lt;CharacterClass*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">base_classes</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">   78</a></span>    std::vector&lt;BaseAttribute&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">base_attributes</a>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">   79</a></span>    std::vector&lt;BaseFactionRank&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">base_factions</a>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>};</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">   82</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a> {</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">   83</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">character</a>;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">   84</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">disposition</a>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">   87</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> {</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">AddClass</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>*);</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">HasClass</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>*);</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">GetDisposition</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">GetBaseDisposition</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*);</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">SetBaseDisposition</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>*, <span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">IsInFaction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>*);</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">LoadFromDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">Find</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity);</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">Find</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">entity_id</a>);</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737\">  102</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>;</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">  104</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">entity_id</a> = 0;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">  106</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">character_class</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    </div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">  108</a></span>    std::vector&lt;CharacterDisposition&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">dispositions</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">  109</a></span>    std::vector&lt;Faction*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">factions</a>;</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>};</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H</span></div>\n<div class=\"ttc\" id=\"aattributes_8h_html\"><div class=\"ttname\"><a href=\"attributes_8h.html\">attributes.h</a></div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a2afeea3b907ba87955f7f636a3681599\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">tram::Ext::Kitchensink::CharacterClass::GatherFactions</a></div><div class=\"ttdeci\">void GatherFactions(Character *)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a5e87837dea2d956226d92986b23dadd2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">tram::Ext::Kitchensink::CharacterClass::HasBaseClass</a></div><div class=\"ttdeci\">bool HasBaseClass(CharacterClass *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:162</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a70e3248022a5813fa317d70d610c8096\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">tram::Ext::Kitchensink::CharacterClass::GetAttribute</a></div><div class=\"ttdeci\">float GetAttribute(name_t attribute)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:187</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a84d3d60fea7430558208b30e8281d751\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">tram::Ext::Kitchensink::CharacterClass::AddBaseClass</a></div><div class=\"ttdeci\">void AddBaseClass(CharacterClass *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:155</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a86b83d010b464d657533f54684f3b819\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">tram::Ext::Kitchensink::CharacterClass::AddFaction</a></div><div class=\"ttdeci\">void AddFaction(Faction *, float, float)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:197</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a8d6ce94fb5780a54fe9fff4d03f1d057\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">tram::Ext::Kitchensink::CharacterClass::base_factions</a></div><div class=\"ttdeci\">std::vector&lt; BaseFactionRank &gt; base_factions</div><div class=\"ttdef\"><b>Definition:</b> character.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_a91bc67d549a53384a0b1aef0ced9fcd7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">tram::Ext::Kitchensink::CharacterClass::base_attributes</a></div><div class=\"ttdeci\">std::vector&lt; BaseAttribute &gt; base_attributes</div><div class=\"ttdef\"><b>Definition:</b> character.h:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_ab809fb75392382fe9c0081e2b1c72248\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">tram::Ext::Kitchensink::CharacterClass::SetAttribute</a></div><div class=\"ttdeci\">void SetAttribute(name_t attribute, float value)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:171</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_ac7025bc9d8e297e380181b2f005f854d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">tram::Ext::Kitchensink::CharacterClass::Find</a></div><div class=\"ttdeci\">static CharacterClass * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:229</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_adb00f39ea738b0df3ad9648819a215d0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">tram::Ext::Kitchensink::CharacterClass::base_classes</a></div><div class=\"ttdeci\">std::vector&lt; CharacterClass * &gt; base_classes</div><div class=\"ttdef\"><b>Definition:</b> character.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_class_html_af5638f87859e56de9420d25e4e5668a8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">tram::Ext::Kitchensink::CharacterClass::GatherBaseAttributes</a></div><div class=\"ttdeci\">void GatherBaseAttributes(AttributeContainer &amp;)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:216</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:87</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a250fa84700e6ae73eb75f343f8a7b1c2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">tram::Ext::Kitchensink::Character::SetBaseDisposition</a></div><div class=\"ttdeci\">void SetBaseDisposition(Character *, float)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:272</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a2daf2dcab1aad5fbe67778562158b7b5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">tram::Ext::Kitchensink::Character::character_class</a></div><div class=\"ttdeci\">CharacterClass * character_class</div><div class=\"ttdef\"><b>Definition:</b> character.h:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a3bb575e1785d96a33747804dc658bffc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">tram::Ext::Kitchensink::Character::dispositions</a></div><div class=\"ttdeci\">std::vector&lt; CharacterDisposition &gt; dispositions</div><div class=\"ttdef\"><b>Definition:</b> character.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a61fe7823c735263feb55c31b615e858e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">tram::Ext::Kitchensink::Character::IsInFaction</a></div><div class=\"ttdeci\">bool IsInFaction(Faction *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:280</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a763a7386afa5ddb550fdd616acdebdc7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">tram::Ext::Kitchensink::Character::GetDisposition</a></div><div class=\"ttdeci\">float GetDisposition(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:261</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a7f663500e9a6aa3dad2ea05fdbf4226f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">tram::Ext::Kitchensink::Character::HasClass</a></div><div class=\"ttdeci\">bool HasClass(CharacterClass *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:245</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_a9d2a11a8e15e555048c4c5213023ce32\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">tram::Ext::Kitchensink::Character::entity_id</a></div><div class=\"ttdeci\">id_t entity_id</div><div class=\"ttdef\"><b>Definition:</b> character.h:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_aad6e2471fc73d5228e202990dba4af13\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">tram::Ext::Kitchensink::Character::Find</a></div><div class=\"ttdeci\">static Character * Find(Entity *entity)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:288</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_ab8675fad8c679169af255b91d45b807d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">tram::Ext::Kitchensink::Character::AddClass</a></div><div class=\"ttdeci\">void AddClass(CharacterClass *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:241</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_abe19a06c096ca336b0951e93013675e2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">tram::Ext::Kitchensink::Character::LoadFromDisk</a></div><div class=\"ttdeci\">static void LoadFromDisk(const char *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:304</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_ad00663d7d18b7b6d37adaf0b6337b8a5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">tram::Ext::Kitchensink::Character::GetBaseDisposition</a></div><div class=\"ttdeci\">float GetBaseDisposition(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:250</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_character_html_ad38cfbf13b3b0044fb9b1b2fece43e37\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">tram::Ext::Kitchensink::Character::factions</a></div><div class=\"ttdeci\">std::vector&lt; Faction * &gt; factions</div><div class=\"ttdef\"><b>Definition:</b> character.h:109</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a04d109da4bb8712655c604c986d6df2d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">tram::Ext::Kitchensink::Faction::ranks</a></div><div class=\"ttdeci\">std::vector&lt; FactionRank &gt; ranks</div><div class=\"ttdef\"><b>Definition:</b> character.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a0fccfeb5e5a198b94e2cef7825bfd113\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">tram::Ext::Kitchensink::Faction::GetDisposition</a></div><div class=\"ttdeci\">float GetDisposition(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:131</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a1f3e834fa982e5d591e0e382fc477e9c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">tram::Ext::Kitchensink::Faction::Find</a></div><div class=\"ttdeci\">static Faction * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:139</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a4b2fb5b81f7d1d27dab2eac014eddef4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">tram::Ext::Kitchensink::Faction::SetCharacterRank</a></div><div class=\"ttdeci\">void SetCharacterRank(Character *, float)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a52cf75871489b10c7a6bf1ca2ad407b1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">tram::Ext::Kitchensink::Faction::HasCharacter</a></div><div class=\"ttdeci\">bool HasCharacter(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a8863648b8b05263ec564eb65d860793f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">tram::Ext::Kitchensink::Faction::relations</a></div><div class=\"ttdeci\">std::vector&lt; FactionRelation &gt; relations</div><div class=\"ttdef\"><b>Definition:</b> character.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a925e58834615871b89a1e8e7e223a54b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">tram::Ext::Kitchensink::Faction::SetRelation</a></div><div class=\"ttdeci\">void SetRelation(Faction *, float)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_a9fa045c160d1fecb4cde3f76ab729ffa\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">tram::Ext::Kitchensink::Faction::GetCharacterLoyalty</a></div><div class=\"ttdeci\">float GetCharacterLoyalty(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_aacebbb1b8bcdf040a4d70a88d91c2bb7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">tram::Ext::Kitchensink::Faction::GetRelation</a></div><div class=\"ttdeci\">float GetRelation(Faction *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_abe0e002aef7acae2e30fc9c756777b1f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">tram::Ext::Kitchensink::Faction::RemoveCharacter</a></div><div class=\"ttdeci\">void RemoveCharacter(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_ad8d824372cef0f862a20d2e0e1cc6efc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">tram::Ext::Kitchensink::Faction::SetCharacterLoyalty</a></div><div class=\"ttdeci\">void SetCharacterLoyalty(Character *, float)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_ae240133d8845aeae9cffc999e37a1763\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">tram::Ext::Kitchensink::Faction::AddCharacter</a></div><div class=\"ttdeci\">void AddCharacter(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_ae37fd3f67a9a89138abf720d56b9ab3f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">tram::Ext::Kitchensink::Faction::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> character.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_faction_html_af48b732c21adc306f5856cb68ab300bf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">tram::Ext::Kitchensink::Faction::GetCharacterRank</a></div><div class=\"ttdeci\">float GetCharacterRank(Character *)</div><div class=\"ttdef\"><b>Definition:</b> character.cpp:82</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_attribute_container_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></div><div class=\"ttdef\"><b>Definition:</b> attributes.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_attribute_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">tram::Ext::Kitchensink::BaseAttribute</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:57</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_attribute_html_a510e0c24a6e61c55033bc18a038ed719\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">tram::Ext::Kitchensink::BaseAttribute::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> character.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_attribute_html_af66cdb9500769f91ecff0c49a489d887\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">tram::Ext::Kitchensink::BaseAttribute::value</a></div><div class=\"ttdeci\">float value</div><div class=\"ttdef\"><b>Definition:</b> character.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank_html_a68423eb013d6a0f6b2d8eed2ef4e19cf\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">tram::Ext::Kitchensink::BaseFactionRank::faction</a></div><div class=\"ttdeci\">Faction * faction</div><div class=\"ttdef\"><b>Definition:</b> character.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank_html_ac64acf21dbf7f0ce28fc4976aa610806\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">tram::Ext::Kitchensink::BaseFactionRank::loyalty</a></div><div class=\"ttdeci\">float loyalty</div><div class=\"ttdef\"><b>Definition:</b> character.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank_html_af762dbee29581d65a7afbb771c9638ae\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">tram::Ext::Kitchensink::BaseFactionRank::rank</a></div><div class=\"ttdeci\">float rank</div><div class=\"ttdef\"><b>Definition:</b> character.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_character_disposition_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">tram::Ext::Kitchensink::CharacterDisposition</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:82</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_character_disposition_html_a6f7910b8365a22cfa1b26fc7927df5f7\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">tram::Ext::Kitchensink::CharacterDisposition::disposition</a></div><div class=\"ttdeci\">float disposition</div><div class=\"ttdef\"><b>Definition:</b> character.h:84</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_character_disposition_html_ad88789d2cf725bb4c89baf02e542a974\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">tram::Ext::Kitchensink::CharacterDisposition::character</a></div><div class=\"ttdeci\">Character * character</div><div class=\"ttdef\"><b>Definition:</b> character.h:83</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_rank_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_rank_html_a571ec9260b660c807637a3a4645a171d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">tram::Ext::Kitchensink::FactionRank::rank</a></div><div class=\"ttdeci\">float rank</div><div class=\"ttdef\"><b>Definition:</b> character.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_rank_html_a9b34eaee9f8316ebd6bc36e3e30aaed6\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">tram::Ext::Kitchensink::FactionRank::character</a></div><div class=\"ttdeci\">Character * character</div><div class=\"ttdef\"><b>Definition:</b> character.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_rank_html_abeca783c9890c1faaadc5d8faefad347\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">tram::Ext::Kitchensink::FactionRank::loyalty</a></div><div class=\"ttdeci\">float loyalty</div><div class=\"ttdef\"><b>Definition:</b> character.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_relation_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">tram::Ext::Kitchensink::FactionRelation</a></div><div class=\"ttdef\"><b>Definition:</b> character.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_relation_html_a2036e1b6447ae394e0a9e429f744e765\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">tram::Ext::Kitchensink::FactionRelation::disposition</a></div><div class=\"ttdeci\">float disposition</div><div class=\"ttdef\"><b>Definition:</b> character.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_faction_relation_html_a71cc30c73f550a5fd4007bc494b44c29\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">tram::Ext::Kitchensink::FactionRelation::faction</a></div><div class=\"ttdeci\">Faction * faction</div><div class=\"ttdef\"><b>Definition:</b> character.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_animation_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: AnimationComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">AnimationComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Plays back Animations.  \n <a href=\"class_animation_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Plays back Animations. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/animation.html\">https://racenis.github.io/tram-sdk/documentation/components/animation.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2animation_8cpp.html\">animation.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_audio_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: AudioComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">AudioComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Plays back Sounds.  \n <a href=\"class_audio_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Plays back Sounds. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/audio.html\">https://racenis.github.io/tram-sdk/documentation/components/audio.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2audio_8cpp.html\">audio.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: ControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">ControllerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides an API for character controllers.  \n <a href=\"class_controller_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides an API for character controllers. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/controller.html\">https://racenis.github.io/tram-sdk/documentation/components/controller.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_f_p_s_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: FPSControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">FPSControllerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of an FPS-style character controller.  \n <a href=\"class_f_p_s_controller_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of an FPS-style character controller. </p>\n<p >It is relatively slow, due to the use of Shapecasts, which makes it suitable only for player characters. Consider useing a <a class=\"el\" href=\"class_raycast_controller_component.html\" title=\"Implementation of a simple character controller.\">RaycastControllerComponent</a> for other uses. </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"class_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_light_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: LightComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">LightComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides a real-time illumination for the scene.  \n <a href=\"class_light_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides a real-time illumination for the scene. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/light.html\">https://racenis.github.io/tram-sdk/documentation/components/light.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2light_8cpp.html\">light.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_particle_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: ParticleComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">ParticleComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides amusing graphical effects.  \n <a href=\"class_particle_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides amusing graphical effects. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/particle.html\">https://racenis.github.io/tram-sdk/documentation/components/particle.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"particle_8cpp.html\">particle.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_physics_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: PhysicsComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">PhysicsComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Rigidbody wrapper.  \n <a href=\"class_physics_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Rigidbody wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/physics.html\">https://racenis.github.io/tram-sdk/documentation/components/physics.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2physics_8cpp.html\">physics.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_player_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: PlayerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">PlayerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"class_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>.  \n <a href=\"class_player_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"class_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/player.html\">https://racenis.github.io/tram-sdk/documentation/components/player.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2player_8cpp.html\">player.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_raycast_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: RaycastControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">RaycastControllerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of a simple character controller.  \n <a href=\"class_raycast_controller_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of a simple character controller. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"class_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_render_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: RenderComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">RenderComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Renders a Model.  \n <a href=\"class_render_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Renders a Model. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/render.html\">https://racenis.github.io/tram-sdk/documentation/components/render.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2render_8cpp.html\">render.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_sprite_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: SpriteComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">SpriteComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides amusing graphical effects.  \n <a href=\"class_sprite_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides amusing graphical effects. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/sprite.html\">https://racenis.github.io/tram-sdk/documentation/components/sprite.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2sprite_8cpp.html\">sprite.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/class_trigger_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: TriggerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.0</span>\n   </div>\n   <div id=\"projectbrief\">The Ultimate Tramway Drifting Simulation Solution</div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">TriggerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Trigger wrapper.  \n <a href=\"class_trigger_component.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Trigger wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/trigger.html\">https://racenis.github.io/tram-sdk/documentation/components/trigger.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2trigger_8cpp.html\">trigger.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classes.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Index</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Class Index</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"qindex\"><a class=\"qindex\" href=\"#letter_A\">A</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_B\">B</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_C\">C</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_D\">D</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_E\">E</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_F\">F</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_G\">G</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_H\">H</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_I\">I</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_K\">K</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_L\">L</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_M\">M</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_N\">N</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_O\">O</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_P\">P</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_Q\">Q</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_R\">R</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_S\">S</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_T\">T</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_U\">U</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_V\">V</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter_W\">W</a>&#160;|&#160;<a class=\"qindex\" href=\"#letter__\">_</a></div>\n<div class=\"classindex\">\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_A\" name=\"letter_A\">A</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">AABBLeaf</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationComponent::AnimationPlaybackInfo</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">AnimState</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">AnimStateSpace</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_B\" name=\"letter_B\">B</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">Breakable</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">BucketMapping</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">Button</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_C\" name=\"letter_C\">C</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">ColorVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">Console</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_crate.html\">Crate</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_D\" name=\"letter_D\">D</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">DebugShape</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">DebugText</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_decoration.html\">Decoration</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">DialogController</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">DiskReader</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">DiskWriter</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">DynamicModelData</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">DynamicVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_E\" name=\"letter_E\">E</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">EntityPicker</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">EntityProperties</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">EntityTypeInfo</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">EventEmit</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">EventIntercept</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_F\" name=\"letter_F\">F</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">Entity::FieldInfo</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_file.html\">File</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_reader.html\">FileReader</a> (<a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_writer.html\">FileWriter</a> (<a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">FrameObject</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">tram::GUI</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_G\" name=\"letter_G\">G</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_graph.html\">Graph</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_H\" name=\"letter_H\">H</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_I\" name=\"letter_I\">I</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">InitialAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a> (<a class=\"el\" href=\"namespacetram_1_1_script.html\">tram::Script</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">InventoryFactoryInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">Pool::iterator</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_K\" name=\"letter_K\">K</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">KeyBinding</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html\">tram::UI</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">KitchensinkMenuList</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_L\" name=\"letter_L\">L</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">LayerParameters</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_light.html\">Light</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">LineVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">ListDialog</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_listener_info.html\">ListenerInfo</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">ListInventory</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">ListInventoryManager</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">ListSelection</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">ListTrade</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">LogIntercept</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">tram::Ext::Scripting::Lua</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_M\" name=\"letter_M\">M</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_marker.html\">Marker</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">MessageIntercept</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">MessageSend</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_N\" name=\"letter_N\">N</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">Octree::NearestSearch</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">AABBTree::Node</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">SoundGraph::Node</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_node.html\">Node</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Octree::Node</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">LightGraph::Node</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_O\" name=\"letter_O\">O</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">Options</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_P\" name=\"letter_P\">P</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">ParticleComponent::Particle</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">PathAction</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> (<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">Pickup</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a> (<a class=\"el\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_Q\" name=\"letter_Q\">Q</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">QuestEntity</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">QuestList</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_R\" name=\"letter_R\">R</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">RawSetting</a> (<a class=\"el\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Hashmap::Record</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">RegisteredVertexDefinition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">ResourceRequest</a> (<a class=\"el\" href=\"namespacetram_1_1_async.html\">tram::Async</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_S\" name=\"letter_S\">S</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">ScriptableTypeInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">tram::ScriptableType</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">SettingsMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\">ShaderBuffer</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">ShapecastCallback</a> (<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">SignalMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_sound.html\">Sound</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\">SoundGraph</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">SpritePoint</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_stack.html\">Stack</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">StaticVertex</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">StaticWorldObject</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">SystemInfo</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html\">tram::System</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">SystemMenu</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">SystemStat</a> (<a class=\"el\" href=\"namespacetram_1_1_stats.html\">tram::Stats</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_T\" name=\"letter_T\">T</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_template_component.html\">TemplateComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">TextReaderParser</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">TextWriterParser</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">Train</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">TriangleBucket</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_trigger.html\">Trigger</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> (<a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">TriggerAutosave</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">TriggerHurt</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">TriggerMultiple</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">TriggerOnce</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">TriggerPush</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">TriggerRemove</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">TriggerTeleport</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_U\" name=\"letter_U\">U</a></dt>\n<dd><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter_V\" name=\"letter_V\">V</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd><dd><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a>)</dd></dl>\n<dl class=\"classindex odd\">\n<dt class=\"alphachar\"><a id=\"letter_W\" name=\"letter_W\">W</a></dt>\n<dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">Water</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> (<a class=\"el\" href=\"namespacetram.html\">tram</a>)</dd><dd><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">WorldCellProperties</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a>)</dd></dl>\n<dl class=\"classindex even\">\n<dt class=\"alphachar\"><a id=\"letter__\" name=\"letter__\">_</a></dt>\n<dd><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></dd></dl>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_a_a_b_b_tree-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::AABBTree Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">AABBDistance</a>(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a>(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a>(vec3 min, vec3 max, vec3 other_min, vec3 other_max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">AABBSurface</a>(vec3 min, vec3 max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">AABBTree</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a>(vec3 min, vec3 max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a>(vec3 min, vec3 max, auto callback)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab\">FindAABBIntersection</a>(Node *node, vec3 min, vec3 max, auto callback)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">FindIntersection</a>(vec3 ray_pos, vec3 ray_dir, Node *node, std::vector&lt; uint32_t &gt; &amp;result) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba\">FindIntersection</a>(vec3 ray_pos, vec3 ray_dir, float distance_limit, auto filter) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a>(vec3 ray_pos, vec3 ray_dir, float &amp;nearest_dist, uint32_t &amp;nearest_index, float distance_limit, Node *node, auto filter) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(vec3 min, vec3 max, Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">GetAABBMax</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">GetAABBMin</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">InsertLeaf</a>(uint32_t value, vec3 min, vec3 max)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(vec3 a, vec3 b)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(vec3 a, vec3 b)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">RemoveLeaf</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">ValidateTree</a>(Node *node, size_t num)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">~AABBTree</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_a_a_b_b_tree.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::AABBTree Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_a_a_b_b_tree-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::AABBTree Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"aabb_8h_source.html\">aabb.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a567a82fddf4d8649dec4f358fe08da29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">AABBTree</a> ()</td></tr>\n<tr class=\"separator:a567a82fddf4d8649dec4f358fe08da29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10e8e2eef3ea7b92fe8f62019efb6ebc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">~AABBTree</a> ()</td></tr>\n<tr class=\"separator:a10e8e2eef3ea7b92fe8f62019efb6ebc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7b01ca3a4bd8402b5337819d0482fce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">GetAABBMin</a> ()</td></tr>\n<tr class=\"separator:ab7b01ca3a4bd8402b5337819d0482fce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61d5cb103f8529afdd926a8b6a1cf79a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">GetAABBMax</a> ()</td></tr>\n<tr class=\"separator:a61d5cb103f8529afdd926a8b6a1cf79a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09154884a07d9aec60f8e84f54292d41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">InsertLeaf</a> (uint32_t value, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a09154884a07d9aec60f8e84f54292d41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9efb144bb94afd82a7c58a0ecd16a1a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">RemoveLeaf</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:a9efb144bb94afd82a7c58a0ecd16a1a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa064aa5b6071d82fe3dc84bb08c07474\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:aa064aa5b6071d82fe3dc84bb08c07474\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f62c3784491fc7b1b924e9801d5685d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">FindIntersection</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node, std::vector&lt; uint32_t &gt; &amp;result) const</td></tr>\n<tr class=\"separator:a1f62c3784491fc7b1b924e9801d5685d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab91f605c9d68f45e8d5d5c0ae05e12ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba\">FindIntersection</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, float distance_limit, auto filter) const</td></tr>\n<tr class=\"separator:ab91f605c9d68f45e8d5d5c0ae05e12ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ce2d61d0eb768a2c41b5832177d71b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">FindIntersectionRecursive</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, float &amp;nearest_dist, uint32_t &amp;nearest_index, float distance_limit, <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node, auto filter) const</td></tr>\n<tr class=\"separator:a6ce2d61d0eb768a2c41b5832177d71b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72800aa33c03780b35f5510d8c80526b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">FindAABBIntersection</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, auto callback)</td></tr>\n<tr class=\"separator:a72800aa33c03780b35f5510d8c80526b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51ebff27bd53240096c90c198b970dab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab\">FindAABBIntersection</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, auto callback)</td></tr>\n<tr class=\"separator:a51ebff27bd53240096c90c198b970dab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32675d95c889b42d34ec88309ccc1adc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:a32675d95c889b42d34ec88309ccc1adc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2029865cbcf492b0c6dd70899a6fdf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:ab2029865cbcf492b0c6dd70899a6fdf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a509b43b26b87d2c14783fb7af4ddfb3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:a509b43b26b87d2c14783fb7af4ddfb3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc30ba522129a7fe8d093bce4f9ab6c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">ValidateTree</a> (<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *node, size_t num)</td></tr>\n<tr class=\"separator:abc30ba522129a7fe8d093bce4f9ab6c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aa25621c85212298d11a04b79b8638609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b)</td></tr>\n<tr class=\"separator:aa25621c85212298d11a04b79b8638609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7381f1d5ef18522f092b20432af0c291\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b)</td></tr>\n<tr class=\"separator:a7381f1d5ef18522f092b20432af0c291\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe35ffcff47d45bf7b4dad9b2d510d80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">AABBOverlap</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> other_min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> other_max)</td></tr>\n<tr class=\"separator:afe35ffcff47d45bf7b4dad9b2d510d80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a715f0769ae31e4adfcea697bf841dd77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a715f0769ae31e4adfcea697bf841dd77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad990b44be408032340081fb22dbc1ca2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">AABBSurface</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:ad990b44be408032340081fb22dbc1ca2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fdc8691cc5674bcd2b18e1b287301e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a0fdc8691cc5674bcd2b18e1b287301e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a854ba4aa154dfc14b544cc142418b63b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">AABBDistance</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a854ba4aa154dfc14b544cc142418b63b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a6e50b9b4d4d2dde317cef8dcb3ce648c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> = new <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {nullptr, nullptr, nullptr, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}</td></tr>\n<tr class=\"separator:a6e50b9b4d4d2dde317cef8dcb3ce648c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a567a82fddf4d8649dec4f358fe08da29\" name=\"a567a82fddf4d8649dec4f358fe08da29\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a567a82fddf4d8649dec4f358fe08da29\">&#9670;&nbsp;</a></span>AABBTree()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AABBTree::AABBTree </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10e8e2eef3ea7b92fe8f62019efb6ebc\" name=\"a10e8e2eef3ea7b92fe8f62019efb6ebc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10e8e2eef3ea7b92fe8f62019efb6ebc\">&#9670;&nbsp;</a></span>~AABBTree()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AABBTree::~AABBTree </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a854ba4aa154dfc14b544cc142418b63b\" name=\"a854ba4aa154dfc14b544cc142418b63b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a854ba4aa154dfc14b544cc142418b63b\">&#9670;&nbsp;</a></span>AABBDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static float tram::AABBTree::AABBDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0fdc8691cc5674bcd2b18e1b287301e1\" name=\"a0fdc8691cc5674bcd2b18e1b287301e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fdc8691cc5674bcd2b18e1b287301e1\">&#9670;&nbsp;</a></span>AABBIntersect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static bool tram::AABBTree::AABBIntersect </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe35ffcff47d45bf7b4dad9b2d510d80\" name=\"afe35ffcff47d45bf7b4dad9b2d510d80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe35ffcff47d45bf7b4dad9b2d510d80\">&#9670;&nbsp;</a></span>AABBOverlap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static bool tram::AABBTree::AABBOverlap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>other_min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>other_max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad990b44be408032340081fb22dbc1ca2\" name=\"ad990b44be408032340081fb22dbc1ca2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad990b44be408032340081fb22dbc1ca2\">&#9670;&nbsp;</a></span>AABBSurface()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static float tram::AABBTree::AABBSurface </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a715f0769ae31e4adfcea697bf841dd77\" name=\"a715f0769ae31e4adfcea697bf841dd77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a715f0769ae31e4adfcea697bf841dd77\">&#9670;&nbsp;</a></span>AABBVolume()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static float tram::AABBTree::AABBVolume </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51ebff27bd53240096c90c198b970dab\" name=\"a51ebff27bd53240096c90c198b970dab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51ebff27bd53240096c90c198b970dab\">&#9670;&nbsp;</a></span>FindAABBIntersection() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::FindAABBIntersection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">auto&#160;</td>\n          <td class=\"paramname\"><em>callback</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72800aa33c03780b35f5510d8c80526b\" name=\"a72800aa33c03780b35f5510d8c80526b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72800aa33c03780b35f5510d8c80526b\">&#9670;&nbsp;</a></span>FindAABBIntersection() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::FindAABBIntersection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">auto&#160;</td>\n          <td class=\"paramname\"><em>callback</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab91f605c9d68f45e8d5d5c0ae05e12ba\" name=\"ab91f605c9d68f45e8d5d5c0ae05e12ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab91f605c9d68f45e8d5d5c0ae05e12ba\">&#9670;&nbsp;</a></span>FindIntersection() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::AABBTree::FindIntersection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>distance_limit</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">auto&#160;</td>\n          <td class=\"paramname\"><em>filter</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f62c3784491fc7b1b924e9801d5685d\" name=\"a1f62c3784491fc7b1b924e9801d5685d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f62c3784491fc7b1b924e9801d5685d\">&#9670;&nbsp;</a></span>FindIntersection() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::FindIntersection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; uint32_t &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ce2d61d0eb768a2c41b5832177d71b1\" name=\"a6ce2d61d0eb768a2c41b5832177d71b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ce2d61d0eb768a2c41b5832177d71b1\">&#9670;&nbsp;</a></span>FindIntersectionRecursive()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::FindIntersectionRecursive </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float &amp;&#160;</td>\n          <td class=\"paramname\"><em>nearest_dist</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>nearest_index</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>distance_limit</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">auto&#160;</td>\n          <td class=\"paramname\"><em>filter</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2029865cbcf492b0c6dd70899a6fdf1\" name=\"ab2029865cbcf492b0c6dd70899a6fdf1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2029865cbcf492b0c6dd70899a6fdf1\">&#9670;&nbsp;</a></span>FindSibling()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> * tram::AABBTree::FindSibling </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61d5cb103f8529afdd926a8b6a1cf79a\" name=\"a61d5cb103f8529afdd926a8b6a1cf79a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61d5cb103f8529afdd926a8b6a1cf79a\">&#9670;&nbsp;</a></span>GetAABBMax()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::GetAABBMax </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab7b01ca3a4bd8402b5337819d0482fce\" name=\"ab7b01ca3a4bd8402b5337819d0482fce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7b01ca3a4bd8402b5337819d0482fce\">&#9670;&nbsp;</a></span>GetAABBMin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::GetAABBMin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09154884a07d9aec60f8e84f54292d41\" name=\"a09154884a07d9aec60f8e84f54292d41\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09154884a07d9aec60f8e84f54292d41\">&#9670;&nbsp;</a></span>InsertLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> * tram::AABBTree::InsertLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7381f1d5ef18522f092b20432af0c291\" name=\"a7381f1d5ef18522f092b20432af0c291\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7381f1d5ef18522f092b20432af0c291\">&#9670;&nbsp;</a></span>MergeAABBMax()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::MergeAABBMax </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa25621c85212298d11a04b79b8638609\" name=\"aa25621c85212298d11a04b79b8638609\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa25621c85212298d11a04b79b8638609\">&#9670;&nbsp;</a></span>MergeAABBMin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::MergeAABBMin </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa064aa5b6071d82fe3dc84bb08c07474\" name=\"aa064aa5b6071d82fe3dc84bb08c07474\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa064aa5b6071d82fe3dc84bb08c07474\">&#9670;&nbsp;</a></span>RemoveHierarchy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::RemoveHierarchy </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9efb144bb94afd82a7c58a0ecd16a1a6\" name=\"a9efb144bb94afd82a7c58a0ecd16a1a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9efb144bb94afd82a7c58a0ecd16a1a6\">&#9670;&nbsp;</a></span>RemoveLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::RemoveLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32675d95c889b42d34ec88309ccc1adc\" name=\"a32675d95c889b42d34ec88309ccc1adc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32675d95c889b42d34ec88309ccc1adc\">&#9670;&nbsp;</a></span>UpdateParentAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::UpdateParentAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a509b43b26b87d2c14783fb7af4ddfb3d\" name=\"a509b43b26b87d2c14783fb7af4ddfb3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a509b43b26b87d2c14783fb7af4ddfb3d\">&#9670;&nbsp;</a></span>ValidateTree() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::ValidateTree </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abc30ba522129a7fe8d093bce4f9ab6c9\" name=\"abc30ba522129a7fe8d093bce4f9ab6c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc30ba522129a7fe8d093bce4f9ab6c9\">&#9670;&nbsp;</a></span>ValidateTree() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::ValidateTree </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>num</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6e50b9b4d4d2dde317cef8dcb3ce648c\" name=\"a6e50b9b4d4d2dde317cef8dcb3ce648c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e50b9b4d4d2dde317cef8dcb3ce648c\">&#9670;&nbsp;</a></span>root</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* tram::AABBTree::root = new <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {nullptr, nullptr, nullptr, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"aabb_8h_source.html\">aabb.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_animation_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::AnimationComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">anim_finish_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">anim_info</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">anim_playing</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">AnimationComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">armature_bone_count</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">armature_bone_parents</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">armature_bones</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">base_pose</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">Continue</a>(name_t animation_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">FadeIn</a>(name_t animation_name, float length)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">FadeOut</a>(name_t animation_name, float length)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">FindKeyframePointers</a>(Render::Animation *animation, size_t animation_index)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">GetModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">GetPose</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">IsDebugInfoDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">IsPlaying</a>(name_t animation_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">Pause</a>(name_t animation_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">Play</a>(name_t animation_name, uint32_t repeats, float weight, float speed, bool interpolate=true, bool pause_on_last_frame=false)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">Refresh</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">Reparent</a>(name_t bone_name, name_t new_parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">SetDebugInfoDraw</a>(bool draw)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">SetFade</a>(name_t animation_name, bool fade_in, float fade_length)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">SetFrame</a>(name_t animation_name, float frame)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">SetKeyframe</a>(name_t bone_name, const Render::Keyframe &amp;keyframe)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">SetModel</a>(Render::Model *model)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2\">SetModel</a>(name_t model)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">SetOnAnimationFinishCallback</a>(void(*callback)(AnimationComponent *, name_t))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">SetPause</a>(name_t animation_name, bool pause)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">SetRepeats</a>(name_t animation_name, uint32_t repeats)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">SetSpeed</a>(name_t animation_name, float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">SetWeight</a>(name_t animation_name, float weight)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">Stop</a>(name_t animation_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">~AnimationComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_animation_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::AnimationComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#pro-static-attribs\">Static Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_animation_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::AnimationComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Plays back Animations.  \n <a href=\"classtram_1_1_animation_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::AnimationComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_animation_component.png\" usemap=\"#tram::AnimationComponent_map\" alt=\"\"/>\n  <map id=\"tram::AnimationComponent_map\" name=\"tram::AnimationComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,160,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6d476ab03612c5e87aadfb6b70a1a8fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">Start</a> ()</td></tr>\n<tr class=\"separator:a6d476ab03612c5e87aadfb6b70a1a8fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a927071d5509777104ff0de4d613782\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">SetModel</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> *<a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>)</td></tr>\n<tr class=\"separator:a8a927071d5509777104ff0de4d613782\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae18431fe0083fcb808cf91cac0a25ee2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2\">SetModel</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>)</td></tr>\n<tr class=\"separator:ae18431fe0083fcb808cf91cac0a25ee2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10847fac3c1cd2e8750fda898eff512d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">GetModel</a> ()</td></tr>\n<tr class=\"separator:a10847fac3c1cd2e8750fda898eff512d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04aa5c1f59cfafd2485a5f8ac1376cc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">GetPose</a> ()</td></tr>\n<tr class=\"separator:a04aa5c1f59cfafd2485a5f8ac1376cc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56d81b59bfb31b228aacaeda632474ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">SetKeyframe</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> bone_name, const <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> &amp;keyframe)</td></tr>\n<tr class=\"memdesc:a56d81b59bfb31b228aacaeda632474ba\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets procedural animation keyframe.  <a href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">More...</a><br /></td></tr>\n<tr class=\"separator:a56d81b59bfb31b228aacaeda632474ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82fda1bdec933e8b63788b286081885a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">SetOnAnimationFinishCallback</a> (void(*callback)(<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>))</td></tr>\n<tr class=\"separator:a82fda1bdec933e8b63788b286081885a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae64dafa0a2ea87a033e0fa4bd342f5ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">Play</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, uint32_t repeats, float weight, float speed, bool interpolate=true, bool pause_on_last_frame=false)</td></tr>\n<tr class=\"memdesc:ae64dafa0a2ea87a033e0fa4bd342f5ad\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an animation.  <a href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">More...</a><br /></td></tr>\n<tr class=\"separator:ae64dafa0a2ea87a033e0fa4bd342f5ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27c7ff48133b01c79777af78e4ee5a07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">IsPlaying</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name)</td></tr>\n<tr class=\"memdesc:a27c7ff48133b01c79777af78e4ee5a07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns true if an animation is playing.  <a href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">More...</a><br /></td></tr>\n<tr class=\"separator:a27c7ff48133b01c79777af78e4ee5a07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a29f7010dec34fdcd9c7a3e9bcadf2b96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">Stop</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name)</td></tr>\n<tr class=\"memdesc:a29f7010dec34fdcd9c7a3e9bcadf2b96\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops an animation if its playing.  <a href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">More...</a><br /></td></tr>\n<tr class=\"separator:a29f7010dec34fdcd9c7a3e9bcadf2b96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a752f8c4d9982c2a406e80597a85158cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">Pause</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name)</td></tr>\n<tr class=\"memdesc:a752f8c4d9982c2a406e80597a85158cd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses an animation.  <a href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">More...</a><br /></td></tr>\n<tr class=\"separator:a752f8c4d9982c2a406e80597a85158cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6f14c184f255d16a73dd7fb1ad3b52f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">Continue</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name)</td></tr>\n<tr class=\"memdesc:ad6f14c184f255d16a73dd7fb1ad3b52f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Continues an animation.  <a href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">More...</a><br /></td></tr>\n<tr class=\"separator:ad6f14c184f255d16a73dd7fb1ad3b52f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6433689ecdafdbcfe82ba1436a21f41c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">SetWeight</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, float weight)</td></tr>\n<tr class=\"memdesc:a6433689ecdafdbcfe82ba1436a21f41c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the weight of an animation.  <a href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">More...</a><br /></td></tr>\n<tr class=\"separator:a6433689ecdafdbcfe82ba1436a21f41c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfacd194c9559609030b7aff261ea9f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">SetSpeed</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, float speed)</td></tr>\n<tr class=\"memdesc:acfacd194c9559609030b7aff261ea9f1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the speed of an animation.  <a href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">More...</a><br /></td></tr>\n<tr class=\"separator:acfacd194c9559609030b7aff261ea9f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab837c1cffe19cc9baa3ea3bc80577cdb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">SetRepeats</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, uint32_t repeats)</td></tr>\n<tr class=\"memdesc:ab837c1cffe19cc9baa3ea3bc80577cdb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repeats of an animation.  <a href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">More...</a><br /></td></tr>\n<tr class=\"separator:ab837c1cffe19cc9baa3ea3bc80577cdb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf4161bf1e5c2cee940304cf35b8c178\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">FadeIn</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, float length)</td></tr>\n<tr class=\"memdesc:aaf4161bf1e5c2cee940304cf35b8c178\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fades in an animation.  <a href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf4161bf1e5c2cee940304cf35b8c178\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb3ad3551105ef1e3a6306808900ae50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">FadeOut</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, float length)</td></tr>\n<tr class=\"memdesc:aeb3ad3551105ef1e3a6306808900ae50\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fades out an animation.  <a href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb3ad3551105ef1e3a6306808900ae50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73a899480e5814119ddb716c93253b4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">SetPause</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, bool pause)</td></tr>\n<tr class=\"memdesc:a73a899480e5814119ddb716c93253b4a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets animation's pause state.  <a href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">More...</a><br /></td></tr>\n<tr class=\"separator:a73a899480e5814119ddb716c93253b4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fcbfb0820bce127c4ef9c82238a296f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">SetFade</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, bool fade_in, float fade_length)</td></tr>\n<tr class=\"memdesc:a2fcbfb0820bce127c4ef9c82238a296f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fades in or fades out an animation.  <a href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">More...</a><br /></td></tr>\n<tr class=\"separator:a2fcbfb0820bce127c4ef9c82238a296f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f3653661fe211b4b809c1fdbdcc8d08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">SetFrame</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, float frame)</td></tr>\n<tr class=\"memdesc:a8f3653661fe211b4b809c1fdbdcc8d08\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets an animation to a specific frame.  <a href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">More...</a><br /></td></tr>\n<tr class=\"separator:a8f3653661fe211b4b809c1fdbdcc8d08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa1fa307b6434b4f33232fd2fb831590\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">Reparent</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> bone_name, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_parent)</td></tr>\n<tr class=\"memdesc:aaa1fa307b6434b4f33232fd2fb831590\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reparents a bone.  <a href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">More...</a><br /></td></tr>\n<tr class=\"separator:aaa1fa307b6434b4f33232fd2fb831590\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af951b71145c810f51d1c6c04feff431a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">Refresh</a> ()</td></tr>\n<tr class=\"memdesc:af951b71145c810f51d1c6c04feff431a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates an armature.  <a href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">More...</a><br /></td></tr>\n<tr class=\"separator:af951b71145c810f51d1c6c04feff431a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc4711c76a0f6e6875f2e57400724f5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:adc4711c76a0f6e6875f2e57400724f5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a622f5ba394f586c8eddde6acfbc968e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">IsDebugInfoDraw</a> ()</td></tr>\n<tr class=\"memdesc:a622f5ba394f586c8eddde6acfbc968e0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the debug text is drawn.  <a href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">More...</a><br /></td></tr>\n<tr class=\"separator:a622f5ba394f586c8eddde6acfbc968e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9040237d0b7095c4f3c40263bbf8428e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">SetDebugInfoDraw</a> (bool draw)</td></tr>\n<tr class=\"memdesc:a9040237d0b7095c4f3c40263bbf8428e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the drawing of debug info.  <a href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">More...</a><br /></td></tr>\n<tr class=\"separator:a9040237d0b7095c4f3c40263bbf8428e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6553e17f7e26893e25cca1b229a2ab65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">Update</a> ()</td></tr>\n<tr class=\"memdesc:a6553e17f7e26893e25cca1b229a2ab65\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates all of the armatures.  <a href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">More...</a><br /></td></tr>\n<tr class=\"separator:a6553e17f7e26893e25cca1b229a2ab65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aaa1ec23cc54f20569e9cce6a90844bc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">FindKeyframePointers</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Render::Animation</a> *animation, size_t animation_index)</td></tr>\n<tr class=\"memdesc:aaa1ec23cc54f20569e9cce6a90844bc9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extracts pointers to keyframes from animation data.  <a href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">More...</a><br /></td></tr>\n<tr class=\"separator:aaa1ec23cc54f20569e9cce6a90844bc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af773091315f64f349184c6f9055dc5ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">AnimationComponent</a> ()</td></tr>\n<tr class=\"separator:af773091315f64f349184c6f9055dc5ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6008fd710fcfd5b79795890d0535bee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">~AnimationComponent</a> ()</td></tr>\n<tr class=\"separator:ac6008fd710fcfd5b79795890d0535bee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af919af95bb7414728434643fcaeda10c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">base_pose</a> [<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>]</td></tr>\n<tr class=\"separator:af919af95bb7414728434643fcaeda10c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ca6edc357f6d61b8750acdec9d4de77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:a8ca6edc357f6d61b8750acdec9d4de77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03643f9802dcb7bfe3afdabc432c3025\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a></td></tr>\n<tr class=\"separator:a03643f9802dcb7bfe3afdabc432c3025\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe657fb3e7986f8344a6a1aa5d1a40d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">anim_finish_callback</a> )(<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>) = nullptr</td></tr>\n<tr class=\"separator:abe657fb3e7986f8344a6a1aa5d1a40d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86100bcacc626be6040580f705248072\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Render::Bone</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">armature_bones</a> = nullptr</td></tr>\n<tr class=\"separator:a86100bcacc626be6040580f705248072\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a548e0d34bf1bb6b24a534b759b83ccd8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">armature_bone_count</a> = 0</td></tr>\n<tr class=\"separator:a548e0d34bf1bb6b24a534b759b83ccd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61a263a46b3af801e91b0306f65bd5b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">armature_bone_parents</a> [<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {-1}</td></tr>\n<tr class=\"separator:a61a263a46b3af801e91b0306f65bd5b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cfc453f4f1a8e3d39ef58fd0ceb71e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">anim_playing</a> [<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>]</td></tr>\n<tr class=\"separator:a8cfc453f4f1a8e3d39ef58fd0ceb71e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41874c91efb221e22ce606804aedf1c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">anim_info</a> [<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>]</td></tr>\n<tr class=\"separator:a41874c91efb221e22ce606804aedf1c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-static-attribs\" name=\"pro-static-attribs\"></a>\nStatic Protected Attributes</h2></td></tr>\n<tr class=\"memitem:ae44dc606d6f719e5a470fdc6ed013e27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a> = 8</td></tr>\n<tr class=\"separator:ae44dc606d6f719e5a470fdc6ed013e27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename &gt; </td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td></tr>\n<tr class=\"separator:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Plays back Animations. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/animation.html\">https://racenis.github.io/tram-sdk/documentation/components/animation.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af773091315f64f349184c6f9055dc5ad\" name=\"af773091315f64f349184c6f9055dc5ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af773091315f64f349184c6f9055dc5ad\">&#9670;&nbsp;</a></span>AnimationComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AnimationComponent::AnimationComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac6008fd710fcfd5b79795890d0535bee\" name=\"ac6008fd710fcfd5b79795890d0535bee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6008fd710fcfd5b79795890d0535bee\">&#9670;&nbsp;</a></span>~AnimationComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AnimationComponent::~AnimationComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad6f14c184f255d16a73dd7fb1ad3b52f\" name=\"ad6f14c184f255d16a73dd7fb1ad3b52f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6f14c184f255d16a73dd7fb1ad3b52f\">&#9670;&nbsp;</a></span>Continue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Continue </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Continues an animation. </p>\n<p >If an animation is paused, it will continue playback. Otherwise this method will do nothing. </p>\n\n</div>\n</div>\n<a id=\"adc4711c76a0f6e6875f2e57400724f5b\" name=\"adc4711c76a0f6e6875f2e57400724f5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc4711c76a0f6e6875f2e57400724f5b\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"aaf4161bf1e5c2cee940304cf35b8c178\" name=\"aaf4161bf1e5c2cee940304cf35b8c178\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf4161bf1e5c2cee940304cf35b8c178\">&#9670;&nbsp;</a></span>FadeIn()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::FadeIn </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Fades in an animation. </p>\n<p >Before fading in an animation, it must be started with <a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\" title=\"Plays an animation.\">Play()</a>. </p>\n\n</div>\n</div>\n<a id=\"aeb3ad3551105ef1e3a6306808900ae50\" name=\"aeb3ad3551105ef1e3a6306808900ae50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb3ad3551105ef1e3a6306808900ae50\">&#9670;&nbsp;</a></span>FadeOut()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::FadeOut </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>length</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Fades out an animation. </p>\n\n</div>\n</div>\n<a id=\"aaa1ec23cc54f20569e9cce6a90844bc9\" name=\"aaa1ec23cc54f20569e9cce6a90844bc9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa1ec23cc54f20569e9cce6a90844bc9\">&#9670;&nbsp;</a></span>FindKeyframePointers()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::FindKeyframePointers </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Render::Animation</a> *&#160;</td>\n          <td class=\"paramname\"><em>animation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>animation_index</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Extracts pointers to keyframes from animation data. </p>\n\n</div>\n</div>\n<a id=\"a10847fac3c1cd2e8750fda898eff512d\" name=\"a10847fac3c1cd2e8750fda898eff512d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10847fac3c1cd2e8750fda898eff512d\">&#9670;&nbsp;</a></span>GetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> * tram::AnimationComponent::GetModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04aa5c1f59cfafd2485a5f8ac1376cc1\" name=\"a04aa5c1f59cfafd2485a5f8ac1376cc1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04aa5c1f59cfafd2485a5f8ac1376cc1\">&#9670;&nbsp;</a></span>GetPose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a> * tram::AnimationComponent::GetPose </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a622f5ba394f586c8eddde6acfbc968e0\" name=\"a622f5ba394f586c8eddde6acfbc968e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a622f5ba394f586c8eddde6acfbc968e0\">&#9670;&nbsp;</a></span>IsDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::IsDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the debug text is drawn. </p>\n<p >Check <a class=\"el\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\" title=\"Sets the drawing of debug info.\">SetDebugInfoDraw()</a> for more info. </p>\n\n</div>\n</div>\n<a id=\"a27c7ff48133b01c79777af78e4ee5a07\" name=\"a27c7ff48133b01c79777af78e4ee5a07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27c7ff48133b01c79777af78e4ee5a07\">&#9670;&nbsp;</a></span>IsPlaying()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::IsPlaying </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns true if an animation is playing. </p>\n\n</div>\n</div>\n<a id=\"a752f8c4d9982c2a406e80597a85158cd\" name=\"a752f8c4d9982c2a406e80597a85158cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a752f8c4d9982c2a406e80597a85158cd\">&#9670;&nbsp;</a></span>Pause()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Pause </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pauses an animation. </p>\n<p >If the animation is being played, it will be paused. Otherwise this method will do nothing. Use <a class=\"el\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\" title=\"Continues an animation.\">Continue()</a> method to continue playing the animation. </p>\n\n</div>\n</div>\n<a id=\"ae64dafa0a2ea87a033e0fa4bd342f5ad\" name=\"ae64dafa0a2ea87a033e0fa4bd342f5ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae64dafa0a2ea87a033e0fa4bd342f5ad\">&#9670;&nbsp;</a></span>Play()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Play </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>repeats</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>weight</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>interpolate</em> = <code>true</code>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>pause_on_last_frame</em> = <code>false</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Plays an animation. </p>\n<p >Animation must be already loaded before playing. </p><dl class=\"section note\"><dt>Note</dt><dd>Will not play an animation if there are no empty animation slots. </dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">animation_name</td><td>Name of the animation to be played. </td></tr>\n    <tr><td class=\"paramname\">repeats</td><td>How many times the animation will be looped before stopping. </td></tr>\n    <tr><td class=\"paramname\">weight</td><td>Weight of the animation. Set to 1.0 for normal weight. Should be in range from 0.0 to 1.0, if set outside of range, then the animation might look really weird. </td></tr>\n    <tr><td class=\"paramname\">speed</td><td>Speed of the animation. <a class=\"el\" href=\"classtram_1_1_value.html\" title=\"Generic, type-safe union.\">Value</a> of 1.0 will play the animation at regular speed, 0.5 will play it half speed, 2.0 double speed. </td></tr>\n    <tr><td class=\"paramname\">interpolate</td><td>If set to true, then animation will be interpolated, if set to false, then it will use only the latest keyframe. </td></tr>\n    <tr><td class=\"paramname\">pause_on_last</td><td>If set to true, then the animation will pause on the last keyframe. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"af951b71145c810f51d1c6c04feff431a\" name=\"af951b71145c810f51d1c6c04feff431a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af951b71145c810f51d1c6c04feff431a\">&#9670;&nbsp;</a></span>Refresh()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Refresh </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Updates an armature. </p>\n<p >Pushes animations forward and regenerates matrices. </p>\n\n</div>\n</div>\n<a id=\"aaa1fa307b6434b4f33232fd2fb831590\" name=\"aaa1fa307b6434b4f33232fd2fb831590\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa1fa307b6434b4f33232fd2fb831590\">&#9670;&nbsp;</a></span>Reparent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Reparent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>bone_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>new_parent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Reparents a bone. </p>\n<p >Make sure to not create cycles in the bone hierarchy. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">bone_name</td><td>Name of the bone for which a new parent will be set. </td></tr>\n    <tr><td class=\"paramname\">new_parent</td><td>Name of the bone which will be the new parent. Can be set to \"none\" to clear the bone's parent. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9040237d0b7095c4f3c40263bbf8428e\" name=\"a9040237d0b7095c4f3c40263bbf8428e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9040237d0b7095c4f3c40263bbf8428e\">&#9670;&nbsp;</a></span>SetDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Sets the drawing of debug info. </p>\n<p >If set to true, each frame some debug text will be drawn for each animation component. This is useful for debugging. </p>\n\n</div>\n</div>\n<a id=\"a2fcbfb0820bce127c4ef9c82238a296f\" name=\"a2fcbfb0820bce127c4ef9c82238a296f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fcbfb0820bce127c4ef9c82238a296f\">&#9670;&nbsp;</a></span>SetFade()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetFade </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>fade_in</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>fade_length</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Fades in or fades out an animation. </p>\n<p >This will gradually increase or decrease the weight of an animation until it is fully faded in or faded out. The animation must already be started with <a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\" title=\"Plays an animation.\">Play()</a> for it to be faded, otherwise this method will do nothing. If an animation is fully faded out, it will automatically be stopped. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">animation_name</td><td>Name of the animation to be faded. </td></tr>\n    <tr><td class=\"paramname\">fade_in</td><td>Set to true, if animation is to be faded in, false if faded out. </td></tr>\n    <tr><td class=\"paramname\">fade_length</td><td>How long, in seconds, will it take for the animation to finish fading in/out. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a8f3653661fe211b4b809c1fdbdcc8d08\" name=\"a8f3653661fe211b4b809c1fdbdcc8d08\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f3653661fe211b4b809c1fdbdcc8d08\">&#9670;&nbsp;</a></span>SetFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetFrame </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>frame</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets an animation to a specific frame. </p>\n<p >If the animation is not already started with <a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\" title=\"Plays an animation.\">Play()</a>, then this method will do nothing. </p>\n\n</div>\n</div>\n<a id=\"a56d81b59bfb31b228aacaeda632474ba\" name=\"a56d81b59bfb31b228aacaeda632474ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56d81b59bfb31b228aacaeda632474ba\">&#9670;&nbsp;</a></span>SetKeyframe()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetKeyframe </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>bone_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>keyframe</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets procedural animation keyframe. </p>\n\n</div>\n</div>\n<a id=\"ae18431fe0083fcb808cf91cac0a25ee2\" name=\"ae18431fe0083fcb808cf91cac0a25ee2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae18431fe0083fcb808cf91cac0a25ee2\">&#9670;&nbsp;</a></span>SetModel() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>model</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a927071d5509777104ff0de4d613782\" name=\"a8a927071d5509777104ff0de4d613782\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a927071d5509777104ff0de4d613782\">&#9670;&nbsp;</a></span>SetModel() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> *&#160;</td>\n          <td class=\"paramname\"><em>model</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a82fda1bdec933e8b63788b286081885a\" name=\"a82fda1bdec933e8b63788b286081885a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82fda1bdec933e8b63788b286081885a\">&#9670;&nbsp;</a></span>SetOnAnimationFinishCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetOnAnimationFinishCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a73a899480e5814119ddb716c93253b4a\" name=\"a73a899480e5814119ddb716c93253b4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73a899480e5814119ddb716c93253b4a\">&#9670;&nbsp;</a></span>SetPause()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetPause </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>pause</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets animation's pause state. </p>\n<p >This will do nothing, if the animation is not playing. Pausing an already paused or continuing an already playing animation will do nothing. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">animation_name</td><td>Name of the animation to pause. </td></tr>\n    <tr><td class=\"paramname\">pause</td><td>Set to true to pause the animation, set to false to continue. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ab837c1cffe19cc9baa3ea3bc80577cdb\" name=\"ab837c1cffe19cc9baa3ea3bc80577cdb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab837c1cffe19cc9baa3ea3bc80577cdb\">&#9670;&nbsp;</a></span>SetRepeats()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetRepeats </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>repeats</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the repeats of an animation. </p>\n\n</div>\n</div>\n<a id=\"acfacd194c9559609030b7aff261ea9f1\" name=\"acfacd194c9559609030b7aff261ea9f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfacd194c9559609030b7aff261ea9f1\">&#9670;&nbsp;</a></span>SetSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the speed of an animation. </p>\n\n</div>\n</div>\n<a id=\"a6433689ecdafdbcfe82ba1436a21f41c\" name=\"a6433689ecdafdbcfe82ba1436a21f41c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6433689ecdafdbcfe82ba1436a21f41c\">&#9670;&nbsp;</a></span>SetWeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::SetWeight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>weight</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the weight of an animation. </p>\n\n</div>\n</div>\n<a id=\"a6d476ab03612c5e87aadfb6b70a1a8fb\" name=\"a6d476ab03612c5e87aadfb6b70a1a8fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d476ab03612c5e87aadfb6b70a1a8fb\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a29f7010dec34fdcd9c7a3e9bcadf2b96\" name=\"a29f7010dec34fdcd9c7a3e9bcadf2b96\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29f7010dec34fdcd9c7a3e9bcadf2b96\">&#9670;&nbsp;</a></span>Stop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Stop </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops an animation if its playing. </p>\n<p >Will do nothing if the animation is not playing. </p>\n\n</div>\n</div>\n<a id=\"a6553e17f7e26893e25cca1b229a2ab65\" name=\"a6553e17f7e26893e25cca1b229a2ab65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6553e17f7e26893e25cca1b229a2ab65\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AnimationComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Updates all of the armatures. </p>\n<p >This static function calls the <a class=\"el\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\" title=\"Updates an armature.\">Refresh()</a> method on all of the ArmatureComponents. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a49d9babe42ba7f509bcff47a95b2c110\" name=\"a49d9babe42ba7f509bcff47a95b2c110\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49d9babe42ba7f509bcff47a95b2c110\">&#9670;&nbsp;</a></span>Pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae44dc606d6f719e5a470fdc6ed013e27\" name=\"ae44dc606d6f719e5a470fdc6ed013e27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae44dc606d6f719e5a470fdc6ed013e27\">&#9670;&nbsp;</a></span>ANIM_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::AnimationComponent::ANIM_COUNT = 8</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe657fb3e7986f8344a6a1aa5d1a40d7\" name=\"abe657fb3e7986f8344a6a1aa5d1a40d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe657fb3e7986f8344a6a1aa5d1a40d7\">&#9670;&nbsp;</a></span>anim_finish_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::AnimationComponent::anim_finish_callback) (<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a41874c91efb221e22ce606804aedf1c2\" name=\"a41874c91efb221e22ce606804aedf1c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41874c91efb221e22ce606804aedf1c2\">&#9670;&nbsp;</a></span>anim_info</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a> tram::AnimationComponent::anim_info[<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cfc453f4f1a8e3d39ef58fd0ceb71e4\" name=\"a8cfc453f4f1a8e3d39ef58fd0ceb71e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">&#9670;&nbsp;</a></span>anim_playing</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::AnimationComponent::anim_playing[<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a548e0d34bf1bb6b24a534b759b83ccd8\" name=\"a548e0d34bf1bb6b24a534b759b83ccd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a548e0d34bf1bb6b24a534b759b83ccd8\">&#9670;&nbsp;</a></span>armature_bone_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::AnimationComponent::armature_bone_count = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61a263a46b3af801e91b0306f65bd5b8\" name=\"a61a263a46b3af801e91b0306f65bd5b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61a263a46b3af801e91b0306f65bd5b8\">&#9670;&nbsp;</a></span>armature_bone_parents</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::AnimationComponent::armature_bone_parents[<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {-1}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86100bcacc626be6040580f705248072\" name=\"a86100bcacc626be6040580f705248072\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86100bcacc626be6040580f705248072\">&#9670;&nbsp;</a></span>armature_bones</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Render::Bone</a>* tram::AnimationComponent::armature_bones = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af919af95bb7414728434643fcaeda10c\" name=\"af919af95bb7414728434643fcaeda10c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af919af95bb7414728434643fcaeda10c\">&#9670;&nbsp;</a></span>base_pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> tram::AnimationComponent::base_pose[<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03643f9802dcb7bfe3afdabc432c3025\" name=\"a03643f9802dcb7bfe3afdabc432c3025\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03643f9802dcb7bfe3afdabc432c3025\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a>&gt; tram::AnimationComponent::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ca6edc357f6d61b8750acdec9d4de77\" name=\"a8ca6edc357f6d61b8750acdec9d4de77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ca6edc357f6d61b8750acdec9d4de77\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a>* tram::AnimationComponent::pose = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2animation_8h_source.html\">animation.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2animation_8cpp.html\">animation.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_1_1_sound-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Sound Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">channels</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">GetLength</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">sample_rate</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">Sound</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">sound_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">sound_data</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">sound_length</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">tram::Pool</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_1_1_sound.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Sound Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_audio_1_1_sound-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Sound Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource.  \n <a href=\"classtram_1_1_audio_1_1_sound.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Audio::Sound:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_audio_1_1_sound.png\" usemap=\"#tram::Audio::Sound_map\" alt=\"\"/>\n  <map id=\"tram::Audio::Sound_map\" name=\"tram::Audio::Sound_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,117,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae681916d6ba3394f2993162be809738c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:ae681916d6ba3394f2993162be809738c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads the sound from the disk.  <a href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">More...</a><br /></td></tr>\n<tr class=\"separator:ae681916d6ba3394f2993162be809738c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e7cecf626c003bbb39fd560da2d68a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:a8e7cecf626c003bbb39fd560da2d68a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6070314c5146a08863b061aeafede2b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a6070314c5146a08863b061aeafede2b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes the sound from memory.  <a href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">More...</a><br /></td></tr>\n<tr class=\"separator:a6070314c5146a08863b061aeafede2b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c780daf835dce88cf19d267aa427266\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">GetLength</a> ()</td></tr>\n<tr class=\"memdesc:a9c780daf835dce88cf19d267aa427266\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns sound length in seconds.  <a href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">More...</a><br /></td></tr>\n<tr class=\"separator:a9c780daf835dce88cf19d267aa427266\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:add19eef6a4ddc9d13638368c623f572a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"memdesc:add19eef6a4ddc9d13638368c623f572a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a sound by a name.  <a href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">More...</a><br /></td></tr>\n<tr class=\"separator:add19eef6a4ddc9d13638368c623f572a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a515eabe2a7fd2c3c230f651592ec2c53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">sound_buffer</a> = {0}</td></tr>\n<tr class=\"separator:a515eabe2a7fd2c3c230f651592ec2c53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a946974537a8c3a039a9c49a4edb7f369\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">channels</a> = 0</td></tr>\n<tr class=\"separator:a946974537a8c3a039a9c49a4edb7f369\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31e7f9540ea880eb01e07c5a887d1911\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">sample_rate</a> = 0</td></tr>\n<tr class=\"separator:a31e7f9540ea880eb01e07c5a887d1911\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fd0ad9ee54f5c3beaa148532d97726e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">sound_length</a> = 0</td></tr>\n<tr class=\"separator:a9fd0ad9ee54f5c3beaa148532d97726e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98e435c2eb675251a7b2826d1cee3e9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int16_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">sound_data</a> = nullptr</td></tr>\n<tr class=\"separator:a98e435c2eb675251a7b2826d1cee3e9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a8210efc515c9fff335ca38e09fadd398\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">Sound</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a8210efc515c9fff335ca38e09fadd398\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a6138aa72cd0b6a55be22d74ab84c65d6\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename &gt; </td></tr>\n<tr class=\"memitem:a6138aa72cd0b6a55be22d74ab84c65d6\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">tram::Pool</a></td></tr>\n<tr class=\"separator:a6138aa72cd0b6a55be22d74ab84c65d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource. </p>\n<p >Currently we only support <code>.ogg</code> files, via the <code>stb_vorbis</code> library. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a8210efc515c9fff335ca38e09fadd398\" name=\"a8210efc515c9fff335ca38e09fadd398\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8210efc515c9fff335ca38e09fadd398\">&#9670;&nbsp;</a></span>Sound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Audio::Sound::Sound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"add19eef6a4ddc9d13638368c623f572a\" name=\"add19eef6a4ddc9d13638368c623f572a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add19eef6a4ddc9d13638368c623f572a\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> * tram::Audio::Sound::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a sound by a name. </p>\n<p >If a sound by that name doesn't exist, it will be created. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always returns a pointer to a <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\" title=\"Audio data resource.\">Sound</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a9c780daf835dce88cf19d267aa427266\" name=\"a9c780daf835dce88cf19d267aa427266\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c780daf835dce88cf19d267aa427266\">&#9670;&nbsp;</a></span>GetLength()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Sound::GetLength </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns sound length in seconds. </p>\n\n</div>\n</div>\n<a id=\"ae681916d6ba3394f2993162be809738c\" name=\"ae681916d6ba3394f2993162be809738c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae681916d6ba3394f2993162be809738c\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Sound::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads the sound from the disk. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a8e7cecf626c003bbb39fd560da2d68a0\" name=\"a8e7cecf626c003bbb39fd560da2d68a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e7cecf626c003bbb39fd560da2d68a0\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Sound::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a6070314c5146a08863b061aeafede2b2\" name=\"a6070314c5146a08863b061aeafede2b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6070314c5146a08863b061aeafede2b2\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Removes the sound from memory. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a6138aa72cd0b6a55be22d74ab84c65d6\" name=\"a6138aa72cd0b6a55be22d74ab84c65d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6138aa72cd0b6a55be22d74ab84c65d6\">&#9670;&nbsp;</a></span>tram::Pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a946974537a8c3a039a9c49a4edb7f369\" name=\"a946974537a8c3a039a9c49a4edb7f369\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a946974537a8c3a039a9c49a4edb7f369\">&#9670;&nbsp;</a></span>channels</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Sound::channels = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31e7f9540ea880eb01e07c5a887d1911\" name=\"a31e7f9540ea880eb01e07c5a887d1911\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31e7f9540ea880eb01e07c5a887d1911\">&#9670;&nbsp;</a></span>sample_rate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Sound::sample_rate = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a515eabe2a7fd2c3c230f651592ec2c53\" name=\"a515eabe2a7fd2c3c230f651592ec2c53\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a515eabe2a7fd2c3c230f651592ec2c53\">&#9670;&nbsp;</a></span>sound_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> tram::Audio::Sound::sound_buffer = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a98e435c2eb675251a7b2826d1cee3e9d\" name=\"a98e435c2eb675251a7b2826d1cee3e9d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98e435c2eb675251a7b2826d1cee3e9d\">&#9670;&nbsp;</a></span>sound_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int16_t* tram::Audio::Sound::sound_data = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9fd0ad9ee54f5c3beaa148532d97726e\" name=\"a9fd0ad9ee54f5c3beaa148532d97726e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fd0ad9ee54f5c3beaa148532d97726e\">&#9670;&nbsp;</a></span>sound_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Sound::sound_length = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2sound_8h_source.html\">sound.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2sound_8cpp.html\">sound.cpp</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2sound_8cpp.html\">sound.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_1_1_sound_graph-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::SoundGraph Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">edges</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">LookupFilter</a>(vec3 position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">SoundGraph</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">tram::Audio::SoundGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_1_1_sound_graph.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::SoundGraph Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_audio_1_1_sound_graph-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::SoundGraph Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Audio::SoundGraph:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_audio_1_1_sound_graph.png\" usemap=\"#tram::Audio::SoundGraph_map\" alt=\"\"/>\n  <map id=\"tram::Audio::SoundGraph_map\" name=\"tram::Audio::SoundGraph_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,152,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad9ef3ae1d9537e6e955cd7c8d1357d3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">SoundGraph</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:ad9ef3ae1d9537e6e955cd7c8d1357d3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac716178da1e5c588036e57756bbcd76f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:ac716178da1e5c588036e57756bbcd76f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad953426922078e22c045f5d04517b650\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:ad953426922078e22c045f5d04517b650\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e25152edb671610cb0edca497a653de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">Unload</a> ()</td></tr>\n<tr class=\"separator:a5e25152edb671610cb0edca497a653de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a3d22cc051810eba6e6e9bcc88191e67f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">LookupFilter</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:a3d22cc051810eba6e6e9bcc88191e67f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa0cdf6c6a42f59b3cc2362db60c16d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:aaa0cdf6c6a42f59b3cc2362db60c16d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:afa8bc79a4c17ed1850d6f24d9110f37e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">nodes</a></td></tr>\n<tr class=\"separator:afa8bc79a4c17ed1850d6f24d9110f37e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6862a1fe3026f98bafee3fc0cf8c465e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; uint32_t, uint32_t &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">edges</a></td></tr>\n<tr class=\"separator:a6862a1fe3026f98bafee3fc0cf8c465e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad9ef3ae1d9537e6e955cd7c8d1357d3c\" name=\"ad9ef3ae1d9537e6e955cd7c8d1357d3c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">&#9670;&nbsp;</a></span>SoundGraph()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Audio::SoundGraph::SoundGraph </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aaa0cdf6c6a42f59b3cc2362db60c16d3\" name=\"aaa0cdf6c6a42f59b3cc2362db60c16d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa0cdf6c6a42f59b3cc2362db60c16d3\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a> * SoundGraph::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac716178da1e5c588036e57756bbcd76f\" name=\"ac716178da1e5c588036e57756bbcd76f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac716178da1e5c588036e57756bbcd76f\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void SoundGraph::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"ad953426922078e22c045f5d04517b650\" name=\"ad953426922078e22c045f5d04517b650\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad953426922078e22c045f5d04517b650\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::SoundGraph::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a3d22cc051810eba6e6e9bcc88191e67f\" name=\"a3d22cc051810eba6e6e9bcc88191e67f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d22cc051810eba6e6e9bcc88191e67f\">&#9670;&nbsp;</a></span>LookupFilter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> SoundGraph::LookupFilter </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e25152edb671610cb0edca497a653de\" name=\"a5e25152edb671610cb0edca497a653de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e25152edb671610cb0edca497a653de\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::SoundGraph::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6862a1fe3026f98bafee3fc0cf8c465e\" name=\"a6862a1fe3026f98bafee3fc0cf8c465e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6862a1fe3026f98bafee3fc0cf8c465e\">&#9670;&nbsp;</a></span>edges</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;uint32_t, uint32_t&gt; &gt; tram::Audio::SoundGraph::edges</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa8bc79a4c17ed1850d6f24d9110f37e\" name=\"afa8bc79a4c17ed1850d6f24d9110f37e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa8bc79a4c17ed1850d6f24d9110f37e\">&#9670;&nbsp;</a></span>nodes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a>&gt; tram::Audio::SoundGraph::nodes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2graph_8cpp.html\">graph.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::AudioComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">AudioComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">IsDebugInfoDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">IsPlaying</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">IsSourceDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">Pause</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">Play</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">play_on_start</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">repeat</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">SetDebugInfoDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">SetRepeating</a>(bool is_repeating)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">SetSound</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">SetSourceDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">SetupModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">sound</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">source</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">Stop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">~AudioComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_audio_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::AudioComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_audio_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::AudioComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Plays back Sounds.  \n <a href=\"classtram_1_1_audio_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::AudioComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_audio_component.png\" usemap=\"#tram::AudioComponent_map\" alt=\"\"/>\n  <map id=\"tram::AudioComponent_map\" name=\"tram::AudioComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,138,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aff631c814eda2b4e8b615ebe9a4217f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">AudioComponent</a> ()</td></tr>\n<tr class=\"separator:aff631c814eda2b4e8b615ebe9a4217f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a9b7571ead611ac20d86a8c94b15b13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">~AudioComponent</a> ()</td></tr>\n<tr class=\"separator:a0a9b7571ead611ac20d86a8c94b15b13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a1ef247f18c73318db0355a6b0a44f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">Start</a> ()</td></tr>\n<tr class=\"separator:a0a1ef247f18c73318db0355a6b0a44f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0fc5f3971f62787f84b8150f6a2e1df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">location</a>)</td></tr>\n<tr class=\"memdesc:ad0fc5f3971f62787f84b8150f6a2e1df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the location from which the sound will play.  <a href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">More...</a><br /></td></tr>\n<tr class=\"separator:ad0fc5f3971f62787f84b8150f6a2e1df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a736977966c4d0485ef879349eeef271e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">SetSound</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:a736977966c4d0485ef879349eeef271e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sound that the component will play.  <a href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">More...</a><br /></td></tr>\n<tr class=\"separator:a736977966c4d0485ef879349eeef271e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6d30f7ac730409c6d4a50edfc1d2ee9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">SetRepeating</a> (bool is_repeating)</td></tr>\n<tr class=\"memdesc:aa6d30f7ac730409c6d4a50edfc1d2ee9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets whether the component will repeat its sound.  <a href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">More...</a><br /></td></tr>\n<tr class=\"separator:aa6d30f7ac730409c6d4a50edfc1d2ee9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0cb407f67786c11bda3f8a4352796a58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">IsPlaying</a> ()</td></tr>\n<tr class=\"memdesc:a0cb407f67786c11bda3f8a4352796a58\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if component is playing a sound.  <a href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">More...</a><br /></td></tr>\n<tr class=\"separator:a0cb407f67786c11bda3f8a4352796a58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46dea84e302ded4f9d1cb4a19a15a4fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">Play</a> ()</td></tr>\n<tr class=\"memdesc:a46dea84e302ded4f9d1cb4a19a15a4fd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays the sound.  <a href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a46dea84e302ded4f9d1cb4a19a15a4fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8d20d0b929c8ac8666d80dac82ce0df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">Pause</a> ()</td></tr>\n<tr class=\"memdesc:ad8d20d0b929c8ac8666d80dac82ce0df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the sound.  <a href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">More...</a><br /></td></tr>\n<tr class=\"separator:ad8d20d0b929c8ac8666d80dac82ce0df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4acdea9eb5e1750b2c2ff66f07b9daf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">Stop</a> ()</td></tr>\n<tr class=\"memdesc:a4acdea9eb5e1750b2c2ff66f07b9daf5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the sound.  <a href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">More...</a><br /></td></tr>\n<tr class=\"separator:a4acdea9eb5e1750b2c2ff66f07b9daf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac455283db7b930059f29e82905172ce8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:ac455283db7b930059f29e82905172ce8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a9d8448140c994b866c61118e80887c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">IsSourceDraw</a> ()</td></tr>\n<tr class=\"memdesc:a9d8448140c994b866c61118e80887c58\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the audio source is drawn.  <a href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">More...</a><br /></td></tr>\n<tr class=\"separator:a9d8448140c994b866c61118e80887c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f7d175b19b8e5b40994132c416a404e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">IsDebugInfoDraw</a> ()</td></tr>\n<tr class=\"memdesc:a8f7d175b19b8e5b40994132c416a404e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the debug text is drawn.  <a href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">More...</a><br /></td></tr>\n<tr class=\"separator:a8f7d175b19b8e5b40994132c416a404e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07c6b771da60423e0357a1c872db6ed3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">SetSourceDraw</a> (bool)</td></tr>\n<tr class=\"memdesc:a07c6b771da60423e0357a1c872db6ed3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the drawing of audio sources.  <a href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">More...</a><br /></td></tr>\n<tr class=\"separator:a07c6b771da60423e0357a1c872db6ed3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08da2d9226240fb8e37b91b77145f0cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">SetDebugInfoDraw</a> (bool)</td></tr>\n<tr class=\"memdesc:a08da2d9226240fb8e37b91b77145f0cf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the drawing of debug info.  <a href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">More...</a><br /></td></tr>\n<tr class=\"separator:a08da2d9226240fb8e37b91b77145f0cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aacd7fc7a708e8bae044c8fa34bca2031\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">SetupModel</a> ()</td></tr>\n<tr class=\"separator:aacd7fc7a708e8bae044c8fa34bca2031\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aaa933d4c47c8636b20a47ae313a79230\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">sound</a></td></tr>\n<tr class=\"separator:aaa933d4c47c8636b20a47ae313a79230\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfa284e522ae3aa9cb61337b23327171\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">Audio::audiosource_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">source</a> = {}</td></tr>\n<tr class=\"separator:acfa284e522ae3aa9cb61337b23327171\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ff1eab65a76f78216b57665a6c8b464\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a1ff1eab65a76f78216b57665a6c8b464\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1cbca3ac78210b1c284dc6309a6b303\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">repeat</a> = false</td></tr>\n<tr class=\"separator:ab1cbca3ac78210b1c284dc6309a6b303\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa9685950e016f31ca90c71839cd7852\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">play_on_start</a> = false</td></tr>\n<tr class=\"separator:afa9685950e016f31ca90c71839cd7852\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbf584247d4a88f0fa923f9e5b426f84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">model</a></td></tr>\n<tr class=\"separator:acbf584247d4a88f0fa923f9e5b426f84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Plays back Sounds. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/audio.html\">https://racenis.github.io/tram-sdk/documentation/components/audio.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aff631c814eda2b4e8b615ebe9a4217f5\" name=\"aff631c814eda2b4e8b615ebe9a4217f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff631c814eda2b4e8b615ebe9a4217f5\">&#9670;&nbsp;</a></span>AudioComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AudioComponent::AudioComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a9b7571ead611ac20d86a8c94b15b13\" name=\"a0a9b7571ead611ac20d86a8c94b15b13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a9b7571ead611ac20d86a8c94b15b13\">&#9670;&nbsp;</a></span>~AudioComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::AudioComponent::~AudioComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac455283db7b930059f29e82905172ce8\" name=\"ac455283db7b930059f29e82905172ce8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac455283db7b930059f29e82905172ce8\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a8f7d175b19b8e5b40994132c416a404e\" name=\"a8f7d175b19b8e5b40994132c416a404e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f7d175b19b8e5b40994132c416a404e\">&#9670;&nbsp;</a></span>IsDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AudioComponent::IsDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the debug text is drawn. </p>\n<p >Check <a class=\"el\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\" title=\"Sets the drawing of debug info.\">SetDebugInfoDraw()</a> for more info. </p>\n\n</div>\n</div>\n<a id=\"a0cb407f67786c11bda3f8a4352796a58\" name=\"a0cb407f67786c11bda3f8a4352796a58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cb407f67786c11bda3f8a4352796a58\">&#9670;&nbsp;</a></span>IsPlaying()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AudioComponent::IsPlaying </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks if component is playing a sound. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True, if a sound is playing, false if it hasn't started or has stopped. </dd></dl>\n\n</div>\n</div>\n<a id=\"a9d8448140c994b866c61118e80887c58\" name=\"a9d8448140c994b866c61118e80887c58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d8448140c994b866c61118e80887c58\">&#9670;&nbsp;</a></span>IsSourceDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AudioComponent::IsSourceDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the audio source is drawn. </p>\n<p >Check <a class=\"el\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\" title=\"Sets the drawing of audio sources.\">SetSourceDraw()</a> for more info. </p>\n\n</div>\n</div>\n<a id=\"ad8d20d0b929c8ac8666d80dac82ce0df\" name=\"ad8d20d0b929c8ac8666d80dac82ce0df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8d20d0b929c8ac8666d80dac82ce0df\">&#9670;&nbsp;</a></span>Pause()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::Pause </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pauses the sound. </p>\n<p >Pauses the sound that the component is playing, or does nothing, if no sound is playing. </p>\n\n</div>\n</div>\n<a id=\"a46dea84e302ded4f9d1cb4a19a15a4fd\" name=\"a46dea84e302ded4f9d1cb4a19a15a4fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46dea84e302ded4f9d1cb4a19a15a4fd\">&#9670;&nbsp;</a></span>Play()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::Play </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Plays the sound. </p>\n<p >Plays the sound that the component has been set to play. </p>\n\n</div>\n</div>\n<a id=\"a08da2d9226240fb8e37b91b77145f0cf\" name=\"a08da2d9226240fb8e37b91b77145f0cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08da2d9226240fb8e37b91b77145f0cf\">&#9670;&nbsp;</a></span>SetDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Sets the drawing of debug info. </p>\n<p >If set to true, each frame some debug text will be drawn for each audio source. This is useful for debugging. </p>\n\n</div>\n</div>\n<a id=\"ad0fc5f3971f62787f84b8150f6a2e1df\" name=\"ad0fc5f3971f62787f84b8150f6a2e1df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0fc5f3971f62787f84b8150f6a2e1df\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the location from which the sound will play. </p>\n\n</div>\n</div>\n<a id=\"aa6d30f7ac730409c6d4a50edfc1d2ee9\" name=\"aa6d30f7ac730409c6d4a50edfc1d2ee9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6d30f7ac730409c6d4a50edfc1d2ee9\">&#9670;&nbsp;</a></span>SetRepeating()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetRepeating </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is_repeating</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets whether the component will repeat its sound. </p>\n\n</div>\n</div>\n<a id=\"a736977966c4d0485ef879349eeef271e\" name=\"a736977966c4d0485ef879349eeef271e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a736977966c4d0485ef879349eeef271e\">&#9670;&nbsp;</a></span>SetSound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetSound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the sound that the component will play. </p>\n\n</div>\n</div>\n<a id=\"a07c6b771da60423e0357a1c872db6ed3\" name=\"a07c6b771da60423e0357a1c872db6ed3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07c6b771da60423e0357a1c872db6ed3\">&#9670;&nbsp;</a></span>SetSourceDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetSourceDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Sets the drawing of audio sources. </p>\n<p >If set to true, each audio component will initialize a 3D model, which will allow you to see the posiiton of the audio sources. Useful for debugging. </p>\n\n</div>\n</div>\n<a id=\"aacd7fc7a708e8bae044c8fa34bca2031\" name=\"aacd7fc7a708e8bae044c8fa34bca2031\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacd7fc7a708e8bae044c8fa34bca2031\">&#9670;&nbsp;</a></span>SetupModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::SetupModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a1ef247f18c73318db0355a6b0a44f3\" name=\"a0a1ef247f18c73318db0355a6b0a44f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a1ef247f18c73318db0355a6b0a44f3\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a4acdea9eb5e1750b2c2ff66f07b9daf5\" name=\"a4acdea9eb5e1750b2c2ff66f07b9daf5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4acdea9eb5e1750b2c2ff66f07b9daf5\">&#9670;&nbsp;</a></span>Stop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AudioComponent::Stop </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops the sound. </p>\n<p >Stops the sound that the component is playing, or does nothing, if no sound is playing. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a1ff1eab65a76f78216b57665a6c8b464\" name=\"a1ff1eab65a76f78216b57665a6c8b464\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ff1eab65a76f78216b57665a6c8b464\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AudioComponent::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acbf584247d4a88f0fa923f9e5b426f84\" name=\"acbf584247d4a88f0fa923f9e5b426f84\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbf584247d4a88f0fa923f9e5b426f84\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::AudioComponent::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa9685950e016f31ca90c71839cd7852\" name=\"afa9685950e016f31ca90c71839cd7852\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa9685950e016f31ca90c71839cd7852\">&#9670;&nbsp;</a></span>play_on_start</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AudioComponent::play_on_start = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1cbca3ac78210b1c284dc6309a6b303\" name=\"ab1cbca3ac78210b1c284dc6309a6b303\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1cbca3ac78210b1c284dc6309a6b303\">&#9670;&nbsp;</a></span>repeat</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AudioComponent::repeat = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa933d4c47c8636b20a47ae313a79230\" name=\"aaa933d4c47c8636b20a47ae313a79230\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa933d4c47c8636b20a47ae313a79230\">&#9670;&nbsp;</a></span>sound</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a>&gt; tram::AudioComponent::sound</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acfa284e522ae3aa9cb61337b23327171\" name=\"acfa284e522ae3aa9cb61337b23327171\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfa284e522ae3aa9cb61337b23327171\">&#9670;&nbsp;</a></span>source</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">Audio::audiosource_t</a> tram::AudioComponent::source = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2audio_8h_source.html\">audio.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2audio_8cpp.html\">audio.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Component&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">Component</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">get</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a1e0318f6b89ca572f28e9fed070dd32b\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ad96889276619fda754e4af68a5075db2\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a4ba7f565d501661914c7648cd1b62b44\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ae956519770a3e6c53b9bcecf407676b6\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a0abec218348d77cebbfa73723815606f\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a81ec0494d37dea609b33cf00cf0c33d3\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ab30ccc33ece77ac0526eccd693de6a1a\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a451ffe51f9f1e27648f7a5f585eb1ea4\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a54a5bab4377e5b7895691516332639ac\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a827f85fff0e002fb5706f4ade3ddc72a\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ac8b7faa733f01297be8df3a2ea685eed\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a3848187d991b7185779a6c237957bd9c\">init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">make</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ac42050ff047751f66c1549099461d047\">operator bool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd\">operator T*</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">operator*</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">operator-&gt;</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a92887e8a968a2e5c33afde0a97d909d3\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a7fd2f109de653312be2dd05e70bcb456\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ade7b2c38396c3e7b4e56575f8a0d45dd\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a56bd08e6a719e3ce42b1befec0871314\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a9b57dacbc4100263efa58393d4dcee71\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#abf8fb2ac22a613aeec1352f2b6fd9f19\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ab03a41f9f06ec0498dbbe9936f89f15a\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#aeff899a413c447e8b1f0c43c2ee1b22d\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a2eaafb5a31e19e33fd479f78f74dfdbc\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#a33a0538e443702363c86b29422ddecf1\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#adc47ac1f2a537bc6f1bd71203ae7c27a\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#ad29f0c53f47721905f77a3f83a4d2b97\">yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">~Component</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Component&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Component&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer.  \n <a href=\"classtram_1_1_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">entitycomponent.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a45fa994315db8371fbd6b59cfa5d4979\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">Component</a> ()</td></tr>\n<tr class=\"separator:a45fa994315db8371fbd6b59cfa5d4979\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9e29eb673f1f11ec14d75aa19d6be1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">~Component</a> ()</td></tr>\n<tr class=\"separator:af9e29eb673f1f11ec14d75aa19d6be1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a677f4c2d5457aa376fba89d95f3ca8c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">make</a> ()</td></tr>\n<tr class=\"separator:a677f4c2d5457aa376fba89d95f3ca8c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a913f66e1f83b18318e0962d532e77376\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">clear</a> ()</td></tr>\n<tr class=\"separator:a913f66e1f83b18318e0962d532e77376\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a129fcc4a535b3bbd7ae878a22b36e541\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">get</a> ()</td></tr>\n<tr class=\"separator:a129fcc4a535b3bbd7ae878a22b36e541\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7867337d41058f8bdd955736e2ba1127\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">operator-&gt;</a> ()</td></tr>\n<tr class=\"separator:a7867337d41058f8bdd955736e2ba1127\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83c13894934e104f7b7fb9f95a2864e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">operator*</a> ()</td></tr>\n<tr class=\"separator:aa83c13894934e104f7b7fb9f95a2864e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53f799110efd1ab0687820f197916abd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd\">operator T*</a> ()</td></tr>\n<tr class=\"separator:a53f799110efd1ab0687820f197916abd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac42050ff047751f66c1549099461d047\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ac42050ff047751f66c1549099461d047\">operator bool</a> ()</td></tr>\n<tr class=\"separator:ac42050ff047751f66c1549099461d047\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a6cd91a842686662e8cceccd2920c3619\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">init</a> ()</td></tr>\n<tr class=\"separator:a6cd91a842686662e8cceccd2920c3619\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49462f491b7ab20bc064693927baf3d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">yeet</a> ()</td></tr>\n<tr class=\"separator:a49462f491b7ab20bc064693927baf3d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e0318f6b89ca572f28e9fed070dd32b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a1e0318f6b89ca572f28e9fed070dd32b\">init</a> ()</td></tr>\n<tr class=\"separator:a1e0318f6b89ca572f28e9fed070dd32b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92887e8a968a2e5c33afde0a97d909d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a92887e8a968a2e5c33afde0a97d909d3\">yeet</a> ()</td></tr>\n<tr class=\"separator:a92887e8a968a2e5c33afde0a97d909d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad96889276619fda754e4af68a5075db2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ad96889276619fda754e4af68a5075db2\">init</a> ()</td></tr>\n<tr class=\"separator:ad96889276619fda754e4af68a5075db2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fd2f109de653312be2dd05e70bcb456\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a7fd2f109de653312be2dd05e70bcb456\">yeet</a> ()</td></tr>\n<tr class=\"separator:a7fd2f109de653312be2dd05e70bcb456\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ba7f565d501661914c7648cd1b62b44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a4ba7f565d501661914c7648cd1b62b44\">init</a> ()</td></tr>\n<tr class=\"separator:a4ba7f565d501661914c7648cd1b62b44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade7b2c38396c3e7b4e56575f8a0d45dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ade7b2c38396c3e7b4e56575f8a0d45dd\">yeet</a> ()</td></tr>\n<tr class=\"separator:ade7b2c38396c3e7b4e56575f8a0d45dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae956519770a3e6c53b9bcecf407676b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ae956519770a3e6c53b9bcecf407676b6\">init</a> ()</td></tr>\n<tr class=\"separator:ae956519770a3e6c53b9bcecf407676b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56bd08e6a719e3ce42b1befec0871314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a56bd08e6a719e3ce42b1befec0871314\">yeet</a> ()</td></tr>\n<tr class=\"separator:a56bd08e6a719e3ce42b1befec0871314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0abec218348d77cebbfa73723815606f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a0abec218348d77cebbfa73723815606f\">init</a> ()</td></tr>\n<tr class=\"separator:a0abec218348d77cebbfa73723815606f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b57dacbc4100263efa58393d4dcee71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a9b57dacbc4100263efa58393d4dcee71\">yeet</a> ()</td></tr>\n<tr class=\"separator:a9b57dacbc4100263efa58393d4dcee71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81ec0494d37dea609b33cf00cf0c33d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a81ec0494d37dea609b33cf00cf0c33d3\">init</a> ()</td></tr>\n<tr class=\"separator:a81ec0494d37dea609b33cf00cf0c33d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf8fb2ac22a613aeec1352f2b6fd9f19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#abf8fb2ac22a613aeec1352f2b6fd9f19\">yeet</a> ()</td></tr>\n<tr class=\"separator:abf8fb2ac22a613aeec1352f2b6fd9f19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab30ccc33ece77ac0526eccd693de6a1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ab30ccc33ece77ac0526eccd693de6a1a\">init</a> ()</td></tr>\n<tr class=\"separator:ab30ccc33ece77ac0526eccd693de6a1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab03a41f9f06ec0498dbbe9936f89f15a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ab03a41f9f06ec0498dbbe9936f89f15a\">yeet</a> ()</td></tr>\n<tr class=\"separator:ab03a41f9f06ec0498dbbe9936f89f15a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a451ffe51f9f1e27648f7a5f585eb1ea4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a451ffe51f9f1e27648f7a5f585eb1ea4\">init</a> ()</td></tr>\n<tr class=\"separator:a451ffe51f9f1e27648f7a5f585eb1ea4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeff899a413c447e8b1f0c43c2ee1b22d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#aeff899a413c447e8b1f0c43c2ee1b22d\">yeet</a> ()</td></tr>\n<tr class=\"separator:aeff899a413c447e8b1f0c43c2ee1b22d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54a5bab4377e5b7895691516332639ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a54a5bab4377e5b7895691516332639ac\">init</a> ()</td></tr>\n<tr class=\"separator:a54a5bab4377e5b7895691516332639ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2eaafb5a31e19e33fd479f78f74dfdbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a2eaafb5a31e19e33fd479f78f74dfdbc\">yeet</a> ()</td></tr>\n<tr class=\"separator:a2eaafb5a31e19e33fd479f78f74dfdbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a827f85fff0e002fb5706f4ade3ddc72a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a827f85fff0e002fb5706f4ade3ddc72a\">init</a> ()</td></tr>\n<tr class=\"separator:a827f85fff0e002fb5706f4ade3ddc72a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33a0538e443702363c86b29422ddecf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a33a0538e443702363c86b29422ddecf1\">yeet</a> ()</td></tr>\n<tr class=\"separator:a33a0538e443702363c86b29422ddecf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8b7faa733f01297be8df3a2ea685eed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ac8b7faa733f01297be8df3a2ea685eed\">init</a> ()</td></tr>\n<tr class=\"separator:ac8b7faa733f01297be8df3a2ea685eed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc47ac1f2a537bc6f1bd71203ae7c27a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#adc47ac1f2a537bc6f1bd71203ae7c27a\">yeet</a> ()</td></tr>\n<tr class=\"separator:adc47ac1f2a537bc6f1bd71203ae7c27a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3848187d991b7185779a6c237957bd9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a3848187d991b7185779a6c237957bd9c\">init</a> ()</td></tr>\n<tr class=\"separator:a3848187d991b7185779a6c237957bd9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad29f0c53f47721905f77a3f83a4d2b97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#ad29f0c53f47721905f77a3f83a4d2b97\">yeet</a> ()</td></tr>\n<tr class=\"separator:ad29f0c53f47721905f77a3f83a4d2b97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a76e7065ebab1cd17d4cabe184ff78dfe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a> = nullptr</td></tr>\n<tr class=\"separator:a76e7065ebab1cd17d4cabe184ff78dfe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename T&gt;<br />\nclass tram::Component&lt; T &gt;</div><p >Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer. </p>\n<p >Automatically constructs the <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> in the correct pool, also provides protection against accidental memory leaks. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a45fa994315db8371fbd6b59cfa5d4979\" name=\"a45fa994315db8371fbd6b59cfa5d4979\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45fa994315db8371fbd6b59cfa5d4979\">&#9670;&nbsp;</a></span>Component()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_component.html\">Component</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af9e29eb673f1f11ec14d75aa19d6be1f\" name=\"af9e29eb673f1f11ec14d75aa19d6be1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9e29eb673f1f11ec14d75aa19d6be1f\">&#9670;&nbsp;</a></span>~Component()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::~<a class=\"el\" href=\"classtram_1_1_component.html\">Component</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a913f66e1f83b18318e0962d532e77376\" name=\"a913f66e1f83b18318e0962d532e77376\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a913f66e1f83b18318e0962d532e77376\">&#9670;&nbsp;</a></span>clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::clear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a129fcc4a535b3bbd7ae878a22b36e541\" name=\"a129fcc4a535b3bbd7ae878a22b36e541\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a129fcc4a535b3bbd7ae878a22b36e541\">&#9670;&nbsp;</a></span>get()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::get </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e0318f6b89ca572f28e9fed070dd32b\" name=\"a1e0318f6b89ca572f28e9fed070dd32b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e0318f6b89ca572f28e9fed070dd32b\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[1/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad96889276619fda754e4af68a5075db2\" name=\"ad96889276619fda754e4af68a5075db2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad96889276619fda754e4af68a5075db2\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[2/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ba7f565d501661914c7648cd1b62b44\" name=\"a4ba7f565d501661914c7648cd1b62b44\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ba7f565d501661914c7648cd1b62b44\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[3/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae956519770a3e6c53b9bcecf407676b6\" name=\"ae956519770a3e6c53b9bcecf407676b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae956519770a3e6c53b9bcecf407676b6\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[4/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0abec218348d77cebbfa73723815606f\" name=\"a0abec218348d77cebbfa73723815606f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0abec218348d77cebbfa73723815606f\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[5/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81ec0494d37dea609b33cf00cf0c33d3\" name=\"a81ec0494d37dea609b33cf00cf0c33d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81ec0494d37dea609b33cf00cf0c33d3\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[6/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab30ccc33ece77ac0526eccd693de6a1a\" name=\"ab30ccc33ece77ac0526eccd693de6a1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab30ccc33ece77ac0526eccd693de6a1a\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[7/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a451ffe51f9f1e27648f7a5f585eb1ea4\" name=\"a451ffe51f9f1e27648f7a5f585eb1ea4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a451ffe51f9f1e27648f7a5f585eb1ea4\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[8/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a54a5bab4377e5b7895691516332639ac\" name=\"a54a5bab4377e5b7895691516332639ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54a5bab4377e5b7895691516332639ac\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[9/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a827f85fff0e002fb5706f4ade3ddc72a\" name=\"a827f85fff0e002fb5706f4ade3ddc72a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a827f85fff0e002fb5706f4ade3ddc72a\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[10/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac8b7faa733f01297be8df3a2ea685eed\" name=\"ac8b7faa733f01297be8df3a2ea685eed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8b7faa733f01297be8df3a2ea685eed\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[11/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3848187d991b7185779a6c237957bd9c\" name=\"a3848187d991b7185779a6c237957bd9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3848187d991b7185779a6c237957bd9c\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[12/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6cd91a842686662e8cceccd2920c3619\" name=\"a6cd91a842686662e8cceccd2920c3619\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6cd91a842686662e8cceccd2920c3619\">&#9670;&nbsp;</a></span>init() <span class=\"overload\">[13/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a677f4c2d5457aa376fba89d95f3ca8c9\" name=\"a677f4c2d5457aa376fba89d95f3ca8c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a677f4c2d5457aa376fba89d95f3ca8c9\">&#9670;&nbsp;</a></span>make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::make </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac42050ff047751f66c1549099461d047\" name=\"ac42050ff047751f66c1549099461d047\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac42050ff047751f66c1549099461d047\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53f799110efd1ab0687820f197916abd\" name=\"a53f799110efd1ab0687820f197916abd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53f799110efd1ab0687820f197916abd\">&#9670;&nbsp;</a></span>operator T*()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::operator T* </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa83c13894934e104f7b7fb9f95a2864e\" name=\"aa83c13894934e104f7b7fb9f95a2864e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa83c13894934e104f7b7fb9f95a2864e\">&#9670;&nbsp;</a></span>operator*()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::operator* </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7867337d41058f8bdd955736e2ba1127\" name=\"a7867337d41058f8bdd955736e2ba1127\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7867337d41058f8bdd955736e2ba1127\">&#9670;&nbsp;</a></span>operator-&gt;()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::operator-&gt; </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92887e8a968a2e5c33afde0a97d909d3\" name=\"a92887e8a968a2e5c33afde0a97d909d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92887e8a968a2e5c33afde0a97d909d3\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[1/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7fd2f109de653312be2dd05e70bcb456\" name=\"a7fd2f109de653312be2dd05e70bcb456\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7fd2f109de653312be2dd05e70bcb456\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[2/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ade7b2c38396c3e7b4e56575f8a0d45dd\" name=\"ade7b2c38396c3e7b4e56575f8a0d45dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade7b2c38396c3e7b4e56575f8a0d45dd\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[3/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56bd08e6a719e3ce42b1befec0871314\" name=\"a56bd08e6a719e3ce42b1befec0871314\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56bd08e6a719e3ce42b1befec0871314\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[4/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b57dacbc4100263efa58393d4dcee71\" name=\"a9b57dacbc4100263efa58393d4dcee71\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b57dacbc4100263efa58393d4dcee71\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[5/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf8fb2ac22a613aeec1352f2b6fd9f19\" name=\"abf8fb2ac22a613aeec1352f2b6fd9f19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf8fb2ac22a613aeec1352f2b6fd9f19\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[6/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab03a41f9f06ec0498dbbe9936f89f15a\" name=\"ab03a41f9f06ec0498dbbe9936f89f15a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab03a41f9f06ec0498dbbe9936f89f15a\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[7/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeff899a413c447e8b1f0c43c2ee1b22d\" name=\"aeff899a413c447e8b1f0c43c2ee1b22d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeff899a413c447e8b1f0c43c2ee1b22d\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[8/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2eaafb5a31e19e33fd479f78f74dfdbc\" name=\"a2eaafb5a31e19e33fd479f78f74dfdbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2eaafb5a31e19e33fd479f78f74dfdbc\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[9/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33a0538e443702363c86b29422ddecf1\" name=\"a33a0538e443702363c86b29422ddecf1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33a0538e443702363c86b29422ddecf1\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[10/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adc47ac1f2a537bc6f1bd71203ae7c27a\" name=\"adc47ac1f2a537bc6f1bd71203ae7c27a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc47ac1f2a537bc6f1bd71203ae7c27a\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[11/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad29f0c53f47721905f77a3f83a4d2b97\" name=\"ad29f0c53f47721905f77a3f83a4d2b97\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad29f0c53f47721905f77a3f83a4d2b97\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[12/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49462f491b7ab20bc064693927baf3d4\" name=\"a49462f491b7ab20bc064693927baf3d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49462f491b7ab20bc064693927baf3d4\">&#9670;&nbsp;</a></span>yeet() <span class=\"overload\">[13/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a76e7065ebab1cd17d4cabe184ff78dfe\" name=\"a76e7065ebab1cd17d4cabe184ff78dfe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76e7065ebab1cd17d4cabe184ff78dfe\">&#9670;&nbsp;</a></span>ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component</a>&lt; T &gt;::ptr = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entitycomponent_8h_source.html\">entitycomponent.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_controller_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ControllerComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">Crouch</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">EventHandler</a>(Event &amp;event)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">Fly</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">Jump</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">Move</a>(vec3 local_direction)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">Push</a>(vec3 direction)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">Run</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a>(bool collide)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a>(quat direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">TurnLeft</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">TurnRight</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_controller_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ControllerComponent Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides an API for character controllers.  \n <a href=\"classtram_1_1_controller_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::ControllerComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_controller_component.png\" usemap=\"#tram::ControllerComponent_map\" alt=\"\"/>\n  <map id=\"tram::ControllerComponent_map\" name=\"tram::ControllerComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"108,0,314,24\"/>\n<area href=\"classtram_1_1_f_p_s_controller_component.html\" title=\"Implementation of an FPS-style character controller.\" alt=\"tram::FPSControllerComponent\" shape=\"rect\" coords=\"0,112,206,136\"/>\n<area href=\"classtram_1_1_raycast_controller_component.html\" title=\"Implementation of a simple character controller.\" alt=\"tram::RaycastControllerComponent\" shape=\"rect\" coords=\"216,112,422,136\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a72c9c834cd28d9c7cdbd16e48d6146f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">Move</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction)=0</td></tr>\n<tr class=\"separator:a72c9c834cd28d9c7cdbd16e48d6146f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09830a27a27ef8b419a9cf9e60446121\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">Run</a> ()=0</td></tr>\n<tr class=\"separator:a09830a27a27ef8b419a9cf9e60446121\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeca250fb793765f6d36d00ef05e9f931\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">Crouch</a> ()=0</td></tr>\n<tr class=\"separator:aeca250fb793765f6d36d00ef05e9f931\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae13d3ca8940732bb64b80f0d0a789bfe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">Fly</a> ()=0</td></tr>\n<tr class=\"separator:ae13d3ca8940732bb64b80f0d0a789bfe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5ac49ff2ac8a5c96dbd8c341d445f76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">Jump</a> ()=0</td></tr>\n<tr class=\"separator:ad5ac49ff2ac8a5c96dbd8c341d445f76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad173b5388f4168d4de4acd13e4819089\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">TurnLeft</a> ()=0</td></tr>\n<tr class=\"separator:ad173b5388f4168d4de4acd13e4819089\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ebc25137ba38f067f7986e3a5f1d5db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">TurnRight</a> ()=0</td></tr>\n<tr class=\"separator:a1ebc25137ba38f067f7986e3a5f1d5db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85d0688b2477652353b92a7662fdc36a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">Push</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction)=0</td></tr>\n<tr class=\"separator:a85d0688b2477652353b92a7662fdc36a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a005c65e23bba7635c05821a5bebbdf47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a> (bool <a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a>)</td></tr>\n<tr class=\"separator:a005c65e23bba7635c05821a5bebbdf47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92c6a99db84d365877eb1e6f45b406ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> direction)</td></tr>\n<tr class=\"separator:a92c6a99db84d365877eb1e6f45b406ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94439cce310fb5bc23485b3e23f19cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a> () const</td></tr>\n<tr class=\"separator:a94439cce310fb5bc23485b3e23f19cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a596335e001ab39c1f575ece6defaf04b inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)=0</td></tr>\n<tr class=\"separator:a596335e001ab39c1f575ece6defaf04b inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a827a701de4481f78563b75fce6ea55a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a> ()</td></tr>\n<tr class=\"separator:a827a701de4481f78563b75fce6ea55a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7b5cdc611a17b8a7261e14df61c56dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a> (bool)</td></tr>\n<tr class=\"separator:af7b5cdc611a17b8a7261e14df61c56dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc0d17de6313da06268b3c14b18e8dcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a> ()</td></tr>\n<tr class=\"memdesc:adc0d17de6313da06268b3c14b18e8dcf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the ControllerComponents.  <a href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">More...</a><br /></td></tr>\n<tr class=\"separator:adc0d17de6313da06268b3c14b18e8dcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad160a058e6730f0040aa6a9338e15750\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ad160a058e6730f0040aa6a9338e15750\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93abb6fa1349a41b93f53450817f9839\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a> = true</td></tr>\n<tr class=\"separator:a93abb6fa1349a41b93f53450817f9839\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64cc26454bf92a709eef5e19931695d6 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start</a> ()=0</td></tr>\n<tr class=\"separator:a64cc26454bf92a709eef5e19931695d6 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides an API for character controllers. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/controller.html\">https://racenis.github.io/tram-sdk/documentation/components/controller.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aeca250fb793765f6d36d00ef05e9f931\" name=\"aeca250fb793765f6d36d00ef05e9f931\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeca250fb793765f6d36d00ef05e9f931\">&#9670;&nbsp;</a></span>Crouch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Crouch </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ae13d3ca8940732bb64b80f0d0a789bfe\" name=\"ae13d3ca8940732bb64b80f0d0a789bfe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae13d3ca8940732bb64b80f0d0a789bfe\">&#9670;&nbsp;</a></span>Fly()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Fly </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a94439cce310fb5bc23485b3e23f19cfb\" name=\"a94439cce310fb5bc23485b3e23f19cfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94439cce310fb5bc23485b3e23f19cfb\">&#9670;&nbsp;</a></span>GetLookDirection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::ControllerComponent::GetLookDirection </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a827a701de4481f78563b75fce6ea55a2\" name=\"a827a701de4481f78563b75fce6ea55a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a827a701de4481f78563b75fce6ea55a2\">&#9670;&nbsp;</a></span>IsDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::ControllerComponent::IsDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad5ac49ff2ac8a5c96dbd8c341d445f76\" name=\"ad5ac49ff2ac8a5c96dbd8c341d445f76\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5ac49ff2ac8a5c96dbd8c341d445f76\">&#9670;&nbsp;</a></span>Jump()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Jump </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a72c9c834cd28d9c7cdbd16e48d6146f6\" name=\"a72c9c834cd28d9c7cdbd16e48d6146f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72c9c834cd28d9c7cdbd16e48d6146f6\">&#9670;&nbsp;</a></span>Move()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Move </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>local_direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a85d0688b2477652353b92a7662fdc36a\" name=\"a85d0688b2477652353b92a7662fdc36a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85d0688b2477652353b92a7662fdc36a\">&#9670;&nbsp;</a></span>Push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a09830a27a27ef8b419a9cf9e60446121\" name=\"a09830a27a27ef8b419a9cf9e60446121\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09830a27a27ef8b419a9cf9e60446121\">&#9670;&nbsp;</a></span>Run()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::Run </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a005c65e23bba7635c05821a5bebbdf47\" name=\"a005c65e23bba7635c05821a5bebbdf47\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a005c65e23bba7635c05821a5bebbdf47\">&#9670;&nbsp;</a></span>SetCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ControllerComponent::SetCollisions </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>collide</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af7b5cdc611a17b8a7261e14df61c56dd\" name=\"af7b5cdc611a17b8a7261e14df61c56dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7b5cdc611a17b8a7261e14df61c56dd\">&#9670;&nbsp;</a></span>SetDebugInfoDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ControllerComponent::SetDebugInfoDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92c6a99db84d365877eb1e6f45b406ce\" name=\"a92c6a99db84d365877eb1e6f45b406ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92c6a99db84d365877eb1e6f45b406ce\">&#9670;&nbsp;</a></span>SetLookDirection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ControllerComponent::SetLookDirection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad173b5388f4168d4de4acd13e4819089\" name=\"ad173b5388f4168d4de4acd13e4819089\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad173b5388f4168d4de4acd13e4819089\">&#9670;&nbsp;</a></span>TurnLeft()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::TurnLeft </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a1ebc25137ba38f067f7986e3a5f1d5db\" name=\"a1ebc25137ba38f067f7986e3a5f1d5db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ebc25137ba38f067f7986e3a5f1d5db\">&#9670;&nbsp;</a></span>TurnRight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::ControllerComponent::TurnRight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"adc0d17de6313da06268b3c14b18e8dcf\" name=\"adc0d17de6313da06268b3c14b18e8dcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc0d17de6313da06268b3c14b18e8dcf\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ControllerComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Updates the ControllerComponents. </p>\n<p >Updates all of the ControllerComponents. Should be called once per update cycle. Best place to do so would be before updating any cameras, otherwise they will lag behind the controller for the rest of the frame. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a93abb6fa1349a41b93f53450817f9839\" name=\"a93abb6fa1349a41b93f53450817f9839\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93abb6fa1349a41b93f53450817f9839\">&#9670;&nbsp;</a></span>collide</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::ControllerComponent::collide = true</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad160a058e6730f0040aa6a9338e15750\" name=\"ad160a058e6730f0040aa6a9338e15750\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad160a058e6730f0040aa6a9338e15750\">&#9670;&nbsp;</a></span>look_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::ControllerComponent::look_direction = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8h_source.html\">controller.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_crate-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_crate.html\">Crate</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Crate Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">Crate</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a1a395f9988ba5ae548823524ea33da06\">Crate</a>(const char *nname, const char *modelname, const char *collisionmodelname, vec3 pos, vec3 rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_crate.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Crate Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_crate.html\">Crate</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_crate-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Crate Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>3D Model with a rigidbody attached to it.  \n <a href=\"classtram_1_1_crate.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"crate_8h_source.html\">entities/crate.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Crate:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_crate.png\" usemap=\"#tram::Crate_map\" alt=\"\"/>\n  <map id=\"tram::Crate_map\" name=\"tram::Crate_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,73,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5b3a84d80ef6d5107b4eed8b6f4a07f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">Crate</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a5b3a84d80ef6d5107b4eed8b6f4a07f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a395f9988ba5ae548823524ea33da06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a1a395f9988ba5ae548823524ea33da06\">Crate</a> (const char *nname, const char *modelname, const char *collisionmodelname, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rot)</td></tr>\n<tr class=\"separator:a1a395f9988ba5ae548823524ea33da06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30a0ab1f7c54b15b1eb0a02a381790bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a30a0ab1f7c54b15b1eb0a02a381790bd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">More...</a><br /></td></tr>\n<tr class=\"separator:a30a0ab1f7c54b15b1eb0a02a381790bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fd93587f542e04c90e066df25468540\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a2fd93587f542e04c90e066df25468540\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">More...</a><br /></td></tr>\n<tr class=\"separator:a2fd93587f542e04c90e066df25468540\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69259e33129f5d795e4fc449cc50a430\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a69259e33129f5d795e4fc449cc50a430\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">More...</a><br /></td></tr>\n<tr class=\"separator:a69259e33129f5d795e4fc449cc50a430\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8336e58a8dcb7e3631db13003011232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ab8336e58a8dcb7e3631db13003011232\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">More...</a><br /></td></tr>\n<tr class=\"separator:ab8336e58a8dcb7e3631db13003011232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e88d32ca11233d9f779f6182e808934\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a5e88d32ca11233d9f779f6182e808934\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7343196750b22c09851f50d779faa86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:af7343196750b22c09851f50d779faa86\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">More...</a><br /></td></tr>\n<tr class=\"separator:af7343196750b22c09851f50d779faa86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a378f96494bd77812a24ca507be4ac434\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:a378f96494bd77812a24ca507be4ac434\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">More...</a><br /></td></tr>\n<tr class=\"separator:a378f96494bd77812a24ca507be4ac434\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aff35e03d11ebc3c23ab1c10f80aeb109\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">Register</a> ()</td></tr>\n<tr class=\"separator:aff35e03d11ebc3c23ab1c10f80aeb109\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aab88e1a8a682dcc308d4c9119abd711c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">rendercomponent</a></td></tr>\n<tr class=\"separator:aab88e1a8a682dcc308d4c9119abd711c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81bf1b61c023f0923ded303fabf343f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">physicscomponent</a></td></tr>\n<tr class=\"separator:a81bf1b61c023f0923ded303fabf343f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5795bc6e73fbf1f6f40968ed4d53d96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">model</a></td></tr>\n<tr class=\"separator:af5795bc6e73fbf1f6f40968ed4d53d96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a739363f4998b4e6367a8dbc620156a34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">collmodel</a></td></tr>\n<tr class=\"separator:a739363f4998b4e6367a8dbc620156a34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >3D Model with a rigidbody attached to it. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/crate.html\">https://racenis.github.io/tram-sdk/documentation/entities/crate.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5b3a84d80ef6d5107b4eed8b6f4a07f1\" name=\"a5b3a84d80ef6d5107b4eed8b6f4a07f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">&#9670;&nbsp;</a></span>Crate() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Crate::Crate </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1a395f9988ba5ae548823524ea33da06\" name=\"a1a395f9988ba5ae548823524ea33da06\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a395f9988ba5ae548823524ea33da06\">&#9670;&nbsp;</a></span>Crate() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Crate::Crate </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>nname</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>modelname</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>collisionmodelname</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>rot</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a378f96494bd77812a24ca507be4ac434\" name=\"a378f96494bd77812a24ca507be4ac434\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a378f96494bd77812a24ca507be4ac434\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Crate::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a69259e33129f5d795e4fc449cc50a430\" name=\"a69259e33129f5d795e4fc449cc50a430\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69259e33129f5d795e4fc449cc50a430\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af7343196750b22c09851f50d779faa86\" name=\"af7343196750b22c09851f50d779faa86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7343196750b22c09851f50d779faa86\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aff35e03d11ebc3c23ab1c10f80aeb109\" name=\"aff35e03d11ebc3c23ab1c10f80aeb109\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff35e03d11ebc3c23ab1c10f80aeb109\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e88d32ca11233d9f779f6182e808934\" name=\"a5e88d32ca11233d9f779f6182e808934\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e88d32ca11233d9f779f6182e808934\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2fd93587f542e04c90e066df25468540\" name=\"a2fd93587f542e04c90e066df25468540\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fd93587f542e04c90e066df25468540\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab8336e58a8dcb7e3631db13003011232\" name=\"ab8336e58a8dcb7e3631db13003011232\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8336e58a8dcb7e3631db13003011232\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a30a0ab1f7c54b15b1eb0a02a381790bd\" name=\"a30a0ab1f7c54b15b1eb0a02a381790bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30a0ab1f7c54b15b1eb0a02a381790bd\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Crate::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a739363f4998b4e6367a8dbc620156a34\" name=\"a739363f4998b4e6367a8dbc620156a34\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a739363f4998b4e6367a8dbc620156a34\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Crate::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5795bc6e73fbf1f6f40968ed4d53d96\" name=\"af5795bc6e73fbf1f6f40968ed4d53d96\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5795bc6e73fbf1f6f40968ed4d53d96\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Crate::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81bf1b61c023f0923ded303fabf343f2\" name=\"a81bf1b61c023f0923ded303fabf343f2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81bf1b61c023f0923ded303fabf343f2\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Crate::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aab88e1a8a682dcc308d4c9119abd711c\" name=\"aab88e1a8a682dcc308d4c9119abd711c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab88e1a8a682dcc308d4c9119abd711c\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Crate::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"crate_8h_source.html\">crate.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"crate_8cpp.html\">crate.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_decal_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::DecalComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">DecalComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">draw_list_entry</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">GetSprite</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">SetFrame</a>(uint32_t frame)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">SetRotation</a>(quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">SetScale</a>(float scale)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">SetSprite</a>(Render::Sprite *sprite)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">UpdateRenderListObject</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">~DecalComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_decal_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::DecalComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_decal_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::DecalComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Projects decals onto the scene.  \n <a href=\"classtram_1_1_decal_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"decal_8h_source.html\">components/decal.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::DecalComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_decal_component.png\" usemap=\"#tram::DecalComponent_map\" alt=\"\"/>\n  <map id=\"tram::DecalComponent_map\" name=\"tram::DecalComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,138,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a86fa64e28b7c9c0784be77892022a96d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">DecalComponent</a> ()</td></tr>\n<tr class=\"separator:a86fa64e28b7c9c0784be77892022a96d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae71a412c19ba4fbc92fbb17507992267\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">~DecalComponent</a> ()</td></tr>\n<tr class=\"separator:ae71a412c19ba4fbc92fbb17507992267\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc221ff999d6777f7d0bf15a63e8b11b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">GetSprite</a> ()</td></tr>\n<tr class=\"separator:afc221ff999d6777f7d0bf15a63e8b11b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1a667b7f5e747d2216eeab28bf99de9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">SetSprite</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *<a class=\"el\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>)</td></tr>\n<tr class=\"separator:aa1a667b7f5e747d2216eeab28bf99de9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec504c10a2756f3d0c7746d706483be9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">Start</a> ()</td></tr>\n<tr class=\"separator:aec504c10a2756f3d0c7746d706483be9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c93631ef6012a9b3e77b973debda630\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">Update</a> ()</td></tr>\n<tr class=\"separator:a0c93631ef6012a9b3e77b973debda630\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59130c628a9585b0c39b12b96b915994\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">UpdateRenderListObject</a> ()</td></tr>\n<tr class=\"separator:a59130c628a9585b0c39b12b96b915994\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f75089eb63e3ad93137cad8a208a85c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">SetScale</a> (float <a class=\"el\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a>)</td></tr>\n<tr class=\"separator:a0f75089eb63e3ad93137cad8a208a85c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3ff3ceaf63a48c77bbadd3788384ce6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">SetFrame</a> (uint32_t <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a>)</td></tr>\n<tr class=\"separator:af3ff3ceaf63a48c77bbadd3788384ce6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f2732d6481c3e25c7a5bca8c0f7e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a>)</td></tr>\n<tr class=\"separator:a1c1f2732d6481c3e25c7a5bca8c0f7e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab83fc898b9b0eebb2534149a51d0bbad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"el\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a>)</td></tr>\n<tr class=\"separator:ab83fc898b9b0eebb2534149a51d0bbad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a57cc185df060416fd0d3b69cd7422d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a8a57cc185df060416fd0d3b69cd7422d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a311a631005417b52f325462a23685f78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a></td></tr>\n<tr class=\"separator:a311a631005417b52f325462a23685f78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f8e987f85f6ff0720b415e87509510e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a2f8e987f85f6ff0720b415e87509510e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ecda8cd0fd000ba8d9af749319d198a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0ecda8cd0fd000ba8d9af749319d198a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe8edd2e09691f0f2f0a5b2f150f7cca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a> = 1.0f</td></tr>\n<tr class=\"separator:abe8edd2e09691f0f2f0a5b2f150f7cca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cde217b87b345af7bd38a674afeea13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a> = 0</td></tr>\n<tr class=\"separator:a8cde217b87b345af7bd38a674afeea13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e8165999c84aaa7af2d92e22b0e19cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">draw_list_entry</a> = {}</td></tr>\n<tr class=\"separator:a3e8165999c84aaa7af2d92e22b0e19cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc2da65e6a353c30908e5826b744b217\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">vertex_array</a> = {}</td></tr>\n<tr class=\"separator:abc2da65e6a353c30908e5826b744b217\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Projects decals onto the scene. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/decal.html\">https://racenis.github.io/tram-sdk/documentation/components/decal.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a86fa64e28b7c9c0784be77892022a96d\" name=\"a86fa64e28b7c9c0784be77892022a96d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86fa64e28b7c9c0784be77892022a96d\">&#9670;&nbsp;</a></span>DecalComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DecalComponent::DecalComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae71a412c19ba4fbc92fbb17507992267\" name=\"ae71a412c19ba4fbc92fbb17507992267\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae71a412c19ba4fbc92fbb17507992267\">&#9670;&nbsp;</a></span>~DecalComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DecalComponent::~DecalComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a8a57cc185df060416fd0d3b69cd7422d\" name=\"a8a57cc185df060416fd0d3b69cd7422d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a57cc185df060416fd0d3b69cd7422d\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"afc221ff999d6777f7d0bf15a63e8b11b\" name=\"afc221ff999d6777f7d0bf15a63e8b11b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc221ff999d6777f7d0bf15a63e8b11b\">&#9670;&nbsp;</a></span>GetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::DecalComponent::GetSprite </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af3ff3ceaf63a48c77bbadd3788384ce6\" name=\"af3ff3ceaf63a48c77bbadd3788384ce6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3ff3ceaf63a48c77bbadd3788384ce6\">&#9670;&nbsp;</a></span>SetFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::SetFrame </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>frame</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1c1f2732d6481c3e25c7a5bca8c0f7e6\" name=\"a1c1f2732d6481c3e25c7a5bca8c0f7e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab83fc898b9b0eebb2534149a51d0bbad\" name=\"ab83fc898b9b0eebb2534149a51d0bbad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab83fc898b9b0eebb2534149a51d0bbad\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f75089eb63e3ad93137cad8a208a85c\" name=\"a0f75089eb63e3ad93137cad8a208a85c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f75089eb63e3ad93137cad8a208a85c\">&#9670;&nbsp;</a></span>SetScale()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::SetScale </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>scale</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1a667b7f5e747d2216eeab28bf99de9\" name=\"aa1a667b7f5e747d2216eeab28bf99de9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1a667b7f5e747d2216eeab28bf99de9\">&#9670;&nbsp;</a></span>SetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::SetSprite </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *&#160;</td>\n          <td class=\"paramname\"><em>sprite</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec504c10a2756f3d0c7746d706483be9\" name=\"aec504c10a2756f3d0c7746d706483be9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec504c10a2756f3d0c7746d706483be9\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a0c93631ef6012a9b3e77b973debda630\" name=\"a0c93631ef6012a9b3e77b973debda630\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c93631ef6012a9b3e77b973debda630\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a59130c628a9585b0c39b12b96b915994\" name=\"a59130c628a9585b0c39b12b96b915994\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59130c628a9585b0c39b12b96b915994\">&#9670;&nbsp;</a></span>UpdateRenderListObject()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DecalComponent::UpdateRenderListObject </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a3e8165999c84aaa7af2d92e22b0e19cf\" name=\"a3e8165999c84aaa7af2d92e22b0e19cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e8165999c84aaa7af2d92e22b0e19cf\">&#9670;&nbsp;</a></span>draw_list_entry</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> tram::DecalComponent::draw_list_entry = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cde217b87b345af7bd38a674afeea13\" name=\"a8cde217b87b345af7bd38a674afeea13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cde217b87b345af7bd38a674afeea13\">&#9670;&nbsp;</a></span>frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::DecalComponent::frame = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2f8e987f85f6ff0720b415e87509510e\" name=\"a2f8e987f85f6ff0720b415e87509510e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f8e987f85f6ff0720b415e87509510e\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::DecalComponent::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ecda8cd0fd000ba8d9af749319d198a\" name=\"a0ecda8cd0fd000ba8d9af749319d198a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ecda8cd0fd000ba8d9af749319d198a\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::DecalComponent::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe8edd2e09691f0f2f0a5b2f150f7cca\" name=\"abe8edd2e09691f0f2f0a5b2f150f7cca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe8edd2e09691f0f2f0a5b2f150f7cca\">&#9670;&nbsp;</a></span>scale</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::DecalComponent::scale = 1.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a311a631005417b52f325462a23685f78\" name=\"a311a631005417b52f325462a23685f78\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a311a631005417b52f325462a23685f78\">&#9670;&nbsp;</a></span>sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>&gt; tram::DecalComponent::sprite</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abc2da65e6a353c30908e5826b744b217\" name=\"abc2da65e6a353c30908e5826b744b217\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc2da65e6a353c30908e5826b744b217\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> tram::DecalComponent::vertex_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"decal_8h_source.html\">decal.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"decal_8cpp.html\">decal.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_decoration-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">Decoration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Decoration Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">animation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">animationcomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">Decoration</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">decoration_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">RequestAnimationComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_decoration.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Decoration Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">Decoration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_decoration-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Decoration Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it.  \n <a href=\"classtram_1_1_decoration.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"decoration_8h_source.html\">entities/decoration.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Decoration:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_decoration.png\" usemap=\"#tram::Decoration_map\" alt=\"\"/>\n  <map id=\"tram::Decoration_map\" name=\"tram::Decoration_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,104,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a80442c970e96a9d3ec14046048833d87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">Decoration</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a80442c970e96a9d3ec14046048833d87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3ea5d13e17e6b50f233a9104892ba1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:af3ea5d13e17e6b50f233a9104892ba1c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">More...</a><br /></td></tr>\n<tr class=\"separator:af3ea5d13e17e6b50f233a9104892ba1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6bd26ad8c997a12796c4523dd0f3f8e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a6bd26ad8c997a12796c4523dd0f3f8e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">More...</a><br /></td></tr>\n<tr class=\"separator:a6bd26ad8c997a12796c4523dd0f3f8e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18546c61e3519a3a6ab882e7deb160fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a18546c61e3519a3a6ab882e7deb160fb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">More...</a><br /></td></tr>\n<tr class=\"separator:a18546c61e3519a3a6ab882e7deb160fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8917fa59a923deca11f37f96825f9b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ad8917fa59a923deca11f37f96825f9b5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">More...</a><br /></td></tr>\n<tr class=\"separator:ad8917fa59a923deca11f37f96825f9b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3be7afb5d539dfef12b41d9132b051ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a3be7afb5d539dfef12b41d9132b051ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d89648397f17f989b157f3981f4d41f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a9d89648397f17f989b157f3981f4d41f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">More...</a><br /></td></tr>\n<tr class=\"separator:a9d89648397f17f989b157f3981f4d41f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e637e1beaf0cfc3a933d7a72304122b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:a7e637e1beaf0cfc3a933d7a72304122b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">More...</a><br /></td></tr>\n<tr class=\"separator:a7e637e1beaf0cfc3a933d7a72304122b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1b74c5467bdfdcf8749f0b3c172832ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">Register</a> ()</td></tr>\n<tr class=\"separator:a1b74c5467bdfdcf8749f0b3c172832ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aa0c8b3925860c63caa0c525c9160195d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">RequestAnimationComponent</a> ()</td></tr>\n<tr class=\"separator:aa0c8b3925860c63caa0c525c9160195d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ade298a17a196fd33a11d421657e5a423\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">rendercomponent</a></td></tr>\n<tr class=\"separator:ade298a17a196fd33a11d421657e5a423\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24081b56bcc532c09441c1f4a71d0e12\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">animationcomponent</a></td></tr>\n<tr class=\"separator:a24081b56bcc532c09441c1f4a71d0e12\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a583857b0ebd4e260c7ef634ff93d7bdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">physicscomponent</a></td></tr>\n<tr class=\"separator:a583857b0ebd4e260c7ef634ff93d7bdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6212cdb928b6d3f28cdd0ed5d7b6053\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">model</a></td></tr>\n<tr class=\"separator:ab6212cdb928b6d3f28cdd0ed5d7b6053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ed3fb5e8c71f3491fe57c843e0325e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">animation</a></td></tr>\n<tr class=\"separator:a9ed3fb5e8c71f3491fe57c843e0325e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d99378203e46938e612013702b092d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">decoration_flags</a></td></tr>\n<tr class=\"separator:a1d99378203e46938e612013702b092d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/decoration.html\">https://racenis.github.io/tram-sdk/documentation/entities/decoration.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a80442c970e96a9d3ec14046048833d87\" name=\"a80442c970e96a9d3ec14046048833d87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80442c970e96a9d3ec14046048833d87\">&#9670;&nbsp;</a></span>Decoration()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Decoration::Decoration </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a7e637e1beaf0cfc3a933d7a72304122b\" name=\"a7e637e1beaf0cfc3a933d7a72304122b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e637e1beaf0cfc3a933d7a72304122b\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Decoration::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a18546c61e3519a3a6ab882e7deb160fb\" name=\"a18546c61e3519a3a6ab882e7deb160fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18546c61e3519a3a6ab882e7deb160fb\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a9d89648397f17f989b157f3981f4d41f\" name=\"a9d89648397f17f989b157f3981f4d41f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d89648397f17f989b157f3981f4d41f\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1b74c5467bdfdcf8749f0b3c172832ad\" name=\"a1b74c5467bdfdcf8749f0b3c172832ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b74c5467bdfdcf8749f0b3c172832ad\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0c8b3925860c63caa0c525c9160195d\" name=\"aa0c8b3925860c63caa0c525c9160195d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0c8b3925860c63caa0c525c9160195d\">&#9670;&nbsp;</a></span>RequestAnimationComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::RequestAnimationComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3be7afb5d539dfef12b41d9132b051ae\" name=\"a3be7afb5d539dfef12b41d9132b051ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3be7afb5d539dfef12b41d9132b051ae\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6bd26ad8c997a12796c4523dd0f3f8e6\" name=\"a6bd26ad8c997a12796c4523dd0f3f8e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bd26ad8c997a12796c4523dd0f3f8e6\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad8917fa59a923deca11f37f96825f9b5\" name=\"ad8917fa59a923deca11f37f96825f9b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8917fa59a923deca11f37f96825f9b5\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af3ea5d13e17e6b50f233a9104892ba1c\" name=\"af3ea5d13e17e6b50f233a9104892ba1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3ea5d13e17e6b50f233a9104892ba1c\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Decoration::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9ed3fb5e8c71f3491fe57c843e0325e1\" name=\"a9ed3fb5e8c71f3491fe57c843e0325e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ed3fb5e8c71f3491fe57c843e0325e1\">&#9670;&nbsp;</a></span>animation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Decoration::animation</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24081b56bcc532c09441c1f4a71d0e12\" name=\"a24081b56bcc532c09441c1f4a71d0e12\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24081b56bcc532c09441c1f4a71d0e12\">&#9670;&nbsp;</a></span>animationcomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>&gt; tram::Decoration::animationcomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d99378203e46938e612013702b092d6\" name=\"a1d99378203e46938e612013702b092d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d99378203e46938e612013702b092d6\">&#9670;&nbsp;</a></span>decoration_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Decoration::decoration_flags</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab6212cdb928b6d3f28cdd0ed5d7b6053\" name=\"ab6212cdb928b6d3f28cdd0ed5d7b6053\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6212cdb928b6d3f28cdd0ed5d7b6053\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Decoration::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a583857b0ebd4e260c7ef634ff93d7bdf\" name=\"a583857b0ebd4e260c7ef634ff93d7bdf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a583857b0ebd4e260c7ef634ff93d7bdf\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Decoration::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ade298a17a196fd33a11d421657e5a423\" name=\"ade298a17a196fd33a11d421657e5a423\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade298a17a196fd33a11d421657e5a423\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Decoration::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"decoration_8h_source.html\">decoration.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"decoration_8cpp.html\">decoration.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_decpration.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Decpration Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Decpration Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it.  \n <a href=\"classtram_1_1_decpration.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/decoration.html\">https://racenis.github.io/tram-sdk/documentation/entities/decoration.html</a> </dd></dl>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"decoration_8cpp.html\">decoration.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_disk_reader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">DiskReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::DiskReader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30\">DiskReader</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c\">GetContents</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">GetReader</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">GetSearchList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">GetSize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264\">GetStatus</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">SetSearchList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228\">~DiskReader</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">~FileReader</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_disk_reader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::DiskReader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">DiskReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_disk_reader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::DiskReader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::DiskReader:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_disk_reader.png\" usemap=\"#tram::DiskReader_map\" alt=\"\"/>\n  <map id=\"tram::DiskReader_map\" name=\"tram::DiskReader_map\">\n<area href=\"classtram_1_1_file_reader.html\" alt=\"tram::FileReader\" shape=\"rect\" coords=\"0,0,107,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a565638ef66be9c7cd05200056762cc30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30\">DiskReader</a> (const char *path)</td></tr>\n<tr class=\"separator:a565638ef66be9c7cd05200056762cc30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9cd54f4c0b32c92fc8dc33238adb228\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228\">~DiskReader</a> ()</td></tr>\n<tr class=\"separator:ae9cd54f4c0b32c92fc8dc33238adb228\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57f73b425546a6fde55c2d863d8f095c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c\">GetContents</a> ()</td></tr>\n<tr class=\"separator:a57f73b425546a6fde55c2d863d8f095c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2b0b2e4625d5d1a6e4d914b561fc4e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">GetSize</a> ()</td></tr>\n<tr class=\"separator:ad2b0b2e4625d5d1a6e4d914b561fc4e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81a139b80db9fbced34f8bb2f4a753cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf\">Yeet</a> ()</td></tr>\n<tr class=\"separator:a81a139b80db9fbced34f8bb2f4a753cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc56907851741e91da516352020ca264\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264\">GetStatus</a> ()</td></tr>\n<tr class=\"separator:afc56907851741e91da516352020ca264\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_file_reader\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_file_reader')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td></tr>\n<tr class=\"memitem:ac1c9f2016c1c475ed82418fb2a2dca8f inherit pub_methods_classtram_1_1_file_reader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">~FileReader</a> ()=default</td></tr>\n<tr class=\"separator:ac1c9f2016c1c475ed82418fb2a2dca8f inherit pub_methods_classtram_1_1_file_reader\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_file_reader\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_file_reader')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td></tr>\n<tr class=\"memitem:adeafb2e1ec0d9d2c9e2ea25b0d705f14 inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">GetReader</a> (const char *path)</td></tr>\n<tr class=\"separator:adeafb2e1ec0d9d2c9e2ea25b0d705f14 inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a7d782b12279f564439c0438365c91a inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">SetSearchList</a> ()</td></tr>\n<tr class=\"separator:a8a7d782b12279f564439c0438365c91a inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13fadbba64b0b75fc9c52bf64fbfe116 inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">GetSearchList</a> ()</td></tr>\n<tr class=\"separator:a13fadbba64b0b75fc9c52bf64fbfe116 inherit pub_static_methods_classtram_1_1_file_reader\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a565638ef66be9c7cd05200056762cc30\" name=\"a565638ef66be9c7cd05200056762cc30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a565638ef66be9c7cd05200056762cc30\">&#9670;&nbsp;</a></span>DiskReader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DiskReader::DiskReader </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9cd54f4c0b32c92fc8dc33238adb228\" name=\"ae9cd54f4c0b32c92fc8dc33238adb228\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9cd54f4c0b32c92fc8dc33238adb228\">&#9670;&nbsp;</a></span>~DiskReader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DiskReader::~DiskReader </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a57f73b425546a6fde55c2d863d8f095c\" name=\"a57f73b425546a6fde55c2d863d8f095c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57f73b425546a6fde55c2d863d8f095c\">&#9670;&nbsp;</a></span>GetContents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::DiskReader::GetContents </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">tram::FileReader</a>.</p>\n\n</div>\n</div>\n<a id=\"ad2b0b2e4625d5d1a6e4d914b561fc4e7\" name=\"ad2b0b2e4625d5d1a6e4d914b561fc4e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">&#9670;&nbsp;</a></span>GetSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::DiskReader::GetSize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">tram::FileReader</a>.</p>\n\n</div>\n</div>\n<a id=\"afc56907851741e91da516352020ca264\" name=\"afc56907851741e91da516352020ca264\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc56907851741e91da516352020ca264\">&#9670;&nbsp;</a></span>GetStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> tram::DiskReader::GetStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">tram::FileReader</a>.</p>\n\n</div>\n</div>\n<a id=\"a81a139b80db9fbced34f8bb2f4a753cf\" name=\"a81a139b80db9fbced34f8bb2f4a753cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81a139b80db9fbced34f8bb2f4a753cf\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DiskReader::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">tram::FileReader</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_disk_writer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">DiskWriter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::DiskWriter Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25\">DiskWriter</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">GetMediumList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a\">GetStatus</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">GetWriter</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c\">SetContents</a>(const char *contents, size_t size)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">SetMediumList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587\">~DiskWriter</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">~FileWriter</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_disk_writer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::DiskWriter Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">DiskWriter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_disk_writer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::DiskWriter Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::DiskWriter:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_disk_writer.png\" usemap=\"#tram::DiskWriter_map\" alt=\"\"/>\n  <map id=\"tram::DiskWriter_map\" name=\"tram::DiskWriter_map\">\n<area href=\"classtram_1_1_file_writer.html\" alt=\"tram::FileWriter\" shape=\"rect\" coords=\"0,0,100,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad12321c26492fcaef43740bf21120d25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25\">DiskWriter</a> (const char *path)</td></tr>\n<tr class=\"separator:ad12321c26492fcaef43740bf21120d25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a798d3cd845e210a17c372c1485b7e587\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587\">~DiskWriter</a> ()</td></tr>\n<tr class=\"separator:a798d3cd845e210a17c372c1485b7e587\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6430c8e4e068ca19c9b31f1d0899b34c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c\">SetContents</a> (const char *contents, size_t size)</td></tr>\n<tr class=\"separator:a6430c8e4e068ca19c9b31f1d0899b34c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a564c3fea7e402a81699e563310b58acb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb\">Yeet</a> ()</td></tr>\n<tr class=\"separator:a564c3fea7e402a81699e563310b58acb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b530f156118353d4ba12d332d4e832a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a\">GetStatus</a> ()</td></tr>\n<tr class=\"separator:a8b530f156118353d4ba12d332d4e832a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_file_writer\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_file_writer')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td></tr>\n<tr class=\"memitem:ab9657acc04bba611bd8f061dcd207f1c inherit pub_methods_classtram_1_1_file_writer\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">~FileWriter</a> ()=default</td></tr>\n<tr class=\"separator:ab9657acc04bba611bd8f061dcd207f1c inherit pub_methods_classtram_1_1_file_writer\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_file_writer\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_file_writer')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td></tr>\n<tr class=\"memitem:acdf5bcd53cc32c0c7f268d73a9fca3cc inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">GetWriter</a> (const char *path)</td></tr>\n<tr class=\"separator:acdf5bcd53cc32c0c7f268d73a9fca3cc inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c50a8afb948a19a9bc89d6353046aab inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">SetMediumList</a> ()</td></tr>\n<tr class=\"separator:a9c50a8afb948a19a9bc89d6353046aab inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf99237a3774981e16c871ec68b1473 inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">GetMediumList</a> ()</td></tr>\n<tr class=\"separator:abcf99237a3774981e16c871ec68b1473 inherit pub_static_methods_classtram_1_1_file_writer\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad12321c26492fcaef43740bf21120d25\" name=\"ad12321c26492fcaef43740bf21120d25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad12321c26492fcaef43740bf21120d25\">&#9670;&nbsp;</a></span>DiskWriter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DiskWriter::DiskWriter </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a798d3cd845e210a17c372c1485b7e587\" name=\"a798d3cd845e210a17c372c1485b7e587\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a798d3cd845e210a17c372c1485b7e587\">&#9670;&nbsp;</a></span>~DiskWriter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::DiskWriter::~DiskWriter </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a8b530f156118353d4ba12d332d4e832a\" name=\"a8b530f156118353d4ba12d332d4e832a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b530f156118353d4ba12d332d4e832a\">&#9670;&nbsp;</a></span>GetStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> tram::DiskWriter::GetStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">tram::FileWriter</a>.</p>\n\n</div>\n</div>\n<a id=\"a6430c8e4e068ca19c9b31f1d0899b34c\" name=\"a6430c8e4e068ca19c9b31f1d0899b34c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6430c8e4e068ca19c9b31f1d0899b34c\">&#9670;&nbsp;</a></span>SetContents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DiskWriter::SetContents </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>contents</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">tram::FileWriter</a>.</p>\n\n</div>\n</div>\n<a id=\"a564c3fea7e402a81699e563310b58acb\" name=\"a564c3fea7e402a81699e563310b58acb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a564c3fea7e402a81699e563310b58acb\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DiskWriter::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">tram::FileWriter</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_entity-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Entity Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">Load</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">MessageHandler</a>(Message &amp;msg)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">Serialize</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">SetParameters</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">Unload</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">UpdateParameters</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54\">WorldCell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_entity.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Entity Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-types\">Protected Types</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_entity-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Entity Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class.  \n <a href=\"classtram_1_1_entity.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Entity:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_entity.png\" usemap=\"#tram::Entity_map\" alt=\"\"/>\n  <map id=\"tram::Entity_map\" name=\"tram::Entity_map\">\n<area href=\"classtram_1_1_crate.html\" title=\"3D Model with a rigidbody attached to it.\" alt=\"tram::Crate\" shape=\"rect\" coords=\"281,56,552,80\"/>\n<area href=\"classtram_1_1_decoration.html\" title=\"3D Model with an AnimationComponent attached to it.\" alt=\"tram::Decoration\" shape=\"rect\" coords=\"281,112,552,136\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\" alt=\"tram::Ext::Kitchensink::Breakable\" shape=\"rect\" coords=\"281,168,552,192\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\" title=\"Essentially a func_door.\" alt=\"tram::Ext::Kitchensink::Button\" shape=\"rect\" coords=\"281,224,552,248\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\" alt=\"tram::Ext::Kitchensink::DebugShape\" shape=\"rect\" coords=\"281,280,552,304\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\" alt=\"tram::Ext::Kitchensink::DebugText\" shape=\"rect\" coords=\"281,336,552,360\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\" alt=\"tram::Ext::Kitchensink::Pickup\" shape=\"rect\" coords=\"281,392,552,416\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\" alt=\"tram::Ext::Kitchensink::QuestEntity\" shape=\"rect\" coords=\"281,448,552,472\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\" alt=\"tram::Ext::Kitchensink::Train\" shape=\"rect\" coords=\"281,504,552,528\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\" alt=\"tram::Ext::Kitchensink::TriggerAutosave\" shape=\"rect\" coords=\"281,560,552,584\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\" alt=\"tram::Ext::Kitchensink::TriggerHurt\" shape=\"rect\" coords=\"281,616,552,640\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\" alt=\"tram::Ext::Kitchensink::TriggerMultiple\" shape=\"rect\" coords=\"281,672,552,696\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\" alt=\"tram::Ext::Kitchensink::TriggerOnce\" shape=\"rect\" coords=\"281,728,552,752\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\" alt=\"tram::Ext::Kitchensink::TriggerPlayerMovement\" shape=\"rect\" coords=\"281,784,552,808\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\" alt=\"tram::Ext::Kitchensink::TriggerPush\" shape=\"rect\" coords=\"281,840,552,864\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\" alt=\"tram::Ext::Kitchensink::TriggerRemove\" shape=\"rect\" coords=\"281,896,552,920\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\" alt=\"tram::Ext::Kitchensink::TriggerTeleport\" shape=\"rect\" coords=\"281,952,552,976\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\" alt=\"tram::Ext::Kitchensink::Water\" shape=\"rect\" coords=\"281,1008,552,1032\"/>\n<area href=\"classtram_1_1_light.html\" title=\"LightComponent wrapper.\" alt=\"tram::Light\" shape=\"rect\" coords=\"281,1064,552,1088\"/>\n<area href=\"classtram_1_1_marker.html\" title=\"Functionally inert.\" alt=\"tram::Marker\" shape=\"rect\" coords=\"281,1120,552,1144\"/>\n<area href=\"classtram_1_1_player.html\" title=\"ControllerComponent with a PlayerComponent attached to it.\" alt=\"tram::Player\" shape=\"rect\" coords=\"281,1176,552,1200\"/>\n<area href=\"classtram_1_1_sound.html\" title=\"AudioComponent wrapper.\" alt=\"tram::Sound\" shape=\"rect\" coords=\"281,1232,552,1256\"/>\n<area href=\"classtram_1_1_static_world_object.html\" title=\"Worldspawn.\" alt=\"tram::StaticWorldObject\" shape=\"rect\" coords=\"281,1288,552,1312\"/>\n<area href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\" alt=\"tram::Trigger\" shape=\"rect\" coords=\"281,1344,552,1368\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a42f5dbd06dc0014191ac78e6c2900386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">Load</a> ()=0</td></tr>\n<tr class=\"memdesc:a42f5dbd06dc0014191ac78e6c2900386\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">More...</a><br /></td></tr>\n<tr class=\"separator:a42f5dbd06dc0014191ac78e6c2900386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b9df5ef54954cdcd7b0f3af7aa7f829\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">Unload</a> ()=0</td></tr>\n<tr class=\"memdesc:a2b9df5ef54954cdcd7b0f3af7aa7f829\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">More...</a><br /></td></tr>\n<tr class=\"separator:a2b9df5ef54954cdcd7b0f3af7aa7f829\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a022989dd6fae21cdb65af24f26648488\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">Serialize</a> ()=0</td></tr>\n<tr class=\"separator:a022989dd6fae21cdb65af24f26648488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8654143c591ec6d8dcb5d2414d4d63a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">UpdateParameters</a> ()=0</td></tr>\n<tr class=\"memdesc:a8654143c591ec6d8dcb5d2414d4d63a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">More...</a><br /></td></tr>\n<tr class=\"separator:a8654143c591ec6d8dcb5d2414d4d63a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9e3adac30cac41573d2bdda676a0832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">SetParameters</a> ()=0</td></tr>\n<tr class=\"memdesc:ac9e3adac30cac41573d2bdda676a0832\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">More...</a><br /></td></tr>\n<tr class=\"separator:ac9e3adac30cac41573d2bdda676a0832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad81126191ef55c6ff2b3b112ce6c9cdb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)=0</td></tr>\n<tr class=\"memdesc:ad81126191ef55c6ff2b3b112ce6c9cdb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">More...</a><br /></td></tr>\n<tr class=\"separator:ad81126191ef55c6ff2b3b112ce6c9cdb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-types\" name=\"pro-types\"></a>\nProtected Types</h2></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a84136aa23993ba45f0745a9d9488ab54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54\">WorldCell</a></td></tr>\n<tr class=\"separator:a84136aa23993ba45f0745a9d9488ab54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class. </p>\n<p >Provides API for entities and some basic functionality.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/entity.html\">https://racenis.github.io/tram-sdk/documentation/framework/entity.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a9c07ba341c9b5a9d969a5ba58ccb7d8f\" name=\"a9c07ba341c9b5a9d969a5ba58ccb7d8f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c07ba341c9b5a9d969a5ba58ccb7d8f\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\" name=\"a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\"></a>FIELD_SERIALIZE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aaed86a9cc626eeab1796509f702ff378\" name=\"aaed86a9cc626eeab1796509f702ff378\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaed86a9cc626eeab1796509f702ff378\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : uint32_t</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\" name=\"aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\"></a>NON_PERSISTENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\" name=\"aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\"></a>LOADED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\" name=\"aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\"></a>DISABLE_AUTO_LOAD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\" name=\"aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\"></a>NON_SERIALIZABLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\" name=\"aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\"></a>DIRTY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\" name=\"aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\"></a>DELETED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\" name=\"aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\"></a>LOADED_FROM_DISK&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5cd683c73f9413ca09d5417c550eaf3d\" name=\"a5cd683c73f9413ca09d5417c550eaf3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cd683c73f9413ca09d5417c550eaf3d\">&#9670;&nbsp;</a></span>Entity() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Entity::Entity </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates an unnamed entity with a random ID. </p>\n\n</div>\n</div>\n<a id=\"ab2c160e37d196c3a8f7224adbe282f8e\" name=\"ab2c160e37d196c3a8f7224adbe282f8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2c160e37d196c3a8f7224adbe282f8e\">&#9670;&nbsp;</a></span>Entity() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Entity::Entity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates a named entity with a random ID. </p>\n\n</div>\n</div>\n<a id=\"aae1750f202fa57bb040126c1d8af0b80\" name=\"aae1750f202fa57bb040126c1d8af0b80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae1750f202fa57bb040126c1d8af0b80\">&#9670;&nbsp;</a></span>Entity() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Entity::Entity </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>. </p>\n\n</div>\n</div>\n<a id=\"a79fd0e828bd002ca6d4505dbc63739e2\" name=\"a79fd0e828bd002ca6d4505dbc63739e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79fd0e828bd002ca6d4505dbc63739e2\">&#9670;&nbsp;</a></span>~Entity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Entity::~Entity </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Destructs the entity. </p>\n<p >This automatically also removes the entity from its parent cell, and also unregisters it. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0fa0c3702c54eb536cd07eaf49dc799a\" name=\"a0fa0c3702c54eb536cd07eaf49dc799a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fa0c3702c54eb536cd07eaf49dc799a\">&#9670;&nbsp;</a></span>CheckTransition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::CheckTransition </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Check whether an entity has entered a different cell. </p>\n\n</div>\n</div>\n<a id=\"a2ca775133055e997ef91ac3db27f2a0a\" name=\"a2ca775133055e997ef91ac3db27f2a0a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ca775133055e997ef91ac3db27f2a0a\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive events. </p>\n<p >Whenever an entity registers an event, an event of the same type as the event listener is posted and <a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\" title=\"Dispatches events from the event queue.\">Event::Dispatch()</a> has been called, the entity will receive the event through this method. </p>\n\n<p>Reimplemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">tram::Ext::Kitchensink::Button</a>.</p>\n\n</div>\n</div>\n<a id=\"afba6aa3dbbd10ebc42beb6729bdb7da2\" name=\"afba6aa3dbbd10ebc42beb6729bdb7da2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afba6aa3dbbd10ebc42beb6729bdb7da2\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::Entity::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entityID</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds the entity by its ID number. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>If an entity with the given ID number has been found, a pointer to it will be returned. Otherwise a <code>nullptr</code> will be returned. </dd></dl>\n\n</div>\n</div>\n<a id=\"aa949dd2fafeb955d699271dbe41c75ec\" name=\"aa949dd2fafeb955d699271dbe41c75ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa949dd2fafeb955d699271dbe41c75ec\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::Entity::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entityName</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds the entity by its name. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>If an entity with the given name has been found, a pointer to it will be returned. Otherwise a <code>nullptr</code> will be returned. </dd></dl>\n\n</div>\n</div>\n<a id=\"aa83f617be04b68ab23d2f42a248b9e7d\" name=\"aa83f617be04b68ab23d2f42a248b9e7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa83f617be04b68ab23d2f42a248b9e7d\">&#9670;&nbsp;</a></span>FireSignal() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::FireSignal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afbad8d97ef0905782c6aa0ef8ca7cf88\" name=\"afbad8d97ef0905782c6aa0ef8ca7cf88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afbad8d97ef0905782c6aa0ef8ca7cf88\">&#9670;&nbsp;</a></span>FireSignal() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::FireSignal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9fe6fef78260ef5d7a3dc425e26ca375\" name=\"a9fe6fef78260ef5d7a3dc425e26ca375\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fe6fef78260ef5d7a3dc425e26ca375\">&#9670;&nbsp;</a></span>GetCell()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Entity::GetCell </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the entity's parent cell. </p>\n<p >If an entity is inside a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a>, this method will return a pointer to it, otherwise it will return a <code>nullptr</code>. </p>\n\n</div>\n</div>\n<a id=\"a5ec303fd15c52e42d390eabeece5365f\" name=\"a5ec303fd15c52e42d390eabeece5365f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ec303fd15c52e42d390eabeece5365f\">&#9670;&nbsp;</a></span>GetID()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Entity::GetID </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7bf177c08614dd697b23cd021c7fbfda\" name=\"a7bf177c08614dd697b23cd021c7fbfda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7bf177c08614dd697b23cd021c7fbfda\">&#9670;&nbsp;</a></span>GetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp; tram::Entity::GetLocation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe85e71ed0b3321908e0c86c58a71271\" name=\"afe85e71ed0b3321908e0c86c58a71271\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe85e71ed0b3321908e0c86c58a71271\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Entity::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adbb214d504101d5113d149fa0f06e162\" name=\"adbb214d504101d5113d149fa0f06e162\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbb214d504101d5113d149fa0f06e162\">&#9670;&nbsp;</a></span>GetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp; tram::Entity::GetRotation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8439e1ea14f61418caf8fccc00315bbb\" name=\"a8439e1ea14f61418caf8fccc00315bbb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8439e1ea14f61418caf8fccc00315bbb\">&#9670;&nbsp;</a></span>GetSignalTable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> * tram::Entity::GetSignalTable </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a552606c9eec8f007aaf42d251aaaa264\" name=\"a552606c9eec8f007aaf42d251aaaa264\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a552606c9eec8f007aaf42d251aaaa264\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">tram::Ext::Kitchensink::Button</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a147a88601da58a30ee3d39bbc2c2da12\" name=\"a147a88601da58a30ee3d39bbc2c2da12\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a147a88601da58a30ee3d39bbc2c2da12\">&#9670;&nbsp;</a></span>IsAutoLoad()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Entity::IsAutoLoad </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the auto load flag status. </p>\n<p >By default all entities are automatically loaded, i.e. when the <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> in which they reside is loaded. Sometimes you might want to override this, so the automatic loading disablement flag is provided. </p>\n\n</div>\n</div>\n<a id=\"ab439f567d570a3bbd0f80c5d2e025eb0\" name=\"ab439f567d570a3bbd0f80c5d2e025eb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab439f567d570a3bbd0f80c5d2e025eb0\">&#9670;&nbsp;</a></span>IsChanged()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Entity::IsChanged </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a409d0640de875ed0bdf2b8b71cfe75ee\" name=\"a409d0640de875ed0bdf2b8b71cfe75ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a409d0640de875ed0bdf2b8b71cfe75ee\">&#9670;&nbsp;</a></span>IsDeleted()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Entity::IsDeleted </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the entity deletion status. </p>\n<p >When an entity is yeeted, it is marked as deleted. They continue existing for some time until the <a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\" title=\"Updates entities.\">Entity::Update()</a> static method is called and they are destructed.</p>\n<p >Even then, entities that have been loaded from the disk will continue existing, so that their status as being deleted can be written back to disk.</p>\n<p >This also allows to ressurect them, if the need arises. </p>\n\n</div>\n</div>\n<a id=\"a305ae4e799b36c4111f5cd089748f422\" name=\"a305ae4e799b36c4111f5cd089748f422\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a305ae4e799b36c4111f5cd089748f422\">&#9670;&nbsp;</a></span>IsLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Entity::IsLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the entity load status. </p>\n\n</div>\n</div>\n<a id=\"ace4932f5988e14152753e4de7de86a4a\" name=\"ace4932f5988e14152753e4de7de86a4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace4932f5988e14152753e4de7de86a4a\">&#9670;&nbsp;</a></span>IsLoadedFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Entity::IsLoadedFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07ace4859c60707136639f33cd525c0a\" name=\"a07ace4859c60707136639f33cd525c0a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07ace4859c60707136639f33cd525c0a\">&#9670;&nbsp;</a></span>IsPersistent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Entity::IsPersistent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the persistence status of an entity. </p>\n<p >Entities that have been marked as non-persistent will be yeeted when their parent cell is unloaded, instead of the usual unloading.</p>\n<p >This is useful when creating small decoration entities, e.g. debris and giblets, which don't need to be saved. </p>\n\n</div>\n</div>\n<a id=\"a42f5dbd06dc0014191ac78e6c2900386\" name=\"a42f5dbd06dc0014191ac78e6c2900386\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42f5dbd06dc0014191ac78e6c2900386\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a357bb17d489c2f456994c1fa4150f333\" name=\"a357bb17d489c2f456994c1fa4150f333\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a357bb17d489c2f456994c1fa4150f333\">&#9670;&nbsp;</a></span>Make() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::Entity::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates an entity. </p>\n<p >Uses data provided in a <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> call to find the construction function of an entity type and then constructs it. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">type</td><td>Type of the entity, this should be the same name that was used when using <a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\" title=\"Registers the entity.\">Register()</a> to register an entity type. </td></tr>\n    <tr><td class=\"paramname\">shared_data</td><td>Shared data of the entity. </td></tr>\n    <tr><td class=\"paramname\">field_array</td><td>Values to be filled in the entity's fields. </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Pointer to an entity if successful, otherwise a <code>nullptr</code>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a5bde1559d6170dca943fa7f41dde7ea9\" name=\"a5bde1559d6170dca943fa7f41dde7ea9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bde1559d6170dca943fa7f41dde7ea9\">&#9670;&nbsp;</a></span>Make() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::Entity::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *&#160;</td>\n          <td class=\"paramname\"><em>file</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>. </p>\n\n</div>\n</div>\n<a id=\"ad81126191ef55c6ff2b3b112ce6c9cdb\" name=\"ad81126191ef55c6ff2b3b112ce6c9cdb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad81126191ef55c6ff2b3b112ce6c9cdb\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a21f52a14480f7dec666418d7ba17524c\" name=\"a21f52a14480f7dec666418d7ba17524c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21f52a14480f7dec666418d7ba17524c\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers the entity. </p>\n<p >Inserts the entity into the entity ID list, so that it can be found using the <a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\" title=\"Finds the entity by its ID number.\">Entity::Find(id_t)</a> static method. If the entity has a name, then it is also inserted into the name list, so that it can be found using the <a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\" title=\"Finds the entity by its name.\">Entity::Find(name_t)</a> static method. </p>\n\n</div>\n</div>\n<a id=\"a9611e07ae9178831c24f65d35e936199\" name=\"a9611e07ae9178831c24f65d35e936199\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9611e07ae9178831c24f65d35e936199\">&#9670;&nbsp;</a></span>RegisterType() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::RegisterType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>&#160;</td>\n          <td class=\"paramname\"><em>constr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>&#160;</td>\n          <td class=\"paramname\"><em>destr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *&#160;</td>\n          <td class=\"paramname\"><em>fields</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>fieldcount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new entity type. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">name</td><td>Name of the entity, should be the same as what its <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\" title=\"Returns the type of the entity.\">GetType()</a> method returns. </td></tr>\n    <tr><td class=\"paramname\">constr_func</td><td>This function will be called when a new entity of this type is requested, e.g. when deserializing a worldcell file. </td></tr>\n    <tr><td class=\"paramname\">destr_func</td><td>This function will be called when an entity of this type is yeeted. </td></tr>\n    <tr><td class=\"paramname\">fields</td><td>Pointer to an array of serialization fields. </td></tr>\n    <tr><td class=\"paramname\">fieldcount</td><td>Size of the <code>fields</code> array. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a688ecc3f647b88edae8704c9330d2afe\" name=\"a688ecc3f647b88edae8704c9330d2afe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a688ecc3f647b88edae8704c9330d2afe\">&#9670;&nbsp;</a></span>RegisterType() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::RegisterType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>&#160;</td>\n          <td class=\"paramname\"><em>constr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>&#160;</td>\n          <td class=\"paramname\"><em>destr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *&#160;</td>\n          <td class=\"paramname\"><em>fields</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>fieldcount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new entity type. </p>\n<dl class=\"deprecated\"><dt><b><a class=\"el\" href=\"deprecated.html#_deprecated000001\">Deprecated:</a></b></dt><dd>Use other <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">RegisterType()</a> methods instead. </dd></dl>\n\n</div>\n</div>\n<a id=\"abf07867be6c8d765620cf6ad3a1b2525\" name=\"abf07867be6c8d765620cf6ad3a1b2525\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf07867be6c8d765620cf6ad3a1b2525\">&#9670;&nbsp;</a></span>RegisterType() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::RegisterType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>&#160;</td>\n          <td class=\"paramname\"><em>constr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>&#160;</td>\n          <td class=\"paramname\"><em>destr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>fields</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new entity type. </p>\n<p >Same as the other <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">RegisterType()</a> method, but uses an initializer list instead of an array. They are functionally identical, use whichever you like. </p>\n\n</div>\n</div>\n<a id=\"a022989dd6fae21cdb65af24f26648488\" name=\"a022989dd6fae21cdb65af24f26648488\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a022989dd6fae21cdb65af24f26648488\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Entity::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a742a345ed3da6d6966040b4a2045ce8e\" name=\"a742a345ed3da6d6966040b4a2045ce8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a742a345ed3da6d6966040b4a2045ce8e\">&#9670;&nbsp;</a></span>SetAutoLoad()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetAutoLoad </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a613b86846cd7d82c666367c98d266e6e\" name=\"a613b86846cd7d82c666367c98d266e6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a613b86846cd7d82c666367c98d266e6e\">&#9670;&nbsp;</a></span>SetFlag()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetFlag </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flag</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6e2489225d5ca4a76b702b4d138963de\" name=\"a6e2489225d5ca4a76b702b4d138963de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e2489225d5ca4a76b702b4d138963de\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>loc</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9e3adac30cac41573d2bdda676a0832\" name=\"ac9e3adac30cac41573d2bdda676a0832\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9e3adac30cac41573d2bdda676a0832\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0143b5547a4eeef3e1501defe9882514\" name=\"a0143b5547a4eeef3e1501defe9882514\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0143b5547a4eeef3e1501defe9882514\">&#9670;&nbsp;</a></span>SetPersistent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetPersistent </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a15c4d86ef5f814eb8cc9b70cb8ced3\" name=\"a9a15c4d86ef5f814eb8cc9b70cb8ced3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rot</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2b9df5ef54954cdcd7b0f3af7aa7f829\" name=\"a2b9df5ef54954cdcd7b0f3af7aa7f829\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b9df5ef54954cdcd7b0f3af7aa7f829\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a80727e0995ac3f27addb02613c8e5edd\" name=\"a80727e0995ac3f27addb02613c8e5edd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80727e0995ac3f27addb02613c8e5edd\">&#9670;&nbsp;</a></span>Unregister()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Unregister </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unregisters the entity. </p>\n<p >Essentially, this is the reversal of what the <a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\" title=\"Registers the entity.\">Entity::Register()</a> method has done. This method will remove the entity from the ID list and from the name list, if it has a name. It will no longer be possible to find the entity by using the <a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\" title=\"Finds the entity by its ID number.\">Entity::Find()</a> method and its overloads. </p>\n\n</div>\n</div>\n<a id=\"af4a0a09ff81566de5b217018529844c5\" name=\"af4a0a09ff81566de5b217018529844c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4a0a09ff81566de5b217018529844c5\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Updates entities. </p>\n<p >Should be called once per update cycle. This method will go through the list of all yeeted entities and will destruct the ones that need to be destructed. </p>\n\n</div>\n</div>\n<a id=\"a8654143c591ec6d8dcb5d2414d4d63a3\" name=\"a8654143c591ec6d8dcb5d2414d4d63a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8654143c591ec6d8dcb5d2414d4d63a3\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">tram::Ext::Kitchensink::QuestEntity</a>.</p>\n\n</div>\n</div>\n<a id=\"a475636f78b92b3eca43ce1d01da4fcb8\" name=\"a475636f78b92b3eca43ce1d01da4fcb8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a475636f78b92b3eca43ce1d01da4fcb8\">&#9670;&nbsp;</a></span>UpdateTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::UpdateTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>loc</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>rot</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad3430330bb5b0f51f64b23ea38396f91\" name=\"ad3430330bb5b0f51f64b23ea38396f91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3430330bb5b0f51f64b23ea38396f91\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Entity::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Purges the entity. </p>\n<p >The entity will be flagged as deleted, unloaded, unregistered and then it will be held in internment until <a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\" title=\"Updates entities.\">Entity::Update()</a> is called and then, if needed, it will also be destructed. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a84136aa23993ba45f0745a9d9488ab54\" name=\"a84136aa23993ba45f0745a9d9488ab54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84136aa23993ba45f0745a9d9488ab54\">&#9670;&nbsp;</a></span>WorldCell</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad3fb3cd40bf0ec9c846a46704d4f7470\" name=\"ad3fb3cd40bf0ec9c846a46704d4f7470\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3fb3cd40bf0ec9c846a46704d4f7470\">&#9670;&nbsp;</a></span>cell</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* tram::Entity::cell = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af48fa95d5f1f47aebc79545a861cd478\" name=\"af48fa95d5f1f47aebc79545a861cd478\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af48fa95d5f1f47aebc79545a861cd478\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Entity::flags = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0e0037fe55b567a2f73a84e4e6932197\" name=\"a0e0037fe55b567a2f73a84e4e6932197\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e0037fe55b567a2f73a84e4e6932197\">&#9670;&nbsp;</a></span>id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Entity::id = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2a31ccd75576ca82547ed1feed60d8c\" name=\"aa2a31ccd75576ca82547ed1feed60d8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2a31ccd75576ca82547ed1feed60d8c\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Entity::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9b31a0d34775a0f01a2bef87efd3140\" name=\"ab9b31a0d34775a0f01a2bef87efd3140\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9b31a0d34775a0f01a2bef87efd3140\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Entity::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0525838325f363757549a3faa3267a62\" name=\"a0525838325f363757549a3faa3267a62\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0525838325f363757549a3faa3267a62\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Entity::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32d15f20656ffc4da923380374605df0\" name=\"a32d15f20656ffc4da923380374605df0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32d15f20656ffc4da923380374605df0\">&#9670;&nbsp;</a></span>signals</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a>* tram::Entity::signals = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entity_8h_source.html\">entity.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entity_8cpp.html\">entity.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_entity_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::EntityComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02\">Async::FinishResources</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">EventHandler</a>(Event &amp;event)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d\">ResourceProxy</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_entity_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::EntityComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_entity_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::EntityComponent Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class.  \n <a href=\"classtram_1_1_entity_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::EntityComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_entity_component.png\" usemap=\"#tram::EntityComponent_map\" alt=\"\"/>\n  <map id=\"tram::EntityComponent_map\" name=\"tram::EntityComponent_map\">\n<area href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\" alt=\"tram::AnimationComponent\" shape=\"rect\" coords=\"291,56,572,80\"/>\n<area href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\" alt=\"tram::AudioComponent\" shape=\"rect\" coords=\"291,112,572,136\"/>\n<area href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\" alt=\"tram::ControllerComponent\" shape=\"rect\" coords=\"291,168,572,192\"/>\n<area href=\"classtram_1_1_decal_component.html\" title=\"Projects decals onto the scene.\" alt=\"tram::DecalComponent\" shape=\"rect\" coords=\"291,224,572,248\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\" alt=\"tram::Ext::Kitchensink::AnimationStateComponent\" shape=\"rect\" coords=\"291,280,572,304\"/>\n<area href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\" alt=\"tram::LightComponent\" shape=\"rect\" coords=\"291,336,572,360\"/>\n<area href=\"classtram_1_1_particle_component.html\" title=\"Provides amusing graphical effects.\" alt=\"tram::ParticleComponent\" shape=\"rect\" coords=\"291,392,572,416\"/>\n<area href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\" alt=\"tram::PhysicsComponent\" shape=\"rect\" coords=\"291,448,572,472\"/>\n<area href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\" alt=\"tram::PlayerComponent\" shape=\"rect\" coords=\"291,504,572,528\"/>\n<area href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\" alt=\"tram::RenderComponent\" shape=\"rect\" coords=\"291,560,572,584\"/>\n<area href=\"classtram_1_1_sprite_component.html\" title=\"Provides amusing graphical effects.\" alt=\"tram::SpriteComponent\" shape=\"rect\" coords=\"291,616,572,640\"/>\n<area href=\"classtram_1_1_template_component.html\" alt=\"tram::TemplateComponent\" shape=\"rect\" coords=\"291,672,572,696\"/>\n<area href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\" alt=\"tram::TriggerComponent\" shape=\"rect\" coords=\"291,728,572,752\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a596335e001ab39c1f575ece6defaf04b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)=0</td></tr>\n<tr class=\"separator:a596335e001ab39c1f575ece6defaf04b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64cc26454bf92a709eef5e19931695d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start</a> ()=0</td></tr>\n<tr class=\"separator:a64cc26454bf92a709eef5e19931695d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:aee6f37c71b1449f8cbbc9522dedbea6d\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:aee6f37c71b1449f8cbbc9522dedbea6d\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d\">ResourceProxy</a></td></tr>\n<tr class=\"separator:aee6f37c71b1449f8cbbc9522dedbea6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f3324eae61258fe34ef99f2b994ac02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02\">Async::FinishResources</a> ()</td></tr>\n<tr class=\"separator:a8f3324eae61258fe34ef99f2b994ac02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class. </p>\n<p >Usually the way that components work is that a user creates a component, i.e. constructs an instance of a component, then they call setter methods on it to feed it parameters and finally they call the <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\" title=\"Initializes an entity component.\">Init()</a> method in the component.</p>\n<p >In turn, the base component class checks whether all of the component's requested resources have been loaded and then calls the component's <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start()</a> method. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a407901dc86e2eeb0b594d3730081f3e8\" name=\"a407901dc86e2eeb0b594d3730081f3e8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a407901dc86e2eeb0b594d3730081f3e8\">&#9670;&nbsp;</a></span>EntityComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::EntityComponent::EntityComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c959cc80467ad2e753972bdc4eb7c33\" name=\"a4c959cc80467ad2e753972bdc4eb7c33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c959cc80467ad2e753972bdc4eb7c33\">&#9670;&nbsp;</a></span>~EntityComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::EntityComponent::~EntityComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a596335e001ab39c1f575ece6defaf04b\" name=\"a596335e001ab39c1f575ece6defaf04b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a596335e001ab39c1f575ece6defaf04b\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::EntityComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">tram::TriggerComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a678a0fce6a2deac1fa04baaed4db3009\" name=\"a678a0fce6a2deac1fa04baaed4db3009\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a678a0fce6a2deac1fa04baaed4db3009\">&#9670;&nbsp;</a></span>GetParent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::EntityComponent::GetParent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab5d797d6fd60beef019062e228679eb7\" name=\"ab5d797d6fd60beef019062e228679eb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5d797d6fd60beef019062e228679eb7\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EntityComponent::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Initializes an entity component. </p>\n<p >If an entity component has all of its resources already loaded, this will immediately <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start()</a> the component. </p>\n\n<p>Reimplemented in <a class=\"el\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">tram::PlayerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">tram::TemplateComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"aad321b7c26fd5f710cf1e0e48f605a8a\" name=\"aad321b7c26fd5f710cf1e0e48f605a8a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad321b7c26fd5f710cf1e0e48f605a8a\">&#9670;&nbsp;</a></span>IsInit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::EntityComponent::IsInit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the component's init status. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if the <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\" title=\"Initializes an entity component.\">Init()</a> method has been called.</dd></dl>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/entitycomponent.html\">https://racenis.github.io/tram-sdk/documentation/framework/entitycomponent.html</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a1ae29198858d24d3aba6914bdee6a46f\" name=\"a1ae29198858d24d3aba6914bdee6a46f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ae29198858d24d3aba6914bdee6a46f\">&#9670;&nbsp;</a></span>IsReady()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::EntityComponent::IsReady </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the component's readiness. </p>\n<p >The component is considered ready when it's <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\" title=\"Initializes an entity component.\">Init()</a> method has been called, all of it's <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> dependencies have been loaded and its <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start()</a> method has been called. </p><dl class=\"section return\"><dt>Returns</dt><dd>True if the component's <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start()</a> method has been called. </dd></dl>\n\n</div>\n</div>\n<a id=\"a7f860b05911af126e8bd152492466b40\" name=\"a7f860b05911af126e8bd152492466b40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f860b05911af126e8bd152492466b40\">&#9670;&nbsp;</a></span>ResourceReady()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EntityComponent::ResourceReady </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Notifies the component of a streamed-in resource. </p>\n\n</div>\n</div>\n<a id=\"a1683ad236bce69ab4b2c2dac75ef526a\" name=\"a1683ad236bce69ab4b2c2dac75ef526a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1683ad236bce69ab4b2c2dac75ef526a\">&#9670;&nbsp;</a></span>SetParent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EntityComponent::SetParent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a64cc26454bf92a709eef5e19931695d6\" name=\"a64cc26454bf92a709eef5e19931695d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64cc26454bf92a709eef5e19931695d6\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::EntityComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">tram::TriggerComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">tram::FPSControllerComponent</a>, and <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">tram::RaycastControllerComponent</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a8f3324eae61258fe34ef99f2b994ac02\" name=\"a8f3324eae61258fe34ef99f2b994ac02\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f3324eae61258fe34ef99f2b994ac02\">&#9670;&nbsp;</a></span>Async::FinishResources</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">Async::FinishResources</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee6f37c71b1449f8cbbc9522dedbea6d\" name=\"aee6f37c71b1449f8cbbc9522dedbea6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee6f37c71b1449f8cbbc9522dedbea6d\">&#9670;&nbsp;</a></span>ResourceProxy</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0e65307b795d61b931c6b3600fc737ac\" name=\"a0e65307b795d61b931c6b3600fc737ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e65307b795d61b931c6b3600fc737ac\">&#9670;&nbsp;</a></span>is_init</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::EntityComponent::is_init = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4dcceab63838befe9fbffc1c3bc19918\" name=\"a4dcceab63838befe9fbffc1c3bc19918\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4dcceab63838befe9fbffc1c3bc19918\">&#9670;&nbsp;</a></span>is_ready</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::EntityComponent::is_ready = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea0aa7626e36e31f1621ba81925cb56b\" name=\"aea0aa7626e36e31f1621ba81925cb56b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea0aa7626e36e31f1621ba81925cb56b\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a>* tram::EntityComponent::parent = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a67f362753d2e2c2e5859ceab8b9461ce\" name=\"a67f362753d2e2c2e5859ceab8b9461ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67f362753d2e2c2e5859ceab8b9461ce\">&#9670;&nbsp;</a></span>resources_waiting</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::EntityComponent::resources_waiting = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entitycomponent_8h_source.html\">entitycomponent.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entitycomponent_8cpp.html\">entitycomponent.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_event_listener-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::EventListener Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">listener</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">make</a>(event_t event, Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a53f1f1eb7860d9f8e2138c0b605cbefc\">make</a>(event_t event, EntityComponent *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#afabda0702b19ce175e7603c6e3624ea1\">make</a>(event_t event, void(*handler)(Event &amp;event))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4\">operator bool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">~EventListener</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_event_listener.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::EventListener Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_event_listener-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::EventListener Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners.  \n <a href=\"classtram_1_1_event_listener.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a34b25d8225afb354e3e7ff8fe7ba78b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">~EventListener</a> ()</td></tr>\n<tr class=\"separator:a34b25d8225afb354e3e7ff8fe7ba78b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0763adada010c84064f47422fce20ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">make</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *parent)</td></tr>\n<tr class=\"memdesc:ad0763adada010c84064f47422fce20ec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>.  <a href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">More...</a><br /></td></tr>\n<tr class=\"separator:ad0763adada010c84064f47422fce20ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53f1f1eb7860d9f8e2138c0b605cbefc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a53f1f1eb7860d9f8e2138c0b605cbefc\">make</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, <a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *parent)</td></tr>\n<tr class=\"memdesc:a53f1f1eb7860d9f8e2138c0b605cbefc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>.  <a href=\"classtram_1_1_event_listener.html#a53f1f1eb7860d9f8e2138c0b605cbefc\">More...</a><br /></td></tr>\n<tr class=\"separator:a53f1f1eb7860d9f8e2138c0b605cbefc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afabda0702b19ce175e7603c6e3624ea1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#afabda0702b19ce175e7603c6e3624ea1\">make</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, void(*handler)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event))</td></tr>\n<tr class=\"memdesc:afabda0702b19ce175e7603c6e3624ea1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>.  <a href=\"classtram_1_1_event_listener.html#afabda0702b19ce175e7603c6e3624ea1\">More...</a><br /></td></tr>\n<tr class=\"separator:afabda0702b19ce175e7603c6e3624ea1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbbf55ccc50a2a2745bbd06adde45e1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">clear</a> ()</td></tr>\n<tr class=\"memdesc:adbbf55ccc50a2a2745bbd06adde45e1b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\" title=\"Deregisters a listener.\">Event::RemoveListener()</a>.  <a href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">More...</a><br /></td></tr>\n<tr class=\"separator:adbbf55ccc50a2a2745bbd06adde45e1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a470747c16eea957d442a15279c4d1ad4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4\">operator bool</a> ()</td></tr>\n<tr class=\"separator:a470747c16eea957d442a15279c4d1ad4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a930c397fc9144345c9fd431db387f329\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">listener</a> = 0</td></tr>\n<tr class=\"separator:a930c397fc9144345c9fd431db387f329\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners. </p>\n<p >Calling the <a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\" title=\"Essentially same as Event::AddListener().\">make()</a> method will initialize the event listener, just like calling <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a> will do. Calling the <a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\" title=\"Essentially same as Event::RemoveListener().\">clear()</a> method will delete the listener, just like calling <a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\" title=\"Deregisters a listener.\">Event::RemoveListener()</a> will do.</p>\n<p >When this class is destroyed, the event listener will also be automatically removed.</p>\n<p >You can also call the <a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\" title=\"Essentially same as Event::AddListener().\">make()</a> and <a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\" title=\"Essentially same as Event::RemoveListener().\">clear()</a> methods as much as you want, no resources will be leaked. Any existing event listener will be removed before a new one gets added. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a34b25d8225afb354e3e7ff8fe7ba78b1\" name=\"a34b25d8225afb354e3e7ff8fe7ba78b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34b25d8225afb354e3e7ff8fe7ba78b1\">&#9670;&nbsp;</a></span>~EventListener()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::EventListener::~EventListener </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"adbbf55ccc50a2a2745bbd06adde45e1b\" name=\"adbbf55ccc50a2a2745bbd06adde45e1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbbf55ccc50a2a2745bbd06adde45e1b\">&#9670;&nbsp;</a></span>clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EventListener::clear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\" title=\"Deregisters a listener.\">Event::RemoveListener()</a>. </p>\n\n</div>\n</div>\n<a id=\"ad0763adada010c84064f47422fce20ec\" name=\"ad0763adada010c84064f47422fce20ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0763adada010c84064f47422fce20ec\">&#9670;&nbsp;</a></span>make() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EventListener::make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>event</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>. </p>\n\n</div>\n</div>\n<a id=\"a53f1f1eb7860d9f8e2138c0b605cbefc\" name=\"a53f1f1eb7860d9f8e2138c0b605cbefc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53f1f1eb7860d9f8e2138c0b605cbefc\">&#9670;&nbsp;</a></span>make() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EventListener::make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>event</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>. </p>\n\n</div>\n</div>\n<a id=\"afabda0702b19ce175e7603c6e3624ea1\" name=\"afabda0702b19ce175e7603c6e3624ea1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afabda0702b19ce175e7603c6e3624ea1\">&#9670;&nbsp;</a></span>make() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::EventListener::make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>event</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)&#160;</td>\n          <td class=\"paramname\"><em>handler</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Essentially same as <a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\" title=\"Registers a listener.\">Event::AddListener()</a>. </p>\n\n</div>\n</div>\n<a id=\"a470747c16eea957d442a15279c4d1ad4\" name=\"a470747c16eea957d442a15279c4d1ad4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a470747c16eea957d442a15279c4d1ad4\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::EventListener::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a930c397fc9144345c9fd431db387f329\" name=\"a930c397fc9144345c9fd431db387f329\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a930c397fc9144345c9fd431db387f329\">&#9670;&nbsp;</a></span>listener</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::EventListener::listener = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"event_8h_source.html\">event.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"event_8cpp.html\">event.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_camera_1_1_camera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Camera::Camera Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">following</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">following_listener</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">following_lookat</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">GetFollowing</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">GetPosition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">SetActive</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">SetFollowing</a>(Entity *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">SetFollowingLookat</a>(quat new_lookat)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">SetLayerMask</a>(uint32_t layer_mask)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">SetListenerTransform</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">SetPosition</a>(vec3 position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">SetRotation</a>(quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">SetViewTransform</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">Update</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">~Camera</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_camera_1_1_camera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Camera::Camera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_camera_1_1_camera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Camera::Camera Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Interface API for cameras.  \n <a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Camera::Camera:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_camera_1_1_camera.png\" usemap=\"#tram::Ext::Camera::Camera_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Camera::Camera_map\" name=\"tram::Ext::Camera::Camera_map\">\n<area href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\" alt=\"tram::Ext::Camera::FirstPersonCamera\" shape=\"rect\" coords=\"0,56,224,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad08e1bd8a37aa799617220b19e2df508\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">SetActive</a> ()</td></tr>\n<tr class=\"separator:ad08e1bd8a37aa799617220b19e2df508\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a890d07770b117f45d57435f233f29da3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">SetFollowing</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)</td></tr>\n<tr class=\"separator:a890d07770b117f45d57435f233f29da3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb082f0d019697d9555343905772e265\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">GetFollowing</a> ()</td></tr>\n<tr class=\"separator:abb082f0d019697d9555343905772e265\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a551344bef8e92a63362a56e61ba47e93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">SetPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a>)</td></tr>\n<tr class=\"separator:a551344bef8e92a63362a56e61ba47e93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c2bd59cd7281d90dbc88be202982a93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a>)</td></tr>\n<tr class=\"separator:a1c2bd59cd7281d90dbc88be202982a93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af738a04eb564e9d69d6f0c1db42f9f5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">GetPosition</a> ()</td></tr>\n<tr class=\"separator:af738a04eb564e9d69d6f0c1db42f9f5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac812c8e3643823efb034b61ec368047a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:ac812c8e3643823efb034b61ec368047a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a391d685c473cd0dcabbeb372938357f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">SetViewTransform</a> ()</td></tr>\n<tr class=\"separator:a391d685c473cd0dcabbeb372938357f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af377217d1922777d7d6513b28434c876\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">SetListenerTransform</a> ()</td></tr>\n<tr class=\"separator:af377217d1922777d7d6513b28434c876\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a025cfc11ad96bc784c5b6b7dfdfd57cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">SetFollowingLookat</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> new_lookat)</td></tr>\n<tr class=\"separator:a025cfc11ad96bc784c5b6b7dfdfd57cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3f35ec6484b5b14ed1d67fda34e42f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">SetLayerMask</a> (uint32_t <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a>)</td></tr>\n<tr class=\"separator:ab3f35ec6484b5b14ed1d67fda34e42f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0d37368dbc256f74d6a8eb756fbcd63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">Update</a> ()=0</td></tr>\n<tr class=\"separator:ae0d37368dbc256f74d6a8eb756fbcd63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35fe3922be2a20a08e724d5d18303111\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">~Camera</a> ()</td></tr>\n<tr class=\"separator:a35fe3922be2a20a08e724d5d18303111\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a071bb8522454174c7048ed6f3dcda4df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a071bb8522454174c7048ed6f3dcda4df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e35e4579d49fde2164b2eda46d38423\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a3e35e4579d49fde2164b2eda46d38423\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3852212644df817be31acab2fb4231b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">following_listener</a> = 0</td></tr>\n<tr class=\"separator:ac3852212644df817be31acab2fb4231b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ed7e7879eb1dbfb568d72099a8c74d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a> = 1 + 2</td></tr>\n<tr class=\"separator:a7ed7e7879eb1dbfb568d72099a8c74d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac824c2a2d2ec9f37965808a6f2197c79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">following</a> = 0</td></tr>\n<tr class=\"separator:ac824c2a2d2ec9f37965808a6f2197c79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa242b24d1a6f48e868dcf73b9ca72d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">following_lookat</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aaa242b24d1a6f48e868dcf73b9ca72d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Interface API for cameras. </p>\n<p >First person camera.</p>\n<p >This camera will look in the same direction that an entity is looking at, while also following it at a set distance.</p>\n<p >Supports view bobbing </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a35fe3922be2a20a08e724d5d18303111\" name=\"a35fe3922be2a20a08e724d5d18303111\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35fe3922be2a20a08e724d5d18303111\">&#9670;&nbsp;</a></span>~Camera()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Camera::Camera::~Camera </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"abb082f0d019697d9555343905772e265\" name=\"abb082f0d019697d9555343905772e265\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb082f0d019697d9555343905772e265\">&#9670;&nbsp;</a></span>GetFollowing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Camera::Camera::GetFollowing </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af738a04eb564e9d69d6f0c1db42f9f5b\" name=\"af738a04eb564e9d69d6f0c1db42f9f5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af738a04eb564e9d69d6f0c1db42f9f5b\">&#9670;&nbsp;</a></span>GetPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Camera::Camera::GetPosition </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac812c8e3643823efb034b61ec368047a\" name=\"ac812c8e3643823efb034b61ec368047a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac812c8e3643823efb034b61ec368047a\">&#9670;&nbsp;</a></span>GetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Camera::Camera::GetRotation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad08e1bd8a37aa799617220b19e2df508\" name=\"ad08e1bd8a37aa799617220b19e2df508\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad08e1bd8a37aa799617220b19e2df508\">&#9670;&nbsp;</a></span>SetActive()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetActive </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a890d07770b117f45d57435f233f29da3\" name=\"a890d07770b117f45d57435f233f29da3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a890d07770b117f45d57435f233f29da3\">&#9670;&nbsp;</a></span>SetFollowing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetFollowing </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a025cfc11ad96bc784c5b6b7dfdfd57cf\" name=\"a025cfc11ad96bc784c5b6b7dfdfd57cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a025cfc11ad96bc784c5b6b7dfdfd57cf\">&#9670;&nbsp;</a></span>SetFollowingLookat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetFollowingLookat </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>new_lookat</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab3f35ec6484b5b14ed1d67fda34e42f8\" name=\"ab3f35ec6484b5b14ed1d67fda34e42f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab3f35ec6484b5b14ed1d67fda34e42f8\">&#9670;&nbsp;</a></span>SetLayerMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetLayerMask </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layer_mask</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af377217d1922777d7d6513b28434c876\" name=\"af377217d1922777d7d6513b28434c876\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af377217d1922777d7d6513b28434c876\">&#9670;&nbsp;</a></span>SetListenerTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetListenerTransform </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a551344bef8e92a63362a56e61ba47e93\" name=\"a551344bef8e92a63362a56e61ba47e93\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a551344bef8e92a63362a56e61ba47e93\">&#9670;&nbsp;</a></span>SetPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1c2bd59cd7281d90dbc88be202982a93\" name=\"a1c2bd59cd7281d90dbc88be202982a93\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c2bd59cd7281d90dbc88be202982a93\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a391d685c473cd0dcabbeb372938357f5\" name=\"a391d685c473cd0dcabbeb372938357f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a391d685c473cd0dcabbeb372938357f5\">&#9670;&nbsp;</a></span>SetViewTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::SetViewTransform </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0d37368dbc256f74d6a8eb756fbcd63\" name=\"ae0d37368dbc256f74d6a8eb756fbcd63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0d37368dbc256f74d6a8eb756fbcd63\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Camera::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">tram::Ext::Camera::FirstPersonCamera</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac824c2a2d2ec9f37965808a6f2197c79\" name=\"ac824c2a2d2ec9f37965808a6f2197c79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac824c2a2d2ec9f37965808a6f2197c79\">&#9670;&nbsp;</a></span>following</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Camera::Camera::following = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3852212644df817be31acab2fb4231b\" name=\"ac3852212644df817be31acab2fb4231b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3852212644df817be31acab2fb4231b\">&#9670;&nbsp;</a></span>following_listener</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::Ext::Camera::Camera::following_listener = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa242b24d1a6f48e868dcf73b9ca72d5\" name=\"aaa242b24d1a6f48e868dcf73b9ca72d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa242b24d1a6f48e868dcf73b9ca72d5\">&#9670;&nbsp;</a></span>following_lookat</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Camera::Camera::following_lookat = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ed7e7879eb1dbfb568d72099a8c74d0\" name=\"a7ed7e7879eb1dbfb568d72099a8c74d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ed7e7879eb1dbfb568d72099a8c74d0\">&#9670;&nbsp;</a></span>layer_mask</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Camera::Camera::layer_mask = 1 + 2</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a071bb8522454174c7048ed6f3dcda4df\" name=\"a071bb8522454174c7048ed6f3dcda4df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a071bb8522454174c7048ed6f3dcda4df\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Camera::Camera::position = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e35e4579d49fde2164b2eda46d38423\" name=\"a3e35e4579d49fde2164b2eda46d38423\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e35e4579d49fde2164b2eda46d38423\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Camera::Camera::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/<a class=\"el\" href=\"camera_8h_source.html\">camera.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/<a class=\"el\" href=\"camera_8cpp.html\">camera.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_camera_1_1_first_person_camera-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Camera::FirstPersonCamera Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">bob</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">bob_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">bob_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">bobbing_distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">bobbing_tilt</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">bobbing_tilt_goal</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">bobbing_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">bobbing_weight_goal</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">callback_count</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">FirstPersonCamera</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">following</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">following_listener</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">following_lookat</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">following_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">GetBob</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">GetFollowing</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">GetPosition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">GetWeight</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">mouselook</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">pitch</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">rotate_following</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">SetActive</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">SetBobbing</a>(float bobbing_weight)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">SetBobbingCallback</a>(void(*bob_callback)(FirstPersonCamera *))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">SetBobbingDistance</a>(float bobbing_distance)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">SetBobbingTilt</a>(float bobbing_tilt)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">SetBobSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">SetFollowing</a>(Entity *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">SetFollowingInterpolation</a>(float following_interpolation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">SetFollowingLookat</a>(quat new_lookat)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">SetFollowingOffset</a>(vec3 offset)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">SetLayerMask</a>(uint32_t layer_mask)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">SetListenerTransform</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">SetMouselook</a>(bool mouselook)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">SetPosition</a>(vec3 position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">SetRotateFollowing</a>(bool rotate_following)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">SetRotation</a>(quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">SetTilt</a>(float tilt)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">SetViewTransform</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tilt</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tilt_goal</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tilt_last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">yaw</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">~Camera</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">~FirstPersonCamera</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Camera::FirstPersonCamera Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Camera::FirstPersonCamera Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"firstperson_8h_source.html\">firstperson.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Camera::FirstPersonCamera:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.png\" usemap=\"#tram::Ext::Camera::FirstPersonCamera_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Camera::FirstPersonCamera_map\" name=\"tram::Ext::Camera::FirstPersonCamera_map\">\n<area href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\" title=\"Interface API for cameras.\" alt=\"tram::Ext::Camera::Camera\" shape=\"rect\" coords=\"0,0,224,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab0b6d243e23d1e3bab6897ca8c846b0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">FirstPersonCamera</a> ()</td></tr>\n<tr class=\"separator:ab0b6d243e23d1e3bab6897ca8c846b0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f5112b4261174831aa1e4664fcfb503\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">~FirstPersonCamera</a> ()</td></tr>\n<tr class=\"separator:a3f5112b4261174831aa1e4664fcfb503\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb2ef9be0c07a1df11c53cf1a6d632fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">Update</a> ()</td></tr>\n<tr class=\"separator:afb2ef9be0c07a1df11c53cf1a6d632fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a264a29b441d6180743b3a59b7d14476f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">SetTilt</a> (float <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tilt</a>)</td></tr>\n<tr class=\"separator:a264a29b441d6180743b3a59b7d14476f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade2f1910a021d9f4b2e836fa170f9f4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">SetMouselook</a> (bool <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">mouselook</a>)</td></tr>\n<tr class=\"separator:ade2f1910a021d9f4b2e836fa170f9f4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81a3ae850df9d192387b0a16e39fe160\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">SetRotateFollowing</a> (bool <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">rotate_following</a>)</td></tr>\n<tr class=\"separator:a81a3ae850df9d192387b0a16e39fe160\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc8754d53b7ba8698791378dbda72007\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">SetBobbing</a> (float <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">bobbing_weight</a>)</td></tr>\n<tr class=\"memdesc:afc8754d53b7ba8698791378dbda72007\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the weight of the bobbing.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">More...</a><br /></td></tr>\n<tr class=\"separator:afc8754d53b7ba8698791378dbda72007\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1b10331c68852d99dadeaba25aae16d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">SetBobbingDistance</a> (float <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">bobbing_distance</a>)</td></tr>\n<tr class=\"memdesc:ab1b10331c68852d99dadeaba25aae16d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the distance bobbed during bobbing.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">More...</a><br /></td></tr>\n<tr class=\"separator:ab1b10331c68852d99dadeaba25aae16d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a647225bd7bd3d33fc1295b8e59945b1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">SetBobbingTilt</a> (float <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">bobbing_tilt</a>)</td></tr>\n<tr class=\"memdesc:a647225bd7bd3d33fc1295b8e59945b1a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the tilt bobbed during bobbing.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">More...</a><br /></td></tr>\n<tr class=\"separator:a647225bd7bd3d33fc1295b8e59945b1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c90b959c76be84f182e826b60f4d1bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">SetBobbingCallback</a> (void(*<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">bob_callback</a>)(<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> *))</td></tr>\n<tr class=\"memdesc:a9c90b959c76be84f182e826b60f4d1bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the bobbing callback.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">More...</a><br /></td></tr>\n<tr class=\"separator:a9c90b959c76be84f182e826b60f4d1bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34cc63ef60051ea61e79d460563d8806\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">SetBobSpeed</a> (float speed)</td></tr>\n<tr class=\"memdesc:a34cc63ef60051ea61e79d460563d8806\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the speed of the bobs during bobbing.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">More...</a><br /></td></tr>\n<tr class=\"separator:a34cc63ef60051ea61e79d460563d8806\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefecd2a76d3631867157caa5ba9b7c9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">GetBob</a> ()</td></tr>\n<tr class=\"separator:aefecd2a76d3631867157caa5ba9b7c9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69082df187434d24ec21dbcafa93f2ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">GetWeight</a> ()</td></tr>\n<tr class=\"separator:a69082df187434d24ec21dbcafa93f2ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b2dd1c3281e606b65cabb974583dcab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">SetFollowingInterpolation</a> (float <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a>)</td></tr>\n<tr class=\"separator:a0b2dd1c3281e606b65cabb974583dcab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25ab9c4939a27be11cb70b3d5adfda40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">SetFollowingOffset</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> offset)</td></tr>\n<tr class=\"separator:a25ab9c4939a27be11cb70b3d5adfda40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td></tr>\n<tr class=\"memitem:ad08e1bd8a37aa799617220b19e2df508 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">SetActive</a> ()</td></tr>\n<tr class=\"separator:ad08e1bd8a37aa799617220b19e2df508 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a890d07770b117f45d57435f233f29da3 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">SetFollowing</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)</td></tr>\n<tr class=\"separator:a890d07770b117f45d57435f233f29da3 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb082f0d019697d9555343905772e265 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">GetFollowing</a> ()</td></tr>\n<tr class=\"separator:abb082f0d019697d9555343905772e265 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a551344bef8e92a63362a56e61ba47e93 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">SetPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a>)</td></tr>\n<tr class=\"separator:a551344bef8e92a63362a56e61ba47e93 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c2bd59cd7281d90dbc88be202982a93 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a>)</td></tr>\n<tr class=\"separator:a1c2bd59cd7281d90dbc88be202982a93 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af738a04eb564e9d69d6f0c1db42f9f5b inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">GetPosition</a> ()</td></tr>\n<tr class=\"separator:af738a04eb564e9d69d6f0c1db42f9f5b inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac812c8e3643823efb034b61ec368047a inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:ac812c8e3643823efb034b61ec368047a inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a391d685c473cd0dcabbeb372938357f5 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">SetViewTransform</a> ()</td></tr>\n<tr class=\"separator:a391d685c473cd0dcabbeb372938357f5 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af377217d1922777d7d6513b28434c876 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">SetListenerTransform</a> ()</td></tr>\n<tr class=\"separator:af377217d1922777d7d6513b28434c876 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a025cfc11ad96bc784c5b6b7dfdfd57cf inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">SetFollowingLookat</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> new_lookat)</td></tr>\n<tr class=\"separator:a025cfc11ad96bc784c5b6b7dfdfd57cf inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3f35ec6484b5b14ed1d67fda34e42f8 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">SetLayerMask</a> (uint32_t <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a>)</td></tr>\n<tr class=\"separator:ab3f35ec6484b5b14ed1d67fda34e42f8 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35fe3922be2a20a08e724d5d18303111 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">~Camera</a> ()</td></tr>\n<tr class=\"separator:a35fe3922be2a20a08e724d5d18303111 inherit pub_methods_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:afdc06174463b8c44161f9f74f73fb81f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tilt</a> = 0.0f</td></tr>\n<tr class=\"separator:afdc06174463b8c44161f9f74f73fb81f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9a3d94e83b762fc15edbf7d3da266a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tilt_goal</a> = 0.0f</td></tr>\n<tr class=\"separator:aa9a3d94e83b762fc15edbf7d3da266a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77c42a4916c08b1a297720aff63a77c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tilt_last</a> = 0.0f</td></tr>\n<tr class=\"separator:a77c42a4916c08b1a297720aff63a77c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a939144795493647266dfed3c37f7964e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">bob</a> = 0.0f</td></tr>\n<tr class=\"separator:a939144795493647266dfed3c37f7964e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e08632db39929c5d34f38709e5ea28f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">bobbing_weight_goal</a> = 0.0f</td></tr>\n<tr class=\"separator:a7e08632db39929c5d34f38709e5ea28f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4d02663d09577f0771f3c145e826ae2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">bobbing_weight</a> = 0.0f</td></tr>\n<tr class=\"separator:ae4d02663d09577f0771f3c145e826ae2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55e48a64290f4a40a6332c4536c6e194\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">bobbing_distance</a> = 0.2f</td></tr>\n<tr class=\"separator:a55e48a64290f4a40a6332c4536c6e194\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0cdf4f127893f1b3a00701b5de1cac0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">bobbing_tilt_goal</a> = 0.0f</td></tr>\n<tr class=\"separator:a0cdf4f127893f1b3a00701b5de1cac0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fee900edc8986fbf21a110744bca1dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">bobbing_tilt</a> = 0.0f</td></tr>\n<tr class=\"separator:a4fee900edc8986fbf21a110744bca1dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71b4981935bc58995e4ee9ffb2f6c573\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">bob_speed</a> = 0.1f</td></tr>\n<tr class=\"separator:a71b4981935bc58995e4ee9ffb2f6c573\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78e5e9c142141e83c4060ac83702e261\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">callback_count</a> = 0</td></tr>\n<tr class=\"separator:a78e5e9c142141e83c4060ac83702e261\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa6a623662e232f8d979eb703d905834\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">bob_callback</a> )(<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> *) = nullptr</td></tr>\n<tr class=\"separator:afa6a623662e232f8d979eb703d905834\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7853506fcff02e0836600d49dd6c302\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">mouselook</a> = false</td></tr>\n<tr class=\"separator:ab7853506fcff02e0836600d49dd6c302\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01612b2beb8614c3602232f3313e143b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">rotate_following</a> = false</td></tr>\n<tr class=\"separator:a01612b2beb8614c3602232f3313e143b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a9d5accb0655fdb4185a73866bb13b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">yaw</a> = 0.0f</td></tr>\n<tr class=\"separator:aa2a9d5accb0655fdb4185a73866bb13b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44a70884e100d0b6a198b3ec588a68b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">pitch</a> = 0.0f</td></tr>\n<tr class=\"separator:a44a70884e100d0b6a198b3ec588a68b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5267817e3d8ad5268a7a7149586f624\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">following_offset</a> = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> (0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:aa5267817e3d8ad5268a7a7149586f624\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc061f0deae8ee4e0abc66d55544208b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a> = 1.0f</td></tr>\n<tr class=\"separator:afc061f0deae8ee4e0abc66d55544208b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></td></tr>\n<tr class=\"memitem:a071bb8522454174c7048ed6f3dcda4df inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a071bb8522454174c7048ed6f3dcda4df inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e35e4579d49fde2164b2eda46d38423 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a3e35e4579d49fde2164b2eda46d38423 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3852212644df817be31acab2fb4231b inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">following_listener</a> = 0</td></tr>\n<tr class=\"separator:ac3852212644df817be31acab2fb4231b inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ed7e7879eb1dbfb568d72099a8c74d0 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">layer_mask</a> = 1 + 2</td></tr>\n<tr class=\"separator:a7ed7e7879eb1dbfb568d72099a8c74d0 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac824c2a2d2ec9f37965808a6f2197c79 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">following</a> = 0</td></tr>\n<tr class=\"separator:ac824c2a2d2ec9f37965808a6f2197c79 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa242b24d1a6f48e868dcf73b9ca72d5 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">following_lookat</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aaa242b24d1a6f48e868dcf73b9ca72d5 inherit pro_attribs_classtram_1_1_ext_1_1_camera_1_1_camera\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab0b6d243e23d1e3bab6897ca8c846b0e\" name=\"ab0b6d243e23d1e3bab6897ca8c846b0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0b6d243e23d1e3bab6897ca8c846b0e\">&#9670;&nbsp;</a></span>FirstPersonCamera()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Camera::FirstPersonCamera::FirstPersonCamera </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3f5112b4261174831aa1e4664fcfb503\" name=\"a3f5112b4261174831aa1e4664fcfb503\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f5112b4261174831aa1e4664fcfb503\">&#9670;&nbsp;</a></span>~FirstPersonCamera()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Camera::FirstPersonCamera::~FirstPersonCamera </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aefecd2a76d3631867157caa5ba9b7c9a\" name=\"aefecd2a76d3631867157caa5ba9b7c9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefecd2a76d3631867157caa5ba9b7c9a\">&#9670;&nbsp;</a></span>GetBob()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::GetBob </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69082df187434d24ec21dbcafa93f2ec\" name=\"a69082df187434d24ec21dbcafa93f2ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69082df187434d24ec21dbcafa93f2ec\">&#9670;&nbsp;</a></span>GetWeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::GetWeight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc8754d53b7ba8698791378dbda72007\" name=\"afc8754d53b7ba8698791378dbda72007\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc8754d53b7ba8698791378dbda72007\">&#9670;&nbsp;</a></span>SetBobbing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetBobbing </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>bobbing_weight</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the weight of the bobbing. </p>\n<p >The larger the weight, the more exaggerated the bobbing will be. This parameter can be used to change the ammount of bobbing for different activities, e.g. 1.0f for walking, 2.0f for running and 0.0f for standing. </p>\n\n</div>\n</div>\n<a id=\"a9c90b959c76be84f182e826b60f4d1bb\" name=\"a9c90b959c76be84f182e826b60f4d1bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c90b959c76be84f182e826b60f4d1bb\">&#9670;&nbsp;</a></span>SetBobbingCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetBobbingCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> *)&#160;</td>\n          <td class=\"paramname\"><em>bob_callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the bobbing callback. </p>\n<p >The bobbing callback is called every time a full view bob is performed. This callback is very effective when used to trigger footstep sound effects. </p>\n\n</div>\n</div>\n<a id=\"ab1b10331c68852d99dadeaba25aae16d\" name=\"ab1b10331c68852d99dadeaba25aae16d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1b10331c68852d99dadeaba25aae16d\">&#9670;&nbsp;</a></span>SetBobbingDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetBobbingDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>bobbing_distance</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the distance bobbed during bobbing. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">bobbing_distance</td><td>Best if set to between 0.0f and 0.5f. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a647225bd7bd3d33fc1295b8e59945b1a\" name=\"a647225bd7bd3d33fc1295b8e59945b1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a647225bd7bd3d33fc1295b8e59945b1a\">&#9670;&nbsp;</a></span>SetBobbingTilt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetBobbingTilt </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>bobbing_tilt</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the tilt bobbed during bobbing. </p>\n<p >The camera will be tilted back and forth along the Z, i.e. forward axis. </p><dl class=\"section note\"><dt>Note</dt><dd>Try not to throw up if you set this value too high. </dd></dl>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">bobbing_tilt</td><td>Tilt, in radians. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a34cc63ef60051ea61e79d460563d8806\" name=\"a34cc63ef60051ea61e79d460563d8806\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34cc63ef60051ea61e79d460563d8806\">&#9670;&nbsp;</a></span>SetBobSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetBobSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the speed of the bobs during bobbing. </p>\n\n</div>\n</div>\n<a id=\"a0b2dd1c3281e606b65cabb974583dcab\" name=\"a0b2dd1c3281e606b65cabb974583dcab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b2dd1c3281e606b65cabb974583dcab\">&#9670;&nbsp;</a></span>SetFollowingInterpolation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetFollowingInterpolation </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>following_interpolation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25ab9c4939a27be11cb70b3d5adfda40\" name=\"a25ab9c4939a27be11cb70b3d5adfda40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25ab9c4939a27be11cb70b3d5adfda40\">&#9670;&nbsp;</a></span>SetFollowingOffset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetFollowingOffset </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>offset</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ade2f1910a021d9f4b2e836fa170f9f4a\" name=\"ade2f1910a021d9f4b2e836fa170f9f4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade2f1910a021d9f4b2e836fa170f9f4a\">&#9670;&nbsp;</a></span>SetMouselook()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetMouselook </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>mouselook</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81a3ae850df9d192387b0a16e39fe160\" name=\"a81a3ae850df9d192387b0a16e39fe160\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81a3ae850df9d192387b0a16e39fe160\">&#9670;&nbsp;</a></span>SetRotateFollowing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetRotateFollowing </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>rotate_following</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a264a29b441d6180743b3a59b7d14476f\" name=\"a264a29b441d6180743b3a59b7d14476f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a264a29b441d6180743b3a59b7d14476f\">&#9670;&nbsp;</a></span>SetTilt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::SetTilt </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>tilt</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afb2ef9be0c07a1df11c53cf1a6d632fe\" name=\"afb2ef9be0c07a1df11c53cf1a6d632fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb2ef9be0c07a1df11c53cf1a6d632fe\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::FirstPersonCamera::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">tram::Ext::Camera::Camera</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a939144795493647266dfed3c37f7964e\" name=\"a939144795493647266dfed3c37f7964e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a939144795493647266dfed3c37f7964e\">&#9670;&nbsp;</a></span>bob</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bob = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa6a623662e232f8d979eb703d905834\" name=\"afa6a623662e232f8d979eb703d905834\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa6a623662e232f8d979eb703d905834\">&#9670;&nbsp;</a></span>bob_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Ext::Camera::FirstPersonCamera::bob_callback) (<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> *) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71b4981935bc58995e4ee9ffb2f6c573\" name=\"a71b4981935bc58995e4ee9ffb2f6c573\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71b4981935bc58995e4ee9ffb2f6c573\">&#9670;&nbsp;</a></span>bob_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bob_speed = 0.1f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a55e48a64290f4a40a6332c4536c6e194\" name=\"a55e48a64290f4a40a6332c4536c6e194\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55e48a64290f4a40a6332c4536c6e194\">&#9670;&nbsp;</a></span>bobbing_distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bobbing_distance = 0.2f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4fee900edc8986fbf21a110744bca1dc\" name=\"a4fee900edc8986fbf21a110744bca1dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fee900edc8986fbf21a110744bca1dc\">&#9670;&nbsp;</a></span>bobbing_tilt</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bobbing_tilt = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0cdf4f127893f1b3a00701b5de1cac0d\" name=\"a0cdf4f127893f1b3a00701b5de1cac0d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cdf4f127893f1b3a00701b5de1cac0d\">&#9670;&nbsp;</a></span>bobbing_tilt_goal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bobbing_tilt_goal = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae4d02663d09577f0771f3c145e826ae2\" name=\"ae4d02663d09577f0771f3c145e826ae2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4d02663d09577f0771f3c145e826ae2\">&#9670;&nbsp;</a></span>bobbing_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bobbing_weight = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7e08632db39929c5d34f38709e5ea28f\" name=\"a7e08632db39929c5d34f38709e5ea28f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e08632db39929c5d34f38709e5ea28f\">&#9670;&nbsp;</a></span>bobbing_weight_goal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::bobbing_weight_goal = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a78e5e9c142141e83c4060ac83702e261\" name=\"a78e5e9c142141e83c4060ac83702e261\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78e5e9c142141e83c4060ac83702e261\">&#9670;&nbsp;</a></span>callback_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Camera::FirstPersonCamera::callback_count = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc061f0deae8ee4e0abc66d55544208b\" name=\"afc061f0deae8ee4e0abc66d55544208b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc061f0deae8ee4e0abc66d55544208b\">&#9670;&nbsp;</a></span>following_interpolation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::following_interpolation = 1.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5267817e3d8ad5268a7a7149586f624\" name=\"aa5267817e3d8ad5268a7a7149586f624\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5267817e3d8ad5268a7a7149586f624\">&#9670;&nbsp;</a></span>following_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Camera::FirstPersonCamera::following_offset = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> (0.0f, 0.0f, 0.0f)</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab7853506fcff02e0836600d49dd6c302\" name=\"ab7853506fcff02e0836600d49dd6c302\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7853506fcff02e0836600d49dd6c302\">&#9670;&nbsp;</a></span>mouselook</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Camera::FirstPersonCamera::mouselook = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44a70884e100d0b6a198b3ec588a68b6\" name=\"a44a70884e100d0b6a198b3ec588a68b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44a70884e100d0b6a198b3ec588a68b6\">&#9670;&nbsp;</a></span>pitch</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::pitch = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a01612b2beb8614c3602232f3313e143b\" name=\"a01612b2beb8614c3602232f3313e143b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01612b2beb8614c3602232f3313e143b\">&#9670;&nbsp;</a></span>rotate_following</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Camera::FirstPersonCamera::rotate_following = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afdc06174463b8c44161f9f74f73fb81f\" name=\"afdc06174463b8c44161f9f74f73fb81f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdc06174463b8c44161f9f74f73fb81f\">&#9670;&nbsp;</a></span>tilt</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::tilt = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa9a3d94e83b762fc15edbf7d3da266a0\" name=\"aa9a3d94e83b762fc15edbf7d3da266a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9a3d94e83b762fc15edbf7d3da266a0\">&#9670;&nbsp;</a></span>tilt_goal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::tilt_goal = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77c42a4916c08b1a297720aff63a77c7\" name=\"a77c42a4916c08b1a297720aff63a77c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77c42a4916c08b1a297720aff63a77c7\">&#9670;&nbsp;</a></span>tilt_last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::tilt_last = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2a9d5accb0655fdb4185a73866bb13b\" name=\"aa2a9d5accb0655fdb4185a73866bb13b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2a9d5accb0655fdb4185a73866bb13b\">&#9670;&nbsp;</a></span>yaw</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::FirstPersonCamera::yaw = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/<a class=\"el\" href=\"firstperson_8h_source.html\">firstperson.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/<a class=\"el\" href=\"firstperson_8cpp.html\">firstperson.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_breakable-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">Breakable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Breakable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a4f7b2cb1bc4fa10a503299246d28b85c\">Breakable</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0b9c72828511613c769843d6a96e9a6e\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#aa507c38c6a5c077b0ccde3d3bfefe150\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#ac7109d1baaa4e6df755b3ec356f637c1\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0dd0dca31da54435a7a4e1f027394d33\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a5917220dc6850c6ffff9b0cf55ef3c27\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0d773b9092e80fd58c209aa17b8d7dac\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a10db4c01578f9b5bfb44f14457410c1b\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a4365d416cfb73da40a83e7bb4e3ee219\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a8368f57ff67eed8a2220bd508e3307da\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a6bc0475d87512b8b801fd18ebb1b5915\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#aef737abad188c10b76c3a0f918562859\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">tram::Ext::Design::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_breakable.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Breakable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">Breakable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_breakable-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Breakable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Breakable:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_breakable.png\" usemap=\"#tram::Ext::Design::Breakable_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Breakable_map\" name=\"tram::Ext::Design::Breakable_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,167,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4f7b2cb1bc4fa10a503299246d28b85c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a4f7b2cb1bc4fa10a503299246d28b85c\">Breakable</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a4f7b2cb1bc4fa10a503299246d28b85c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef737abad188c10b76c3a0f918562859\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#aef737abad188c10b76c3a0f918562859\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:aef737abad188c10b76c3a0f918562859\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8368f57ff67eed8a2220bd508e3307da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a8368f57ff67eed8a2220bd508e3307da\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a8368f57ff67eed8a2220bd508e3307da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa507c38c6a5c077b0ccde3d3bfefe150\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#aa507c38c6a5c077b0ccde3d3bfefe150\">Load</a> ()</td></tr>\n<tr class=\"separator:aa507c38c6a5c077b0ccde3d3bfefe150\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6bc0475d87512b8b801fd18ebb1b5915\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a6bc0475d87512b8b801fd18ebb1b5915\">Unload</a> ()</td></tr>\n<tr class=\"separator:a6bc0475d87512b8b801fd18ebb1b5915\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4365d416cfb73da40a83e7bb4e3ee219\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a4365d416cfb73da40a83e7bb4e3ee219\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a4365d416cfb73da40a83e7bb4e3ee219\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7109d1baaa4e6df755b3ec356f637c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#ac7109d1baaa4e6df755b3ec356f637c1\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:ac7109d1baaa4e6df755b3ec356f637c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a0d773b9092e80fd58c209aa17b8d7dac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0d773b9092e80fd58c209aa17b8d7dac\">Register</a> ()</td></tr>\n<tr class=\"separator:a0d773b9092e80fd58c209aa17b8d7dac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a10db4c01578f9b5bfb44f14457410c1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a10db4c01578f9b5bfb44f14457410c1b\">rendercomponent</a></td></tr>\n<tr class=\"separator:a10db4c01578f9b5bfb44f14457410c1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5917220dc6850c6ffff9b0cf55ef3c27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a5917220dc6850c6ffff9b0cf55ef3c27\">physicscomponent</a></td></tr>\n<tr class=\"separator:a5917220dc6850c6ffff9b0cf55ef3c27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dd0dca31da54435a7a4e1f027394d33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0dd0dca31da54435a7a4e1f027394d33\">model</a></td></tr>\n<tr class=\"separator:a0dd0dca31da54435a7a4e1f027394d33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b9c72828511613c769843d6a96e9a6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html#a0b9c72828511613c769843d6a96e9a6e\">collmodel</a></td></tr>\n<tr class=\"separator:a0b9c72828511613c769843d6a96e9a6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4f7b2cb1bc4fa10a503299246d28b85c\" name=\"a4f7b2cb1bc4fa10a503299246d28b85c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f7b2cb1bc4fa10a503299246d28b85c\">&#9670;&nbsp;</a></span>Breakable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Breakable::Breakable </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa507c38c6a5c077b0ccde3d3bfefe150\" name=\"aa507c38c6a5c077b0ccde3d3bfefe150\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa507c38c6a5c077b0ccde3d3bfefe150\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac7109d1baaa4e6df755b3ec356f637c1\" name=\"ac7109d1baaa4e6df755b3ec356f637c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7109d1baaa4e6df755b3ec356f637c1\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0d773b9092e80fd58c209aa17b8d7dac\" name=\"a0d773b9092e80fd58c209aa17b8d7dac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d773b9092e80fd58c209aa17b8d7dac\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Breakable::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4365d416cfb73da40a83e7bb4e3ee219\" name=\"a4365d416cfb73da40a83e7bb4e3ee219\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4365d416cfb73da40a83e7bb4e3ee219\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a8368f57ff67eed8a2220bd508e3307da\" name=\"a8368f57ff67eed8a2220bd508e3307da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8368f57ff67eed8a2220bd508e3307da\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6bc0475d87512b8b801fd18ebb1b5915\" name=\"a6bc0475d87512b8b801fd18ebb1b5915\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bc0475d87512b8b801fd18ebb1b5915\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aef737abad188c10b76c3a0f918562859\" name=\"aef737abad188c10b76c3a0f918562859\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef737abad188c10b76c3a0f918562859\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Breakable::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0b9c72828511613c769843d6a96e9a6e\" name=\"a0b9c72828511613c769843d6a96e9a6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b9c72828511613c769843d6a96e9a6e\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Breakable::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0dd0dca31da54435a7a4e1f027394d33\" name=\"a0dd0dca31da54435a7a4e1f027394d33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0dd0dca31da54435a7a4e1f027394d33\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Breakable::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5917220dc6850c6ffff9b0cf55ef3c27\" name=\"a5917220dc6850c6ffff9b0cf55ef3c27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5917220dc6850c6ffff9b0cf55ef3c27\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Breakable::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10db4c01578f9b5bfb44f14457410c1b\" name=\"a10db4c01578f9b5bfb44f14457410c1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10db4c01578f9b5bfb44f14457410c1b\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Breakable::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_button-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">Button</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Button Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a221be63630cad47bb512e37e46292967\">Button</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a555ff53b3f89ca019056c360b0bfc5c6\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#aaa788454a5e45c01dbe6fb7b761b7023\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#adac9d696ad3b4c49a2483e901c8bce50\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a225e77c725ec6913aaddec5349789235\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8b85987eae1bce1f842e5cd10e66731d\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a50092350933e31bc412c76464213d103\">last_activate</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a9b75738d77e7173d641ab110872ed86e\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a58b20350e9ae84e25101df267799c326\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a2e51fe470a68d2b4e96f31c1f2bcf9a7\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#adc208338901d63fc6498af907704a6e2\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1845b85edabb9ec928369d9383c89acf\">origin</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a3c68359927f7a1bc86c732ce03e90cfd\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1bbbc4f3b282741154c1181f8a18a3a4\">pause</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8de95f847e402ba94f60ae14a4f36dd3\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a083201a9171859788cfd25ee7312acd5\">progress</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ac5c7a92ba0afd910db242d415e16af8b\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad52cd4d69bb8a4cb5eec5590d232e511\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a04e7fa8e0544eb81cb54b8d722b36d5f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#af421f5da2f128de4d99add5ff74a4bf7\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad60dfce80dbf4b91268189f8e8192e4a\">sound</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a9714e14ed563969119b449ef12e91895\">speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a19e76d40a1d62f13df26003c09109c81\">start_pos</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1000130eb243c80e6eb38d8a899395d5\">start_rot</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad7925441f73d7a4370a35b486c3186d4\">state</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8f4a4411eada2deb38aad413e5f5150d\">SwitchState</a>(int)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a575dbad9b1f47ab7f3aace71c67d9a46\">tick</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ae5054dd428862bd13f45db99134430c6\">timer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a3b0203823f8dd8cdd74f6fc389e6a1be\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#acd3e33d2f7f127886f0e9fc9ee31a611\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">tram::Ext::Design::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_button.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Button Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">Button</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_button-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Button Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Essentially a func_door.  \n <a href=\"classtram_1_1_ext_1_1_design_1_1_button.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Button:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_button.png\" usemap=\"#tram::Ext::Design::Button_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Button_map\" name=\"tram::Ext::Design::Button_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,145,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a221be63630cad47bb512e37e46292967\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a221be63630cad47bb512e37e46292967\">Button</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a221be63630cad47bb512e37e46292967\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd3e33d2f7f127886f0e9fc9ee31a611\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#acd3e33d2f7f127886f0e9fc9ee31a611\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:acd3e33d2f7f127886f0e9fc9ee31a611\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af421f5da2f128de4d99add5ff74a4bf7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#af421f5da2f128de4d99add5ff74a4bf7\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:af421f5da2f128de4d99add5ff74a4bf7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58b20350e9ae84e25101df267799c326\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a58b20350e9ae84e25101df267799c326\">Load</a> ()</td></tr>\n<tr class=\"separator:a58b20350e9ae84e25101df267799c326\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b0203823f8dd8cdd74f6fc389e6a1be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a3b0203823f8dd8cdd74f6fc389e6a1be\">Unload</a> ()</td></tr>\n<tr class=\"separator:a3b0203823f8dd8cdd74f6fc389e6a1be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04e7fa8e0544eb81cb54b8d722b36d5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a04e7fa8e0544eb81cb54b8d722b36d5f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a04e7fa8e0544eb81cb54b8d722b36d5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adac9d696ad3b4c49a2483e901c8bce50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#adac9d696ad3b4c49a2483e901c8bce50\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:adac9d696ad3b4c49a2483e901c8bce50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e51fe470a68d2b4e96f31c1f2bcf9a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a2e51fe470a68d2b4e96f31c1f2bcf9a7\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a2e51fe470a68d2b4e96f31c1f2bcf9a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b85987eae1bce1f842e5cd10e66731d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8b85987eae1bce1f842e5cd10e66731d\">GetType</a> ()</td></tr>\n<tr class=\"separator:a8b85987eae1bce1f842e5cd10e66731d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ac5c7a92ba0afd910db242d415e16af8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ac5c7a92ba0afd910db242d415e16af8b\">Register</a> ()</td></tr>\n<tr class=\"separator:ac5c7a92ba0afd910db242d415e16af8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a8f4a4411eada2deb38aad413e5f5150d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8f4a4411eada2deb38aad413e5f5150d\">SwitchState</a> (int)</td></tr>\n<tr class=\"separator:a8f4a4411eada2deb38aad413e5f5150d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad52cd4d69bb8a4cb5eec5590d232e511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad52cd4d69bb8a4cb5eec5590d232e511\">rendercomponent</a></td></tr>\n<tr class=\"separator:ad52cd4d69bb8a4cb5eec5590d232e511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8de95f847e402ba94f60ae14a4f36dd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a8de95f847e402ba94f60ae14a4f36dd3\">physicscomponent</a></td></tr>\n<tr class=\"separator:a8de95f847e402ba94f60ae14a4f36dd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a575dbad9b1f47ab7f3aace71c67d9a46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a575dbad9b1f47ab7f3aace71c67d9a46\">tick</a></td></tr>\n<tr class=\"separator:a575dbad9b1f47ab7f3aace71c67d9a46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a225e77c725ec6913aaddec5349789235\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a225e77c725ec6913aaddec5349789235\">flags</a></td></tr>\n<tr class=\"separator:a225e77c725ec6913aaddec5349789235\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc208338901d63fc6498af907704a6e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#adc208338901d63fc6498af907704a6e2\">model</a></td></tr>\n<tr class=\"separator:adc208338901d63fc6498af907704a6e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b75738d77e7173d641ab110872ed86e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a9b75738d77e7173d641ab110872ed86e\">lightmap</a></td></tr>\n<tr class=\"separator:a9b75738d77e7173d641ab110872ed86e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1845b85edabb9ec928369d9383c89acf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1845b85edabb9ec928369d9383c89acf\">origin</a></td></tr>\n<tr class=\"separator:a1845b85edabb9ec928369d9383c89acf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a555ff53b3f89ca019056c360b0bfc5c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a555ff53b3f89ca019056c360b0bfc5c6\">direction</a></td></tr>\n<tr class=\"separator:a555ff53b3f89ca019056c360b0bfc5c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9714e14ed563969119b449ef12e91895\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a9714e14ed563969119b449ef12e91895\">speed</a></td></tr>\n<tr class=\"separator:a9714e14ed563969119b449ef12e91895\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbbc4f3b282741154c1181f8a18a3a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1bbbc4f3b282741154c1181f8a18a3a4\">pause</a></td></tr>\n<tr class=\"separator:a1bbbc4f3b282741154c1181f8a18a3a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa788454a5e45c01dbe6fb7b761b7023\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#aaa788454a5e45c01dbe6fb7b761b7023\">distance</a></td></tr>\n<tr class=\"separator:aaa788454a5e45c01dbe6fb7b761b7023\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad60dfce80dbf4b91268189f8e8192e4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad60dfce80dbf4b91268189f8e8192e4a\">sound</a></td></tr>\n<tr class=\"separator:ad60dfce80dbf4b91268189f8e8192e4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c68359927f7a1bc86c732ce03e90cfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a3c68359927f7a1bc86c732ce03e90cfd\">parent</a></td></tr>\n<tr class=\"separator:a3c68359927f7a1bc86c732ce03e90cfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19e76d40a1d62f13df26003c09109c81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a19e76d40a1d62f13df26003c09109c81\">start_pos</a></td></tr>\n<tr class=\"separator:a19e76d40a1d62f13df26003c09109c81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1000130eb243c80e6eb38d8a899395d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a1000130eb243c80e6eb38d8a899395d5\">start_rot</a></td></tr>\n<tr class=\"separator:a1000130eb243c80e6eb38d8a899395d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a083201a9171859788cfd25ee7312acd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a083201a9171859788cfd25ee7312acd5\">progress</a></td></tr>\n<tr class=\"separator:a083201a9171859788cfd25ee7312acd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5054dd428862bd13f45db99134430c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ae5054dd428862bd13f45db99134430c6\">timer</a></td></tr>\n<tr class=\"separator:ae5054dd428862bd13f45db99134430c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7925441f73d7a4370a35b486c3186d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#ad7925441f73d7a4370a35b486c3186d4\">state</a></td></tr>\n<tr class=\"separator:ad7925441f73d7a4370a35b486c3186d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50092350933e31bc412c76464213d103\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html#a50092350933e31bc412c76464213d103\">last_activate</a></td></tr>\n<tr class=\"separator:a50092350933e31bc412c76464213d103\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Essentially a func_door. </p>\n<p >It can open. It can close. It responds to <a class=\"el\" href=\"structtram_1_1_signal.html\" title=\"Message template.\">Signal</a> inputs and gives out outputs. It can be a door. It can be a lift. It can even be a button. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a221be63630cad47bb512e37e46292967\" name=\"a221be63630cad47bb512e37e46292967\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a221be63630cad47bb512e37e46292967\">&#9670;&nbsp;</a></span>Button()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Button::Button </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"adac9d696ad3b4c49a2483e901c8bce50\" name=\"adac9d696ad3b4c49a2483e901c8bce50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adac9d696ad3b4c49a2483e901c8bce50\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Reimplemented from <a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a8b85987eae1bce1f842e5cd10e66731d\" name=\"a8b85987eae1bce1f842e5cd10e66731d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b85987eae1bce1f842e5cd10e66731d\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Button::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a58b20350e9ae84e25101df267799c326\" name=\"a58b20350e9ae84e25101df267799c326\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58b20350e9ae84e25101df267799c326\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2e51fe470a68d2b4e96f31c1f2bcf9a7\" name=\"a2e51fe470a68d2b4e96f31c1f2bcf9a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e51fe470a68d2b4e96f31c1f2bcf9a7\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac5c7a92ba0afd910db242d415e16af8b\" name=\"ac5c7a92ba0afd910db242d415e16af8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5c7a92ba0afd910db242d415e16af8b\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04e7fa8e0544eb81cb54b8d722b36d5f\" name=\"a04e7fa8e0544eb81cb54b8d722b36d5f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04e7fa8e0544eb81cb54b8d722b36d5f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af421f5da2f128de4d99add5ff74a4bf7\" name=\"af421f5da2f128de4d99add5ff74a4bf7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af421f5da2f128de4d99add5ff74a4bf7\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a8f4a4411eada2deb38aad413e5f5150d\" name=\"a8f4a4411eada2deb38aad413e5f5150d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f4a4411eada2deb38aad413e5f5150d\">&#9670;&nbsp;</a></span>SwitchState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::SwitchState </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b0203823f8dd8cdd74f6fc389e6a1be\" name=\"a3b0203823f8dd8cdd74f6fc389e6a1be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b0203823f8dd8cdd74f6fc389e6a1be\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"acd3e33d2f7f127886f0e9fc9ee31a611\" name=\"acd3e33d2f7f127886f0e9fc9ee31a611\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd3e33d2f7f127886f0e9fc9ee31a611\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Button::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a555ff53b3f89ca019056c360b0bfc5c6\" name=\"a555ff53b3f89ca019056c360b0bfc5c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a555ff53b3f89ca019056c360b0bfc5c6\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Design::Button::direction</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa788454a5e45c01dbe6fb7b761b7023\" name=\"aaa788454a5e45c01dbe6fb7b761b7023\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa788454a5e45c01dbe6fb7b761b7023\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::Button::distance</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a225e77c725ec6913aaddec5349789235\" name=\"a225e77c725ec6913aaddec5349789235\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a225e77c725ec6913aaddec5349789235\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Design::Button::flags</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a50092350933e31bc412c76464213d103\" name=\"a50092350933e31bc412c76464213d103\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50092350933e31bc412c76464213d103\">&#9670;&nbsp;</a></span>last_activate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::Button::last_activate</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b75738d77e7173d641ab110872ed86e\" name=\"a9b75738d77e7173d641ab110872ed86e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b75738d77e7173d641ab110872ed86e\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Button::lightmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adc208338901d63fc6498af907704a6e2\" name=\"adc208338901d63fc6498af907704a6e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc208338901d63fc6498af907704a6e2\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Button::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1845b85edabb9ec928369d9383c89acf\" name=\"a1845b85edabb9ec928369d9383c89acf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1845b85edabb9ec928369d9383c89acf\">&#9670;&nbsp;</a></span>origin</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Design::Button::origin</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c68359927f7a1bc86c732ce03e90cfd\" name=\"a3c68359927f7a1bc86c732ce03e90cfd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c68359927f7a1bc86c732ce03e90cfd\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Button::parent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1bbbc4f3b282741154c1181f8a18a3a4\" name=\"a1bbbc4f3b282741154c1181f8a18a3a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bbbc4f3b282741154c1181f8a18a3a4\">&#9670;&nbsp;</a></span>pause</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::Button::pause</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8de95f847e402ba94f60ae14a4f36dd3\" name=\"a8de95f847e402ba94f60ae14a4f36dd3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8de95f847e402ba94f60ae14a4f36dd3\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Button::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a083201a9171859788cfd25ee7312acd5\" name=\"a083201a9171859788cfd25ee7312acd5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a083201a9171859788cfd25ee7312acd5\">&#9670;&nbsp;</a></span>progress</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::Button::progress</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad52cd4d69bb8a4cb5eec5590d232e511\" name=\"ad52cd4d69bb8a4cb5eec5590d232e511\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad52cd4d69bb8a4cb5eec5590d232e511\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Button::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad60dfce80dbf4b91268189f8e8192e4a\" name=\"ad60dfce80dbf4b91268189f8e8192e4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad60dfce80dbf4b91268189f8e8192e4a\">&#9670;&nbsp;</a></span>sound</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Button::sound</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9714e14ed563969119b449ef12e91895\" name=\"a9714e14ed563969119b449ef12e91895\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9714e14ed563969119b449ef12e91895\">&#9670;&nbsp;</a></span>speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::Button::speed</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a19e76d40a1d62f13df26003c09109c81\" name=\"a19e76d40a1d62f13df26003c09109c81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19e76d40a1d62f13df26003c09109c81\">&#9670;&nbsp;</a></span>start_pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Design::Button::start_pos</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1000130eb243c80e6eb38d8a899395d5\" name=\"a1000130eb243c80e6eb38d8a899395d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1000130eb243c80e6eb38d8a899395d5\">&#9670;&nbsp;</a></span>start_rot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Design::Button::start_rot</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad7925441f73d7a4370a35b486c3186d4\" name=\"ad7925441f73d7a4370a35b486c3186d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7925441f73d7a4370a35b486c3186d4\">&#9670;&nbsp;</a></span>state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::Button::state</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a575dbad9b1f47ab7f3aace71c67d9a46\" name=\"a575dbad9b1f47ab7f3aace71c67d9a46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a575dbad9b1f47ab7f3aace71c67d9a46\">&#9670;&nbsp;</a></span>tick</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a> tram::Ext::Design::Button::tick</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae5054dd428862bd13f45db99134430c6\" name=\"ae5054dd428862bd13f45db99134430c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5054dd428862bd13f45db99134430c6\">&#9670;&nbsp;</a></span>timer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::Button::timer</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_debug_shape-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">DebugShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DebugShape Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a5713f33309205faf7b91b0956505130a\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#af69440f9eb81f3220964f83dbda799a2\">DebugShape</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#ab1fa74e292bd227e67f10b5e72bc1d56\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a7536a6c7bf37414d6013d5f53bc59e31\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a8cbdcb2986d9d1f23bbb7d9e729921ca\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a2942f0afba4854316b1aa9124402b485\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a39a801501eb36277308cab39d6386865\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a8b7c0e7e080c76387e8fedf203f18719\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a6d836dc0c40015c37246e63dcd15abef\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a3b161918b4274891dc1b313768002852\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a74703fbd4ca3558b0b5378b72005248e\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a1387704940c078e3c14bf2aefb6b393e\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">tram::Ext::Design::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_debug_shape.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::DebugShape Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">DebugShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DebugShape Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::DebugShape:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.png\" usemap=\"#tram::Ext::Design::DebugShape_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::DebugShape_map\" name=\"tram::Ext::Design::DebugShape_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,183,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af69440f9eb81f3220964f83dbda799a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#af69440f9eb81f3220964f83dbda799a2\">DebugShape</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:af69440f9eb81f3220964f83dbda799a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1387704940c078e3c14bf2aefb6b393e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a1387704940c078e3c14bf2aefb6b393e\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a1387704940c078e3c14bf2aefb6b393e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b161918b4274891dc1b313768002852\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a3b161918b4274891dc1b313768002852\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a3b161918b4274891dc1b313768002852\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1fa74e292bd227e67f10b5e72bc1d56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#ab1fa74e292bd227e67f10b5e72bc1d56\">Load</a> ()</td></tr>\n<tr class=\"separator:ab1fa74e292bd227e67f10b5e72bc1d56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74703fbd4ca3558b0b5378b72005248e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a74703fbd4ca3558b0b5378b72005248e\">Unload</a> ()</td></tr>\n<tr class=\"separator:a74703fbd4ca3558b0b5378b72005248e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d836dc0c40015c37246e63dcd15abef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a6d836dc0c40015c37246e63dcd15abef\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a6d836dc0c40015c37246e63dcd15abef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7536a6c7bf37414d6013d5f53bc59e31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a7536a6c7bf37414d6013d5f53bc59e31\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a7536a6c7bf37414d6013d5f53bc59e31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a39a801501eb36277308cab39d6386865\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a39a801501eb36277308cab39d6386865\">Register</a> ()</td></tr>\n<tr class=\"separator:a39a801501eb36277308cab39d6386865\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a8b7c0e7e080c76387e8fedf203f18719\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a8b7c0e7e080c76387e8fedf203f18719\">rendercomponent</a></td></tr>\n<tr class=\"separator:a8b7c0e7e080c76387e8fedf203f18719\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2942f0afba4854316b1aa9124402b485\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a2942f0afba4854316b1aa9124402b485\">physicscomponent</a></td></tr>\n<tr class=\"separator:a2942f0afba4854316b1aa9124402b485\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cbdcb2986d9d1f23bbb7d9e729921ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a8cbdcb2986d9d1f23bbb7d9e729921ca\">model</a></td></tr>\n<tr class=\"separator:a8cbdcb2986d9d1f23bbb7d9e729921ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5713f33309205faf7b91b0956505130a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html#a5713f33309205faf7b91b0956505130a\">collmodel</a></td></tr>\n<tr class=\"separator:a5713f33309205faf7b91b0956505130a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af69440f9eb81f3220964f83dbda799a2\" name=\"af69440f9eb81f3220964f83dbda799a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af69440f9eb81f3220964f83dbda799a2\">&#9670;&nbsp;</a></span>DebugShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::DebugShape::DebugShape </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab1fa74e292bd227e67f10b5e72bc1d56\" name=\"ab1fa74e292bd227e67f10b5e72bc1d56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1fa74e292bd227e67f10b5e72bc1d56\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7536a6c7bf37414d6013d5f53bc59e31\" name=\"a7536a6c7bf37414d6013d5f53bc59e31\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7536a6c7bf37414d6013d5f53bc59e31\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a39a801501eb36277308cab39d6386865\" name=\"a39a801501eb36277308cab39d6386865\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39a801501eb36277308cab39d6386865\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::DebugShape::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d836dc0c40015c37246e63dcd15abef\" name=\"a6d836dc0c40015c37246e63dcd15abef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d836dc0c40015c37246e63dcd15abef\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3b161918b4274891dc1b313768002852\" name=\"a3b161918b4274891dc1b313768002852\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b161918b4274891dc1b313768002852\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a74703fbd4ca3558b0b5378b72005248e\" name=\"a74703fbd4ca3558b0b5378b72005248e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74703fbd4ca3558b0b5378b72005248e\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1387704940c078e3c14bf2aefb6b393e\" name=\"a1387704940c078e3c14bf2aefb6b393e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1387704940c078e3c14bf2aefb6b393e\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugShape::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5713f33309205faf7b91b0956505130a\" name=\"a5713f33309205faf7b91b0956505130a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5713f33309205faf7b91b0956505130a\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DebugShape::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cbdcb2986d9d1f23bbb7d9e729921ca\" name=\"a8cbdcb2986d9d1f23bbb7d9e729921ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cbdcb2986d9d1f23bbb7d9e729921ca\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DebugShape::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2942f0afba4854316b1aa9124402b485\" name=\"a2942f0afba4854316b1aa9124402b485\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2942f0afba4854316b1aa9124402b485\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::DebugShape::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8b7c0e7e080c76387e8fedf203f18719\" name=\"a8b7c0e7e080c76387e8fedf203f18719\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b7c0e7e080c76387e8fedf203f18719\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::DebugShape::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_debug_text-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">DebugText</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DebugText Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#ab6a2204d1bcdc19f32b3bbb29bdcda4b\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a64e632fe0eba1d2d8de19978014b7b0b\">DebugText</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#adb441493bf2406eccade7d5a622add89\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a9e17f0f85c7e61f2345445b5448199c0\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#ac8449958dd7441389b55dae3c3e349a1\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a361e58808022af2caafe62baaa592b8b\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a69317429bae0b080fa90ecb223963e86\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a58f8cf13b48abdcdb6fc48a46151a4af\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a3d85161557f4b001a908ca4dfa1785aa\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a24aa236feae473430ec1be43ba4d0150\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a73e8a9ab8b147e0fd4bbd2df19a67635\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a24278833b47522410568b503f11c619a\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">tram::Ext::Design::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_debug_text.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::DebugText Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">DebugText</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_debug_text-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DebugText Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::DebugText:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_debug_text.png\" usemap=\"#tram::Ext::Design::DebugText_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::DebugText_map\" name=\"tram::Ext::Design::DebugText_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,170,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a64e632fe0eba1d2d8de19978014b7b0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a64e632fe0eba1d2d8de19978014b7b0b\">DebugText</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a64e632fe0eba1d2d8de19978014b7b0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24278833b47522410568b503f11c619a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a24278833b47522410568b503f11c619a\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a24278833b47522410568b503f11c619a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24aa236feae473430ec1be43ba4d0150\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a24aa236feae473430ec1be43ba4d0150\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a24aa236feae473430ec1be43ba4d0150\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb441493bf2406eccade7d5a622add89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#adb441493bf2406eccade7d5a622add89\">Load</a> ()</td></tr>\n<tr class=\"separator:adb441493bf2406eccade7d5a622add89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73e8a9ab8b147e0fd4bbd2df19a67635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a73e8a9ab8b147e0fd4bbd2df19a67635\">Unload</a> ()</td></tr>\n<tr class=\"separator:a73e8a9ab8b147e0fd4bbd2df19a67635\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d85161557f4b001a908ca4dfa1785aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a3d85161557f4b001a908ca4dfa1785aa\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a3d85161557f4b001a908ca4dfa1785aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e17f0f85c7e61f2345445b5448199c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a9e17f0f85c7e61f2345445b5448199c0\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a9e17f0f85c7e61f2345445b5448199c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a69317429bae0b080fa90ecb223963e86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a69317429bae0b080fa90ecb223963e86\">Register</a> ()</td></tr>\n<tr class=\"separator:a69317429bae0b080fa90ecb223963e86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a58f8cf13b48abdcdb6fc48a46151a4af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a58f8cf13b48abdcdb6fc48a46151a4af\">rendercomponent</a></td></tr>\n<tr class=\"separator:a58f8cf13b48abdcdb6fc48a46151a4af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a361e58808022af2caafe62baaa592b8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#a361e58808022af2caafe62baaa592b8b\">physicscomponent</a></td></tr>\n<tr class=\"separator:a361e58808022af2caafe62baaa592b8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8449958dd7441389b55dae3c3e349a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#ac8449958dd7441389b55dae3c3e349a1\">model</a></td></tr>\n<tr class=\"separator:ac8449958dd7441389b55dae3c3e349a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6a2204d1bcdc19f32b3bbb29bdcda4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html#ab6a2204d1bcdc19f32b3bbb29bdcda4b\">collmodel</a></td></tr>\n<tr class=\"separator:ab6a2204d1bcdc19f32b3bbb29bdcda4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a64e632fe0eba1d2d8de19978014b7b0b\" name=\"a64e632fe0eba1d2d8de19978014b7b0b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64e632fe0eba1d2d8de19978014b7b0b\">&#9670;&nbsp;</a></span>DebugText()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::DebugText::DebugText </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"adb441493bf2406eccade7d5a622add89\" name=\"adb441493bf2406eccade7d5a622add89\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb441493bf2406eccade7d5a622add89\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a9e17f0f85c7e61f2345445b5448199c0\" name=\"a9e17f0f85c7e61f2345445b5448199c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e17f0f85c7e61f2345445b5448199c0\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a69317429bae0b080fa90ecb223963e86\" name=\"a69317429bae0b080fa90ecb223963e86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69317429bae0b080fa90ecb223963e86\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::DebugText::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d85161557f4b001a908ca4dfa1785aa\" name=\"a3d85161557f4b001a908ca4dfa1785aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d85161557f4b001a908ca4dfa1785aa\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a24aa236feae473430ec1be43ba4d0150\" name=\"a24aa236feae473430ec1be43ba4d0150\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24aa236feae473430ec1be43ba4d0150\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a73e8a9ab8b147e0fd4bbd2df19a67635\" name=\"a73e8a9ab8b147e0fd4bbd2df19a67635\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73e8a9ab8b147e0fd4bbd2df19a67635\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a24278833b47522410568b503f11c619a\" name=\"a24278833b47522410568b503f11c619a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24278833b47522410568b503f11c619a\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DebugText::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab6a2204d1bcdc19f32b3bbb29bdcda4b\" name=\"ab6a2204d1bcdc19f32b3bbb29bdcda4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6a2204d1bcdc19f32b3bbb29bdcda4b\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DebugText::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac8449958dd7441389b55dae3c3e349a1\" name=\"ac8449958dd7441389b55dae3c3e349a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8449958dd7441389b55dae3c3e349a1\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DebugText::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a361e58808022af2caafe62baaa592b8b\" name=\"a361e58808022af2caafe62baaa592b8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a361e58808022af2caafe62baaa592b8b\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::DebugText::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58f8cf13b48abdcdb6fc48a46151a4af\" name=\"a58f8cf13b48abdcdb6fc48a46151a4af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58f8cf13b48abdcdb6fc48a46151a4af\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::DebugText::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_decoration-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">Decoration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Decoration Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a98a34c574719f7bc5641b433d816839a\">Decoration</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a890b0d2ecf7f50673405ae96f1a864d7a2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a9a07e710ff8054a53f4105c13e702c35\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a0466988b3db173e03ff1994c9999a5da\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#af57acc9261b2e5daaf14ce27189e351e\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#aa0962d1f15fe3f31f0050e1ebb5a8836\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a5159aec5dd55c461d906676e01c1d34e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a4c73d6788c20ee384480c8f55a309d03\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a968979aec899c1a1f883505cb7242b9b\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#ac1d310574b28f5aecf3275913cd0672a\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a>(bool auto_load)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a65a039b7fe3d3114dfcb61df23c4f21c\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a>(bool persistent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a738454bd9569daa10240537dee1a219e\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#adcc8918b9ea557b418c6db965eccd002\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">tram::Ext::Design::Decoration</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_decoration.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Decoration Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html\">Decoration</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_decoration-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Decoration Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Decoration:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_decoration.png\" usemap=\"#tram::Ext::Design::Decoration_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Decoration_map\" name=\"tram::Ext::Design::Decoration_map\">\n<area href=\"classtram_1_1_entity.html\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,172,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a98a34c574719f7bc5641b433d816839a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a98a34c574719f7bc5641b433d816839a\">Decoration</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a98a34c574719f7bc5641b433d816839a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcc8918b9ea557b418c6db965eccd002\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#adcc8918b9ea557b418c6db965eccd002\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:adcc8918b9ea557b418c6db965eccd002\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65a039b7fe3d3114dfcb61df23c4f21c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a65a039b7fe3d3114dfcb61df23c4f21c\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a65a039b7fe3d3114dfcb61df23c4f21c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0466988b3db173e03ff1994c9999a5da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a0466988b3db173e03ff1994c9999a5da\">Load</a> ()</td></tr>\n<tr class=\"separator:a0466988b3db173e03ff1994c9999a5da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a738454bd9569daa10240537dee1a219e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a738454bd9569daa10240537dee1a219e\">Unload</a> ()</td></tr>\n<tr class=\"separator:a738454bd9569daa10240537dee1a219e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1d310574b28f5aecf3275913cd0672a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#ac1d310574b28f5aecf3275913cd0672a\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ac1d310574b28f5aecf3275913cd0672a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af57acc9261b2e5daaf14ce27189e351e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#af57acc9261b2e5daaf14ce27189e351e\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:af57acc9261b2e5daaf14ce27189e351e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a> () const</td></tr>\n<tr class=\"separator:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a> ()</td></tr>\n<tr class=\"separator:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a> (bool <a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a>)</td></tr>\n<tr class=\"separator:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a> (bool persistent)</td></tr>\n<tr class=\"separator:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a4c73d6788c20ee384480c8f55a309d03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a4c73d6788c20ee384480c8f55a309d03\">Register</a> ()</td></tr>\n<tr class=\"separator:a4c73d6788c20ee384480c8f55a309d03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a> ()</td></tr>\n<tr class=\"memdesc:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates all of the entities in the update list.  <a href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a968979aec899c1a1f883505cb7242b9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a968979aec899c1a1f883505cb7242b9b\">rendercomponent</a></td></tr>\n<tr class=\"separator:a968979aec899c1a1f883505cb7242b9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5159aec5dd55c461d906676e01c1d34e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a5159aec5dd55c461d906676e01c1d34e\">physicscomponent</a></td></tr>\n<tr class=\"separator:a5159aec5dd55c461d906676e01c1d34e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0962d1f15fe3f31f0050e1ebb5a8836\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#aa0962d1f15fe3f31f0050e1ebb5a8836\">model</a></td></tr>\n<tr class=\"separator:aa0962d1f15fe3f31f0050e1ebb5a8836\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a07e710ff8054a53f4105c13e702c35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_decoration.html#a9a07e710ff8054a53f4105c13e702c35\">lightmap</a></td></tr>\n<tr class=\"separator:a9a07e710ff8054a53f4105c13e702c35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a> = true</td></tr>\n<tr class=\"separator:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a> = false</td></tr>\n<tr class=\"separator:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a> = true</td></tr>\n<tr class=\"separator:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a> = false</td></tr>\n<tr class=\"separator:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a> = false</td></tr>\n<tr class=\"separator:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a> = true</td></tr>\n<tr class=\"separator:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a890b0d2ecf7f50673405ae96f1a864d7 inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a890b0d2ecf7f50673405ae96f1a864d7a2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a890b0d2ecf7f50673405ae96f1a864d7 inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a> ()</td></tr>\n<tr class=\"memdesc:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds entity to update list.  <a href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a> ()</td></tr>\n<tr class=\"memdesc:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Remove entity from the update list.  <a href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">More...</a><br /></td></tr>\n<tr class=\"separator:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a98a34c574719f7bc5641b433d816839a\" name=\"a98a34c574719f7bc5641b433d816839a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98a34c574719f7bc5641b433d816839a\">&#9670;&nbsp;</a></span>Decoration()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Decoration::Decoration </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0466988b3db173e03ff1994c9999a5da\" name=\"a0466988b3db173e03ff1994c9999a5da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0466988b3db173e03ff1994c9999a5da\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af57acc9261b2e5daaf14ce27189e351e\" name=\"af57acc9261b2e5daaf14ce27189e351e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af57acc9261b2e5daaf14ce27189e351e\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a4c73d6788c20ee384480c8f55a309d03\" name=\"a4c73d6788c20ee384480c8f55a309d03\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c73d6788c20ee384480c8f55a309d03\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Decoration::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac1d310574b28f5aecf3275913cd0672a\" name=\"ac1d310574b28f5aecf3275913cd0672a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1d310574b28f5aecf3275913cd0672a\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a65a039b7fe3d3114dfcb61df23c4f21c\" name=\"a65a039b7fe3d3114dfcb61df23c4f21c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65a039b7fe3d3114dfcb61df23c4f21c\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a738454bd9569daa10240537dee1a219e\" name=\"a738454bd9569daa10240537dee1a219e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a738454bd9569daa10240537dee1a219e\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"adcc8918b9ea557b418c6db965eccd002\" name=\"adcc8918b9ea557b418c6db965eccd002\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adcc8918b9ea557b418c6db965eccd002\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Decoration::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9a07e710ff8054a53f4105c13e702c35\" name=\"a9a07e710ff8054a53f4105c13e702c35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a07e710ff8054a53f4105c13e702c35\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Decoration::lightmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0962d1f15fe3f31f0050e1ebb5a8836\" name=\"aa0962d1f15fe3f31f0050e1ebb5a8836\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0962d1f15fe3f31f0050e1ebb5a8836\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Decoration::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5159aec5dd55c461d906676e01c1d34e\" name=\"a5159aec5dd55c461d906676e01c1d34e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5159aec5dd55c461d906676e01c1d34e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Decoration::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a968979aec899c1a1f883505cb7242b9b\" name=\"a968979aec899c1a1f883505cb7242b9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a968979aec899c1a1f883505cb7242b9b\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Decoration::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_door-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">Door</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Door Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ace1ab0b7e83360408dbfc02875f9e495\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a95d71fb02e023058f53b214d10da5183\">Door</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#af6d85bb6ff408178270a2248de1f2a35\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a2bdc5c79368f35d3bbe9a91a11195ad0\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a25c3e6eb6c2784c72c2157651b5f6bb9\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a3fe8b77b5fa3790dc306e5fc0a68eaee\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a>(query_t query)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#aac392ccbda8603a326f8ab472ab2356f\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ae226d8e6cab0660c56dc5117475b2805\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ad00858435b3588a6976b604dfdd0cf09\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a>(bool auto_load)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a1b141857e64de4a6b7a93ae5467813ef\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a>(bool persistent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a5bc329d0e46f49a725ade39e53147529\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a84d52644320b90ff3be31fe92951fec5\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">tram::Ext::Design::Door</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_door.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Door Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html\">Door</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_door-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Door Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Door:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_door.png\" usemap=\"#tram::Ext::Design::Door_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Door_map\" name=\"tram::Ext::Design::Door_map\">\n<area href=\"classtram_1_1_entity.html\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,138,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a95d71fb02e023058f53b214d10da5183\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a95d71fb02e023058f53b214d10da5183\">Door</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a95d71fb02e023058f53b214d10da5183\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84d52644320b90ff3be31fe92951fec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a84d52644320b90ff3be31fe92951fec5\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a84d52644320b90ff3be31fe92951fec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b141857e64de4a6b7a93ae5467813ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a1b141857e64de4a6b7a93ae5467813ef\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a1b141857e64de4a6b7a93ae5467813ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d85bb6ff408178270a2248de1f2a35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#af6d85bb6ff408178270a2248de1f2a35\">Load</a> ()</td></tr>\n<tr class=\"separator:af6d85bb6ff408178270a2248de1f2a35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bc329d0e46f49a725ade39e53147529\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a5bc329d0e46f49a725ade39e53147529\">Unload</a> ()</td></tr>\n<tr class=\"separator:a5bc329d0e46f49a725ade39e53147529\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad00858435b3588a6976b604dfdd0cf09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ad00858435b3588a6976b604dfdd0cf09\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ad00858435b3588a6976b604dfdd0cf09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2bdc5c79368f35d3bbe9a91a11195ad0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a2bdc5c79368f35d3bbe9a91a11195ad0\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a2bdc5c79368f35d3bbe9a91a11195ad0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a> () const</td></tr>\n<tr class=\"separator:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a> ()</td></tr>\n<tr class=\"separator:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a> (bool <a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a>)</td></tr>\n<tr class=\"separator:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a> (bool persistent)</td></tr>\n<tr class=\"separator:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a> (<a class=\"el\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">query_t</a> query)</td></tr>\n<tr class=\"separator:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aac392ccbda8603a326f8ab472ab2356f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#aac392ccbda8603a326f8ab472ab2356f\">Register</a> ()</td></tr>\n<tr class=\"separator:aac392ccbda8603a326f8ab472ab2356f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a> ()</td></tr>\n<tr class=\"memdesc:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates all of the entities in the update list.  <a href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ae226d8e6cab0660c56dc5117475b2805\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ae226d8e6cab0660c56dc5117475b2805\">rendercomponent</a></td></tr>\n<tr class=\"separator:ae226d8e6cab0660c56dc5117475b2805\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3fe8b77b5fa3790dc306e5fc0a68eaee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a3fe8b77b5fa3790dc306e5fc0a68eaee\">physicscomponent</a></td></tr>\n<tr class=\"separator:a3fe8b77b5fa3790dc306e5fc0a68eaee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c3e6eb6c2784c72c2157651b5f6bb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#a25c3e6eb6c2784c72c2157651b5f6bb9\">model</a></td></tr>\n<tr class=\"separator:a25c3e6eb6c2784c72c2157651b5f6bb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace1ab0b7e83360408dbfc02875f9e495\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_door.html#ace1ab0b7e83360408dbfc02875f9e495\">collmodel</a></td></tr>\n<tr class=\"separator:ace1ab0b7e83360408dbfc02875f9e495\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a> = true</td></tr>\n<tr class=\"separator:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a> = false</td></tr>\n<tr class=\"separator:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a> = true</td></tr>\n<tr class=\"separator:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a> = false</td></tr>\n<tr class=\"separator:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a> = false</td></tr>\n<tr class=\"separator:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a> = true</td></tr>\n<tr class=\"separator:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a> ()</td></tr>\n<tr class=\"memdesc:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds entity to update list.  <a href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a> ()</td></tr>\n<tr class=\"memdesc:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Remove entity from the update list.  <a href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">More...</a><br /></td></tr>\n<tr class=\"separator:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a95d71fb02e023058f53b214d10da5183\" name=\"a95d71fb02e023058f53b214d10da5183\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95d71fb02e023058f53b214d10da5183\">&#9670;&nbsp;</a></span>Door()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Door::Door </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af6d85bb6ff408178270a2248de1f2a35\" name=\"af6d85bb6ff408178270a2248de1f2a35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6d85bb6ff408178270a2248de1f2a35\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2bdc5c79368f35d3bbe9a91a11195ad0\" name=\"a2bdc5c79368f35d3bbe9a91a11195ad0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2bdc5c79368f35d3bbe9a91a11195ad0\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aac392ccbda8603a326f8ab472ab2356f\" name=\"aac392ccbda8603a326f8ab472ab2356f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac392ccbda8603a326f8ab472ab2356f\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Door::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad00858435b3588a6976b604dfdd0cf09\" name=\"ad00858435b3588a6976b604dfdd0cf09\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad00858435b3588a6976b604dfdd0cf09\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1b141857e64de4a6b7a93ae5467813ef\" name=\"a1b141857e64de4a6b7a93ae5467813ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b141857e64de4a6b7a93ae5467813ef\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a5bc329d0e46f49a725ade39e53147529\" name=\"a5bc329d0e46f49a725ade39e53147529\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bc329d0e46f49a725ade39e53147529\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a84d52644320b90ff3be31fe92951fec5\" name=\"a84d52644320b90ff3be31fe92951fec5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84d52644320b90ff3be31fe92951fec5\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Door::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ace1ab0b7e83360408dbfc02875f9e495\" name=\"ace1ab0b7e83360408dbfc02875f9e495\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace1ab0b7e83360408dbfc02875f9e495\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Door::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25c3e6eb6c2784c72c2157651b5f6bb9\" name=\"a25c3e6eb6c2784c72c2157651b5f6bb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25c3e6eb6c2784c72c2157651b5f6bb9\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Door::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3fe8b77b5fa3790dc306e5fc0a68eaee\" name=\"a3fe8b77b5fa3790dc306e5fc0a68eaee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3fe8b77b5fa3790dc306e5fc0a68eaee\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Door::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae226d8e6cab0660c56dc5117475b2805\" name=\"ae226d8e6cab0660c56dc5117475b2805\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae226d8e6cab0660c56dc5117475b2805\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Door::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/design/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_pickup-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">Pickup</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Pickup Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a64b79acbe1146464ac55e028a3f21fba\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ad224b57ff8b4f038dcfb89b4a5f6c334\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1bbf293c2c53f213570041d9f6d38104\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ae0cac058b9e8222e54f2406ae8fcbab8\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#adf6377baaa5bfed1609fc50997476ea1\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#aadac3f4277c1f9a74d7ff37bf98cc247\">Pickup</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ae109787546bdd7034b96d6ecca628d4f\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a02186d7ad8683222604b366f461fb22a\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a48371cc63d45da4579abaf55fef7e031\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a91db5b968c48af441936f11b8738d272\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1d1d1ebe1b18a98a34ad96db83fe084a\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1aaa15ce347aec46ae7b8ea293f58bd8\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">tram::Ext::Design::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_pickup.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Pickup Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">Pickup</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_pickup-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Pickup Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Pickup:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_pickup.png\" usemap=\"#tram::Ext::Design::Pickup_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Pickup_map\" name=\"tram::Ext::Design::Pickup_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,148,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aadac3f4277c1f9a74d7ff37bf98cc247\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#aadac3f4277c1f9a74d7ff37bf98cc247\">Pickup</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:aadac3f4277c1f9a74d7ff37bf98cc247\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1aaa15ce347aec46ae7b8ea293f58bd8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1aaa15ce347aec46ae7b8ea293f58bd8\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a1aaa15ce347aec46ae7b8ea293f58bd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91db5b968c48af441936f11b8738d272\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a91db5b968c48af441936f11b8738d272\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a91db5b968c48af441936f11b8738d272\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad224b57ff8b4f038dcfb89b4a5f6c334\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ad224b57ff8b4f038dcfb89b4a5f6c334\">Load</a> ()</td></tr>\n<tr class=\"separator:ad224b57ff8b4f038dcfb89b4a5f6c334\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d1d1ebe1b18a98a34ad96db83fe084a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1d1d1ebe1b18a98a34ad96db83fe084a\">Unload</a> ()</td></tr>\n<tr class=\"separator:a1d1d1ebe1b18a98a34ad96db83fe084a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48371cc63d45da4579abaf55fef7e031\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a48371cc63d45da4579abaf55fef7e031\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a48371cc63d45da4579abaf55fef7e031\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bbf293c2c53f213570041d9f6d38104\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a1bbf293c2c53f213570041d9f6d38104\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a1bbf293c2c53f213570041d9f6d38104\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ae109787546bdd7034b96d6ecca628d4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ae109787546bdd7034b96d6ecca628d4f\">Register</a> ()</td></tr>\n<tr class=\"separator:ae109787546bdd7034b96d6ecca628d4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a02186d7ad8683222604b366f461fb22a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a02186d7ad8683222604b366f461fb22a\">rendercomponent</a></td></tr>\n<tr class=\"separator:a02186d7ad8683222604b366f461fb22a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf6377baaa5bfed1609fc50997476ea1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#adf6377baaa5bfed1609fc50997476ea1\">physicscomponent</a></td></tr>\n<tr class=\"separator:adf6377baaa5bfed1609fc50997476ea1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0cac058b9e8222e54f2406ae8fcbab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#ae0cac058b9e8222e54f2406ae8fcbab8\">model</a></td></tr>\n<tr class=\"separator:ae0cac058b9e8222e54f2406ae8fcbab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64b79acbe1146464ac55e028a3f21fba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html#a64b79acbe1146464ac55e028a3f21fba\">collmodel</a></td></tr>\n<tr class=\"separator:a64b79acbe1146464ac55e028a3f21fba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aadac3f4277c1f9a74d7ff37bf98cc247\" name=\"aadac3f4277c1f9a74d7ff37bf98cc247\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadac3f4277c1f9a74d7ff37bf98cc247\">&#9670;&nbsp;</a></span>Pickup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Pickup::Pickup </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad224b57ff8b4f038dcfb89b4a5f6c334\" name=\"ad224b57ff8b4f038dcfb89b4a5f6c334\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad224b57ff8b4f038dcfb89b4a5f6c334\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1bbf293c2c53f213570041d9f6d38104\" name=\"a1bbf293c2c53f213570041d9f6d38104\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bbf293c2c53f213570041d9f6d38104\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae109787546bdd7034b96d6ecca628d4f\" name=\"ae109787546bdd7034b96d6ecca628d4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae109787546bdd7034b96d6ecca628d4f\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Pickup::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48371cc63d45da4579abaf55fef7e031\" name=\"a48371cc63d45da4579abaf55fef7e031\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48371cc63d45da4579abaf55fef7e031\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a91db5b968c48af441936f11b8738d272\" name=\"a91db5b968c48af441936f11b8738d272\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91db5b968c48af441936f11b8738d272\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1d1d1ebe1b18a98a34ad96db83fe084a\" name=\"a1d1d1ebe1b18a98a34ad96db83fe084a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1d1ebe1b18a98a34ad96db83fe084a\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1aaa15ce347aec46ae7b8ea293f58bd8\" name=\"a1aaa15ce347aec46ae7b8ea293f58bd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1aaa15ce347aec46ae7b8ea293f58bd8\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Pickup::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a64b79acbe1146464ac55e028a3f21fba\" name=\"a64b79acbe1146464ac55e028a3f21fba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64b79acbe1146464ac55e028a3f21fba\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Pickup::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0cac058b9e8222e54f2406ae8fcbab8\" name=\"ae0cac058b9e8222e54f2406ae8fcbab8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0cac058b9e8222e54f2406ae8fcbab8\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Pickup::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf6377baaa5bfed1609fc50997476ea1\" name=\"adf6377baaa5bfed1609fc50997476ea1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf6377baaa5bfed1609fc50997476ea1\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Pickup::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02186d7ad8683222604b366f461fb22a\" name=\"a02186d7ad8683222604b366f461fb22a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02186d7ad8683222604b366f461fb22a\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Pickup::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_rotating-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">Rotating</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Rotating Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aab0fe2d2e72ee5a35a723de3a5f6268e\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a93f36fcc211fcc6f757030bbf572a0d4\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aa02a62de3332ba70c7c62b9b3f4caf91\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#adad8e42b6004903ce0aaebec1396a25d\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#ad82f21585e6aa0acdbdf9f82a47f72e5\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a>(query_t query)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a624f6d4dadff83798f63dfea3263ac7d\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a64ef628f4acacdced052749db139640b\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a67bf72d5b2d84ccdbbf29de024adb01d\">Rotating</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aa17cc5e04281e0c107f3d3b99a1bcf59\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a>(bool auto_load)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a05a3c268dcc3974bc33dcc87b6364e3d\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a>(bool persistent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#acd87d13180121dc63b9221990b712d93\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a0e8392fbdff757438051d35571d5822d\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">tram::Ext::Design::Rotating</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_rotating.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Rotating Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html\">Rotating</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_rotating-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Rotating Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Rotating:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_rotating.png\" usemap=\"#tram::Ext::Design::Rotating_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Rotating_map\" name=\"tram::Ext::Design::Rotating_map\">\n<area href=\"classtram_1_1_entity.html\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,155,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a67bf72d5b2d84ccdbbf29de024adb01d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a67bf72d5b2d84ccdbbf29de024adb01d\">Rotating</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a67bf72d5b2d84ccdbbf29de024adb01d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e8392fbdff757438051d35571d5822d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a0e8392fbdff757438051d35571d5822d\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a0e8392fbdff757438051d35571d5822d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05a3c268dcc3974bc33dcc87b6364e3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a05a3c268dcc3974bc33dcc87b6364e3d\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a05a3c268dcc3974bc33dcc87b6364e3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93f36fcc211fcc6f757030bbf572a0d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a93f36fcc211fcc6f757030bbf572a0d4\">Load</a> ()</td></tr>\n<tr class=\"separator:a93f36fcc211fcc6f757030bbf572a0d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd87d13180121dc63b9221990b712d93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#acd87d13180121dc63b9221990b712d93\">Unload</a> ()</td></tr>\n<tr class=\"separator:acd87d13180121dc63b9221990b712d93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa17cc5e04281e0c107f3d3b99a1bcf59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aa17cc5e04281e0c107f3d3b99a1bcf59\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa17cc5e04281e0c107f3d3b99a1bcf59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa02a62de3332ba70c7c62b9b3f4caf91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aa02a62de3332ba70c7c62b9b3f4caf91\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:aa02a62de3332ba70c7c62b9b3f4caf91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a> () const</td></tr>\n<tr class=\"separator:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a196b39d199a2631b1531799ca7981ffd\">Update</a> ()</td></tr>\n<tr class=\"separator:a196b39d199a2631b1531799ca7981ffd inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a> (bool <a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a>)</td></tr>\n<tr class=\"separator:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a> (bool persistent)</td></tr>\n<tr class=\"separator:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a> (<a class=\"el\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">query_t</a> query)</td></tr>\n<tr class=\"separator:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a624f6d4dadff83798f63dfea3263ac7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a624f6d4dadff83798f63dfea3263ac7d\">Register</a> ()</td></tr>\n<tr class=\"separator:a624f6d4dadff83798f63dfea3263ac7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">UpdateFromList</a> ()</td></tr>\n<tr class=\"memdesc:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates all of the entities in the update list.  <a href=\"classtram_1_1_entity.html#a87f1e247276a51e1c85498a5771bd8c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a87f1e247276a51e1c85498a5771bd8c9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a64ef628f4acacdced052749db139640b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#a64ef628f4acacdced052749db139640b\">rendercomponent</a></td></tr>\n<tr class=\"separator:a64ef628f4acacdced052749db139640b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad82f21585e6aa0acdbdf9f82a47f72e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#ad82f21585e6aa0acdbdf9f82a47f72e5\">physicscomponent</a></td></tr>\n<tr class=\"separator:ad82f21585e6aa0acdbdf9f82a47f72e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adad8e42b6004903ce0aaebec1396a25d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#adad8e42b6004903ce0aaebec1396a25d\">model</a></td></tr>\n<tr class=\"separator:adad8e42b6004903ce0aaebec1396a25d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab0fe2d2e72ee5a35a723de3a5f6268e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_rotating.html#aab0fe2d2e72ee5a35a723de3a5f6268e\">collmodel</a></td></tr>\n<tr class=\"separator:aab0fe2d2e72ee5a35a723de3a5f6268e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a> = true</td></tr>\n<tr class=\"separator:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a> = false</td></tr>\n<tr class=\"separator:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a> = true</td></tr>\n<tr class=\"separator:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a> = false</td></tr>\n<tr class=\"separator:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a> = false</td></tr>\n<tr class=\"separator:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a> = true</td></tr>\n<tr class=\"separator:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">AddUpdate</a> ()</td></tr>\n<tr class=\"memdesc:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds entity to update list.  <a href=\"classtram_1_1_entity.html#ad9d2a5f168ad9c17120b7165d8514070\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9d2a5f168ad9c17120b7165d8514070 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">RemoveUpdate</a> ()</td></tr>\n<tr class=\"memdesc:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Remove entity from the update list.  <a href=\"classtram_1_1_entity.html#aef1ed1660ba47fd8d79f7e02b90e6c1d\">More...</a><br /></td></tr>\n<tr class=\"separator:aef1ed1660ba47fd8d79f7e02b90e6c1d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a67bf72d5b2d84ccdbbf29de024adb01d\" name=\"a67bf72d5b2d84ccdbbf29de024adb01d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67bf72d5b2d84ccdbbf29de024adb01d\">&#9670;&nbsp;</a></span>Rotating()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Rotating::Rotating </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a93f36fcc211fcc6f757030bbf572a0d4\" name=\"a93f36fcc211fcc6f757030bbf572a0d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93f36fcc211fcc6f757030bbf572a0d4\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aa02a62de3332ba70c7c62b9b3f4caf91\" name=\"aa02a62de3332ba70c7c62b9b3f4caf91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa02a62de3332ba70c7c62b9b3f4caf91\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a624f6d4dadff83798f63dfea3263ac7d\" name=\"a624f6d4dadff83798f63dfea3263ac7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a624f6d4dadff83798f63dfea3263ac7d\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Rotating::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa17cc5e04281e0c107f3d3b99a1bcf59\" name=\"aa17cc5e04281e0c107f3d3b99a1bcf59\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa17cc5e04281e0c107f3d3b99a1bcf59\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a05a3c268dcc3974bc33dcc87b6364e3d\" name=\"a05a3c268dcc3974bc33dcc87b6364e3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05a3c268dcc3974bc33dcc87b6364e3d\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"acd87d13180121dc63b9221990b712d93\" name=\"acd87d13180121dc63b9221990b712d93\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd87d13180121dc63b9221990b712d93\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0e8392fbdff757438051d35571d5822d\" name=\"a0e8392fbdff757438051d35571d5822d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e8392fbdff757438051d35571d5822d\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Rotating::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aab0fe2d2e72ee5a35a723de3a5f6268e\" name=\"aab0fe2d2e72ee5a35a723de3a5f6268e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab0fe2d2e72ee5a35a723de3a5f6268e\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Rotating::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adad8e42b6004903ce0aaebec1396a25d\" name=\"adad8e42b6004903ce0aaebec1396a25d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adad8e42b6004903ce0aaebec1396a25d\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Rotating::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad82f21585e6aa0acdbdf9f82a47f72e5\" name=\"ad82f21585e6aa0acdbdf9f82a47f72e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad82f21585e6aa0acdbdf9f82a47f72e5\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Rotating::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a64ef628f4acacdced052749db139640b\" name=\"a64ef628f4acacdced052749db139640b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64ef628f4acacdced052749db139640b\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Rotating::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/design/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_sound_table-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">SoundTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::SoundTable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a2e1fe9bed346eafb731f9c93a41cc235\">AddSound</a>(SoundAction type, name_t sound)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a44ee08c87251710e7cb76455a228ccb7\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a33632e4d63d9837da45bbde858bc6c47\">GetSound</a>(SoundAction type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a62f2bf14f76c5f6a4a7301f62fe23710\">PlaySound</a>(SoundAction type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a238f278970887d2fd5d4b14343a5f531\">PlaySound</a>(SoundAction type, vec3 position, float volume)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">tram::Ext::Design::SoundTable</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_sound_table.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::SoundTable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">SoundTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_sound_table-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::SoundTable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Maps actions to sounds.  \n <a href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"soundtable_8h_source.html\">soundtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2e1fe9bed346eafb731f9c93a41cc235\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a2e1fe9bed346eafb731f9c93a41cc235\">AddSound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a> type, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> sound)</td></tr>\n<tr class=\"separator:a2e1fe9bed346eafb731f9c93a41cc235\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33632e4d63d9837da45bbde858bc6c47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a33632e4d63d9837da45bbde858bc6c47\">GetSound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a> type)</td></tr>\n<tr class=\"separator:a33632e4d63d9837da45bbde858bc6c47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62f2bf14f76c5f6a4a7301f62fe23710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a62f2bf14f76c5f6a4a7301f62fe23710\">PlaySound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a> type)</td></tr>\n<tr class=\"separator:a62f2bf14f76c5f6a4a7301f62fe23710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a238f278970887d2fd5d4b14343a5f531\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a238f278970887d2fd5d4b14343a5f531\">PlaySound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a> type, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, float volume)</td></tr>\n<tr class=\"separator:a238f278970887d2fd5d4b14343a5f531\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a44ee08c87251710e7cb76455a228ccb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">SoundTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#a44ee08c87251710e7cb76455a228ccb7\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a44ee08c87251710e7cb76455a228ccb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Maps actions to sounds. </p>\n<p >Perfect for storing the aural properties of various materials, or taking the actions that a door or some other container can perform, e.g. opening, closing, trying to open but failing due to being locked, and mappping them to specific sounds. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2e1fe9bed346eafb731f9c93a41cc235\" name=\"a2e1fe9bed346eafb731f9c93a41cc235\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e1fe9bed346eafb731f9c93a41cc235\">&#9670;&nbsp;</a></span>AddSound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::SoundTable::AddSound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sound</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44ee08c87251710e7cb76455a228ccb7\" name=\"a44ee08c87251710e7cb76455a228ccb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44ee08c87251710e7cb76455a228ccb7\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">SoundTable</a> * tram::Ext::Design::SoundTable::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33632e4d63d9837da45bbde858bc6c47\" name=\"a33632e4d63d9837da45bbde858bc6c47\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33632e4d63d9837da45bbde858bc6c47\">&#9670;&nbsp;</a></span>GetSound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::SoundTable::GetSound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a62f2bf14f76c5f6a4a7301f62fe23710\" name=\"a62f2bf14f76c5f6a4a7301f62fe23710\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62f2bf14f76c5f6a4a7301f62fe23710\">&#9670;&nbsp;</a></span>PlaySound() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::SoundTable::PlaySound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a238f278970887d2fd5d4b14343a5f531\" name=\"a238f278970887d2fd5d4b14343a5f531\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a238f278970887d2fd5d4b14343a5f531\">&#9670;&nbsp;</a></span>PlaySound() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::SoundTable::PlaySound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>volume</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"soundtable_8h_source.html\">soundtable.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"soundtable_8cpp.html\">soundtable.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_train-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">Train</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Train Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#ae670c6e54e8bea6d9fee99cc4e60f98b\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a85f16cfe8ffb7a9aa47532f55cd82350\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a36449a23c99357005e047e36c499d269\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a04e02718b9398cc7986c5ea2543c6611\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a1e07ea53add8a620593dc206618239be\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a848c67b572b5bd079be970146e5a4a28\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a02a666aafd0cb937e045705b579f420f\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#aec02f710627a6e7d23445c3fce3566de\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a17a54e10d809db7903ef057795a6a392\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a4139f07d0f142261db39f9d31e4336fc\">Train</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a161c93a76a4739ec7d1b23efc6b11e1f\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a1a5dbc49323453aa9808682bf5dc9941\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">tram::Ext::Design::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_train.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Train Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">Train</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_train-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Train Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Train:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_train.png\" usemap=\"#tram::Ext::Design::Train_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Train_map\" name=\"tram::Ext::Design::Train_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,139,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4139f07d0f142261db39f9d31e4336fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a4139f07d0f142261db39f9d31e4336fc\">Train</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a4139f07d0f142261db39f9d31e4336fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a5dbc49323453aa9808682bf5dc9941\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a1a5dbc49323453aa9808682bf5dc9941\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a1a5dbc49323453aa9808682bf5dc9941\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17a54e10d809db7903ef057795a6a392\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a17a54e10d809db7903ef057795a6a392\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a17a54e10d809db7903ef057795a6a392\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85f16cfe8ffb7a9aa47532f55cd82350\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a85f16cfe8ffb7a9aa47532f55cd82350\">Load</a> ()</td></tr>\n<tr class=\"separator:a85f16cfe8ffb7a9aa47532f55cd82350\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a161c93a76a4739ec7d1b23efc6b11e1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a161c93a76a4739ec7d1b23efc6b11e1f\">Unload</a> ()</td></tr>\n<tr class=\"separator:a161c93a76a4739ec7d1b23efc6b11e1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec02f710627a6e7d23445c3fce3566de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#aec02f710627a6e7d23445c3fce3566de\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aec02f710627a6e7d23445c3fce3566de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36449a23c99357005e047e36c499d269\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a36449a23c99357005e047e36c499d269\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a36449a23c99357005e047e36c499d269\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a848c67b572b5bd079be970146e5a4a28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a848c67b572b5bd079be970146e5a4a28\">Register</a> ()</td></tr>\n<tr class=\"separator:a848c67b572b5bd079be970146e5a4a28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a02a666aafd0cb937e045705b579f420f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a02a666aafd0cb937e045705b579f420f\">rendercomponent</a></td></tr>\n<tr class=\"separator:a02a666aafd0cb937e045705b579f420f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e07ea53add8a620593dc206618239be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a1e07ea53add8a620593dc206618239be\">physicscomponent</a></td></tr>\n<tr class=\"separator:a1e07ea53add8a620593dc206618239be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04e02718b9398cc7986c5ea2543c6611\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#a04e02718b9398cc7986c5ea2543c6611\">model</a></td></tr>\n<tr class=\"separator:a04e02718b9398cc7986c5ea2543c6611\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae670c6e54e8bea6d9fee99cc4e60f98b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html#ae670c6e54e8bea6d9fee99cc4e60f98b\">collmodel</a></td></tr>\n<tr class=\"separator:ae670c6e54e8bea6d9fee99cc4e60f98b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4139f07d0f142261db39f9d31e4336fc\" name=\"a4139f07d0f142261db39f9d31e4336fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4139f07d0f142261db39f9d31e4336fc\">&#9670;&nbsp;</a></span>Train()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Train::Train </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a85f16cfe8ffb7a9aa47532f55cd82350\" name=\"a85f16cfe8ffb7a9aa47532f55cd82350\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85f16cfe8ffb7a9aa47532f55cd82350\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a36449a23c99357005e047e36c499d269\" name=\"a36449a23c99357005e047e36c499d269\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36449a23c99357005e047e36c499d269\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a848c67b572b5bd079be970146e5a4a28\" name=\"a848c67b572b5bd079be970146e5a4a28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a848c67b572b5bd079be970146e5a4a28\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Train::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec02f710627a6e7d23445c3fce3566de\" name=\"aec02f710627a6e7d23445c3fce3566de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec02f710627a6e7d23445c3fce3566de\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a17a54e10d809db7903ef057795a6a392\" name=\"a17a54e10d809db7903ef057795a6a392\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17a54e10d809db7903ef057795a6a392\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a161c93a76a4739ec7d1b23efc6b11e1f\" name=\"a161c93a76a4739ec7d1b23efc6b11e1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a161c93a76a4739ec7d1b23efc6b11e1f\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1a5dbc49323453aa9808682bf5dc9941\" name=\"a1a5dbc49323453aa9808682bf5dc9941\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a5dbc49323453aa9808682bf5dc9941\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Train::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae670c6e54e8bea6d9fee99cc4e60f98b\" name=\"ae670c6e54e8bea6d9fee99cc4e60f98b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae670c6e54e8bea6d9fee99cc4e60f98b\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Train::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04e02718b9398cc7986c5ea2543c6611\" name=\"a04e02718b9398cc7986c5ea2543c6611\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04e02718b9398cc7986c5ea2543c6611\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Train::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e07ea53add8a620593dc206618239be\" name=\"a1e07ea53add8a620593dc206618239be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e07ea53add8a620593dc206618239be\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Train::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02a666aafd0cb937e045705b579f420f\" name=\"a02a666aafd0cb937e045705b579f420f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02a666aafd0cb937e045705b579f420f\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Train::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_autosave-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">TriggerAutosave</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerAutosave Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a24c93c9e170f4817362c1cf293d877c9\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ace52c99e7c96154572d12c38346d0f3c\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a95c1d297bde89d4c5e37dbd5f48222ce\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a52f0cef62bb73a5ff15d876522b726e7\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a86b2697d428543f69a419a5cdf6c7ca0\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ac0b8901174e31bd1d634a1140db6e011\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a9ec23a12f64a5715cbe61356751b22a6\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a6108e28c189e0f203cee55359e89bf1f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a14a7e2f4883b01a5ffa7870d30faabaa\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a558c506e2f40a7375b3d59b0c508cece\">TriggerAutosave</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a42d971233cce40e7f1ddb2d6fe215ca6\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ad2b7f6e8c157c72a9dd4091b378cb23a\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">tram::Ext::Design::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerAutosave Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">TriggerAutosave</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerAutosave Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerAutosave:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.png\" usemap=\"#tram::Ext::Design::TriggerAutosave_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerAutosave_map\" name=\"tram::Ext::Design::TriggerAutosave_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,204,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a558c506e2f40a7375b3d59b0c508cece\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a558c506e2f40a7375b3d59b0c508cece\">TriggerAutosave</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a558c506e2f40a7375b3d59b0c508cece\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2b7f6e8c157c72a9dd4091b378cb23a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ad2b7f6e8c157c72a9dd4091b378cb23a\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:ad2b7f6e8c157c72a9dd4091b378cb23a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14a7e2f4883b01a5ffa7870d30faabaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a14a7e2f4883b01a5ffa7870d30faabaa\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a14a7e2f4883b01a5ffa7870d30faabaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace52c99e7c96154572d12c38346d0f3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ace52c99e7c96154572d12c38346d0f3c\">Load</a> ()</td></tr>\n<tr class=\"separator:ace52c99e7c96154572d12c38346d0f3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42d971233cce40e7f1ddb2d6fe215ca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a42d971233cce40e7f1ddb2d6fe215ca6\">Unload</a> ()</td></tr>\n<tr class=\"separator:a42d971233cce40e7f1ddb2d6fe215ca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6108e28c189e0f203cee55359e89bf1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a6108e28c189e0f203cee55359e89bf1f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a6108e28c189e0f203cee55359e89bf1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95c1d297bde89d4c5e37dbd5f48222ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a95c1d297bde89d4c5e37dbd5f48222ce\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a95c1d297bde89d4c5e37dbd5f48222ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ac0b8901174e31bd1d634a1140db6e011\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#ac0b8901174e31bd1d634a1140db6e011\">Register</a> ()</td></tr>\n<tr class=\"separator:ac0b8901174e31bd1d634a1140db6e011\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a9ec23a12f64a5715cbe61356751b22a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a9ec23a12f64a5715cbe61356751b22a6\">rendercomponent</a></td></tr>\n<tr class=\"separator:a9ec23a12f64a5715cbe61356751b22a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86b2697d428543f69a419a5cdf6c7ca0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a86b2697d428543f69a419a5cdf6c7ca0\">physicscomponent</a></td></tr>\n<tr class=\"separator:a86b2697d428543f69a419a5cdf6c7ca0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f0cef62bb73a5ff15d876522b726e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a52f0cef62bb73a5ff15d876522b726e7\">model</a></td></tr>\n<tr class=\"separator:a52f0cef62bb73a5ff15d876522b726e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24c93c9e170f4817362c1cf293d877c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html#a24c93c9e170f4817362c1cf293d877c9\">collmodel</a></td></tr>\n<tr class=\"separator:a24c93c9e170f4817362c1cf293d877c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a558c506e2f40a7375b3d59b0c508cece\" name=\"a558c506e2f40a7375b3d59b0c508cece\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a558c506e2f40a7375b3d59b0c508cece\">&#9670;&nbsp;</a></span>TriggerAutosave()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerAutosave::TriggerAutosave </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ace52c99e7c96154572d12c38346d0f3c\" name=\"ace52c99e7c96154572d12c38346d0f3c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace52c99e7c96154572d12c38346d0f3c\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a95c1d297bde89d4c5e37dbd5f48222ce\" name=\"a95c1d297bde89d4c5e37dbd5f48222ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95c1d297bde89d4c5e37dbd5f48222ce\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac0b8901174e31bd1d634a1140db6e011\" name=\"ac0b8901174e31bd1d634a1140db6e011\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0b8901174e31bd1d634a1140db6e011\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerAutosave::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6108e28c189e0f203cee55359e89bf1f\" name=\"a6108e28c189e0f203cee55359e89bf1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6108e28c189e0f203cee55359e89bf1f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a14a7e2f4883b01a5ffa7870d30faabaa\" name=\"a14a7e2f4883b01a5ffa7870d30faabaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14a7e2f4883b01a5ffa7870d30faabaa\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a42d971233cce40e7f1ddb2d6fe215ca6\" name=\"a42d971233cce40e7f1ddb2d6fe215ca6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42d971233cce40e7f1ddb2d6fe215ca6\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad2b7f6e8c157c72a9dd4091b378cb23a\" name=\"ad2b7f6e8c157c72a9dd4091b378cb23a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2b7f6e8c157c72a9dd4091b378cb23a\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerAutosave::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a24c93c9e170f4817362c1cf293d877c9\" name=\"a24c93c9e170f4817362c1cf293d877c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24c93c9e170f4817362c1cf293d877c9\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerAutosave::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52f0cef62bb73a5ff15d876522b726e7\" name=\"a52f0cef62bb73a5ff15d876522b726e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52f0cef62bb73a5ff15d876522b726e7\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerAutosave::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86b2697d428543f69a419a5cdf6c7ca0\" name=\"a86b2697d428543f69a419a5cdf6c7ca0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86b2697d428543f69a419a5cdf6c7ca0\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerAutosave::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ec23a12f64a5715cbe61356751b22a6\" name=\"a9ec23a12f64a5715cbe61356751b22a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ec23a12f64a5715cbe61356751b22a6\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerAutosave::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_hurt-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">TriggerHurt</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerHurt Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#ad69c53c2b219bbb3b36079740d2be0dc\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a5505e1476e270cadaa404d62f3b6b233\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#aeeb7b3e14727409be08153e559a1a369\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a1abdfa061208abe7b4a3067df6e716cc\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a650ce40145c76935265b2d17acc134bd\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a9062ebe847b571e4f2d22212d1b205d8\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#aae88e414cd14a4ac111496ca783b7d01\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a8470df04de680d1913affb49f0f18f5c\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a6557ce73a62941fc6c8eb61c634fcdfb\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#adcb76088969571ca79c5eb204c37992a\">TriggerHurt</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a82fcc0342dab6f5db4cadb4b26aca340\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a19e9e6a9202175843be3bed674491b5c\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">tram::Ext::Design::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerHurt Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">TriggerHurt</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerHurt Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerHurt:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.png\" usemap=\"#tram::Ext::Design::TriggerHurt_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerHurt_map\" name=\"tram::Ext::Design::TriggerHurt_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,175,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adcb76088969571ca79c5eb204c37992a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#adcb76088969571ca79c5eb204c37992a\">TriggerHurt</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:adcb76088969571ca79c5eb204c37992a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19e9e6a9202175843be3bed674491b5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a19e9e6a9202175843be3bed674491b5c\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a19e9e6a9202175843be3bed674491b5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6557ce73a62941fc6c8eb61c634fcdfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a6557ce73a62941fc6c8eb61c634fcdfb\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a6557ce73a62941fc6c8eb61c634fcdfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5505e1476e270cadaa404d62f3b6b233\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a5505e1476e270cadaa404d62f3b6b233\">Load</a> ()</td></tr>\n<tr class=\"separator:a5505e1476e270cadaa404d62f3b6b233\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82fcc0342dab6f5db4cadb4b26aca340\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a82fcc0342dab6f5db4cadb4b26aca340\">Unload</a> ()</td></tr>\n<tr class=\"separator:a82fcc0342dab6f5db4cadb4b26aca340\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8470df04de680d1913affb49f0f18f5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a8470df04de680d1913affb49f0f18f5c\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a8470df04de680d1913affb49f0f18f5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeeb7b3e14727409be08153e559a1a369\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#aeeb7b3e14727409be08153e559a1a369\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:aeeb7b3e14727409be08153e559a1a369\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a9062ebe847b571e4f2d22212d1b205d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a9062ebe847b571e4f2d22212d1b205d8\">Register</a> ()</td></tr>\n<tr class=\"separator:a9062ebe847b571e4f2d22212d1b205d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aae88e414cd14a4ac111496ca783b7d01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#aae88e414cd14a4ac111496ca783b7d01\">rendercomponent</a></td></tr>\n<tr class=\"separator:aae88e414cd14a4ac111496ca783b7d01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a650ce40145c76935265b2d17acc134bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a650ce40145c76935265b2d17acc134bd\">physicscomponent</a></td></tr>\n<tr class=\"separator:a650ce40145c76935265b2d17acc134bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1abdfa061208abe7b4a3067df6e716cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#a1abdfa061208abe7b4a3067df6e716cc\">model</a></td></tr>\n<tr class=\"separator:a1abdfa061208abe7b4a3067df6e716cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad69c53c2b219bbb3b36079740d2be0dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html#ad69c53c2b219bbb3b36079740d2be0dc\">collmodel</a></td></tr>\n<tr class=\"separator:ad69c53c2b219bbb3b36079740d2be0dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"adcb76088969571ca79c5eb204c37992a\" name=\"adcb76088969571ca79c5eb204c37992a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adcb76088969571ca79c5eb204c37992a\">&#9670;&nbsp;</a></span>TriggerHurt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerHurt::TriggerHurt </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5505e1476e270cadaa404d62f3b6b233\" name=\"a5505e1476e270cadaa404d62f3b6b233\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5505e1476e270cadaa404d62f3b6b233\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aeeb7b3e14727409be08153e559a1a369\" name=\"aeeb7b3e14727409be08153e559a1a369\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeeb7b3e14727409be08153e559a1a369\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a9062ebe847b571e4f2d22212d1b205d8\" name=\"a9062ebe847b571e4f2d22212d1b205d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9062ebe847b571e4f2d22212d1b205d8\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerHurt::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8470df04de680d1913affb49f0f18f5c\" name=\"a8470df04de680d1913affb49f0f18f5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8470df04de680d1913affb49f0f18f5c\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6557ce73a62941fc6c8eb61c634fcdfb\" name=\"a6557ce73a62941fc6c8eb61c634fcdfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6557ce73a62941fc6c8eb61c634fcdfb\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a82fcc0342dab6f5db4cadb4b26aca340\" name=\"a82fcc0342dab6f5db4cadb4b26aca340\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82fcc0342dab6f5db4cadb4b26aca340\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a19e9e6a9202175843be3bed674491b5c\" name=\"a19e9e6a9202175843be3bed674491b5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19e9e6a9202175843be3bed674491b5c\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerHurt::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad69c53c2b219bbb3b36079740d2be0dc\" name=\"ad69c53c2b219bbb3b36079740d2be0dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad69c53c2b219bbb3b36079740d2be0dc\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerHurt::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1abdfa061208abe7b4a3067df6e716cc\" name=\"a1abdfa061208abe7b4a3067df6e716cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1abdfa061208abe7b4a3067df6e716cc\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerHurt::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a650ce40145c76935265b2d17acc134bd\" name=\"a650ce40145c76935265b2d17acc134bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a650ce40145c76935265b2d17acc134bd\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerHurt::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae88e414cd14a4ac111496ca783b7d01\" name=\"aae88e414cd14a4ac111496ca783b7d01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae88e414cd14a4ac111496ca783b7d01\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerHurt::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_multiple-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">TriggerMultiple</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerMultiple Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a6ab69157995347a7fbd74d189dfbe63c\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a66198f2e24f1e5fa77d7ae13977fdcf0\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a90c6d3f7ba8dac7429ffa398ca148914\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#ae02296dd3be7301bd2d1374c809706ab\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a3713e2aa9b402a3932393df87ae0381e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a7322866e1e1a20766a564ecde3b7f8f7\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a943f0ef724077947f69fb92f6d02b59f\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a403ec385e12c3cb18a2a058c89e4f4eb\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a3e9286290b07d2732d69ef432012c0e3\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a13ca4b3d0f3bf5ad642e7f2cf40db639\">TriggerMultiple</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a0caa3b4111fff0e58878a4962b422c58\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a6512ff2157045cab9d2c4dad1da6012d\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">tram::Ext::Design::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerMultiple Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">TriggerMultiple</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerMultiple Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerMultiple:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.png\" usemap=\"#tram::Ext::Design::TriggerMultiple_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerMultiple_map\" name=\"tram::Ext::Design::TriggerMultiple_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,195,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a13ca4b3d0f3bf5ad642e7f2cf40db639\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a13ca4b3d0f3bf5ad642e7f2cf40db639\">TriggerMultiple</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a13ca4b3d0f3bf5ad642e7f2cf40db639\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6512ff2157045cab9d2c4dad1da6012d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a6512ff2157045cab9d2c4dad1da6012d\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a6512ff2157045cab9d2c4dad1da6012d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e9286290b07d2732d69ef432012c0e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a3e9286290b07d2732d69ef432012c0e3\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a3e9286290b07d2732d69ef432012c0e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66198f2e24f1e5fa77d7ae13977fdcf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a66198f2e24f1e5fa77d7ae13977fdcf0\">Load</a> ()</td></tr>\n<tr class=\"separator:a66198f2e24f1e5fa77d7ae13977fdcf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0caa3b4111fff0e58878a4962b422c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a0caa3b4111fff0e58878a4962b422c58\">Unload</a> ()</td></tr>\n<tr class=\"separator:a0caa3b4111fff0e58878a4962b422c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a403ec385e12c3cb18a2a058c89e4f4eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a403ec385e12c3cb18a2a058c89e4f4eb\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a403ec385e12c3cb18a2a058c89e4f4eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90c6d3f7ba8dac7429ffa398ca148914\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a90c6d3f7ba8dac7429ffa398ca148914\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a90c6d3f7ba8dac7429ffa398ca148914\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a7322866e1e1a20766a564ecde3b7f8f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a7322866e1e1a20766a564ecde3b7f8f7\">Register</a> ()</td></tr>\n<tr class=\"separator:a7322866e1e1a20766a564ecde3b7f8f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a943f0ef724077947f69fb92f6d02b59f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a943f0ef724077947f69fb92f6d02b59f\">rendercomponent</a></td></tr>\n<tr class=\"separator:a943f0ef724077947f69fb92f6d02b59f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3713e2aa9b402a3932393df87ae0381e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a3713e2aa9b402a3932393df87ae0381e\">physicscomponent</a></td></tr>\n<tr class=\"separator:a3713e2aa9b402a3932393df87ae0381e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae02296dd3be7301bd2d1374c809706ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#ae02296dd3be7301bd2d1374c809706ab\">model</a></td></tr>\n<tr class=\"separator:ae02296dd3be7301bd2d1374c809706ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ab69157995347a7fbd74d189dfbe63c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html#a6ab69157995347a7fbd74d189dfbe63c\">collmodel</a></td></tr>\n<tr class=\"separator:a6ab69157995347a7fbd74d189dfbe63c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a13ca4b3d0f3bf5ad642e7f2cf40db639\" name=\"a13ca4b3d0f3bf5ad642e7f2cf40db639\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13ca4b3d0f3bf5ad642e7f2cf40db639\">&#9670;&nbsp;</a></span>TriggerMultiple()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerMultiple::TriggerMultiple </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a66198f2e24f1e5fa77d7ae13977fdcf0\" name=\"a66198f2e24f1e5fa77d7ae13977fdcf0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66198f2e24f1e5fa77d7ae13977fdcf0\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a90c6d3f7ba8dac7429ffa398ca148914\" name=\"a90c6d3f7ba8dac7429ffa398ca148914\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90c6d3f7ba8dac7429ffa398ca148914\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7322866e1e1a20766a564ecde3b7f8f7\" name=\"a7322866e1e1a20766a564ecde3b7f8f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7322866e1e1a20766a564ecde3b7f8f7\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerMultiple::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a403ec385e12c3cb18a2a058c89e4f4eb\" name=\"a403ec385e12c3cb18a2a058c89e4f4eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a403ec385e12c3cb18a2a058c89e4f4eb\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3e9286290b07d2732d69ef432012c0e3\" name=\"a3e9286290b07d2732d69ef432012c0e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e9286290b07d2732d69ef432012c0e3\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0caa3b4111fff0e58878a4962b422c58\" name=\"a0caa3b4111fff0e58878a4962b422c58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0caa3b4111fff0e58878a4962b422c58\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6512ff2157045cab9d2c4dad1da6012d\" name=\"a6512ff2157045cab9d2c4dad1da6012d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6512ff2157045cab9d2c4dad1da6012d\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerMultiple::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6ab69157995347a7fbd74d189dfbe63c\" name=\"a6ab69157995347a7fbd74d189dfbe63c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ab69157995347a7fbd74d189dfbe63c\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerMultiple::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae02296dd3be7301bd2d1374c809706ab\" name=\"ae02296dd3be7301bd2d1374c809706ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae02296dd3be7301bd2d1374c809706ab\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerMultiple::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3713e2aa9b402a3932393df87ae0381e\" name=\"a3713e2aa9b402a3932393df87ae0381e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3713e2aa9b402a3932393df87ae0381e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerMultiple::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a943f0ef724077947f69fb92f6d02b59f\" name=\"a943f0ef724077947f69fb92f6d02b59f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a943f0ef724077947f69fb92f6d02b59f\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerMultiple::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_once-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">TriggerOnce</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerOnce Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a085cd7496fd4c4f029da02a21631d002\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#aeeee587228fde064d6ab36d5394892ea\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a957cdf2a7bc593e759163155d0aad0f0\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#ad6b3404aaa82655c0f021491970eb5dd\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a017fa91b0d890c407c254cfe5a51aad2\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#aac4d4303b80760723276bcc71d9e1adb\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a223b90ff7971a3835173e92ac7ae958c\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a068ebf3cb449b45f7951ba7070654b1b\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a43fb1a28b5f04282341ca4ef5afd1f11\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a2fd44ff10c5e2d25b833895ed86f0655\">TriggerOnce</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#ab1d096a9808554e3abe1640ef98562d4\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a891be3215421a54716fe169b5b03bc26\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">tram::Ext::Design::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_once.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerOnce Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">TriggerOnce</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerOnce Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerOnce:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.png\" usemap=\"#tram::Ext::Design::TriggerOnce_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerOnce_map\" name=\"tram::Ext::Design::TriggerOnce_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,182,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2fd44ff10c5e2d25b833895ed86f0655\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a2fd44ff10c5e2d25b833895ed86f0655\">TriggerOnce</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a2fd44ff10c5e2d25b833895ed86f0655\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a891be3215421a54716fe169b5b03bc26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a891be3215421a54716fe169b5b03bc26\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a891be3215421a54716fe169b5b03bc26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43fb1a28b5f04282341ca4ef5afd1f11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a43fb1a28b5f04282341ca4ef5afd1f11\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a43fb1a28b5f04282341ca4ef5afd1f11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeeee587228fde064d6ab36d5394892ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#aeeee587228fde064d6ab36d5394892ea\">Load</a> ()</td></tr>\n<tr class=\"separator:aeeee587228fde064d6ab36d5394892ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1d096a9808554e3abe1640ef98562d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#ab1d096a9808554e3abe1640ef98562d4\">Unload</a> ()</td></tr>\n<tr class=\"separator:ab1d096a9808554e3abe1640ef98562d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a068ebf3cb449b45f7951ba7070654b1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a068ebf3cb449b45f7951ba7070654b1b\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a068ebf3cb449b45f7951ba7070654b1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a957cdf2a7bc593e759163155d0aad0f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a957cdf2a7bc593e759163155d0aad0f0\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a957cdf2a7bc593e759163155d0aad0f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aac4d4303b80760723276bcc71d9e1adb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#aac4d4303b80760723276bcc71d9e1adb\">Register</a> ()</td></tr>\n<tr class=\"separator:aac4d4303b80760723276bcc71d9e1adb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a223b90ff7971a3835173e92ac7ae958c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a223b90ff7971a3835173e92ac7ae958c\">rendercomponent</a></td></tr>\n<tr class=\"separator:a223b90ff7971a3835173e92ac7ae958c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a017fa91b0d890c407c254cfe5a51aad2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a017fa91b0d890c407c254cfe5a51aad2\">physicscomponent</a></td></tr>\n<tr class=\"separator:a017fa91b0d890c407c254cfe5a51aad2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6b3404aaa82655c0f021491970eb5dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#ad6b3404aaa82655c0f021491970eb5dd\">model</a></td></tr>\n<tr class=\"separator:ad6b3404aaa82655c0f021491970eb5dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a085cd7496fd4c4f029da02a21631d002\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html#a085cd7496fd4c4f029da02a21631d002\">collmodel</a></td></tr>\n<tr class=\"separator:a085cd7496fd4c4f029da02a21631d002\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a2fd44ff10c5e2d25b833895ed86f0655\" name=\"a2fd44ff10c5e2d25b833895ed86f0655\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fd44ff10c5e2d25b833895ed86f0655\">&#9670;&nbsp;</a></span>TriggerOnce()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerOnce::TriggerOnce </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aeeee587228fde064d6ab36d5394892ea\" name=\"aeeee587228fde064d6ab36d5394892ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeeee587228fde064d6ab36d5394892ea\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a957cdf2a7bc593e759163155d0aad0f0\" name=\"a957cdf2a7bc593e759163155d0aad0f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a957cdf2a7bc593e759163155d0aad0f0\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aac4d4303b80760723276bcc71d9e1adb\" name=\"aac4d4303b80760723276bcc71d9e1adb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac4d4303b80760723276bcc71d9e1adb\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerOnce::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a068ebf3cb449b45f7951ba7070654b1b\" name=\"a068ebf3cb449b45f7951ba7070654b1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a068ebf3cb449b45f7951ba7070654b1b\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a43fb1a28b5f04282341ca4ef5afd1f11\" name=\"a43fb1a28b5f04282341ca4ef5afd1f11\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43fb1a28b5f04282341ca4ef5afd1f11\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab1d096a9808554e3abe1640ef98562d4\" name=\"ab1d096a9808554e3abe1640ef98562d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1d096a9808554e3abe1640ef98562d4\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a891be3215421a54716fe169b5b03bc26\" name=\"a891be3215421a54716fe169b5b03bc26\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a891be3215421a54716fe169b5b03bc26\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerOnce::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a085cd7496fd4c4f029da02a21631d002\" name=\"a085cd7496fd4c4f029da02a21631d002\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a085cd7496fd4c4f029da02a21631d002\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerOnce::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6b3404aaa82655c0f021491970eb5dd\" name=\"ad6b3404aaa82655c0f021491970eb5dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6b3404aaa82655c0f021491970eb5dd\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerOnce::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a017fa91b0d890c407c254cfe5a51aad2\" name=\"a017fa91b0d890c407c254cfe5a51aad2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a017fa91b0d890c407c254cfe5a51aad2\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerOnce::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a223b90ff7971a3835173e92ac7ae958c\" name=\"a223b90ff7971a3835173e92ac7ae958c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a223b90ff7971a3835173e92ac7ae958c\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerOnce::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_player_movement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerPlayerMovement Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a84ee0084a6cbec50727c8fc7ba431017\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a037619a7762c60f4dfbe2d563f8f28c5\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#addd25f3ff4901b68287a169c8ba37800\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a74d4ec3f61f5a0d43f596776c0bf05f8\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a2e9f3ac3ad3f950b643a6655737bff0e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a746bf368208e814e4ad316e2eb5ad795\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#ad26ba28a0558148f48de73c9c9d4cb23\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a9b0e2603ac9c0cdf8b760b15e1848a50\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#af3a6df0d88d28e3869003e2736a68eac\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a492c17d5d66c63da084aff98785c1fbc\">TriggerPlayerMovement</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#abec85126643f604f8f9eae95d594b8ca\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#abd65ada536f3d6c290a0d75653b06717\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">tram::Ext::Design::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerPlayerMovement Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerPlayerMovement Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerPlayerMovement:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.png\" usemap=\"#tram::Ext::Design::TriggerPlayerMovement_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerPlayerMovement_map\" name=\"tram::Ext::Design::TriggerPlayerMovement_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,246,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a492c17d5d66c63da084aff98785c1fbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a492c17d5d66c63da084aff98785c1fbc\">TriggerPlayerMovement</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a492c17d5d66c63da084aff98785c1fbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd65ada536f3d6c290a0d75653b06717\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#abd65ada536f3d6c290a0d75653b06717\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:abd65ada536f3d6c290a0d75653b06717\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3a6df0d88d28e3869003e2736a68eac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#af3a6df0d88d28e3869003e2736a68eac\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:af3a6df0d88d28e3869003e2736a68eac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a037619a7762c60f4dfbe2d563f8f28c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a037619a7762c60f4dfbe2d563f8f28c5\">Load</a> ()</td></tr>\n<tr class=\"separator:a037619a7762c60f4dfbe2d563f8f28c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abec85126643f604f8f9eae95d594b8ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#abec85126643f604f8f9eae95d594b8ca\">Unload</a> ()</td></tr>\n<tr class=\"separator:abec85126643f604f8f9eae95d594b8ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b0e2603ac9c0cdf8b760b15e1848a50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a9b0e2603ac9c0cdf8b760b15e1848a50\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a9b0e2603ac9c0cdf8b760b15e1848a50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:addd25f3ff4901b68287a169c8ba37800\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#addd25f3ff4901b68287a169c8ba37800\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:addd25f3ff4901b68287a169c8ba37800\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a746bf368208e814e4ad316e2eb5ad795\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a746bf368208e814e4ad316e2eb5ad795\">Register</a> ()</td></tr>\n<tr class=\"separator:a746bf368208e814e4ad316e2eb5ad795\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad26ba28a0558148f48de73c9c9d4cb23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#ad26ba28a0558148f48de73c9c9d4cb23\">rendercomponent</a></td></tr>\n<tr class=\"separator:ad26ba28a0558148f48de73c9c9d4cb23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e9f3ac3ad3f950b643a6655737bff0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a2e9f3ac3ad3f950b643a6655737bff0e\">physicscomponent</a></td></tr>\n<tr class=\"separator:a2e9f3ac3ad3f950b643a6655737bff0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74d4ec3f61f5a0d43f596776c0bf05f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a74d4ec3f61f5a0d43f596776c0bf05f8\">model</a></td></tr>\n<tr class=\"separator:a74d4ec3f61f5a0d43f596776c0bf05f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84ee0084a6cbec50727c8fc7ba431017\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html#a84ee0084a6cbec50727c8fc7ba431017\">collmodel</a></td></tr>\n<tr class=\"separator:a84ee0084a6cbec50727c8fc7ba431017\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a492c17d5d66c63da084aff98785c1fbc\" name=\"a492c17d5d66c63da084aff98785c1fbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a492c17d5d66c63da084aff98785c1fbc\">&#9670;&nbsp;</a></span>TriggerPlayerMovement()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerPlayerMovement::TriggerPlayerMovement </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a037619a7762c60f4dfbe2d563f8f28c5\" name=\"a037619a7762c60f4dfbe2d563f8f28c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a037619a7762c60f4dfbe2d563f8f28c5\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"addd25f3ff4901b68287a169c8ba37800\" name=\"addd25f3ff4901b68287a169c8ba37800\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#addd25f3ff4901b68287a169c8ba37800\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a746bf368208e814e4ad316e2eb5ad795\" name=\"a746bf368208e814e4ad316e2eb5ad795\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a746bf368208e814e4ad316e2eb5ad795\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerPlayerMovement::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b0e2603ac9c0cdf8b760b15e1848a50\" name=\"a9b0e2603ac9c0cdf8b760b15e1848a50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b0e2603ac9c0cdf8b760b15e1848a50\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af3a6df0d88d28e3869003e2736a68eac\" name=\"af3a6df0d88d28e3869003e2736a68eac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3a6df0d88d28e3869003e2736a68eac\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"abec85126643f604f8f9eae95d594b8ca\" name=\"abec85126643f604f8f9eae95d594b8ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abec85126643f604f8f9eae95d594b8ca\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"abd65ada536f3d6c290a0d75653b06717\" name=\"abd65ada536f3d6c290a0d75653b06717\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd65ada536f3d6c290a0d75653b06717\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPlayerMovement::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a84ee0084a6cbec50727c8fc7ba431017\" name=\"a84ee0084a6cbec50727c8fc7ba431017\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84ee0084a6cbec50727c8fc7ba431017\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerPlayerMovement::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a74d4ec3f61f5a0d43f596776c0bf05f8\" name=\"a74d4ec3f61f5a0d43f596776c0bf05f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74d4ec3f61f5a0d43f596776c0bf05f8\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerPlayerMovement::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e9f3ac3ad3f950b643a6655737bff0e\" name=\"a2e9f3ac3ad3f950b643a6655737bff0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e9f3ac3ad3f950b643a6655737bff0e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerPlayerMovement::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad26ba28a0558148f48de73c9c9d4cb23\" name=\"ad26ba28a0558148f48de73c9c9d4cb23\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad26ba28a0558148f48de73c9c9d4cb23\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerPlayerMovement::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_push-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">TriggerPush</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerPush Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a9d8b57cb837ff2a58963062e0eeda635\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a9c3b923786f3ab5c1935d4ad5b82050e\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a0710e082c56aed0a618566946ccc0fcc\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a8c68448729ee29bc5b9a9fad2e9179e4\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a5e6681f518d2195aae6a0b62d91c6a70\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#af1d9b8f015d10a7d208cee5bad6f3042\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#ae7ec2580965787aab10d079f2bb18e01\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a48f5b7d3a28c6495478696e353f821e2\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#ae365efb98d9f3fe49c879103a69bb16f\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a4374093d94ac490fc927b931a920cf64\">TriggerPush</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#afb2384948d3213a207d156aa35116a4d\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#aaf5ab08a58ac0efc86464a1d704f5fd1\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">tram::Ext::Design::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_push.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerPush Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">TriggerPush</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerPush Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerPush:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.png\" usemap=\"#tram::Ext::Design::TriggerPush_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerPush_map\" name=\"tram::Ext::Design::TriggerPush_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,179,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4374093d94ac490fc927b931a920cf64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a4374093d94ac490fc927b931a920cf64\">TriggerPush</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a4374093d94ac490fc927b931a920cf64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf5ab08a58ac0efc86464a1d704f5fd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#aaf5ab08a58ac0efc86464a1d704f5fd1\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:aaf5ab08a58ac0efc86464a1d704f5fd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae365efb98d9f3fe49c879103a69bb16f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#ae365efb98d9f3fe49c879103a69bb16f\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:ae365efb98d9f3fe49c879103a69bb16f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c3b923786f3ab5c1935d4ad5b82050e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a9c3b923786f3ab5c1935d4ad5b82050e\">Load</a> ()</td></tr>\n<tr class=\"separator:a9c3b923786f3ab5c1935d4ad5b82050e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb2384948d3213a207d156aa35116a4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#afb2384948d3213a207d156aa35116a4d\">Unload</a> ()</td></tr>\n<tr class=\"separator:afb2384948d3213a207d156aa35116a4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48f5b7d3a28c6495478696e353f821e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a48f5b7d3a28c6495478696e353f821e2\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a48f5b7d3a28c6495478696e353f821e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0710e082c56aed0a618566946ccc0fcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a0710e082c56aed0a618566946ccc0fcc\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a0710e082c56aed0a618566946ccc0fcc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af1d9b8f015d10a7d208cee5bad6f3042\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#af1d9b8f015d10a7d208cee5bad6f3042\">Register</a> ()</td></tr>\n<tr class=\"separator:af1d9b8f015d10a7d208cee5bad6f3042\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ae7ec2580965787aab10d079f2bb18e01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#ae7ec2580965787aab10d079f2bb18e01\">rendercomponent</a></td></tr>\n<tr class=\"separator:ae7ec2580965787aab10d079f2bb18e01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e6681f518d2195aae6a0b62d91c6a70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a5e6681f518d2195aae6a0b62d91c6a70\">physicscomponent</a></td></tr>\n<tr class=\"separator:a5e6681f518d2195aae6a0b62d91c6a70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c68448729ee29bc5b9a9fad2e9179e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a8c68448729ee29bc5b9a9fad2e9179e4\">model</a></td></tr>\n<tr class=\"separator:a8c68448729ee29bc5b9a9fad2e9179e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d8b57cb837ff2a58963062e0eeda635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html#a9d8b57cb837ff2a58963062e0eeda635\">collmodel</a></td></tr>\n<tr class=\"separator:a9d8b57cb837ff2a58963062e0eeda635\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4374093d94ac490fc927b931a920cf64\" name=\"a4374093d94ac490fc927b931a920cf64\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4374093d94ac490fc927b931a920cf64\">&#9670;&nbsp;</a></span>TriggerPush()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerPush::TriggerPush </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a9c3b923786f3ab5c1935d4ad5b82050e\" name=\"a9c3b923786f3ab5c1935d4ad5b82050e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c3b923786f3ab5c1935d4ad5b82050e\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0710e082c56aed0a618566946ccc0fcc\" name=\"a0710e082c56aed0a618566946ccc0fcc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0710e082c56aed0a618566946ccc0fcc\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af1d9b8f015d10a7d208cee5bad6f3042\" name=\"af1d9b8f015d10a7d208cee5bad6f3042\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1d9b8f015d10a7d208cee5bad6f3042\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerPush::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48f5b7d3a28c6495478696e353f821e2\" name=\"a48f5b7d3a28c6495478696e353f821e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48f5b7d3a28c6495478696e353f821e2\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae365efb98d9f3fe49c879103a69bb16f\" name=\"ae365efb98d9f3fe49c879103a69bb16f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae365efb98d9f3fe49c879103a69bb16f\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afb2384948d3213a207d156aa35116a4d\" name=\"afb2384948d3213a207d156aa35116a4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb2384948d3213a207d156aa35116a4d\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aaf5ab08a58ac0efc86464a1d704f5fd1\" name=\"aaf5ab08a58ac0efc86464a1d704f5fd1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf5ab08a58ac0efc86464a1d704f5fd1\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerPush::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9d8b57cb837ff2a58963062e0eeda635\" name=\"a9d8b57cb837ff2a58963062e0eeda635\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d8b57cb837ff2a58963062e0eeda635\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerPush::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c68448729ee29bc5b9a9fad2e9179e4\" name=\"a8c68448729ee29bc5b9a9fad2e9179e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c68448729ee29bc5b9a9fad2e9179e4\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerPush::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e6681f518d2195aae6a0b62d91c6a70\" name=\"a5e6681f518d2195aae6a0b62d91c6a70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e6681f518d2195aae6a0b62d91c6a70\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerPush::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae7ec2580965787aab10d079f2bb18e01\" name=\"ae7ec2580965787aab10d079f2bb18e01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7ec2580965787aab10d079f2bb18e01\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerPush::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_remove-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">TriggerRemove</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerRemove Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a2ec1339cf272045390bd2db9523c7aa6\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a17be2043c131253b4745fdb117023d6a\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a7abc24f4cf9546599316ab253c831354\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a011bf8e6056bd07b2d36069df4cc4207\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a0f021e41414fb6acf33ea60c2f10cb7e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a659789380f1fb9ad37f31e1c7c5cf1d0\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a434d6b26331482e5eedc5722bbed82f5\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a88bdd15f6a6490a7886a3cad09d58c7e\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#aada02b3edb3d57715dec2d7236396aa9\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#ad35992af79b148f7f9c2b0d0fea8e80e\">TriggerRemove</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a1fa8abcdf02713b3ea65c1edcb3e90a2\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a3a4f6cca899179fbbb6f851509ffc1b7\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">tram::Ext::Design::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_remove.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerRemove Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">TriggerRemove</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerRemove Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerRemove:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.png\" usemap=\"#tram::Ext::Design::TriggerRemove_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerRemove_map\" name=\"tram::Ext::Design::TriggerRemove_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,196,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad35992af79b148f7f9c2b0d0fea8e80e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#ad35992af79b148f7f9c2b0d0fea8e80e\">TriggerRemove</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:ad35992af79b148f7f9c2b0d0fea8e80e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a4f6cca899179fbbb6f851509ffc1b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a3a4f6cca899179fbbb6f851509ffc1b7\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a3a4f6cca899179fbbb6f851509ffc1b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aada02b3edb3d57715dec2d7236396aa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#aada02b3edb3d57715dec2d7236396aa9\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:aada02b3edb3d57715dec2d7236396aa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17be2043c131253b4745fdb117023d6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a17be2043c131253b4745fdb117023d6a\">Load</a> ()</td></tr>\n<tr class=\"separator:a17be2043c131253b4745fdb117023d6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fa8abcdf02713b3ea65c1edcb3e90a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a1fa8abcdf02713b3ea65c1edcb3e90a2\">Unload</a> ()</td></tr>\n<tr class=\"separator:a1fa8abcdf02713b3ea65c1edcb3e90a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88bdd15f6a6490a7886a3cad09d58c7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a88bdd15f6a6490a7886a3cad09d58c7e\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a88bdd15f6a6490a7886a3cad09d58c7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7abc24f4cf9546599316ab253c831354\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a7abc24f4cf9546599316ab253c831354\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a7abc24f4cf9546599316ab253c831354\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a659789380f1fb9ad37f31e1c7c5cf1d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a659789380f1fb9ad37f31e1c7c5cf1d0\">Register</a> ()</td></tr>\n<tr class=\"separator:a659789380f1fb9ad37f31e1c7c5cf1d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a434d6b26331482e5eedc5722bbed82f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a434d6b26331482e5eedc5722bbed82f5\">rendercomponent</a></td></tr>\n<tr class=\"separator:a434d6b26331482e5eedc5722bbed82f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f021e41414fb6acf33ea60c2f10cb7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a0f021e41414fb6acf33ea60c2f10cb7e\">physicscomponent</a></td></tr>\n<tr class=\"separator:a0f021e41414fb6acf33ea60c2f10cb7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a011bf8e6056bd07b2d36069df4cc4207\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a011bf8e6056bd07b2d36069df4cc4207\">model</a></td></tr>\n<tr class=\"separator:a011bf8e6056bd07b2d36069df4cc4207\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ec1339cf272045390bd2db9523c7aa6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html#a2ec1339cf272045390bd2db9523c7aa6\">collmodel</a></td></tr>\n<tr class=\"separator:a2ec1339cf272045390bd2db9523c7aa6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad35992af79b148f7f9c2b0d0fea8e80e\" name=\"ad35992af79b148f7f9c2b0d0fea8e80e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad35992af79b148f7f9c2b0d0fea8e80e\">&#9670;&nbsp;</a></span>TriggerRemove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerRemove::TriggerRemove </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a17be2043c131253b4745fdb117023d6a\" name=\"a17be2043c131253b4745fdb117023d6a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17be2043c131253b4745fdb117023d6a\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7abc24f4cf9546599316ab253c831354\" name=\"a7abc24f4cf9546599316ab253c831354\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7abc24f4cf9546599316ab253c831354\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a659789380f1fb9ad37f31e1c7c5cf1d0\" name=\"a659789380f1fb9ad37f31e1c7c5cf1d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a659789380f1fb9ad37f31e1c7c5cf1d0\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerRemove::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a88bdd15f6a6490a7886a3cad09d58c7e\" name=\"a88bdd15f6a6490a7886a3cad09d58c7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88bdd15f6a6490a7886a3cad09d58c7e\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aada02b3edb3d57715dec2d7236396aa9\" name=\"aada02b3edb3d57715dec2d7236396aa9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aada02b3edb3d57715dec2d7236396aa9\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1fa8abcdf02713b3ea65c1edcb3e90a2\" name=\"a1fa8abcdf02713b3ea65c1edcb3e90a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fa8abcdf02713b3ea65c1edcb3e90a2\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3a4f6cca899179fbbb6f851509ffc1b7\" name=\"a3a4f6cca899179fbbb6f851509ffc1b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a4f6cca899179fbbb6f851509ffc1b7\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerRemove::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2ec1339cf272045390bd2db9523c7aa6\" name=\"a2ec1339cf272045390bd2db9523c7aa6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ec1339cf272045390bd2db9523c7aa6\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerRemove::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a011bf8e6056bd07b2d36069df4cc4207\" name=\"a011bf8e6056bd07b2d36069df4cc4207\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a011bf8e6056bd07b2d36069df4cc4207\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerRemove::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f021e41414fb6acf33ea60c2f10cb7e\" name=\"a0f021e41414fb6acf33ea60c2f10cb7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f021e41414fb6acf33ea60c2f10cb7e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerRemove::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a434d6b26331482e5eedc5722bbed82f5\" name=\"a434d6b26331482e5eedc5722bbed82f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a434d6b26331482e5eedc5722bbed82f5\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerRemove::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_teleport-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">TriggerTeleport</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerTeleport Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a05f3e3f992314b26335dbec7661bbd9d\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a20d365f9d7d4b37bddbdabb755c3daa2\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a49148ab338ae421f0f077f3b0bec3e57\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ae9ef477668f55b6712b3a1dfa6d6cf79\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#aaa86d19d01855e94453e30ea0fd2264e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a390930a0e3a05725a2a91d914f2319ce\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#abdd2202919577f6584198a416efb2116\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ac113fe0f202c7e4e1be381e8675bd207\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ae87d30e3281886dd3ea5e7449d4663c7\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a2a6580bb94aa512ffd44c5223e1ccff9\">TriggerTeleport</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#af1305c36dfa2d1c79464a3d1e27fb4f3\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#aac99751570acfa1591ec4825ac2bb0d7\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">tram::Ext::Design::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::TriggerTeleport Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">TriggerTeleport</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::TriggerTeleport Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::TriggerTeleport:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.png\" usemap=\"#tram::Ext::Design::TriggerTeleport_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::TriggerTeleport_map\" name=\"tram::Ext::Design::TriggerTeleport_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,197,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2a6580bb94aa512ffd44c5223e1ccff9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a2a6580bb94aa512ffd44c5223e1ccff9\">TriggerTeleport</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a2a6580bb94aa512ffd44c5223e1ccff9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac99751570acfa1591ec4825ac2bb0d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#aac99751570acfa1591ec4825ac2bb0d7\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:aac99751570acfa1591ec4825ac2bb0d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae87d30e3281886dd3ea5e7449d4663c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ae87d30e3281886dd3ea5e7449d4663c7\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:ae87d30e3281886dd3ea5e7449d4663c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20d365f9d7d4b37bddbdabb755c3daa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a20d365f9d7d4b37bddbdabb755c3daa2\">Load</a> ()</td></tr>\n<tr class=\"separator:a20d365f9d7d4b37bddbdabb755c3daa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1305c36dfa2d1c79464a3d1e27fb4f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#af1305c36dfa2d1c79464a3d1e27fb4f3\">Unload</a> ()</td></tr>\n<tr class=\"separator:af1305c36dfa2d1c79464a3d1e27fb4f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac113fe0f202c7e4e1be381e8675bd207\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ac113fe0f202c7e4e1be381e8675bd207\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ac113fe0f202c7e4e1be381e8675bd207\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49148ab338ae421f0f077f3b0bec3e57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a49148ab338ae421f0f077f3b0bec3e57\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a49148ab338ae421f0f077f3b0bec3e57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a390930a0e3a05725a2a91d914f2319ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a390930a0e3a05725a2a91d914f2319ce\">Register</a> ()</td></tr>\n<tr class=\"separator:a390930a0e3a05725a2a91d914f2319ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:abdd2202919577f6584198a416efb2116\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#abdd2202919577f6584198a416efb2116\">rendercomponent</a></td></tr>\n<tr class=\"separator:abdd2202919577f6584198a416efb2116\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa86d19d01855e94453e30ea0fd2264e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#aaa86d19d01855e94453e30ea0fd2264e\">physicscomponent</a></td></tr>\n<tr class=\"separator:aaa86d19d01855e94453e30ea0fd2264e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9ef477668f55b6712b3a1dfa6d6cf79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#ae9ef477668f55b6712b3a1dfa6d6cf79\">model</a></td></tr>\n<tr class=\"separator:ae9ef477668f55b6712b3a1dfa6d6cf79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05f3e3f992314b26335dbec7661bbd9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html#a05f3e3f992314b26335dbec7661bbd9d\">collmodel</a></td></tr>\n<tr class=\"separator:a05f3e3f992314b26335dbec7661bbd9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a2a6580bb94aa512ffd44c5223e1ccff9\" name=\"a2a6580bb94aa512ffd44c5223e1ccff9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a6580bb94aa512ffd44c5223e1ccff9\">&#9670;&nbsp;</a></span>TriggerTeleport()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::TriggerTeleport::TriggerTeleport </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a20d365f9d7d4b37bddbdabb755c3daa2\" name=\"a20d365f9d7d4b37bddbdabb755c3daa2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20d365f9d7d4b37bddbdabb755c3daa2\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a49148ab338ae421f0f077f3b0bec3e57\" name=\"a49148ab338ae421f0f077f3b0bec3e57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49148ab338ae421f0f077f3b0bec3e57\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a390930a0e3a05725a2a91d914f2319ce\" name=\"a390930a0e3a05725a2a91d914f2319ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a390930a0e3a05725a2a91d914f2319ce\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::TriggerTeleport::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac113fe0f202c7e4e1be381e8675bd207\" name=\"ac113fe0f202c7e4e1be381e8675bd207\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac113fe0f202c7e4e1be381e8675bd207\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae87d30e3281886dd3ea5e7449d4663c7\" name=\"ae87d30e3281886dd3ea5e7449d4663c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae87d30e3281886dd3ea5e7449d4663c7\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af1305c36dfa2d1c79464a3d1e27fb4f3\" name=\"af1305c36dfa2d1c79464a3d1e27fb4f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1305c36dfa2d1c79464a3d1e27fb4f3\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aac99751570acfa1591ec4825ac2bb0d7\" name=\"aac99751570acfa1591ec4825ac2bb0d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac99751570acfa1591ec4825ac2bb0d7\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::TriggerTeleport::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a05f3e3f992314b26335dbec7661bbd9d\" name=\"a05f3e3f992314b26335dbec7661bbd9d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05f3e3f992314b26335dbec7661bbd9d\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerTeleport::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9ef477668f55b6712b3a1dfa6d6cf79\" name=\"ae9ef477668f55b6712b3a1dfa6d6cf79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9ef477668f55b6712b3a1dfa6d6cf79\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::TriggerTeleport::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa86d19d01855e94453e30ea0fd2264e\" name=\"aaa86d19d01855e94453e30ea0fd2264e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa86d19d01855e94453e30ea0fd2264e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::TriggerTeleport::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdd2202919577f6584198a416efb2116\" name=\"abdd2202919577f6584198a416efb2116\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdd2202919577f6584198a416efb2116\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::TriggerTeleport::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_water-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">Water</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Water Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#aacc75e234021b167f4d23b5906903df5\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a46c1c2b4c1124b360dd60a8789252cda\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a061ee8dbddf76d31f66aa99b0c4339ef\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a19a72de3bcb98926592d5ba3bb63161d\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#ae337fc1b837801deb9aae68192498c5e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a3530d98b6eb821b942c6e1307b8c0036\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *), std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a58730633bd111128181bf4b3228c372d\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a8310830b02af9360c2713c175d78b0ed\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a171a22674e531d04a4494e3282cbf03e\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a0c2600fd74d4048648136d4a3763279a\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a242555f7648024de0a1efafe6cbd5aa9\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a1881343a587b78edc349dd5a2b96fa77\">Water</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">tram::Ext::Design::Water</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_design_1_1_water.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Water Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">Water</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_design_1_1_water-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Water Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Design::Water:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_design_1_1_water.png\" usemap=\"#tram::Ext::Design::Water_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Design::Water_map\" name=\"tram::Ext::Design::Water_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,143,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a1881343a587b78edc349dd5a2b96fa77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a1881343a587b78edc349dd5a2b96fa77\">Water</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a1881343a587b78edc349dd5a2b96fa77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a242555f7648024de0a1efafe6cbd5aa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a242555f7648024de0a1efafe6cbd5aa9\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a242555f7648024de0a1efafe6cbd5aa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a171a22674e531d04a4494e3282cbf03e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a171a22674e531d04a4494e3282cbf03e\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:a171a22674e531d04a4494e3282cbf03e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46c1c2b4c1124b360dd60a8789252cda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a46c1c2b4c1124b360dd60a8789252cda\">Load</a> ()</td></tr>\n<tr class=\"separator:a46c1c2b4c1124b360dd60a8789252cda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c2600fd74d4048648136d4a3763279a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a0c2600fd74d4048648136d4a3763279a\">Unload</a> ()</td></tr>\n<tr class=\"separator:a0c2600fd74d4048648136d4a3763279a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8310830b02af9360c2713c175d78b0ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a8310830b02af9360c2713c175d78b0ed\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a8310830b02af9360c2713c175d78b0ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a061ee8dbddf76d31f66aa99b0c4339ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a061ee8dbddf76d31f66aa99b0c4339ef\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a061ee8dbddf76d31f66aa99b0c4339ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad5c11d2b20ad361d97870de0efc52505\">IsDeleted</a> () const</td></tr>\n<tr class=\"separator:ad5c11d2b20ad361d97870de0efc52505 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a92595071017edcb10a3e69c6c107dfcb\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a92595071017edcb10a3e69c6c107dfcb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a96ef742273464b9c2f94b150831ffe95\">GetType</a> ()=0</td></tr>\n<tr class=\"separator:a96ef742273464b9c2f94b150831ffe95 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a3530d98b6eb821b942c6e1307b8c0036\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a3530d98b6eb821b942c6e1307b8c0036\">Register</a> ()</td></tr>\n<tr class=\"separator:a3530d98b6eb821b942c6e1307b8c0036\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6a923826bde056714c06277f09fa154f\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a6a923826bde056714c06277f09fa154f inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa8e819ecf3517570d5e1370978b15633\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:aa8e819ecf3517570d5e1370978b15633 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5602af0fc900dfba1d503c44f190e8ac\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"separator:a5602af0fc900dfba1d503c44f190e8ac inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbcea50950814a6b72beb0775a6b230a\">UpdateFromList</a> ()</td></tr>\n<tr class=\"separator:adbcea50950814a6b72beb0775a6b230a inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"File interface.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a58730633bd111128181bf4b3228c372d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a58730633bd111128181bf4b3228c372d\">rendercomponent</a></td></tr>\n<tr class=\"separator:a58730633bd111128181bf4b3228c372d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae337fc1b837801deb9aae68192498c5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#ae337fc1b837801deb9aae68192498c5e\">physicscomponent</a></td></tr>\n<tr class=\"separator:ae337fc1b837801deb9aae68192498c5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19a72de3bcb98926592d5ba3bb63161d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#a19a72de3bcb98926592d5ba3bb63161d\">model</a></td></tr>\n<tr class=\"separator:a19a72de3bcb98926592d5ba3bb63161d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacc75e234021b167f4d23b5906903df5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html#aacc75e234021b167f4d23b5906903df5\">collmodel</a></td></tr>\n<tr class=\"separator:aacc75e234021b167f4d23b5906903df5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#af32e90ff2ac1952b1afb85964552aefba2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:af32e90ff2ac1952b1afb85964552aefb inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#a5634f058387643cf8852acd57fec78a6a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:a5634f058387643cf8852acd57fec78a6 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a1881343a587b78edc349dd5a2b96fa77\" name=\"a1881343a587b78edc349dd5a2b96fa77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1881343a587b78edc349dd5a2b96fa77\">&#9670;&nbsp;</a></span>Water()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Design::Water::Water </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a46c1c2b4c1124b360dd60a8789252cda\" name=\"a46c1c2b4c1124b360dd60a8789252cda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46c1c2b4c1124b360dd60a8789252cda\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a061ee8dbddf76d31f66aa99b0c4339ef\" name=\"a061ee8dbddf76d31f66aa99b0c4339ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a061ee8dbddf76d31f66aa99b0c4339ef\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3530d98b6eb821b942c6e1307b8c0036\" name=\"a3530d98b6eb821b942c6e1307b8c0036\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3530d98b6eb821b942c6e1307b8c0036\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::Water::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8310830b02af9360c2713c175d78b0ed\" name=\"a8310830b02af9360c2713c175d78b0ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8310830b02af9360c2713c175d78b0ed\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a171a22674e531d04a4494e3282cbf03e\" name=\"a171a22674e531d04a4494e3282cbf03e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a171a22674e531d04a4494e3282cbf03e\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0c2600fd74d4048648136d4a3763279a\" name=\"a0c2600fd74d4048648136d4a3763279a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c2600fd74d4048648136d4a3763279a\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a242555f7648024de0a1efafe6cbd5aa9\" name=\"a242555f7648024de0a1efafe6cbd5aa9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a242555f7648024de0a1efafe6cbd5aa9\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Water::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aacc75e234021b167f4d23b5906903df5\" name=\"aacc75e234021b167f4d23b5906903df5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacc75e234021b167f4d23b5906903df5\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Water::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a19a72de3bcb98926592d5ba3bb63161d\" name=\"a19a72de3bcb98926592d5ba3bb63161d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19a72de3bcb98926592d5ba3bb63161d\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::Water::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae337fc1b837801deb9aae68192498c5e\" name=\"ae337fc1b837801deb9aae68192498c5e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae337fc1b837801deb9aae68192498c5e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Design::Water::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58730633bd111128181bf4b3228c372d\" name=\"a58730633bd111128181bf4b3228c372d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58730633bd111128181bf4b3228c372d\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Design::Water::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIAgent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">ClearOverride</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">Find</a>(id_t id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">GetAnimationStateComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">GetControllerComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">override_stack</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">package_stack</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">Push</a>(AIPackage *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">PushOverride</a>(AIPackage *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">script</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">SetAnimationStateComponent</a>(AnimationStateComponent *c)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">SetControllerComponent</a>(ControllerComponent *c)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">variables</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AIAgent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIAgent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa8590467f7d1239c7e12e07a63ee0012\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *)</td></tr>\n<tr class=\"separator:aa8590467f7d1239c7e12e07a63ee0012\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0e2c46e1b281bc6f2d87c2c7f432272\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">Clear</a> ()</td></tr>\n<tr class=\"separator:ab0e2c46e1b281bc6f2d87c2c7f432272\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89181f116b73c484e5b57dbd2152a7c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">PushOverride</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *)</td></tr>\n<tr class=\"separator:a89181f116b73c484e5b57dbd2152a7c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b061b128f6b9e6494ed77517224db9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">ClearOverride</a> ()</td></tr>\n<tr class=\"separator:a8b061b128f6b9e6494ed77517224db9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d6f211e82a9785ead2324aa02ad7222\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">Update</a> ()</td></tr>\n<tr class=\"separator:a2d6f211e82a9785ead2324aa02ad7222\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7740703b2a0dfef31440331972ca0bdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">SetControllerComponent</a> (<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *c)</td></tr>\n<tr class=\"separator:a7740703b2a0dfef31440331972ca0bdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b750ab68f6cd76205f6f39a8b98f8e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">SetAnimationStateComponent</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> *c)</td></tr>\n<tr class=\"separator:a3b750ab68f6cd76205f6f39a8b98f8e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adfe0bb1d9761a59c4d36a83239fea93a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">GetControllerComponent</a> ()</td></tr>\n<tr class=\"separator:adfe0bb1d9761a59c4d36a83239fea93a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74c4e40e62073f4a4016ef0080d144f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">GetAnimationStateComponent</a> ()</td></tr>\n<tr class=\"separator:a74c4e40e62073f4a4016ef0080d144f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ab263983af0673c1974878b5d7299492e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> id)</td></tr>\n<tr class=\"separator:ab263983af0673c1974878b5d7299492e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aecf643b955c103675f0ae066f443dd16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">package_stack</a></td></tr>\n<tr class=\"separator:aecf643b955c103675f0ae066f443dd16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c1f9cd1c54afd025f332f11c4643cb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">override_stack</a></td></tr>\n<tr class=\"separator:a7c1f9cd1c54afd025f332f11c4643cb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a000cfce98b029d0db88a9cbbc17bc070\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">script</a></td></tr>\n<tr class=\"separator:a000cfce98b029d0db88a9cbbc17bc070\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07dad067bc1ef1dbfeaa7603a0c20130\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">variables</a></td></tr>\n<tr class=\"separator:a07dad067bc1ef1dbfeaa7603a0c20130\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab0e2c46e1b281bc6f2d87c2c7f432272\" name=\"ab0e2c46e1b281bc6f2d87c2c7f432272\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0e2c46e1b281bc6f2d87c2c7f432272\">&#9670;&nbsp;</a></span>Clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::Clear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8b061b128f6b9e6494ed77517224db9a\" name=\"a8b061b128f6b9e6494ed77517224db9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b061b128f6b9e6494ed77517224db9a\">&#9670;&nbsp;</a></span>ClearOverride()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::ClearOverride </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab263983af0673c1974878b5d7299492e\" name=\"ab263983af0673c1974878b5d7299492e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab263983af0673c1974878b5d7299492e\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a> * tram::Ext::Kitchensink::AIAgent::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a74c4e40e62073f4a4016ef0080d144f4\" name=\"a74c4e40e62073f4a4016ef0080d144f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74c4e40e62073f4a4016ef0080d144f4\">&#9670;&nbsp;</a></span>GetAnimationStateComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> * tram::Ext::Kitchensink::AIAgent::GetAnimationStateComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adfe0bb1d9761a59c4d36a83239fea93a\" name=\"adfe0bb1d9761a59c4d36a83239fea93a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adfe0bb1d9761a59c4d36a83239fea93a\">&#9670;&nbsp;</a></span>GetControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> * tram::Ext::Kitchensink::AIAgent::GetControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa8590467f7d1239c7e12e07a63ee0012\" name=\"aa8590467f7d1239c7e12e07a63ee0012\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa8590467f7d1239c7e12e07a63ee0012\">&#9670;&nbsp;</a></span>Push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a89181f116b73c484e5b57dbd2152a7c2\" name=\"a89181f116b73c484e5b57dbd2152a7c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89181f116b73c484e5b57dbd2152a7c2\">&#9670;&nbsp;</a></span>PushOverride()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::PushOverride </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b750ab68f6cd76205f6f39a8b98f8e8\" name=\"a3b750ab68f6cd76205f6f39a8b98f8e8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b750ab68f6cd76205f6f39a8b98f8e8\">&#9670;&nbsp;</a></span>SetAnimationStateComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::SetAnimationStateComponent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>c</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7740703b2a0dfef31440331972ca0bdf\" name=\"a7740703b2a0dfef31440331972ca0bdf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7740703b2a0dfef31440331972ca0bdf\">&#9670;&nbsp;</a></span>SetControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::SetControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>c</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d6f211e82a9785ead2324aa02ad7222\" name=\"a2d6f211e82a9785ead2324aa02ad7222\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d6f211e82a9785ead2324aa02ad7222\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIAgent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7c1f9cd1c54afd025f332f11c4643cb1\" name=\"a7c1f9cd1c54afd025f332f11c4643cb1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c1f9cd1c54afd025f332f11c4643cb1\">&#9670;&nbsp;</a></span>override_stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>*&gt; tram::Ext::Kitchensink::AIAgent::override_stack</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aecf643b955c103675f0ae066f443dd16\" name=\"aecf643b955c103675f0ae066f443dd16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aecf643b955c103675f0ae066f443dd16\">&#9670;&nbsp;</a></span>package_stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a>*&gt; tram::Ext::Kitchensink::AIAgent::package_stack</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a000cfce98b029d0db88a9cbbc17bc070\" name=\"a000cfce98b029d0db88a9cbbc17bc070\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a000cfce98b029d0db88a9cbbc17bc070\">&#9670;&nbsp;</a></span>script</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AIAgent::script</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07dad067bc1ef1dbfeaa7603a0c20130\" name=\"a07dad067bc1ef1dbfeaa7603a0c20130\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07dad067bc1ef1dbfeaa7603a0c20130\">&#9670;&nbsp;</a></span>variables</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a>&gt; tram::Ext::Kitchensink::AIAgent::variables</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"ai_8cpp.html\">ai.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIPackage Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">Make</a>(name_t name, valuearray_t params)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">Process</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">Register</a>(name_t name, ai_package_constr constr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">~AIPackage</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AIPackage Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIPackage Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aefe04093df4daf73c85b271413d19868\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">Process</a> ()=0</td></tr>\n<tr class=\"separator:aefe04093df4daf73c85b271413d19868\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad02bb92b98ecc4359ded1713f01eb19e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">~AIPackage</a> ()=default</td></tr>\n<tr class=\"separator:ad02bb92b98ecc4359ded1713f01eb19e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a084b23b5977c656c8b6792c3e2704df7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">ai_package_constr</a> constr)</td></tr>\n<tr class=\"separator:a084b23b5977c656c8b6792c3e2704df7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace7ea2819350d9638a0980f288c62416\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a> params)</td></tr>\n<tr class=\"separator:ace7ea2819350d9638a0980f288c62416\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a9647c7b82c89b70b1f28c6b6fa7f6349\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:a9647c7b82c89b70b1f28c6b6fa7f6349\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad02bb92b98ecc4359ded1713f01eb19e\" name=\"ad02bb92b98ecc4359ded1713f01eb19e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad02bb92b98ecc4359ded1713f01eb19e\">&#9670;&nbsp;</a></span>~AIPackage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Ext::Kitchensink::AIPackage::~AIPackage </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ace7ea2819350d9638a0980f288c62416\" name=\"ace7ea2819350d9638a0980f288c62416\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace7ea2819350d9638a0980f288c62416\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> * tram::Ext::Kitchensink::AIPackage::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>&#160;</td>\n          <td class=\"paramname\"><em>params</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aefe04093df4daf73c85b271413d19868\" name=\"aefe04093df4daf73c85b271413d19868\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefe04093df4daf73c85b271413d19868\">&#9670;&nbsp;</a></span>Process()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::AIPackage::Process </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a084b23b5977c656c8b6792c3e2704df7\" name=\"a084b23b5977c656c8b6792c3e2704df7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a084b23b5977c656c8b6792c3e2704df7\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AIPackage::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">ai_package_constr</a>&#160;</td>\n          <td class=\"paramname\"><em>constr</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9647c7b82c89b70b1f28c6b6fa7f6349\" name=\"a9647c7b82c89b70b1f28c6b6fa7f6349\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9647c7b82c89b70b1f28c6b6fa7f6349\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a>* tram::Ext::Kitchensink::AIPackage::parent = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"ai_8cpp.html\">ai.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimationStateComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123\">AnimationTable</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">GetAnimationComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">SetAnimationComponent</a>(AnimationComponent *component)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">SetAnimationTable</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">states</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">SwitchState</a>(name_t state)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">table</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimationStateComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimationStateComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::AnimationStateComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.png\" usemap=\"#tram::Ext::Kitchensink::AnimationStateComponent_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::AnimationStateComponent_map\" name=\"tram::Ext::Kitchensink::AnimationStateComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,281,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af88977e10e060bf16fb2398dd127edad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:af88977e10e060bf16fb2398dd127edad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a335a1c5814483482acbaf2417e624da4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">Start</a> ()</td></tr>\n<tr class=\"separator:a335a1c5814483482acbaf2417e624da4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a616a6e22840e08cf291834d172b22ee7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">SwitchState</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state)</td></tr>\n<tr class=\"separator:a616a6e22840e08cf291834d172b22ee7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa549e6a492118321af2af17a1c342290\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">SetAnimationTable</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:aa549e6a492118321af2af17a1c342290\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a353c54cd4574695e428894719609c595\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">SetAnimationComponent</a> (<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a>)</td></tr>\n<tr class=\"separator:a353c54cd4574695e428894719609c595\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6894d78aa54b2d0bf5bb4f55766c43b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">GetAnimationComponent</a> ()</td></tr>\n<tr class=\"separator:ac6894d78aa54b2d0bf5bb4f55766c43b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a61c57d2abc379ab7551ae47f74d31688\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">table</a> = nullptr</td></tr>\n<tr class=\"separator:a61c57d2abc379ab7551ae47f74d31688\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3332339eb0ad584e6dea173f1a03ad7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">component</a> = nullptr</td></tr>\n<tr class=\"separator:ad3332339eb0ad584e6dea173f1a03ad7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab06a67f085e005f0e985fd03f1bd2dcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">states</a></td></tr>\n<tr class=\"separator:ab06a67f085e005f0e985fd03f1bd2dcc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a6aa4df8a5973b3bb06701c7e430ba123\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123\">AnimationTable</a></td></tr>\n<tr class=\"separator:a6aa4df8a5973b3bb06701c7e430ba123\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af88977e10e060bf16fb2398dd127edad\" name=\"af88977e10e060bf16fb2398dd127edad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af88977e10e060bf16fb2398dd127edad\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationStateComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ac6894d78aa54b2d0bf5bb4f55766c43b\" name=\"ac6894d78aa54b2d0bf5bb4f55766c43b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6894d78aa54b2d0bf5bb4f55766c43b\">&#9670;&nbsp;</a></span>GetAnimationComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> * tram::Ext::Kitchensink::AnimationStateComponent::GetAnimationComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a353c54cd4574695e428894719609c595\" name=\"a353c54cd4574695e428894719609c595\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a353c54cd4574695e428894719609c595\">&#9670;&nbsp;</a></span>SetAnimationComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationStateComponent::SetAnimationComponent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>component</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa549e6a492118321af2af17a1c342290\" name=\"aa549e6a492118321af2af17a1c342290\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa549e6a492118321af2af17a1c342290\">&#9670;&nbsp;</a></span>SetAnimationTable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationStateComponent::SetAnimationTable </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a335a1c5814483482acbaf2417e624da4\" name=\"a335a1c5814483482acbaf2417e624da4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a335a1c5814483482acbaf2417e624da4\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationStateComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a616a6e22840e08cf291834d172b22ee7\" name=\"a616a6e22840e08cf291834d172b22ee7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a616a6e22840e08cf291834d172b22ee7\">&#9670;&nbsp;</a></span>SwitchState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationStateComponent::SwitchState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a6aa4df8a5973b3bb06701c7e430ba123\" name=\"a6aa4df8a5973b3bb06701c7e430ba123\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6aa4df8a5973b3bb06701c7e430ba123\">&#9670;&nbsp;</a></span>AnimationTable</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad3332339eb0ad584e6dea173f1a03ad7\" name=\"ad3332339eb0ad584e6dea173f1a03ad7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3332339eb0ad584e6dea173f1a03ad7\">&#9670;&nbsp;</a></span>component</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* tram::Ext::Kitchensink::AnimationStateComponent::component = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab06a67f085e005f0e985fd03f1bd2dcc\" name=\"ab06a67f085e005f0e985fd03f1bd2dcc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab06a67f085e005f0e985fd03f1bd2dcc\">&#9670;&nbsp;</a></span>states</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&gt; tram::Ext::Kitchensink::AnimationStateComponent::states</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61c57d2abc379ab7551ae47f74d31688\" name=\"a61c57d2abc379ab7551ae47f74d31688\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61c57d2abc379ab7551ae47f74d31688\">&#9670;&nbsp;</a></span>table</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a>* tram::Ext::Kitchensink::AnimationStateComponent::table = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_animation_table-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimationTable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">AddState</a>(name_t state, name_t space)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">AddStateSpace</a>(name_t name, name_t parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">AddTransition</a>(AnimStateTransitionFrom)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a3e2e0645eebf89ec94fa0e8352503c3b\">AddTransition</a>(AnimStateTransitionInto)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#abb6ce7a99352a9ed067351ed8598a321\">AddTransition</a>(AnimStateTransitionDefault)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">AnimationTable</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">SetStateAnimation</a>(name_t state, name_t animation_name, uint32_t repeats, float weight, float speed, bool pause_last)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">SetStateNextState</a>(name_t state, name_t next_state)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">SwitchState</a>(name_t state, AnimationStateComponent *state_component)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimationTable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimationTable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a1cb9d318dcab93ae71a377f195ceb3bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">AnimationTable</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a1cb9d318dcab93ae71a377f195ceb3bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac68d960146cdf7525c403fa80dce8d1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">SwitchState</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> *state_component)</td></tr>\n<tr class=\"separator:ac68d960146cdf7525c403fa80dce8d1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ccd358ff8f03863bb1c431931175c8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">AddStateSpace</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> parent)</td></tr>\n<tr class=\"separator:a4ccd358ff8f03863bb1c431931175c8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af80681af9d6461c2545e1ba6f3559a0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">AddState</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> space)</td></tr>\n<tr class=\"separator:af80681af9d6461c2545e1ba6f3559a0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a504aca8b015e8fca48124474966a6e1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">SetStateAnimation</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> animation_name, uint32_t repeats, float weight, float speed, bool pause_last)</td></tr>\n<tr class=\"separator:a504aca8b015e8fca48124474966a6e1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57b233bcdc733ea9c7128d23499ef5cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">SetStateNextState</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> next_state)</td></tr>\n<tr class=\"separator:a57b233bcdc733ea9c7128d23499ef5cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d0ea0b121a54d5ecee11eda9b8a621c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">AddTransition</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a>)</td></tr>\n<tr class=\"separator:a1d0ea0b121a54d5ecee11eda9b8a621c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e2e0645eebf89ec94fa0e8352503c3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a3e2e0645eebf89ec94fa0e8352503c3b\">AddTransition</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a>)</td></tr>\n<tr class=\"separator:a3e2e0645eebf89ec94fa0e8352503c3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb6ce7a99352a9ed067351ed8598a321\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#abb6ce7a99352a9ed067351ed8598a321\">AddTransition</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a>)</td></tr>\n<tr class=\"separator:abb6ce7a99352a9ed067351ed8598a321\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ae762d3e66cb45a4739a5cbfa915da3a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:ae762d3e66cb45a4739a5cbfa915da3a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a1cb9d318dcab93ae71a377f195ceb3bc\" name=\"a1cb9d318dcab93ae71a377f195ceb3bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1cb9d318dcab93ae71a377f195ceb3bc\">&#9670;&nbsp;</a></span>AnimationTable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::AnimationTable::AnimationTable </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af80681af9d6461c2545e1ba6f3559a0d\" name=\"af80681af9d6461c2545e1ba6f3559a0d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af80681af9d6461c2545e1ba6f3559a0d\">&#9670;&nbsp;</a></span>AddState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::AddState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>space</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ccd358ff8f03863bb1c431931175c8d\" name=\"a4ccd358ff8f03863bb1c431931175c8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ccd358ff8f03863bb1c431931175c8d\">&#9670;&nbsp;</a></span>AddStateSpace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::AddStateSpace </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abb6ce7a99352a9ed067351ed8598a321\" name=\"abb6ce7a99352a9ed067351ed8598a321\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb6ce7a99352a9ed067351ed8598a321\">&#9670;&nbsp;</a></span>AddTransition() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::AddTransition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a>&#160;</td>\n          <td class=\"paramname\"><em>transition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d0ea0b121a54d5ecee11eda9b8a621c\" name=\"a1d0ea0b121a54d5ecee11eda9b8a621c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d0ea0b121a54d5ecee11eda9b8a621c\">&#9670;&nbsp;</a></span>AddTransition() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::AddTransition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a>&#160;</td>\n          <td class=\"paramname\"><em>transition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e2e0645eebf89ec94fa0e8352503c3b\" name=\"a3e2e0645eebf89ec94fa0e8352503c3b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e2e0645eebf89ec94fa0e8352503c3b\">&#9670;&nbsp;</a></span>AddTransition() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::AddTransition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a>&#160;</td>\n          <td class=\"paramname\"><em>transition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae762d3e66cb45a4739a5cbfa915da3a1\" name=\"ae762d3e66cb45a4739a5cbfa915da3a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae762d3e66cb45a4739a5cbfa915da3a1\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a> * tram::Ext::Kitchensink::AnimationTable::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a504aca8b015e8fca48124474966a6e1e\" name=\"a504aca8b015e8fca48124474966a6e1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a504aca8b015e8fca48124474966a6e1e\">&#9670;&nbsp;</a></span>SetStateAnimation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::SetStateAnimation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>animation_name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>repeats</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>weight</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>pause_last</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57b233bcdc733ea9c7128d23499ef5cc\" name=\"a57b233bcdc733ea9c7128d23499ef5cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57b233bcdc733ea9c7128d23499ef5cc\">&#9670;&nbsp;</a></span>SetStateNextState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::SetStateNextState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>next_state</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac68d960146cdf7525c403fa80dce8d1f\" name=\"ac68d960146cdf7525c403fa80dce8d1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac68d960146cdf7525c403fa80dce8d1f\">&#9670;&nbsp;</a></span>SwitchState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AnimationTable::SwitchState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>state_component</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8cpp.html\">animationtable.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">Find</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">GetName</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">Recalculate</a>(Attribute &amp;, const AttributeContainer &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">Register</a>(AttributeInfo *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AttributeInfo Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeInfo Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab2c7811e4fd4d8ef5c00a8085d0eef4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">Recalculate</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> &amp;, const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> &amp;)</td></tr>\n<tr class=\"separator:ab2c7811e4fd4d8ef5c00a8085d0eef4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dddff605761144769af37f736b0d99a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">GetName</a> ()</td></tr>\n<tr class=\"separator:a4dddff605761144769af37f736b0d99a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1ed7709d6bccc5c11c042e1f9062c4c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">Register</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> *)</td></tr>\n<tr class=\"separator:a1ed7709d6bccc5c11c042e1f9062c4c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ee5018c065a5d17681306983e5240b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a3ee5018c065a5d17681306983e5240b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7c20f9f0740b7cb843b7f83236c7ce48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">name</a></td></tr>\n<tr class=\"separator:a7c20f9f0740b7cb843b7f83236c7ce48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3ee5018c065a5d17681306983e5240b5\" name=\"a3ee5018c065a5d17681306983e5240b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ee5018c065a5d17681306983e5240b5\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> * tram::Ext::Kitchensink::AttributeInfo::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4dddff605761144769af37f736b0d99a\" name=\"a4dddff605761144769af37f736b0d99a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4dddff605761144769af37f736b0d99a\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AttributeInfo::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2c7811e4fd4d8ef5c00a8085d0eef4b\" name=\"ab2c7811e4fd4d8ef5c00a8085d0eef4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">&#9670;&nbsp;</a></span>Recalculate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeInfo::Recalculate </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>attribute</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1ed7709d6bccc5c11c042e1f9062c4c8\" name=\"a1ed7709d6bccc5c11c042e1f9062c4c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ed7709d6bccc5c11c042e1f9062c4c8\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeInfo::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> *&#160;</td>\n          <td class=\"paramname\"><em>info</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7c20f9f0740b7cb843b7f83236c7ce48\" name=\"a7c20f9f0740b7cb843b7f83236c7ce48\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c20f9f0740b7cb843b7f83236c7ce48\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AttributeInfo::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8cpp.html\">attributes.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_breakable-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">Breakable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Breakable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">Breakable</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Breakable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">Breakable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Breakable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::Breakable:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.png\" usemap=\"#tram::Ext::Kitchensink::Breakable_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::Breakable_map\" name=\"tram::Ext::Kitchensink::Breakable_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,192,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a391835e621041d6ff5d42830deb4551d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">Breakable</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a391835e621041d6ff5d42830deb4551d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae8c4d28e4f057e28f392e96a498890c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:aae8c4d28e4f057e28f392e96a498890c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">More...</a><br /></td></tr>\n<tr class=\"separator:aae8c4d28e4f057e28f392e96a498890c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af79ddccccc2a9a8fabb87a5634e91c3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:af79ddccccc2a9a8fabb87a5634e91c3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">More...</a><br /></td></tr>\n<tr class=\"separator:af79ddccccc2a9a8fabb87a5634e91c3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a430889350ca4370924e484230119c29e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a430889350ca4370924e484230119c29e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">More...</a><br /></td></tr>\n<tr class=\"separator:a430889350ca4370924e484230119c29e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2fc102e7da4b0707df89f56909a1c20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:af2fc102e7da4b0707df89f56909a1c20\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">More...</a><br /></td></tr>\n<tr class=\"separator:af2fc102e7da4b0707df89f56909a1c20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa00b9673f6363852e48c7522e202fd30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa00b9673f6363852e48c7522e202fd30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee0cec5c3827047160688f550eb3a9f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:aee0cec5c3827047160688f550eb3a9f4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">More...</a><br /></td></tr>\n<tr class=\"separator:aee0cec5c3827047160688f550eb3a9f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1de507d7dea92475ef9f2437f1e58e6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">Register</a> ()</td></tr>\n<tr class=\"separator:a1de507d7dea92475ef9f2437f1e58e6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a9cd3710f61b4079ce2f48d9b21a8ff80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">rendercomponent</a></td></tr>\n<tr class=\"separator:a9cd3710f61b4079ce2f48d9b21a8ff80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac912d2b557ffcb5d2883ea43646b5b17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">physicscomponent</a></td></tr>\n<tr class=\"separator:ac912d2b557ffcb5d2883ea43646b5b17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74d7eb13aeb7ac3a513fef56b0fe0bf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">model</a></td></tr>\n<tr class=\"separator:a74d7eb13aeb7ac3a513fef56b0fe0bf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9dd4b432726ee750a3c86fff4e6886ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">collmodel</a></td></tr>\n<tr class=\"separator:a9dd4b432726ee750a3c86fff4e6886ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a391835e621041d6ff5d42830deb4551d\" name=\"a391835e621041d6ff5d42830deb4551d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a391835e621041d6ff5d42830deb4551d\">&#9670;&nbsp;</a></span>Breakable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Breakable::Breakable </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a430889350ca4370924e484230119c29e\" name=\"a430889350ca4370924e484230119c29e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a430889350ca4370924e484230119c29e\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aee0cec5c3827047160688f550eb3a9f4\" name=\"aee0cec5c3827047160688f550eb3a9f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee0cec5c3827047160688f550eb3a9f4\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1de507d7dea92475ef9f2437f1e58e6f\" name=\"a1de507d7dea92475ef9f2437f1e58e6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1de507d7dea92475ef9f2437f1e58e6f\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::Breakable::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa00b9673f6363852e48c7522e202fd30\" name=\"aa00b9673f6363852e48c7522e202fd30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa00b9673f6363852e48c7522e202fd30\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af79ddccccc2a9a8fabb87a5634e91c3d\" name=\"af79ddccccc2a9a8fabb87a5634e91c3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af79ddccccc2a9a8fabb87a5634e91c3d\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af2fc102e7da4b0707df89f56909a1c20\" name=\"af2fc102e7da4b0707df89f56909a1c20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2fc102e7da4b0707df89f56909a1c20\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aae8c4d28e4f057e28f392e96a498890c\" name=\"aae8c4d28e4f057e28f392e96a498890c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae8c4d28e4f057e28f392e96a498890c\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Breakable::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9dd4b432726ee750a3c86fff4e6886ee\" name=\"a9dd4b432726ee750a3c86fff4e6886ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9dd4b432726ee750a3c86fff4e6886ee\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Breakable::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a74d7eb13aeb7ac3a513fef56b0fe0bf4\" name=\"a74d7eb13aeb7ac3a513fef56b0fe0bf4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Breakable::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac912d2b557ffcb5d2883ea43646b5b17\" name=\"ac912d2b557ffcb5d2883ea43646b5b17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac912d2b557ffcb5d2883ea43646b5b17\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::Breakable::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9cd3710f61b4079ce2f48d9b21a8ff80\" name=\"a9cd3710f61b4079ce2f48d9b21a8ff80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cd3710f61b4079ce2f48d9b21a8ff80\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::Breakable::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_button-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">Button</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Button Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">Button</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">last_activate</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">origin</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">pause</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">progress</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">sound</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">start_pos</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">start_rot</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">state</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">SwitchState</a>(int)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tick</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">timer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_button.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Button Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">Button</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Button Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Essentially a func_door.  \n <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">extensions/kitchensink/entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::Button:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.png\" usemap=\"#tram::Ext::Kitchensink::Button_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::Button_map\" name=\"tram::Ext::Kitchensink::Button_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,170,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a1cdc713f455d7e0df9815ce1c75b67b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">Button</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a1cdc713f455d7e0df9815ce1c75b67b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fb8a5285093beccc894039c5102aab4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a5fb8a5285093beccc894039c5102aab4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">More...</a><br /></td></tr>\n<tr class=\"separator:a5fb8a5285093beccc894039c5102aab4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a29563d3cf838e8bd7f981b155a61fb72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a29563d3cf838e8bd7f981b155a61fb72\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">More...</a><br /></td></tr>\n<tr class=\"separator:a29563d3cf838e8bd7f981b155a61fb72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae16221eb106915c8e3e509709f52952\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">Load</a> ()</td></tr>\n<tr class=\"memdesc:aae16221eb106915c8e3e509709f52952\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">More...</a><br /></td></tr>\n<tr class=\"separator:aae16221eb106915c8e3e509709f52952\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8eac7f52eb37a936c9378307412c6c08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a8eac7f52eb37a936c9378307412c6c08\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">More...</a><br /></td></tr>\n<tr class=\"separator:a8eac7f52eb37a936c9378307412c6c08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac06e45332876905bc76befbaf387b20f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ac06e45332876905bc76befbaf387b20f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a328b1b451e9dabf23d90ea283bfb73bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a328b1b451e9dabf23d90ea283bfb73bc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">More...</a><br /></td></tr>\n<tr class=\"separator:a328b1b451e9dabf23d90ea283bfb73bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ffa11cb9e77ee441e75c12c776daf2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a7ffa11cb9e77ee441e75c12c776daf2d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">More...</a><br /></td></tr>\n<tr class=\"separator:a7ffa11cb9e77ee441e75c12c776daf2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ce13fa0441d27759aab3911ec2940ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:a7ce13fa0441d27759aab3911ec2940ec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">More...</a><br /></td></tr>\n<tr class=\"separator:a7ce13fa0441d27759aab3911ec2940ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ad10e29486dbc5f775f99ad93f94b265c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">Register</a> ()</td></tr>\n<tr class=\"separator:ad10e29486dbc5f775f99ad93f94b265c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:ab4cc583a65fe7ce2582924ca93283361\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">SwitchState</a> (int)</td></tr>\n<tr class=\"separator:ab4cc583a65fe7ce2582924ca93283361\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a02890ff2bdddc5eda0fb4b325318ae35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">rendercomponent</a></td></tr>\n<tr class=\"separator:a02890ff2bdddc5eda0fb4b325318ae35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dd2f1f76ca0846de1455e4ad4d1cf8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">physicscomponent</a></td></tr>\n<tr class=\"separator:a4dd2f1f76ca0846de1455e4ad4d1cf8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac41e197036c5ef823dbcd7f6bb5ae240\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tick</a></td></tr>\n<tr class=\"separator:ac41e197036c5ef823dbcd7f6bb5ae240\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a230b3c266b55a9107188d5ceb44d2aab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">flags</a></td></tr>\n<tr class=\"separator:a230b3c266b55a9107188d5ceb44d2aab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eda56e61bb29500549213c1d194a550\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">model</a></td></tr>\n<tr class=\"separator:a1eda56e61bb29500549213c1d194a550\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaabf5a2f388426badc47c45deff2a92c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">lightmap</a></td></tr>\n<tr class=\"separator:aaabf5a2f388426badc47c45deff2a92c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd3ab3f24e9881fafefd2f8f47e1e902\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">origin</a></td></tr>\n<tr class=\"separator:abd3ab3f24e9881fafefd2f8f47e1e902\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96280d02e43933a1164d053405b673b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">direction</a></td></tr>\n<tr class=\"separator:a96280d02e43933a1164d053405b673b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac47c81071b86e3b5876d1baa0c263080\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">speed</a></td></tr>\n<tr class=\"separator:ac47c81071b86e3b5876d1baa0c263080\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86d016cc6943098f57b0b48ae9b39b8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">pause</a></td></tr>\n<tr class=\"separator:a86d016cc6943098f57b0b48ae9b39b8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07df9007e2a4fa2938fe69f78e2db2c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">distance</a></td></tr>\n<tr class=\"separator:a07df9007e2a4fa2938fe69f78e2db2c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9769adf64aaa9639b7855aeb3919ee6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">sound</a></td></tr>\n<tr class=\"separator:a9769adf64aaa9639b7855aeb3919ee6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9c047256c4c960006fcada8a7d03ede\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">parent</a></td></tr>\n<tr class=\"separator:ad9c047256c4c960006fcada8a7d03ede\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12a4f0a94979b7b9c112fe3d43dfefcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">start_pos</a></td></tr>\n<tr class=\"separator:a12a4f0a94979b7b9c112fe3d43dfefcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae091221f1e75d235db2a4ab7ba30b83b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">start_rot</a></td></tr>\n<tr class=\"separator:ae091221f1e75d235db2a4ab7ba30b83b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90673adbb238aace522e9ab8be1218d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">progress</a></td></tr>\n<tr class=\"separator:a90673adbb238aace522e9ab8be1218d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06388461c6b4eb74595e5231b97f1534\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">timer</a></td></tr>\n<tr class=\"separator:a06388461c6b4eb74595e5231b97f1534\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91ceb993b3cbf17626bccd4899157514\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">state</a></td></tr>\n<tr class=\"separator:a91ceb993b3cbf17626bccd4899157514\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4a1ce474fcd9da9bf9fc66dd27281ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">last_activate</a></td></tr>\n<tr class=\"separator:ac4a1ce474fcd9da9bf9fc66dd27281ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Essentially a func_door. </p>\n<p >It can open. It can close. It responds to <a class=\"el\" href=\"structtram_1_1_signal.html\" title=\"Message template.\">Signal</a> inputs and gives out outputs. It can be a door. It can be a lift. It can even be a button. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a1cdc713f455d7e0df9815ce1c75b67b9\" name=\"a1cdc713f455d7e0df9815ce1c75b67b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1cdc713f455d7e0df9815ce1c75b67b9\">&#9670;&nbsp;</a></span>Button()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Button::Button </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a328b1b451e9dabf23d90ea283bfb73bc\" name=\"a328b1b451e9dabf23d90ea283bfb73bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a328b1b451e9dabf23d90ea283bfb73bc\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive events. </p>\n<p >Whenever an entity registers an event, an event of the same type as the event listener is posted and <a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\" title=\"Dispatches events from the event queue.\">Event::Dispatch()</a> has been called, the entity will receive the event through this method. </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7ce13fa0441d27759aab3911ec2940ec\" name=\"a7ce13fa0441d27759aab3911ec2940ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ce13fa0441d27759aab3911ec2940ec\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Button::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aae16221eb106915c8e3e509709f52952\" name=\"aae16221eb106915c8e3e509709f52952\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae16221eb106915c8e3e509709f52952\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7ffa11cb9e77ee441e75c12c776daf2d\" name=\"a7ffa11cb9e77ee441e75c12c776daf2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ffa11cb9e77ee441e75c12c776daf2d\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad10e29486dbc5f775f99ad93f94b265c\" name=\"ad10e29486dbc5f775f99ad93f94b265c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad10e29486dbc5f775f99ad93f94b265c\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac06e45332876905bc76befbaf387b20f\" name=\"ac06e45332876905bc76befbaf387b20f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac06e45332876905bc76befbaf387b20f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a29563d3cf838e8bd7f981b155a61fb72\" name=\"a29563d3cf838e8bd7f981b155a61fb72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29563d3cf838e8bd7f981b155a61fb72\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab4cc583a65fe7ce2582924ca93283361\" name=\"ab4cc583a65fe7ce2582924ca93283361\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4cc583a65fe7ce2582924ca93283361\">&#9670;&nbsp;</a></span>SwitchState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::SwitchState </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8eac7f52eb37a936c9378307412c6c08\" name=\"a8eac7f52eb37a936c9378307412c6c08\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8eac7f52eb37a936c9378307412c6c08\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a5fb8a5285093beccc894039c5102aab4\" name=\"a5fb8a5285093beccc894039c5102aab4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fb8a5285093beccc894039c5102aab4\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Button::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a96280d02e43933a1164d053405b673b1\" name=\"a96280d02e43933a1164d053405b673b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96280d02e43933a1164d053405b673b1\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Kitchensink::Button::direction</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07df9007e2a4fa2938fe69f78e2db2c0\" name=\"a07df9007e2a4fa2938fe69f78e2db2c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07df9007e2a4fa2938fe69f78e2db2c0\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Button::distance</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a230b3c266b55a9107188d5ceb44d2aab\" name=\"a230b3c266b55a9107188d5ceb44d2aab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a230b3c266b55a9107188d5ceb44d2aab\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Kitchensink::Button::flags</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac4a1ce474fcd9da9bf9fc66dd27281ed\" name=\"ac4a1ce474fcd9da9bf9fc66dd27281ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4a1ce474fcd9da9bf9fc66dd27281ed\">&#9670;&nbsp;</a></span>last_activate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Button::last_activate</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaabf5a2f388426badc47c45deff2a92c\" name=\"aaabf5a2f388426badc47c45deff2a92c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaabf5a2f388426badc47c45deff2a92c\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Button::lightmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1eda56e61bb29500549213c1d194a550\" name=\"a1eda56e61bb29500549213c1d194a550\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1eda56e61bb29500549213c1d194a550\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Button::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd3ab3f24e9881fafefd2f8f47e1e902\" name=\"abd3ab3f24e9881fafefd2f8f47e1e902\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd3ab3f24e9881fafefd2f8f47e1e902\">&#9670;&nbsp;</a></span>origin</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Kitchensink::Button::origin</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9c047256c4c960006fcada8a7d03ede\" name=\"ad9c047256c4c960006fcada8a7d03ede\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9c047256c4c960006fcada8a7d03ede\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Button::parent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86d016cc6943098f57b0b48ae9b39b8e\" name=\"a86d016cc6943098f57b0b48ae9b39b8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86d016cc6943098f57b0b48ae9b39b8e\">&#9670;&nbsp;</a></span>pause</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Button::pause</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4dd2f1f76ca0846de1455e4ad4d1cf8d\" name=\"a4dd2f1f76ca0846de1455e4ad4d1cf8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::Button::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a90673adbb238aace522e9ab8be1218d6\" name=\"a90673adbb238aace522e9ab8be1218d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90673adbb238aace522e9ab8be1218d6\">&#9670;&nbsp;</a></span>progress</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Button::progress</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02890ff2bdddc5eda0fb4b325318ae35\" name=\"a02890ff2bdddc5eda0fb4b325318ae35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02890ff2bdddc5eda0fb4b325318ae35\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::Button::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9769adf64aaa9639b7855aeb3919ee6f\" name=\"a9769adf64aaa9639b7855aeb3919ee6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9769adf64aaa9639b7855aeb3919ee6f\">&#9670;&nbsp;</a></span>sound</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Button::sound</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac47c81071b86e3b5876d1baa0c263080\" name=\"ac47c81071b86e3b5876d1baa0c263080\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac47c81071b86e3b5876d1baa0c263080\">&#9670;&nbsp;</a></span>speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Button::speed</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a12a4f0a94979b7b9c112fe3d43dfefcd\" name=\"a12a4f0a94979b7b9c112fe3d43dfefcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12a4f0a94979b7b9c112fe3d43dfefcd\">&#9670;&nbsp;</a></span>start_pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Ext::Kitchensink::Button::start_pos</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae091221f1e75d235db2a4ab7ba30b83b\" name=\"ae091221f1e75d235db2a4ab7ba30b83b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae091221f1e75d235db2a4ab7ba30b83b\">&#9670;&nbsp;</a></span>start_rot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Kitchensink::Button::start_rot</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a91ceb993b3cbf17626bccd4899157514\" name=\"a91ceb993b3cbf17626bccd4899157514\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91ceb993b3cbf17626bccd4899157514\">&#9670;&nbsp;</a></span>state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Button::state</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac41e197036c5ef823dbcd7f6bb5ae240\" name=\"ac41e197036c5ef823dbcd7f6bb5ae240\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac41e197036c5ef823dbcd7f6bb5ae240\">&#9670;&nbsp;</a></span>tick</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a> tram::Ext::Kitchensink::Button::tick</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a06388461c6b4eb74595e5231b97f1534\" name=\"a06388461c6b4eb74595e5231b97f1534\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06388461c6b4eb74595e5231b97f1534\">&#9670;&nbsp;</a></span>timer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Button::timer</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_character-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Character Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">AddClass</a>(CharacterClass *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">character_class</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">dispositions</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">entity_id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737\">Faction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">factions</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">Find</a>(Entity *entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a70f852d7053390285611b9a81062e1f2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">GetBaseDisposition</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">GetDisposition</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">HasClass</a>(CharacterClass *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">IsInFaction</a>(Faction *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">LoadFromDisk</a>(const char *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">SetBaseDisposition</a>(Character *, float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">tram::Ext::Kitchensink::Character</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_character.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Character Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Character Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab8675fad8c679169af255b91d45b807d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">AddClass</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *)</td></tr>\n<tr class=\"separator:ab8675fad8c679169af255b91d45b807d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f663500e9a6aa3dad2ea05fdbf4226f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">HasClass</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *)</td></tr>\n<tr class=\"separator:a7f663500e9a6aa3dad2ea05fdbf4226f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a763a7386afa5ddb550fdd616acdebdc7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">GetDisposition</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:a763a7386afa5ddb550fdd616acdebdc7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad00663d7d18b7b6d37adaf0b6337b8a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">GetBaseDisposition</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:ad00663d7d18b7b6d37adaf0b6337b8a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a250fa84700e6ae73eb75f343f8a7b1c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">SetBaseDisposition</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *, float)</td></tr>\n<tr class=\"separator:a250fa84700e6ae73eb75f343f8a7b1c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61fe7823c735263feb55c31b615e858e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">IsInFaction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *)</td></tr>\n<tr class=\"separator:a61fe7823c735263feb55c31b615e858e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:abe19a06c096ca336b0951e93013675e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">LoadFromDisk</a> (const char *)</td></tr>\n<tr class=\"separator:abe19a06c096ca336b0951e93013675e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6e2471fc73d5228e202990dba4af13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">Find</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"separator:aad6e2471fc73d5228e202990dba4af13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70f852d7053390285611b9a81062e1f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a70f852d7053390285611b9a81062e1f2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">entity_id</a>)</td></tr>\n<tr class=\"separator:a70f852d7053390285611b9a81062e1f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a9d2a11a8e15e555048c4c5213023ce32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">entity_id</a> = 0</td></tr>\n<tr class=\"separator:a9d2a11a8e15e555048c4c5213023ce32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2daf2dcab1aad5fbe67778562158b7b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">character_class</a> = nullptr</td></tr>\n<tr class=\"separator:a2daf2dcab1aad5fbe67778562158b7b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3bb575e1785d96a33747804dc658bffc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">dispositions</a></td></tr>\n<tr class=\"separator:a3bb575e1785d96a33747804dc658bffc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad38cfbf13b3b0044fb9b1b2fece43e37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">factions</a></td></tr>\n<tr class=\"separator:ad38cfbf13b3b0044fb9b1b2fece43e37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:abd70d3fa6043bc857bf6bc4d82805737\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737\">Faction</a></td></tr>\n<tr class=\"separator:abd70d3fa6043bc857bf6bc4d82805737\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab8675fad8c679169af255b91d45b807d\" name=\"ab8675fad8c679169af255b91d45b807d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8675fad8c679169af255b91d45b807d\">&#9670;&nbsp;</a></span>AddClass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Character::AddClass </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td>\n          <td class=\"paramname\"><em>character_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aad6e2471fc73d5228e202990dba4af13\" name=\"aad6e2471fc73d5228e202990dba4af13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad6e2471fc73d5228e202990dba4af13\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> * tram::Ext::Kitchensink::Character::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70f852d7053390285611b9a81062e1f2\" name=\"a70f852d7053390285611b9a81062e1f2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70f852d7053390285611b9a81062e1f2\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> * tram::Ext::Kitchensink::Character::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad00663d7d18b7b6d37adaf0b6337b8a5\" name=\"ad00663d7d18b7b6d37adaf0b6337b8a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad00663d7d18b7b6d37adaf0b6337b8a5\">&#9670;&nbsp;</a></span>GetBaseDisposition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Character::GetBaseDisposition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a763a7386afa5ddb550fdd616acdebdc7\" name=\"a763a7386afa5ddb550fdd616acdebdc7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a763a7386afa5ddb550fdd616acdebdc7\">&#9670;&nbsp;</a></span>GetDisposition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Character::GetDisposition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f663500e9a6aa3dad2ea05fdbf4226f\" name=\"a7f663500e9a6aa3dad2ea05fdbf4226f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f663500e9a6aa3dad2ea05fdbf4226f\">&#9670;&nbsp;</a></span>HasClass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Character::HasClass </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td>\n          <td class=\"paramname\"><em>character_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61fe7823c735263feb55c31b615e858e\" name=\"a61fe7823c735263feb55c31b615e858e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61fe7823c735263feb55c31b615e858e\">&#9670;&nbsp;</a></span>IsInFaction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Character::IsInFaction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td>\n          <td class=\"paramname\"><em>check_faction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe19a06c096ca336b0951e93013675e2\" name=\"abe19a06c096ca336b0951e93013675e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe19a06c096ca336b0951e93013675e2\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Character::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a250fa84700e6ae73eb75f343f8a7b1c2\" name=\"a250fa84700e6ae73eb75f343f8a7b1c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a250fa84700e6ae73eb75f343f8a7b1c2\">&#9670;&nbsp;</a></span>SetBaseDisposition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Character::SetBaseDisposition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>other</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>disposition_value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"abd70d3fa6043bc857bf6bc4d82805737\" name=\"abd70d3fa6043bc857bf6bc4d82805737\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd70d3fa6043bc857bf6bc4d82805737\">&#9670;&nbsp;</a></span>Faction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2daf2dcab1aad5fbe67778562158b7b5\" name=\"a2daf2dcab1aad5fbe67778562158b7b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2daf2dcab1aad5fbe67778562158b7b5\">&#9670;&nbsp;</a></span>character_class</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>* tram::Ext::Kitchensink::Character::character_class = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3bb575e1785d96a33747804dc658bffc\" name=\"a3bb575e1785d96a33747804dc658bffc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bb575e1785d96a33747804dc658bffc\">&#9670;&nbsp;</a></span>dispositions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a>&gt; tram::Ext::Kitchensink::Character::dispositions</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9d2a11a8e15e555048c4c5213023ce32\" name=\"a9d2a11a8e15e555048c4c5213023ce32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d2a11a8e15e555048c4c5213023ce32\">&#9670;&nbsp;</a></span>entity_id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Kitchensink::Character::entity_id = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad38cfbf13b3b0044fb9b1b2fece43e37\" name=\"ad38cfbf13b3b0044fb9b1b2fece43e37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad38cfbf13b3b0044fb9b1b2fece43e37\">&#9670;&nbsp;</a></span>factions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>*&gt; tram::Ext::Kitchensink::Character::factions</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_character_class-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::CharacterClass Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">AddBaseClass</a>(CharacterClass *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">AddFaction</a>(Faction *, float, float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">base_attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">base_classes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">base_factions</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">GatherBaseAttributes</a>(AttributeContainer &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">GatherFactions</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">GetAttribute</a>(name_t attribute)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">HasBaseClass</a>(CharacterClass *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">SetAttribute</a>(name_t attribute, float value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::CharacterClass Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::CharacterClass Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a84d3d60fea7430558208b30e8281d751\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">AddBaseClass</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *)</td></tr>\n<tr class=\"separator:a84d3d60fea7430558208b30e8281d751\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e87837dea2d956226d92986b23dadd2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">HasBaseClass</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *)</td></tr>\n<tr class=\"separator:a5e87837dea2d956226d92986b23dadd2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab809fb75392382fe9c0081e2b1c72248\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">SetAttribute</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> attribute, float value)</td></tr>\n<tr class=\"separator:ab809fb75392382fe9c0081e2b1c72248\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70e3248022a5813fa317d70d610c8096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">GetAttribute</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> attribute)</td></tr>\n<tr class=\"separator:a70e3248022a5813fa317d70d610c8096\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86b83d010b464d657533f54684f3b819\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">AddFaction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *, float, float)</td></tr>\n<tr class=\"separator:a86b83d010b464d657533f54684f3b819\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5638f87859e56de9420d25e4e5668a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">GatherBaseAttributes</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> &amp;)</td></tr>\n<tr class=\"separator:af5638f87859e56de9420d25e4e5668a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2afeea3b907ba87955f7f636a3681599\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">GatherFactions</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:a2afeea3b907ba87955f7f636a3681599\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ac7025bc9d8e297e380181b2f005f854d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:ac7025bc9d8e297e380181b2f005f854d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:adb00f39ea738b0df3ad9648819a215d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">base_classes</a></td></tr>\n<tr class=\"separator:adb00f39ea738b0df3ad9648819a215d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91bc67d549a53384a0b1aef0ced9fcd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">base_attributes</a></td></tr>\n<tr class=\"separator:a91bc67d549a53384a0b1aef0ced9fcd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6ce94fb5780a54fe9fff4d03f1d057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">base_factions</a></td></tr>\n<tr class=\"separator:a8d6ce94fb5780a54fe9fff4d03f1d057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a84d3d60fea7430558208b30e8281d751\" name=\"a84d3d60fea7430558208b30e8281d751\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84d3d60fea7430558208b30e8281d751\">&#9670;&nbsp;</a></span>AddBaseClass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::CharacterClass::AddBaseClass </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td>\n          <td class=\"paramname\"><em>character_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86b83d010b464d657533f54684f3b819\" name=\"a86b83d010b464d657533f54684f3b819\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86b83d010b464d657533f54684f3b819\">&#9670;&nbsp;</a></span>AddFaction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::CharacterClass::AddFaction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td>\n          <td class=\"paramname\"><em>faction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>rank</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>loyalty</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac7025bc9d8e297e380181b2f005f854d\" name=\"ac7025bc9d8e297e380181b2f005f854d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7025bc9d8e297e380181b2f005f854d\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> * tram::Ext::Kitchensink::CharacterClass::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5638f87859e56de9420d25e4e5668a8\" name=\"af5638f87859e56de9420d25e4e5668a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5638f87859e56de9420d25e4e5668a8\">&#9670;&nbsp;</a></span>GatherBaseAttributes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::CharacterClass::GatherBaseAttributes </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>container</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2afeea3b907ba87955f7f636a3681599\" name=\"a2afeea3b907ba87955f7f636a3681599\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2afeea3b907ba87955f7f636a3681599\">&#9670;&nbsp;</a></span>GatherFactions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::CharacterClass::GatherFactions </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70e3248022a5813fa317d70d610c8096\" name=\"a70e3248022a5813fa317d70d610c8096\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70e3248022a5813fa317d70d610c8096\">&#9670;&nbsp;</a></span>GetAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::CharacterClass::GetAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>attribute</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e87837dea2d956226d92986b23dadd2\" name=\"a5e87837dea2d956226d92986b23dadd2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e87837dea2d956226d92986b23dadd2\">&#9670;&nbsp;</a></span>HasBaseClass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::CharacterClass::HasBaseClass </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> *&#160;</td>\n          <td class=\"paramname\"><em>character_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab809fb75392382fe9c0081e2b1c72248\" name=\"ab809fb75392382fe9c0081e2b1c72248\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab809fb75392382fe9c0081e2b1c72248\">&#9670;&nbsp;</a></span>SetAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::CharacterClass::SetAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>attribute</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a91bc67d549a53384a0b1aef0ced9fcd7\" name=\"a91bc67d549a53384a0b1aef0ced9fcd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91bc67d549a53384a0b1aef0ced9fcd7\">&#9670;&nbsp;</a></span>base_attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a>&gt; tram::Ext::Kitchensink::CharacterClass::base_attributes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adb00f39ea738b0df3ad9648819a215d0\" name=\"adb00f39ea738b0df3ad9648819a215d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb00f39ea738b0df3ad9648819a215d0\">&#9670;&nbsp;</a></span>base_classes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a>*&gt; tram::Ext::Kitchensink::CharacterClass::base_classes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d6ce94fb5780a54fe9fff4d03f1d057\" name=\"a8d6ce94fb5780a54fe9fff4d03f1d057\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6ce94fb5780a54fe9fff4d03f1d057\">&#9670;&nbsp;</a></span>base_factions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a>&gt; tram::Ext::Kitchensink::CharacterClass::base_factions</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">DebugShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DebugShape Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">DebugShape</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DebugShape Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">DebugShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DebugShape Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::DebugShape:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.png\" usemap=\"#tram::Ext::Kitchensink::DebugShape_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::DebugShape_map\" name=\"tram::Ext::Kitchensink::DebugShape_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,208,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a20bdf86907cd7ccadbffa94d53dfac0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">DebugShape</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a20bdf86907cd7ccadbffa94d53dfac0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e0f87444db5fef3bd831bea39775302\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a2e0f87444db5fef3bd831bea39775302\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">More...</a><br /></td></tr>\n<tr class=\"separator:a2e0f87444db5fef3bd831bea39775302\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ecd14f21602db88a06c2b160cfa9174\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a1ecd14f21602db88a06c2b160cfa9174\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ecd14f21602db88a06c2b160cfa9174\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca488fc2cc2ee6132747b7f9ee2aa5af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">Load</a> ()</td></tr>\n<tr class=\"memdesc:aca488fc2cc2ee6132747b7f9ee2aa5af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">More...</a><br /></td></tr>\n<tr class=\"separator:aca488fc2cc2ee6132747b7f9ee2aa5af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:affdabd90a946e7aae9301f7d47d87fe1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:affdabd90a946e7aae9301f7d47d87fe1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">More...</a><br /></td></tr>\n<tr class=\"separator:affdabd90a946e7aae9301f7d47d87fe1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0fedc7fe85850fe25383fe839b67738\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa0fedc7fe85850fe25383fe839b67738\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3db61b3a8693e5b27a5be2f811d2dff0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a3db61b3a8693e5b27a5be2f811d2dff0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">More...</a><br /></td></tr>\n<tr class=\"separator:a3db61b3a8693e5b27a5be2f811d2dff0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aa0ac5e2d0194f5d8a000240e5fdb81aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">Register</a> ()</td></tr>\n<tr class=\"separator:aa0ac5e2d0194f5d8a000240e5fdb81aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aa1a0877cf652538dc29c81a2b7be004c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">rendercomponent</a></td></tr>\n<tr class=\"separator:aa1a0877cf652538dc29c81a2b7be004c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b6d2a2cc1fa252481c5418e50d26c74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">physicscomponent</a></td></tr>\n<tr class=\"separator:a4b6d2a2cc1fa252481c5418e50d26c74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ab7b3efe24ac2f24fc2e94bbcc779bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">model</a></td></tr>\n<tr class=\"separator:a0ab7b3efe24ac2f24fc2e94bbcc779bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ad7471be8c0660f00e4f383673cd811\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">collmodel</a></td></tr>\n<tr class=\"separator:a9ad7471be8c0660f00e4f383673cd811\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a20bdf86907cd7ccadbffa94d53dfac0d\" name=\"a20bdf86907cd7ccadbffa94d53dfac0d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20bdf86907cd7ccadbffa94d53dfac0d\">&#9670;&nbsp;</a></span>DebugShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::DebugShape::DebugShape </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aca488fc2cc2ee6132747b7f9ee2aa5af\" name=\"aca488fc2cc2ee6132747b7f9ee2aa5af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca488fc2cc2ee6132747b7f9ee2aa5af\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3db61b3a8693e5b27a5be2f811d2dff0\" name=\"a3db61b3a8693e5b27a5be2f811d2dff0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3db61b3a8693e5b27a5be2f811d2dff0\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aa0ac5e2d0194f5d8a000240e5fdb81aa\" name=\"aa0ac5e2d0194f5d8a000240e5fdb81aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0ac5e2d0194f5d8a000240e5fdb81aa\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::DebugShape::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0fedc7fe85850fe25383fe839b67738\" name=\"aa0fedc7fe85850fe25383fe839b67738\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0fedc7fe85850fe25383fe839b67738\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1ecd14f21602db88a06c2b160cfa9174\" name=\"a1ecd14f21602db88a06c2b160cfa9174\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ecd14f21602db88a06c2b160cfa9174\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"affdabd90a946e7aae9301f7d47d87fe1\" name=\"affdabd90a946e7aae9301f7d47d87fe1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#affdabd90a946e7aae9301f7d47d87fe1\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2e0f87444db5fef3bd831bea39775302\" name=\"a2e0f87444db5fef3bd831bea39775302\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e0f87444db5fef3bd831bea39775302\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugShape::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9ad7471be8c0660f00e4f383673cd811\" name=\"a9ad7471be8c0660f00e4f383673cd811\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ad7471be8c0660f00e4f383673cd811\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DebugShape::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ab7b3efe24ac2f24fc2e94bbcc779bc\" name=\"a0ab7b3efe24ac2f24fc2e94bbcc779bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DebugShape::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b6d2a2cc1fa252481c5418e50d26c74\" name=\"a4b6d2a2cc1fa252481c5418e50d26c74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b6d2a2cc1fa252481c5418e50d26c74\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::DebugShape::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1a0877cf652538dc29c81a2b7be004c\" name=\"aa1a0877cf652538dc29c81a2b7be004c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1a0877cf652538dc29c81a2b7be004c\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::DebugShape::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_debug_text-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">DebugText</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DebugText Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">DebugText</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DebugText Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">DebugText</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DebugText Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::DebugText:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.png\" usemap=\"#tram::Ext::Kitchensink::DebugText_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::DebugText_map\" name=\"tram::Ext::Kitchensink::DebugText_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,195,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9246c8960e6ae16f5c13bcb030d2608a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">DebugText</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a9246c8960e6ae16f5c13bcb030d2608a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac335b5e268c6bde3d3d7dbbd7c9358a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:ac335b5e268c6bde3d3d7dbbd7c9358a5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">More...</a><br /></td></tr>\n<tr class=\"separator:ac335b5e268c6bde3d3d7dbbd7c9358a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8358248f0c5e4f2f1a8d6c999454f483\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a8358248f0c5e4f2f1a8d6c999454f483\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">More...</a><br /></td></tr>\n<tr class=\"separator:a8358248f0c5e4f2f1a8d6c999454f483\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33ea59023d2ab8334d03f2eca1920472\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a33ea59023d2ab8334d03f2eca1920472\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">More...</a><br /></td></tr>\n<tr class=\"separator:a33ea59023d2ab8334d03f2eca1920472\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade7918dd8156ee4252c58eece2cfdb98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ade7918dd8156ee4252c58eece2cfdb98\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">More...</a><br /></td></tr>\n<tr class=\"separator:ade7918dd8156ee4252c58eece2cfdb98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed52a8cb6a7d734e0da47fed6b687de3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aed52a8cb6a7d734e0da47fed6b687de3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3a96a3bea79e5de1e4db4b958d82450\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ab3a96a3bea79e5de1e4db4b958d82450\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">More...</a><br /></td></tr>\n<tr class=\"separator:ab3a96a3bea79e5de1e4db4b958d82450\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a2cfbebb081bb04c2c636f90378f62499\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">Register</a> ()</td></tr>\n<tr class=\"separator:a2cfbebb081bb04c2c636f90378f62499\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aea53d3e3b4c26becbb0f358cf8e13dcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">rendercomponent</a></td></tr>\n<tr class=\"separator:aea53d3e3b4c26becbb0f358cf8e13dcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24ac74bcb44bef87d855544b8040e83d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">physicscomponent</a></td></tr>\n<tr class=\"separator:a24ac74bcb44bef87d855544b8040e83d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac289a25bd2a5fbdd29c0d3572a99db27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">model</a></td></tr>\n<tr class=\"separator:ac289a25bd2a5fbdd29c0d3572a99db27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d06ca5c12e96a67c3f5560ad8832215\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">collmodel</a></td></tr>\n<tr class=\"separator:a9d06ca5c12e96a67c3f5560ad8832215\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a9246c8960e6ae16f5c13bcb030d2608a\" name=\"a9246c8960e6ae16f5c13bcb030d2608a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9246c8960e6ae16f5c13bcb030d2608a\">&#9670;&nbsp;</a></span>DebugText()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::DebugText::DebugText </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a33ea59023d2ab8334d03f2eca1920472\" name=\"a33ea59023d2ab8334d03f2eca1920472\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33ea59023d2ab8334d03f2eca1920472\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab3a96a3bea79e5de1e4db4b958d82450\" name=\"ab3a96a3bea79e5de1e4db4b958d82450\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab3a96a3bea79e5de1e4db4b958d82450\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2cfbebb081bb04c2c636f90378f62499\" name=\"a2cfbebb081bb04c2c636f90378f62499\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2cfbebb081bb04c2c636f90378f62499\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::DebugText::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed52a8cb6a7d734e0da47fed6b687de3\" name=\"aed52a8cb6a7d734e0da47fed6b687de3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed52a8cb6a7d734e0da47fed6b687de3\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a8358248f0c5e4f2f1a8d6c999454f483\" name=\"a8358248f0c5e4f2f1a8d6c999454f483\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8358248f0c5e4f2f1a8d6c999454f483\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ade7918dd8156ee4252c58eece2cfdb98\" name=\"ade7918dd8156ee4252c58eece2cfdb98\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade7918dd8156ee4252c58eece2cfdb98\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac335b5e268c6bde3d3d7dbbd7c9358a5\" name=\"ac335b5e268c6bde3d3d7dbbd7c9358a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac335b5e268c6bde3d3d7dbbd7c9358a5\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DebugText::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9d06ca5c12e96a67c3f5560ad8832215\" name=\"a9d06ca5c12e96a67c3f5560ad8832215\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d06ca5c12e96a67c3f5560ad8832215\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DebugText::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac289a25bd2a5fbdd29c0d3572a99db27\" name=\"ac289a25bd2a5fbdd29c0d3572a99db27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac289a25bd2a5fbdd29c0d3572a99db27\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DebugText::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24ac74bcb44bef87d855544b8040e83d\" name=\"a24ac74bcb44bef87d855544b8040e83d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24ac74bcb44bef87d855544b8040e83d\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::DebugText::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea53d3e3b4c26becbb0f358cf8e13dcd\" name=\"aea53d3e3b4c26becbb0f358cf8e13dcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea53d3e3b4c26becbb0f358cf8e13dcd\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::DebugText::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">DialogController</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogController Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">DialogController</a>(name_t initial_topic)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">GetAnswer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">GetPrompts</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">MoveTo</a>(size_t prompt_index)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">ShouldExit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DialogController Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">DialogController</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogController Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab13380e0377c25667f57e127f1971ae7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">DialogController</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> initial_topic)</td></tr>\n<tr class=\"separator:ab13380e0377c25667f57e127f1971ae7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80e5cf34f6478ba8921ad4df746252db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">GetAnswer</a> ()</td></tr>\n<tr class=\"separator:a80e5cf34f6478ba8921ad4df746252db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae25eee3d66e055232539c9c5fe471c39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">GetPrompts</a> ()</td></tr>\n<tr class=\"separator:ae25eee3d66e055232539c9c5fe471c39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1134f34b965c2b538a4d8ca670c233b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">ShouldExit</a> ()</td></tr>\n<tr class=\"separator:ab1134f34b965c2b538a4d8ca670c233b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63a0067b174a312d9f08a935f86f1226\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">MoveTo</a> (size_t prompt_index)</td></tr>\n<tr class=\"separator:a63a0067b174a312d9f08a935f86f1226\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab13380e0377c25667f57e127f1971ae7\" name=\"ab13380e0377c25667f57e127f1971ae7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab13380e0377c25667f57e127f1971ae7\">&#9670;&nbsp;</a></span>DialogController()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::DialogController::DialogController </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>initial_topic</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a80e5cf34f6478ba8921ad4df746252db\" name=\"a80e5cf34f6478ba8921ad4df746252db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80e5cf34f6478ba8921ad4df746252db\">&#9670;&nbsp;</a></span>GetAnswer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogController::GetAnswer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae25eee3d66e055232539c9c5fe471c39\" name=\"ae25eee3d66e055232539c9c5fe471c39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae25eee3d66e055232539c9c5fe471c39\">&#9670;&nbsp;</a></span>GetPrompts()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; tram::Ext::Kitchensink::DialogController::GetPrompts </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a63a0067b174a312d9f08a935f86f1226\" name=\"a63a0067b174a312d9f08a935f86f1226\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63a0067b174a312d9f08a935f86f1226\">&#9670;&nbsp;</a></span>MoveTo()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DialogController::MoveTo </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>prompt_index</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1134f34b965c2b538a4d8ca670c233b\" name=\"ab1134f34b965c2b538a4d8ca670c233b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1134f34b965c2b538a4d8ca670c233b\">&#9670;&nbsp;</a></span>ShouldExit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::DialogController::ShouldExit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_faction-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Faction Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">AddCharacter</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">GetCharacterLoyalty</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">GetCharacterRank</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">GetDisposition</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">GetRelation</a>(Faction *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">HasCharacter</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">ranks</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">relations</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">RemoveCharacter</a>(Character *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">SetCharacterLoyalty</a>(Character *, float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">SetCharacterRank</a>(Character *, float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">SetRelation</a>(Faction *, float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">tram::Ext::Kitchensink::Faction</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_faction.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Faction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Faction Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae240133d8845aeae9cffc999e37a1763\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">AddCharacter</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:ae240133d8845aeae9cffc999e37a1763\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe0e002aef7acae2e30fc9c756777b1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">RemoveCharacter</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:abe0e002aef7acae2e30fc9c756777b1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52cf75871489b10c7a6bf1ca2ad407b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">HasCharacter</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:a52cf75871489b10c7a6bf1ca2ad407b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b2fb5b81f7d1d27dab2eac014eddef4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">SetCharacterRank</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *, float)</td></tr>\n<tr class=\"separator:a4b2fb5b81f7d1d27dab2eac014eddef4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8d824372cef0f862a20d2e0e1cc6efc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">SetCharacterLoyalty</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *, float)</td></tr>\n<tr class=\"separator:ad8d824372cef0f862a20d2e0e1cc6efc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48b732c21adc306f5856cb68ab300bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">GetCharacterRank</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:af48b732c21adc306f5856cb68ab300bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fa045c160d1fecb4cde3f76ab729ffa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">GetCharacterLoyalty</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:a9fa045c160d1fecb4cde3f76ab729ffa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a925e58834615871b89a1e8e7e223a54b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">SetRelation</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *, float)</td></tr>\n<tr class=\"separator:a925e58834615871b89a1e8e7e223a54b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacebbb1b8bcdf040a4d70a88d91c2bb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">GetRelation</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *)</td></tr>\n<tr class=\"separator:aacebbb1b8bcdf040a4d70a88d91c2bb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fccfeb5e5a198b94e2cef7825bfd113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">GetDisposition</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *)</td></tr>\n<tr class=\"separator:a0fccfeb5e5a198b94e2cef7825bfd113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1f3e834fa982e5d591e0e382fc477e9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">name</a>)</td></tr>\n<tr class=\"separator:a1f3e834fa982e5d591e0e382fc477e9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae37fd3f67a9a89138abf720d56b9ab3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">name</a></td></tr>\n<tr class=\"separator:ae37fd3f67a9a89138abf720d56b9ab3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a04d109da4bb8712655c604c986d6df2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">ranks</a></td></tr>\n<tr class=\"separator:a04d109da4bb8712655c604c986d6df2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8863648b8b05263ec564eb65d860793f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">relations</a></td></tr>\n<tr class=\"separator:a8863648b8b05263ec564eb65d860793f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ae240133d8845aeae9cffc999e37a1763\" name=\"ae240133d8845aeae9cffc999e37a1763\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae240133d8845aeae9cffc999e37a1763\">&#9670;&nbsp;</a></span>AddCharacter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Faction::AddCharacter </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f3e834fa982e5d591e0e382fc477e9c\" name=\"a1f3e834fa982e5d591e0e382fc477e9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f3e834fa982e5d591e0e382fc477e9c\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> * tram::Ext::Kitchensink::Faction::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9fa045c160d1fecb4cde3f76ab729ffa\" name=\"a9fa045c160d1fecb4cde3f76ab729ffa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fa045c160d1fecb4cde3f76ab729ffa\">&#9670;&nbsp;</a></span>GetCharacterLoyalty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Faction::GetCharacterLoyalty </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af48b732c21adc306f5856cb68ab300bf\" name=\"af48b732c21adc306f5856cb68ab300bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af48b732c21adc306f5856cb68ab300bf\">&#9670;&nbsp;</a></span>GetCharacterRank()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Faction::GetCharacterRank </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0fccfeb5e5a198b94e2cef7825bfd113\" name=\"a0fccfeb5e5a198b94e2cef7825bfd113\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fccfeb5e5a198b94e2cef7825bfd113\">&#9670;&nbsp;</a></span>GetDisposition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Faction::GetDisposition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aacebbb1b8bcdf040a4d70a88d91c2bb7\" name=\"aacebbb1b8bcdf040a4d70a88d91c2bb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacebbb1b8bcdf040a4d70a88d91c2bb7\">&#9670;&nbsp;</a></span>GetRelation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Faction::GetRelation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52cf75871489b10c7a6bf1ca2ad407b1\" name=\"a52cf75871489b10c7a6bf1ca2ad407b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52cf75871489b10c7a6bf1ca2ad407b1\">&#9670;&nbsp;</a></span>HasCharacter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Faction::HasCharacter </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe0e002aef7acae2e30fc9c756777b1f\" name=\"abe0e002aef7acae2e30fc9c756777b1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe0e002aef7acae2e30fc9c756777b1f\">&#9670;&nbsp;</a></span>RemoveCharacter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Faction::RemoveCharacter </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8d824372cef0f862a20d2e0e1cc6efc\" name=\"ad8d824372cef0f862a20d2e0e1cc6efc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8d824372cef0f862a20d2e0e1cc6efc\">&#9670;&nbsp;</a></span>SetCharacterLoyalty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Faction::SetCharacterLoyalty </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>loyalty</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b2fb5b81f7d1d27dab2eac014eddef4\" name=\"a4b2fb5b81f7d1d27dab2eac014eddef4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b2fb5b81f7d1d27dab2eac014eddef4\">&#9670;&nbsp;</a></span>SetCharacterRank()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Faction::SetCharacterRank </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td>\n          <td class=\"paramname\"><em>character</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>rank_value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a925e58834615871b89a1e8e7e223a54b\" name=\"a925e58834615871b89a1e8e7e223a54b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a925e58834615871b89a1e8e7e223a54b\">&#9670;&nbsp;</a></span>SetRelation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Faction::SetRelation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td>\n          <td class=\"paramname\"><em>faction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>disposition</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae37fd3f67a9a89138abf720d56b9ab3f\" name=\"ae37fd3f67a9a89138abf720d56b9ab3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae37fd3f67a9a89138abf720d56b9ab3f\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Faction::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04d109da4bb8712655c604c986d6df2d\" name=\"a04d109da4bb8712655c604c986d6df2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04d109da4bb8712655c604c986d6df2d\">&#9670;&nbsp;</a></span>ranks</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a>&gt; tram::Ext::Kitchensink::Faction::ranks</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8863648b8b05263ec564eb65d860793f\" name=\"a8863648b8b05263ec564eb65d860793f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8863648b8b05263ec564eb65d860793f\">&#9670;&nbsp;</a></span>relations</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a>&gt; tram::Ext::Kitchensink::Faction::relations</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_inventory-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Inventory Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">AddItem</a>(name_t item_class, int count)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">compartments</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">EquipItem</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">equipped</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">Find</a>(Entity *entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">FindCompartment</a>(name_t compartment)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">GetEquippedItem</a>(name_t slot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">GetItemCount</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">Inventory</a>(id_t parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">IsEquippedItem</a>(name_t item)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">IsEquippedSlot</a>(name_t slot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">LoadFromDisk</a>(const char *filename)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">RemoveItem</a>(name_t item_class, int count)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">UnequipItem</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">UnequipSlot</a>(name_t item_slot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Inventory Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Inventory Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af7a1b00c5dfadf08f99151978659a9c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">Inventory</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a>)</td></tr>\n<tr class=\"separator:af7a1b00c5dfadf08f99151978659a9c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac82a46651c702a1efac9917179d42263\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">AddItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)</td></tr>\n<tr class=\"separator:ac82a46651c702a1efac9917179d42263\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8de2d037b208dbd8efc4976e3a0a8547\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">RemoveItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)</td></tr>\n<tr class=\"separator:a8de2d037b208dbd8efc4976e3a0a8547\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4950e478978bec57a319ab31fa25c944\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">GetItemCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a4950e478978bec57a319ab31fa25c944\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d4285f55bb35f3df054086b8433be71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">EquipItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a0d4285f55bb35f3df054086b8433be71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3947148514d07596275b3ceddef07ed1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">UnequipItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a3947148514d07596275b3ceddef07ed1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a020f087850b6993a1d3751c2b133063d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">UnequipSlot</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_slot)</td></tr>\n<tr class=\"separator:a020f087850b6993a1d3751c2b133063d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53fa2c2df9e2cb7c28395f23a91b42f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">IsEquippedItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item)</td></tr>\n<tr class=\"separator:a53fa2c2df9e2cb7c28395f23a91b42f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee945a9c74d9e50a5fe5f01430cc124c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">IsEquippedSlot</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> slot)</td></tr>\n<tr class=\"separator:aee945a9c74d9e50a5fe5f01430cc124c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8058f00b02aaddacea2eaee65dd5abe2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">GetEquippedItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> slot)</td></tr>\n<tr class=\"separator:a8058f00b02aaddacea2eaee65dd5abe2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af287eac367f38581825d3b4302642af9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">FindCompartment</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment)</td></tr>\n<tr class=\"separator:af287eac367f38581825d3b4302642af9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a68d8a76e4253d7236b9b1ce50483750c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">LoadFromDisk</a> (const char *filename)</td></tr>\n<tr class=\"separator:a68d8a76e4253d7236b9b1ce50483750c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">Find</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"separator:a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a121a1bf7605e24565f69bb965c2ad731\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a> = 0</td></tr>\n<tr class=\"separator:a121a1bf7605e24565f69bb965c2ad731\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cd3c4606f66405f417609f1c45e9e78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">equipped</a></td></tr>\n<tr class=\"separator:a8cd3c4606f66405f417609f1c45e9e78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a252220bb1ea4bd2303bb6b54cfeba7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> * &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">compartments</a></td></tr>\n<tr class=\"separator:a2a252220bb1ea4bd2303bb6b54cfeba7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af7a1b00c5dfadf08f99151978659a9c2\" name=\"af7a1b00c5dfadf08f99151978659a9c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7a1b00c5dfadf08f99151978659a9c2\">&#9670;&nbsp;</a></span>Inventory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Inventory::Inventory </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac82a46651c702a1efac9917179d42263\" name=\"ac82a46651c702a1efac9917179d42263\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac82a46651c702a1efac9917179d42263\">&#9670;&nbsp;</a></span>AddItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0d4285f55bb35f3df054086b8433be71\" name=\"a0d4285f55bb35f3df054086b8433be71\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d4285f55bb35f3df054086b8433be71\">&#9670;&nbsp;</a></span>EquipItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::EquipItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\" name=\"a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> * tram::Ext::Kitchensink::Inventory::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af287eac367f38581825d3b4302642af9\" name=\"af287eac367f38581825d3b4302642af9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af287eac367f38581825d3b4302642af9\">&#9670;&nbsp;</a></span>FindCompartment()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> * tram::Ext::Kitchensink::Inventory::FindCompartment </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>compartment</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8058f00b02aaddacea2eaee65dd5abe2\" name=\"a8058f00b02aaddacea2eaee65dd5abe2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8058f00b02aaddacea2eaee65dd5abe2\">&#9670;&nbsp;</a></span>GetEquippedItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Inventory::GetEquippedItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>slot</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4950e478978bec57a319ab31fa25c944\" name=\"a4950e478978bec57a319ab31fa25c944\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4950e478978bec57a319ab31fa25c944\">&#9670;&nbsp;</a></span>GetItemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::GetItemCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53fa2c2df9e2cb7c28395f23a91b42f6\" name=\"a53fa2c2df9e2cb7c28395f23a91b42f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53fa2c2df9e2cb7c28395f23a91b42f6\">&#9670;&nbsp;</a></span>IsEquippedItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::IsEquippedItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee945a9c74d9e50a5fe5f01430cc124c\" name=\"aee945a9c74d9e50a5fe5f01430cc124c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee945a9c74d9e50a5fe5f01430cc124c\">&#9670;&nbsp;</a></span>IsEquippedSlot()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::IsEquippedSlot </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>slot</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68d8a76e4253d7236b9b1ce50483750c\" name=\"a68d8a76e4253d7236b9b1ce50483750c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68d8a76e4253d7236b9b1ce50483750c\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Inventory::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8de2d037b208dbd8efc4976e3a0a8547\" name=\"a8de2d037b208dbd8efc4976e3a0a8547\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8de2d037b208dbd8efc4976e3a0a8547\">&#9670;&nbsp;</a></span>RemoveItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::RemoveItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3947148514d07596275b3ceddef07ed1\" name=\"a3947148514d07596275b3ceddef07ed1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3947148514d07596275b3ceddef07ed1\">&#9670;&nbsp;</a></span>UnequipItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::UnequipItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a020f087850b6993a1d3751c2b133063d\" name=\"a020f087850b6993a1d3751c2b133063d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a020f087850b6993a1d3751c2b133063d\">&#9670;&nbsp;</a></span>UnequipSlot()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::UnequipSlot </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_slot</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2a252220bb1ea4bd2303bb6b54cfeba7\" name=\"a2a252220bb1ea4bd2303bb6b54cfeba7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a252220bb1ea4bd2303bb6b54cfeba7\">&#9670;&nbsp;</a></span>compartments</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>*&gt; &gt; tram::Ext::Kitchensink::Inventory::compartments</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cd3c4606f66405f417609f1c45e9e78\" name=\"a8cd3c4606f66405f417609f1c45e9e78\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cd3c4606f66405f417609f1c45e9e78\">&#9670;&nbsp;</a></span>equipped</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&gt; &gt; tram::Ext::Kitchensink::Inventory::equipped</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a121a1bf7605e24565f69bb965c2ad731\" name=\"a121a1bf7605e24565f69bb965c2ad731\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a121a1bf7605e24565f69bb965c2ad731\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Kitchensink::Inventory::parent = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InventoryManager Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">AddItem</a>(name_t item_class, int count)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">Delete</a>(name_t compartment, InventoryManager *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">GetItemCount</a>(name_t item_class)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">GetItems</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">New</a>(name_t compartment)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">Register</a>(name_t compartment, InventoryManager *(*make)(), void(*clear)(InventoryManager *))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">RemoveItem</a>(name_t item_class, int count)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">~InventoryManager</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::InventoryManager Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InventoryManager Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::InventoryManager:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.png\" usemap=\"#tram::Ext::Kitchensink::InventoryManager_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::InventoryManager_map\" name=\"tram::Ext::Kitchensink::InventoryManager_map\">\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\" alt=\"tram::Ext::Kitchensink::ListInventoryManager\" shape=\"rect\" coords=\"0,56,258,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a36bc5edd165aedb4ff48c5ef27426a4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">AddItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)=0</td></tr>\n<tr class=\"separator:a36bc5edd165aedb4ff48c5ef27426a4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2b80ac808e4806ab9302a8e63a6c9be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">RemoveItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)=0</td></tr>\n<tr class=\"separator:ab2b80ac808e4806ab9302a8e63a6c9be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eb3c4a11513b9eed6fe34bd89cd43dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">GetItemCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)=0</td></tr>\n<tr class=\"separator:a7eb3c4a11513b9eed6fe34bd89cd43dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b028ac27cbb2380d88ae2775f3c3272\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">GetItems</a> ()=0</td></tr>\n<tr class=\"separator:a3b028ac27cbb2380d88ae2775f3c3272\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40e187b17336deef3396e8883fad0c6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">~InventoryManager</a> ()=default</td></tr>\n<tr class=\"separator:a40e187b17336deef3396e8883fad0c6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:abe28a6894e388eb7ab8894278211222c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">New</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment)</td></tr>\n<tr class=\"separator:abe28a6894e388eb7ab8894278211222c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3c70682b3ed7f666e4170aa14a1fea0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">Delete</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *)</td></tr>\n<tr class=\"separator:af3c70682b3ed7f666e4170aa14a1fea0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38a603ab838ff6b5896f2a19f3c15e1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *(*make)(), void(*clear)(<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *))</td></tr>\n<tr class=\"separator:a38a603ab838ff6b5896f2a19f3c15e1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a40e187b17336deef3396e8883fad0c6d\" name=\"a40e187b17336deef3396e8883fad0c6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40e187b17336deef3396e8883fad0c6d\">&#9670;&nbsp;</a></span>~InventoryManager()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Ext::Kitchensink::InventoryManager::~InventoryManager </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a36bc5edd165aedb4ff48c5ef27426a4d\" name=\"a36bc5edd165aedb4ff48c5ef27426a4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36bc5edd165aedb4ff48c5ef27426a4d\">&#9670;&nbsp;</a></span>AddItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int tram::Ext::Kitchensink::InventoryManager::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">tram::Ext::Kitchensink::ListInventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"af3c70682b3ed7f666e4170aa14a1fea0\" name=\"af3c70682b3ed7f666e4170aa14a1fea0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3c70682b3ed7f666e4170aa14a1fea0\">&#9670;&nbsp;</a></span>Delete()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::InventoryManager::Delete </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>compartment</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *&#160;</td>\n          <td class=\"paramname\"><em>manager</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7eb3c4a11513b9eed6fe34bd89cd43dc\" name=\"a7eb3c4a11513b9eed6fe34bd89cd43dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7eb3c4a11513b9eed6fe34bd89cd43dc\">&#9670;&nbsp;</a></span>GetItemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int tram::Ext::Kitchensink::InventoryManager::GetItemCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">tram::Ext::Kitchensink::ListInventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"a3b028ac27cbb2380d88ae2775f3c3272\" name=\"a3b028ac27cbb2380d88ae2775f3c3272\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b028ac27cbb2380d88ae2775f3c3272\">&#9670;&nbsp;</a></span>GetItems()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; tram::Ext::Kitchensink::InventoryManager::GetItems </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">tram::Ext::Kitchensink::ListInventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"abe28a6894e388eb7ab8894278211222c\" name=\"abe28a6894e388eb7ab8894278211222c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe28a6894e388eb7ab8894278211222c\">&#9670;&nbsp;</a></span>New()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> * tram::Ext::Kitchensink::InventoryManager::New </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>compartment</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38a603ab838ff6b5896f2a19f3c15e1c\" name=\"a38a603ab838ff6b5896f2a19f3c15e1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38a603ab838ff6b5896f2a19f3c15e1c\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::InventoryManager::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>compartment</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *(*)()&#160;</td>\n          <td class=\"paramname\"><em>make</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *)&#160;</td>\n          <td class=\"paramname\"><em>clear</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2b80ac808e4806ab9302a8e63a6c9be\" name=\"ab2b80ac808e4806ab9302a8e63a6c9be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2b80ac808e4806ab9302a8e63a6c9be\">&#9670;&nbsp;</a></span>RemoveItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int tram::Ext::Kitchensink::InventoryManager::RemoveItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">tram::Ext::Kitchensink::ListInventoryManager</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_item_class-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemClass Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">base_class</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">default_compartment</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">effects</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">equipped_slot</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">Find</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">FireAdded</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">FireEquip</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">FireIdle</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">FirePrimaryAction</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">FireRemoved</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">FireSecondaryAction</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">FireUnequip</a>(Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">icon_font</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">icon_glyph</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">OnAdded</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">OnEquip</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">OnIdle</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">OnPrimaryAction</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">OnRemoved</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">OnSecondaryAction</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">OnUnequip</a>(ItemClass *, Inventory *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">Register</a>(ItemClass *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">sprite_font</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">sprite_glyph</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">stack</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">viewmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">weight</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">worldmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ItemClass Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemClass Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a27b6d1e19c2219ef08b38e0f6301b78a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">FireEquip</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a27b6d1e19c2219ef08b38e0f6301b78a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac84ab7cd8c9fd41df4d50716df9d4bda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">FireUnequip</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:ac84ab7cd8c9fd41df4d50716df9d4bda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4567cddbfd773f1d162c9947a61d7acf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">FireAdded</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a4567cddbfd773f1d162c9947a61d7acf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b4d3c932032e2881323f1ec42e74f85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">FireRemoved</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a4b4d3c932032e2881323f1ec42e74f85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3af8732cfbd61416567a257612f1320e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">FirePrimaryAction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a3af8732cfbd61416567a257612f1320e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66d439782843161ca256d3f777b77a95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">FireSecondaryAction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a66d439782843161ca256d3f777b77a95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa63c9f3e897107f6a145fab913be5690\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">FireIdle</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:aa63c9f3e897107f6a145fab913be5690\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a871da89199081aeee3bc4b351764c5fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">OnEquip</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a871da89199081aeee3bc4b351764c5fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed8df724d985ebd66f934bf3bdc00b18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">OnUnequip</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:aed8df724d985ebd66f934bf3bdc00b18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2018e6ddb7b0daa520a7dc275bb3a8f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">OnAdded</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a2018e6ddb7b0daa520a7dc275bb3a8f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ebc7201376c73944e667f90e69e527d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">OnRemoved</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a2ebc7201376c73944e667f90e69e527d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc131c2ab76acccbc139c941193dbde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">OnPrimaryAction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a8dc131c2ab76acccbc139c941193dbde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e7fd99ac987efb75922a0ac3d1bfd6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">OnSecondaryAction</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a2e7fd99ac987efb75922a0ac3d1bfd6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5605b4cce1b10ffb337f7e4d746034e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">OnIdle</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *)</td></tr>\n<tr class=\"separator:a5605b4cce1b10ffb337f7e4d746034e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aee7dc2dfd34cc554c1428c897e2ab043\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">Register</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *)</td></tr>\n<tr class=\"separator:aee7dc2dfd34cc554c1428c897e2ab043\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a378e9829bffe817d03eec5844816015b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a378e9829bffe817d03eec5844816015b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abeaafff54d0a01ac7f6dfb3299bfeafe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">name</a></td></tr>\n<tr class=\"separator:abeaafff54d0a01ac7f6dfb3299bfeafe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38235d74c6c43032f0f53e84df2e00e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">base_class</a></td></tr>\n<tr class=\"separator:a38235d74c6c43032f0f53e84df2e00e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9e52c97862461717796ec8e567cd506\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">viewmodel</a></td></tr>\n<tr class=\"separator:ac9e52c97862461717796ec8e567cd506\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af12183588fa7ee60e0f173f60a0e841a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">worldmodel</a></td></tr>\n<tr class=\"separator:af12183588fa7ee60e0f173f60a0e841a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13ad05e4fa0c7e16c8982ae4b2b54e25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">equipped_slot</a></td></tr>\n<tr class=\"separator:a13ad05e4fa0c7e16c8982ae4b2b54e25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5446fb0643408689bf3e3228ae0e204a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">sprite_font</a> = 0</td></tr>\n<tr class=\"separator:a5446fb0643408689bf3e3228ae0e204a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac623e7fc63960697ee68bc58b83468ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">icon_font</a> = 0</td></tr>\n<tr class=\"separator:ac623e7fc63960697ee68bc58b83468ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01e50cc84077d0e95c63843fc9bf318e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">sprite_glyph</a> = 0</td></tr>\n<tr class=\"separator:a01e50cc84077d0e95c63843fc9bf318e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7558e88a147da74a438982f195c16684\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">icon_glyph</a> = 0</td></tr>\n<tr class=\"separator:a7558e88a147da74a438982f195c16684\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af21e13dba2bf5003456f23075e616c9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">width</a> = 1</td></tr>\n<tr class=\"separator:af21e13dba2bf5003456f23075e616c9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f62e3b657e2410379cb293cc1ac0da2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">height</a> = 1</td></tr>\n<tr class=\"separator:a0f62e3b657e2410379cb293cc1ac0da2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe8942947a3e1323eec2ab314c64b2ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">stack</a> = 1</td></tr>\n<tr class=\"separator:afe8942947a3e1323eec2ab314c64b2ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94f01baa040314e9e8bd6b218dffc904\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">value</a> = 0</td></tr>\n<tr class=\"separator:a94f01baa040314e9e8bd6b218dffc904\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2e897d231ebf85514642793c8595175\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">weight</a> = 0.0f</td></tr>\n<tr class=\"separator:ad2e897d231ebf85514642793c8595175\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a153ebc85b2da1604a680fc0556f54578\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">default_compartment</a></td></tr>\n<tr class=\"separator:a153ebc85b2da1604a680fc0556f54578\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ae02dc32f976f0cfe1b54c09f65d84b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">attributes</a></td></tr>\n<tr class=\"separator:a7ae02dc32f976f0cfe1b54c09f65d84b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad45de9b346dd461a8529e23a44e0dde4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">effects</a></td></tr>\n<tr class=\"separator:ad45de9b346dd461a8529e23a44e0dde4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a378e9829bffe817d03eec5844816015b\" name=\"a378e9829bffe817d03eec5844816015b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a378e9829bffe817d03eec5844816015b\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> * tram::Ext::Kitchensink::ItemClass::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4567cddbfd773f1d162c9947a61d7acf\" name=\"a4567cddbfd773f1d162c9947a61d7acf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4567cddbfd773f1d162c9947a61d7acf\">&#9670;&nbsp;</a></span>FireAdded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireAdded </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a27b6d1e19c2219ef08b38e0f6301b78a\" name=\"a27b6d1e19c2219ef08b38e0f6301b78a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27b6d1e19c2219ef08b38e0f6301b78a\">&#9670;&nbsp;</a></span>FireEquip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireEquip </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa63c9f3e897107f6a145fab913be5690\" name=\"aa63c9f3e897107f6a145fab913be5690\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa63c9f3e897107f6a145fab913be5690\">&#9670;&nbsp;</a></span>FireIdle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireIdle </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3af8732cfbd61416567a257612f1320e\" name=\"a3af8732cfbd61416567a257612f1320e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3af8732cfbd61416567a257612f1320e\">&#9670;&nbsp;</a></span>FirePrimaryAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FirePrimaryAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b4d3c932032e2881323f1ec42e74f85\" name=\"a4b4d3c932032e2881323f1ec42e74f85\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b4d3c932032e2881323f1ec42e74f85\">&#9670;&nbsp;</a></span>FireRemoved()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireRemoved </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a66d439782843161ca256d3f777b77a95\" name=\"a66d439782843161ca256d3f777b77a95\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66d439782843161ca256d3f777b77a95\">&#9670;&nbsp;</a></span>FireSecondaryAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireSecondaryAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac84ab7cd8c9fd41df4d50716df9d4bda\" name=\"ac84ab7cd8c9fd41df4d50716df9d4bda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac84ab7cd8c9fd41df4d50716df9d4bda\">&#9670;&nbsp;</a></span>FireUnequip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::FireUnequip </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\"><em>inventory</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2018e6ddb7b0daa520a7dc275bb3a8f0\" name=\"a2018e6ddb7b0daa520a7dc275bb3a8f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2018e6ddb7b0daa520a7dc275bb3a8f0\">&#9670;&nbsp;</a></span>OnAdded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnAdded </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a871da89199081aeee3bc4b351764c5fb\" name=\"a871da89199081aeee3bc4b351764c5fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a871da89199081aeee3bc4b351764c5fb\">&#9670;&nbsp;</a></span>OnEquip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnEquip </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5605b4cce1b10ffb337f7e4d746034e2\" name=\"a5605b4cce1b10ffb337f7e4d746034e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5605b4cce1b10ffb337f7e4d746034e2\">&#9670;&nbsp;</a></span>OnIdle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnIdle </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8dc131c2ab76acccbc139c941193dbde\" name=\"a8dc131c2ab76acccbc139c941193dbde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8dc131c2ab76acccbc139c941193dbde\">&#9670;&nbsp;</a></span>OnPrimaryAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnPrimaryAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2ebc7201376c73944e667f90e69e527d\" name=\"a2ebc7201376c73944e667f90e69e527d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ebc7201376c73944e667f90e69e527d\">&#9670;&nbsp;</a></span>OnRemoved()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnRemoved </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e7fd99ac987efb75922a0ac3d1bfd6d\" name=\"a2e7fd99ac987efb75922a0ac3d1bfd6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e7fd99ac987efb75922a0ac3d1bfd6d\">&#9670;&nbsp;</a></span>OnSecondaryAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnSecondaryAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed8df724d985ebd66f934bf3bdc00b18\" name=\"aed8df724d985ebd66f934bf3bdc00b18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed8df724d985ebd66f934bf3bdc00b18\">&#9670;&nbsp;</a></span>OnUnequip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::Ext::Kitchensink::ItemClass::OnUnequip </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee7dc2dfd34cc554c1428c897e2ab043\" name=\"aee7dc2dfd34cc554c1428c897e2ab043\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee7dc2dfd34cc554c1428c897e2ab043\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ItemClass::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td>\n          <td class=\"paramname\"><em>item</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7ae02dc32f976f0cfe1b54c09f65d84b\" name=\"a7ae02dc32f976f0cfe1b54c09f65d84b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ae02dc32f976f0cfe1b54c09f65d84b\">&#9670;&nbsp;</a></span>attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a>&gt; tram::Ext::Kitchensink::ItemClass::attributes</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38235d74c6c43032f0f53e84df2e00e4\" name=\"a38235d74c6c43032f0f53e84df2e00e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38235d74c6c43032f0f53e84df2e00e4\">&#9670;&nbsp;</a></span>base_class</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::base_class</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a153ebc85b2da1604a680fc0556f54578\" name=\"a153ebc85b2da1604a680fc0556f54578\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a153ebc85b2da1604a680fc0556f54578\">&#9670;&nbsp;</a></span>default_compartment</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::default_compartment</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad45de9b346dd461a8529e23a44e0dde4\" name=\"ad45de9b346dd461a8529e23a44e0dde4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad45de9b346dd461a8529e23a44e0dde4\">&#9670;&nbsp;</a></span>effects</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a>&gt; tram::Ext::Kitchensink::ItemClass::effects</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a13ad05e4fa0c7e16c8982ae4b2b54e25\" name=\"a13ad05e4fa0c7e16c8982ae4b2b54e25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13ad05e4fa0c7e16c8982ae4b2b54e25\">&#9670;&nbsp;</a></span>equipped_slot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::equipped_slot</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f62e3b657e2410379cb293cc1ac0da2\" name=\"a0f62e3b657e2410379cb293cc1ac0da2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f62e3b657e2410379cb293cc1ac0da2\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::height = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac623e7fc63960697ee68bc58b83468ac\" name=\"ac623e7fc63960697ee68bc58b83468ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac623e7fc63960697ee68bc58b83468ac\">&#9670;&nbsp;</a></span>icon_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Kitchensink::ItemClass::icon_font = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7558e88a147da74a438982f195c16684\" name=\"a7558e88a147da74a438982f195c16684\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7558e88a147da74a438982f195c16684\">&#9670;&nbsp;</a></span>icon_glyph</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> tram::Ext::Kitchensink::ItemClass::icon_glyph = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abeaafff54d0a01ac7f6dfb3299bfeafe\" name=\"abeaafff54d0a01ac7f6dfb3299bfeafe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeaafff54d0a01ac7f6dfb3299bfeafe\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5446fb0643408689bf3e3228ae0e204a\" name=\"a5446fb0643408689bf3e3228ae0e204a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5446fb0643408689bf3e3228ae0e204a\">&#9670;&nbsp;</a></span>sprite_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Kitchensink::ItemClass::sprite_font = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a01e50cc84077d0e95c63843fc9bf318e\" name=\"a01e50cc84077d0e95c63843fc9bf318e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01e50cc84077d0e95c63843fc9bf318e\">&#9670;&nbsp;</a></span>sprite_glyph</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> tram::Ext::Kitchensink::ItemClass::sprite_glyph = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe8942947a3e1323eec2ab314c64b2ad\" name=\"afe8942947a3e1323eec2ab314c64b2ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe8942947a3e1323eec2ab314c64b2ad\">&#9670;&nbsp;</a></span>stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::stack = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94f01baa040314e9e8bd6b218dffc904\" name=\"a94f01baa040314e9e8bd6b218dffc904\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94f01baa040314e9e8bd6b218dffc904\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::value = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9e52c97862461717796ec8e567cd506\" name=\"ac9e52c97862461717796ec8e567cd506\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9e52c97862461717796ec8e567cd506\">&#9670;&nbsp;</a></span>viewmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::viewmodel</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad2e897d231ebf85514642793c8595175\" name=\"ad2e897d231ebf85514642793c8595175\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2e897d231ebf85514642793c8595175\">&#9670;&nbsp;</a></span>weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::ItemClass::weight = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af21e13dba2bf5003456f23075e616c9f\" name=\"af21e13dba2bf5003456f23075e616c9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af21e13dba2bf5003456f23075e616c9f\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::width = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af12183588fa7ee60e0f173f60a0e841a\" name=\"af12183588fa7ee60e0f173f60a0e841a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af12183588fa7ee60e0f173f60a0e841a\">&#9670;&nbsp;</a></span>worldmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::worldmodel</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">KitchensinkMenuList</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::KitchensinkMenuList Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">tram::Ext::Kitchensink::KitchensinkMenuList</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::KitchensinkMenuList Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">KitchensinkMenuList</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::KitchensinkMenuList Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::KitchensinkMenuList:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.png\" usemap=\"#tram::Ext::Kitchensink::KitchensinkMenuList_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::KitchensinkMenuList_map\" name=\"tram::Ext::Kitchensink::KitchensinkMenuList_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,250,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8cpp.html\">menu.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">ListDialog</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListDialog Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">ListDialog</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a150d52aef6f1ab1053a824ada7801c1d\">ListDialog</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">~ListDialog</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ListDialog Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">ListDialog</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListDialog Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::ListDialog:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.png\" usemap=\"#tram::Ext::Kitchensink::ListDialog_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::ListDialog_map\" name=\"tram::Ext::Kitchensink::ListDialog_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,190,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7efdad5869f1dee758dd15a5c49e9d8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">ListDialog</a> ()</td></tr>\n<tr class=\"separator:a7efdad5869f1dee758dd15a5c49e9d8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a150d52aef6f1ab1053a824ada7801c1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a150d52aef6f1ab1053a824ada7801c1d\">ListDialog</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a150d52aef6f1ab1053a824ada7801c1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57879c46dacd3aa040198ffeb3c3cc27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">~ListDialog</a> ()</td></tr>\n<tr class=\"separator:a57879c46dacd3aa040198ffeb3c3cc27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95629efafbccd335e434a1c97b9c6d21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">Display</a> ()</td></tr>\n<tr class=\"separator:a95629efafbccd335e434a1c97b9c6d21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80fddca313006f7df721f6a76c4c0f46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">Layer</a> ()</td></tr>\n<tr class=\"separator:a80fddca313006f7df721f6a76c4c0f46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a7efdad5869f1dee758dd15a5c49e9d8c\" name=\"a7efdad5869f1dee758dd15a5c49e9d8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7efdad5869f1dee758dd15a5c49e9d8c\">&#9670;&nbsp;</a></span>ListDialog() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::ListDialog::ListDialog </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a150d52aef6f1ab1053a824ada7801c1d\" name=\"a150d52aef6f1ab1053a824ada7801c1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a150d52aef6f1ab1053a824ada7801c1d\">&#9670;&nbsp;</a></span>ListDialog() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::ListDialog::ListDialog </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>dialog</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57879c46dacd3aa040198ffeb3c3cc27\" name=\"a57879c46dacd3aa040198ffeb3c3cc27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57879c46dacd3aa040198ffeb3c3cc27\">&#9670;&nbsp;</a></span>~ListDialog()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::ListDialog::~ListDialog </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a95629efafbccd335e434a1c97b9c6d21\" name=\"a95629efafbccd335e434a1c97b9c6d21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95629efafbccd335e434a1c97b9c6d21\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::ListDialog::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a80fddca313006f7df721f6a76c4c0f46\" name=\"a80fddca313006f7df721f6a76c4c0f46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80fddca313006f7df721f6a76c4c0f46\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Kitchensink::ListDialog::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8cpp.html\">menu.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">ListInventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListInventory Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">tram::Ext::Kitchensink::ListInventory</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ListInventory Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">ListInventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListInventory Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::ListInventory:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.png\" usemap=\"#tram::Ext::Kitchensink::ListInventory_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::ListInventory_map\" name=\"tram::Ext::Kitchensink::ListInventory_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,207,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">ListInventoryManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListInventoryManager Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">AddItem</a>(name_t item_class, int count) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">Delete</a>(name_t compartment, InventoryManager *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">GetItemCount</a>(name_t item_class) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">GetItems</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">items</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">New</a>(name_t compartment)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">Register</a>(name_t compartment, InventoryManager *(*make)(), void(*clear)(InventoryManager *))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">RemoveItem</a>(name_t item_class, int count) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">~InventoryManager</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">~ListInventoryManager</a>() override=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ListInventoryManager Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">ListInventoryManager</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListInventoryManager Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::ListInventoryManager:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.png\" usemap=\"#tram::Ext::Kitchensink::ListInventoryManager_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::ListInventoryManager_map\" name=\"tram::Ext::Kitchensink::ListInventoryManager_map\">\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\" alt=\"tram::Ext::Kitchensink::InventoryManager\" shape=\"rect\" coords=\"0,0,258,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a86886a96730029deb9c866327eec9484\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">AddItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count) override</td></tr>\n<tr class=\"separator:a86886a96730029deb9c866327eec9484\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd31745962ddee971598846630493ddc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">RemoveItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count) override</td></tr>\n<tr class=\"separator:abd31745962ddee971598846630493ddc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f45f90b7e0f0a5223dd478538530da9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">GetItemCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class) override</td></tr>\n<tr class=\"separator:a0f45f90b7e0f0a5223dd478538530da9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b9b03dd24817da053563d6e0a39a980\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">GetItems</a> () override</td></tr>\n<tr class=\"separator:a1b9b03dd24817da053563d6e0a39a980\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec9bf5e8398291fcb6271ec4944fb6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">~ListInventoryManager</a> () override=default</td></tr>\n<tr class=\"separator:a5ec9bf5e8398291fcb6271ec4944fb6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td></tr>\n<tr class=\"memitem:a40e187b17336deef3396e8883fad0c6d inherit pub_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">~InventoryManager</a> ()=default</td></tr>\n<tr class=\"separator:a40e187b17336deef3396e8883fad0c6d inherit pub_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a706782e911333fcfafae739d283995a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, int &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">items</a></td></tr>\n<tr class=\"separator:a706782e911333fcfafae739d283995a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td></tr>\n<tr class=\"memitem:abe28a6894e388eb7ab8894278211222c inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">New</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment)</td></tr>\n<tr class=\"separator:abe28a6894e388eb7ab8894278211222c inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3c70682b3ed7f666e4170aa14a1fea0 inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">Delete</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *)</td></tr>\n<tr class=\"separator:af3c70682b3ed7f666e4170aa14a1fea0 inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38a603ab838ff6b5896f2a19f3c15e1c inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> compartment, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *(*make)(), void(*clear)(<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *))</td></tr>\n<tr class=\"separator:a38a603ab838ff6b5896f2a19f3c15e1c inherit pub_static_methods_classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5ec9bf5e8398291fcb6271ec4944fb6b\" name=\"a5ec9bf5e8398291fcb6271ec4944fb6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ec9bf5e8398291fcb6271ec4944fb6b\">&#9670;&nbsp;</a></span>~ListInventoryManager()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::ListInventoryManager::~ListInventoryManager </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a86886a96730029deb9c866327eec9484\" name=\"a86886a96730029deb9c866327eec9484\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86886a96730029deb9c866327eec9484\">&#9670;&nbsp;</a></span>AddItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ListInventoryManager::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">tram::Ext::Kitchensink::InventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"a0f45f90b7e0f0a5223dd478538530da9\" name=\"a0f45f90b7e0f0a5223dd478538530da9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f45f90b7e0f0a5223dd478538530da9\">&#9670;&nbsp;</a></span>GetItemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ListInventoryManager::GetItemCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">tram::Ext::Kitchensink::InventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"a1b9b03dd24817da053563d6e0a39a980\" name=\"a1b9b03dd24817da053563d6e0a39a980\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b9b03dd24817da053563d6e0a39a980\">&#9670;&nbsp;</a></span>GetItems()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; tram::Ext::Kitchensink::ListInventoryManager::GetItems </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">tram::Ext::Kitchensink::InventoryManager</a>.</p>\n\n</div>\n</div>\n<a id=\"abd31745962ddee971598846630493ddc\" name=\"abd31745962ddee971598846630493ddc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd31745962ddee971598846630493ddc\">&#9670;&nbsp;</a></span>RemoveItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ListInventoryManager::RemoveItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">tram::Ext::Kitchensink::InventoryManager</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a706782e911333fcfafae739d283995a2\" name=\"a706782e911333fcfafae739d283995a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a706782e911333fcfafae739d283995a2\">&#9670;&nbsp;</a></span>items</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, int&gt; &gt; tram::Ext::Kitchensink::ListInventoryManager::items</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_trade-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">ListTrade</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListTrade Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">tram::Ext::Kitchensink::ListTrade</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ListTrade Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">ListTrade</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ListTrade Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::ListTrade:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.png\" usemap=\"#tram::Ext::Kitchensink::ListTrade_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::ListTrade_map\" name=\"tram::Ext::Kitchensink::ListTrade_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,187,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_pickup-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">Pickup</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Pickup Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">Pickup</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Pickup Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">Pickup</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Pickup Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::Pickup:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.png\" usemap=\"#tram::Ext::Kitchensink::Pickup_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::Pickup_map\" name=\"tram::Ext::Kitchensink::Pickup_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,173,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa14c29d40df5968c605f63bdd03cd3d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">Pickup</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:aa14c29d40df5968c605f63bdd03cd3d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc230744f36cb7dc31dcd30ce8d97881\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:afc230744f36cb7dc31dcd30ce8d97881\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">More...</a><br /></td></tr>\n<tr class=\"separator:afc230744f36cb7dc31dcd30ce8d97881\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b7238d413eddcfdda31aeff7e55afb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a7b7238d413eddcfdda31aeff7e55afb0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">More...</a><br /></td></tr>\n<tr class=\"separator:a7b7238d413eddcfdda31aeff7e55afb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a649fb346d1ab51b8cfcc2d21a8e87d37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a649fb346d1ab51b8cfcc2d21a8e87d37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">More...</a><br /></td></tr>\n<tr class=\"separator:a649fb346d1ab51b8cfcc2d21a8e87d37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2881141c1ee4783d0b719b1dd28a68e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a2881141c1ee4783d0b719b1dd28a68e6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">More...</a><br /></td></tr>\n<tr class=\"separator:a2881141c1ee4783d0b719b1dd28a68e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3a8dd7dd03c77cc765e2f8e279f7802\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa3a8dd7dd03c77cc765e2f8e279f7802\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13c6b811f951816a92465949a34c3932\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a13c6b811f951816a92465949a34c3932\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">More...</a><br /></td></tr>\n<tr class=\"separator:a13c6b811f951816a92465949a34c3932\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a0e0f4eb79e699f1e7c1ec86bd859e6b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">Register</a> ()</td></tr>\n<tr class=\"separator:a0e0f4eb79e699f1e7c1ec86bd859e6b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a329479016aa8bba237d77d9b81d708bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">rendercomponent</a></td></tr>\n<tr class=\"separator:a329479016aa8bba237d77d9b81d708bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a881a5ba8049060a6ac23f30404c0d8e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">physicscomponent</a></td></tr>\n<tr class=\"separator:a881a5ba8049060a6ac23f30404c0d8e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac077e8cc4096fec6612b47ff60054279\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">model</a></td></tr>\n<tr class=\"separator:ac077e8cc4096fec6612b47ff60054279\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ca93c8adc4f2ef76393b972dc9decaf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">collmodel</a></td></tr>\n<tr class=\"separator:a0ca93c8adc4f2ef76393b972dc9decaf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aa14c29d40df5968c605f63bdd03cd3d0\" name=\"aa14c29d40df5968c605f63bdd03cd3d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa14c29d40df5968c605f63bdd03cd3d0\">&#9670;&nbsp;</a></span>Pickup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Pickup::Pickup </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a649fb346d1ab51b8cfcc2d21a8e87d37\" name=\"a649fb346d1ab51b8cfcc2d21a8e87d37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a649fb346d1ab51b8cfcc2d21a8e87d37\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a13c6b811f951816a92465949a34c3932\" name=\"a13c6b811f951816a92465949a34c3932\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13c6b811f951816a92465949a34c3932\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0e0f4eb79e699f1e7c1ec86bd859e6b9\" name=\"a0e0f4eb79e699f1e7c1ec86bd859e6b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::Pickup::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa3a8dd7dd03c77cc765e2f8e279f7802\" name=\"aa3a8dd7dd03c77cc765e2f8e279f7802\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3a8dd7dd03c77cc765e2f8e279f7802\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7b7238d413eddcfdda31aeff7e55afb0\" name=\"a7b7238d413eddcfdda31aeff7e55afb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b7238d413eddcfdda31aeff7e55afb0\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2881141c1ee4783d0b719b1dd28a68e6\" name=\"a2881141c1ee4783d0b719b1dd28a68e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2881141c1ee4783d0b719b1dd28a68e6\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afc230744f36cb7dc31dcd30ce8d97881\" name=\"afc230744f36cb7dc31dcd30ce8d97881\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc230744f36cb7dc31dcd30ce8d97881\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Pickup::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0ca93c8adc4f2ef76393b972dc9decaf\" name=\"a0ca93c8adc4f2ef76393b972dc9decaf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ca93c8adc4f2ef76393b972dc9decaf\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Pickup::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac077e8cc4096fec6612b47ff60054279\" name=\"ac077e8cc4096fec6612b47ff60054279\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac077e8cc4096fec6612b47ff60054279\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Pickup::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a881a5ba8049060a6ac23f30404c0d8e2\" name=\"a881a5ba8049060a6ac23f30404c0d8e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a881a5ba8049060a6ac23f30404c0d8e2\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::Pickup::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a329479016aa8bba237d77d9b81d708bd\" name=\"a329479016aa8bba237d77d9b81d708bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a329479016aa8bba237d77d9b81d708bd\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::Pickup::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">QuestEntity</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestEntity Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb\">QuestEntity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::QuestEntity Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">QuestEntity</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestEntity Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::QuestEntity:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.png\" usemap=\"#tram::Ext::Kitchensink::QuestEntity_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::QuestEntity_map\" name=\"tram::Ext::Kitchensink::QuestEntity_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,199,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a96675f3d8b439116d9fff376f212efbb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb\">QuestEntity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"separator:a96675f3d8b439116d9fff376f212efbb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1268d343f92cdd87ea7ba095a29b6d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:ae1268d343f92cdd87ea7ba095a29b6d8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">More...</a><br /></td></tr>\n<tr class=\"separator:ae1268d343f92cdd87ea7ba095a29b6d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc40d013900ce2da25ac6487593b24bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:adc40d013900ce2da25ac6487593b24bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">More...</a><br /></td></tr>\n<tr class=\"separator:adc40d013900ce2da25ac6487593b24bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc37e81bc1cd3bf3459d8884e158737d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">Load</a> ()</td></tr>\n<tr class=\"memdesc:acc37e81bc1cd3bf3459d8884e158737d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">More...</a><br /></td></tr>\n<tr class=\"separator:acc37e81bc1cd3bf3459d8884e158737d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb7d9e51247faff2fb3b2a67372260fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:afb7d9e51247faff2fb3b2a67372260fd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">More...</a><br /></td></tr>\n<tr class=\"separator:afb7d9e51247faff2fb3b2a67372260fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaca880ca76b51e2ce862148a895f61ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aaca880ca76b51e2ce862148a895f61ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf19095d4330eb1ec6628be8e86b6e5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:acf19095d4330eb1ec6628be8e86b6e5c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">More...</a><br /></td></tr>\n<tr class=\"separator:acf19095d4330eb1ec6628be8e86b6e5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fe119992afcc7629ca0395f40b6a78b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a1fe119992afcc7629ca0395f40b6a78b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">More...</a><br /></td></tr>\n<tr class=\"separator:a1fe119992afcc7629ca0395f40b6a78b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a96675f3d8b439116d9fff376f212efbb\" name=\"a96675f3d8b439116d9fff376f212efbb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96675f3d8b439116d9fff376f212efbb\">&#9670;&nbsp;</a></span>QuestEntity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::QuestEntity::QuestEntity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"acf19095d4330eb1ec6628be8e86b6e5c\" name=\"acf19095d4330eb1ec6628be8e86b6e5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf19095d4330eb1ec6628be8e86b6e5c\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestEntity::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"acc37e81bc1cd3bf3459d8884e158737d\" name=\"acc37e81bc1cd3bf3459d8884e158737d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc37e81bc1cd3bf3459d8884e158737d\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1fe119992afcc7629ca0395f40b6a78b\" name=\"a1fe119992afcc7629ca0395f40b6a78b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fe119992afcc7629ca0395f40b6a78b\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aaca880ca76b51e2ce862148a895f61ab\" name=\"aaca880ca76b51e2ce862148a895f61ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaca880ca76b51e2ce862148a895f61ab\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"adc40d013900ce2da25ac6487593b24bb\" name=\"adc40d013900ce2da25ac6487593b24bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc40d013900ce2da25ac6487593b24bb\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afb7d9e51247faff2fb3b2a67372260fd\" name=\"afb7d9e51247faff2fb3b2a67372260fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb7d9e51247faff2fb3b2a67372260fd\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae1268d343f92cdd87ea7ba095a29b6d8\" name=\"ae1268d343f92cdd87ea7ba095a29b6d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1268d343f92cdd87ea7ba095a29b6d8\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestEntity::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_quest_list-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">QuestList</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestList Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">tram::Ext::Kitchensink::QuestList</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::QuestList Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">QuestList</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestList Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::QuestList:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.png\" usemap=\"#tram::Ext::Kitchensink::QuestList_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::QuestList_map\" name=\"tram::Ext::Kitchensink::QuestList_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,187,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">menu.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"kitchensink_2menu_8cpp.html\">menu.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_sound_table-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::SoundTable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">AddSound</a>(SoundAction type, name_t sound)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">GetSound</a>(SoundAction type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">PlaySound</a>(SoundAction type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ad31116a4938a4f571022d9c33eeae03d\">PlaySound</a>(SoundAction type, vec3 position, float volume)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::SoundTable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::SoundTable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Maps actions to sounds.  \n <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"soundtable_8h_source.html\">extensions/kitchensink/soundtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a8d4546e389d3135619016bd4ad493bc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">AddSound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> sound)</td></tr>\n<tr class=\"separator:a8d4546e389d3135619016bd4ad493bc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1f347b3f34189f5b870633c9ee8d52b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">GetSound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type)</td></tr>\n<tr class=\"separator:ab1f347b3f34189f5b870633c9ee8d52b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a6df6a1a197749301a22f3026617a86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">PlaySound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type)</td></tr>\n<tr class=\"separator:a7a6df6a1a197749301a22f3026617a86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad31116a4938a4f571022d9c33eeae03d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ad31116a4938a4f571022d9c33eeae03d\">PlaySound</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, float volume)</td></tr>\n<tr class=\"separator:ad31116a4938a4f571022d9c33eeae03d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ae4cbf60676839ac61f953d315f0ac3cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:ae4cbf60676839ac61f953d315f0ac3cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Maps actions to sounds. </p>\n<p >Perfect for storing the aural properties of various materials, or taking the actions that a door or some other container can perform, e.g. opening, closing, trying to open but failing due to being locked, and mappping them to specific sounds. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a8d4546e389d3135619016bd4ad493bc2\" name=\"a8d4546e389d3135619016bd4ad493bc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d4546e389d3135619016bd4ad493bc2\">&#9670;&nbsp;</a></span>AddSound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::SoundTable::AddSound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sound</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae4cbf60676839ac61f953d315f0ac3cc\" name=\"ae4cbf60676839ac61f953d315f0ac3cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4cbf60676839ac61f953d315f0ac3cc\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a> * tram::Ext::Kitchensink::SoundTable::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1f347b3f34189f5b870633c9ee8d52b\" name=\"ab1f347b3f34189f5b870633c9ee8d52b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1f347b3f34189f5b870633c9ee8d52b\">&#9670;&nbsp;</a></span>GetSound()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::SoundTable::GetSound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7a6df6a1a197749301a22f3026617a86\" name=\"a7a6df6a1a197749301a22f3026617a86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a6df6a1a197749301a22f3026617a86\">&#9670;&nbsp;</a></span>PlaySound() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::SoundTable::PlaySound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad31116a4938a4f571022d9c33eeae03d\" name=\"ad31116a4938a4f571022d9c33eeae03d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad31116a4938a4f571022d9c33eeae03d\">&#9670;&nbsp;</a></span>PlaySound() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::SoundTable::PlaySound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>volume</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"soundtable_8h_source.html\">soundtable.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"soundtable_8cpp.html\">soundtable.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_train-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">Train</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Train Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">Train</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_train.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Train Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">Train</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Train Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::Train:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.png\" usemap=\"#tram::Ext::Kitchensink::Train_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::Train_map\" name=\"tram::Ext::Kitchensink::Train_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,164,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a8d6109469356d31dfe601d2324204a77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">Train</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a8d6109469356d31dfe601d2324204a77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a101e803dc193a3588f046f7e33ec2167\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a101e803dc193a3588f046f7e33ec2167\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">More...</a><br /></td></tr>\n<tr class=\"separator:a101e803dc193a3588f046f7e33ec2167\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46ab45c6f44dbf65bc6dcdfff52f9798\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a46ab45c6f44dbf65bc6dcdfff52f9798\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">More...</a><br /></td></tr>\n<tr class=\"separator:a46ab45c6f44dbf65bc6dcdfff52f9798\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2659a3719dc8658bb53300fc312cd76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">Load</a> ()</td></tr>\n<tr class=\"memdesc:ad2659a3719dc8658bb53300fc312cd76\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">More...</a><br /></td></tr>\n<tr class=\"separator:ad2659a3719dc8658bb53300fc312cd76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa1b79f17c17ead03058dd28ae1cc3ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:afa1b79f17c17ead03058dd28ae1cc3ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">More...</a><br /></td></tr>\n<tr class=\"separator:afa1b79f17c17ead03058dd28ae1cc3ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae6220e39a9664f2279dc889179b21b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aae6220e39a9664f2279dc889179b21b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2325d13d9f15bca5e4cac7111f95bab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ae2325d13d9f15bca5e4cac7111f95bab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">More...</a><br /></td></tr>\n<tr class=\"separator:ae2325d13d9f15bca5e4cac7111f95bab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ae4baca0092d7c385ae72abe24f017e52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">Register</a> ()</td></tr>\n<tr class=\"separator:ae4baca0092d7c385ae72abe24f017e52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a993b1fba83b57ed7da2f068a63e12e9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">rendercomponent</a></td></tr>\n<tr class=\"separator:a993b1fba83b57ed7da2f068a63e12e9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad72e7fe2faf8817a399bf94ada70c562\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">physicscomponent</a></td></tr>\n<tr class=\"separator:ad72e7fe2faf8817a399bf94ada70c562\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4eb604d75a4b015c214a73385b8583a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">model</a></td></tr>\n<tr class=\"separator:aa4eb604d75a4b015c214a73385b8583a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ffb909fcfd24bf1eb7e1abd23af9e88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">collmodel</a></td></tr>\n<tr class=\"separator:a0ffb909fcfd24bf1eb7e1abd23af9e88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a8d6109469356d31dfe601d2324204a77\" name=\"a8d6109469356d31dfe601d2324204a77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6109469356d31dfe601d2324204a77\">&#9670;&nbsp;</a></span>Train()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Train::Train </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad2659a3719dc8658bb53300fc312cd76\" name=\"ad2659a3719dc8658bb53300fc312cd76\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2659a3719dc8658bb53300fc312cd76\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae2325d13d9f15bca5e4cac7111f95bab\" name=\"ae2325d13d9f15bca5e4cac7111f95bab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2325d13d9f15bca5e4cac7111f95bab\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae4baca0092d7c385ae72abe24f017e52\" name=\"ae4baca0092d7c385ae72abe24f017e52\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4baca0092d7c385ae72abe24f017e52\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::Train::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae6220e39a9664f2279dc889179b21b9\" name=\"aae6220e39a9664f2279dc889179b21b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae6220e39a9664f2279dc889179b21b9\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a46ab45c6f44dbf65bc6dcdfff52f9798\" name=\"a46ab45c6f44dbf65bc6dcdfff52f9798\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46ab45c6f44dbf65bc6dcdfff52f9798\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afa1b79f17c17ead03058dd28ae1cc3ef\" name=\"afa1b79f17c17ead03058dd28ae1cc3ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa1b79f17c17ead03058dd28ae1cc3ef\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a101e803dc193a3588f046f7e33ec2167\" name=\"a101e803dc193a3588f046f7e33ec2167\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a101e803dc193a3588f046f7e33ec2167\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Train::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0ffb909fcfd24bf1eb7e1abd23af9e88\" name=\"a0ffb909fcfd24bf1eb7e1abd23af9e88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ffb909fcfd24bf1eb7e1abd23af9e88\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Train::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4eb604d75a4b015c214a73385b8583a\" name=\"aa4eb604d75a4b015c214a73385b8583a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4eb604d75a4b015c214a73385b8583a\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Train::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad72e7fe2faf8817a399bf94ada70c562\" name=\"ad72e7fe2faf8817a399bf94ada70c562\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad72e7fe2faf8817a399bf94ada70c562\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::Train::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a993b1fba83b57ed7da2f068a63e12e9a\" name=\"a993b1fba83b57ed7da2f068a63e12e9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a993b1fba83b57ed7da2f068a63e12e9a\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::Train::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">TriggerAutosave</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerAutosave Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">TriggerAutosave</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerAutosave Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">TriggerAutosave</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerAutosave Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerAutosave:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.png\" usemap=\"#tram::Ext::Kitchensink::TriggerAutosave_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerAutosave_map\" name=\"tram::Ext::Kitchensink::TriggerAutosave_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,229,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac6a7eaffb4459cf10007606b0f9c8f8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">TriggerAutosave</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:ac6a7eaffb4459cf10007606b0f9c8f8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb7b0630b5ed9fa40444e378fa5b5681\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:aeb7b0630b5ed9fa40444e378fa5b5681\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb7b0630b5ed9fa40444e378fa5b5681\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a588c6567a94f6b471ae8528053ca244a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a588c6567a94f6b471ae8528053ca244a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">More...</a><br /></td></tr>\n<tr class=\"separator:a588c6567a94f6b471ae8528053ca244a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ddc0ce845dfe63f5c7fa089a5309925\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a1ddc0ce845dfe63f5c7fa089a5309925\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ddc0ce845dfe63f5c7fa089a5309925\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea36c18cd09a2fc62b2cd8713744c903\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:aea36c18cd09a2fc62b2cd8713744c903\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">More...</a><br /></td></tr>\n<tr class=\"separator:aea36c18cd09a2fc62b2cd8713744c903\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad054dbd579c90c448a21a741a4e14b43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ad054dbd579c90c448a21a741a4e14b43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b9229167dc5e4e523673d81b715950f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a7b9229167dc5e4e523673d81b715950f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">More...</a><br /></td></tr>\n<tr class=\"separator:a7b9229167dc5e4e523673d81b715950f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a42d3c79e2604d3e8f7b66c13dbfa47cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">Register</a> ()</td></tr>\n<tr class=\"separator:a42d3c79e2604d3e8f7b66c13dbfa47cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a2f6cd3e9f01819693f25f76ea1deffe1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">rendercomponent</a></td></tr>\n<tr class=\"separator:a2f6cd3e9f01819693f25f76ea1deffe1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a641f20fdc9e0a3f0887be88f0198580c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">physicscomponent</a></td></tr>\n<tr class=\"separator:a641f20fdc9e0a3f0887be88f0198580c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae330b7417b6da030f0932f51d9282902\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">model</a></td></tr>\n<tr class=\"separator:ae330b7417b6da030f0932f51d9282902\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d72864744e1e06e95d53d7dfad8e775\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">collmodel</a></td></tr>\n<tr class=\"separator:a0d72864744e1e06e95d53d7dfad8e775\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac6a7eaffb4459cf10007606b0f9c8f8b\" name=\"ac6a7eaffb4459cf10007606b0f9c8f8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6a7eaffb4459cf10007606b0f9c8f8b\">&#9670;&nbsp;</a></span>TriggerAutosave()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerAutosave::TriggerAutosave </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1ddc0ce845dfe63f5c7fa089a5309925\" name=\"a1ddc0ce845dfe63f5c7fa089a5309925\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ddc0ce845dfe63f5c7fa089a5309925\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7b9229167dc5e4e523673d81b715950f\" name=\"a7b9229167dc5e4e523673d81b715950f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b9229167dc5e4e523673d81b715950f\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a42d3c79e2604d3e8f7b66c13dbfa47cf\" name=\"a42d3c79e2604d3e8f7b66c13dbfa47cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42d3c79e2604d3e8f7b66c13dbfa47cf\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerAutosave::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad054dbd579c90c448a21a741a4e14b43\" name=\"ad054dbd579c90c448a21a741a4e14b43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad054dbd579c90c448a21a741a4e14b43\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a588c6567a94f6b471ae8528053ca244a\" name=\"a588c6567a94f6b471ae8528053ca244a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a588c6567a94f6b471ae8528053ca244a\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aea36c18cd09a2fc62b2cd8713744c903\" name=\"aea36c18cd09a2fc62b2cd8713744c903\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea36c18cd09a2fc62b2cd8713744c903\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aeb7b0630b5ed9fa40444e378fa5b5681\" name=\"aeb7b0630b5ed9fa40444e378fa5b5681\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb7b0630b5ed9fa40444e378fa5b5681\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerAutosave::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0d72864744e1e06e95d53d7dfad8e775\" name=\"a0d72864744e1e06e95d53d7dfad8e775\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d72864744e1e06e95d53d7dfad8e775\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerAutosave::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae330b7417b6da030f0932f51d9282902\" name=\"ae330b7417b6da030f0932f51d9282902\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae330b7417b6da030f0932f51d9282902\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerAutosave::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a641f20fdc9e0a3f0887be88f0198580c\" name=\"a641f20fdc9e0a3f0887be88f0198580c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a641f20fdc9e0a3f0887be88f0198580c\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerAutosave::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2f6cd3e9f01819693f25f76ea1deffe1\" name=\"a2f6cd3e9f01819693f25f76ea1deffe1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f6cd3e9f01819693f25f76ea1deffe1\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerAutosave::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">TriggerHurt</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerHurt Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">TriggerHurt</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerHurt Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">TriggerHurt</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerHurt Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerHurt:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.png\" usemap=\"#tram::Ext::Kitchensink::TriggerHurt_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerHurt_map\" name=\"tram::Ext::Kitchensink::TriggerHurt_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,200,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae6b5d706f8a9d56a245ac555ec95a44d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">TriggerHurt</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:ae6b5d706f8a9d56a245ac555ec95a44d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81726364a17268ea23d810a35ce4d3b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a81726364a17268ea23d810a35ce4d3b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">More...</a><br /></td></tr>\n<tr class=\"separator:a81726364a17268ea23d810a35ce4d3b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c720eeebbc10b399c75cbf7225f8f7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a6c720eeebbc10b399c75cbf7225f8f7b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">More...</a><br /></td></tr>\n<tr class=\"separator:a6c720eeebbc10b399c75cbf7225f8f7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6eb6f5d84da2055d5f4d361c951646f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">Load</a> ()</td></tr>\n<tr class=\"memdesc:af6eb6f5d84da2055d5f4d361c951646f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">More...</a><br /></td></tr>\n<tr class=\"separator:af6eb6f5d84da2055d5f4d361c951646f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac28bb3aede402f40174b4348a10e1cf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ac28bb3aede402f40174b4348a10e1cf9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">More...</a><br /></td></tr>\n<tr class=\"separator:ac28bb3aede402f40174b4348a10e1cf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b08beab647a0ea56a113ac035d4061a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a4b08beab647a0ea56a113ac035d4061a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad528676eb4cc1bee09c8d61b18a60e49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ad528676eb4cc1bee09c8d61b18a60e49\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">More...</a><br /></td></tr>\n<tr class=\"separator:ad528676eb4cc1bee09c8d61b18a60e49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ad355370a396ef40aa776d75b1f5c8792\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">Register</a> ()</td></tr>\n<tr class=\"separator:ad355370a396ef40aa776d75b1f5c8792\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a61e6183e35fdce3b974628d18c0f8ca5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">rendercomponent</a></td></tr>\n<tr class=\"separator:a61e6183e35fdce3b974628d18c0f8ca5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fcf1fd373b0735b96983688eaa52961\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">physicscomponent</a></td></tr>\n<tr class=\"separator:a1fcf1fd373b0735b96983688eaa52961\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1695bf4215ec18944897194e0abff99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">model</a></td></tr>\n<tr class=\"separator:a1695bf4215ec18944897194e0abff99c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c79786157db20e80cc05ac169212de7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">collmodel</a></td></tr>\n<tr class=\"separator:a6c79786157db20e80cc05ac169212de7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae6b5d706f8a9d56a245ac555ec95a44d\" name=\"ae6b5d706f8a9d56a245ac555ec95a44d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6b5d706f8a9d56a245ac555ec95a44d\">&#9670;&nbsp;</a></span>TriggerHurt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerHurt::TriggerHurt </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af6eb6f5d84da2055d5f4d361c951646f\" name=\"af6eb6f5d84da2055d5f4d361c951646f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6eb6f5d84da2055d5f4d361c951646f\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad528676eb4cc1bee09c8d61b18a60e49\" name=\"ad528676eb4cc1bee09c8d61b18a60e49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad528676eb4cc1bee09c8d61b18a60e49\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad355370a396ef40aa776d75b1f5c8792\" name=\"ad355370a396ef40aa776d75b1f5c8792\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad355370a396ef40aa776d75b1f5c8792\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerHurt::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b08beab647a0ea56a113ac035d4061a\" name=\"a4b08beab647a0ea56a113ac035d4061a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b08beab647a0ea56a113ac035d4061a\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6c720eeebbc10b399c75cbf7225f8f7b\" name=\"a6c720eeebbc10b399c75cbf7225f8f7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c720eeebbc10b399c75cbf7225f8f7b\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac28bb3aede402f40174b4348a10e1cf9\" name=\"ac28bb3aede402f40174b4348a10e1cf9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac28bb3aede402f40174b4348a10e1cf9\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a81726364a17268ea23d810a35ce4d3b2\" name=\"a81726364a17268ea23d810a35ce4d3b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81726364a17268ea23d810a35ce4d3b2\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerHurt::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6c79786157db20e80cc05ac169212de7\" name=\"a6c79786157db20e80cc05ac169212de7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c79786157db20e80cc05ac169212de7\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerHurt::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1695bf4215ec18944897194e0abff99c\" name=\"a1695bf4215ec18944897194e0abff99c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1695bf4215ec18944897194e0abff99c\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerHurt::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1fcf1fd373b0735b96983688eaa52961\" name=\"a1fcf1fd373b0735b96983688eaa52961\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fcf1fd373b0735b96983688eaa52961\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerHurt::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61e6183e35fdce3b974628d18c0f8ca5\" name=\"a61e6183e35fdce3b974628d18c0f8ca5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61e6183e35fdce3b974628d18c0f8ca5\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerHurt::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">TriggerMultiple</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerMultiple Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">TriggerMultiple</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerMultiple Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">TriggerMultiple</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerMultiple Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerMultiple:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.png\" usemap=\"#tram::Ext::Kitchensink::TriggerMultiple_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerMultiple_map\" name=\"tram::Ext::Kitchensink::TriggerMultiple_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,220,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4602154e8a02a03eae992f400079dfb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">TriggerMultiple</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a4602154e8a02a03eae992f400079dfb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bf6e059ed5c51f77ec170c98d88038d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a0bf6e059ed5c51f77ec170c98d88038d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0bf6e059ed5c51f77ec170c98d88038d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0acfdc56498029e59f4eaa3f389b8967\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a0acfdc56498029e59f4eaa3f389b8967\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">More...</a><br /></td></tr>\n<tr class=\"separator:a0acfdc56498029e59f4eaa3f389b8967\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09b7e8d6f7c06354087c7bbed605a0dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a09b7e8d6f7c06354087c7bbed605a0dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">More...</a><br /></td></tr>\n<tr class=\"separator:a09b7e8d6f7c06354087c7bbed605a0dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9df96abe2232f3566983f29a87e62254\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a9df96abe2232f3566983f29a87e62254\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">More...</a><br /></td></tr>\n<tr class=\"separator:a9df96abe2232f3566983f29a87e62254\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa87df5a1dc89880323ba8e5c306de546\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa87df5a1dc89880323ba8e5c306de546\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba3b0305dadaadb47d03e299d5feed0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:afba3b0305dadaadb47d03e299d5feed0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">More...</a><br /></td></tr>\n<tr class=\"separator:afba3b0305dadaadb47d03e299d5feed0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af34ee313ba0e8e9fa03ec43a45cd99de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">Register</a> ()</td></tr>\n<tr class=\"separator:af34ee313ba0e8e9fa03ec43a45cd99de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a6d39ed9a2cbfab6cd334b9af39d99bc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">rendercomponent</a></td></tr>\n<tr class=\"separator:a6d39ed9a2cbfab6cd334b9af39d99bc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add39da54898ba26a33986bd99872abaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">physicscomponent</a></td></tr>\n<tr class=\"separator:add39da54898ba26a33986bd99872abaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c73c411f8c7f31cb6a9db8863f0d2e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">model</a></td></tr>\n<tr class=\"separator:a4c73c411f8c7f31cb6a9db8863f0d2e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46495b4ffb89238697269f7dde7ba3f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">collmodel</a></td></tr>\n<tr class=\"separator:a46495b4ffb89238697269f7dde7ba3f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4602154e8a02a03eae992f400079dfb4\" name=\"a4602154e8a02a03eae992f400079dfb4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4602154e8a02a03eae992f400079dfb4\">&#9670;&nbsp;</a></span>TriggerMultiple()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerMultiple::TriggerMultiple </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a09b7e8d6f7c06354087c7bbed605a0dc\" name=\"a09b7e8d6f7c06354087c7bbed605a0dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09b7e8d6f7c06354087c7bbed605a0dc\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afba3b0305dadaadb47d03e299d5feed0\" name=\"afba3b0305dadaadb47d03e299d5feed0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afba3b0305dadaadb47d03e299d5feed0\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af34ee313ba0e8e9fa03ec43a45cd99de\" name=\"af34ee313ba0e8e9fa03ec43a45cd99de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af34ee313ba0e8e9fa03ec43a45cd99de\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerMultiple::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa87df5a1dc89880323ba8e5c306de546\" name=\"aa87df5a1dc89880323ba8e5c306de546\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa87df5a1dc89880323ba8e5c306de546\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0acfdc56498029e59f4eaa3f389b8967\" name=\"a0acfdc56498029e59f4eaa3f389b8967\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0acfdc56498029e59f4eaa3f389b8967\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a9df96abe2232f3566983f29a87e62254\" name=\"a9df96abe2232f3566983f29a87e62254\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9df96abe2232f3566983f29a87e62254\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0bf6e059ed5c51f77ec170c98d88038d\" name=\"a0bf6e059ed5c51f77ec170c98d88038d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bf6e059ed5c51f77ec170c98d88038d\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerMultiple::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a46495b4ffb89238697269f7dde7ba3f8\" name=\"a46495b4ffb89238697269f7dde7ba3f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46495b4ffb89238697269f7dde7ba3f8\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerMultiple::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c73c411f8c7f31cb6a9db8863f0d2e4\" name=\"a4c73c411f8c7f31cb6a9db8863f0d2e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c73c411f8c7f31cb6a9db8863f0d2e4\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerMultiple::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add39da54898ba26a33986bd99872abaa\" name=\"add39da54898ba26a33986bd99872abaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add39da54898ba26a33986bd99872abaa\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerMultiple::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d39ed9a2cbfab6cd334b9af39d99bc2\" name=\"a6d39ed9a2cbfab6cd334b9af39d99bc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d39ed9a2cbfab6cd334b9af39d99bc2\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerMultiple::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">TriggerOnce</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerOnce Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">TriggerOnce</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerOnce Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">TriggerOnce</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerOnce Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerOnce:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.png\" usemap=\"#tram::Ext::Kitchensink::TriggerOnce_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerOnce_map\" name=\"tram::Ext::Kitchensink::TriggerOnce_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,207,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:accb4e63a197bbd0d350b72d58dc6a127\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">TriggerOnce</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:accb4e63a197bbd0d350b72d58dc6a127\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30104cdda5bc47e58da125d3bf574fc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a30104cdda5bc47e58da125d3bf574fc6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">More...</a><br /></td></tr>\n<tr class=\"separator:a30104cdda5bc47e58da125d3bf574fc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18ef2e180b564569ebfb773ec83d9e45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a18ef2e180b564569ebfb773ec83d9e45\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">More...</a><br /></td></tr>\n<tr class=\"separator:a18ef2e180b564569ebfb773ec83d9e45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0779152e5dfe962f7cea735d6da6c5c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a0779152e5dfe962f7cea735d6da6c5c8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">More...</a><br /></td></tr>\n<tr class=\"separator:a0779152e5dfe962f7cea735d6da6c5c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0cc2cfba975cf5a964444914ea15cc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:aa0cc2cfba975cf5a964444914ea15cc9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">More...</a><br /></td></tr>\n<tr class=\"separator:aa0cc2cfba975cf5a964444914ea15cc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25d11e16da07ac56161f2bc4b1ef7359\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a25d11e16da07ac56161f2bc4b1ef7359\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea523f5b59a0d9495f264dfc46a11d77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:aea523f5b59a0d9495f264dfc46a11d77\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">More...</a><br /></td></tr>\n<tr class=\"separator:aea523f5b59a0d9495f264dfc46a11d77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a4772ae9b7dc27bc1b58d876381a22a23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">Register</a> ()</td></tr>\n<tr class=\"separator:a4772ae9b7dc27bc1b58d876381a22a23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a218ca60c7aa10b956ce4db11d0411ac6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">rendercomponent</a></td></tr>\n<tr class=\"separator:a218ca60c7aa10b956ce4db11d0411ac6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1134b7b7a4a65ce7902004bb4dd75a50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">physicscomponent</a></td></tr>\n<tr class=\"separator:a1134b7b7a4a65ce7902004bb4dd75a50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a964426361804464f0916bfb2619691a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">model</a></td></tr>\n<tr class=\"separator:a964426361804464f0916bfb2619691a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aaf60e131f0300688ae31d33413e4e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">collmodel</a></td></tr>\n<tr class=\"separator:a6aaf60e131f0300688ae31d33413e4e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"accb4e63a197bbd0d350b72d58dc6a127\" name=\"accb4e63a197bbd0d350b72d58dc6a127\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#accb4e63a197bbd0d350b72d58dc6a127\">&#9670;&nbsp;</a></span>TriggerOnce()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerOnce::TriggerOnce </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0779152e5dfe962f7cea735d6da6c5c8\" name=\"a0779152e5dfe962f7cea735d6da6c5c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0779152e5dfe962f7cea735d6da6c5c8\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aea523f5b59a0d9495f264dfc46a11d77\" name=\"aea523f5b59a0d9495f264dfc46a11d77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea523f5b59a0d9495f264dfc46a11d77\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a4772ae9b7dc27bc1b58d876381a22a23\" name=\"a4772ae9b7dc27bc1b58d876381a22a23\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4772ae9b7dc27bc1b58d876381a22a23\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerOnce::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25d11e16da07ac56161f2bc4b1ef7359\" name=\"a25d11e16da07ac56161f2bc4b1ef7359\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25d11e16da07ac56161f2bc4b1ef7359\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a18ef2e180b564569ebfb773ec83d9e45\" name=\"a18ef2e180b564569ebfb773ec83d9e45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18ef2e180b564569ebfb773ec83d9e45\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aa0cc2cfba975cf5a964444914ea15cc9\" name=\"aa0cc2cfba975cf5a964444914ea15cc9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0cc2cfba975cf5a964444914ea15cc9\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a30104cdda5bc47e58da125d3bf574fc6\" name=\"a30104cdda5bc47e58da125d3bf574fc6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30104cdda5bc47e58da125d3bf574fc6\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerOnce::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6aaf60e131f0300688ae31d33413e4e0\" name=\"a6aaf60e131f0300688ae31d33413e4e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6aaf60e131f0300688ae31d33413e4e0\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerOnce::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a964426361804464f0916bfb2619691a7\" name=\"a964426361804464f0916bfb2619691a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a964426361804464f0916bfb2619691a7\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerOnce::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1134b7b7a4a65ce7902004bb4dd75a50\" name=\"a1134b7b7a4a65ce7902004bb4dd75a50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1134b7b7a4a65ce7902004bb4dd75a50\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerOnce::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a218ca60c7aa10b956ce4db11d0411ac6\" name=\"a218ca60c7aa10b956ce4db11d0411ac6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a218ca60c7aa10b956ce4db11d0411ac6\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerOnce::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerPlayerMovement Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">TriggerPlayerMovement</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerPlayerMovement Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerPlayerMovement Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerPlayerMovement:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.png\" usemap=\"#tram::Ext::Kitchensink::TriggerPlayerMovement_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerPlayerMovement_map\" name=\"tram::Ext::Kitchensink::TriggerPlayerMovement_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,271,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a944ce8f354e4ba224b3ba2257a80257b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">TriggerPlayerMovement</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a944ce8f354e4ba224b3ba2257a80257b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdf06caa8341620e6e60fcefcd953286\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:afdf06caa8341620e6e60fcefcd953286\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">More...</a><br /></td></tr>\n<tr class=\"separator:afdf06caa8341620e6e60fcefcd953286\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad550edd2a6389a2ce7ef3e840dd14e7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ad550edd2a6389a2ce7ef3e840dd14e7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">More...</a><br /></td></tr>\n<tr class=\"separator:ad550edd2a6389a2ce7ef3e840dd14e7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff679002a0af88434745c06eacb3eadd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">Load</a> ()</td></tr>\n<tr class=\"memdesc:aff679002a0af88434745c06eacb3eadd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">More...</a><br /></td></tr>\n<tr class=\"separator:aff679002a0af88434745c06eacb3eadd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a566d546dad8cbfe6758851ac38442a9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a566d546dad8cbfe6758851ac38442a9a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">More...</a><br /></td></tr>\n<tr class=\"separator:a566d546dad8cbfe6758851ac38442a9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8235ebd895fe382b080d2e0a70e1738f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a8235ebd895fe382b080d2e0a70e1738f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f2b494dec320ccfe9a8c11dee242053\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a2f2b494dec320ccfe9a8c11dee242053\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">More...</a><br /></td></tr>\n<tr class=\"separator:a2f2b494dec320ccfe9a8c11dee242053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a22615e5cbc341c9b9b97fa83b64cf889\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">Register</a> ()</td></tr>\n<tr class=\"separator:a22615e5cbc341c9b9b97fa83b64cf889\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ac98c9d0daa251c124f7bb347138c6d86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">rendercomponent</a></td></tr>\n<tr class=\"separator:ac98c9d0daa251c124f7bb347138c6d86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bf7a2365438d0aff49a42ba6809de17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">physicscomponent</a></td></tr>\n<tr class=\"separator:a5bf7a2365438d0aff49a42ba6809de17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae52d91988675dae168e7ccc18e36b737\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">model</a></td></tr>\n<tr class=\"separator:ae52d91988675dae168e7ccc18e36b737\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6bcb6e7ecadc6d10fc9cb87afab88539\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">collmodel</a></td></tr>\n<tr class=\"separator:a6bcb6e7ecadc6d10fc9cb87afab88539\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a944ce8f354e4ba224b3ba2257a80257b\" name=\"a944ce8f354e4ba224b3ba2257a80257b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a944ce8f354e4ba224b3ba2257a80257b\">&#9670;&nbsp;</a></span>TriggerPlayerMovement()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerPlayerMovement::TriggerPlayerMovement </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aff679002a0af88434745c06eacb3eadd\" name=\"aff679002a0af88434745c06eacb3eadd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff679002a0af88434745c06eacb3eadd\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a2f2b494dec320ccfe9a8c11dee242053\" name=\"a2f2b494dec320ccfe9a8c11dee242053\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f2b494dec320ccfe9a8c11dee242053\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a22615e5cbc341c9b9b97fa83b64cf889\" name=\"a22615e5cbc341c9b9b97fa83b64cf889\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22615e5cbc341c9b9b97fa83b64cf889\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerPlayerMovement::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8235ebd895fe382b080d2e0a70e1738f\" name=\"a8235ebd895fe382b080d2e0a70e1738f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8235ebd895fe382b080d2e0a70e1738f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad550edd2a6389a2ce7ef3e840dd14e7a\" name=\"ad550edd2a6389a2ce7ef3e840dd14e7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad550edd2a6389a2ce7ef3e840dd14e7a\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a566d546dad8cbfe6758851ac38442a9a\" name=\"a566d546dad8cbfe6758851ac38442a9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a566d546dad8cbfe6758851ac38442a9a\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afdf06caa8341620e6e60fcefcd953286\" name=\"afdf06caa8341620e6e60fcefcd953286\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdf06caa8341620e6e60fcefcd953286\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPlayerMovement::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6bcb6e7ecadc6d10fc9cb87afab88539\" name=\"a6bcb6e7ecadc6d10fc9cb87afab88539\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bcb6e7ecadc6d10fc9cb87afab88539\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerPlayerMovement::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae52d91988675dae168e7ccc18e36b737\" name=\"ae52d91988675dae168e7ccc18e36b737\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae52d91988675dae168e7ccc18e36b737\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerPlayerMovement::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5bf7a2365438d0aff49a42ba6809de17\" name=\"a5bf7a2365438d0aff49a42ba6809de17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bf7a2365438d0aff49a42ba6809de17\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerPlayerMovement::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac98c9d0daa251c124f7bb347138c6d86\" name=\"ac98c9d0daa251c124f7bb347138c6d86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac98c9d0daa251c124f7bb347138c6d86\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerPlayerMovement::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">TriggerPush</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerPush Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">TriggerPush</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerPush Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">TriggerPush</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerPush Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerPush:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.png\" usemap=\"#tram::Ext::Kitchensink::TriggerPush_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerPush_map\" name=\"tram::Ext::Kitchensink::TriggerPush_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,204,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a19f24315f51a42ac631cd6e9031f196a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">TriggerPush</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a19f24315f51a42ac631cd6e9031f196a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abfe9a81308db168ea94212b43c2b2c59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:abfe9a81308db168ea94212b43c2b2c59\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">More...</a><br /></td></tr>\n<tr class=\"separator:abfe9a81308db168ea94212b43c2b2c59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a01698a8de860ef2d97e6a0f57b7c25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a0a01698a8de860ef2d97e6a0f57b7c25\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">More...</a><br /></td></tr>\n<tr class=\"separator:a0a01698a8de860ef2d97e6a0f57b7c25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09d780452b0c4c3affdad42d728ccb9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a09d780452b0c4c3affdad42d728ccb9f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a09d780452b0c4c3affdad42d728ccb9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba68720ed7fe5a20f905404548cd71be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:aba68720ed7fe5a20f905404548cd71be\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">More...</a><br /></td></tr>\n<tr class=\"separator:aba68720ed7fe5a20f905404548cd71be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5311486ac974e5897071824f0d03ee6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a5311486ac974e5897071824f0d03ee6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16e84722dd3f82b8d31241c7a61adba7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a16e84722dd3f82b8d31241c7a61adba7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">More...</a><br /></td></tr>\n<tr class=\"separator:a16e84722dd3f82b8d31241c7a61adba7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a40042ae95b62c4b861aed2b5688f151d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">Register</a> ()</td></tr>\n<tr class=\"separator:a40042ae95b62c4b861aed2b5688f151d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5b9ef4de873d19b9f989c967c26904d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">rendercomponent</a></td></tr>\n<tr class=\"separator:a5b9ef4de873d19b9f989c967c26904d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee5d9dfe5e798739bb70eb16d2a9948e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">physicscomponent</a></td></tr>\n<tr class=\"separator:aee5d9dfe5e798739bb70eb16d2a9948e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2119ac49d5090511a7f49419025cc877\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">model</a></td></tr>\n<tr class=\"separator:a2119ac49d5090511a7f49419025cc877\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c59dbb31bfa17213ffd45b84c655a5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">collmodel</a></td></tr>\n<tr class=\"separator:a3c59dbb31bfa17213ffd45b84c655a5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a19f24315f51a42ac631cd6e9031f196a\" name=\"a19f24315f51a42ac631cd6e9031f196a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19f24315f51a42ac631cd6e9031f196a\">&#9670;&nbsp;</a></span>TriggerPush()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerPush::TriggerPush </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a09d780452b0c4c3affdad42d728ccb9f\" name=\"a09d780452b0c4c3affdad42d728ccb9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09d780452b0c4c3affdad42d728ccb9f\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a16e84722dd3f82b8d31241c7a61adba7\" name=\"a16e84722dd3f82b8d31241c7a61adba7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16e84722dd3f82b8d31241c7a61adba7\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a40042ae95b62c4b861aed2b5688f151d\" name=\"a40042ae95b62c4b861aed2b5688f151d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40042ae95b62c4b861aed2b5688f151d\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerPush::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5311486ac974e5897071824f0d03ee6e\" name=\"a5311486ac974e5897071824f0d03ee6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5311486ac974e5897071824f0d03ee6e\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0a01698a8de860ef2d97e6a0f57b7c25\" name=\"a0a01698a8de860ef2d97e6a0f57b7c25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a01698a8de860ef2d97e6a0f57b7c25\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aba68720ed7fe5a20f905404548cd71be\" name=\"aba68720ed7fe5a20f905404548cd71be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba68720ed7fe5a20f905404548cd71be\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"abfe9a81308db168ea94212b43c2b2c59\" name=\"abfe9a81308db168ea94212b43c2b2c59\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abfe9a81308db168ea94212b43c2b2c59\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerPush::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a3c59dbb31bfa17213ffd45b84c655a5c\" name=\"a3c59dbb31bfa17213ffd45b84c655a5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c59dbb31bfa17213ffd45b84c655a5c\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerPush::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2119ac49d5090511a7f49419025cc877\" name=\"a2119ac49d5090511a7f49419025cc877\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2119ac49d5090511a7f49419025cc877\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerPush::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee5d9dfe5e798739bb70eb16d2a9948e\" name=\"aee5d9dfe5e798739bb70eb16d2a9948e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee5d9dfe5e798739bb70eb16d2a9948e\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerPush::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b9ef4de873d19b9f989c967c26904d8\" name=\"a5b9ef4de873d19b9f989c967c26904d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b9ef4de873d19b9f989c967c26904d8\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerPush::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">TriggerRemove</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerRemove Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">TriggerRemove</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerRemove Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">TriggerRemove</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerRemove Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerRemove:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.png\" usemap=\"#tram::Ext::Kitchensink::TriggerRemove_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerRemove_map\" name=\"tram::Ext::Kitchensink::TriggerRemove_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,221,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a32851695a736fb2e4419782991115f99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">TriggerRemove</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a32851695a736fb2e4419782991115f99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6d873ff183a86de8c1997f3c59f6416\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:ad6d873ff183a86de8c1997f3c59f6416\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">More...</a><br /></td></tr>\n<tr class=\"separator:ad6d873ff183a86de8c1997f3c59f6416\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac802678eba14b6f7396fa242f3b389fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ac802678eba14b6f7396fa242f3b389fa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">More...</a><br /></td></tr>\n<tr class=\"separator:ac802678eba14b6f7396fa242f3b389fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a452f9f9d0d4b8864d59bfa8d93c2e128\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a452f9f9d0d4b8864d59bfa8d93c2e128\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">More...</a><br /></td></tr>\n<tr class=\"separator:a452f9f9d0d4b8864d59bfa8d93c2e128\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3aa0697b3e09b938d18c71253fefb90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ab3aa0697b3e09b938d18c71253fefb90\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">More...</a><br /></td></tr>\n<tr class=\"separator:ab3aa0697b3e09b938d18c71253fefb90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea1ec1ba74f293b5043d00d7899fb734\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aea1ec1ba74f293b5043d00d7899fb734\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a361107230fc5fd0c1193cf0dfcd3f9ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a361107230fc5fd0c1193cf0dfcd3f9ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a361107230fc5fd0c1193cf0dfcd3f9ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:acc0a673bdbc61686390ddc48f8e93ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">Register</a> ()</td></tr>\n<tr class=\"separator:acc0a673bdbc61686390ddc48f8e93ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a97e548c324cbdb15b6f90dbfea4eb2fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">rendercomponent</a></td></tr>\n<tr class=\"separator:a97e548c324cbdb15b6f90dbfea4eb2fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a127f6410a4f40845b89d2b917154d09d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">physicscomponent</a></td></tr>\n<tr class=\"separator:a127f6410a4f40845b89d2b917154d09d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17be889e28adc003ba638f2b8ee1a0cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">model</a></td></tr>\n<tr class=\"separator:a17be889e28adc003ba638f2b8ee1a0cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac318ecbabe95dcb0beedd361a048cbaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">collmodel</a></td></tr>\n<tr class=\"separator:ac318ecbabe95dcb0beedd361a048cbaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a32851695a736fb2e4419782991115f99\" name=\"a32851695a736fb2e4419782991115f99\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32851695a736fb2e4419782991115f99\">&#9670;&nbsp;</a></span>TriggerRemove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerRemove::TriggerRemove </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a452f9f9d0d4b8864d59bfa8d93c2e128\" name=\"a452f9f9d0d4b8864d59bfa8d93c2e128\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a452f9f9d0d4b8864d59bfa8d93c2e128\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a361107230fc5fd0c1193cf0dfcd3f9ef\" name=\"a361107230fc5fd0c1193cf0dfcd3f9ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a361107230fc5fd0c1193cf0dfcd3f9ef\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"acc0a673bdbc61686390ddc48f8e93ed6\" name=\"acc0a673bdbc61686390ddc48f8e93ed6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc0a673bdbc61686390ddc48f8e93ed6\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerRemove::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea1ec1ba74f293b5043d00d7899fb734\" name=\"aea1ec1ba74f293b5043d00d7899fb734\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea1ec1ba74f293b5043d00d7899fb734\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac802678eba14b6f7396fa242f3b389fa\" name=\"ac802678eba14b6f7396fa242f3b389fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac802678eba14b6f7396fa242f3b389fa\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab3aa0697b3e09b938d18c71253fefb90\" name=\"ab3aa0697b3e09b938d18c71253fefb90\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab3aa0697b3e09b938d18c71253fefb90\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad6d873ff183a86de8c1997f3c59f6416\" name=\"ad6d873ff183a86de8c1997f3c59f6416\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6d873ff183a86de8c1997f3c59f6416\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerRemove::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac318ecbabe95dcb0beedd361a048cbaa\" name=\"ac318ecbabe95dcb0beedd361a048cbaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac318ecbabe95dcb0beedd361a048cbaa\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerRemove::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a17be889e28adc003ba638f2b8ee1a0cb\" name=\"a17be889e28adc003ba638f2b8ee1a0cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17be889e28adc003ba638f2b8ee1a0cb\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerRemove::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a127f6410a4f40845b89d2b917154d09d\" name=\"a127f6410a4f40845b89d2b917154d09d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a127f6410a4f40845b89d2b917154d09d\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerRemove::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97e548c324cbdb15b6f90dbfea4eb2fe\" name=\"a97e548c324cbdb15b6f90dbfea4eb2fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97e548c324cbdb15b6f90dbfea4eb2fe\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerRemove::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">TriggerTeleport</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerTeleport Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">TriggerTeleport</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::TriggerTeleport Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">TriggerTeleport</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::TriggerTeleport Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::TriggerTeleport:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.png\" usemap=\"#tram::Ext::Kitchensink::TriggerTeleport_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::TriggerTeleport_map\" name=\"tram::Ext::Kitchensink::TriggerTeleport_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,222,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2dc8dfbaa1e358714459a4854860aa8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">TriggerTeleport</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a2dc8dfbaa1e358714459a4854860aa8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa839f0ebcb29f3e79f4bd91aa5c67a5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:aa839f0ebcb29f3e79f4bd91aa5c67a5b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">More...</a><br /></td></tr>\n<tr class=\"separator:aa839f0ebcb29f3e79f4bd91aa5c67a5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac617bac29cb094149c2904a13c2e0de1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ac617bac29cb094149c2904a13c2e0de1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">More...</a><br /></td></tr>\n<tr class=\"separator:ac617bac29cb094149c2904a13c2e0de1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6638ecd68bb098631b31097e320839a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">Load</a> ()</td></tr>\n<tr class=\"memdesc:aa6638ecd68bb098631b31097e320839a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">More...</a><br /></td></tr>\n<tr class=\"separator:aa6638ecd68bb098631b31097e320839a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c178b1022efc43f197d8bebc4e1ba32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a6c178b1022efc43f197d8bebc4e1ba32\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">More...</a><br /></td></tr>\n<tr class=\"separator:a6c178b1022efc43f197d8bebc4e1ba32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ec405cef2fbc36f67215266939c4382\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a2ec405cef2fbc36f67215266939c4382\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3bbf1ab021f484e52d3c54f6c64cf2fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a3bbf1ab021f484e52d3c54f6c64cf2fd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a3bbf1ab021f484e52d3c54f6c64cf2fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ac43c05116add4165f154679954941b1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">Register</a> ()</td></tr>\n<tr class=\"separator:ac43c05116add4165f154679954941b1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a1ee314c75612530d797e07b5e2dff085\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">rendercomponent</a></td></tr>\n<tr class=\"separator:a1ee314c75612530d797e07b5e2dff085\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1eabe6c002caa539efb57b79345520f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">physicscomponent</a></td></tr>\n<tr class=\"separator:aa1eabe6c002caa539efb57b79345520f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa7de7abe61d44d1229d02632344a3117\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">model</a></td></tr>\n<tr class=\"separator:aa7de7abe61d44d1229d02632344a3117\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a413cebe7dae0b94c8445d9cc4692d88a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">collmodel</a></td></tr>\n<tr class=\"separator:a413cebe7dae0b94c8445d9cc4692d88a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a2dc8dfbaa1e358714459a4854860aa8d\" name=\"a2dc8dfbaa1e358714459a4854860aa8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2dc8dfbaa1e358714459a4854860aa8d\">&#9670;&nbsp;</a></span>TriggerTeleport()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::TriggerTeleport::TriggerTeleport </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa6638ecd68bb098631b31097e320839a\" name=\"aa6638ecd68bb098631b31097e320839a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6638ecd68bb098631b31097e320839a\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a3bbf1ab021f484e52d3c54f6c64cf2fd\" name=\"a3bbf1ab021f484e52d3c54f6c64cf2fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bbf1ab021f484e52d3c54f6c64cf2fd\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac43c05116add4165f154679954941b1a\" name=\"ac43c05116add4165f154679954941b1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac43c05116add4165f154679954941b1a\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::TriggerTeleport::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2ec405cef2fbc36f67215266939c4382\" name=\"a2ec405cef2fbc36f67215266939c4382\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ec405cef2fbc36f67215266939c4382\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac617bac29cb094149c2904a13c2e0de1\" name=\"ac617bac29cb094149c2904a13c2e0de1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac617bac29cb094149c2904a13c2e0de1\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6c178b1022efc43f197d8bebc4e1ba32\" name=\"a6c178b1022efc43f197d8bebc4e1ba32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c178b1022efc43f197d8bebc4e1ba32\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aa839f0ebcb29f3e79f4bd91aa5c67a5b\" name=\"aa839f0ebcb29f3e79f4bd91aa5c67a5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::TriggerTeleport::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a413cebe7dae0b94c8445d9cc4692d88a\" name=\"a413cebe7dae0b94c8445d9cc4692d88a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a413cebe7dae0b94c8445d9cc4692d88a\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerTeleport::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa7de7abe61d44d1229d02632344a3117\" name=\"aa7de7abe61d44d1229d02632344a3117\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa7de7abe61d44d1229d02632344a3117\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::TriggerTeleport::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1eabe6c002caa539efb57b79345520f\" name=\"aa1eabe6c002caa539efb57b79345520f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1eabe6c002caa539efb57b79345520f\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::TriggerTeleport::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1ee314c75612530d797e07b5e2dff085\" name=\"a1ee314c75612530d797e07b5e2dff085\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ee314c75612530d797e07b5e2dff085\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::TriggerTeleport::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_water-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">Water</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Water Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">collmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">Water</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_kitchensink_1_1_water.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Water Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">Water</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Water Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Kitchensink::Water:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.png\" usemap=\"#tram::Ext::Kitchensink::Water_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Kitchensink::Water_map\" name=\"tram::Ext::Kitchensink::Water_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,168,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a61815d9fed63e4724d8704b8f7eb99e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">Water</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a61815d9fed63e4724d8704b8f7eb99e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf40cdc632ca2113b4299ac9ce9387d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:acf40cdc632ca2113b4299ac9ce9387d4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">More...</a><br /></td></tr>\n<tr class=\"separator:acf40cdc632ca2113b4299ac9ce9387d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad17e120992eba3ccc7a4a17160a8bfa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ad17e120992eba3ccc7a4a17160a8bfa3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">More...</a><br /></td></tr>\n<tr class=\"separator:ad17e120992eba3ccc7a4a17160a8bfa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ae4115b327140de3532868a80f6738c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a2ae4115b327140de3532868a80f6738c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ae4115b327140de3532868a80f6738c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81376f797590abe8a90b35ac999a0613\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a81376f797590abe8a90b35ac999a0613\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">More...</a><br /></td></tr>\n<tr class=\"separator:a81376f797590abe8a90b35ac999a0613\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91048dbb77098e96000955924add2157\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a91048dbb77098e96000955924add2157\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82504fffe38ba4dbecd3ea108d6b23ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a82504fffe38ba4dbecd3ea108d6b23ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a82504fffe38ba4dbecd3ea108d6b23ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a> ()=0</td></tr>\n<tr class=\"memdesc:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">More...</a><br /></td></tr>\n<tr class=\"separator:a552606c9eec8f007aaf42d251aaaa264 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aa1ea56987cb0695dbb7747307895107a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">Register</a> ()</td></tr>\n<tr class=\"separator:aa1ea56987cb0695dbb7747307895107a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a57defa0f79a1b97c9154ef7d3318963f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">rendercomponent</a></td></tr>\n<tr class=\"separator:a57defa0f79a1b97c9154ef7d3318963f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d604782c7dd64c7d26a515b35e9defb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">physicscomponent</a></td></tr>\n<tr class=\"separator:a1d604782c7dd64c7d26a515b35e9defb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abce68a2e7fe9394d10f26ab51fe14e21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">model</a></td></tr>\n<tr class=\"separator:abce68a2e7fe9394d10f26ab51fe14e21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7814a30089783833b4f13ab9f009b4ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">collmodel</a></td></tr>\n<tr class=\"separator:a7814a30089783833b4f13ab9f009b4ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a61815d9fed63e4724d8704b8f7eb99e2\" name=\"a61815d9fed63e4724d8704b8f7eb99e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61815d9fed63e4724d8704b8f7eb99e2\">&#9670;&nbsp;</a></span>Water()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Water::Water </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2ae4115b327140de3532868a80f6738c\" name=\"a2ae4115b327140de3532868a80f6738c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ae4115b327140de3532868a80f6738c\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a82504fffe38ba4dbecd3ea108d6b23ef\" name=\"a82504fffe38ba4dbecd3ea108d6b23ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82504fffe38ba4dbecd3ea108d6b23ef\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aa1ea56987cb0695dbb7747307895107a\" name=\"aa1ea56987cb0695dbb7747307895107a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1ea56987cb0695dbb7747307895107a\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Kitchensink::Water::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a91048dbb77098e96000955924add2157\" name=\"a91048dbb77098e96000955924add2157\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91048dbb77098e96000955924add2157\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad17e120992eba3ccc7a4a17160a8bfa3\" name=\"ad17e120992eba3ccc7a4a17160a8bfa3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad17e120992eba3ccc7a4a17160a8bfa3\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a81376f797590abe8a90b35ac999a0613\" name=\"a81376f797590abe8a90b35ac999a0613\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81376f797590abe8a90b35ac999a0613\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"acf40cdc632ca2113b4299ac9ce9387d4\" name=\"acf40cdc632ca2113b4299ac9ce9387d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf40cdc632ca2113b4299ac9ce9387d4\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Water::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7814a30089783833b4f13ab9f009b4ea\" name=\"a7814a30089783833b4f13ab9f009b4ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7814a30089783833b4f13ab9f009b4ea\">&#9670;&nbsp;</a></span>collmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Water::collmodel</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abce68a2e7fe9394d10f26ab51fe14e21\" name=\"abce68a2e7fe9394d10f26ab51fe14e21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abce68a2e7fe9394d10f26ab51fe14e21\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Water::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d604782c7dd64c7d26a515b35e9defb\" name=\"a1d604782c7dd64c7d26a515b35e9defb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d604782c7dd64c7d26a515b35e9defb\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Ext::Kitchensink::Water::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57defa0f79a1b97c9154ef7d3318963f\" name=\"a57defa0f79a1b97c9154ef7d3318963f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57defa0f79a1b97c9154ef7d3318963f\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Ext::Kitchensink::Water::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8h_source.html\">entities.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_console-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">Console</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Console Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">Console</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">history_cursor</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">text</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">~Console</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_console.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::Console Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">Console</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_console-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Console Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::Console:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_console.png\" usemap=\"#tram::Ext::Menu::Console_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::Console_map\" name=\"tram::Ext::Menu::Console_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,149,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a8f37ecf596d0db477707c9d3ed698953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">Console</a> ()</td></tr>\n<tr class=\"separator:a8f37ecf596d0db477707c9d3ed698953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6784de1db0572c2424cea93c4e0722dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">Layer</a> ()</td></tr>\n<tr class=\"separator:a6784de1db0572c2424cea93c4e0722dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae32f9a7938c628c698659957609cd7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">Display</a> ()</td></tr>\n<tr class=\"separator:aae32f9a7938c628c698659957609cd7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adda3db0c47e9495176196c91373522fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">~Console</a> ()</td></tr>\n<tr class=\"separator:adda3db0c47e9495176196c91373522fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a6a03f676654c17d2aaeadf875b90f4e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">text</a> = nullptr</td></tr>\n<tr class=\"separator:a6a03f676654c17d2aaeadf875b90f4e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f626c471a7e2d91b3fb5b2c4a03b8e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">history_cursor</a> = -1</td></tr>\n<tr class=\"separator:a5f626c471a7e2d91b3fb5b2c4a03b8e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a8f37ecf596d0db477707c9d3ed698953\" name=\"a8f37ecf596d0db477707c9d3ed698953\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f37ecf596d0db477707c9d3ed698953\">&#9670;&nbsp;</a></span>Console()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::Console::Console </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adda3db0c47e9495176196c91373522fe\" name=\"adda3db0c47e9495176196c91373522fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adda3db0c47e9495176196c91373522fe\">&#9670;&nbsp;</a></span>~Console()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::Console::~Console </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aae32f9a7938c628c698659957609cd7c\" name=\"aae32f9a7938c628c698659957609cd7c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae32f9a7938c628c698659957609cd7c\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Console::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a6784de1db0572c2424cea93c4e0722dc\" name=\"a6784de1db0572c2424cea93c4e0722dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6784de1db0572c2424cea93c4e0722dc\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::Console::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5f626c471a7e2d91b3fb5b2c4a03b8e5\" name=\"a5f626c471a7e2d91b3fb5b2c4a03b8e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">&#9670;&nbsp;</a></span>history_cursor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Menu::Console::history_cursor = -1</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6a03f676654c17d2aaeadf875b90f4e1\" name=\"a6a03f676654c17d2aaeadf875b90f4e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a03f676654c17d2aaeadf875b90f4e1\">&#9670;&nbsp;</a></span>text</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char* tram::Ext::Menu::Console::text = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_debug_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::DebugMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">intercept_enabled</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">intercept_menu</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">statistics_enabled</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">statistics_menu</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">~DebugMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_debug_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::DebugMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-static-attribs\">Static Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::DebugMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::DebugMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.png\" usemap=\"#tram::Ext::Menu::DebugMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::DebugMenu_map\" name=\"tram::Ext::Menu::DebugMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,172,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a18c5d317ba9354cd41742e98fc2f723d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">Display</a> ()</td></tr>\n<tr class=\"separator:a18c5d317ba9354cd41742e98fc2f723d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbe4b614ff313801176a8d5c9323f200\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">Layer</a> ()</td></tr>\n<tr class=\"separator:acbe4b614ff313801176a8d5c9323f200\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7188e373f52410e350fbf91d27c4a9b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">~DebugMenu</a> ()=default</td></tr>\n<tr class=\"separator:a7188e373f52410e350fbf91d27c4a9b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-static-attribs\" name=\"pro-static-attribs\"></a>\nStatic Protected Attributes</h2></td></tr>\n<tr class=\"memitem:aaaeebe9c42d5ca723a4523549f3c633a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">intercept_enabled</a> = false</td></tr>\n<tr class=\"separator:aaaeebe9c42d5ca723a4523549f3c633a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2ef205978570aa98b85d92117664971\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">statistics_enabled</a> = false</td></tr>\n<tr class=\"separator:ae2ef205978570aa98b85d92117664971\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b84d612747abe7ce7521ec867b6df42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">intercept_menu</a> = nullptr</td></tr>\n<tr class=\"separator:a3b84d612747abe7ce7521ec867b6df42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f6a07f1747a26714f916feaa04d01ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">statistics_menu</a> = nullptr</td></tr>\n<tr class=\"separator:a0f6a07f1747a26714f916feaa04d01ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a7188e373f52410e350fbf91d27c4a9b7\" name=\"a7188e373f52410e350fbf91d27c4a9b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7188e373f52410e350fbf91d27c4a9b7\">&#9670;&nbsp;</a></span>~DebugMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::DebugMenu::~DebugMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a18c5d317ba9354cd41742e98fc2f723d\" name=\"a18c5d317ba9354cd41742e98fc2f723d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18c5d317ba9354cd41742e98fc2f723d\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::DebugMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"acbe4b614ff313801176a8d5c9323f200\" name=\"acbe4b614ff313801176a8d5c9323f200\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbe4b614ff313801176a8d5c9323f200\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::DebugMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aaaeebe9c42d5ca723a4523549f3c633a\" name=\"aaaeebe9c42d5ca723a4523549f3c633a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaaeebe9c42d5ca723a4523549f3c633a\">&#9670;&nbsp;</a></span>intercept_enabled</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Menu::DebugMenu::intercept_enabled = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b84d612747abe7ce7521ec867b6df42\" name=\"a3b84d612747abe7ce7521ec867b6df42\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b84d612747abe7ce7521ec867b6df42\">&#9670;&nbsp;</a></span>intercept_menu</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a> * tram::Ext::Menu::DebugMenu::intercept_menu = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2ef205978570aa98b85d92117664971\" name=\"ae2ef205978570aa98b85d92117664971\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2ef205978570aa98b85d92117664971\">&#9670;&nbsp;</a></span>statistics_enabled</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Menu::DebugMenu::statistics_enabled = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f6a07f1747a26714f916feaa04d01ab\" name=\"a0f6a07f1747a26714f916feaa04d01ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f6a07f1747a26714f916feaa04d01ab\">&#9670;&nbsp;</a></span>statistics_menu</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a> * tram::Ext::Menu::DebugMenu::statistics_menu = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_entity_picker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">EntityPicker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EntityPicker Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">EntityPicker</a>(std::function&lt; void(id_t)&gt; callback)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">~EntityPicker</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_entity_picker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::EntityPicker Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">EntityPicker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EntityPicker Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::EntityPicker:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.png\" usemap=\"#tram::Ext::Menu::EntityPicker_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::EntityPicker_map\" name=\"tram::Ext::Menu::EntityPicker_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,170,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab1f5eb1fcacb7e7e21312fca561f48af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">EntityPicker</a> (std::function&lt; void(<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">callback</a>)</td></tr>\n<tr class=\"separator:ab1f5eb1fcacb7e7e21312fca561f48af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82465472dd314737a46e71a4bb490413\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">Layer</a> ()</td></tr>\n<tr class=\"separator:a82465472dd314737a46e71a4bb490413\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad21501bc964c628113e9b89f396e602c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">Display</a> ()</td></tr>\n<tr class=\"separator:ad21501bc964c628113e9b89f396e602c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae218519cd786e399c27b562fdeada24b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">~EntityPicker</a> ()=default</td></tr>\n<tr class=\"separator:ae218519cd786e399c27b562fdeada24b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a8c023a757a11debd8fd69ed09164e78a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::function&lt; void(<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">callback</a></td></tr>\n<tr class=\"separator:a8c023a757a11debd8fd69ed09164e78a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab1f5eb1fcacb7e7e21312fca561f48af\" name=\"ab1f5eb1fcacb7e7e21312fca561f48af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1f5eb1fcacb7e7e21312fca561f48af\">&#9670;&nbsp;</a></span>EntityPicker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::EntityPicker::EntityPicker </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::function&lt; void(<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt;&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae218519cd786e399c27b562fdeada24b\" name=\"ae218519cd786e399c27b562fdeada24b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae218519cd786e399c27b562fdeada24b\">&#9670;&nbsp;</a></span>~EntityPicker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::EntityPicker::~EntityPicker </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad21501bc964c628113e9b89f396e602c\" name=\"ad21501bc964c628113e9b89f396e602c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad21501bc964c628113e9b89f396e602c\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EntityPicker::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a82465472dd314737a46e71a4bb490413\" name=\"a82465472dd314737a46e71a4bb490413\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82465472dd314737a46e71a4bb490413\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::EntityPicker::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8c023a757a11debd8fd69ed09164e78a\" name=\"a8c023a757a11debd8fd69ed09164e78a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c023a757a11debd8fd69ed09164e78a\">&#9670;&nbsp;</a></span>callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::function&lt;void(<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt; tram::Ext::Menu::EntityPicker::callback</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_entity_properties-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">EntityProperties</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EntityProperties Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">entity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">SetPicked</a>(id_t entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">~EntityProperties</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_entity_properties.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::EntityProperties Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">EntityProperties</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EntityProperties Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::EntityProperties:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.png\" usemap=\"#tram::Ext::Menu::EntityProperties_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::EntityProperties_map\" name=\"tram::Ext::Menu::EntityProperties_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,192,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2465ce3aca5ad2e0b1e7b4b69090132c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">SetPicked</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">entity</a>)</td></tr>\n<tr class=\"separator:a2465ce3aca5ad2e0b1e7b4b69090132c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a5a2895e27ec27d0872dbc9551d64f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">Layer</a> ()</td></tr>\n<tr class=\"separator:a4a5a2895e27ec27d0872dbc9551d64f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4c550343edb9f75ef00d1b15e66636e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">Display</a> ()</td></tr>\n<tr class=\"separator:af4c550343edb9f75ef00d1b15e66636e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa64a874d80a135c0eaa412fde3320808\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">~EntityProperties</a> ()=default</td></tr>\n<tr class=\"separator:aa64a874d80a135c0eaa412fde3320808\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:acf1bf7e593e36cb4b389c6632623b0e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">entity</a> = 0</td></tr>\n<tr class=\"separator:acf1bf7e593e36cb4b389c6632623b0e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aa64a874d80a135c0eaa412fde3320808\" name=\"aa64a874d80a135c0eaa412fde3320808\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa64a874d80a135c0eaa412fde3320808\">&#9670;&nbsp;</a></span>~EntityProperties()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::EntityProperties::~EntityProperties </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af4c550343edb9f75ef00d1b15e66636e\" name=\"af4c550343edb9f75ef00d1b15e66636e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4c550343edb9f75ef00d1b15e66636e\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EntityProperties::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a4a5a2895e27ec27d0872dbc9551d64f4\" name=\"a4a5a2895e27ec27d0872dbc9551d64f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a5a2895e27ec27d0872dbc9551d64f4\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::EntityProperties::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a2465ce3aca5ad2e0b1e7b4b69090132c\" name=\"a2465ce3aca5ad2e0b1e7b4b69090132c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2465ce3aca5ad2e0b1e7b4b69090132c\">&#9670;&nbsp;</a></span>SetPicked()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EntityProperties::SetPicked </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"acf1bf7e593e36cb4b389c6632623b0e3\" name=\"acf1bf7e593e36cb4b389c6632623b0e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf1bf7e593e36cb4b389c6632623b0e3\">&#9670;&nbsp;</a></span>entity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Menu::EntityProperties::entity = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_event_emit-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">EventEmit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EventEmit Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">event_type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">parameter_string</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">parameter_type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">SetEventType</a>(uint32_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">subtype</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">subtype_string</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">~EventEmit</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_event_emit.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::EventEmit Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">EventEmit</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EventEmit Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::EventEmit:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.png\" usemap=\"#tram::Ext::Menu::EventEmit_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::EventEmit_map\" name=\"tram::Ext::Menu::EventEmit_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,158,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab8f2c00eee82630287cf68b3d9ca9469\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">SetEventType</a> (uint32_t type)</td></tr>\n<tr class=\"separator:ab8f2c00eee82630287cf68b3d9ca9469\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b6187201edc29ec7ce239ac0eaad7af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">Layer</a> ()</td></tr>\n<tr class=\"separator:a3b6187201edc29ec7ce239ac0eaad7af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62ff56e1969bb2b7cdd49446f8688de2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">Display</a> ()</td></tr>\n<tr class=\"separator:a62ff56e1969bb2b7cdd49446f8688de2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fe5f93eb89e11119d5cf0fb44e02494\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">~EventEmit</a> ()=default</td></tr>\n<tr class=\"separator:a7fe5f93eb89e11119d5cf0fb44e02494\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:afbcb5e97dee6c1c8eb8a4e4fff488c4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">subtype</a> = 0</td></tr>\n<tr class=\"separator:afbcb5e97dee6c1c8eb8a4e4fff488c4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac74668908219798e42ccb5c73b8b60fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">parameter_type</a> = 0</td></tr>\n<tr class=\"separator:ac74668908219798e42ccb5c73b8b60fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a3692407b1c476b25a80d299caa09a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">event_type</a> = 0</td></tr>\n<tr class=\"separator:a3a3692407b1c476b25a80d299caa09a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab28d6b55f6c036ebd9399dd1bbb22e25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">subtype_string</a> [8] = &quot;0&quot;</td></tr>\n<tr class=\"separator:ab28d6b55f6c036ebd9399dd1bbb22e25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a123fd9dd1b5828d6e09669773c1c80d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">parameter_string</a> [32] = &quot;&quot;</td></tr>\n<tr class=\"separator:a123fd9dd1b5828d6e09669773c1c80d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a7fe5f93eb89e11119d5cf0fb44e02494\" name=\"a7fe5f93eb89e11119d5cf0fb44e02494\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7fe5f93eb89e11119d5cf0fb44e02494\">&#9670;&nbsp;</a></span>~EventEmit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::EventEmit::~EventEmit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a62ff56e1969bb2b7cdd49446f8688de2\" name=\"a62ff56e1969bb2b7cdd49446f8688de2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62ff56e1969bb2b7cdd49446f8688de2\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EventEmit::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a3b6187201edc29ec7ce239ac0eaad7af\" name=\"a3b6187201edc29ec7ce239ac0eaad7af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b6187201edc29ec7ce239ac0eaad7af\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::EventEmit::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"ab8f2c00eee82630287cf68b3d9ca9469\" name=\"ab8f2c00eee82630287cf68b3d9ca9469\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8f2c00eee82630287cf68b3d9ca9469\">&#9670;&nbsp;</a></span>SetEventType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EventEmit::SetEventType </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a3a3692407b1c476b25a80d299caa09a1\" name=\"a3a3692407b1c476b25a80d299caa09a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a3692407b1c476b25a80d299caa09a1\">&#9670;&nbsp;</a></span>event_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::EventEmit::event_type = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a123fd9dd1b5828d6e09669773c1c80d1\" name=\"a123fd9dd1b5828d6e09669773c1c80d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a123fd9dd1b5828d6e09669773c1c80d1\">&#9670;&nbsp;</a></span>parameter_string</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Ext::Menu::EventEmit::parameter_string[32] = &quot;&quot;</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac74668908219798e42ccb5c73b8b60fd\" name=\"ac74668908219798e42ccb5c73b8b60fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac74668908219798e42ccb5c73b8b60fd\">&#9670;&nbsp;</a></span>parameter_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::EventEmit::parameter_type = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afbcb5e97dee6c1c8eb8a4e4fff488c4f\" name=\"afbcb5e97dee6c1c8eb8a4e4fff488c4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">&#9670;&nbsp;</a></span>subtype</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Ext::Menu::EventEmit::subtype = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab28d6b55f6c036ebd9399dd1bbb22e25\" name=\"ab28d6b55f6c036ebd9399dd1bbb22e25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab28d6b55f6c036ebd9399dd1bbb22e25\">&#9670;&nbsp;</a></span>subtype_string</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Ext::Menu::EventEmit::subtype_string[8] = &quot;0&quot;</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_intercept_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::InterceptMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">SetOffset</a>(uint32_t offset)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">~InterceptMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::InterceptMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::InterceptMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::InterceptMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.png\" usemap=\"#tram::Ext::Menu::InterceptMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::InterceptMenu_map\" name=\"tram::Ext::Menu::InterceptMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,184,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ace624827c9bfd8ef24aa15db1c2249c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">Display</a> ()</td></tr>\n<tr class=\"separator:ace624827c9bfd8ef24aa15db1c2249c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a350714cafdedf14bb78f9ccbc0c5d6b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">Layer</a> ()</td></tr>\n<tr class=\"separator:a350714cafdedf14bb78f9ccbc0c5d6b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b0714060be9fd26726a1aa37108edc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">SetOffset</a> (uint32_t <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a>)</td></tr>\n<tr class=\"separator:a5b0714060be9fd26726a1aa37108edc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e311e211e2d9b0d025ce9e1e571a166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">~InterceptMenu</a> ()=default</td></tr>\n<tr class=\"separator:a8e311e211e2d9b0d025ce9e1e571a166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a2c39ca031c740b68ca7695bb8c3af75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a> = 0</td></tr>\n<tr class=\"separator:a2c39ca031c740b68ca7695bb8c3af75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a8e311e211e2d9b0d025ce9e1e571a166\" name=\"a8e311e211e2d9b0d025ce9e1e571a166\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e311e211e2d9b0d025ce9e1e571a166\">&#9670;&nbsp;</a></span>~InterceptMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::InterceptMenu::~InterceptMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ace624827c9bfd8ef24aa15db1c2249c3\" name=\"ace624827c9bfd8ef24aa15db1c2249c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace624827c9bfd8ef24aa15db1c2249c3\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::InterceptMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a350714cafdedf14bb78f9ccbc0c5d6b9\" name=\"a350714cafdedf14bb78f9ccbc0c5d6b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a350714cafdedf14bb78f9ccbc0c5d6b9\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::InterceptMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a5b0714060be9fd26726a1aa37108edc2\" name=\"a5b0714060be9fd26726a1aa37108edc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b0714060be9fd26726a1aa37108edc2\">&#9670;&nbsp;</a></span>SetOffset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::InterceptMenu::SetOffset </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>offset</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2c39ca031c740b68ca7695bb8c3af75c\" name=\"a2c39ca031c740b68ca7695bb8c3af75c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c39ca031c740b68ca7695bb8c3af75c\">&#9670;&nbsp;</a></span>offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::InterceptMenu::offset = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_list_selection-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">ListSelection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::ListSelection Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">list</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">ListSelection</a>(std::function&lt; void(uint32_t)&gt; callback, std::vector&lt; std::string &gt; list)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">~ListSelection</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_list_selection.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::ListSelection Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">ListSelection</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::ListSelection Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::ListSelection:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.png\" usemap=\"#tram::Ext::Menu::ListSelection_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::ListSelection_map\" name=\"tram::Ext::Menu::ListSelection_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,174,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3d214fa7bbb5d943a33213188da06d4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">ListSelection</a> (std::function&lt; void(uint32_t)&gt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">callback</a>, std::vector&lt; std::string &gt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">list</a>)</td></tr>\n<tr class=\"separator:a3d214fa7bbb5d943a33213188da06d4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a37f83670863cef2947520bfc87bf7439\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">Layer</a> ()</td></tr>\n<tr class=\"separator:a37f83670863cef2947520bfc87bf7439\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f67db7b4e9fa99e969427ecee0636f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">Display</a> ()</td></tr>\n<tr class=\"separator:a5f67db7b4e9fa99e969427ecee0636f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc2b7e76a954f3d314a73908d427d03b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">~ListSelection</a> ()=default</td></tr>\n<tr class=\"separator:acc2b7e76a954f3d314a73908d427d03b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5651a090194d79d5ce22e0bca536b760\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::function&lt; void(uint32_t)&gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">callback</a></td></tr>\n<tr class=\"separator:a5651a090194d79d5ce22e0bca536b760\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03f4f84b736a200aafa2848c1e3e02cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::string &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">list</a></td></tr>\n<tr class=\"separator:a03f4f84b736a200aafa2848c1e3e02cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a3d214fa7bbb5d943a33213188da06d4f\" name=\"a3d214fa7bbb5d943a33213188da06d4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d214fa7bbb5d943a33213188da06d4f\">&#9670;&nbsp;</a></span>ListSelection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::ListSelection::ListSelection </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::function&lt; void(uint32_t)&gt;&#160;</td>\n          <td class=\"paramname\"><em>callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; std::string &gt;&#160;</td>\n          <td class=\"paramname\"><em>list</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acc2b7e76a954f3d314a73908d427d03b\" name=\"acc2b7e76a954f3d314a73908d427d03b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc2b7e76a954f3d314a73908d427d03b\">&#9670;&nbsp;</a></span>~ListSelection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::ListSelection::~ListSelection </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5f67db7b4e9fa99e969427ecee0636f6\" name=\"a5f67db7b4e9fa99e969427ecee0636f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f67db7b4e9fa99e969427ecee0636f6\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::ListSelection::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a37f83670863cef2947520bfc87bf7439\" name=\"a37f83670863cef2947520bfc87bf7439\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a37f83670863cef2947520bfc87bf7439\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::ListSelection::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5651a090194d79d5ce22e0bca536b760\" name=\"a5651a090194d79d5ce22e0bca536b760\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5651a090194d79d5ce22e0bca536b760\">&#9670;&nbsp;</a></span>callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::function&lt;void(uint32_t)&gt; tram::Ext::Menu::ListSelection::callback</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03f4f84b736a200aafa2848c1e3e02cd\" name=\"a03f4f84b736a200aafa2848c1e3e02cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03f4f84b736a200aafa2848c1e3e02cd\">&#9670;&nbsp;</a></span>list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::string&gt; tram::Ext::Menu::ListSelection::list</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Menu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">Display</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">Layer</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::Menu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Menu Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">menu.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::Menu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_menu.png\" usemap=\"#tram::Ext::Menu::Menu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::Menu_map\" name=\"tram::Ext::Menu::Menu_map\">\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\" alt=\"tram::Ext::Kitchensink::KitchensinkMenuList\" shape=\"rect\" coords=\"260,56,510,80\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\" alt=\"tram::Ext::Kitchensink::ListDialog\" shape=\"rect\" coords=\"260,112,510,136\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\" alt=\"tram::Ext::Kitchensink::ListInventory\" shape=\"rect\" coords=\"260,168,510,192\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\" alt=\"tram::Ext::Kitchensink::ListTrade\" shape=\"rect\" coords=\"260,224,510,248\"/>\n<area href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\" alt=\"tram::Ext::Kitchensink::QuestList\" shape=\"rect\" coords=\"260,280,510,304\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\" alt=\"tram::Ext::Menu::Console\" shape=\"rect\" coords=\"260,336,510,360\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\" alt=\"tram::Ext::Menu::DebugMenu\" shape=\"rect\" coords=\"260,392,510,416\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\" alt=\"tram::Ext::Menu::EntityPicker\" shape=\"rect\" coords=\"260,448,510,472\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\" alt=\"tram::Ext::Menu::EntityProperties\" shape=\"rect\" coords=\"260,504,510,528\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\" alt=\"tram::Ext::Menu::EventEmit\" shape=\"rect\" coords=\"260,560,510,584\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\" alt=\"tram::Ext::Menu::InterceptMenu\" shape=\"rect\" coords=\"260,616,510,640\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\" alt=\"tram::Ext::Menu::ListSelection\" shape=\"rect\" coords=\"260,672,510,696\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\" alt=\"tram::Ext::Menu::MessageSend\" shape=\"rect\" coords=\"260,728,510,752\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\" alt=\"tram::Ext::Menu::Options\" shape=\"rect\" coords=\"260,784,510,808\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\" alt=\"tram::Ext::Menu::SettingsMenu\" shape=\"rect\" coords=\"260,840,510,864\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\" alt=\"tram::Ext::Menu::SignalMenu\" shape=\"rect\" coords=\"260,896,510,920\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\" alt=\"tram::Ext::Menu::StatisticsMenu\" shape=\"rect\" coords=\"260,952,510,976\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\" alt=\"tram::Ext::Menu::SystemMenu\" shape=\"rect\" coords=\"260,1008,510,1032\"/>\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\" alt=\"tram::Ext::Menu::WorldCellProperties\" shape=\"rect\" coords=\"260,1064,510,1088\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a99db3585e61c0c71f99ef8637edce775\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">Display</a> ()=0</td></tr>\n<tr class=\"separator:a99db3585e61c0c71f99ef8637edce775\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a972ff0163ab4ebc7d8acacce5d09a921\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">Layer</a> ()=0</td></tr>\n<tr class=\"separator:a972ff0163ab4ebc7d8acacce5d09a921\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4661c15d6f311be1f7957a4e0ab28305\" name=\"a4661c15d6f311be1f7957a4e0ab28305\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4661c15d6f311be1f7957a4e0ab28305\">&#9670;&nbsp;</a></span>~Menu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Ext::Menu::Menu::~Menu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1daec0fd40b63b2ebedbbc99dee5cb80\" name=\"a1daec0fd40b63b2ebedbbc99dee5cb80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1daec0fd40b63b2ebedbbc99dee5cb80\">&#9670;&nbsp;</a></span>Add()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Menu::Add </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *&#160;</td>\n          <td class=\"paramname\"><em>menu</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a172b7acc126ab25cbbb7162c7ae75f19\" name=\"a172b7acc126ab25cbbb7162c7ae75f19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a172b7acc126ab25cbbb7162c7ae75f19\">&#9670;&nbsp;</a></span>Clear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Menu::Clear </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Clears the menu stack. </p>\n<p >This will behave as if <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\" title=\"Pops the topmost menu from the stack.\">Menu::Pop()</a> was called until the menu stack was empty. </p><dl class=\"section note\"><dt>Note</dt><dd>All of the menus in the stack will be <code>delete</code>ed. </dd></dl>\n\n</div>\n</div>\n<a id=\"a99db3585e61c0c71f99ef8637edce775\" name=\"a99db3585e61c0c71f99ef8637edce775\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99db3585e61c0c71f99ef8637edce775\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Ext::Menu::Menu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">tram::Ext::Menu::WorldCellProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">tram::Ext::Menu::SystemMenu</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">tram::Ext::Menu::SettingsMenu</a>.</p>\n\n</div>\n</div>\n<a id=\"a8dc18857f173b127ee34a3fd65306d9f\" name=\"a8dc18857f173b127ee34a3fd65306d9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8dc18857f173b127ee34a3fd65306d9f\">&#9670;&nbsp;</a></span>Empty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Menu::Menu::Empty </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the menu stack is empty. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if it is empty. </dd></dl>\n\n</div>\n</div>\n<a id=\"a972ff0163ab4ebc7d8acacce5d09a921\" name=\"a972ff0163ab4ebc7d8acacce5d09a921\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a972ff0163ab4ebc7d8acacce5d09a921\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual uint32_t tram::Ext::Menu::Menu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">tram::Ext::Menu::WorldCellProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">tram::Ext::Menu::SystemMenu</a>, and <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">tram::Ext::Menu::SettingsMenu</a>.</p>\n\n</div>\n</div>\n<a id=\"a06f962abc8aeb9e7782cbd637d56f0fd\" name=\"a06f962abc8aeb9e7782cbd637d56f0fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06f962abc8aeb9e7782cbd637d56f0fd\">&#9670;&nbsp;</a></span>Pop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Menu::Menu::Pop </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Pops the topmost menu from the stack. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>The menu will be <code>delete</code>d after removing it from the stack. </dd></dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if a menu was popped, false if stack was empty. </dd></dl>\n\n</div>\n</div>\n<a id=\"afaf4c154f0f256b684b9ca9a7d7f057f\" name=\"afaf4c154f0f256b684b9ca9a7d7f057f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afaf4c154f0f256b684b9ca9a7d7f057f\">&#9670;&nbsp;</a></span>Push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Menu::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *&#160;</td>\n          <td class=\"paramname\"><em>menu</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Pushes menu on the menu stack. </p>\n\n</div>\n</div>\n<a id=\"aa9d042bb7757a4a95a634582c36eb7db\" name=\"aa9d042bb7757a4a95a634582c36eb7db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9d042bb7757a4a95a634582c36eb7db\">&#9670;&nbsp;</a></span>Remove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Menu::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *&#160;</td>\n          <td class=\"paramname\"><em>menu</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"menu_2menu_8h_source.html\">menu.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"menu_2menu_8cpp.html\">menu.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_message_send-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">MessageSend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::MessageSend Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">entity_id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">message_type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">parameter_string</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">parameter_type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">SetEntity</a>(id_t entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">SetMessageType</a>(uint32_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">~MessageSend</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_message_send.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::MessageSend Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">MessageSend</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::MessageSend Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::MessageSend:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_message_send.png\" usemap=\"#tram::Ext::Menu::MessageSend_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::MessageSend_map\" name=\"tram::Ext::Menu::MessageSend_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,183,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0895a5a8ed80b2a60a59cb1fe37a5cc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">SetEntity</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity)</td></tr>\n<tr class=\"separator:a0895a5a8ed80b2a60a59cb1fe37a5cc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44e7e4389ab204102b9d53581be518d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">SetMessageType</a> (uint32_t type)</td></tr>\n<tr class=\"separator:a44e7e4389ab204102b9d53581be518d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0aac25870c19be99a9dbec77f3941bd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">Layer</a> ()</td></tr>\n<tr class=\"separator:a0aac25870c19be99a9dbec77f3941bd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71295df4e886a77b31a12f873b8cf5c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">Display</a> ()</td></tr>\n<tr class=\"separator:a71295df4e886a77b31a12f873b8cf5c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20a8253e3f5b3401aad9cfad27133fb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">~MessageSend</a> ()=default</td></tr>\n<tr class=\"separator:a20a8253e3f5b3401aad9cfad27133fb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ac3eb62488f5accdcc4f60ef0f9d93fb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">parameter_type</a> = 0</td></tr>\n<tr class=\"separator:ac3eb62488f5accdcc4f60ef0f9d93fb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a0c4f4d89dead8b68cdf556558bf446\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">entity_id</a> = 0</td></tr>\n<tr class=\"separator:a4a0c4f4d89dead8b68cdf556558bf446\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5a139a253bf7fccfbd60307e4552d03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">message_type</a> = 0</td></tr>\n<tr class=\"separator:af5a139a253bf7fccfbd60307e4552d03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7674c2ea9dadef8e94fb4f9407271e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">parameter_string</a> [32] = &quot;&quot;</td></tr>\n<tr class=\"separator:ac7674c2ea9dadef8e94fb4f9407271e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a20a8253e3f5b3401aad9cfad27133fb4\" name=\"a20a8253e3f5b3401aad9cfad27133fb4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20a8253e3f5b3401aad9cfad27133fb4\">&#9670;&nbsp;</a></span>~MessageSend()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::MessageSend::~MessageSend </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a71295df4e886a77b31a12f873b8cf5c2\" name=\"a71295df4e886a77b31a12f873b8cf5c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71295df4e886a77b31a12f873b8cf5c2\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::MessageSend::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a0aac25870c19be99a9dbec77f3941bd6\" name=\"a0aac25870c19be99a9dbec77f3941bd6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0aac25870c19be99a9dbec77f3941bd6\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::MessageSend::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a0895a5a8ed80b2a60a59cb1fe37a5cc1\" name=\"a0895a5a8ed80b2a60a59cb1fe37a5cc1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">&#9670;&nbsp;</a></span>SetEntity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::MessageSend::SetEntity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44e7e4389ab204102b9d53581be518d7\" name=\"a44e7e4389ab204102b9d53581be518d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44e7e4389ab204102b9d53581be518d7\">&#9670;&nbsp;</a></span>SetMessageType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::MessageSend::SetMessageType </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4a0c4f4d89dead8b68cdf556558bf446\" name=\"a4a0c4f4d89dead8b68cdf556558bf446\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a0c4f4d89dead8b68cdf556558bf446\">&#9670;&nbsp;</a></span>entity_id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Menu::MessageSend::entity_id = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5a139a253bf7fccfbd60307e4552d03\" name=\"af5a139a253bf7fccfbd60307e4552d03\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5a139a253bf7fccfbd60307e4552d03\">&#9670;&nbsp;</a></span>message_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::MessageSend::message_type = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac7674c2ea9dadef8e94fb4f9407271e3\" name=\"ac7674c2ea9dadef8e94fb4f9407271e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7674c2ea9dadef8e94fb4f9407271e3\">&#9670;&nbsp;</a></span>parameter_string</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Ext::Menu::MessageSend::parameter_string[32] = &quot;&quot;</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3eb62488f5accdcc4f60ef0f9d93fb0\" name=\"ac3eb62488f5accdcc4f60ef0f9d93fb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3eb62488f5accdcc4f60ef0f9d93fb0\">&#9670;&nbsp;</a></span>parameter_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::MessageSend::parameter_type = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_options-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">Options</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Options Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">Options</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">~Options</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_options.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::Options Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">Options</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_options-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Options Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::Options:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_options.png\" usemap=\"#tram::Ext::Menu::Options_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::Options_map\" name=\"tram::Ext::Menu::Options_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,146,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a11552024ef3e7976cf5b0fbcbbd63d22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">Options</a> ()=default</td></tr>\n<tr class=\"separator:a11552024ef3e7976cf5b0fbcbbd63d22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6713b9bb4a7e222ce6ea27a7ecee557\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">Layer</a> ()</td></tr>\n<tr class=\"separator:aa6713b9bb4a7e222ce6ea27a7ecee557\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2987ac69185cc8573e00557bcc8eda86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">Display</a> ()</td></tr>\n<tr class=\"separator:a2987ac69185cc8573e00557bcc8eda86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a047aa5cac263824ead3e543667b2289b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">~Options</a> ()=default</td></tr>\n<tr class=\"separator:a047aa5cac263824ead3e543667b2289b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a11552024ef3e7976cf5b0fbcbbd63d22\" name=\"a11552024ef3e7976cf5b0fbcbbd63d22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11552024ef3e7976cf5b0fbcbbd63d22\">&#9670;&nbsp;</a></span>Options()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::Options::Options </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a047aa5cac263824ead3e543667b2289b\" name=\"a047aa5cac263824ead3e543667b2289b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a047aa5cac263824ead3e543667b2289b\">&#9670;&nbsp;</a></span>~Options()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::Options::~Options </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2987ac69185cc8573e00557bcc8eda86\" name=\"a2987ac69185cc8573e00557bcc8eda86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2987ac69185cc8573e00557bcc8eda86\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Options::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"aa6713b9bb4a7e222ce6ea27a7ecee557\" name=\"aa6713b9bb4a7e222ce6ea27a7ecee557\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6713b9bb4a7e222ce6ea27a7ecee557\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::Options::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_settings_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">SettingsMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SettingsMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">binding_action</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">binding_state_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tab</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">~SettingsMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_settings_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::SettingsMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">SettingsMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SettingsMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">system.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::SettingsMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.png\" usemap=\"#tram::Ext::Menu::SettingsMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::SettingsMenu_map\" name=\"tram::Ext::Menu::SettingsMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,179,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a629fd955067640b30e849692d1eb5cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">Display</a> ()</td></tr>\n<tr class=\"separator:a629fd955067640b30e849692d1eb5cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48a51fdd2b0697dc7eea3934e247760f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">Layer</a> ()</td></tr>\n<tr class=\"separator:a48a51fdd2b0697dc7eea3934e247760f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95521cbfe6936dd0cd0011a107589491\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">~SettingsMenu</a> ()=default</td></tr>\n<tr class=\"separator:a95521cbfe6936dd0cd0011a107589491\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a51abff2b754e4376be37a35cceacc839\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tab</a> = 0</td></tr>\n<tr class=\"separator:a51abff2b754e4376be37a35cceacc839\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d4a3d849008c2cf884787555a373725\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">binding_action</a> = 0</td></tr>\n<tr class=\"separator:a6d4a3d849008c2cf884787555a373725\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5975fcefcf9922e267a6de09fa00a479\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">binding_state_ready</a> = false</td></tr>\n<tr class=\"separator:a5975fcefcf9922e267a6de09fa00a479\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a95521cbfe6936dd0cd0011a107589491\" name=\"a95521cbfe6936dd0cd0011a107589491\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95521cbfe6936dd0cd0011a107589491\">&#9670;&nbsp;</a></span>~SettingsMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::SettingsMenu::~SettingsMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a629fd955067640b30e849692d1eb5cfb\" name=\"a629fd955067640b30e849692d1eb5cfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a629fd955067640b30e849692d1eb5cfb\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::SettingsMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a48a51fdd2b0697dc7eea3934e247760f\" name=\"a48a51fdd2b0697dc7eea3934e247760f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48a51fdd2b0697dc7eea3934e247760f\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::SettingsMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6d4a3d849008c2cf884787555a373725\" name=\"a6d4a3d849008c2cf884787555a373725\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d4a3d849008c2cf884787555a373725\">&#9670;&nbsp;</a></span>binding_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::SettingsMenu::binding_action = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5975fcefcf9922e267a6de09fa00a479\" name=\"a5975fcefcf9922e267a6de09fa00a479\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5975fcefcf9922e267a6de09fa00a479\">&#9670;&nbsp;</a></span>binding_state_ready</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Menu::SettingsMenu::binding_state_ready = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51abff2b754e4376be37a35cceacc839\" name=\"a51abff2b754e4376be37a35cceacc839\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51abff2b754e4376be37a35cceacc839\">&#9670;&nbsp;</a></span>tab</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::SettingsMenu::tab = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">system.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"extensions_2menu_2system_8cpp.html\">system.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_signal_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">SignalMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SignalMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">entity_id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">SetEntity</a>(id_t entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">~SignalMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_signal_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::SignalMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">SignalMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SignalMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::SignalMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.png\" usemap=\"#tram::Ext::Menu::SignalMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::SignalMenu_map\" name=\"tram::Ext::Menu::SignalMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,170,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:afb8fba8b653379700d91bef8816f036e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">SetEntity</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity)</td></tr>\n<tr class=\"separator:afb8fba8b653379700d91bef8816f036e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2d0156404c23e79e3700b2cb0936282\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">Display</a> ()</td></tr>\n<tr class=\"separator:af2d0156404c23e79e3700b2cb0936282\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a8ace39c5fbd999a3651c9c3042b3a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">Layer</a> ()</td></tr>\n<tr class=\"separator:a0a8ace39c5fbd999a3651c9c3042b3a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae32579e6e3511bb5642aa3abf416f6e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">~SignalMenu</a> ()=default</td></tr>\n<tr class=\"separator:ae32579e6e3511bb5642aa3abf416f6e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a1b88163f3d0384c8d005d5457a75c923\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">entity_id</a> = 0</td></tr>\n<tr class=\"separator:a1b88163f3d0384c8d005d5457a75c923\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae32579e6e3511bb5642aa3abf416f6e1\" name=\"ae32579e6e3511bb5642aa3abf416f6e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae32579e6e3511bb5642aa3abf416f6e1\">&#9670;&nbsp;</a></span>~SignalMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::SignalMenu::~SignalMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af2d0156404c23e79e3700b2cb0936282\" name=\"af2d0156404c23e79e3700b2cb0936282\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2d0156404c23e79e3700b2cb0936282\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::SignalMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a0a8ace39c5fbd999a3651c9c3042b3a7\" name=\"a0a8ace39c5fbd999a3651c9c3042b3a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a8ace39c5fbd999a3651c9c3042b3a7\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::SignalMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"afb8fba8b653379700d91bef8816f036e\" name=\"afb8fba8b653379700d91bef8816f036e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb8fba8b653379700d91bef8816f036e\">&#9670;&nbsp;</a></span>SetEntity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::SignalMenu::SetEntity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a1b88163f3d0384c8d005d5457a75c923\" name=\"a1b88163f3d0384c8d005d5457a75c923\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b88163f3d0384c8d005d5457a75c923\">&#9670;&nbsp;</a></span>entity_id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Menu::SignalMenu::entity_id = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_statistics_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::StatisticsMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">~StatisticsMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::StatisticsMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::StatisticsMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::StatisticsMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.png\" usemap=\"#tram::Ext::Menu::StatisticsMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::StatisticsMenu_map\" name=\"tram::Ext::Menu::StatisticsMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,184,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a397886851d7cc3d304c552a8807e0596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">Display</a> ()</td></tr>\n<tr class=\"separator:a397886851d7cc3d304c552a8807e0596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ecc5a8babc2c7f2efed7d7d05f57fc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">Layer</a> ()</td></tr>\n<tr class=\"separator:a0ecc5a8babc2c7f2efed7d7d05f57fc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ebc52f5c684a20cfad01e7c62e95809\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">~StatisticsMenu</a> ()=default</td></tr>\n<tr class=\"separator:a6ebc52f5c684a20cfad01e7c62e95809\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a6ebc52f5c684a20cfad01e7c62e95809\" name=\"a6ebc52f5c684a20cfad01e7c62e95809\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ebc52f5c684a20cfad01e7c62e95809\">&#9670;&nbsp;</a></span>~StatisticsMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::StatisticsMenu::~StatisticsMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a397886851d7cc3d304c552a8807e0596\" name=\"a397886851d7cc3d304c552a8807e0596\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a397886851d7cc3d304c552a8807e0596\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::StatisticsMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a0ecc5a8babc2c7f2efed7d7d05f57fc9\" name=\"a0ecc5a8babc2c7f2efed7d7d05f57fc9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::StatisticsMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_system_menu-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">SystemMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SystemMenu Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">~SystemMenu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_system_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::SystemMenu Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">SystemMenu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::SystemMenu Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">system.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::SystemMenu:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.png\" usemap=\"#tram::Ext::Menu::SystemMenu_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::SystemMenu_map\" name=\"tram::Ext::Menu::SystemMenu_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,175,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aebef9f1ed425a93b52230f3d176a765a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">Display</a> ()</td></tr>\n<tr class=\"separator:aebef9f1ed425a93b52230f3d176a765a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a692ddb36ef07913c6a6595e3446370b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">Layer</a> ()</td></tr>\n<tr class=\"separator:a692ddb36ef07913c6a6595e3446370b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65e0843f9e22ac47984d5f7e2ba6a8ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">~SystemMenu</a> ()=default</td></tr>\n<tr class=\"separator:a65e0843f9e22ac47984d5f7e2ba6a8ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a65e0843f9e22ac47984d5f7e2ba6a8ce\" name=\"a65e0843f9e22ac47984d5f7e2ba6a8ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65e0843f9e22ac47984d5f7e2ba6a8ce\">&#9670;&nbsp;</a></span>~SystemMenu()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::SystemMenu::~SystemMenu </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aebef9f1ed425a93b52230f3d176a765a\" name=\"aebef9f1ed425a93b52230f3d176a765a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aebef9f1ed425a93b52230f3d176a765a\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::SystemMenu::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a692ddb36ef07913c6a6595e3446370b8\" name=\"a692ddb36ef07913c6a6595e3446370b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a692ddb36ef07913c6a6595e3446370b8\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::SystemMenu::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">system.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"extensions_2menu_2system_8cpp.html\">system.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_world_cell_properties-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">WorldCellProperties</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::WorldCellProperties Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">Layer</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(Menu *)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">SetPicked</a>(WorldCell *cell)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">~WorldCellProperties</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::WorldCellProperties Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">WorldCellProperties</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::WorldCellProperties Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::WorldCellProperties:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.png\" usemap=\"#tram::Ext::Menu::WorldCellProperties_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::WorldCellProperties_map\" name=\"tram::Ext::Menu::WorldCellProperties_map\">\n<area href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" alt=\"tram::Ext::Menu::Menu\" shape=\"rect\" coords=\"0,0,216,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a93063bcbb048c2fd86995f4ca5ad0ab4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">SetPicked</a> (<a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">cell</a>)</td></tr>\n<tr class=\"separator:a93063bcbb048c2fd86995f4ca5ad0ab4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ebf84a47dcf839b8b4cc56c968e9647\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">Layer</a> ()</td></tr>\n<tr class=\"separator:a4ebf84a47dcf839b8b4cc56c968e9647\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10cc9429cb5dca2cfbbb12505d28acbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">Display</a> ()</td></tr>\n<tr class=\"separator:a10cc9429cb5dca2cfbbb12505d28acbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af55b32e6c2a70a39efe13fd92ed3574f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">~WorldCellProperties</a> ()=default</td></tr>\n<tr class=\"separator:af55b32e6c2a70a39efe13fd92ed3574f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a> ()=default</td></tr>\n<tr class=\"separator:a4661c15d6f311be1f7957a4e0ab28305 inherit pub_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af1e688384507e5243de02c997e49f8fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:af1e688384507e5243de02c997e49f8fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memitem:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"memdesc:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes menu on the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf4c154f0f256b684b9ca9a7d7f057f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a> ()</td></tr>\n<tr class=\"memdesc:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pops the topmost menu from the stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a06f962abc8aeb9e7782cbd637d56f0fd inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a> ()</td></tr>\n<tr class=\"memdesc:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the menu stack is empty.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">More...</a><br /></td></tr>\n<tr class=\"separator:a8dc18857f173b127ee34a3fd65306d9f inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a> ()</td></tr>\n<tr class=\"memdesc:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Clears the menu stack.  <a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">More...</a><br /></td></tr>\n<tr class=\"separator:a172b7acc126ab25cbbb7162c7ae75f19 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:a1daec0fd40b63b2ebedbbc99dee5cb80 inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> *)</td></tr>\n<tr class=\"separator:aa9d042bb7757a4a95a634582c36eb7db inherit pub_static_methods_classtram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af55b32e6c2a70a39efe13fd92ed3574f\" name=\"af55b32e6c2a70a39efe13fd92ed3574f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af55b32e6c2a70a39efe13fd92ed3574f\">&#9670;&nbsp;</a></span>~WorldCellProperties()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Menu::WorldCellProperties::~WorldCellProperties </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a10cc9429cb5dca2cfbbb12505d28acbc\" name=\"a10cc9429cb5dca2cfbbb12505d28acbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10cc9429cb5dca2cfbbb12505d28acbc\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::WorldCellProperties::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a4ebf84a47dcf839b8b4cc56c968e9647\" name=\"a4ebf84a47dcf839b8b4cc56c968e9647\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ebf84a47dcf839b8b4cc56c968e9647\">&#9670;&nbsp;</a></span>Layer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::WorldCellProperties::Layer </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>.</p>\n\n</div>\n</div>\n<a id=\"a93063bcbb048c2fd86995f4ca5ad0ab4\" name=\"a93063bcbb048c2fd86995f4ca5ad0ab4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93063bcbb048c2fd86995f4ca5ad0ab4\">&#9670;&nbsp;</a></span>SetPicked()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::WorldCellProperties::SetPicked </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td>\n          <td class=\"paramname\"><em>cell</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af1e688384507e5243de02c997e49f8fc\" name=\"af1e688384507e5243de02c997e49f8fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1e688384507e5243de02c997e49f8fc\">&#9670;&nbsp;</a></span>cell</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* tram::Ext::Menu::WorldCellProperties::cell = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8h_source.html\">debug.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">Scripting</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">Lua</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Scripting::Lua::Lua Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">tram::Ext::Scripting::Lua::Lua</a>, including all inherited members.</p>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Scripting::Lua::Lua Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">Scripting</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">Lua</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Scripting::Lua::Lua Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Scripting::Lua::Lua:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.png\" usemap=\"#tram::Ext::Scripting::Lua::Lua_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Scripting::Lua::Lua_map\" name=\"tram::Ext::Scripting::Lua::Lua_map\">\n<area href=\"classtram_1_1_script_1_1_interface.html\" alt=\"tram::Script::Interface\" shape=\"rect\" coords=\"0,0,169,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n</table>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/scripting/<a class=\"el\" href=\"lua_8cpp.html\">lua.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_f_p_s_controller_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FPSControllerComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">ApplyDynamics</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">collision_group</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">collision_height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">collision_height_crouch</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">collision_width</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">ControllerComponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">Crouch</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">crouch_collision</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">crouch_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">crouching</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">EventHandler</a>(Event &amp;event) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">Fly</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">fly_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">flying</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">FPSControllerComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">is_in_air</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">Jump</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">Move</a>(vec3 local_direction) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">move_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">Push</a>(vec3 direction) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">RecoverFromCollisions</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">ResetMove</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">Run</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">run_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">running</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">SetCollisionGroup</a>(uint32_t group)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a>(bool collide)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">SetCollisionSize</a>(float width, float height, float crouch_height)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">SetCrouchSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">SetFlySpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">SetFriction</a>(float friction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a>(quat direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">SetRunSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">SetStepHeight</a>(float height, float crouch_height)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">SetWalkSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">SetWallCollisionCallback</a>(void(*callback)(ControllerComponent *, Physics::Collision))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">standing_on</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">standing_on_prev</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">standing_pos</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">standing_rot</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">Start</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">step_height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">step_height_crouch</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">TurnLeft</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">TurnRight</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">velocity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">walk_collision</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">walk_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">wallbonk_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">~FPSControllerComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_f_p_s_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FPSControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_f_p_s_controller_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FPSControllerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of an FPS-style character controller.  \n <a href=\"classtram_1_1_f_p_s_controller_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::FPSControllerComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_f_p_s_controller_component.png\" usemap=\"#tram::FPSControllerComponent_map\" alt=\"\"/>\n  <map id=\"tram::FPSControllerComponent_map\" name=\"tram::FPSControllerComponent_map\">\n<area href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\" alt=\"tram::ControllerComponent\" shape=\"rect\" coords=\"0,56,185,80\"/>\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,185,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab078a61443c6f5d29fa5a9bb1fa06aea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">Start</a> () override</td></tr>\n<tr class=\"separator:ab078a61443c6f5d29fa5a9bb1fa06aea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c5b27f8fb2ca29b48fc4d291b71b8d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) override</td></tr>\n<tr class=\"separator:a5c5b27f8fb2ca29b48fc4d291b71b8d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac47fe6964c8f7590a92f8fa5be91c825\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">Move</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction) override</td></tr>\n<tr class=\"separator:ac47fe6964c8f7590a92f8fa5be91c825\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cdc505ef5241f71136c2ff356e55615\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">Run</a> () override</td></tr>\n<tr class=\"separator:a8cdc505ef5241f71136c2ff356e55615\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44ff24373b7604e870849d286e3fe86e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">Crouch</a> () override</td></tr>\n<tr class=\"separator:a44ff24373b7604e870849d286e3fe86e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3921936820398b0ed5d343732f5fbbb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">Fly</a> () override</td></tr>\n<tr class=\"separator:ac3921936820398b0ed5d343732f5fbbb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05586398229c44cfafe8b9c6fdb3f2d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">Jump</a> () override</td></tr>\n<tr class=\"separator:a05586398229c44cfafe8b9c6fdb3f2d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23e43852ea4528a1b50f28628f5a9f20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">TurnLeft</a> () override</td></tr>\n<tr class=\"separator:a23e43852ea4528a1b50f28628f5a9f20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa68f65e5a902e77db578edf8d1b4af34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">TurnRight</a> () override</td></tr>\n<tr class=\"separator:aa68f65e5a902e77db578edf8d1b4af34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a178afe3b43f00f0a289a19d2fe323d9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">Push</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction) override</td></tr>\n<tr class=\"separator:a178afe3b43f00f0a289a19d2fe323d9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a790794239c994c8c15f988edee64ae70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">SetCollisionSize</a> (float width, float height, float crouch_height)</td></tr>\n<tr class=\"separator:a790794239c994c8c15f988edee64ae70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70b7b9fae981e57ff334e5a5a5abbc8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">SetStepHeight</a> (float height, float crouch_height)</td></tr>\n<tr class=\"separator:a70b7b9fae981e57ff334e5a5a5abbc8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a245323aa009e05cb44bde289b2ca75e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">SetWallCollisionCallback</a> (void(*callback)(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>))</td></tr>\n<tr class=\"separator:a245323aa009e05cb44bde289b2ca75e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a0be1714e44e2397bf5339ec569f8ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">SetWalkSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:a5a0be1714e44e2397bf5339ec569f8ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35420874880b9df73e292e495aa1e1dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">SetRunSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:a35420874880b9df73e292e495aa1e1dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a576c462ea53d985f902085041cfafc72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">SetCrouchSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:a576c462ea53d985f902085041cfafc72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0b5fd2754147656c7a45085715119c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">SetFlySpeed</a> (float speed)</td></tr>\n<tr class=\"separator:ac0b5fd2754147656c7a45085715119c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a55f5fdc6a0540f3843309ec6f53894\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">SetFriction</a> (float <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a>)</td></tr>\n<tr class=\"separator:a4a55f5fdc6a0540f3843309ec6f53894\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a198a3b9279dffb137f56bb510b65cf79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">SetCollisionGroup</a> (uint32_t group)</td></tr>\n<tr class=\"separator:a198a3b9279dffb137f56bb510b65cf79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:a005c65e23bba7635c05821a5bebbdf47 inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a> (bool <a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a>)</td></tr>\n<tr class=\"separator:a005c65e23bba7635c05821a5bebbdf47 inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92c6a99db84d365877eb1e6f45b406ce inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> direction)</td></tr>\n<tr class=\"separator:a92c6a99db84d365877eb1e6f45b406ce inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94439cce310fb5bc23485b3e23f19cfb inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a> () const</td></tr>\n<tr class=\"separator:a94439cce310fb5bc23485b3e23f19cfb inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a6f50d65657568e5d1afe87dd8cf17d91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">FPSControllerComponent</a> ()=default</td></tr>\n<tr class=\"separator:a6f50d65657568e5d1afe87dd8cf17d91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c0d475fb7ef8b5c98b800b8921cf660\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">~FPSControllerComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c0d475fb7ef8b5c98b800b8921cf660\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a396834cd7a573800365e68a4aa49122b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">ApplyDynamics</a> ()</td></tr>\n<tr class=\"separator:a396834cd7a573800365e68a4aa49122b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14fa87139f0ba7e8325019afb05f56ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">RecoverFromCollisions</a> ()</td></tr>\n<tr class=\"separator:a14fa87139f0ba7e8325019afb05f56ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5302db1fe5d853e5bb0845ea5b0fa5f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">ResetMove</a> ()</td></tr>\n<tr class=\"separator:a5302db1fe5d853e5bb0845ea5b0fa5f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af2a12d9cc7a245087852634e14b9bb2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">walk_collision</a></td></tr>\n<tr class=\"separator:af2a12d9cc7a245087852634e14b9bb2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef3a06f85b58004fca42a4c42f5249c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">crouch_collision</a></td></tr>\n<tr class=\"separator:aef3a06f85b58004fca42a4c42f5249c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73e7514f41a865feee9c0f9af2963911\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">velocity</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a73e7514f41a865feee9c0f9af2963911\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f8e30150636e41889103015053db656\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">move_direction</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a7f8e30150636e41889103015053db656\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8579e399cc88ea96ad4d62d2cce9790c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">is_in_air</a> = false</td></tr>\n<tr class=\"separator:a8579e399cc88ea96ad4d62d2cce9790c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a039b23d22ab01048dfacf106b1f33781\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">collision_width</a> = 0.35f</td></tr>\n<tr class=\"separator:a039b23d22ab01048dfacf106b1f33781\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87c5ec8a494fd31a64e42492959673ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">collision_height</a> = 1.85f</td></tr>\n<tr class=\"separator:a87c5ec8a494fd31a64e42492959673ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca171f9f6200c93a0dd9dadab48cfa04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">collision_height_crouch</a> = 0.5f</td></tr>\n<tr class=\"separator:aca171f9f6200c93a0dd9dadab48cfa04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b07abe21f47fc5dbac586aa45875fa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">step_height</a> = 0.35f</td></tr>\n<tr class=\"separator:a4b07abe21f47fc5dbac586aa45875fa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4074f2e9e605af90024754008010a1a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">step_height_crouch</a> = 0.15f</td></tr>\n<tr class=\"separator:a4074f2e9e605af90024754008010a1a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1180c411c80596ee1d75daa987ce96f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">walk_speed</a> = 0.1f</td></tr>\n<tr class=\"separator:a1180c411c80596ee1d75daa987ce96f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f90eea486552552948362847c43ee6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">run_speed</a> = 0.2f</td></tr>\n<tr class=\"separator:a69f90eea486552552948362847c43ee6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9f922b8e4f7224dbae472337193752d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">crouch_speed</a> = 0.05f</td></tr>\n<tr class=\"separator:ae9f922b8e4f7224dbae472337193752d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59caaa80439479140ec150e4abfb6f36\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">fly_speed</a> = 0.2f</td></tr>\n<tr class=\"separator:a59caaa80439479140ec150e4abfb6f36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a451fd7c7b46f15d8c41966e57389d9f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a> = 0.89f</td></tr>\n<tr class=\"separator:a451fd7c7b46f15d8c41966e57389d9f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21405af6b1d6b8fda3258d50960428cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">crouching</a> = false</td></tr>\n<tr class=\"separator:a21405af6b1d6b8fda3258d50960428cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a897a4b4f81cc5bba6e619a053abec6b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">running</a> = false</td></tr>\n<tr class=\"separator:a897a4b4f81cc5bba6e619a053abec6b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcec1e7d2eb544a14884da99d7de9341\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">flying</a> = false</td></tr>\n<tr class=\"separator:adcec1e7d2eb544a14884da99d7de9341\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a9c20ae30cc0939f1c09febafb1a001\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">standing_on</a> = 0</td></tr>\n<tr class=\"separator:a1a9c20ae30cc0939f1c09febafb1a001\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4a70bf3706f1cbada7ed97f70482fe4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">standing_on_prev</a> = 0</td></tr>\n<tr class=\"separator:ae4a70bf3706f1cbada7ed97f70482fe4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a37f280a78fdb1596861619db391ff09a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">standing_pos</a></td></tr>\n<tr class=\"separator:a37f280a78fdb1596861619db391ff09a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1c3824186959467cdf5f12a5f2684cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">standing_rot</a></td></tr>\n<tr class=\"separator:ac1c3824186959467cdf5f12a5f2684cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b9917a31e94c6ba8f331dfc19184299\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">collision_group</a> = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td></tr>\n<tr class=\"separator:a2b9917a31e94c6ba8f331dfc19184299\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a179230b5c2c207d38f12b1e784f00bb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">wallbonk_callback</a> )(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = nullptr</td></tr>\n<tr class=\"separator:a179230b5c2c207d38f12b1e784f00bb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:ad160a058e6730f0040aa6a9338e15750 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ad160a058e6730f0040aa6a9338e15750 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93abb6fa1349a41b93f53450817f9839 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a> = true</td></tr>\n<tr class=\"separator:a93abb6fa1349a41b93f53450817f9839 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a9fd3c58ec8707c5995232f089e6ef91b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">ControllerComponent</a></td></tr>\n<tr class=\"separator:a9fd3c58ec8707c5995232f089e6ef91b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename &gt; </td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td></tr>\n<tr class=\"separator:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:a827a701de4481f78563b75fce6ea55a2 inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a> ()</td></tr>\n<tr class=\"separator:a827a701de4481f78563b75fce6ea55a2 inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7b5cdc611a17b8a7261e14df61c56dd inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a> (bool)</td></tr>\n<tr class=\"separator:af7b5cdc611a17b8a7261e14df61c56dd inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a> ()</td></tr>\n<tr class=\"memdesc:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the ControllerComponents.  <a href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">More...</a><br /></td></tr>\n<tr class=\"separator:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of an FPS-style character controller. </p>\n<p >It is relatively slow, due to the use of Shapecasts, which makes it suitable only for player characters. Consider useing a <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\" title=\"Implementation of a simple character controller.\">RaycastControllerComponent</a> for other uses. </p><dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a6f50d65657568e5d1afe87dd8cf17d91\" name=\"a6f50d65657568e5d1afe87dd8cf17d91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f50d65657568e5d1afe87dd8cf17d91\">&#9670;&nbsp;</a></span>FPSControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::FPSControllerComponent::FPSControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c0d475fb7ef8b5c98b800b8921cf660\" name=\"a4c0d475fb7ef8b5c98b800b8921cf660\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c0d475fb7ef8b5c98b800b8921cf660\">&#9670;&nbsp;</a></span>~FPSControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::FPSControllerComponent::~FPSControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a396834cd7a573800365e68a4aa49122b\" name=\"a396834cd7a573800365e68a4aa49122b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a396834cd7a573800365e68a4aa49122b\">&#9670;&nbsp;</a></span>ApplyDynamics()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::ApplyDynamics </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44ff24373b7604e870849d286e3fe86e\" name=\"a44ff24373b7604e870849d286e3fe86e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44ff24373b7604e870849d286e3fe86e\">&#9670;&nbsp;</a></span>Crouch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Crouch </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a5c5b27f8fb2ca29b48fc4d291b71b8d3\" name=\"a5c5b27f8fb2ca29b48fc4d291b71b8d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ac3921936820398b0ed5d343732f5fbbb\" name=\"ac3921936820398b0ed5d343732f5fbbb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3921936820398b0ed5d343732f5fbbb\">&#9670;&nbsp;</a></span>Fly()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Fly </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a05586398229c44cfafe8b9c6fdb3f2d8\" name=\"a05586398229c44cfafe8b9c6fdb3f2d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05586398229c44cfafe8b9c6fdb3f2d8\">&#9670;&nbsp;</a></span>Jump()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Jump </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ac47fe6964c8f7590a92f8fa5be91c825\" name=\"ac47fe6964c8f7590a92f8fa5be91c825\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac47fe6964c8f7590a92f8fa5be91c825\">&#9670;&nbsp;</a></span>Move()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Move </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>local_direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a178afe3b43f00f0a289a19d2fe323d9c\" name=\"a178afe3b43f00f0a289a19d2fe323d9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a178afe3b43f00f0a289a19d2fe323d9c\">&#9670;&nbsp;</a></span>Push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a14fa87139f0ba7e8325019afb05f56ff\" name=\"a14fa87139f0ba7e8325019afb05f56ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14fa87139f0ba7e8325019afb05f56ff\">&#9670;&nbsp;</a></span>RecoverFromCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::RecoverFromCollisions </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5302db1fe5d853e5bb0845ea5b0fa5f5\" name=\"a5302db1fe5d853e5bb0845ea5b0fa5f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5302db1fe5d853e5bb0845ea5b0fa5f5\">&#9670;&nbsp;</a></span>ResetMove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::ResetMove </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cdc505ef5241f71136c2ff356e55615\" name=\"a8cdc505ef5241f71136c2ff356e55615\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cdc505ef5241f71136c2ff356e55615\">&#9670;&nbsp;</a></span>Run()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Run </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a198a3b9279dffb137f56bb510b65cf79\" name=\"a198a3b9279dffb137f56bb510b65cf79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a198a3b9279dffb137f56bb510b65cf79\">&#9670;&nbsp;</a></span>SetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a790794239c994c8c15f988edee64ae70\" name=\"a790794239c994c8c15f988edee64ae70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a790794239c994c8c15f988edee64ae70\">&#9670;&nbsp;</a></span>SetCollisionSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetCollisionSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>crouch_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a576c462ea53d985f902085041cfafc72\" name=\"a576c462ea53d985f902085041cfafc72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a576c462ea53d985f902085041cfafc72\">&#9670;&nbsp;</a></span>SetCrouchSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetCrouchSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0b5fd2754147656c7a45085715119c6\" name=\"ac0b5fd2754147656c7a45085715119c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0b5fd2754147656c7a45085715119c6\">&#9670;&nbsp;</a></span>SetFlySpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetFlySpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a55f5fdc6a0540f3843309ec6f53894\" name=\"a4a55f5fdc6a0540f3843309ec6f53894\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a55f5fdc6a0540f3843309ec6f53894\">&#9670;&nbsp;</a></span>SetFriction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetFriction </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>friction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a35420874880b9df73e292e495aa1e1dc\" name=\"a35420874880b9df73e292e495aa1e1dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35420874880b9df73e292e495aa1e1dc\">&#9670;&nbsp;</a></span>SetRunSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetRunSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70b7b9fae981e57ff334e5a5a5abbc8f\" name=\"a70b7b9fae981e57ff334e5a5a5abbc8f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70b7b9fae981e57ff334e5a5a5abbc8f\">&#9670;&nbsp;</a></span>SetStepHeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetStepHeight </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>crouch_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a0be1714e44e2397bf5339ec569f8ba\" name=\"a5a0be1714e44e2397bf5339ec569f8ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a0be1714e44e2397bf5339ec569f8ba\">&#9670;&nbsp;</a></span>SetWalkSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetWalkSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a245323aa009e05cb44bde289b2ca75e2\" name=\"a245323aa009e05cb44bde289b2ca75e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a245323aa009e05cb44bde289b2ca75e2\">&#9670;&nbsp;</a></span>SetWallCollisionCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::SetWallCollisionCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab078a61443c6f5d29fa5a9bb1fa06aea\" name=\"ab078a61443c6f5d29fa5a9bb1fa06aea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab078a61443c6f5d29fa5a9bb1fa06aea\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a23e43852ea4528a1b50f28628f5a9f20\" name=\"a23e43852ea4528a1b50f28628f5a9f20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a23e43852ea4528a1b50f28628f5a9f20\">&#9670;&nbsp;</a></span>TurnLeft()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::TurnLeft </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"aa68f65e5a902e77db578edf8d1b4af34\" name=\"aa68f65e5a902e77db578edf8d1b4af34\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa68f65e5a902e77db578edf8d1b4af34\">&#9670;&nbsp;</a></span>TurnRight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FPSControllerComponent::TurnRight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a9fd3c58ec8707c5995232f089e6ef91b\" name=\"a9fd3c58ec8707c5995232f089e6ef91b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fd3c58ec8707c5995232f089e6ef91b\">&#9670;&nbsp;</a></span>ControllerComponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49d9babe42ba7f509bcff47a95b2c110\" name=\"a49d9babe42ba7f509bcff47a95b2c110\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49d9babe42ba7f509bcff47a95b2c110\">&#9670;&nbsp;</a></span>Pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2b9917a31e94c6ba8f331dfc19184299\" name=\"a2b9917a31e94c6ba8f331dfc19184299\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b9917a31e94c6ba8f331dfc19184299\">&#9670;&nbsp;</a></span>collision_group</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::FPSControllerComponent::collision_group = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a87c5ec8a494fd31a64e42492959673ed\" name=\"a87c5ec8a494fd31a64e42492959673ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a87c5ec8a494fd31a64e42492959673ed\">&#9670;&nbsp;</a></span>collision_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::collision_height = 1.85f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aca171f9f6200c93a0dd9dadab48cfa04\" name=\"aca171f9f6200c93a0dd9dadab48cfa04\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca171f9f6200c93a0dd9dadab48cfa04\">&#9670;&nbsp;</a></span>collision_height_crouch</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::collision_height_crouch = 0.5f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a039b23d22ab01048dfacf106b1f33781\" name=\"a039b23d22ab01048dfacf106b1f33781\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a039b23d22ab01048dfacf106b1f33781\">&#9670;&nbsp;</a></span>collision_width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::collision_width = 0.35f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef3a06f85b58004fca42a4c42f5249c5\" name=\"aef3a06f85b58004fca42a4c42f5249c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef3a06f85b58004fca42a4c42f5249c5\">&#9670;&nbsp;</a></span>crouch_collision</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>&gt; tram::FPSControllerComponent::crouch_collision</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9f922b8e4f7224dbae472337193752d\" name=\"ae9f922b8e4f7224dbae472337193752d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9f922b8e4f7224dbae472337193752d\">&#9670;&nbsp;</a></span>crouch_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::crouch_speed = 0.05f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a21405af6b1d6b8fda3258d50960428cb\" name=\"a21405af6b1d6b8fda3258d50960428cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21405af6b1d6b8fda3258d50960428cb\">&#9670;&nbsp;</a></span>crouching</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FPSControllerComponent::crouching = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a59caaa80439479140ec150e4abfb6f36\" name=\"a59caaa80439479140ec150e4abfb6f36\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59caaa80439479140ec150e4abfb6f36\">&#9670;&nbsp;</a></span>fly_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::fly_speed = 0.2f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adcec1e7d2eb544a14884da99d7de9341\" name=\"adcec1e7d2eb544a14884da99d7de9341\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adcec1e7d2eb544a14884da99d7de9341\">&#9670;&nbsp;</a></span>flying</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FPSControllerComponent::flying = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a451fd7c7b46f15d8c41966e57389d9f3\" name=\"a451fd7c7b46f15d8c41966e57389d9f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a451fd7c7b46f15d8c41966e57389d9f3\">&#9670;&nbsp;</a></span>friction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::friction = 0.89f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8579e399cc88ea96ad4d62d2cce9790c\" name=\"a8579e399cc88ea96ad4d62d2cce9790c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8579e399cc88ea96ad4d62d2cce9790c\">&#9670;&nbsp;</a></span>is_in_air</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FPSControllerComponent::is_in_air = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f8e30150636e41889103015053db656\" name=\"a7f8e30150636e41889103015053db656\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f8e30150636e41889103015053db656\">&#9670;&nbsp;</a></span>move_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::FPSControllerComponent::move_direction = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69f90eea486552552948362847c43ee6\" name=\"a69f90eea486552552948362847c43ee6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69f90eea486552552948362847c43ee6\">&#9670;&nbsp;</a></span>run_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::run_speed = 0.2f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a897a4b4f81cc5bba6e619a053abec6b9\" name=\"a897a4b4f81cc5bba6e619a053abec6b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a897a4b4f81cc5bba6e619a053abec6b9\">&#9670;&nbsp;</a></span>running</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FPSControllerComponent::running = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1a9c20ae30cc0939f1c09febafb1a001\" name=\"a1a9c20ae30cc0939f1c09febafb1a001\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a9c20ae30cc0939f1c09febafb1a001\">&#9670;&nbsp;</a></span>standing_on</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::FPSControllerComponent::standing_on = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae4a70bf3706f1cbada7ed97f70482fe4\" name=\"ae4a70bf3706f1cbada7ed97f70482fe4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4a70bf3706f1cbada7ed97f70482fe4\">&#9670;&nbsp;</a></span>standing_on_prev</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::FPSControllerComponent::standing_on_prev = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a37f280a78fdb1596861619db391ff09a\" name=\"a37f280a78fdb1596861619db391ff09a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a37f280a78fdb1596861619db391ff09a\">&#9670;&nbsp;</a></span>standing_pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::FPSControllerComponent::standing_pos</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac1c3824186959467cdf5f12a5f2684cc\" name=\"ac1c3824186959467cdf5f12a5f2684cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1c3824186959467cdf5f12a5f2684cc\">&#9670;&nbsp;</a></span>standing_rot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::FPSControllerComponent::standing_rot</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b07abe21f47fc5dbac586aa45875fa0\" name=\"a4b07abe21f47fc5dbac586aa45875fa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b07abe21f47fc5dbac586aa45875fa0\">&#9670;&nbsp;</a></span>step_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::step_height = 0.35f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4074f2e9e605af90024754008010a1a9\" name=\"a4074f2e9e605af90024754008010a1a9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4074f2e9e605af90024754008010a1a9\">&#9670;&nbsp;</a></span>step_height_crouch</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::step_height_crouch = 0.15f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a73e7514f41a865feee9c0f9af2963911\" name=\"a73e7514f41a865feee9c0f9af2963911\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73e7514f41a865feee9c0f9af2963911\">&#9670;&nbsp;</a></span>velocity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::FPSControllerComponent::velocity = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af2a12d9cc7a245087852634e14b9bb2d\" name=\"af2a12d9cc7a245087852634e14b9bb2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2a12d9cc7a245087852634e14b9bb2d\">&#9670;&nbsp;</a></span>walk_collision</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>&gt; tram::FPSControllerComponent::walk_collision</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1180c411c80596ee1d75daa987ce96f7\" name=\"a1180c411c80596ee1d75daa987ce96f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1180c411c80596ee1d75daa987ce96f7\">&#9670;&nbsp;</a></span>walk_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::FPSControllerComponent::walk_speed = 0.1f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a179230b5c2c207d38f12b1e784f00bb2\" name=\"a179230b5c2c207d38f12b1e784f00bb2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a179230b5c2c207d38f12b1e784f00bb2\">&#9670;&nbsp;</a></span>wallbonk_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::FPSControllerComponent::wallbonk_callback) (<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8h_source.html\">controller.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file.html\">File</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::File Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">AccessMode</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">BINARY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">buffer_cursor</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">buffer_end</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">File</a>(char const *path, uint32_t mode)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">is_continue</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">is_open</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">mode</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">path</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">PAUSE_LINE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">pause_next</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">READ</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">read_float32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">read_float64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">read_int16</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">read_int32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">read_int64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">read_int8</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">read_line</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">read_name</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">read_string</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">read_token</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">read_uint16</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">read_uint32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">read_uint64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">read_uint8</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">reader</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">reader_parser</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">reset_flags</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">skip_linebreak</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">TEXT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">was_error</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">WRITE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">write_float32</a>(float value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">write_float64</a>(double value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">write_int16</a>(int16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">write_int32</a>(int32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">write_int64</a>(int64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">write_int8</a>(int8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">write_name</a>(name_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">write_newline</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">write_string</a>(const char *value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">write_uint16</a>(uint16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">write_uint32</a>(uint32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">write_uint64</a>(uint64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">write_uint8</a>(uint8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">writer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">writer_parser</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">~File</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::File Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file.html\">File</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_file-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::File Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Very fast file reader/writer.  \n <a href=\"classtram_1_1_file.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ab340a7edca3c73f54d764cd17b362477\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">AccessMode</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">READ</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">WRITE</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">PAUSE_LINE</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">TEXT</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">BINARY</a> = 16\n<br />\n }</td></tr>\n<tr class=\"separator:ab340a7edca3c73f54d764cd17b362477\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab1b5812649adfd4ed0b16998c08beed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">File</a> (char const *<a class=\"el\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">path</a>, uint32_t <a class=\"el\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">mode</a>)</td></tr>\n<tr class=\"memdesc:ab1b5812649adfd4ed0b16998c08beed6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Opens a file.  <a href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">More...</a><br /></td></tr>\n<tr class=\"separator:ab1b5812649adfd4ed0b16998c08beed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56f8b809eeff67f9d5ed18580d8fe857\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">~File</a> ()</td></tr>\n<tr class=\"separator:a56f8b809eeff67f9d5ed18580d8fe857\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35ac8b7f25c9644484adb16e6315ac13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">is_open</a> ()</td></tr>\n<tr class=\"memdesc:a35ac8b7f25c9644484adb16e6315ac13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns true if file was opened.  <a href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">More...</a><br /></td></tr>\n<tr class=\"separator:a35ac8b7f25c9644484adb16e6315ac13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613cfcd9ed88d5edacd33b345ddaa558\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">is_continue</a> ()</td></tr>\n<tr class=\"memdesc:a613cfcd9ed88d5edacd33b345ddaa558\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns true if file parser has not reached end.  <a href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">More...</a><br /></td></tr>\n<tr class=\"separator:a613cfcd9ed88d5edacd33b345ddaa558\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89b2859ed0ef1b7d66c5a4d9a2d536b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">write_int8</a> (int8_t value)</td></tr>\n<tr class=\"separator:a89b2859ed0ef1b7d66c5a4d9a2d536b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56ca0eb625c5fcef16158a9f107f8a1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">write_int16</a> (int16_t value)</td></tr>\n<tr class=\"separator:a56ca0eb625c5fcef16158a9f107f8a1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a912eac8b041a22b2468d4fc2ae2ffbfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">write_int32</a> (int32_t value)</td></tr>\n<tr class=\"separator:a912eac8b041a22b2468d4fc2ae2ffbfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3164abdb1966197ca2e9a6cd018770da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">write_int64</a> (int64_t value)</td></tr>\n<tr class=\"separator:a3164abdb1966197ca2e9a6cd018770da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8b334b12d808c3bb28ebb92cc8db2d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">write_uint8</a> (uint8_t value)</td></tr>\n<tr class=\"separator:ac8b334b12d808c3bb28ebb92cc8db2d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaef1b401396e62884686b4773b9e5f6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">write_uint16</a> (uint16_t value)</td></tr>\n<tr class=\"separator:aaef1b401396e62884686b4773b9e5f6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a968e1d9420146f006a7c4868a8978ec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">write_uint32</a> (uint32_t value)</td></tr>\n<tr class=\"separator:a968e1d9420146f006a7c4868a8978ec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abfb1b5c29a40ddbada1f8c01b9c7143e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">write_uint64</a> (uint64_t value)</td></tr>\n<tr class=\"separator:abfb1b5c29a40ddbada1f8c01b9c7143e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad37a6a76adf4fd5db765e860a9a20bcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">write_float32</a> (float value)</td></tr>\n<tr class=\"separator:ad37a6a76adf4fd5db765e860a9a20bcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52e71d6324ee7624dee122a59523001c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">write_float64</a> (double value)</td></tr>\n<tr class=\"separator:a52e71d6324ee7624dee122a59523001c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3ec500f5f4c888093fdb6d93568fe9f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">write_name</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> value)</td></tr>\n<tr class=\"separator:a3ec500f5f4c888093fdb6d93568fe9f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc94c6e5b903c64232ac97079038db91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">write_string</a> (const char *value)</td></tr>\n<tr class=\"separator:acc94c6e5b903c64232ac97079038db91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c2767ad1dfe1bc5d644f1a255ba9875\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">write_newline</a> ()</td></tr>\n<tr class=\"memdesc:a7c2767ad1dfe1bc5d644f1a255ba9875\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Writes a newline to the file.  <a href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">More...</a><br /></td></tr>\n<tr class=\"separator:a7c2767ad1dfe1bc5d644f1a255ba9875\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a039568453770acbc144c9fdce0f3fc68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">read_int8</a> ()</td></tr>\n<tr class=\"separator:a039568453770acbc144c9fdce0f3fc68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d7ea9f1ad7cb867061aea6a4ed1b89d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">read_int16</a> ()</td></tr>\n<tr class=\"separator:a5d7ea9f1ad7cb867061aea6a4ed1b89d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a225dfcebd4c490f19388cfb7aca8e0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">read_int32</a> ()</td></tr>\n<tr class=\"separator:a225dfcebd4c490f19388cfb7aca8e0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af10fb5448d6e77230bdc268d328c0857\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">read_int64</a> ()</td></tr>\n<tr class=\"separator:af10fb5448d6e77230bdc268d328c0857\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f4075e222dd524d4132b616225d191d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">read_uint8</a> ()</td></tr>\n<tr class=\"separator:a4f4075e222dd524d4132b616225d191d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64635a9d28e30c7300d6a7459302d723\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">read_uint16</a> ()</td></tr>\n<tr class=\"separator:a64635a9d28e30c7300d6a7459302d723\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a153f0eccaaaca9cacdb4bb082060bcbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">read_uint32</a> ()</td></tr>\n<tr class=\"separator:a153f0eccaaaca9cacdb4bb082060bcbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48c7cadf209801e17f3cc2f7b3bb877e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">read_uint64</a> ()</td></tr>\n<tr class=\"separator:a48c7cadf209801e17f3cc2f7b3bb877e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49b122601c017e1964144c23cbe290fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">read_float32</a> ()</td></tr>\n<tr class=\"separator:a49b122601c017e1964144c23cbe290fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac11afdd957e7a113e25c101eea4ac241\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">read_float64</a> ()</td></tr>\n<tr class=\"separator:ac11afdd957e7a113e25c101eea4ac241\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca554d85c9430ee8d39ddb16c41e72e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">read_name</a> ()</td></tr>\n<tr class=\"separator:aca554d85c9430ee8d39ddb16c41e72e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a384df5b223c9e0d2535a622e282a356e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">read_string</a> ()</td></tr>\n<tr class=\"separator:a384df5b223c9e0d2535a622e282a356e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49ba33b0139ddde95daf7f88adbeca79\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">read_token</a> ()</td></tr>\n<tr class=\"separator:a49ba33b0139ddde95daf7f88adbeca79\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa1c1eca4e5feb35b576da5533408b17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">read_line</a> ()</td></tr>\n<tr class=\"memdesc:aaa1c1eca4e5feb35b576da5533408b17\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Parses off the remaining line.  <a href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">More...</a><br /></td></tr>\n<tr class=\"separator:aaa1c1eca4e5feb35b576da5533408b17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5086d2c4a3d374fbf26241e6c14c64f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">skip_linebreak</a> ()</td></tr>\n<tr class=\"memdesc:ab5086d2c4a3d374fbf26241e6c14c64f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Skips over a linebreak.  <a href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5086d2c4a3d374fbf26241e6c14c64f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c4dc235347eed3842168ad548d1d5a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">reset_flags</a> ()</td></tr>\n<tr class=\"memdesc:a5c4dc235347eed3842168ad548d1d5a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resets the error flag.  <a href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a5c4dc235347eed3842168ad548d1d5a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14fa0ae7b7ebe485fddf204df95c905f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">was_error</a> ()</td></tr>\n<tr class=\"memdesc:a14fa0ae7b7ebe485fddf204df95c905f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if there has been an error.  <a href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">More...</a><br /></td></tr>\n<tr class=\"separator:a14fa0ae7b7ebe485fddf204df95c905f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3d25cbe667ab658dbaea6655a6321782\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">path</a></td></tr>\n<tr class=\"separator:a3d25cbe667ab658dbaea6655a6321782\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd6ce0e7642fe94f378dc8a749efdcb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">mode</a></td></tr>\n<tr class=\"separator:acd6ce0e7642fe94f378dc8a749efdcb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b6f66dee66294cd7095cb4bc4a3a265\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">pause_next</a></td></tr>\n<tr class=\"separator:a5b6f66dee66294cd7095cb4bc4a3a265\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b74a4d3fee7a6b42781d13b4c09c0bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">buffer</a> = nullptr</td></tr>\n<tr class=\"separator:a4b74a4d3fee7a6b42781d13b4c09c0bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4875014953235da2776dac766558fad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">buffer_cursor</a> = nullptr</td></tr>\n<tr class=\"separator:aa4875014953235da2776dac766558fad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dfaae97d414184a8999f401fe07b01f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">buffer_end</a> = nullptr</td></tr>\n<tr class=\"separator:a5dfaae97d414184a8999f401fe07b01f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13e1dda97ae8a262ce9e28257c2aea1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">reader</a> = nullptr</td></tr>\n<tr class=\"separator:a13e1dda97ae8a262ce9e28257c2aea1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80f51acbe4f7c016309d1525b00e25a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">writer</a> = nullptr</td></tr>\n<tr class=\"separator:ae80f51acbe4f7c016309d1525b00e25a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00a329e60e55d43c3df1159b5f36de18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">reader_parser</a> = nullptr</td></tr>\n<tr class=\"separator:a00a329e60e55d43c3df1159b5f36de18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a53d60bca18a5afefa92a1ed1b70bd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">writer_parser</a> = nullptr</td></tr>\n<tr class=\"separator:a3a53d60bca18a5afefa92a1ed1b70bd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Very fast file reader/writer. </p>\n<p >For reading a file, set the <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">File::READ</a> flag in the mode bitmask. The file, referenced by the path, will be immediately opened, if possible. After opening, it will be fully read into memory. After that you can use all of the read_xyz() methods.</p>\n<p >To check if the file has ended and no more reading can be done, use the <a class=\"el\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\" title=\"Returns true if file parser has not reached end.\">is_continue()</a> method.</p>\n<p >To check whether the file was opened, use the <a class=\"el\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\" title=\"Returns true if file was opened.\">is_open()</a> method.</p>\n<p >For writing to a file, set the <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">File::WRITE</a> flag in the mode bitmask.</p>\n<p >After that you can use the various write_xyz() methods.</p>\n<p >All of the writing will take place in a large buffer, which after the <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> class is destructed will be written to disk.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/file.html\">https://racenis.github.io/tram-sdk/documentation/framework/file.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"ab340a7edca3c73f54d764cd17b362477\" name=\"ab340a7edca3c73f54d764cd17b362477\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab340a7edca3c73f54d764cd17b362477\">&#9670;&nbsp;</a></span>AccessMode</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">tram::File::AccessMode</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\" name=\"ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\"></a>READ&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\" name=\"ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\"></a>WRITE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\" name=\"ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\"></a>PAUSE_LINE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\" name=\"ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\"></a>TEXT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\" name=\"ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\"></a>BINARY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab1b5812649adfd4ed0b16998c08beed6\" name=\"ab1b5812649adfd4ed0b16998c08beed6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1b5812649adfd4ed0b16998c08beed6\">&#9670;&nbsp;</a></span>File()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::File::File </td>\n          <td>(</td>\n          <td class=\"paramtype\">char const *&#160;</td>\n          <td class=\"paramname\"><em>path</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mode</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Opens a file. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">path</td><td><a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a> to the file. If no prefix is set, this path will be interpreted as being relative to the project/executable working directory. </td></tr>\n    <tr><td class=\"paramname\">mode</td><td>Mode is a bitmask consisting of flags that can be found in the AccessMode enum. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a56f8b809eeff67f9d5ed18580d8fe857\" name=\"a56f8b809eeff67f9d5ed18580d8fe857\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56f8b809eeff67f9d5ed18580d8fe857\">&#9670;&nbsp;</a></span>~File()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::File::~File </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a613cfcd9ed88d5edacd33b345ddaa558\" name=\"a613cfcd9ed88d5edacd33b345ddaa558\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a613cfcd9ed88d5edacd33b345ddaa558\">&#9670;&nbsp;</a></span>is_continue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::File::is_continue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns true if file parser has not reached end. </p>\n\n</div>\n</div>\n<a id=\"a35ac8b7f25c9644484adb16e6315ac13\" name=\"a35ac8b7f25c9644484adb16e6315ac13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35ac8b7f25c9644484adb16e6315ac13\">&#9670;&nbsp;</a></span>is_open()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::File::is_open </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns true if file was opened. </p>\n\n</div>\n</div>\n<a id=\"a49b122601c017e1964144c23cbe290fd\" name=\"a49b122601c017e1964144c23cbe290fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49b122601c017e1964144c23cbe290fd\">&#9670;&nbsp;</a></span>read_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::File::read_float32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac11afdd957e7a113e25c101eea4ac241\" name=\"ac11afdd957e7a113e25c101eea4ac241\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac11afdd957e7a113e25c101eea4ac241\">&#9670;&nbsp;</a></span>read_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::File::read_float64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d7ea9f1ad7cb867061aea6a4ed1b89d\" name=\"a5d7ea9f1ad7cb867061aea6a4ed1b89d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">&#9670;&nbsp;</a></span>read_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int16_t tram::File::read_int16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a225dfcebd4c490f19388cfb7aca8e0a6\" name=\"a225dfcebd4c490f19388cfb7aca8e0a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a225dfcebd4c490f19388cfb7aca8e0a6\">&#9670;&nbsp;</a></span>read_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::File::read_int32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af10fb5448d6e77230bdc268d328c0857\" name=\"af10fb5448d6e77230bdc268d328c0857\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af10fb5448d6e77230bdc268d328c0857\">&#9670;&nbsp;</a></span>read_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int64_t tram::File::read_int64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a039568453770acbc144c9fdce0f3fc68\" name=\"a039568453770acbc144c9fdce0f3fc68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a039568453770acbc144c9fdce0f3fc68\">&#9670;&nbsp;</a></span>read_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int8_t tram::File::read_int8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa1c1eca4e5feb35b576da5533408b17\" name=\"aaa1c1eca4e5feb35b576da5533408b17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa1c1eca4e5feb35b576da5533408b17\">&#9670;&nbsp;</a></span>read_line()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::File::read_line </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Parses off the remaining line. </p>\n\n</div>\n</div>\n<a id=\"aca554d85c9430ee8d39ddb16c41e72e3\" name=\"aca554d85c9430ee8d39ddb16c41e72e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca554d85c9430ee8d39ddb16c41e72e3\">&#9670;&nbsp;</a></span>read_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::File::read_name </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a384df5b223c9e0d2535a622e282a356e\" name=\"a384df5b223c9e0d2535a622e282a356e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a384df5b223c9e0d2535a622e282a356e\">&#9670;&nbsp;</a></span>read_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::File::read_string </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49ba33b0139ddde95daf7f88adbeca79\" name=\"a49ba33b0139ddde95daf7f88adbeca79\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49ba33b0139ddde95daf7f88adbeca79\">&#9670;&nbsp;</a></span>read_token()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::File::read_token </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a64635a9d28e30c7300d6a7459302d723\" name=\"a64635a9d28e30c7300d6a7459302d723\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64635a9d28e30c7300d6a7459302d723\">&#9670;&nbsp;</a></span>read_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::File::read_uint16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a153f0eccaaaca9cacdb4bb082060bcbc\" name=\"a153f0eccaaaca9cacdb4bb082060bcbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a153f0eccaaaca9cacdb4bb082060bcbc\">&#9670;&nbsp;</a></span>read_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::File::read_uint32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48c7cadf209801e17f3cc2f7b3bb877e\" name=\"a48c7cadf209801e17f3cc2f7b3bb877e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48c7cadf209801e17f3cc2f7b3bb877e\">&#9670;&nbsp;</a></span>read_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::File::read_uint64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4f4075e222dd524d4132b616225d191d\" name=\"a4f4075e222dd524d4132b616225d191d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f4075e222dd524d4132b616225d191d\">&#9670;&nbsp;</a></span>read_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t tram::File::read_uint8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c4dc235347eed3842168ad548d1d5a6\" name=\"a5c4dc235347eed3842168ad548d1d5a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c4dc235347eed3842168ad548d1d5a6\">&#9670;&nbsp;</a></span>reset_flags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::reset_flags </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Resets the error flag. </p>\n\n</div>\n</div>\n<a id=\"ab5086d2c4a3d374fbf26241e6c14c64f\" name=\"ab5086d2c4a3d374fbf26241e6c14c64f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5086d2c4a3d374fbf26241e6c14c64f\">&#9670;&nbsp;</a></span>skip_linebreak()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::skip_linebreak </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Skips over a linebreak. </p>\n<p >Probably only useful if the file has been opened for reading in the <code>MODE_PAUSE_LINE</code> mode, since the parser will stop at any new line and the only way to continue parsing is to use this method. </p>\n\n</div>\n</div>\n<a id=\"a14fa0ae7b7ebe485fddf204df95c905f\" name=\"a14fa0ae7b7ebe485fddf204df95c905f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14fa0ae7b7ebe485fddf204df95c905f\">&#9670;&nbsp;</a></span>was_error()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::File::was_error </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks if there has been an error. </p>\n<p >The error flag does not get cleared on its own, so if an error ocurred anywhere, this method will report that. To determine whether a certain value has been parsed correctly, first use the <a class=\"el\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\" title=\"Resets the error flag.\">reset_flags()</a> method to reset the error flag, then use the read_xyz() method to read in the value and then use this method to determine whether there was an error in parsing that specific method. </p>\n\n</div>\n</div>\n<a id=\"ad37a6a76adf4fd5db765e860a9a20bcf\" name=\"ad37a6a76adf4fd5db765e860a9a20bcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad37a6a76adf4fd5db765e860a9a20bcf\">&#9670;&nbsp;</a></span>write_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_float32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52e71d6324ee7624dee122a59523001c\" name=\"a52e71d6324ee7624dee122a59523001c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52e71d6324ee7624dee122a59523001c\">&#9670;&nbsp;</a></span>write_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_float64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56ca0eb625c5fcef16158a9f107f8a1f\" name=\"a56ca0eb625c5fcef16158a9f107f8a1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56ca0eb625c5fcef16158a9f107f8a1f\">&#9670;&nbsp;</a></span>write_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_int16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a912eac8b041a22b2468d4fc2ae2ffbfb\" name=\"a912eac8b041a22b2468d4fc2ae2ffbfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a912eac8b041a22b2468d4fc2ae2ffbfb\">&#9670;&nbsp;</a></span>write_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_int32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3164abdb1966197ca2e9a6cd018770da\" name=\"a3164abdb1966197ca2e9a6cd018770da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3164abdb1966197ca2e9a6cd018770da\">&#9670;&nbsp;</a></span>write_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_int64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a89b2859ed0ef1b7d66c5a4d9a2d536b2\" name=\"a89b2859ed0ef1b7d66c5a4d9a2d536b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">&#9670;&nbsp;</a></span>write_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_int8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3ec500f5f4c888093fdb6d93568fe9f3\" name=\"a3ec500f5f4c888093fdb6d93568fe9f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ec500f5f4c888093fdb6d93568fe9f3\">&#9670;&nbsp;</a></span>write_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_name </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c2767ad1dfe1bc5d644f1a255ba9875\" name=\"a7c2767ad1dfe1bc5d644f1a255ba9875\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c2767ad1dfe1bc5d644f1a255ba9875\">&#9670;&nbsp;</a></span>write_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_newline </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Writes a newline to the file. </p>\n<p >The newline is just the <code>\\n</code> character. </p>\n\n</div>\n</div>\n<a id=\"acc94c6e5b903c64232ac97079038db91\" name=\"acc94c6e5b903c64232ac97079038db91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc94c6e5b903c64232ac97079038db91\">&#9670;&nbsp;</a></span>write_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_string </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaef1b401396e62884686b4773b9e5f6e\" name=\"aaef1b401396e62884686b4773b9e5f6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaef1b401396e62884686b4773b9e5f6e\">&#9670;&nbsp;</a></span>write_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_uint16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a968e1d9420146f006a7c4868a8978ec5\" name=\"a968e1d9420146f006a7c4868a8978ec5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a968e1d9420146f006a7c4868a8978ec5\">&#9670;&nbsp;</a></span>write_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_uint32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abfb1b5c29a40ddbada1f8c01b9c7143e\" name=\"abfb1b5c29a40ddbada1f8c01b9c7143e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abfb1b5c29a40ddbada1f8c01b9c7143e\">&#9670;&nbsp;</a></span>write_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_uint64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac8b334b12d808c3bb28ebb92cc8db2d5\" name=\"ac8b334b12d808c3bb28ebb92cc8db2d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8b334b12d808c3bb28ebb92cc8db2d5\">&#9670;&nbsp;</a></span>write_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::File::write_uint8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4b74a4d3fee7a6b42781d13b4c09c0bf\" name=\"a4b74a4d3fee7a6b42781d13b4c09c0bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b74a4d3fee7a6b42781d13b4c09c0bf\">&#9670;&nbsp;</a></span>buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char* tram::File::buffer = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4875014953235da2776dac766558fad\" name=\"aa4875014953235da2776dac766558fad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4875014953235da2776dac766558fad\">&#9670;&nbsp;</a></span>buffer_cursor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char* tram::File::buffer_cursor = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5dfaae97d414184a8999f401fe07b01f\" name=\"a5dfaae97d414184a8999f401fe07b01f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfaae97d414184a8999f401fe07b01f\">&#9670;&nbsp;</a></span>buffer_end</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char* tram::File::buffer_end = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acd6ce0e7642fe94f378dc8a749efdcb9\" name=\"acd6ce0e7642fe94f378dc8a749efdcb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd6ce0e7642fe94f378dc8a749efdcb9\">&#9670;&nbsp;</a></span>mode</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::File::mode</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d25cbe667ab658dbaea6655a6321782\" name=\"a3d25cbe667ab658dbaea6655a6321782\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d25cbe667ab658dbaea6655a6321782\">&#9670;&nbsp;</a></span>path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::File::path</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b6f66dee66294cd7095cb4bc4a3a265\" name=\"a5b6f66dee66294cd7095cb4bc4a3a265\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b6f66dee66294cd7095cb4bc4a3a265\">&#9670;&nbsp;</a></span>pause_next</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::File::pause_next</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a13e1dda97ae8a262ce9e28257c2aea1e\" name=\"a13e1dda97ae8a262ce9e28257c2aea1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13e1dda97ae8a262ce9e28257c2aea1e\">&#9670;&nbsp;</a></span>reader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a>* tram::File::reader = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a00a329e60e55d43c3df1159b5f36de18\" name=\"a00a329e60e55d43c3df1159b5f36de18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00a329e60e55d43c3df1159b5f36de18\">&#9670;&nbsp;</a></span>reader_parser</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a>* tram::File::reader_parser = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae80f51acbe4f7c016309d1525b00e25a\" name=\"ae80f51acbe4f7c016309d1525b00e25a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae80f51acbe4f7c016309d1525b00e25a\">&#9670;&nbsp;</a></span>writer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a>* tram::File::writer = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a53d60bca18a5afefa92a1ed1b70bd1\" name=\"a3a53d60bca18a5afefa92a1ed1b70bd1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a53d60bca18a5afefa92a1ed1b70bd1\">&#9670;&nbsp;</a></span>writer_parser</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a>* tram::File::writer_parser = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8h_source.html\">file.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_reader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FileReader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">GetContents</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">GetReader</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">GetSearchList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">GetSize</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">GetStatus</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">SetSearchList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">Yeet</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">~FileReader</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_reader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FileReader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_file_reader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FileReader Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::FileReader:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_file_reader.png\" usemap=\"#tram::FileReader_map\" alt=\"\"/>\n  <map id=\"tram::FileReader_map\" name=\"tram::FileReader_map\">\n<area href=\"classtram_1_1_disk_reader.html\" alt=\"tram::DiskReader\" shape=\"rect\" coords=\"0,56,107,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac1c9f2016c1c475ed82418fb2a2dca8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">~FileReader</a> ()=default</td></tr>\n<tr class=\"separator:ac1c9f2016c1c475ed82418fb2a2dca8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a359b60e4d588f6721a56bf619e85dded\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">GetContents</a> ()=0</td></tr>\n<tr class=\"separator:a359b60e4d588f6721a56bf619e85dded\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28bb4f3c47fb4aa8a2241b2944986bdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">GetSize</a> ()=0</td></tr>\n<tr class=\"separator:a28bb4f3c47fb4aa8a2241b2944986bdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe64d8768d91a14f788e7d518591a572\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">GetStatus</a> ()=0</td></tr>\n<tr class=\"separator:afe64d8768d91a14f788e7d518591a572\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadf272a73650e58beb40679038b8fafd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">Yeet</a> ()=0</td></tr>\n<tr class=\"separator:aadf272a73650e58beb40679038b8fafd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:adeafb2e1ec0d9d2c9e2ea25b0d705f14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">GetReader</a> (const char *path)</td></tr>\n<tr class=\"separator:adeafb2e1ec0d9d2c9e2ea25b0d705f14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a7d782b12279f564439c0438365c91a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">SetSearchList</a> ()</td></tr>\n<tr class=\"separator:a8a7d782b12279f564439c0438365c91a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13fadbba64b0b75fc9c52bf64fbfe116\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">GetSearchList</a> ()</td></tr>\n<tr class=\"separator:a13fadbba64b0b75fc9c52bf64fbfe116\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac1c9f2016c1c475ed82418fb2a2dca8f\" name=\"ac1c9f2016c1c475ed82418fb2a2dca8f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1c9f2016c1c475ed82418fb2a2dca8f\">&#9670;&nbsp;</a></span>~FileReader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::FileReader::~FileReader </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a359b60e4d588f6721a56bf619e85dded\" name=\"a359b60e4d588f6721a56bf619e85dded\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a359b60e4d588f6721a56bf619e85dded\">&#9670;&nbsp;</a></span>GetContents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual const char * tram::FileReader::GetContents </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c\">tram::DiskReader</a>.</p>\n\n</div>\n</div>\n<a id=\"adeafb2e1ec0d9d2c9e2ea25b0d705f14\" name=\"adeafb2e1ec0d9d2c9e2ea25b0d705f14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">&#9670;&nbsp;</a></span>GetReader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> * tram::FileReader::GetReader </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a13fadbba64b0b75fc9c52bf64fbfe116\" name=\"a13fadbba64b0b75fc9c52bf64fbfe116\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13fadbba64b0b75fc9c52bf64fbfe116\">&#9670;&nbsp;</a></span>GetSearchList()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt; tram::FileReader::GetSearchList </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a28bb4f3c47fb4aa8a2241b2944986bdc\" name=\"a28bb4f3c47fb4aa8a2241b2944986bdc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28bb4f3c47fb4aa8a2241b2944986bdc\">&#9670;&nbsp;</a></span>GetSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual size_t tram::FileReader::GetSize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">tram::DiskReader</a>.</p>\n\n</div>\n</div>\n<a id=\"afe64d8768d91a14f788e7d518591a572\" name=\"afe64d8768d91a14f788e7d518591a572\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe64d8768d91a14f788e7d518591a572\">&#9670;&nbsp;</a></span>GetStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> tram::FileReader::GetStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264\">tram::DiskReader</a>.</p>\n\n</div>\n</div>\n<a id=\"a8a7d782b12279f564439c0438365c91a\" name=\"a8a7d782b12279f564439c0438365c91a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a7d782b12279f564439c0438365c91a\">&#9670;&nbsp;</a></span>SetSearchList()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FileReader::SetSearchList </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aadf272a73650e58beb40679038b8fafd\" name=\"aadf272a73650e58beb40679038b8fafd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadf272a73650e58beb40679038b8fafd\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileReader::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf\">tram::DiskReader</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_reader_parser-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FileReaderParser Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b\">is_continue</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151\">is_error</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d\">read_float32</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a\">read_float64</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72\">read_int16</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8\">read_int32</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">read_int64</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec\">read_int8</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724\">read_line</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986\">read_name</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005\">read_string</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3\">read_token</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d\">read_uint16</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973\">read_uint32</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827\">read_uint64</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e\">read_uint8</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd\">reset_error</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">set_skip_newline</a>(bool skip_newline)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">set_skip_value</a>(bool skip_value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">skip_newline</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">skip_newline_flag</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e\">skip_whitespace</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_reader_parser.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FileReaderParser Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_file_reader_parser-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FileReaderParser Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::FileReaderParser:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_file_reader_parser.png\" usemap=\"#tram::FileReaderParser_map\" alt=\"\"/>\n  <map id=\"tram::FileReaderParser_map\" name=\"tram::FileReaderParser_map\">\n<area href=\"classtram_1_1_text_reader_parser.html\" alt=\"tram::TextReaderParser\" shape=\"rect\" coords=\"0,56,144,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ada15ac5d1a3d84549898524e2b1faaec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec\">read_int8</a> ()=0</td></tr>\n<tr class=\"separator:ada15ac5d1a3d84549898524e2b1faaec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6589a27772f1c001af13d50a0111be72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72\">read_int16</a> ()=0</td></tr>\n<tr class=\"separator:a6589a27772f1c001af13d50a0111be72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f21c9d82fd1ddbe3170d41e9c4454f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8\">read_int32</a> ()=0</td></tr>\n<tr class=\"separator:a9f21c9d82fd1ddbe3170d41e9c4454f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad20fc7bfba19d51c9ade3b5a4d07f0e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">read_int64</a> ()=0</td></tr>\n<tr class=\"separator:ad20fc7bfba19d51c9ade3b5a4d07f0e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5527b551c2f71b78d9ae3e8c00b61d6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual uint8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e\">read_uint8</a> ()=0</td></tr>\n<tr class=\"separator:a5527b551c2f71b78d9ae3e8c00b61d6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a80b30acb200e9eeebacdf2da6d931d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d\">read_uint16</a> ()=0</td></tr>\n<tr class=\"separator:a8a80b30acb200e9eeebacdf2da6d931d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1be7fcf9c20d57a470425db1d01c973\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973\">read_uint32</a> ()=0</td></tr>\n<tr class=\"separator:af1be7fcf9c20d57a470425db1d01c973\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adab7efdbacf1949c1b79510804f58827\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827\">read_uint64</a> ()=0</td></tr>\n<tr class=\"separator:adab7efdbacf1949c1b79510804f58827\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8a5e8c5ed7909608b3c75a2c75f6e7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d\">read_float32</a> ()=0</td></tr>\n<tr class=\"separator:af8a5e8c5ed7909608b3c75a2c75f6e7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5946a704dfee7567c528c50d02bcf74a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a\">read_float64</a> ()=0</td></tr>\n<tr class=\"separator:a5946a704dfee7567c528c50d02bcf74a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc84d2050fc037feebe7e97681baf986\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986\">read_name</a> ()=0</td></tr>\n<tr class=\"separator:acc84d2050fc037feebe7e97681baf986\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bac8a5eb06119787111423ce520c005\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005\">read_string</a> ()=0</td></tr>\n<tr class=\"separator:a0bac8a5eb06119787111423ce520c005\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a398699124bf0cba7680196ca16425bf3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3\">read_token</a> ()=0</td></tr>\n<tr class=\"separator:a398699124bf0cba7680196ca16425bf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6d0fc588569a550368355fb99c5724\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724\">read_line</a> ()=0</td></tr>\n<tr class=\"separator:a8d6d0fc588569a550368355fb99c5724\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e9e3bce8f6b88355092541992be60ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">skip_newline</a> ()=0</td></tr>\n<tr class=\"separator:a2e9e3bce8f6b88355092541992be60ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f7c3a32719c64fb24ecd8e0a781738e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e\">skip_whitespace</a> ()=0</td></tr>\n<tr class=\"separator:a3f7c3a32719c64fb24ecd8e0a781738e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f33622ce91e090714839f2209e1a151\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151\">is_error</a> ()=0</td></tr>\n<tr class=\"separator:a9f33622ce91e090714839f2209e1a151\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9efa5234488245dbb7918bfdd5bc41bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd\">reset_error</a> ()=0</td></tr>\n<tr class=\"separator:a9efa5234488245dbb7918bfdd5bc41bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd0f9db53311ddb1c724c286cd18545b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b\">is_continue</a> ()=0</td></tr>\n<tr class=\"separator:afd0f9db53311ddb1c724c286cd18545b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99a0e7fd09920b898ef0a275b202541a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">set_skip_value</a> (bool <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a>)</td></tr>\n<tr class=\"separator:a99a0e7fd09920b898ef0a275b202541a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a593aa775ae47147f9328673822adb7d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">set_skip_newline</a> (bool <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">skip_newline</a>)</td></tr>\n<tr class=\"separator:a593aa775ae47147f9328673822adb7d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a8a40dde3c4452991d297c18b8f4098bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">skip_newline_flag</a> = true</td></tr>\n<tr class=\"separator:a8a40dde3c4452991d297c18b8f4098bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4102a29b7986a007aed7ffac17d6227\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a> = true</td></tr>\n<tr class=\"separator:aa4102a29b7986a007aed7ffac17d6227\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"afd0f9db53311ddb1c724c286cd18545b\" name=\"afd0f9db53311ddb1c724c286cd18545b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd0f9db53311ddb1c724c286cd18545b\">&#9670;&nbsp;</a></span>is_continue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::FileReaderParser::is_continue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a9f33622ce91e090714839f2209e1a151\" name=\"a9f33622ce91e090714839f2209e1a151\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f33622ce91e090714839f2209e1a151\">&#9670;&nbsp;</a></span>is_error()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual bool tram::FileReaderParser::is_error </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"af8a5e8c5ed7909608b3c75a2c75f6e7d\" name=\"af8a5e8c5ed7909608b3c75a2c75f6e7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8a5e8c5ed7909608b3c75a2c75f6e7d\">&#9670;&nbsp;</a></span>read_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual float tram::FileReaderParser::read_float32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a5946a704dfee7567c528c50d02bcf74a\" name=\"a5946a704dfee7567c528c50d02bcf74a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5946a704dfee7567c528c50d02bcf74a\">&#9670;&nbsp;</a></span>read_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual double tram::FileReaderParser::read_float64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a6589a27772f1c001af13d50a0111be72\" name=\"a6589a27772f1c001af13d50a0111be72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6589a27772f1c001af13d50a0111be72\">&#9670;&nbsp;</a></span>read_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int16_t tram::FileReaderParser::read_int16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a9f21c9d82fd1ddbe3170d41e9c4454f8\" name=\"a9f21c9d82fd1ddbe3170d41e9c4454f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f21c9d82fd1ddbe3170d41e9c4454f8\">&#9670;&nbsp;</a></span>read_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int32_t tram::FileReaderParser::read_int32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ad20fc7bfba19d51c9ade3b5a4d07f0e0\" name=\"ad20fc7bfba19d51c9ade3b5a4d07f0e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">&#9670;&nbsp;</a></span>read_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int64_t tram::FileReaderParser::read_int64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ada15ac5d1a3d84549898524e2b1faaec\" name=\"ada15ac5d1a3d84549898524e2b1faaec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada15ac5d1a3d84549898524e2b1faaec\">&#9670;&nbsp;</a></span>read_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual int8_t tram::FileReaderParser::read_int8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a8d6d0fc588569a550368355fb99c5724\" name=\"a8d6d0fc588569a550368355fb99c5724\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6d0fc588569a550368355fb99c5724\">&#9670;&nbsp;</a></span>read_line()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual std::string_view tram::FileReaderParser::read_line </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"acc84d2050fc037feebe7e97681baf986\" name=\"acc84d2050fc037feebe7e97681baf986\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc84d2050fc037feebe7e97681baf986\">&#9670;&nbsp;</a></span>read_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::FileReaderParser::read_name </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a0bac8a5eb06119787111423ce520c005\" name=\"a0bac8a5eb06119787111423ce520c005\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bac8a5eb06119787111423ce520c005\">&#9670;&nbsp;</a></span>read_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual std::string_view tram::FileReaderParser::read_string </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a398699124bf0cba7680196ca16425bf3\" name=\"a398699124bf0cba7680196ca16425bf3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a398699124bf0cba7680196ca16425bf3\">&#9670;&nbsp;</a></span>read_token()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual std::string_view tram::FileReaderParser::read_token </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a8a80b30acb200e9eeebacdf2da6d931d\" name=\"a8a80b30acb200e9eeebacdf2da6d931d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a80b30acb200e9eeebacdf2da6d931d\">&#9670;&nbsp;</a></span>read_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual uint16_t tram::FileReaderParser::read_uint16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"af1be7fcf9c20d57a470425db1d01c973\" name=\"af1be7fcf9c20d57a470425db1d01c973\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1be7fcf9c20d57a470425db1d01c973\">&#9670;&nbsp;</a></span>read_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual uint32_t tram::FileReaderParser::read_uint32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"adab7efdbacf1949c1b79510804f58827\" name=\"adab7efdbacf1949c1b79510804f58827\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adab7efdbacf1949c1b79510804f58827\">&#9670;&nbsp;</a></span>read_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual uint64_t tram::FileReaderParser::read_uint64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a5527b551c2f71b78d9ae3e8c00b61d6e\" name=\"a5527b551c2f71b78d9ae3e8c00b61d6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5527b551c2f71b78d9ae3e8c00b61d6e\">&#9670;&nbsp;</a></span>read_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual uint8_t tram::FileReaderParser::read_uint8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a9efa5234488245dbb7918bfdd5bc41bd\" name=\"a9efa5234488245dbb7918bfdd5bc41bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9efa5234488245dbb7918bfdd5bc41bd\">&#9670;&nbsp;</a></span>reset_error()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileReaderParser::reset_error </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a593aa775ae47147f9328673822adb7d1\" name=\"a593aa775ae47147f9328673822adb7d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a593aa775ae47147f9328673822adb7d1\">&#9670;&nbsp;</a></span>set_skip_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FileReaderParser::set_skip_newline </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>skip_newline</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a99a0e7fd09920b898ef0a275b202541a\" name=\"a99a0e7fd09920b898ef0a275b202541a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99a0e7fd09920b898ef0a275b202541a\">&#9670;&nbsp;</a></span>set_skip_value()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FileReaderParser::set_skip_value </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>skip_value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e9e3bce8f6b88355092541992be60ab\" name=\"a2e9e3bce8f6b88355092541992be60ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e9e3bce8f6b88355092541992be60ab\">&#9670;&nbsp;</a></span>skip_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileReaderParser::skip_newline </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a3f7c3a32719c64fb24ecd8e0a781738e\" name=\"a3f7c3a32719c64fb24ecd8e0a781738e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f7c3a32719c64fb24ecd8e0a781738e\">&#9670;&nbsp;</a></span>skip_whitespace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileReaderParser::skip_whitespace </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897\">tram::TextReaderParser</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8a40dde3c4452991d297c18b8f4098bd\" name=\"a8a40dde3c4452991d297c18b8f4098bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a40dde3c4452991d297c18b8f4098bd\">&#9670;&nbsp;</a></span>skip_newline_flag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FileReaderParser::skip_newline_flag = true</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4102a29b7986a007aed7ffac17d6227\" name=\"aa4102a29b7986a007aed7ffac17d6227\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4102a29b7986a007aed7ffac17d6227\">&#9670;&nbsp;</a></span>skip_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::FileReaderParser::skip_value = true</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_writer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FileWriter Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">GetMediumList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">GetStatus</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">GetWriter</a>(const char *path)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">SetContents</a>(const char *contents, size_t size)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">SetMediumList</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">Yeet</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">~FileWriter</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_writer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FileWriter Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_file_writer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FileWriter Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::FileWriter:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_file_writer.png\" usemap=\"#tram::FileWriter_map\" alt=\"\"/>\n  <map id=\"tram::FileWriter_map\" name=\"tram::FileWriter_map\">\n<area href=\"classtram_1_1_disk_writer.html\" alt=\"tram::DiskWriter\" shape=\"rect\" coords=\"0,56,100,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab9657acc04bba611bd8f061dcd207f1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">~FileWriter</a> ()=default</td></tr>\n<tr class=\"separator:ab9657acc04bba611bd8f061dcd207f1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74186dc3ea104ae0fa72c23f96ef7e80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">SetContents</a> (const char *contents, size_t size)=0</td></tr>\n<tr class=\"separator:a74186dc3ea104ae0fa72c23f96ef7e80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae51986fead14e4b024fea535c0986cec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">GetStatus</a> ()=0</td></tr>\n<tr class=\"separator:ae51986fead14e4b024fea535c0986cec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83856556c818cf185c04b5e5e26a0021\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">Yeet</a> ()=0</td></tr>\n<tr class=\"separator:a83856556c818cf185c04b5e5e26a0021\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:acdf5bcd53cc32c0c7f268d73a9fca3cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">GetWriter</a> (const char *path)</td></tr>\n<tr class=\"separator:acdf5bcd53cc32c0c7f268d73a9fca3cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c50a8afb948a19a9bc89d6353046aab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">SetMediumList</a> ()</td></tr>\n<tr class=\"separator:a9c50a8afb948a19a9bc89d6353046aab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf99237a3774981e16c871ec68b1473\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">GetMediumList</a> ()</td></tr>\n<tr class=\"separator:abcf99237a3774981e16c871ec68b1473\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab9657acc04bba611bd8f061dcd207f1c\" name=\"ab9657acc04bba611bd8f061dcd207f1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9657acc04bba611bd8f061dcd207f1c\">&#9670;&nbsp;</a></span>~FileWriter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::FileWriter::~FileWriter </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"abcf99237a3774981e16c871ec68b1473\" name=\"abcf99237a3774981e16c871ec68b1473\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcf99237a3774981e16c871ec68b1473\">&#9670;&nbsp;</a></span>GetMediumList()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a> &gt; tram::FileWriter::GetMediumList </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae51986fead14e4b024fea535c0986cec\" name=\"ae51986fead14e4b024fea535c0986cec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae51986fead14e4b024fea535c0986cec\">&#9670;&nbsp;</a></span>GetStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> tram::FileWriter::GetStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a\">tram::DiskWriter</a>.</p>\n\n</div>\n</div>\n<a id=\"acdf5bcd53cc32c0c7f268d73a9fca3cc\" name=\"acdf5bcd53cc32c0c7f268d73a9fca3cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acdf5bcd53cc32c0c7f268d73a9fca3cc\">&#9670;&nbsp;</a></span>GetWriter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> * tram::FileWriter::GetWriter </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a74186dc3ea104ae0fa72c23f96ef7e80\" name=\"a74186dc3ea104ae0fa72c23f96ef7e80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74186dc3ea104ae0fa72c23f96ef7e80\">&#9670;&nbsp;</a></span>SetContents()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriter::SetContents </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>contents</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c\">tram::DiskWriter</a>.</p>\n\n</div>\n</div>\n<a id=\"a9c50a8afb948a19a9bc89d6353046aab\" name=\"a9c50a8afb948a19a9bc89d6353046aab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c50a8afb948a19a9bc89d6353046aab\">&#9670;&nbsp;</a></span>SetMediumList()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::FileWriter::SetMediumList </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a83856556c818cf185c04b5e5e26a0021\" name=\"a83856556c818cf185c04b5e5e26a0021\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83856556c818cf185c04b5e5e26a0021\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriter::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb\">tram::DiskWriter</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_writer_parser-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FileWriterParser Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7\">write_float32</a>(float value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912\">write_float64</a>(double value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55\">write_int16</a>(int16_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51\">write_int32</a>(int32_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a\">write_int64</a>(int64_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6\">write_int8</a>(int8_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52\">write_name</a>(name_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33\">write_newline</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d\">write_string</a>(const char *value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b\">write_uint16</a>(uint16_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772\">write_uint32</a>(uint32_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542\">write_uint64</a>(uint64_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b\">write_uint8</a>(uint8_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_file_writer_parser.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FileWriterParser Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_file_writer_parser-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FileWriterParser Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::FileWriterParser:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_file_writer_parser.png\" usemap=\"#tram::FileWriterParser_map\" alt=\"\"/>\n  <map id=\"tram::FileWriterParser_map\" name=\"tram::FileWriterParser_map\">\n<area href=\"classtram_1_1_text_writer_parser.html\" alt=\"tram::TextWriterParser\" shape=\"rect\" coords=\"0,56,137,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2624b7ac01f990d990719ef32f7491f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6\">write_int8</a> (int8_t value)=0</td></tr>\n<tr class=\"separator:a2624b7ac01f990d990719ef32f7491f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33e6287ccf1da5b872e9b71892b15b55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55\">write_int16</a> (int16_t value)=0</td></tr>\n<tr class=\"separator:a33e6287ccf1da5b872e9b71892b15b55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40db8bb41ac6b1df2b8f4f7706e4af51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51\">write_int32</a> (int32_t value)=0</td></tr>\n<tr class=\"separator:a40db8bb41ac6b1df2b8f4f7706e4af51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0efc41d6117ffe74c289fe56b9b78a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a\">write_int64</a> (int64_t value)=0</td></tr>\n<tr class=\"separator:aea0efc41d6117ffe74c289fe56b9b78a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a771545ed3ba23219575e1e10e28fad2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b\">write_uint8</a> (uint8_t value)=0</td></tr>\n<tr class=\"separator:a771545ed3ba23219575e1e10e28fad2b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac99d04d600e6ac1cc4814dc3c0c35a5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b\">write_uint16</a> (uint16_t value)=0</td></tr>\n<tr class=\"separator:ac99d04d600e6ac1cc4814dc3c0c35a5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8baa4186c11c563a27f2c3947c62772\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772\">write_uint32</a> (uint32_t value)=0</td></tr>\n<tr class=\"separator:ab8baa4186c11c563a27f2c3947c62772\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa29b2c3cd1646e0b81316cd39b8a8542\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542\">write_uint64</a> (uint64_t value)=0</td></tr>\n<tr class=\"separator:aa29b2c3cd1646e0b81316cd39b8a8542\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52e41cf58a05494af4458da3fa5d47c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7\">write_float32</a> (float value)=0</td></tr>\n<tr class=\"separator:a52e41cf58a05494af4458da3fa5d47c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeadeaa02b140dc0aff5f9bd0dfe9d912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912\">write_float64</a> (double value)=0</td></tr>\n<tr class=\"separator:aeadeaa02b140dc0aff5f9bd0dfe9d912\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee67e0442a2f5db24bfdf9aa9bf37a52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52\">write_name</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> value)=0</td></tr>\n<tr class=\"separator:aee67e0442a2f5db24bfdf9aa9bf37a52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7d962155444c0960d1192b99638915d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d\">write_string</a> (const char *value)=0</td></tr>\n<tr class=\"separator:af7d962155444c0960d1192b99638915d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9e6518d91f1a691b801032c280d3c33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33\">write_newline</a> ()=0</td></tr>\n<tr class=\"separator:ad9e6518d91f1a691b801032c280d3c33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a52e41cf58a05494af4458da3fa5d47c7\" name=\"a52e41cf58a05494af4458da3fa5d47c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52e41cf58a05494af4458da3fa5d47c7\">&#9670;&nbsp;</a></span>write_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_float32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"aeadeaa02b140dc0aff5f9bd0dfe9d912\" name=\"aeadeaa02b140dc0aff5f9bd0dfe9d912\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeadeaa02b140dc0aff5f9bd0dfe9d912\">&#9670;&nbsp;</a></span>write_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_float64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a33e6287ccf1da5b872e9b71892b15b55\" name=\"a33e6287ccf1da5b872e9b71892b15b55\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33e6287ccf1da5b872e9b71892b15b55\">&#9670;&nbsp;</a></span>write_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_int16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a40db8bb41ac6b1df2b8f4f7706e4af51\" name=\"a40db8bb41ac6b1df2b8f4f7706e4af51\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40db8bb41ac6b1df2b8f4f7706e4af51\">&#9670;&nbsp;</a></span>write_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_int32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"aea0efc41d6117ffe74c289fe56b9b78a\" name=\"aea0efc41d6117ffe74c289fe56b9b78a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea0efc41d6117ffe74c289fe56b9b78a\">&#9670;&nbsp;</a></span>write_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_int64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a2624b7ac01f990d990719ef32f7491f6\" name=\"a2624b7ac01f990d990719ef32f7491f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2624b7ac01f990d990719ef32f7491f6\">&#9670;&nbsp;</a></span>write_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_int8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"aee67e0442a2f5db24bfdf9aa9bf37a52\" name=\"aee67e0442a2f5db24bfdf9aa9bf37a52\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee67e0442a2f5db24bfdf9aa9bf37a52\">&#9670;&nbsp;</a></span>write_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_name </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ad9e6518d91f1a691b801032c280d3c33\" name=\"ad9e6518d91f1a691b801032c280d3c33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9e6518d91f1a691b801032c280d3c33\">&#9670;&nbsp;</a></span>write_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_newline </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"af7d962155444c0960d1192b99638915d\" name=\"af7d962155444c0960d1192b99638915d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7d962155444c0960d1192b99638915d\">&#9670;&nbsp;</a></span>write_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_string </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ac99d04d600e6ac1cc4814dc3c0c35a5b\" name=\"ac99d04d600e6ac1cc4814dc3c0c35a5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac99d04d600e6ac1cc4814dc3c0c35a5b\">&#9670;&nbsp;</a></span>write_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_uint16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ab8baa4186c11c563a27f2c3947c62772\" name=\"ab8baa4186c11c563a27f2c3947c62772\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8baa4186c11c563a27f2c3947c62772\">&#9670;&nbsp;</a></span>write_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_uint32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"aa29b2c3cd1646e0b81316cd39b8a8542\" name=\"aa29b2c3cd1646e0b81316cd39b8a8542\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa29b2c3cd1646e0b81316cd39b8a8542\">&#9670;&nbsp;</a></span>write_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_uint64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a771545ed3ba23219575e1e10e28fad2b\" name=\"a771545ed3ba23219575e1e10e28fad2b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a771545ed3ba23219575e1e10e28fad2b\">&#9670;&nbsp;</a></span>write_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::FileWriterParser::write_uint8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389\">tram::TextWriterParser</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_graph-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_graph.html\">Graph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Graph Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_graph.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Graph Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_graph.html\">Graph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_graph-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Graph Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Graph:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_graph.png\" usemap=\"#tram::Graph_map\" alt=\"\"/>\n  <map id=\"tram::Graph_map\" name=\"tram::Graph_map\">\n<area href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\" alt=\"tram::Path\" shape=\"rect\" coords=\"0,56,77,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a95178b1e2898a6f4ba58c8b72aa2873d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_node.html\">Node</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a></td></tr>\n<tr class=\"separator:a95178b1e2898a6f4ba58c8b72aa2873d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c1e9f785fe9ac3fe2665d073f2a6722\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a></td></tr>\n<tr class=\"separator:a4c1e9f785fe9ac3fe2665d073f2a6722\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4c1e9f785fe9ac3fe2665d073f2a6722\" name=\"a4c1e9f785fe9ac3fe2665d073f2a6722\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c1e9f785fe9ac3fe2665d073f2a6722\">&#9670;&nbsp;</a></span>edges</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a>&gt; tram::Graph::edges</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95178b1e2898a6f4ba58c8b72aa2873d\" name=\"a95178b1e2898a6f4ba58c8b72aa2873d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95178b1e2898a6f4ba58c8b72aa2873d\">&#9670;&nbsp;</a></span>nodes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_node.html\">Node</a>&gt; tram::Graph::nodes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_hashmap-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Hashmap&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">Exists</a>(UID key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162\">Exists</a>(uint32_t key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">Find</a>(UID key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">Find</a>(uint32_t key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">Hashmap</a>(const char *name, size_t max_size)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc\">Hashmap</a>(const char *name, size_t max_size, std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt; list)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">Insert</a>(UID key, T value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0\">Insert</a>(uint32_t key, T value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">operator[]</a>(UID key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff\">operator[]</a>(uint32_t key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">Remove</a>(UID key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">Remove</a>(uint32_t key)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_hashmap.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Hashmap&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-types\">Protected Types</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_hashmap-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Hashmap&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">hashmap.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac573657ae86fff9e00d4eea5e525f09c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">Hashmap</a> (const char *<a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>, size_t <a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>)</td></tr>\n<tr class=\"separator:ac573657ae86fff9e00d4eea5e525f09c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ffe9a0a3a55b18c2f01928055e3c8fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc\">Hashmap</a> (const char *<a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>, size_t <a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>, std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt; list)</td></tr>\n<tr class=\"separator:a0ffe9a0a3a55b18c2f01928055e3c8fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7520d8013e86f06e43c2d46aacba39c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">Find</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> key)</td></tr>\n<tr class=\"separator:a7520d8013e86f06e43c2d46aacba39c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afea08bf4be8e807fc6da90e1992e3df9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">Find</a> (uint32_t key)</td></tr>\n<tr class=\"separator:afea08bf4be8e807fc6da90e1992e3df9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5598902c979d9635a7fa9c8b3aff4f4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">Exists</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> key)</td></tr>\n<tr class=\"separator:a5598902c979d9635a7fa9c8b3aff4f4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88408232bfa868c8345ed898a3a61162\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162\">Exists</a> (uint32_t key)</td></tr>\n<tr class=\"separator:a88408232bfa868c8345ed898a3a61162\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b0e9748d29a4b4af463af55307818da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">Insert</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> key, T value)</td></tr>\n<tr class=\"separator:a4b0e9748d29a4b4af463af55307818da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68af1a319c6ffabf571332939b4633c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0\">Insert</a> (uint32_t key, T value)</td></tr>\n<tr class=\"separator:a68af1a319c6ffabf571332939b4633c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5ec795eaaa273c57e3362be015a9dcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">Remove</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> key)</td></tr>\n<tr class=\"separator:aa5ec795eaaa273c57e3362be015a9dcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa8261398da94654cde9e61690810199\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">Remove</a> (uint32_t key)</td></tr>\n<tr class=\"separator:aaa8261398da94654cde9e61690810199\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16e686d27f2c5d67800e40fa01f2d97d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">operator[]</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> key)</td></tr>\n<tr class=\"separator:a16e686d27f2c5d67800e40fa01f2d97d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a1f0c5b852df8b670b19293784c75ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff\">operator[]</a> (uint32_t key)</td></tr>\n<tr class=\"separator:a2a1f0c5b852df8b670b19293784c75ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-types\" name=\"pro-types\"></a>\nProtected Types</h2></td></tr>\n<tr class=\"memitem:a5dba31c8c90742090caf46529e6771c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> = 2\n }</td></tr>\n<tr class=\"separator:a5dba31c8c90742090caf46529e6771c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a2eb7e0ca3a72367b3944121636bd74cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">padding</a> = 10</td></tr>\n<tr class=\"separator:a2eb7e0ca3a72367b3944121636bd74cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93e079fec725ee981f46656dec2b57fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a></td></tr>\n<tr class=\"separator:a93e079fec725ee981f46656dec2b57fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42d72204053c0f76f228ffcbd5b70411\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a> = 0</td></tr>\n<tr class=\"separator:a42d72204053c0f76f228ffcbd5b70411\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1624bb31327369ea902f87e19531d6aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a> = 0</td></tr>\n<tr class=\"separator:a1624bb31327369ea902f87e19531d6aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed9ce370a0606d8f753370f537bd9ca5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a> = 0</td></tr>\n<tr class=\"separator:aed9ce370a0606d8f753370f537bd9ca5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8e29b96d85af1c96d46f4eef83472b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> = nullptr</td></tr>\n<tr class=\"separator:ab8e29b96d85af1c96d46f4eef83472b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08c1ce10f128f0995b5e82d8f372b6f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a> = nullptr</td></tr>\n<tr class=\"separator:a08c1ce10f128f0995b5e82d8f372b6f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a5dba31c8c90742090caf46529e6771c7\" name=\"a5dba31c8c90742090caf46529e6771c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dba31c8c90742090caf46529e6771c7\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\" name=\"a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\"></a>FLAG_RECORD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\" name=\"a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\"></a>FLAG_DELETED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac573657ae86fff9e00d4eea5e525f09c\" name=\"ac573657ae86fff9e00d4eea5e525f09c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac573657ae86fff9e00d4eea5e525f09c\">&#9670;&nbsp;</a></span>Hashmap() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>max_size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ffe9a0a3a55b18c2f01928055e3c8fc\" name=\"a0ffe9a0a3a55b18c2f01928055e3c8fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ffe9a0a3a55b18c2f01928055e3c8fc\">&#9670;&nbsp;</a></span>Hashmap() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>max_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt;&#160;</td>\n          <td class=\"paramname\"><em>list</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5598902c979d9635a7fa9c8b3aff4f4e\" name=\"a5598902c979d9635a7fa9c8b3aff4f4e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5598902c979d9635a7fa9c8b3aff4f4e\">&#9670;&nbsp;</a></span>Exists() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Exists </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a88408232bfa868c8345ed898a3a61162\" name=\"a88408232bfa868c8345ed898a3a61162\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88408232bfa868c8345ed898a3a61162\">&#9670;&nbsp;</a></span>Exists() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Exists </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7520d8013e86f06e43c2d46aacba39c1\" name=\"a7520d8013e86f06e43c2d46aacba39c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7520d8013e86f06e43c2d46aacba39c1\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afea08bf4be8e807fc6da90e1992e3df9\" name=\"afea08bf4be8e807fc6da90e1992e3df9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afea08bf4be8e807fc6da90e1992e3df9\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b0e9748d29a4b4af463af55307818da\" name=\"a4b0e9748d29a4b4af463af55307818da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b0e9748d29a4b4af463af55307818da\">&#9670;&nbsp;</a></span>Insert() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Insert </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">T&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68af1a319c6ffabf571332939b4633c0\" name=\"a68af1a319c6ffabf571332939b4633c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68af1a319c6ffabf571332939b4633c0\">&#9670;&nbsp;</a></span>Insert() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Insert </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">T&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a16e686d27f2c5d67800e40fa01f2d97d\" name=\"a16e686d27f2c5d67800e40fa01f2d97d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16e686d27f2c5d67800e40fa01f2d97d\">&#9670;&nbsp;</a></span>operator[]() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::operator[] </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2a1f0c5b852df8b670b19293784c75ff\" name=\"a2a1f0c5b852df8b670b19293784c75ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a1f0c5b852df8b670b19293784c75ff\">&#9670;&nbsp;</a></span>operator[]() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::operator[] </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5ec795eaaa273c57e3362be015a9dcb\" name=\"aa5ec795eaaa273c57e3362be015a9dcb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5ec795eaaa273c57e3362be015a9dcb\">&#9670;&nbsp;</a></span>Remove() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa8261398da94654cde9e61690810199\" name=\"aaa8261398da94654cde9e61690810199\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa8261398da94654cde9e61690810199\">&#9670;&nbsp;</a></span>Remove() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab8e29b96d85af1c96d46f4eef83472b3\" name=\"ab8e29b96d85af1c96d46f4eef83472b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8e29b96d85af1c96d46f4eef83472b3\">&#9670;&nbsp;</a></span>first</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::first = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed9ce370a0606d8f753370f537bd9ca5\" name=\"aed9ce370a0606d8f753370f537bd9ca5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed9ce370a0606d8f753370f537bd9ca5\">&#9670;&nbsp;</a></span>hash_parameter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::hash_parameter = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08c1ce10f128f0995b5e82d8f372b6f1\" name=\"a08c1ce10f128f0995b5e82d8f372b6f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08c1ce10f128f0995b5e82d8f372b6f1\">&#9670;&nbsp;</a></span>last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::last = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1624bb31327369ea902f87e19531d6aa\" name=\"a1624bb31327369ea902f87e19531d6aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1624bb31327369ea902f87e19531d6aa\">&#9670;&nbsp;</a></span>max_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::max_size = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a93e079fec725ee981f46656dec2b57fb\" name=\"a93e079fec725ee981f46656dec2b57fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93e079fec725ee981f46656dec2b57fb\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2eb7e0ca3a72367b3944121636bd74cc\" name=\"a2eb7e0ca3a72367b3944121636bd74cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2eb7e0ca3a72367b3944121636bd74cc\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::padding = 10</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a42d72204053c0f76f228ffcbd5b70411\" name=\"a42d72204053c0f76f228ffcbd5b70411\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42d72204053c0f76f228ffcbd5b70411\">&#9670;&nbsp;</a></span>size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::size = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"hashmap_8h_source.html\">hashmap.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_lamp-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">Lamp</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Lamp Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#abf677a5c610ced48159e6b11ab1c4451\">color_b</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">color_g</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a4365a8b5302a6da19cd36c67c863093b\">color_r</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a02553c22a74ee2f103ef4ed09a497d11\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aff131bac65b73b0a881f2116f7f1cd35\">Lamp</a>(const SharedEntityData &amp;, const SerializedFieldArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#af6ba8a8fbc938b6c08f394f214049710\">light</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aeae81f52a382ae7ad89acbaa3c695739\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a0f77bb55d0945fc080603c5842dc6715\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a>(query_t query)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a4ab0cd9de2b9e6230ef1816be8c33951\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3bc65de0a51b52e3c08c013a0299a138\">RegisterType</a>(name_t name, Entity *(*constr_func)(const SharedEntityData &amp;, const SerializedFieldArray &amp;), void(*destr_func)(Entity *), const uint32_t *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#ac78d7f70b05883b2ad69ba5d6fdfec87\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a>(bool auto_load)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aef8bb7327e6895e997483cd7c83f91e9\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a>(bool persistent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a999c309481eb1c90911a71c617ed2fef\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aeae005f24082d501eb7ec9a9e54ab4de\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_lamp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Lamp Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">Lamp</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_lamp-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Lamp Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"lamp_8h_source.html\">lamp.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Lamp:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_lamp.png\" usemap=\"#tram::Lamp_map\" alt=\"\"/>\n  <map id=\"tram::Lamp_map\" name=\"tram::Lamp_map\">\n<area href=\"classtram_1_1_entity.html\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,73,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aff131bac65b73b0a881f2116f7f1cd35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aff131bac65b73b0a881f2116f7f1cd35\">Lamp</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a> &amp;)</td></tr>\n<tr class=\"separator:aff131bac65b73b0a881f2116f7f1cd35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeae005f24082d501eb7ec9a9e54ab4de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aeae005f24082d501eb7ec9a9e54ab4de\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:aeae005f24082d501eb7ec9a9e54ab4de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef8bb7327e6895e997483cd7c83f91e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aef8bb7327e6895e997483cd7c83f91e9\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:aef8bb7327e6895e997483cd7c83f91e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeae81f52a382ae7ad89acbaa3c695739\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#aeae81f52a382ae7ad89acbaa3c695739\">Load</a> ()</td></tr>\n<tr class=\"separator:aeae81f52a382ae7ad89acbaa3c695739\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a999c309481eb1c90911a71c617ed2fef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a999c309481eb1c90911a71c617ed2fef\">Unload</a> ()</td></tr>\n<tr class=\"separator:a999c309481eb1c90911a71c617ed2fef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78d7f70b05883b2ad69ba5d6fdfec87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#ac78d7f70b05883b2ad69ba5d6fdfec87\">Serialize</a> ()</td></tr>\n<tr class=\"separator:ac78d7f70b05883b2ad69ba5d6fdfec87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f77bb55d0945fc080603c5842dc6715\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a0f77bb55d0945fc080603c5842dc6715\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:a0f77bb55d0945fc080603c5842dc6715\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8c7b342524ca4e043a0f0b623dcb012b\">IsLoaded</a> () const</td></tr>\n<tr class=\"separator:a8c7b342524ca4e043a0f0b623dcb012b inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a61c636e38b5a84e3a591401dc85786e7\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"separator:a61c636e38b5a84e3a591401dc85786e7 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ae1abd1429cb06f7e06e61c4690041657\">IsInInterior</a> () const</td></tr>\n<tr class=\"separator:ae1abd1429cb06f7e06e61c4690041657 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ccb02a0b8af6b3ad8ecc59de4e3eaee\">IsPersistent</a> () const</td></tr>\n<tr class=\"separator:a2ccb02a0b8af6b3ad8ecc59de4e3eaee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac1e37cacc30dea27f935fcf769e7917f\">SetAutoLoad</a> (bool <a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a>)</td></tr>\n<tr class=\"separator:ac1e37cacc30dea27f935fcf769e7917f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a69f641efd8647d6595e836961848a399\">SetPersistent</a> (bool persistent)</td></tr>\n<tr class=\"separator:a69f641efd8647d6595e836961848a399 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a213f9d103ed9163fff9f6ce657eef85e\">Query</a> (<a class=\"el\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">query_t</a> query)</td></tr>\n<tr class=\"separator:a213f9d103ed9163fff9f6ce657eef85e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a4ab0cd9de2b9e6230ef1816be8c33951\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a4ab0cd9de2b9e6230ef1816be8c33951\">Register</a> ()</td></tr>\n<tr class=\"separator:a4ab0cd9de2b9e6230ef1816be8c33951\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a3bc65de0a51b52e3c08c013a0299a138 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3bc65de0a51b52e3c08c013a0299a138\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *), const uint32_t *fields, size_t fieldcount)</td></tr>\n<tr class=\"separator:a3bc65de0a51b52e3c08c013a0299a138 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af6ba8a8fbc938b6c08f394f214049710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#af6ba8a8fbc938b6c08f394f214049710\">light</a></td></tr>\n<tr class=\"separator:af6ba8a8fbc938b6c08f394f214049710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4365a8b5302a6da19cd36c67c863093b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a4365a8b5302a6da19cd36c67c863093b\">color_r</a></td></tr>\n<tr class=\"separator:a4365a8b5302a6da19cd36c67c863093b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c3b8fba1d7b221cdbbe0503bb3e83b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">color_g</a></td></tr>\n<tr class=\"separator:a1c3b8fba1d7b221cdbbe0503bb3e83b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf677a5c610ced48159e6b11ab1c4451\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#abf677a5c610ced48159e6b11ab1c4451\">color_b</a></td></tr>\n<tr class=\"separator:abf677a5c610ced48159e6b11ab1c4451\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02553c22a74ee2f103ef4ed09a497d11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html#a02553c22a74ee2f103ef4ed09a497d11\">distance</a></td></tr>\n<tr class=\"separator:a02553c22a74ee2f103ef4ed09a497d11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2c51ab5e50021e61f400caa4a67b494c\">is_persistent</a> = true</td></tr>\n<tr class=\"separator:a2c51ab5e50021e61f400caa4a67b494c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac4e8963e4ee77a02403d4003900f5452\">is_loaded</a> = false</td></tr>\n<tr class=\"separator:ac4e8963e4ee77a02403d4003900f5452 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a660dafa97f5c49f4df12293be697454b\">auto_load</a> = true</td></tr>\n<tr class=\"separator:a660dafa97f5c49f4df12293be697454b inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a534185869fafb88900d762035d131781\">in_interior</a> = false</td></tr>\n<tr class=\"separator:a534185869fafb88900d762035d131781 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ac7844ea49ac5a7466c44ca24d68e44b8\">changed</a> = false</td></tr>\n<tr class=\"separator:ac7844ea49ac5a7466c44ca24d68e44b8 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a3240b1a616b84d350ff82cb9d8fbd405\">is_serializable</a> = true</td></tr>\n<tr class=\"separator:a3240b1a616b84d350ff82cb9d8fbd405 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aff131bac65b73b0a881f2116f7f1cd35\" name=\"aff131bac65b73b0a881f2116f7f1cd35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff131bac65b73b0a881f2116f7f1cd35\">&#9670;&nbsp;</a></span>Lamp()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Lamp::Lamp </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aeae81f52a382ae7ad89acbaa3c695739\" name=\"aeae81f52a382ae7ad89acbaa3c695739\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeae81f52a382ae7ad89acbaa3c695739\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a6ba8e8297c7d583069e7f19a363559e0\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a0f77bb55d0945fc080603c5842dc6715\" name=\"a0f77bb55d0945fc080603c5842dc6715\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f77bb55d0945fc080603c5842dc6715\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a97fda9e5722f272b938abe3ffc1d0836\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a4ab0cd9de2b9e6230ef1816be8c33951\" name=\"a4ab0cd9de2b9e6230ef1816be8c33951\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ab0cd9de2b9e6230ef1816be8c33951\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac78d7f70b05883b2ad69ba5d6fdfec87\" name=\"ac78d7f70b05883b2ad69ba5d6fdfec87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac78d7f70b05883b2ad69ba5d6fdfec87\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aef8bb7327e6895e997483cd7c83f91e9\" name=\"aef8bb7327e6895e997483cd7c83f91e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef8bb7327e6895e997483cd7c83f91e9\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#aa40a3de1f14e476457d14b3a18bc9df4\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a999c309481eb1c90911a71c617ed2fef\" name=\"a999c309481eb1c90911a71c617ed2fef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a999c309481eb1c90911a71c617ed2fef\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a0e784888f086d9f70195d80791f97299\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aeae005f24082d501eb7ec9a9e54ab4de\" name=\"aeae005f24082d501eb7ec9a9e54ab4de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeae005f24082d501eb7ec9a9e54ab4de\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Lamp::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a024581dcd666bc8161ea77f88ec22e59\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abf677a5c610ced48159e6b11ab1c4451\" name=\"abf677a5c610ced48159e6b11ab1c4451\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf677a5c610ced48159e6b11ab1c4451\">&#9670;&nbsp;</a></span>color_b</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Lamp::color_b</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1c3b8fba1d7b221cdbbe0503bb3e83b6\" name=\"a1c3b8fba1d7b221cdbbe0503bb3e83b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">&#9670;&nbsp;</a></span>color_g</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Lamp::color_g</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4365a8b5302a6da19cd36c67c863093b\" name=\"a4365a8b5302a6da19cd36c67c863093b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4365a8b5302a6da19cd36c67c863093b\">&#9670;&nbsp;</a></span>color_r</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Lamp::color_r</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02553c22a74ee2f103ef4ed09a497d11\" name=\"a02553c22a74ee2f103ef4ed09a497d11\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02553c22a74ee2f103ef4ed09a497d11\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Lamp::distance</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af6ba8a8fbc938b6c08f394f214049710\" name=\"af6ba8a8fbc938b6c08f394f214049710\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6ba8a8fbc938b6c08f394f214049710\">&#9670;&nbsp;</a></span>light</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a>&gt; tram::Lamp::light</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"lamp_8h_source.html\">lamp.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"lamp_8cpp.html\">lamp.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_light-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_light.html\">Light</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Light Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">Light</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">light</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_light.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Light Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_light.html\">Light</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_light-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Light Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper.  \n <a href=\"classtram_1_1_light.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_2light_8h_source.html\">entities/light.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Light:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_light.png\" usemap=\"#tram::Light_map\" alt=\"\"/>\n  <map id=\"tram::Light_map\" name=\"tram::Light_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,73,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad1690e5bb21843da0f5ef2c16a6219ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">Light</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:ad1690e5bb21843da0f5ef2c16a6219ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae075d84f1f0778ac30f0ba35d040998f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:ae075d84f1f0778ac30f0ba35d040998f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">More...</a><br /></td></tr>\n<tr class=\"separator:ae075d84f1f0778ac30f0ba35d040998f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c76b25a1ea34c90b9eed095443e143f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a4c76b25a1ea34c90b9eed095443e143f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">More...</a><br /></td></tr>\n<tr class=\"separator:a4c76b25a1ea34c90b9eed095443e143f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af787551e1e7ceecc73891f52811050b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">Load</a> ()</td></tr>\n<tr class=\"memdesc:af787551e1e7ceecc73891f52811050b0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">More...</a><br /></td></tr>\n<tr class=\"separator:af787551e1e7ceecc73891f52811050b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14d15741d030edc15620a73fbfaf0256\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a14d15741d030edc15620a73fbfaf0256\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">More...</a><br /></td></tr>\n<tr class=\"separator:a14d15741d030edc15620a73fbfaf0256\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b28bc6a6961ed135f688efd63930d1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a1b28bc6a6961ed135f688efd63930d1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac45d1bc54463861a0b9919b8eca264aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ac45d1bc54463861a0b9919b8eca264aa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">More...</a><br /></td></tr>\n<tr class=\"separator:ac45d1bc54463861a0b9919b8eca264aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaee848b4fe419b1fc6c82282b31aa9dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:aaee848b4fe419b1fc6c82282b31aa9dd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">More...</a><br /></td></tr>\n<tr class=\"separator:aaee848b4fe419b1fc6c82282b31aa9dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aab4ab5b5a486c5b765906b62da2eaa46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">Register</a> ()</td></tr>\n<tr class=\"separator:aab4ab5b5a486c5b765906b62da2eaa46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af5eb3563a405edc4d1344432268cd7a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">light</a></td></tr>\n<tr class=\"separator:af5eb3563a405edc4d1344432268cd7a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac704c0af1a53820b9dcbcaa991650787\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">color</a></td></tr>\n<tr class=\"separator:ac704c0af1a53820b9dcbcaa991650787\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ebcbf936a12dbcef52e33fe7efe4653\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">distance</a></td></tr>\n<tr class=\"separator:a8ebcbf936a12dbcef52e33fe7efe4653\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4a742307b9c463eef63115ad3b19ae3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">direction</a></td></tr>\n<tr class=\"separator:ab4a742307b9c463eef63115ad3b19ae3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b11cd3d1f0ba7c48345eb54134848c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">exponent</a></td></tr>\n<tr class=\"separator:a0b11cd3d1f0ba7c48345eb54134848c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/light.html\">https://racenis.github.io/tram-sdk/documentation/entities/light.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad1690e5bb21843da0f5ef2c16a6219ff\" name=\"ad1690e5bb21843da0f5ef2c16a6219ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1690e5bb21843da0f5ef2c16a6219ff\">&#9670;&nbsp;</a></span>Light()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Light::Light </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aaee848b4fe419b1fc6c82282b31aa9dd\" name=\"aaee848b4fe419b1fc6c82282b31aa9dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaee848b4fe419b1fc6c82282b31aa9dd\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Light::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"af787551e1e7ceecc73891f52811050b0\" name=\"af787551e1e7ceecc73891f52811050b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af787551e1e7ceecc73891f52811050b0\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac45d1bc54463861a0b9919b8eca264aa\" name=\"ac45d1bc54463861a0b9919b8eca264aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac45d1bc54463861a0b9919b8eca264aa\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aab4ab5b5a486c5b765906b62da2eaa46\" name=\"aab4ab5b5a486c5b765906b62da2eaa46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4ab5b5a486c5b765906b62da2eaa46\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1b28bc6a6961ed135f688efd63930d1d\" name=\"a1b28bc6a6961ed135f688efd63930d1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b28bc6a6961ed135f688efd63930d1d\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a4c76b25a1ea34c90b9eed095443e143f\" name=\"a4c76b25a1ea34c90b9eed095443e143f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c76b25a1ea34c90b9eed095443e143f\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a14d15741d030edc15620a73fbfaf0256\" name=\"a14d15741d030edc15620a73fbfaf0256\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14d15741d030edc15620a73fbfaf0256\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae075d84f1f0778ac30f0ba35d040998f\" name=\"ae075d84f1f0778ac30f0ba35d040998f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae075d84f1f0778ac30f0ba35d040998f\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Light::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac704c0af1a53820b9dcbcaa991650787\" name=\"ac704c0af1a53820b9dcbcaa991650787\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac704c0af1a53820b9dcbcaa991650787\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Light::color</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab4a742307b9c463eef63115ad3b19ae3\" name=\"ab4a742307b9c463eef63115ad3b19ae3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4a742307b9c463eef63115ad3b19ae3\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Light::direction</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ebcbf936a12dbcef52e33fe7efe4653\" name=\"a8ebcbf936a12dbcef52e33fe7efe4653\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ebcbf936a12dbcef52e33fe7efe4653\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Light::distance</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0b11cd3d1f0ba7c48345eb54134848c3\" name=\"a0b11cd3d1f0ba7c48345eb54134848c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b11cd3d1f0ba7c48345eb54134848c3\">&#9670;&nbsp;</a></span>exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Light::exponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5eb3563a405edc4d1344432268cd7a9\" name=\"af5eb3563a405edc4d1344432268cd7a9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5eb3563a405edc4d1344432268cd7a9\">&#9670;&nbsp;</a></span>light</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a>&gt; tram::Light::light</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2light_8h_source.html\">light.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2light_8cpp.html\">light.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_light_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::LightComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">GetColor</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">GetDistance</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">IsLightDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">light</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">SetColor</a>(Render::color_t color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">SetDirection</a>(vec3 direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">SetDistance</a>(float dist)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">SetExponent</a>(float exponent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">SetLightDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">SetupModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">~LightComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_light_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::LightComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_light_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::LightComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides a real-time illumination for the scene.  \n <a href=\"classtram_1_1_light_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::LightComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_light_component.png\" usemap=\"#tram::LightComponent_map\" alt=\"\"/>\n  <map id=\"tram::LightComponent_map\" name=\"tram::LightComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,136,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a523c8f75bcd17b885098fe30956d88a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a523c8f75bcd17b885098fe30956d88a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a523c8f75bcd17b885098fe30956d88a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee724429d715a9da2793d66b0938080f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">Start</a> ()</td></tr>\n<tr class=\"separator:aee724429d715a9da2793d66b0938080f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3eaddbed4577c9c58915b1eafad0617a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a>)</td></tr>\n<tr class=\"memdesc:a3eaddbed4577c9c58915b1eafad0617a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the location of the light.  <a href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">More...</a><br /></td></tr>\n<tr class=\"separator:a3eaddbed4577c9c58915b1eafad0617a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9245097981e9adcb4f31f83513a071b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">SetColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> <a class=\"el\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a>)</td></tr>\n<tr class=\"memdesc:ac9245097981e9adcb4f31f83513a071b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the color of the light.  <a href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">More...</a><br /></td></tr>\n<tr class=\"separator:ac9245097981e9adcb4f31f83513a071b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1861087271aee66c91c327ec199000da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">SetDistance</a> (float dist)</td></tr>\n<tr class=\"memdesc:a1861087271aee66c91c327ec199000da\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the distance of the light.  <a href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">More...</a><br /></td></tr>\n<tr class=\"separator:a1861087271aee66c91c327ec199000da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a407b59e1e8c215a030e5eff1aba7d7d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">SetDirection</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">direction</a>)</td></tr>\n<tr class=\"separator:a407b59e1e8c215a030e5eff1aba7d7d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7375045221c2b515f18c1b5893f048f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">SetExponent</a> (float <a class=\"el\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">exponent</a>)</td></tr>\n<tr class=\"separator:ac7375045221c2b515f18c1b5893f048f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71e038c2e9a0cde417f2b1899ff87349\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">GetColor</a> ()</td></tr>\n<tr class=\"memdesc:a71e038c2e9a0cde417f2b1899ff87349\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the color of the light.  <a href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">More...</a><br /></td></tr>\n<tr class=\"separator:a71e038c2e9a0cde417f2b1899ff87349\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12116f3c73a230d6f2ba928d0f6af33f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">GetDistance</a> ()</td></tr>\n<tr class=\"memdesc:a12116f3c73a230d6f2ba928d0f6af33f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the distance of the light.  <a href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">More...</a><br /></td></tr>\n<tr class=\"separator:a12116f3c73a230d6f2ba928d0f6af33f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5d511b09dd704670222c89f7f4bfb40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:ac5d511b09dd704670222c89f7f4bfb40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cfee9529794960ce2238cd8306c438b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">~LightComponent</a> ()</td></tr>\n<tr class=\"separator:a3cfee9529794960ce2238cd8306c438b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aefae135fe915548285a2363b92e2915b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">IsLightDraw</a> ()</td></tr>\n<tr class=\"memdesc:aefae135fe915548285a2363b92e2915b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the lights are drawn.  <a href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">More...</a><br /></td></tr>\n<tr class=\"separator:aefae135fe915548285a2363b92e2915b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a3e561c198c80a5f5ffdbc3168e6dfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">SetLightDraw</a> (bool)</td></tr>\n<tr class=\"memdesc:a4a3e561c198c80a5f5ffdbc3168e6dfd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the drawing oflights.  <a href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">More...</a><br /></td></tr>\n<tr class=\"separator:a4a3e561c198c80a5f5ffdbc3168e6dfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:ae3a23ce02a2f45cbfcc386a78acc5db4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">Update</a> ()</td></tr>\n<tr class=\"separator:ae3a23ce02a2f45cbfcc386a78acc5db4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae603c601fe95f22db85c49b1bc53f800\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">SetupModel</a> ()</td></tr>\n<tr class=\"separator:ae603c601fe95f22db85c49b1bc53f800\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad6cf4eb83f59c3bd63368dc6f79e6df9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">Render::light_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">light</a> = {}</td></tr>\n<tr class=\"separator:ad6cf4eb83f59c3bd63368dc6f79e6df9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc605268cb96a739eee4ff721fc013d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:afc605268cb96a739eee4ff721fc013d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9613f69281a1170cd3465920fc8254ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a9613f69281a1170cd3465920fc8254ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97341de0a9ff1c7ebd0d9ae721af0bac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">distance</a> = 15.0f</td></tr>\n<tr class=\"separator:a97341de0a9ff1c7ebd0d9ae721af0bac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3d891ff89275a995fddeda744b085cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">direction</a> = {0.0f, 0.0f, -1.0f}</td></tr>\n<tr class=\"separator:ae3d891ff89275a995fddeda744b085cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af28678281fb5b2012af9bba987aaf2f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">exponent</a> = 0.0f</td></tr>\n<tr class=\"separator:af28678281fb5b2012af9bba987aaf2f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3bab1eb0115b251850a8342774d18a28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">model</a></td></tr>\n<tr class=\"separator:a3bab1eb0115b251850a8342774d18a28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides a real-time illumination for the scene. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/light.html\">https://racenis.github.io/tram-sdk/documentation/components/light.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a3cfee9529794960ce2238cd8306c438b\" name=\"a3cfee9529794960ce2238cd8306c438b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3cfee9529794960ce2238cd8306c438b\">&#9670;&nbsp;</a></span>~LightComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::LightComponent::~LightComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac5d511b09dd704670222c89f7f4bfb40\" name=\"ac5d511b09dd704670222c89f7f4bfb40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5d511b09dd704670222c89f7f4bfb40\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a71e038c2e9a0cde417f2b1899ff87349\" name=\"a71e038c2e9a0cde417f2b1899ff87349\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71e038c2e9a0cde417f2b1899ff87349\">&#9670;&nbsp;</a></span>GetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> tram::LightComponent::GetColor </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the color of the light. </p>\n\n</div>\n</div>\n<a id=\"a12116f3c73a230d6f2ba928d0f6af33f\" name=\"a12116f3c73a230d6f2ba928d0f6af33f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12116f3c73a230d6f2ba928d0f6af33f\">&#9670;&nbsp;</a></span>GetDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::LightComponent::GetDistance </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the distance of the light. </p>\n\n</div>\n</div>\n<a id=\"a523c8f75bcd17b885098fe30956d88a6\" name=\"a523c8f75bcd17b885098fe30956d88a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a523c8f75bcd17b885098fe30956d88a6\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Initializes an entity component. </p>\n<p >If an entity component has all of its resources already loaded, this will immediately <a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">Start()</a> the component. </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"aefae135fe915548285a2363b92e2915b\" name=\"aefae135fe915548285a2363b92e2915b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefae135fe915548285a2363b92e2915b\">&#9670;&nbsp;</a></span>IsLightDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::LightComponent::IsLightDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the lights are drawn. </p>\n<p >Check <a class=\"el\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\" title=\"Sets the drawing oflights.\">SetLightDraw()</a> for more info. </p>\n\n</div>\n</div>\n<a id=\"ac9245097981e9adcb4f31f83513a071b\" name=\"ac9245097981e9adcb4f31f83513a071b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9245097981e9adcb4f31f83513a071b\">&#9670;&nbsp;</a></span>SetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the color of the light. </p>\n\n</div>\n</div>\n<a id=\"a407b59e1e8c215a030e5eff1aba7d7d1\" name=\"a407b59e1e8c215a030e5eff1aba7d7d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a407b59e1e8c215a030e5eff1aba7d7d1\">&#9670;&nbsp;</a></span>SetDirection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetDirection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1861087271aee66c91c327ec199000da\" name=\"a1861087271aee66c91c327ec199000da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1861087271aee66c91c327ec199000da\">&#9670;&nbsp;</a></span>SetDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>dist</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the distance of the light. </p>\n<p >Sets how far the light will travel. </p>\n\n</div>\n</div>\n<a id=\"ac7375045221c2b515f18c1b5893f048f\" name=\"ac7375045221c2b515f18c1b5893f048f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7375045221c2b515f18c1b5893f048f\">&#9670;&nbsp;</a></span>SetExponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetExponent </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>exponent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a3e561c198c80a5f5ffdbc3168e6dfd\" name=\"a4a3e561c198c80a5f5ffdbc3168e6dfd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a3e561c198c80a5f5ffdbc3168e6dfd\">&#9670;&nbsp;</a></span>SetLightDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetLightDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Sets the drawing oflights. </p>\n<p >If set to true, each light component will initialize a 3D model, which will allow you to see the posiiton of the light sources. Useful for debugging. </p>\n\n</div>\n</div>\n<a id=\"a3eaddbed4577c9c58915b1eafad0617a\" name=\"a3eaddbed4577c9c58915b1eafad0617a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3eaddbed4577c9c58915b1eafad0617a\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the location of the light. </p>\n\n</div>\n</div>\n<a id=\"ae603c601fe95f22db85c49b1bc53f800\" name=\"ae603c601fe95f22db85c49b1bc53f800\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae603c601fe95f22db85c49b1bc53f800\">&#9670;&nbsp;</a></span>SetupModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::SetupModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee724429d715a9da2793d66b0938080f\" name=\"aee724429d715a9da2793d66b0938080f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee724429d715a9da2793d66b0938080f\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ae3a23ce02a2f45cbfcc386a78acc5db4\" name=\"ae3a23ce02a2f45cbfcc386a78acc5db4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3a23ce02a2f45cbfcc386a78acc5db4\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::LightComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9613f69281a1170cd3465920fc8254ef\" name=\"a9613f69281a1170cd3465920fc8254ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9613f69281a1170cd3465920fc8254ef\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> tram::LightComponent::color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae3d891ff89275a995fddeda744b085cf\" name=\"ae3d891ff89275a995fddeda744b085cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3d891ff89275a995fddeda744b085cf\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::LightComponent::direction = {0.0f, 0.0f, -1.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97341de0a9ff1c7ebd0d9ae721af0bac\" name=\"a97341de0a9ff1c7ebd0d9ae721af0bac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97341de0a9ff1c7ebd0d9ae721af0bac\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::LightComponent::distance = 15.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af28678281fb5b2012af9bba987aaf2f4\" name=\"af28678281fb5b2012af9bba987aaf2f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af28678281fb5b2012af9bba987aaf2f4\">&#9670;&nbsp;</a></span>exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::LightComponent::exponent = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6cf4eb83f59c3bd63368dc6f79e6df9\" name=\"ad6cf4eb83f59c3bd63368dc6f79e6df9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6cf4eb83f59c3bd63368dc6f79e6df9\">&#9670;&nbsp;</a></span>light</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">Render::light_t</a> tram::LightComponent::light = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc605268cb96a739eee4ff721fc013d1\" name=\"afc605268cb96a739eee4ff721fc013d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc605268cb96a739eee4ff721fc013d1\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::LightComponent::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3bab1eb0115b251850a8342774d18a28\" name=\"a3bab1eb0115b251850a8342774d18a28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bab1eb0115b251850a8342774d18a28\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::LightComponent::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2light_8h_source.html\">light.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2light_8cpp.html\">light.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_loader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_loader.html\">Loader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Loader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_loader.html\">tram::Loader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html#aac27e5bdab227d1819fc8c4092bbaba1\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html\">tram::Loader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html\">tram::Loader</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html#aa6e57c8b708a2420ae8644f55c41a149\">UpdateLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_loader.html\">tram::Loader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_loader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Loader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_loader.html\">Loader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_loader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Loader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"loader_8h_source.html\">loader.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aac27e5bdab227d1819fc8c4092bbaba1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_loader.html#aac27e5bdab227d1819fc8c4092bbaba1\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"separator:aac27e5bdab227d1819fc8c4092bbaba1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6e57c8b708a2420ae8644f55c41a149\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_loader.html#aa6e57c8b708a2420ae8644f55c41a149\">UpdateLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"separator:aa6e57c8b708a2420ae8644f55c41a149\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aa2ff0e373bfa20733197131513624505\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">Update</a> ()</td></tr>\n<tr class=\"separator:aa2ff0e373bfa20733197131513624505\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aac27e5bdab227d1819fc8c4092bbaba1\" name=\"aac27e5bdab227d1819fc8c4092bbaba1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac27e5bdab227d1819fc8c4092bbaba1\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2ff0e373bfa20733197131513624505\" name=\"aa2ff0e373bfa20733197131513624505\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2ff0e373bfa20733197131513624505\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6e57c8b708a2420ae8644f55c41a149\" name=\"aa6e57c8b708a2420ae8644f55c41a149\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6e57c8b708a2420ae8644f55c41a149\">&#9670;&nbsp;</a></span>UpdateLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::UpdateLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"loader_8h_source.html\">loader.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"loader_8cpp.html\">loader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_marker-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_marker.html\">Marker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Marker Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">Marker</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_marker.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Marker Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_marker.html\">Marker</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_marker-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Marker Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Functionally inert.  \n <a href=\"classtram_1_1_marker.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"marker_8h_source.html\">entities/marker.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Marker:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_marker.png\" usemap=\"#tram::Marker_map\" alt=\"\"/>\n  <map id=\"tram::Marker_map\" name=\"tram::Marker_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,83,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a1c59918f30d773f92bdea30840ef63a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">Marker</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a1c59918f30d773f92bdea30840ef63a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a145d01d9bdd8d6aebd38b3ce27cf3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a1a145d01d9bdd8d6aebd38b3ce27cf3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a1a145d01d9bdd8d6aebd38b3ce27cf3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6217c8c7e40bb9a4904b28c2d0c44ded\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a6217c8c7e40bb9a4904b28c2d0c44ded\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">More...</a><br /></td></tr>\n<tr class=\"separator:a6217c8c7e40bb9a4904b28c2d0c44ded\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ad81cd0f4cb4a426ac37ef1519f5357\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a5ad81cd0f4cb4a426ac37ef1519f5357\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">More...</a><br /></td></tr>\n<tr class=\"separator:a5ad81cd0f4cb4a426ac37ef1519f5357\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8cb67e60618a29e0d170527f30d3e71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ad8cb67e60618a29e0d170527f30d3e71\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">More...</a><br /></td></tr>\n<tr class=\"separator:ad8cb67e60618a29e0d170527f30d3e71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c9a6085109982a942bf4f08c8b6cb09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a5c9a6085109982a942bf4f08c8b6cb09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae890d19a9b46205c1be064f6c08291df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ae890d19a9b46205c1be064f6c08291df\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">More...</a><br /></td></tr>\n<tr class=\"separator:ae890d19a9b46205c1be064f6c08291df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7246a7be4136d9e70ba8a253b00a2d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:ab7246a7be4136d9e70ba8a253b00a2d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">More...</a><br /></td></tr>\n<tr class=\"separator:ab7246a7be4136d9e70ba8a253b00a2d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a6122424fbc20e0355ca793c26481d961\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">Register</a> ()</td></tr>\n<tr class=\"separator:a6122424fbc20e0355ca793c26481d961\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Functionally inert. </p>\n<p >Doesn't do anything and has no functionality. Can be used as a template.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/marker.html\">https://racenis.github.io/tram-sdk/documentation/entities/marker.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a1c59918f30d773f92bdea30840ef63a1\" name=\"a1c59918f30d773f92bdea30840ef63a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c59918f30d773f92bdea30840ef63a1\">&#9670;&nbsp;</a></span>Marker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Marker::Marker </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab7246a7be4136d9e70ba8a253b00a2d5\" name=\"ab7246a7be4136d9e70ba8a253b00a2d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7246a7be4136d9e70ba8a253b00a2d5\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Marker::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a5ad81cd0f4cb4a426ac37ef1519f5357\" name=\"a5ad81cd0f4cb4a426ac37ef1519f5357\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ad81cd0f4cb4a426ac37ef1519f5357\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae890d19a9b46205c1be064f6c08291df\" name=\"ae890d19a9b46205c1be064f6c08291df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae890d19a9b46205c1be064f6c08291df\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6122424fbc20e0355ca793c26481d961\" name=\"a6122424fbc20e0355ca793c26481d961\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6122424fbc20e0355ca793c26481d961\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c9a6085109982a942bf4f08c8b6cb09\" name=\"a5c9a6085109982a942bf4f08c8b6cb09\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c9a6085109982a942bf4f08c8b6cb09\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6217c8c7e40bb9a4904b28c2d0c44ded\" name=\"a6217c8c7e40bb9a4904b28c2d0c44ded\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6217c8c7e40bb9a4904b28c2d0c44ded\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ad8cb67e60618a29e0d170527f30d3e71\" name=\"ad8cb67e60618a29e0d170527f30d3e71\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8cb67e60618a29e0d170527f30d3e71\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a1a145d01d9bdd8d6aebd38b3ce27cf3d\" name=\"a1a145d01d9bdd8d6aebd38b3ce27cf3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Marker::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"marker_8h_source.html\">marker.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"marker_8cpp.html\">marker.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_navmesh-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Navmesh Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">GetName</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">GetNavmeshNode</a>(node_id_t node_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">GetNodes</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">Navmesh</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">~Navmesh</a>()=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_navmesh.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Navmesh Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_navmesh-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Navmesh Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Not fully implemented yet.  \n <a href=\"classtram_1_1_navmesh.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"navmesh_8h_source.html\">framework/navmesh.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a17689cf25d70bd126c147747daa8c559\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">Navmesh</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>)</td></tr>\n<tr class=\"separator:a17689cf25d70bd126c147747daa8c559\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d3c3d41afd62d9551361c255ef9cff3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">~Navmesh</a> ()=delete</td></tr>\n<tr class=\"separator:a6d3c3d41afd62d9551361c255ef9cff3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea73348a1b3d10864820e6b1dd711b94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">GetName</a> ()</td></tr>\n<tr class=\"separator:aea73348a1b3d10864820e6b1dd711b94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f0d4a5f4fa94bb06a7731126c1f03e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">GetNodes</a> ()</td></tr>\n<tr class=\"separator:a6f0d4a5f4fa94bb06a7731126c1f03e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a792dae6d4c013fb3f773c1bf851a3f6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a792dae6d4c013fb3f773c1bf851a3f6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a9b5d215639881339b98b16b5c2bb56da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">GetNavmeshNode</a> (<a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> node_id)</td></tr>\n<tr class=\"separator:a9b5d215639881339b98b16b5c2bb56da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff49c111f072f7c12a1e209960a1cb6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>)</td></tr>\n<tr class=\"separator:aff49c111f072f7c12a1e209960a1cb6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:afa5f4827ce36be9a7e41fe2d4f4dc55f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a></td></tr>\n<tr class=\"separator:afa5f4827ce36be9a7e41fe2d4f4dc55f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a267e74b526a850dce2b51459113082f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">nodes</a></td></tr>\n<tr class=\"separator:a267e74b526a850dce2b51459113082f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Not fully implemented yet. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/navmesh.html\">https://racenis.github.io/tram-sdk/documentation/framework/navmesh.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a17689cf25d70bd126c147747daa8c559\" name=\"a17689cf25d70bd126c147747daa8c559\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17689cf25d70bd126c147747daa8c559\">&#9670;&nbsp;</a></span>Navmesh()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Navmesh::Navmesh </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d3c3d41afd62d9551361c255ef9cff3\" name=\"a6d3c3d41afd62d9551361c255ef9cff3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d3c3d41afd62d9551361c255ef9cff3\">&#9670;&nbsp;</a></span>~Navmesh()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Navmesh::~Navmesh </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aff49c111f072f7c12a1e209960a1cb6f\" name=\"aff49c111f072f7c12a1e209960a1cb6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff49c111f072f7c12a1e209960a1cb6f\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> * tram::Navmesh::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea73348a1b3d10864820e6b1dd711b94\" name=\"aea73348a1b3d10864820e6b1dd711b94\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea73348a1b3d10864820e6b1dd711b94\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Navmesh::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b5d215639881339b98b16b5c2bb56da\" name=\"a9b5d215639881339b98b16b5c2bb56da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b5d215639881339b98b16b5c2bb56da\">&#9670;&nbsp;</a></span>GetNavmeshNode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a> tram::Navmesh::GetNavmeshNode </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>node_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6f0d4a5f4fa94bb06a7731126c1f03e9\" name=\"a6f0d4a5f4fa94bb06a7731126c1f03e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f0d4a5f4fa94bb06a7731126c1f03e9\">&#9670;&nbsp;</a></span>GetNodes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> &gt; &amp; tram::Navmesh::GetNodes </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a792dae6d4c013fb3f773c1bf851a3f6c\" name=\"a792dae6d4c013fb3f773c1bf851a3f6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a792dae6d4c013fb3f773c1bf851a3f6c\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Navmesh::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"afa5f4827ce36be9a7e41fe2d4f4dc55f\" name=\"afa5f4827ce36be9a7e41fe2d4f4dc55f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa5f4827ce36be9a7e41fe2d4f4dc55f\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Navmesh::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a267e74b526a850dce2b51459113082f7\" name=\"a267e74b526a850dce2b51459113082f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a267e74b526a850dce2b51459113082f7\">&#9670;&nbsp;</a></span>nodes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&gt; tram::Navmesh::nodes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"navmesh_8h_source.html\">navmesh.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"navmesh_8cpp.html\">navmesh.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_octree-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">AddLeaf</a>(T type, float x, float y, float z)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">Draw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197\">Draw</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">Find</a>(T *array, vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(T result[], float x, float y, float z)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3\">FindNearest</a>(NearestSearch *search, Node *parent_node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7\">FindNearest</a>(NearestSearch *search, Node *parent_node, int octant)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">GetOctant</a>(vec3 mid, vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(vec3 point, T data)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510\">Insert</a>(Node *parent, Node *leaf)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">NewNode</a>(Octant octant, Node *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">OCTANT_BOTTOM_LEFT_BACK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">OCTANT_BOTTOM_LEFT_FRONT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">OCTANT_BOTTOM_RIGHT_BACK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">OCTANT_BOTTOM_RIGHT_FRONT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">OCTANT_TOP_LEFT_BACK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">OCTANT_TOP_LEFT_FRONT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">OCTANT_TOP_RIGHT_BACK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">OCTANT_TOP_RIGHT_FRONT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">Octree</a>(const char *name, size_t size)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">Remove</a>(uint32_t node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55\">Remove</a>(Node *node)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">RemoveLeaf</a>(uint32_t leaf_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_octree.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Octree&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-types\">Protected Types</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_octree-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2d86fab3ff9590542faa44a542e90a30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">Octree</a> (const char *name, size_t size)</td></tr>\n<tr class=\"separator:a2d86fab3ff9590542faa44a542e90a30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff7cf2c6bf99856721156aa6dcdf0b72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, T data)</td></tr>\n<tr class=\"separator:aff7cf2c6bf99856721156aa6dcdf0b72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8496d30bf8f12e11b61923a06ee14e3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">Remove</a> (uint32_t node)</td></tr>\n<tr class=\"separator:a8496d30bf8f12e11b61923a06ee14e3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78b461493864e5124fa6972004a754d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">Find</a> (T *array, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"separator:a78b461493864e5124fa6972004a754d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03a71d1c84b4b3408a2929859a386d38\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">Draw</a> ()</td></tr>\n<tr class=\"separator:a03a71d1c84b4b3408a2929859a386d38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af27324144ece2995f714d7fb6a9a802d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">AddLeaf</a> (T type, float x, float y, float z)</td></tr>\n<tr class=\"separator:af27324144ece2995f714d7fb6a9a802d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b95a094d1299eac280c2baaeef43f3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">RemoveLeaf</a> (uint32_t leaf_id)</td></tr>\n<tr class=\"separator:a9b95a094d1299eac280c2baaeef43f3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4b6041ef1096c464a9197a89037ea73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a> (T result[], float x, float y, float z)</td></tr>\n<tr class=\"separator:af4b6041ef1096c464a9197a89037ea73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-types\" name=\"pro-types\"></a>\nProtected Types</h2></td></tr>\n<tr class=\"memitem:a7d20e8b44f034b8f8c6748d004c72321\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">OCTANT_TOP_LEFT_BACK</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">OCTANT_TOP_LEFT_FRONT</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">OCTANT_TOP_RIGHT_BACK</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">OCTANT_TOP_RIGHT_FRONT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">OCTANT_BOTTOM_LEFT_BACK</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">OCTANT_BOTTOM_LEFT_FRONT</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">OCTANT_BOTTOM_RIGHT_BACK</a>\n, <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">OCTANT_BOTTOM_RIGHT_FRONT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a7d20e8b44f034b8f8c6748d004c72321\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a02470aaeb494f3903c6f45e0e3357510\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510\">Insert</a> (<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *parent, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *leaf)</td></tr>\n<tr class=\"separator:a02470aaeb494f3903c6f45e0e3357510\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a712401b2423a34b64d7205459ddacf55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55\">Remove</a> (<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:a712401b2423a34b64d7205459ddacf55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af89de216af27eedb69a0255dc8f5baa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3\">FindNearest</a> (<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> *search, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *parent_node)</td></tr>\n<tr class=\"separator:af89de216af27eedb69a0255dc8f5baa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ac6abd129adbfd434a034a7f156d7c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7\">FindNearest</a> (<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> *search, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *parent_node, int octant)</td></tr>\n<tr class=\"separator:a6ac6abd129adbfd434a034a7f156d7c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d0d4f09bc8a2edd9abe38415e91bcc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">NewNode</a> (<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> octant, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *parent)</td></tr>\n<tr class=\"separator:a6d0d4f09bc8a2edd9abe38415e91bcc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a886968cb23838b42a4ea381eda9a93b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">GetOctant</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> mid, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"separator:a886968cb23838b42a4ea381eda9a93b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a687c55bafdd80a22f550de2cbb1a8197\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197\">Draw</a> (<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *node)</td></tr>\n<tr class=\"separator:a687c55bafdd80a22f550de2cbb1a8197\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a220207230fbc117b610f5b4a1cf38d65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a></td></tr>\n<tr class=\"separator:a220207230fbc117b610f5b4a1cf38d65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a339f6bc48edaea36835c72727179450f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a> = nullptr</td></tr>\n<tr class=\"separator:a339f6bc48edaea36835c72727179450f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a7d20e8b44f034b8f8c6748d004c72321\" name=\"a7d20e8b44f034b8f8c6748d004c72321\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d20e8b44f034b8f8c6748d004c72321\">&#9670;&nbsp;</a></span>Octant</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">tram::Octree::Octant</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\" name=\"a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\"></a>OCTANT_TOP_LEFT_BACK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\" name=\"a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\"></a>OCTANT_TOP_LEFT_FRONT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\" name=\"a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\"></a>OCTANT_TOP_RIGHT_BACK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\" name=\"a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\"></a>OCTANT_TOP_RIGHT_FRONT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\" name=\"a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\"></a>OCTANT_BOTTOM_LEFT_BACK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\" name=\"a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\"></a>OCTANT_BOTTOM_LEFT_FRONT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\" name=\"a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\"></a>OCTANT_BOTTOM_RIGHT_BACK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\" name=\"a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\"></a>OCTANT_BOTTOM_RIGHT_FRONT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a2d86fab3ff9590542faa44a542e90a30\" name=\"a2d86fab3ff9590542faa44a542e90a30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d86fab3ff9590542faa44a542e90a30\">&#9670;&nbsp;</a></span>Octree()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af27324144ece2995f714d7fb6a9a802d\" name=\"af27324144ece2995f714d7fb6a9a802d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af27324144ece2995f714d7fb6a9a802d\">&#9670;&nbsp;</a></span>AddLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::AddLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\">T&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>z</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03a71d1c84b4b3408a2929859a386d38\" name=\"a03a71d1c84b4b3408a2929859a386d38\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03a71d1c84b4b3408a2929859a386d38\">&#9670;&nbsp;</a></span>Draw() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Draw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a687c55bafdd80a22f550de2cbb1a8197\" name=\"a687c55bafdd80a22f550de2cbb1a8197\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a687c55bafdd80a22f550de2cbb1a8197\">&#9670;&nbsp;</a></span>Draw() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Draw </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a78b461493864e5124fa6972004a754d6\" name=\"a78b461493864e5124fa6972004a754d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78b461493864e5124fa6972004a754d6\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\">T *&#160;</td>\n          <td class=\"paramname\"><em>array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af89de216af27eedb69a0255dc8f5baa3\" name=\"af89de216af27eedb69a0255dc8f5baa3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af89de216af27eedb69a0255dc8f5baa3\">&#9670;&nbsp;</a></span>FindNearest() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::FindNearest </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> *&#160;</td>\n          <td class=\"paramname\"><em>search</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent_node</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ac6abd129adbfd434a034a7f156d7c7\" name=\"a6ac6abd129adbfd434a034a7f156d7c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ac6abd129adbfd434a034a7f156d7c7\">&#9670;&nbsp;</a></span>FindNearest() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::FindNearest </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> *&#160;</td>\n          <td class=\"paramname\"><em>search</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent_node</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>octant</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af4b6041ef1096c464a9197a89037ea73\" name=\"af4b6041ef1096c464a9197a89037ea73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4b6041ef1096c464a9197a89037ea73\">&#9670;&nbsp;</a></span>FindNearest() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::FindNearest </td>\n          <td>(</td>\n          <td class=\"paramtype\">T&#160;</td>\n          <td class=\"paramname\"><em>result</em>[], </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>z</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a886968cb23838b42a4ea381eda9a93b4\" name=\"a886968cb23838b42a4ea381eda9a93b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a886968cb23838b42a4ea381eda9a93b4\">&#9670;&nbsp;</a></span>GetOctant()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::GetOctant </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>mid</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02470aaeb494f3903c6f45e0e3357510\" name=\"a02470aaeb494f3903c6f45e0e3357510\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02470aaeb494f3903c6f45e0e3357510\">&#9670;&nbsp;</a></span>Insert() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Insert </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>leaf</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aff7cf2c6bf99856721156aa6dcdf0b72\" name=\"aff7cf2c6bf99856721156aa6dcdf0b72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff7cf2c6bf99856721156aa6dcdf0b72\">&#9670;&nbsp;</a></span>Insert() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Insert </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">T&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d0d4f09bc8a2edd9abe38415e91bcc8\" name=\"a6d0d4f09bc8a2edd9abe38415e91bcc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d0d4f09bc8a2edd9abe38415e91bcc8\">&#9670;&nbsp;</a></span>NewNode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> * <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NewNode </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a>&#160;</td>\n          <td class=\"paramname\"><em>octant</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a712401b2423a34b64d7205459ddacf55\" name=\"a712401b2423a34b64d7205459ddacf55\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a712401b2423a34b64d7205459ddacf55\">&#9670;&nbsp;</a></span>Remove() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8496d30bf8f12e11b61923a06ee14e3d\" name=\"a8496d30bf8f12e11b61923a06ee14e3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8496d30bf8f12e11b61923a06ee14e3d\">&#9670;&nbsp;</a></span>Remove() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>node</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b95a094d1299eac280c2baaeef43f3b\" name=\"a9b95a094d1299eac280c2baaeef43f3b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b95a094d1299eac280c2baaeef43f3b\">&#9670;&nbsp;</a></span>RemoveLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::RemoveLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>leaf_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a220207230fbc117b610f5b4a1cf38d65\" name=\"a220207230fbc117b610f5b4a1cf38d65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a220207230fbc117b610f5b4a1cf38d65\">&#9670;&nbsp;</a></span>nodes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>&gt; <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::nodes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a339f6bc48edaea36835c72727179450f\" name=\"a339f6bc48edaea36835c72727179450f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a339f6bc48edaea36835c72727179450f\">&#9670;&nbsp;</a></span>root</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::root = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_particle_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ParticleComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">draw_list_entry</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">emission_rate</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">EmitParticle</a>(const Particle &amp;particle)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">GetSprite</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">gravity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">initial_velocity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">initial_velocity_randomness</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">particle_max_age</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">ParticleComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">particles</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">SetSprite</a>(Render::Sprite *sprite)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">UpdateLocation</a>(vec3 nlocation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">UpdateRenderListObject</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">~ParticleComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_particle_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ParticleComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_particle_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ParticleComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides amusing graphical effects.  \n <a href=\"classtram_1_1_particle_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"particle_8h_source.html\">components/particle.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::ParticleComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_particle_component.png\" usemap=\"#tram::ParticleComponent_map\" alt=\"\"/>\n  <map id=\"tram::ParticleComponent_map\" name=\"tram::ParticleComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,148,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a53990e83ab645269af4e740d72d6914b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">ParticleComponent</a> ()</td></tr>\n<tr class=\"separator:a53990e83ab645269af4e740d72d6914b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08d2217761e8209be71fb5accfcfcfd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">~ParticleComponent</a> ()</td></tr>\n<tr class=\"separator:a08d2217761e8209be71fb5accfcfcfd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13b0e3b68f2b4fd346525baba49a7481\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">GetSprite</a> ()</td></tr>\n<tr class=\"separator:a13b0e3b68f2b4fd346525baba49a7481\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8798a3b667e45954102f0eae33d3b941\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">SetSprite</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *<a class=\"el\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>)</td></tr>\n<tr class=\"separator:a8798a3b667e45954102f0eae33d3b941\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae89750f03a9e6c0beef9de59414f7a25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">Start</a> ()</td></tr>\n<tr class=\"separator:ae89750f03a9e6c0beef9de59414f7a25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87d6c21e29d20330fba57f8d3b2134cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">Update</a> ()</td></tr>\n<tr class=\"separator:a87d6c21e29d20330fba57f8d3b2134cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a809c4b587625c3050decf6df8de83c07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">UpdateRenderListObject</a> ()</td></tr>\n<tr class=\"separator:a809c4b587625c3050decf6df8de83c07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd1c7f1296b2b2d19aa4f7a7eea2893b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">UpdateLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation)</td></tr>\n<tr class=\"separator:afd1c7f1296b2b2d19aa4f7a7eea2893b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7403bb854acd08f1060bf3b659d62c75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a7403bb854acd08f1060bf3b659d62c75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a154e0103510b6ba7bfe4e0c5109bb420\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">EmitParticle</a> (const <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a> &amp;particle)</td></tr>\n<tr class=\"separator:a154e0103510b6ba7bfe4e0c5109bb420\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a1d1a56c1b5c8ce7539663dba1d485c32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">emission_rate</a> = 1</td></tr>\n<tr class=\"separator:a1d1a56c1b5c8ce7539663dba1d485c32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac12c10889354895c145ddfbd759ed2c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">particle_max_age</a> = 120</td></tr>\n<tr class=\"separator:ac12c10889354895c145ddfbd759ed2c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49ca6619dc2cc1f51243c26b9700650a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">gravity</a> = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, -0.005f, 0.0f)</td></tr>\n<tr class=\"separator:a49ca6619dc2cc1f51243c26b9700650a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a430a79ebe6cdfed63f9197226acbf2a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">initial_velocity</a> = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.15f, 0.0f)</td></tr>\n<tr class=\"separator:a430a79ebe6cdfed63f9197226acbf2a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af090a25e299547146b68263c6a70fc83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">initial_velocity_randomness</a> = 0.1f</td></tr>\n<tr class=\"separator:af090a25e299547146b68263c6a70fc83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af671bbcfbdb0e2560ac63704b17e98f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">particles</a></td></tr>\n<tr class=\"separator:af671bbcfbdb0e2560ac63704b17e98f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10d73a307d53059911966e00f9ea0154\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a></td></tr>\n<tr class=\"separator:a10d73a307d53059911966e00f9ea0154\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb488cd232ea710d12db28f52d199377\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">location</a></td></tr>\n<tr class=\"separator:acb488cd232ea710d12db28f52d199377\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7bc366fee1d155a6f7f60ca1c7474cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">draw_list_entry</a> = {}</td></tr>\n<tr class=\"separator:ac7bc366fee1d155a6f7f60ca1c7474cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc6cc6df023adfb622490cb39dee2df2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">vertex_array</a> = {}</td></tr>\n<tr class=\"separator:afc6cc6df023adfb622490cb39dee2df2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides amusing graphical effects. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/particle.html\">https://racenis.github.io/tram-sdk/documentation/components/particle.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a53990e83ab645269af4e740d72d6914b\" name=\"a53990e83ab645269af4e740d72d6914b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53990e83ab645269af4e740d72d6914b\">&#9670;&nbsp;</a></span>ParticleComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ParticleComponent::ParticleComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08d2217761e8209be71fb5accfcfcfd7\" name=\"a08d2217761e8209be71fb5accfcfcfd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08d2217761e8209be71fb5accfcfcfd7\">&#9670;&nbsp;</a></span>~ParticleComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ParticleComponent::~ParticleComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a154e0103510b6ba7bfe4e0c5109bb420\" name=\"a154e0103510b6ba7bfe4e0c5109bb420\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a154e0103510b6ba7bfe4e0c5109bb420\">&#9670;&nbsp;</a></span>EmitParticle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::EmitParticle </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>particle</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7403bb854acd08f1060bf3b659d62c75\" name=\"a7403bb854acd08f1060bf3b659d62c75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7403bb854acd08f1060bf3b659d62c75\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a13b0e3b68f2b4fd346525baba49a7481\" name=\"a13b0e3b68f2b4fd346525baba49a7481\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13b0e3b68f2b4fd346525baba49a7481\">&#9670;&nbsp;</a></span>GetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::ParticleComponent::GetSprite </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8798a3b667e45954102f0eae33d3b941\" name=\"a8798a3b667e45954102f0eae33d3b941\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8798a3b667e45954102f0eae33d3b941\">&#9670;&nbsp;</a></span>SetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::SetSprite </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *&#160;</td>\n          <td class=\"paramname\"><em>sprite</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae89750f03a9e6c0beef9de59414f7a25\" name=\"ae89750f03a9e6c0beef9de59414f7a25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae89750f03a9e6c0beef9de59414f7a25\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a87d6c21e29d20330fba57f8d3b2134cd\" name=\"a87d6c21e29d20330fba57f8d3b2134cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a87d6c21e29d20330fba57f8d3b2134cd\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afd1c7f1296b2b2d19aa4f7a7eea2893b\" name=\"afd1c7f1296b2b2d19aa4f7a7eea2893b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd1c7f1296b2b2d19aa4f7a7eea2893b\">&#9670;&nbsp;</a></span>UpdateLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::UpdateLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>nlocation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a809c4b587625c3050decf6df8de83c07\" name=\"a809c4b587625c3050decf6df8de83c07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a809c4b587625c3050decf6df8de83c07\">&#9670;&nbsp;</a></span>UpdateRenderListObject()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ParticleComponent::UpdateRenderListObject </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac7bc366fee1d155a6f7f60ca1c7474cc\" name=\"ac7bc366fee1d155a6f7f60ca1c7474cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7bc366fee1d155a6f7f60ca1c7474cc\">&#9670;&nbsp;</a></span>draw_list_entry</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> tram::ParticleComponent::draw_list_entry = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d1a56c1b5c8ce7539663dba1d485c32\" name=\"a1d1a56c1b5c8ce7539663dba1d485c32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1a56c1b5c8ce7539663dba1d485c32\">&#9670;&nbsp;</a></span>emission_rate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::ParticleComponent::emission_rate = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49ca6619dc2cc1f51243c26b9700650a\" name=\"a49ca6619dc2cc1f51243c26b9700650a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49ca6619dc2cc1f51243c26b9700650a\">&#9670;&nbsp;</a></span>gravity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::ParticleComponent::gravity = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, -0.005f, 0.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a430a79ebe6cdfed63f9197226acbf2a3\" name=\"a430a79ebe6cdfed63f9197226acbf2a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a430a79ebe6cdfed63f9197226acbf2a3\">&#9670;&nbsp;</a></span>initial_velocity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::ParticleComponent::initial_velocity = <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.15f, 0.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af090a25e299547146b68263c6a70fc83\" name=\"af090a25e299547146b68263c6a70fc83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af090a25e299547146b68263c6a70fc83\">&#9670;&nbsp;</a></span>initial_velocity_randomness</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::ParticleComponent::initial_velocity_randomness = 0.1f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb488cd232ea710d12db28f52d199377\" name=\"acb488cd232ea710d12db28f52d199377\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb488cd232ea710d12db28f52d199377\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::ParticleComponent::location</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac12c10889354895c145ddfbd759ed2c2\" name=\"ac12c10889354895c145ddfbd759ed2c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac12c10889354895c145ddfbd759ed2c2\">&#9670;&nbsp;</a></span>particle_max_age</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::ParticleComponent::particle_max_age = 120</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af671bbcfbdb0e2560ac63704b17e98f4\" name=\"af671bbcfbdb0e2560ac63704b17e98f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af671bbcfbdb0e2560ac63704b17e98f4\">&#9670;&nbsp;</a></span>particles</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a>&gt; tram::ParticleComponent::particles</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10d73a307d53059911966e00f9ea0154\" name=\"a10d73a307d53059911966e00f9ea0154\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10d73a307d53059911966e00f9ea0154\">&#9670;&nbsp;</a></span>sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>&gt; tram::ParticleComponent::sprite</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc6cc6df023adfb622490cb39dee2df2\" name=\"afc6cc6df023adfb622490cb39dee2df2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc6cc6df023adfb622490cb39dee2df2\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> tram::ParticleComponent::vertex_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"particle_8h_source.html\">particle.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"particle_8cpp.html\">particle.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_path-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Path Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">Draw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">edge_infos</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">Path</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8\">PathFollower</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">~Path</a>()=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_path.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Path Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_path-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Path Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Base class for graphs.  \n <a href=\"classtram_1_1_path.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">framework/path.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Path:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_path.png\" usemap=\"#tram::Path_map\" alt=\"\"/>\n  <map id=\"tram::Path_map\" name=\"tram::Path_map\">\n<area href=\"classtram_1_1_graph.html\" alt=\"tram::Graph\" shape=\"rect\" coords=\"0,0,77,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9a0e7ff4de05db6ced2dd6ef0e1a2d75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">Path</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>)</td></tr>\n<tr class=\"separator:a9a0e7ff4de05db6ced2dd6ef0e1a2d75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03b3057af03cc8870dc7a699cdb1a77c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a03b3057af03cc8870dc7a699cdb1a77c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5f2edca27bfb5eccec30976a3bb9b29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">Draw</a> ()</td></tr>\n<tr class=\"memdesc:aa5f2edca27bfb5eccec30976a3bb9b29\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the path's line segments.  <a href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">More...</a><br /></td></tr>\n<tr class=\"separator:aa5f2edca27bfb5eccec30976a3bb9b29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ace5eac8a595a419404e4b4489f91a62a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>)</td></tr>\n<tr class=\"memdesc:ace5eac8a595a419404e4b4489f91a62a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a path.  <a href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">More...</a><br /></td></tr>\n<tr class=\"separator:ace5eac8a595a419404e4b4489f91a62a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a25df1c0c40a359d561e259394593626f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">~Path</a> ()=delete</td></tr>\n<tr class=\"separator:a25df1c0c40a359d561e259394593626f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7933eedcc33af28cc227944e586fee3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a></td></tr>\n<tr class=\"separator:a7933eedcc33af28cc227944e586fee3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a296e431440d4a7572afa87217fd46996\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">edge_infos</a></td></tr>\n<tr class=\"separator:a296e431440d4a7572afa87217fd46996\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_graph\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_graph')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td></tr>\n<tr class=\"memitem:a95178b1e2898a6f4ba58c8b72aa2873d inherit pro_attribs_classtram_1_1_graph\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_node.html\">Node</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a></td></tr>\n<tr class=\"separator:a95178b1e2898a6f4ba58c8b72aa2873d inherit pro_attribs_classtram_1_1_graph\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c1e9f785fe9ac3fe2665d073f2a6722 inherit pro_attribs_classtram_1_1_graph\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a></td></tr>\n<tr class=\"separator:a4c1e9f785fe9ac3fe2665d073f2a6722 inherit pro_attribs_classtram_1_1_graph\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a7c5bae106d82b3014171a0347a70d2a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8\">PathFollower</a></td></tr>\n<tr class=\"separator:a7c5bae106d82b3014171a0347a70d2a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Base class for graphs. </p>\n<p >Sequence of line segments.</p>\n<p >This class is used as a base for <a class=\"el\" href=\"classtram_1_1_navmesh.html\" title=\"Not fully implemented yet.\">Navmesh</a> and <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/graph.html\">https://racenis.github.io/tram-sdk/documentation/framework/graph.html</a></dd></dl>\n<p>Can be used to push an object along a path, can be used as a rail, or as a path for guiding agents.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/path.html\">https://racenis.github.io/tram-sdk/documentation/framework/path.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a9a0e7ff4de05db6ced2dd6ef0e1a2d75\" name=\"a9a0e7ff4de05db6ced2dd6ef0e1a2d75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">&#9670;&nbsp;</a></span>Path()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Path::Path </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25df1c0c40a359d561e259394593626f\" name=\"a25df1c0c40a359d561e259394593626f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25df1c0c40a359d561e259394593626f\">&#9670;&nbsp;</a></span>~Path()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Path::~Path </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa5f2edca27bfb5eccec30976a3bb9b29\" name=\"aa5f2edca27bfb5eccec30976a3bb9b29\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5f2edca27bfb5eccec30976a3bb9b29\">&#9670;&nbsp;</a></span>Draw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Path::Draw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws the path's line segments. </p>\n\n</div>\n</div>\n<a id=\"ace5eac8a595a419404e4b4489f91a62a\" name=\"ace5eac8a595a419404e4b4489f91a62a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace5eac8a595a419404e4b4489f91a62a\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> * tram::Path::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a path. </p>\n<p >Finds a path by its name, or creates a new path by that name if not found. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always returns a pointer to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a03b3057af03cc8870dc7a699cdb1a77c\" name=\"a03b3057af03cc8870dc7a699cdb1a77c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03b3057af03cc8870dc7a699cdb1a77c\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Path::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a7c5bae106d82b3014171a0347a70d2a8\" name=\"a7c5bae106d82b3014171a0347a70d2a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c5bae106d82b3014171a0347a70d2a8\">&#9670;&nbsp;</a></span>PathFollower</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a296e431440d4a7572afa87217fd46996\" name=\"a296e431440d4a7572afa87217fd46996\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a296e431440d4a7572afa87217fd46996\">&#9670;&nbsp;</a></span>edge_infos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a>&gt; tram::Path::edge_infos</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7933eedcc33af28cc227944e586fee3f\" name=\"a7933eedcc33af28cc227944e586fee3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7933eedcc33af28cc227944e586fee3f\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Path::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8h_source.html\">path.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8cpp.html\">path.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_path_follower-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PathFollower Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">Advance</a>(float)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">GetPosition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">GetTangent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">next</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">path</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">PathFollower</a>(Path *path, vec3 initial_pos, PathType type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">prev</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">progress</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">Project</a>(vec3)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">SetOrientation</a>(vec3)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">TurnLeft</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">TurnRight</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">TurnStraight</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_path_follower.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PathFollower Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_path_follower-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PathFollower Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>.  \n <a href=\"classtram_1_1_path_follower.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">framework/path.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a86f5375b9ad4e9ee064df8782c357b49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">PathFollower</a> (<a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> *<a class=\"el\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">path</a>, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> initial_pos, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> <a class=\"el\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">type</a>)</td></tr>\n<tr class=\"memdesc:a86f5375b9ad4e9ee064df8782c357b49\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a new <a class=\"el\" href=\"classtram_1_1_path_follower.html\" title=\"Point constrained to a Path.\">PathFollower</a> for a path.  <a href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">More...</a><br /></td></tr>\n<tr class=\"separator:a86f5375b9ad4e9ee064df8782c357b49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3517e3cd4fbc2f47b7a4b46743bcbaa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">Advance</a> (float)</td></tr>\n<tr class=\"memdesc:a3517e3cd4fbc2f47b7a4b46743bcbaa0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Advances the follower along the path.  <a href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">More...</a><br /></td></tr>\n<tr class=\"separator:a3517e3cd4fbc2f47b7a4b46743bcbaa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada75b25602de0ccf13cc6a3c46885132\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">Project</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>)</td></tr>\n<tr class=\"separator:ada75b25602de0ccf13cc6a3c46885132\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa88ed283123c1543ce714b87ec215ba8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">TurnLeft</a> ()</td></tr>\n<tr class=\"separator:aa88ed283123c1543ce714b87ec215ba8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a7dc721d2c2def8c57b73bf3e398314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">TurnRight</a> ()</td></tr>\n<tr class=\"separator:a4a7dc721d2c2def8c57b73bf3e398314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9aa9d6eca479eb74eca580212dc42a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">TurnStraight</a> ()</td></tr>\n<tr class=\"separator:af9aa9d6eca479eb74eca580212dc42a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e95681a6535da9569bea660127a52bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">GetPosition</a> ()</td></tr>\n<tr class=\"separator:a9e95681a6535da9569bea660127a52bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdf8f79ad276308156aa2780e24412c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">GetTangent</a> ()</td></tr>\n<tr class=\"separator:abdf8f79ad276308156aa2780e24412c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca1321d0863fe982ec2d827135ab8ee2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">SetOrientation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>)</td></tr>\n<tr class=\"separator:aca1321d0863fe982ec2d827135ab8ee2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:adc605aaf1c4740b70ebe8a16be03af60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">progress</a></td></tr>\n<tr class=\"separator:adc605aaf1c4740b70ebe8a16be03af60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace8a71f492daf52acb64b89fd21bc025\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">prev</a></td></tr>\n<tr class=\"separator:ace8a71f492daf52acb64b89fd21bc025\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97bd194a87f8c4d747b1c737a34f8c53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">next</a></td></tr>\n<tr class=\"separator:a97bd194a87f8c4d747b1c737a34f8c53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad11ffc06ffa7fa6b5fd4732ee7ec70ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">type</a></td></tr>\n<tr class=\"separator:ad11ffc06ffa7fa6b5fd4732ee7ec70ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab026659adb3008a000bb00753cc74e07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">direction</a></td></tr>\n<tr class=\"separator:ab026659adb3008a000bb00753cc74e07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afef4ecc46377cb395a63dbd67bc16c9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">path</a></td></tr>\n<tr class=\"separator:afef4ecc46377cb395a63dbd67bc16c9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>. </p>\n<p >When constructed, the <a class=\"el\" href=\"classtram_1_1_path_follower.html\" title=\"Point constrained to a Path.\">PathFollower</a> will project the initial position on the path, i.e. find the nearest point on the path. After that, you can use <a class=\"el\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\" title=\"Advances the follower along the path.\">PathFollower::Advance()</a> to push it back and forth on the path. The position of the <a class=\"el\" href=\"classtram_1_1_path_follower.html\" title=\"Point constrained to a Path.\">PathFollower</a> can be used to position an object, so that it appears to be following the given path. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a86f5375b9ad4e9ee064df8782c357b49\" name=\"a86f5375b9ad4e9ee064df8782c357b49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86f5375b9ad4e9ee064df8782c357b49\">&#9670;&nbsp;</a></span>PathFollower()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::PathFollower::PathFollower </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> *&#160;</td>\n          <td class=\"paramname\"><em>path</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>initial_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates a new <a class=\"el\" href=\"classtram_1_1_path_follower.html\" title=\"Point constrained to a Path.\">PathFollower</a> for a path. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3517e3cd4fbc2f47b7a4b46743bcbaa0\" name=\"a3517e3cd4fbc2f47b7a4b46743bcbaa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">&#9670;&nbsp;</a></span>Advance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::Advance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>distance</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Advances the follower along the path. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">distance</td><td>Distance along the path, in meters. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9e95681a6535da9569bea660127a52bb\" name=\"a9e95681a6535da9569bea660127a52bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e95681a6535da9569bea660127a52bb\">&#9670;&nbsp;</a></span>GetPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::PathFollower::GetPosition </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdf8f79ad276308156aa2780e24412c9\" name=\"abdf8f79ad276308156aa2780e24412c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdf8f79ad276308156aa2780e24412c9\">&#9670;&nbsp;</a></span>GetTangent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::PathFollower::GetTangent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ada75b25602de0ccf13cc6a3c46885132\" name=\"ada75b25602de0ccf13cc6a3c46885132\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada75b25602de0ccf13cc6a3c46885132\">&#9670;&nbsp;</a></span>Project()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::Project </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>projectable</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aca1321d0863fe982ec2d827135ab8ee2\" name=\"aca1321d0863fe982ec2d827135ab8ee2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca1321d0863fe982ec2d827135ab8ee2\">&#9670;&nbsp;</a></span>SetOrientation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::SetOrientation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>orientation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa88ed283123c1543ce714b87ec215ba8\" name=\"aa88ed283123c1543ce714b87ec215ba8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa88ed283123c1543ce714b87ec215ba8\">&#9670;&nbsp;</a></span>TurnLeft()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::TurnLeft </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a7dc721d2c2def8c57b73bf3e398314\" name=\"a4a7dc721d2c2def8c57b73bf3e398314\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a7dc721d2c2def8c57b73bf3e398314\">&#9670;&nbsp;</a></span>TurnRight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::TurnRight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af9aa9d6eca479eb74eca580212dc42a2\" name=\"af9aa9d6eca479eb74eca580212dc42a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9aa9d6eca479eb74eca580212dc42a2\">&#9670;&nbsp;</a></span>TurnStraight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PathFollower::TurnStraight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab026659adb3008a000bb00753cc74e07\" name=\"ab026659adb3008a000bb00753cc74e07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab026659adb3008a000bb00753cc74e07\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> tram::PathFollower::direction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97bd194a87f8c4d747b1c737a34f8c53\" name=\"a97bd194a87f8c4d747b1c737a34f8c53\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97bd194a87f8c4d747b1c737a34f8c53\">&#9670;&nbsp;</a></span>next</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::PathFollower::next</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afef4ecc46377cb395a63dbd67bc16c9c\" name=\"afef4ecc46377cb395a63dbd67bc16c9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afef4ecc46377cb395a63dbd67bc16c9c\">&#9670;&nbsp;</a></span>path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a>* tram::PathFollower::path</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ace8a71f492daf52acb64b89fd21bc025\" name=\"ace8a71f492daf52acb64b89fd21bc025\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace8a71f492daf52acb64b89fd21bc025\">&#9670;&nbsp;</a></span>prev</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::PathFollower::prev</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adc605aaf1c4740b70ebe8a16be03af60\" name=\"adc605aaf1c4740b70ebe8a16be03af60\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc605aaf1c4740b70ebe8a16be03af60\">&#9670;&nbsp;</a></span>progress</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::PathFollower::progress</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad11ffc06ffa7fa6b5fd4732ee7ec70ab\" name=\"ad11ffc06ffa7fa6b5fd4732ee7ec70ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> tram::PathFollower::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8h_source.html\">path.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8cpp.html\">path.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::CallbackMotionState Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05\">CallbackMotionState</a>(vec3 position, quat rotation, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97\">data_pointer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba\">get_transform_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f\">getWorldTransform</a>(btTransform &amp;world_transform) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda\">set_transform_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307\">SetTransformCallback</a>(std::pair&lt; vec3, quat &gt;(*get_transform_callback)(void *), void(*set_transform_callback)(void *, std::pair&lt; vec3, quat &gt;), void *data)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7\">setWorldTransform</a>(const btTransform &amp;world_transform)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59\">~CallbackMotionState</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">tram::Physics::API::CallbackMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::CallbackMotionState Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::CallbackMotionState Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::API::CallbackMotionState:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa3c82472daee6498cab94722d7d43a05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05\">CallbackMotionState</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431\">position</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e\">rotation</a>, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a> get_callback, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a> set_callback, void *data)</td></tr>\n<tr class=\"separator:aa3c82472daee6498cab94722d7d43a05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1563529ba951ebec065cf23c7f9d6d59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59\">~CallbackMotionState</a> ()</td></tr>\n<tr class=\"separator:a1563529ba951ebec065cf23c7f9d6d59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c4651578a5cc3573ddf5dad03eb305f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f\">getWorldTransform</a> (btTransform &amp;world_transform) const</td></tr>\n<tr class=\"separator:a3c4651578a5cc3573ddf5dad03eb305f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a813941aee5728ff97d671972b1b180b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7\">setWorldTransform</a> (const btTransform &amp;world_transform)</td></tr>\n<tr class=\"separator:a813941aee5728ff97d671972b1b180b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4cd905f3f85673090c5cd67957a8307\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307\">SetTransformCallback</a> (std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba\">get_transform_callback</a>)(void *), void(*<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda\">set_transform_callback</a>)(void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;), void *data)</td></tr>\n<tr class=\"separator:aa4cd905f3f85673090c5cd67957a8307\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ab97d0dfa12197e6fa79055fd3bfc57ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba\">get_transform_callback</a> )(void *) = nullptr</td></tr>\n<tr class=\"separator:ab97d0dfa12197e6fa79055fd3bfc57ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af92a134178d01636e1b003a46daafdda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda\">set_transform_callback</a> )(void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;) = nullptr</td></tr>\n<tr class=\"separator:af92a134178d01636e1b003a46daafdda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2374bce1a3ea318d53f293d90231d431\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431\">position</a></td></tr>\n<tr class=\"separator:a2374bce1a3ea318d53f293d90231d431\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8eb70310ddfbbf5915e9f243317e845e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e\">rotation</a></td></tr>\n<tr class=\"separator:a8eb70310ddfbbf5915e9f243317e845e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae865860d86b2764693cf6e37a49c7d97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97\">data_pointer</a> = nullptr</td></tr>\n<tr class=\"separator:ae865860d86b2764693cf6e37a49c7d97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aa3c82472daee6498cab94722d7d43a05\" name=\"aa3c82472daee6498cab94722d7d43a05\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3c82472daee6498cab94722d7d43a05\">&#9670;&nbsp;</a></span>CallbackMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::API::CallbackMotionState::CallbackMotionState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>get_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>set_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1563529ba951ebec065cf23c7f9d6d59\" name=\"a1563529ba951ebec065cf23c7f9d6d59\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1563529ba951ebec065cf23c7f9d6d59\">&#9670;&nbsp;</a></span>~CallbackMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Physics::API::CallbackMotionState::~CallbackMotionState </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3c4651578a5cc3573ddf5dad03eb305f\" name=\"a3c4651578a5cc3573ddf5dad03eb305f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c4651578a5cc3573ddf5dad03eb305f\">&#9670;&nbsp;</a></span>getWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::API::CallbackMotionState::getWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>world_transform</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4cd905f3f85673090c5cd67957a8307\" name=\"aa4cd905f3f85673090c5cd67957a8307\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4cd905f3f85673090c5cd67957a8307\">&#9670;&nbsp;</a></span>SetTransformCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::CallbackMotionState::SetTransformCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*)(void *)&#160;</td>\n          <td class=\"paramname\"><em>get_transform_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;)&#160;</td>\n          <td class=\"paramname\"><em>set_transform_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a813941aee5728ff97d671972b1b180b7\" name=\"a813941aee5728ff97d671972b1b180b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a813941aee5728ff97d671972b1b180b7\">&#9670;&nbsp;</a></span>setWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::API::CallbackMotionState::setWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>world_transform</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae865860d86b2764693cf6e37a49c7d97\" name=\"ae865860d86b2764693cf6e37a49c7d97\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae865860d86b2764693cf6e37a49c7d97\">&#9670;&nbsp;</a></span>data_pointer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Physics::API::CallbackMotionState::data_pointer = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab97d0dfa12197e6fa79055fd3bfc57ba\" name=\"ab97d0dfa12197e6fa79055fd3bfc57ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab97d0dfa12197e6fa79055fd3bfc57ba\">&#9670;&nbsp;</a></span>get_transform_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(* tram::Physics::API::CallbackMotionState::get_transform_callback) (void *) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2374bce1a3ea318d53f293d90231d431\" name=\"a2374bce1a3ea318d53f293d90231d431\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2374bce1a3ea318d53f293d90231d431\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::API::CallbackMotionState::position</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8eb70310ddfbbf5915e9f243317e845e\" name=\"a8eb70310ddfbbf5915e9f243317e845e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8eb70310ddfbbf5915e9f243317e845e\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Physics::API::CallbackMotionState::rotation</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af92a134178d01636e1b003a46daafdda\" name=\"af92a134178d01636e1b003a46daafdda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af92a134178d01636e1b003a46daafdda\">&#9670;&nbsp;</a></span>set_transform_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Physics::API::CallbackMotionState::set_transform_callback) (void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"bullet_8cpp.html\">bullet.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::PhysicsDebugDraw Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">draw3dText</a>(const btVector3 &amp;location, const char *textString)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">drawContactPoint</a>(const btVector3 &amp;PointOnB, const btVector3 &amp;normalOnB, btScalar distance, int lifeTime, const btVector3 &amp;color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">drawLine</a>(const btVector3 &amp;from, const btVector3 &amp;to, const btVector3 &amp;color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">getDebugMode</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">reportErrorWarning</a>(const char *warningString)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">setDebugMode</a>(int debugMode)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::PhysicsDebugDraw Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::PhysicsDebugDraw Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debugdrawer_8h_source.html\">debugdrawer.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::API::PhysicsDebugDraw:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:afe6a8f72a58739c6ea26e3312b813cdd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">drawContactPoint</a> (const btVector3 &amp;PointOnB, const btVector3 &amp;normalOnB, btScalar distance, int lifeTime, const btVector3 &amp;color)</td></tr>\n<tr class=\"separator:afe6a8f72a58739c6ea26e3312b813cdd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c323eedacd1cf9f7cd2d5c7ef4be405\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">reportErrorWarning</a> (const char *warningString)</td></tr>\n<tr class=\"separator:a0c323eedacd1cf9f7cd2d5c7ef4be405\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abee77254ff778ce50a428302815f0e3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">draw3dText</a> (const btVector3 &amp;location, const char *textString)</td></tr>\n<tr class=\"separator:abee77254ff778ce50a428302815f0e3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77b61272d7ad912dc96eb1b4e721a6b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">setDebugMode</a> (int debugMode)</td></tr>\n<tr class=\"separator:a77b61272d7ad912dc96eb1b4e721a6b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8dfaf1b441990503c10aad22f87cf3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">getDebugMode</a> () const</td></tr>\n<tr class=\"separator:ae8dfaf1b441990503c10aad22f87cf3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adae82b61c61a54f3b62cdd0499b9cb44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">drawLine</a> (const btVector3 &amp;from, const btVector3 &amp;to, const btVector3 &amp;color)</td></tr>\n<tr class=\"separator:adae82b61c61a54f3b62cdd0499b9cb44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"abee77254ff778ce50a428302815f0e3c\" name=\"abee77254ff778ce50a428302815f0e3c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abee77254ff778ce50a428302815f0e3c\">&#9670;&nbsp;</a></span>draw3dText()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PhysicsDebugDraw::draw3dText </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>location</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>textString</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe6a8f72a58739c6ea26e3312b813cdd\" name=\"afe6a8f72a58739c6ea26e3312b813cdd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe6a8f72a58739c6ea26e3312b813cdd\">&#9670;&nbsp;</a></span>drawContactPoint()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PhysicsDebugDraw::drawContactPoint </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>PointOnB</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>normalOnB</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">btScalar&#160;</td>\n          <td class=\"paramname\"><em>distance</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>lifeTime</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adae82b61c61a54f3b62cdd0499b9cb44\" name=\"adae82b61c61a54f3b62cdd0499b9cb44\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adae82b61c61a54f3b62cdd0499b9cb44\">&#9670;&nbsp;</a></span>drawLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PhysicsDebugDraw::drawLine </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae8dfaf1b441990503c10aad22f87cf3f\" name=\"ae8dfaf1b441990503c10aad22f87cf3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8dfaf1b441990503c10aad22f87cf3f\">&#9670;&nbsp;</a></span>getDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Physics::API::PhysicsDebugDraw::getDebugMode </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0c323eedacd1cf9f7cd2d5c7ef4be405\" name=\"a0c323eedacd1cf9f7cd2d5c7ef4be405\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c323eedacd1cf9f7cd2d5c7ef4be405\">&#9670;&nbsp;</a></span>reportErrorWarning()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PhysicsDebugDraw::reportErrorWarning </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>warningString</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77b61272d7ad912dc96eb1b4e721a6b2\" name=\"a77b61272d7ad912dc96eb1b4e721a6b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77b61272d7ad912dc96eb1b4e721a6b2\">&#9670;&nbsp;</a></span>setDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PhysicsDebugDraw::setDebugMode </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>debugMode</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"debugdrawer_8h_source.html\">debugdrawer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_arm_motion_state-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">ArmMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::ArmMotionState Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">arm</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a245dc3bde65f261c04ea5ebc8277ee5e\">ArmMotionState</a>(name_t boneName, AnimationComponent *armature, vec3 bindPos, Entity *entity, PhysicsComponent *physicsComp)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">bone</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#ad291ea6b57bd9c6460582c2e471bea74\">getWorldTransform</a>(btTransform &amp;worldTrans) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">physcomp</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#affbe6e4f2228937340997bbe6fc0d7e5\">setWorldTransform</a>(const btTransform &amp;worldTrans)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a0eed162485f8961f3c7e21d766304e16\">~ArmMotionState</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_arm_motion_state.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::ArmMotionState Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">ArmMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_arm_motion_state-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::ArmMotionState Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"motionstates_8h_source.html\">motionstates.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::ArmMotionState:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_arm_motion_state.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a245dc3bde65f261c04ea5ebc8277ee5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a245dc3bde65f261c04ea5ebc8277ee5e\">ArmMotionState</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> boneName, <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *armature, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> bindPos, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity, <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *physicsComp)</td></tr>\n<tr class=\"separator:a245dc3bde65f261c04ea5ebc8277ee5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0eed162485f8961f3c7e21d766304e16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a0eed162485f8961f3c7e21d766304e16\">~ArmMotionState</a> ()</td></tr>\n<tr class=\"separator:a0eed162485f8961f3c7e21d766304e16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad291ea6b57bd9c6460582c2e471bea74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#ad291ea6b57bd9c6460582c2e471bea74\">getWorldTransform</a> (btTransform &amp;worldTrans) const</td></tr>\n<tr class=\"separator:ad291ea6b57bd9c6460582c2e471bea74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:affbe6e4f2228937340997bbe6fc0d7e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#affbe6e4f2228937340997bbe6fc0d7e5\">setWorldTransform</a> (const btTransform &amp;worldTrans)</td></tr>\n<tr class=\"separator:affbe6e4f2228937340997bbe6fc0d7e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a523b27aa4a6455b7fc198d43f8c1bb50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">physcomp</a></td></tr>\n<tr class=\"separator:a523b27aa4a6455b7fc198d43f8c1bb50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ce3ff59dd3cbb38c9c3a3bc58700964\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">arm</a></td></tr>\n<tr class=\"separator:a7ce3ff59dd3cbb38c9c3a3bc58700964\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81249774b021500fda0a930ec4ebcaf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a></td></tr>\n<tr class=\"separator:a81249774b021500fda0a930ec4ebcaf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56994dde3e9b7a0aeabd383bb8892bb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a></td></tr>\n<tr class=\"separator:a56994dde3e9b7a0aeabd383bb8892bb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62a9431d7c75162db55212d5e552a8bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">bone</a></td></tr>\n<tr class=\"separator:a62a9431d7c75162db55212d5e552a8bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a245dc3bde65f261c04ea5ebc8277ee5e\" name=\"a245dc3bde65f261c04ea5ebc8277ee5e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a245dc3bde65f261c04ea5ebc8277ee5e\">&#9670;&nbsp;</a></span>ArmMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::ArmMotionState::ArmMotionState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>boneName</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>armature</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>bindPos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>physicsComp</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0eed162485f8961f3c7e21d766304e16\" name=\"a0eed162485f8961f3c7e21d766304e16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0eed162485f8961f3c7e21d766304e16\">&#9670;&nbsp;</a></span>~ArmMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Physics::ArmMotionState::~ArmMotionState </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad291ea6b57bd9c6460582c2e471bea74\" name=\"ad291ea6b57bd9c6460582c2e471bea74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad291ea6b57bd9c6460582c2e471bea74\">&#9670;&nbsp;</a></span>getWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::ArmMotionState::getWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>worldTrans</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"affbe6e4f2228937340997bbe6fc0d7e5\" name=\"affbe6e4f2228937340997bbe6fc0d7e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#affbe6e4f2228937340997bbe6fc0d7e5\">&#9670;&nbsp;</a></span>setWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::ArmMotionState::setWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>worldTrans</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7ce3ff59dd3cbb38c9c3a3bc58700964\" name=\"a7ce3ff59dd3cbb38c9c3a3bc58700964\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ce3ff59dd3cbb38c9c3a3bc58700964\">&#9670;&nbsp;</a></span>arm</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* tram::Physics::ArmMotionState::arm</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a62a9431d7c75162db55212d5e552a8bf\" name=\"a62a9431d7c75162db55212d5e552a8bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62a9431d7c75162db55212d5e552a8bf\">&#9670;&nbsp;</a></span>bone</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Physics::ArmMotionState::bone</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81249774b021500fda0a930ec4ebcaf4\" name=\"a81249774b021500fda0a930ec4ebcaf4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81249774b021500fda0a930ec4ebcaf4\">&#9670;&nbsp;</a></span>ent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a>* tram::Physics::ArmMotionState::ent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56994dde3e9b7a0aeabd383bb8892bb9\" name=\"a56994dde3e9b7a0aeabd383bb8892bb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56994dde3e9b7a0aeabd383bb8892bb9\">&#9670;&nbsp;</a></span>offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::ArmMotionState::offset</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a523b27aa4a6455b7fc198d43f8c1bb50\" name=\"a523b27aa4a6455b7fc198d43f8c1bb50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a523b27aa4a6455b7fc198d43f8c1bb50\">&#9670;&nbsp;</a></span>physcomp</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* tram::Physics::ArmMotionState::physcomp</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"motionstates_8h_source.html\">motionstates.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_collision_model-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionModel Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">CollisionModel</a>(name_t mName)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">Find</a>(name_t model_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">GetShape</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">shape</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_collision_model.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::CollisionModel Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_collision_model-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionModel Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model.  \n <a href=\"classtram_1_1_physics_1_1_collision_model.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"collisionmodel_8h_source.html\">physics/collisionmodel.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::CollisionModel:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_collision_model.png\" usemap=\"#tram::Physics::CollisionModel_map\" alt=\"\"/>\n  <map id=\"tram::Physics::CollisionModel_map\" name=\"tram::Physics::CollisionModel_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,175,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae85bad411b05db1eaa6ce1dc585c3dbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">CollisionModel</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> mName)</td></tr>\n<tr class=\"separator:ae85bad411b05db1eaa6ce1dc585c3dbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89325e4cec53a937d5f189701505344e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:a89325e4cec53a937d5f189701505344e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads the collision model from disk.  <a href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">More...</a><br /></td></tr>\n<tr class=\"separator:a89325e4cec53a937d5f189701505344e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d4b731dbae6f63ce4f665ccd60a94e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:a2d4b731dbae6f63ce4f665ccd60a94e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f20c343448ae313aea88be28784704c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">Unload</a> ()</td></tr>\n<tr class=\"separator:a2f20c343448ae313aea88be28784704c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f42c4b06373d96f98faffedc3e5c098\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">GetShape</a> ()</td></tr>\n<tr class=\"separator:a4f42c4b06373d96f98faffedc3e5c098\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:af125ec91786a3422e236709fb2ee72da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> model_name)</td></tr>\n<tr class=\"memdesc:af125ec91786a3422e236709fb2ee72da\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a model.  <a href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">More...</a><br /></td></tr>\n<tr class=\"separator:af125ec91786a3422e236709fb2ee72da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a1e1df5d474c902a9043f7c2c3f5526bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">shape</a></td></tr>\n<tr class=\"separator:a1e1df5d474c902a9043f7c2c3f5526bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/physics/collisionmodel.html\">https://racenis.github.io/tram-sdk/documentation/physics/collisionmodel.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae85bad411b05db1eaa6ce1dc585c3dbc\" name=\"ae85bad411b05db1eaa6ce1dc585c3dbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae85bad411b05db1eaa6ce1dc585c3dbc\">&#9670;&nbsp;</a></span>CollisionModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::CollisionModel::CollisionModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>mName</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"af125ec91786a3422e236709fb2ee72da\" name=\"af125ec91786a3422e236709fb2ee72da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af125ec91786a3422e236709fb2ee72da\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a> * tram::Physics::CollisionModel::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>model_name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a model. </p>\n<p >Will either return a pointer to a model that already exists with that name, or will create a new one. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always will return a pointer to a <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\" title=\"Physics CollisionShape model.\">CollisionModel</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a4f42c4b06373d96f98faffedc3e5c098\" name=\"a4f42c4b06373d96f98faffedc3e5c098\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f42c4b06373d96f98faffedc3e5c098\">&#9670;&nbsp;</a></span>GetShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> tram::Physics::CollisionModel::GetShape </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a89325e4cec53a937d5f189701505344e\" name=\"a89325e4cec53a937d5f189701505344e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89325e4cec53a937d5f189701505344e\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::CollisionModel::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads the collision model from disk. </p>\n<p >If the collision model file can't be found, the model will be replaced with a 25cm wide cube. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a2d4b731dbae6f63ce4f665ccd60a94e0\" name=\"a2d4b731dbae6f63ce4f665ccd60a94e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d4b731dbae6f63ce4f665ccd60a94e0\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::CollisionModel::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a2f20c343448ae313aea88be28784704c\" name=\"a2f20c343448ae313aea88be28784704c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f20c343448ae313aea88be28784704c\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::CollisionModel::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a1e1df5d474c902a9043f7c2c3f5526bd\" name=\"a1e1df5d474c902a9043f7c2c3f5526bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e1df5d474c902a9043f7c2c3f5526bd\">&#9670;&nbsp;</a></span>shape</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> tram::Physics::CollisionModel::shape</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"collisionmodel_8h_source.html\">collisionmodel.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"collisionmodel_8cpp.html\">collisionmodel.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_ent_motion_state-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">EntMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::EntMotionState Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#ac1d9679f3a981b1a1512fbd9409237f0\">EntMotionState</a>(Entity *ent, vec3 &amp;offset)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a301202b06f3f2d999dbdd8de74d3f377\">getWorldTransform</a>(btTransform &amp;worldTrans) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#af8617191f45630ed9bcac58ae35ea973\">SetEntity</a>(Entity *ent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a33f1c19aef2137678bc1a4b4200a71ee\">setWorldTransform</a>(const btTransform &amp;worldTrans)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a99af4caf635abbc433a4548e7f743039\">~EntMotionState</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_ent_motion_state.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::EntMotionState Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">EntMotionState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_ent_motion_state-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::EntMotionState Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"motionstates_8h_source.html\">motionstates.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::EntMotionState:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_ent_motion_state.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac1d9679f3a981b1a1512fbd9409237f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#ac1d9679f3a981b1a1512fbd9409237f0\">EntMotionState</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *ent, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;offset)</td></tr>\n<tr class=\"separator:ac1d9679f3a981b1a1512fbd9409237f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99af4caf635abbc433a4548e7f743039\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a99af4caf635abbc433a4548e7f743039\">~EntMotionState</a> ()</td></tr>\n<tr class=\"separator:a99af4caf635abbc433a4548e7f743039\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8617191f45630ed9bcac58ae35ea973\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#af8617191f45630ed9bcac58ae35ea973\">SetEntity</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *ent)</td></tr>\n<tr class=\"separator:af8617191f45630ed9bcac58ae35ea973\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a301202b06f3f2d999dbdd8de74d3f377\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a301202b06f3f2d999dbdd8de74d3f377\">getWorldTransform</a> (btTransform &amp;worldTrans) const</td></tr>\n<tr class=\"separator:a301202b06f3f2d999dbdd8de74d3f377\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33f1c19aef2137678bc1a4b4200a71ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a33f1c19aef2137678bc1a4b4200a71ee\">setWorldTransform</a> (const btTransform &amp;worldTrans)</td></tr>\n<tr class=\"separator:a33f1c19aef2137678bc1a4b4200a71ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7c4b97af17f8c290e6099e651fc883a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> = nullptr</td></tr>\n<tr class=\"separator:a7c4b97af17f8c290e6099e651fc883a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34c0d3990c5235ce706525d124cfcd98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a></td></tr>\n<tr class=\"separator:a34c0d3990c5235ce706525d124cfcd98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac1d9679f3a981b1a1512fbd9409237f0\" name=\"ac1d9679f3a981b1a1512fbd9409237f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1d9679f3a981b1a1512fbd9409237f0\">&#9670;&nbsp;</a></span>EntMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::EntMotionState::EntMotionState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>ent</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>offset</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a99af4caf635abbc433a4548e7f743039\" name=\"a99af4caf635abbc433a4548e7f743039\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99af4caf635abbc433a4548e7f743039\">&#9670;&nbsp;</a></span>~EntMotionState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Physics::EntMotionState::~EntMotionState </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a301202b06f3f2d999dbdd8de74d3f377\" name=\"a301202b06f3f2d999dbdd8de74d3f377\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a301202b06f3f2d999dbdd8de74d3f377\">&#9670;&nbsp;</a></span>getWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::EntMotionState::getWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>worldTrans</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8617191f45630ed9bcac58ae35ea973\" name=\"af8617191f45630ed9bcac58ae35ea973\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8617191f45630ed9bcac58ae35ea973\">&#9670;&nbsp;</a></span>SetEntity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::EntMotionState::SetEntity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>ent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33f1c19aef2137678bc1a4b4200a71ee\" name=\"a33f1c19aef2137678bc1a4b4200a71ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33f1c19aef2137678bc1a4b4200a71ee\">&#9670;&nbsp;</a></span>setWorldTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::EntMotionState::setWorldTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btTransform &amp;&#160;</td>\n          <td class=\"paramname\"><em>worldTrans</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7c4b97af17f8c290e6099e651fc883a3\" name=\"a7c4b97af17f8c290e6099e651fc883a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c4b97af17f8c290e6099e651fc883a3\">&#9670;&nbsp;</a></span>entity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a>* tram::Physics::EntMotionState::entity = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a34c0d3990c5235ce706525d124cfcd98\" name=\"a34c0d3990c5235ce706525d124cfcd98\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34c0d3990c5235ce706525d124cfcd98\">&#9670;&nbsp;</a></span>troffse</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::EntMotionState::troffse</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"motionstates_8h_source.html\">motionstates.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_path_action-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">PathAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::PathAction Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">debugDraw</a>(btIDebugDraw *debugDrawer)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">PathAction</a>(PhysicsComponent *physComponent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">updateAction</a>(btCollisionWorld *collisionWorld, btScalar deltaTimeStep)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_path_action.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::PathAction Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">PathAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_path_action-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::PathAction Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"actions_8h_source.html\">actions.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::PathAction:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_path_action.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a22e23ed7cfd09968f5bc0663befd1d9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">PathAction</a> (<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *physComponent)</td></tr>\n<tr class=\"separator:a22e23ed7cfd09968f5bc0663befd1d9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41ae4385e939b2c9eca055424032d050\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">updateAction</a> (btCollisionWorld *collisionWorld, btScalar deltaTimeStep)</td></tr>\n<tr class=\"separator:a41ae4385e939b2c9eca055424032d050\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8dce3b286d6b2e756a8b9890bf9d9992\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">debugDraw</a> (btIDebugDraw *debugDrawer)</td></tr>\n<tr class=\"separator:a8dce3b286d6b2e756a8b9890bf9d9992\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000002\">Todo:</a></b></dt><dd>finish!!! </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a22e23ed7cfd09968f5bc0663befd1d9c\" name=\"a22e23ed7cfd09968f5bc0663befd1d9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22e23ed7cfd09968f5bc0663befd1d9c\">&#9670;&nbsp;</a></span>PathAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::PathAction::PathAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>physComponent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a8dce3b286d6b2e756a8b9890bf9d9992\" name=\"a8dce3b286d6b2e756a8b9890bf9d9992\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8dce3b286d6b2e756a8b9890bf9d9992\">&#9670;&nbsp;</a></span>debugDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::PathAction::debugDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">btIDebugDraw *&#160;</td>\n          <td class=\"paramname\"><em>debugDrawer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a41ae4385e939b2c9eca055424032d050\" name=\"a41ae4385e939b2c9eca055424032d050\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41ae4385e939b2c9eca055424032d050\">&#9670;&nbsp;</a></span>updateAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Physics::PathAction::updateAction </td>\n          <td>(</td>\n          <td class=\"paramtype\">btCollisionWorld *&#160;</td>\n          <td class=\"paramname\"><em>collisionWorld</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">btScalar&#160;</td>\n          <td class=\"paramname\"><em>deltaTimeStep</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"actions_8h_source.html\">actions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_physics_debug_draw-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::PhysicsDebugDraw Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#ab916a53cd32be12de77ab3e389fefaf5\">draw3dText</a>(const btVector3 &amp;location, const char *textString)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a922a11431e3bc867921e53429b2f9d7c\">drawContactPoint</a>(const btVector3 &amp;PointOnB, const btVector3 &amp;normalOnB, btScalar distance, int lifeTime, const btVector3 &amp;color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a48a881a68216bf064636533f72bb5f2f\">drawLine</a>(const btVector3 &amp;from, const btVector3 &amp;to, const btVector3 &amp;color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a6431acaeffdb8405ce598be74070cdbe\">getDebugMode</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#ad38747bc239a28e4379009f309f19117\">reportErrorWarning</a>(const char *warningString)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a569b94897deb092ca2774a6a3d3e1801\">setDebugMode</a>(int debugMode)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">tram::Physics::PhysicsDebugDraw</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_1_1_physics_debug_draw.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::PhysicsDebugDraw Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_physics_1_1_physics_debug_draw-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::PhysicsDebugDraw Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"debugdrawer_8h_source.html\">debugdrawer.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::PhysicsDebugDraw:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_1_1_physics_debug_draw.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a922a11431e3bc867921e53429b2f9d7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a922a11431e3bc867921e53429b2f9d7c\">drawContactPoint</a> (const btVector3 &amp;PointOnB, const btVector3 &amp;normalOnB, btScalar distance, int lifeTime, const btVector3 &amp;color)</td></tr>\n<tr class=\"separator:a922a11431e3bc867921e53429b2f9d7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad38747bc239a28e4379009f309f19117\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#ad38747bc239a28e4379009f309f19117\">reportErrorWarning</a> (const char *warningString)</td></tr>\n<tr class=\"separator:ad38747bc239a28e4379009f309f19117\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab916a53cd32be12de77ab3e389fefaf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#ab916a53cd32be12de77ab3e389fefaf5\">draw3dText</a> (const btVector3 &amp;location, const char *textString)</td></tr>\n<tr class=\"separator:ab916a53cd32be12de77ab3e389fefaf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a569b94897deb092ca2774a6a3d3e1801\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a569b94897deb092ca2774a6a3d3e1801\">setDebugMode</a> (int debugMode)</td></tr>\n<tr class=\"separator:a569b94897deb092ca2774a6a3d3e1801\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6431acaeffdb8405ce598be74070cdbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a6431acaeffdb8405ce598be74070cdbe\">getDebugMode</a> () const</td></tr>\n<tr class=\"separator:a6431acaeffdb8405ce598be74070cdbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48a881a68216bf064636533f72bb5f2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_physics_debug_draw.html#a48a881a68216bf064636533f72bb5f2f\">drawLine</a> (const btVector3 &amp;from, const btVector3 &amp;to, const btVector3 &amp;color)</td></tr>\n<tr class=\"separator:a48a881a68216bf064636533f72bb5f2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab916a53cd32be12de77ab3e389fefaf5\" name=\"ab916a53cd32be12de77ab3e389fefaf5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab916a53cd32be12de77ab3e389fefaf5\">&#9670;&nbsp;</a></span>draw3dText()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::PhysicsDebugDraw::draw3dText </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>location</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>textString</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a922a11431e3bc867921e53429b2f9d7c\" name=\"a922a11431e3bc867921e53429b2f9d7c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a922a11431e3bc867921e53429b2f9d7c\">&#9670;&nbsp;</a></span>drawContactPoint()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::PhysicsDebugDraw::drawContactPoint </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>PointOnB</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>normalOnB</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">btScalar&#160;</td>\n          <td class=\"paramname\"><em>distance</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>lifeTime</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48a881a68216bf064636533f72bb5f2f\" name=\"a48a881a68216bf064636533f72bb5f2f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48a881a68216bf064636533f72bb5f2f\">&#9670;&nbsp;</a></span>drawLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::PhysicsDebugDraw::drawLine </td>\n          <td>(</td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btVector3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6431acaeffdb8405ce598be74070cdbe\" name=\"a6431acaeffdb8405ce598be74070cdbe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6431acaeffdb8405ce598be74070cdbe\">&#9670;&nbsp;</a></span>getDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Physics::PhysicsDebugDraw::getDebugMode </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad38747bc239a28e4379009f309f19117\" name=\"ad38747bc239a28e4379009f309f19117\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad38747bc239a28e4379009f309f19117\">&#9670;&nbsp;</a></span>reportErrorWarning()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::PhysicsDebugDraw::reportErrorWarning </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>warningString</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a569b94897deb092ca2774a6a3d3e1801\" name=\"a569b94897deb092ca2774a6a3d3e1801\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a569b94897deb092ca2774a6a3d3e1801\">&#9670;&nbsp;</a></span>setDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::PhysicsDebugDraw::setDebugMode </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>debugMode</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"debugdrawer_8h_source.html\">debugdrawer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PhysicsComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">Awaken</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">DisableDeactivation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">GetCollisionGroup</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">GetCollisionMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">GetModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">GetVelocity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">PhysicsComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">Push</a>(vec3 direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#af5569e651b77b56a659f4b3a988f04b1\">Push</a>(vec3 direction, vec3 local_position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">SetAngularFactor</a>(vec3 factor)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">SetCollisionGroup</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">SetCollisionMask</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">SetDebugDrawing</a>(bool drawing)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">SetKinematic</a>(bool kinematic)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">SetLinearFactor</a>(vec3 factor)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">SetMass</a>(float mass)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">SetModel</a>(name_t model)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">SetRotation</a>(quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">SetShape</a>(Physics::CollisionShape shape)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">SetUpdateParentTransform</a>(bool update)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">SetVelocity</a>(const vec3 &amp;velocity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">Sleep</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">Spin</a>(vec3 direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">~PhysicsComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_physics_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PhysicsComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_physics_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PhysicsComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Rigidbody wrapper.  \n <a href=\"classtram_1_1_physics_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::PhysicsComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_physics_component.png\" usemap=\"#tram::PhysicsComponent_map\" alt=\"\"/>\n  <map id=\"tram::PhysicsComponent_map\" name=\"tram::PhysicsComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,149,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae945e9f6b3d40e2fd3764a6f9ccd8f3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">PhysicsComponent</a> ()</td></tr>\n<tr class=\"separator:ae945e9f6b3d40e2fd3764a6f9ccd8f3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4669765afef6e232241d24959bf6a3ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">~PhysicsComponent</a> ()</td></tr>\n<tr class=\"separator:a4669765afef6e232241d24959bf6a3ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60cc1624fa5521dfcd05449e99a123d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a60cc1624fa5521dfcd05449e99a123d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79d8c1c7d1a2df6937ac901532c880b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">Start</a> ()</td></tr>\n<tr class=\"separator:a79d8c1c7d1a2df6937ac901532c880b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9c6e58635ec55d523a23a0f70f8216d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">GetModel</a> ()</td></tr>\n<tr class=\"memdesc:af9c6e58635ec55d523a23a0f70f8216d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the name of the collision model.  <a href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">More...</a><br /></td></tr>\n<tr class=\"separator:af9c6e58635ec55d523a23a0f70f8216d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acceb6cafd1dd8635ed56ec71a1c61f85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">SetModel</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> model)</td></tr>\n<tr class=\"memdesc:acceb6cafd1dd8635ed56ec71a1c61f85\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the collision model.  <a href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">More...</a><br /></td></tr>\n<tr class=\"separator:acceb6cafd1dd8635ed56ec71a1c61f85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2431ad05061b3ead05fc896aa78fa8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">SetMass</a> (float mass)</td></tr>\n<tr class=\"memdesc:ae2431ad05061b3ead05fc896aa78fa8b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the mass of the physics object.  <a href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">More...</a><br /></td></tr>\n<tr class=\"separator:ae2431ad05061b3ead05fc896aa78fa8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0956a47778936024e1d1b245728a680c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">SetShape</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a> shape)</td></tr>\n<tr class=\"memdesc:a0956a47778936024e1d1b245728a680c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the collision shape of the physics object.  <a href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">More...</a><br /></td></tr>\n<tr class=\"separator:a0956a47778936024e1d1b245728a680c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a056cae53c34b56b074f364251ca545e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">Push</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction)</td></tr>\n<tr class=\"memdesc:a056cae53c34b56b074f364251ca545e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes the physics object.  <a href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">More...</a><br /></td></tr>\n<tr class=\"separator:a056cae53c34b56b074f364251ca545e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5569e651b77b56a659f4b3a988f04b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#af5569e651b77b56a659f4b3a988f04b1\">Push</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_position)</td></tr>\n<tr class=\"separator:af5569e651b77b56a659f4b3a988f04b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39981bb11f6e8eb4dcce36f4c380ebec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">Spin</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction)</td></tr>\n<tr class=\"separator:a39981bb11f6e8eb4dcce36f4c380ebec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02d7278815c993d0c267002740e2cc10\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">SetCollisionMask</a> (uint32_t flags)</td></tr>\n<tr class=\"memdesc:a02d7278815c993d0c267002740e2cc10\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the collision mask of the physics object.  <a href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">More...</a><br /></td></tr>\n<tr class=\"separator:a02d7278815c993d0c267002740e2cc10\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62ca80aadcd392cc94243f1a42d1b06e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">SetCollisionGroup</a> (uint32_t flags)</td></tr>\n<tr class=\"memdesc:a62ca80aadcd392cc94243f1a42d1b06e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the collision group of the physics object.  <a href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">More...</a><br /></td></tr>\n<tr class=\"separator:a62ca80aadcd392cc94243f1a42d1b06e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d048406bb6f934d3167d046cf23d42a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">GetCollisionMask</a> ()</td></tr>\n<tr class=\"memdesc:a6d048406bb6f934d3167d046cf23d42a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the collision mask.  <a href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">More...</a><br /></td></tr>\n<tr class=\"separator:a6d048406bb6f934d3167d046cf23d42a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0797c00f3d5e3a0ccb35da8b3ac42b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">GetCollisionGroup</a> ()</td></tr>\n<tr class=\"memdesc:aa0797c00f3d5e3a0ccb35da8b3ac42b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the collision group.  <a href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">More...</a><br /></td></tr>\n<tr class=\"separator:aa0797c00f3d5e3a0ccb35da8b3ac42b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa352025ec22ad95c90b1b4055eaca758\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">SetDebugDrawing</a> (bool drawing)</td></tr>\n<tr class=\"memdesc:aa352025ec22ad95c90b1b4055eaca758\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the debug drawing of a physics object.  <a href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">More...</a><br /></td></tr>\n<tr class=\"separator:aa352025ec22ad95c90b1b4055eaca758\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80d73825a4421015c00f3fe968b6b090\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">SetKinematic</a> (bool kinematic)</td></tr>\n<tr class=\"memdesc:a80d73825a4421015c00f3fe968b6b090\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the physics object to kinematic.  <a href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">More...</a><br /></td></tr>\n<tr class=\"separator:a80d73825a4421015c00f3fe968b6b090\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a84053f86862350a329a1607c62f9a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">SetUpdateParentTransform</a> (bool update)</td></tr>\n<tr class=\"memdesc:a1a84053f86862350a329a1607c62f9a7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets whether the movement of the rigibody should update parent <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>'s transform.  <a href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">More...</a><br /></td></tr>\n<tr class=\"separator:a1a84053f86862350a329a1607c62f9a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a012cb69d2fc0bc2dedacd198e2de04dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"memdesc:a012cb69d2fc0bc2dedacd198e2de04dc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the rotation of the physics object.  <a href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">More...</a><br /></td></tr>\n<tr class=\"separator:a012cb69d2fc0bc2dedacd198e2de04dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a619f8a0efc2df26aaed1e5ef2e541b0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"memdesc:a619f8a0efc2df26aaed1e5ef2e541b0a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of the physics object.  <a href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a619f8a0efc2df26aaed1e5ef2e541b0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acad64c1b68c2f78fa2febef09e8f393a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">DisableDeactivation</a> ()</td></tr>\n<tr class=\"memdesc:acad64c1b68c2f78fa2febef09e8f393a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Disables deactivation of the object.  <a href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">More...</a><br /></td></tr>\n<tr class=\"separator:acad64c1b68c2f78fa2febef09e8f393a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa05aa42d0ba5486d18a5c6951c2dcf7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">Awaken</a> ()</td></tr>\n<tr class=\"memdesc:aa05aa42d0ba5486d18a5c6951c2dcf7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Awakens the object.  <a href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">More...</a><br /></td></tr>\n<tr class=\"separator:aa05aa42d0ba5486d18a5c6951c2dcf7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8901baef618e56f57553d613bc8af2cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">Sleep</a> ()</td></tr>\n<tr class=\"memdesc:a8901baef618e56f57553d613bc8af2cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Puts the object to sleep.  <a href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a8901baef618e56f57553d613bc8af2cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a7c6f98fc1ff033c6988c35bc14c999\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">SetAngularFactor</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor)</td></tr>\n<tr class=\"memdesc:a4a7c6f98fc1ff033c6988c35bc14c999\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the angular factor of the physics object.  <a href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">More...</a><br /></td></tr>\n<tr class=\"separator:a4a7c6f98fc1ff033c6988c35bc14c999\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf3bcc38317375d73fd6b7b426aaedc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">SetLinearFactor</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor)</td></tr>\n<tr class=\"memdesc:aaf3bcc38317375d73fd6b7b426aaedc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the angular factor of the physics object.  <a href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf3bcc38317375d73fd6b7b426aaedc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8570e4138cdd40ea3547017f2fff1394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">SetVelocity</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;velocity)</td></tr>\n<tr class=\"memdesc:a8570e4138cdd40ea3547017f2fff1394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of the physics object.  <a href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">More...</a><br /></td></tr>\n<tr class=\"separator:a8570e4138cdd40ea3547017f2fff1394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61fef009717a9e4724dee61359319094\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">GetVelocity</a> ()</td></tr>\n<tr class=\"memdesc:a61fef009717a9e4724dee61359319094\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the velocity of the physics object.  <a href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">More...</a><br /></td></tr>\n<tr class=\"separator:a61fef009717a9e4724dee61359319094\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Rigidbody wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/physics.html\">https://racenis.github.io/tram-sdk/documentation/components/physics.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae945e9f6b3d40e2fd3764a6f9ccd8f3d\" name=\"ae945e9f6b3d40e2fd3764a6f9ccd8f3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">&#9670;&nbsp;</a></span>PhysicsComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::PhysicsComponent::PhysicsComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4669765afef6e232241d24959bf6a3ba\" name=\"a4669765afef6e232241d24959bf6a3ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4669765afef6e232241d24959bf6a3ba\">&#9670;&nbsp;</a></span>~PhysicsComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::PhysicsComponent::~PhysicsComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa05aa42d0ba5486d18a5c6951c2dcf7a\" name=\"aa05aa42d0ba5486d18a5c6951c2dcf7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa05aa42d0ba5486d18a5c6951c2dcf7a\">&#9670;&nbsp;</a></span>Awaken()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Awaken </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Awakens the object. </p>\n\n</div>\n</div>\n<a id=\"acad64c1b68c2f78fa2febef09e8f393a\" name=\"acad64c1b68c2f78fa2febef09e8f393a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acad64c1b68c2f78fa2febef09e8f393a\">&#9670;&nbsp;</a></span>DisableDeactivation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::DisableDeactivation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Disables deactivation of the object. </p>\n<p >This makes the object to never fall asleep. </p>\n\n</div>\n</div>\n<a id=\"a60cc1624fa5521dfcd05449e99a123d8\" name=\"a60cc1624fa5521dfcd05449e99a123d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60cc1624fa5521dfcd05449e99a123d8\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"aa0797c00f3d5e3a0ccb35da8b3ac42b2\" name=\"aa0797c00f3d5e3a0ccb35da8b3ac42b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">&#9670;&nbsp;</a></span>GetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::PhysicsComponent::GetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the collision group. </p>\n<p >See <a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\" title=\"Sets the collision group of the physics object.\">SetCollisionGroup()</a> for more information. </p>\n\n</div>\n</div>\n<a id=\"a6d048406bb6f934d3167d046cf23d42a\" name=\"a6d048406bb6f934d3167d046cf23d42a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d048406bb6f934d3167d046cf23d42a\">&#9670;&nbsp;</a></span>GetCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::PhysicsComponent::GetCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the collision mask. </p>\n<p >See <a class=\"el\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\" title=\"Sets the collision mask of the physics object.\">SetCollisionMask()</a> for more information. </p>\n\n</div>\n</div>\n<a id=\"af9c6e58635ec55d523a23a0f70f8216d\" name=\"af9c6e58635ec55d523a23a0f70f8216d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9c6e58635ec55d523a23a0f70f8216d\">&#9670;&nbsp;</a></span>GetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::PhysicsComponent::GetModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the name of the collision model. </p>\n\n</div>\n</div>\n<a id=\"a61fef009717a9e4724dee61359319094\" name=\"a61fef009717a9e4724dee61359319094\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61fef009717a9e4724dee61359319094\">&#9670;&nbsp;</a></span>GetVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::PhysicsComponent::GetVelocity </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the velocity of the physics object. </p>\n<p >Always returns zero velocity if component is not loaded. </p>\n\n</div>\n</div>\n<a id=\"a056cae53c34b56b074f364251ca545e4\" name=\"a056cae53c34b56b074f364251ca545e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a056cae53c34b56b074f364251ca545e4\">&#9670;&nbsp;</a></span>Push() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pushes the physics object. </p>\n<p >I have no idea what the units are. Direction of direction is the direction into which the object will be pushed and the length of the vector is the force of the push. </p>\n\n</div>\n</div>\n<a id=\"af5569e651b77b56a659f4b3a988f04b1\" name=\"af5569e651b77b56a659f4b3a988f04b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5569e651b77b56a659f4b3a988f04b1\">&#9670;&nbsp;</a></span>Push() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>local_position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a7c6f98fc1ff033c6988c35bc14c999\" name=\"a4a7c6f98fc1ff033c6988c35bc14c999\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a7c6f98fc1ff033c6988c35bc14c999\">&#9670;&nbsp;</a></span>SetAngularFactor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetAngularFactor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>factor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the angular factor of the physics object. </p>\n<p >Changes how much the object will rotate around the x, y, z axes. Can be used to restrict rotation around certain axes. </p>\n\n</div>\n</div>\n<a id=\"a62ca80aadcd392cc94243f1a42d1b06e\" name=\"a62ca80aadcd392cc94243f1a42d1b06e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62ca80aadcd392cc94243f1a42d1b06e\">&#9670;&nbsp;</a></span>SetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the collision group of the physics object. </p>\n<p >Collision group is a bitmask. A physics object will only collide with an another object if their collision group and collision mask bitmasks have at least one bit in common, i.e. they will be bitwise and'ed together. </p>\n\n</div>\n</div>\n<a id=\"a02d7278815c993d0c267002740e2cc10\" name=\"a02d7278815c993d0c267002740e2cc10\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02d7278815c993d0c267002740e2cc10\">&#9670;&nbsp;</a></span>SetCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the collision mask of the physics object. </p>\n<p >Collision mask is a bitmask. A physics object will only collide with an another object if their collision group and collision mask bitmasks have at least one bit in common, i.e. they will be bitwise and'ed together. </p>\n\n</div>\n</div>\n<a id=\"aa352025ec22ad95c90b1b4055eaca758\" name=\"aa352025ec22ad95c90b1b4055eaca758\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa352025ec22ad95c90b1b4055eaca758\">&#9670;&nbsp;</a></span>SetDebugDrawing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetDebugDrawing </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>drawing</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the debug drawing of a physics object. </p>\n<p >Set to false, if you don't want the physics object to show up when drawing physics debug. </p>\n\n</div>\n</div>\n<a id=\"a80d73825a4421015c00f3fe968b6b090\" name=\"a80d73825a4421015c00f3fe968b6b090\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80d73825a4421015c00f3fe968b6b090\">&#9670;&nbsp;</a></span>SetKinematic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetKinematic </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>kinematic</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the physics object to kinematic. </p>\n<p >If set to kinematic, then the physics object will poll its parent entity for its position, instead of simulated and pushing its position into its parent entity. </p><dl class=\"section note\"><dt>Note</dt><dd>Use <a class=\"el\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\" title=\"Disables deactivation of the object.\">DisableDeactivation()</a> if you don't want to constantly wake the object up. </dd></dl>\n\n</div>\n</div>\n<a id=\"aaf3bcc38317375d73fd6b7b426aaedc2\" name=\"aaf3bcc38317375d73fd6b7b426aaedc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf3bcc38317375d73fd6b7b426aaedc2\">&#9670;&nbsp;</a></span>SetLinearFactor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetLinearFactor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>factor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the angular factor of the physics object. </p>\n<p >Changes how much the object will move along the x, y, z axes. Can be used to restrict movement along certain axes. </p>\n\n</div>\n</div>\n<a id=\"a619f8a0efc2df26aaed1e5ef2e541b0a\" name=\"a619f8a0efc2df26aaed1e5ef2e541b0a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a619f8a0efc2df26aaed1e5ef2e541b0a\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the position of the physics object. </p>\n\n</div>\n</div>\n<a id=\"ae2431ad05061b3ead05fc896aa78fa8b\" name=\"ae2431ad05061b3ead05fc896aa78fa8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2431ad05061b3ead05fc896aa78fa8b\">&#9670;&nbsp;</a></span>SetMass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetMass </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>mass</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the mass of the physics object. </p>\n<p >Mass specified in kilograms. If the mass is set to 0, then it's assumed to be infinite, and the object will become static and immovable. </p><dl class=\"section note\"><dt>Note</dt><dd>Has no effect after the <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a> is loaded. </dd></dl>\n\n</div>\n</div>\n<a id=\"acceb6cafd1dd8635ed56ec71a1c61f85\" name=\"acceb6cafd1dd8635ed56ec71a1c61f85\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acceb6cafd1dd8635ed56ec71a1c61f85\">&#9670;&nbsp;</a></span>SetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>model</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the collision model. </p>\n\n</div>\n</div>\n<a id=\"a012cb69d2fc0bc2dedacd198e2de04dc\" name=\"a012cb69d2fc0bc2dedacd198e2de04dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a012cb69d2fc0bc2dedacd198e2de04dc\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the rotation of the physics object. </p>\n\n</div>\n</div>\n<a id=\"a0956a47778936024e1d1b245728a680c\" name=\"a0956a47778936024e1d1b245728a680c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0956a47778936024e1d1b245728a680c\">&#9670;&nbsp;</a></span>SetShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetShape </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the collision shape of the physics object. </p>\n\n</div>\n</div>\n<a id=\"a1a84053f86862350a329a1607c62f9a7\" name=\"a1a84053f86862350a329a1607c62f9a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a84053f86862350a329a1607c62f9a7\">&#9670;&nbsp;</a></span>SetUpdateParentTransform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetUpdateParentTransform </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>update</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets whether the movement of the rigibody should update parent <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>'s transform. </p>\n<p >If set to true, then whenever the rigidbody moves, the transform of the parent will be set to the transform of the rigidbody. Otherwise, the parent's transform will remain unaffected. </p><dl class=\"section note\"><dt>Note</dt><dd>This only works if set before the component is initialized. </dd></dl>\n\n</div>\n</div>\n<a id=\"a8570e4138cdd40ea3547017f2fff1394\" name=\"a8570e4138cdd40ea3547017f2fff1394\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8570e4138cdd40ea3547017f2fff1394\">&#9670;&nbsp;</a></span>SetVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::SetVelocity </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>velocity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the velocity of the physics object. </p>\n<p >Only works if is component is loaded. </p>\n\n</div>\n</div>\n<a id=\"a8901baef618e56f57553d613bc8af2cc\" name=\"a8901baef618e56f57553d613bc8af2cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8901baef618e56f57553d613bc8af2cc\">&#9670;&nbsp;</a></span>Sleep()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Sleep </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Puts the object to sleep. </p>\n\n</div>\n</div>\n<a id=\"a39981bb11f6e8eb4dcce36f4c380ebec\" name=\"a39981bb11f6e8eb4dcce36f4c380ebec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39981bb11f6e8eb4dcce36f4c380ebec\">&#9670;&nbsp;</a></span>Spin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Spin </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a79d8c1c7d1a2df6937ac901532c880b2\" name=\"a79d8c1c7d1a2df6937ac901532c880b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79d8c1c7d1a2df6937ac901532c880b2\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PhysicsComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2physics_8h_source.html\">physics.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2physics_8cpp.html\">physics.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_platform_1_1_file_reader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: FileReader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">FileReader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> reading backend API.  \n <a href=\"classtram_1_1_platform_1_1_file_reader.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">platform/file.h</a>&gt;</code></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> reading backend API. </p>\n<p ><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> readers will load a whole file in memory when constructed. This memory is freed when they are destructed, which can be done by calling the <a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">Yeet()</a> method.</p>\n<p ><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> contents can be accessed via GetContents() and GetSize() methods.</p>\n<p >To open a file, call the GetReader() method, it will find search until it finds the file and then return an opened filereader for it. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_platform_1_1_file_writer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: FileWriter Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">FileWriter Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> writing backend API.  \n <a href=\"classtram_1_1_platform_1_1_file_writer.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">platform/file.h</a>&gt;</code></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> writing backend API. </p>\n<p >Works basically the same as <a class=\"el\" href=\"classtram_1_1_platform_1_1_file_reader.html\" title=\"File reading backend API.\">FileReader</a>, except this API is used for writing to files, which can be performed with the SetContents() method. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_player-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Player Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">controllercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">physics_body</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">Player</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a96db3f6f72ef25251dced6d52448fbe7\">Player</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">plomp</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">SerializeString</a>(std::string &amp;str)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">~Player</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_player.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Player Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_player-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Player Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it.  \n <a href=\"classtram_1_1_player.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_2player_8h_source.html\">entities/player.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Player:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_player.png\" usemap=\"#tram::Player_map\" alt=\"\"/>\n  <map id=\"tram::Player_map\" name=\"tram::Player_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,79,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a54576337a20fd6e5f753a1e9716900b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">Player</a> ()</td></tr>\n<tr class=\"memdesc:a54576337a20fd6e5f753a1e9716900b7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a new player.  <a href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">More...</a><br /></td></tr>\n<tr class=\"separator:a54576337a20fd6e5f753a1e9716900b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96db3f6f72ef25251dced6d52448fbe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a96db3f6f72ef25251dced6d52448fbe7\">Player</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"memdesc:a96db3f6f72ef25251dced6d52448fbe7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a player with a custom name.  <a href=\"classtram_1_1_player.html#a96db3f6f72ef25251dced6d52448fbe7\">More...</a><br /></td></tr>\n<tr class=\"separator:a96db3f6f72ef25251dced6d52448fbe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a751cd1b280c732f44f018c82464badcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">~Player</a> ()</td></tr>\n<tr class=\"separator:a751cd1b280c732f44f018c82464badcc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e5497fa4c5d70508cd8928a625bb2d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a7e5497fa4c5d70508cd8928a625bb2d7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">More...</a><br /></td></tr>\n<tr class=\"separator:a7e5497fa4c5d70508cd8928a625bb2d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afddc1a9d1a0e2a61cc8bb13e210c0643\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:afddc1a9d1a0e2a61cc8bb13e210c0643\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">More...</a><br /></td></tr>\n<tr class=\"separator:afddc1a9d1a0e2a61cc8bb13e210c0643\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abda0826d3fb3a3ef717a4b8704745b61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">Serialize</a> ()</td></tr>\n<tr class=\"separator:abda0826d3fb3a3ef717a4b8704745b61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab33b3c6c47189f920a5d4f0bee78528\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">SerializeString</a> (std::string &amp;str)</td></tr>\n<tr class=\"separator:aab33b3c6c47189f920a5d4f0bee78528\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34cfa479567416e9aa5b3b147b44fdb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a34cfa479567416e9aa5b3b147b44fdb5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">More...</a><br /></td></tr>\n<tr class=\"separator:a34cfa479567416e9aa5b3b147b44fdb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad91ecec5652fba7dc3d061b7823bc699\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ad91ecec5652fba7dc3d061b7823bc699\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">More...</a><br /></td></tr>\n<tr class=\"separator:ad91ecec5652fba7dc3d061b7823bc699\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae00d494c1e34cc0387008e94ac6863a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:ae00d494c1e34cc0387008e94ac6863a2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">More...</a><br /></td></tr>\n<tr class=\"separator:ae00d494c1e34cc0387008e94ac6863a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a805e40469321fb7d6fa1f66d0c0eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:a10a805e40469321fb7d6fa1f66d0c0eb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">More...</a><br /></td></tr>\n<tr class=\"separator:a10a805e40469321fb7d6fa1f66d0c0eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9a9d322035d6f80a89abf2e67337c52e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">controllercomponent</a></td></tr>\n<tr class=\"separator:a9a9d322035d6f80a89abf2e67337c52e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a02a0f79e73da31e380ab604773461b4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">plomp</a></td></tr>\n<tr class=\"separator:a02a0f79e73da31e380ab604773461b4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70d0096e740c70b9d4b2a4d1f567166b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">physics_body</a></td></tr>\n<tr class=\"separator:a70d0096e740c70b9d4b2a4d1f567166b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it. </p>\n<p >Can be used to control a player for a video game, or could be used to simply be able to walk around the virtual world that you have created.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/player.html\">https://racenis.github.io/tram-sdk/documentation/entities/player.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a54576337a20fd6e5f753a1e9716900b7\" name=\"a54576337a20fd6e5f753a1e9716900b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54576337a20fd6e5f753a1e9716900b7\">&#9670;&nbsp;</a></span>Player() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Player::Player </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates a new player. </p>\n\n</div>\n</div>\n<a id=\"a96db3f6f72ef25251dced6d52448fbe7\" name=\"a96db3f6f72ef25251dced6d52448fbe7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96db3f6f72ef25251dced6d52448fbe7\">&#9670;&nbsp;</a></span>Player() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Player::Player </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates a player with a custom name. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">name</td><td>Name of the player. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a751cd1b280c732f44f018c82464badcc\" name=\"a751cd1b280c732f44f018c82464badcc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a751cd1b280c732f44f018c82464badcc\">&#9670;&nbsp;</a></span>~Player()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Player::~Player </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a10a805e40469321fb7d6fa1f66d0c0eb\" name=\"a10a805e40469321fb7d6fa1f66d0c0eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10a805e40469321fb7d6fa1f66d0c0eb\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Player::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a7e5497fa4c5d70508cd8928a625bb2d7\" name=\"a7e5497fa4c5d70508cd8928a625bb2d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e5497fa4c5d70508cd8928a625bb2d7\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae00d494c1e34cc0387008e94ac6863a2\" name=\"ae00d494c1e34cc0387008e94ac6863a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae00d494c1e34cc0387008e94ac6863a2\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"abda0826d3fb3a3ef717a4b8704745b61\" name=\"abda0826d3fb3a3ef717a4b8704745b61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abda0826d3fb3a3ef717a4b8704745b61\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aab33b3c6c47189f920a5d4f0bee78528\" name=\"aab33b3c6c47189f920a5d4f0bee78528\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab33b3c6c47189f920a5d4f0bee78528\">&#9670;&nbsp;</a></span>SerializeString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::SerializeString </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::string &amp;&#160;</td>\n          <td class=\"paramname\"><em>str</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad91ecec5652fba7dc3d061b7823bc699\" name=\"ad91ecec5652fba7dc3d061b7823bc699\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad91ecec5652fba7dc3d061b7823bc699\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afddc1a9d1a0e2a61cc8bb13e210c0643\" name=\"afddc1a9d1a0e2a61cc8bb13e210c0643\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afddc1a9d1a0e2a61cc8bb13e210c0643\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a34cfa479567416e9aa5b3b147b44fdb5\" name=\"a34cfa479567416e9aa5b3b147b44fdb5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34cfa479567416e9aa5b3b147b44fdb5\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Player::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9a9d322035d6f80a89abf2e67337c52e\" name=\"a9a9d322035d6f80a89abf2e67337c52e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a9d322035d6f80a89abf2e67337c52e\">&#9670;&nbsp;</a></span>controllercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a>&gt; tram::Player::controllercomponent</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70d0096e740c70b9d4b2a4d1f567166b\" name=\"a70d0096e740c70b9d4b2a4d1f567166b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70d0096e740c70b9d4b2a4d1f567166b\">&#9670;&nbsp;</a></span>physics_body</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::Player::physics_body</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02a0f79e73da31e380ab604773461b4b\" name=\"a02a0f79e73da31e380ab604773461b4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02a0f79e73da31e380ab604773461b4b\">&#9670;&nbsp;</a></span>plomp</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a>&gt; tram::Player::plomp</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2player_8h_source.html\">player.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2player_8cpp.html\">player.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_player_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PlayerComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">GetDirectionFacing</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">GetLookRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">PlayerComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">SetControllerComponent</a>(ControllerComponent *comp)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">SetKeyboardLook</a>(bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">SetNoclip</a>(bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">~PlayerComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_player_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PlayerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_player_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PlayerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>.  \n <a href=\"classtram_1_1_player_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2player_8h_source.html\">components/player.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::PlayerComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_player_component.png\" usemap=\"#tram::PlayerComponent_map\" alt=\"\"/>\n  <map id=\"tram::PlayerComponent_map\" name=\"tram::PlayerComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,142,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7880e2d2d99db2ebfed2115f3682c4c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a7880e2d2d99db2ebfed2115f3682c4c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afcbc45d601e912238fbe419681db88dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">Init</a> ()</td></tr>\n<tr class=\"memdesc:afcbc45d601e912238fbe419681db88dd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">More...</a><br /></td></tr>\n<tr class=\"separator:afcbc45d601e912238fbe419681db88dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5e66423537fa62170701cbf69c2882f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">PlayerComponent</a> ()</td></tr>\n<tr class=\"separator:ae5e66423537fa62170701cbf69c2882f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cf70a77be2388b6062f19b3fa16b1f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">~PlayerComponent</a> ()</td></tr>\n<tr class=\"separator:a6cf70a77be2388b6062f19b3fa16b1f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8487102a9cb10c8c9b59e4aa8c0d4c56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">SetControllerComponent</a> (<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *comp)</td></tr>\n<tr class=\"separator:a8487102a9cb10c8c9b59e4aa8c0d4c56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8a009699e5fd349e952284665e1d1c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">Start</a> ()</td></tr>\n<tr class=\"separator:aa8a009699e5fd349e952284665e1d1c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a1e25c0111518b35070974b80a1ce7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">SetNoclip</a> (bool value)</td></tr>\n<tr class=\"separator:a9a1e25c0111518b35070974b80a1ce7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab188c1286058f995a0260cc488d32daa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">SetKeyboardLook</a> (bool value)</td></tr>\n<tr class=\"separator:ab188c1286058f995a0260cc488d32daa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcba02c6226d985aece150ce291830f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">GetLookRotation</a> ()</td></tr>\n<tr class=\"separator:adcba02c6226d985aece150ce291830f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a521c6d15a3a7feb9d6f03fb08e7da7e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">GetDirectionFacing</a> ()</td></tr>\n<tr class=\"separator:a521c6d15a3a7feb9d6f03fb08e7da7e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/player.html\">https://racenis.github.io/tram-sdk/documentation/components/player.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae5e66423537fa62170701cbf69c2882f\" name=\"ae5e66423537fa62170701cbf69c2882f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5e66423537fa62170701cbf69c2882f\">&#9670;&nbsp;</a></span>PlayerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::PlayerComponent::PlayerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6cf70a77be2388b6062f19b3fa16b1f1\" name=\"a6cf70a77be2388b6062f19b3fa16b1f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6cf70a77be2388b6062f19b3fa16b1f1\">&#9670;&nbsp;</a></span>~PlayerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::PlayerComponent::~PlayerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a7880e2d2d99db2ebfed2115f3682c4c8\" name=\"a7880e2d2d99db2ebfed2115f3682c4c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7880e2d2d99db2ebfed2115f3682c4c8\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a521c6d15a3a7feb9d6f03fb08e7da7e0\" name=\"a521c6d15a3a7feb9d6f03fb08e7da7e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a521c6d15a3a7feb9d6f03fb08e7da7e0\">&#9670;&nbsp;</a></span>GetDirectionFacing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::PlayerComponent::GetDirectionFacing </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adcba02c6226d985aece150ce291830f6\" name=\"adcba02c6226d985aece150ce291830f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adcba02c6226d985aece150ce291830f6\">&#9670;&nbsp;</a></span>GetLookRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::PlayerComponent::GetLookRotation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afcbc45d601e912238fbe419681db88dd\" name=\"afcbc45d601e912238fbe419681db88dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afcbc45d601e912238fbe419681db88dd\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Initializes an entity component. </p>\n<p >If an entity component has all of its resources already loaded, this will immediately <a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">Start()</a> the component. </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a8487102a9cb10c8c9b59e4aa8c0d4c56\" name=\"a8487102a9cb10c8c9b59e4aa8c0d4c56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8487102a9cb10c8c9b59e4aa8c0d4c56\">&#9670;&nbsp;</a></span>SetControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::SetControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>comp</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab188c1286058f995a0260cc488d32daa\" name=\"ab188c1286058f995a0260cc488d32daa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab188c1286058f995a0260cc488d32daa\">&#9670;&nbsp;</a></span>SetKeyboardLook()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::SetKeyboardLook </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a1e25c0111518b35070974b80a1ce7d\" name=\"a9a1e25c0111518b35070974b80a1ce7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a1e25c0111518b35070974b80a1ce7d\">&#9670;&nbsp;</a></span>SetNoclip()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::SetNoclip </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa8a009699e5fd349e952284665e1d1c3\" name=\"aa8a009699e5fd349e952284665e1d1c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa8a009699e5fd349e952284665e1d1c3\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::PlayerComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2player_8h_source.html\">player.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2player_8cpp.html\">player.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Pool&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">AddNew</a>(Args &amp;&amp;... args)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">begin</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">end</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">GetFirst</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">GetLast</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">GetSize</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a>(const T *ptr) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">maxSize</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">operator[]</a>(size_t index)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">Pool</a>(const char *name, uint64_t initialSize)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">Pool</a>(const char *name, uint64_t initialSize, std::initializer_list&lt; T &gt; list)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">poolName</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">Remove</a>(T *removeptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">validate</a>(const T *ptr) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Pool&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_pool-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Pool&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a57e13a9a51ca187af45f052b3d70b17f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">Pool</a> (const char *name, uint64_t initialSize)</td></tr>\n<tr class=\"separator:a57e13a9a51ca187af45f052b3d70b17f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0650ba8f22b8180249c5a9050256f979\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">Pool</a> (const char *name, uint64_t initialSize, std::initializer_list&lt; T &gt; list)</td></tr>\n<tr class=\"separator:a0650ba8f22b8180249c5a9050256f979\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b0b341946b782acc6ca1959b7452488\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a2b0b341946b782acc6ca1959b7452488\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">AddNew</a> (Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a2b0b341946b782acc6ca1959b7452488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60d25b55dc178234fd501c6329c1b7aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">Remove</a> (T *removeptr)</td></tr>\n<tr class=\"separator:a60d25b55dc178234fd501c6329c1b7aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3e5247f51702e2e59fd5b62436f326c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">operator[]</a> (size_t <a class=\"el\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a>)</td></tr>\n<tr class=\"separator:ad3e5247f51702e2e59fd5b62436f326c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad803699e4dab92b42ba4a86180f60acc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">GetFirst</a> ()</td></tr>\n<tr class=\"separator:ad803699e4dab92b42ba4a86180f60acc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ccf1a748fa7d1f7caa10d7358f64b50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">GetLast</a> ()</td></tr>\n<tr class=\"separator:a6ccf1a748fa7d1f7caa10d7358f64b50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae84df45d298efe25e64b9f688f97916\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">begin</a> ()</td></tr>\n<tr class=\"separator:aae84df45d298efe25e64b9f688f97916\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4916bb192a24754ced8b7e712dd55107\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">end</a> ()</td></tr>\n<tr class=\"separator:a4916bb192a24754ced8b7e712dd55107\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afcc89e07039f40d888ef8bb970467ff2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">GetSize</a> () const</td></tr>\n<tr class=\"separator:afcc89e07039f40d888ef8bb970467ff2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeac3545f8646c676dcc84748db30dfcc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">size</a> () const</td></tr>\n<tr class=\"separator:aeac3545f8646c676dcc84748db30dfcc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ffa82540f27a9b7ff4da2b75daebbf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a> (const T *ptr) const</td></tr>\n<tr class=\"separator:a7ffa82540f27a9b7ff4da2b75daebbf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10facadf048aa836508ffd73c22fbc69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">validate</a> (const T *ptr) const</td></tr>\n<tr class=\"memdesc:a10facadf048aa836508ffd73c22fbc69\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an object can be accessed through iteration.  <a href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">More...</a><br /></td></tr>\n<tr class=\"separator:a10facadf048aa836508ffd73c22fbc69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a7c93c6c74e11a18855e33e69a87d481f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">poolName</a></td></tr>\n<tr class=\"separator:a7c93c6c74e11a18855e33e69a87d481f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4208869bc738c75f8c11b7b65b526564\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a></td></tr>\n<tr class=\"separator:a4208869bc738c75f8c11b7b65b526564\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba0758ee3091dd01f8f880000973d805\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">maxSize</a></td></tr>\n<tr class=\"separator:aba0758ee3091dd01f8f880000973d805\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3fa225dfc0f2bcbdb8b99cd532159f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a></td></tr>\n<tr class=\"separator:ac3fa225dfc0f2bcbdb8b99cd532159f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4623a5f83e0f8a60e0189b4dd1cb7792\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a></td></tr>\n<tr class=\"separator:a4623a5f83e0f8a60e0189b4dd1cb7792\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09e44e2d85b1f84461756d203450e014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a></td></tr>\n<tr class=\"separator:a09e44e2d85b1f84461756d203450e014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a57e13a9a51ca187af45f052b3d70b17f\" name=\"a57e13a9a51ca187af45f052b3d70b17f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57e13a9a51ca187af45f052b3d70b17f\">&#9670;&nbsp;</a></span>Pool() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>initialSize</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0650ba8f22b8180249c5a9050256f979\" name=\"a0650ba8f22b8180249c5a9050256f979\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0650ba8f22b8180249c5a9050256f979\">&#9670;&nbsp;</a></span>Pool() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>initialSize</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::initializer_list&lt; T &gt;&#160;</td>\n          <td class=\"paramname\"><em>list</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2b0b341946b782acc6ca1959b7452488\" name=\"a2b0b341946b782acc6ca1959b7452488\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b0b341946b782acc6ca1959b7452488\">&#9670;&nbsp;</a></span>AddNew()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::AddNew </td>\n          <td>(</td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae84df45d298efe25e64b9f688f97916\" name=\"aae84df45d298efe25e64b9f688f97916\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae84df45d298efe25e64b9f688f97916\">&#9670;&nbsp;</a></span>begin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::begin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4916bb192a24754ced8b7e712dd55107\" name=\"a4916bb192a24754ced8b7e712dd55107\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4916bb192a24754ced8b7e712dd55107\">&#9670;&nbsp;</a></span>end()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::end </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad803699e4dab92b42ba4a86180f60acc\" name=\"ad803699e4dab92b42ba4a86180f60acc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad803699e4dab92b42ba4a86180f60acc\">&#9670;&nbsp;</a></span>GetFirst()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::GetFirst </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ccf1a748fa7d1f7caa10d7358f64b50\" name=\"a6ccf1a748fa7d1f7caa10d7358f64b50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ccf1a748fa7d1f7caa10d7358f64b50\">&#9670;&nbsp;</a></span>GetLast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::GetLast </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afcc89e07039f40d888ef8bb970467ff2\" name=\"afcc89e07039f40d888ef8bb970467ff2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afcc89e07039f40d888ef8bb970467ff2\">&#9670;&nbsp;</a></span>GetSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::GetSize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ffa82540f27a9b7ff4da2b75daebbf5\" name=\"a7ffa82540f27a9b7ff4da2b75daebbf5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ffa82540f27a9b7ff4da2b75daebbf5\">&#9670;&nbsp;</a></span>index()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::index </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad3e5247f51702e2e59fd5b62436f326c\" name=\"ad3e5247f51702e2e59fd5b62436f326c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3e5247f51702e2e59fd5b62436f326c\">&#9670;&nbsp;</a></span>operator[]()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::operator[] </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>index</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a60d25b55dc178234fd501c6329c1b7aa\" name=\"a60d25b55dc178234fd501c6329c1b7aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60d25b55dc178234fd501c6329c1b7aa\">&#9670;&nbsp;</a></span>Remove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\">T *&#160;</td>\n          <td class=\"paramname\"><em>removeptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeac3545f8646c676dcc84748db30dfcc\" name=\"aeac3545f8646c676dcc84748db30dfcc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeac3545f8646c676dcc84748db30dfcc\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10facadf048aa836508ffd73c22fbc69\" name=\"a10facadf048aa836508ffd73c22fbc69\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10facadf048aa836508ffd73c22fbc69\">&#9670;&nbsp;</a></span>validate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::validate </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks if an object can be accessed through iteration. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac3fa225dfc0f2bcbdb8b99cd532159f6\" name=\"ac3fa225dfc0f2bcbdb8b99cd532159f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3fa225dfc0f2bcbdb8b99cd532159f6\">&#9670;&nbsp;</a></span>first</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::first</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4623a5f83e0f8a60e0189b4dd1cb7792\" name=\"a4623a5f83e0f8a60e0189b4dd1cb7792\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4623a5f83e0f8a60e0189b4dd1cb7792\">&#9670;&nbsp;</a></span>last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::last</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09e44e2d85b1f84461756d203450e014\" name=\"a09e44e2d85b1f84461756d203450e014\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09e44e2d85b1f84461756d203450e014\">&#9670;&nbsp;</a></span>lastfree</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::lastfree</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aba0758ee3091dd01f8f880000973d805\" name=\"aba0758ee3091dd01f8f880000973d805\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba0758ee3091dd01f8f880000973d805\">&#9670;&nbsp;</a></span>maxSize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::maxSize</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c93c6c74e11a18855e33e69a87d481f\" name=\"a7c93c6c74e11a18855e33e69a87d481f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c93c6c74e11a18855e33e69a87d481f\">&#9670;&nbsp;</a></span>poolName</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::poolName</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4208869bc738c75f8c11b7b65b526564\" name=\"a4208869bc738c75f8c11b7b65b526564\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4208869bc738c75f8c11b7b65b526564\">&#9670;&nbsp;</a></span>poolSize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::poolSize</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool_proxy-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PoolProxy&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">Delete</a>(T *obj)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">GetPool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">New</a>(Args &amp;&amp;... args)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aedcb7d9eceb53a8a1495741d098658c1\">pool</a>(&quot;Sound Resource pool&quot;, RESOURCE_LIMIT_SOUND)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab37438f9460b4f23ed37fa5c751e5d92\">pool</a>(&quot;AnimationComponent pool&quot;, COMPONENT_LIMIT_ANIMATION)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a132113c7cf9888dcf791d1bdae86a4ce\">pool</a>(&quot;AudioComponent pool&quot;, COMPONENT_LIMIT_AUDIO)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a15a62f52369603f61fda4a0c3aab3453\">pool</a>(&quot;FPSControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a8c8f705895edd3f1ef5416a39dcfb289\">pool</a>(&quot;RaycastControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a87680b64deb218fbd3c991fe36e45449\">pool</a>(&quot;DecalComponent pool&quot;, COMPONENT_LIMIT_DECAL)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#afd8b1fb3154ba576098996c425b8008b\">pool</a>(&quot;LightComponent pool&quot;, COMPONENT_LIMIT_LIGHT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab583e428b551012df0fe5d86e0787c23\">pool</a>(&quot;ParticleComponent pool&quot;, COMPONENT_LIMIT_PARTICLE)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af892e1cc1c5b55d1de83b23a7f6acd7a\">pool</a>(&quot;PhysicsComponent pool&quot;, COMPONENT_LIMIT_PHYSICS)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#adec8cf47dae0c2c7dbcac50b62c4b4ce\">pool</a>(&quot;PlayerComponent pool&quot;, COMPONENT_LIMIT_PLAYER)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a17815902e003552d6c1843f655b50606\">pool</a>(&quot;RenderComponent pool&quot;, COMPONENT_LIMIT_RENDER)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a549d35aabd0230f175b2f78681c55408\">pool</a>(&quot;SpriteComponent pool&quot;, COMPONENT_LIMIT_SPRITE)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a605e61fa1ef7ff0fa4ca51f4a351bb09\">pool</a>(&quot;TriggerComponent pool&quot;, COMPONENT_LIMIT_TRIGGER)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af9f3b37524524346fdc58b79b3b0a148\">pool</a>(&quot;ai_agent_list pool&quot;, 100)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a6b9f8209e7c3b8eea4675f06acb65b0c\">pool</a>(&quot;AnimationTable pool&quot;, EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a12f234e6bf9f9403ee4efb999a2a2a09\">pool</a>(&quot;Ext::Kitchensink::AttributeContainer Pool&quot;, ATTRIBUTE_CONTAINER_COUNT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#abb5ee08a098040647676affc6c7f23de\">pool</a>(&quot;Ext::Kitchensink::Faction Pool&quot;, FACTION_COUNT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ae60e28486ed4752fdb1c22baa4ea81b2\">pool</a>(&quot;Ext::Kitchensink::Character Pool&quot;, CHARACTER_COUNT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab758ff8edc0858676caf8051a77d8408\">pool</a>(&quot;Ext::Kitchensink::CharacterClass Pool&quot;, CLASS_COUNT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ae158206e9edb5f68852a8b43972f3991\">pool</a>(&quot;SoundTable pool&quot;, EXT_KITCHENSINK_SOUNDTABLE_LIMIT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af8e4dd501fdaba304cc75fab9d0122f9\">pool</a>(&quot;navmesh pool&quot;, 100)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a9ccc00cffda0d7145eafd0200ce096e5\">pool</a>(&quot;Path pool&quot;, RESOURCE_LIMIT_PATH)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a723d321955d74db634af0e4ab271b83c\">pool</a>(&quot;worldcelltransition pool&quot;, WORLDCELL_TRANSITION_LIMIT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab9460e6c8698b9c98ce783f162632258\">pool</a>(&quot;Worldcell pool&quot;, WORLDCELL_LIMIT)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a8c9901a9a4d72574c76864140ba646f6\">pool</a>(&quot;GLDrawListEntry pool&quot;, 1000)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a120a8282dfe1622b41d36f70ff239fc8\">pool</a>(&quot;GLLight pool&quot;, COMPONENT_LIMIT_LIGHT, {tram::Render::API::GLLight{}})</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aa4966ced53d457eaf4047aada15c0ddd\">pool</a>(&quot;GLMaterial pool&quot;, RESOURCE_LIMIT_MATERIAL)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool_proxy.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PoolProxy&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-static-attribs\">Static Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_pool_proxy-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PoolProxy&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a799c01c3a6c1648adb02038baff3e30a\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a799c01c3a6c1648adb02038baff3e30a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">New</a> (Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a799c01c3a6c1648adb02038baff3e30a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0565709eb51102242ceb5488fc66f8ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">Delete</a> (T *obj)</td></tr>\n<tr class=\"separator:a0565709eb51102242ceb5488fc66f8ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a4541a7cb8ccbb3fe2c074ecece4905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; T &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">GetPool</a> ()</td></tr>\n<tr class=\"separator:a1a4541a7cb8ccbb3fe2c074ecece4905\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aedcb7d9eceb53a8a1495741d098658c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aedcb7d9eceb53a8a1495741d098658c1\">pool</a> (&quot;Sound <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> pool&quot;, RESOURCE_LIMIT_SOUND)</td></tr>\n<tr class=\"separator:aedcb7d9eceb53a8a1495741d098658c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab37438f9460b4f23ed37fa5c751e5d92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab37438f9460b4f23ed37fa5c751e5d92\">pool</a> (&quot;AnimationComponent pool&quot;, COMPONENT_LIMIT_ANIMATION)</td></tr>\n<tr class=\"separator:ab37438f9460b4f23ed37fa5c751e5d92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a132113c7cf9888dcf791d1bdae86a4ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a132113c7cf9888dcf791d1bdae86a4ce\">pool</a> (&quot;AudioComponent pool&quot;, COMPONENT_LIMIT_AUDIO)</td></tr>\n<tr class=\"separator:a132113c7cf9888dcf791d1bdae86a4ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15a62f52369603f61fda4a0c3aab3453\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a15a62f52369603f61fda4a0c3aab3453\">pool</a> (&quot;FPSControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)</td></tr>\n<tr class=\"separator:a15a62f52369603f61fda4a0c3aab3453\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c8f705895edd3f1ef5416a39dcfb289\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a8c8f705895edd3f1ef5416a39dcfb289\">pool</a> (&quot;RaycastControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)</td></tr>\n<tr class=\"separator:a8c8f705895edd3f1ef5416a39dcfb289\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a87680b64deb218fbd3c991fe36e45449\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a87680b64deb218fbd3c991fe36e45449\">pool</a> (&quot;DecalComponent pool&quot;, COMPONENT_LIMIT_DECAL)</td></tr>\n<tr class=\"separator:a87680b64deb218fbd3c991fe36e45449\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd8b1fb3154ba576098996c425b8008b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#afd8b1fb3154ba576098996c425b8008b\">pool</a> (&quot;LightComponent pool&quot;, COMPONENT_LIMIT_LIGHT)</td></tr>\n<tr class=\"separator:afd8b1fb3154ba576098996c425b8008b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab583e428b551012df0fe5d86e0787c23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab583e428b551012df0fe5d86e0787c23\">pool</a> (&quot;ParticleComponent pool&quot;, COMPONENT_LIMIT_PARTICLE)</td></tr>\n<tr class=\"separator:ab583e428b551012df0fe5d86e0787c23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af892e1cc1c5b55d1de83b23a7f6acd7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af892e1cc1c5b55d1de83b23a7f6acd7a\">pool</a> (&quot;PhysicsComponent pool&quot;, COMPONENT_LIMIT_PHYSICS)</td></tr>\n<tr class=\"separator:af892e1cc1c5b55d1de83b23a7f6acd7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adec8cf47dae0c2c7dbcac50b62c4b4ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#adec8cf47dae0c2c7dbcac50b62c4b4ce\">pool</a> (&quot;PlayerComponent pool&quot;, COMPONENT_LIMIT_PLAYER)</td></tr>\n<tr class=\"separator:adec8cf47dae0c2c7dbcac50b62c4b4ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17815902e003552d6c1843f655b50606\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a17815902e003552d6c1843f655b50606\">pool</a> (&quot;RenderComponent pool&quot;, COMPONENT_LIMIT_RENDER)</td></tr>\n<tr class=\"separator:a17815902e003552d6c1843f655b50606\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a549d35aabd0230f175b2f78681c55408\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a549d35aabd0230f175b2f78681c55408\">pool</a> (&quot;SpriteComponent pool&quot;, COMPONENT_LIMIT_SPRITE)</td></tr>\n<tr class=\"separator:a549d35aabd0230f175b2f78681c55408\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a605e61fa1ef7ff0fa4ca51f4a351bb09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a605e61fa1ef7ff0fa4ca51f4a351bb09\">pool</a> (&quot;TriggerComponent pool&quot;, COMPONENT_LIMIT_TRIGGER)</td></tr>\n<tr class=\"separator:a605e61fa1ef7ff0fa4ca51f4a351bb09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9f3b37524524346fdc58b79b3b0a148\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af9f3b37524524346fdc58b79b3b0a148\">pool</a> (&quot;ai_agent_list pool&quot;, 100)</td></tr>\n<tr class=\"separator:af9f3b37524524346fdc58b79b3b0a148\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b9f8209e7c3b8eea4675f06acb65b0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a6b9f8209e7c3b8eea4675f06acb65b0c\">pool</a> (&quot;AnimationTable pool&quot;, EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT)</td></tr>\n<tr class=\"separator:a6b9f8209e7c3b8eea4675f06acb65b0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12f234e6bf9f9403ee4efb999a2a2a09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">Ext::Kitchensink::AttributeContainer</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a12f234e6bf9f9403ee4efb999a2a2a09\">pool</a> (&quot;Ext::Kitchensink::AttributeContainer <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;, ATTRIBUTE_CONTAINER_COUNT)</td></tr>\n<tr class=\"separator:a12f234e6bf9f9403ee4efb999a2a2a09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb5ee08a098040647676affc6c7f23de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Ext::Kitchensink::Faction</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#abb5ee08a098040647676affc6c7f23de\">pool</a> (&quot;Ext::Kitchensink::Faction <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;, FACTION_COUNT)</td></tr>\n<tr class=\"separator:abb5ee08a098040647676affc6c7f23de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae60e28486ed4752fdb1c22baa4ea81b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Ext::Kitchensink::Character</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ae60e28486ed4752fdb1c22baa4ea81b2\">pool</a> (&quot;Ext::Kitchensink::Character <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;, CHARACTER_COUNT)</td></tr>\n<tr class=\"separator:ae60e28486ed4752fdb1c22baa4ea81b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab758ff8edc0858676caf8051a77d8408\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">Ext::Kitchensink::CharacterClass</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab758ff8edc0858676caf8051a77d8408\">pool</a> (&quot;Ext::Kitchensink::CharacterClass <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;, CLASS_COUNT)</td></tr>\n<tr class=\"separator:ab758ff8edc0858676caf8051a77d8408\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae158206e9edb5f68852a8b43972f3991\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ae158206e9edb5f68852a8b43972f3991\">pool</a> (&quot;SoundTable pool&quot;, EXT_KITCHENSINK_SOUNDTABLE_LIMIT)</td></tr>\n<tr class=\"separator:ae158206e9edb5f68852a8b43972f3991\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e4dd501fdaba304cc75fab9d0122f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#af8e4dd501fdaba304cc75fab9d0122f9\">pool</a> (&quot;navmesh pool&quot;, 100)</td></tr>\n<tr class=\"separator:af8e4dd501fdaba304cc75fab9d0122f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ccc00cffda0d7145eafd0200ce096e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a9ccc00cffda0d7145eafd0200ce096e5\">pool</a> (&quot;Path pool&quot;, RESOURCE_LIMIT_PATH)</td></tr>\n<tr class=\"separator:a9ccc00cffda0d7145eafd0200ce096e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a723d321955d74db634af0e4ab271b83c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a723d321955d74db634af0e4ab271b83c\">pool</a> (&quot;worldcelltransition pool&quot;, WORLDCELL_TRANSITION_LIMIT)</td></tr>\n<tr class=\"separator:a723d321955d74db634af0e4ab271b83c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9460e6c8698b9c98ce783f162632258\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ab9460e6c8698b9c98ce783f162632258\">pool</a> (&quot;Worldcell pool&quot;, WORLDCELL_LIMIT)</td></tr>\n<tr class=\"separator:ab9460e6c8698b9c98ce783f162632258\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c9901a9a4d72574c76864140ba646f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a8c9901a9a4d72574c76864140ba646f6\">pool</a> (&quot;GLDrawListEntry pool&quot;, 1000)</td></tr>\n<tr class=\"separator:a8c9901a9a4d72574c76864140ba646f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a120a8282dfe1622b41d36f70ff239fc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a120a8282dfe1622b41d36f70ff239fc8\">pool</a> (&quot;GLLight pool&quot;, COMPONENT_LIMIT_LIGHT, {<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a>{}})</td></tr>\n<tr class=\"separator:a120a8282dfe1622b41d36f70ff239fc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4966ced53d457eaf4047aada15c0ddd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aa4966ced53d457eaf4047aada15c0ddd\">pool</a> (&quot;GLMaterial pool&quot;, RESOURCE_LIMIT_MATERIAL)</td></tr>\n<tr class=\"separator:aa4966ced53d457eaf4047aada15c0ddd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-static-attribs\" name=\"pro-static-attribs\"></a>\nStatic Protected Attributes</h2></td></tr>\n<tr class=\"memitem:ad6e9619a7833dc2b54ee8cbe1d27ef51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; T &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a></td></tr>\n<tr class=\"separator:ad6e9619a7833dc2b54ee8cbe1d27ef51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0565709eb51102242ceb5488fc66f8ff\" name=\"a0565709eb51102242ceb5488fc66f8ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0565709eb51102242ceb5488fc66f8ff\">&#9670;&nbsp;</a></span>Delete()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; T &gt;::Delete </td>\n          <td>(</td>\n          <td class=\"paramtype\">T *&#160;</td>\n          <td class=\"paramname\"><em>obj</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1a4541a7cb8ccbb3fe2c074ecece4905\" name=\"a1a4541a7cb8ccbb3fe2c074ecece4905\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a4541a7cb8ccbb3fe2c074ecece4905\">&#9670;&nbsp;</a></span>GetPool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; T &gt; &amp; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; T &gt;::GetPool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a799c01c3a6c1648adb02038baff3e30a\" name=\"a799c01c3a6c1648adb02038baff3e30a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a799c01c3a6c1648adb02038baff3e30a\">&#9670;&nbsp;</a></span>New()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static T * <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; T &gt;::New </td>\n          <td>(</td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af9f3b37524524346fdc58b79b3b0a148\" name=\"af9f3b37524524346fdc58b79b3b0a148\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9f3b37524524346fdc58b79b3b0a148\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[1/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">tram::Ext::Kitchensink::AIAgent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;ai_agent_list pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">100&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab37438f9460b4f23ed37fa5c751e5d92\" name=\"ab37438f9460b4f23ed37fa5c751e5d92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab37438f9460b4f23ed37fa5c751e5d92\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[2/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;AnimationComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">COMPONENT_LIMIT_ANIMATION</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6b9f8209e7c3b8eea4675f06acb65b0c\" name=\"a6b9f8209e7c3b8eea4675f06acb65b0c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b9f8209e7c3b8eea4675f06acb65b0c\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[3/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">tram::Ext::Kitchensink::AnimationTable</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;AnimationTable pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a132113c7cf9888dcf791d1bdae86a4ce\" name=\"a132113c7cf9888dcf791d1bdae86a4ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a132113c7cf9888dcf791d1bdae86a4ce\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[4/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;AudioComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">COMPONENT_LIMIT_AUDIO</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a87680b64deb218fbd3c991fe36e45449\" name=\"a87680b64deb218fbd3c991fe36e45449\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a87680b64deb218fbd3c991fe36e45449\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[5/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;DecalComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">COMPONENT_LIMIT_DECAL</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a12f234e6bf9f9403ee4efb999a2a2a09\" name=\"a12f234e6bf9f9403ee4efb999a2a2a09\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12f234e6bf9f9403ee4efb999a2a2a09\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[6/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">Ext::Kitchensink::AttributeContainer</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">Ext::Kitchensink::AttributeContainer</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::AttributeContainer <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"attributes_8cpp.html#a84627f70639f661d824e70f33c21021d\">ATTRIBUTE_CONTAINER_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae60e28486ed4752fdb1c22baa4ea81b2\" name=\"ae60e28486ed4752fdb1c22baa4ea81b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae60e28486ed4752fdb1c22baa4ea81b2\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[7/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Ext::Kitchensink::Character</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Ext::Kitchensink::Character</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::Character <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf\">CHARACTER_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab758ff8edc0858676caf8051a77d8408\" name=\"ab758ff8edc0858676caf8051a77d8408\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab758ff8edc0858676caf8051a77d8408\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[8/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">Ext::Kitchensink::CharacterClass</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">Ext::Kitchensink::CharacterClass</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::CharacterClass <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#a1b511158ca6796bb813f3bdb64369417\">CLASS_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abb5ee08a098040647676affc6c7f23de\" name=\"abb5ee08a098040647676affc6c7f23de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb5ee08a098040647676affc6c7f23de\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[9/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Ext::Kitchensink::Faction</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Ext::Kitchensink::Faction</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::Faction <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758\">FACTION_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15a62f52369603f61fda4a0c3aab3453\" name=\"a15a62f52369603f61fda4a0c3aab3453\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15a62f52369603f61fda4a0c3aab3453\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[10/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;FPSControllerComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">COMPONENT_LIMIT_CONTROLLER</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c9901a9a4d72574c76864140ba646f6\" name=\"a8c9901a9a4d72574c76864140ba646f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c9901a9a4d72574c76864140ba646f6\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[11/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;GLDrawListEntry pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1000&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a120a8282dfe1622b41d36f70ff239fc8\" name=\"a120a8282dfe1622b41d36f70ff239fc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a120a8282dfe1622b41d36f70ff239fc8\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[12/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;GLLight pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">COMPONENT_LIMIT_LIGHT</a>&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">{<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a>{}}&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4966ced53d457eaf4047aada15c0ddd\" name=\"aa4966ced53d457eaf4047aada15c0ddd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4966ced53d457eaf4047aada15c0ddd\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[13/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;GLMaterial pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">RESOURCE_LIMIT_MATERIAL</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afd8b1fb3154ba576098996c425b8008b\" name=\"afd8b1fb3154ba576098996c425b8008b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd8b1fb3154ba576098996c425b8008b\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[14/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;LightComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">COMPONENT_LIMIT_LIGHT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8e4dd501fdaba304cc75fab9d0122f9\" name=\"af8e4dd501fdaba304cc75fab9d0122f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8e4dd501fdaba304cc75fab9d0122f9\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[15/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;navmesh pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">100&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab583e428b551012df0fe5d86e0787c23\" name=\"ab583e428b551012df0fe5d86e0787c23\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab583e428b551012df0fe5d86e0787c23\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[16/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;ParticleComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">COMPONENT_LIMIT_PARTICLE</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ccc00cffda0d7145eafd0200ce096e5\" name=\"a9ccc00cffda0d7145eafd0200ce096e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ccc00cffda0d7145eafd0200ce096e5\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[17/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_path.html\">Path</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Path pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">RESOURCE_LIMIT_PATH</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af892e1cc1c5b55d1de83b23a7f6acd7a\" name=\"af892e1cc1c5b55d1de83b23a7f6acd7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af892e1cc1c5b55d1de83b23a7f6acd7a\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[18/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;PhysicsComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">COMPONENT_LIMIT_PHYSICS</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adec8cf47dae0c2c7dbcac50b62c4b4ce\" name=\"adec8cf47dae0c2c7dbcac50b62c4b4ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adec8cf47dae0c2c7dbcac50b62c4b4ce\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[19/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;PlayerComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">COMPONENT_LIMIT_PLAYER</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c8f705895edd3f1ef5416a39dcfb289\" name=\"a8c8f705895edd3f1ef5416a39dcfb289\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c8f705895edd3f1ef5416a39dcfb289\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[20/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;RaycastControllerComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">COMPONENT_LIMIT_CONTROLLER</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a17815902e003552d6c1843f655b50606\" name=\"a17815902e003552d6c1843f655b50606\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17815902e003552d6c1843f655b50606\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[21/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;RenderComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">COMPONENT_LIMIT_RENDER</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aedcb7d9eceb53a8a1495741d098658c1\" name=\"aedcb7d9eceb53a8a1495741d098658c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aedcb7d9eceb53a8a1495741d098658c1\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[22/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Sound <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">RESOURCE_LIMIT_SOUND</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae158206e9edb5f68852a8b43972f3991\" name=\"ae158206e9edb5f68852a8b43972f3991\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae158206e9edb5f68852a8b43972f3991\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[23/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;SoundTable pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">EXT_KITCHENSINK_SOUNDTABLE_LIMIT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a549d35aabd0230f175b2f78681c55408\" name=\"a549d35aabd0230f175b2f78681c55408\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a549d35aabd0230f175b2f78681c55408\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[24/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;SpriteComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">COMPONENT_LIMIT_SPRITE</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a605e61fa1ef7ff0fa4ca51f4a351bb09\" name=\"a605e61fa1ef7ff0fa4ca51f4a351bb09\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a605e61fa1ef7ff0fa4ca51f4a351bb09\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[25/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;TriggerComponent pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">COMPONENT_LIMIT_TRIGGER</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9460e6c8698b9c98ce783f162632258\" name=\"ab9460e6c8698b9c98ce783f162632258\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9460e6c8698b9c98ce783f162632258\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[26/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Worldcell pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">WORLDCELL_LIMIT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a723d321955d74db634af0e4ab271b83c\" name=\"a723d321955d74db634af0e4ab271b83c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a723d321955d74db634af0e4ab271b83c\">&#9670;&nbsp;</a></span>pool() <span class=\"overload\">[27/27]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> &gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> &gt;::pool </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;worldcelltransition pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">WORLDCELL_TRANSITION_LIMIT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad6e9619a7833dc2b54ee8cbe1d27ef51\" name=\"ad6e9619a7833dc2b54ee8cbe1d27ef51\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6e9619a7833dc2b54ee8cbe1d27ef51\">&#9670;&nbsp;</a></span>pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt;T&gt; <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a>&lt; T &gt;::pool</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool_ptr-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PoolPtr&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">GetResource</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2\">operator bool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">operator*</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">operator-&gt;</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">PoolPtr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">~PoolPtr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_pool_ptr.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PoolPtr&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_pool_ptr-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PoolPtr&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adffa17bd2f9d7fd2242ed255a7832324\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">PoolPtr</a> ()</td></tr>\n<tr class=\"separator:adffa17bd2f9d7fd2242ed255a7832324\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3872ea828f4efe84b9392f565df53a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">~PoolPtr</a> ()</td></tr>\n<tr class=\"separator:aa3872ea828f4efe84b9392f565df53a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05567d055c22c94213c1108f1197dc16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">GetResource</a> ()</td></tr>\n<tr class=\"separator:a05567d055c22c94213c1108f1197dc16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d00d265dff562e8bba6d9712d26006e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">operator-&gt;</a> ()</td></tr>\n<tr class=\"separator:a6d00d265dff562e8bba6d9712d26006e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab24751b40c889dac6e66c78bdb4adbb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">operator*</a> ()</td></tr>\n<tr class=\"separator:aab24751b40c889dac6e66c78bdb4adbb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9256249e1bdc3d11359e8916dfe25c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2\">operator bool</a> ()</td></tr>\n<tr class=\"separator:ad9256249e1bdc3d11359e8916dfe25c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aba35892d9d52fdbeb76f74fdbe9ed80f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a></td></tr>\n<tr class=\"separator:aba35892d9d52fdbeb76f74fdbe9ed80f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"adffa17bd2f9d7fd2242ed255a7832324\" name=\"adffa17bd2f9d7fd2242ed255a7832324\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adffa17bd2f9d7fd2242ed255a7832324\">&#9670;&nbsp;</a></span>PoolPtr()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa3872ea828f4efe84b9392f565df53a3\" name=\"aa3872ea828f4efe84b9392f565df53a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3872ea828f4efe84b9392f565df53a3\">&#9670;&nbsp;</a></span>~PoolPtr()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::~<a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a05567d055c22c94213c1108f1197dc16\" name=\"a05567d055c22c94213c1108f1197dc16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05567d055c22c94213c1108f1197dc16\">&#9670;&nbsp;</a></span>GetResource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::GetResource </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9256249e1bdc3d11359e8916dfe25c2\" name=\"ad9256249e1bdc3d11359e8916dfe25c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9256249e1bdc3d11359e8916dfe25c2\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aab24751b40c889dac6e66c78bdb4adbb\" name=\"aab24751b40c889dac6e66c78bdb4adbb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab24751b40c889dac6e66c78bdb4adbb\">&#9670;&nbsp;</a></span>operator*()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::operator* </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d00d265dff562e8bba6d9712d26006e\" name=\"a6d00d265dff562e8bba6d9712d26006e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d00d265dff562e8bba6d9712d26006e\">&#9670;&nbsp;</a></span>operator-&gt;()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::operator-&gt; </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aba35892d9d52fdbeb76f74fdbe9ed80f\" name=\"aba35892d9d52fdbeb76f74fdbe9ed80f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba35892d9d52fdbeb76f74fdbe9ed80f\">&#9670;&nbsp;</a></span>ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a>&lt; T &gt;::ptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_queue-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Queue&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">back</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">front</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">lock</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">push</a>(Args &amp;&amp;... args)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">Queue</a>()=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6\">Queue</a>(const Queue &amp;)=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef\">Queue</a>(Queue &amp;&amp;)=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d\">Queue</a>(const char *name, size_t count)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">size</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">spinlock</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">try_pop</a>(T &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_queue.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Queue&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_queue-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Queue&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Simple queue implementation.  \n <a href=\"classtram_1_1_queue.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"queue_8h_source.html\">queue.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adbc2d690665b980a97b26eb2cf0fb4e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">Queue</a> ()=delete</td></tr>\n<tr class=\"separator:adbc2d690665b980a97b26eb2cf0fb4e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a53c8973a5cb86f76b039ef0f3d0ee6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6\">Queue</a> (const <a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> &amp;)=delete</td></tr>\n<tr class=\"separator:a9a53c8973a5cb86f76b039ef0f3d0ee6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a710adca95612b66427f7f6cc918492ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef\">Queue</a> (<a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> &amp;&amp;)=delete</td></tr>\n<tr class=\"separator:a710adca95612b66427f7f6cc918492ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad797d5d45ded6116bc9bbd23e8848e9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d\">Queue</a> (const char *<a class=\"el\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a>, size_t <a class=\"el\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>)</td></tr>\n<tr class=\"separator:ad797d5d45ded6116bc9bbd23e8848e9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85bfdb354ca6e34201d6554bc541bfe1\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a85bfdb354ca6e34201d6554bc541bfe1\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">push</a> (Args &amp;&amp;... args)</td></tr>\n<tr class=\"memdesc:a85bfdb354ca6e34201d6554bc541bfe1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Thread safe.  <a href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">More...</a><br /></td></tr>\n<tr class=\"separator:a85bfdb354ca6e34201d6554bc541bfe1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2211c6ebb109da351fbc179fa8ea03b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">pop</a> ()</td></tr>\n<tr class=\"separator:aa2211c6ebb109da351fbc179fa8ea03b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a869affb595c884f94449617be6ba5da0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">front</a> ()</td></tr>\n<tr class=\"separator:a869affb595c884f94449617be6ba5da0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdeabcac12516595916ee8f3b600e392\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">back</a> ()</td></tr>\n<tr class=\"separator:abdeabcac12516595916ee8f3b600e392\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c059b66ef5b9bac992a134da0b9768a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">try_pop</a> (T &amp;value)</td></tr>\n<tr class=\"memdesc:a0c059b66ef5b9bac992a134da0b9768a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Thread safe.  <a href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0c059b66ef5b9bac992a134da0b9768a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc039b82d19e4eedbcc47c0f537a7fd4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">size</a> ()</td></tr>\n<tr class=\"separator:afc039b82d19e4eedbcc47c0f537a7fd4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45fae4fa6028c6f6f5c714f9bd88e6b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">lock</a> ()</td></tr>\n<tr class=\"separator:a45fae4fa6028c6f6f5c714f9bd88e6b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a264f19470d0c440e15b3fea1a3ca083a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a> ()</td></tr>\n<tr class=\"separator:a264f19470d0c440e15b3fea1a3ca083a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aba308a2dd5f4e5dac2841047c46fa9bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a></td></tr>\n<tr class=\"separator:aba308a2dd5f4e5dac2841047c46fa9bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa65ddd7ad10c02cefc507a06c4cbbd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a></td></tr>\n<tr class=\"separator:afa65ddd7ad10c02cefc507a06c4cbbd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa896915df22a178fe292fc763131184c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a></td></tr>\n<tr class=\"separator:aa896915df22a178fe292fc763131184c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7bdb257fbe379deddd3b3e810311a19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a></td></tr>\n<tr class=\"separator:af7bdb257fbe379deddd3b3e810311a19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa63013a7088d526ff1529718777848f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a></td></tr>\n<tr class=\"separator:aa63013a7088d526ff1529718777848f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a96adeb0d29e7f5f6f53c4171d19390\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a></td></tr>\n<tr class=\"separator:a5a96adeb0d29e7f5f6f53c4171d19390\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdd8f8cca203a1cb1612535dc418bf37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a></td></tr>\n<tr class=\"separator:abdd8f8cca203a1cb1612535dc418bf37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0cce633bc90e45e142d32a0e7827d88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::atomic&lt; bool &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">spinlock</a> = {false}</td></tr>\n<tr class=\"separator:aa0cce633bc90e45e142d32a0e7827d88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename T&gt;<br />\nclass tram::Queue&lt; T &gt;</div><p >Simple queue implementation. </p>\n<p >This queue uses a circular buffer internally. The <a class=\"el\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\" title=\"Thread safe.\">push()</a> and <a class=\"el\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\" title=\"Thread safe.\">try_pop()</a> methods have locks on them, so they can be used to create queues for passing messages between threads. I have no idea how multithreading works, use at your own risk. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"adbc2d690665b980a97b26eb2cf0fb4e4\" name=\"adbc2d690665b980a97b26eb2cf0fb4e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbc2d690665b980a97b26eb2cf0fb4e4\">&#9670;&nbsp;</a></span>Queue() <span class=\"overload\">[1/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a53c8973a5cb86f76b039ef0f3d0ee6\" name=\"a9a53c8973a5cb86f76b039ef0f3d0ee6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a53c8973a5cb86f76b039ef0f3d0ee6\">&#9670;&nbsp;</a></span>Queue() <span class=\"overload\">[2/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a>&lt; T &gt; &amp;&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a710adca95612b66427f7f6cc918492ef\" name=\"a710adca95612b66427f7f6cc918492ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a710adca95612b66427f7f6cc918492ef\">&#9670;&nbsp;</a></span>Queue() <span class=\"overload\">[3/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a>&lt; T &gt; &amp;&amp;&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad797d5d45ded6116bc9bbd23e8848e9d\" name=\"ad797d5d45ded6116bc9bbd23e8848e9d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad797d5d45ded6116bc9bbd23e8848e9d\">&#9670;&nbsp;</a></span>Queue() <span class=\"overload\">[4/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"abdeabcac12516595916ee8f3b600e392\" name=\"abdeabcac12516595916ee8f3b600e392\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdeabcac12516595916ee8f3b600e392\">&#9670;&nbsp;</a></span>back()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::back </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a869affb595c884f94449617be6ba5da0\" name=\"a869affb595c884f94449617be6ba5da0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a869affb595c884f94449617be6ba5da0\">&#9670;&nbsp;</a></span>front()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::front </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a45fae4fa6028c6f6f5c714f9bd88e6b8\" name=\"a45fae4fa6028c6f6f5c714f9bd88e6b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45fae4fa6028c6f6f5c714f9bd88e6b8\">&#9670;&nbsp;</a></span>lock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::lock </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2211c6ebb109da351fbc179fa8ea03b\" name=\"aa2211c6ebb109da351fbc179fa8ea03b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2211c6ebb109da351fbc179fa8ea03b\">&#9670;&nbsp;</a></span>pop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::pop </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a85bfdb354ca6e34201d6554bc541bfe1\" name=\"a85bfdb354ca6e34201d6554bc541bfe1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85bfdb354ca6e34201d6554bc541bfe1\">&#9670;&nbsp;</a></span>push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::push </td>\n          <td>(</td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Thread safe. </p>\n\n</div>\n</div>\n<a id=\"afc039b82d19e4eedbcc47c0f537a7fd4\" name=\"afc039b82d19e4eedbcc47c0f537a7fd4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc039b82d19e4eedbcc47c0f537a7fd4\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0c059b66ef5b9bac992a134da0b9768a\" name=\"a0c059b66ef5b9bac992a134da0b9768a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c059b66ef5b9bac992a134da0b9768a\">&#9670;&nbsp;</a></span>try_pop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::try_pop </td>\n          <td>(</td>\n          <td class=\"paramtype\">T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Thread safe. </p>\n<p >Copies front of the queue into value. </p><dl class=\"section return\"><dt>Returns</dt><dd>True if there was an element into the front of the queue and it was copied into value. Otherwise false. </dd></dl>\n\n</div>\n</div>\n<a id=\"a264f19470d0c440e15b3fea1a3ca083a\" name=\"a264f19470d0c440e15b3fea1a3ca083a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a264f19470d0c440e15b3fea1a3ca083a\">&#9670;&nbsp;</a></span>unlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::unlock </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa896915df22a178fe292fc763131184c\" name=\"aa896915df22a178fe292fc763131184c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa896915df22a178fe292fc763131184c\">&#9670;&nbsp;</a></span>count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::count</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa65ddd7ad10c02cefc507a06c4cbbd1\" name=\"afa65ddd7ad10c02cefc507a06c4cbbd1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa65ddd7ad10c02cefc507a06c4cbbd1\">&#9670;&nbsp;</a></span>csize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::csize</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af7bdb257fbe379deddd3b3e810311a19\" name=\"af7bdb257fbe379deddd3b3e810311a19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7bdb257fbe379deddd3b3e810311a19\">&#9670;&nbsp;</a></span>first</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::first</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa63013a7088d526ff1529718777848f1\" name=\"aa63013a7088d526ff1529718777848f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa63013a7088d526ff1529718777848f1\">&#9670;&nbsp;</a></span>last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::last</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdd8f8cca203a1cb1612535dc418bf37\" name=\"abdd8f8cca203a1cb1612535dc418bf37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdd8f8cca203a1cb1612535dc418bf37\">&#9670;&nbsp;</a></span>memory_end</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::memory_end</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a96adeb0d29e7f5f6f53c4171d19390\" name=\"a5a96adeb0d29e7f5f6f53c4171d19390\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a96adeb0d29e7f5f6f53c4171d19390\">&#9670;&nbsp;</a></span>memory_start</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::memory_start</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aba308a2dd5f4e5dac2841047c46fa9bd\" name=\"aba308a2dd5f4e5dac2841047c46fa9bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba308a2dd5f4e5dac2841047c46fa9bd\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0cce633bc90e45e142d32a0e7827d88\" name=\"aa0cce633bc90e45e142d32a0e7827d88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0cce633bc90e45e142d32a0e7827d88\">&#9670;&nbsp;</a></span>spinlock</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::atomic&lt;bool&gt; <a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue</a>&lt; T &gt;::spinlock = {false}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"queue_8h_source.html\">queue.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_raycast_controller_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::RaycastControllerComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">air_velocity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">ApplyDynamics</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">collision_group</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">collision_height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">collision_width</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">ControllerComponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">Crouch</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">crouch_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">crouching</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">enabled</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">EventHandler</a>(Event &amp;event) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">Fly</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">fly_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">flying</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">is_in_air</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">Jump</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">jump_frames</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">Move</a>(vec3 local_direction) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">move_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">move_magnitude</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">Push</a>(vec3 direction) override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">RaycastControllerComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">RecoverFromCollisions</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">ResetMove</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">Run</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">run_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">running</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">SetCollisionGroup</a>(uint32_t group)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a>(bool collide)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">SetCollisionSize</a>(float width, float height, float crouch_height)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">SetCrouchSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">SetFlySpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">SetFriction</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a>(quat direction)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">SetRunSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">SetStepHeight</a>(float height, float crouch_height)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">SetWalkSpeed</a>(float speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">SetWallCollisionCallback</a>(void(*callback)(ControllerComponent *, Physics::Collision))</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">standing_on</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">standing_on_prev</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">standing_pos</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">Start</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">step_height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">TurnLeft</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">TurnRight</a>() override</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">walk_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">wall_collision</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">wallbonk_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">~RaycastControllerComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_raycast_controller_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::RaycastControllerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_raycast_controller_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::RaycastControllerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of a simple character controller.  \n <a href=\"classtram_1_1_raycast_controller_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::RaycastControllerComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_raycast_controller_component.png\" usemap=\"#tram::RaycastControllerComponent_map\" alt=\"\"/>\n  <map id=\"tram::RaycastControllerComponent_map\" name=\"tram::RaycastControllerComponent_map\">\n<area href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\" alt=\"tram::ControllerComponent\" shape=\"rect\" coords=\"0,56,206,80\"/>\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,206,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a61f46b2f0838fe1db449109a531f1dad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">Start</a> () override</td></tr>\n<tr class=\"separator:a61f46b2f0838fe1db449109a531f1dad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a8fb26c4de4b8c90b698f1f16ca3958\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) override</td></tr>\n<tr class=\"separator:a3a8fb26c4de4b8c90b698f1f16ca3958\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a535ed363eec2dcf7f8232aeb1f594fb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">Move</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction) override</td></tr>\n<tr class=\"separator:a535ed363eec2dcf7f8232aeb1f594fb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d4e68ef39d6a803e86f9b6fed954995\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">Run</a> () override</td></tr>\n<tr class=\"separator:a5d4e68ef39d6a803e86f9b6fed954995\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6cde78db12e923186e1d548a2ceb9d8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">Crouch</a> () override</td></tr>\n<tr class=\"separator:a6cde78db12e923186e1d548a2ceb9d8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7905d17bead35cf596c7fe19132e548b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">Fly</a> () override</td></tr>\n<tr class=\"separator:a7905d17bead35cf596c7fe19132e548b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a865d92b888b684f1a8ddfc550509dfc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">Jump</a> () override</td></tr>\n<tr class=\"separator:a865d92b888b684f1a8ddfc550509dfc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84b8137c59028604b98c6087ddf03bec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">TurnLeft</a> () override</td></tr>\n<tr class=\"separator:a84b8137c59028604b98c6087ddf03bec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f441e43b9e92927dbb4103cf7fa3052\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">TurnRight</a> () override</td></tr>\n<tr class=\"separator:a7f441e43b9e92927dbb4103cf7fa3052\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8780bc5e7bb5938ba85b7a2ae950dff4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">Push</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction) override</td></tr>\n<tr class=\"separator:a8780bc5e7bb5938ba85b7a2ae950dff4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83c8376ae644ba75c5caa09803e4e8ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">SetCollisionSize</a> (float width, float height, float crouch_height)</td></tr>\n<tr class=\"separator:a83c8376ae644ba75c5caa09803e4e8ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8152d995918ad6bda5a35d3bbf4be894\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">SetStepHeight</a> (float height, float crouch_height)</td></tr>\n<tr class=\"separator:a8152d995918ad6bda5a35d3bbf4be894\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af9a6f218caee176cc5b25510edc9b34f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">SetWallCollisionCallback</a> (void(*callback)(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>))</td></tr>\n<tr class=\"separator:af9a6f218caee176cc5b25510edc9b34f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec04a4c35f1bc0449e3f944e9034d7c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">SetWalkSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:aec04a4c35f1bc0449e3f944e9034d7c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afec9667d19d362fddf18e23fe5375c2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">SetRunSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:afec9667d19d362fddf18e23fe5375c2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9cc4edd8b6e0076ee4e6ffd0df8353c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">SetCrouchSpeed</a> (float speed)</td></tr>\n<tr class=\"separator:ab9cc4edd8b6e0076ee4e6ffd0df8353c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafc558e1478f35254aa19f0bfd4bbac9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">SetFlySpeed</a> (float speed)</td></tr>\n<tr class=\"separator:aafc558e1478f35254aa19f0bfd4bbac9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e3f7be1fc7488057d7319883300dc5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">SetFriction</a> (float speed)</td></tr>\n<tr class=\"separator:a8e3f7be1fc7488057d7319883300dc5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6588e19ca0bc87e0ddf3f53f6b938df4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">SetCollisionGroup</a> (uint32_t group)</td></tr>\n<tr class=\"separator:a6588e19ca0bc87e0ddf3f53f6b938df4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:a005c65e23bba7635c05821a5bebbdf47 inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a> (bool <a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a>)</td></tr>\n<tr class=\"separator:a005c65e23bba7635c05821a5bebbdf47 inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92c6a99db84d365877eb1e6f45b406ce inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> direction)</td></tr>\n<tr class=\"separator:a92c6a99db84d365877eb1e6f45b406ce inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94439cce310fb5bc23485b3e23f19cfb inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a> () const</td></tr>\n<tr class=\"separator:a94439cce310fb5bc23485b3e23f19cfb inherit pub_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a5b2d1abffafb92a86d9e48ead1eec5d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">RaycastControllerComponent</a> ()=default</td></tr>\n<tr class=\"separator:a5b2d1abffafb92a86d9e48ead1eec5d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1b1d5c0947337f319d4a6ac8e29ee01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">~RaycastControllerComponent</a> ()=default</td></tr>\n<tr class=\"separator:ae1b1d5c0947337f319d4a6ac8e29ee01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b3bdb3d6d211eb1ce407a900b612a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">ApplyDynamics</a> ()</td></tr>\n<tr class=\"separator:a63b3bdb3d6d211eb1ce407a900b612a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae97c6619effa4d637ecaca717798ba45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">RecoverFromCollisions</a> ()</td></tr>\n<tr class=\"separator:ae97c6619effa4d637ecaca717798ba45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f0a5b5809b046971e2b8f23d34f4838\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">ResetMove</a> ()</td></tr>\n<tr class=\"separator:a9f0a5b5809b046971e2b8f23d34f4838\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a4989dfffd26974233d53a1d6c4eb8407\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">wall_collision</a></td></tr>\n<tr class=\"separator:a4989dfffd26974233d53a1d6c4eb8407\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2324ab257417857ba243ff51605ec8ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">move_magnitude</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a2324ab257417857ba243ff51605ec8ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bd33cca14d40e584b11c5794653dfe4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">move_direction</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a1bd33cca14d40e584b11c5794653dfe4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a762a880efb2b272fb8e19edac34c7893\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">air_velocity</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a762a880efb2b272fb8e19edac34c7893\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5342f7e4fb16df60863ed8831887d75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">enabled</a> = false</td></tr>\n<tr class=\"separator:aa5342f7e4fb16df60863ed8831887d75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafc457ddb805587b041ad13495aaa6c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">is_in_air</a> = false</td></tr>\n<tr class=\"separator:aafc457ddb805587b041ad13495aaa6c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68e41561de1361f67cb1782d0dc0a97f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">collision_width</a> = 0.35f</td></tr>\n<tr class=\"separator:a68e41561de1361f67cb1782d0dc0a97f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77d4b6aa40aaff452eb3793ddf9f087a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">collision_height</a> = 1.85f</td></tr>\n<tr class=\"separator:a77d4b6aa40aaff452eb3793ddf9f087a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aebcd878947abb26efd9f9fe66d6caf6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">step_height</a> = 0.35f</td></tr>\n<tr class=\"separator:aebcd878947abb26efd9f9fe66d6caf6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0e8ba76175ff6d4adabaa860ea82bd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">walk_speed</a> = 0.1f</td></tr>\n<tr class=\"separator:ad0e8ba76175ff6d4adabaa860ea82bd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9876016d424f59dcbd70a22264ea0ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">run_speed</a> = 0.2f</td></tr>\n<tr class=\"separator:ac9876016d424f59dcbd70a22264ea0ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4fb92ffbcee998d0d015535549f763d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">crouch_speed</a> = 0.05f</td></tr>\n<tr class=\"separator:ac4fb92ffbcee998d0d015535549f763d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3bc0f6a436b974dd1e207565bcee873\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">fly_speed</a> = 0.2f</td></tr>\n<tr class=\"separator:ac3bc0f6a436b974dd1e207565bcee873\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6bcf9e2bb535b216000806c8750f5bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">crouching</a> = false</td></tr>\n<tr class=\"separator:aa6bcf9e2bb535b216000806c8750f5bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ff2fa537cf973283b7385f4b9c12eea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">running</a> = false</td></tr>\n<tr class=\"separator:a1ff2fa537cf973283b7385f4b9c12eea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5481a92132dc6b4c1b6cbf6266fc7a1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">flying</a> = false</td></tr>\n<tr class=\"separator:a5481a92132dc6b4c1b6cbf6266fc7a1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a2115c6f76c654ad0daa63421474d92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">jump_frames</a> = 0</td></tr>\n<tr class=\"separator:a8a2115c6f76c654ad0daa63421474d92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46760dcc830550459b52f6b26cd80bcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">standing_on</a> = 0</td></tr>\n<tr class=\"separator:a46760dcc830550459b52f6b26cd80bcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3f3c01dc71c60f64fd65709c294e39d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">standing_on_prev</a> = 0</td></tr>\n<tr class=\"separator:af3f3c01dc71c60f64fd65709c294e39d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a621f23a281ed1fc9ab27bbb0ac4103e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">standing_pos</a></td></tr>\n<tr class=\"separator:a621f23a281ed1fc9ab27bbb0ac4103e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61464776123849a63632483d70f9f099\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">collision_group</a> = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td></tr>\n<tr class=\"separator:a61464776123849a63632483d70f9f099\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0b73d887c0b9349667c2dc9271e45cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">wallbonk_callback</a> )(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = nullptr</td></tr>\n<tr class=\"separator:aa0b73d887c0b9349667c2dc9271e45cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:ad160a058e6730f0040aa6a9338e15750 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ad160a058e6730f0040aa6a9338e15750 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93abb6fa1349a41b93f53450817f9839 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a> = true</td></tr>\n<tr class=\"separator:a93abb6fa1349a41b93f53450817f9839 inherit pro_attribs_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a9fd3c58ec8707c5995232f089e6ef91b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">ControllerComponent</a></td></tr>\n<tr class=\"separator:a9fd3c58ec8707c5995232f089e6ef91b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename &gt; </td></tr>\n<tr class=\"memitem:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">Pool</a></td></tr>\n<tr class=\"separator:a49d9babe42ba7f509bcff47a95b2c110\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_controller_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_controller_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memitem:a827a701de4481f78563b75fce6ea55a2 inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a> ()</td></tr>\n<tr class=\"separator:a827a701de4481f78563b75fce6ea55a2 inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7b5cdc611a17b8a7261e14df61c56dd inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a> (bool)</td></tr>\n<tr class=\"separator:af7b5cdc611a17b8a7261e14df61c56dd inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a> ()</td></tr>\n<tr class=\"memdesc:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the ControllerComponents.  <a href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">More...</a><br /></td></tr>\n<tr class=\"separator:adc0d17de6313da06268b3c14b18e8dcf inherit pub_static_methods_classtram_1_1_controller_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of a simple character controller. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5b2d1abffafb92a86d9e48ead1eec5d9\" name=\"a5b2d1abffafb92a86d9e48ead1eec5d9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b2d1abffafb92a86d9e48ead1eec5d9\">&#9670;&nbsp;</a></span>RaycastControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::RaycastControllerComponent::RaycastControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae1b1d5c0947337f319d4a6ac8e29ee01\" name=\"ae1b1d5c0947337f319d4a6ac8e29ee01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1b1d5c0947337f319d4a6ac8e29ee01\">&#9670;&nbsp;</a></span>~RaycastControllerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::RaycastControllerComponent::~RaycastControllerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a63b3bdb3d6d211eb1ce407a900b612a7\" name=\"a63b3bdb3d6d211eb1ce407a900b612a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63b3bdb3d6d211eb1ce407a900b612a7\">&#9670;&nbsp;</a></span>ApplyDynamics()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::ApplyDynamics </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6cde78db12e923186e1d548a2ceb9d8d\" name=\"a6cde78db12e923186e1d548a2ceb9d8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6cde78db12e923186e1d548a2ceb9d8d\">&#9670;&nbsp;</a></span>Crouch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Crouch </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a3a8fb26c4de4b8c90b698f1f16ca3958\" name=\"a3a8fb26c4de4b8c90b698f1f16ca3958\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a8fb26c4de4b8c90b698f1f16ca3958\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a7905d17bead35cf596c7fe19132e548b\" name=\"a7905d17bead35cf596c7fe19132e548b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7905d17bead35cf596c7fe19132e548b\">&#9670;&nbsp;</a></span>Fly()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Fly </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a865d92b888b684f1a8ddfc550509dfc8\" name=\"a865d92b888b684f1a8ddfc550509dfc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a865d92b888b684f1a8ddfc550509dfc8\">&#9670;&nbsp;</a></span>Jump()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Jump </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a535ed363eec2dcf7f8232aeb1f594fb0\" name=\"a535ed363eec2dcf7f8232aeb1f594fb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a535ed363eec2dcf7f8232aeb1f594fb0\">&#9670;&nbsp;</a></span>Move()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Move </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>local_direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a8780bc5e7bb5938ba85b7a2ae950dff4\" name=\"a8780bc5e7bb5938ba85b7a2ae950dff4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8780bc5e7bb5938ba85b7a2ae950dff4\">&#9670;&nbsp;</a></span>Push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Push </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"ae97c6619effa4d637ecaca717798ba45\" name=\"ae97c6619effa4d637ecaca717798ba45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae97c6619effa4d637ecaca717798ba45\">&#9670;&nbsp;</a></span>RecoverFromCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::RecoverFromCollisions </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f0a5b5809b046971e2b8f23d34f4838\" name=\"a9f0a5b5809b046971e2b8f23d34f4838\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f0a5b5809b046971e2b8f23d34f4838\">&#9670;&nbsp;</a></span>ResetMove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::ResetMove </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d4e68ef39d6a803e86f9b6fed954995\" name=\"a5d4e68ef39d6a803e86f9b6fed954995\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d4e68ef39d6a803e86f9b6fed954995\">&#9670;&nbsp;</a></span>Run()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Run </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a6588e19ca0bc87e0ddf3f53f6b938df4\" name=\"a6588e19ca0bc87e0ddf3f53f6b938df4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6588e19ca0bc87e0ddf3f53f6b938df4\">&#9670;&nbsp;</a></span>SetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a83c8376ae644ba75c5caa09803e4e8ef\" name=\"a83c8376ae644ba75c5caa09803e4e8ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83c8376ae644ba75c5caa09803e4e8ef\">&#9670;&nbsp;</a></span>SetCollisionSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetCollisionSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>crouch_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9cc4edd8b6e0076ee4e6ffd0df8353c\" name=\"ab9cc4edd8b6e0076ee4e6ffd0df8353c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">&#9670;&nbsp;</a></span>SetCrouchSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetCrouchSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafc558e1478f35254aa19f0bfd4bbac9\" name=\"aafc558e1478f35254aa19f0bfd4bbac9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafc558e1478f35254aa19f0bfd4bbac9\">&#9670;&nbsp;</a></span>SetFlySpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetFlySpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e3f7be1fc7488057d7319883300dc5f\" name=\"a8e3f7be1fc7488057d7319883300dc5f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e3f7be1fc7488057d7319883300dc5f\">&#9670;&nbsp;</a></span>SetFriction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetFriction </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afec9667d19d362fddf18e23fe5375c2a\" name=\"afec9667d19d362fddf18e23fe5375c2a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afec9667d19d362fddf18e23fe5375c2a\">&#9670;&nbsp;</a></span>SetRunSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetRunSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8152d995918ad6bda5a35d3bbf4be894\" name=\"a8152d995918ad6bda5a35d3bbf4be894\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8152d995918ad6bda5a35d3bbf4be894\">&#9670;&nbsp;</a></span>SetStepHeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetStepHeight </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>crouch_height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec04a4c35f1bc0449e3f944e9034d7c3\" name=\"aec04a4c35f1bc0449e3f944e9034d7c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec04a4c35f1bc0449e3f944e9034d7c3\">&#9670;&nbsp;</a></span>SetWalkSpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetWalkSpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af9a6f218caee176cc5b25510edc9b34f\" name=\"af9a6f218caee176cc5b25510edc9b34f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9a6f218caee176cc5b25510edc9b34f\">&#9670;&nbsp;</a></span>SetWallCollisionCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::SetWallCollisionCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61f46b2f0838fe1db449109a531f1dad\" name=\"a61f46b2f0838fe1db449109a531f1dad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61f46b2f0838fe1db449109a531f1dad\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a84b8137c59028604b98c6087ddf03bec\" name=\"a84b8137c59028604b98c6087ddf03bec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84b8137c59028604b98c6087ddf03bec\">&#9670;&nbsp;</a></span>TurnLeft()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::TurnLeft </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a7f441e43b9e92927dbb4103cf7fa3052\" name=\"a7f441e43b9e92927dbb4103cf7fa3052\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f441e43b9e92927dbb4103cf7fa3052\">&#9670;&nbsp;</a></span>TurnRight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RaycastControllerComponent::TurnRight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">override</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">tram::ControllerComponent</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a9fd3c58ec8707c5995232f089e6ef91b\" name=\"a9fd3c58ec8707c5995232f089e6ef91b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fd3c58ec8707c5995232f089e6ef91b\">&#9670;&nbsp;</a></span>ControllerComponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49d9babe42ba7f509bcff47a95b2c110\" name=\"a49d9babe42ba7f509bcff47a95b2c110\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49d9babe42ba7f509bcff47a95b2c110\">&#9670;&nbsp;</a></span>Pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a762a880efb2b272fb8e19edac34c7893\" name=\"a762a880efb2b272fb8e19edac34c7893\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a762a880efb2b272fb8e19edac34c7893\">&#9670;&nbsp;</a></span>air_velocity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RaycastControllerComponent::air_velocity = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a61464776123849a63632483d70f9f099\" name=\"a61464776123849a63632483d70f9f099\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61464776123849a63632483d70f9f099\">&#9670;&nbsp;</a></span>collision_group</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::RaycastControllerComponent::collision_group = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77d4b6aa40aaff452eb3793ddf9f087a\" name=\"a77d4b6aa40aaff452eb3793ddf9f087a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77d4b6aa40aaff452eb3793ddf9f087a\">&#9670;&nbsp;</a></span>collision_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::collision_height = 1.85f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68e41561de1361f67cb1782d0dc0a97f\" name=\"a68e41561de1361f67cb1782d0dc0a97f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68e41561de1361f67cb1782d0dc0a97f\">&#9670;&nbsp;</a></span>collision_width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::collision_width = 0.35f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac4fb92ffbcee998d0d015535549f763d\" name=\"ac4fb92ffbcee998d0d015535549f763d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4fb92ffbcee998d0d015535549f763d\">&#9670;&nbsp;</a></span>crouch_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::crouch_speed = 0.05f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6bcf9e2bb535b216000806c8750f5bf\" name=\"aa6bcf9e2bb535b216000806c8750f5bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6bcf9e2bb535b216000806c8750f5bf\">&#9670;&nbsp;</a></span>crouching</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::RaycastControllerComponent::crouching = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5342f7e4fb16df60863ed8831887d75\" name=\"aa5342f7e4fb16df60863ed8831887d75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5342f7e4fb16df60863ed8831887d75\">&#9670;&nbsp;</a></span>enabled</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::RaycastControllerComponent::enabled = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3bc0f6a436b974dd1e207565bcee873\" name=\"ac3bc0f6a436b974dd1e207565bcee873\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3bc0f6a436b974dd1e207565bcee873\">&#9670;&nbsp;</a></span>fly_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::fly_speed = 0.2f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5481a92132dc6b4c1b6cbf6266fc7a1a\" name=\"a5481a92132dc6b4c1b6cbf6266fc7a1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5481a92132dc6b4c1b6cbf6266fc7a1a\">&#9670;&nbsp;</a></span>flying</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::RaycastControllerComponent::flying = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafc457ddb805587b041ad13495aaa6c6\" name=\"aafc457ddb805587b041ad13495aaa6c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafc457ddb805587b041ad13495aaa6c6\">&#9670;&nbsp;</a></span>is_in_air</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::RaycastControllerComponent::is_in_air = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a2115c6f76c654ad0daa63421474d92\" name=\"a8a2115c6f76c654ad0daa63421474d92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a2115c6f76c654ad0daa63421474d92\">&#9670;&nbsp;</a></span>jump_frames</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::RaycastControllerComponent::jump_frames = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1bd33cca14d40e584b11c5794653dfe4\" name=\"a1bd33cca14d40e584b11c5794653dfe4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bd33cca14d40e584b11c5794653dfe4\">&#9670;&nbsp;</a></span>move_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RaycastControllerComponent::move_direction = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2324ab257417857ba243ff51605ec8ae\" name=\"a2324ab257417857ba243ff51605ec8ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2324ab257417857ba243ff51605ec8ae\">&#9670;&nbsp;</a></span>move_magnitude</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RaycastControllerComponent::move_magnitude = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9876016d424f59dcbd70a22264ea0ed\" name=\"ac9876016d424f59dcbd70a22264ea0ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9876016d424f59dcbd70a22264ea0ed\">&#9670;&nbsp;</a></span>run_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::run_speed = 0.2f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1ff2fa537cf973283b7385f4b9c12eea\" name=\"a1ff2fa537cf973283b7385f4b9c12eea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ff2fa537cf973283b7385f4b9c12eea\">&#9670;&nbsp;</a></span>running</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::RaycastControllerComponent::running = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46760dcc830550459b52f6b26cd80bcb\" name=\"a46760dcc830550459b52f6b26cd80bcb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46760dcc830550459b52f6b26cd80bcb\">&#9670;&nbsp;</a></span>standing_on</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::RaycastControllerComponent::standing_on = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af3f3c01dc71c60f64fd65709c294e39d\" name=\"af3f3c01dc71c60f64fd65709c294e39d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3f3c01dc71c60f64fd65709c294e39d\">&#9670;&nbsp;</a></span>standing_on_prev</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::RaycastControllerComponent::standing_on_prev = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a621f23a281ed1fc9ab27bbb0ac4103e6\" name=\"a621f23a281ed1fc9ab27bbb0ac4103e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a621f23a281ed1fc9ab27bbb0ac4103e6\">&#9670;&nbsp;</a></span>standing_pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RaycastControllerComponent::standing_pos</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aebcd878947abb26efd9f9fe66d6caf6b\" name=\"aebcd878947abb26efd9f9fe66d6caf6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aebcd878947abb26efd9f9fe66d6caf6b\">&#9670;&nbsp;</a></span>step_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::step_height = 0.35f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad0e8ba76175ff6d4adabaa860ea82bd3\" name=\"ad0e8ba76175ff6d4adabaa860ea82bd3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0e8ba76175ff6d4adabaa860ea82bd3\">&#9670;&nbsp;</a></span>walk_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::RaycastControllerComponent::walk_speed = 0.1f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4989dfffd26974233d53a1d6c4eb8407\" name=\"a4989dfffd26974233d53a1d6c4eb8407\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4989dfffd26974233d53a1d6c4eb8407\">&#9670;&nbsp;</a></span>wall_collision</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>&gt; tram::RaycastControllerComponent::wall_collision</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0b73d887c0b9349667c2dc9271e45cd\" name=\"aa0b73d887c0b9349667c2dc9271e45cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0b73d887c0b9349667c2dc9271e45cd\">&#9670;&nbsp;</a></span>wallbonk_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::RaycastControllerComponent::wallbonk_callback) (<a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8h_source.html\">controller.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FragmentShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb\">GetName</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535\">GetShader</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::FragmentShader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FragmentShader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a83780b2e28d8d0432404f10a0a60e7bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb\">GetName</a> ()</td></tr>\n<tr class=\"separator:a83780b2e28d8d0432404f10a0a60e7bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e89b66d402de11dc6d4622d71569535\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535\">GetShader</a> (uint32_t flags)</td></tr>\n<tr class=\"separator:a3e89b66d402de11dc6d4622d71569535\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a7d679ad0deb8e595b3182c6c0e786de3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a7d679ad0deb8e595b3182c6c0e786de3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a7d679ad0deb8e595b3182c6c0e786de3\" name=\"a7d679ad0deb8e595b3182c6c0e786de3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d679ad0deb8e595b3182c6c0e786de3\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a> * tram::Render::API::FragmentShader::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a83780b2e28d8d0432404f10a0a60e7bb\" name=\"a83780b2e28d8d0432404f10a0a60e7bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83780b2e28d8d0432404f10a0a60e7bb\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::FragmentShader::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e89b66d402de11dc6d4622d71569535\" name=\"a3e89b66d402de11dc6d4622d71569535\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e89b66d402de11dc6d4622d71569535\">&#9670;&nbsp;</a></span>GetShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::FragmentShader::GetShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_linked_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LinkedShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0\">BindUniformBlock</a>(const char *name, uint32_t binding)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5\">FindShader</a>(vertexformat_t format, materialtype_t type, shaderflags_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c\">GetAnyShader</a>(shaderflags_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f\">GetFormat</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c\">GetFragmentShader</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760\">GetShader</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa\">GetVertexShader</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396\">Register</a>(vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2\">RegisterUniformBlock</a>(const char *name, uint32_t binding)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::LinkedShader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LinkedShader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a610721a4bf5b10a94a192863f45e366f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f\">GetFormat</a> ()</td></tr>\n<tr class=\"separator:a610721a4bf5b10a94a192863f45e366f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59da53365a58b0590b41d763cac529c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7\">GetType</a> ()</td></tr>\n<tr class=\"separator:a59da53365a58b0590b41d763cac529c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd8d0225e99fe0bda893abde0429e0fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa\">GetVertexShader</a> ()</td></tr>\n<tr class=\"separator:abd8d0225e99fe0bda893abde0429e0fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ac81e93a84a25d344d1d60fa614506c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c\">GetFragmentShader</a> ()</td></tr>\n<tr class=\"separator:a8ac81e93a84a25d344d1d60fa614506c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf41b46206e406a90a1cd1992b902760\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760\">GetShader</a> (uint32_t flags)</td></tr>\n<tr class=\"separator:acf41b46206e406a90a1cd1992b902760\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa69a85e88039257fec2cdd5feaee0fb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0\">BindUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:aa69a85e88039257fec2cdd5feaee0fb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:aa5dc3db8286a72fc93e0c24a1ae6d7a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5\">FindShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> flags)</td></tr>\n<tr class=\"separator:aa5dc3db8286a72fc93e0c24a1ae6d7a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aade702f067875442fe766814c664247c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c\">GetAnyShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> flags)</td></tr>\n<tr class=\"separator:aade702f067875442fe766814c664247c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e8506ce47f417ec8d0b10d71acec396\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396\">Register</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a4e8506ce47f417ec8d0b10d71acec396\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad06e322a21edacc9e1aa8a99b997f1b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2\">RegisterUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:ad06e322a21edacc9e1aa8a99b997f1b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa69a85e88039257fec2cdd5feaee0fb0\" name=\"aa69a85e88039257fec2cdd5feaee0fb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa69a85e88039257fec2cdd5feaee0fb0\">&#9670;&nbsp;</a></span>BindUniformBlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::LinkedShader::BindUniformBlock </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5dc3db8286a72fc93e0c24a1ae6d7a5\" name=\"aa5dc3db8286a72fc93e0c24a1ae6d7a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5dc3db8286a72fc93e0c24a1ae6d7a5\">&#9670;&nbsp;</a></span>FindShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static uint32_t tram::Render::API::LinkedShader::FindShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a>&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aade702f067875442fe766814c664247c\" name=\"aade702f067875442fe766814c664247c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aade702f067875442fe766814c664247c\">&#9670;&nbsp;</a></span>GetAnyShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static uint32_t tram::Render::API::LinkedShader::GetAnyShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a>&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a610721a4bf5b10a94a192863f45e366f\" name=\"a610721a4bf5b10a94a192863f45e366f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a610721a4bf5b10a94a192863f45e366f\">&#9670;&nbsp;</a></span>GetFormat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::API::LinkedShader::GetFormat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ac81e93a84a25d344d1d60fa614506c\" name=\"a8ac81e93a84a25d344d1d60fa614506c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ac81e93a84a25d344d1d60fa614506c\">&#9670;&nbsp;</a></span>GetFragmentShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a> * tram::Render::API::LinkedShader::GetFragmentShader </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf41b46206e406a90a1cd1992b902760\" name=\"acf41b46206e406a90a1cd1992b902760\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf41b46206e406a90a1cd1992b902760\">&#9670;&nbsp;</a></span>GetShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::LinkedShader::GetShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a59da53365a58b0590b41d763cac529c7\" name=\"a59da53365a58b0590b41d763cac529c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59da53365a58b0590b41d763cac529c7\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::API::LinkedShader::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd8d0225e99fe0bda893abde0429e0fa\" name=\"abd8d0225e99fe0bda893abde0429e0fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd8d0225e99fe0bda893abde0429e0fa\">&#9670;&nbsp;</a></span>GetVertexShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a> * tram::Render::API::LinkedShader::GetVertexShader </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e8506ce47f417ec8d0b10d71acec396\" name=\"a4e8506ce47f417ec8d0b10d71acec396\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e8506ce47f417ec8d0b10d71acec396\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Render::API::LinkedShader::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad06e322a21edacc9e1aa8a99b997f1b2\" name=\"ad06e322a21edacc9e1aa8a99b997f1b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad06e322a21edacc9e1aa8a99b997f1b2\">&#9670;&nbsp;</a></span>RegisterUniformBlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Render::API::LinkedShader::RegisterUniformBlock </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ShaderBuffer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\">ShaderBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ShaderBuffer Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957\">GetName</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c\">GetShader</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::VertexShader Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexShader Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3be13e88fa61161353ca4f29254e3957\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957\">GetName</a> ()</td></tr>\n<tr class=\"separator:a3be13e88fa61161353ca4f29254e3957\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6d1cade6063ff972474b5d23e95722c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c\">GetShader</a> (uint32_t flags)</td></tr>\n<tr class=\"separator:ac6d1cade6063ff972474b5d23e95722c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a953ba1f0a3d7657b8a242ae8193b0987\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a953ba1f0a3d7657b8a242ae8193b0987\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a953ba1f0a3d7657b8a242ae8193b0987\" name=\"a953ba1f0a3d7657b8a242ae8193b0987\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a953ba1f0a3d7657b8a242ae8193b0987\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a> * tram::Render::API::VertexShader::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3be13e88fa61161353ca4f29254e3957\" name=\"a3be13e88fa61161353ca4f29254e3957\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3be13e88fa61161353ca4f29254e3957\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::VertexShader::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac6d1cade6063ff972474b5d23e95722c\" name=\"ac6d1cade6063ff972474b5d23e95722c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6d1cade6063ff972474b5d23e95722c\">&#9670;&nbsp;</a></span>GetShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::VertexShader::GetShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_animation-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Animation Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">Animation</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">GetHeader</a>(uint32_t index)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">GetHeaderCount</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">GetKeyframeCount</a>(name_t bone)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">GetKeyframes</a>(name_t bone)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">LoadAll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_animation.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Animation Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_render_1_1_animation-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Animation Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Skeletal animation for a 3D model.  \n <a href=\"classtram_1_1_render_1_1_animation.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">render/animation.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::Animation:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_1_1_animation.png\" usemap=\"#tram::Render::Animation_map\" alt=\"\"/>\n  <map id=\"tram::Render::Animation_map\" name=\"tram::Render::Animation_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,144,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aeb52730a357d678921b547c4eae16405\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">Animation</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:aeb52730a357d678921b547c4eae16405\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa51937c2a487fe82bafdb2d4056e30c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">GetKeyframes</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> bone)</td></tr>\n<tr class=\"separator:afa51937c2a487fe82bafdb2d4056e30c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a815b1115dfa11c8e21cf305d24ac49f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">GetKeyframeCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> bone)</td></tr>\n<tr class=\"separator:a815b1115dfa11c8e21cf305d24ac49f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97148015f708147071e224e18128b442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">GetHeader</a> (uint32_t index)</td></tr>\n<tr class=\"separator:a97148015f708147071e224e18128b442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d75cbe7f57a4b7b77f38ca710cadf30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">GetHeaderCount</a> ()</td></tr>\n<tr class=\"separator:a8d75cbe7f57a4b7b77f38ca710cadf30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0a4327e94e5babd310c67593cf4dae7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:aa0a4327e94e5babd310c67593cf4dae7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a256a3c4dc1998b67c26aab28b7684d9d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:a256a3c4dc1998b67c26aab28b7684d9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad47884e1acea138f8b664bc2d418dfd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">Unload</a> ()</td></tr>\n<tr class=\"separator:ad47884e1acea138f8b664bc2d418dfd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ac0bf7285a28f37f9e41d66c4325f8799\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:ac0bf7285a28f37f9e41d66c4325f8799\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd6c4015e2d1ed771624e80141eb29fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">LoadAll</a> ()</td></tr>\n<tr class=\"separator:acd6c4015e2d1ed771624e80141eb29fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Skeletal animation for a 3D model. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/render/animation.html\">https://racenis.github.io/tram-sdk/documentation/render/animation.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aeb52730a357d678921b547c4eae16405\" name=\"aeb52730a357d678921b547c4eae16405\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb52730a357d678921b547c4eae16405\">&#9670;&nbsp;</a></span>Animation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Animation::Animation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac0bf7285a28f37f9e41d66c4325f8799\" name=\"ac0bf7285a28f37f9e41d66c4325f8799\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0bf7285a28f37f9e41d66c4325f8799\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> * tram::Render::Animation::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97148015f708147071e224e18128b442\" name=\"a97148015f708147071e224e18128b442\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97148015f708147071e224e18128b442\">&#9670;&nbsp;</a></span>GetHeader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a> * tram::Render::Animation::GetHeader </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d75cbe7f57a4b7b77f38ca710cadf30\" name=\"a8d75cbe7f57a4b7b77f38ca710cadf30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d75cbe7f57a4b7b77f38ca710cadf30\">&#9670;&nbsp;</a></span>GetHeaderCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Animation::GetHeaderCount </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a815b1115dfa11c8e21cf305d24ac49f8\" name=\"a815b1115dfa11c8e21cf305d24ac49f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a815b1115dfa11c8e21cf305d24ac49f8\">&#9670;&nbsp;</a></span>GetKeyframeCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Animation::GetKeyframeCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>bone</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa51937c2a487fe82bafdb2d4056e30c\" name=\"afa51937c2a487fe82bafdb2d4056e30c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa51937c2a487fe82bafdb2d4056e30c\">&#9670;&nbsp;</a></span>GetKeyframes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a> * tram::Render::Animation::GetKeyframes </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>bone</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acd6c4015e2d1ed771624e80141eb29fd\" name=\"acd6c4015e2d1ed771624e80141eb29fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd6c4015e2d1ed771624e80141eb29fd\">&#9670;&nbsp;</a></span>LoadAll()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Render::Animation::LoadAll </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0a4327e94e5babd310c67593cf4dae7\" name=\"aa0a4327e94e5babd310c67593cf4dae7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0a4327e94e5babd310c67593cf4dae7\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Animation::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a256a3c4dc1998b67c26aab28b7684d9d\" name=\"a256a3c4dc1998b67c26aab28b7684d9d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a256a3c4dc1998b67c26aab28b7684d9d\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Animation::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"ad47884e1acea138f8b664bc2d418dfd6\" name=\"ad47884e1acea138f8b664bc2d418dfd6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad47884e1acea138f8b664bc2d418dfd6\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Animation::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8cpp.html\">animation.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_light_graph-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightGraph Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">ContainsEntity</a>(id_t entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">edges</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">entities</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">GetEnvironmentProbes</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">LightGraph</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">LookupEnvironmentMap</a>(vec3 position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">LookupHarmonic</a>(vec3 position, uint32_t layers)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">nodes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_light_graph.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::LightGraph Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_render_1_1_light_graph-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightGraph Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource.  \n <a href=\"classtram_1_1_render_1_1_light_graph.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::LightGraph:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_1_1_light_graph.png\" usemap=\"#tram::Render::LightGraph_map\" alt=\"\"/>\n  <map id=\"tram::Render::LightGraph_map\" name=\"tram::Render::LightGraph_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,151,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a32f29f8d80661eedcfe32d72e7f11def\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">LightGraph</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a32f29f8d80661eedcfe32d72e7f11def\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dd1cd54e31470a76c5919dfb8311629\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a7dd1cd54e31470a76c5919dfb8311629\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1948a05344456f61b7c26f2871c7a91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:af1948a05344456f61b7c26f2871c7a91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a798e549b6f611fceee1549ecdf63658a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">Unload</a> ()</td></tr>\n<tr class=\"separator:a798e549b6f611fceee1549ecdf63658a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07e34cb8706381d97bc4e138a625a1bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; uint32_t, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">GetEnvironmentProbes</a> ()</td></tr>\n<tr class=\"separator:a07e34cb8706381d97bc4e138a625a1bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a5d61946d71fd0b3765492c2f7b5d4e58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">ContainsEntity</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity)</td></tr>\n<tr class=\"separator:a5d61946d71fd0b3765492c2f7b5d4e58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad506de9dafeee1b2e44727ac031f0d4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">LookupHarmonic</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, uint32_t layers)</td></tr>\n<tr class=\"separator:ad506de9dafeee1b2e44727ac031f0d4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c98cd60f1386f73c654536c70147351\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">LookupEnvironmentMap</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:a0c98cd60f1386f73c654536c70147351\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33ebe4cfeae7cd18ceacb54d3e4c5a3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a33ebe4cfeae7cd18ceacb54d3e4c5a3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5ecc9ba96984a2e7fc95704c46b98049\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">entities</a></td></tr>\n<tr class=\"separator:a5ecc9ba96984a2e7fc95704c46b98049\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea188bfb0d41aa49aea9898a72fd0ff2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">nodes</a></td></tr>\n<tr class=\"separator:aea188bfb0d41aa49aea9898a72fd0ff2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a076e24396cd1802aa4abbd69d49e1c8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; uint32_t, uint32_t &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">edges</a></td></tr>\n<tr class=\"separator:a076e24396cd1802aa4abbd69d49e1c8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a32f29f8d80661eedcfe32d72e7f11def\" name=\"a32f29f8d80661eedcfe32d72e7f11def\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32f29f8d80661eedcfe32d72e7f11def\">&#9670;&nbsp;</a></span>LightGraph()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::LightGraph::LightGraph </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5d61946d71fd0b3765492c2f7b5d4e58\" name=\"a5d61946d71fd0b3765492c2f7b5d4e58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d61946d71fd0b3765492c2f7b5d4e58\">&#9670;&nbsp;</a></span>ContainsEntity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool LightGraph::ContainsEntity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33ebe4cfeae7cd18ceacb54d3e4c5a3f\" name=\"a33ebe4cfeae7cd18ceacb54d3e4c5a3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a> * LightGraph::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07e34cb8706381d97bc4e138a625a1bf\" name=\"a07e34cb8706381d97bc4e138a625a1bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07e34cb8706381d97bc4e138a625a1bf\">&#9670;&nbsp;</a></span>GetEnvironmentProbes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; std::pair&lt; uint32_t, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &gt; &gt; LightGraph::GetEnvironmentProbes </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7dd1cd54e31470a76c5919dfb8311629\" name=\"a7dd1cd54e31470a76c5919dfb8311629\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7dd1cd54e31470a76c5919dfb8311629\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void LightGraph::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"af1948a05344456f61b7c26f2871c7a91\" name=\"af1948a05344456f61b7c26f2871c7a91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1948a05344456f61b7c26f2871c7a91\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::LightGraph::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a0c98cd60f1386f73c654536c70147351\" name=\"a0c98cd60f1386f73c654536c70147351\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c98cd60f1386f73c654536c70147351\">&#9670;&nbsp;</a></span>LookupEnvironmentMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * LightGraph::LookupEnvironmentMap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad506de9dafeee1b2e44727ac031f0d4a\" name=\"ad506de9dafeee1b2e44727ac031f0d4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad506de9dafeee1b2e44727ac031f0d4a\">&#9670;&nbsp;</a></span>LookupHarmonic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> LightGraph::LookupHarmonic </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layers</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a798e549b6f611fceee1549ecdf63658a\" name=\"a798e549b6f611fceee1549ecdf63658a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a798e549b6f611fceee1549ecdf63658a\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::LightGraph::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a076e24396cd1802aa4abbd69d49e1c8d\" name=\"a076e24396cd1802aa4abbd69d49e1c8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a076e24396cd1802aa4abbd69d49e1c8d\">&#9670;&nbsp;</a></span>edges</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;uint32_t, uint32_t&gt; &gt; tram::Render::LightGraph::edges</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5ecc9ba96984a2e7fc95704c46b98049\" name=\"a5ecc9ba96984a2e7fc95704c46b98049\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ecc9ba96984a2e7fc95704c46b98049\">&#9670;&nbsp;</a></span>entities</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&gt; tram::Render::LightGraph::entities</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea188bfb0d41aa49aea9898a72fd0ff2\" name=\"aea188bfb0d41aa49aea9898a72fd0ff2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea188bfb0d41aa49aea9898a72fd0ff2\">&#9670;&nbsp;</a></span>nodes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a>&gt; tram::Render::LightGraph::nodes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2light_8h_source.html\">light.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2light_8cpp.html\">light.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_material-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Material Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">approx_vram_usage</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">channels</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">GetColor</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">GetHeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">GetMaterial</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">GetProperty</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">GetSpecularExponent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">GetSpecularTransparency</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">GetSpecularWeight</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">GetTexture</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">GetType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">GetWidth</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">LoadMaterialInfo</a>(const char *filename)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">Make</a>(name_t name, materialtype_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">MakePattern</a>(vec3 color1, vec3 color2)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">Material</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7953b137f0390f6e729efe9e9cf86aa3\">Material</a>(name_t name, materialtype_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">material</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">SetColor</a>(color_t color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">SetMaterialFilter</a>(MaterialFilter filter)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">SetMaterialProperty</a>(MaterialProperty property)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">SetMaterialType</a>(materialtype_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">SetReflectivity</a>(float reflectivity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">SetSource</a>(Material *source)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">SetSpecular</a>(float weight, float exponent, float transparency)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">SetTextureType</a>(TextureType texture_type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">specular_exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">specular_transparency</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">specular_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344\">Sprite</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">texture_data</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_material.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Material Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_render_1_1_material-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Material Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource.  \n <a href=\"classtram_1_1_render_1_1_material.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::Material:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_1_1_material.png\" usemap=\"#tram::Render::Material_map\" alt=\"\"/>\n  <map id=\"tram::Render::Material_map\" name=\"tram::Render::Material_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,135,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5174425b4875181d93adc3926d2d7441\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">Material</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a5174425b4875181d93adc3926d2d7441\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7953b137f0390f6e729efe9e9cf86aa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7953b137f0390f6e729efe9e9cf86aa3\">Material</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>)</td></tr>\n<tr class=\"separator:a7953b137f0390f6e729efe9e9cf86aa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7364618a398768519758ff9ffd7b3c4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">GetTexture</a> () const</td></tr>\n<tr class=\"separator:a7364618a398768519758ff9ffd7b3c4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22ae5b8db7d434e07318cf201defc953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">GetMaterial</a> () const</td></tr>\n<tr class=\"separator:a22ae5b8db7d434e07318cf201defc953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c06e86d3701b7377e4a86f4d6faeaac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">GetWidth</a> () const</td></tr>\n<tr class=\"separator:a3c06e86d3701b7377e4a86f4d6faeaac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98628ad183a5289b9f6f7a407c9005c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">GetHeight</a> () const</td></tr>\n<tr class=\"separator:a98628ad183a5289b9f6f7a407c9005c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ab0ad47f18952f0014e01714435309f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">GetType</a> () const</td></tr>\n<tr class=\"separator:a9ab0ad47f18952f0014e01714435309f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c225923c45cf941c0b3e9d16897411d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">GetProperty</a> () const</td></tr>\n<tr class=\"separator:a0c225923c45cf941c0b3e9d16897411d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c43d7ae57a787c8ea3f69341d98be2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">GetColor</a> () const</td></tr>\n<tr class=\"separator:a0c43d7ae57a787c8ea3f69341d98be2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ab043c6f5e8a512ac9ca34916b43485\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">GetSpecularWeight</a> () const</td></tr>\n<tr class=\"separator:a2ab043c6f5e8a512ac9ca34916b43485\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bfc4e66a2677349bdd4cec129005d51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">GetSpecularExponent</a> () const</td></tr>\n<tr class=\"separator:a8bfc4e66a2677349bdd4cec129005d51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ffa819bc7d2db2bc228ae5649fbf5cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">GetSpecularTransparency</a> () const</td></tr>\n<tr class=\"separator:a4ffa819bc7d2db2bc228ae5649fbf5cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25207b8d6b7c4ed0805a732bc196125e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">SetMaterialType</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>)</td></tr>\n<tr class=\"separator:a25207b8d6b7c4ed0805a732bc196125e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a37155313cda78e8032afeed80b2dc8bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">SetMaterialFilter</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a>)</td></tr>\n<tr class=\"separator:a37155313cda78e8032afeed80b2dc8bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15456a50f775b0b406e376947b71bb04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">SetMaterialProperty</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a>)</td></tr>\n<tr class=\"separator:a15456a50f775b0b406e376947b71bb04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac450fbb7d4e815d5d84aee35acf40fc8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">SetColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a>)</td></tr>\n<tr class=\"separator:ac450fbb7d4e815d5d84aee35acf40fc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a059b96f9b911c30041d21d47ac27cb6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">SetSpecular</a> (float weight, float exponent, float transparency)</td></tr>\n<tr class=\"separator:a059b96f9b911c30041d21d47ac27cb6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ec5c89d070ff541a3ac8b449524a1be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">SetReflectivity</a> (float <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a>)</td></tr>\n<tr class=\"separator:a9ec5c89d070ff541a3ac8b449524a1be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0dd09cbb341520b030f16cc4f64a2689\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">SetTextureType</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a>)</td></tr>\n<tr class=\"separator:a0dd09cbb341520b030f16cc4f64a2689\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f29589bc4853e8f7a7b321be58fc51b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">SetSource</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a>)</td></tr>\n<tr class=\"separator:a5f29589bc4853e8f7a7b321be58fc51b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfdd1c7fb5e2c4057855d2dcf7ee75a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">MakePattern</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color1, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color2)</td></tr>\n<tr class=\"memdesc:acfdd1c7fb5e2c4057855d2dcf7ee75a7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Makes <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> a pattern.  <a href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">More...</a><br /></td></tr>\n<tr class=\"separator:acfdd1c7fb5e2c4057855d2dcf7ee75a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a50eea94634fac18b6a8fc13332f9f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a0a50eea94634fac18b6a8fc13332f9f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3006d4a771167841597b0ee169213744\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"memdesc:a3006d4a771167841597b0ee169213744\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes material textures to GPU.  <a href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">More...</a><br /></td></tr>\n<tr class=\"separator:a3006d4a771167841597b0ee169213744\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefa2777f79de1882362e0fc50099a46e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">Unload</a> ()</td></tr>\n<tr class=\"separator:aefa2777f79de1882362e0fc50099a46e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a79794b5c6356b0a4da39a6c9cf468fbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"memdesc:a79794b5c6356b0a4da39a6c9cf468fbc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a>.  <a href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">More...</a><br /></td></tr>\n<tr class=\"separator:a79794b5c6356b0a4da39a6c9cf468fbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c1c97007d7229c7adb8a4e9986e70d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>)</td></tr>\n<tr class=\"memdesc:a25c1c97007d7229c7adb8a4e9986e70d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a material.  <a href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">More...</a><br /></td></tr>\n<tr class=\"separator:a25c1c97007d7229c7adb8a4e9986e70d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d94a73e4b23271686808101fd33211a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">LoadMaterialInfo</a> (const char *filename)</td></tr>\n<tr class=\"memdesc:a5d94a73e4b23271686808101fd33211a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> definition file.  <a href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">More...</a><br /></td></tr>\n<tr class=\"separator:a5d94a73e4b23271686808101fd33211a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5a6e15bdcaf42aaab5e8553733663037\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">texture</a> = {}</td></tr>\n<tr class=\"separator:a5a6e15bdcaf42aaab5e8553733663037\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adafa815945158f89825308d5286869d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a> = <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">MATERIAL_TEXTURE</a></td></tr>\n<tr class=\"separator:adafa815945158f89825308d5286869d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8793fc03d8f1a34076f3af8739323a42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a> = <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">FILTER_NEAREST</a></td></tr>\n<tr class=\"separator:a8793fc03d8f1a34076f3af8739323a42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a758d1a53191fd27bec22aa269b1edd21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a> = <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">PROPERTY_METAL</a></td></tr>\n<tr class=\"separator:a758d1a53191fd27bec22aa269b1edd21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5eecc16043ab3c30d158f22429c3fd43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a> = <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">TEXTURE_SAME</a></td></tr>\n<tr class=\"separator:a5eecc16043ab3c30d158f22429c3fd43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1af831cde7f02d1d9c76c2223638197\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">material</a> = {.generic = nullptr}</td></tr>\n<tr class=\"separator:aa1af831cde7f02d1d9c76c2223638197\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0106a7e3c671374dcfd7b68b7b363394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a> = nullptr</td></tr>\n<tr class=\"separator:a0106a7e3c671374dcfd7b68b7b363394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22ce9caef788daf431d1e339fe72423d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a22ce9caef788daf431d1e339fe72423d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf5a270cd06229986d2953ff2b2d9944\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">specular_weight</a> = 0.0f</td></tr>\n<tr class=\"separator:acf5a270cd06229986d2953ff2b2d9944\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace75dc47785b62f847b18bd282ee140b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">specular_exponent</a> = 1.0f</td></tr>\n<tr class=\"separator:ace75dc47785b62f847b18bd282ee140b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a840d1b1dc3b84dc2a5b4b7f24e02e8c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">specular_transparency</a> = 0.0f</td></tr>\n<tr class=\"separator:a840d1b1dc3b84dc2a5b4b7f24e02e8c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f91bdfa808477343ccdc76aaeb8abd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a> = 0.0f</td></tr>\n<tr class=\"separator:a9f91bdfa808477343ccdc76aaeb8abd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39fdf6cc003568ca64a0b47af65d0cca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">width</a> = 0</td></tr>\n<tr class=\"separator:a39fdf6cc003568ca64a0b47af65d0cca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51a02ef0d56c1cf312bbb92c97087e7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">height</a> = 0</td></tr>\n<tr class=\"separator:a51a02ef0d56c1cf312bbb92c97087e7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa342a4e570d577fd626ee7999ca2fd2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">channels</a> = 0</td></tr>\n<tr class=\"separator:aa342a4e570d577fd626ee7999ca2fd2b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56f47f2d65d43e654d0abf9d104dce3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">texture_data</a> = nullptr</td></tr>\n<tr class=\"separator:a56f47f2d65d43e654d0abf9d104dce3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10304337c81204bdcf59fb2ae03e9428\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">approx_vram_usage</a> = 0</td></tr>\n<tr class=\"separator:a10304337c81204bdcf59fb2ae03e9428\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a3292175d54d93d126ba2829249316344\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344\">Sprite</a></td></tr>\n<tr class=\"separator:a3292175d54d93d126ba2829249316344\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/render/material.html\">https://racenis.github.io/tram-sdk/documentation/render/material.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5174425b4875181d93adc3926d2d7441\" name=\"a5174425b4875181d93adc3926d2d7441\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5174425b4875181d93adc3926d2d7441\">&#9670;&nbsp;</a></span>Material() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Material::Material </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7953b137f0390f6e729efe9e9cf86aa3\" name=\"a7953b137f0390f6e729efe9e9cf86aa3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7953b137f0390f6e729efe9e9cf86aa3\">&#9670;&nbsp;</a></span>Material() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Material::Material </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a79794b5c6356b0a4da39a6c9cf468fbc\" name=\"a79794b5c6356b0a4da39a6c9cf468fbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79794b5c6356b0a4da39a6c9cf468fbc\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * tram::Render::Material::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a>. </p>\n<p >Finds a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> by its associated name. If <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> with that names does not exist, then it is created (with the TEXTURE_LIGHTMAP type). In addition, for a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> to be found, it must have been created with the <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\" title=\"Loads a Material definition file.\">LoadMaterialInfo()</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\" title=\"Creates a material.\">Make()</a> or <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\" title=\"Finds a Material.\">Find()</a> methods. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always returns a pointer to a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a0c43d7ae57a787c8ea3f69341d98be2d\" name=\"a0c43d7ae57a787c8ea3f69341d98be2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c43d7ae57a787c8ea3f69341d98be2d\">&#9670;&nbsp;</a></span>GetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Material::GetColor </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a98628ad183a5289b9f6f7a407c9005c0\" name=\"a98628ad183a5289b9f6f7a407c9005c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98628ad183a5289b9f6f7a407c9005c0\">&#9670;&nbsp;</a></span>GetHeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Material::GetHeight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a22ae5b8db7d434e07318cf201defc953\" name=\"a22ae5b8db7d434e07318cf201defc953\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22ae5b8db7d434e07318cf201defc953\">&#9670;&nbsp;</a></span>GetMaterial()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> tram::Render::Material::GetMaterial </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0c225923c45cf941c0b3e9d16897411d\" name=\"a0c225923c45cf941c0b3e9d16897411d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c225923c45cf941c0b3e9d16897411d\">&#9670;&nbsp;</a></span>GetProperty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> tram::Render::Material::GetProperty </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8bfc4e66a2677349bdd4cec129005d51\" name=\"a8bfc4e66a2677349bdd4cec129005d51\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8bfc4e66a2677349bdd4cec129005d51\">&#9670;&nbsp;</a></span>GetSpecularExponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::GetSpecularExponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ffa819bc7d2db2bc228ae5649fbf5cd\" name=\"a4ffa819bc7d2db2bc228ae5649fbf5cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ffa819bc7d2db2bc228ae5649fbf5cd\">&#9670;&nbsp;</a></span>GetSpecularTransparency()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::GetSpecularTransparency </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2ab043c6f5e8a512ac9ca34916b43485\" name=\"a2ab043c6f5e8a512ac9ca34916b43485\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ab043c6f5e8a512ac9ca34916b43485\">&#9670;&nbsp;</a></span>GetSpecularWeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::GetSpecularWeight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7364618a398768519758ff9ffd7b3c4b\" name=\"a7364618a398768519758ff9ffd7b3c4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7364618a398768519758ff9ffd7b3c4b\">&#9670;&nbsp;</a></span>GetTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> tram::Render::Material::GetTexture </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ab0ad47f18952f0014e01714435309f\" name=\"a9ab0ad47f18952f0014e01714435309f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ab0ad47f18952f0014e01714435309f\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::Material::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c06e86d3701b7377e4a86f4d6faeaac\" name=\"a3c06e86d3701b7377e4a86f4d6faeaac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c06e86d3701b7377e4a86f4d6faeaac\">&#9670;&nbsp;</a></span>GetWidth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Material::GetWidth </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a50eea94634fac18b6a8fc13332f9f5\" name=\"a0a50eea94634fac18b6a8fc13332f9f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a50eea94634fac18b6a8fc13332f9f5\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a3006d4a771167841597b0ee169213744\" name=\"a3006d4a771167841597b0ee169213744\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3006d4a771167841597b0ee169213744\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Pushes material textures to GPU. </p>\n<p >Except if software rendering is used, in which case the texures will merely be copied and converted. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a5d94a73e4b23271686808101fd33211a\" name=\"a5d94a73e4b23271686808101fd33211a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d94a73e4b23271686808101fd33211a\">&#9670;&nbsp;</a></span>LoadMaterialInfo()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::LoadMaterialInfo </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> definition file. </p>\n\n</div>\n</div>\n<a id=\"a25c1c97007d7229c7adb8a4e9986e70d\" name=\"a25c1c97007d7229c7adb8a4e9986e70d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25c1c97007d7229c7adb8a4e9986e70d\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * tram::Render::Material::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a material. </p>\n<p >If a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> already exists with that name, then the existing <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> is returned. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always returns a pointer to a <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"acfdd1c7fb5e2c4057855d2dcf7ee75a7\" name=\"acfdd1c7fb5e2c4057855d2dcf7ee75a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">&#9670;&nbsp;</a></span>MakePattern()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::MakePattern </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Makes <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> a pattern. </p>\n<p >This method does the same thing as <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">LoadFromDisk()</a>, but instead of loading the texture from disk, it will generate a 64x64 pixel checkerboard pattern, like the one used for errored materials. </p>\n\n</div>\n</div>\n<a id=\"ac450fbb7d4e815d5d84aee35acf40fc8\" name=\"ac450fbb7d4e815d5d84aee35acf40fc8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac450fbb7d4e815d5d84aee35acf40fc8\">&#9670;&nbsp;</a></span>SetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a37155313cda78e8032afeed80b2dc8bc\" name=\"a37155313cda78e8032afeed80b2dc8bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a37155313cda78e8032afeed80b2dc8bc\">&#9670;&nbsp;</a></span>SetMaterialFilter()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetMaterialFilter </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a>&#160;</td>\n          <td class=\"paramname\"><em>filter</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15456a50f775b0b406e376947b71bb04\" name=\"a15456a50f775b0b406e376947b71bb04\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15456a50f775b0b406e376947b71bb04\">&#9670;&nbsp;</a></span>SetMaterialProperty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetMaterialProperty </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a>&#160;</td>\n          <td class=\"paramname\"><em>property</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25207b8d6b7c4ed0805a732bc196125e\" name=\"a25207b8d6b7c4ed0805a732bc196125e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25207b8d6b7c4ed0805a732bc196125e\">&#9670;&nbsp;</a></span>SetMaterialType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetMaterialType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ec5c89d070ff541a3ac8b449524a1be\" name=\"a9ec5c89d070ff541a3ac8b449524a1be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ec5c89d070ff541a3ac8b449524a1be\">&#9670;&nbsp;</a></span>SetReflectivity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetReflectivity </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>reflectivity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f29589bc4853e8f7a7b321be58fc51b\" name=\"a5f29589bc4853e8f7a7b321be58fc51b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f29589bc4853e8f7a7b321be58fc51b\">&#9670;&nbsp;</a></span>SetSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a059b96f9b911c30041d21d47ac27cb6f\" name=\"a059b96f9b911c30041d21d47ac27cb6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a059b96f9b911c30041d21d47ac27cb6f\">&#9670;&nbsp;</a></span>SetSpecular()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetSpecular </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>weight</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>exponent</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>transparency</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0dd09cbb341520b030f16cc4f64a2689\" name=\"a0dd09cbb341520b030f16cc4f64a2689\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0dd09cbb341520b030f16cc4f64a2689\">&#9670;&nbsp;</a></span>SetTextureType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::SetTextureType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a>&#160;</td>\n          <td class=\"paramname\"><em>texture_type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aefa2777f79de1882362e0fc50099a46e\" name=\"aefa2777f79de1882362e0fc50099a46e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefa2777f79de1882362e0fc50099a46e\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Material::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a3292175d54d93d126ba2829249316344\" name=\"a3292175d54d93d126ba2829249316344\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3292175d54d93d126ba2829249316344\">&#9670;&nbsp;</a></span>Sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a10304337c81204bdcf59fb2ae03e9428\" name=\"a10304337c81204bdcf59fb2ae03e9428\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10304337c81204bdcf59fb2ae03e9428\">&#9670;&nbsp;</a></span>approx_vram_usage</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::Material::approx_vram_usage = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa342a4e570d577fd626ee7999ca2fd2b\" name=\"aa342a4e570d577fd626ee7999ca2fd2b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa342a4e570d577fd626ee7999ca2fd2b\">&#9670;&nbsp;</a></span>channels</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t tram::Render::Material::channels = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a22ce9caef788daf431d1e339fe72423d\" name=\"a22ce9caef788daf431d1e339fe72423d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22ce9caef788daf431d1e339fe72423d\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Material::color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8793fc03d8f1a34076f3af8739323a42\" name=\"a8793fc03d8f1a34076f3af8739323a42\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8793fc03d8f1a34076f3af8739323a42\">&#9670;&nbsp;</a></span>filter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> tram::Render::Material::filter = <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">FILTER_NEAREST</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51a02ef0d56c1cf312bbb92c97087e7b\" name=\"a51a02ef0d56c1cf312bbb92c97087e7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51a02ef0d56c1cf312bbb92c97087e7b\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Material::height = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1af831cde7f02d1d9c76c2223638197\" name=\"aa1af831cde7f02d1d9c76c2223638197\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1af831cde7f02d1d9c76c2223638197\">&#9670;&nbsp;</a></span>material</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> tram::Render::Material::material = {.generic = nullptr}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a758d1a53191fd27bec22aa269b1edd21\" name=\"a758d1a53191fd27bec22aa269b1edd21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a758d1a53191fd27bec22aa269b1edd21\">&#9670;&nbsp;</a></span>property</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> tram::Render::Material::property = <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">PROPERTY_METAL</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f91bdfa808477343ccdc76aaeb8abd6\" name=\"a9f91bdfa808477343ccdc76aaeb8abd6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f91bdfa808477343ccdc76aaeb8abd6\">&#9670;&nbsp;</a></span>reflectivity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::reflectivity = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0106a7e3c671374dcfd7b68b7b363394\" name=\"a0106a7e3c671374dcfd7b68b7b363394\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0106a7e3c671374dcfd7b68b7b363394\">&#9670;&nbsp;</a></span>source</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* tram::Render::Material::source = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ace75dc47785b62f847b18bd282ee140b\" name=\"ace75dc47785b62f847b18bd282ee140b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace75dc47785b62f847b18bd282ee140b\">&#9670;&nbsp;</a></span>specular_exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::specular_exponent = 1.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a840d1b1dc3b84dc2a5b4b7f24e02e8c6\" name=\"a840d1b1dc3b84dc2a5b4b7f24e02e8c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">&#9670;&nbsp;</a></span>specular_transparency</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::specular_transparency = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf5a270cd06229986d2953ff2b2d9944\" name=\"acf5a270cd06229986d2953ff2b2d9944\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf5a270cd06229986d2953ff2b2d9944\">&#9670;&nbsp;</a></span>specular_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Material::specular_weight = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a6e15bdcaf42aaab5e8553733663037\" name=\"a5a6e15bdcaf42aaab5e8553733663037\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a6e15bdcaf42aaab5e8553733663037\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> tram::Render::Material::texture = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56f47f2d65d43e654d0abf9d104dce3d\" name=\"a56f47f2d65d43e654d0abf9d104dce3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56f47f2d65d43e654d0abf9d104dce3d\">&#9670;&nbsp;</a></span>texture_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t* tram::Render::Material::texture_data = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5eecc16043ab3c30d158f22429c3fd43\" name=\"a5eecc16043ab3c30d158f22429c3fd43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5eecc16043ab3c30d158f22429c3fd43\">&#9670;&nbsp;</a></span>texture_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> tram::Render::Material::texture_type = <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">TEXTURE_SAME</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adafa815945158f89825308d5286869d2\" name=\"adafa815945158f89825308d5286869d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adafa815945158f89825308d5286869d2\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::Material::type = <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">MATERIAL_TEXTURE</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39fdf6cc003568ca64a0b47af65d0cca\" name=\"a39fdf6cc003568ca64a0b47af65d0cca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39fdf6cc003568ca64a0b47af65d0cca\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::Material::width = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"material_8h_source.html\">material.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"material_8cpp.html\">material.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_model-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Model Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">aabb_max</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">aabb_min</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">approx_vram_usage</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">armature</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">DrawAABB</a>(vec3 position, quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">fade_far</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">fade_near</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">FindAllFromAABB</a>(vec3 min, vec3 max, std::vector&lt; AABBTriangle &gt; &amp;result)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">FindAllFromRay</a>(vec3 ray_pos, vec3 ray_dir, std::vector&lt; AABBTriangle &gt; &amp;result)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">GetAABBMax</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">GetAABBMin</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">GetArmature</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">GetFarDistance</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">GetIndexArray</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">GetIndexRanges</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">GetMaterials</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">GetNearDistance</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">GetOrigin</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">GetVertexArray</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">GetVertexFormat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">index_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">index_ranges</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">materials</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">Model</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">model_aabb</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">model_data</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">origin</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">SetFarDistance</a>(float dist)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">SetNearDistance</a>(float dist)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">source</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">vertex_format</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_model.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Model Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_render_1_1_model-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Model Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">model.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::Model:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_1_1_model.png\" usemap=\"#tram::Render::Model_map\" alt=\"\"/>\n  <map id=\"tram::Render::Model_map\" name=\"tram::Render::Model_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,124,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9b316fb88f81c47f0af41604333df822\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">Model</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a9b316fb88f81c47f0af41604333df822\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10296fe276ff9ac4d87dc9db6451092f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a10296fe276ff9ac4d87dc9db6451092f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d4127ce3dd4bd14ca6c2a559137a57e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:a4d4127ce3dd4bd14ca6c2a559137a57e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e5db9d7130f9cda66ad3be78026c673\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">Unload</a> ()</td></tr>\n<tr class=\"separator:a7e5db9d7130f9cda66ad3be78026c673\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a878a07665c85cc2b0b45e9eed4012a56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">GetVertexFormat</a> () const</td></tr>\n<tr class=\"separator:a878a07665c85cc2b0b45e9eed4012a56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac05721211dc33f67e5f59a4da99b4b96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">GetVertexArray</a> () const</td></tr>\n<tr class=\"separator:ac05721211dc33f67e5f59a4da99b4b96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a435b6a7e005789637eacb30bc37bdbb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">GetIndexArray</a> () const</td></tr>\n<tr class=\"separator:a435b6a7e005789637eacb30bc37bdbb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a823633680904cb6940047f5aeec3ef4e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">GetArmature</a> () const</td></tr>\n<tr class=\"separator:a823633680904cb6940047f5aeec3ef4e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae764be80aa1071ca7f459bb7b341fd8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">GetMaterials</a> () const</td></tr>\n<tr class=\"separator:ae764be80aa1071ca7f459bb7b341fd8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71b7db1a28b591e3d4fa7eb58b6c196d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">GetIndexRanges</a> () const</td></tr>\n<tr class=\"separator:a71b7db1a28b591e3d4fa7eb58b6c196d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1154b475ba52ad0bcae60926b9a1a014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">DrawAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"memdesc:a1154b475ba52ad0bcae60926b9a1a014\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> tree.  <a href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">More...</a><br /></td></tr>\n<tr class=\"separator:a1154b475ba52ad0bcae60926b9a1a014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c38cde838ea3f56d2e77c23c8a1d77f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">FindAllFromRay</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> &gt; &amp;result)</td></tr>\n<tr class=\"memdesc:a3c38cde838ea3f56d2e77c23c8a1d77f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds triangles that intersect ray.  <a href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">More...</a><br /></td></tr>\n<tr class=\"separator:a3c38cde838ea3f56d2e77c23c8a1d77f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c1e5a51904349dbac4e6055b54f087a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">FindAllFromAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> &gt; &amp;result)</td></tr>\n<tr class=\"separator:a6c1e5a51904349dbac4e6055b54f087a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a181f0a0d0b56d4f7235181ddd1cbeec0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">GetAABBMin</a> () const</td></tr>\n<tr class=\"separator:a181f0a0d0b56d4f7235181ddd1cbeec0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6e9404f95096afaea9226fe975e697b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">GetAABBMax</a> () const</td></tr>\n<tr class=\"separator:ab6e9404f95096afaea9226fe975e697b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d3484e3d729819081e525321fa0cc22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">GetOrigin</a> () const</td></tr>\n<tr class=\"separator:a3d3484e3d729819081e525321fa0cc22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf703730644d7fab65d1a9a21534b1d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">GetNearDistance</a> () const</td></tr>\n<tr class=\"separator:aaf703730644d7fab65d1a9a21534b1d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6552762c2c420643726ac9e6dac495af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">GetFarDistance</a> () const</td></tr>\n<tr class=\"separator:a6552762c2c420643726ac9e6dac495af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e2bf8fce6f1b151e5ce019d437f7604\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">SetNearDistance</a> (float dist)</td></tr>\n<tr class=\"separator:a5e2bf8fce6f1b151e5ce019d437f7604\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0073d6b4982cb158d3d7289afa9266\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">SetFarDistance</a> (float dist)</td></tr>\n<tr class=\"separator:acf0073d6b4982cb158d3d7289afa9266\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a02abf1c725962593c6bbfa17d4fa2e43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a02abf1c725962593c6bbfa17d4fa2e43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af924ab3580f9d3e0b5fb773fa2afd8d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">vertex_format</a> = <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">VERTEX_STATIC</a></td></tr>\n<tr class=\"separator:af924ab3580f9d3e0b5fb773fa2afd8d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5b0370a3b31cb6fa1b9ae0ad969a5aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">vertex_array</a> = {}</td></tr>\n<tr class=\"separator:ab5b0370a3b31cb6fa1b9ae0ad969a5aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5dee7ccfa3ff825f135ab07ae71a719\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">index_array</a> = {}</td></tr>\n<tr class=\"separator:aa5dee7ccfa3ff825f135ab07ae71a719\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6dcde60794df195d5cbdc942b9e7f712\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">index_ranges</a></td></tr>\n<tr class=\"separator:a6dcde60794df195d5cbdc942b9e7f712\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a743debf3087f34ef70b7b98d5d1d3e6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">aabb_min</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a743debf3087f34ef70b7b98d5d1d3e6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a030f9e0ab4d7afbaf589eb18e767c3a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">aabb_max</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a030f9e0ab4d7afbaf589eb18e767c3a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa81edd4e91330f0613abeecc945e323d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">fade_near</a> = 0.0f</td></tr>\n<tr class=\"separator:aa81edd4e91330f0613abeecc945e323d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab23a8639f37acbb57c7b2bd59f72f0e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">fade_far</a> = INFINITY</td></tr>\n<tr class=\"separator:ab23a8639f37acbb57c7b2bd59f72f0e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff4ea02ba501bed88104e795ca72f100\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">origin</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aff4ea02ba501bed88104e795ca72f100\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add4100bd27f40383014ada9f1038e1d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">materials</a></td></tr>\n<tr class=\"separator:add4100bd27f40383014ada9f1038e1d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac23726058a2d599fbcf09c6d774f6c91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">source</a> = nullptr</td></tr>\n<tr class=\"separator:ac23726058a2d599fbcf09c6d774f6c91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7da36392dce1f4256a6ce67620501430\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">armature</a></td></tr>\n<tr class=\"separator:a7da36392dce1f4256a6ce67620501430\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7559c74fb4b4ebb3c643dc721ec84167\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">model_data</a> = nullptr</td></tr>\n<tr class=\"separator:a7559c74fb4b4ebb3c643dc721ec84167\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5308aff655f38cf12503c88a7d82cd01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">model_aabb</a> = nullptr</td></tr>\n<tr class=\"separator:a5308aff655f38cf12503c88a7d82cd01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69f11a78aa41ff398b91ffde31efb2b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">approx_vram_usage</a> = 0</td></tr>\n<tr class=\"separator:a69f11a78aa41ff398b91ffde31efb2b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a9b316fb88f81c47f0af41604333df822\" name=\"a9b316fb88f81c47f0af41604333df822\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b316fb88f81c47f0af41604333df822\">&#9670;&nbsp;</a></span>Model()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Model::Model </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1154b475ba52ad0bcae60926b9a1a014\" name=\"a1154b475ba52ad0bcae60926b9a1a014\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1154b475ba52ad0bcae60926b9a1a014\">&#9670;&nbsp;</a></span>DrawAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::DrawAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws the <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> tree. </p>\n<p >Draws the <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> tree of the 3D model using debug lines. This might be useful for debugging if raycasts or some other lookups fail on the 3D model. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">position</td><td>Position of the 3D model in the scene. </td></tr>\n    <tr><td class=\"paramname\">rotation</td><td>Rotation of the 3D model in the scene. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a02abf1c725962593c6bbfa17d4fa2e43\" name=\"a02abf1c725962593c6bbfa17d4fa2e43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02abf1c725962593c6bbfa17d4fa2e43\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> * tram::Render::Model::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6c1e5a51904349dbac4e6055b54f087a\" name=\"a6c1e5a51904349dbac4e6055b54f087a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c1e5a51904349dbac4e6055b54f087a\">&#9670;&nbsp;</a></span>FindAllFromAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::FindAllFromAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c38cde838ea3f56d2e77c23c8a1d77f\" name=\"a3c38cde838ea3f56d2e77c23c8a1d77f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c38cde838ea3f56d2e77c23c8a1d77f\">&#9670;&nbsp;</a></span>FindAllFromRay()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::FindAllFromRay </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds triangles that intersect ray. </p>\n<p >Finds the triangles that intersect the given ray. The ray's origin and direction must be provided in the local model coordinates. </p>\n\n</div>\n</div>\n<a id=\"ab6e9404f95096afaea9226fe975e697b\" name=\"ab6e9404f95096afaea9226fe975e697b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6e9404f95096afaea9226fe975e697b\">&#9670;&nbsp;</a></span>GetAABBMax()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::GetAABBMax </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a181f0a0d0b56d4f7235181ddd1cbeec0\" name=\"a181f0a0d0b56d4f7235181ddd1cbeec0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a181f0a0d0b56d4f7235181ddd1cbeec0\">&#9670;&nbsp;</a></span>GetAABBMin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::GetAABBMin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a823633680904cb6940047f5aeec3ef4e\" name=\"a823633680904cb6940047f5aeec3ef4e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a823633680904cb6940047f5aeec3ef4e\">&#9670;&nbsp;</a></span>GetArmature()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a> &gt; &amp; tram::Render::Model::GetArmature </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6552762c2c420643726ac9e6dac495af\" name=\"a6552762c2c420643726ac9e6dac495af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6552762c2c420643726ac9e6dac495af\">&#9670;&nbsp;</a></span>GetFarDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Model::GetFarDistance </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a435b6a7e005789637eacb30bc37bdbb9\" name=\"a435b6a7e005789637eacb30bc37bdbb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a435b6a7e005789637eacb30bc37bdbb9\">&#9670;&nbsp;</a></span>GetIndexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> tram::Render::Model::GetIndexArray </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71b7db1a28b591e3d4fa7eb58b6c196d\" name=\"a71b7db1a28b591e3d4fa7eb58b6c196d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71b7db1a28b591e3d4fa7eb58b6c196d\">&#9670;&nbsp;</a></span>GetIndexRanges()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a> &gt; &amp; tram::Render::Model::GetIndexRanges </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae764be80aa1071ca7f459bb7b341fd8e\" name=\"ae764be80aa1071ca7f459bb7b341fd8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae764be80aa1071ca7f459bb7b341fd8e\">&#9670;&nbsp;</a></span>GetMaterials()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * &gt; &amp; tram::Render::Model::GetMaterials </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaf703730644d7fab65d1a9a21534b1d7\" name=\"aaf703730644d7fab65d1a9a21534b1d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf703730644d7fab65d1a9a21534b1d7\">&#9670;&nbsp;</a></span>GetNearDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Model::GetNearDistance </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d3484e3d729819081e525321fa0cc22\" name=\"a3d3484e3d729819081e525321fa0cc22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d3484e3d729819081e525321fa0cc22\">&#9670;&nbsp;</a></span>GetOrigin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::GetOrigin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac05721211dc33f67e5f59a4da99b4b96\" name=\"ac05721211dc33f67e5f59a4da99b4b96\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac05721211dc33f67e5f59a4da99b4b96\">&#9670;&nbsp;</a></span>GetVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> tram::Render::Model::GetVertexArray </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a878a07665c85cc2b0b45e9eed4012a56\" name=\"a878a07665c85cc2b0b45e9eed4012a56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a878a07665c85cc2b0b45e9eed4012a56\">&#9670;&nbsp;</a></span>GetVertexFormat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::Model::GetVertexFormat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10296fe276ff9ac4d87dc9db6451092f\" name=\"a10296fe276ff9ac4d87dc9db6451092f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10296fe276ff9ac4d87dc9db6451092f\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a4d4127ce3dd4bd14ca6c2a559137a57e\" name=\"a4d4127ce3dd4bd14ca6c2a559137a57e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d4127ce3dd4bd14ca6c2a559137a57e\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"acf0073d6b4982cb158d3d7289afa9266\" name=\"acf0073d6b4982cb158d3d7289afa9266\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf0073d6b4982cb158d3d7289afa9266\">&#9670;&nbsp;</a></span>SetFarDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::SetFarDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>dist</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e2bf8fce6f1b151e5ce019d437f7604\" name=\"a5e2bf8fce6f1b151e5ce019d437f7604\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e2bf8fce6f1b151e5ce019d437f7604\">&#9670;&nbsp;</a></span>SetNearDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::SetNearDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>dist</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7e5db9d7130f9cda66ad3be78026c673\" name=\"a7e5db9d7130f9cda66ad3be78026c673\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e5db9d7130f9cda66ad3be78026c673\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Model::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a030f9e0ab4d7afbaf589eb18e767c3a2\" name=\"a030f9e0ab4d7afbaf589eb18e767c3a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a030f9e0ab4d7afbaf589eb18e767c3a2\">&#9670;&nbsp;</a></span>aabb_max</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::aabb_max = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a743debf3087f34ef70b7b98d5d1d3e6c\" name=\"a743debf3087f34ef70b7b98d5d1d3e6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a743debf3087f34ef70b7b98d5d1d3e6c\">&#9670;&nbsp;</a></span>aabb_min</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::aabb_min = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69f11a78aa41ff398b91ffde31efb2b7\" name=\"a69f11a78aa41ff398b91ffde31efb2b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69f11a78aa41ff398b91ffde31efb2b7\">&#9670;&nbsp;</a></span>approx_vram_usage</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::Model::approx_vram_usage = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7da36392dce1f4256a6ce67620501430\" name=\"a7da36392dce1f4256a6ce67620501430\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7da36392dce1f4256a6ce67620501430\">&#9670;&nbsp;</a></span>armature</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a>&gt; tram::Render::Model::armature</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab23a8639f37acbb57c7b2bd59f72f0e0\" name=\"ab23a8639f37acbb57c7b2bd59f72f0e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab23a8639f37acbb57c7b2bd59f72f0e0\">&#9670;&nbsp;</a></span>fade_far</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Model::fade_far = INFINITY</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa81edd4e91330f0613abeecc945e323d\" name=\"aa81edd4e91330f0613abeecc945e323d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa81edd4e91330f0613abeecc945e323d\">&#9670;&nbsp;</a></span>fade_near</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::Model::fade_near = 0.0f</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5dee7ccfa3ff825f135ab07ae71a719\" name=\"aa5dee7ccfa3ff825f135ab07ae71a719\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5dee7ccfa3ff825f135ab07ae71a719\">&#9670;&nbsp;</a></span>index_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> tram::Render::Model::index_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6dcde60794df195d5cbdc942b9e7f712\" name=\"a6dcde60794df195d5cbdc942b9e7f712\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6dcde60794df195d5cbdc942b9e7f712\">&#9670;&nbsp;</a></span>index_ranges</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a>&gt; tram::Render::Model::index_ranges</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add4100bd27f40383014ada9f1038e1d1\" name=\"add4100bd27f40383014ada9f1038e1d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add4100bd27f40383014ada9f1038e1d1\">&#9670;&nbsp;</a></span>materials</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>*&gt; tram::Render::Model::materials</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5308aff655f38cf12503c88a7d82cd01\" name=\"a5308aff655f38cf12503c88a7d82cd01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5308aff655f38cf12503c88a7d82cd01\">&#9670;&nbsp;</a></span>model_aabb</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a>* tram::Render::Model::model_aabb = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7559c74fb4b4ebb3c643dc721ec84167\" name=\"a7559c74fb4b4ebb3c643dc721ec84167\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7559c74fb4b4ebb3c643dc721ec84167\">&#9670;&nbsp;</a></span>model_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a>* tram::Render::Model::model_data = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aff4ea02ba501bed88104e795ca72f100\" name=\"aff4ea02ba501bed88104e795ca72f100\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff4ea02ba501bed88104e795ca72f100\">&#9670;&nbsp;</a></span>origin</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Model::origin = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac23726058a2d599fbcf09c6d774f6c91\" name=\"ac23726058a2d599fbcf09c6d774f6c91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac23726058a2d599fbcf09c6d774f6c91\">&#9670;&nbsp;</a></span>source</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a>* tram::Render::Model::source = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab5b0370a3b31cb6fa1b9ae0ad969a5aa\" name=\"ab5b0370a3b31cb6fa1b9ae0ad969a5aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> tram::Render::Model::vertex_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af924ab3580f9d3e0b5fb773fa2afd8d8\" name=\"af924ab3580f9d3e0b5fb773fa2afd8d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af924ab3580f9d3e0b5fb773fa2afd8d8\">&#9670;&nbsp;</a></span>vertex_format</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::Model::vertex_format = <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">VERTEX_STATIC</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8h_source.html\">model.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8cpp.html\">model.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_open_g_l_1_1_shader_buffer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::ShaderBuffer Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_open_g_l_1_1_shader_buffer.html\">ShaderBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::ShaderBuffer Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_sound_graph.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: SoundGraph Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">SoundGraph Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" title=\"SoundGraph resource.\">SoundGraph</a> resource.  \n <a href=\"classtram_1_1_render_1_1_sound_graph.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2graph_8h_source.html\">audio/graph.h</a>&gt;</code></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" title=\"SoundGraph resource.\">SoundGraph</a> resource. </p>\n</div><hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2graph_8cpp.html\">graph.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_sprite-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Sprite Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">frames</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">GetFrames</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">GetMaterial</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">LoadFromMemory</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">material</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">SetMaterial</a>(Material *mat)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">Sprite</a>(UID name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_1_1_sprite.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Sprite Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_render_1_1_sprite-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Sprite Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource.  \n <a href=\"classtram_1_1_render_1_1_sprite.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::Sprite:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_1_1_sprite.png\" usemap=\"#tram::Render::Sprite_map\" alt=\"\"/>\n  <map id=\"tram::Render::Sprite_map\" name=\"tram::Render::Sprite_map\">\n<area href=\"classtram_1_1_resource.html\" alt=\"tram::Resource\" shape=\"rect\" coords=\"0,0,122,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad6ccadbf3c461fc6a579506dab6d40b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">Sprite</a> (<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:ad6ccadbf3c461fc6a579506dab6d40b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c98ddbe57968a26bb8bb5f6a86ca359\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">GetMaterial</a> () const</td></tr>\n<tr class=\"separator:a7c98ddbe57968a26bb8bb5f6a86ca359\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bac764220b653067aaed890943d28cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">SetMaterial</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *mat)</td></tr>\n<tr class=\"separator:a0bac764220b653067aaed890943d28cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a128d2e728b4a7b035b2a2436ad83a77a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"separator:a128d2e728b4a7b035b2a2436ad83a77a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fb88f43158526d7330e36bdbba2f86c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">LoadFromMemory</a> ()</td></tr>\n<tr class=\"separator:a1fb88f43158526d7330e36bdbba2f86c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a163aa5c3d09db10acb35f4446705faa4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">Unload</a> ()</td></tr>\n<tr class=\"separator:a163aa5c3d09db10acb35f4446705faa4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a259105984bbeb254bb9124fba78a2596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">GetFrames</a> ()</td></tr>\n<tr class=\"separator:a259105984bbeb254bb9124fba78a2596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826 inherit pub_methods_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a661555af281cb553323a07a3bf39c08e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a661555af281cb553323a07a3bf39c08e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad1f3d4b42af2c6ae60e8eccac3368d4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">frames</a></td></tr>\n<tr class=\"separator:ad1f3d4b42af2c6ae60e8eccac3368d4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca24e7f82749a755a8118a46b3729a3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">material</a> = nullptr</td></tr>\n<tr class=\"separator:aca24e7f82749a755a8118a46b3729a3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539 inherit pro_attribs_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_resource\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_resource')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4 inherit pub_types_classtram_1_1_resource\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource. </p>\n<p >Sprites essentially just hold positions and sizes of rectangles, which correspond to some kind of features in the textures of the referenced <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a>.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/render/sprite.html\">https://racenis.github.io/tram-sdk/documentation/render/sprite.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad6ccadbf3c461fc6a579506dab6d40b9\" name=\"ad6ccadbf3c461fc6a579506dab6d40b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6ccadbf3c461fc6a579506dab6d40b9\">&#9670;&nbsp;</a></span>Sprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Sprite::Sprite </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a661555af281cb553323a07a3bf39c08e\" name=\"a661555af281cb553323a07a3bf39c08e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a661555af281cb553323a07a3bf39c08e\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> * Sprite::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a259105984bbeb254bb9124fba78a2596\" name=\"a259105984bbeb254bb9124fba78a2596\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a259105984bbeb254bb9124fba78a2596\">&#9670;&nbsp;</a></span>GetFrames()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a> &gt; &amp; tram::Render::Sprite::GetFrames </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c98ddbe57968a26bb8bb5f6a86ca359\" name=\"a7c98ddbe57968a26bb8bb5f6a86ca359\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c98ddbe57968a26bb8bb5f6a86ca359\">&#9670;&nbsp;</a></span>GetMaterial()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> * tram::Render::Sprite::GetMaterial </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a128d2e728b4a7b035b2a2436ad83a77a\" name=\"a128d2e728b4a7b035b2a2436ad83a77a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a128d2e728b4a7b035b2a2436ad83a77a\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Sprite::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a1fb88f43158526d7330e36bdbba2f86c\" name=\"a1fb88f43158526d7330e36bdbba2f86c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fb88f43158526d7330e36bdbba2f86c\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void Sprite::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<a id=\"a0bac764220b653067aaed890943d28cc\" name=\"a0bac764220b653067aaed890943d28cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bac764220b653067aaed890943d28cc\">&#9670;&nbsp;</a></span>SetMaterial()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Sprite::SetMaterial </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td>\n          <td class=\"paramname\"><em>mat</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a163aa5c3d09db10acb35f4446705faa4\" name=\"a163aa5c3d09db10acb35f4446705faa4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a163aa5c3d09db10acb35f4446705faa4\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Sprite::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad1f3d4b42af2c6ae60e8eccac3368d4c\" name=\"ad1f3d4b42af2c6ae60e8eccac3368d4c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1f3d4b42af2c6ae60e8eccac3368d4c\">&#9670;&nbsp;</a></span>frames</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a>&gt; tram::Render::Sprite::frames</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aca24e7f82749a755a8118a46b3729a3b\" name=\"aca24e7f82749a755a8118a46b3729a3b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca24e7f82749a755a8118a46b3729a3b\">&#9670;&nbsp;</a></span>material</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* tram::Render::Sprite::material = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2sprite_8h_source.html\">sprite.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2sprite_8cpp.html\">sprite.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::RenderComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">aabb_tree_leaf</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">draw_list_entries</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">environmentmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">GetLightmap</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">GetLocation</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">GetModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">GetRotation</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">GetScale</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">InsertDrawListEntries</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">RefreshAABB</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">render_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">RenderComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">SetArmature</a>(AnimationComponent *armature)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">SetColor</a>(vec3 color)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">SetDirectionaLight</a>(bool enabled)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">SetEnvironmentMap</a>(Render::Material *material)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">SetLayer</a>(uint32_t layer)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">SetLightmap</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">SetLocation</a>(vec3 nlocation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">SetModel</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">SetRenderDebug</a>(bool enabled)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">SetRotation</a>(quat nrotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">SetScale</a>(vec3 scale)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">SetTextureOffset</a>(name_t material, vec4 offset)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">~RenderComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_render_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::RenderComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_render_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::RenderComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Renders a Model.  \n <a href=\"classtram_1_1_render_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::RenderComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_render_component.png\" usemap=\"#tram::RenderComponent_map\" alt=\"\"/>\n  <map id=\"tram::RenderComponent_map\" name=\"tram::RenderComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,146,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa32cca5b26feda97cbbed341d6633285\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">RenderComponent</a> ()</td></tr>\n<tr class=\"separator:aa32cca5b26feda97cbbed341d6633285\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c087151758ef3a7210c7a8c8f8607dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">~RenderComponent</a> ()</td></tr>\n<tr class=\"separator:a8c087151758ef3a7210c7a8c8f8607dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a743ccc0b2357cec2f80a4db1f5dc301c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">GetModel</a> ()</td></tr>\n<tr class=\"separator:a743ccc0b2357cec2f80a4db1f5dc301c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5feee4df39aba6a4652817159cc5d4c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">GetLightmap</a> ()</td></tr>\n<tr class=\"separator:a5feee4df39aba6a4652817159cc5d4c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4769cf5994097dc687169595ceac02b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">SetModel</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:ab4769cf5994097dc687169595ceac02b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set the model that the component will render.  <a href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">More...</a><br /></td></tr>\n<tr class=\"separator:ab4769cf5994097dc687169595ceac02b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3eb6d145b4258093f8fcd1487edf2874\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">SetLightmap</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:a3eb6d145b4258093f8fcd1487edf2874\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the lightmap for the model.  <a href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">More...</a><br /></td></tr>\n<tr class=\"separator:a3eb6d145b4258093f8fcd1487edf2874\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81729832968e5f5656d3b230cd0f66fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">SetEnvironmentMap</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a> *material)</td></tr>\n<tr class=\"memdesc:a81729832968e5f5656d3b230cd0f66fd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the environment map for the model.  <a href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">More...</a><br /></td></tr>\n<tr class=\"separator:a81729832968e5f5656d3b230cd0f66fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab67dd56c013753efd5c8fa9866daab88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">SetArmature</a> (<a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *armature)</td></tr>\n<tr class=\"memdesc:ab67dd56c013753efd5c8fa9866daab88\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Links an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a>.  <a href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">More...</a><br /></td></tr>\n<tr class=\"separator:ab67dd56c013753efd5c8fa9866daab88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97f294652a7627376510082ca4935490\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">Start</a> ()</td></tr>\n<tr class=\"separator:a97f294652a7627376510082ca4935490\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1c0477f22ef04154367915c0294848b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">GetLocation</a> () const</td></tr>\n<tr class=\"separator:ac1c0477f22ef04154367915c0294848b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb6747392d707e0dca643a0400adef75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">GetRotation</a> () const</td></tr>\n<tr class=\"separator:abb6747392d707e0dca643a0400adef75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82831dd25d49e53768209fe6b22ec736\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">GetScale</a> () const</td></tr>\n<tr class=\"separator:a82831dd25d49e53768209fe6b22ec736\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81f2ac27fa4516443e6a11f3371736d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation)</td></tr>\n<tr class=\"memdesc:a81f2ac27fa4516443e6a11f3371736d4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the location of the model.  <a href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">More...</a><br /></td></tr>\n<tr class=\"separator:a81f2ac27fa4516443e6a11f3371736d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac254a9ca5d3e3aaf19831ed8cba3da74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> nrotation)</td></tr>\n<tr class=\"memdesc:ac254a9ca5d3e3aaf19831ed8cba3da74\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the rotation of the model.  <a href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">More...</a><br /></td></tr>\n<tr class=\"separator:ac254a9ca5d3e3aaf19831ed8cba3da74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4839670e65963fc3c247f01de60e8a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">SetScale</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a>)</td></tr>\n<tr class=\"memdesc:ad4839670e65963fc3c247f01de60e8a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the scale of the model.  <a href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">More...</a><br /></td></tr>\n<tr class=\"separator:ad4839670e65963fc3c247f01de60e8a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af17bf80e41504736aafbed51e68777cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">SetColor</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">color</a>)</td></tr>\n<tr class=\"memdesc:af17bf80e41504736aafbed51e68777cb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the scale of the model.  <a href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">More...</a><br /></td></tr>\n<tr class=\"separator:af17bf80e41504736aafbed51e68777cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7c9df8966b4b2e87c0afbb9b75fffdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">SetLayer</a> (uint32_t <a class=\"el\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">layer</a>)</td></tr>\n<tr class=\"separator:ad7c9df8966b4b2e87c0afbb9b75fffdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0cdc3be1acbe43f6fd315948c73611a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">SetTextureOffset</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> material, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> offset)</td></tr>\n<tr class=\"separator:ad0cdc3be1acbe43f6fd315948c73611a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f3130e436973f3e9f9f949e642df68d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">SetDirectionaLight</a> (bool enabled)</td></tr>\n<tr class=\"memdesc:a6f3130e436973f3e9f9f949e642df68d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the world parameters for model rendering.  <a href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">More...</a><br /></td></tr>\n<tr class=\"separator:a6f3130e436973f3e9f9f949e642df68d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5957906efb717b5596b1c6f12fbe6ded\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">SetRenderDebug</a> (bool enabled)</td></tr>\n<tr class=\"memdesc:a5957906efb717b5596b1c6f12fbe6ded\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets render debugging.  <a href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">More...</a><br /></td></tr>\n<tr class=\"separator:a5957906efb717b5596b1c6f12fbe6ded\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18fa5b9e63b9ef19051e0c705a19e46e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a18fa5b9e63b9ef19051e0c705a19e46e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:aae0ec9b022b64f9cfc19885dc6eee2c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">InsertDrawListEntries</a> ()</td></tr>\n<tr class=\"separator:aae0ec9b022b64f9cfc19885dc6eee2c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51f449b6197db27708cbd4ebfb6ed433\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">RefreshAABB</a> ()</td></tr>\n<tr class=\"separator:a51f449b6197db27708cbd4ebfb6ed433\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a3f3ff752d0389444e9450d9d3c27ac2b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">model</a></td></tr>\n<tr class=\"separator:a3f3ff752d0389444e9450d9d3c27ac2b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d0c1122a6e9b85ccd68fb5b2a3b2914\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">lightmap</a></td></tr>\n<tr class=\"separator:a7d0c1122a6e9b85ccd68fb5b2a3b2914\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8e60fbf5d87ba817101190869396393\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">environmentmap</a></td></tr>\n<tr class=\"separator:ae8e60fbf5d87ba817101190869396393\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a593b1a595fd07f68a4c4aa3fdfeb33c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">draw_list_entries</a></td></tr>\n<tr class=\"separator:a593b1a595fd07f68a4c4aa3fdfeb33c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:affc6cba67cad84483c2dd69ba952a7f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:affc6cba67cad84483c2dd69ba952a7f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a473efffe2b970de9b84d7c55c7e22f72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a473efffe2b970de9b84d7c55c7e22f72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab662c48c42ac7423a1be25def0850aeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ab662c48c42ac7423a1be25def0850aeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb591d2819300ff65ac05acfd171fe4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:aeb591d2819300ff65ac05acfd171fe4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3802d623d0009f2649888be1a23dfba4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a3802d623d0009f2649888be1a23dfba4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9af00bf62b86a65cfecda4579cea9081\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">layer</a> = 0</td></tr>\n<tr class=\"separator:a9af00bf62b86a65cfecda4579cea9081\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae40a30e7729ab549faf072c9b0440ae5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">aabb_tree_leaf</a> = 0</td></tr>\n<tr class=\"separator:ae40a30e7729ab549faf072c9b0440ae5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49a2e872ecfb59e33f5ab7974b01c13f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">render_flags</a> = 0</td></tr>\n<tr class=\"separator:a49a2e872ecfb59e33f5ab7974b01c13f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Renders a Model. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/render.html\">https://racenis.github.io/tram-sdk/documentation/components/render.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aa32cca5b26feda97cbbed341d6633285\" name=\"aa32cca5b26feda97cbbed341d6633285\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa32cca5b26feda97cbbed341d6633285\">&#9670;&nbsp;</a></span>RenderComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::RenderComponent::RenderComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c087151758ef3a7210c7a8c8f8607dd\" name=\"a8c087151758ef3a7210c7a8c8f8607dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c087151758ef3a7210c7a8c8f8607dd\">&#9670;&nbsp;</a></span>~RenderComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::RenderComponent::~RenderComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a18fa5b9e63b9ef19051e0c705a19e46e\" name=\"a18fa5b9e63b9ef19051e0c705a19e46e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18fa5b9e63b9ef19051e0c705a19e46e\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a5feee4df39aba6a4652817159cc5d4c8\" name=\"a5feee4df39aba6a4652817159cc5d4c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5feee4df39aba6a4652817159cc5d4c8\">&#9670;&nbsp;</a></span>GetLightmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::RenderComponent::GetLightmap </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac1c0477f22ef04154367915c0294848b\" name=\"ac1c0477f22ef04154367915c0294848b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1c0477f22ef04154367915c0294848b\">&#9670;&nbsp;</a></span>GetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RenderComponent::GetLocation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a743ccc0b2357cec2f80a4db1f5dc301c\" name=\"a743ccc0b2357cec2f80a4db1f5dc301c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a743ccc0b2357cec2f80a4db1f5dc301c\">&#9670;&nbsp;</a></span>GetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a> * tram::RenderComponent::GetModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abb6747392d707e0dca643a0400adef75\" name=\"abb6747392d707e0dca643a0400adef75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb6747392d707e0dca643a0400adef75\">&#9670;&nbsp;</a></span>GetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::RenderComponent::GetRotation </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a82831dd25d49e53768209fe6b22ec736\" name=\"a82831dd25d49e53768209fe6b22ec736\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82831dd25d49e53768209fe6b22ec736\">&#9670;&nbsp;</a></span>GetScale()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RenderComponent::GetScale </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae0ec9b022b64f9cfc19885dc6eee2c1\" name=\"aae0ec9b022b64f9cfc19885dc6eee2c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae0ec9b022b64f9cfc19885dc6eee2c1\">&#9670;&nbsp;</a></span>InsertDrawListEntries()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::InsertDrawListEntries </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51f449b6197db27708cbd4ebfb6ed433\" name=\"a51f449b6197db27708cbd4ebfb6ed433\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51f449b6197db27708cbd4ebfb6ed433\">&#9670;&nbsp;</a></span>RefreshAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::RefreshAABB </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab67dd56c013753efd5c8fa9866daab88\" name=\"ab67dd56c013753efd5c8fa9866daab88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab67dd56c013753efd5c8fa9866daab88\">&#9670;&nbsp;</a></span>SetArmature()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetArmature </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>armature</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Links an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a>. </p>\n<p >This needs to be set, so that the model can be rendered with the animations played by the <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a>. Alternatively, this can be set to a nullptr, if no animations are to be played. This affects only dynamic models, static models don't play animations. </p>\n\n</div>\n</div>\n<a id=\"af17bf80e41504736aafbed51e68777cb\" name=\"af17bf80e41504736aafbed51e68777cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af17bf80e41504736aafbed51e68777cb\">&#9670;&nbsp;</a></span>SetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the scale of the model. </p>\n\n</div>\n</div>\n<a id=\"a6f3130e436973f3e9f9f949e642df68d\" name=\"a6f3130e436973f3e9f9f949e642df68d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f3130e436973f3e9f9f949e642df68d\">&#9670;&nbsp;</a></span>SetDirectionaLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetDirectionaLight </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the world parameters for model rendering. </p>\n\n</div>\n</div>\n<a id=\"a81729832968e5f5656d3b230cd0f66fd\" name=\"a81729832968e5f5656d3b230cd0f66fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81729832968e5f5656d3b230cd0f66fd\">&#9670;&nbsp;</a></span>SetEnvironmentMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetEnvironmentMap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a> *&#160;</td>\n          <td class=\"paramname\"><em>material</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the environment map for the model. </p>\n\n</div>\n</div>\n<a id=\"ad7c9df8966b4b2e87c0afbb9b75fffdc\" name=\"ad7c9df8966b4b2e87c0afbb9b75fffdc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7c9df8966b4b2e87c0afbb9b75fffdc\">&#9670;&nbsp;</a></span>SetLayer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetLayer </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3eb6d145b4258093f8fcd1487edf2874\" name=\"a3eb6d145b4258093f8fcd1487edf2874\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3eb6d145b4258093f8fcd1487edf2874\">&#9670;&nbsp;</a></span>SetLightmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetLightmap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the lightmap for the model. </p>\n<p >Lightmaps are rendered only for static models, so setting a lightmap for a dynamic model will do nothing. </p>\n\n</div>\n</div>\n<a id=\"a81f2ac27fa4516443e6a11f3371736d4\" name=\"a81f2ac27fa4516443e6a11f3371736d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81f2ac27fa4516443e6a11f3371736d4\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>nlocation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the location of the model. </p>\n\n</div>\n</div>\n<a id=\"ab4769cf5994097dc687169595ceac02b\" name=\"ab4769cf5994097dc687169595ceac02b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4769cf5994097dc687169595ceac02b\">&#9670;&nbsp;</a></span>SetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Set the model that the component will render. </p>\n<p >If the model is not already loaded, then it will be added to loader queue and the component will start when it the loading is complete. </p>\n\n</div>\n</div>\n<a id=\"a5957906efb717b5596b1c6f12fbe6ded\" name=\"a5957906efb717b5596b1c6f12fbe6ded\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5957906efb717b5596b1c6f12fbe6ded\">&#9670;&nbsp;</a></span>SetRenderDebug()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetRenderDebug </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets render debugging. </p>\n<p >If set to false, the 3D model will not have debug text for it when the render debug text rendering is turned on. </p>\n\n</div>\n</div>\n<a id=\"ac254a9ca5d3e3aaf19831ed8cba3da74\" name=\"ac254a9ca5d3e3aaf19831ed8cba3da74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac254a9ca5d3e3aaf19831ed8cba3da74\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>nrotation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the rotation of the model. </p>\n\n</div>\n</div>\n<a id=\"ad4839670e65963fc3c247f01de60e8a3\" name=\"ad4839670e65963fc3c247f01de60e8a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4839670e65963fc3c247f01de60e8a3\">&#9670;&nbsp;</a></span>SetScale()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetScale </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>scale</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the scale of the model. </p>\n\n</div>\n</div>\n<a id=\"ad0cdc3be1acbe43f6fd315948c73611a\" name=\"ad0cdc3be1acbe43f6fd315948c73611a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0cdc3be1acbe43f6fd315948c73611a\">&#9670;&nbsp;</a></span>SetTextureOffset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::SetTextureOffset </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>offset</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97f294652a7627376510082ca4935490\" name=\"a97f294652a7627376510082ca4935490\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97f294652a7627376510082ca4935490\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RenderComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae40a30e7729ab549faf072c9b0440ae5\" name=\"ae40a30e7729ab549faf072c9b0440ae5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae40a30e7729ab549faf072c9b0440ae5\">&#9670;&nbsp;</a></span>aabb_tree_leaf</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::RenderComponent::aabb_tree_leaf = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3802d623d0009f2649888be1a23dfba4\" name=\"a3802d623d0009f2649888be1a23dfba4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3802d623d0009f2649888be1a23dfba4\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RenderComponent::color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a593b1a595fd07f68a4c4aa3fdfeb33c4\" name=\"a593b1a595fd07f68a4c4aa3fdfeb33c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a593b1a595fd07f68a4c4aa3fdfeb33c4\">&#9670;&nbsp;</a></span>draw_list_entries</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a>&gt; tram::RenderComponent::draw_list_entries</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae8e60fbf5d87ba817101190869396393\" name=\"ae8e60fbf5d87ba817101190869396393\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8e60fbf5d87ba817101190869396393\">&#9670;&nbsp;</a></span>environmentmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a>&gt; tram::RenderComponent::environmentmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9af00bf62b86a65cfecda4579cea9081\" name=\"a9af00bf62b86a65cfecda4579cea9081\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9af00bf62b86a65cfecda4579cea9081\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::RenderComponent::layer = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7d0c1122a6e9b85ccd68fb5b2a3b2914\" name=\"a7d0c1122a6e9b85ccd68fb5b2a3b2914\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a>&gt; tram::RenderComponent::lightmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a473efffe2b970de9b84d7c55c7e22f72\" name=\"a473efffe2b970de9b84d7c55c7e22f72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a473efffe2b970de9b84d7c55c7e22f72\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RenderComponent::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3f3ff752d0389444e9450d9d3c27ac2b\" name=\"a3f3ff752d0389444e9450d9d3c27ac2b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f3ff752d0389444e9450d9d3c27ac2b\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a>&gt; tram::RenderComponent::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"affc6cba67cad84483c2dd69ba952a7f3\" name=\"affc6cba67cad84483c2dd69ba952a7f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#affc6cba67cad84483c2dd69ba952a7f3\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a>* tram::RenderComponent::pose = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49a2e872ecfb59e33f5ab7974b01c13f\" name=\"a49a2e872ecfb59e33f5ab7974b01c13f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49a2e872ecfb59e33f5ab7974b01c13f\">&#9670;&nbsp;</a></span>render_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::RenderComponent::render_flags = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab662c48c42ac7423a1be25def0850aeb\" name=\"ab662c48c42ac7423a1be25def0850aeb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab662c48c42ac7423a1be25def0850aeb\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::RenderComponent::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeb591d2819300ff65ac05acfd171fe4c\" name=\"aeb591d2819300ff65ac05acfd171fe4c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb591d2819300ff65ac05acfd171fe4c\">&#9670;&nbsp;</a></span>scale</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RenderComponent::scale = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2render_8h_source.html\">render.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2render_8cpp.html\">render.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_resource-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Resource Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">LoadFromDisk</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">LoadFromMemory</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">Unload</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_resource.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Resource Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_resource-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Resource Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">resource.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Resource:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_resource.png\" usemap=\"#tram::Resource_map\" alt=\"\"/>\n  <map id=\"tram::Resource_map\" name=\"tram::Resource_map\">\n<area href=\"classtram_1_1_audio_1_1_sound.html\" title=\"Audio data resource.\" alt=\"tram::Audio::Sound\" shape=\"rect\" coords=\"185,56,360,80\"/>\n<area href=\"classtram_1_1_audio_1_1_sound_graph.html\" alt=\"tram::Audio::SoundGraph\" shape=\"rect\" coords=\"185,112,360,136\"/>\n<area href=\"classtram_1_1_physics_1_1_collision_model.html\" title=\"Physics CollisionShape model.\" alt=\"tram::Physics::CollisionModel\" shape=\"rect\" coords=\"185,168,360,192\"/>\n<area href=\"classtram_1_1_render_1_1_animation.html\" title=\"Skeletal animation for a 3D model.\" alt=\"tram::Render::Animation\" shape=\"rect\" coords=\"185,224,360,248\"/>\n<area href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\" alt=\"tram::Render::LightGraph\" shape=\"rect\" coords=\"185,280,360,304\"/>\n<area href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\" alt=\"tram::Render::Material\" shape=\"rect\" coords=\"185,336,360,360\"/>\n<area href=\"classtram_1_1_render_1_1_model.html\" alt=\"tram::Render::Model\" shape=\"rect\" coords=\"185,392,360,416\"/>\n<area href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\" alt=\"tram::Render::Sprite\" shape=\"rect\" coords=\"185,448,360,472\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a7a4ce943d482665189305b828868c2a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> { <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>\n, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>\n }</td></tr>\n<tr class=\"separator:a7a4ce943d482665189305b828868c2a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a634805edb61d305a1ed69e35dbe4aeb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>)</td></tr>\n<tr class=\"separator:a634805edb61d305a1ed69e35dbe4aeb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52f4c25fe2642109f7f35088419cd086\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a> () const</td></tr>\n<tr class=\"separator:a52f4c25fe2642109f7f35088419cd086\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2967c7a144291895ef629bb1b5d15acb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a> () const</td></tr>\n<tr class=\"separator:a2967c7a144291895ef629bb1b5d15acb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbe7a1f09b0aa6eec9c5f930180008fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a> () const</td></tr>\n<tr class=\"separator:adbe7a1f09b0aa6eec9c5f930180008fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81746c1ca8f0d380259f8906a79942b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a> () const</td></tr>\n<tr class=\"separator:a81746c1ca8f0d380259f8906a79942b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae12c04585a9bf0e7f6f14e394d649978\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a> ()</td></tr>\n<tr class=\"separator:ae12c04585a9bf0e7f6f14e394d649978\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c975d7c7ef4a34ac9b2dc72977e10f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a> ()</td></tr>\n<tr class=\"separator:a4c975d7c7ef4a34ac9b2dc72977e10f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dc8ecdb5e36b98015fe2f2ea0de6e14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">LoadFromDisk</a> ()=0</td></tr>\n<tr class=\"separator:a5dc8ecdb5e36b98015fe2f2ea0de6e14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabc50d5a44a79da0f323e829711a6b0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">LoadFromMemory</a> ()=0</td></tr>\n<tr class=\"separator:aabc50d5a44a79da0f323e829711a6b0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25c818d18a10010f342eaae99c083826\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a> ()</td></tr>\n<tr class=\"separator:a25c818d18a10010f342eaae99c083826\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11d6ce36b6bf1d520bb63d6413e99299\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">Unload</a> ()=0</td></tr>\n<tr class=\"separator:a11d6ce36b6bf1d520bb63d6413e99299\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad797d797d3fb0e517063f8178b0ff243\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td></tr>\n<tr class=\"separator:ad797d797d3fb0e517063f8178b0ff243\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1fdc62041e403a7a4a49c9860ff00b83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a></td></tr>\n<tr class=\"separator:a1fdc62041e403a7a4a49c9860ff00b83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0e8d76a1a9490a659b8ef54b1357a59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = false</td></tr>\n<tr class=\"separator:af0e8d76a1a9490a659b8ef54b1357a59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f937078a3f7e3df1ad275528e615539\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0</td></tr>\n<tr class=\"separator:a9f937078a3f7e3df1ad275528e615539\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a7a4ce943d482665189305b828868c2a4\" name=\"a7a4ce943d482665189305b828868c2a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a4ce943d482665189305b828868c2a4\">&#9670;&nbsp;</a></span>Status</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">tram::Resource::Status</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\" name=\"a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\"></a>UNLOADED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\" name=\"a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\"></a>LOADED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\" name=\"a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\"></a>READY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a634805edb61d305a1ed69e35dbe4aeb3\" name=\"a634805edb61d305a1ed69e35dbe4aeb3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a634805edb61d305a1ed69e35dbe4aeb3\">&#9670;&nbsp;</a></span>Resource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Resource::Resource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ae12c04585a9bf0e7f6f14e394d649978\" name=\"ae12c04585a9bf0e7f6f14e394d649978\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae12c04585a9bf0e7f6f14e394d649978\">&#9670;&nbsp;</a></span>AddReference()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Resource::AddReference </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2967c7a144291895ef629bb1b5d15acb\" name=\"a2967c7a144291895ef629bb1b5d15acb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2967c7a144291895ef629bb1b5d15acb\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Resource::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adbe7a1f09b0aa6eec9c5f930180008fb\" name=\"adbe7a1f09b0aa6eec9c5f930180008fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbe7a1f09b0aa6eec9c5f930180008fb\">&#9670;&nbsp;</a></span>GetReferences()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Resource::GetReferences </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52f4c25fe2642109f7f35088419cd086\" name=\"a52f4c25fe2642109f7f35088419cd086\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52f4c25fe2642109f7f35088419cd086\">&#9670;&nbsp;</a></span>GetStatus()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a> tram::Resource::GetStatus </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81746c1ca8f0d380259f8906a79942b8\" name=\"a81746c1ca8f0d380259f8906a79942b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81746c1ca8f0d380259f8906a79942b8\">&#9670;&nbsp;</a></span>IsLoadFailed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Resource::IsLoadFailed </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25c818d18a10010f342eaae99c083826\" name=\"a25c818d18a10010f342eaae99c083826\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25c818d18a10010f342eaae99c083826\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Resource::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5dc8ecdb5e36b98015fe2f2ea0de6e14\" name=\"a5dc8ecdb5e36b98015fe2f2ea0de6e14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Resource::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">tram::Render::Model</a>, and <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">tram::Render::Sprite</a>.</p>\n\n</div>\n</div>\n<a id=\"aabc50d5a44a79da0f323e829711a6b0b\" name=\"aabc50d5a44a79da0f323e829711a6b0b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabc50d5a44a79da0f323e829711a6b0b\">&#9670;&nbsp;</a></span>LoadFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Resource::LoadFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">tram::Render::Model</a>, and <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">tram::Render::Sprite</a>.</p>\n\n</div>\n</div>\n<a id=\"a4c975d7c7ef4a34ac9b2dc72977e10f9\" name=\"a4c975d7c7ef4a34ac9b2dc72977e10f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c975d7c7ef4a34ac9b2dc72977e10f9\">&#9670;&nbsp;</a></span>RemoveReference()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Resource::RemoveReference </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a11d6ce36b6bf1d520bb63d6413e99299\" name=\"a11d6ce36b6bf1d520bb63d6413e99299\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11d6ce36b6bf1d520bb63d6413e99299\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Resource::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">tram::Render::Model</a>, and <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">tram::Render::Sprite</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af0e8d76a1a9490a659b8ef54b1357a59\" name=\"af0e8d76a1a9490a659b8ef54b1357a59\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0e8d76a1a9490a659b8ef54b1357a59\">&#9670;&nbsp;</a></span>load_fail</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Resource::load_fail = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1fdc62041e403a7a4a49c9860ff00b83\" name=\"a1fdc62041e403a7a4a49c9860ff00b83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fdc62041e403a7a4a49c9860ff00b83\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Resource::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f937078a3f7e3df1ad275528e615539\" name=\"a9f937078a3f7e3df1ad275528e615539\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f937078a3f7e3df1ad275528e615539\">&#9670;&nbsp;</a></span>references</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Resource::references = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad797d797d3fb0e517063f8178b0ff243\" name=\"ad797d797d3fb0e517063f8178b0ff243\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad797d797d3fb0e517063f8178b0ff243\">&#9670;&nbsp;</a></span>status</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> tram::Resource::status = <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"resource_8h_source.html\">resource.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_resource_proxy-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ResourceProxy&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">get</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071\">operator bool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">operator*</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">operator-&gt;</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">operator=</a>(Resource *res)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">ResourceProxy</a>(EntityComponent *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">set</a>(Resource *new_res)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">~ResourceProxy</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_resource_proxy.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ResourceProxy&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_resource_proxy-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ResourceProxy&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">resource.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac391d66e8b3b4a5da5c27e8b29d3086c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">ResourceProxy</a> (<a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>)</td></tr>\n<tr class=\"separator:ac391d66e8b3b4a5da5c27e8b29d3086c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae53d8742d944de173e8eb489f7aadb63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">~ResourceProxy</a> ()</td></tr>\n<tr class=\"separator:ae53d8742d944de173e8eb489f7aadb63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3481987ea325fd008b4dc41f4ab64dc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">set</a> (<a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *new_res)</td></tr>\n<tr class=\"separator:a3481987ea325fd008b4dc41f4ab64dc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcaffdba60268a1aa0c1ed19249f63b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">get</a> ()</td></tr>\n<tr class=\"separator:abcaffdba60268a1aa0c1ed19249f63b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9b5619de08c190d93c0cf7aa9736df9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">operator=</a> (<a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *res)</td></tr>\n<tr class=\"separator:ae9b5619de08c190d93c0cf7aa9736df9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12bcf3a4db3fb67fbfbca4e904fe6e11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">operator-&gt;</a> ()</td></tr>\n<tr class=\"separator:a12bcf3a4db3fb67fbfbca4e904fe6e11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40da59b39b0d3b1467775c655d06007b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">operator*</a> ()</td></tr>\n<tr class=\"separator:a40da59b39b0d3b1467775c655d06007b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6e978c36ec5f1eafd43563e75d5e071\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071\">operator bool</a> ()</td></tr>\n<tr class=\"separator:aa6e978c36ec5f1eafd43563e75d5e071\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ad0386a7f5c0158ead0174c2cdd25c2b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a></td></tr>\n<tr class=\"separator:ad0386a7f5c0158ead0174c2cdd25c2b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f763b625481fde25be8bcdb2b9387ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a> = nullptr</td></tr>\n<tr class=\"separator:a1f763b625481fde25be8bcdb2b9387ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac391d66e8b3b4a5da5c27e8b29d3086c\" name=\"ac391d66e8b3b4a5da5c27e8b29d3086c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac391d66e8b3b4a5da5c27e8b29d3086c\">&#9670;&nbsp;</a></span>ResourceProxy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>parent</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae53d8742d944de173e8eb489f7aadb63\" name=\"ae53d8742d944de173e8eb489f7aadb63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae53d8742d944de173e8eb489f7aadb63\">&#9670;&nbsp;</a></span>~ResourceProxy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::~<a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"abcaffdba60268a1aa0c1ed19249f63b0\" name=\"abcaffdba60268a1aa0c1ed19249f63b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcaffdba60268a1aa0c1ed19249f63b0\">&#9670;&nbsp;</a></span>get()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::get </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6e978c36ec5f1eafd43563e75d5e071\" name=\"aa6e978c36ec5f1eafd43563e75d5e071\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6e978c36ec5f1eafd43563e75d5e071\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a40da59b39b0d3b1467775c655d06007b\" name=\"a40da59b39b0d3b1467775c655d06007b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40da59b39b0d3b1467775c655d06007b\">&#9670;&nbsp;</a></span>operator*()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::operator* </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a12bcf3a4db3fb67fbfbca4e904fe6e11\" name=\"a12bcf3a4db3fb67fbfbca4e904fe6e11\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12bcf3a4db3fb67fbfbca4e904fe6e11\">&#9670;&nbsp;</a></span>operator-&gt;()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::operator-&gt; </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9b5619de08c190d93c0cf7aa9736df9\" name=\"ae9b5619de08c190d93c0cf7aa9736df9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9b5619de08c190d93c0cf7aa9736df9\">&#9670;&nbsp;</a></span>operator=()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::operator= </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>res</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3481987ea325fd008b4dc41f4ab64dc1\" name=\"a3481987ea325fd008b4dc41f4ab64dc1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3481987ea325fd008b4dc41f4ab64dc1\">&#9670;&nbsp;</a></span>set()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::set </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>new_res</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad0386a7f5c0158ead0174c2cdd25c2b6\" name=\"ad0386a7f5c0158ead0174c2cdd25c2b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0386a7f5c0158ead0174c2cdd25c2b6\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::parent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f763b625481fde25be8bcdb2b9387ea\" name=\"a1f763b625481fde25be8bcdb2b9387ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f763b625481fde25be8bcdb2b9387ea\">&#9670;&nbsp;</a></span>resource</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a>* <a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a>&lt; T &gt;::resource = nullptr</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"resource_8h_source.html\">resource.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_script_1_1_interface-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Script::Interface Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">CallFunction</a>(name_t name, std::vector&lt; Value &gt; parameters)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">Evaluate</a>(const char *code)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">GetGlobal</a>(name_t name)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">GetName</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">LoadScript</a>(const char *path)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">SetFunction</a>(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">SetGlobal</a>(name_t name, value_t value)=0</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_script_1_1_interface.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Script::Interface Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_script_1_1_interface-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Script::Interface Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">script.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Script::Interface:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_script_1_1_interface.png\" usemap=\"#tram::Script::Interface_map\" alt=\"\"/>\n  <map id=\"tram::Script::Interface_map\" name=\"tram::Script::Interface_map\">\n<area href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\" alt=\"tram::Ext::Scripting::Lua::Lua\" shape=\"rect\" coords=\"0,56,169,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a7a41316c12ef797af3cd9fe6cc89bbbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">GetName</a> ()=0</td></tr>\n<tr class=\"separator:a7a41316c12ef797af3cd9fe6cc89bbbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7265800ebc35b2221b25a4ba843b0697\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">GetGlobal</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)=0</td></tr>\n<tr class=\"separator:a7265800ebc35b2221b25a4ba843b0697\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3540126716b8a6a8675cf859ab8152b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">SetGlobal</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value)=0</td></tr>\n<tr class=\"separator:ac3540126716b8a6a8675cf859ab8152b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee03e2ec9682ab4d801bed9eaf53f703\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">SetFunction</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt; parameters, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*function)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>))=0</td></tr>\n<tr class=\"separator:aee03e2ec9682ab4d801bed9eaf53f703\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5aba7adedc8003e03a2cb0d161b9faed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">CallFunction</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt; parameters)=0</td></tr>\n<tr class=\"separator:a5aba7adedc8003e03a2cb0d161b9faed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a133e2307fda40c3d2ab284e809a0f434\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">LoadScript</a> (const char *path)=0</td></tr>\n<tr class=\"separator:a133e2307fda40c3d2ab284e809a0f434\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8cde55720004d7319685163a092ca4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">Evaluate</a> (const char *code)=0</td></tr>\n<tr class=\"separator:ae8cde55720004d7319685163a092ca4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a5aba7adedc8003e03a2cb0d161b9faed\" name=\"a5aba7adedc8003e03a2cb0d161b9faed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5aba7adedc8003e03a2cb0d161b9faed\">&#9670;&nbsp;</a></span>CallFunction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::Interface::CallFunction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>parameters</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae8cde55720004d7319685163a092ca4a\" name=\"ae8cde55720004d7319685163a092ca4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8cde55720004d7319685163a092ca4a\">&#9670;&nbsp;</a></span>Evaluate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::Interface::Evaluate </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>code</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7265800ebc35b2221b25a4ba843b0697\" name=\"a7265800ebc35b2221b25a4ba843b0697\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7265800ebc35b2221b25a4ba843b0697\">&#9670;&nbsp;</a></span>GetGlobal()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::Interface::GetGlobal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7a41316c12ef797af3cd9fe6cc89bbbe\" name=\"a7a41316c12ef797af3cd9fe6cc89bbbe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a41316c12ef797af3cd9fe6cc89bbbe\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Script::Interface::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a133e2307fda40c3d2ab284e809a0f434\" name=\"a133e2307fda40c3d2ab284e809a0f434\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a133e2307fda40c3d2ab284e809a0f434\">&#9670;&nbsp;</a></span>LoadScript()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Script::Interface::LoadScript </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee03e2ec9682ab4d801bed9eaf53f703\" name=\"aee03e2ec9682ab4d801bed9eaf53f703\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee03e2ec9682ab4d801bed9eaf53f703\">&#9670;&nbsp;</a></span>SetFunction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Script::Interface::SetFunction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>parameters</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>)&#160;</td>\n          <td class=\"paramname\"><em>function</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3540126716b8a6a8675cf859ab8152b\" name=\"ac3540126716b8a6a8675cf859ab8152b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3540126716b8a6a8675cf859ab8152b\">&#9670;&nbsp;</a></span>SetGlobal()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Script::Interface::SetGlobal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2script_8h_source.html\">script.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_scriptable-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Scriptable&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">EventHandler</a>(Event &amp;evt)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">SanitizeData</a>(Value &amp;data)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">Scriptable</a>(const SharedEntityData &amp;shared_data, const ValueArray &amp;field_array, name_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">~Scriptable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_scriptable.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Scriptable&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_scriptable-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Scriptable&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides script language subclassing.  \n <a href=\"classtram_1_1_scriptable.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_2script_8h_source.html\">entities/script.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Scriptable&lt; T &gt;:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_scriptable.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a155369bc0f7a32617d2b9addb29daea7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">Scriptable</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;shared_data, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;field_array, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a>)</td></tr>\n<tr class=\"separator:a155369bc0f7a32617d2b9addb29daea7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac46dc1ccdef6f82c56563b4b498d07bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">~Scriptable</a> ()</td></tr>\n<tr class=\"separator:ac46dc1ccdef6f82c56563b4b498d07bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a119e711f82fe681c38b372634754bfe2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">UpdateParameters</a> ()</td></tr>\n<tr class=\"separator:a119e711f82fe681c38b372634754bfe2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5c6c82c64f014b7a9068899f7282c68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">SetParameters</a> ()</td></tr>\n<tr class=\"separator:aa5c6c82c64f014b7a9068899f7282c68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad1310e7fddbaee776682f678d745208\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">Load</a> ()</td></tr>\n<tr class=\"separator:aad1310e7fddbaee776682f678d745208\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f92e3739872ff0938669d2d493f932d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">Unload</a> ()</td></tr>\n<tr class=\"separator:a4f92e3739872ff0938669d2d493f932d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a382a7e9d207bb65e475aa0012f9a2ac6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a382a7e9d207bb65e475aa0012f9a2ac6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51e08621ef581d5991528c9b8e5b0134\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">SanitizeData</a> (<a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;data)</td></tr>\n<tr class=\"separator:a51e08621ef581d5991528c9b8e5b0134\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abfdd163bed725d0adf7a42efcba0d200\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"separator:abfdd163bed725d0adf7a42efcba0d200\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ece532aab87d1570b1af751ffaf0f16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;evt)</td></tr>\n<tr class=\"separator:a2ece532aab87d1570b1af751ffaf0f16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e3c2da150ec8c8b7b075867cc6165b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">GetType</a> ()</td></tr>\n<tr class=\"separator:a1e3c2da150ec8c8b7b075867cc6165b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ae2b71cc843f216e53f0eeb2a4ebed28e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a></td></tr>\n<tr class=\"separator:ae2b71cc843f216e53f0eeb2a4ebed28e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename T&gt;<br />\nclass tram::Scriptable&lt; T &gt;</div><p >Provides script language subclassing. </p>\n<p >If you want to create a sublass in C++, it's easy &ndash; just <code>#include</code> the class header and make subclass. But if you want to do so from a scripting language, e.g. Lua, you will need an interface on the C++ side. This template provides such an interface.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/script.html\">https://racenis.github.io/tram-sdk/documentation/entities/script.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a155369bc0f7a32617d2b9addb29daea7\" name=\"a155369bc0f7a32617d2b9addb29daea7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a155369bc0f7a32617d2b9addb29daea7\">&#9670;&nbsp;</a></span>Scriptable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac46dc1ccdef6f82c56563b4b498d07bf\" name=\"ac46dc1ccdef6f82c56563b4b498d07bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac46dc1ccdef6f82c56563b4b498d07bf\">&#9670;&nbsp;</a></span>~Scriptable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::~<a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2ece532aab87d1570b1af751ffaf0f16\" name=\"a2ece532aab87d1570b1af751ffaf0f16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ece532aab87d1570b1af751ffaf0f16\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>evt</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e3c2da150ec8c8b7b075867cc6165b1\" name=\"a1e3c2da150ec8c8b7b075867cc6165b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e3c2da150ec8c8b7b075867cc6165b1\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aad1310e7fddbaee776682f678d745208\" name=\"aad1310e7fddbaee776682f678d745208\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad1310e7fddbaee776682f678d745208\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abfdd163bed725d0adf7a42efcba0d200\" name=\"abfdd163bed725d0adf7a42efcba0d200\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abfdd163bed725d0adf7a42efcba0d200\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51e08621ef581d5991528c9b8e5b0134\" name=\"a51e08621ef581d5991528c9b8e5b0134\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51e08621ef581d5991528c9b8e5b0134\">&#9670;&nbsp;</a></span>SanitizeData()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::SanitizeData </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>data</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a382a7e9d207bb65e475aa0012f9a2ac6\" name=\"a382a7e9d207bb65e475aa0012f9a2ac6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a382a7e9d207bb65e475aa0012f9a2ac6\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5c6c82c64f014b7a9068899f7282c68\" name=\"aa5c6c82c64f014b7a9068899f7282c68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5c6c82c64f014b7a9068899f7282c68\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4f92e3739872ff0938669d2d493f932d\" name=\"a4f92e3739872ff0938669d2d493f932d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f92e3739872ff0938669d2d493f932d\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a119e711f82fe681c38b372634754bfe2\" name=\"a119e711f82fe681c38b372634754bfe2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a119e711f82fe681c38b372634754bfe2\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae2b71cc843f216e53f0eeb2a4ebed28e\" name=\"ae2b71cc843f216e53f0eeb2a4ebed28e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2b71cc843f216e53f0eeb2a4ebed28e\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a>&lt; T &gt;::type</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2script_8h_source.html\">script.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_serialized_field_array-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::SerializedFieldArray Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">tram::SerializedFieldArray</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html#a0c35481760cb79d60a7791dab2eb4915\">operator[]</a>(size_t n) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">tram::SerializedFieldArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html#ad04c545fe1cd9f938cc8345914e0e00b\">SerializedFieldArray</a>(const Value *first, size_t count)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">tram::SerializedFieldArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_serialized_field_array.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::SerializedFieldArray Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_serialized_field_array-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::SerializedFieldArray Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Wrapper for serialized field values.  \n <a href=\"classtram_1_1_serialized_field_array.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">serialization.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad04c545fe1cd9f938cc8345914e0e00b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html#ad04c545fe1cd9f938cc8345914e0e00b\">SerializedFieldArray</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> *first, size_t count)</td></tr>\n<tr class=\"separator:ad04c545fe1cd9f938cc8345914e0e00b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c35481760cb79d60a7791dab2eb4915\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_serialized_field_array.html#a0c35481760cb79d60a7791dab2eb4915\">operator[]</a> (size_t n) const</td></tr>\n<tr class=\"separator:a0c35481760cb79d60a7791dab2eb4915\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Wrapper for serialized field values. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad04c545fe1cd9f938cc8345914e0e00b\" name=\"ad04c545fe1cd9f938cc8345914e0e00b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad04c545fe1cd9f938cc8345914e0e00b\">&#9670;&nbsp;</a></span>SerializedFieldArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::SerializedFieldArray::SerializedFieldArray </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> *&#160;</td>\n          <td class=\"paramname\"><em>first</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0c35481760cb79d60a7791dab2eb4915\" name=\"a0c35481760cb79d60a7791dab2eb4915\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c35481760cb79d60a7791dab2eb4915\">&#9670;&nbsp;</a></span>operator[]()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp; tram::SerializedFieldArray::operator[] </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>n</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"serialization_8h_source.html\">serialization.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_signal_table-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::SignalTable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">Add</a>(const Signal &amp;signal)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a>(signal_t signal, id_t sender)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a52fe697c321904e1b59f0ed655c3e3d9\">Fire</a>(signal_t signal, id_t sender, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">signal_count</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_signal_table.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::SignalTable Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"classtram_1_1_signal_table-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::SignalTable Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates.  \n <a href=\"classtram_1_1_signal_table.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"signal_8h_source.html\">framework/signal.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6268d498a6ba6846e797499a3100fe41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> signal, <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> sender)</td></tr>\n<tr class=\"separator:a6268d498a6ba6846e797499a3100fe41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52fe697c321904e1b59f0ed655c3e3d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a52fe697c321904e1b59f0ed655c3e3d9\">Fire</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> signal, <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> sender, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:a52fe697c321904e1b59f0ed655c3e3d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42153d34f72f7fd4e3b43eec183d61a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">Add</a> (const <a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a> &amp;signal)</td></tr>\n<tr class=\"separator:a42153d34f72f7fd4e3b43eec183d61a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad8d71747477523bc6cd3ebaf8af62397\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">signals</a> [10]</td></tr>\n<tr class=\"separator:ad8d71747477523bc6cd3ebaf8af62397\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a938437fad98477de3bdc6ff5238fcff1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">signal_count</a> = 0</td></tr>\n<tr class=\"separator:a938437fad98477de3bdc6ff5238fcff1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates. </p>\n<p >Table of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates, i.e. <a class=\"el\" href=\"structtram_1_1_signal.html\" title=\"Message template.\">Signal</a> structs, that can be sent off by entities on certain triggers. </p>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a42153d34f72f7fd4e3b43eec183d61a4\" name=\"a42153d34f72f7fd4e3b43eec183d61a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42153d34f72f7fd4e3b43eec183d61a4\">&#9670;&nbsp;</a></span>Add()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SignalTable::Add </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>signal</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6268d498a6ba6846e797499a3100fe41\" name=\"a6268d498a6ba6846e797499a3100fe41\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6268d498a6ba6846e797499a3100fe41\">&#9670;&nbsp;</a></span>Fire() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SignalTable::Fire </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td>\n          <td class=\"paramname\"><em>signal</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sender</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52fe697c321904e1b59f0ed655c3e3d9\" name=\"a52fe697c321904e1b59f0ed655c3e3d9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52fe697c321904e1b59f0ed655c3e3d9\">&#9670;&nbsp;</a></span>Fire() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SignalTable::Fire </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td>\n          <td class=\"paramname\"><em>signal</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sender</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a938437fad98477de3bdc6ff5238fcff1\" name=\"a938437fad98477de3bdc6ff5238fcff1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a938437fad98477de3bdc6ff5238fcff1\">&#9670;&nbsp;</a></span>signal_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::SignalTable::signal_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8d71747477523bc6cd3ebaf8af62397\" name=\"ad8d71747477523bc6cd3ebaf8af62397\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8d71747477523bc6cd3ebaf8af62397\">&#9670;&nbsp;</a></span>signals</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a> tram::SignalTable::signals[10]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"signal_8h_source.html\">signal.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"signal_8cpp.html\">signal.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_sound-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_sound.html\">Sound</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Sound Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">audio</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">Sound</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#aad69728aae94531aae365a3762d1a4e7\">Sound</a>(name_t sound, float volume, vec3 position)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">sound</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">sound_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">volume</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_sound.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Sound Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_sound.html\">Sound</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_sound-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Sound Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper.  \n <a href=\"classtram_1_1_sound.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Sound:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_sound.png\" usemap=\"#tram::Sound_map\" alt=\"\"/>\n  <map id=\"tram::Sound_map\" name=\"tram::Sound_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,78,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2f9189b04fcabb7aca986bf123e44c37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">Sound</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a2f9189b04fcabb7aca986bf123e44c37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad69728aae94531aae365a3762d1a4e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#aad69728aae94531aae365a3762d1a4e7\">Sound</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> sound, float volume, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"memdesc:aad69728aae94531aae365a3762d1a4e7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">PLays a sound, then removes itself.  <a href=\"classtram_1_1_sound.html#aad69728aae94531aae365a3762d1a4e7\">More...</a><br /></td></tr>\n<tr class=\"separator:aad69728aae94531aae365a3762d1a4e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a859500a040dbfa4ac1e303fc2f9b3723\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a859500a040dbfa4ac1e303fc2f9b3723\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">More...</a><br /></td></tr>\n<tr class=\"separator:a859500a040dbfa4ac1e303fc2f9b3723\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab40d5d4f1ca14bcd32a252326f333bfa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:ab40d5d4f1ca14bcd32a252326f333bfa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">More...</a><br /></td></tr>\n<tr class=\"separator:ab40d5d4f1ca14bcd32a252326f333bfa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7999efe8694dde2bbd32140c515c391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">Load</a> ()</td></tr>\n<tr class=\"memdesc:ac7999efe8694dde2bbd32140c515c391\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">More...</a><br /></td></tr>\n<tr class=\"separator:ac7999efe8694dde2bbd32140c515c391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6070314c5146a08863b061aeafede2b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a6070314c5146a08863b061aeafede2b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">More...</a><br /></td></tr>\n<tr class=\"separator:a6070314c5146a08863b061aeafede2b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41a7fbea5ee99ed28d7d586de0b8f794\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a41a7fbea5ee99ed28d7d586de0b8f794\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afaf38811530319b1021f29e07f1b02c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:afaf38811530319b1021f29e07f1b02c9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">More...</a><br /></td></tr>\n<tr class=\"separator:afaf38811530319b1021f29e07f1b02c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa8a9115da334eec12b8b837d9d47b689\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:aa8a9115da334eec12b8b837d9d47b689\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">More...</a><br /></td></tr>\n<tr class=\"separator:aa8a9115da334eec12b8b837d9d47b689\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a588c740a125c4956b97155e89838884e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e\">Register</a> ()</td></tr>\n<tr class=\"separator:a588c740a125c4956b97155e89838884e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a934d998958463921ee96f604e7934a1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">audio</a></td></tr>\n<tr class=\"separator:a934d998958463921ee96f604e7934a1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a06e516eef6120b6ccad7f04189b15dfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">sound</a></td></tr>\n<tr class=\"separator:a06e516eef6120b6ccad7f04189b15dfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08126edbad4f337264ff1206e96ef145\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">volume</a></td></tr>\n<tr class=\"separator:a08126edbad4f337264ff1206e96ef145\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c17af183ae0f42e2b59f221281a9494\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">sound_flags</a></td></tr>\n<tr class=\"separator:a3c17af183ae0f42e2b59f221281a9494\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper. </p>\n<p >Can be used for placing environmental sounds, or for playing sounds for <a class=\"el\" href=\"structtram_1_1_signal.html\" title=\"Message template.\">Signal</a> triggers, but since you're looking this up in the C++ docs, you are probably are intereseted in the <a class=\"el\" href=\"classtram_1_1_sound.html\" title=\"AudioComponent wrapper.\">Sound</a> entity as an self-yeeting <a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a>.</p>\n<p >Which it can be used as.</p>\n<p >Very successfully, might I add.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/sound.html\">https://racenis.github.io/tram-sdk/documentation/entities/sound.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a2f9189b04fcabb7aca986bf123e44c37\" name=\"a2f9189b04fcabb7aca986bf123e44c37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f9189b04fcabb7aca986bf123e44c37\">&#9670;&nbsp;</a></span>Sound() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Sound::Sound </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aad69728aae94531aae365a3762d1a4e7\" name=\"aad69728aae94531aae365a3762d1a4e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad69728aae94531aae365a3762d1a4e7\">&#9670;&nbsp;</a></span>Sound() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Sound::Sound </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sound</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>volume</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>PLays a sound, then removes itself. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa8a9115da334eec12b8b837d9d47b689\" name=\"aa8a9115da334eec12b8b837d9d47b689\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa8a9115da334eec12b8b837d9d47b689\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Sound::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac7999efe8694dde2bbd32140c515c391\" name=\"ac7999efe8694dde2bbd32140c515c391\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7999efe8694dde2bbd32140c515c391\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"afaf38811530319b1021f29e07f1b02c9\" name=\"afaf38811530319b1021f29e07f1b02c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afaf38811530319b1021f29e07f1b02c9\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a588c740a125c4956b97155e89838884e\" name=\"a588c740a125c4956b97155e89838884e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a588c740a125c4956b97155e89838884e\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a41a7fbea5ee99ed28d7d586de0b8f794\" name=\"a41a7fbea5ee99ed28d7d586de0b8f794\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41a7fbea5ee99ed28d7d586de0b8f794\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ab40d5d4f1ca14bcd32a252326f333bfa\" name=\"ab40d5d4f1ca14bcd32a252326f333bfa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab40d5d4f1ca14bcd32a252326f333bfa\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6070314c5146a08863b061aeafede2b2\" name=\"a6070314c5146a08863b061aeafede2b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6070314c5146a08863b061aeafede2b2\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a859500a040dbfa4ac1e303fc2f9b3723\" name=\"a859500a040dbfa4ac1e303fc2f9b3723\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a859500a040dbfa4ac1e303fc2f9b3723\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Sound::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a934d998958463921ee96f604e7934a1b\" name=\"a934d998958463921ee96f604e7934a1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a934d998958463921ee96f604e7934a1b\">&#9670;&nbsp;</a></span>audio</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a>&gt; tram::Sound::audio</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a06e516eef6120b6ccad7f04189b15dfb\" name=\"a06e516eef6120b6ccad7f04189b15dfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06e516eef6120b6ccad7f04189b15dfb\">&#9670;&nbsp;</a></span>sound</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Sound::sound</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c17af183ae0f42e2b59f221281a9494\" name=\"a3c17af183ae0f42e2b59f221281a9494\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c17af183ae0f42e2b59f221281a9494\">&#9670;&nbsp;</a></span>sound_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Sound::sound_flags</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08126edbad4f337264ff1206e96ef145\" name=\"a08126edbad4f337264ff1206e96ef145\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08126edbad4f337264ff1206e96ef145\">&#9670;&nbsp;</a></span>volume</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Sound::volume</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2sound_8h_source.html\">sound.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2sound_8cpp.html\">sound.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_spinlock-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Spinlock Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">Lock</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">Unlock</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_spinlock.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Spinlock Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_spinlock-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Spinlock Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"spinlock_8h_source.html\">spinlock.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a9ab6e05f0a2d8cb920081fa3507eb864\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">Lock</a> ()</td></tr>\n<tr class=\"separator:a9ab6e05f0a2d8cb920081fa3507eb864\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc3aa4bbf54049125b46326dec076634\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">Unlock</a> ()</td></tr>\n<tr class=\"separator:abc3aa4bbf54049125b46326dec076634\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a9ab6e05f0a2d8cb920081fa3507eb864\" name=\"a9ab6e05f0a2d8cb920081fa3507eb864\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ab6e05f0a2d8cb920081fa3507eb864\">&#9670;&nbsp;</a></span>Lock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Spinlock::Lock </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abc3aa4bbf54049125b46326dec076634\" name=\"abc3aa4bbf54049125b46326dec076634\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc3aa4bbf54049125b46326dec076634\">&#9670;&nbsp;</a></span>Unlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Spinlock::Unlock </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"spinlock_8h_source.html\">spinlock.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_sprite_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::SpriteComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">anim_bframe</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">anim_frame</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">anim_isplaying</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">anim_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">draw_list_entry</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">GetSprite</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">Pause</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">Play</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">SetPlaySpeed</a>(size_t speed)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">SetSprite</a>(Render::Sprite *sprite)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">sprite_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">SpriteComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">UpdateLocation</a>(vec3 nlocation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">UpdateRenderListObject</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">~SpriteComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_sprite_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::SpriteComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_sprite_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::SpriteComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Provides amusing graphical effects.  \n <a href=\"classtram_1_1_sprite_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2sprite_8h_source.html\">components/sprite.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::SpriteComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_sprite_component.png\" usemap=\"#tram::SpriteComponent_map\" alt=\"\"/>\n  <map id=\"tram::SpriteComponent_map\" name=\"tram::SpriteComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,138,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac1a001371822ddc0a285e0741ea2bdb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">SpriteComponent</a> ()</td></tr>\n<tr class=\"separator:ac1a001371822ddc0a285e0741ea2bdb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3af9ed8e95feb7d735398fbdd5eb4d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">~SpriteComponent</a> ()</td></tr>\n<tr class=\"separator:ac3af9ed8e95feb7d735398fbdd5eb4d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe9a51092931932104237e352f15267f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">GetSprite</a> ()</td></tr>\n<tr class=\"separator:afe9a51092931932104237e352f15267f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a567f7ce43923f04380bc6a04d8f4b5a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">SetSprite</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>)</td></tr>\n<tr class=\"separator:a567f7ce43923f04380bc6a04d8f4b5a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a8fe6d5647764bf064a432ec26f59e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">Start</a> ()</td></tr>\n<tr class=\"separator:a8a8fe6d5647764bf064a432ec26f59e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8755153a58b06a785cd393fb23252b3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">Update</a> ()</td></tr>\n<tr class=\"separator:a8755153a58b06a785cd393fb23252b3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af3bb6eacd3c918f5c227840bcea5f4e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">Play</a> ()</td></tr>\n<tr class=\"separator:af3bb6eacd3c918f5c227840bcea5f4e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a83f36a6e77225ccb7fd60f0f70f78972\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">Pause</a> ()</td></tr>\n<tr class=\"separator:a83f36a6e77225ccb7fd60f0f70f78972\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af67c5b9890fa7c815e53e39927db6c81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">SetPlaySpeed</a> (size_t speed)</td></tr>\n<tr class=\"separator:af67c5b9890fa7c815e53e39927db6c81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ebab8875f064f5119b9bd976fe7f117\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">UpdateRenderListObject</a> ()</td></tr>\n<tr class=\"separator:a0ebab8875f064f5119b9bd976fe7f117\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a067d3592ad5bfba2afba0b4a6a447ee8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">UpdateLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation)</td></tr>\n<tr class=\"separator:a067d3592ad5bfba2afba0b4a6a447ee8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69fa78a5255a802e1975ce0a4eea868f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a69fa78a5255a802e1975ce0a4eea868f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a620c3aef918cd8570932341099d5d7c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a></td></tr>\n<tr class=\"separator:a620c3aef918cd8570932341099d5d7c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d21c7134a144caa924c0c76fdd44e9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">location</a></td></tr>\n<tr class=\"separator:a2d21c7134a144caa924c0c76fdd44e9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88b7103d26803ae5ea1315648ef813e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">anim_frame</a> = 0</td></tr>\n<tr class=\"separator:a88b7103d26803ae5ea1315648ef813e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94e1866fddd8e554075eb49016f924bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">anim_speed</a> = 0</td></tr>\n<tr class=\"separator:a94e1866fddd8e554075eb49016f924bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60f9208d310ee25c0ae44d212b23a88c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">anim_bframe</a> = 0</td></tr>\n<tr class=\"separator:a60f9208d310ee25c0ae44d212b23a88c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af50cea976158bc2472c9df7cee551157\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">anim_isplaying</a> = false</td></tr>\n<tr class=\"separator:af50cea976158bc2472c9df7cee551157\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8df644a8df43af1ffdf9de7ce156ac8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">draw_list_entry</a> = {}</td></tr>\n<tr class=\"separator:ab8df644a8df43af1ffdf9de7ce156ac8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e1293692c40c7817c7f7523c2d2ef7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">vertex_array</a> = {}</td></tr>\n<tr class=\"separator:af8e1293692c40c7817c7f7523c2d2ef7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fbf77711c216c8fcc0b3187708e10f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">Render::spritearray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">sprite_array</a> = {}</td></tr>\n<tr class=\"separator:a4fbf77711c216c8fcc0b3187708e10f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Provides amusing graphical effects. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/sprite.html\">https://racenis.github.io/tram-sdk/documentation/components/sprite.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac1a001371822ddc0a285e0741ea2bdb4\" name=\"ac1a001371822ddc0a285e0741ea2bdb4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1a001371822ddc0a285e0741ea2bdb4\">&#9670;&nbsp;</a></span>SpriteComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::SpriteComponent::SpriteComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3af9ed8e95feb7d735398fbdd5eb4d2\" name=\"ac3af9ed8e95feb7d735398fbdd5eb4d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3af9ed8e95feb7d735398fbdd5eb4d2\">&#9670;&nbsp;</a></span>~SpriteComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::SpriteComponent::~SpriteComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a69fa78a5255a802e1975ce0a4eea868f\" name=\"a69fa78a5255a802e1975ce0a4eea868f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69fa78a5255a802e1975ce0a4eea868f\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"afe9a51092931932104237e352f15267f\" name=\"afe9a51092931932104237e352f15267f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe9a51092931932104237e352f15267f\">&#9670;&nbsp;</a></span>GetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::SpriteComponent::GetSprite </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a83f36a6e77225ccb7fd60f0f70f78972\" name=\"a83f36a6e77225ccb7fd60f0f70f78972\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83f36a6e77225ccb7fd60f0f70f78972\">&#9670;&nbsp;</a></span>Pause()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::Pause </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af3bb6eacd3c918f5c227840bcea5f4e1\" name=\"af3bb6eacd3c918f5c227840bcea5f4e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3bb6eacd3c918f5c227840bcea5f4e1\">&#9670;&nbsp;</a></span>Play()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::Play </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af67c5b9890fa7c815e53e39927db6c81\" name=\"af67c5b9890fa7c815e53e39927db6c81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af67c5b9890fa7c815e53e39927db6c81\">&#9670;&nbsp;</a></span>SetPlaySpeed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::SetPlaySpeed </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>speed</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a567f7ce43923f04380bc6a04d8f4b5a2\" name=\"a567f7ce43923f04380bc6a04d8f4b5a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a567f7ce43923f04380bc6a04d8f4b5a2\">&#9670;&nbsp;</a></span>SetSprite()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::SetSprite </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *&#160;</td>\n          <td class=\"paramname\"><em>sprite</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a8fe6d5647764bf064a432ec26f59e4\" name=\"a8a8fe6d5647764bf064a432ec26f59e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a8fe6d5647764bf064a432ec26f59e4\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a8755153a58b06a785cd393fb23252b3c\" name=\"a8755153a58b06a785cd393fb23252b3c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8755153a58b06a785cd393fb23252b3c\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a067d3592ad5bfba2afba0b4a6a447ee8\" name=\"a067d3592ad5bfba2afba0b4a6a447ee8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a067d3592ad5bfba2afba0b4a6a447ee8\">&#9670;&nbsp;</a></span>UpdateLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::UpdateLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>nlocation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ebab8875f064f5119b9bd976fe7f117\" name=\"a0ebab8875f064f5119b9bd976fe7f117\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ebab8875f064f5119b9bd976fe7f117\">&#9670;&nbsp;</a></span>UpdateRenderListObject()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SpriteComponent::UpdateRenderListObject </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a60f9208d310ee25c0ae44d212b23a88c\" name=\"a60f9208d310ee25c0ae44d212b23a88c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60f9208d310ee25c0ae44d212b23a88c\">&#9670;&nbsp;</a></span>anim_bframe</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::SpriteComponent::anim_bframe = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a88b7103d26803ae5ea1315648ef813e1\" name=\"a88b7103d26803ae5ea1315648ef813e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88b7103d26803ae5ea1315648ef813e1\">&#9670;&nbsp;</a></span>anim_frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::SpriteComponent::anim_frame = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af50cea976158bc2472c9df7cee551157\" name=\"af50cea976158bc2472c9df7cee551157\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af50cea976158bc2472c9df7cee551157\">&#9670;&nbsp;</a></span>anim_isplaying</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::SpriteComponent::anim_isplaying = false</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94e1866fddd8e554075eb49016f924bf\" name=\"a94e1866fddd8e554075eb49016f924bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94e1866fddd8e554075eb49016f924bf\">&#9670;&nbsp;</a></span>anim_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::SpriteComponent::anim_speed = 0</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab8df644a8df43af1ffdf9de7ce156ac8\" name=\"ab8df644a8df43af1ffdf9de7ce156ac8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8df644a8df43af1ffdf9de7ce156ac8\">&#9670;&nbsp;</a></span>draw_list_entry</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> tram::SpriteComponent::draw_list_entry = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d21c7134a144caa924c0c76fdd44e9b\" name=\"a2d21c7134a144caa924c0c76fdd44e9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d21c7134a144caa924c0c76fdd44e9b\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::SpriteComponent::location</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a620c3aef918cd8570932341099d5d7c4\" name=\"a620c3aef918cd8570932341099d5d7c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a620c3aef918cd8570932341099d5d7c4\">&#9670;&nbsp;</a></span>sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>&gt; tram::SpriteComponent::sprite</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4fbf77711c216c8fcc0b3187708e10f9\" name=\"a4fbf77711c216c8fcc0b3187708e10f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fbf77711c216c8fcc0b3187708e10f9\">&#9670;&nbsp;</a></span>sprite_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">Render::spritearray_t</a> tram::SpriteComponent::sprite_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8e1293692c40c7817c7f7523c2d2ef7\" name=\"af8e1293692c40c7817c7f7523c2d2ef7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8e1293692c40c7817c7f7523c2d2ef7\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> tram::SpriteComponent::vertex_array = {}</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2sprite_8h_source.html\">sprite.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2sprite_8cpp.html\">sprite.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_stack-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_stack.html\">Stack</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Stack&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">AddNew</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">firstend</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">GetLastPtr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">GetLength</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">lastend</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">pop</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">push</a>(const T &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">Remove</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">Reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">size</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">Stack</a>(std::string name, uint64_t initialSize)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">stackSize</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">top</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_stack.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Stack&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_stack.html\">Stack</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_stack-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Stack&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"stack_8h_source.html\">stack.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af07b289d86a6b75514c2ae1412d0ab41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">Stack</a> (std::string name, uint64_t initialSize)</td></tr>\n<tr class=\"separator:af07b289d86a6b75514c2ae1412d0ab41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5ef45fb8c20c2f54ebcb7953be1556\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">AddNew</a> ()</td></tr>\n<tr class=\"separator:aef5ef45fb8c20c2f54ebcb7953be1556\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cca2aef7b2091fff5bd9772b3f19edc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">Remove</a> ()</td></tr>\n<tr class=\"separator:a3cca2aef7b2091fff5bd9772b3f19edc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a961d9d65f2fce72c72514203eefea7eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">GetLastPtr</a> ()</td></tr>\n<tr class=\"separator:a961d9d65f2fce72c72514203eefea7eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53b43f3330a4e398271d8c71d119e99a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">GetLength</a> ()</td></tr>\n<tr class=\"separator:a53b43f3330a4e398271d8c71d119e99a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4718060e0b69b752026d144a5db7e152\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">Reset</a> ()</td></tr>\n<tr class=\"separator:a4718060e0b69b752026d144a5db7e152\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a30a5b622fc4d1be6a302f2101e423e43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">top</a> ()</td></tr>\n<tr class=\"separator:a30a5b622fc4d1be6a302f2101e423e43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af88a0407075f961d55e94de1f4ee9588\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">push</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:af88a0407075f961d55e94de1f4ee9588\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c5bca889246272bd6fbc0789e7a2841\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">pop</a> ()</td></tr>\n<tr class=\"separator:a8c5bca889246272bd6fbc0789e7a2841\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d06fa32cc63d712025d3090f03887b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">reset</a> ()</td></tr>\n<tr class=\"separator:a3d06fa32cc63d712025d3090f03887b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b57914b1686d486e8e724dd4ef511b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">size</a> ()</td></tr>\n<tr class=\"separator:a1b57914b1686d486e8e724dd4ef511b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a5f6b6fb4a9090e80ade67b4937959e3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a></td></tr>\n<tr class=\"separator:a5f6b6fb4a9090e80ade67b4937959e3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfba6f478c25b9476568caba14833fb4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a></td></tr>\n<tr class=\"separator:acfba6f478c25b9476568caba14833fb4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a382ca6f3fd7d1f13fc9f5c1decbf206a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">stackSize</a></td></tr>\n<tr class=\"separator:a382ca6f3fd7d1f13fc9f5c1decbf206a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d0e42f7cb952325a56a77c5097f93a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a></td></tr>\n<tr class=\"separator:a0d0e42f7cb952325a56a77c5097f93a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68378c5ce401f8baa36270fbe3174bd0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a></td></tr>\n<tr class=\"separator:a68378c5ce401f8baa36270fbe3174bd0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef2cc6aeb5ebd3ee4365cce47e29dfdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">firstend</a></td></tr>\n<tr class=\"separator:aef2cc6aeb5ebd3ee4365cce47e29dfdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0969199ef282f64cc05a4954bc67bb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">lastend</a></td></tr>\n<tr class=\"separator:aa0969199ef282f64cc05a4954bc67bb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af07b289d86a6b75514c2ae1412d0ab41\" name=\"af07b289d86a6b75514c2ae1412d0ab41\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af07b289d86a6b75514c2ae1412d0ab41\">&#9670;&nbsp;</a></span>Stack()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_stack.html\">Stack</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::string&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>initialSize</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aef5ef45fb8c20c2f54ebcb7953be1556\" name=\"aef5ef45fb8c20c2f54ebcb7953be1556\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef5ef45fb8c20c2f54ebcb7953be1556\">&#9670;&nbsp;</a></span>AddNew()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::AddNew </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a961d9d65f2fce72c72514203eefea7eb\" name=\"a961d9d65f2fce72c72514203eefea7eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a961d9d65f2fce72c72514203eefea7eb\">&#9670;&nbsp;</a></span>GetLastPtr()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::GetLastPtr </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53b43f3330a4e398271d8c71d119e99a\" name=\"a53b43f3330a4e398271d8c71d119e99a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53b43f3330a4e398271d8c71d119e99a\">&#9670;&nbsp;</a></span>GetLength()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::GetLength </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c5bca889246272bd6fbc0789e7a2841\" name=\"a8c5bca889246272bd6fbc0789e7a2841\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c5bca889246272bd6fbc0789e7a2841\">&#9670;&nbsp;</a></span>pop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::pop </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af88a0407075f961d55e94de1f4ee9588\" name=\"af88a0407075f961d55e94de1f4ee9588\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af88a0407075f961d55e94de1f4ee9588\">&#9670;&nbsp;</a></span>push()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::push </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3cca2aef7b2091fff5bd9772b3f19edc\" name=\"a3cca2aef7b2091fff5bd9772b3f19edc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3cca2aef7b2091fff5bd9772b3f19edc\">&#9670;&nbsp;</a></span>Remove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::Remove </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4718060e0b69b752026d144a5db7e152\" name=\"a4718060e0b69b752026d144a5db7e152\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4718060e0b69b752026d144a5db7e152\">&#9670;&nbsp;</a></span>Reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::Reset </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d06fa32cc63d712025d3090f03887b3\" name=\"a3d06fa32cc63d712025d3090f03887b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d06fa32cc63d712025d3090f03887b3\">&#9670;&nbsp;</a></span>reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::reset </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1b57914b1686d486e8e724dd4ef511b2\" name=\"a1b57914b1686d486e8e724dd4ef511b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b57914b1686d486e8e724dd4ef511b2\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a30a5b622fc4d1be6a302f2101e423e43\" name=\"a30a5b622fc4d1be6a302f2101e423e43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30a5b622fc4d1be6a302f2101e423e43\">&#9670;&nbsp;</a></span>top()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::top </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0d0e42f7cb952325a56a77c5097f93a4\" name=\"a0d0e42f7cb952325a56a77c5097f93a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d0e42f7cb952325a56a77c5097f93a4\">&#9670;&nbsp;</a></span>first</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::first</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef2cc6aeb5ebd3ee4365cce47e29dfdf\" name=\"aef2cc6aeb5ebd3ee4365cce47e29dfdf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">&#9670;&nbsp;</a></span>firstend</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::firstend</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68378c5ce401f8baa36270fbe3174bd0\" name=\"a68378c5ce401f8baa36270fbe3174bd0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68378c5ce401f8baa36270fbe3174bd0\">&#9670;&nbsp;</a></span>last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::last</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0969199ef282f64cc05a4954bc67bb7\" name=\"aa0969199ef282f64cc05a4954bc67bb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0969199ef282f64cc05a4954bc67bb7\">&#9670;&nbsp;</a></span>lastend</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::lastend</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acfba6f478c25b9476568caba14833fb4\" name=\"acfba6f478c25b9476568caba14833fb4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfba6f478c25b9476568caba14833fb4\">&#9670;&nbsp;</a></span>stackLength</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::stackLength</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f6b6fb4a9090e80ade67b4937959e3e\" name=\"a5f6b6fb4a9090e80ade67b4937959e3e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f6b6fb4a9090e80ade67b4937959e3e\">&#9670;&nbsp;</a></span>stackName</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::stackName</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a382ca6f3fd7d1f13fc9f5c1decbf206a\" name=\"a382ca6f3fd7d1f13fc9f5c1decbf206a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a382ca6f3fd7d1f13fc9f5c1decbf206a\">&#9670;&nbsp;</a></span>stackSize</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t <a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack</a>&lt; T &gt;::stackSize</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"stack_8h_source.html\">stack.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_stack_pool-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::StackPool&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">AddNew</a>(size_t units)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">allocate</a>(size_t units)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">available_size</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">begin</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">end</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">Reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">reset</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">StackPool</a>(const char *name, size_t size)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b\">StackPool</a>(const char *name, size_t max_size, std::initializer_list&lt; T &gt; list)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_stack_pool.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::StackPool&lt; T &gt; Class Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_stack_pool-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::StackPool&lt; T &gt; Class Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Allocator.  \n <a href=\"classtram_1_1_stack_pool.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">stackpool.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a12110066565425c621d05ee4dffbb70c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">StackPool</a> (const char *<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>, size_t <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a>)</td></tr>\n<tr class=\"separator:a12110066565425c621d05ee4dffbb70c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac045057c72646b08dd0042b49ca9170b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">constexpr&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b\">StackPool</a> (const char *<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>, size_t max_size, std::initializer_list&lt; T &gt; list)</td></tr>\n<tr class=\"separator:ac045057c72646b08dd0042b49ca9170b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f26be1e8228843b1d4928fbd584997e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">AddNew</a> (size_t units)</td></tr>\n<tr class=\"separator:a4f26be1e8228843b1d4928fbd584997e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ce93b4a50a7e007acd3bbfdf8482d84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">allocate</a> (size_t units)</td></tr>\n<tr class=\"separator:a6ce93b4a50a7e007acd3bbfdf8482d84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45ca522e92ec2faada60b18dad845832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">Reset</a> ()</td></tr>\n<tr class=\"separator:a45ca522e92ec2faada60b18dad845832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed5f3ae73582e286a4f9964fc65e73a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">reset</a> ()</td></tr>\n<tr class=\"separator:aed5f3ae73582e286a4f9964fc65e73a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1b01a988e50384b053dab3204b2872f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a> ()</td></tr>\n<tr class=\"separator:aa1b01a988e50384b053dab3204b2872f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4124c926206e0e06403f8cff5a999b43\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">begin</a> ()</td></tr>\n<tr class=\"separator:a4124c926206e0e06403f8cff5a999b43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd79d28bc444c59c3a1435e7580a3498\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">end</a> ()</td></tr>\n<tr class=\"separator:abd79d28bc444c59c3a1435e7580a3498\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a8c6122dde12481b629f2f7b1ce2afc28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a></td></tr>\n<tr class=\"separator:a8c6122dde12481b629f2f7b1ce2afc28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaeba247ccf78620d37bfb23ac812f123\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a></td></tr>\n<tr class=\"separator:aaeba247ccf78620d37bfb23ac812f123\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72cd4ac04fad51347b627f2d894b75d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">available_size</a></td></tr>\n<tr class=\"separator:a72cd4ac04fad51347b627f2d894b75d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf7603622a4b6515c9d00f26c758e34c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a></td></tr>\n<tr class=\"separator:aaf7603622a4b6515c9d00f26c758e34c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0c46cfa4c88b248b51a096436d4a4147\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a></td></tr>\n<tr class=\"separator:a0c46cfa4c88b248b51a096436d4a4147\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename T&gt;<br />\nclass tram::StackPool&lt; T &gt;</div><p >Allocator. </p>\n<p >Very simple allocator for data types that don't need their destructors called. Just call <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">allocate()</a> and specify the size of the array that you want to allocated. Use the pointer to write and store data. After you are done, you can reset all of the allocated memory with <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">reset()</a>. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a12110066565425c621d05ee4dffbb70c\" name=\"a12110066565425c621d05ee4dffbb70c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12110066565425c621d05ee4dffbb70c\">&#9670;&nbsp;</a></span>StackPool() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac045057c72646b08dd0042b49ca9170b\" name=\"ac045057c72646b08dd0042b49ca9170b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac045057c72646b08dd0042b49ca9170b\">&#9670;&nbsp;</a></span>StackPool() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">constexpr <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::<a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>max_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::initializer_list&lt; T &gt;&#160;</td>\n          <td class=\"paramname\"><em>list</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">constexpr</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a4f26be1e8228843b1d4928fbd584997e\" name=\"a4f26be1e8228843b1d4928fbd584997e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f26be1e8228843b1d4928fbd584997e\">&#9670;&nbsp;</a></span>AddNew()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::AddNew </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>units</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ce93b4a50a7e007acd3bbfdf8482d84\" name=\"a6ce93b4a50a7e007acd3bbfdf8482d84\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ce93b4a50a7e007acd3bbfdf8482d84\">&#9670;&nbsp;</a></span>allocate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::allocate </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>units</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4124c926206e0e06403f8cff5a999b43\" name=\"a4124c926206e0e06403f8cff5a999b43\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4124c926206e0e06403f8cff5a999b43\">&#9670;&nbsp;</a></span>begin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::begin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd79d28bc444c59c3a1435e7580a3498\" name=\"abd79d28bc444c59c3a1435e7580a3498\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd79d28bc444c59c3a1435e7580a3498\">&#9670;&nbsp;</a></span>end()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::end </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a45ca522e92ec2faada60b18dad845832\" name=\"a45ca522e92ec2faada60b18dad845832\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45ca522e92ec2faada60b18dad845832\">&#9670;&nbsp;</a></span>Reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::Reset </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed5f3ae73582e286a4f9964fc65e73a0\" name=\"aed5f3ae73582e286a4f9964fc65e73a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed5f3ae73582e286a4f9964fc65e73a0\">&#9670;&nbsp;</a></span>reset()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::reset </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1b01a988e50384b053dab3204b2872f\" name=\"aa1b01a988e50384b053dab3204b2872f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1b01a988e50384b053dab3204b2872f\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aaeba247ccf78620d37bfb23ac812f123\" name=\"aaeba247ccf78620d37bfb23ac812f123\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaeba247ccf78620d37bfb23ac812f123\">&#9670;&nbsp;</a></span>allocated_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::allocated_size</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72cd4ac04fad51347b627f2d894b75d8\" name=\"a72cd4ac04fad51347b627f2d894b75d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72cd4ac04fad51347b627f2d894b75d8\">&#9670;&nbsp;</a></span>available_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::available_size</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaf7603622a4b6515c9d00f26c758e34c\" name=\"aaf7603622a4b6515c9d00f26c758e34c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf7603622a4b6515c9d00f26c758e34c\">&#9670;&nbsp;</a></span>first</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::first</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0c46cfa4c88b248b51a096436d4a4147\" name=\"a0c46cfa4c88b248b51a096436d4a4147\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c46cfa4c88b248b51a096436d4a4147\">&#9670;&nbsp;</a></span>last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::last</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c6122dde12481b629f2f7b1ce2afc28\" name=\"a8c6122dde12481b629f2f7b1ce2afc28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c6122dde12481b629f2f7b1ce2afc28\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string <a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a>&lt; T &gt;::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"stackpool_8h_source.html\">stackpool.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_static_world_object-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">StaticWorldObject</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::StaticWorldObject Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">physicscomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">StaticWorldObject</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_static_world_object.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::StaticWorldObject Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">StaticWorldObject</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_static_world_object-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::StaticWorldObject Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Worldspawn.  \n <a href=\"classtram_1_1_static_world_object.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"staticworldobject_8h_source.html\">entities/staticworldobject.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::StaticWorldObject:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_static_world_object.png\" usemap=\"#tram::StaticWorldObject_map\" alt=\"\"/>\n  <map id=\"tram::StaticWorldObject_map\" name=\"tram::StaticWorldObject_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,143,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a08c7e874c022df3ec4a4c6bc5a09a2e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">StaticWorldObject</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a08c7e874c022df3ec4a4c6bc5a09a2e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a304c5569f576f950ff443c4fd5910f9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:a304c5569f576f950ff443c4fd5910f9b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">More...</a><br /></td></tr>\n<tr class=\"separator:a304c5569f576f950ff443c4fd5910f9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48e342917b51b7002d803a43d32daca3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a48e342917b51b7002d803a43d32daca3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">More...</a><br /></td></tr>\n<tr class=\"separator:a48e342917b51b7002d803a43d32daca3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fef88663daf97d8d472e29d480f29cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a9fef88663daf97d8d472e29d480f29cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fef88663daf97d8d472e29d480f29cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe3ba490eff6dbed046904e2cda3aa01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:abe3ba490eff6dbed046904e2cda3aa01\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">More...</a><br /></td></tr>\n<tr class=\"separator:abe3ba490eff6dbed046904e2cda3aa01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7db1c49df54e8a3be9f874af923b196f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:a7db1c49df54e8a3be9f874af923b196f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadf4aa7defed528401d1b40561b56e38\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:aadf4aa7defed528401d1b40561b56e38\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">More...</a><br /></td></tr>\n<tr class=\"separator:aadf4aa7defed528401d1b40561b56e38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ad11c2699b96d4f78f55d032a4e63e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:a7ad11c2699b96d4f78f55d032a4e63e9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">More...</a><br /></td></tr>\n<tr class=\"separator:a7ad11c2699b96d4f78f55d032a4e63e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a8e563a79c899fe488977537b60f5f051\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">Register</a> ()</td></tr>\n<tr class=\"separator:a8e563a79c899fe488977537b60f5f051\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a51c9c75f31cfe28bc7934498bf4b3dfe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">rendercomponent</a></td></tr>\n<tr class=\"separator:a51c9c75f31cfe28bc7934498bf4b3dfe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afcf86a58f1164ab9bef21c7f01e42def\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">physicscomponent</a></td></tr>\n<tr class=\"separator:afcf86a58f1164ab9bef21c7f01e42def\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f37865a6e409691526901290d6c1d8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">model</a></td></tr>\n<tr class=\"separator:a0f37865a6e409691526901290d6c1d8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6686c2178ae7e6444df5f9887c2199d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">lightmap</a></td></tr>\n<tr class=\"separator:a6686c2178ae7e6444df5f9887c2199d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Worldspawn. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/staticwobj.html\">https://racenis.github.io/tram-sdk/documentation/entities/staticwobj.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a08c7e874c022df3ec4a4c6bc5a09a2e3\" name=\"a08c7e874c022df3ec4a4c6bc5a09a2e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08c7e874c022df3ec4a4c6bc5a09a2e3\">&#9670;&nbsp;</a></span>StaticWorldObject()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::StaticWorldObject::StaticWorldObject </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a7ad11c2699b96d4f78f55d032a4e63e9\" name=\"a7ad11c2699b96d4f78f55d032a4e63e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ad11c2699b96d4f78f55d032a4e63e9\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::StaticWorldObject::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a9fef88663daf97d8d472e29d480f29cc\" name=\"a9fef88663daf97d8d472e29d480f29cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fef88663daf97d8d472e29d480f29cc\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"aadf4aa7defed528401d1b40561b56e38\" name=\"aadf4aa7defed528401d1b40561b56e38\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadf4aa7defed528401d1b40561b56e38\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a8e563a79c899fe488977537b60f5f051\" name=\"a8e563a79c899fe488977537b60f5f051\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e563a79c899fe488977537b60f5f051\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7db1c49df54e8a3be9f874af923b196f\" name=\"a7db1c49df54e8a3be9f874af923b196f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7db1c49df54e8a3be9f874af923b196f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a48e342917b51b7002d803a43d32daca3\" name=\"a48e342917b51b7002d803a43d32daca3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48e342917b51b7002d803a43d32daca3\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"abe3ba490eff6dbed046904e2cda3aa01\" name=\"abe3ba490eff6dbed046904e2cda3aa01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe3ba490eff6dbed046904e2cda3aa01\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a304c5569f576f950ff443c4fd5910f9b\" name=\"a304c5569f576f950ff443c4fd5910f9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a304c5569f576f950ff443c4fd5910f9b\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::StaticWorldObject::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6686c2178ae7e6444df5f9887c2199d7\" name=\"a6686c2178ae7e6444df5f9887c2199d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6686c2178ae7e6444df5f9887c2199d7\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::StaticWorldObject::lightmap</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f37865a6e409691526901290d6c1d8b\" name=\"a0f37865a6e409691526901290d6c1d8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f37865a6e409691526901290d6c1d8b\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::StaticWorldObject::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afcf86a58f1164ab9bef21c7f01e42def\" name=\"afcf86a58f1164ab9bef21c7f01e42def\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afcf86a58f1164ab9bef21c7f01e42def\">&#9670;&nbsp;</a></span>physicscomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>&gt; tram::StaticWorldObject::physicscomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51c9c75f31cfe28bc7934498bf4b3dfe\" name=\"a51c9c75f31cfe28bc7934498bf4b3dfe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51c9c75f31cfe28bc7934498bf4b3dfe\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::StaticWorldObject::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"staticworldobject_8h_source.html\">staticworldobject.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"staticworldobject_8cpp.html\">staticworldobject.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_template_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">TemplateComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::TemplateComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">TemplateComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">~TemplateComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_template_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::TemplateComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">TemplateComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_template_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::TemplateComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"template_8h_source.html\">template.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::TemplateComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_template_component.png\" usemap=\"#tram::TemplateComponent_map\" alt=\"\"/>\n  <map id=\"tram::TemplateComponent_map\" name=\"tram::TemplateComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,155,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac49dab36bc93c1d44db3fa7b78ec3367\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">TemplateComponent</a> ()</td></tr>\n<tr class=\"separator:ac49dab36bc93c1d44db3fa7b78ec3367\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e89883fc13d2969e300e3dab133624d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">~TemplateComponent</a> ()</td></tr>\n<tr class=\"separator:a8e89883fc13d2969e300e3dab133624d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e081f7006cb6a8b6c0621a7ee6d81f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a6e081f7006cb6a8b6c0621a7ee6d81f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">More...</a><br /></td></tr>\n<tr class=\"separator:a6e081f7006cb6a8b6c0621a7ee6d81f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41a703bfee11a984319c23ca8b58601d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">Start</a> ()</td></tr>\n<tr class=\"separator:a41a703bfee11a984319c23ca8b58601d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ac49dab36bc93c1d44db3fa7b78ec3367\" name=\"ac49dab36bc93c1d44db3fa7b78ec3367\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac49dab36bc93c1d44db3fa7b78ec3367\">&#9670;&nbsp;</a></span>TemplateComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TemplateComponent::TemplateComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e89883fc13d2969e300e3dab133624d\" name=\"a8e89883fc13d2969e300e3dab133624d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e89883fc13d2969e300e3dab133624d\">&#9670;&nbsp;</a></span>~TemplateComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TemplateComponent::~TemplateComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\" name=\"ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TemplateComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a6e081f7006cb6a8b6c0621a7ee6d81f9\" name=\"a6e081f7006cb6a8b6c0621a7ee6d81f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e081f7006cb6a8b6c0621a7ee6d81f9\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TemplateComponent::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Initializes an entity component. </p>\n<p >If an entity component has all of its resources already loaded, this will immediately <a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">Start()</a> the component. </p>\n\n<p>Reimplemented from <a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a41a703bfee11a984319c23ca8b58601d\" name=\"a41a703bfee11a984319c23ca8b58601d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41a703bfee11a984319c23ca8b58601d\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TemplateComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"template_8h_source.html\">template.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_text_reader_parser-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">TextReaderParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::TextReaderParser Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17\">is_continue</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b\">is_error</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142\">read_float32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d\">read_float64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad\">read_int16</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd\">read_int32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316\">read_int64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e\">read_int8</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8\">read_line</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9\">read_name</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516\">read_string</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3\">read_token</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de\">read_uint16</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c\">read_uint32</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f\">read_uint64</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023\">read_uint8</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435\">reset_error</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">set_skip_newline</a>(bool skip_newline)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">set_skip_value</a>(bool skip_value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05\">skip_newline</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">skip_newline_flag</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897\">skip_whitespace</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943\">TextReaderParser</a>(FileReader *reader)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_text_reader_parser.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::TextReaderParser Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">TextReaderParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_text_reader_parser-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::TextReaderParser Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::TextReaderParser:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_text_reader_parser.png\" usemap=\"#tram::TextReaderParser_map\" alt=\"\"/>\n  <map id=\"tram::TextReaderParser_map\" name=\"tram::TextReaderParser_map\">\n<area href=\"classtram_1_1_file_reader_parser.html\" alt=\"tram::FileReaderParser\" shape=\"rect\" coords=\"0,0,144,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a4c9bda65a540a5c369b1bc5c36d19943\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943\">TextReaderParser</a> (<a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> *reader)</td></tr>\n<tr class=\"separator:a4c9bda65a540a5c369b1bc5c36d19943\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2727568c3a10f2e173ec4179f3e354e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e\">read_int8</a> ()</td></tr>\n<tr class=\"separator:ac2727568c3a10f2e173ec4179f3e354e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99abb84482da2a05ca31f6099c5e9fad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad\">read_int16</a> ()</td></tr>\n<tr class=\"separator:a99abb84482da2a05ca31f6099c5e9fad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b891300d2c4c863fed16dccba4566cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd\">read_int32</a> ()</td></tr>\n<tr class=\"separator:a7b891300d2c4c863fed16dccba4566cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4d063176ad5ddb665980b05f4162316\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316\">read_int64</a> ()</td></tr>\n<tr class=\"separator:ab4d063176ad5ddb665980b05f4162316\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72087b8d7d3fe5aae9195ac35edb5023\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023\">read_uint8</a> ()</td></tr>\n<tr class=\"separator:a72087b8d7d3fe5aae9195ac35edb5023\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25ef758dce299e3013327c59fa8276de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de\">read_uint16</a> ()</td></tr>\n<tr class=\"separator:a25ef758dce299e3013327c59fa8276de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af27393ec11a775c33135bdf8af3ee14c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c\">read_uint32</a> ()</td></tr>\n<tr class=\"separator:af27393ec11a775c33135bdf8af3ee14c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d1e49afadde9b3ac293308b3f72394f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f\">read_uint64</a> ()</td></tr>\n<tr class=\"separator:a8d1e49afadde9b3ac293308b3f72394f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af178bb228cb9309753ca06926faf7142\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142\">read_float32</a> ()</td></tr>\n<tr class=\"separator:af178bb228cb9309753ca06926faf7142\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadab4b54c1468cb34f498da0403d919d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d\">read_float64</a> ()</td></tr>\n<tr class=\"separator:aadab4b54c1468cb34f498da0403d919d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a467ff7b32859f86869bf2134e3b5f7b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9\">read_name</a> ()</td></tr>\n<tr class=\"separator:a467ff7b32859f86869bf2134e3b5f7b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad02dd97ca99e1b028a5c662a7c46f1d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3\">read_token</a> ()</td></tr>\n<tr class=\"separator:ad02dd97ca99e1b028a5c662a7c46f1d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51d680fae0e08d2b468d114192d36516\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516\">read_string</a> ()</td></tr>\n<tr class=\"separator:a51d680fae0e08d2b468d114192d36516\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bcbf9cc72a0631af8222c378dc767b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string_view&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8\">read_line</a> ()</td></tr>\n<tr class=\"separator:a9bcbf9cc72a0631af8222c378dc767b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0cba960c7fd3821e8142e4bdffadfe05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05\">skip_newline</a> ()</td></tr>\n<tr class=\"separator:a0cba960c7fd3821e8142e4bdffadfe05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81ad733ab82054803ee16aee53958897\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897\">skip_whitespace</a> ()</td></tr>\n<tr class=\"separator:a81ad733ab82054803ee16aee53958897\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4fed2bc3815fed4a548ad35f7a30a17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17\">is_continue</a> ()</td></tr>\n<tr class=\"separator:ac4fed2bc3815fed4a548ad35f7a30a17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a783ecd25f9221a1ecdc6ae7075dff15b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b\">is_error</a> ()</td></tr>\n<tr class=\"separator:a783ecd25f9221a1ecdc6ae7075dff15b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac24ef033c2f6c0db5ebb5aad736a0435\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435\">reset_error</a> ()</td></tr>\n<tr class=\"separator:ac24ef033c2f6c0db5ebb5aad736a0435\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_file_reader_parser\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_file_reader_parser')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td></tr>\n<tr class=\"memitem:a99a0e7fd09920b898ef0a275b202541a inherit pub_methods_classtram_1_1_file_reader_parser\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">set_skip_value</a> (bool <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a>)</td></tr>\n<tr class=\"separator:a99a0e7fd09920b898ef0a275b202541a inherit pub_methods_classtram_1_1_file_reader_parser\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a593aa775ae47147f9328673822adb7d1 inherit pub_methods_classtram_1_1_file_reader_parser\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">set_skip_newline</a> (bool <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">skip_newline</a>)</td></tr>\n<tr class=\"separator:a593aa775ae47147f9328673822adb7d1 inherit pub_methods_classtram_1_1_file_reader_parser\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_file_reader_parser\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_file_reader_parser')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td></tr>\n<tr class=\"memitem:a8a40dde3c4452991d297c18b8f4098bd inherit pro_attribs_classtram_1_1_file_reader_parser\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">skip_newline_flag</a> = true</td></tr>\n<tr class=\"separator:a8a40dde3c4452991d297c18b8f4098bd inherit pro_attribs_classtram_1_1_file_reader_parser\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4102a29b7986a007aed7ffac17d6227 inherit pro_attribs_classtram_1_1_file_reader_parser\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">skip_value</a> = true</td></tr>\n<tr class=\"separator:aa4102a29b7986a007aed7ffac17d6227 inherit pro_attribs_classtram_1_1_file_reader_parser\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a4c9bda65a540a5c369b1bc5c36d19943\" name=\"a4c9bda65a540a5c369b1bc5c36d19943\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c9bda65a540a5c369b1bc5c36d19943\">&#9670;&nbsp;</a></span>TextReaderParser()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TextReaderParser::TextReaderParser </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a> *&#160;</td>\n          <td class=\"paramname\"><em>reader</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac4fed2bc3815fed4a548ad35f7a30a17\" name=\"ac4fed2bc3815fed4a548ad35f7a30a17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4fed2bc3815fed4a548ad35f7a30a17\">&#9670;&nbsp;</a></span>is_continue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::TextReaderParser::is_continue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a783ecd25f9221a1ecdc6ae7075dff15b\" name=\"a783ecd25f9221a1ecdc6ae7075dff15b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a783ecd25f9221a1ecdc6ae7075dff15b\">&#9670;&nbsp;</a></span>is_error()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::TextReaderParser::is_error </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"af178bb228cb9309753ca06926faf7142\" name=\"af178bb228cb9309753ca06926faf7142\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af178bb228cb9309753ca06926faf7142\">&#9670;&nbsp;</a></span>read_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::TextReaderParser::read_float32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"aadab4b54c1468cb34f498da0403d919d\" name=\"aadab4b54c1468cb34f498da0403d919d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadab4b54c1468cb34f498da0403d919d\">&#9670;&nbsp;</a></span>read_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::TextReaderParser::read_float64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a99abb84482da2a05ca31f6099c5e9fad\" name=\"a99abb84482da2a05ca31f6099c5e9fad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99abb84482da2a05ca31f6099c5e9fad\">&#9670;&nbsp;</a></span>read_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int16_t tram::TextReaderParser::read_int16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a7b891300d2c4c863fed16dccba4566cd\" name=\"a7b891300d2c4c863fed16dccba4566cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b891300d2c4c863fed16dccba4566cd\">&#9670;&nbsp;</a></span>read_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::TextReaderParser::read_int32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ab4d063176ad5ddb665980b05f4162316\" name=\"ab4d063176ad5ddb665980b05f4162316\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4d063176ad5ddb665980b05f4162316\">&#9670;&nbsp;</a></span>read_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int64_t tram::TextReaderParser::read_int64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ac2727568c3a10f2e173ec4179f3e354e\" name=\"ac2727568c3a10f2e173ec4179f3e354e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2727568c3a10f2e173ec4179f3e354e\">&#9670;&nbsp;</a></span>read_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int8_t tram::TextReaderParser::read_int8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a9bcbf9cc72a0631af8222c378dc767b8\" name=\"a9bcbf9cc72a0631af8222c378dc767b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9bcbf9cc72a0631af8222c378dc767b8\">&#9670;&nbsp;</a></span>read_line()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::TextReaderParser::read_line </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a467ff7b32859f86869bf2134e3b5f7b9\" name=\"a467ff7b32859f86869bf2134e3b5f7b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a467ff7b32859f86869bf2134e3b5f7b9\">&#9670;&nbsp;</a></span>read_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::TextReaderParser::read_name </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a51d680fae0e08d2b468d114192d36516\" name=\"a51d680fae0e08d2b468d114192d36516\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51d680fae0e08d2b468d114192d36516\">&#9670;&nbsp;</a></span>read_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::TextReaderParser::read_string </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ad02dd97ca99e1b028a5c662a7c46f1d3\" name=\"ad02dd97ca99e1b028a5c662a7c46f1d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad02dd97ca99e1b028a5c662a7c46f1d3\">&#9670;&nbsp;</a></span>read_token()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string_view tram::TextReaderParser::read_token </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a25ef758dce299e3013327c59fa8276de\" name=\"a25ef758dce299e3013327c59fa8276de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25ef758dce299e3013327c59fa8276de\">&#9670;&nbsp;</a></span>read_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::TextReaderParser::read_uint16 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"af27393ec11a775c33135bdf8af3ee14c\" name=\"af27393ec11a775c33135bdf8af3ee14c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af27393ec11a775c33135bdf8af3ee14c\">&#9670;&nbsp;</a></span>read_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::TextReaderParser::read_uint32 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a8d1e49afadde9b3ac293308b3f72394f\" name=\"a8d1e49afadde9b3ac293308b3f72394f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d1e49afadde9b3ac293308b3f72394f\">&#9670;&nbsp;</a></span>read_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::TextReaderParser::read_uint64 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a72087b8d7d3fe5aae9195ac35edb5023\" name=\"a72087b8d7d3fe5aae9195ac35edb5023\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72087b8d7d3fe5aae9195ac35edb5023\">&#9670;&nbsp;</a></span>read_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t tram::TextReaderParser::read_uint8 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ac24ef033c2f6c0db5ebb5aad736a0435\" name=\"ac24ef033c2f6c0db5ebb5aad736a0435\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac24ef033c2f6c0db5ebb5aad736a0435\">&#9670;&nbsp;</a></span>reset_error()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TextReaderParser::reset_error </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a0cba960c7fd3821e8142e4bdffadfe05\" name=\"a0cba960c7fd3821e8142e4bdffadfe05\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cba960c7fd3821e8142e4bdffadfe05\">&#9670;&nbsp;</a></span>skip_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TextReaderParser::skip_newline </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a81ad733ab82054803ee16aee53958897\" name=\"a81ad733ab82054803ee16aee53958897\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81ad733ab82054803ee16aee53958897\">&#9670;&nbsp;</a></span>skip_whitespace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TextReaderParser::skip_whitespace </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e\">tram::FileReaderParser</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_text_writer_parser-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">TextWriterParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::TextWriterParser Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c\">TextWriterParser</a>(FileWriter *writer)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5\">write_float32</a>(float value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5\">write_float64</a>(double value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c\">write_int16</a>(int16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880\">write_int32</a>(int32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8\">write_int64</a>(int64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc\">write_int8</a>(int8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b\">write_name</a>(name_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5\">write_newline</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929\">write_string</a>(const char *value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4\">write_uint16</a>(uint16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e\">write_uint32</a>(uint32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d\">write_uint64</a>(uint64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389\">write_uint8</a>(uint8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_text_writer_parser.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::TextWriterParser Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">TextWriterParser</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_text_writer_parser-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::TextWriterParser Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::TextWriterParser:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_text_writer_parser.png\" usemap=\"#tram::TextWriterParser_map\" alt=\"\"/>\n  <map id=\"tram::TextWriterParser_map\" name=\"tram::TextWriterParser_map\">\n<area href=\"classtram_1_1_file_writer_parser.html\" alt=\"tram::FileWriterParser\" shape=\"rect\" coords=\"0,0,137,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3e74edee81b110b0166b90e3bf17e31c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c\">TextWriterParser</a> (<a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> *writer)</td></tr>\n<tr class=\"separator:a3e74edee81b110b0166b90e3bf17e31c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad407f6ac2320d490426b64d7de4c8dbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc\">write_int8</a> (int8_t value)</td></tr>\n<tr class=\"separator:ad407f6ac2320d490426b64d7de4c8dbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade23c91446806e0d7ec6c8ddc1b3af3c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c\">write_int16</a> (int16_t value)</td></tr>\n<tr class=\"separator:ade23c91446806e0d7ec6c8ddc1b3af3c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c9890c6861506c1b2b66aced0bd7880\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880\">write_int32</a> (int32_t value)</td></tr>\n<tr class=\"separator:a9c9890c6861506c1b2b66aced0bd7880\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae39447a94ffa853f810d7c7967013ef8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8\">write_int64</a> (int64_t value)</td></tr>\n<tr class=\"separator:ae39447a94ffa853f810d7c7967013ef8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1354ba4b11cded7f82a0982aee9fd389\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389\">write_uint8</a> (uint8_t value)</td></tr>\n<tr class=\"separator:a1354ba4b11cded7f82a0982aee9fd389\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01ea6be8c09ed2edd59d11f78170fee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4\">write_uint16</a> (uint16_t value)</td></tr>\n<tr class=\"separator:a01ea6be8c09ed2edd59d11f78170fee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2eee18a0fc2e2c118d4405222a98fb9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e\">write_uint32</a> (uint32_t value)</td></tr>\n<tr class=\"separator:a2eee18a0fc2e2c118d4405222a98fb9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a887dfa879f5b48ea59e72389db4c436d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d\">write_uint64</a> (uint64_t value)</td></tr>\n<tr class=\"separator:a887dfa879f5b48ea59e72389db4c436d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a173dd06aa86fe89323ca1002e579fbd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5\">write_float32</a> (float value)</td></tr>\n<tr class=\"separator:a173dd06aa86fe89323ca1002e579fbd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d92f52efcf315bba5c093f36a26da5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5\">write_float64</a> (double value)</td></tr>\n<tr class=\"separator:ab5d92f52efcf315bba5c093f36a26da5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93311a154ad4f18ff15bcb705f31d80b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b\">write_name</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> value)</td></tr>\n<tr class=\"separator:a93311a154ad4f18ff15bcb705f31d80b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7657b9c3de6cef1a9f09be0da5869929\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929\">write_string</a> (const char *value)</td></tr>\n<tr class=\"separator:a7657b9c3de6cef1a9f09be0da5869929\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab02072d2e22fd07014cf42c19a2e1ef5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5\">write_newline</a> ()</td></tr>\n<tr class=\"separator:ab02072d2e22fd07014cf42c19a2e1ef5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a3e74edee81b110b0166b90e3bf17e31c\" name=\"a3e74edee81b110b0166b90e3bf17e31c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e74edee81b110b0166b90e3bf17e31c\">&#9670;&nbsp;</a></span>TextWriterParser()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TextWriterParser::TextWriterParser </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> *&#160;</td>\n          <td class=\"paramname\"><em>writer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a173dd06aa86fe89323ca1002e579fbd5\" name=\"a173dd06aa86fe89323ca1002e579fbd5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a173dd06aa86fe89323ca1002e579fbd5\">&#9670;&nbsp;</a></span>write_float32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_float32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ab5d92f52efcf315bba5c093f36a26da5\" name=\"ab5d92f52efcf315bba5c093f36a26da5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5d92f52efcf315bba5c093f36a26da5\">&#9670;&nbsp;</a></span>write_float64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_float64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ade23c91446806e0d7ec6c8ddc1b3af3c\" name=\"ade23c91446806e0d7ec6c8ddc1b3af3c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade23c91446806e0d7ec6c8ddc1b3af3c\">&#9670;&nbsp;</a></span>write_int16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_int16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a9c9890c6861506c1b2b66aced0bd7880\" name=\"a9c9890c6861506c1b2b66aced0bd7880\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c9890c6861506c1b2b66aced0bd7880\">&#9670;&nbsp;</a></span>write_int32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_int32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ae39447a94ffa853f810d7c7967013ef8\" name=\"ae39447a94ffa853f810d7c7967013ef8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae39447a94ffa853f810d7c7967013ef8\">&#9670;&nbsp;</a></span>write_int64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_int64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ad407f6ac2320d490426b64d7de4c8dbc\" name=\"ad407f6ac2320d490426b64d7de4c8dbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad407f6ac2320d490426b64d7de4c8dbc\">&#9670;&nbsp;</a></span>write_int8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_int8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">int8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a93311a154ad4f18ff15bcb705f31d80b\" name=\"a93311a154ad4f18ff15bcb705f31d80b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93311a154ad4f18ff15bcb705f31d80b\">&#9670;&nbsp;</a></span>write_name()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_name </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"ab02072d2e22fd07014cf42c19a2e1ef5\" name=\"ab02072d2e22fd07014cf42c19a2e1ef5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab02072d2e22fd07014cf42c19a2e1ef5\">&#9670;&nbsp;</a></span>write_newline()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_newline </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a7657b9c3de6cef1a9f09be0da5869929\" name=\"a7657b9c3de6cef1a9f09be0da5869929\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7657b9c3de6cef1a9f09be0da5869929\">&#9670;&nbsp;</a></span>write_string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_string </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a01ea6be8c09ed2edd59d11f78170fee4\" name=\"a01ea6be8c09ed2edd59d11f78170fee4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01ea6be8c09ed2edd59d11f78170fee4\">&#9670;&nbsp;</a></span>write_uint16()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_uint16 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a2eee18a0fc2e2c118d4405222a98fb9e\" name=\"a2eee18a0fc2e2c118d4405222a98fb9e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2eee18a0fc2e2c118d4405222a98fb9e\">&#9670;&nbsp;</a></span>write_uint32()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_uint32 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a887dfa879f5b48ea59e72389db4c436d\" name=\"a887dfa879f5b48ea59e72389db4c436d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a887dfa879f5b48ea59e72389db4c436d\">&#9670;&nbsp;</a></span>write_uint64()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_uint64 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<a id=\"a1354ba4b11cded7f82a0982aee9fd389\" name=\"a1354ba4b11cded7f82a0982aee9fd389\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1354ba4b11cded7f82a0982aee9fd389\">&#9670;&nbsp;</a></span>write_uint8()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::TextWriterParser::write_uint8 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b\">tram::FileWriterParser</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_transition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Transition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">AddPoint</a>(vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">GeneratePlanes</a>(bool disp=false)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">IsInside</a>(vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">Make</a>(name_t name, WorldCell *cell_into)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">planes</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">points</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">Transition</a>(name_t name, WorldCell *cell_into)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54\">WorldCell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">~Transition</a>()=delete</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_transition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Transition Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_transition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Transition Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Connects WorldCells together.  \n <a href=\"classtram_1_1_transition.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"transition_8h_source.html\">framework/transition.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a42f1c234540f31c6f9e67e332e5f55b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">Transition</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *<a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>)</td></tr>\n<tr class=\"separator:a42f1c234540f31c6f9e67e332e5f55b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7aca14200b843ed9d5f623d7637a5e3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">~Transition</a> ()=delete</td></tr>\n<tr class=\"separator:a7aca14200b843ed9d5f623d7637a5e3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0abe4ca65b69601118f03ed677b276c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">AddPoint</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"memdesc:a0abe4ca65b69601118f03ed677b276c0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a point to the transition volume.  <a href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">More...</a><br /></td></tr>\n<tr class=\"separator:a0abe4ca65b69601118f03ed677b276c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2c202e43fb8725030c17c88176a36bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">GeneratePlanes</a> (bool disp=false)</td></tr>\n<tr class=\"memdesc:ad2c202e43fb8725030c17c88176a36bb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finalizes the transition after adding points to it.  <a href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">More...</a><br /></td></tr>\n<tr class=\"separator:ad2c202e43fb8725030c17c88176a36bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa10c4f5e137fa766558505864995af4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">IsInside</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"memdesc:aa10c4f5e137fa766558505864995af4f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether a point is inside the transition volume.  <a href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa10c4f5e137fa766558505864995af4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2617a4858326884753cc3198c7d6560\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">GetCell</a> ()</td></tr>\n<tr class=\"separator:ac2617a4858326884753cc3198c7d6560\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1308ec63595db0c05d3085de4f50d9ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>)</td></tr>\n<tr class=\"memdesc:a1308ec63595db0c05d3085de4f50d9ce\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a transition with the given name.  <a href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">More...</a><br /></td></tr>\n<tr class=\"separator:a1308ec63595db0c05d3085de4f50d9ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa87cde46adb540c592be7626e595119c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *<a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>)</td></tr>\n<tr class=\"memdesc:aa87cde46adb540c592be7626e595119c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a new transition.  <a href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">More...</a><br /></td></tr>\n<tr class=\"separator:aa87cde46adb540c592be7626e595119c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:a47224165493129a93ae5d7cd71993ab0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a></td></tr>\n<tr class=\"separator:a47224165493129a93ae5d7cd71993ab0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d8f2bf93f2ea1502d7ef4faf5a019c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a></td></tr>\n<tr class=\"separator:a0d8f2bf93f2ea1502d7ef4faf5a019c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43d8d05a4e4a8e59ebd166d65a6f193b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">points</a></td></tr>\n<tr class=\"separator:a43d8d05a4e4a8e59ebd166d65a6f193b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15309d1c272d449fb0bda318deb76dd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">planes</a></td></tr>\n<tr class=\"separator:a15309d1c272d449fb0bda318deb76dd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a84136aa23993ba45f0745a9d9488ab54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54\">WorldCell</a></td></tr>\n<tr class=\"separator:a84136aa23993ba45f0745a9d9488ab54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Connects WorldCells together. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/transition.html\">https://racenis.github.io/tram-sdk/documentation/framework/transition.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a42f1c234540f31c6f9e67e332e5f55b2\" name=\"a42f1c234540f31c6f9e67e332e5f55b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42f1c234540f31c6f9e67e332e5f55b2\">&#9670;&nbsp;</a></span>Transition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Transition::Transition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td>\n          <td class=\"paramname\"><em>cell_into</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7aca14200b843ed9d5f623d7637a5e3b\" name=\"a7aca14200b843ed9d5f623d7637a5e3b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7aca14200b843ed9d5f623d7637a5e3b\">&#9670;&nbsp;</a></span>~Transition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Transition::~Transition </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">delete</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0abe4ca65b69601118f03ed677b276c0\" name=\"a0abe4ca65b69601118f03ed677b276c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0abe4ca65b69601118f03ed677b276c0\">&#9670;&nbsp;</a></span>AddPoint()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Transition::AddPoint </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a point to the transition volume. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>After adding points make sure to call <a class=\"el\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\" title=\"Finalizes the transition after adding points to it.\">Transition::GeneratePlanes()</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"a1308ec63595db0c05d3085de4f50d9ce\" name=\"a1308ec63595db0c05d3085de4f50d9ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1308ec63595db0c05d3085de4f50d9ce\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * tram::Transition::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a transition with the given name. </p>\n<p >Pointer to the transition or a nullptr if wasn't found. </p>\n\n</div>\n</div>\n<a id=\"ad2c202e43fb8725030c17c88176a36bb\" name=\"ad2c202e43fb8725030c17c88176a36bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2c202e43fb8725030c17c88176a36bb\">&#9670;&nbsp;</a></span>GeneratePlanes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Transition::GeneratePlanes </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>disp</em> = <code>false</code></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finalizes the transition after adding points to it. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">disp</td><td>Draws the transition planes for a single frame if set to true. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ac2617a4858326884753cc3198c7d6560\" name=\"ac2617a4858326884753cc3198c7d6560\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2617a4858326884753cc3198c7d6560\">&#9670;&nbsp;</a></span>GetCell()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::Transition::GetCell </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa10c4f5e137fa766558505864995af4f\" name=\"aa10c4f5e137fa766558505864995af4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa10c4f5e137fa766558505864995af4f\">&#9670;&nbsp;</a></span>IsInside()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Transition::IsInside </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether a point is inside the transition volume. </p>\n\n</div>\n</div>\n<a id=\"aa87cde46adb540c592be7626e595119c\" name=\"aa87cde46adb540c592be7626e595119c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa87cde46adb540c592be7626e595119c\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * tram::Transition::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td>\n          <td class=\"paramname\"><em>cell_into</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a new transition. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">name</td><td>Name of the transition. Can be set to \"none\" if the transition doesn't need a name. </td></tr>\n    <tr><td class=\"paramname\">cell_into</td><td>Pointer to the <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> into which the transition will be leading into. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a84136aa23993ba45f0745a9d9488ab54\" name=\"a84136aa23993ba45f0745a9d9488ab54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84136aa23993ba45f0745a9d9488ab54\">&#9670;&nbsp;</a></span>WorldCell</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0d8f2bf93f2ea1502d7ef4faf5a019c5\" name=\"a0d8f2bf93f2ea1502d7ef4faf5a019c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">&#9670;&nbsp;</a></span>cell_into</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* tram::Transition::cell_into</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47224165493129a93ae5d7cd71993ab0\" name=\"a47224165493129a93ae5d7cd71993ab0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47224165493129a93ae5d7cd71993ab0\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Transition::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15309d1c272d449fb0bda318deb76dd7\" name=\"a15309d1c272d449fb0bda318deb76dd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15309d1c272d449fb0bda318deb76dd7\">&#9670;&nbsp;</a></span>planes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&gt; tram::Transition::planes</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43d8d05a4e4a8e59ebd166d65a6f193b\" name=\"a43d8d05a4e4a8e59ebd166d65a6f193b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43d8d05a4e4a8e59ebd166d65a6f193b\">&#9670;&nbsp;</a></span>points</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&gt; tram::Transition::points</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"transition_8h_source.html\">transition.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"transition_8cpp.html\">transition.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_trigger-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">Trigger</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Trigger Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">Activate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">collision_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a>(const SharedEntityData &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(id_t entity_id)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a>(name_t entity_name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(signal_t type, Value value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">GetType</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">IsDrawTrigger</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(name_t type, File *file)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a>(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">MessageHandler</a>(Message &amp;msg)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">Register</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a>(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a>(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">Serialize</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">SetDrawTrigger</a>(bool)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(vec3 loc)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">SetParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(quat rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">SetupModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">Trigger</a>(const SharedEntityData &amp;, const ValueArray &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">trigger_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">triggercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">UpdateParameters</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(const vec3 &amp;loc, const quat &amp;rot)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_trigger.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Trigger Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">Trigger</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_trigger-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Trigger Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper.  \n <a href=\"classtram_1_1_trigger.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entities_2trigger_8h_source.html\">entities/trigger.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Trigger:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_trigger.png\" usemap=\"#tram::Trigger_map\" alt=\"\"/>\n  <map id=\"tram::Trigger_map\" name=\"tram::Trigger_map\">\n<area href=\"classtram_1_1_entity.html\" title=\"Entity base class.\" alt=\"tram::Entity\" shape=\"rect\" coords=\"0,0,83,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad3b87b8e7ae11e8813593402ff1ae12c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">Trigger</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:ad3b87b8e7ae11e8813593402ff1ae12c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3db6f95f9583f10e1bbe88f0915e389\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">UpdateParameters</a> ()</td></tr>\n<tr class=\"memdesc:ac3db6f95f9583f10e1bbe88f0915e389\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called.  <a href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">More...</a><br /></td></tr>\n<tr class=\"separator:ac3db6f95f9583f10e1bbe88f0915e389\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2537a228019f8807f75f7169238614e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">SetParameters</a> ()</td></tr>\n<tr class=\"memdesc:a2537a228019f8807f75f7169238614e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called.  <a href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">More...</a><br /></td></tr>\n<tr class=\"separator:a2537a228019f8807f75f7169238614e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d880e5d98a9a6210c79bf19d280219c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a6d880e5d98a9a6210c79bf19d280219c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an entity.  <a href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">More...</a><br /></td></tr>\n<tr class=\"separator:a6d880e5d98a9a6210c79bf19d280219c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c2c332e744a2e780974d4638d388c6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:a8c2c332e744a2e780974d4638d388c6e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads an entity.  <a href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c2c332e744a2e780974d4638d388c6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5b794eeecfb4a50395bb0013a5a0d2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">Serialize</a> ()</td></tr>\n<tr class=\"separator:aa5b794eeecfb4a50395bb0013a5a0d2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fba995382f75a47579141e409b6c4c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">MessageHandler</a> (<a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;msg)</td></tr>\n<tr class=\"memdesc:a6fba995382f75a47579141e409b6c4c2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive messages.  <a href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">More...</a><br /></td></tr>\n<tr class=\"separator:a6fba995382f75a47579141e409b6c4c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99650ea152bb5eb058cdb49d19bc4ecc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">Activate</a> ()</td></tr>\n<tr class=\"separator:a99650ea152bb5eb058cdb49d19bc4ecc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0bd3f37d64f909978372c5323778438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">GetType</a> ()</td></tr>\n<tr class=\"memdesc:aa0bd3f37d64f909978372c5323778438\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the type of the entity.  <a href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">More...</a><br /></td></tr>\n<tr class=\"separator:aa0bd3f37d64f909978372c5323778438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a> ()</td></tr>\n<tr class=\"memdesc:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an unnamed entity with a random ID.  <a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cd683c73f9413ca09d5417c550eaf3d inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">Entity</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>)</td></tr>\n<tr class=\"memdesc:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a named entity with a random ID.  <a href=\"classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab2c160e37d196c3a8f7224adbe282f8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">Entity</a> (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;)</td></tr>\n<tr class=\"memdesc:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity from a <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" title=\"Basic Entity parameters.\">SharedEntityData</a>.  <a href=\"classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80\">More...</a><br /></td></tr>\n<tr class=\"separator:aae1750f202fa57bb040126c1d8af0b80 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a> ()</td></tr>\n<tr class=\"memdesc:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructs the entity.  <a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">More...</a><br /></td></tr>\n<tr class=\"separator:a79fd0e828bd002ca6d4505dbc63739e2 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a> () const</td></tr>\n<tr class=\"separator:afe85e71ed0b3321908e0c86c58a71271 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a> () const</td></tr>\n<tr class=\"separator:a5ec303fd15c52e42d390eabeece5365f inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a> ()</td></tr>\n<tr class=\"memdesc:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity's parent cell.  <a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fe6fef78260ef5d7a3dc425e26ca375 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a> () const</td></tr>\n<tr class=\"memdesc:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity load status.  <a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">More...</a><br /></td></tr>\n<tr class=\"separator:a305ae4e799b36c4111f5cd089748f422 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a> () const</td></tr>\n<tr class=\"memdesc:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the auto load flag status.  <a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">More...</a><br /></td></tr>\n<tr class=\"separator:a147a88601da58a30ee3d39bbc2c2da12 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a> () const</td></tr>\n<tr class=\"memdesc:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the persistence status of an entity.  <a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a07ace4859c60707136639f33cd525c0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a> () const</td></tr>\n<tr class=\"separator:ab439f567d570a3bbd0f80c5d2e025eb0 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a> () const</td></tr>\n<tr class=\"memdesc:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the entity deletion status.  <a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">More...</a><br /></td></tr>\n<tr class=\"separator:a409d0640de875ed0bdf2b8b71cfe75ee inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a> () const</td></tr>\n<tr class=\"separator:ace4932f5988e14152753e4de7de86a4a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Purges the entity.  <a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3430330bb5b0f51f64b23ea38396f91 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a> (bool is)</td></tr>\n<tr class=\"separator:a742a345ed3da6d6966040b4a2045ce8e inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a> (bool is)</td></tr>\n<tr class=\"separator:a0143b5547a4eeef3e1501defe9882514 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc)</td></tr>\n<tr class=\"separator:a6e2489225d5ca4a76b702b4d138963de inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot)</td></tr>\n<tr class=\"separator:a9a15c4d86ef5f814eb8cc9b70cb8ced3 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;loc, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rot)</td></tr>\n<tr class=\"separator:a475636f78b92b3eca43ce1d01da4fcb8 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a> ()</td></tr>\n<tr class=\"separator:a7bf177c08614dd697b23cd021c7fbfda inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a> ()</td></tr>\n<tr class=\"separator:adbb214d504101d5113d149fa0f06e162 inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allows entities to receive events.  <a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca775133055e997ef91ac3db27f2a0a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a> ()</td></tr>\n<tr class=\"memdesc:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Check whether an entity has entered a different cell.  <a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fa0c3702c54eb536cd07eaf49dc799a inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a> ()</td></tr>\n<tr class=\"separator:a8439e1ea14f61418caf8fccc00315bbb inherit pub_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a6eafc910dc841bea5073d9cd27a14f77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">IsDrawTrigger</a> ()</td></tr>\n<tr class=\"separator:a6eafc910dc841bea5073d9cd27a14f77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6703ba2939bf5799cec0c87eb677038\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">SetDrawTrigger</a> (bool)</td></tr>\n<tr class=\"separator:ae6703ba2939bf5799cec0c87eb677038\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a695e8a121f4c3e42dbe4afcd1adecbe2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">Register</a> ()</td></tr>\n<tr class=\"separator:a695e8a121f4c3e42dbe4afcd1adecbe2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_static_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_static_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Static Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a> ()</td></tr>\n<tr class=\"memdesc:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates entities.  <a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">More...</a><br /></td></tr>\n<tr class=\"separator:af4a0a09ff81566de5b217018529844c5 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">More...</a><br /></td></tr>\n<tr class=\"separator:a688ecc3f647b88edae8704c9330d2afe inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> *fields, size_t fieldcount)</td></tr>\n<tr class=\"memdesc:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199\">More...</a><br /></td></tr>\n<tr class=\"separator:a9611e07ae9178831c24f65d35e936199 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">RegisterType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt; <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> &gt; fields)</td></tr>\n<tr class=\"memdesc:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new entity type.  <a href=\"classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525\">More...</a><br /></td></tr>\n<tr class=\"separator:abf07867be6c8d765620cf6ad3a1b2525 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <a class=\"el\" href=\"classtram_1_1_file.html\">File</a> *file)</td></tr>\n<tr class=\"memdesc:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> from a <a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a>.  <a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">More...</a><br /></td></tr>\n<tr class=\"separator:a5bde1559d6170dca943fa7f41dde7ea9 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"memdesc:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an entity.  <a href=\"classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333\">More...</a><br /></td></tr>\n<tr class=\"separator:a357bb17d489c2f456994c1fa4150f333 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id)</td></tr>\n<tr class=\"memdesc:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its ID number.  <a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">More...</a><br /></td></tr>\n<tr class=\"separator:afba6aa3dbbd10ebc42beb6729bdb7da2 inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> entity_name)</td></tr>\n<tr class=\"memdesc:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the entity by its name.  <a href=\"classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec\">More...</a><br /></td></tr>\n<tr class=\"separator:aa949dd2fafeb955d699271dbe41c75ec inherit pub_static_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a888c3a8eafbed2f160ada1af651de268\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">SetupModel</a> ()</td></tr>\n<tr class=\"separator:a888c3a8eafbed2f160ada1af651de268\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a> ()</td></tr>\n<tr class=\"memdesc:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers the entity.  <a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">More...</a><br /></td></tr>\n<tr class=\"separator:a21f52a14480f7dec666418d7ba17524c inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a> ()</td></tr>\n<tr class=\"memdesc:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unregisters the entity.  <a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">More...</a><br /></td></tr>\n<tr class=\"separator:a80727e0995ac3f27addb02613c8e5edd inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type)</td></tr>\n<tr class=\"separator:aa83f617be04b68ab23d2f42a248b9e7d inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:afbad8d97ef0905782c6aa0ef8ca7cf88 inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a613b86846cd7d82c666367c98d266e6e inherit pro_methods_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:ac9ce430e5009ab03a6065d4ec1520816\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">rendercomponent</a></td></tr>\n<tr class=\"separator:ac9ce430e5009ab03a6065d4ec1520816\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72b18d259352340995c217999106916d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">triggercomponent</a></td></tr>\n<tr class=\"separator:a72b18d259352340995c217999106916d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9646278b81b27211890f5895400d216d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">model</a></td></tr>\n<tr class=\"separator:a9646278b81b27211890f5895400d216d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6e57dd6a789d4f62c5a85b2b6974040\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">trigger_flags</a></td></tr>\n<tr class=\"separator:ab6e57dd6a789d4f62c5a85b2b6974040\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd2708416416c4ecefaaf3d58022fe68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">collision_mask</a></td></tr>\n<tr class=\"separator:acd2708416416c4ecefaaf3d58022fe68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a> = 0</td></tr>\n<tr class=\"separator:a0e0037fe55b567a2f73a84e4e6932197 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a></td></tr>\n<tr class=\"separator:ab9b31a0d34775a0f01a2bef87efd3140 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = nullptr</td></tr>\n<tr class=\"separator:ad3fb3cd40bf0ec9c846a46704d4f7470 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = nullptr</td></tr>\n<tr class=\"separator:a32d15f20656ffc4da923380374605df0 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0525838325f363757549a3faa3267a62 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aa2a31ccd75576ca82547ed1feed60d8c inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0</td></tr>\n<tr class=\"separator:af48fa95d5f1f47aebc79545a861cd478 inherit pro_attribs_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pub_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1\n }</td></tr>\n<tr class=\"separator:a9c07ba341c9b5a9d969a5ba58ccb7d8f inherit pub_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_types_classtram_1_1_entity\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_types_classtram_1_1_entity')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Types inherited from <a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memitem:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32\n, <a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64\n<br />\n }</td></tr>\n<tr class=\"separator:aaed86a9cc626eeab1796509f702ff378 inherit pro_types_classtram_1_1_entity\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/entities/trigger.html\">https://racenis.github.io/tram-sdk/documentation/entities/trigger.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ad3b87b8e7ae11e8813593402ff1ae12c\" name=\"ad3b87b8e7ae11e8813593402ff1ae12c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3b87b8e7ae11e8813593402ff1ae12c\">&#9670;&nbsp;</a></span>Trigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Trigger::Trigger </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shared_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>field_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a99650ea152bb5eb058cdb49d19bc4ecc\" name=\"a99650ea152bb5eb058cdb49d19bc4ecc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99650ea152bb5eb058cdb49d19bc4ecc\">&#9670;&nbsp;</a></span>Activate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::Activate </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0bd3f37d64f909978372c5323778438\" name=\"aa0bd3f37d64f909978372c5323778438\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0bd3f37d64f909978372c5323778438\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Trigger::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the type of the entity. </p>\n<p >Usually this method returns the same name that is used to <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">Entity::RegisterType()</a> its type. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6eafc910dc841bea5073d9cd27a14f77\" name=\"a6eafc910dc841bea5073d9cd27a14f77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6eafc910dc841bea5073d9cd27a14f77\">&#9670;&nbsp;</a></span>IsDrawTrigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static bool tram::Trigger::IsDrawTrigger </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d880e5d98a9a6210c79bf19d280219c\" name=\"a6d880e5d98a9a6210c79bf19d280219c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d880e5d98a9a6210c79bf19d280219c\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Loads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\" title=\"Loads an entity.\">Load()</a> method for an entity type will set up its components, event listeners, etc. After being loaded, the entity will be ready for simulation.</p>\n<p >When implementing this method, make sure to flag the entity with the <code>LOADED</code> flag, so that world streaming system doesn't try to load your entity twice. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a6fba995382f75a47579141e409b6c4c2\" name=\"a6fba995382f75a47579141e409b6c4c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fba995382f75a47579141e409b6c4c2\">&#9670;&nbsp;</a></span>MessageHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::MessageHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>msg</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allows entities to receive messages. </p>\n<p >Whenever an entity is sent a <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a>, once the <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\" title=\"Dispatches sent messsages.\">Message::Dispatch()</a> function has been called, the entity will gets the message passed to it through this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a695e8a121f4c3e42dbe4afcd1adecbe2\" name=\"a695e8a121f4c3e42dbe4afcd1adecbe2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a695e8a121f4c3e42dbe4afcd1adecbe2\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::Register </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5b794eeecfb4a50395bb0013a5a0d2f\" name=\"aa5b794eeecfb4a50395bb0013a5a0d2f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5b794eeecfb4a50395bb0013a5a0d2f\">&#9670;&nbsp;</a></span>Serialize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::Serialize </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ae6703ba2939bf5799cec0c87eb677038\" name=\"ae6703ba2939bf5799cec0c87eb677038\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6703ba2939bf5799cec0c87eb677038\">&#9670;&nbsp;</a></span>SetDrawTrigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::SetDrawTrigger </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2537a228019f8807f75f7169238614e4\" name=\"a2537a228019f8807f75f7169238614e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2537a228019f8807f75f7169238614e4\">&#9670;&nbsp;</a></span>SetParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::SetParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when either <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">Entity::SetLocation</a> or <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">Entity::SetRotation</a> is called. </p>\n<p >Usually this method is used to relocate or rerotate an entity.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is usually set from this method, otherwise in the next <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> update step, the entity's previous rotation and location will be restored. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"a888c3a8eafbed2f160ada1af651de268\" name=\"a888c3a8eafbed2f160ada1af651de268\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a888c3a8eafbed2f160ada1af651de268\">&#9670;&nbsp;</a></span>SetupModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::SetupModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c2c332e744a2e780974d4638d388c6e\" name=\"a8c2c332e744a2e780974d4638d388c6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c2c332e744a2e780974d4638d388c6e\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Unloads an entity. </p>\n<p >Usually the <a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\" title=\"Loads an entity.\">Load()</a> method for an entity type will destroy its its components, event listeners, etc. After being unloaded, the entity have been removed from the simulation.</p>\n<p >When implementing this method, make sure to clear your entity's LOADED flag, so that world streaming system can load the entity again. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<a id=\"ac3db6f95f9583f10e1bbe88f0915e389\" name=\"ac3db6f95f9583f10e1bbe88f0915e389\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3db6f95f9583f10e1bbe88f0915e389\">&#9670;&nbsp;</a></span>UpdateParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Trigger::UpdateParameters </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Called when <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform</a> is called. </p>\n<p >From the runtime's side, only the <a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> system will call the <a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">Entity::UpdateTransform()</a> method, and through it, this method.</p>\n<p >Usually this method is used to forward the entity's new position and rotation to its <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a>, if it has one.</p>\n<p >If the entity has a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, its position or rotation is never updated from this method. </p>\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"acd2708416416c4ecefaaf3d58022fe68\" name=\"acd2708416416c4ecefaaf3d58022fe68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd2708416416c4ecefaaf3d58022fe68\">&#9670;&nbsp;</a></span>collision_mask</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Trigger::collision_mask</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9646278b81b27211890f5895400d216d\" name=\"a9646278b81b27211890f5895400d216d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9646278b81b27211890f5895400d216d\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Trigger::model</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9ce430e5009ab03a6065d4ec1520816\" name=\"ac9ce430e5009ab03a6065d4ec1520816\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9ce430e5009ab03a6065d4ec1520816\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; tram::Trigger::rendercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab6e57dd6a789d4f62c5a85b2b6974040\" name=\"ab6e57dd6a789d4f62c5a85b2b6974040\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6e57dd6a789d4f62c5a85b2b6974040\">&#9670;&nbsp;</a></span>trigger_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Trigger::trigger_flags</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72b18d259352340995c217999106916d\" name=\"a72b18d259352340995c217999106916d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72b18d259352340995c217999106916d\">&#9670;&nbsp;</a></span>triggercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>&gt; tram::Trigger::triggercomponent</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2trigger_8h_source.html\">trigger.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2trigger_8cpp.html\">trigger.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_trigger_component-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::TriggerComponent Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">Collision</a>(const Physics::Collision &amp;collision)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">EventHandler</a>(Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">GetCollisionGroup</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">GetCollisionMask</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">GetModel</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">GetStoredCollisions</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">Poll</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">ResetCollisions</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">SetActivationCallback</a>(collision_callback activation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">SetCollisionGroup</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">SetCollisionMask</a>(uint32_t flags)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">SetDectivationCallback</a>(collision_callback deactivation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">SetFilterCallback</a>(filter_callback filter)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">SetLocation</a>(vec3 location)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">SetModel</a>(name_t model)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9\">SetModel</a>(Physics::CollisionModel *model)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(Entity *parent)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">SetRotation</a>(quat rotation)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">SetShape</a>(Physics::CollisionShape shape)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">SetStoreCollisions</a>(bool store_collisions)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">Start</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">TriggerComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">~TriggerComponent</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_trigger_component.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::TriggerComponent Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_trigger_component-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::TriggerComponent Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper.  \n <a href=\"classtram_1_1_trigger_component.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::TriggerComponent:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"classtram_1_1_trigger_component.png\" usemap=\"#tram::TriggerComponent_map\" alt=\"\"/>\n  <map id=\"tram::TriggerComponent_map\" name=\"tram::TriggerComponent_map\">\n<area href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\" alt=\"tram::EntityComponent\" shape=\"rect\" coords=\"0,0,146,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:acb29106d21d1cf02169a58c1c82c86a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">TriggerComponent</a> ()</td></tr>\n<tr class=\"separator:acb29106d21d1cf02169a58c1c82c86a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fa2ed0795ec0f93390762bc849c8012\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">~TriggerComponent</a> ()</td></tr>\n<tr class=\"separator:a9fa2ed0795ec0f93390762bc849c8012\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1576403ad5e3fe824e53453660ba90c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">EventHandler</a> (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:a1576403ad5e3fe824e53453660ba90c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62a3322c918a0cf7b2793b94b1144059\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">Start</a> ()</td></tr>\n<tr class=\"separator:a62a3322c918a0cf7b2793b94b1144059\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac9479cb3992294f494eefba8061ad1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">GetModel</a> ()</td></tr>\n<tr class=\"separator:aac9479cb3992294f494eefba8061ad1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c35e8061d5dc72e113fa4fc52f875fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">SetModel</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> model)</td></tr>\n<tr class=\"separator:a1c35e8061d5dc72e113fa4fc52f875fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae965164c2483a255585e9998abe87df9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9\">SetModel</a> (<a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a> *model)</td></tr>\n<tr class=\"separator:ae965164c2483a255585e9998abe87df9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af69d3a60b12eebbbdec84c83b049941e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">SetShape</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a> shape)</td></tr>\n<tr class=\"memdesc:af69d3a60b12eebbbdec84c83b049941e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets a collision shape for the trigger.  <a href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">More...</a><br /></td></tr>\n<tr class=\"separator:af69d3a60b12eebbbdec84c83b049941e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad30c23103020b9c9144d21835793f892\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">SetActivationCallback</a> (<a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> activation)</td></tr>\n<tr class=\"separator:ad30c23103020b9c9144d21835793f892\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5810d82217bbf1ba29a40beca70ce30d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">SetDectivationCallback</a> (<a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> deactivation)</td></tr>\n<tr class=\"separator:a5810d82217bbf1ba29a40beca70ce30d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac4d9c4e43a0e75b00ec6de674c9b7bc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">SetFilterCallback</a> (<a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a> filter)</td></tr>\n<tr class=\"separator:ac4d9c4e43a0e75b00ec6de674c9b7bc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa9f40c6c3afaddd4657b6a2e5ea35e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">SetCollisionMask</a> (uint32_t flags)</td></tr>\n<tr class=\"memdesc:aaa9f40c6c3afaddd4657b6a2e5ea35e4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets a collision mask for the trigger.  <a href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">More...</a><br /></td></tr>\n<tr class=\"separator:aaa9f40c6c3afaddd4657b6a2e5ea35e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a924939c39095e5cf7444b00578423e75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">SetCollisionGroup</a> (uint32_t flags)</td></tr>\n<tr class=\"memdesc:a924939c39095e5cf7444b00578423e75\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets a collision group for the trigger.  <a href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">More...</a><br /></td></tr>\n<tr class=\"separator:a924939c39095e5cf7444b00578423e75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a646ebe8013bad9a91574d603995847b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">SetStoreCollisions</a> (bool store_collisions)</td></tr>\n<tr class=\"separator:a646ebe8013bad9a91574d603995847b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04476746aae520a06b1ec9fe65c0a5a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">GetCollisionMask</a> ()</td></tr>\n<tr class=\"separator:a04476746aae520a06b1ec9fe65c0a5a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93405806332d5309d8ab674c072d2461\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">GetCollisionGroup</a> ()</td></tr>\n<tr class=\"separator:a93405806332d5309d8ab674c072d2461\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fcaae81162184053fc3354de8fae8cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">SetLocation</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"memdesc:a0fcaae81162184053fc3354de8fae8cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the location of the component.  <a href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a0fcaae81162184053fc3354de8fae8cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa86224935cc08c00224dc774da9c71d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">SetRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"memdesc:afa86224935cc08c00224dc774da9c71d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the rotation of the component.  <a href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">More...</a><br /></td></tr>\n<tr class=\"separator:afa86224935cc08c00224dc774da9c71d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af88fca014f6f9615930c02f82ae00db3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">GetStoredCollisions</a> ()</td></tr>\n<tr class=\"separator:af88fca014f6f9615930c02f82ae00db3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3b53b1d861f09301a7d6dfb34fb667d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">Collision</a> (const <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &amp;collision)</td></tr>\n<tr class=\"memdesc:ad3b53b1d861f09301a7d6dfb34fb667d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a collision.  <a href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3b53b1d861f09301a7d6dfb34fb667d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78db310fadbc1c2c572fa7e7deaf93c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">ResetCollisions</a> ()</td></tr>\n<tr class=\"memdesc:a78db310fadbc1c2c572fa7e7deaf93c8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Resets registered collisions.  <a href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">More...</a><br /></td></tr>\n<tr class=\"separator:a78db310fadbc1c2c572fa7e7deaf93c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6374eae5d6d91477a7abadc14a19b20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">Poll</a> ()</td></tr>\n<tr class=\"memdesc:ae6374eae5d6d91477a7abadc14a19b20\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks for collisions with the trigger.  <a href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">More...</a><br /></td></tr>\n<tr class=\"separator:ae6374eae5d6d91477a7abadc14a19b20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a407901dc86e2eeb0b594d3730081f3e8 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a> ()=default</td></tr>\n<tr class=\"separator:a4c959cc80467ad2e753972bdc4eb7c33 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a> ()</td></tr>\n<tr class=\"memdesc:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes an entity component.  <a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">More...</a><br /></td></tr>\n<tr class=\"separator:ab5d797d6fd60beef019062e228679eb7 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a> ()</td></tr>\n<tr class=\"memdesc:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's readiness.  <a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ae29198858d24d3aba6914bdee6a46f inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a> ()</td></tr>\n<tr class=\"memdesc:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the component's init status.  <a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">More...</a><br /></td></tr>\n<tr class=\"separator:aad321b7c26fd5f710cf1e0e48f605a8a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a> ()</td></tr>\n<tr class=\"separator:a678a0fce6a2deac1fa04baaed4db3009 inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *<a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>)</td></tr>\n<tr class=\"separator:a1683ad236bce69ab4b2c2dac75ef526a inherit pub_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"inherited\" name=\"inherited\"></a>\nAdditional Inherited Members</h2></td></tr>\n<tr class=\"inherit_header pro_methods_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_methods_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Member Functions inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a> ()</td></tr>\n<tr class=\"memdesc:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies the component of a streamed-in resource.  <a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">More...</a><br /></td></tr>\n<tr class=\"separator:a7f860b05911af126e8bd152492466b40 inherit pro_methods_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pro_attribs_classtram_1_1_entity_component\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pro_attribs_classtram_1_1_entity_component')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Protected Attributes inherited from <a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memitem:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0</td></tr>\n<tr class=\"separator:a67f362753d2e2c2e5859ceab8b9461ce inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = false</td></tr>\n<tr class=\"separator:a4dcceab63838befe9fbffc1c3bc19918 inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = false</td></tr>\n<tr class=\"separator:a0e65307b795d61b931c6b3600fc737ac inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:aea0aa7626e36e31f1621ba81925cb56b inherit pro_attribs_classtram_1_1_entity_component\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/components/trigger.html\">https://racenis.github.io/tram-sdk/documentation/components/trigger.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"acb29106d21d1cf02169a58c1c82c86a3\" name=\"acb29106d21d1cf02169a58c1c82c86a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb29106d21d1cf02169a58c1c82c86a3\">&#9670;&nbsp;</a></span>TriggerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TriggerComponent::TriggerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9fa2ed0795ec0f93390762bc849c8012\" name=\"a9fa2ed0795ec0f93390762bc849c8012\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fa2ed0795ec0f93390762bc849c8012\">&#9670;&nbsp;</a></span>~TriggerComponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TriggerComponent::~TriggerComponent </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad3b53b1d861f09301a7d6dfb34fb667d\" name=\"ad3b53b1d861f09301a7d6dfb34fb667d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3b53b1d861f09301a7d6dfb34fb667d\">&#9670;&nbsp;</a></span>Collision()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::Collision </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>collision</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Registers a collision. </p>\n<p >This method is called from <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">Phyics::Update()</a>. </p>\n\n</div>\n</div>\n<a id=\"a1576403ad5e3fe824e53453660ba90c5\" name=\"a1576403ad5e3fe824e53453660ba90c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1576403ad5e3fe824e53453660ba90c5\">&#9670;&nbsp;</a></span>EventHandler()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::EventHandler </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<a id=\"a93405806332d5309d8ab674c072d2461\" name=\"a93405806332d5309d8ab674c072d2461\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93405806332d5309d8ab674c072d2461\">&#9670;&nbsp;</a></span>GetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::TriggerComponent::GetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04476746aae520a06b1ec9fe65c0a5a0\" name=\"a04476746aae520a06b1ec9fe65c0a5a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04476746aae520a06b1ec9fe65c0a5a0\">&#9670;&nbsp;</a></span>GetCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::TriggerComponent::GetCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac9479cb3992294f494eefba8061ad1d\" name=\"aac9479cb3992294f494eefba8061ad1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac9479cb3992294f494eefba8061ad1d\">&#9670;&nbsp;</a></span>GetModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a> * tram::TriggerComponent::GetModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af88fca014f6f9615930c02f82ae00db3\" name=\"af88fca014f6f9615930c02f82ae00db3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af88fca014f6f9615930c02f82ae00db3\">&#9670;&nbsp;</a></span>GetStoredCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp; tram::TriggerComponent::GetStoredCollisions </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae6374eae5d6d91477a7abadc14a19b20\" name=\"ae6374eae5d6d91477a7abadc14a19b20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6374eae5d6d91477a7abadc14a19b20\">&#9670;&nbsp;</a></span>Poll()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; tram::TriggerComponent::Poll </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks for collisions with the trigger. </p>\n\n</div>\n</div>\n<a id=\"a78db310fadbc1c2c572fa7e7deaf93c8\" name=\"a78db310fadbc1c2c572fa7e7deaf93c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78db310fadbc1c2c572fa7e7deaf93c8\">&#9670;&nbsp;</a></span>ResetCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::ResetCollisions </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Resets registered collisions. </p>\n<p >This method is called from <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">Phyics::Update()</a>. </p>\n\n</div>\n</div>\n<a id=\"ad30c23103020b9c9144d21835793f892\" name=\"ad30c23103020b9c9144d21835793f892\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad30c23103020b9c9144d21835793f892\">&#9670;&nbsp;</a></span>SetActivationCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetActivationCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>activation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a924939c39095e5cf7444b00578423e75\" name=\"a924939c39095e5cf7444b00578423e75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a924939c39095e5cf7444b00578423e75\">&#9670;&nbsp;</a></span>SetCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets a collision group for the trigger. </p>\n<p >This method works the same as in <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, see <a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\" title=\"Sets the collision group of the physics object.\">PhysicsComponent::SetCollisionGroup()</a> for more information. </p>\n\n</div>\n</div>\n<a id=\"aaa9f40c6c3afaddd4657b6a2e5ea35e4\" name=\"aaa9f40c6c3afaddd4657b6a2e5ea35e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">&#9670;&nbsp;</a></span>SetCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets a collision mask for the trigger. </p>\n<p >This method works the same as in <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a>, see PhysicsComponent::SetCollsionMask() for more information. </p>\n\n</div>\n</div>\n<a id=\"a5810d82217bbf1ba29a40beca70ce30d\" name=\"a5810d82217bbf1ba29a40beca70ce30d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5810d82217bbf1ba29a40beca70ce30d\">&#9670;&nbsp;</a></span>SetDectivationCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetDectivationCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>deactivation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac4d9c4e43a0e75b00ec6de674c9b7bc5\" name=\"ac4d9c4e43a0e75b00ec6de674c9b7bc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">&#9670;&nbsp;</a></span>SetFilterCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetFilterCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>filter</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0fcaae81162184053fc3354de8fae8cc\" name=\"a0fcaae81162184053fc3354de8fae8cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fcaae81162184053fc3354de8fae8cc\">&#9670;&nbsp;</a></span>SetLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the location of the component. </p>\n\n</div>\n</div>\n<a id=\"a1c35e8061d5dc72e113fa4fc52f875fc\" name=\"a1c35e8061d5dc72e113fa4fc52f875fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c35e8061d5dc72e113fa4fc52f875fc\">&#9670;&nbsp;</a></span>SetModel() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>model</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae965164c2483a255585e9998abe87df9\" name=\"ae965164c2483a255585e9998abe87df9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae965164c2483a255585e9998abe87df9\">&#9670;&nbsp;</a></span>SetModel() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetModel </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a> *&#160;</td>\n          <td class=\"paramname\"><em>model</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa86224935cc08c00224dc774da9c71d\" name=\"afa86224935cc08c00224dc774da9c71d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa86224935cc08c00224dc774da9c71d\">&#9670;&nbsp;</a></span>SetRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the rotation of the component. </p>\n\n</div>\n</div>\n<a id=\"af69d3a60b12eebbbdec84c83b049941e\" name=\"af69d3a60b12eebbbdec84c83b049941e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af69d3a60b12eebbbdec84c83b049941e\">&#9670;&nbsp;</a></span>SetShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetShape </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets a collision shape for the trigger. </p>\n\n</div>\n</div>\n<a id=\"a646ebe8013bad9a91574d603995847b5\" name=\"a646ebe8013bad9a91574d603995847b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a646ebe8013bad9a91574d603995847b5\">&#9670;&nbsp;</a></span>SetStoreCollisions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::SetStoreCollisions </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>store_collisions</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a62a3322c918a0cf7b2793b94b1144059\" name=\"a62a3322c918a0cf7b2793b94b1144059\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62a3322c918a0cf7b2793b94b1144059\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::TriggerComponent::Start </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>.</p>\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2trigger_8h_source.html\">trigger.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2trigger_8cpp.html\">trigger.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Value Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(Type type) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">GetFloat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">GetInt</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">IsBool</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">IsName</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">IsQuat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">IsString</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">IsVec2</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">IsVec3</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">IsVec4</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520\">operator bool</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe\">operator const char *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470\">operator double</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0\">operator float</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">operator int16_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69\">operator int32_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85\">operator int64_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#aa919d5718da818826402272ff33bf164\">operator int8_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9\">operator name_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2\">operator quat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748\">operator uint16_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154\">operator uint32_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577\">operator uint64_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987\">operator uint8_t</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175\">operator vec2</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45\">operator vec3</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189\">operator vec4</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">operator=</a>(const Value &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">operator==</a>(const Value &amp;other) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">ToString</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">Value</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60\">Value</a>(const Value &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305\">Value</a>(bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e\">Value</a>(name_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055\">Value</a>(const char *value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585\">Value</a>(int8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5\">Value</a>(int16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a831372ec4d00555168651da5fd654641\">Value</a>(int64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275\">Value</a>(uint8_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb\">Value</a>(uint16_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b\">Value</a>(uint64_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e\">Value</a>(double value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427\">Value</a>(int32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8\">Value</a>(uint32_t value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893\">Value</a>(vec2 value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">Value</a>(vec3 value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d\">Value</a>(vec4 value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716\">Value</a>(quat value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94\">Value</a>(float value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e\">ValuePtr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">~Value</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Value Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"classtram_1_1_value-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Value Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Generic, type-safe union.  \n <a href=\"classtram_1_1_value.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">value.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a5794f8b98f39f0f898874e38bbe9c66f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">Value</a> ()</td></tr>\n<tr class=\"separator:a5794f8b98f39f0f898874e38bbe9c66f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57e02b0f0c958d2a5ac93722d1118b7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">~Value</a> ()</td></tr>\n<tr class=\"separator:a57e02b0f0c958d2a5ac93722d1118b7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab72671e0091919d1657ac549e9b6bc60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60\">Value</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;other)</td></tr>\n<tr class=\"separator:ab72671e0091919d1657ac549e9b6bc60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4baee4afcfd915fab1056bbe3e90b889\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">operator=</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;other)</td></tr>\n<tr class=\"separator:a4baee4afcfd915fab1056bbe3e90b889\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a055377410aa38120a535afb9b3cd69e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">operator==</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;other) const</td></tr>\n<tr class=\"separator:a055377410aa38120a535afb9b3cd69e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a853b7775d3db060de6868c3e284e1305\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305\">Value</a> (bool value)</td></tr>\n<tr class=\"separator:a853b7775d3db060de6868c3e284e1305\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c99dda196237da9884bd1390dd40f6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e\">Value</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> value)</td></tr>\n<tr class=\"separator:a6c99dda196237da9884bd1390dd40f6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a598196e2d0a2320326b46ed5ca9e6055\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055\">Value</a> (const char *value)</td></tr>\n<tr class=\"separator:a598196e2d0a2320326b46ed5ca9e6055\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b2d9648f97190efe021f4c8345d585\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585\">Value</a> (int8_t value)</td></tr>\n<tr class=\"separator:ac3b2d9648f97190efe021f4c8345d585\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32ac730eae3ebef2c9d4218db19f27e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5\">Value</a> (int16_t value)</td></tr>\n<tr class=\"separator:a32ac730eae3ebef2c9d4218db19f27e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a831372ec4d00555168651da5fd654641\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a831372ec4d00555168651da5fd654641\">Value</a> (int64_t value)</td></tr>\n<tr class=\"separator:a831372ec4d00555168651da5fd654641\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8aa70a82725f60f68b3d24865edfc275\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275\">Value</a> (uint8_t value)</td></tr>\n<tr class=\"separator:a8aa70a82725f60f68b3d24865edfc275\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac198c01333d3f9819a8e08faf95cabeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb\">Value</a> (uint16_t value)</td></tr>\n<tr class=\"separator:ac198c01333d3f9819a8e08faf95cabeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe9d45f9c080eacff5b16b8a61e94b6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b\">Value</a> (uint64_t value)</td></tr>\n<tr class=\"separator:afe9d45f9c080eacff5b16b8a61e94b6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a17f14d1a9ac224f049a63fe867f93f8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e\">Value</a> (double value)</td></tr>\n<tr class=\"separator:a17f14d1a9ac224f049a63fe867f93f8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5da5adfcfc734e81d6d10833b551d427\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427\">Value</a> (int32_t value)</td></tr>\n<tr class=\"separator:a5da5adfcfc734e81d6d10833b551d427\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21076ffaf589d2099a0ab3d3abe27bb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8\">Value</a> (uint32_t value)</td></tr>\n<tr class=\"separator:a21076ffaf589d2099a0ab3d3abe27bb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9061d7a9f7f1d440bed085327cb1893\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893\">Value</a> (<a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> value)</td></tr>\n<tr class=\"separator:ad9061d7a9f7f1d440bed085327cb1893\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d9d95afcdd16dc499d694e458fb553\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">Value</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> value)</td></tr>\n<tr class=\"separator:a39d9d95afcdd16dc499d694e458fb553\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55c1e2fc1d44a258a1e7574f8dc8301d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d\">Value</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> value)</td></tr>\n<tr class=\"separator:a55c1e2fc1d44a258a1e7574f8dc8301d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b7c80c5327bd2f41fd145d1f9bb3716\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716\">Value</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> value)</td></tr>\n<tr class=\"separator:a6b7c80c5327bd2f41fd145d1f9bb3716\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1f3542b668e1dabe541a89be2338e94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94\">Value</a> (float value)</td></tr>\n<tr class=\"separator:ad1f3542b668e1dabe541a89be2338e94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e4adfed646e5615bba90d78396a1520\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520\">operator bool</a> () const</td></tr>\n<tr class=\"separator:a9e4adfed646e5615bba90d78396a1520\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add6cf0d6e6e2830cf8caf35509735ff9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9\">operator name_t</a> () const</td></tr>\n<tr class=\"separator:add6cf0d6e6e2830cf8caf35509735ff9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15856860b73c5d576801dae6f4715dfe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe\">operator const char *</a> () const</td></tr>\n<tr class=\"separator:a15856860b73c5d576801dae6f4715dfe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa919d5718da818826402272ff33bf164\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#aa919d5718da818826402272ff33bf164\">operator int8_t</a> () const</td></tr>\n<tr class=\"separator:aa919d5718da818826402272ff33bf164\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1b1ea0a628e85c8dcc81b7764d0aa6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">operator int16_t</a> () const</td></tr>\n<tr class=\"separator:aa1b1ea0a628e85c8dcc81b7764d0aa6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39d40edb670c7aecc861261018a57d85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85\">operator int64_t</a> () const</td></tr>\n<tr class=\"separator:a39d40edb670c7aecc861261018a57d85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c5a0317d82668f998a66d8761569987\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987\">operator uint8_t</a> () const</td></tr>\n<tr class=\"separator:a2c5a0317d82668f998a66d8761569987\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa28db4afe53e6e7d8c28996b9e3fb748\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748\">operator uint16_t</a> () const</td></tr>\n<tr class=\"separator:aa28db4afe53e6e7d8c28996b9e3fb748\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ae9787d652066d81e5c5c8cd2bb0577\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577\">operator uint64_t</a> () const</td></tr>\n<tr class=\"separator:a9ae9787d652066d81e5c5c8cd2bb0577\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9639ed16d4cb470358687dc976993470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470\">operator double</a> () const</td></tr>\n<tr class=\"separator:a9639ed16d4cb470358687dc976993470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae53ccc02b30523aa2709b44dc43fda69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69\">operator int32_t</a> () const</td></tr>\n<tr class=\"separator:ae53ccc02b30523aa2709b44dc43fda69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a784abb3dd60f5c793651f1aa1d837154\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154\">operator uint32_t</a> () const</td></tr>\n<tr class=\"separator:a784abb3dd60f5c793651f1aa1d837154\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1175f90f2eab9d3d316914b1ee84aeb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0\">operator float</a> () const</td></tr>\n<tr class=\"separator:a1175f90f2eab9d3d316914b1ee84aeb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acddba52345b86f24d2cb810b99774175\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175\">operator vec2</a> () const</td></tr>\n<tr class=\"separator:acddba52345b86f24d2cb810b99774175\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1db6f75ec7be66818e032e2c0115d45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45\">operator vec3</a> () const</td></tr>\n<tr class=\"separator:ad1db6f75ec7be66818e032e2c0115d45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada6847b5e4ee399009ffbffe1cc57189\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189\">operator vec4</a> () const</td></tr>\n<tr class=\"separator:ada6847b5e4ee399009ffbffe1cc57189\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7794e38049e0b66a7cc567dd119b46c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2\">operator quat</a> () const</td></tr>\n<tr class=\"separator:a7794e38049e0b66a7cc567dd119b46c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5730c454f7a08e4ad926fa0438e0ca02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">IsBool</a> () const</td></tr>\n<tr class=\"separator:a5730c454f7a08e4ad926fa0438e0ca02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcedb8e96c6af96db3dacb1b5859cf61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a> () const</td></tr>\n<tr class=\"separator:abcedb8e96c6af96db3dacb1b5859cf61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf7c16903c484a39086cc193fa4d3f1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a> () const</td></tr>\n<tr class=\"separator:adf7c16903c484a39086cc193fa4d3f1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abaa6b4a80038f14d4d9fac5742011900\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">IsName</a> () const</td></tr>\n<tr class=\"separator:abaa6b4a80038f14d4d9fac5742011900\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad59a44468143c7dfdafca922f37eb380\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">IsString</a> () const</td></tr>\n<tr class=\"separator:ad59a44468143c7dfdafca922f37eb380\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af19a2afc58fe6b53f4817d8177930508\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">IsVec2</a> () const</td></tr>\n<tr class=\"separator:af19a2afc58fe6b53f4817d8177930508\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac300cdbdca5c4e2f5b4a890033fe79af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">IsVec3</a> () const</td></tr>\n<tr class=\"separator:ac300cdbdca5c4e2f5b4a890033fe79af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81e95640899e63a329a020a6fe2dfebc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">IsVec4</a> () const</td></tr>\n<tr class=\"separator:a81e95640899e63a329a020a6fe2dfebc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0025245d17103e5061144c0914a2598c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">IsQuat</a> () const</td></tr>\n<tr class=\"separator:a0025245d17103e5061144c0914a2598c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3673f59ae7ba469c1d088fffe04cc4dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">GetInt</a> () const</td></tr>\n<tr class=\"separator:a3673f59ae7ba469c1d088fffe04cc4dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c06918b9f54415fb97892f2009d54b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">GetFloat</a> () const</td></tr>\n<tr class=\"separator:a6c06918b9f54415fb97892f2009d54b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e5cc98ba9a99ddd337091c91a917c8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">ToString</a> ()</td></tr>\n<tr class=\"separator:a5e5cc98ba9a99ddd337091c91a917c8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec15d455c732150f97eb47662f23fedf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a> () const</td></tr>\n<tr class=\"separator:aec15d455c732150f97eb47662f23fedf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a3e8a6869e6364b63c6bc73e7ffb49916\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a> (<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"el\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) const</td></tr>\n<tr class=\"separator:a3e8a6869e6364b63c6bc73e7ffb49916\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:af5bb94d263f9f0a53c7a317b903fa8aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a></td></tr>\n<tr class=\"separator:af5bb94d263f9f0a53c7a317b903fa8aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab253512b91fb52defe5ab790816e1fc4\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:acf2a632796b96b22cc6d56f76207cffd\"><td class=\"memItemLeft\" >&#160;&#160;&#160;bool&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a></td></tr>\n<tr class=\"separator:acf2a632796b96b22cc6d56f76207cffd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adab2c87fcc610e0219c02e56bb83368b\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a></td></tr>\n<tr class=\"separator:adab2c87fcc610e0219c02e56bb83368b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d96154a4e8030cf95d4123fbd6feddb\"><td class=\"memItemLeft\" >&#160;&#160;&#160;const char *&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a></td></tr>\n<tr class=\"separator:a8d96154a4e8030cf95d4123fbd6feddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2f9c728a08eff84d9e19e973c591391\"><td class=\"memItemLeft\" >&#160;&#160;&#160;int32_t&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a></td></tr>\n<tr class=\"separator:ad2f9c728a08eff84d9e19e973c591391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae18f5468aaa2bfece815e8bd43800d3d\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a></td></tr>\n<tr class=\"separator:ae18f5468aaa2bfece815e8bd43800d3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af91a026d968f8072aefc8eba4431b6ea\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a></td></tr>\n<tr class=\"separator:af91a026d968f8072aefc8eba4431b6ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add5878bfcadc1329ecf6755dd1a1bd03\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a></td></tr>\n<tr class=\"separator:add5878bfcadc1329ecf6755dd1a1bd03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa975cf609ad92bed08bdda2af793d2ff\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a></td></tr>\n<tr class=\"separator:aa975cf609ad92bed08bdda2af793d2ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25b590a706790ea972ab0f4b1146c949\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a></td></tr>\n<tr class=\"separator:a25b590a706790ea972ab0f4b1146c949\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1de53812e678a22ceb2895091855ce\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a></td></tr>\n<tr class=\"separator:a1c1de53812e678a22ceb2895091855ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab253512b91fb52defe5ab790816e1fc4\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:ab253512b91fb52defe5ab790816e1fc4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a32a3f364acb79fb996044d7d31bc994e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e\">ValuePtr</a></td></tr>\n<tr class=\"separator:a32a3f364acb79fb996044d7d31bc994e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Generic, type-safe union. </p>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a5794f8b98f39f0f898874e38bbe9c66f\" name=\"a5794f8b98f39f0f898874e38bbe9c66f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5794f8b98f39f0f898874e38bbe9c66f\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[1/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57e02b0f0c958d2a5ac93722d1118b7d\" name=\"a57e02b0f0c958d2a5ac93722d1118b7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57e02b0f0c958d2a5ac93722d1118b7d\">&#9670;&nbsp;</a></span>~Value()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::~Value </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab72671e0091919d1657ac549e9b6bc60\" name=\"ab72671e0091919d1657ac549e9b6bc60\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab72671e0091919d1657ac549e9b6bc60\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[2/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a853b7775d3db060de6868c3e284e1305\" name=\"a853b7775d3db060de6868c3e284e1305\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a853b7775d3db060de6868c3e284e1305\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[3/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6c99dda196237da9884bd1390dd40f6e\" name=\"a6c99dda196237da9884bd1390dd40f6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c99dda196237da9884bd1390dd40f6e\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[4/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a598196e2d0a2320326b46ed5ca9e6055\" name=\"a598196e2d0a2320326b46ed5ca9e6055\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a598196e2d0a2320326b46ed5ca9e6055\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[5/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3b2d9648f97190efe021f4c8345d585\" name=\"ac3b2d9648f97190efe021f4c8345d585\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3b2d9648f97190efe021f4c8345d585\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[6/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">int8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32ac730eae3ebef2c9d4218db19f27e5\" name=\"a32ac730eae3ebef2c9d4218db19f27e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32ac730eae3ebef2c9d4218db19f27e5\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[7/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">int16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a831372ec4d00555168651da5fd654641\" name=\"a831372ec4d00555168651da5fd654641\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a831372ec4d00555168651da5fd654641\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[8/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">int64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8aa70a82725f60f68b3d24865edfc275\" name=\"a8aa70a82725f60f68b3d24865edfc275\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8aa70a82725f60f68b3d24865edfc275\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[9/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint8_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac198c01333d3f9819a8e08faf95cabeb\" name=\"ac198c01333d3f9819a8e08faf95cabeb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac198c01333d3f9819a8e08faf95cabeb\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[10/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe9d45f9c080eacff5b16b8a61e94b6b\" name=\"afe9d45f9c080eacff5b16b8a61e94b6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe9d45f9c080eacff5b16b8a61e94b6b\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[11/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint64_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a17f14d1a9ac224f049a63fe867f93f8e\" name=\"a17f14d1a9ac224f049a63fe867f93f8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17f14d1a9ac224f049a63fe867f93f8e\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[12/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">double&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5da5adfcfc734e81d6d10833b551d427\" name=\"a5da5adfcfc734e81d6d10833b551d427\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5da5adfcfc734e81d6d10833b551d427\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[13/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a21076ffaf589d2099a0ab3d3abe27bb8\" name=\"a21076ffaf589d2099a0ab3d3abe27bb8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21076ffaf589d2099a0ab3d3abe27bb8\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[14/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9061d7a9f7f1d440bed085327cb1893\" name=\"ad9061d7a9f7f1d440bed085327cb1893\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9061d7a9f7f1d440bed085327cb1893\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[15/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39d9d95afcdd16dc499d694e458fb553\" name=\"a39d9d95afcdd16dc499d694e458fb553\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39d9d95afcdd16dc499d694e458fb553\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[16/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a55c1e2fc1d44a258a1e7574f8dc8301d\" name=\"a55c1e2fc1d44a258a1e7574f8dc8301d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55c1e2fc1d44a258a1e7574f8dc8301d\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[17/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6b7c80c5327bd2f41fd145d1f9bb3716\" name=\"a6b7c80c5327bd2f41fd145d1f9bb3716\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b7c80c5327bd2f41fd145d1f9bb3716\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[18/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad1f3542b668e1dabe541a89be2338e94\" name=\"ad1f3542b668e1dabe541a89be2338e94\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1f3542b668e1dabe541a89be2338e94\">&#9670;&nbsp;</a></span>Value() <span class=\"overload\">[19/19]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3e8a6869e6364b63c6bc73e7ffb49916\" name=\"a3e8a6869e6364b63c6bc73e7ffb49916\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e8a6869e6364b63c6bc73e7ffb49916\">&#9670;&nbsp;</a></span>AssertType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Value::AssertType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6c06918b9f54415fb97892f2009d54b1\" name=\"a6c06918b9f54415fb97892f2009d54b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c06918b9f54415fb97892f2009d54b1\">&#9670;&nbsp;</a></span>GetFloat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Value::GetFloat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3673f59ae7ba469c1d088fffe04cc4dd\" name=\"a3673f59ae7ba469c1d088fffe04cc4dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3673f59ae7ba469c1d088fffe04cc4dd\">&#9670;&nbsp;</a></span>GetInt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Value::GetInt </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec15d455c732150f97eb47662f23fedf\" name=\"aec15d455c732150f97eb47662f23fedf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec15d455c732150f97eb47662f23fedf\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> tram::Value::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5730c454f7a08e4ad926fa0438e0ca02\" name=\"a5730c454f7a08e4ad926fa0438e0ca02\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5730c454f7a08e4ad926fa0438e0ca02\">&#9670;&nbsp;</a></span>IsBool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsBool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf7c16903c484a39086cc193fa4d3f1e\" name=\"adf7c16903c484a39086cc193fa4d3f1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf7c16903c484a39086cc193fa4d3f1e\">&#9670;&nbsp;</a></span>IsFloat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsFloat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abcedb8e96c6af96db3dacb1b5859cf61\" name=\"abcedb8e96c6af96db3dacb1b5859cf61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcedb8e96c6af96db3dacb1b5859cf61\">&#9670;&nbsp;</a></span>IsInt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsInt </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abaa6b4a80038f14d4d9fac5742011900\" name=\"abaa6b4a80038f14d4d9fac5742011900\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abaa6b4a80038f14d4d9fac5742011900\">&#9670;&nbsp;</a></span>IsName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0025245d17103e5061144c0914a2598c\" name=\"a0025245d17103e5061144c0914a2598c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0025245d17103e5061144c0914a2598c\">&#9670;&nbsp;</a></span>IsQuat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsQuat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad59a44468143c7dfdafca922f37eb380\" name=\"ad59a44468143c7dfdafca922f37eb380\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad59a44468143c7dfdafca922f37eb380\">&#9670;&nbsp;</a></span>IsString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsString </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af19a2afc58fe6b53f4817d8177930508\" name=\"af19a2afc58fe6b53f4817d8177930508\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af19a2afc58fe6b53f4817d8177930508\">&#9670;&nbsp;</a></span>IsVec2()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsVec2 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac300cdbdca5c4e2f5b4a890033fe79af\" name=\"ac300cdbdca5c4e2f5b4a890033fe79af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac300cdbdca5c4e2f5b4a890033fe79af\">&#9670;&nbsp;</a></span>IsVec3()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsVec3 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81e95640899e63a329a020a6fe2dfebc\" name=\"a81e95640899e63a329a020a6fe2dfebc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81e95640899e63a329a020a6fe2dfebc\">&#9670;&nbsp;</a></span>IsVec4()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::IsVec4 </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9e4adfed646e5615bba90d78396a1520\" name=\"a9e4adfed646e5615bba90d78396a1520\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e4adfed646e5615bba90d78396a1520\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15856860b73c5d576801dae6f4715dfe\" name=\"a15856860b73c5d576801dae6f4715dfe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15856860b73c5d576801dae6f4715dfe\">&#9670;&nbsp;</a></span>operator const char *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator const char * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9639ed16d4cb470358687dc976993470\" name=\"a9639ed16d4cb470358687dc976993470\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9639ed16d4cb470358687dc976993470\">&#9670;&nbsp;</a></span>operator double()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator double </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1175f90f2eab9d3d316914b1ee84aeb0\" name=\"a1175f90f2eab9d3d316914b1ee84aeb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1175f90f2eab9d3d316914b1ee84aeb0\">&#9670;&nbsp;</a></span>operator float()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator float </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1b1ea0a628e85c8dcc81b7764d0aa6f\" name=\"aa1b1ea0a628e85c8dcc81b7764d0aa6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">&#9670;&nbsp;</a></span>operator int16_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator int16_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae53ccc02b30523aa2709b44dc43fda69\" name=\"ae53ccc02b30523aa2709b44dc43fda69\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae53ccc02b30523aa2709b44dc43fda69\">&#9670;&nbsp;</a></span>operator int32_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator int32_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39d40edb670c7aecc861261018a57d85\" name=\"a39d40edb670c7aecc861261018a57d85\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39d40edb670c7aecc861261018a57d85\">&#9670;&nbsp;</a></span>operator int64_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator int64_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa919d5718da818826402272ff33bf164\" name=\"aa919d5718da818826402272ff33bf164\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa919d5718da818826402272ff33bf164\">&#9670;&nbsp;</a></span>operator int8_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator int8_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add6cf0d6e6e2830cf8caf35509735ff9\" name=\"add6cf0d6e6e2830cf8caf35509735ff9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add6cf0d6e6e2830cf8caf35509735ff9\">&#9670;&nbsp;</a></span>operator name_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7794e38049e0b66a7cc567dd119b46c2\" name=\"a7794e38049e0b66a7cc567dd119b46c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7794e38049e0b66a7cc567dd119b46c2\">&#9670;&nbsp;</a></span>operator quat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa28db4afe53e6e7d8c28996b9e3fb748\" name=\"aa28db4afe53e6e7d8c28996b9e3fb748\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa28db4afe53e6e7d8c28996b9e3fb748\">&#9670;&nbsp;</a></span>operator uint16_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator uint16_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a784abb3dd60f5c793651f1aa1d837154\" name=\"a784abb3dd60f5c793651f1aa1d837154\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a784abb3dd60f5c793651f1aa1d837154\">&#9670;&nbsp;</a></span>operator uint32_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator uint32_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ae9787d652066d81e5c5c8cd2bb0577\" name=\"a9ae9787d652066d81e5c5c8cd2bb0577\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ae9787d652066d81e5c5c8cd2bb0577\">&#9670;&nbsp;</a></span>operator uint64_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator uint64_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2c5a0317d82668f998a66d8761569987\" name=\"a2c5a0317d82668f998a66d8761569987\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c5a0317d82668f998a66d8761569987\">&#9670;&nbsp;</a></span>operator uint8_t()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator uint8_t </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acddba52345b86f24d2cb810b99774175\" name=\"acddba52345b86f24d2cb810b99774175\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acddba52345b86f24d2cb810b99774175\">&#9670;&nbsp;</a></span>operator vec2()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad1db6f75ec7be66818e032e2c0115d45\" name=\"ad1db6f75ec7be66818e032e2c0115d45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1db6f75ec7be66818e032e2c0115d45\">&#9670;&nbsp;</a></span>operator vec3()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ada6847b5e4ee399009ffbffe1cc57189\" name=\"ada6847b5e4ee399009ffbffe1cc57189\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada6847b5e4ee399009ffbffe1cc57189\">&#9670;&nbsp;</a></span>operator vec4()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Value::operator <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4baee4afcfd915fab1056bbe3e90b889\" name=\"a4baee4afcfd915fab1056bbe3e90b889\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4baee4afcfd915fab1056bbe3e90b889\">&#9670;&nbsp;</a></span>operator=()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp; tram::Value::operator= </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a055377410aa38120a535afb9b3cd69e3\" name=\"a055377410aa38120a535afb9b3cd69e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a055377410aa38120a535afb9b3cd69e3\">&#9670;&nbsp;</a></span>operator==()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::operator== </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e5cc98ba9a99ddd337091c91a917c8c\" name=\"a5e5cc98ba9a99ddd337091c91a917c8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e5cc98ba9a99ddd337091c91a917c8c\">&#9670;&nbsp;</a></span>ToString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Value::ToString </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a32a3f364acb79fb996044d7d31bc994e\" name=\"a32a3f364acb79fb996044d7d31bc994e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32a3f364acb79fb996044d7d31bc994e\">&#9670;&nbsp;</a></span>ValuePtr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">friend class <a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab253512b91fb52defe5ab790816e1fc4\" name=\"ab253512b91fb52defe5ab790816e1fc4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab253512b91fb52defe5ab790816e1fc4\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Value::@45</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ce8527b48ea24e7312b7fe8b7ba9cb8\" name=\"a0ce8527b48ea24e7312b7fe8b7ba9cb8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">&#9670;&nbsp;</a></span>bool_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Value::bool_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad054720a352630eda06a3d7ee750f067\" name=\"ad054720a352630eda06a3d7ee750f067\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad054720a352630eda06a3d7ee750f067\">&#9670;&nbsp;</a></span>float_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Value::float_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a032355ea52d6ea101a88388e2a7f2714\" name=\"a032355ea52d6ea101a88388e2a7f2714\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a032355ea52d6ea101a88388e2a7f2714\">&#9670;&nbsp;</a></span>int32_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Value::int32_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a602ff619b99e1e7bf104968b0e6cc105\" name=\"a602ff619b99e1e7bf104968b0e6cc105\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a602ff619b99e1e7bf104968b0e6cc105\">&#9670;&nbsp;</a></span>name_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Value::name_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a66085936ba2cabe6e5a327253c6c9aa7\" name=\"a66085936ba2cabe6e5a327253c6c9aa7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66085936ba2cabe6e5a327253c6c9aa7\">&#9670;&nbsp;</a></span>quat_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Value::quat_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ee321f7843e602cdf1dc6ec6d8c707b\" name=\"a7ee321f7843e602cdf1dc6ec6d8c707b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ee321f7843e602cdf1dc6ec6d8c707b\">&#9670;&nbsp;</a></span>string_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Value::string_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5bb94d263f9f0a53c7a317b903fa8aa\" name=\"af5bb94d263f9f0a53c7a317b903fa8aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5bb94d263f9f0a53c7a317b903fa8aa\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> tram::Value::type</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7be0d3e1625e7bc8cb398908153709de\" name=\"a7be0d3e1625e7bc8cb398908153709de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7be0d3e1625e7bc8cb398908153709de\">&#9670;&nbsp;</a></span>uint32_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Value::uint32_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b771cb492491a14a1b2ff4aebf0ab3a\" name=\"a5b771cb492491a14a1b2ff4aebf0ab3a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b771cb492491a14a1b2ff4aebf0ab3a\">&#9670;&nbsp;</a></span>vec2_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Value::vec2_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76b971a65a139f711180c348be2b8dae\" name=\"a76b971a65a139f711180c348be2b8dae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76b971a65a139f711180c348be2b8dae\">&#9670;&nbsp;</a></span>vec3_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Value::vec3_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52f124f1bb9637ad3ae7763768382ca8\" name=\"a52f124f1bb9637ad3ae7763768382ca8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52f124f1bb9637ad3ae7763768382ca8\">&#9670;&nbsp;</a></span>vec4_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Value::vec4_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"value_8h_source.html\">value.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value_array-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ValueArray Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_value_array.html\">tram::ValueArray</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">operator[]</a>(size_t n) const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">size</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">ValueArray</a>(const Value *first, size_t count)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value_array.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ValueArray Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_value_array-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ValueArray Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">value.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ae0c421c4cb96c4a568d54f7761324552\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">ValueArray</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> *first, size_t count)</td></tr>\n<tr class=\"separator:ae0c421c4cb96c4a568d54f7761324552\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac27d29e59b70dc51bcfe4e16f7826952\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">operator[]</a> (size_t n) const</td></tr>\n<tr class=\"separator:ac27d29e59b70dc51bcfe4e16f7826952\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac33d43e6eeffbfaad8a4349dd56c2230\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">size</a> () const</td></tr>\n<tr class=\"separator:ac33d43e6eeffbfaad8a4349dd56c2230\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ae0c421c4cb96c4a568d54f7761324552\" name=\"ae0c421c4cb96c4a568d54f7761324552\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0c421c4cb96c4a568d54f7761324552\">&#9670;&nbsp;</a></span>ValueArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValueArray::ValueArray </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> *&#160;</td>\n          <td class=\"paramname\"><em>first</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac27d29e59b70dc51bcfe4e16f7826952\" name=\"ac27d29e59b70dc51bcfe4e16f7826952\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac27d29e59b70dc51bcfe4e16f7826952\">&#9670;&nbsp;</a></span>operator[]()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp; tram::ValueArray::operator[] </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>n</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac33d43e6eeffbfaad8a4349dd56c2230\" name=\"ac33d43e6eeffbfaad8a4349dd56c2230\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac33d43e6eeffbfaad8a4349dd56c2230\">&#9670;&nbsp;</a></span>size()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::ValueArray::size </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"value_8h_source.html\">value.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value_ptr-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ValuePtr Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">GetType</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">IsBool</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">IsFloat</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">IsInt</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4\">operator bool *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967\">operator const char **</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b\">operator float *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86\">operator int32_t *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5\">operator name_t *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0\">operator quat *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7\">operator uint32_t *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8\">operator Value</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108\">operator vec2 *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45\">operator vec3 *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063\">operator vec4 *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">SetValue</a>(const Value &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">ValuePtr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a\">ValuePtr</a>(const ValuePtr &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6\">ValuePtr</a>(Value &amp;other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b\">ValuePtr</a>(bool *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583\">ValuePtr</a>(name_t *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60\">ValuePtr</a>(const char **ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14\">ValuePtr</a>(int32_t *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4\">ValuePtr</a>(uint32_t *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4\">ValuePtr</a>(vec2 *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f\">ValuePtr</a>(vec3 *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3\">ValuePtr</a>(vec4 *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e\">ValuePtr</a>(quat *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35\">ValuePtr</a>(float *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">~ValuePtr</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_value_ptr.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ValuePtr Class Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"classtram_1_1_value_ptr-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ValuePtr Class Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">value.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a710718917b773c0a1e242cd9d1adb8ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">ValuePtr</a> ()</td></tr>\n<tr class=\"separator:a710718917b773c0a1e242cd9d1adb8ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba2c848ef361b2ba2a85e8d4b9a5dfab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">~ValuePtr</a> ()</td></tr>\n<tr class=\"separator:aba2c848ef361b2ba2a85e8d4b9a5dfab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab32d7ed3d22a06ad91776f2604d70e1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a\">ValuePtr</a> (const <a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a> &amp;other)</td></tr>\n<tr class=\"separator:ab32d7ed3d22a06ad91776f2604d70e1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0043fc618372996a0b05f85074a06b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6\">ValuePtr</a> (<a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;other)</td></tr>\n<tr class=\"separator:ac0043fc618372996a0b05f85074a06b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a574e55635d32e94735d03e09622eccd8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8\">operator Value</a> () const</td></tr>\n<tr class=\"separator:a574e55635d32e94735d03e09622eccd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a611fec6779600e3a3508e87fa9a83f6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">SetValue</a> (const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;other)</td></tr>\n<tr class=\"separator:a611fec6779600e3a3508e87fa9a83f6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d7b7f756a82db8ceaa542a2a991702b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b\">ValuePtr</a> (bool *ptr)</td></tr>\n<tr class=\"separator:a1d7b7f756a82db8ceaa542a2a991702b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeca88a1e5474cb104fcf79d0c579b583\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> *ptr)</td></tr>\n<tr class=\"separator:aeca88a1e5474cb104fcf79d0c579b583\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae34aab6f72a348a3cb5ac1d953e0df60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60\">ValuePtr</a> (const char **ptr)</td></tr>\n<tr class=\"separator:ae34aab6f72a348a3cb5ac1d953e0df60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae042fdfe2489cb32bece84e5993b1c14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14\">ValuePtr</a> (int32_t *ptr)</td></tr>\n<tr class=\"separator:ae042fdfe2489cb32bece84e5993b1c14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae055d89765f91e6dbaa448feaf0063c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4\">ValuePtr</a> (uint32_t *ptr)</td></tr>\n<tr class=\"separator:ae055d89765f91e6dbaa448feaf0063c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47f3134ee2d01c4d863774e072a535e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *ptr)</td></tr>\n<tr class=\"separator:a47f3134ee2d01c4d863774e072a535e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1bdaf5ddd78cea7f6265b7f2885bd49f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *ptr)</td></tr>\n<tr class=\"separator:a1bdaf5ddd78cea7f6265b7f2885bd49f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92882c2ebfa617edca2359ee75f49db3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *ptr)</td></tr>\n<tr class=\"separator:a92882c2ebfa617edca2359ee75f49db3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a522c59ef5b59f1ed23637a64bf26f26e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e\">ValuePtr</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> *ptr)</td></tr>\n<tr class=\"separator:a522c59ef5b59f1ed23637a64bf26f26e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a90a98402ca4571e3de89695ccfb9bd35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35\">ValuePtr</a> (float *ptr)</td></tr>\n<tr class=\"separator:a90a98402ca4571e3de89695ccfb9bd35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e50ee83fee75e420ac76981b8d06c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4\">operator bool *</a> () const</td></tr>\n<tr class=\"separator:af8e50ee83fee75e420ac76981b8d06c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4736ff47afb4c66c197c4f006b22c9c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5\">operator name_t *</a> () const</td></tr>\n<tr class=\"separator:a4736ff47afb4c66c197c4f006b22c9c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77f0013cb0d9b53db31f09f4de6c2967\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967\">operator const char **</a> () const</td></tr>\n<tr class=\"separator:a77f0013cb0d9b53db31f09f4de6c2967\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0a5e0c74d237cee355b29fd9da38c86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86\">operator int32_t *</a> () const</td></tr>\n<tr class=\"separator:ab0a5e0c74d237cee355b29fd9da38c86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6b8c236803c98f1444cefa27f4898e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7\">operator uint32_t *</a> () const</td></tr>\n<tr class=\"separator:aa6b8c236803c98f1444cefa27f4898e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb4fc61323ca7975037a71dce2b28d9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b\">operator float *</a> () const</td></tr>\n<tr class=\"separator:adb4fc61323ca7975037a71dce2b28d9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73f06a36dab1e2913d5151249a2e6108\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108\">operator vec2 *</a> () const</td></tr>\n<tr class=\"separator:a73f06a36dab1e2913d5151249a2e6108\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8d2ca7e235ca06306a250b9c8e51d45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45\">operator vec3 *</a> () const</td></tr>\n<tr class=\"separator:af8d2ca7e235ca06306a250b9c8e51d45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaacda1660f2ba288b538f5ec5de89063\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063\">operator vec4 *</a> () const</td></tr>\n<tr class=\"separator:aaacda1660f2ba288b538f5ec5de89063\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ac212df5db186a5a5f2c4e4639b07d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0\">operator quat *</a> () const</td></tr>\n<tr class=\"separator:a4ac212df5db186a5a5f2c4e4639b07d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac28b4b028d4493d27a7f6e1fa6d5fda5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">IsBool</a> () const</td></tr>\n<tr class=\"separator:ac28b4b028d4493d27a7f6e1fa6d5fda5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2510ece20da4a990011d9b3487000695\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">IsInt</a> () const</td></tr>\n<tr class=\"separator:a2510ece20da4a990011d9b3487000695\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a0c3c020fc28d602f348a2771185274\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">IsFloat</a> () const</td></tr>\n<tr class=\"separator:a3a0c3c020fc28d602f348a2771185274\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c37ca2a5950081f0d84e161d3f8fd50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">GetType</a> () const</td></tr>\n<tr class=\"separator:a9c37ca2a5950081f0d84e161d3f8fd50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a710718917b773c0a1e242cd9d1adb8ab\" name=\"a710718917b773c0a1e242cd9d1adb8ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a710718917b773c0a1e242cd9d1adb8ab\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[1/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aba2c848ef361b2ba2a85e8d4b9a5dfab\" name=\"aba2c848ef361b2ba2a85e8d4b9a5dfab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba2c848ef361b2ba2a85e8d4b9a5dfab\">&#9670;&nbsp;</a></span>~ValuePtr()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::~ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab32d7ed3d22a06ad91776f2604d70e1a\" name=\"ab32d7ed3d22a06ad91776f2604d70e1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab32d7ed3d22a06ad91776f2604d70e1a\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[2/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0043fc618372996a0b05f85074a06b6\" name=\"ac0043fc618372996a0b05f85074a06b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0043fc618372996a0b05f85074a06b6\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[3/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d7b7f756a82db8ceaa542a2a991702b\" name=\"a1d7b7f756a82db8ceaa542a2a991702b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d7b7f756a82db8ceaa542a2a991702b\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[4/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeca88a1e5474cb104fcf79d0c579b583\" name=\"aeca88a1e5474cb104fcf79d0c579b583\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeca88a1e5474cb104fcf79d0c579b583\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[5/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae34aab6f72a348a3cb5ac1d953e0df60\" name=\"ae34aab6f72a348a3cb5ac1d953e0df60\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae34aab6f72a348a3cb5ac1d953e0df60\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[6/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char **&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae042fdfe2489cb32bece84e5993b1c14\" name=\"ae042fdfe2489cb32bece84e5993b1c14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae042fdfe2489cb32bece84e5993b1c14\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[7/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae055d89765f91e6dbaa448feaf0063c4\" name=\"ae055d89765f91e6dbaa448feaf0063c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae055d89765f91e6dbaa448feaf0063c4\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[8/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47f3134ee2d01c4d863774e072a535e4\" name=\"a47f3134ee2d01c4d863774e072a535e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47f3134ee2d01c4d863774e072a535e4\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[9/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1bdaf5ddd78cea7f6265b7f2885bd49f\" name=\"a1bdaf5ddd78cea7f6265b7f2885bd49f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bdaf5ddd78cea7f6265b7f2885bd49f\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[10/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92882c2ebfa617edca2359ee75f49db3\" name=\"a92882c2ebfa617edca2359ee75f49db3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92882c2ebfa617edca2359ee75f49db3\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[11/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a522c59ef5b59f1ed23637a64bf26f26e\" name=\"a522c59ef5b59f1ed23637a64bf26f26e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a522c59ef5b59f1ed23637a64bf26f26e\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[12/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a90a98402ca4571e3de89695ccfb9bd35\" name=\"a90a98402ca4571e3de89695ccfb9bd35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90a98402ca4571e3de89695ccfb9bd35\">&#9670;&nbsp;</a></span>ValuePtr() <span class=\"overload\">[13/13]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::ValuePtr </td>\n          <td>(</td>\n          <td class=\"paramtype\">float *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a9c37ca2a5950081f0d84e161d3f8fd50\" name=\"a9c37ca2a5950081f0d84e161d3f8fd50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c37ca2a5950081f0d84e161d3f8fd50\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> tram::ValuePtr::GetType </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac28b4b028d4493d27a7f6e1fa6d5fda5\" name=\"ac28b4b028d4493d27a7f6e1fa6d5fda5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac28b4b028d4493d27a7f6e1fa6d5fda5\">&#9670;&nbsp;</a></span>IsBool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::ValuePtr::IsBool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a0c3c020fc28d602f348a2771185274\" name=\"a3a0c3c020fc28d602f348a2771185274\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a0c3c020fc28d602f348a2771185274\">&#9670;&nbsp;</a></span>IsFloat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::ValuePtr::IsFloat </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2510ece20da4a990011d9b3487000695\" name=\"a2510ece20da4a990011d9b3487000695\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2510ece20da4a990011d9b3487000695\">&#9670;&nbsp;</a></span>IsInt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::ValuePtr::IsInt </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8e50ee83fee75e420ac76981b8d06c4\" name=\"af8e50ee83fee75e420ac76981b8d06c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8e50ee83fee75e420ac76981b8d06c4\">&#9670;&nbsp;</a></span>operator bool *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator bool * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77f0013cb0d9b53db31f09f4de6c2967\" name=\"a77f0013cb0d9b53db31f09f4de6c2967\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77f0013cb0d9b53db31f09f4de6c2967\">&#9670;&nbsp;</a></span>operator const char **()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator const char ** </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adb4fc61323ca7975037a71dce2b28d9b\" name=\"adb4fc61323ca7975037a71dce2b28d9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb4fc61323ca7975037a71dce2b28d9b\">&#9670;&nbsp;</a></span>operator float *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator float * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab0a5e0c74d237cee355b29fd9da38c86\" name=\"ab0a5e0c74d237cee355b29fd9da38c86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0a5e0c74d237cee355b29fd9da38c86\">&#9670;&nbsp;</a></span>operator int32_t *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator int32_t * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4736ff47afb4c66c197c4f006b22c9c5\" name=\"a4736ff47afb4c66c197c4f006b22c9c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4736ff47afb4c66c197c4f006b22c9c5\">&#9670;&nbsp;</a></span>operator name_t *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ac212df5db186a5a5f2c4e4639b07d0\" name=\"a4ac212df5db186a5a5f2c4e4639b07d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ac212df5db186a5a5f2c4e4639b07d0\">&#9670;&nbsp;</a></span>operator quat *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6b8c236803c98f1444cefa27f4898e7\" name=\"aa6b8c236803c98f1444cefa27f4898e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6b8c236803c98f1444cefa27f4898e7\">&#9670;&nbsp;</a></span>operator uint32_t *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator uint32_t * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a574e55635d32e94735d03e09622eccd8\" name=\"a574e55635d32e94735d03e09622eccd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a574e55635d32e94735d03e09622eccd8\">&#9670;&nbsp;</a></span>operator Value()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a73f06a36dab1e2913d5151249a2e6108\" name=\"a73f06a36dab1e2913d5151249a2e6108\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73f06a36dab1e2913d5151249a2e6108\">&#9670;&nbsp;</a></span>operator vec2 *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8d2ca7e235ca06306a250b9c8e51d45\" name=\"af8d2ca7e235ca06306a250b9c8e51d45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8d2ca7e235ca06306a250b9c8e51d45\">&#9670;&nbsp;</a></span>operator vec3 *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaacda1660f2ba288b538f5ec5de89063\" name=\"aaacda1660f2ba288b538f5ec5de89063\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaacda1660f2ba288b538f5ec5de89063\">&#9670;&nbsp;</a></span>operator vec4 *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::ValuePtr::operator <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a611fec6779600e3a3508e87fa9a83f6a\" name=\"a611fec6779600e3a3508e87fa9a83f6a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a611fec6779600e3a3508e87fa9a83f6a\">&#9670;&nbsp;</a></span>SetValue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ValuePtr::SetValue </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6a5d3a375ce2d32d453e42796e777103\" name=\"a6a5d3a375ce2d32d453e42796e777103\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a5d3a375ce2d32d453e42796e777103\">&#9670;&nbsp;</a></span>bool_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool* tram::ValuePtr::bool_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af358e691eb1c70e81271966fdef46dfb\" name=\"af358e691eb1c70e81271966fdef46dfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af358e691eb1c70e81271966fdef46dfb\">&#9670;&nbsp;</a></span>float_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float* tram::ValuePtr::float_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a30acbba06034afaa772635752a46979d\" name=\"a30acbba06034afaa772635752a46979d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30acbba06034afaa772635752a46979d\">&#9670;&nbsp;</a></span>int32_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t* tram::ValuePtr::int32_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9335ead8270ada0fd06cab62315dd646\" name=\"a9335ead8270ada0fd06cab62315dd646\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9335ead8270ada0fd06cab62315dd646\">&#9670;&nbsp;</a></span>name_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>* tram::ValuePtr::name_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a87abd9913a910f4dd2b5c20a987347d3\" name=\"a87abd9913a910f4dd2b5c20a987347d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a87abd9913a910f4dd2b5c20a987347d3\">&#9670;&nbsp;</a></span>quat_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>* tram::ValuePtr::quat_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa41430152ae099fa046cb717764a5f73\" name=\"aa41430152ae099fa046cb717764a5f73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa41430152ae099fa046cb717764a5f73\">&#9670;&nbsp;</a></span>string_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char** tram::ValuePtr::string_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1916311938740122169aaf88c83aefa9\" name=\"a1916311938740122169aaf88c83aefa9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1916311938740122169aaf88c83aefa9\">&#9670;&nbsp;</a></span>uint32_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t* tram::ValuePtr::uint32_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab31b750bd4f2b23f2279519ca9e3a5b3\" name=\"ab31b750bd4f2b23f2279519ca9e3a5b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab31b750bd4f2b23f2279519ca9e3a5b3\">&#9670;&nbsp;</a></span>vec2_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>* tram::ValuePtr::vec2_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac25851bd286667025b81cdf9b29c60ba\" name=\"ac25851bd286667025b81cdf9b29c60ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac25851bd286667025b81cdf9b29c60ba\">&#9670;&nbsp;</a></span>vec3_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* tram::ValuePtr::vec3_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a40889e3cb361b60b2ca68b9ad5866d\" name=\"a9a40889e3cb361b60b2ca68b9ad5866d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a40889e3cb361b60b2ca68b9ad5866d\">&#9670;&nbsp;</a></span>vec4_ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>* tram::ValuePtr::vec4_ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this class was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"value_8h_source.html\">value.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_world_cell-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::WorldCell Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">Add</a>(Entity *entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a6d8c426c88e1a950304ce2b499a2a065\">Add</a>(Transition *transition)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">DEBUG_DRAW</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">entities</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">Find</a>(vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3\">Find</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">FindTransition</a>(vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">GetEntities</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">GetEntityCount</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">GetName</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">GetTransitions</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">GetVolume</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">HasAutomaticLoading</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">HasInteriorLighting</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">INTERIOR</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">INTERIOR_LIGHTING</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">IsDebugDraw</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">IsInside</a>(vec3 point)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">IsInterior</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">IsLoaded</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">Link</a>(WorldCell *other)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">Load</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">LOADED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">LOADED_FROM_DISK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">LoadFromDisk</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">Make</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">Remove</a>(Entity *entity)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">SetAutomaticLoading</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">SetDebugDraw</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(uint32_t flag, bool value)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">SetInterior</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">SetInteriorLights</a>(bool is)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">transitions</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">Unload</a>()</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">volume</a></td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">protected</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">WorldCell</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/classtram_1_1_world_cell.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::WorldCell Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pro-types\">Protected Types</a> &#124;\n<a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n<a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n<a href=\"classtram_1_1_world_cell-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::WorldCell Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>World streaming unit.  \n <a href=\"classtram_1_1_world_cell.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:abb50e84305e87fea83abf124d311d4f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">WorldCell</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>)</td></tr>\n<tr class=\"separator:abb50e84305e87fea83abf124d311d4f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac65638978ab32fe02e3bcebf5feaf6b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">GetName</a> ()</td></tr>\n<tr class=\"separator:ac65638978ab32fe02e3bcebf5feaf6b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af970d01a2b78d45162c94c3acab1e4a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">IsLoaded</a> ()</td></tr>\n<tr class=\"separator:af970d01a2b78d45162c94c3acab1e4a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a539e63e21eadaeda761161d2e162ecf8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">IsInterior</a> ()</td></tr>\n<tr class=\"separator:a539e63e21eadaeda761161d2e162ecf8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0b8ff336e94162438f66b7670312345\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">HasInteriorLighting</a> ()</td></tr>\n<tr class=\"separator:af0b8ff336e94162438f66b7670312345\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a906f8e64babfe45db448955b205226e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">IsDebugDraw</a> ()</td></tr>\n<tr class=\"separator:a906f8e64babfe45db448955b205226e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9005d19a5708c2fc52d97c632ff638f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">HasAutomaticLoading</a> ()</td></tr>\n<tr class=\"separator:a9005d19a5708c2fc52d97c632ff638f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38a76916bccb66a452c50c083aa315bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">SetInterior</a> (bool is)</td></tr>\n<tr class=\"separator:a38a76916bccb66a452c50c083aa315bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e14746ba0ad7786857dcc73987cc7b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">SetInteriorLights</a> (bool is)</td></tr>\n<tr class=\"separator:a8e14746ba0ad7786857dcc73987cc7b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add3fba0e03d6c7e4b9ba05f83cf811f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">SetDebugDraw</a> (bool is)</td></tr>\n<tr class=\"separator:add3fba0e03d6c7e4b9ba05f83cf811f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb21e78a8b34ebcb39f149f50436b859\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">SetAutomaticLoading</a> (bool is)</td></tr>\n<tr class=\"separator:afb21e78a8b34ebcb39f149f50436b859\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a587fab236965840dbf0b5254f562b2f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">Load</a> ()</td></tr>\n<tr class=\"memdesc:a587fab236965840dbf0b5254f562b2f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads the cell.  <a href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">More...</a><br /></td></tr>\n<tr class=\"separator:a587fab236965840dbf0b5254f562b2f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad023bb63d9cb471fb1b4ab17d59c9b63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">Unload</a> ()</td></tr>\n<tr class=\"memdesc:ad023bb63d9cb471fb1b4ab17d59c9b63\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unloads the cell.  <a href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">More...</a><br /></td></tr>\n<tr class=\"separator:ad023bb63d9cb471fb1b4ab17d59c9b63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71c4e65daebc0e0dd1244843f8148c33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">LoadFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:a71c4e65daebc0e0dd1244843f8148c33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads worldcell data from disk.  <a href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">More...</a><br /></td></tr>\n<tr class=\"separator:a71c4e65daebc0e0dd1244843f8148c33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13cf0ae3a6ecb0f8d9c4800f24c914ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">Add</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"memdesc:a13cf0ae3a6ecb0f8d9c4800f24c914ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds an entity to the worldcell.  <a href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a13cf0ae3a6ecb0f8d9c4800f24c914ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9fc8c0a06f6867f636663a55721f338\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">Remove</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"memdesc:ab9fc8c0a06f6867f636663a55721f338\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes an entity from the worldcell.  <a href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">More...</a><br /></td></tr>\n<tr class=\"separator:ab9fc8c0a06f6867f636663a55721f338\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d1863ca31c03feec24439e296d3f5fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">GetEntityCount</a> ()</td></tr>\n<tr class=\"separator:a8d1863ca31c03feec24439e296d3f5fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d8c426c88e1a950304ce2b499a2a065\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a6d8c426c88e1a950304ce2b499a2a065\">Add</a> (<a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> *transition)</td></tr>\n<tr class=\"memdesc:a6d8c426c88e1a950304ce2b499a2a065\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a transition.  <a href=\"classtram_1_1_world_cell.html#a6d8c426c88e1a950304ce2b499a2a065\">More...</a><br /></td></tr>\n<tr class=\"separator:a6d8c426c88e1a950304ce2b499a2a065\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfada914f06d4f84530531b1117b5280\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">Link</a> (<a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *other)</td></tr>\n<tr class=\"memdesc:acfada914f06d4f84530531b1117b5280\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Links a worldcell.  <a href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">More...</a><br /></td></tr>\n<tr class=\"separator:acfada914f06d4f84530531b1117b5280\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad17560365ad3f35f832fe14cb2ad7be6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">FindTransition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"memdesc:ad17560365ad3f35f832fe14cb2ad7be6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a transition from a position.  <a href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">More...</a><br /></td></tr>\n<tr class=\"separator:ad17560365ad3f35f832fe14cb2ad7be6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9521430ae60c9fa514b98fa2e5a5c01f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">GetEntities</a> ()</td></tr>\n<tr class=\"separator:a9521430ae60c9fa514b98fa2e5a5c01f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fa5f2ba361a94f37a1f981771cdafaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">GetTransitions</a> ()</td></tr>\n<tr class=\"separator:a2fa5f2ba361a94f37a1f981771cdafaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d383de9e1314938cf44ba8dc976150a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">GetVolume</a> ()</td></tr>\n<tr class=\"separator:a5d383de9e1314938cf44ba8dc976150a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68de53ebe113f1cddbd433dd048acf70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">IsInside</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"memdesc:a68de53ebe113f1cddbd433dd048acf70\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if point is inside the worldcell.  <a href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">More...</a><br /></td></tr>\n<tr class=\"separator:a68de53ebe113f1cddbd433dd048acf70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:abe83e953cd5a7905807a1f4ab8157d01\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point)</td></tr>\n<tr class=\"memdesc:abe83e953cd5a7905807a1f4ab8157d01\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> which contains a given point.  <a href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">More...</a><br /></td></tr>\n<tr class=\"separator:abe83e953cd5a7905807a1f4ab8157d01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7757aa7efe44bb6bb948b559948e12b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>)</td></tr>\n<tr class=\"memdesc:a7757aa7efe44bb6bb948b559948e12b3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> by its name.  <a href=\"classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3\">More...</a><br /></td></tr>\n<tr class=\"separator:a7757aa7efe44bb6bb948b559948e12b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac34c6821383503d786d5de19caba1041\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>)</td></tr>\n<tr class=\"memdesc:ac34c6821383503d786d5de19caba1041\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> by name.  <a href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">More...</a><br /></td></tr>\n<tr class=\"separator:ac34c6821383503d786d5de19caba1041\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-types\" name=\"pro-types\"></a>\nProtected Types</h2></td></tr>\n<tr class=\"memitem:a90b9ed6e3265fb6b3e569669117fd514\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">LOADED</a> = 1\n, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">INTERIOR</a> = 2\n, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">INTERIOR_LIGHTING</a> = 4\n, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">DEBUG_DRAW</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a> = 16\n, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">LOADED_FROM_DISK</a> = 32\n<br />\n }</td></tr>\n<tr class=\"separator:a90b9ed6e3265fb6b3e569669117fd514\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\nProtected Member Functions</h2></td></tr>\n<tr class=\"memitem:a7ee87e1140b9f20b04463f0342135050\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a> (uint32_t flag, bool value)</td></tr>\n<tr class=\"separator:a7ee87e1140b9f20b04463f0342135050\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-attribs\" name=\"pro-attribs\"></a>\nProtected Attributes</h2></td></tr>\n<tr class=\"memitem:aa592b038ed73c8e2accc3ab41deb3d05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a></td></tr>\n<tr class=\"separator:aa592b038ed73c8e2accc3ab41deb3d05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47609a24f5f428ede775c09d633096f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> = <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a></td></tr>\n<tr class=\"separator:a47609a24f5f428ede775c09d633096f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c0e438bdf14ec661b99ce78df3a6e22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">entities</a></td></tr>\n<tr class=\"separator:a2c0e438bdf14ec661b99ce78df3a6e22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d8144c3a7c27244fb6c8fb87c9783a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">transitions</a></td></tr>\n<tr class=\"separator:a4d8144c3a7c27244fb6c8fb87c9783a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cc37dbda76f539084cba7950b355b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">volume</a></td></tr>\n<tr class=\"separator:a8cc37dbda76f539084cba7950b355b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >World streaming unit. </p>\n<p >Contains entities, can be used to load and unload them.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/worldcell.html\">https://racenis.github.io/tram-sdk/documentation/framework/worldcell.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a90b9ed6e3265fb6b3e569669117fd514\" name=\"a90b9ed6e3265fb6b3e569669117fd514\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90b9ed6e3265fb6b3e569669117fd514\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\" name=\"a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\"></a>LOADED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\" name=\"a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\"></a>INTERIOR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\" name=\"a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\"></a>INTERIOR_LIGHTING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\" name=\"a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\"></a>DEBUG_DRAW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\" name=\"a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\"></a>AUTOMATIC_LOADING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\" name=\"a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\"></a>LOADED_FROM_DISK&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"abb50e84305e87fea83abf124d311d4f8\" name=\"abb50e84305e87fea83abf124d311d4f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb50e84305e87fea83abf124d311d4f8\">&#9670;&nbsp;</a></span>WorldCell()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::WorldCell::WorldCell </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a13cf0ae3a6ecb0f8d9c4800f24c914ef\" name=\"a13cf0ae3a6ecb0f8d9c4800f24c914ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">&#9670;&nbsp;</a></span>Add() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Add </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds an entity to the worldcell. </p>\n\n</div>\n</div>\n<a id=\"a6d8c426c88e1a950304ce2b499a2a065\" name=\"a6d8c426c88e1a950304ce2b499a2a065\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d8c426c88e1a950304ce2b499a2a065\">&#9670;&nbsp;</a></span>Add() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Add </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> *&#160;</td>\n          <td class=\"paramname\"><em>transition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a transition. </p>\n<p >Adds an outgoing transition to the worldcell. </p>\n\n</div>\n</div>\n<a id=\"a7757aa7efe44bb6bb948b559948e12b3\" name=\"a7757aa7efe44bb6bb948b559948e12b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7757aa7efe44bb6bb948b559948e12b3\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::WorldCell::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> by its name. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Pointer to the cell if found, nullptr otherwise. </dd></dl>\n\n</div>\n</div>\n<a id=\"abe83e953cd5a7905807a1f4ab8157d01\" name=\"abe83e953cd5a7905807a1f4ab8157d01\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe83e953cd5a7905807a1f4ab8157d01\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::WorldCell::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds the <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> which contains a given point. </p>\n<p >This method will iterate through WorldCells and will try to find a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> with a volume that contains the given point. It will first try finding a volume for an interior cell, otherwise it will try finding a volume for an exterior cell. If it can't find a cell, it will return a nullptr. </p><dl class=\"section return\"><dt>Returns</dt><dd>Pointer to a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> or a nullptr. </dd></dl>\n\n</div>\n</div>\n<a id=\"ad17560365ad3f35f832fe14cb2ad7be6\" name=\"ad17560365ad3f35f832fe14cb2ad7be6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad17560365ad3f35f832fe14cb2ad7be6\">&#9670;&nbsp;</a></span>FindTransition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::WorldCell::FindTransition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds a transition from a position. </p>\n<p >This is meant to be used by entities that are seeking a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> into which they can transition into. </p>\n\n</div>\n</div>\n<a id=\"a9521430ae60c9fa514b98fa2e5a5c01f\" name=\"a9521430ae60c9fa514b98fa2e5a5c01f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9521430ae60c9fa514b98fa2e5a5c01f\">&#9670;&nbsp;</a></span>GetEntities()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * &gt; &amp; tram::WorldCell::GetEntities </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d1863ca31c03feec24439e296d3f5fe\" name=\"a8d1863ca31c03feec24439e296d3f5fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d1863ca31c03feec24439e296d3f5fe\">&#9670;&nbsp;</a></span>GetEntityCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::WorldCell::GetEntityCount </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac65638978ab32fe02e3bcebf5feaf6b9\" name=\"ac65638978ab32fe02e3bcebf5feaf6b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac65638978ab32fe02e3bcebf5feaf6b9\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::WorldCell::GetName </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2fa5f2ba361a94f37a1f981771cdafaa\" name=\"a2fa5f2ba361a94f37a1f981771cdafaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fa5f2ba361a94f37a1f981771cdafaa\">&#9670;&nbsp;</a></span>GetTransitions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt; &amp; tram::WorldCell::GetTransitions </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d383de9e1314938cf44ba8dc976150a\" name=\"a5d383de9e1314938cf44ba8dc976150a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d383de9e1314938cf44ba8dc976150a\">&#9670;&nbsp;</a></span>GetVolume()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const std::vector&lt; <a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a> * &gt; &amp; tram::WorldCell::GetVolume </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9005d19a5708c2fc52d97c632ff638f6\" name=\"a9005d19a5708c2fc52d97c632ff638f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9005d19a5708c2fc52d97c632ff638f6\">&#9670;&nbsp;</a></span>HasAutomaticLoading()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::HasAutomaticLoading </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af0b8ff336e94162438f66b7670312345\" name=\"af0b8ff336e94162438f66b7670312345\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0b8ff336e94162438f66b7670312345\">&#9670;&nbsp;</a></span>HasInteriorLighting()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::HasInteriorLighting </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a906f8e64babfe45db448955b205226e1\" name=\"a906f8e64babfe45db448955b205226e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a906f8e64babfe45db448955b205226e1\">&#9670;&nbsp;</a></span>IsDebugDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::IsDebugDraw </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68de53ebe113f1cddbd433dd048acf70\" name=\"a68de53ebe113f1cddbd433dd048acf70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68de53ebe113f1cddbd433dd048acf70\">&#9670;&nbsp;</a></span>IsInside()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::IsInside </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks if point is inside the worldcell. </p>\n\n</div>\n</div>\n<a id=\"a539e63e21eadaeda761161d2e162ecf8\" name=\"a539e63e21eadaeda761161d2e162ecf8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a539e63e21eadaeda761161d2e162ecf8\">&#9670;&nbsp;</a></span>IsInterior()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::IsInterior </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af970d01a2b78d45162c94c3acab1e4a6\" name=\"af970d01a2b78d45162c94c3acab1e4a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af970d01a2b78d45162c94c3acab1e4a6\">&#9670;&nbsp;</a></span>IsLoaded()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::WorldCell::IsLoaded </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acfada914f06d4f84530531b1117b5280\" name=\"acfada914f06d4f84530531b1117b5280\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfada914f06d4f84530531b1117b5280\">&#9670;&nbsp;</a></span>Link()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Link </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Links a worldcell. </p>\n<p >This method will take the volume transitions assigned to the worldcell in other pointer parameter and assign them as transitions to the given cell. </p>\n\n</div>\n</div>\n<a id=\"a587fab236965840dbf0b5254f562b2f6\" name=\"a587fab236965840dbf0b5254f562b2f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a587fab236965840dbf0b5254f562b2f6\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Load </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Loads the cell. </p>\n<p >This will flag the cell as loaded and will load all of the entities that have been flagged as being automatically loaded. </p>\n\n</div>\n</div>\n<a id=\"a71c4e65daebc0e0dd1244843f8148c33\" name=\"a71c4e65daebc0e0dd1244843f8148c33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71c4e65daebc0e0dd1244843f8148c33\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Loads worldcell data from disk. </p>\n\n</div>\n</div>\n<a id=\"ac34c6821383503d786d5de19caba1041\" name=\"ac34c6821383503d786d5de19caba1041\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac34c6821383503d786d5de19caba1041\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> * tram::WorldCell::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> by name. </p>\n<p >If a cell with the given name already exists, this method will return that same cell, otherwise a new cell will be created. </p><dl class=\"section return\"><dt>Returns</dt><dd>Always returns the pointer to the created <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a>. </dd></dl>\n\n</div>\n</div>\n<a id=\"ab9fc8c0a06f6867f636663a55721f338\" name=\"ab9fc8c0a06f6867f636663a55721f338\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9fc8c0a06f6867f636663a55721f338\">&#9670;&nbsp;</a></span>Remove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Removes an entity from the worldcell. </p>\n\n</div>\n</div>\n<a id=\"afb21e78a8b34ebcb39f149f50436b859\" name=\"afb21e78a8b34ebcb39f149f50436b859\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb21e78a8b34ebcb39f149f50436b859\">&#9670;&nbsp;</a></span>SetAutomaticLoading()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::SetAutomaticLoading </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add3fba0e03d6c7e4b9ba05f83cf811f8\" name=\"add3fba0e03d6c7e4b9ba05f83cf811f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add3fba0e03d6c7e4b9ba05f83cf811f8\">&#9670;&nbsp;</a></span>SetDebugDraw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::SetDebugDraw </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ee87e1140b9f20b04463f0342135050\" name=\"a7ee87e1140b9f20b04463f0342135050\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ee87e1140b9f20b04463f0342135050\">&#9670;&nbsp;</a></span>SetFlag()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::SetFlag </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flag</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38a76916bccb66a452c50c083aa315bf\" name=\"a38a76916bccb66a452c50c083aa315bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38a76916bccb66a452c50c083aa315bf\">&#9670;&nbsp;</a></span>SetInterior()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::SetInterior </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e14746ba0ad7786857dcc73987cc7b9\" name=\"a8e14746ba0ad7786857dcc73987cc7b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e14746ba0ad7786857dcc73987cc7b9\">&#9670;&nbsp;</a></span>SetInteriorLights()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::SetInteriorLights </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad023bb63d9cb471fb1b4ab17d59c9b63\" name=\"ad023bb63d9cb471fb1b4ab17d59c9b63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad023bb63d9cb471fb1b4ab17d59c9b63\">&#9670;&nbsp;</a></span>Unload()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::WorldCell::Unload </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Unloads the cell. </p>\n<p >This will flag the cell as unloaded and will unload all of the entities that have been flagged as being automatically loaded. It will also delete entities that have been flagged as being non-persistent. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2c0e438bdf14ec661b99ce78df3a6e22\" name=\"a2c0e438bdf14ec661b99ce78df3a6e22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c0e438bdf14ec661b99ce78df3a6e22\">&#9670;&nbsp;</a></span>entities</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a>*&gt; tram::WorldCell::entities</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47609a24f5f428ede775c09d633096f2\" name=\"a47609a24f5f428ede775c09d633096f2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47609a24f5f428ede775c09d633096f2\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::WorldCell::flags = <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa592b038ed73c8e2accc3ab41deb3d05\" name=\"aa592b038ed73c8e2accc3ab41deb3d05\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa592b038ed73c8e2accc3ab41deb3d05\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::WorldCell::name</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d8144c3a7c27244fb6c8fb87c9783a5\" name=\"a4d8144c3a7c27244fb6c8fb87c9783a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d8144c3a7c27244fb6c8fb87c9783a5\">&#9670;&nbsp;</a></span>transitions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a>*&gt; tram::WorldCell::transitions</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cc37dbda76f539084cba7950b355b22\" name=\"a8cc37dbda76f539084cba7950b355b22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cc37dbda76f539084cba7950b355b22\">&#9670;&nbsp;</a></span>volume</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a>*&gt; tram::WorldCell::volume</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"worldcell_8h_source.html\">worldcell.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"worldcell_8cpp.html\">worldcell.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/cli_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/cli.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">cli.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/cli_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/cli.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">cli.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"cli_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/cli_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/cli.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">cli.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"cli_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_CLI_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_CLI_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_CLI_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.h:17</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/collisionmodel_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/collisionmodel.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">collisionmodel.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionmodel_8h_source.html\">physics/collisionmodel.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/collisionmodel_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/collisionmodel.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">collisionmodel.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n</div>\n<p><a href=\"collisionmodel_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model.  <a href=\"classtram_1_1_physics_1_1_collision_model.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/collisionmodel_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/collisionmodel.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">collisionmodel.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"collisionmodel_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PHYSICS_COLLISIONMODEL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PHYSICS_COLLISIONMODEL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">   13</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">CollisionModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> mName) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(mName) {}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">   16</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">LoadFromMemory</a>() {}</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">   17</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">   19</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">GetShape</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">shape</a>; }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a>* <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> model_name);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">   23</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">shape</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>};</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>}</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PHYSICS_COLLISIONMODEL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></div><div class=\"ttdoc\">Physics CollisionShape model.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_a1e1df5d474c902a9043f7c2c3f5526bd\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">tram::Physics::CollisionModel::shape</a></div><div class=\"ttdeci\">collisionshape_t shape</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_a2d4b731dbae6f63ce4f665ccd60a94e0\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">tram::Physics::CollisionModel::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_a2f20c343448ae313aea88be28784704c\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">tram::Physics::CollisionModel::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_a4f42c4b06373d96f98faffedc3e5c098\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">tram::Physics::CollisionModel::GetShape</a></div><div class=\"ttdeci\">collisionshape_t GetShape()</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_a89325e4cec53a937d5f189701505344e\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">tram::Physics::CollisionModel::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdoc\">Loads the collision model from disk.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_ae85bad411b05db1eaa6ce1dc585c3dbc\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">tram::Physics::CollisionModel::CollisionModel</a></div><div class=\"ttdeci\">CollisionModel(name_t mName)</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_af125ec91786a3422e236709fb2ee72da\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">tram::Physics::CollisionModel::Find</a></div><div class=\"ttdeci\">static CollisionModel * Find(name_t model_name)</div><div class=\"ttdoc\">Finds a model.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.cpp:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html\">tram::Physics</a></div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/collisionshape_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/collisionshape.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">collisionshape.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"collisionshape_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Shape for a collider.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:abe8615cdc9ae6d697635a3a024e90470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">tram::Physics::Shape</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">tram::Physics::SHAPE_SPHERE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">tram::Physics::SHAPE_CYLINDER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">tram::Physics::SHAPE_CAPSULE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">tram::Physics::SHAPE_CONE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">tram::Physics::SHAPE_BOX</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">tram::Physics::SHAPE_HULL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">tram::Physics::SHAPE_MESH</a>\n<br />\n }</td></tr>\n<tr class=\"separator:abe8615cdc9ae6d697635a3a024e90470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/collisionshape_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/collisionshape.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">collisionshape.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"collisionshape_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PHYSICS_COLLISIONSHAPE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PHYSICS_COLLISIONSHAPE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">   18</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">Shape</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">SHAPE_SPHERE</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">SHAPE_CYLINDER</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">SHAPE_CAPSULE</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">SHAPE_CONE</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">   23</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">SHAPE_BOX</a>,</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">   24</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">SHAPE_HULL</a>,</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">SHAPE_MESH</a></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">   26</a></span>};</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">   28</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a> {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">   29</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">p0</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">p1</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">p2</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>};</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">   32</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> {</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">   33</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">Shape</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">type</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">   38</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">   39</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">radius_x</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">   40</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">extent_x</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            };</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>            </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>            <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">   44</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">   45</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">extent_y</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>            };</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>            </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>            <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">   49</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">extent_z</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">   50</a></span>                <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">radius_z</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>            };</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        };</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">   55</a></span>            <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">hull_points</a>;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">   56</a></span>            <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">hull_size</a>;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        };</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">   60</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">mesh_triangles</a>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">   61</a></span>            <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">mesh_size</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        };</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    };</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">Sphere</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">Cylinder</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">Capsule</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">Cone</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">Box</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> dimensions);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">Hull</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* points, <span class=\"keywordtype\">size_t</span> size);</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">Mesh</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a>* triangles, <span class=\"keywordtype\">size_t</span> size);</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>};</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">   75</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">CollisionShape::Sphere</a>(<span class=\"keywordtype\">float</span> radius) {</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordflow\">return</span> {<a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">SHAPE_SPHERE</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>}</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">   80</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">CollisionShape::Cylinder</a>(<span class=\"keywordtype\">float</span> radius, <span class=\"keywordtype\">float</span> height) {</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordflow\">return</span> {<a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">SHAPE_CYLINDER</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>};</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>}</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">   85</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">CollisionShape::Capsule</a>(<span class=\"keywordtype\">float</span> radius, <span class=\"keywordtype\">float</span> height) {</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordflow\">return</span> {<a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">SHAPE_CAPSULE</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>, 0.0f};</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>}</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">   90</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">CollisionShape::Cone</a>(<span class=\"keywordtype\">float</span> radius, <span class=\"keywordtype\">float</span> height) {</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordflow\">return</span> {<a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">SHAPE_CONE</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>, 0.0f};</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">   95</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">CollisionShape::Box</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> dimensions) {</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keywordflow\">return</span> {<a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">SHAPE_BOX</a>, dimensions.x, dimensions.y, dimensions.z};</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">  102</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">CollisionShape::Hull</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* points, <span class=\"keywordtype\">size_t</span> size) {</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> {.<a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">SHAPE_HULL</a>, .hull_points = points, .hull_size = size};</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>}</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">  109</a></span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_function\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">CollisionShape::Mesh</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a>* triangles, <span class=\"keywordtype\">size_t</span> size) {</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> {.<a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">SHAPE_MESH</a>, .mesh_triangles = triangles, .mesh_size = size};</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>}</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>}</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PHYSICS_COLLISIONSHAPE_H</span></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html\">tram::Physics</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">tram::Physics::Shape</a></div><div class=\"ttdeci\">Shape</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">tram::Physics::SHAPE_CONE</a></div><div class=\"ttdeci\">@ SHAPE_CONE</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">tram::Physics::SHAPE_SPHERE</a></div><div class=\"ttdeci\">@ SHAPE_SPHERE</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">tram::Physics::SHAPE_CAPSULE</a></div><div class=\"ttdeci\">@ SHAPE_CAPSULE</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">tram::Physics::SHAPE_MESH</a></div><div class=\"ttdeci\">@ SHAPE_MESH</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">tram::Physics::SHAPE_BOX</a></div><div class=\"ttdeci\">@ SHAPE_BOX</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">tram::Physics::SHAPE_HULL</a></div><div class=\"ttdeci\">@ SHAPE_HULL</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">tram::Physics::SHAPE_CYLINDER</a></div><div class=\"ttdeci\">@ SHAPE_CYLINDER</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdoc\">Shape for a collider.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a11613d734d20966282442b4b2c1614fc\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">tram::Physics::CollisionShape::radius_x</a></div><div class=\"ttdeci\">float radius_x</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a16a7c9a700bb8498cdc70e4b57e1c248\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">tram::Physics::CollisionShape::Cylinder</a></div><div class=\"ttdeci\">static CollisionShape Cylinder(float radius, float height)</div><div class=\"ttdoc\">Creates a cylinder.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:80</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a208f202b55cc4bed0b0eb7f181e9b33b\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">tram::Physics::CollisionShape::Sphere</a></div><div class=\"ttdeci\">static CollisionShape Sphere(float radius)</div><div class=\"ttdoc\">Creates a sphere.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:75</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a2dd2e0e04264791e0f363e6aaf0a777d\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">tram::Physics::CollisionShape::height</a></div><div class=\"ttdeci\">float height</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a2fe0b464de813a7b9e4756ed81882bd3\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">tram::Physics::CollisionShape::Box</a></div><div class=\"ttdeci\">static CollisionShape Box(vec3 dimensions)</div><div class=\"ttdoc\">Creates a box.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:95</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a3aea9804127806597d0b72a0bb643c3d\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">tram::Physics::CollisionShape::radius</a></div><div class=\"ttdeci\">float radius</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a4350269fc3bb66af08e57cc8051457c5\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">tram::Physics::CollisionShape::extent_x</a></div><div class=\"ttdeci\">float extent_x</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a483912b8ad6fc27f23f7c634f9aea053\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">tram::Physics::CollisionShape::hull_size</a></div><div class=\"ttdeci\">size_t hull_size</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a6275c4f2f2e95cd9ad571f7c0f749fca\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">tram::Physics::CollisionShape::hull_points</a></div><div class=\"ttdeci\">vec3 * hull_points</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a6bfd9e0a322b6a7c5babf73c33695f5b\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">tram::Physics::CollisionShape::Cone</a></div><div class=\"ttdeci\">static CollisionShape Cone(float radius, float height)</div><div class=\"ttdoc\">Creates a cone.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:90</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a7c3bf4d26299f93f429849ad4f075a5c\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">tram::Physics::CollisionShape::mesh_triangles</a></div><div class=\"ttdeci\">CollisionTriangle * mesh_triangles</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a863758c71ebd465cb595af8e3320f456\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">tram::Physics::CollisionShape::extent_z</a></div><div class=\"ttdeci\">float extent_z</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a883545f482ba93253bfa3c03764dcf96\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">tram::Physics::CollisionShape::Hull</a></div><div class=\"ttdeci\">static CollisionShape Hull(vec3 *points, size_t size)</div><div class=\"ttdoc\">Creates a convex hull.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:102</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_a9ae3a56320a72a76d882ba2e84b699a7\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">tram::Physics::CollisionShape::radius_z</a></div><div class=\"ttdeci\">float radius_z</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_aab4dbf0584616aab6910c8a070c70a26\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">tram::Physics::CollisionShape::extent_y</a></div><div class=\"ttdeci\">float extent_y</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:45</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_ab1b9dd4a5ab3e27a4325d18df5e4d096\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">tram::Physics::CollisionShape::Mesh</a></div><div class=\"ttdeci\">static CollisionShape Mesh(CollisionTriangle *triangles, size_t size)</div><div class=\"ttdoc\">Creates a triangle mesh.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_ad4f0ef4192b9763bc7775ef9f6b9a26b\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">tram::Physics::CollisionShape::type</a></div><div class=\"ttdeci\">Shape type</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_aec3a6b467737e8ca959299a9173d30b7\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">tram::Physics::CollisionShape::mesh_size</a></div><div class=\"ttdeci\">size_t mesh_size</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:61</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html_afae4406289b2e70a53335128889c4248\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">tram::Physics::CollisionShape::Capsule</a></div><div class=\"ttdeci\">static CollisionShape Capsule(float radius, float height)</div><div class=\"ttdoc\">Creates a capsule.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:85</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_triangle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a></div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_triangle_html_a2fd02ff41418623b5dcc960512a0c342\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">tram::Physics::CollisionTriangle::p2</a></div><div class=\"ttdeci\">vec3 p2</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_triangle_html_a3bfb775d8ba71bf1452495ac6aa73a1d\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">tram::Physics::CollisionTriangle::p1</a></div><div class=\"ttdeci\">vec3 p1</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_triangle_html_af79a85c745ddbf74ab90304395826b6c\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">tram::Physics::CollisionTriangle::p0</a></div><div class=\"ttdeci\">vec3 p0</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:29</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2animation_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/animation.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animation.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2animation_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/animation.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animation.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2animation_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays back Animations.  <a href=\"classtram_1_1_animation_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2animation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/animation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">animation.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2animation_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"model_8h.html\">render/model.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html\">   13</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">   16</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">SetModel</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>) { this-&gt;model = <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>; }</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2\">   17</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2\">SetModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>) { this-&gt;model = <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">Render::Model::Find</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>); }</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">   18</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a>* <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">GetModel</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>.get(); }</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">   19</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a>* <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">GetPose</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">pose</a>; }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">SetKeyframe</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> bone_name, <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a>&amp; keyframe);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">SetOnAnimationFinishCallback</a>(<span class=\"keywordtype\">void</span> (*callback) (<a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>)) { <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">anim_finish_callback</a> = callback; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">Play</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, uint32_t repeats, <span class=\"keywordtype\">float</span> weight, <span class=\"keywordtype\">float</span> speed, <span class=\"keywordtype\">bool</span> interpolate = <span class=\"keyword\">true</span>, <span class=\"keywordtype\">bool</span> pause_on_last_frame = <span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">IsPlaying</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">Stop</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">Pause</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">Continue</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">SetWeight</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">float</span> weight);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">SetSpeed</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">float</span> speed);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">SetRepeats</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, uint32_t repeats);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">FadeIn</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">float</span> length);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">FadeOut</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">float</span> length);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">SetPause</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">bool</span> pause);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">SetFade</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">bool</span> fade_in, <span class=\"keywordtype\">float</span> fade_length);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">SetFrame</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> animation_name, <span class=\"keywordtype\">float</span> frame);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">Reparent</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> bone_name, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> new_parent);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">Refresh</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">   44</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) { <span class=\"keywordflow\">return</span>; }</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">IsDebugInfoDraw</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">SetDebugInfoDraw</a>(<span class=\"keywordtype\">bool</span> draw);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">   49</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a> = 8;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">   50</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a> {</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">   51</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">repeats</a>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">   52</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">weight</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">   53</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">speed</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">   54</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">frame</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">   55</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">fade_speed</a>;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">   56</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">fade_ammount</a>;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">   57</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">interpolate</a>;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">   58</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">fade_in</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">   59</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">fade_out</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">   60</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">pause</a>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">   61</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">pause_on_last_frame</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">   62</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">keyframes</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {<span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">   63</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">keyframe_count</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {0};</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    };</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">FindKeyframePointers</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_animation.html\">Render::Animation</a>* animation, <span class=\"keywordtype\">size_t</span> animation_index);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">   68</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">base_pose</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">   70</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">pose</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">   71</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Model&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">model</a>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">   73</a></span>    void (*<a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">anim_finish_callback</a>) (<a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>*, <a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">   75</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_bone.html\">Render::Bone</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">armature_bones</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">   76</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">armature_bone_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">   77</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">armature_bone_parents</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {-1};</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">   79</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">anim_playing</a>[<a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">   80</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a> <a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">anim_info</a>[<a class=\"code hl_variable\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">ANIM_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">AnimationComponent</a>();</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <a class=\"code hl_function\" href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">~AnimationComponent</a>();</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110\">   84</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool</a>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>}</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></div><div class=\"ttdoc\">Plays back Animations.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a03643f9802dcb7bfe3afdabc432c3025\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">tram::AnimationComponent::model</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Model &gt; model</div><div class=\"ttdef\"><b>Definition:</b> animation.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a04aa5c1f59cfafd2485a5f8ac1376cc1\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">tram::AnimationComponent::GetPose</a></div><div class=\"ttdeci\">Render::Pose * GetPose()</div><div class=\"ttdef\"><b>Definition:</b> animation.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a10847fac3c1cd2e8750fda898eff512d\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">tram::AnimationComponent::GetModel</a></div><div class=\"ttdeci\">Render::Model * GetModel()</div><div class=\"ttdef\"><b>Definition:</b> animation.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a27c7ff48133b01c79777af78e4ee5a07\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">tram::AnimationComponent::IsPlaying</a></div><div class=\"ttdeci\">bool IsPlaying(name_t animation_name)</div><div class=\"ttdoc\">Returns true if an animation is playing.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:244</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a29f7010dec34fdcd9c7a3e9bcadf2b96\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">tram::AnimationComponent::Stop</a></div><div class=\"ttdeci\">void Stop(name_t animation_name)</div><div class=\"ttdoc\">Stops an animation if its playing.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:153</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a2fcbfb0820bce127c4ef9c82238a296f\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">tram::AnimationComponent::SetFade</a></div><div class=\"ttdeci\">void SetFade(name_t animation_name, bool fade_in, float fade_length)</div><div class=\"ttdoc\">Fades in or fades out an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:263</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a41874c91efb221e22ce606804aedf1c2\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">tram::AnimationComponent::anim_info</a></div><div class=\"ttdeci\">AnimationPlaybackInfo anim_info[ANIM_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:80</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a548e0d34bf1bb6b24a534b759b83ccd8\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">tram::AnimationComponent::armature_bone_count</a></div><div class=\"ttdeci\">size_t armature_bone_count</div><div class=\"ttdef\"><b>Definition:</b> animation.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a56d81b59bfb31b228aacaeda632474ba\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">tram::AnimationComponent::SetKeyframe</a></div><div class=\"ttdeci\">void SetKeyframe(name_t bone_name, const Render::Keyframe &amp;keyframe)</div><div class=\"ttdoc\">Sets procedural animation keyframe.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a61a263a46b3af801e91b0306f65bd5b8\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">tram::AnimationComponent::armature_bone_parents</a></div><div class=\"ttdeci\">int32_t armature_bone_parents[Render::BONE_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a622f5ba394f586c8eddde6acfbc968e0\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">tram::AnimationComponent::IsDebugInfoDraw</a></div><div class=\"ttdeci\">static bool IsDebugInfoDraw()</div><div class=\"ttdoc\">Checks whether the debug text is drawn.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:466</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a6433689ecdafdbcfe82ba1436a21f41c\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">tram::AnimationComponent::SetWeight</a></div><div class=\"ttdeci\">void SetWeight(name_t animation_name, float weight)</div><div class=\"ttdoc\">Sets the weight of an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:214</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a6553e17f7e26893e25cca1b229a2ab65\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">tram::AnimationComponent::Update</a></div><div class=\"ttdeci\">static void Update()</div><div class=\"ttdoc\">Updates all of the armatures.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:299</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a6d476ab03612c5e87aadfb6b70a1a8fb\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">tram::AnimationComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a73a899480e5814119ddb716c93253b4a\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">tram::AnimationComponent::SetPause</a></div><div class=\"ttdeci\">void SetPause(name_t animation_name, bool pause)</div><div class=\"ttdoc\">Sets animation's pause state.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:177</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a752f8c4d9982c2a406e80597a85158cd\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">tram::AnimationComponent::Pause</a></div><div class=\"ttdeci\">void Pause(name_t animation_name)</div><div class=\"ttdoc\">Pauses an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:191</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a82fda1bdec933e8b63788b286081885a\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">tram::AnimationComponent::SetOnAnimationFinishCallback</a></div><div class=\"ttdeci\">void SetOnAnimationFinishCallback(void(*callback)(AnimationComponent *, name_t))</div><div class=\"ttdef\"><b>Definition:</b> animation.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a86100bcacc626be6040580f705248072\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">tram::AnimationComponent::armature_bones</a></div><div class=\"ttdeci\">const Render::Bone * armature_bones</div><div class=\"ttdef\"><b>Definition:</b> animation.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a8a927071d5509777104ff0de4d613782\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">tram::AnimationComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(Render::Model *model)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a8ca6edc357f6d61b8750acdec9d4de77\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">tram::AnimationComponent::pose</a></div><div class=\"ttdeci\">Render::Pose * pose</div><div class=\"ttdef\"><b>Definition:</b> animation.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a8cfc453f4f1a8e3d39ef58fd0ceb71e4\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">tram::AnimationComponent::anim_playing</a></div><div class=\"ttdeci\">name_t anim_playing[ANIM_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a8f3653661fe211b4b809c1fdbdcc8d08\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">tram::AnimationComponent::SetFrame</a></div><div class=\"ttdeci\">void SetFrame(name_t animation_name, float frame)</div><div class=\"ttdoc\">Sets an animation to a specific frame.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:306</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_a9040237d0b7095c4f3c40263bbf8428e\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">tram::AnimationComponent::SetDebugInfoDraw</a></div><div class=\"ttdeci\">static void SetDebugInfoDraw(bool draw)</div><div class=\"ttdoc\">Sets the drawing of debug info.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:473</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_aaa1ec23cc54f20569e9cce6a90844bc9\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">tram::AnimationComponent::FindKeyframePointers</a></div><div class=\"ttdeci\">void FindKeyframePointers(Render::Animation *animation, size_t animation_index)</div><div class=\"ttdoc\">Extracts pointers to keyframes from animation data.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:142</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_aaa1fa307b6434b4f33232fd2fb831590\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">tram::AnimationComponent::Reparent</a></div><div class=\"ttdeci\">void Reparent(name_t bone_name, name_t new_parent)</div><div class=\"ttdoc\">Reparents a bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:280</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_aaf4161bf1e5c2cee940304cf35b8c178\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">tram::AnimationComponent::FadeIn</a></div><div class=\"ttdeci\">void FadeIn(name_t animation_name, float length)</div><div class=\"ttdoc\">Fades in an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:204</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ab837c1cffe19cc9baa3ea3bc80577cdb\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">tram::AnimationComponent::SetRepeats</a></div><div class=\"ttdeci\">void SetRepeats(name_t animation_name, uint32_t repeats)</div><div class=\"ttdoc\">Sets the repeats of an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:234</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_abe657fb3e7986f8344a6a1aa5d1a40d7\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">tram::AnimationComponent::anim_finish_callback</a></div><div class=\"ttdeci\">void(* anim_finish_callback)(AnimationComponent *, name_t)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ac6008fd710fcfd5b79795890d0535bee\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">tram::AnimationComponent::~AnimationComponent</a></div><div class=\"ttdeci\">~AnimationComponent()</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_acfacd194c9559609030b7aff261ea9f1\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">tram::AnimationComponent::SetSpeed</a></div><div class=\"ttdeci\">void SetSpeed(name_t animation_name, float speed)</div><div class=\"ttdoc\">Sets the speed of an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:224</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ad6f14c184f255d16a73dd7fb1ad3b52f\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">tram::AnimationComponent::Continue</a></div><div class=\"ttdeci\">void Continue(name_t animation_name)</div><div class=\"ttdoc\">Continues an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:198</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_adc4711c76a0f6e6875f2e57400724f5b\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">tram::AnimationComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ae18431fe0083fcb808cf91cac0a25ee2\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2\">tram::AnimationComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(name_t model)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ae44dc606d6f719e5a470fdc6ed013e27\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">tram::AnimationComponent::ANIM_COUNT</a></div><div class=\"ttdeci\">static const size_t ANIM_COUNT</div><div class=\"ttdef\"><b>Definition:</b> animation.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_ae64dafa0a2ea87a033e0fa4bd342f5ad\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">tram::AnimationComponent::Play</a></div><div class=\"ttdeci\">void Play(name_t animation_name, uint32_t repeats, float weight, float speed, bool interpolate=true, bool pause_on_last_frame=false)</div><div class=\"ttdoc\">Plays an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_aeb3ad3551105ef1e3a6306808900ae50\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">tram::AnimationComponent::FadeOut</a></div><div class=\"ttdeci\">void FadeOut(name_t animation_name, float length)</div><div class=\"ttdoc\">Fades out an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:209</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_af773091315f64f349184c6f9055dc5ad\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">tram::AnimationComponent::AnimationComponent</a></div><div class=\"ttdeci\">AnimationComponent()</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_af919af95bb7414728434643fcaeda10c\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">tram::AnimationComponent::base_pose</a></div><div class=\"ttdeci\">Render::Keyframe base_pose[Render::BONE_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html_af951b71145c810f51d1c6c04feff431a\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">tram::AnimationComponent::Refresh</a></div><div class=\"ttdeci\">void Refresh()</div><div class=\"ttdoc\">Updates an armature.</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:317</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></div><div class=\"ttdoc\">Skeletal animation for a 3D model.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a02abf1c725962593c6bbfa17d4fa2e43\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">tram::Render::Model::Find</a></div><div class=\"ttdeci\">static Model * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"amodel_8h_html\"><div class=\"ttname\"><a href=\"model_8h.html\">model.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae4355f7ab257050d67eb34b6c95b58e6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">tram::Render::BONE_COUNT</a></div><div class=\"ttdeci\">const size_t BONE_COUNT</div><div class=\"ttdef\"><b>Definition:</b> animation.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a048b270710009b885b74f65c311d4585\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">tram::AnimationComponent::AnimationPlaybackInfo::fade_out</a></div><div class=\"ttdeci\">bool fade_out</div><div class=\"ttdef\"><b>Definition:</b> animation.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a393f1b21fb4bf95d0d20a99fe1b6a4c8\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">tram::AnimationComponent::AnimationPlaybackInfo::fade_speed</a></div><div class=\"ttdeci\">float fade_speed</div><div class=\"ttdef\"><b>Definition:</b> animation.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a447bcffb27576df3ed62a4f8e7a1ac29\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">tram::AnimationComponent::AnimationPlaybackInfo::fade_in</a></div><div class=\"ttdeci\">bool fade_in</div><div class=\"ttdef\"><b>Definition:</b> animation.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a46acadd400538066abb77bebaee607bc\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">tram::AnimationComponent::AnimationPlaybackInfo::keyframes</a></div><div class=\"ttdeci\">Render::Keyframe * keyframes[Render::BONE_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:62</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a5cd0230ac57aa0d044f40a4f159e07da\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">tram::AnimationComponent::AnimationPlaybackInfo::pause_on_last_frame</a></div><div class=\"ttdeci\">bool pause_on_last_frame</div><div class=\"ttdef\"><b>Definition:</b> animation.h:61</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a605b9819919b636a4ec02c58bbea28d6\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">tram::AnimationComponent::AnimationPlaybackInfo::speed</a></div><div class=\"ttdeci\">float speed</div><div class=\"ttdef\"><b>Definition:</b> animation.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a71d6f0678bda33baa5635c35df35f4e8\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">tram::AnimationComponent::AnimationPlaybackInfo::keyframe_count</a></div><div class=\"ttdeci\">uint32_t keyframe_count[Render::BONE_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:63</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a7456d5837fff021227866a7e713af0bb\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">tram::AnimationComponent::AnimationPlaybackInfo::interpolate</a></div><div class=\"ttdeci\">bool interpolate</div><div class=\"ttdef\"><b>Definition:</b> animation.h:57</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_a7ac66228a0680599c017d9dad5bbcc6c\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">tram::AnimationComponent::AnimationPlaybackInfo::pause</a></div><div class=\"ttdeci\">bool pause</div><div class=\"ttdef\"><b>Definition:</b> animation.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_ab1317f7c6f09824b1dc5a8df6b35bf7c\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">tram::AnimationComponent::AnimationPlaybackInfo::repeats</a></div><div class=\"ttdeci\">uint32_t repeats</div><div class=\"ttdef\"><b>Definition:</b> animation.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_ab88da3c134852e675a0a1b0138dd6b81\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">tram::AnimationComponent::AnimationPlaybackInfo::weight</a></div><div class=\"ttdeci\">float weight</div><div class=\"ttdef\"><b>Definition:</b> animation.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_ada1f5f7cfa76593710d843a609d7c35b\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">tram::AnimationComponent::AnimationPlaybackInfo::frame</a></div><div class=\"ttdeci\">float frame</div><div class=\"ttdef\"><b>Definition:</b> animation.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_animation_component_1_1_animation_playback_info_html_ae085e9df26b79fc91ac3a18d469bce96\"><div class=\"ttname\"><a href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">tram::AnimationComponent::AnimationPlaybackInfo::fade_ammount</a></div><div class=\"ttdeci\">float fade_ammount</div><div class=\"ttdef\"><b>Definition:</b> animation.h:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></div><div class=\"ttdoc\">Bone for a 3D models skeleton.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></div><div class=\"ttdoc\">Keyframe for a skeletal animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2audio_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/audio.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">audio.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2audio_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/audio.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">audio.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2audio_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays back Sounds.  <a href=\"classtram_1_1_audio_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2audio_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/audio.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">audio.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2audio_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2render_8h.html\">components/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"audio_2sound_8h.html\">audio/sound.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">AudioComponent</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">sound</a>(this){}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">~AudioComponent</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">location</a>);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">SetSound</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">SetRepeating</a>(<span class=\"keywordtype\">bool</span> is_repeating);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">IsPlaying</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">Play</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">Pause</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">Stop</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">   30</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){}</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">IsSourceDraw</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">IsDebugInfoDraw</a>();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">SetSourceDraw</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">SetDebugInfoDraw</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">   38</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Audio::Sound&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">sound</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">   39</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">Audio::audiosource_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">source</a> = {};</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">   40</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">   41</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">repeat</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">   42</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">play_on_start</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">SetupModel</a>();</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">   45</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">model</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>};</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>}</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aaudio_2sound_8h_html\"><div class=\"ttname\"><a href=\"audio_2sound_8h.html\">sound.h</a></div><div class=\"ttdoc\">Sound resource definition.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html\">tram::AudioComponent</a></div><div class=\"ttdoc\">Plays back Sounds.</div><div class=\"ttdef\"><b>Definition:</b> audio.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a07c6b771da60423e0357a1c872db6ed3\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">tram::AudioComponent::SetSourceDraw</a></div><div class=\"ttdeci\">static void SetSourceDraw(bool)</div><div class=\"ttdoc\">Sets the drawing of audio sources.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:165</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a08da2d9226240fb8e37b91b77145f0cf\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">tram::AudioComponent::SetDebugInfoDraw</a></div><div class=\"ttdeci\">static void SetDebugInfoDraw(bool)</div><div class=\"ttdoc\">Sets the drawing of debug info.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:177</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a0a1ef247f18c73318db0355a6b0a44f3\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">tram::AudioComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a0a9b7571ead611ac20d86a8c94b15b13\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">tram::AudioComponent::~AudioComponent</a></div><div class=\"ttdeci\">~AudioComponent()</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a0cb407f67786c11bda3f8a4352796a58\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">tram::AudioComponent::IsPlaying</a></div><div class=\"ttdeci\">bool IsPlaying()</div><div class=\"ttdoc\">Checks if component is playing a sound.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a1ff1eab65a76f78216b57665a6c8b464\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">tram::AudioComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> audio.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a46dea84e302ded4f9d1cb4a19a15a4fd\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">tram::AudioComponent::Play</a></div><div class=\"ttdeci\">void Play()</div><div class=\"ttdoc\">Plays the sound.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:100</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a4acdea9eb5e1750b2c2ff66f07b9daf5\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">tram::AudioComponent::Stop</a></div><div class=\"ttdeci\">void Stop()</div><div class=\"ttdoc\">Stops the sound.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:118</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a736977966c4d0485ef879349eeef271e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">tram::AudioComponent::SetSound</a></div><div class=\"ttdeci\">void SetSound(name_t name)</div><div class=\"ttdoc\">Sets the sound that the component will play.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a8f7d175b19b8e5b40994132c416a404e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">tram::AudioComponent::IsDebugInfoDraw</a></div><div class=\"ttdeci\">static bool IsDebugInfoDraw()</div><div class=\"ttdoc\">Checks whether the debug text is drawn.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:158</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_a9d8448140c994b866c61118e80887c58\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">tram::AudioComponent::IsSourceDraw</a></div><div class=\"ttdeci\">static bool IsSourceDraw()</div><div class=\"ttdoc\">Checks whether the audio source is drawn.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:152</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_aa6d30f7ac730409c6d4a50edfc1d2ee9\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">tram::AudioComponent::SetRepeating</a></div><div class=\"ttdeci\">void SetRepeating(bool is_repeating)</div><div class=\"ttdoc\">Sets whether the component will repeat its sound.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_aaa933d4c47c8636b20a47ae313a79230\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">tram::AudioComponent::sound</a></div><div class=\"ttdeci\">ResourceProxy&lt; Audio::Sound &gt; sound</div><div class=\"ttdef\"><b>Definition:</b> audio.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_aacd7fc7a708e8bae044c8fa34bca2031\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">tram::AudioComponent::SetupModel</a></div><div class=\"ttdeci\">void SetupModel()</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:137</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_ab1cbca3ac78210b1c284dc6309a6b303\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">tram::AudioComponent::repeat</a></div><div class=\"ttdeci\">bool repeat</div><div class=\"ttdef\"><b>Definition:</b> audio.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_ac455283db7b930059f29e82905172ce8\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">tram::AudioComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> audio.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_acbf584247d4a88f0fa923f9e5b426f84\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">tram::AudioComponent::model</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; model</div><div class=\"ttdef\"><b>Definition:</b> audio.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_acfa284e522ae3aa9cb61337b23327171\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">tram::AudioComponent::source</a></div><div class=\"ttdeci\">Audio::audiosource_t source</div><div class=\"ttdef\"><b>Definition:</b> audio.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_ad0fc5f3971f62787f84b8150f6a2e1df\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">tram::AudioComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdoc\">Sets the location from which the sound will play.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_ad8d20d0b929c8ac8666d80dac82ce0df\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">tram::AudioComponent::Pause</a></div><div class=\"ttdeci\">void Pause()</div><div class=\"ttdoc\">Pauses the sound.</div><div class=\"ttdef\"><b>Definition:</b> audio.cpp:111</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_afa9685950e016f31ca90c71839cd7852\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">tram::AudioComponent::play_on_start</a></div><div class=\"ttdeci\">bool play_on_start</div><div class=\"ttdef\"><b>Definition:</b> audio.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_component_html_aff631c814eda2b4e8b615ebe9a4217f5\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">tram::AudioComponent::AudioComponent</a></div><div class=\"ttdeci\">AudioComponent()</div><div class=\"ttdef\"><b>Definition:</b> audio.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"acomponents_2render_8h_html\"><div class=\"ttname\"><a href=\"components_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1audiosource__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a></div><div class=\"ttdoc\">Audio source handle.</div><div class=\"ttdef\"><b>Definition:</b> audio.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2light_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2light_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2light_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides a real-time illumination for the scene.  <a href=\"classtram_1_1_light_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2light_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2light_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2render_8h.html\">components/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html\">   12</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_light_component.html\">LightComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">Init</a> ();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">   15</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">Start</a> () {}</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a>);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">SetColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a>);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">SetDistance</a>(<span class=\"keywordtype\">float</span> dist);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">SetDirection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">direction</a>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">SetExponent</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">exponent</a>);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">GetColor</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">GetDistance</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">   26</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) { <span class=\"keywordflow\">return</span>; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">~LightComponent</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">IsLightDraw</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">SetLightDraw</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">Render::light_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">light</a> = {};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">   37</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">distance</a> = 15.0f;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">   38</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">direction</a> = {0.0f, 0.0f, -1.0f};</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">   39</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">exponent</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">SetupModel</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">   42</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">model</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>}</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></div><div class=\"ttdoc\">Provides a real-time illumination for the scene.</div><div class=\"ttdef\"><b>Definition:</b> light.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a12116f3c73a230d6f2ba928d0f6af33f\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">tram::LightComponent::GetDistance</a></div><div class=\"ttdeci\">float GetDistance()</div><div class=\"ttdoc\">Returns the distance of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:96</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a1861087271aee66c91c327ec199000da\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">tram::LightComponent::SetDistance</a></div><div class=\"ttdeci\">void SetDistance(float dist)</div><div class=\"ttdoc\">Sets the distance of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a3bab1eb0115b251850a8342774d18a28\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">tram::LightComponent::model</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; model</div><div class=\"ttdef\"><b>Definition:</b> light.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a3cfee9529794960ce2238cd8306c438b\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">tram::LightComponent::~LightComponent</a></div><div class=\"ttdeci\">~LightComponent()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a3eaddbed4577c9c58915b1eafad0617a\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">tram::LightComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdoc\">Sets the location of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a407b59e1e8c215a030e5eff1aba7d7d1\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">tram::LightComponent::SetDirection</a></div><div class=\"ttdeci\">void SetDirection(vec3 direction)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:80</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a4a3e561c198c80a5f5ffdbc3168e6dfd\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">tram::LightComponent::SetLightDraw</a></div><div class=\"ttdeci\">static void SetLightDraw(bool)</div><div class=\"ttdoc\">Sets the drawing oflights.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:126</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a523c8f75bcd17b885098fe30956d88a6\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">tram::LightComponent::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes an entity component.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a71e038c2e9a0cde417f2b1899ff87349\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">tram::LightComponent::GetColor</a></div><div class=\"ttdeci\">vec3 GetColor()</div><div class=\"ttdoc\">Returns the color of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a9613f69281a1170cd3465920fc8254ef\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">tram::LightComponent::color</a></div><div class=\"ttdeci\">Render::color_t color</div><div class=\"ttdef\"><b>Definition:</b> light.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a97341de0a9ff1c7ebd0d9ae721af0bac\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">tram::LightComponent::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> light.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ac5d511b09dd704670222c89f7f4bfb40\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">tram::LightComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> light.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ac7375045221c2b515f18c1b5893f048f\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">tram::LightComponent::SetExponent</a></div><div class=\"ttdeci\">void SetExponent(float exponent)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:85</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ac9245097981e9adcb4f31f83513a071b\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">tram::LightComponent::SetColor</a></div><div class=\"ttdeci\">void SetColor(Render::color_t color)</div><div class=\"ttdoc\">Sets the color of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ad6cf4eb83f59c3bd63368dc6f79e6df9\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">tram::LightComponent::light</a></div><div class=\"ttdeci\">Render::light_t light</div><div class=\"ttdef\"><b>Definition:</b> light.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ae3a23ce02a2f45cbfcc386a78acc5db4\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">tram::LightComponent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ae3d891ff89275a995fddeda744b085cf\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">tram::LightComponent::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> light.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ae603c601fe95f22db85c49b1bc53f800\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">tram::LightComponent::SetupModel</a></div><div class=\"ttdeci\">void SetupModel()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_aee724429d715a9da2793d66b0938080f\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">tram::LightComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> light.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_aefae135fe915548285a2363b92e2915b\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">tram::LightComponent::IsLightDraw</a></div><div class=\"ttdeci\">static bool IsLightDraw()</div><div class=\"ttdoc\">Checks whether the lights are drawn.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:119</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_af28678281fb5b2012af9bba987aaf2f4\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">tram::LightComponent::exponent</a></div><div class=\"ttdeci\">float exponent</div><div class=\"ttdef\"><b>Definition:</b> light.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_afc605268cb96a739eee4ff721fc013d1\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">tram::LightComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> light.h:35</div></div>\n<div class=\"ttc\" id=\"acomponents_2render_8h_html\"><div class=\"ttname\"><a href=\"components_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></div><div class=\"ttdeci\">vec3 color_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:173</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2physics_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/physics.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">physics.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2physics_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/physics.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">physics.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionmodel_8h_source.html\">physics/collisionmodel.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">physics/collisionshape.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2physics_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rigidbody wrapper.  <a href=\"classtram_1_1_physics_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2physics_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/physics.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">physics.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2physics_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"collisionmodel_8h.html\">physics/collisionmodel.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"collisionshape_8h.html\">physics/collisionshape.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_component.html\">   12</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">   14</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">PhysicsComponent</a>() : collision_model(this) {}</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">~PhysicsComponent</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">   16</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) {}</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">GetModel</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">SetModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> model);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">SetMass</a>(<span class=\"keywordtype\">float</span> mass);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">SetShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a> shape);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">Push</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">Push</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_position);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">Spin</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">SetCollisionMask</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">SetCollisionGroup</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">GetCollisionMask</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">GetCollisionGroup</a>();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">SetDebugDrawing</a>(<span class=\"keywordtype\">bool</span> drawing);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">SetKinematic</a>(<span class=\"keywordtype\">bool</span> kinematic);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">SetUpdateParentTransform</a>(<span class=\"keywordtype\">bool</span> update);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">DisableDeactivation</a>();</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">Awaken</a>();</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">Sleep</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">SetAngularFactor</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">SetLinearFactor</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">SetVelocity</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; velocity);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">GetVelocity</a>();</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Physics::CollisionModel&gt;</a> collision_model;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">Physics::collisionshape_t</a> collision_shape = {<span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    Physics::rigidbody_t rigidbody = {<span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <span class=\"keywordtype\">float</span> rigidbody_mass = 1.0f;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    <span class=\"keywordtype\">bool</span> rigidbody_should_sleep = <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keywordtype\">bool</span> rigidbody_should_awake = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <span class=\"keywordtype\">bool</span> update_parent_transform = <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keywordtype\">bool</span> rigidbody_kinematic = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">bool</span> rigidbody_debug_draw = <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rigidbody_position = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rigidbody_rotation = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rigidbody_offset = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rigidbody_angular_factor = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rigidbody_linear_factor = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    uint32_t rigidbody_collision_mask = -1;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    uint32_t rigidbody_collision_group = -1;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>};</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>}</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdoc\">Rigidbody wrapper.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a012cb69d2fc0bc2dedacd198e2de04dc\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">tram::PhysicsComponent::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat rotation)</div><div class=\"ttdoc\">Sets the rotation of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:262</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a02d7278815c993d0c267002740e2cc10\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">tram::PhysicsComponent::SetCollisionMask</a></div><div class=\"ttdeci\">void SetCollisionMask(uint32_t flags)</div><div class=\"ttdoc\">Sets the collision mask of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:110</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a056cae53c34b56b074f364251ca545e4\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">tram::PhysicsComponent::Push</a></div><div class=\"ttdeci\">void Push(vec3 direction)</div><div class=\"ttdoc\">Pushes the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:156</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a0956a47778936024e1d1b245728a680c\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">tram::PhysicsComponent::SetShape</a></div><div class=\"ttdeci\">void SetShape(Physics::CollisionShape shape)</div><div class=\"ttdoc\">Sets the collision shape of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:136</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a1a84053f86862350a329a1607c62f9a7\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">tram::PhysicsComponent::SetUpdateParentTransform</a></div><div class=\"ttdeci\">void SetUpdateParentTransform(bool update)</div><div class=\"ttdoc\">Sets whether the movement of the rigibody should update parent Entity's transform.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:245</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a39981bb11f6e8eb4dcce36f4c380ebec\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">tram::PhysicsComponent::Spin</a></div><div class=\"ttdeci\">void Spin(vec3 direction)</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:173</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a4669765afef6e232241d24959bf6a3ba\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">tram::PhysicsComponent::~PhysicsComponent</a></div><div class=\"ttdeci\">~PhysicsComponent()</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a4a7c6f98fc1ff033c6988c35bc14c999\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">tram::PhysicsComponent::SetAngularFactor</a></div><div class=\"ttdeci\">void SetAngularFactor(vec3 factor)</div><div class=\"ttdoc\">Sets the angular factor of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:276</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a60cc1624fa5521dfcd05449e99a123d8\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">tram::PhysicsComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> physics.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a619f8a0efc2df26aaed1e5ef2e541b0a\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">tram::PhysicsComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdoc\">Sets the position of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:250</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a61fef009717a9e4724dee61359319094\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">tram::PhysicsComponent::GetVelocity</a></div><div class=\"ttdeci\">vec3 GetVelocity()</div><div class=\"ttdoc\">Returns the velocity of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:326</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a62ca80aadcd392cc94243f1a42d1b06e\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">tram::PhysicsComponent::SetCollisionGroup</a></div><div class=\"ttdeci\">void SetCollisionGroup(uint32_t flags)</div><div class=\"ttdoc\">Sets the collision group of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:125</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a6d048406bb6f934d3167d046cf23d42a\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">tram::PhysicsComponent::GetCollisionMask</a></div><div class=\"ttdeci\">uint32_t GetCollisionMask()</div><div class=\"ttdoc\">Returns the collision mask.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a79d8c1c7d1a2df6937ac901532c880b2\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">tram::PhysicsComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a80d73825a4421015c00f3fe968b6b090\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">tram::PhysicsComponent::SetKinematic</a></div><div class=\"ttdeci\">void SetKinematic(bool kinematic)</div><div class=\"ttdoc\">Sets the physics object to kinematic.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:225</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a8570e4138cdd40ea3547017f2fff1394\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">tram::PhysicsComponent::SetVelocity</a></div><div class=\"ttdeci\">void SetVelocity(const vec3 &amp;velocity)</div><div class=\"ttdoc\">Sets the velocity of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:310</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_a8901baef618e56f57553d613bc8af2cc\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">tram::PhysicsComponent::Sleep</a></div><div class=\"ttdeci\">void Sleep()</div><div class=\"ttdoc\">Puts the object to sleep.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:193</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_aa05aa42d0ba5486d18a5c6951c2dcf7a\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">tram::PhysicsComponent::Awaken</a></div><div class=\"ttdeci\">void Awaken()</div><div class=\"ttdoc\">Awakens the object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:183</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_aa0797c00f3d5e3a0ccb35da8b3ac42b2\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">tram::PhysicsComponent::GetCollisionGroup</a></div><div class=\"ttdeci\">uint32_t GetCollisionGroup()</div><div class=\"ttdoc\">Returns the collision group.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_aa352025ec22ad95c90b1b4055eaca758\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">tram::PhysicsComponent::SetDebugDrawing</a></div><div class=\"ttdeci\">void SetDebugDrawing(bool drawing)</div><div class=\"ttdoc\">Sets the debug drawing of a physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:205</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_aaf3bcc38317375d73fd6b7b426aaedc2\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">tram::PhysicsComponent::SetLinearFactor</a></div><div class=\"ttdeci\">void SetLinearFactor(vec3 factor)</div><div class=\"ttdoc\">Sets the angular factor of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:288</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_acad64c1b68c2f78fa2febef09e8f393a\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">tram::PhysicsComponent::DisableDeactivation</a></div><div class=\"ttdeci\">void DisableDeactivation()</div><div class=\"ttdoc\">Disables deactivation of the object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:299</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_acceb6cafd1dd8635ed56ec71a1c61f85\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">tram::PhysicsComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(name_t model)</div><div class=\"ttdoc\">Sets the collision model.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_ae2431ad05061b3ead05fc896aa78fa8b\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">tram::PhysicsComponent::SetMass</a></div><div class=\"ttdeci\">void SetMass(float mass)</div><div class=\"ttdoc\">Sets the mass of the physics object.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:144</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_ae945e9f6b3d40e2fd3764a6f9ccd8f3d\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">tram::PhysicsComponent::PhysicsComponent</a></div><div class=\"ttdeci\">PhysicsComponent()</div><div class=\"ttdef\"><b>Definition:</b> physics.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html_af9c6e58635ec55d523a23a0f70f8216d\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">tram::PhysicsComponent::GetModel</a></div><div class=\"ttdeci\">name_t GetModel()</div><div class=\"ttdoc\">Returns the name of the collision model.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"acollisionmodel_8h_html\"><div class=\"ttname\"><a href=\"collisionmodel_8h.html\">collisionmodel.h</a></div></div>\n<div class=\"ttc\" id=\"acollisionshape_8h_html\"><div class=\"ttname\"><a href=\"collisionshape_8h.html\">collisionshape.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdoc\">Shape for a collider.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2player_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/player.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">player.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2player_8h_source.html\">components/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2player_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/player.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">player.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2player_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>.  <a href=\"classtram_1_1_player_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2player_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/player.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">player.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2player_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"ui_8h.html\">framework/ui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"event_8h.html\">framework/event.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"controller_8h.html\">components/controller.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"logging_8h.html\">framework/logging.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"comment\">// this is for holding</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\">// re: for holding what??</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\">// TODO: find out</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"message_8h.html\">framework/message.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player_component.html\">   22</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">EventHandler</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">PlayerComponent</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">~PlayerComponent</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">   28</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">SetControllerComponent</a> (<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>* comp) { controller = comp; }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">   29</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">Start</a>() {}</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">SetNoclip</a>(<span class=\"keywordtype\">bool</span> value);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">SetKeyboardLook</a>(<span class=\"keywordtype\">bool</span> value);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">   33</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">GetLookRotation</a>() { <span class=\"keywordflow\">return</span> look_rotation; }</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">   34</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">GetDirectionFacing</a>() { <span class=\"keywordflow\">return</span> direction_facing; }</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <a class=\"code hl_class\" href=\"classtram_1_1_event_listener.html\">EventListener</a> keydown;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <a class=\"code hl_class\" href=\"classtram_1_1_event_listener.html\">EventListener</a> keypress;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <a class=\"code hl_class\" href=\"classtram_1_1_event_listener.html\">EventListener</a> mouseposition;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> look_rotation = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction_facing = {0.0f, 0.0f, -1.0f};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">bool</span> noclipping = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">bool</span> keyboard_look = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keywordtype\">void</span> UpdateLook();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    ControllerComponent* controller = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>};</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>}</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></div><div class=\"ttdoc\">Provides an API for character controllers.</div><div class=\"ttdef\"><b>Definition:</b> controller.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></div><div class=\"ttdoc\">Smart wrapper class for Event listeners.</div><div class=\"ttdef\"><b>Definition:</b> event.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html\">tram::PlayerComponent</a></div><div class=\"ttdoc\">Translates keyboard/mouse inputs into inputs for ControllerComponent.</div><div class=\"ttdef\"><b>Definition:</b> player.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_a521c6d15a3a7feb9d6f03fb08e7da7e0\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">tram::PlayerComponent::GetDirectionFacing</a></div><div class=\"ttdeci\">vec3 GetDirectionFacing()</div><div class=\"ttdef\"><b>Definition:</b> player.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_a6cf70a77be2388b6062f19b3fa16b1f1\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">tram::PlayerComponent::~PlayerComponent</a></div><div class=\"ttdeci\">~PlayerComponent()</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_a7880e2d2d99db2ebfed2115f3682c4c8\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">tram::PlayerComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_a8487102a9cb10c8c9b59e4aa8c0d4c56\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">tram::PlayerComponent::SetControllerComponent</a></div><div class=\"ttdeci\">void SetControllerComponent(ControllerComponent *comp)</div><div class=\"ttdef\"><b>Definition:</b> player.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_a9a1e25c0111518b35070974b80a1ce7d\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">tram::PlayerComponent::SetNoclip</a></div><div class=\"ttdeci\">void SetNoclip(bool value)</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_aa8a009699e5fd349e952284665e1d1c3\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">tram::PlayerComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> player.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_ab188c1286058f995a0260cc488d32daa\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">tram::PlayerComponent::SetKeyboardLook</a></div><div class=\"ttdeci\">void SetKeyboardLook(bool value)</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_adcba02c6226d985aece150ce291830f6\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">tram::PlayerComponent::GetLookRotation</a></div><div class=\"ttdeci\">quat GetLookRotation()</div><div class=\"ttdef\"><b>Definition:</b> player.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_ae5e66423537fa62170701cbf69c2882f\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">tram::PlayerComponent::PlayerComponent</a></div><div class=\"ttdeci\">PlayerComponent()</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_component_html_afcbc45d601e912238fbe419681db88dd\"><div class=\"ttname\"><a href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">tram::PlayerComponent::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes an entity component.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:29</div></div>\n<div class=\"ttc\" id=\"acontroller_8h_html\"><div class=\"ttname\"><a href=\"controller_8h.html\">controller.h</a></div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aevent_8h_html\"><div class=\"ttname\"><a href=\"event_8h.html\">event.h</a></div></div>\n<div class=\"ttc\" id=\"alogging_8h_html\"><div class=\"ttname\"><a href=\"logging_8h.html\">logging.h</a></div></div>\n<div class=\"ttc\" id=\"amessage_8h_html\"><div class=\"ttname\"><a href=\"message_8h.html\">message.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"aui_8h_html\"><div class=\"ttname\"><a href=\"ui_8h.html\">ui.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2render_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/render.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">render.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2render_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/render.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">render.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2render_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Renders a Model.  <a href=\"classtram_1_1_render_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2render_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/render.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">render.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2render_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"model_8h.html\">render/model.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">class </span>AnimationComponent;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html\">   12</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">RenderComponent</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">~RenderComponent</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">   16</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Render::Model</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">GetModel</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">model</a>.get(); }</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">   18</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">GetLightmap</a>() { <span class=\"keywordflow\">return</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">lightmap</a>.get() == <span class=\"keyword\">nullptr</span>) ? 0 : <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">lightmap</a>-&gt;GetName();};</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">SetModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">SetLightmap</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">SetEnvironmentMap</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Render::Material</a>* material);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">SetArmature</a>(<a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* armature);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">   27</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">GetLocation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">location</a>; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">   28</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">GetRotation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">rotation</a>; }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">   29</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">GetScale</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a>; }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> nrotation);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">SetScale</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a>);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">SetColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">color</a>);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">SetLayer</a>(uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">layer</a>);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">SetTextureOffset</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> material, <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> offset);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">SetDirectionaLight</a>(<span class=\"keywordtype\">bool</span> enabled);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">SetRenderDebug</a>(<span class=\"keywordtype\">bool</span> enabled);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">   41</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) { <span class=\"keywordflow\">return</span>; }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">InsertDrawListEntries</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">RefreshAABB</a>();</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">   46</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Model&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">model</a>;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">   47</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Material&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">lightmap</a>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">   48</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Material&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">environmentmap</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">   50</a></span>    std::vector&lt;Render::drawlistentry_t&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">draw_list_entries</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">   52</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Render::Pose</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">pose</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">   54</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">   55</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">   56</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">scale</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">   57</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">color</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">   58</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">layer</a> = 0;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">   60</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">aabb_tree_leaf</a> = 0;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">   62</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">render_flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>};</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>}</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></div><div class=\"ttdoc\">Plays back Animations.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></div><div class=\"ttdoc\">Material resource.</div><div class=\"ttdef\"><b>Definition:</b> material.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></div><div class=\"ttdoc\">Renders a Model.</div><div class=\"ttdef\"><b>Definition:</b> render.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a18fa5b9e63b9ef19051e0c705a19e46e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">tram::RenderComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> render.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a3802d623d0009f2649888be1a23dfba4\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">tram::RenderComponent::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> render.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a3eb6d145b4258093f8fcd1487edf2874\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">tram::RenderComponent::SetLightmap</a></div><div class=\"ttdeci\">void SetLightmap(name_t name)</div><div class=\"ttdoc\">Sets the lightmap for the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a3f3ff752d0389444e9450d9d3c27ac2b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">tram::RenderComponent::model</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Model &gt; model</div><div class=\"ttdef\"><b>Definition:</b> render.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a473efffe2b970de9b84d7c55c7e22f72\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">tram::RenderComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> render.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a49a2e872ecfb59e33f5ab7974b01c13f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">tram::RenderComponent::render_flags</a></div><div class=\"ttdeci\">uint32_t render_flags</div><div class=\"ttdef\"><b>Definition:</b> render.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a51f449b6197db27708cbd4ebfb6ed433\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">tram::RenderComponent::RefreshAABB</a></div><div class=\"ttdeci\">void RefreshAABB()</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:277</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a593b1a595fd07f68a4c4aa3fdfeb33c4\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">tram::RenderComponent::draw_list_entries</a></div><div class=\"ttdeci\">std::vector&lt; Render::drawlistentry_t &gt; draw_list_entries</div><div class=\"ttdef\"><b>Definition:</b> render.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a5957906efb717b5596b1c6f12fbe6ded\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">tram::RenderComponent::SetRenderDebug</a></div><div class=\"ttdeci\">void SetRenderDebug(bool enabled)</div><div class=\"ttdoc\">Sets render debugging.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:142</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a5feee4df39aba6a4652817159cc5d4c8\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">tram::RenderComponent::GetLightmap</a></div><div class=\"ttdeci\">name_t GetLightmap()</div><div class=\"ttdef\"><b>Definition:</b> render.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a6f3130e436973f3e9f9f949e642df68d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">tram::RenderComponent::SetDirectionaLight</a></div><div class=\"ttdeci\">void SetDirectionaLight(bool enabled)</div><div class=\"ttdoc\">Sets the world parameters for model rendering.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:123</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a743ccc0b2357cec2f80a4db1f5dc301c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">tram::RenderComponent::GetModel</a></div><div class=\"ttdeci\">Render::Model * GetModel()</div><div class=\"ttdef\"><b>Definition:</b> render.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a7d0c1122a6e9b85ccd68fb5b2a3b2914\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">tram::RenderComponent::lightmap</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Material &gt; lightmap</div><div class=\"ttdef\"><b>Definition:</b> render.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a81729832968e5f5656d3b230cd0f66fd\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">tram::RenderComponent::SetEnvironmentMap</a></div><div class=\"ttdeci\">void SetEnvironmentMap(Render::Material *material)</div><div class=\"ttdoc\">Sets the environment map for the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a81f2ac27fa4516443e6a11f3371736d4\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">tram::RenderComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 nlocation)</div><div class=\"ttdoc\">Sets the location of the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:159</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a82831dd25d49e53768209fe6b22ec736\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">tram::RenderComponent::GetScale</a></div><div class=\"ttdeci\">vec3 GetScale() const</div><div class=\"ttdef\"><b>Definition:</b> render.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a8c087151758ef3a7210c7a8c8f8607dd\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">tram::RenderComponent::~RenderComponent</a></div><div class=\"ttdeci\">~RenderComponent()</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a97f294652a7627376510082ca4935490\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">tram::RenderComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:260</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_a9af00bf62b86a65cfecda4579cea9081\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">tram::RenderComponent::layer</a></div><div class=\"ttdeci\">uint32_t layer</div><div class=\"ttdef\"><b>Definition:</b> render.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_aa32cca5b26feda97cbbed341d6633285\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">tram::RenderComponent::RenderComponent</a></div><div class=\"ttdeci\">RenderComponent()</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_aae0ec9b022b64f9cfc19885dc6eee2c1\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">tram::RenderComponent::InsertDrawListEntries</a></div><div class=\"ttdeci\">void InsertDrawListEntries()</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:285</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ab4769cf5994097dc687169595ceac02b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">tram::RenderComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(name_t name)</div><div class=\"ttdoc\">Set the model that the component will render.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ab662c48c42ac7423a1be25def0850aeb\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">tram::RenderComponent::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> render.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ab67dd56c013753efd5c8fa9866daab88\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">tram::RenderComponent::SetArmature</a></div><div class=\"ttdeci\">void SetArmature(AnimationComponent *armature)</div><div class=\"ttdoc\">Links an AnimationComponent.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:88</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_abb6747392d707e0dca643a0400adef75\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">tram::RenderComponent::GetRotation</a></div><div class=\"ttdeci\">quat GetRotation() const</div><div class=\"ttdef\"><b>Definition:</b> render.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ac1c0477f22ef04154367915c0294848b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">tram::RenderComponent::GetLocation</a></div><div class=\"ttdeci\">vec3 GetLocation() const</div><div class=\"ttdef\"><b>Definition:</b> render.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ac254a9ca5d3e3aaf19831ed8cba3da74\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">tram::RenderComponent::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat nrotation)</div><div class=\"ttdoc\">Sets the rotation of the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:180</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ad0cdc3be1acbe43f6fd315948c73611a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">tram::RenderComponent::SetTextureOffset</a></div><div class=\"ttdeci\">void SetTextureOffset(name_t material, vec4 offset)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:221</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ad4839670e65963fc3c247f01de60e8a3\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">tram::RenderComponent::SetScale</a></div><div class=\"ttdeci\">void SetScale(vec3 scale)</div><div class=\"ttdoc\">Sets the scale of the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:195</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ad7c9df8966b4b2e87c0afbb9b75fffdc\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">tram::RenderComponent::SetLayer</a></div><div class=\"ttdeci\">void SetLayer(uint32_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:209</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ae40a30e7729ab549faf072c9b0440ae5\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">tram::RenderComponent::aabb_tree_leaf</a></div><div class=\"ttdeci\">void * aabb_tree_leaf</div><div class=\"ttdef\"><b>Definition:</b> render.h:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_ae8e60fbf5d87ba817101190869396393\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">tram::RenderComponent::environmentmap</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Material &gt; environmentmap</div><div class=\"ttdef\"><b>Definition:</b> render.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_aeb591d2819300ff65ac05acfd171fe4c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">tram::RenderComponent::scale</a></div><div class=\"ttdeci\">vec3 scale</div><div class=\"ttdef\"><b>Definition:</b> render.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_af17bf80e41504736aafbed51e68777cb\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">tram::RenderComponent::SetColor</a></div><div class=\"ttdeci\">void SetColor(vec3 color)</div><div class=\"ttdoc\">Sets the scale of the model.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:242</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html_affc6cba67cad84483c2dd69ba952a7f3\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">tram::RenderComponent::pose</a></div><div class=\"ttdeci\">Render::Pose * pose</div><div class=\"ttdef\"><b>Definition:</b> render.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"amodel_8h_html\"><div class=\"ttname\"><a href=\"model_8h.html\">model.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2sprite_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/sprite.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2sprite_8h_source.html\">components/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2sprite_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/sprite.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n</div>\n<p><a href=\"components_2sprite_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides amusing graphical effects.  <a href=\"classtram_1_1_sprite_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2sprite_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/sprite.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sprite.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2sprite_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2sprite_8h.html\">render/sprite.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">   13</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">SpriteComponent</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>(this){}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">~SpriteComponent</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">   15</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">GetSprite</a>(){ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>-&gt;GetName(); }</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">   17</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">SetSprite</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>){</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>        this-&gt;sprite = <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">Play</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">Pause</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">SetPlaySpeed</a>(<span class=\"keywordtype\">size_t</span> speed);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">   33</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">UpdateLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation){</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">location</a> = nlocation;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    }</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">   38</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){<span class=\"keywordflow\">return</span>;}</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">   41</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Sprite&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">   43</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">location</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">   45</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">anim_frame</a> = 0;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">   46</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">anim_speed</a> = 0;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">   47</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">anim_bframe</a> = 0;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">   48</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">anim_isplaying</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">   50</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">draw_list_entry</a> = {};</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">   51</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">vertex_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">   52</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1spritearray__t.html\">Render::spritearray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">sprite_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>};</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>}</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html\">tram::SpriteComponent</a></div><div class=\"ttdoc\">Provides amusing graphical effects.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a067d3592ad5bfba2afba0b4a6a447ee8\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">tram::SpriteComponent::UpdateLocation</a></div><div class=\"ttdeci\">void UpdateLocation(vec3 nlocation)</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a0ebab8875f064f5119b9bd976fe7f117\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">tram::SpriteComponent::UpdateRenderListObject</a></div><div class=\"ttdeci\">void UpdateRenderListObject()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a2d21c7134a144caa924c0c76fdd44e9b\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">tram::SpriteComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a4fbf77711c216c8fcc0b3187708e10f9\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">tram::SpriteComponent::sprite_array</a></div><div class=\"ttdeci\">Render::spritearray_t sprite_array</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a567f7ce43923f04380bc6a04d8f4b5a2\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">tram::SpriteComponent::SetSprite</a></div><div class=\"ttdeci\">void SetSprite(Render::Sprite *sprite)</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a60f9208d310ee25c0ae44d212b23a88c\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">tram::SpriteComponent::anim_bframe</a></div><div class=\"ttdeci\">size_t anim_bframe</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a620c3aef918cd8570932341099d5d7c4\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">tram::SpriteComponent::sprite</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Sprite &gt; sprite</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a69fa78a5255a802e1975ce0a4eea868f\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">tram::SpriteComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a83f36a6e77225ccb7fd60f0f70f78972\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">tram::SpriteComponent::Pause</a></div><div class=\"ttdeci\">void Pause()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a8755153a58b06a785cd393fb23252b3c\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">tram::SpriteComponent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a88b7103d26803ae5ea1315648ef813e1\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">tram::SpriteComponent::anim_frame</a></div><div class=\"ttdeci\">size_t anim_frame</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a8a8fe6d5647764bf064a432ec26f59e4\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">tram::SpriteComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_a94e1866fddd8e554075eb49016f924bf\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">tram::SpriteComponent::anim_speed</a></div><div class=\"ttdeci\">size_t anim_speed</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_ab8df644a8df43af1ffdf9de7ce156ac8\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">tram::SpriteComponent::draw_list_entry</a></div><div class=\"ttdeci\">Render::drawlistentry_t draw_list_entry</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_ac1a001371822ddc0a285e0741ea2bdb4\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">tram::SpriteComponent::SpriteComponent</a></div><div class=\"ttdeci\">SpriteComponent()</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_ac3af9ed8e95feb7d735398fbdd5eb4d2\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">tram::SpriteComponent::~SpriteComponent</a></div><div class=\"ttdeci\">~SpriteComponent()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_af3bb6eacd3c918f5c227840bcea5f4e1\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">tram::SpriteComponent::Play</a></div><div class=\"ttdeci\">void Play()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_af50cea976158bc2472c9df7cee551157\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">tram::SpriteComponent::anim_isplaying</a></div><div class=\"ttdeci\">bool anim_isplaying</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_af67c5b9890fa7c815e53e39927db6c81\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">tram::SpriteComponent::SetPlaySpeed</a></div><div class=\"ttdeci\">void SetPlaySpeed(size_t speed)</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_af8e1293692c40c7817c7f7523c2d2ef7\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">tram::SpriteComponent::vertex_array</a></div><div class=\"ttdeci\">Render::vertexarray_t vertex_array</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sprite_component_html_afe9a51092931932104237e352f15267f\"><div class=\"ttname\"><a href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">tram::SpriteComponent::GetSprite</a></div><div class=\"ttdeci\">name_t GetSprite()</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arender_2sprite_8h_html\"><div class=\"ttname\"><a href=\"render_2sprite_8h.html\">sprite.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:149</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1spritearray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:135</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2trigger_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2trigger_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"components_2trigger_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper.  <a href=\"classtram_1_1_trigger_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a0ec6f1beb2db1148bf277a12019a7ac0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">tram::collision_callback</a>) (TriggerComponent *, Physics::Collision)</td></tr>\n<tr class=\"separator:a0ec6f1beb2db1148bf277a12019a7ac0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ffbf64ab17d509c8a5dc283f437a5b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">tram::filter_callback</a>) (TriggerComponent *, PhysicsComponent *)</td></tr>\n<tr class=\"separator:a2ffbf64ab17d509c8a5dc283f437a5b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/components_2trigger_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">trigger.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"components_2trigger_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2physics_8h.html\">components/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>TriggerComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">   15</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">   16</a></span><span class=\"keyword\">typedef</span> bool (*<a class=\"code hl_typedef\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>*);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html\">   18</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">   20</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">TriggerComponent</a>() : model(this){}</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">~TriggerComponent</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">   25</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a>* <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">GetModel</a>() { <span class=\"keywordflow\">return</span> model.get(); }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">   26</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">SetModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> model) { this-&gt;model = <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">Physics::CollisionModel::Find</a>(model); }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9\">   27</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9\">SetModel</a>(<a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_collision_model.html\">Physics::CollisionModel</a>* model) { this-&gt;model = model; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">SetShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a> shape);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">   30</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">SetActivationCallback</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> activation) { this-&gt;activation = activation; }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">   31</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">SetDectivationCallback</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> deactivation) { this-&gt;deactivation = deactivation; }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">   32</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">SetFilterCallback</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a> filter) { this-&gt;filter = filter; }</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">SetCollisionMask</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">SetCollisionGroup</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">   37</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">SetStoreCollisions</a>(<span class=\"keywordtype\">bool</span> store_collisions) { this-&gt;store_collisions = store_collisions; }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">   39</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">GetCollisionMask</a>() { <span class=\"keywordflow\">return</span> collisionMask; }</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">   40</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">GetCollisionGroup</a>() { <span class=\"keywordflow\">return</span> collisionGroup; }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">   45</a></span>    <span class=\"keyword\">const</span> std::vector&lt;Physics::Collision&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">GetStoredCollisions</a>() { <span class=\"keywordflow\">return</span> stored_collisions; }</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"comment\">// why are these not private/protected?</span></div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"comment\">// TODO: fix</span></div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">Collision</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>&amp; collision);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">ResetCollisions</a>();</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    std::vector&lt;Physics::Collision&gt; <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">Poll</a>();</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Physics::CollisionModel&gt;</a> model;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"comment\">// TODO: why camelCase?</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    uint32_t collisionMask = -1;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    uint32_t collisionGroup = -1;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"comment\">// TODO: change to {} initialization?</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">Physics::collisionshape_t</a> shape = {<span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    Physics::trigger_t trigger = {<span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> activation = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a> deactivation = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a> filter = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keywordtype\">bool</span> store_collisions = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    std::vector&lt;std::pair&lt;uint32_t, Physics::Collision&gt;&gt; active_collisions;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    std::vector&lt;Physics::Collision&gt; stored_collisions;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>};</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>}</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html\">tram::Physics::CollisionModel</a></div><div class=\"ttdoc\">Physics CollisionShape model.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_af125ec91786a3422e236709fb2ee72da\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">tram::Physics::CollisionModel::Find</a></div><div class=\"ttdeci\">static CollisionModel * Find(name_t model_name)</div><div class=\"ttdoc\">Finds a model.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.cpp:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdoc\">Rigidbody wrapper.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></div><div class=\"ttdoc\">Trigger wrapper.</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a04476746aae520a06b1ec9fe65c0a5a0\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">tram::TriggerComponent::GetCollisionMask</a></div><div class=\"ttdeci\">uint32_t GetCollisionMask()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a0fcaae81162184053fc3354de8fae8cc\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">tram::TriggerComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdoc\">Sets the location of the component.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a1576403ad5e3fe824e53453660ba90c5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">tram::TriggerComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a1c35e8061d5dc72e113fa4fc52f875fc\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">tram::TriggerComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(name_t model)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a5810d82217bbf1ba29a40beca70ce30d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">tram::TriggerComponent::SetDectivationCallback</a></div><div class=\"ttdeci\">void SetDectivationCallback(collision_callback deactivation)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a62a3322c918a0cf7b2793b94b1144059\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">tram::TriggerComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a646ebe8013bad9a91574d603995847b5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">tram::TriggerComponent::SetStoreCollisions</a></div><div class=\"ttdeci\">void SetStoreCollisions(bool store_collisions)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a78db310fadbc1c2c572fa7e7deaf93c8\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">tram::TriggerComponent::ResetCollisions</a></div><div class=\"ttdeci\">void ResetCollisions()</div><div class=\"ttdoc\">Resets registered collisions.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:126</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a924939c39095e5cf7444b00578423e75\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">tram::TriggerComponent::SetCollisionGroup</a></div><div class=\"ttdeci\">void SetCollisionGroup(uint32_t flags)</div><div class=\"ttdoc\">Sets a collision group for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a93405806332d5309d8ab674c072d2461\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">tram::TriggerComponent::GetCollisionGroup</a></div><div class=\"ttdeci\">uint32_t GetCollisionGroup()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a9fa2ed0795ec0f93390762bc849c8012\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">tram::TriggerComponent::~TriggerComponent</a></div><div class=\"ttdeci\">~TriggerComponent()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_aaa9f40c6c3afaddd4657b6a2e5ea35e4\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">tram::TriggerComponent::SetCollisionMask</a></div><div class=\"ttdeci\">void SetCollisionMask(uint32_t flags)</div><div class=\"ttdoc\">Sets a collision mask for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_aac9479cb3992294f494eefba8061ad1d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">tram::TriggerComponent::GetModel</a></div><div class=\"ttdeci\">Physics::CollisionModel * GetModel()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ac4d9c4e43a0e75b00ec6de674c9b7bc5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">tram::TriggerComponent::SetFilterCallback</a></div><div class=\"ttdeci\">void SetFilterCallback(filter_callback filter)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_acb29106d21d1cf02169a58c1c82c86a3\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">tram::TriggerComponent::TriggerComponent</a></div><div class=\"ttdeci\">TriggerComponent()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ad30c23103020b9c9144d21835793f892\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">tram::TriggerComponent::SetActivationCallback</a></div><div class=\"ttdeci\">void SetActivationCallback(collision_callback activation)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ad3b53b1d861f09301a7d6dfb34fb667d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">tram::TriggerComponent::Collision</a></div><div class=\"ttdeci\">void Collision(const Physics::Collision &amp;collision)</div><div class=\"ttdoc\">Registers a collision.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ae6374eae5d6d91477a7abadc14a19b20\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">tram::TriggerComponent::Poll</a></div><div class=\"ttdeci\">std::vector&lt; Physics::Collision &gt; Poll()</div><div class=\"ttdoc\">Checks for collisions with the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:145</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ae965164c2483a255585e9998abe87df9\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9\">tram::TriggerComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(Physics::CollisionModel *model)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_af69d3a60b12eebbbdec84c83b049941e\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">tram::TriggerComponent::SetShape</a></div><div class=\"ttdeci\">void SetShape(Physics::CollisionShape shape)</div><div class=\"ttdoc\">Sets a collision shape for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_af88fca014f6f9615930c02f82ae00db3\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">tram::TriggerComponent::GetStoredCollisions</a></div><div class=\"ttdeci\">const std::vector&lt; Physics::Collision &gt; &amp; GetStoredCollisions()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_afa86224935cc08c00224dc774da9c71d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">tram::TriggerComponent::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat rotation)</div><div class=\"ttdoc\">Sets the rotation of the component.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:88</div></div>\n<div class=\"ttc\" id=\"acomponents_2physics_8h_html\"><div class=\"ttname\"><a href=\"components_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a0ec6f1beb2db1148bf277a12019a7ac0\"><div class=\"ttname\"><a href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">tram::collision_callback</a></div><div class=\"ttdeci\">void(* collision_callback)(TriggerComponent *, Physics::Collision)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2ffbf64ab17d509c8a5dc283f437a5b7\"><div class=\"ttname\"><a href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">tram::filter_callback</a></div><div class=\"ttdeci\">bool(* filter_callback)(TriggerComponent *, PhysicsComponent *)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></div><div class=\"ttdoc\">Physics collision data.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdoc\">Shape for a collider.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/config_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/config.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">config.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"config_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a917f372f74717cd689223239e73f0ec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">tram::MAX_MATERIAL_TYPES</a> = 20</td></tr>\n<tr class=\"separator:a917f372f74717cd689223239e73f0ec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bc148b33d35076ac28624e78c06e32f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">tram::MAX_VERTEX_FORMATS</a> = 20</td></tr>\n<tr class=\"separator:a7bc148b33d35076ac28624e78c06e32f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb3f21bc4e94ced5691b7a802ce417e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">tram::MAX_VERTEX_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:aeb3f21bc4e94ced5691b7a802ce417e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5209551801f3515acbdabc46e957f45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">tram::MAX_FRAGMENT_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:ac5209551801f3515acbdabc46e957f45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d768de9b8d7f850907e74b15f654ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">tram::MAX_LINKED_SHADERS</a> = 40</td></tr>\n<tr class=\"separator:af6d768de9b8d7f850907e74b15f654ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a675b9496ee55fb465aa5d4972b45bac7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">tram::TICK_RATE</a> = 1.0f / 60.0f</td></tr>\n<tr class=\"separator:a675b9496ee55fb465aa5d4972b45bac7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26aea911deb4f2a882fecaa9db2cca5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">tram::CAMERA_MULTIPLIER</a> = 1.0f / 8.0f</td></tr>\n<tr class=\"separator:a26aea911deb4f2a882fecaa9db2cca5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee70318c6bcb6ab23a4c627b40ffc247\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">tram::PHYSICS_GROUND_PLANE</a> = -9.0f</td></tr>\n<tr class=\"separator:aee70318c6bcb6ab23a4c627b40ffc247\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62a53097647f52336381e7470fb2abe5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">tram::PHYSICS_GRAVITY</a> = -9.8f</td></tr>\n<tr class=\"separator:a62a53097647f52336381e7470fb2abe5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4057f0499e008e4ce99545c3d38f1ddf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">tram::RESOURCE_LIMIT_SOUND</a> = 100</td></tr>\n<tr class=\"separator:a4057f0499e008e4ce99545c3d38f1ddf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a824fea7217919eb6958e08a8bbab50d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">tram::RESOURCE_LIMIT_MODEL</a> = 100</td></tr>\n<tr class=\"separator:a824fea7217919eb6958e08a8bbab50d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaffd4a95c2adf2e132260b84190ca660\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">tram::RESOURCE_LIMIT_PATH</a> = 100</td></tr>\n<tr class=\"separator:aaffd4a95c2adf2e132260b84190ca660\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09905cc9b5568b71843490d4d6ce5fc3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">tram::RESOURCE_LIMIT_COLLISION_MODEL</a> = 500</td></tr>\n<tr class=\"separator:a09905cc9b5568b71843490d4d6ce5fc3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a204e0f9d92f93902f454380c35b33c49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">tram::RESOURCE_LIMIT_MATERIAL</a> = 500</td></tr>\n<tr class=\"separator:a204e0f9d92f93902f454380c35b33c49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2e37d16ae78faab3eb2d8140fcd8b5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">tram::RESOURCE_LIMIT_SPRITE</a> = 500</td></tr>\n<tr class=\"separator:ad2e37d16ae78faab3eb2d8140fcd8b5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfe37808bb06b05bc9596bc3242e95ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">tram::RESOURCE_LIMIT_LIGHT_GRAPH</a> = 250</td></tr>\n<tr class=\"separator:acfe37808bb06b05bc9596bc3242e95ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a899ede00065e962b5ca2528841e45aa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">tram::RESOURCE_LIMIT_SOUND_GRAPH</a> = 250</td></tr>\n<tr class=\"separator:a899ede00065e962b5ca2528841e45aa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefb7b9aa5163a6725fc02bde6672b88f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">tram::COMPONENT_LIMIT_ANIMATION</a> = 50</td></tr>\n<tr class=\"separator:aefb7b9aa5163a6725fc02bde6672b88f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7db4cca9ab5ecae0d8d4de7effd6aec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">tram::COMPONENT_LIMIT_AUDIO</a> = 150</td></tr>\n<tr class=\"separator:a7db4cca9ab5ecae0d8d4de7effd6aec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66281a5ccd6da73b86dd9a2ba49585a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">tram::COMPONENT_LIMIT_CONTROLLER</a> = 25</td></tr>\n<tr class=\"separator:a66281a5ccd6da73b86dd9a2ba49585a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0351a7a038c0c51bf2e41a37bb54702c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">tram::COMPONENT_LIMIT_LIGHT</a> = 250</td></tr>\n<tr class=\"separator:a0351a7a038c0c51bf2e41a37bb54702c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ef1096144023efed74009fd55ff4668\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">tram::COMPONENT_LIMIT_PARTICLE</a> = 100</td></tr>\n<tr class=\"separator:a1ef1096144023efed74009fd55ff4668\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef0b54c575d166021a519456e745e5a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">tram::COMPONENT_LIMIT_PHYSICS</a> = 500</td></tr>\n<tr class=\"separator:aef0b54c575d166021a519456e745e5a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d062bfaaf077ec23a49b1e932f27b6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">tram::COMPONENT_LIMIT_PLAYER</a> = 5</td></tr>\n<tr class=\"separator:a8d062bfaaf077ec23a49b1e932f27b6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdf2b176e856c8c025e6c5a05b376f2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">tram::COMPONENT_LIMIT_RENDER</a> = 1000</td></tr>\n<tr class=\"separator:afdf2b176e856c8c025e6c5a05b376f2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5099d59ad2cf7be3d5f16024f0a1443d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">tram::COMPONENT_LIMIT_SPRITE</a> = 100</td></tr>\n<tr class=\"separator:a5099d59ad2cf7be3d5f16024f0a1443d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38c17cf408e9c052cf6e8250250ef68f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">tram::COMPONENT_LIMIT_DECAL</a> = 100</td></tr>\n<tr class=\"separator:a38c17cf408e9c052cf6e8250250ef68f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf691e9b98162d05d0b235cf0f3d9387\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">tram::COMPONENT_LIMIT_TRIGGER</a> = 50</td></tr>\n<tr class=\"separator:abf691e9b98162d05d0b235cf0f3d9387\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c8eb191637ec58035b98bc8a3dc7955\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">tram::PATH_LIMIT</a> = 200</td></tr>\n<tr class=\"separator:a4c8eb191637ec58035b98bc8a3dc7955\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4a96a9b06c171a66beb3fe0066ac6b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">tram::SYSTEM_LIMIT</a> = 128</td></tr>\n<tr class=\"separator:aa4a96a9b06c171a66beb3fe0066ac6b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afde783f76b29484fca014a71379688da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">tram::SCRIPTABLE_ENTITY_TYPE_LIMIT</a> = 50</td></tr>\n<tr class=\"separator:afde783f76b29484fca014a71379688da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3d5c2a5f250a9d674df10bdfa5904d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">tram::ENTITY_TYPE_LIMIT</a> = 50</td></tr>\n<tr class=\"separator:aa3d5c2a5f250a9d674df10bdfa5904d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae549eb9876cd460a36ec048cd029af97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">tram::RESOURCE_LOADER_QUEUE_LIMIT</a> = 1000</td></tr>\n<tr class=\"separator:ae549eb9876cd460a36ec048cd029af97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35b3cdfbe899c26e6da0068331ef4a03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">tram::RESOURCE_LOADER_REQUEST_LIMIT</a> = 1750</td></tr>\n<tr class=\"separator:a35b3cdfbe899c26e6da0068331ef4a03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ddcd411f4af0e1052aa1c3341eb7e4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">tram::ENTITY_LIMIT</a> = 5000</td></tr>\n<tr class=\"separator:a0ddcd411f4af0e1052aa1c3341eb7e4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746e6432794113f984198f336d8cce65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">tram::NAMED_ENTITY_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a746e6432794113f984198f336d8cce65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94cfdaa4232d3dde886253c4eafcd4e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">tram::LANUGAGE_STRING_CHARACTER_LIMIT</a> = 10000</td></tr>\n<tr class=\"separator:a94cfdaa4232d3dde886253c4eafcd4e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac465c542500fdf2dc7483c0d15896d8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">tram::LANGUAGE_STRING_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:ac465c542500fdf2dc7483c0d15896d8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13df257c04982a0237aed3b1d1a18388\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">tram::MESSAGE_QUEUE_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a13df257c04982a0237aed3b1d1a18388\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b1778620231829d63a83b6c451b60c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">tram::MESSAGE_PRIORITY_QUEUE_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:a2b1778620231829d63a83b6c451b60c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e23af0f990c870da7822e6160160173\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">tram::MESSAGE_DATA_LIMIT</a> = 2000</td></tr>\n<tr class=\"separator:a3e23af0f990c870da7822e6160160173\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5765d4ac76416672f8f55e6e4e48b9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">tram::MESSAGE_TYPE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:ac5765d4ac76416672f8f55e6e4e48b9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9773c849e7f41480842e5cd1d8d4de73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">tram::SIGNAL_TYPE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a9773c849e7f41480842e5cd1d8d4de73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1423ecbdc7b2879d47ac484d812fda50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">tram::WORLDCELL_TRANSITION_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:a1423ecbdc7b2879d47ac484d812fda50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c062f0c7a0634e170676191a5fc33ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">tram::KEYBOARDACTION_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a7c062f0c7a0634e170676191a5fc33ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd586f202b2593831d3d48a18eb15776\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">tram::UID_CHARACTER_LIMIT</a> = 20000</td></tr>\n<tr class=\"separator:abd586f202b2593831d3d48a18eb15776\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8599d00d63ed9f6ee3eecb0c0b136b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">tram::UID_LIMIT</a> = 2000</td></tr>\n<tr class=\"separator:af8599d00d63ed9f6ee3eecb0c0b136b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab751286624cca492c1abca52f7e0be8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">tram::WORLDCELL_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:ab751286624cca492c1abca52f7e0be8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95ef9ff7b7e26c1f357c10707720163a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">tram::RIGIDBODY_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a95ef9ff7b7e26c1f357c10707720163a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1919b7d31f90785f9b208acbdeb8576\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">tram::EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:af1919b7d31f90785f9b208acbdeb8576\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16fcee576d8ededdde2fb49658013315\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">tram::EXT_KITCHENSINK_SOUNDTABLE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a16fcee576d8ededdde2fb49658013315\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/config_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/config.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">config.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"config_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">// This is the configuration file for the library portion of the framework.</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">// If you change anything in here, you&#39;ll need to recompile everything.</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#ifndef TRAM_SDK_CONFIG_H</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#define TRAM_SDK_CONFIG_H</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">   13</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">MAX_MATERIAL_TYPES</a> = 20;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">   14</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">MAX_VERTEX_FORMATS</a> = 20;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">   16</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">MAX_VERTEX_SHADERS</a> = 20;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">   17</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">MAX_FRAGMENT_SHADERS</a> = 20;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">   18</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">MAX_LINKED_SHADERS</a> = 40;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">// Rate of fixed updates</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">   21</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">TICK_RATE</a> = 1.0f / 60.0f;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">// Initial first person camera sensitivity</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">   24</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">CAMERA_MULTIPLIER</a> = 1.0f / 8.0f;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"comment\">// |                                  PHYSICS                                  |</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">   32</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">PHYSICS_GROUND_PLANE</a> = -9.0f;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">   33</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">PHYSICS_GRAVITY</a> = -9.8f;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">// |                              RESOURCE LIMITS                              |</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">// These numbers determine how much memory will be allocated for each Resource</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">// type. </span></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">// Currently the Resource pools won&#39;t get automatically extended if they run out</span></div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">// of space, so essentially these numbers limit how many instances of a</span></div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">// Resource type it will be possible to create.</span></div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">   48</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">RESOURCE_LIMIT_SOUND</a> = 100;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">   49</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">RESOURCE_LIMIT_MODEL</a> = 100;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">   50</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">RESOURCE_LIMIT_PATH</a> = 100;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">   51</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">RESOURCE_LIMIT_COLLISION_MODEL</a> = 500;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">   52</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">RESOURCE_LIMIT_MATERIAL</a> = 500;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">   53</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">RESOURCE_LIMIT_SPRITE</a> = 500;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">   54</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">RESOURCE_LIMIT_LIGHT_GRAPH</a> = 250;    <span class=\"comment\">// same as worldcell limit</span></div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">   55</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">RESOURCE_LIMIT_SOUND_GRAPH</a> = 250;    <span class=\"comment\">// ditto</span></div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">// |                             COMPONENT LIMITS                              |</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">// Same as for Resources.</span></div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">   65</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">COMPONENT_LIMIT_ANIMATION</a> = 50;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">   66</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">COMPONENT_LIMIT_AUDIO</a> = 150;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">   67</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">COMPONENT_LIMIT_CONTROLLER</a> = 25;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">   68</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">COMPONENT_LIMIT_LIGHT</a> = 250;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">   69</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">COMPONENT_LIMIT_PARTICLE</a> = 100;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">   70</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">COMPONENT_LIMIT_PHYSICS</a> = 500;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">   71</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">COMPONENT_LIMIT_PLAYER</a> = 5;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">   72</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">COMPONENT_LIMIT_RENDER</a> = 1000;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">   73</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">COMPONENT_LIMIT_SPRITE</a> = 100;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">   74</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">COMPONENT_LIMIT_DECAL</a> = 100;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">   75</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">COMPONENT_LIMIT_TRIGGER</a> = 50;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">// |                               OTHER LIMITS                                |</span></div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"comment\">// Limit for file path length, e.g. &quot;data/textures/material001.png&quot;</span></div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">   84</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">PATH_LIMIT</a> = 200;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"comment\">// Limit for system count</span></div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">   87</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">SYSTEM_LIMIT</a> = 128;</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"comment\">// Limit for scriptable entity types</span></div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">   90</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">SCRIPTABLE_ENTITY_TYPE_LIMIT</a> = 50;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"comment\">// Limit for all entity types</span></div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">   93</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">ENTITY_TYPE_LIMIT</a> = 50;</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"comment\">// Limits for Async system resoruce streaming requests</span></div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">   96</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">RESOURCE_LOADER_QUEUE_LIMIT</a> = 1000;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">   97</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">RESOURCE_LOADER_REQUEST_LIMIT</a> = 1750;</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"comment\">// Limits for entities</span></div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">  100</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">ENTITY_LIMIT</a> = 5000;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">  101</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">NAMED_ENTITY_LIMIT</a> = 500;</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"comment\">// Limit for total sum of characters that can be stored in all language strings</span></div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">  104</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">LANUGAGE_STRING_CHARACTER_LIMIT</a> = 10000;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"comment\">// Limit for the number of lanugage strings</span></div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">  107</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">LANGUAGE_STRING_LIMIT</a> = 500;</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"comment\">// Limit for enqueued messages before dispatch</span></div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">  110</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">MESSAGE_QUEUE_LIMIT</a> = 500;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"comment\">// Limit for enqueued messages with a delay</span></div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">  113</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">MESSAGE_PRIORITY_QUEUE_LIMIT</a> = 250;</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"comment\">// Limit for message data, in bytes</span></div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">  116</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">MESSAGE_DATA_LIMIT</a> = 2000;</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span><span class=\"comment\">// Limit for message types</span></div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">  119</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">MESSAGE_TYPE_LIMIT</a> = 100;</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"comment\">// Limit for signal types</span></div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">  122</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">SIGNAL_TYPE_LIMIT</a> = 100;</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">  124</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">WORLDCELL_TRANSITION_LIMIT</a> = 250;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">  125</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">KEYBOARDACTION_LIMIT</a> = 100;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">// Limit for total sum of characters that can be stored in all names</span></div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">  128</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">UID_CHARACTER_LIMIT</a> = 20000;</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"comment\">// Limit for the number of names</span></div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">  131</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">UID_LIMIT</a> = 2000</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>;</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">  133</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">WORLDCELL_LIMIT</a> = 250;</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">  135</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">RIGIDBODY_LIMIT</a> = 500;</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"comment\">// |                             EXTENSION LIMITS                              |</span></div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"comment\">// |                                                                           |</span></div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"comment\">// +---------------------------------------------------------------------------+</span></div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">  144</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</a> = 100;</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">  145</a></span><span class=\"keyword\">const</span> uint32_t <a class=\"code hl_variable\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">EXT_KITCHENSINK_SOUNDTABLE_LIMIT</a> = 100;</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>}</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_CONFIG_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a0351a7a038c0c51bf2e41a37bb54702c\"><div class=\"ttname\"><a href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">tram::COMPONENT_LIMIT_LIGHT</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_LIGHT</div><div class=\"ttdef\"><b>Definition:</b> config.h:68</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a09905cc9b5568b71843490d4d6ce5fc3\"><div class=\"ttname\"><a href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">tram::RESOURCE_LIMIT_COLLISION_MODEL</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_COLLISION_MODEL</div><div class=\"ttdef\"><b>Definition:</b> config.h:51</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a0ddcd411f4af0e1052aa1c3341eb7e4d\"><div class=\"ttname\"><a href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">tram::ENTITY_LIMIT</a></div><div class=\"ttdeci\">const uint32_t ENTITY_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:100</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a13df257c04982a0237aed3b1d1a18388\"><div class=\"ttname\"><a href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">tram::MESSAGE_QUEUE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t MESSAGE_QUEUE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:110</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1423ecbdc7b2879d47ac484d812fda50\"><div class=\"ttname\"><a href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">tram::WORLDCELL_TRANSITION_LIMIT</a></div><div class=\"ttdeci\">const uint32_t WORLDCELL_TRANSITION_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:124</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a16fcee576d8ededdde2fb49658013315\"><div class=\"ttname\"><a href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">tram::EXT_KITCHENSINK_SOUNDTABLE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t EXT_KITCHENSINK_SOUNDTABLE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:145</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1ef1096144023efed74009fd55ff4668\"><div class=\"ttname\"><a href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">tram::COMPONENT_LIMIT_PARTICLE</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_PARTICLE</div><div class=\"ttdef\"><b>Definition:</b> config.h:69</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a204e0f9d92f93902f454380c35b33c49\"><div class=\"ttname\"><a href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">tram::RESOURCE_LIMIT_MATERIAL</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_MATERIAL</div><div class=\"ttdef\"><b>Definition:</b> config.h:52</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a26aea911deb4f2a882fecaa9db2cca5f\"><div class=\"ttname\"><a href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">tram::CAMERA_MULTIPLIER</a></div><div class=\"ttdeci\">const float CAMERA_MULTIPLIER</div><div class=\"ttdef\"><b>Definition:</b> config.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b1778620231829d63a83b6c451b60c2\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">tram::MESSAGE_PRIORITY_QUEUE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t MESSAGE_PRIORITY_QUEUE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:113</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a35b3cdfbe899c26e6da0068331ef4a03\"><div class=\"ttname\"><a href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">tram::RESOURCE_LOADER_REQUEST_LIMIT</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LOADER_REQUEST_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a38c17cf408e9c052cf6e8250250ef68f\"><div class=\"ttname\"><a href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">tram::COMPONENT_LIMIT_DECAL</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_DECAL</div><div class=\"ttdef\"><b>Definition:</b> config.h:74</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a3e23af0f990c870da7822e6160160173\"><div class=\"ttname\"><a href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">tram::MESSAGE_DATA_LIMIT</a></div><div class=\"ttdeci\">const uint32_t MESSAGE_DATA_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:116</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a4057f0499e008e4ce99545c3d38f1ddf\"><div class=\"ttname\"><a href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">tram::RESOURCE_LIMIT_SOUND</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_SOUND</div><div class=\"ttdef\"><b>Definition:</b> config.h:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a4c8eb191637ec58035b98bc8a3dc7955\"><div class=\"ttname\"><a href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">tram::PATH_LIMIT</a></div><div class=\"ttdeci\">const size_t PATH_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:84</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a5099d59ad2cf7be3d5f16024f0a1443d\"><div class=\"ttname\"><a href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">tram::COMPONENT_LIMIT_SPRITE</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_SPRITE</div><div class=\"ttdef\"><b>Definition:</b> config.h:73</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a62a53097647f52336381e7470fb2abe5\"><div class=\"ttname\"><a href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">tram::PHYSICS_GRAVITY</a></div><div class=\"ttdeci\">const float PHYSICS_GRAVITY</div><div class=\"ttdef\"><b>Definition:</b> config.h:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a66281a5ccd6da73b86dd9a2ba49585a2\"><div class=\"ttname\"><a href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">tram::COMPONENT_LIMIT_CONTROLLER</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_CONTROLLER</div><div class=\"ttdef\"><b>Definition:</b> config.h:67</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a675b9496ee55fb465aa5d4972b45bac7\"><div class=\"ttname\"><a href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">tram::TICK_RATE</a></div><div class=\"ttdeci\">const float TICK_RATE</div><div class=\"ttdef\"><b>Definition:</b> config.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a746e6432794113f984198f336d8cce65\"><div class=\"ttname\"><a href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">tram::NAMED_ENTITY_LIMIT</a></div><div class=\"ttdeci\">const uint32_t NAMED_ENTITY_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7bc148b33d35076ac28624e78c06e32f\"><div class=\"ttname\"><a href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">tram::MAX_VERTEX_FORMATS</a></div><div class=\"ttdeci\">const uint32_t MAX_VERTEX_FORMATS</div><div class=\"ttdef\"><b>Definition:</b> config.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7c062f0c7a0634e170676191a5fc33ba\"><div class=\"ttname\"><a href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">tram::KEYBOARDACTION_LIMIT</a></div><div class=\"ttdeci\">const uint32_t KEYBOARDACTION_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:125</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7db4cca9ab5ecae0d8d4de7effd6aec5\"><div class=\"ttname\"><a href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">tram::COMPONENT_LIMIT_AUDIO</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_AUDIO</div><div class=\"ttdef\"><b>Definition:</b> config.h:66</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a824fea7217919eb6958e08a8bbab50d1\"><div class=\"ttname\"><a href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">tram::RESOURCE_LIMIT_MODEL</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_MODEL</div><div class=\"ttdef\"><b>Definition:</b> config.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a899ede00065e962b5ca2528841e45aa7\"><div class=\"ttname\"><a href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">tram::RESOURCE_LIMIT_SOUND_GRAPH</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_SOUND_GRAPH</div><div class=\"ttdef\"><b>Definition:</b> config.h:55</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8d062bfaaf077ec23a49b1e932f27b6a\"><div class=\"ttname\"><a href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">tram::COMPONENT_LIMIT_PLAYER</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_PLAYER</div><div class=\"ttdef\"><b>Definition:</b> config.h:71</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a917f372f74717cd689223239e73f0ec5\"><div class=\"ttname\"><a href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">tram::MAX_MATERIAL_TYPES</a></div><div class=\"ttdeci\">const uint32_t MAX_MATERIAL_TYPES</div><div class=\"ttdef\"><b>Definition:</b> config.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a94cfdaa4232d3dde886253c4eafcd4e9\"><div class=\"ttname\"><a href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">tram::LANUGAGE_STRING_CHARACTER_LIMIT</a></div><div class=\"ttdeci\">const uint32_t LANUGAGE_STRING_CHARACTER_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:104</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a95ef9ff7b7e26c1f357c10707720163a\"><div class=\"ttname\"><a href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">tram::RIGIDBODY_LIMIT</a></div><div class=\"ttdeci\">const uint32_t RIGIDBODY_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:135</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9773c849e7f41480842e5cd1d8d4de73\"><div class=\"ttname\"><a href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">tram::SIGNAL_TYPE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t SIGNAL_TYPE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:122</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa3d5c2a5f250a9d674df10bdfa5904d2\"><div class=\"ttname\"><a href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">tram::ENTITY_TYPE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t ENTITY_TYPE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:93</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa4a96a9b06c171a66beb3fe0066ac6b5\"><div class=\"ttname\"><a href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">tram::SYSTEM_LIMIT</a></div><div class=\"ttdeci\">const size_t SYSTEM_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:87</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aaffd4a95c2adf2e132260b84190ca660\"><div class=\"ttname\"><a href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">tram::RESOURCE_LIMIT_PATH</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_PATH</div><div class=\"ttdef\"><b>Definition:</b> config.h:50</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ab751286624cca492c1abca52f7e0be8c\"><div class=\"ttname\"><a href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">tram::WORLDCELL_LIMIT</a></div><div class=\"ttdeci\">const uint32_t WORLDCELL_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:133</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_abd586f202b2593831d3d48a18eb15776\"><div class=\"ttname\"><a href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">tram::UID_CHARACTER_LIMIT</a></div><div class=\"ttdeci\">const uint32_t UID_CHARACTER_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:128</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_abf691e9b98162d05d0b235cf0f3d9387\"><div class=\"ttname\"><a href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">tram::COMPONENT_LIMIT_TRIGGER</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> config.h:75</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac465c542500fdf2dc7483c0d15896d8b\"><div class=\"ttname\"><a href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">tram::LANGUAGE_STRING_LIMIT</a></div><div class=\"ttdeci\">const uint32_t LANGUAGE_STRING_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:107</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac5209551801f3515acbdabc46e957f45\"><div class=\"ttname\"><a href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">tram::MAX_FRAGMENT_SHADERS</a></div><div class=\"ttdeci\">const uint32_t MAX_FRAGMENT_SHADERS</div><div class=\"ttdef\"><b>Definition:</b> config.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac5765d4ac76416672f8f55e6e4e48b9b\"><div class=\"ttname\"><a href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">tram::MESSAGE_TYPE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t MESSAGE_TYPE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:119</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_acfe37808bb06b05bc9596bc3242e95ce\"><div class=\"ttname\"><a href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">tram::RESOURCE_LIMIT_LIGHT_GRAPH</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_LIGHT_GRAPH</div><div class=\"ttdef\"><b>Definition:</b> config.h:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad2e37d16ae78faab3eb2d8140fcd8b5e\"><div class=\"ttname\"><a href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">tram::RESOURCE_LIMIT_SPRITE</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LIMIT_SPRITE</div><div class=\"ttdef\"><b>Definition:</b> config.h:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ae549eb9876cd460a36ec048cd029af97\"><div class=\"ttname\"><a href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">tram::RESOURCE_LOADER_QUEUE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t RESOURCE_LOADER_QUEUE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aeb3f21bc4e94ced5691b7a802ce417e5\"><div class=\"ttname\"><a href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">tram::MAX_VERTEX_SHADERS</a></div><div class=\"ttdeci\">const uint32_t MAX_VERTEX_SHADERS</div><div class=\"ttdef\"><b>Definition:</b> config.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aee70318c6bcb6ab23a4c627b40ffc247\"><div class=\"ttname\"><a href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">tram::PHYSICS_GROUND_PLANE</a></div><div class=\"ttdeci\">const float PHYSICS_GROUND_PLANE</div><div class=\"ttdef\"><b>Definition:</b> config.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aef0b54c575d166021a519456e745e5a8\"><div class=\"ttname\"><a href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">tram::COMPONENT_LIMIT_PHYSICS</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_PHYSICS</div><div class=\"ttdef\"><b>Definition:</b> config.h:70</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aefb7b9aa5163a6725fc02bde6672b88f\"><div class=\"ttname\"><a href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">tram::COMPONENT_LIMIT_ANIMATION</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_ANIMATION</div><div class=\"ttdef\"><b>Definition:</b> config.h:65</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af1919b7d31f90785f9b208acbdeb8576\"><div class=\"ttname\"><a href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">tram::EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:144</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af6d768de9b8d7f850907e74b15f654ab\"><div class=\"ttname\"><a href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">tram::MAX_LINKED_SHADERS</a></div><div class=\"ttdeci\">const uint32_t MAX_LINKED_SHADERS</div><div class=\"ttdef\"><b>Definition:</b> config.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af8599d00d63ed9f6ee3eecb0c0b136b8\"><div class=\"ttname\"><a href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">tram::UID_LIMIT</a></div><div class=\"ttdeci\">const uint32_t UID_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:131</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_afde783f76b29484fca014a71379688da\"><div class=\"ttname\"><a href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">tram::SCRIPTABLE_ENTITY_TYPE_LIMIT</a></div><div class=\"ttdeci\">const uint32_t SCRIPTABLE_ENTITY_TYPE_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> config.h:90</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_afdf2b176e856c8c025e6c5a05b376f2f\"><div class=\"ttname\"><a href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">tram::COMPONENT_LIMIT_RENDER</a></div><div class=\"ttdeci\">const uint32_t COMPONENT_LIMIT_RENDER</div><div class=\"ttdef\"><b>Definition:</b> config.h:72</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/controller_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/controller.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">controller.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementations for ControllerComponents.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementations for ControllerComponents. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/controller_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/controller.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">controller.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n</div>\n<p><a href=\"controller_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides an API for character controllers.  <a href=\"classtram_1_1_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of an FPS-style character controller.  <a href=\"classtram_1_1_f_p_s_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of a simple character controller.  <a href=\"classtram_1_1_raycast_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/controller_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/controller.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">controller.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"controller_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>PhysicsComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>TriggerComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">   17</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">Move</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction) = 0;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">   19</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">Run</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">   20</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">Crouch</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">   21</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">Fly</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">   22</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">Jump</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">   23</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">TurnLeft</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">   24</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">TurnRight</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">   26</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">Push</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction) = 0;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">   28</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">SetCollisions</a>(<span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a>) { this-&gt;collide = <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a>; }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">   30</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">SetLookDirection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> direction) { <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a> = direction; }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">   31</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">GetLookDirection</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a>; }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">IsDebugInfoDraw</a>();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">SetDebugInfoDraw</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">   38</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">look_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">   39</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">collide</a> = <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">Start</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">   45</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)<span class=\"keyword\"> override </span>{}</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">Move</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">Run</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">Crouch</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">Fly</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">Jump</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">TurnLeft</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">TurnRight</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">Push</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">   58</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">SetCollisionSize</a>(<span class=\"keywordtype\">float</span> width, <span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> crouch_height) {</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">collision_width</a> = width;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">collision_height</a> = height;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">collision_height_crouch</a> = crouch_height;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">   64</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">SetStepHeight</a>(<span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> crouch_height) {</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">step_height</a> = height;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">step_height_crouch</a> = crouch_height;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">   69</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">SetWallCollisionCallback</a>(<span class=\"keywordtype\">void</span> (*callback)(<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)) {</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">wallbonk_callback</a> = callback;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    }</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">   73</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">SetWalkSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">walk_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">   74</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">SetRunSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">run_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">   75</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">SetCrouchSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">crouch_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">   76</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">SetFlySpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">fly_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">   77</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">SetFriction</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a>) { this-&gt;friction = <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a>; }</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">   78</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">SetCollisionGroup</a>(uint32_t group) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">collision_group</a> = group; }</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">   80</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">FPSControllerComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">   81</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">~FPSControllerComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">   83</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;TriggerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">walk_collision</a>;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">   84</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;TriggerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">crouch_collision</a>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">ApplyDynamics</a>();</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">RecoverFromCollisions</a>();</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">ResetMove</a>();</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">   90</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">velocity</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">   91</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">move_direction</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    </div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">   94</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">is_in_air</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">   96</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">collision_width</a> = 0.35f;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">   97</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">collision_height</a> = 1.85f;</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">   98</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">collision_height_crouch</a> = 0.5f;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">  100</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">step_height</a> = 0.35f;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">  101</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">step_height_crouch</a> = 0.15f;</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">  103</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">walk_speed</a> = 0.1f;</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">  104</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">run_speed</a> = 0.2f;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">  105</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">crouch_speed</a> = 0.05f;</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">  106</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">fly_speed</a> = 0.2f;</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    </div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">  108</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">friction</a> = 0.89f;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    </div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">  110</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">crouching</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">  111</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">running</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">  112</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">flying</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    </div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">  114</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">standing_on</a> = 0;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">  115</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">standing_on_prev</a> = 0;</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">  116</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">standing_pos</a>;</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">  117</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">standing_rot</a>;</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    </div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">  119</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">collision_group</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a>;</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">  121</a></span>    void (*<a class=\"code hl_variable\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">wallbonk_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    </div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">  123</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>;</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">  124</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool</a>;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>};</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html\">  127</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a> {</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">Start</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">  130</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)<span class=\"keyword\"> override </span>{}</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">Move</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local_direction) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    </div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">Run</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">Crouch</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">Fly</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">Jump</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">TurnLeft</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">TurnRight</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    </div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">Push</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">  143</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">SetCollisionSize</a>(<span class=\"keywordtype\">float</span> width, <span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> crouch_height) {</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">collision_width</a> = width;</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">collision_height</a> = height;</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>        <span class=\"comment\">//collision_height_crouch = crouch_height;</span></div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    }</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    </div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">  149</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">SetStepHeight</a>(<span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> crouch_height) {</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">step_height</a> = height;</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        <span class=\"comment\">//step_height_crouch = crouch_height;</span></div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    }</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    </div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">  154</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">SetWallCollisionCallback</a>(<span class=\"keywordtype\">void</span> (*callback)(<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)) {</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">wallbonk_callback</a> = callback;</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    }</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    </div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">  158</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">SetWalkSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">walk_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">  159</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">SetRunSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">run_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">  160</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">SetCrouchSpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">crouch_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">  161</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">SetFlySpeed</a>(<span class=\"keywordtype\">float</span> speed) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">fly_speed</a> = speed; }</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">  162</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">SetFriction</a>(<span class=\"keywordtype\">float</span> speed) { }</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">  163</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">SetCollisionGroup</a>(uint32_t group) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">collision_group</a> = group; }</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">  165</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">RaycastControllerComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">  166</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">~RaycastControllerComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    </div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">  168</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;TriggerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">wall_collision</a>;</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    </div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">ApplyDynamics</a>();</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">RecoverFromCollisions</a>();</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">ResetMove</a>();</div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    </div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">  174</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">move_magnitude</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">  175</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">move_direction</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    </div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">  177</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">air_velocity</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">  179</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">enabled</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">  181</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">is_in_air</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    </div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">  183</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">collision_width</a> = 0.35f;</div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">  184</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">collision_height</a> = 1.85f;</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    </div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">  186</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">step_height</a> = 0.35f;</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    </div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">  188</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">walk_speed</a> = 0.1f;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">  189</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">run_speed</a> = 0.2f;</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">  190</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">crouch_speed</a> = 0.05f;</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">  191</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">fly_speed</a> = 0.2f;</div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    </div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">  193</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">crouching</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">  194</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">running</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">  195</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">flying</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    </div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">  197</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">jump_frames</a> = 0;</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    </div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">  199</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">standing_on</a> = 0;</div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">  200</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">standing_on_prev</a> = 0;</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">  201</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">standing_pos</a>;</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    </div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">  203</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">collision_group</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a>;</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    </div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">  205</a></span>    void (*<a class=\"code hl_variable\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">wallbonk_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    </div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">  207</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a>;</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">  208</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool</a>;</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>};</div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>}</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html\">tram::ControllerComponent</a></div><div class=\"ttdoc\">Provides an API for character controllers.</div><div class=\"ttdef\"><b>Definition:</b> controller.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a005c65e23bba7635c05821a5bebbdf47\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">tram::ControllerComponent::SetCollisions</a></div><div class=\"ttdeci\">void SetCollisions(bool collide)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a09830a27a27ef8b419a9cf9e60446121\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">tram::ControllerComponent::Run</a></div><div class=\"ttdeci\">virtual void Run()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a1ebc25137ba38f067f7986e3a5f1d5db\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">tram::ControllerComponent::TurnRight</a></div><div class=\"ttdeci\">virtual void TurnRight()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a72c9c834cd28d9c7cdbd16e48d6146f6\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">tram::ControllerComponent::Move</a></div><div class=\"ttdeci\">virtual void Move(vec3 local_direction)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a827a701de4481f78563b75fce6ea55a2\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">tram::ControllerComponent::IsDebugInfoDraw</a></div><div class=\"ttdeci\">static bool IsDebugInfoDraw()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:120</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a85d0688b2477652353b92a7662fdc36a\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">tram::ControllerComponent::Push</a></div><div class=\"ttdeci\">virtual void Push(vec3 direction)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a92c6a99db84d365877eb1e6f45b406ce\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">tram::ControllerComponent::SetLookDirection</a></div><div class=\"ttdeci\">void SetLookDirection(quat direction)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a93abb6fa1349a41b93f53450817f9839\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">tram::ControllerComponent::collide</a></div><div class=\"ttdeci\">bool collide</div><div class=\"ttdef\"><b>Definition:</b> controller.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_a94439cce310fb5bc23485b3e23f19cfb\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">tram::ControllerComponent::GetLookDirection</a></div><div class=\"ttdeci\">quat GetLookDirection() const</div><div class=\"ttdef\"><b>Definition:</b> controller.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_ad160a058e6730f0040aa6a9338e15750\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">tram::ControllerComponent::look_direction</a></div><div class=\"ttdeci\">quat look_direction</div><div class=\"ttdef\"><b>Definition:</b> controller.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_ad173b5388f4168d4de4acd13e4819089\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">tram::ControllerComponent::TurnLeft</a></div><div class=\"ttdeci\">virtual void TurnLeft()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_ad5ac49ff2ac8a5c96dbd8c341d445f76\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">tram::ControllerComponent::Jump</a></div><div class=\"ttdeci\">virtual void Jump()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_adc0d17de6313da06268b3c14b18e8dcf\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">tram::ControllerComponent::Update</a></div><div class=\"ttdeci\">static void Update()</div><div class=\"ttdoc\">Updates the ControllerComponents.</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_ae13d3ca8940732bb64b80f0d0a789bfe\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">tram::ControllerComponent::Fly</a></div><div class=\"ttdeci\">virtual void Fly()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_aeca250fb793765f6d36d00ef05e9f931\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">tram::ControllerComponent::Crouch</a></div><div class=\"ttdeci\">virtual void Crouch()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_controller_component_html_af7b5cdc611a17b8a7261e14df61c56dd\"><div class=\"ttname\"><a href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">tram::ControllerComponent::SetDebugInfoDraw</a></div><div class=\"ttdeci\">static void SetDebugInfoDraw(bool)</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html\">tram::FPSControllerComponent</a></div><div class=\"ttdoc\">Implementation of an FPS-style character controller.</div><div class=\"ttdef\"><b>Definition:</b> controller.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a039b23d22ab01048dfacf106b1f33781\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">tram::FPSControllerComponent::collision_width</a></div><div class=\"ttdeci\">float collision_width</div><div class=\"ttdef\"><b>Definition:</b> controller.h:96</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a05586398229c44cfafe8b9c6fdb3f2d8\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">tram::FPSControllerComponent::Jump</a></div><div class=\"ttdeci\">void Jump() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:173</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a1180c411c80596ee1d75daa987ce96f7\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">tram::FPSControllerComponent::walk_speed</a></div><div class=\"ttdeci\">float walk_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a14fa87139f0ba7e8325019afb05f56ff\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">tram::FPSControllerComponent::RecoverFromCollisions</a></div><div class=\"ttdeci\">void RecoverFromCollisions()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:234</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a178afe3b43f00f0a289a19d2fe323d9c\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">tram::FPSControllerComponent::Push</a></div><div class=\"ttdeci\">void Push(vec3 direction) override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:153</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a179230b5c2c207d38f12b1e784f00bb2\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">tram::FPSControllerComponent::wallbonk_callback</a></div><div class=\"ttdeci\">void(* wallbonk_callback)(ControllerComponent *, Physics::Collision)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a198a3b9279dffb137f56bb510b65cf79\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">tram::FPSControllerComponent::SetCollisionGroup</a></div><div class=\"ttdeci\">void SetCollisionGroup(uint32_t group)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a1a9c20ae30cc0939f1c09febafb1a001\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">tram::FPSControllerComponent::standing_on</a></div><div class=\"ttdeci\">id_t standing_on</div><div class=\"ttdef\"><b>Definition:</b> controller.h:114</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a21405af6b1d6b8fda3258d50960428cb\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">tram::FPSControllerComponent::crouching</a></div><div class=\"ttdeci\">bool crouching</div><div class=\"ttdef\"><b>Definition:</b> controller.h:110</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a23e43852ea4528a1b50f28628f5a9f20\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">tram::FPSControllerComponent::TurnLeft</a></div><div class=\"ttdeci\">void TurnLeft() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:180</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a245323aa009e05cb44bde289b2ca75e2\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">tram::FPSControllerComponent::SetWallCollisionCallback</a></div><div class=\"ttdeci\">void SetWallCollisionCallback(void(*callback)(ControllerComponent *, Physics::Collision))</div><div class=\"ttdef\"><b>Definition:</b> controller.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a2b9917a31e94c6ba8f331dfc19184299\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">tram::FPSControllerComponent::collision_group</a></div><div class=\"ttdeci\">uint32_t collision_group</div><div class=\"ttdef\"><b>Definition:</b> controller.h:119</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a35420874880b9df73e292e495aa1e1dc\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">tram::FPSControllerComponent::SetRunSpeed</a></div><div class=\"ttdeci\">void SetRunSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a37f280a78fdb1596861619db391ff09a\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">tram::FPSControllerComponent::standing_pos</a></div><div class=\"ttdeci\">vec3 standing_pos</div><div class=\"ttdef\"><b>Definition:</b> controller.h:116</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a396834cd7a573800365e68a4aa49122b\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">tram::FPSControllerComponent::ApplyDynamics</a></div><div class=\"ttdeci\">void ApplyDynamics()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:189</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a4074f2e9e605af90024754008010a1a9\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">tram::FPSControllerComponent::step_height_crouch</a></div><div class=\"ttdeci\">float step_height_crouch</div><div class=\"ttdef\"><b>Definition:</b> controller.h:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a44ff24373b7604e870849d286e3fe86e\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">tram::FPSControllerComponent::Crouch</a></div><div class=\"ttdeci\">void Crouch() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:165</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a451fd7c7b46f15d8c41966e57389d9f3\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">tram::FPSControllerComponent::friction</a></div><div class=\"ttdeci\">float friction</div><div class=\"ttdef\"><b>Definition:</b> controller.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a4a55f5fdc6a0540f3843309ec6f53894\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">tram::FPSControllerComponent::SetFriction</a></div><div class=\"ttdeci\">void SetFriction(float friction)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a4b07abe21f47fc5dbac586aa45875fa0\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">tram::FPSControllerComponent::step_height</a></div><div class=\"ttdeci\">float step_height</div><div class=\"ttdef\"><b>Definition:</b> controller.h:100</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a4c0d475fb7ef8b5c98b800b8921cf660\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">tram::FPSControllerComponent::~FPSControllerComponent</a></div><div class=\"ttdeci\">~FPSControllerComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a5302db1fe5d853e5bb0845ea5b0fa5f5\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">tram::FPSControllerComponent::ResetMove</a></div><div class=\"ttdeci\">void ResetMove()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:387</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a576c462ea53d985f902085041cfafc72\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">tram::FPSControllerComponent::SetCrouchSpeed</a></div><div class=\"ttdeci\">void SetCrouchSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a59caaa80439479140ec150e4abfb6f36\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">tram::FPSControllerComponent::fly_speed</a></div><div class=\"ttdeci\">float fly_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a5a0be1714e44e2397bf5339ec569f8ba\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">tram::FPSControllerComponent::SetWalkSpeed</a></div><div class=\"ttdeci\">void SetWalkSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a5c5b27f8fb2ca29b48fc4d291b71b8d3\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">tram::FPSControllerComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event) override</div><div class=\"ttdef\"><b>Definition:</b> controller.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a69f90eea486552552948362847c43ee6\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">tram::FPSControllerComponent::run_speed</a></div><div class=\"ttdeci\">float run_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a6f50d65657568e5d1afe87dd8cf17d91\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">tram::FPSControllerComponent::FPSControllerComponent</a></div><div class=\"ttdeci\">FPSControllerComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a70b7b9fae981e57ff334e5a5a5abbc8f\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">tram::FPSControllerComponent::SetStepHeight</a></div><div class=\"ttdeci\">void SetStepHeight(float height, float crouch_height)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a73e7514f41a865feee9c0f9af2963911\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">tram::FPSControllerComponent::velocity</a></div><div class=\"ttdeci\">vec3 velocity</div><div class=\"ttdef\"><b>Definition:</b> controller.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a790794239c994c8c15f988edee64ae70\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">tram::FPSControllerComponent::SetCollisionSize</a></div><div class=\"ttdeci\">void SetCollisionSize(float width, float height, float crouch_height)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a7f8e30150636e41889103015053db656\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">tram::FPSControllerComponent::move_direction</a></div><div class=\"ttdeci\">vec3 move_direction</div><div class=\"ttdef\"><b>Definition:</b> controller.h:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a8579e399cc88ea96ad4d62d2cce9790c\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">tram::FPSControllerComponent::is_in_air</a></div><div class=\"ttdeci\">bool is_in_air</div><div class=\"ttdef\"><b>Definition:</b> controller.h:94</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a87c5ec8a494fd31a64e42492959673ed\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">tram::FPSControllerComponent::collision_height</a></div><div class=\"ttdeci\">float collision_height</div><div class=\"ttdef\"><b>Definition:</b> controller.h:97</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a897a4b4f81cc5bba6e619a053abec6b9\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">tram::FPSControllerComponent::running</a></div><div class=\"ttdeci\">bool running</div><div class=\"ttdef\"><b>Definition:</b> controller.h:111</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_a8cdc505ef5241f71136c2ff356e55615\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">tram::FPSControllerComponent::Run</a></div><div class=\"ttdeci\">void Run() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:161</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_aa68f65e5a902e77db578edf8d1b4af34\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">tram::FPSControllerComponent::TurnRight</a></div><div class=\"ttdeci\">void TurnRight() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:184</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ab078a61443c6f5d29fa5a9bb1fa06aea\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">tram::FPSControllerComponent::Start</a></div><div class=\"ttdeci\">void Start() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:135</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ac0b5fd2754147656c7a45085715119c6\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">tram::FPSControllerComponent::SetFlySpeed</a></div><div class=\"ttdeci\">void SetFlySpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ac1c3824186959467cdf5f12a5f2684cc\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">tram::FPSControllerComponent::standing_rot</a></div><div class=\"ttdeci\">quat standing_rot</div><div class=\"ttdef\"><b>Definition:</b> controller.h:117</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ac3921936820398b0ed5d343732f5fbbb\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">tram::FPSControllerComponent::Fly</a></div><div class=\"ttdeci\">void Fly() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:169</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ac47fe6964c8f7590a92f8fa5be91c825\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">tram::FPSControllerComponent::Move</a></div><div class=\"ttdeci\">void Move(vec3 local_direction) override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:157</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_aca171f9f6200c93a0dd9dadab48cfa04\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">tram::FPSControllerComponent::collision_height_crouch</a></div><div class=\"ttdeci\">float collision_height_crouch</div><div class=\"ttdef\"><b>Definition:</b> controller.h:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_adcec1e7d2eb544a14884da99d7de9341\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">tram::FPSControllerComponent::flying</a></div><div class=\"ttdeci\">bool flying</div><div class=\"ttdef\"><b>Definition:</b> controller.h:112</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ae4a70bf3706f1cbada7ed97f70482fe4\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">tram::FPSControllerComponent::standing_on_prev</a></div><div class=\"ttdeci\">id_t standing_on_prev</div><div class=\"ttdef\"><b>Definition:</b> controller.h:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_ae9f922b8e4f7224dbae472337193752d\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">tram::FPSControllerComponent::crouch_speed</a></div><div class=\"ttdeci\">float crouch_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:105</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_aef3a06f85b58004fca42a4c42f5249c5\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">tram::FPSControllerComponent::crouch_collision</a></div><div class=\"ttdeci\">Component&lt; TriggerComponent &gt; crouch_collision</div><div class=\"ttdef\"><b>Definition:</b> controller.h:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_f_p_s_controller_component_html_af2a12d9cc7a245087852634e14b9bb2d\"><div class=\"ttname\"><a href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">tram::FPSControllerComponent::walk_collision</a></div><div class=\"ttdeci\">Component&lt; TriggerComponent &gt; walk_collision</div><div class=\"ttdef\"><b>Definition:</b> controller.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html\">tram::RaycastControllerComponent</a></div><div class=\"ttdoc\">Implementation of a simple character controller.</div><div class=\"ttdef\"><b>Definition:</b> controller.h:127</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a1bd33cca14d40e584b11c5794653dfe4\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">tram::RaycastControllerComponent::move_direction</a></div><div class=\"ttdeci\">vec3 move_direction</div><div class=\"ttdef\"><b>Definition:</b> controller.h:175</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a1ff2fa537cf973283b7385f4b9c12eea\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">tram::RaycastControllerComponent::running</a></div><div class=\"ttdeci\">bool running</div><div class=\"ttdef\"><b>Definition:</b> controller.h:194</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a2324ab257417857ba243ff51605ec8ae\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">tram::RaycastControllerComponent::move_magnitude</a></div><div class=\"ttdeci\">vec3 move_magnitude</div><div class=\"ttdef\"><b>Definition:</b> controller.h:174</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a3a8fb26c4de4b8c90b698f1f16ca3958\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">tram::RaycastControllerComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event) override</div><div class=\"ttdef\"><b>Definition:</b> controller.h:130</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a46760dcc830550459b52f6b26cd80bcb\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">tram::RaycastControllerComponent::standing_on</a></div><div class=\"ttdeci\">id_t standing_on</div><div class=\"ttdef\"><b>Definition:</b> controller.h:199</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a4989dfffd26974233d53a1d6c4eb8407\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">tram::RaycastControllerComponent::wall_collision</a></div><div class=\"ttdeci\">Component&lt; TriggerComponent &gt; wall_collision</div><div class=\"ttdef\"><b>Definition:</b> controller.h:168</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a535ed363eec2dcf7f8232aeb1f594fb0\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">tram::RaycastControllerComponent::Move</a></div><div class=\"ttdeci\">void Move(vec3 local_direction) override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:417</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a5481a92132dc6b4c1b6cbf6266fc7a1a\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">tram::RaycastControllerComponent::flying</a></div><div class=\"ttdeci\">bool flying</div><div class=\"ttdef\"><b>Definition:</b> controller.h:195</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a5b2d1abffafb92a86d9e48ead1eec5d9\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">tram::RaycastControllerComponent::RaycastControllerComponent</a></div><div class=\"ttdeci\">RaycastControllerComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a5d4e68ef39d6a803e86f9b6fed954995\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">tram::RaycastControllerComponent::Run</a></div><div class=\"ttdeci\">void Run() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:421</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a61464776123849a63632483d70f9f099\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">tram::RaycastControllerComponent::collision_group</a></div><div class=\"ttdeci\">uint32_t collision_group</div><div class=\"ttdef\"><b>Definition:</b> controller.h:203</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a61f46b2f0838fe1db449109a531f1dad\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">tram::RaycastControllerComponent::Start</a></div><div class=\"ttdeci\">void Start() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:402</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a621f23a281ed1fc9ab27bbb0ac4103e6\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">tram::RaycastControllerComponent::standing_pos</a></div><div class=\"ttdeci\">vec3 standing_pos</div><div class=\"ttdef\"><b>Definition:</b> controller.h:201</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a63b3bdb3d6d211eb1ce407a900b612a7\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">tram::RaycastControllerComponent::ApplyDynamics</a></div><div class=\"ttdeci\">void ApplyDynamics()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:456</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a6588e19ca0bc87e0ddf3f53f6b938df4\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">tram::RaycastControllerComponent::SetCollisionGroup</a></div><div class=\"ttdeci\">void SetCollisionGroup(uint32_t group)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:163</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a68e41561de1361f67cb1782d0dc0a97f\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">tram::RaycastControllerComponent::collision_width</a></div><div class=\"ttdeci\">float collision_width</div><div class=\"ttdef\"><b>Definition:</b> controller.h:183</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a6cde78db12e923186e1d548a2ceb9d8d\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">tram::RaycastControllerComponent::Crouch</a></div><div class=\"ttdeci\">void Crouch() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:425</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a762a880efb2b272fb8e19edac34c7893\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">tram::RaycastControllerComponent::air_velocity</a></div><div class=\"ttdeci\">vec3 air_velocity</div><div class=\"ttdef\"><b>Definition:</b> controller.h:177</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a77d4b6aa40aaff452eb3793ddf9f087a\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">tram::RaycastControllerComponent::collision_height</a></div><div class=\"ttdeci\">float collision_height</div><div class=\"ttdef\"><b>Definition:</b> controller.h:184</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a7905d17bead35cf596c7fe19132e548b\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">tram::RaycastControllerComponent::Fly</a></div><div class=\"ttdeci\">void Fly() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:429</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a7f441e43b9e92927dbb4103cf7fa3052\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">tram::RaycastControllerComponent::TurnRight</a></div><div class=\"ttdeci\">void TurnRight() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:451</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a8152d995918ad6bda5a35d3bbf4be894\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">tram::RaycastControllerComponent::SetStepHeight</a></div><div class=\"ttdeci\">void SetStepHeight(float height, float crouch_height)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:149</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a83c8376ae644ba75c5caa09803e4e8ef\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">tram::RaycastControllerComponent::SetCollisionSize</a></div><div class=\"ttdeci\">void SetCollisionSize(float width, float height, float crouch_height)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:143</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a84b8137c59028604b98c6087ddf03bec\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">tram::RaycastControllerComponent::TurnLeft</a></div><div class=\"ttdeci\">void TurnLeft() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:447</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a865d92b888b684f1a8ddfc550509dfc8\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">tram::RaycastControllerComponent::Jump</a></div><div class=\"ttdeci\">void Jump() override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:433</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a8780bc5e7bb5938ba85b7a2ae950dff4\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">tram::RaycastControllerComponent::Push</a></div><div class=\"ttdeci\">void Push(vec3 direction) override</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:413</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a8a2115c6f76c654ad0daa63421474d92\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">tram::RaycastControllerComponent::jump_frames</a></div><div class=\"ttdeci\">int jump_frames</div><div class=\"ttdef\"><b>Definition:</b> controller.h:197</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a8e3f7be1fc7488057d7319883300dc5f\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">tram::RaycastControllerComponent::SetFriction</a></div><div class=\"ttdeci\">void SetFriction(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:162</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_a9f0a5b5809b046971e2b8f23d34f4838\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">tram::RaycastControllerComponent::ResetMove</a></div><div class=\"ttdeci\">void ResetMove()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:564</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aa0b73d887c0b9349667c2dc9271e45cd\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">tram::RaycastControllerComponent::wallbonk_callback</a></div><div class=\"ttdeci\">void(* wallbonk_callback)(ControllerComponent *, Physics::Collision)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:205</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aa5342f7e4fb16df60863ed8831887d75\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">tram::RaycastControllerComponent::enabled</a></div><div class=\"ttdeci\">bool enabled</div><div class=\"ttdef\"><b>Definition:</b> controller.h:179</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aa6bcf9e2bb535b216000806c8750f5bf\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">tram::RaycastControllerComponent::crouching</a></div><div class=\"ttdeci\">bool crouching</div><div class=\"ttdef\"><b>Definition:</b> controller.h:193</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aafc457ddb805587b041ad13495aaa6c6\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">tram::RaycastControllerComponent::is_in_air</a></div><div class=\"ttdeci\">bool is_in_air</div><div class=\"ttdef\"><b>Definition:</b> controller.h:181</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aafc558e1478f35254aa19f0bfd4bbac9\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">tram::RaycastControllerComponent::SetFlySpeed</a></div><div class=\"ttdeci\">void SetFlySpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:161</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ab9cc4edd8b6e0076ee4e6ffd0df8353c\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">tram::RaycastControllerComponent::SetCrouchSpeed</a></div><div class=\"ttdeci\">void SetCrouchSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:160</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ac3bc0f6a436b974dd1e207565bcee873\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">tram::RaycastControllerComponent::fly_speed</a></div><div class=\"ttdeci\">float fly_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:191</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ac4fb92ffbcee998d0d015535549f763d\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">tram::RaycastControllerComponent::crouch_speed</a></div><div class=\"ttdeci\">float crouch_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:190</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ac9876016d424f59dcbd70a22264ea0ed\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">tram::RaycastControllerComponent::run_speed</a></div><div class=\"ttdeci\">float run_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:189</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ad0e8ba76175ff6d4adabaa860ea82bd3\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">tram::RaycastControllerComponent::walk_speed</a></div><div class=\"ttdeci\">float walk_speed</div><div class=\"ttdef\"><b>Definition:</b> controller.h:188</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ae1b1d5c0947337f319d4a6ac8e29ee01\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">tram::RaycastControllerComponent::~RaycastControllerComponent</a></div><div class=\"ttdeci\">~RaycastControllerComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_ae97c6619effa4d637ecaca717798ba45\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">tram::RaycastControllerComponent::RecoverFromCollisions</a></div><div class=\"ttdeci\">void RecoverFromCollisions()</div><div class=\"ttdef\"><b>Definition:</b> controller.cpp:495</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aebcd878947abb26efd9f9fe66d6caf6b\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">tram::RaycastControllerComponent::step_height</a></div><div class=\"ttdeci\">float step_height</div><div class=\"ttdef\"><b>Definition:</b> controller.h:186</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_aec04a4c35f1bc0449e3f944e9034d7c3\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">tram::RaycastControllerComponent::SetWalkSpeed</a></div><div class=\"ttdeci\">void SetWalkSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:158</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_af3f3c01dc71c60f64fd65709c294e39d\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">tram::RaycastControllerComponent::standing_on_prev</a></div><div class=\"ttdeci\">id_t standing_on_prev</div><div class=\"ttdef\"><b>Definition:</b> controller.h:200</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_af9a6f218caee176cc5b25510edc9b34f\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">tram::RaycastControllerComponent::SetWallCollisionCallback</a></div><div class=\"ttdeci\">void SetWallCollisionCallback(void(*callback)(ControllerComponent *, Physics::Collision))</div><div class=\"ttdef\"><b>Definition:</b> controller.h:154</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_raycast_controller_component_html_afec9667d19d362fddf18e23fe5375c2a\"><div class=\"ttname\"><a href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">tram::RaycastControllerComponent::SetRunSpeed</a></div><div class=\"ttdeci\">void SetRunSpeed(float speed)</div><div class=\"ttdef\"><b>Definition:</b> controller.h:159</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">tram::Physics::COLL_PLAYER</a></div><div class=\"ttdeci\">@ COLL_PLAYER</div><div class=\"ttdef\"><b>Definition:</b> physics.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></div><div class=\"ttdoc\">Physics collision data.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:34</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/core_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/core.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">core.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Core functionality of the framework.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;cassert&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">id_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">tram::GenerateID</a> ()</td></tr>\n<tr class=\"memdesc:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a unique ID number.  <a href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">tram::GetTick</a> ()</td></tr>\n<tr class=\"memdesc:a45d3de117b68f4c584f4b9012b230557\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current tick.  <a href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">More...</a><br /></td></tr>\n<tr class=\"separator:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">tram::GetFrame</a> ()</td></tr>\n<tr class=\"memdesc:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current frame.  <a href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5510fd86603682d0cac4954bff11620\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">tram::GetDeltaTick</a> ()</td></tr>\n<tr class=\"memdesc:ac5510fd86603682d0cac4954bff11620\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the tick delta.  <a href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">More...</a><br /></td></tr>\n<tr class=\"separator:ac5510fd86603682d0cac4954bff11620\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">tram::GetTickTime</a> ()</td></tr>\n<tr class=\"memdesc:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Same as <a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\" title=\"Returns the time at the start of the current frame.\">GetFrameTime()</a>  <a href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">More...</a><br /></td></tr>\n<tr class=\"separator:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">tram::GetFrameTime</a> ()</td></tr>\n<tr class=\"memdesc:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time at the start of the current frame.  <a href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">More...</a><br /></td></tr>\n<tr class=\"separator:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">tram::GetDeltaTime</a> ()</td></tr>\n<tr class=\"memdesc:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time passed between frames.  <a href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">More...</a><br /></td></tr>\n<tr class=\"separator:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b5616291800641604306bbf678b3873\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">tram::GetVersion</a> ()</td></tr>\n<tr class=\"memdesc:a3b5616291800641604306bbf678b3873\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the version identifier of the runtime.  <a href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b5616291800641604306bbf678b3873\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Core functionality of the framework. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/core_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/core.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">core.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"core_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_core\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html\">tram::Core</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a25ae39989bce3dab64401c3956be9c03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></td></tr>\n<tr class=\"separator:a25ae39989bce3dab64401c3956be9c03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">id_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">tram::GenerateID</a> ()</td></tr>\n<tr class=\"memdesc:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a unique ID number.  <a href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">tram::GetTick</a> ()</td></tr>\n<tr class=\"memdesc:a45d3de117b68f4c584f4b9012b230557\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current tick.  <a href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">More...</a><br /></td></tr>\n<tr class=\"separator:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">tram::GetFrame</a> ()</td></tr>\n<tr class=\"memdesc:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current frame.  <a href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">tram::GetTickTime</a> ()</td></tr>\n<tr class=\"memdesc:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Same as <a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\" title=\"Returns the time at the start of the current frame.\">GetFrameTime()</a>  <a href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">More...</a><br /></td></tr>\n<tr class=\"separator:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">tram::GetFrameTime</a> ()</td></tr>\n<tr class=\"memdesc:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time at the start of the current frame.  <a href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">More...</a><br /></td></tr>\n<tr class=\"separator:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5510fd86603682d0cac4954bff11620\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">tram::GetDeltaTick</a> ()</td></tr>\n<tr class=\"memdesc:ac5510fd86603682d0cac4954bff11620\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the tick delta.  <a href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">More...</a><br /></td></tr>\n<tr class=\"separator:ac5510fd86603682d0cac4954bff11620\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">tram::GetDeltaTime</a> ()</td></tr>\n<tr class=\"memdesc:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time passed between frames.  <a href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">More...</a><br /></td></tr>\n<tr class=\"separator:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b5616291800641604306bbf678b3873\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">tram::GetVersion</a> ()</td></tr>\n<tr class=\"memdesc:a3b5616291800641604306bbf678b3873\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the version identifier of the runtime.  <a href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b5616291800641604306bbf678b3873\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">tram::Core::Init</a> ()</td></tr>\n<tr class=\"memdesc:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the core of the framework.  <a href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">More...</a><br /></td></tr>\n<tr class=\"separator:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca02676414df9541f853df2376da13bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">tram::Core::Update</a> ()</td></tr>\n<tr class=\"memdesc:aca02676414df9541f853df2376da13bd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the core system.  <a href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">More...</a><br /></td></tr>\n<tr class=\"separator:aca02676414df9541f853df2376da13bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/core_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/core.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">core.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"core_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_CORE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_CORE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">   10</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_function\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">GenerateID</a>();</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">GetTick</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">GetFrame</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">GetTickTime</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">GetFrameTime</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">GetDeltaTick</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">GetDeltaTime</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">GetVersion</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_core.html\">   25</a></span><span class=\"keyword\">namespace </span>Core {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>}</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>}</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_CORE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_core_html_a1704d5ca7badba9cc7486134bf2cc578\"><div class=\"ttname\"><a href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">tram::Core::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes the core of the framework.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_core_html_aca02676414df9541f853df2376da13bd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">tram::Core::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Updates the core system.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:57</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a370b9480a4f179e6e4c41d9d6a70fcb7\"><div class=\"ttname\"><a href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">tram::GetTickTime</a></div><div class=\"ttdeci\">double GetTickTime()</div><div class=\"ttdoc\">Same as GetFrameTime()</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:114</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a3b5616291800641604306bbf678b3873\"><div class=\"ttname\"><a href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">tram::GetVersion</a></div><div class=\"ttdeci\">const char * GetVersion()</div><div class=\"ttdoc\">Returns the version identifier of the runtime.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:134</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a45d3de117b68f4c584f4b9012b230557\"><div class=\"ttname\"><a href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">tram::GetTick</a></div><div class=\"ttdeci\">uint32_t GetTick()</div><div class=\"ttdoc\">Returns the current tick.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:95</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa3909d6bfd02679f663541f787f9c7b4\"><div class=\"ttname\"><a href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">tram::GetFrame</a></div><div class=\"ttdeci\">uint32_t GetFrame()</div><div class=\"ttdoc\">Returns the current frame.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac5510fd86603682d0cac4954bff11620\"><div class=\"ttname\"><a href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">tram::GetDeltaTick</a></div><div class=\"ttdeci\">uint32_t GetDeltaTick()</div><div class=\"ttdoc\">Returns the tick delta.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:108</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad9db30198d176e4ffed5b38273c4beb0\"><div class=\"ttname\"><a href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">tram::GenerateID</a></div><div class=\"ttdeci\">id_t GenerateID()</div><div class=\"ttdoc\">Generates a unique ID number.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aed55d85a1ab5cc85a558d180313eb64e\"><div class=\"ttname\"><a href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">tram::GetFrameTime</a></div><div class=\"ttdeci\">double GetFrameTime()</div><div class=\"ttdoc\">Returns the time at the start of the current frame.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:121</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af8af5a4731abe7a1b4cc34780bd1eb06\"><div class=\"ttname\"><a href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">tram::GetDeltaTime</a></div><div class=\"ttdeci\">float GetDeltaTime()</div><div class=\"ttdoc\">Returns the time passed between frames.</div><div class=\"ttdef\"><b>Definition:</b> core.cpp:129</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/crate_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/crate.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">crate.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"crate_8h_source.html\">entities/crate.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2script_8h_source.html\">entities/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:abebf242bd359cf070de0a7074f31d7c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram::FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\">tram::FIELD_COLLMODEL</a>\n }</td></tr>\n<tr class=\"separator:abebf242bd359cf070de0a7074f31d7c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/crate_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/crate.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">crate.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"crate_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html\">tram::Crate</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D Model with a rigidbody attached to it.  <a href=\"classtram_1_1_crate.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/crate_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/crate.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">crate.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"crate_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_CRATE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_CRATE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>PhysicsComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_crate.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_crate.html\">Crate</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">Crate</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">Crate</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* nname, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* modelname, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* collisionmodelname, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> rot);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">   29</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">   30</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">   32</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">model</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">   33</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>}</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_CRATE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html\">tram::Crate</a></div><div class=\"ttdoc\">3D Model with a rigidbody attached to it.</div><div class=\"ttdef\"><b>Definition:</b> crate.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a2fd93587f542e04c90e066df25468540\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">tram::Crate::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:80</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a30a0ab1f7c54b15b1eb0a02a381790bd\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">tram::Crate::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a378f96494bd77812a24ca507be4ac434\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">tram::Crate::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a5b3a84d80ef6d5107b4eed8b6f4a07f1\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">tram::Crate::Crate</a></div><div class=\"ttdeci\">Crate(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a5e88d32ca11233d9f779f6182e808934\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">tram::Crate::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:116</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a69259e33129f5d795e4fc449cc50a430\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">tram::Crate::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:87</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a739363f4998b4e6367a8dbc620156a34\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">tram::Crate::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> crate.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_a81bf1b61c023f0923ded303fabf343f2\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">tram::Crate::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> crate.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_aab88e1a8a682dcc308d4c9119abd711c\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">tram::Crate::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> crate.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_ab8336e58a8dcb7e3631db13003011232\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">tram::Crate::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_af5795bc6e73fbf1f6f40968ed4d53d96\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">tram::Crate::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> crate.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_af7343196750b22c09851f50d779faa86\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">tram::Crate::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_crate_html_aff35e03d11ebc3c23ab1c10f80aeb109\"><div class=\"ttname\"><a href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">tram::Crate::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> crate.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/debug_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/debug.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">debug.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">extensions/menu/debug.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;deque&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">tram::Ext::Menu::LogIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">tram::Ext::Menu::InitCallbacks</a> ()</td></tr>\n<tr class=\"separator:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">tram::Ext::Menu::UpdateCallbacks</a> ()</td></tr>\n<tr class=\"separator:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:af86d588e63468dd9f7b354da13f18124\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::deque&lt; std::string &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124\">tram::Ext::Menu::console_logs</a></td></tr>\n<tr class=\"separator:af86d588e63468dd9f7b354da13f18124\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8d4e5481ecd0bb091a930107037e0c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Intercept * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2\">tram::Ext::Menu::intercepts</a></td></tr>\n<tr class=\"separator:ad8d4e5481ecd0bb091a930107037e0c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/debug_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/debug.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">debug.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n<code>#include &lt;functional&gt;</code><br />\n</div>\n<p><a href=\"debug_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">tram::Ext::Menu::InitCallbacks</a> ()</td></tr>\n<tr class=\"separator:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">tram::Ext::Menu::UpdateCallbacks</a> ()</td></tr>\n<tr class=\"separator:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/debug_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/debug.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">debug.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"debug_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_MENU_DEBUG_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_MENU_DEBUG_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"menu_2menu_8h.html\">extensions/menu/menu.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;functional&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keyword\">class </span>WorldCell;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">InitCallbacks</a>();</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">UpdateCallbacks</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">class </span>InterceptMenu;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">class </span>StatisticsMenu;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">   22</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">   25</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">   26</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">~DebugMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">   28</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">intercept_enabled</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">   29</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">statistics_enabled</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">   30</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">intercept_menu</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">   31</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">statistics_menu</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">   34</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">EntityProperties</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">SetPicked</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">entity</a>);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">   37</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">   39</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">~EntityProperties</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">   41</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">entity</a> = 0;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">EntityPicker</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">EntityPicker</a>(<a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">std::function</a>&lt;<span class=\"keywordtype\">void</span>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">callback</a>);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">   47</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">   49</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">~EntityPicker</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">   51</a></span>    <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">std::function</a>&lt;void(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">callback</a>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>};</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">   54</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">ListSelection</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">ListSelection</a>(<a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">std::function</a>&lt;<span class=\"keywordtype\">void</span>(uint32_t)&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">callback</a>, std::vector&lt;std::string&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">list</a>);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">   57</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">Layer</a>() { <span class=\"keywordflow\">return</span> 2; }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">   59</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">~ListSelection</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">   61</a></span>    <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">std::function</a>&lt;void(uint32_t)&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">callback</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">   62</a></span>    std::vector&lt;std::string&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">list</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>};</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">   65</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">MessageSend</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">SetEntity</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">SetMessageType</a>(uint32_t type);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">   69</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">   71</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">~MessageSend</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">   73</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">parameter_type</a> = 0;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">   74</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">entity_id</a> = 0;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">   75</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">message_type</a> = 0;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">   76</a></span>    <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">parameter_string</a>[32] = <span class=\"stringliteral\">&quot;&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>};</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">   79</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">   82</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">   83</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">SetOffset</a>(uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a>) { this-&gt;offset = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a>; } </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">   84</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">~InterceptMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">   86</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">offset</a> = 0;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>};</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">   89</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">WorldCellProperties</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">SetPicked</a>(<a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">cell</a>);</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">   92</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">   94</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">~WorldCellProperties</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">   96</a></span>    <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">cell</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>};</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">   99</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">  102</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">  103</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">~StatisticsMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>};</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">  106</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">EventEmit</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">  108</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">SetEventType</a>(uint32_t type) { <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">event_type</a> = type; }</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">  109</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">  111</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">~EventEmit</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">  113</a></span>    uint16_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">subtype</a> = 0;</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">  114</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">parameter_type</a> = 0;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">  115</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">event_type</a> = 0;</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">  116</a></span>    <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">subtype_string</a>[8] = <span class=\"stringliteral\">&quot;0&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">  117</a></span>    <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">parameter_string</a>[32] = <span class=\"stringliteral\">&quot;&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>};</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">  120</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">SignalMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">  122</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">SetEntity</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity) { <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">entity_id</a> = entity; }</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">  124</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">Layer</a>() { <span class=\"keywordflow\">return</span> 2; }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">  125</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">~SignalMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">  127</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">entity_id</a> = 0;</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>};</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">  130</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">Options</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">  132</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">Options</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">  133</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">  135</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">~Options</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>};</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">  138</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">Console</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">Console</a>();</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">  141</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">Layer</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">~Console</a>();</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">  145</a></span>    <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">text</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">  146</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">history_cursor</a> = -1;</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>};</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>}</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">tram::Ext::Menu::Console</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:138</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_a5f626c471a7e2d91b3fb5b2c4a03b8e5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">tram::Ext::Menu::Console::history_cursor</a></div><div class=\"ttdeci\">int history_cursor</div><div class=\"ttdef\"><b>Definition:</b> debug.h:146</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_a6784de1db0572c2424cea93c4e0722dc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">tram::Ext::Menu::Console::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:141</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_a6a03f676654c17d2aaeadf875b90f4e1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">tram::Ext::Menu::Console::text</a></div><div class=\"ttdeci\">char * text</div><div class=\"ttdef\"><b>Definition:</b> debug.h:145</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_a8f37ecf596d0db477707c9d3ed698953\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">tram::Ext::Menu::Console::Console</a></div><div class=\"ttdeci\">Console()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:908</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_aae32f9a7938c628c698659957609cd7c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">tram::Ext::Menu::Console::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:917</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_console_html_adda3db0c47e9495176196c91373522fe\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">tram::Ext::Menu::Console::~Console</a></div><div class=\"ttdeci\">~Console()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:913</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">tram::Ext::Menu::DebugMenu</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_a0f6a07f1747a26714f916feaa04d01ab\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">tram::Ext::Menu::DebugMenu::statistics_menu</a></div><div class=\"ttdeci\">static StatisticsMenu * statistics_menu</div><div class=\"ttdef\"><b>Definition:</b> debug.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_a18c5d317ba9354cd41742e98fc2f723d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">tram::Ext::Menu::DebugMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:260</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_a3b84d612747abe7ce7521ec867b6df42\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">tram::Ext::Menu::DebugMenu::intercept_menu</a></div><div class=\"ttdeci\">static InterceptMenu * intercept_menu</div><div class=\"ttdef\"><b>Definition:</b> debug.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_a7188e373f52410e350fbf91d27c4a9b7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">tram::Ext::Menu::DebugMenu::~DebugMenu</a></div><div class=\"ttdeci\">~DebugMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_aaaeebe9c42d5ca723a4523549f3c633a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">tram::Ext::Menu::DebugMenu::intercept_enabled</a></div><div class=\"ttdeci\">static bool intercept_enabled</div><div class=\"ttdef\"><b>Definition:</b> debug.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_acbe4b614ff313801176a8d5c9323f200\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">tram::Ext::Menu::DebugMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_debug_menu_html_ae2ef205978570aa98b85d92117664971\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">tram::Ext::Menu::DebugMenu::statistics_enabled</a></div><div class=\"ttdeci\">static bool statistics_enabled</div><div class=\"ttdef\"><b>Definition:</b> debug.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">tram::Ext::Menu::EntityPicker</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html_a82465472dd314737a46e71a4bb490413\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">tram::Ext::Menu::EntityPicker::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html_a8c023a757a11debd8fd69ed09164e78a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">tram::Ext::Menu::EntityPicker::callback</a></div><div class=\"ttdeci\">std::function&lt; void(id_t)&gt; callback</div><div class=\"ttdef\"><b>Definition:</b> debug.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html_ab1f5eb1fcacb7e7e21312fca561f48af\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">tram::Ext::Menu::EntityPicker::EntityPicker</a></div><div class=\"ttdeci\">EntityPicker(std::function&lt; void(id_t)&gt; callback)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:398</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html_ad21501bc964c628113e9b89f396e602c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">tram::Ext::Menu::EntityPicker::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:402</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_picker_html_ae218519cd786e399c27b562fdeada24b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">tram::Ext::Menu::EntityPicker::~EntityPicker</a></div><div class=\"ttdeci\">~EntityPicker()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">tram::Ext::Menu::EntityProperties</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html_a2465ce3aca5ad2e0b1e7b4b69090132c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">tram::Ext::Menu::EntityProperties::SetPicked</a></div><div class=\"ttdeci\">void SetPicked(id_t entity)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:347</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html_a4a5a2895e27ec27d0872dbc9551d64f4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">tram::Ext::Menu::EntityProperties::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html_aa64a874d80a135c0eaa412fde3320808\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">tram::Ext::Menu::EntityProperties::~EntityProperties</a></div><div class=\"ttdeci\">~EntityProperties()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html_acf1bf7e593e36cb4b389c6632623b0e3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">tram::Ext::Menu::EntityProperties::entity</a></div><div class=\"ttdeci\">id_t entity</div><div class=\"ttdef\"><b>Definition:</b> debug.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_entity_properties_html_af4c550343edb9f75ef00d1b15e66636e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">tram::Ext::Menu::EntityProperties::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:351</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">tram::Ext::Menu::EventEmit</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_a123fd9dd1b5828d6e09669773c1c80d1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">tram::Ext::Menu::EventEmit::parameter_string</a></div><div class=\"ttdeci\">char parameter_string[32]</div><div class=\"ttdef\"><b>Definition:</b> debug.h:117</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_a3a3692407b1c476b25a80d299caa09a1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">tram::Ext::Menu::EventEmit::event_type</a></div><div class=\"ttdeci\">uint32_t event_type</div><div class=\"ttdef\"><b>Definition:</b> debug.h:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_a3b6187201edc29ec7ce239ac0eaad7af\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">tram::Ext::Menu::EventEmit::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:109</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_a62ff56e1969bb2b7cdd49446f8688de2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">tram::Ext::Menu::EventEmit::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:723</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_a7fe5f93eb89e11119d5cf0fb44e02494\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">tram::Ext::Menu::EventEmit::~EventEmit</a></div><div class=\"ttdeci\">~EventEmit()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_ab28d6b55f6c036ebd9399dd1bbb22e25\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">tram::Ext::Menu::EventEmit::subtype_string</a></div><div class=\"ttdeci\">char subtype_string[8]</div><div class=\"ttdef\"><b>Definition:</b> debug.h:116</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_ab8f2c00eee82630287cf68b3d9ca9469\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">tram::Ext::Menu::EventEmit::SetEventType</a></div><div class=\"ttdeci\">void SetEventType(uint32_t type)</div><div class=\"ttdef\"><b>Definition:</b> debug.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_ac74668908219798e42ccb5c73b8b60fd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">tram::Ext::Menu::EventEmit::parameter_type</a></div><div class=\"ttdeci\">uint32_t parameter_type</div><div class=\"ttdef\"><b>Definition:</b> debug.h:114</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_event_emit_html_afbcb5e97dee6c1c8eb8a4e4fff488c4f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">tram::Ext::Menu::EventEmit::subtype</a></div><div class=\"ttdeci\">uint16_t subtype</div><div class=\"ttdef\"><b>Definition:</b> debug.h:113</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">tram::Ext::Menu::InterceptMenu</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html_a2c39ca031c740b68ca7695bb8c3af75c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">tram::Ext::Menu::InterceptMenu::offset</a></div><div class=\"ttdeci\">uint32_t offset</div><div class=\"ttdef\"><b>Definition:</b> debug.h:86</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html_a350714cafdedf14bb78f9ccbc0c5d6b9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">tram::Ext::Menu::InterceptMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:82</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html_a5b0714060be9fd26726a1aa37108edc2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">tram::Ext::Menu::InterceptMenu::SetOffset</a></div><div class=\"ttdeci\">void SetOffset(uint32_t offset)</div><div class=\"ttdef\"><b>Definition:</b> debug.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html_a8e311e211e2d9b0d025ce9e1e571a166\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">tram::Ext::Menu::InterceptMenu::~InterceptMenu</a></div><div class=\"ttdeci\">~InterceptMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_intercept_menu_html_ace624827c9bfd8ef24aa15db1c2249c3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">tram::Ext::Menu::InterceptMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:551</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">tram::Ext::Menu::ListSelection</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_a03f4f84b736a200aafa2848c1e3e02cd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">tram::Ext::Menu::ListSelection::list</a></div><div class=\"ttdeci\">std::vector&lt; std::string &gt; list</div><div class=\"ttdef\"><b>Definition:</b> debug.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_a37f83670863cef2947520bfc87bf7439\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">tram::Ext::Menu::ListSelection::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_a3d214fa7bbb5d943a33213188da06d4f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">tram::Ext::Menu::ListSelection::ListSelection</a></div><div class=\"ttdeci\">ListSelection(std::function&lt; void(uint32_t)&gt; callback, std::vector&lt; std::string &gt; list)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:454</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_a5651a090194d79d5ce22e0bca536b760\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">tram::Ext::Menu::ListSelection::callback</a></div><div class=\"ttdeci\">std::function&lt; void(uint32_t)&gt; callback</div><div class=\"ttdef\"><b>Definition:</b> debug.h:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_a5f67db7b4e9fa99e969427ecee0636f6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">tram::Ext::Menu::ListSelection::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:459</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_list_selection_html_acc2b7e76a954f3d314a73908d427d03b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">tram::Ext::Menu::ListSelection::~ListSelection</a></div><div class=\"ttdeci\">~ListSelection()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">tram::Ext::Menu::MessageSend</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a0895a5a8ed80b2a60a59cb1fe37a5cc1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">tram::Ext::Menu::MessageSend::SetEntity</a></div><div class=\"ttdeci\">void SetEntity(id_t entity)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:486</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a0aac25870c19be99a9dbec77f3941bd6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">tram::Ext::Menu::MessageSend::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a20a8253e3f5b3401aad9cfad27133fb4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">tram::Ext::Menu::MessageSend::~MessageSend</a></div><div class=\"ttdeci\">~MessageSend()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a44e7e4389ab204102b9d53581be518d7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">tram::Ext::Menu::MessageSend::SetMessageType</a></div><div class=\"ttdeci\">void SetMessageType(uint32_t type)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:490</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a4a0c4f4d89dead8b68cdf556558bf446\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">tram::Ext::Menu::MessageSend::entity_id</a></div><div class=\"ttdeci\">id_t entity_id</div><div class=\"ttdef\"><b>Definition:</b> debug.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_a71295df4e886a77b31a12f873b8cf5c2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">tram::Ext::Menu::MessageSend::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:494</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_ac3eb62488f5accdcc4f60ef0f9d93fb0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">tram::Ext::Menu::MessageSend::parameter_type</a></div><div class=\"ttdeci\">uint32_t parameter_type</div><div class=\"ttdef\"><b>Definition:</b> debug.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_ac7674c2ea9dadef8e94fb4f9407271e3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">tram::Ext::Menu::MessageSend::parameter_string</a></div><div class=\"ttdeci\">char parameter_string[32]</div><div class=\"ttdef\"><b>Definition:</b> debug.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_message_send_html_af5a139a253bf7fccfbd60307e4552d03\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">tram::Ext::Menu::MessageSend::message_type</a></div><div class=\"ttdeci\">uint32_t message_type</div><div class=\"ttdef\"><b>Definition:</b> debug.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_options_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">tram::Ext::Menu::Options</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:130</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_options_html_a047aa5cac263824ead3e543667b2289b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">tram::Ext::Menu::Options::~Options</a></div><div class=\"ttdeci\">~Options()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_options_html_a11552024ef3e7976cf5b0fbcbbd63d22\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">tram::Ext::Menu::Options::Options</a></div><div class=\"ttdeci\">Options()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_options_html_a2987ac69185cc8573e00557bcc8eda86\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">tram::Ext::Menu::Options::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:873</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_options_html_aa6713b9bb4a7e222ce6ea27a7ecee557\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">tram::Ext::Menu::Options::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:133</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">tram::Ext::Menu::SignalMenu</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:120</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html_a0a8ace39c5fbd999a3651c9c3042b3a7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">tram::Ext::Menu::SignalMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html_a1b88163f3d0384c8d005d5457a75c923\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">tram::Ext::Menu::SignalMenu::entity_id</a></div><div class=\"ttdeci\">id_t entity_id</div><div class=\"ttdef\"><b>Definition:</b> debug.h:127</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html_ae32579e6e3511bb5642aa3abf416f6e1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">tram::Ext::Menu::SignalMenu::~SignalMenu</a></div><div class=\"ttdeci\">~SignalMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html_af2d0156404c23e79e3700b2cb0936282\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">tram::Ext::Menu::SignalMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:780</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_signal_menu_html_afb8fba8b653379700d91bef8816f036e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">tram::Ext::Menu::SignalMenu::SetEntity</a></div><div class=\"ttdeci\">void SetEntity(id_t entity)</div><div class=\"ttdef\"><b>Definition:</b> debug.h:122</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_statistics_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">tram::Ext::Menu::StatisticsMenu</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_statistics_menu_html_a0ecc5a8babc2c7f2efed7d7d05f57fc9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">tram::Ext::Menu::StatisticsMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_statistics_menu_html_a397886851d7cc3d304c552a8807e0596\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">tram::Ext::Menu::StatisticsMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:665</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_statistics_menu_html_a6ebc52f5c684a20cfad01e7c62e95809\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">tram::Ext::Menu::StatisticsMenu::~StatisticsMenu</a></div><div class=\"ttdeci\">~StatisticsMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">tram::Ext::Menu::WorldCellProperties</a></div><div class=\"ttdef\"><b>Definition:</b> debug.h:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html_a10cc9429cb5dca2cfbbb12505d28acbc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">tram::Ext::Menu::WorldCellProperties::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:578</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html_a4ebf84a47dcf839b8b4cc56c968e9647\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">tram::Ext::Menu::WorldCellProperties::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> debug.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html_a93063bcbb048c2fd86995f4ca5ad0ab4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">tram::Ext::Menu::WorldCellProperties::SetPicked</a></div><div class=\"ttdeci\">void SetPicked(WorldCell *cell)</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:574</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html_af1e688384507e5243de02c997e49f8fc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">tram::Ext::Menu::WorldCellProperties::cell</a></div><div class=\"ttdeci\">WorldCell * cell</div><div class=\"ttdef\"><b>Definition:</b> debug.h:96</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_world_cell_properties_html_af55b32e6c2a70a39efe13fd92ed3574f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">tram::Ext::Menu::WorldCellProperties::~WorldCellProperties</a></div><div class=\"ttdeci\">~WorldCellProperties()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></div><div class=\"ttdoc\">World streaming unit.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:16</div></div>\n<div class=\"ttc\" id=\"amenu_2menu_8h_html\"><div class=\"ttname\"><a href=\"menu_2menu_8h.html\">menu.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></div><div class=\"ttdoc\">Menu framework.</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_aabf1b590c1e568b43ccb3060adf2fa22\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">tram::Ext::Menu::UpdateCallbacks</a></div><div class=\"ttdeci\">void UpdateCallbacks()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:201</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_ab6a5cd004740b52fff348c26ee0a8b6c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">tram::Ext::Menu::InitCallbacks</a></div><div class=\"ttdeci\">void InitCallbacks()</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:146</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a4eb0c0bc6178c8d324c89f213a5a1a15\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">tram::Ext::Scripting::Lua::function</a></div><div class=\"ttdeci\">value_t(* function)(valuearray_t)</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:156</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/debugdrawer_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/debugdrawer.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">debugdrawer.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;btBulletDynamicsCommon.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n</div>\n<p><a href=\"debugdrawer_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/debugdrawer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/debugdrawer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">debugdrawer.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"debugdrawer_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef PHYSICS_BULLET_DEBUGDRAWER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define PHYSICS_BULLET_DEBUGDRAWER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;btBulletDynamicsCommon.h&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"gui_8h.html\">framework/gui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a> : <span class=\"keyword\">public</span> btIDebugDraw {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">   14</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">drawContactPoint</a>(<span class=\"keyword\">const</span> btVector3&amp; PointOnB, <span class=\"keyword\">const</span> btVector3&amp; normalOnB, btScalar distance, <span class=\"keywordtype\">int</span> lifeTime, <span class=\"keyword\">const</span> btVector3&amp; color) {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>        <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">drawLine</a>(PointOnB, normalOnB, color);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    };</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">   18</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">reportErrorWarning</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* warningString) {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>        std::cout &lt;&lt; warningString &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    };</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">draw3dText</a>(<span class=\"keyword\">const</span> btVector3&amp; location, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* textString) {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>        <span class=\"comment\">//GUI::DebugText(textString, {location.getX(), location.getY(), location.getZ()}, Render::COLOR_WHITE);</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    };</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">   26</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">setDebugMode</a>(<span class=\"keywordtype\">int</span> debugMode) {};</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">   28</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">getDebugMode</a>()<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <span class=\"keywordflow\">return</span> DBG_MAX_DEBUG_DRAW_MODE;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">   32</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">drawLine</a>(<span class=\"keyword\">const</span> btVector3&amp; from, <span class=\"keyword\">const</span> btVector3&amp; to, <span class=\"keyword\">const</span> btVector3&amp; color){</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">Render::AddLine</a>(</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>            {from.getX(),   from.getY(),    from.getZ()}, </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>            {to.getX(),     to.getY(),      to.getZ()}, </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>            {color.getX(),  color.getY(),   color.getZ()}</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>        );</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>};</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PHYSICS_BULLET_DEBUGDRAWER_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">tram::Physics::API::PhysicsDebugDraw</a></div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_a0c323eedacd1cf9f7cd2d5c7ef4be405\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">tram::Physics::API::PhysicsDebugDraw::reportErrorWarning</a></div><div class=\"ttdeci\">void reportErrorWarning(const char *warningString)</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_a77b61272d7ad912dc96eb1b4e721a6b2\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">tram::Physics::API::PhysicsDebugDraw::setDebugMode</a></div><div class=\"ttdeci\">void setDebugMode(int debugMode)</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_abee77254ff778ce50a428302815f0e3c\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">tram::Physics::API::PhysicsDebugDraw::draw3dText</a></div><div class=\"ttdeci\">void draw3dText(const btVector3 &amp;location, const char *textString)</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_adae82b61c61a54f3b62cdd0499b9cb44\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">tram::Physics::API::PhysicsDebugDraw::drawLine</a></div><div class=\"ttdeci\">void drawLine(const btVector3 &amp;from, const btVector3 &amp;to, const btVector3 &amp;color)</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_ae8dfaf1b441990503c10aad22f87cf3f\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">tram::Physics::API::PhysicsDebugDraw::getDebugMode</a></div><div class=\"ttdeci\">int getDebugMode() const</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw_html_afe6a8f72a58739c6ea26e3312b813cdd\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">tram::Physics::API::PhysicsDebugDraw::drawContactPoint</a></div><div class=\"ttdeci\">void drawContactPoint(const btVector3 &amp;PointOnB, const btVector3 &amp;normalOnB, btScalar distance, int lifeTime, const btVector3 &amp;color)</div><div class=\"ttdef\"><b>Definition:</b> debugdrawer.h:14</div></div>\n<div class=\"ttc\" id=\"agui_8h_html\"><div class=\"ttname\"><a href=\"gui_8h.html\">gui.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></div><div class=\"ttdoc\">Physics backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aaf8ef81eae0da772762ff835a3a24536\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render::AddLine</a></div><div class=\"ttdeci\">void AddLine(vec3 from, vec3 to, vec3 color)</div><div class=\"ttdoc\">Draws a line for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:266</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decal_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/decal.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">decal.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"decal_8h_source.html\">components/decal.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decal_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/decal.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">decal.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n</div>\n<p><a href=\"decal_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects decals onto the scene.  <a href=\"classtram_1_1_decal_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decal_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/decal.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">decal.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"decal_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_DECALCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_DECALCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2sprite_8h.html\">render/sprite.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">   13</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">DecalComponent</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>(this) {}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">~DecalComponent</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">   15</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">GetSprite</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>-&gt;GetName(); }</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">   17</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">SetSprite</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>) {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>        this-&gt;sprite = <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">   27</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">SetScale</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a>) {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>        this-&gt;scale = <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">   31</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">SetFrame</a>(uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a>) {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        this-&gt;frame = <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    }</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">   35</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a>) {</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        this-&gt;location = <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>        <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">   40</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a>) {</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>        this-&gt;rotation = <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">   45</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){<span class=\"keywordflow\">return</span>;}</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">   47</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Sprite&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">   49</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">   50</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">   52</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">scale</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">   54</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">frame</a> = 0;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">   56</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">draw_list_entry</a> = {};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">   57</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">vertex_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>};</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>}</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_DECALCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html\">tram::DecalComponent</a></div><div class=\"ttdoc\">Projects decals onto the scene.</div><div class=\"ttdef\"><b>Definition:</b> decal.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a0c93631ef6012a9b3e77b973debda630\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">tram::DecalComponent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> decal.cpp:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a0ecda8cd0fd000ba8d9af749319d198a\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">tram::DecalComponent::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> decal.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a0f75089eb63e3ad93137cad8a208a85c\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">tram::DecalComponent::SetScale</a></div><div class=\"ttdeci\">void SetScale(float scale)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a1c1f2732d6481c3e25c7a5bca8c0f7e6\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">tram::DecalComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a2f8e987f85f6ff0720b415e87509510e\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">tram::DecalComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> decal.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a311a631005417b52f325462a23685f78\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">tram::DecalComponent::sprite</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Sprite &gt; sprite</div><div class=\"ttdef\"><b>Definition:</b> decal.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a3e8165999c84aaa7af2d92e22b0e19cf\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">tram::DecalComponent::draw_list_entry</a></div><div class=\"ttdeci\">Render::drawlistentry_t draw_list_entry</div><div class=\"ttdef\"><b>Definition:</b> decal.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a59130c628a9585b0c39b12b96b915994\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">tram::DecalComponent::UpdateRenderListObject</a></div><div class=\"ttdeci\">void UpdateRenderListObject()</div><div class=\"ttdef\"><b>Definition:</b> decal.cpp:181</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a86fa64e28b7c9c0784be77892022a96d\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">tram::DecalComponent::DecalComponent</a></div><div class=\"ttdeci\">DecalComponent()</div><div class=\"ttdef\"><b>Definition:</b> decal.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a8a57cc185df060416fd0d3b69cd7422d\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">tram::DecalComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_a8cde217b87b345af7bd38a674afeea13\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">tram::DecalComponent::frame</a></div><div class=\"ttdeci\">uint32_t frame</div><div class=\"ttdef\"><b>Definition:</b> decal.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_aa1a667b7f5e747d2216eeab28bf99de9\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">tram::DecalComponent::SetSprite</a></div><div class=\"ttdeci\">void SetSprite(Render::Sprite *sprite)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_ab83fc898b9b0eebb2534149a51d0bbad\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">tram::DecalComponent::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat rotation)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_abc2da65e6a353c30908e5826b744b217\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">tram::DecalComponent::vertex_array</a></div><div class=\"ttdeci\">Render::vertexarray_t vertex_array</div><div class=\"ttdef\"><b>Definition:</b> decal.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_abe8edd2e09691f0f2f0a5b2f150f7cca\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">tram::DecalComponent::scale</a></div><div class=\"ttdeci\">float scale</div><div class=\"ttdef\"><b>Definition:</b> decal.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_ae71a412c19ba4fbc92fbb17507992267\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">tram::DecalComponent::~DecalComponent</a></div><div class=\"ttdeci\">~DecalComponent()</div><div class=\"ttdef\"><b>Definition:</b> decal.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_aec504c10a2756f3d0c7746d706483be9\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">tram::DecalComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> decal.cpp:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_af3ff3ceaf63a48c77bbadd3788384ce6\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">tram::DecalComponent::SetFrame</a></div><div class=\"ttdeci\">void SetFrame(uint32_t frame)</div><div class=\"ttdef\"><b>Definition:</b> decal.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decal_component_html_afc221ff999d6777f7d0bf15a63e8b11b\"><div class=\"ttname\"><a href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">tram::DecalComponent::GetSprite</a></div><div class=\"ttdeci\">name_t GetSprite()</div><div class=\"ttdef\"><b>Definition:</b> decal.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arender_2sprite_8h_html\"><div class=\"ttname\"><a href=\"render_2sprite_8h.html\">sprite.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:149</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decoration_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/decoration.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">decoration.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"decoration_8h_source.html\">entities/decoration.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ace0f2946cbdd6fa99edd7597d589c36a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\">tram::FLAG_LOCKED</a> = 1\n }</td></tr>\n<tr class=\"separator:ace0f2946cbdd6fa99edd7597d589c36a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21be90fb412cdf8c5703ab2155b270a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">tram::FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram::FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\">tram::FIELD_ANIMATION</a>\n }</td></tr>\n<tr class=\"separator:a21be90fb412cdf8c5703ab2155b270a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decoration_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/decoration.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">decoration.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"decoration_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">tram::Decoration</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it.  <a href=\"classtram_1_1_decoration.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/decoration_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/decoration.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">decoration.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"decoration_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_DECORATION_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_DECORATION_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>AnimationComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">class </span>PhysicsComponent;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\">// TODO: add a field that lets you set how fast the animation fades</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">// TODO: don&#39;t create animation component if there is no animation?</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html\">   19</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_decoration.html\">Decoration</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">Decoration</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">   31</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">   32</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;AnimationComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">animationcomponent</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">   33</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">RequestAnimationComponent</a>();</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">   37</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">model</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">   38</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">animation</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">   40</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">decoration_flags</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>}</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_DECORATION_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html\">tram::Decoration</a></div><div class=\"ttdoc\">3D Model with an AnimationComponent attached to it.</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a18546c61e3519a3a6ab882e7deb160fb\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">tram::Decoration::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a1b74c5467bdfdcf8749f0b3c172832ad\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">tram::Decoration::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a1d99378203e46938e612013702b092d6\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">tram::Decoration::decoration_flags</a></div><div class=\"ttdeci\">uint32_t decoration_flags</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a24081b56bcc532c09441c1f4a71d0e12\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">tram::Decoration::animationcomponent</a></div><div class=\"ttdeci\">Component&lt; AnimationComponent &gt; animationcomponent</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a3be7afb5d539dfef12b41d9132b051ae\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">tram::Decoration::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:127</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a583857b0ebd4e260c7ef634ff93d7bdf\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">tram::Decoration::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a6bd26ad8c997a12796c4523dd0f3f8e6\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">tram::Decoration::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a7e637e1beaf0cfc3a933d7a72304122b\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">tram::Decoration::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a80442c970e96a9d3ec14046048833d87\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">tram::Decoration::Decoration</a></div><div class=\"ttdeci\">Decoration(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a9d89648397f17f989b157f3981f4d41f\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">tram::Decoration::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:131</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_a9ed3fb5e8c71f3491fe57c843e0325e1\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">tram::Decoration::animation</a></div><div class=\"ttdeci\">name_t animation</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_aa0c8b3925860c63caa0c525c9160195d\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">tram::Decoration::RequestAnimationComponent</a></div><div class=\"ttdeci\">void RequestAnimationComponent()</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_ab6212cdb928b6d3f28cdd0ed5d7b6053\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">tram::Decoration::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_ad8917fa59a923deca11f37f96825f9b5\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">tram::Decoration::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:117</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_ade298a17a196fd33a11d421657e5a423\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">tram::Decoration::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> decoration.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_decoration_html_af3ea5d13e17e6b50f233a9104892ba1c\"><div class=\"ttname\"><a href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">tram::Decoration::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> decoration.cpp:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/definitions_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/definitions.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">definitions.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"spinlock_8h_source.html\">templates/spinlock.h</a>&gt;</code><br />\n</div>\n<p><a href=\"definitions_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_spatial\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_spatial\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Experimental path tracing audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a29e8b2fda522dd1d5e8f4ec648217351\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">tram::Audio::Spatial::AudioSourceFlags</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">tram::Audio::Spatial::SOURCE_PLAYING</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">tram::Audio::Spatial::SOURCE_REPEATING</a> = 2\n }</td></tr>\n<tr class=\"separator:a29e8b2fda522dd1d5e8f4ec648217351\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade3f518b6f4fc8663aa6cc3143481f92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">tram::Audio::Spatial::AudioSampleRate</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">tram::Audio::Spatial::SAMPLERATE_44100</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">tram::Audio::Spatial::SAMPLERATE_22050</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">tram::Audio::Spatial::SAMPLERATE_11025</a> = 4\n }</td></tr>\n<tr class=\"separator:ade3f518b6f4fc8663aa6cc3143481f92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a84078cbb908ef623f2337cdce8a777b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">tram::Audio::Spatial::PATHS_FOR_RENDERING</a> = 10</td></tr>\n<tr class=\"separator:a84078cbb908ef623f2337cdce8a777b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6d4c2f9690d64f882c492e5e9075eae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">tram::Audio::Spatial::PATHS_FOR_SOURCE</a> = 5</td></tr>\n<tr class=\"separator:ab6d4c2f9690d64f882c492e5e9075eae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe41831e149db1775fb1a738b693a2e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">tram::Audio::Spatial::PATHS_FOR_LISTENER</a> = 5</td></tr>\n<tr class=\"separator:abe41831e149db1775fb1a738b693a2e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac53db006980b48a77fdcc80c34854c20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">tram::Audio::Spatial::BUFFER_COUNT</a> = 1000</td></tr>\n<tr class=\"separator:ac53db006980b48a77fdcc80c34854c20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1dc54415cd0414f047cfd68c37ef13a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">tram::Audio::Spatial::SOURCE_COUNT</a> = 200</td></tr>\n<tr class=\"separator:a1dc54415cd0414f047cfd68c37ef13a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a470153ad5cab64ede6d4a517710c7aee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">tram::Audio::Spatial::SOURCE_DEPTH_LIMIT</a> = 3</td></tr>\n<tr class=\"separator:a470153ad5cab64ede6d4a517710c7aee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa61124c29ea3a00d8124d9c20dd8a4af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">tram::Audio::Spatial::LISTENER_DEPTH_LIMIT</a> = 6</td></tr>\n<tr class=\"separator:aa61124c29ea3a00d8124d9c20dd8a4af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0220900672de1f44004ac3fbea75384e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">AudioBuffer&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">tram::Audio::Spatial::audiobuffers</a> [BUFFER_COUNT]</td></tr>\n<tr class=\"separator:a0220900672de1f44004ac3fbea75384e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09a8fe4a1def9a9851bd0eb34988036f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">AudioSource&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">tram::Audio::Spatial::audiosources</a> [SOURCE_COUNT]</td></tr>\n<tr class=\"separator:a09a8fe4a1def9a9851bd0eb34988036f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1707c3651d829fc8dccf07265d990501\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">AudioRender&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">tram::Audio::Spatial::audiorenders</a> [SOURCE_COUNT]</td></tr>\n<tr class=\"separator:a1707c3651d829fc8dccf07265d990501\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d4e5961da95174066a93816b9b418ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">tram::Audio::Spatial::listener_position</a></td></tr>\n<tr class=\"separator:a7d4e5961da95174066a93816b9b418ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb9b0bd1fd2aee84d39ac5b2f656eac8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">quat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">tram::Audio::Spatial::listener_orientation</a></td></tr>\n<tr class=\"separator:acb9b0bd1fd2aee84d39ac5b2f656eac8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a572ed0408e51e97d4aab9499559dcabe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">tram::Audio::Spatial::listener_reverb_delay</a> [5]</td></tr>\n<tr class=\"separator:a572ed0408e51e97d4aab9499559dcabe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d1dc309e3904bd79c244bbc63c00839\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">tram::Audio::Spatial::listener_reverb_distance</a> [5]</td></tr>\n<tr class=\"separator:a8d1dc309e3904bd79c244bbc63c00839\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abadc037457811482c0cc517072ab1f77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">tram::Audio::Spatial::listener_reverb_force</a> [5]</td></tr>\n<tr class=\"separator:abadc037457811482c0cc517072ab1f77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4353683a488762dd6403d5c7d5f6e1fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">tram::Audio::Spatial::listener_reverb_normalized</a> [5]</td></tr>\n<tr class=\"separator:a4353683a488762dd6403d5c7d5f6e1fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/definitions_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/definitions.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">definitions.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"definitions_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"spinlock_8h.html\">templates/spinlock.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">   10</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">   12</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">PATHS_FOR_RENDERING</a> = 10;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">   13</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">PATHS_FOR_SOURCE</a> = 5;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">   14</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">PATHS_FOR_LISTENER</a> = 5;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">   16</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">BUFFER_COUNT</a> = 1000;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">   17</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a> = 200;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">   19</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">SOURCE_DEPTH_LIMIT</a> = 3;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">   20</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a> = 6;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">// actually this might be useful!!! for both. or not</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">   23</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">   24</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">force</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">   25</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">sampling_direction</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">   26</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">cycles_since_last_hit</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"comment\">// this is the successful path that might need to be revalidated</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">   30</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> {</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">   31</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">force</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">   32</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">   33</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">cycles_since_last_hit</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">   34</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">reflection_count</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">arrival_direction</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">   37</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">reflection_absorption</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">   38</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">listener_ideal_angle</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">   39</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">source_ideal_angle</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">   42</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">point</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">   43</a></span>    } <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">reflections</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">SOURCE_DEPTH_LIMIT</a> * <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>];</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>};</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">   46</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a> {</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">   48</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">point</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">   49</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">direction</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">   50</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">force</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">   51</a></span>    } <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">reflections</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>];</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">   52</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">source_direction</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>};</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">// this is handed over to the rendering algorithm</span></div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">   56</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a> {</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">   57</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">force</a>;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">   58</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">panning</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">   59</a></span>    int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">panning_delay</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">   60</a></span>    int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">distance_delay</a>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>};</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">   63</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">AudioSourceFlags</a> : uint16_t {</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">   64</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">SOURCE_PLAYING</a> = 1,</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">SOURCE_REPEATING</a> = 2</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">   66</a></span>};</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">   68</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">AudioSampleRate</a> : uint16_t {</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">   69</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">SAMPLERATE_44100</a> = 1,</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">   70</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">SAMPLERATE_22050</a> = 2,</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">SAMPLERATE_11025</a> = 4</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">   72</a></span>};</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">   74</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a> {</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">   75</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">AudioSampleRate</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">sample_rate</a>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">   76</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">channels</a>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">   77</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">length</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">   78</a></span>    <span class=\"keywordtype\">float</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">data</a>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">// Audio source information for path tracing</span></div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">   82</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a> {</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">   83</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">position</a>;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">   85</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">paths</a>; <span class=\"comment\">// bidirectional paths</span></div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">   87</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">result_paths</a>;</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">   88</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">last_path</a>;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>};</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"comment\">// Audio source information for rendering</span></div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">   92</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a> {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">   93</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_spinlock.html\">Spinlock</a> <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">lock</a>;</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">   94</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">flags</a>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">   95</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">sample</a>;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">   96</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">buffer</a>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">   97</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">paths</a>;</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>};</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">extern</span> <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">audiobuffers</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">BUFFER_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">extern</span> <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">audiosources</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><span class=\"keyword\">extern</span> <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">audiorenders</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">listener_position</a>;</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">listener_orientation</a>;</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">extern</span> int32_t <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">listener_reverb_delay</a>[5];</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"keyword\">extern</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">listener_reverb_distance</a>[5];</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"keyword\">extern</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">listener_reverb_force</a>[5];</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"keyword\">extern</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">listener_reverb_normalized</a>[5];</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_spinlock_html\"><div class=\"ttname\"><a href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a></div><div class=\"ttdef\"><b>Definition:</b> spinlock.h:13</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></div><div class=\"ttdoc\">Experimental path tracing audio system.</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a0220900672de1f44004ac3fbea75384e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">tram::Audio::Spatial::audiobuffers</a></div><div class=\"ttdeci\">AudioBuffer audiobuffers[BUFFER_COUNT]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a09a8fe4a1def9a9851bd0eb34988036f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">tram::Audio::Spatial::audiosources</a></div><div class=\"ttdeci\">AudioSource audiosources[SOURCE_COUNT]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a1707c3651d829fc8dccf07265d990501\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">tram::Audio::Spatial::audiorenders</a></div><div class=\"ttdeci\">AudioRender audiorenders[SOURCE_COUNT]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a1dc54415cd0414f047cfd68c37ef13a8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">tram::Audio::Spatial::SOURCE_COUNT</a></div><div class=\"ttdeci\">const size_t SOURCE_COUNT</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a29e8b2fda522dd1d5e8f4ec648217351\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">tram::Audio::Spatial::AudioSourceFlags</a></div><div class=\"ttdeci\">AudioSourceFlags</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:63</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">tram::Audio::Spatial::SOURCE_REPEATING</a></div><div class=\"ttdeci\">@ SOURCE_REPEATING</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:65</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">tram::Audio::Spatial::SOURCE_PLAYING</a></div><div class=\"ttdeci\">@ SOURCE_PLAYING</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:64</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a4353683a488762dd6403d5c7d5f6e1fb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">tram::Audio::Spatial::listener_reverb_normalized</a></div><div class=\"ttdeci\">float listener_reverb_normalized[5]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a470153ad5cab64ede6d4a517710c7aee\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">tram::Audio::Spatial::SOURCE_DEPTH_LIMIT</a></div><div class=\"ttdeci\">const size_t SOURCE_DEPTH_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a572ed0408e51e97d4aab9499559dcabe\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">tram::Audio::Spatial::listener_reverb_delay</a></div><div class=\"ttdeci\">int32_t listener_reverb_delay[5]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a7d4e5961da95174066a93816b9b418ad\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">tram::Audio::Spatial::listener_position</a></div><div class=\"ttdeci\">vec3 listener_position</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a84078cbb908ef623f2337cdce8a777b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">tram::Audio::Spatial::PATHS_FOR_RENDERING</a></div><div class=\"ttdeci\">const size_t PATHS_FOR_RENDERING</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a8d1dc309e3904bd79c244bbc63c00839\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">tram::Audio::Spatial::listener_reverb_distance</a></div><div class=\"ttdeci\">float listener_reverb_distance[5]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_aa61124c29ea3a00d8124d9c20dd8a4af\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">tram::Audio::Spatial::LISTENER_DEPTH_LIMIT</a></div><div class=\"ttdeci\">const size_t LISTENER_DEPTH_LIMIT</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ab6d4c2f9690d64f882c492e5e9075eae\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">tram::Audio::Spatial::PATHS_FOR_SOURCE</a></div><div class=\"ttdeci\">const size_t PATHS_FOR_SOURCE</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_abadc037457811482c0cc517072ab1f77\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">tram::Audio::Spatial::listener_reverb_force</a></div><div class=\"ttdeci\">float listener_reverb_force[5]</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_abe41831e149db1775fb1a738b693a2e4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">tram::Audio::Spatial::PATHS_FOR_LISTENER</a></div><div class=\"ttdeci\">const size_t PATHS_FOR_LISTENER</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ac53db006980b48a77fdcc80c34854c20\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">tram::Audio::Spatial::BUFFER_COUNT</a></div><div class=\"ttdeci\">const size_t BUFFER_COUNT</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_acb9b0bd1fd2aee84d39ac5b2f656eac8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">tram::Audio::Spatial::listener_orientation</a></div><div class=\"ttdeci\">quat listener_orientation</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ade3f518b6f4fc8663aa6cc3143481f92\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">tram::Audio::Spatial::AudioSampleRate</a></div><div class=\"ttdeci\">AudioSampleRate</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:68</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">tram::Audio::Spatial::SAMPLERATE_22050</a></div><div class=\"ttdeci\">@ SAMPLERATE_22050</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:70</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">tram::Audio::Spatial::SAMPLERATE_11025</a></div><div class=\"ttdeci\">@ SAMPLERATE_11025</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:71</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">tram::Audio::Spatial::SAMPLERATE_44100</a></div><div class=\"ttdeci\">@ SAMPLERATE_44100</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:69</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aspinlock_8h_html\"><div class=\"ttname\"><a href=\"spinlock_8h.html\">spinlock.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_buffer_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_buffer_html_a31d58d975d8c500b69f62db5d998cb4f\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">tram::Audio::Spatial::AudioBuffer::sample_rate</a></div><div class=\"ttdeci\">AudioSampleRate sample_rate</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:75</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_buffer_html_a88c6843050757be44715ec68be75aee7\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">tram::Audio::Spatial::AudioBuffer::data</a></div><div class=\"ttdeci\">float * data</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:78</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_buffer_html_aa356def298534b01ba646ab533a9340f\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">tram::Audio::Spatial::AudioBuffer::channels</a></div><div class=\"ttdeci\">uint32_t channels</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:76</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_buffer_html_aedd3b42bb186f9f0902e148cb315e64c\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">tram::Audio::Spatial::AudioBuffer::length</a></div><div class=\"ttdeci\">size_t length</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:77</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:92</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html_a0e6693da21f0990dd89c5745b018764d\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">tram::Audio::Spatial::AudioRender::flags</a></div><div class=\"ttdeci\">uint16_t flags</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:94</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html_a2aa48cc3aaf2682ae9d82c25d9efa6b8\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">tram::Audio::Spatial::AudioRender::paths</a></div><div class=\"ttdeci\">PathRenderingInfo * paths</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:97</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html_a3de86af0e9c4a8ecf0b84c74f66b815e\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">tram::Audio::Spatial::AudioRender::sample</a></div><div class=\"ttdeci\">uint32_t sample</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:95</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html_aa2e3f19d4d0628de60db45e064d97212\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">tram::Audio::Spatial::AudioRender::buffer</a></div><div class=\"ttdeci\">AudioBuffer * buffer</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:96</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_render_html_ae791d5a4cb90154dccd3baa41bd19442\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">tram::Audio::Spatial::AudioRender::lock</a></div><div class=\"ttdeci\">Spinlock lock</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_source_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:82</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_source_html_a2307e10b58bfd5e4226f76a8fd562630\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">tram::Audio::Spatial::AudioSource::paths</a></div><div class=\"ttdeci\">PathFromAudioSource * paths</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:85</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_source_html_a45a1264a5f87e8e4cbc767b3511adfc6\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">tram::Audio::Spatial::AudioSource::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:83</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_source_html_a8768b3b7278d9cc7cf1401a56b9ee64f\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">tram::Audio::Spatial::AudioSource::last_path</a></div><div class=\"ttdeci\">size_t last_path</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:88</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_audio_source_html_a9b6559e0ee3ca945a46bcf95ca60d25e\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">tram::Audio::Spatial::AudioSource::result_paths</a></div><div class=\"ttdeci\">PathTracingResult * result_paths</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:87</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_exploration_result_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_exploration_result_html_a43985ab3f8a3450cb1f6d9c732c2b9e7\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">tram::Audio::Spatial::PathExplorationResult::force</a></div><div class=\"ttdeci\">float force</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_exploration_result_html_a46a0473cea400f336d28d65b5625cd7d\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">tram::Audio::Spatial::PathExplorationResult::sampling_direction</a></div><div class=\"ttdeci\">vec3 sampling_direction</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_exploration_result_html_aebc3bf33c046d283ef6fe0b83a8e73ff\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">tram::Audio::Spatial::PathExplorationResult::cycles_since_last_hit</a></div><div class=\"ttdeci\">uint32_t cycles_since_last_hit</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html_a0daad3712479c354367bbb338368f6a7\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">tram::Audio::Spatial::PathFromAudioSource::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html_a224a92306d48694e4256b258d1ad0c2b\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">tram::Audio::Spatial::PathFromAudioSource::force</a></div><div class=\"ttdeci\">float force</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html_a2cc3ae9172c3a920dab2553009c900d6\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">tram::Audio::Spatial::PathFromAudioSource::source_direction</a></div><div class=\"ttdeci\">vec3 source_direction</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html_a5f809d617ba9af7d80992d569868ccb7\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">tram::Audio::Spatial::PathFromAudioSource::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:48</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html_ad8d0951179c5050779f6c44c83dc3ba5\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">tram::Audio::Spatial::PathFromAudioSource::reflections</a></div><div class=\"ttdeci\">struct tram::Audio::Spatial::PathFromAudioSource::@7 reflections[LISTENER_DEPTH_LIMIT]</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_rendering_info_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_rendering_info_html_a25cccaf4eef89dd7b557744b85e0c4a5\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">tram::Audio::Spatial::PathRenderingInfo::panning_delay</a></div><div class=\"ttdeci\">int32_t panning_delay</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_rendering_info_html_a78cb51ec6fb70e03023f07e2e73a4151\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">tram::Audio::Spatial::PathRenderingInfo::panning</a></div><div class=\"ttdeci\">float panning</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_rendering_info_html_ab2e46bddf62459ce6f74591478c1f09b\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">tram::Audio::Spatial::PathRenderingInfo::force</a></div><div class=\"ttdeci\">float force</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:57</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_rendering_info_html_ae2caac1002a91fa0d362a3edbf3cb45e\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">tram::Audio::Spatial::PathRenderingInfo::distance_delay</a></div><div class=\"ttdeci\">int32_t distance_delay</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_a217efabbc7b81c3fe4ca8ac67526863b\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">tram::Audio::Spatial::PathTracingResult::source_ideal_angle</a></div><div class=\"ttdeci\">vec3 source_ideal_angle</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_a241ad9bff06f84bc1924722fa97ef5ec\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">tram::Audio::Spatial::PathTracingResult::reflection_count</a></div><div class=\"ttdeci\">uint32_t reflection_count</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_a493b960cdc2495f703f392b83e2ef657\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">tram::Audio::Spatial::PathTracingResult::force</a></div><div class=\"ttdeci\">float force</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_a4f0cda1076cd190d46c1a0f03e9f9f44\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">tram::Audio::Spatial::PathTracingResult::cycles_since_last_hit</a></div><div class=\"ttdeci\">uint32_t cycles_since_last_hit</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_a56f99496bd44366e4bca18e6ca954952\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">tram::Audio::Spatial::PathTracingResult::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_aa24833c62159206914afc05979470fa8\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">tram::Audio::Spatial::PathTracingResult::listener_ideal_angle</a></div><div class=\"ttdeci\">vec3 listener_ideal_angle</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_aa3558215b661cecc8bb1ec9bb2654898\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">tram::Audio::Spatial::PathTracingResult::reflections</a></div><div class=\"ttdeci\">struct tram::Audio::Spatial::PathTracingResult::@6 reflections[SOURCE_DEPTH_LIMIT *LISTENER_DEPTH_LIMIT]</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_aab4ef60ba584a8d10ab12d5fe2674b32\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">tram::Audio::Spatial::PathTracingResult::arrival_direction</a></div><div class=\"ttdeci\">vec3 arrival_direction</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_abf8c49606dda008b43d5035691a72549\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">tram::Audio::Spatial::PathTracingResult::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html_ad239e98f2f77864eb10988803b8729d3\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">tram::Audio::Spatial::PathTracingResult::reflection_absorption</a></div><div class=\"ttdeci\">float reflection_absorption</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:37</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/deprecated.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Deprecated List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div><div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Deprecated List </div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><dl class=\"reflist\">\n<dt>Member <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">tram::Entity::RegisterType</a>  (name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</dt>\n<dd><a class=\"anchor\" id=\"_deprecated000001\"></a>Use other <a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\" title=\"Registers a new entity type.\">RegisterType()</a> methods instead. </dd>\n</dl>\n</div></div><!-- contents -->\n</div><!-- PageDoc -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/design_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/design.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">design.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"design_8h_source.html\">extensions/kitchensink/design.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;assert.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_design\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">tram::Ext::Design</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aac1cd73be090f564a675166e14e00b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#aac1cd73be090f564a675166e14e00b7e\">tram::Ext::Design::Init</a> ()</td></tr>\n<tr class=\"separator:aac1cd73be090f564a675166e14e00b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb48a793df0d161d258c9d3f677f68f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#afb48a793df0d161d258c9d3f677f68f9\">tram::Ext::Design::Update</a> ()</td></tr>\n<tr class=\"separator:afb48a793df0d161d258c9d3f677f68f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a5aa6346efea0ba40a4d9ca6b622e6e08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a5aa6346efea0ba40a4d9ca6b622e6e08\">tram::Ext::Design::KITCHENSINK_SYSTEM</a> = -1u</td></tr>\n<tr class=\"separator:a5aa6346efea0ba40a4d9ca6b622e6e08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/design_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/design.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">design.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"design_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_design\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">tram::Ext::Design</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aac1cd73be090f564a675166e14e00b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#aac1cd73be090f564a675166e14e00b7e\">tram::Ext::Design::Init</a> ()</td></tr>\n<tr class=\"separator:aac1cd73be090f564a675166e14e00b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb48a793df0d161d258c9d3f677f68f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#afb48a793df0d161d258c9d3f677f68f9\">tram::Ext::Design::Update</a> ()</td></tr>\n<tr class=\"separator:afb48a793df0d161d258c9d3f677f68f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/design_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/design.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">design.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"design_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">// This extension basically contains a bunch of random reusable game mechanics.</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">// They could be used to implement a FPS-type or an RPG-type game.</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_DESIGN_DESIGN_H</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_DESIGN_DESIGN_H</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_design.html\">tram::Ext::Design</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_design.html#aac1cd73be090f564a675166e14e00b7e\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_design.html#afb48a793df0d161d258c9d3f677f68f9\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>}</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_DESIGN_DESIGN_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_design_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_design.html\">tram::Ext::Design</a></div><div class=\"ttdef\"><b>Definition:</b> design.cpp:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_design_html_aac1cd73be090f564a675166e14e00b7e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_design.html#aac1cd73be090f564a675166e14e00b7e\">tram::Ext::Design::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> design.cpp:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_design_html_afb48a793df0d161d258c9d3f677f68f9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_design.html#afb48a793df0d161d258c9d3f677f68f9\">tram::Ext::Design::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> design.cpp:27</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dialog_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/dialog.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">dialog.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">extensions/kitchensink/dialog.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">extensions/kitchensink/quest.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a388f74aaa8aeb8efd221f91bf2014504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504\">tram::Ext::Kitchensink::RecursivelyAppendNextTopic</a> (std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &amp;topics, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> appendable)</td></tr>\n<tr class=\"separator:a388f74aaa8aeb8efd221f91bf2014504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dialog_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/dialog.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">dialog.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"dialog_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a9ab8b667486c023b0e1defc92b807c54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">tram::Ext::Kitchensink::DialogType</a> { <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">tram::Ext::Kitchensink::DIALOG_TOPIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">tram::Ext::Kitchensink::DIALOG_IMPORT_SINGLE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">tram::Ext::Kitchensink::DIALOG_IMPORT_MULTIPLE</a>\n }</td></tr>\n<tr class=\"separator:a9ab8b667486c023b0e1defc92b807c54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dialog_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/dialog.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">dialog.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"dialog_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">DialogType</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">DIALOG_TOPIC</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">DIALOG_IMPORT_SINGLE</a>,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">DIALOG_IMPORT_MULTIPLE</a></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"comment\">// TODO: add greetings, etc.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">   18</a></span>};  </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">   20</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">   21</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">quest</a>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">   22</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">variable</a>;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">IsMet</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>};</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">   27</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a> {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">   28</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">quest</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">   29</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">trigger</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">Perform</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">   34</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> {</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">   35</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">DialogType</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">DIALOG_TOPIC</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">   37</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">name</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">   39</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">prompt</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">   40</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">answer</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">   42</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">condition</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">   43</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">action</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">   45</a></span>    std::vector&lt;name_t&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">next_topics</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    std::vector&lt;name_t&gt; <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">GetValidNextTopics</a>();</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">Gather</a>(std::vector&lt;name_t&gt;&amp; topics);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">LoadFromDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* filename);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a>* <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a>* <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>};</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">   56</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">DialogController</a> {</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">DialogController</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> initial_topic);</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">GetAnswer</a>();</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    std::vector&lt;name_t&gt; <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">GetPrompts</a>();</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">ShouldExit</a>();</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">MoveTo</a>(<span class=\"keywordtype\">size_t</span> prompt_index);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> initial_topic;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> current_topic;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> answer;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"keywordtype\">bool</span> should_exit = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    std::vector&lt;name_t&gt; next_topics;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>};</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>}</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">tram::Ext::Kitchensink::DialogController</a></div><div class=\"ttdef\"><b>Definition:</b> dialog.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html_a63a0067b174a312d9f08a935f86f1226\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">tram::Ext::Kitchensink::DialogController::MoveTo</a></div><div class=\"ttdeci\">void MoveTo(size_t prompt_index)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:233</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html_a80e5cf34f6478ba8921ad4df746252db\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">tram::Ext::Kitchensink::DialogController::GetAnswer</a></div><div class=\"ttdeci\">name_t GetAnswer()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:187</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html_ab1134f34b965c2b538a4d8ca670c233b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">tram::Ext::Kitchensink::DialogController::ShouldExit</a></div><div class=\"ttdeci\">bool ShouldExit()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:200</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html_ab13380e0377c25667f57e127f1971ae7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">tram::Ext::Kitchensink::DialogController::DialogController</a></div><div class=\"ttdeci\">DialogController(name_t initial_topic)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:179</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_dialog_controller_html_ae25eee3d66e055232539c9c5fe471c39\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">tram::Ext::Kitchensink::DialogController::GetPrompts</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; GetPrompts()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:191</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a9ab8b667486c023b0e1defc92b807c54\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">tram::Ext::Kitchensink::DialogType</a></div><div class=\"ttdeci\">DialogType</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">tram::Ext::Kitchensink::DIALOG_IMPORT_MULTIPLE</a></div><div class=\"ttdeci\">@ DIALOG_IMPORT_MULTIPLE</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">tram::Ext::Kitchensink::DIALOG_TOPIC</a></div><div class=\"ttdeci\">@ DIALOG_TOPIC</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">tram::Ext::Kitchensink::DIALOG_IMPORT_SINGLE</a></div><div class=\"ttdeci\">@ DIALOG_IMPORT_SINGLE</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_action_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a></div><div class=\"ttdef\"><b>Definition:</b> dialog.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_action_html_a773e06de51af612cd67bc422a37cfda4\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">tram::Ext::Kitchensink::DialogAction::Perform</a></div><div class=\"ttdeci\">void Perform()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_action_html_ab7830ce3388bcc68886658f6ebac4401\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">tram::Ext::Kitchensink::DialogAction::quest</a></div><div class=\"ttdeci\">name_t quest</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_action_html_ad286a54082f47f5755efd6cc9c73823c\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">tram::Ext::Kitchensink::DialogAction::trigger</a></div><div class=\"ttdeci\">name_t trigger</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a></div><div class=\"ttdef\"><b>Definition:</b> dialog.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition_html_a14f314e9911fc87757376b5267df2b78\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">tram::Ext::Kitchensink::DialogCondition::variable</a></div><div class=\"ttdeci\">name_t variable</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition_html_acd0cc2ffea91837a2e51e9a7919ee198\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">tram::Ext::Kitchensink::DialogCondition::quest</a></div><div class=\"ttdeci\">name_t quest</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition_html_adaa8ef03f80dfbe1e610747674d556a7\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">tram::Ext::Kitchensink::DialogCondition::IsMet</a></div><div class=\"ttdeci\">bool IsMet()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></div><div class=\"ttdef\"><b>Definition:</b> dialog.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a078f196f4d258ea6dda98a69263ceae8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">tram::Ext::Kitchensink::DialogTopic::prompt</a></div><div class=\"ttdeci\">name_t prompt</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">tram::Ext::Kitchensink::DialogTopic::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a62f08db43d9b1adc67326d1910b3bf0f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">tram::Ext::Kitchensink::DialogTopic::Make</a></div><div class=\"ttdeci\">static DialogTopic * Make(name_t)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:72</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a6de61f6febffca8612e76926575df914\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">tram::Ext::Kitchensink::DialogTopic::Find</a></div><div class=\"ttdeci\">static DialogTopic * Find(name_t)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:84</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a9210fb3d74cbf84d790863396b671a4b\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">tram::Ext::Kitchensink::DialogTopic::answer</a></div><div class=\"ttdeci\">name_t answer</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_a92b21c6a95d462272577358cc702d16f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">tram::Ext::Kitchensink::DialogTopic::GetValidNextTopics</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; GetValidNextTopics()</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_aa78509b95f65ce2d8974875004cd736f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">tram::Ext::Kitchensink::DialogTopic::condition</a></div><div class=\"ttdeci\">DialogCondition condition</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_aaeb1f8e04e35e34ff363d9fd6b8eeb0a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">tram::Ext::Kitchensink::DialogTopic::type</a></div><div class=\"ttdeci\">DialogType type</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_ab41b9820fb4c0943c7e564fc790cf636\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">tram::Ext::Kitchensink::DialogTopic::action</a></div><div class=\"ttdeci\">DialogAction action</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_ad7c75b7bab534c7d74ea772608285213\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">tram::Ext::Kitchensink::DialogTopic::next_topics</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; next_topics</div><div class=\"ttdef\"><b>Definition:</b> dialog.h:45</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_af40984203be124856962da32edaac92d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">tram::Ext::Kitchensink::DialogTopic::Gather</a></div><div class=\"ttdeci\">void Gather(std::vector&lt; name_t &gt; &amp;topics)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:48</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic_html_afb41bd714afd933a421568dbd55cd99a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">tram::Ext::Kitchensink::DialogTopic::LoadFromDisk</a></div><div class=\"ttdeci\">static void LoadFromDisk(const char *filename)</div><div class=\"ttdef\"><b>Definition:</b> dialog.cpp:88</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_01fd219969118eefb63f711194f953b6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">render Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\">direct3d</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\">software</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2animation_8cpp.html\">animation.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2animation_8h.html\">animation.h</a> <a href=\"render_2animation_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2api_8h.html\">api.h</a> <a href=\"render_2api_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"error_8cpp.html\">error.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"error_8h.html\">error.h</a> <a href=\"error_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2light_8cpp.html\">light.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2light_8h.html\">light.h</a> <a href=\"render_2light_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"material_8cpp.html\">material.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"material_8h.html\">material.h</a> <a href=\"material_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"model_8cpp.html\">model.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"model_8h.html\">model.h</a> <a href=\"model_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2render_8cpp.html\">render.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2render_8h.html\">render.h</a> <a href=\"render_2render_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"renderer_8cpp.html\">renderer.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"renderer_8h.html\">renderer.h</a> <a href=\"renderer_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"scene_8cpp.html\">scene.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"scene_8h.html\">scene.h</a> <a href=\"scene_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2sprite_8cpp.html\">sprite.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2sprite_8h.html\">sprite.h</a> <a href=\"render_2sprite_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"vertices_8cpp.html\">vertices.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"vertices_8h.html\">vertices.h</a> <a href=\"vertices_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">platform Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_25bfe7637bda9b4c8dc6e22485fc785f.html\">glfw</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_cc4878aa85695f89f2ccbc192aae421c.html\">sdl</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"platform_2api_8h.html\">api.h</a> <a href=\"platform_2api_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"platform_2file_8cpp.html\">file.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"platform_2file_8h.html\">file.h</a> <a href=\"platform_2file_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"image_8cpp.html\">image.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"image_8h.html\">image.h</a> <a href=\"image_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"other_8cpp.html\">other.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"other_8h.html\">other.h</a> <a href=\"other_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"platform_8h.html\">platform.h</a> <a href=\"platform_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"utils_8cpp.html\">utils.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_044994f9a1f49429ab82387beaf2fc8f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">entities Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"crate_8cpp.html\">crate.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"crate_8h.html\">crate.h</a> <a href=\"crate_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"decoration_8cpp.html\">decoration.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"decoration_8h.html\">decoration.h</a> <a href=\"decoration_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2light_8cpp.html\">light.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2light_8h.html\">light.h</a> <a href=\"entities_2light_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"marker_8cpp.html\">marker.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"marker_8h.html\">marker.h</a> <a href=\"marker_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2player_8cpp.html\">player.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2player_8h.html\">player.h</a> <a href=\"entities_2player_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2script_8cpp.html\">script.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2script_8h.html\">script.h</a> <a href=\"entities_2script_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2sound_8cpp.html\">sound.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2sound_8h.html\">sound.h</a> <a href=\"entities_2sound_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"staticworldobject_8cpp.html\">staticworldobject.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"staticworldobject_8h.html\">staticworldobject.h</a> <a href=\"staticworldobject_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2trigger_8cpp.html\">trigger.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_2trigger_8h.html\">trigger.h</a> <a href=\"entities_2trigger_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_04c6f28c877b0abd0b517b09d2cbe678.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/design Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_04c6f28c877b0abd0b517b09d2cbe678.html\">design</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">design Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8cpp.html\">attributes.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8h.html\">attributes.h</a> <a href=\"attributes_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8h.html\">character.h</a> <a href=\"character_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"design_8cpp.html\">design.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"design_8h.html\">design.h</a> <a href=\"design_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dialog_8h.html\">dialog.h</a> <a href=\"dialog_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_8h.html\">entities.h</a> <a href=\"entities_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"inventory_8h.html\">inventory.h</a> <a href=\"inventory_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"quest_8h.html\">quest.h</a> <a href=\"quest_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_25bfe7637bda9b4c8dc6e22485fc785f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/glfw Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_25bfe7637bda9b4c8dc6e22485fc785f.html\">glfw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">glfw Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"glfw_8cpp.html\">glfw.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_2dc1ac304fc37da9cbf93f53bf382100.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\">software</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">software Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"software_8h.html\">software.h</a> <a href=\"software_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_45a0510223f8d95df257ae4513f5dcf2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">camera Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"camera_8cpp.html\">camera.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"camera_8h.html\">camera.h</a> <a href=\"camera_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"firstperson_8cpp.html\">firstperson.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"firstperson_8h.html\">firstperson.h</a> <a href=\"firstperson_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"following_8cpp.html\">following.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"following_8h.html\">following.h</a> <a href=\"following_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fpscamera_8cpp.html\">fpscamera.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"fpscamera_8h.html\">fpscamera.h</a> <a href=\"fpscamera_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"thirdperson_8cpp.html\">thirdperson.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"thirdperson_8h.html\">thirdperson.h</a> <a href=\"thirdperson_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_486a74d7b0f57b9c55d744bdbb092905.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">framework Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"async_8cpp.html\">async.cpp</a></td></tr>\n<tr class=\"memdesc:async_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of the Async system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"async_8h.html\">async.h</a> <a href=\"async_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"core_8cpp.html\">core.cpp</a></td></tr>\n<tr class=\"memdesc:core_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Core functionality of the framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"core_8h.html\">core.h</a> <a href=\"core_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entity_8cpp.html\">entity.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entity_8h.html\">entity.h</a> <a href=\"entity_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entitycomponent_8cpp.html\">entitycomponent.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entitycomponent_8h.html\">entitycomponent.h</a> <a href=\"entitycomponent_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"event_8cpp.html\">event.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"event_8h.html\">event.h</a> <a href=\"event_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2file_8cpp.html\">file.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2file_8h.html\">file.h</a> <a href=\"framework_2file_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2graph_8cpp.html\">graph.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2graph_8h.html\">graph.h</a> <a href=\"framework_2graph_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"gui_8cpp.html\">gui.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"gui_8h.html\">gui.h</a> <a href=\"gui_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"language_8cpp.html\">language.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"language_8h.html\">language.h</a> <a href=\"language_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"loader_8cpp.html\">loader.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"loader_8h.html\">loader.h</a> <a href=\"loader_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"logging_8cpp.html\">logging.cpp</a></td></tr>\n<tr class=\"memdesc:logging_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Logging and console printing services. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"logging_8h.html\">logging.h</a> <a href=\"logging_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"math_8cpp.html\">math.cpp</a></td></tr>\n<tr class=\"memdesc:math_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GLM typedefs and useful math functions. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"math_8h.html\">math.h</a> <a href=\"math_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"message_8cpp.html\">message.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"message_8h.html\">message.h</a> <a href=\"message_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"navmesh_8cpp.html\">navmesh.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"navmesh_8h.html\">navmesh.h</a> <a href=\"navmesh_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"path_8cpp.html\">path.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"path_8h.html\">path.h</a> <a href=\"path_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"resource_8h.html\">resource.h</a> <a href=\"resource_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2script_8cpp.html\">script.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2script_8h.html\">script.h</a> <a href=\"framework_2script_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"serialization_8h.html\">serialization.h</a> <a href=\"serialization_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"settings_8cpp.html\">settings.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"settings_8h.html\">settings.h</a> <a href=\"settings_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"signal_8cpp.html\">signal.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"signal_8h.html\">signal.h</a> <a href=\"signal_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"stats_8cpp.html\">stats.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"stats_8h.html\">stats.h</a> <a href=\"stats_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2system_8cpp.html\">system.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"framework_2system_8h.html\">system.h</a> <a href=\"framework_2system_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"transition_8cpp.html\">transition.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"transition_8h.html\">transition.h</a> <a href=\"transition_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"type_8cpp.html\">type.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"type_8h.html\">type.h</a> <a href=\"type_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"ui_8cpp.html\">ui.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"ui_8h.html\">ui.h</a> <a href=\"ui_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"uid_8cpp.html\">uid.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"uid_8h.html\">uid.h</a> <a href=\"uid_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"value_8h.html\">value.h</a> <a href=\"value_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"worldcell_8cpp.html\">worldcell.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"worldcell_8h.html\">worldcell.h</a> <a href=\"worldcell_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_4c096b243504cf129e41270299bfcecc.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">physics Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"physics_2api_8h.html\">api.h</a> <a href=\"physics_2api_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"collisionmodel_8cpp.html\">collisionmodel.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"collisionmodel_8h.html\">collisionmodel.h</a> <a href=\"collisionmodel_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"collisionshape_8h.html\">collisionshape.h</a> <a href=\"collisionshape_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"physics_2physics_8cpp.html\">physics.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"physics_2physics_8h.html\">physics.h</a> <a href=\"physics_2physics_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_6785e21a8529b80a9bb3fbf206311f99.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/scripting Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\">scripting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">scripting Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"lua_8cpp.html\">lua.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"lua_8h.html\">lua.h</a> <a href=\"lua_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_690097dbf5541613f26178bc15166d11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">extensions Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\">scripting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_713f53f5525a4ba6a1756f0c27ee7b0f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">templates Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"aabb_8h.html\">aabb.h</a> <a href=\"aabb_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"hashmap_8h.html\">hashmap.h</a> <a href=\"hashmap_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html\">macros.h</a> <a href=\"macros_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"octree_8h.html\">octree.h</a> <a href=\"octree_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"pool_8h.html\">pool.h</a> <a href=\"pool_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"queue_8h.html\">queue.h</a> <a href=\"queue_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"spinlock_8h.html\">spinlock.h</a> <a href=\"spinlock_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"stack_8h.html\">stack.h</a> <a href=\"stack_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"stackpool_8h.html\">stackpool.h</a> <a href=\"stackpool_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"test_8h.html\">test.h</a> <a href=\"test_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_725e1c32b4e378f03d60abea9fea9d5a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">menu Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"debug_8h.html\">debug.h</a> <a href=\"debug_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"menu_2menu_8cpp.html\">menu.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"menu_2menu_8h.html\">menu.h</a> <a href=\"menu_2menu_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"extensions_2menu_2system_8cpp.html\">system.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"extensions_2menu_2system_8h.html\">system.h</a> <a href=\"extensions_2menu_2system_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_72f27f6e39bba3da07977890c5e9396b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">kitchensink Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"ai_8cpp.html\">ai.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"ai_8h.html\">ai.h</a> <a href=\"ai_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"animationtable_8cpp.html\">animationtable.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"animationtable_8h.html\">animationtable.h</a> <a href=\"animationtable_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8cpp.html\">attributes.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"attributes_8h.html\">attributes.h</a> <a href=\"attributes_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"character_8h.html\">character.h</a> <a href=\"character_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dialog_8h.html\">dialog.h</a> <a href=\"dialog_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_8h.html\">entities.h</a> <a href=\"entities_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"inventory_8h.html\">inventory.h</a> <a href=\"inventory_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"kitchensink_8cpp.html\">kitchensink.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"kitchensink_8h.html\">kitchensink.h</a> <a href=\"kitchensink_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"kitchensink_2menu_8cpp.html\">menu.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"kitchensink_2menu_8h.html\">menu.h</a> <a href=\"kitchensink_2menu_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"probe_8cpp.html\">probe.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"probe_8h.html\">probe.h</a> <a href=\"probe_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"quest_8h.html\">quest.h</a> <a href=\"quest_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"soundtable_8cpp.html\">soundtable.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"soundtable_8h.html\">soundtable.h</a> <a href=\"soundtable_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_7dd791b49cea2de8a9731625e7ba4332.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram-sdk Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_81a2138add035487371796f7e3635d7f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">audio Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\">openal</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_8257c9d1ec427d0353bb282f2bab11cb.html\">template</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2api_8h.html\">api.h</a> <a href=\"audio_2api_8h_source.html\">[code]</a></td></tr>\n<tr class=\"memdesc:audio_2api_8h\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Audio API implementation header. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2audio_8cpp.html\">audio.cpp</a></td></tr>\n<tr class=\"memdesc:audio_2audio_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Main Audio system interface implementation. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2audio_8h.html\">audio.h</a> <a href=\"audio_2audio_8h_source.html\">[code]</a></td></tr>\n<tr class=\"memdesc:audio_2audio_8h\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Main interface for the Audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2graph_8cpp.html\">graph.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2graph_8h.html\">graph.h</a> <a href=\"audio_2graph_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2sound_8cpp.html\">sound.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"audio_2sound_8h.html\">sound.h</a> <a href=\"audio_2sound_8h_source.html\">[code]</a></td></tr>\n<tr class=\"memdesc:audio_2sound_8h\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sound resource definition. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_8257c9d1ec427d0353bb282f2bab11cb.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/template Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8257c9d1ec427d0353bb282f2bab11cb.html\">template</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">template Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"template_8cpp.html\">template.cpp</a></td></tr>\n<tr class=\"memdesc:template_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Template for Audio backend implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_83c81f46d4e2adaa24ca143fb33abeaa.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">bullet Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"actions_8h.html\">actions.h</a> <a href=\"actions_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"bullet_8cpp.html\">bullet.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"debugdrawer_8h.html\">debugdrawer.h</a> <a href=\"debugdrawer_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_861a72433926be42e693eaf9e590afa7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">painis Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_87e4469353846ab42ac7effb8e231a8f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/openal Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\">openal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">openal Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"openal_8cpp.html\">openal.cpp</a></td></tr>\n<tr class=\"memdesc:openal_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of the OpenAL Audio backend. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"openal_8h.html\">openal.h</a> <a href=\"openal_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_bda26cb40acfb9f38f401dec877209b8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\">direct3d</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">direct3d Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"direct3d_8h.html\">direct3d.h</a> <a href=\"direct3d_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_c902ca23ecd29d6b4b325f81f7f23ad0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">src Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"subdirs\" name=\"subdirs\"></a>\nDirectories</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">directory &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"config_8h.html\">config.h</a> <a href=\"config_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html\">main.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_c91d79491a9631c76ad80e8d8bf0efb6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">opengl Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"buffer_8cpp.html\">buffer.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"buffer_8h.html\">buffer.h</a> <a href=\"buffer_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"drawlist_8cpp.html\">drawlist.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"drawlist_8h.html\">drawlist.h</a> <a href=\"drawlist_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2opengl_2light_8cpp.html\">light.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2opengl_2light_8h.html\">light.h</a> <a href=\"render_2opengl_2light_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"opengl_2material_8cpp.html\">material.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"opengl_2material_8h.html\">material.h</a> <a href=\"opengl_2material_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"opengl_2renderer_8h.html\">renderer.h</a> <a href=\"opengl_2renderer_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"shader_8h.html\">shader.h</a> <a href=\"shader_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2opengl_2sprite_8cpp.html\">sprite.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2opengl_2sprite_8h.html\">sprite.h</a> <a href=\"render_2opengl_2sprite_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"texture_8cpp.html\">texture.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"texture_8h.html\">texture.h</a> <a href=\"texture_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_cc4878aa85695f89f2ccbc192aae421c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/sdl Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cc4878aa85695f89f2ccbc192aae421c.html\">sdl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sdl Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"sdl_8cpp.html\">sdl.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_d6dfb888f5e5a248d906bac34bc576a1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">spatial Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"definitions_8h.html\">definitions.h</a> <a href=\"definitions_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"output_8cpp.html\">output.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"output_8h.html\">output.h</a> <a href=\"output_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"pathtracer_8cpp.html\">pathtracer.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"pathtracer_8h.html\">pathtracer.h</a> <a href=\"pathtracer_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"spatial_8cpp.html\">spatial.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"spatial_8h.html\">spatial.h</a> <a href=\"spatial_8h_source.html\">[code]</a></td></tr>\n<tr class=\"memdesc:spatial_8h\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Definitions for the Spatial Audio backend. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dir_e956729b6428f6b8620d3e268ab44978.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components Directory Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">components Directory Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\nFiles</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2animation_8cpp.html\">animation.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2animation_8h.html\">animation.h</a> <a href=\"components_2animation_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2audio_8cpp.html\">audio.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2audio_8h.html\">audio.h</a> <a href=\"components_2audio_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"controller_8cpp.html\">controller.cpp</a></td></tr>\n<tr class=\"memdesc:controller_8cpp\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementations for ControllerComponents. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"controller_8h.html\">controller.h</a> <a href=\"controller_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"decal_8cpp.html\">decal.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"decal_8h.html\">decal.h</a> <a href=\"decal_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2light_8cpp.html\">light.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2light_8h.html\">light.h</a> <a href=\"components_2light_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"particle_8cpp.html\">particle.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"particle_8h.html\">particle.h</a> <a href=\"particle_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2physics_8cpp.html\">physics.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2physics_8h.html\">physics.h</a> <a href=\"components_2physics_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2player_8cpp.html\">player.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2player_8h.html\">player.h</a> <a href=\"components_2player_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2render_8cpp.html\">render.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2render_8h.html\">render.h</a> <a href=\"components_2render_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2sprite_8cpp.html\">sprite.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2sprite_8h.html\">sprite.h</a> <a href=\"components_2sprite_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"template_8h.html\">template.h</a> <a href=\"template_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2trigger_8cpp.html\">trigger.cpp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">file &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"components_2trigger_8h.html\">trigger.h</a> <a href=\"components_2trigger_8h_source.html\">[code]</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/direct3d_2renderer_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/renderer.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\">direct3d</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">renderer.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"direct3d_8h_source.html\">render/direct3d/direct3d.h</a>&gt;</code><br />\n<code>#include &lt;d3dx9.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8e818c0f10852d65d1464fa7db96faaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa\">tram::Render::API::light_tree_ids</a> (200)</td></tr>\n<tr class=\"separator:a8e818c0f10852d65d1464fa7db96faaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa88196543e9de714a86037204e01f75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API::SetLightingParameters</a> (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer)</td></tr>\n<tr class=\"separator:aa88196543e9de714a86037204e01f75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API::SetScreenClear</a> (vec3 clear_color, bool clear)</td></tr>\n<tr class=\"separator:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d75088dd180366fb45cb86654694db9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API::RenderFrame</a> ()</td></tr>\n<tr class=\"separator:a0d75088dd180366fb45cb86654694db9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">drawlistentry_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API::InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API::RemoveDrawListEntry</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API::GetFlags</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API::SetFlags</a> (drawlistentry_t entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API::SetLayer</a> (drawlistentry_t entry, layer_t layer)</td></tr>\n<tr class=\"separator:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API::SetPose</a> (drawlistentry_t entry, Pose *pose)</td></tr>\n<tr class=\"separator:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API::SetLightmap</a> (drawlistentry_t entry, texturehandle_t lightmap)</td></tr>\n<tr class=\"separator:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API::SetDrawListColors</a> (drawlistentry_t entry, size_t count, vec4 *color)</td></tr>\n<tr class=\"separator:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8\">tram::Render::API::SetDrawListSpecularities</a> (drawlistentry_t entry, size_t count, float *weights, float *exponents, float *transparencies)</td></tr>\n<tr class=\"separator:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API::SetLights</a> (drawlistentry_t entry, light_t *lights)</td></tr>\n<tr class=\"separator:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API::SetMatrix</a> (drawlistentry_t entry, const mat4 &amp;matrix)</td></tr>\n<tr class=\"separator:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API::SetDrawListVertexArray</a> (drawlistentry_t entry, vertexarray_t vertex_array_handle)</td></tr>\n<tr class=\"separator:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API::SetDrawListIndexArray</a> (drawlistentry_t entry, indexarray_t index_array_handle)</td></tr>\n<tr class=\"separator:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78a374d698ab9d252afd86163c19440\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API::SetDrawListIndexRange</a> (drawlistentry_t entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:ac78a374d698ab9d252afd86163c19440\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3724426196e2fad6e190726003249aed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API::SetDrawListShader</a> (drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type)</td></tr>\n<tr class=\"separator:a3724426196e2fad6e190726003249aed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c\">tram::Render::API::SetDrawListTextures</a> (drawlistentry_t entry, size_t texture_count, texturehandle_t *textures)</td></tr>\n<tr class=\"separator:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">light_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API::MakeLight</a> ()</td></tr>\n<tr class=\"separator:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API::DeleteLight</a> (light_t light)</td></tr>\n<tr class=\"separator:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API::SetLightParameters</a> (light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent)</td></tr>\n<tr class=\"separator:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">texturehandle_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API::CreateTexture</a> (ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4057f1a8dc032f5f4aded5bc14b5119\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">FVFHelper&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119\">tram::Render::API::VertexDefinitionToFVF</a> (VertexDefinition vertex_format)</td></tr>\n<tr class=\"separator:ab4057f1a8dc032f5f4aded5bc14b5119\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9c8b1770aeeff3ea24c789c104551ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae\">tram::Render::API::PackVertexBuffer</a> (vertexarray_t &amp;vertex_array, VertexDefinition vertex_format, FVFHelper helper, size_t vertex_count, void *vertex_data)</td></tr>\n<tr class=\"separator:ac9c8b1770aeeff3ea24c789c104551ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API::CreateIndexedVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array, indexarray_t &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f3030e7ef229bee087b336d8882232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API::CreateVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array)</td></tr>\n<tr class=\"separator:a76f3030e7ef229bee087b336d8882232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23acf51fa4097aecd557d23f73131463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API::UpdateVertexArray</a> (vertexarray_t &amp;vertex_buffer, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a23acf51fa4097aecd557d23f73131463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23c877f60360662f3a1de1fd11957936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API::SetViewMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a23c877f60360662f3a1de1fd11957936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API::SetProjectionMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API::GetScreen</a> (char *buffer, int w, int h)</td></tr>\n<tr class=\"separator:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API::Init</a> ()</td></tr>\n<tr class=\"separator:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ContextType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API::GetContext</a> ()</td></tr>\n<tr class=\"separator:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18bc917a04c062cb18a310880301f545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API::GetMaxIndexRangeLength</a> ()</td></tr>\n<tr class=\"separator:a18bc917a04c062cb18a310880301f545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API::SetDevice</a> (void *)</td></tr>\n<tr class=\"separator:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; D3DDrawListEntry &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671\">tram::Render::API::draw_list</a> (&quot;render list&quot;, 500, false)</td></tr>\n<tr class=\"separator:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; D3DLight &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e\">tram::Render::API::light_list</a> (&quot;light list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4855c01cc36bad195643cf956389b5de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Octree&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de\">tram::Render::API::light_tree</a></td></tr>\n<tr class=\"separator:a4855c01cc36bad195643cf956389b5de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7897c51fe39d6a65173b8f12bb3b6185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; VertexBufferMetadata &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185\">tram::Render::API::vertex_buffer_metadata</a> (&quot;vertex buffer metadata&quot;, 500, false)</td></tr>\n<tr class=\"separator:a7897c51fe39d6a65173b8f12bb3b6185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8259e25142ce465c1c745dd91f4618e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e\">tram::Render::API::screen_clear_color</a> = {0.2f, 0.3f, 0.3f}</td></tr>\n<tr class=\"separator:ab8259e25142ce465c1c745dd91f4618e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f589aad0fe82884c1fc279e5f29092e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e\">tram::Render::API::clear_screen</a> = true</td></tr>\n<tr class=\"separator:a7f589aad0fe82884c1fc279e5f29092e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae43b3038bb50f8c12f079db41ce172e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e\">tram::Render::API::STATIC_VERTEX_FVF</a> = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2</td></tr>\n<tr class=\"separator:aae43b3038bb50f8c12f079db41ce172e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c2a4d0725f893593398cf0a61aa69a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2\">tram::Render::API::DYNAMIC_VERTEX_FVF</a> = D3DFVF_XYZB4 | D3DFVF_LASTBETA_UBYTE4 | D3DFVF_NORMAL | D3DFVF_TEX1</td></tr>\n<tr class=\"separator:a1c2a4d0725f893593398cf0a61aa69a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a092639593561b8318a7db302cde0cd97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97\">tram::Render::API::LINE_VERTEX_FVF</a> = D3DFVF_XYZ | D3DFVF_DIFFUSE</td></tr>\n<tr class=\"separator:a092639593561b8318a7db302cde0cd97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/direct3d_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/direct3d.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\">direct3d</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">direct3d.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"direct3d_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/direct3d_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/direct3d.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\">direct3d</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">direct3d.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"direct3d_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">   10</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">   11</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">   13</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">pose</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>        </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">   15</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">matrix</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">   17</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">lights</a>[4] = {0};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>        </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">   19</a></span>        IDirect3DVertexBuffer9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">vertex_buffer</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">   20</a></span>        IDirect3DIndexBuffer9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">index_buffer</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>        </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">   22</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">vertex_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">   23</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">index_length</a> = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">   24</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">index_offset</a> = 0;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">   26</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">fvf</a> = 0;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>        </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">   28</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">layer</a> = 0;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">   29</a></span>        IDirect3DTexture9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">lightmap</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">   30</a></span>        IDirect3DTexture9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">texture</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">   32</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">   34</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">specular_weight</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">   35</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">specular_exponent</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">   36</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">specular_transparency</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    };</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">   39</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a> {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">   40</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">   41</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">color</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">   42</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">distance</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">   43</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">direction</a> = {0.0f, 0.0f, -1.0f};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">   44</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">exponent</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    };</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a09a0f6696c1a4d4b64b30376826316b3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">tram::Render::API::D3DDrawListEntry::specular_weight</a></div><div class=\"ttdeci\">float specular_weight</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a140d4caf20bd86230ad43a203602020f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">tram::Render::API::D3DDrawListEntry::matrix</a></div><div class=\"ttdeci\">mat4 matrix</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a2b5170151eece25917d7ec3bd7ffc18e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">tram::Render::API::D3DDrawListEntry::layer</a></div><div class=\"ttdeci\">uint32_t layer</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a38e16ee087cd107bad43a77b4556223e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">tram::Render::API::D3DDrawListEntry::specular_transparency</a></div><div class=\"ttdeci\">float specular_transparency</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a53e75e90c2e6720867d49dbfe3d379a2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">tram::Render::API::D3DDrawListEntry::pose</a></div><div class=\"ttdeci\">Pose * pose</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a58d427c9d7b5147bbbdc8d77a67d3891\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">tram::Render::API::D3DDrawListEntry::vertex_buffer</a></div><div class=\"ttdeci\">IDirect3DVertexBuffer9 * vertex_buffer</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a5e85792af5fd8e02fd1ccbc924a55d1c\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">tram::Render::API::D3DDrawListEntry::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a7690e858e67902794ba8421881381bb8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">tram::Render::API::D3DDrawListEntry::index_buffer</a></div><div class=\"ttdeci\">IDirect3DIndexBuffer9 * index_buffer</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a78b0d32279518eb5cd60d66a2fc9f4fe\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">tram::Render::API::D3DDrawListEntry::lights</a></div><div class=\"ttdeci\">uint32_t lights[4]</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_a7f6a06108ebc5a50ab5144af1d60d474\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">tram::Render::API::D3DDrawListEntry::index_length</a></div><div class=\"ttdeci\">uint32_t index_length</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_ab339e52985c6c382e0b314d2b4b8081c\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">tram::Render::API::D3DDrawListEntry::vertex_count</a></div><div class=\"ttdeci\">uint32_t vertex_count</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_ab7df87a59ab31eee8df41c3686f35200\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">tram::Render::API::D3DDrawListEntry::specular_exponent</a></div><div class=\"ttdeci\">float specular_exponent</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_acc24155c9681da771fe7102a101561ae\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">tram::Render::API::D3DDrawListEntry::fvf</a></div><div class=\"ttdeci\">uint32_t fvf</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_ae3fe0f4405b6bf946621d32ea4313980\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">tram::Render::API::D3DDrawListEntry::lightmap</a></div><div class=\"ttdeci\">IDirect3DTexture9 * lightmap</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_ae8a6150817c6af5a23681465585f807b\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">tram::Render::API::D3DDrawListEntry::texture</a></div><div class=\"ttdeci\">IDirect3DTexture9 * texture</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_aeee744eb4618ad8390ff3fdf7a4f504f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">tram::Render::API::D3DDrawListEntry::index_offset</a></div><div class=\"ttdeci\">uint32_t index_offset</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html_aff53e1b18af098752ef32e98869439e7\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">tram::Render::API::D3DDrawListEntry::color</a></div><div class=\"ttdeci\">vec4 color</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html_a035db274a74493fd1c49bb5c7b2229c7\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">tram::Render::API::D3DLight::exponent</a></div><div class=\"ttdeci\">float exponent</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html_a5fd841ddfed89181a99b82c83f26298a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">tram::Render::API::D3DLight::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html_a67a2716e3f6f00f40642d9db82569271\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">tram::Render::API::D3DLight::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html_acbab4448a21e3615bd881388b0af1a8b\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">tram::Render::API::D3DLight::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html_aead638bd05a0ed7dc438c22814381fd5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">tram::Render::API::D3DLight::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/doxygen.css",
    "content": "/* The standard CSS for doxygen 1.9.2 */\n\nbody, table, div, p, dl {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\np.reference, p.definition {\n\tfont: 400 14px/22px Roboto,sans-serif;\n}\n\n/* @group Heading Levels */\n\nh1.groupheader {\n\tfont-size: 150%;\n}\n\n.title {\n\tfont: 400 14px/28px Roboto,sans-serif;\n\tfont-size: 150%;\n\tfont-weight: bold;\n\tmargin: 10px 2px;\n}\n\nh2.groupheader {\n\tborder-bottom: 1px solid #879ECB;\n\tcolor: #354C7B;\n\tfont-size: 150%;\n\tfont-weight: normal;\n\tmargin-top: 1.75em;\n\tpadding-top: 8px;\n\tpadding-bottom: 4px;\n\twidth: 100%;\n}\n\nh3.groupheader {\n\tfont-size: 100%;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\t-webkit-transition: text-shadow 0.5s linear;\n\t-moz-transition: text-shadow 0.5s linear;\n\t-ms-transition: text-shadow 0.5s linear;\n\t-o-transition: text-shadow 0.5s linear;\n\ttransition: text-shadow 0.5s linear;\n\tmargin-right: 15px;\n}\n\nh1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {\n\ttext-shadow: 0 0 15px cyan;\n}\n\ndt {\n\tfont-weight: bold;\n}\n\nul.multicol {\n\t-moz-column-gap: 1em;\n\t-webkit-column-gap: 1em;\n\tcolumn-gap: 1em;\n\t-moz-column-count: 3;\n\t-webkit-column-count: 3;\n\tcolumn-count: 3;\n}\n\np.startli, p.startdd {\n\tmargin-top: 2px;\n}\n\nth p.starttd, th p.intertd, th p.endtd {\n        font-size: 100%;\n        font-weight: 700;\n}\n\np.starttd {\n\tmargin-top: 0px;\n}\n\np.endli {\n\tmargin-bottom: 0px;\n}\n\np.enddd {\n\tmargin-bottom: 4px;\n}\n\np.endtd {\n\tmargin-bottom: 2px;\n}\n\np.interli {\n}\n\np.interdd {\n}\n\np.intertd {\n}\n\n/* @end */\n\ncaption {\n\tfont-weight: bold;\n}\n\nspan.legend {\n\tfont-size: 70%;\n\ttext-align: center;\n}\n\nh3.version {\n\tfont-size: 90%;\n\ttext-align: center;\n}\n\ndiv.navtab {\n\tborder-right: 1px solid #A3B4D7;\n\tpadding-right: 15px;\n\ttext-align: right;\n\tline-height: 110%;\n}\n\ndiv.navtab table {\n\tborder-spacing: 0;\n}\n\ntd.navtab {\n\tpadding-right: 6px;\n\tpadding-left: 6px;\n}\ntd.navtabHL {\n\tbackground-image: url('tab_a.png');\n\tbackground-repeat:repeat-x;\n\tpadding-right: 6px;\n\tpadding-left: 6px;\n}\n\ntd.navtabHL a, td.navtabHL a:visited {\n\tcolor: #fff;\n\ttext-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n}\n\na.navtab {\n\tfont-weight: bold;\n}\n\ndiv.qindex{\n\ttext-align: center;\n\twidth: 100%;\n\tline-height: 140%;\n\tfont-size: 130%;\n\tcolor: #A0A0A0;\n}\n\ndt.alphachar{\n\tfont-size: 180%;\n\tfont-weight: bold;\n}\n\n.alphachar a{\n\tcolor: black;\n}\n\n.alphachar a:hover, .alphachar a:visited{\n\ttext-decoration: none;\n}\n\n.classindex dl {\n\tpadding: 25px;\n\tcolumn-count:1\n}\n\n.classindex dd {\n\tdisplay:inline-block;\n\tmargin-left: 50px;\n\twidth: 90%;\n\tline-height: 1.15em;\n}\n\n.classindex dl.odd {\n\tbackground-color: #F8F9FC;\n}\n\n@media(min-width: 1120px) {\n\t.classindex dl {\n\t\tcolumn-count:2\n\t}\n}\n\n@media(min-width: 1320px) {\n\t.classindex dl {\n\t\tcolumn-count:3\n\t}\n}\n\n\n/* @group Link Styling */\n\na {\n\tcolor: #3D578C;\n\tfont-weight: normal;\n\ttext-decoration: none;\n}\n\n.contents a:visited {\n\tcolor: #4665A2;\n}\n\na:hover {\n\ttext-decoration: underline;\n}\n\n.contents a.qindexHL:visited {\n        color: #FFFFFF;\n}\n\na.el {\n\tfont-weight: bold;\n}\n\na.elRef {\n}\n\na.code, a.code:visited, a.line, a.line:visited {\n\tcolor: #4665A2; \n}\n\na.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {\n\tcolor: #4665A2; \n}\n\na.code.hl_class { /* style for links to class names in code snippets */ }\na.code.hl_struct { /* style for links to struct names in code snippets */ }\na.code.hl_union { /* style for links to union names in code snippets */ }\na.code.hl_interface { /* style for links to interface names in code snippets */ }\na.code.hl_protocol { /* style for links to protocol names in code snippets */ }\na.code.hl_category { /* style for links to category names in code snippets */ }\na.code.hl_exception { /* style for links to exception names in code snippets */ }\na.code.hl_service { /* style for links to service names in code snippets */ }\na.code.hl_singleton { /* style for links to singleton names in code snippets */ }\na.code.hl_concept { /* style for links to concept names in code snippets */ }\na.code.hl_namespace { /* style for links to namespace names in code snippets */ }\na.code.hl_package { /* style for links to package names in code snippets */ }\na.code.hl_define { /* style for links to macro names in code snippets */ }\na.code.hl_function { /* style for links to function names in code snippets */ }\na.code.hl_variable { /* style for links to variable names in code snippets */ }\na.code.hl_typedef { /* style for links to typedef names in code snippets */ }\na.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }\na.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }\na.code.hl_signal { /* style for links to Qt signal names in code snippets */ }\na.code.hl_slot { /* style for links to Qt slot names in code snippets */ }\na.code.hl_friend { /* style for links to friend names in code snippets */ }\na.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }\na.code.hl_property { /* style for links to property names in code snippets */ }\na.code.hl_event { /* style for links to event names in code snippets */ }\na.code.hl_sequence { /* style for links to sequence names in code snippets */ }\na.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }\n\n/* @end */\n\ndl.el {\n\tmargin-left: -1cm;\n}\n\nul {\n  overflow: hidden; /*Fixed: list item bullets overlap floating elements*/\n}\n\n#side-nav ul {\n  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */\n}\n\n#main-nav ul {\n  overflow: visible; /* reset ul rule for the navigation bar drop down lists */\n}\n\n.fragment {\n  text-align: left;\n  direction: ltr;\n  overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/\n  overflow-y: hidden;\n}\n\npre.fragment {\n        border: 1px solid #C4CFE5;\n        background-color: #FBFCFD;\n        padding: 4px 6px;\n        margin: 4px 8px 4px 2px;\n        overflow: auto;\n        word-wrap: break-word;\n        font-size:  9pt;\n        line-height: 125%;\n        font-family: monospace, fixed;\n        font-size: 105%;\n}\n\ndiv.fragment {\n  padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/\n  margin: 4px 8px 4px 2px;\n\tbackground-color: #FBFCFD;\n\tborder: 1px solid #C4CFE5;\n}\n\ndiv.line {\n\tfont-family: monospace, fixed;\n        font-size: 13px;\n\tmin-height: 13px;\n\tline-height: 1.0;\n\ttext-wrap: unrestricted;\n\twhite-space: -moz-pre-wrap; /* Moz */\n\twhite-space: -pre-wrap;     /* Opera 4-6 */\n\twhite-space: -o-pre-wrap;   /* Opera 7 */\n\twhite-space: pre-wrap;      /* CSS3  */\n\tword-wrap: break-word;      /* IE 5.5+ */\n\ttext-indent: -53px;\n\tpadding-left: 53px;\n\tpadding-bottom: 0px;\n\tmargin: 0px;\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\ndiv.line:after {\n    content:\"\\000A\";\n    white-space: pre;\n}\n\ndiv.line.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 10px cyan;\n}\n\n\nspan.lineno {\n\tpadding-right: 4px;\n        margin-right: 9px;\n\ttext-align: right;\n\tborder-right: 2px solid #0F0;\n\tbackground-color: #E8E8E8;\n        white-space: pre;\n}\nspan.lineno a {\n\tbackground-color: #D8D8D8;\n}\n\nspan.lineno a:hover {\n\tbackground-color: #C8C8C8;\n}\n\n.lineno {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\ndiv.ah, span.ah {\n\tbackground-color: black;\n\tfont-weight: bold;\n\tcolor: #FFFFFF;\n\tmargin-bottom: 3px;\n\tmargin-top: 3px;\n\tpadding: 0.2em;\n\tborder: solid thin #333;\n\tborder-radius: 0.5em;\n\t-webkit-border-radius: .5em;\n\t-moz-border-radius: .5em;\n\tbox-shadow: 2px 2px 3px #999;\n\t-webkit-box-shadow: 2px 2px 3px #999;\n\t-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n\tbackground-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));\n\tbackground-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);\n}\n\ndiv.classindex ul {\n        list-style: none;\n        padding-left: 0;\n}\n\ndiv.classindex span.ai {\n        display: inline-block;\n}\n\ndiv.groupHeader {\n\tmargin-left: 16px;\n\tmargin-top: 12px;\n\tfont-weight: bold;\n}\n\ndiv.groupText {\n\tmargin-left: 16px;\n\tfont-style: italic;\n}\n\nbody {\n\tbackground-color: white;\n\tcolor: black;\n        margin: 0;\n}\n\ndiv.contents {\n\tmargin-top: 10px;\n\tmargin-left: 12px;\n\tmargin-right: 8px;\n}\n\ntd.indexkey {\n\tbackground-color: #EBEFF6;\n\tfont-weight: bold;\n\tborder: 1px solid #C4CFE5;\n\tmargin: 2px 0px 2px 0;\n\tpadding: 2px 10px;\n        white-space: nowrap;\n        vertical-align: top;\n}\n\ntd.indexvalue {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #C4CFE5;\n\tpadding: 2px 10px;\n\tmargin: 2px 0px;\n}\n\ntr.memlist {\n\tbackground-color: #EEF1F7;\n}\n\np.formulaDsp {\n\ttext-align: center;\n}\n\nimg.formulaDsp {\n\t\n}\n\nimg.formulaInl, img.inline {\n\tvertical-align: middle;\n}\n\ndiv.center {\n\ttext-align: center;\n        margin-top: 0px;\n        margin-bottom: 0px;\n        padding: 0px;\n}\n\ndiv.center img {\n\tborder: 0px;\n}\n\naddress.footer {\n\ttext-align: right;\n\tpadding-right: 12px;\n}\n\nimg.footer {\n\tborder: 0px;\n\tvertical-align: middle;\n}\n\n.compoundTemplParams {\n\tcolor: #4665A2;\n\tfont-size: 80%;\n\tline-height: 120%;\n}\n\n/* @group Code Colorization */\n\nspan.keyword {\n\tcolor: #008000\n}\n\nspan.keywordtype {\n\tcolor: #604020\n}\n\nspan.keywordflow {\n\tcolor: #e08000\n}\n\nspan.comment {\n\tcolor: #800000\n}\n\nspan.preprocessor {\n\tcolor: #806020\n}\n\nspan.stringliteral {\n\tcolor: #002080\n}\n\nspan.charliteral {\n\tcolor: #008080\n}\n\nspan.vhdldigit { \n\tcolor: #ff00ff \n}\n\nspan.vhdlchar { \n\tcolor: #000000 \n}\n\nspan.vhdlkeyword { \n\tcolor: #700070 \n}\n\nspan.vhdllogic { \n\tcolor: #ff0000 \n}\n\nblockquote {\n        background-color: #F7F8FB;\n        border-left: 2px solid #9CAFD4;\n        margin: 0 24px 0 4px;\n        padding: 0 12px 0 16px;\n}\n\nblockquote.DocNodeRTL {\n   border-left: 0;\n   border-right: 2px solid #9CAFD4;\n   margin: 0 4px 0 24px;\n   padding: 0 16px 0 12px;\n}\n\n/* @end */\n\n/*\n.search {\n\tcolor: #003399;\n\tfont-weight: bold;\n}\n\nform.search {\n\tmargin-bottom: 0px;\n\tmargin-top: 0px;\n}\n\ninput.search {\n\tfont-size: 75%;\n\tcolor: #000080;\n\tfont-weight: normal;\n\tbackground-color: #e8eef2;\n}\n*/\n\ntd.tiny {\n\tfont-size: 75%;\n}\n\n.dirtab {\n\tpadding: 4px;\n\tborder-collapse: collapse;\n\tborder: 1px solid #A3B4D7;\n}\n\nth.dirtab {\n\tbackground: #EBEFF6;\n\tfont-weight: bold;\n}\n\nhr {\n\theight: 0px;\n\tborder: none;\n\tborder-top: 1px solid #4A6AAA;\n}\n\nhr.footer {\n\theight: 1px;\n}\n\n/* @group Member Descriptions */\n\ntable.memberdecls {\n\tborder-spacing: 0px;\n\tpadding: 0px;\n}\n\n.memberdecls td, .fieldtable tr {\n\t-webkit-transition-property: background-color, box-shadow;\n\t-webkit-transition-duration: 0.5s;\n\t-moz-transition-property: background-color, box-shadow;\n\t-moz-transition-duration: 0.5s;\n\t-ms-transition-property: background-color, box-shadow;\n\t-ms-transition-duration: 0.5s;\n\t-o-transition-property: background-color, box-shadow;\n\t-o-transition-duration: 0.5s;\n\ttransition-property: background-color, box-shadow;\n\ttransition-duration: 0.5s;\n}\n\n.memberdecls td.glow, .fieldtable tr.glow {\n\tbackground-color: cyan;\n\tbox-shadow: 0 0 15px cyan;\n}\n\n.mdescLeft, .mdescRight,\n.memItemLeft, .memItemRight,\n.memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n\tbackground-color: #F9FAFC;\n\tborder: none;\n\tmargin: 4px;\n\tpadding: 1px 0 0 8px;\n}\n\n.mdescLeft, .mdescRight {\n\tpadding: 0px 8px 4px 8px;\n\tcolor: #555;\n}\n\n.memSeparator {\n        border-bottom: 1px solid #DEE4F0;\n        line-height: 1px;\n        margin: 0px;\n        padding: 0px;\n}\n\n.memItemLeft, .memTemplItemLeft {\n        white-space: nowrap;\n}\n\n.memItemRight, .memTemplItemRight {\n\twidth: 100%;\n}\n\n.memTemplParams {\n\tcolor: #4665A2;\n        white-space: nowrap;\n\tfont-size: 80%;\n}\n\n/* @end */\n\n/* @group Member Details */\n\n/* Styles for detailed member documentation */\n\n.memtitle {\n\tpadding: 8px;\n\tborder-top: 1px solid #A8B8D9;\n\tborder-left: 1px solid #A8B8D9;\n\tborder-right: 1px solid #A8B8D9;\n\tborder-top-right-radius: 4px;\n\tborder-top-left-radius: 4px;\n\tmargin-bottom: -1px;\n\tbackground-image: url('nav_f.png');\n\tbackground-repeat: repeat-x;\n\tbackground-color: #E2E8F2;\n\tline-height: 1.25;\n\tfont-weight: 300;\n\tfloat:left;\n}\n\n.permalink\n{\n        font-size: 65%;\n        display: inline-block;\n        vertical-align: middle;\n}\n\n.memtemplate {\n\tfont-size: 80%;\n\tcolor: #4665A2;\n\tfont-weight: normal;\n\tmargin-left: 9px;\n}\n\n.memnav {\n\tbackground-color: #EBEFF6;\n\tborder: 1px solid #A3B4D7;\n\ttext-align: center;\n\tmargin: 2px;\n\tmargin-right: 15px;\n\tpadding: 2px;\n}\n\n.mempage {\n\twidth: 100%;\n}\n\n.memitem {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tmargin-right: 5px;\n        -webkit-transition: box-shadow 0.5s linear;\n        -moz-transition: box-shadow 0.5s linear;\n        -ms-transition: box-shadow 0.5s linear;\n        -o-transition: box-shadow 0.5s linear;\n        transition: box-shadow 0.5s linear;\n        display: table !important;\n        width: 100%;\n}\n\n.memitem.glow {\n         box-shadow: 0 0 15px cyan;\n}\n\n.memname {\n        font-weight: 400;\n        margin-left: 6px;\n}\n\n.memname td {\n\tvertical-align: bottom;\n}\n\n.memproto, dl.reflist dt {\n        border-top: 1px solid #A8B8D9;\n        border-left: 1px solid #A8B8D9;\n        border-right: 1px solid #A8B8D9;\n        padding: 6px 0px 6px 0px;\n        color: #253555;\n        font-weight: bold;\n        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n        background-color: #DFE5F1;\n        /* opera specific markup */\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        border-top-right-radius: 4px;\n        /* firefox specific markup */\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        -moz-border-radius-topright: 4px;\n        /* webkit specific markup */\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        -webkit-border-top-right-radius: 4px;\n\n}\n\n.overload {\n        font-family: \"courier new\",courier,monospace;\n\tfont-size: 65%;\n}\n\n.memdoc, dl.reflist dd {\n        border-bottom: 1px solid #A8B8D9;      \n        border-left: 1px solid #A8B8D9;      \n        border-right: 1px solid #A8B8D9; \n        padding: 6px 10px 2px 10px;\n        background-color: #FBFCFD;\n        border-top-width: 0;\n        background-image:url('nav_g.png');\n        background-repeat:repeat-x;\n        background-color: #FFFFFF;\n        /* opera specific markup */\n        border-bottom-left-radius: 4px;\n        border-bottom-right-radius: 4px;\n        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n        /* firefox specific markup */\n        -moz-border-radius-bottomleft: 4px;\n        -moz-border-radius-bottomright: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;\n        /* webkit specific markup */\n        -webkit-border-bottom-left-radius: 4px;\n        -webkit-border-bottom-right-radius: 4px;\n        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\ndl.reflist dt {\n        padding: 5px;\n}\n\ndl.reflist dd {\n        margin: 0px 0px 10px 0px;\n        padding: 5px;\n}\n\n.paramkey {\n\ttext-align: right;\n}\n\n.paramtype {\n\twhite-space: nowrap;\n}\n\n.paramname {\n\tcolor: #602020;\n\twhite-space: nowrap;\n}\n.paramname em {\n\tfont-style: normal;\n}\n.paramname code {\n        line-height: 14px;\n}\n\n.params, .retval, .exception, .tparams {\n        margin-left: 0px;\n        padding-left: 0px;\n}       \n\n.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {\n        font-weight: bold;\n        vertical-align: top;\n}\n        \n.params .paramtype, .tparams .paramtype {\n        font-style: italic;\n        vertical-align: top;\n}       \n        \n.params .paramdir, .tparams .paramdir {\n        font-family: \"courier new\",courier,monospace;\n        vertical-align: top;\n}\n\ntable.mlabels {\n\tborder-spacing: 0px;\n}\n\ntd.mlabels-left {\n\twidth: 100%;\n\tpadding: 0px;\n}\n\ntd.mlabels-right {\n\tvertical-align: bottom;\n\tpadding: 0px;\n\twhite-space: nowrap;\n}\n\nspan.mlabels {\n        margin-left: 8px;\n}\n\nspan.mlabel {\n        background-color: #728DC1;\n        border-top:1px solid #5373B4;\n        border-left:1px solid #5373B4;\n        border-right:1px solid #C4CFE5;\n        border-bottom:1px solid #C4CFE5;\n\ttext-shadow: none;\n\tcolor: white;\n\tmargin-right: 4px;\n\tpadding: 2px 3px;\n\tborder-radius: 3px;\n\tfont-size: 7pt;\n\twhite-space: nowrap;\n\tvertical-align: middle;\n}\n\n\n\n/* @end */\n\n/* these are for tree view inside a (index) page */\n\ndiv.directory {\n        margin: 10px 0px;\n        border-top: 1px solid #9CAFD4;\n        border-bottom: 1px solid #9CAFD4;\n        width: 100%;\n}\n\n.directory table {\n        border-collapse:collapse;\n}\n\n.directory td {\n        margin: 0px;\n        padding: 0px;\n\tvertical-align: top;\n}\n\n.directory td.entry {\n        white-space: nowrap;\n        padding-right: 6px;\n\tpadding-top: 3px;\n}\n\n.directory td.entry a {\n        outline:none;\n}\n\n.directory td.entry a img {\n        border: none;\n}\n\n.directory td.desc {\n        width: 100%;\n        padding-left: 6px;\n\tpadding-right: 6px;\n\tpadding-top: 3px;\n\tborder-left: 1px solid rgba(0,0,0,0.05);\n}\n\n.directory tr.even {\n\tpadding-left: 6px;\n\tbackground-color: #F7F8FB;\n}\n\n.directory img {\n\tvertical-align: -30%;\n}\n\n.directory .levels {\n        white-space: nowrap;\n        width: 100%;\n        text-align: right;\n        font-size: 9pt;\n}\n\n.directory .levels span {\n        cursor: pointer;\n        padding-left: 2px;\n        padding-right: 2px;\n\tcolor: #3D578C;\n}\n\n.arrow {\n    color: #9CAFD4;\n    -webkit-user-select: none;\n    -khtml-user-select: none;\n    -moz-user-select: none;\n    -ms-user-select: none;\n    user-select: none;\n    cursor: pointer;\n    font-size: 80%;\n    display: inline-block;\n    width: 16px;\n    height: 22px;\n}\n\n.icon {\n    font-family: Arial, Helvetica;\n    font-weight: bold;\n    font-size: 12px;\n    height: 14px;\n    width: 16px;\n    display: inline-block;\n    background-color: #728DC1;\n    color: white;\n    text-align: center;\n    border-radius: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\n.icona {\n    width: 24px;\n    height: 22px;\n    display: inline-block;\n}\n\n.iconfopen {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderopen.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.iconfclosed {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('folderclosed.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\n.icondoc {\n    width: 24px;\n    height: 18px;\n    margin-bottom: 4px;\n    background-image:url('doc.png');\n    background-position: 0px -4px;\n    background-repeat: repeat-y;\n    vertical-align:top;\n    display: inline-block;\n}\n\ntable.directory {\n    font: 400 14px Roboto,sans-serif;\n}\n\n/* @end */\n\ndiv.dynheader {\n        margin-top: 8px;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\naddress {\n\tfont-style: normal;\n\tcolor: #2A3D61;\n}\n\ntable.doxtable caption {\n\tcaption-side: top;\n}\n\ntable.doxtable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.doxtable td, table.doxtable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.doxtable th {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\ntable.fieldtable {\n        /*width: 100%;*/\n        margin-bottom: 10px;\n        border: 1px solid #A8B8D9;\n        border-spacing: 0px;\n        -moz-border-radius: 4px;\n        -webkit-border-radius: 4px;\n        border-radius: 4px;\n        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;\n        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);\n}\n\n.fieldtable td, .fieldtable th {\n        padding: 3px 7px 2px;\n}\n\n.fieldtable td.fieldtype, .fieldtable td.fieldname {\n        white-space: nowrap;\n        border-right: 1px solid #A8B8D9;\n        border-bottom: 1px solid #A8B8D9;\n        vertical-align: top;\n}\n\n.fieldtable td.fieldname {\n        padding-top: 3px;\n}\n\n.fieldtable td.fielddoc {\n        border-bottom: 1px solid #A8B8D9;\n        /*width: 100%;*/\n}\n\n.fieldtable td.fielddoc p:first-child {\n        margin-top: 0px;\n}       \n        \n.fieldtable td.fielddoc p:last-child {\n        margin-bottom: 2px;\n}\n\n.fieldtable tr:last-child td {\n        border-bottom: none;\n}\n\n.fieldtable th {\n        background-image:url('nav_f.png');\n        background-repeat:repeat-x;\n        background-color: #E2E8F2;\n        font-size: 90%;\n        color: #253555;\n        padding-bottom: 4px;\n        padding-top: 5px;\n        text-align:left;\n        font-weight: 400;\n        -moz-border-radius-topleft: 4px;\n        -moz-border-radius-topright: 4px;\n        -webkit-border-top-left-radius: 4px;\n        -webkit-border-top-right-radius: 4px;\n        border-top-left-radius: 4px;\n        border-top-right-radius: 4px;\n        border-bottom: 1px solid #A8B8D9;\n}\n\n\n.tabsearch {\n\ttop: 0px;\n\tleft: 10px;\n\theight: 36px;\n\tbackground-image: url('tab_b.png');\n\tz-index: 101;\n\toverflow: hidden;\n\tfont-size: 13px;\n}\n\n.navpath ul\n{\n\tfont-size: 11px;\n\tbackground-image:url('tab_b.png');\n\tbackground-repeat:repeat-x;\n\tbackground-position: 0 -5px;\n\theight:30px;\n\tline-height:30px;\n\tcolor:#8AA0CC;\n\tborder:solid 1px #C2CDE4;\n\toverflow:hidden;\n\tmargin:0px;\n\tpadding:0px;\n}\n\n.navpath li\n{\n\tlist-style-type:none;\n\tfloat:left;\n\tpadding-left:10px;\n\tpadding-right:15px;\n\tbackground-image:url('bc_s.png');\n\tbackground-repeat:no-repeat;\n\tbackground-position:right;\n\tcolor:#364D7C;\n}\n\n.navpath li.navelem a\n{\n\theight:32px;\n\tdisplay:block;\n\ttext-decoration: none;\n\toutline: none;\n\tcolor: #283A5D;\n\tfont-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n\ttext-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n\ttext-decoration: none;        \n}\n\n.navpath li.navelem a:hover\n{\n\tcolor:#6884BD;\n}\n\n.navpath li.footer\n{\n        list-style-type:none;\n        float:right;\n        padding-left:10px;\n        padding-right:15px;\n        background-image:none;\n        background-repeat:no-repeat;\n        background-position:right;\n        color:#364D7C;\n        font-size: 8pt;\n}\n\n\ndiv.summary\n{\n\tfloat: right;\n\tfont-size: 8pt;\n\tpadding-right: 5px;\n\twidth: 50%;\n\ttext-align: right;\n}       \n\ndiv.summary a\n{\n\twhite-space: nowrap;\n}\n\ntable.classindex\n{\n        margin: 10px;\n        white-space: nowrap;\n        margin-left: 3%;\n        margin-right: 3%;\n        width: 94%;\n        border: 0;\n        border-spacing: 0; \n        padding: 0;\n}\n\ndiv.ingroups\n{\n\tfont-size: 8pt;\n\twidth: 50%;\n\ttext-align: left;\n}\n\ndiv.ingroups a\n{\n\twhite-space: nowrap;\n}\n\ndiv.header\n{\n        background-image:url('nav_h.png');\n        background-repeat:repeat-x;\n\tbackground-color: #F9FAFC;\n\tmargin:  0px;\n\tborder-bottom: 1px solid #C4CFE5;\n}\n\ndiv.headertitle\n{\n\tpadding: 5px 5px 5px 10px;\n}\n\n.PageDocRTL-title div.headertitle {\n  text-align: right;\n  direction: rtl;\n}\n\ndl {\n        padding: 0 0 0 0;\n}\n\n/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */\ndl.section {\n\tmargin-left: 0px;\n\tpadding-left: 0px;\n}\n\ndl.section.DocNodeRTL {\n  margin-right: 0px;\n  padding-right: 0px;\n}\n\ndl.note {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #D0C000;\n}\n\ndl.note.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #D0C000;\n}\n\ndl.warning, dl.attention {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #FF0000;\n}\n\ndl.warning.DocNodeRTL, dl.attention.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #FF0000;\n}\n\ndl.pre, dl.post, dl.invariant {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #00D000;\n}\n\ndl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #00D000;\n}\n\ndl.deprecated {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #505050;\n}\n\ndl.deprecated.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #505050;\n}\n\ndl.todo {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #00C0E0;\n}\n\ndl.todo.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #00C0E0;\n}\n\ndl.test {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #3030E0;\n}\n\ndl.test.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #3030E0;\n}\n\ndl.bug {\n  margin-left: -7px;\n  padding-left: 3px;\n  border-left: 4px solid;\n  border-color: #C08050;\n}\n\ndl.bug.DocNodeRTL {\n  margin-left: 0;\n  padding-left: 0;\n  border-left: 0;\n  margin-right: -7px;\n  padding-right: 3px;\n  border-right: 4px solid;\n  border-color: #C08050;\n}\n\ndl.section dd {\n\tmargin-bottom: 6px;\n}\n\n\n#projectlogo\n{\n\ttext-align: center;\n\tvertical-align: bottom;\n\tborder-collapse: separate;\n}\n \n#projectlogo img\n{ \n\tborder: 0px none;\n}\n \n#projectalign\n{\n        vertical-align: middle;\n}\n\n#projectname\n{\n\tfont: 200% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 2px 0px;\n}\n    \n#projectbrief\n{\n\tfont: 90% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#projectnumber\n{\n\tfont: 50% Tahoma, Arial,sans-serif;\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n#titlearea\n{\n\tpadding: 0px;\n\tmargin: 0px;\n\twidth: 100%;\n\tborder-bottom: 1px solid #5373B4;\n}\n\n.image\n{\n        text-align: center;\n}\n\n.dotgraph\n{\n        text-align: center;\n}\n\n.mscgraph\n{\n        text-align: center;\n}\n\n.plantumlgraph\n{\n        text-align: center;\n}\n\n.diagraph\n{\n        text-align: center;\n}\n\n.caption\n{\n\tfont-weight: bold;\n}\n\ndiv.zoom\n{\n\tborder: 1px solid #90A5CE;\n}\n\ndl.citelist {\n        margin-bottom:50px;\n}\n\ndl.citelist dt {\n        color:#334975;\n        float:left;\n        font-weight:bold;\n        margin-right:10px;\n        padding:5px;\n        text-align:right;\n        width:52px;\n}\n\ndl.citelist dd {\n        margin:2px 0 2px 72px;\n        padding:5px 0;\n}\n\ndiv.toc {\n        padding: 14px 25px;\n        background-color: #F4F6FA;\n        border: 1px solid #D8DFEE;\n        border-radius: 7px 7px 7px 7px;\n        float: right;\n        height: auto;\n        margin: 0 8px 10px 10px;\n        width: 200px;\n}\n\n.PageDocRTL-title div.toc {\n  float: left !important;\n  text-align: right;\n}\n\ndiv.toc li {\n        background: url(\"bdwn.png\") no-repeat scroll 0 5px transparent;\n        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;\n        margin-top: 5px;\n        padding-left: 10px;\n        padding-top: 2px;\n}\n\n.PageDocRTL-title div.toc li {\n  background-position-x: right !important;\n  padding-left: 0 !important;\n  padding-right: 10px;\n}\n\ndiv.toc h3 {\n        font: bold 12px/1.2 Arial,FreeSans,sans-serif;\n\tcolor: #4665A2;\n        border-bottom: 0 none;\n        margin: 0;\n}\n\ndiv.toc ul {\n        list-style: none outside none;\n        border: medium none;\n        padding: 0px;\n}       \n\ndiv.toc li.level1 {\n        margin-left: 0px;\n}\n\ndiv.toc li.level2 {\n        margin-left: 15px;\n}\n\ndiv.toc li.level3 {\n        margin-left: 30px;\n}\n\ndiv.toc li.level4 {\n        margin-left: 45px;\n}\n\nspan.emoji {\n        /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html\n         * font-family: \"Noto Color Emoji\", \"Apple Color Emoji\", \"Segoe UI Emoji\", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;\n         */\n}\n\n.PageDocRTL-title div.toc li.level1 {\n  margin-left: 0 !important;\n  margin-right: 0;\n}\n\n.PageDocRTL-title div.toc li.level2 {\n  margin-left: 0 !important;\n  margin-right: 15px;\n}\n\n.PageDocRTL-title div.toc li.level3 {\n  margin-left: 0 !important;\n  margin-right: 30px;\n}\n\n.PageDocRTL-title div.toc li.level4 {\n  margin-left: 0 !important;\n  margin-right: 45px;\n}\n\n.inherit_header {\n        font-weight: bold;\n        color: gray;\n        cursor: pointer;\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n.inherit_header td {\n        padding: 6px 0px 2px 5px;\n}\n\n.inherit {\n        display: none;\n}\n\ntr.heading h2 {\n        margin-top: 12px;\n        margin-bottom: 4px;\n}\n\n/* tooltip related style info */\n\n.ttc {\n        position: absolute;\n        display: none;\n}\n\n#powerTip {\n\tcursor: default;\n\twhite-space: nowrap;\n\tbackground-color: white;\n\tborder: 1px solid gray;\n\tborder-radius: 4px 4px 4px 4px;\n\tbox-shadow: 1px 1px 7px gray;\n\tdisplay: none;\n\tfont-size: smaller;\n\tmax-width: 80%;\n\topacity: 0.9;\n\tpadding: 1ex 1em 1em;\n\tposition: absolute;\n\tz-index: 2147483647;\n}\n\n#powerTip div.ttdoc {\n        color: grey;\n\tfont-style: italic;\n}\n\n#powerTip div.ttname a {\n        font-weight: bold;\n}\n\n#powerTip div.ttname {\n        font-weight: bold;\n}\n\n#powerTip div.ttdeci {\n        color: #006318;\n}\n\n#powerTip div {\n        margin: 0px;\n        padding: 0px;\n        font: 12px/16px Roboto,sans-serif;\n}\n\n#powerTip:before, #powerTip:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tmargin: 0px;\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.w:after,  #powerTip.w:before,\n#powerTip.e:after,  #powerTip.e:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.nw:after, #powerTip.nw:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tborder: solid transparent;\n\tcontent: \" \";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n}\n\n#powerTip.n:after,  #powerTip.s:after,\n#powerTip.w:after,  #powerTip.e:after,\n#powerTip.nw:after, #powerTip.ne:after,\n#powerTip.sw:after, #powerTip.se:after {\n\tborder-color: rgba(255, 255, 255, 0);\n}\n\n#powerTip.n:before,  #powerTip.s:before,\n#powerTip.w:before,  #powerTip.e:before,\n#powerTip.nw:before, #powerTip.ne:before,\n#powerTip.sw:before, #powerTip.se:before {\n\tborder-color: rgba(128, 128, 128, 0);\n}\n\n#powerTip.n:after,  #powerTip.n:before,\n#powerTip.ne:after, #powerTip.ne:before,\n#powerTip.nw:after, #powerTip.nw:before {\n\ttop: 100%;\n}\n\n#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {\n\tborder-top-color: #FFFFFF;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n#powerTip.n:before {\n\tborder-top-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n#powerTip.n:after, #powerTip.n:before {\n\tleft: 50%;\n}\n\n#powerTip.nw:after, #powerTip.nw:before {\n\tright: 14px;\n}\n\n#powerTip.ne:after, #powerTip.ne:before {\n\tleft: 14px;\n}\n\n#powerTip.s:after,  #powerTip.s:before,\n#powerTip.se:after, #powerTip.se:before,\n#powerTip.sw:after, #powerTip.sw:before {\n\tbottom: 100%;\n}\n\n#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {\n\tborder-bottom-color: #FFFFFF;\n\tborder-width: 10px;\n\tmargin: 0px -10px;\n}\n\n#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {\n\tborder-bottom-color: #808080;\n\tborder-width: 11px;\n\tmargin: 0px -11px;\n}\n\n#powerTip.s:after, #powerTip.s:before {\n\tleft: 50%;\n}\n\n#powerTip.sw:after, #powerTip.sw:before {\n\tright: 14px;\n}\n\n#powerTip.se:after, #powerTip.se:before {\n\tleft: 14px;\n}\n\n#powerTip.e:after, #powerTip.e:before {\n\tleft: 100%;\n}\n#powerTip.e:after {\n\tborder-left-color: #FFFFFF;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.e:before {\n\tborder-left-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n#powerTip.w:after, #powerTip.w:before {\n\tright: 100%;\n}\n#powerTip.w:after {\n\tborder-right-color: #FFFFFF;\n\tborder-width: 10px;\n\ttop: 50%;\n\tmargin-top: -10px;\n}\n#powerTip.w:before {\n\tborder-right-color: #808080;\n\tborder-width: 11px;\n\ttop: 50%;\n\tmargin-top: -11px;\n}\n\n@media print\n{\n  #top { display: none; }\n  #side-nav { display: none; }\n  #nav-path { display: none; }\n  body { overflow:visible; }\n  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }\n  .summary { display: none; }\n  .memitem { page-break-inside: avoid; }\n  #doc-content\n  {\n    margin-left:0 !important;\n    height:auto !important;\n    width:auto !important;\n    overflow:inherit;\n    display:inline;\n  }\n}\n\n/* @group Markdown */\n\ntable.markdownTable {\n\tborder-collapse:collapse;\n        margin-top: 4px;\n        margin-bottom: 4px;\n}\n\ntable.markdownTable td, table.markdownTable th {\n\tborder: 1px solid #2D4068;\n\tpadding: 3px 7px 2px;\n}\n\ntable.markdownTable tr {\n}\n\nth.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {\n\tbackground-color: #374F7F;\n\tcolor: #FFFFFF;\n\tfont-size: 110%;\n\tpadding-bottom: 4px;\n\tpadding-top: 5px;\n}\n\nth.markdownTableHeadLeft, td.markdownTableBodyLeft {\n\ttext-align: left\n}\n\nth.markdownTableHeadRight, td.markdownTableBodyRight {\n\ttext-align: right\n}\n\nth.markdownTableHeadCenter, td.markdownTableBodyCenter {\n\ttext-align: center\n}\n\n.DocNodeRTL {\n  text-align: right;\n  direction: rtl;\n}\n\n.DocNodeLTR {\n  text-align: left;\n  direction: ltr;\n}\n\ntable.DocNodeRTL {\n   width: auto;\n   margin-right: 0;\n   margin-left: auto;\n}\n\ntable.DocNodeLTR {\n   width: auto;\n   margin-right: auto;\n   margin-left: 0;\n}\n\ntt, code, kbd, samp\n{\n  display: inline-block;\n  direction:ltr; \n}\n/* @end */\n\nu {\n\ttext-decoration: underline;\n}\n\n"
  },
  {
    "path": "docs/cppapi/drawlist_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/drawlist.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">drawlist.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"drawlist_8h_source.html\">render/opengl/drawlist.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2opengl_2light_8h_source.html\">render/opengl/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"shader_8h_source.html\">render/opengl/shader.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">drawlistentry_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API::InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API::RemoveDrawListEntry</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API::GetFlags</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API::SetFlags</a> (drawlistentry_t entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API::SetLayer</a> (drawlistentry_t entry, layer_t layer)</td></tr>\n<tr class=\"separator:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API::SetPose</a> (drawlistentry_t entry, Pose *pose)</td></tr>\n<tr class=\"separator:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API::SetLightmap</a> (drawlistentry_t entry, texturehandle_t lightmap)</td></tr>\n<tr class=\"separator:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">tram::Render::API::SetEnvironmentMap</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> environmentmap)</td></tr>\n<tr class=\"separator:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">tram::Render::API::SetSphericalHarmonic</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a> harmonic)</td></tr>\n<tr class=\"separator:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68a28820f27f670a90c2a644aa199728\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">tram::Render::API::SetDrawListAABB</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a68a28820f27f670a90c2a644aa199728\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API::SetDrawListColors</a> (drawlistentry_t entry, size_t count, vec4 *color)</td></tr>\n<tr class=\"separator:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">tram::Render::API::SetDrawListTextureOffsets</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t count, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *offset)</td></tr>\n<tr class=\"separator:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API::SetLights</a> (drawlistentry_t entry, light_t *lights)</td></tr>\n<tr class=\"separator:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API::SetMatrix</a> (drawlistentry_t entry, const mat4 &amp;matrix)</td></tr>\n<tr class=\"separator:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a664d9f1a7426b3a1505975402100480a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">tram::Render::API::SetFadeDistance</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, float near, float far)</td></tr>\n<tr class=\"separator:a664d9f1a7426b3a1505975402100480a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API::SetDrawListVertexArray</a> (drawlistentry_t entry, vertexarray_t vertex_array_handle)</td></tr>\n<tr class=\"separator:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API::SetDrawListIndexArray</a> (drawlistentry_t entry, indexarray_t index_array_handle)</td></tr>\n<tr class=\"separator:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9089059c10db7896ab1796273aab81b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">tram::Render::API::SetDrawListSpriteArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> sprite_array_handle)</td></tr>\n<tr class=\"separator:a9089059c10db7896ab1796273aab81b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78a374d698ab9d252afd86163c19440\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API::SetDrawListIndexRange</a> (drawlistentry_t entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:ac78a374d698ab9d252afd86163c19440\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3724426196e2fad6e190726003249aed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API::SetDrawListShader</a> (drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type)</td></tr>\n<tr class=\"separator:a3724426196e2fad6e190726003249aed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">tram::Render::API::SetDrawListMaterials</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t material_count, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> *materials)</td></tr>\n<tr class=\"separator:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/drawlist_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/drawlist.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">drawlist.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"opengl_2material_8h_source.html\">render/opengl/material.h</a>&gt;</code><br />\n</div>\n<p><a href=\"drawlist_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/drawlist_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/drawlist.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">drawlist.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"drawlist_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_DRAWLIST_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_DRAWLIST_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"opengl_2material_8h.html\">render/opengl/material.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">   13</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">   14</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">   16</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">pose</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">   18</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">matrix</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">   20</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">lights</a>[4] = {0};</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">   22</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">layer</a> = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">   23</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">lightmap</a> = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">   24</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">environmentmap</a> = 0;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">   25</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">vao</a> = 0;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">   26</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">eboLen</a> = 0; <span class=\"comment\">// in primitive count</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">   27</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">eboOff</a> = 0; <span class=\"comment\">// in primitive count </span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">   28</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">shader</a> = 0;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">   29</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">texCount</a> = 0;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">   30</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">colors</a>[15];</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">   31</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">texture_transforms</a>[15];</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">   32</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">materials</a>[15];</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">   34</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">aabb_min</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">aabb_max</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">   37</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">fade_near</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">   38</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">fade_far</a> = INFINITY;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">   40</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">sphericalharmonic_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">harmonic</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">   42</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">GLDrawListEntry</a>() {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; 15; i++) {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>            <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">materials</a>[i] = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>            <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">colors</a>[i] = {1.0f, 1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>            <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">texture_transforms</a>[i]  = {0.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        }</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">harmonic</a> = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">   53</a></span>    uint64_t <a class=\"code hl_function\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">CalcSortKey</a> (<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; cameraPosition) {</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location = <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">matrix</a> * <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>(0.0f, 0.0f, 0.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        uint64_t sortkey = 0;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        sortkey = <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">FLAG_TRANSPARENT</a> ? 1 : 0;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        sortkey = sortkey &lt;&lt; 60;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        sortkey = sortkey | (((uint64_t)<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">layer</a>) &lt;&lt; 61);    <span class=\"comment\">// 3 bits for the layer number</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        sortkey = sortkey | (((uint64_t)<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">shader</a>) &lt;&lt; 48);   <span class=\"comment\">// 12 bits for the shader</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        sortkey = sortkey | (((uint64_t)<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">vao</a>) &lt;&lt; 32);      <span class=\"comment\">// 16 bits or the vertex array number</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"comment\">// TODO: reverse the distance if FLAG_REVERSE_SORT is set</span></div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"comment\">// also i think that the bitmask for the distance thing is incorrect</span></div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        sortkey = sortkey | (((uint64_t)(glm::distance(cameraPosition, location) * 3000000.0f)) &amp; 0x00000000FFFFFFFF); <span class=\"comment\">// 32 bits for the distance</span></div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> sortkey;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>};</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>}</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_DRAWLIST_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">tram::Render::FLAG_TRANSPARENT</a></div><div class=\"ttdeci\">@ FLAG_TRANSPARENT</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"aopengl_2material_8h_html\"><div class=\"ttname\"><a href=\"opengl_2material_8h.html\">material.h</a></div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a00d701e6b4117b3ea568a1733d5f4455\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">tram::Render::API::GLDrawListEntry::texCount</a></div><div class=\"ttdeci\">uint32_t texCount</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a0d85b48d0b7d54b45de4f436571e40b0\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">tram::Render::API::GLDrawListEntry::aabb_min</a></div><div class=\"ttdeci\">vec3 aabb_min</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a28960b58e1684771943364ceddfe4917\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">tram::Render::API::GLDrawListEntry::eboLen</a></div><div class=\"ttdeci\">uint32_t eboLen</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a3460a35f7e6246b3990b5b09f26c6415\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">tram::Render::API::GLDrawListEntry::CalcSortKey</a></div><div class=\"ttdeci\">uint64_t CalcSortKey(const vec3 &amp;cameraPosition)</div><div class=\"ttdoc\">Assembles a key for sorting.</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a41a219aed82e2711a6e78adfcdfb299f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">tram::Render::API::GLDrawListEntry::lights</a></div><div class=\"ttdeci\">uint32_t lights[4]</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a4a282542da7ede553863e63080b53e77\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">tram::Render::API::GLDrawListEntry::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">tram::Render::API::GLDrawListEntry::aabb_max</a></div><div class=\"ttdeci\">vec3 aabb_max</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a4d34b1b8c60ff21a937113dc78b7d4a4\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">tram::Render::API::GLDrawListEntry::matrix</a></div><div class=\"ttdeci\">mat4 matrix</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a67f380744f271dbece03c8f081c86bf1\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">tram::Render::API::GLDrawListEntry::lightmap</a></div><div class=\"ttdeci\">uint32_t lightmap</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a70b0e18a2a7c521c25994b24941984ec\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">tram::Render::API::GLDrawListEntry::texture_transforms</a></div><div class=\"ttdeci\">vec4 texture_transforms[15]</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a74b3a8569c8bc84e8df38aa62da38f20\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">tram::Render::API::GLDrawListEntry::harmonic</a></div><div class=\"ttdeci\">sphericalharmonic_t harmonic</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a832edf238874e59d291c76e04b22ccec\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">tram::Render::API::GLDrawListEntry::fade_near</a></div><div class=\"ttdeci\">float fade_near</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_a865e421a077ef2c6fafe376311afe40a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">tram::Render::API::GLDrawListEntry::eboOff</a></div><div class=\"ttdeci\">uint32_t eboOff</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_aac3c45c286b4c4e9fea14811c685a7b8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">tram::Render::API::GLDrawListEntry::layer</a></div><div class=\"ttdeci\">uint32_t layer</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_aaf126029f650661e7a83c6a054f57308\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">tram::Render::API::GLDrawListEntry::environmentmap</a></div><div class=\"ttdeci\">uint32_t environmentmap</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_aafdb1c878c1a40c28478169a730e3c18\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">tram::Render::API::GLDrawListEntry::materials</a></div><div class=\"ttdeci\">GLMaterial * materials[15]</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_ac329ee9b6d3154d5f81d1cb322bdb464\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">tram::Render::API::GLDrawListEntry::colors</a></div><div class=\"ttdeci\">vec4 colors[15]</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_ac984d3f4c21946c93809b5e07408fc1d\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">tram::Render::API::GLDrawListEntry::vao</a></div><div class=\"ttdeci\">uint32_t vao</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_ad431ba61a7c7f2673948abacbf85aa0d\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">tram::Render::API::GLDrawListEntry::pose</a></div><div class=\"ttdeci\">Pose * pose</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_ae0e14420c779fa4bc2fbd4f8246ce78b\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">tram::Render::API::GLDrawListEntry::shader</a></div><div class=\"ttdeci\">uint32_t shader</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_ae282428d355cd814ebf720a5885adab2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">tram::Render::API::GLDrawListEntry::fade_far</a></div><div class=\"ttdeci\">float fade_far</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html_af7bb6164cd2f0ca88d08e2dd524f2c28\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">tram::Render::API::GLDrawListEntry::GLDrawListEntry</a></div><div class=\"ttdeci\">GLDrawListEntry()</div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></div><div class=\"ttdef\"><b>Definition:</b> material.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:92</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/dynsections.js",
    "content": "/*\n @licstart  The following is the entire license notice for the JavaScript code in this file.\n\n The MIT License (MIT)\n\n Copyright (C) 1997-2020 by Dimitri van Heesch\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software\n and associated documentation files (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge, publish, distribute,\n sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or\n substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n @licend  The above is the entire license notice for the JavaScript code in this file\n */\nfunction toggleVisibility(linkObj)\n{\n var base = $(linkObj).attr('id');\n var summary = $('#'+base+'-summary');\n var content = $('#'+base+'-content');\n var trigger = $('#'+base+'-trigger');\n var src=$(trigger).attr('src');\n if (content.is(':visible')===true) {\n   content.hide();\n   summary.show();\n   $(linkObj).addClass('closed').removeClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');\n } else {\n   content.show();\n   summary.hide();\n   $(linkObj).removeClass('closed').addClass('opened');\n   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');\n }\n return false;\n}\n\nfunction updateStripes()\n{\n  $('table.directory tr').\n       removeClass('even').filter(':visible:even').addClass('even');\n}\n\nfunction toggleLevel(level)\n{\n  $('table.directory tr').each(function() {\n    var l = this.id.split('_').length-1;\n    var i = $('#img'+this.id.substring(3));\n    var a = $('#arr'+this.id.substring(3));\n    if (l<level+1) {\n      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');\n      a.html('&#9660;');\n      $(this).show();\n    } else if (l==level+1) {\n      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');\n      a.html('&#9658;');\n      $(this).show();\n    } else {\n      $(this).hide();\n    }\n  });\n  updateStripes();\n}\n\nfunction toggleFolder(id)\n{\n  // the clicked row\n  var currentRow = $('#row_'+id);\n\n  // all rows after the clicked row\n  var rows = currentRow.nextAll(\"tr\");\n\n  var re = new RegExp('^row_'+id+'\\\\d+_$', \"i\"); //only one sub\n\n  // only match elements AFTER this one (can't hide elements before)\n  var childRows = rows.filter(function() { return this.id.match(re); });\n\n  // first row is visible we are HIDING\n  if (childRows.filter(':first').is(':visible')===true) {\n    // replace down arrow by right arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    currentRowSpans.filter(\".arrow\").html('&#9658;');\n    rows.filter(\"[id^=row_\"+id+\"]\").hide(); // hide all children\n  } else { // we are SHOWING\n    // replace right arrow by down arrow for current row\n    var currentRowSpans = currentRow.find(\"span\");\n    currentRowSpans.filter(\".iconfclosed\").removeClass(\"iconfclosed\").addClass(\"iconfopen\");\n    currentRowSpans.filter(\".arrow\").html('&#9660;');\n    // replace down arrows by right arrows for child rows\n    var childRowsSpans = childRows.find(\"span\");\n    childRowsSpans.filter(\".iconfopen\").removeClass(\"iconfopen\").addClass(\"iconfclosed\");\n    childRowsSpans.filter(\".arrow\").html('&#9658;');\n    childRows.show(); //show all children\n  }\n  updateStripes();\n}\n\n\nfunction toggleInherit(id)\n{\n  var rows = $('tr.inherit.'+id);\n  var img = $('tr.inherit_header.'+id+' img');\n  var src = $(img).attr('src');\n  if (rows.filter(':first').is(':visible')===true) {\n    rows.css('display','none');\n    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');\n  } else {\n    rows.css('display','table-row'); // using show() causes jump in firefox\n    $(img).attr('src',src.substring(0,src.length-10)+'open.png');\n  }\n}\n/* @license-end */\n"
  },
  {
    "path": "docs/cppapi/entities_2light_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/light.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2light_8h_source.html\">entities/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a480f7c687b7792584a6b60552bf1ce4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\">tram::FIELD_COLOR</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\">tram::FIELD_DISTANCE</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\">tram::FIELD_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\">tram::FIELD_EXPONENT</a>\n }</td></tr>\n<tr class=\"separator:a480f7c687b7792584a6b60552bf1ce4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2light_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/light.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entities_2light_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html\">tram::Light</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper.  <a href=\"classtram_1_1_light.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2light_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/light.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_2light_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>LightComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html\">   14</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_light.html\">Light</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <a class=\"code hl_function\" href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">Light</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">   26</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;LightComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">light</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">   28</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">color</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">   29</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">   30</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">direction</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">   31</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">exponent</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_LIGHT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html\">tram::Light</a></div><div class=\"ttdoc\">LightComponent wrapper.</div><div class=\"ttdef\"><b>Definition:</b> light.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_a0b11cd3d1f0ba7c48345eb54134848c3\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">tram::Light::exponent</a></div><div class=\"ttdeci\">float exponent</div><div class=\"ttdef\"><b>Definition:</b> light.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_a14d15741d030edc15620a73fbfaf0256\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">tram::Light::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_a1b28bc6a6961ed135f688efd63930d1d\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">tram::Light::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_a4c76b25a1ea34c90b9eed095443e143f\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">tram::Light::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_a8ebcbf936a12dbcef52e33fe7efe4653\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">tram::Light::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> light.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_aab4ab5b5a486c5b765906b62da2eaa46\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">tram::Light::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_aaee848b4fe419b1fc6c82282b31aa9dd\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">tram::Light::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_ab4a742307b9c463eef63115ad3b19ae3\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">tram::Light::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> light.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_ac45d1bc54463861a0b9919b8eca264aa\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">tram::Light::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_ac704c0af1a53820b9dcbcaa991650787\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">tram::Light::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> light.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_ad1690e5bb21843da0f5ef2c16a6219ff\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">tram::Light::Light</a></div><div class=\"ttdeci\">Light(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_ae075d84f1f0778ac30f0ba35d040998f\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">tram::Light::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_af5eb3563a405edc4d1344432268cd7a9\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">tram::Light::light</a></div><div class=\"ttdeci\">Component&lt; LightComponent &gt; light</div><div class=\"ttdef\"><b>Definition:</b> light.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_html_af787551e1e7ceecc73891f52811050b0\"><div class=\"ttname\"><a href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">tram::Light::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2player_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/player.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">player.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entities_2player_8h_source.html\">entities/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2player_8h_source.html\">components/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a1759e20de49502fc468e5b65e7baf481\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1759e20de49502fc468e5b65e7baf481\">tram::collision_width</a> = 0.35f</td></tr>\n<tr class=\"separator:a1759e20de49502fc468e5b65e7baf481\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73098ef9a80f90afd7d8f6ff04e420b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9\">tram::collision_height</a> = 1.85f</td></tr>\n<tr class=\"separator:a73098ef9a80f90afd7d8f6ff04e420b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cc6a6286e4acb91210a3c71fb8e805f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f\">tram::collision_height_crouch</a> = 0.5f</td></tr>\n<tr class=\"separator:a7cc6a6286e4acb91210a3c71fb8e805f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47a4bfe3c127f07cf4fa3a20e3785f8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a\">tram::collision_group</a> = Physics::COLL_PLAYER</td></tr>\n<tr class=\"separator:a47a4bfe3c127f07cf4fa3a20e3785f8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2player_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/player.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">player.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2player_8h_source.html\">components/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entities_2player_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html\">tram::Player</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it.  <a href=\"classtram_1_1_player.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2player_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/player.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">player.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_2player_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_PLAYER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_PLAYER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2player_8h.html\">components/player.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"controller_8h.html\">components/controller.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_player.html\">Player</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">Player</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">Player</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">~Player</a>() {std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Player destructor!&quot;</span> &lt;&lt; std::endl; <a class=\"code hl_function\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">Unload</a>();}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">SerializeString</a>(std::string&amp; str);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">   29</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PlayerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">plomp</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">   30</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">physics_body</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"comment\">// wait why is this public</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">   33</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;FPSControllerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">controllercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>}</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_PLAYER_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html\">tram::Player</a></div><div class=\"ttdoc\">ControllerComponent with a PlayerComponent attached to it.</div><div class=\"ttdef\"><b>Definition:</b> player.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a02a0f79e73da31e380ab604773461b4b\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">tram::Player::plomp</a></div><div class=\"ttdeci\">Component&lt; PlayerComponent &gt; plomp</div><div class=\"ttdef\"><b>Definition:</b> player.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a10a805e40469321fb7d6fa1f66d0c0eb\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">tram::Player::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a34cfa479567416e9aa5b3b147b44fdb5\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">tram::Player::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:85</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a54576337a20fd6e5f753a1e9716900b7\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">tram::Player::Player</a></div><div class=\"ttdeci\">Player()</div><div class=\"ttdoc\">Creates a new player.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a70d0096e740c70b9d4b2a4d1f567166b\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">tram::Player::physics_body</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physics_body</div><div class=\"ttdef\"><b>Definition:</b> player.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a751cd1b280c732f44f018c82464badcc\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">tram::Player::~Player</a></div><div class=\"ttdeci\">~Player()</div><div class=\"ttdef\"><b>Definition:</b> player.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a7e5497fa4c5d70508cd8928a625bb2d7\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">tram::Player::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_a9a9d322035d6f80a89abf2e67337c52e\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">tram::Player::controllercomponent</a></div><div class=\"ttdeci\">Component&lt; FPSControllerComponent &gt; controllercomponent</div><div class=\"ttdef\"><b>Definition:</b> player.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_aab33b3c6c47189f920a5d4f0bee78528\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">tram::Player::SerializeString</a></div><div class=\"ttdeci\">void SerializeString(std::string &amp;str)</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:81</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_abda0826d3fb3a3ef717a4b8704745b61\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">tram::Player::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_ad91ecec5652fba7dc3d061b7823bc699\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">tram::Player::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_ae00d494c1e34cc0387008e94ac6863a2\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">tram::Player::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:94</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_player_html_afddc1a9d1a0e2a61cc8bb13e210c0643\"><div class=\"ttname\"><a href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">tram::Player::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> player.cpp:70</div></div>\n<div class=\"ttc\" id=\"acomponents_2player_8h_html\"><div class=\"ttname\"><a href=\"components_2player_8h.html\">player.h</a></div></div>\n<div class=\"ttc\" id=\"acontroller_8h_html\"><div class=\"ttname\"><a href=\"controller_8h.html\">controller.h</a></div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2script_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/script.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entities_2script_8h_source.html\">entities/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">tram::ScriptableType::ScriptableTypeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_scriptable_type\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">tram::ScriptableType</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType::Register</a> (name_t base_type, Entity *(*constr_func)(name_t new_type, const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *))</td></tr>\n<tr class=\"separator:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Entity *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">tram::ScriptableType::Make</a> (name_t base_type, name_t new_type, const SharedEntityData &amp;data, const ValueArray &amp;array)</td></tr>\n<tr class=\"separator:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">tram::ScriptableType::Yeet</a> (Entity *yeetable)</td></tr>\n<tr class=\"separator:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2script_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/script.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n</div>\n<p><a href=\"entities_2script_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">tram::Scriptable&lt; T &gt;</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides script language subclassing.  <a href=\"classtram_1_1_scriptable.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_scriptable_type\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">tram::ScriptableType</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType::Register</a> (name_t base_type, Entity *(*constr_func)(name_t new_type, const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *))</td></tr>\n<tr class=\"separator:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Entity *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">tram::ScriptableType::Make</a> (name_t base_type, name_t new_type, const SharedEntityData &amp;data, const ValueArray &amp;array)</td></tr>\n<tr class=\"separator:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">tram::ScriptableType::Yeet</a> (Entity *yeetable)</td></tr>\n<tr class=\"separator:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2script_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/script.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">script.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_2script_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"framework_2script_8h.html\">framework/script.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\">// TODO: make constr_func etc. into typedefs??</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">namespace </span>ScriptableType {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">Register</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> base_type, Entity* (*constr_func)(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, <span class=\"keyword\">const</span> SharedEntityData&amp;, <span class=\"keyword\">const</span> ValueArray&amp;), <span class=\"keywordtype\">void</span> (*destr_func)(Entity*));</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    Entity* <a class=\"code hl_function\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">Make</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> base_type, <a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type, <span class=\"keyword\">const</span> SharedEntityData&amp;, <span class=\"keyword\">const</span> ValueArray&amp;);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">Yeet</a>(Entity* yeetable);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>}</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html\">   23</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_scriptable.html\">Scriptable</a> : <span class=\"keyword\">public</span> T {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">   25</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">Scriptable</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp; shared_data, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp; field_array, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a>) : T(shared_data, field_array) {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>        this-&gt;type = <a class=\"code hl_variable\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">   29</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">~Scriptable</a>() {}</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">   31</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">UpdateParameters</a>() {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_update_parameters_callback&quot;</span>, {this-&gt;<span class=\"keywordtype\">id</span>})) {</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>            T::UpdateParameters();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        }</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    }</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">   37</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">SetParameters</a>() {</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_set_parameters_callback&quot;</span>, {this-&gt;<span class=\"keywordtype\">id</span>})) {</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>            T::SetParameters();</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>        }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">   43</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">Load</a>() {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_load_callback&quot;</span>, {this-&gt;<span class=\"keywordtype\">id</span>})) {</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>            <a class=\"code hl_function\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">T::Load</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        }</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    }</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">   49</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">Unload</a>() {</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_unload_callback&quot;</span>, {this-&gt;<span class=\"keywordtype\">id</span>})) {</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>            T::Unload();</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">Serialize</a>() {</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"comment\">/*if (Script::CallFunction(&quot;__impl_entity_serialize_callback&quot;, {this-&gt;id})) {</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">            if (entity) entity-&gt;Serialize();</span></div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">        }*/</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">   61</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">SanitizeData</a>(<a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; data) {</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"comment\">// there might be some issues if the message&#39;s data pointer is not pointing</span></div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <span class=\"comment\">// to a value, but something else.</span></div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <span class=\"comment\">// hopefully we won&#39;t get segfaults.</span></div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordtype\">bool</span> valid_type = data.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a>() || data.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a>() || data.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">IsBool</a>() || data.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        <span class=\"keywordflow\">if</span> (!valid_type) data = <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <span class=\"keywordflow\">if</span> (data.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>) {</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>            <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">name_t::is_valid</a>(data)) data = <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        }</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    }</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">   75</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg) {</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> data = msg.<a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a> ? *msg.<a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">data_value</a> : <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">SanitizeData</a>(data);</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_message_handler_callback&quot;</span>, {this-&gt;id, msg.<a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a>, msg.<a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">sender</a>, msg.<a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">receiver</a>, data})) {</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>            T::MessageHandler(msg);</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        }</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    }</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">   85</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a>&amp; evt) {</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> data = evt.<a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a> ? *evt.<a class=\"code hl_variable\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">data_value</a> : <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">SanitizeData</a>(data);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">Script::CallFunction</a>(<span class=\"stringliteral\">&quot;__impl_entity_event_handler_callback&quot;</span>, {this-&gt;id, evt.<a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, evt.<a class=\"code hl_variable\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">subtype</a>, evt.<a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">poster</a>, data})) {</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>            T::EventHandler(evt);</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        }</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">   95</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">GetType</a>() {</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    }</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">   99</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">type</a>;</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>};</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>}</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_SCRIPT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html\">tram::Scriptable</a></div><div class=\"ttdoc\">Provides script language subclassing.</div><div class=\"ttdef\"><b>Definition:</b> script.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a119e711f82fe681c38b372634754bfe2\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">tram::Scriptable::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdef\"><b>Definition:</b> script.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a155369bc0f7a32617d2b9addb29daea7\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">tram::Scriptable::Scriptable</a></div><div class=\"ttdeci\">Scriptable(const SharedEntityData &amp;shared_data, const ValueArray &amp;field_array, name_t type)</div><div class=\"ttdef\"><b>Definition:</b> script.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a1e3c2da150ec8c8b7b075867cc6165b1\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">tram::Scriptable::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdef\"><b>Definition:</b> script.h:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a2ece532aab87d1570b1af751ffaf0f16\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">tram::Scriptable::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;evt)</div><div class=\"ttdef\"><b>Definition:</b> script.h:85</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a382a7e9d207bb65e475aa0012f9a2ac6\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">tram::Scriptable::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> script.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a4f92e3739872ff0938669d2d493f932d\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">tram::Scriptable::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> script.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_a51e08621ef581d5991528c9b8e5b0134\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">tram::Scriptable::SanitizeData</a></div><div class=\"ttdeci\">void SanitizeData(Value &amp;data)</div><div class=\"ttdef\"><b>Definition:</b> script.h:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_aa5c6c82c64f014b7a9068899f7282c68\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">tram::Scriptable::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdef\"><b>Definition:</b> script.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_aad1310e7fddbaee776682f678d745208\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">tram::Scriptable::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdef\"><b>Definition:</b> script.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_abfdd163bed725d0adf7a42efcba0d200\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">tram::Scriptable::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> script.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_ac46dc1ccdef6f82c56563b4b498d07bf\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">tram::Scriptable::~Scriptable</a></div><div class=\"ttdeci\">~Scriptable()</div><div class=\"ttdef\"><b>Definition:</b> script.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_scriptable_html_ae2b71cc843f216e53f0eeb2a4ebed28e\"><div class=\"ttname\"><a href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">tram::Scriptable::type</a></div><div class=\"ttdeci\">name_t type</div><div class=\"ttdef\"><b>Definition:</b> script.h:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5730c454f7a08e4ad926fa0438e0ca02\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">tram::Value::IsBool</a></div><div class=\"ttdeci\">bool IsBool() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_abcedb8e96c6af96db3dacb1b5859cf61\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">tram::Value::IsInt</a></div><div class=\"ttdeci\">bool IsInt() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:129</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_adf7c16903c484a39086cc193fa4d3f1e\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">tram::Value::IsFloat</a></div><div class=\"ttdeci\">bool IsFloat() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:130</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_aec15d455c732150f97eb47662f23fedf\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">tram::Value::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:174</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aframework_2script_8h_html\"><div class=\"ttname\"><a href=\"framework_2script_8h.html\">script.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_language_html_a33a74954652fedfbc85aab8cdd4c99f3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language::Load</a></div><div class=\"ttdeci\">void Load(const char *filename)</div><div class=\"ttdoc\">Loads a language file.</div><div class=\"ttdef\"><b>Definition:</b> language.cpp:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_af8e8489ae939b80cca8c7b220c230447\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a></div><div class=\"ttdeci\">value_t CallFunction(name_t name, std::vector&lt; Value &gt; parameters)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_scriptable_type_html_a1920e75c5a3e8de81df686d8f4073d04\"><div class=\"ttname\"><a href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType::Register</a></div><div class=\"ttdeci\">void Register(name_t base_type, Entity *(*constr_func)(name_t new_type, const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *))</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:39</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_scriptable_type_html_a2be0d23b1b7952145abea19ad2bf6c73\"><div class=\"ttname\"><a href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">tram::ScriptableType::Yeet</a></div><div class=\"ttdeci\">void Yeet(Entity *yeetable)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:51</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_scriptable_type_html_a69a13c0e50a7af34965201fdee75210b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">tram::ScriptableType::Make</a></div><div class=\"ttdeci\">Entity * Make(name_t base_type, name_t new_type, const SharedEntityData &amp;data, const ValueArray &amp;array)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram::TYPE_NAME</a></div><div class=\"ttdeci\">@ TYPE_NAME</div><div class=\"ttdef\"><b>Definition:</b> type.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a26cc77ee3a08567434f0b475a148007a\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">tram::Event::type</a></div><div class=\"ttdeci\">event_t type</div><div class=\"ttdoc\">Type of the event.</div><div class=\"ttdef\"><b>Definition:</b> event.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a877f4911d3811c501fdb4841aae78d10\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">tram::Event::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdoc\">Pointer to arbitrary data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:63</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a92418dc8036094cf309758831c14deed\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">tram::Event::poster</a></div><div class=\"ttdeci\">id_t poster</div><div class=\"ttdef\"><b>Definition:</b> event.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_ab499b6c8117176c1c2d782faf862412e\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">tram::Event::subtype</a></div><div class=\"ttdeci\">event_t subtype</div><div class=\"ttdoc\">Arbitrary event subtype.</div><div class=\"ttdef\"><b>Definition:</b> event.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_ac2c8fdcc08e45feb8b90b6899e69e319\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">tram::Event::data_value</a></div><div class=\"ttdeci\">value_t * data_value</div><div class=\"ttdoc\">Pointer to a value_t.</div><div class=\"ttdef\"><b>Definition:</b> event.h:65</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a0f822eec485aa46e9c93e9445526c8c1\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">tram::Message::type</a></div><div class=\"ttdeci\">message_t type</div><div class=\"ttdoc\">Type of the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a1d8a1a38aac71f1a0725b52ce898b7b1\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">tram::Message::receiver</a></div><div class=\"ttdeci\">id_t receiver</div><div class=\"ttdoc\">ID of the Entity that will receive the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a28e9498ff0a7bb62e84f2a6c2589fa94\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">tram::Message::sender</a></div><div class=\"ttdeci\">id_t sender</div><div class=\"ttdoc\">ID of the Entity that sent the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_af0bef4c3d63c5908c15440636071d25d\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">tram::Message::data_value</a></div><div class=\"ttdeci\">value_t * data_value</div><div class=\"ttdoc\">Pointer to a value_t.</div><div class=\"ttdef\"><b>Definition:</b> message.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_af2dcffd8b7a243a909af718abcac4925\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">tram::Message::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdoc\">Pointer to arbitrary data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a819c4f8b86a7fb91519937f2cf8e4449\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">tram::UID::is_valid</a></div><div class=\"ttdeci\">static bool is_valid(const UID &amp;)</div><div class=\"ttdoc\">Checks whether the name is valid.</div><div class=\"ttdef\"><b>Definition:</b> uid.cpp:121</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2sound_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/sound.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a9f451d1ee1334ce10a83ea2f79c93370\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\">tram::SOUND_LOOPING</a> = 1\n, <a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\">tram::SOUND_START_ON_LOAD</a> = 2\n }</td></tr>\n<tr class=\"separator:a9f451d1ee1334ce10a83ea2f79c93370\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32f771ce4ec7817ac72d4835f558c424\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">tram::FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\">tram::FIELD_SOUND</a>\n, <a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\">tram::FIELD_VOLUME</a>\n }</td></tr>\n<tr class=\"separator:a32f771ce4ec7817ac72d4835f558c424\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2sound_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/sound.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entities_2sound_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html\">tram::Sound</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper.  <a href=\"classtram_1_1_sound.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2sound_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/sound.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sound.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_2sound_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_AUDIO_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_AUDIO_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>AudioComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html\">   14</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">   16</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">Sound</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"comment\">// this should be a static method!!!</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"comment\">// and even better, the audiocomponent should have callbacks when the</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"comment\">// audio is finished playing, so that it can delete itself.. idk</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"comment\">// TODO: racenis fix pls</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">Sound</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> sound, <span class=\"keywordtype\">float</span> volume, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">   26</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">   32</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;AudioComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">audio</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">sound</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">   35</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">volume</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">   36</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">sound_flags</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>}</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_AUDIO_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></div><div class=\"ttdoc\">Audio data resource.</div><div class=\"ttdef\"><b>Definition:</b> sound.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a8210efc515c9fff335ca38e09fadd398\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">tram::Audio::Sound::Sound</a></div><div class=\"ttdeci\">Sound(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> sound.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a25c818d18a10010f342eaae99c083826\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">tram::Resource::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a06e516eef6120b6ccad7f04189b15dfb\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">tram::Sound::sound</a></div><div class=\"ttdeci\">name_t sound</div><div class=\"ttdef\"><b>Definition:</b> sound.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a08126edbad4f337264ff1206e96ef145\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">tram::Sound::volume</a></div><div class=\"ttdeci\">float volume</div><div class=\"ttdef\"><b>Definition:</b> sound.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a2f9189b04fcabb7aca986bf123e44c37\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">tram::Sound::Sound</a></div><div class=\"ttdeci\">Sound(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a3c17af183ae0f42e2b59f221281a9494\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">tram::Sound::sound_flags</a></div><div class=\"ttdeci\">int sound_flags</div><div class=\"ttdef\"><b>Definition:</b> sound.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a41a7fbea5ee99ed28d7d586de0b8f794\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">tram::Sound::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:123</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a6070314c5146a08863b061aeafede2b2\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Sound::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a859500a040dbfa4ac1e303fc2f9b3723\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">tram::Sound::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_a934d998958463921ee96f604e7934a1b\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">tram::Sound::audio</a></div><div class=\"ttdeci\">Component&lt; AudioComponent &gt; audio</div><div class=\"ttdef\"><b>Definition:</b> sound.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_aa8a9115da334eec12b8b837d9d47b689\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">tram::Sound::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_ab40d5d4f1ca14bcd32a252326f333bfa\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">tram::Sound::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:94</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_sound_html_afaf38811530319b1021f29e07f1b02c9\"><div class=\"ttname\"><a href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">tram::Sound::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:127</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_scriptable_type_html_a1920e75c5a3e8de81df686d8f4073d04\"><div class=\"ttname\"><a href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType::Register</a></div><div class=\"ttdeci\">void Register(name_t base_type, Entity *(*constr_func)(name_t new_type, const SharedEntityData &amp;, const ValueArray &amp;), void(*destr_func)(Entity *))</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:39</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2trigger_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/trigger.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2trigger_8h_source.html\">entities/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a7df27030d05a9ea15250c9c9811a6f80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\">tram::TRIGGER_DISABLED</a> = 1\n }</td></tr>\n<tr class=\"separator:a7df27030d05a9ea15250c9c9811a6f80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7146bfc7fadecfa5f4443e416a5a356\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">tram::FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\">tram::FIELD_COLLISION_MASK</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram::FIELD_MODEL</a>\n }</td></tr>\n<tr class=\"separator:af7146bfc7fadecfa5f4443e416a5a356\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2trigger_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/trigger.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entities_2trigger_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">tram::Trigger</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper.  <a href=\"classtram_1_1_trigger.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_2trigger_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/trigger.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">trigger.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_2trigger_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_TRIGGER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_TRIGGER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>TriggerComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_trigger.html\">Trigger</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">Trigger</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">Activate</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">   26</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">IsDrawTrigger</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">SetDrawTrigger</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">   30</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">   31</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;TriggerComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">triggercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">SetupModel</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">model</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">   35</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">trigger_flags</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">   36</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">collision_mask</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>}</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_TRIGGER_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html\">tram::Trigger</a></div><div class=\"ttdoc\">TriggerComponent wrapper.</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a2537a228019f8807f75f7169238614e4\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">tram::Trigger::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a695e8a121f4c3e42dbe4afcd1adecbe2\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">tram::Trigger::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a6d880e5d98a9a6210c79bf19d280219c\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">tram::Trigger::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a6eafc910dc841bea5073d9cd27a14f77\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">tram::Trigger::IsDrawTrigger</a></div><div class=\"ttdeci\">static bool IsDrawTrigger()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a6fba995382f75a47579141e409b6c4c2\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">tram::Trigger::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:118</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a72b18d259352340995c217999106916d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">tram::Trigger::triggercomponent</a></div><div class=\"ttdeci\">Component&lt; TriggerComponent &gt; triggercomponent</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a888c3a8eafbed2f160ada1af651de268\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">tram::Trigger::SetupModel</a></div><div class=\"ttdeci\">void SetupModel()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:131</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a8c2c332e744a2e780974d4638d388c6e\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">tram::Trigger::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a9646278b81b27211890f5895400d216d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">tram::Trigger::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_a99650ea152bb5eb058cdb49d19bc4ecc\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">tram::Trigger::Activate</a></div><div class=\"ttdeci\">void Activate()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:112</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_aa0bd3f37d64f909978372c5323778438\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">tram::Trigger::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_aa5b794eeecfb4a50395bb0013a5a0d2f\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">tram::Trigger::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_ab6e57dd6a789d4f62c5a85b2b6974040\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">tram::Trigger::trigger_flags</a></div><div class=\"ttdeci\">uint32_t trigger_flags</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_ac3db6f95f9583f10e1bbe88f0915e389\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">tram::Trigger::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_ac9ce430e5009ab03a6065d4ec1520816\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">tram::Trigger::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_acd2708416416c4ecefaaf3d58022fe68\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">tram::Trigger::collision_mask</a></div><div class=\"ttdeci\">uint32_t collision_mask</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_ad3b87b8e7ae11e8813593402ff1ae12c\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">tram::Trigger::Trigger</a></div><div class=\"ttdeci\">Trigger(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_html_ae6703ba2939bf5799cec0c87eb677038\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">tram::Trigger::SetDrawTrigger</a></div><div class=\"ttdeci\">static void SetDrawTrigger(bool)</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:146</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/entities.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#define-members\">Macros</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entities.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">extensions/kitchensink/entities.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"soundtable_8h_source.html\">extensions/kitchensink/soundtable.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">tram::Ext::Kitchensink::EntityChildren</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a4366553d515649fefe284775ebaed16e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"entities_8cpp.html#a4366553d515649fefe284775ebaed16e\">PlaySound</a>(TYPE)&#160;&#160;&#160;if (sound) SoundTable::Find(sound)-&gt;PlaySound(TYPE, origin, 1.0f);</td></tr>\n<tr class=\"separator:a4366553d515649fefe284775ebaed16e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ad924f50692439454362f23d98fb1ffe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\">tram::Ext::Kitchensink::BUTTON_FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\">tram::Ext::Kitchensink::BUTTON_FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\">tram::Ext::Kitchensink::BUTTON_FIELD_LIGHTMAP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\">tram::Ext::Kitchensink::BUTTON_FIELD_ORIGIN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\">tram::Ext::Kitchensink::BUTTON_FIELD_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\">tram::Ext::Kitchensink::BUTTON_FIELD_SPEED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\">tram::Ext::Kitchensink::BUTTON_FIELD_PAUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\">tram::Ext::Kitchensink::BUTTON_FIELD_DISTANCE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\">tram::Ext::Kitchensink::BUTTON_FIELD_SOUND</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\">tram::Ext::Kitchensink::BUTTON_FIELD_PARENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\">tram::Ext::Kitchensink::BUTTON_FIELD_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ad924f50692439454362f23d98fb1ffe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac280e36a407bbb9e04103c5b98a6d6d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\">tram::Ext::Kitchensink::BUTTON_FLAG_ROTARY</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\">tram::Ext::Kitchensink::BUTTON_FLAG_MOMENTARY</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\">tram::Ext::Kitchensink::BUTTON_FLAG_TOGGLE</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\">tram::Ext::Kitchensink::BUTTON_FLAG_LOCKED</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\">tram::Ext::Kitchensink::BUTTON_FLAG_PUSHED</a> = 16\n<br />\n }</td></tr>\n<tr class=\"separator:ac280e36a407bbb9e04103c5b98a6d6d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d1eaa08844d3f7ecb0fafaa53d7eea0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\">tram::Ext::Kitchensink::BUTTON_STATE_NADIR_WAITING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\">tram::Ext::Kitchensink::BUTTON_STATE_NADIR_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\">tram::Ext::Kitchensink::BUTTON_STATE_RISING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\">tram::Ext::Kitchensink::BUTTON_STATE_ZENITH_WAITING</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\">tram::Ext::Kitchensink::BUTTON_STATE_ZENITH_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\">tram::Ext::Kitchensink::BUTTON_STATE_LOWERING</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a0d1eaa08844d3f7ecb0fafaa53d7eea0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a16caf89d1fcf378195a2f0fa188b0156\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156\">tram::Ext::Kitchensink::AddChild</a> (name_t parent, id_t child)</td></tr>\n<tr class=\"separator:a16caf89d1fcf378195a2f0fa188b0156\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68dcf197af43441da209e8296de00111\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111\">tram::Ext::Kitchensink::UpdateHierarchy</a> (id_t parent_id)</td></tr>\n<tr class=\"separator:a68dcf197af43441da209e8296de00111\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a88dc3b5c5e10e0a3f59566278143dd3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; EntityChildren &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e\">tram::Ext::Kitchensink::hierarchy_map</a> (&quot;hierarchy_map&quot;, 200)</td></tr>\n<tr class=\"separator:a88dc3b5c5e10e0a3f59566278143dd3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"a4366553d515649fefe284775ebaed16e\" name=\"a4366553d515649fefe284775ebaed16e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4366553d515649fefe284775ebaed16e\">&#9670;&nbsp;</a></span>PlaySound</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define PlaySound</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">TYPE</td><td>)</td>\n          <td>&#160;&#160;&#160;if (sound) SoundTable::Find(sound)-&gt;PlaySound(TYPE, origin, 1.0f);</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/entities.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entities.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entities_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially a func_door.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entities_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/entities.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">entities.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entities_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keyword\">class </span>PhysicsComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">Button</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">Button</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">   26</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">   27</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">   29</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">SwitchState</a>(<span class=\"keywordtype\">int</span>);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">   31</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_event_listener.html\">EventListener</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tick</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">   33</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">flags</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">model</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">   35</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">lightmap</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">origin</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">   37</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">direction</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">   38</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">speed</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">   39</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">pause</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">   40</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">   41</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">sound</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">   42</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">   44</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">start_pos</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">   45</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">start_rot</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">   47</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">progress</a>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">   48</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">timer</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">   49</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">state</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">   50</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">last_activate</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>};</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">   53</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">Breakable</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">   55</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">Breakable</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">   58</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">   59</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">   61</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">   62</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">   64</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">model</a>;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">   65</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>};</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">   68</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">Water</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">   70</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">Water</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">   71</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">   72</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">   73</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">   74</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">   76</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">   77</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">   79</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">model</a>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">   80</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>};</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">   83</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">Train</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">   85</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">Train</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">   86</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">   87</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">   88</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">   89</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">   91</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">   92</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">   94</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">model</a>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">   95</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>};</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">   98</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">Pickup</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">  100</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">Pickup</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">  101</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">  102</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">  103</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">  104</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">  106</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">  107</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">  109</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">model</a>;</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">  110</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>};</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">  113</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">DebugText</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">  115</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">DebugText</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">  116</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">  117</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">  118</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">  119</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">  121</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">  122</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">  124</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">model</a>;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">  125</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>};</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">  128</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">DebugShape</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">  130</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">DebugShape</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">  131</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">  132</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">  133</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">  134</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">  136</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">  137</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    </div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">  139</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">model</a>;</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">  140</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>};</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">  143</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">TriggerAutosave</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">  145</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">TriggerAutosave</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">  146</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">  147</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">  148</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">  149</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">  151</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">  152</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    </div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">  154</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">model</a>;</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">  155</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>};</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">  158</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">TriggerHurt</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">  160</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">TriggerHurt</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">  161</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">  162</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">  163</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">  164</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">  166</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">  167</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    </div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">  169</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">model</a>;</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">  170</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>};</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">  173</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">TriggerOnce</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">  175</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">TriggerOnce</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">  176</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">  177</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">  178</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">  179</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">  181</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">  182</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    </div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">  184</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">model</a>;</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">  185</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>};</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">  188</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">TriggerMultiple</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">  190</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">TriggerMultiple</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">  191</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">  192</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">  193</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">  194</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">  196</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">  197</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    </div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">  199</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">model</a>;</div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">  200</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>};</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">  203</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">TriggerPush</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">  205</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">TriggerPush</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">  206</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">  207</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">  208</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">  209</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">  211</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">  212</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    </div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">  214</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">model</a>;</div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">  215</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>};</div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">  218</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">TriggerRemove</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">  220</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">TriggerRemove</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">  221</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">  222</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">  223</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">  224</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">  226</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">  227</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    </div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">  229</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">model</a>;</div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">  230</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>};</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">  233</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">TriggerTeleport</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">  235</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">TriggerTeleport</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">  236</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">  237</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">  238</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">  239</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">  241</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">  242</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    </div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">  244</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">model</a>;</div>\n<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">  245</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>};</div>\n<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">  248</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">  250</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">TriggerPlayerMovement</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">  251</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">UpdateParameters</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">  252</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">Load</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">Unload</a>(); <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">  253</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">  254</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">  256</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">  257</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    </div>\n<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">  259</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">model</a>;</div>\n<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">  260</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">collmodel</a>;</div>\n<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>};</div>\n<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>}</div>\n<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></div><div class=\"ttdoc\">Smart wrapper class for Event listeners.</div><div class=\"ttdef\"><b>Definition:</b> event.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">tram::Ext::Kitchensink::Breakable</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a1de507d7dea92475ef9f2437f1e58e6f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">tram::Ext::Kitchensink::Breakable::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a391835e621041d6ff5d42830deb4551d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">tram::Ext::Kitchensink::Breakable::Breakable</a></div><div class=\"ttdeci\">Breakable(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a430889350ca4370924e484230119c29e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">tram::Ext::Kitchensink::Breakable::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a74d7eb13aeb7ac3a513fef56b0fe0bf4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">tram::Ext::Kitchensink::Breakable::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a9cd3710f61b4079ce2f48d9b21a8ff80\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">tram::Ext::Kitchensink::Breakable::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_a9dd4b432726ee750a3c86fff4e6886ee\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">tram::Ext::Kitchensink::Breakable::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_aa00b9673f6363852e48c7522e202fd30\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">tram::Ext::Kitchensink::Breakable::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_aae8c4d28e4f057e28f392e96a498890c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">tram::Ext::Kitchensink::Breakable::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_ac912d2b557ffcb5d2883ea43646b5b17\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">tram::Ext::Kitchensink::Breakable::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_aee0cec5c3827047160688f550eb3a9f4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">tram::Ext::Kitchensink::Breakable::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_af2fc102e7da4b0707df89f56909a1c20\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">tram::Ext::Kitchensink::Breakable::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_breakable_html_af79ddccccc2a9a8fabb87a5634e91c3d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">tram::Ext::Kitchensink::Breakable::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">tram::Ext::Kitchensink::Button</a></div><div class=\"ttdoc\">Essentially a func_door.</div><div class=\"ttdef\"><b>Definition:</b> entities.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a02890ff2bdddc5eda0fb4b325318ae35\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">tram::Ext::Kitchensink::Button::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a06388461c6b4eb74595e5231b97f1534\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">tram::Ext::Kitchensink::Button::timer</a></div><div class=\"ttdeci\">float timer</div><div class=\"ttdef\"><b>Definition:</b> entities.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a07df9007e2a4fa2938fe69f78e2db2c0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">tram::Ext::Kitchensink::Button::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> entities.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a12a4f0a94979b7b9c112fe3d43dfefcd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">tram::Ext::Kitchensink::Button::start_pos</a></div><div class=\"ttdeci\">vec3 start_pos</div><div class=\"ttdef\"><b>Definition:</b> entities.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a1cdc713f455d7e0df9815ce1c75b67b9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">tram::Ext::Kitchensink::Button::Button</a></div><div class=\"ttdeci\">Button(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a1eda56e61bb29500549213c1d194a550\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">tram::Ext::Kitchensink::Button::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a230b3c266b55a9107188d5ceb44d2aab\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">tram::Ext::Kitchensink::Button::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> entities.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a29563d3cf838e8bd7f981b155a61fb72\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">tram::Ext::Kitchensink::Button::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:186</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a328b1b451e9dabf23d90ea283bfb73bc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">tram::Ext::Kitchensink::Button::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdoc\">Allows entities to receive events.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:229</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a4dd2f1f76ca0846de1455e4ad4d1cf8d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">tram::Ext::Kitchensink::Button::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a5fb8a5285093beccc894039c5102aab4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">tram::Ext::Kitchensink::Button::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:149</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a7ce13fa0441d27759aab3911ec2940ec\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">tram::Ext::Kitchensink::Button::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:111</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a7ffa11cb9e77ee441e75c12c776daf2d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">tram::Ext::Kitchensink::Button::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:304</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a86d016cc6943098f57b0b48ae9b39b8e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">tram::Ext::Kitchensink::Button::pause</a></div><div class=\"ttdeci\">float pause</div><div class=\"ttdef\"><b>Definition:</b> entities.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a8eac7f52eb37a936c9378307412c6c08\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">tram::Ext::Kitchensink::Button::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:214</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a90673adbb238aace522e9ab8be1218d6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">tram::Ext::Kitchensink::Button::progress</a></div><div class=\"ttdeci\">float progress</div><div class=\"ttdef\"><b>Definition:</b> entities.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a91ceb993b3cbf17626bccd4899157514\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">tram::Ext::Kitchensink::Button::state</a></div><div class=\"ttdeci\">int state</div><div class=\"ttdef\"><b>Definition:</b> entities.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a96280d02e43933a1164d053405b673b1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">tram::Ext::Kitchensink::Button::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> entities.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_a9769adf64aaa9639b7855aeb3919ee6f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">tram::Ext::Kitchensink::Button::sound</a></div><div class=\"ttdeci\">name_t sound</div><div class=\"ttdef\"><b>Definition:</b> entities.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_aaabf5a2f388426badc47c45deff2a92c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">tram::Ext::Kitchensink::Button::lightmap</a></div><div class=\"ttdeci\">name_t lightmap</div><div class=\"ttdef\"><b>Definition:</b> entities.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_aae16221eb106915c8e3e509709f52952\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">tram::Ext::Kitchensink::Button::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:191</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ab4cc583a65fe7ce2582924ca93283361\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">tram::Ext::Kitchensink::Button::SwitchState</a></div><div class=\"ttdeci\">void SwitchState(int)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_abd3ab3f24e9881fafefd2f8f47e1e902\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">tram::Ext::Kitchensink::Button::origin</a></div><div class=\"ttdeci\">vec3 origin</div><div class=\"ttdef\"><b>Definition:</b> entities.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ac06e45332876905bc76befbaf387b20f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">tram::Ext::Kitchensink::Button::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:223</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ac41e197036c5ef823dbcd7f6bb5ae240\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tram::Ext::Kitchensink::Button::tick</a></div><div class=\"ttdeci\">EventListener tick</div><div class=\"ttdef\"><b>Definition:</b> entities.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ac47c81071b86e3b5876d1baa0c263080\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">tram::Ext::Kitchensink::Button::speed</a></div><div class=\"ttdeci\">float speed</div><div class=\"ttdef\"><b>Definition:</b> entities.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ac4a1ce474fcd9da9bf9fc66dd27281ed\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">tram::Ext::Kitchensink::Button::last_activate</a></div><div class=\"ttdeci\">int last_activate</div><div class=\"ttdef\"><b>Definition:</b> entities.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ad10e29486dbc5f775f99ad93f94b265c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">tram::Ext::Kitchensink::Button::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> entities.cpp:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ad9c047256c4c960006fcada8a7d03ede\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">tram::Ext::Kitchensink::Button::parent</a></div><div class=\"ttdeci\">name_t parent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_button_html_ae091221f1e75d235db2a4ab7ba30b83b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">tram::Ext::Kitchensink::Button::start_rot</a></div><div class=\"ttdeci\">quat start_rot</div><div class=\"ttdef\"><b>Definition:</b> entities.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">tram::Ext::Kitchensink::DebugShape</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a0ab7b3efe24ac2f24fc2e94bbcc779bc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">tram::Ext::Kitchensink::DebugShape::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:139</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a1ecd14f21602db88a06c2b160cfa9174\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">tram::Ext::Kitchensink::DebugShape::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a20bdf86907cd7ccadbffa94d53dfac0d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">tram::Ext::Kitchensink::DebugShape::DebugShape</a></div><div class=\"ttdeci\">DebugShape(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a2e0f87444db5fef3bd831bea39775302\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">tram::Ext::Kitchensink::DebugShape::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a3db61b3a8693e5b27a5be2f811d2dff0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">tram::Ext::Kitchensink::DebugShape::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a4b6d2a2cc1fa252481c5418e50d26c74\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">tram::Ext::Kitchensink::DebugShape::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:137</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_a9ad7471be8c0660f00e4f383673cd811\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">tram::Ext::Kitchensink::DebugShape::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:140</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_aa0ac5e2d0194f5d8a000240e5fdb81aa\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">tram::Ext::Kitchensink::DebugShape::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_aa0fedc7fe85850fe25383fe839b67738\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">tram::Ext::Kitchensink::DebugShape::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_aa1a0877cf652538dc29c81a2b7be004c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">tram::Ext::Kitchensink::DebugShape::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:136</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_aca488fc2cc2ee6132747b7f9ee2aa5af\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">tram::Ext::Kitchensink::DebugShape::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_shape_html_affdabd90a946e7aae9301f7d47d87fe1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">tram::Ext::Kitchensink::DebugShape::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">tram::Ext::Kitchensink::DebugText</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:113</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a24ac74bcb44bef87d855544b8040e83d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">tram::Ext::Kitchensink::DebugText::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:122</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a2cfbebb081bb04c2c636f90378f62499\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">tram::Ext::Kitchensink::DebugText::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a33ea59023d2ab8334d03f2eca1920472\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">tram::Ext::Kitchensink::DebugText::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a8358248f0c5e4f2f1a8d6c999454f483\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">tram::Ext::Kitchensink::DebugText::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a9246c8960e6ae16f5c13bcb030d2608a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">tram::Ext::Kitchensink::DebugText::DebugText</a></div><div class=\"ttdeci\">DebugText(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_a9d06ca5c12e96a67c3f5560ad8832215\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">tram::Ext::Kitchensink::DebugText::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:125</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_ab3a96a3bea79e5de1e4db4b958d82450\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">tram::Ext::Kitchensink::DebugText::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_ac289a25bd2a5fbdd29c0d3572a99db27\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">tram::Ext::Kitchensink::DebugText::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_ac335b5e268c6bde3d3d7dbbd7c9358a5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">tram::Ext::Kitchensink::DebugText::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_ade7918dd8156ee4252c58eece2cfdb98\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">tram::Ext::Kitchensink::DebugText::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_aea53d3e3b4c26becbb0f358cf8e13dcd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">tram::Ext::Kitchensink::DebugText::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_debug_text_html_aed52a8cb6a7d734e0da47fed6b687de3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">tram::Ext::Kitchensink::DebugText::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">tram::Ext::Kitchensink::Pickup</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a0ca93c8adc4f2ef76393b972dc9decaf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">tram::Ext::Kitchensink::Pickup::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:110</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a0e0f4eb79e699f1e7c1ec86bd859e6b9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">tram::Ext::Kitchensink::Pickup::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a13c6b811f951816a92465949a34c3932\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">tram::Ext::Kitchensink::Pickup::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a2881141c1ee4783d0b719b1dd28a68e6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">tram::Ext::Kitchensink::Pickup::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a329479016aa8bba237d77d9b81d708bd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">tram::Ext::Kitchensink::Pickup::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:106</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a649fb346d1ab51b8cfcc2d21a8e87d37\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">tram::Ext::Kitchensink::Pickup::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a7b7238d413eddcfdda31aeff7e55afb0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">tram::Ext::Kitchensink::Pickup::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_a881a5ba8049060a6ac23f30404c0d8e2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">tram::Ext::Kitchensink::Pickup::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_aa14c29d40df5968c605f63bdd03cd3d0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">tram::Ext::Kitchensink::Pickup::Pickup</a></div><div class=\"ttdeci\">Pickup(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_aa3a8dd7dd03c77cc765e2f8e279f7802\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">tram::Ext::Kitchensink::Pickup::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_ac077e8cc4096fec6612b47ff60054279\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">tram::Ext::Kitchensink::Pickup::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:109</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_pickup_html_afc230744f36cb7dc31dcd30ce8d97881\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">tram::Ext::Kitchensink::Pickup::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">tram::Ext::Kitchensink::Train</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_a0ffb909fcfd24bf1eb7e1abd23af9e88\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">tram::Ext::Kitchensink::Train::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:95</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_a101e803dc193a3588f046f7e33ec2167\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">tram::Ext::Kitchensink::Train::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_a46ab45c6f44dbf65bc6dcdfff52f9798\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">tram::Ext::Kitchensink::Train::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_a8d6109469356d31dfe601d2324204a77\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">tram::Ext::Kitchensink::Train::Train</a></div><div class=\"ttdeci\">Train(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_a993b1fba83b57ed7da2f068a63e12e9a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">tram::Ext::Kitchensink::Train::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_aa4eb604d75a4b015c214a73385b8583a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">tram::Ext::Kitchensink::Train::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:94</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_aae6220e39a9664f2279dc889179b21b9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">tram::Ext::Kitchensink::Train::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_ad2659a3719dc8658bb53300fc312cd76\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">tram::Ext::Kitchensink::Train::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_ad72e7fe2faf8817a399bf94ada70c562\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">tram::Ext::Kitchensink::Train::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_ae2325d13d9f15bca5e4cac7111f95bab\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">tram::Ext::Kitchensink::Train::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_ae4baca0092d7c385ae72abe24f017e52\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">tram::Ext::Kitchensink::Train::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_train_html_afa1b79f17c17ead03058dd28ae1cc3ef\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">tram::Ext::Kitchensink::Train::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">tram::Ext::Kitchensink::TriggerAutosave</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:143</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a0d72864744e1e06e95d53d7dfad8e775\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">tram::Ext::Kitchensink::TriggerAutosave::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:155</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a1ddc0ce845dfe63f5c7fa089a5309925\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">tram::Ext::Kitchensink::TriggerAutosave::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a2f6cd3e9f01819693f25f76ea1deffe1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">tram::Ext::Kitchensink::TriggerAutosave::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:151</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a42d3c79e2604d3e8f7b66c13dbfa47cf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">tram::Ext::Kitchensink::TriggerAutosave::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a588c6567a94f6b471ae8528053ca244a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">tram::Ext::Kitchensink::TriggerAutosave::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a641f20fdc9e0a3f0887be88f0198580c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">tram::Ext::Kitchensink::TriggerAutosave::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:152</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_a7b9229167dc5e4e523673d81b715950f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">tram::Ext::Kitchensink::TriggerAutosave::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_ac6a7eaffb4459cf10007606b0f9c8f8b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">tram::Ext::Kitchensink::TriggerAutosave::TriggerAutosave</a></div><div class=\"ttdeci\">TriggerAutosave(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_ad054dbd579c90c448a21a741a4e14b43\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">tram::Ext::Kitchensink::TriggerAutosave::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_ae330b7417b6da030f0932f51d9282902\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">tram::Ext::Kitchensink::TriggerAutosave::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:154</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_aea36c18cd09a2fc62b2cd8713744c903\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">tram::Ext::Kitchensink::TriggerAutosave::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave_html_aeb7b0630b5ed9fa40444e378fa5b5681\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">tram::Ext::Kitchensink::TriggerAutosave::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">tram::Ext::Kitchensink::TriggerHurt</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:158</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a1695bf4215ec18944897194e0abff99c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">tram::Ext::Kitchensink::TriggerHurt::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:169</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a1fcf1fd373b0735b96983688eaa52961\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">tram::Ext::Kitchensink::TriggerHurt::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:167</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a4b08beab647a0ea56a113ac035d4061a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">tram::Ext::Kitchensink::TriggerHurt::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a61e6183e35fdce3b974628d18c0f8ca5\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">tram::Ext::Kitchensink::TriggerHurt::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:166</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a6c720eeebbc10b399c75cbf7225f8f7b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">tram::Ext::Kitchensink::TriggerHurt::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a6c79786157db20e80cc05ac169212de7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">tram::Ext::Kitchensink::TriggerHurt::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:170</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_a81726364a17268ea23d810a35ce4d3b2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">tram::Ext::Kitchensink::TriggerHurt::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_ac28bb3aede402f40174b4348a10e1cf9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">tram::Ext::Kitchensink::TriggerHurt::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_ad355370a396ef40aa776d75b1f5c8792\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">tram::Ext::Kitchensink::TriggerHurt::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_ad528676eb4cc1bee09c8d61b18a60e49\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">tram::Ext::Kitchensink::TriggerHurt::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_ae6b5d706f8a9d56a245ac555ec95a44d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">tram::Ext::Kitchensink::TriggerHurt::TriggerHurt</a></div><div class=\"ttdeci\">TriggerHurt(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt_html_af6eb6f5d84da2055d5f4d361c951646f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">tram::Ext::Kitchensink::TriggerHurt::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">tram::Ext::Kitchensink::TriggerMultiple</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:188</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a09b7e8d6f7c06354087c7bbed605a0dc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">tram::Ext::Kitchensink::TriggerMultiple::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a0acfdc56498029e59f4eaa3f389b8967\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">tram::Ext::Kitchensink::TriggerMultiple::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a0bf6e059ed5c51f77ec170c98d88038d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">tram::Ext::Kitchensink::TriggerMultiple::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a4602154e8a02a03eae992f400079dfb4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">tram::Ext::Kitchensink::TriggerMultiple::TriggerMultiple</a></div><div class=\"ttdeci\">TriggerMultiple(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a46495b4ffb89238697269f7dde7ba3f8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">tram::Ext::Kitchensink::TriggerMultiple::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:200</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a4c73c411f8c7f31cb6a9db8863f0d2e4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">tram::Ext::Kitchensink::TriggerMultiple::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:199</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a6d39ed9a2cbfab6cd334b9af39d99bc2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">tram::Ext::Kitchensink::TriggerMultiple::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:196</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_a9df96abe2232f3566983f29a87e62254\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">tram::Ext::Kitchensink::TriggerMultiple::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_aa87df5a1dc89880323ba8e5c306de546\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">tram::Ext::Kitchensink::TriggerMultiple::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_add39da54898ba26a33986bd99872abaa\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">tram::Ext::Kitchensink::TriggerMultiple::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:197</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_af34ee313ba0e8e9fa03ec43a45cd99de\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">tram::Ext::Kitchensink::TriggerMultiple::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple_html_afba3b0305dadaadb47d03e299d5feed0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">tram::Ext::Kitchensink::TriggerMultiple::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">tram::Ext::Kitchensink::TriggerOnce</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:173</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a0779152e5dfe962f7cea735d6da6c5c8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">tram::Ext::Kitchensink::TriggerOnce::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a1134b7b7a4a65ce7902004bb4dd75a50\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">tram::Ext::Kitchensink::TriggerOnce::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:182</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a18ef2e180b564569ebfb773ec83d9e45\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">tram::Ext::Kitchensink::TriggerOnce::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a218ca60c7aa10b956ce4db11d0411ac6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">tram::Ext::Kitchensink::TriggerOnce::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:181</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a25d11e16da07ac56161f2bc4b1ef7359\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">tram::Ext::Kitchensink::TriggerOnce::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a30104cdda5bc47e58da125d3bf574fc6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">tram::Ext::Kitchensink::TriggerOnce::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a4772ae9b7dc27bc1b58d876381a22a23\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">tram::Ext::Kitchensink::TriggerOnce::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a6aaf60e131f0300688ae31d33413e4e0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">tram::Ext::Kitchensink::TriggerOnce::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:185</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_a964426361804464f0916bfb2619691a7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">tram::Ext::Kitchensink::TriggerOnce::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:184</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_aa0cc2cfba975cf5a964444914ea15cc9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">tram::Ext::Kitchensink::TriggerOnce::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_accb4e63a197bbd0d350b72d58dc6a127\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">tram::Ext::Kitchensink::TriggerOnce::TriggerOnce</a></div><div class=\"ttdeci\">TriggerOnce(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_once_html_aea523f5b59a0d9495f264dfc46a11d77\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">tram::Ext::Kitchensink::TriggerOnce::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:248</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a22615e5cbc341c9b9b97fa83b64cf889\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">tram::Ext::Kitchensink::TriggerPlayerMovement::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a2f2b494dec320ccfe9a8c11dee242053\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">tram::Ext::Kitchensink::TriggerPlayerMovement::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a566d546dad8cbfe6758851ac38442a9a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">tram::Ext::Kitchensink::TriggerPlayerMovement::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a5bf7a2365438d0aff49a42ba6809de17\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">tram::Ext::Kitchensink::TriggerPlayerMovement::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:257</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a6bcb6e7ecadc6d10fc9cb87afab88539\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">tram::Ext::Kitchensink::TriggerPlayerMovement::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:260</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a8235ebd895fe382b080d2e0a70e1738f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">tram::Ext::Kitchensink::TriggerPlayerMovement::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_a944ce8f354e4ba224b3ba2257a80257b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">tram::Ext::Kitchensink::TriggerPlayerMovement::TriggerPlayerMovement</a></div><div class=\"ttdeci\">TriggerPlayerMovement(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_ac98c9d0daa251c124f7bb347138c6d86\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">tram::Ext::Kitchensink::TriggerPlayerMovement::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:256</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_ad550edd2a6389a2ce7ef3e840dd14e7a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">tram::Ext::Kitchensink::TriggerPlayerMovement::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_ae52d91988675dae168e7ccc18e36b737\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">tram::Ext::Kitchensink::TriggerPlayerMovement::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:259</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_afdf06caa8341620e6e60fcefcd953286\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">tram::Ext::Kitchensink::TriggerPlayerMovement::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement_html_aff679002a0af88434745c06eacb3eadd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">tram::Ext::Kitchensink::TriggerPlayerMovement::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">tram::Ext::Kitchensink::TriggerPush</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:203</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a09d780452b0c4c3affdad42d728ccb9f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">tram::Ext::Kitchensink::TriggerPush::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a0a01698a8de860ef2d97e6a0f57b7c25\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">tram::Ext::Kitchensink::TriggerPush::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a16e84722dd3f82b8d31241c7a61adba7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">tram::Ext::Kitchensink::TriggerPush::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a19f24315f51a42ac631cd6e9031f196a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">tram::Ext::Kitchensink::TriggerPush::TriggerPush</a></div><div class=\"ttdeci\">TriggerPush(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a2119ac49d5090511a7f49419025cc877\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">tram::Ext::Kitchensink::TriggerPush::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:214</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a3c59dbb31bfa17213ffd45b84c655a5c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">tram::Ext::Kitchensink::TriggerPush::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:215</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a40042ae95b62c4b861aed2b5688f151d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">tram::Ext::Kitchensink::TriggerPush::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a5311486ac974e5897071824f0d03ee6e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">tram::Ext::Kitchensink::TriggerPush::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_a5b9ef4de873d19b9f989c967c26904d8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">tram::Ext::Kitchensink::TriggerPush::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:211</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_aba68720ed7fe5a20f905404548cd71be\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">tram::Ext::Kitchensink::TriggerPush::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_abfe9a81308db168ea94212b43c2b2c59\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">tram::Ext::Kitchensink::TriggerPush::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_push_html_aee5d9dfe5e798739bb70eb16d2a9948e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">tram::Ext::Kitchensink::TriggerPush::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:212</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">tram::Ext::Kitchensink::TriggerRemove</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:218</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a127f6410a4f40845b89d2b917154d09d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">tram::Ext::Kitchensink::TriggerRemove::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:227</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a17be889e28adc003ba638f2b8ee1a0cb\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">tram::Ext::Kitchensink::TriggerRemove::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:229</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a32851695a736fb2e4419782991115f99\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">tram::Ext::Kitchensink::TriggerRemove::TriggerRemove</a></div><div class=\"ttdeci\">TriggerRemove(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a361107230fc5fd0c1193cf0dfcd3f9ef\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">tram::Ext::Kitchensink::TriggerRemove::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a452f9f9d0d4b8864d59bfa8d93c2e128\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">tram::Ext::Kitchensink::TriggerRemove::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_a97e548c324cbdb15b6f90dbfea4eb2fe\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">tram::Ext::Kitchensink::TriggerRemove::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:226</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_ab3aa0697b3e09b938d18c71253fefb90\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">tram::Ext::Kitchensink::TriggerRemove::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_ac318ecbabe95dcb0beedd361a048cbaa\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">tram::Ext::Kitchensink::TriggerRemove::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:230</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_ac802678eba14b6f7396fa242f3b389fa\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">tram::Ext::Kitchensink::TriggerRemove::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_acc0a673bdbc61686390ddc48f8e93ed6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">tram::Ext::Kitchensink::TriggerRemove::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_ad6d873ff183a86de8c1997f3c59f6416\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">tram::Ext::Kitchensink::TriggerRemove::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_remove_html_aea1ec1ba74f293b5043d00d7899fb734\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">tram::Ext::Kitchensink::TriggerRemove::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">tram::Ext::Kitchensink::TriggerTeleport</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:233</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a1ee314c75612530d797e07b5e2dff085\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">tram::Ext::Kitchensink::TriggerTeleport::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:241</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a2dc8dfbaa1e358714459a4854860aa8d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">tram::Ext::Kitchensink::TriggerTeleport::TriggerTeleport</a></div><div class=\"ttdeci\">TriggerTeleport(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a2ec405cef2fbc36f67215266939c4382\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">tram::Ext::Kitchensink::TriggerTeleport::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a3bbf1ab021f484e52d3c54f6c64cf2fd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">tram::Ext::Kitchensink::TriggerTeleport::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a413cebe7dae0b94c8445d9cc4692d88a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">tram::Ext::Kitchensink::TriggerTeleport::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:245</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_a6c178b1022efc43f197d8bebc4e1ba32\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">tram::Ext::Kitchensink::TriggerTeleport::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_aa1eabe6c002caa539efb57b79345520f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">tram::Ext::Kitchensink::TriggerTeleport::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:242</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_aa6638ecd68bb098631b31097e320839a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">tram::Ext::Kitchensink::TriggerTeleport::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_aa7de7abe61d44d1229d02632344a3117\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">tram::Ext::Kitchensink::TriggerTeleport::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:244</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_aa839f0ebcb29f3e79f4bd91aa5c67a5b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">tram::Ext::Kitchensink::TriggerTeleport::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_ac43c05116add4165f154679954941b1a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">tram::Ext::Kitchensink::TriggerTeleport::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport_html_ac617bac29cb094149c2904a13c2e0de1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">tram::Ext::Kitchensink::TriggerTeleport::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">tram::Ext::Kitchensink::Water</a></div><div class=\"ttdef\"><b>Definition:</b> entities.h:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a1d604782c7dd64c7d26a515b35e9defb\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">tram::Ext::Kitchensink::Water::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a2ae4115b327140de3532868a80f6738c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">tram::Ext::Kitchensink::Water::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a57defa0f79a1b97c9154ef7d3318963f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">tram::Ext::Kitchensink::Water::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> entities.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a61815d9fed63e4724d8704b8f7eb99e2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">tram::Ext::Kitchensink::Water::Water</a></div><div class=\"ttdeci\">Water(const SharedEntityData &amp;, const ValueArray &amp;)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a7814a30089783833b4f13ab9f009b4ea\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">tram::Ext::Kitchensink::Water::collmodel</a></div><div class=\"ttdeci\">name_t collmodel</div><div class=\"ttdef\"><b>Definition:</b> entities.h:80</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a81376f797590abe8a90b35ac999a0613\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">tram::Ext::Kitchensink::Water::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a82504fffe38ba4dbecd3ea108d6b23ef\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">tram::Ext::Kitchensink::Water::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_a91048dbb77098e96000955924add2157\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">tram::Ext::Kitchensink::Water::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_aa1ea56987cb0695dbb7747307895107a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">tram::Ext::Kitchensink::Water::Register</a></div><div class=\"ttdeci\">static void Register()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_abce68a2e7fe9394d10f26ab51fe14e21\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">tram::Ext::Kitchensink::Water::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> entities.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_acf40cdc632ca2113b4299ac9ce9387d4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">tram::Ext::Kitchensink::Water::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_water_html_ad17e120992eba3ccc7a4a17160a8bfa3\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">tram::Ext::Kitchensink::Water::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entity_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entity.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entity.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entity_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entity.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entity.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"signal_8h_source.html\">framework/signal.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entity_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html\">tram::Entity</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class.  <a href=\"classtram_1_1_entity.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters.  <a href=\"structtram_1_1_shared_entity_data.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a5f7e406660923fb9a2cc0a8628fa0c3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef Entity *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">tram::entity_make</a>) (const SharedEntityData &amp;, const ValueArray &amp;)</td></tr>\n<tr class=\"separator:a5f7e406660923fb9a2cc0a8628fa0c3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb6f2c041e69a847713e8d29f66dc58b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">tram::entity_clear</a>) (Entity *)</td></tr>\n<tr class=\"separator:acb6f2c041e69a847713e8d29f66dc58b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entity_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entity.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">entity.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entity_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_ENTITY_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_ENTITY_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"signal_8h.html\">framework/signal.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">class </span>WorldCell;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">class </span>Message;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">struct </span>SharedEntityData;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">struct </span>ValueArray;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">class </span>File;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">   20</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* (*entity_make)(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">   21</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>*);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html\">   23</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">   25</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">Load</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">   27</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">Unload</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">   29</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">Serialize</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">Entity</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">~Entity</a>();</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">   37</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">GetName</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">   38</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">GetID</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">id</a>; }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">   39</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">GetCell</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a>; }</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">   40</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">IsLoaded</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a>; }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">   41</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">IsAutoLoad</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !(<a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a>); }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">   42</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">IsPersistent</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !(<a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a>); }</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">   43</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">IsChanged</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a>; }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">   44</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">IsDeleted</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a>; }</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">   45</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">IsLoadedFromDisk</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a>; }</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">   47</a></span>    <span class=\"keywordtype\">void</span> <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">UpdateParameters</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">   48</a></span>    <span class=\"keywordtype\">void</span> <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">SetParameters</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">Yeet</a>();</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">   53</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">SetAutoLoad</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = is ? <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; ~DISABLE_AUTO_LOAD : <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> | <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a>; }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">   54</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">SetPersistent</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = is ? <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; ~NON_PERSISTENT : <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> | <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a>; }</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc) { <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = loc; <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">SetParameters</a>(); <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>();}</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot) { <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = rot; <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">SetParameters</a>(); }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">   59</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; loc, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&amp; rot){</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = loc;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = rot;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>();</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    }</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">   66</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a>; }</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">   67</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&amp; <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a>; }</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">   69</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg) = 0;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">   70</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) {};</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">   72</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">GetType</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">CheckTransition</a>();</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_entity_1_1_field_info.html\">   76</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a> {</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">   77</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">field_id</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">   78</a></span>        <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"code hl_variable\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">field_type</a>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">   79</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">field_flags</a>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    };</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    enum : uint32_t {</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">FIELD_SERIALIZE</a> = 1</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">   84</a></span>    };</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, <span class=\"keyword\">const</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>* fields, <span class=\"keywordtype\">size_t</span> fieldcount);</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, <span class=\"keyword\">const</span> FieldInfo* fields, <span class=\"keywordtype\">size_t</span> fieldcount);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">RegisterType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>, std::initializer_list&lt;FieldInfo&gt; fields);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">   90</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"classtram_1_1_signal_table.html\">SignalTable</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">GetSignalTable</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a>; }</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> type, <a class=\"code hl_struct\" href=\"classtram_1_1_file.html\">File</a>* file);</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> type, <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity_id);</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> entity_name);</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    enum : uint32_t {</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">   98</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">NON_PERSISTENT</a> = 1,</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">   99</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">LOADED</a> = 2,</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">  100</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">DISABLE_AUTO_LOAD</a> = 4,</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">  101</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">NON_SERIALIZABLE</a> = 8,</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">  102</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">DIRTY</a> = 16,</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">  103</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">DELETED</a> = 32,</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">LOADED_FROM_DISK</a> = 64</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">  105</a></span>    };</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">  107</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <span class=\"keywordtype\">id</span> = 0;</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">  108</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">name</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    </div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">  110</a></span>    <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">cell</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    <span class=\"comment\">// don&#39;t really need this, since we can use the entity ID number to lookup</span></div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"comment\">// the SignalTable for each entity</span></div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"comment\">// TODO: fix</span></div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">  115</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_signal_table.html\">SignalTable</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    </div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">  117</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">  118</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">  120</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">Unregister</a>();</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">  124</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">FireSignal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type) { <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a>) <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a>(type, this-&gt;<span class=\"keywordtype\">id</span>); }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">  125</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">FireSignal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> type, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> value) { <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a>) <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">signals</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a>(type, this-&gt;<span class=\"keywordtype\">id</span>, value); }</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">  127</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">SetFlag</a>(uint32_t flag, <span class=\"keywordtype\">bool</span> value) { <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> = value ? <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> | flag : <a class=\"code hl_variable\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">flags</a> &amp; ~flag; }</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54\">  129</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>};</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html\">  132</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> {</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">  133</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">type</a>;</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f\">  134</a></span>    uint64_t <span class=\"keywordtype\">id</span> = 0;</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">  135</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">name</a>;</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">  136</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">  137</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">position</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">  138</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};;</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>};</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>}</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_ENTITY_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a0143b5547a4eeef3e1501defe9882514\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">tram::Entity::SetPersistent</a></div><div class=\"ttdeci\">void SetPersistent(bool is)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a022989dd6fae21cdb65af24f26648488\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity::Serialize</a></div><div class=\"ttdeci\">virtual void Serialize()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a0525838325f363757549a3faa3267a62\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">tram::Entity::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> entity.h:117</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a07ace4859c60707136639f33cd525c0a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">tram::Entity::IsPersistent</a></div><div class=\"ttdeci\">bool IsPersistent() const</div><div class=\"ttdoc\">Returns the persistence status of an entity.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a0e0037fe55b567a2f73a84e4e6932197\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">tram::Entity::id</a></div><div class=\"ttdeci\">id_t id</div><div class=\"ttdef\"><b>Definition:</b> entity.h:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a0fa0c3702c54eb536cd07eaf49dc799a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">tram::Entity::CheckTransition</a></div><div class=\"ttdeci\">void CheckTransition()</div><div class=\"ttdoc\">Check whether an entity has entered a different cell.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:228</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a147a88601da58a30ee3d39bbc2c2da12\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">tram::Entity::IsAutoLoad</a></div><div class=\"ttdeci\">bool IsAutoLoad() const</div><div class=\"ttdoc\">Returns the auto load flag status.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a21f52a14480f7dec666418d7ba17524c\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">tram::Entity::Register</a></div><div class=\"ttdeci\">void Register()</div><div class=\"ttdoc\">Registers the entity.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:333</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a2b9df5ef54954cdcd7b0f3af7aa7f829\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity::Unload</a></div><div class=\"ttdeci\">virtual void Unload()=0</div><div class=\"ttdoc\">Unloads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a2ca775133055e997ef91ac3db27f2a0a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">tram::Entity::EventHandler</a></div><div class=\"ttdeci\">virtual void EventHandler(Event &amp;event)</div><div class=\"ttdoc\">Allows entities to receive events.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a305ae4e799b36c4111f5cd089748f422\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">tram::Entity::IsLoaded</a></div><div class=\"ttdeci\">bool IsLoaded() const</div><div class=\"ttdoc\">Returns the entity load status.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a32d15f20656ffc4da923380374605df0\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">tram::Entity::signals</a></div><div class=\"ttdeci\">SignalTable * signals</div><div class=\"ttdef\"><b>Definition:</b> entity.h:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a409d0640de875ed0bdf2b8b71cfe75ee\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">tram::Entity::IsDeleted</a></div><div class=\"ttdeci\">bool IsDeleted() const</div><div class=\"ttdoc\">Returns the entity deletion status.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a42f5dbd06dc0014191ac78e6c2900386\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity::Load</a></div><div class=\"ttdeci\">virtual void Load()=0</div><div class=\"ttdoc\">Loads an entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a475636f78b92b3eca43ce1d01da4fcb8\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">tram::Entity::UpdateTransform</a></div><div class=\"ttdeci\">void UpdateTransform(const vec3 &amp;loc, const quat &amp;rot)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a552606c9eec8f007aaf42d251aaaa264\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity::GetType</a></div><div class=\"ttdeci\">virtual name_t GetType()=0</div><div class=\"ttdoc\">Returns the type of the entity.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a5bde1559d6170dca943fa7f41dde7ea9\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">tram::Entity::Make</a></div><div class=\"ttdeci\">static Entity * Make(name_t type, File *file)</div><div class=\"ttdoc\">Loads an Entity from a File.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:417</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a5cd683c73f9413ca09d5417c550eaf3d\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">tram::Entity::Entity</a></div><div class=\"ttdeci\">Entity()</div><div class=\"ttdoc\">Creates an unnamed entity with a random ID.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:188</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a5ec303fd15c52e42d390eabeece5365f\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">tram::Entity::GetID</a></div><div class=\"ttdeci\">id_t GetID() const</div><div class=\"ttdef\"><b>Definition:</b> entity.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a613b86846cd7d82c666367c98d266e6e\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">tram::Entity::SetFlag</a></div><div class=\"ttdeci\">void SetFlag(uint32_t flag, bool value)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:127</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a688ecc3f647b88edae8704c9330d2afe\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">tram::Entity::RegisterType</a></div><div class=\"ttdeci\">static void RegisterType(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)</div><div class=\"ttdoc\">Registers a new entity type.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:266</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a6e2489225d5ca4a76b702b4d138963de\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">tram::Entity::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 loc)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a742a345ed3da6d6966040b4a2045ce8e\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">tram::Entity::SetAutoLoad</a></div><div class=\"ttdeci\">void SetAutoLoad(bool is)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a79fd0e828bd002ca6d4505dbc63739e2\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">tram::Entity::~Entity</a></div><div class=\"ttdeci\">virtual ~Entity()</div><div class=\"ttdoc\">Destructs the entity.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:221</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a7bf177c08614dd697b23cd021c7fbfda\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">tram::Entity::GetLocation</a></div><div class=\"ttdeci\">const vec3 &amp; GetLocation()</div><div class=\"ttdef\"><b>Definition:</b> entity.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a80727e0995ac3f27addb02613c8e5edd\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">tram::Entity::Unregister</a></div><div class=\"ttdeci\">void Unregister()</div><div class=\"ttdoc\">Unregisters the entity.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:348</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a8439e1ea14f61418caf8fccc00315bbb\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">tram::Entity::GetSignalTable</a></div><div class=\"ttdeci\">SignalTable * GetSignalTable()</div><div class=\"ttdef\"><b>Definition:</b> entity.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a8654143c591ec6d8dcb5d2414d4d63a3\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity::UpdateParameters</a></div><div class=\"ttdeci\">virtual void UpdateParameters()=0</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a9a15c4d86ef5f814eb8cc9b70cb8ced3\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">tram::Entity::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(quat rot)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">tram::Entity::FIELD_SERIALIZE</a></div><div class=\"ttdeci\">@ FIELD_SERIALIZE</div><div class=\"ttdef\"><b>Definition:</b> entity.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a9fe6fef78260ef5d7a3dc425e26ca375\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">tram::Entity::GetCell</a></div><div class=\"ttdeci\">WorldCell * GetCell()</div><div class=\"ttdoc\">Returns the entity's parent cell.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aa2a31ccd75576ca82547ed1feed60d8c\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">tram::Entity::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> entity.h:118</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aa83f617be04b68ab23d2f42a248b9e7d\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">tram::Entity::FireSignal</a></div><div class=\"ttdeci\">void FireSignal(signal_t type)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">tram::Entity::DISABLE_AUTO_LOAD</a></div><div class=\"ttdeci\">@ DISABLE_AUTO_LOAD</div><div class=\"ttdef\"><b>Definition:</b> entity.h:100</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">tram::Entity::NON_PERSISTENT</a></div><div class=\"ttdeci\">@ NON_PERSISTENT</div><div class=\"ttdef\"><b>Definition:</b> entity.h:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">tram::Entity::LOADED</a></div><div class=\"ttdeci\">@ LOADED</div><div class=\"ttdef\"><b>Definition:</b> entity.h:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">tram::Entity::LOADED_FROM_DISK</a></div><div class=\"ttdeci\">@ LOADED_FROM_DISK</div><div class=\"ttdef\"><b>Definition:</b> entity.h:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">tram::Entity::DELETED</a></div><div class=\"ttdeci\">@ DELETED</div><div class=\"ttdef\"><b>Definition:</b> entity.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">tram::Entity::NON_SERIALIZABLE</a></div><div class=\"ttdeci\">@ NON_SERIALIZABLE</div><div class=\"ttdef\"><b>Definition:</b> entity.h:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">tram::Entity::DIRTY</a></div><div class=\"ttdeci\">@ DIRTY</div><div class=\"ttdef\"><b>Definition:</b> entity.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ab439f567d570a3bbd0f80c5d2e025eb0\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">tram::Entity::IsChanged</a></div><div class=\"ttdeci\">bool IsChanged() const</div><div class=\"ttdef\"><b>Definition:</b> entity.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ab9b31a0d34775a0f01a2bef87efd3140\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">tram::Entity::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> entity.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ac9e3adac30cac41573d2bdda676a0832\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity::SetParameters</a></div><div class=\"ttdeci\">virtual void SetParameters()=0</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ace4932f5988e14152753e4de7de86a4a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">tram::Entity::IsLoadedFromDisk</a></div><div class=\"ttdeci\">bool IsLoadedFromDisk() const</div><div class=\"ttdef\"><b>Definition:</b> entity.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ad3430330bb5b0f51f64b23ea38396f91\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">tram::Entity::Yeet</a></div><div class=\"ttdeci\">void Yeet()</div><div class=\"ttdoc\">Purges the entity.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:406</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ad3fb3cd40bf0ec9c846a46704d4f7470\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">tram::Entity::cell</a></div><div class=\"ttdeci\">WorldCell * cell</div><div class=\"ttdef\"><b>Definition:</b> entity.h:110</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_ad81126191ef55c6ff2b3b112ce6c9cdb\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity::MessageHandler</a></div><div class=\"ttdeci\">virtual void MessageHandler(Message &amp;msg)=0</div><div class=\"ttdoc\">Allows entities to receive messages.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_adbb214d504101d5113d149fa0f06e162\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">tram::Entity::GetRotation</a></div><div class=\"ttdeci\">const quat &amp; GetRotation()</div><div class=\"ttdef\"><b>Definition:</b> entity.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_af48fa95d5f1f47aebc79545a861cd478\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">tram::Entity::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> entity.h:120</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_af4a0a09ff81566de5b217018529844c5\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">tram::Entity::Update</a></div><div class=\"ttdeci\">static void Update()</div><div class=\"ttdoc\">Updates entities.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:380</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_afba6aa3dbbd10ebc42beb6729bdb7da2\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">tram::Entity::Find</a></div><div class=\"ttdeci\">static Entity * Find(id_t entity_id)</div><div class=\"ttdoc\">Finds the entity by its ID number.</div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:361</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_afbad8d97ef0905782c6aa0ef8ca7cf88\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88\">tram::Entity::FireSignal</a></div><div class=\"ttdeci\">void FireSignal(signal_t type, Value value)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:125</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_afe85e71ed0b3321908e0c86c58a71271\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">tram::Entity::GetName</a></div><div class=\"ttdeci\">name_t GetName() const</div><div class=\"ttdef\"><b>Definition:</b> entity.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html\">tram::File</a></div><div class=\"ttdoc\">Very fast file reader/writer.</div><div class=\"ttdef\"><b>Definition:</b> file.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></div><div class=\"ttdoc\">List of Message templates.</div><div class=\"ttdef\"><b>Definition:</b> signal.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html_a6268d498a6ba6846e797499a3100fe41\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">tram::SignalTable::Fire</a></div><div class=\"ttdeci\">void Fire(signal_t signal, id_t sender)</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:105</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></div><div class=\"ttdoc\">World streaming unit.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:16</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdoc\">Type enumeration for serialization, etc.</div><div class=\"ttdef\"><b>Definition:</b> type.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2efd897a3a954a002664292b5d6264d6\"><div class=\"ttname\"><a href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram::signal_t</a></div><div class=\"ttdeci\">uint32_t signal_t</div><div class=\"ttdef\"><b>Definition:</b> signal.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a5f7e406660923fb9a2cc0a8628fa0c3d\"><div class=\"ttname\"><a href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">tram::entity_make</a></div><div class=\"ttdeci\">Entity *(* entity_make)(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_acb6f2c041e69a847713e8d29f66dc58b\"><div class=\"ttname\"><a href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">tram::entity_clear</a></div><div class=\"ttdeci\">void(* entity_clear)(Entity *)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:21</div></div>\n<div class=\"ttc\" id=\"asignal_8h_html\"><div class=\"ttname\"><a href=\"signal_8h.html\">signal.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_entity_1_1_field_info_html\"><div class=\"ttname\"><a href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a></div><div class=\"ttdef\"><b>Definition:</b> entity.h:76</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_entity_1_1_field_info_html_a37fb586096567f2c3da11d696f119fd0\"><div class=\"ttname\"><a href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">tram::Entity::FieldInfo::field_type</a></div><div class=\"ttdeci\">Type field_type</div><div class=\"ttdef\"><b>Definition:</b> entity.h:78</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_entity_1_1_field_info_html_ab70f9293bd89845c16aeb3f1d44901c3\"><div class=\"ttname\"><a href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">tram::Entity::FieldInfo::field_flags</a></div><div class=\"ttdeci\">uint32_t field_flags</div><div class=\"ttdef\"><b>Definition:</b> entity.h:79</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_entity_1_1_field_info_html_afc597660b771bd0d90e3e1c4b5fd5558\"><div class=\"ttname\"><a href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">tram::Entity::FieldInfo::field_id</a></div><div class=\"ttdeci\">uint32_t field_id</div><div class=\"ttdef\"><b>Definition:</b> entity.h:77</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html_a08cdfe854b58bb8a32ca9594866186c5\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">tram::SharedEntityData::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> entity.h:138</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html_a4a85b5f990cc351ec57869c3fe08335f\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">tram::SharedEntityData::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> entity.h:136</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html_a64c88d3fd0cd94c90c66f1dd9dd5ce9e\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">tram::SharedEntityData::type</a></div><div class=\"ttdeci\">name_t type</div><div class=\"ttdef\"><b>Definition:</b> entity.h:133</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html_a7b51e3157cac585cc29e5fac4e4c92e1\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">tram::SharedEntityData::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> entity.h:135</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html_af1759c89e46d55eb848b84f67cc0c3f1\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">tram::SharedEntityData::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> entity.h:137</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entitycomponent_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entitycomponent.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entitycomponent.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entitycomponent_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entitycomponent.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">entitycomponent.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"async_8h_source.html\">framework/async.h</a>&gt;</code><br />\n</div>\n<p><a href=\"entitycomponent_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class.  <a href=\"classtram_1_1_entity_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html\">tram::Component&lt; T &gt;</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer.  <a href=\"classtram_1_1_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/entitycomponent_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/entitycomponent.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">entitycomponent.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"entitycomponent_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"pool_8h.html\">templates/pool.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"async_8h.html\">framework/async.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>Event;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html\">   16</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">   18</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">EntityComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">   19</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">~EntityComponent</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">   23</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">   25</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">IsReady</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a>; }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">   26</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">IsInit</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a>; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">   28</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">GetParent</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>; }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">   29</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">SetParent</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>) { this-&gt;parent = <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a>; }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">   32</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a> = 0;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">   33</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">is_ready</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">   34</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">is_init</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">   35</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">parent</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"comment\">// we could make resources_waiting a uint16_t and then we could even turn</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"comment\">// is_ready and is_init into a single bitmask, saving memory</span></div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">ResourceReady</a>();</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">   42</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">Start</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02\">   43</a></span>    <span class=\"keyword\">friend</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">Async::FinishResources</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d\">   44</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>};</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component</a> {</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">   53</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">Component</a>() {}</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">   54</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">~Component</a>() { <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">clear</a>(); }</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">make</a>() { <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>) <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">yeet</a>(); <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">init</a>(); }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">clear</a>() { <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>) <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">yeet</a>(); <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a> = <span class=\"keyword\">nullptr</span>; }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">   57</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">get</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">   58</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">operator-&gt;</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">   59</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">operator*</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd\">   60</a></span>    <span class=\"keyword\">operator</span> T*() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#ac42050ff047751f66c1549099461d047\">   61</a></span>    <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a> != <span class=\"keyword\">nullptr</span>; }</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">   63</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">init</a>();</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">   64</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">yeet</a>();</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">   66</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">ptr</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>}</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aasync_8h_html\"><div class=\"ttname\"><a href=\"async_8h.html\">async.h</a></div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a129fcc4a535b3bbd7ae878a22b36e541\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">tram::Component::get</a></div><div class=\"ttdeci\">T * get()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a45fa994315db8371fbd6b59cfa5d4979\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">tram::Component::Component</a></div><div class=\"ttdeci\">Component()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a49462f491b7ab20bc064693927baf3d4\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">tram::Component::yeet</a></div><div class=\"ttdeci\">void yeet()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a677f4c2d5457aa376fba89d95f3ca8c9\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">tram::Component::make</a></div><div class=\"ttdeci\">void make()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a6cd91a842686662e8cceccd2920c3619\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">tram::Component::init</a></div><div class=\"ttdeci\">void init()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a76e7065ebab1cd17d4cabe184ff78dfe\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">tram::Component::ptr</a></div><div class=\"ttdeci\">T * ptr</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a7867337d41058f8bdd955736e2ba1127\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">tram::Component::operator-&gt;</a></div><div class=\"ttdeci\">T * operator-&gt;()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_a913f66e1f83b18318e0962d532e77376\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">tram::Component::clear</a></div><div class=\"ttdeci\">void clear()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_aa83c13894934e104f7b7fb9f95a2864e\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">tram::Component::operator*</a></div><div class=\"ttdeci\">T &amp; operator*()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html_af9e29eb673f1f11ec14d75aa19d6be1f\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">tram::Component::~Component</a></div><div class=\"ttdeci\">~Component()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a0e65307b795d61b931c6b3600fc737ac\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">tram::EntityComponent::is_init</a></div><div class=\"ttdeci\">bool is_init</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a1683ad236bce69ab4b2c2dac75ef526a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">tram::EntityComponent::SetParent</a></div><div class=\"ttdeci\">void SetParent(Entity *parent)</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a1ae29198858d24d3aba6914bdee6a46f\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">tram::EntityComponent::IsReady</a></div><div class=\"ttdeci\">bool IsReady()</div><div class=\"ttdoc\">Returns the component's readiness.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a407901dc86e2eeb0b594d3730081f3e8\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">tram::EntityComponent::EntityComponent</a></div><div class=\"ttdeci\">EntityComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a4c959cc80467ad2e753972bdc4eb7c33\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">tram::EntityComponent::~EntityComponent</a></div><div class=\"ttdeci\">virtual ~EntityComponent()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a4dcceab63838befe9fbffc1c3bc19918\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">tram::EntityComponent::is_ready</a></div><div class=\"ttdeci\">bool is_ready</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a596335e001ab39c1f575ece6defaf04b\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent::EventHandler</a></div><div class=\"ttdeci\">virtual void EventHandler(Event &amp;event)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a64cc26454bf92a709eef5e19931695d6\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent::Start</a></div><div class=\"ttdeci\">virtual void Start()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a678a0fce6a2deac1fa04baaed4db3009\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">tram::EntityComponent::GetParent</a></div><div class=\"ttdeci\">Entity * GetParent()</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a67f362753d2e2c2e5859ceab8b9461ce\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">tram::EntityComponent::resources_waiting</a></div><div class=\"ttdeci\">size_t resources_waiting</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a7f860b05911af126e8bd152492466b40\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">tram::EntityComponent::ResourceReady</a></div><div class=\"ttdeci\">void ResourceReady()</div><div class=\"ttdoc\">Notifies the component of a streamed-in resource.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_aad321b7c26fd5f710cf1e0e48f605a8a\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">tram::EntityComponent::IsInit</a></div><div class=\"ttdeci\">bool IsInit()</div><div class=\"ttdoc\">Returns the component's init status.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_ab5d797d6fd60beef019062e228679eb7\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent::Init</a></div><div class=\"ttdeci\">virtual void Init()</div><div class=\"ttdoc\">Initializes an entity component.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.cpp:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_aea0aa7626e36e31f1621ba81925cb56b\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">tram::EntityComponent::parent</a></div><div class=\"ttdeci\">Entity * parent</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_aed73e549dce7f281ed1d2d8bb31c7b65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async::FinishResources</a></div><div class=\"ttdeci\">void FinishResources()</div><div class=\"ttdoc\">Notifies EntityComponents about finished resources.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:243</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"apool_8h_html\"><div class=\"ttname\"><a href=\"pool_8h.html\">pool.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/error_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/error.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">error.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"error_8h_source.html\">render/error.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">tram::Render::MakeNewErrorTexture</a> (vec3 color1, vec3 color2)</td></tr>\n<tr class=\"memdesc:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error texture.  <a href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">StaticModelData *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">tram::Render::MakeNewErrorModel</a> ()</td></tr>\n<tr class=\"memdesc:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error model.  <a href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">More...</a><br /></td></tr>\n<tr class=\"separator:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/error_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/error.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">error.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n</div>\n<p><a href=\"error_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">tram::Render::MakeNewErrorTexture</a> (vec3 color1, vec3 color2)</td></tr>\n<tr class=\"memdesc:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error texture.  <a href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">StaticModelData *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">tram::Render::MakeNewErrorModel</a> ()</td></tr>\n<tr class=\"memdesc:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error model.  <a href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">More...</a><br /></td></tr>\n<tr class=\"separator:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/error_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/error.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">error.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"error_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_ERROR_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_ERROR_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"vertices_8h.html\">render/vertices.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>uint8_t* <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">MakeNewErrorTexture</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color2);</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>StaticModelData* <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">MakeNewErrorModel</a>();</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>}</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_ERROR_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a1ebeba7bcc783c32d08b2948d2640a37\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">tram::Render::MakeNewErrorTexture</a></div><div class=\"ttdeci\">uint8_t * MakeNewErrorTexture(vec3 color1, vec3 color2)</div><div class=\"ttdoc\">Generates a new error texture.</div><div class=\"ttdef\"><b>Definition:</b> error.cpp:9</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a7e7fe9a01e4909b61222ad2214175b8e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">tram::Render::MakeNewErrorModel</a></div><div class=\"ttdeci\">StaticModelData * MakeNewErrorModel()</div><div class=\"ttdoc\">Generates a new error model.</div><div class=\"ttdef\"><b>Definition:</b> error.cpp:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"avertices_8h_html\"><div class=\"ttname\"><a href=\"vertices_8h.html\">vertices.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/event_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/event.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">event.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"queue_8h_source.html\">templates/queue.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">templates/stackpool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a67acb96d23f8bfea55638bc35178d08d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a67acb96d23f8bfea55638bc35178d08d\">tram::MAX_EVENT_TYPES</a> = 100</td></tr>\n<tr class=\"separator:a67acb96d23f8bfea55638bc35178d08d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/event_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/event.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">event.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n<code>#include &lt;cstddef&gt;</code><br />\n<code>#include &lt;type_traits&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"event_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data.  <a href=\"structtram_1_1_event.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners.  <a href=\"classtram_1_1_event_listener.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a0183b475d47925143ca46259ec594d90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">tram::event_t</a></td></tr>\n<tr class=\"separator:a0183b475d47925143ca46259ec594d90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc1aacd663943b92d06f10950a9f10d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram::listener_t</a></td></tr>\n<tr class=\"separator:abc1aacd663943b92d06f10950a9f10d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d506d80abf93dd017a92dbcb169f9c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef Value&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></td></tr>\n<tr class=\"separator:a7d506d80abf93dd017a92dbcb169f9c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/event_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/event.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">event.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"event_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_EVENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_EVENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;type_traits&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">   14</a></span><span class=\"keyword\">typedef</span> uint16_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">   16</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">struct </span><a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">   22</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html\">   24</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">   25</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">Type</a> : <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">   26</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">NONE</a>,           <span class=\"comment\">//&lt; Invalid event type</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">   27</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">KEYPRESS</a>,       <span class=\"comment\">//&lt; Keyboard key still pressed</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">   28</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">KEYDOWN</a>,        <span class=\"comment\">//&lt; Keyboard key pressed</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">   29</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">KEYUP</a>,          <span class=\"comment\">//&lt; Keyboard key released</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">   30</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">KEYCHAR</a>,        <span class=\"comment\">//&lt; Keyboard input registered</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">   31</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">CURSORPOS</a>,      <span class=\"comment\">//&lt; Cursor moved</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">   32</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">FRAME</a>,          <span class=\"comment\">//&lt; Emitted every frame</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">   33</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">TICK</a>,           <span class=\"comment\">//&lt; Emitted every tick</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">   34</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">SELECTED</a>,       <span class=\"comment\">//&lt; Cursor on top of an interactable object</span></div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">   35</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">LOOK_AT</a>,        <span class=\"comment\">//&lt; Entity is looking in a direction</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">LAST_EVENT</a></div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">   37</a></span>    };</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">Register</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">GetType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">GetName</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">GetLast</a>();</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">Post</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">Dispatch</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* component);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>, <span class=\"keywordtype\">void</span> (*handler)(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a>&amp; event, <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>));</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <span class=\"keywordtype\">void</span> (*handler)(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a>&amp; event));</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">RemoveListener</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> listener_id);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span>* <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">AllocateData</a>(<span class=\"keywordtype\">size_t</span> ammount);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">   55</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">static</span> T* <a class=\"code hl_function\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">AllocateData</a>() { <span class=\"keywordflow\">return</span> (T*)<a class=\"code hl_function\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">AllocateData</a>(<span class=\"keyword\">sizeof</span>(T)); }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">   56</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">static</span> T* <a class=\"code hl_function\" href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">AllocateData</a>(<span class=\"keyword\">const</span> T&amp; <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>) { T* ptr = (T*)<a class=\"code hl_function\" href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">AllocateData</a>(<span class=\"keyword\">sizeof</span>(T)); *ptr = <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>; <span class=\"keywordflow\">return</span> ptr; }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">   58</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">   59</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">subtype</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">   60</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">poster</a>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">   63</a></span>        <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">   64</a></span>        int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">data_int</a>;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">   65</a></span>        <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">data_value</a>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    };</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_event_listener.html\">   69</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_event_listener.html\">EventListener</a> {</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <a class=\"code hl_function\" href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">~EventListener</a>();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">make</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* parent);</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">make</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* parent);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">make</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> event, <span class=\"keywordtype\">void</span> (*handler)(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a>&amp; event));</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">clear</a>();</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4\">   76</a></span>    <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">listener</a> != 0; }</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">   78</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">listener</a> = 0;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_EVENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html\">tram::EventListener</a></div><div class=\"ttdoc\">Smart wrapper class for Event listeners.</div><div class=\"ttdef\"><b>Definition:</b> event.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html_a34b25d8225afb354e3e7ff8fe7ba78b1\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">tram::EventListener::~EventListener</a></div><div class=\"ttdeci\">~EventListener()</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:387</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html_a930c397fc9144345c9fd431db387f329\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">tram::EventListener::listener</a></div><div class=\"ttdeci\">listener_t listener</div><div class=\"ttdef\"><b>Definition:</b> event.h:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html_ad0763adada010c84064f47422fce20ec\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">tram::EventListener::make</a></div><div class=\"ttdeci\">void make(event_t event, Entity *parent)</div><div class=\"ttdoc\">Essentially same as Event::AddListener().</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:392</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_event_listener_html_adbbf55ccc50a2a2745bbd06adde45e1b\"><div class=\"ttname\"><a href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">tram::EventListener::clear</a></div><div class=\"ttdeci\">void clear()</div><div class=\"ttdoc\">Essentially same as Event::RemoveListener().</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:410</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a0183b475d47925143ca46259ec594d90\"><div class=\"ttname\"><a href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">tram::event_t</a></div><div class=\"ttdeci\">uint16_t event_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7d506d80abf93dd017a92dbcb169f9c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></div><div class=\"ttdeci\">Value value_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_abc1aacd663943b92d06f10950a9f10d0\"><div class=\"ttname\"><a href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram::listener_t</a></div><div class=\"ttdeci\">uint32_t listener_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a092d09e0b63277a8fbc77e92c0a61be5\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">tram::Event::RemoveListener</a></div><div class=\"ttdeci\">static void RemoveListener(listener_t listener_id)</div><div class=\"ttdoc\">Deregisters a listener.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:268</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a0e33b78a59445000e7fbe10f97e32305\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">tram::Event::AllocateData</a></div><div class=\"ttdeci\">static T * AllocateData()</div><div class=\"ttdef\"><b>Definition:</b> event.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a181fc927e0b983c6d1af3d0a1ed4ed15\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">tram::Event::GetLast</a></div><div class=\"ttdeci\">static event_t GetLast()</div><div class=\"ttdoc\">Returns the last event_t plus one.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:186</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a1d1f19efb6907f2fd3eccc398dd2a9f3\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">tram::Event::Dispatch</a></div><div class=\"ttdeci\">static void Dispatch()</div><div class=\"ttdoc\">Dispatches events from the event queue.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:313</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a26cc77ee3a08567434f0b475a148007a\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">tram::Event::type</a></div><div class=\"ttdeci\">event_t type</div><div class=\"ttdoc\">Type of the event.</div><div class=\"ttdef\"><b>Definition:</b> event.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a2964632c82d23cc106fb57530210c774\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">tram::Event::Post</a></div><div class=\"ttdeci\">static void Post(const Event &amp;event)</div><div class=\"ttdoc\">Adds an event to the event queue.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:366</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">tram::Event::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition:</b> event.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">tram::Event::TICK</a></div><div class=\"ttdeci\">@ TICK</div><div class=\"ttdef\"><b>Definition:</b> event.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">tram::Event::KEYCHAR</a></div><div class=\"ttdeci\">@ KEYCHAR</div><div class=\"ttdef\"><b>Definition:</b> event.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">tram::Event::KEYUP</a></div><div class=\"ttdeci\">@ KEYUP</div><div class=\"ttdef\"><b>Definition:</b> event.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">tram::Event::LAST_EVENT</a></div><div class=\"ttdeci\">@ LAST_EVENT</div><div class=\"ttdef\"><b>Definition:</b> event.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">tram::Event::CURSORPOS</a></div><div class=\"ttdeci\">@ CURSORPOS</div><div class=\"ttdef\"><b>Definition:</b> event.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">tram::Event::FRAME</a></div><div class=\"ttdeci\">@ FRAME</div><div class=\"ttdef\"><b>Definition:</b> event.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">tram::Event::SELECTED</a></div><div class=\"ttdeci\">@ SELECTED</div><div class=\"ttdef\"><b>Definition:</b> event.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">tram::Event::KEYDOWN</a></div><div class=\"ttdeci\">@ KEYDOWN</div><div class=\"ttdef\"><b>Definition:</b> event.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">tram::Event::NONE</a></div><div class=\"ttdeci\">@ NONE</div><div class=\"ttdef\"><b>Definition:</b> event.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">tram::Event::LOOK_AT</a></div><div class=\"ttdeci\">@ LOOK_AT</div><div class=\"ttdef\"><b>Definition:</b> event.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">tram::Event::KEYPRESS</a></div><div class=\"ttdeci\">@ KEYPRESS</div><div class=\"ttdef\"><b>Definition:</b> event.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a6f907880059f690671dda82db28439f5\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">tram::Event::data_int</a></div><div class=\"ttdeci\">int32_t data_int</div><div class=\"ttdoc\">Arbitrary data integer.</div><div class=\"ttdef\"><b>Definition:</b> event.h:64</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a71beec0c04550efde19bc6e76e5b209d\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">tram::Event::Register</a></div><div class=\"ttdeci\">static event_t Register(const char *name)</div><div class=\"ttdoc\">Registers a new event type.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:131</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a877f4911d3811c501fdb4841aae78d10\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">tram::Event::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdoc\">Pointer to arbitrary data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:63</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_a92418dc8036094cf309758831c14deed\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">tram::Event::poster</a></div><div class=\"ttdeci\">id_t poster</div><div class=\"ttdef\"><b>Definition:</b> event.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_ab499b6c8117176c1c2d782faf862412e\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">tram::Event::subtype</a></div><div class=\"ttdeci\">event_t subtype</div><div class=\"ttdoc\">Arbitrary event subtype.</div><div class=\"ttdef\"><b>Definition:</b> event.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_ac2c8fdcc08e45feb8b90b6899e69e319\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">tram::Event::data_value</a></div><div class=\"ttdeci\">value_t * data_value</div><div class=\"ttdoc\">Pointer to a value_t.</div><div class=\"ttdef\"><b>Definition:</b> event.h:65</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_acdd37976a6d83ee51522e128feb72039\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">tram::Event::AllocateData</a></div><div class=\"ttdeci\">static T * AllocateData(const T &amp;data)</div><div class=\"ttdef\"><b>Definition:</b> event.h:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_aee54dc533e45e7e43fb0ada6308f8d80\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">tram::Event::GetName</a></div><div class=\"ttdeci\">static name_t GetName(event_t type)</div><div class=\"ttdoc\">Returns the name that was associated with a given event_t.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:175</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_af1a090951d04d0b72b10020a273d8f05\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">tram::Event::AddListener</a></div><div class=\"ttdeci\">static listener_t AddListener(event_t type, EntityComponent *component)</div><div class=\"ttdoc\">Registers a listener.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:203</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html_af584b523e077a59452a91153334e75cd\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">tram::Event::GetType</a></div><div class=\"ttdeci\">static event_t GetType(name_t name)</div><div class=\"ttdoc\">Returns the event_t associated with a given name.</div><div class=\"ttdef\"><b>Definition:</b> event.cpp:159</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/extensions_2menu_2system_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/system.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">extensions/menu/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aab031015981522b1ea19979d05d54770\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770\">tram::Ext::Menu::string_float</a> (float value)</td></tr>\n<tr class=\"separator:aab031015981522b1ea19979d05d54770\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/extensions_2menu_2system_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/system.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n<code>#include &lt;functional&gt;</code><br />\n</div>\n<p><a href=\"extensions_2menu_2system_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/extensions_2menu_2system_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/system.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">system.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"extensions_2menu_2system_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_MENU_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_MENU_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"menu_2menu_8h.html\">extensions/menu/menu.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;functional&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keyword\">class </span>WorldCell;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\">//void InitCallbacks();</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//void UpdateCallbacks();</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">   19</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">SystemMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">   22</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">   23</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">~SystemMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>};</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">   28</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">SettingsMenu</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">   31</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">   32</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">~SettingsMenu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">   34</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tab</a> = 0;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">   35</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">binding_action</a> = 0;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">   36</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">binding_state_ready</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>}</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">tram::Ext::Menu::SettingsMenu</a></div><div class=\"ttdef\"><b>Definition:</b> system.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a48a51fdd2b0697dc7eea3934e247760f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">tram::Ext::Menu::SettingsMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> system.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a51abff2b754e4376be37a35cceacc839\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tram::Ext::Menu::SettingsMenu::tab</a></div><div class=\"ttdeci\">uint32_t tab</div><div class=\"ttdef\"><b>Definition:</b> system.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a5975fcefcf9922e267a6de09fa00a479\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">tram::Ext::Menu::SettingsMenu::binding_state_ready</a></div><div class=\"ttdeci\">bool binding_state_ready</div><div class=\"ttdef\"><b>Definition:</b> system.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a629fd955067640b30e849692d1eb5cfb\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">tram::Ext::Menu::SettingsMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a6d4a3d849008c2cf884787555a373725\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">tram::Ext::Menu::SettingsMenu::binding_action</a></div><div class=\"ttdeci\">uint32_t binding_action</div><div class=\"ttdef\"><b>Definition:</b> system.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_settings_menu_html_a95521cbfe6936dd0cd0011a107589491\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">tram::Ext::Menu::SettingsMenu::~SettingsMenu</a></div><div class=\"ttdeci\">~SettingsMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_system_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">tram::Ext::Menu::SystemMenu</a></div><div class=\"ttdef\"><b>Definition:</b> system.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_system_menu_html_a65e0843f9e22ac47984d5f7e2ba6a8ce\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">tram::Ext::Menu::SystemMenu::~SystemMenu</a></div><div class=\"ttdeci\">~SystemMenu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_system_menu_html_a692ddb36ef07913c6a6595e3446370b8\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">tram::Ext::Menu::SystemMenu::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> system.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_system_menu_html_aebef9f1ed425a93b52230f3d176a765a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">tram::Ext::Menu::SystemMenu::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:17</div></div>\n<div class=\"ttc\" id=\"amenu_2menu_8h_html\"><div class=\"ttname\"><a href=\"menu_2menu_8h.html\">menu.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></div><div class=\"ttdoc\">Menu framework.</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/files.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: File List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">File List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all files with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span><span onclick=\"javascript:toggleLevel(4);\">4</span><span onclick=\"javascript:toggleLevel(5);\">5</span><span onclick=\"javascript:toggleLevel(6);\">6</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span id=\"img_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_')\">&#160;</span><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\" target=\"_self\">painis</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9660;</span><span id=\"img_0_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_0_')\">&#160;</span><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\" target=\"_self\">tram-sdk</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_')\">&#9660;</span><span id=\"img_0_0_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\" target=\"_self\">src</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_0_')\">&#9658;</span><span id=\"img_0_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\" target=\"_self\">audio</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_0_0_')\">&#9658;</span><span id=\"img_0_0_0_0_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_0_0_')\">&#160;</span><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\" target=\"_self\">openal</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"openal_8cpp.html\" target=\"_self\">openal.cpp</a></td><td class=\"desc\">Implementation of the OpenAL Audio backend </td></tr>\n<tr id=\"row_0_0_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"openal_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"openal_8h.html\" target=\"_self\">openal.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_0_1_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_0_1_')\">&#9658;</span><span id=\"img_0_0_0_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\" target=\"_self\">spatial</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"definitions_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"definitions_8h.html\" target=\"_self\">definitions.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"output_8cpp.html\" target=\"_self\">output.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"output_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"output_8h.html\" target=\"_self\">output.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"pathtracer_8cpp.html\" target=\"_self\">pathtracer.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"pathtracer_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"pathtracer_8h.html\" target=\"_self\">pathtracer.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"spatial_8cpp.html\" target=\"_self\">spatial.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_1_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"spatial_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"spatial_8h.html\" target=\"_self\">spatial.h</a></td><td class=\"desc\">Definitions for the Spatial Audio backend </td></tr>\n<tr id=\"row_0_0_0_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_0_2_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_0_2_')\">&#9658;</span><span id=\"img_0_0_0_0_2_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_0_2_')\">&#160;</span><a class=\"el\" href=\"dir_8257c9d1ec427d0353bb282f2bab11cb.html\" target=\"_self\">template</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"template_8cpp.html\" target=\"_self\">template.cpp</a></td><td class=\"desc\">Template for Audio backend implementations </td></tr>\n<tr id=\"row_0_0_0_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"audio_2api_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"audio_2api_8h.html\" target=\"_self\">api.h</a></td><td class=\"desc\">Audio API implementation header </td></tr>\n<tr id=\"row_0_0_0_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"audio_2audio_8cpp.html\" target=\"_self\">audio.cpp</a></td><td class=\"desc\">Main Audio system interface implementation </td></tr>\n<tr id=\"row_0_0_0_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"audio_2audio_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"audio_2audio_8h.html\" target=\"_self\">audio.h</a></td><td class=\"desc\">Main interface for the Audio system </td></tr>\n<tr id=\"row_0_0_0_0_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"audio_2graph_8cpp.html\" target=\"_self\">graph.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"audio_2graph_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"audio_2graph_8h.html\" target=\"_self\">graph.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"audio_2sound_8cpp.html\" target=\"_self\">sound.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_0_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"audio_2sound_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"audio_2sound_8h.html\" target=\"_self\">sound.h</a></td><td class=\"desc\">Sound resource definition </td></tr>\n<tr id=\"row_0_0_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_1_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_1_')\">&#9658;</span><span id=\"img_0_0_0_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_1_')\">&#160;</span><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\" target=\"_self\">components</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2animation_8cpp.html\" target=\"_self\">animation.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2animation_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2animation_8h.html\" target=\"_self\">animation.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2audio_8cpp.html\" target=\"_self\">audio.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2audio_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2audio_8h.html\" target=\"_self\">audio.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"controller_8cpp.html\" target=\"_self\">controller.cpp</a></td><td class=\"desc\">Implementations for ControllerComponents </td></tr>\n<tr id=\"row_0_0_0_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"controller_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"controller_8h.html\" target=\"_self\">controller.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"decal_8cpp.html\" target=\"_self\">decal.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"decal_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"decal_8h.html\" target=\"_self\">decal.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2light_8cpp.html\" target=\"_self\">light.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2light_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2light_8h.html\" target=\"_self\">light.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"particle_8cpp.html\" target=\"_self\">particle.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"particle_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"particle_8h.html\" target=\"_self\">particle.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2physics_8cpp.html\" target=\"_self\">physics.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2physics_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2physics_8h.html\" target=\"_self\">physics.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2player_8cpp.html\" target=\"_self\">player.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2player_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2player_8h.html\" target=\"_self\">player.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2render_8cpp.html\" target=\"_self\">render.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2render_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2render_8h.html\" target=\"_self\">render.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2sprite_8cpp.html\" target=\"_self\">sprite.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2sprite_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2sprite_8h.html\" target=\"_self\">sprite.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"template_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"template_8h.html\" target=\"_self\">template.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"components_2trigger_8cpp.html\" target=\"_self\">trigger.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_1_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"components_2trigger_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"components_2trigger_8h.html\" target=\"_self\">trigger.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_2_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_2_')\">&#9658;</span><span id=\"img_0_0_0_2_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_2_')\">&#160;</span><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\" target=\"_self\">entities</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"crate_8cpp.html\" target=\"_self\">crate.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"crate_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"crate_8h.html\" target=\"_self\">crate.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"decoration_8cpp.html\" target=\"_self\">decoration.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"decoration_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"decoration_8h.html\" target=\"_self\">decoration.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_2light_8cpp.html\" target=\"_self\">light.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entities_2light_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_2light_8h.html\" target=\"_self\">light.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"marker_8cpp.html\" target=\"_self\">marker.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"marker_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"marker_8h.html\" target=\"_self\">marker.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_2player_8cpp.html\" target=\"_self\">player.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entities_2player_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_2player_8h.html\" target=\"_self\">player.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_2script_8cpp.html\" target=\"_self\">script.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entities_2script_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_2script_8h.html\" target=\"_self\">script.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_2sound_8cpp.html\" target=\"_self\">sound.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entities_2sound_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_2sound_8h.html\" target=\"_self\">sound.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"staticworldobject_8cpp.html\" target=\"_self\">staticworldobject.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"staticworldobject_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"staticworldobject_8h.html\" target=\"_self\">staticworldobject.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_2trigger_8cpp.html\" target=\"_self\">trigger.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_2_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entities_2trigger_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_2trigger_8h.html\" target=\"_self\">trigger.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_3_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_3_')\">&#9658;</span><span id=\"img_0_0_0_3_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_3_')\">&#160;</span><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\" target=\"_self\">extensions</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_3_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_3_0_')\">&#9658;</span><span id=\"img_0_0_0_3_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_3_0_')\">&#160;</span><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\" target=\"_self\">camera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"camera_8cpp.html\" target=\"_self\">camera.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"camera_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"camera_8h.html\" target=\"_self\">camera.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"firstperson_8cpp.html\" target=\"_self\">firstperson.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"firstperson_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"firstperson_8h.html\" target=\"_self\">firstperson.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"following_8cpp.html\" target=\"_self\">following.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"following_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"following_8h.html\" target=\"_self\">following.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"fpscamera_8cpp.html\" target=\"_self\">fpscamera.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"fpscamera_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"fpscamera_8h.html\" target=\"_self\">fpscamera.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"thirdperson_8cpp.html\" target=\"_self\">thirdperson.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_0_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"thirdperson_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"thirdperson_8h.html\" target=\"_self\">thirdperson.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_3_1_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_3_1_')\">&#9658;</span><span id=\"img_0_0_0_3_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_3_1_')\">&#160;</span><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\" target=\"_self\">kitchensink</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"ai_8cpp.html\" target=\"_self\">ai.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"ai_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"ai_8h.html\" target=\"_self\">ai.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"animationtable_8cpp.html\" target=\"_self\">animationtable.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"animationtable_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"animationtable_8h.html\" target=\"_self\">animationtable.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"attributes_8cpp.html\" target=\"_self\">attributes.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"attributes_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"attributes_8h.html\" target=\"_self\">attributes.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"character_8cpp.html\" target=\"_self\">character.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"character_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"character_8h.html\" target=\"_self\">character.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"dialog_8cpp.html\" target=\"_self\">dialog.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"dialog_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"dialog_8h.html\" target=\"_self\">dialog.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entities_8cpp.html\" target=\"_self\">entities.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"entities_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entities_8h.html\" target=\"_self\">entities.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"inventory_8cpp.html\" target=\"_self\">inventory.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"inventory_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"inventory_8h.html\" target=\"_self\">inventory.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"kitchensink_8cpp.html\" target=\"_self\">kitchensink.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"kitchensink_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"kitchensink_8h.html\" target=\"_self\">kitchensink.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"kitchensink_2menu_8cpp.html\" target=\"_self\">menu.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"kitchensink_2menu_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"kitchensink_2menu_8h.html\" target=\"_self\">menu.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"probe_8cpp.html\" target=\"_self\">probe.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"probe_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"probe_8h.html\" target=\"_self\">probe.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"quest_8cpp.html\" target=\"_self\">quest.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"quest_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"quest_8h.html\" target=\"_self\">quest.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"soundtable_8cpp.html\" target=\"_self\">soundtable.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_1_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"soundtable_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"soundtable_8h.html\" target=\"_self\">soundtable.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_3_2_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_3_2_')\">&#9658;</span><span id=\"img_0_0_0_3_2_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_3_2_')\">&#160;</span><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\" target=\"_self\">menu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"debug_8cpp.html\" target=\"_self\">debug.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"debug_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"debug_8h.html\" target=\"_self\">debug.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"menu_2menu_8cpp.html\" target=\"_self\">menu.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"menu_2menu_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"menu_2menu_8h.html\" target=\"_self\">menu.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"extensions_2menu_2system_8cpp.html\" target=\"_self\">system.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_2_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"extensions_2menu_2system_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"extensions_2menu_2system_8h.html\" target=\"_self\">system.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_3_3_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_3_3_')\">&#9658;</span><span id=\"img_0_0_0_3_3_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_3_3_')\">&#160;</span><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\" target=\"_self\">scripting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"lua_8cpp.html\" target=\"_self\">lua.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_3_3_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"lua_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"lua_8h.html\" target=\"_self\">lua.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_4_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_4_')\">&#9658;</span><span id=\"img_0_0_0_4_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_4_')\">&#160;</span><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\" target=\"_self\">framework</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"async_8cpp.html\" target=\"_self\">async.cpp</a></td><td class=\"desc\">Implementation of the Async system </td></tr>\n<tr id=\"row_0_0_0_4_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"async_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"async_8h.html\" target=\"_self\">async.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"core_8cpp.html\" target=\"_self\">core.cpp</a></td><td class=\"desc\">Core functionality of the framework </td></tr>\n<tr id=\"row_0_0_0_4_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"core_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"core_8h.html\" target=\"_self\">core.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entity_8cpp.html\" target=\"_self\">entity.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entity_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entity_8h.html\" target=\"_self\">entity.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"entitycomponent_8cpp.html\" target=\"_self\">entitycomponent.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"entitycomponent_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"entitycomponent_8h.html\" target=\"_self\">entitycomponent.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"event_8cpp.html\" target=\"_self\">event.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"event_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"event_8h.html\" target=\"_self\">event.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"framework_2file_8cpp.html\" target=\"_self\">file.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"framework_2file_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"framework_2file_8h.html\" target=\"_self\">file.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"framework_2graph_8cpp.html\" target=\"_self\">graph.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"framework_2graph_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"framework_2graph_8h.html\" target=\"_self\">graph.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"gui_8cpp.html\" target=\"_self\">gui.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"gui_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"gui_8h.html\" target=\"_self\">gui.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"language_8cpp.html\" target=\"_self\">language.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"language_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"language_8h.html\" target=\"_self\">language.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_18_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"loader_8cpp.html\" target=\"_self\">loader.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_19_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"loader_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"loader_8h.html\" target=\"_self\">loader.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_20_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"logging_8cpp.html\" target=\"_self\">logging.cpp</a></td><td class=\"desc\">Logging and console printing services </td></tr>\n<tr id=\"row_0_0_0_4_21_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"logging_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"logging_8h.html\" target=\"_self\">logging.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_22_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"math_8cpp.html\" target=\"_self\">math.cpp</a></td><td class=\"desc\">GLM typedefs and useful math functions </td></tr>\n<tr id=\"row_0_0_0_4_23_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"math_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"math_8h.html\" target=\"_self\">math.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_24_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"message_8cpp.html\" target=\"_self\">message.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_25_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"message_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"message_8h.html\" target=\"_self\">message.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_26_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"navmesh_8cpp.html\" target=\"_self\">navmesh.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_27_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"navmesh_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"navmesh_8h.html\" target=\"_self\">navmesh.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_28_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"path_8cpp.html\" target=\"_self\">path.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_29_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"path_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"path_8h.html\" target=\"_self\">path.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_30_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"resource_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"resource_8h.html\" target=\"_self\">resource.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_31_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"framework_2script_8cpp.html\" target=\"_self\">script.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_32_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"framework_2script_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"framework_2script_8h.html\" target=\"_self\">script.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_33_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"serialization_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"serialization_8h.html\" target=\"_self\">serialization.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_34_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"settings_8cpp.html\" target=\"_self\">settings.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_35_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"settings_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"settings_8h.html\" target=\"_self\">settings.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_36_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"signal_8cpp.html\" target=\"_self\">signal.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_37_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"signal_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"signal_8h.html\" target=\"_self\">signal.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_38_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"stats_8cpp.html\" target=\"_self\">stats.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_39_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"stats_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"stats_8h.html\" target=\"_self\">stats.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_40_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"framework_2system_8cpp.html\" target=\"_self\">system.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_41_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"framework_2system_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"framework_2system_8h.html\" target=\"_self\">system.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_42_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"transition_8cpp.html\" target=\"_self\">transition.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_43_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"transition_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"transition_8h.html\" target=\"_self\">transition.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_44_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"type_8cpp.html\" target=\"_self\">type.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_45_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"type_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"type_8h.html\" target=\"_self\">type.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_46_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"ui_8cpp.html\" target=\"_self\">ui.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_47_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"ui_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"ui_8h.html\" target=\"_self\">ui.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_48_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"uid_8cpp.html\" target=\"_self\">uid.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_49_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"uid_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"uid_8h.html\" target=\"_self\">uid.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_50_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"value_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"value_8h.html\" target=\"_self\">value.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_51_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"worldcell_8cpp.html\" target=\"_self\">worldcell.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_4_52_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"worldcell_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"worldcell_8h.html\" target=\"_self\">worldcell.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_5_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_5_')\">&#9658;</span><span id=\"img_0_0_0_5_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_5_')\">&#160;</span><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\" target=\"_self\">physics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_5_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_5_0_')\">&#9658;</span><span id=\"img_0_0_0_5_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_5_0_')\">&#160;</span><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\" target=\"_self\">bullet</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"actions_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"actions_8h.html\" target=\"_self\">actions.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"bullet_8cpp.html\" target=\"_self\">bullet.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_0_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"debugdrawer_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"debugdrawer_8h.html\" target=\"_self\">debugdrawer.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"physics_2api_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"physics_2api_8h.html\" target=\"_self\">api.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"collisionmodel_8cpp.html\" target=\"_self\">collisionmodel.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"collisionmodel_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"collisionmodel_8h.html\" target=\"_self\">collisionmodel.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"collisionshape_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"collisionshape_8h.html\" target=\"_self\">collisionshape.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"physics_2physics_8cpp.html\" target=\"_self\">physics.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_5_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"physics_2physics_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"physics_2physics_8h.html\" target=\"_self\">physics.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_6_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_6_')\">&#9658;</span><span id=\"img_0_0_0_6_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_6_')\">&#160;</span><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\" target=\"_self\">platform</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_6_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_6_0_')\">&#9658;</span><span id=\"img_0_0_0_6_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_6_0_')\">&#160;</span><a class=\"el\" href=\"dir_25bfe7637bda9b4c8dc6e22485fc785f.html\" target=\"_self\">glfw</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"glfw_8cpp.html\" target=\"_self\">glfw.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_6_1_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_6_1_')\">&#9658;</span><span id=\"img_0_0_0_6_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_6_1_')\">&#160;</span><a class=\"el\" href=\"dir_cc4878aa85695f89f2ccbc192aae421c.html\" target=\"_self\">sdl</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"sdl_8cpp.html\" target=\"_self\">sdl.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"platform_2api_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"platform_2api_8h.html\" target=\"_self\">api.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"platform_2file_8cpp.html\" target=\"_self\">file.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"platform_2file_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"platform_2file_8h.html\" target=\"_self\">file.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"image_8cpp.html\" target=\"_self\">image.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"image_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"image_8h.html\" target=\"_self\">image.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"other_8cpp.html\" target=\"_self\">other.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"other_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"other_8h.html\" target=\"_self\">other.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"platform_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"platform_8h.html\" target=\"_self\">platform.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_6_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"utils_8cpp.html\" target=\"_self\">utils.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_7_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_7_')\">&#9658;</span><span id=\"img_0_0_0_7_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_7_')\">&#160;</span><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\" target=\"_self\">render</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_7_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_7_0_')\">&#9658;</span><span id=\"img_0_0_0_7_0_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_7_0_')\">&#160;</span><a class=\"el\" href=\"dir_bda26cb40acfb9f38f401dec877209b8.html\" target=\"_self\">direct3d</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"direct3d_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"direct3d_8h.html\" target=\"_self\">direct3d.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"direct3d_2renderer_8cpp.html\" target=\"_self\">renderer.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_7_1_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_7_1_')\">&#9658;</span><span id=\"img_0_0_0_7_1_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_7_1_')\">&#160;</span><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\" target=\"_self\">opengl</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"buffer_8cpp.html\" target=\"_self\">buffer.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"buffer_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"buffer_8h.html\" target=\"_self\">buffer.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"drawlist_8cpp.html\" target=\"_self\">drawlist.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"drawlist_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"drawlist_8h.html\" target=\"_self\">drawlist.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2opengl_2light_8cpp.html\" target=\"_self\">light.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"render_2opengl_2light_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2opengl_2light_8h.html\" target=\"_self\">light.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"opengl_2material_8cpp.html\" target=\"_self\">material.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"opengl_2material_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"opengl_2material_8h.html\" target=\"_self\">material.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"opengl_2renderer_8cpp.html\" target=\"_self\">renderer.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"opengl_2renderer_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"opengl_2renderer_8h.html\" target=\"_self\">renderer.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"shader_8cpp.html\" target=\"_self\">shader.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"shader_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"shader_8h.html\" target=\"_self\">shader.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2opengl_2sprite_8cpp.html\" target=\"_self\">sprite.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"render_2opengl_2sprite_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2opengl_2sprite_8h.html\" target=\"_self\">sprite.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"texture_8cpp.html\" target=\"_self\">texture.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_1_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"texture_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"texture_8h.html\" target=\"_self\">texture.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_7_2_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_7_2_')\">&#9658;</span><span id=\"img_0_0_0_7_2_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_7_2_')\">&#160;</span><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\" target=\"_self\">software</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"software_8cpp.html\" target=\"_self\">software.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_2_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:96px;display:inline-block;\">&#160;</span><a href=\"software_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"software_8h.html\" target=\"_self\">software.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2animation_8cpp.html\" target=\"_self\">animation.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"render_2animation_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2animation_8h.html\" target=\"_self\">animation.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"render_2api_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2api_8h.html\" target=\"_self\">api.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"error_8cpp.html\" target=\"_self\">error.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"error_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"error_8h.html\" target=\"_self\">error.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2light_8cpp.html\" target=\"_self\">light.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"render_2light_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2light_8h.html\" target=\"_self\">light.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"material_8cpp.html\" target=\"_self\">material.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"material_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"material_8h.html\" target=\"_self\">material.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"model_8cpp.html\" target=\"_self\">model.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"model_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"model_8h.html\" target=\"_self\">model.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2render_8cpp.html\" target=\"_self\">render.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"render_2render_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2render_8h.html\" target=\"_self\">render.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"renderer_8cpp.html\" target=\"_self\">renderer.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"renderer_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"renderer_8h.html\" target=\"_self\">renderer.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"scene_8cpp.html\" target=\"_self\">scene.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"scene_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"scene_8h.html\" target=\"_self\">scene.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"render_2sprite_8cpp.html\" target=\"_self\">sprite.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"render_2sprite_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"render_2sprite_8h.html\" target=\"_self\">sprite.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"vertices_8cpp.html\" target=\"_self\">vertices.cpp</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_7_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"vertices_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"vertices_8h.html\" target=\"_self\">vertices.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_0_8_\" class=\"arrow\" onclick=\"toggleFolder('0_0_0_8_')\">&#9658;</span><span id=\"img_0_0_0_8_\" class=\"iconfclosed\" onclick=\"toggleFolder('0_0_0_8_')\">&#160;</span><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\" target=\"_self\">templates</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"aabb_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"aabb_8h.html\" target=\"_self\">aabb.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"hashmap_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"hashmap_8h.html\" target=\"_self\">hashmap.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"macros_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"macros_8h.html\" target=\"_self\">macros.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"octree_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"octree_8h.html\" target=\"_self\">octree.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"pool_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"pool_8h.html\" target=\"_self\">pool.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"queue_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"queue_8h.html\" target=\"_self\">queue.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"spinlock_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"spinlock_8h.html\" target=\"_self\">spinlock.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"stack_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"stack_8h.html\" target=\"_self\">stack.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"stackpool_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"stackpool_8h.html\" target=\"_self\">stackpool.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_8_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><a href=\"test_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"test_8h.html\" target=\"_self\">test.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_9_\" class=\"even\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><a href=\"config_8h_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"config_8h.html\" target=\"_self\">config.h</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_0_0_10_\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icondoc\"></span><a class=\"el\" href=\"main_8cpp.html\" target=\"_self\">main.cpp</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/firstperson_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/firstperson.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">firstperson.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"firstperson_8h_source.html\">extensions/camera/firstperson.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:af85f9d24f3adcf1113b2c6425f8474ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac\">tram::Ext::Camera::TILT_SPEED</a> = 0.01f</td></tr>\n<tr class=\"separator:af85f9d24f3adcf1113b2c6425f8474ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ebbcf579061fce613ced15545380bee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee\">tram::Ext::Camera::BOB_CHANGE_SPEED</a> = 0.05f</td></tr>\n<tr class=\"separator:a9ebbcf579061fce613ced15545380bee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/firstperson_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/firstperson.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">firstperson.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n</div>\n<p><a href=\"firstperson_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/firstperson_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/firstperson.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">firstperson.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"firstperson_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"camera_8h.html\">extensions/camera/camera.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">   10</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">   12</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">FirstPersonCamera</a>() {}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">   13</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">~FirstPersonCamera</a>() {}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">Update</a> ();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">SetTilt</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tilt</a>);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">SetMouselook</a>(<span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">mouselook</a>);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">SetRotateFollowing</a>(<span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">rotate_following</a>);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">SetBobbing</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">bobbing_weight</a>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">SetBobbingDistance</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">bobbing_distance</a>);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">SetBobbingTilt</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">bobbing_tilt</a>);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">SetBobbingCallback</a>(<span class=\"keywordtype\">void</span> (*<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">bob_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a>*));</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">SetBobSpeed</a>(<span class=\"keywordtype\">float</span> speed);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">GetBob</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">GetWeight</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">   29</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">SetFollowingInterpolation</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a>) { this-&gt;following_interpolation = <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a>; }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">   30</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">SetFollowingOffset</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> offset) { this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">following_offset</a> = offset; }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">   33</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tilt</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">   34</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tilt_goal</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">   35</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tilt_last</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">   36</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">bob</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">   37</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">bobbing_weight_goal</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">   38</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">bobbing_weight</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">   39</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">bobbing_distance</a> = 0.2f;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">   40</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">bobbing_tilt_goal</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">   41</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">bobbing_tilt</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">   42</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">bob_speed</a> = 0.1f;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">   43</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">callback_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">   44</a></span>    void (*<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">bob_callback</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a>*) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">   46</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">mouselook</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">   47</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">rotate_following</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">   48</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">yaw</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">   49</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">pitch</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">   51</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">following_offset</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> (0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">   52</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">following_interpolation</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>};</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>}</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H</span></div>\n<div class=\"ttc\" id=\"acamera_8h_html\"><div class=\"ttname\"><a href=\"camera_8h.html\">camera.h</a></div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_camera_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">tram::Ext::Camera::Camera</a></div><div class=\"ttdoc\">Interface API for cameras.</div><div class=\"ttdef\"><b>Definition:</b> camera.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">tram::Ext::Camera::FirstPersonCamera</a></div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:10</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a01612b2beb8614c3602232f3313e143b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">tram::Ext::Camera::FirstPersonCamera::rotate_following</a></div><div class=\"ttdeci\">bool rotate_following</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a0b2dd1c3281e606b65cabb974583dcab\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">tram::Ext::Camera::FirstPersonCamera::SetFollowingInterpolation</a></div><div class=\"ttdeci\">void SetFollowingInterpolation(float following_interpolation)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a0cdf4f127893f1b3a00701b5de1cac0d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">tram::Ext::Camera::FirstPersonCamera::bobbing_tilt_goal</a></div><div class=\"ttdeci\">float bobbing_tilt_goal</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a25ab9c4939a27be11cb70b3d5adfda40\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">tram::Ext::Camera::FirstPersonCamera::SetFollowingOffset</a></div><div class=\"ttdeci\">void SetFollowingOffset(vec3 offset)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a264a29b441d6180743b3a59b7d14476f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">tram::Ext::Camera::FirstPersonCamera::SetTilt</a></div><div class=\"ttdeci\">void SetTilt(float tilt)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a34cc63ef60051ea61e79d460563d8806\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">tram::Ext::Camera::FirstPersonCamera::SetBobSpeed</a></div><div class=\"ttdeci\">void SetBobSpeed(float speed)</div><div class=\"ttdoc\">Sets the speed of the bobs during bobbing.</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a3f5112b4261174831aa1e4664fcfb503\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">tram::Ext::Camera::FirstPersonCamera::~FirstPersonCamera</a></div><div class=\"ttdeci\">~FirstPersonCamera()</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a44a70884e100d0b6a198b3ec588a68b6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">tram::Ext::Camera::FirstPersonCamera::pitch</a></div><div class=\"ttdeci\">float pitch</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a4fee900edc8986fbf21a110744bca1dc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">tram::Ext::Camera::FirstPersonCamera::bobbing_tilt</a></div><div class=\"ttdeci\">float bobbing_tilt</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a55e48a64290f4a40a6332c4536c6e194\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">tram::Ext::Camera::FirstPersonCamera::bobbing_distance</a></div><div class=\"ttdeci\">float bobbing_distance</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a647225bd7bd3d33fc1295b8e59945b1a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">tram::Ext::Camera::FirstPersonCamera::SetBobbingTilt</a></div><div class=\"ttdeci\">void SetBobbingTilt(float bobbing_tilt)</div><div class=\"ttdoc\">Sets the tilt bobbed during bobbing.</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a69082df187434d24ec21dbcafa93f2ec\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">tram::Ext::Camera::FirstPersonCamera::GetWeight</a></div><div class=\"ttdeci\">float GetWeight()</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a71b4981935bc58995e4ee9ffb2f6c573\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">tram::Ext::Camera::FirstPersonCamera::bob_speed</a></div><div class=\"ttdeci\">float bob_speed</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a77c42a4916c08b1a297720aff63a77c7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tram::Ext::Camera::FirstPersonCamera::tilt_last</a></div><div class=\"ttdeci\">float tilt_last</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a78e5e9c142141e83c4060ac83702e261\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">tram::Ext::Camera::FirstPersonCamera::callback_count</a></div><div class=\"ttdeci\">int callback_count</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a7e08632db39929c5d34f38709e5ea28f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">tram::Ext::Camera::FirstPersonCamera::bobbing_weight_goal</a></div><div class=\"ttdeci\">float bobbing_weight_goal</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a81a3ae850df9d192387b0a16e39fe160\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">tram::Ext::Camera::FirstPersonCamera::SetRotateFollowing</a></div><div class=\"ttdeci\">void SetRotateFollowing(bool rotate_following)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a939144795493647266dfed3c37f7964e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">tram::Ext::Camera::FirstPersonCamera::bob</a></div><div class=\"ttdeci\">float bob</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_a9c90b959c76be84f182e826b60f4d1bb\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">tram::Ext::Camera::FirstPersonCamera::SetBobbingCallback</a></div><div class=\"ttdeci\">void SetBobbingCallback(void(*bob_callback)(FirstPersonCamera *))</div><div class=\"ttdoc\">Sets the bobbing callback.</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_aa2a9d5accb0655fdb4185a73866bb13b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">tram::Ext::Camera::FirstPersonCamera::yaw</a></div><div class=\"ttdeci\">float yaw</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_aa5267817e3d8ad5268a7a7149586f624\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">tram::Ext::Camera::FirstPersonCamera::following_offset</a></div><div class=\"ttdeci\">vec3 following_offset</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_aa9a3d94e83b762fc15edbf7d3da266a0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tram::Ext::Camera::FirstPersonCamera::tilt_goal</a></div><div class=\"ttdeci\">float tilt_goal</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_ab0b6d243e23d1e3bab6897ca8c846b0e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">tram::Ext::Camera::FirstPersonCamera::FirstPersonCamera</a></div><div class=\"ttdeci\">FirstPersonCamera()</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_ab1b10331c68852d99dadeaba25aae16d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">tram::Ext::Camera::FirstPersonCamera::SetBobbingDistance</a></div><div class=\"ttdeci\">void SetBobbingDistance(float bobbing_distance)</div><div class=\"ttdoc\">Sets the distance bobbed during bobbing.</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_ab7853506fcff02e0836600d49dd6c302\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">tram::Ext::Camera::FirstPersonCamera::mouselook</a></div><div class=\"ttdeci\">bool mouselook</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_ade2f1910a021d9f4b2e836fa170f9f4a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">tram::Ext::Camera::FirstPersonCamera::SetMouselook</a></div><div class=\"ttdeci\">void SetMouselook(bool mouselook)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_ae4d02663d09577f0771f3c145e826ae2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">tram::Ext::Camera::FirstPersonCamera::bobbing_weight</a></div><div class=\"ttdeci\">float bobbing_weight</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_aefecd2a76d3631867157caa5ba9b7c9a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">tram::Ext::Camera::FirstPersonCamera::GetBob</a></div><div class=\"ttdeci\">float GetBob()</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_afa6a623662e232f8d979eb703d905834\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">tram::Ext::Camera::FirstPersonCamera::bob_callback</a></div><div class=\"ttdeci\">void(* bob_callback)(FirstPersonCamera *)</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_afb2ef9be0c07a1df11c53cf1a6d632fe\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">tram::Ext::Camera::FirstPersonCamera::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:82</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_afc061f0deae8ee4e0abc66d55544208b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">tram::Ext::Camera::FirstPersonCamera::following_interpolation</a></div><div class=\"ttdeci\">float following_interpolation</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_afc8754d53b7ba8698791378dbda72007\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">tram::Ext::Camera::FirstPersonCamera::SetBobbing</a></div><div class=\"ttdeci\">void SetBobbing(float bobbing_weight)</div><div class=\"ttdoc\">Sets the weight of the bobbing.</div><div class=\"ttdef\"><b>Definition:</b> firstperson.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_camera_1_1_first_person_camera_html_afdc06174463b8c44161f9f74f73fb81f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tram::Ext::Camera::FirstPersonCamera::tilt</a></div><div class=\"ttdeci\">float tilt</div><div class=\"ttdef\"><b>Definition:</b> firstperson.h:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></div><div class=\"ttdoc\">Several different camera implementations.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/following_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/following.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">following.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/following_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/following.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">following.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n</div>\n<p><a href=\"following_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/following_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/following.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">following.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"following_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"camera_8h.html\">extensions/camera/camera.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H</span></div>\n<div class=\"ttc\" id=\"acamera_8h_html\"><div class=\"ttname\"><a href=\"camera_8h.html\">camera.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></div><div class=\"ttdoc\">Several different camera implementations.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/fpscamera_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/fpscamera.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">fpscamera.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/fpscamera_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/fpscamera.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">fpscamera.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"fpscamera_8h_source.html\">Go to the source code of this file.</a></p>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/fpscamera_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/fpscamera.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">fpscamera.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"fpscamera_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"></div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2file_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/file.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">file.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">platform/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;charconv&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">tram::TextReaderParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">tram::TextWriterParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2file_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/file.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">file.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;string&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"framework_2file_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html\">tram::File</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Very fast file reader/writer.  <a href=\"classtram_1_1_file.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2file_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/file.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">file.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"framework_2file_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_platform_1_1_file_reader.html\">FileReader</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_platform_1_1_file_writer.html\">FileWriter</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">class </span>FileReaderParser;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">class </span>FileWriterParser;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html\">   18</a></span><span class=\"keyword\">class </span><a class=\"code hl_struct\" href=\"classtram_1_1_file.html\">File</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_function\" href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">File</a> (<span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">path</a>, uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">mode</a>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">~File</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">is_open</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">is_continue</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>            </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">write_int8</a>(int8_t value);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">write_int16</a>(int16_t value);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">write_int32</a>(int32_t value);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">write_int64</a>(int64_t value);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">write_uint8</a>(uint8_t value);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">write_uint16</a>(uint16_t value);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">write_uint32</a>(uint32_t value);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">write_uint64</a>(uint64_t value);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">write_float32</a>(<span class=\"keywordtype\">float</span> value);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">write_float64</a>(<span class=\"keywordtype\">double</span> value);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">write_name</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> value);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">write_string</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* value);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">write_newline</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    int8_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">read_int8</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    int16_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">read_int16</a>();</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    int32_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">read_int32</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    int64_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">read_int64</a>();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    uint8_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">read_uint8</a>();</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    uint16_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">read_uint16</a>();</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">read_uint32</a>();</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    uint64_t <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">read_uint64</a>();</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">read_float32</a>();</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">read_float64</a>();</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">read_name</a>();</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    std::string_view <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">read_string</a>();</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    std::string_view <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">read_token</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    std::string_view <a class=\"code hl_function\" href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">read_line</a>();</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">skip_linebreak</a>();</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">reset_flags</a>();</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">was_error</a>();</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">   66</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">AccessMode</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">   67</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">READ</a> = 1,       <span class=\"comment\">//&lt; Opens the file for reading.</span></div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">   68</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">WRITE</a> = 2,      <span class=\"comment\">//&lt; Opens the file for writing.</span></div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">   69</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">PAUSE_LINE</a> = 4, <span class=\"comment\">//&lt; Pauses the parsing on every linebreak.</span></div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">   70</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">TEXT</a> = 8,       <span class=\"comment\">//&lt; Opens file for reading/writing in whitespace seperated text format.</span></div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">BINARY</a> = 16     <span class=\"comment\">//&lt; Not implemented yet.</span></div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">   72</a></span>    };</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"comment\">// TODO: check whichever of these can be private and private them</span></div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">   76</a></span>    std::string <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">path</a>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">   77</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">mode</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">   79</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">pause_next</a>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">// cursors for writing</span></div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">   82</a></span>    <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">buffer</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">   83</a></span>    <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">buffer_cursor</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">   84</a></span>    <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">buffer_end</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">   88</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_file_reader.html\">FileReader</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">reader</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">   89</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_file_writer.html\">FileWriter</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">writer</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">   90</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">reader_parser</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">   91</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">writer_parser</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_FILE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html\">tram::File</a></div><div class=\"ttdoc\">Very fast file reader/writer.</div><div class=\"ttdef\"><b>Definition:</b> file.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a00a329e60e55d43c3df1159b5f36de18\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">tram::File::reader_parser</a></div><div class=\"ttdeci\">FileReaderParser * reader_parser</div><div class=\"ttdef\"><b>Definition:</b> file.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a039568453770acbc144c9fdce0f3fc68\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">tram::File::read_int8</a></div><div class=\"ttdeci\">int8_t read_int8()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:464</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a13e1dda97ae8a262ce9e28257c2aea1e\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">tram::File::reader</a></div><div class=\"ttdeci\">FileReader * reader</div><div class=\"ttdef\"><b>Definition:</b> file.h:88</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a14fa0ae7b7ebe485fddf204df95c905f\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">tram::File::was_error</a></div><div class=\"ttdeci\">bool was_error()</div><div class=\"ttdoc\">Checks if there has been an error.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:502</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a153f0eccaaaca9cacdb4bb082060bcbc\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">tram::File::read_uint32</a></div><div class=\"ttdeci\">uint32_t read_uint32()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:471</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a225dfcebd4c490f19388cfb7aca8e0a6\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">tram::File::read_int32</a></div><div class=\"ttdeci\">int32_t read_int32()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:466</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a3164abdb1966197ca2e9a6cd018770da\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">tram::File::write_int64</a></div><div class=\"ttdeci\">void write_int64(int64_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:447</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a35ac8b7f25c9644484adb16e6315ac13\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">tram::File::is_open</a></div><div class=\"ttdeci\">bool is_open()</div><div class=\"ttdoc\">Returns true if file was opened.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:419</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a384df5b223c9e0d2535a622e282a356e\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">tram::File::read_string</a></div><div class=\"ttdeci\">std::string_view read_string()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:479</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a3a53d60bca18a5afefa92a1ed1b70bd1\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">tram::File::writer_parser</a></div><div class=\"ttdeci\">FileWriterParser * writer_parser</div><div class=\"ttdef\"><b>Definition:</b> file.h:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a3d25cbe667ab658dbaea6655a6321782\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">tram::File::path</a></div><div class=\"ttdeci\">std::string path</div><div class=\"ttdef\"><b>Definition:</b> file.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a3ec500f5f4c888093fdb6d93568fe9f3\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">tram::File::write_name</a></div><div class=\"ttdeci\">void write_name(name_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:457</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a48c7cadf209801e17f3cc2f7b3bb877e\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">tram::File::read_uint64</a></div><div class=\"ttdeci\">uint64_t read_uint64()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:472</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a49b122601c017e1964144c23cbe290fd\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">tram::File::read_float32</a></div><div class=\"ttdeci\">float read_float32()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:474</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a49ba33b0139ddde95daf7f88adbeca79\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">tram::File::read_token</a></div><div class=\"ttdeci\">std::string_view read_token()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:478</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a4b74a4d3fee7a6b42781d13b4c09c0bf\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">tram::File::buffer</a></div><div class=\"ttdeci\">char * buffer</div><div class=\"ttdef\"><b>Definition:</b> file.h:82</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a4f4075e222dd524d4132b616225d191d\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">tram::File::read_uint8</a></div><div class=\"ttdeci\">uint8_t read_uint8()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:469</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a52e71d6324ee7624dee122a59523001c\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">tram::File::write_float64</a></div><div class=\"ttdeci\">void write_float64(double value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:455</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a56ca0eb625c5fcef16158a9f107f8a1f\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">tram::File::write_int16</a></div><div class=\"ttdeci\">void write_int16(int16_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:445</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a56f8b809eeff67f9d5ed18580d8fe857\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">tram::File::~File</a></div><div class=\"ttdeci\">~File()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:408</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a5b6f66dee66294cd7095cb4bc4a3a265\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">tram::File::pause_next</a></div><div class=\"ttdeci\">bool pause_next</div><div class=\"ttdef\"><b>Definition:</b> file.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a5c4dc235347eed3842168ad548d1d5a6\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">tram::File::reset_flags</a></div><div class=\"ttdeci\">void reset_flags()</div><div class=\"ttdoc\">Resets the error flag.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:491</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a5d7ea9f1ad7cb867061aea6a4ed1b89d\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">tram::File::read_int16</a></div><div class=\"ttdeci\">int16_t read_int16()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:465</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a5dfaae97d414184a8999f401fe07b01f\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">tram::File::buffer_end</a></div><div class=\"ttdeci\">char * buffer_end</div><div class=\"ttdef\"><b>Definition:</b> file.h:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a613cfcd9ed88d5edacd33b345ddaa558\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">tram::File::is_continue</a></div><div class=\"ttdeci\">bool is_continue()</div><div class=\"ttdoc\">Returns true if file parser has not reached end.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:432</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a64635a9d28e30c7300d6a7459302d723\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">tram::File::read_uint16</a></div><div class=\"ttdeci\">uint16_t read_uint16()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:470</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a7c2767ad1dfe1bc5d644f1a255ba9875\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">tram::File::write_newline</a></div><div class=\"ttdeci\">void write_newline()</div><div class=\"ttdoc\">Writes a newline to the file.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:462</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a89b2859ed0ef1b7d66c5a4d9a2d536b2\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">tram::File::write_int8</a></div><div class=\"ttdeci\">void write_int8(int8_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:444</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a912eac8b041a22b2468d4fc2ae2ffbfb\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">tram::File::write_int32</a></div><div class=\"ttdeci\">void write_int32(int32_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:446</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_a968e1d9420146f006a7c4868a8978ec5\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">tram::File::write_uint32</a></div><div class=\"ttdeci\">void write_uint32(uint32_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:451</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_aa4875014953235da2776dac766558fad\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">tram::File::buffer_cursor</a></div><div class=\"ttdeci\">char * buffer_cursor</div><div class=\"ttdef\"><b>Definition:</b> file.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_aaa1c1eca4e5feb35b576da5533408b17\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">tram::File::read_line</a></div><div class=\"ttdeci\">std::string_view read_line()</div><div class=\"ttdoc\">Parses off the remaining line.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:482</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_aaef1b401396e62884686b4773b9e5f6e\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">tram::File::write_uint16</a></div><div class=\"ttdeci\">void write_uint16(uint16_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:450</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab1b5812649adfd4ed0b16998c08beed6\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">tram::File::File</a></div><div class=\"ttdeci\">File(char const *path, uint32_t mode)</div><div class=\"ttdoc\">Opens a file.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:380</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">tram::File::AccessMode</a></div><div class=\"ttdeci\">AccessMode</div><div class=\"ttdef\"><b>Definition:</b> file.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">tram::File::PAUSE_LINE</a></div><div class=\"ttdeci\">@ PAUSE_LINE</div><div class=\"ttdef\"><b>Definition:</b> file.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">tram::File::BINARY</a></div><div class=\"ttdeci\">@ BINARY</div><div class=\"ttdef\"><b>Definition:</b> file.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">tram::File::WRITE</a></div><div class=\"ttdeci\">@ WRITE</div><div class=\"ttdef\"><b>Definition:</b> file.h:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">tram::File::READ</a></div><div class=\"ttdeci\">@ READ</div><div class=\"ttdef\"><b>Definition:</b> file.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">tram::File::TEXT</a></div><div class=\"ttdeci\">@ TEXT</div><div class=\"ttdef\"><b>Definition:</b> file.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ab5086d2c4a3d374fbf26241e6c14c64f\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">tram::File::skip_linebreak</a></div><div class=\"ttdeci\">void skip_linebreak()</div><div class=\"ttdoc\">Skips over a linebreak.</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:488</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_abfb1b5c29a40ddbada1f8c01b9c7143e\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">tram::File::write_uint64</a></div><div class=\"ttdeci\">void write_uint64(uint64_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:452</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ac11afdd957e7a113e25c101eea4ac241\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">tram::File::read_float64</a></div><div class=\"ttdeci\">double read_float64()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:475</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ac8b334b12d808c3bb28ebb92cc8db2d5\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">tram::File::write_uint8</a></div><div class=\"ttdeci\">void write_uint8(uint8_t value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:449</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_aca554d85c9430ee8d39ddb16c41e72e3\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">tram::File::read_name</a></div><div class=\"ttdeci\">name_t read_name()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:477</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_acc94c6e5b903c64232ac97079038db91\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">tram::File::write_string</a></div><div class=\"ttdeci\">void write_string(const char *value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:458</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_acd6ce0e7642fe94f378dc8a749efdcb9\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">tram::File::mode</a></div><div class=\"ttdeci\">uint32_t mode</div><div class=\"ttdef\"><b>Definition:</b> file.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ad37a6a76adf4fd5db765e860a9a20bcf\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">tram::File::write_float32</a></div><div class=\"ttdeci\">void write_float32(float value)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:454</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_ae80f51acbe4f7c016309d1525b00e25a\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">tram::File::writer</a></div><div class=\"ttdeci\">FileWriter * writer</div><div class=\"ttdef\"><b>Definition:</b> file.h:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_html_af10fb5448d6e77230bdc268d328c0857\"><div class=\"ttname\"><a href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">tram::File::read_int64</a></div><div class=\"ttdeci\">int64_t read_int64()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:467</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></div><div class=\"ttdef\"><b>Definition:</b> file.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_parser_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader_parser.html\">tram::FileReaderParser</a></div><div class=\"ttdef\"><b>Definition:</b> file.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></div><div class=\"ttdef\"><b>Definition:</b> file.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_parser_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer_parser.html\">tram::FileWriterParser</a></div><div class=\"ttdef\"><b>Definition:</b> file.cpp:277</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_platform_1_1_file_reader_html\"><div class=\"ttname\"><a href=\"classtram_1_1_platform_1_1_file_reader.html\">FileReader</a></div><div class=\"ttdoc\">File reading backend API.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_platform_1_1_file_writer_html\"><div class=\"ttname\"><a href=\"classtram_1_1_platform_1_1_file_writer.html\">FileWriter</a></div><div class=\"ttdoc\">File writing backend API.</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2graph_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">graph.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"framework_2graph_8h_source.html\">framework/graph.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2graph_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">graph.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"framework_2graph_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_edge.html\">tram::Edge</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_node.html\">tram::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2graph_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">graph.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"framework_2graph_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html\">   11</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_edge.html\">Edge</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">   12</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">from</a>;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">   13</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">to</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>};</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html\">   16</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">   17</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">position</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">   18</a></span>    std::vector&lt;uint32_t&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html\">   21</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_graph.html\">Graph</a> {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">   23</a></span>    std::vector&lt;Node&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">   24</a></span>    std::vector&lt;Edge&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>};</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>}</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html\">tram::Graph</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html_a4c1e9f785fe9ac3fe2665d073f2a6722\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">tram::Graph::edges</a></div><div class=\"ttdeci\">std::vector&lt; Edge &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> graph.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html_a95178b1e2898a6f4ba58c8b72aa2873d\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">tram::Graph::nodes</a></div><div class=\"ttdeci\">std::vector&lt; Node &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> graph.h:23</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html\">tram::Edge</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html_a3b4b8a5653bb798802c9319ed8374cee\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">tram::Edge::to</a></div><div class=\"ttdeci\">uint32_t to</div><div class=\"ttdef\"><b>Definition:</b> graph.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html_ad6343a5ac259ec2941d5aabd5a06908e\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">tram::Edge::from</a></div><div class=\"ttdeci\">uint32_t from</div><div class=\"ttdef\"><b>Definition:</b> graph.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html\">tram::Node</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html_a189f24e56e385fcf1e9ff4b4b40c7b7a\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">tram::Node::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> graph.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html_a28d12d5232b5f9651565664e0eae3cce\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">tram::Node::edges</a></div><div class=\"ttdeci\">std::vector&lt; uint32_t &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> graph.h:18</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2script_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2script_8h_source.html\">entities/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">physics/collisionshape.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionmodel_8h_source.html\">physics/collisionmodel.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_script\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">tram::Script</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_script\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scripting API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a> (name_t name, value_t value)</td></tr>\n<tr class=\"separator:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a> (name_t name)</td></tr>\n<tr class=\"separator:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446f2631dceec969ceccee5841e8e019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a> (name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</td></tr>\n<tr class=\"separator:a446f2631dceec969ceccee5841e8e019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a> (name_t name, std::vector&lt; Value &gt; parameters)</td></tr>\n<tr class=\"separator:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">tram::Script::Evaluate</a> (const char *code)</td></tr>\n<tr class=\"separator:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66379be86f633359248ee30b1d7b073\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">tram::Script::SetInterface</a> (Interface *new_language)</td></tr>\n<tr class=\"separator:ad66379be86f633359248ee30b1d7b073\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a> (const char *path)</td></tr>\n<tr class=\"separator:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a> ()</td></tr>\n<tr class=\"separator:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2script_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"framework_2script_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_script\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">tram::Script</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_script\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scripting API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a> (name_t name, value_t value)</td></tr>\n<tr class=\"separator:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a> (name_t name)</td></tr>\n<tr class=\"separator:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446f2631dceec969ceccee5841e8e019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a> (name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</td></tr>\n<tr class=\"separator:a446f2631dceec969ceccee5841e8e019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a> (name_t name, std::vector&lt; Value &gt; parameters)</td></tr>\n<tr class=\"separator:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">tram::Script::Evaluate</a> (const char *code)</td></tr>\n<tr class=\"separator:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66379be86f633359248ee30b1d7b073\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">tram::Script::SetInterface</a> (Interface *new_language)</td></tr>\n<tr class=\"separator:ad66379be86f633359248ee30b1d7b073\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a> (const char *path)</td></tr>\n<tr class=\"separator:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a> ()</td></tr>\n<tr class=\"separator:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2script_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">script.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"framework_2script_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_script.html\">tram::Script</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">SetGlobal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value);</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">GetGlobal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">SetFunction</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt;Type&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> (*<span class=\"keyword\">function</span>)(<a class=\"code hl_typedef\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>));</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">CallFunction</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt;Value&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>);</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">Evaluate</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* code);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">   19</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">GetName</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">   20</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">GetGlobal</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name) = 0;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">   21</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">SetGlobal</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> value) = 0;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">   22</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">SetFunction</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, std::vector&lt;Type&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> (*<span class=\"keyword\">function</span>)(<a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">valuearray_t</a>)) = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">   23</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">CallFunction</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, std::vector&lt;Value&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>) = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">   25</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">LoadScript</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path) = 0;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">   26</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">Evaluate</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* code) = 0;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">SetInterface</a>(<a class=\"code hl_class\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a>* language);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">LoadScript</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html\">tram::Script::Interface</a></div><div class=\"ttdef\"><b>Definition:</b> script.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_a133e2307fda40c3d2ab284e809a0f434\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">tram::Script::Interface::LoadScript</a></div><div class=\"ttdeci\">virtual void LoadScript(const char *path)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_a5aba7adedc8003e03a2cb0d161b9faed\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">tram::Script::Interface::CallFunction</a></div><div class=\"ttdeci\">virtual value_t CallFunction(name_t name, std::vector&lt; Value &gt; parameters)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_a7265800ebc35b2221b25a4ba843b0697\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">tram::Script::Interface::GetGlobal</a></div><div class=\"ttdeci\">virtual value_t GetGlobal(name_t name)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_a7a41316c12ef797af3cd9fe6cc89bbbe\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">tram::Script::Interface::GetName</a></div><div class=\"ttdeci\">virtual name_t GetName()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_ac3540126716b8a6a8675cf859ab8152b\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">tram::Script::Interface::SetGlobal</a></div><div class=\"ttdeci\">virtual void SetGlobal(name_t name, value_t value)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_ae8cde55720004d7319685163a092ca4a\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">tram::Script::Interface::Evaluate</a></div><div class=\"ttdeci\">virtual value_t Evaluate(const char *code)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_script_1_1_interface_html_aee03e2ec9682ab4d801bed9eaf53f703\"><div class=\"ttname\"><a href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">tram::Script::Interface::SetFunction</a></div><div class=\"ttdeci\">virtual void SetFunction(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a63ffedf8d40f57cc6c53d9f617b1fcc5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">tram::Ext::Scripting::Lua::parameters</a></div><div class=\"ttdeci\">std::vector&lt; Type &gt; parameters</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:155</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html\">tram::Script</a></div><div class=\"ttdoc\">Scripting API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a3052ee4f8a5d4cba402b9342e3a7b0a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a></div><div class=\"ttdeci\">void SetGlobal(name_t name, value_t value)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a3df9d0d4778b39ca7c95328ae4fd5a22\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:86</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a446f2631dceec969ceccee5841e8e019\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a></div><div class=\"ttdeci\">void SetFunction(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:56</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a658aaf0911ed091e1f6566375fc45142\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">tram::Script::Evaluate</a></div><div class=\"ttdeci\">value_t Evaluate(const char *code)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:64</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a917b2fc2737b5d72d66ce869fad40b2a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a></div><div class=\"ttdeci\">value_t GetGlobal(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:52</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_aadbf03d624e136dc8f25ab15c15e9f1a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a></div><div class=\"ttdeci\">void LoadScript(const char *path)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:82</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_ad66379be86f633359248ee30b1d7b073\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">tram::Script::SetInterface</a></div><div class=\"ttdeci\">void SetInterface(Interface *new_language)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:78</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_af8e8489ae939b80cca8c7b220c230447\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a></div><div class=\"ttdeci\">value_t CallFunction(name_t name, std::vector&lt; Value &gt; parameters)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7d506d80abf93dd017a92dbcb169f9c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></div><div class=\"ttdeci\">Value value_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9a399a2754b52b60de20e936546d0637\"><div class=\"ttname\"><a href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></div><div class=\"ttdeci\">ValueArray valuearray_t</div><div class=\"ttdef\"><b>Definition:</b> value.h:325</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2system_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;cassert&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_system\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">tram::System</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_system\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a> (char const *name, char const *short_name)</td></tr>\n<tr class=\"memdesc:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new system.  <a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">More...</a><br /></td></tr>\n<tr class=\"separator:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">tram::System::Find</a> (char const *name)</td></tr>\n<tr class=\"memdesc:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a registered system.  <a href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">More...</a><br /></td></tr>\n<tr class=\"separator:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the full name of a system.  <a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:aa9b274cc4e89cca2157eae886db07355\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the short name of a system.  <a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a268bed781cdfb281916c2475f969b55d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a> (uint32_t system, bool is_initialized)</td></tr>\n<tr class=\"memdesc:a268bed781cdfb281916c2475f969b55d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the initialization status of a system.  <a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">More...</a><br /></td></tr>\n<tr class=\"separator:a268bed781cdfb281916c2475f969b55d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is initialized.  <a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">tram::System::SetState</a> (system_t system, SystemState state)</td></tr>\n<tr class=\"memdesc:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the state of a system.  <a href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">tram::System::AssertDependency</a> (system_t system)</td></tr>\n<tr class=\"separator:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a> ()</td></tr>\n<tr class=\"memdesc:a338ea827ae004b8133debac8bb1428a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the total count of registered systems.  <a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2system_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"framework_2system_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_system\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">tram::System</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_system\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></td></tr>\n<tr class=\"separator:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System::System</a> : system_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">tram::System::INVALID</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">tram::System::CORE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">tram::System::PLATFORM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">tram::System::UI</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">tram::System::GUI</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">tram::System::ASYNC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">tram::System::RENDER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">tram::System::PHYSICS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">tram::System::AUDIO</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">tram::System::MISC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System::SYSTEM_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4703b937891576671c79a6d02a63c0a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">tram::System::SystemState</a> { <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">tram::System::YEET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">tram::System::INIT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">tram::System::READY</a>\n }</td></tr>\n<tr class=\"separator:a4703b937891576671c79a6d02a63c0a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a> (char const *name, char const *short_name)</td></tr>\n<tr class=\"memdesc:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new system.  <a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">More...</a><br /></td></tr>\n<tr class=\"separator:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">tram::System::Find</a> (char const *name)</td></tr>\n<tr class=\"memdesc:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a registered system.  <a href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">More...</a><br /></td></tr>\n<tr class=\"separator:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a268bed781cdfb281916c2475f969b55d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a> (uint32_t system, bool is_initialized)</td></tr>\n<tr class=\"memdesc:a268bed781cdfb281916c2475f969b55d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the initialization status of a system.  <a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">More...</a><br /></td></tr>\n<tr class=\"separator:a268bed781cdfb281916c2475f969b55d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is initialized.  <a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">tram::System::SetState</a> (system_t system, SystemState state)</td></tr>\n<tr class=\"memdesc:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the state of a system.  <a href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">tram::System::AssertDependency</a> (system_t system)</td></tr>\n<tr class=\"separator:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the full name of a system.  <a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:aa9b274cc4e89cca2157eae886db07355\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the short name of a system.  <a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a> ()</td></tr>\n<tr class=\"memdesc:a338ea827ae004b8133debac8bb1428a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the total count of registered systems.  <a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/framework_2system_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">system.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"framework_2system_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_system.html\">tram::System</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">   10</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">System</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">INVALID</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">CORE</a>,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">PLATFORM</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">UI</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">GUI</a>,</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">ASYNC</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">RENDER</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">PHYSICS</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">AUDIO</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">MISC</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">SYSTEM_LAST</a></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">   24</a></span>};</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">   26</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a> {</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">YEET</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">   28</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">INIT</a>,</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">READY</a></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">   30</a></span>};</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">Register</a>(<span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* name, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* short_name);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">Find</a>(<span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* name);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">SetInitialized</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system, <span class=\"keywordtype\">bool</span> is_initialized);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">IsInitialized</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">SetState</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a> state); </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">AssertDependency</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">GetName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">GetShortName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">GetSystemCount</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>}</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html\">tram::System</a></div><div class=\"ttdoc\">System tracking.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System::System</a></div><div class=\"ttdeci\">System</div><div class=\"ttdef\"><b>Definition:</b> system.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">tram::System::RENDER</a></div><div class=\"ttdeci\">@ RENDER</div><div class=\"ttdef\"><b>Definition:</b> system.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System::SYSTEM_LAST</a></div><div class=\"ttdeci\">@ SYSTEM_LAST</div><div class=\"ttdef\"><b>Definition:</b> system.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">tram::System::GUI</a></div><div class=\"ttdeci\">@ GUI</div><div class=\"ttdef\"><b>Definition:</b> system.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">tram::System::ASYNC</a></div><div class=\"ttdeci\">@ ASYNC</div><div class=\"ttdef\"><b>Definition:</b> system.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">tram::System::PLATFORM</a></div><div class=\"ttdeci\">@ PLATFORM</div><div class=\"ttdef\"><b>Definition:</b> system.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">tram::System::AUDIO</a></div><div class=\"ttdeci\">@ AUDIO</div><div class=\"ttdef\"><b>Definition:</b> system.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">tram::System::MISC</a></div><div class=\"ttdeci\">@ MISC</div><div class=\"ttdef\"><b>Definition:</b> system.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">tram::System::INVALID</a></div><div class=\"ttdeci\">@ INVALID</div><div class=\"ttdef\"><b>Definition:</b> system.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">tram::System::UI</a></div><div class=\"ttdeci\">@ UI</div><div class=\"ttdef\"><b>Definition:</b> system.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">tram::System::CORE</a></div><div class=\"ttdeci\">@ CORE</div><div class=\"ttdef\"><b>Definition:</b> system.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">tram::System::PHYSICS</a></div><div class=\"ttdeci\">@ PHYSICS</div><div class=\"ttdef\"><b>Definition:</b> system.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a1c1f26d92502016519f4a147cdc0fbc2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a></div><div class=\"ttdeci\">bool IsInitialized(uint32_t system)</div><div class=\"ttdoc\">Checks if a system is initialized.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:133</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a268bed781cdfb281916c2475f969b55d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a></div><div class=\"ttdeci\">void SetInitialized(uint32_t system, bool is_initialized)</div><div class=\"ttdoc\">Sets the initialization status of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:125</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a2ca63f47f3cfdfd0eb183d46b36f9701\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a></div><div class=\"ttdeci\">char const * GetName(uint32_t system)</div><div class=\"ttdoc\">Retrieves the full name of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:109</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a338ea827ae004b8133debac8bb1428a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a></div><div class=\"ttdeci\">system_t GetSystemCount()</div><div class=\"ttdoc\">Returns the total count of registered systems.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:184</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a3480b59cb32a6f70ad1fce1626b64e40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></div><div class=\"ttdeci\">uint32_t system_t</div><div class=\"ttdef\"><b>Definition:</b> system.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a3b2b06b04a927a1cbb754d1054130ddb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">tram::System::SetState</a></div><div class=\"ttdeci\">void SetState(system_t system, SystemState state)</div><div class=\"ttdoc\">Sets the state of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:145</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a4703b937891576671c79a6d02a63c0a2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">tram::System::SystemState</a></div><div class=\"ttdeci\">SystemState</div><div class=\"ttdef\"><b>Definition:</b> system.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">tram::System::YEET</a></div><div class=\"ttdeci\">@ YEET</div><div class=\"ttdef\"><b>Definition:</b> system.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">tram::System::INIT</a></div><div class=\"ttdeci\">@ INIT</div><div class=\"ttdef\"><b>Definition:</b> system.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">tram::System::READY</a></div><div class=\"ttdeci\">@ READY</div><div class=\"ttdef\"><b>Definition:</b> system.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a80685c0799c2a0af7c493bfaf7de86de\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">tram::System::Find</a></div><div class=\"ttdeci\">system_t Find(char const *name)</div><div class=\"ttdoc\">Registers a registered system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:98</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_aa9b274cc4e89cca2157eae886db07355\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a></div><div class=\"ttdeci\">char const * GetShortName(uint32_t system)</div><div class=\"ttdoc\">Retrieves the short name of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:117</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_ae343978bd8ac9ddbc48dbffa5aea2f49\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">tram::System::AssertDependency</a></div><div class=\"ttdeci\">void AssertDependency(system_t system)</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:154</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_aee7d79683193e5c01dab72b3bd84e710\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a></div><div class=\"ttdeci\">uint32_t Register(char const *name, char const *short_name)</div><div class=\"ttdoc\">Registers a new system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:55</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>aabb_max&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">tram::Render::Model</a></li>\n<li>aabb_min&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">tram::Render::Model</a></li>\n<li>aabb_tree_leaf&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">tram::RenderComponent</a></li>\n<li>AABBDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">tram::AABBTree</a></li>\n<li>AABBIntersect()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">tram::AABBTree</a></li>\n<li>AABBOverlap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">tram::AABBTree</a></li>\n<li>AABBSurface()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">tram::AABBTree</a></li>\n<li>AABBTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">tram::AABBTree</a></li>\n<li>AABBVolume()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">tram::AABBTree</a></li>\n<li>abbrv&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">_test_case</a></li>\n<li>AccessMode&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">tram::File</a></li>\n<li>action&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41\">tram::UI::KeyBinding</a></li>\n<li>ACTIVATE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">tram::Signal</a></li>\n<li>Activate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">tram::Trigger</a></li>\n<li>ACTIVATE_ONCE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">tram::Message</a></li>\n<li>Add()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">tram::SignalTable</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">tram::WorldCell</a></li>\n<li>AddBaseClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>AddCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">tram::Ext::Kitchensink::Faction</a></li>\n<li>AddClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">tram::Ext::Kitchensink::Character</a></li>\n<li>AddFaction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>AddItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>AddLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">tram::Octree&lt; T &gt;</a></li>\n<li>AddListener()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">tram::Event</a></li>\n<li>AddNew()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">tram::StackPool&lt; T &gt;</a></li>\n<li>AddPoint()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">tram::Transition</a></li>\n<li>AddReference()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">tram::Resource</a></li>\n<li>addSingleResult()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f\">tram::Physics::API::ShapecastCallback</a></li>\n<li>AddSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>AddState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>AddStateSpace()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>AddTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>Advance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">tram::PathFollower</a></li>\n<li>affected_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>age&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">tram::ParticleComponent::Particle</a></li>\n<li>air_velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">tram::RaycastControllerComponent</a></li>\n<li>al_buffer_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">tram::Audio::audiobuffer_t</a></li>\n<li>al_buffers&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">tram::Audio::audiobuffer_t</a></li>\n<li>al_source&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">tram::Audio::audiosource_t</a></li>\n<li>allocate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">tram::StackPool&lt; T &gt;</a></li>\n<li>allocated_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">tram::StackPool&lt; T &gt;</a></li>\n<li>allocated_vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246\">tram::Render::API::VertexBufferMetadata</a></li>\n<li>AllocateData()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d\">tram::Message</a></li>\n<li>ambient_color&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6\">tram::Render::API::LayerParameters</a></li>\n<li>ambientColor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>And()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>anim_bframe&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">tram::SpriteComponent</a></li>\n<li>ANIM_COUNT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">tram::AnimationComponent</a></li>\n<li>anim_finish_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">tram::AnimationComponent</a></li>\n<li>anim_frame&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">tram::SpriteComponent</a></li>\n<li>anim_info&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">tram::AnimationComponent</a></li>\n<li>anim_isplaying&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">tram::SpriteComponent</a></li>\n<li>anim_playing&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">tram::AnimationComponent</a></li>\n<li>anim_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">tram::SpriteComponent</a></li>\n<li>animation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">tram::Decoration</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>Animation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">tram::Render::Animation</a></li>\n<li>AnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">tram::AnimationComponent</a></li>\n<li>animationcomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">tram::Decoration</a></li>\n<li>AnimationTable&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>answer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>ApplyDynamics()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">tram::RaycastControllerComponent</a></li>\n<li>ApplyEffect()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>approx_vram_usage&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">tram::Render::Model</a></li>\n<li>armature&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">tram::Render::Model</a></li>\n<li>armature_bone_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">tram::AnimationComponent</a></li>\n<li>armature_bone_parents&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">tram::AnimationComponent</a></li>\n<li>armature_bones&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">tram::AnimationComponent</a></li>\n<li>arrival_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>AssertType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">tram::Value</a></li>\n<li>Async::FinishResources&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02\">tram::EntityComponent</a></li>\n<li>attribute&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08\">tram::Ext::Kitchensink::InitialAttribute</a></li>\n<li>attribute_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">tram::Render::VertexDefinition</a></li>\n<li>attributes&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">tram::Render::VertexDefinition</a></li>\n<li>audio&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">tram::Sound</a></li>\n<li>AudioComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">tram::AudioComponent</a></li>\n<li>AUTOMATIC_LOADING&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">tram::WorldCell</a></li>\n<li>available_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">tram::StackPool&lt; T &gt;</a></li>\n<li>average_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3\">tram::Stats::SystemStat</a></li>\n<li>Awaken()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">tram::PhysicsComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>back()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">tram::Queue&lt; T &gt;</a></li>\n<li>barycentric&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a\">tram::Render::API::ClipPoint</a></li>\n<li>base_attributes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_class&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>base_classes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_factions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_pose&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">tram::AnimationComponent</a></li>\n<li>base_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>base_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>begin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7\">tram::Render::API::Scanline</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">tram::StackPool&lt; T &gt;</a></li>\n<li>begin_adv&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5\">tram::Render::API::Scanline</a></li>\n<li>begin_p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16\">tram::Render::API::Scanline</a></li>\n<li>begin_p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334\">tram::Render::API::Scanline</a></li>\n<li>BINARY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">tram::File</a></li>\n<li>binding_action&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>binding_state_ready&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>BindUniformBlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0\">tram::Render::API::LinkedShader</a></li>\n<li>bob&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bob_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bob_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_distance&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_tilt&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_tilt_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_weight&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_weight_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bone&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">tram::Render::KeyframeHeader</a></li>\n<li>bone_index&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468\">tram::Render::API::FVFHelper</a></li>\n<li>bone_weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022\">tram::Render::API::FVFHelper</a></li>\n<li>boneweight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">tram::Render::DynamicModelVertex</a></li>\n<li>bool32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa\">tram::Settings::SettingInfo</a></li>\n<li>bool_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">tram::ValuePtr</a></li>\n<li>bool_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">tram::Value</a></li>\n<li>border_h&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">tram::Render::SpriteFrame</a></li>\n<li>border_v&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">tram::Render::SpriteFrame</a></li>\n<li>Box()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">tram::Physics::CollisionShape</a></li>\n<li>Breakable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">tram::Ext::Kitchensink::Breakable</a></li>\n<li>bt_collisionshape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">tram::Physics::trigger_t</a></li>\n<li>bt_metadata&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">tram::Physics::rigidbody_t</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">tram::Physics::trigger_t</a></li>\n<li>bt_rigidbody&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">tram::Physics::rigidbody_t</a></li>\n<li>bt_shape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">tram::Physics::collisionshape_t</a></li>\n<li>bucket&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8\">tram::Render::BucketMapping</a></li>\n<li>buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">tram::File</a></li>\n<li>buffer_cursor&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">tram::File</a></li>\n<li>buffer_end&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">tram::File</a></li>\n<li>Button()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">tram::Ext::Kitchensink::Button</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CalcSortKey()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">tram::Render::API::GLDrawListEntry</a></li>\n<li>callback&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5\">tram::Async::ResourceRequest</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">tram::Ext::Menu::ListSelection</a></li>\n<li>callback_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>callback_data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea\">tram::Async::ResourceRequest</a></li>\n<li>CallbackMotionState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05\">tram::Physics::API::CallbackMotionState</a></li>\n<li>CallFunction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">tram::Script::Interface</a></li>\n<li>Capsule()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">tram::Physics::CollisionShape</a></li>\n<li>cell&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>cell_into&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">tram::Transition</a></li>\n<li>center&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">tram::Render::SpritePoint</a></li>\n<li>channels&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">tram::Audio::Sound</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">tram::Audio::Spatial::AudioBuffer</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">tram::Render::Material</a></li>\n<li>character&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">tram::Ext::Kitchensink::CharacterDisposition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">tram::Ext::Kitchensink::FactionRank</a></li>\n<li>character_class&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">tram::Ext::Kitchensink::Character</a></li>\n<li>CheckTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">tram::Entity</a></li>\n<li>children&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af\">tram::Ext::Kitchensink::EntityChildren</a></li>\n<li>clear()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">tram::EventListener</a></li>\n<li>Clear()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>clear&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></li>\n<li>Clear()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">tram::Ext::Menu::Menu</a></li>\n<li>ClearOverride()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>CLOSE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">tram::Signal</a></li>\n<li>co&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">tram::Render::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">tram::Render::StaticModelVertex</a></li>\n<li>col&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c\">tram::Render::API::ColorVertex</a></li>\n<li>collide&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">tram::ControllerComponent</a></li>\n<li>collider&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">tram::Physics::Collision</a></li>\n<li>Collision()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">tram::TriggerComponent</a></li>\n<li>collision_callback&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_group&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">tram::RaycastControllerComponent</a></li>\n<li>collision_height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">tram::RaycastControllerComponent</a></li>\n<li>collision_height_crouch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">tram::FPSControllerComponent</a></li>\n<li>collision_mask&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0\">tram::Physics::API::ShapecastCallback</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">tram::Trigger</a></li>\n<li>collision_width&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">tram::RaycastControllerComponent</a></li>\n<li>CollisionModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">tram::Physics::CollisionModel</a></li>\n<li>collisions&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8\">tram::Physics::API::ShapecastCallback</a></li>\n<li>collmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">tram::Ext::Kitchensink::Water</a></li>\n<li>color&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">tram::Render::LineVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">tram::RenderComponent</a></li>\n<li>colors&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>comparison&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>compartment&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>compartments&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Component()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">tram::Component&lt; T &gt;</a></li>\n<li>component&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf\">tram::ListenerInfo</a></li>\n<li>condition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>Cone()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">tram::Physics::CollisionShape</a></li>\n<li>Console()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">tram::Ext::Menu::Console</a></li>\n<li>constants&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">tram::Render::LightGraph::Node</a></li>\n<li>constr_func&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>constructor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f\">tram::EntityTypeInfo</a></li>\n<li>ContainsEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">tram::Render::LightGraph</a></li>\n<li>Continue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">tram::AnimationComponent</a></li>\n<li>ControllerComponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">tram::FPSControllerComponent</a></li>\n<li>controllercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">tram::Player</a></li>\n<li>ControllerComponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">tram::RaycastControllerComponent</a></li>\n<li>coordinate&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612\">tram::Render::API::ClipPoint</a></li>\n<li>coords&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">tram::ParticleComponent::Particle</a></li>\n<li>count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">tram::Queue&lt; T &gt;</a></li>\n<li>Crate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">tram::Crate</a></li>\n<li>Crouch()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">tram::RaycastControllerComponent</a></li>\n<li>crouch_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">tram::FPSControllerComponent</a></li>\n<li>crouch_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">tram::RaycastControllerComponent</a></li>\n<li>crouching&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">tram::RaycastControllerComponent</a></li>\n<li>csize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">tram::Queue&lt; T &gt;</a></li>\n<li>current_vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706\">tram::Render::API::VertexBufferMetadata</a></li>\n<li>cursor_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501\">tram::GUI::FrameObject</a></li>\n<li>cursor_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e\">tram::GUI::FrameObject</a></li>\n<li>CURSORPOS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">tram::Event</a></li>\n<li>cycles_since_last_hit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">tram::Audio::Spatial::PathExplorationResult</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>Cylinder()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>d3d&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">tram::Render::material_t</a></li>\n<li>d3d_index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">tram::Render::indexarray_t</a></li>\n<li>d3d_metadata&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">tram::Render::vertexarray_t</a></li>\n<li>d3d_texture_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">tram::Render::texturehandle_t</a></li>\n<li>d3d_vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">tram::Render::vertexarray_t</a></li>\n<li>data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">tram::Audio::Spatial::AudioBuffer</a>, <a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">tram::Render::AABB::QueryResponse</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">tram::Signal</a></li>\n<li>data_function&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722\">tram::ListenerInfo</a></li>\n<li>data_int&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">tram::Message</a></li>\n<li>data_pointer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97\">tram::Physics::API::CallbackMotionState</a></li>\n<li>data_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">tram::Message</a></li>\n<li>DEBUG_DRAW&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">tram::WorldCell</a></li>\n<li>debugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">tram::Physics::PathAction</a></li>\n<li>DebugShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">tram::Ext::Kitchensink::DebugShape</a></li>\n<li>DebugText()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">tram::Ext::Kitchensink::DebugText</a></li>\n<li>DecalComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">tram::DecalComponent</a></li>\n<li>Decoration()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">tram::Decoration</a></li>\n<li>decoration_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">tram::Decoration</a></li>\n<li>default_compartment&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>definition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0\">tram::Render::RegisteredVertexDefinition</a></li>\n<li>delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">tram::Signal</a></li>\n<li>Delete()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>DELETED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">tram::Entity</a></li>\n<li>depth&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30\">tram::Render::API::Point2D</a></li>\n<li>destr_func&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>destructor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2\">tram::EntityTypeInfo</a></li>\n<li>DialogController()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>dimensions&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">tram::Render::SpritePoint</a></li>\n<li>direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">tram::PathFollower</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">tram::Render::API::SWLight</a></li>\n<li>DIRTY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">tram::Entity</a></li>\n<li>DISABLE_AUTO_LOAD&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">tram::Entity</a></li>\n<li>DisableDeactivation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">tram::PhysicsComponent</a></li>\n<li>DiskReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30\">tram::DiskReader</a></li>\n<li>DiskWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25\">tram::DiskWriter</a></li>\n<li>Dispatch()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">tram::Message</a></li>\n<li>Display()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">tram::Ext::Menu::Intercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15\">tram::Ext::Menu::LogIntercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">tram::Ext::Menu::SettingsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">tram::Ext::Menu::SystemMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>disposition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">tram::Ext::Kitchensink::CharacterDisposition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">tram::Ext::Kitchensink::FactionRelation</a></li>\n<li>dispositions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">tram::Ext::Kitchensink::Character</a></li>\n<li>distance&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">tram::Audio::Spatial::PathTracingResult</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">tram::Octree&lt; T &gt;::NearestSearch</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">tram::Physics::Collision</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858\">tram::Render::LightTree::Light</a></li>\n<li>distance_delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>Draw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">tram::Path</a></li>\n<li>draw3dText()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>draw_list_entries&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">tram::RenderComponent</a></li>\n<li>draw_list_entry&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">tram::SpriteComponent</a></li>\n<li>DrawAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">tram::Render::Model</a></li>\n<li>drawContactPoint()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>drawLine()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">tram::Physics::API::PhysicsDebugDraw</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>eboLen&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">tram::Render::API::GLDrawListEntry</a></li>\n<li>eboOff&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">tram::Render::API::GLDrawListEntry</a></li>\n<li>edge_infos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">tram::Path</a></li>\n<li>edges&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">tram::Graph</a>, <a class=\"el\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">tram::Node</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">tram::Render::LightGraph</a></li>\n<li>effective_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>effects&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>emission_rate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">tram::ParticleComponent</a></li>\n<li>EmitParticle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">tram::ParticleComponent</a></li>\n<li>emitter&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004\">tram::Ext::Menu::EventIntercept</a></li>\n<li>Empty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">tram::Ext::Menu::Menu</a></li>\n<li>enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">tram::RaycastControllerComponent</a></li>\n<li>end()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909\">tram::Render::API::Scanline</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">tram::StackPool&lt; T &gt;</a></li>\n<li>end_adv&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33\">tram::Render::API::Scanline</a></li>\n<li>END_CLOSE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">tram::Signal</a></li>\n<li>END_OPEN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">tram::Signal</a></li>\n<li>end_p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49\">tram::Render::API::Scanline</a></li>\n<li>end_p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c\">tram::Render::API::Scanline</a></li>\n<li>ENTER_TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">tram::Signal</a></li>\n<li>entities&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">tram::WorldCell</a></li>\n<li>Entity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">tram::Entity</a></li>\n<li>entity&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32\">tram::ListenerInfo</a></li>\n<li>entity_id&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">tram::Ext::Menu::SignalMenu</a></li>\n<li>EntityComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">tram::EntityComponent</a></li>\n<li>EntityPicker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">tram::Ext::Menu::EntityPicker</a></li>\n<li>environment_map&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">tram::Render::LightGraph::Node</a></li>\n<li>environmentmap&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">tram::RenderComponent</a></li>\n<li>EquipItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>equipped&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>equipped_slot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>Evaluate()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">tram::Script::Interface</a></li>\n<li>event_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">tram::Ext::Menu::EventEmit</a></li>\n<li>EventHandler()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">tram::TriggerComponent</a></li>\n<li>Exists()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">tram::Hashmap&lt; T &gt;</a></li>\n<li>EXIT_TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">tram::Signal</a></li>\n<li>exponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">tram::Render::API::SWLight</a></li>\n<li>extent_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">tram::Physics::CollisionShape</a></li>\n<li>extent_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">tram::Physics::CollisionShape</a></li>\n<li>extent_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_enum.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Enumerations</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>AccessMode&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477\">tram::File</a></li>\n<li>ListenerType&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">tram::ListenerInfo</a></li>\n<li>Octant&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">tram::Octree&lt; T &gt;</a></li>\n<li>Status&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">tram::Resource</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">tram::Signal</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_eval.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Enumerator</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>ACTIVATE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">tram::Signal</a></li>\n<li>ACTIVATE_ONCE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">tram::Message</a></li>\n<li>AUTOMATIC_LOADING&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">tram::WorldCell</a></li>\n</ul>\n\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>BINARY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d\">tram::File</a></li>\n</ul>\n\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CLOSE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">tram::Signal</a></li>\n<li>CURSORPOS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">tram::Event</a></li>\n</ul>\n\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>DEBUG_DRAW&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">tram::WorldCell</a></li>\n<li>DELETED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d\">tram::Entity</a></li>\n<li>DIRTY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e\">tram::Entity</a></li>\n<li>DISABLE_AUTO_LOAD&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152\">tram::Entity</a></li>\n</ul>\n\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>END_CLOSE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">tram::Signal</a></li>\n<li>END_OPEN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">tram::Signal</a></li>\n<li>ENTER_TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">tram::Signal</a></li>\n<li>EXIT_TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>FFP_BONE_INDEX&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">tram::Render::VertexAttribute</a></li>\n<li>FFP_BONE_WEIGHT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">tram::Render::VertexAttribute</a></li>\n<li>FFP_COLOR&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">tram::Render::VertexAttribute</a></li>\n<li>FFP_IGNORE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">tram::Render::VertexAttribute</a></li>\n<li>FFP_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">tram::Render::VertexAttribute</a></li>\n<li>FFP_NORMAL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">tram::Render::VertexAttribute</a></li>\n<li>FFP_POSITION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">tram::Render::VertexAttribute</a></li>\n<li>FFP_TEXTURE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">tram::Render::VertexAttribute</a></li>\n<li>FIELD_SERIALIZE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">tram::Entity</a></li>\n<li>FLAG_DELETED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">tram::Hashmap&lt; T &gt;</a></li>\n<li>FLAG_RECORD&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">tram::Hashmap&lt; T &gt;</a></li>\n<li>FLOAT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">tram::Render::VertexAttribute</a></li>\n<li>FRAME&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">tram::Event</a></li>\n</ul>\n\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>INT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">tram::Render::VertexAttribute</a></li>\n<li>INTERIOR&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">tram::WorldCell</a></li>\n<li>INTERIOR_LIGHTING&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">tram::WorldCell</a></li>\n</ul>\n\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KEYCHAR&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">tram::Event</a></li>\n<li>KEYDOWN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">tram::Event</a></li>\n<li>KEYPRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">tram::Event</a></li>\n<li>KEYUP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">tram::Event</a></li>\n<li>KILL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>LAST_EVENT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">tram::Event</a></li>\n<li>LAST_MESSAGE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">tram::Message</a></li>\n<li>LAST_SIGNAL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">tram::Signal</a></li>\n<li>LISTENER_COMPONENT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">tram::ListenerInfo</a></li>\n<li>LISTENER_DATA_FUNCTION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\">tram::ListenerInfo</a></li>\n<li>LISTENER_DELETED&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\">tram::ListenerInfo</a></li>\n<li>LISTENER_ENTITY&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\">tram::ListenerInfo</a></li>\n<li>LISTENER_FUNCTION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\">tram::ListenerInfo</a></li>\n<li>LOADED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">tram::WorldCell</a></li>\n<li>LOADED_FROM_DISK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">tram::WorldCell</a></li>\n<li>LOCK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">tram::Message</a></li>\n<li>LOCKED_USE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">tram::Signal</a></li>\n<li>LOOK_AT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">tram::Event</a></li>\n</ul>\n\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>MOVE_PICK_UP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">tram::Message</a></li>\n</ul>\n\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>NON_PERSISTENT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">tram::Entity</a></li>\n<li>NON_SERIALIZABLE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">tram::Entity</a></li>\n<li>NONE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>OCTANT_BOTTOM_LEFT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_LEFT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_RIGHT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_RIGHT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_LEFT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_LEFT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_RIGHT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_RIGHT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">tram::Octree&lt; T &gt;</a></li>\n<li>OPEN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PAUSE_LINE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">tram::File</a></li>\n<li>PING&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">tram::Message</a></li>\n<li>PROGRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>READ&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">tram::File</a></li>\n<li>READY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">tram::Resource</a></li>\n</ul>\n\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>SELECT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">tram::Message</a></li>\n<li>SELECTED&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">tram::Event</a></li>\n<li>SET_ANIMATION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">tram::Message</a></li>\n<li>SET_FLAG_OFF&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">tram::Message</a></li>\n<li>SET_FLAG_ON&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">tram::Message</a></li>\n<li>SET_PROGRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">tram::Message</a></li>\n<li>SPAWN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">tram::Signal</a></li>\n<li>START&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">tram::Message</a></li>\n<li>STOP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">tram::Message</a></li>\n</ul>\n\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TEXT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">tram::File</a></li>\n<li>TICK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">tram::Event</a></li>\n<li>TOGGLE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">tram::Message</a></li>\n<li>TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UINT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">tram::Render::VertexAttribute</a></li>\n<li>UNLOADED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">tram::Resource</a></li>\n<li>UNLOCK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">tram::Message</a></li>\n<li>USE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">tram::Signal</a></li>\n</ul>\n\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>WRITE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">tram::File</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>faction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">tram::Ext::Kitchensink::BaseFactionRank</a></li>\n<li>Faction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737\">tram::Ext::Kitchensink::Character</a></li>\n<li>faction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">tram::Ext::Kitchensink::FactionRelation</a></li>\n<li>factions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">tram::Ext::Kitchensink::Character</a></li>\n<li>fade_ammount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_far&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">tram::Render::Model</a></li>\n<li>fade_in&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_in_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></li>\n<li>fade_near&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">tram::Render::Model</a></li>\n<li>fade_out&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_out_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></li>\n<li>fade_speed&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>FadeIn()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">tram::AnimationComponent</a></li>\n<li>FadeOut()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">tram::AnimationComponent</a></li>\n<li>fail()&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">_test_case</a></li>\n<li>fail_asserts&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">_test_case</a></li>\n<li>farthest_distance&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>farthest_index&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>FFP_BONE_INDEX&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">tram::Render::VertexAttribute</a></li>\n<li>FFP_BONE_WEIGHT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">tram::Render::VertexAttribute</a></li>\n<li>FFP_COLOR&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">tram::Render::VertexAttribute</a></li>\n<li>FFP_IGNORE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">tram::Render::VertexAttribute</a></li>\n<li>FFP_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">tram::Render::VertexAttribute</a></li>\n<li>FFP_NORMAL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">tram::Render::VertexAttribute</a></li>\n<li>FFP_POSITION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">tram::Render::VertexAttribute</a></li>\n<li>FFP_TEXTURE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">tram::Render::VertexAttribute</a></li>\n<li>ffp_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">tram::Render::VertexAttribute</a></li>\n<li>field_flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">tram::Entity::FieldInfo</a></li>\n<li>field_id&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">tram::Entity::FieldInfo</a></li>\n<li>FIELD_SERIALIZE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b\">tram::Entity</a></li>\n<li>field_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">tram::Entity::FieldInfo</a></li>\n<li>fieldcount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81\">tram::EntityTypeInfo</a></li>\n<li>fields&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8\">tram::EntityTypeInfo</a></li>\n<li>File()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">tram::File</a></li>\n<li>filter&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">tram::Render::Material</a></li>\n<li>Find()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">tram::Ext::Kitchensink::AnimationTable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">tram::Ext::Kitchensink::CharacterClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">tram::Ext::Kitchensink::Faction</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">tram::Ext::Kitchensink::SoundTable</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987\">tram::Render::API::VertexShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3\">tram::WorldCell</a></li>\n<li>FindAABBIntersection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">tram::AABBTree</a></li>\n<li>FindAll()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">tram::Ext::Kitchensink::Quest</a></li>\n<li>FindAllFromAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">tram::Render::Model</a></li>\n<li>FindAllFromRay()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">tram::Render::Model</a></li>\n<li>FindCompartment()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>FindIntersection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">tram::AABBTree</a></li>\n<li>FindIntersectionRecursive()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">tram::AABBTree</a></li>\n<li>FindKeyframePointers()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">tram::AnimationComponent</a></li>\n<li>FindNearest()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">tram::Octree&lt; T &gt;</a></li>\n<li>FindShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5\">tram::Render::API::LinkedShader</a></li>\n<li>FindSibling()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">tram::AABBTree</a></li>\n<li>FindTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">tram::WorldCell</a></li>\n<li>Fire()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">tram::SignalTable</a></li>\n<li>FireAdded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireEquip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireIdle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FirePrimaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireRemoved()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireSecondaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireSignal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">tram::Entity</a></li>\n<li>FireTrigger()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">tram::Ext::Kitchensink::Quest</a></li>\n<li>FireUnequip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>first&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">tram::StackPool&lt; T &gt;</a></li>\n<li>firstend&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">tram::Stack&lt; T &gt;</a></li>\n<li>FirstPersonCamera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>FLAG_DELETED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">tram::Hashmap&lt; T &gt;</a></li>\n<li>FLAG_RECORD&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">tram::Hashmap&lt; T &gt;</a></li>\n<li>flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">tram::SharedEntityData</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">tram::WorldCell</a></li>\n<li>FLOAT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">tram::Render::VertexAttribute</a></li>\n<li>float32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9\">tram::Settings::SettingInfo</a></li>\n<li>float_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">tram::ValuePtr</a></li>\n<li>float_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">tram::Value</a></li>\n<li>Fly()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">tram::RaycastControllerComponent</a></li>\n<li>fly_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">tram::RaycastControllerComponent</a></li>\n<li>flying&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">tram::RaycastControllerComponent</a></li>\n<li>following&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">tram::Ext::Camera::Camera</a></li>\n<li>following_interpolation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>following_listener&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">tram::Ext::Camera::Camera</a></li>\n<li>following_lookat&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">tram::Ext::Camera::Camera</a></li>\n<li>following_offset&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>force&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">tram::Audio::Spatial::PathExplorationResult</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">tram::Audio::Spatial::PathRenderingInfo</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>format&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">tram::Render::API::SWVertexArray</a></li>\n<li>found&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>FPSControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">tram::FPSControllerComponent</a></li>\n<li>frame&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">tram::DecalComponent</a></li>\n<li>FRAME&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">tram::Event</a></li>\n<li>frame&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">tram::Render::Keyframe</a></li>\n<li>frames&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">tram::Render::Sprite</a></li>\n<li>friction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">tram::FPSControllerComponent</a></li>\n<li>from&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">tram::Edge</a></li>\n<li>from_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>front()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">tram::Queue&lt; T &gt;</a></li>\n<li>fullname&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">_test_case</a></li>\n<li>function&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2\">tram::ListenerInfo</a></li>\n<li>fvf&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee\">tram::Render::API::VertexBufferMetadata</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>AABBDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b\">tram::AABBTree</a></li>\n<li>AABBIntersect()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">tram::AABBTree</a></li>\n<li>AABBOverlap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80\">tram::AABBTree</a></li>\n<li>AABBSurface()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">tram::AABBTree</a></li>\n<li>AABBTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">tram::AABBTree</a></li>\n<li>AABBVolume()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">tram::AABBTree</a></li>\n<li>Activate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc\">tram::Trigger</a></li>\n<li>Add()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">tram::SignalTable</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">tram::WorldCell</a></li>\n<li>AddBaseClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>AddCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763\">tram::Ext::Kitchensink::Faction</a></li>\n<li>AddClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d\">tram::Ext::Kitchensink::Character</a></li>\n<li>AddFaction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>AddItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>AddLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">tram::Octree&lt; T &gt;</a></li>\n<li>AddListener()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">tram::Event</a></li>\n<li>AddNew()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">tram::StackPool&lt; T &gt;</a></li>\n<li>AddPoint()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">tram::Transition</a></li>\n<li>AddReference()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">tram::Resource</a></li>\n<li>addSingleResult()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f\">tram::Physics::API::ShapecastCallback</a></li>\n<li>AddSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>AddState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>AddStateSpace()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>AddTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>Advance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">tram::PathFollower</a></li>\n<li>allocate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">tram::StackPool&lt; T &gt;</a></li>\n<li>AllocateData()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d\">tram::Message</a></li>\n<li>And()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Animation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">tram::Render::Animation</a></li>\n<li>AnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad\">tram::AnimationComponent</a></li>\n<li>AnimationTable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>ApplyDynamics()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7\">tram::RaycastControllerComponent</a></li>\n<li>ApplyEffect()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>AssertType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">tram::Value</a></li>\n<li>AudioComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5\">tram::AudioComponent</a></li>\n<li>Awaken()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a\">tram::PhysicsComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>back()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">tram::Queue&lt; T &gt;</a></li>\n<li>begin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">tram::StackPool&lt; T &gt;</a></li>\n<li>BindUniformBlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0\">tram::Render::API::LinkedShader</a></li>\n<li>Box()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">tram::Physics::CollisionShape</a></li>\n<li>Breakable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d\">tram::Ext::Kitchensink::Breakable</a></li>\n<li>Button()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9\">tram::Ext::Kitchensink::Button</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CalcSortKey()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">tram::Render::API::GLDrawListEntry</a></li>\n<li>CallbackMotionState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05\">tram::Physics::API::CallbackMotionState</a></li>\n<li>CallFunction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed\">tram::Script::Interface</a></li>\n<li>Capsule()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">tram::Physics::CollisionShape</a></li>\n<li>CheckTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a\">tram::Entity</a></li>\n<li>clear()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b\">tram::EventListener</a></li>\n<li>Clear()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">tram::Ext::Menu::Menu</a></li>\n<li>ClearOverride()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>Collision()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">tram::TriggerComponent</a></li>\n<li>CollisionModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc\">tram::Physics::CollisionModel</a></li>\n<li>Component()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979\">tram::Component&lt; T &gt;</a></li>\n<li>Cone()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">tram::Physics::CollisionShape</a></li>\n<li>Console()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953\">tram::Ext::Menu::Console</a></li>\n<li>ContainsEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">tram::Render::LightGraph</a></li>\n<li>Continue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f\">tram::AnimationComponent</a></li>\n<li>Crate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1\">tram::Crate</a></li>\n<li>Crouch()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d\">tram::RaycastControllerComponent</a></li>\n<li>Cylinder()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>debugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992\">tram::Physics::PathAction</a></li>\n<li>DebugShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d\">tram::Ext::Kitchensink::DebugShape</a></li>\n<li>DebugText()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a\">tram::Ext::Kitchensink::DebugText</a></li>\n<li>DecalComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d\">tram::DecalComponent</a></li>\n<li>Decoration()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87\">tram::Decoration</a></li>\n<li>Delete()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>DialogController()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>DisableDeactivation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a\">tram::PhysicsComponent</a></li>\n<li>DiskReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30\">tram::DiskReader</a></li>\n<li>DiskWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25\">tram::DiskWriter</a></li>\n<li>Dispatch()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">tram::Message</a></li>\n<li>Display()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">tram::Ext::Menu::Intercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15\">tram::Ext::Menu::LogIntercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb\">tram::Ext::Menu::SettingsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a\">tram::Ext::Menu::SystemMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>Draw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">tram::Path</a></li>\n<li>draw3dText()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>DrawAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">tram::Render::Model</a></li>\n<li>drawContactPoint()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>drawLine()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44\">tram::Physics::API::PhysicsDebugDraw</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>EmitParticle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">tram::ParticleComponent</a></li>\n<li>Empty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">tram::Ext::Menu::Menu</a></li>\n<li>end()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">tram::StackPool&lt; T &gt;</a></li>\n<li>Entity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d\">tram::Entity</a></li>\n<li>EntityComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8\">tram::EntityComponent</a></li>\n<li>EntityPicker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af\">tram::Ext::Menu::EntityPicker</a></li>\n<li>EquipItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Evaluate()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a\">tram::Script::Interface</a></li>\n<li>EventHandler()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">tram::TriggerComponent</a></li>\n<li>Exists()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">tram::Hashmap&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>FadeIn()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178\">tram::AnimationComponent</a></li>\n<li>FadeOut()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50\">tram::AnimationComponent</a></li>\n<li>fail()&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">_test_case</a></li>\n<li>File()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6\">tram::File</a></li>\n<li>Find()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1\">tram::Ext::Kitchensink::AnimationTable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d\">tram::Ext::Kitchensink::CharacterClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c\">tram::Ext::Kitchensink::Faction</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">tram::Ext::Kitchensink::SoundTable</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987\">tram::Render::API::VertexShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">tram::WorldCell</a></li>\n<li>FindAABBIntersection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b\">tram::AABBTree</a></li>\n<li>FindAll()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">tram::Ext::Kitchensink::Quest</a></li>\n<li>FindAllFromAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">tram::Render::Model</a></li>\n<li>FindAllFromRay()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">tram::Render::Model</a></li>\n<li>FindCompartment()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>FindIntersection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d\">tram::AABBTree</a></li>\n<li>FindIntersectionRecursive()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1\">tram::AABBTree</a></li>\n<li>FindKeyframePointers()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9\">tram::AnimationComponent</a></li>\n<li>FindNearest()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">tram::Octree&lt; T &gt;</a></li>\n<li>FindShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5\">tram::Render::API::LinkedShader</a></li>\n<li>FindSibling()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">tram::AABBTree</a></li>\n<li>FindTransition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">tram::WorldCell</a></li>\n<li>Fire()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">tram::SignalTable</a></li>\n<li>FireAdded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireEquip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireIdle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FirePrimaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireRemoved()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireSecondaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FireSignal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d\">tram::Entity</a></li>\n<li>FireTrigger()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">tram::Ext::Kitchensink::Quest</a></li>\n<li>FireUnequip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>FirstPersonCamera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>Fly()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b\">tram::RaycastControllerComponent</a></li>\n<li>FPSControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91\">tram::FPSControllerComponent</a></li>\n<li>front()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">tram::Queue&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>Gather()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>GatherBaseAttributes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GatherFactions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GeneratePlanes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">tram::Transition</a></li>\n<li>get()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>GetAABBMax()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">tram::Render::Model</a></li>\n<li>GetAABBMin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">tram::Render::Model</a></li>\n<li>GetAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>GetAnimationStateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>GetAnswer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>GetAnyShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c\">tram::Render::API::LinkedShader</a></li>\n<li>GetArmature()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">tram::Render::Model</a></li>\n<li>GetAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GetAttributeBase()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>GetBaseDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">tram::Ext::Kitchensink::Character</a></li>\n<li>GetBob()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>GetCell()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">tram::Transition</a></li>\n<li>GetCharacterLoyalty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetCharacterRank()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">tram::TriggerComponent</a></li>\n<li>GetCollisionMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">tram::TriggerComponent</a></li>\n<li>GetColor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">tram::Render::Material</a></li>\n<li>GetContents()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">tram::FileReader</a></li>\n<li>GetControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>getDebugMode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>GetDirectionFacing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">tram::PlayerComponent</a></li>\n<li>GetDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">tram::LightComponent</a></li>\n<li>GetEntities()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">tram::WorldCell</a></li>\n<li>GetEntityCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">tram::WorldCell</a></li>\n<li>GetEnvironmentProbes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">tram::Render::LightGraph</a></li>\n<li>GetEquippedItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>GetFarDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">tram::Render::Model</a></li>\n<li>GetFirst()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">tram::Pool&lt; T &gt;</a></li>\n<li>GetFloat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">tram::Value</a></li>\n<li>GetFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">tram::Ext::Camera::Camera</a></li>\n<li>GetFormat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f\">tram::Render::API::LinkedShader</a></li>\n<li>GetFragmentShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c\">tram::Render::API::LinkedShader</a></li>\n<li>GetFrames()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">tram::Render::Sprite</a></li>\n<li>GetGlobal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">tram::Script::Interface</a></li>\n<li>GetHeader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">tram::Render::Animation</a></li>\n<li>GetHeaderCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">tram::Render::Animation</a></li>\n<li>GetHeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">tram::Render::Material</a></li>\n<li>GetID()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">tram::Entity</a></li>\n<li>GetIndexArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">tram::Render::Model</a></li>\n<li>GetIndexRanges()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">tram::Render::Model</a></li>\n<li>GetInt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">tram::Value</a></li>\n<li>GetItemCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>GetItems()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>GetKeyframeCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">tram::Render::Animation</a></li>\n<li>GetKeyframes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">tram::Render::Animation</a></li>\n<li>GetLast()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">tram::Pool&lt; T &gt;</a></li>\n<li>GetLastPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">tram::Stack&lt; T &gt;</a></li>\n<li>GetLength()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">tram::Stack&lt; T &gt;</a></li>\n<li>GetLightmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">tram::RenderComponent</a></li>\n<li>GetLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">tram::RenderComponent</a></li>\n<li>GetLookDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">tram::ControllerComponent</a></li>\n<li>GetLookRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">tram::PlayerComponent</a></li>\n<li>GetMaterial()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">tram::Render::Sprite</a></li>\n<li>GetMaterials()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">tram::Render::Model</a></li>\n<li>GetMediumList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">tram::FileWriter</a></li>\n<li>GetModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">tram::TriggerComponent</a></li>\n<li>GetName()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957\">tram::Render::API::VertexShader</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">tram::Script::Interface</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">tram::WorldCell</a></li>\n<li>GetNavmeshNode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">tram::Navmesh</a></li>\n<li>GetNearDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">tram::Render::Model</a></li>\n<li>GetNodes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">tram::Navmesh</a></li>\n<li>GetOctant()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">tram::Octree&lt; T &gt;</a></li>\n<li>GetOrigin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">tram::Render::Model</a></li>\n<li>GetParent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">tram::EntityComponent</a></li>\n<li>GetPool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>GetPose()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">tram::AnimationComponent</a></li>\n<li>GetPosition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">tram::PathFollower</a></li>\n<li>GetPrompts()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>GetProperty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">tram::Render::Material</a></li>\n<li>GetReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">tram::FileReader</a></li>\n<li>GetReferences()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">tram::Resource</a></li>\n<li>GetRelation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetResource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>GetRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">tram::RenderComponent</a></li>\n<li>GetScale()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">tram::RenderComponent</a></li>\n<li>GetSearchList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">tram::FileReader</a></li>\n<li>GetShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c\">tram::Render::API::VertexShader</a></li>\n<li>GetShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">tram::Physics::CollisionModel</a></li>\n<li>GetSignalTable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">tram::Entity</a></li>\n<li>GetSize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">tram::Pool&lt; T &gt;</a></li>\n<li>GetSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>GetSpecularExponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">tram::Render::Material</a></li>\n<li>GetSpecularTransparency()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">tram::Render::Material</a></li>\n<li>GetSpecularWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">tram::Render::Material</a></li>\n<li>GetSprite()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">tram::SpriteComponent</a></li>\n<li>GetStatus()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">tram::FileWriter</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">tram::Resource</a></li>\n<li>GetStoredCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">tram::TriggerComponent</a></li>\n<li>GetTangent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">tram::PathFollower</a></li>\n<li>GetTexture()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">tram::Render::Material</a></li>\n<li>GetTransitions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">tram::WorldCell</a></li>\n<li>GetType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">tram::Marker</a>, <a class=\"el\" href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">tram::ValuePtr</a></li>\n<li>GetValidNextTopics()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>GetVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">tram::Ext::Kitchensink::Quest</a></li>\n<li>GetVelocity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">tram::PhysicsComponent</a></li>\n<li>GetVertexArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">tram::Render::Model</a></li>\n<li>GetVertexFormat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">tram::Render::Model</a></li>\n<li>GetVertexShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa\">tram::Render::API::LinkedShader</a></li>\n<li>GetVolume()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">tram::WorldCell</a></li>\n<li>GetWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>GetWidth()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">tram::Render::Material</a></li>\n<li>getWorldTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f\">tram::Physics::API::CallbackMotionState</a></li>\n<li>GetWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">tram::FileWriter</a></li>\n<li>GLDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">tram::Render::API::GLDrawListEntry</a></li>\n<li>Greater()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>GreaterOrEqual()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">tram::Ext::Kitchensink::QuestVariable</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>HasAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>HasAutomaticLoading()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">tram::WorldCell</a></li>\n<li>HasBaseClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>HasCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">tram::Ext::Kitchensink::Faction</a></li>\n<li>HasClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">tram::Ext::Kitchensink::Character</a></li>\n<li>Hashmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">tram::Hashmap&lt; T &gt;</a></li>\n<li>HasInteriorLighting()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">tram::WorldCell</a></li>\n<li>Hull()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>index()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">tram::Pool&lt; T &gt;</a></li>\n<li>init()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619\">tram::Component&lt; T &gt;</a></li>\n<li>Init()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">tram::TemplateComponent</a></li>\n<li>Insert()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">tram::Octree&lt; T &gt;</a></li>\n<li>InsertDrawListEntries()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">tram::RenderComponent</a></li>\n<li>InsertLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">tram::AABBTree</a></li>\n<li>Inventory()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Is()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>is_continue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17\">tram::TextReaderParser</a></li>\n<li>is_empty()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">tram::UID</a></li>\n<li>is_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b\">tram::TextReaderParser</a></li>\n<li>is_open()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">tram::File</a></li>\n<li>is_valid()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">tram::UID</a></li>\n<li>IsAutoLoad()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">tram::Entity</a></li>\n<li>IsBool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">tram::ValuePtr</a></li>\n<li>IsChanged()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">tram::Entity</a></li>\n<li>IsDebugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">tram::WorldCell</a></li>\n<li>IsDebugInfoDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">tram::ControllerComponent</a></li>\n<li>IsDeleted()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">tram::Entity</a></li>\n<li>IsDrawTrigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">tram::Trigger</a></li>\n<li>IsEquippedItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>IsEquippedSlot()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>IsFloat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">tram::ValuePtr</a></li>\n<li>IsInFaction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">tram::Ext::Kitchensink::Character</a></li>\n<li>IsInit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">tram::EntityComponent</a></li>\n<li>IsInside()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">tram::WorldCell</a></li>\n<li>IsInt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">tram::ValuePtr</a></li>\n<li>IsInterior()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">tram::WorldCell</a></li>\n<li>IsLeaf()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>IsLightDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">tram::LightComponent</a></li>\n<li>IsLoaded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">tram::WorldCell</a></li>\n<li>IsLoadedFromDisk()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">tram::Entity</a></li>\n<li>IsLoadFailed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">tram::Resource</a></li>\n<li>IsMet()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">tram::Ext::Kitchensink::DialogCondition</a></li>\n<li>IsName()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">tram::Value</a></li>\n<li>IsNode()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>IsNot()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>IsPersistent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">tram::Entity</a></li>\n<li>IsPlaying()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">tram::AudioComponent</a></li>\n<li>IsQuat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">tram::Value</a></li>\n<li>IsReady()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">tram::EntityComponent</a></li>\n<li>IsSourceDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">tram::AudioComponent</a></li>\n<li>IsString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">tram::Value</a></li>\n<li>IsVec2()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">tram::Value</a></li>\n<li>IsVec3()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">tram::Value</a></li>\n<li>IsVec4()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">tram::Value</a></li>\n<li>ItemCount()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>iterator()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">tram::Pool&lt; T &gt;::iterator</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_j\" name=\"index_j\"></a>- j -</h3><ul>\n<li>Jump()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>Layer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">tram::Ext::Menu::SettingsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">tram::Ext::Menu::SystemMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>Less()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>LessOrEqual()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Light()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">tram::Light</a></li>\n<li>LightGraph()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">tram::Render::LightGraph</a></li>\n<li>Link()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">tram::WorldCell</a></li>\n<li>ListDialog()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">tram::Ext::Kitchensink::ListDialog</a></li>\n<li>ListSelection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">tram::Ext::Menu::ListSelection</a></li>\n<li>Load()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">tram::WorldCell</a></li>\n<li>LoadAll()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">tram::Render::Animation</a></li>\n<li>LoadFromDisk()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">tram::WorldCell</a></li>\n<li>LoadFromMemory()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a></li>\n<li>LoadMaterialInfo()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">tram::Render::Material</a></li>\n<li>LoadScript()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">tram::Script::Interface</a></li>\n<li>lock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">tram::Queue&lt; T &gt;</a></li>\n<li>Lock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">tram::Spinlock</a></li>\n<li>LookupEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">tram::Render::LightGraph</a></li>\n<li>LookupFilter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">tram::Audio::SoundGraph</a></li>\n<li>LookupHarmonic()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">tram::Render::LightGraph</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">tram::Component&lt; T &gt;</a></li>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">tram::Entity</a></li>\n<li>make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">tram::EventListener</a></li>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">tram::WorldCell</a></li>\n<li>MakePattern()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">tram::Render::Material</a></li>\n<li>Marker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">tram::Marker</a></li>\n<li>Material()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">tram::Render::Material</a></li>\n<li>MergeAABBMax()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">tram::AABBTree</a></li>\n<li>MergeAABBMin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">tram::AABBTree</a></li>\n<li>Mesh()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">tram::Physics::CollisionShape</a></li>\n<li>MessageHandler()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">tram::Trigger</a></li>\n<li>Model()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">tram::Render::Model</a></li>\n<li>Move()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">tram::RaycastControllerComponent</a></li>\n<li>MoveTo()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">tram::Ext::Kitchensink::DialogController</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>Navmesh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">tram::Navmesh</a></li>\n<li>New()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>NewNode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">tram::Octree&lt; T &gt;</a></li>\n<li>no_quote()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">tram::UID</a></li>\n<li>Not()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">tram::Ext::Kitchensink::QuestVariable</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>Objective()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Octree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">tram::Octree&lt; T &gt;</a></li>\n<li>OnAdded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnEquip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnIdle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnPrimaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnRemoved()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnSecondaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnUnequip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>operator bool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#ac42050ff047751f66c1549099461d047\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4\">tram::EventListener</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071\">tram::ResourceProxy&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520\">tram::Value</a></li>\n<li>operator bool *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4\">tram::ValuePtr</a></li>\n<li>operator char const *()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9\">tram::UID</a></li>\n<li>operator const char *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe\">tram::Value</a></li>\n<li>operator const char **()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967\">tram::ValuePtr</a></li>\n<li>operator double()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470\">tram::Value</a></li>\n<li>operator float()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0\">tram::Value</a></li>\n<li>operator float *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b\">tram::ValuePtr</a></li>\n<li>operator int16_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">tram::Value</a></li>\n<li>operator int32_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69\">tram::Value</a></li>\n<li>operator int32_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86\">tram::ValuePtr</a></li>\n<li>operator int64_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85\">tram::Value</a></li>\n<li>operator int8_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa919d5718da818826402272ff33bf164\">tram::Value</a></li>\n<li>operator name_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9\">tram::Value</a></li>\n<li>operator name_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5\">tram::ValuePtr</a></li>\n<li>operator quat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2\">tram::Value</a></li>\n<li>operator quat *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0\">tram::ValuePtr</a></li>\n<li>operator std::string()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801\">tram::UID</a></li>\n<li>operator T()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0\">tram::Settings::Property&lt; T &gt;</a></li>\n<li>operator T*()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd\">tram::Component&lt; T &gt;</a></li>\n<li>operator uint16_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748\">tram::Value</a></li>\n<li>operator uint32_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154\">tram::Value</a></li>\n<li>operator uint32_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7\">tram::ValuePtr</a></li>\n<li>operator uint64_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577\">tram::Value</a></li>\n<li>operator uint8_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987\">tram::Value</a></li>\n<li>operator Value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8\">tram::ValuePtr</a></li>\n<li>operator vec2()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175\">tram::Value</a></li>\n<li>operator vec2 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108\">tram::ValuePtr</a></li>\n<li>operator vec3()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45\">tram::Value</a></li>\n<li>operator vec3 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45\">tram::ValuePtr</a></li>\n<li>operator vec4()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189\">tram::Value</a></li>\n<li>operator vec4 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063\">tram::ValuePtr</a></li>\n<li>operator*()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>operator++()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">tram::Pool&lt; T &gt;::iterator</a></li>\n<li>operator-&gt;()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>operator=()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">tram::ResourceProxy&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">tram::Value</a></li>\n<li>operator==()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">tram::Value</a></li>\n<li>operator[]()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">tram::ValueArray</a></li>\n<li>Options()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">tram::Ext::Menu::Options</a></li>\n<li>Or()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">tram::Ext::Kitchensink::QuestVariable</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>ParticleComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">tram::ParticleComponent</a></li>\n<li>Path()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">tram::Path</a></li>\n<li>PathAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">tram::Physics::PathAction</a></li>\n<li>PathFollower()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">tram::PathFollower</a></li>\n<li>Pause()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">tram::SpriteComponent</a></li>\n<li>Perform()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">tram::Ext::Kitchensink::DialogAction</a></li>\n<li>PhysicsComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">tram::PhysicsComponent</a></li>\n<li>Pickup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">tram::Ext::Kitchensink::Pickup</a></li>\n<li>Play()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">tram::SpriteComponent</a></li>\n<li>Player()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">tram::Player</a></li>\n<li>PlayerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">tram::PlayerComponent</a></li>\n<li>PlaySound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>Poll()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">tram::TriggerComponent</a></li>\n<li>Pool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">tram::Pool&lt; T &gt;</a></li>\n<li>pool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aedcb7d9eceb53a8a1495741d098658c1\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>PoolPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>Pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">tram::Ext::Menu::Menu</a></li>\n<li>pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">tram::Stack&lt; T &gt;</a></li>\n<li>Post()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">tram::Event</a></li>\n<li>Print()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">tram::AABBTree::Node</a></li>\n<li>Process()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">tram::Ext::Kitchensink::AIPackage</a></li>\n<li>Project()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">tram::PathFollower</a></li>\n<li>Property()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">tram::Settings::Property&lt; T &gt;</a></li>\n<li>Push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">tram::PhysicsComponent</a></li>\n<li>push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">tram::Queue&lt; T &gt;</a></li>\n<li>Push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">tram::RaycastControllerComponent</a></li>\n<li>push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">tram::Stack&lt; T &gt;</a></li>\n<li>PushOverride()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">tram::Ext::Kitchensink::AIAgent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>Quest()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">tram::Ext::Kitchensink::Quest</a></li>\n<li>QuestEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb\">tram::Ext::Kitchensink::QuestEntity</a></li>\n<li>QuestVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Queue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">tram::Queue&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>RaycastControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">tram::RaycastControllerComponent</a></li>\n<li>read_float32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142\">tram::TextReaderParser</a></li>\n<li>read_float64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d\">tram::TextReaderParser</a></li>\n<li>read_int16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad\">tram::TextReaderParser</a></li>\n<li>read_int32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd\">tram::TextReaderParser</a></li>\n<li>read_int64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316\">tram::TextReaderParser</a></li>\n<li>read_int8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e\">tram::TextReaderParser</a></li>\n<li>read_line()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8\">tram::TextReaderParser</a></li>\n<li>read_name()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9\">tram::TextReaderParser</a></li>\n<li>read_string()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516\">tram::TextReaderParser</a></li>\n<li>read_token()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3\">tram::TextReaderParser</a></li>\n<li>read_uint16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de\">tram::TextReaderParser</a></li>\n<li>read_uint32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c\">tram::TextReaderParser</a></li>\n<li>read_uint64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f\">tram::TextReaderParser</a></li>\n<li>read_uint8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023\">tram::TextReaderParser</a></li>\n<li>Recalculate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">tram::Ext::Kitchensink::AttributeInfo</a></li>\n<li>RecoverFromCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">tram::RaycastControllerComponent</a></li>\n<li>Refresh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">tram::AnimationComponent</a></li>\n<li>RefreshAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">tram::RenderComponent</a></li>\n<li>Register()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">tram::Marker</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">tram::Trigger</a></li>\n<li>RegisterType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">tram::Entity</a></li>\n<li>RegisterUniformBlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2\">tram::Render::API::LinkedShader</a></li>\n<li>Remove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">tram::WorldCell</a></li>\n<li>RemoveCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">tram::Ext::Kitchensink::Faction</a></li>\n<li>RemoveEffect()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>RemoveHierarchy()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">tram::AABBTree</a></li>\n<li>RemoveItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>RemoveLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">tram::Octree&lt; T &gt;</a></li>\n<li>RemoveListener()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">tram::Event</a></li>\n<li>RemoveReference()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">tram::Resource</a></li>\n<li>RenderComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">tram::RenderComponent</a></li>\n<li>Reparent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">tram::AnimationComponent</a></li>\n<li>reportErrorWarning()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>RequestAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">tram::Decoration</a></li>\n<li>reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">tram::Stack&lt; T &gt;</a></li>\n<li>Reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">tram::Stack&lt; T &gt;</a></li>\n<li>reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">tram::StackPool&lt; T &gt;</a></li>\n<li>Reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">tram::StackPool&lt; T &gt;</a></li>\n<li>reset_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435\">tram::TextReaderParser</a></li>\n<li>reset_flags()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">tram::File</a></li>\n<li>ResetCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">tram::TriggerComponent</a></li>\n<li>ResetMove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">tram::RaycastControllerComponent</a></li>\n<li>Resource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">tram::Resource</a></li>\n<li>ResourceProxy()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>ResourceReady()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">tram::EntityComponent</a></li>\n<li>Run()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>SanitizeData()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">tram::Scriptable&lt; T &gt;</a></li>\n<li>Script()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Scriptable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">tram::Scriptable&lt; T &gt;</a></li>\n<li>Send()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">tram::Message</a></li>\n<li>Serialize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">tram::Trigger</a></li>\n<li>SerializeString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">tram::Player</a></li>\n<li>set()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>set_skip_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">tram::FileReaderParser</a></li>\n<li>set_skip_value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">tram::FileReaderParser</a></li>\n<li>SetActivationCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">tram::TriggerComponent</a></li>\n<li>SetActive()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">tram::Ext::Camera::Camera</a></li>\n<li>SetAngularFactor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">tram::PhysicsComponent</a></li>\n<li>SetAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>SetAnimationStateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>SetAnimationTable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>SetArmature()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">tram::RenderComponent</a></li>\n<li>SetAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>SetAutoLoad()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">tram::Entity</a></li>\n<li>SetAutomaticLoading()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">tram::WorldCell</a></li>\n<li>SetBaseDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">tram::Ext::Kitchensink::Character</a></li>\n<li>SetBobbing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingTilt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetCharacterLoyalty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetCharacterRank()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">tram::TriggerComponent</a></li>\n<li>SetCollisionMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">tram::TriggerComponent</a></li>\n<li>SetCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">tram::ControllerComponent</a></li>\n<li>SetCollisionSize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">tram::RaycastControllerComponent</a></li>\n<li>SetColor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">tram::RenderComponent</a></li>\n<li>SetContents()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">tram::FileWriter</a></li>\n<li>SetControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">tram::PlayerComponent</a></li>\n<li>SetCrouchSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">tram::RaycastControllerComponent</a></li>\n<li>SetDebugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">tram::WorldCell</a></li>\n<li>SetDebugDrawing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">tram::PhysicsComponent</a></li>\n<li>SetDebugInfoDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">tram::ControllerComponent</a></li>\n<li>setDebugMode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>SetDectivationCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">tram::TriggerComponent</a></li>\n<li>SetDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">tram::LightComponent</a></li>\n<li>SetDirectionaLight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">tram::RenderComponent</a></li>\n<li>SetDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">tram::LightComponent</a></li>\n<li>SetDrawTrigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">tram::Trigger</a></li>\n<li>SetEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">tram::Ext::Menu::SignalMenu</a></li>\n<li>SetEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">tram::RenderComponent</a></li>\n<li>SetEventType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">tram::Ext::Menu::EventEmit</a></li>\n<li>SetExponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">tram::LightComponent</a></li>\n<li>SetFade()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">tram::AnimationComponent</a></li>\n<li>SetFarDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">tram::Render::Model</a></li>\n<li>SetFilterCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">tram::TriggerComponent</a></li>\n<li>SetFlag()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">tram::WorldCell</a></li>\n<li>SetFlySpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">tram::RaycastControllerComponent</a></li>\n<li>SetFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">tram::Ext::Camera::Camera</a></li>\n<li>SetFollowingInterpolation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetFollowingLookat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">tram::Ext::Camera::Camera</a></li>\n<li>SetFollowingOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetFrame()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">tram::DecalComponent</a></li>\n<li>SetFriction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">tram::RaycastControllerComponent</a></li>\n<li>SetFunction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">tram::Script::Interface</a></li>\n<li>SetGlobal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">tram::Script::Interface</a></li>\n<li>SetIncrement()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>SetInterceptCallback()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">tram::Message</a></li>\n<li>SetInterior()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">tram::WorldCell</a></li>\n<li>SetInteriorLights()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">tram::WorldCell</a></li>\n<li>SetKeyboardLook()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">tram::PlayerComponent</a></li>\n<li>SetKeyframe()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">tram::AnimationComponent</a></li>\n<li>SetKinematic()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">tram::PhysicsComponent</a></li>\n<li>SetLayer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">tram::RenderComponent</a></li>\n<li>SetLayerMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">tram::Ext::Camera::Camera</a></li>\n<li>SetLightDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">tram::LightComponent</a></li>\n<li>SetLightmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">tram::RenderComponent</a></li>\n<li>SetLinearFactor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">tram::PhysicsComponent</a></li>\n<li>SetListenerTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">tram::Ext::Camera::Camera</a></li>\n<li>SetLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">tram::TriggerComponent</a></li>\n<li>SetLookDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">tram::ControllerComponent</a></li>\n<li>SetMass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">tram::PhysicsComponent</a></li>\n<li>SetMaterial()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">tram::Render::Sprite</a></li>\n<li>SetMaterialFilter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">tram::Render::Material</a></li>\n<li>SetMaterialProperty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">tram::Render::Material</a></li>\n<li>SetMaterialType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">tram::Render::Material</a></li>\n<li>SetMediumList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">tram::FileWriter</a></li>\n<li>SetMessageType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">tram::Ext::Menu::MessageSend</a></li>\n<li>SetModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">tram::TriggerComponent</a></li>\n<li>SetMouselook()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetNearDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">tram::Render::Model</a></li>\n<li>SetNoclip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">tram::PlayerComponent</a></li>\n<li>SetObjective()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>SetOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">tram::Ext::Menu::InterceptMenu</a></li>\n<li>SetOnAnimationFinishCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">tram::AnimationComponent</a></li>\n<li>SetOrientation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">tram::PathFollower</a></li>\n<li>SetParameters()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">tram::Trigger</a></li>\n<li>SetParent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">tram::EntityComponent</a></li>\n<li>SetPause()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">tram::AnimationComponent</a></li>\n<li>SetPersistent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">tram::Entity</a></li>\n<li>SetPicked()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>SetPlaySpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">tram::SpriteComponent</a></li>\n<li>SetPosition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">tram::Ext::Camera::Camera</a></li>\n<li>SetReflectivity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">tram::Render::Material</a></li>\n<li>SetRelation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetRenderDebug()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">tram::RenderComponent</a></li>\n<li>SetRepeating()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">tram::AudioComponent</a></li>\n<li>SetRepeats()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">tram::AnimationComponent</a></li>\n<li>SetRotateFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">tram::TriggerComponent</a></li>\n<li>SetRunSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">tram::RaycastControllerComponent</a></li>\n<li>SetScale()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">tram::RenderComponent</a></li>\n<li>SetSearchList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">tram::FileReader</a></li>\n<li>SetShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">tram::TriggerComponent</a></li>\n<li>SetSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">tram::AudioComponent</a></li>\n<li>SetSource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">tram::Render::Material</a></li>\n<li>SetSourceDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">tram::AudioComponent</a></li>\n<li>SetSpecular()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">tram::Render::Material</a></li>\n<li>SetSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">tram::AnimationComponent</a></li>\n<li>SetSprite()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">tram::SpriteComponent</a></li>\n<li>SetStateAnimation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>SetStateNextState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>SetStepHeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">tram::RaycastControllerComponent</a></li>\n<li>SetStoreCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">tram::TriggerComponent</a></li>\n<li>SetTextureOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">tram::RenderComponent</a></li>\n<li>SetTextureType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">tram::Render::Material</a></li>\n<li>SetTilt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetTransformCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307\">tram::Physics::API::CallbackMotionState</a></li>\n<li>SetUpdateParentTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">tram::PhysicsComponent</a></li>\n<li>SetupModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">tram::Trigger</a></li>\n<li>SetValue()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">tram::ValuePtr</a></li>\n<li>SetVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">tram::Ext::Kitchensink::Quest</a></li>\n<li>SetVelocity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">tram::PhysicsComponent</a></li>\n<li>SetViewTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">tram::Ext::Camera::Camera</a></li>\n<li>SetWalkSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">tram::RaycastControllerComponent</a></li>\n<li>SetWallCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">tram::RaycastControllerComponent</a></li>\n<li>SetWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">tram::AnimationComponent</a></li>\n<li>setWorldTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7\">tram::Physics::API::CallbackMotionState</a></li>\n<li>ShapecastCallback()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1\">tram::Physics::API::ShapecastCallback</a></li>\n<li>ShouldExit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>size()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">tram::StackPool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">tram::ValueArray</a></li>\n<li>skip_linebreak()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">tram::File</a></li>\n<li>skip_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05\">tram::TextReaderParser</a></li>\n<li>skip_whitespace()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897\">tram::TextReaderParser</a></li>\n<li>Sleep()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">tram::PhysicsComponent</a></li>\n<li>Sound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">tram::Sound</a></li>\n<li>SoundGraph()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">tram::Audio::SoundGraph</a></li>\n<li>Sphere()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">tram::Physics::CollisionShape</a></li>\n<li>Spin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">tram::PhysicsComponent</a></li>\n<li>Sprite()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">tram::Render::Sprite</a></li>\n<li>SpriteComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">tram::SpriteComponent</a></li>\n<li>Stack()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">tram::Stack&lt; T &gt;</a></li>\n<li>StackPool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">tram::StackPool&lt; T &gt;</a></li>\n<li>Start()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">tram::TriggerComponent</a></li>\n<li>StaticWorldObject()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">tram::StaticWorldObject</a></li>\n<li>Stop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">tram::AudioComponent</a></li>\n<li>succ()&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">_test_case</a></li>\n<li>SwitchState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">tram::Ext::Kitchensink::AnimationTable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">tram::Ext::Kitchensink::Button</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TemplateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">tram::TemplateComponent</a></li>\n<li>TextReaderParser()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943\">tram::TextReaderParser</a></li>\n<li>TextWriterParser()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c\">tram::TextWriterParser</a></li>\n<li>Tick()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>top()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">tram::Stack&lt; T &gt;</a></li>\n<li>ToString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">tram::Value</a></li>\n<li>Train()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">tram::Ext::Kitchensink::Train</a></li>\n<li>Transition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">tram::Transition</a></li>\n<li>Trigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">tram::Trigger</a></li>\n<li>TriggerAutosave()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">tram::Ext::Kitchensink::TriggerAutosave</a></li>\n<li>TriggerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">tram::TriggerComponent</a></li>\n<li>TriggerHurt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">tram::Ext::Kitchensink::TriggerHurt</a></li>\n<li>TriggerMultiple()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">tram::Ext::Kitchensink::TriggerMultiple</a></li>\n<li>TriggerOnce()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">tram::Ext::Kitchensink::TriggerOnce</a></li>\n<li>TriggerPlayerMovement()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></li>\n<li>TriggerPush()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">tram::Ext::Kitchensink::TriggerPush</a></li>\n<li>TriggerRemove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">tram::Ext::Kitchensink::TriggerRemove</a></li>\n<li>TriggerTeleport()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">tram::Ext::Kitchensink::TriggerTeleport</a></li>\n<li>try_pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">tram::Queue&lt; T &gt;</a></li>\n<li>TurnLeft()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">tram::PathFollower</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">tram::RaycastControllerComponent</a></li>\n<li>TurnRight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">tram::PathFollower</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">tram::RaycastControllerComponent</a></li>\n<li>TurnStraight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">tram::PathFollower</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UID()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">tram::UID</a></li>\n<li>UnequipItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>UnequipSlot()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Unload()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">tram::WorldCell</a></li>\n<li>unlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">tram::Queue&lt; T &gt;</a></li>\n<li>Unlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">tram::Spinlock</a></li>\n<li>Unregister()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">tram::Entity</a></li>\n<li>Update()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">tram::Ext::Camera::FirstPersonCamera</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">tram::SpriteComponent</a></li>\n<li>updateAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">tram::Physics::PathAction</a></li>\n<li>UpdateLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">tram::SpriteComponent</a></li>\n<li>UpdateParameters()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">tram::Trigger</a></li>\n<li>UpdateParentAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">tram::AABBTree</a></li>\n<li>UpdateRenderListObject()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">tram::SpriteComponent</a></li>\n<li>UpdateTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">tram::Entity</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>validate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">tram::Pool&lt; T &gt;</a></li>\n<li>ValidateTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">tram::AABBTree</a></li>\n<li>Value()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">tram::Value</a></li>\n<li>ValueArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">tram::ValueArray</a></li>\n<li>ValuePtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">tram::ValuePtr</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>was_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">tram::File</a></li>\n<li>Water()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">tram::Ext::Kitchensink::Water</a></li>\n<li>WorldCell()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">tram::WorldCell</a></li>\n<li>write_float32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5\">tram::TextWriterParser</a></li>\n<li>write_float64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5\">tram::TextWriterParser</a></li>\n<li>write_int16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c\">tram::TextWriterParser</a></li>\n<li>write_int32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880\">tram::TextWriterParser</a></li>\n<li>write_int64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8\">tram::TextWriterParser</a></li>\n<li>write_int8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc\">tram::TextWriterParser</a></li>\n<li>write_name()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b\">tram::TextWriterParser</a></li>\n<li>write_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5\">tram::TextWriterParser</a></li>\n<li>write_string()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929\">tram::TextWriterParser</a></li>\n<li>write_uint16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4\">tram::TextWriterParser</a></li>\n<li>write_uint32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e\">tram::TextWriterParser</a></li>\n<li>write_uint64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d\">tram::TextWriterParser</a></li>\n<li>write_uint8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389\">tram::TextWriterParser</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>yeet()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">tram::Component&lt; T &gt;</a></li>\n<li>Yeet()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">tram::FileWriter</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_func_~.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index__7E\" name=\"index__7E\"></a>- ~ -</h3><ul>\n<li>~AABBTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">tram::AABBTree</a></li>\n<li>~AIPackage()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">tram::Ext::Kitchensink::AIPackage</a></li>\n<li>~AnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">tram::AnimationComponent</a></li>\n<li>~AudioComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">tram::AudioComponent</a></li>\n<li>~CallbackMotionState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59\">tram::Physics::API::CallbackMotionState</a></li>\n<li>~Camera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">tram::Ext::Camera::Camera</a></li>\n<li>~Component()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">tram::Component&lt; T &gt;</a></li>\n<li>~Console()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">tram::Ext::Menu::Console</a></li>\n<li>~DebugMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">tram::Ext::Menu::DebugMenu</a></li>\n<li>~DecalComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">tram::DecalComponent</a></li>\n<li>~DiskReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228\">tram::DiskReader</a></li>\n<li>~DiskWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587\">tram::DiskWriter</a></li>\n<li>~Entity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">tram::Entity</a></li>\n<li>~EntityComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">tram::EntityComponent</a></li>\n<li>~EntityPicker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">tram::Ext::Menu::EntityPicker</a></li>\n<li>~EntityProperties()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">tram::Ext::Menu::EntityProperties</a></li>\n<li>~EventEmit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">tram::Ext::Menu::EventEmit</a></li>\n<li>~EventListener()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">tram::EventListener</a></li>\n<li>~File()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">tram::File</a></li>\n<li>~FileReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">tram::FileReader</a></li>\n<li>~FileWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">tram::FileWriter</a></li>\n<li>~FirstPersonCamera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>~FPSControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">tram::FPSControllerComponent</a></li>\n<li>~Intercept()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">tram::Ext::Menu::Intercept</a></li>\n<li>~InterceptMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">tram::Ext::Menu::InterceptMenu</a></li>\n<li>~InventoryManager()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">tram::Ext::Kitchensink::InventoryManager</a></li>\n<li>~LightComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">tram::LightComponent</a></li>\n<li>~ListDialog()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">tram::Ext::Kitchensink::ListDialog</a></li>\n<li>~ListInventoryManager()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>~ListSelection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">tram::Ext::Menu::ListSelection</a></li>\n<li>~Menu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">tram::Ext::Menu::Menu</a></li>\n<li>~MessageSend()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">tram::Ext::Menu::MessageSend</a></li>\n<li>~Navmesh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">tram::Navmesh</a></li>\n<li>~Options()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">tram::Ext::Menu::Options</a></li>\n<li>~ParticleComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">tram::ParticleComponent</a></li>\n<li>~Path()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">tram::Path</a></li>\n<li>~PhysicsComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">tram::PhysicsComponent</a></li>\n<li>~Player()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">tram::Player</a></li>\n<li>~PlayerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">tram::PlayerComponent</a></li>\n<li>~PoolPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>~QuestVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>~RaycastControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">tram::RaycastControllerComponent</a></li>\n<li>~RenderComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">tram::RenderComponent</a></li>\n<li>~ResourceProxy()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>~Scriptable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">tram::Scriptable&lt; T &gt;</a></li>\n<li>~SettingsMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>~SignalMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">tram::Ext::Menu::SignalMenu</a></li>\n<li>~SpriteComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">tram::SpriteComponent</a></li>\n<li>~StatisticsMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">tram::Ext::Menu::StatisticsMenu</a></li>\n<li>~SystemMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">tram::Ext::Menu::SystemMenu</a></li>\n<li>~TemplateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">tram::TemplateComponent</a></li>\n<li>~Transition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">tram::Transition</a></li>\n<li>~TriggerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">tram::TriggerComponent</a></li>\n<li>~UID()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">tram::UID</a></li>\n<li>~Value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">tram::Value</a></li>\n<li>~ValuePtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">tram::ValuePtr</a></li>\n<li>~WorldCellProperties()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">tram::Ext::Menu::WorldCellProperties</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>Gather()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>GatherBaseAttributes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GatherFactions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GeneratePlanes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">tram::Transition</a></li>\n<li>generic&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756\">tram::Audio::audiobuffer_t</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e\">tram::Audio::audiosource_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f\">tram::Render::indexarray_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">tram::Render::material_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7\">tram::Render::spritearray_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac\">tram::Render::texturehandle_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8\">tram::Render::vertexarray_t</a></li>\n<li>get()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>get_transform_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba\">tram::Physics::API::CallbackMotionState</a></li>\n<li>GetAABBMax()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">tram::Render::Model</a></li>\n<li>GetAABBMin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">tram::Render::Model</a></li>\n<li>GetAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>GetAnimationStateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>GetAnswer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>GetAnyShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c\">tram::Render::API::LinkedShader</a></li>\n<li>GetArmature()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">tram::Render::Model</a></li>\n<li>GetAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>GetAttributeBase()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>GetBaseDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5\">tram::Ext::Kitchensink::Character</a></li>\n<li>GetBob()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>GetCell()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">tram::Transition</a></li>\n<li>GetCharacterLoyalty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetCharacterRank()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">tram::TriggerComponent</a></li>\n<li>GetCollisionMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">tram::TriggerComponent</a></li>\n<li>GetColor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">tram::Render::Material</a></li>\n<li>GetContents()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">tram::FileReader</a></li>\n<li>GetControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>getDebugMode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>GetDirectionFacing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0\">tram::PlayerComponent</a></li>\n<li>GetDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">tram::LightComponent</a></li>\n<li>GetEntities()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">tram::WorldCell</a></li>\n<li>GetEntityCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">tram::WorldCell</a></li>\n<li>GetEnvironmentProbes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">tram::Render::LightGraph</a></li>\n<li>GetEquippedItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>GetFarDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">tram::Render::Model</a></li>\n<li>GetFirst()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">tram::Pool&lt; T &gt;</a></li>\n<li>GetFloat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">tram::Value</a></li>\n<li>GetFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265\">tram::Ext::Camera::Camera</a></li>\n<li>GetFormat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f\">tram::Render::API::LinkedShader</a></li>\n<li>GetFragmentShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c\">tram::Render::API::LinkedShader</a></li>\n<li>GetFrames()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">tram::Render::Sprite</a></li>\n<li>GetGlobal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697\">tram::Script::Interface</a></li>\n<li>GetHeader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">tram::Render::Animation</a></li>\n<li>GetHeaderCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">tram::Render::Animation</a></li>\n<li>GetHeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">tram::Render::Material</a></li>\n<li>GetID()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f\">tram::Entity</a></li>\n<li>GetIndexArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">tram::Render::Model</a></li>\n<li>GetIndexRanges()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">tram::Render::Model</a></li>\n<li>GetInt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">tram::Value</a></li>\n<li>GetItemCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>GetItems()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>GetKeyframeCount()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">tram::Render::Animation</a></li>\n<li>GetKeyframes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">tram::Render::Animation</a></li>\n<li>GetLast()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">tram::Pool&lt; T &gt;</a></li>\n<li>GetLastPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">tram::Stack&lt; T &gt;</a></li>\n<li>GetLength()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">tram::Stack&lt; T &gt;</a></li>\n<li>GetLightmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8\">tram::RenderComponent</a></li>\n<li>GetLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b\">tram::RenderComponent</a></li>\n<li>GetLookDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb\">tram::ControllerComponent</a></li>\n<li>GetLookRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6\">tram::PlayerComponent</a></li>\n<li>GetMaterial()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">tram::Render::Sprite</a></li>\n<li>GetMaterials()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">tram::Render::Model</a></li>\n<li>GetMediumList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">tram::FileWriter</a></li>\n<li>GetModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d\">tram::TriggerComponent</a></li>\n<li>GetName()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957\">tram::Render::API::VertexShader</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe\">tram::Script::Interface</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">tram::WorldCell</a></li>\n<li>GetNavmeshNode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">tram::Navmesh</a></li>\n<li>GetNearDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">tram::Render::Model</a></li>\n<li>GetNodes()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">tram::Navmesh</a></li>\n<li>GetOctant()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">tram::Octree&lt; T &gt;</a></li>\n<li>GetOrigin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">tram::Render::Model</a></li>\n<li>GetParent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009\">tram::EntityComponent</a></li>\n<li>GetPool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>GetPose()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1\">tram::AnimationComponent</a></li>\n<li>GetPosition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">tram::PathFollower</a></li>\n<li>GetPrompts()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>GetProperty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">tram::Render::Material</a></li>\n<li>GetReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">tram::FileReader</a></li>\n<li>GetReferences()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">tram::Resource</a></li>\n<li>GetRelation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7\">tram::Ext::Kitchensink::Faction</a></li>\n<li>GetResource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>GetRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75\">tram::RenderComponent</a></li>\n<li>GetScale()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736\">tram::RenderComponent</a></li>\n<li>GetSearchList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">tram::FileReader</a></li>\n<li>GetShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535\">tram::Render::API::FragmentShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c\">tram::Render::API::VertexShader</a></li>\n<li>GetShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098\">tram::Physics::CollisionModel</a></li>\n<li>GetSignalTable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb\">tram::Entity</a></li>\n<li>GetSize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">tram::Pool&lt; T &gt;</a></li>\n<li>GetSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>GetSpecularExponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">tram::Render::Material</a></li>\n<li>GetSpecularTransparency()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">tram::Render::Material</a></li>\n<li>GetSpecularWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">tram::Render::Material</a></li>\n<li>GetSprite()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f\">tram::SpriteComponent</a></li>\n<li>GetStatus()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">tram::FileWriter</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">tram::Resource</a></li>\n<li>GetStoredCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3\">tram::TriggerComponent</a></li>\n<li>GetTangent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">tram::PathFollower</a></li>\n<li>GetTexture()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">tram::Render::Material</a></li>\n<li>GetTransitions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">tram::WorldCell</a></li>\n<li>GetType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">tram::Marker</a>, <a class=\"el\" href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">tram::ValuePtr</a></li>\n<li>GetValidNextTopics()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>GetVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">tram::Ext::Kitchensink::Quest</a></li>\n<li>GetVelocity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094\">tram::PhysicsComponent</a></li>\n<li>GetVertexArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">tram::Render::Model</a></li>\n<li>GetVertexFormat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">tram::Render::Model</a></li>\n<li>GetVertexShader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa\">tram::Render::API::LinkedShader</a></li>\n<li>GetVolume()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">tram::WorldCell</a></li>\n<li>GetWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>GetWidth()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">tram::Render::Material</a></li>\n<li>getWorldTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f\">tram::Physics::API::CallbackMotionState</a></li>\n<li>GetWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">tram::FileWriter</a></li>\n<li>gl&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">tram::Render::material_t</a></li>\n<li>gl_index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">tram::Render::indexarray_t</a></li>\n<li>gl_texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">tram::Render::API::GLMaterial</a></li>\n<li>gl_texture_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">tram::Render::texturehandle_t</a></li>\n<li>gl_vertex_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">tram::Render::vertexarray_t</a></li>\n<li>gl_vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">tram::Render::vertexarray_t</a></li>\n<li>GLDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">tram::Render::API::GLDrawListEntry</a></li>\n<li>gravity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">tram::ParticleComponent</a></li>\n<li>Greater()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>GreaterOrEqual()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>groups&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">tram::Render::DynamicModelData</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>h&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752\">tram::GUI::FrameObject</a></li>\n<li>half_extent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519\">tram::Render::LightTree::Light</a></li>\n<li>harmonic&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">tram::Render::API::GLDrawListEntry</a></li>\n<li>has_light&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">tram::Render::LightGraph::Node</a></li>\n<li>has_reflection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">tram::Render::LightGraph::Node</a></li>\n<li>HasAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>HasAutomaticLoading()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">tram::WorldCell</a></li>\n<li>HasBaseClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>HasCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1\">tram::Ext::Kitchensink::Faction</a></li>\n<li>HasClass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f\">tram::Ext::Kitchensink::Character</a></li>\n<li>hash_parameter&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">tram::Hashmap&lt; T &gt;</a></li>\n<li>Hashmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">tram::Hashmap&lt; T &gt;</a></li>\n<li>HasInteriorLighting()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">tram::WorldCell</a></li>\n<li>head&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">tram::Render::Bone</a></li>\n<li>height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">tram::Physics::CollisionShape</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">tram::Render::SpriteFrame</a></li>\n<li>helper&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">tram::Render::API::SWVertexArray</a></li>\n<li>history_cursor&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">tram::Ext::Menu::Console</a></li>\n<li>Hull()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">tram::Physics::CollisionShape</a></li>\n<li>hull_points&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">tram::Physics::CollisionShape</a></li>\n<li>hull_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>icon_font&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>icon_glyph&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>id&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f\">tram::SharedEntityData</a></li>\n<li>ind&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3\">tram::Render::API::DynamicVertex</a></li>\n<li>index()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">tram::Pool&lt; T &gt;</a></li>\n<li>index_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">tram::Render::Model</a></li>\n<li>index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">tram::Render::API::D3DDrawListEntry</a></li>\n<li>index_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">tram::Render::API::SWIndexArray</a></li>\n<li>index_in_bucket&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95\">tram::Render::BucketMapping</a></li>\n<li>index_length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">tram::Render::IndexRange</a></li>\n<li>index_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">tram::Render::IndexRange</a></li>\n<li>index_ranges&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">tram::Render::Model</a></li>\n<li>indices&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">tram::Render::API::SWIndexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">tram::Render::DynamicModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">tram::Render::StaticModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">tram::Render::Triangle</a></li>\n<li>init()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a451ffe51f9f1e27648f7a5f585eb1ea4\">tram::Component&lt; T &gt;</a></li>\n<li>Init()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7\">tram::EntityComponent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">tram::TemplateComponent</a></li>\n<li>initial_velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">tram::ParticleComponent</a></li>\n<li>initial_velocity_randomness&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">tram::ParticleComponent</a></li>\n<li>Insert()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">tram::Octree&lt; T &gt;</a></li>\n<li>InsertDrawListEntries()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1\">tram::RenderComponent</a></li>\n<li>InsertLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">tram::AABBTree</a></li>\n<li>INT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">tram::Render::VertexAttribute</a></li>\n<li>int32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707\">tram::Settings::SettingInfo</a></li>\n<li>int32_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">tram::ValuePtr</a></li>\n<li>int32_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">tram::Value</a></li>\n<li>intercept_enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">tram::Ext::Menu::DebugMenu</a></li>\n<li>intercept_menu&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">tram::Ext::Menu::DebugMenu</a></li>\n<li>INTERIOR&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">tram::WorldCell</a></li>\n<li>INTERIOR_LIGHTING&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">tram::WorldCell</a></li>\n<li>interpolate&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>intersection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">tram::Render::AABB::QueryResponse</a></li>\n<li>into_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>Inventory()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Is()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>is_continue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17\">tram::TextReaderParser</a></li>\n<li>is_empty()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">tram::UID</a></li>\n<li>is_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b\">tram::TextReaderParser</a></li>\n<li>is_in_air&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">tram::RaycastControllerComponent</a></li>\n<li>is_init&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">tram::EntityComponent</a></li>\n<li>is_open()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13\">tram::File</a></li>\n<li>is_ready&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">tram::EntityComponent</a></li>\n<li>is_valid()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">tram::UID</a></li>\n<li>IsAutoLoad()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12\">tram::Entity</a></li>\n<li>IsBool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">tram::ValuePtr</a></li>\n<li>IsChanged()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0\">tram::Entity</a></li>\n<li>IsDebugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">tram::WorldCell</a></li>\n<li>IsDebugInfoDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2\">tram::ControllerComponent</a></li>\n<li>IsDeleted()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee\">tram::Entity</a></li>\n<li>IsDrawTrigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77\">tram::Trigger</a></li>\n<li>IsEquippedItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>IsEquippedSlot()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>IsFloat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">tram::ValuePtr</a></li>\n<li>IsInFaction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e\">tram::Ext::Kitchensink::Character</a></li>\n<li>IsInit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a\">tram::EntityComponent</a></li>\n<li>IsInside()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">tram::WorldCell</a></li>\n<li>IsInt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">tram::ValuePtr</a></li>\n<li>IsInterior()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">tram::WorldCell</a></li>\n<li>IsLeaf()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>IsLightDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b\">tram::LightComponent</a></li>\n<li>IsLoaded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">tram::WorldCell</a></li>\n<li>IsLoadedFromDisk()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a\">tram::Entity</a></li>\n<li>IsLoadFailed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">tram::Resource</a></li>\n<li>IsMet()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">tram::Ext::Kitchensink::DialogCondition</a></li>\n<li>IsName()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">tram::Value</a></li>\n<li>IsNode()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>IsNot()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>IsPersistent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a\">tram::Entity</a></li>\n<li>IsPlaying()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58\">tram::AudioComponent</a></li>\n<li>IsQuat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">tram::Value</a></li>\n<li>IsReady()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f\">tram::EntityComponent</a></li>\n<li>IsSourceDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58\">tram::AudioComponent</a></li>\n<li>IsString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">tram::Value</a></li>\n<li>IsVec2()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">tram::Value</a></li>\n<li>IsVec3()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">tram::Value</a></li>\n<li>IsVec4()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">tram::Value</a></li>\n<li>item&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>item_class&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>ItemCount()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>items&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>iterator()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">tram::Pool&lt; T &gt;::iterator</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_j\" name=\"index_j\"></a>- j -</h3><ul>\n<li>Jump()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8\">tram::RaycastControllerComponent</a></li>\n<li>jump_frames&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>key&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431\">tram::Settings::RawSetting</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">tram::UID</a></li>\n<li>KEYCHAR&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">tram::Event</a></li>\n<li>KEYDOWN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">tram::Event</a></li>\n<li>keyframe_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">tram::Render::KeyframeHeader</a></li>\n<li>keyframe_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">tram::Render::KeyframeHeader</a></li>\n<li>keyframes&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>KEYPRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">tram::Event</a></li>\n<li>KEYUP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">tram::Event</a></li>\n<li>KILL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">tram::Signal</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>l00&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">tram::Render::SphericalHarmonic</a></li>\n<li>l10&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">tram::Render::SphericalHarmonic</a></li>\n<li>l11&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">tram::Render::SphericalHarmonic</a></li>\n<li>l1m1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">tram::Render::SphericalHarmonic</a></li>\n<li>l20&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">tram::Render::SphericalHarmonic</a></li>\n<li>l21&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">tram::Render::SphericalHarmonic</a></li>\n<li>l22&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">tram::Render::SphericalHarmonic</a></li>\n<li>l2m1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">tram::Render::SphericalHarmonic</a></li>\n<li>l2m2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">tram::Render::SphericalHarmonic</a></li>\n<li>last&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">tram::StackPool&lt; T &gt;</a></li>\n<li>last_activate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">tram::Ext::Kitchensink::Button</a></li>\n<li>LAST_EVENT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">tram::Event</a></li>\n<li>LAST_MESSAGE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">tram::Message</a></li>\n<li>last_path&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">tram::Audio::Spatial::AudioSource</a></li>\n<li>LAST_SIGNAL&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">tram::Signal</a></li>\n<li>last_tick&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>lastend&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">tram::Stack&lt; T &gt;</a></li>\n<li>lastfree&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">tram::Pool&lt; T &gt;</a></li>\n<li>Layer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">tram::Ext::Kitchensink::ListDialog</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc\">tram::Ext::Menu::Console</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200\">tram::Ext::Menu::DebugMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439\">tram::Ext::Menu::ListSelection</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557\">tram::Ext::Menu::Options</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f\">tram::Ext::Menu::SettingsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7\">tram::Ext::Menu::SignalMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9\">tram::Ext::Menu::StatisticsMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8\">tram::Ext::Menu::SystemMenu</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>layer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">tram::RenderComponent</a></li>\n<li>layer_mask&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">tram::Ext::Camera::Camera</a></li>\n<li>leaf&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6\">tram::Render::AABB::AABBLeaf</a></li>\n<li>left&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">tram::NavmeshNode</a></li>\n<li>length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">tram::Audio::Spatial::AudioBuffer</a></li>\n<li>Less()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>LessOrEqual()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>light&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">tram::Light</a></li>\n<li>Light()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff\">tram::Light</a></li>\n<li>light&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">tram::LightComponent</a></li>\n<li>LightGraph()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">tram::Render::LightGraph</a></li>\n<li>lightmap&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">tram::StaticWorldObject</a></li>\n<li>lights&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">tram::Render::API::SWDrawListEntry</a></li>\n<li>lighttex&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">tram::Render::StaticModelVertex</a></li>\n<li>limit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">tram::Signal</a></li>\n<li>Link()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">tram::WorldCell</a></li>\n<li>list&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">tram::Ext::Menu::ListSelection</a></li>\n<li>ListDialog()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">tram::Ext::Kitchensink::ListDialog</a></li>\n<li>listener&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">tram::EventListener</a></li>\n<li>LISTENER_COMPONENT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">tram::ListenerInfo</a></li>\n<li>LISTENER_DATA_FUNCTION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\">tram::ListenerInfo</a></li>\n<li>LISTENER_DELETED&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\">tram::ListenerInfo</a></li>\n<li>LISTENER_ENTITY&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\">tram::ListenerInfo</a></li>\n<li>LISTENER_FUNCTION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\">tram::ListenerInfo</a></li>\n<li>listener_ideal_angle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>ListenerType&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">tram::ListenerInfo</a></li>\n<li>ListSelection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f\">tram::Ext::Menu::ListSelection</a></li>\n<li>lit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84\">tram::Render::API::StaticVertex</a></li>\n<li>lit_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189\">tram::Render::API::StaticVertex</a></li>\n<li>lit_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19\">tram::Render::API::StaticVertex</a></li>\n<li>Load()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">tram::WorldCell</a></li>\n<li>load_fail&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">tram::Resource</a></li>\n<li>LoadAll()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">tram::Render::Animation</a></li>\n<li>LOADED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">tram::WorldCell</a></li>\n<li>LOADED_FROM_DISK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">tram::WorldCell</a></li>\n<li>LoadFromDisk()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">tram::WorldCell</a></li>\n<li>LoadFromMemory()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource</a></li>\n<li>LoadMaterialInfo()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">tram::Render::Material</a></li>\n<li>LoadScript()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434\">tram::Script::Interface</a></li>\n<li>location&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">tram::ParticleComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">tram::SpriteComponent</a></li>\n<li>lock&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">tram::Audio::Spatial::AudioRender</a></li>\n<li>LOCK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">tram::Message</a></li>\n<li>lock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">tram::Queue&lt; T &gt;</a></li>\n<li>Lock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">tram::Spinlock</a></li>\n<li>LOCKED_USE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">tram::Signal</a></li>\n<li>LOOK_AT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">tram::Event</a></li>\n<li>look_direction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">tram::ControllerComponent</a></li>\n<li>LookupEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">tram::Render::LightGraph</a></li>\n<li>LookupFilter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f\">tram::Audio::SoundGraph</a></li>\n<li>LookupHarmonic()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">tram::Render::LightGraph</a></li>\n<li>loyalty&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">tram::Ext::Kitchensink::BaseFactionRank</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">tram::Ext::Kitchensink::FactionRank</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9\">tram::Component&lt; T &gt;</a></li>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9\">tram::Entity</a></li>\n<li>make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec\">tram::EventListener</a></li>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>make&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></li>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">tram::WorldCell</a></li>\n<li>MakePattern()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">tram::Render::Material</a></li>\n<li>Marker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">tram::Marker</a></li>\n<li>material&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">tram::Render::AABBTriangle</a></li>\n<li>Material()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">tram::Render::Material</a></li>\n<li>material&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">tram::Render::Sprite</a></li>\n<li>material_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">tram::Render::IndexRange</a></li>\n<li>material_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">tram::Render::IndexRange</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f\">tram::Render::TriangleBucket</a></li>\n<li>materials&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">tram::Render::IndexRange</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">tram::Render::Model</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088\">tram::Render::TriangleBucket</a></li>\n<li>matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">tram::Render::API::SWDrawListEntry</a></li>\n<li>max&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">tram::AABBTree::Node</a></li>\n<li>max_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">tram::Hashmap&lt; T &gt;</a></li>\n<li>maxSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">tram::Pool&lt; T &gt;</a></li>\n<li>maybe_flag&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28\">tram::Settings::RawSetting</a></li>\n<li>medium&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">tram::FileSource</a></li>\n<li>memory_end&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">tram::Queue&lt; T &gt;</a></li>\n<li>memory_start&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">tram::Queue&lt; T &gt;</a></li>\n<li>MergeAABBMax()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">tram::AABBTree</a></li>\n<li>MergeAABBMin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">tram::AABBTree</a></li>\n<li>Mesh()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">tram::Physics::CollisionShape</a></li>\n<li>mesh_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">tram::Physics::CollisionShape</a></li>\n<li>mesh_triangles&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">tram::Physics::CollisionShape</a></li>\n<li>message&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0\">tram::Ext::Menu::LogIntercept</a></li>\n<li>message_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">tram::Signal</a></li>\n<li>MessageHandler()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2\">tram::Trigger</a></li>\n<li>mid_point&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>midpoint_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">tram::Render::SpriteFrame</a></li>\n<li>midpoint_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">tram::Render::SpriteFrame</a></li>\n<li>min&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">tram::AABBTree::Node</a></li>\n<li>mode&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">tram::File</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">tram::Render::API::SWTexture</a></li>\n<li>model&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>Model()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">tram::Render::Model</a></li>\n<li>model&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">tram::Trigger</a></li>\n<li>model_aabb&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">tram::Render::Model</a></li>\n<li>model_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">tram::Render::Model</a></li>\n<li>modelLights&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>motion_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>mouselook&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>Move()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0\">tram::RaycastControllerComponent</a></li>\n<li>move_direction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">tram::RaycastControllerComponent</a></li>\n<li>move_magnitude&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">tram::RaycastControllerComponent</a></li>\n<li>MOVE_PICK_UP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">tram::Message</a></li>\n<li>MoveTo()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226\">tram::Ext::Kitchensink::DialogController</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>name&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">tram::Ext::Kitchensink::AnimStateSpace</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">tram::Ext::Kitchensink::Attribute</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">tram::Ext::Kitchensink::BaseAttribute</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">tram::Ext::Kitchensink::Faction</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">tram::Render::Bone</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">tram::SharedEntityData</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">tram::StackPool&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848\">tram::System::SystemInfo</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">tram::WorldCell</a></li>\n<li>name_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">tram::ValuePtr</a></li>\n<li>name_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">tram::Value</a></li>\n<li>Navmesh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">tram::Navmesh</a></li>\n<li>nearest&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>New()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>NewNode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">tram::Octree&lt; T &gt;</a></li>\n<li>next&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">tram::NavmeshNode</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">tram::PathFollower</a></li>\n<li>next_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>next_topics&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>no_quote()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">tram::UID</a></li>\n<li>nodes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">tram::Graph</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">tram::Render::LightGraph</a></li>\n<li>NON_PERSISTENT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295\">tram::Entity</a></li>\n<li>NON_SERIALIZABLE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3\">tram::Entity</a></li>\n<li>NONE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">tram::Signal</a></li>\n<li>normal&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">tram::Physics::Collision</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">tram::Render::AABBTriangle</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">tram::Render::StaticModelVertex</a></li>\n<li>Not()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>notification_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2\">tram::Async::ResourceRequest</a></li>\n<li>nrm&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910\">tram::Render::API::StaticVertex</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>objective&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Objective()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Octant&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_LEFT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_LEFT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_RIGHT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_BOTTOM_RIGHT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_LEFT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_LEFT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_RIGHT_BACK&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">tram::Octree&lt; T &gt;</a></li>\n<li>OCTANT_TOP_RIGHT_FRONT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">tram::Octree&lt; T &gt;</a></li>\n<li>octants&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>Octree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">tram::Octree&lt; T &gt;</a></li>\n<li>offset&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">tram::Render::VertexAttribute</a></li>\n<li>offset_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">tram::Render::SpriteFrame</a></li>\n<li>offset_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">tram::Render::SpriteFrame</a></li>\n<li>OnAdded()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnEquip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnIdle()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnPrimaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnRemoved()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnSecondaryAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OnUnequip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>OPEN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">tram::Signal</a></li>\n<li>operator bool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#ac42050ff047751f66c1549099461d047\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4\">tram::EventListener</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071\">tram::ResourceProxy&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520\">tram::Value</a></li>\n<li>operator bool *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4\">tram::ValuePtr</a></li>\n<li>operator char const *()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9\">tram::UID</a></li>\n<li>operator const char *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe\">tram::Value</a></li>\n<li>operator const char **()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967\">tram::ValuePtr</a></li>\n<li>operator double()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470\">tram::Value</a></li>\n<li>operator float()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0\">tram::Value</a></li>\n<li>operator float *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b\">tram::ValuePtr</a></li>\n<li>operator int16_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">tram::Value</a></li>\n<li>operator int32_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69\">tram::Value</a></li>\n<li>operator int32_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86\">tram::ValuePtr</a></li>\n<li>operator int64_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85\">tram::Value</a></li>\n<li>operator int8_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa919d5718da818826402272ff33bf164\">tram::Value</a></li>\n<li>operator name_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9\">tram::Value</a></li>\n<li>operator name_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5\">tram::ValuePtr</a></li>\n<li>operator quat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2\">tram::Value</a></li>\n<li>operator quat *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0\">tram::ValuePtr</a></li>\n<li>operator std::string()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801\">tram::UID</a></li>\n<li>operator T()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0\">tram::Settings::Property&lt; T &gt;</a></li>\n<li>operator T*()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd\">tram::Component&lt; T &gt;</a></li>\n<li>operator uint16_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748\">tram::Value</a></li>\n<li>operator uint32_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154\">tram::Value</a></li>\n<li>operator uint32_t *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7\">tram::ValuePtr</a></li>\n<li>operator uint64_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577\">tram::Value</a></li>\n<li>operator uint8_t()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987\">tram::Value</a></li>\n<li>operator Value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8\">tram::ValuePtr</a></li>\n<li>operator vec2()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175\">tram::Value</a></li>\n<li>operator vec2 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108\">tram::ValuePtr</a></li>\n<li>operator vec3()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45\">tram::Value</a></li>\n<li>operator vec3 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45\">tram::ValuePtr</a></li>\n<li>operator vec4()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189\">tram::Value</a></li>\n<li>operator vec4 *()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063\">tram::ValuePtr</a></li>\n<li>operator!=&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">tram::Pool&lt; T &gt;::iterator</a></li>\n<li>operator*()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>operator++()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">tram::Pool&lt; T &gt;::iterator</a></li>\n<li>operator-&gt;()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">tram::PoolPtr&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>operator=()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">tram::ResourceProxy&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">tram::Value</a></li>\n<li>operator==&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">tram::UID</a>, <a class=\"el\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">tram::Value</a></li>\n<li>operator[]()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">tram::ValueArray</a></li>\n<li>Options()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22\">tram::Ext::Menu::Options</a></li>\n<li>Or()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>origin&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">tram::Render::Model</a></li>\n<li>override_stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">tram::Ext::Kitchensink::AIAgent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">tram::Physics::CollisionTriangle</a></li>\n<li>p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">tram::Physics::CollisionTriangle</a></li>\n<li>p2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">tram::Physics::CollisionTriangle</a></li>\n<li>package_stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>padding&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e\">tram::Async::ResourceRequest</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf\">tram::Render::API::ShaderUniformMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">tram::Render::API::SWIndexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">tram::Render::Keyframe</a></li>\n<li>padding2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">tram::Render::API::GLLight</a></li>\n<li>panning&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>panning_delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>param1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">tram::Audio::FilterParameters</a></li>\n<li>param2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">tram::Audio::FilterParameters</a></li>\n<li>parameter_string&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">tram::Ext::Menu::MessageSend</a></li>\n<li>parameter_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">tram::Ext::Menu::MessageSend</a></li>\n<li>parameters&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">tram::Audio::SoundGraph::Node</a></li>\n<li>parent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">tram::Ext::Kitchensink::AnimStateSpace</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">tram::Render::Bone</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>particle_max_age&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">tram::ParticleComponent</a></li>\n<li>ParticleComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">tram::ParticleComponent</a></li>\n<li>particles&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">tram::ParticleComponent</a></li>\n<li>path&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">tram::File</a>, <a class=\"el\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">tram::FileSource</a></li>\n<li>Path()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">tram::Path</a></li>\n<li>path&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">tram::PathFollower</a></li>\n<li>PathAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c\">tram::Physics::PathAction</a></li>\n<li>PathFollower&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">tram::PathFollower</a></li>\n<li>paths&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">tram::Audio::Spatial::AudioSource</a></li>\n<li>pause&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>Pause()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df\">tram::AudioComponent</a></li>\n<li>pause&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">tram::Ext::Kitchensink::Button</a></li>\n<li>Pause()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972\">tram::SpriteComponent</a></li>\n<li>pause_last&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>PAUSE_LINE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f\">tram::File</a></li>\n<li>pause_next&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">tram::File</a></li>\n<li>pause_on_last_frame&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>Perform()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">tram::Ext::Kitchensink::DialogAction</a></li>\n<li>physics_body&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">tram::Player</a></li>\n<li>physicscomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">tram::Ext::Kitchensink::Water</a></li>\n<li>PhysicsComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d\">tram::PhysicsComponent</a></li>\n<li>physicscomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">tram::StaticWorldObject</a></li>\n<li>Pickup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0\">tram::Ext::Kitchensink::Pickup</a></li>\n<li>PING&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">tram::Message</a></li>\n<li>pitch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>pixels&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">tram::Render::API::SWTexture</a></li>\n<li>planes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">tram::Transition</a></li>\n<li>Play()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1\">tram::SpriteComponent</a></li>\n<li>play_on_start&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">tram::AudioComponent</a></li>\n<li>Player()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7\">tram::Player</a></li>\n<li>PlayerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f\">tram::PlayerComponent</a></li>\n<li>PlaySound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">tram::Ext::Kitchensink::SoundTable</a></li>\n<li>plomp&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">tram::Player</a></li>\n<li>point&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">tram::Audio::Spatial::PathTracingResult</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">tram::Octree&lt; T &gt;::NearestSearch</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">tram::Physics::Collision</a></li>\n<li>point1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">tram::Render::AABBTriangle</a></li>\n<li>point2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">tram::Render::AABBTriangle</a></li>\n<li>point3&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">tram::Render::AABBTriangle</a></li>\n<li>points&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f\">tram::Render::API::ClipTriangle</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">tram::Transition</a></li>\n<li>Poll()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">tram::TriggerComponent</a></li>\n<li>Pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">tram::Pool&lt; T &gt;</a></li>\n<li>pool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_proxy.html#aa4966ced53d457eaf4047aada15c0ddd\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>Pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::RaycastControllerComponent</a></li>\n<li>poolName&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">tram::Pool&lt; T &gt;</a></li>\n<li>PoolPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>poolSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">tram::Pool&lt; T &gt;</a></li>\n<li>Pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">tram::Ext::Menu::Menu</a></li>\n<li>pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">tram::Stack&lt; T &gt;</a></li>\n<li>pos&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91\">tram::Render::API::ColorVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521\">tram::Render::API::StaticVertex</a></li>\n<li>pos_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2\">tram::Render::API::StaticVertex</a></li>\n<li>pos_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6\">tram::Render::API::StaticVertex</a></li>\n<li>pos_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93\">tram::Render::API::StaticVertex</a></li>\n<li>pose&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">tram::AnimationComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">tram::Render::Pose</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">tram::RenderComponent</a></li>\n<li>position&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">tram::Audio::SoundGraph::Node</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">tram::Audio::Spatial::AudioSource</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">tram::NavmeshNode</a>, <a class=\"el\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">tram::Node</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431\">tram::Physics::API::CallbackMotionState</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">tram::Render::LightGraph::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc\">tram::Render::LightTree::Light</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">tram::SharedEntityData</a></li>\n<li>Post()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">tram::Event</a></li>\n<li>poster&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">tram::Event</a></li>\n<li>prev&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">tram::NavmeshNode</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">tram::PathFollower</a></li>\n<li>Print()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">tram::AABBTree::Node</a></li>\n<li>Process()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868\">tram::Ext::Kitchensink::AIPackage</a></li>\n<li>progress&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">tram::PathFollower</a></li>\n<li>PROGRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">tram::Signal</a></li>\n<li>Project()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">tram::PathFollower</a></li>\n<li>projection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>projection_matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc\">tram::Render::API::LayerParameters</a></li>\n<li>prompt&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>property&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">tram::Render::Material</a></li>\n<li>Property()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">tram::Settings::Property&lt; T &gt;</a></li>\n<li>ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>Push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4\">tram::PhysicsComponent</a></li>\n<li>push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">tram::Queue&lt; T &gt;</a></li>\n<li>Push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4\">tram::RaycastControllerComponent</a></li>\n<li>push()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">tram::Stack&lt; T &gt;</a></li>\n<li>PushOverride()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2\">tram::Ext::Kitchensink::AIAgent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_prop.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Properties</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>PROPERTY_METAL&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a7e3b38b78a8cf0bb37f2bf22281d7928\">tram::Render::Material</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>quat_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">tram::ValuePtr</a></li>\n<li>quat_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">tram::Value</a></li>\n<li>quest&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">tram::Ext::Kitchensink::DialogAction</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">tram::Ext::Kitchensink::DialogCondition</a></li>\n<li>Quest()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">tram::Ext::Kitchensink::Quest</a></li>\n<li>quest1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>quest2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>QuestEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb\">tram::Ext::Kitchensink::QuestEntity</a></li>\n<li>QuestVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Queue()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">tram::Queue&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>radius&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">tram::Physics::CollisionShape</a></li>\n<li>radius_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">tram::Physics::CollisionShape</a></li>\n<li>radius_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">tram::Physics::CollisionShape</a></li>\n<li>rank&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">tram::Ext::Kitchensink::BaseFactionRank</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">tram::Ext::Kitchensink::FactionRank</a></li>\n<li>ranks&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">tram::Ext::Kitchensink::Faction</a></li>\n<li>RaycastControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9\">tram::RaycastControllerComponent</a></li>\n<li>READ&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d\">tram::File</a></li>\n<li>read_float32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142\">tram::TextReaderParser</a></li>\n<li>read_float64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d\">tram::TextReaderParser</a></li>\n<li>read_int16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad\">tram::TextReaderParser</a></li>\n<li>read_int32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd\">tram::TextReaderParser</a></li>\n<li>read_int64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316\">tram::TextReaderParser</a></li>\n<li>read_int8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e\">tram::TextReaderParser</a></li>\n<li>read_line()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8\">tram::TextReaderParser</a></li>\n<li>read_name()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9\">tram::TextReaderParser</a></li>\n<li>read_string()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516\">tram::TextReaderParser</a></li>\n<li>read_token()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3\">tram::TextReaderParser</a></li>\n<li>read_uint16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de\">tram::TextReaderParser</a></li>\n<li>read_uint32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c\">tram::TextReaderParser</a></li>\n<li>read_uint64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f\">tram::TextReaderParser</a></li>\n<li>read_uint8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023\">tram::TextReaderParser</a></li>\n<li>reader&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">tram::File</a></li>\n<li>reader_parser&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">tram::File</a></li>\n<li>READY&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">tram::Resource</a></li>\n<li>Recalculate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b\">tram::Ext::Kitchensink::AttributeInfo</a></li>\n<li>receiver&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">tram::Signal</a></li>\n<li>RecoverFromCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45\">tram::RaycastControllerComponent</a></li>\n<li>ref_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5\">tram::Render::AABB::AABBLeaf</a></li>\n<li>references&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">tram::Resource</a></li>\n<li>reflection_absorption&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflection_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflections&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflectivity&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">tram::Render::Material</a></li>\n<li>Refresh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a\">tram::AnimationComponent</a></li>\n<li>RefreshAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433\">tram::RenderComponent</a></li>\n<li>Register()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">tram::Marker</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">tram::Message</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396\">tram::Render::API::LinkedShader</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2\">tram::Trigger</a></li>\n<li>registered&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2\">tram::Render::RegisteredVertexDefinition</a></li>\n<li>RegisterType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe\">tram::Entity</a></li>\n<li>RegisterUniformBlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2\">tram::Render::API::LinkedShader</a></li>\n<li>relations&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">tram::Ext::Kitchensink::Faction</a></li>\n<li>Remove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">tram::Ext::Menu::Menu</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">tram::WorldCell</a></li>\n<li>RemoveCharacter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f\">tram::Ext::Kitchensink::Faction</a></li>\n<li>RemoveEffect()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>RemoveHierarchy()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">tram::AABBTree</a></li>\n<li>RemoveItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">tram::Ext::Kitchensink::InventoryManager</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>RemoveLeaf()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">tram::Octree&lt; T &gt;</a></li>\n<li>RemoveListener()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">tram::Event</a></li>\n<li>RemoveReference()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">tram::Resource</a></li>\n<li>render_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">tram::RenderComponent</a></li>\n<li>rendercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773\">tram::Render::AABB::AABBLeaf</a></li>\n<li>RenderComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285\">tram::RenderComponent</a></li>\n<li>rendercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">tram::Trigger</a></li>\n<li>Reparent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590\">tram::AnimationComponent</a></li>\n<li>repeat&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">tram::AudioComponent</a></li>\n<li>repeats&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>reportErrorWarning()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>RequestAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d\">tram::Decoration</a></li>\n<li>requester&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9\">tram::Async::ResourceRequest</a></li>\n<li>reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">tram::Stack&lt; T &gt;</a></li>\n<li>Reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">tram::Stack&lt; T &gt;</a></li>\n<li>reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">tram::StackPool&lt; T &gt;</a></li>\n<li>Reset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">tram::StackPool&lt; T &gt;</a></li>\n<li>reset_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435\">tram::TextReaderParser</a></li>\n<li>reset_flags()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6\">tram::File</a></li>\n<li>ResetCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">tram::TriggerComponent</a></li>\n<li>ResetMove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838\">tram::RaycastControllerComponent</a></li>\n<li>resource&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65\">tram::Async::ResourceRequest</a></li>\n<li>Resource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">tram::Resource</a></li>\n<li>resource&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>ResourceProxy&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>ResourceReady()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40\">tram::EntityComponent</a></li>\n<li>resources_waiting&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">tram::EntityComponent</a></li>\n<li>result_paths&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">tram::Audio::Spatial::AudioSource</a></li>\n<li>right&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">tram::NavmeshNode</a></li>\n<li>roll&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">tram::Render::Bone</a></li>\n<li>root&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">tram::Octree&lt; T &gt;</a></li>\n<li>rotate_following&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>rotation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e\">tram::Physics::API::CallbackMotionState</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">tram::RenderComponent</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">tram::SharedEntityData</a></li>\n<li>Run()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995\">tram::RaycastControllerComponent</a></li>\n<li>run_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">tram::RaycastControllerComponent</a></li>\n<li>running&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_rela.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Related Functions</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>AnimationTable&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>Async::FinishResources&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02\">tram::EntityComponent</a></li>\n<li>ControllerComponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b\">tram::RaycastControllerComponent</a></li>\n<li>Faction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737\">tram::Ext::Kitchensink::Character</a></li>\n<li>operator!=&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">tram::Pool&lt; T &gt;::iterator</a></li>\n<li>operator==&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">tram::Pool&lt; T &gt;::iterator</a></li>\n<li>PathFollower&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8\">tram::Path</a></li>\n<li>Pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110\">tram::RaycastControllerComponent</a></li>\n<li>ResourceProxy&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d\">tram::EntityComponent</a></li>\n<li>Sprite&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344\">tram::Render::Material</a></li>\n<li>tram::Pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">tram::Audio::Sound</a></li>\n<li>ValuePtr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e\">tram::Value</a></li>\n<li>WorldCell&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54\">tram::Transition</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>sample&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">tram::Audio::Spatial::AudioRender</a></li>\n<li>sample_rate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">tram::Audio::Sound</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">tram::Audio::Spatial::AudioBuffer</a></li>\n<li>sampling_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">tram::Audio::Spatial::PathExplorationResult</a></li>\n<li>SanitizeData()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134\">tram::Scriptable&lt; T &gt;</a></li>\n<li>scale&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">tram::DecalComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">tram::RenderComponent</a></li>\n<li>scanline_length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169\">tram::Render::API::ScanlineBuffer</a></li>\n<li>scanlines&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019\">tram::Render::API::ScanlineBuffer</a></li>\n<li>screenHeight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>screenWidth&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>script&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Script()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>Scriptable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7\">tram::Scriptable&lt; T &gt;</a></li>\n<li>SELECT&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">tram::Message</a></li>\n<li>SELECTED&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">tram::Event</a></li>\n<li>Send()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">tram::Message</a></li>\n<li>sender&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">tram::Message</a></li>\n<li>Serialize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f\">tram::Trigger</a></li>\n<li>SerializeString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528\">tram::Player</a></li>\n<li>set()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>SET_ANIMATION&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">tram::Message</a></li>\n<li>SET_FLAG_OFF&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">tram::Message</a></li>\n<li>SET_FLAG_ON&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">tram::Message</a></li>\n<li>SET_PROGRESS&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">tram::Message</a></li>\n<li>set_skip_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1\">tram::FileReaderParser</a></li>\n<li>set_skip_value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a\">tram::FileReaderParser</a></li>\n<li>set_transform_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda\">tram::Physics::API::CallbackMotionState</a></li>\n<li>SetActivationCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892\">tram::TriggerComponent</a></li>\n<li>SetActive()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508\">tram::Ext::Camera::Camera</a></li>\n<li>SetAngularFactor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999\">tram::PhysicsComponent</a></li>\n<li>SetAnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>SetAnimationStateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>SetAnimationTable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>SetArmature()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88\">tram::RenderComponent</a></li>\n<li>SetAttribute()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>SetAutoLoad()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e\">tram::Entity</a></li>\n<li>SetAutomaticLoading()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">tram::WorldCell</a></li>\n<li>SetBaseDisposition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2\">tram::Ext::Kitchensink::Character</a></li>\n<li>SetBobbing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobbingTilt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetBobSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetCharacterLoyalty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetCharacterRank()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">tram::TriggerComponent</a></li>\n<li>SetCollisionMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">tram::TriggerComponent</a></li>\n<li>SetCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47\">tram::ControllerComponent</a></li>\n<li>SetCollisionSize()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef\">tram::RaycastControllerComponent</a></li>\n<li>SetColor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb\">tram::RenderComponent</a></li>\n<li>SetContents()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">tram::FileWriter</a></li>\n<li>SetControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56\">tram::PlayerComponent</a></li>\n<li>SetCrouchSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c\">tram::RaycastControllerComponent</a></li>\n<li>SetDebugDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">tram::WorldCell</a></li>\n<li>SetDebugDrawing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758\">tram::PhysicsComponent</a></li>\n<li>SetDebugInfoDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd\">tram::ControllerComponent</a></li>\n<li>setDebugMode()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2\">tram::Physics::API::PhysicsDebugDraw</a></li>\n<li>SetDectivationCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d\">tram::TriggerComponent</a></li>\n<li>SetDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1\">tram::LightComponent</a></li>\n<li>SetDirectionaLight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d\">tram::RenderComponent</a></li>\n<li>SetDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">tram::LightComponent</a></li>\n<li>SetDrawTrigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038\">tram::Trigger</a></li>\n<li>SetEntity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e\">tram::Ext::Menu::SignalMenu</a></li>\n<li>SetEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd\">tram::RenderComponent</a></li>\n<li>SetEventType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469\">tram::Ext::Menu::EventEmit</a></li>\n<li>SetExponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f\">tram::LightComponent</a></li>\n<li>SetFade()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f\">tram::AnimationComponent</a></li>\n<li>SetFarDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">tram::Render::Model</a></li>\n<li>SetFilterCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5\">tram::TriggerComponent</a></li>\n<li>SetFlag()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">tram::WorldCell</a></li>\n<li>SetFlySpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9\">tram::RaycastControllerComponent</a></li>\n<li>SetFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3\">tram::Ext::Camera::Camera</a></li>\n<li>SetFollowingInterpolation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetFollowingLookat()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf\">tram::Ext::Camera::Camera</a></li>\n<li>SetFollowingOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetFrame()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6\">tram::DecalComponent</a></li>\n<li>SetFriction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f\">tram::RaycastControllerComponent</a></li>\n<li>SetFunction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703\">tram::Script::Interface</a></li>\n<li>SetGlobal()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b\">tram::Script::Interface</a></li>\n<li>SetIncrement()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>SetInterceptCallback()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">tram::Message</a></li>\n<li>SetInterior()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">tram::WorldCell</a></li>\n<li>SetInteriorLights()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">tram::WorldCell</a></li>\n<li>SetKeyboardLook()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa\">tram::PlayerComponent</a></li>\n<li>SetKeyframe()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba\">tram::AnimationComponent</a></li>\n<li>SetKinematic()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090\">tram::PhysicsComponent</a></li>\n<li>SetLayer()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc\">tram::RenderComponent</a></li>\n<li>SetLayerMask()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8\">tram::Ext::Camera::Camera</a></li>\n<li>SetLightDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd\">tram::LightComponent</a></li>\n<li>SetLightmap()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874\">tram::RenderComponent</a></li>\n<li>SetLinearFactor()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2\">tram::PhysicsComponent</a></li>\n<li>SetListenerTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876\">tram::Ext::Camera::Camera</a></li>\n<li>SetLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc\">tram::TriggerComponent</a></li>\n<li>SetLookDirection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce\">tram::ControllerComponent</a></li>\n<li>SetMass()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b\">tram::PhysicsComponent</a></li>\n<li>SetMaterial()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">tram::Render::Sprite</a></li>\n<li>SetMaterialFilter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">tram::Render::Material</a></li>\n<li>SetMaterialProperty()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">tram::Render::Material</a></li>\n<li>SetMaterialType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">tram::Render::Material</a></li>\n<li>SetMediumList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">tram::FileWriter</a></li>\n<li>SetMessageType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7\">tram::Ext::Menu::MessageSend</a></li>\n<li>SetModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc\">tram::TriggerComponent</a></li>\n<li>SetMouselook()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetNearDistance()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">tram::Render::Model</a></li>\n<li>SetNoclip()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d\">tram::PlayerComponent</a></li>\n<li>SetObjective()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>SetOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2\">tram::Ext::Menu::InterceptMenu</a></li>\n<li>SetOnAnimationFinishCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a\">tram::AnimationComponent</a></li>\n<li>SetOrientation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">tram::PathFollower</a></li>\n<li>SetParameters()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4\">tram::Trigger</a></li>\n<li>SetParent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a\">tram::EntityComponent</a></li>\n<li>SetPause()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a\">tram::AnimationComponent</a></li>\n<li>SetPersistent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514\">tram::Entity</a></li>\n<li>SetPicked()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>SetPlaySpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81\">tram::SpriteComponent</a></li>\n<li>SetPosition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93\">tram::Ext::Camera::Camera</a></li>\n<li>SetReflectivity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">tram::Render::Material</a></li>\n<li>SetRelation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b\">tram::Ext::Kitchensink::Faction</a></li>\n<li>SetRenderDebug()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded\">tram::RenderComponent</a></li>\n<li>SetRepeating()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9\">tram::AudioComponent</a></li>\n<li>SetRepeats()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb\">tram::AnimationComponent</a></li>\n<li>SetRotateFollowing()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetRotation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d\">tram::TriggerComponent</a></li>\n<li>SetRunSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a\">tram::RaycastControllerComponent</a></li>\n<li>SetScale()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3\">tram::RenderComponent</a></li>\n<li>SetSearchList()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">tram::FileReader</a></li>\n<li>SetShape()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">tram::TriggerComponent</a></li>\n<li>SetSound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e\">tram::AudioComponent</a></li>\n<li>SetSource()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">tram::Render::Material</a></li>\n<li>SetSourceDraw()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3\">tram::AudioComponent</a></li>\n<li>SetSpecular()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">tram::Render::Material</a></li>\n<li>SetSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1\">tram::AnimationComponent</a></li>\n<li>SetSprite()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2\">tram::SpriteComponent</a></li>\n<li>SetStateAnimation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>SetStateNextState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc\">tram::Ext::Kitchensink::AnimationTable</a></li>\n<li>SetStepHeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894\">tram::RaycastControllerComponent</a></li>\n<li>SetStoreCollisions()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">tram::TriggerComponent</a></li>\n<li>SetTextureOffset()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a\">tram::RenderComponent</a></li>\n<li>SetTextureType()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">tram::Render::Material</a></li>\n<li>SetTilt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>SetTransformCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307\">tram::Physics::API::CallbackMotionState</a></li>\n<li>SetUpdateParentTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7\">tram::PhysicsComponent</a></li>\n<li>SetupModel()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268\">tram::Trigger</a></li>\n<li>SetValue()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">tram::ValuePtr</a></li>\n<li>SetVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">tram::Ext::Kitchensink::Quest</a></li>\n<li>SetVelocity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394\">tram::PhysicsComponent</a></li>\n<li>SetViewTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5\">tram::Ext::Camera::Camera</a></li>\n<li>SetWalkSpeed()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3\">tram::RaycastControllerComponent</a></li>\n<li>SetWallCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f\">tram::RaycastControllerComponent</a></li>\n<li>SetWeight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c\">tram::AnimationComponent</a></li>\n<li>setWorldTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7\">tram::Physics::API::CallbackMotionState</a></li>\n<li>shader&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">tram::Render::API::GLDrawListEntry</a></li>\n<li>shape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">tram::Physics::CollisionModel</a></li>\n<li>ShapecastCallback()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1\">tram::Physics::API::ShapecastCallback</a></li>\n<li>short_name&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd\">tram::System::SystemInfo</a></li>\n<li>ShouldExit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b\">tram::Ext::Kitchensink::DialogController</a></li>\n<li>signal_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">tram::SignalTable</a></li>\n<li>signals&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">tram::SignalTable</a></li>\n<li>size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">tram::Render::VertexAttribute</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">tram::StackPool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">tram::ValueArray</a></li>\n<li>skip_linebreak()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f\">tram::File</a></li>\n<li>skip_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05\">tram::TextReaderParser</a></li>\n<li>skip_newline_flag&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">tram::FileReaderParser</a></li>\n<li>skip_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">tram::FileReaderParser</a></li>\n<li>skip_whitespace()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e\">tram::FileReaderParser</a>, <a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897\">tram::TextReaderParser</a></li>\n<li>Sleep()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc\">tram::PhysicsComponent</a></li>\n<li>Sound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">tram::Audio::Sound</a></li>\n<li>sound&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">tram::Ext::Kitchensink::Button</a></li>\n<li>Sound()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37\">tram::Sound</a></li>\n<li>sound&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">tram::Sound</a></li>\n<li>sound_buffer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">tram::Audio::Sound</a></li>\n<li>sound_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">tram::Audio::Sound</a></li>\n<li>sound_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">tram::Sound</a></li>\n<li>sound_length&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">tram::Audio::Sound</a></li>\n<li>SoundGraph()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c\">tram::Audio::SoundGraph</a></li>\n<li>source&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">tram::Render::Model</a></li>\n<li>source_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">tram::Audio::Spatial::PathFromAudioSource</a></li>\n<li>source_ideal_angle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>SPAWN&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">tram::Signal</a></li>\n<li>special_option&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89\">tram::UI::KeyBinding</a></li>\n<li>special_option2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd\">tram::UI::KeyBinding</a></li>\n<li>specular&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>specular_exponent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">tram::Render::Material</a></li>\n<li>specular_transparency&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">tram::Render::Material</a></li>\n<li>specular_weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">tram::Render::Material</a></li>\n<li>speed&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">tram::Ext::Kitchensink::Button</a></li>\n<li>Sphere()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">tram::Physics::CollisionShape</a></li>\n<li>Spin()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec\">tram::PhysicsComponent</a></li>\n<li>spinlock&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">tram::Queue&lt; T &gt;</a></li>\n<li>sprite&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">tram::ParticleComponent</a></li>\n<li>Sprite&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">tram::Render::Sprite</a></li>\n<li>sprite&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">tram::SpriteComponent</a></li>\n<li>sprite_array&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">tram::SpriteComponent</a></li>\n<li>sprite_font&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>sprite_glyph&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>SpriteComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4\">tram::SpriteComponent</a></li>\n<li>stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>Stack()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">tram::Stack&lt; T &gt;</a></li>\n<li>stack_height&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c\">tram::GUI::FrameObject</a></li>\n<li>stackLength&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">tram::Stack&lt; T &gt;</a></li>\n<li>stackName&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">tram::Stack&lt; T &gt;</a></li>\n<li>StackPool()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">tram::StackPool&lt; T &gt;</a></li>\n<li>stackSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">tram::Stack&lt; T &gt;</a></li>\n<li>standing_on&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">tram::RaycastControllerComponent</a></li>\n<li>standing_on_prev&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">tram::RaycastControllerComponent</a></li>\n<li>standing_pos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">tram::RaycastControllerComponent</a></li>\n<li>standing_rot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">tram::FPSControllerComponent</a></li>\n<li>Start()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">tram::LightComponent</a></li>\n<li>START&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">tram::Message</a></li>\n<li>Start()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2\">tram::PhysicsComponent</a>, <a class=\"el\" href=\"classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3\">tram::PlayerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad\">tram::RaycastControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4\">tram::SpriteComponent</a>, <a class=\"el\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">tram::TemplateComponent</a>, <a class=\"el\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">tram::TriggerComponent</a></li>\n<li>start_pos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">tram::Ext::Kitchensink::Button</a></li>\n<li>start_rot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">tram::Ext::Kitchensink::Button</a></li>\n<li>start_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373\">tram::Render::API::ScanlineBuffer</a></li>\n<li>state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb\">tram::System::SystemInfo</a></li>\n<li>state_space&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>states&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>StaticWorldObject()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">tram::StaticWorldObject</a></li>\n<li>statistics_enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">tram::Ext::Menu::DebugMenu</a></li>\n<li>statistics_menu&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">tram::Ext::Menu::DebugMenu</a></li>\n<li>Status&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">tram::Resource</a></li>\n<li>status&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">tram::Resource</a></li>\n<li>step_height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">tram::RaycastControllerComponent</a></li>\n<li>step_height_crouch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">tram::FPSControllerComponent</a></li>\n<li>Stop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5\">tram::AudioComponent</a></li>\n<li>STOP&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">tram::Message</a></li>\n<li>stride&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">tram::Render::VertexAttribute</a></li>\n<li>string_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">tram::ValuePtr</a></li>\n<li>string_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">tram::Value</a></li>\n<li>subtitle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>subtype&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee\">tram::Ext::Menu::EventIntercept</a></li>\n<li>subtype_string&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">tram::Ext::Menu::EventEmit</a></li>\n<li>succ()&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">_test_case</a></li>\n<li>sun_color&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4\">tram::Render::API::LayerParameters</a></li>\n<li>sun_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82\">tram::Render::API::LayerParameters</a></li>\n<li>sunColor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sunDirection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sunWeight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sw&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">tram::Render::material_t</a></li>\n<li>sw_index_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">tram::Render::indexarray_t</a></li>\n<li>sw_texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">tram::Render::texturehandle_t</a></li>\n<li>sw_vertex_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">tram::Render::vertexarray_t</a></li>\n<li>SwitchState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f\">tram::Ext::Kitchensink::AnimationTable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361\">tram::Ext::Kitchensink::Button</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>tab&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>table&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>tag&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tram::Ext::Kitchensink::Effect</a></li>\n<li>tail&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tram::Render::Bone</a></li>\n<li>TemplateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">tram::TemplateComponent</a></li>\n<li>tex&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be\">tram::Render::API::StaticVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tram::Render::StaticModelVertex</a></li>\n<li>tex_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5\">tram::Render::API::StaticVertex</a></li>\n<li>tex_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9\">tram::Render::API::StaticVertex</a></li>\n<li>texco&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">tram::Render::SpriteVertex</a></li>\n<li>texCount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">tram::Render::API::GLDrawListEntry</a></li>\n<li>text&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">tram::Ext::Menu::Console</a></li>\n<li>TEXT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78\">tram::File</a></li>\n<li>TextReaderParser()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943\">tram::TextReaderParser</a></li>\n<li>texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">tram::Render::StaticModelVertex</a></li>\n<li>texture_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">tram::Render::Material</a></li>\n<li>texture_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">tram::Render::SpritePoint</a></li>\n<li>texture_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">tram::Render::SpritePoint</a></li>\n<li>texture_transforms&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>texture_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">tram::Render::Material</a></li>\n<li>TextWriterParser()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c\">tram::TextWriterParser</a></li>\n<li>TICK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">tram::Event</a></li>\n<li>Tick()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>tick&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tram::Ext::Kitchensink::Button</a></li>\n<li>tilt&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>tilt_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>tilt_last&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">tram::Ext::Menu::Intercept</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>time_spent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa\">tram::Stats::SystemStat</a></li>\n<li>time_spent_average&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f\">tram::Stats::SystemStat</a></li>\n<li>time_spent_average_collated&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859\">tram::Stats::SystemStat</a></li>\n<li>time_spent_collated&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2\">tram::Stats::SystemStat</a></li>\n<li>time_spent_total&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae\">tram::Stats::SystemStat</a></li>\n<li>time_started&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24\">tram::Stats::SystemStat</a></li>\n<li>timer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">tram::Ext::Kitchensink::Button</a></li>\n<li>title&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>to&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">tram::Edge</a></li>\n<li>TOGGLE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">tram::Message</a></li>\n<li>top()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">tram::Stack&lt; T &gt;</a></li>\n<li>ToString()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">tram::Value</a></li>\n<li>totl_asserts&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">_test_case</a></li>\n<li>Train()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77\">tram::Ext::Kitchensink::Train</a></li>\n<li>tram::Pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">tram::Audio::Sound</a></li>\n<li>Transition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">tram::Transition</a></li>\n<li>transitions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">tram::WorldCell</a></li>\n<li>tree&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d\">tram::Render::ModelAABB</a></li>\n<li>tree_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8\">tram::Render::LightTree::Light</a></li>\n<li>triangle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">tram::Render::AABB::QueryResponse</a></li>\n<li>triangles&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd\">tram::Render::ModelAABB</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388\">tram::Render::TriangleBucket</a></li>\n<li>trigger&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">tram::Ext::Kitchensink::DialogAction</a></li>\n<li>TRIGGER&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">tram::Signal</a></li>\n<li>Trigger()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c\">tram::Trigger</a></li>\n<li>trigger_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">tram::Trigger</a></li>\n<li>TriggerAutosave()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b\">tram::Ext::Kitchensink::TriggerAutosave</a></li>\n<li>triggercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">tram::Trigger</a></li>\n<li>TriggerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">tram::TriggerComponent</a></li>\n<li>TriggerHurt()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d\">tram::Ext::Kitchensink::TriggerHurt</a></li>\n<li>TriggerMultiple()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4\">tram::Ext::Kitchensink::TriggerMultiple</a></li>\n<li>TriggerOnce()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127\">tram::Ext::Kitchensink::TriggerOnce</a></li>\n<li>TriggerPlayerMovement()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></li>\n<li>TriggerPush()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a\">tram::Ext::Kitchensink::TriggerPush</a></li>\n<li>TriggerRemove()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99\">tram::Ext::Kitchensink::TriggerRemove</a></li>\n<li>triggers&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">tram::Ext::Kitchensink::Quest</a></li>\n<li>TriggerTeleport()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d\">tram::Ext::Kitchensink::TriggerTeleport</a></li>\n<li>try_pop()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">tram::Queue&lt; T &gt;</a></li>\n<li>TurnLeft()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">tram::PathFollower</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec\">tram::RaycastControllerComponent</a></li>\n<li>TurnRight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">tram::PathFollower</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052\">tram::RaycastControllerComponent</a></li>\n<li>TurnStraight()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">tram::PathFollower</a></li>\n<li>type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">tram::Event</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">tram::Event</a></li>\n<li>type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">tram::Message</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">tram::Message</a></li>\n<li>type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">tram::PathEdgeInfo</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">tram::PathFollower</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">tram::Physics::CollisionShape</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">tram::Render::AABB::QueryResponse</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">tram::Render::API::SWVertexArray</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">tram::Render::VertexAttribute</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">tram::SharedEntityData</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">tram::Signal</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">tram::Signal</a></li>\n<li>type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">tram::Value</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_type.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Typedefs</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>PAIR&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a461a6fee71db795f2c032463702371ca\">tram::Hashmap&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UID()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">tram::UID</a></li>\n<li>UINT32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">tram::Render::VertexAttribute</a></li>\n<li>uint32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5\">tram::Settings::SettingInfo</a></li>\n<li>uint32_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">tram::ValuePtr</a></li>\n<li>uint32_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">tram::Value</a></li>\n<li>UnequipItem()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>UnequipSlot()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>Unload()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Audio::Sound</a>, <a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c\">tram::Physics::CollisionModel</a>, <a class=\"el\" href=\"classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">tram::Render::Animation</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">tram::Render::Model</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">tram::Render::Sprite</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e\">tram::Trigger</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">tram::WorldCell</a></li>\n<li>UNLOADED&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">tram::Resource</a></li>\n<li>UNLOCK&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">tram::Message</a></li>\n<li>unlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">tram::Queue&lt; T &gt;</a></li>\n<li>Unlock()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">tram::Spinlock</a></li>\n<li>Unregister()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd\">tram::Entity</a></li>\n<li>Update()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf\">tram::ControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe\">tram::Ext::Camera::FirstPersonCamera</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c\">tram::SpriteComponent</a></li>\n<li>updateAction()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050\">tram::Physics::PathAction</a></li>\n<li>UpdateLocation()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8\">tram::SpriteComponent</a></li>\n<li>UpdateParameters()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8\">tram::Ext::Kitchensink::QuestEntity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">tram::Marker</a>, <a class=\"el\" href=\"classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5\">tram::Player</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389\">tram::Trigger</a></li>\n<li>UpdateParentAABB()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">tram::AABBTree</a></li>\n<li>UpdateRenderListObject()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117\">tram::SpriteComponent</a></li>\n<li>UpdateTransform()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">tram::Entity</a></li>\n<li>USE&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">tram::Signal</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>validate()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">tram::Pool&lt; T &gt;</a></li>\n<li>ValidateTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">tram::AABBTree</a></li>\n<li>value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">tram::Ext::Kitchensink::AIVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">tram::Ext::Kitchensink::BaseAttribute</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd\">tram::Ext::Kitchensink::InitialAttribute</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>Value()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">tram::Settings::Property&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b\">tram::Settings::RawSetting</a></li>\n<li>Value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">tram::Value</a></li>\n<li>ValueArray()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">tram::ValueArray</a></li>\n<li>ValuePtr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e\">tram::Value</a>, <a class=\"el\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">tram::ValuePtr</a></li>\n<li>vao&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">tram::Render::API::GLDrawListEntry</a></li>\n<li>variable&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">tram::Ext::Kitchensink::DialogCondition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>variable1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>variable2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>variables&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">tram::Ext::Kitchensink::Quest</a></li>\n<li>vec2_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">tram::ValuePtr</a></li>\n<li>vec2_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">tram::Value</a></li>\n<li>vec3_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">tram::ValuePtr</a></li>\n<li>vec3_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">tram::Value</a></li>\n<li>vec4_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">tram::ValuePtr</a></li>\n<li>vec4_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">tram::Value</a></li>\n<li>velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">tram::ParticleComponent::Particle</a></li>\n<li>vertex_array&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">tram::ParticleComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">tram::Render::Model</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">tram::Render::spritearray_t</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">tram::SpriteComponent</a></li>\n<li>vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">tram::Render::API::D3DDrawListEntry</a></li>\n<li>vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">tram::Render::API::SWVertexArray</a></li>\n<li>vertex_format&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64\">tram::Render::API::VertexBufferMetadata</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">tram::Render::Model</a></li>\n<li>verticality&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">tram::Render::SpriteVertex</a></li>\n<li>vertices&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">tram::Render::API::SWVertexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">tram::Render::DynamicModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">tram::Render::StaticModelData</a></li>\n<li>view&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>view_matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95\">tram::Render::API::LayerParameters</a></li>\n<li>view_pos&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>view_position&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd\">tram::Render::API::LayerParameters</a></li>\n<li>viewmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>voffset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">tram::Render::SpriteVertex</a></li>\n<li>volume&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">tram::WorldCell</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>aabb_max&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">tram::Render::Model</a></li>\n<li>aabb_min&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">tram::Render::Model</a></li>\n<li>aabb_tree_leaf&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5\">tram::RenderComponent</a></li>\n<li>abbrv&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">_test_case</a></li>\n<li>action&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41\">tram::UI::KeyBinding</a></li>\n<li>affected_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>age&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">tram::ParticleComponent::Particle</a></li>\n<li>air_velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893\">tram::RaycastControllerComponent</a></li>\n<li>al_buffer_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">tram::Audio::audiobuffer_t</a></li>\n<li>al_buffers&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">tram::Audio::audiobuffer_t</a></li>\n<li>al_source&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">tram::Audio::audiosource_t</a></li>\n<li>allocated_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">tram::StackPool&lt; T &gt;</a></li>\n<li>allocated_vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246\">tram::Render::API::VertexBufferMetadata</a></li>\n<li>ambient_color&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6\">tram::Render::API::LayerParameters</a></li>\n<li>ambientColor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>anim_bframe&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c\">tram::SpriteComponent</a></li>\n<li>ANIM_COUNT&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27\">tram::AnimationComponent</a></li>\n<li>anim_finish_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7\">tram::AnimationComponent</a></li>\n<li>anim_frame&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1\">tram::SpriteComponent</a></li>\n<li>anim_info&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2\">tram::AnimationComponent</a></li>\n<li>anim_isplaying&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157\">tram::SpriteComponent</a></li>\n<li>anim_playing&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4\">tram::AnimationComponent</a></li>\n<li>anim_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf\">tram::SpriteComponent</a></li>\n<li>animation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1\">tram::Decoration</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>animationcomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12\">tram::Decoration</a></li>\n<li>answer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>approx_vram_usage&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">tram::Render::Model</a></li>\n<li>armature&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">tram::Render::Model</a></li>\n<li>armature_bone_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8\">tram::AnimationComponent</a></li>\n<li>armature_bone_parents&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8\">tram::AnimationComponent</a></li>\n<li>armature_bones&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072\">tram::AnimationComponent</a></li>\n<li>arrival_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>attribute&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08\">tram::Ext::Kitchensink::InitialAttribute</a></li>\n<li>attribute_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">tram::Render::VertexDefinition</a></li>\n<li>attributes&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">tram::Render::VertexDefinition</a></li>\n<li>audio&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b\">tram::Sound</a></li>\n<li>available_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">tram::StackPool&lt; T &gt;</a></li>\n<li>average_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3\">tram::Stats::SystemStat</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>barycentric&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a\">tram::Render::API::ClipPoint</a></li>\n<li>base_attributes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_class&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>base_classes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_factions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057\">tram::Ext::Kitchensink::CharacterClass</a></li>\n<li>base_pose&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c\">tram::AnimationComponent</a></li>\n<li>base_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>base_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>begin&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7\">tram::Render::API::Scanline</a></li>\n<li>begin_adv&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5\">tram::Render::API::Scanline</a></li>\n<li>begin_p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16\">tram::Render::API::Scanline</a></li>\n<li>begin_p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334\">tram::Render::API::Scanline</a></li>\n<li>binding_action&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>binding_state_ready&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>bob&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bob_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bob_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_distance&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_tilt&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_tilt_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_weight&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bobbing_weight_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>bone&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">tram::Render::KeyframeHeader</a></li>\n<li>bone_index&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468\">tram::Render::API::FVFHelper</a></li>\n<li>bone_weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022\">tram::Render::API::FVFHelper</a></li>\n<li>boneweight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">tram::Render::DynamicModelVertex</a></li>\n<li>bool32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa\">tram::Settings::SettingInfo</a></li>\n<li>bool_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">tram::ValuePtr</a></li>\n<li>bool_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">tram::Value</a></li>\n<li>border_h&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">tram::Render::SpriteFrame</a></li>\n<li>border_v&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">tram::Render::SpriteFrame</a></li>\n<li>bt_collisionshape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">tram::Physics::trigger_t</a></li>\n<li>bt_metadata&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">tram::Physics::rigidbody_t</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">tram::Physics::trigger_t</a></li>\n<li>bt_rigidbody&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">tram::Physics::rigidbody_t</a></li>\n<li>bt_shape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">tram::Physics::collisionshape_t</a></li>\n<li>bucket&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8\">tram::Render::BucketMapping</a></li>\n<li>buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf\">tram::File</a></li>\n<li>buffer_cursor&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aa4875014953235da2776dac766558fad\">tram::File</a></li>\n<li>buffer_end&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f\">tram::File</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>callback&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5\">tram::Async::ResourceRequest</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a\">tram::Ext::Menu::EntityPicker</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760\">tram::Ext::Menu::ListSelection</a></li>\n<li>callback_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>callback_data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea\">tram::Async::ResourceRequest</a></li>\n<li>cell&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc\">tram::Ext::Menu::WorldCellProperties</a></li>\n<li>cell_into&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">tram::Transition</a></li>\n<li>center&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">tram::Render::SpritePoint</a></li>\n<li>channels&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">tram::Audio::Sound</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">tram::Audio::Spatial::AudioBuffer</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">tram::Render::Material</a></li>\n<li>character&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">tram::Ext::Kitchensink::CharacterDisposition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">tram::Ext::Kitchensink::FactionRank</a></li>\n<li>character_class&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5\">tram::Ext::Kitchensink::Character</a></li>\n<li>children&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af\">tram::Ext::Kitchensink::EntityChildren</a></li>\n<li>clear&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></li>\n<li>co&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">tram::Render::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">tram::Render::StaticModelVertex</a></li>\n<li>col&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c\">tram::Render::API::ColorVertex</a></li>\n<li>collide&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839\">tram::ControllerComponent</a></li>\n<li>collider&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">tram::Physics::Collision</a></li>\n<li>collision_callback&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>collision_group&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099\">tram::RaycastControllerComponent</a></li>\n<li>collision_height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a\">tram::RaycastControllerComponent</a></li>\n<li>collision_height_crouch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04\">tram::FPSControllerComponent</a></li>\n<li>collision_mask&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0\">tram::Physics::API::ShapecastCallback</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68\">tram::Trigger</a></li>\n<li>collision_width&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f\">tram::RaycastControllerComponent</a></li>\n<li>collisions&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8\">tram::Physics::API::ShapecastCallback</a></li>\n<li>collmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea\">tram::Ext::Kitchensink::Water</a></li>\n<li>color&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">tram::Render::LineVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4\">tram::RenderComponent</a></li>\n<li>colors&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>comparison&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>compartment&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>compartments&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">tram::Ext::Kitchensink::Inventory</a></li>\n<li>component&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7\">tram::Ext::Kitchensink::AnimationStateComponent</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf\">tram::ListenerInfo</a></li>\n<li>condition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>constants&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">tram::Render::LightGraph::Node</a></li>\n<li>constr_func&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>constructor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f\">tram::EntityTypeInfo</a></li>\n<li>controllercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e\">tram::Player</a></li>\n<li>coordinate&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612\">tram::Render::API::ClipPoint</a></li>\n<li>coords&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">tram::ParticleComponent::Particle</a></li>\n<li>count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">tram::Queue&lt; T &gt;</a></li>\n<li>crouch_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5\">tram::FPSControllerComponent</a></li>\n<li>crouch_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d\">tram::RaycastControllerComponent</a></li>\n<li>crouching&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf\">tram::RaycastControllerComponent</a></li>\n<li>csize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">tram::Queue&lt; T &gt;</a></li>\n<li>current_vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706\">tram::Render::API::VertexBufferMetadata</a></li>\n<li>cursor_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501\">tram::GUI::FrameObject</a></li>\n<li>cursor_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e\">tram::GUI::FrameObject</a></li>\n<li>cycles_since_last_hit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">tram::Audio::Spatial::PathExplorationResult</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">tram::Audio::Spatial::PathTracingResult</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>d3d&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">tram::Render::material_t</a></li>\n<li>d3d_index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">tram::Render::indexarray_t</a></li>\n<li>d3d_metadata&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">tram::Render::vertexarray_t</a></li>\n<li>d3d_texture_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">tram::Render::texturehandle_t</a></li>\n<li>d3d_vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">tram::Render::vertexarray_t</a></li>\n<li>data&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">tram::Audio::Spatial::AudioBuffer</a>, <a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">tram::Render::AABB::QueryResponse</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">tram::Signal</a></li>\n<li>data_function&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722\">tram::ListenerInfo</a></li>\n<li>data_int&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">tram::Message</a></li>\n<li>data_pointer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97\">tram::Physics::API::CallbackMotionState</a></li>\n<li>data_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">tram::Message</a></li>\n<li>decoration_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6\">tram::Decoration</a></li>\n<li>default_compartment&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>definition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0\">tram::Render::RegisteredVertexDefinition</a></li>\n<li>delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">tram::Signal</a></li>\n<li>depth&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30\">tram::Render::API::Point2D</a></li>\n<li>destr_func&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9\">tram::ScriptableType::ScriptableTypeInfo</a></li>\n<li>destructor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2\">tram::EntityTypeInfo</a></li>\n<li>dimensions&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">tram::Render::SpritePoint</a></li>\n<li>direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">tram::PathFollower</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">tram::Render::API::SWLight</a></li>\n<li>disposition&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">tram::Ext::Kitchensink::CharacterDisposition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">tram::Ext::Kitchensink::FactionRelation</a></li>\n<li>dispositions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc\">tram::Ext::Kitchensink::Character</a></li>\n<li>distance&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">tram::Audio::Spatial::PathTracingResult</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">tram::Octree&lt; T &gt;::NearestSearch</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">tram::Physics::Collision</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858\">tram::Render::LightTree::Light</a></li>\n<li>distance_delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>draw_list_entries&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4\">tram::RenderComponent</a></li>\n<li>draw_list_entry&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8\">tram::SpriteComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>eboLen&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">tram::Render::API::GLDrawListEntry</a></li>\n<li>eboOff&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">tram::Render::API::GLDrawListEntry</a></li>\n<li>edge_infos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">tram::Path</a></li>\n<li>edges&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">tram::Graph</a>, <a class=\"el\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">tram::Node</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">tram::Render::LightGraph</a></li>\n<li>effective_value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">tram::Ext::Kitchensink::Attribute</a></li>\n<li>effects&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">tram::Ext::Kitchensink::AttributeContainer</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>emission_rate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">tram::ParticleComponent</a></li>\n<li>emitter&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004\">tram::Ext::Menu::EventIntercept</a></li>\n<li>enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75\">tram::RaycastControllerComponent</a></li>\n<li>end&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909\">tram::Render::API::Scanline</a></li>\n<li>end_adv&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33\">tram::Render::API::Scanline</a></li>\n<li>end_p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49\">tram::Render::API::Scanline</a></li>\n<li>end_p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c\">tram::Render::API::Scanline</a></li>\n<li>entities&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">tram::Render::LightGraph</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">tram::WorldCell</a></li>\n<li>entity&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3\">tram::Ext::Menu::EntityProperties</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32\">tram::ListenerInfo</a></li>\n<li>entity_id&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32\">tram::Ext::Kitchensink::Character</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923\">tram::Ext::Menu::SignalMenu</a></li>\n<li>environment_map&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">tram::Render::LightGraph::Node</a></li>\n<li>environmentmap&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393\">tram::RenderComponent</a></li>\n<li>equipped&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>equipped_slot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>event_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1\">tram::Ext::Menu::EventEmit</a></li>\n<li>exponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">tram::Render::API::SWLight</a></li>\n<li>extent_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">tram::Physics::CollisionShape</a></li>\n<li>extent_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">tram::Physics::CollisionShape</a></li>\n<li>extent_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>faction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">tram::Ext::Kitchensink::BaseFactionRank</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">tram::Ext::Kitchensink::FactionRelation</a></li>\n<li>factions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37\">tram::Ext::Kitchensink::Character</a></li>\n<li>fade_ammount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_far&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">tram::Render::Model</a></li>\n<li>fade_in&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_in_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></li>\n<li>fade_near&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">tram::Render::Model</a></li>\n<li>fade_out&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_out_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></li>\n<li>fade_speed&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>fade_time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>fail_asserts&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">_test_case</a></li>\n<li>farthest_distance&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>farthest_index&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>ffp_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">tram::Render::VertexAttribute</a></li>\n<li>field_flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">tram::Entity::FieldInfo</a></li>\n<li>field_id&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">tram::Entity::FieldInfo</a></li>\n<li>field_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">tram::Entity::FieldInfo</a></li>\n<li>fieldcount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81\">tram::EntityTypeInfo</a></li>\n<li>fields&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8\">tram::EntityTypeInfo</a></li>\n<li>filter&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">tram::Render::Material</a></li>\n<li>first&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">tram::StackPool&lt; T &gt;</a></li>\n<li>firstend&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">tram::Stack&lt; T &gt;</a></li>\n<li>flags&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">tram::SharedEntityData</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">tram::WorldCell</a></li>\n<li>float32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9\">tram::Settings::SettingInfo</a></li>\n<li>float_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">tram::ValuePtr</a></li>\n<li>float_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">tram::Value</a></li>\n<li>fly_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873\">tram::RaycastControllerComponent</a></li>\n<li>flying&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a\">tram::RaycastControllerComponent</a></li>\n<li>following&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79\">tram::Ext::Camera::Camera</a></li>\n<li>following_interpolation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>following_listener&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b\">tram::Ext::Camera::Camera</a></li>\n<li>following_lookat&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5\">tram::Ext::Camera::Camera</a></li>\n<li>following_offset&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>force&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">tram::Audio::Spatial::PathExplorationResult</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">tram::Audio::Spatial::PathRenderingInfo</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>format&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">tram::Render::API::SWVertexArray</a></li>\n<li>found&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>frame&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13\">tram::DecalComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">tram::Render::Keyframe</a></li>\n<li>frames&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">tram::Render::Sprite</a></li>\n<li>friction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3\">tram::FPSControllerComponent</a></li>\n<li>from&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">tram::Edge</a></li>\n<li>from_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>fullname&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">_test_case</a></li>\n<li>function&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2\">tram::ListenerInfo</a></li>\n<li>fvf&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee\">tram::Render::API::VertexBufferMetadata</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>generic&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756\">tram::Audio::audiobuffer_t</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e\">tram::Audio::audiosource_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f\">tram::Render::indexarray_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">tram::Render::material_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7\">tram::Render::spritearray_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac\">tram::Render::texturehandle_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8\">tram::Render::vertexarray_t</a></li>\n<li>get_transform_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba\">tram::Physics::API::CallbackMotionState</a></li>\n<li>gl&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">tram::Render::material_t</a></li>\n<li>gl_index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">tram::Render::indexarray_t</a></li>\n<li>gl_texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">tram::Render::API::GLMaterial</a></li>\n<li>gl_texture_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">tram::Render::texturehandle_t</a></li>\n<li>gl_vertex_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">tram::Render::vertexarray_t</a></li>\n<li>gl_vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">tram::Render::vertexarray_t</a></li>\n<li>gravity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">tram::ParticleComponent</a></li>\n<li>groups&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">tram::Render::DynamicModelData</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>h&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752\">tram::GUI::FrameObject</a></li>\n<li>half_extent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519\">tram::Render::LightTree::Light</a></li>\n<li>harmonic&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">tram::Render::API::GLDrawListEntry</a></li>\n<li>has_light&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">tram::Render::LightGraph::Node</a></li>\n<li>has_reflection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">tram::Render::LightGraph::Node</a></li>\n<li>hash_parameter&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">tram::Hashmap&lt; T &gt;</a></li>\n<li>head&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">tram::Render::Bone</a></li>\n<li>height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">tram::Physics::CollisionShape</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">tram::Render::SpriteFrame</a></li>\n<li>helper&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">tram::Render::API::SWVertexArray</a></li>\n<li>history_cursor&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5\">tram::Ext::Menu::Console</a></li>\n<li>hull_points&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">tram::Physics::CollisionShape</a></li>\n<li>hull_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">tram::Physics::CollisionShape</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>icon_font&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>icon_glyph&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>id&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f\">tram::SharedEntityData</a></li>\n<li>ind&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3\">tram::Render::API::DynamicVertex</a></li>\n<li>index_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">tram::Render::Model</a></li>\n<li>index_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">tram::Render::API::D3DDrawListEntry</a></li>\n<li>index_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">tram::Render::API::SWIndexArray</a></li>\n<li>index_in_bucket&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95\">tram::Render::BucketMapping</a></li>\n<li>index_length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">tram::Render::IndexRange</a></li>\n<li>index_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">tram::Render::IndexRange</a></li>\n<li>index_ranges&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">tram::Render::Model</a></li>\n<li>indices&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">tram::Render::API::SWIndexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">tram::Render::DynamicModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">tram::Render::StaticModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">tram::Render::Triangle</a></li>\n<li>initial_velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">tram::ParticleComponent</a></li>\n<li>initial_velocity_randomness&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">tram::ParticleComponent</a></li>\n<li>int32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707\">tram::Settings::SettingInfo</a></li>\n<li>int32_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">tram::ValuePtr</a></li>\n<li>int32_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">tram::Value</a></li>\n<li>intercept_enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a\">tram::Ext::Menu::DebugMenu</a></li>\n<li>intercept_menu&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42\">tram::Ext::Menu::DebugMenu</a></li>\n<li>interpolate&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>intersection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">tram::Render::AABB::QueryResponse</a></li>\n<li>into_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></li>\n<li>is_in_air&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6\">tram::RaycastControllerComponent</a></li>\n<li>is_init&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac\">tram::EntityComponent</a></li>\n<li>is_ready&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918\">tram::EntityComponent</a></li>\n<li>item&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>item_class&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">tram::Ext::Kitchensink::ItemInstance</a></li>\n<li>items&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_j.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_j\" name=\"index_j\"></a>- j -</h3><ul>\n<li>jump_frames&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>key&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431\">tram::Settings::RawSetting</a>, <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">tram::UID</a></li>\n<li>keyframe_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">tram::Render::KeyframeHeader</a></li>\n<li>keyframe_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">tram::Render::KeyframeHeader</a></li>\n<li>keyframes&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>l00&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">tram::Render::SphericalHarmonic</a></li>\n<li>l10&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">tram::Render::SphericalHarmonic</a></li>\n<li>l11&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">tram::Render::SphericalHarmonic</a></li>\n<li>l1m1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">tram::Render::SphericalHarmonic</a></li>\n<li>l20&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">tram::Render::SphericalHarmonic</a></li>\n<li>l21&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">tram::Render::SphericalHarmonic</a></li>\n<li>l22&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">tram::Render::SphericalHarmonic</a></li>\n<li>l2m1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">tram::Render::SphericalHarmonic</a></li>\n<li>l2m2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">tram::Render::SphericalHarmonic</a></li>\n<li>last&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">tram::Pool&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">tram::Stack&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">tram::StackPool&lt; T &gt;</a></li>\n<li>last_activate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed\">tram::Ext::Kitchensink::Button</a></li>\n<li>last_path&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">tram::Audio::Spatial::AudioSource</a></li>\n<li>last_tick&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">tram::Ext::Kitchensink::AttributeContainer</a></li>\n<li>lastend&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">tram::Stack&lt; T &gt;</a></li>\n<li>lastfree&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">tram::Pool&lt; T &gt;</a></li>\n<li>layer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081\">tram::RenderComponent</a></li>\n<li>layer_mask&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0\">tram::Ext::Camera::Camera</a></li>\n<li>leaf&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6\">tram::Render::AABB::AABBLeaf</a></li>\n<li>left&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">tram::NavmeshNode</a></li>\n<li>length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">tram::Audio::Spatial::AudioBuffer</a></li>\n<li>light&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9\">tram::Light</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">tram::LightComponent</a></li>\n<li>lightmap&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">tram::StaticWorldObject</a></li>\n<li>lights&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">tram::Render::API::SWDrawListEntry</a></li>\n<li>lighttex&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">tram::Render::StaticModelVertex</a></li>\n<li>limit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">tram::Signal</a></li>\n<li>list&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd\">tram::Ext::Menu::ListSelection</a></li>\n<li>listener&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329\">tram::EventListener</a></li>\n<li>listener_ideal_angle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>lit&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84\">tram::Render::API::StaticVertex</a></li>\n<li>lit_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189\">tram::Render::API::StaticVertex</a></li>\n<li>lit_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19\">tram::Render::API::StaticVertex</a></li>\n<li>load_fail&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">tram::Resource</a></li>\n<li>location&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">tram::LightComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">tram::ParticleComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">tram::Render::API::D3DLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">tram::Render::API::SWLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b\">tram::SpriteComponent</a></li>\n<li>lock&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">tram::Audio::Spatial::AudioRender</a></li>\n<li>look_direction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750\">tram::ControllerComponent</a></li>\n<li>loyalty&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">tram::Ext::Kitchensink::BaseFactionRank</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">tram::Ext::Kitchensink::FactionRank</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>make&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></li>\n<li>material&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">tram::Render::AABBTriangle</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">tram::Render::Sprite</a></li>\n<li>material_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">tram::Render::IndexRange</a></li>\n<li>material_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">tram::Render::IndexRange</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f\">tram::Render::TriangleBucket</a></li>\n<li>materials&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">tram::Render::IndexRange</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">tram::Render::Model</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088\">tram::Render::TriangleBucket</a></li>\n<li>matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">tram::Render::API::SWDrawListEntry</a></li>\n<li>max&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">tram::AABBTree::Node</a></li>\n<li>max_size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">tram::Hashmap&lt; T &gt;</a></li>\n<li>maxSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">tram::Pool&lt; T &gt;</a></li>\n<li>maybe_flag&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28\">tram::Settings::RawSetting</a></li>\n<li>medium&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">tram::FileSource</a></li>\n<li>memory_end&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">tram::Queue&lt; T &gt;</a></li>\n<li>memory_start&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">tram::Queue&lt; T &gt;</a></li>\n<li>mesh_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">tram::Physics::CollisionShape</a></li>\n<li>mesh_triangles&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">tram::Physics::CollisionShape</a></li>\n<li>message&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0\">tram::Ext::Menu::LogIntercept</a></li>\n<li>message_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03\">tram::Ext::Menu::MessageSend</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">tram::Signal</a></li>\n<li>mid_point&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>midpoint_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">tram::Render::SpriteFrame</a></li>\n<li>midpoint_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">tram::Render::SpriteFrame</a></li>\n<li>min&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">tram::AABBTree::Node</a></li>\n<li>mode&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9\">tram::File</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">tram::Render::API::SWTexture</a></li>\n<li>model&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025\">tram::AnimationComponent</a>, <a class=\"el\" href=\"classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28\">tram::LightComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce\">tram::Render::API::ShaderUniformModelMatrices</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b\">tram::RenderComponent</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d\">tram::Trigger</a></li>\n<li>model_aabb&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">tram::Render::Model</a></li>\n<li>model_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">tram::Render::Model</a></li>\n<li>modelLights&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>motion_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa\">tram::Physics::API::RigidbodyMetadata</a></li>\n<li>mouselook&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>move_direction&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4\">tram::RaycastControllerComponent</a></li>\n<li>move_magnitude&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>name&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140\">tram::Entity</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">tram::Ext::Kitchensink::AnimStateSpace</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">tram::Ext::Kitchensink::Attribute</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48\">tram::Ext::Kitchensink::AttributeInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">tram::Ext::Kitchensink::BaseAttribute</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f\">tram::Ext::Kitchensink::Faction</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">tram::Ext::Kitchensink::Quest</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">tram::Path</a>, <a class=\"el\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">tram::Queue&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">tram::Render::Bone</a>, <a class=\"el\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">tram::SharedEntityData</a>, <a class=\"el\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">tram::StackPool&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848\">tram::System::SystemInfo</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">tram::WorldCell</a></li>\n<li>name_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">tram::ValuePtr</a></li>\n<li>name_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">tram::Value</a></li>\n<li>nearest&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">tram::Octree&lt; T &gt;::NearestSearch</a></li>\n<li>next&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">tram::NavmeshNode</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">tram::PathFollower</a></li>\n<li>next_state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>next_topics&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>nodes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e\">tram::Audio::SoundGraph</a>, <a class=\"el\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">tram::Graph</a>, <a class=\"el\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">tram::Navmesh</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">tram::Octree&lt; T &gt;</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">tram::Render::LightGraph</a></li>\n<li>normal&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">tram::Physics::Collision</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">tram::Render::AABBTriangle</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">tram::Render::StaticModelVertex</a></li>\n<li>notification_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2\">tram::Async::ResourceRequest</a></li>\n<li>nrm&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686\">tram::Render::API::StaticVertex</a></li>\n<li>nrm_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910\">tram::Render::API::StaticVertex</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>objective&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>octants&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">tram::Octree&lt; T &gt;::Node</a></li>\n<li>offset&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c\">tram::Ext::Menu::InterceptMenu</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">tram::Render::VertexAttribute</a></li>\n<li>offset_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">tram::Render::SpriteFrame</a></li>\n<li>offset_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">tram::Render::SpriteFrame</a></li>\n<li>origin&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">tram::Render::Model</a></li>\n<li>override_stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1\">tram::Ext::Kitchensink::AIAgent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>p0&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">tram::Physics::CollisionTriangle</a></li>\n<li>p1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">tram::Physics::CollisionTriangle</a></li>\n<li>p2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">tram::Physics::CollisionTriangle</a></li>\n<li>package_stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16\">tram::Ext::Kitchensink::AIAgent</a></li>\n<li>padding&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e\">tram::Async::ResourceRequest</a>, <a class=\"el\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">tram::Render::API::GLLight</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf\">tram::Render::API::ShaderUniformMatrices</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">tram::Render::API::SWIndexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">tram::Render::Keyframe</a></li>\n<li>padding2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">tram::Render::API::GLLight</a></li>\n<li>panning&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>panning_delay&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">tram::Audio::Spatial::PathRenderingInfo</a></li>\n<li>param1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">tram::Audio::FilterParameters</a></li>\n<li>param2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">tram::Audio::FilterParameters</a></li>\n<li>parameter_string&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3\">tram::Ext::Menu::MessageSend</a></li>\n<li>parameter_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0\">tram::Ext::Menu::MessageSend</a></li>\n<li>parameters&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">tram::Audio::SoundGraph::Node</a></li>\n<li>parent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b\">tram::EntityComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349\">tram::Ext::Kitchensink::AIPackage</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">tram::Ext::Kitchensink::AnimStateSpace</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">tram::Ext::Kitchensink::Inventory</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">tram::Render::Bone</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>particle_max_age&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">tram::ParticleComponent</a></li>\n<li>particles&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">tram::ParticleComponent</a></li>\n<li>path&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782\">tram::File</a>, <a class=\"el\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">tram::FileSource</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">tram::PathFollower</a></li>\n<li>paths&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">tram::Audio::Spatial::AudioRender</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">tram::Audio::Spatial::AudioSource</a></li>\n<li>pause&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e\">tram::Ext::Kitchensink::Button</a></li>\n<li>pause_last&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>pause_next&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265\">tram::File</a></li>\n<li>pause_on_last_frame&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">tram::AnimationComponent::AnimationPlaybackInfo</a></li>\n<li>physics_body&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b\">tram::Player</a></li>\n<li>physicscomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">tram::StaticWorldObject</a></li>\n<li>pitch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>pixels&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">tram::Render::API::SWTexture</a></li>\n<li>planes&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">tram::Transition</a></li>\n<li>play_on_start&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852\">tram::AudioComponent</a></li>\n<li>plomp&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b\">tram::Player</a></li>\n<li>point&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">tram::Audio::Spatial::PathTracingResult</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">tram::Octree&lt; T &gt;::NearestSearch</a>, <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">tram::Octree&lt; T &gt;::Node</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">tram::Physics::API::ObjectCollision</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">tram::Physics::Collision</a></li>\n<li>point1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">tram::Render::AABBTriangle</a></li>\n<li>point2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">tram::Render::AABBTriangle</a></li>\n<li>point3&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">tram::Render::AABBTriangle</a></li>\n<li>points&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f\">tram::Render::API::ClipTriangle</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">tram::Transition</a></li>\n<li>pool&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">tram::PoolProxy&lt; T &gt;</a></li>\n<li>poolName&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">tram::Pool&lt; T &gt;</a></li>\n<li>poolSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">tram::Pool&lt; T &gt;</a></li>\n<li>pos&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91\">tram::Render::API::ColorVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521\">tram::Render::API::StaticVertex</a></li>\n<li>pos_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2\">tram::Render::API::StaticVertex</a></li>\n<li>pos_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6\">tram::Render::API::StaticVertex</a></li>\n<li>pos_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf\">tram::Render::API::LineVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93\">tram::Render::API::StaticVertex</a></li>\n<li>pose&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77\">tram::AnimationComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">tram::Render::Pose</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3\">tram::RenderComponent</a></li>\n<li>position&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">tram::Audio::SoundGraph::Node</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">tram::Audio::Spatial::AudioSource</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">tram::NavmeshNode</a>, <a class=\"el\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">tram::Node</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431\">tram::Physics::API::CallbackMotionState</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">tram::Render::LightGraph::Node</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc\">tram::Render::LightTree::Light</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">tram::SharedEntityData</a></li>\n<li>poster&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">tram::Event</a></li>\n<li>prev&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">tram::NavmeshNode</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">tram::PathFollower</a></li>\n<li>progress&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">tram::PathFollower</a></li>\n<li>projection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>projection_matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc\">tram::Render::API::LayerParameters</a></li>\n<li>prompt&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">tram::Ext::Kitchensink::DialogTopic</a></li>\n<li>property&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">tram::Render::Material</a></li>\n<li>ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe\">tram::Component&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">tram::Pool&lt; T &gt;::iterator</a>, <a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">tram::PoolPtr&lt; T &gt;</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>quat_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">tram::ValuePtr</a></li>\n<li>quat_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">tram::Value</a></li>\n<li>quest&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">tram::Ext::Kitchensink::DialogAction</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">tram::Ext::Kitchensink::DialogCondition</a></li>\n<li>quest1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>quest2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">tram::Ext::Kitchensink::QuestVariable</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>radius&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">tram::Physics::CollisionShape</a></li>\n<li>radius_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">tram::Physics::CollisionShape</a></li>\n<li>radius_z&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">tram::Physics::CollisionShape</a></li>\n<li>rank&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">tram::Ext::Kitchensink::BaseFactionRank</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">tram::Ext::Kitchensink::FactionRank</a></li>\n<li>ranks&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d\">tram::Ext::Kitchensink::Faction</a></li>\n<li>reader&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e\">tram::File</a></li>\n<li>reader_parser&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18\">tram::File</a></li>\n<li>receiver&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">tram::Signal</a></li>\n<li>ref_type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5\">tram::Render::AABB::AABBLeaf</a></li>\n<li>references&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">tram::Resource</a></li>\n<li>reflection_absorption&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflection_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflections&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">tram::Audio::Spatial::PathFromAudioSource</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>reflectivity&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">tram::Render::Material</a></li>\n<li>registered&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2\">tram::Render::RegisteredVertexDefinition</a></li>\n<li>relations&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f\">tram::Ext::Kitchensink::Faction</a></li>\n<li>render_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f\">tram::RenderComponent</a></li>\n<li>rendercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c\">tram::Crate</a>, <a class=\"el\" href=\"classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423\">tram::Decoration</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80\">tram::Ext::Kitchensink::Breakable</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c\">tram::Ext::Kitchensink::DebugShape</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd\">tram::Ext::Kitchensink::DebugText</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd\">tram::Ext::Kitchensink::Pickup</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a\">tram::Ext::Kitchensink::Train</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1\">tram::Ext::Kitchensink::TriggerAutosave</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5\">tram::Ext::Kitchensink::TriggerHurt</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2\">tram::Ext::Kitchensink::TriggerMultiple</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6\">tram::Ext::Kitchensink::TriggerOnce</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86\">tram::Ext::Kitchensink::TriggerPlayerMovement</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8\">tram::Ext::Kitchensink::TriggerPush</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe\">tram::Ext::Kitchensink::TriggerRemove</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085\">tram::Ext::Kitchensink::TriggerTeleport</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f\">tram::Ext::Kitchensink::Water</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773\">tram::Render::AABB::AABBLeaf</a>, <a class=\"el\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">tram::StaticWorldObject</a>, <a class=\"el\" href=\"classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816\">tram::Trigger</a></li>\n<li>repeat&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303\">tram::AudioComponent</a></li>\n<li>repeats&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>requester&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9\">tram::Async::ResourceRequest</a></li>\n<li>resource&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65\">tram::Async::ResourceRequest</a>, <a class=\"el\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>resources_waiting&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">tram::EntityComponent</a></li>\n<li>result_paths&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">tram::Audio::Spatial::AudioSource</a></li>\n<li>right&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">tram::NavmeshNode</a></li>\n<li>roll&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">tram::Render::Bone</a></li>\n<li>root&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">tram::AABBTree</a>, <a class=\"el\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">tram::Octree&lt; T &gt;</a></li>\n<li>rotate_following&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>rotation&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423\">tram::Ext::Camera::Camera</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e\">tram::Physics::API::CallbackMotionState</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb\">tram::RenderComponent</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">tram::SharedEntityData</a></li>\n<li>run_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed\">tram::RaycastControllerComponent</a></li>\n<li>running&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea\">tram::RaycastControllerComponent</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>sample&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">tram::Audio::Spatial::AudioRender</a></li>\n<li>sample_rate&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">tram::Audio::Sound</a>, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">tram::Audio::Spatial::AudioBuffer</a></li>\n<li>sampling_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">tram::Audio::Spatial::PathExplorationResult</a></li>\n<li>scale&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca\">tram::DecalComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">tram::Render::Keyframe</a>, <a class=\"el\" href=\"classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c\">tram::RenderComponent</a></li>\n<li>scanline_length&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169\">tram::Render::API::ScanlineBuffer</a></li>\n<li>scanlines&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019\">tram::Render::API::ScanlineBuffer</a></li>\n<li>screenHeight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>screenWidth&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>script&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>sender&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">tram::Message</a></li>\n<li>set_transform_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda\">tram::Physics::API::CallbackMotionState</a></li>\n<li>shader&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">tram::Render::API::GLDrawListEntry</a></li>\n<li>shape&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">tram::Physics::API::CollisionShapeTransform</a>, <a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd\">tram::Physics::CollisionModel</a></li>\n<li>short_name&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd\">tram::System::SystemInfo</a></li>\n<li>signal_count&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">tram::SignalTable</a></li>\n<li>signals&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">tram::SignalTable</a></li>\n<li>size&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">tram::Hashmap&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">tram::Render::VertexAttribute</a></li>\n<li>skip_newline_flag&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd\">tram::FileReaderParser</a></li>\n<li>skip_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227\">tram::FileReaderParser</a></li>\n<li>sound&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb\">tram::Sound</a></li>\n<li>sound_buffer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53\">tram::Audio::Sound</a></li>\n<li>sound_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">tram::Audio::Sound</a></li>\n<li>sound_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494\">tram::Sound</a></li>\n<li>sound_length&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">tram::Audio::Sound</a></li>\n<li>source&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171\">tram::AudioComponent</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">tram::Render::Material</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">tram::Render::Model</a></li>\n<li>source_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">tram::Audio::Spatial::PathFromAudioSource</a></li>\n<li>source_ideal_angle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">tram::Audio::Spatial::PathTracingResult</a></li>\n<li>special_option&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89\">tram::UI::KeyBinding</a></li>\n<li>special_option2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd\">tram::UI::KeyBinding</a></li>\n<li>specular&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>specular_exponent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">tram::Render::Material</a></li>\n<li>specular_transparency&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">tram::Render::Material</a></li>\n<li>specular_weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">tram::Render::API::GLMaterial</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">tram::Render::Material</a></li>\n<li>speed&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080\">tram::Ext::Kitchensink::Button</a></li>\n<li>spinlock&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">tram::Queue&lt; T &gt;</a></li>\n<li>sprite&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">tram::ParticleComponent</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4\">tram::SpriteComponent</a></li>\n<li>sprite_array&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9\">tram::SpriteComponent</a></li>\n<li>sprite_font&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>sprite_glyph&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>stack&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>stack_height&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c\">tram::GUI::FrameObject</a></li>\n<li>stackLength&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">tram::Stack&lt; T &gt;</a></li>\n<li>stackName&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">tram::Stack&lt; T &gt;</a></li>\n<li>stackSize&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">tram::Stack&lt; T &gt;</a></li>\n<li>standing_on&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb\">tram::RaycastControllerComponent</a></li>\n<li>standing_on_prev&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d\">tram::RaycastControllerComponent</a></li>\n<li>standing_pos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6\">tram::RaycastControllerComponent</a></li>\n<li>standing_rot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc\">tram::FPSControllerComponent</a></li>\n<li>start_pos&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd\">tram::Ext::Kitchensink::Button</a></li>\n<li>start_rot&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b\">tram::Ext::Kitchensink::Button</a></li>\n<li>start_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373\">tram::Render::API::ScanlineBuffer</a></li>\n<li>state&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514\">tram::Ext::Kitchensink::Button</a>, <a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb\">tram::System::SystemInfo</a></li>\n<li>state_space&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">tram::Ext::Kitchensink::AnimState</a></li>\n<li>states&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>statistics_enabled&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971\">tram::Ext::Menu::DebugMenu</a></li>\n<li>statistics_menu&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab\">tram::Ext::Menu::DebugMenu</a></li>\n<li>status&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">tram::Resource</a></li>\n<li>step_height&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b\">tram::RaycastControllerComponent</a></li>\n<li>step_height_crouch&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9\">tram::FPSControllerComponent</a></li>\n<li>stride&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">tram::Render::VertexAttribute</a></li>\n<li>string_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">tram::ValuePtr</a></li>\n<li>string_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">tram::Value</a></li>\n<li>subtitle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>subtype&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">tram::Event</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f\">tram::Ext::Menu::EventEmit</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee\">tram::Ext::Menu::EventIntercept</a></li>\n<li>subtype_string&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25\">tram::Ext::Menu::EventEmit</a></li>\n<li>sun_color&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4\">tram::Render::API::LayerParameters</a></li>\n<li>sun_direction&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82\">tram::Render::API::LayerParameters</a></li>\n<li>sunColor&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sunDirection&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sunWeight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>sw&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">tram::Render::drawlistentry_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">tram::Render::light_t</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">tram::Render::material_t</a></li>\n<li>sw_index_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">tram::Render::indexarray_t</a></li>\n<li>sw_texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">tram::Render::texturehandle_t</a></li>\n<li>sw_vertex_array&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">tram::Render::vertexarray_t</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>tab&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>table&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688\">tram::Ext::Kitchensink::AnimationStateComponent</a></li>\n<li>tag&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tram::Ext::Kitchensink::Effect</a></li>\n<li>tail&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tram::Render::Bone</a></li>\n<li>tex&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be\">tram::Render::API::StaticVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tram::Render::StaticModelVertex</a></li>\n<li>tex_x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5\">tram::Render::API::StaticVertex</a></li>\n<li>tex_y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed\">tram::Render::API::DynamicVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9\">tram::Render::API::StaticVertex</a></li>\n<li>texco&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">tram::Render::SpriteVertex</a></li>\n<li>texCount&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">tram::Render::API::GLDrawListEntry</a></li>\n<li>text&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1\">tram::Ext::Menu::Console</a></li>\n<li>texture&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">tram::Render::API::FFPHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e\">tram::Render::API::FVFHelper</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">tram::Render::DynamicModelVertex</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">tram::Render::SpritePoint</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">tram::Render::SpriteVertex</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">tram::Render::StaticModelVertex</a></li>\n<li>texture_data&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">tram::Render::Material</a></li>\n<li>texture_offset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">tram::Render::SpritePoint</a></li>\n<li>texture_size&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">tram::Render::SpritePoint</a></li>\n<li>texture_transforms&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">tram::Render::API::GLDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>texture_type&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">tram::Render::Material</a></li>\n<li>tick&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240\">tram::Ext::Kitchensink::Button</a></li>\n<li>tilt&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>tilt_goal&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>tilt_last&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>time&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">tram::Ext::Menu::Intercept</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39\">tram::Render::API::ShaderUniformModelMatrices</a></li>\n<li>time_spent&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa\">tram::Stats::SystemStat</a></li>\n<li>time_spent_average&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f\">tram::Stats::SystemStat</a></li>\n<li>time_spent_average_collated&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859\">tram::Stats::SystemStat</a></li>\n<li>time_spent_collated&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2\">tram::Stats::SystemStat</a></li>\n<li>time_spent_total&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae\">tram::Stats::SystemStat</a></li>\n<li>time_started&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24\">tram::Stats::SystemStat</a></li>\n<li>timer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534\">tram::Ext::Kitchensink::Button</a></li>\n<li>title&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>to&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">tram::Edge</a></li>\n<li>totl_asserts&#160;:&#160;<a class=\"el\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">_test_case</a></li>\n<li>transitions&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">tram::WorldCell</a></li>\n<li>tree&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d\">tram::Render::ModelAABB</a></li>\n<li>tree_handle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8\">tram::Render::LightTree::Light</a></li>\n<li>triangle&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">tram::Render::AABB::QueryResponse</a></li>\n<li>triangles&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd\">tram::Render::ModelAABB</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388\">tram::Render::TriangleBucket</a></li>\n<li>trigger&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">tram::Ext::Kitchensink::DialogAction</a></li>\n<li>trigger_flags&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040\">tram::Trigger</a></li>\n<li>triggercomponent&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger.html#a72b18d259352340995c217999106916d\">tram::Trigger</a></li>\n<li>triggers&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">tram::Ext::Kitchensink::Quest</a></li>\n<li>type&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">tram::Event</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">tram::Ext::Kitchensink::DialogTopic</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02\">tram::ListenerInfo</a>, <a class=\"el\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">tram::Message</a>, <a class=\"el\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">tram::PathEdgeInfo</a>, <a class=\"el\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">tram::PathFollower</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c\">tram::Physics::API::RigidbodyMetadata</a>, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">tram::Physics::CollisionShape</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">tram::Render::AABB::QueryResponse</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">tram::Render::API::SWVertexArray</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">tram::Render::VertexAttribute</a>, <a class=\"el\" href=\"classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e\">tram::Scriptable&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e\">tram::Settings::SettingInfo</a>, <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">tram::SharedEntityData</a>, <a class=\"el\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">tram::Signal</a>, <a class=\"el\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">tram::Value</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>uint32&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5\">tram::Settings::SettingInfo</a></li>\n<li>uint32_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">tram::ValuePtr</a></li>\n<li>uint32_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">tram::Value</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>value&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">tram::AABBTree::Node</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">tram::Ext::Kitchensink::AIVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">tram::Ext::Kitchensink::BaseAttribute</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">tram::Ext::Kitchensink::Effect</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd\">tram::Ext::Kitchensink::InitialAttribute</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">tram::Ext::Kitchensink::QuestTrigger</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">tram::Ext::Kitchensink::QuestVariable</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e\">tram::Ext::Menu::EventIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">tram::Hashmap&lt; T &gt;::Record</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">tram::Settings::Property&lt; T &gt;</a>, <a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b\">tram::Settings::RawSetting</a></li>\n<li>vao&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">tram::Render::API::GLDrawListEntry</a></li>\n<li>variable&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">tram::Ext::Kitchensink::DialogCondition</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">tram::Ext::Kitchensink::QuestTrigger</a></li>\n<li>variable1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>variable2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>variables&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130\">tram::Ext::Kitchensink::AIAgent</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">tram::Ext::Kitchensink::Quest</a></li>\n<li>vec2_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">tram::ValuePtr</a></li>\n<li>vec2_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">tram::Value</a></li>\n<li>vec3_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">tram::ValuePtr</a></li>\n<li>vec3_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">tram::Value</a></li>\n<li>vec4_ptr&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">tram::ValuePtr</a></li>\n<li>vec4_value&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">tram::Value</a></li>\n<li>velocity&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">tram::ParticleComponent::Particle</a></li>\n<li>vertex_array&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217\">tram::DecalComponent</a>, <a class=\"el\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">tram::ParticleComponent</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">tram::Render::API::SWDrawListEntry</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">tram::Render::Model</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">tram::Render::spritearray_t</a>, <a class=\"el\" href=\"classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7\">tram::SpriteComponent</a></li>\n<li>vertex_buffer&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">tram::Render::API::D3DDrawListEntry</a></li>\n<li>vertex_count&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">tram::Render::API::D3DDrawListEntry</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">tram::Render::API::SWVertexArray</a></li>\n<li>vertex_format&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64\">tram::Render::API::VertexBufferMetadata</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">tram::Render::Model</a></li>\n<li>verticality&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">tram::Render::SpriteVertex</a></li>\n<li>vertices&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">tram::Render::API::SWVertexArray</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">tram::Render::DynamicModelData</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">tram::Render::StaticModelData</a></li>\n<li>view&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>view_matrix&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95\">tram::Render::API::LayerParameters</a></li>\n<li>view_pos&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf\">tram::Render::API::ShaderUniformMatrices</a></li>\n<li>view_position&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd\">tram::Render::API::LayerParameters</a></li>\n<li>viewmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>voffset&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">tram::Render::SpriteVertex</a></li>\n<li>volume&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145\">tram::Sound</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">tram::WorldCell</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>w&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6\">tram::GUI::FrameObject</a></li>\n<li>walk_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">tram::FPSControllerComponent</a></li>\n<li>walk_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">tram::RaycastControllerComponent</a></li>\n<li>wall_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">tram::RaycastControllerComponent</a></li>\n<li>wallbonk_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">tram::RaycastControllerComponent</a></li>\n<li>weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>wgt&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_3&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_i&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359\">tram::Render::API::DynamicVertex</a></li>\n<li>width&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">tram::Render::SpriteFrame</a></li>\n<li>worldmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>writer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">tram::File</a></li>\n<li>writer_parser&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">tram::File</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_x\" name=\"index_x\"></a>- x -</h3><ul>\n<li>x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e\">tram::GUI::FrameObject</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039\">tram::Render::API::Point2D</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_vars_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members - Variables</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2\">tram::GUI::FrameObject</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28\">tram::Render::API::Point2D</a></li>\n<li>yaw&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>w&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6\">tram::GUI::FrameObject</a></li>\n<li>walk_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d\">tram::FPSControllerComponent</a></li>\n<li>walk_speed&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3\">tram::RaycastControllerComponent</a></li>\n<li>wall_collision&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407\">tram::RaycastControllerComponent</a></li>\n<li>wallbonk_callback&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2\">tram::FPSControllerComponent</a>, <a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd\">tram::RaycastControllerComponent</a></li>\n<li>was_error()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f\">tram::File</a></li>\n<li>Water()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2\">tram::Ext::Kitchensink::Water</a></li>\n<li>weight&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">tram::AnimationComponent::AnimationPlaybackInfo</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">tram::Ext::Kitchensink::AnimState</a>, <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>wgt&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_1&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_2&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_3&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567\">tram::Render::API::DynamicVertex</a></li>\n<li>wgt_i&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359\">tram::Render::API::DynamicVertex</a></li>\n<li>width&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">tram::Ext::Kitchensink::ItemClass</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">tram::Render::API::SWTexture</a>, <a class=\"el\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">tram::Render::Material</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">tram::Render::SpriteFrame</a></li>\n<li>WorldCell&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54\">tram::Transition</a>, <a class=\"el\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">tram::WorldCell</a></li>\n<li>worldmodel&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">tram::Ext::Kitchensink::ItemClass</a></li>\n<li>WRITE&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece\">tram::File</a></li>\n<li>write_float32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5\">tram::TextWriterParser</a></li>\n<li>write_float64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5\">tram::TextWriterParser</a></li>\n<li>write_int16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c\">tram::TextWriterParser</a></li>\n<li>write_int32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880\">tram::TextWriterParser</a></li>\n<li>write_int64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8\">tram::TextWriterParser</a></li>\n<li>write_int8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc\">tram::TextWriterParser</a></li>\n<li>write_name()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b\">tram::TextWriterParser</a></li>\n<li>write_newline()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5\">tram::TextWriterParser</a></li>\n<li>write_string()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929\">tram::TextWriterParser</a></li>\n<li>write_uint16()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4\">tram::TextWriterParser</a></li>\n<li>write_uint32()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e\">tram::TextWriterParser</a></li>\n<li>write_uint64()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d\">tram::TextWriterParser</a></li>\n<li>write_uint8()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5\">tram::File</a>, <a class=\"el\" href=\"classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b\">tram::FileWriterParser</a>, <a class=\"el\" href=\"classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389\">tram::TextWriterParser</a></li>\n<li>writer&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a\">tram::File</a></li>\n<li>writer_parser&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1\">tram::File</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_x\" name=\"index_x\"></a>- x -</h3><ul>\n<li>x&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e\">tram::GUI::FrameObject</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039\">tram::Render::API::Point2D</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>y&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">tram::Ext::Kitchensink::ItemInstance</a>, <a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2\">tram::GUI::FrameObject</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28\">tram::Render::API::Point2D</a></li>\n<li>yaw&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>yeet()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4\">tram::Component&lt; T &gt;</a></li>\n<li>Yeet()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf\">tram::DiskReader</a>, <a class=\"el\" href=\"classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb\">tram::DiskWriter</a>, <a class=\"el\" href=\"classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91\">tram::Entity</a>, <a class=\"el\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">tram::FileReader</a>, <a class=\"el\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">tram::FileWriter</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/functions_~.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all class members with links to the classes they belong to:</div>\n\n<h3><a id=\"index__7E\" name=\"index__7E\"></a>- ~ -</h3><ul>\n<li>~AABBTree()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">tram::AABBTree</a></li>\n<li>~AIPackage()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e\">tram::Ext::Kitchensink::AIPackage</a></li>\n<li>~AnimationComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee\">tram::AnimationComponent</a></li>\n<li>~AudioComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13\">tram::AudioComponent</a></li>\n<li>~CallbackMotionState()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59\">tram::Physics::API::CallbackMotionState</a></li>\n<li>~Camera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111\">tram::Ext::Camera::Camera</a></li>\n<li>~Component()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f\">tram::Component&lt; T &gt;</a></li>\n<li>~Console()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe\">tram::Ext::Menu::Console</a></li>\n<li>~DebugMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7\">tram::Ext::Menu::DebugMenu</a></li>\n<li>~DecalComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267\">tram::DecalComponent</a></li>\n<li>~DiskReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228\">tram::DiskReader</a></li>\n<li>~DiskWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587\">tram::DiskWriter</a></li>\n<li>~Entity()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2\">tram::Entity</a></li>\n<li>~EntityComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33\">tram::EntityComponent</a></li>\n<li>~EntityPicker()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b\">tram::Ext::Menu::EntityPicker</a></li>\n<li>~EntityProperties()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808\">tram::Ext::Menu::EntityProperties</a></li>\n<li>~EventEmit()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494\">tram::Ext::Menu::EventEmit</a></li>\n<li>~EventListener()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1\">tram::EventListener</a></li>\n<li>~File()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857\">tram::File</a></li>\n<li>~FileReader()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">tram::FileReader</a></li>\n<li>~FileWriter()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">tram::FileWriter</a></li>\n<li>~FirstPersonCamera()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503\">tram::Ext::Camera::FirstPersonCamera</a></li>\n<li>~FPSControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660\">tram::FPSControllerComponent</a></li>\n<li>~Intercept()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">tram::Ext::Menu::Intercept</a></li>\n<li>~InterceptMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166\">tram::Ext::Menu::InterceptMenu</a></li>\n<li>~InventoryManager()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">tram::Ext::Kitchensink::InventoryManager</a></li>\n<li>~LightComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">tram::LightComponent</a></li>\n<li>~ListDialog()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">tram::Ext::Kitchensink::ListDialog</a></li>\n<li>~ListInventoryManager()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">tram::Ext::Kitchensink::ListInventoryManager</a></li>\n<li>~ListSelection()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b\">tram::Ext::Menu::ListSelection</a></li>\n<li>~Menu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">tram::Ext::Menu::Menu</a></li>\n<li>~MessageSend()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4\">tram::Ext::Menu::MessageSend</a></li>\n<li>~Navmesh()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">tram::Navmesh</a></li>\n<li>~Options()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b\">tram::Ext::Menu::Options</a></li>\n<li>~ParticleComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">tram::ParticleComponent</a></li>\n<li>~Path()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">tram::Path</a></li>\n<li>~PhysicsComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba\">tram::PhysicsComponent</a></li>\n<li>~Player()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc\">tram::Player</a></li>\n<li>~PlayerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1\">tram::PlayerComponent</a></li>\n<li>~PoolPtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">tram::PoolPtr&lt; T &gt;</a></li>\n<li>~QuestVariable()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">tram::Ext::Kitchensink::QuestVariable</a></li>\n<li>~RaycastControllerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01\">tram::RaycastControllerComponent</a></li>\n<li>~RenderComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd\">tram::RenderComponent</a></li>\n<li>~ResourceProxy()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">tram::ResourceProxy&lt; T &gt;</a></li>\n<li>~Scriptable()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf\">tram::Scriptable&lt; T &gt;</a></li>\n<li>~SettingsMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491\">tram::Ext::Menu::SettingsMenu</a></li>\n<li>~SignalMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1\">tram::Ext::Menu::SignalMenu</a></li>\n<li>~SpriteComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2\">tram::SpriteComponent</a></li>\n<li>~StatisticsMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809\">tram::Ext::Menu::StatisticsMenu</a></li>\n<li>~SystemMenu()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce\">tram::Ext::Menu::SystemMenu</a></li>\n<li>~TemplateComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">tram::TemplateComponent</a></li>\n<li>~Transition()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">tram::Transition</a></li>\n<li>~TriggerComponent()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">tram::TriggerComponent</a></li>\n<li>~UID()&#160;:&#160;<a class=\"el\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">tram::UID</a></li>\n<li>~Value()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">tram::Value</a></li>\n<li>~ValuePtr()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">tram::ValuePtr</a></li>\n<li>~WorldCellProperties()&#160;:&#160;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f\">tram::Ext::Menu::WorldCellProperties</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/glfw_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/glfw/glfw.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_25bfe7637bda9b4c8dc6e22485fc785f.html\">glfw</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">glfw.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_8h_source.html\">platform/platform.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;thread&gt;</code><br />\n<code>#include &lt;GL/gl.h&gt;</code><br />\n<code>#include &lt;GLFW/glfw3.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ac2ffb1c1eceb5cc52cb771ab6f1f0b26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26\">tram::Platform::current_monitor</a> = 0</td></tr>\n<tr class=\"separator:ac2ffb1c1eceb5cc52cb771ab6f1f0b26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f880cc4d19fcc8b45f2405afe847765\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765\">tram::Platform::is_fullscreen</a> = false</td></tr>\n<tr class=\"separator:a6f880cc4d19fcc8b45f2405afe847765\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45688259010e30ccfd694bf81f4abc99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99\">tram::Platform::vsync</a> = true</td></tr>\n<tr class=\"separator:a45688259010e30ccfd694bf81f4abc99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/globals.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: File Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all file members with links to the files they belong to:</div>\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>ASSERT&#160;:&#160;<a class=\"el\" href=\"test_8h.html#ad014a2a071494bbabc34b48eeebadbf3\">test.h</a></li>\n<li>ATTRIBUTE_CONTAINER_COUNT&#160;:&#160;<a class=\"el\" href=\"attributes_8cpp.html#a84627f70639f661d824e70f33c21021d\">attributes.cpp</a></li>\n<li>ATTRIBUTE_INFO_COUNT&#160;:&#160;<a class=\"el\" href=\"attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269\">attributes.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>binguser&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a7b2977ab1d0adc9fca3191665cdbd8a8\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>camera&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a9b1d1ad26dca3cdfbe7bcabb98c50bcd\">main.cpp</a></li>\n<li>chamberpot&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#acc812653ff7db6ef5da9d01fbfd28f17\">main.cpp</a></li>\n<li>CHARACTER_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf\">character.cpp</a></li>\n<li>CLASS_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#a1b511158ca6796bb813f3bdb64369417\">character.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>derp&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a8bb2bbfa377225bdc2575d60f73eb24d\">main.cpp</a></li>\n<li>derp_player&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a705d8710b0919174ceba4c291f26824b\">main.cpp</a></li>\n<li>dingbat&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a39e40a8e7cee2dd7c112dcd36fe20cb6\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>eerp&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ad4a7109a74a328b58d1568997f025a46\">main.cpp</a></li>\n<li>END_TEST&#160;:&#160;<a class=\"el\" href=\"test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8\">test.h</a></li>\n</ul>\n\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>FACTION_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758\">character.cpp</a></li>\n<li>follower&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a6ad3920985a278030871ba19a36e9029\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>initial_follower&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a26541762e56e12ecf3defe0cdf54445c\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>lit&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a3c4f14ce2eba453f60e455656652a950\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>main()&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a217dbf8b442f20279ea00b898af96f52\">main.cpp</a></li>\n<li>mainloop()&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a896df4ffe3f986ad843e4d191cd712b3\">main.cpp</a></li>\n<li>monguser&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a9968db2fbe46c1d2ce9a76ccdff7929c\">main.cpp</a></li>\n<li>monguser_armature&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ac2200d84471744e6d70ce13d0835a5c9\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>player&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a96781128d3743da3d17e0fdd91afba7b\">main.cpp</a></li>\n<li>PlaySound&#160;:&#160;<a class=\"el\" href=\"entities_8cpp.html#a4366553d515649fefe284775ebaed16e\">entities.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>record&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a24abc1cdb33ae6cc929ae21787c1cec9\">main.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>sprite_list()&#160;:&#160;<a class=\"el\" href=\"render_2sprite_8cpp.html#aa7ba6e3579e4897ccc9c2e5f8d033b20\">sprite.cpp</a></li>\n<li>START_TEST&#160;:&#160;<a class=\"el\" href=\"test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f\">test.h</a></li>\n<li>STB_IMAGE_IMPLEMENTATION&#160;:&#160;<a class=\"el\" href=\"material_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78\">material.cpp</a></li>\n<li>STB_IMAGE_WRITE_IMPLEMENTATION&#160;:&#160;<a class=\"el\" href=\"image_8cpp.html#aefe397a94e8feddc652f92ef40ce9597\">image.cpp</a></li>\n<li>STBI_ONLY_PNG&#160;:&#160;<a class=\"el\" href=\"material_8cpp.html#a305f0db3256dd1248d3f17a83f7a6129\">material.cpp</a></li>\n</ul>\n\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TEST_CASE&#160;:&#160;<a class=\"el\" href=\"test_8h.html#adf0988a4a0680d35bed223d0b021437e\">test.h</a></li>\n<li>tolet_emitter&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aa6314261586f8d6bdb38d84211ab9068\">main.cpp</a></li>\n<li>tolet_spinner&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aef1afcddb99ee1a555eb26a6904d7362\">main.cpp</a></li>\n<li>tolet_sprayer&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aa6df28e8f20bf2b2154a6676327ac225\">main.cpp</a></li>\n<li>tolet_sprite&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ad5b4101b5ff3df42a2fe16f3499d1e67\">main.cpp</a></li>\n<li>TRAM_SDK_ASSERT&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#ab8acc3253ef25e7241078bb72714f386\">macros.h</a></li>\n<li>TRAM_SDK_ASSERT_MESSAGE&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a152c2304044652f7572e5759c6535a2c\">macros.h</a></li>\n<li>TRAM_SDK_ENTITY_NAME&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159\">macros.h</a></li>\n<li>TRAM_SDK_IMPLEMENT_POOL&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb\">macros.h</a></li>\n<li>TRAM_SDK_PROPERTY&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a\">macros.h</a></li>\n<li>TRAM_SDK_REGISTER_EVENT_DATATYPE&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a52706c5e76dff5554e6be98274f86e3d\">macros.h</a></li>\n<li>TRAM_SDK_VIRTUAL_PROPERTY&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe\">macros.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/globals_defs.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: File Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>ASSERT&#160;:&#160;<a class=\"el\" href=\"test_8h.html#ad014a2a071494bbabc34b48eeebadbf3\">test.h</a></li>\n<li>END_TEST&#160;:&#160;<a class=\"el\" href=\"test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8\">test.h</a></li>\n<li>PlaySound&#160;:&#160;<a class=\"el\" href=\"entities_8cpp.html#a4366553d515649fefe284775ebaed16e\">entities.cpp</a></li>\n<li>START_TEST&#160;:&#160;<a class=\"el\" href=\"test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f\">test.h</a></li>\n<li>STB_IMAGE_IMPLEMENTATION&#160;:&#160;<a class=\"el\" href=\"material_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78\">material.cpp</a></li>\n<li>STB_IMAGE_WRITE_IMPLEMENTATION&#160;:&#160;<a class=\"el\" href=\"image_8cpp.html#aefe397a94e8feddc652f92ef40ce9597\">image.cpp</a></li>\n<li>STBI_ONLY_PNG&#160;:&#160;<a class=\"el\" href=\"material_8cpp.html#a305f0db3256dd1248d3f17a83f7a6129\">material.cpp</a></li>\n<li>TEST_CASE&#160;:&#160;<a class=\"el\" href=\"test_8h.html#adf0988a4a0680d35bed223d0b021437e\">test.h</a></li>\n<li>TRAM_SDK_ASSERT&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#ab8acc3253ef25e7241078bb72714f386\">macros.h</a></li>\n<li>TRAM_SDK_ASSERT_MESSAGE&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a152c2304044652f7572e5759c6535a2c\">macros.h</a></li>\n<li>TRAM_SDK_ENTITY_NAME&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159\">macros.h</a></li>\n<li>TRAM_SDK_IMPLEMENT_POOL&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb\">macros.h</a></li>\n<li>TRAM_SDK_PROPERTY&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a\">macros.h</a></li>\n<li>TRAM_SDK_REGISTER_EVENT_DATATYPE&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a52706c5e76dff5554e6be98274f86e3d\">macros.h</a></li>\n<li>TRAM_SDK_VIRTUAL_PROPERTY&#160;:&#160;<a class=\"el\" href=\"macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe\">macros.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/globals_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: File Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>main()&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a217dbf8b442f20279ea00b898af96f52\">main.cpp</a></li>\n<li>mainloop()&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a896df4ffe3f986ad843e4d191cd712b3\">main.cpp</a></li>\n<li>sprite_list()&#160;:&#160;<a class=\"el\" href=\"render_2sprite_8cpp.html#aa7ba6e3579e4897ccc9c2e5f8d033b20\">sprite.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/globals_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: File Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;<ul>\n<li>ATTRIBUTE_CONTAINER_COUNT&#160;:&#160;<a class=\"el\" href=\"attributes_8cpp.html#a84627f70639f661d824e70f33c21021d\">attributes.cpp</a></li>\n<li>ATTRIBUTE_INFO_COUNT&#160;:&#160;<a class=\"el\" href=\"attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269\">attributes.cpp</a></li>\n<li>binguser&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a7b2977ab1d0adc9fca3191665cdbd8a8\">main.cpp</a></li>\n<li>camera&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a9b1d1ad26dca3cdfbe7bcabb98c50bcd\">main.cpp</a></li>\n<li>chamberpot&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#acc812653ff7db6ef5da9d01fbfd28f17\">main.cpp</a></li>\n<li>CHARACTER_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf\">character.cpp</a></li>\n<li>CLASS_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#a1b511158ca6796bb813f3bdb64369417\">character.cpp</a></li>\n<li>derp&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a8bb2bbfa377225bdc2575d60f73eb24d\">main.cpp</a></li>\n<li>derp_player&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a705d8710b0919174ceba4c291f26824b\">main.cpp</a></li>\n<li>dingbat&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a39e40a8e7cee2dd7c112dcd36fe20cb6\">main.cpp</a></li>\n<li>eerp&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ad4a7109a74a328b58d1568997f025a46\">main.cpp</a></li>\n<li>FACTION_COUNT&#160;:&#160;<a class=\"el\" href=\"character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758\">character.cpp</a></li>\n<li>follower&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a6ad3920985a278030871ba19a36e9029\">main.cpp</a></li>\n<li>initial_follower&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a26541762e56e12ecf3defe0cdf54445c\">main.cpp</a></li>\n<li>lit&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a3c4f14ce2eba453f60e455656652a950\">main.cpp</a></li>\n<li>monguser&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a9968db2fbe46c1d2ce9a76ccdff7929c\">main.cpp</a></li>\n<li>monguser_armature&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ac2200d84471744e6d70ce13d0835a5c9\">main.cpp</a></li>\n<li>player&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a96781128d3743da3d17e0fdd91afba7b\">main.cpp</a></li>\n<li>record&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#a24abc1cdb33ae6cc929ae21787c1cec9\">main.cpp</a></li>\n<li>tolet_emitter&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aa6314261586f8d6bdb38d84211ab9068\">main.cpp</a></li>\n<li>tolet_spinner&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aef1afcddb99ee1a555eb26a6904d7362\">main.cpp</a></li>\n<li>tolet_sprayer&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#aa6df28e8f20bf2b2154a6676327ac225\">main.cpp</a></li>\n<li>tolet_sprite&#160;:&#160;<a class=\"el\" href=\"main_8cpp.html#ad5b4101b5ff3df42a2fe16f3499d1e67\">main.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/graph_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">graph.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"graph_8h_source.html\">framework/graph.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/graph_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">graph.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"graph_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_edge.html\">tram::Edge</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_node.html\">tram::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html\">tram::Graph</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/graph_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/graph.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">graph.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"graph_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html\">   11</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_edge.html\">Edge</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">   12</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">from</a>;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">   13</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">to</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>};</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html\">   16</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">   17</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">position</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">   18</a></span>    std::vector&lt;uint32_t&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html\">   21</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_graph.html\">Graph</a> {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">   23</a></span>    std::vector&lt;Node&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">   24</a></span>    std::vector&lt;Edge&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>};</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>}</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_GRAPH_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html\">tram::Graph</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html_a4c1e9f785fe9ac3fe2665d073f2a6722\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722\">tram::Graph::edges</a></div><div class=\"ttdeci\">std::vector&lt; Edge &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> graph.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html_a95178b1e2898a6f4ba58c8b72aa2873d\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d\">tram::Graph::nodes</a></div><div class=\"ttdeci\">std::vector&lt; Node &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> graph.h:23</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html\">tram::Edge</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html_a3b4b8a5653bb798802c9319ed8374cee\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">tram::Edge::to</a></div><div class=\"ttdeci\">uint32_t to</div><div class=\"ttdef\"><b>Definition:</b> graph.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_edge_html_ad6343a5ac259ec2941d5aabd5a06908e\"><div class=\"ttname\"><a href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">tram::Edge::from</a></div><div class=\"ttdeci\">uint32_t from</div><div class=\"ttdef\"><b>Definition:</b> graph.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html\">tram::Node</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html_a189f24e56e385fcf1e9ff4b4b40c7b7a\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">tram::Node::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> graph.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html_a28d12d5232b5f9651565664e0eae3cce\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">tram::Node::edges</a></div><div class=\"ttdeci\">std::vector&lt; uint32_t &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> graph.h:18</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/gui_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/gui.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">gui.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"stack_8h_source.html\">templates/stack.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"language_8h_source.html\">framework/language.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_g_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">tram::GUI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_g_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">tram::GUI::SetSelectedText</a> (char *text)</td></tr>\n<tr class=\"memdesc:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the text which is selected in a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">More...</a><br /></td></tr>\n<tr class=\"separator:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">tram::GUI::SetColor</a> (Render::color_t color, GlyphType type)</td></tr>\n<tr class=\"memdesc:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the color.  <a href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">More...</a><br /></td></tr>\n<tr class=\"separator:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">tram::GUI::SetFont</a> (font_t font, GlyphType type)</td></tr>\n<tr class=\"memdesc:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the font.  <a href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">tram::GUI::RestoreColor</a> (GlyphType type)</td></tr>\n<tr class=\"memdesc:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph color.  <a href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">More...</a><br /></td></tr>\n<tr class=\"separator:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">tram::GUI::RestoreFont</a> (GlyphType type)</td></tr>\n<tr class=\"memdesc:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph font.  <a href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">More...</a><br /></td></tr>\n<tr class=\"separator:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">tram::GUI::SetGlyphDefaults</a> (Render::color_t color, font_t font, GlyphType type)</td></tr>\n<tr class=\"memdesc:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Overrides glyph default colors and fonts.  <a href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">More...</a><br /></td></tr>\n<tr class=\"separator:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">tram::GUI::SetScaling</a> (uint32_t scale)</td></tr>\n<tr class=\"memdesc:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">More...</a><br /></td></tr>\n<tr class=\"separator:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">tram::GUI::GetScaling</a> ()</td></tr>\n<tr class=\"memdesc:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">More...</a><br /></td></tr>\n<tr class=\"separator:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">tram::GUI::SetCursorDelayed</a> (UI::CursorType cursor)</td></tr>\n<tr class=\"memdesc:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the cursor.  <a href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">More...</a><br /></td></tr>\n<tr class=\"separator:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">tram::GUI::Init</a> ()</td></tr>\n<tr class=\"memdesc:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs initialization of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system.  <a href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">More...</a><br /></td></tr>\n<tr class=\"separator:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">tram::GUI::UpdateDrawListFonts</a> ()</td></tr>\n<tr class=\"memdesc:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submits registered fonts to the renderer.  <a href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">More...</a><br /></td></tr>\n<tr class=\"separator:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">tram::GUI::Update</a> ()</td></tr>\n<tr class=\"memdesc:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submits all of the glyphs for rendering.  <a href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">font_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">tram::GUI::RegisterFont</a> (Render::Sprite *sprite)</td></tr>\n<tr class=\"memdesc:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a font.  <a href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">More...</a><br /></td></tr>\n<tr class=\"separator:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac467099a0542b69fb101532431fef5a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">tram::GUI::SetGlyph</a> (float x, float y, float z, float w, float h, float tex_x, float tex_y, float tex_w, float tex_h, const vec3 &amp;color, font_t font)</td></tr>\n<tr class=\"memdesc:ac467099a0542b69fb101532431fef5a1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a glyph to rendering list.  <a href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">More...</a><br /></td></tr>\n<tr class=\"separator:ac467099a0542b69fb101532431fef5a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a643f4e389961bc9ccb05092ea58cccc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6\">tram::GUI::GlyphWidth</a> (font_t font, glyph_t glyph)</td></tr>\n<tr class=\"separator:a643f4e389961bc9ccb05092ea58cccc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5998935f32f2b821313449f0254dccf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0\">tram::GUI::GlyphHeight</a> (font_t font, glyph_t glyph)</td></tr>\n<tr class=\"separator:a5998935f32f2b821313449f0254dccf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34d71791d5b4905b42111ea613a087e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6\">tram::GUI::GlyphBorderV</a> (font_t font, glyph_t glyph)</td></tr>\n<tr class=\"separator:a34d71791d5b4905b42111ea613a087e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15d7e1006b2983a29f7f63f7dc2a6e73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73\">tram::GUI::DrawGlyph</a> (font_t font, glyph_t glyph, const vec3 &amp;color, uint32_t x, uint32_t y, uint32_t w=0, uint32_t h=0)</td></tr>\n<tr class=\"separator:a15d7e1006b2983a29f7f63f7dc2a6e73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">tram::GUI::Glyph</a> (font_t font, glyph_t glyph)</td></tr>\n<tr class=\"memdesc:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a glyph from a font.  <a href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">More...</a><br /></td></tr>\n<tr class=\"separator:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">tram::GUI::DrawBox</a> (font_t font, glyph_t glyph, uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a glyph box.  <a href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">More...</a><br /></td></tr>\n<tr class=\"separator:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af581d06594c177e5c1e7ea98db61382f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f\">tram::GUI::TextWidth</a> (font_t font, const char *text)</td></tr>\n<tr class=\"separator:af581d06594c177e5c1e7ea98db61382f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">tram::GUI::Text</a> (const char *text, uint32_t orientation)</td></tr>\n<tr class=\"memdesc:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text on the screen.  <a href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">tram::GUI::DrawBoxHorizontal</a> (font_t font, glyph_t glyph, uint32_t x, uint32_t y, uint32_t w)</td></tr>\n<tr class=\"memdesc:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal bar.  <a href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">tram::GUI::PushFrame</a> (uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame.  <a href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">More...</a><br /></td></tr>\n<tr class=\"separator:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">tram::GUI::PushFrameRelative</a> (uint32_t orientation, uint32_t offset)</td></tr>\n<tr class=\"memdesc:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame releative to the previous.  <a href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">More...</a><br /></td></tr>\n<tr class=\"separator:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">tram::GUI::PopFrame</a> ()</td></tr>\n<tr class=\"memdesc:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a frame from the frame stack.  <a href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">More...</a><br /></td></tr>\n<tr class=\"separator:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">tram::GUI::PushFrameRelativeKeepCursor</a> (uint32_t orientation, uint32_t offset, bool keep_x, bool keep_y)</td></tr>\n<tr class=\"memdesc:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame, but keeps the cursor in place.  <a href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">More...</a><br /></td></tr>\n<tr class=\"separator:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">tram::GUI::PopFrameKeepCursor</a> (bool keep_x, bool keep_y)</td></tr>\n<tr class=\"separator:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e023aaf6835da7993924f1796035f0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c\">tram::GUI::CursorOver</a> (uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"separator:a4e023aaf6835da7993924f1796035f0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6121817714545cc76730037226ca285f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">tram::GUI::ClickHandled</a> ()</td></tr>\n<tr class=\"separator:a6121817714545cc76730037226ca285f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6bfb846ae3573d59924997f6ce098b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8\">tram::GUI::ClickHandledLate</a> ()</td></tr>\n<tr class=\"separator:aa6bfb846ae3573d59924997f6ce098b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d4089794c4aca324d8c19d02ef80a07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07\">tram::GUI::Clicked</a> ()</td></tr>\n<tr class=\"separator:a0d4089794c4aca324d8c19d02ef80a07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36df4e7f162a96882c85976374864e7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">tram::GUI::Button</a> (const char *text, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a36df4e7f162a96882c85976374864e7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a button.  <a href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">More...</a><br /></td></tr>\n<tr class=\"separator:a36df4e7f162a96882c85976374864e7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">tram::GUI::RadioButton</a> (uint32_t index, uint32_t &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a radio button.  <a href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">More...</a><br /></td></tr>\n<tr class=\"separator:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">tram::GUI::CheckBox</a> (bool &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a checkbox.  <a href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">More...</a><br /></td></tr>\n<tr class=\"separator:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">tram::GUI::Slider</a> (float &amp;value, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a081da10ffbacc71992b191a911acf1b8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal slider.  <a href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">More...</a><br /></td></tr>\n<tr class=\"separator:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">tram::GUI::NewLine</a> (uint32_t line)</td></tr>\n<tr class=\"memdesc:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a new line.  <a href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">More...</a><br /></td></tr>\n<tr class=\"separator:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">tram::GUI::HorizontalDivider</a> ()</td></tr>\n<tr class=\"memdesc:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal divider.  <a href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">More...</a><br /></td></tr>\n<tr class=\"separator:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">tram::GUI::FillFrame</a> (glyph_t glyph)</td></tr>\n<tr class=\"memdesc:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fills the frame with a glyph.  <a href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">tram::GUI::TextBox</a> (char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">More...</a><br /></td></tr>\n<tr class=\"separator:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a197eda70726287d8c846535df181e486\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">tram::GUI::TextBox</a> (const char *text, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a197eda70726287d8c846535df181e486\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">More...</a><br /></td></tr>\n<tr class=\"separator:a197eda70726287d8c846535df181e486\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">tram::GUI::Begin</a> ()</td></tr>\n<tr class=\"memdesc:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Begins the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">More...</a><br /></td></tr>\n<tr class=\"separator:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">tram::GUI::End</a> ()</td></tr>\n<tr class=\"memdesc:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">More...</a><br /></td></tr>\n<tr class=\"separator:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a6b89bb5200e494e6cd5a0191bf527df0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0\">tram::GUI::last_update_frame</a> = 0</td></tr>\n<tr class=\"separator:a6b89bb5200e494e6cd5a0191bf527df0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fd25b3a9a83f7a905fd70aeda3cf2d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8\">tram::GUI::beginned</a> = false</td></tr>\n<tr class=\"separator:a2fd25b3a9a83f7a905fd70aeda3cf2d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cd56d99b85b29b8659648e28bb1f5ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca\">tram::GUI::mouse_click_not_handled</a> = true</td></tr>\n<tr class=\"separator:a8cd56d99b85b29b8659648e28bb1f5ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64d510448e860481081147bb9e1ef0d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6\">tram::GUI::mouse_click_not_handled_late</a> = true</td></tr>\n<tr class=\"separator:a64d510448e860481081147bb9e1ef0d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/gui_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/gui.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">gui.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n</div>\n<p><a href=\"gui_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_g_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">tram::GUI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_g_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ad72e4051d38000777cac376d29fc18a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></td></tr>\n<tr class=\"separator:ad72e4051d38000777cac376d29fc18a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afecdfd821a1e89c4d62d0f8b420ca33a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI::glyph_t</a></td></tr>\n<tr class=\"separator:afecdfd821a1e89c4d62d0f8b420ca33a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a25b2f7af6fe6845d047fd58c6232deef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI::orientation</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">tram::GUI::TEXT_LEFT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">tram::GUI::TEXT_CENTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">tram::GUI::TEXT_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">tram::GUI::TEXT_JUSTIFIED</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">tram::GUI::LINE_LOW</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">tram::GUI::LINE_NORMAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">tram::GUI::LINE_HIGH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">tram::GUI::FRAME_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">tram::GUI::FRAME_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">tram::GUI::FRAME_TOP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">tram::GUI::FRAME_BOTTOM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">tram::GUI::FRAME_LEFT_INV</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">tram::GUI::FRAME_RIGHT_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">tram::GUI::FRAME_TOP_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">tram::GUI::FRAME_BOTTOM_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">tram::GUI::FRAME_INSET</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">tram::GUI::FRAME_CENTER_VERTICAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">tram::GUI::FRAME_CENTER_HORIZONTAL</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a25b2f7af6fe6845d047fd58c6232deef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed177dc7d46e43f3cf52662fecbaf0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">tram::GUI::GlyphType</a> { <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">tram::GUI::TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">tram::GUI::WIDGET</a>\n }</td></tr>\n<tr class=\"separator:aed177dc7d46e43f3cf52662fecbaf0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6000fd29fa38db33926bfe7980344fe1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">tram::GUI::widget</a> : glyph_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">tram::GUI::WIDGET_TOP_LEFT</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">tram::GUI::WIDGET_TOP_MIDDLE</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">tram::GUI::WIDGET_TOP_RIGHT</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">tram::GUI::WIDGET_MIDDLE_LEFT</a> = 3\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">tram::GUI::WIDGET_MIDDLE_MIDDLE</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">tram::GUI::WIDGET_MIDDLE_RIGHT</a> = 5\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">tram::GUI::WIDGET_BOTTOM_LEFT</a> = 6\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">tram::GUI::WIDGET_BOTTOM_MIDDLE</a> = 7\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">tram::GUI::WIDGET_BOTTOM_RIGHT</a> = 8\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">tram::GUI::WIDGET_LEFT</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">tram::GUI::WIDGET_MIDDLE</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">tram::GUI::WIDGET_RIGHT</a> = 2\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">tram::GUI::WIDGET_BUTTON</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">tram::GUI::WIDGET_BUTTON_PRESSED</a> = 9\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">tram::GUI::WIDGET_BUTTON_SELECTED_ENABLED</a> = 18\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">tram::GUI::WIDGET_BUTTON_SELECTED_DISABLED</a> = 27\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">tram::GUI::WIDGET_BUTTON_DISABLED</a> = 36\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">tram::GUI::WIDGET_BUTTON_PRESSED_DISABLED</a> = 45\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">tram::GUI::WIDGET_WINDOW</a> = 54\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">tram::GUI::WIDGET_REVERSE_WINDOW</a> = 63\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">tram::GUI::WIDGET_SELECT_BOX</a> = 72\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">tram::GUI::WIDGET_SELECT_BOX_PRESSED</a> = 81\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">tram::GUI::WIDGET_SELECT_BOX_SELECTED</a> = 90\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">tram::GUI::WIDGET_TEXT_BOX</a> = 99\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">tram::GUI::WIDGET_TEXT_BOX_DISABLED</a> = 108\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">tram::GUI::WIDGET_BORDER</a> = 117\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">tram::GUI::WIDGET_SCROLL_BAR_TRACK_VERTICAL</a> = 126\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">tram::GUI::WIDGET_SCROLL_BAR_TRACK_HORIZONTAL</a> = 129\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">tram::GUI::WIDGET_DIVIDER_HORIZONTAL</a> = 132\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">tram::GUI::WIDGET_DIVIDER_VERTICAL</a> = 135\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">tram::GUI::WIDGET_SLIDER_TRACK_VERTICAL</a> = 138\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">tram::GUI::WIDGET_SLIDER_TRACK_HORIZONTAL</a> = 138\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">tram::GUI::WIDGET_SCROLL_BAR_VERTICAL</a> = 144\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">tram::GUI::WIDGET_SCROLL_BAR_HORIZONTAL</a> = 147\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">tram::GUI::WIDGET_TAB</a> = 150\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">tram::GUI::WIDGET_PROGESS_BAR</a> = 153\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">tram::GUI::WIDGET_RADIO_BUTTON</a> = 156\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">tram::GUI::WIDGET_CHECK_BUTTON</a> = 162\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">tram::GUI::WIDGET_SLIDER_VERTICAL</a> = 168\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">tram::GUI::WIDGET_SLIDER_HORIZONTAL</a> = 174\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">tram::GUI::WIDGET_BUTTON_UP</a> = 180\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">tram::GUI::WIDGET_BUTTON_DOWN</a> = 186\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">tram::GUI::WIDGET_BUTTON_LEFT</a> = 192\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">tram::GUI::WIDGET_BUTTON_RIGHT</a> = 198\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">tram::GUI::WIDGET_BUTTON_EXIT</a> = 204\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">tram::GUI::WIDGET_BUTTON_HELP</a> = 210\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">tram::GUI::WIDGET_BUTTON_2_WINDOW</a> = 216\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">tram::GUI::WIDGET_BUTTON_1_WINDOW</a> = 222\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">tram::GUI::WIDGET_DEFAULT</a> = 255\n<br />\n }</td></tr>\n<tr class=\"separator:a6000fd29fa38db33926bfe7980344fe1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">tram::GUI::Init</a> ()</td></tr>\n<tr class=\"memdesc:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs initialization of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system.  <a href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">More...</a><br /></td></tr>\n<tr class=\"separator:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">tram::GUI::Update</a> ()</td></tr>\n<tr class=\"memdesc:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submits all of the glyphs for rendering.  <a href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">font_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">tram::GUI::RegisterFont</a> (Render::Sprite *sprite)</td></tr>\n<tr class=\"memdesc:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a font.  <a href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">More...</a><br /></td></tr>\n<tr class=\"separator:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">tram::GUI::SetScaling</a> (uint32_t scale)</td></tr>\n<tr class=\"memdesc:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">More...</a><br /></td></tr>\n<tr class=\"separator:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">tram::GUI::GetScaling</a> ()</td></tr>\n<tr class=\"memdesc:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">More...</a><br /></td></tr>\n<tr class=\"separator:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6121817714545cc76730037226ca285f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">tram::GUI::ClickHandled</a> ()</td></tr>\n<tr class=\"separator:a6121817714545cc76730037226ca285f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">tram::GUI::Begin</a> ()</td></tr>\n<tr class=\"memdesc:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Begins the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">More...</a><br /></td></tr>\n<tr class=\"separator:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">tram::GUI::End</a> ()</td></tr>\n<tr class=\"memdesc:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">More...</a><br /></td></tr>\n<tr class=\"separator:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">tram::GUI::FillFrame</a> (glyph_t glyph)</td></tr>\n<tr class=\"memdesc:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fills the frame with a glyph.  <a href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">tram::GUI::HorizontalDivider</a> ()</td></tr>\n<tr class=\"memdesc:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal divider.  <a href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">More...</a><br /></td></tr>\n<tr class=\"separator:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">tram::GUI::NewLine</a> (uint32_t line)</td></tr>\n<tr class=\"memdesc:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a new line.  <a href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">More...</a><br /></td></tr>\n<tr class=\"separator:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">tram::GUI::CheckBox</a> (bool &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a checkbox.  <a href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">More...</a><br /></td></tr>\n<tr class=\"separator:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">tram::GUI::RadioButton</a> (uint32_t index, uint32_t &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a radio button.  <a href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">More...</a><br /></td></tr>\n<tr class=\"separator:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36df4e7f162a96882c85976374864e7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">tram::GUI::Button</a> (const char *text, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a36df4e7f162a96882c85976374864e7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a button.  <a href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">More...</a><br /></td></tr>\n<tr class=\"separator:a36df4e7f162a96882c85976374864e7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">tram::GUI::Slider</a> (float &amp;value, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a081da10ffbacc71992b191a911acf1b8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal slider.  <a href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">More...</a><br /></td></tr>\n<tr class=\"separator:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9cbc24cc6766595f1a063de7c32e568\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ab9cbc24cc6766595f1a063de7c32e568\">tram::GUI::Glyph</a> (glyph_t glyph)</td></tr>\n<tr class=\"separator:ab9cbc24cc6766595f1a063de7c32e568\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">tram::GUI::Text</a> (const char *text, uint32_t orientation)</td></tr>\n<tr class=\"memdesc:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text on the screen.  <a href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">tram::GUI::TextBox</a> (char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">More...</a><br /></td></tr>\n<tr class=\"separator:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a197eda70726287d8c846535df181e486\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">tram::GUI::TextBox</a> (const char *text, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a197eda70726287d8c846535df181e486\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">More...</a><br /></td></tr>\n<tr class=\"separator:a197eda70726287d8c846535df181e486\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">tram::GUI::SetColor</a> (Render::color_t color, GlyphType type)</td></tr>\n<tr class=\"memdesc:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the color.  <a href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">More...</a><br /></td></tr>\n<tr class=\"separator:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">tram::GUI::SetFont</a> (font_t font, GlyphType type)</td></tr>\n<tr class=\"memdesc:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the font.  <a href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">tram::GUI::RestoreColor</a> (GlyphType type)</td></tr>\n<tr class=\"memdesc:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph color.  <a href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">More...</a><br /></td></tr>\n<tr class=\"separator:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">tram::GUI::RestoreFont</a> (GlyphType type)</td></tr>\n<tr class=\"memdesc:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph font.  <a href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">More...</a><br /></td></tr>\n<tr class=\"separator:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">tram::GUI::SetGlyphDefaults</a> (Render::color_t color, font_t font, GlyphType type)</td></tr>\n<tr class=\"memdesc:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Overrides glyph default colors and fonts.  <a href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">More...</a><br /></td></tr>\n<tr class=\"separator:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">tram::GUI::PopFrameKeepCursor</a> (bool keep_x, bool keep_y)</td></tr>\n<tr class=\"separator:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">tram::GUI::PushFrameRelative</a> (uint32_t orientation, uint32_t offset)</td></tr>\n<tr class=\"memdesc:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame releative to the previous.  <a href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">More...</a><br /></td></tr>\n<tr class=\"separator:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">tram::GUI::PushFrameRelativeKeepCursor</a> (uint32_t orientation, uint32_t offset, bool keep_x, bool keep_y)</td></tr>\n<tr class=\"memdesc:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame, but keeps the cursor in place.  <a href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">More...</a><br /></td></tr>\n<tr class=\"separator:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">tram::GUI::PushFrame</a> (uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame.  <a href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">More...</a><br /></td></tr>\n<tr class=\"separator:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">tram::GUI::PopFrame</a> ()</td></tr>\n<tr class=\"memdesc:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a frame from the frame stack.  <a href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">More...</a><br /></td></tr>\n<tr class=\"separator:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">tram::GUI::SetSelectedText</a> (char *text)</td></tr>\n<tr class=\"memdesc:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the text which is selected in a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">More...</a><br /></td></tr>\n<tr class=\"separator:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/gui_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/gui.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">gui.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"gui_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_GUI_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_GUI_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"ui_8h.html\">framework/ui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html\">    8</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a>;</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>}</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_g_u_i.html\">tram::GUI</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">   14</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">   15</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">   17</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">TEXT_LEFT</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">TEXT_CENTER</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">TEXT_RIGHT</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">TEXT_JUSTIFIED</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">   23</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">LINE_LOW</a>,</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">   24</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">LINE_NORMAL</a>,</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">   25</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">LINE_HIGH</a>,</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">FRAME_LEFT</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">   28</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">FRAME_RIGHT</a>,</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">   29</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">FRAME_TOP</a>,</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">   30</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">FRAME_BOTTOM</a>,</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">   31</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">FRAME_LEFT_INV</a>,</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">   32</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">FRAME_RIGHT_INV</a>,</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">   33</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">FRAME_TOP_INV</a>,</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">   34</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">FRAME_BOTTOM_INV</a>,</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">   35</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">FRAME_INSET</a>,</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">   36</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">FRAME_CENTER_VERTICAL</a>,</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">FRAME_CENTER_HORIZONTAL</a></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">   38</a></span>};</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">   40</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> {</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">   41</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>,</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">WIDGET</a></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">   43</a></span>};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">RegisterFont</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>* sprite);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">SetScaling</a>(uint32_t);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">GetScaling</a>();</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">ClickHandled</a>();</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">Begin</a>();</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">End</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">FillFrame</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">HorizontalDivider</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">NewLine</a>(uint32_t line = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">LINE_NORMAL</a>);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">CheckBox</a>(<span class=\"keywordtype\">bool</span>&amp; selected, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, <span class=\"keywordtype\">bool</span> enabled = <span class=\"keyword\">true</span>);</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">RadioButton</a>(uint32_t index, uint32_t&amp; selected, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, <span class=\"keywordtype\">bool</span> enabled = <span class=\"keyword\">true</span>);</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">Button</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, <span class=\"keywordtype\">bool</span> enabled = <span class=\"keyword\">true</span>, uint32_t width = 0);</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">Slider</a>(<span class=\"keywordtype\">float</span>&amp; value, <span class=\"keywordtype\">bool</span> enabled = <span class=\"keyword\">true</span>, uint32_t width = 0);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#ab9cbc24cc6766595f1a063de7c32e568\">   66</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">Glyph</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">Text</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, uint32_t <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">TEXT_LEFT</a>);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">TextBox</a>(<span class=\"keywordtype\">char</span>* text, uint32_t length, <span class=\"keywordtype\">bool</span> enabled = <span class=\"keyword\">true</span>, uint32_t w = 0, uint32_t h = 0);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">TextBox</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, uint32_t w = 0, uint32_t h = 0);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">SetColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>);</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">SetFont</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>);</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">RestoreColor</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">RestoreFont</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>);</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">SetGlyphDefaults</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>);</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">PopFrameKeepCursor</a>(<span class=\"keywordtype\">bool</span> = <span class=\"keyword\">false</span>, <span class=\"keywordtype\">bool</span> = <span class=\"keyword\">true</span>);</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">PushFrameRelative</a>(uint32_t <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>, uint32_t offset);</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">PushFrameRelativeKeepCursor</a>(uint32_t <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>, uint32_t offset, <span class=\"keywordtype\">bool</span> = <span class=\"keyword\">false</span>, <span class=\"keywordtype\">bool</span> = <span class=\"keyword\">true</span>);</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">PushFrame</a>(uint32_t x, uint32_t y, uint32_t w, uint32_t h);</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">PopFrame</a>();</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">SetSelectedText</a>(<span class=\"keywordtype\">char</span>* text);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">   89</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">widget</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> {</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">   90</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">WIDGET_TOP_LEFT</a> = 0,</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">   91</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">WIDGET_TOP_MIDDLE</a> = 1,</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">   92</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">WIDGET_TOP_RIGHT</a> = 2,</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">   93</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">WIDGET_MIDDLE_LEFT</a> = 3,</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">   94</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">WIDGET_MIDDLE_MIDDLE</a> = 4,</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">   95</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">WIDGET_MIDDLE_RIGHT</a> = 5,</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">   96</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">WIDGET_BOTTOM_LEFT</a> = 6,</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">   97</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">WIDGET_BOTTOM_MIDDLE</a> = 7,</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">   98</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">WIDGET_BOTTOM_RIGHT</a> = 8,</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">  100</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">WIDGET_LEFT</a> = 0,</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">  101</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">WIDGET_MIDDLE</a> = 1,</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">  102</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">WIDGET_RIGHT</a> = 2,</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">  104</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">WIDGET_BUTTON</a> = 0,</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">  105</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">WIDGET_BUTTON_PRESSED</a> = 9,</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">  106</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">WIDGET_BUTTON_SELECTED_ENABLED</a> = 18,</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">  107</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">WIDGET_BUTTON_SELECTED_DISABLED</a> = 27,</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">  108</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">WIDGET_BUTTON_DISABLED</a> = 36,</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">  109</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">WIDGET_BUTTON_PRESSED_DISABLED</a> = 45,</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">  110</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">WIDGET_WINDOW</a> = 54,</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">  111</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">WIDGET_REVERSE_WINDOW</a> = 63,</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">  112</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">WIDGET_SELECT_BOX</a> = 72,</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">  113</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">WIDGET_SELECT_BOX_PRESSED</a> = 81,</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">  114</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">WIDGET_SELECT_BOX_SELECTED</a> = 90,</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">  115</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">WIDGET_TEXT_BOX</a> = 99,</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">  116</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">WIDGET_TEXT_BOX_DISABLED</a> = 108,</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">  117</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">WIDGET_BORDER</a> = 117,</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">  118</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">WIDGET_SCROLL_BAR_TRACK_VERTICAL</a> = 126,</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">  119</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">WIDGET_SCROLL_BAR_TRACK_HORIZONTAL</a> = 129,</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">  120</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">WIDGET_DIVIDER_HORIZONTAL</a> = 132,</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">  121</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">WIDGET_DIVIDER_VERTICAL</a> = 135,</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">  122</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">WIDGET_SLIDER_TRACK_VERTICAL</a> = 138,</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">  123</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">WIDGET_SLIDER_TRACK_HORIZONTAL</a> = 138,</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">  124</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">WIDGET_SCROLL_BAR_VERTICAL</a> = 144,</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">  125</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">WIDGET_SCROLL_BAR_HORIZONTAL</a> = 147,</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">  126</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">WIDGET_TAB</a> = 150,</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">  127</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">WIDGET_PROGESS_BAR</a> = 153,</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">  128</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">WIDGET_RADIO_BUTTON</a> = 156,</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">  129</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">WIDGET_CHECK_BUTTON</a> = 162,</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">  130</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">WIDGET_SLIDER_VERTICAL</a> = 168,</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">  131</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">WIDGET_SLIDER_HORIZONTAL</a> = 174,</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">  132</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">WIDGET_BUTTON_UP</a> = 180,</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">  133</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">WIDGET_BUTTON_DOWN</a> = 186,</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">  134</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">WIDGET_BUTTON_LEFT</a> = 192,</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">  135</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">WIDGET_BUTTON_RIGHT</a> = 198,</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">  136</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">WIDGET_BUTTON_EXIT</a> = 204,</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">  137</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">WIDGET_BUTTON_HELP</a> = 210,</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">  138</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">WIDGET_BUTTON_2_WINDOW</a> = 216,</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">  139</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">WIDGET_BUTTON_1_WINDOW</a> = 222,</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">  140</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">WIDGET_DEFAULT</a> = 255,</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>};</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>}</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_GUI_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html\">tram::GUI</a></div><div class=\"ttdoc\">Immediate mode GUI system.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a0568bf9d9061984bf013f44b50ff5e56\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">tram::GUI::HorizontalDivider</a></div><div class=\"ttdeci\">void HorizontalDivider()</div><div class=\"ttdoc\">Draws a horizontal divider.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:831</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a081da10ffbacc71992b191a911acf1b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">tram::GUI::Slider</a></div><div class=\"ttdeci\">bool Slider(float &amp;value, bool enabled, uint32_t width)</div><div class=\"ttdoc\">Draws a horizontal slider.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:771</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a13a111a88e62cb6d8dd4434c22881dc5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">tram::GUI::RestoreColor</a></div><div class=\"ttdeci\">void RestoreColor(GlyphType type)</div><div class=\"ttdoc\">Restores previous glyph color.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:138</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a1488c8699f98eaaefd9dab7d1e220604\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">tram::GUI::RadioButton</a></div><div class=\"ttdeci\">bool RadioButton(uint32_t index, uint32_t &amp;selected, const char *text, bool enabled)</div><div class=\"ttdoc\">Draws a radio button.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:703</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a19bd1015c21055a46d61eb4193a888cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">tram::GUI::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Submits all of the glyphs for rendering.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:253</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a1cde426a98964d4f4780ff78b9663b18\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">tram::GUI::PushFrameRelativeKeepCursor</a></div><div class=\"ttdeci\">void PushFrameRelativeKeepCursor(uint32_t orientation, uint32_t offset, bool keep_x, bool keep_y)</div><div class=\"ttdoc\">Pushes a frame, but keeps the cursor in place.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:609</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a1eeac17180cfd99f45e0d997766543c9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">tram::GUI::Text</a></div><div class=\"ttdeci\">void Text(const char *text, uint32_t orientation)</div><div class=\"ttdoc\">Draws text on the screen.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:472</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI::orientation</a></div><div class=\"ttdeci\">orientation</div><div class=\"ttdef\"><b>Definition:</b> gui.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">tram::GUI::TEXT_RIGHT</a></div><div class=\"ttdeci\">@ TEXT_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">tram::GUI::FRAME_RIGHT</a></div><div class=\"ttdeci\">@ FRAME_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">tram::GUI::TEXT_LEFT</a></div><div class=\"ttdeci\">@ TEXT_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">tram::GUI::LINE_LOW</a></div><div class=\"ttdeci\">@ LINE_LOW</div><div class=\"ttdef\"><b>Definition:</b> gui.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">tram::GUI::FRAME_CENTER_VERTICAL</a></div><div class=\"ttdeci\">@ FRAME_CENTER_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:36</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">tram::GUI::TEXT_JUSTIFIED</a></div><div class=\"ttdeci\">@ TEXT_JUSTIFIED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">tram::GUI::FRAME_TOP</a></div><div class=\"ttdeci\">@ FRAME_TOP</div><div class=\"ttdef\"><b>Definition:</b> gui.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">tram::GUI::FRAME_BOTTOM</a></div><div class=\"ttdeci\">@ FRAME_BOTTOM</div><div class=\"ttdef\"><b>Definition:</b> gui.h:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">tram::GUI::FRAME_RIGHT_INV</a></div><div class=\"ttdeci\">@ FRAME_RIGHT_INV</div><div class=\"ttdef\"><b>Definition:</b> gui.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">tram::GUI::LINE_NORMAL</a></div><div class=\"ttdeci\">@ LINE_NORMAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">tram::GUI::FRAME_CENTER_HORIZONTAL</a></div><div class=\"ttdeci\">@ FRAME_CENTER_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">tram::GUI::FRAME_INSET</a></div><div class=\"ttdeci\">@ FRAME_INSET</div><div class=\"ttdef\"><b>Definition:</b> gui.h:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">tram::GUI::FRAME_TOP_INV</a></div><div class=\"ttdeci\">@ FRAME_TOP_INV</div><div class=\"ttdef\"><b>Definition:</b> gui.h:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">tram::GUI::LINE_HIGH</a></div><div class=\"ttdeci\">@ LINE_HIGH</div><div class=\"ttdef\"><b>Definition:</b> gui.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">tram::GUI::TEXT_CENTER</a></div><div class=\"ttdeci\">@ TEXT_CENTER</div><div class=\"ttdef\"><b>Definition:</b> gui.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">tram::GUI::FRAME_BOTTOM_INV</a></div><div class=\"ttdeci\">@ FRAME_BOTTOM_INV</div><div class=\"ttdef\"><b>Definition:</b> gui.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">tram::GUI::FRAME_LEFT_INV</a></div><div class=\"ttdeci\">@ FRAME_LEFT_INV</div><div class=\"ttdef\"><b>Definition:</b> gui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">tram::GUI::FRAME_LEFT</a></div><div class=\"ttdeci\">@ FRAME_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a2750747aff85f20a25ae9bb33dd72bec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">tram::GUI::RestoreFont</a></div><div class=\"ttdeci\">void RestoreFont(GlyphType type)</div><div class=\"ttdoc\">Restores previous glyph font.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:147</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a2a3c432ea9156a810b47d5e9836d861a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">tram::GUI::SetFont</a></div><div class=\"ttdeci\">void SetFont(font_t font, GlyphType type)</div><div class=\"ttdoc\">Sets the font.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:129</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a2cea0738110390ba9a29efd3abde74ed\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">tram::GUI::SetSelectedText</a></div><div class=\"ttdeci\">void SetSelectedText(char *text)</div><div class=\"ttdoc\">Sets the text which is selected in a textbox.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a2d278da9263fa009f2eaa8ea8d67eaa0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">tram::GUI::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Performs initialization of the GUI system.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:206</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a356c2eeb0e6b3a8c19ed6ee19a448619\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">tram::GUI::TextBox</a></div><div class=\"ttdeci\">bool TextBox(char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)</div><div class=\"ttdoc\">Draws a textbox.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:858</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a36df4e7f162a96882c85976374864e7a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">tram::GUI::Button</a></div><div class=\"ttdeci\">bool Button(const char *text, bool enabled, uint32_t width)</div><div class=\"ttdoc\">Draws a button.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:662</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a4d59dd004d2a1ae7aed485247d674dc6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">tram::GUI::PushFrameRelative</a></div><div class=\"ttdeci\">void PushFrameRelative(uint32_t orientation, uint32_t offset)</div><div class=\"ttdoc\">Pushes a frame releative to the previous.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:546</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a53e9477d97918587d29a2b44a378dcbf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">tram::GUI::PopFrameKeepCursor</a></div><div class=\"ttdeci\">void PopFrameKeepCursor(bool keep_x, bool keep_y)</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:617</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">tram::GUI::widget</a></div><div class=\"ttdeci\">widget</div><div class=\"ttdef\"><b>Definition:</b> gui.h:89</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">tram::GUI::WIDGET_BUTTON_1_WINDOW</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_1_WINDOW</div><div class=\"ttdef\"><b>Definition:</b> gui.h:139</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">tram::GUI::WIDGET_DIVIDER_HORIZONTAL</a></div><div class=\"ttdeci\">@ WIDGET_DIVIDER_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:120</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">tram::GUI::WIDGET_RIGHT</a></div><div class=\"ttdeci\">@ WIDGET_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:102</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">tram::GUI::WIDGET_WINDOW</a></div><div class=\"ttdeci\">@ WIDGET_WINDOW</div><div class=\"ttdef\"><b>Definition:</b> gui.h:110</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">tram::GUI::WIDGET_BOTTOM_MIDDLE</a></div><div class=\"ttdeci\">@ WIDGET_BOTTOM_MIDDLE</div><div class=\"ttdef\"><b>Definition:</b> gui.h:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">tram::GUI::WIDGET_BUTTON_HELP</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_HELP</div><div class=\"ttdef\"><b>Definition:</b> gui.h:137</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">tram::GUI::WIDGET_TEXT_BOX</a></div><div class=\"ttdeci\">@ WIDGET_TEXT_BOX</div><div class=\"ttdef\"><b>Definition:</b> gui.h:115</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">tram::GUI::WIDGET_TOP_LEFT</a></div><div class=\"ttdeci\">@ WIDGET_TOP_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:90</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">tram::GUI::WIDGET_SCROLL_BAR_TRACK_HORIZONTAL</a></div><div class=\"ttdeci\">@ WIDGET_SCROLL_BAR_TRACK_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:119</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">tram::GUI::WIDGET_CHECK_BUTTON</a></div><div class=\"ttdeci\">@ WIDGET_CHECK_BUTTON</div><div class=\"ttdef\"><b>Definition:</b> gui.h:129</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">tram::GUI::WIDGET_BORDER</a></div><div class=\"ttdeci\">@ WIDGET_BORDER</div><div class=\"ttdef\"><b>Definition:</b> gui.h:117</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">tram::GUI::WIDGET_MIDDLE</a></div><div class=\"ttdeci\">@ WIDGET_MIDDLE</div><div class=\"ttdef\"><b>Definition:</b> gui.h:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">tram::GUI::WIDGET_BUTTON_DISABLED</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_DISABLED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:108</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">tram::GUI::WIDGET_SLIDER_TRACK_HORIZONTAL</a></div><div class=\"ttdeci\">@ WIDGET_SLIDER_TRACK_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:123</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">tram::GUI::WIDGET_SCROLL_BAR_HORIZONTAL</a></div><div class=\"ttdeci\">@ WIDGET_SCROLL_BAR_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:125</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">tram::GUI::WIDGET_SCROLL_BAR_TRACK_VERTICAL</a></div><div class=\"ttdeci\">@ WIDGET_SCROLL_BAR_TRACK_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:118</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">tram::GUI::WIDGET_MIDDLE_LEFT</a></div><div class=\"ttdeci\">@ WIDGET_MIDDLE_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:93</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">tram::GUI::WIDGET_TOP_RIGHT</a></div><div class=\"ttdeci\">@ WIDGET_TOP_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:92</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">tram::GUI::WIDGET_SELECT_BOX</a></div><div class=\"ttdeci\">@ WIDGET_SELECT_BOX</div><div class=\"ttdef\"><b>Definition:</b> gui.h:112</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">tram::GUI::WIDGET_SLIDER_HORIZONTAL</a></div><div class=\"ttdeci\">@ WIDGET_SLIDER_HORIZONTAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:131</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">tram::GUI::WIDGET_BUTTON_PRESSED</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_PRESSED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:105</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">tram::GUI::WIDGET_TEXT_BOX_DISABLED</a></div><div class=\"ttdeci\">@ WIDGET_TEXT_BOX_DISABLED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:116</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">tram::GUI::WIDGET_BUTTON_DOWN</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_DOWN</div><div class=\"ttdef\"><b>Definition:</b> gui.h:133</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">tram::GUI::WIDGET_BOTTOM_RIGHT</a></div><div class=\"ttdeci\">@ WIDGET_BOTTOM_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:98</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">tram::GUI::WIDGET_BUTTON_SELECTED_ENABLED</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_SELECTED_ENABLED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:106</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">tram::GUI::WIDGET_SLIDER_TRACK_VERTICAL</a></div><div class=\"ttdeci\">@ WIDGET_SLIDER_TRACK_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:122</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">tram::GUI::WIDGET_REVERSE_WINDOW</a></div><div class=\"ttdeci\">@ WIDGET_REVERSE_WINDOW</div><div class=\"ttdef\"><b>Definition:</b> gui.h:111</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">tram::GUI::WIDGET_BUTTON_SELECTED_DISABLED</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_SELECTED_DISABLED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:107</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">tram::GUI::WIDGET_BUTTON_LEFT</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:134</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">tram::GUI::WIDGET_MIDDLE_MIDDLE</a></div><div class=\"ttdeci\">@ WIDGET_MIDDLE_MIDDLE</div><div class=\"ttdef\"><b>Definition:</b> gui.h:94</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">tram::GUI::WIDGET_SLIDER_VERTICAL</a></div><div class=\"ttdeci\">@ WIDGET_SLIDER_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:130</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">tram::GUI::WIDGET_DIVIDER_VERTICAL</a></div><div class=\"ttdeci\">@ WIDGET_DIVIDER_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:121</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">tram::GUI::WIDGET_BUTTON_2_WINDOW</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_2_WINDOW</div><div class=\"ttdef\"><b>Definition:</b> gui.h:138</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">tram::GUI::WIDGET_DEFAULT</a></div><div class=\"ttdeci\">@ WIDGET_DEFAULT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:140</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">tram::GUI::WIDGET_TAB</a></div><div class=\"ttdeci\">@ WIDGET_TAB</div><div class=\"ttdef\"><b>Definition:</b> gui.h:126</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">tram::GUI::WIDGET_BUTTON_UP</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_UP</div><div class=\"ttdef\"><b>Definition:</b> gui.h:132</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">tram::GUI::WIDGET_BUTTON</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON</div><div class=\"ttdef\"><b>Definition:</b> gui.h:104</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">tram::GUI::WIDGET_LEFT</a></div><div class=\"ttdeci\">@ WIDGET_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:100</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">tram::GUI::WIDGET_BUTTON_PRESSED_DISABLED</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_PRESSED_DISABLED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:109</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">tram::GUI::WIDGET_SELECT_BOX_PRESSED</a></div><div class=\"ttdeci\">@ WIDGET_SELECT_BOX_PRESSED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:113</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">tram::GUI::WIDGET_SCROLL_BAR_VERTICAL</a></div><div class=\"ttdeci\">@ WIDGET_SCROLL_BAR_VERTICAL</div><div class=\"ttdef\"><b>Definition:</b> gui.h:124</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">tram::GUI::WIDGET_TOP_MIDDLE</a></div><div class=\"ttdeci\">@ WIDGET_TOP_MIDDLE</div><div class=\"ttdef\"><b>Definition:</b> gui.h:91</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">tram::GUI::WIDGET_PROGESS_BAR</a></div><div class=\"ttdeci\">@ WIDGET_PROGESS_BAR</div><div class=\"ttdef\"><b>Definition:</b> gui.h:127</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">tram::GUI::WIDGET_BUTTON_EXIT</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_EXIT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:136</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">tram::GUI::WIDGET_MIDDLE_RIGHT</a></div><div class=\"ttdeci\">@ WIDGET_MIDDLE_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:95</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">tram::GUI::WIDGET_SELECT_BOX_SELECTED</a></div><div class=\"ttdeci\">@ WIDGET_SELECT_BOX_SELECTED</div><div class=\"ttdef\"><b>Definition:</b> gui.h:114</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">tram::GUI::WIDGET_BUTTON_RIGHT</a></div><div class=\"ttdeci\">@ WIDGET_BUTTON_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:135</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">tram::GUI::WIDGET_RADIO_BUTTON</a></div><div class=\"ttdeci\">@ WIDGET_RADIO_BUTTON</div><div class=\"ttdef\"><b>Definition:</b> gui.h:128</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">tram::GUI::WIDGET_BOTTOM_LEFT</a></div><div class=\"ttdeci\">@ WIDGET_BOTTOM_LEFT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6121817714545cc76730037226ca285f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">tram::GUI::ClickHandled</a></div><div class=\"ttdeci\">bool ClickHandled()</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:633</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a6592f1eadaa540d5d79a87d24363d69e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">tram::GUI::GetScaling</a></div><div class=\"ttdeci\">uint32_t GetScaling()</div><div class=\"ttdoc\">Returns the scaling factor.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:182</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a7210e80143cdcc0ce28a57c0b283fca6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">tram::GUI::SetColor</a></div><div class=\"ttdeci\">void SetColor(Render::color_t color, GlyphType type)</div><div class=\"ttdoc\">Sets the color.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:118</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a76a6d727998bc4ad99cd754ca2cf54a0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">tram::GUI::PopFrame</a></div><div class=\"ttdeci\">void PopFrame()</div><div class=\"ttdoc\">Removes a frame from the frame stack.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:602</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a76d6631e615a2c8e9fb923d034b92507\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">tram::GUI::NewLine</a></div><div class=\"ttdeci\">void NewLine(uint32_t line)</div><div class=\"ttdoc\">Draws a new line.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:814</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a7b243fa8e17bd3e09a70b94f9f0a8054\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">tram::GUI::RegisterFont</a></div><div class=\"ttdeci\">font_t RegisterFont(Render::Sprite *sprite)</div><div class=\"ttdoc\">Registers a font.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:307</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a7eb89f38a5f8e51434e7fdc3c21245e1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">tram::GUI::End</a></div><div class=\"ttdeci\">void End()</div><div class=\"ttdoc\">Ends the GUI commands for the frame.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:976</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_a8b13f224cb4fc10e56e14f176d93b95d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">tram::GUI::SetGlyphDefaults</a></div><div class=\"ttdeci\">void SetGlyphDefaults(Render::color_t color, font_t font, GlyphType type)</div><div class=\"ttdoc\">Overrides glyph default colors and fonts.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:159</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_aa9e738ecaea859c6a6839587a10c4ac6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">tram::GUI::FillFrame</a></div><div class=\"ttdeci\">void FillFrame(glyph_t glyph)</div><div class=\"ttdoc\">Fills the frame with a glyph.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:845</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_abbe4fc88597f2b5171c105e74bcf8301\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">tram::GUI::PushFrame</a></div><div class=\"ttdeci\">void PushFrame(uint32_t x, uint32_t y, uint32_t w, uint32_t h)</div><div class=\"ttdoc\">Pushes a frame.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:523</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_abc96e6226a9e9abe317c04fe4661ee35\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">tram::GUI::SetScaling</a></div><div class=\"ttdeci\">void SetScaling(uint32_t scale)</div><div class=\"ttdoc\">Sets the scaling factor.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:176</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_abd53a76b58ffc880c50cd76f1b6019bf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">tram::GUI::CheckBox</a></div><div class=\"ttdeci\">bool CheckBox(bool &amp;selected, const char *text, bool enabled)</div><div class=\"ttdoc\">Draws a checkbox.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:737</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_ac9ba68cbd0b4343af392b64083f10f13\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">tram::GUI::Glyph</a></div><div class=\"ttdeci\">void Glyph(font_t font, glyph_t glyph)</div><div class=\"ttdoc\">Draws a glyph from a font.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:405</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_ad72e4051d38000777cac376d29fc18a1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></div><div class=\"ttdeci\">uint32_t font_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_aed177dc7d46e43f3cf52662fecbaf0a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">tram::GUI::GlyphType</a></div><div class=\"ttdeci\">GlyphType</div><div class=\"ttdef\"><b>Definition:</b> gui.h:40</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">tram::GUI::WIDGET</a></div><div class=\"ttdeci\">@ WIDGET</div><div class=\"ttdef\"><b>Definition:</b> gui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">tram::GUI::TEXT</a></div><div class=\"ttdeci\">@ TEXT</div><div class=\"ttdef\"><b>Definition:</b> gui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_af4ecd3d74bffd0e8e5fd26061418ef4f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">tram::GUI::Begin</a></div><div class=\"ttdeci\">void Begin()</div><div class=\"ttdoc\">Begins the GUI commands for the frame.</div><div class=\"ttdef\"><b>Definition:</b> gui.cpp:946</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_afecdfd821a1e89c4d62d0f8b420ca33a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI::glyph_t</a></div><div class=\"ttdeci\">uint32_t glyph_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></div><div class=\"ttdeci\">vec3 color_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:16</div></div>\n<div class=\"ttc\" id=\"aui_8h_html\"><div class=\"ttname\"><a href=\"ui_8h.html\">ui.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/hashmap_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/hashmap.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">hashmap.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div>\n<p><a href=\"hashmap_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap&lt; T &gt;::Record</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/hashmap_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/hashmap.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">hashmap.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"hashmap_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_HASHMAP_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_HASHMAP_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span> <span class=\"comment\">// error message</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span>  <span class=\"comment\">// memset</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"comment\">/* instead of having two sets of each method, one with uint32_t and the other</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"comment\"> * with UID, maybe we could create some kind of a struct called Key and then we</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"comment\"> * could add a uint32_t converter to it and then we could add a constructor from</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"comment\"> * both uint32_t and UID and then we could just have only a single of each</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"comment\"> * method and all of the conversions would happen automatically</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\"> * TODO: investigate</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html\">   22</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_hashmap.html\">Hashmap</a> {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">   24</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">Hashmap</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>, <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>) {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        this-&gt;name = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>        this-&gt;max_size = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>        this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a> = max_size * 2;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>        </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <span class=\"keywordtype\">size_t</span> memory_size = ((<a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a> * 2) + <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">padding</a>) * <span class=\"keyword\">sizeof</span>(<a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>        </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        <span class=\"keywordtype\">char</span>* memory = (<span class=\"keywordtype\">char</span>*)::<span class=\"keyword\">operator</span> <span class=\"keyword\">new</span>(memory_size);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> = (<a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>*) memory;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a> = (<a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>*) (memory + memory_size);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        memset(memory, 0, memory_size);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc\">   39</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc\">Hashmap</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>, <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>, std::initializer_list&lt;std::pair&lt;uint32_t, T&gt;&gt; list) : <a class=\"code hl_class\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>, <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>) {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>        <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>&amp; entry : list) {</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">Insert</a>(entry.first, entry.second);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        }</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">   45</a></span>    T <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> key) {</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">Find</a>(key.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    }</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">   49</a></span>    T <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">Find</a>(uint32_t key) {</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        uint32_t hash = key % <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* candidate = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> + hash;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <span class=\"keywordflow\">while</span> (candidate != <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>            <span class=\"keywordflow\">if</span> (!(candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; (<a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> | <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>))) {</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>            }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>            </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> == key) {</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>) {</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>                    <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                    <span class=\"keywordflow\">return</span> candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                }</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>            }</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>            </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>            candidate++;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        }</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> T();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">Exists</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> key) {</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">Exists</a>(key.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>);</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    }</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162\">   78</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162\">Exists</a>(uint32_t key) {</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        uint32_t hash = key % <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* candidate = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> + hash;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <span class=\"keywordflow\">while</span> (candidate != <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>            <span class=\"keywordflow\">if</span> (!(candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; (<a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> | <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>))) {</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>            }</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>            </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> == key) {</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>) {</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                    <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>                }</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>                </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>            }</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>            </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>            candidate++;</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        }</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    }</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">  103</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">Insert</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> key, T value) {</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">Insert</a>(key.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>, value);</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    }</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0\">  107</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0\">Insert</a>(uint32_t key, T value) {</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>) {</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Hashmap &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; density reached!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        }</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        uint32_t hash = key % <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a>;</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        </div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* candidate = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> + hash;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        </div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordflow\">while</span> (candidate != <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>) {</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> == key) {</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                    candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>.~T();</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                    <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a>--;</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>                    <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>                    candidate++;</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>                    <span class=\"keywordflow\">continue</span>;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>                }</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>            }</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>            </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>) {</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            }</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>            </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>            <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        }</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">if</span> (candidate == <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Hashmap &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; overflow!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>            abort();</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        }</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        </div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a>++;</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        </div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> = key;</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a> = value;</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> = <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>;</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    }</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    </div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">  147</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">Remove</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> key) {</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">Remove</a>(key.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>);</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    }</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    </div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">  151</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">Remove</a>(uint32_t key) {</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        uint32_t hash = key % <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a>;</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        </div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* candidate = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> + hash;</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        </div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">while</span> (candidate != <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">if</span> (!(candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; (<a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> | <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>))) {</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            }</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            </div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> == key) {</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>) {</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                    <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                    candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>.~T();</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                    candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> = <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>;</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                    <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a>--;</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                    <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                }</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                </div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>            }</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>            </div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>            candidate++;</div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        }</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    }</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    </div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">  177</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">operator[]</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> key) {</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">operator[]</a>(key.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>);</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    }</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    </div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff\">  181</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff\">operator[]</a>(uint32_t key) {</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        uint32_t hash = key % <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a>;</div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        </div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* candidate = <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> + hash;</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>        </div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>        <span class=\"keywordflow\">while</span> (candidate != <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> == key) {</div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                <span class=\"keywordflow\">return</span> candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>            }</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>            </div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>) {</div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>                candidate++;</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                <span class=\"keywordflow\">continue</span>;</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>            }</div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>            </div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>            <span class=\"keywordflow\">if</span> (candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a>) {</div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>            }</div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>            </div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>            <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        }</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>        </div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>        <span class=\"keywordflow\">if</span> (candidate == <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a>) {</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Hashmap &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; overflow!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>            abort();</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        }</div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>        </div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a>++;</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>        </div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a>) {</div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Hashmap &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; density reached!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        }</div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>        </div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> = key;</div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a> = T();</div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> = <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a>;</div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>        </div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>        <span class=\"keywordflow\">return</span> candidate-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>;</div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    }</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    </div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_hashmap_1_1_record.html\">  222</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a> {</div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">  223</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> = 0;</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">  224</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">  225</a></span>        T <a class=\"code hl_variable\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a>;</div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    };</div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">  227</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">padding</a> = 10;</div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keyword\">enum</span> {</div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">  230</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">FLAG_RECORD</a> = 1,</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">FLAG_DELETED</a> = 2</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">  232</a></span>    };</div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">  234</a></span>    std::string <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">name</a>;</div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">  235</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">size</a> = 0;</div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">  236</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">max_size</a> = 0;</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">  237</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">hash_parameter</a> = 0;</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">  238</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">first</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">  239</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">last</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>};</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>}</div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_HASHMAP_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a></div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a08c1ce10f128f0995b5e82d8f372b6f1\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1\">tram::Hashmap::last</a></div><div class=\"ttdeci\">Record * last</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:239</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a0ffe9a0a3a55b18c2f01928055e3c8fc\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc\">tram::Hashmap::Hashmap</a></div><div class=\"ttdeci\">constexpr Hashmap(const char *name, size_t max_size, std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt; list)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a1624bb31327369ea902f87e19531d6aa\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa\">tram::Hashmap::max_size</a></div><div class=\"ttdeci\">size_t max_size</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:236</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a16e686d27f2c5d67800e40fa01f2d97d\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d\">tram::Hashmap::operator[]</a></div><div class=\"ttdeci\">T &amp; operator[](UID key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:177</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a2a1f0c5b852df8b670b19293784c75ff\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff\">tram::Hashmap::operator[]</a></div><div class=\"ttdeci\">T &amp; operator[](uint32_t key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:181</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a2eb7e0ca3a72367b3944121636bd74cc\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc\">tram::Hashmap::padding</a></div><div class=\"ttdeci\">const size_t padding</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:227</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a42d72204053c0f76f228ffcbd5b70411\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411\">tram::Hashmap::size</a></div><div class=\"ttdeci\">size_t size</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:235</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a4b0e9748d29a4b4af463af55307818da\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da\">tram::Hashmap::Insert</a></div><div class=\"ttdeci\">void Insert(UID key, T value)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a5598902c979d9635a7fa9c8b3aff4f4e\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e\">tram::Hashmap::Exists</a></div><div class=\"ttdeci\">bool Exists(UID key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83\">tram::Hashmap::FLAG_DELETED</a></div><div class=\"ttdeci\">@ FLAG_DELETED</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:231</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74\">tram::Hashmap::FLAG_RECORD</a></div><div class=\"ttdeci\">@ FLAG_RECORD</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:230</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a68af1a319c6ffabf571332939b4633c0\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0\">tram::Hashmap::Insert</a></div><div class=\"ttdeci\">void Insert(uint32_t key, T value)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a7520d8013e86f06e43c2d46aacba39c1\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1\">tram::Hashmap::Find</a></div><div class=\"ttdeci\">T Find(UID key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a88408232bfa868c8345ed898a3a61162\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162\">tram::Hashmap::Exists</a></div><div class=\"ttdeci\">bool Exists(uint32_t key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_a93e079fec725ee981f46656dec2b57fb\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb\">tram::Hashmap::name</a></div><div class=\"ttdeci\">std::string name</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:234</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_aa5ec795eaaa273c57e3362be015a9dcb\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb\">tram::Hashmap::Remove</a></div><div class=\"ttdeci\">void Remove(UID key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:147</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_aaa8261398da94654cde9e61690810199\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199\">tram::Hashmap::Remove</a></div><div class=\"ttdeci\">void Remove(uint32_t key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:151</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_ab8e29b96d85af1c96d46f4eef83472b3\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3\">tram::Hashmap::first</a></div><div class=\"ttdeci\">Record * first</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:238</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_ac573657ae86fff9e00d4eea5e525f09c\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c\">tram::Hashmap::Hashmap</a></div><div class=\"ttdeci\">constexpr Hashmap(const char *name, size_t max_size)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_aed9ce370a0606d8f753370f537bd9ca5\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5\">tram::Hashmap::hash_parameter</a></div><div class=\"ttdeci\">uint32_t hash_parameter</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:237</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_hashmap_html_afea08bf4be8e807fc6da90e1992e3df9\"><div class=\"ttname\"><a href=\"classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9\">tram::Hashmap::Find</a></div><div class=\"ttdeci\">T Find(uint32_t key)</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_hashmap_1_1_record_html\"><div class=\"ttname\"><a href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap::Record</a></div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:222</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_hashmap_1_1_record_html_a67309019d9e71aeb7fa5fca434c86526\"><div class=\"ttname\"><a href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">tram::Hashmap::Record::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:224</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_hashmap_1_1_record_html_ab2c09b3dcf41d13a53dc2d65e6a60996\"><div class=\"ttname\"><a href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">tram::Hashmap::Record::value</a></div><div class=\"ttdeci\">T value</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:225</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_hashmap_1_1_record_html_ac3d3cebcb5768feb0ca9f6f4d1c7e02a\"><div class=\"ttname\"><a href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">tram::Hashmap::Record::key</a></div><div class=\"ttdeci\">uint32_t key</div><div class=\"ttdef\"><b>Definition:</b> hashmap.h:223</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a9d2e43bf7b4f21af160251d969e37af8\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">tram::UID::key</a></div><div class=\"ttdeci\">uint32_t key</div><div class=\"ttdef\"><b>Definition:</b> uid.h:40</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/hierarchy.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Class Hierarchy</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Class Hierarchy</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"struct__test__case.html\" target=\"_self\">_test_case</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\" target=\"_self\">tram::Render::AABB::AABBLeaf</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\" target=\"_self\">tram::AABBTree</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_3_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\" target=\"_self\">tram::Render::AABBTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\" target=\"_self\">tram::Ext::Kitchensink::AIAgent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_5_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\" target=\"_self\">tram::Ext::Kitchensink::AIPackage</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\" target=\"_self\">tram::Ext::Kitchensink::AIVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_7_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\" target=\"_self\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\" target=\"_self\">tram::Ext::Kitchensink::AnimationTable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_9_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\" target=\"_self\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\" target=\"_self\">tram::Ext::Kitchensink::AnimStateSpace</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_11_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\" target=\"_self\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\" target=\"_self\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_13_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\" target=\"_self\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\" target=\"_self\">tram::Ext::Kitchensink::Attribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_15_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\" target=\"_self\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\" target=\"_self\">tram::Ext::Kitchensink::AttributeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_17_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\" target=\"_self\">tram::Audio::Spatial::AudioBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\" target=\"_self\">tram::Audio::audiobuffer_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle </td></tr>\n<tr id=\"row_19_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\" target=\"_self\">tram::Audio::Spatial::AudioRender</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\" target=\"_self\">tram::Audio::Spatial::AudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_21_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\" target=\"_self\">tram::Audio::audiosource_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle </td></tr>\n<tr id=\"row_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\" target=\"_self\">tram::Ext::Kitchensink::BaseAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_23_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\" target=\"_self\">tram::Ext::Kitchensink::BaseFactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" target=\"_self\">tram::Render::Bone</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton </td></tr>\n<tr id=\"row_25_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_25_\" class=\"arrow\" onclick=\"toggleFolder('25_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>btActionInterface</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_25_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\" target=\"_self\">tram::Physics::PathAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_26_\" class=\"arrow\" onclick=\"toggleFolder('26_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>btIDebugDraw</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_26_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\" target=\"_self\">tram::Physics::API::PhysicsDebugDraw</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_27_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_27_\" class=\"arrow\" onclick=\"toggleFolder('27_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>btMotionState</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_27_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\" target=\"_self\">tram::Physics::API::CallbackMotionState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_28_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\" target=\"_self\">tram::Render::BucketMapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_29_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_29_\" class=\"arrow\" onclick=\"toggleFolder('29_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\" target=\"_self\">tram::Ext::Camera::Camera</a></td><td class=\"desc\">Interface API for cameras </td></tr>\n<tr id=\"row_29_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\" target=\"_self\">tram::Ext::Camera::FirstPersonCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_30_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\" target=\"_self\">tram::Ext::Kitchensink::Character</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_31_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\" target=\"_self\">tram::Ext::Kitchensink::CharacterClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_32_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\" target=\"_self\">tram::Ext::Kitchensink::CharacterDisposition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_33_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\" target=\"_self\">tram::Render::API::ClipPoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_34_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\" target=\"_self\">tram::Render::API::ClipTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_35_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\" target=\"_self\">tram::Physics::Collision</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data </td></tr>\n<tr id=\"row_36_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" target=\"_self\">tram::Physics::CollisionShape</a></td><td class=\"desc\">Shape for a collider </td></tr>\n<tr id=\"row_37_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\" target=\"_self\">tram::Physics::collisionshape_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_38_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\" target=\"_self\">tram::Physics::API::CollisionShapeTransform</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_39_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\" target=\"_self\">tram::Physics::CollisionTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_40_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\" target=\"_self\">tram::Render::API::ColorVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_41_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_component.html\" target=\"_self\">tram::Component&lt; T &gt;</a></td><td class=\"desc\">Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer </td></tr>\n<tr id=\"row_42_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_42_\" class=\"arrow\" onclick=\"toggleFolder('42_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>btCollisionWorld::ConvexResultCallback</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_42_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\" target=\"_self\">tram::Physics::API::ShapecastCallback</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_43_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\" target=\"_self\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_44_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\" target=\"_self\">tram::Render::API::D3DLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_45_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\" target=\"_self\">tram::Ext::Kitchensink::DialogAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_46_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\" target=\"_self\">tram::Ext::Kitchensink::DialogCondition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_47_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\" target=\"_self\">tram::Ext::Kitchensink::DialogController</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_48_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\" target=\"_self\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_49_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\" target=\"_self\">tram::Render::drawlistentry_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_50_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\" target=\"_self\">tram::Render::DynamicModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_51_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\" target=\"_self\">tram::Render::API::DynamicVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_52_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_edge.html\" target=\"_self\">tram::Edge</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_53_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\" target=\"_self\">tram::Ext::Kitchensink::Effect</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_54_\" class=\"arrow\" onclick=\"toggleFolder('54_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity.html\" target=\"_self\">tram::Entity</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class </td></tr>\n<tr id=\"row_54_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_crate.html\" target=\"_self\">tram::Crate</a></td><td class=\"desc\">3D Model with a rigidbody attached to it </td></tr>\n<tr id=\"row_54_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decoration.html\" target=\"_self\">tram::Decoration</a></td><td class=\"desc\">3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it </td></tr>\n<tr id=\"row_54_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\" target=\"_self\">tram::Ext::Kitchensink::Breakable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\" target=\"_self\">tram::Ext::Kitchensink::Button</a></td><td class=\"desc\">Essentially a func_door </td></tr>\n<tr id=\"row_54_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\" target=\"_self\">tram::Ext::Kitchensink::DebugShape</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\" target=\"_self\">tram::Ext::Kitchensink::DebugText</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\" target=\"_self\">tram::Ext::Kitchensink::Pickup</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\" target=\"_self\">tram::Ext::Kitchensink::QuestEntity</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\" target=\"_self\">tram::Ext::Kitchensink::Train</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerAutosave</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerHurt</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerMultiple</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerOnce</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerPlayerMovement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerPush</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerRemove</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\" target=\"_self\">tram::Ext::Kitchensink::TriggerTeleport</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\" target=\"_self\">tram::Ext::Kitchensink::Water</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_54_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light.html\" target=\"_self\">tram::Light</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper </td></tr>\n<tr id=\"row_54_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_marker.html\" target=\"_self\">tram::Marker</a></td><td class=\"desc\">Functionally inert </td></tr>\n<tr id=\"row_54_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player.html\" target=\"_self\">tram::Player</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it </td></tr>\n<tr id=\"row_54_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sound.html\" target=\"_self\">tram::Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper </td></tr>\n<tr id=\"row_54_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_static_world_object.html\" target=\"_self\">tram::StaticWorldObject</a></td><td class=\"desc\">Worldspawn </td></tr>\n<tr id=\"row_54_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger.html\" target=\"_self\">tram::Trigger</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper </td></tr>\n<tr id=\"row_55_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\" target=\"_self\">tram::Ext::Kitchensink::EntityChildren</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_56_\" class=\"arrow\" onclick=\"toggleFolder('56_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity_component.html\" target=\"_self\">tram::EntityComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class </td></tr>\n<tr id=\"row_56_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_animation_component.html\" target=\"_self\">tram::AnimationComponent</a></td><td class=\"desc\">Plays back Animations </td></tr>\n<tr id=\"row_56_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_component.html\" target=\"_self\">tram::AudioComponent</a></td><td class=\"desc\">Plays back Sounds </td></tr>\n<tr id=\"row_56_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_56_2_\" class=\"arrow\" onclick=\"toggleFolder('56_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_controller_component.html\" target=\"_self\">tram::ControllerComponent</a></td><td class=\"desc\">Provides an API for character controllers </td></tr>\n<tr id=\"row_56_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\" target=\"_self\">tram::FPSControllerComponent</a></td><td class=\"desc\">Implementation of an FPS-style character controller </td></tr>\n<tr id=\"row_56_2_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\" target=\"_self\">tram::RaycastControllerComponent</a></td><td class=\"desc\">Implementation of a simple character controller </td></tr>\n<tr id=\"row_56_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decal_component.html\" target=\"_self\">tram::DecalComponent</a></td><td class=\"desc\">Projects decals onto the scene </td></tr>\n<tr id=\"row_56_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\" target=\"_self\">tram::Ext::Kitchensink::AnimationStateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light_component.html\" target=\"_self\">tram::LightComponent</a></td><td class=\"desc\">Provides a real-time illumination for the scene </td></tr>\n<tr id=\"row_56_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_particle_component.html\" target=\"_self\">tram::ParticleComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_56_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_component.html\" target=\"_self\">tram::PhysicsComponent</a></td><td class=\"desc\">Rigidbody wrapper </td></tr>\n<tr id=\"row_56_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player_component.html\" target=\"_self\">tram::PlayerComponent</a></td><td class=\"desc\">Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </td></tr>\n<tr id=\"row_56_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_component.html\" target=\"_self\">tram::RenderComponent</a></td><td class=\"desc\">Renders a Model </td></tr>\n<tr id=\"row_56_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sprite_component.html\" target=\"_self\">tram::SpriteComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_56_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_template_component.html\" target=\"_self\">tram::TemplateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_56_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" target=\"_self\">tram::TriggerComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper </td></tr>\n<tr id=\"row_57_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\" target=\"_self\">tram::EntityTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_58_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_event.html\" target=\"_self\">tram::Event</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data </td></tr>\n<tr id=\"row_59_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_event_listener.html\" target=\"_self\">tram::EventListener</a></td><td class=\"desc\">Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners </td></tr>\n<tr id=\"row_60_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\" target=\"_self\">tram::Ext::Kitchensink::Faction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_61_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\" target=\"_self\">tram::Ext::Kitchensink::FactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_62_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\" target=\"_self\">tram::Ext::Kitchensink::FactionRelation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_63_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\" target=\"_self\">tram::Render::API::FFPHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_64_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\" target=\"_self\">tram::Entity::FieldInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_65_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file.html\" target=\"_self\">tram::File</a></td><td class=\"desc\">Very fast file reader/writer </td></tr>\n<tr id=\"row_66_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_66_\" class=\"arrow\" onclick=\"toggleFolder('66_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader.html\" target=\"_self\">tram::FileReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_66_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_reader.html\" target=\"_self\">tram::DiskReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_67_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_reader.html\" target=\"_self\">FileReader</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> reading backend API </td></tr>\n<tr id=\"row_68_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_68_\" class=\"arrow\" onclick=\"toggleFolder('68_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\" target=\"_self\">tram::FileReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_68_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\" target=\"_self\">tram::TextReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_69_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_file_source.html\" target=\"_self\">tram::FileSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_70_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_70_\" class=\"arrow\" onclick=\"toggleFolder('70_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer.html\" target=\"_self\">tram::FileWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_70_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_writer.html\" target=\"_self\">tram::DiskWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_71_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_platform_1_1_file_writer.html\" target=\"_self\">FileWriter</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_file.html\" title=\"Very fast file reader/writer.\">File</a> writing backend API </td></tr>\n<tr id=\"row_72_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_72_\" class=\"arrow\" onclick=\"toggleFolder('72_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\" target=\"_self\">tram::FileWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_72_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\" target=\"_self\">tram::TextWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_73_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\" target=\"_self\">tram::Audio::FilterParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_74_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\" target=\"_self\">tram::Render::API::FragmentShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_75_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\" target=\"_self\">tram::GUI::FrameObject</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_76_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\" target=\"_self\">tram::Render::API::FVFHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_77_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\" target=\"_self\">tram::Render::API::GLDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_78_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\" target=\"_self\">tram::Render::API::GLLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_79_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\" target=\"_self\">tram::Render::API::GLMaterial</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_80_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_80_\" class=\"arrow\" onclick=\"toggleFolder('80_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_graph.html\" target=\"_self\">tram::Graph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_80_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path.html\" target=\"_self\">tram::Path</a></td><td class=\"desc\">Base class for graphs </td></tr>\n<tr id=\"row_81_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_hashmap.html\" target=\"_self\">tram::Hashmap&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_82_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\" target=\"_self\">tram::Render::indexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_83_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\" target=\"_self\">tram::Render::IndexRange</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_84_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\" target=\"_self\">tram::Ext::Kitchensink::InitialAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_85_\" class=\"arrow\" onclick=\"toggleFolder('85_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" target=\"_self\">tram::Ext::Menu::Intercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\" target=\"_self\">tram::Ext::Menu::EventIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\" target=\"_self\">tram::Ext::Menu::LogIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_85_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\" target=\"_self\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_86_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_86_\" class=\"arrow\" onclick=\"toggleFolder('86_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\" target=\"_self\">tram::Script::Interface</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_86_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\" target=\"_self\">tram::Ext::Scripting::Lua::Lua</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_87_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\" target=\"_self\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_88_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\" target=\"_self\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_89_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_89_\" class=\"arrow\" onclick=\"toggleFolder('89_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\" target=\"_self\">tram::Ext::Kitchensink::InventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_89_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\" target=\"_self\">tram::Ext::Kitchensink::ListInventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_90_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\" target=\"_self\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_91_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\" target=\"_self\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_92_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\" target=\"_self\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_93_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\" target=\"_self\">tram::UI::KeyBinding</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_94_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" target=\"_self\">tram::Render::Keyframe</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation </td></tr>\n<tr id=\"row_95_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\" target=\"_self\">tram::Render::KeyframeHeader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_96_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\" target=\"_self\">tram::Render::API::LayerParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_97_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\" target=\"_self\">tram::Render::LightTree::Light</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_98_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\" target=\"_self\">tram::Render::light_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_99_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\" target=\"_self\">tram::Render::API::LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_100_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\" target=\"_self\">tram::Render::LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_101_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\" target=\"_self\">tram::Render::API::LinkedShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_102_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_listener_info.html\" target=\"_self\">tram::ListenerInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_103_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\" target=\"_self\">tram::Render::material_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_104_\" class=\"arrow\" onclick=\"toggleFolder('104_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" target=\"_self\">tram::Ext::Menu::Menu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\" target=\"_self\">tram::Ext::Kitchensink::KitchensinkMenuList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\" target=\"_self\">tram::Ext::Kitchensink::ListDialog</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\" target=\"_self\">tram::Ext::Kitchensink::ListInventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\" target=\"_self\">tram::Ext::Kitchensink::ListTrade</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\" target=\"_self\">tram::Ext::Kitchensink::QuestList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\" target=\"_self\">tram::Ext::Menu::Console</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\" target=\"_self\">tram::Ext::Menu::DebugMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\" target=\"_self\">tram::Ext::Menu::EntityPicker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\" target=\"_self\">tram::Ext::Menu::EntityProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\" target=\"_self\">tram::Ext::Menu::EventEmit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\" target=\"_self\">tram::Ext::Menu::InterceptMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\" target=\"_self\">tram::Ext::Menu::ListSelection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\" target=\"_self\">tram::Ext::Menu::MessageSend</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\" target=\"_self\">tram::Ext::Menu::Options</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\" target=\"_self\">tram::Ext::Menu::SettingsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\" target=\"_self\">tram::Ext::Menu::SignalMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\" target=\"_self\">tram::Ext::Menu::StatisticsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\" target=\"_self\">tram::Ext::Menu::SystemMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_104_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\" target=\"_self\">tram::Ext::Menu::WorldCellProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_105_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_message.html\" target=\"_self\">tram::Message</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data </td></tr>\n<tr id=\"row_106_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\" target=\"_self\">tram::Render::ModelAABB</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_107_\" class=\"arrow\" onclick=\"toggleFolder('107_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\" target=\"_self\">tram::Render::ModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\" target=\"_self\">tram::Render::DynamicModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_107_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\" target=\"_self\">tram::Render::StaticModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_108_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_navmesh.html\" target=\"_self\">tram::Navmesh</a></td><td class=\"desc\">Not fully implemented yet </td></tr>\n<tr id=\"row_109_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\" target=\"_self\">tram::NavmeshNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_110_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\" target=\"_self\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_111_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\" target=\"_self\">tram::AABBTree::Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_112_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\" target=\"_self\">tram::Audio::SoundGraph::Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_113_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_node.html\" target=\"_self\">tram::Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_114_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\" target=\"_self\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_115_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\" target=\"_self\">tram::Render::LightGraph::Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_116_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\" target=\"_self\">tram::Physics::API::ObjectCollision</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_117_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_octree.html\" target=\"_self\">tram::Octree&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_118_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\" target=\"_self\">tram::ParticleComponent::Particle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_119_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\" target=\"_self\">tram::PathEdgeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_120_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\" target=\"_self\">tram::Audio::Spatial::PathExplorationResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_121_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path_follower.html\" target=\"_self\">tram::PathFollower</a></td><td class=\"desc\">Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a> </td></tr>\n<tr id=\"row_122_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\" target=\"_self\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_123_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\" target=\"_self\">tram::Audio::Spatial::PathRenderingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_124_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\" target=\"_self\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_125_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\" target=\"_self\">tram::Render::API::Point2D</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_126_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool.html\" target=\"_self\">tram::Pool&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_127_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\" target=\"_self\">tram::PoolProxy&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_128_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\" target=\"_self\">tram::PoolPtr&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_129_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\" target=\"_self\">tram::Render::Pose</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_130_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\" target=\"_self\">tram::Settings::Property&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_131_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\" target=\"_self\">tram::Render::AABB::QueryResponse</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_132_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\" target=\"_self\">tram::Ext::Kitchensink::Quest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_133_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\" target=\"_self\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_134_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\" target=\"_self\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_135_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_queue.html\" target=\"_self\">tram::Queue&lt; T &gt;</a></td><td class=\"desc\">Simple queue implementation </td></tr>\n<tr id=\"row_136_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\" target=\"_self\">tram::Settings::RawSetting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_137_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\" target=\"_self\">tram::Hashmap&lt; T &gt;::Record</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_138_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\" target=\"_self\">tram::Render::RegisteredVertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_139_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_139_\" class=\"arrow\" onclick=\"toggleFolder('139_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource.html\" target=\"_self\">tram::Resource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_139_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\" target=\"_self\">tram::Audio::Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource </td></tr>\n<tr id=\"row_139_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\" target=\"_self\">tram::Audio::SoundGraph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_139_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\" target=\"_self\">tram::Physics::CollisionModel</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model </td></tr>\n<tr id=\"row_139_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" target=\"_self\">tram::Render::Animation</a></td><td class=\"desc\">Skeletal animation for a 3D model </td></tr>\n<tr id=\"row_139_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" target=\"_self\">tram::Render::LightGraph</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource </td></tr>\n<tr id=\"row_139_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" target=\"_self\">tram::Render::Material</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource </td></tr>\n<tr id=\"row_139_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\" target=\"_self\">tram::Render::Model</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_139_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" target=\"_self\">tram::Render::Sprite</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource </td></tr>\n<tr id=\"row_140_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\" target=\"_self\">tram::ResourceProxy&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_141_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\" target=\"_self\">tram::Async::ResourceRequest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_142_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\" target=\"_self\">tram::Physics::rigidbody_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_143_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\" target=\"_self\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_144_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\" target=\"_self\">tram::Render::API::Scanline</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_145_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\" target=\"_self\">tram::Render::API::ScanlineBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_146_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\" target=\"_self\">tram::ScriptableType::ScriptableTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_147_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\" target=\"_self\">tram::Settings::SettingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_148_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\" target=\"_self\">tram::Render::API::ShaderBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_149_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\" target=\"_self\">tram::Render::API::ShaderUniformMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_150_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\" target=\"_self\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_151_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" target=\"_self\">tram::SharedEntityData</a></td><td class=\"desc\">Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters </td></tr>\n<tr id=\"row_152_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_signal.html\" target=\"_self\">tram::Signal</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template </td></tr>\n<tr id=\"row_153_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_signal_table.html\" target=\"_self\">tram::SignalTable</a></td><td class=\"desc\">List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates </td></tr>\n<tr id=\"row_154_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" target=\"_self\">SoundGraph</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sound_graph.html\" title=\"SoundGraph resource.\">SoundGraph</a> resource </td></tr>\n<tr id=\"row_155_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\" target=\"_self\">tram::Ext::Kitchensink::SoundTable</a></td><td class=\"desc\">Maps actions to sounds </td></tr>\n<tr id=\"row_156_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\" target=\"_self\">tram::Render::SphericalHarmonic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_157_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_spinlock.html\" target=\"_self\">tram::Spinlock</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_158_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\" target=\"_self\">tram::Render::spritearray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_159_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\" target=\"_self\">tram::Render::SpriteFrame</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_160_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\" target=\"_self\">tram::Render::SpritePoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_161_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\" target=\"_self\">tram::Render::SpriteVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_162_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack.html\" target=\"_self\">tram::Stack&lt; T &gt;</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_163_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack_pool.html\" target=\"_self\">tram::StackPool&lt; T &gt;</a></td><td class=\"desc\">Allocator </td></tr>\n<tr id=\"row_164_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\" target=\"_self\">tram::Render::StaticModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_165_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\" target=\"_self\">tram::Render::API::StaticVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_166_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\" target=\"_self\">tram::Render::API::SWDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_167_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\" target=\"_self\">tram::Render::API::SWIndexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_168_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\" target=\"_self\">tram::Render::API::SWLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_169_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\" target=\"_self\">tram::Render::API::SWTexture</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_170_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\" target=\"_self\">tram::Render::API::SWVertexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_171_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\" target=\"_self\">tram::System::SystemInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_172_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\" target=\"_self\">tram::Stats::SystemStat</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_173_\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_173_\" class=\"arrow\" onclick=\"toggleFolder('173_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><b>T</b></td><td class=\"desc\"></td></tr>\n<tr id=\"row_173_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_scriptable.html\" target=\"_self\">tram::Scriptable&lt; T &gt;</a></td><td class=\"desc\">Provides script language subclassing </td></tr>\n<tr id=\"row_174_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\" target=\"_self\">tram::Render::texturehandle_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_175_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_transition.html\" target=\"_self\">tram::Transition</a></td><td class=\"desc\">Connects WorldCells together </td></tr>\n<tr id=\"row_176_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\" target=\"_self\">tram::Render::Triangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_177_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\" target=\"_self\">tram::Render::TriangleBucket</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_178_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\" target=\"_self\">tram::Physics::trigger_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_179_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_d.html\" target=\"_self\">tram::UID</a></td><td class=\"desc\">Interned string type </td></tr>\n<tr id=\"row_180_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value.html\" target=\"_self\">tram::Value</a></td><td class=\"desc\">Generic, type-safe union </td></tr>\n<tr id=\"row_181_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_array.html\" target=\"_self\">tram::ValueArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_182_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_ptr.html\" target=\"_self\">tram::ValuePtr</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_183_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\" target=\"_self\">tram::Render::vertexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_184_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\" target=\"_self\">tram::Render::VertexAttribute</a></td><td class=\"desc\">Atributes for vertex buffer vertices </td></tr>\n<tr id=\"row_185_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\" target=\"_self\">tram::Render::API::VertexBufferMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_186_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\" target=\"_self\">tram::Render::VertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_187_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\" target=\"_self\">tram::Render::API::VertexShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_188_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_world_cell.html\" target=\"_self\">tram::WorldCell</a></td><td class=\"desc\">World streaming unit </td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/image_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/image.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#define-members\">Macros</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">image.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"image_8h_source.html\">platform/image.h</a>&gt;</code><br />\n<code>#include &lt;stb_image_write.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:aefe397a94e8feddc652f92ef40ce9597\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"image_8cpp.html#aefe397a94e8feddc652f92ef40ce9597\">STB_IMAGE_WRITE_IMPLEMENTATION</a></td></tr>\n<tr class=\"separator:aefe397a94e8feddc652f92ef40ce9597\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">tram::Platform::SaveImageToDisk</a> (const char *name, int w, int h, const char *image)</td></tr>\n<tr class=\"memdesc:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Saves image to disk.  <a href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">More...</a><br /></td></tr>\n<tr class=\"separator:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"aefe397a94e8feddc652f92ef40ce9597\" name=\"aefe397a94e8feddc652f92ef40ce9597\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefe397a94e8feddc652f92ef40ce9597\">&#9670;&nbsp;</a></span>STB_IMAGE_WRITE_IMPLEMENTATION</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define STB_IMAGE_WRITE_IMPLEMENTATION</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/image_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/image.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">image.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"image_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">tram::Platform::SaveImageToDisk</a> (const char *name, int w, int h, const char *image)</td></tr>\n<tr class=\"memdesc:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Saves image to disk.  <a href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">More...</a><br /></td></tr>\n<tr class=\"separator:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/image_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/image.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">image.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"image_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_IMAGE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_IMAGE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">SaveImageToDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* image);</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>}</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform.html\">tram::Platform</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_html_a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">tram::Platform::SaveImageToDisk</a></div><div class=\"ttdeci\">void SaveImageToDisk(const char *name, int w, int h, const char *image)</div><div class=\"ttdoc\">Saves image to disk.</div><div class=\"ttdef\"><b>Definition:</b> image.cpp:12</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/index.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Tramway SDK</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div><div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Tramway SDK </div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><p >This is the C++ API documentation portal for the Tramway SDK.</p><dl class=\"section user\"><dt></dt><dd>For a general overview, take a look at our main documentation page: <a href=\"https://racenis.github.io/tram-sdk/documentation.html\">https://racenis.github.io/tram-sdk/documentation.html</a> </dd></dl>\n</div></div><!-- PageDoc -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/info_8dox.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/info.dox File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">C:/Users/Poga/Desktop/painis/tram-sdk/src/info.dox File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/inventory_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/inventory.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">inventory.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">extensions/kitchensink/inventory.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/inventory_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/inventory.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">inventory.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">extensions/kitchensink/attributes.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n</div>\n<p><a href=\"inventory_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a4b23e475cb12c9bd604bb44cc06e52d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">tram::Ext::Kitchensink::item_action_func</a>) (Inventory *, ItemInstance *)</td></tr>\n<tr class=\"separator:a4b23e475cb12c9bd604bb44cc06e52d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/inventory_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/inventory.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">inventory.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"inventory_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"attributes_8h.html\">extensions/kitchensink/attributes.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"gui_8h.html\">framework/gui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>}</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">struct </span>Inventory;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">struct </span>ItemInstance;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">   18</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a>)(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a>*);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">   20</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">   22</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">name</a>;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">   23</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">base_class</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">   25</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">viewmodel</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">   26</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">worldmodel</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">   28</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">equipped_slot</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"comment\">// TODO: add getter methods</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"comment\">// in addition, these getter methods should descend the item class</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"comment\">// hierarchy and find the first valid thing to return</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">   34</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">sprite_font</a> = 0;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">icon_font</a> = 0;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">sprite_glyph</a> = 0;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">   37</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">icon_glyph</a> = 0;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">   39</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">width</a> = 1, <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">height</a> = 1;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">   40</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">stack</a> = 1, <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">value</a> = 0;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">   42</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">weight</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">   44</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">default_compartment</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">FireEquip</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">FireUnequip</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">FireAdded</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">FireRemoved</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">FirePrimaryAction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">FireSecondaryAction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">FireIdle</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">   54</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">OnEquip</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">   55</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">OnUnequip</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">   56</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">OnAdded</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">   57</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">OnRemoved</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">   58</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">OnPrimaryAction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">   59</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">OnSecondaryAction</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">   60</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">OnIdle</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>*) { <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; }</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">   62</a></span>    std::vector&lt;Attribute&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">attributes</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">   63</a></span>    std::vector&lt;Effect&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">effects</a>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">Register</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>*);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">   69</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> {</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">   70</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">item_class</a>;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">   71</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">compartment</a>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">   72</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">count</a> = 1;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">   73</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">x</a> = 0, <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">y</a> = 0;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">equipped</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>};</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">   77</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> {</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">   79</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">AddItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count) = 0;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">   80</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">RemoveItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count) = 0;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">   81</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">GetItemCount</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class) = 0;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">   83</a></span>    <span class=\"keyword\">virtual</span> std::vector&lt;name_t&gt; <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">GetItems</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    </div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">   85</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">~InventoryManager</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">New</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> compartment);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">Delete</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> compartment, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>*);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">Register</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> compartment, <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>*(*make)(), <span class=\"keywordtype\">void</span> (*clear)(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>*));</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">   92</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">ListInventoryManager</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">AddItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">RemoveItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">GetItemCount</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class) <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    std::vector&lt;name_t&gt; <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">GetItems</a>() <span class=\"keyword\">override</span>;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">  100</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">~ListInventoryManager</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">  102</a></span>    std::vector&lt;std::pair&lt;name_t, int&gt;&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">items</a>;</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>};</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">  105</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> {</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">  107</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">Inventory</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a>) {}</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">AddItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count);</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">RemoveItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class, <span class=\"keywordtype\">int</span> count);</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">GetItemCount</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class);</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">EquipItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class);</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">UnequipItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_class);</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">UnequipSlot</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item_slot);</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">IsEquippedItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> item);</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">IsEquippedSlot</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> slot);</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">GetEquippedItem</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> slot);</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">FindCompartment</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> compartment);</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    </div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">  122</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">parent</a> = 0;</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">  124</a></span>    std::vector&lt;std::pair&lt;name_t, name_t&gt;&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">equipped</a>;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">  125</a></span>    std::vector&lt;std::pair&lt;name_t, InventoryManager*&gt;&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">compartments</a>;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">LoadFromDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* filename);</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">Find</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity);</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>};</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>}</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H</span></div>\n<div class=\"ttc\" id=\"aattributes_8h_html\"><div class=\"ttname\"><a href=\"attributes_8h.html\">attributes.h</a></div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></div><div class=\"ttdef\"><b>Definition:</b> inventory.h:105</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a020f087850b6993a1d3751c2b133063d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d\">tram::Ext::Kitchensink::Inventory::UnequipSlot</a></div><div class=\"ttdeci\">bool UnequipSlot(name_t item_slot)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:290</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a0d4285f55bb35f3df054086b8433be71\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71\">tram::Ext::Kitchensink::Inventory::EquipItem</a></div><div class=\"ttdeci\">bool EquipItem(name_t item_class)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:228</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a121a1bf7605e24565f69bb965c2ad731\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731\">tram::Ext::Kitchensink::Inventory::parent</a></div><div class=\"ttdeci\">id_t parent</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:122</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b\">tram::Ext::Kitchensink::Inventory::Find</a></div><div class=\"ttdeci\">static Inventory * Find(Entity *entity)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:323</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a2a252220bb1ea4bd2303bb6b54cfeba7\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7\">tram::Ext::Kitchensink::Inventory::compartments</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; name_t, InventoryManager * &gt; &gt; compartments</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:125</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a3947148514d07596275b3ceddef07ed1\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1\">tram::Ext::Kitchensink::Inventory::UnequipItem</a></div><div class=\"ttdeci\">bool UnequipItem(name_t item_class)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:272</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a4950e478978bec57a319ab31fa25c944\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">tram::Ext::Kitchensink::Inventory::GetItemCount</a></div><div class=\"ttdeci\">int GetItemCount(name_t item_class)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:222</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a53fa2c2df9e2cb7c28395f23a91b42f6\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6\">tram::Ext::Kitchensink::Inventory::IsEquippedItem</a></div><div class=\"ttdeci\">bool IsEquippedItem(name_t item)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:308</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a68d8a76e4253d7236b9b1ce50483750c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c\">tram::Ext::Kitchensink::Inventory::LoadFromDisk</a></div><div class=\"ttdeci\">static void LoadFromDisk(const char *filename)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:335</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a8058f00b02aaddacea2eaee65dd5abe2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2\">tram::Ext::Kitchensink::Inventory::GetEquippedItem</a></div><div class=\"ttdeci\">name_t GetEquippedItem(name_t slot)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:318</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a8cd3c4606f66405f417609f1c45e9e78\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78\">tram::Ext::Kitchensink::Inventory::equipped</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; name_t, name_t &gt; &gt; equipped</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_a8de2d037b208dbd8efc4976e3a0a8547\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">tram::Ext::Kitchensink::Inventory::RemoveItem</a></div><div class=\"ttdeci\">int RemoveItem(name_t item_class, int count)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:211</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_ac82a46651c702a1efac9917179d42263\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">tram::Ext::Kitchensink::Inventory::AddItem</a></div><div class=\"ttdeci\">int AddItem(name_t item_class, int count)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:200</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_aee945a9c74d9e50a5fe5f01430cc124c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c\">tram::Ext::Kitchensink::Inventory::IsEquippedSlot</a></div><div class=\"ttdeci\">bool IsEquippedSlot(name_t slot)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:313</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_af287eac367f38581825d3b4302642af9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9\">tram::Ext::Kitchensink::Inventory::FindCompartment</a></div><div class=\"ttdeci\">InventoryManager * FindCompartment(name_t compartment)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:187</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_html_af7a1b00c5dfadf08f99151978659a9c2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2\">tram::Ext::Kitchensink::Inventory::Inventory</a></div><div class=\"ttdeci\">Inventory(id_t parent)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">tram::Ext::Kitchensink::InventoryManager</a></div><div class=\"ttdef\"><b>Definition:</b> inventory.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_a36bc5edd165aedb4ff48c5ef27426a4d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d\">tram::Ext::Kitchensink::InventoryManager::AddItem</a></div><div class=\"ttdeci\">virtual int AddItem(name_t item_class, int count)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_a38a603ab838ff6b5896f2a19f3c15e1c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c\">tram::Ext::Kitchensink::InventoryManager::Register</a></div><div class=\"ttdeci\">static void Register(name_t compartment, InventoryManager *(*make)(), void(*clear)(InventoryManager *))</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:114</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_a3b028ac27cbb2380d88ae2775f3c3272\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272\">tram::Ext::Kitchensink::InventoryManager::GetItems</a></div><div class=\"ttdeci\">virtual std::vector&lt; name_t &gt; GetItems()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_a40e187b17336deef3396e8883fad0c6d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d\">tram::Ext::Kitchensink::InventoryManager::~InventoryManager</a></div><div class=\"ttdeci\">virtual ~InventoryManager()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_a7eb3c4a11513b9eed6fe34bd89cd43dc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc\">tram::Ext::Kitchensink::InventoryManager::GetItemCount</a></div><div class=\"ttdeci\">virtual int GetItemCount(name_t item_class)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_ab2b80ac808e4806ab9302a8e63a6c9be\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be\">tram::Ext::Kitchensink::InventoryManager::RemoveItem</a></div><div class=\"ttdeci\">virtual int RemoveItem(name_t item_class, int count)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_abe28a6894e388eb7ab8894278211222c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c\">tram::Ext::Kitchensink::InventoryManager::New</a></div><div class=\"ttdeci\">static InventoryManager * New(name_t compartment)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_inventory_manager_html_af3c70682b3ed7f666e4170aa14a1fea0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0\">tram::Ext::Kitchensink::InventoryManager::Delete</a></div><div class=\"ttdeci\">static void Delete(name_t compartment, InventoryManager *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></div><div class=\"ttdef\"><b>Definition:</b> inventory.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a01e50cc84077d0e95c63843fc9bf318e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">tram::Ext::Kitchensink::ItemClass::sprite_glyph</a></div><div class=\"ttdeci\">GUI::glyph_t sprite_glyph</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a0f62e3b657e2410379cb293cc1ac0da2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">tram::Ext::Kitchensink::ItemClass::height</a></div><div class=\"ttdeci\">int height</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a13ad05e4fa0c7e16c8982ae4b2b54e25\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">tram::Ext::Kitchensink::ItemClass::equipped_slot</a></div><div class=\"ttdeci\">name_t equipped_slot</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a153ebc85b2da1604a680fc0556f54578\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578\">tram::Ext::Kitchensink::ItemClass::default_compartment</a></div><div class=\"ttdeci\">name_t default_compartment</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a2018e6ddb7b0daa520a7dc275bb3a8f0\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0\">tram::Ext::Kitchensink::ItemClass::OnAdded</a></div><div class=\"ttdeci\">virtual bool OnAdded(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a27b6d1e19c2219ef08b38e0f6301b78a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a\">tram::Ext::Kitchensink::ItemClass::FireEquip</a></div><div class=\"ttdeci\">void FireEquip(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a2e7fd99ac987efb75922a0ac3d1bfd6d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d\">tram::Ext::Kitchensink::ItemClass::OnSecondaryAction</a></div><div class=\"ttdeci\">virtual bool OnSecondaryAction(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a2ebc7201376c73944e667f90e69e527d\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d\">tram::Ext::Kitchensink::ItemClass::OnRemoved</a></div><div class=\"ttdeci\">virtual bool OnRemoved(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a378e9829bffe817d03eec5844816015b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">tram::Ext::Kitchensink::ItemClass::Find</a></div><div class=\"ttdeci\">static ItemClass * Find(name_t item_class)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a38235d74c6c43032f0f53e84df2e00e4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4\">tram::Ext::Kitchensink::ItemClass::base_class</a></div><div class=\"ttdeci\">name_t base_class</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a3af8732cfbd61416567a257612f1320e\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e\">tram::Ext::Kitchensink::ItemClass::FirePrimaryAction</a></div><div class=\"ttdeci\">void FirePrimaryAction(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a4567cddbfd773f1d162c9947a61d7acf\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf\">tram::Ext::Kitchensink::ItemClass::FireAdded</a></div><div class=\"ttdeci\">void FireAdded(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a4b4d3c932032e2881323f1ec42e74f85\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85\">tram::Ext::Kitchensink::ItemClass::FireRemoved</a></div><div class=\"ttdeci\">void FireRemoved(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a5446fb0643408689bf3e3228ae0e204a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">tram::Ext::Kitchensink::ItemClass::sprite_font</a></div><div class=\"ttdeci\">GUI::font_t sprite_font</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a5605b4cce1b10ffb337f7e4d746034e2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2\">tram::Ext::Kitchensink::ItemClass::OnIdle</a></div><div class=\"ttdeci\">virtual bool OnIdle(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a66d439782843161ca256d3f777b77a95\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95\">tram::Ext::Kitchensink::ItemClass::FireSecondaryAction</a></div><div class=\"ttdeci\">void FireSecondaryAction(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a7558e88a147da74a438982f195c16684\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">tram::Ext::Kitchensink::ItemClass::icon_glyph</a></div><div class=\"ttdeci\">GUI::glyph_t icon_glyph</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a7ae02dc32f976f0cfe1b54c09f65d84b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">tram::Ext::Kitchensink::ItemClass::attributes</a></div><div class=\"ttdeci\">std::vector&lt; Attribute &gt; attributes</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a871da89199081aeee3bc4b351764c5fb\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb\">tram::Ext::Kitchensink::ItemClass::OnEquip</a></div><div class=\"ttdeci\">virtual bool OnEquip(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a8dc131c2ab76acccbc139c941193dbde\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde\">tram::Ext::Kitchensink::ItemClass::OnPrimaryAction</a></div><div class=\"ttdeci\">virtual bool OnPrimaryAction(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_a94f01baa040314e9e8bd6b218dffc904\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904\">tram::Ext::Kitchensink::ItemClass::value</a></div><div class=\"ttdeci\">int value</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_aa63c9f3e897107f6a145fab913be5690\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690\">tram::Ext::Kitchensink::ItemClass::FireIdle</a></div><div class=\"ttdeci\">void FireIdle(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_abeaafff54d0a01ac7f6dfb3299bfeafe\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">tram::Ext::Kitchensink::ItemClass::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_ac623e7fc63960697ee68bc58b83468ac\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">tram::Ext::Kitchensink::ItemClass::icon_font</a></div><div class=\"ttdeci\">GUI::font_t icon_font</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_ac84ab7cd8c9fd41df4d50716df9d4bda\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda\">tram::Ext::Kitchensink::ItemClass::FireUnequip</a></div><div class=\"ttdeci\">void FireUnequip(Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_ac9e52c97862461717796ec8e567cd506\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">tram::Ext::Kitchensink::ItemClass::viewmodel</a></div><div class=\"ttdeci\">name_t viewmodel</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_ad2e897d231ebf85514642793c8595175\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">tram::Ext::Kitchensink::ItemClass::weight</a></div><div class=\"ttdeci\">float weight</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_ad45de9b346dd461a8529e23a44e0dde4\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4\">tram::Ext::Kitchensink::ItemClass::effects</a></div><div class=\"ttdeci\">std::vector&lt; Effect &gt; effects</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_aed8df724d985ebd66f934bf3bdc00b18\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18\">tram::Ext::Kitchensink::ItemClass::OnUnequip</a></div><div class=\"ttdeci\">virtual bool OnUnequip(ItemClass *, Inventory *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_aee7dc2dfd34cc554c1428c897e2ab043\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043\">tram::Ext::Kitchensink::ItemClass::Register</a></div><div class=\"ttdeci\">static void Register(ItemClass *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_af12183588fa7ee60e0f173f60a0e841a\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">tram::Ext::Kitchensink::ItemClass::worldmodel</a></div><div class=\"ttdeci\">name_t worldmodel</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_af21e13dba2bf5003456f23075e616c9f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">tram::Ext::Kitchensink::ItemClass::width</a></div><div class=\"ttdeci\">int width</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_item_class_html_afe8942947a3e1323eec2ab314c64b2ad\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">tram::Ext::Kitchensink::ItemClass::stack</a></div><div class=\"ttdeci\">int stack</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">tram::Ext::Kitchensink::ListInventoryManager</a></div><div class=\"ttdef\"><b>Definition:</b> inventory.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_a0f45f90b7e0f0a5223dd478538530da9\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9\">tram::Ext::Kitchensink::ListInventoryManager::GetItemCount</a></div><div class=\"ttdeci\">int GetItemCount(name_t item_class) override</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:169</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_a1b9b03dd24817da053563d6e0a39a980\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980\">tram::Ext::Kitchensink::ListInventoryManager::GetItems</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; GetItems() override</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:178</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_a5ec9bf5e8398291fcb6271ec4944fb6b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b\">tram::Ext::Kitchensink::ListInventoryManager::~ListInventoryManager</a></div><div class=\"ttdeci\">~ListInventoryManager() override=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_a706782e911333fcfafae739d283995a2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2\">tram::Ext::Kitchensink::ListInventoryManager::items</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; name_t, int &gt; &gt; items</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_a86886a96730029deb9c866327eec9484\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484\">tram::Ext::Kitchensink::ListInventoryManager::AddItem</a></div><div class=\"ttdeci\">int AddItem(name_t item_class, int count) override</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager_html_abd31745962ddee971598846630493ddc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc\">tram::Ext::Kitchensink::ListInventoryManager::RemoveItem</a></div><div class=\"ttdeci\">int RemoveItem(name_t item_class, int count) override</div><div class=\"ttdef\"><b>Definition:</b> inventory.cpp:152</div></div>\n<div class=\"ttc\" id=\"agui_8h_html\"><div class=\"ttname\"><a href=\"gui_8h.html\">gui.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a4b23e475cb12c9bd604bb44cc06e52d8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">tram::Ext::Kitchensink::item_action_func</a></div><div class=\"ttdeci\">void(* item_action_func)(Inventory *, ItemInstance *)</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_ad72e4051d38000777cac376d29fc18a1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></div><div class=\"ttdeci\">uint32_t font_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_afecdfd821a1e89c4d62d0f8b420ca33a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI::glyph_t</a></div><div class=\"ttdeci\">uint32_t glyph_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></div><div class=\"ttdef\"><b>Definition:</b> inventory.h:69</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_a16fa6fa3ba81cb1533d9eb56446e7090\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">tram::Ext::Kitchensink::ItemInstance::compartment</a></div><div class=\"ttdeci\">name_t compartment</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:71</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_a8a5bc739c95aa6b49e82d5b4325d250f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">tram::Ext::Kitchensink::ItemInstance::equipped</a></div><div class=\"ttdeci\">bool equipped</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_ab1af2c957c7634bcd1d1ece6f0436c87\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">tram::Ext::Kitchensink::ItemInstance::y</a></div><div class=\"ttdeci\">int y</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:73</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_aba27042000b273495cc18583b811d66a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">tram::Ext::Kitchensink::ItemInstance::x</a></div><div class=\"ttdeci\">int x</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:73</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_ad30fe5398e295fa0edc24ee7e1b3f06f\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">tram::Ext::Kitchensink::ItemInstance::item_class</a></div><div class=\"ttdeci\">name_t item_class</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:70</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_item_instance_html_af357d83441c2dc2f703d809fdc3585a0\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">tram::Ext::Kitchensink::ItemInstance::count</a></div><div class=\"ttdeci\">int count</div><div class=\"ttdef\"><b>Definition:</b> inventory.h:72</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/jquery.js",
    "content": "/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(C,e){\"use strict\";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement(\"script\");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[o.call(e)]||\"object\":typeof e}var f=\"3.6.0\",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&\"length\"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],\"__proto__\"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:\"jQuery\"+(f+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==o.call(e))&&(!(t=r(e))||\"function\"==typeof(n=v.call(t,\"constructor\")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,\"string\"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),\"function\"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){n[\"[object \"+t+\"]\"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S=\"sizzle\"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",M=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",I=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",W=\"\\\\[\"+M+\"*(\"+I+\")(?:\"+M+\"*([*^$|!~]?=)\"+M+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+I+\"))|)\"+M+\"*\\\\]\",F=\":(\"+I+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+W+\")*)|.*)\\\\)|)\",B=new RegExp(M+\"+\",\"g\"),$=new RegExp(\"^\"+M+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+M+\"+$\",\"g\"),_=new RegExp(\"^\"+M+\"*,\"+M+\"*\"),z=new RegExp(\"^\"+M+\"*([>+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+xe(l[o]);c=l.join(\",\")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return g(t.replace($,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement(\"div\")),\"undefined\"!=typeof e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=\"<a id='\"+S+\"'></a><select id='\"+S+\"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),(t=C.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",F)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n=\"\",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&m(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1<t.indexOf(i):\"$=\"===r?i&&t.slice(-i.length)===i:\"~=\"===r?-1<(\" \"+t.replace(B,\" \")+\" \").indexOf(i):\"|=\"===r&&(t===i||t.slice(0,i.length+1)===i+\"-\"))}},CHILD:function(h,e,t,g,v){var y=\"nth\"!==h.slice(0,3),m=\"last\"!==h.slice(-4),x=\"of-type\"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?\"nextSibling\":\"previousSibling\",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l=\"only\"===h&&!u&&\"nextSibling\"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return a[S]?a(o):1<a.length?(t=[e,e,\"\",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,\"$1\"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||\"\")||se.error(\"unsupported lang: \"+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute(\"xml:lang\")||e.getAttribute(\"lang\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\"-\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&\"parentNode\"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||\"*\",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[\" \"],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace($,\"$1\"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+\" \"];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($,\" \")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+\" \"];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l=\"0\",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG(\"*\",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&\"ID\"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split(\"\").sort(j).join(\"\")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement(\"fieldset\"))}),ce(function(e){return e.innerHTML=\"<a href='#'></a>\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"<input/>\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[\":\"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,\"parentNode\")},parentsUntil:function(e,t,n){return h(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return h(e,\"nextSibling\")},prevAll:function(e){return h(e,\"previousSibling\")},nextUntil:function(e,t,n){return h(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return h(e,\"previousSibling\",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return\"Until\"!==r.slice(-5)&&(t=e),t&&\"string\"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r=\"string\"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:\"\")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&\"string\"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t=\"\",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=\"\"),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[[\"notify\",\"progress\",S.Callbacks(\"memory\"),S.Callbacks(\"memory\"),2],[\"resolve\",\"done\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",S.Callbacks(\"once memory\"),S.Callbacks(\"once memory\"),1,\"rejected\"]],i=\"pending\",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},\"catch\":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+\"With\"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError(\"Thenable self-resolution\");t=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\"With\"](this===s?void 0:this,arguments),this},s[t[0]+\"With\"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),\"pending\"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener(\"DOMContentLoaded\",B),C.removeEventListener(\"load\",B),S.ready()}S.fn.ready=function(e){return F.then(e)[\"catch\"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,\"complete\"===E.readyState||\"loading\"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener(\"DOMContentLoaded\",B),C.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,\"ms-\").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(K,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=\"true\"===(i=n)||\"false\"!==i&&(\"null\"===i?null:i===+i+\"\"?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,\"hasDataAttrs\"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf(\"data-\")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks(\"once memory\").add(function(){Y.remove(e,[t+\"queue\",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return\"string\"!=typeof t&&(n=t,t=\"fx\",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),\"fx\"===t&&\"inprogress\"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=Y.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,te=new RegExp(\"^(?:([+-])=|)(\"+ee+\")([a-z%]*)$\",\"i\"),ne=[\"Top\",\"Right\",\"Bottom\",\"Left\"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&ie(e)&&\"none\"===S.css(e,\"display\")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,\"\")},u=s(),l=n&&n[3]||(S.cssNumber[t]?\"\":\"px\"),c=e.nodeType&&(S.cssNumber[t]||\"px\"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?(\"none\"===n&&(l[c]=Y.get(r,\"display\")||null,l[c]||(r.style.display=\"\")),\"\"===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,\"display\"),o.parentNode.removeChild(o),\"none\"===u&&(u=\"block\"),ue[s]=u)))):\"none\"!==n&&(l[c]=\"none\",Y.set(r,\"display\",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement(\"div\")),(fe=E.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"<textarea>x</textarea>\",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"<option></option>\",y.option=!!ce.lastChild;var ge={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],\"globalEval\",!t||Y.get(t[n],\"globalEval\"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(de.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),\"script\"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||\"\")&&n.push(o)}return f}var be=/^([^.]*)(?:\\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==(\"focus\"===t)}function Ee(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(P)||[\"\"]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(P)||[\"\"]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Se(t,\"click\"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,\"input\")&&Y.get(t,\"click\")||A(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:\"focusin\",blur:\"focusout\"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Ne=/^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;function je(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&S(e).children(\"tbody\")[0]||e}function De(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function qe(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&\"string\"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,\"script\"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,\"script\"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||\"\")&&!Y.access(u,\"globalEval\")&&S.contains(l,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(\"nonce\")},l):b(u.textContent.replace(Ne,\"\"),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,\"script\")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,\"input\"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:\"input\"!==l&&\"textarea\"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,\"script\")).length&&ye(a,!f&&ve(e,\"script\")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp(\"^(\"+ee+\")(?!px)[a-z%]+$\",\"i\"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join(\"|\"),\"i\");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(\"\"!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+\"\":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",l.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n=\"1%\"!==e.top,s=12===t(e.marginLeft),l.style.right=\"60%\",o=36===t(e.right),r=36===t(e.width),l.style.position=\"absolute\",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement(\"div\"),l=E.createElement(\"div\");l.style&&(l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",y.clearCloneStyle=\"content-box\"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement(\"table\"),t=E.createElement(\"tr\"),n=E.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px;border-collapse:separate\",t.style.cssText=\"border:1px solid\",t.style.height=\"1px\",n.style.height=\"9px\",n.style.display=\"block\",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=[\"Webkit\",\"Moz\",\"ms\"],$e=E.createElement(\"div\").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:\"absolute\",visibility:\"hidden\",display:\"block\"},Ge={letterSpacing:\"0\",fontWeight:\"400\"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function Qe(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?(\"content\"===n&&(u-=S.css(e,\"padding\"+ne[a],!0,i)),\"margin\"!==n&&(u-=S.css(e,\"border\"+ne[a]+\"Width\",!0,i))):(u+=S.css(e,\"padding\"+ne[a],!0,i),\"padding\"!==n?u+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i):s+=S.css(e,\"border\"+ne[a]+\"Width\",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,r),o=i,a=We(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a=\"auto\"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===S.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===S.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?\"\":\"px\")),y.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),\"normal\"===i&&t in Ge&&(i=Ge[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each([\"height\",\"width\"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&\"absolute\"===i.position,a=(o||n)&&\"border-box\"===S.css(e,\"boxSizing\",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e[\"offset\"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,\"border\",!1,i)-.5)),s&&(r=te.exec(t))&&\"px\"!==(r[3]||\"px\")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,\"marginLeft\"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),S.each({margin:\"\",padding:\"\",border:\"Width\"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r=\"string\"==typeof e?e.split(\" \"):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},\"margin\"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?\"\":\"px\")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&\"expand\"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=[\"*\"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,\"fxshow\");for(r in n.queue||(null==(a=S._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,\"fx\").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,\"display\")),\"none\"===(c=S.css(e,\"display\"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,\"display\"),le([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===S.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?\"hidden\"in v&&(g=v.hidden):v=Y.access(e,\"fxshow\",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,\"fxshow\"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&\"object\"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,\"finish\"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return\"string\"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||\"fx\",[]),this.each(function(){var e=!0,t=null!=i&&i+\"queueHooks\",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||\"fx\"),this.each(function(){var e,t=Y.get(this),n=t[a+\"queue\"],r=t[a+\"queueHooks\"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each([\"toggle\",\"show\",\"hide\"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||\"boolean\"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st(\"show\"),slideUp:st(\"hide\"),slideToggle:st(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||\"fx\",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement(\"input\"),nt=E.createElement(\"select\").appendChild(E.createElement(\"option\")),tt.type=\"checkbox\",y.checkOn=\"\"!==tt.value,y.optSelected=nt.selected,(tt=E.createElement(\"input\")).value=\"t\",tt.type=\"radio\",y.radioValue=\"t\"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr(\"class\",\"\");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){a=0;while(o=e[a++])while(-1<r.indexOf(\" \"+o+\" \"))r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(i,t){var o=typeof i,a=\"string\"===o||Array.isArray(i);return\"boolean\"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&\"boolean\"!==o||((e=gt(this))&&Y.set(this,\"__className__\",e),this.setAttribute&&this.setAttribute(\"class\",e||!1===i?\"\":Y.get(this,\"__className__\")||\"\"))})},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&-1<(\" \"+ht(gt(n))+\" \").indexOf(t))return!0;return!1}});var yt=/\\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t=\"\":\"number\"==typeof t?t+=\"\":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?\"\":e+\"\"})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&\"set\"in r&&void 0!==r.set(this,t,\"value\")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&\"get\"in r&&void 0!==(e=r.get(t,\"value\"))?e:\"string\"==typeof(e=t.value)?e.replace(yt,\"\"):null==e?\"\":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,\"value\");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,\"optgroup\"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each([\"radio\",\"checkbox\"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})}),y.focusin=\"onfocusin\"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,\"type\")?e.type:e,h=v.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(\".\")&&(d=(h=d.split(\".\")).shift(),h.sort()),u=d.indexOf(\":\")<0&&\"on\"+d,(e=e[S.expando]?e:new S.Event(d,\"object\"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,\"events\")||Object.create(null))[e.type]&&Y.get(o,\"handle\"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:\"focusin\",blur:\"focusout\"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\\?/;S.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,\"text/xml\")}catch(e){}return n=t&&t.getElementsByTagName(\"parsererror\")[0],t&&!n||S.error(\"Invalid XML: \"+(n?S.map(n.childNodes,function(e){return e.textContent}).join(\"\\n\"):e)),t};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+\"[\"+(\"object\"==typeof t&&null!=t?e:\"\")+\"]\",t,r,i)});else if(r||\"object\"!==w(e))i(n,e);else for(t in e)At(n+\"[\"+t+\"]\",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,\"elements\");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}}):{name:t.name,value:n.replace(Et,\"\\r\\n\")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=E.createElement(\"a\");function It(o){return function(e,t){\"string\"!=typeof e&&(t=e,e=\"*\");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])\"+\"===n[0]?(n=n.slice(1)||\"*\",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return\"string\"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s[\"*\"]&&l(\"*\")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks(\"once memory\"),w=v.statusCode||{},a={},s={},u=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+\" \"]=(n[t[1].toLowerCase()+\" \"]||[]).concat(t[2])}t=n[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==v.crossDomain){r=E.createElement(\"a\");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+\"//\"+Mt.host!=r.protocol+\"//\"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&\"string\"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger(\"ajaxStart\"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,\"\"),v.hasContent?v.data&&v.processData&&0===(v.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(v.data=v.data.replace(Nt,\"+\")):(o=v.url.slice(f.length),v.data&&(v.processData||\"string\"==typeof v.data)&&(f+=(Tt.test(f)?\"&\":\"?\")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,\"$1\"),o=(Tt.test(f)?\"&\":\"?\")+\"_=\"+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader(\"If-Modified-Since\",S.lastModified[f]),S.etag[f]&&T.setRequestHeader(\"If-None-Match\",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader(\"Content-Type\",v.contentType),T.setRequestHeader(\"Accept\",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+(\"*\"!==v.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):v.accepts[\"*\"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u=\"abort\",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger(\"ajaxSend\",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort(\"timeout\")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,\"No Transport\");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||\"\",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray(\"script\",v.dataTypes)&&S.inArray(\"json\",v.dataTypes)<0&&(v.converters[\"text script\"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader(\"Last-Modified\"))&&(S.lastModified[f]=u),(u=T.getResponseHeader(\"etag\"))&&(S.etag[f]=u)),204===e||\"HEAD\"===v.type?l=\"nocontent\":304===e?l=\"notmodified\":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l=\"error\",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+\"\",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?\"ajaxSuccess\":\"ajaxError\",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger(\"ajaxComplete\",[T,v]),--S.active||S.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,\"json\")},getScript:function(e,t){return S.get(e,void 0,t,\"script\")}}),S.each([\"get\",\"post\"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&\"withCredentials\"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,\"abort\"===e?r.abort():\"error\"===e?\"number\"!=typeof r.status?t(0,\"error\"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,\"text\"!==(r.responseType||\"text\")||\"string\"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o(\"error\"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o(\"abort\");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),S.ajaxTransport(\"script\",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S(\"<script>\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\\?(?=&|$)|\\?\\?/;S.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=zt.pop()||S.expando+\"_\"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Ut.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,\"$1\"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||S.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),0<a.length&&S.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?S(\"<div>\").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,\"position\"),c=S(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=S.css(e,\"top\"),u=S.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===S.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===S.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,\"borderTopWidth\",!0),i.left+=S.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-S.css(r,\"marginTop\",!0),left:t.left-i.left-S.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===S.css(e,\"position\"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each([\"top\",\"left\"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+\"px\":t})}),S.each({Height:\"height\",Width:\"width\"},function(a,s){S.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?\"\":(e+\"\").replace(Xt,\"\")},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},\"undefined\"==typeof e&&(C.jQuery=C.$=S),S});\n/*! jQuery UI - v1.12.1 - 2019-01-27\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function(t){\"function\"==typeof define&&define.amd?define([\"jquery\"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css(\"visibility\");\"inherit\"===e;)t=t.parent(),e=t.css(\"visibility\");return\"hidden\"!==e}t.ui=t.ui||{},t.ui.version=\"1.12.1\";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,\"events\"),s&&s.remove&&t(n).triggerHandler(\"remove\")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(\".\")[0];e=e.split(\".\")[1];var l=h+\"-\"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[\":\"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+\".\"+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a=\"string\"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||\"instance\"!==o?this.each(function(){var i,s=t.data(this,n);return\"instance\"===o?(h=s,!1):s?t.isFunction(s[o])&&\"_\"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error(\"no such method '\"+o+\"' for \"+e+\" widget instance\"):t.error(\"cannot call methods on \"+e+\" prior to initialization; \"+\"attempted to call method '\"+o+\"'\")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:\"widget\",widgetEventPrefix:\"\",defaultElement:\"<div>\",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace=\".\"+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger(\"create\",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if(\"string\"==typeof e)if(a={},s=e.split(\".\"),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return\"classes\"===t&&this._setOptionClasses(e),this.options[t]=e,\"disabled\"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+\"-disabled\",null,!!t),t&&(this._removeClass(this.hoverable,null,\"ui-state-hover\"),this._removeClass(this.focusable,null,\"ui-state-focus\"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:\"_untrackClassesElement\"}),e.keys&&i(e.keys.match(/\\S+/g)||[],!0),e.extra&&i(e.extra.match(/\\S+/g)||[]),s.join(\" \")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s=\"boolean\"==typeof s?s:i;var n=\"string\"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;\"boolean\"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass(\"ui-state-disabled\")?(\"string\"==typeof a?o[a]:a).apply(o,arguments):void 0}\"string\"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\\w:-]*)\\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||\"\").split(\" \").join(this.eventNamespace+\" \")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return(\"string\"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,\"ui-state-hover\")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,\"ui-state-hover\")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,\"ui-state-focus\")},focusout:function(e){this._removeClass(t(e.currentTarget),null,\"ui-state-focus\")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:\"fadeIn\",hide:\"fadeOut\"},function(e,i){t.Widget.prototype[\"_\"+e]=function(s,n,o){\"string\"==typeof n&&(n={effect:n});var a,r=n?n===!0||\"number\"==typeof n?i:n.effect||i:e;n=n||{},\"number\"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\\+\\-]\\d+(\\.[\\d]+)?%?/,c=/^\\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t(\"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>\"),o=s.children()[0];return t(\"body\").append(s),e=o.offsetWidth,s.css(\"overflow\",\"scroll\"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?\"\":e.element.css(\"overflow-x\"),s=e.isWindow||e.isDocument?\"\":e.element.css(\"overflow-y\"),n=\"scroll\"===i||\"auto\"===i&&e.width<e.element[0].scrollWidth,o=\"scroll\"===s||\"auto\"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||\"flip\").split(\" \"),x={};return _=s(v),v[0].preventDefault&&(n.at=\"left top\"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each([\"my\",\"at\"],function(){var t,e,i=(n[this]||\"\").split(\" \");1===i.length&&(i=r.test(i[0])?i.concat([\"center\"]):h.test(i[0])?[\"center\"].concat(i):[\"center\",\"center\"]),i[0]=r.test(i[0])?i[0]:\"center\",i[1]=h.test(i[1])?i[1]:\"center\",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),\"right\"===n.at[0]?g.left+=p:\"center\"===n.at[0]&&(g.left+=p/2),\"bottom\"===n.at[1]?g.top+=f:\"center\"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,\"marginLeft\"),_=i(this,\"marginTop\"),k=l+d+i(this,\"marginRight\")+y.width,C=c+_+i(this,\"marginBottom\")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());\"right\"===n.my[0]?D.left-=l:\"center\"===n.my[0]&&(D.left-=l/2),\"bottom\"===n.my[1]?D.top-=c:\"center\"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each([\"left\",\"top\"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?\"left\":e>0?\"right\":\"center\",vertical:0>r?\"top\":s>0?\"bottom\":\"middle\"};l>p&&p>a(e+i)&&(u.horizontal=\"center\"),c>f&&f>a(s+r)&&(u.vertical=\"middle\"),u.important=o(a(e),a(i))>o(a(s),a(r))?\"horizontal\":\"vertical\",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d=\"left\"===e.my[0]?-e.elemWidth:\"right\"===e.my[0]?e.elemWidth:0,p=\"left\"===e.at[0]?e.targetWidth:\"right\"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d=\"top\"===e.my[1],p=d?-e.elemHeight:\"bottom\"===e.my[1]?e.elemHeight:0,f=\"top\"===e.at[1]?e.targetHeight:\"bottom\"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[\":\"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t=\"onselectstart\"in document.createElement(\"div\")?\"selectstart\":\"mousedown\";return function(){return this.on(t+\".ui-disableSelection\",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(\".ui-disableSelection\")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return\"area\"===l?(n=i.parentNode,o=n.name,i.href&&o&&\"map\"===n.nodeName.toLowerCase()?(a=t(\"img[usemap='#\"+o+\"']\"),a.length>0&&a.is(\":visible\")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest(\"fieldset\")[0],h&&(r=!h.disabled))):r=\"a\"===l?i.href||s:s,r&&t(i).is(\":visible\")&&e(t(i)))},t.extend(t.expr[\":\"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,\"tabindex\"))}}),t.ui.focusable,t.fn.form=function(){return\"string\"==typeof this[0].form?this.closest(\"form\"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data(\"ui-form-reset-instances\");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data(\"ui-form-reset-instances\")||[];t.length||this.form.on(\"reset.ui-form-reset\",this._formResetHandler),t.push(this),this.form.data(\"ui-form-reset-instances\",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data(\"ui-form-reset-instances\");e.splice(t.inArray(this,e),1),e.length?this.form.data(\"ui-form-reset-instances\",e):this.form.removeData(\"ui-form-reset-instances\").off(\"reset.ui-form-reset\")}}},\"1.7\"===t.fn.jquery.substring(0,3)&&(t.each([\"Width\",\"Height\"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,\"padding\"+this))||0,s&&(i-=parseFloat(t.css(e,\"border\"+this+\"Width\"))||0),o&&(i-=parseFloat(t.css(e,\"margin\"+this))||0)}),i}var n=\"Width\"===i?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn[\"inner\"+i]=function(e){return void 0===e?a[\"inner\"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+\"px\")})},t.fn[\"outer\"+i]=function(e,n){return\"number\"!=typeof e?a[\"outer\"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+\"px\")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g;return function(e){return e.replace(t,\"\\\\$1\")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents(\"label\"),s=this.attr(\"id\"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i=\"label[for='\"+t.ui.escapeSelector(s)+\"']\",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css(\"position\"),s=\"absolute\"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&\"static\"===e.css(\"position\")?!1:n.test(e.css(\"overflow\")+e.css(\"overflow-y\")+e.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[\":\"],{tabbable:function(e){var i=t.attr(e,\"tabindex\"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&t(this).removeAttr(\"id\")})}}),t.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on(\"mouseup\",function(){n=!1}),t.widget(\"ui.mouse\",{version:\"1.12.1\",options:{cancel:\"input, textarea, button, select, option\",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on(\"mousedown.\"+this.widgetName,function(t){return e._mouseDown(t)}).on(\"click.\"+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+\".preventClickEvent\")?(t.removeData(i.target,e.widgetName+\".preventClickEvent\"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off(\".\"+this.widgetName),this._mouseMoveDelegate&&this.document.off(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).off(\"mouseup.\"+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o=\"string\"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+\".preventClickEvent\")&&t.removeData(e.target,this.widgetName+\".preventClickEvent\"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).on(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off(\"mousemove.\"+this.widgetName,this._mouseMoveDelegate).off(\"mouseup.\"+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+\".preventClickEvent\",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget(\"ui.resizable\",t.ui.mouse,{version:\"1.12.1\",widgetEventPrefix:\"resize\",options:{alsoResize:!1,animate:!1,animateDuration:\"slow\",animateEasing:\"swing\",aspectRatio:!1,autoHide:!1,classes:{\"ui-resizable-se\":\"ui-icon ui-icon-gripsmall-diagonal-se\"},containment:!1,ghost:!1,grid:!1,handles:\"e,s,se\",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if(\"hidden\"===t(e).css(\"overflow\"))return!1;var s=i&&\"left\"===i?\"scrollLeft\":\"scrollTop\",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass(\"ui-resizable\"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||\"ui-resizable-helper\":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t(\"<div class='ui-wrapper' style='overflow: hidden;'></div>\").css({position:this.element.css(\"position\"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css(\"top\"),left:this.element.css(\"left\")})),this.element=this.element.parent().data(\"ui-resizable\",this.element.resizable(\"instance\")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css(\"marginTop\"),marginRight:this.originalElement.css(\"marginRight\"),marginBottom:this.originalElement.css(\"marginBottom\"),marginLeft:this.originalElement.css(\"marginLeft\")},this.element.css(e),this.originalElement.css(\"margin\",0),this.originalResizeStyle=this.originalElement.css(\"resize\"),this.originalElement.css(\"resize\",\"none\"),this._proportionallyResizeElements.push(this.originalElement.css({position:\"static\",zoom:1,display:\"block\"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on(\"mouseenter\",function(){i.disabled||(s._removeClass(\"ui-resizable-autohide\"),s._handles.show())}).on(\"mouseleave\",function(){i.disabled||s.resizing||(s._addClass(\"ui-resizable-autohide\"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData(\"resizable\").removeData(\"ui-resizable\").off(\".resizable\").find(\".ui-resizable-handle\").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css(\"position\"),width:e.outerWidth(),height:e.outerHeight(),top:e.css(\"top\"),left:e.css(\"left\")}).insertAfter(e),e.remove()),this.originalElement.css(\"resize\",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case\"handles\":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(\".ui-resizable-handle\",this.element).length?{n:\".ui-resizable-n\",e:\".ui-resizable-e\",s:\".ui-resizable-s\",w:\".ui-resizable-w\",se:\".ui-resizable-se\",sw:\".ui-resizable-sw\",ne:\".ui-resizable-ne\",nw:\".ui-resizable-nw\"}:\"e,s,se\"),this._handles=t(),this.handles.constructor===String)for(\"all\"===this.handles&&(this.handles=\"n,e,s,w,se,sw,ne,nw\"),s=this.handles.split(\",\"),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n=\"ui-resizable-\"+e,o=t(\"<div>\"),this._addClass(o,\"ui-resizable-handle \"+n),o.css({zIndex:a.zIndex}),this.handles[e]=\".ui-resizable-\"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=[\"padding\",/ne|nw|n/.test(i)?\"Top\":/se|sw|s/.test(i)?\"Bottom\":/^e$/.test(i)?\"Right\":\"Left\"].join(\"\"),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(\".ui-resizable-handle\")),this._handles.disableSelection(),this._handles.on(\"mouseover\",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:\"se\")}),a.autoHide&&(this._handles.hide(),this._addClass(\"ui-resizable-autohide\"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css(\"left\")),s=this._num(this.helper.css(\"top\")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio=\"number\"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(\".ui-resizable-\"+this.axis).css(\"cursor\"),t(\"body\").css(\"cursor\",\"auto\"===n?this.axis+\"-resize\":n),this._addClass(\"ui-resizable-resizing\"),this._propagate(\"start\",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate(\"resize\",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger(\"resize\",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],\"left\")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css(\"left\"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css(\"top\"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t(\"body\").css(\"cursor\",\"auto\"),this._removeClass(\"ui-resizable-resizing\"),this._propagate(\"stop\",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+\"px\"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+\"px\"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+\"px\"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+\"px\"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),\"sw\"===s&&(t.left=e.left+(i.width-t.width),t.top=null),\"nw\"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css(\"borderTopWidth\"),t.css(\"borderRightWidth\"),t.css(\"borderBottomWidth\"),t.css(\"borderLeftWidth\")],n=[t.css(\"paddingTop\"),t.css(\"paddingRight\"),t.css(\"paddingBottom\"),t.css(\"paddingLeft\")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t(\"<div style='overflow:hidden;'></div>\"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:\"absolute\",left:this.elementOffset.left+\"px\",top:this.elementOffset.top+\"px\",zIndex:++i.zIndex}),this.helper.appendTo(\"body\").disableSelection()):this.helper=this.element\n},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),\"resize\"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add(\"resizable\",\"animate\",{stop:function(e){var i=t(this).resizable(\"instance\"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],\"left\")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css(\"left\"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css(\"top\"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css(\"width\")),height:parseFloat(i.element.css(\"height\")),top:parseFloat(i.element.css(\"top\")),left:parseFloat(i.element.css(\"left\"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate(\"resize\",e)}})}}),t.ui.plugin.add(\"resizable\",\"containment\",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable(\"instance\"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t([\"Top\",\"Right\",\"Left\",\"Bottom\"]).each(function(t,s){i[t]=h._num(e.css(\"padding\"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,\"left\")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable(\"instance\"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css(\"position\"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css(\"position\")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable(\"instance\"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css(\"position\"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css(\"position\"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add(\"resizable\",\"alsoResize\",{start:function(){var e=t(this).resizable(\"instance\"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data(\"ui-resizable-alsoresize\",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css(\"left\")),top:parseFloat(e.css(\"top\"))})})},resize:function(e,i){var s=t(this).resizable(\"instance\"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data(\"ui-resizable-alsoresize\"),n={},o=e.parents(i.originalElement[0]).length?[\"width\",\"height\"]:[\"width\",\"height\",\"top\",\"left\"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData(\"ui-resizable-alsoresize\")}}),t.ui.plugin.add(\"resizable\",\"ghost\",{start:function(){var e=t(this).resizable(\"instance\"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:\"block\",position:\"relative\",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,\"ui-resizable-ghost\"),t.uiBackCompat!==!1&&\"string\"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable(\"instance\");e.ghost&&e.ghost.css({position:\"relative\",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable(\"instance\");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add(\"resizable\",\"grid\",{resize:function(){var e,i=t(this).resizable(\"instance\"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h=\"number\"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**\n * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler\n * Licensed under MIT\n * @author Ariel Flesler\n * @version 2.1.2\n */\n;(function(f){\"use strict\";\"function\"===typeof define&&define.amd?define([\"jquery\"],f):\"undefined\"!==typeof module&&module.exports?module.exports=f(require(\"jquery\")):f(jQuery)})(function($){\"use strict\";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),[\"iframe\",\"#document\",\"html\",\"body\"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:\"xy\",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){\"object\"=== typeof d&&(b=d,d=0);\"function\"===typeof b&&(b={onAfter:b});\"max\"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case \"number\":case \"string\":if(/^([+-]=?)?\\d+(\\.\\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case \"object\":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(\"\"),function(a,c){var d=\"x\"===c?\"Left\":\"Top\",m=d.toLowerCase(),g=\"scroll\"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css(\"margin\"+d),10)||0,f[g]-=parseInt(e.css(\"border\"+d+\"Width\"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e[\"x\"===c?\"width\":\"height\"]()*b.over[m])):(d=e[m],f[g]=d.slice&& \"%\"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b=\"x\"===d?\"Width\":\"Height\",h=\"scroll\"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b=\"client\"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});\n/*!\n PowerTip v1.3.1 (2018-04-15)\n https://stevenbenner.github.io/jquery-powertip/\n Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).\n Released under MIT license.\n https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt\n*/\n(function(root,factory){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],factory)}else if(typeof module===\"object\"&&module.exports){module.exports=factory(require(\"jquery\"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$(\"body\");var DATA_DISPLAYCONTROLLER=\"displayController\",DATA_HASACTIVEHOVER=\"hasActiveHover\",DATA_FORCEDOPEN=\"forcedOpen\",DATA_HASMOUSEMOVE=\"hasMouseMove\",DATA_MOUSEONTOTIP=\"mouseOnToPopup\",DATA_ORIGINALTITLE=\"originalTitle\",DATA_POWERTIP=\"powertip\",DATA_POWERTIPJQ=\"powertipjq\",DATA_POWERTIPTARGET=\"powertiptarget\",EVENT_NAMESPACE=\".powertip\",RAD2DEG=180/Math.PI,MOUSE_EVENTS=[\"click\",\"dblclick\",\"mousedown\",\"mouseup\",\"mousemove\",\"mouseover\",\"mouseout\",\"mouseenter\",\"mouseleave\",\"contextmenu\"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)===\"string\"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr(\"title\");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr(\"title\")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on(\"keydown\"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:\"powerTip\",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:\"n\",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:[\"mouseenter\",\"focus\"],closeEvents:[\"mouseleave\",\"blur\"]};$.fn.powerTip.smartPlacementLists={n:[\"n\",\"ne\",\"nw\",\"s\"],e:[\"e\",\"ne\",\"se\",\"w\",\"nw\",\"sw\",\"n\",\"s\",\"e\"],s:[\"s\",\"se\",\"sw\",\"n\"],w:[\"w\",\"nw\",\"sw\",\"e\",\"ne\",\"se\",\"n\",\"s\",\"w\"],nw:[\"nw\",\"w\",\"sw\",\"n\",\"s\",\"se\",\"nw\"],ne:[\"ne\",\"e\",\"se\",\"n\",\"s\",\"sw\",\"ne\"],sw:[\"sw\",\"w\",\"nw\",\"s\",\"n\",\"ne\",\"sw\"],se:[\"se\",\"e\",\"ne\",\"s\",\"n\",\"nw\",\"se\"],\"nw-alt\":[\"nw-alt\",\"n\",\"ne-alt\",\"sw-alt\",\"s\",\"se-alt\",\"w\",\"e\"],\"ne-alt\":[\"ne-alt\",\"n\",\"nw-alt\",\"se-alt\",\"s\",\"sw-alt\",\"e\",\"w\"],\"sw-alt\":[\"sw-alt\",\"s\",\"se-alt\",\"nw-alt\",\"n\",\"ne-alt\",\"w\",\"e\"],\"se-alt\":[\"se-alt\",\"s\",\"sw-alt\",\"ne-alt\",\"n\",\"nw-alt\",\"e\",\"w\"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top=\"auto\";me.left=\"auto\";me.right=\"auto\";me.bottom=\"auto\";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split(\"-\")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case\"n\":coords.set(\"left\",position.left-tipWidth/2);coords.set(\"bottom\",session.windowHeight-position.top+offset);break;case\"e\":coords.set(\"left\",position.left+offset);coords.set(\"top\",position.top-tipHeight/2);break;case\"s\":coords.set(\"left\",position.left-tipWidth/2);coords.set(\"top\",position.top+offset);break;case\"w\":coords.set(\"top\",position.top-tipHeight/2);coords.set(\"right\",session.windowWidth-position.left+offset);break;case\"nw\":coords.set(\"bottom\",session.windowHeight-position.top+offset);coords.set(\"right\",session.windowWidth-position.left-20);break;case\"nw-alt\":coords.set(\"left\",position.left);coords.set(\"bottom\",session.windowHeight-position.top+offset);break;case\"ne\":coords.set(\"left\",position.left-20);coords.set(\"bottom\",session.windowHeight-position.top+offset);break;case\"ne-alt\":coords.set(\"bottom\",session.windowHeight-position.top+offset);coords.set(\"right\",session.windowWidth-position.left);break;case\"sw\":coords.set(\"top\",position.top+offset);coords.set(\"right\",session.windowWidth-position.left-20);break;case\"sw-alt\":coords.set(\"left\",position.left);coords.set(\"top\",position.top+offset);break;case\"se\":coords.set(\"left\",position.left-20);coords.set(\"top\",position.top+offset);break;case\"se-alt\":coords.set(\"top\",position.top+offset);coords.set(\"right\",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case\"n\":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case\"e\":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case\"s\":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case\"w\":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case\"nw\":left=objectOffset.left;top=objectOffset.top;break;case\"ne\":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case\"sw\":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case\"se\":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest(\"svg\")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=[\"nw\",\"n\",\"ne\",\"e\",\"se\",\"s\",\"sw\",\"w\"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$(\"#\"+options.popupId);if(tipElement.length===0){tipElement=$(\"<div/>\",{id:options.popupId});if($body.length===0){$body=$(\"body\")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on(\"mousemove\"+EVENT_NAMESPACE,positionTipOnCursor);$window.on(\"scroll\"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger(\"powerTipPreRender\");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger(\"powerTipRender\");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on(\"click\"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on(\"mouseenter\"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on(\"mouseleave\"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger(\"powerTipOpen\")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off(\"click\"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set(\"top\",session.currentY+options.offset);coords.set(\"left\",session.currentX+options.offset);tipElement.css(coords);element.trigger(\"powerTipClose\")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set(\"top\",session.currentY+options.offset);coords.set(\"left\",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set(\"left\",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set(\"top\",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set(\"left\",session.currentX-tipWidth-options.offset);coords.set(\"top\",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass(\"w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt\");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set(\"top\",0);coords.set(\"left\",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep([\"mouseleave\",\"mouseout\",\"blur\",\"focusout\"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(\":disabled\")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(\":focus\")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX===\"number\")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on(\"mousemove\"+EVENT_NAMESPACE,trackMouse);$window.on(\"resize\"+EVENT_NAMESPACE,trackResize);$window.on(\"scroll\"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$(\"#\"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!\n * jQuery UI Touch Punch 0.2.3\n *\n * Copyright 2011–2014, Dave Furfero\n * Dual licensed under the MIT or GPL Version 2 licenses.\n *\n * Depends:\n *  jquery.ui.widget.js\n *  jquery.ui.mouse.js\n */\n!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent(\"MouseEvents\");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch=\"ontouchend\"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,\"mouseover\"),f(a,\"mousemove\"),f(a,\"mousedown\"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,\"mousemove\"))},b._touchEnd=function(a){e&&(f(a,\"mouseup\"),f(a,\"mouseout\"),this._touchMoved||f(a,\"click\"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,\"_touchStart\"),touchmove:a.proxy(b,\"_touchMove\"),touchend:a.proxy(b,\"_touchEnd\")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,\"_touchStart\"),touchmove:a.proxy(b,\"_touchMove\"),touchend:a.proxy(b,\"_touchEnd\")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017\n * http://www.smartmenus.org/\n * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){\"function\"==typeof define&&define.amd?define([\"jquery\"],t):\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=t(require(\"jquery\")):t(jQuery)})(function($){function initMouseDetection(t){var e=\".smartmenus_mouse\";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest(\"a\");n.is(\"a\")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?\"touchstart\":\"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut\"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e=\"\");var i={};for(var s in t)i[s.split(\" \").join(e+\" \")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents=\"ontouchstart\"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId=\"\",this.accessIdPrefix=\"\",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d=\"perspective\"in t.style||\"webkitPerspective\"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+\"\").replace(/\\D/g,\"\"),this.accessIdPrefix=\"sm-\"+this.rootId+\"-\",this.$root.hasClass(\"sm-rtl\")&&(this.opts.rightToLeftSubMenus=!0);var i=\".smartmenus\";this.$root.data(\"smartmenus\",this).attr(\"data-smartmenus-id\",this.rootId).dataSM(\"level\",1).on(getEventsNS({\"mouseover focusin\":$.proxy(this.rootOver,this),\"mouseout focusout\":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),\"a\"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({\"resize orientationchange\":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$(\"<span/>\").addClass(\"sub-arrow\"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find(\"ul\").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find(\"a\").eq(0),this.opts.markCurrentItem){var s=/(index|default)\\.[^#\\?\\/]*/i,o=/#.*/,a=window.location.href.replace(s,\"\"),n=a.replace(o,\"\");this.$root.find(\"a\").each(function(){var t=this.href.replace(s,\"\"),i=$(this);(t==a||t==n)&&(i.addClass(\"current\"),e.opts.markCurrentTree&&i.parentsUntil(\"[data-smartmenus-id]\",\"ul\").each(function(){$(this).dataSM(\"parent-a\").addClass(\"current\")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=\".smartmenus\";this.$root.removeData(\"smartmenus\").removeAttr(\"data-smartmenus-id\").removeDataSM(\"level\").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find(\"ul\").each(function(){var t=$(this);t.dataSM(\"scroll-arrows\")&&t.dataSM(\"scroll-arrows\").remove(),t.dataSM(\"shown-before\")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:\"\",minWidth:\"\",maxWidth:\"\"}).removeClass(\"sm-nowrap\"),t.dataSM(\"scroll-arrows\")&&t.dataSM(\"scroll-arrows\").remove(),t.css({zIndex:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\",display:\"\"})),0==(t.attr(\"id\")||\"\").indexOf(i.accessIdPrefix)&&t.removeAttr(\"id\")}).removeDataSM(\"in-mega\").removeDataSM(\"shown-before\").removeDataSM(\"scroll-arrows\").removeDataSM(\"parent-a\").removeDataSM(\"level\").removeDataSM(\"beforefirstshowfired\").removeAttr(\"role\").removeAttr(\"aria-hidden\").removeAttr(\"aria-labelledby\").removeAttr(\"aria-expanded\"),this.$root.find(\"a.has-submenu\").each(function(){var t=$(this);0==t.attr(\"id\").indexOf(i.accessIdPrefix)&&t.removeAttr(\"id\")}).removeClass(\"has-submenu\").removeDataSM(\"sub\").removeAttr(\"aria-haspopup\").removeAttr(\"aria-controls\").removeAttr(\"aria-expanded\").closest(\"li\").removeDataSM(\"sub\"),this.opts.subIndicators&&this.$root.find(\"span.sub-arrow\").remove(),this.opts.markCurrentItem&&this.$root.find(\"a.current\").removeClass(\"current\"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(\":visible\")){var e=this.$root.offset();this.$disableOverlay=$('<div class=\"sm-jquery-disable-overlay\"/>').css({position:\"absolute\",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest(\"a\").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest(\"ul\");e.dataSM(\"in-mega\");)e=e.parent().closest(\"ul\");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;\"none\"==t.css(\"display\")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:\"absolute\",visibility:\"hidden\"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?\"$root\":\"$firstSub\"].css(\"z-index\"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css(\"z-index\"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?\"Height\":\"Width\",i=document.documentElement[\"client\"+e],s=window[\"inner\"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return\"static\"==this.$firstSub.css(\"position\")},isCSSOn:function(){return\"inline\"!=this.$firstLink.css(\"display\")},isFixed:function(){var t=\"fixed\"==this.$root.css(\"position\");return t||this.$root.parentsUntil(\"body\").each(function(){return\"fixed\"==$(this).css(\"position\")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass(\"mega-menu\")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest(\"ul\"),s=i.dataSM(\"level\");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM(\"parent-a\")[0])){var o=this;$(i.parentsUntil(\"[data-smartmenus-id]\",\"ul\").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM(\"parent-a\"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler(\"activate.smapi\",t[0])!==!1){var a=t.dataSM(\"sub\");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler(\"blur.smapi\",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest(\"ul\")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler(\"click.smapi\",e[0])===!1)return!1;var i=$(t.target).is(\".sub-arrow\"),s=e.dataSM(\"sub\"),o=s?2==s.dataSM(\"level\"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(\":visible\")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(\":visible\")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass(\"disabled\")||this.$root.triggerHandler(\"select.smapi\",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM(\"mousedown\",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest(\"ul\").dataSM(\"level\")?1:this.opts.showTimeout)}this.$root.triggerHandler(\"mouseenter.smapi\",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM(\"mousedown\")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler(\"focus.smapi\",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM(\"mousedown\"),this.$root.triggerHandler(\"mouseleave.smapi\",e[0]))},menuHide:function(t){if(this.$root.triggerHandler(\"beforehide.smapi\",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),\"none\"!=t.css(\"display\"))){var e=function(){t.css(\"z-index\",\"\")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM(\"scroll\")&&(this.menuScrollStop(t),t.css({\"touch-action\":\"\",\"-ms-touch-action\":\"\",\"-webkit-transform\":\"\",transform:\"\"}).off(\".smartmenus_scroll\").removeDataSM(\"scroll\").dataSM(\"scroll-arrows\").hide()),t.dataSM(\"parent-a\").removeClass(\"highlighted\").attr(\"aria-expanded\",\"false\"),t.attr({\"aria-expanded\":\"false\",\"aria-hidden\":\"true\"});var i=t.dataSM(\"level\");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler(\"hide.smapi\",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(\":visible\")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler(\"hideAll.smapi\")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM(\"sub\");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM(\"in-mega\")){t.hasClass(\"mega-menu\")&&t.find(\"ul\").dataSM(\"in-mega\",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll(\"a\").eq(-1);s.length||(s=t.prevAll().find(\"a\").eq(-1)),s.addClass(\"has-submenu\").dataSM(\"sub\",t),t.dataSM(\"parent-a\",s).dataSM(\"level\",e).parent().dataSM(\"sub\",t);var o=s.attr(\"id\")||this.accessIdPrefix+ ++this.idInc,a=t.attr(\"id\")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,\"aria-haspopup\":\"true\",\"aria-controls\":a,\"aria-expanded\":\"false\"}),t.attr({id:a,role:\"group\",\"aria-hidden\":\"true\",\"aria-labelledby\":o,\"aria-expanded\":\"false\"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM(\"parent-a\"),o=s.closest(\"li\"),a=o.parent(),n=t.dataSM(\"level\"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is(\"[data-sm-horizontal-sub]\")||2==n&&!a.hasClass(\"sm-vertical\"),M=this.opts.rightToLeftSubMenus&&!o.is(\"[data-sm-reverse]\")||!this.opts.rightToLeftSubMenus&&o.is(\"[data-sm-reverse]\"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM(\"scroll-arrows\")||t.dataSM(\"scroll-arrows\",$([$('<span class=\"scroll-up\"><span class=\"scroll-up-arrow\"></span></span>')[0],$('<span class=\"scroll-down\"><span class=\"scroll-down-arrow\"></span></span>')[0]]).on({mouseenter:function(){t.dataSM(\"scroll\").up=$(this).hasClass(\"scroll-up\"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},\"mousewheel DOMMouseScroll\":function(t){t.preventDefault()}}).insertAfter(t));var A=\".smartmenus_scroll\";if(t.dataSM(\"scroll\",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM(\"scroll-arrows\").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},\"mousewheel DOMMouseScroll\":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM(\"scroll-arrows\").css({top:\"auto\",left:\"0\",marginLeft:e+(parseInt(t.css(\"border-left-width\"))||0),width:r-(parseInt(t.css(\"border-left-width\"))||0)-(parseInt(t.css(\"border-right-width\"))||0),zIndex:t.css(\"z-index\")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?\"touchstart touchmove touchend\":\"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp\"]=function(e){x.menuScrollTouch(t,e)},t.css({\"touch-action\":\"none\",\"-ms-touch-action\":\"none\"}).on(getEventsNS(C,A))}}}t.css({top:\"auto\",left:\"0\",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM(\"scroll\"),a=t.dataSM(\"scroll-arrows\"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM(\"level\");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM(\"sub\")&&this.activatedItems[r-1].dataSM(\"sub\").is(\":visible\")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{\"-webkit-transform\":\"translate3d(0, \"+o.y+\"px, 0)\",transform:\"translate3d(0, \"+o.y+\"px, 0)\"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM(\"scroll-arrows\").eq(i?0:1).is(\":visible\")&&(t.dataSM(\"scroll\").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||\"\").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM(\"scroll-arrows\").css(\"visibility\",\"hidden\"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM(\"scroll\"),s=$(window).scrollTop()-t.dataSM(\"parent-a\").offset().top-i.itemH;t.dataSM(\"scroll-arrows\").eq(0).css(\"margin-top\",s).end().eq(1).css(\"margin-top\",s+this.getViewportHeight()-i.arrowDownH).end().css(\"visibility\",\"visible\")}},menuScrollRefreshData:function(t){var e=t.dataSM(\"scroll\"),i=$(window).scrollTop()-t.dataSM(\"parent-a\").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css(\"margin-top\"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM(\"scroll\").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM(\"scroll\");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM(\"beforefirstshowfired\")||(t.dataSM(\"beforefirstshowfired\",!0),this.$root.triggerHandler(\"beforefirstshow.smapi\",t[0])!==!1))&&this.$root.triggerHandler(\"beforeshow.smapi\",t[0])!==!1&&(t.dataSM(\"shown-before\",!0),canAnimate&&t.stop(!0,!0),!t.is(\":visible\"))){var e=t.dataSM(\"parent-a\"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass(\"highlighted\"),i)t.removeClass(\"sm-nowrap\").css({zIndex:\"\",width:\"auto\",minWidth:\"\",maxWidth:\"\",top:\"\",left:\"\",marginLeft:\"\",marginTop:\"\"});else{if(t.css(\"z-index\",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:\"auto\",minWidth:\"\",maxWidth:\"\"}).addClass(\"sm-nowrap\"),this.opts.subMenusMinWidth&&t.css(\"min-width\",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css(\"max-width\",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass(\"sm-nowrap\").css(\"width\",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css(\"overflow\",\"\")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr(\"aria-expanded\",\"true\"),t.attr({\"aria-expanded\":\"true\",\"aria-hidden\":\"false\"}),this.visibleSubMenus.push(t),this.$root.triggerHandler(\"show.smapi\",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\\n\\nIf you want to show this menu via the \"popupShow\" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM(\"shown-before\",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(\":visible\")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css(\"overflow\",\"\")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM(\"sub\");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is(\"a\")&&this.handleItemEvents(s)){var i=s.dataSM(\"sub\");i&&!i.is(\":visible\")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!(\"onorientationchange\"in window)||\"orientationchange\"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+\"_smartmenus\",e):this.data(t+\"_smartmenus\")},$.fn.removeDataSM=function(t){return this.removeData(t+\"_smartmenus\")},$.fn.smartmenus=function(options){if(\"string\"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data(\"smartmenus\");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data(\"sm-options\")||null;if(dataOpts)try{dataOpts=eval(\"(\"+dataOpts+\")\")}catch(e){dataOpts=null,alert('ERROR\\n\\nSmartMenus jQuery init:\\nInvalid \"data-sm-options\" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:\"10em\",subMenusMaxWidth:\"20em\",subIndicators:!0,subIndicatorsPos:\"append\",subIndicatorsText:\"\",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:\"default\"},$});"
  },
  {
    "path": "docs/cppapi/kitchensink_2menu_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/menu.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">extensions/kitchensink/menu.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">extensions/kitchensink/quest.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">extensions/kitchensink/dialog.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a6a6727c817a50b06905e75396bc8eb1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d\">tram::Ext::Kitchensink::SEARCH_STRING_LENGTH</a> = 100</td></tr>\n<tr class=\"separator:a6a6727c817a50b06905e75396bc8eb1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/kitchensink_2menu_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/menu.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n</div>\n<p><a href=\"kitchensink_2menu_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">tram::Ext::Kitchensink::ListInventory</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">tram::Ext::Kitchensink::ListTrade</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">tram::Ext::Kitchensink::QuestList</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">tram::Ext::Kitchensink::KitchensinkMenuList</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/kitchensink_2menu_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/menu.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">menu.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"kitchensink_2menu_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"menu_2menu_8h.html\">extensions/menu/menu.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span>    </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">   10</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">ListInventory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Ext::Menu::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"keywordtype\">void</span> Display();</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    uint32_t Layer() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>};</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">ListTrade</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Ext::Menu::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <span class=\"keywordtype\">void</span> Display();</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    uint32_t Layer() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>};</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">   20</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">ListDialog</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Ext::Menu::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">ListDialog</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">ListDialog</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">~ListDialog</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">Display</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">   27</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">Layer</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> dialog_topic;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">char</span>* search_string = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>};</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">   33</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">QuestList</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Ext::Menu::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> Display();</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    uint32_t Layer() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>};</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">   38</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">KitchensinkMenuList</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Ext::Menu::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> Display();</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    uint32_t Layer() { <span class=\"keywordflow\">return</span> 0; }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>}</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">tram::Ext::Kitchensink::KitchensinkMenuList</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_dialog_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">tram::Ext::Kitchensink::ListDialog</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_dialog_html_a57879c46dacd3aa040198ffeb3c3cc27\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27\">tram::Ext::Kitchensink::ListDialog::~ListDialog</a></div><div class=\"ttdeci\">~ListDialog()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_dialog_html_a7efdad5869f1dee758dd15a5c49e9d8c\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c\">tram::Ext::Kitchensink::ListDialog::ListDialog</a></div><div class=\"ttdeci\">ListDialog()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_dialog_html_a80fddca313006f7df721f6a76c4c0f46\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46\">tram::Ext::Kitchensink::ListDialog::Layer</a></div><div class=\"ttdeci\">uint32_t Layer()</div><div class=\"ttdef\"><b>Definition:</b> menu.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_dialog_html_a95629efafbccd335e434a1c97b9c6d21\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21\">tram::Ext::Kitchensink::ListDialog::Display</a></div><div class=\"ttdeci\">void Display()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_inventory_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">tram::Ext::Kitchensink::ListInventory</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:10</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_list_trade_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">tram::Ext::Kitchensink::ListTrade</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_quest_list_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">tram::Ext::Kitchensink::QuestList</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:19</div></div>\n<div class=\"ttc\" id=\"amenu_2menu_8h_html\"><div class=\"ttname\"><a href=\"menu_2menu_8h.html\">menu.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/kitchensink_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/kitchensink.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">kitchensink.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"kitchensink_8h_source.html\">extensions/kitchensink/kitchensink.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;assert.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">tram::Ext::Kitchensink::Init</a> ()</td></tr>\n<tr class=\"separator:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">tram::Ext::Kitchensink::Update</a> ()</td></tr>\n<tr class=\"separator:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:acada14362be543540a0a63813c3a68a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7\">tram::Ext::Kitchensink::KITCHENSINK_SYSTEM</a> = -1u</td></tr>\n<tr class=\"separator:acada14362be543540a0a63813c3a68a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/kitchensink_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/kitchensink.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">kitchensink.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"kitchensink_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">tram::Ext::Kitchensink::Init</a> ()</td></tr>\n<tr class=\"separator:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">tram::Ext::Kitchensink::Update</a> ()</td></tr>\n<tr class=\"separator:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/kitchensink_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/kitchensink.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">kitchensink.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"kitchensink_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span>    </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_a4999baa52dc92a9e3e5ce094d39e6a6f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">tram::Ext::Kitchensink::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> kitchensink.cpp:36</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_aabfec8af9b6f67d87256ceb0565b8cc6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">tram::Ext::Kitchensink::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> kitchensink.cpp:24</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lamp_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/lamp.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">lamp.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"lamp_8h_source.html\">entities/lamp.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"light_8h_source.html\">components/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:aa598a47a696fef0e7d50ed690d32d5d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#aa598a47a696fef0e7d50ed690d32d5d5a9f6667e945294d748a3217ce4dc846d8\">tram::FIELD_COLOR_R</a>\n, <a class=\"el\" href=\"namespacetram.html#aa598a47a696fef0e7d50ed690d32d5d5a9e000a0914662ab873817b96ab377c09\">tram::FIELD_COLOR_G</a>\n, <a class=\"el\" href=\"namespacetram.html#aa598a47a696fef0e7d50ed690d32d5d5a85d206f9f01398a9a1ff66de7047e841\">tram::FIELD_COLOR_B</a>\n, <a class=\"el\" href=\"namespacetram.html#aa598a47a696fef0e7d50ed690d32d5d5a5a7593cfaa5e8d4b977d96749103b34f\">tram::FIELD_DISTANCE</a>\n }</td></tr>\n<tr class=\"separator:aa598a47a696fef0e7d50ed690d32d5d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lamp_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/lamp.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">lamp.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"lamp_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_lamp.html\">tram::Lamp</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lamp_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/lamp.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">lamp.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"lamp_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef ENTITIES_LAMP_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define ENTITIES_LAMP_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>LightComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_lamp.html\">Lamp</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#aff131bac65b73b0a881f2116f7f1cd35\">Lamp</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_serialized_field_array.html\">SerializedFieldArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#aeae005f24082d501eb7ec9a9e54ab4de\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#aef8bb7327e6895e997483cd7c83f91e9\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#aeae81f52a382ae7ad89acbaa3c695739\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#a999c309481eb1c90911a71c617ed2fef\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#ac78d7f70b05883b2ad69ba5d6fdfec87\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#a0f77bb55d0945fc080603c5842dc6715\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_lamp.html#a4ab0cd9de2b9e6230ef1816be8c33951\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html#af6ba8a8fbc938b6c08f394f214049710\">   26</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;LightComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_lamp.html#af6ba8a8fbc938b6c08f394f214049710\">light</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html#a4365a8b5302a6da19cd36c67c863093b\">   28</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_lamp.html#a4365a8b5302a6da19cd36c67c863093b\">color_r</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">   29</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_lamp.html#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">color_g</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html#abf677a5c610ced48159e6b11ab1c4451\">   30</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_lamp.html#abf677a5c610ced48159e6b11ab1c4451\">color_b</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_lamp.html#a02553c22a74ee2f103ef4ed09a497d11\">   31</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_lamp.html#a02553c22a74ee2f103ef4ed09a497d11\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// ENTITIES_LAMP_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdef\"><b>Definition:</b> entity.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html\">tram::Lamp</a></div><div class=\"ttdef\"><b>Definition:</b> lamp.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a02553c22a74ee2f103ef4ed09a497d11\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a02553c22a74ee2f103ef4ed09a497d11\">tram::Lamp::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> lamp.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a0f77bb55d0945fc080603c5842dc6715\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a0f77bb55d0945fc080603c5842dc6715\">tram::Lamp::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:85</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a1c3b8fba1d7b221cdbbe0503bb3e83b6\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a1c3b8fba1d7b221cdbbe0503bb3e83b6\">tram::Lamp::color_g</a></div><div class=\"ttdeci\">float color_g</div><div class=\"ttdef\"><b>Definition:</b> lamp.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a4365a8b5302a6da19cd36c67c863093b\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a4365a8b5302a6da19cd36c67c863093b\">tram::Lamp::color_r</a></div><div class=\"ttdeci\">float color_r</div><div class=\"ttdef\"><b>Definition:</b> lamp.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a4ab0cd9de2b9e6230ef1816be8c33951\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a4ab0cd9de2b9e6230ef1816be8c33951\">tram::Lamp::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_a999c309481eb1c90911a71c617ed2fef\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#a999c309481eb1c90911a71c617ed2fef\">tram::Lamp::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_abf677a5c610ced48159e6b11ab1c4451\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#abf677a5c610ced48159e6b11ab1c4451\">tram::Lamp::color_b</a></div><div class=\"ttdeci\">float color_b</div><div class=\"ttdef\"><b>Definition:</b> lamp.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_ac78d7f70b05883b2ad69ba5d6fdfec87\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#ac78d7f70b05883b2ad69ba5d6fdfec87\">tram::Lamp::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_aeae005f24082d501eb7ec9a9e54ab4de\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#aeae005f24082d501eb7ec9a9e54ab4de\">tram::Lamp::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_aeae81f52a382ae7ad89acbaa3c695739\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#aeae81f52a382ae7ad89acbaa3c695739\">tram::Lamp::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_aef8bb7327e6895e997483cd7c83f91e9\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#aef8bb7327e6895e997483cd7c83f91e9\">tram::Lamp::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_af6ba8a8fbc938b6c08f394f214049710\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#af6ba8a8fbc938b6c08f394f214049710\">tram::Lamp::light</a></div><div class=\"ttdeci\">Component&lt; LightComponent &gt; light</div><div class=\"ttdef\"><b>Definition:</b> lamp.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_lamp_html_aff131bac65b73b0a881f2116f7f1cd35\"><div class=\"ttname\"><a href=\"classtram_1_1_lamp.html#aff131bac65b73b0a881f2116f7f1cd35\">tram::Lamp::Lamp</a></div><div class=\"ttdeci\">Lamp(const SharedEntityData &amp;, const SerializedFieldArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> lamp.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_serialized_field_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_serialized_field_array.html\">tram::SerializedFieldArray</a></div><div class=\"ttdoc\">Wrapper for serialized field values.</div><div class=\"ttdef\"><b>Definition:</b> serialization.h:17</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.cpp:20</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdef\"><b>Definition:</b> message.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdef\"><b>Definition:</b> entity.cpp:24</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/language_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/language.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">language.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"language_8h_source.html\">framework/language.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">templates/stackpool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_language\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html\">tram::Language</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_language\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Localization services. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language::Load</a> (const char *filename)</td></tr>\n<tr class=\"memdesc:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a language file.  <a href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">More...</a><br /></td></tr>\n<tr class=\"separator:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">tram::Language::Get</a> (name_t name)</td></tr>\n<tr class=\"memdesc:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves a string from the loaded language files.  <a href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">More...</a><br /></td></tr>\n<tr class=\"separator:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5799e241bda18ef51f887437408573\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">tram::Language::UTF16ToLatin7</a> (uint16_t code)</td></tr>\n<tr class=\"memdesc:aef5799e241bda18ef51f887437408573\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts a UTF16 codepoint to a Latin7 codepoint.  <a href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">More...</a><br /></td></tr>\n<tr class=\"separator:aef5799e241bda18ef51f887437408573\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/language_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/language.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">language.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"language_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_language\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html\">tram::Language</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_language\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Localization services. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">tram::Language::Get</a> (name_t name)</td></tr>\n<tr class=\"memdesc:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves a string from the loaded language files.  <a href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">More...</a><br /></td></tr>\n<tr class=\"separator:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language::Load</a> (const char *filename)</td></tr>\n<tr class=\"memdesc:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a language file.  <a href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">More...</a><br /></td></tr>\n<tr class=\"separator:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5799e241bda18ef51f887437408573\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">tram::Language::UTF16ToLatin7</a> (uint16_t code)</td></tr>\n<tr class=\"memdesc:aef5799e241bda18ef51f887437408573\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts a UTF16 codepoint to a Latin7 codepoint.  <a href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">More...</a><br /></td></tr>\n<tr class=\"separator:aef5799e241bda18ef51f887437408573\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/language_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/language.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">language.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"language_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_LANGUAGE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_LANGUAGE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_language.html\">tram::Language</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">Get</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">Load</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* filename);</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keywordtype\">char</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">UTF16ToLatin7</a>(uint16_t);</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_LANGUAGE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_language_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_language.html\">tram::Language</a></div><div class=\"ttdoc\">Localization services.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_language_html_a33a74954652fedfbc85aab8cdd4c99f3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language::Load</a></div><div class=\"ttdeci\">void Load(const char *filename)</div><div class=\"ttdoc\">Loads a language file.</div><div class=\"ttdef\"><b>Definition:</b> language.cpp:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_language_html_aef5799e241bda18ef51f887437408573\"><div class=\"ttname\"><a href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">tram::Language::UTF16ToLatin7</a></div><div class=\"ttdeci\">char UTF16ToLatin7(uint16_t code)</div><div class=\"ttdoc\">Converts a UTF16 codepoint to a Latin7 codepoint.</div><div class=\"ttdef\"><b>Definition:</b> language.cpp:74</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_language_html_af059d31d855f0bf0fc06dfc1a170c834\"><div class=\"ttname\"><a href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">tram::Language::Get</a></div><div class=\"ttdeci\">const char * Get(name_t name)</div><div class=\"ttdoc\">Retrieves a string from the loaded language files.</div><div class=\"ttdef\"><b>Definition:</b> language.cpp:63</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/light_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"light_8h_source.html\">components/light.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/light_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n</div>\n<p><a href=\"light_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/light_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/light.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"light_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2api_8h.html\">render/api.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_light_component.html\">LightComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">Init</a> ();</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">   14</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">Start</a> () {}</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">SetLocation</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a>);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">SetColor</a> (<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a>);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">SetDistance</a> (<span class=\"keywordtype\">float</span> dist);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">GetColor</a> ();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">GetDistance</a> ();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">   23</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event) { <span class=\"keywordflow\">return</span>; }    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">~LightComponent</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">   28</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">Render::light_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">light</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">   29</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">location</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">   30</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">color</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">   31</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// COMPONENTS_LIGHTCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html\">tram::LightComponent</a></div><div class=\"ttdef\"><b>Definition:</b> light.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a12116f3c73a230d6f2ba928d0f6af33f\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f\">tram::LightComponent::GetDistance</a></div><div class=\"ttdeci\">float GetDistance()</div><div class=\"ttdoc\">Returns the distance of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a1861087271aee66c91c327ec199000da\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da\">tram::LightComponent::SetDistance</a></div><div class=\"ttdeci\">void SetDistance(float dist)</div><div class=\"ttdoc\">Sets the distance of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a3cfee9529794960ce2238cd8306c438b\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b\">tram::LightComponent::~LightComponent</a></div><div class=\"ttdeci\">~LightComponent()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a3eaddbed4577c9c58915b1eafad0617a\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a\">tram::LightComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(vec3 location)</div><div class=\"ttdoc\">Sets the location of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a523c8f75bcd17b885098fe30956d88a6\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6\">tram::LightComponent::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:7</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a71e038c2e9a0cde417f2b1899ff87349\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349\">tram::LightComponent::GetColor</a></div><div class=\"ttdeci\">vec3 GetColor()</div><div class=\"ttdoc\">Returns the color of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a9613f69281a1170cd3465920fc8254ef\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef\">tram::LightComponent::color</a></div><div class=\"ttdeci\">Render::color_t color</div><div class=\"ttdef\"><b>Definition:</b> light.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_a97341de0a9ff1c7ebd0d9ae721af0bac\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac\">tram::LightComponent::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> light.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ac5d511b09dd704670222c89f7f4bfb40\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40\">tram::LightComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> light.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ac9245097981e9adcb4f31f83513a071b\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b\">tram::LightComponent::SetColor</a></div><div class=\"ttdeci\">void SetColor(Render::color_t color)</div><div class=\"ttdoc\">Sets the color of the light.</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ad6cf4eb83f59c3bd63368dc6f79e6df9\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9\">tram::LightComponent::light</a></div><div class=\"ttdeci\">Render::light_t light</div><div class=\"ttdef\"><b>Definition:</b> light.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_ae3a23ce02a2f45cbfcc386a78acc5db4\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4\">tram::LightComponent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_aee724429d715a9da2793d66b0938080f\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f\">tram::LightComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> light.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_light_component_html_afc605268cb96a739eee4ff721fc013d1\"><div class=\"ttname\"><a href=\"classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1\">tram::LightComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> light.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></div><div class=\"ttdeci\">vec3 color_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a8251d783fe57884a20b3322750ac4a1d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">tram::Render::light_t</a></div><div class=\"ttdeci\">void * light_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.cpp:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"arender_2api_8h_html\"><div class=\"ttname\"><a href=\"render_2api_8h.html\">api.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdef\"><b>Definition:</b> event.h:19</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/loader_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/loader.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">loader.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"loader_8h_source.html\">framework/loader.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"transition_8h_source.html\">framework/transition.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;set&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_loader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html\">tram::Loader</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_loader\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">tram::Loader::Track</a> (Entity *entity)</td></tr>\n<tr class=\"memdesc:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts tracking an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">More...</a><br /></td></tr>\n<tr class=\"separator:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">tram::Loader::Untrack</a> (Entity *entity)</td></tr>\n<tr class=\"memdesc:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops tracking a tracked <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">More...</a><br /></td></tr>\n<tr class=\"separator:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ff0e373bfa20733197131513624505\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">tram::Loader::Update</a> ()</td></tr>\n<tr class=\"memdesc:aa2ff0e373bfa20733197131513624505\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> loading and unloading.  <a href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2ff0e373bfa20733197131513624505\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:acc765a2553ec7b9c33e50b473d38d371\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::set&lt; id_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371\">tram::Loader::tracked_entities</a></td></tr>\n<tr class=\"separator:acc765a2553ec7b9c33e50b473d38d371\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/loader_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/loader.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">loader.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"loader_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_loader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html\">tram::Loader</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_loader\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">tram::Loader::Track</a> (Entity *entity)</td></tr>\n<tr class=\"memdesc:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts tracking an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">More...</a><br /></td></tr>\n<tr class=\"separator:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">tram::Loader::Untrack</a> (Entity *entity)</td></tr>\n<tr class=\"memdesc:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops tracking a tracked <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">More...</a><br /></td></tr>\n<tr class=\"separator:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ff0e373bfa20733197131513624505\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">tram::Loader::Update</a> ()</td></tr>\n<tr class=\"memdesc:aa2ff0e373bfa20733197131513624505\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> loading and unloading.  <a href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2ff0e373bfa20733197131513624505\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/loader_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/loader.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">loader.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"loader_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_LOADER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_LOADER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span>    <span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span>}</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_loader.html\">tram::Loader</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">Track</a>(Entity* entity);</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">Untrack</a>(Entity* entity);</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>}</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_LOADER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_loader_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_loader.html\">tram::Loader</a></div><div class=\"ttdoc\">WorldCell streaming.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_loader_html_a682ad9ccb8fee9638cfea657405e9d54\"><div class=\"ttname\"><a href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">tram::Loader::Track</a></div><div class=\"ttdeci\">void Track(Entity *entity)</div><div class=\"ttdoc\">Starts tracking an Entity.</div><div class=\"ttdef\"><b>Definition:</b> loader.cpp:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_loader_html_aa2ff0e373bfa20733197131513624505\"><div class=\"ttname\"><a href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">tram::Loader::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Performs WorldCell loading and unloading.</div><div class=\"ttdef\"><b>Definition:</b> loader.cpp:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_loader_html_add220f7fedcb52197b68d9d17115ceaa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">tram::Loader::Untrack</a></div><div class=\"ttdeci\">void Untrack(Entity *entity)</div><div class=\"ttdoc\">Stops tracking a tracked Entity.</div><div class=\"ttdef\"><b>Definition:</b> loader.cpp:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/logging_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/logging.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">logging.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Logging and console printing services.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"other_8h_source.html\">platform/other.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;charconv&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1implementation\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html\">tram::implementation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">tram::SetSystemLoggingSeverity</a> (System::system_t system, Severity min_severity)</td></tr>\n<tr class=\"memdesc:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the logging severity filter.  <a href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">More...</a><br /></td></tr>\n<tr class=\"separator:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb62c461f07f0472724808f099abd05d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">tram::SetDisplayLogCallback</a> (void(*callback)(int, const char *))</td></tr>\n<tr class=\"memdesc:aeb62c461f07f0472724808f099abd05d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the display log callback.  <a href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb62c461f07f0472724808f099abd05d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6e944197c5e9252268255850e7d15fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">tram::SetConsoleLogCallback</a> (void(*callback)(int, const char *))</td></tr>\n<tr class=\"memdesc:ad6e944197c5e9252268255850e7d15fb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the console log callback.  <a href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">More...</a><br /></td></tr>\n<tr class=\"separator:ad6e944197c5e9252268255850e7d15fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">tram::implementation::concat_fmt</a> (std::string_view &amp;str)</td></tr>\n<tr class=\"separator:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">tram::implementation::flush_console</a> (Severity severity, System::system_t system)</td></tr>\n<tr class=\"separator:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac91c6a3049a88f77305379c3185e9a48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">tram::implementation::flush_display</a> (int time, int system)</td></tr>\n<tr class=\"separator:ac91c6a3049a88f77305379c3185e9a48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">tram::implementation::concat</a> (const std::string_view &amp;value)</td></tr>\n<tr class=\"separator:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a39fba9c0eb726295d1456c1651b12d45\">tram::implementation::concat</a> (const std::string &amp;value)</td></tr>\n<tr class=\"separator:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#acebb47b38e9273b2c259256c7a8fee5f\">tram::implementation::concat</a> (const char *const &amp;value)</td></tr>\n<tr class=\"separator:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4cec4f0b2a5a9e7fb164820607f105d4\">tram::implementation::concat</a> (const char *value)</td></tr>\n<tr class=\"separator:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a7a2a311b556467311387960228c67ab8\">tram::implementation::concat</a> (const UID &amp;value)</td></tr>\n<tr class=\"separator:a7a2a311b556467311387960228c67ab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe\">tram::implementation::to_chars_concat</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">tram::implementation::concat_numeric</a> (const int64_t &amp;value)</td></tr>\n<tr class=\"separator:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ae9f6692c3813328fafd9e99871fafb04\">tram::implementation::concat_numeric</a> (const uint64_t &amp;value)</td></tr>\n<tr class=\"separator:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a8a5a3ae9f84e3585cda2b06cd8221d69\">tram::implementation::concat_numeric</a> (const float &amp;value)</td></tr>\n<tr class=\"separator:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a8098d615040fde5cc1fc55269394ccb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">tram::implementation::buffer</a> [500] = {'\\0'}</td></tr>\n<tr class=\"separator:a8098d615040fde5cc1fc55269394ccb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Logging and console printing services. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/logging.html\">https://racenis.github.io/tram-sdk/documentation/framework/logging.html</a> </dd></dl>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/logging_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/logging.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">logging.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;concepts&gt;</code><br />\n</div>\n<p><a href=\"logging_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1implementation\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html\">tram::implementation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a34ab368bc856f9bd71bfcb4f2bb86c56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">tram::Severity</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\">tram::INFO</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\">tram::WARNING</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\">tram::ERROR</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">tram::CRITICAL_ERROR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">tram::DEFAULT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a34ab368bc856f9bd71bfcb4f2bb86c56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ad81660eda2af6067bdf5708b9157a524\">tram::implementation::concat</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">tram::implementation::concat</a> (const std::string_view &amp;value)</td></tr>\n<tr class=\"separator:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a39fba9c0eb726295d1456c1651b12d45\">tram::implementation::concat</a> (const std::string &amp;value)</td></tr>\n<tr class=\"separator:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#acebb47b38e9273b2c259256c7a8fee5f\">tram::implementation::concat</a> (const char *const &amp;value)</td></tr>\n<tr class=\"separator:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a7a2a311b556467311387960228c67ab8\">tram::implementation::concat</a> (const UID &amp;value)</td></tr>\n<tr class=\"separator:a7a2a311b556467311387960228c67ab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4bb77cc33a48fded3045407919472113\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;size_t N&gt; </td></tr>\n<tr class=\"memitem:a4bb77cc33a48fded3045407919472113\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4bb77cc33a48fded3045407919472113\">tram::implementation::concat</a> (const char(&amp;value)[N])</td></tr>\n<tr class=\"separator:a4bb77cc33a48fded3045407919472113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4cec4f0b2a5a9e7fb164820607f105d4\">tram::implementation::concat</a> (const char *value)</td></tr>\n<tr class=\"separator:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a829582177c315b267d8c5d25071dc20b\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a829582177c315b267d8c5d25071dc20b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a829582177c315b267d8c5d25071dc20b\">tram::implementation::concat_numeric</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:a829582177c315b267d8c5d25071dc20b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">tram::implementation::concat_numeric</a> (const int64_t &amp;value)</td></tr>\n<tr class=\"separator:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ae9f6692c3813328fafd9e99871fafb04\">tram::implementation::concat_numeric</a> (const uint64_t &amp;value)</td></tr>\n<tr class=\"separator:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a8a5a3ae9f84e3585cda2b06cd8221d69\">tram::implementation::concat_numeric</a> (const float &amp;value)</td></tr>\n<tr class=\"separator:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">tram::implementation::concat_fmt</a> (std::string_view &amp;str)</td></tr>\n<tr class=\"separator:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">tram::implementation::flush_console</a> (Severity severity, System::system_t system)</td></tr>\n<tr class=\"separator:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa314b84e606df8e9955afd0b5d3f84e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#afa314b84e606df8e9955afd0b5d3f84e\">tram::implementation::flush_display</a> (int time, System::system_t system)</td></tr>\n<tr class=\"separator:afa314b84e606df8e9955afd0b5d3f84e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e18832774c9a92e285eeb0cfa84d64d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">tram::implementation::log</a> (void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format)</td></tr>\n<tr class=\"separator:a9e18832774c9a92e285eeb0cfa84d64d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T , typename... Args&gt; </td></tr>\n<tr class=\"memitem:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#aaddb11c3ce07c8bbb6e9dc206f13fff3\">tram::implementation::log</a> (void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format, T &amp;value, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">tram::SetSystemLoggingSeverity</a> (System::system_t system, Severity min_severity)</td></tr>\n<tr class=\"memdesc:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the logging severity filter.  <a href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">More...</a><br /></td></tr>\n<tr class=\"separator:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6386f26cd40ff74930ce7855564b513d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6386f26cd40ff74930ce7855564b513d\">tram::SetDisplayLogCallback</a> (void(int, const char *))</td></tr>\n<tr class=\"separator:a6386f26cd40ff74930ce7855564b513d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf2fa22ee1b4ccc8fc03fe49402db0c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aaf2fa22ee1b4ccc8fc03fe49402db0c5\">tram::SetConsoleLogCallback</a> (void(int, const char *))</td></tr>\n<tr class=\"separator:aaf2fa22ee1b4ccc8fc03fe49402db0c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78660be0737c048109e94b12da8376c1\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a78660be0737c048109e94b12da8376c1\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">tram::Log</a> (Severity severity, System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a78660be0737c048109e94b12da8376c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab55eb49c2df70f400895dab88b146d00\">tram::Log</a> (System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1d9753464d0d21a28f513716fa797cd8\">tram::Log</a> (const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">tram::DisplayLog</a> (int time, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/logging_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/logging.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">logging.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"logging_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_LOGGING_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_LOGGING_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"framework_2system_8h.html\">framework/system.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;concepts&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">   13</a></span><span class=\"keyword\">enum class</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\">INFO</a>,           <span class=\"comment\">//&lt; For debugging and other verbose messages. Not printed by default.</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\">WARNING</a>,        <span class=\"comment\">//&lt; For errors that are corrected and require no end-user intervention.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\">ERROR</a>,          <span class=\"comment\">//&lt; For significant erros that can be corrected, but require the end-user to be notified.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">CRITICAL_ERROR</a>, <span class=\"comment\">//&lt; For errors that cannot be recovered from.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">DEFAULT</a>         <span class=\"comment\">//&lt; Informational messages, always printed.</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">namespace </span>implementation {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#ad81660eda2af6067bdf5708b9157a524\">   22</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> T&amp; value) {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>        concat&lt;const char*&gt;(<span class=\"stringliteral\">&quot;LOGGER_UNDEFINED_TYPE&quot;</span>);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> std::string_view&amp; value);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> std::string&amp; value);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <span class=\"keyword\">const</span>&amp; value);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp; value);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">size_t</span> N&gt;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#a4bb77cc33a48fded3045407919472113\">   31</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> (&amp;value)[N]) {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        concat&lt;const char*&gt;(value);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    }</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#a829582177c315b267d8c5d25071dc20b\">   37</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">concat_numeric</a>(<span class=\"keyword\">const</span> T&amp; value) {}</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">concat_numeric</a>(<span class=\"keyword\">const</span> int64_t&amp; value);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">concat_numeric</a>(<span class=\"keyword\">const</span> uint64_t&amp; value);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">template</span> &lt;&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">concat_numeric</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>&amp; value);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keyword\">template</span> &lt;std::<span class=\"keywordtype\">signed</span>_<span class=\"keywordtype\">int</span>egral T&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> T&amp; value) {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>        concat_numeric&lt;int64_t&gt;(value);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    }</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keyword\">template</span> &lt;std::<span class=\"keywordtype\">unsigned</span>_<span class=\"keywordtype\">int</span>egral T&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> T&amp; value) {</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        concat_numeric&lt;uint64_t&gt;(value);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    }</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"keyword\">template</span> &lt;std::<span class=\"keywordtype\">float</span>ing_po<span class=\"keywordtype\">int</span> T&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(<span class=\"keyword\">const</span> T&amp; value) {</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        concat_numeric&lt;float&gt;(value);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">concat_fmt</a>(std::string_view&amp; str);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">flush_console</a>(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#afa314b84e606df8e9955afd0b5d3f84e\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">flush_display</a>(<span class=\"keywordtype\">int</span> time, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">   59</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">log</a>(<span class=\"keywordtype\">void</span>(*flush)(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>), <a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, std::string_view&amp; format) {</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">concat_fmt</a>(format);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        flush(severity, system);</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T, <span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1implementation.html#aaddb11c3ce07c8bbb6e9dc206f13fff3\">   65</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">log</a>(<span class=\"keywordtype\">void</span>(*flush)(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>), <a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, std::string_view&amp; format, T&amp; value, Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">concat_fmt</a>(format);</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a>(value);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">log</a>(flush, severity, system, format, args...);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    }</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>}</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">SetSystemLoggingSeverity</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, <a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> min_severity);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a6386f26cd40ff74930ce7855564b513d\">   75</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">SetDisplayLogCallback</a>(<span class=\"keywordtype\">void</span>(<span class=\"keywordtype\">int</span>, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*));</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aaf2fa22ee1b4ccc8fc03fe49402db0c5\">   76</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">SetConsoleLogCallback</a>(<span class=\"keywordtype\">void</span>(<span class=\"keywordtype\">int</span>, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*));</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">   79</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">Log</a>(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, <span class=\"keyword\">const</span> std::string_view&amp; format, Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    std::string_view format_view = format;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">implementation::log</a>(<a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">implementation::flush_console</a>, severity, system, format_view, args...);</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>}</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ab55eb49c2df70f400895dab88b146d00\">   85</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">Log</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, <span class=\"keyword\">const</span> std::string_view&amp; format, Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    std::string_view format_view = format;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">implementation::log</a>(<a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">implementation::flush_console</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">Severity::DEFAULT</a>, system, format_view, args...);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>}</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1d9753464d0d21a28f513716fa797cd8\">   91</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">Log</a>(<span class=\"keyword\">const</span> std::string_view&amp; format, Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    std::string_view format_view = format;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">implementation::log</a>(<a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">implementation::flush_console</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">Severity::DEFAULT</a>, 6, format_view, args...);</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">   97</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">DisplayLog</a>(<span class=\"keywordtype\">int</span> time, <span class=\"keyword\">const</span> std::string_view&amp; format, Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    std::string_view format_view = format;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">implementation::log</a>(<a class=\"code hl_function\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">implementation::flush_display</a>, time, 6, format_view, args...);</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>}</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>}</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_LOGGING_H</span></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"aframework_2system_8h_html\"><div class=\"ttname\"><a href=\"framework_2system_8h.html\">system.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a3480b59cb32a6f70ad1fce1626b64e40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></div><div class=\"ttdeci\">uint32_t system_t</div><div class=\"ttdef\"><b>Definition:</b> system.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a03b4b9c9589ff25e1b1df4e5491b829f\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">tram::implementation::concat_fmt</a></div><div class=\"ttdeci\">void concat_fmt(std::string_view &amp;str)</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:62</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a4f7ee627cbe8593eb958c9ac61ccd2eb\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">tram::implementation::flush_console</a></div><div class=\"ttdeci\">void flush_console(Severity severity, System::system_t system)</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:74</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a6faec7dc4da15e2576e1a201d4eb164a\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">tram::implementation::concat</a></div><div class=\"ttdeci\">void concat(const std::string_view &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:134</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a9e18832774c9a92e285eeb0cfa84d64d\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">tram::implementation::log</a></div><div class=\"ttdeci\">void log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format)</div><div class=\"ttdef\"><b>Definition:</b> logging.h:59</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_aac1de7cbd86415606d60e0476fa6fd56\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">tram::implementation::concat_numeric</a></div><div class=\"ttdeci\">void concat_numeric(const int64_t &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:161</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_ac91c6a3049a88f77305379c3185e9a48\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">tram::implementation::flush_display</a></div><div class=\"ttdeci\">void flush_display(int time, int system)</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:126</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">tram::Severity</a></div><div class=\"ttdeci\">Severity</div><div class=\"ttdef\"><b>Definition:</b> logging.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\">tram::Severity::WARNING</a></div><div class=\"ttdeci\">@ WARNING</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">tram::Severity::CRITICAL_ERROR</a></div><div class=\"ttdeci\">@ CRITICAL_ERROR</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\">tram::Severity::INFO</a></div><div class=\"ttdeci\">@ INFO</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">tram::Severity::DEFAULT</a></div><div class=\"ttdeci\">@ DEFAULT</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\">tram::Severity::ERROR</a></div><div class=\"ttdeci\">@ ERROR</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a78660be0737c048109e94b12da8376c1\"><div class=\"ttname\"><a href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">tram::Log</a></div><div class=\"ttdeci\">void Log(Severity severity, System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)</div><div class=\"ttdef\"><b>Definition:</b> logging.h:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aafb9d3143cd13b2e8267161ce4813fce\"><div class=\"ttname\"><a href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">tram::DisplayLog</a></div><div class=\"ttdeci\">void DisplayLog(int time, const std::string_view &amp;format, Args &amp;&amp;... args)</div><div class=\"ttdef\"><b>Definition:</b> logging.h:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad33d1b97d4055d1dc0ed20da61825d07\"><div class=\"ttname\"><a href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">tram::SetSystemLoggingSeverity</a></div><div class=\"ttdeci\">void SetSystemLoggingSeverity(System::system_t system, Severity min_severity)</div><div class=\"ttdoc\">Sets the logging severity filter.</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad6e944197c5e9252268255850e7d15fb\"><div class=\"ttname\"><a href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">tram::SetConsoleLogCallback</a></div><div class=\"ttdeci\">void SetConsoleLogCallback(void(*callback)(int, const char *))</div><div class=\"ttdoc\">Sets the console log callback.</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aeb62c461f07f0472724808f099abd05d\"><div class=\"ttname\"><a href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">tram::SetDisplayLogCallback</a></div><div class=\"ttdeci\">void SetDisplayLogCallback(void(*callback)(int, const char *))</div><div class=\"ttdoc\">Sets the display log callback.</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lua_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/scripting/lua.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\">scripting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">lua.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"lua_8h_source.html\">extensions/scripting/lua.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;lua.hpp&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">tram::Ext::Scripting::Lua::Lua</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">tram::Ext::Scripting::Lua</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">tram::Ext::Scripting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">tram::Ext::Scripting::Lua::Init</a> ()</td></tr>\n<tr class=\"separator:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b662ed28da72b11080b7948181fa066\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">tram::Ext::Scripting::Lua::Uninit</a> ()</td></tr>\n<tr class=\"separator:a0b662ed28da72b11080b7948181fa066\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a4cfafc75c333b7b33aa642f4a2dfa952\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952\">tram::Ext::Scripting::Lua::MAX_LUA_FUNCTIONS</a> = 200</td></tr>\n<tr class=\"separator:a4cfafc75c333b7b33aa642f4a2dfa952\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lua_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/scripting/lua.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\">scripting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">lua.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"lua_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">tram::Ext::Scripting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">tram::Ext::Scripting::Lua</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">tram::Ext::Scripting::Lua::Init</a> ()</td></tr>\n<tr class=\"separator:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b662ed28da72b11080b7948181fa066\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">tram::Ext::Scripting::Lua::Uninit</a> ()</td></tr>\n<tr class=\"separator:a0b662ed28da72b11080b7948181fa066\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/lua_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/scripting/lua.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_6785e21a8529b80a9bb3fbf206311f99.html\">scripting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">lua.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"lua_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">tram::Ext::Scripting::Lua</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">tram::Ext::Scripting::Lua</a></div><div class=\"ttdoc\">Lua bindings for the Script system.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a0b662ed28da72b11080b7948181fa066\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">tram::Ext::Scripting::Lua::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:296</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a83bba368580b03eba8830e61ce8f13ab\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">tram::Ext::Scripting::Lua::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:285</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/macros_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/macros.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#define-members\">Macros</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">macros.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"macros_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a52706c5e76dff5554e6be98274f86e3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#a52706c5e76dff5554e6be98274f86e3d\">TRAM_SDK_REGISTER_EVENT_DATATYPE</a>(EVENT_ID,  TYPE)&#160;&#160;&#160;template &lt;&gt; struct tram::EventDataType&lt;EVENT_ID&gt; { TYPE type; };</td></tr>\n<tr class=\"memdesc:a52706c5e76dff5554e6be98274f86e3d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">This is experimental template.  <a href=\"macros_8h.html#a52706c5e76dff5554e6be98274f86e3d\">More...</a><br /></td></tr>\n<tr class=\"separator:a52706c5e76dff5554e6be98274f86e3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad00c543490e5b3b7db91b1fdb62d44cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb\">TRAM_SDK_IMPLEMENT_POOL</a>(TYPE,  NAME,  SIZE)&#160;&#160;&#160;template &lt;&gt; Pool&lt;TYPE&gt; PoolProxy&lt;TYPE&gt;::pool (NAME, SIZE);</td></tr>\n<tr class=\"memdesc:ad00c543490e5b3b7db91b1fdb62d44cb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implements a pool.  <a href=\"macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb\">More...</a><br /></td></tr>\n<tr class=\"separator:ad00c543490e5b3b7db91b1fdb62d44cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8acc3253ef25e7241078bb72714f386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#ab8acc3253ef25e7241078bb72714f386\">TRAM_SDK_ASSERT</a>(EXPRESSION)&#160;&#160;&#160;if (!(EXPRESSION)) { Log(&quot;{}\\nAssert at line {} in {}&quot;, #EXPRESSION, __LINE__, __FILE__); abort(); }</td></tr>\n<tr class=\"separator:ab8acc3253ef25e7241078bb72714f386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a152c2304044652f7572e5759c6535a2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#a152c2304044652f7572e5759c6535a2c\">TRAM_SDK_ASSERT_MESSAGE</a>(EXPRESSION,  MESSAGE)&#160;&#160;&#160;if (!(EXPRESSION)) { Log(&quot;{}\\n{}\\nAssert at line {} in {}&quot;, MESSAGE, #EXPRESSION, __LINE__, __FILE__); abort(); }</td></tr>\n<tr class=\"separator:a152c2304044652f7572e5759c6535a2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f9f5f41852998a382c115e4f6bbf159\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159\">TRAM_SDK_ENTITY_NAME</a>(Name)</td></tr>\n<tr class=\"separator:a8f9f5f41852998a382c115e4f6bbf159\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a295f857ea2759f1ca46a41b9bf3dec1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a\">TRAM_SDK_PROPERTY</a>(Name,  Flags)</td></tr>\n<tr class=\"separator:a295f857ea2759f1ca46a41b9bf3dec1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b6582f54dfcdb7471a7a86d9c01eafe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe\">TRAM_SDK_VIRTUAL_PROPERTY</a>(Type,  Name,  Flags)</td></tr>\n<tr class=\"separator:a2b6582f54dfcdb7471a7a86d9c01eafe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"ab8acc3253ef25e7241078bb72714f386\" name=\"ab8acc3253ef25e7241078bb72714f386\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8acc3253ef25e7241078bb72714f386\">&#9670;&nbsp;</a></span>TRAM_SDK_ASSERT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_ASSERT</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">EXPRESSION</td><td>)</td>\n          <td>&#160;&#160;&#160;if (!(EXPRESSION)) { Log(&quot;{}\\nAssert at line {} in {}&quot;, #EXPRESSION, __LINE__, __FILE__); abort(); }</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a152c2304044652f7572e5759c6535a2c\" name=\"a152c2304044652f7572e5759c6535a2c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a152c2304044652f7572e5759c6535a2c\">&#9670;&nbsp;</a></span>TRAM_SDK_ASSERT_MESSAGE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_ASSERT_MESSAGE</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">EXPRESSION, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">MESSAGE&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;if (!(EXPRESSION)) { Log(&quot;{}\\n{}\\nAssert at line {} in {}&quot;, MESSAGE, #EXPRESSION, __LINE__, __FILE__); abort(); }</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8f9f5f41852998a382c115e4f6bbf159\" name=\"a8f9f5f41852998a382c115e4f6bbf159\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f9f5f41852998a382c115e4f6bbf159\">&#9670;&nbsp;</a></span>TRAM_SDK_ENTITY_NAME</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_ENTITY_NAME</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Name</td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad00c543490e5b3b7db91b1fdb62d44cb\" name=\"ad00c543490e5b3b7db91b1fdb62d44cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad00c543490e5b3b7db91b1fdb62d44cb\">&#9670;&nbsp;</a></span>TRAM_SDK_IMPLEMENT_POOL</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_IMPLEMENT_POOL</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">TYPE, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">NAME, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">SIZE&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;template &lt;&gt; Pool&lt;TYPE&gt; PoolProxy&lt;TYPE&gt;::pool (NAME, SIZE);</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Implements a pool. </p>\n\n</div>\n</div>\n<a id=\"a295f857ea2759f1ca46a41b9bf3dec1a\" name=\"a295f857ea2759f1ca46a41b9bf3dec1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a295f857ea2759f1ca46a41b9bf3dec1a\">&#9670;&nbsp;</a></span>TRAM_SDK_PROPERTY</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_PROPERTY</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Name, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Flags&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52706c5e76dff5554e6be98274f86e3d\" name=\"a52706c5e76dff5554e6be98274f86e3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52706c5e76dff5554e6be98274f86e3d\">&#9670;&nbsp;</a></span>TRAM_SDK_REGISTER_EVENT_DATATYPE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_REGISTER_EVENT_DATATYPE</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">EVENT_ID, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">TYPE&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td>&#160;&#160;&#160;template &lt;&gt; struct tram::EventDataType&lt;EVENT_ID&gt; { TYPE type; };</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>This is experimental template. </p>\n\n</div>\n</div>\n<a id=\"a2b6582f54dfcdb7471a7a86d9c01eafe\" name=\"a2b6582f54dfcdb7471a7a86d9c01eafe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b6582f54dfcdb7471a7a86d9c01eafe\">&#9670;&nbsp;</a></span>TRAM_SDK_VIRTUAL_PROPERTY</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TRAM_SDK_VIRTUAL_PROPERTY</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Type, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Name, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Flags&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/macros_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/macros.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">macros.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"macros_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">// This file contains some macros. All of them are completely optional.</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_MACROS_H</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_MACROS_H</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#a52706c5e76dff5554e6be98274f86e3d\">   10</a></span><span class=\"preprocessor\">#define TRAM_SDK_REGISTER_EVENT_DATATYPE(EVENT_ID, TYPE) template &lt;&gt; struct tram::EventDataType&lt;EVENT_ID&gt; { TYPE type; };</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb\">   13</a></span><span class=\"preprocessor\">#define TRAM_SDK_IMPLEMENT_POOL(TYPE, NAME, SIZE) template &lt;&gt; Pool&lt;TYPE&gt; PoolProxy&lt;TYPE&gt;::pool (NAME, SIZE);</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\">// Asserts</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"preprocessor\">#ifndef NDEBUG</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#ab8acc3253ef25e7241078bb72714f386\">   19</a></span><span class=\"preprocessor\">#define TRAM_SDK_ASSERT(EXPRESSION) if (!(EXPRESSION)) { Log(&quot;{}\\nAssert at line {} in {}&quot;</span>, #EXPRESSION, __LINE__, __FILE__); abort(); }</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#a152c2304044652f7572e5759c6535a2c\">   20</a></span><span class=\"preprocessor\">#define TRAM_SDK_ASSERT_MESSAGE(EXPRESSION, MESSAGE) if (!(EXPRESSION)) { Log(&quot;{}\\n{}\\nAssert at line {} in {}&quot;</span>, MESSAGE, #EXPRESSION, __LINE__, __FILE__); abort(); }</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"preprocessor\">#else</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"preprocessor\">#define TRAM_SDK_ASSERT(EXPRESSION) ;</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"preprocessor\">#define TRAM_SDK_ASSERT_MESSAGE(EXPRESSION, MESSAGE) ;</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"comment\">// Code generation macros</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159\">   29</a></span><span class=\"preprocessor\">#define TRAM_SDK_ENTITY_NAME(Name)</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a\">   30</a></span><span class=\"preprocessor\">#define TRAM_SDK_PROPERTY(Name, Flags)</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe\">   31</a></span><span class=\"preprocessor\">#define TRAM_SDK_VIRTUAL_PROPERTY(Type, Name, Flags)</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_MACROS_H</span></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/main_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/main.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">main.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"async_8h_source.html\">framework/async.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"loader_8h_source.html\">framework/loader.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"language_8h_source.html\">framework/language.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">framework/path.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"crate_8h_source.html\">entities/crate.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"staticworldobject_8h_source.html\">entities/staticworldobject.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2light_8h_source.html\">entities/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2player_8h_source.html\">entities/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"decoration_8h_source.html\">entities/decoration.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2trigger_8h_source.html\">entities/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2light_8h_source.html\">components/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2sprite_8h_source.html\">components/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"particle_8h_source.html\">components/particle.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"decal_8h_source.html\">components/decal.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2audio_8h_source.html\">components/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"controller_8h_source.html\">components/controller.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2player_8h_source.html\">components/player.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"firstperson_8h_source.html\">extensions/camera/firstperson.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"kitchensink_8h_source.html\">extensions/kitchensink/kitchensink.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_8h_source.html\">extensions/kitchensink/entities.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">extensions/kitchensink/inventory.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"soundtable_8h_source.html\">extensions/kitchensink/soundtable.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"probe_8h_source.html\">extensions/kitchensink/probe.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"lua_8h_source.html\">extensions/scripting/lua.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">extensions/kitchensink/dialog.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">extensions/kitchensink/quest.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"kitchensink_2menu_8h_source.html\">extensions/kitchensink/menu.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_8h_source.html\">platform/platform.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"image_8h_source.html\">platform/image.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a896df4ffe3f986ad843e4d191cd712b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a896df4ffe3f986ad843e4d191cd712b3\">mainloop</a> ()</td></tr>\n<tr class=\"separator:a896df4ffe3f986ad843e4d191cd712b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a217dbf8b442f20279ea00b898af96f52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a217dbf8b442f20279ea00b898af96f52\">main</a> (int argc, const char **argv)</td></tr>\n<tr class=\"separator:a217dbf8b442f20279ea00b898af96f52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9b1d1ad26dca3cdfbe7bcabb98c50bcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">Ext::Camera::FirstPersonCamera</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a9b1d1ad26dca3cdfbe7bcabb98c50bcd\">camera</a> = nullptr</td></tr>\n<tr class=\"separator:a9b1d1ad26dca3cdfbe7bcabb98c50bcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96781128d3743da3d17e0fdd91afba7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a96781128d3743da3d17e0fdd91afba7b\">player</a> = nullptr</td></tr>\n<tr class=\"separator:a96781128d3743da3d17e0fdd91afba7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c4f14ce2eba453f60e455656652a950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a3c4f14ce2eba453f60e455656652a950\">lit</a> = nullptr</td></tr>\n<tr class=\"separator:a3c4f14ce2eba453f60e455656652a950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5b4101b5ff3df42a2fe16f3499d1e67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#ad5b4101b5ff3df42a2fe16f3499d1e67\">tolet_sprite</a> = nullptr</td></tr>\n<tr class=\"separator:ad5b4101b5ff3df42a2fe16f3499d1e67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef1afcddb99ee1a555eb26a6904d7362\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#aef1afcddb99ee1a555eb26a6904d7362\">tolet_spinner</a> = nullptr</td></tr>\n<tr class=\"separator:aef1afcddb99ee1a555eb26a6904d7362\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6314261586f8d6bdb38d84211ab9068\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#aa6314261586f8d6bdb38d84211ab9068\">tolet_emitter</a> = nullptr</td></tr>\n<tr class=\"separator:aa6314261586f8d6bdb38d84211ab9068\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6df28e8f20bf2b2154a6676327ac225\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#aa6df28e8f20bf2b2154a6676327ac225\">tolet_sprayer</a> = nullptr</td></tr>\n<tr class=\"separator:aa6df28e8f20bf2b2154a6676327ac225\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bb2bbfa377225bdc2575d60f73eb24d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a8bb2bbfa377225bdc2575d60f73eb24d\">derp</a> = nullptr</td></tr>\n<tr class=\"separator:a8bb2bbfa377225bdc2575d60f73eb24d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4a7109a74a328b58d1568997f025a46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#ad4a7109a74a328b58d1568997f025a46\">eerp</a> = nullptr</td></tr>\n<tr class=\"separator:ad4a7109a74a328b58d1568997f025a46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a705d8710b0919174ceba4c291f26824b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a705d8710b0919174ceba4c291f26824b\">derp_player</a> = nullptr</td></tr>\n<tr class=\"separator:a705d8710b0919174ceba4c291f26824b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b2977ab1d0adc9fca3191665cdbd8a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a7b2977ab1d0adc9fca3191665cdbd8a8\">binguser</a> = nullptr</td></tr>\n<tr class=\"separator:a7b2977ab1d0adc9fca3191665cdbd8a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9968db2fbe46c1d2ce9a76ccdff7929c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a9968db2fbe46c1d2ce9a76ccdff7929c\">monguser</a> = nullptr</td></tr>\n<tr class=\"separator:a9968db2fbe46c1d2ce9a76ccdff7929c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39e40a8e7cee2dd7c112dcd36fe20cb6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a39e40a8e7cee2dd7c112dcd36fe20cb6\">dingbat</a> = nullptr</td></tr>\n<tr class=\"separator:a39e40a8e7cee2dd7c112dcd36fe20cb6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2200d84471744e6d70ce13d0835a5c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#ac2200d84471744e6d70ce13d0835a5c9\">monguser_armature</a> = nullptr</td></tr>\n<tr class=\"separator:ac2200d84471744e6d70ce13d0835a5c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24abc1cdb33ae6cc929ae21787c1cec9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a24abc1cdb33ae6cc929ae21787c1cec9\">record</a> = false</td></tr>\n<tr class=\"separator:a24abc1cdb33ae6cc929ae21787c1cec9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ad3920985a278030871ba19a36e9029\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a6ad3920985a278030871ba19a36e9029\">follower</a> = nullptr</td></tr>\n<tr class=\"separator:a6ad3920985a278030871ba19a36e9029\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26541762e56e12ecf3defe0cdf54445c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#a26541762e56e12ecf3defe0cdf54445c\">initial_follower</a> = {0.1f, 1.0f, 1.5f}</td></tr>\n<tr class=\"separator:a26541762e56e12ecf3defe0cdf54445c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc812653ff7db6ef5da9d01fbfd28f17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"main_8cpp.html#acc812653ff7db6ef5da9d01fbfd28f17\">chamberpot</a></td></tr>\n<tr class=\"separator:acc812653ff7db6ef5da9d01fbfd28f17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a217dbf8b442f20279ea00b898af96f52\" name=\"a217dbf8b442f20279ea00b898af96f52\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a217dbf8b442f20279ea00b898af96f52\">&#9670;&nbsp;</a></span>main()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int main </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>argc</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char **&#160;</td>\n          <td class=\"paramname\"><em>argv</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a896df4ffe3f986ad843e4d191cd712b3\" name=\"a896df4ffe3f986ad843e4d191cd712b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a896df4ffe3f986ad843e4d191cd712b3\">&#9670;&nbsp;</a></span>mainloop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void mainloop </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a7b2977ab1d0adc9fca3191665cdbd8a8\" name=\"a7b2977ab1d0adc9fca3191665cdbd8a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b2977ab1d0adc9fca3191665cdbd8a8\">&#9670;&nbsp;</a></span>binguser</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* binguser = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b1d1ad26dca3cdfbe7bcabb98c50bcd\" name=\"a9b1d1ad26dca3cdfbe7bcabb98c50bcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b1d1ad26dca3cdfbe7bcabb98c50bcd\">&#9670;&nbsp;</a></span>camera</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">Ext::Camera::FirstPersonCamera</a>* camera = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acc812653ff7db6ef5da9d01fbfd28f17\" name=\"acc812653ff7db6ef5da9d01fbfd28f17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc812653ff7db6ef5da9d01fbfd28f17\">&#9670;&nbsp;</a></span>chamberpot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a>&lt;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>&gt; chamberpot</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8bb2bbfa377225bdc2575d60f73eb24d\" name=\"a8bb2bbfa377225bdc2575d60f73eb24d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8bb2bbfa377225bdc2575d60f73eb24d\">&#9670;&nbsp;</a></span>derp</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a>* derp = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a705d8710b0919174ceba4c291f26824b\" name=\"a705d8710b0919174ceba4c291f26824b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a705d8710b0919174ceba4c291f26824b\">&#9670;&nbsp;</a></span>derp_player</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a>* derp_player = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39e40a8e7cee2dd7c112dcd36fe20cb6\" name=\"a39e40a8e7cee2dd7c112dcd36fe20cb6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39e40a8e7cee2dd7c112dcd36fe20cb6\">&#9670;&nbsp;</a></span>dingbat</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* dingbat = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad4a7109a74a328b58d1568997f025a46\" name=\"ad4a7109a74a328b58d1568997f025a46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4a7109a74a328b58d1568997f025a46\">&#9670;&nbsp;</a></span>eerp</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Audio::Sound</a>* eerp = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ad3920985a278030871ba19a36e9029\" name=\"a6ad3920985a278030871ba19a36e9029\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ad3920985a278030871ba19a36e9029\">&#9670;&nbsp;</a></span>follower</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a>* follower = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a26541762e56e12ecf3defe0cdf54445c\" name=\"a26541762e56e12ecf3defe0cdf54445c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26541762e56e12ecf3defe0cdf54445c\">&#9670;&nbsp;</a></span>initial_follower</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> initial_follower = {0.1f, 1.0f, 1.5f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c4f14ce2eba453f60e455656652a950\" name=\"a3c4f14ce2eba453f60e455656652a950\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c4f14ce2eba453f60e455656652a950\">&#9670;&nbsp;</a></span>lit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a>* lit = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9968db2fbe46c1d2ce9a76ccdff7929c\" name=\"a9968db2fbe46c1d2ce9a76ccdff7929c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9968db2fbe46c1d2ce9a76ccdff7929c\">&#9670;&nbsp;</a></span>monguser</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* monguser = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac2200d84471744e6d70ce13d0835a5c9\" name=\"ac2200d84471744e6d70ce13d0835a5c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2200d84471744e6d70ce13d0835a5c9\">&#9670;&nbsp;</a></span>monguser_armature</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* monguser_armature = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a96781128d3743da3d17e0fdd91afba7b\" name=\"a96781128d3743da3d17e0fdd91afba7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96781128d3743da3d17e0fdd91afba7b\">&#9670;&nbsp;</a></span>player</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a>* player = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24abc1cdb33ae6cc929ae21787c1cec9\" name=\"a24abc1cdb33ae6cc929ae21787c1cec9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24abc1cdb33ae6cc929ae21787c1cec9\">&#9670;&nbsp;</a></span>record</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool record = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6314261586f8d6bdb38d84211ab9068\" name=\"aa6314261586f8d6bdb38d84211ab9068\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6314261586f8d6bdb38d84211ab9068\">&#9670;&nbsp;</a></span>tolet_emitter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a>* tolet_emitter = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef1afcddb99ee1a555eb26a6904d7362\" name=\"aef1afcddb99ee1a555eb26a6904d7362\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef1afcddb99ee1a555eb26a6904d7362\">&#9670;&nbsp;</a></span>tolet_spinner</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a>* tolet_spinner = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6df28e8f20bf2b2154a6676327ac225\" name=\"aa6df28e8f20bf2b2154a6676327ac225\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6df28e8f20bf2b2154a6676327ac225\">&#9670;&nbsp;</a></span>tolet_sprayer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a>* tolet_sprayer = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad5b4101b5ff3df42a2fe16f3499d1e67\" name=\"ad5b4101b5ff3df42a2fe16f3499d1e67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5b4101b5ff3df42a2fe16f3499d1e67\">&#9670;&nbsp;</a></span>tolet_sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a>* tolet_sprite = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/marker_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/marker.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">marker.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"marker_8h_source.html\">entities/marker.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2script_8h_source.html\">entities/script.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/marker_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/marker.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">marker.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"marker_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html\">tram::Marker</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Functionally inert.  <a href=\"classtram_1_1_marker.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/marker_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/marker.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">marker.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"marker_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ENTITIES_MARKER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ENTITIES_MARKER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_marker.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_marker.html\">Marker</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">Marker</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>}</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ENTITIES_MARKER_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html\">tram::Marker</a></div><div class=\"ttdoc\">Functionally inert.</div><div class=\"ttdef\"><b>Definition:</b> marker.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a1a145d01d9bdd8d6aebd38b3ce27cf3d\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d\">tram::Marker::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a1c59918f30d773f92bdea30840ef63a1\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1\">tram::Marker::Marker</a></div><div class=\"ttdeci\">Marker(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a5ad81cd0f4cb4a426ac37ef1519f5357\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357\">tram::Marker::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a5c9a6085109982a942bf4f08c8b6cb09\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09\">tram::Marker::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a6122424fbc20e0355ca793c26481d961\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961\">tram::Marker::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_a6217c8c7e40bb9a4904b28c2d0c44ded\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded\">tram::Marker::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_ab7246a7be4136d9e70ba8a253b00a2d5\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5\">tram::Marker::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_ad8cb67e60618a29e0d170527f30d3e71\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71\">tram::Marker::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_marker_html_ae890d19a9b46205c1be064f6c08291df\"><div class=\"ttname\"><a href=\"classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df\">tram::Marker::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> marker.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/material_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/material.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#define-members\">Macros</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">material.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;stb_image.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"error_8h_source.html\">render/error.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:a18372412ad2fc3ce1e3240b3cf0efe78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"material_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78\">STB_IMAGE_IMPLEMENTATION</a></td></tr>\n<tr class=\"separator:a18372412ad2fc3ce1e3240b3cf0efe78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305f0db3256dd1248d3f17a83f7a6129\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"material_8cpp.html#a305f0db3256dd1248d3f17a83f7a6129\">STBI_ONLY_PNG</a></td></tr>\n<tr class=\"separator:a305f0db3256dd1248d3f17a83f7a6129\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"a18372412ad2fc3ce1e3240b3cf0efe78\" name=\"a18372412ad2fc3ce1e3240b3cf0efe78\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18372412ad2fc3ce1e3240b3cf0efe78\">&#9670;&nbsp;</a></span>STB_IMAGE_IMPLEMENTATION</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define STB_IMAGE_IMPLEMENTATION</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a305f0db3256dd1248d3f17a83f7a6129\" name=\"a305f0db3256dd1248d3f17a83f7a6129\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a305f0db3256dd1248d3f17a83f7a6129\">&#9670;&nbsp;</a></span>STBI_ONLY_PNG</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define STBI_ONLY_PNG</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/material_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/material.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">material.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"material_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource.  <a href=\"classtram_1_1_render_1_1_material.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:aa55781f294a5a76e9cba54376f45a43f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">tram::Render::MaterialProperty</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">tram::Render::PROPERTY_METAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">tram::Render::PROPERTY_METAL_THIN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">tram::Render::PROPERTY_SLIME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">tram::Render::PROPERTY_TILE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">tram::Render::PROPERTY_GRATE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">tram::Render::PROPERTY_WOOD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">tram::Render::PROPERTY_COMPUTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">tram::Render::PROPERTY_GLASS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">tram::Render::PROPERTY_SNOW</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">tram::Render::PROPERTY_GRASS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">tram::Render::PROPERTY_CONCRETE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">tram::Render::PROPERTY_FLESH</a>\n<br />\n }</td></tr>\n<tr class=\"separator:aa55781f294a5a76e9cba54376f45a43f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae823e9f58d9c8060a531459eec5ff811\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">tram::Render::TextureType</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">tram::Render::TEXTURE_NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">tram::Render::TEXTURE_SAME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">tram::Render::TEXTURE_SOURCE</a>\n }</td></tr>\n<tr class=\"separator:ae823e9f58d9c8060a531459eec5ff811\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/material_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/material.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">material.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"material_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_MATERIAL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_MATERIAL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">   10</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">   11</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">PROPERTY_METAL</a>,</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">   12</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">PROPERTY_METAL_THIN</a>,</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">PROPERTY_SLIME</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">PROPERTY_TILE</a>,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">PROPERTY_GRATE</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">PROPERTY_WOOD</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">PROPERTY_COMPUTER</a>,</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">PROPERTY_GLASS</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">PROPERTY_SNOW</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">PROPERTY_GRASS</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">PROPERTY_CONCRETE</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">PROPERTY_FLESH</a></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">   23</a></span>};    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">   25</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">   26</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">TEXTURE_NONE</a>,</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">TEXTURE_SAME</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">TEXTURE_SOURCE</a></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">   29</a></span>};</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html\">   31</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">   33</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">Material</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">Material</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">   36</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">GetTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">texture</a>; }</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">   37</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">GetMaterial</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">material</a>; }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">   38</a></span>    <span class=\"keyword\">inline</span> uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">GetWidth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">width</a>; }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">   39</a></span>    <span class=\"keyword\">inline</span> uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">GetHeight</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">height</a>; }</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">   40</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">GetType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>; }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">   41</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">GetProperty</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a>; }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">   42</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">GetColor</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a>; }</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">   43</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">GetSpecularWeight</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">specular_weight</a>; }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">   44</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">GetSpecularExponent</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">specular_exponent</a>; }</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">   45</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">GetSpecularTransparency</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">specular_transparency</a>; }</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"comment\">// TODO: update the material in the API when these are called</span></div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">   48</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">SetMaterialType</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>) { this-&gt;type = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>; }</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">   49</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">SetMaterialFilter</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a>) { this-&gt;filter = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a>; }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">   50</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">SetMaterialProperty</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a>) { this-&gt;<span class=\"keyword\">property</span> = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">property</a>; }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">   51</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">SetColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a>) { this-&gt;color = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a>; }</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">   52</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">SetSpecular</a>(<span class=\"keywordtype\">float</span> weight, <span class=\"keywordtype\">float</span> exponent,  <span class=\"keywordtype\">float</span> transparency) { <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">specular_weight</a> = weight; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">specular_exponent</a> = exponent; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">specular_transparency</a> = transparency; }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">   53</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">SetReflectivity</a>(<span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a>) { this-&gt;reflectivity = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a>; }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">   54</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">SetTextureType</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a>) { this-&gt;texture_type = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a>; }</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">SetSource</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a>) { this-&gt;source = <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a>; }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">MakePattern</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color1, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color2);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">LoadFromMemory</a>();</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">   62</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a>);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">LoadMaterialInfo</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* filename);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">   70</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">texture</a> = {};</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">   71</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">MATERIAL_TEXTURE</a>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">   72</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">filter</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">FILTER_NEAREST</a>;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">   73</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> <span class=\"keyword\">property</span> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">PROPERTY_METAL</a>;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">   74</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">texture_type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">TEXTURE_SAME</a>;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">   76</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">material</a> = {.<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">generic</a> = <span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">   78</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">source</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">   80</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">color</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">   81</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">specular_weight</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">   82</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">specular_exponent</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">   83</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">specular_transparency</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">   84</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">reflectivity</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">   86</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">width</a> = 0;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">   87</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">height</a> = 0;</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">   88</a></span>    uint8_t <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">channels</a> = 0;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">   89</a></span>    uint8_t* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">texture_data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">   90</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">approx_vram_usage</a> = 0;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344\">   92</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a>;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>};</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>}</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_MATERIAL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></div><div class=\"ttdoc\">Material resource.</div><div class=\"ttdef\"><b>Definition:</b> material.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a0106a7e3c671374dcfd7b68b7b363394\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394\">tram::Render::Material::source</a></div><div class=\"ttdeci\">Material * source</div><div class=\"ttdef\"><b>Definition:</b> material.h:78</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a059b96f9b911c30041d21d47ac27cb6f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f\">tram::Render::Material::SetSpecular</a></div><div class=\"ttdeci\">void SetSpecular(float weight, float exponent, float transparency)</div><div class=\"ttdef\"><b>Definition:</b> material.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a0a50eea94634fac18b6a8fc13332f9f5\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5\">tram::Render::Material::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:224</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a0c225923c45cf941c0b3e9d16897411d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d\">tram::Render::Material::GetProperty</a></div><div class=\"ttdeci\">MaterialProperty GetProperty() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a0c43d7ae57a787c8ea3f69341d98be2d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d\">tram::Render::Material::GetColor</a></div><div class=\"ttdeci\">vec3 GetColor() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a0dd09cbb341520b030f16cc4f64a2689\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689\">tram::Render::Material::SetTextureType</a></div><div class=\"ttdeci\">void SetTextureType(TextureType texture_type)</div><div class=\"ttdef\"><b>Definition:</b> material.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a10304337c81204bdcf59fb2ae03e9428\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428\">tram::Render::Material::approx_vram_usage</a></div><div class=\"ttdeci\">size_t approx_vram_usage</div><div class=\"ttdef\"><b>Definition:</b> material.h:90</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a15456a50f775b0b406e376947b71bb04\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04\">tram::Render::Material::SetMaterialProperty</a></div><div class=\"ttdeci\">void SetMaterialProperty(MaterialProperty property)</div><div class=\"ttdef\"><b>Definition:</b> material.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a22ae5b8db7d434e07318cf201defc953\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953\">tram::Render::Material::GetMaterial</a></div><div class=\"ttdeci\">material_t GetMaterial() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a22ce9caef788daf431d1e339fe72423d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d\">tram::Render::Material::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> material.h:80</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a25207b8d6b7c4ed0805a732bc196125e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e\">tram::Render::Material::SetMaterialType</a></div><div class=\"ttdeci\">void SetMaterialType(materialtype_t type)</div><div class=\"ttdef\"><b>Definition:</b> material.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a25c1c97007d7229c7adb8a4e9986e70d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d\">tram::Render::Material::Make</a></div><div class=\"ttdeci\">static Material * Make(name_t name, materialtype_t type)</div><div class=\"ttdoc\">Creates a material.</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:175</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a2ab043c6f5e8a512ac9ca34916b43485\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485\">tram::Render::Material::GetSpecularWeight</a></div><div class=\"ttdeci\">float GetSpecularWeight() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a3006d4a771167841597b0ee169213744\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744\">tram::Render::Material::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdoc\">Pushes material textures to GPU.</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:298</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a37155313cda78e8032afeed80b2dc8bc\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc\">tram::Render::Material::SetMaterialFilter</a></div><div class=\"ttdeci\">void SetMaterialFilter(MaterialFilter filter)</div><div class=\"ttdef\"><b>Definition:</b> material.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a39fdf6cc003568ca64a0b47af65d0cca\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca\">tram::Render::Material::width</a></div><div class=\"ttdeci\">uint32_t width</div><div class=\"ttdef\"><b>Definition:</b> material.h:86</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a3c06e86d3701b7377e4a86f4d6faeaac\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac\">tram::Render::Material::GetWidth</a></div><div class=\"ttdeci\">uint32_t GetWidth() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a4ffa819bc7d2db2bc228ae5649fbf5cd\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd\">tram::Render::Material::GetSpecularTransparency</a></div><div class=\"ttdeci\">float GetSpecularTransparency() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a5174425b4875181d93adc3926d2d7441\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441\">tram::Render::Material::Material</a></div><div class=\"ttdeci\">Material(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> material.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a51a02ef0d56c1cf312bbb92c97087e7b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b\">tram::Render::Material::height</a></div><div class=\"ttdeci\">uint32_t height</div><div class=\"ttdef\"><b>Definition:</b> material.h:87</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a56f47f2d65d43e654d0abf9d104dce3d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d\">tram::Render::Material::texture_data</a></div><div class=\"ttdeci\">uint8_t * texture_data</div><div class=\"ttdef\"><b>Definition:</b> material.h:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a5a6e15bdcaf42aaab5e8553733663037\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037\">tram::Render::Material::texture</a></div><div class=\"ttdeci\">texturehandle_t texture</div><div class=\"ttdef\"><b>Definition:</b> material.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a5d94a73e4b23271686808101fd33211a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a\">tram::Render::Material::LoadMaterialInfo</a></div><div class=\"ttdeci\">static void LoadMaterialInfo(const char *filename)</div><div class=\"ttdoc\">Loads a Material definition file.</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a5eecc16043ab3c30d158f22429c3fd43\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43\">tram::Render::Material::texture_type</a></div><div class=\"ttdeci\">TextureType texture_type</div><div class=\"ttdef\"><b>Definition:</b> material.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a5f29589bc4853e8f7a7b321be58fc51b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b\">tram::Render::Material::SetSource</a></div><div class=\"ttdeci\">void SetSource(Material *source)</div><div class=\"ttdef\"><b>Definition:</b> material.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a7364618a398768519758ff9ffd7b3c4b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b\">tram::Render::Material::GetTexture</a></div><div class=\"ttdeci\">texturehandle_t GetTexture() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a758d1a53191fd27bec22aa269b1edd21\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21\">tram::Render::Material::property</a></div><div class=\"ttdeci\">MaterialProperty property</div><div class=\"ttdef\"><b>Definition:</b> material.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a79794b5c6356b0a4da39a6c9cf468fbc\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc\">tram::Render::Material::Find</a></div><div class=\"ttdeci\">static Material * Find(name_t name)</div><div class=\"ttdoc\">Finds a Material.</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:193</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a840d1b1dc3b84dc2a5b4b7f24e02e8c6\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6\">tram::Render::Material::specular_transparency</a></div><div class=\"ttdeci\">float specular_transparency</div><div class=\"ttdef\"><b>Definition:</b> material.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a8793fc03d8f1a34076f3af8739323a42\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42\">tram::Render::Material::filter</a></div><div class=\"ttdeci\">MaterialFilter filter</div><div class=\"ttdef\"><b>Definition:</b> material.h:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a8bfc4e66a2677349bdd4cec129005d51\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51\">tram::Render::Material::GetSpecularExponent</a></div><div class=\"ttdeci\">float GetSpecularExponent() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a98628ad183a5289b9f6f7a407c9005c0\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0\">tram::Render::Material::GetHeight</a></div><div class=\"ttdeci\">uint32_t GetHeight() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a9ab0ad47f18952f0014e01714435309f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f\">tram::Render::Material::GetType</a></div><div class=\"ttdeci\">materialtype_t GetType() const</div><div class=\"ttdef\"><b>Definition:</b> material.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a9ec5c89d070ff541a3ac8b449524a1be\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be\">tram::Render::Material::SetReflectivity</a></div><div class=\"ttdeci\">void SetReflectivity(float reflectivity)</div><div class=\"ttdef\"><b>Definition:</b> material.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_a9f91bdfa808477343ccdc76aaeb8abd6\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6\">tram::Render::Material::reflectivity</a></div><div class=\"ttdeci\">float reflectivity</div><div class=\"ttdef\"><b>Definition:</b> material.h:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_aa1af831cde7f02d1d9c76c2223638197\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197\">tram::Render::Material::material</a></div><div class=\"ttdeci\">material_t material</div><div class=\"ttdef\"><b>Definition:</b> material.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_aa342a4e570d577fd626ee7999ca2fd2b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b\">tram::Render::Material::channels</a></div><div class=\"ttdeci\">uint8_t channels</div><div class=\"ttdef\"><b>Definition:</b> material.h:88</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_ac450fbb7d4e815d5d84aee35acf40fc8\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8\">tram::Render::Material::SetColor</a></div><div class=\"ttdeci\">void SetColor(color_t color)</div><div class=\"ttdef\"><b>Definition:</b> material.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_ace75dc47785b62f847b18bd282ee140b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b\">tram::Render::Material::specular_exponent</a></div><div class=\"ttdeci\">float specular_exponent</div><div class=\"ttdef\"><b>Definition:</b> material.h:82</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_acf5a270cd06229986d2953ff2b2d9944\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944\">tram::Render::Material::specular_weight</a></div><div class=\"ttdeci\">float specular_weight</div><div class=\"ttdef\"><b>Definition:</b> material.h:81</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_acfdd1c7fb5e2c4057855d2dcf7ee75a7\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7\">tram::Render::Material::MakePattern</a></div><div class=\"ttdeci\">void MakePattern(vec3 color1, vec3 color2)</div><div class=\"ttdoc\">Makes Material a pattern.</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:212</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_adafa815945158f89825308d5286869d2\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2\">tram::Render::Material::type</a></div><div class=\"ttdeci\">materialtype_t type</div><div class=\"ttdef\"><b>Definition:</b> material.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html_aefa2777f79de1882362e0fc50099a46e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e\">tram::Render::Material::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> material.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">tram::Render::MATERIAL_TEXTURE</a></div><div class=\"ttdeci\">@ MATERIAL_TEXTURE</div><div class=\"ttdef\"><b>Definition:</b> render.h:76</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></div><div class=\"ttdeci\">vec3 color_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9be8283c1665f7d42c97367d857d43cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></div><div class=\"ttdeci\">uint32_t materialtype_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">tram::Render::MaterialProperty</a></div><div class=\"ttdeci\">MaterialProperty</div><div class=\"ttdef\"><b>Definition:</b> material.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">tram::Render::PROPERTY_METAL_THIN</a></div><div class=\"ttdeci\">@ PROPERTY_METAL_THIN</div><div class=\"ttdef\"><b>Definition:</b> material.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">tram::Render::PROPERTY_GRATE</a></div><div class=\"ttdeci\">@ PROPERTY_GRATE</div><div class=\"ttdef\"><b>Definition:</b> material.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">tram::Render::PROPERTY_SNOW</a></div><div class=\"ttdeci\">@ PROPERTY_SNOW</div><div class=\"ttdef\"><b>Definition:</b> material.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">tram::Render::PROPERTY_SLIME</a></div><div class=\"ttdeci\">@ PROPERTY_SLIME</div><div class=\"ttdef\"><b>Definition:</b> material.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">tram::Render::PROPERTY_GRASS</a></div><div class=\"ttdeci\">@ PROPERTY_GRASS</div><div class=\"ttdef\"><b>Definition:</b> material.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">tram::Render::PROPERTY_GLASS</a></div><div class=\"ttdeci\">@ PROPERTY_GLASS</div><div class=\"ttdef\"><b>Definition:</b> material.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">tram::Render::PROPERTY_WOOD</a></div><div class=\"ttdeci\">@ PROPERTY_WOOD</div><div class=\"ttdef\"><b>Definition:</b> material.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">tram::Render::PROPERTY_TILE</a></div><div class=\"ttdeci\">@ PROPERTY_TILE</div><div class=\"ttdef\"><b>Definition:</b> material.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">tram::Render::PROPERTY_COMPUTER</a></div><div class=\"ttdeci\">@ PROPERTY_COMPUTER</div><div class=\"ttdef\"><b>Definition:</b> material.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">tram::Render::PROPERTY_CONCRETE</a></div><div class=\"ttdeci\">@ PROPERTY_CONCRETE</div><div class=\"ttdef\"><b>Definition:</b> material.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">tram::Render::PROPERTY_FLESH</a></div><div class=\"ttdeci\">@ PROPERTY_FLESH</div><div class=\"ttdef\"><b>Definition:</b> material.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">tram::Render::PROPERTY_METAL</a></div><div class=\"ttdeci\">@ PROPERTY_METAL</div><div class=\"ttdef\"><b>Definition:</b> material.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aab519c3dc6ead26c1a7695e4c3b5501c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render::MaterialFilter</a></div><div class=\"ttdeci\">MaterialFilter</div><div class=\"ttdef\"><b>Definition:</b> render.h:87</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">tram::Render::FILTER_NEAREST</a></div><div class=\"ttdeci\">@ FILTER_NEAREST</div><div class=\"ttdef\"><b>Definition:</b> render.h:88</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae823e9f58d9c8060a531459eec5ff811\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">tram::Render::TextureType</a></div><div class=\"ttdeci\">TextureType</div><div class=\"ttdef\"><b>Definition:</b> material.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">tram::Render::TEXTURE_SOURCE</a></div><div class=\"ttdeci\">@ TEXTURE_SOURCE</div><div class=\"ttdef\"><b>Definition:</b> material.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">tram::Render::TEXTURE_NONE</a></div><div class=\"ttdeci\">@ TEXTURE_NONE</div><div class=\"ttdef\"><b>Definition:</b> material.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">tram::Render::TEXTURE_SAME</a></div><div class=\"ttdeci\">@ TEXTURE_SAME</div><div class=\"ttdef\"><b>Definition:</b> material.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:186</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html_aa4163a9839bbec7828aab7a0bba5861c\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">tram::Render::material_t::generic</a></div><div class=\"ttdeci\">void * generic</div><div class=\"ttdef\"><b>Definition:</b> render.h:191</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1texturehandle__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:160</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/math_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/math.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">math.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>GLM typedefs and useful math functions.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">tram::QuatLookAt</a> (quat &amp;quaternion, const vec3 &amp;from, const vec3 &amp;to)</td></tr>\n<tr class=\"memdesc:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates a quaternion to face a point.  <a href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">More...</a><br /></td></tr>\n<tr class=\"separator:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">tram::ProjectLine</a> (vec3 &amp;point, const vec3 &amp;from, const vec3 &amp;to)</td></tr>\n<tr class=\"memdesc:afb93166d174dd8e63b4ea02836446b11\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point on a line.  <a href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">More...</a><br /></td></tr>\n<tr class=\"separator:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">tram::RayTriangleIntersection</a> (vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3)</td></tr>\n<tr class=\"memdesc:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the intersection between a ray and a triangle.  <a href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">More...</a><br /></td></tr>\n<tr class=\"separator:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47d29b14ffc788f302abead903c46544\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">tram::MergeAABBMin</a> (vec3 a, vec3 b)</td></tr>\n<tr class=\"memdesc:a47d29b14ffc788f302abead903c46544\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the min component of an AABB.  <a href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">More...</a><br /></td></tr>\n<tr class=\"separator:a47d29b14ffc788f302abead903c46544\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">tram::MergeAABBMax</a> (vec3 a, vec3 b)</td></tr>\n<tr class=\"memdesc:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the max component of an AABB.  <a href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">More...</a><br /></td></tr>\n<tr class=\"separator:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">tram::RotateAABB</a> (vec3 &amp;min, vec3 &amp;max, quat rotation)</td></tr>\n<tr class=\"memdesc:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates an AABB box by the given rotation.  <a href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">More...</a><br /></td></tr>\n<tr class=\"separator:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aecd3454b9944728f9e8beca79fb86a4b\">tram::RotateAABB</a> (vec3 &amp;min, vec3 &amp;max, mat4 rotation)</td></tr>\n<tr class=\"separator:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">tram::PositionRotationToMatrix</a> (const vec3 &amp;position, const quat &amp;rotation)</td></tr>\n<tr class=\"memdesc:ab488668dddf5085ed2f05fef803dba33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">More...</a><br /></td></tr>\n<tr class=\"separator:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">tram::PositionRotationScaleToMatrix</a> (const vec3 &amp;position, const quat &amp;rotation, const vec3 &amp;scale)</td></tr>\n<tr class=\"memdesc:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">More...</a><br /></td></tr>\n<tr class=\"separator:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >GLM typedefs and useful math functions. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/math.html\">https://racenis.github.io/tram-sdk/documentation/framework/math.html</a> </dd></dl>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/math_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/math.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">math.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;glm/glm.hpp&gt;</code><br />\n<code>#include &lt;glm/gtx/quaternion.hpp&gt;</code><br />\n</div>\n<p><a href=\"math_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a632d9fcf54e995edd8c66e25cb7c1891\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></td></tr>\n<tr class=\"separator:a632d9fcf54e995edd8c66e25cb7c1891\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ba8befa39d714232ba6f05ade798893\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::quat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></td></tr>\n<tr class=\"separator:a6ba8befa39d714232ba6f05ade798893\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1449f767374f220889ec5253470ac9d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::mat2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">tram::mat2</a></td></tr>\n<tr class=\"separator:a1449f767374f220889ec5253470ac9d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa105cf31ac2e470934e6b0827a14d942\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></td></tr>\n<tr class=\"separator:aa105cf31ac2e470934e6b0827a14d942\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d95095efd075f601cb4afe9ff24c93b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></td></tr>\n<tr class=\"separator:a1d95095efd075f601cb4afe9ff24c93b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d99e12b9721e0d27d105d40a52bbc49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram::vec2</a></td></tr>\n<tr class=\"separator:a2d99e12b9721e0d27d105d40a52bbc49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a376f6f34fd81bba7071907b5226432f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::ivec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram::ivec3</a></td></tr>\n<tr class=\"separator:a376f6f34fd81bba7071907b5226432f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1632687848b1fc76b67d96646ef5a691\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::ivec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram::ivec4</a></td></tr>\n<tr class=\"separator:a1632687848b1fc76b67d96646ef5a691\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6302de3ebd59f9e8325c9d2f2752b78f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::uvec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">tram::uvec3</a></td></tr>\n<tr class=\"separator:a6302de3ebd59f9e8325c9d2f2752b78f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9bd3cda50ab2180695b6e4bc8bddb74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::uvec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">tram::uvec4</a></td></tr>\n<tr class=\"separator:ac9bd3cda50ab2180695b6e4bc8bddb74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:acc61b04dbad891d3eb08e0b5eb842395\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">tram::DIRECTION_FORWARD</a> (0.0f, 0.0f, -1.0f)</td></tr>\n<tr class=\"separator:acc61b04dbad891d3eb08e0b5eb842395\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03a6f88b2cb4818644b5f1fe7e7e3511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">tram::DIRECTION_SIDE</a> (1.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a03a6f88b2cb4818644b5f1fe7e7e3511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7e1cf0d1d50c4b3afaac5727d3f5680\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">tram::DIRECTION_UP</a> (0.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:ac7e1cf0d1d50c4b3afaac5727d3f5680\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54978c27914521c35127181e9cb0f849\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">tram::IDENTITY_POSITION</a> (0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a54978c27914521c35127181e9cb0f849\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6643f20251af5564678ffc98ef58be9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const quat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">tram::IDENTITY_ROTATION</a> (1.0f, 0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a6643f20251af5564678ffc98ef58be9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aa1af51cd6d3679c00e656d1473cd46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">tram::IDENTITY_SCALE</a> (1.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:a6aa1af51cd6d3679c00e656d1473cd46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">tram::QuatLookAt</a> (quat &amp;quaternion, const vec3 &amp;from, const vec3 &amp;to)</td></tr>\n<tr class=\"memdesc:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates a quaternion to face a point.  <a href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">More...</a><br /></td></tr>\n<tr class=\"separator:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">tram::ProjectLine</a> (vec3 &amp;point, const vec3 &amp;from, const vec3 &amp;to)</td></tr>\n<tr class=\"memdesc:afb93166d174dd8e63b4ea02836446b11\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point on a line.  <a href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">More...</a><br /></td></tr>\n<tr class=\"separator:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">tram::RayTriangleIntersection</a> (vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3)</td></tr>\n<tr class=\"memdesc:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the intersection between a ray and a triangle.  <a href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">More...</a><br /></td></tr>\n<tr class=\"separator:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47d29b14ffc788f302abead903c46544\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">tram::MergeAABBMin</a> (vec3 a, vec3 b)</td></tr>\n<tr class=\"memdesc:a47d29b14ffc788f302abead903c46544\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the min component of an AABB.  <a href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">More...</a><br /></td></tr>\n<tr class=\"separator:a47d29b14ffc788f302abead903c46544\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">tram::MergeAABBMax</a> (vec3 a, vec3 b)</td></tr>\n<tr class=\"memdesc:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the max component of an AABB.  <a href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">More...</a><br /></td></tr>\n<tr class=\"separator:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">tram::RotateAABB</a> (vec3 &amp;min, vec3 &amp;max, quat rotation)</td></tr>\n<tr class=\"memdesc:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates an AABB box by the given rotation.  <a href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">More...</a><br /></td></tr>\n<tr class=\"separator:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aecd3454b9944728f9e8beca79fb86a4b\">tram::RotateAABB</a> (vec3 &amp;min, vec3 &amp;max, mat4 rotation)</td></tr>\n<tr class=\"separator:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">tram::PositionRotationToMatrix</a> (const vec3 &amp;position, const quat &amp;rotation)</td></tr>\n<tr class=\"memdesc:ab488668dddf5085ed2f05fef803dba33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">More...</a><br /></td></tr>\n<tr class=\"separator:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">tram::PositionRotationScaleToMatrix</a> (const vec3 &amp;position, const quat &amp;rotation, const vec3 &amp;scale)</td></tr>\n<tr class=\"memdesc:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">More...</a><br /></td></tr>\n<tr class=\"separator:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/math_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/math.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">math.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"math_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_MATH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_MATH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;glm/glm.hpp&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;glm/gtx/quaternion.hpp&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">   11</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">glm::vec3</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">   12</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">glm::quat</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">   13</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">glm::mat2</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">mat2</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">   14</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">glm::mat4</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">   15</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">glm::vec4</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">   16</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">glm::vec2</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">   17</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">glm::ivec3</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">ivec3</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">   18</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">glm::ivec4</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">   19</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">glm::uvec3</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">uvec3</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">   20</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">glm::uvec4</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">uvec4</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">   22</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">DIRECTION_FORWARD</a>    (0.0f,  0.0f, -1.0f);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">   23</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">DIRECTION_SIDE</a>       (1.0f,  0.0f,  0.0f);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">   24</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">DIRECTION_UP</a>         (0.0f,  1.0f,  0.0f);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">   26</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">IDENTITY_POSITION</a>    (0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">   27</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">IDENTITY_ROTATION</a>    (1.0f, 0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">   28</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">IDENTITY_SCALE</a>       (1.0f, 1.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">QuatLookAt</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&amp; quaternion, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; from, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; to);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">ProjectLine</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; point, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; from, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; to);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">RayTriangleIntersection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point1, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point2, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point3);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">MergeAABBMin</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">MergeAABBMax</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">RotateAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; max, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">RotateAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; max, <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> rotation);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_function\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">PositionRotationToMatrix</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; position, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&amp; rotation);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_function\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">PositionRotationScaleToMatrix</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; position, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&amp; rotation, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; scale);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>}</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_MATH_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a03a6f88b2cb4818644b5f1fe7e7e3511\"><div class=\"ttname\"><a href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">tram::DIRECTION_SIDE</a></div><div class=\"ttdeci\">const vec3 DIRECTION_SIDE(1.0f, 0.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1449f767374f220889ec5253470ac9d9\"><div class=\"ttname\"><a href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">tram::mat2</a></div><div class=\"ttdeci\">glm::mat2 mat2</div><div class=\"ttdef\"><b>Definition:</b> math.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1632687848b1fc76b67d96646ef5a691\"><div class=\"ttname\"><a href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram::ivec4</a></div><div class=\"ttdeci\">glm::ivec4 ivec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2d99e12b9721e0d27d105d40a52bbc49\"><div class=\"ttname\"><a href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram::vec2</a></div><div class=\"ttdeci\">glm::vec2 vec2</div><div class=\"ttdef\"><b>Definition:</b> math.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a376f6f34fd81bba7071907b5226432f9\"><div class=\"ttname\"><a href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram::ivec3</a></div><div class=\"ttdeci\">glm::ivec3 ivec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a47d29b14ffc788f302abead903c46544\"><div class=\"ttname\"><a href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">tram::MergeAABBMin</a></div><div class=\"ttdeci\">vec3 MergeAABBMin(vec3 a, vec3 b)</div><div class=\"ttdoc\">Merges the min component of an AABB.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a54978c27914521c35127181e9cb0f849\"><div class=\"ttname\"><a href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">tram::IDENTITY_POSITION</a></div><div class=\"ttdeci\">const vec3 IDENTITY_POSITION(0.0f, 0.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6302de3ebd59f9e8325c9d2f2752b78f\"><div class=\"ttname\"><a href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">tram::uvec3</a></div><div class=\"ttdeci\">glm::uvec3 uvec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6643f20251af5564678ffc98ef58be9e\"><div class=\"ttname\"><a href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">tram::IDENTITY_ROTATION</a></div><div class=\"ttdeci\">const quat IDENTITY_ROTATION(1.0f, 0.0f, 0.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6aa1af51cd6d3679c00e656d1473cd46\"><div class=\"ttname\"><a href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">tram::IDENTITY_SCALE</a></div><div class=\"ttdeci\">const vec3 IDENTITY_SCALE(1.0f, 1.0f, 1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a709b43407c76d65a5e0e9567d55fb212\"><div class=\"ttname\"><a href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">tram::RayTriangleIntersection</a></div><div class=\"ttdeci\">vec3 RayTriangleIntersection(vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3)</div><div class=\"ttdoc\">Finds the intersection between a ray and a triangle.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:40</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9a9788a262342a3b6cf9b08117faedcf\"><div class=\"ttname\"><a href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">tram::QuatLookAt</a></div><div class=\"ttdeci\">void QuatLookAt(quat &amp;quaternion, const vec3 &amp;from, const vec3 &amp;to)</div><div class=\"ttdoc\">Rotates a quaternion to face a point.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9d150b4b732715b4989afe480bb3ef98\"><div class=\"ttname\"><a href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">tram::PositionRotationScaleToMatrix</a></div><div class=\"ttdeci\">mat4 PositionRotationScaleToMatrix(const vec3 &amp;position, const quat &amp;rotation, const vec3 &amp;scale)</div><div class=\"ttdoc\">Generates a transform matrix.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:161</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ab488668dddf5085ed2f05fef803dba33\"><div class=\"ttname\"><a href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">tram::PositionRotationToMatrix</a></div><div class=\"ttdeci\">mat4 PositionRotationToMatrix(const vec3 &amp;position, const quat &amp;rotation)</div><div class=\"ttdoc\">Generates a transform matrix.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:153</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac7e1cf0d1d50c4b3afaac5727d3f5680\"><div class=\"ttname\"><a href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">tram::DIRECTION_UP</a></div><div class=\"ttdeci\">const vec3 DIRECTION_UP(0.0f, 1.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac9bd3cda50ab2180695b6e4bc8bddb74\"><div class=\"ttname\"><a href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">tram::uvec4</a></div><div class=\"ttdeci\">glm::uvec4 uvec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_acc61b04dbad891d3eb08e0b5eb842395\"><div class=\"ttname\"><a href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">tram::DIRECTION_FORWARD</a></div><div class=\"ttdeci\">const vec3 DIRECTION_FORWARD(0.0f, 0.0f, -1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77ebd7184cb4042cd3f12789f7f6888\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">tram::MergeAABBMax</a></div><div class=\"ttdeci\">vec3 MergeAABBMax(vec3 a, vec3 b)</div><div class=\"ttdoc\">Merges the max component of an AABB.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:88</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ae55bcde03ae63b1ceec8fb99f4416a55\"><div class=\"ttname\"><a href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">tram::RotateAABB</a></div><div class=\"ttdeci\">void RotateAABB(vec3 &amp;min, vec3 &amp;max, quat rotation)</div><div class=\"ttdoc\">Rotates an AABB box by the given rotation.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:100</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_afb93166d174dd8e63b4ea02836446b11\"><div class=\"ttname\"><a href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">tram::ProjectLine</a></div><div class=\"ttdeci\">void ProjectLine(vec3 &amp;point, const vec3 &amp;from, const vec3 &amp;to)</div><div class=\"ttdoc\">Projects a point on a line.</div><div class=\"ttdef\"><b>Definition:</b> math.cpp:26</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu.js",
    "content": "/*\n @licstart  The following is the entire license notice for the JavaScript code in this file.\n\n The MIT License (MIT)\n\n Copyright (C) 1997-2020 by Dimitri van Heesch\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software\n and associated documentation files (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge, publish, distribute,\n sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or\n substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n @licend  The above is the entire license notice for the JavaScript code in this file\n */\nfunction initMenu(relPath,searchEnabled,serverSide,searchPage,search) {\n  function makeTree(data,relPath) {\n    var result='';\n    if ('children' in data) {\n      result+='<ul>';\n      for (var i in data.children) {\n        result+='<li><a href=\"'+relPath+data.children[i].url+'\">'+\n                                data.children[i].text+'</a>'+\n                                makeTree(data.children[i],relPath)+'</li>';\n      }\n      result+='</ul>';\n    }\n    return result;\n  }\n  var searchBox;\n  if (searchEnabled) {\n    if (serverSide) {\n      searchBox='<div id=\"MSearchBox\" class=\"MSearchBoxInactive\">'+\n                 '<div class=\"left\">'+\n                  '<form id=\"FSearchBox\" action=\"'+relPath+searchPage+\n                    '\" method=\"get\"><img id=\"MSearchSelect\" src=\"'+\n                    relPath+'search/mag.svg\" alt=\"\"/>'+\n                  '<input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"'+search+\n                    '\" size=\"20\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\"'+\n                    ' onblur=\"searchBox.OnSearchFieldFocus(false)\">'+\n                  '</form>'+\n                 '</div>'+\n                 '<div class=\"right\"></div>'+\n                '</div>';\n    } else {\n      searchBox='<div id=\"MSearchBox\" class=\"MSearchBoxInactive\">'+\n                 '<span class=\"left\">'+\n                  '<img id=\"MSearchSelect\" src=\"'+relPath+\n                     'search/mag_sel.svg\" onmouseover=\"return searchBox.OnSearchSelectShow()\"'+\n                     ' onmouseout=\"return searchBox.OnSearchSelectHide()\" alt=\"\"/>'+\n                  '<input type=\"text\" id=\"MSearchField\" value=\"'+search+\n                    '\" accesskey=\"S\" onfocus=\"searchBox.OnSearchFieldFocus(true)\" '+\n                    'onblur=\"searchBox.OnSearchFieldFocus(false)\" '+\n                    'onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>'+\n                 '</span>'+\n                 '<span class=\"right\"><a id=\"MSearchClose\" '+\n                  'href=\"javascript:searchBox.CloseResultsWindow()\">'+\n                  '<img id=\"MSearchCloseImg\" border=\"0\" src=\"'+relPath+\n                  'search/close.svg\" alt=\"\"/></a>'\n                 '</span>'\n                '</div>';\n    }\n  }\n\n  $('#main-nav').before('<div class=\"sm sm-dox\"><input id=\"main-menu-state\" type=\"checkbox\"/>'+\n                        '<label class=\"main-menu-btn\" for=\"main-menu-state\">'+\n                        '<span class=\"main-menu-btn-icon\"></span> '+\n                        'Toggle main menu visibility</label>'+\n                        '<span id=\"searchBoxPos1\" style=\"position:absolute;right:8px;top:8px;height:36px;\"></span>'+\n                        '</div>');\n  $('#main-nav').append(makeTree(menudata,relPath));\n  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');\n  if (searchBox) {\n    $('#main-menu').append('<li id=\"searchBoxPos2\" style=\"float:right\"></li>');\n  }\n  var $mainMenuState = $('#main-menu-state');\n  var prevWidth = 0;\n  if ($mainMenuState.length) {\n    function initResizableIfExists() {\n      if (typeof initResizable==='function') initResizable();\n    }\n    // animate mobile menu\n    $mainMenuState.change(function(e) {\n      var $menu = $('#main-menu');\n      var options = { duration: 250, step: initResizableIfExists };\n      if (this.checked) {\n        options['complete'] = function() { $menu.css('display', 'block') };\n        $menu.hide().slideDown(options);\n      } else {\n        options['complete'] = function() { $menu.css('display', 'none') };\n        $menu.show().slideUp(options);\n      }\n    });\n    // set default menu visibility\n    function resetState() {\n      var $menu = $('#main-menu');\n      var $mainMenuState = $('#main-menu-state');\n      var newWidth = $(window).outerWidth();\n      if (newWidth!=prevWidth) {\n        if ($(window).outerWidth()<768) {\n          $mainMenuState.prop('checked',false); $menu.hide();\n          $('#searchBoxPos1').html(searchBox);\n          $('#searchBoxPos2').hide();\n        } else {\n          $menu.show();\n          $('#searchBoxPos1').empty();\n          $('#searchBoxPos2').html(searchBox);\n          $('#searchBoxPos2').show();\n        }\n        prevWidth = newWidth;\n      }\n    }\n    $(window).ready(function() { resetState(); initResizableIfExists(); });\n    $(window).resize(resetState);\n  }\n  $('#main-menu').smartmenus();\n}\n/* @license-end */\n"
  },
  {
    "path": "docs/cppapi/menu_2menu_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stack_8h_source.html\">templates/stack.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"menu_2menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">extensions/menu/debug.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">extensions/menu/system.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> base interface class. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c\">tram::Ext::Menu::ToggleMenuState</a> ()</td></tr>\n<tr class=\"separator:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295\">tram::Ext::Menu::CloseAll</a> ()</td></tr>\n<tr class=\"separator:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a389cad79647a9142bb4683217d94387a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a> ()</td></tr>\n<tr class=\"separator:a389cad79647a9142bb4683217d94387a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a> ()</td></tr>\n<tr class=\"separator:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7\">tram::Ext::Menu::DebugMenue</a> ()</td></tr>\n<tr class=\"separator:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a69fad955abedb48b03076af467f31466\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu::FONT_WIDGETS</a> = 0</td></tr>\n<tr class=\"separator:a69fad955abedb48b03076af467f31466\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu::FONT_TEXT</a> = 0</td></tr>\n<tr class=\"separator:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu::FONT_TEXT_BOLD</a> = 0</td></tr>\n<tr class=\"separator:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu::FONT_HEADER</a> = 0</td></tr>\n<tr class=\"separator:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu::FONT_PIXELART</a> = 0</td></tr>\n<tr class=\"separator:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674\">tram::Ext::Menu::MENU_SYSTEM</a> = -1</td></tr>\n<tr class=\"separator:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97df158550c8ac0179e812214570003b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DebugMenu *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b\">tram::Ext::Menu::debug_menu</a> = nullptr</td></tr>\n<tr class=\"separator:a97df158550c8ac0179e812214570003b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6f40542aa62e171700b1c195770c014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Menu * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014\">tram::Ext::Menu::menu_stack</a></td></tr>\n<tr class=\"separator:ad6f40542aa62e171700b1c195770c014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Menu * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113\">tram::Ext::Menu::menu_list</a></td></tr>\n<tr class=\"separator:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu_2menu_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n</div>\n<p><a href=\"menu_2menu_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a389cad79647a9142bb4683217d94387a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a> ()</td></tr>\n<tr class=\"separator:a389cad79647a9142bb4683217d94387a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a> ()</td></tr>\n<tr class=\"separator:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu_2menu_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">menu.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"menu_2menu_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_MENU_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_MENU_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"gui_8h.html\">framework/gui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">FONT_WIDGETS</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">FONT_TEXT</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">FONT_TEXT_BOLD</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">FONT_HEADER</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">FONT_PIXELART</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">   19</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">   21</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">Display</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">   22</a></span>    <span class=\"keyword\">virtual</span> uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">Layer</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">   23</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>();</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a06f962abc8aeb9e7782cbd637d56f0fd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">tram::Ext::Menu::Menu::Pop</a></div><div class=\"ttdeci\">static bool Pop()</div><div class=\"ttdoc\">Pops the topmost menu from the stack.</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:178</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a172b7acc126ab25cbbb7162c7ae75f19\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">tram::Ext::Menu::Menu::Clear</a></div><div class=\"ttdeci\">static void Clear()</div><div class=\"ttdoc\">Clears the menu stack.</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:203</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a1daec0fd40b63b2ebedbbc99dee5cb80\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">tram::Ext::Menu::Menu::Add</a></div><div class=\"ttdeci\">static void Add(Menu *)</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:211</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a4661c15d6f311be1f7957a4e0ab28305\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">tram::Ext::Menu::Menu::~Menu</a></div><div class=\"ttdeci\">virtual ~Menu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a8dc18857f173b127ee34a3fd65306d9f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">tram::Ext::Menu::Menu::Empty</a></div><div class=\"ttdeci\">static bool Empty()</div><div class=\"ttdoc\">Checks whether the menu stack is empty.</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:195</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a972ff0163ab4ebc7d8acacce5d09a921\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu::Layer</a></div><div class=\"ttdeci\">virtual uint32_t Layer()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a99db3585e61c0c71f99ef8637edce775\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu::Display</a></div><div class=\"ttdeci\">virtual void Display()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_aa9d042bb7757a4a95a634582c36eb7db\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">tram::Ext::Menu::Menu::Remove</a></div><div class=\"ttdeci\">static void Remove(Menu *)</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:217</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_afaf4c154f0f256b684b9ca9a7d7f057f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">tram::Ext::Menu::Menu::Push</a></div><div class=\"ttdeci\">static void Push(Menu *)</div><div class=\"ttdoc\">Pushes menu on the menu stack.</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:167</div></div>\n<div class=\"ttc\" id=\"agui_8h_html\"><div class=\"ttname\"><a href=\"gui_8h.html\">gui.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></div><div class=\"ttdoc\">Menu framework.</div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a19b646bf9a31f4080201096d7c78b468\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu::FONT_PIXELART</a></div><div class=\"ttdeci\">font_t FONT_PIXELART</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:59</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a389cad79647a9142bb4683217d94387a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a69fad955abedb48b03076af467f31466\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu::FONT_WIDGETS</a></div><div class=\"ttdeci\">font_t FONT_WIDGETS</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:55</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a8fba4d434da7bccc5f0a79b97f45301a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu::FONT_TEXT</a></div><div class=\"ttdeci\">font_t FONT_TEXT</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:56</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_ac48d19ee29fc32e75b0c11bf85004bd3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu::FONT_TEXT_BOLD</a></div><div class=\"ttdeci\">font_t FONT_TEXT_BOLD</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:57</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_ae5c12ef1b6e9e1cc0ee542e6296e9057\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:143</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_afb19d70c23fefc9206a68b19238f0361\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu::FONT_HEADER</a></div><div class=\"ttdeci\">font_t FONT_HEADER</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:58</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_ad72e4051d38000777cac376d29fc18a1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></div><div class=\"ttdeci\">uint32_t font_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:14</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stack_8h_source.html\">templates/stack.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"menu_8h_source.html\">extensions/menu/menu.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"debug_8h_source.html\">extensions/menu/debug.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"extensions_2menu_2system_8h_source.html\">extensions/menu/system.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c\">tram::Ext::Menu::ToggleMenuState</a> ()</td></tr>\n<tr class=\"separator:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295\">tram::Ext::Menu::CloseAll</a> ()</td></tr>\n<tr class=\"separator:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c06301a48f18c53f4d84e8ee0883d57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8c06301a48f18c53f4d84e8ee0883d57\">tram::Ext::Menu::EscapeMenuKeyboard</a> ()</td></tr>\n<tr class=\"separator:a8c06301a48f18c53f4d84e8ee0883d57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af899280914d0163b4c6d526464a5ef71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#af899280914d0163b4c6d526464a5ef71\">tram::Ext::Menu::DebugMenuKeyboard</a> ()</td></tr>\n<tr class=\"separator:af899280914d0163b4c6d526464a5ef71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a389cad79647a9142bb4683217d94387a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a> ()</td></tr>\n<tr class=\"separator:a389cad79647a9142bb4683217d94387a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a> ()</td></tr>\n<tr class=\"separator:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7\">tram::Ext::Menu::DebugMenue</a> ()</td></tr>\n<tr class=\"separator:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a69fad955abedb48b03076af467f31466\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu::FONT_WIDGETS</a> = 0</td></tr>\n<tr class=\"separator:a69fad955abedb48b03076af467f31466\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu::FONT_TEXT</a> = 0</td></tr>\n<tr class=\"separator:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu::FONT_TEXT_BOLD</a> = 0</td></tr>\n<tr class=\"separator:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu::FONT_HEADER</a> = 0</td></tr>\n<tr class=\"separator:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu::FONT_PIXELART</a> = 0</td></tr>\n<tr class=\"separator:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674\">tram::Ext::Menu::MENU_SYSTEM</a> = -1</td></tr>\n<tr class=\"separator:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97df158550c8ac0179e812214570003b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DebugMenu *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b\">tram::Ext::Menu::debug_menu</a> = nullptr</td></tr>\n<tr class=\"separator:a97df158550c8ac0179e812214570003b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6f40542aa62e171700b1c195770c014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Menu * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014\">tram::Ext::Menu::menu_stack</a></td></tr>\n<tr class=\"separator:ad6f40542aa62e171700b1c195770c014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Menu * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113\">tram::Ext::Menu::menu_list</a></td></tr>\n<tr class=\"separator:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">menu.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n</div>\n<p><a href=\"menu_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a389cad79647a9142bb4683217d94387a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a> ()</td></tr>\n<tr class=\"separator:a389cad79647a9142bb4683217d94387a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a> ()</td></tr>\n<tr class=\"separator:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menu_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/menu.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_725e1c32b4e378f03d60abea9fea9d5a.html\">menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">menu.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"menu_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_MENU_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_MENU_MENU_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"gui_8h.html\">framework/gui.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">FONT_WIDGETS</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">FONT_TEXT</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">FONT_TEXT_BOLD</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">FONT_HEADER</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">extern</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">FONT_PIXELART</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">   20</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">   22</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">Display</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">   23</a></span>    <span class=\"keyword\">virtual</span> uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">Layer</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">   24</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">~Menu</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">Push</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">Pop</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">Empty</a>();</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">Clear</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">Add</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">Remove</a>(<a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>};</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>}</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">tram::Ext::Menu::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> menu.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a06f962abc8aeb9e7782cbd637d56f0fd\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd\">tram::Ext::Menu::Menu::Pop</a></div><div class=\"ttdeci\">static bool Pop()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:168</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a172b7acc126ab25cbbb7162c7ae75f19\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19\">tram::Ext::Menu::Menu::Clear</a></div><div class=\"ttdeci\">static void Clear()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:182</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a1daec0fd40b63b2ebedbbc99dee5cb80\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80\">tram::Ext::Menu::Menu::Add</a></div><div class=\"ttdeci\">static void Add(Menu *)</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:189</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a4661c15d6f311be1f7957a4e0ab28305\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305\">tram::Ext::Menu::Menu::~Menu</a></div><div class=\"ttdeci\">virtual ~Menu()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a8dc18857f173b127ee34a3fd65306d9f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f\">tram::Ext::Menu::Menu::Empty</a></div><div class=\"ttdeci\">static bool Empty()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:178</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a972ff0163ab4ebc7d8acacce5d09a921\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">tram::Ext::Menu::Menu::Layer</a></div><div class=\"ttdeci\">virtual uint32_t Layer()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_a99db3585e61c0c71f99ef8637edce775\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">tram::Ext::Menu::Menu::Display</a></div><div class=\"ttdeci\">virtual void Display()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_aa9d042bb7757a4a95a634582c36eb7db\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db\">tram::Ext::Menu::Menu::Remove</a></div><div class=\"ttdeci\">static void Remove(Menu *)</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:193</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_menu_1_1_menu_html_afaf4c154f0f256b684b9ca9a7d7f057f\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\">tram::Ext::Menu::Menu::Push</a></div><div class=\"ttdeci\">static void Push(Menu *)</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:163</div></div>\n<div class=\"ttc\" id=\"agui_8h_html\"><div class=\"ttname\"><a href=\"gui_8h.html\">gui.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html\">tram::Ext::Menu</a></div><div class=\"ttdef\"><b>Definition:</b> debug.cpp:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a19b646bf9a31f4080201096d7c78b468\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu::FONT_PIXELART</a></div><div class=\"ttdeci\">font_t FONT_PIXELART</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a389cad79647a9142bb4683217d94387a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a69fad955abedb48b03076af467f31466\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu::FONT_WIDGETS</a></div><div class=\"ttdeci\">font_t FONT_WIDGETS</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_a8fba4d434da7bccc5f0a79b97f45301a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu::FONT_TEXT</a></div><div class=\"ttdeci\">font_t FONT_TEXT</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_ac48d19ee29fc32e75b0c11bf85004bd3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu::FONT_TEXT_BOLD</a></div><div class=\"ttdeci\">font_t FONT_TEXT_BOLD</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_ae5c12ef1b6e9e1cc0ee542e6296e9057\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:134</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_menu_html_afb19d70c23fefc9206a68b19238f0361\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu::FONT_HEADER</a></div><div class=\"ttdeci\">font_t FONT_HEADER</div><div class=\"ttdef\"><b>Definition:</b> menu.cpp:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_g_u_i_html_ad72e4051d38000777cac376d29fc18a1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></div><div class=\"ttdeci\">uint32_t font_t</div><div class=\"ttdef\"><b>Definition:</b> gui.h:15</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/menudata.js",
    "content": "/*\n @licstart  The following is the entire license notice for the JavaScript code in this file.\n\n The MIT License (MIT)\n\n Copyright (C) 1997-2020 by Dimitri van Heesch\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software\n and associated documentation files (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge, publish, distribute,\n sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or\n substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n @licend  The above is the entire license notice for the JavaScript code in this file\n*/\nvar menudata={children:[\n{text:\"Main Page\",url:\"index.html\"},\n{text:\"Related Pages\",url:\"pages.html\"},\n{text:\"Namespaces\",url:\"namespaces.html\",children:[\n{text:\"Namespace List\",url:\"namespaces.html\"},\n{text:\"Namespace Members\",url:\"namespacemembers.html\",children:[\n{text:\"All\",url:\"namespacemembers.html\",children:[\n{text:\"a\",url:\"namespacemembers.html#index_a\"},\n{text:\"b\",url:\"namespacemembers_b.html#index_b\"},\n{text:\"c\",url:\"namespacemembers_c.html#index_c\"},\n{text:\"d\",url:\"namespacemembers_d.html#index_d\"},\n{text:\"e\",url:\"namespacemembers_e.html#index_e\"},\n{text:\"f\",url:\"namespacemembers_f.html#index_f\"},\n{text:\"g\",url:\"namespacemembers_g.html#index_g\"},\n{text:\"h\",url:\"namespacemembers_h.html#index_h\"},\n{text:\"i\",url:\"namespacemembers_i.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_k.html#index_k\"},\n{text:\"l\",url:\"namespacemembers_l.html#index_l\"},\n{text:\"m\",url:\"namespacemembers_m.html#index_m\"},\n{text:\"n\",url:\"namespacemembers_n.html#index_n\"},\n{text:\"o\",url:\"namespacemembers_o.html#index_o\"},\n{text:\"p\",url:\"namespacemembers_p.html#index_p\"},\n{text:\"q\",url:\"namespacemembers_q.html#index_q\"},\n{text:\"r\",url:\"namespacemembers_r.html#index_r\"},\n{text:\"s\",url:\"namespacemembers_s.html#index_s\"},\n{text:\"t\",url:\"namespacemembers_t.html#index_t\"},\n{text:\"u\",url:\"namespacemembers_u.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_v.html#index_v\"},\n{text:\"w\",url:\"namespacemembers_w.html#index_w\"},\n{text:\"y\",url:\"namespacemembers_y.html#index_y\"}]},\n{text:\"Functions\",url:\"namespacemembers_func.html\",children:[\n{text:\"a\",url:\"namespacemembers_func.html#index_a\"},\n{text:\"b\",url:\"namespacemembers_func_b.html#index_b\"},\n{text:\"c\",url:\"namespacemembers_func_c.html#index_c\"},\n{text:\"d\",url:\"namespacemembers_func_d.html#index_d\"},\n{text:\"e\",url:\"namespacemembers_func_e.html#index_e\"},\n{text:\"f\",url:\"namespacemembers_func_f.html#index_f\"},\n{text:\"g\",url:\"namespacemembers_func_g.html#index_g\"},\n{text:\"h\",url:\"namespacemembers_func_h.html#index_h\"},\n{text:\"i\",url:\"namespacemembers_func_i.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_func_k.html#index_k\"},\n{text:\"l\",url:\"namespacemembers_func_l.html#index_l\"},\n{text:\"m\",url:\"namespacemembers_func_m.html#index_m\"},\n{text:\"n\",url:\"namespacemembers_func_n.html#index_n\"},\n{text:\"p\",url:\"namespacemembers_func_p.html#index_p\"},\n{text:\"q\",url:\"namespacemembers_func_q.html#index_q\"},\n{text:\"r\",url:\"namespacemembers_func_r.html#index_r\"},\n{text:\"s\",url:\"namespacemembers_func_s.html#index_s\"},\n{text:\"t\",url:\"namespacemembers_func_t.html#index_t\"},\n{text:\"u\",url:\"namespacemembers_func_u.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_func_v.html#index_v\"},\n{text:\"y\",url:\"namespacemembers_func_y.html#index_y\"}]},\n{text:\"Variables\",url:\"namespacemembers_vars.html\",children:[\n{text:\"a\",url:\"namespacemembers_vars.html#index_a\"},\n{text:\"b\",url:\"namespacemembers_vars.html#index_b\"},\n{text:\"c\",url:\"namespacemembers_vars.html#index_c\"},\n{text:\"d\",url:\"namespacemembers_vars.html#index_d\"},\n{text:\"e\",url:\"namespacemembers_vars.html#index_e\"},\n{text:\"f\",url:\"namespacemembers_vars.html#index_f\"},\n{text:\"h\",url:\"namespacemembers_vars.html#index_h\"},\n{text:\"i\",url:\"namespacemembers_vars.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_vars.html#index_k\"},\n{text:\"l\",url:\"namespacemembers_vars.html#index_l\"},\n{text:\"m\",url:\"namespacemembers_vars.html#index_m\"},\n{text:\"n\",url:\"namespacemembers_vars.html#index_n\"},\n{text:\"o\",url:\"namespacemembers_vars.html#index_o\"},\n{text:\"p\",url:\"namespacemembers_vars.html#index_p\"},\n{text:\"r\",url:\"namespacemembers_vars.html#index_r\"},\n{text:\"s\",url:\"namespacemembers_vars.html#index_s\"},\n{text:\"t\",url:\"namespacemembers_vars.html#index_t\"},\n{text:\"u\",url:\"namespacemembers_vars.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_vars.html#index_v\"},\n{text:\"w\",url:\"namespacemembers_vars.html#index_w\"}]},\n{text:\"Typedefs\",url:\"namespacemembers_type.html\",children:[\n{text:\"a\",url:\"namespacemembers_type.html#index_a\"},\n{text:\"c\",url:\"namespacemembers_type.html#index_c\"},\n{text:\"e\",url:\"namespacemembers_type.html#index_e\"},\n{text:\"f\",url:\"namespacemembers_type.html#index_f\"},\n{text:\"g\",url:\"namespacemembers_type.html#index_g\"},\n{text:\"i\",url:\"namespacemembers_type.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_type.html#index_k\"},\n{text:\"l\",url:\"namespacemembers_type.html#index_l\"},\n{text:\"m\",url:\"namespacemembers_type.html#index_m\"},\n{text:\"n\",url:\"namespacemembers_type.html#index_n\"},\n{text:\"p\",url:\"namespacemembers_type.html#index_p\"},\n{text:\"q\",url:\"namespacemembers_type.html#index_q\"},\n{text:\"s\",url:\"namespacemembers_type.html#index_s\"},\n{text:\"u\",url:\"namespacemembers_type.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_type.html#index_v\"}]},\n{text:\"Enumerations\",url:\"namespacemembers_enum.html\",children:[\n{text:\"a\",url:\"namespacemembers_enum.html#index_a\"},\n{text:\"c\",url:\"namespacemembers_enum.html#index_c\"},\n{text:\"d\",url:\"namespacemembers_enum.html#index_d\"},\n{text:\"f\",url:\"namespacemembers_enum.html#index_f\"},\n{text:\"g\",url:\"namespacemembers_enum.html#index_g\"},\n{text:\"i\",url:\"namespacemembers_enum.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_enum.html#index_k\"},\n{text:\"m\",url:\"namespacemembers_enum.html#index_m\"},\n{text:\"o\",url:\"namespacemembers_enum.html#index_o\"},\n{text:\"p\",url:\"namespacemembers_enum.html#index_p\"},\n{text:\"q\",url:\"namespacemembers_enum.html#index_q\"},\n{text:\"r\",url:\"namespacemembers_enum.html#index_r\"},\n{text:\"s\",url:\"namespacemembers_enum.html#index_s\"},\n{text:\"t\",url:\"namespacemembers_enum.html#index_t\"},\n{text:\"u\",url:\"namespacemembers_enum.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_enum.html#index_v\"},\n{text:\"w\",url:\"namespacemembers_enum.html#index_w\"}]},\n{text:\"Enumerator\",url:\"namespacemembers_eval.html\",children:[\n{text:\"a\",url:\"namespacemembers_eval.html#index_a\"},\n{text:\"b\",url:\"namespacemembers_eval_b.html#index_b\"},\n{text:\"c\",url:\"namespacemembers_eval_c.html#index_c\"},\n{text:\"d\",url:\"namespacemembers_eval_d.html#index_d\"},\n{text:\"e\",url:\"namespacemembers_eval_e.html#index_e\"},\n{text:\"f\",url:\"namespacemembers_eval_f.html#index_f\"},\n{text:\"g\",url:\"namespacemembers_eval_g.html#index_g\"},\n{text:\"i\",url:\"namespacemembers_eval_i.html#index_i\"},\n{text:\"k\",url:\"namespacemembers_eval_k.html#index_k\"},\n{text:\"l\",url:\"namespacemembers_eval_l.html#index_l\"},\n{text:\"m\",url:\"namespacemembers_eval_m.html#index_m\"},\n{text:\"n\",url:\"namespacemembers_eval_n.html#index_n\"},\n{text:\"p\",url:\"namespacemembers_eval_p.html#index_p\"},\n{text:\"q\",url:\"namespacemembers_eval_q.html#index_q\"},\n{text:\"r\",url:\"namespacemembers_eval_r.html#index_r\"},\n{text:\"s\",url:\"namespacemembers_eval_s.html#index_s\"},\n{text:\"t\",url:\"namespacemembers_eval_t.html#index_t\"},\n{text:\"u\",url:\"namespacemembers_eval_u.html#index_u\"},\n{text:\"v\",url:\"namespacemembers_eval_v.html#index_v\"},\n{text:\"w\",url:\"namespacemembers_eval_w.html#index_w\"},\n{text:\"y\",url:\"namespacemembers_eval_y.html#index_y\"}]}]}]},\n{text:\"Classes\",url:\"annotated.html\",children:[\n{text:\"Class List\",url:\"annotated.html\"},\n{text:\"Class Index\",url:\"classes.html\"},\n{text:\"Class Hierarchy\",url:\"hierarchy.html\"},\n{text:\"Class Members\",url:\"functions.html\",children:[\n{text:\"All\",url:\"functions.html\",children:[\n{text:\"a\",url:\"functions.html#index_a\"},\n{text:\"b\",url:\"functions_b.html#index_b\"},\n{text:\"c\",url:\"functions_c.html#index_c\"},\n{text:\"d\",url:\"functions_d.html#index_d\"},\n{text:\"e\",url:\"functions_e.html#index_e\"},\n{text:\"f\",url:\"functions_f.html#index_f\"},\n{text:\"g\",url:\"functions_g.html#index_g\"},\n{text:\"h\",url:\"functions_h.html#index_h\"},\n{text:\"i\",url:\"functions_i.html#index_i\"},\n{text:\"j\",url:\"functions_j.html#index_j\"},\n{text:\"k\",url:\"functions_k.html#index_k\"},\n{text:\"l\",url:\"functions_l.html#index_l\"},\n{text:\"m\",url:\"functions_m.html#index_m\"},\n{text:\"n\",url:\"functions_n.html#index_n\"},\n{text:\"o\",url:\"functions_o.html#index_o\"},\n{text:\"p\",url:\"functions_p.html#index_p\"},\n{text:\"q\",url:\"functions_q.html#index_q\"},\n{text:\"r\",url:\"functions_r.html#index_r\"},\n{text:\"s\",url:\"functions_s.html#index_s\"},\n{text:\"t\",url:\"functions_t.html#index_t\"},\n{text:\"u\",url:\"functions_u.html#index_u\"},\n{text:\"v\",url:\"functions_v.html#index_v\"},\n{text:\"w\",url:\"functions_w.html#index_w\"},\n{text:\"x\",url:\"functions_x.html#index_x\"},\n{text:\"y\",url:\"functions_y.html#index_y\"},\n{text:\"~\",url:\"functions_~.html#index__7E\"}]},\n{text:\"Functions\",url:\"functions_func.html\",children:[\n{text:\"a\",url:\"functions_func.html#index_a\"},\n{text:\"b\",url:\"functions_func_b.html#index_b\"},\n{text:\"c\",url:\"functions_func_c.html#index_c\"},\n{text:\"d\",url:\"functions_func_d.html#index_d\"},\n{text:\"e\",url:\"functions_func_e.html#index_e\"},\n{text:\"f\",url:\"functions_func_f.html#index_f\"},\n{text:\"g\",url:\"functions_func_g.html#index_g\"},\n{text:\"h\",url:\"functions_func_h.html#index_h\"},\n{text:\"i\",url:\"functions_func_i.html#index_i\"},\n{text:\"j\",url:\"functions_func_j.html#index_j\"},\n{text:\"l\",url:\"functions_func_l.html#index_l\"},\n{text:\"m\",url:\"functions_func_m.html#index_m\"},\n{text:\"n\",url:\"functions_func_n.html#index_n\"},\n{text:\"o\",url:\"functions_func_o.html#index_o\"},\n{text:\"p\",url:\"functions_func_p.html#index_p\"},\n{text:\"q\",url:\"functions_func_q.html#index_q\"},\n{text:\"r\",url:\"functions_func_r.html#index_r\"},\n{text:\"s\",url:\"functions_func_s.html#index_s\"},\n{text:\"t\",url:\"functions_func_t.html#index_t\"},\n{text:\"u\",url:\"functions_func_u.html#index_u\"},\n{text:\"v\",url:\"functions_func_v.html#index_v\"},\n{text:\"w\",url:\"functions_func_w.html#index_w\"},\n{text:\"y\",url:\"functions_func_y.html#index_y\"},\n{text:\"~\",url:\"functions_func_~.html#index__7E\"}]},\n{text:\"Variables\",url:\"functions_vars.html\",children:[\n{text:\"a\",url:\"functions_vars.html#index_a\"},\n{text:\"b\",url:\"functions_vars_b.html#index_b\"},\n{text:\"c\",url:\"functions_vars_c.html#index_c\"},\n{text:\"d\",url:\"functions_vars_d.html#index_d\"},\n{text:\"e\",url:\"functions_vars_e.html#index_e\"},\n{text:\"f\",url:\"functions_vars_f.html#index_f\"},\n{text:\"g\",url:\"functions_vars_g.html#index_g\"},\n{text:\"h\",url:\"functions_vars_h.html#index_h\"},\n{text:\"i\",url:\"functions_vars_i.html#index_i\"},\n{text:\"j\",url:\"functions_vars_j.html#index_j\"},\n{text:\"k\",url:\"functions_vars_k.html#index_k\"},\n{text:\"l\",url:\"functions_vars_l.html#index_l\"},\n{text:\"m\",url:\"functions_vars_m.html#index_m\"},\n{text:\"n\",url:\"functions_vars_n.html#index_n\"},\n{text:\"o\",url:\"functions_vars_o.html#index_o\"},\n{text:\"p\",url:\"functions_vars_p.html#index_p\"},\n{text:\"q\",url:\"functions_vars_q.html#index_q\"},\n{text:\"r\",url:\"functions_vars_r.html#index_r\"},\n{text:\"s\",url:\"functions_vars_s.html#index_s\"},\n{text:\"t\",url:\"functions_vars_t.html#index_t\"},\n{text:\"u\",url:\"functions_vars_u.html#index_u\"},\n{text:\"v\",url:\"functions_vars_v.html#index_v\"},\n{text:\"w\",url:\"functions_vars_w.html#index_w\"},\n{text:\"x\",url:\"functions_vars_x.html#index_x\"},\n{text:\"y\",url:\"functions_vars_y.html#index_y\"}]},\n{text:\"Enumerations\",url:\"functions_enum.html\"},\n{text:\"Enumerator\",url:\"functions_eval.html\",children:[\n{text:\"a\",url:\"functions_eval.html#index_a\"},\n{text:\"b\",url:\"functions_eval.html#index_b\"},\n{text:\"c\",url:\"functions_eval.html#index_c\"},\n{text:\"d\",url:\"functions_eval.html#index_d\"},\n{text:\"e\",url:\"functions_eval.html#index_e\"},\n{text:\"f\",url:\"functions_eval.html#index_f\"},\n{text:\"i\",url:\"functions_eval.html#index_i\"},\n{text:\"k\",url:\"functions_eval.html#index_k\"},\n{text:\"l\",url:\"functions_eval.html#index_l\"},\n{text:\"m\",url:\"functions_eval.html#index_m\"},\n{text:\"n\",url:\"functions_eval.html#index_n\"},\n{text:\"o\",url:\"functions_eval.html#index_o\"},\n{text:\"p\",url:\"functions_eval.html#index_p\"},\n{text:\"r\",url:\"functions_eval.html#index_r\"},\n{text:\"s\",url:\"functions_eval.html#index_s\"},\n{text:\"t\",url:\"functions_eval.html#index_t\"},\n{text:\"u\",url:\"functions_eval.html#index_u\"},\n{text:\"w\",url:\"functions_eval.html#index_w\"}]},\n{text:\"Related Functions\",url:\"functions_rela.html\"}]}]},\n{text:\"Files\",url:\"files.html\",children:[\n{text:\"File List\",url:\"files.html\"},\n{text:\"File Members\",url:\"globals.html\",children:[\n{text:\"All\",url:\"globals.html\",children:[\n{text:\"a\",url:\"globals.html#index_a\"},\n{text:\"b\",url:\"globals.html#index_b\"},\n{text:\"c\",url:\"globals.html#index_c\"},\n{text:\"d\",url:\"globals.html#index_d\"},\n{text:\"e\",url:\"globals.html#index_e\"},\n{text:\"f\",url:\"globals.html#index_f\"},\n{text:\"i\",url:\"globals.html#index_i\"},\n{text:\"l\",url:\"globals.html#index_l\"},\n{text:\"m\",url:\"globals.html#index_m\"},\n{text:\"p\",url:\"globals.html#index_p\"},\n{text:\"r\",url:\"globals.html#index_r\"},\n{text:\"s\",url:\"globals.html#index_s\"},\n{text:\"t\",url:\"globals.html#index_t\"}]},\n{text:\"Functions\",url:\"globals_func.html\"},\n{text:\"Variables\",url:\"globals_vars.html\"},\n{text:\"Macros\",url:\"globals_defs.html\"}]}]}]}\n"
  },
  {
    "path": "docs/cppapi/message_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/message.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">message.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"queue_8h_source.html\">templates/queue.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">templates/stackpool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;queue&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/message_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/message.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">message.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"message_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data.  <a href=\"structtram_1_1_message.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a2d629e975ff280fbd5d11c40edb519f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram::message_t</a></td></tr>\n<tr class=\"separator:a2d629e975ff280fbd5d11c40edb519f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/message_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/message.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">message.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"message_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_MESSAGE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_MESSAGE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">   10</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">struct </span><a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html\">   16</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">   17</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">Type</a> : <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">   18</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">NONE</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">   19</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">PING</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">   20</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">MOVE_PICK_UP</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">   21</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">OPEN</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">   22</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">CLOSE</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">   23</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">LOCK</a>,</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">   24</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">UNLOCK</a>,</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">   25</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">TOGGLE</a>,</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">   26</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">KILL</a>,</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">   27</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">TRIGGER</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">   28</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">START</a>,</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">   29</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">STOP</a>,</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">   30</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">ACTIVATE</a>,</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">   31</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">ACTIVATE_ONCE</a>,</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">   32</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">SELECT</a>,</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">   33</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">SET_PROGRESS</a>,</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">   34</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">SET_ANIMATION</a>,</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">   35</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">SET_FLAG_ON</a>,</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">   36</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">SET_FLAG_OFF</a>,</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">LAST_MESSAGE</a></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">   38</a></span>    };</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">Register</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">GetType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">GetName</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a>);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">GetLast</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">Send</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; message);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">Send</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; message, <span class=\"keywordtype\">float</span> delay);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">Dispatch</a>();</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span>* <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">AllocateData</a>(<span class=\"keywordtype\">size_t</span> ammount);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">   49</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">static</span> T* <a class=\"code hl_function\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">AllocateData</a>() { <span class=\"keywordflow\">return</span> (T*)<a class=\"code hl_function\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">AllocateData</a>(<span class=\"keyword\">sizeof</span>(T)); }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">   50</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">static</span> T* <a class=\"code hl_function\" href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">AllocateData</a>(<span class=\"keyword\">const</span> T&amp; <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a>) { T* ptr = (T*)<a class=\"code hl_function\" href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">AllocateData</a>(<span class=\"keyword\">sizeof</span>(T)); *ptr = <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a>; <span class=\"keywordflow\">return</span> ptr; }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">SetInterceptCallback</a>(<span class=\"keywordtype\">void</span>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp;));</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">   53</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">   54</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">sender</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">   55</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">receiver</a>;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">   58</a></span>        <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">   59</a></span>        int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">data_int</a>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">   60</a></span>        <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">data_value</a>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    };</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>};</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>}</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_MESSAGE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2d629e975ff280fbd5d11c40edb519f0\"><div class=\"ttname\"><a href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram::message_t</a></div><div class=\"ttdeci\">uint32_t message_t</div><div class=\"ttdef\"><b>Definition:</b> message.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7d506d80abf93dd017a92dbcb169f9c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></div><div class=\"ttdeci\">Value value_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a0f822eec485aa46e9c93e9445526c8c1\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">tram::Message::type</a></div><div class=\"ttdeci\">message_t type</div><div class=\"ttdoc\">Type of the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a19be3fd1d26c56de4fcd721376b39c90\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">tram::Message::GetLast</a></div><div class=\"ttdeci\">static message_t GetLast()</div><div class=\"ttdoc\">Returns the last message_t plus one.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:147</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a1d8a1a38aac71f1a0725b52ce898b7b1\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">tram::Message::receiver</a></div><div class=\"ttdeci\">id_t receiver</div><div class=\"ttdoc\">ID of the Entity that will receive the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a28e9498ff0a7bb62e84f2a6c2589fa94\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">tram::Message::sender</a></div><div class=\"ttdeci\">id_t sender</div><div class=\"ttdoc\">ID of the Entity that sent the message.</div><div class=\"ttdef\"><b>Definition:</b> message.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a404d077230b30357e8f515ee5b93149a\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">tram::Message::Register</a></div><div class=\"ttdeci\">static message_t Register(const char *name)</div><div class=\"ttdoc\">Registers a new message type.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:96</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a4c7116e2921062b636dbf57a152046a8\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">tram::Message::Send</a></div><div class=\"ttdeci\">static void Send(const Message &amp;message)</div><div class=\"ttdoc\">Sends a message.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:180</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_a944e18391daa913fad2807ba33463a8e\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">tram::Message::AllocateData</a></div><div class=\"ttdeci\">static T * AllocateData()</div><div class=\"ttdef\"><b>Definition:</b> message.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_aa148e227c8da865e87f8122c0f4ab41a\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">tram::Message::Dispatch</a></div><div class=\"ttdeci\">static void Dispatch()</div><div class=\"ttdoc\">Dispatches sent messsages.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:153</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_aa694cba3fcc077563b3d47e36a818494\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">tram::Message::data_int</a></div><div class=\"ttdeci\">int32_t data_int</div><div class=\"ttdoc\">Arbitrary data integer.</div><div class=\"ttdef\"><b>Definition:</b> message.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_abc663230fe9deda62a6b1da94d65b90b\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">tram::Message::AllocateData</a></div><div class=\"ttdeci\">static T * AllocateData(const T &amp;data)</div><div class=\"ttdef\"><b>Definition:</b> message.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad27f76114ca903dded8f84890c302119\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">tram::Message::GetType</a></div><div class=\"ttdeci\">static message_t GetType(name_t name)</div><div class=\"ttdoc\">Finds a message type from a name.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:120</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afd\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">tram::Message::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition:</b> message.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">tram::Message::STOP</a></div><div class=\"ttdeci\">@ STOP</div><div class=\"ttdef\"><b>Definition:</b> message.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">tram::Message::ACTIVATE</a></div><div class=\"ttdeci\">@ ACTIVATE</div><div class=\"ttdef\"><b>Definition:</b> message.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">tram::Message::SELECT</a></div><div class=\"ttdeci\">@ SELECT</div><div class=\"ttdef\"><b>Definition:</b> message.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">tram::Message::UNLOCK</a></div><div class=\"ttdeci\">@ UNLOCK</div><div class=\"ttdef\"><b>Definition:</b> message.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">tram::Message::KILL</a></div><div class=\"ttdeci\">@ KILL</div><div class=\"ttdef\"><b>Definition:</b> message.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">tram::Message::SET_FLAG_ON</a></div><div class=\"ttdeci\">@ SET_FLAG_ON</div><div class=\"ttdef\"><b>Definition:</b> message.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">tram::Message::SET_ANIMATION</a></div><div class=\"ttdeci\">@ SET_ANIMATION</div><div class=\"ttdef\"><b>Definition:</b> message.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">tram::Message::TRIGGER</a></div><div class=\"ttdeci\">@ TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> message.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">tram::Message::NONE</a></div><div class=\"ttdeci\">@ NONE</div><div class=\"ttdef\"><b>Definition:</b> message.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">tram::Message::SET_PROGRESS</a></div><div class=\"ttdeci\">@ SET_PROGRESS</div><div class=\"ttdef\"><b>Definition:</b> message.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">tram::Message::CLOSE</a></div><div class=\"ttdeci\">@ CLOSE</div><div class=\"ttdef\"><b>Definition:</b> message.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">tram::Message::PING</a></div><div class=\"ttdeci\">@ PING</div><div class=\"ttdef\"><b>Definition:</b> message.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">tram::Message::SET_FLAG_OFF</a></div><div class=\"ttdeci\">@ SET_FLAG_OFF</div><div class=\"ttdef\"><b>Definition:</b> message.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">tram::Message::TOGGLE</a></div><div class=\"ttdeci\">@ TOGGLE</div><div class=\"ttdef\"><b>Definition:</b> message.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">tram::Message::LAST_MESSAGE</a></div><div class=\"ttdeci\">@ LAST_MESSAGE</div><div class=\"ttdef\"><b>Definition:</b> message.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">tram::Message::ACTIVATE_ONCE</a></div><div class=\"ttdeci\">@ ACTIVATE_ONCE</div><div class=\"ttdef\"><b>Definition:</b> message.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">tram::Message::MOVE_PICK_UP</a></div><div class=\"ttdeci\">@ MOVE_PICK_UP</div><div class=\"ttdef\"><b>Definition:</b> message.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">tram::Message::OPEN</a></div><div class=\"ttdeci\">@ OPEN</div><div class=\"ttdef\"><b>Definition:</b> message.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">tram::Message::START</a></div><div class=\"ttdeci\">@ START</div><div class=\"ttdef\"><b>Definition:</b> message.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">tram::Message::LOCK</a></div><div class=\"ttdeci\">@ LOCK</div><div class=\"ttdef\"><b>Definition:</b> message.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_adad7616c7def22014e7c8f276e65fe77\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">tram::Message::GetName</a></div><div class=\"ttdeci\">static name_t GetName(message_t type)</div><div class=\"ttdoc\">Gets a nessage type name.</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:136</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_ae415c262a095fd620ef84c7c8654a02f\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">tram::Message::SetInterceptCallback</a></div><div class=\"ttdeci\">static void SetInterceptCallback(void(const Message &amp;))</div><div class=\"ttdef\"><b>Definition:</b> message.cpp:217</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_af0bef4c3d63c5908c15440636071d25d\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">tram::Message::data_value</a></div><div class=\"ttdeci\">value_t * data_value</div><div class=\"ttdoc\">Pointer to a value_t.</div><div class=\"ttdef\"><b>Definition:</b> message.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html_af2dcffd8b7a243a909af718abcac4925\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">tram::Message::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdoc\">Pointer to arbitrary data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/model_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/model.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">model.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"error_8h_source.html\">render/error.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"async_8h_source.html\">framework/async.h</a>&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"aabb_8h_source.html\">templates/aabb.h</a>&gt;</code><br />\n<code>#include &lt;charconv&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">tram::Render::ModelAABB</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">tram::Render::TriangleBucket</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">tram::Render::BucketMapping</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/model_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/model.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">model.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n</div>\n<p><a href=\"model_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/model_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/model.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">model.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"model_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_MODEL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_MODEL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"material_8h.html\">render/material.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">struct </span>ModelData;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">struct </span>ModelAABB;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">   13</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">   14</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">point1</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">point2</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">point3</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">   15</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">normal</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">   16</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">material</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html\">   19</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">   20</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">index_offset</a> = 0;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">   21</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">index_length</a> = 0;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">   22</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">material_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">   23</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">material_type</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">   24</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">materials</a>[15] = { 0 };</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>};</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html\">   27</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">   29</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">Model</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">LoadFromMemory</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">   34</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">GetVertexFormat</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">vertex_format</a>; } </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">   38</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">GetVertexArray</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">vertex_array</a>; }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">   39</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">GetIndexArray</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">index_array</a>; }</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">   41</a></span>    <span class=\"keyword\">const</span> std::vector&lt;Bone&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">GetArmature</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">armature</a>; }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">   42</a></span>    <span class=\"keyword\">const</span> std::vector&lt;Material*&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">GetMaterials</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">materials</a>; }</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">   43</a></span>    <span class=\"keyword\">const</span> std::vector&lt;IndexRange&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">GetIndexRanges</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">index_ranges</a>; }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">DrawAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">FindAllFromRay</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, std::vector&lt;AABBTriangle&gt;&amp; result);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">FindAllFromAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, std::vector&lt;AABBTriangle&gt;&amp; result);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">   49</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">GetAABBMin</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">aabb_min</a>; }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">   50</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">GetAABBMax</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">aabb_max</a>; }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">   52</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">GetOrigin</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">origin</a>; }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">   54</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">GetNearDistance</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">fade_near</a>; }</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">   55</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">GetFarDistance</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">fade_far</a>; }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">SetNearDistance</a>(<span class=\"keywordtype\">float</span> dist) { <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">fade_near</a> = dist; }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">SetFarDistance</a>(<span class=\"keywordtype\">float</span> dist) { <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">fade_far</a> = dist; }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Model</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">   62</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">vertex_format</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">VERTEX_STATIC</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">   64</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">vertex_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">   65</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">index_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">   67</a></span>    std::vector&lt;IndexRange&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">index_ranges</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">   69</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">aabb_min</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">   70</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">aabb_max</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">   72</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">fade_near</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">   73</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">fade_far</a> = INFINITY;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">   75</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">origin</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">   77</a></span>    std::vector&lt;Material*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">materials</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">   79</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_model.html\">Model</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">source</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">   81</a></span>    std::vector&lt;Bone&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">armature</a>;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">   82</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">model_data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">   83</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">model_aabb</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">   84</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">approx_vram_usage</a> = 0;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>}</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_MODEL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html\">tram::Render::Model</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a02abf1c725962593c6bbfa17d4fa2e43\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43\">tram::Render::Model::Find</a></div><div class=\"ttdeci\">static Model * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a030f9e0ab4d7afbaf589eb18e767c3a2\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2\">tram::Render::Model::aabb_max</a></div><div class=\"ttdeci\">vec3 aabb_max</div><div class=\"ttdef\"><b>Definition:</b> model.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a10296fe276ff9ac4d87dc9db6451092f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f\">tram::Render::Model::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:287</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a1154b475ba52ad0bcae60926b9a1a014\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014\">tram::Render::Model::DrawAABB</a></div><div class=\"ttdeci\">void DrawAABB(vec3 position, quat rotation)</div><div class=\"ttdoc\">Draws the AABB tree.</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:205</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a181f0a0d0b56d4f7235181ddd1cbeec0\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0\">tram::Render::Model::GetAABBMin</a></div><div class=\"ttdeci\">vec3 GetAABBMin() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a3c38cde838ea3f56d2e77c23c8a1d77f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f\">tram::Render::Model::FindAllFromRay</a></div><div class=\"ttdeci\">void FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector&lt; AABBTriangle &gt; &amp;result)</div><div class=\"ttdoc\">Finds triangles that intersect ray.</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:143</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a3d3484e3d729819081e525321fa0cc22\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22\">tram::Render::Model::GetOrigin</a></div><div class=\"ttdeci\">vec3 GetOrigin() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a435b6a7e005789637eacb30bc37bdbb9\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9\">tram::Render::Model::GetIndexArray</a></div><div class=\"ttdeci\">indexarray_t GetIndexArray() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a4d4127ce3dd4bd14ca6c2a559137a57e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e\">tram::Render::Model::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a5308aff655f38cf12503c88a7d82cd01\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01\">tram::Render::Model::model_aabb</a></div><div class=\"ttdeci\">ModelAABB * model_aabb</div><div class=\"ttdef\"><b>Definition:</b> model.h:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a5e2bf8fce6f1b151e5ce019d437f7604\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604\">tram::Render::Model::SetNearDistance</a></div><div class=\"ttdeci\">void SetNearDistance(float dist)</div><div class=\"ttdef\"><b>Definition:</b> model.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a6552762c2c420643726ac9e6dac495af\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af\">tram::Render::Model::GetFarDistance</a></div><div class=\"ttdeci\">float GetFarDistance() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a69f11a78aa41ff398b91ffde31efb2b7\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7\">tram::Render::Model::approx_vram_usage</a></div><div class=\"ttdeci\">size_t approx_vram_usage</div><div class=\"ttdef\"><b>Definition:</b> model.h:84</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a6c1e5a51904349dbac4e6055b54f087a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a\">tram::Render::Model::FindAllFromAABB</a></div><div class=\"ttdeci\">void FindAllFromAABB(vec3 min, vec3 max, std::vector&lt; AABBTriangle &gt; &amp;result)</div><div class=\"ttdef\"><b>Definition:</b> model.cpp:154</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a6dcde60794df195d5cbdc942b9e7f712\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712\">tram::Render::Model::index_ranges</a></div><div class=\"ttdeci\">std::vector&lt; IndexRange &gt; index_ranges</div><div class=\"ttdef\"><b>Definition:</b> model.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a71b7db1a28b591e3d4fa7eb58b6c196d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d\">tram::Render::Model::GetIndexRanges</a></div><div class=\"ttdeci\">const std::vector&lt; IndexRange &gt; &amp; GetIndexRanges() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a743debf3087f34ef70b7b98d5d1d3e6c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c\">tram::Render::Model::aabb_min</a></div><div class=\"ttdeci\">vec3 aabb_min</div><div class=\"ttdef\"><b>Definition:</b> model.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a7559c74fb4b4ebb3c643dc721ec84167\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167\">tram::Render::Model::model_data</a></div><div class=\"ttdeci\">ModelData * model_data</div><div class=\"ttdef\"><b>Definition:</b> model.h:82</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a7da36392dce1f4256a6ce67620501430\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430\">tram::Render::Model::armature</a></div><div class=\"ttdeci\">std::vector&lt; Bone &gt; armature</div><div class=\"ttdef\"><b>Definition:</b> model.h:81</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a7e5db9d7130f9cda66ad3be78026c673\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673\">tram::Render::Model::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> model.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a823633680904cb6940047f5aeec3ef4e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e\">tram::Render::Model::GetArmature</a></div><div class=\"ttdeci\">const std::vector&lt; Bone &gt; &amp; GetArmature() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a878a07665c85cc2b0b45e9eed4012a56\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56\">tram::Render::Model::GetVertexFormat</a></div><div class=\"ttdeci\">vertexformat_t GetVertexFormat() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_a9b316fb88f81c47f0af41604333df822\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822\">tram::Render::Model::Model</a></div><div class=\"ttdeci\">Model(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> model.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_aa5dee7ccfa3ff825f135ab07ae71a719\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719\">tram::Render::Model::index_array</a></div><div class=\"ttdeci\">indexarray_t index_array</div><div class=\"ttdef\"><b>Definition:</b> model.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_aa81edd4e91330f0613abeecc945e323d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d\">tram::Render::Model::fade_near</a></div><div class=\"ttdeci\">float fade_near</div><div class=\"ttdef\"><b>Definition:</b> model.h:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_aaf703730644d7fab65d1a9a21534b1d7\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7\">tram::Render::Model::GetNearDistance</a></div><div class=\"ttdeci\">float GetNearDistance() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ab23a8639f37acbb57c7b2bd59f72f0e0\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0\">tram::Render::Model::fade_far</a></div><div class=\"ttdeci\">float fade_far</div><div class=\"ttdef\"><b>Definition:</b> model.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ab5b0370a3b31cb6fa1b9ae0ad969a5aa\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa\">tram::Render::Model::vertex_array</a></div><div class=\"ttdeci\">vertexarray_t vertex_array</div><div class=\"ttdef\"><b>Definition:</b> model.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ab6e9404f95096afaea9226fe975e697b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b\">tram::Render::Model::GetAABBMax</a></div><div class=\"ttdeci\">vec3 GetAABBMax() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ac05721211dc33f67e5f59a4da99b4b96\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96\">tram::Render::Model::GetVertexArray</a></div><div class=\"ttdeci\">vertexarray_t GetVertexArray() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ac23726058a2d599fbcf09c6d774f6c91\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91\">tram::Render::Model::source</a></div><div class=\"ttdeci\">Model * source</div><div class=\"ttdef\"><b>Definition:</b> model.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_acf0073d6b4982cb158d3d7289afa9266\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266\">tram::Render::Model::SetFarDistance</a></div><div class=\"ttdeci\">void SetFarDistance(float dist)</div><div class=\"ttdef\"><b>Definition:</b> model.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_add4100bd27f40383014ada9f1038e1d1\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1\">tram::Render::Model::materials</a></div><div class=\"ttdeci\">std::vector&lt; Material * &gt; materials</div><div class=\"ttdef\"><b>Definition:</b> model.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_ae764be80aa1071ca7f459bb7b341fd8e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e\">tram::Render::Model::GetMaterials</a></div><div class=\"ttdeci\">const std::vector&lt; Material * &gt; &amp; GetMaterials() const</div><div class=\"ttdef\"><b>Definition:</b> model.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_af924ab3580f9d3e0b5fb773fa2afd8d8\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8\">tram::Render::Model::vertex_format</a></div><div class=\"ttdeci\">vertexformat_t vertex_format</div><div class=\"ttdef\"><b>Definition:</b> model.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_model_html_aff4ea02ba501bed88104e795ca72f100\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100\">tram::Render::Model::origin</a></div><div class=\"ttdeci\">vec3 origin</div><div class=\"ttdef\"><b>Definition:</b> model.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"amaterial_8h_html\"><div class=\"ttname\"><a href=\"material_8h.html\">material.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4e5691f40b84e848c0d9b19b285bf0e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></div><div class=\"ttdeci\">uint32_t vertexformat_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">tram::Render::VERTEX_STATIC</a></div><div class=\"ttdeci\">@ VERTEX_STATIC</div><div class=\"ttdef\"><b>Definition:</b> render.h:68</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9be8283c1665f7d42c97367d857d43cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></div><div class=\"ttdeci\">uint32_t materialtype_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html_a15f432bcb85141fa1bd8d9db631a552b\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">tram::Render::AABBTriangle::normal</a></div><div class=\"ttdeci\">vec3 normal</div><div class=\"ttdef\"><b>Definition:</b> model.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html_a5b4b6aa924442e2390bf50cc9f601c75\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">tram::Render::AABBTriangle::material</a></div><div class=\"ttdeci\">uint32_t material</div><div class=\"ttdef\"><b>Definition:</b> model.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html_a6706198c449462db4acad33bfccc4a73\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">tram::Render::AABBTriangle::point1</a></div><div class=\"ttdeci\">vec3 point1</div><div class=\"ttdef\"><b>Definition:</b> model.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html_a912b569097565c02f6614349d39ba473\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">tram::Render::AABBTriangle::point2</a></div><div class=\"ttdeci\">vec3 point2</div><div class=\"ttdef\"><b>Definition:</b> model.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html_abda9898750755ee69a75ae3251a92148\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">tram::Render::AABBTriangle::point3</a></div><div class=\"ttdeci\">vec3 point3</div><div class=\"ttdef\"><b>Definition:</b> model.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html_a125c674b4ce58b771a833686ed8b6205\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">tram::Render::IndexRange::material_type</a></div><div class=\"ttdeci\">materialtype_t material_type</div><div class=\"ttdef\"><b>Definition:</b> model.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html_a14c45f9b3939a2e5238a8600a7534196\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">tram::Render::IndexRange::material_count</a></div><div class=\"ttdeci\">uint32_t material_count</div><div class=\"ttdef\"><b>Definition:</b> model.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html_a79dd94c687b439d58019231d29437d23\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">tram::Render::IndexRange::index_length</a></div><div class=\"ttdeci\">uint32_t index_length</div><div class=\"ttdef\"><b>Definition:</b> model.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html_aa0179744732873180811f35532344320\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">tram::Render::IndexRange::materials</a></div><div class=\"ttdeci\">uint32_t materials[15]</div><div class=\"ttdef\"><b>Definition:</b> model.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_index_range_html_ade22f8be5ffc1e0de728fa94ed496e72\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">tram::Render::IndexRange::index_offset</a></div><div class=\"ttdeci\">uint32_t index_offset</div><div class=\"ttdef\"><b>Definition:</b> model.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_model_a_a_b_b_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">tram::Render::ModelAABB</a></div><div class=\"ttdef\"><b>Definition:</b> model.cpp:134</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_model_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_model_data.html\">tram::Render::ModelData</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1indexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:126</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/motionstates_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/motionstates.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">motionstates.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;btBulletDynamicsCommon.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n</div>\n<p><a href=\"motionstates_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">TODO: <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/motionstates_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/motionstates.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_83c81f46d4e2adaa24ca143fb33abeaa.html\">bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">motionstates.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"motionstates_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef PHYSICS_BULLET_MOTIONSTATES_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define PHYSICS_BULLET_MOTIONSTATES_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;btBulletDynamicsCommon.h&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2physics_8h.html\">components/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2animation_8h.html\">components/animation.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">   18</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">EntMotionState</a> : <span class=\"keyword\">public</span> btMotionState {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#ac1d9679f3a981b1a1512fbd9409237f0\">   20</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#ac1d9679f3a981b1a1512fbd9409237f0\">EntMotionState</a> (<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* ent, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; offset) {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> = ent;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a> = offset;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    }</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a99af4caf635abbc433a4548e7f743039\">   25</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a99af4caf635abbc433a4548e7f743039\">~EntMotionState</a>() {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#af8617191f45630ed9bcac58ae35ea973\">   28</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#af8617191f45630ed9bcac58ae35ea973\">SetEntity</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* ent) {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> = ent;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a301202b06f3f2d999dbdd8de74d3f377\">   32</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a301202b06f3f2d999dbdd8de74d3f377\">getWorldTransform</a> (btTransform &amp;worldTrans)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> == <span class=\"keyword\">nullptr</span>){</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            loc = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>            rot = <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.0f, 0.0f));</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>            loc = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>();</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            rot = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        }</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>        loc += <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        btVector3 translation;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        translation.setX(loc.x);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        translation.setY(loc.y);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        translation.setZ(loc.z);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        btQuaternion rotation;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        rotation.setX(rot.x);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        rotation.setY(rot.y);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        rotation.setZ(rot.z);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        rotation.setW(rot.w);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        btTransform transf;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        transf.setRotation(rotation);</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        transf.setOrigin(translation);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        worldTrans = transf;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a33f1c19aef2137678bc1a4b4200a71ee\">   64</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a33f1c19aef2137678bc1a4b4200a71ee\">setWorldTransform</a> (<span class=\"keyword\">const</span> btTransform &amp;worldTrans) {</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> == <span class=\"keyword\">nullptr</span>) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        btQuaternion rot = worldTrans.getRotation();</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        btVector3 loc = worldTrans.getOrigin();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        location.x = loc.getX();</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        location.y = loc.getY();</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        location.z = loc.getZ();</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        location -= <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        rotation.x = rot.getX();</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        rotation.y = rot.getY();</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        rotation.z = rot.getZ();</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        rotation.w = rot.getW();</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">UpdateTransform</a>(location, rotation);</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    }</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">   88</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">entity</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">   89</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">troffse</a>;</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">   92</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">ArmMotionState</a> : <span class=\"keyword\">public</span> btMotionState {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a245dc3bde65f261c04ea5ebc8277ee5e\">   94</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a245dc3bde65f261c04ea5ebc8277ee5e\">ArmMotionState</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> boneName, <a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* armature, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> bindPos, <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity, <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* physicsComp) {</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a> = entity;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">arm</a> = armature;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a> = bindPos;</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">bone</a> = boneName;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">physcomp</a> = physicsComp;</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    }</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a0eed162485f8961f3c7e21d766304e16\">  102</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a0eed162485f8961f3c7e21d766304e16\">~ArmMotionState</a>() {}</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#ad291ea6b57bd9c6460582c2e471bea74\">  104</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#ad291ea6b57bd9c6460582c2e471bea74\">getWorldTransform</a> (btTransform &amp;worldTrans)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> loc = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>();</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rot = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>();</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        loc += rot * <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        btVector3 translation;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        translation.setX(loc.x);</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        translation.setY(loc.y);</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        translation.setZ(loc.z);</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        btQuaternion rotation;</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        rotation.setX(rot.x);</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        rotation.setY(rot.y);</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        rotation.setZ(rot.z);</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        rotation.setW(rot.w);</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        btTransform transf;</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        transf.setRotation(rotation);</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        transf.setOrigin(translation);</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        worldTrans = transf;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#affbe6e4f2228937340997bbe6fc0d7e5\">  128</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#affbe6e4f2228937340997bbe6fc0d7e5\">setWorldTransform</a> (<span class=\"keyword\">const</span> btTransform &amp;worldTrans) {</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation;</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        btQuaternion rot = worldTrans.getRotation();</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        btVector3 loc = worldTrans.getOrigin();</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        location.x = loc.getX();</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        location.y = loc.getY();</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        location.z = loc.getZ();</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        rotation.x = rot.getX();</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        rotation.y = rot.getY();</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        rotation.z = rot.getZ();</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        rotation.w = rot.getW();</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ent_loc = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">GetLocation</a>();</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> ent_rot = <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">GetRotation</a>();</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span> </div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        location = location - ent_loc;</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>        location = glm::inverse(ent_rot) * location;</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        location = location - <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a>;</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        rotation = rotation * glm::inverse(ent_rot);</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> kframe;</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        kframe.<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">rotation</a> = rotation;</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        kframe.<a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">location</a> = location;</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">arm</a>-&gt;SetBoneKeyframe(<a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">bone</a>, kframe);</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>    }</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">  162</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">physcomp</a>;</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">  163</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">arm</a>;</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">  164</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">ent</a>;</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">  165</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">offset</a>;</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">  166</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">bone</a>;</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>};</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>}</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PHYSICS_BULLET_MOTIONSTATES_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_animation_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_animation_component.html\">tram::AnimationComponent</a></div><div class=\"ttdoc\">Plays back Animations.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a475636f78b92b3eca43ce1d01da4fcb8\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8\">tram::Entity::UpdateTransform</a></div><div class=\"ttdeci\">void UpdateTransform(const vec3 &amp;loc, const quat &amp;rot)</div><div class=\"ttdef\"><b>Definition:</b> entity.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_a7bf177c08614dd697b23cd021c7fbfda\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda\">tram::Entity::GetLocation</a></div><div class=\"ttdeci\">const vec3 &amp; GetLocation()</div><div class=\"ttdef\"><b>Definition:</b> entity.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html_adbb214d504101d5113d149fa0f06e162\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162\">tram::Entity::GetRotation</a></div><div class=\"ttdeci\">const quat &amp; GetRotation()</div><div class=\"ttdef\"><b>Definition:</b> entity.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html\">tram::Physics::ArmMotionState</a></div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a0eed162485f8961f3c7e21d766304e16\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a0eed162485f8961f3c7e21d766304e16\">tram::Physics::ArmMotionState::~ArmMotionState</a></div><div class=\"ttdeci\">virtual ~ArmMotionState()</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a245dc3bde65f261c04ea5ebc8277ee5e\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a245dc3bde65f261c04ea5ebc8277ee5e\">tram::Physics::ArmMotionState::ArmMotionState</a></div><div class=\"ttdeci\">ArmMotionState(name_t boneName, AnimationComponent *armature, vec3 bindPos, Entity *entity, PhysicsComponent *physicsComp)</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:94</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a523b27aa4a6455b7fc198d43f8c1bb50\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a523b27aa4a6455b7fc198d43f8c1bb50\">tram::Physics::ArmMotionState::physcomp</a></div><div class=\"ttdeci\">PhysicsComponent * physcomp</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:162</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a56994dde3e9b7a0aeabd383bb8892bb9\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a56994dde3e9b7a0aeabd383bb8892bb9\">tram::Physics::ArmMotionState::offset</a></div><div class=\"ttdeci\">vec3 offset</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:165</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a62a9431d7c75162db55212d5e552a8bf\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a62a9431d7c75162db55212d5e552a8bf\">tram::Physics::ArmMotionState::bone</a></div><div class=\"ttdeci\">name_t bone</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:166</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a7ce3ff59dd3cbb38c9c3a3bc58700964\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a7ce3ff59dd3cbb38c9c3a3bc58700964\">tram::Physics::ArmMotionState::arm</a></div><div class=\"ttdeci\">AnimationComponent * arm</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:163</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_a81249774b021500fda0a930ec4ebcaf4\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#a81249774b021500fda0a930ec4ebcaf4\">tram::Physics::ArmMotionState::ent</a></div><div class=\"ttdeci\">Entity * ent</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:164</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_ad291ea6b57bd9c6460582c2e471bea74\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#ad291ea6b57bd9c6460582c2e471bea74\">tram::Physics::ArmMotionState::getWorldTransform</a></div><div class=\"ttdeci\">virtual void getWorldTransform(btTransform &amp;worldTrans) const</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_arm_motion_state_html_affbe6e4f2228937340997bbe6fc0d7e5\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_arm_motion_state.html#affbe6e4f2228937340997bbe6fc0d7e5\">tram::Physics::ArmMotionState::setWorldTransform</a></div><div class=\"ttdeci\">virtual void setWorldTransform(const btTransform &amp;worldTrans)</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html\">tram::Physics::EntMotionState</a></div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_a301202b06f3f2d999dbdd8de74d3f377\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a301202b06f3f2d999dbdd8de74d3f377\">tram::Physics::EntMotionState::getWorldTransform</a></div><div class=\"ttdeci\">virtual void getWorldTransform(btTransform &amp;worldTrans) const</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_a33f1c19aef2137678bc1a4b4200a71ee\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a33f1c19aef2137678bc1a4b4200a71ee\">tram::Physics::EntMotionState::setWorldTransform</a></div><div class=\"ttdeci\">virtual void setWorldTransform(const btTransform &amp;worldTrans)</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_a34c0d3990c5235ce706525d124cfcd98\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a34c0d3990c5235ce706525d124cfcd98\">tram::Physics::EntMotionState::troffse</a></div><div class=\"ttdeci\">vec3 troffse</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:89</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_a7c4b97af17f8c290e6099e651fc883a3\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a7c4b97af17f8c290e6099e651fc883a3\">tram::Physics::EntMotionState::entity</a></div><div class=\"ttdeci\">Entity * entity</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:88</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_a99af4caf635abbc433a4548e7f743039\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#a99af4caf635abbc433a4548e7f743039\">tram::Physics::EntMotionState::~EntMotionState</a></div><div class=\"ttdeci\">virtual ~EntMotionState()</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_ac1d9679f3a981b1a1512fbd9409237f0\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#ac1d9679f3a981b1a1512fbd9409237f0\">tram::Physics::EntMotionState::EntMotionState</a></div><div class=\"ttdeci\">EntMotionState(Entity *ent, vec3 &amp;offset)</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_ent_motion_state_html_af8617191f45630ed9bcac58ae35ea973\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_ent_motion_state.html#af8617191f45630ed9bcac58ae35ea973\">tram::Physics::EntMotionState::SetEntity</a></div><div class=\"ttdeci\">void SetEntity(Entity *ent)</div><div class=\"ttdef\"><b>Definition:</b> motionstates.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdoc\">Rigidbody wrapper.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:12</div></div>\n<div class=\"ttc\" id=\"acomponents_2animation_8h_html\"><div class=\"ttname\"><a href=\"components_2animation_8h.html\">animation.h</a></div></div>\n<div class=\"ttc\" id=\"acomponents_2physics_8h_html\"><div class=\"ttname\"><a href=\"components_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html\">tram::Physics</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></div><div class=\"ttdoc\">Keyframe for a skeletal animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a54ad174c2d1454d5b8699463918241cc\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">tram::Render::Keyframe::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> animation.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a9a2801c157a6717bfc008716b4c28a83\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">tram::Render::Keyframe::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> animation.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>aabbleaf_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render</a></li>\n<li>Add()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">tram::Stats</a></li>\n<li>AddChild()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156\">tram::Ext::Kitchensink</a></li>\n<li>AddCube()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">tram::Render</a></li>\n<li>AddCylinder()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">tram::Render</a></li>\n<li>AddLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree</a></li>\n<li>AddLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render</a></li>\n<li>AddLineAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">tram::Render</a></li>\n<li>AddLineMarker()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">tram::Render</a></li>\n<li>AddSphere()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">tram::Render</a></li>\n<li>AddText()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">tram::Render</a></li>\n<li>ai_package_constr&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">tram::Ext::Kitchensink</a></li>\n<li>ambient_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">tram::Render</a></li>\n<li>animation_list()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a\">tram::Render</a></li>\n<li>animation_pool&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d\">tram::Render</a></li>\n<li>APPLICATION&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">tram::Settings</a></li>\n<li>AssertDependency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">tram::System</a></li>\n<li>ASYNC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">tram::System</a></li>\n<li>AUDIO&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">tram::System</a></li>\n<li>audiobuffers&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">tram::Audio::Spatial</a></li>\n<li>audiorenders&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">tram::Audio::Spatial</a></li>\n<li>AudioSampleRate&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">tram::Audio::Spatial</a></li>\n<li>AudioSourceFlags&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">tram::Audio::Spatial</a></li>\n<li>audiosources&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">tram::Audio::Spatial</a></li>\n<li>AwakenRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>Begin()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">tram::GUI</a></li>\n<li>beginned&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8\">tram::GUI</a></li>\n<li>BindKeyboardKey()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">tram::UI</a></li>\n<li>BindUniformBlock()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">tram::Render::API</a></li>\n<li>BlitDot()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08\">tram::Render::API</a></li>\n<li>BlitLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d\">tram::Render::API</a></li>\n<li>BlitLineOctant0()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde\">tram::Render::API</a></li>\n<li>BlitLineOctant1()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c\">tram::Render::API</a></li>\n<li>BOB_CHANGE_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee\">tram::Ext::Camera</a></li>\n<li>BONE_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">tram::Render</a></li>\n<li>bone_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8\">tram::Render::API</a></li>\n<li>bone_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb\">tram::Render::API</a></li>\n<li>buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">tram::implementation</a></li>\n<li>BUFFER_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">tram::Audio::Spatial</a></li>\n<li>Button()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">tram::GUI</a></li>\n<li>BUTTON_FIELD_DIRECTION&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_DISTANCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_FLAGS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_ORIGIN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_PARENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_PAUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_MOMENTARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_PUSHED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_ROTARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_TOGGLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_LOWERING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_NADIR_READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_NADIR_WAITING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_RISING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_ZENITH_READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_ZENITH_WAITING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CALLBACK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\">tram::Async</a></li>\n<li>CallFunction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script</a></li>\n<li>CAMERA_MULTIPLIER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">tram</a></li>\n<li>CAMERA_SENSITIVITY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">tram::UI</a></li>\n<li>CAMERA_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">tram::UI</a></li>\n<li>CAMERA_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d\">tram::Ext::Camera</a></li>\n<li>CancelRequest()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async</a></li>\n<li>character_classes()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7\">tram::Ext::Kitchensink</a></li>\n<li>characters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4\">tram::Ext::Kitchensink</a></li>\n<li>CheckBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">tram::GUI</a></li>\n<li>CheckReverb()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">tram::Audio::Spatial</a></li>\n<li>clear_screen&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e\">tram::Render::API</a></li>\n<li>Clicked()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07\">tram::GUI</a></li>\n<li>ClickHandled()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">tram::GUI</a></li>\n<li>ClickHandledLate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8\">tram::GUI</a></li>\n<li>ClipLineInClipSpace()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00\">tram::Render::API</a></li>\n<li>ClipRenderLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e\">tram::Render::API</a></li>\n<li>ClipSinglePointLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718\">tram::Render::API</a></li>\n<li>ClipSinglePointLineBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8\">tram::Render::API</a></li>\n<li>ClipSinglePointLineFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8\">tram::Render::API</a></li>\n<li>ClipSinglePointLineLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0\">tram::Render::API</a></li>\n<li>ClipSinglePointLineNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e\">tram::Render::API</a></li>\n<li>ClipSinglePointLineRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5\">tram::Render::API</a></li>\n<li>ClipSinglePointLineTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d\">tram::Render::API</a></li>\n<li>ClipSpaceToScreenSpace()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853\">tram::Render::API</a></li>\n<li>ClipTriangleList()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef\">tram::Render::API</a></li>\n<li>CloseAll()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295\">tram::Ext::Menu</a></li>\n<li>col_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">tram::Physics::API</a></li>\n<li>COLL_DYNAMICOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">tram::Physics</a></li>\n<li>COLL_MONSTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">tram::Physics</a></li>\n<li>COLL_PLAYER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">tram::Physics</a></li>\n<li>COLL_STATICOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">tram::Physics</a></li>\n<li>COLL_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">tram::Physics</a></li>\n<li>COLL_VEHICLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">tram::Physics</a></li>\n<li>COLL_WORLDOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">tram::Physics</a></li>\n<li>Collate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">tram::Stats</a></li>\n<li>collision_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">tram</a></li>\n<li>collision_group&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a\">tram</a></li>\n<li>collision_height&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9\">tram</a></li>\n<li>collision_height_crouch&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f\">tram</a></li>\n<li>collision_width&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1759e20de49502fc468e5b65e7baf481\">tram</a></li>\n<li>CollisionGroup&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">tram::Physics</a></li>\n<li>COLOR_BLACK()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">tram::Render</a></li>\n<li>COLOR_BLUE()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">tram::Render</a></li>\n<li>COLOR_CYAN()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">tram::Render</a></li>\n<li>COLOR_GRAY()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">tram::Render</a></li>\n<li>COLOR_GREEN()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">tram::Render</a></li>\n<li>COLOR_PINK()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">tram::Render</a></li>\n<li>COLOR_RED()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">tram::Render</a></li>\n<li>color_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render</a></li>\n<li>COLOR_WHITE()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">tram::Render</a></li>\n<li>COLOR_YELLOW()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">tram::Render</a></li>\n<li>colorlines&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6\">tram::Render</a></li>\n<li>colorlines_entry&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65\">tram::Render</a></li>\n<li>colorlines_vertex_array&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f\">tram::Render</a></li>\n<li>ColorMode&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render</a></li>\n<li>COLORMODE_R&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">tram::Render</a></li>\n<li>COLORMODE_RG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">tram::Render</a></li>\n<li>COLORMODE_RGB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">tram::Render</a></li>\n<li>COLORMODE_RGBA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">tram::Render</a></li>\n<li>CompileShaders()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">tram::Render::API</a></li>\n<li>COMPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\">tram::Async</a></li>\n<li>COMPONENT_LIMIT_ANIMATION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">tram</a></li>\n<li>COMPONENT_LIMIT_AUDIO&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">tram</a></li>\n<li>COMPONENT_LIMIT_CONTROLLER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">tram</a></li>\n<li>COMPONENT_LIMIT_DECAL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">tram</a></li>\n<li>COMPONENT_LIMIT_LIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">tram</a></li>\n<li>COMPONENT_LIMIT_PARTICLE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">tram</a></li>\n<li>COMPONENT_LIMIT_PHYSICS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">tram</a></li>\n<li>COMPONENT_LIMIT_PLAYER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">tram</a></li>\n<li>COMPONENT_LIMIT_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">tram</a></li>\n<li>COMPONENT_LIMIT_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">tram</a></li>\n<li>COMPONENT_LIMIT_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">tram</a></li>\n<li>concat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">tram::implementation</a></li>\n<li>concat_fmt()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">tram::implementation</a></li>\n<li>concat_numeric()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">tram::implementation</a></li>\n<li>console_logs&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124\">tram::Ext::Menu</a></li>\n<li>containers()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42\">tram::Ext::Kitchensink</a></li>\n<li>CONTEXT_DIRECT3D&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">tram::Render::API</a></li>\n<li>CONTEXT_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">tram::Render::API</a></li>\n<li>CONTEXT_OPENGL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">tram::Render::API</a></li>\n<li>CONTEXT_SOFTWARE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">tram::Render::API</a></li>\n<li>CONTEXT_WEBGL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">tram::Render::API</a></li>\n<li>ContextType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">tram::Render::API</a></li>\n<li>CORE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">tram::System</a></li>\n<li>CreateIndexedVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API</a></li>\n<li>CreateSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">tram::Render::API</a></li>\n<li>CreateTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API</a></li>\n<li>CreateVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API</a></li>\n<li>current_monitor&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26\">tram::Platform</a></li>\n<li>CURSOR_CLICK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">tram::UI</a></li>\n<li>CURSOR_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">tram::UI</a></li>\n<li>CURSOR_TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">tram::UI</a></li>\n<li>CursorOver()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c\">tram::GUI</a></li>\n<li>CursorType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">tram::UI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>debug_menu&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b\">tram::Ext::Menu</a></li>\n<li>DebugDrawTree()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB</a></li>\n<li>DebugMenue()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7\">tram::Ext::Menu</a></li>\n<li>debugtext_entry&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c\">tram::Render</a></li>\n<li>debugtext_vertex_array&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4\">tram::Render</a></li>\n<li>DeleteLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API</a></li>\n<li>DeleteMaterial()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">tram::Render::API</a></li>\n<li>DIALOG_IMPORT_MULTIPLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">tram::Ext::Kitchensink</a></li>\n<li>DIALOG_IMPORT_SINGLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">tram::Ext::Kitchensink</a></li>\n<li>DIALOG_TOPIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">tram::Ext::Kitchensink</a></li>\n<li>DialogType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">tram::Ext::Kitchensink</a></li>\n<li>DIRECTION_FORWARD()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">tram</a></li>\n<li>DIRECTION_SIDE()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">tram</a></li>\n<li>DIRECTION_UP()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">tram</a></li>\n<li>DisableCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">tram::Platform::Window</a></li>\n<li>DisableRigidbodyDeactivation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">tram::Physics::API</a></li>\n<li>DisplayLog()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">tram</a></li>\n<li>draw_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671\">tram::Render::API</a></li>\n<li>DRAW_RENDER_DEBUG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b\">tram::Render</a></li>\n<li>DrawBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">tram::GUI</a></li>\n<li>DrawBoxHorizontal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">tram::GUI</a></li>\n<li>DrawDebug()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">tram::Physics::API</a></li>\n<li>DrawGlyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73\">tram::GUI</a></li>\n<li>DYNAMIC_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2\">tram::Render::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>EFFECT_NEGATE_CHANGE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">tram::Ext::Kitchensink</a></li>\n<li>EFFECT_RAISE_BASE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">tram::Ext::Kitchensink</a></li>\n<li>EFFECT_RAISE_CONSTANT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">tram::Ext::Kitchensink</a></li>\n<li>EnableCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">tram::Platform::Window</a></li>\n<li>End()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">tram::GUI</a></li>\n<li>EndFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">tram::UI</a></li>\n<li>entity_clear&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">tram</a></li>\n<li>ENTITY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">tram</a></li>\n<li>entity_make&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">tram</a></li>\n<li>ENTITY_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">tram</a></li>\n<li>Evaluate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">tram::Script</a></li>\n<li>event_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">tram</a></li>\n<li>EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">tram</a></li>\n<li>EXT_KITCHENSINK_SOUNDTABLE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_enum.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>AudioSampleRate&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">tram::Audio::Spatial</a></li>\n<li>AudioSourceFlags&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">tram::Audio::Spatial</a></li>\n</ul>\n\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CollisionGroup&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">tram::Physics</a></li>\n<li>ColorMode&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render</a></li>\n<li>ContextType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">tram::Render::API</a></li>\n<li>CursorType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">tram::UI</a></li>\n</ul>\n\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>DialogType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">tram::Ext::Kitchensink</a></li>\n</ul>\n\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>FileMedium&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">tram</a></li>\n<li>FileStatus&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>GlyphType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">tram::GUI</a></li>\n</ul>\n\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>InputState&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">tram::UI</a></li>\n</ul>\n\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KeyboardAction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">tram::UI</a></li>\n<li>KeyboardAxis&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">tram::UI</a></li>\n<li>KeyboardKey&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">tram::UI</a></li>\n</ul>\n\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>MaterialFilter&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render</a></li>\n<li>MaterialProperty&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">tram::Render</a></li>\n<li>MaterialTypes&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">tram::Render</a></li>\n<li>MetadataType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">tram::Physics::API</a></li>\n</ul>\n\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>orientation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI</a></li>\n</ul>\n\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PathType&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>quest_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">tram::Ext::Kitchensink</a></li>\n</ul>\n\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>ReferenceType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB</a></li>\n<li>renderflags&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">tram::Render</a></li>\n<li>RequestNotification&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">tram::Async</a></li>\n<li>Resource&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats</a></li>\n</ul>\n\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>Severity&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">tram</a></li>\n<li>ShaderFlag&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">tram::Render::API</a></li>\n<li>Shape&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">tram::Physics</a></li>\n<li>SoundAction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">tram::Ext::Kitchensink</a></li>\n<li>SWTextureMode&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">tram::Render::API</a></li>\n<li>SWVertexType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">tram::Render::API</a></li>\n<li>System&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System</a></li>\n<li>SystemState&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">tram::System</a></li>\n</ul>\n\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TextureFilter&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render</a></li>\n<li>TextureType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">tram::Render</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UserIndex&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c\">tram::Physics::API</a></li>\n</ul>\n\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>VertexFormats&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">tram::Render</a></li>\n</ul>\n\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>widget&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>APPLICATION&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">tram::Settings</a></li>\n<li>ASYNC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">tram::System</a></li>\n<li>AUDIO&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>BUTTON_FIELD_DIRECTION&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_DISTANCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_FLAGS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_ORIGIN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_PARENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_PAUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FIELD_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_MOMENTARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_PUSHED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_ROTARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_FLAG_TOGGLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_LOWERING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_NADIR_READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_NADIR_WAITING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_RISING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_ZENITH_READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\">tram::Ext::Kitchensink</a></li>\n<li>BUTTON_STATE_ZENITH_WAITING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CALLBACK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\">tram::Async</a></li>\n<li>COLL_DYNAMICOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">tram::Physics</a></li>\n<li>COLL_MONSTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">tram::Physics</a></li>\n<li>COLL_PLAYER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">tram::Physics</a></li>\n<li>COLL_STATICOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">tram::Physics</a></li>\n<li>COLL_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">tram::Physics</a></li>\n<li>COLL_VEHICLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">tram::Physics</a></li>\n<li>COLL_WORLDOBJ&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">tram::Physics</a></li>\n<li>COLORMODE_R&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">tram::Render</a></li>\n<li>COLORMODE_RG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">tram::Render</a></li>\n<li>COLORMODE_RGB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">tram::Render</a></li>\n<li>COLORMODE_RGBA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">tram::Render</a></li>\n<li>COMPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\">tram::Async</a></li>\n<li>CONTEXT_DIRECT3D&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">tram::Render::API</a></li>\n<li>CONTEXT_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">tram::Render::API</a></li>\n<li>CONTEXT_OPENGL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">tram::Render::API</a></li>\n<li>CONTEXT_SOFTWARE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">tram::Render::API</a></li>\n<li>CONTEXT_WEBGL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">tram::Render::API</a></li>\n<li>CORE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">tram::System</a></li>\n<li>CURSOR_CLICK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">tram::UI</a></li>\n<li>CURSOR_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">tram::UI</a></li>\n<li>CURSOR_TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">tram::UI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>DIALOG_IMPORT_MULTIPLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">tram::Ext::Kitchensink</a></li>\n<li>DIALOG_IMPORT_SINGLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">tram::Ext::Kitchensink</a></li>\n<li>DIALOG_TOPIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>EFFECT_NEGATE_CHANGE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">tram::Ext::Kitchensink</a></li>\n<li>EFFECT_RAISE_BASE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">tram::Ext::Kitchensink</a></li>\n<li>EFFECT_RAISE_CONSTANT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>FIELD_ANIMATION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\">tram</a></li>\n<li>FIELD_COLLISION_MASK&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\">tram</a></li>\n<li>FIELD_COLLMODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\">tram</a></li>\n<li>FIELD_COLOR&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\">tram</a></li>\n<li>FIELD_DIRECTION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\">tram</a></li>\n<li>FIELD_DISTANCE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\">tram</a></li>\n<li>FIELD_EXPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\">tram</a></li>\n<li>FIELD_FLAGS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">tram</a></li>\n<li>FIELD_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\">tram</a></li>\n<li>FIELD_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram</a></li>\n<li>FIELD_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\">tram</a></li>\n<li>FIELD_VOLUME&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\">tram</a></li>\n<li>FILTER_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">tram::Render</a></li>\n<li>FILTER_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">tram::Render</a></li>\n<li>FLAG_DISABLE_LIGHTING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">tram::Render</a></li>\n<li>FLAG_DRAW_INDEXED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">tram::Render</a></li>\n<li>FLAG_DRAW_LINES&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">tram::Render</a></li>\n<li>FLAG_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\">tram</a></li>\n<li>FLAG_NO_DEBUG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">tram::Render</a></li>\n<li>FLAG_NO_DEPTH_TEST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">tram::Render</a></li>\n<li>FLAG_NO_DIRECTIONAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">tram::Render</a></li>\n<li>FLAG_NO_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">tram::Render</a></li>\n<li>FLAG_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">tram::Render</a></li>\n<li>FLAG_REVERSE_SORT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">tram::Render</a></li>\n<li>FLAG_TRANSPARENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">tram::Render</a></li>\n<li>FLAG_USE_AABB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">tram::Render</a></li>\n<li>FRAME_BOTTOM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">tram::GUI</a></li>\n<li>FRAME_BOTTOM_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">tram::GUI</a></li>\n<li>FRAME_CENTER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">tram::GUI</a></li>\n<li>FRAME_CENTER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">tram::GUI</a></li>\n<li>FRAME_INSET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">tram::GUI</a></li>\n<li>FRAME_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">tram::GUI</a></li>\n<li>FRAME_LEFT_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">tram::GUI</a></li>\n<li>FRAME_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">tram::GUI</a></li>\n<li>FRAME_RIGHT_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">tram::GUI</a></li>\n<li>FRAME_TOP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">tram::GUI</a></li>\n<li>FRAME_TOP_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>GUI&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>INIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">tram::System</a></li>\n<li>INVALID&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KEY_0&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">tram::UI</a></li>\n<li>KEY_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">tram::UI</a></li>\n<li>KEY_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">tram::UI</a></li>\n<li>KEY_3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">tram::UI</a></li>\n<li>KEY_4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">tram::UI</a></li>\n<li>KEY_5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">tram::UI</a></li>\n<li>KEY_6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">tram::UI</a></li>\n<li>KEY_7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">tram::UI</a></li>\n<li>KEY_8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">tram::UI</a></li>\n<li>KEY_9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">tram::UI</a></li>\n<li>KEY_A&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">tram::UI</a></li>\n<li>KEY_ACTION_ACTIVATE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">tram::UI</a></li>\n<li>KEY_ACTION_BACKWARD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">tram::UI</a></li>\n<li>KEY_ACTION_CROUCH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">tram::UI</a></li>\n<li>KEY_ACTION_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">tram::UI</a></li>\n<li>KEY_ACTION_FLY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">tram::UI</a></li>\n<li>KEY_ACTION_FORWARD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">tram::UI</a></li>\n<li>KEY_ACTION_JUMP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">tram::UI</a></li>\n<li>KEY_ACTION_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">tram::UI</a></li>\n<li>KEY_ACTION_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">tram::UI</a></li>\n<li>KEY_ACTION_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">tram::UI</a></li>\n<li>KEY_ACTION_PRIMARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">tram::UI</a></li>\n<li>KEY_ACTION_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">tram::UI</a></li>\n<li>KEY_ACTION_SECONDARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">tram::UI</a></li>\n<li>KEY_ACTION_SPRINT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">tram::UI</a></li>\n<li>KEY_ACTION_STRAFE_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">tram::UI</a></li>\n<li>KEY_ACTION_STRAFE_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">tram::UI</a></li>\n<li>KEY_ACTION_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">tram::UI</a></li>\n<li>KEY_APOSTROPHE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">tram::UI</a></li>\n<li>KEY_B&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">tram::UI</a></li>\n<li>KEY_BACKSLASH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">tram::UI</a></li>\n<li>KEY_BACKSPACE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">tram::UI</a></li>\n<li>KEY_C&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">tram::UI</a></li>\n<li>KEY_CAPS_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">tram::UI</a></li>\n<li>KEY_COMMA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">tram::UI</a></li>\n<li>KEY_D&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">tram::UI</a></li>\n<li>KEY_DELETE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">tram::UI</a></li>\n<li>KEY_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">tram::UI</a></li>\n<li>KEY_E&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">tram::UI</a></li>\n<li>KEY_END&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">tram::UI</a></li>\n<li>KEY_ENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">tram::UI</a></li>\n<li>KEY_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">tram::UI</a></li>\n<li>KEY_ESCAPE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">tram::UI</a></li>\n<li>KEY_F&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">tram::UI</a></li>\n<li>KEY_F1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">tram::UI</a></li>\n<li>KEY_F10&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">tram::UI</a></li>\n<li>KEY_F11&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">tram::UI</a></li>\n<li>KEY_F12&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">tram::UI</a></li>\n<li>KEY_F13&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">tram::UI</a></li>\n<li>KEY_F14&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">tram::UI</a></li>\n<li>KEY_F15&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">tram::UI</a></li>\n<li>KEY_F16&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">tram::UI</a></li>\n<li>KEY_F17&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">tram::UI</a></li>\n<li>KEY_F18&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">tram::UI</a></li>\n<li>KEY_F19&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">tram::UI</a></li>\n<li>KEY_F2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">tram::UI</a></li>\n<li>KEY_F20&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">tram::UI</a></li>\n<li>KEY_F21&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">tram::UI</a></li>\n<li>KEY_F22&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">tram::UI</a></li>\n<li>KEY_F23&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">tram::UI</a></li>\n<li>KEY_F24&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">tram::UI</a></li>\n<li>KEY_F25&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">tram::UI</a></li>\n<li>KEY_F3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">tram::UI</a></li>\n<li>KEY_F4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">tram::UI</a></li>\n<li>KEY_F5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">tram::UI</a></li>\n<li>KEY_F6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">tram::UI</a></li>\n<li>KEY_F7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">tram::UI</a></li>\n<li>KEY_F8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">tram::UI</a></li>\n<li>KEY_F9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">tram::UI</a></li>\n<li>KEY_G&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">tram::UI</a></li>\n<li>KEY_GRAVE_ACCENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">tram::UI</a></li>\n<li>KEY_H&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">tram::UI</a></li>\n<li>KEY_HOME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">tram::UI</a></li>\n<li>KEY_I&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">tram::UI</a></li>\n<li>KEY_INSERT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">tram::UI</a></li>\n<li>KEY_J&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">tram::UI</a></li>\n<li>KEY_K&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">tram::UI</a></li>\n<li>KEY_KP_0&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">tram::UI</a></li>\n<li>KEY_KP_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">tram::UI</a></li>\n<li>KEY_KP_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">tram::UI</a></li>\n<li>KEY_KP_3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">tram::UI</a></li>\n<li>KEY_KP_4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">tram::UI</a></li>\n<li>KEY_KP_5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">tram::UI</a></li>\n<li>KEY_KP_6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">tram::UI</a></li>\n<li>KEY_KP_7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">tram::UI</a></li>\n<li>KEY_KP_8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">tram::UI</a></li>\n<li>KEY_KP_9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">tram::UI</a></li>\n<li>KEY_KP_ADD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">tram::UI</a></li>\n<li>KEY_KP_DECIMAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">tram::UI</a></li>\n<li>KEY_KP_DIVIDE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">tram::UI</a></li>\n<li>KEY_KP_ENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">tram::UI</a></li>\n<li>KEY_KP_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">tram::UI</a></li>\n<li>KEY_KP_MULTIPLY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">tram::UI</a></li>\n<li>KEY_KP_SUBTRACT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">tram::UI</a></li>\n<li>KEY_L&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">tram::UI</a></li>\n<li>KEY_LASTAXIS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">tram::UI</a></li>\n<li>KEY_LASTKEY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">tram::UI</a></li>\n<li>KEY_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">tram::UI</a></li>\n<li>KEY_LEFT_ALT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">tram::UI</a></li>\n<li>KEY_LEFT_BRACKET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">tram::UI</a></li>\n<li>KEY_LEFT_CONTROL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">tram::UI</a></li>\n<li>KEY_LEFT_SHIFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">tram::UI</a></li>\n<li>KEY_LEFT_SUPER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">tram::UI</a></li>\n<li>KEY_LEFTMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">tram::UI</a></li>\n<li>KEY_M&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">tram::UI</a></li>\n<li>KEY_MENU&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">tram::UI</a></li>\n<li>KEY_MIDDLEMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">tram::UI</a></li>\n<li>KEY_MINUS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">tram::UI</a></li>\n<li>KEY_MOUSE_SCROLL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">tram::UI</a></li>\n<li>KEY_MOUSE_X&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">tram::UI</a></li>\n<li>KEY_MOUSE_Y&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">tram::UI</a></li>\n<li>KEY_N&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">tram::UI</a></li>\n<li>KEY_NUM_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">tram::UI</a></li>\n<li>KEY_O&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">tram::UI</a></li>\n<li>KEY_P&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">tram::UI</a></li>\n<li>KEY_PAGE_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">tram::UI</a></li>\n<li>KEY_PAGE_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">tram::UI</a></li>\n<li>KEY_PAUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">tram::UI</a></li>\n<li>KEY_PERIOD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">tram::UI</a></li>\n<li>KEY_PRINT_SCREEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">tram::UI</a></li>\n<li>KEY_Q&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">tram::UI</a></li>\n<li>KEY_R&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">tram::UI</a></li>\n<li>KEY_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">tram::UI</a></li>\n<li>KEY_RIGHT_ALT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">tram::UI</a></li>\n<li>KEY_RIGHT_BRACKET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">tram::UI</a></li>\n<li>KEY_RIGHT_CONTROL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">tram::UI</a></li>\n<li>KEY_RIGHT_SHIFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">tram::UI</a></li>\n<li>KEY_RIGHT_SUPER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">tram::UI</a></li>\n<li>KEY_RIGHTMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">tram::UI</a></li>\n<li>KEY_S&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">tram::UI</a></li>\n<li>KEY_SCROLL_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">tram::UI</a></li>\n<li>KEY_SEMICOLON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">tram::UI</a></li>\n<li>KEY_SLASH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">tram::UI</a></li>\n<li>KEY_SPACE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">tram::UI</a></li>\n<li>KEY_T&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">tram::UI</a></li>\n<li>KEY_TAB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">tram::UI</a></li>\n<li>KEY_U&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">tram::UI</a></li>\n<li>KEY_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">tram::UI</a></li>\n<li>KEY_V&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">tram::UI</a></li>\n<li>KEY_W&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">tram::UI</a></li>\n<li>KEY_WORLD_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">tram::UI</a></li>\n<li>KEY_WORLD_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">tram::UI</a></li>\n<li>KEY_X&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">tram::UI</a></li>\n<li>KEY_Y&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">tram::UI</a></li>\n<li>KEY_Z&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">tram::UI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>LINE_HIGH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">tram::GUI</a></li>\n<li>LINE_LOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">tram::GUI</a></li>\n<li>LINE_NORMAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>MATERIAL_ENVIRONMENTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">tram::Render</a></li>\n<li>MATERIAL_FLAT_COLOR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">tram::Render</a></li>\n<li>MATERIAL_GLYPH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">tram::Render</a></li>\n<li>MATERIAL_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">tram::Render</a></li>\n<li>MATERIAL_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">tram::Render</a></li>\n<li>MATERIAL_MSDF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">tram::Render</a></li>\n<li>MATERIAL_TEXTURE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">tram::Render</a></li>\n<li>MATERIAL_TEXTURE_ALPHA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">tram::Render</a></li>\n<li>MATERIAL_WATER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">tram::Render</a></li>\n<li>MENU&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">tram::Settings</a></li>\n<li>METADATA_RIGIDBODY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\">tram::Physics::API</a></li>\n<li>METADATA_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\">tram::Physics::API</a></li>\n<li>MISC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">tram::Settings</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PATH_CURVE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">tram</a></li>\n<li>PATH_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">tram</a></li>\n<li>PATH_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">tram</a></li>\n<li>PATH_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">tram</a></li>\n<li>PATH_STRAIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">tram</a></li>\n<li>PHYSICS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">tram::System</a></li>\n<li>PLATFORM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">tram::System</a></li>\n<li>PROPERTY_COMPUTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">tram::Render</a></li>\n<li>PROPERTY_CONCRETE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">tram::Render</a></li>\n<li>PROPERTY_FLESH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">tram::Render</a></li>\n<li>PROPERTY_GLASS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">tram::Render</a></li>\n<li>PROPERTY_GRASS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">tram::Render</a></li>\n<li>PROPERTY_GRATE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">tram::Render</a></li>\n<li>PROPERTY_METAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">tram::Render</a></li>\n<li>PROPERTY_METAL_THIN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">tram::Render</a></li>\n<li>PROPERTY_SLIME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">tram::Render</a></li>\n<li>PROPERTY_SNOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">tram::Render</a></li>\n<li>PROPERTY_TILE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">tram::Render</a></li>\n<li>PROPERTY_WOOD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">tram::Render</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>QUEST_TGR_INCREMENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SET_OBJECTIVE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SET_VARIABLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SHOW_MESSAGE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_AND&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_NOT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_OR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_SCRIPT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_ENTITY_ITEM_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_INVALID&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_OBJECTIVE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_GREATER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_GREATER_OR_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_IS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_IS_NOT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_LESS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_LESS_OR_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">tram::System</a></li>\n<li>REFERENCE_RENDERCOMPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB</a></li>\n<li>RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">tram::System</a></li>\n<li>RESOURCE_DRAWCALL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">tram::Stats</a></li>\n<li>RESOURCE_VRAM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">tram::Stats</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>SAMPLERATE_11025&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">tram::Audio::Spatial</a></li>\n<li>SAMPLERATE_22050&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">tram::Audio::Spatial</a></li>\n<li>SAMPLERATE_44100&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">tram::Audio::Spatial</a></li>\n<li>SHADER_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">tram::Render::API</a></li>\n<li>SHADER_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">tram::Render::API</a></li>\n<li>SHADER_SPECULAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">tram::Render::API</a></li>\n<li>SHAPE_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">tram::Physics</a></li>\n<li>SHAPE_CAPSULE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">tram::Physics</a></li>\n<li>SHAPE_CONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">tram::Physics</a></li>\n<li>SHAPE_CYLINDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">tram::Physics</a></li>\n<li>SHAPE_HULL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">tram::Physics</a></li>\n<li>SHAPE_MESH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">tram::Physics</a></li>\n<li>SHAPE_SPHERE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">tram::Physics</a></li>\n<li>SOUND_CLOSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_END_CLOSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_END_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_HIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_JUMP_ON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_LOOPING&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\">tram</a></li>\n<li>SOUND_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_START_ON_LOAD&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\">tram</a></li>\n<li>SOUND_WALK_ON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">tram::Ext::Kitchensink</a></li>\n<li>SOURCE_PLAYING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">tram::Audio::Spatial</a></li>\n<li>SOURCE_REPEATING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">tram::Audio::Spatial</a></li>\n<li>STATE_CURSOR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">tram::UI</a></li>\n<li>STATE_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">tram::UI</a></li>\n<li>STATE_FLYING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">tram::UI</a></li>\n<li>STATE_MENU_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">tram::UI</a></li>\n<li>STATE_NO_INPUT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">tram::UI</a></li>\n<li>SW_BLENDED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">tram::Render::API</a></li>\n<li>SW_DYNAMIC_BLENDED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">tram::Render::API</a></li>\n<li>SW_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">tram::Render::API</a></li>\n<li>SW_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">tram::Render::API</a></li>\n<li>SW_STATIC_COLORED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">tram::Render::API</a></li>\n<li>SW_STATIC_LIGHTMAPPED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">tram::Render::API</a></li>\n<li>SYSTEM_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">tram::GUI</a></li>\n<li>TEXT_CENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">tram::GUI</a></li>\n<li>TEXT_JUSTIFIED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">tram::GUI</a></li>\n<li>TEXT_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">tram::GUI</a></li>\n<li>TEXT_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">tram::GUI</a></li>\n<li>TEXTURE_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">tram::Render</a></li>\n<li>TEXTURE_SAME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">tram::Render</a></li>\n<li>TEXTURE_SOURCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">tram::Render</a></li>\n<li>TEXTUREFILTER_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">tram::Render</a></li>\n<li>TEXTUREFILTER_LINEAR_MIPMAPPED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">tram::Render</a></li>\n<li>TEXTUREFILTER_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">tram::Render</a></li>\n<li>TRIGGER_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\">tram</a></li>\n<li>TYPE_BOOL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">tram</a></li>\n<li>TYPE_FLOAT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">tram</a></li>\n<li>TYPE_INT16&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">tram</a></li>\n<li>TYPE_INT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">tram</a></li>\n<li>TYPE_INT8&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">tram</a></li>\n<li>TYPE_NAME&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram</a></li>\n<li>TYPE_QUAT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">tram</a></li>\n<li>TYPE_STRING&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">tram</a></li>\n<li>TYPE_UINT16&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">tram</a></li>\n<li>TYPE_UINT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">tram</a></li>\n<li>TYPE_UINT8&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">tram</a></li>\n<li>TYPE_UNDEFINED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">tram</a></li>\n<li>TYPE_VEC2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">tram</a></li>\n<li>TYPE_VEC3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">tram</a></li>\n<li>TYPE_VEC4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UI&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">tram::System</a></li>\n<li>USER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">tram::Settings</a></li>\n<li>USERINDEX_RIGIDBODY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\">tram::Physics::API</a></li>\n<li>USERINDEX_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>VERTEX_DYNAMIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">tram::Render</a></li>\n<li>VERTEX_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">tram::Render</a></li>\n<li>VERTEX_LINE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">tram::Render</a></li>\n<li>VERTEX_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">tram::Render</a></li>\n<li>VERTEX_STATIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">tram::Render</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>WIDGET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">tram::GUI</a></li>\n<li>WIDGET_BORDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">tram::GUI</a></li>\n<li>WIDGET_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_1_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_2_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_EXIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_HELP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_PRESSED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_PRESSED_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_SELECTED_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_SELECTED_ENABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">tram::GUI</a></li>\n<li>WIDGET_CHECK_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">tram::GUI</a></li>\n<li>WIDGET_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">tram::GUI</a></li>\n<li>WIDGET_DIVIDER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">tram::GUI</a></li>\n<li>WIDGET_DIVIDER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">tram::GUI</a></li>\n<li>WIDGET_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">tram::GUI</a></li>\n<li>WIDGET_PROGESS_BAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">tram::GUI</a></li>\n<li>WIDGET_RADIO_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">tram::GUI</a></li>\n<li>WIDGET_REVERSE_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">tram::GUI</a></li>\n<li>WIDGET_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_TRACK_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_TRACK_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX_PRESSED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX_SELECTED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_TRACK_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_TRACK_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">tram::GUI</a></li>\n<li>WIDGET_TAB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">tram::GUI</a></li>\n<li>WIDGET_TEXT_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">tram::GUI</a></li>\n<li>WIDGET_TEXT_BOX_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">tram::GUI</a></li>\n<li>WIDGET_TOP_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">tram::GUI</a></li>\n<li>WIDGET_TOP_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">tram::GUI</a></li>\n<li>WIDGET_TOP_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">tram::GUI</a></li>\n<li>WIDGET_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_eval_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>YEET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>factions()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef\">tram::Ext::Kitchensink</a></li>\n<li>far_plane&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82\">tram::Render</a></li>\n<li>FIELD_ANIMATION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\">tram</a></li>\n<li>FIELD_COLLISION_MASK&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\">tram</a></li>\n<li>FIELD_COLLMODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\">tram</a></li>\n<li>FIELD_COLOR&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\">tram</a></li>\n<li>FIELD_DIRECTION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\">tram</a></li>\n<li>FIELD_DISTANCE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\">tram</a></li>\n<li>FIELD_EXPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\">tram</a></li>\n<li>FIELD_FLAGS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">tram</a></li>\n<li>FIELD_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\">tram</a></li>\n<li>FIELD_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram</a></li>\n<li>FIELD_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\">tram</a></li>\n<li>FIELD_VOLUME&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\">tram</a></li>\n<li>FileMedium&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">tram</a></li>\n<li>FileStatus&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">tram</a></li>\n<li>FillFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">tram::GUI</a></li>\n<li>filter_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">tram</a></li>\n<li>FILTER_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">tram::Render</a></li>\n<li>FILTER_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">tram::Render</a></li>\n<li>Find()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">tram::System</a></li>\n<li>FindAllIntersectionsFromAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">tram::Render::AABB</a></li>\n<li>FindLights()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree</a></li>\n<li>FindMaterialType()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">tram::Render</a></li>\n<li>FindNearestFromRay()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB</a></li>\n<li>FindPaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">tram::Audio::Spatial</a></li>\n<li>FindPathsMetropolis()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">tram::Audio::Spatial</a></li>\n<li>FindShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">tram::Render::API</a></li>\n<li>FindVertexFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">tram::Render</a></li>\n<li>FinishResources()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async</a></li>\n<li>FLAG_DISABLE_LIGHTING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">tram::Render</a></li>\n<li>FLAG_DRAW_INDEXED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">tram::Render</a></li>\n<li>FLAG_DRAW_LINES&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">tram::Render</a></li>\n<li>FLAG_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\">tram</a></li>\n<li>FLAG_NO_DEBUG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">tram::Render</a></li>\n<li>FLAG_NO_DEPTH_TEST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">tram::Render</a></li>\n<li>FLAG_NO_DIRECTIONAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">tram::Render</a></li>\n<li>FLAG_NO_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">tram::Render</a></li>\n<li>FLAG_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">tram::Render</a></li>\n<li>FLAG_REVERSE_SORT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">tram::Render</a></li>\n<li>FLAG_TRANSPARENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">tram::Render</a></li>\n<li>FLAG_USE_AABB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">tram::Render</a></li>\n<li>Flags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">tram::Settings</a></li>\n<li>flush_console()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">tram::implementation</a></li>\n<li>flush_display()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">tram::implementation</a></li>\n<li>font_debug&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d\">tram::Render</a></li>\n<li>FONT_HEADER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu</a></li>\n<li>FONT_PIXELART&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu</a></li>\n<li>font_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI</a></li>\n<li>FONT_TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu</a></li>\n<li>FONT_TEXT_BOLD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu</a></li>\n<li>FONT_WIDGETS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu</a></li>\n<li>FRAME_BOTTOM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">tram::GUI</a></li>\n<li>FRAME_BOTTOM_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">tram::GUI</a></li>\n<li>FRAME_CENTER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">tram::GUI</a></li>\n<li>FRAME_CENTER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">tram::GUI</a></li>\n<li>FRAME_INSET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">tram::GUI</a></li>\n<li>FRAME_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">tram::GUI</a></li>\n<li>FRAME_LEFT_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">tram::GUI</a></li>\n<li>FRAME_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">tram::GUI</a></li>\n<li>FRAME_RIGHT_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">tram::GUI</a></li>\n<li>FRAME_TOP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">tram::GUI</a></li>\n<li>FRAME_TOP_INV&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">tram::GUI</a></li>\n<li>function&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">tram::Ext::Scripting::Lua</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>Add()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">tram::Stats</a></li>\n<li>AddChild()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156\">tram::Ext::Kitchensink</a></li>\n<li>AddCube()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">tram::Render</a></li>\n<li>AddCylinder()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">tram::Render</a></li>\n<li>AddLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree</a></li>\n<li>AddLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render</a></li>\n<li>AddLineAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">tram::Render</a></li>\n<li>AddLineMarker()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">tram::Render</a></li>\n<li>AddSphere()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">tram::Render</a></li>\n<li>AddText()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">tram::Render</a></li>\n<li>animation_list()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a\">tram::Render</a></li>\n<li>AssertDependency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">tram::System</a></li>\n<li>AwakenRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>Begin()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">tram::GUI</a></li>\n<li>BindKeyboardKey()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">tram::UI</a></li>\n<li>BindUniformBlock()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">tram::Render::API</a></li>\n<li>BlitDot()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08\">tram::Render::API</a></li>\n<li>BlitLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d\">tram::Render::API</a></li>\n<li>BlitLineOctant0()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde\">tram::Render::API</a></li>\n<li>BlitLineOctant1()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c\">tram::Render::API</a></li>\n<li>Button()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CallFunction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script</a></li>\n<li>CancelRequest()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async</a></li>\n<li>character_classes()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7\">tram::Ext::Kitchensink</a></li>\n<li>characters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4\">tram::Ext::Kitchensink</a></li>\n<li>CheckBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">tram::GUI</a></li>\n<li>CheckReverb()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">tram::Audio::Spatial</a></li>\n<li>Clicked()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07\">tram::GUI</a></li>\n<li>ClickHandled()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">tram::GUI</a></li>\n<li>ClickHandledLate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8\">tram::GUI</a></li>\n<li>ClipLineInClipSpace()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00\">tram::Render::API</a></li>\n<li>ClipRenderLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb\">tram::Render::API</a></li>\n<li>ClipSingleClipPointLineTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e\">tram::Render::API</a></li>\n<li>ClipSinglePointLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718\">tram::Render::API</a></li>\n<li>ClipSinglePointLineBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8\">tram::Render::API</a></li>\n<li>ClipSinglePointLineFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8\">tram::Render::API</a></li>\n<li>ClipSinglePointLineLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0\">tram::Render::API</a></li>\n<li>ClipSinglePointLineNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e\">tram::Render::API</a></li>\n<li>ClipSinglePointLineRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5\">tram::Render::API</a></li>\n<li>ClipSinglePointLineTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d\">tram::Render::API</a></li>\n<li>ClipSpaceToScreenSpace()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853\">tram::Render::API</a></li>\n<li>ClipTriangleList()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef\">tram::Render::API</a></li>\n<li>CloseAll()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295\">tram::Ext::Menu</a></li>\n<li>Collate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">tram::Stats</a></li>\n<li>COLOR_BLACK()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">tram::Render</a></li>\n<li>COLOR_BLUE()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">tram::Render</a></li>\n<li>COLOR_CYAN()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">tram::Render</a></li>\n<li>COLOR_GRAY()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">tram::Render</a></li>\n<li>COLOR_GREEN()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">tram::Render</a></li>\n<li>COLOR_PINK()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">tram::Render</a></li>\n<li>COLOR_RED()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">tram::Render</a></li>\n<li>COLOR_WHITE()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">tram::Render</a></li>\n<li>COLOR_YELLOW()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">tram::Render</a></li>\n<li>CompileShaders()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">tram::Render::API</a></li>\n<li>concat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">tram::implementation</a></li>\n<li>concat_fmt()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">tram::implementation</a></li>\n<li>concat_numeric()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">tram::implementation</a></li>\n<li>containers()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42\">tram::Ext::Kitchensink</a></li>\n<li>CreateIndexedVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API</a></li>\n<li>CreateSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">tram::Render::API</a></li>\n<li>CreateTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API</a></li>\n<li>CreateVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API</a></li>\n<li>CursorOver()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>DebugDrawTree()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB</a></li>\n<li>DebugMenue()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7\">tram::Ext::Menu</a></li>\n<li>DeleteLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API</a></li>\n<li>DeleteMaterial()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">tram::Render::API</a></li>\n<li>DIRECTION_FORWARD()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">tram</a></li>\n<li>DIRECTION_SIDE()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">tram</a></li>\n<li>DIRECTION_UP()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">tram</a></li>\n<li>DisableCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">tram::Platform::Window</a></li>\n<li>DisableRigidbodyDeactivation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">tram::Physics::API</a></li>\n<li>DisplayLog()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">tram</a></li>\n<li>DrawBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">tram::GUI</a></li>\n<li>DrawBoxHorizontal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">tram::GUI</a></li>\n<li>DrawDebug()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">tram::Physics::API</a></li>\n<li>DrawGlyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>EnableCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">tram::Platform::Window</a></li>\n<li>End()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">tram::GUI</a></li>\n<li>EndFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">tram::UI</a></li>\n<li>Evaluate()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">tram::Script</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>factions()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef\">tram::Ext::Kitchensink</a></li>\n<li>FillFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">tram::GUI</a></li>\n<li>Find()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">tram::System</a></li>\n<li>FindAllIntersectionsFromAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">tram::Render::AABB</a></li>\n<li>FindLights()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree</a></li>\n<li>FindMaterialType()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">tram::Render</a></li>\n<li>FindNearestFromRay()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB</a></li>\n<li>FindPaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">tram::Audio::Spatial</a></li>\n<li>FindPathsMetropolis()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">tram::Audio::Spatial</a></li>\n<li>FindShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">tram::Render::API</a></li>\n<li>FindVertexFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">tram::Render</a></li>\n<li>FinishResources()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">tram::Async</a></li>\n<li>Flags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">tram::Settings</a></li>\n<li>flush_console()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">tram::implementation</a></li>\n<li>flush_display()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">tram::implementation</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>GenerateID()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">tram</a></li>\n<li>Get()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">tram::Language</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">tram::Settings</a></li>\n<li>GetAllKeyboardKeyBindings()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">tram::UI</a></li>\n<li>GetAnyShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">tram::Render::API</a></li>\n<li>GetAxisSensitivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">tram::UI</a></li>\n<li>GetContext()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API</a></li>\n<li>GetCurrentMonitor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">tram::Platform::Window</a></li>\n<li>GetDeltaTick()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">tram</a></li>\n<li>GetDeltaTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">tram</a></li>\n<li>GetFlags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API</a></li>\n<li>GetFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">tram</a></li>\n<li>GetFrameTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">tram</a></li>\n<li>GetGlobal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script</a></li>\n<li>GetInputState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">tram::UI</a></li>\n<li>GetKeyboardAction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">tram::UI</a></li>\n<li>GetKeyboardActionName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">tram::UI</a></li>\n<li>GetKeyboardKeyName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">tram::UI</a></li>\n<li>GetMaterialTypeName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">tram::Render</a></li>\n<li>GetMaxIndexRangeLength()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API</a></li>\n<li>GetMonitorCount()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">tram::Platform::Window</a></li>\n<li>GetName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System</a></li>\n<li>GetRigidbodyVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">tram::Physics::API</a></li>\n<li>GetScaling()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">tram::GUI</a></li>\n<li>GetScreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API</a></li>\n<li>GetScreenHeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">tram::UI</a></li>\n<li>GetScreenWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">tram::UI</a></li>\n<li>GetSettings()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">tram::Settings</a></li>\n<li>GetShortName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System</a></li>\n<li>GetStat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">tram::Stats</a></li>\n<li>GetStatAverage()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">tram::Stats</a></li>\n<li>GetStatUncollated()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">tram::Stats</a></li>\n<li>GetSystemCount()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System</a></li>\n<li>GetTick()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">tram</a></li>\n<li>GetTickTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">tram</a></li>\n<li>GetTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">tram::Platform::Window</a></li>\n<li>GetVersion()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">tram</a></li>\n<li>GetVertexDefinition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">tram::Render</a></li>\n<li>GetVertexFormatName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">tram::Render</a></li>\n<li>GetViewDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">tram::Render</a></li>\n<li>GetViewFov()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">tram::Render</a></li>\n<li>GetViewPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">tram::Render</a></li>\n<li>GetViewRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">tram::Render</a></li>\n<li>GetVolume()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">tram::Audio</a></li>\n<li>GetWaitingResources()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">tram::Async</a></li>\n<li>Glyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">tram::GUI</a></li>\n<li>GlyphBorderV()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6\">tram::GUI</a></li>\n<li>GlyphHeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0\">tram::GUI</a></li>\n<li>GlyphWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>HorizontalDivider()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>IDENTITY_POSITION()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">tram</a></li>\n<li>IDENTITY_ROTATION()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">tram</a></li>\n<li>IDENTITY_SCALE()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">tram</a></li>\n<li>infos()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5\">tram::Ext::Kitchensink</a></li>\n<li>Init()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">tram::Core</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">tram::Ext::Camera</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">tram::Ext::Kitchensink</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">tram::Ext::Scripting::Lua</a>, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">tram::GUI</a>, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">tram::Physics</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">tram::Render</a>, <a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::UI</a></li>\n<li>InitAI()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">tram::Ext::Kitchensink</a></li>\n<li>InitCallbacks()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">tram::Ext::Menu</a></li>\n<li>InitExplorationPaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">tram::Audio::Spatial</a></li>\n<li>InitOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">tram::Audio::Spatial</a></li>\n<li>InsertDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API</a></li>\n<li>InsertLeaf()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB</a></li>\n<li>IntColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b\">tram::Render::API</a></li>\n<li>IsAudioSourcePlaying()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API</a></li>\n<li>IsDebugMode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">tram::Render::API</a></li>\n<li>IsFullscreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">tram::Platform::Window</a></li>\n<li>IsInitialized()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System</a></li>\n<li>IsRawInput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">tram::Platform::Window</a></li>\n<li>IsRenderContextThread()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">tram::Platform::Window</a></li>\n<li>IsVsync()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">tram::Platform::Window</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KeyCode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">tram::UI</a></li>\n<li>KeyMouse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">tram::UI</a></li>\n<li>KeyPress()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">tram::UI</a></li>\n<li>KeyRelease()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">tram::UI</a></li>\n<li>KeyScroll()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">tram::UI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>light_tree()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb\">tram::Render::LightTree</a></li>\n<li>light_tree_ids()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa\">tram::Render::API</a></li>\n<li>LineVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b\">tram::Render::API</a></li>\n<li>Load()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">tram::Settings</a></li>\n<li>LoadDependency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">tram::Async</a></li>\n<li>LoadResourcesFromDisk()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">tram::Async</a></li>\n<li>LoadResourcesFromMemory()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">tram::Async</a></li>\n<li>LoadScript()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script</a></li>\n<li>LockRenderlist()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">tram::Audio::Spatial</a></li>\n<li>log()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">tram::implementation</a></li>\n<li>Log()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">tram::ScriptableType</a></li>\n<li>MakeAudioBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API</a></li>\n<li>MakeAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API</a></li>\n<li>MakeCollisionShape()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">tram::Physics::API</a></li>\n<li>MakeLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API</a></li>\n<li>MakeMaterial()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">tram::Render::API</a></li>\n<li>MakeNewErrorModel()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">tram::Render</a></li>\n<li>MakeNewErrorTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">tram::Render</a></li>\n<li>MakeRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">tram::Physics::API</a></li>\n<li>MakeSomeSourcePaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">tram::Audio::Spatial</a></li>\n<li>MakeSpans()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869\">tram::Render::API</a></li>\n<li>MakeTrigger()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">tram::Physics::API</a></li>\n<li>MakeUniformBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e\">tram::Render::API</a></li>\n<li>MergeAABBMax()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">tram</a></li>\n<li>MergeAABBMin()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>NewLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PackVertexBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae\">tram::Render::API</a></li>\n<li>PackVertices()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51\">tram::Render::API</a></li>\n<li>Parse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">tram::Settings</a></li>\n<li>ParseFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424\">tram::Render::API</a></li>\n<li>PauseAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API</a></li>\n<li>PerspectiveDivision()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8\">tram::Render::API</a></li>\n<li>PlayAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API</a></li>\n<li>PointOutsideBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58\">tram::Render::API</a></li>\n<li>PointOutsideFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065\">tram::Render::API</a></li>\n<li>PointOutsideLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242\">tram::Render::API</a></li>\n<li>PointOutsideNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46\">tram::Render::API</a></li>\n<li>PointOutsideRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b\">tram::Render::API</a></li>\n<li>PointOutsideTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db\">tram::Render::API</a></li>\n<li>PointVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa\">tram::Render::API</a></li>\n<li>PollKeyboardAxis()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">tram::UI</a></li>\n<li>PollKeyboardAxisDelta()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">tram::UI</a></li>\n<li>PollKeyboardKey()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">tram::UI</a></li>\n<li>PopFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">tram::GUI</a></li>\n<li>PopFrameKeepCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">tram::GUI</a></li>\n<li>PositionRotationScaleToMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">tram</a></li>\n<li>PositionRotationToMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">tram</a></li>\n<li>Project()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">tram::Render</a></li>\n<li>ProjectInverse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">tram::Render</a></li>\n<li>ProjectLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">tram</a></li>\n<li>PushFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">tram::GUI</a></li>\n<li>PushFrameRelative()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">tram::GUI</a></li>\n<li>PushFrameRelativeKeepCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">tram::GUI</a></li>\n<li>PushRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>QuatLookAt()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>RadioButton()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">tram::GUI</a></li>\n<li>RasterizeTriangle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf\">tram::Render::API</a></li>\n<li>RasterizeTriangleLightmapped()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd\">tram::Render::API</a></li>\n<li>RasterizeTriangleShadedTextured()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a\">tram::Render::API</a></li>\n<li>Raycast()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">tram::Physics</a></li>\n<li>RayTriangleIntersection()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">tram</a></li>\n<li>RecursivelyAppendNextTopic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504\">tram::Ext::Kitchensink</a></li>\n<li>Register()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">tram::Settings</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System</a></li>\n<li>RegisterFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">tram::GUI</a></li>\n<li>RegisterKeyboardAction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">tram::UI</a></li>\n<li>RegisterMaterialType()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">tram::Render</a></li>\n<li>RegisterRenderEnvironmentMapShortcut()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">tram::Ext::Kitchensink</a></li>\n<li>RegisterShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API</a></li>\n<li>RegisterVertexDefinition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">tram::Render</a></li>\n<li>RegisterVertexFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">tram::Render</a></li>\n<li>Remove()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">tram::Stats</a></li>\n<li>RemoveAudioBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API</a></li>\n<li>RemoveAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API</a></li>\n<li>RemoveDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API</a></li>\n<li>RemoveLeaf()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB</a></li>\n<li>RemoveLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree</a></li>\n<li>Render()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">tram::Render</a></li>\n<li>RenderEnvironmentMaps()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">tram::Ext::Kitchensink</a></li>\n<li>RenderFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API</a></li>\n<li>RenderResult()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">tram::Audio::Spatial</a></li>\n<li>RequestResource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async</a></li>\n<li>RestoreColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">tram::GUI</a></li>\n<li>RestoreFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">tram::GUI</a></li>\n<li>RGBColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb\">tram::Render::API</a></li>\n<li>RotateAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>Save()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">tram::Settings</a></li>\n<li>SaveImageToDisk()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">tram::Platform</a></li>\n<li>ScanlineConvertTriangle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449\">tram::Render::API</a></li>\n<li>ScreenClose()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">tram::UI</a></li>\n<li>ScreenResize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">tram::UI</a></li>\n<li>Set()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">tram::Settings</a></li>\n<li>SetAmbientColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">tram::Render</a></li>\n<li>SetAndStore()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643\">tram::Settings</a></li>\n<li>SetAudioSourceBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API</a></li>\n<li>SetAudioSourceGain()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API</a></li>\n<li>SetAudioSourcePitch()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API</a></li>\n<li>SetAudioSourcePosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API</a></li>\n<li>SetAudioSourceRepeating()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API</a></li>\n<li>SetAudioSourceVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API</a></li>\n<li>SetAxisSensitivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">tram::UI</a></li>\n<li>SetColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">tram::GUI</a></li>\n<li>SetConsoleLogCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">tram</a></li>\n<li>SetCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">tram::UI</a></li>\n<li>SetCursorDelayed()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">tram::GUI</a></li>\n<li>SetCursorPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">tram::Platform::Window</a></li>\n<li>SetDebugMode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">tram::Render::API</a></li>\n<li>SetDevice()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API</a></li>\n<li>SetDisplayLogCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">tram</a></li>\n<li>SetDrawListAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">tram::Render::API</a></li>\n<li>SetDrawListColors()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API</a></li>\n<li>SetDrawListIndexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API</a></li>\n<li>SetDrawListIndexRange()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API</a></li>\n<li>SetDrawListMaterials()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">tram::Render::API</a></li>\n<li>SetDrawListShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API</a></li>\n<li>SetDrawListSpecularities()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8\">tram::Render::API</a></li>\n<li>SetDrawListSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">tram::Render::API</a></li>\n<li>SetDrawListTextureOffsets()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">tram::Render::API</a></li>\n<li>SetDrawListTextures()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c\">tram::Render::API</a></li>\n<li>SetDrawListVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API</a></li>\n<li>SetEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">tram::Render::API</a></li>\n<li>SetFadeDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">tram::Render::API</a></li>\n<li>SetFlags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API</a></li>\n<li>SetFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">tram::GUI</a></li>\n<li>SetFromRaw()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea\">tram::Settings</a></li>\n<li>SetFullscreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">tram::Platform::Window</a></li>\n<li>SetFunction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script</a></li>\n<li>SetGlobal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script</a></li>\n<li>SetGlyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">tram::GUI</a></li>\n<li>SetGlyphDefaults()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">tram::GUI</a></li>\n<li>SetInitialized()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System</a></li>\n<li>SetInputState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">tram::UI</a></li>\n<li>SetInterface()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">tram::Script</a></li>\n<li>SetLayer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API</a></li>\n<li>SetLightingParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API</a></li>\n<li>SetLightmap()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API</a></li>\n<li>SetLightParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API</a></li>\n<li>SetLights()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API</a></li>\n<li>SetListenerGain()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">tram::Audio::API</a></li>\n<li>SetListenerOrientation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio</a></li>\n<li>SetListenerPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio</a></li>\n<li>SetMaterialColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">tram::Render::API</a></li>\n<li>SetMaterialReflectivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">tram::Render::API</a></li>\n<li>SetMaterialSpecularExponent()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">tram::Render::API</a></li>\n<li>SetMaterialSpecularTransparency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">tram::Render::API</a></li>\n<li>SetMaterialSpecularWeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">tram::Render::API</a></li>\n<li>SetMaterialTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">tram::Render::API</a></li>\n<li>SetMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API</a></li>\n<li>SetMonitor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">tram::Platform::Window</a></li>\n<li>SetOrthoRatio()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">tram::Render</a></li>\n<li>SetPose()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API</a></li>\n<li>SetProjectionMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API</a></li>\n<li>SetRawInput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">tram::Platform::Window</a></li>\n<li>SetRigidbodyAngularFactor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionMask()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">tram::Physics::API</a></li>\n<li>SetRigidbodyDebugDrawing()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">tram::Physics::API</a></li>\n<li>SetRigidbodyKinematic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">tram::Physics::API</a></li>\n<li>SetRigidbodyLinearFactor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">tram::Physics::API</a></li>\n<li>SetRigidbodyLocation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">tram::Physics::API</a></li>\n<li>SetRigidbodyMass()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">tram::Physics::API</a></li>\n<li>SetRigidbodyRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">tram::Physics::API</a></li>\n<li>SetRigidbodyTransformCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">tram::Physics::API</a></li>\n<li>SetRigidbodyVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">tram::Physics::API</a></li>\n<li>SetScale()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5\">tram::Platform</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">tram::Platform::Window</a></li>\n<li>SetScaling()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">tram::GUI</a></li>\n<li>SetScreenClear()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API</a></li>\n<li>SetScreenSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">tram::Render</a></li>\n<li>SetSelectedText()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">tram::GUI</a></li>\n<li>SetSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">tram::Platform::Window</a></li>\n<li>SetSphericalHarmonic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">tram::Render::API</a></li>\n<li>SetState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">tram::System</a></li>\n<li>SetSunColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">tram::Render</a></li>\n<li>SetSunDirection()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">tram::Render</a></li>\n<li>SetSystemLoggingSeverity()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">tram</a></li>\n<li>SetTitle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">tram::Platform::Window</a></li>\n<li>SetTriggerCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">tram::Physics::API</a></li>\n<li>SetTriggerCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">tram::Physics::API</a></li>\n<li>SetTriggerCollisionMask()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">tram::Physics::API</a></li>\n<li>SetTriggerLocation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">tram::Physics::API</a></li>\n<li>SetTriggerRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">tram::Physics::API</a></li>\n<li>SetViewDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">tram::Render</a></li>\n<li>SetViewFov()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">tram::Render</a></li>\n<li>SetViewMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API</a></li>\n<li>SetViewParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4\">tram::Render::API</a></li>\n<li>SetViewPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">tram::Render</a></li>\n<li>SetViewRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">tram::Render</a></li>\n<li>SetVolume()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">tram::Audio</a></li>\n<li>SetVsync()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">tram::Platform::Window</a></li>\n<li>SetWebMainLoop()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">tram::UI</a></li>\n<li>SetWindowSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">tram::UI</a></li>\n<li>SetWindowTitle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">tram::UI</a></li>\n<li>Shapecast()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">tram::Physics</a></li>\n<li>ShouldExit()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">tram::UI</a></li>\n<li>ShowErrorDialog()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">tram::Platform</a></li>\n<li>SleepRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">tram::Physics::API</a></li>\n<li>Slider()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">tram::GUI</a></li>\n<li>SpinRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">tram::Physics::API</a></li>\n<li>Start()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">tram::Stats</a></li>\n<li>StepPhysics()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">tram::Physics::API</a></li>\n<li>Stop()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">tram::Stats</a></li>\n<li>StopAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API</a></li>\n<li>string_float()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770\">tram::Ext::Menu</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>Text()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">tram::GUI</a></li>\n<li>TextBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">tram::GUI</a></li>\n<li>TextWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f\">tram::GUI</a></li>\n<li>to_chars_concat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe\">tram::implementation</a></li>\n<li>ToggleMenuState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c\">tram::Ext::Menu</a></li>\n<li>Track()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">tram::Loader</a></li>\n<li>TriangleVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f\">tram::Render::API</a></li>\n<li>TryDebugging()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">tram::Platform</a></li>\n<li>TypeToString()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>Uninit()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">tram::Ext::Scripting::Lua</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::UI</a></li>\n<li>UninitOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">tram::Audio::Spatial</a></li>\n<li>UnlockRenderlist()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">tram::Audio::Spatial</a></li>\n<li>Untrack()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">tram::Loader</a></li>\n<li>Update()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">tram::Core</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">tram::Ext::Camera</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">tram::Ext::Kitchensink</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu</a>, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">tram::GUI</a>, <a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">tram::Loader</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">tram::Physics</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::UI</a></li>\n<li>UpdateAI()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">tram::Ext::Kitchensink</a></li>\n<li>UpdateCallbacks()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">tram::Ext::Menu</a></li>\n<li>UpdateDrawListFonts()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">tram::GUI</a></li>\n<li>UpdateHierarchy()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111\">tram::Ext::Kitchensink</a></li>\n<li>UpdateOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">tram::Audio::Spatial</a></li>\n<li>UpdateSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">tram::Render::API</a></li>\n<li>UpdateVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API</a></li>\n<li>UploadUniformBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880\">tram::Render::API</a></li>\n<li>UTF16ToLatin7()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">tram::Language</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>ValidateResult()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">tram::Audio::Spatial</a></li>\n<li>VertexDefinitionToFVF()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119\">tram::Render::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>write_text_to_chars()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a05f052de2fe89bf3f36446d87f563283\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_x\" name=\"index_x\"></a>- x -</h3><ul>\n<li>xorshift()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad8eaea57968b2ae698bf65dd493ff758\">tram::Audio::Spatial</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_func_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>Yeet()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">tram::ScriptableType</a></li>\n<li>YeetCollisionShape()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">tram::Physics::API</a></li>\n<li>YeetRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">tram::Physics::API</a></li>\n<li>YeetTrigger()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_g.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>GenerateID()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">tram</a></li>\n<li>Get()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">tram::Language</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">tram::Settings</a></li>\n<li>get_trf_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">tram::Physics::API</a></li>\n<li>GetAllKeyboardKeyBindings()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">tram::UI</a></li>\n<li>GetAnyShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">tram::Render::API</a></li>\n<li>GetAxisSensitivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">tram::UI</a></li>\n<li>GetContext()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API</a></li>\n<li>GetCurrentMonitor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">tram::Platform::Window</a></li>\n<li>GetDeltaTick()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">tram</a></li>\n<li>GetDeltaTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">tram</a></li>\n<li>GetFlags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API</a></li>\n<li>GetFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">tram</a></li>\n<li>GetFrameTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">tram</a></li>\n<li>GetGlobal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script</a></li>\n<li>GetInputState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">tram::UI</a></li>\n<li>GetKeyboardAction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">tram::UI</a></li>\n<li>GetKeyboardActionName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">tram::UI</a></li>\n<li>GetKeyboardKeyName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">tram::UI</a></li>\n<li>GetMaterialTypeName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">tram::Render</a></li>\n<li>GetMaxIndexRangeLength()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API</a></li>\n<li>GetMonitorCount()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">tram::Platform::Window</a></li>\n<li>GetName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System</a></li>\n<li>GetRigidbodyVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">tram::Physics::API</a></li>\n<li>GetScaling()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">tram::GUI</a></li>\n<li>GetScreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API</a></li>\n<li>GetScreenHeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">tram::UI</a></li>\n<li>GetScreenWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">tram::UI</a></li>\n<li>GetSettings()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">tram::Settings</a></li>\n<li>GetShortName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System</a></li>\n<li>GetStat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">tram::Stats</a></li>\n<li>GetStatAverage()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">tram::Stats</a></li>\n<li>GetStatUncollated()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">tram::Stats</a></li>\n<li>GetSystemCount()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System</a></li>\n<li>GetTick()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">tram</a></li>\n<li>GetTickTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">tram</a></li>\n<li>GetTime()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">tram::Platform::Window</a></li>\n<li>GetVersion()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">tram</a></li>\n<li>GetVertexDefinition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">tram::Render</a></li>\n<li>GetVertexFormatName()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">tram::Render</a></li>\n<li>GetViewDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">tram::Render</a></li>\n<li>GetViewFov()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">tram::Render</a></li>\n<li>GetViewPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">tram::Render</a></li>\n<li>GetViewRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">tram::Render</a></li>\n<li>GetVolume()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">tram::Audio</a></li>\n<li>GetWaitingResources()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">tram::Async</a></li>\n<li>Glyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">tram::GUI</a></li>\n<li>glyph_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI</a></li>\n<li>GlyphBorderV()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6\">tram::GUI</a></li>\n<li>GlyphHeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0\">tram::GUI</a></li>\n<li>GlyphType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">tram::GUI</a></li>\n<li>GlyphWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6\">tram::GUI</a></li>\n<li>GUI&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>hierarchy_map&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e\">tram::Ext::Kitchensink</a></li>\n<li>HorizontalDivider()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>id_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram</a></li>\n<li>IDENTITY_POSITION()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">tram</a></li>\n<li>IDENTITY_ROTATION()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">tram</a></li>\n<li>IDENTITY_SCALE()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">tram</a></li>\n<li>index_arrays&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8\">tram::Render::API</a></li>\n<li>infos()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5\">tram::Ext::Kitchensink</a></li>\n<li>Init()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">tram::Core</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">tram::Ext::Camera</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">tram::Ext::Kitchensink</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">tram::Ext::Menu</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">tram::Ext::Scripting::Lua</a>, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">tram::GUI</a>, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">tram::Physics</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">tram::Render</a>, <a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script</a></li>\n<li>INIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">tram::System</a></li>\n<li>Init()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::UI</a></li>\n<li>InitAI()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">tram::Ext::Kitchensink</a></li>\n<li>InitCallbacks()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">tram::Ext::Menu</a></li>\n<li>InitExplorationPaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">tram::Audio::Spatial</a></li>\n<li>InitOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">tram::Audio::Spatial</a></li>\n<li>InputState&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">tram::UI</a></li>\n<li>InsertDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API</a></li>\n<li>InsertLeaf()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB</a></li>\n<li>IntColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b\">tram::Render::API</a></li>\n<li>intercepts&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2\">tram::Ext::Menu</a></li>\n<li>INVALID&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">tram::System</a></li>\n<li>is_fullscreen&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765\">tram::Platform</a></li>\n<li>IsAudioSourcePlaying()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API</a></li>\n<li>IsDebugMode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">tram::Render::API</a></li>\n<li>IsFullscreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">tram::Platform::Window</a></li>\n<li>IsInitialized()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System</a></li>\n<li>IsRawInput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">tram::Platform::Window</a></li>\n<li>IsRenderContextThread()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">tram::Platform::Window</a></li>\n<li>IsVsync()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">tram::Platform::Window</a></li>\n<li>item_action_func&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">tram::Ext::Kitchensink</a></li>\n<li>ivec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram</a></li>\n<li>ivec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_k.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KEY_0&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">tram::UI</a></li>\n<li>KEY_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">tram::UI</a></li>\n<li>KEY_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">tram::UI</a></li>\n<li>KEY_3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">tram::UI</a></li>\n<li>KEY_4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">tram::UI</a></li>\n<li>KEY_5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">tram::UI</a></li>\n<li>KEY_6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">tram::UI</a></li>\n<li>KEY_7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">tram::UI</a></li>\n<li>KEY_8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">tram::UI</a></li>\n<li>KEY_9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">tram::UI</a></li>\n<li>KEY_A&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">tram::UI</a></li>\n<li>KEY_ACTION_ACTIVATE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">tram::UI</a></li>\n<li>KEY_ACTION_BACKWARD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">tram::UI</a></li>\n<li>KEY_ACTION_CROUCH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">tram::UI</a></li>\n<li>KEY_ACTION_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">tram::UI</a></li>\n<li>KEY_ACTION_FLY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">tram::UI</a></li>\n<li>KEY_ACTION_FORWARD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">tram::UI</a></li>\n<li>KEY_ACTION_JUMP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">tram::UI</a></li>\n<li>KEY_ACTION_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">tram::UI</a></li>\n<li>KEY_ACTION_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">tram::UI</a></li>\n<li>KEY_ACTION_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">tram::UI</a></li>\n<li>KEY_ACTION_PRIMARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">tram::UI</a></li>\n<li>KEY_ACTION_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">tram::UI</a></li>\n<li>KEY_ACTION_SECONDARY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">tram::UI</a></li>\n<li>KEY_ACTION_SPRINT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">tram::UI</a></li>\n<li>KEY_ACTION_STRAFE_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">tram::UI</a></li>\n<li>KEY_ACTION_STRAFE_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">tram::UI</a></li>\n<li>KEY_ACTION_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">tram::UI</a></li>\n<li>KEY_APOSTROPHE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">tram::UI</a></li>\n<li>KEY_B&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">tram::UI</a></li>\n<li>KEY_BACKSLASH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">tram::UI</a></li>\n<li>KEY_BACKSPACE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">tram::UI</a></li>\n<li>KEY_C&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">tram::UI</a></li>\n<li>KEY_CAPS_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">tram::UI</a></li>\n<li>KEY_COMMA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">tram::UI</a></li>\n<li>KEY_D&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">tram::UI</a></li>\n<li>KEY_DELETE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">tram::UI</a></li>\n<li>KEY_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">tram::UI</a></li>\n<li>KEY_E&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">tram::UI</a></li>\n<li>KEY_END&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">tram::UI</a></li>\n<li>KEY_ENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">tram::UI</a></li>\n<li>KEY_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">tram::UI</a></li>\n<li>KEY_ESCAPE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">tram::UI</a></li>\n<li>KEY_F&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">tram::UI</a></li>\n<li>KEY_F1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">tram::UI</a></li>\n<li>KEY_F10&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">tram::UI</a></li>\n<li>KEY_F11&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">tram::UI</a></li>\n<li>KEY_F12&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">tram::UI</a></li>\n<li>KEY_F13&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">tram::UI</a></li>\n<li>KEY_F14&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">tram::UI</a></li>\n<li>KEY_F15&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">tram::UI</a></li>\n<li>KEY_F16&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">tram::UI</a></li>\n<li>KEY_F17&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">tram::UI</a></li>\n<li>KEY_F18&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">tram::UI</a></li>\n<li>KEY_F19&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">tram::UI</a></li>\n<li>KEY_F2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">tram::UI</a></li>\n<li>KEY_F20&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">tram::UI</a></li>\n<li>KEY_F21&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">tram::UI</a></li>\n<li>KEY_F22&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">tram::UI</a></li>\n<li>KEY_F23&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">tram::UI</a></li>\n<li>KEY_F24&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">tram::UI</a></li>\n<li>KEY_F25&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">tram::UI</a></li>\n<li>KEY_F3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">tram::UI</a></li>\n<li>KEY_F4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">tram::UI</a></li>\n<li>KEY_F5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">tram::UI</a></li>\n<li>KEY_F6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">tram::UI</a></li>\n<li>KEY_F7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">tram::UI</a></li>\n<li>KEY_F8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">tram::UI</a></li>\n<li>KEY_F9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">tram::UI</a></li>\n<li>KEY_G&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">tram::UI</a></li>\n<li>KEY_GRAVE_ACCENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">tram::UI</a></li>\n<li>KEY_H&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">tram::UI</a></li>\n<li>KEY_HOME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">tram::UI</a></li>\n<li>KEY_I&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">tram::UI</a></li>\n<li>KEY_INSERT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">tram::UI</a></li>\n<li>KEY_J&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">tram::UI</a></li>\n<li>KEY_K&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">tram::UI</a></li>\n<li>KEY_KP_0&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">tram::UI</a></li>\n<li>KEY_KP_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">tram::UI</a></li>\n<li>KEY_KP_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">tram::UI</a></li>\n<li>KEY_KP_3&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">tram::UI</a></li>\n<li>KEY_KP_4&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">tram::UI</a></li>\n<li>KEY_KP_5&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">tram::UI</a></li>\n<li>KEY_KP_6&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">tram::UI</a></li>\n<li>KEY_KP_7&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">tram::UI</a></li>\n<li>KEY_KP_8&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">tram::UI</a></li>\n<li>KEY_KP_9&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">tram::UI</a></li>\n<li>KEY_KP_ADD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">tram::UI</a></li>\n<li>KEY_KP_DECIMAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">tram::UI</a></li>\n<li>KEY_KP_DIVIDE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">tram::UI</a></li>\n<li>KEY_KP_ENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">tram::UI</a></li>\n<li>KEY_KP_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">tram::UI</a></li>\n<li>KEY_KP_MULTIPLY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">tram::UI</a></li>\n<li>KEY_KP_SUBTRACT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">tram::UI</a></li>\n<li>KEY_L&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">tram::UI</a></li>\n<li>KEY_LASTAXIS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">tram::UI</a></li>\n<li>KEY_LASTKEY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">tram::UI</a></li>\n<li>KEY_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">tram::UI</a></li>\n<li>KEY_LEFT_ALT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">tram::UI</a></li>\n<li>KEY_LEFT_BRACKET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">tram::UI</a></li>\n<li>KEY_LEFT_CONTROL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">tram::UI</a></li>\n<li>KEY_LEFT_SHIFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">tram::UI</a></li>\n<li>KEY_LEFT_SUPER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">tram::UI</a></li>\n<li>KEY_LEFTMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">tram::UI</a></li>\n<li>KEY_M&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">tram::UI</a></li>\n<li>KEY_MENU&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">tram::UI</a></li>\n<li>KEY_MIDDLEMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">tram::UI</a></li>\n<li>KEY_MINUS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">tram::UI</a></li>\n<li>KEY_MOUSE_SCROLL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">tram::UI</a></li>\n<li>KEY_MOUSE_X&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">tram::UI</a></li>\n<li>KEY_MOUSE_Y&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">tram::UI</a></li>\n<li>KEY_N&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">tram::UI</a></li>\n<li>KEY_NUM_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">tram::UI</a></li>\n<li>KEY_O&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">tram::UI</a></li>\n<li>KEY_P&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">tram::UI</a></li>\n<li>KEY_PAGE_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">tram::UI</a></li>\n<li>KEY_PAGE_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">tram::UI</a></li>\n<li>KEY_PAUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">tram::UI</a></li>\n<li>KEY_PERIOD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">tram::UI</a></li>\n<li>KEY_PRINT_SCREEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">tram::UI</a></li>\n<li>KEY_Q&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">tram::UI</a></li>\n<li>KEY_R&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">tram::UI</a></li>\n<li>KEY_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">tram::UI</a></li>\n<li>KEY_RIGHT_ALT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">tram::UI</a></li>\n<li>KEY_RIGHT_BRACKET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">tram::UI</a></li>\n<li>KEY_RIGHT_CONTROL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">tram::UI</a></li>\n<li>KEY_RIGHT_SHIFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">tram::UI</a></li>\n<li>KEY_RIGHT_SUPER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">tram::UI</a></li>\n<li>KEY_RIGHTMOUSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">tram::UI</a></li>\n<li>KEY_S&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">tram::UI</a></li>\n<li>KEY_SCROLL_LOCK&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">tram::UI</a></li>\n<li>KEY_SEMICOLON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">tram::UI</a></li>\n<li>KEY_SLASH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">tram::UI</a></li>\n<li>KEY_SPACE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">tram::UI</a></li>\n<li>KEY_T&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">tram::UI</a></li>\n<li>KEY_TAB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">tram::UI</a></li>\n<li>KEY_U&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">tram::UI</a></li>\n<li>KEY_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">tram::UI</a></li>\n<li>KEY_V&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">tram::UI</a></li>\n<li>KEY_W&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">tram::UI</a></li>\n<li>KEY_WORLD_1&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">tram::UI</a></li>\n<li>KEY_WORLD_2&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">tram::UI</a></li>\n<li>KEY_X&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">tram::UI</a></li>\n<li>KEY_Y&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">tram::UI</a></li>\n<li>KEY_Z&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">tram::UI</a></li>\n<li>KeyboardAction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">tram::UI</a></li>\n<li>KEYBOARDACTION_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">tram</a></li>\n<li>keyboardaction_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">tram::UI</a></li>\n<li>KeyboardAxis&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">tram::UI</a></li>\n<li>KeyboardKey&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">tram::UI</a></li>\n<li>KeyCode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">tram::UI</a></li>\n<li>KeyMouse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">tram::UI</a></li>\n<li>KeyPress()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">tram::UI</a></li>\n<li>KeyRelease()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">tram::UI</a></li>\n<li>KeyScroll()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">tram::UI</a></li>\n<li>KITCHENSINK_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>LANGUAGE_STRING_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">tram</a></li>\n<li>LANUGAGE_STRING_CHARACTER_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">tram</a></li>\n<li>last_update_frame&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0\">tram::GUI</a></li>\n<li>layer_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render</a></li>\n<li>light_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8\">tram::Render::LightTree</a></li>\n<li>light_tree&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb\">tram::Render::LightTree</a></li>\n<li>light_tree_ids()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa\">tram::Render::API</a></li>\n<li>light_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955\">tram::Render::API</a></li>\n<li>light_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32\">tram::Render::API</a></li>\n<li>LINE_HIGH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">tram::GUI</a></li>\n<li>LINE_LOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">tram::GUI</a></li>\n<li>LINE_NORMAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">tram::GUI</a></li>\n<li>LINE_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97\">tram::Render::API</a></li>\n<li>LineVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b\">tram::Render::API</a></li>\n<li>LISTENER_DEPTH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">tram::Audio::Spatial</a></li>\n<li>listener_orientation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">tram::Audio::Spatial</a></li>\n<li>listener_position&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_delay&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_distance&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_force&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_normalized&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">tram::Audio::Spatial</a></li>\n<li>listener_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram</a></li>\n<li>Load()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">tram::Language</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">tram::Settings</a></li>\n<li>LoadDependency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">tram::Async</a></li>\n<li>LoadResourcesFromDisk()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">tram::Async</a></li>\n<li>LoadResourcesFromMemory()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">tram::Async</a></li>\n<li>LoadScript()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script</a></li>\n<li>LockRenderlist()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">tram::Audio::Spatial</a></li>\n<li>log()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">tram::implementation</a></li>\n<li>Log()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">tram</a></li>\n<li>look_at_direction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e\">tram::Ext::Camera</a></li>\n<li>look_at_entity&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18\">tram::Ext::Camera</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_m.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>Make()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">tram::ScriptableType</a></li>\n<li>MakeAudioBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API</a></li>\n<li>MakeAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API</a></li>\n<li>MakeCollisionShape()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">tram::Physics::API</a></li>\n<li>MakeLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API</a></li>\n<li>MakeMaterial()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">tram::Render::API</a></li>\n<li>MakeNewErrorModel()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">tram::Render</a></li>\n<li>MakeNewErrorTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">tram::Render</a></li>\n<li>MakeRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">tram::Physics::API</a></li>\n<li>MakeSomeSourcePaths()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">tram::Audio::Spatial</a></li>\n<li>MakeSpans()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869\">tram::Render::API</a></li>\n<li>MakeTrigger()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">tram::Physics::API</a></li>\n<li>MakeUniformBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e\">tram::Render::API</a></li>\n<li>mat2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">tram</a></li>\n<li>mat4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram</a></li>\n<li>MATERIAL_ENVIRONMENTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">tram::Render</a></li>\n<li>MATERIAL_FLAT_COLOR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">tram::Render</a></li>\n<li>MATERIAL_GLYPH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">tram::Render</a></li>\n<li>MATERIAL_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">tram::Render</a></li>\n<li>MATERIAL_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">tram::Render</a></li>\n<li>MATERIAL_MSDF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">tram::Render</a></li>\n<li>MATERIAL_TEXTURE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">tram::Render</a></li>\n<li>MATERIAL_TEXTURE_ALPHA&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">tram::Render</a></li>\n<li>MATERIAL_WATER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">tram::Render</a></li>\n<li>MaterialFilter&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render</a></li>\n<li>MaterialProperty&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">tram::Render</a></li>\n<li>materialtype_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render</a></li>\n<li>MaterialTypes&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">tram::Render</a></li>\n<li>matrices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7\">tram::Render::API</a></li>\n<li>matrix_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0\">tram::Render::API</a></li>\n<li>matrix_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d\">tram::Render::API</a></li>\n<li>MAX_EVENT_TYPES&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a67acb96d23f8bfea55638bc35178d08d\">tram</a></li>\n<li>MAX_FRAGMENT_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">tram</a></li>\n<li>MAX_LINKED_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">tram</a></li>\n<li>MAX_LUA_FUNCTIONS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952\">tram::Ext::Scripting::Lua</a></li>\n<li>MAX_MATERIAL_TYPES&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">tram</a></li>\n<li>MAX_VERTEX_FORMATS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">tram</a></li>\n<li>MAX_VERTEX_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">tram</a></li>\n<li>MENU&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">tram::Settings</a></li>\n<li>menu_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113\">tram::Ext::Menu</a></li>\n<li>menu_stack&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014\">tram::Ext::Menu</a></li>\n<li>MENU_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674\">tram::Ext::Menu</a></li>\n<li>MergeAABBMax()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">tram</a></li>\n<li>MergeAABBMin()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">tram</a></li>\n<li>MESSAGE_DATA_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">tram</a></li>\n<li>MESSAGE_PRIORITY_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">tram</a></li>\n<li>MESSAGE_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">tram</a></li>\n<li>message_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram</a></li>\n<li>MESSAGE_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">tram</a></li>\n<li>METADATA_RIGIDBODY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\">tram::Physics::API</a></li>\n<li>METADATA_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\">tram::Physics::API</a></li>\n<li>MetadataType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">tram::Physics::API</a></li>\n<li>MISC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">tram::System</a></li>\n<li>model_matrix_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd\">tram::Render::API</a></li>\n<li>model_matrix_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec\">tram::Render::API</a></li>\n<li>modelMatrices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598\">tram::Render::API</a></li>\n<li>mouse_click_not_handled&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca\">tram::GUI</a></li>\n<li>mouse_click_not_handled_late&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6\">tram::GUI</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_n.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>name_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram</a></li>\n<li>NameCount&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">tram::Render</a></li>\n<li>NAMED_ENTITY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">tram</a></li>\n<li>near_plane&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f\">tram::Render</a></li>\n<li>NewLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">tram::GUI</a></li>\n<li>node_id_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">tram</a></li>\n<li>NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">tram::Settings</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_o.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>orientation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI</a></li>\n<li>ortho_ratio&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d\">tram::Render</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_p.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PackVertexBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae\">tram::Render::API</a></li>\n<li>PackVertices()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51\">tram::Render::API</a></li>\n<li>parameters&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">tram::Ext::Scripting::Lua</a></li>\n<li>Parse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">tram::Settings</a></li>\n<li>ParseFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424\">tram::Render::API</a></li>\n<li>PATH_CURVE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">tram</a></li>\n<li>PATH_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">tram</a></li>\n<li>PATH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">tram</a></li>\n<li>PATH_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">tram</a></li>\n<li>PATH_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">tram</a></li>\n<li>PATH_STRAIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">tram</a></li>\n<li>PATHS_FOR_LISTENER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">tram::Audio::Spatial</a></li>\n<li>PATHS_FOR_RENDERING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">tram::Audio::Spatial</a></li>\n<li>PATHS_FOR_SOURCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">tram::Audio::Spatial</a></li>\n<li>PathType&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">tram</a></li>\n<li>PauseAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API</a></li>\n<li>PerspectiveDivision()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8\">tram::Render::API</a></li>\n<li>PHYSICS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">tram::System</a></li>\n<li>PHYSICS_GRAVITY&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">tram</a></li>\n<li>PHYSICS_GROUND_PLANE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">tram</a></li>\n<li>PLATFORM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">tram::System</a></li>\n<li>PlayAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API</a></li>\n<li>PointOutsideBottomPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58\">tram::Render::API</a></li>\n<li>PointOutsideFarPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065\">tram::Render::API</a></li>\n<li>PointOutsideLeftPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242\">tram::Render::API</a></li>\n<li>PointOutsideNearPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46\">tram::Render::API</a></li>\n<li>PointOutsideRightPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b\">tram::Render::API</a></li>\n<li>PointOutsideTopPlane()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db\">tram::Render::API</a></li>\n<li>PointVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa\">tram::Render::API</a></li>\n<li>PollKeyboardAxis()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">tram::UI</a></li>\n<li>PollKeyboardAxisDelta()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">tram::UI</a></li>\n<li>PollKeyboardKey()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">tram::UI</a></li>\n<li>PoopProxy&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">tram</a></li>\n<li>PopFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">tram::GUI</a></li>\n<li>PopFrameKeepCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">tram::GUI</a></li>\n<li>PositionRotationScaleToMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">tram</a></li>\n<li>PositionRotationToMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">tram</a></li>\n<li>Project()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">tram::Render</a></li>\n<li>ProjectInverse()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">tram::Render</a></li>\n<li>projection&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc\">tram::Render</a></li>\n<li>ProjectLine()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">tram</a></li>\n<li>PROPERTY_COMPUTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">tram::Render</a></li>\n<li>PROPERTY_CONCRETE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">tram::Render</a></li>\n<li>PROPERTY_FLESH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">tram::Render</a></li>\n<li>PROPERTY_GLASS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">tram::Render</a></li>\n<li>PROPERTY_GRASS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">tram::Render</a></li>\n<li>PROPERTY_GRATE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">tram::Render</a></li>\n<li>PROPERTY_METAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">tram::Render</a></li>\n<li>PROPERTY_METAL_THIN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">tram::Render</a></li>\n<li>PROPERTY_SLIME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">tram::Render</a></li>\n<li>PROPERTY_SNOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">tram::Render</a></li>\n<li>PROPERTY_TILE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">tram::Render</a></li>\n<li>PROPERTY_WOOD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">tram::Render</a></li>\n<li>PushFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">tram::GUI</a></li>\n<li>PushFrameRelative()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">tram::GUI</a></li>\n<li>PushFrameRelativeKeepCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">tram::GUI</a></li>\n<li>PushRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_q.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>quat&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram</a></li>\n<li>QuatLookAt()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">tram</a></li>\n<li>quest_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_INCREMENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SET_OBJECTIVE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SET_VARIABLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_TGR_SHOW_MESSAGE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_AND&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_NOT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_OR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_CONDITION_SCRIPT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_ENTITY_ITEM_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_INVALID&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_OBJECTIVE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_GREATER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_GREATER_OR_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_IS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_IS_NOT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_LESS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">tram::Ext::Kitchensink</a></li>\n<li>QUEST_VAR_VALUE_LESS_OR_EQUAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">tram::Ext::Kitchensink</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_r.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>RadioButton()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">tram::GUI</a></li>\n<li>RasterizeTriangle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf\">tram::Render::API</a></li>\n<li>RasterizeTriangleLightmapped()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd\">tram::Render::API</a></li>\n<li>RasterizeTriangleShadedTextured()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a\">tram::Render::API</a></li>\n<li>Raycast()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">tram::Physics</a></li>\n<li>RayTriangleIntersection()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">tram</a></li>\n<li>READY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">tram::System</a></li>\n<li>RecursivelyAppendNextTopic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504\">tram::Ext::Kitchensink</a></li>\n<li>REFERENCE_RENDERCOMPONENT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB</a></li>\n<li>ReferenceType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB</a></li>\n<li>Register()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">tram::ScriptableType</a>, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">tram::Settings</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System</a></li>\n<li>RegisterFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">tram::GUI</a></li>\n<li>RegisterKeyboardAction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">tram::UI</a></li>\n<li>RegisterMaterialType()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">tram::Render</a></li>\n<li>RegisterRenderEnvironmentMapShortcut()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">tram::Ext::Kitchensink</a></li>\n<li>RegisterShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API</a></li>\n<li>RegisterVertexDefinition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">tram::Render</a></li>\n<li>RegisterVertexFormat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">tram::Render</a></li>\n<li>Remove()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">tram::Stats</a></li>\n<li>RemoveAudioBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API</a></li>\n<li>RemoveAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API</a></li>\n<li>RemoveDrawListEntry()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API</a></li>\n<li>RemoveLeaf()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB</a></li>\n<li>RemoveLight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree</a></li>\n<li>Render()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">tram::Render</a></li>\n<li>RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">tram::System</a></li>\n<li>RenderEnvironmentMaps()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">tram::Ext::Kitchensink</a></li>\n<li>renderflags&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">tram::Render</a></li>\n<li>RenderFrame()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API</a></li>\n<li>RenderResult()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">tram::Audio::Spatial</a></li>\n<li>RequestNotification&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">tram::Async</a></li>\n<li>RequestResource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async</a></li>\n<li>Resource&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats</a></li>\n<li>RESOURCE_DRAWCALL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">tram::Stats</a></li>\n<li>RESOURCE_LIMIT_COLLISION_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">tram</a></li>\n<li>RESOURCE_LIMIT_LIGHT_GRAPH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">tram</a></li>\n<li>RESOURCE_LIMIT_MATERIAL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">tram</a></li>\n<li>RESOURCE_LIMIT_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">tram</a></li>\n<li>RESOURCE_LIMIT_PATH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">tram</a></li>\n<li>RESOURCE_LIMIT_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">tram</a></li>\n<li>RESOURCE_LIMIT_SOUND_GRAPH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">tram</a></li>\n<li>RESOURCE_LIMIT_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">tram</a></li>\n<li>RESOURCE_LOADER_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">tram</a></li>\n<li>RESOURCE_LOADER_REQUEST_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">tram</a></li>\n<li>RESOURCE_VRAM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">tram::Stats</a></li>\n<li>RestoreColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">tram::GUI</a></li>\n<li>RestoreFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">tram::GUI</a></li>\n<li>RGBColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb\">tram::Render::API</a></li>\n<li>RIGIDBODY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">tram</a></li>\n<li>rigidbody_metadata_pool&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681\">tram::Physics::API</a></li>\n<li>RotateAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_s.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>SAMPLERATE_11025&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">tram::Audio::Spatial</a></li>\n<li>SAMPLERATE_22050&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">tram::Audio::Spatial</a></li>\n<li>SAMPLERATE_44100&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">tram::Audio::Spatial</a></li>\n<li>Save()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">tram::Settings</a></li>\n<li>SaveImageToDisk()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">tram::Platform</a></li>\n<li>ScanlineConvertTriangle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449\">tram::Render::API</a></li>\n<li>scanlines&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">tram::Render::API</a></li>\n<li>screen_clear_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e\">tram::Render::API</a></li>\n<li>ScreenClose()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">tram::UI</a></li>\n<li>ScreenResize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">tram::UI</a></li>\n<li>SCRIPTABLE_ENTITY_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">tram</a></li>\n<li>SEARCH_STRING_LENGTH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d\">tram::Ext::Kitchensink</a></li>\n<li>selected_camera&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc\">tram::Ext::Camera</a></li>\n<li>Set()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">tram::Settings</a></li>\n<li>set_trf_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">tram::Physics::API</a></li>\n<li>SetAmbientColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">tram::Render</a></li>\n<li>SetAndStore()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643\">tram::Settings</a></li>\n<li>SetAudioSourceBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API</a></li>\n<li>SetAudioSourceGain()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API</a></li>\n<li>SetAudioSourcePitch()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API</a></li>\n<li>SetAudioSourcePosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API</a></li>\n<li>SetAudioSourceRepeating()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API</a></li>\n<li>SetAudioSourceVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API</a></li>\n<li>SetAxisSensitivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">tram::UI</a></li>\n<li>SetColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">tram::GUI</a></li>\n<li>SetConsoleLogCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">tram</a></li>\n<li>SetCursor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">tram::UI</a></li>\n<li>SetCursorDelayed()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">tram::GUI</a></li>\n<li>SetCursorPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">tram::Platform::Window</a></li>\n<li>SetDebugMode()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">tram::Render::API</a></li>\n<li>SetDevice()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API</a></li>\n<li>SetDisplayLogCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">tram</a></li>\n<li>SetDrawListAABB()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">tram::Render::API</a></li>\n<li>SetDrawListColors()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API</a></li>\n<li>SetDrawListIndexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API</a></li>\n<li>SetDrawListIndexRange()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API</a></li>\n<li>SetDrawListMaterials()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">tram::Render::API</a></li>\n<li>SetDrawListShader()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API</a></li>\n<li>SetDrawListSpecularities()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8\">tram::Render::API</a></li>\n<li>SetDrawListSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">tram::Render::API</a></li>\n<li>SetDrawListTextureOffsets()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">tram::Render::API</a></li>\n<li>SetDrawListTextures()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c\">tram::Render::API</a></li>\n<li>SetDrawListVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API</a></li>\n<li>SetEnvironmentMap()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">tram::Render::API</a></li>\n<li>SetFadeDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">tram::Render::API</a></li>\n<li>SetFlags()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API</a></li>\n<li>SetFont()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">tram::GUI</a></li>\n<li>SetFromRaw()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea\">tram::Settings</a></li>\n<li>SetFullscreen()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">tram::Platform::Window</a></li>\n<li>SetFunction()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script</a></li>\n<li>SetGlobal()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script</a></li>\n<li>SetGlyph()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">tram::GUI</a></li>\n<li>SetGlyphDefaults()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">tram::GUI</a></li>\n<li>SetInitialized()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System</a></li>\n<li>SetInputState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">tram::UI</a></li>\n<li>SetInterface()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">tram::Script</a></li>\n<li>SetLayer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API</a></li>\n<li>SetLightingParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API</a></li>\n<li>SetLightmap()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API</a></li>\n<li>SetLightParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API</a></li>\n<li>SetLights()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API</a></li>\n<li>SetListenerGain()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">tram::Audio::API</a></li>\n<li>SetListenerOrientation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">tram::Audio</a></li>\n<li>SetListenerPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">tram::Audio</a></li>\n<li>SetMaterialColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">tram::Render::API</a></li>\n<li>SetMaterialReflectivity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">tram::Render::API</a></li>\n<li>SetMaterialSpecularExponent()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">tram::Render::API</a></li>\n<li>SetMaterialSpecularTransparency()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">tram::Render::API</a></li>\n<li>SetMaterialSpecularWeight()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">tram::Render::API</a></li>\n<li>SetMaterialTexture()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">tram::Render::API</a></li>\n<li>SetMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API</a></li>\n<li>SetMonitor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">tram::Platform::Window</a></li>\n<li>SetOrthoRatio()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">tram::Render</a></li>\n<li>SetPose()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API</a></li>\n<li>SetProjectionMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API</a></li>\n<li>SetRawInput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">tram::Platform::Window</a></li>\n<li>SetRigidbodyAngularFactor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">tram::Physics::API</a></li>\n<li>SetRigidbodyCollisionMask()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">tram::Physics::API</a></li>\n<li>SetRigidbodyDebugDrawing()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">tram::Physics::API</a></li>\n<li>SetRigidbodyKinematic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">tram::Physics::API</a></li>\n<li>SetRigidbodyLinearFactor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">tram::Physics::API</a></li>\n<li>SetRigidbodyLocation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">tram::Physics::API</a></li>\n<li>SetRigidbodyMass()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">tram::Physics::API</a></li>\n<li>SetRigidbodyRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">tram::Physics::API</a></li>\n<li>SetRigidbodyTransformCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">tram::Physics::API</a></li>\n<li>SetRigidbodyVelocity()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">tram::Physics::API</a></li>\n<li>SetScale()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5\">tram::Platform</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">tram::Platform::Window</a></li>\n<li>SetScaling()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">tram::GUI</a></li>\n<li>SetScreenClear()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API</a></li>\n<li>SetScreenSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">tram::Render</a></li>\n<li>SetSelectedText()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">tram::GUI</a></li>\n<li>SetSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">tram::Platform::Window</a></li>\n<li>SetSphericalHarmonic()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">tram::Render::API</a></li>\n<li>SetState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">tram::System</a></li>\n<li>SetSunColor()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">tram::Render</a></li>\n<li>SetSunDirection()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">tram::Render</a></li>\n<li>SetSystemLoggingSeverity()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">tram</a></li>\n<li>SETTING_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f\">tram::Settings</a></li>\n<li>SetTitle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">tram::Platform::Window</a></li>\n<li>SetTriggerCollisionCallback()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">tram::Physics::API</a></li>\n<li>SetTriggerCollisionGroup()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">tram::Physics::API</a></li>\n<li>SetTriggerCollisionMask()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">tram::Physics::API</a></li>\n<li>SetTriggerLocation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">tram::Physics::API</a></li>\n<li>SetTriggerRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">tram::Physics::API</a></li>\n<li>SetViewDistance()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">tram::Render</a></li>\n<li>SetViewFov()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">tram::Render</a></li>\n<li>SetViewMatrix()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API</a></li>\n<li>SetViewParameters()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4\">tram::Render::API</a></li>\n<li>SetViewPosition()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">tram::Render</a></li>\n<li>SetViewRotation()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">tram::Render</a></li>\n<li>SetVolume()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">tram::Audio</a></li>\n<li>SetVsync()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">tram::Platform::Window</a></li>\n<li>SetWebMainLoop()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">tram::UI</a></li>\n<li>SetWindowSize()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">tram::UI</a></li>\n<li>SetWindowTitle()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">tram::UI</a></li>\n<li>Severity&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">tram</a></li>\n<li>SHADER_LIGHTMAP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">tram::Render::API</a></li>\n<li>SHADER_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">tram::Render::API</a></li>\n<li>shader_path&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e\">tram::Render::API</a></li>\n<li>SHADER_SPECULAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">tram::Render::API</a></li>\n<li>ShaderFlag&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">tram::Render::API</a></li>\n<li>shaderflags_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">tram::Render::API</a></li>\n<li>shake_multiplier&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed\">tram::Ext::Camera</a></li>\n<li>Shape&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">tram::Physics</a></li>\n<li>SHAPE_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">tram::Physics</a></li>\n<li>SHAPE_CAPSULE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">tram::Physics</a></li>\n<li>SHAPE_CONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">tram::Physics</a></li>\n<li>SHAPE_CYLINDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">tram::Physics</a></li>\n<li>SHAPE_HULL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">tram::Physics</a></li>\n<li>SHAPE_MESH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">tram::Physics</a></li>\n<li>SHAPE_SPHERE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">tram::Physics</a></li>\n<li>Shapecast()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">tram::Physics::API</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">tram::Physics</a></li>\n<li>ShouldExit()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">tram::UI</a></li>\n<li>ShowErrorDialog()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">tram::Platform</a></li>\n<li>signal_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram</a></li>\n<li>SIGNAL_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">tram</a></li>\n<li>SleepRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">tram::Physics::API</a></li>\n<li>Slider()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">tram::GUI</a></li>\n<li>SOUND_CLOSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_END_CLOSE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_END_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_HIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_JUMP_ON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_LOCKED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_LOOPING&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\">tram</a></li>\n<li>SOUND_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">tram::Ext::Kitchensink</a></li>\n<li>SOUND_START_ON_LOAD&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\">tram</a></li>\n<li>SOUND_WALK_ON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">tram::Ext::Kitchensink</a></li>\n<li>SoundAction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">tram::Ext::Kitchensink</a></li>\n<li>SOURCE_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">tram::Audio::Spatial</a></li>\n<li>SOURCE_DEPTH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">tram::Audio::Spatial</a></li>\n<li>SOURCE_PLAYING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">tram::Audio::Spatial</a></li>\n<li>SOURCE_REPEATING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">tram::Audio::Spatial</a></li>\n<li>sphericalharmonic_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render</a></li>\n<li>SpinRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">tram::Physics::API</a></li>\n<li>Start()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">tram::Stats</a></li>\n<li>STATE_CURSOR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">tram::UI</a></li>\n<li>STATE_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">tram::UI</a></li>\n<li>STATE_FLYING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">tram::UI</a></li>\n<li>STATE_MENU_OPEN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">tram::UI</a></li>\n<li>STATE_NO_INPUT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">tram::UI</a></li>\n<li>STATIC_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e\">tram::Render::API</a></li>\n<li>StepPhysics()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">tram::Physics::API</a></li>\n<li>Stop()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">tram::Stats</a></li>\n<li>StopAudioSource()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API</a></li>\n<li>string_float()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770\">tram::Ext::Menu</a></li>\n<li>sun_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">tram::Render</a></li>\n<li>sun_direction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">tram::Render</a></li>\n<li>SW_BLENDED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">tram::Render::API</a></li>\n<li>SW_DYNAMIC_BLENDED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">tram::Render::API</a></li>\n<li>SW_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">tram::Render::API</a></li>\n<li>SW_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">tram::Render::API</a></li>\n<li>SW_STATIC_COLORED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">tram::Render::API</a></li>\n<li>SW_STATIC_LIGHTMAPPED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">tram::Render::API</a></li>\n<li>SWTextureMode&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">tram::Render::API</a></li>\n<li>SWVertexType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">tram::Render::API</a></li>\n<li>System&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System</a></li>\n<li>SYSTEM_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System</a></li>\n<li>SYSTEM_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">tram</a></li>\n<li>system_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System</a></li>\n<li>SystemState&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">tram::System</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">tram::GUI</a></li>\n<li>Text()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">tram::GUI</a></li>\n<li>TEXT_CENTER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">tram::GUI</a></li>\n<li>TEXT_JUSTIFIED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">tram::GUI</a></li>\n<li>TEXT_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">tram::GUI</a></li>\n<li>TEXT_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">tram::GUI</a></li>\n<li>TextBox()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">tram::GUI</a></li>\n<li>texture_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e\">tram::Render::API</a></li>\n<li>TEXTURE_NONE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">tram::Render</a></li>\n<li>TEXTURE_SAME&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">tram::Render</a></li>\n<li>TEXTURE_SOURCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">tram::Render</a></li>\n<li>TextureFilter&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render</a></li>\n<li>TEXTUREFILTER_LINEAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">tram::Render</a></li>\n<li>TEXTUREFILTER_LINEAR_MIPMAPPED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">tram::Render</a></li>\n<li>TEXTUREFILTER_NEAREST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">tram::Render</a></li>\n<li>TextureType&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">tram::Render</a></li>\n<li>textvertices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209\">tram::Render</a></li>\n<li>TextWidth()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f\">tram::GUI</a></li>\n<li>THIRD_PERSON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9\">tram::Render</a></li>\n<li>TICK_RATE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">tram</a></li>\n<li>TILT_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac\">tram::Ext::Camera</a></li>\n<li>to_chars_concat()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe\">tram::implementation</a></li>\n<li>ToggleMenuState()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c\">tram::Ext::Menu</a></li>\n<li>Track()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">tram::Loader</a></li>\n<li>tracked_entities&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371\">tram::Loader</a></li>\n<li>TriangleVisible()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f\">tram::Render::API</a></li>\n<li>TRIGGER_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\">tram</a></li>\n<li>TryDebugging()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">tram::Platform</a></li>\n<li>Type&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram</a></li>\n<li>TYPE_BOOL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">tram</a></li>\n<li>TYPE_FLOAT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">tram</a></li>\n<li>TYPE_INT16&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">tram</a></li>\n<li>TYPE_INT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">tram</a></li>\n<li>TYPE_INT8&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">tram</a></li>\n<li>TYPE_NAME&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram</a></li>\n<li>TYPE_QUAT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">tram</a></li>\n<li>TYPE_STRING&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">tram</a></li>\n<li>TYPE_UINT16&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">tram</a></li>\n<li>TYPE_UINT32&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">tram</a></li>\n<li>TYPE_UINT8&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">tram</a></li>\n<li>TYPE_UNDEFINED&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">tram</a></li>\n<li>TYPE_VEC2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">tram</a></li>\n<li>TYPE_VEC3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">tram</a></li>\n<li>TYPE_VEC4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">tram</a></li>\n<li>TypeToString()&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_type.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>aabbleaf_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render</a></li>\n<li>ai_package_constr&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">tram::Ext::Kitchensink</a></li>\n</ul>\n\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>col_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">tram::Physics::API</a></li>\n<li>collision_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">tram</a></li>\n<li>color_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render</a></li>\n</ul>\n\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>entity_clear&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">tram</a></li>\n<li>entity_make&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">tram</a></li>\n<li>event_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>filter_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">tram</a></li>\n<li>font_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI</a></li>\n</ul>\n\n\n<h3><a id=\"index_g\" name=\"index_g\"></a>- g -</h3><ul>\n<li>get_trf_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">tram::Physics::API</a></li>\n<li>glyph_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI</a></li>\n</ul>\n\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>id_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram</a></li>\n<li>item_action_func&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">tram::Ext::Kitchensink</a></li>\n<li>ivec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram</a></li>\n<li>ivec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>keyboardaction_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">tram::UI</a></li>\n</ul>\n\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>layer_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render</a></li>\n<li>listener_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>mat2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">tram</a></li>\n<li>mat4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram</a></li>\n<li>materialtype_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render</a></li>\n<li>message_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>name_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram</a></li>\n<li>NameCount&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">tram::Render</a></li>\n<li>node_id_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>PoopProxy&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_q\" name=\"index_q\"></a>- q -</h3><ul>\n<li>quat&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>set_trf_callback&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">tram::Physics::API</a></li>\n<li>shaderflags_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">tram::Render::API</a></li>\n<li>signal_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram</a></li>\n<li>sphericalharmonic_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render</a></li>\n<li>system_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System</a></li>\n</ul>\n\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>uvec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">tram</a></li>\n<li>uvec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>value_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram</a></li>\n<li>valuearray_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram</a></li>\n<li>vec2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram</a></li>\n<li>vec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram</a></li>\n<li>vec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram</a></li>\n<li>vertexformat_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_u.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UI&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">tram::System</a></li>\n<li>UID_CHARACTER_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">tram</a></li>\n<li>UID_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">tram</a></li>\n<li>Uninit()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">tram::Ext::Scripting::Lua</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::UI</a></li>\n<li>UninitOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">tram::Audio::Spatial</a></li>\n<li>UnlockRenderlist()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">tram::Audio::Spatial</a></li>\n<li>Untrack()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">tram::Loader</a></li>\n<li>Update()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API</a>, <a class=\"el\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">tram::Audio</a>, <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">tram::Core</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">tram::Ext::Camera</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">tram::Ext::Kitchensink</a>, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">tram::Ext::Menu</a>, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">tram::GUI</a>, <a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">tram::Loader</a>, <a class=\"el\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">tram::Physics</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::Platform::Input</a>, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">tram::Platform::Window</a>, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::UI</a></li>\n<li>UpdateAI()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">tram::Ext::Kitchensink</a></li>\n<li>UpdateCallbacks()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">tram::Ext::Menu</a></li>\n<li>UpdateDrawListFonts()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">tram::GUI</a></li>\n<li>UpdateHierarchy()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111\">tram::Ext::Kitchensink</a></li>\n<li>UpdateOutput()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">tram::Audio::Spatial</a></li>\n<li>UpdateSpriteArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">tram::Render::API</a></li>\n<li>UpdateVertexArray()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API</a></li>\n<li>UploadUniformBuffer()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880\">tram::Render::API</a></li>\n<li>USER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">tram::Settings</a></li>\n<li>UserIndex&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c\">tram::Physics::API</a></li>\n<li>USERINDEX_RIGIDBODY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\">tram::Physics::API</a></li>\n<li>USERINDEX_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\">tram::Physics::API</a></li>\n<li>UTF16ToLatin7()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">tram::Language</a></li>\n<li>uvec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">tram</a></li>\n<li>uvec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_v.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>ValidateResult()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">tram::Audio::Spatial</a></li>\n<li>value_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram</a></li>\n<li>valuearray_t&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram</a></li>\n<li>vec2&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram</a></li>\n<li>vec3&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram</a></li>\n<li>vec4&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram</a></li>\n<li>vertex_arrays&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2\">tram::Render::API</a></li>\n<li>vertex_buffer_metadata&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185\">tram::Render::API</a></li>\n<li>VERTEX_DYNAMIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">tram::Render</a></li>\n<li>VERTEX_LAST&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">tram::Render</a></li>\n<li>VERTEX_LINE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">tram::Render</a></li>\n<li>VERTEX_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">tram::Render</a></li>\n<li>VERTEX_STATIC&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">tram::Render</a></li>\n<li>VertexDefinitionToFVF()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119\">tram::Render::API</a></li>\n<li>vertexformat_t&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render</a></li>\n<li>VertexFormats&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">tram::Render</a></li>\n<li>view&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc\">tram::Render</a></li>\n<li>view_fov&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c\">tram::Render</a></li>\n<li>view_position&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349\">tram::Render</a></li>\n<li>view_properties&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57\">tram::Render</a></li>\n<li>view_rotation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6\">tram::Render</a></li>\n<li>vsync&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99\">tram::Platform</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_vars.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n&#160;\n\n<h3><a id=\"index_a\" name=\"index_a\"></a>- a -</h3><ul>\n<li>ambient_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">tram::Render</a></li>\n<li>animation_pool&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d\">tram::Render</a></li>\n<li>audiobuffers&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">tram::Audio::Spatial</a></li>\n<li>audiorenders&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">tram::Audio::Spatial</a></li>\n<li>audiosources&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">tram::Audio::Spatial</a></li>\n</ul>\n\n\n<h3><a id=\"index_b\" name=\"index_b\"></a>- b -</h3><ul>\n<li>beginned&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8\">tram::GUI</a></li>\n<li>BOB_CHANGE_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee\">tram::Ext::Camera</a></li>\n<li>BONE_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">tram::Render</a></li>\n<li>bone_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8\">tram::Render::API</a></li>\n<li>bone_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb\">tram::Render::API</a></li>\n<li>buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">tram::implementation</a></li>\n<li>BUFFER_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">tram::Audio::Spatial</a></li>\n</ul>\n\n\n<h3><a id=\"index_c\" name=\"index_c\"></a>- c -</h3><ul>\n<li>CAMERA_MULTIPLIER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">tram</a></li>\n<li>CAMERA_SENSITIVITY&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">tram::UI</a></li>\n<li>CAMERA_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">tram::UI</a></li>\n<li>CAMERA_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d\">tram::Ext::Camera</a></li>\n<li>clear_screen&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e\">tram::Render::API</a></li>\n<li>collision_group&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a\">tram</a></li>\n<li>collision_height&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9\">tram</a></li>\n<li>collision_height_crouch&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f\">tram</a></li>\n<li>collision_width&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1759e20de49502fc468e5b65e7baf481\">tram</a></li>\n<li>colorlines&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6\">tram::Render</a></li>\n<li>colorlines_entry&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65\">tram::Render</a></li>\n<li>colorlines_vertex_array&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f\">tram::Render</a></li>\n<li>COMPONENT_LIMIT_ANIMATION&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">tram</a></li>\n<li>COMPONENT_LIMIT_AUDIO&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">tram</a></li>\n<li>COMPONENT_LIMIT_CONTROLLER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">tram</a></li>\n<li>COMPONENT_LIMIT_DECAL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">tram</a></li>\n<li>COMPONENT_LIMIT_LIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">tram</a></li>\n<li>COMPONENT_LIMIT_PARTICLE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">tram</a></li>\n<li>COMPONENT_LIMIT_PHYSICS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">tram</a></li>\n<li>COMPONENT_LIMIT_PLAYER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">tram</a></li>\n<li>COMPONENT_LIMIT_RENDER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">tram</a></li>\n<li>COMPONENT_LIMIT_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">tram</a></li>\n<li>COMPONENT_LIMIT_TRIGGER&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">tram</a></li>\n<li>console_logs&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124\">tram::Ext::Menu</a></li>\n<li>current_monitor&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26\">tram::Platform</a></li>\n</ul>\n\n\n<h3><a id=\"index_d\" name=\"index_d\"></a>- d -</h3><ul>\n<li>debug_menu&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b\">tram::Ext::Menu</a></li>\n<li>debugtext_entry&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c\">tram::Render</a></li>\n<li>debugtext_vertex_array&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4\">tram::Render</a></li>\n<li>draw_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671\">tram::Render::API</a></li>\n<li>DRAW_RENDER_DEBUG&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b\">tram::Render</a></li>\n<li>DYNAMIC_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2\">tram::Render::API</a></li>\n</ul>\n\n\n<h3><a id=\"index_e\" name=\"index_e\"></a>- e -</h3><ul>\n<li>ENTITY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">tram</a></li>\n<li>ENTITY_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">tram</a></li>\n<li>EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">tram</a></li>\n<li>EXT_KITCHENSINK_SOUNDTABLE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_f\" name=\"index_f\"></a>- f -</h3><ul>\n<li>far_plane&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82\">tram::Render</a></li>\n<li>font_debug&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d\">tram::Render</a></li>\n<li>FONT_HEADER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">tram::Ext::Menu</a></li>\n<li>FONT_PIXELART&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">tram::Ext::Menu</a></li>\n<li>FONT_TEXT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">tram::Ext::Menu</a></li>\n<li>FONT_TEXT_BOLD&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">tram::Ext::Menu</a></li>\n<li>FONT_WIDGETS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">tram::Ext::Menu</a></li>\n<li>function&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">tram::Ext::Scripting::Lua</a></li>\n</ul>\n\n\n<h3><a id=\"index_h\" name=\"index_h\"></a>- h -</h3><ul>\n<li>hierarchy_map&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e\">tram::Ext::Kitchensink</a></li>\n</ul>\n\n\n<h3><a id=\"index_i\" name=\"index_i\"></a>- i -</h3><ul>\n<li>index_arrays&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8\">tram::Render::API</a></li>\n<li>intercepts&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2\">tram::Ext::Menu</a></li>\n<li>is_fullscreen&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765\">tram::Platform</a></li>\n</ul>\n\n\n<h3><a id=\"index_k\" name=\"index_k\"></a>- k -</h3><ul>\n<li>KEYBOARDACTION_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">tram</a></li>\n<li>KITCHENSINK_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7\">tram::Ext::Kitchensink</a></li>\n</ul>\n\n\n<h3><a id=\"index_l\" name=\"index_l\"></a>- l -</h3><ul>\n<li>LANGUAGE_STRING_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">tram</a></li>\n<li>LANUGAGE_STRING_CHARACTER_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">tram</a></li>\n<li>last_update_frame&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0\">tram::GUI</a></li>\n<li>light_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e\">tram::Render::API</a>, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8\">tram::Render::LightTree</a></li>\n<li>light_tree&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de\">tram::Render::API</a></li>\n<li>light_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955\">tram::Render::API</a></li>\n<li>light_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32\">tram::Render::API</a></li>\n<li>LINE_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97\">tram::Render::API</a></li>\n<li>LISTENER_DEPTH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">tram::Audio::Spatial</a></li>\n<li>listener_orientation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">tram::Audio::Spatial</a></li>\n<li>listener_position&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_delay&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_distance&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_force&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">tram::Audio::Spatial</a></li>\n<li>listener_reverb_normalized&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">tram::Audio::Spatial</a></li>\n<li>look_at_direction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e\">tram::Ext::Camera</a></li>\n<li>look_at_entity&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18\">tram::Ext::Camera</a></li>\n</ul>\n\n\n<h3><a id=\"index_m\" name=\"index_m\"></a>- m -</h3><ul>\n<li>matrices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7\">tram::Render::API</a></li>\n<li>matrix_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0\">tram::Render::API</a></li>\n<li>matrix_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d\">tram::Render::API</a></li>\n<li>MAX_EVENT_TYPES&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a67acb96d23f8bfea55638bc35178d08d\">tram</a></li>\n<li>MAX_FRAGMENT_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">tram</a></li>\n<li>MAX_LINKED_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">tram</a></li>\n<li>MAX_LUA_FUNCTIONS&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952\">tram::Ext::Scripting::Lua</a></li>\n<li>MAX_MATERIAL_TYPES&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">tram</a></li>\n<li>MAX_VERTEX_FORMATS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">tram</a></li>\n<li>MAX_VERTEX_SHADERS&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">tram</a></li>\n<li>menu_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113\">tram::Ext::Menu</a></li>\n<li>menu_stack&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014\">tram::Ext::Menu</a></li>\n<li>MENU_SYSTEM&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674\">tram::Ext::Menu</a></li>\n<li>MESSAGE_DATA_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">tram</a></li>\n<li>MESSAGE_PRIORITY_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">tram</a></li>\n<li>MESSAGE_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">tram</a></li>\n<li>MESSAGE_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">tram</a></li>\n<li>model_matrix_uniform_binding&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd\">tram::Render::API</a></li>\n<li>model_matrix_uniform_buffer&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec\">tram::Render::API</a></li>\n<li>modelMatrices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598\">tram::Render::API</a></li>\n<li>mouse_click_not_handled&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca\">tram::GUI</a></li>\n<li>mouse_click_not_handled_late&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6\">tram::GUI</a></li>\n</ul>\n\n\n<h3><a id=\"index_n\" name=\"index_n\"></a>- n -</h3><ul>\n<li>NAMED_ENTITY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">tram</a></li>\n<li>near_plane&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f\">tram::Render</a></li>\n</ul>\n\n\n<h3><a id=\"index_o\" name=\"index_o\"></a>- o -</h3><ul>\n<li>ortho_ratio&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d\">tram::Render</a></li>\n</ul>\n\n\n<h3><a id=\"index_p\" name=\"index_p\"></a>- p -</h3><ul>\n<li>parameters&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">tram::Ext::Scripting::Lua</a></li>\n<li>PATH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">tram</a></li>\n<li>PATHS_FOR_LISTENER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">tram::Audio::Spatial</a></li>\n<li>PATHS_FOR_RENDERING&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">tram::Audio::Spatial</a></li>\n<li>PATHS_FOR_SOURCE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">tram::Audio::Spatial</a></li>\n<li>PHYSICS_GRAVITY&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">tram</a></li>\n<li>PHYSICS_GROUND_PLANE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">tram</a></li>\n<li>projection&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc\">tram::Render</a></li>\n</ul>\n\n\n<h3><a id=\"index_r\" name=\"index_r\"></a>- r -</h3><ul>\n<li>RESOURCE_LIMIT_COLLISION_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">tram</a></li>\n<li>RESOURCE_LIMIT_LIGHT_GRAPH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">tram</a></li>\n<li>RESOURCE_LIMIT_MATERIAL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">tram</a></li>\n<li>RESOURCE_LIMIT_MODEL&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">tram</a></li>\n<li>RESOURCE_LIMIT_PATH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">tram</a></li>\n<li>RESOURCE_LIMIT_SOUND&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">tram</a></li>\n<li>RESOURCE_LIMIT_SOUND_GRAPH&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">tram</a></li>\n<li>RESOURCE_LIMIT_SPRITE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">tram</a></li>\n<li>RESOURCE_LOADER_QUEUE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">tram</a></li>\n<li>RESOURCE_LOADER_REQUEST_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">tram</a></li>\n<li>RIGIDBODY_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">tram</a></li>\n<li>rigidbody_metadata_pool&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681\">tram::Physics::API</a></li>\n</ul>\n\n\n<h3><a id=\"index_s\" name=\"index_s\"></a>- s -</h3><ul>\n<li>scanlines&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">tram::Render::API</a></li>\n<li>screen_clear_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e\">tram::Render::API</a></li>\n<li>SCRIPTABLE_ENTITY_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">tram</a></li>\n<li>SEARCH_STRING_LENGTH&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d\">tram::Ext::Kitchensink</a></li>\n<li>selected_camera&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc\">tram::Ext::Camera</a></li>\n<li>SETTING_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f\">tram::Settings</a></li>\n<li>shader_path&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e\">tram::Render::API</a></li>\n<li>shake_multiplier&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed\">tram::Ext::Camera</a></li>\n<li>SIGNAL_TYPE_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">tram</a></li>\n<li>SOURCE_COUNT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">tram::Audio::Spatial</a></li>\n<li>SOURCE_DEPTH_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">tram::Audio::Spatial</a></li>\n<li>STATIC_VERTEX_FVF&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e\">tram::Render::API</a></li>\n<li>sun_color&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">tram::Render</a></li>\n<li>sun_direction&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">tram::Render</a></li>\n<li>SYSTEM_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_t\" name=\"index_t\"></a>- t -</h3><ul>\n<li>texture_list&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e\">tram::Render::API</a></li>\n<li>textvertices&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209\">tram::Render</a></li>\n<li>THIRD_PERSON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9\">tram::Render</a></li>\n<li>TICK_RATE&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">tram</a></li>\n<li>TILT_SPEED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac\">tram::Ext::Camera</a></li>\n<li>tracked_entities&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371\">tram::Loader</a></li>\n</ul>\n\n\n<h3><a id=\"index_u\" name=\"index_u\"></a>- u -</h3><ul>\n<li>UID_CHARACTER_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">tram</a></li>\n<li>UID_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">tram</a></li>\n</ul>\n\n\n<h3><a id=\"index_v\" name=\"index_v\"></a>- v -</h3><ul>\n<li>vertex_arrays&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2\">tram::Render::API</a></li>\n<li>vertex_buffer_metadata&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185\">tram::Render::API</a></li>\n<li>view&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc\">tram::Render</a></li>\n<li>view_fov&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c\">tram::Render</a></li>\n<li>view_position&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349\">tram::Render</a></li>\n<li>view_properties&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57\">tram::Render</a></li>\n<li>view_rotation&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6\">tram::Render</a></li>\n<li>vsync&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99\">tram::Platform</a></li>\n</ul>\n\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>WORLDCELL_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">tram</a></li>\n<li>WORLDCELL_TRANSITION_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_w.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_w\" name=\"index_w\"></a>- w -</h3><ul>\n<li>widget&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">tram::GUI</a></li>\n<li>WIDGET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">tram::GUI</a></li>\n<li>WIDGET_BORDER&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">tram::GUI</a></li>\n<li>WIDGET_BOTTOM_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">tram::GUI</a></li>\n<li>WIDGET_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_1_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_2_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_DOWN&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_EXIT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_HELP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_PRESSED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_PRESSED_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_SELECTED_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_SELECTED_ENABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">tram::GUI</a></li>\n<li>WIDGET_BUTTON_UP&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">tram::GUI</a></li>\n<li>WIDGET_CHECK_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">tram::GUI</a></li>\n<li>WIDGET_DEFAULT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">tram::GUI</a></li>\n<li>WIDGET_DIVIDER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">tram::GUI</a></li>\n<li>WIDGET_DIVIDER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">tram::GUI</a></li>\n<li>WIDGET_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">tram::GUI</a></li>\n<li>WIDGET_MIDDLE_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">tram::GUI</a></li>\n<li>WIDGET_PROGESS_BAR&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">tram::GUI</a></li>\n<li>WIDGET_RADIO_BUTTON&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">tram::GUI</a></li>\n<li>WIDGET_REVERSE_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">tram::GUI</a></li>\n<li>WIDGET_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_TRACK_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_TRACK_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">tram::GUI</a></li>\n<li>WIDGET_SCROLL_BAR_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX_PRESSED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">tram::GUI</a></li>\n<li>WIDGET_SELECT_BOX_SELECTED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_TRACK_HORIZONTAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_TRACK_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">tram::GUI</a></li>\n<li>WIDGET_SLIDER_VERTICAL&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">tram::GUI</a></li>\n<li>WIDGET_TAB&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">tram::GUI</a></li>\n<li>WIDGET_TEXT_BOX&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">tram::GUI</a></li>\n<li>WIDGET_TEXT_BOX_DISABLED&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">tram::GUI</a></li>\n<li>WIDGET_TOP_LEFT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">tram::GUI</a></li>\n<li>WIDGET_TOP_MIDDLE&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">tram::GUI</a></li>\n<li>WIDGET_TOP_RIGHT&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">tram::GUI</a></li>\n<li>WIDGET_WINDOW&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">tram::GUI</a></li>\n<li>WORLDCELL_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">tram</a></li>\n<li>WORLDCELL_TRANSITION_LIMIT&#160;:&#160;<a class=\"el\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">tram</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_x.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_x\" name=\"index_x\"></a>- x -</h3><ul>\n<li>xorshift()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad8eaea57968b2ae698bf65dd493ff758\">tram::Audio::Spatial</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacemembers_y.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace Members</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespace members with links to the namespace documentation for each member:</div>\n\n<h3><a id=\"index_y\" name=\"index_y\"></a>- y -</h3><ul>\n<li>Yeet()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">tram::Async</a>, <a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">tram::ScriptableType</a></li>\n<li>YEET&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">tram::System</a></li>\n<li>YeetCollisionShape()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">tram::Physics::API</a></li>\n<li>YeetRigidbody()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">tram::Physics::API</a></li>\n<li>YeetTrigger()&#160;:&#160;<a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">tram::Physics::API</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespaces.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Namespace List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Namespace List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all namespaces with brief descriptions:</div><div class=\"directory\">\n<div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span><span onclick=\"javascript:toggleLevel(4);\">4</span><span onclick=\"javascript:toggleLevel(5);\">5</span>]</div><table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram.html\" target=\"_self\">tram</a></td><td class=\"desc\">Serialization, i.e </td></tr>\n<tr id=\"row_0_0_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_async.html\" target=\"_self\">Async</a></td><td class=\"desc\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming </td></tr>\n<tr id=\"row_0_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\" target=\"_self\">ResourceRequest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_\" class=\"arrow\" onclick=\"toggleFolder('0_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_audio.html\" target=\"_self\">Audio</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff </td></tr>\n<tr id=\"row_0_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" target=\"_self\">API</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a> </td></tr>\n<tr id=\"row_0_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_1_\" class=\"arrow\" onclick=\"toggleFolder('0_1_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\" target=\"_self\">Spatial</a></td><td class=\"desc\">Experimental path tracing audio system </td></tr>\n<tr id=\"row_0_1_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\" target=\"_self\">AudioBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\" target=\"_self\">AudioRender</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\" target=\"_self\">AudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\" target=\"_self\">PathExplorationResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\" target=\"_self\">PathFromAudioSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\" target=\"_self\">PathRenderingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\" target=\"_self\">PathTracingResult</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\" target=\"_self\">audiobuffer_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle </td></tr>\n<tr id=\"row_0_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\" target=\"_self\">audiosource_t</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle </td></tr>\n<tr id=\"row_0_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\" target=\"_self\">FilterParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\" target=\"_self\">Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource </td></tr>\n<tr id=\"row_0_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_6_\" class=\"arrow\" onclick=\"toggleFolder('0_1_6_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\" target=\"_self\">SoundGraph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_1_6_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_2_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_core.html\" target=\"_self\">Core</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_\" class=\"arrow\" onclick=\"toggleFolder('0_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext.html\" target=\"_self\">Ext</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_0_\" class=\"arrow\" onclick=\"toggleFolder('0_3_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\" target=\"_self\">Camera</a></td><td class=\"desc\">Several different camera implementations </td></tr>\n<tr id=\"row_0_3_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\" target=\"_self\">Camera</a></td><td class=\"desc\">Interface API for cameras </td></tr>\n<tr id=\"row_0_3_0_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\" target=\"_self\">FirstPersonCamera</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_1_\" class=\"arrow\" onclick=\"toggleFolder('0_3_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\" target=\"_self\">Kitchensink</a></td><td class=\"desc\">Extension containing random stuff that doesn't fit in anywhere else </td></tr>\n<tr id=\"row_0_3_1_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\" target=\"_self\">AIAgent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\" target=\"_self\">AIPackage</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\" target=\"_self\">AIVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\" target=\"_self\">AnimationStateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\" target=\"_self\">AnimationTable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\" target=\"_self\">AnimState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\" target=\"_self\">AnimStateSpace</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\" target=\"_self\">AnimStateTransitionDefault</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\" target=\"_self\">AnimStateTransitionFrom</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\" target=\"_self\">AnimStateTransitionInto</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\" target=\"_self\">Attribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\" target=\"_self\">AttributeContainer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\" target=\"_self\">AttributeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\" target=\"_self\">BaseAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\" target=\"_self\">BaseFactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\" target=\"_self\">Breakable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\" target=\"_self\">Button</a></td><td class=\"desc\">Essentially a func_door </td></tr>\n<tr id=\"row_0_3_1_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\" target=\"_self\">Character</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\" target=\"_self\">CharacterClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\" target=\"_self\">CharacterDisposition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_20_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\" target=\"_self\">DebugShape</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_21_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\" target=\"_self\">DebugText</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_22_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\" target=\"_self\">DialogAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_23_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\" target=\"_self\">DialogCondition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_24_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\" target=\"_self\">DialogController</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_25_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\" target=\"_self\">DialogTopic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_26_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\" target=\"_self\">Effect</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_27_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\" target=\"_self\">EntityChildren</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_28_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\" target=\"_self\">Faction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_29_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\" target=\"_self\">FactionRank</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_30_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\" target=\"_self\">FactionRelation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_31_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\" target=\"_self\">InitialAttribute</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_32_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\" target=\"_self\">Inventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_33_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\" target=\"_self\">InventoryFactoryInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_34_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\" target=\"_self\">InventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_35_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\" target=\"_self\">ItemClass</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_36_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\" target=\"_self\">ItemInstance</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_37_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\" target=\"_self\">KitchensinkMenuList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_38_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\" target=\"_self\">ListDialog</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_39_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\" target=\"_self\">ListInventory</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_40_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\" target=\"_self\">ListInventoryManager</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_41_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\" target=\"_self\">ListTrade</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_42_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\" target=\"_self\">Pickup</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_43_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\" target=\"_self\">Quest</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_44_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\" target=\"_self\">QuestEntity</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_45_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\" target=\"_self\">QuestList</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_46_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\" target=\"_self\">QuestTrigger</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_47_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\" target=\"_self\">QuestVariable</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_48_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\" target=\"_self\">SoundTable</a></td><td class=\"desc\">Maps actions to sounds </td></tr>\n<tr id=\"row_0_3_1_49_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\" target=\"_self\">Train</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_50_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\" target=\"_self\">TriggerAutosave</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_51_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\" target=\"_self\">TriggerHurt</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_52_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\" target=\"_self\">TriggerMultiple</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_53_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\" target=\"_self\">TriggerOnce</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_54_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\" target=\"_self\">TriggerPlayerMovement</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_55_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\" target=\"_self\">TriggerPush</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_56_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\" target=\"_self\">TriggerRemove</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_57_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\" target=\"_self\">TriggerTeleport</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_1_58_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\" target=\"_self\">Water</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_2_\" class=\"arrow\" onclick=\"toggleFolder('0_3_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\" target=\"_self\">Menu</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework </td></tr>\n<tr id=\"row_0_3_2_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu_1_1_menu.html\" target=\"_self\">Menu</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> base interface class </td></tr>\n<tr id=\"row_0_3_2_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\" target=\"_self\">Console</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\" target=\"_self\">DebugMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\" target=\"_self\">EntityPicker</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_4_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\" target=\"_self\">EntityProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_5_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\" target=\"_self\">EventEmit</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_6_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\" target=\"_self\">EventIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_7_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" target=\"_self\">Intercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_8_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\" target=\"_self\">InterceptMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_9_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\" target=\"_self\">ListSelection</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_10_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\" target=\"_self\">LogIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_11_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\" target=\"_self\">Menu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_12_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\" target=\"_self\">MessageIntercept</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_13_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\" target=\"_self\">MessageSend</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_14_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\" target=\"_self\">Options</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_15_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\" target=\"_self\">SettingsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_16_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\" target=\"_self\">SignalMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_17_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\" target=\"_self\">StatisticsMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_18_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\" target=\"_self\">SystemMenu</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_2_19_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\" target=\"_self\">WorldCellProperties</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_3_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_3_\" class=\"arrow\" onclick=\"toggleFolder('0_3_3_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\" target=\"_self\">Scripting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_3_3_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_3_0_\" class=\"arrow\" onclick=\"toggleFolder('0_3_3_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\" target=\"_self\">Lua</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system </td></tr>\n<tr id=\"row_0_3_3_0_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:80px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\" target=\"_self\">Lua</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_4_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_4_\" class=\"arrow\" onclick=\"toggleFolder('0_4_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" target=\"_self\">GUI</a></td><td class=\"desc\">Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system </td></tr>\n<tr id=\"row_0_4_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\" target=\"_self\">FrameObject</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1implementation.html\" target=\"_self\">implementation</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_6_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_language.html\" target=\"_self\">Language</a></td><td class=\"desc\">Localization services </td></tr>\n<tr id=\"row_0_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_loader.html\" target=\"_self\">Loader</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming </td></tr>\n<tr id=\"row_0_8_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_8_\" class=\"arrow\" onclick=\"toggleFolder('0_8_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_physics.html\" target=\"_self\">Physics</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_8_0_\" class=\"arrow\" onclick=\"toggleFolder('0_8_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" target=\"_self\">API</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a> </td></tr>\n<tr id=\"row_0_8_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\" target=\"_self\">CallbackMotionState</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\" target=\"_self\">CollisionShapeTransform</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\" target=\"_self\">ObjectCollision</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\" target=\"_self\">PhysicsDebugDraw</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\" target=\"_self\">RigidbodyMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_0_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\" target=\"_self\">ShapecastCallback</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\" target=\"_self\">Collision</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data </td></tr>\n<tr id=\"row_0_8_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\" target=\"_self\">CollisionModel</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model </td></tr>\n<tr id=\"row_0_8_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" target=\"_self\">CollisionShape</a></td><td class=\"desc\">Shape for a collider </td></tr>\n<tr id=\"row_0_8_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\" target=\"_self\">collisionshape_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\" target=\"_self\">CollisionTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\" target=\"_self\">PathAction</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\" target=\"_self\">rigidbody_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_8_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\" target=\"_self\">trigger_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_9_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_9_\" class=\"arrow\" onclick=\"toggleFolder('0_9_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_platform.html\" target=\"_self\">Platform</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_9_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" target=\"_self\">Input</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" title=\"Input backend API.\">Input</a> backend API </td></tr>\n<tr id=\"row_0_9_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html\" target=\"_self\">Window</a></td><td class=\"desc\">Windowing backend API </td></tr>\n<tr id=\"row_0_10_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_\" class=\"arrow\" onclick=\"toggleFolder('0_10_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render.html\" target=\"_self\">Render</a></td><td class=\"desc\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a> </td></tr>\n<tr id=\"row_0_10_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_0_\" class=\"arrow\" onclick=\"toggleFolder('0_10_0_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\" target=\"_self\">AABB</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_0_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\" target=\"_self\">AABBLeaf</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_0_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\" target=\"_self\">QueryResponse</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_1_\" class=\"arrow\" onclick=\"toggleFolder('0_10_1_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" target=\"_self\">API</a></td><td class=\"desc\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a> </td></tr>\n<tr id=\"row_0_10_1_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\" target=\"_self\">ClipPoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\" target=\"_self\">ClipTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\" target=\"_self\">ColorVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\" target=\"_self\">D3DDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\" target=\"_self\">D3DLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\" target=\"_self\">DynamicVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\" target=\"_self\">FFPHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\" target=\"_self\">FragmentShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\" target=\"_self\">FVFHelper</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\" target=\"_self\">GLDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\" target=\"_self\">GLLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\" target=\"_self\">GLMaterial</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\" target=\"_self\">LayerParameters</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\" target=\"_self\">LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\" target=\"_self\">LinkedShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\" target=\"_self\">Point2D</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\" target=\"_self\">Scanline</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\" target=\"_self\">ScanlineBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_18_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\" target=\"_self\">ShaderBuffer</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_19_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\" target=\"_self\">ShaderUniformMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_20_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\" target=\"_self\">ShaderUniformModelMatrices</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_21_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\" target=\"_self\">StaticVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_22_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\" target=\"_self\">SWDrawListEntry</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_23_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\" target=\"_self\">SWIndexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_24_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\" target=\"_self\">SWLight</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_25_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\" target=\"_self\">SWTexture</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_26_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\" target=\"_self\">SWVertexArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_27_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\" target=\"_self\">VertexBufferMetadata</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_1_28_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\" target=\"_self\">VertexShader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_2_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_2_\" class=\"arrow\" onclick=\"toggleFolder('0_10_2_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\" target=\"_self\">LightTree</a></td><td class=\"desc\">Scene light tree </td></tr>\n<tr id=\"row_0_10_2_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\" target=\"_self\">Light</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_3_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_render_1_1_scene_tree.html\" target=\"_self\">SceneTree</a></td><td class=\"desc\">Scene tree </td></tr>\n<tr id=\"row_0_10_4_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\" target=\"_self\">AABBTriangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_5_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" target=\"_self\">Animation</a></td><td class=\"desc\">Skeletal animation for a 3D model </td></tr>\n<tr id=\"row_0_10_6_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" target=\"_self\">Bone</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton </td></tr>\n<tr id=\"row_0_10_7_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\" target=\"_self\">BucketMapping</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_8_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\" target=\"_self\">drawlistentry_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_9_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\" target=\"_self\">DynamicModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_10_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\" target=\"_self\">DynamicModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_11_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\" target=\"_self\">indexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_12_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\" target=\"_self\">IndexRange</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_13_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" target=\"_self\">Keyframe</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation </td></tr>\n<tr id=\"row_0_10_14_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\" target=\"_self\">KeyframeHeader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_15_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\" target=\"_self\">light_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_16_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span id=\"arr_0_10_16_\" class=\"arrow\" onclick=\"toggleFolder('0_10_16_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" target=\"_self\">LightGraph</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource </td></tr>\n<tr id=\"row_0_10_16_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:64px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_17_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\" target=\"_self\">LineVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_18_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" target=\"_self\">Material</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource </td></tr>\n<tr id=\"row_0_10_19_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\" target=\"_self\">material_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_20_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\" target=\"_self\">Model</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_21_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\" target=\"_self\">ModelAABB</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_22_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\" target=\"_self\">ModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_23_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\" target=\"_self\">Pose</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_24_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\" target=\"_self\">RegisteredVertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_25_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\" target=\"_self\">SphericalHarmonic</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_26_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" target=\"_self\">Sprite</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource </td></tr>\n<tr id=\"row_0_10_27_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\" target=\"_self\">spritearray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_28_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\" target=\"_self\">SpriteFrame</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_29_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\" target=\"_self\">SpritePoint</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_30_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\" target=\"_self\">SpriteVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_31_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\" target=\"_self\">StaticModelData</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_32_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\" target=\"_self\">StaticModelVertex</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_33_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\" target=\"_self\">texturehandle_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_34_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\" target=\"_self\">Triangle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_35_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\" target=\"_self\">TriangleBucket</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_36_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\" target=\"_self\">vertexarray_t</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_10_37_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\" target=\"_self\">VertexAttribute</a></td><td class=\"desc\">Atributes for vertex buffer vertices </td></tr>\n<tr id=\"row_0_10_38_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\" target=\"_self\">VertexDefinition</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_11_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_11_\" class=\"arrow\" onclick=\"toggleFolder('0_11_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_script.html\" target=\"_self\">Script</a></td><td class=\"desc\">Scripting API </td></tr>\n<tr id=\"row_0_11_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\" target=\"_self\">Interface</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_12_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_12_\" class=\"arrow\" onclick=\"toggleFolder('0_12_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\" target=\"_self\">ScriptableType</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_12_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\" target=\"_self\">ScriptableTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_13_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_13_\" class=\"arrow\" onclick=\"toggleFolder('0_13_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_settings.html\" target=\"_self\">Settings</a></td><td class=\"desc\">Application setting management and CLI command parser </td></tr>\n<tr id=\"row_0_13_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\" target=\"_self\">Property</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_13_1_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\" target=\"_self\">RawSetting</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_13_2_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\" target=\"_self\">SettingInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_14_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_14_\" class=\"arrow\" onclick=\"toggleFolder('0_14_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_stats.html\" target=\"_self\">Stats</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics </td></tr>\n<tr id=\"row_0_14_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\" target=\"_self\">SystemStat</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_15_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_15_\" class=\"arrow\" onclick=\"toggleFolder('0_15_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_system.html\" target=\"_self\">System</a></td><td class=\"desc\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking </td></tr>\n<tr id=\"row_0_15_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\" target=\"_self\">SystemInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_16_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_16_\" class=\"arrow\" onclick=\"toggleFolder('0_16_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">N</span></span><a class=\"el\" href=\"namespacetram_1_1_u_i.html\" target=\"_self\">UI</a></td><td class=\"desc\">User interface system </td></tr>\n<tr id=\"row_0_16_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\" target=\"_self\">KeyBinding</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_17_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_17_\" class=\"arrow\" onclick=\"toggleFolder('0_17_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\" target=\"_self\">AABBTree</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_17_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_18_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_18_\" class=\"arrow\" onclick=\"toggleFolder('0_18_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_animation_component.html\" target=\"_self\">AnimationComponent</a></td><td class=\"desc\">Plays back Animations </td></tr>\n<tr id=\"row_0_18_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\" target=\"_self\">AnimationPlaybackInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_19_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_audio_component.html\" target=\"_self\">AudioComponent</a></td><td class=\"desc\">Plays back Sounds </td></tr>\n<tr id=\"row_0_20_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_component.html\" target=\"_self\">Component</a></td><td class=\"desc\">Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer </td></tr>\n<tr id=\"row_0_21_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_controller_component.html\" target=\"_self\">ControllerComponent</a></td><td class=\"desc\">Provides an API for character controllers </td></tr>\n<tr id=\"row_0_22_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_crate.html\" target=\"_self\">Crate</a></td><td class=\"desc\">3D Model with a rigidbody attached to it </td></tr>\n<tr id=\"row_0_23_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decal_component.html\" target=\"_self\">DecalComponent</a></td><td class=\"desc\">Projects decals onto the scene </td></tr>\n<tr id=\"row_0_24_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_decoration.html\" target=\"_self\">Decoration</a></td><td class=\"desc\">3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it </td></tr>\n<tr id=\"row_0_25_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_reader.html\" target=\"_self\">DiskReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_26_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_disk_writer.html\" target=\"_self\">DiskWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_27_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_edge.html\" target=\"_self\">Edge</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_28_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_28_\" class=\"arrow\" onclick=\"toggleFolder('0_28_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity.html\" target=\"_self\">Entity</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class </td></tr>\n<tr id=\"row_0_28_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\" target=\"_self\">FieldInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_29_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_entity_component.html\" target=\"_self\">EntityComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class </td></tr>\n<tr id=\"row_0_30_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\" target=\"_self\">EntityTypeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_31_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_event.html\" target=\"_self\">Event</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data </td></tr>\n<tr id=\"row_0_32_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_event_listener.html\" target=\"_self\">EventListener</a></td><td class=\"desc\">Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners </td></tr>\n<tr id=\"row_0_33_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file.html\" target=\"_self\">File</a></td><td class=\"desc\">Very fast file reader/writer </td></tr>\n<tr id=\"row_0_34_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader.html\" target=\"_self\">FileReader</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_35_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\" target=\"_self\">FileReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_36_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_file_source.html\" target=\"_self\">FileSource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_37_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer.html\" target=\"_self\">FileWriter</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_38_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\" target=\"_self\">FileWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_39_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\" target=\"_self\">FPSControllerComponent</a></td><td class=\"desc\">Implementation of an FPS-style character controller </td></tr>\n<tr id=\"row_0_40_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_graph.html\" target=\"_self\">Graph</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_41_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_41_\" class=\"arrow\" onclick=\"toggleFolder('0_41_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_hashmap.html\" target=\"_self\">Hashmap</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_41_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\" target=\"_self\">Record</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_42_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light.html\" target=\"_self\">Light</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper </td></tr>\n<tr id=\"row_0_43_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_light_component.html\" target=\"_self\">LightComponent</a></td><td class=\"desc\">Provides a real-time illumination for the scene </td></tr>\n<tr id=\"row_0_44_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_listener_info.html\" target=\"_self\">ListenerInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_45_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_marker.html\" target=\"_self\">Marker</a></td><td class=\"desc\">Functionally inert </td></tr>\n<tr id=\"row_0_46_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_message.html\" target=\"_self\">Message</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data </td></tr>\n<tr id=\"row_0_47_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_navmesh.html\" target=\"_self\">Navmesh</a></td><td class=\"desc\">Not fully implemented yet </td></tr>\n<tr id=\"row_0_48_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\" target=\"_self\">NavmeshNode</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_49_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_50_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_50_\" class=\"arrow\" onclick=\"toggleFolder('0_50_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_octree.html\" target=\"_self\">Octree</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_50_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\" target=\"_self\">NearestSearch</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_50_1_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\" target=\"_self\">Node</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_51_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_51_\" class=\"arrow\" onclick=\"toggleFolder('0_51_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_particle_component.html\" target=\"_self\">ParticleComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_0_51_0_\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\" target=\"_self\">Particle</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_52_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path.html\" target=\"_self\">Path</a></td><td class=\"desc\">Base class for graphs </td></tr>\n<tr id=\"row_0_53_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\" target=\"_self\">PathEdgeInfo</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_54_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_path_follower.html\" target=\"_self\">PathFollower</a></td><td class=\"desc\">Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a> </td></tr>\n<tr id=\"row_0_55_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_physics_component.html\" target=\"_self\">PhysicsComponent</a></td><td class=\"desc\">Rigidbody wrapper </td></tr>\n<tr id=\"row_0_56_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player.html\" target=\"_self\">Player</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it </td></tr>\n<tr id=\"row_0_57_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_player_component.html\" target=\"_self\">PlayerComponent</a></td><td class=\"desc\">Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> </td></tr>\n<tr id=\"row_0_58_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_58_\" class=\"arrow\" onclick=\"toggleFolder('0_58_')\">&#9658;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool.html\" target=\"_self\">Pool</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_58_0_\" class=\"even\" style=\"display:none;\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\" target=\"_self\">iterator</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_59_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\" target=\"_self\">PoolProxy</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_60_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\" target=\"_self\">PoolPtr</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_61_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_queue.html\" target=\"_self\">Queue</a></td><td class=\"desc\">Simple queue implementation </td></tr>\n<tr id=\"row_0_62_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\" target=\"_self\">RaycastControllerComponent</a></td><td class=\"desc\">Implementation of a simple character controller </td></tr>\n<tr id=\"row_0_63_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_render_component.html\" target=\"_self\">RenderComponent</a></td><td class=\"desc\">Renders a Model </td></tr>\n<tr id=\"row_0_64_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource.html\" target=\"_self\">Resource</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_65_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\" target=\"_self\">ResourceProxy</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_66_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_scriptable.html\" target=\"_self\">Scriptable</a></td><td class=\"desc\">Provides script language subclassing </td></tr>\n<tr id=\"row_0_67_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\" target=\"_self\">SharedEntityData</a></td><td class=\"desc\">Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters </td></tr>\n<tr id=\"row_0_68_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_signal.html\" target=\"_self\">Signal</a></td><td class=\"desc\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template </td></tr>\n<tr id=\"row_0_69_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_signal_table.html\" target=\"_self\">SignalTable</a></td><td class=\"desc\">List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates </td></tr>\n<tr id=\"row_0_70_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sound.html\" target=\"_self\">Sound</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper </td></tr>\n<tr id=\"row_0_71_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_spinlock.html\" target=\"_self\">Spinlock</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_72_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_sprite_component.html\" target=\"_self\">SpriteComponent</a></td><td class=\"desc\">Provides amusing graphical effects </td></tr>\n<tr id=\"row_0_73_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack.html\" target=\"_self\">Stack</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_74_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_stack_pool.html\" target=\"_self\">StackPool</a></td><td class=\"desc\">Allocator </td></tr>\n<tr id=\"row_0_75_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_static_world_object.html\" target=\"_self\">StaticWorldObject</a></td><td class=\"desc\">Worldspawn </td></tr>\n<tr id=\"row_0_76_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_template_component.html\" target=\"_self\">TemplateComponent</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_77_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\" target=\"_self\">TextReaderParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_78_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\" target=\"_self\">TextWriterParser</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_79_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_transition.html\" target=\"_self\">Transition</a></td><td class=\"desc\">Connects WorldCells together </td></tr>\n<tr id=\"row_0_80_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger.html\" target=\"_self\">Trigger</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper </td></tr>\n<tr id=\"row_0_81_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" target=\"_self\">TriggerComponent</a></td><td class=\"desc\"><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper </td></tr>\n<tr id=\"row_0_82_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"structtram_1_1_u_i_d.html\" target=\"_self\">UID</a></td><td class=\"desc\">Interned string type </td></tr>\n<tr id=\"row_0_83_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value.html\" target=\"_self\">Value</a></td><td class=\"desc\">Generic, type-safe union </td></tr>\n<tr id=\"row_0_84_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_array.html\" target=\"_self\">ValueArray</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_85_\" class=\"even\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_value_ptr.html\" target=\"_self\">ValuePtr</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_0_86_\"><td class=\"entry\"><span style=\"width:32px;display:inline-block;\">&#160;</span><span class=\"icona\"><span class=\"icon\">C</span></span><a class=\"el\" href=\"classtram_1_1_world_cell.html\" target=\"_self\">WorldCell</a></td><td class=\"desc\">World streaming unit </td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Serialization, i.e.  \n<a href=\"namespacetram.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_async\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">Async</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_async\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_core\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html\">Core</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_g_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">GUI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_g_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1implementation\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html\">implementation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_language\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html\">Language</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_language\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Localization services. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_loader\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html\">Loader</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_loader\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_script\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_script\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scripting API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_scriptable_type\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">ScriptableType</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_settings\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_settings\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Application setting management and CLI command parser. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_stats\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">Stats</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_stats\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_system\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">System</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_system\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">UI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User interface system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays back Animations.  <a href=\"classtram_1_1_animation_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\">AudioComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays back Sounds.  <a href=\"classtram_1_1_audio_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_component.html\">Component</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wrapper for an <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> pointer.  <a href=\"classtram_1_1_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\">ControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides an API for character controllers.  <a href=\"classtram_1_1_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_crate.html\">Crate</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D Model with a rigidbody attached to it.  <a href=\"classtram_1_1_crate.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decal_component.html\">DecalComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects decals onto the scene.  <a href=\"classtram_1_1_decal_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_decoration.html\">Decoration</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">3D Model with an <a class=\"el\" href=\"classtram_1_1_animation_component.html\" title=\"Plays back Animations.\">AnimationComponent</a> attached to it.  <a href=\"classtram_1_1_decoration.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">DiskReader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">DiskWriter</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> base class.  <a href=\"classtram_1_1_entity.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_component.html\" title=\"Wrapper for an EntityComponent pointer.\">Component</a> base class.  <a href=\"classtram_1_1_entity_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">EntityTypeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data.  <a href=\"structtram_1_1_event.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_event_listener.html\">EventListener</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Smart wrapper class for <a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> listeners.  <a href=\"classtram_1_1_event_listener.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file.html\">File</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Very fast file reader/writer.  <a href=\"classtram_1_1_file.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">FileReader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader_parser.html\">FileReaderParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">FileWriter</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer_parser.html\">FileWriterParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_f_p_s_controller_component.html\">FPSControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of an FPS-style character controller.  <a href=\"classtram_1_1_f_p_s_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_graph.html\">Graph</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light.html\">Light</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_light_component.html\" title=\"Provides a real-time illumination for the scene.\">LightComponent</a> wrapper.  <a href=\"classtram_1_1_light.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_light_component.html\">LightComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides a real-time illumination for the scene.  <a href=\"classtram_1_1_light_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">ListenerInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_marker.html\">Marker</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Functionally inert.  <a href=\"classtram_1_1_marker.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data.  <a href=\"structtram_1_1_message.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">Navmesh</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Not fully implemented yet.  <a href=\"classtram_1_1_navmesh.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_node.html\">Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides amusing graphical effects.  <a href=\"classtram_1_1_particle_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html\">Path</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Base class for graphs.  <a href=\"classtram_1_1_path.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">PathFollower</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>.  <a href=\"classtram_1_1_path_follower.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rigidbody wrapper.  <a href=\"classtram_1_1_physics_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player.html\">Player</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a> with a <a class=\"el\" href=\"classtram_1_1_player_component.html\" title=\"Translates keyboard/mouse inputs into inputs for ControllerComponent.\">PlayerComponent</a> attached to it.  <a href=\"classtram_1_1_player.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_player_component.html\">PlayerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Translates keyboard/mouse inputs into inputs for <a class=\"el\" href=\"classtram_1_1_controller_component.html\" title=\"Provides an API for character controllers.\">ControllerComponent</a>.  <a href=\"classtram_1_1_player_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html\">Queue</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple queue implementation.  <a href=\"classtram_1_1_queue.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_raycast_controller_component.html\">RaycastControllerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Implementation of a simple character controller.  <a href=\"classtram_1_1_raycast_controller_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Renders a Model.  <a href=\"classtram_1_1_render_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_scriptable.html\">Scriptable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides script language subclassing.  <a href=\"classtram_1_1_scriptable.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters.  <a href=\"structtram_1_1_shared_entity_data.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template.  <a href=\"structtram_1_1_signal.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">SignalTable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates.  <a href=\"classtram_1_1_signal_table.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sound.html\">Sound</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_audio_component.html\" title=\"Plays back Sounds.\">AudioComponent</a> wrapper.  <a href=\"classtram_1_1_sound.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_sprite_component.html\">SpriteComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides amusing graphical effects.  <a href=\"classtram_1_1_sprite_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html\">Stack</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocator.  <a href=\"classtram_1_1_stack_pool.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">StaticWorldObject</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Worldspawn.  <a href=\"classtram_1_1_static_world_object.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">TemplateComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_reader_parser.html\">TextReaderParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_text_writer_parser.html\">TextWriterParser</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html\">Transition</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Connects WorldCells together.  <a href=\"classtram_1_1_transition.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger.html\">Trigger</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\" title=\"Trigger wrapper.\">TriggerComponent</a> wrapper.  <a href=\"classtram_1_1_trigger.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_trigger.html\" title=\"TriggerComponent wrapper.\">Trigger</a> wrapper.  <a href=\"classtram_1_1_trigger_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Interned string type.  <a href=\"structtram_1_1_u_i_d.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic, type-safe union.  <a href=\"classtram_1_1_value.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">World streaming unit.  <a href=\"classtram_1_1_world_cell.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a0ec6f1beb2db1148bf277a12019a7ac0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0\">collision_callback</a>) (<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)</td></tr>\n<tr class=\"separator:a0ec6f1beb2db1148bf277a12019a7ac0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ffbf64ab17d509c8a5dc283f437a5b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7\">filter_callback</a>) (<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> *, <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *)</td></tr>\n<tr class=\"separator:a2ffbf64ab17d509c8a5dc283f437a5b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25ae39989bce3dab64401c3956be9c03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a></td></tr>\n<tr class=\"separator:a25ae39989bce3dab64401c3956be9c03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f7e406660923fb9a2cc0a8628fa0c3d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d\">entity_make</a>) (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td></tr>\n<tr class=\"separator:a5f7e406660923fb9a2cc0a8628fa0c3d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb6f2c041e69a847713e8d29f66dc58b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b\">entity_clear</a>) (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)</td></tr>\n<tr class=\"separator:acb6f2c041e69a847713e8d29f66dc58b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0183b475d47925143ca46259ec594d90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a></td></tr>\n<tr class=\"separator:a0183b475d47925143ca46259ec594d90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc1aacd663943b92d06f10950a9f10d0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a></td></tr>\n<tr class=\"separator:abc1aacd663943b92d06f10950a9f10d0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d506d80abf93dd017a92dbcb169f9c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a></td></tr>\n<tr class=\"separator:a7d506d80abf93dd017a92dbcb169f9c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a632d9fcf54e995edd8c66e25cb7c1891\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a></td></tr>\n<tr class=\"separator:a632d9fcf54e995edd8c66e25cb7c1891\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ba8befa39d714232ba6f05ade798893\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::quat&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a></td></tr>\n<tr class=\"separator:a6ba8befa39d714232ba6f05ade798893\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1449f767374f220889ec5253470ac9d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::mat2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">mat2</a></td></tr>\n<tr class=\"separator:a1449f767374f220889ec5253470ac9d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa105cf31ac2e470934e6b0827a14d942\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a></td></tr>\n<tr class=\"separator:aa105cf31ac2e470934e6b0827a14d942\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d95095efd075f601cb4afe9ff24c93b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a></td></tr>\n<tr class=\"separator:a1d95095efd075f601cb4afe9ff24c93b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d99e12b9721e0d27d105d40a52bbc49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::vec2&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a></td></tr>\n<tr class=\"separator:a2d99e12b9721e0d27d105d40a52bbc49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a376f6f34fd81bba7071907b5226432f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::ivec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">ivec3</a></td></tr>\n<tr class=\"separator:a376f6f34fd81bba7071907b5226432f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1632687848b1fc76b67d96646ef5a691\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::ivec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a></td></tr>\n<tr class=\"separator:a1632687848b1fc76b67d96646ef5a691\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6302de3ebd59f9e8325c9d2f2752b78f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::uvec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">uvec3</a></td></tr>\n<tr class=\"separator:a6302de3ebd59f9e8325c9d2f2752b78f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9bd3cda50ab2180695b6e4bc8bddb74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef glm::uvec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">uvec4</a></td></tr>\n<tr class=\"separator:ac9bd3cda50ab2180695b6e4bc8bddb74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d629e975ff280fbd5d11c40edb519f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a></td></tr>\n<tr class=\"separator:a2d629e975ff280fbd5d11c40edb519f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0fd37b7041ae8a9df2990aab1946e4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a></td></tr>\n<tr class=\"separator:ac0fd37b7041ae8a9df2990aab1946e4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2efd897a3a954a002664292b5d6264d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a></td></tr>\n<tr class=\"separator:a2efd897a3a954a002664292b5d6264d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad77b577436f476438699a1c4da9d549c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a></td></tr>\n<tr class=\"separator:ad77b577436f476438699a1c4da9d549c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a399a2754b52b60de20e936546d0637\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a></td></tr>\n<tr class=\"separator:a9a399a2754b52b60de20e936546d0637\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">PoopProxy</a> = <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a>&lt; T &gt;</td></tr>\n<tr class=\"separator:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:abebf242bd359cf070de0a7074f31d7c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\">FIELD_COLLMODEL</a>\n }</td></tr>\n<tr class=\"separator:abebf242bd359cf070de0a7074f31d7c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace0f2946cbdd6fa99edd7597d589c36a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\">FLAG_LOCKED</a> = 1\n }</td></tr>\n<tr class=\"separator:ace0f2946cbdd6fa99edd7597d589c36a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21be90fb412cdf8c5703ab2155b270a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\">FIELD_ANIMATION</a>\n }</td></tr>\n<tr class=\"separator:a21be90fb412cdf8c5703ab2155b270a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a480f7c687b7792584a6b60552bf1ce4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\">FIELD_COLOR</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\">FIELD_DISTANCE</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\">FIELD_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\">FIELD_EXPONENT</a>\n }</td></tr>\n<tr class=\"separator:a480f7c687b7792584a6b60552bf1ce4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f451d1ee1334ce10a83ea2f79c93370\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\">SOUND_LOOPING</a> = 1\n, <a class=\"el\" href=\"namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\">SOUND_START_ON_LOAD</a> = 2\n }</td></tr>\n<tr class=\"separator:a9f451d1ee1334ce10a83ea2f79c93370\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32f771ce4ec7817ac72d4835f558c424\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\">FIELD_SOUND</a>\n, <a class=\"el\" href=\"namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\">FIELD_VOLUME</a>\n }</td></tr>\n<tr class=\"separator:a32f771ce4ec7817ac72d4835f558c424\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a717981bca7f8ce2fc1d263cec32f2e71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\">FIELD_LIGHTMAP</a>\n }</td></tr>\n<tr class=\"separator:a717981bca7f8ce2fc1d263cec32f2e71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7df27030d05a9ea15250c9c9811a6f80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\">TRIGGER_DISABLED</a> = 1\n }</td></tr>\n<tr class=\"separator:a7df27030d05a9ea15250c9c9811a6f80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af7146bfc7fadecfa5f4443e416a5a356\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\">FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\">FIELD_COLLISION_MASK</a>\n, <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">FIELD_MODEL</a>\n }</td></tr>\n<tr class=\"separator:af7146bfc7fadecfa5f4443e416a5a356\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34ab368bc856f9bd71bfcb4f2bb86c56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\">INFO</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\">WARNING</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\">ERROR</a>\n, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">CRITICAL_ERROR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\">DEFAULT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a34ab368bc856f9bd71bfcb4f2bb86c56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8285e82eb5cb49da9f6a5a02dd0560a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">PATH_STRAIGHT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">PATH_LEFT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">PATH_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">PATH_LINEAR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">PATH_CURVE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a8285e82eb5cb49da9f6a5a02dd0560a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">TYPE_INT8</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">TYPE_INT16</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">TYPE_UINT8</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">TYPE_UINT16</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>\n<br />\n }</td></tr>\n<tr class=\"memdesc:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type enumeration for serialization, etc.  <a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">More...</a><br /></td></tr>\n<tr class=\"separator:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a972c59287ba467dbfe003f137609550d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> { <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\">IO_ERROR</a>\n, <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\">READY</a>\n }</td></tr>\n<tr class=\"separator:a972c59287ba467dbfe003f137609550d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a529c8d3e049a7dcc4425fbe040e4c531\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">FileMedium</a> { <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\">DISK</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\">USER</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\">ARCHIVE</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\">HTTP</a>\n }</td></tr>\n<tr class=\"separator:a529c8d3e049a7dcc4425fbe040e4c531\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">GenerateID</a> ()</td></tr>\n<tr class=\"memdesc:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a unique ID number.  <a href=\"namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0\">More...</a><br /></td></tr>\n<tr class=\"separator:ad9db30198d176e4ffed5b38273c4beb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">GetTick</a> ()</td></tr>\n<tr class=\"memdesc:a45d3de117b68f4c584f4b9012b230557\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current tick.  <a href=\"namespacetram.html#a45d3de117b68f4c584f4b9012b230557\">More...</a><br /></td></tr>\n<tr class=\"separator:a45d3de117b68f4c584f4b9012b230557\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">GetFrame</a> ()</td></tr>\n<tr class=\"memdesc:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the current frame.  <a href=\"namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3909d6bfd02679f663541f787f9c7b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5510fd86603682d0cac4954bff11620\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">GetDeltaTick</a> ()</td></tr>\n<tr class=\"memdesc:ac5510fd86603682d0cac4954bff11620\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the tick delta.  <a href=\"namespacetram.html#ac5510fd86603682d0cac4954bff11620\">More...</a><br /></td></tr>\n<tr class=\"separator:ac5510fd86603682d0cac4954bff11620\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">GetTickTime</a> ()</td></tr>\n<tr class=\"memdesc:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Same as <a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\" title=\"Returns the time at the start of the current frame.\">GetFrameTime()</a>  <a href=\"namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7\">More...</a><br /></td></tr>\n<tr class=\"separator:a370b9480a4f179e6e4c41d9d6a70fcb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">GetFrameTime</a> ()</td></tr>\n<tr class=\"memdesc:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time at the start of the current frame.  <a href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\">More...</a><br /></td></tr>\n<tr class=\"separator:aed55d85a1ab5cc85a558d180313eb64e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">GetDeltaTime</a> ()</td></tr>\n<tr class=\"memdesc:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the time passed between frames.  <a href=\"namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06\">More...</a><br /></td></tr>\n<tr class=\"separator:af8af5a4731abe7a1b4cc34780bd1eb06\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b5616291800641604306bbf678b3873\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">GetVersion</a> ()</td></tr>\n<tr class=\"memdesc:a3b5616291800641604306bbf678b3873\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the version identifier of the runtime.  <a href=\"namespacetram.html#a3b5616291800641604306bbf678b3873\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b5616291800641604306bbf678b3873\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">SetSystemLoggingSeverity</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> min_severity)</td></tr>\n<tr class=\"memdesc:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the logging severity filter.  <a href=\"namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07\">More...</a><br /></td></tr>\n<tr class=\"separator:ad33d1b97d4055d1dc0ed20da61825d07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb62c461f07f0472724808f099abd05d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">SetDisplayLogCallback</a> (void(*callback)(int, const char *))</td></tr>\n<tr class=\"memdesc:aeb62c461f07f0472724808f099abd05d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the display log callback.  <a href=\"namespacetram.html#aeb62c461f07f0472724808f099abd05d\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb62c461f07f0472724808f099abd05d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6e944197c5e9252268255850e7d15fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">SetConsoleLogCallback</a> (void(*callback)(int, const char *))</td></tr>\n<tr class=\"memdesc:ad6e944197c5e9252268255850e7d15fb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the console log callback.  <a href=\"namespacetram.html#ad6e944197c5e9252268255850e7d15fb\">More...</a><br /></td></tr>\n<tr class=\"separator:ad6e944197c5e9252268255850e7d15fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6386f26cd40ff74930ce7855564b513d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6386f26cd40ff74930ce7855564b513d\">SetDisplayLogCallback</a> (void(int, const char *))</td></tr>\n<tr class=\"separator:a6386f26cd40ff74930ce7855564b513d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf2fa22ee1b4ccc8fc03fe49402db0c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aaf2fa22ee1b4ccc8fc03fe49402db0c5\">SetConsoleLogCallback</a> (void(int, const char *))</td></tr>\n<tr class=\"separator:aaf2fa22ee1b4ccc8fc03fe49402db0c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78660be0737c048109e94b12da8376c1\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a78660be0737c048109e94b12da8376c1\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">Log</a> (<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a78660be0737c048109e94b12da8376c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab55eb49c2df70f400895dab88b146d00\">Log</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:ab55eb49c2df70f400895dab88b146d00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1d9753464d0d21a28f513716fa797cd8\">Log</a> (const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:a1d9753464d0d21a28f513716fa797cd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename... Args&gt; </td></tr>\n<tr class=\"memitem:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">DisplayLog</a> (int time, const std::string_view &amp;format, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:aafb9d3143cd13b2e8267161ce4813fce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">QuatLookAt</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;quaternion, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;from, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;to)</td></tr>\n<tr class=\"memdesc:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates a quaternion to face a point.  <a href=\"namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf\">More...</a><br /></td></tr>\n<tr class=\"separator:a9a9788a262342a3b6cf9b08117faedcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">ProjectLine</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;point, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;from, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;to)</td></tr>\n<tr class=\"memdesc:afb93166d174dd8e63b4ea02836446b11\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point on a line.  <a href=\"namespacetram.html#afb93166d174dd8e63b4ea02836446b11\">More...</a><br /></td></tr>\n<tr class=\"separator:afb93166d174dd8e63b4ea02836446b11\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">RayTriangleIntersection</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point1, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point2, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point3)</td></tr>\n<tr class=\"memdesc:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the intersection between a ray and a triangle.  <a href=\"namespacetram.html#a709b43407c76d65a5e0e9567d55fb212\">More...</a><br /></td></tr>\n<tr class=\"separator:a709b43407c76d65a5e0e9567d55fb212\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47d29b14ffc788f302abead903c46544\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">MergeAABBMin</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b)</td></tr>\n<tr class=\"memdesc:a47d29b14ffc788f302abead903c46544\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the min component of an AABB.  <a href=\"namespacetram.html#a47d29b14ffc788f302abead903c46544\">More...</a><br /></td></tr>\n<tr class=\"separator:a47d29b14ffc788f302abead903c46544\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">MergeAABBMax</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b)</td></tr>\n<tr class=\"memdesc:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Merges the max component of an AABB.  <a href=\"namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888\">More...</a><br /></td></tr>\n<tr class=\"separator:ad77ebd7184cb4042cd3f12789f7f6888\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">RotateAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;max, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"memdesc:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotates an AABB box by the given rotation.  <a href=\"namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55\">More...</a><br /></td></tr>\n<tr class=\"separator:ae55bcde03ae63b1ceec8fb99f4416a55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aecd3454b9944728f9e8beca79fb86a4b\">RotateAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;max, <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> rotation)</td></tr>\n<tr class=\"separator:aecd3454b9944728f9e8beca79fb86a4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">PositionRotationToMatrix</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;position, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rotation)</td></tr>\n<tr class=\"memdesc:ab488668dddf5085ed2f05fef803dba33\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#ab488668dddf5085ed2f05fef803dba33\">More...</a><br /></td></tr>\n<tr class=\"separator:ab488668dddf5085ed2f05fef803dba33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">PositionRotationScaleToMatrix</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;position, const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;rotation, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;scale)</td></tr>\n<tr class=\"memdesc:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a transform matrix.  <a href=\"namespacetram.html#a9d150b4b732715b4989afe480bb3ef98\">More...</a><br /></td></tr>\n<tr class=\"separator:a9d150b4b732715b4989afe480bb3ef98\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc61b04dbad891d3eb08e0b5eb842395\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395\">DIRECTION_FORWARD</a> (0.0f, 0.0f, -1.0f)</td></tr>\n<tr class=\"separator:acc61b04dbad891d3eb08e0b5eb842395\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a03a6f88b2cb4818644b5f1fe7e7e3511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511\">DIRECTION_SIDE</a> (1.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a03a6f88b2cb4818644b5f1fe7e7e3511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7e1cf0d1d50c4b3afaac5727d3f5680\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680\">DIRECTION_UP</a> (0.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:ac7e1cf0d1d50c4b3afaac5727d3f5680\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54978c27914521c35127181e9cb0f849\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a54978c27914521c35127181e9cb0f849\">IDENTITY_POSITION</a> (0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a54978c27914521c35127181e9cb0f849\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6643f20251af5564678ffc98ef58be9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6643f20251af5564678ffc98ef58be9e\">IDENTITY_ROTATION</a> (1.0f, 0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a6643f20251af5564678ffc98ef58be9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aa1af51cd6d3679c00e656d1473cd46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46\">IDENTITY_SCALE</a> (1.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:a6aa1af51cd6d3679c00e656d1473cd46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">TypeToString</a> (<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> type)</td></tr>\n<tr class=\"memdesc:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts type enum to string.  <a href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">More...</a><br /></td></tr>\n<tr class=\"separator:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a917f372f74717cd689223239e73f0ec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a917f372f74717cd689223239e73f0ec5\">MAX_MATERIAL_TYPES</a> = 20</td></tr>\n<tr class=\"separator:a917f372f74717cd689223239e73f0ec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7bc148b33d35076ac28624e78c06e32f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7bc148b33d35076ac28624e78c06e32f\">MAX_VERTEX_FORMATS</a> = 20</td></tr>\n<tr class=\"separator:a7bc148b33d35076ac28624e78c06e32f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb3f21bc4e94ced5691b7a802ce417e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5\">MAX_VERTEX_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:aeb3f21bc4e94ced5691b7a802ce417e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5209551801f3515acbdabc46e957f45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5209551801f3515acbdabc46e957f45\">MAX_FRAGMENT_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:ac5209551801f3515acbdabc46e957f45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6d768de9b8d7f850907e74b15f654ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af6d768de9b8d7f850907e74b15f654ab\">MAX_LINKED_SHADERS</a> = 40</td></tr>\n<tr class=\"separator:af6d768de9b8d7f850907e74b15f654ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a675b9496ee55fb465aa5d4972b45bac7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7\">TICK_RATE</a> = 1.0f / 60.0f</td></tr>\n<tr class=\"separator:a675b9496ee55fb465aa5d4972b45bac7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26aea911deb4f2a882fecaa9db2cca5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f\">CAMERA_MULTIPLIER</a> = 1.0f / 8.0f</td></tr>\n<tr class=\"separator:a26aea911deb4f2a882fecaa9db2cca5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee70318c6bcb6ab23a4c627b40ffc247\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247\">PHYSICS_GROUND_PLANE</a> = -9.0f</td></tr>\n<tr class=\"separator:aee70318c6bcb6ab23a4c627b40ffc247\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62a53097647f52336381e7470fb2abe5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a62a53097647f52336381e7470fb2abe5\">PHYSICS_GRAVITY</a> = -9.8f</td></tr>\n<tr class=\"separator:a62a53097647f52336381e7470fb2abe5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4057f0499e008e4ce99545c3d38f1ddf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf\">RESOURCE_LIMIT_SOUND</a> = 100</td></tr>\n<tr class=\"separator:a4057f0499e008e4ce99545c3d38f1ddf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a824fea7217919eb6958e08a8bbab50d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a824fea7217919eb6958e08a8bbab50d1\">RESOURCE_LIMIT_MODEL</a> = 100</td></tr>\n<tr class=\"separator:a824fea7217919eb6958e08a8bbab50d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaffd4a95c2adf2e132260b84190ca660\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aaffd4a95c2adf2e132260b84190ca660\">RESOURCE_LIMIT_PATH</a> = 100</td></tr>\n<tr class=\"separator:aaffd4a95c2adf2e132260b84190ca660\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09905cc9b5568b71843490d4d6ce5fc3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3\">RESOURCE_LIMIT_COLLISION_MODEL</a> = 500</td></tr>\n<tr class=\"separator:a09905cc9b5568b71843490d4d6ce5fc3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a204e0f9d92f93902f454380c35b33c49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a204e0f9d92f93902f454380c35b33c49\">RESOURCE_LIMIT_MATERIAL</a> = 500</td></tr>\n<tr class=\"separator:a204e0f9d92f93902f454380c35b33c49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2e37d16ae78faab3eb2d8140fcd8b5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e\">RESOURCE_LIMIT_SPRITE</a> = 500</td></tr>\n<tr class=\"separator:ad2e37d16ae78faab3eb2d8140fcd8b5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfe37808bb06b05bc9596bc3242e95ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce\">RESOURCE_LIMIT_LIGHT_GRAPH</a> = 250</td></tr>\n<tr class=\"separator:acfe37808bb06b05bc9596bc3242e95ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a899ede00065e962b5ca2528841e45aa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a899ede00065e962b5ca2528841e45aa7\">RESOURCE_LIMIT_SOUND_GRAPH</a> = 250</td></tr>\n<tr class=\"separator:a899ede00065e962b5ca2528841e45aa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefb7b9aa5163a6725fc02bde6672b88f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f\">COMPONENT_LIMIT_ANIMATION</a> = 50</td></tr>\n<tr class=\"separator:aefb7b9aa5163a6725fc02bde6672b88f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7db4cca9ab5ecae0d8d4de7effd6aec5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5\">COMPONENT_LIMIT_AUDIO</a> = 150</td></tr>\n<tr class=\"separator:a7db4cca9ab5ecae0d8d4de7effd6aec5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66281a5ccd6da73b86dd9a2ba49585a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2\">COMPONENT_LIMIT_CONTROLLER</a> = 25</td></tr>\n<tr class=\"separator:a66281a5ccd6da73b86dd9a2ba49585a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0351a7a038c0c51bf2e41a37bb54702c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c\">COMPONENT_LIMIT_LIGHT</a> = 250</td></tr>\n<tr class=\"separator:a0351a7a038c0c51bf2e41a37bb54702c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ef1096144023efed74009fd55ff4668\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1ef1096144023efed74009fd55ff4668\">COMPONENT_LIMIT_PARTICLE</a> = 100</td></tr>\n<tr class=\"separator:a1ef1096144023efed74009fd55ff4668\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef0b54c575d166021a519456e745e5a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aef0b54c575d166021a519456e745e5a8\">COMPONENT_LIMIT_PHYSICS</a> = 500</td></tr>\n<tr class=\"separator:aef0b54c575d166021a519456e745e5a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d062bfaaf077ec23a49b1e932f27b6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a\">COMPONENT_LIMIT_PLAYER</a> = 5</td></tr>\n<tr class=\"separator:a8d062bfaaf077ec23a49b1e932f27b6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdf2b176e856c8c025e6c5a05b376f2f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f\">COMPONENT_LIMIT_RENDER</a> = 1000</td></tr>\n<tr class=\"separator:afdf2b176e856c8c025e6c5a05b376f2f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5099d59ad2cf7be3d5f16024f0a1443d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d\">COMPONENT_LIMIT_SPRITE</a> = 100</td></tr>\n<tr class=\"separator:a5099d59ad2cf7be3d5f16024f0a1443d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38c17cf408e9c052cf6e8250250ef68f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f\">COMPONENT_LIMIT_DECAL</a> = 100</td></tr>\n<tr class=\"separator:a38c17cf408e9c052cf6e8250250ef68f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf691e9b98162d05d0b235cf0f3d9387\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387\">COMPONENT_LIMIT_TRIGGER</a> = 50</td></tr>\n<tr class=\"separator:abf691e9b98162d05d0b235cf0f3d9387\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c8eb191637ec58035b98bc8a3dc7955\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955\">PATH_LIMIT</a> = 200</td></tr>\n<tr class=\"separator:a4c8eb191637ec58035b98bc8a3dc7955\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4a96a9b06c171a66beb3fe0066ac6b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5\">SYSTEM_LIMIT</a> = 128</td></tr>\n<tr class=\"separator:aa4a96a9b06c171a66beb3fe0066ac6b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afde783f76b29484fca014a71379688da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#afde783f76b29484fca014a71379688da\">SCRIPTABLE_ENTITY_TYPE_LIMIT</a> = 50</td></tr>\n<tr class=\"separator:afde783f76b29484fca014a71379688da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3d5c2a5f250a9d674df10bdfa5904d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2\">ENTITY_TYPE_LIMIT</a> = 50</td></tr>\n<tr class=\"separator:aa3d5c2a5f250a9d674df10bdfa5904d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae549eb9876cd460a36ec048cd029af97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ae549eb9876cd460a36ec048cd029af97\">RESOURCE_LOADER_QUEUE_LIMIT</a> = 1000</td></tr>\n<tr class=\"separator:ae549eb9876cd460a36ec048cd029af97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35b3cdfbe899c26e6da0068331ef4a03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03\">RESOURCE_LOADER_REQUEST_LIMIT</a> = 1750</td></tr>\n<tr class=\"separator:a35b3cdfbe899c26e6da0068331ef4a03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ddcd411f4af0e1052aa1c3341eb7e4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d\">ENTITY_LIMIT</a> = 5000</td></tr>\n<tr class=\"separator:a0ddcd411f4af0e1052aa1c3341eb7e4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746e6432794113f984198f336d8cce65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a746e6432794113f984198f336d8cce65\">NAMED_ENTITY_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a746e6432794113f984198f336d8cce65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94cfdaa4232d3dde886253c4eafcd4e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9\">LANUGAGE_STRING_CHARACTER_LIMIT</a> = 10000</td></tr>\n<tr class=\"separator:a94cfdaa4232d3dde886253c4eafcd4e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac465c542500fdf2dc7483c0d15896d8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b\">LANGUAGE_STRING_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:ac465c542500fdf2dc7483c0d15896d8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13df257c04982a0237aed3b1d1a18388\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a13df257c04982a0237aed3b1d1a18388\">MESSAGE_QUEUE_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a13df257c04982a0237aed3b1d1a18388\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b1778620231829d63a83b6c451b60c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2b1778620231829d63a83b6c451b60c2\">MESSAGE_PRIORITY_QUEUE_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:a2b1778620231829d63a83b6c451b60c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e23af0f990c870da7822e6160160173\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a3e23af0f990c870da7822e6160160173\">MESSAGE_DATA_LIMIT</a> = 2000</td></tr>\n<tr class=\"separator:a3e23af0f990c870da7822e6160160173\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac5765d4ac76416672f8f55e6e4e48b9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b\">MESSAGE_TYPE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:ac5765d4ac76416672f8f55e6e4e48b9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9773c849e7f41480842e5cd1d8d4de73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73\">SIGNAL_TYPE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a9773c849e7f41480842e5cd1d8d4de73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1423ecbdc7b2879d47ac484d812fda50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50\">WORLDCELL_TRANSITION_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:a1423ecbdc7b2879d47ac484d812fda50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c062f0c7a0634e170676191a5fc33ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba\">KEYBOARDACTION_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a7c062f0c7a0634e170676191a5fc33ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd586f202b2593831d3d48a18eb15776\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#abd586f202b2593831d3d48a18eb15776\">UID_CHARACTER_LIMIT</a> = 20000</td></tr>\n<tr class=\"separator:abd586f202b2593831d3d48a18eb15776\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8599d00d63ed9f6ee3eecb0c0b136b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8\">UID_LIMIT</a> = 2000</td></tr>\n<tr class=\"separator:af8599d00d63ed9f6ee3eecb0c0b136b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab751286624cca492c1abca52f7e0be8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ab751286624cca492c1abca52f7e0be8c\">WORLDCELL_LIMIT</a> = 250</td></tr>\n<tr class=\"separator:ab751286624cca492c1abca52f7e0be8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95ef9ff7b7e26c1f357c10707720163a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">RIGIDBODY_LIMIT</a> = 500</td></tr>\n<tr class=\"separator:a95ef9ff7b7e26c1f357c10707720163a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1919b7d31f90785f9b208acbdeb8576\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af1919b7d31f90785f9b208acbdeb8576\">EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:af1919b7d31f90785f9b208acbdeb8576\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16fcee576d8ededdde2fb49658013315\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a16fcee576d8ededdde2fb49658013315\">EXT_KITCHENSINK_SOUNDTABLE_LIMIT</a> = 100</td></tr>\n<tr class=\"separator:a16fcee576d8ededdde2fb49658013315\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1759e20de49502fc468e5b65e7baf481\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a1759e20de49502fc468e5b65e7baf481\">collision_width</a> = 0.35f</td></tr>\n<tr class=\"separator:a1759e20de49502fc468e5b65e7baf481\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73098ef9a80f90afd7d8f6ff04e420b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9\">collision_height</a> = 1.85f</td></tr>\n<tr class=\"separator:a73098ef9a80f90afd7d8f6ff04e420b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cc6a6286e4acb91210a3c71fb8e805f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f\">collision_height_crouch</a> = 0.5f</td></tr>\n<tr class=\"separator:a7cc6a6286e4acb91210a3c71fb8e805f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47a4bfe3c127f07cf4fa3a20e3785f8a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a\">collision_group</a> = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td></tr>\n<tr class=\"separator:a47a4bfe3c127f07cf4fa3a20e3785f8a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67acb96d23f8bfea55638bc35178d08d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a67acb96d23f8bfea55638bc35178d08d\">MAX_EVENT_TYPES</a> = 100</td></tr>\n<tr class=\"separator:a67acb96d23f8bfea55638bc35178d08d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Serialization, i.e. </p>\n<p >saving application state is not implemented yet.</p>\n<p >I will probably get around to it sometime. </p>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"a0ec6f1beb2db1148bf277a12019a7ac0\" name=\"a0ec6f1beb2db1148bf277a12019a7ac0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ec6f1beb2db1148bf277a12019a7ac0\">&#9670;&nbsp;</a></span>collision_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void(* tram::collision_callback) (<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb6f2c041e69a847713e8d29f66dc58b\" name=\"acb6f2c041e69a847713e8d29f66dc58b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb6f2c041e69a847713e8d29f66dc58b\">&#9670;&nbsp;</a></span>entity_clear</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void(* tram::entity_clear) (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f7e406660923fb9a2cc0a8628fa0c3d\" name=\"a5f7e406660923fb9a2cc0a8628fa0c3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f7e406660923fb9a2cc0a8628fa0c3d\">&#9670;&nbsp;</a></span>entity_make</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(* tram::entity_make) (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0183b475d47925143ca46259ec594d90\" name=\"a0183b475d47925143ca46259ec594d90\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0183b475d47925143ca46259ec594d90\">&#9670;&nbsp;</a></span>event_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint16_t <a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">tram::event_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2ffbf64ab17d509c8a5dc283f437a5b7\" name=\"a2ffbf64ab17d509c8a5dc283f437a5b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ffbf64ab17d509c8a5dc283f437a5b7\">&#9670;&nbsp;</a></span>filter_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef bool(* tram::filter_callback) (<a class=\"el\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> *, <a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25ae39989bce3dab64401c3956be9c03\" name=\"a25ae39989bce3dab64401c3956be9c03\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25ae39989bce3dab64401c3956be9c03\">&#9670;&nbsp;</a></span>id_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a376f6f34fd81bba7071907b5226432f9\" name=\"a376f6f34fd81bba7071907b5226432f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a376f6f34fd81bba7071907b5226432f9\">&#9670;&nbsp;</a></span>ivec3</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::ivec3 <a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram::ivec3</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1632687848b1fc76b67d96646ef5a691\" name=\"a1632687848b1fc76b67d96646ef5a691\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1632687848b1fc76b67d96646ef5a691\">&#9670;&nbsp;</a></span>ivec4</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::ivec4 <a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram::ivec4</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abc1aacd663943b92d06f10950a9f10d0\" name=\"abc1aacd663943b92d06f10950a9f10d0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc1aacd663943b92d06f10950a9f10d0\">&#9670;&nbsp;</a></span>listener_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">tram::listener_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1449f767374f220889ec5253470ac9d9\" name=\"a1449f767374f220889ec5253470ac9d9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1449f767374f220889ec5253470ac9d9\">&#9670;&nbsp;</a></span>mat2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::mat2 <a class=\"el\" href=\"namespacetram.html#a1449f767374f220889ec5253470ac9d9\">tram::mat2</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa105cf31ac2e470934e6b0827a14d942\" name=\"aa105cf31ac2e470934e6b0827a14d942\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa105cf31ac2e470934e6b0827a14d942\">&#9670;&nbsp;</a></span>mat4</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::mat4 <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d629e975ff280fbd5d11c40edb519f0\" name=\"a2d629e975ff280fbd5d11c40edb519f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d629e975ff280fbd5d11c40edb519f0\">&#9670;&nbsp;</a></span>message_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram::message_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad77b577436f476438699a1c4da9d549c\" name=\"ad77b577436f476438699a1c4da9d549c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad77b577436f476438699a1c4da9d549c\">&#9670;&nbsp;</a></span>name_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0fd37b7041ae8a9df2990aab1946e4c\" name=\"ac0fd37b7041ae8a9df2990aab1946e4c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0fd37b7041ae8a9df2990aab1946e4c\">&#9670;&nbsp;</a></span>node_id_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">tram::node_id_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72cce72d3494bf0e132892a3735ac229\" name=\"a72cce72d3494bf0e132892a3735ac229\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72cce72d3494bf0e132892a3735ac229\">&#9670;&nbsp;</a></span>PoopProxy</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">using <a class=\"el\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">tram::PoopProxy</a> = typedef <a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a>&lt;T&gt;</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ba8befa39d714232ba6f05ade798893\" name=\"a6ba8befa39d714232ba6f05ade798893\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ba8befa39d714232ba6f05ade798893\">&#9670;&nbsp;</a></span>quat</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::quat <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2efd897a3a954a002664292b5d6264d6\" name=\"a2efd897a3a954a002664292b5d6264d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2efd897a3a954a002664292b5d6264d6\">&#9670;&nbsp;</a></span>signal_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram::signal_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6302de3ebd59f9e8325c9d2f2752b78f\" name=\"a6302de3ebd59f9e8325c9d2f2752b78f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6302de3ebd59f9e8325c9d2f2752b78f\">&#9670;&nbsp;</a></span>uvec3</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::uvec3 <a class=\"el\" href=\"namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f\">tram::uvec3</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9bd3cda50ab2180695b6e4bc8bddb74\" name=\"ac9bd3cda50ab2180695b6e4bc8bddb74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9bd3cda50ab2180695b6e4bc8bddb74\">&#9670;&nbsp;</a></span>uvec4</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::uvec4 <a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">tram::uvec4</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7d506d80abf93dd017a92dbcb169f9c4\" name=\"a7d506d80abf93dd017a92dbcb169f9c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d506d80abf93dd017a92dbcb169f9c4\">&#9670;&nbsp;</a></span>value_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a399a2754b52b60de20e936546d0637\" name=\"a9a399a2754b52b60de20e936546d0637\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a399a2754b52b60de20e936546d0637\">&#9670;&nbsp;</a></span>valuearray_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> <a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d99e12b9721e0d27d105d40a52bbc49\" name=\"a2d99e12b9721e0d27d105d40a52bbc49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d99e12b9721e0d27d105d40a52bbc49\">&#9670;&nbsp;</a></span>vec2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::vec2 <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram::vec2</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a632d9fcf54e995edd8c66e25cb7c1891\" name=\"a632d9fcf54e995edd8c66e25cb7c1891\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a632d9fcf54e995edd8c66e25cb7c1891\">&#9670;&nbsp;</a></span>vec3</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::vec3 <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d95095efd075f601cb4afe9ff24c93b\" name=\"a1d95095efd075f601cb4afe9ff24c93b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d95095efd075f601cb4afe9ff24c93b\">&#9670;&nbsp;</a></span>vec4</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef glm::vec4 <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a21be90fb412cdf8c5703ab2155b270a4\" name=\"a21be90fb412cdf8c5703ab2155b270a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21be90fb412cdf8c5703ab2155b270a4\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\" name=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\"></a>FIELD_FLAGS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\" name=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\"></a>FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\" name=\"a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3\"></a>FIELD_ANIMATION&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a480f7c687b7792584a6b60552bf1ce4c\" name=\"a480f7c687b7792584a6b60552bf1ce4c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a480f7c687b7792584a6b60552bf1ce4c\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\" name=\"a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8\"></a>FIELD_COLOR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\" name=\"a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f\"></a>FIELD_DISTANCE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\" name=\"a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708\"></a>FIELD_DIRECTION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\" name=\"a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a\"></a>FIELD_EXPONENT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a9f451d1ee1334ce10a83ea2f79c93370\" name=\"a9f451d1ee1334ce10a83ea2f79c93370\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f451d1ee1334ce10a83ea2f79c93370\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\" name=\"a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d\"></a>SOUND_LOOPING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\" name=\"a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8\"></a>SOUND_START_ON_LOAD&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a32f771ce4ec7817ac72d4835f558c424\" name=\"a32f771ce4ec7817ac72d4835f558c424\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32f771ce4ec7817ac72d4835f558c424\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\" name=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\"></a>FIELD_FLAGS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\" name=\"a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6\"></a>FIELD_SOUND&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\" name=\"a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2\"></a>FIELD_VOLUME&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a717981bca7f8ce2fc1d263cec32f2e71\" name=\"a717981bca7f8ce2fc1d263cec32f2e71\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a717981bca7f8ce2fc1d263cec32f2e71\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\" name=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\"></a>FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\" name=\"a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\"></a>FIELD_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a7df27030d05a9ea15250c9c9811a6f80\" name=\"a7df27030d05a9ea15250c9c9811a6f80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7df27030d05a9ea15250c9c9811a6f80\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\" name=\"a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159\"></a>TRIGGER_DISABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"af7146bfc7fadecfa5f4443e416a5a356\" name=\"af7146bfc7fadecfa5f4443e416a5a356\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7146bfc7fadecfa5f4443e416a5a356\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\" name=\"af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615\"></a>FIELD_FLAGS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\" name=\"af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82\"></a>FIELD_COLLISION_MASK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\" name=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\"></a>FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"abebf242bd359cf070de0a7074f31d7c2\" name=\"abebf242bd359cf070de0a7074f31d7c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abebf242bd359cf070de0a7074f31d7c2\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\" name=\"af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\"></a>FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\" name=\"abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f\"></a>FIELD_COLLMODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ace0f2946cbdd6fa99edd7597d589c36a\" name=\"ace0f2946cbdd6fa99edd7597d589c36a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace0f2946cbdd6fa99edd7597d589c36a\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\" name=\"ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c\"></a>FLAG_LOCKED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a529c8d3e049a7dcc4425fbe040e4c531\" name=\"a529c8d3e049a7dcc4425fbe040e4c531\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a529c8d3e049a7dcc4425fbe040e4c531\">&#9670;&nbsp;</a></span>FileMedium</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum class <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">tram::FileMedium</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\" name=\"a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\"></a>DISK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\" name=\"a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\"></a>USER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\" name=\"a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\"></a>ARCHIVE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\" name=\"a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\"></a>HTTP&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a972c59287ba467dbfe003f137609550d\" name=\"a972c59287ba467dbfe003f137609550d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a972c59287ba467dbfe003f137609550d\">&#9670;&nbsp;</a></span>FileStatus</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum class <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">tram::FileStatus</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\" name=\"a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\"></a>IO_ERROR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\" name=\"a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\"></a>READY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8285e82eb5cb49da9f6a5a02dd0560a2\">&#9670;&nbsp;</a></span>PathType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">tram::PathType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\"></a>PATH_STRAIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\"></a>PATH_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\"></a>PATH_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\"></a>PATH_LINEAR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\" name=\"a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\"></a>PATH_CURVE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34ab368bc856f9bd71bfcb4f2bb86c56\">&#9670;&nbsp;</a></span>Severity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum class <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">tram::Severity</a></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">strong</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3\"></a>INFO&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b\"></a>WARNING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5\"></a>ERROR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\"></a>CRITICAL_ERROR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\" name=\"a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee\"></a>DEFAULT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a2b5d2fc96be5dd5baddedba49a7ef609\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b5d2fc96be5dd5baddedba49a7ef609\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram::Type</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Type enumeration for serialization, etc. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\"></a>TYPE_UNDEFINED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\"></a>TYPE_BOOL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\"></a>TYPE_NAME&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\"></a>TYPE_STRING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\"></a>TYPE_INT8&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\"></a>TYPE_INT16&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\"></a>TYPE_INT32&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\"></a>TYPE_UINT8&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\"></a>TYPE_UINT16&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\"></a>TYPE_UINT32&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\"></a>TYPE_FLOAT32&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\"></a>TYPE_VEC2&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\"></a>TYPE_VEC3&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\"></a>TYPE_VEC4&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\" name=\"a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\"></a>TYPE_QUAT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"acc61b04dbad891d3eb08e0b5eb842395\" name=\"acc61b04dbad891d3eb08e0b5eb842395\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc61b04dbad891d3eb08e0b5eb842395\">&#9670;&nbsp;</a></span>DIRECTION_FORWARD()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::DIRECTION_FORWARD </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">-1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03a6f88b2cb4818644b5f1fe7e7e3511\" name=\"a03a6f88b2cb4818644b5f1fe7e7e3511\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03a6f88b2cb4818644b5f1fe7e7e3511\">&#9670;&nbsp;</a></span>DIRECTION_SIDE()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::DIRECTION_SIDE </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac7e1cf0d1d50c4b3afaac5727d3f5680\" name=\"ac7e1cf0d1d50c4b3afaac5727d3f5680\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7e1cf0d1d50c4b3afaac5727d3f5680\">&#9670;&nbsp;</a></span>DIRECTION_UP()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::DIRECTION_UP </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafb9d3143cd13b2e8267161ce4813fce\" name=\"aafb9d3143cd13b2e8267161ce4813fce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafb9d3143cd13b2e8267161ce4813fce\">&#9670;&nbsp;</a></span>DisplayLog()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::DisplayLog </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>time</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9db30198d176e4ffed5b38273c4beb0\" name=\"ad9db30198d176e4ffed5b38273c4beb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9db30198d176e4ffed5b38273c4beb0\">&#9670;&nbsp;</a></span>GenerateID()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::GenerateID </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Generates a unique ID number. </p>\n\n</div>\n</div>\n<a id=\"ac5510fd86603682d0cac4954bff11620\" name=\"ac5510fd86603682d0cac4954bff11620\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5510fd86603682d0cac4954bff11620\">&#9670;&nbsp;</a></span>GetDeltaTick()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GetDeltaTick </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the tick delta. </p>\n<p >If multiple ticks have occured between calls to <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\" title=\"Updates the core system.\">Core::Update()</a>, this value will reflect that. </p>\n\n</div>\n</div>\n<a id=\"af8af5a4731abe7a1b4cc34780bd1eb06\" name=\"af8af5a4731abe7a1b4cc34780bd1eb06\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8af5a4731abe7a1b4cc34780bd1eb06\">&#9670;&nbsp;</a></span>GetDeltaTime()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::GetDeltaTime </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the time passed between frames. </p>\n<p >This value changes only when <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\" title=\"Updates the core system.\">Core::Update()</a> is called. </p><dl class=\"section return\"><dt>Returns</dt><dd>Time, in seconds, that has passed between the start of the previous and the start of the current frame. </dd></dl>\n\n</div>\n</div>\n<a id=\"aa3909d6bfd02679f663541f787f9c7b4\" name=\"aa3909d6bfd02679f663541f787f9c7b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3909d6bfd02679f663541f787f9c7b4\">&#9670;&nbsp;</a></span>GetFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GetFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the current frame. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>The number of times <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\" title=\"Updates the core system.\">Core::Update()</a> has been called. </dd></dl>\n\n</div>\n</div>\n<a id=\"aed55d85a1ab5cc85a558d180313eb64e\" name=\"aed55d85a1ab5cc85a558d180313eb64e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed55d85a1ab5cc85a558d180313eb64e\">&#9670;&nbsp;</a></span>GetFrameTime()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::GetFrameTime </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the time at the start of the current frame. </p>\n<p >This value changes only when <a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\" title=\"Updates the core system.\">Core::Update()</a> is called. </p><dl class=\"section return\"><dt>Returns</dt><dd>Time, in seconds, since the application was started. </dd></dl>\n\n</div>\n</div>\n<a id=\"a45d3de117b68f4c584f4b9012b230557\" name=\"a45d3de117b68f4c584f4b9012b230557\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45d3de117b68f4c584f4b9012b230557\">&#9670;&nbsp;</a></span>GetTick()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GetTick </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the current tick. </p>\n<p >This value gets incremented at a rate of 60 ticks per second. </p><dl class=\"section note\"><dt>Note</dt><dd>Tick rate of 60 ticks per second is only the default. The actual value might have been changed in the runtime configuration. </dd></dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>Count of ticks since the application was started. </dd></dl>\n\n</div>\n</div>\n<a id=\"a370b9480a4f179e6e4c41d9d6a70fcb7\" name=\"a370b9480a4f179e6e4c41d9d6a70fcb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a370b9480a4f179e6e4c41d9d6a70fcb7\">&#9670;&nbsp;</a></span>GetTickTime()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::GetTickTime </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Same as <a class=\"el\" href=\"namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e\" title=\"Returns the time at the start of the current frame.\">GetFrameTime()</a> </p>\n\n</div>\n</div>\n<a id=\"a3b5616291800641604306bbf678b3873\" name=\"a3b5616291800641604306bbf678b3873\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b5616291800641604306bbf678b3873\">&#9670;&nbsp;</a></span>GetVersion()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::GetVersion </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the version identifier of the runtime. </p>\n\n</div>\n</div>\n<a id=\"a54978c27914521c35127181e9cb0f849\" name=\"a54978c27914521c35127181e9cb0f849\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54978c27914521c35127181e9cb0f849\">&#9670;&nbsp;</a></span>IDENTITY_POSITION()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::IDENTITY_POSITION </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6643f20251af5564678ffc98ef58be9e\" name=\"a6643f20251af5564678ffc98ef58be9e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6643f20251af5564678ffc98ef58be9e\">&#9670;&nbsp;</a></span>IDENTITY_ROTATION()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::IDENTITY_ROTATION </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6aa1af51cd6d3679c00e656d1473cd46\" name=\"a6aa1af51cd6d3679c00e656d1473cd46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6aa1af51cd6d3679c00e656d1473cd46\">&#9670;&nbsp;</a></span>IDENTITY_SCALE()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::IDENTITY_SCALE </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d9753464d0d21a28f513716fa797cd8\" name=\"a1d9753464d0d21a28f513716fa797cd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d9753464d0d21a28f513716fa797cd8\">&#9670;&nbsp;</a></span>Log() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Log </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a78660be0737c048109e94b12da8376c1\" name=\"a78660be0737c048109e94b12da8376c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78660be0737c048109e94b12da8376c1\">&#9670;&nbsp;</a></span>Log() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Log </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>&#160;</td>\n          <td class=\"paramname\"><em>severity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab55eb49c2df70f400895dab88b146d00\" name=\"ab55eb49c2df70f400895dab88b146d00\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab55eb49c2df70f400895dab88b146d00\">&#9670;&nbsp;</a></span>Log() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename... Args&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Log </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad77ebd7184cb4042cd3f12789f7f6888\" name=\"ad77ebd7184cb4042cd3f12789f7f6888\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad77ebd7184cb4042cd3f12789f7f6888\">&#9670;&nbsp;</a></span>MergeAABBMax()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::MergeAABBMax </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Merges the max component of an AABB. </p>\n\n</div>\n</div>\n<a id=\"a47d29b14ffc788f302abead903c46544\" name=\"a47d29b14ffc788f302abead903c46544\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47d29b14ffc788f302abead903c46544\">&#9670;&nbsp;</a></span>MergeAABBMin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::MergeAABBMin </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Merges the min component of an AABB. </p>\n\n</div>\n</div>\n<a id=\"a9d150b4b732715b4989afe480bb3ef98\" name=\"a9d150b4b732715b4989afe480bb3ef98\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d150b4b732715b4989afe480bb3ef98\">&#9670;&nbsp;</a></span>PositionRotationScaleToMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::PositionRotationScaleToMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>scale</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Generates a transform matrix. </p>\n\n</div>\n</div>\n<a id=\"ab488668dddf5085ed2f05fef803dba33\" name=\"ab488668dddf5085ed2f05fef803dba33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab488668dddf5085ed2f05fef803dba33\">&#9670;&nbsp;</a></span>PositionRotationToMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::PositionRotationToMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Generates a transform matrix. </p>\n\n</div>\n</div>\n<a id=\"afb93166d174dd8e63b4ea02836446b11\" name=\"afb93166d174dd8e63b4ea02836446b11\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb93166d174dd8e63b4ea02836446b11\">&#9670;&nbsp;</a></span>ProjectLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ProjectLine </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>point</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Projects a point on a line. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramdir\">[in,out]</td><td class=\"paramname\">point</td><td>Point that will be projected. </td></tr>\n    <tr><td class=\"paramdir\">[in]</td><td class=\"paramname\">from</td><td>First endpoint of the line. </td></tr>\n    <tr><td class=\"paramdir\">[in]</td><td class=\"paramname\">to</td><td>Second endpoint of the line. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9a9788a262342a3b6cf9b08117faedcf\" name=\"a9a9788a262342a3b6cf9b08117faedcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a9788a262342a3b6cf9b08117faedcf\">&#9670;&nbsp;</a></span>QuatLookAt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::QuatLookAt </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>quaternion</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Rotates a quaternion to face a point. </p>\n<p >Useful for pointing objects at things. </p>\n\n</div>\n</div>\n<a id=\"a709b43407c76d65a5e0e9567d55fb212\" name=\"a709b43407c76d65a5e0e9567d55fb212\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a709b43407c76d65a5e0e9567d55fb212\">&#9670;&nbsp;</a></span>RayTriangleIntersection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::RayTriangleIntersection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point3</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds the intersection between a ray and a triangle. </p>\n<p >If the ray intersects the triangle, the returned vector will be the 3D coordinates of the intersection. If the ray does not intersect the triangle, the function will return a vector with all of its components set to the floating-point INFINITY. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">ray_pos</td><td>Ray origin, 3D coordinate. </td></tr>\n    <tr><td class=\"paramname\">ray_dir</td><td>Ray direction, normal vector. Needs to be normalized. </td></tr>\n    <tr><td class=\"paramname\">point1,point2,point3</td><td>Triangle vertex coordinates. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aecd3454b9944728f9e8beca79fb86a4b\" name=\"aecd3454b9944728f9e8beca79fb86a4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aecd3454b9944728f9e8beca79fb86a4b\">&#9670;&nbsp;</a></span>RotateAABB() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RotateAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae55bcde03ae63b1ceec8fb99f4416a55\" name=\"ae55bcde03ae63b1ceec8fb99f4416a55\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae55bcde03ae63b1ceec8fb99f4416a55\">&#9670;&nbsp;</a></span>RotateAABB() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::RotateAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Rotates an AABB box by the given rotation. </p>\n\n</div>\n</div>\n<a id=\"ad6e944197c5e9252268255850e7d15fb\" name=\"ad6e944197c5e9252268255850e7d15fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6e944197c5e9252268255850e7d15fb\">&#9670;&nbsp;</a></span>SetConsoleLogCallback() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SetConsoleLogCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(int, const char *)&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the console log callback. </p>\n<p >Whenever a message is written to console, it will alos be passed to the console log callback. </p>\n\n</div>\n</div>\n<a id=\"aaf2fa22ee1b4ccc8fc03fe49402db0c5\" name=\"aaf2fa22ee1b4ccc8fc03fe49402db0c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf2fa22ee1b4ccc8fc03fe49402db0c5\">&#9670;&nbsp;</a></span>SetConsoleLogCallback() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SetConsoleLogCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(int, const char *)&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeb62c461f07f0472724808f099abd05d\" name=\"aeb62c461f07f0472724808f099abd05d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb62c461f07f0472724808f099abd05d\">&#9670;&nbsp;</a></span>SetDisplayLogCallback() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SetDisplayLogCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(int, const char *)&#160;</td>\n          <td class=\"paramname\"><em>callback</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the display log callback. </p>\n<p >When a message is logged by calling <a class=\"el\" href=\"namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce\">DisplayLog()</a>, it will be formatted and then the result will be passed in to the display log callback. </p>\n\n</div>\n</div>\n<a id=\"a6386f26cd40ff74930ce7855564b513d\" name=\"a6386f26cd40ff74930ce7855564b513d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6386f26cd40ff74930ce7855564b513d\">&#9670;&nbsp;</a></span>SetDisplayLogCallback() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SetDisplayLogCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(int, const char *)&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad33d1b97d4055d1dc0ed20da61825d07\" name=\"ad33d1b97d4055d1dc0ed20da61825d07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad33d1b97d4055d1dc0ed20da61825d07\">&#9670;&nbsp;</a></span>SetSystemLoggingSeverity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::SetSystemLoggingSeverity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>&#160;</td>\n          <td class=\"paramname\"><em>min_severity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the logging severity filter. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">system</td><td><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for which the filter will apply. </td></tr>\n    <tr><td class=\"paramname\">min_severity</td><td>The lowest severity which the filter will let through All lower severities will be filtered out. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a8f6d1d8931b6fc9fe7e5767f1352383e\" name=\"a8f6d1d8931b6fc9fe7e5767f1352383e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f6d1d8931b6fc9fe7e5767f1352383e\">&#9670;&nbsp;</a></span>TypeToString()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::TypeToString </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Converts type enum to string. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a26aea911deb4f2a882fecaa9db2cca5f\" name=\"a26aea911deb4f2a882fecaa9db2cca5f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26aea911deb4f2a882fecaa9db2cca5f\">&#9670;&nbsp;</a></span>CAMERA_MULTIPLIER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::CAMERA_MULTIPLIER = 1.0f / 8.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47a4bfe3c127f07cf4fa3a20e3785f8a\" name=\"a47a4bfe3c127f07cf4fa3a20e3785f8a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47a4bfe3c127f07cf4fa3a20e3785f8a\">&#9670;&nbsp;</a></span>collision_group</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::collision_group = <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">Physics::COLL_PLAYER</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a73098ef9a80f90afd7d8f6ff04e420b9\" name=\"a73098ef9a80f90afd7d8f6ff04e420b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73098ef9a80f90afd7d8f6ff04e420b9\">&#9670;&nbsp;</a></span>collision_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::collision_height = 1.85f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7cc6a6286e4acb91210a3c71fb8e805f\" name=\"a7cc6a6286e4acb91210a3c71fb8e805f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7cc6a6286e4acb91210a3c71fb8e805f\">&#9670;&nbsp;</a></span>collision_height_crouch</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::collision_height_crouch = 0.5f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1759e20de49502fc468e5b65e7baf481\" name=\"a1759e20de49502fc468e5b65e7baf481\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1759e20de49502fc468e5b65e7baf481\">&#9670;&nbsp;</a></span>collision_width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::collision_width = 0.35f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aefb7b9aa5163a6725fc02bde6672b88f\" name=\"aefb7b9aa5163a6725fc02bde6672b88f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefb7b9aa5163a6725fc02bde6672b88f\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_ANIMATION</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_ANIMATION = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7db4cca9ab5ecae0d8d4de7effd6aec5\" name=\"a7db4cca9ab5ecae0d8d4de7effd6aec5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7db4cca9ab5ecae0d8d4de7effd6aec5\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_AUDIO</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_AUDIO = 150</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a66281a5ccd6da73b86dd9a2ba49585a2\" name=\"a66281a5ccd6da73b86dd9a2ba49585a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66281a5ccd6da73b86dd9a2ba49585a2\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_CONTROLLER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_CONTROLLER = 25</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38c17cf408e9c052cf6e8250250ef68f\" name=\"a38c17cf408e9c052cf6e8250250ef68f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38c17cf408e9c052cf6e8250250ef68f\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_DECAL</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_DECAL = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0351a7a038c0c51bf2e41a37bb54702c\" name=\"a0351a7a038c0c51bf2e41a37bb54702c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0351a7a038c0c51bf2e41a37bb54702c\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_LIGHT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_LIGHT = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1ef1096144023efed74009fd55ff4668\" name=\"a1ef1096144023efed74009fd55ff4668\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ef1096144023efed74009fd55ff4668\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_PARTICLE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_PARTICLE = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef0b54c575d166021a519456e745e5a8\" name=\"aef0b54c575d166021a519456e745e5a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef0b54c575d166021a519456e745e5a8\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_PHYSICS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_PHYSICS = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d062bfaaf077ec23a49b1e932f27b6a\" name=\"a8d062bfaaf077ec23a49b1e932f27b6a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d062bfaaf077ec23a49b1e932f27b6a\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_PLAYER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_PLAYER = 5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afdf2b176e856c8c025e6c5a05b376f2f\" name=\"afdf2b176e856c8c025e6c5a05b376f2f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdf2b176e856c8c025e6c5a05b376f2f\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_RENDER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_RENDER = 1000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5099d59ad2cf7be3d5f16024f0a1443d\" name=\"a5099d59ad2cf7be3d5f16024f0a1443d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5099d59ad2cf7be3d5f16024f0a1443d\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_SPRITE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_SPRITE = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf691e9b98162d05d0b235cf0f3d9387\" name=\"abf691e9b98162d05d0b235cf0f3d9387\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf691e9b98162d05d0b235cf0f3d9387\">&#9670;&nbsp;</a></span>COMPONENT_LIMIT_TRIGGER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::COMPONENT_LIMIT_TRIGGER = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ddcd411f4af0e1052aa1c3341eb7e4d\" name=\"a0ddcd411f4af0e1052aa1c3341eb7e4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ddcd411f4af0e1052aa1c3341eb7e4d\">&#9670;&nbsp;</a></span>ENTITY_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::ENTITY_LIMIT = 5000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa3d5c2a5f250a9d674df10bdfa5904d2\" name=\"aa3d5c2a5f250a9d674df10bdfa5904d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3d5c2a5f250a9d674df10bdfa5904d2\">&#9670;&nbsp;</a></span>ENTITY_TYPE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::ENTITY_TYPE_LIMIT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af1919b7d31f90785f9b208acbdeb8576\" name=\"af1919b7d31f90785f9b208acbdeb8576\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1919b7d31f90785f9b208acbdeb8576\">&#9670;&nbsp;</a></span>EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a16fcee576d8ededdde2fb49658013315\" name=\"a16fcee576d8ededdde2fb49658013315\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16fcee576d8ededdde2fb49658013315\">&#9670;&nbsp;</a></span>EXT_KITCHENSINK_SOUNDTABLE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::EXT_KITCHENSINK_SOUNDTABLE_LIMIT = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c062f0c7a0634e170676191a5fc33ba\" name=\"a7c062f0c7a0634e170676191a5fc33ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c062f0c7a0634e170676191a5fc33ba\">&#9670;&nbsp;</a></span>KEYBOARDACTION_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::KEYBOARDACTION_LIMIT = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac465c542500fdf2dc7483c0d15896d8b\" name=\"ac465c542500fdf2dc7483c0d15896d8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac465c542500fdf2dc7483c0d15896d8b\">&#9670;&nbsp;</a></span>LANGUAGE_STRING_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::LANGUAGE_STRING_LIMIT = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94cfdaa4232d3dde886253c4eafcd4e9\" name=\"a94cfdaa4232d3dde886253c4eafcd4e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94cfdaa4232d3dde886253c4eafcd4e9\">&#9670;&nbsp;</a></span>LANUGAGE_STRING_CHARACTER_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::LANUGAGE_STRING_CHARACTER_LIMIT = 10000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a67acb96d23f8bfea55638bc35178d08d\" name=\"a67acb96d23f8bfea55638bc35178d08d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67acb96d23f8bfea55638bc35178d08d\">&#9670;&nbsp;</a></span>MAX_EVENT_TYPES</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::MAX_EVENT_TYPES = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac5209551801f3515acbdabc46e957f45\" name=\"ac5209551801f3515acbdabc46e957f45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5209551801f3515acbdabc46e957f45\">&#9670;&nbsp;</a></span>MAX_FRAGMENT_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MAX_FRAGMENT_SHADERS = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af6d768de9b8d7f850907e74b15f654ab\" name=\"af6d768de9b8d7f850907e74b15f654ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6d768de9b8d7f850907e74b15f654ab\">&#9670;&nbsp;</a></span>MAX_LINKED_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MAX_LINKED_SHADERS = 40</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a917f372f74717cd689223239e73f0ec5\" name=\"a917f372f74717cd689223239e73f0ec5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a917f372f74717cd689223239e73f0ec5\">&#9670;&nbsp;</a></span>MAX_MATERIAL_TYPES</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MAX_MATERIAL_TYPES = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7bc148b33d35076ac28624e78c06e32f\" name=\"a7bc148b33d35076ac28624e78c06e32f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7bc148b33d35076ac28624e78c06e32f\">&#9670;&nbsp;</a></span>MAX_VERTEX_FORMATS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MAX_VERTEX_FORMATS = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeb3f21bc4e94ced5691b7a802ce417e5\" name=\"aeb3f21bc4e94ced5691b7a802ce417e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb3f21bc4e94ced5691b7a802ce417e5\">&#9670;&nbsp;</a></span>MAX_VERTEX_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MAX_VERTEX_SHADERS = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e23af0f990c870da7822e6160160173\" name=\"a3e23af0f990c870da7822e6160160173\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e23af0f990c870da7822e6160160173\">&#9670;&nbsp;</a></span>MESSAGE_DATA_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MESSAGE_DATA_LIMIT = 2000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2b1778620231829d63a83b6c451b60c2\" name=\"a2b1778620231829d63a83b6c451b60c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b1778620231829d63a83b6c451b60c2\">&#9670;&nbsp;</a></span>MESSAGE_PRIORITY_QUEUE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MESSAGE_PRIORITY_QUEUE_LIMIT = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a13df257c04982a0237aed3b1d1a18388\" name=\"a13df257c04982a0237aed3b1d1a18388\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13df257c04982a0237aed3b1d1a18388\">&#9670;&nbsp;</a></span>MESSAGE_QUEUE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MESSAGE_QUEUE_LIMIT = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac5765d4ac76416672f8f55e6e4e48b9b\" name=\"ac5765d4ac76416672f8f55e6e4e48b9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5765d4ac76416672f8f55e6e4e48b9b\">&#9670;&nbsp;</a></span>MESSAGE_TYPE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::MESSAGE_TYPE_LIMIT = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a746e6432794113f984198f336d8cce65\" name=\"a746e6432794113f984198f336d8cce65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a746e6432794113f984198f336d8cce65\">&#9670;&nbsp;</a></span>NAMED_ENTITY_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::NAMED_ENTITY_LIMIT = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c8eb191637ec58035b98bc8a3dc7955\" name=\"a4c8eb191637ec58035b98bc8a3dc7955\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c8eb191637ec58035b98bc8a3dc7955\">&#9670;&nbsp;</a></span>PATH_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::PATH_LIMIT = 200</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a62a53097647f52336381e7470fb2abe5\" name=\"a62a53097647f52336381e7470fb2abe5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62a53097647f52336381e7470fb2abe5\">&#9670;&nbsp;</a></span>PHYSICS_GRAVITY</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::PHYSICS_GRAVITY = -9.8f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee70318c6bcb6ab23a4c627b40ffc247\" name=\"aee70318c6bcb6ab23a4c627b40ffc247\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee70318c6bcb6ab23a4c627b40ffc247\">&#9670;&nbsp;</a></span>PHYSICS_GROUND_PLANE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::PHYSICS_GROUND_PLANE = -9.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09905cc9b5568b71843490d4d6ce5fc3\" name=\"a09905cc9b5568b71843490d4d6ce5fc3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09905cc9b5568b71843490d4d6ce5fc3\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_COLLISION_MODEL</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_COLLISION_MODEL = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acfe37808bb06b05bc9596bc3242e95ce\" name=\"acfe37808bb06b05bc9596bc3242e95ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfe37808bb06b05bc9596bc3242e95ce\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_LIGHT_GRAPH</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_LIGHT_GRAPH = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a204e0f9d92f93902f454380c35b33c49\" name=\"a204e0f9d92f93902f454380c35b33c49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a204e0f9d92f93902f454380c35b33c49\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_MATERIAL</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_MATERIAL = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a824fea7217919eb6958e08a8bbab50d1\" name=\"a824fea7217919eb6958e08a8bbab50d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a824fea7217919eb6958e08a8bbab50d1\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_MODEL</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_MODEL = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaffd4a95c2adf2e132260b84190ca660\" name=\"aaffd4a95c2adf2e132260b84190ca660\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaffd4a95c2adf2e132260b84190ca660\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_PATH</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_PATH = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4057f0499e008e4ce99545c3d38f1ddf\" name=\"a4057f0499e008e4ce99545c3d38f1ddf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4057f0499e008e4ce99545c3d38f1ddf\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_SOUND</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_SOUND = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a899ede00065e962b5ca2528841e45aa7\" name=\"a899ede00065e962b5ca2528841e45aa7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a899ede00065e962b5ca2528841e45aa7\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_SOUND_GRAPH</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_SOUND_GRAPH = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad2e37d16ae78faab3eb2d8140fcd8b5e\" name=\"ad2e37d16ae78faab3eb2d8140fcd8b5e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2e37d16ae78faab3eb2d8140fcd8b5e\">&#9670;&nbsp;</a></span>RESOURCE_LIMIT_SPRITE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LIMIT_SPRITE = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae549eb9876cd460a36ec048cd029af97\" name=\"ae549eb9876cd460a36ec048cd029af97\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae549eb9876cd460a36ec048cd029af97\">&#9670;&nbsp;</a></span>RESOURCE_LOADER_QUEUE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LOADER_QUEUE_LIMIT = 1000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a35b3cdfbe899c26e6da0068331ef4a03\" name=\"a35b3cdfbe899c26e6da0068331ef4a03\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35b3cdfbe899c26e6da0068331ef4a03\">&#9670;&nbsp;</a></span>RESOURCE_LOADER_REQUEST_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RESOURCE_LOADER_REQUEST_LIMIT = 1750</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95ef9ff7b7e26c1f357c10707720163a\" name=\"a95ef9ff7b7e26c1f357c10707720163a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95ef9ff7b7e26c1f357c10707720163a\">&#9670;&nbsp;</a></span>RIGIDBODY_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::RIGIDBODY_LIMIT = 500</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afde783f76b29484fca014a71379688da\" name=\"afde783f76b29484fca014a71379688da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afde783f76b29484fca014a71379688da\">&#9670;&nbsp;</a></span>SCRIPTABLE_ENTITY_TYPE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::SCRIPTABLE_ENTITY_TYPE_LIMIT = 50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9773c849e7f41480842e5cd1d8d4de73\" name=\"a9773c849e7f41480842e5cd1d8d4de73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9773c849e7f41480842e5cd1d8d4de73\">&#9670;&nbsp;</a></span>SIGNAL_TYPE_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::SIGNAL_TYPE_LIMIT = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4a96a9b06c171a66beb3fe0066ac6b5\" name=\"aa4a96a9b06c171a66beb3fe0066ac6b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4a96a9b06c171a66beb3fe0066ac6b5\">&#9670;&nbsp;</a></span>SYSTEM_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::SYSTEM_LIMIT = 128</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a675b9496ee55fb465aa5d4972b45bac7\" name=\"a675b9496ee55fb465aa5d4972b45bac7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a675b9496ee55fb465aa5d4972b45bac7\">&#9670;&nbsp;</a></span>TICK_RATE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::TICK_RATE = 1.0f / 60.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd586f202b2593831d3d48a18eb15776\" name=\"abd586f202b2593831d3d48a18eb15776\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd586f202b2593831d3d48a18eb15776\">&#9670;&nbsp;</a></span>UID_CHARACTER_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::UID_CHARACTER_LIMIT = 20000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8599d00d63ed9f6ee3eecb0c0b136b8\" name=\"af8599d00d63ed9f6ee3eecb0c0b136b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8599d00d63ed9f6ee3eecb0c0b136b8\">&#9670;&nbsp;</a></span>UID_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::UID_LIMIT = 2000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab751286624cca492c1abca52f7e0be8c\" name=\"ab751286624cca492c1abca52f7e0be8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab751286624cca492c1abca52f7e0be8c\">&#9670;&nbsp;</a></span>WORLDCELL_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::WORLDCELL_LIMIT = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1423ecbdc7b2879d47ac484d812fda50\" name=\"a1423ecbdc7b2879d47ac484d812fda50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1423ecbdc7b2879d47ac484d812fda50\">&#9670;&nbsp;</a></span>WORLDCELL_TRANSITION_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::WORLDCELL_TRANSITION_LIMIT = 250</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_async.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Async Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">Async</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Async Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming.  \n<a href=\"namespacetram_1_1_async.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">ResourceRequest</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a3852629b110e5e57e85140bb5fe518e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">RequestNotification</a> { <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\">NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\">COMPONENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\">CALLBACK</a>\n }</td></tr>\n<tr class=\"separator:a3852629b110e5e57e85140bb5fe518e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">RequestResource</a> (<a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *requester, <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *resource)</td></tr>\n<tr class=\"memdesc:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">RequestResource</a> (void(*callback)(void *data), void *data, <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *resource)</td></tr>\n<tr class=\"memdesc:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2234c4cb0590d5672aa3bf4bb78703f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">CancelRequest</a> (<a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *requester, <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *resource)</td></tr>\n<tr class=\"memdesc:a00df174c441553df6c3728c4355a4b7e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Cancels a resource load request.  <a href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">More...</a><br /></td></tr>\n<tr class=\"separator:a00df174c441553df6c3728c4355a4b7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">LoadDependency</a> (<a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *resource)</td></tr>\n<tr class=\"memdesc:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a resource from disk, skipping the queue.  <a href=\"namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f\">More...</a><br /></td></tr>\n<tr class=\"separator:a9e1b28345fded87fa20aee192ddcce0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15485706aae380a728a9e771feabb503\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">LoadResourcesFromDisk</a> ()</td></tr>\n<tr class=\"memdesc:a15485706aae380a728a9e771feabb503\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the first resource queue.  <a href=\"namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503\">More...</a><br /></td></tr>\n<tr class=\"separator:a15485706aae380a728a9e771feabb503\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">LoadResourcesFromMemory</a> ()</td></tr>\n<tr class=\"memdesc:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Processes the second resource queue.  <a href=\"namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de\">More...</a><br /></td></tr>\n<tr class=\"separator:a165152c16b8171d9a4acdfd2d80592de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">FinishResources</a> ()</td></tr>\n<tr class=\"memdesc:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Notifies EntityComponents about finished resources.  <a href=\"namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65\">More...</a><br /></td></tr>\n<tr class=\"separator:aed73e549dce7f281ed1d2d8bb31c7b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">Init</a> (size_t threads)</td></tr>\n<tr class=\"memdesc:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0\">More...</a><br /></td></tr>\n<tr class=\"separator:abf1180d68deb60ea65e90073f8f8eaf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">Yeet</a> ()</td></tr>\n<tr class=\"memdesc:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the async resource loader thread.  <a href=\"namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb\">More...</a><br /></td></tr>\n<tr class=\"separator:a808bec0c78a3d989b202cc84afed0cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af447ff406255f241322da550d5d027a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">GetWaitingResources</a> ()</td></tr>\n<tr class=\"memdesc:af447ff406255f241322da550d5d027a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns number of resources in queues.  <a href=\"namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3\">More...</a><br /></td></tr>\n<tr class=\"separator:af447ff406255f241322da550d5d027a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming. </p>\n<p >Currently <a class=\"el\" href=\"namespacetram_1_1_async.html\" title=\"Multi-threading and Resource streaming.\">Async</a> only does <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming, but we could do other kinds of <a class=\"el\" href=\"namespacetram_1_1_async.html\" title=\"Multi-threading and Resource streaming.\">Async</a> processing in the future too.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/async.html\">https://racenis.github.io/tram-sdk/documentation/framework/async.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a3852629b110e5e57e85140bb5fe518e5\" name=\"a3852629b110e5e57e85140bb5fe518e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3852629b110e5e57e85140bb5fe518e5\">&#9670;&nbsp;</a></span>RequestNotification</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">tram::Async::RequestNotification</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\" name=\"a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725\"></a>NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\" name=\"a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e\"></a>COMPONENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\" name=\"a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c\"></a>CALLBACK&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a00df174c441553df6c3728c4355a4b7e\" name=\"a00df174c441553df6c3728c4355a4b7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00df174c441553df6c3728c4355a4b7e\">&#9670;&nbsp;</a></span>CancelRequest()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::CancelRequest </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>requester</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>resource</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Cancels a resource load request. </p>\n<p >Should be called if the <a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> that requested a <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> to be loaded will be destructed before the <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> has finished loading. </p><dl class=\"section note\"><dt>Note</dt><dd>The resource will be fully loaded anyway, but the requester will not be notified. </dd></dl>\n\n</div>\n</div>\n<a id=\"aed73e549dce7f281ed1d2d8bb31c7b65\" name=\"aed73e549dce7f281ed1d2d8bb31c7b65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed73e549dce7f281ed1d2d8bb31c7b65\">&#9670;&nbsp;</a></span>FinishResources()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::FinishResources </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Notifies EntityComponents about finished resources. </p>\n\n</div>\n</div>\n<a id=\"af447ff406255f241322da550d5d027a3\" name=\"af447ff406255f241322da550d5d027a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af447ff406255f241322da550d5d027a3\">&#9670;&nbsp;</a></span>GetWaitingResources()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Async::GetWaitingResources </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns number of resources in queues. </p>\n\n</div>\n</div>\n<a id=\"abf1180d68deb60ea65e90073f8f8eaf0\" name=\"abf1180d68deb60ea65e90073f8f8eaf0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf1180d68deb60ea65e90073f8f8eaf0\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::Init </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>threads</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Starts the async resource loader thread. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">Number</td><td>of threads for async loading. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a9e1b28345fded87fa20aee192ddcce0f\" name=\"a9e1b28345fded87fa20aee192ddcce0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e1b28345fded87fa20aee192ddcce0f\">&#9670;&nbsp;</a></span>LoadDependency()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::LoadDependency </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>resource</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Loads a resource from disk, skipping the queue. </p>\n<p >Shouldn't be used outside of resource LoadFromDisk() methods. <br  />\n </p>\n\n</div>\n</div>\n<a id=\"a15485706aae380a728a9e771feabb503\" name=\"a15485706aae380a728a9e771feabb503\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15485706aae380a728a9e771feabb503\">&#9670;&nbsp;</a></span>LoadResourcesFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::LoadResourcesFromDisk </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Processes the first resource queue. </p>\n<p >If there are any resource loader threads active, this function will not do anything, instead allowing the loader threads to load the resources. </p>\n\n</div>\n</div>\n<a id=\"a165152c16b8171d9a4acdfd2d80592de\" name=\"a165152c16b8171d9a4acdfd2d80592de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a165152c16b8171d9a4acdfd2d80592de\">&#9670;&nbsp;</a></span>LoadResourcesFromMemory()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::LoadResourcesFromMemory </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Processes the second resource queue. </p>\n<dl class=\"section warning\"><dt>Warning</dt><dd>This function should only be called from the rendering thread. </dd></dl>\n\n</div>\n</div>\n<a id=\"a9db009e1493d70c2ce388b2910e32fa2\" name=\"a9db009e1493d70c2ce388b2910e32fa2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9db009e1493d70c2ce388b2910e32fa2\">&#9670;&nbsp;</a></span>RequestResource() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::RequestResource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>requester</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>resource</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a resource to the loading queue. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">requester</td><td><a class=\"el\" href=\"classtram_1_1_entity_component.html\" title=\"Component base class.\">EntityComponent</a> that will be notified when the resource is loaded. Can be set to nullptr, in which case nothing will be notified. </td></tr>\n    <tr><td class=\"paramname\">requested_resource</td><td>The resource that will be loaded. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aa2234c4cb0590d5672aa3bf4bb78703f\" name=\"aa2234c4cb0590d5672aa3bf4bb78703f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2234c4cb0590d5672aa3bf4bb78703f\">&#9670;&nbsp;</a></span>RequestResource() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::RequestResource </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(void *data)&#160;</td>\n          <td class=\"paramname\"><em>callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td>\n          <td class=\"paramname\"><em>resource</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a resource to the loading queue. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">callback</td><td>Callback function which will be called when the resource has been loaded and is ready for use. </td></tr>\n    <tr><td class=\"paramname\">data</td><td>Data pointer, which will be passed to as a parameter to the callback function. </td></tr>\n    <tr><td class=\"paramname\">requested_resource</td><td>The resource that will be loaded. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a808bec0c78a3d989b202cc84afed0cfb\" name=\"a808bec0c78a3d989b202cc84afed0cfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a808bec0c78a3d989b202cc84afed0cfb\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Async::Yeet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops the async resource loader thread. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_audio.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff.  \n<a href=\"namespacetram_1_1_audio.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_spatial\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_spatial\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Experimental path tracing audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle.  <a href=\"structtram_1_1_audio_1_1audiobuffer__t.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle.  <a href=\"structtram_1_1_audio_1_1audiosource__t.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> data resource.  <a href=\"classtram_1_1_audio_1_1_sound.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">Init</a> ()</td></tr>\n<tr class=\"memdesc:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470\">More...</a><br /></td></tr>\n<tr class=\"separator:aabd3c9eadd115d4d66e324ffed163470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">Update</a> ()</td></tr>\n<tr class=\"memdesc:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system.  <a href=\"namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b\">More...</a><br /></td></tr>\n<tr class=\"separator:acb768aeb78a526fe6c4378db6041b06b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a999017ca4b466fef799869fd591d134e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e\">Uninit</a> ()</td></tr>\n<tr class=\"separator:a999017ca4b466fef799869fd591d134e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3\">SetVolume</a> (float value)</td></tr>\n<tr class=\"separator:a95222c442aeb50c4b0efd0c1a284eea3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c\">GetVolume</a> ()</td></tr>\n<tr class=\"separator:ac8184c5ea205ddd19e0795f8ffdd7c1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">SetListenerPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"memdesc:ae4700c24d6f820914c7f36ea15203727\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\" title=\"Sets the listener position.\">Audio::API::SetListenerPosition()</a>.  <a href=\"namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727\">More...</a><br /></td></tr>\n<tr class=\"separator:ae4700c24d6f820914c7f36ea15203727\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd913701b5ffec0d613acaca89266eab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">SetListenerOrientation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> orientation)</td></tr>\n<tr class=\"memdesc:acd913701b5ffec0d613acaca89266eab\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\" title=\"Sets the listener orientation.\">Audio::API::SetListenerOrientation()</a>.  <a href=\"namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab\">More...</a><br /></td></tr>\n<tr class=\"separator:acd913701b5ffec0d613acaca89266eab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ac8184c5ea205ddd19e0795f8ffdd7c1c\" name=\"ac8184c5ea205ddd19e0795f8ffdd7c1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8184c5ea205ddd19e0795f8ffdd7c1c\">&#9670;&nbsp;</a></span>GetVolume()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::GetVolume </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aabd3c9eadd115d4d66e324ffed163470\" name=\"aabd3c9eadd115d4d66e324ffed163470\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabd3c9eadd115d4d66e324ffed163470\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Starts the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system. </p>\n\n</div>\n</div>\n<a id=\"acd913701b5ffec0d613acaca89266eab\" name=\"acd913701b5ffec0d613acaca89266eab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd913701b5ffec0d613acaca89266eab\">&#9670;&nbsp;</a></span>SetListenerOrientation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::SetListenerOrientation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>orientation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\" title=\"Sets the listener orientation.\">Audio::API::SetListenerOrientation()</a>. </p>\n\n</div>\n</div>\n<a id=\"ae4700c24d6f820914c7f36ea15203727\" name=\"ae4700c24d6f820914c7f36ea15203727\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4700c24d6f820914c7f36ea15203727\">&#9670;&nbsp;</a></span>SetListenerPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::SetListenerPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>See <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\" title=\"Sets the listener position.\">Audio::API::SetListenerPosition()</a>. </p>\n\n</div>\n</div>\n<a id=\"a95222c442aeb50c4b0efd0c1a284eea3\" name=\"a95222c442aeb50c4b0efd0c1a284eea3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95222c442aeb50c4b0efd0c1a284eea3\">&#9670;&nbsp;</a></span>SetVolume()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::SetVolume </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a999017ca4b466fef799869fd591d134e\" name=\"a999017ca4b466fef799869fd591d134e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a999017ca4b466fef799869fd591d134e\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb768aeb78a526fe6c4378db6041b06b\" name=\"acb768aeb78a526fe6c4378db6041b06b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb768aeb78a526fe6c4378db6041b06b\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Updates the <a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> system. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_audio_1_1_a_p_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::API Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">API</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::API Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>.  \n<a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">Init</a> ()</td></tr>\n<tr class=\"separator:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55057fbdf290e0782209c5b31d972488\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">Update</a> ()</td></tr>\n<tr class=\"separator:a55057fbdf290e0782209c5b31d972488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">Uninit</a> ()</td></tr>\n<tr class=\"separator:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c238a85c44a1be22223921bb836673b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">SetListenerPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"memdesc:a8c238a85c44a1be22223921bb836673b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener position.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c238a85c44a1be22223921bb836673b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">SetListenerOrientation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> orientation)</td></tr>\n<tr class=\"memdesc:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener orientation.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">More...</a><br /></td></tr>\n<tr class=\"separator:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">SetListenerGain</a> (float gain)</td></tr>\n<tr class=\"separator:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels)</td></tr>\n<tr class=\"memdesc:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates audio buffers from raw audio data.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">More...</a><br /></td></tr>\n<tr class=\"separator:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">RemoveAudioBuffer</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> buffer)</td></tr>\n<tr class=\"memdesc:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes audio buffers.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">MakeAudioSource</a> ()</td></tr>\n<tr class=\"memdesc:a02a046aaade1a4a0290db64f9514816b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">More...</a><br /></td></tr>\n<tr class=\"separator:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">SetAudioSourcePitch</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, float pitch)</td></tr>\n<tr class=\"memdesc:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the pitch of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">SetAudioSourceGain</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, float gain)</td></tr>\n<tr class=\"memdesc:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the gain of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">SetAudioSourcePosition</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"memdesc:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">More...</a><br /></td></tr>\n<tr class=\"separator:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">SetAudioSourceVelocity</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> velocity)</td></tr>\n<tr class=\"memdesc:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">SetAudioSourceRepeating</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, bool repeating)</td></tr>\n<tr class=\"memdesc:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repetition of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">More...</a><br /></td></tr>\n<tr class=\"separator:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66d344898a8b0355218f36cddc369046\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">SetAudioSourceBuffer</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source, <a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> buffer)</td></tr>\n<tr class=\"memdesc:a66d344898a8b0355218f36cddc369046\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the buffers that the audio source will play.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">More...</a><br /></td></tr>\n<tr class=\"separator:a66d344898a8b0355218f36cddc369046\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">PlayAudioSource</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source)</td></tr>\n<tr class=\"memdesc:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">More...</a><br /></td></tr>\n<tr class=\"separator:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">PauseAudioSource</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source)</td></tr>\n<tr class=\"memdesc:ab58ddd72a8b81823756b0d141e015590\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">More...</a><br /></td></tr>\n<tr class=\"separator:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">StopAudioSource</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source)</td></tr>\n<tr class=\"memdesc:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">More...</a><br /></td></tr>\n<tr class=\"separator:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">IsAudioSourcePlaying</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source)</td></tr>\n<tr class=\"memdesc:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an audio source is playing.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">More...</a><br /></td></tr>\n<tr class=\"separator:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af490232ec82451014fb9e858f3feca68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">RemoveAudioSource</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> source)</td></tr>\n<tr class=\"memdesc:af490232ec82451014fb9e858f3feca68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">More...</a><br /></td></tr>\n<tr class=\"separator:af490232ec82451014fb9e858f3feca68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a8d3b6a316e9eabc092a7302995d545bd\" name=\"a8d3b6a316e9eabc092a7302995d545bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d3b6a316e9eabc092a7302995d545bd\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e6b04b5e38e41ca29049e7d3f36d596\" name=\"a8e6b04b5e38e41ca29049e7d3f36d596\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e6b04b5e38e41ca29049e7d3f36d596\">&#9670;&nbsp;</a></span>IsAudioSourcePlaying()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Audio::API::IsAudioSourcePlaying </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks if an audio source is playing. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if the audio source is playing a sound, false otherwise. </dd></dl>\n\n</div>\n</div>\n<a id=\"aaaac5e27e3363b227c4ea0d70f8844a0\" name=\"aaaac5e27e3363b227c4ea0d70f8844a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaaac5e27e3363b227c4ea0d70f8844a0\">&#9670;&nbsp;</a></span>MakeAudioBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a> tram::Audio::API::MakeAudioBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">const int16_t *&#160;</td>\n          <td class=\"paramname\"><em>audio_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>length</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>samples</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>channels</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates audio buffers from raw audio data. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">audio_data</td><td>Pointer to the raw audio data, stored as 16 bit PCM. </td></tr>\n    <tr><td class=\"paramname\">length</td><td>Length of the raw audio data, in samples. </td></tr>\n    <tr><td class=\"paramname\">buffer_count</td><td>Created buffer count will be stored in this variable. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a02a046aaade1a4a0290db64f9514816b\" name=\"a02a046aaade1a4a0290db64f9514816b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02a046aaade1a4a0290db64f9514816b\">&#9670;&nbsp;</a></span>MakeAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a> tram::Audio::API::MakeAudioSource </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Creates an audio source. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>A new audio source handle. </dd></dl>\n\n</div>\n</div>\n<a id=\"ab58ddd72a8b81823756b0d141e015590\" name=\"ab58ddd72a8b81823756b0d141e015590\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab58ddd72a8b81823756b0d141e015590\">&#9670;&nbsp;</a></span>PauseAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::PauseAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pauses the audio source. </p>\n\n</div>\n</div>\n<a id=\"a909017b3d28ed5fe14bac0b516770bb5\" name=\"a909017b3d28ed5fe14bac0b516770bb5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a909017b3d28ed5fe14bac0b516770bb5\">&#9670;&nbsp;</a></span>PlayAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::PlayAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Plays an audio source. </p>\n\n</div>\n</div>\n<a id=\"a0724c17fd3523893b97ee2a6aa8a090d\" name=\"a0724c17fd3523893b97ee2a6aa8a090d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0724c17fd3523893b97ee2a6aa8a090d\">&#9670;&nbsp;</a></span>RemoveAudioBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::RemoveAudioBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>buffer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Deletes audio buffers. </p>\n\n</div>\n</div>\n<a id=\"af490232ec82451014fb9e858f3feca68\" name=\"af490232ec82451014fb9e858f3feca68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af490232ec82451014fb9e858f3feca68\">&#9670;&nbsp;</a></span>RemoveAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::RemoveAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Deletes an audio source. </p>\n<p >If you do this, then the audio source handle will become invalid. Call <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\" title=\"Creates an audio source.\">MakeAudioSource()</a> to get a new one. </p>\n\n</div>\n</div>\n<a id=\"a66d344898a8b0355218f36cddc369046\" name=\"a66d344898a8b0355218f36cddc369046\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66d344898a8b0355218f36cddc369046\">&#9670;&nbsp;</a></span>SetAudioSourceBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourceBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>buffer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the buffers that the audio source will play. </p>\n\n</div>\n</div>\n<a id=\"aa34a3e351de4035848dc1280ef3e824f\" name=\"aa34a3e351de4035848dc1280ef3e824f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa34a3e351de4035848dc1280ef3e824f\">&#9670;&nbsp;</a></span>SetAudioSourceGain()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourceGain </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>gain</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the gain of an audio source. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">gain</td><td>1.0f is the regular gain. Halving the value decreases the gain by 6dB. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aa3b7d9891305e368e07d7ad863d628c6\" name=\"aa3b7d9891305e368e07d7ad863d628c6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3b7d9891305e368e07d7ad863d628c6\">&#9670;&nbsp;</a></span>SetAudioSourcePitch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourcePitch </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>pitch</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the pitch of an audio source. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">pitch</td><td>1.0f is the regular pitch. Halving the value decreases the pitch by an octave. Doubling the value increases the pitch by an octave. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a273ec7fe95edfbd9414878e67eadaf4b\" name=\"a273ec7fe95edfbd9414878e67eadaf4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a273ec7fe95edfbd9414878e67eadaf4b\">&#9670;&nbsp;</a></span>SetAudioSourcePosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourcePosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the position of an audio source. </p>\n\n</div>\n</div>\n<a id=\"a7420c760d8243ed9e24b2af3a77e4e2c\" name=\"a7420c760d8243ed9e24b2af3a77e4e2c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7420c760d8243ed9e24b2af3a77e4e2c\">&#9670;&nbsp;</a></span>SetAudioSourceRepeating()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourceRepeating </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>repeating</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the repetition of an audio source. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">repeating</td><td>True if the sound repeats after playing, false if it just stops. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a7a9b62489392c6a82eda4a2157cad570\" name=\"a7a9b62489392c6a82eda4a2157cad570\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a9b62489392c6a82eda4a2157cad570\">&#9670;&nbsp;</a></span>SetAudioSourceVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetAudioSourceVelocity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>velocity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the velocity of an audio source. </p>\n\n</div>\n</div>\n<a id=\"a0722507591b4bba19c85e8f9d8088704\" name=\"a0722507591b4bba19c85e8f9d8088704\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0722507591b4bba19c85e8f9d8088704\">&#9670;&nbsp;</a></span>SetListenerGain()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetListenerGain </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>gain</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0ec692e07524255ef5c814ccbff53b1b\" name=\"a0ec692e07524255ef5c814ccbff53b1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ec692e07524255ef5c814ccbff53b1b\">&#9670;&nbsp;</a></span>SetListenerOrientation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetListenerOrientation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>orientation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the listener orientation. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">orientation</td><td>Listener orientation. Under normal circumstances, it should be the same as render view rotation. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a8c238a85c44a1be22223921bb836673b\" name=\"a8c238a85c44a1be22223921bb836673b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c238a85c44a1be22223921bb836673b\">&#9670;&nbsp;</a></span>SetListenerPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::SetListenerPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the listener position. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">position</td><td>Listener position. Under normal circumstances, it should be the same as render view position. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a77e3f4ff9024d2adb99aab7a03cb2261\" name=\"a77e3f4ff9024d2adb99aab7a03cb2261\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77e3f4ff9024d2adb99aab7a03cb2261\">&#9670;&nbsp;</a></span>StopAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::StopAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops the audio source. </p>\n\n</div>\n</div>\n<a id=\"adb92f6546681004b6ec62abf005d3f68\" name=\"adb92f6546681004b6ec62abf005d3f68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb92f6546681004b6ec62abf005d3f68\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a55057fbdf290e0782209c5b31d972488\" name=\"a55057fbdf290e0782209c5b31d972488\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55057fbdf290e0782209c5b31d972488\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::API::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_audio_1_1_open_a_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::OpenAL Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html\">OpenAL</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::OpenAL Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab49184429adba447343e9fec22c0d3fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ab49184429adba447343e9fec22c0d3fa\">Init</a> ()</td></tr>\n<tr class=\"separator:ab49184429adba447343e9fec22c0d3fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab4d15cd4a36ef7d2b009416367c39cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#aab4d15cd4a36ef7d2b009416367c39cf\">Update</a> ()</td></tr>\n<tr class=\"separator:aab4d15cd4a36ef7d2b009416367c39cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4acf4f078b7cf5a1b942ba765b726d27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a4acf4f078b7cf5a1b942ba765b726d27\">Uninit</a> ()</td></tr>\n<tr class=\"separator:a4acf4f078b7cf5a1b942ba765b726d27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ce3aefd95080485170d533d1ab67033\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a8ce3aefd95080485170d533d1ab67033\">SetListenerPosition</a> (const glm::vec3 &amp;position)</td></tr>\n<tr class=\"separator:a8ce3aefd95080485170d533d1ab67033\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e88263eee19e6310d6576119149eb58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a3e88263eee19e6310d6576119149eb58\">SetListenerOrientation</a> (const glm::quat &amp;orientation)</td></tr>\n<tr class=\"separator:a3e88263eee19e6310d6576119149eb58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa199f624809391f2ac735b25d628a941\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#aa199f624809391f2ac735b25d628a941\">MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels, int32_t &amp;buffer_count)</td></tr>\n<tr class=\"separator:aa199f624809391f2ac735b25d628a941\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f4a41e285711876e0ed161ceee70ba0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a9f4a41e285711876e0ed161ceee70ba0\">RemoveAudioBuffer</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> *buffers, int32_t buffer_count)</td></tr>\n<tr class=\"separator:a9f4a41e285711876e0ed161ceee70ba0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0f64568fdcd553be341dcae21d2aa47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ac0f64568fdcd553be341dcae21d2aa47\">MakeAudioSource</a> ()</td></tr>\n<tr class=\"separator:ac0f64568fdcd553be341dcae21d2aa47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ad385701bac8996a0326a591781409c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a7ad385701bac8996a0326a591781409c\">SetAudioSourcePitch</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, float pitch)</td></tr>\n<tr class=\"separator:a7ad385701bac8996a0326a591781409c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53e32aaf672f2af4b68c43e9f99959c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a53e32aaf672f2af4b68c43e9f99959c7\">SetAudioSourceGain</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, float gain)</td></tr>\n<tr class=\"separator:a53e32aaf672f2af4b68c43e9f99959c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a132d5d6ca4dfa0d67c17cea92bb1a23a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a132d5d6ca4dfa0d67c17cea92bb1a23a\">SetAudioSourcePosition</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:a132d5d6ca4dfa0d67c17cea92bb1a23a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0d1a7b7001a8637cb6d468388f548e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ae0d1a7b7001a8637cb6d468388f548e1\">SetAudioSourceVelocity</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> velocity)</td></tr>\n<tr class=\"separator:ae0d1a7b7001a8637cb6d468388f548e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0267dff121f0c20fc3771cdc8e756d52\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a0267dff121f0c20fc3771cdc8e756d52\">SetAudioSourceRepeating</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, bool repeating)</td></tr>\n<tr class=\"separator:a0267dff121f0c20fc3771cdc8e756d52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6026f1637f86a438576e3a0be76b2a2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a6026f1637f86a438576e3a0be76b2a2d\">SetAudioSourceBuffer</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source, const <a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> *buffers, int32_t buffer_count)</td></tr>\n<tr class=\"separator:a6026f1637f86a438576e3a0be76b2a2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac601e2ad1bb65692354ff75d747e2a86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ac601e2ad1bb65692354ff75d747e2a86\">PlayAudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source)</td></tr>\n<tr class=\"separator:ac601e2ad1bb65692354ff75d747e2a86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2394e71888e7b41252c827c10c0fe6b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a2394e71888e7b41252c827c10c0fe6b0\">PauseAudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source)</td></tr>\n<tr class=\"separator:a2394e71888e7b41252c827c10c0fe6b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7739f62256533a25607c6c4434ec80fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a7739f62256533a25607c6c4434ec80fb\">StopAudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source)</td></tr>\n<tr class=\"separator:a7739f62256533a25607c6c4434ec80fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4b1d2cb496a21ae7965af75c06f0e87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ab4b1d2cb496a21ae7965af75c06f0e87\">IsAudioSourcePlaying</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source)</td></tr>\n<tr class=\"separator:ab4b1d2cb496a21ae7965af75c06f0e87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f7729e1c6b3014d87e3a0ae5e6665b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a0f7729e1c6b3014d87e3a0ae5e6665b3\">RemoveAudioSource</a> (<a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> source)</td></tr>\n<tr class=\"separator:a0f7729e1c6b3014d87e3a0ae5e6665b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a75e5af8e8fa3487d1a6aac7bf95dcc67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ALCdevice *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#a75e5af8e8fa3487d1a6aac7bf95dcc67\">sound_device</a> = nullptr</td></tr>\n<tr class=\"separator:a75e5af8e8fa3487d1a6aac7bf95dcc67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6c558523a9bfd3a987927ab7a452a8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ALCcontext *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_open_a_l.html#ac6c558523a9bfd3a987927ab7a452a8b\">sound_context</a> = nullptr</td></tr>\n<tr class=\"separator:ac6c558523a9bfd3a987927ab7a452a8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ab49184429adba447343e9fec22c0d3fa\" name=\"ab49184429adba447343e9fec22c0d3fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab49184429adba447343e9fec22c0d3fa\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab4b1d2cb496a21ae7965af75c06f0e87\" name=\"ab4b1d2cb496a21ae7965af75c06f0e87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4b1d2cb496a21ae7965af75c06f0e87\">&#9670;&nbsp;</a></span>IsAudioSourcePlaying()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Audio::OpenAL::IsAudioSourcePlaying </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa199f624809391f2ac735b25d628a941\" name=\"aa199f624809391f2ac735b25d628a941\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa199f624809391f2ac735b25d628a941\">&#9670;&nbsp;</a></span>MakeAudioBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> * tram::Audio::OpenAL::MakeAudioBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">const int16_t *&#160;</td>\n          <td class=\"paramname\"><em>audio_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>length</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>samples</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>channels</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>buffer_count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0f64568fdcd553be341dcae21d2aa47\" name=\"ac0f64568fdcd553be341dcae21d2aa47\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0f64568fdcd553be341dcae21d2aa47\">&#9670;&nbsp;</a></span>MakeAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a> tram::Audio::OpenAL::MakeAudioSource </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2394e71888e7b41252c827c10c0fe6b0\" name=\"a2394e71888e7b41252c827c10c0fe6b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2394e71888e7b41252c827c10c0fe6b0\">&#9670;&nbsp;</a></span>PauseAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::PauseAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac601e2ad1bb65692354ff75d747e2a86\" name=\"ac601e2ad1bb65692354ff75d747e2a86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac601e2ad1bb65692354ff75d747e2a86\">&#9670;&nbsp;</a></span>PlayAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::PlayAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f4a41e285711876e0ed161ceee70ba0\" name=\"a9f4a41e285711876e0ed161ceee70ba0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f4a41e285711876e0ed161ceee70ba0\">&#9670;&nbsp;</a></span>RemoveAudioBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::RemoveAudioBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>buffers</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>buffer_count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f7729e1c6b3014d87e3a0ae5e6665b3\" name=\"a0f7729e1c6b3014d87e3a0ae5e6665b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f7729e1c6b3014d87e3a0ae5e6665b3\">&#9670;&nbsp;</a></span>RemoveAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::RemoveAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6026f1637f86a438576e3a0be76b2a2d\" name=\"a6026f1637f86a438576e3a0be76b2a2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6026f1637f86a438576e3a0be76b2a2d\">&#9670;&nbsp;</a></span>SetAudioSourceBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourceBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>buffers</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>buffer_count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53e32aaf672f2af4b68c43e9f99959c7\" name=\"a53e32aaf672f2af4b68c43e9f99959c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53e32aaf672f2af4b68c43e9f99959c7\">&#9670;&nbsp;</a></span>SetAudioSourceGain()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourceGain </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>gain</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ad385701bac8996a0326a591781409c\" name=\"a7ad385701bac8996a0326a591781409c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ad385701bac8996a0326a591781409c\">&#9670;&nbsp;</a></span>SetAudioSourcePitch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourcePitch </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>pitch</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a132d5d6ca4dfa0d67c17cea92bb1a23a\" name=\"a132d5d6ca4dfa0d67c17cea92bb1a23a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a132d5d6ca4dfa0d67c17cea92bb1a23a\">&#9670;&nbsp;</a></span>SetAudioSourcePosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourcePosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0267dff121f0c20fc3771cdc8e756d52\" name=\"a0267dff121f0c20fc3771cdc8e756d52\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0267dff121f0c20fc3771cdc8e756d52\">&#9670;&nbsp;</a></span>SetAudioSourceRepeating()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourceRepeating </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>repeating</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0d1a7b7001a8637cb6d468388f548e1\" name=\"ae0d1a7b7001a8637cb6d468388f548e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0d1a7b7001a8637cb6d468388f548e1\">&#9670;&nbsp;</a></span>SetAudioSourceVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetAudioSourceVelocity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>velocity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e88263eee19e6310d6576119149eb58\" name=\"a3e88263eee19e6310d6576119149eb58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e88263eee19e6310d6576119149eb58\">&#9670;&nbsp;</a></span>SetListenerOrientation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetListenerOrientation </td>\n          <td>(</td>\n          <td class=\"paramtype\">const glm::quat &amp;&#160;</td>\n          <td class=\"paramname\"><em>orientation</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ce3aefd95080485170d533d1ab67033\" name=\"a8ce3aefd95080485170d533d1ab67033\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ce3aefd95080485170d533d1ab67033\">&#9670;&nbsp;</a></span>SetListenerPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::SetListenerPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\">const glm::vec3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>position</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7739f62256533a25607c6c4434ec80fb\" name=\"a7739f62256533a25607c6c4434ec80fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7739f62256533a25607c6c4434ec80fb\">&#9670;&nbsp;</a></span>StopAudioSource()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::StopAudioSource </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ad00fb5e2262fdb936896a2a2cc1b25d1\">audiosource_t</a>&#160;</td>\n          <td class=\"paramname\"><em>source</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4acf4f078b7cf5a1b942ba765b726d27\" name=\"a4acf4f078b7cf5a1b942ba765b726d27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4acf4f078b7cf5a1b942ba765b726d27\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aab4d15cd4a36ef7d2b009416367c39cf\" name=\"aab4d15cd4a36ef7d2b009416367c39cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4d15cd4a36ef7d2b009416367c39cf\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::OpenAL::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ac6c558523a9bfd3a987927ab7a452a8b\" name=\"ac6c558523a9bfd3a987927ab7a452a8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6c558523a9bfd3a987927ab7a452a8b\">&#9670;&nbsp;</a></span>sound_context</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ALCcontext* tram::Audio::OpenAL::sound_context = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a75e5af8e8fa3487d1a6aac7bf95dcc67\" name=\"a75e5af8e8fa3487d1a6aac7bf95dcc67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75e5af8e8fa3487d1a6aac7bf95dcc67\">&#9670;&nbsp;</a></span>sound_device</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">ALCdevice* tram::Audio::OpenAL::sound_device = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_audio_1_1_spatial.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Experimental path tracing audio system.  \n<a href=\"namespacetram_1_1_audio_1_1_spatial.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a29e8b2fda522dd1d5e8f4ec648217351\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">AudioSourceFlags</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\">SOURCE_PLAYING</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\">SOURCE_REPEATING</a> = 2\n }</td></tr>\n<tr class=\"separator:a29e8b2fda522dd1d5e8f4ec648217351\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade3f518b6f4fc8663aa6cc3143481f92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">AudioSampleRate</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\">SAMPLERATE_44100</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\">SAMPLERATE_22050</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\">SAMPLERATE_11025</a> = 4\n }</td></tr>\n<tr class=\"separator:ade3f518b6f4fc8663aa6cc3143481f92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1d958660cb3bf23f87e78a3a2a36d912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">InitOutput</a> ()</td></tr>\n<tr class=\"separator:a1d958660cb3bf23f87e78a3a2a36d912\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1369d0d3a2339c9205f38130aaa18b05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">UpdateOutput</a> ()</td></tr>\n<tr class=\"separator:a1369d0d3a2339c9205f38130aaa18b05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd2e06cbc247c1a503526098fb084789\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">UninitOutput</a> ()</td></tr>\n<tr class=\"separator:abd2e06cbc247c1a503526098fb084789\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0ceb28e435bdcb3504d0702785e2ad4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">LockRenderlist</a> ()</td></tr>\n<tr class=\"separator:af0ceb28e435bdcb3504d0702785e2ad4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f2da687a7b846d596f35af37ae63841\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">UnlockRenderlist</a> ()</td></tr>\n<tr class=\"separator:a1f2da687a7b846d596f35af37ae63841\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e3e22294df1b1d269a8617a1b65291b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">FindPaths</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> &amp;result, bool metropolis, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:a9e3e22294df1b1d269a8617a1b65291b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abac4b381854c802af06d8b08b9643434\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">FindPathsMetropolis</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *exploration, <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> *result, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:abac4b381854c802af06d8b08b9643434\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3dcc76efc87914d95c6011db3972eda4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">InitExplorationPaths</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *paths)</td></tr>\n<tr class=\"separator:a3dcc76efc87914d95c6011db3972eda4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad48745046cf034947258d77acad7b082\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">ValidateResult</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> &amp;result, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:ad48745046cf034947258d77acad7b082\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fce28512165221d8874ab495d005804\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">RenderResult</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> &amp;result, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position)</td></tr>\n<tr class=\"separator:a4fce28512165221d8874ab495d005804\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d836ed6f922b4b64472050dd5b99304\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">CheckReverb</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *paths)</td></tr>\n<tr class=\"separator:a3d836ed6f922b4b64472050dd5b99304\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac07a5c7f91a197dfdd8544a505a71576\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">MakeSomeSourcePaths</a> (<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a> &amp;path, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> source_position)</td></tr>\n<tr class=\"separator:ac07a5c7f91a197dfdd8544a505a71576\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a84078cbb908ef623f2337cdce8a777b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9\">PATHS_FOR_RENDERING</a> = 10</td></tr>\n<tr class=\"separator:a84078cbb908ef623f2337cdce8a777b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6d4c2f9690d64f882c492e5e9075eae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae\">PATHS_FOR_SOURCE</a> = 5</td></tr>\n<tr class=\"separator:ab6d4c2f9690d64f882c492e5e9075eae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe41831e149db1775fb1a738b693a2e4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4\">PATHS_FOR_LISTENER</a> = 5</td></tr>\n<tr class=\"separator:abe41831e149db1775fb1a738b693a2e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac53db006980b48a77fdcc80c34854c20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">BUFFER_COUNT</a> = 1000</td></tr>\n<tr class=\"separator:ac53db006980b48a77fdcc80c34854c20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1dc54415cd0414f047cfd68c37ef13a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a> = 200</td></tr>\n<tr class=\"separator:a1dc54415cd0414f047cfd68c37ef13a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a470153ad5cab64ede6d4a517710c7aee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">SOURCE_DEPTH_LIMIT</a> = 3</td></tr>\n<tr class=\"separator:a470153ad5cab64ede6d4a517710c7aee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa61124c29ea3a00d8124d9c20dd8a4af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a> = 6</td></tr>\n<tr class=\"separator:aa61124c29ea3a00d8124d9c20dd8a4af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0220900672de1f44004ac3fbea75384e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e\">audiobuffers</a> [<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">BUFFER_COUNT</a>]</td></tr>\n<tr class=\"separator:a0220900672de1f44004ac3fbea75384e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09a8fe4a1def9a9851bd0eb34988036f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f\">audiosources</a> [<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>]</td></tr>\n<tr class=\"separator:a09a8fe4a1def9a9851bd0eb34988036f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1707c3651d829fc8dccf07265d990501\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501\">audiorenders</a> [<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>]</td></tr>\n<tr class=\"separator:a1707c3651d829fc8dccf07265d990501\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d4e5961da95174066a93816b9b418ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad\">listener_position</a></td></tr>\n<tr class=\"separator:a7d4e5961da95174066a93816b9b418ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb9b0bd1fd2aee84d39ac5b2f656eac8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8\">listener_orientation</a></td></tr>\n<tr class=\"separator:acb9b0bd1fd2aee84d39ac5b2f656eac8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a572ed0408e51e97d4aab9499559dcabe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe\">listener_reverb_delay</a> [5]</td></tr>\n<tr class=\"separator:a572ed0408e51e97d4aab9499559dcabe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d1dc309e3904bd79c244bbc63c00839\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839\">listener_reverb_distance</a> [5]</td></tr>\n<tr class=\"separator:a8d1dc309e3904bd79c244bbc63c00839\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abadc037457811482c0cc517072ab1f77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77\">listener_reverb_force</a> [5]</td></tr>\n<tr class=\"separator:abadc037457811482c0cc517072ab1f77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4353683a488762dd6403d5c7d5f6e1fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb\">listener_reverb_normalized</a> [5]</td></tr>\n<tr class=\"separator:a4353683a488762dd6403d5c7d5f6e1fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Experimental path tracing audio system. </p>\n<p >It uses bi-directional path tracing together with Primary Sample Space Metropolis <a class=\"el\" href=\"classtram_1_1_light.html\" title=\"LightComponent wrapper.\">Light</a> Transport algorithm to find paths between the listener and audio sources.</p>\n<p >It then attentuates sounds based on surface reflection absorption and distance, does panning based on the angle between the listener and the last reflection and then convolves the resulting impulse response with the sound being played back by the audio source.</p>\n<p >Sounds pretty bad (needs tweaking), very slow as well (no optimizations).</p>\n<p >I haven't tried recently, but it probably doesn't even compile.</p>\n<dl class=\"todo\"><dt><b><a class=\"el\" href=\"todo.html#_todo000001\">Todo:</a></b></dt><dd><p class=\"startdd\">Make sure that it compiles and do some improvements </p>\n<p class=\"interdd\">Investigate the possibilities of using hardware accelerated ray-tracing </p>\n<p class=\"enddd\">I am very poor and can't afford a graphics card, NVIDIA pls sponsor me </p>\n</dd></dl>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"ade3f518b6f4fc8663aa6cc3143481f92\" name=\"ade3f518b6f4fc8663aa6cc3143481f92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade3f518b6f4fc8663aa6cc3143481f92\">&#9670;&nbsp;</a></span>AudioSampleRate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">tram::Audio::Spatial::AudioSampleRate</a> : uint16_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\" name=\"ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32\"></a>SAMPLERATE_44100&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\" name=\"ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67\"></a>SAMPLERATE_22050&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\" name=\"ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136\"></a>SAMPLERATE_11025&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a29e8b2fda522dd1d5e8f4ec648217351\" name=\"a29e8b2fda522dd1d5e8f4ec648217351\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29e8b2fda522dd1d5e8f4ec648217351\">&#9670;&nbsp;</a></span>AudioSourceFlags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351\">tram::Audio::Spatial::AudioSourceFlags</a> : uint16_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\" name=\"a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338\"></a>SOURCE_PLAYING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\" name=\"a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f\"></a>SOURCE_REPEATING&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a3d836ed6f922b4b64472050dd5b99304\" name=\"a3d836ed6f922b4b64472050dd5b99304\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d836ed6f922b4b64472050dd5b99304\">&#9670;&nbsp;</a></span>CheckReverb()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::CheckReverb </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *&#160;</td>\n          <td class=\"paramname\"><em>paths</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9e3e22294df1b1d269a8617a1b65291b\" name=\"a9e3e22294df1b1d269a8617a1b65291b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e3e22294df1b1d269a8617a1b65291b\">&#9670;&nbsp;</a></span>FindPaths()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::FindPaths </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>metropolis</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abac4b381854c802af06d8b08b9643434\" name=\"abac4b381854c802af06d8b08b9643434\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abac4b381854c802af06d8b08b9643434\">&#9670;&nbsp;</a></span>FindPathsMetropolis()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::FindPathsMetropolis </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *&#160;</td>\n          <td class=\"paramname\"><em>exploration</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> *&#160;</td>\n          <td class=\"paramname\"><em>result</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3dcc76efc87914d95c6011db3972eda4\" name=\"a3dcc76efc87914d95c6011db3972eda4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3dcc76efc87914d95c6011db3972eda4\">&#9670;&nbsp;</a></span>InitExplorationPaths()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::InitExplorationPaths </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a> *&#160;</td>\n          <td class=\"paramname\"><em>paths</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d958660cb3bf23f87e78a3a2a36d912\" name=\"a1d958660cb3bf23f87e78a3a2a36d912\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d958660cb3bf23f87e78a3a2a36d912\">&#9670;&nbsp;</a></span>InitOutput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::InitOutput </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af0ceb28e435bdcb3504d0702785e2ad4\" name=\"af0ceb28e435bdcb3504d0702785e2ad4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0ceb28e435bdcb3504d0702785e2ad4\">&#9670;&nbsp;</a></span>LockRenderlist()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::LockRenderlist </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac07a5c7f91a197dfdd8544a505a71576\" name=\"ac07a5c7f91a197dfdd8544a505a71576\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac07a5c7f91a197dfdd8544a505a71576\">&#9670;&nbsp;</a></span>MakeSomeSourcePaths()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::MakeSomeSourcePaths </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>path</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>source_position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4fce28512165221d8874ab495d005804\" name=\"a4fce28512165221d8874ab495d005804\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fce28512165221d8874ab495d005804\">&#9670;&nbsp;</a></span>RenderResult()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::RenderResult </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd2e06cbc247c1a503526098fb084789\" name=\"abd2e06cbc247c1a503526098fb084789\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd2e06cbc247c1a503526098fb084789\">&#9670;&nbsp;</a></span>UninitOutput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::UninitOutput </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f2da687a7b846d596f35af37ae63841\" name=\"a1f2da687a7b846d596f35af37ae63841\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f2da687a7b846d596f35af37ae63841\">&#9670;&nbsp;</a></span>UnlockRenderlist()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::UnlockRenderlist </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1369d0d3a2339c9205f38130aaa18b05\" name=\"a1369d0d3a2339c9205f38130aaa18b05\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1369d0d3a2339c9205f38130aaa18b05\">&#9670;&nbsp;</a></span>UpdateOutput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::UpdateOutput </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad48745046cf034947258d77acad7b082\" name=\"ad48745046cf034947258d77acad7b082\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad48745046cf034947258d77acad7b082\">&#9670;&nbsp;</a></span>ValidateResult()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Audio::Spatial::ValidateResult </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a0220900672de1f44004ac3fbea75384e\" name=\"a0220900672de1f44004ac3fbea75384e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0220900672de1f44004ac3fbea75384e\">&#9670;&nbsp;</a></span>audiobuffers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a> tram::Audio::Spatial::audiobuffers[<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20\">BUFFER_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1707c3651d829fc8dccf07265d990501\" name=\"a1707c3651d829fc8dccf07265d990501\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1707c3651d829fc8dccf07265d990501\">&#9670;&nbsp;</a></span>audiorenders</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a> tram::Audio::Spatial::audiorenders[<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09a8fe4a1def9a9851bd0eb34988036f\" name=\"a09a8fe4a1def9a9851bd0eb34988036f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09a8fe4a1def9a9851bd0eb34988036f\">&#9670;&nbsp;</a></span>audiosources</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a> tram::Audio::Spatial::audiosources[<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8\">SOURCE_COUNT</a>]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac53db006980b48a77fdcc80c34854c20\" name=\"ac53db006980b48a77fdcc80c34854c20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac53db006980b48a77fdcc80c34854c20\">&#9670;&nbsp;</a></span>BUFFER_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::BUFFER_COUNT = 1000</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa61124c29ea3a00d8124d9c20dd8a4af\" name=\"aa61124c29ea3a00d8124d9c20dd8a4af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa61124c29ea3a00d8124d9c20dd8a4af\">&#9670;&nbsp;</a></span>LISTENER_DEPTH_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::LISTENER_DEPTH_LIMIT = 6</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb9b0bd1fd2aee84d39ac5b2f656eac8\" name=\"acb9b0bd1fd2aee84d39ac5b2f656eac8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb9b0bd1fd2aee84d39ac5b2f656eac8\">&#9670;&nbsp;</a></span>listener_orientation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Audio::Spatial::listener_orientation</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7d4e5961da95174066a93816b9b418ad\" name=\"a7d4e5961da95174066a93816b9b418ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d4e5961da95174066a93816b9b418ad\">&#9670;&nbsp;</a></span>listener_position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::listener_position</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a572ed0408e51e97d4aab9499559dcabe\" name=\"a572ed0408e51e97d4aab9499559dcabe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a572ed0408e51e97d4aab9499559dcabe\">&#9670;&nbsp;</a></span>listener_reverb_delay</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Spatial::listener_reverb_delay[5]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d1dc309e3904bd79c244bbc63c00839\" name=\"a8d1dc309e3904bd79c244bbc63c00839\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d1dc309e3904bd79c244bbc63c00839\">&#9670;&nbsp;</a></span>listener_reverb_distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::listener_reverb_distance[5]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abadc037457811482c0cc517072ab1f77\" name=\"abadc037457811482c0cc517072ab1f77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abadc037457811482c0cc517072ab1f77\">&#9670;&nbsp;</a></span>listener_reverb_force</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::listener_reverb_force[5]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4353683a488762dd6403d5c7d5f6e1fb\" name=\"a4353683a488762dd6403d5c7d5f6e1fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4353683a488762dd6403d5c7d5f6e1fb\">&#9670;&nbsp;</a></span>listener_reverb_normalized</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::listener_reverb_normalized[5]</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">extern</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe41831e149db1775fb1a738b693a2e4\" name=\"abe41831e149db1775fb1a738b693a2e4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe41831e149db1775fb1a738b693a2e4\">&#9670;&nbsp;</a></span>PATHS_FOR_LISTENER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::PATHS_FOR_LISTENER = 5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a84078cbb908ef623f2337cdce8a777b9\" name=\"a84078cbb908ef623f2337cdce8a777b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84078cbb908ef623f2337cdce8a777b9\">&#9670;&nbsp;</a></span>PATHS_FOR_RENDERING</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::PATHS_FOR_RENDERING = 10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab6d4c2f9690d64f882c492e5e9075eae\" name=\"ab6d4c2f9690d64f882c492e5e9075eae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6d4c2f9690d64f882c492e5e9075eae\">&#9670;&nbsp;</a></span>PATHS_FOR_SOURCE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::PATHS_FOR_SOURCE = 5</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1dc54415cd0414f047cfd68c37ef13a8\" name=\"a1dc54415cd0414f047cfd68c37ef13a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1dc54415cd0414f047cfd68c37ef13a8\">&#9670;&nbsp;</a></span>SOURCE_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::SOURCE_COUNT = 200</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a470153ad5cab64ede6d4a517710c7aee\" name=\"a470153ad5cab64ede6d4a517710c7aee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a470153ad5cab64ede6d4a517710c7aee\">&#9670;&nbsp;</a></span>SOURCE_DEPTH_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Audio::Spatial::SOURCE_DEPTH_LIMIT = 3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_core.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Core Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_core.html\">Core</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Core Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the core of the framework.  <a href=\"namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578\">More...</a><br /></td></tr>\n<tr class=\"separator:a1704d5ca7badba9cc7486134bf2cc578\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca02676414df9541f853df2376da13bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">Update</a> ()</td></tr>\n<tr class=\"memdesc:aca02676414df9541f853df2376da13bd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the core system.  <a href=\"namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd\">More...</a><br /></td></tr>\n<tr class=\"separator:aca02676414df9541f853df2376da13bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a1704d5ca7badba9cc7486134bf2cc578\" name=\"a1704d5ca7badba9cc7486134bf2cc578\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1704d5ca7badba9cc7486134bf2cc578\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Core::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Initializes the core of the framework. </p>\n\n</div>\n</div>\n<a id=\"aca02676414df9541f853df2376da13bd\" name=\"aca02676414df9541f853df2376da13bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca02676414df9541f853df2376da13bd\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Core::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Updates the core system. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>This should be called only once per update cycle. </dd></dl>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">Scripting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_camera.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Camera Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">Camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Camera Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Several different camera implementations.  \n<a href=\"namespacetram_1_1_ext_1_1_camera.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Interface API for cameras.  <a href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">FirstPersonCamera</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2\">Init</a> ()</td></tr>\n<tr class=\"separator:ad252c0b524249e43b5b04f649a6697c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c\">Update</a> ()</td></tr>\n<tr class=\"separator:abe8df61bea8ea5f58fa6efa942eeaa4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9ef902fd854a7068580fccde152ed56d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d\">CAMERA_SYSTEM</a> = -1u</td></tr>\n<tr class=\"separator:a9ef902fd854a7068580fccde152ed56d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf02ee4711f59697606b71a4712e98bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc\">selected_camera</a> = nullptr</td></tr>\n<tr class=\"separator:acf02ee4711f59697606b71a4712e98bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a810e7f445faeca85ab997f2c0d9c4bed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Settings::Property</a>&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed\">shake_multiplier</a> = {1.0f, &quot;camerashake&quot;, Settings::NONE}</td></tr>\n<tr class=\"separator:a810e7f445faeca85ab997f2c0d9c4bed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07e626d2d01f42be6f6f209cc12cbc18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18\">look_at_entity</a> = 0</td></tr>\n<tr class=\"separator:a07e626d2d01f42be6f6f209cc12cbc18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2730c41e6bab8d84d06e89700724e9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e\">look_at_direction</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ae2730c41e6bab8d84d06e89700724e9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af85f9d24f3adcf1113b2c6425f8474ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac\">TILT_SPEED</a> = 0.01f</td></tr>\n<tr class=\"separator:af85f9d24f3adcf1113b2c6425f8474ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ebbcf579061fce613ced15545380bee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee\">BOB_CHANGE_SPEED</a> = 0.05f</td></tr>\n<tr class=\"separator:a9ebbcf579061fce613ced15545380bee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Several different camera implementations. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ad252c0b524249e43b5b04f649a6697c2\" name=\"ad252c0b524249e43b5b04f649a6697c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad252c0b524249e43b5b04f649a6697c2\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe8df61bea8ea5f58fa6efa942eeaa4c\" name=\"abe8df61bea8ea5f58fa6efa942eeaa4c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe8df61bea8ea5f58fa6efa942eeaa4c\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Camera::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a9ebbcf579061fce613ced15545380bee\" name=\"a9ebbcf579061fce613ced15545380bee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ebbcf579061fce613ced15545380bee\">&#9670;&nbsp;</a></span>BOB_CHANGE_SPEED</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::Ext::Camera::BOB_CHANGE_SPEED = 0.05f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ef902fd854a7068580fccde152ed56d\" name=\"a9ef902fd854a7068580fccde152ed56d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ef902fd854a7068580fccde152ed56d\">&#9670;&nbsp;</a></span>CAMERA_SYSTEM</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> tram::Ext::Camera::CAMERA_SYSTEM = -1u</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2730c41e6bab8d84d06e89700724e9e\" name=\"ae2730c41e6bab8d84d06e89700724e9e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2730c41e6bab8d84d06e89700724e9e\">&#9670;&nbsp;</a></span>look_at_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Ext::Camera::look_at_direction = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07e626d2d01f42be6f6f209cc12cbc18\" name=\"a07e626d2d01f42be6f6f209cc12cbc18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07e626d2d01f42be6f6f209cc12cbc18\">&#9670;&nbsp;</a></span>look_at_entity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Ext::Camera::look_at_entity = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf02ee4711f59697606b71a4712e98bc\" name=\"acf02ee4711f59697606b71a4712e98bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf02ee4711f59697606b71a4712e98bc\">&#9670;&nbsp;</a></span>selected_camera</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_camera_1_1_camera.html\">Camera</a>* tram::Ext::Camera::selected_camera = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a810e7f445faeca85ab997f2c0d9c4bed\" name=\"a810e7f445faeca85ab997f2c0d9c4bed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a810e7f445faeca85ab997f2c0d9c4bed\">&#9670;&nbsp;</a></span>shake_multiplier</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Camera::shake_multiplier = {1.0f, &quot;camerashake&quot;, Settings::NONE}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af85f9d24f3adcf1113b2c6425f8474ac\" name=\"af85f9d24f3adcf1113b2c6425f8474ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af85f9d24f3adcf1113b2c6425f8474ac\">&#9670;&nbsp;</a></span>TILT_SPEED</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::Ext::Camera::TILT_SPEED = 0.01f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_design.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_breakable.html\">Breakable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_button.html\">Button</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially a func_door.  <a href=\"classtram_1_1_ext_1_1_design_1_1_button.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_shape.html\">DebugShape</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_debug_text.html\">DebugText</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">EntityChildren</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_pickup.html\">Pickup</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html\">SoundTable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Maps actions to sounds.  <a href=\"classtram_1_1_ext_1_1_design_1_1_sound_table.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_train.html\">Train</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_autosave.html\">TriggerAutosave</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_hurt.html\">TriggerHurt</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_multiple.html\">TriggerMultiple</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_once.html\">TriggerOnce</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_push.html\">TriggerPush</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_remove.html\">TriggerRemove</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_trigger_teleport.html\">TriggerTeleport</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_design_1_1_water.html\">Water</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ad416ce15d7679819529fabf62f5e2c74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a322998fe86e65562013e86de9cbac2ae\">BUTTON_FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74ac762ca13d515411632a3216ba504b0c4\">BUTTON_FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a24c9eb41cf0517fc4c6625f853d7b72c\">BUTTON_FIELD_LIGHTMAP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a9f7ab4e6ecba7df52b8cfb5895ecc993\">BUTTON_FIELD_ORIGIN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a07741a29736c01d12104d833fd7ae5c8\">BUTTON_FIELD_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a962677ca389fefcea03eedff41015f5e\">BUTTON_FIELD_SPEED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a0ac1b6a6762d03493a5e10d42cc3a71c\">BUTTON_FIELD_PAUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a10d4f653ba18cfbba41674ab51177354\">BUTTON_FIELD_DISTANCE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a7dd4d74314883b248e1a4bc153474850\">BUTTON_FIELD_SOUND</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74ac16d26e3b9786327874636a30e62341d\">BUTTON_FIELD_PARENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad416ce15d7679819529fabf62f5e2c74a114c6baed811a288cf2e9da1392da140\">BUTTON_FIELD_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ad416ce15d7679819529fabf62f5e2c74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad83a7350b877184853137a8fe96d0309\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad83a7350b877184853137a8fe96d0309a6ef7dd5bfc40de6a013b4b9a05f2b500\">BUTTON_FLAG_ROTARY</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad83a7350b877184853137a8fe96d0309a229bdc0068317bcc266cbff41f5e21bb\">BUTTON_FLAG_MOMENTARY</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad83a7350b877184853137a8fe96d0309a2a0e6727ed8c966d828e466830f17bcd\">BUTTON_FLAG_TOGGLE</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad83a7350b877184853137a8fe96d0309aa7a2206baf07cd9a219b06cbe9911dfd\">BUTTON_FLAG_LOCKED</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ad83a7350b877184853137a8fe96d0309af8cce2723cec92fc16dcd46a5600a542\">BUTTON_FLAG_PUSHED</a> = 16\n<br />\n }</td></tr>\n<tr class=\"separator:ad83a7350b877184853137a8fe96d0309\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a120c838423e85fe8a193038962235887\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887a2eb3b401ef1fc9a20a281624af307557\">BUTTON_STATE_NADIR_WAITING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887aaebf09d9a5f51d4f78c63d3082212147\">BUTTON_STATE_NADIR_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887a00d7884f9238e207da0a91fec6b7fdaf\">BUTTON_STATE_RISING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887a3fae671bc4df73d7baf5fd9cc92ec48a\">BUTTON_STATE_ZENITH_WAITING</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887a1d23d30e2ffd05ef5a8aa9625cd8c7c4\">BUTTON_STATE_ZENITH_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a120c838423e85fe8a193038962235887a276ea5bb83fd2c5a732672a692d033bb\">BUTTON_STATE_LOWERING</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a120c838423e85fe8a193038962235887\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab23e66df720df9c311b7a01e0b877c77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">SoundAction</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a9e34bcfaa1a490f5170d0aa0cbfbd89b\">SOUND_OPEN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a34f8206ba856264436831d41474313b6\">SOUND_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a19846ea6689622956d3843d79824e8b5\">SOUND_LOCKED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a109225a5525f45da3f37e242c32c3a39\">SOUND_END_OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77aaa5f19e26b19aca2c3502c3102a2de9d\">SOUND_END_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a6cba0b92e11b32873a70d0c7906ad554\">SOUND_WALK_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77af4fe2cfa9cd1f6345cf7a0e5230f6597\">SOUND_JUMP_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77a5ea1cbc70435a267f9865447d70f0fbf\">SOUND_HIT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ab23e66df720df9c311b7a01e0b877c77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3947105a9703920ad57aadacbe3c16b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a3947105a9703920ad57aadacbe3c16b8\">AddChild</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> parent, <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> child)</td></tr>\n<tr class=\"separator:a3947105a9703920ad57aadacbe3c16b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82aba65df9b7372709db6e45dea30c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a82aba65df9b7372709db6e45dea30c58\">UpdateHierarchy</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> parent_id)</td></tr>\n<tr class=\"separator:a82aba65df9b7372709db6e45dea30c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ada888d84efac56f5ad1543e12b8c958c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">EntityChildren</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ada888d84efac56f5ad1543e12b8c958c\">hierarchy_map</a> (&quot;hierarchy_map&quot;, 200)</td></tr>\n<tr class=\"separator:ada888d84efac56f5ad1543e12b8c958c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"ad416ce15d7679819529fabf62f5e2c74\" name=\"ad416ce15d7679819529fabf62f5e2c74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad416ce15d7679819529fabf62f5e2c74\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a322998fe86e65562013e86de9cbac2ae\" name=\"ad416ce15d7679819529fabf62f5e2c74a322998fe86e65562013e86de9cbac2ae\"></a>BUTTON_FIELD_FLAGS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74ac762ca13d515411632a3216ba504b0c4\" name=\"ad416ce15d7679819529fabf62f5e2c74ac762ca13d515411632a3216ba504b0c4\"></a>BUTTON_FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a24c9eb41cf0517fc4c6625f853d7b72c\" name=\"ad416ce15d7679819529fabf62f5e2c74a24c9eb41cf0517fc4c6625f853d7b72c\"></a>BUTTON_FIELD_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a9f7ab4e6ecba7df52b8cfb5895ecc993\" name=\"ad416ce15d7679819529fabf62f5e2c74a9f7ab4e6ecba7df52b8cfb5895ecc993\"></a>BUTTON_FIELD_ORIGIN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a07741a29736c01d12104d833fd7ae5c8\" name=\"ad416ce15d7679819529fabf62f5e2c74a07741a29736c01d12104d833fd7ae5c8\"></a>BUTTON_FIELD_DIRECTION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a962677ca389fefcea03eedff41015f5e\" name=\"ad416ce15d7679819529fabf62f5e2c74a962677ca389fefcea03eedff41015f5e\"></a>BUTTON_FIELD_SPEED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a0ac1b6a6762d03493a5e10d42cc3a71c\" name=\"ad416ce15d7679819529fabf62f5e2c74a0ac1b6a6762d03493a5e10d42cc3a71c\"></a>BUTTON_FIELD_PAUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a10d4f653ba18cfbba41674ab51177354\" name=\"ad416ce15d7679819529fabf62f5e2c74a10d4f653ba18cfbba41674ab51177354\"></a>BUTTON_FIELD_DISTANCE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a7dd4d74314883b248e1a4bc153474850\" name=\"ad416ce15d7679819529fabf62f5e2c74a7dd4d74314883b248e1a4bc153474850\"></a>BUTTON_FIELD_SOUND&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74ac16d26e3b9786327874636a30e62341d\" name=\"ad416ce15d7679819529fabf62f5e2c74ac16d26e3b9786327874636a30e62341d\"></a>BUTTON_FIELD_PARENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad416ce15d7679819529fabf62f5e2c74a114c6baed811a288cf2e9da1392da140\" name=\"ad416ce15d7679819529fabf62f5e2c74a114c6baed811a288cf2e9da1392da140\"></a>BUTTON_FIELD_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ad83a7350b877184853137a8fe96d0309\" name=\"ad83a7350b877184853137a8fe96d0309\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad83a7350b877184853137a8fe96d0309\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ad83a7350b877184853137a8fe96d0309a6ef7dd5bfc40de6a013b4b9a05f2b500\" name=\"ad83a7350b877184853137a8fe96d0309a6ef7dd5bfc40de6a013b4b9a05f2b500\"></a>BUTTON_FLAG_ROTARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad83a7350b877184853137a8fe96d0309a229bdc0068317bcc266cbff41f5e21bb\" name=\"ad83a7350b877184853137a8fe96d0309a229bdc0068317bcc266cbff41f5e21bb\"></a>BUTTON_FLAG_MOMENTARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad83a7350b877184853137a8fe96d0309a2a0e6727ed8c966d828e466830f17bcd\" name=\"ad83a7350b877184853137a8fe96d0309a2a0e6727ed8c966d828e466830f17bcd\"></a>BUTTON_FLAG_TOGGLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad83a7350b877184853137a8fe96d0309aa7a2206baf07cd9a219b06cbe9911dfd\" name=\"ad83a7350b877184853137a8fe96d0309aa7a2206baf07cd9a219b06cbe9911dfd\"></a>BUTTON_FLAG_LOCKED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad83a7350b877184853137a8fe96d0309af8cce2723cec92fc16dcd46a5600a542\" name=\"ad83a7350b877184853137a8fe96d0309af8cce2723cec92fc16dcd46a5600a542\"></a>BUTTON_FLAG_PUSHED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a120c838423e85fe8a193038962235887\" name=\"a120c838423e85fe8a193038962235887\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a120c838423e85fe8a193038962235887\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887a2eb3b401ef1fc9a20a281624af307557\" name=\"a120c838423e85fe8a193038962235887a2eb3b401ef1fc9a20a281624af307557\"></a>BUTTON_STATE_NADIR_WAITING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887aaebf09d9a5f51d4f78c63d3082212147\" name=\"a120c838423e85fe8a193038962235887aaebf09d9a5f51d4f78c63d3082212147\"></a>BUTTON_STATE_NADIR_READY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887a00d7884f9238e207da0a91fec6b7fdaf\" name=\"a120c838423e85fe8a193038962235887a00d7884f9238e207da0a91fec6b7fdaf\"></a>BUTTON_STATE_RISING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887a3fae671bc4df73d7baf5fd9cc92ec48a\" name=\"a120c838423e85fe8a193038962235887a3fae671bc4df73d7baf5fd9cc92ec48a\"></a>BUTTON_STATE_ZENITH_WAITING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887a1d23d30e2ffd05ef5a8aa9625cd8c7c4\" name=\"a120c838423e85fe8a193038962235887a1d23d30e2ffd05ef5a8aa9625cd8c7c4\"></a>BUTTON_STATE_ZENITH_READY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a120c838423e85fe8a193038962235887a276ea5bb83fd2c5a732672a692d033bb\" name=\"a120c838423e85fe8a193038962235887a276ea5bb83fd2c5a732672a692d033bb\"></a>BUTTON_STATE_LOWERING&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ab23e66df720df9c311b7a01e0b877c77\" name=\"ab23e66df720df9c311b7a01e0b877c77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab23e66df720df9c311b7a01e0b877c77\">&#9670;&nbsp;</a></span>SoundAction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#ab23e66df720df9c311b7a01e0b877c77\">tram::Ext::Design::SoundAction</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a9e34bcfaa1a490f5170d0aa0cbfbd89b\" name=\"ab23e66df720df9c311b7a01e0b877c77a9e34bcfaa1a490f5170d0aa0cbfbd89b\"></a>SOUND_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a34f8206ba856264436831d41474313b6\" name=\"ab23e66df720df9c311b7a01e0b877c77a34f8206ba856264436831d41474313b6\"></a>SOUND_CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a19846ea6689622956d3843d79824e8b5\" name=\"ab23e66df720df9c311b7a01e0b877c77a19846ea6689622956d3843d79824e8b5\"></a>SOUND_LOCKED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a109225a5525f45da3f37e242c32c3a39\" name=\"ab23e66df720df9c311b7a01e0b877c77a109225a5525f45da3f37e242c32c3a39\"></a>SOUND_END_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77aaa5f19e26b19aca2c3502c3102a2de9d\" name=\"ab23e66df720df9c311b7a01e0b877c77aaa5f19e26b19aca2c3502c3102a2de9d\"></a>SOUND_END_CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a6cba0b92e11b32873a70d0c7906ad554\" name=\"ab23e66df720df9c311b7a01e0b877c77a6cba0b92e11b32873a70d0c7906ad554\"></a>SOUND_WALK_ON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77af4fe2cfa9cd1f6345cf7a0e5230f6597\" name=\"ab23e66df720df9c311b7a01e0b877c77af4fe2cfa9cd1f6345cf7a0e5230f6597\"></a>SOUND_JUMP_ON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab23e66df720df9c311b7a01e0b877c77a5ea1cbc70435a267f9865447d70f0fbf\" name=\"ab23e66df720df9c311b7a01e0b877c77a5ea1cbc70435a267f9865447d70f0fbf\"></a>SOUND_HIT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a3947105a9703920ad57aadacbe3c16b8\" name=\"a3947105a9703920ad57aadacbe3c16b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3947105a9703920ad57aadacbe3c16b8\">&#9670;&nbsp;</a></span>AddChild()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AddChild </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>child</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a82aba65df9b7372709db6e45dea30c58\" name=\"a82aba65df9b7372709db6e45dea30c58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82aba65df9b7372709db6e45dea30c58\">&#9670;&nbsp;</a></span>UpdateHierarchy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::UpdateHierarchy </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ada888d84efac56f5ad1543e12b8c958c\" name=\"ada888d84efac56f5ad1543e12b8c958c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada888d84efac56f5ad1543e12b8c958c\">&#9670;&nbsp;</a></span>hierarchy_map</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">EntityChildren</a> &gt; tram::Ext::Design::hierarchy_map(&quot;hierarchy_map&quot;, 200) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;hierarchy_map&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_kitchensink.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Extension containing random stuff that doesn't fit in anywhere else.  \n<a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html\">AIAgent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html\">AnimationStateComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html\">AnimationTable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">AnimState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">AnimStateSpace</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html\">Breakable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html\">Button</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Essentially a func_door.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_button.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html\">DebugShape</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html\">DebugText</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html\">DialogController</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">InitialAttribute</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">InventoryFactoryInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html\">KitchensinkMenuList</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html\">ListDialog</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html\">ListInventory</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html\">ListInventoryManager</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html\">ListTrade</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html\">Pickup</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">QuestEntity</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html\">QuestList</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Maps actions to sounds.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_train.html\">Train</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html\">TriggerAutosave</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html\">TriggerHurt</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html\">TriggerMultiple</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html\">TriggerOnce</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html\">TriggerPlayerMovement</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html\">TriggerPush</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html\">TriggerRemove</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html\">TriggerTeleport</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_water.html\">Water</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a7ed49c241e07b037e40bcb940995e442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442\">ai_package_constr</a>) (<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>)</td></tr>\n<tr class=\"separator:a7ed49c241e07b037e40bcb940995e442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b23e475cb12c9bd604bb44cc06e52d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a>) (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> *)</td></tr>\n<tr class=\"separator:a4b23e475cb12c9bd604bb44cc06e52d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a6c0031a7853f40659433180bd98fb62a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: int { <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\">EFFECT_RAISE_BASE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\">EFFECT_RAISE_CONSTANT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\">EFFECT_NEGATE_CHANGE</a>\n }</td></tr>\n<tr class=\"separator:a6c0031a7853f40659433180bd98fb62a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ab8b667486c023b0e1defc92b807c54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">DialogType</a> { <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">DIALOG_TOPIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\">DIALOG_IMPORT_SINGLE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\">DIALOG_IMPORT_MULTIPLE</a>\n }</td></tr>\n<tr class=\"separator:a9ab8b667486c023b0e1defc92b807c54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad924f50692439454362f23d98fb1ffe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\">BUTTON_FIELD_FLAGS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\">BUTTON_FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\">BUTTON_FIELD_LIGHTMAP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\">BUTTON_FIELD_ORIGIN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\">BUTTON_FIELD_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\">BUTTON_FIELD_SPEED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\">BUTTON_FIELD_PAUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\">BUTTON_FIELD_DISTANCE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\">BUTTON_FIELD_SOUND</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\">BUTTON_FIELD_PARENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\">BUTTON_FIELD_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ad924f50692439454362f23d98fb1ffe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac280e36a407bbb9e04103c5b98a6d6d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\">BUTTON_FLAG_ROTARY</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\">BUTTON_FLAG_MOMENTARY</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\">BUTTON_FLAG_TOGGLE</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\">BUTTON_FLAG_LOCKED</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\">BUTTON_FLAG_PUSHED</a> = 16\n<br />\n }</td></tr>\n<tr class=\"separator:ac280e36a407bbb9e04103c5b98a6d6d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d1eaa08844d3f7ecb0fafaa53d7eea0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\">BUTTON_STATE_NADIR_WAITING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\">BUTTON_STATE_NADIR_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\">BUTTON_STATE_RISING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\">BUTTON_STATE_ZENITH_WAITING</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\">BUTTON_STATE_ZENITH_READY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\">BUTTON_STATE_LOWERING</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a0d1eaa08844d3f7ecb0fafaa53d7eea0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab3814d859340fe53dd54ca8fa8f84f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> : int { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">QUEST_VAR_INVALID</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">QUEST_VAR_VALUE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">QUEST_VAR_OBJECTIVE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">QUEST_VAR_VALUE_IS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">QUEST_VAR_VALUE_IS_NOT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">QUEST_VAR_VALUE_GREATER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">QUEST_VAR_VALUE_GREATER_OR_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">QUEST_VAR_VALUE_LESS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">QUEST_VAR_VALUE_LESS_OR_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">QUEST_VAR_CONDITION_NOT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">QUEST_VAR_CONDITION_AND</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">QUEST_VAR_CONDITION_OR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">QUEST_VAR_CONDITION_SCRIPT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">QUEST_VAR_ENTITY_ITEM_COUNT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">QUEST_TGR_SET_VARIABLE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">QUEST_TGR_SET_OBJECTIVE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">QUEST_TGR_INCREMENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">QUEST_TGR_SHOW_MESSAGE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ab3814d859340fe53dd54ca8fa8f84f1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0b6180871852d23893d3339b6beed53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">SOUND_OPEN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">SOUND_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">SOUND_LOCKED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">SOUND_END_OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">SOUND_END_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">SOUND_WALK_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">SOUND_JUMP_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">SOUND_HIT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ac0b6180871852d23893d3339b6beed53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953\">InitAI</a> ()</td></tr>\n<tr class=\"separator:ab9a442aa76563ab70aff7c560a3bb953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242\">UpdateAI</a> ()</td></tr>\n<tr class=\"separator:aa032a6e16a417cef3ada074352b8a242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaea789ed77d5f63e8cfe9f4ca2a4ac42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42\">containers</a> (&quot;Ext::Kitchensink::AttributeContainer <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;, ATTRIBUTE_CONTAINER_COUNT)</td></tr>\n<tr class=\"separator:aaea789ed77d5f63e8cfe9f4ca2a4ac42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af26c7178edaf07fc00c3ffb0048472c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5\">infos</a> (&quot;Ext::Kitchensink::AttributeInfo <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;, ATTRIBUTE_INFO_COUNT)</td></tr>\n<tr class=\"separator:af26c7178edaf07fc00c3ffb0048472c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0abcbf31d67465bc42fb01a8eec2bef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef\">factions</a> (&quot;Ext::Kitchensink::Faction <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;, FACTION_COUNT)</td></tr>\n<tr class=\"separator:ab0abcbf31d67465bc42fb01a8eec2bef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4573e832ec8b71f1590c7f8e05a5c6c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7\">character_classes</a> (&quot;Ext::Kitchensink::Character <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;, CHARACTER_COUNT)</td></tr>\n<tr class=\"separator:a4573e832ec8b71f1590c7f8e05a5c6c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4518a370e2bb8c8160f21d50cd952c4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4\">characters</a> (&quot;Ext::Kitchensink::CharacterClass <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;, CLASS_COUNT)</td></tr>\n<tr class=\"separator:ad4518a370e2bb8c8160f21d50cd952c4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a388f74aaa8aeb8efd221f91bf2014504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504\">RecursivelyAppendNextTopic</a> (std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &amp;topics, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> appendable)</td></tr>\n<tr class=\"separator:a388f74aaa8aeb8efd221f91bf2014504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16caf89d1fcf378195a2f0fa188b0156\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156\">AddChild</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> parent, <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> child)</td></tr>\n<tr class=\"separator:a16caf89d1fcf378195a2f0fa188b0156\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68dcf197af43441da209e8296de00111\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111\">UpdateHierarchy</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> parent_id)</td></tr>\n<tr class=\"separator:a68dcf197af43441da209e8296de00111\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6\">Init</a> ()</td></tr>\n<tr class=\"separator:aabfec8af9b6f67d87256ceb0565b8cc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f\">Update</a> ()</td></tr>\n<tr class=\"separator:a4999baa52dc92a9e3e5ce094d39e6a6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">RegisterRenderEnvironmentMapShortcut</a> ()</td></tr>\n<tr class=\"separator:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">RenderEnvironmentMaps</a> (<a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *cell)</td></tr>\n<tr class=\"separator:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a88dc3b5c5e10e0a3f59566278143dd3e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e\">hierarchy_map</a> (&quot;hierarchy_map&quot;, 200)</td></tr>\n<tr class=\"separator:a88dc3b5c5e10e0a3f59566278143dd3e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acada14362be543540a0a63813c3a68a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7\">KITCHENSINK_SYSTEM</a> = -1u</td></tr>\n<tr class=\"separator:acada14362be543540a0a63813c3a68a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a6727c817a50b06905e75396bc8eb1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d\">SEARCH_STRING_LENGTH</a> = 100</td></tr>\n<tr class=\"separator:a6a6727c817a50b06905e75396bc8eb1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Extension containing random stuff that doesn't fit in anywhere else. </p>\n<p >Featuring a collection (mostly) unfinished re-usable game mechanics for RPG games, as well as a couple of useful data tools and entities.</p>\n<p >This is where you can find out func_door analog too. </p>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"a7ed49c241e07b037e40bcb940995e442\" name=\"a7ed49c241e07b037e40bcb940995e442\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ed49c241e07b037e40bcb940995e442\">&#9670;&nbsp;</a></span>ai_package_constr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html\">AIPackage</a> *(* tram::Ext::Kitchensink::ai_package_constr) (<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b23e475cb12c9bd604bb44cc06e52d8\" name=\"a4b23e475cb12c9bd604bb44cc06e52d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b23e475cb12c9bd604bb44cc06e52d8\">&#9670;&nbsp;</a></span>item_action_func</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void(* tram::Ext::Kitchensink::item_action_func) (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *, <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> *)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a6c0031a7853f40659433180bd98fb62a\" name=\"a6c0031a7853f40659433180bd98fb62a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c0031a7853f40659433180bd98fb62a\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : int</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\" name=\"a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f\"></a>EFFECT_RAISE_BASE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\" name=\"a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56\"></a>EFFECT_RAISE_CONSTANT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\" name=\"a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b\"></a>EFFECT_NEGATE_CHANGE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ad924f50692439454362f23d98fb1ffe7\" name=\"ad924f50692439454362f23d98fb1ffe7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad924f50692439454362f23d98fb1ffe7\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\" name=\"ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528\"></a>BUTTON_FIELD_FLAGS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\" name=\"ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119\"></a>BUTTON_FIELD_MODEL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\" name=\"ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971\"></a>BUTTON_FIELD_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\" name=\"ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733\"></a>BUTTON_FIELD_ORIGIN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\" name=\"ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362\"></a>BUTTON_FIELD_DIRECTION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\" name=\"ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377\"></a>BUTTON_FIELD_SPEED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\" name=\"ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661\"></a>BUTTON_FIELD_PAUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\" name=\"ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7\"></a>BUTTON_FIELD_DISTANCE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\" name=\"ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36\"></a>BUTTON_FIELD_SOUND&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\" name=\"ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01\"></a>BUTTON_FIELD_PARENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\" name=\"ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca\"></a>BUTTON_FIELD_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ac280e36a407bbb9e04103c5b98a6d6d4\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac280e36a407bbb9e04103c5b98a6d6d4\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab\"></a>BUTTON_FLAG_ROTARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875\"></a>BUTTON_FLAG_MOMENTARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89\"></a>BUTTON_FLAG_TOGGLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f\"></a>BUTTON_FLAG_LOCKED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\" name=\"ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667\"></a>BUTTON_FLAG_PUSHED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d1eaa08844d3f7ecb0fafaa53d7eea0\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c\"></a>BUTTON_STATE_NADIR_WAITING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938\"></a>BUTTON_STATE_NADIR_READY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691\"></a>BUTTON_STATE_RISING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9\"></a>BUTTON_STATE_ZENITH_WAITING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9\"></a>BUTTON_STATE_ZENITH_READY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\" name=\"a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10\"></a>BUTTON_STATE_LOWERING&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a9ab8b667486c023b0e1defc92b807c54\" name=\"a9ab8b667486c023b0e1defc92b807c54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ab8b667486c023b0e1defc92b807c54\">&#9670;&nbsp;</a></span>DialogType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">tram::Ext::Kitchensink::DialogType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\" name=\"a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\"></a>DIALOG_TOPIC&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\" name=\"a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd\"></a>DIALOG_IMPORT_SINGLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\" name=\"a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1\"></a>DIALOG_IMPORT_MULTIPLE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ab3814d859340fe53dd54ca8fa8f84f1b\" name=\"ab3814d859340fe53dd54ca8fa8f84f1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab3814d859340fe53dd54ca8fa8f84f1b\">&#9670;&nbsp;</a></span>quest_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">tram::Ext::Kitchensink::quest_t</a> : int</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\"></a>QUEST_VAR_INVALID&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\"></a>QUEST_VAR_VALUE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\"></a>QUEST_VAR_OBJECTIVE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\"></a>QUEST_VAR_VALUE_IS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\"></a>QUEST_VAR_VALUE_IS_NOT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\"></a>QUEST_VAR_VALUE_GREATER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\"></a>QUEST_VAR_VALUE_GREATER_OR_EQUAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\"></a>QUEST_VAR_VALUE_LESS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\"></a>QUEST_VAR_VALUE_LESS_OR_EQUAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\"></a>QUEST_VAR_CONDITION_NOT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\"></a>QUEST_VAR_CONDITION_AND&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\"></a>QUEST_VAR_CONDITION_OR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\"></a>QUEST_VAR_CONDITION_SCRIPT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\"></a>QUEST_VAR_ENTITY_ITEM_COUNT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\" name=\"ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\"></a>QUEST_TGR_SET_VARIABLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\"></a>QUEST_TGR_SET_OBJECTIVE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\" name=\"ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\"></a>QUEST_TGR_INCREMENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\" name=\"ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\"></a>QUEST_TGR_SHOW_MESSAGE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ac0b6180871852d23893d3339b6beed53\" name=\"ac0b6180871852d23893d3339b6beed53\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0b6180871852d23893d3339b6beed53\">&#9670;&nbsp;</a></span>SoundAction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">tram::Ext::Kitchensink::SoundAction</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\" name=\"ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\"></a>SOUND_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\" name=\"ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\"></a>SOUND_CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\" name=\"ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\"></a>SOUND_LOCKED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\" name=\"ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\"></a>SOUND_END_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\" name=\"ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\"></a>SOUND_END_CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\" name=\"ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\"></a>SOUND_WALK_ON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\" name=\"ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\"></a>SOUND_JUMP_ON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\" name=\"ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\"></a>SOUND_HIT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a16caf89d1fcf378195a2f0fa188b0156\" name=\"a16caf89d1fcf378195a2f0fa188b0156\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16caf89d1fcf378195a2f0fa188b0156\">&#9670;&nbsp;</a></span>AddChild()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AddChild </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>child</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4573e832ec8b71f1590c7f8e05a5c6c7\" name=\"a4573e832ec8b71f1590c7f8e05a5c6c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4573e832ec8b71f1590c7f8e05a5c6c7\">&#9670;&nbsp;</a></span>character_classes()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html\">CharacterClass</a> * &gt; tram::Ext::Kitchensink::character_classes </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::Character <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf\">CHARACTER_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad4518a370e2bb8c8160f21d50cd952c4\" name=\"ad4518a370e2bb8c8160f21d50cd952c4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4518a370e2bb8c8160f21d50cd952c4\">&#9670;&nbsp;</a></span>characters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> * &gt; tram::Ext::Kitchensink::characters </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::CharacterClass <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#a1b511158ca6796bb813f3bdb64369417\">CLASS_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaea789ed77d5f63e8cfe9f4ca2a4ac42\" name=\"aaea789ed77d5f63e8cfe9f4ca2a4ac42\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaea789ed77d5f63e8cfe9f4ca2a4ac42\">&#9670;&nbsp;</a></span>containers()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> * &gt; tram::Ext::Kitchensink::containers </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::AttributeContainer <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"attributes_8cpp.html#a84627f70639f661d824e70f33c21021d\">ATTRIBUTE_CONTAINER_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab0abcbf31d67465bc42fb01a8eec2bef\" name=\"ab0abcbf31d67465bc42fb01a8eec2bef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0abcbf31d67465bc42fb01a8eec2bef\">&#9670;&nbsp;</a></span>factions()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> * &gt; tram::Ext::Kitchensink::factions </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::Faction <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758\">FACTION_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af26c7178edaf07fc00c3ffb0048472c5\" name=\"af26c7178edaf07fc00c3ffb0048472c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af26c7178edaf07fc00c3ffb0048472c5\">&#9670;&nbsp;</a></span>infos()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html\">AttributeInfo</a> * &gt; tram::Ext::Kitchensink::infos </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Ext::Kitchensink::AttributeInfo <a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269\">ATTRIBUTE_INFO_COUNT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aabfec8af9b6f67d87256ceb0565b8cc6\" name=\"aabfec8af9b6f67d87256ceb0565b8cc6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabfec8af9b6f67d87256ceb0565b8cc6\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9a442aa76563ab70aff7c560a3bb953\" name=\"ab9a442aa76563ab70aff7c560a3bb953\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9a442aa76563ab70aff7c560a3bb953\">&#9670;&nbsp;</a></span>InitAI()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::InitAI </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a388f74aaa8aeb8efd221f91bf2014504\" name=\"a388f74aaa8aeb8efd221f91bf2014504\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a388f74aaa8aeb8efd221f91bf2014504\">&#9670;&nbsp;</a></span>RecursivelyAppendNextTopic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::RecursivelyAppendNextTopic </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>topics</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>appendable</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac57df31b8265b053fcc5470b852a85a\" name=\"aac57df31b8265b053fcc5470b852a85a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac57df31b8265b053fcc5470b852a85a\">&#9670;&nbsp;</a></span>RegisterRenderEnvironmentMapShortcut()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::RegisterRenderEnvironmentMapShortcut </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aad417990ff2a73e06c72f341d12c1c9b\" name=\"aad417990ff2a73e06c72f341d12c1c9b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad417990ff2a73e06c72f341d12c1c9b\">&#9670;&nbsp;</a></span>RenderEnvironmentMaps()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::RenderEnvironmentMaps </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> *&#160;</td>\n          <td class=\"paramname\"><em>cell</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4999baa52dc92a9e3e5ce094d39e6a6f\" name=\"a4999baa52dc92a9e3e5ce094d39e6a6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4999baa52dc92a9e3e5ce094d39e6a6f\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa032a6e16a417cef3ada074352b8a242\" name=\"aa032a6e16a417cef3ada074352b8a242\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa032a6e16a417cef3ada074352b8a242\">&#9670;&nbsp;</a></span>UpdateAI()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::UpdateAI </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68dcf197af43441da209e8296de00111\" name=\"a68dcf197af43441da209e8296de00111\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68dcf197af43441da209e8296de00111\">&#9670;&nbsp;</a></span>UpdateHierarchy()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::UpdateHierarchy </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>parent_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a88dc3b5c5e10e0a3f59566278143dd3e\" name=\"a88dc3b5c5e10e0a3f59566278143dd3e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88dc3b5c5e10e0a3f59566278143dd3e\">&#9670;&nbsp;</a></span>hierarchy_map</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a> &gt; tram::Ext::Kitchensink::hierarchy_map(&quot;hierarchy_map&quot;, 200) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;hierarchy_map&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acada14362be543540a0a63813c3a68a7\" name=\"acada14362be543540a0a63813c3a68a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acada14362be543540a0a63813c3a68a7\">&#9670;&nbsp;</a></span>KITCHENSINK_SYSTEM</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Kitchensink::KITCHENSINK_SYSTEM = -1u</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6a6727c817a50b06905e75396bc8eb1d\" name=\"a6a6727c817a50b06905e75396bc8eb1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a6727c817a50b06905e75396bc8eb1d\">&#9670;&nbsp;</a></span>SEARCH_STRING_LENGTH</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Ext::Kitchensink::SEARCH_STRING_LENGTH = 100</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework.  \n<a href=\"namespacetram_1_1_ext_1_1_menu.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_menu_1_1_menu\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> base interface class. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_console.html\">Console</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_picker.html\">EntityPicker</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_entity_properties.html\">EntityProperties</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_event_emit.html\">EventEmit</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">EventIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html\">InterceptMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_list_selection.html\">ListSelection</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">LogIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">MessageIntercept</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_message_send.html\">MessageSend</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_options.html\">Options</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_settings_menu.html\">SettingsMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_signal_menu.html\">SignalMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html\">StatisticsMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_system_menu.html\">SystemMenu</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html\">WorldCellProperties</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c\">InitCallbacks</a> ()</td></tr>\n<tr class=\"separator:ab6a5cd004740b52fff348c26ee0a8b6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22\">UpdateCallbacks</a> ()</td></tr>\n<tr class=\"separator:aabf1b590c1e568b43ccb3060adf2fa22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c\">ToggleMenuState</a> ()</td></tr>\n<tr class=\"separator:a6fb37f42d3452b509021c8ccf3c1b17c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295\">CloseAll</a> ()</td></tr>\n<tr class=\"separator:abbbd02bf188571d1d66399c4f1ffb295\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a389cad79647a9142bb4683217d94387a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a\">Init</a> ()</td></tr>\n<tr class=\"separator:a389cad79647a9142bb4683217d94387a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057\">Update</a> ()</td></tr>\n<tr class=\"separator:ae5c12ef1b6e9e1cc0ee542e6296e9057\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7\">DebugMenue</a> ()</td></tr>\n<tr class=\"separator:afe05ec9db55f3311aea523260dcf8db7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab031015981522b1ea19979d05d54770\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770\">string_float</a> (float value)</td></tr>\n<tr class=\"separator:aab031015981522b1ea19979d05d54770\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:af86d588e63468dd9f7b354da13f18124\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::deque&lt; std::string &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124\">console_logs</a></td></tr>\n<tr class=\"separator:af86d588e63468dd9f7b354da13f18124\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8d4e5481ecd0bb091a930107037e0c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2\">intercepts</a></td></tr>\n<tr class=\"separator:ad8d4e5481ecd0bb091a930107037e0c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69fad955abedb48b03076af467f31466\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466\">FONT_WIDGETS</a> = 0</td></tr>\n<tr class=\"separator:a69fad955abedb48b03076af467f31466\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a\">FONT_TEXT</a> = 0</td></tr>\n<tr class=\"separator:a8fba4d434da7bccc5f0a79b97f45301a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3\">FONT_TEXT_BOLD</a> = 0</td></tr>\n<tr class=\"separator:ac48d19ee29fc32e75b0c11bf85004bd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361\">FONT_HEADER</a> = 0</td></tr>\n<tr class=\"separator:afb19d70c23fefc9206a68b19238f0361\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468\">FONT_PIXELART</a> = 0</td></tr>\n<tr class=\"separator:a19b646bf9a31f4080201096d7c78b468\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674\">MENU_SYSTEM</a> = -1</td></tr>\n<tr class=\"separator:ac964e0479522fe9ecac4f78c47de8674\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a97df158550c8ac0179e812214570003b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b\">debug_menu</a> = nullptr</td></tr>\n<tr class=\"separator:a97df158550c8ac0179e812214570003b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6f40542aa62e171700b1c195770c014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014\">menu_stack</a></td></tr>\n<tr class=\"separator:ad6f40542aa62e171700b1c195770c014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113\">menu_list</a></td></tr>\n<tr class=\"separator:a430defe2c6bc8ce1fb5d75b41b558113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> framework. </p>\n<p >Built on top of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system, this menu framework allows the creation of menus. It also has some pre-built menus, like the debug menu and the system menu. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"abbbd02bf188571d1d66399c4f1ffb295\" name=\"abbbd02bf188571d1d66399c4f1ffb295\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbbd02bf188571d1d66399c4f1ffb295\">&#9670;&nbsp;</a></span>CloseAll()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::CloseAll </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe05ec9db55f3311aea523260dcf8db7\" name=\"afe05ec9db55f3311aea523260dcf8db7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe05ec9db55f3311aea523260dcf8db7\">&#9670;&nbsp;</a></span>DebugMenue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::DebugMenue </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a389cad79647a9142bb4683217d94387a\" name=\"a389cad79647a9142bb4683217d94387a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a389cad79647a9142bb4683217d94387a\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab6a5cd004740b52fff348c26ee0a8b6c\" name=\"ab6a5cd004740b52fff348c26ee0a8b6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6a5cd004740b52fff348c26ee0a8b6c\">&#9670;&nbsp;</a></span>InitCallbacks()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::InitCallbacks </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aab031015981522b1ea19979d05d54770\" name=\"aab031015981522b1ea19979d05d54770\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab031015981522b1ea19979d05d54770\">&#9670;&nbsp;</a></span>string_float()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::string_float </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6fb37f42d3452b509021c8ccf3c1b17c\" name=\"a6fb37f42d3452b509021c8ccf3c1b17c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fb37f42d3452b509021c8ccf3c1b17c\">&#9670;&nbsp;</a></span>ToggleMenuState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::ToggleMenuState </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae5c12ef1b6e9e1cc0ee542e6296e9057\" name=\"ae5c12ef1b6e9e1cc0ee542e6296e9057\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5c12ef1b6e9e1cc0ee542e6296e9057\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aabf1b590c1e568b43ccb3060adf2fa22\" name=\"aabf1b590c1e568b43ccb3060adf2fa22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabf1b590c1e568b43ccb3060adf2fa22\">&#9670;&nbsp;</a></span>UpdateCallbacks()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::UpdateCallbacks </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"af86d588e63468dd9f7b354da13f18124\" name=\"af86d588e63468dd9f7b354da13f18124\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af86d588e63468dd9f7b354da13f18124\">&#9670;&nbsp;</a></span>console_logs</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::deque&lt;std::string&gt; tram::Ext::Menu::console_logs</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a97df158550c8ac0179e812214570003b\" name=\"a97df158550c8ac0179e812214570003b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97df158550c8ac0179e812214570003b\">&#9670;&nbsp;</a></span>debug_menu</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_debug_menu.html\">DebugMenu</a>* tram::Ext::Menu::debug_menu = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afb19d70c23fefc9206a68b19238f0361\" name=\"afb19d70c23fefc9206a68b19238f0361\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb19d70c23fefc9206a68b19238f0361\">&#9670;&nbsp;</a></span>FONT_HEADER</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Menu::FONT_HEADER = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a19b646bf9a31f4080201096d7c78b468\" name=\"a19b646bf9a31f4080201096d7c78b468\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19b646bf9a31f4080201096d7c78b468\">&#9670;&nbsp;</a></span>FONT_PIXELART</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Menu::FONT_PIXELART = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8fba4d434da7bccc5f0a79b97f45301a\" name=\"a8fba4d434da7bccc5f0a79b97f45301a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8fba4d434da7bccc5f0a79b97f45301a\">&#9670;&nbsp;</a></span>FONT_TEXT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Menu::FONT_TEXT = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac48d19ee29fc32e75b0c11bf85004bd3\" name=\"ac48d19ee29fc32e75b0c11bf85004bd3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac48d19ee29fc32e75b0c11bf85004bd3\">&#9670;&nbsp;</a></span>FONT_TEXT_BOLD</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Menu::FONT_TEXT_BOLD = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69fad955abedb48b03076af467f31466\" name=\"a69fad955abedb48b03076af467f31466\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69fad955abedb48b03076af467f31466\">&#9670;&nbsp;</a></span>FONT_WIDGETS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Menu::FONT_WIDGETS = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8d4e5481ecd0bb091a930107037e0c2\" name=\"ad8d4e5481ecd0bb091a930107037e0c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8d4e5481ecd0bb091a930107037e0c2\">&#9670;&nbsp;</a></span>intercepts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a>*&gt; tram::Ext::Menu::intercepts</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a430defe2c6bc8ce1fb5d75b41b558113\" name=\"a430defe2c6bc8ce1fb5d75b41b558113\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a430defe2c6bc8ce1fb5d75b41b558113\">&#9670;&nbsp;</a></span>menu_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*&gt; tram::Ext::Menu::menu_list</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6f40542aa62e171700b1c195770c014\" name=\"ad6f40542aa62e171700b1c195770c014\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6f40542aa62e171700b1c195770c014\">&#9670;&nbsp;</a></span>menu_stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a>*&gt; tram::Ext::Menu::menu_stack</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac964e0479522fe9ecac4f78c47de8674\" name=\"ac964e0479522fe9ecac4f78c47de8674\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac964e0479522fe9ecac4f78c47de8674\">&#9670;&nbsp;</a></span>MENU_SYSTEM</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Menu::MENU_SYSTEM = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_menu_1_1_menu.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::Menu Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Menu Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> base interface class.  \n<a href=\"namespacetram_1_1_ext_1_1_menu_1_1_menu.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html\">Menu</a> base interface class. </p>\n<p >To implement this interface, implement the <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775\">Display()</a> method. This method will be called once per frame and needs to draw the menu. Then implement the <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921\">Layer()</a> method. This method needs to return the layer index of the menu.</p>\n<p >The menu framework will draw only the topmost menu in the menu stack with any given index.</p>\n<p >When you are ready to deploy a menu, create it using <code>new</code> and <a class=\"el\" href=\"classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f\" title=\"Pushes menu on the menu stack.\">Push()</a> it on the stack. After that, you can forget it. When it gets popped from the stack, it will be <code>delete</code>d for you. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_scripting.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Scripting Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">Scripting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Scripting Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">Lua</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_scripting_1_1_lua\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_ext_1_1_scripting_1_1_lua.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Scripting::Lua Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting.html\">Scripting</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html\">Lua</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Scripting::Lua Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system.  \n<a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab\">Init</a> ()</td></tr>\n<tr class=\"separator:a83bba368580b03eba8830e61ce8f13ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0b662ed28da72b11080b7948181fa066\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066\">Uninit</a> ()</td></tr>\n<tr class=\"separator:a0b662ed28da72b11080b7948181fa066\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a4cfafc75c333b7b33aa642f4a2dfa952\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952\">MAX_LUA_FUNCTIONS</a> = 200</td></tr>\n<tr class=\"separator:a4cfafc75c333b7b33aa642f4a2dfa952\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html\">Lua</a> bindings for the <a class=\"el\" href=\"namespacetram_1_1_script.html\" title=\"Scripting API.\">Script</a> system. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a83bba368580b03eba8830e61ce8f13ab\" name=\"a83bba368580b03eba8830e61ce8f13ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a83bba368580b03eba8830e61ce8f13ab\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Scripting::Lua::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0b662ed28da72b11080b7948181fa066\" name=\"a0b662ed28da72b11080b7948181fa066\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b662ed28da72b11080b7948181fa066\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Scripting::Lua::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a4eb0c0bc6178c8d324c89f213a5a1a15\" name=\"a4eb0c0bc6178c8d324c89f213a5a1a15\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4eb0c0bc6178c8d324c89f213a5a1a15\">&#9670;&nbsp;</a></span>function</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(* tram::Ext::Scripting::Lua::function) (<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>) </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4cfafc75c333b7b33aa642f4a2dfa952\" name=\"a4cfafc75c333b7b33aa642f4a2dfa952\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4cfafc75c333b7b33aa642f4a2dfa952\">&#9670;&nbsp;</a></span>MAX_LUA_FUNCTIONS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Ext::Scripting::Lua::MAX_LUA_FUNCTIONS = 200</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a63ffedf8d40f57cc6c53d9f617b1fcc5\" name=\"a63ffedf8d40f57cc6c53d9f617b1fcc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63ffedf8d40f57cc6c53d9f617b1fcc5\">&#9670;&nbsp;</a></span>parameters</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&gt; tram::Ext::Scripting::Lua::parameters</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_g_u_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::GUI Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">GUI</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::GUI Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system.  \n<a href=\"namespacetram_1_1_g_u_i.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">FrameObject</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ad72e4051d38000777cac376d29fc18a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a></td></tr>\n<tr class=\"separator:ad72e4051d38000777cac376d29fc18a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afecdfd821a1e89c4d62d0f8b420ca33a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a></td></tr>\n<tr class=\"separator:afecdfd821a1e89c4d62d0f8b420ca33a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a25b2f7af6fe6845d047fd58c6232deef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\">TEXT_LEFT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\">TEXT_CENTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\">TEXT_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\">TEXT_JUSTIFIED</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\">LINE_LOW</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\">LINE_NORMAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\">LINE_HIGH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\">FRAME_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\">FRAME_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\">FRAME_TOP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\">FRAME_BOTTOM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\">FRAME_LEFT_INV</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\">FRAME_RIGHT_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\">FRAME_TOP_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\">FRAME_BOTTOM_INV</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\">FRAME_INSET</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\">FRAME_CENTER_VERTICAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\">FRAME_CENTER_HORIZONTAL</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a25b2f7af6fe6845d047fd58c6232deef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed177dc7d46e43f3cf52662fecbaf0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> { <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\">TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\">WIDGET</a>\n }</td></tr>\n<tr class=\"separator:aed177dc7d46e43f3cf52662fecbaf0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6000fd29fa38db33926bfe7980344fe1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">widget</a> : glyph_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\">WIDGET_TOP_LEFT</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\">WIDGET_TOP_MIDDLE</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\">WIDGET_TOP_RIGHT</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\">WIDGET_MIDDLE_LEFT</a> = 3\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\">WIDGET_MIDDLE_MIDDLE</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\">WIDGET_MIDDLE_RIGHT</a> = 5\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\">WIDGET_BOTTOM_LEFT</a> = 6\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\">WIDGET_BOTTOM_MIDDLE</a> = 7\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\">WIDGET_BOTTOM_RIGHT</a> = 8\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\">WIDGET_LEFT</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\">WIDGET_MIDDLE</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\">WIDGET_RIGHT</a> = 2\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\">WIDGET_BUTTON</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\">WIDGET_BUTTON_PRESSED</a> = 9\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\">WIDGET_BUTTON_SELECTED_ENABLED</a> = 18\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\">WIDGET_BUTTON_SELECTED_DISABLED</a> = 27\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\">WIDGET_BUTTON_DISABLED</a> = 36\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\">WIDGET_BUTTON_PRESSED_DISABLED</a> = 45\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\">WIDGET_WINDOW</a> = 54\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\">WIDGET_REVERSE_WINDOW</a> = 63\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\">WIDGET_SELECT_BOX</a> = 72\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\">WIDGET_SELECT_BOX_PRESSED</a> = 81\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\">WIDGET_SELECT_BOX_SELECTED</a> = 90\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\">WIDGET_TEXT_BOX</a> = 99\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\">WIDGET_TEXT_BOX_DISABLED</a> = 108\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\">WIDGET_BORDER</a> = 117\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\">WIDGET_SCROLL_BAR_TRACK_VERTICAL</a> = 126\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\">WIDGET_SCROLL_BAR_TRACK_HORIZONTAL</a> = 129\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\">WIDGET_DIVIDER_HORIZONTAL</a> = 132\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\">WIDGET_DIVIDER_VERTICAL</a> = 135\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\">WIDGET_SLIDER_TRACK_VERTICAL</a> = 138\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\">WIDGET_SLIDER_TRACK_HORIZONTAL</a> = 138\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\">WIDGET_SCROLL_BAR_VERTICAL</a> = 144\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\">WIDGET_SCROLL_BAR_HORIZONTAL</a> = 147\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\">WIDGET_TAB</a> = 150\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\">WIDGET_PROGESS_BAR</a> = 153\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\">WIDGET_RADIO_BUTTON</a> = 156\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\">WIDGET_CHECK_BUTTON</a> = 162\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\">WIDGET_SLIDER_VERTICAL</a> = 168\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\">WIDGET_SLIDER_HORIZONTAL</a> = 174\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\">WIDGET_BUTTON_UP</a> = 180\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\">WIDGET_BUTTON_DOWN</a> = 186\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\">WIDGET_BUTTON_LEFT</a> = 192\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\">WIDGET_BUTTON_RIGHT</a> = 198\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\">WIDGET_BUTTON_EXIT</a> = 204\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\">WIDGET_BUTTON_HELP</a> = 210\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\">WIDGET_BUTTON_2_WINDOW</a> = 216\n, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\">WIDGET_BUTTON_1_WINDOW</a> = 222\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\">WIDGET_DEFAULT</a> = 255\n<br />\n }</td></tr>\n<tr class=\"separator:a6000fd29fa38db33926bfe7980344fe1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">SetSelectedText</a> (char *text)</td></tr>\n<tr class=\"memdesc:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the text which is selected in a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed\">More...</a><br /></td></tr>\n<tr class=\"separator:a2cea0738110390ba9a29efd3abde74ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">SetColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> type)</td></tr>\n<tr class=\"memdesc:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the color.  <a href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\">More...</a><br /></td></tr>\n<tr class=\"separator:a7210e80143cdcc0ce28a57c0b283fca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">SetFont</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> type)</td></tr>\n<tr class=\"memdesc:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the font.  <a href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\">More...</a><br /></td></tr>\n<tr class=\"separator:a2a3c432ea9156a810b47d5e9836d861a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">RestoreColor</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> type)</td></tr>\n<tr class=\"memdesc:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph color.  <a href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\">More...</a><br /></td></tr>\n<tr class=\"separator:a13a111a88e62cb6d8dd4434c22881dc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">RestoreFont</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> type)</td></tr>\n<tr class=\"memdesc:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Restores previous glyph font.  <a href=\"namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec\">More...</a><br /></td></tr>\n<tr class=\"separator:a2750747aff85f20a25ae9bb33dd72bec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">SetGlyphDefaults</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a> type)</td></tr>\n<tr class=\"memdesc:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Overrides glyph default colors and fonts.  <a href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\">More...</a><br /></td></tr>\n<tr class=\"separator:a8b13f224cb4fc10e56e14f176d93b95d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">SetScaling</a> (uint32_t scale)</td></tr>\n<tr class=\"memdesc:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\">More...</a><br /></td></tr>\n<tr class=\"separator:abc96e6226a9e9abe317c04fe4661ee35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">GetScaling</a> ()</td></tr>\n<tr class=\"memdesc:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the scaling factor.  <a href=\"namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e\">More...</a><br /></td></tr>\n<tr class=\"separator:a6592f1eadaa540d5d79a87d24363d69e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">SetCursorDelayed</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">UI::CursorType</a> cursor)</td></tr>\n<tr class=\"memdesc:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the cursor.  <a href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\">More...</a><br /></td></tr>\n<tr class=\"separator:a722e52d1cec8ee81a55e26dc1a4c63c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs initialization of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system.  <a href=\"namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0\">More...</a><br /></td></tr>\n<tr class=\"separator:a2d278da9263fa009f2eaa8ea8d67eaa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">UpdateDrawListFonts</a> ()</td></tr>\n<tr class=\"memdesc:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submits registered fonts to the renderer.  <a href=\"namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1\">More...</a><br /></td></tr>\n<tr class=\"separator:aa150493c2b4c1d204d394ec3a8145ef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">Update</a> ()</td></tr>\n<tr class=\"memdesc:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Submits all of the glyphs for rendering.  <a href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\">More...</a><br /></td></tr>\n<tr class=\"separator:a19bd1015c21055a46d61eb4193a888cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">RegisterFont</a> (<a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *sprite)</td></tr>\n<tr class=\"memdesc:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a font.  <a href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\">More...</a><br /></td></tr>\n<tr class=\"separator:a7b243fa8e17bd3e09a70b94f9f0a8054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac467099a0542b69fb101532431fef5a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">SetGlyph</a> (float x, float y, float z, float w, float h, float tex_x, float tex_y, float tex_w, float tex_h, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;color, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font)</td></tr>\n<tr class=\"memdesc:ac467099a0542b69fb101532431fef5a1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a glyph to rendering list.  <a href=\"namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1\">More...</a><br /></td></tr>\n<tr class=\"separator:ac467099a0542b69fb101532431fef5a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a643f4e389961bc9ccb05092ea58cccc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6\">GlyphWidth</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"separator:a643f4e389961bc9ccb05092ea58cccc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5998935f32f2b821313449f0254dccf0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0\">GlyphHeight</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"separator:a5998935f32f2b821313449f0254dccf0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34d71791d5b4905b42111ea613a087e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6\">GlyphBorderV</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"separator:a34d71791d5b4905b42111ea613a087e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15d7e1006b2983a29f7f63f7dc2a6e73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73\">DrawGlyph</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;color, uint32_t x, uint32_t y, uint32_t w=0, uint32_t h=0)</td></tr>\n<tr class=\"separator:a15d7e1006b2983a29f7f63f7dc2a6e73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">Glyph</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"memdesc:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a glyph from a font.  <a href=\"namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13\">More...</a><br /></td></tr>\n<tr class=\"separator:ac9ba68cbd0b4343af392b64083f10f13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">DrawBox</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph, uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a glyph box.  <a href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\">More...</a><br /></td></tr>\n<tr class=\"separator:a8712e4716acb1c5eab60d40112c81d88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af581d06594c177e5c1e7ea98db61382f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f\">TextWidth</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, const char *text)</td></tr>\n<tr class=\"separator:af581d06594c177e5c1e7ea98db61382f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">Text</a> (const char *text, uint32_t <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>)</td></tr>\n<tr class=\"memdesc:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text on the screen.  <a href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\">More...</a><br /></td></tr>\n<tr class=\"separator:a1eeac17180cfd99f45e0d997766543c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">DrawBoxHorizontal</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> font, <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph, uint32_t x, uint32_t y, uint32_t w)</td></tr>\n<tr class=\"memdesc:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal bar.  <a href=\"namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf5392e3e82d599804ba655dc2bba32c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">PushFrame</a> (uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame.  <a href=\"namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301\">More...</a><br /></td></tr>\n<tr class=\"separator:abbe4fc88597f2b5171c105e74bcf8301\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">PushFrameRelative</a> (uint32_t <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>, uint32_t offset)</td></tr>\n<tr class=\"memdesc:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame releative to the previous.  <a href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\">More...</a><br /></td></tr>\n<tr class=\"separator:a4d59dd004d2a1ae7aed485247d674dc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">PopFrame</a> ()</td></tr>\n<tr class=\"memdesc:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a frame from the frame stack.  <a href=\"namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0\">More...</a><br /></td></tr>\n<tr class=\"separator:a76a6d727998bc4ad99cd754ca2cf54a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">PushFrameRelativeKeepCursor</a> (uint32_t <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">orientation</a>, uint32_t offset, bool keep_x, bool keep_y)</td></tr>\n<tr class=\"memdesc:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pushes a frame, but keeps the cursor in place.  <a href=\"namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18\">More...</a><br /></td></tr>\n<tr class=\"separator:a1cde426a98964d4f4780ff78b9663b18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf\">PopFrameKeepCursor</a> (bool keep_x, bool keep_y)</td></tr>\n<tr class=\"separator:a53e9477d97918587d29a2b44a378dcbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e023aaf6835da7993924f1796035f0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c\">CursorOver</a> (uint32_t x, uint32_t y, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"separator:a4e023aaf6835da7993924f1796035f0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6121817714545cc76730037226ca285f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f\">ClickHandled</a> ()</td></tr>\n<tr class=\"separator:a6121817714545cc76730037226ca285f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6bfb846ae3573d59924997f6ce098b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8\">ClickHandledLate</a> ()</td></tr>\n<tr class=\"separator:aa6bfb846ae3573d59924997f6ce098b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d4089794c4aca324d8c19d02ef80a07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07\">Clicked</a> ()</td></tr>\n<tr class=\"separator:a0d4089794c4aca324d8c19d02ef80a07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36df4e7f162a96882c85976374864e7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">Button</a> (const char *text, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a36df4e7f162a96882c85976374864e7a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a button.  <a href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\">More...</a><br /></td></tr>\n<tr class=\"separator:a36df4e7f162a96882c85976374864e7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">RadioButton</a> (uint32_t index, uint32_t &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a radio button.  <a href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\">More...</a><br /></td></tr>\n<tr class=\"separator:a1488c8699f98eaaefd9dab7d1e220604\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">CheckBox</a> (bool &amp;selected, const char *text, bool enabled)</td></tr>\n<tr class=\"memdesc:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a checkbox.  <a href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\">More...</a><br /></td></tr>\n<tr class=\"separator:abd53a76b58ffc880c50cd76f1b6019bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">Slider</a> (float &amp;value, bool enabled, uint32_t width)</td></tr>\n<tr class=\"memdesc:a081da10ffbacc71992b191a911acf1b8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal slider.  <a href=\"namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8\">More...</a><br /></td></tr>\n<tr class=\"separator:a081da10ffbacc71992b191a911acf1b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">NewLine</a> (uint32_t line)</td></tr>\n<tr class=\"memdesc:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a new line.  <a href=\"namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507\">More...</a><br /></td></tr>\n<tr class=\"separator:a76d6631e615a2c8e9fb923d034b92507\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">HorizontalDivider</a> ()</td></tr>\n<tr class=\"memdesc:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a horizontal divider.  <a href=\"namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56\">More...</a><br /></td></tr>\n<tr class=\"separator:a0568bf9d9061984bf013f44b50ff5e56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">FillFrame</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"memdesc:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Fills the frame with a glyph.  <a href=\"namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9e738ecaea859c6a6839587a10c4ac6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">TextBox</a> (char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\">More...</a><br /></td></tr>\n<tr class=\"separator:a356c2eeb0e6b3a8c19ed6ee19a448619\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a197eda70726287d8c846535df181e486\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">TextBox</a> (const char *text, uint32_t w, uint32_t h)</td></tr>\n<tr class=\"memdesc:a197eda70726287d8c846535df181e486\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a textbox.  <a href=\"namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486\">More...</a><br /></td></tr>\n<tr class=\"separator:a197eda70726287d8c846535df181e486\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">Begin</a> ()</td></tr>\n<tr class=\"memdesc:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Begins the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\">More...</a><br /></td></tr>\n<tr class=\"separator:af4ecd3d74bffd0e8e5fd26061418ef4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">End</a> ()</td></tr>\n<tr class=\"memdesc:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame.  <a href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\">More...</a><br /></td></tr>\n<tr class=\"separator:a7eb89f38a5f8e51434e7fdc3c21245e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9cbc24cc6766595f1a063de7c32e568\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ab9cbc24cc6766595f1a063de7c32e568\">Glyph</a> (<a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a> glyph)</td></tr>\n<tr class=\"separator:ab9cbc24cc6766595f1a063de7c32e568\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a6b89bb5200e494e6cd5a0191bf527df0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0\">last_update_frame</a> = 0</td></tr>\n<tr class=\"separator:a6b89bb5200e494e6cd5a0191bf527df0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fd25b3a9a83f7a905fd70aeda3cf2d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8\">beginned</a> = false</td></tr>\n<tr class=\"separator:a2fd25b3a9a83f7a905fd70aeda3cf2d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cd56d99b85b29b8659648e28bb1f5ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca\">mouse_click_not_handled</a> = true</td></tr>\n<tr class=\"separator:a8cd56d99b85b29b8659648e28bb1f5ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a64d510448e860481081147bb9e1ef0d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6\">mouse_click_not_handled_late</a> = true</td></tr>\n<tr class=\"separator:a64d510448e860481081147bb9e1ef0d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Immediate mode <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system. </p>\n<p >If you don't like it, you can always integrate imgui, but I personally very much prefer this way of building GUIs.</p>\n<p >First you need to register fonts, which are just Sprites. The glyphs are just sprite frame indices. There are some default fonts in the <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\" title=\"Menu framework.\">Ext::Menu</a> system, if you don't want to make your own fonts.</p>\n<p >To draw widgets, just call their respective functions once per frame.</p>\n<p >To position the widgets, use the frame pushing and popping functions.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/gui.html\">https://racenis.github.io/tram-sdk/documentation/framework/gui.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"ad72e4051d38000777cac376d29fc18a1\" name=\"ad72e4051d38000777cac376d29fc18a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad72e4051d38000777cac376d29fc18a1\">&#9670;&nbsp;</a></span>font_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">tram::GUI::font_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afecdfd821a1e89c4d62d0f8b420ca33a\" name=\"afecdfd821a1e89c4d62d0f8b420ca33a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afecdfd821a1e89c4d62d0f8b420ca33a\">&#9670;&nbsp;</a></span>glyph_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">tram::GUI::glyph_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"aed177dc7d46e43f3cf52662fecbaf0a6\" name=\"aed177dc7d46e43f3cf52662fecbaf0a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed177dc7d46e43f3cf52662fecbaf0a6\">&#9670;&nbsp;</a></span>GlyphType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">tram::GUI::GlyphType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\" name=\"aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d\"></a>TEXT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\" name=\"aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24\"></a>WIDGET&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a25b2f7af6fe6845d047fd58c6232deef\" name=\"a25b2f7af6fe6845d047fd58c6232deef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25b2f7af6fe6845d047fd58c6232deef\">&#9670;&nbsp;</a></span>orientation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef\">tram::GUI::orientation</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\" name=\"a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d\"></a>TEXT_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\" name=\"a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8\"></a>TEXT_CENTER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\" name=\"a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa\"></a>TEXT_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\" name=\"a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c\"></a>TEXT_JUSTIFIED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\" name=\"a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120\"></a>LINE_LOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\" name=\"a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890\"></a>LINE_NORMAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\" name=\"a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13\"></a>LINE_HIGH&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\" name=\"a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7\"></a>FRAME_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\" name=\"a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25\"></a>FRAME_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\" name=\"a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6\"></a>FRAME_TOP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\" name=\"a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c\"></a>FRAME_BOTTOM&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\" name=\"a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057\"></a>FRAME_LEFT_INV&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\" name=\"a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7\"></a>FRAME_RIGHT_INV&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\" name=\"a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73\"></a>FRAME_TOP_INV&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\" name=\"a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd\"></a>FRAME_BOTTOM_INV&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\" name=\"a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71\"></a>FRAME_INSET&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\" name=\"a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484\"></a>FRAME_CENTER_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\" name=\"a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6\"></a>FRAME_CENTER_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a6000fd29fa38db33926bfe7980344fe1\" name=\"a6000fd29fa38db33926bfe7980344fe1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6000fd29fa38db33926bfe7980344fe1\">&#9670;&nbsp;</a></span>widget</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1\">tram::GUI::widget</a> : <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\" name=\"a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505\"></a>WIDGET_TOP_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\" name=\"a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c\"></a>WIDGET_TOP_MIDDLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\" name=\"a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1\"></a>WIDGET_TOP_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\" name=\"a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162\"></a>WIDGET_MIDDLE_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\" name=\"a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44\"></a>WIDGET_MIDDLE_MIDDLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\" name=\"a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9\"></a>WIDGET_MIDDLE_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\" name=\"a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9\"></a>WIDGET_BOTTOM_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\" name=\"a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8\"></a>WIDGET_BOTTOM_MIDDLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\" name=\"a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df\"></a>WIDGET_BOTTOM_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\" name=\"a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9\"></a>WIDGET_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\" name=\"a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47\"></a>WIDGET_MIDDLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\" name=\"a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291\"></a>WIDGET_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\" name=\"a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58\"></a>WIDGET_BUTTON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\" name=\"a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005\"></a>WIDGET_BUTTON_PRESSED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\" name=\"a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29\"></a>WIDGET_BUTTON_SELECTED_ENABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\" name=\"a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82\"></a>WIDGET_BUTTON_SELECTED_DISABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\" name=\"a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9\"></a>WIDGET_BUTTON_DISABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\" name=\"a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52\"></a>WIDGET_BUTTON_PRESSED_DISABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\" name=\"a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c\"></a>WIDGET_WINDOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\" name=\"a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b\"></a>WIDGET_REVERSE_WINDOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\" name=\"a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec\"></a>WIDGET_SELECT_BOX&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\" name=\"a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f\"></a>WIDGET_SELECT_BOX_PRESSED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\" name=\"a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44\"></a>WIDGET_SELECT_BOX_SELECTED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\" name=\"a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95\"></a>WIDGET_TEXT_BOX&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\" name=\"a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f\"></a>WIDGET_TEXT_BOX_DISABLED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\" name=\"a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755\"></a>WIDGET_BORDER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\" name=\"a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f\"></a>WIDGET_SCROLL_BAR_TRACK_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\" name=\"a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7\"></a>WIDGET_SCROLL_BAR_TRACK_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\" name=\"a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09\"></a>WIDGET_DIVIDER_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\" name=\"a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda\"></a>WIDGET_DIVIDER_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\" name=\"a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b\"></a>WIDGET_SLIDER_TRACK_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\" name=\"a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de\"></a>WIDGET_SLIDER_TRACK_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\" name=\"a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86\"></a>WIDGET_SCROLL_BAR_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\" name=\"a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc\"></a>WIDGET_SCROLL_BAR_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\" name=\"a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41\"></a>WIDGET_TAB&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\" name=\"a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37\"></a>WIDGET_PROGESS_BAR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\" name=\"a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525\"></a>WIDGET_RADIO_BUTTON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\" name=\"a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04\"></a>WIDGET_CHECK_BUTTON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\" name=\"a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334\"></a>WIDGET_SLIDER_VERTICAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\" name=\"a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543\"></a>WIDGET_SLIDER_HORIZONTAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\" name=\"a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315\"></a>WIDGET_BUTTON_UP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\" name=\"a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e\"></a>WIDGET_BUTTON_DOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\" name=\"a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3\"></a>WIDGET_BUTTON_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\" name=\"a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925\"></a>WIDGET_BUTTON_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\" name=\"a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f\"></a>WIDGET_BUTTON_EXIT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\" name=\"a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2\"></a>WIDGET_BUTTON_HELP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\" name=\"a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a\"></a>WIDGET_BUTTON_2_WINDOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\" name=\"a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f\"></a>WIDGET_BUTTON_1_WINDOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\" name=\"a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664\"></a>WIDGET_DEFAULT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"af4ecd3d74bffd0e8e5fd26061418ef4f\" name=\"af4ecd3d74bffd0e8e5fd26061418ef4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4ecd3d74bffd0e8e5fd26061418ef4f\">&#9670;&nbsp;</a></span>Begin()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Begin </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Begins the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame. </p>\n<p >Pushes the first frame to the frame stack. This function has to be called first, before the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\" title=\"Ends the GUI commands for the frame.\">End()</a> and the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\" title=\"Submits all of the glyphs for rendering.\">Update()</a> functions. You can call <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\" title=\"Begins the GUI commands for the frame.\">Begin()</a> as much as you want, you just have to call an <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1\" title=\"Ends the GUI commands for the frame.\">End()</a> before you can call <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\" title=\"Begins the GUI commands for the frame.\">Begin()</a> again. This should help dealing a bit with the global state that the system has. </p>\n\n</div>\n</div>\n<a id=\"a36df4e7f162a96882c85976374864e7a\" name=\"a36df4e7f162a96882c85976374864e7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36df4e7f162a96882c85976374864e7a\">&#9670;&nbsp;</a></span>Button()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::Button </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>width</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a button. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">text</td><td>Text of the button. </td></tr>\n    <tr><td class=\"paramname\">enabled</td><td>If set to false, the button won't be clickable. </td></tr>\n    <tr><td class=\"paramname\">width</td><td>Width of the button, in pixels. </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if the button was clicked on. </dd></dl>\n\n</div>\n</div>\n<a id=\"abd53a76b58ffc880c50cd76f1b6019bf\" name=\"abd53a76b58ffc880c50cd76f1b6019bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd53a76b58ffc880c50cd76f1b6019bf\">&#9670;&nbsp;</a></span>CheckBox()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::CheckBox </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool &amp;&#160;</td>\n          <td class=\"paramname\"><em>selected</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a checkbox. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">selected</td><td>If set to true, the button will be drawn checked. </td></tr>\n    <tr><td class=\"paramname\">text</td><td>Text of the button. </td></tr>\n    <tr><td class=\"paramname\">enabled</td><td>If set to false, the button won't be clickable. </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if clicked on. The modified state of the button will be written out to the selected parameter. </dd></dl>\n\n</div>\n</div>\n<a id=\"a0d4089794c4aca324d8c19d02ef80a07\" name=\"a0d4089794c4aca324d8c19d02ef80a07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d4089794c4aca324d8c19d02ef80a07\">&#9670;&nbsp;</a></span>Clicked()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::Clicked </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6121817714545cc76730037226ca285f\" name=\"a6121817714545cc76730037226ca285f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6121817714545cc76730037226ca285f\">&#9670;&nbsp;</a></span>ClickHandled()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::ClickHandled </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6bfb846ae3573d59924997f6ce098b8\" name=\"aa6bfb846ae3573d59924997f6ce098b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6bfb846ae3573d59924997f6ce098b8\">&#9670;&nbsp;</a></span>ClickHandledLate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::ClickHandledLate </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e023aaf6835da7993924f1796035f0c\" name=\"a4e023aaf6835da7993924f1796035f0c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e023aaf6835da7993924f1796035f0c\">&#9670;&nbsp;</a></span>CursorOver()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::CursorOver </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8712e4716acb1c5eab60d40112c81d88\" name=\"a8712e4716acb1c5eab60d40112c81d88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8712e4716acb1c5eab60d40112c81d88\">&#9670;&nbsp;</a></span>DrawBox()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::DrawBox </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a glyph box. </p>\n<p >Glyph boxes are set up so that the first glyph, i.e. the one that you pass in the glyph parameter is the top-left corner. Then the numerically next glyph is take as the top-middle glpyh, then the top-right. This continues going left-to-right, top-to-bottom until all 9 squares are covered. If you are using a default widget layout font, you can use the enum values WIDGET_WINDOW, WIDGET_REVERSE_WINDOW, WIDGET_BUTTON, WIDGET_SELECT_BOX or WIDGET_BORDER for the glyph index. </p>\n\n</div>\n</div>\n<a id=\"aaf5392e3e82d599804ba655dc2bba32c\" name=\"aaf5392e3e82d599804ba655dc2bba32c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf5392e3e82d599804ba655dc2bba32c\">&#9670;&nbsp;</a></span>DrawBoxHorizontal()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::DrawBoxHorizontal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a horizontal bar. </p>\n<p >Similar to how <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\" title=\"Draws a glyph box.\">DrawBox()</a> is used, except we only have 3 squares, the left, middle and right. </p>\n\n</div>\n</div>\n<a id=\"a15d7e1006b2983a29f7f63f7dc2a6e73\" name=\"a15d7e1006b2983a29f7f63f7dc2a6e73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15d7e1006b2983a29f7f63f7dc2a6e73\">&#9670;&nbsp;</a></span>DrawGlyph()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::DrawGlyph </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em> = <code>0</code>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em> = <code>0</code>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7eb89f38a5f8e51434e7fdc3c21245e1\" name=\"a7eb89f38a5f8e51434e7fdc3c21245e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7eb89f38a5f8e51434e7fdc3c21245e1\">&#9670;&nbsp;</a></span>End()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::End </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Ends the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> commands for the frame. </p>\n<p >This has to be called sometime after <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\" title=\"Begins the GUI commands for the frame.\">Begin()</a>, but before <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc\" title=\"Submits all of the glyphs for rendering.\">Update()</a>. </p>\n\n</div>\n</div>\n<a id=\"aa9e738ecaea859c6a6839587a10c4ac6\" name=\"aa9e738ecaea859c6a6839587a10c4ac6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9e738ecaea859c6a6839587a10c4ac6\">&#9670;&nbsp;</a></span>FillFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::FillFrame </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Fills the frame with a glyph. </p>\n<p >Uses the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88\" title=\"Draws a glyph box.\">DrawBox()</a> function internally, so it works just like it, except that it uses the topmost frame to determine the position and sixze of the box. </p>\n\n</div>\n</div>\n<a id=\"a6592f1eadaa540d5d79a87d24363d69e\" name=\"a6592f1eadaa540d5d79a87d24363d69e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6592f1eadaa540d5d79a87d24363d69e\">&#9670;&nbsp;</a></span>GetScaling()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::GetScaling </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the scaling factor. </p>\n<p >See <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35\" title=\"Sets the scaling factor.\">SetScaling()</a>. </p>\n\n</div>\n</div>\n<a id=\"ac9ba68cbd0b4343af392b64083f10f13\" name=\"ac9ba68cbd0b4343af392b64083f10f13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9ba68cbd0b4343af392b64083f10f13\">&#9670;&nbsp;</a></span>Glyph() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Glyph </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a glyph from a font. </p>\n\n</div>\n</div>\n<a id=\"ab9cbc24cc6766595f1a063de7c32e568\" name=\"ab9cbc24cc6766595f1a063de7c32e568\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9cbc24cc6766595f1a063de7c32e568\">&#9670;&nbsp;</a></span>Glyph() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Glyph </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a34d71791d5b4905b42111ea613a087e6\" name=\"a34d71791d5b4905b42111ea613a087e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34d71791d5b4905b42111ea613a087e6\">&#9670;&nbsp;</a></span>GlyphBorderV()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::GlyphBorderV </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5998935f32f2b821313449f0254dccf0\" name=\"a5998935f32f2b821313449f0254dccf0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5998935f32f2b821313449f0254dccf0\">&#9670;&nbsp;</a></span>GlyphHeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::GlyphHeight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a643f4e389961bc9ccb05092ea58cccc6\" name=\"a643f4e389961bc9ccb05092ea58cccc6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a643f4e389961bc9ccb05092ea58cccc6\">&#9670;&nbsp;</a></span>GlyphWidth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::GlyphWidth </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">glyph_t</a>&#160;</td>\n          <td class=\"paramname\"><em>glyph</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0568bf9d9061984bf013f44b50ff5e56\" name=\"a0568bf9d9061984bf013f44b50ff5e56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0568bf9d9061984bf013f44b50ff5e56\">&#9670;&nbsp;</a></span>HorizontalDivider()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::HorizontalDivider </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a horizontal divider. </p>\n\n</div>\n</div>\n<a id=\"a2d278da9263fa009f2eaa8ea8d67eaa0\" name=\"a2d278da9263fa009f2eaa8ea8d67eaa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d278da9263fa009f2eaa8ea8d67eaa0\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Performs initialization of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> system. </p>\n<p ><a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system must be initialized first. </p>\n\n</div>\n</div>\n<a id=\"a76d6631e615a2c8e9fb923d034b92507\" name=\"a76d6631e615a2c8e9fb923d034b92507\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76d6631e615a2c8e9fb923d034b92507\">&#9670;&nbsp;</a></span>NewLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::NewLine </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>line</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a new line. </p>\n<p >Essentially just moves the cursor down a little bit and resets it to the left side of the frame. Sort of like a line break. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">line</td><td>Line type. Either LINE_LOW, LINE_NORMAL or LINE_HIGH. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a76a6d727998bc4ad99cd754ca2cf54a0\" name=\"a76a6d727998bc4ad99cd754ca2cf54a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76a6d727998bc4ad99cd754ca2cf54a0\">&#9670;&nbsp;</a></span>PopFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::PopFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Removes a frame from the frame stack. </p>\n\n</div>\n</div>\n<a id=\"a53e9477d97918587d29a2b44a378dcbf\" name=\"a53e9477d97918587d29a2b44a378dcbf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53e9477d97918587d29a2b44a378dcbf\">&#9670;&nbsp;</a></span>PopFrameKeepCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::PopFrameKeepCursor </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>keep_x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>keep_y</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abbe4fc88597f2b5171c105e74bcf8301\" name=\"abbe4fc88597f2b5171c105e74bcf8301\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbe4fc88597f2b5171c105e74bcf8301\">&#9670;&nbsp;</a></span>PushFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::PushFrame </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pushes a frame. </p>\n<p >The coordinates are in absolute screen cooordinates. This function could be useful for something, I just can't think of anything. </p>\n\n</div>\n</div>\n<a id=\"a4d59dd004d2a1ae7aed485247d674dc6\" name=\"a4d59dd004d2a1ae7aed485247d674dc6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d59dd004d2a1ae7aed485247d674dc6\">&#9670;&nbsp;</a></span>PushFrameRelative()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::PushFrameRelative </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>orientation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>offset</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pushes a frame releative to the previous. </p>\n<p >Check the regulat HTML docs on the website for a graphical description with, i.e. with images, to see how this works. But essentially what this function does, is it takes the previous frame and measures out the offset from the specified orientation and then pushes a new frame with the are from the offset. Initially the first frame is pushed, and it takes up the whole screen. If you wanted to use make the topmost 200px part of the screen a frame, you would set the orientation to FRAME_TOP and offset to 200. </p>\n\n</div>\n</div>\n<a id=\"a1cde426a98964d4f4780ff78b9663b18\" name=\"a1cde426a98964d4f4780ff78b9663b18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1cde426a98964d4f4780ff78b9663b18\">&#9670;&nbsp;</a></span>PushFrameRelativeKeepCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::PushFrameRelativeKeepCursor </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>orientation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>offset</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>keep_x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>keep_y</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pushes a frame, but keeps the cursor in place. </p>\n<p >Identical to <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6\" title=\"Pushes a frame releative to the previous.\">PushFrameRelative()</a>, except this function will not reset the cursor to the top-left corner of the frame. </p>\n\n</div>\n</div>\n<a id=\"a1488c8699f98eaaefd9dab7d1e220604\" name=\"a1488c8699f98eaaefd9dab7d1e220604\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1488c8699f98eaaefd9dab7d1e220604\">&#9670;&nbsp;</a></span>RadioButton()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::RadioButton </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>selected</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a radio button. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">index</td><td>Index of this button. </td></tr>\n    <tr><td class=\"paramname\">selected</td><td>Index of the selected button. </td></tr>\n    <tr><td class=\"paramname\">text</td><td>Text next to the button. </td></tr>\n    <tr><td class=\"paramname\">enable</td><td>If set to true, the button won't be clickable </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if the button was clicked on. The new selected button index will be written to the selected parameter. </dd></dl>\n\n</div>\n</div>\n<a id=\"a7b243fa8e17bd3e09a70b94f9f0a8054\" name=\"a7b243fa8e17bd3e09a70b94f9f0a8054\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b243fa8e17bd3e09a70b94f9f0a8054\">&#9670;&nbsp;</a></span>RegisterFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a> tram::GUI::RegisterFont </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a> *&#160;</td>\n          <td class=\"paramname\"><em>sprite</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Registers a font. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Font handle that can be used with all of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> widget functions. </dd></dl>\n\n</div>\n</div>\n<a id=\"a13a111a88e62cb6d8dd4434c22881dc5\" name=\"a13a111a88e62cb6d8dd4434c22881dc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13a111a88e62cb6d8dd4434c22881dc5\">&#9670;&nbsp;</a></span>RestoreColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::RestoreColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Restores previous glyph color. </p>\n<p >See <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\" title=\"Sets the color.\">SetColor()</a>. </p>\n\n</div>\n</div>\n<a id=\"a2750747aff85f20a25ae9bb33dd72bec\" name=\"a2750747aff85f20a25ae9bb33dd72bec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2750747aff85f20a25ae9bb33dd72bec\">&#9670;&nbsp;</a></span>RestoreFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::RestoreFont </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Restores previous glyph font. </p>\n<p >See <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a\" title=\"Sets the font.\">SetFont()</a>. </p>\n\n</div>\n</div>\n<a id=\"a7210e80143cdcc0ce28a57c0b283fca6\" name=\"a7210e80143cdcc0ce28a57c0b283fca6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7210e80143cdcc0ce28a57c0b283fca6\">&#9670;&nbsp;</a></span>SetColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the color. </p>\n<p >Pushes color to color stack. Each glyph type gets its own color stack. The previously set color can be restored using <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5\" title=\"Restores previous glyph color.\">RestoreColor()</a>. GlyphType::TEXT will set the text rendering color of the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9\" title=\"Draws text on the screen.\">Text()</a> function, as well as the text that is drawn by the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604\" title=\"Draws a radio button.\">RadioButton()</a> and <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf\" title=\"Draws a checkbox.\">CheckBox()</a> functions, on top of all <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a\" title=\"Draws a button.\">Button()</a> buttons and in <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\" title=\"Draws a textbox.\">TextBox()</a> textboxes. GlyphType::WIDGET will set the color that will be used when drawing non-text widget glyphs. By default it is <a class=\"el\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">Render::COLOR_WHITE</a>. This stack is reset every time the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\" title=\"Begins the GUI commands for the frame.\">GUI::Begin()</a> function is called. The default values can be overriden with <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d\" title=\"Overrides glyph default colors and fonts.\">SetGlyphDefaults()</a>. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">color</td><td>RGB color that will be set. Take a look at the <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system's header or docs to see what kinds of predefined colors are available. </td></tr>\n    <tr><td class=\"paramname\">type</td><td>The type of the glyph that this color will be applied to. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a722e52d1cec8ee81a55e26dc1a4c63c8\" name=\"a722e52d1cec8ee81a55e26dc1a4c63c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a722e52d1cec8ee81a55e26dc1a4c63c8\">&#9670;&nbsp;</a></span>SetCursorDelayed()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetCursorDelayed </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">UI::CursorType</a>&#160;</td>\n          <td class=\"paramname\"><em>cursor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the cursor. </p>\n<p >The difference between using this function and the cursor setting function in the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system, is that this function will only switch the cursor if it has been changed, i.e. it will issue the <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">UI::SetCursor()</a> command only if this function receives a new parameter. This means that <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> widgets can change the cursor, but the it is also possible to change it using the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> function and this function will not override it, except if the cursor is placed over a widget. </p>\n\n</div>\n</div>\n<a id=\"a2a3c432ea9156a810b47d5e9836d861a\" name=\"a2a3c432ea9156a810b47d5e9836d861a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a3c432ea9156a810b47d5e9836d861a\">&#9670;&nbsp;</a></span>SetFont()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetFont </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the font. </p>\n<p >Works the same as <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6\" title=\"Sets the color.\">SetColor()</a>, except for fonts. A font needs to be registered with <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054\" title=\"Registers a font.\">RegisterFont()</a> first. Widget fonts need to use the widget font layout to be displayed properly. </p>\n\n</div>\n</div>\n<a id=\"ac467099a0542b69fb101532431fef5a1\" name=\"ac467099a0542b69fb101532431fef5a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac467099a0542b69fb101532431fef5a1\">&#9670;&nbsp;</a></span>SetGlyph()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetGlyph </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>z</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>tex_x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>tex_y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>tex_w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>tex_h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a glyph to rendering list. </p>\n<p >Triangularizes a glyph from its params and then it get sent off to rendering via the glyph rendering list. </p>\n\n</div>\n</div>\n<a id=\"a8b13f224cb4fc10e56e14f176d93b95d\" name=\"a8b13f224cb4fc10e56e14f176d93b95d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b13f224cb4fc10e56e14f176d93b95d\">&#9670;&nbsp;</a></span>SetGlyphDefaults()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetGlyphDefaults </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">Render::color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6\">GlyphType</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Overrides glyph default colors and fonts. </p>\n<p >Whenever <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f\" title=\"Begins the GUI commands for the frame.\">GUI::Begin()</a> is called, the color and font passed to this function will be set as the color and font used for the glyph drawing functions. If you are using the <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\" title=\"Menu framework.\">Ext::Menu</a> extension and its default fonts, you don't need to call this function. </p>\n\n</div>\n</div>\n<a id=\"abc96e6226a9e9abe317c04fe4661ee35\" name=\"abc96e6226a9e9abe317c04fe4661ee35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc96e6226a9e9abe317c04fe4661ee35\">&#9670;&nbsp;</a></span>SetScaling()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetScaling </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>scale</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the scaling factor. </p>\n<p >If set to <code>1</code>, the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\" title=\"Immediate mode GUI system.\">GUI</a> will be drawn normally. If set to <code>2</code>, then everything will be drawn twice as large. If set to <code>3</code>, then everything will be drawn three times as large. I don't recommend going above that. </p>\n\n</div>\n</div>\n<a id=\"a2cea0738110390ba9a29efd3abde74ed\" name=\"a2cea0738110390ba9a29efd3abde74ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2cea0738110390ba9a29efd3abde74ed\">&#9670;&nbsp;</a></span>SetSelectedText()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::SetSelectedText </td>\n          <td>(</td>\n          <td class=\"paramtype\">char *&#160;</td>\n          <td class=\"paramname\"><em>text</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the text which is selected in a textbox. </p>\n<p >The way the framework remembers which TextBox you have clicked on and are editing is that once a TextBox is clicked on, the framework remembers the pointer of the text that is being edited. The actual TextBox string is updated only when the <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\" title=\"Draws a textbox.\">TextBox()</a> function is called. If you want to deselect any TextBox, call this function with a <code>nullptr</code>. </p>\n\n</div>\n</div>\n<a id=\"a081da10ffbacc71992b191a911acf1b8\" name=\"a081da10ffbacc71992b191a911acf1b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a081da10ffbacc71992b191a911acf1b8\">&#9670;&nbsp;</a></span>Slider()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::Slider </td>\n          <td>(</td>\n          <td class=\"paramtype\">float &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>width</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a horizontal slider. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">value</td><td><a class=\"el\" href=\"classtram_1_1_value.html\" title=\"Generic, type-safe union.\">Value</a> of the slider, between 0.0f and 1.0f. </td></tr>\n    <tr><td class=\"paramname\">enabled</td><td>If set to false, the slider won't be draggable. </td></tr>\n    <tr><td class=\"paramname\">width</td><td>Width of the slider, in pixels. </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section return\"><dt>Returns</dt><dd>True if the slider was clicked on. The slider's new value will be written out to the value variable. </dd></dl>\n\n</div>\n</div>\n<a id=\"a1eeac17180cfd99f45e0d997766543c9\" name=\"a1eeac17180cfd99f45e0d997766543c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1eeac17180cfd99f45e0d997766543c9\">&#9670;&nbsp;</a></span>Text()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Text </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>orientation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws text on the screen. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">orientation</td><td>Either TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT or TEXT_JUSTIFIED. The default is TEXT_LEFT. </td></tr>\n    <tr><td class=\"paramname\">text</td><td>The text that will drawn to screen. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a356c2eeb0e6b3a8c19ed6ee19a448619\" name=\"a356c2eeb0e6b3a8c19ed6ee19a448619\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a356c2eeb0e6b3a8c19ed6ee19a448619\">&#9670;&nbsp;</a></span>TextBox() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::TextBox </td>\n          <td>(</td>\n          <td class=\"paramtype\">char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>length</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>enabled</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a textbox. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">text</td><td>Text in the textbox. This will be editable. </td></tr>\n    <tr><td class=\"paramname\">length</td><td>Length of the text buffer. </td></tr>\n    <tr><td class=\"paramname\">enabled</td><td>If false, the textbox won't be editable. </td></tr>\n    <tr><td class=\"paramname\">w,h</td><td>Dimensions of the textbox, in pixels. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a197eda70726287d8c846535df181e486\" name=\"a197eda70726287d8c846535df181e486\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a197eda70726287d8c846535df181e486\">&#9670;&nbsp;</a></span>TextBox() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::TextBox </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a textbox. </p>\n<p >Essentially identical to the other <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619\" title=\"Draws a textbox.\">TextBox()</a> function, except this one accepts a <code>const char*</code> text. This also means that the text in the textbox won't be editable and it will be drawn as disabled. </p>\n\n</div>\n</div>\n<a id=\"af581d06594c177e5c1e7ea98db61382f\" name=\"af581d06594c177e5c1e7ea98db61382f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af581d06594c177e5c1e7ea98db61382f\">&#9670;&nbsp;</a></span>TextWidth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::TextWidth </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">font_t</a>&#160;</td>\n          <td class=\"paramname\"><em>font</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a19bd1015c21055a46d61eb4193a888cc\" name=\"a19bd1015c21055a46d61eb4193a888cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19bd1015c21055a46d61eb4193a888cc\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Submits all of the glyphs for rendering. </p>\n<p >Also updates cursor, if needed by <a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8\" title=\"Sets the cursor.\">SetCursorDelayed()</a>. </p>\n\n</div>\n</div>\n<a id=\"aa150493c2b4c1d204d394ec3a8145ef1\" name=\"aa150493c2b4c1d204d394ec3a8145ef1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa150493c2b4c1d204d394ec3a8145ef1\">&#9670;&nbsp;</a></span>UpdateDrawListFonts()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::GUI::UpdateDrawListFonts </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Submits registered fonts to the renderer. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a2fd25b3a9a83f7a905fd70aeda3cf2d8\" name=\"a2fd25b3a9a83f7a905fd70aeda3cf2d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fd25b3a9a83f7a905fd70aeda3cf2d8\">&#9670;&nbsp;</a></span>beginned</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::beginned = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6b89bb5200e494e6cd5a0191bf527df0\" name=\"a6b89bb5200e494e6cd5a0191bf527df0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b89bb5200e494e6cd5a0191bf527df0\">&#9670;&nbsp;</a></span>last_update_frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::last_update_frame = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cd56d99b85b29b8659648e28bb1f5ca\" name=\"a8cd56d99b85b29b8659648e28bb1f5ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cd56d99b85b29b8659648e28bb1f5ca\">&#9670;&nbsp;</a></span>mouse_click_not_handled</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::mouse_click_not_handled = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a64d510448e860481081147bb9e1ef0d6\" name=\"a64d510448e860481081147bb9e1ef0d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64d510448e860481081147bb9e1ef0d6\">&#9670;&nbsp;</a></span>mouse_click_not_handled_late</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::GUI::mouse_click_not_handled_late = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_language.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Language Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_language.html\">Language</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Language Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Localization services.  \n<a href=\"namespacetram_1_1_language.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">Load</a> (const char *filename)</td></tr>\n<tr class=\"memdesc:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Loads a language file.  <a href=\"namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3\">More...</a><br /></td></tr>\n<tr class=\"separator:a33a74954652fedfbc85aab8cdd4c99f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">Get</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves a string from the loaded language files.  <a href=\"namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834\">More...</a><br /></td></tr>\n<tr class=\"separator:af059d31d855f0bf0fc06dfc1a170c834\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5799e241bda18ef51f887437408573\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">UTF16ToLatin7</a> (uint16_t code)</td></tr>\n<tr class=\"memdesc:aef5799e241bda18ef51f887437408573\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts a UTF16 codepoint to a Latin7 codepoint.  <a href=\"namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573\">More...</a><br /></td></tr>\n<tr class=\"separator:aef5799e241bda18ef51f887437408573\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Localization services. </p>\n<p >Provides services for application localization, character re-encoding, translation, etc.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/language.html\">https://racenis.github.io/tram-sdk/documentation/framework/language.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"af059d31d855f0bf0fc06dfc1a170c834\" name=\"af059d31d855f0bf0fc06dfc1a170c834\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af059d31d855f0bf0fc06dfc1a170c834\">&#9670;&nbsp;</a></span>Get()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::Language::Get </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Retrieves a string from the loaded language files. </p>\n\n</div>\n</div>\n<a id=\"a33a74954652fedfbc85aab8cdd4c99f3\" name=\"a33a74954652fedfbc85aab8cdd4c99f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33a74954652fedfbc85aab8cdd4c99f3\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Language::Load </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Loads a language file. </p>\n\n</div>\n</div>\n<a id=\"aef5799e241bda18ef51f887437408573\" name=\"aef5799e241bda18ef51f887437408573\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef5799e241bda18ef51f887437408573\">&#9670;&nbsp;</a></span>UTF16ToLatin7()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Language::UTF16ToLatin7 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>code</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Converts a UTF16 codepoint to a Latin7 codepoint. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_loader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Loader Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_loader.html\">Loader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Loader Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming.  \n<a href=\"namespacetram_1_1_loader.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">Track</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"memdesc:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts tracking an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\">More...</a><br /></td></tr>\n<tr class=\"separator:a682ad9ccb8fee9638cfea657405e9d54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">Untrack</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"memdesc:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops tracking a tracked <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>.  <a href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\">More...</a><br /></td></tr>\n<tr class=\"separator:add220f7fedcb52197b68d9d17115ceaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ff0e373bfa20733197131513624505\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">Update</a> ()</td></tr>\n<tr class=\"memdesc:aa2ff0e373bfa20733197131513624505\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> loading and unloading.  <a href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2ff0e373bfa20733197131513624505\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:acc765a2553ec7b9c33e50b473d38d371\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::set&lt; <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371\">tracked_entities</a></td></tr>\n<tr class=\"separator:acc765a2553ec7b9c33e50b473d38d371\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> streaming. </p>\n<p >Provides services for application localization, character re-encoding, translation, etc.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/loader.html\">https://racenis.github.io/tram-sdk/documentation/framework/loader.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a682ad9ccb8fee9638cfea657405e9d54\" name=\"a682ad9ccb8fee9638cfea657405e9d54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a682ad9ccb8fee9638cfea657405e9d54\">&#9670;&nbsp;</a></span>Track()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::Track </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Starts tracking an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>. </p>\n<p >See <a class=\"el\" href=\"namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505\" title=\"Performs WorldCell loading and unloading.\">Loader::Update()</a>. </p>\n\n</div>\n</div>\n<a id=\"add220f7fedcb52197b68d9d17115ceaa\" name=\"add220f7fedcb52197b68d9d17115ceaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add220f7fedcb52197b68d9d17115ceaa\">&#9670;&nbsp;</a></span>Untrack()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::Untrack </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops tracking a tracked <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>. </p>\n<p >See <a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\" title=\"Stops tracking a tracked Entity.\">Loader::Untrack()</a>. </p>\n\n</div>\n</div>\n<a id=\"aa2ff0e373bfa20733197131513624505\" name=\"aa2ff0e373bfa20733197131513624505\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2ff0e373bfa20733197131513624505\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Loader::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Performs <a class=\"el\" href=\"classtram_1_1_world_cell.html\" title=\"World streaming unit.\">WorldCell</a> loading and unloading. </p>\n<p >Calling this function will apply a constraint to the load status of all WorldCells, whereby cells which either contain a tracked entity, or are directly connected to such a cell, will be loaded, and all other cells will be unloaded. See also <a class=\"el\" href=\"namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54\" title=\"Starts tracking an Entity.\">Loader::Track()</a> and <a class=\"el\" href=\"namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa\" title=\"Stops tracking a tracked Entity.\">Loader::Untrack()</a>. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"acc765a2553ec7b9c33e50b473d38d371\" name=\"acc765a2553ec7b9c33e50b473d38d371\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc765a2553ec7b9c33e50b473d38d371\">&#9670;&nbsp;</a></span>tracked_entities</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::set&lt;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&gt; tram::Loader::tracked_entities</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_physics.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data.  <a href=\"structtram_1_1_physics_1_1_collision.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_collision_model.html\">CollisionModel</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> model.  <a href=\"classtram_1_1_physics_1_1_collision_model.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Shape for a collider.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">PathAction</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:abe8615cdc9ae6d697635a3a024e90470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">Shape</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\">SHAPE_SPHERE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\">SHAPE_CYLINDER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\">SHAPE_CAPSULE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\">SHAPE_CONE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\">SHAPE_BOX</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\">SHAPE_HULL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\">SHAPE_MESH</a>\n<br />\n }</td></tr>\n<tr class=\"separator:abe8615cdc9ae6d697635a3a024e90470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b8f6a7bd1ffb55b55a5f534008406f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">CollisionGroup</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">COLL_WORLDOBJ</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">COLL_STATICOBJ</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">COLL_DYNAMICOBJ</a> = 8\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">COLL_TRIGGER</a> = 16\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">COLL_PLAYER</a> = 32\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">COLL_MONSTER</a> = 64\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">COLL_VEHICLE</a> = 128\n<br />\n }</td></tr>\n<tr class=\"separator:a5b8f6a7bd1ffb55b55a5f534008406f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a176087bb562e45cdb38d96605d03ded6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the physics system.  <a href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">More...</a><br /></td></tr>\n<tr class=\"separator:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">Update</a> ()</td></tr>\n<tr class=\"memdesc:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the physics system.  <a href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">More...</a><br /></td></tr>\n<tr class=\"separator:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">Raycast</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;from, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs a raycast.  <a href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">Shapecast</a> (const <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> &amp;shape, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;from, const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">I have no idea if this function works. (yes it does)  <a href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">More...</a><br /></td></tr>\n<tr class=\"separator:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b8f6a7bd1ffb55b55a5f534008406f8\">&#9670;&nbsp;</a></span>CollisionGroup</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">tram::Physics::CollisionGroup</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\"></a>COLL_WORLDOBJ&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\"></a>COLL_STATICOBJ&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\"></a>COLL_DYNAMICOBJ&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\"></a>COLL_TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\"></a>COLL_PLAYER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\"></a>COLL_MONSTER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\" name=\"a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\"></a>COLL_VEHICLE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"abe8615cdc9ae6d697635a3a024e90470\" name=\"abe8615cdc9ae6d697635a3a024e90470\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe8615cdc9ae6d697635a3a024e90470\">&#9670;&nbsp;</a></span>Shape</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">tram::Physics::Shape</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\" name=\"abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de\"></a>SHAPE_SPHERE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\" name=\"abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04\"></a>SHAPE_CYLINDER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\" name=\"abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070\"></a>SHAPE_CAPSULE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\" name=\"abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b\"></a>SHAPE_CONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\" name=\"abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4\"></a>SHAPE_BOX&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\" name=\"abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6\"></a>SHAPE_HULL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\" name=\"abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3\"></a>SHAPE_MESH&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a176087bb562e45cdb38d96605d03ded6\" name=\"a176087bb562e45cdb38d96605d03ded6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a176087bb562e45cdb38d96605d03ded6\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Initializes the physics system. </p>\n\n</div>\n</div>\n<a id=\"aa3616a0153cf20031eff7b3aba43e7f9\" name=\"aa3616a0153cf20031eff7b3aba43e7f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3616a0153cf20031eff7b3aba43e7f9\">&#9670;&nbsp;</a></span>Raycast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> tram::Physics::Raycast </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Performs a raycast. </p>\n<p >Performs a raycast from from to to. </p><dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\" title=\"Physics collision data.\">Collision</a> struct. If there was nothing found, then the pointer in the struct will be set to nullptr. </dd></dl>\n\n</div>\n</div>\n<a id=\"a415045d72320d7d4512e4ecdc430d89f\" name=\"a415045d72320d7d4512e4ecdc430d89f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a415045d72320d7d4512e4ecdc430d89f\">&#9670;&nbsp;</a></span>Shapecast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> &gt; tram::Physics::Shapecast </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>shape</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>I have no idea if this function works. (yes it does) </p>\n\n</div>\n</div>\n<a id=\"aba25e48ea456c82d6c11ef12b2862184\" name=\"aba25e48ea456c82d6c11ef12b2862184\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba25e48ea456c82d6c11ef12b2862184\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Updates the physics system. </p>\n<p >Should only be called once in the update cycle. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_physics_1_1_a_p_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>.  \n<a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html\">PhysicsDebugDraw</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">ShapecastCallback</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a36463524ce5c3d5ee5d8c9bf2d4258bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a>) (void *)</td></tr>\n<tr class=\"separator:a36463524ce5c3d5ee5d8c9bf2d4258bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e2158a307c228002d615529011ac455\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a>) (void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;)</td></tr>\n<tr class=\"separator:a8e2158a307c228002d615529011ac455\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd529fe6abcfcd4c2e82d455cddee7f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a>) (void *, void *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>)</td></tr>\n<tr class=\"separator:acd529fe6abcfcd4c2e82d455cddee7f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a142223787cfe33696de7cd92c8ae663c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c\">UserIndex</a> : int { <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\">USERINDEX_RIGIDBODY</a> = 3\n, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\">USERINDEX_TRIGGER</a> = 4\n }</td></tr>\n<tr class=\"separator:a142223787cfe33696de7cd92c8ae663c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7fe5a316a9a2a82e6fefebb795f58eb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">MetadataType</a> { <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\">METADATA_RIGIDBODY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\">METADATA_TRIGGER</a>\n }</td></tr>\n<tr class=\"separator:a7fe5a316a9a2a82e6fefebb795f58eb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">MakeCollisionShape</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a> *shapes, size_t shape_count)</td></tr>\n<tr class=\"separator:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a871da86313d2f9e88539c71940ac8e89\">MakeCollisionShape</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> shape)</td></tr>\n<tr class=\"separator:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">YeetCollisionShape</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape)</td></tr>\n<tr class=\"separator:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">MakeRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape, float mass, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, uint32_t mask, uint32_t group, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a> get_callback, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a> set_callback, void *data)</td></tr>\n<tr class=\"separator:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">YeetRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody)</td></tr>\n<tr class=\"separator:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0abede70f73e5a367c12fc46a28b6fa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">SetRigidbodyTransformCallback</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a> get_callback, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a> set_callback, void *data)</td></tr>\n<tr class=\"separator:a0abede70f73e5a367c12fc46a28b6fa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">SetRigidbodyCollisionCallback</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a> callback, void *data)</td></tr>\n<tr class=\"separator:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">SetRigidbodyCollisionMask</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">SetRigidbodyCollisionGroup</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">SetRigidbodyLocation</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"separator:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">SetRigidbodyRotation</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"separator:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">SetRigidbodyMass</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, float mass)</td></tr>\n<tr class=\"separator:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">PushRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction)</td></tr>\n<tr class=\"separator:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a04c616c8fd1cabe3561bc91f4a084392\">PushRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local)</td></tr>\n<tr class=\"separator:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">SpinRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction)</td></tr>\n<tr class=\"separator:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">SetRigidbodyDebugDrawing</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, bool drawing)</td></tr>\n<tr class=\"separator:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">SetRigidbodyKinematic</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, bool kinematic)</td></tr>\n<tr class=\"separator:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">SetRigidbodyAngularFactor</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor)</td></tr>\n<tr class=\"separator:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4adab24a698129a226d8dc841539738a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">SetRigidbodyLinearFactor</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor)</td></tr>\n<tr class=\"separator:a4adab24a698129a226d8dc841539738a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">SetRigidbodyVelocity</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> velocity)</td></tr>\n<tr class=\"separator:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">GetRigidbodyVelocity</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody)</td></tr>\n<tr class=\"separator:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">AwakenRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody)</td></tr>\n<tr class=\"separator:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">SleepRigidbody</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody)</td></tr>\n<tr class=\"separator:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">DisableRigidbodyDeactivation</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody)</td></tr>\n<tr class=\"separator:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">MakeTrigger</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape, uint32_t mask, uint32_t group, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation)</td></tr>\n<tr class=\"separator:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">YeetTrigger</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>)</td></tr>\n<tr class=\"separator:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">SetTriggerCollisionCallback</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a> callback, void *data)</td></tr>\n<tr class=\"separator:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4126218afb311b1eebc568240714fbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">SetTriggerCollisionMask</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:aa4126218afb311b1eebc568240714fbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">SetTriggerCollisionGroup</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">SetTriggerLocation</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location)</td></tr>\n<tr class=\"separator:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66528623ab1c92b411137a246641b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">SetTriggerRotation</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> location)</td></tr>\n<tr class=\"separator:ad66528623ab1c92b411137a246641b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6725b1082075301a1d07f52948788fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">Raycast</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:ab6725b1082075301a1d07f52948788fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">Shapecast</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> shape, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">Init</a> ()</td></tr>\n<tr class=\"separator:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">StepPhysics</a> ()</td></tr>\n<tr class=\"separator:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">DrawDebug</a> ()</td></tr>\n<tr class=\"separator:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a11e3876e4d86bc1c3b68d5d35c08ced6\">DrawDebug</a> (bool)</td></tr>\n<tr class=\"separator:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0713a3c44d84eee3bd0823cb58705f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad0713a3c44d84eee3bd0823cb58705f6\">SetRigidbodyTransformCallback</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*get_transform_callback)(void *), void(*set_transform_callback)(void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;), void *data)</td></tr>\n<tr class=\"separator:ad0713a3c44d84eee3bd0823cb58705f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a7fe1815cf77d8668e3eb109f279d1681\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681\">rigidbody_metadata_pool</a> (&quot;RigidbodyMetadata pool&quot;, RIGIDBODY_LIMIT)</td></tr>\n<tr class=\"separator:a7fe1815cf77d8668e3eb109f279d1681\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. </p>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"acd529fe6abcfcd4c2e82d455cddee7f7\" name=\"acd529fe6abcfcd4c2e82d455cddee7f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd529fe6abcfcd4c2e82d455cddee7f7\">&#9670;&nbsp;</a></span>col_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void(* tram::Physics::API::col_callback) (void *, void *, <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a36463524ce5c3d5ee5d8c9bf2d4258bd\" name=\"a36463524ce5c3d5ee5d8c9bf2d4258bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36463524ce5c3d5ee5d8c9bf2d4258bd\">&#9670;&nbsp;</a></span>get_trf_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(* tram::Physics::API::get_trf_callback) (void *)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e2158a307c228002d615529011ac455\" name=\"a8e2158a307c228002d615529011ac455\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e2158a307c228002d615529011ac455\">&#9670;&nbsp;</a></span>set_trf_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void(* tram::Physics::API::set_trf_callback) (void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a7fe5a316a9a2a82e6fefebb795f58eb0\" name=\"a7fe5a316a9a2a82e6fefebb795f58eb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7fe5a316a9a2a82e6fefebb795f58eb0\">&#9670;&nbsp;</a></span>MetadataType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">tram::Physics::API::MetadataType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\" name=\"a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818\"></a>METADATA_RIGIDBODY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\" name=\"a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04\"></a>METADATA_TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a142223787cfe33696de7cd92c8ae663c\" name=\"a142223787cfe33696de7cd92c8ae663c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a142223787cfe33696de7cd92c8ae663c\">&#9670;&nbsp;</a></span>UserIndex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c\">tram::Physics::API::UserIndex</a> : int</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\" name=\"a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c\"></a>USERINDEX_RIGIDBODY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\" name=\"a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72\"></a>USERINDEX_TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a165f12c0aa8cf05d459e9ceb71c5a629\" name=\"a165f12c0aa8cf05d459e9ceb71c5a629\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a165f12c0aa8cf05d459e9ceb71c5a629\">&#9670;&nbsp;</a></span>AwakenRigidbody()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::AwakenRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5bc20f737d7d6dae2bb8a8c768b04cb7\" name=\"a5bc20f737d7d6dae2bb8a8c768b04cb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bc20f737d7d6dae2bb8a8c768b04cb7\">&#9670;&nbsp;</a></span>DisableRigidbodyDeactivation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::DisableRigidbodyDeactivation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1acb48d6ea2049b83205bbab3dc594e7\" name=\"a1acb48d6ea2049b83205bbab3dc594e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1acb48d6ea2049b83205bbab3dc594e7\">&#9670;&nbsp;</a></span>DrawDebug() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::DrawDebug </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a11e3876e4d86bc1c3b68d5d35c08ced6\" name=\"a11e3876e4d86bc1c3b68d5d35c08ced6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11e3876e4d86bc1c3b68d5d35c08ced6\">&#9670;&nbsp;</a></span>DrawDebug() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::DrawDebug </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>draw</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f0061f6029ee06aa8be370d33d1a48c\" name=\"a1f0061f6029ee06aa8be370d33d1a48c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f0061f6029ee06aa8be370d33d1a48c\">&#9670;&nbsp;</a></span>GetRigidbodyVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::API::GetRigidbodyVelocity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d061813173c9cc7d06ff1fe5bb20717\" name=\"a5d061813173c9cc7d06ff1fe5bb20717\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d061813173c9cc7d06ff1fe5bb20717\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a871da86313d2f9e88539c71940ac8e89\" name=\"a871da86313d2f9e88539c71940ac8e89\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a871da86313d2f9e88539c71940ac8e89\">&#9670;&nbsp;</a></span>MakeCollisionShape() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> tram::Physics::API::MakeCollisionShape </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94cd3fb5de4826d7e83dd17450d30612\" name=\"a94cd3fb5de4826d7e83dd17450d30612\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94cd3fb5de4826d7e83dd17450d30612\">&#9670;&nbsp;</a></span>MakeCollisionShape() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> tram::Physics::API::MakeCollisionShape </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a> *&#160;</td>\n          <td class=\"paramname\"><em>shapes</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>shape_count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e1dea21d1c0aa5c2f2eec460c9be277\" name=\"a5e1dea21d1c0aa5c2f2eec460c9be277\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e1dea21d1c0aa5c2f2eec460c9be277\">&#9670;&nbsp;</a></span>MakeRigidbody()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> tram::Physics::API::MakeRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>mass</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mask</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>get_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>set_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2268940df819b4cd3a4cf431515ac19d\" name=\"a2268940df819b4cd3a4cf431515ac19d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2268940df819b4cd3a4cf431515ac19d\">&#9670;&nbsp;</a></span>MakeTrigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> tram::Physics::API::MakeTrigger </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mask</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7b6a5a76cb66998131a863a64989aa39\" name=\"a7b6a5a76cb66998131a863a64989aa39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b6a5a76cb66998131a863a64989aa39\">&#9670;&nbsp;</a></span>PushRigidbody() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PushRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04c616c8fd1cabe3561bc91f4a084392\" name=\"a04c616c8fd1cabe3561bc91f4a084392\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04c616c8fd1cabe3561bc91f4a084392\">&#9670;&nbsp;</a></span>PushRigidbody() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::PushRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>local</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab6725b1082075301a1d07f52948788fa\" name=\"ab6725b1082075301a1d07f52948788fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6725b1082075301a1d07f52948788fa\">&#9670;&nbsp;</a></span>Raycast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; tram::Physics::API::Raycast </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c4e5faa028c12c82946698a1110c1cd\" name=\"a7c4e5faa028c12c82946698a1110c1cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c4e5faa028c12c82946698a1110c1cd\">&#9670;&nbsp;</a></span>SetRigidbodyAngularFactor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyAngularFactor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>factor</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aacd35951302ec4c164498096dc1b4f59\" name=\"aacd35951302ec4c164498096dc1b4f59\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacd35951302ec4c164498096dc1b4f59\">&#9670;&nbsp;</a></span>SetRigidbodyCollisionCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyCollisionCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1c06fae565edc0f7e9724d2699d206e5\" name=\"a1c06fae565edc0f7e9724d2699d206e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c06fae565edc0f7e9724d2699d206e5\">&#9670;&nbsp;</a></span>SetRigidbodyCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6a8846f245dd0179318174a1e7379c8e\" name=\"a6a8846f245dd0179318174a1e7379c8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a8846f245dd0179318174a1e7379c8e\">&#9670;&nbsp;</a></span>SetRigidbodyCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94909ae121eee8f34565dc482b16d74d\" name=\"a94909ae121eee8f34565dc482b16d74d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94909ae121eee8f34565dc482b16d74d\">&#9670;&nbsp;</a></span>SetRigidbodyDebugDrawing()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyDebugDrawing </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>drawing</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69384c8fc4867f74184957c7b70ab882\" name=\"a69384c8fc4867f74184957c7b70ab882\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69384c8fc4867f74184957c7b70ab882\">&#9670;&nbsp;</a></span>SetRigidbodyKinematic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyKinematic </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>kinematic</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4adab24a698129a226d8dc841539738a\" name=\"a4adab24a698129a226d8dc841539738a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4adab24a698129a226d8dc841539738a\">&#9670;&nbsp;</a></span>SetRigidbodyLinearFactor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyLinearFactor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>factor</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac2cbf02cab4746c0351a894fe480d166\" name=\"ac2cbf02cab4746c0351a894fe480d166\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2cbf02cab4746c0351a894fe480d166\">&#9670;&nbsp;</a></span>SetRigidbodyLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a679d86cb7ebb5221e0c7655f728392b7\" name=\"a679d86cb7ebb5221e0c7655f728392b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a679d86cb7ebb5221e0c7655f728392b7\">&#9670;&nbsp;</a></span>SetRigidbodyMass()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyMass </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>mass</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d0d81d724fbaf34ae5c7b159fe61aef\" name=\"a3d0d81d724fbaf34ae5c7b159fe61aef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d0d81d724fbaf34ae5c7b159fe61aef\">&#9670;&nbsp;</a></span>SetRigidbodyRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0abede70f73e5a367c12fc46a28b6fa3\" name=\"a0abede70f73e5a367c12fc46a28b6fa3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0abede70f73e5a367c12fc46a28b6fa3\">&#9670;&nbsp;</a></span>SetRigidbodyTransformCallback() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyTransformCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>get_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>set_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad0713a3c44d84eee3bd0823cb58705f6\" name=\"ad0713a3c44d84eee3bd0823cb58705f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0713a3c44d84eee3bd0823cb58705f6\">&#9670;&nbsp;</a></span>SetRigidbodyTransformCallback() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyTransformCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;(*)(void *)&#160;</td>\n          <td class=\"paramname\"><em>get_transform_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(void *, std::pair&lt; <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> &gt;)&#160;</td>\n          <td class=\"paramname\"><em>set_transform_callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae4a9270ecabf522b0978581496d4f0b7\" name=\"ae4a9270ecabf522b0978581496d4f0b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4a9270ecabf522b0978581496d4f0b7\">&#9670;&nbsp;</a></span>SetRigidbodyVelocity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetRigidbodyVelocity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>velocity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92e3c5b470bbf94447cc20b17aa4397e\" name=\"a92e3c5b470bbf94447cc20b17aa4397e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92e3c5b470bbf94447cc20b17aa4397e\">&#9670;&nbsp;</a></span>SetTriggerCollisionCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetTriggerCollisionCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a>&#160;</td>\n          <td class=\"paramname\"><em>callback</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af28f53e5e058544eebb6f3fb1dca5810\" name=\"af28f53e5e058544eebb6f3fb1dca5810\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af28f53e5e058544eebb6f3fb1dca5810\">&#9670;&nbsp;</a></span>SetTriggerCollisionGroup()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetTriggerCollisionGroup </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>group</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4126218afb311b1eebc568240714fbd\" name=\"aa4126218afb311b1eebc568240714fbd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4126218afb311b1eebc568240714fbd\">&#9670;&nbsp;</a></span>SetTriggerCollisionMask()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetTriggerCollisionMask </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7562c6255d4d3aa1f54ea321af65a4f8\" name=\"a7562c6255d4d3aa1f54ea321af65a4f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7562c6255d4d3aa1f54ea321af65a4f8\">&#9670;&nbsp;</a></span>SetTriggerLocation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetTriggerLocation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad66528623ab1c92b411137a246641b6e\" name=\"ad66528623ab1c92b411137a246641b6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad66528623ab1c92b411137a246641b6e\">&#9670;&nbsp;</a></span>SetTriggerRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SetTriggerRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af1231217a76d2c25b7134554ce9dac2d\" name=\"af1231217a76d2c25b7134554ce9dac2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1231217a76d2c25b7134554ce9dac2d\">&#9670;&nbsp;</a></span>Shapecast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; &gt; tram::Physics::API::Shapecast </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a59055c8583f280409fd8fbc7df08f2f4\" name=\"a59055c8583f280409fd8fbc7df08f2f4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59055c8583f280409fd8fbc7df08f2f4\">&#9670;&nbsp;</a></span>SleepRigidbody()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SleepRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43d326db472ec5a9e499b2816a5588c1\" name=\"a43d326db472ec5a9e499b2816a5588c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43d326db472ec5a9e499b2816a5588c1\">&#9670;&nbsp;</a></span>SpinRigidbody()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::SpinRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a18ff0dc10793f33e66b57c8cd29d9fa2\" name=\"a18ff0dc10793f33e66b57c8cd29d9fa2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18ff0dc10793f33e66b57c8cd29d9fa2\">&#9670;&nbsp;</a></span>StepPhysics()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::StepPhysics </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a54bd52773f6a40688ec69b6fe87749ce\" name=\"a54bd52773f6a40688ec69b6fe87749ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54bd52773f6a40688ec69b6fe87749ce\">&#9670;&nbsp;</a></span>YeetCollisionShape()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::YeetCollisionShape </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a>&#160;</td>\n          <td class=\"paramname\"><em>shape</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6aa3f489a407250ed34d2b79f4ec83b3\" name=\"a6aa3f489a407250ed34d2b79f4ec83b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6aa3f489a407250ed34d2b79f4ec83b3\">&#9670;&nbsp;</a></span>YeetRigidbody()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::YeetRigidbody </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a>&#160;</td>\n          <td class=\"paramname\"><em>rigidbody</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab0d01da7b5dffd60aeb55dce7bb92694\" name=\"ab0d01da7b5dffd60aeb55dce7bb92694\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0d01da7b5dffd60aeb55dce7bb92694\">&#9670;&nbsp;</a></span>YeetTrigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Physics::API::YeetTrigger </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>&#160;</td>\n          <td class=\"paramname\"><em>trigger</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a7fe1815cf77d8668e3eb109f279d1681\" name=\"a7fe1815cf77d8668e3eb109f279d1681\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7fe1815cf77d8668e3eb109f279d1681\">&#9670;&nbsp;</a></span>rigidbody_metadata_pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a> &gt; tram::Physics::API::rigidbody_metadata_pool(&quot;RigidbodyMetadata pool&quot;, RIGIDBODY_LIMIT) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;RigidbodyMetadata pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a\">RIGIDBODY_LIMIT</a>&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_physics_1_1_bullet.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::Bullet Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">Bullet</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::Bullet Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_platform.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Platform Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">Platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Platform Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform_1_1_input\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\">Input</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_platform_1_1_input\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" title=\"Input backend API.\">Input</a> backend API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform_1_1_window\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html\">Window</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_platform_1_1_window\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Windowing backend API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">SaveImageToDisk</a> (const char *name, int w, int h, const char *image)</td></tr>\n<tr class=\"memdesc:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Saves image to disk.  <a href=\"namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">More...</a><br /></td></tr>\n<tr class=\"separator:a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">TryDebugging</a> ()</td></tr>\n<tr class=\"memdesc:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Attempts to break into debugger.  <a href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">More...</a><br /></td></tr>\n<tr class=\"separator:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">ShowErrorDialog</a> (const char *message, const char *title)</td></tr>\n<tr class=\"separator:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13e3e0fd03175cb1a3fcab404e3f0ef5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5\">SetScale</a> (int s)</td></tr>\n<tr class=\"separator:a13e3e0fd03175cb1a3fcab404e3f0ef5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ac2ffb1c1eceb5cc52cb771ab6f1f0b26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26\">current_monitor</a> = 0</td></tr>\n<tr class=\"separator:ac2ffb1c1eceb5cc52cb771ab6f1f0b26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f880cc4d19fcc8b45f2405afe847765\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765\">is_fullscreen</a> = false</td></tr>\n<tr class=\"separator:a6f880cc4d19fcc8b45f2405afe847765\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a45688259010e30ccfd694bf81f4abc99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99\">vsync</a> = true</td></tr>\n<tr class=\"separator:a45688259010e30ccfd694bf81f4abc99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a62f1df4ce7fc6c46cd5cf3d348d1ac5d\" name=\"a62f1df4ce7fc6c46cd5cf3d348d1ac5d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62f1df4ce7fc6c46cd5cf3d348d1ac5d\">&#9670;&nbsp;</a></span>SaveImageToDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::SaveImageToDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>image</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Saves image to disk. </p>\n<p >Image needs to be in a RGB 8-bit format. </p>\n\n</div>\n</div>\n<a id=\"a13e3e0fd03175cb1a3fcab404e3f0ef5\" name=\"a13e3e0fd03175cb1a3fcab404e3f0ef5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13e3e0fd03175cb1a3fcab404e3f0ef5\">&#9670;&nbsp;</a></span>SetScale()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::SetScale </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>s</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43ffc908587bc0a0680d4e923bf6fb54\" name=\"a43ffc908587bc0a0680d4e923bf6fb54\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43ffc908587bc0a0680d4e923bf6fb54\">&#9670;&nbsp;</a></span>ShowErrorDialog()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::ShowErrorDialog </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>message</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>title</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abafedf61de1bb3dc299c601f678ca6d5\" name=\"abafedf61de1bb3dc299c601f678ca6d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abafedf61de1bb3dc299c601f678ca6d5\">&#9670;&nbsp;</a></span>TryDebugging()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::TryDebugging </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Attempts to break into debugger. </p>\n<p >This function will try to determine if the program is being debugged, and if it is, then it will break into debugger. If it isn't being debugged, it will do nothing. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ac2ffb1c1eceb5cc52cb771ab6f1f0b26\" name=\"ac2ffb1c1eceb5cc52cb771ab6f1f0b26\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2ffb1c1eceb5cc52cb771ab6f1f0b26\">&#9670;&nbsp;</a></span>current_monitor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Platform::current_monitor = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6f880cc4d19fcc8b45f2405afe847765\" name=\"a6f880cc4d19fcc8b45f2405afe847765\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f880cc4d19fcc8b45f2405afe847765\">&#9670;&nbsp;</a></span>is_fullscreen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::is_fullscreen = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a45688259010e30ccfd694bf81f4abc99\" name=\"a45688259010e30ccfd694bf81f4abc99\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45688259010e30ccfd694bf81f4abc99\">&#9670;&nbsp;</a></span>vsync</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::vsync = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_platform_1_1_input.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Platform::Input Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">Platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\">Input</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Platform::Input Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" title=\"Input backend API.\">Input</a> backend API.  \n<a href=\"namespacetram_1_1_platform_1_1_input.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">Init</a> ()</td></tr>\n<tr class=\"separator:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">Update</a> ()</td></tr>\n<tr class=\"separator:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">Uninit</a> ()</td></tr>\n<tr class=\"separator:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" title=\"Input backend API.\">Input</a> backend API. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a34c539a00c1e5228b2ee9d9f69de5af8\" name=\"a34c539a00c1e5228b2ee9d9f69de5af8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34c539a00c1e5228b2ee9d9f69de5af8\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5206ed605c69006a0d6ad1b2dafb2a80\" name=\"a5206ed605c69006a0d6ad1b2dafb2a80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5206ed605c69006a0d6ad1b2dafb2a80\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8d6af6713f2e6c053cacfaab7e628438\" name=\"a8d6af6713f2e6c053cacfaab7e628438\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6af6713f2e6c053cacfaab7e628438\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_platform_1_1_window.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Platform::Window Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">Platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html\">Window</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Platform::Window Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Windowing backend API.  \n<a href=\"namespacetram_1_1_platform_1_1_window.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a1ed03f0da21527169589f581e55c881f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">CursorType</a> { <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">CURSOR_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">CURSOR_TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">CURSOR_CLICK</a>\n }</td></tr>\n<tr class=\"separator:a1ed03f0da21527169589f581e55c881f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:af03eb6bcb74b8f5ac5fe208c82c7e7b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">Init</a> ()</td></tr>\n<tr class=\"separator:af03eb6bcb74b8f5ac5fe208c82c7e7b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed5c879e7890030c7db2b6a03949f39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">Update</a> ()</td></tr>\n<tr class=\"separator:aaed5c879e7890030c7db2b6a03949f39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a573de0dcedb42bb3fc34a010d3cbff38\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">Uninit</a> ()</td></tr>\n<tr class=\"separator:a573de0dcedb42bb3fc34a010d3cbff38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c20800318f5aa9b5d9b8a357c20e7e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">SetTitle</a> (const char *)</td></tr>\n<tr class=\"separator:a9c20800318f5aa9b5d9b8a357c20e7e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af936ef79e15427ab64724cb9c0b102d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">SetSize</a> (int w, int h)</td></tr>\n<tr class=\"separator:af936ef79e15427ab64724cb9c0b102d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8f96fbc1d628f67ed4301d47d67120a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">SetCursor</a> (<a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">CursorType</a>)</td></tr>\n<tr class=\"separator:af8f96fbc1d628f67ed4301d47d67120a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeadcf3d1d5fbf11485b74214f091819e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">SetCursorPosition</a> (float x, float y)</td></tr>\n<tr class=\"separator:aeadcf3d1d5fbf11485b74214f091819e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2079845fb32cb1e0a7a65742f381a567\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">EnableCursor</a> ()</td></tr>\n<tr class=\"separator:a2079845fb32cb1e0a7a65742f381a567\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4172bf310d20904476bbdd69dedc2947\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">DisableCursor</a> ()</td></tr>\n<tr class=\"separator:a4172bf310d20904476bbdd69dedc2947\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7000ba82ae8a78716a4d46451b7e3fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">SetScale</a> (int s)</td></tr>\n<tr class=\"separator:ad7000ba82ae8a78716a4d46451b7e3fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25eea05c5898d99a27460394bc17ee92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">GetTime</a> ()</td></tr>\n<tr class=\"separator:a25eea05c5898d99a27460394bc17ee92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a71748e1f64a454dc9b47260b67b035\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">GetCurrentMonitor</a> ()</td></tr>\n<tr class=\"separator:a3a71748e1f64a454dc9b47260b67b035\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a254ec949eaaef45870d59c02a4c35381\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">GetMonitorCount</a> ()</td></tr>\n<tr class=\"separator:a254ec949eaaef45870d59c02a4c35381\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58daaf85f6e0870b9bcdb2a443356213\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">SetMonitor</a> (int monitor)</td></tr>\n<tr class=\"separator:a58daaf85f6e0870b9bcdb2a443356213\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a283d6de486d8c8808e78da64f2a4667e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">IsFullscreen</a> ()</td></tr>\n<tr class=\"separator:a283d6de486d8c8808e78da64f2a4667e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a225b179d574437d4573c016bfeed7fe4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">SetFullscreen</a> (bool)</td></tr>\n<tr class=\"separator:a225b179d574437d4573c016bfeed7fe4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f0dc2c949f69dbde94b216e53d26797\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">IsVsync</a> ()</td></tr>\n<tr class=\"separator:a5f0dc2c949f69dbde94b216e53d26797\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf3bd7faf17dc6100dd061c8aa1bfaa4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">SetVsync</a> (bool)</td></tr>\n<tr class=\"separator:adf3bd7faf17dc6100dd061c8aa1bfaa4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a767093572b3a28a3c4c3bb86c9f2fdaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">IsRawInput</a> ()</td></tr>\n<tr class=\"separator:a767093572b3a28a3c4c3bb86c9f2fdaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2fd499590eebaf0a891068d1bac9945\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">SetRawInput</a> (bool)</td></tr>\n<tr class=\"separator:aa2fd499590eebaf0a891068d1bac9945\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9cb305ebdf39acfb85f04ef54d867703\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">IsRenderContextThread</a> ()</td></tr>\n<tr class=\"separator:a9cb305ebdf39acfb85f04ef54d867703\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Windowing backend API. </p>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a1ed03f0da21527169589f581e55c881f\" name=\"a1ed03f0da21527169589f581e55c881f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ed03f0da21527169589f581e55c881f\">&#9670;&nbsp;</a></span>CursorType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">tram::Platform::Window::CursorType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\" name=\"a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\"></a>CURSOR_DEFAULT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\" name=\"a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\"></a>CURSOR_TEXT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\" name=\"a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\"></a>CURSOR_CLICK&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a4172bf310d20904476bbdd69dedc2947\" name=\"a4172bf310d20904476bbdd69dedc2947\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4172bf310d20904476bbdd69dedc2947\">&#9670;&nbsp;</a></span>DisableCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::DisableCursor </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2079845fb32cb1e0a7a65742f381a567\" name=\"a2079845fb32cb1e0a7a65742f381a567\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2079845fb32cb1e0a7a65742f381a567\">&#9670;&nbsp;</a></span>EnableCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::EnableCursor </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a71748e1f64a454dc9b47260b67b035\" name=\"a3a71748e1f64a454dc9b47260b67b035\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a71748e1f64a454dc9b47260b67b035\">&#9670;&nbsp;</a></span>GetCurrentMonitor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Platform::Window::GetCurrentMonitor </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a254ec949eaaef45870d59c02a4c35381\" name=\"a254ec949eaaef45870d59c02a4c35381\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a254ec949eaaef45870d59c02a4c35381\">&#9670;&nbsp;</a></span>GetMonitorCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Platform::Window::GetMonitorCount </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25eea05c5898d99a27460394bc17ee92\" name=\"a25eea05c5898d99a27460394bc17ee92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25eea05c5898d99a27460394bc17ee92\">&#9670;&nbsp;</a></span>GetTime()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Platform::Window::GetTime </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af03eb6bcb74b8f5ac5fe208c82c7e7b5\" name=\"af03eb6bcb74b8f5ac5fe208c82c7e7b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a283d6de486d8c8808e78da64f2a4667e\" name=\"a283d6de486d8c8808e78da64f2a4667e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a283d6de486d8c8808e78da64f2a4667e\">&#9670;&nbsp;</a></span>IsFullscreen()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::Window::IsFullscreen </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a767093572b3a28a3c4c3bb86c9f2fdaa\" name=\"a767093572b3a28a3c4c3bb86c9f2fdaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a767093572b3a28a3c4c3bb86c9f2fdaa\">&#9670;&nbsp;</a></span>IsRawInput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::Window::IsRawInput </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9cb305ebdf39acfb85f04ef54d867703\" name=\"a9cb305ebdf39acfb85f04ef54d867703\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cb305ebdf39acfb85f04ef54d867703\">&#9670;&nbsp;</a></span>IsRenderContextThread()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::Window::IsRenderContextThread </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f0dc2c949f69dbde94b216e53d26797\" name=\"a5f0dc2c949f69dbde94b216e53d26797\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f0dc2c949f69dbde94b216e53d26797\">&#9670;&nbsp;</a></span>IsVsync()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Platform::Window::IsVsync </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8f96fbc1d628f67ed4301d47d67120a\" name=\"af8f96fbc1d628f67ed4301d47d67120a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8f96fbc1d628f67ed4301d47d67120a\">&#9670;&nbsp;</a></span>SetCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetCursor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">CursorType</a>&#160;</td>\n          <td class=\"paramname\"><em>cursor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeadcf3d1d5fbf11485b74214f091819e\" name=\"aeadcf3d1d5fbf11485b74214f091819e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeadcf3d1d5fbf11485b74214f091819e\">&#9670;&nbsp;</a></span>SetCursorPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetCursorPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>y</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a225b179d574437d4573c016bfeed7fe4\" name=\"a225b179d574437d4573c016bfeed7fe4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a225b179d574437d4573c016bfeed7fe4\">&#9670;&nbsp;</a></span>SetFullscreen()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetFullscreen </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>fullscreen</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58daaf85f6e0870b9bcdb2a443356213\" name=\"a58daaf85f6e0870b9bcdb2a443356213\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58daaf85f6e0870b9bcdb2a443356213\">&#9670;&nbsp;</a></span>SetMonitor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetMonitor </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>monitor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2fd499590eebaf0a891068d1bac9945\" name=\"aa2fd499590eebaf0a891068d1bac9945\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2fd499590eebaf0a891068d1bac9945\">&#9670;&nbsp;</a></span>SetRawInput()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetRawInput </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>input</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad7000ba82ae8a78716a4d46451b7e3fc\" name=\"ad7000ba82ae8a78716a4d46451b7e3fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7000ba82ae8a78716a4d46451b7e3fc\">&#9670;&nbsp;</a></span>SetScale()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetScale </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>s</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af936ef79e15427ab64724cb9c0b102d2\" name=\"af936ef79e15427ab64724cb9c0b102d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af936ef79e15427ab64724cb9c0b102d2\">&#9670;&nbsp;</a></span>SetSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9c20800318f5aa9b5d9b8a357c20e7e5\" name=\"a9c20800318f5aa9b5d9b8a357c20e7e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c20800318f5aa9b5d9b8a357c20e7e5\">&#9670;&nbsp;</a></span>SetTitle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetTitle </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>title</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf3bd7faf17dc6100dd061c8aa1bfaa4\" name=\"adf3bd7faf17dc6100dd061c8aa1bfaa4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf3bd7faf17dc6100dd061c8aa1bfaa4\">&#9670;&nbsp;</a></span>SetVsync()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::SetVsync </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a573de0dcedb42bb3fc34a010d3cbff38\" name=\"a573de0dcedb42bb3fc34a010d3cbff38\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a573de0dcedb42bb3fc34a010d3cbff38\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaed5c879e7890030c7db2b6a03949f39\" name=\"aaed5c879e7890030c7db2b6a03949f39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaed5c879e7890030c7db2b6a03949f39\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Window::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>.  \n<a href=\"namespacetram_1_1_render.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_light_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">LightTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_light_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene light tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_scene_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_scene_tree.html\">SceneTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_scene_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Skeletal animation for a 3D model.  <a href=\"classtram_1_1_render_1_1_animation.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton.  <a href=\"structtram_1_1_render_1_1_bone.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">BucketMapping</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">DynamicModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation.  <a href=\"structtram_1_1_render_1_1_keyframe.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource.  <a href=\"classtram_1_1_render_1_1_light_graph.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">LineVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\" title=\"Material resource.\">Material</a> resource.  <a href=\"classtram_1_1_render_1_1_material.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">RegisteredVertexDefinition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource.  <a href=\"classtram_1_1_render_1_1_sprite.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">SpritePoint</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">TriangleBucket</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Atributes for vertex buffer vertices.  <a href=\"structtram_1_1_render_1_1_vertex_attribute.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a5c915c417ac6870808de6e5dff23c287\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::pair&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, uint64_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">NameCount</a></td></tr>\n<tr class=\"separator:a5c915c417ac6870808de6e5dff23c287\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a></td></tr>\n<tr class=\"separator:a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92b94ac310d4c8df9a4294518ffd75c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a></td></tr>\n<tr class=\"separator:a92b94ac310d4c8df9a4294518ffd75c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e5691f40b84e848c0d9b19b285bf0e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a></td></tr>\n<tr class=\"separator:a4e5691f40b84e848c0d9b19b285bf0e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8283c1665f7d42c97367d857d43cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a></td></tr>\n<tr class=\"separator:a9be8283c1665f7d42c97367d857d43cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc772ee58f3700260f2f155f334fd6d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a></td></tr>\n<tr class=\"separator:adc772ee58f3700260f2f155f334fd6d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a></td></tr>\n<tr class=\"separator:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:aa55781f294a5a76e9cba54376f45a43f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">MaterialProperty</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\">PROPERTY_METAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\">PROPERTY_METAL_THIN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\">PROPERTY_SLIME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\">PROPERTY_TILE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\">PROPERTY_GRATE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\">PROPERTY_WOOD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\">PROPERTY_COMPUTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\">PROPERTY_GLASS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\">PROPERTY_SNOW</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\">PROPERTY_GRASS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\">PROPERTY_CONCRETE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\">PROPERTY_FLESH</a>\n<br />\n }</td></tr>\n<tr class=\"separator:aa55781f294a5a76e9cba54376f45a43f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae823e9f58d9c8060a531459eec5ff811\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">TextureType</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\">TEXTURE_NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\">TEXTURE_SAME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\">TEXTURE_SOURCE</a>\n }</td></tr>\n<tr class=\"separator:ae823e9f58d9c8060a531459eec5ff811\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55401591f1faf2a435bdb5eb188ad2c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">VertexFormats</a> : vertexformat_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">VERTEX_STATIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">VERTEX_DYNAMIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">VERTEX_SPRITE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">VERTEX_LINE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">VERTEX_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a55401591f1faf2a435bdb5eb188ad2c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a315a4bade1773ce2a425e5e7702c003e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">MaterialTypes</a> : materialtype_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">MATERIAL_TEXTURE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">MATERIAL_TEXTURE_ALPHA</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">MATERIAL_LIGHTMAP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">MATERIAL_ENVIRONMENTMAP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">MATERIAL_MSDF</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">MATERIAL_GLYPH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">MATERIAL_WATER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">MATERIAL_FLAT_COLOR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">MATERIAL_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a315a4bade1773ce2a425e5e7702c003e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab519c3dc6ead26c1a7695e4c3b5501c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">FILTER_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">FILTER_LINEAR</a>\n }</td></tr>\n<tr class=\"separator:aab519c3dc6ead26c1a7695e4c3b5501c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">renderflags</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">FLAG_NO_RENDER</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">FLAG_RENDER</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">FLAG_DRAW_INDEXED</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">FLAG_REVERSE_SORT</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">FLAG_TRANSPARENT</a> = 16\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">FLAG_NO_DEPTH_TEST</a> = 32\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">FLAG_NO_DIRECTIONAL</a> = 64\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">FLAG_DRAW_LINES</a> = 128\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">FLAG_DISABLE_LIGHTING</a> = 256\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">FLAG_NO_DEBUG</a> = 512\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">FLAG_USE_AABB</a> = 1024\n<br />\n }</td></tr>\n<tr class=\"memdesc:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flags for DrawListObjects.  <a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">More...</a><br /></td></tr>\n<tr class=\"separator:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac973dc59905532e29e79841ae76af894\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">COLORMODE_R</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">COLORMODE_RG</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">COLORMODE_RGB</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">COLORMODE_RGBA</a>\n }</td></tr>\n<tr class=\"memdesc:ac973dc59905532e29e79841ae76af894\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Texture color mode.  <a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">More...</a><br /></td></tr>\n<tr class=\"separator:ac973dc59905532e29e79841ae76af894\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">TEXTUREFILTER_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">TEXTUREFILTER_LINEAR</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">TEXTUREFILTER_LINEAR_MIPMAPPED</a>\n }</td></tr>\n<tr class=\"memdesc:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Texture filters.  <a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a7dd412c7626de34a2b2e4fd4d750dd4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a\">animation_list</a> (&quot;model name list&quot;, 500)</td></tr>\n<tr class=\"separator:a7dd412c7626de34a2b2e4fd4d750dd4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">MakeNewErrorTexture</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color1, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color2)</td></tr>\n<tr class=\"memdesc:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error texture.  <a href=\"namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37\">More...</a><br /></td></tr>\n<tr class=\"separator:a1ebeba7bcc783c32d08b2948d2640a37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">MakeNewErrorModel</a> ()</td></tr>\n<tr class=\"memdesc:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generates a new error model.  <a href=\"namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e\">More...</a><br /></td></tr>\n<tr class=\"separator:a7e7fe9a01e4909b61222ad2214175b8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the rendering system.  <a href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">More...</a><br /></td></tr>\n<tr class=\"separator:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5862ead09843f2489307cec433956d17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">Render</a> ()</td></tr>\n<tr class=\"memdesc:a5862ead09843f2489307cec433956d17\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Renders a single frame.  <a href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">More...</a><br /></td></tr>\n<tr class=\"separator:a5862ead09843f2489307cec433956d17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a542bb444bfd6387612406c107509bbff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">SetSunDirection</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> direction, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a542bb444bfd6387612406c107509bbff\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun direction.  <a href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">More...</a><br /></td></tr>\n<tr class=\"separator:a542bb444bfd6387612406c107509bbff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">SetSunColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a8804912a4838fc7b29819738b86f2b68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun color.  <a href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">More...</a><br /></td></tr>\n<tr class=\"separator:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">SetAmbientColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the ambient color.  <a href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">More...</a><br /></td></tr>\n<tr class=\"separator:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">SetViewFov</a> (float fov, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">GetViewFov</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa988a06a114b75baae33e244628ecd32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">SetOrthoRatio</a> (float ratio, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:aa988a06a114b75baae33e244628ecd32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">SetViewDistance</a> (float dist, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">GetViewDistance</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">SetViewPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view position.  <a href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">More...</a><br /></td></tr>\n<tr class=\"separator:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">SetViewRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view rotation.  <a href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">More...</a><br /></td></tr>\n<tr class=\"separator:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">GetViewPosition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view position for a given layer.  <a href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">More...</a><br /></td></tr>\n<tr class=\"separator:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">GetViewRotation</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view rotation for a given layer.  <a href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">More...</a><br /></td></tr>\n<tr class=\"separator:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">AddLine</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a line for a single frame.  <a href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">AddLineMarker</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cross marker for a single frame.  <a href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">More...</a><br /></td></tr>\n<tr class=\"separator:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">AddLineAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> center, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws an <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> box for a single frame.  <a href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">AddSphere</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a sphere for a single frame.  <a href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">More...</a><br /></td></tr>\n<tr class=\"separator:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">AddCylinder</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cylinder for a single frame.  <a href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">More...</a><br /></td></tr>\n<tr class=\"separator:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">AddCube</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cube for a single frame.  <a href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">More...</a><br /></td></tr>\n<tr class=\"separator:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">AddText</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:acb324f6e78d295296dd65efb3d3071af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, in 3D space, for a single frame.  <a href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">More...</a><br /></td></tr>\n<tr class=\"separator:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">AddText</a> (float x, float y, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, on the screen, for a single frame.  <a href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">More...</a><br /></td></tr>\n<tr class=\"separator:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">Project</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;point, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;result, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point into screen coordinates.  <a href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">More...</a><br /></td></tr>\n<tr class=\"separator:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe4a18573155f61186484e55955c6dac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">ProjectInverse</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:afe4a18573155f61186484e55955c6dac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reverses screen coordinates into world coordinates.  <a href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">More...</a><br /></td></tr>\n<tr class=\"separator:afe4a18573155f61186484e55955c6dac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">RegisterVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new vertex format.  <a href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">More...</a><br /></td></tr>\n<tr class=\"separator:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">RegisterMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new material type.  <a href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">More...</a><br /></td></tr>\n<tr class=\"separator:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">FindVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already allocated vertex format by its name.  <a href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">More...</a><br /></td></tr>\n<tr class=\"separator:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">FindMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already material type format by its name.  <a href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">More...</a><br /></td></tr>\n<tr class=\"separator:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">GetVertexFormatName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> type)</td></tr>\n<tr class=\"memdesc:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated vertex format's name.  <a href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">More...</a><br /></td></tr>\n<tr class=\"separator:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">GetMaterialTypeName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type)</td></tr>\n<tr class=\"memdesc:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated material type's name.  <a href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">More...</a><br /></td></tr>\n<tr class=\"separator:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b0b62b8ab1781496fd3a2ac86eaa7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">COLOR_WHITE</a> (1.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:ac3b0b62b8ab1781496fd3a2ac86eaa7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d207aeb8d3bd302970a0ce72b15f98a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">COLOR_RED</a> (1.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a3d207aeb8d3bd302970a0ce72b15f98a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46842a211bc249ada03b3879ee9e7d61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">COLOR_GREEN</a> (0.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:a46842a211bc249ada03b3879ee9e7d61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2545e14772852a87dae9066123c2646\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">COLOR_BLUE</a> (0.0f, 0.0f, 1.0f)</td></tr>\n<tr class=\"separator:ac2545e14772852a87dae9066123c2646\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a528da7221f08fab1b6d5e3b3cacdb8fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">COLOR_YELLOW</a> (1.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:a528da7221f08fab1b6d5e3b3cacdb8fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa08fcc8a83e73c8896423742971d97fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">COLOR_PINK</a> (1.0f, 0.0f, 1.0f)</td></tr>\n<tr class=\"separator:aa08fcc8a83e73c8896423742971d97fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bece9ac513eed3675e8fc05dde16e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">COLOR_CYAN</a> (0.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:a9bece9ac513eed3675e8fc05dde16e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1881266fc3e4ccfe6161b9f53816c1b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">COLOR_BLACK</a> (0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a1881266fc3e4ccfe6161b9f53816c1b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38f1da44cef9b7d17113d9204723e561\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">COLOR_GRAY</a> (0.3f, 0.3f, 0.3f)</td></tr>\n<tr class=\"separator:a38f1da44cef9b7d17113d9204723e561\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">RegisterVertexDefinition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> definition)</td></tr>\n<tr class=\"memdesc:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> for a specified vertex format.  <a href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">More...</a><br /></td></tr>\n<tr class=\"separator:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">GetVertexDefinition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format)</td></tr>\n<tr class=\"memdesc:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns a previously registered <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>.  <a href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">More...</a><br /></td></tr>\n<tr class=\"separator:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a4241295a3e7f28b70cfc9a4fa831903d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a>&lt; uint8_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d\">animation_pool</a> (&quot;animation keyframe pool&quot;, 1024 *1024)</td></tr>\n<tr class=\"separator:a4241295a3e7f28b70cfc9a4fa831903d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4355f7ab257050d67eb34b6c95b58e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">BONE_COUNT</a> = 30</td></tr>\n<tr class=\"separator:ae4355f7ab257050d67eb34b6c95b58e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memItemLeft\" >struct {</td></tr>\n<tr class=\"memitem:a87b0b9402269620f2b80dde0e2cd53e8\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349\">tram::Render::view_position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a87b0b9402269620f2b80dde0e2cd53e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa4d893130e516140f4ef9f4d5844d65\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6\">tram::Render::view_rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:afa4d893130e516140f4ef9f4d5844d65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd431247589cdc68ef85071dec58aeae\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c\">tram::Render::view_fov</a> = 60.0f</td></tr>\n<tr class=\"separator:abd431247589cdc68ef85071dec58aeae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3c8ef8c67b2f38e5bf818ac7e45360f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f\">tram::Render::near_plane</a> = 0.01f</td></tr>\n<tr class=\"separator:aa3c8ef8c67b2f38e5bf818ac7e45360f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a741d2c3356cec6d5db9866f3830469c0\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82\">tram::Render::far_plane</a> = 750.0f</td></tr>\n<tr class=\"separator:a741d2c3356cec6d5db9866f3830469c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a144aec877b43217c3eeb643723ea5e43\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d\">tram::Render::ortho_ratio</a> = 1.0f</td></tr>\n<tr class=\"separator:a144aec877b43217c3eeb643723ea5e43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb43ec7b0edb251e745a048d144d4c97\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">tram::Render::sun_direction</a> = {0.0f, 1.0f, 0.0f}</td></tr>\n<tr class=\"separator:abb43ec7b0edb251e745a048d144d4c97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac808bdbb303e366f3ed0f374d9b8a668\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">tram::Render::sun_color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:ac808bdbb303e366f3ed0f374d9b8a668\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53037f65626c0c910603020c68c366a2\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">tram::Render::ambient_color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a53037f65626c0c910603020c68c366a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab65c325fbdda913dc13ad3ec1973b625\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc\">tram::Render::projection</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ab65c325fbdda913dc13ad3ec1973b625\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8860c14959b5f987feba80c50a88f42\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc\">tram::Render::view</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ac8860c14959b5f987feba80c50a88f42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memItemLeft\" valign=\"top\">}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57\">view_properties</a> [7]</td></tr>\n<tr class=\"separator:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c04f6971cbc222d951bd80fb9fb56b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9\">THIRD_PERSON</a> = false</td></tr>\n<tr class=\"separator:a8c04f6971cbc222d951bd80fb9fb56b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0328476aed6f9a79b37ead38c539d30b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b\">DRAW_RENDER_DEBUG</a> = false</td></tr>\n<tr class=\"separator:a0328476aed6f9a79b37ead38c539d30b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56939aaf0348435b0e53119c4df5ce6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f\">colorlines_vertex_array</a> = {}</td></tr>\n<tr class=\"separator:a56939aaf0348435b0e53119c4df5ce6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdc87f9f25286c1ac68113e173db9c65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65\">colorlines_entry</a></td></tr>\n<tr class=\"separator:afdc87f9f25286c1ac68113e173db9c65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5acbc59557fb9733ae605596cb9ab4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4\">debugtext_vertex_array</a> = {}</td></tr>\n<tr class=\"separator:aef5acbc59557fb9733ae605596cb9ab4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e1e2410b7586fbd9fcc9ac537f6b58c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c\">debugtext_entry</a></td></tr>\n<tr class=\"separator:a2e1e2410b7586fbd9fcc9ac537f6b58c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02ef1036594289bf19ebfa9927708a5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d\">font_debug</a> = nullptr</td></tr>\n<tr class=\"separator:a02ef1036594289bf19ebfa9927708a5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fbef4fea80d616dcb5ca311f69e32d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6\">colorlines</a></td></tr>\n<tr class=\"separator:a4fbef4fea80d616dcb5ca311f69e32d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbf7d35ffc1fe3624a48655681f07209\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209\">textvertices</a></td></tr>\n<tr class=\"separator:acbf7d35ffc1fe3624a48655681f07209\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. </p>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"ab19b566afd13e36e1b377bd19adab144\" name=\"ab19b566afd13e36e1b377bd19adab144\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab19b566afd13e36e1b377bd19adab144\">&#9670;&nbsp;</a></span>aabbleaf_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef void* <a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render::aabbleaf_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32fb4b5bd9e12e48f08e6ff4ce8817b8\" name=\"a32fb4b5bd9e12e48f08e6ff4ce8817b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">&#9670;&nbsp;</a></span>color_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92b94ac310d4c8df9a4294518ffd75c8\" name=\"a92b94ac310d4c8df9a4294518ffd75c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92b94ac310d4c8df9a4294518ffd75c8\">&#9670;&nbsp;</a></span>layer_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render::layer_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9be8283c1665f7d42c97367d857d43cc\" name=\"a9be8283c1665f7d42c97367d857d43cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9be8283c1665f7d42c97367d857d43cc\">&#9670;&nbsp;</a></span>materialtype_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c915c417ac6870808de6e5dff23c287\" name=\"a5c915c417ac6870808de6e5dff23c287\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c915c417ac6870808de6e5dff23c287\">&#9670;&nbsp;</a></span>NameCount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef std::pair&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, uint64_t&gt; <a class=\"el\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">tram::Render::NameCount</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adc772ee58f3700260f2f155f334fd6d5\" name=\"adc772ee58f3700260f2f155f334fd6d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc772ee58f3700260f2f155f334fd6d5\">&#9670;&nbsp;</a></span>sphericalharmonic_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> <a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render::sphericalharmonic_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e5691f40b84e848c0d9b19b285bf0e2\" name=\"a4e5691f40b84e848c0d9b19b285bf0e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e5691f40b84e848c0d9b19b285bf0e2\">&#9670;&nbsp;</a></span>vertexformat_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"ac973dc59905532e29e79841ae76af894\" name=\"ac973dc59905532e29e79841ae76af894\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac973dc59905532e29e79841ae76af894\">&#9670;&nbsp;</a></span>ColorMode</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render::ColorMode</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Texture color mode. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\" name=\"ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\"></a>COLORMODE_R&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\" name=\"ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\"></a>COLORMODE_RG&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\" name=\"ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\"></a>COLORMODE_RGB&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\" name=\"ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\"></a>COLORMODE_RGBA&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aab519c3dc6ead26c1a7695e4c3b5501c\" name=\"aab519c3dc6ead26c1a7695e4c3b5501c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab519c3dc6ead26c1a7695e4c3b5501c\">&#9670;&nbsp;</a></span>MaterialFilter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render::MaterialFilter</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\" name=\"aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\"></a>FILTER_NEAREST&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\" name=\"aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\"></a>FILTER_LINEAR&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aa55781f294a5a76e9cba54376f45a43f\" name=\"aa55781f294a5a76e9cba54376f45a43f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa55781f294a5a76e9cba54376f45a43f\">&#9670;&nbsp;</a></span>MaterialProperty</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f\">tram::Render::MaterialProperty</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\" name=\"aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96\"></a>PROPERTY_METAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\" name=\"aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7\"></a>PROPERTY_METAL_THIN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\" name=\"aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119\"></a>PROPERTY_SLIME&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\" name=\"aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9\"></a>PROPERTY_TILE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\" name=\"aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65\"></a>PROPERTY_GRATE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\" name=\"aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b\"></a>PROPERTY_WOOD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\" name=\"aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8\"></a>PROPERTY_COMPUTER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\" name=\"aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a\"></a>PROPERTY_GLASS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\" name=\"aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86\"></a>PROPERTY_SNOW&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\" name=\"aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f\"></a>PROPERTY_GRASS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\" name=\"aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126\"></a>PROPERTY_CONCRETE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\" name=\"aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4\"></a>PROPERTY_FLESH&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a315a4bade1773ce2a425e5e7702c003e\" name=\"a315a4bade1773ce2a425e5e7702c003e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a315a4bade1773ce2a425e5e7702c003e\">&#9670;&nbsp;</a></span>MaterialTypes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">tram::Render::MaterialTypes</a> : <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\" name=\"a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\"></a>MATERIAL_TEXTURE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\" name=\"a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\"></a>MATERIAL_TEXTURE_ALPHA&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\" name=\"a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\"></a>MATERIAL_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\" name=\"a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\"></a>MATERIAL_ENVIRONMENTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\" name=\"a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\"></a>MATERIAL_MSDF&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\" name=\"a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\"></a>MATERIAL_GLYPH&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\" name=\"a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\"></a>MATERIAL_WATER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\" name=\"a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\"></a>MATERIAL_FLAT_COLOR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\" name=\"a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\"></a>MATERIAL_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9c\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac048699f6dc8dc5b8681c8aa3ac65d9c\">&#9670;&nbsp;</a></span>renderflags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">tram::Render::renderflags</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Flags for DrawListObjects. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\"></a>FLAG_NO_RENDER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\"></a>FLAG_RENDER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\"></a>FLAG_DRAW_INDEXED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\"></a>FLAG_REVERSE_SORT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\"></a>FLAG_TRANSPARENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\"></a>FLAG_NO_DEPTH_TEST&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\"></a>FLAG_NO_DIRECTIONAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\"></a>FLAG_DRAW_LINES&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\"></a>FLAG_DISABLE_LIGHTING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\"></a>FLAG_NO_DEBUG&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\" name=\"ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\"></a>FLAG_USE_AABB&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ad3c2cb5af20e13497cc81f62d22b430c\" name=\"ad3c2cb5af20e13497cc81f62d22b430c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3c2cb5af20e13497cc81f62d22b430c\">&#9670;&nbsp;</a></span>TextureFilter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render::TextureFilter</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Texture filters. </p>\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\" name=\"ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\"></a>TEXTUREFILTER_NEAREST&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\" name=\"ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\"></a>TEXTUREFILTER_LINEAR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\" name=\"ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\"></a>TEXTUREFILTER_LINEAR_MIPMAPPED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"ae823e9f58d9c8060a531459eec5ff811\" name=\"ae823e9f58d9c8060a531459eec5ff811\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae823e9f58d9c8060a531459eec5ff811\">&#9670;&nbsp;</a></span>TextureType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811\">tram::Render::TextureType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\" name=\"ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b\"></a>TEXTURE_NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\" name=\"ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043\"></a>TEXTURE_SAME&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\" name=\"ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863\"></a>TEXTURE_SOURCE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a55401591f1faf2a435bdb5eb188ad2c8\" name=\"a55401591f1faf2a435bdb5eb188ad2c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55401591f1faf2a435bdb5eb188ad2c8\">&#9670;&nbsp;</a></span>VertexFormats</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">tram::Render::VertexFormats</a> : <a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\" name=\"a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\"></a>VERTEX_STATIC&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\" name=\"a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\"></a>VERTEX_DYNAMIC&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\" name=\"a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\"></a>VERTEX_SPRITE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\" name=\"a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\"></a>VERTEX_LINE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\" name=\"a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\"></a>VERTEX_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a80ac9a1f629a048bc89f3a816783db87\" name=\"a80ac9a1f629a048bc89f3a816783db87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80ac9a1f629a048bc89f3a816783db87\">&#9670;&nbsp;</a></span>AddCube()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddCube </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a cube for a single frame. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>Not implmented. </dd></dl>\n\n</div>\n</div>\n<a id=\"a504da26659f9ff6e512e052ccd974ce8\" name=\"a504da26659f9ff6e512e052ccd974ce8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a504da26659f9ff6e512e052ccd974ce8\">&#9670;&nbsp;</a></span>AddCylinder()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddCylinder </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a cylinder for a single frame. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>Not implmented. </dd></dl>\n\n</div>\n</div>\n<a id=\"aaf8ef81eae0da772762ff835a3a24536\" name=\"aaf8ef81eae0da772762ff835a3a24536\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf8ef81eae0da772762ff835a3a24536\">&#9670;&nbsp;</a></span>AddLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddLine </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>from</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>to</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a line for a single frame. </p>\n\n</div>\n</div>\n<a id=\"aa2585f6dc9fbeddf62db686a5dbafbea\" name=\"aa2585f6dc9fbeddf62db686a5dbafbea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2585f6dc9fbeddf62db686a5dbafbea\">&#9670;&nbsp;</a></span>AddLineAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddLineAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>center</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws an <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> box for a single frame. </p>\n\n</div>\n</div>\n<a id=\"ae5ab2f07c068f59f0ded62a742e05fdf\" name=\"ae5ab2f07c068f59f0ded62a742e05fdf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5ab2f07c068f59f0ded62a742e05fdf\">&#9670;&nbsp;</a></span>AddLineMarker()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddLineMarker </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a cross marker for a single frame. </p>\n\n</div>\n</div>\n<a id=\"ac8426b2175dd44cfee749c08ae81583c\" name=\"ac8426b2175dd44cfee749c08ae81583c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8426b2175dd44cfee749c08ae81583c\">&#9670;&nbsp;</a></span>AddSphere()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddSphere </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws a sphere for a single frame. </p>\n\n</div>\n</div>\n<a id=\"af0419e9b99eb8d74ca41fd30f32e3e13\" name=\"af0419e9b99eb8d74ca41fd30f32e3e13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0419e9b99eb8d74ca41fd30f32e3e13\">&#9670;&nbsp;</a></span>AddText() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddText </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws text, on the screen, for a single frame. </p>\n\n</div>\n</div>\n<a id=\"acb324f6e78d295296dd65efb3d3071af\" name=\"acb324f6e78d295296dd65efb3d3071af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb324f6e78d295296dd65efb3d3071af\">&#9670;&nbsp;</a></span>AddText() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AddText </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>text</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws text, in 3D space, for a single frame. </p>\n\n</div>\n</div>\n<a id=\"a7dd412c7626de34a2b2e4fd4d750dd4a\" name=\"a7dd412c7626de34a2b2e4fd4d750dd4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7dd412c7626de34a2b2e4fd4d750dd4a\">&#9670;&nbsp;</a></span>animation_list()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> * &gt; tram::Render::animation_list </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;model name list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">500&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1881266fc3e4ccfe6161b9f53816c1b4\" name=\"a1881266fc3e4ccfe6161b9f53816c1b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1881266fc3e4ccfe6161b9f53816c1b4\">&#9670;&nbsp;</a></span>COLOR_BLACK()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_BLACK </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac2545e14772852a87dae9066123c2646\" name=\"ac2545e14772852a87dae9066123c2646\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2545e14772852a87dae9066123c2646\">&#9670;&nbsp;</a></span>COLOR_BLUE()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_BLUE </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9bece9ac513eed3675e8fc05dde16e2c\" name=\"a9bece9ac513eed3675e8fc05dde16e2c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9bece9ac513eed3675e8fc05dde16e2c\">&#9670;&nbsp;</a></span>COLOR_CYAN()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_CYAN </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38f1da44cef9b7d17113d9204723e561\" name=\"a38f1da44cef9b7d17113d9204723e561\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38f1da44cef9b7d17113d9204723e561\">&#9670;&nbsp;</a></span>COLOR_GRAY()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_GRAY </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>3f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>3f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>3f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46842a211bc249ada03b3879ee9e7d61\" name=\"a46842a211bc249ada03b3879ee9e7d61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46842a211bc249ada03b3879ee9e7d61\">&#9670;&nbsp;</a></span>COLOR_GREEN()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_GREEN </td>\n          <td>(</td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa08fcc8a83e73c8896423742971d97fd\" name=\"aa08fcc8a83e73c8896423742971d97fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa08fcc8a83e73c8896423742971d97fd\">&#9670;&nbsp;</a></span>COLOR_PINK()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_PINK </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3d207aeb8d3bd302970a0ce72b15f98a\" name=\"a3d207aeb8d3bd302970a0ce72b15f98a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d207aeb8d3bd302970a0ce72b15f98a\">&#9670;&nbsp;</a></span>COLOR_RED()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_RED </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3b0b62b8ab1781496fd3a2ac86eaa7a\" name=\"ac3b0b62b8ab1781496fd3a2ac86eaa7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">&#9670;&nbsp;</a></span>COLOR_WHITE()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_WHITE </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a528da7221f08fab1b6d5e3b3cacdb8fc\" name=\"a528da7221f08fab1b6d5e3b3cacdb8fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a528da7221f08fab1b6d5e3b3cacdb8fc\">&#9670;&nbsp;</a></span>COLOR_YELLOW()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> tram::Render::COLOR_YELLOW </td>\n          <td>(</td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">0.&#160;</td>\n          <td class=\"paramname\"><em>0f</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94a9ceb0462c8a24b1912ffd179c33f7\" name=\"a94a9ceb0462c8a24b1912ffd179c33f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94a9ceb0462c8a24b1912ffd179c33f7\">&#9670;&nbsp;</a></span>FindMaterialType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::FindMaterialType </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds an already material type format by its name. </p>\n\n</div>\n</div>\n<a id=\"a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\" name=\"a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">&#9670;&nbsp;</a></span>FindVertexFormat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::FindVertexFormat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds an already allocated vertex format by its name. </p>\n\n</div>\n</div>\n<a id=\"a0356f2f33a144760b168fbc84d5c1931\" name=\"a0356f2f33a144760b168fbc84d5c1931\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0356f2f33a144760b168fbc84d5c1931\">&#9670;&nbsp;</a></span>GetMaterialTypeName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::Render::GetMaterialTypeName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds an allocated material type's name. </p>\n\n</div>\n</div>\n<a id=\"ae7cb3ec82d35f3a4b5bf4fbb7f15a429\" name=\"ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">&#9670;&nbsp;</a></span>GetVertexDefinition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> tram::Render::GetVertexDefinition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns a previously registered <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>. </p>\n\n</div>\n</div>\n<a id=\"ac38b6a74526f6b0bcc15fb23dbc965b6\" name=\"ac38b6a74526f6b0bcc15fb23dbc965b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac38b6a74526f6b0bcc15fb23dbc965b6\">&#9670;&nbsp;</a></span>GetVertexFormatName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::Render::GetVertexFormatName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds an allocated vertex format's name. </p>\n\n</div>\n</div>\n<a id=\"a0a15770929caa8b52620ed6b2cd3f731\" name=\"a0a15770929caa8b52620ed6b2cd3f731\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a15770929caa8b52620ed6b2cd3f731\">&#9670;&nbsp;</a></span>GetViewDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::GetViewDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a91420cfff2ed4a2548d27a0924000187\" name=\"a91420cfff2ed4a2548d27a0924000187\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91420cfff2ed4a2548d27a0924000187\">&#9670;&nbsp;</a></span>GetViewFov()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::GetViewFov </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acfbfc3fc3b9bcc20aba46673364bfa6b\" name=\"acfbfc3fc3b9bcc20aba46673364bfa6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfbfc3fc3b9bcc20aba46673364bfa6b\">&#9670;&nbsp;</a></span>GetViewPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::GetViewPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the view position for a given layer. </p>\n\n</div>\n</div>\n<a id=\"a588afc5ab26e5dea5924df08c70f95bf\" name=\"a588afc5ab26e5dea5924df08c70f95bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a588afc5ab26e5dea5924df08c70f95bf\">&#9670;&nbsp;</a></span>GetViewRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Render::GetViewRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the view rotation for a given layer. </p>\n\n</div>\n</div>\n<a id=\"a432d184f3b358b4f7ee6daf055f9ef74\" name=\"a432d184f3b358b4f7ee6daf055f9ef74\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a432d184f3b358b4f7ee6daf055f9ef74\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Initializes the rendering system. </p>\n<dl class=\"section note\"><dt>Note</dt><dd><a class=\"el\" href=\"namespacetram_1_1_core.html\">Core</a> and <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> systems need to be initialized before initializing the render system. </dd></dl>\n\n</div>\n</div>\n<a id=\"a7e7fe9a01e4909b61222ad2214175b8e\" name=\"a7e7fe9a01e4909b61222ad2214175b8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e7fe9a01e4909b61222ad2214175b8e\">&#9670;&nbsp;</a></span>MakeNewErrorModel()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a> * tram::Render::MakeNewErrorModel </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Generates a new error model. </p>\n\n</div>\n</div>\n<a id=\"a1ebeba7bcc783c32d08b2948d2640a37\" name=\"a1ebeba7bcc783c32d08b2948d2640a37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ebeba7bcc783c32d08b2948d2640a37\">&#9670;&nbsp;</a></span>MakeNewErrorTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t * tram::Render::MakeNewErrorTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Generates a new error texture. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Buffer to a 3 channel, 64x64 texture. </dd></dl>\n\n</div>\n</div>\n<a id=\"a67eb4708222066d5a516c5eff9a14fa7\" name=\"a67eb4708222066d5a516c5eff9a14fa7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67eb4708222066d5a516c5eff9a14fa7\">&#9670;&nbsp;</a></span>Project()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Project </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>point</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>result</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Projects a point into screen coordinates. </p>\n\n</div>\n</div>\n<a id=\"afe4a18573155f61186484e55955c6dac\" name=\"afe4a18573155f61186484e55955c6dac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe4a18573155f61186484e55955c6dac\">&#9670;&nbsp;</a></span>ProjectInverse()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::ProjectInverse </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>point</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Reverses screen coordinates into world coordinates. </p>\n\n</div>\n</div>\n<a id=\"a86482f81f22e15a053cf87bd77b863fa\" name=\"a86482f81f22e15a053cf87bd77b863fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86482f81f22e15a053cf87bd77b863fa\">&#9670;&nbsp;</a></span>RegisterMaterialType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::RegisterMaterialType </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Allocates a new material type. </p>\n\n</div>\n</div>\n<a id=\"a457bd7e3ddb309251cb2cd0ffe1a5b37\" name=\"a457bd7e3ddb309251cb2cd0ffe1a5b37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a457bd7e3ddb309251cb2cd0ffe1a5b37\">&#9670;&nbsp;</a></span>RegisterVertexDefinition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::RegisterVertexDefinition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>definition</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Registers a <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> for a specified vertex format. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>For the <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>'s 'attributes' only the pointer will be copied, the underlying memory will not be copied &ndash; make sure that it doesn't point to stack memory, or other memory that could be overwritten. </dd></dl>\n\n</div>\n</div>\n<a id=\"a4ee55080a07d32caee9f42ce596d7e18\" name=\"a4ee55080a07d32caee9f42ce596d7e18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ee55080a07d32caee9f42ce596d7e18\">&#9670;&nbsp;</a></span>RegisterVertexFormat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::RegisterVertexFormat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Allocates a new vertex format. </p>\n\n</div>\n</div>\n<a id=\"a5862ead09843f2489307cec433956d17\" name=\"a5862ead09843f2489307cec433956d17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5862ead09843f2489307cec433956d17\">&#9670;&nbsp;</a></span>Render()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::Render </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Renders a single frame. </p>\n\n</div>\n</div>\n<a id=\"acb0e80ad32fe24d60dc62e58017b37b2\" name=\"acb0e80ad32fe24d60dc62e58017b37b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb0e80ad32fe24d60dc62e58017b37b2\">&#9670;&nbsp;</a></span>SetAmbientColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetAmbientColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the ambient color. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">color</td><td>Ambient color. </td></tr>\n    <tr><td class=\"paramname\">layer</td><td>Rendering layer to which the ambient color will be applied. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"aa988a06a114b75baae33e244628ecd32\" name=\"aa988a06a114b75baae33e244628ecd32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa988a06a114b75baae33e244628ecd32\">&#9670;&nbsp;</a></span>SetOrthoRatio()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetOrthoRatio </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>ratio</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abcb118a759504ad9bc0993ca69f7231e\" name=\"abcb118a759504ad9bc0993ca69f7231e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcb118a759504ad9bc0993ca69f7231e\">&#9670;&nbsp;</a></span>SetScreenSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetScreenSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8804912a4838fc7b29819738b86f2b68\" name=\"a8804912a4838fc7b29819738b86f2b68\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8804912a4838fc7b29819738b86f2b68\">&#9670;&nbsp;</a></span>SetSunColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetSunColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the sun color. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">color</td><td>Color of the sun. </td></tr>\n    <tr><td class=\"paramname\">layer</td><td>Rendering layer to which the sun color will be applied. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a542bb444bfd6387612406c107509bbff\" name=\"a542bb444bfd6387612406c107509bbff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a542bb444bfd6387612406c107509bbff\">&#9670;&nbsp;</a></span>SetSunDirection()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetSunDirection </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the sun direction. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">direction</td><td>Normal vector pointing towards the sun. </td></tr>\n    <tr><td class=\"paramname\">layer</td><td>Rendering layer to which the sun direction will be applied. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a6957c2557d41fe2fb76646cea2266eeb\" name=\"a6957c2557d41fe2fb76646cea2266eeb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6957c2557d41fe2fb76646cea2266eeb\">&#9670;&nbsp;</a></span>SetViewDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetViewDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>dist</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2aaf3e85135fa18435eb0d9412ca3a6d\" name=\"a2aaf3e85135fa18435eb0d9412ca3a6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2aaf3e85135fa18435eb0d9412ca3a6d\">&#9670;&nbsp;</a></span>SetViewFov()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetViewFov </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>fov</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a844a096223a3c0f236c7ef8f304a24f8\" name=\"a844a096223a3c0f236c7ef8f304a24f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a844a096223a3c0f236c7ef8f304a24f8\">&#9670;&nbsp;</a></span>SetViewPosition()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetViewPosition </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the view position. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">position</td><td>View position. </td></tr>\n    <tr><td class=\"paramname\">layer</td><td>Rendering layer to which the view position will be applied. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a81a4ef257882a1513b6077fd05d1d1c7\" name=\"a81a4ef257882a1513b6077fd05d1d1c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81a4ef257882a1513b6077fd05d1d1c7\">&#9670;&nbsp;</a></span>SetViewRotation()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::SetViewRotation </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the view rotation. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">rotation</td><td>View rotation. </td></tr>\n    <tr><td class=\"paramname\">layer</td><td>Rendering layer to which the view rotation will be applied. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a3789b74039f89d50409081cdc8fc1457\" name=\"a3789b74039f89d50409081cdc8fc1457\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3789b74039f89d50409081cdc8fc1457\">&#9670;&nbsp;</a></span>ambient_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::ambient_color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4241295a3e7f28b70cfc9a4fa831903d\" name=\"a4241295a3e7f28b70cfc9a4fa831903d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4241295a3e7f28b70cfc9a4fa831903d\">&#9670;&nbsp;</a></span>animation_pool</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a>&lt; uint8_t &gt; tram::Render::animation_pool(&quot;animation keyframe pool&quot;, 1024 *1024) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;animation keyframe pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">1024 *&#160;</td>\n          <td class=\"paramname\"><em>1024</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae4355f7ab257050d67eb34b6c95b58e6\" name=\"ae4355f7ab257050d67eb34b6c95b58e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4355f7ab257050d67eb34b6c95b58e6\">&#9670;&nbsp;</a></span>BONE_COUNT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const size_t tram::Render::BONE_COUNT = 30</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4fbef4fea80d616dcb5ca311f69e32d6\" name=\"a4fbef4fea80d616dcb5ca311f69e32d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fbef4fea80d616dcb5ca311f69e32d6\">&#9670;&nbsp;</a></span>colorlines</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a>&gt; tram::Render::colorlines</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afdc87f9f25286c1ac68113e173db9c65\" name=\"afdc87f9f25286c1ac68113e173db9c65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdc87f9f25286c1ac68113e173db9c65\">&#9670;&nbsp;</a></span>colorlines_entry</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> tram::Render::colorlines_entry</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56939aaf0348435b0e53119c4df5ce6f\" name=\"a56939aaf0348435b0e53119c4df5ce6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56939aaf0348435b0e53119c4df5ce6f\">&#9670;&nbsp;</a></span>colorlines_vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> tram::Render::colorlines_vertex_array = {}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e1e2410b7586fbd9fcc9ac537f6b58c\" name=\"a2e1e2410b7586fbd9fcc9ac537f6b58c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e1e2410b7586fbd9fcc9ac537f6b58c\">&#9670;&nbsp;</a></span>debugtext_entry</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> tram::Render::debugtext_entry</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef5acbc59557fb9733ae605596cb9ab4\" name=\"aef5acbc59557fb9733ae605596cb9ab4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef5acbc59557fb9733ae605596cb9ab4\">&#9670;&nbsp;</a></span>debugtext_vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> tram::Render::debugtext_vertex_array = {}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0328476aed6f9a79b37ead38c539d30b\" name=\"a0328476aed6f9a79b37ead38c539d30b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0328476aed6f9a79b37ead38c539d30b\">&#9670;&nbsp;</a></span>DRAW_RENDER_DEBUG</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::DRAW_RENDER_DEBUG = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa39b7e5e70c04e8c22233f173f0ac82\" name=\"aaa39b7e5e70c04e8c22233f173f0ac82\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa39b7e5e70c04e8c22233f173f0ac82\">&#9670;&nbsp;</a></span>far_plane</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::far_plane = 750.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02ef1036594289bf19ebfa9927708a5d\" name=\"a02ef1036594289bf19ebfa9927708a5d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02ef1036594289bf19ebfa9927708a5d\">&#9670;&nbsp;</a></span>font_debug</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a>* tram::Render::font_debug = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5af0e03c95ed2805bfff581e9a09922f\" name=\"a5af0e03c95ed2805bfff581e9a09922f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5af0e03c95ed2805bfff581e9a09922f\">&#9670;&nbsp;</a></span>near_plane</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::near_plane = 0.01f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1b80c54f15430a66aae59f839ece5e7d\" name=\"a1b80c54f15430a66aae59f839ece5e7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b80c54f15430a66aae59f839ece5e7d\">&#9670;&nbsp;</a></span>ortho_ratio</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::ortho_ratio = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b4ea9d6c17adfd0a9343d5908b5dcdc\" name=\"a4b4ea9d6c17adfd0a9343d5908b5dcdc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b4ea9d6c17adfd0a9343d5908b5dcdc\">&#9670;&nbsp;</a></span>projection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::projection = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a786b665a3cc7c9557dd8d67a418bcaaf\" name=\"a786b665a3cc7c9557dd8d67a418bcaaf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a786b665a3cc7c9557dd8d67a418bcaaf\">&#9670;&nbsp;</a></span>sun_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::sun_color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad44eb5b755e8ae84746af1b369c01908\" name=\"ad44eb5b755e8ae84746af1b369c01908\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad44eb5b755e8ae84746af1b369c01908\">&#9670;&nbsp;</a></span>sun_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::sun_direction = {0.0f, 1.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acbf7d35ffc1fe3624a48655681f07209\" name=\"acbf7d35ffc1fe3624a48655681f07209\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbf7d35ffc1fe3624a48655681f07209\">&#9670;&nbsp;</a></span>textvertices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a>&gt; tram::Render::textvertices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8c04f6971cbc222d951bd80fb9fb56b9\" name=\"a8c04f6971cbc222d951bd80fb9fb56b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8c04f6971cbc222d951bd80fb9fb56b9\">&#9670;&nbsp;</a></span>THIRD_PERSON</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::THIRD_PERSON = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af103c344516eb912ffbee889c05775cc\" name=\"af103c344516eb912ffbee889c05775cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af103c344516eb912ffbee889c05775cc\">&#9670;&nbsp;</a></span>view</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::view = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af4c8e9b6a1eec2f0b34697baf4a4249c\" name=\"af4c8e9b6a1eec2f0b34697baf4a4249c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4c8e9b6a1eec2f0b34697baf4a4249c\">&#9670;&nbsp;</a></span>view_fov</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::view_fov = 60.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac04ea2d1a0ebf06f9737506c4a145349\" name=\"ac04ea2d1a0ebf06f9737506c4a145349\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac04ea2d1a0ebf06f9737506c4a145349\">&#9670;&nbsp;</a></span>view_position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::view_position = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d7d51d8e68a3a77b1015fa31e838e57\" name=\"a6d7d51d8e68a3a77b1015fa31e838e57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d7d51d8e68a3a77b1015fa31e838e57\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Render::view_properties[7]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a296b3bccc75faa4a1c6bfae290d673d6\" name=\"a296b3bccc75faa4a1c6bfae290d673d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a296b3bccc75faa4a1c6bfae290d673d6\">&#9670;&nbsp;</a></span>view_rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Render::view_rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render_1_1_a_a_b_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::AABB Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABB Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">AABBLeaf</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> : uint32_t { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">REFERENCE_RENDERCOMPONENT</a> = 1\n }</td></tr>\n<tr class=\"separator:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6625049c0bc385b24b326868ad74a779\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">InsertLeaf</a> (<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *component, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> scale)</td></tr>\n<tr class=\"memdesc:a6625049c0bc385b24b326868ad74a779\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">More...</a><br /></td></tr>\n<tr class=\"separator:a6625049c0bc385b24b326868ad74a779\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">RemoveLeaf</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> leaf_id)</td></tr>\n<tr class=\"memdesc:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a leaf from.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">More...</a><br /></td></tr>\n<tr class=\"separator:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631b3af49e3238165b6005edf3608394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">FindNearestFromRay</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, uint32_t mask)</td></tr>\n<tr class=\"memdesc:a631b3af49e3238165b6005edf3608394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Peforms a raycast and retrieves the nearest object.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">More...</a><br /></td></tr>\n<tr class=\"separator:a631b3af49e3238165b6005edf3608394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5030c8f345b2d6543274015951361d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">FindAllIntersectionsFromAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, std::function&lt; void(<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *)&gt; callback)</td></tr>\n<tr class=\"separator:a5030c8f345b2d6543274015951361d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">DebugDrawTree</a> ()</td></tr>\n<tr class=\"memdesc:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the scene tree for a single frame.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">More...</a><br /></td></tr>\n<tr class=\"separator:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a5bb0d1f9511914c037cd30f91aa9264c\" name=\"a5bb0d1f9511914c037cd30f91aa9264c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5bb0d1f9511914c037cd30f91aa9264c\">&#9670;&nbsp;</a></span>ReferenceType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB::ReferenceType</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\" name=\"a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\"></a>REFERENCE_RENDERCOMPONENT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ad017e45f12e6ac18dfa2417e462525ef\" name=\"ad017e45f12e6ac18dfa2417e462525ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad017e45f12e6ac18dfa2417e462525ef\">&#9670;&nbsp;</a></span>DebugDrawTree()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AABB::DebugDrawTree </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Draws the scene tree for a single frame. </p>\n\n</div>\n</div>\n<a id=\"a5030c8f345b2d6543274015951361d4d\" name=\"a5030c8f345b2d6543274015951361d4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5030c8f345b2d6543274015951361d4d\">&#9670;&nbsp;</a></span>FindAllIntersectionsFromAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AABB::FindAllIntersectionsFromAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::function&lt; void(<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *)&gt;&#160;</td>\n          <td class=\"paramname\"><em>callback</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a631b3af49e3238165b6005edf3608394\" name=\"a631b3af49e3238165b6005edf3608394\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a631b3af49e3238165b6005edf3608394\">&#9670;&nbsp;</a></span>FindNearestFromRay()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> tram::Render::AABB::FindNearestFromRay </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ray_dir</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Peforms a raycast and retrieves the nearest object. </p>\n\n</div>\n</div>\n<a id=\"a6625049c0bc385b24b326868ad74a779\" name=\"a6625049c0bc385b24b326868ad74a779\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6625049c0bc385b24b326868ad74a779\">&#9670;&nbsp;</a></span>InsertLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> tram::Render::AABB::InsertLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>component</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>scale</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Handle to the inserted leaf. </dd></dl>\n\n</div>\n</div>\n<a id=\"a0714a6a654730b3f04222f08c26c8eec\" name=\"a0714a6a654730b3f04222f08c26c8eec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0714a6a654730b3f04222f08c26c8eec\">&#9670;&nbsp;</a></span>RemoveLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::AABB::RemoveLeaf </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a>&#160;</td>\n          <td class=\"paramname\"><em>leaf_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Removes a leaf from. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render_1_1_a_p_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>.  \n<a href=\"namespacetram_1_1_render_1_1_a_p_i.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">ColorVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">DynamicVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">LayerParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\">ShaderBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">StaticVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:adc040e3232e63f994c1e3c1d1579c976\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a></td></tr>\n<tr class=\"separator:adc040e3232e63f994c1e3c1d1579c976\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a4aa628366e46526d2722302d9ce9d230\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">ContextType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">CONTEXT_OPENGL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">CONTEXT_WEBGL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">CONTEXT_DIRECT3D</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">CONTEXT_SOFTWARE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">CONTEXT_NONE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a4aa628366e46526d2722302d9ce9d230\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a0206969f4d402cd5e729bd34391517\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">ShaderFlag</a> : shaderflags_t { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">SHADER_NONE</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">SHADER_SPECULAR</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">SHADER_LIGHTMAP</a> = 2\n }</td></tr>\n<tr class=\"separator:a0a0206969f4d402cd5e729bd34391517\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a435f5c7784d296fc909a87b6c6190a8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">SWTextureMode</a> { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">SW_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">SW_BLENDED</a>\n }</td></tr>\n<tr class=\"separator:a435f5c7784d296fc909a87b6c6190a8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52ad3127cec9daa2f9c83ca8875dd2d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">SWVertexType</a> { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">SW_STATIC_LIGHTMAPPED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">SW_DYNAMIC_BLENDED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">SW_STATIC_COLORED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">SW_SPRITE</a>\n }</td></tr>\n<tr class=\"separator:a52ad3127cec9daa2f9c83ca8875dd2d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">Init</a> ()</td></tr>\n<tr class=\"separator:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d75088dd180366fb45cb86654694db9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">RenderFrame</a> ()</td></tr>\n<tr class=\"separator:a0d75088dd180366fb45cb86654694db9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">SetScreenClear</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> clear_color, bool clear)</td></tr>\n<tr class=\"separator:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa88196543e9de714a86037204e01f75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">SetLightingParameters</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">sun_direction</a>, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">sun_color</a>, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">ambient_color</a>, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:aa88196543e9de714a86037204e01f75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23c877f60360662f3a1de1fd11957936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">SetViewMatrix</a> (const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;matrix, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a23c877f60360662f3a1de1fd11957936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">SetProjectionMatrix</a> (const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;matrix, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">GetScreen</a> (char *buffer, int w, int h)</td></tr>\n<tr class=\"separator:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">RegisterShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">RemoveDrawListEntry</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry)</td></tr>\n<tr class=\"separator:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">GetFlags</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry)</td></tr>\n<tr class=\"separator:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">SetFlags</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">SetLayer</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">SetPose</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *pose)</td></tr>\n<tr class=\"separator:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">SetLightmap</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> lightmap)</td></tr>\n<tr class=\"separator:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">SetEnvironmentMap</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> environmentmap)</td></tr>\n<tr class=\"separator:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">SetSphericalHarmonic</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a> harmonic)</td></tr>\n<tr class=\"separator:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">SetLights</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> *lights)</td></tr>\n<tr class=\"separator:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">SetMatrix</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;matrix)</td></tr>\n<tr class=\"separator:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a664d9f1a7426b3a1505975402100480a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">SetFadeDistance</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, float near, float far)</td></tr>\n<tr class=\"separator:a664d9f1a7426b3a1505975402100480a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">SetDrawListVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> vertex_array_handle)</td></tr>\n<tr class=\"separator:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">SetDrawListIndexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> index_array_handle)</td></tr>\n<tr class=\"separator:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78a374d698ab9d252afd86163c19440\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">SetDrawListIndexRange</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:ac78a374d698ab9d252afd86163c19440\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9089059c10db7896ab1796273aab81b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">SetDrawListSpriteArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> sprite_array_handle)</td></tr>\n<tr class=\"separator:a9089059c10db7896ab1796273aab81b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3724426196e2fad6e190726003249aed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">SetDrawListShader</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> vertex_format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> material_type)</td></tr>\n<tr class=\"separator:a3724426196e2fad6e190726003249aed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">SetDrawListMaterials</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t material_count, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> *materials)</td></tr>\n<tr class=\"separator:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">SetDrawListColors</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t count, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *color)</td></tr>\n<tr class=\"separator:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">SetDrawListTextureOffsets</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t count, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *offset)</td></tr>\n<tr class=\"separator:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68a28820f27f670a90c2a644aa199728\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">SetDrawListAABB</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a68a28820f27f670a90c2a644aa199728\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">CreateIndexedVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format, <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_array, <a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f3030e7ef229bee087b336d8882232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">CreateVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format, <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_array)</td></tr>\n<tr class=\"separator:a76f3030e7ef229bee087b336d8882232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23acf51fa4097aecd557d23f73131463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">UpdateVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_buffer, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a23acf51fa4097aecd557d23f73131463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">CreateTexture</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a> color_mode, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a> texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af87e801d1160ed2235b7188a506f753d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">CreateSpriteArray</a> ()</td></tr>\n<tr class=\"separator:af87e801d1160ed2235b7188a506f753d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">UpdateSpriteArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> array, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">MakeLight</a> ()</td></tr>\n<tr class=\"separator:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">DeleteLight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light)</td></tr>\n<tr class=\"separator:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">SetLightParameters</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color, float distance, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, float exponent)</td></tr>\n<tr class=\"separator:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">MakeMaterial</a> ()</td></tr>\n<tr class=\"separator:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26c75429ce3913f26e9df148750d4716\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">DeleteMaterial</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material)</td></tr>\n<tr class=\"separator:a26c75429ce3913f26e9df148750d4716\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">SetMaterialTexture</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> texture)</td></tr>\n<tr class=\"separator:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">SetMaterialColor</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> color)</td></tr>\n<tr class=\"separator:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">SetMaterialSpecularWeight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float weight)</td></tr>\n<tr class=\"separator:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">SetMaterialSpecularExponent</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float exponent)</td></tr>\n<tr class=\"separator:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">SetMaterialSpecularTransparency</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float transparency)</td></tr>\n<tr class=\"separator:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">SetMaterialReflectivity</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float reflectivity)</td></tr>\n<tr class=\"separator:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">ContextType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">GetContext</a> ()</td></tr>\n<tr class=\"separator:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18bc917a04c062cb18a310880301f545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">GetMaxIndexRangeLength</a> ()</td></tr>\n<tr class=\"separator:a18bc917a04c062cb18a310880301f545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">SetDevice</a> (void *)</td></tr>\n<tr class=\"separator:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">IsDebugMode</a> ()</td></tr>\n<tr class=\"separator:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">SetDebugMode</a> (bool)</td></tr>\n<tr class=\"separator:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e818c0f10852d65d1464fa7db96faaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa\">light_tree_ids</a> (200)</td></tr>\n<tr class=\"separator:a8e818c0f10852d65d1464fa7db96faaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8\">SetDrawListSpecularities</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t count, float *weights, float *exponents, float *transparencies)</td></tr>\n<tr class=\"separator:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c\">SetDrawListTextures</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t texture_count, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> *textures)</td></tr>\n<tr class=\"separator:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4057f1a8dc032f5f4aded5bc14b5119\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119\">VertexDefinitionToFVF</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format)</td></tr>\n<tr class=\"separator:ab4057f1a8dc032f5f4aded5bc14b5119\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9c8b1770aeeff3ea24c789c104551ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae\">PackVertexBuffer</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_array, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a> helper, size_t vertex_count, void *vertex_data)</td></tr>\n<tr class=\"separator:ac9c8b1770aeeff3ea24c789c104551ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe7ed6af822251d71e03add10aa5c14e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e\">MakeUniformBuffer</a> (const char *name, uint32_t binding, uint32_t initial_size)</td></tr>\n<tr class=\"separator:abe7ed6af822251d71e03add10aa5c14e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a7dd403c84682d2d554721e611e5880\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880\">UploadUniformBuffer</a> (uint32_t handle, uint32_t data_size, void *data)</td></tr>\n<tr class=\"separator:a6a7dd403c84682d2d554721e611e5880\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a860017f77f92d43c2b09b5ff526d61b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4\">SetViewParameters</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, uint32_t layer)</td></tr>\n<tr class=\"separator:a860017f77f92d43c2b09b5ff526d61b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">BindUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">FindShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> mask)</td></tr>\n<tr class=\"separator:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">GetAnyShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> mask)</td></tr>\n<tr class=\"separator:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">CompileShaders</a> ()</td></tr>\n<tr class=\"separator:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa272bbd99e773f619519f24981b411b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b\">IntColor</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"separator:aaa272bbd99e773f619519f24981b411b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53824581d902c1e57599bd544a99a0fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb\">RGBColor</a> (uint16_t color)</td></tr>\n<tr class=\"separator:a53824581d902c1e57599bd544a99a0fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8c4f13e2fd00320c101a35f7b075d08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08\">BlitDot</a> (uint32_t x, uint32_t y, uint16_t color)</td></tr>\n<tr class=\"separator:ad8c4f13e2fd00320c101a35f7b075d08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abad5cda7dcbf4bc90ed26a65e9cc5fde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde\">BlitLineOctant0</a> (uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color)</td></tr>\n<tr class=\"separator:abad5cda7dcbf4bc90ed26a65e9cc5fde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae135a0bcb76598854ab17a5edafbb69c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c\">BlitLineOctant1</a> (uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color)</td></tr>\n<tr class=\"separator:ae135a0bcb76598854ab17a5edafbb69c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa57aa8935b2da2b2c1818efd4a790a8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d\">BlitLine</a> (int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint16_t color)</td></tr>\n<tr class=\"separator:aa57aa8935b2da2b2c1818efd4a790a8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;bool set_span_first&gt; </td></tr>\n<tr class=\"memitem:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869\">MakeSpans</a> (int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t p0, int32_t p1, int32_t skip_first, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a> **scanline_array)</td></tr>\n<tr class=\"separator:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50224ff62bbe42c2feaaf53994343449\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449\">ScanlineConvertTriangle</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">scanlines</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *vertices)</td></tr>\n<tr class=\"separator:a50224ff62bbe42c2feaaf53994343449\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a437bf04f6a5b4400240d03c0349935bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf\">RasterizeTriangle</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">scanlines</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *vertices)</td></tr>\n<tr class=\"separator:a437bf04f6a5b4400240d03c0349935bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fbc57a2c1adf8740ab7744fd8dbacfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd\">RasterizeTriangleLightmapped</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">scanlines</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *vertices, uint16_t color, <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *texture_uvs, <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *lightmap_uvs, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *texture, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *lightmap)</td></tr>\n<tr class=\"separator:a5fbc57a2c1adf8740ab7744fd8dbacfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43eeada3415ce497712a8e7c5d341a7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a\">RasterizeTriangleShadedTextured</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">scanlines</a>, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *vertices, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *colors, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *speculars, <a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *texture_uvs, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *texture)</td></tr>\n<tr class=\"separator:a43eeada3415ce497712a8e7c5d341a7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1c5b9548adfc17b5f3a7343e9194b00\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00\">ClipLineInClipSpace</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;point0, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;point1)</td></tr>\n<tr class=\"separator:ab1c5b9548adfc17b5f3a7343e9194b00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46caee60f68174eb2c6591274b2a2718\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718\">ClipSinglePointLine</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *inside)</td></tr>\n<tr class=\"separator:a46caee60f68174eb2c6591274b2a2718\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5aff334ca94068954abaa63a7f2e8a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0\">ClipSinglePointLineLeftPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:ab5aff334ca94068954abaa63a7f2e8a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08517cac3da578ca3841551b8d2e98d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5\">ClipSinglePointLineRightPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:a08517cac3da578ca3841551b8d2e98d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f56b51da726200209f842f1679692c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8\">ClipSinglePointLineBottomPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:a7f56b51da726200209f842f1679692c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f4da9afb94ac65936c1fd9b71100f1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d\">ClipSinglePointLineTopPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:a7f4da9afb94ac65936c1fd9b71100f1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e3989389fafae9238714ed27974352e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e\">ClipSinglePointLineNearPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:a1e3989389fafae9238714ed27974352e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3acf6872da87792eac2ed0d1ed5907e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8\">ClipSinglePointLineFarPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> outside, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> inside)</td></tr>\n<tr class=\"separator:a3acf6872da87792eac2ed0d1ed5907e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd64f4c4eafba9f6c03d7019f10a31b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8\">ClipSingleClipPointLineLeftPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:abd64f4c4eafba9f6c03d7019f10a31b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d1b7577bb0f160333ab20bd9edabadb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb\">ClipSingleClipPointLineRightPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:a1d1b7577bb0f160333ab20bd9edabadb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e0dddbb04d632038f35b35c93119ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca\">ClipSingleClipPointLineBottomPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:ae2e0dddbb04d632038f35b35c93119ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80773bbd781af72dee05332f2e581d0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e\">ClipSingleClipPointLineTopPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:a80773bbd781af72dee05332f2e581d0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef9b243efb8e2ad402b88e472fad8263\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263\">ClipSingleClipPointLineNearPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:aef9b243efb8e2ad402b88e472fad8263\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf4c3092dfcec8d8ed7d4fb68be7fb7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a\">ClipSingleClipPointLineFarPlane</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> outside, <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> inside)</td></tr>\n<tr class=\"separator:acf4c3092dfcec8d8ed7d4fb68be7fb7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a835ced33fd7a5c9239310fdcffd701f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8\">PerspectiveDivision</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;p)</td></tr>\n<tr class=\"separator:a835ced33fd7a5c9239310fdcffd701f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a437320a39ddec40f81acdc942eeb9940\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437320a39ddec40f81acdc942eeb9940\">PerspectiveDivision</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;p0, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;p1)</td></tr>\n<tr class=\"separator:a437320a39ddec40f81acdc942eeb9940\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac21da51349e4de14ceba43b117898853\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; int32_t, int32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853\">ClipSpaceToScreenSpace</a> (const <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:ac21da51349e4de14ceba43b117898853\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305347e27d6c34316bee82ec791699aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa\">PointVisible</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:a305347e27d6c34316bee82ec791699aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaae15e056fdabbbbdcb09cfe005b4242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242\">PointOutsideLeftPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:aaae15e056fdabbbbdcb09cfe005b4242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3911859adbfe0d04739e68361004226b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b\">PointOutsideRightPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:a3911859adbfe0d04739e68361004226b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a376abbcab88b34e51794e7e0ece4ec58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58\">PointOutsideBottomPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:a376abbcab88b34e51794e7e0ece4ec58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70fdb5f6dca386dfe2f3fef83cb1a6db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db\">PointOutsideTopPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:a70fdb5f6dca386dfe2f3fef83cb1a6db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb0e4d781ba0d59d10503ec6aa352e46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46\">PointOutsideNearPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:abb0e4d781ba0d59d10503ec6aa352e46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b8d2a62665b8a1f7fe6546ff6f09065\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065\">PointOutsideFarPlane</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p)</td></tr>\n<tr class=\"separator:a5b8d2a62665b8a1f7fe6546ff6f09065\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66e59e9064356a39cc2fdcc936ba7e0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b\">LineVisible</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p0, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p1)</td></tr>\n<tr class=\"separator:a66e59e9064356a39cc2fdcc936ba7e0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a908e98b46914c044b8631b88babccb0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f\">TriangleVisible</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p0, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p1, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p2)</td></tr>\n<tr class=\"separator:a908e98b46914c044b8631b88babccb0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1abd96bf65b5421ee6da77b7f125f3e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0\">ClipRenderLine</a> (<a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p0, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> p1, uint16_t color)</td></tr>\n<tr class=\"separator:a1abd96bf65b5421ee6da77b7f125f3e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8330d284873597a2d985086d85e94ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef\">ClipTriangleList</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a> *triangles)</td></tr>\n<tr class=\"separator:af8330d284873597a2d985086d85e94ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e05816b2379825525b322e68af15424\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424\">ParseFormat</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_array, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format)</td></tr>\n<tr class=\"separator:a7e05816b2379825525b322e68af15424\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c1162ce946a884d6018685ec1157c51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51\">PackVertices</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;vertex_array, void *data, size_t count)</td></tr>\n<tr class=\"separator:a3c1162ce946a884d6018685ec1157c51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671\">draw_list</a> (&quot;render list&quot;, 500, false)</td></tr>\n<tr class=\"separator:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e\">light_list</a> (&quot;light list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4855c01cc36bad195643cf956389b5de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de\">light_tree</a></td></tr>\n<tr class=\"separator:a4855c01cc36bad195643cf956389b5de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7897c51fe39d6a65173b8f12bb3b6185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185\">vertex_buffer_metadata</a> (&quot;vertex buffer metadata&quot;, 500, false)</td></tr>\n<tr class=\"separator:a7897c51fe39d6a65173b8f12bb3b6185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab8259e25142ce465c1c745dd91f4618e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e\">screen_clear_color</a> = {0.2f, 0.3f, 0.3f}</td></tr>\n<tr class=\"separator:ab8259e25142ce465c1c745dd91f4618e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f589aad0fe82884c1fc279e5f29092e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e\">clear_screen</a> = true</td></tr>\n<tr class=\"separator:a7f589aad0fe82884c1fc279e5f29092e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae43b3038bb50f8c12f079db41ce172e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e\">STATIC_VERTEX_FVF</a> = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2</td></tr>\n<tr class=\"separator:aae43b3038bb50f8c12f079db41ce172e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c2a4d0725f893593398cf0a61aa69a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2\">DYNAMIC_VERTEX_FVF</a> = D3DFVF_XYZB4 | D3DFVF_LASTBETA_UBYTE4 | D3DFVF_NORMAL | D3DFVF_TEX1</td></tr>\n<tr class=\"separator:a1c2a4d0725f893593398cf0a61aa69a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a092639593561b8318a7db302cde0cd97\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97\">LINE_VERTEX_FVF</a> = D3DFVF_XYZ | D3DFVF_DIFFUSE</td></tr>\n<tr class=\"separator:a092639593561b8318a7db302cde0cd97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6dfddeaa3cef9401836d64332bf741d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7\">matrices</a></td></tr>\n<tr class=\"separator:a6dfddeaa3cef9401836d64332bf741d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa07f4e77940a42bcb683f6a5fe639598\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598\">modelMatrices</a></td></tr>\n<tr class=\"separator:aa07f4e77940a42bcb683f6a5fe639598\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e1d5dec0444c684f0afec150c59bfc0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0\">matrix_uniform_binding</a> = 0</td></tr>\n<tr class=\"separator:a6e1d5dec0444c684f0afec150c59bfc0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a0501e16181b7cde9c9983906abf9dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd\">model_matrix_uniform_binding</a> = 1</td></tr>\n<tr class=\"separator:a2a0501e16181b7cde9c9983906abf9dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0be78caaebe8d1e8e924fac4021c7955\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955\">light_uniform_binding</a> = 2</td></tr>\n<tr class=\"separator:a0be78caaebe8d1e8e924fac4021c7955\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace7ae8e4df165fb13c29c639727147c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8\">bone_uniform_binding</a> = 3</td></tr>\n<tr class=\"separator:ace7ae8e4df165fb13c29c639727147c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2de134ec2f22c719dbf8e81f7ee6852d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d\">matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a2de134ec2f22c719dbf8e81f7ee6852d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2caf5fc3ac8c9036ca6b9be0180c98ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec\">model_matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a2caf5fc3ac8c9036ca6b9be0180c98ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa86b61fec7a4aff417768d154811ad32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32\">light_uniform_buffer</a></td></tr>\n<tr class=\"separator:aa86b61fec7a4aff417768d154811ad32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae204460e13beeb7a70031b5f393fcacb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb\">bone_uniform_buffer</a></td></tr>\n<tr class=\"separator:ae204460e13beeb7a70031b5f393fcacb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55369c124562c90d626b1a67a3e2477e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e\">shader_path</a> = &quot;shaders/gles3/&quot;</td></tr>\n<tr class=\"separator:a55369c124562c90d626b1a67a3e2477e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae22731df276abfeb90be9ca92e40d03e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e\">texture_list</a> (&quot;texture list&quot;, 200, false)</td></tr>\n<tr class=\"separator:ae22731df276abfeb90be9ca92e40d03e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af33e7d508d254e6d15926d063789d2a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2\">vertex_arrays</a> (&quot;vertex_arrays list&quot;, 200, false)</td></tr>\n<tr class=\"separator:af33e7d508d254e6d15926d063789d2a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95fa95ded8f82269167051e3c98f42b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8\">index_arrays</a> (&quot;index_arrays list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a95fa95ded8f82269167051e3c98f42b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98aac604b36b4bd1c29a5580cd309cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">scanlines</a> = new <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a></td></tr>\n<tr class=\"separator:a98aac604b36b4bd1c29a5580cd309cb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. </p>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"adc040e3232e63f994c1e3c1d1579c976\" name=\"adc040e3232e63f994c1e3c1d1579c976\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc040e3232e63f994c1e3c1d1579c976\">&#9670;&nbsp;</a></span>shaderflags_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">tram::Render::API::shaderflags_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a4aa628366e46526d2722302d9ce9d230\" name=\"a4aa628366e46526d2722302d9ce9d230\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4aa628366e46526d2722302d9ce9d230\">&#9670;&nbsp;</a></span>ContextType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">tram::Render::API::ContextType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\" name=\"a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\"></a>CONTEXT_OPENGL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\" name=\"a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\"></a>CONTEXT_WEBGL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\" name=\"a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\"></a>CONTEXT_DIRECT3D&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\" name=\"a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\"></a>CONTEXT_SOFTWARE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\" name=\"a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\"></a>CONTEXT_NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a0a0206969f4d402cd5e729bd34391517\" name=\"a0a0206969f4d402cd5e729bd34391517\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a0206969f4d402cd5e729bd34391517\">&#9670;&nbsp;</a></span>ShaderFlag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">tram::Render::API::ShaderFlag</a> : <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\" name=\"a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\"></a>SHADER_NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\" name=\"a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\"></a>SHADER_SPECULAR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\" name=\"a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\"></a>SHADER_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a435f5c7784d296fc909a87b6c6190a8c\" name=\"a435f5c7784d296fc909a87b6c6190a8c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a435f5c7784d296fc909a87b6c6190a8c\">&#9670;&nbsp;</a></span>SWTextureMode</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">tram::Render::API::SWTextureMode</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\" name=\"a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\"></a>SW_NEAREST&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\" name=\"a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\"></a>SW_BLENDED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a52ad3127cec9daa2f9c83ca8875dd2d2\" name=\"a52ad3127cec9daa2f9c83ca8875dd2d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52ad3127cec9daa2f9c83ca8875dd2d2\">&#9670;&nbsp;</a></span>SWVertexType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">tram::Render::API::SWVertexType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\" name=\"a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\"></a>SW_STATIC_LIGHTMAPPED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\" name=\"a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\"></a>SW_DYNAMIC_BLENDED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\" name=\"a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\"></a>SW_STATIC_COLORED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\" name=\"a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\"></a>SW_SPRITE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a507d7fd9947ed6152f9593c6611a91d4\" name=\"a507d7fd9947ed6152f9593c6611a91d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a507d7fd9947ed6152f9593c6611a91d4\">&#9670;&nbsp;</a></span>BindUniformBlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::BindUniformBlock </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8c4f13e2fd00320c101a35f7b075d08\" name=\"ad8c4f13e2fd00320c101a35f7b075d08\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8c4f13e2fd00320c101a35f7b075d08\">&#9670;&nbsp;</a></span>BlitDot()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::BlitDot </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa57aa8935b2da2b2c1818efd4a790a8d\" name=\"aa57aa8935b2da2b2c1818efd4a790a8d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa57aa8935b2da2b2c1818efd4a790a8d\">&#9670;&nbsp;</a></span>BlitLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::BlitLine </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>x0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>y0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>x1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>y1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abad5cda7dcbf4bc90ed26a65e9cc5fde\" name=\"abad5cda7dcbf4bc90ed26a65e9cc5fde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abad5cda7dcbf4bc90ed26a65e9cc5fde\">&#9670;&nbsp;</a></span>BlitLineOctant0()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::BlitLineOctant0 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>delta_x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>delta_y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae135a0bcb76598854ab17a5edafbb69c\" name=\"ae135a0bcb76598854ab17a5edafbb69c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae135a0bcb76598854ab17a5edafbb69c\">&#9670;&nbsp;</a></span>BlitLineOctant1()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::BlitLineOctant1 </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>x0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>y0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>delta_x</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>delta_y</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1c5b9548adfc17b5f3a7343e9194b00\" name=\"ab1c5b9548adfc17b5f3a7343e9194b00\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1c5b9548adfc17b5f3a7343e9194b00\">&#9670;&nbsp;</a></span>ClipLineInClipSpace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::ClipLineInClipSpace </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>point0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>point1</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1abd96bf65b5421ee6da77b7f125f3e0\" name=\"a1abd96bf65b5421ee6da77b7f125f3e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1abd96bf65b5421ee6da77b7f125f3e0\">&#9670;&nbsp;</a></span>ClipRenderLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::ClipRenderLine </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2e0dddbb04d632038f35b35c93119ca\" name=\"ae2e0dddbb04d632038f35b35c93119ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2e0dddbb04d632038f35b35c93119ca\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineBottomPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineBottomPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf4c3092dfcec8d8ed7d4fb68be7fb7a\" name=\"acf4c3092dfcec8d8ed7d4fb68be7fb7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf4c3092dfcec8d8ed7d4fb68be7fb7a\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineFarPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineFarPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abd64f4c4eafba9f6c03d7019f10a31b8\" name=\"abd64f4c4eafba9f6c03d7019f10a31b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd64f4c4eafba9f6c03d7019f10a31b8\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineLeftPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineLeftPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef9b243efb8e2ad402b88e472fad8263\" name=\"aef9b243efb8e2ad402b88e472fad8263\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef9b243efb8e2ad402b88e472fad8263\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineNearPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineNearPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d1b7577bb0f160333ab20bd9edabadb\" name=\"a1d1b7577bb0f160333ab20bd9edabadb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1b7577bb0f160333ab20bd9edabadb\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineRightPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineRightPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a80773bbd781af72dee05332f2e581d0e\" name=\"a80773bbd781af72dee05332f2e581d0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80773bbd781af72dee05332f2e581d0e\">&#9670;&nbsp;</a></span>ClipSingleClipPointLineTopPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipSingleClipPointLineTopPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46caee60f68174eb2c6591274b2a2718\" name=\"a46caee60f68174eb2c6591274b2a2718\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46caee60f68174eb2c6591274b2a2718\">&#9670;&nbsp;</a></span>ClipSinglePointLine()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLine </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f56b51da726200209f842f1679692c8\" name=\"a7f56b51da726200209f842f1679692c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f56b51da726200209f842f1679692c8\">&#9670;&nbsp;</a></span>ClipSinglePointLineBottomPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineBottomPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3acf6872da87792eac2ed0d1ed5907e8\" name=\"a3acf6872da87792eac2ed0d1ed5907e8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3acf6872da87792eac2ed0d1ed5907e8\">&#9670;&nbsp;</a></span>ClipSinglePointLineFarPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineFarPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab5aff334ca94068954abaa63a7f2e8a0\" name=\"ab5aff334ca94068954abaa63a7f2e8a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5aff334ca94068954abaa63a7f2e8a0\">&#9670;&nbsp;</a></span>ClipSinglePointLineLeftPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineLeftPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e3989389fafae9238714ed27974352e\" name=\"a1e3989389fafae9238714ed27974352e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e3989389fafae9238714ed27974352e\">&#9670;&nbsp;</a></span>ClipSinglePointLineNearPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineNearPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08517cac3da578ca3841551b8d2e98d5\" name=\"a08517cac3da578ca3841551b8d2e98d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08517cac3da578ca3841551b8d2e98d5\">&#9670;&nbsp;</a></span>ClipSinglePointLineRightPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineRightPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f4da9afb94ac65936c1fd9b71100f1d\" name=\"a7f4da9afb94ac65936c1fd9b71100f1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f4da9afb94ac65936c1fd9b71100f1d\">&#9670;&nbsp;</a></span>ClipSinglePointLineTopPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipSinglePointLineTopPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>outside</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>inside</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac21da51349e4de14ceba43b117898853\" name=\"ac21da51349e4de14ceba43b117898853\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac21da51349e4de14ceba43b117898853\">&#9670;&nbsp;</a></span>ClipSpaceToScreenSpace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::pair&lt; int32_t, int32_t &gt; tram::Render::API::ClipSpaceToScreenSpace </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8330d284873597a2d985086d85e94ef\" name=\"af8330d284873597a2d985086d85e94ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8330d284873597a2d985086d85e94ef\">&#9670;&nbsp;</a></span>ClipTriangleList()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::API::ClipTriangleList </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a> *&#160;</td>\n          <td class=\"paramname\"><em>triangles</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39a089d719f123c75f967ca2a7065d4d\" name=\"a39a089d719f123c75f967ca2a7065d4d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39a089d719f123c75f967ca2a7065d4d\">&#9670;&nbsp;</a></span>CompileShaders()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::CompileShaders </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae22f8a73faf3d561003265a51e3ca2b3\" name=\"ae22f8a73faf3d561003265a51e3ca2b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae22f8a73faf3d561003265a51e3ca2b3\">&#9670;&nbsp;</a></span>CreateIndexedVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::CreateIndexedVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>index_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>vertex_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>vertex_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>index_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>index_data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af87e801d1160ed2235b7188a506f753d\" name=\"af87e801d1160ed2235b7188a506f753d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af87e801d1160ed2235b7188a506f753d\">&#9670;&nbsp;</a></span>CreateSpriteArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> tram::Render::API::CreateSpriteArray </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72ff5f43fc09f16266e3fc9ed33715af\" name=\"a72ff5f43fc09f16266e3fc9ed33715af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72ff5f43fc09f16266e3fc9ed33715af\">&#9670;&nbsp;</a></span>CreateTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> tram::Render::API::CreateTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a>&#160;</td>\n          <td class=\"paramname\"><em>color_mode</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a>&#160;</td>\n          <td class=\"paramname\"><em>texture_filter</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76f3030e7ef229bee087b336d8882232\" name=\"a76f3030e7ef229bee087b336d8882232\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76f3030e7ef229bee087b336d8882232\">&#9670;&nbsp;</a></span>CreateVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::CreateVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf65aad3d61388081cff7f81c92368a4\" name=\"acf65aad3d61388081cff7f81c92368a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf65aad3d61388081cff7f81c92368a4\">&#9670;&nbsp;</a></span>DeleteLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::DeleteLight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a26c75429ce3913f26e9df148750d4716\" name=\"a26c75429ce3913f26e9df148750d4716\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26c75429ce3913f26e9df148750d4716\">&#9670;&nbsp;</a></span>DeleteMaterial()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::DeleteMaterial </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0c7d3299f33f45e1b65ea4b795eedee\" name=\"ac0c7d3299f33f45e1b65ea4b795eedee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0c7d3299f33f45e1b65ea4b795eedee\">&#9670;&nbsp;</a></span>FindShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::FindShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a>&#160;</td>\n          <td class=\"paramname\"><em>mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a50e0305574ac545c1e62fd272d9c0c04\" name=\"a50e0305574ac545c1e62fd272d9c0c04\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50e0305574ac545c1e62fd272d9c0c04\">&#9670;&nbsp;</a></span>GetAnyShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GetAnyShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a>&#160;</td>\n          <td class=\"paramname\"><em>mask</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1132a0b2a9d3f0e2cf62dc5db40a6504\" name=\"a1132a0b2a9d3f0e2cf62dc5db40a6504\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1132a0b2a9d3f0e2cf62dc5db40a6504\">&#9670;&nbsp;</a></span>GetContext()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">ContextType</a> tram::Render::API::GetContext </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a01464db10e614acc7db508e0ecdc642c\" name=\"a01464db10e614acc7db508e0ecdc642c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01464db10e614acc7db508e0ecdc642c\">&#9670;&nbsp;</a></span>GetFlags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GetFlags </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a18bc917a04c062cb18a310880301f545\" name=\"a18bc917a04c062cb18a310880301f545\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18bc917a04c062cb18a310880301f545\">&#9670;&nbsp;</a></span>GetMaxIndexRangeLength()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GetMaxIndexRangeLength </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a746afea6f8369d0a1570bb46b7a6e9b3\" name=\"a746afea6f8369d0a1570bb46b7a6e9b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a746afea6f8369d0a1570bb46b7a6e9b3\">&#9670;&nbsp;</a></span>GetScreen()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::GetScreen </td>\n          <td>(</td>\n          <td class=\"paramtype\">char *&#160;</td>\n          <td class=\"paramname\"><em>buffer</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3333e144d9fcb3f23192760dabce0d0d\" name=\"a3333e144d9fcb3f23192760dabce0d0d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3333e144d9fcb3f23192760dabce0d0d\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1a5a35d0071849e1f4a44362df772ce1\" name=\"a1a5a35d0071849e1f4a44362df772ce1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a5a35d0071849e1f4a44362df772ce1\">&#9670;&nbsp;</a></span>InsertDrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> tram::Render::API::InsertDrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa272bbd99e773f619519f24981b411b\" name=\"aaa272bbd99e773f619519f24981b411b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa272bbd99e773f619519f24981b411b\">&#9670;&nbsp;</a></span>IntColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::IntColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5310d3f1d84890fdd8b6c9b8ceead3f\" name=\"aa5310d3f1d84890fdd8b6c9b8ceead3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5310d3f1d84890fdd8b6c9b8ceead3f\">&#9670;&nbsp;</a></span>IsDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::IsDebugMode </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e818c0f10852d65d1464fa7db96faaa\" name=\"a8e818c0f10852d65d1464fa7db96faaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e818c0f10852d65d1464fa7db96faaa\">&#9670;&nbsp;</a></span>light_tree_ids()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; uint32_t &gt; tram::Render::API::light_tree_ids </td>\n          <td>(</td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a66e59e9064356a39cc2fdcc936ba7e0b\" name=\"a66e59e9064356a39cc2fdcc936ba7e0b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66e59e9064356a39cc2fdcc936ba7e0b\">&#9670;&nbsp;</a></span>LineVisible()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::LineVisible </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p1</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86dea3f6c3851af17406ccee3bdc8b85\" name=\"a86dea3f6c3851af17406ccee3bdc8b85\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86dea3f6c3851af17406ccee3bdc8b85\">&#9670;&nbsp;</a></span>MakeLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> tram::Render::API::MakeLight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afaefcc84f8bd511adca07903dd4cd276\" name=\"afaefcc84f8bd511adca07903dd4cd276\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afaefcc84f8bd511adca07903dd4cd276\">&#9670;&nbsp;</a></span>MakeMaterial()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> tram::Render::API::MakeMaterial </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a84dcc808d228294d594b6bb0a97e3869\" name=\"a84dcc808d228294d594b6bb0a97e3869\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84dcc808d228294d594b6bb0a97e3869\">&#9670;&nbsp;</a></span>MakeSpans()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;bool set_span_first&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::MakeSpans </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>x0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>y0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>x1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>y1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>p0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>p1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int32_t&#160;</td>\n          <td class=\"paramname\"><em>skip_first</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a> **&#160;</td>\n          <td class=\"paramname\"><em>scanline_array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe7ed6af822251d71e03add10aa5c14e\" name=\"abe7ed6af822251d71e03add10aa5c14e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe7ed6af822251d71e03add10aa5c14e\">&#9670;&nbsp;</a></span>MakeUniformBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::MakeUniformBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>initial_size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9c8b1770aeeff3ea24c789c104551ae\" name=\"ac9c8b1770aeeff3ea24c789c104551ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9c8b1770aeeff3ea24c789c104551ae\">&#9670;&nbsp;</a></span>PackVertexBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::PackVertexBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a>&#160;</td>\n          <td class=\"paramname\"><em>helper</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>vertex_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>vertex_data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c1162ce946a884d6018685ec1157c51\" name=\"a3c1162ce946a884d6018685ec1157c51\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c1162ce946a884d6018685ec1157c51\">&#9670;&nbsp;</a></span>PackVertices()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::PackVertices </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7e05816b2379825525b322e68af15424\" name=\"a7e05816b2379825525b322e68af15424\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e05816b2379825525b322e68af15424\">&#9670;&nbsp;</a></span>ParseFormat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::ParseFormat </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a835ced33fd7a5c9239310fdcffd701f8\" name=\"a835ced33fd7a5c9239310fdcffd701f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a835ced33fd7a5c9239310fdcffd701f8\">&#9670;&nbsp;</a></span>PerspectiveDivision() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::PerspectiveDivision </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a437320a39ddec40f81acdc942eeb9940\" name=\"a437320a39ddec40f81acdc942eeb9940\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a437320a39ddec40f81acdc942eeb9940\">&#9670;&nbsp;</a></span>PerspectiveDivision() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::PerspectiveDivision </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>p0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>p1</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a376abbcab88b34e51794e7e0ece4ec58\" name=\"a376abbcab88b34e51794e7e0ece4ec58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a376abbcab88b34e51794e7e0ece4ec58\">&#9670;&nbsp;</a></span>PointOutsideBottomPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideBottomPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b8d2a62665b8a1f7fe6546ff6f09065\" name=\"a5b8d2a62665b8a1f7fe6546ff6f09065\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b8d2a62665b8a1f7fe6546ff6f09065\">&#9670;&nbsp;</a></span>PointOutsideFarPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideFarPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaae15e056fdabbbbdcb09cfe005b4242\" name=\"aaae15e056fdabbbbdcb09cfe005b4242\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaae15e056fdabbbbdcb09cfe005b4242\">&#9670;&nbsp;</a></span>PointOutsideLeftPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideLeftPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abb0e4d781ba0d59d10503ec6aa352e46\" name=\"abb0e4d781ba0d59d10503ec6aa352e46\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb0e4d781ba0d59d10503ec6aa352e46\">&#9670;&nbsp;</a></span>PointOutsideNearPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideNearPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3911859adbfe0d04739e68361004226b\" name=\"a3911859adbfe0d04739e68361004226b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3911859adbfe0d04739e68361004226b\">&#9670;&nbsp;</a></span>PointOutsideRightPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideRightPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70fdb5f6dca386dfe2f3fef83cb1a6db\" name=\"a70fdb5f6dca386dfe2f3fef83cb1a6db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70fdb5f6dca386dfe2f3fef83cb1a6db\">&#9670;&nbsp;</a></span>PointOutsideTopPlane()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointOutsideTopPlane </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a305347e27d6c34316bee82ec791699aa\" name=\"a305347e27d6c34316bee82ec791699aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a305347e27d6c34316bee82ec791699aa\">&#9670;&nbsp;</a></span>PointVisible()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::PointVisible </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a437bf04f6a5b4400240d03c0349935bf\" name=\"a437bf04f6a5b4400240d03c0349935bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a437bf04f6a5b4400240d03c0349935bf\">&#9670;&nbsp;</a></span>RasterizeTriangle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RasterizeTriangle </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *&#160;</td>\n          <td class=\"paramname\"><em>scanlines</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *&#160;</td>\n          <td class=\"paramname\"><em>vertices</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5fbc57a2c1adf8740ab7744fd8dbacfd\" name=\"a5fbc57a2c1adf8740ab7744fd8dbacfd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fbc57a2c1adf8740ab7744fd8dbacfd\">&#9670;&nbsp;</a></span>RasterizeTriangleLightmapped()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RasterizeTriangleLightmapped </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *&#160;</td>\n          <td class=\"paramname\"><em>scanlines</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *&#160;</td>\n          <td class=\"paramname\"><em>vertices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *&#160;</td>\n          <td class=\"paramname\"><em>texture_uvs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *&#160;</td>\n          <td class=\"paramname\"><em>lightmap_uvs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *&#160;</td>\n          <td class=\"paramname\"><em>texture</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *&#160;</td>\n          <td class=\"paramname\"><em>lightmap</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43eeada3415ce497712a8e7c5d341a7a\" name=\"a43eeada3415ce497712a8e7c5d341a7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43eeada3415ce497712a8e7c5d341a7a\">&#9670;&nbsp;</a></span>RasterizeTriangleShadedTextured()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RasterizeTriangleShadedTextured </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *&#160;</td>\n          <td class=\"paramname\"><em>scanlines</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *&#160;</td>\n          <td class=\"paramname\"><em>vertices</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *&#160;</td>\n          <td class=\"paramname\"><em>colors</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *&#160;</td>\n          <td class=\"paramname\"><em>speculars</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> *&#160;</td>\n          <td class=\"paramname\"><em>texture_uvs</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *&#160;</td>\n          <td class=\"paramname\"><em>texture</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a63b87913acfc6af2fd7e39754dc1522d\" name=\"a63b87913acfc6af2fd7e39754dc1522d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63b87913acfc6af2fd7e39754dc1522d\">&#9670;&nbsp;</a></span>RegisterShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RegisterShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a13fea5192ecde4d6483fd7ac4109d2\" name=\"a4a13fea5192ecde4d6483fd7ac4109d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a13fea5192ecde4d6483fd7ac4109d2\">&#9670;&nbsp;</a></span>RemoveDrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RemoveDrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0d75088dd180366fb45cb86654694db9\" name=\"a0d75088dd180366fb45cb86654694db9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d75088dd180366fb45cb86654694db9\">&#9670;&nbsp;</a></span>RenderFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::RenderFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53824581d902c1e57599bd544a99a0fb\" name=\"a53824581d902c1e57599bd544a99a0fb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53824581d902c1e57599bd544a99a0fb\">&#9670;&nbsp;</a></span>RGBColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::RGBColor </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>color</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a50224ff62bbe42c2feaaf53994343449\" name=\"a50224ff62bbe42c2feaaf53994343449\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50224ff62bbe42c2feaaf53994343449\">&#9670;&nbsp;</a></span>ScanlineConvertTriangle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::ScanlineConvertTriangle </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a> *&#160;</td>\n          <td class=\"paramname\"><em>scanlines</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a> *&#160;</td>\n          <td class=\"paramname\"><em>vertices</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7d69a7f95415804042a41c3580a7c56f\" name=\"a7d69a7f95415804042a41c3580a7c56f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d69a7f95415804042a41c3580a7c56f\">&#9670;&nbsp;</a></span>SetDebugMode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDebugMode </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>mode</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae66b8323eef7ab765ad466ec90da6ed6\" name=\"ae66b8323eef7ab765ad466ec90da6ed6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae66b8323eef7ab765ad466ec90da6ed6\">&#9670;&nbsp;</a></span>SetDevice()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDevice </td>\n          <td>(</td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>new_device</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68a28820f27f670a90c2a644aa199728\" name=\"a68a28820f27f670a90c2a644aa199728\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68a28820f27f670a90c2a644aa199728\">&#9670;&nbsp;</a></span>SetDrawListAABB()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListAABB </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>min</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>max</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab591dae55495d78c86d150973ea3bef1\" name=\"ab591dae55495d78c86d150973ea3bef1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab591dae55495d78c86d150973ea3bef1\">&#9670;&nbsp;</a></span>SetDrawListColors()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListColors </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a411524f6804a132bdfdf7e95d318fe6a\" name=\"a411524f6804a132bdfdf7e95d318fe6a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a411524f6804a132bdfdf7e95d318fe6a\">&#9670;&nbsp;</a></span>SetDrawListIndexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListIndexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a>&#160;</td>\n          <td class=\"paramname\"><em>index_array_handle</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac78a374d698ab9d252afd86163c19440\" name=\"ac78a374d698ab9d252afd86163c19440\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac78a374d698ab9d252afd86163c19440\">&#9670;&nbsp;</a></span>SetDrawListIndexRange()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListIndexRange </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index_offset</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index_length</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a020f2e580879d12bf3b84b0ed5b9ab70\" name=\"a020f2e580879d12bf3b84b0ed5b9ab70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a020f2e580879d12bf3b84b0ed5b9ab70\">&#9670;&nbsp;</a></span>SetDrawListMaterials()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListMaterials </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>material_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>materials</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3724426196e2fad6e190726003249aed\" name=\"a3724426196e2fad6e190726003249aed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3724426196e2fad6e190726003249aed\">&#9670;&nbsp;</a></span>SetDrawListShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material_type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a96595ff7b2190bcc3b764d3ff9f6f5b8\" name=\"a96595ff7b2190bcc3b764d3ff9f6f5b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96595ff7b2190bcc3b764d3ff9f6f5b8\">&#9670;&nbsp;</a></span>SetDrawListSpecularities()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListSpecularities </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float *&#160;</td>\n          <td class=\"paramname\"><em>weights</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float *&#160;</td>\n          <td class=\"paramname\"><em>exponents</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float *&#160;</td>\n          <td class=\"paramname\"><em>transparencies</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9089059c10db7896ab1796273aab81b7\" name=\"a9089059c10db7896ab1796273aab81b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9089059c10db7896ab1796273aab81b7\">&#9670;&nbsp;</a></span>SetDrawListSpriteArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListSpriteArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a>&#160;</td>\n          <td class=\"paramname\"><em>sprite_array_handle</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aabd8944a6224d5713a02ab8805acf20d\" name=\"aabd8944a6224d5713a02ab8805acf20d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabd8944a6224d5713a02ab8805acf20d\">&#9670;&nbsp;</a></span>SetDrawListTextureOffsets()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListTextureOffsets </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *&#160;</td>\n          <td class=\"paramname\"><em>offset</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac05dea68d3b978e4303cf1c2164f44c\" name=\"aac05dea68d3b978e4303cf1c2164f44c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac05dea68d3b978e4303cf1c2164f44c\">&#9670;&nbsp;</a></span>SetDrawListTextures()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListTextures </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>texture_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>textures</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4642bc504c6d77fde8a824bb95c5ec16\" name=\"a4642bc504c6d77fde8a824bb95c5ec16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4642bc504c6d77fde8a824bb95c5ec16\">&#9670;&nbsp;</a></span>SetDrawListVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetDrawListVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_array_handle</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52c5145a1f9715fcb38218c4c6383fcf\" name=\"a52c5145a1f9715fcb38218c4c6383fcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52c5145a1f9715fcb38218c4c6383fcf\">&#9670;&nbsp;</a></span>SetEnvironmentMap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetEnvironmentMap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td>\n          <td class=\"paramname\"><em>environmentmap</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a664d9f1a7426b3a1505975402100480a\" name=\"a664d9f1a7426b3a1505975402100480a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a664d9f1a7426b3a1505975402100480a\">&#9670;&nbsp;</a></span>SetFadeDistance()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetFadeDistance </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>near</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>far</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10a6b549dc7e27d1f27c14bd2e3fc896\" name=\"a10a6b549dc7e27d1f27c14bd2e3fc896\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10a6b549dc7e27d1f27c14bd2e3fc896\">&#9670;&nbsp;</a></span>SetFlags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetFlags </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afac0e9fbfee600d48f07f13a04ad5e50\" name=\"afac0e9fbfee600d48f07f13a04ad5e50\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afac0e9fbfee600d48f07f13a04ad5e50\">&#9670;&nbsp;</a></span>SetLayer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetLayer </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa88196543e9de714a86037204e01f75c\" name=\"aa88196543e9de714a86037204e01f75c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa88196543e9de714a86037204e01f75c\">&#9670;&nbsp;</a></span>SetLightingParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetLightingParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>sun_direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>sun_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ambient_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e3f408a1abea6b59284b89e49624950\" name=\"a3e3f408a1abea6b59284b89e49624950\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e3f408a1abea6b59284b89e49624950\">&#9670;&nbsp;</a></span>SetLightmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetLightmap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td>\n          <td class=\"paramname\"><em>lightmap</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a832d87127faad4c76d3b09fb0efcbb39\" name=\"a832d87127faad4c76d3b09fb0efcbb39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a832d87127faad4c76d3b09fb0efcbb39\">&#9670;&nbsp;</a></span>SetLightParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetLightParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>distance</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>exponent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9af752a04919c1be9443f491ba9364a\" name=\"ac9af752a04919c1be9443f491ba9364a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9af752a04919c1be9443f491ba9364a\">&#9670;&nbsp;</a></span>SetLights()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetLights </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>lights</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58fe214fe7c887e0911762eefa69f1ef\" name=\"a58fe214fe7c887e0911762eefa69f1ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58fe214fe7c887e0911762eefa69f1ef\">&#9670;&nbsp;</a></span>SetMaterialColor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialColor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a777441cfb7c5806fcc7411a51739af30\" name=\"a777441cfb7c5806fcc7411a51739af30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a777441cfb7c5806fcc7411a51739af30\">&#9670;&nbsp;</a></span>SetMaterialReflectivity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialReflectivity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>reflectivity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6fca8cce2a22ed1edf6cc3fe8f241c7f\" name=\"a6fca8cce2a22ed1edf6cc3fe8f241c7f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">&#9670;&nbsp;</a></span>SetMaterialSpecularExponent()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialSpecularExponent </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>exponent</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a071cd1636bc88d93e740e78ad0c6a3be\" name=\"a071cd1636bc88d93e740e78ad0c6a3be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a071cd1636bc88d93e740e78ad0c6a3be\">&#9670;&nbsp;</a></span>SetMaterialSpecularTransparency()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialSpecularTransparency </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>transparency</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a295d16334d54c86ddc7599a56546dc56\" name=\"a295d16334d54c86ddc7599a56546dc56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a295d16334d54c86ddc7599a56546dc56\">&#9670;&nbsp;</a></span>SetMaterialSpecularWeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialSpecularWeight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>weight</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8bd81654a22565c08d8b34aa9c405c14\" name=\"a8bd81654a22565c08d8b34aa9c405c14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8bd81654a22565c08d8b34aa9c405c14\">&#9670;&nbsp;</a></span>SetMaterialTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMaterialTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a>&#160;</td>\n          <td class=\"paramname\"><em>texture</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad62b8a1dc88abdbcf24dbcbc97571b22\" name=\"ad62b8a1dc88abdbcf24dbcbc97571b22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad62b8a1dc88abdbcf24dbcbc97571b22\">&#9670;&nbsp;</a></span>SetMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>matrix</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a2dbe49094868d5a7efea439f9148f0\" name=\"a5a2dbe49094868d5a7efea439f9148f0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a2dbe49094868d5a7efea439f9148f0\">&#9670;&nbsp;</a></span>SetPose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetPose </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td>\n          <td class=\"paramname\"><em>pose</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8712a5ab1b0f028eb8559586b458262d\" name=\"a8712a5ab1b0f028eb8559586b458262d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8712a5ab1b0f028eb8559586b458262d\">&#9670;&nbsp;</a></span>SetProjectionMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetProjectionMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>matrix</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4546d61832af8f8af9038e5d060afe70\" name=\"a4546d61832af8f8af9038e5d060afe70\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4546d61832af8f8af9038e5d060afe70\">&#9670;&nbsp;</a></span>SetScreenClear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetScreenClear </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>clear_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>clear</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a453419fa3a31de6918ce7c54454b1314\" name=\"a453419fa3a31de6918ce7c54454b1314\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a453419fa3a31de6918ce7c54454b1314\">&#9670;&nbsp;</a></span>SetScreenSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetScreenSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a10c0e3ee3da9bfa728e219bf497ed773\" name=\"a10c0e3ee3da9bfa728e219bf497ed773\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10c0e3ee3da9bfa728e219bf497ed773\">&#9670;&nbsp;</a></span>SetSphericalHarmonic()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetSphericalHarmonic </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a>&#160;</td>\n          <td class=\"paramname\"><em>harmonic</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a23c877f60360662f3a1de1fd11957936\" name=\"a23c877f60360662f3a1de1fd11957936\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a23c877f60360662f3a1de1fd11957936\">&#9670;&nbsp;</a></span>SetViewMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetViewMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>matrix</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a860017f77f92d43c2b09b5ff526d61b4\" name=\"a860017f77f92d43c2b09b5ff526d61b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a860017f77f92d43c2b09b5ff526d61b4\">&#9670;&nbsp;</a></span>SetViewParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::SetViewParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a908e98b46914c044b8631b88babccb0f\" name=\"a908e98b46914c044b8631b88babccb0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a908e98b46914c044b8631b88babccb0f\">&#9670;&nbsp;</a></span>TriangleVisible()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::API::TriangleVisible </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td>\n          <td class=\"paramname\"><em>p2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2c690bed4e6f7ccf1e001526b6b6f013\" name=\"a2c690bed4e6f7ccf1e001526b6b6f013\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c690bed4e6f7ccf1e001526b6b6f013\">&#9670;&nbsp;</a></span>UpdateSpriteArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::UpdateSpriteArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a>&#160;</td>\n          <td class=\"paramname\"><em>array</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>data_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a23acf51fa4097aecd557d23f73131463\" name=\"a23acf51fa4097aecd557d23f73131463\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a23acf51fa4097aecd557d23f73131463\">&#9670;&nbsp;</a></span>UpdateVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::UpdateVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_buffer</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>data_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6a7dd403c84682d2d554721e611e5880\" name=\"a6a7dd403c84682d2d554721e611e5880\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a7dd403c84682d2d554721e611e5880\">&#9670;&nbsp;</a></span>UploadUniformBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::API::UploadUniformBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>data_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab4057f1a8dc032f5f4aded5bc14b5119\" name=\"ab4057f1a8dc032f5f4aded5bc14b5119\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4057f1a8dc032f5f4aded5bc14b5119\">&#9670;&nbsp;</a></span>VertexDefinitionToFVF()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a> tram::Render::API::VertexDefinitionToFVF </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ace7ae8e4df165fb13c29c639727147c8\" name=\"ace7ae8e4df165fb13c29c639727147c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace7ae8e4df165fb13c29c639727147c8\">&#9670;&nbsp;</a></span>bone_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::API::bone_uniform_binding = 3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae204460e13beeb7a70031b5f393fcacb\" name=\"ae204460e13beeb7a70031b5f393fcacb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae204460e13beeb7a70031b5f393fcacb\">&#9670;&nbsp;</a></span>bone_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::bone_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f589aad0fe82884c1fc279e5f29092e\" name=\"a7f589aad0fe82884c1fc279e5f29092e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f589aad0fe82884c1fc279e5f29092e\">&#9670;&nbsp;</a></span>clear_screen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static bool tram::Render::API::clear_screen = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ee5db9b2d1a8b354779f2a611792671\" name=\"a9ee5db9b2d1a8b354779f2a611792671\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ee5db9b2d1a8b354779f2a611792671\">&#9670;&nbsp;</a></span>draw_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a> &gt; tram::Render::API::draw_list </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;render list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">500&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1c2a4d0725f893593398cf0a61aa69a2\" name=\"a1c2a4d0725f893593398cf0a61aa69a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c2a4d0725f893593398cf0a61aa69a2\">&#9670;&nbsp;</a></span>DYNAMIC_VERTEX_FVF</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const DWORD tram::Render::API::DYNAMIC_VERTEX_FVF = D3DFVF_XYZB4 | D3DFVF_LASTBETA_UBYTE4 | D3DFVF_NORMAL | D3DFVF_TEX1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95fa95ded8f82269167051e3c98f42b8\" name=\"a95fa95ded8f82269167051e3c98f42b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95fa95ded8f82269167051e3c98f42b8\">&#9670;&nbsp;</a></span>index_arrays</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a> &gt; tram::Render::API::index_arrays(&quot;index_arrays list&quot;, 200, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;index_arrays list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a22c9b2ef54e756a89652662cc7ad099e\" name=\"a22c9b2ef54e756a89652662cc7ad099e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22c9b2ef54e756a89652662cc7ad099e\">&#9670;&nbsp;</a></span>light_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a> &gt; tram::Render::API::light_list </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;light list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4855c01cc36bad195643cf956389b5de\" name=\"a4855c01cc36bad195643cf956389b5de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4855c01cc36bad195643cf956389b5de\">&#9670;&nbsp;</a></span>light_tree</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt;uint32_t&gt; tram::Render::API::light_tree</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0be78caaebe8d1e8e924fac4021c7955\" name=\"a0be78caaebe8d1e8e924fac4021c7955\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0be78caaebe8d1e8e924fac4021c7955\">&#9670;&nbsp;</a></span>light_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::API::light_uniform_binding = 2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa86b61fec7a4aff417768d154811ad32\" name=\"aa86b61fec7a4aff417768d154811ad32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa86b61fec7a4aff417768d154811ad32\">&#9670;&nbsp;</a></span>light_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::light_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a092639593561b8318a7db302cde0cd97\" name=\"a092639593561b8318a7db302cde0cd97\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a092639593561b8318a7db302cde0cd97\">&#9670;&nbsp;</a></span>LINE_VERTEX_FVF</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const DWORD tram::Render::API::LINE_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6dfddeaa3cef9401836d64332bf741d7\" name=\"a6dfddeaa3cef9401836d64332bf741d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6dfddeaa3cef9401836d64332bf741d7\">&#9670;&nbsp;</a></span>matrices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a> tram::Render::API::matrices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6e1d5dec0444c684f0afec150c59bfc0\" name=\"a6e1d5dec0444c684f0afec150c59bfc0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e1d5dec0444c684f0afec150c59bfc0\">&#9670;&nbsp;</a></span>matrix_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::API::matrix_uniform_binding = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2de134ec2f22c719dbf8e81f7ee6852d\" name=\"a2de134ec2f22c719dbf8e81f7ee6852d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2de134ec2f22c719dbf8e81f7ee6852d\">&#9670;&nbsp;</a></span>matrix_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::matrix_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2a0501e16181b7cde9c9983906abf9dd\" name=\"a2a0501e16181b7cde9c9983906abf9dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a0501e16181b7cde9c9983906abf9dd\">&#9670;&nbsp;</a></span>model_matrix_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::API::model_matrix_uniform_binding = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2caf5fc3ac8c9036ca6b9be0180c98ec\" name=\"a2caf5fc3ac8c9036ca6b9be0180c98ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2caf5fc3ac8c9036ca6b9be0180c98ec\">&#9670;&nbsp;</a></span>model_matrix_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::model_matrix_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa07f4e77940a42bcb683f6a5fe639598\" name=\"aa07f4e77940a42bcb683f6a5fe639598\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa07f4e77940a42bcb683f6a5fe639598\">&#9670;&nbsp;</a></span>modelMatrices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a> tram::Render::API::modelMatrices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a98aac604b36b4bd1c29a5580cd309cb7\" name=\"a98aac604b36b4bd1c29a5580cd309cb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98aac604b36b4bd1c29a5580cd309cb7\">&#9670;&nbsp;</a></span>scanlines</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a>* tram::Render::API::scanlines = new <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab8259e25142ce465c1c745dd91f4618e\" name=\"ab8259e25142ce465c1c745dd91f4618e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8259e25142ce465c1c745dd91f4618e\">&#9670;&nbsp;</a></span>screen_clear_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::screen_clear_color = {0.2f, 0.3f, 0.3f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a55369c124562c90d626b1a67a3e2477e\" name=\"a55369c124562c90d626b1a67a3e2477e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55369c124562c90d626b1a67a3e2477e\">&#9670;&nbsp;</a></span>shader_path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Render::API::shader_path = &quot;shaders/gles3/&quot;</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae43b3038bb50f8c12f079db41ce172e\" name=\"aae43b3038bb50f8c12f079db41ce172e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae43b3038bb50f8c12f079db41ce172e\">&#9670;&nbsp;</a></span>STATIC_VERTEX_FVF</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const DWORD tram::Render::API::STATIC_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae22731df276abfeb90be9ca92e40d03e\" name=\"ae22731df276abfeb90be9ca92e40d03e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae22731df276abfeb90be9ca92e40d03e\">&#9670;&nbsp;</a></span>texture_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> &gt; tram::Render::API::texture_list(&quot;texture list&quot;, 200, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;texture list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af33e7d508d254e6d15926d063789d2a2\" name=\"af33e7d508d254e6d15926d063789d2a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af33e7d508d254e6d15926d063789d2a2\">&#9670;&nbsp;</a></span>vertex_arrays</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a> &gt; tram::Render::API::vertex_arrays(&quot;vertex_arrays list&quot;, 200, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;vertex_arrays list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7897c51fe39d6a65173b8f12bb3b6185\" name=\"a7897c51fe39d6a65173b8f12bb3b6185\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7897c51fe39d6a65173b8f12bb3b6185\">&#9670;&nbsp;</a></span>vertex_buffer_metadata</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a> &gt; tram::Render::API::vertex_buffer_metadata(&quot;vertex buffer metadata&quot;, 500, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;vertex buffer metadata&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">500&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render_1_1_light_tree.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::LightTree Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">LightTree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightTree Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Scene light tree.  \n<a href=\"namespacetram_1_1_render_1_1_light_tree.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb\">light_tree</a> (&quot;light tree&quot;, 200)</td></tr>\n<tr class=\"separator:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">AddLight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float dist)</td></tr>\n<tr class=\"memdesc:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a light to the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">More...</a><br /></td></tr>\n<tr class=\"separator:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">FindLights</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> *dest)</td></tr>\n<tr class=\"memdesc:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the 4 nearest lights to a given position.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">RemoveLight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light)</td></tr>\n<tr class=\"memdesc:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a light from the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">More...</a><br /></td></tr>\n<tr class=\"separator:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8\">light_list</a> (&quot;lighttree pool&quot;, 200)</td></tr>\n<tr class=\"separator:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Scene light tree. </p>\n<p >Contains all of the dynamic lights in the scene. Useful for finding which lights are illuminating a certain 3D model in the scene.</p>\n<p >Internally uses an <a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>. </p>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"aad6c0b080cf76a2e64216adc9318807e\" name=\"aad6c0b080cf76a2e64216adc9318807e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad6c0b080cf76a2e64216adc9318807e\">&#9670;&nbsp;</a></span>AddLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::LightTree::AddLight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>pos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>dist</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds a light to the light tree. </p>\n\n</div>\n</div>\n<a id=\"ae353165809c1cd85edb8e42944c0dee4\" name=\"ae353165809c1cd85edb8e42944c0dee4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae353165809c1cd85edb8e42944c0dee4\">&#9670;&nbsp;</a></span>FindLights()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::LightTree::FindLights </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> *&#160;</td>\n          <td class=\"paramname\"><em>dest</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Finds the 4 nearest lights to a given position. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">position</td><td>Position from which the lights will be searched. </td></tr>\n    <tr><td class=\"paramname\">dest</td><td>Pointer to an array of 4 <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a6baeaf6a8a379247c5a02079c1ef92cb\" name=\"a6baeaf6a8a379247c5a02079c1ef92cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6baeaf6a8a379247c5a02079c1ef92cb\">&#9670;&nbsp;</a></span>light_tree()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a> * &gt; tram::Render::LightTree::light_tree </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;light tree&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acbb22184ab1cca95ca3dd1f250e3f12d\" name=\"acbb22184ab1cca95ca3dd1f250e3f12d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbb22184ab1cca95ca3dd1f250e3f12d\">&#9670;&nbsp;</a></span>RemoveLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::LightTree::RemoveLight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Removes a light from the light tree. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ace17f1d05c614eb447987103188f6fe8\" name=\"ace17f1d05c614eb447987103188f6fe8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace17f1d05c614eb447987103188f6fe8\">&#9670;&nbsp;</a></span>light_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a> &gt; tram::Render::LightTree::light_list(&quot;lighttree pool&quot;, 200) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;lighttree pool&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render_1_1_open_g_l.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">DrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">FragmentShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">LayerParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">LightListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">LinkedShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_open_g_l_1_1_shader_buffer.html\">ShaderBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">VertexShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a4704375e2e8e3db75dcc055aeeb49185\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a4704375e2e8e3db75dcc055aeeb49185\">Init</a> ()</td></tr>\n<tr class=\"separator:a4704375e2e8e3db75dcc055aeeb49185\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed742aefb6bf8fa8cba8e6c8b1077302\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aed742aefb6bf8fa8cba8e6c8b1077302\">Render</a> ()</td></tr>\n<tr class=\"separator:aed742aefb6bf8fa8cba8e6c8b1077302\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a8c51810d92da7c2577d64266522f7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a3a8c51810d92da7c2577d64266522f7e\">SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a3a8c51810d92da7c2577d64266522f7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac59a8143bece0406de81f16231250038\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ac59a8143bece0406de81f16231250038\">InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:ac59a8143bece0406de81f16231250038\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0aef79f76b146e552c9de8919ed0516\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ae0aef79f76b146e552c9de8919ed0516\">GetFlags</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry)</td></tr>\n<tr class=\"separator:ae0aef79f76b146e552c9de8919ed0516\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44fdc9de63af3f43c4d29717a0b55d32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a44fdc9de63af3f43c4d29717a0b55d32\">SetFlags</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a44fdc9de63af3f43c4d29717a0b55d32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16c91d2bdf5aff9c7fab7072f2fc5d29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a16c91d2bdf5aff9c7fab7072f2fc5d29\">SetPose</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *pose)</td></tr>\n<tr class=\"separator:a16c91d2bdf5aff9c7fab7072f2fc5d29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af02e8a7e03a42d3b6f2ff06651f8073b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#af02e8a7e03a42d3b6f2ff06651f8073b\">SetLightmap</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, uint32_t lightmap)</td></tr>\n<tr class=\"separator:af02e8a7e03a42d3b6f2ff06651f8073b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a525a02a2f3531fc36106cdb60152b759\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a525a02a2f3531fc36106cdb60152b759\">SetLights</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, uint32_t *lights)</td></tr>\n<tr class=\"separator:a525a02a2f3531fc36106cdb60152b759\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4293c29750809e412f35de97c66176eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a4293c29750809e412f35de97c66176eb\">SetMatrix</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;matrix)</td></tr>\n<tr class=\"separator:a4293c29750809e412f35de97c66176eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b4dbb7711dd9fb23d6203dbd80a9c95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a3b4dbb7711dd9fb23d6203dbd80a9c95\">SetDrawListVertexArray</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, uint32_t vertex_array_handle)</td></tr>\n<tr class=\"separator:a3b4dbb7711dd9fb23d6203dbd80a9c95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf182d111e026fb394e154ab5fe17e67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#adf182d111e026fb394e154ab5fe17e67\">SetDrawListIndexRange</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:adf182d111e026fb394e154ab5fe17e67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c3c94b835f3e03798bb3384da16713f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a4c3c94b835f3e03798bb3384da16713f\">SetDrawListShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> vertex_format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> material_type)</td></tr>\n<tr class=\"separator:a4c3c94b835f3e03798bb3384da16713f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04006b79fdcb37e6c26b96455bcd9069\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a04006b79fdcb37e6c26b96455bcd9069\">SetDrawListTextures</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry, size_t texture_count, uint32_t *textures)</td></tr>\n<tr class=\"separator:a04006b79fdcb37e6c26b96455bcd9069\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48917373dd38c896c801694d54b945bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a48917373dd38c896c801694d54b945bd\">SetScreenClear</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> clear_color, bool clear)</td></tr>\n<tr class=\"separator:a48917373dd38c896c801694d54b945bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28d9fa63fbf51fa66647b60b126d7cf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a28d9fa63fbf51fa66647b60b126d7cf9\">SetLightingParameters</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> sun_direction, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> sun_color, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ambient_color, uint32_t layer)</td></tr>\n<tr class=\"separator:a28d9fa63fbf51fa66647b60b126d7cf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9779cf323de425fd5c717313d6aad8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ae9779cf323de425fd5c717313d6aad8b\">SetCameraParameters</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, uint32_t layer)</td></tr>\n<tr class=\"separator:ae9779cf323de425fd5c717313d6aad8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adaffd1f59f93d302401b1b7d5f1a814f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#adaffd1f59f93d302401b1b7d5f1a814f\">MakeLight</a> ()</td></tr>\n<tr class=\"separator:adaffd1f59f93d302401b1b7d5f1a814f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5493f2b2887bba9205d5043505d2026\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ae5493f2b2887bba9205d5043505d2026\">DeleteLight</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a> light)</td></tr>\n<tr class=\"separator:ae5493f2b2887bba9205d5043505d2026\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d4b4167ae270b364ed6f02128dac1bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a5d4b4167ae270b364ed6f02128dac1bb\">SetLightParameters</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a> light, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color, float distance)</td></tr>\n<tr class=\"separator:a5d4b4167ae270b364ed6f02128dac1bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec7c1f32f0728e7449ae537a8ab38169\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aec7c1f32f0728e7449ae537a8ab38169\">RemoveDrawListEntry</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> entry)</td></tr>\n<tr class=\"separator:aec7c1f32f0728e7449ae537a8ab38169\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a795eff8e08c5173b54fc66e2ccf8ff55\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a795eff8e08c5173b54fc66e2ccf8ff55\">CreateTexture</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a> color_mode, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a> texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a795eff8e08c5173b54fc66e2ccf8ff55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f30b640eb8594e1015bf5383d549bf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a8f30b640eb8594e1015bf5383d549bf1\">CreateIndexedVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;vertex_buffer_handle, <a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;index_buffer_handle, <a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;vertex_array_handle, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:a8f30b640eb8594e1015bf5383d549bf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c72adf58d7e720049d9cf2db4fd2e83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a3c72adf58d7e720049d9cf2db4fd2e83\">CreateVertexArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> vertex_format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;vertex_buffer_handle, <a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;vertex_array_handle)</td></tr>\n<tr class=\"separator:a3c72adf58d7e720049d9cf2db4fd2e83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa74c1ceab8178c2fb91dd442fd1ac91e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aa74c1ceab8178c2fb91dd442fd1ac91e\">UpdateVertexArray</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> vertex_buffer_handle, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:aa74c1ceab8178c2fb91dd442fd1ac91e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd2aeb8cc2b0e6f73c687f33a6d6e275\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#acd2aeb8cc2b0e6f73c687f33a6d6e275\">RenderFrame</a> ()</td></tr>\n<tr class=\"separator:acd2aeb8cc2b0e6f73c687f33a6d6e275\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f3278175c3d4aebfaf21cff6a785bff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a5f3278175c3d4aebfaf21cff6a785bff\">light_tree_ids</a> (200)</td></tr>\n<tr class=\"separator:a5f3278175c3d4aebfaf21cff6a785bff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3178eeedc96313fc72a3781f219d627e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a3178eeedc96313fc72a3781f219d627e\">MakeUniformBuffer</a> (const char *name, uint32_t binding, uint32_t initial_size)</td></tr>\n<tr class=\"separator:a3178eeedc96313fc72a3781f219d627e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab39da648228e8137ee78c3a0711c8337\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ab39da648228e8137ee78c3a0711c8337\">UploadUniformBuffer</a> (uint32_t handle, uint32_t data_size, void *data)</td></tr>\n<tr class=\"separator:ab39da648228e8137ee78c3a0711c8337\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af94ef86a0f512c6f6c3641eaf2abe499\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#af94ef86a0f512c6f6c3641eaf2abe499\">CompileShaders</a> ()</td></tr>\n<tr class=\"separator:af94ef86a0f512c6f6c3641eaf2abe499\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0368ab787f5e6cd5be69dd080c7122d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ac0368ab787f5e6cd5be69dd080c7122d\">FindShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type)</td></tr>\n<tr class=\"separator:ac0368ab787f5e6cd5be69dd080c7122d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72a99b05826e98c0789dbe0564c5c9f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a72a99b05826e98c0789dbe0564c5c9f5\">RegisterShader</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a72a99b05826e98c0789dbe0564c5c9f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4f65651f34b1d78d4903cb7f85464a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aa4f65651f34b1d78d4903cb7f85464a8\">BindUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:aa4f65651f34b1d78d4903cb7f85464a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1ecacfabd15ee1b952adc06d57b40b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#af1ecacfabd15ee1b952adc06d57b40b9\">LoadVertexShader</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:af1ecacfabd15ee1b952adc06d57b40b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a378612fdbd97f3261fe8163f71397355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a378612fdbd97f3261fe8163f71397355\">LoadFragmentShader</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a378612fdbd97f3261fe8163f71397355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a85afb3d29f35eac048e01714ec0b9c21\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a85afb3d29f35eac048e01714ec0b9c21\">LinkShader</a> (uint32_t vertex_shader, uint32_t fragment_shader)</td></tr>\n<tr class=\"separator:a85afb3d29f35eac048e01714ec0b9c21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a611d3ea83ed8230d4831eb646f880e1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a611d3ea83ed8230d4831eb646f880e1f\">BindTextures</a> (uint32_t shader)</td></tr>\n<tr class=\"separator:a611d3ea83ed8230d4831eb646f880e1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:aa3aaeb4829dfd0227839e89f41786235\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">DrawListEntry</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aa3aaeb4829dfd0227839e89f41786235\">draw_list</a> (&quot;render list&quot;, 500, false)</td></tr>\n<tr class=\"separator:aa3aaeb4829dfd0227839e89f41786235\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4820905384bd5c8583d4daa0ea8db2a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">LightListEntry</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a4820905384bd5c8583d4daa0ea8db2a6\">light_list</a> (&quot;light list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a4820905384bd5c8583d4daa0ea8db2a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac26c637e48da2a9022e35cc99119340c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ac26c637e48da2a9022e35cc99119340c\">light_tree</a></td></tr>\n<tr class=\"separator:ac26c637e48da2a9022e35cc99119340c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac44d33d87ac73c54e8c667c3bf807429\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ac44d33d87ac73c54e8c667c3bf807429\">matrices</a></td></tr>\n<tr class=\"separator:ac44d33d87ac73c54e8c667c3bf807429\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f7771f25b343fb8778ef1aa99dac0c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a7f7771f25b343fb8778ef1aa99dac0c1\">modelMatrices</a></td></tr>\n<tr class=\"separator:a7f7771f25b343fb8778ef1aa99dac0c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacef80cefcd98d98335b73115033f1af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aacef80cefcd98d98335b73115033f1af\">matrix_uniform_binding</a> = 0</td></tr>\n<tr class=\"separator:aacef80cefcd98d98335b73115033f1af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3244a8aa2857320fa3f9dd222cd93149\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a3244a8aa2857320fa3f9dd222cd93149\">model_matrix_uniform_binding</a> = 1</td></tr>\n<tr class=\"separator:a3244a8aa2857320fa3f9dd222cd93149\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a013065215928554218633a06a37fadf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a013065215928554218633a06a37fadf5\">light_uniform_binding</a> = 2</td></tr>\n<tr class=\"separator:a013065215928554218633a06a37fadf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae96902f7e0a0426c805bf772c58f09d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ae96902f7e0a0426c805bf772c58f09d4\">bone_uniform_binding</a> = 3</td></tr>\n<tr class=\"separator:ae96902f7e0a0426c805bf772c58f09d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a168b5d3e6926690c837de874354232e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a168b5d3e6926690c837de874354232e2\">matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a168b5d3e6926690c837de874354232e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a313e5657f492f0e6b0d059a62292fc6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a313e5657f492f0e6b0d059a62292fc6e\">model_matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a313e5657f492f0e6b0d059a62292fc6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a680d10cc22b77f8d004ca8fbd4487d0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a680d10cc22b77f8d004ca8fbd4487d0b\">light_uniform_buffer</a></td></tr>\n<tr class=\"separator:a680d10cc22b77f8d004ca8fbd4487d0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a51747b14451578767b47020b8a226b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a9a51747b14451578767b47020b8a226b\">bone_uniform_buffer</a></td></tr>\n<tr class=\"separator:a9a51747b14451578767b47020b8a226b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1179a897786a3c1c5c4a4654d4640ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ae1179a897786a3c1c5c4a4654d4640ac\">screen_clear_color</a> = {0.2f, 0.3f, 0.3f}</td></tr>\n<tr class=\"separator:ae1179a897786a3c1c5c4a4654d4640ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31375139ee38a1d2ea1b8dd0f8d98dcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a31375139ee38a1d2ea1b8dd0f8d98dcd\">clear_screen</a> = true</td></tr>\n<tr class=\"separator:a31375139ee38a1d2ea1b8dd0f8d98dcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab987bec35abe8a774b2b2a230755cba0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ab987bec35abe8a774b2b2a230755cba0\">MAX_MATERIAL_TYPES</a> = 10</td></tr>\n<tr class=\"separator:ab987bec35abe8a774b2b2a230755cba0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af59607c37bc83b62602a1920d1588d75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#af59607c37bc83b62602a1920d1588d75\">MAX_VERTEX_FORMATS</a> = 10</td></tr>\n<tr class=\"separator:af59607c37bc83b62602a1920d1588d75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ade49ad801ea0d96a6bd79b5411498bda\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ade49ad801ea0d96a6bd79b5411498bda\">MAX_VERTEX_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:ade49ad801ea0d96a6bd79b5411498bda\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad040b8e94f30dea09f188e8184de523\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#aad040b8e94f30dea09f188e8184de523\">MAX_FRAGMENT_SHADERS</a> = 20</td></tr>\n<tr class=\"separator:aad040b8e94f30dea09f188e8184de523\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7e66079b5fc7dbd58d75acc4e6d8687\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#ad7e66079b5fc7dbd58d75acc4e6d8687\">MAX_LINKED_SHADERS</a> = 40</td></tr>\n<tr class=\"separator:ad7e66079b5fc7dbd58d75acc4e6d8687\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77a0155cdffc2139fc32adba12b06802\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html#a77a0155cdffc2139fc32adba12b06802\">shader_path</a> = &quot;shaders/opengl3/&quot;</td></tr>\n<tr class=\"separator:a77a0155cdffc2139fc32adba12b06802\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a611d3ea83ed8230d4831eb646f880e1f\" name=\"a611d3ea83ed8230d4831eb646f880e1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a611d3ea83ed8230d4831eb646f880e1f\">&#9670;&nbsp;</a></span>BindTextures()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::BindTextures </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>shader</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4f65651f34b1d78d4903cb7f85464a8\" name=\"aa4f65651f34b1d78d4903cb7f85464a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4f65651f34b1d78d4903cb7f85464a8\">&#9670;&nbsp;</a></span>BindUniformBlock()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::BindUniformBlock </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af94ef86a0f512c6f6c3641eaf2abe499\" name=\"af94ef86a0f512c6f6c3641eaf2abe499\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af94ef86a0f512c6f6c3641eaf2abe499\">&#9670;&nbsp;</a></span>CompileShaders()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::CompileShaders </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8f30b640eb8594e1015bf5383d549bf1\" name=\"a8f30b640eb8594e1015bf5383d549bf1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f30b640eb8594e1015bf5383d549bf1\">&#9670;&nbsp;</a></span>CreateIndexedVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::CreateIndexedVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_buffer_handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>index_buffer_handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array_handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>vertex_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>vertex_data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>index_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>index_data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a795eff8e08c5173b54fc66e2ccf8ff55\" name=\"a795eff8e08c5173b54fc66e2ccf8ff55\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a795eff8e08c5173b54fc66e2ccf8ff55\">&#9670;&nbsp;</a></span>CreateTexture()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afe4d5c172f1c893681b6af4575313776\">texturehandle_t</a> tram::Render::OpenGL::CreateTexture </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a>&#160;</td>\n          <td class=\"paramname\"><em>color_mode</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a>&#160;</td>\n          <td class=\"paramname\"><em>texture_filter</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>height</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c72adf58d7e720049d9cf2db4fd2e83\" name=\"a3c72adf58d7e720049d9cf2db4fd2e83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c72adf58d7e720049d9cf2db4fd2e83\">&#9670;&nbsp;</a></span>CreateVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::CreateVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_buffer_handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>vertex_array_handle</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae5493f2b2887bba9205d5043505d2026\" name=\"ae5493f2b2887bba9205d5043505d2026\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5493f2b2887bba9205d5043505d2026\">&#9670;&nbsp;</a></span>DeleteLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::DeleteLight </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac0368ab787f5e6cd5be69dd080c7122d\" name=\"ac0368ab787f5e6cd5be69dd080c7122d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0368ab787f5e6cd5be69dd080c7122d\">&#9670;&nbsp;</a></span>FindShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::FindShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0aef79f76b146e552c9de8919ed0516\" name=\"ae0aef79f76b146e552c9de8919ed0516\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0aef79f76b146e552c9de8919ed0516\">&#9670;&nbsp;</a></span>GetFlags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::GetFlags </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4704375e2e8e3db75dcc055aeeb49185\" name=\"a4704375e2e8e3db75dcc055aeeb49185\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4704375e2e8e3db75dcc055aeeb49185\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac59a8143bece0406de81f16231250038\" name=\"ac59a8143bece0406de81f16231250038\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac59a8143bece0406de81f16231250038\">&#9670;&nbsp;</a></span>InsertDrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a> tram::Render::OpenGL::InsertDrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f3278175c3d4aebfaf21cff6a785bff\" name=\"a5f3278175c3d4aebfaf21cff6a785bff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f3278175c3d4aebfaf21cff6a785bff\">&#9670;&nbsp;</a></span>light_tree_ids()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; uint32_t &gt; tram::Render::OpenGL::light_tree_ids </td>\n          <td>(</td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a85afb3d29f35eac048e01714ec0b9c21\" name=\"a85afb3d29f35eac048e01714ec0b9c21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85afb3d29f35eac048e01714ec0b9c21\">&#9670;&nbsp;</a></span>LinkShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::LinkShader </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a378612fdbd97f3261fe8163f71397355\" name=\"a378612fdbd97f3261fe8163f71397355\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a378612fdbd97f3261fe8163f71397355\">&#9670;&nbsp;</a></span>LoadFragmentShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::LoadFragmentShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af1ecacfabd15ee1b952adc06d57b40b9\" name=\"af1ecacfabd15ee1b952adc06d57b40b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1ecacfabd15ee1b952adc06d57b40b9\">&#9670;&nbsp;</a></span>LoadVertexShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::LoadVertexShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adaffd1f59f93d302401b1b7d5f1a814f\" name=\"adaffd1f59f93d302401b1b7d5f1a814f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adaffd1f59f93d302401b1b7d5f1a814f\">&#9670;&nbsp;</a></span>MakeLight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a> tram::Render::OpenGL::MakeLight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3178eeedc96313fc72a3781f219d627e\" name=\"a3178eeedc96313fc72a3781f219d627e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3178eeedc96313fc72a3781f219d627e\">&#9670;&nbsp;</a></span>MakeUniformBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::MakeUniformBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>binding</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>initial_size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72a99b05826e98c0789dbe0564c5c9f5\" name=\"a72a99b05826e98c0789dbe0564c5c9f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72a99b05826e98c0789dbe0564c5c9f5\">&#9670;&nbsp;</a></span>RegisterShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::RegisterShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>vertex_shader</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>fragment_shader</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec7c1f32f0728e7449ae537a8ab38169\" name=\"aec7c1f32f0728e7449ae537a8ab38169\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec7c1f32f0728e7449ae537a8ab38169\">&#9670;&nbsp;</a></span>RemoveDrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::RemoveDrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed742aefb6bf8fa8cba8e6c8b1077302\" name=\"aed742aefb6bf8fa8cba8e6c8b1077302\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed742aefb6bf8fa8cba8e6c8b1077302\">&#9670;&nbsp;</a></span>Render()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::Render </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acd2aeb8cc2b0e6f73c687f33a6d6e275\" name=\"acd2aeb8cc2b0e6f73c687f33a6d6e275\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd2aeb8cc2b0e6f73c687f33a6d6e275\">&#9670;&nbsp;</a></span>RenderFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::RenderFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9779cf323de425fd5c717313d6aad8b\" name=\"ae9779cf323de425fd5c717313d6aad8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9779cf323de425fd5c717313d6aad8b\">&#9670;&nbsp;</a></span>SetCameraParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetCameraParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>position</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td>\n          <td class=\"paramname\"><em>rotation</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf182d111e026fb394e154ab5fe17e67\" name=\"adf182d111e026fb394e154ab5fe17e67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf182d111e026fb394e154ab5fe17e67\">&#9670;&nbsp;</a></span>SetDrawListIndexRange()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetDrawListIndexRange </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index_offset</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>index_length</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c3c94b835f3e03798bb3384da16713f\" name=\"a4c3c94b835f3e03798bb3384da16713f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c3c94b835f3e03798bb3384da16713f\">&#9670;&nbsp;</a></span>SetDrawListShader()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetDrawListShader </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td>\n          <td class=\"paramname\"><em>material_type</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04006b79fdcb37e6c26b96455bcd9069\" name=\"a04006b79fdcb37e6c26b96455bcd9069\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04006b79fdcb37e6c26b96455bcd9069\">&#9670;&nbsp;</a></span>SetDrawListTextures()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetDrawListTextures </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>texture_count</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t *&#160;</td>\n          <td class=\"paramname\"><em>textures</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b4dbb7711dd9fb23d6203dbd80a9c95\" name=\"a3b4dbb7711dd9fb23d6203dbd80a9c95\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b4dbb7711dd9fb23d6203dbd80a9c95\">&#9670;&nbsp;</a></span>SetDrawListVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetDrawListVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>vertex_array_handle</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44fdc9de63af3f43c4d29717a0b55d32\" name=\"a44fdc9de63af3f43c4d29717a0b55d32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44fdc9de63af3f43c4d29717a0b55d32\">&#9670;&nbsp;</a></span>SetFlags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetFlags </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a28d9fa63fbf51fa66647b60b126d7cf9\" name=\"a28d9fa63fbf51fa66647b60b126d7cf9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d9fa63fbf51fa66647b60b126d7cf9\">&#9670;&nbsp;</a></span>SetLightingParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetLightingParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>sun_direction</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>sun_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>ambient_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>layer</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af02e8a7e03a42d3b6f2ff06651f8073b\" name=\"af02e8a7e03a42d3b6f2ff06651f8073b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af02e8a7e03a42d3b6f2ff06651f8073b\">&#9670;&nbsp;</a></span>SetLightmap()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetLightmap </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>lightmap</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d4b4167ae270b364ed6f02128dac1bb\" name=\"a5d4b4167ae270b364ed6f02128dac1bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d4b4167ae270b364ed6f02128dac1bb\">&#9670;&nbsp;</a></span>SetLightParameters()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetLightParameters </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8251d783fe57884a20b3322750ac4a1d\">light_t</a>&#160;</td>\n          <td class=\"paramname\"><em>light</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>location</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>distance</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a525a02a2f3531fc36106cdb60152b759\" name=\"a525a02a2f3531fc36106cdb60152b759\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a525a02a2f3531fc36106cdb60152b759\">&#9670;&nbsp;</a></span>SetLights()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetLights </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t *&#160;</td>\n          <td class=\"paramname\"><em>lights</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4293c29750809e412f35de97c66176eb\" name=\"a4293c29750809e412f35de97c66176eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4293c29750809e412f35de97c66176eb\">&#9670;&nbsp;</a></span>SetMatrix()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetMatrix </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>matrix</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a16c91d2bdf5aff9c7fab7072f2fc5d29\" name=\"a16c91d2bdf5aff9c7fab7072f2fc5d29\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16c91d2bdf5aff9c7fab7072f2fc5d29\">&#9670;&nbsp;</a></span>SetPose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetPose </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af4d9dfa705bf0806b1ea635a240ff47b\">drawlistentry_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entry</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td>\n          <td class=\"paramname\"><em>pose</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48917373dd38c896c801694d54b945bd\" name=\"a48917373dd38c896c801694d54b945bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48917373dd38c896c801694d54b945bd\">&#9670;&nbsp;</a></span>SetScreenClear()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetScreenClear </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>clear_color</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>clear</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a8c51810d92da7c2577d64266522f7e\" name=\"a3a8c51810d92da7c2577d64266522f7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a8c51810d92da7c2577d64266522f7e\">&#9670;&nbsp;</a></span>SetScreenSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::SetScreenSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa74c1ceab8178c2fb91dd442fd1ac91e\" name=\"aa74c1ceab8178c2fb91dd442fd1ac91e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa74c1ceab8178c2fb91dd442fd1ac91e\">&#9670;&nbsp;</a></span>UpdateVertexArray()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::UpdateVertexArray </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a60b8ff4338d280b96428ee9ea9098800\">vertexhandle_t</a>&#160;</td>\n          <td class=\"paramname\"><em>vertex_buffer_handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>data_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab39da648228e8137ee78c3a0711c8337\" name=\"ab39da648228e8137ee78c3a0711c8337\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab39da648228e8137ee78c3a0711c8337\">&#9670;&nbsp;</a></span>UploadUniformBuffer()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Render::OpenGL::UploadUniformBuffer </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>handle</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>data_size</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"ae96902f7e0a0426c805bf772c58f09d4\" name=\"ae96902f7e0a0426c805bf772c58f09d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae96902f7e0a0426c805bf772c58f09d4\">&#9670;&nbsp;</a></span>bone_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::bone_uniform_binding = 3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a51747b14451578767b47020b8a226b\" name=\"a9a51747b14451578767b47020b8a226b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a51747b14451578767b47020b8a226b\">&#9670;&nbsp;</a></span>bone_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::bone_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31375139ee38a1d2ea1b8dd0f8d98dcd\" name=\"a31375139ee38a1d2ea1b8dd0f8d98dcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31375139ee38a1d2ea1b8dd0f8d98dcd\">&#9670;&nbsp;</a></span>clear_screen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::OpenGL::clear_screen = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa3aaeb4829dfd0227839e89f41786235\" name=\"aa3aaeb4829dfd0227839e89f41786235\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3aaeb4829dfd0227839e89f41786235\">&#9670;&nbsp;</a></span>draw_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">DrawListEntry</a> &gt; tram::Render::OpenGL::draw_list(&quot;render list&quot;, 500, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;render list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">500&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4820905384bd5c8583d4daa0ea8db2a6\" name=\"a4820905384bd5c8583d4daa0ea8db2a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4820905384bd5c8583d4daa0ea8db2a6\">&#9670;&nbsp;</a></span>light_list</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a>&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">LightListEntry</a> &gt; tram::Render::OpenGL::light_list(&quot;light list&quot;, 200, false) </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;light list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">200&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">false&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac26c637e48da2a9022e35cc99119340c\" name=\"ac26c637e48da2a9022e35cc99119340c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac26c637e48da2a9022e35cc99119340c\">&#9670;&nbsp;</a></span>light_tree</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a>&lt;uint32_t&gt; tram::Render::OpenGL::light_tree</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a013065215928554218633a06a37fadf5\" name=\"a013065215928554218633a06a37fadf5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a013065215928554218633a06a37fadf5\">&#9670;&nbsp;</a></span>light_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::light_uniform_binding = 2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a680d10cc22b77f8d004ca8fbd4487d0b\" name=\"a680d10cc22b77f8d004ca8fbd4487d0b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a680d10cc22b77f8d004ca8fbd4487d0b\">&#9670;&nbsp;</a></span>light_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::light_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac44d33d87ac73c54e8c667c3bf807429\" name=\"ac44d33d87ac73c54e8c667c3bf807429\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac44d33d87ac73c54e8c667c3bf807429\">&#9670;&nbsp;</a></span>matrices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a> tram::Render::OpenGL::matrices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aacef80cefcd98d98335b73115033f1af\" name=\"aacef80cefcd98d98335b73115033f1af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacef80cefcd98d98335b73115033f1af\">&#9670;&nbsp;</a></span>matrix_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::matrix_uniform_binding = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a168b5d3e6926690c837de874354232e2\" name=\"a168b5d3e6926690c837de874354232e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a168b5d3e6926690c837de874354232e2\">&#9670;&nbsp;</a></span>matrix_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::matrix_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aad040b8e94f30dea09f188e8184de523\" name=\"aad040b8e94f30dea09f188e8184de523\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aad040b8e94f30dea09f188e8184de523\">&#9670;&nbsp;</a></span>MAX_FRAGMENT_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::MAX_FRAGMENT_SHADERS = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad7e66079b5fc7dbd58d75acc4e6d8687\" name=\"ad7e66079b5fc7dbd58d75acc4e6d8687\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7e66079b5fc7dbd58d75acc4e6d8687\">&#9670;&nbsp;</a></span>MAX_LINKED_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::MAX_LINKED_SHADERS = 40</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab987bec35abe8a774b2b2a230755cba0\" name=\"ab987bec35abe8a774b2b2a230755cba0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab987bec35abe8a774b2b2a230755cba0\">&#9670;&nbsp;</a></span>MAX_MATERIAL_TYPES</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::MAX_MATERIAL_TYPES = 10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af59607c37bc83b62602a1920d1588d75\" name=\"af59607c37bc83b62602a1920d1588d75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af59607c37bc83b62602a1920d1588d75\">&#9670;&nbsp;</a></span>MAX_VERTEX_FORMATS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::MAX_VERTEX_FORMATS = 10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ade49ad801ea0d96a6bd79b5411498bda\" name=\"ade49ad801ea0d96a6bd79b5411498bda\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade49ad801ea0d96a6bd79b5411498bda\">&#9670;&nbsp;</a></span>MAX_VERTEX_SHADERS</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::MAX_VERTEX_SHADERS = 20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3244a8aa2857320fa3f9dd222cd93149\" name=\"a3244a8aa2857320fa3f9dd222cd93149\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3244a8aa2857320fa3f9dd222cd93149\">&#9670;&nbsp;</a></span>model_matrix_uniform_binding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const uint32_t tram::Render::OpenGL::model_matrix_uniform_binding = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a313e5657f492f0e6b0d059a62292fc6e\" name=\"a313e5657f492f0e6b0d059a62292fc6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a313e5657f492f0e6b0d059a62292fc6e\">&#9670;&nbsp;</a></span>model_matrix_uniform_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::model_matrix_uniform_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f7771f25b343fb8778ef1aa99dac0c1\" name=\"a7f7771f25b343fb8778ef1aa99dac0c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f7771f25b343fb8778ef1aa99dac0c1\">&#9670;&nbsp;</a></span>modelMatrices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a> tram::Render::OpenGL::modelMatrices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae1179a897786a3c1c5c4a4654d4640ac\" name=\"ae1179a897786a3c1c5c4a4654d4640ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1179a897786a3c1c5c4a4654d4640ac\">&#9670;&nbsp;</a></span>screen_clear_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::screen_clear_color = {0.2f, 0.3f, 0.3f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77a0155cdffc2139fc32adba12b06802\" name=\"a77a0155cdffc2139fc32adba12b06802\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77a0155cdffc2139fc32adba12b06802\">&#9670;&nbsp;</a></span>shader_path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Render::OpenGL::shader_path = &quot;shaders/opengl3/&quot;</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_render_1_1_scene_tree.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::SceneTree Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_scene_tree.html\">SceneTree</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SceneTree Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Scene tree.  \n<a href=\"namespacetram_1_1_render_1_1_scene_tree.html#details\">More...</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Scene tree. </p>\n<p >Contains the AABBs of all 3D models in the scene. Useful for quickly querying the scene, doing raycasts on the 3D geometry, etc.</p>\n<p >Internally uses an <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> tree. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_script.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Script Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Script Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Scripting API.  \n<a href=\"namespacetram_1_1_script.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">SetGlobal</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value)</td></tr>\n<tr class=\"separator:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">GetGlobal</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446f2631dceec969ceccee5841e8e019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">SetFunction</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt; parameters, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*function)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>))</td></tr>\n<tr class=\"separator:a446f2631dceec969ceccee5841e8e019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">CallFunction</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt; parameters)</td></tr>\n<tr class=\"separator:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142\">Evaluate</a> (const char *code)</td></tr>\n<tr class=\"separator:a658aaf0911ed091e1f6566375fc45142\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66379be86f633359248ee30b1d7b073\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073\">SetInterface</a> (<a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a> *new_language)</td></tr>\n<tr class=\"separator:ad66379be86f633359248ee30b1d7b073\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">LoadScript</a> (const char *path)</td></tr>\n<tr class=\"separator:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">Init</a> ()</td></tr>\n<tr class=\"separator:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Scripting API. </p>\n<p >Allows calling scripting language functions and allows them to call into framework functions.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/script.html\">https://racenis.github.io/tram-sdk/documentation/framework/script.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"af8e8489ae939b80cca8c7b220c230447\" name=\"af8e8489ae939b80cca8c7b220c230447\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8e8489ae939b80cca8c7b220c230447\">&#9670;&nbsp;</a></span>CallFunction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::CallFunction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>parameters</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a658aaf0911ed091e1f6566375fc45142\" name=\"a658aaf0911ed091e1f6566375fc45142\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a658aaf0911ed091e1f6566375fc45142\">&#9670;&nbsp;</a></span>Evaluate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::Evaluate </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>code</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a917b2fc2737b5d72d66ce869fad40b2a\" name=\"a917b2fc2737b5d72d66ce869fad40b2a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a917b2fc2737b5d72d66ce869fad40b2a\">&#9670;&nbsp;</a></span>GetGlobal()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Script::GetGlobal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3df9d0d4778b39ca7c95328ae4fd5a22\" name=\"a3df9d0d4778b39ca7c95328ae4fd5a22\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3df9d0d4778b39ca7c95328ae4fd5a22\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Script::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aadbf03d624e136dc8f25ab15c15e9f1a\" name=\"aadbf03d624e136dc8f25ab15c15e9f1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadbf03d624e136dc8f25ab15c15e9f1a\">&#9670;&nbsp;</a></span>LoadScript()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Script::LoadScript </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>path</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a446f2631dceec969ceccee5841e8e019\" name=\"a446f2631dceec969ceccee5841e8e019\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a446f2631dceec969ceccee5841e8e019\">&#9670;&nbsp;</a></span>SetFunction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Script::SetFunction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>parameters</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>)&#160;</td>\n          <td class=\"paramname\"><em>function</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3052ee4f8a5d4cba402b9342e3a7b0a6\" name=\"a3052ee4f8a5d4cba402b9342e3a7b0a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3052ee4f8a5d4cba402b9342e3a7b0a6\">&#9670;&nbsp;</a></span>SetGlobal()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Script::SetGlobal </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad66379be86f633359248ee30b1d7b073\" name=\"ad66379be86f633359248ee30b1d7b073\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad66379be86f633359248ee30b1d7b073\">&#9670;&nbsp;</a></span>SetInterface()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Script::SetInterface </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_script_1_1_interface.html\">Interface</a> *&#160;</td>\n          <td class=\"paramname\"><em>new_language</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_scriptable_type.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ScriptableType Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">ScriptableType</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ScriptableType Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">ScriptableTypeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> base_type, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*constr_func)(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;), void(*destr_func)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *))</td></tr>\n<tr class=\"separator:a1920e75c5a3e8de81df686d8f4073d04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> base_type, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;data, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;array)</td></tr>\n<tr class=\"separator:a69a13c0e50a7af34965201fdee75210b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73\">Yeet</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *yeetable)</td></tr>\n<tr class=\"separator:a2be0d23b1b7952145abea19ad2bf6c73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a69a13c0e50a7af34965201fdee75210b\" name=\"a69a13c0e50a7af34965201fdee75210b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69a13c0e50a7af34965201fdee75210b\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> * tram::ScriptableType::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>base_type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>new_type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>array</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1920e75c5a3e8de81df686d8f4073d04\" name=\"a1920e75c5a3e8de81df686d8f4073d04\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1920e75c5a3e8de81df686d8f4073d04\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ScriptableType::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>base_type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*)(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;)&#160;</td>\n          <td class=\"paramname\"><em>constr_func</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)&#160;</td>\n          <td class=\"paramname\"><em>destr_func</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2be0d23b1b7952145abea19ad2bf6c73\" name=\"a2be0d23b1b7952145abea19ad2bf6c73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2be0d23b1b7952145abea19ad2bf6c73\">&#9670;&nbsp;</a></span>Yeet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::ScriptableType::Yeet </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>yeetable</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_settings.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Settings Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Application setting management and CLI command parser.  \n<a href=\"namespacetram_1_1_settings.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">RawSetting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a0861538a476a71457a80e698e710eef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">USER</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">APPLICATION</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">MENU</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">NONE</a> = 0\n }</td></tr>\n<tr class=\"separator:a0861538a476a71457a80e698e710eef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1eb24fa09d0b62f743ff74a99945b8ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea\">SetFromRaw</a> (<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a> &amp;info)</td></tr>\n<tr class=\"separator:a1eb24fa09d0b62f743ff74a99945b8ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac51701ca424bff0d1a8251fc6b128643\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643\">SetAndStore</a> (<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a> info)</td></tr>\n<tr class=\"separator:ac51701ca424bff0d1a8251fc6b128643\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a> (bool &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae777d5373a811ea16bac85f681608054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#ae777d5373a811ea16bac85f681608054\">Register</a> (float &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:ae777d5373a811ea16bac85f681608054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#aa67d64e20ae324efb9693944c7a56823\">Register</a> (int32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a8a4aec9c01b32664d1849fe0afde230c\">Register</a> (uint32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">Get</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">Set</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> value)</td></tr>\n<tr class=\"separator:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">Parse</a> (const char **argv, int argc)</td></tr>\n<tr class=\"separator:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a482e75867f85885025dc262763b8df40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">Flags</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a482e75867f85885025dc262763b8df40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">GetSettings</a> (uint32_t filter)</td></tr>\n<tr class=\"separator:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af223a059620ac414794cb974b5923b77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">Save</a> (const char *file)</td></tr>\n<tr class=\"separator:af223a059620ac414794cb974b5923b77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">Load</a> (const char *file)</td></tr>\n<tr class=\"separator:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a18bc51cda3b8cbce070d4d8a3dfef15f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f\">SETTING_LIMIT</a> = 200</td></tr>\n<tr class=\"separator:a18bc51cda3b8cbce070d4d8a3dfef15f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Application setting management and CLI command parser. </p>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a0861538a476a71457a80e698e710eef1\" name=\"a0861538a476a71457a80e698e710eef1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0861538a476a71457a80e698e710eef1\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\" name=\"a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\"></a>USER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\" name=\"a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\"></a>APPLICATION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\" name=\"a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\"></a>MENU&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\" name=\"a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\"></a>NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a482e75867f85885025dc262763b8df40\" name=\"a482e75867f85885025dc262763b8df40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a482e75867f85885025dc262763b8df40\">&#9670;&nbsp;</a></span>Flags()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Settings::Flags </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e673200f6c75070a5e40f65e46f92dd\" name=\"a2e673200f6c75070a5e40f65e46f92dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e673200f6c75070a5e40f65e46f92dd\">&#9670;&nbsp;</a></span>Get()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Settings::Get </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d6040ae5a9915dcc4d905693a63b67a\" name=\"a4d6040ae5a9915dcc4d905693a63b67a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d6040ae5a9915dcc4d905693a63b67a\">&#9670;&nbsp;</a></span>GetSettings()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; tram::Settings::GetSettings </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>filter</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a455697cb70a2b3f4f481dba130d6b181\" name=\"a455697cb70a2b3f4f481dba130d6b181\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a455697cb70a2b3f4f481dba130d6b181\">&#9670;&nbsp;</a></span>Load()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Load </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>file</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2194732b7c9aa48722e59cd5e5ceb456\" name=\"a2194732b7c9aa48722e59cd5e5ceb456\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2194732b7c9aa48722e59cd5e5ceb456\">&#9670;&nbsp;</a></span>Parse()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Parse </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char **&#160;</td>\n          <td class=\"paramname\"><em>argv</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>argc</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56e0d9f488dcff9a350929bf4ef3f8d5\" name=\"a56e0d9f488dcff9a350929bf4ef3f8d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56e0d9f488dcff9a350929bf4ef3f8d5\">&#9670;&nbsp;</a></span>Register() <span class=\"overload\">[1/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae777d5373a811ea16bac85f681608054\" name=\"ae777d5373a811ea16bac85f681608054\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae777d5373a811ea16bac85f681608054\">&#9670;&nbsp;</a></span>Register() <span class=\"overload\">[2/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">float &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa67d64e20ae324efb9693944c7a56823\" name=\"aa67d64e20ae324efb9693944c7a56823\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa67d64e20ae324efb9693944c7a56823\">&#9670;&nbsp;</a></span>Register() <span class=\"overload\">[3/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">int32_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a4aec9c01b32664d1849fe0afde230c\" name=\"a8a4aec9c01b32664d1849fe0afde230c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a4aec9c01b32664d1849fe0afde230c\">&#9670;&nbsp;</a></span>Register() <span class=\"overload\">[4/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>flags</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af223a059620ac414794cb974b5923b77\" name=\"af223a059620ac414794cb974b5923b77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af223a059620ac414794cb974b5923b77\">&#9670;&nbsp;</a></span>Save()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Save </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>file</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33ec2bfcebab7ee764566a172fab7cb5\" name=\"a33ec2bfcebab7ee764566a172fab7cb5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33ec2bfcebab7ee764566a172fab7cb5\">&#9670;&nbsp;</a></span>Set()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::Set </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac51701ca424bff0d1a8251fc6b128643\" name=\"ac51701ca424bff0d1a8251fc6b128643\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac51701ca424bff0d1a8251fc6b128643\">&#9670;&nbsp;</a></span>SetAndStore()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::SetAndStore </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a>&#160;</td>\n          <td class=\"paramname\"><em>info</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1eb24fa09d0b62f743ff74a99945b8ea\" name=\"a1eb24fa09d0b62f743ff74a99945b8ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1eb24fa09d0b62f743ff74a99945b8ea\">&#9670;&nbsp;</a></span>SetFromRaw()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Settings::SetFromRaw </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>info</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a18bc51cda3b8cbce070d4d8a3dfef15f\" name=\"a18bc51cda3b8cbce070d4d8a3dfef15f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18bc51cda3b8cbce070d4d8a3dfef15f\">&#9670;&nbsp;</a></span>SETTING_LIMIT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const int tram::Settings::SETTING_LIMIT = 200</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_stats.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Stats Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">Stats</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Stats Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics.  \n<a href=\"namespacetram_1_1_stats.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">SystemStat</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a3308525cd94517390ff06b22b9fef78e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a> : uint32_t { <a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">RESOURCE_VRAM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">RESOURCE_DRAWCALL</a>\n }</td></tr>\n<tr class=\"separator:a3308525cd94517390ff06b22b9fef78e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">Start</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"memdesc:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">Stop</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"memdesc:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">More...</a><br /></td></tr>\n<tr class=\"separator:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">Add</a> (<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a> resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">More...</a><br /></td></tr>\n<tr class=\"separator:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">Remove</a> (<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a> resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a9686b4d0c7f066e945be48a67719d799\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">More...</a><br /></td></tr>\n<tr class=\"separator:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1240fac658a4410cdd81f6944087a024\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">Collate</a> ()</td></tr>\n<tr class=\"memdesc:a1240fac658a4410cdd81f6944087a024\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Collates all of the time statistics.  <a href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">More...</a><br /></td></tr>\n<tr class=\"separator:a1240fac658a4410cdd81f6944087a024\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">GetStat</a> (<a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a> resource)</td></tr>\n<tr class=\"memdesc:a47a75adf92f441eaf8c99564471f028b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">More...</a><br /></td></tr>\n<tr class=\"separator:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">GetStat</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"memdesc:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the collated time of a system.  <a href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">GetStatUncollated</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"memdesc:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated time of a system.  <a href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">More...</a><br /></td></tr>\n<tr class=\"separator:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">GetStatAverage</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"memdesc:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the ammount of resource, averaged over the last second.  <a href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics. </p>\n<p >Keeps track of resource usage, time spent by different systems, as well as various other counters.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/stats.html\">https://racenis.github.io/tram-sdk/documentation/framework/stats.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a3308525cd94517390ff06b22b9fef78e\" name=\"a3308525cd94517390ff06b22b9fef78e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3308525cd94517390ff06b22b9fef78e\">&#9670;&nbsp;</a></span>Resource</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats::Resource</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\" name=\"a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\"></a>RESOURCE_VRAM&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\" name=\"a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\"></a>RESOURCE_DRAWCALL&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"a7d1692841a6345016a11319bb9d5a3aa\" name=\"a7d1692841a6345016a11319bb9d5a3aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d1692841a6345016a11319bb9d5a3aa\">&#9670;&nbsp;</a></span>Add()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Stats::Add </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>&#160;</td>\n          <td class=\"paramname\"><em>resource</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>ammount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Adds an ammount of a resource. </p>\n\n</div>\n</div>\n<a id=\"a1240fac658a4410cdd81f6944087a024\" name=\"a1240fac658a4410cdd81f6944087a024\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1240fac658a4410cdd81f6944087a024\">&#9670;&nbsp;</a></span>Collate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Stats::Collate </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Collates all of the time statistics. </p>\n\n</div>\n</div>\n<a id=\"a47a75adf92f441eaf8c99564471f028b\" name=\"a47a75adf92f441eaf8c99564471f028b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47a75adf92f441eaf8c99564471f028b\">&#9670;&nbsp;</a></span>GetStat() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Stats::GetStat </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>&#160;</td>\n          <td class=\"paramname\"><em>resource</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the uncollated ammount of a resource. </p>\n\n</div>\n</div>\n<a id=\"ac6bed4088975e4651fdcffd10f2d1ddb\" name=\"ac6bed4088975e4651fdcffd10f2d1ddb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6bed4088975e4651fdcffd10f2d1ddb\">&#9670;&nbsp;</a></span>GetStat() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::GetStat </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the collated time of a system. </p>\n\n</div>\n</div>\n<a id=\"a9fb3323e6726d2010fab092bc9180dd1\" name=\"a9fb3323e6726d2010fab092bc9180dd1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fb3323e6726d2010fab092bc9180dd1\">&#9670;&nbsp;</a></span>GetStatAverage()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::GetStatAverage </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the ammount of resource, averaged over the last second. </p>\n\n</div>\n</div>\n<a id=\"adc7ecc593e1e434e5df1f573651e146a\" name=\"adc7ecc593e1e434e5df1f573651e146a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc7ecc593e1e434e5df1f573651e146a\">&#9670;&nbsp;</a></span>GetStatUncollated()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::GetStatUncollated </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the uncollated time of a system. </p>\n\n</div>\n</div>\n<a id=\"a9686b4d0c7f066e945be48a67719d799\" name=\"a9686b4d0c7f066e945be48a67719d799\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9686b4d0c7f066e945be48a67719d799\">&#9670;&nbsp;</a></span>Remove()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Stats::Remove </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a>&#160;</td>\n          <td class=\"paramname\"><em>resource</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>ammount</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Removes an ammount of a resource. </p>\n\n</div>\n</div>\n<a id=\"a3b4a3c925a0c33d945546aac71b22c58\" name=\"a3b4a3c925a0c33d945546aac71b22c58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b4a3c925a0c33d945546aac71b22c58\">&#9670;&nbsp;</a></span>Start()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Stats::Start </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Starts counting time spent on a system. </p>\n\n</div>\n</div>\n<a id=\"a254f2eae826c19cdfaa8acdc7a80310b\" name=\"a254f2eae826c19cdfaa8acdc7a80310b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a254f2eae826c19cdfaa8acdc7a80310b\">&#9670;&nbsp;</a></span>Stop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Stats::Stop </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Stops counting time spent on a system. </p>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_system.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::System Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">System</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::System Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking.  \n<a href=\"namespacetram_1_1_system.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">SystemInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a></td></tr>\n<tr class=\"separator:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">System</a> : system_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\">INVALID</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">CORE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\">PLATFORM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\">UI</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\">GUI</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\">ASYNC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\">RENDER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\">PHYSICS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\">AUDIO</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\">MISC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">SYSTEM_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4703b937891576671c79a6d02a63c0a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a> { <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\">YEET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\">INIT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\">READY</a>\n }</td></tr>\n<tr class=\"separator:a4703b937891576671c79a6d02a63c0a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">Register</a> (char const *name, char const *short_name)</td></tr>\n<tr class=\"memdesc:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new system.  <a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">More...</a><br /></td></tr>\n<tr class=\"separator:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">Find</a> (char const *name)</td></tr>\n<tr class=\"memdesc:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a registered system.  <a href=\"namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de\">More...</a><br /></td></tr>\n<tr class=\"separator:a80685c0799c2a0af7c493bfaf7de86de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">GetName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the full name of a system.  <a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">GetShortName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:aa9b274cc4e89cca2157eae886db07355\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the short name of a system.  <a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a268bed781cdfb281916c2475f969b55d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">SetInitialized</a> (uint32_t system, bool is_initialized)</td></tr>\n<tr class=\"memdesc:a268bed781cdfb281916c2475f969b55d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the initialization status of a system.  <a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">More...</a><br /></td></tr>\n<tr class=\"separator:a268bed781cdfb281916c2475f969b55d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">IsInitialized</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is initialized.  <a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">SetState</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system, <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a> state)</td></tr>\n<tr class=\"memdesc:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the state of a system.  <a href=\"namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b2b06b04a927a1cbb754d1054130ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49\">AssertDependency</a> (<a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system)</td></tr>\n<tr class=\"separator:ae343978bd8ac9ddbc48dbffa5aea2f49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">GetSystemCount</a> ()</td></tr>\n<tr class=\"memdesc:a338ea827ae004b8133debac8bb1428a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the total count of registered systems.  <a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> tracking. </p>\n<p >This system keeps track of other systems, their initialization status, as well as their names.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/system.html\">https://racenis.github.io/tram-sdk/documentation/framework/system.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"a3480b59cb32a6f70ad1fce1626b64e40\" name=\"a3480b59cb32a6f70ad1fce1626b64e40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3480b59cb32a6f70ad1fce1626b64e40\">&#9670;&nbsp;</a></span>system_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint32_t <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02b5e7a5340ef5ca42a650ca4d8ade65\">&#9670;&nbsp;</a></span>System</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System::System</a> : <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861\"></a>INVALID&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\"></a>CORE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9\"></a>PLATFORM&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50\"></a>UI&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a\"></a>GUI&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f\"></a>ASYNC&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7\"></a>RENDER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622\"></a>PHYSICS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee\"></a>AUDIO&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207\"></a>MISC&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\" name=\"a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\"></a>SYSTEM_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a4703b937891576671c79a6d02a63c0a2\" name=\"a4703b937891576671c79a6d02a63c0a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4703b937891576671c79a6d02a63c0a2\">&#9670;&nbsp;</a></span>SystemState</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">tram::System::SystemState</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\" name=\"a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d\"></a>YEET&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\" name=\"a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38\"></a>INIT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\" name=\"a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958\"></a>READY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"ae343978bd8ac9ddbc48dbffa5aea2f49\" name=\"ae343978bd8ac9ddbc48dbffa5aea2f49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae343978bd8ac9ddbc48dbffa5aea2f49\">&#9670;&nbsp;</a></span>AssertDependency()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::System::AssertDependency </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a80685c0799c2a0af7c493bfaf7de86de\" name=\"a80685c0799c2a0af7c493bfaf7de86de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80685c0799c2a0af7c493bfaf7de86de\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> tram::System::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\">char const *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Registers a registered system. </p>\n<p >If the system was registered with the <a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\" title=\"Registers a new system.\">Register()</a> function, its system_t identificator will be returned. If a system with the name was not registered, this function will return a SYSTEM_INVALID identificator. </p>\n\n</div>\n</div>\n<a id=\"a2ca63f47f3cfdfd0eb183d46b36f9701\" name=\"a2ca63f47f3cfdfd0eb183d46b36f9701\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ca63f47f3cfdfd0eb183d46b36f9701\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char const  * tram::System::GetName </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Retrieves the full name of a system. </p>\n\n</div>\n</div>\n<a id=\"aa9b274cc4e89cca2157eae886db07355\" name=\"aa9b274cc4e89cca2157eae886db07355\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9b274cc4e89cca2157eae886db07355\">&#9670;&nbsp;</a></span>GetShortName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char const  * tram::System::GetShortName </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Retrieves the short name of a system. </p>\n\n</div>\n</div>\n<a id=\"a338ea827ae004b8133debac8bb1428a6\" name=\"a338ea827ae004b8133debac8bb1428a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a338ea827ae004b8133debac8bb1428a6\">&#9670;&nbsp;</a></span>GetSystemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::System::GetSystemCount </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Returns the total count of registered systems. </p>\n\n</div>\n</div>\n<a id=\"a1c1f26d92502016519f4a147cdc0fbc2\" name=\"a1c1f26d92502016519f4a147cdc0fbc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c1f26d92502016519f4a147cdc0fbc2\">&#9670;&nbsp;</a></span>IsInitialized()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::System::IsInitialized </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>system</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks if a system is initialized. </p>\n\n</div>\n</div>\n<a id=\"aee7d79683193e5c01dab72b3bd84e710\" name=\"aee7d79683193e5c01dab72b3bd84e710\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee7d79683193e5c01dab72b3bd84e710\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> tram::System::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">char const *&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">char const *&#160;</td>\n          <td class=\"paramname\"><em>short_name</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new system. </p>\n<dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">name</td><td>Full name of the system. </td></tr>\n    <tr><td class=\"paramname\">short_name</td><td>Name of the system that will be displayed in log messages. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"a268bed781cdfb281916c2475f969b55d\" name=\"a268bed781cdfb281916c2475f969b55d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a268bed781cdfb281916c2475f969b55d\">&#9670;&nbsp;</a></span>SetInitialized()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::System::SetInitialized </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>is_initialized</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the initialization status of a system. </p>\n\n</div>\n</div>\n<a id=\"a3b2b06b04a927a1cbb754d1054130ddb\" name=\"a3b2b06b04a927a1cbb754d1054130ddb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b2b06b04a927a1cbb754d1054130ddb\">&#9670;&nbsp;</a></span>SetState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::System::SetState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the state of a system. </p>\n<ul>\n<li><code>YEET</code> when a system is uninitialized.</li>\n<li><code>INIT</code> when a system is initializing.</li>\n<li><code>READY</code> when a system is initialized. </li>\n</ul>\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1_u_i.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::UI Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">UI</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::UI Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>User interface system.  \n<a href=\"namespacetram_1_1_u_i.html#details\">More...</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">KeyBinding</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a7127b8ce6c937f44455685b8ec1f0461\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a></td></tr>\n<tr class=\"separator:a7127b8ce6c937f44455685b8ec1f0461\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:acf6b27efa4c062d8c7110a6fb9f9fde9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> : uint16_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">KEY_SPACE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">KEY_APOSTROPHE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">KEY_COMMA</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">KEY_MINUS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">KEY_PERIOD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">KEY_SLASH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">KEY_0</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">KEY_1</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">KEY_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">KEY_3</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">KEY_4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">KEY_5</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">KEY_6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">KEY_7</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">KEY_8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">KEY_9</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">KEY_SEMICOLON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">KEY_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">KEY_A</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">KEY_B</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">KEY_C</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">KEY_D</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">KEY_E</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">KEY_F</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">KEY_G</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">KEY_H</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">KEY_I</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">KEY_J</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">KEY_K</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">KEY_L</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">KEY_M</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">KEY_N</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">KEY_O</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">KEY_P</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">KEY_Q</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">KEY_R</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">KEY_S</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">KEY_T</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">KEY_U</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">KEY_V</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">KEY_W</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">KEY_X</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">KEY_Y</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">KEY_Z</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">KEY_LEFT_BRACKET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">KEY_BACKSLASH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">KEY_RIGHT_BRACKET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">KEY_GRAVE_ACCENT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">KEY_WORLD_1</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">KEY_WORLD_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">KEY_ESCAPE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">KEY_ENTER</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">KEY_TAB</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">KEY_BACKSPACE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">KEY_INSERT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">KEY_DELETE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">KEY_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">KEY_LEFT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">KEY_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">KEY_UP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">KEY_PAGE_UP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">KEY_PAGE_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">KEY_HOME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">KEY_END</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">KEY_CAPS_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">KEY_SCROLL_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">KEY_NUM_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">KEY_PRINT_SCREEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">KEY_PAUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">KEY_F1</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">KEY_F2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">KEY_F3</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">KEY_F4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">KEY_F5</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">KEY_F6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">KEY_F7</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">KEY_F8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">KEY_F9</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">KEY_F10</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">KEY_F11</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">KEY_F12</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">KEY_F13</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">KEY_F14</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">KEY_F15</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">KEY_F16</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">KEY_F17</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">KEY_F18</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">KEY_F19</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">KEY_F20</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">KEY_F21</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">KEY_F22</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">KEY_F23</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">KEY_F24</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">KEY_F25</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">KEY_KP_0</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">KEY_KP_1</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">KEY_KP_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">KEY_KP_3</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">KEY_KP_4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">KEY_KP_5</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">KEY_KP_6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">KEY_KP_7</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">KEY_KP_8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">KEY_KP_9</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">KEY_KP_DECIMAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">KEY_KP_DIVIDE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">KEY_KP_MULTIPLY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">KEY_KP_SUBTRACT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">KEY_KP_ADD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">KEY_KP_ENTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">KEY_KP_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">KEY_LEFT_SHIFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">KEY_LEFT_CONTROL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">KEY_LEFT_ALT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">KEY_LEFT_SUPER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">KEY_RIGHT_SHIFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">KEY_RIGHT_CONTROL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">KEY_RIGHT_ALT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">KEY_RIGHT_SUPER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">KEY_MENU</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">KEY_RIGHTMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">KEY_LEFTMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">KEY_MIDDLEMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">KEY_LASTKEY</a>\n<br />\n }</td></tr>\n<tr class=\"separator:acf6b27efa4c062d8c7110a6fb9f9fde9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aace717edeba1f507cd383c7d1f00e064\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">KEY_MOUSE_X</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">KEY_MOUSE_Y</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">KEY_MOUSE_SCROLL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">KEY_LASTAXIS</a>\n }</td></tr>\n<tr class=\"separator:aace717edeba1f507cd383c7d1f00e064\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef59b5ccd9382ca4fdd1f951a9b68aef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">STATE_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">STATE_NO_INPUT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">STATE_FLYING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">STATE_MENU_OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">STATE_CURSOR</a>\n<br />\n }</td></tr>\n<tr class=\"separator:aef59b5ccd9382ca4fdd1f951a9b68aef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a642ac99af3c1ebae068607e82baa5f99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">KeyboardAction</a> : keyboardaction_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">KEY_ACTION_NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">KEY_ACTION_FORWARD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">KEY_ACTION_BACKWARD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">KEY_ACTION_STRAFE_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">KEY_ACTION_STRAFE_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">KEY_ACTION_UP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">KEY_ACTION_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">KEY_ACTION_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">KEY_ACTION_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">KEY_ACTION_JUMP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">KEY_ACTION_CROUCH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">KEY_ACTION_SPRINT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">KEY_ACTION_FLY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">KEY_ACTION_ACTIVATE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">KEY_ACTION_PRIMARY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">KEY_ACTION_SECONDARY</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">KEY_ACTION_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a642ac99af3c1ebae068607e82baa5f99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ae9e156e84d2049fc1e691a10e0348f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a> { <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">CURSOR_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">CURSOR_TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">CURSOR_CLICK</a>\n }</td></tr>\n<tr class=\"separator:a6ae9e156e84d2049fc1e691a10e0348f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">BindKeyboardKey</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> action)</td></tr>\n<tr class=\"separator:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49763cc0300d866370805b94a99f36fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a49763cc0300d866370805b94a99f36fd\">BindKeyboardKey</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, void(*action)())</td></tr>\n<tr class=\"separator:a49763cc0300d866370805b94a99f36fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a581823cdaa8ed3cef6f48d2610961511\">BindKeyboardKey</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, void(*action)(<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>))</td></tr>\n<tr class=\"separator:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">Init</a> ()</td></tr>\n<tr class=\"memdesc:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">More...</a><br /></td></tr>\n<tr class=\"separator:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">Uninit</a> ()</td></tr>\n<tr class=\"memdesc:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Uninitializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">More...</a><br /></td></tr>\n<tr class=\"separator:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">Update</a> ()</td></tr>\n<tr class=\"memdesc:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">More...</a><br /></td></tr>\n<tr class=\"separator:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">EndFrame</a> ()</td></tr>\n<tr class=\"memdesc:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the frame and updates the window.  <a href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">More...</a><br /></td></tr>\n<tr class=\"separator:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">SetWebMainLoop</a> (void(*loop_function)(void))</td></tr>\n<tr class=\"separator:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">GetScreenWidth</a> ()</td></tr>\n<tr class=\"separator:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">GetScreenHeight</a> ()</td></tr>\n<tr class=\"separator:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a390f8622eafc311400a2454f11dfc016\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">SetWindowTitle</a> (const char *title)</td></tr>\n<tr class=\"separator:a390f8622eafc311400a2454f11dfc016\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">SetWindowSize</a> (int w, int h)</td></tr>\n<tr class=\"memdesc:a39ef71fa7757a83fa159686920f16f78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the window size.  <a href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">More...</a><br /></td></tr>\n<tr class=\"separator:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">SetCursor</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a> cursor)</td></tr>\n<tr class=\"separator:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">SetInputState</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> state)</td></tr>\n<tr class=\"separator:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">GetInputState</a> ()</td></tr>\n<tr class=\"separator:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">PollKeyboardKey</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key)</td></tr>\n<tr class=\"memdesc:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of a key for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">PollKeyboardAxis</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key)</td></tr>\n<tr class=\"memdesc:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of an axis for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">More...</a><br /></td></tr>\n<tr class=\"separator:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">PollKeyboardAxisDelta</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key)</td></tr>\n<tr class=\"memdesc:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the change of an axis for since the last frame.  <a href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">GetAxisSensitivity</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key)</td></tr>\n<tr class=\"separator:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">SetAxisSensitivity</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key, float value)</td></tr>\n<tr class=\"separator:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad23f479a3671059a175ec92cc496018d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">KeyPress</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key)</td></tr>\n<tr class=\"separator:ad23f479a3671059a175ec92cc496018d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">KeyRelease</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key)</td></tr>\n<tr class=\"separator:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">KeyCode</a> (uint16_t code)</td></tr>\n<tr class=\"separator:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">KeyMouse</a> (float xpos, float ypos)</td></tr>\n<tr class=\"separator:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">KeyScroll</a> (float value)</td></tr>\n<tr class=\"separator:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">ScreenResize</a> (int width, int height)</td></tr>\n<tr class=\"separator:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">ScreenClose</a> ()</td></tr>\n<tr class=\"separator:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">ShouldExit</a> ()</td></tr>\n<tr class=\"separator:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">RegisterKeyboardAction</a> (const char *name)</td></tr>\n<tr class=\"separator:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">GetKeyboardAction</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"separator:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecde138c9de471bd9ef945d534669832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">GetKeyboardActionName</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> type)</td></tr>\n<tr class=\"separator:aecde138c9de471bd9ef945d534669832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>, std::vector&lt; <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">GetAllKeyboardKeyBindings</a> ()</td></tr>\n<tr class=\"separator:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">GetKeyboardKeyName</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key)</td></tr>\n<tr class=\"separator:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a2613ca9ec2e1a030b94d21e9e87281af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">CAMERA_SENSITIVITY</a> = 6.0f</td></tr>\n<tr class=\"separator:a2613ca9ec2e1a030b94d21e9e87281af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf999f961120350df3549cff1d0c9b0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">CAMERA_SPEED</a> = 6.0f</td></tr>\n<tr class=\"separator:acf999f961120350df3549cff1d0c9b0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >User interface system. </p>\n<p >Handles opening the window, taking in keyboard and mouse inputs.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/ui.html\">https://racenis.github.io/tram-sdk/documentation/framework/ui.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Typedef Documentation</h2>\n<a id=\"a7127b8ce6c937f44455685b8ec1f0461\" name=\"a7127b8ce6c937f44455685b8ec1f0461\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7127b8ce6c937f44455685b8ec1f0461\">&#9670;&nbsp;</a></span>keyboardaction_t</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">typedef uint16_t <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">tram::UI::keyboardaction_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n<a id=\"a6ae9e156e84d2049fc1e691a10e0348f\" name=\"a6ae9e156e84d2049fc1e691a10e0348f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ae9e156e84d2049fc1e691a10e0348f\">&#9670;&nbsp;</a></span>CursorType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">tram::UI::CursorType</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\" name=\"a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\"></a>CURSOR_DEFAULT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\" name=\"a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\"></a>CURSOR_TEXT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\" name=\"a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\"></a>CURSOR_CLICK&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aef59b5ccd9382ca4fdd1f951a9b68aef\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef59b5ccd9382ca4fdd1f951a9b68aef\">&#9670;&nbsp;</a></span>InputState</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">tram::UI::InputState</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\"></a>STATE_DEFAULT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\"></a>STATE_NO_INPUT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\"></a>STATE_FLYING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\"></a>STATE_MENU_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\" name=\"aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\"></a>STATE_CURSOR&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a642ac99af3c1ebae068607e82baa5f99\" name=\"a642ac99af3c1ebae068607e82baa5f99\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a642ac99af3c1ebae068607e82baa5f99\">&#9670;&nbsp;</a></span>KeyboardAction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">tram::UI::KeyboardAction</a> : <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\" name=\"a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\"></a>KEY_ACTION_NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\" name=\"a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\"></a>KEY_ACTION_FORWARD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\" name=\"a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\"></a>KEY_ACTION_BACKWARD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\" name=\"a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\"></a>KEY_ACTION_STRAFE_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\" name=\"a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\"></a>KEY_ACTION_STRAFE_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\" name=\"a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\"></a>KEY_ACTION_UP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\" name=\"a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\"></a>KEY_ACTION_DOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\" name=\"a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\"></a>KEY_ACTION_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\" name=\"a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\"></a>KEY_ACTION_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\" name=\"a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\"></a>KEY_ACTION_JUMP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\" name=\"a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\"></a>KEY_ACTION_CROUCH&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\" name=\"a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\"></a>KEY_ACTION_SPRINT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\" name=\"a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\"></a>KEY_ACTION_FLY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\" name=\"a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\"></a>KEY_ACTION_ACTIVATE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\" name=\"a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\"></a>KEY_ACTION_PRIMARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\" name=\"a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\"></a>KEY_ACTION_SECONDARY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\" name=\"a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\"></a>KEY_ACTION_LAST&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"aace717edeba1f507cd383c7d1f00e064\" name=\"aace717edeba1f507cd383c7d1f00e064\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aace717edeba1f507cd383c7d1f00e064\">&#9670;&nbsp;</a></span>KeyboardAxis</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">tram::UI::KeyboardAxis</a> : uint16_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\" name=\"aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\"></a>KEY_MOUSE_X&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\" name=\"aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\"></a>KEY_MOUSE_Y&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\" name=\"aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\"></a>KEY_MOUSE_SCROLL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\" name=\"aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\"></a>KEY_LASTAXIS&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf6b27efa4c062d8c7110a6fb9f9fde9\">&#9670;&nbsp;</a></span>KeyboardKey</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">tram::UI::KeyboardKey</a> : uint16_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\"></a>KEY_SPACE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\"></a>KEY_APOSTROPHE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\"></a>KEY_COMMA&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\"></a>KEY_MINUS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\"></a>KEY_PERIOD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\"></a>KEY_SLASH&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\"></a>KEY_0&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\"></a>KEY_1&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\"></a>KEY_2&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\"></a>KEY_3&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\"></a>KEY_4&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\"></a>KEY_5&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\"></a>KEY_6&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\"></a>KEY_7&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\"></a>KEY_8&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\"></a>KEY_9&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\"></a>KEY_SEMICOLON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\"></a>KEY_EQUAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\"></a>KEY_A&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\"></a>KEY_B&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\"></a>KEY_C&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\"></a>KEY_D&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\"></a>KEY_E&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\"></a>KEY_F&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\"></a>KEY_G&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\"></a>KEY_H&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\"></a>KEY_I&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\"></a>KEY_J&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\"></a>KEY_K&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\"></a>KEY_L&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\"></a>KEY_M&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\"></a>KEY_N&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\"></a>KEY_O&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\"></a>KEY_P&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\"></a>KEY_Q&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\"></a>KEY_R&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\"></a>KEY_S&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\"></a>KEY_T&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\"></a>KEY_U&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\"></a>KEY_V&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\"></a>KEY_W&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\"></a>KEY_X&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\"></a>KEY_Y&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\"></a>KEY_Z&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\"></a>KEY_LEFT_BRACKET&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\"></a>KEY_BACKSLASH&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\"></a>KEY_RIGHT_BRACKET&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\"></a>KEY_GRAVE_ACCENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\"></a>KEY_WORLD_1&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\"></a>KEY_WORLD_2&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\"></a>KEY_ESCAPE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\"></a>KEY_ENTER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\"></a>KEY_TAB&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\"></a>KEY_BACKSPACE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\"></a>KEY_INSERT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\"></a>KEY_DELETE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\"></a>KEY_RIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\"></a>KEY_LEFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\"></a>KEY_DOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\"></a>KEY_UP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\"></a>KEY_PAGE_UP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\"></a>KEY_PAGE_DOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\"></a>KEY_HOME&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\"></a>KEY_END&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\"></a>KEY_CAPS_LOCK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\"></a>KEY_SCROLL_LOCK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\"></a>KEY_NUM_LOCK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\"></a>KEY_PRINT_SCREEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\"></a>KEY_PAUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\"></a>KEY_F1&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\"></a>KEY_F2&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\"></a>KEY_F3&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\"></a>KEY_F4&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\"></a>KEY_F5&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\"></a>KEY_F6&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\"></a>KEY_F7&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\"></a>KEY_F8&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\"></a>KEY_F9&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\"></a>KEY_F10&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\"></a>KEY_F11&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\"></a>KEY_F12&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\"></a>KEY_F13&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\"></a>KEY_F14&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\"></a>KEY_F15&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\"></a>KEY_F16&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\"></a>KEY_F17&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\"></a>KEY_F18&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\"></a>KEY_F19&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\"></a>KEY_F20&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\"></a>KEY_F21&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\"></a>KEY_F22&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\"></a>KEY_F23&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\"></a>KEY_F24&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\"></a>KEY_F25&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\"></a>KEY_KP_0&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\"></a>KEY_KP_1&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\"></a>KEY_KP_2&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\"></a>KEY_KP_3&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\"></a>KEY_KP_4&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\"></a>KEY_KP_5&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\"></a>KEY_KP_6&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\"></a>KEY_KP_7&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\"></a>KEY_KP_8&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\"></a>KEY_KP_9&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\"></a>KEY_KP_DECIMAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\"></a>KEY_KP_DIVIDE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\"></a>KEY_KP_MULTIPLY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\"></a>KEY_KP_SUBTRACT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\"></a>KEY_KP_ADD&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\"></a>KEY_KP_ENTER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\"></a>KEY_KP_EQUAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\"></a>KEY_LEFT_SHIFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\"></a>KEY_LEFT_CONTROL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\"></a>KEY_LEFT_ALT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\"></a>KEY_LEFT_SUPER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\"></a>KEY_RIGHT_SHIFT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\"></a>KEY_RIGHT_CONTROL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\"></a>KEY_RIGHT_ALT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\"></a>KEY_RIGHT_SUPER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\"></a>KEY_MENU&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\"></a>KEY_RIGHTMOUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\"></a>KEY_LEFTMOUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\"></a>KEY_MIDDLEMOUSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\" name=\"acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\"></a>KEY_LASTKEY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"aa3f058ce3fd0e6b76f3224eb80f547c9\" name=\"aa3f058ce3fd0e6b76f3224eb80f547c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3f058ce3fd0e6b76f3224eb80f547c9\">&#9670;&nbsp;</a></span>BindKeyboardKey() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::BindKeyboardKey </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>&#160;</td>\n          <td class=\"paramname\"><em>action</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a49763cc0300d866370805b94a99f36fd\" name=\"a49763cc0300d866370805b94a99f36fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49763cc0300d866370805b94a99f36fd\">&#9670;&nbsp;</a></span>BindKeyboardKey() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::BindKeyboardKey </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)()&#160;</td>\n          <td class=\"paramname\"><em>action</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a581823cdaa8ed3cef6f48d2610961511\" name=\"a581823cdaa8ed3cef6f48d2610961511\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a581823cdaa8ed3cef6f48d2610961511\">&#9670;&nbsp;</a></span>BindKeyboardKey() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::BindKeyboardKey </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>)&#160;</td>\n          <td class=\"paramname\"><em>action</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a303b8e17aa7e0dff5839a0b1ab33d391\" name=\"a303b8e17aa7e0dff5839a0b1ab33d391\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a303b8e17aa7e0dff5839a0b1ab33d391\">&#9670;&nbsp;</a></span>EndFrame()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::EndFrame </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Ends the frame and updates the window. </p>\n\n</div>\n</div>\n<a id=\"a95733211eecad5c91c9f4ae453765a91\" name=\"a95733211eecad5c91c9f4ae453765a91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95733211eecad5c91c9f4ae453765a91\">&#9670;&nbsp;</a></span>GetAllKeyboardKeyBindings()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>, std::vector&lt; <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> &gt; &gt; &gt; tram::UI::GetAllKeyboardKeyBindings </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e57de90a0a4d8616e2ac2115bc2a09c\" name=\"a2e57de90a0a4d8616e2ac2115bc2a09c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e57de90a0a4d8616e2ac2115bc2a09c\">&#9670;&nbsp;</a></span>GetAxisSensitivity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::UI::GetAxisSensitivity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6865ff9dd91ce26566f1867e6005980d\" name=\"a6865ff9dd91ce26566f1867e6005980d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6865ff9dd91ce26566f1867e6005980d\">&#9670;&nbsp;</a></span>GetInputState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> tram::UI::GetInputState </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a151dea9e688c18e631f2aaef4758497b\" name=\"a151dea9e688c18e631f2aaef4758497b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a151dea9e688c18e631f2aaef4758497b\">&#9670;&nbsp;</a></span>GetKeyboardAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> tram::UI::GetKeyboardAction </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aecde138c9de471bd9ef945d534669832\" name=\"aecde138c9de471bd9ef945d534669832\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aecde138c9de471bd9ef945d534669832\">&#9670;&nbsp;</a></span>GetKeyboardActionName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::UI::GetKeyboardActionName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6c013d6464921c3bdcb5b3a2906148ce\" name=\"a6c013d6464921c3bdcb5b3a2906148ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c013d6464921c3bdcb5b3a2906148ce\">&#9670;&nbsp;</a></span>GetKeyboardKeyName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char * tram::UI::GetKeyboardKeyName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a982ad2ea96f9db1688a0004ba480bb66\" name=\"a982ad2ea96f9db1688a0004ba480bb66\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a982ad2ea96f9db1688a0004ba480bb66\">&#9670;&nbsp;</a></span>GetScreenHeight()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::UI::GetScreenHeight </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a761e8c28f0e3748eb8b618b1fd393aca\" name=\"a761e8c28f0e3748eb8b618b1fd393aca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a761e8c28f0e3748eb8b618b1fd393aca\">&#9670;&nbsp;</a></span>GetScreenWidth()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::UI::GetScreenWidth </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a34c539a00c1e5228b2ee9d9f69de5af8\" name=\"a34c539a00c1e5228b2ee9d9f69de5af8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34c539a00c1e5228b2ee9d9f69de5af8\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Initializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system. </p>\n<p >This will open the window. </p>\n\n</div>\n</div>\n<a id=\"ac636614381ad3dbc2f776a81b079d7aa\" name=\"ac636614381ad3dbc2f776a81b079d7aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac636614381ad3dbc2f776a81b079d7aa\">&#9670;&nbsp;</a></span>KeyCode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::KeyCode </td>\n          <td>(</td>\n          <td class=\"paramtype\">uint16_t&#160;</td>\n          <td class=\"paramname\"><em>code</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa2ea74c6f62438b6f846bee415717c6b\" name=\"aa2ea74c6f62438b6f846bee415717c6b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2ea74c6f62438b6f846bee415717c6b\">&#9670;&nbsp;</a></span>KeyMouse()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::KeyMouse </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>xpos</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>ypos</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad23f479a3671059a175ec92cc496018d\" name=\"ad23f479a3671059a175ec92cc496018d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad23f479a3671059a175ec92cc496018d\">&#9670;&nbsp;</a></span>KeyPress()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::KeyPress </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46b24e31c21dac00a0d569caeed3a3c7\" name=\"a46b24e31c21dac00a0d569caeed3a3c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46b24e31c21dac00a0d569caeed3a3c7\">&#9670;&nbsp;</a></span>KeyRelease()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::KeyRelease </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6b5c256e6ef51e21a36a61a03114383c\" name=\"a6b5c256e6ef51e21a36a61a03114383c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b5c256e6ef51e21a36a61a03114383c\">&#9670;&nbsp;</a></span>KeyScroll()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::KeyScroll </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3667dadfea3dcd6dff80d60611fb7cdc\" name=\"a3667dadfea3dcd6dff80d60611fb7cdc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3667dadfea3dcd6dff80d60611fb7cdc\">&#9670;&nbsp;</a></span>PollKeyboardAxis()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::UI::PollKeyboardAxis </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks the state of an axis for the current frame. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"classtram_1_1_value.html\" title=\"Generic, type-safe union.\">Value</a> of the axis. </dd></dl>\n\n</div>\n</div>\n<a id=\"a5cb12417deb961741e7269cbe3398dd1\" name=\"a5cb12417deb961741e7269cbe3398dd1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cb12417deb961741e7269cbe3398dd1\">&#9670;&nbsp;</a></span>PollKeyboardAxisDelta()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::UI::PollKeyboardAxisDelta </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks the change of an axis for since the last frame. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd><a class=\"el\" href=\"classtram_1_1_value.html\" title=\"Generic, type-safe union.\">Value</a> of the axis delta. </dd></dl>\n\n</div>\n</div>\n<a id=\"a7a1f37f6e233c727f219f06aefc745ef\" name=\"a7a1f37f6e233c727f219f06aefc745ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a1f37f6e233c727f219f06aefc745ef\">&#9670;&nbsp;</a></span>PollKeyboardKey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UI::PollKeyboardKey </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Checks the state of a key for the current frame. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True, if key is pressed, false otherwise. </dd></dl>\n\n</div>\n</div>\n<a id=\"a01f1e35610c8d42fbf3f65a1b192dcb9\" name=\"a01f1e35610c8d42fbf3f65a1b192dcb9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01f1e35610c8d42fbf3f65a1b192dcb9\">&#9670;&nbsp;</a></span>RegisterKeyboardAction()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> tram::UI::RegisterKeyboardAction </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aca1f573178e278ecf636cbe954aa6487\" name=\"aca1f573178e278ecf636cbe954aa6487\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca1f573178e278ecf636cbe954aa6487\">&#9670;&nbsp;</a></span>ScreenClose()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::ScreenClose </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ca04b3e70a301b34b59d9aa2dde6282\" name=\"a8ca04b3e70a301b34b59d9aa2dde6282\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ca04b3e70a301b34b59d9aa2dde6282\">&#9670;&nbsp;</a></span>ScreenResize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::ScreenResize </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>width</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafa7d6428092dcd22b4ea486c948baf5\" name=\"aafa7d6428092dcd22b4ea486c948baf5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafa7d6428092dcd22b4ea486c948baf5\">&#9670;&nbsp;</a></span>SetAxisSensitivity()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetAxisSensitivity </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a>&#160;</td>\n          <td class=\"paramname\"><em>key</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6ca596524ffb0c21621d8cfdcf9c5fbf\" name=\"a6ca596524ffb0c21621d8cfdcf9c5fbf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ca596524ffb0c21621d8cfdcf9c5fbf\">&#9670;&nbsp;</a></span>SetCursor()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetCursor </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a>&#160;</td>\n          <td class=\"paramname\"><em>cursor</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdd66ea8df097a0c2b314b87850cef35\" name=\"abdd66ea8df097a0c2b314b87850cef35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdd66ea8df097a0c2b314b87850cef35\">&#9670;&nbsp;</a></span>SetInputState()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetInputState </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a654d5f4b77f90147a9098acce21b19df\" name=\"a654d5f4b77f90147a9098acce21b19df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a654d5f4b77f90147a9098acce21b19df\">&#9670;&nbsp;</a></span>SetWebMainLoop()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetWebMainLoop </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(void)&#160;</td>\n          <td class=\"paramname\"><em>loop_function</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39ef71fa7757a83fa159686920f16f78\" name=\"a39ef71fa7757a83fa159686920f16f78\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39ef71fa7757a83fa159686920f16f78\">&#9670;&nbsp;</a></span>SetWindowSize()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetWindowSize </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>w</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>h</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sets the window size. </p>\n<p >The width and height are the pixel value of the window. </p>\n\n</div>\n</div>\n<a id=\"a390f8622eafc311400a2454f11dfc016\" name=\"a390f8622eafc311400a2454f11dfc016\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a390f8622eafc311400a2454f11dfc016\">&#9670;&nbsp;</a></span>SetWindowTitle()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::UI::SetWindowTitle </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>title</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f001c3dd4e24194b7b8b7e6ae73d6b4\" name=\"a5f001c3dd4e24194b7b8b7e6ae73d6b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">&#9670;&nbsp;</a></span>ShouldExit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UI::ShouldExit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5206ed605c69006a0d6ad1b2dafb2a80\" name=\"a5206ed605c69006a0d6ad1b2dafb2a80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5206ed605c69006a0d6ad1b2dafb2a80\">&#9670;&nbsp;</a></span>Uninit()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Uninit </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Uninitializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system. </p>\n<p >Closes the window. </p>\n\n</div>\n</div>\n<a id=\"a8d6af6713f2e6c053cacfaab7e628438\" name=\"a8d6af6713f2e6c053cacfaab7e628438\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6af6713f2e6c053cacfaab7e628438\">&#9670;&nbsp;</a></span>Update()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Platform::Input::Update </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Updates the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system. </p>\n<p >When called, this will cause the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> state to be updated and all of the keypress and mouse movement events to be emitted. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a2613ca9ec2e1a030b94d21e9e87281af\" name=\"a2613ca9ec2e1a030b94d21e9e87281af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2613ca9ec2e1a030b94d21e9e87281af\">&#9670;&nbsp;</a></span>CAMERA_SENSITIVITY</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::UI::CAMERA_SENSITIVITY = 6.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf999f961120350df3549cff1d0c9b0c\" name=\"acf999f961120350df3549cff1d0c9b0c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf999f961120350df3549cff1d0c9b0c\">&#9670;&nbsp;</a></span>CAMERA_SPEED</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const float tram::UI::CAMERA_SPEED = 6.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/namespacetram_1_1implementation.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::implementation Namespace Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1implementation.html\">implementation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::implementation Namespace Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f\">concat_fmt</a> (std::string_view &amp;str)</td></tr>\n<tr class=\"separator:a03b4b9c9589ff25e1b1df4e5491b829f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb\">flush_console</a> (<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"separator:a4f7ee627cbe8593eb958c9ac61ccd2eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac91c6a3049a88f77305379c3185e9a48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48\">flush_display</a> (int time, int system)</td></tr>\n<tr class=\"separator:ac91c6a3049a88f77305379c3185e9a48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a\">concat</a> (const std::string_view &amp;value)</td></tr>\n<tr class=\"separator:a6faec7dc4da15e2576e1a201d4eb164a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a39fba9c0eb726295d1456c1651b12d45\">concat</a> (const std::string &amp;value)</td></tr>\n<tr class=\"separator:a39fba9c0eb726295d1456c1651b12d45\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#acebb47b38e9273b2c259256c7a8fee5f\">concat</a> (const char *const &amp;value)</td></tr>\n<tr class=\"separator:acebb47b38e9273b2c259256c7a8fee5f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4cec4f0b2a5a9e7fb164820607f105d4\">concat</a> (const char *value)</td></tr>\n<tr class=\"separator:a4cec4f0b2a5a9e7fb164820607f105d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a7a2a311b556467311387960228c67ab8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a7a2a311b556467311387960228c67ab8\">concat</a> (const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;value)</td></tr>\n<tr class=\"separator:a7a2a311b556467311387960228c67ab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe\">to_chars_concat</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:a28f9a5440be4ee4b82bf3ff7eebba2fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56\">concat_numeric</a> (const int64_t &amp;value)</td></tr>\n<tr class=\"separator:aac1de7cbd86415606d60e0476fa6fd56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ae9f6692c3813328fafd9e99871fafb04\">concat_numeric</a> (const uint64_t &amp;value)</td></tr>\n<tr class=\"separator:ae9f6692c3813328fafd9e99871fafb04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n<tr class=\"memitem:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a8a5a3ae9f84e3585cda2b06cd8221d69\">concat_numeric</a> (const float &amp;value)</td></tr>\n<tr class=\"separator:a8a5a3ae9f84e3585cda2b06cd8221d69\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#ad81660eda2af6067bdf5708b9157a524\">concat</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:ad81660eda2af6067bdf5708b9157a524\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4bb77cc33a48fded3045407919472113\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;size_t N&gt; </td></tr>\n<tr class=\"memitem:a4bb77cc33a48fded3045407919472113\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a4bb77cc33a48fded3045407919472113\">concat</a> (const char(&amp;value)[N])</td></tr>\n<tr class=\"separator:a4bb77cc33a48fded3045407919472113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a829582177c315b267d8c5d25071dc20b\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a829582177c315b267d8c5d25071dc20b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a829582177c315b267d8c5d25071dc20b\">concat_numeric</a> (const T &amp;value)</td></tr>\n<tr class=\"separator:a829582177c315b267d8c5d25071dc20b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa314b84e606df8e9955afd0b5d3f84e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#afa314b84e606df8e9955afd0b5d3f84e\">flush_display</a> (int time, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system)</td></tr>\n<tr class=\"separator:afa314b84e606df8e9955afd0b5d3f84e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e18832774c9a92e285eeb0cfa84d64d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d\">log</a> (void(*flush)(<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>), <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, std::string_view &amp;format)</td></tr>\n<tr class=\"separator:a9e18832774c9a92e285eeb0cfa84d64d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T , typename... Args&gt; </td></tr>\n<tr class=\"memitem:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#aaddb11c3ce07c8bbb6e9dc206f13fff3\">log</a> (void(*flush)(<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>), <a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a> severity, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system, std::string_view &amp;format, T &amp;value, Args &amp;&amp;... args)</td></tr>\n<tr class=\"separator:aaddb11c3ce07c8bbb6e9dc206f13fff3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a8098d615040fde5cc1fc55269394ccb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">buffer</a> [500] = {'\\0'}</td></tr>\n<tr class=\"separator:a8098d615040fde5cc1fc55269394ccb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"acebb47b38e9273b2c259256c7a8fee5f\" name=\"acebb47b38e9273b2c259256c7a8fee5f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acebb47b38e9273b2c259256c7a8fee5f\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[1/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *const &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4cec4f0b2a5a9e7fb164820607f105d4\" name=\"a4cec4f0b2a5a9e7fb164820607f105d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4cec4f0b2a5a9e7fb164820607f105d4\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[2/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4bb77cc33a48fded3045407919472113\" name=\"a4bb77cc33a48fded3045407919472113\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4bb77cc33a48fded3045407919472113\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[3/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;size_t N&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char(&amp;)&#160;</td>\n          <td class=\"paramname\"><em>value</em>[N]</td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a39fba9c0eb726295d1456c1651b12d45\" name=\"a39fba9c0eb726295d1456c1651b12d45\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39fba9c0eb726295d1456c1651b12d45\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[4/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::string &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6faec7dc4da15e2576e1a201d4eb164a\" name=\"a6faec7dc4da15e2576e1a201d4eb164a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6faec7dc4da15e2576e1a201d4eb164a\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[5/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad81660eda2af6067bdf5708b9157a524\" name=\"ad81660eda2af6067bdf5708b9157a524\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad81660eda2af6067bdf5708b9157a524\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[6/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7a2a311b556467311387960228c67ab8\" name=\"a7a2a311b556467311387960228c67ab8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a2a311b556467311387960228c67ab8\">&#9670;&nbsp;</a></span>concat() <span class=\"overload\">[7/7]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03b4b9c9589ff25e1b1df4e5491b829f\" name=\"a03b4b9c9589ff25e1b1df4e5491b829f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03b4b9c9589ff25e1b1df4e5491b829f\">&#9670;&nbsp;</a></span>concat_fmt()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat_fmt </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>str</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a5a3ae9f84e3585cda2b06cd8221d69\" name=\"a8a5a3ae9f84e3585cda2b06cd8221d69\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a5a3ae9f84e3585cda2b06cd8221d69\">&#9670;&nbsp;</a></span>concat_numeric() <span class=\"overload\">[1/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat_numeric </td>\n          <td>(</td>\n          <td class=\"paramtype\">const float &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac1de7cbd86415606d60e0476fa6fd56\" name=\"aac1de7cbd86415606d60e0476fa6fd56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac1de7cbd86415606d60e0476fa6fd56\">&#9670;&nbsp;</a></span>concat_numeric() <span class=\"overload\">[2/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat_numeric </td>\n          <td>(</td>\n          <td class=\"paramtype\">const int64_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a829582177c315b267d8c5d25071dc20b\" name=\"a829582177c315b267d8c5d25071dc20b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a829582177c315b267d8c5d25071dc20b\">&#9670;&nbsp;</a></span>concat_numeric() <span class=\"overload\">[3/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat_numeric </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae9f6692c3813328fafd9e99871fafb04\" name=\"ae9f6692c3813328fafd9e99871fafb04\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9f6692c3813328fafd9e99871fafb04\">&#9670;&nbsp;</a></span>concat_numeric() <span class=\"overload\">[4/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::concat_numeric </td>\n          <td>(</td>\n          <td class=\"paramtype\">const uint64_t &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4f7ee627cbe8593eb958c9ac61ccd2eb\" name=\"a4f7ee627cbe8593eb958c9ac61ccd2eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f7ee627cbe8593eb958c9ac61ccd2eb\">&#9670;&nbsp;</a></span>flush_console()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::flush_console </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>&#160;</td>\n          <td class=\"paramname\"><em>severity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac91c6a3049a88f77305379c3185e9a48\" name=\"ac91c6a3049a88f77305379c3185e9a48\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac91c6a3049a88f77305379c3185e9a48\">&#9670;&nbsp;</a></span>flush_display() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::flush_display </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>time</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>system</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa314b84e606df8e9955afd0b5d3f84e\" name=\"afa314b84e606df8e9955afd0b5d3f84e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa314b84e606df8e9955afd0b5d3f84e\">&#9670;&nbsp;</a></span>flush_display() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::flush_display </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>time</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9e18832774c9a92e285eeb0cfa84d64d\" name=\"a9e18832774c9a92e285eeb0cfa84d64d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e18832774c9a92e285eeb0cfa84d64d\">&#9670;&nbsp;</a></span>log() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::log </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>)&#160;</td>\n          <td class=\"paramname\"><em>flush</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>&#160;</td>\n          <td class=\"paramname\"><em>severity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaddb11c3ce07c8bbb6e9dc206f13fff3\" name=\"aaddb11c3ce07c8bbb6e9dc206f13fff3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaddb11c3ce07c8bbb6e9dc206f13fff3\">&#9670;&nbsp;</a></span>log() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T , typename... Args&gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::log </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>, <a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>)&#160;</td>\n          <td class=\"paramname\"><em>flush</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56\">Severity</a>&#160;</td>\n          <td class=\"paramname\"><em>severity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a>&#160;</td>\n          <td class=\"paramname\"><em>system</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">std::string_view &amp;&#160;</td>\n          <td class=\"paramname\"><em>format</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">Args &amp;&amp;...&#160;</td>\n          <td class=\"paramname\"><em>args</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a28f9a5440be4ee4b82bf3ff7eebba2fe\" name=\"a28f9a5440be4ee4b82bf3ff7eebba2fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28f9a5440be4ee4b82bf3ff7eebba2fe\">&#9670;&nbsp;</a></span>to_chars_concat()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::implementation::to_chars_concat </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Variable Documentation</h2>\n<a id=\"a8098d615040fde5cc1fc55269394ccb7\" name=\"a8098d615040fde5cc1fc55269394ccb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8098d615040fde5cc1fc55269394ccb7\">&#9670;&nbsp;</a></span>buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::implementation::buffer[500] = {'\\0'}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navigation_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navigation.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">navigation.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"navigation_8h_source.html\">framework/navigation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navigation_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navigation.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">navigation.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"navigation_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">TODO: <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navigation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navigation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">navigation.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"navigation_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_NAVIGATION_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_NAVIGATION_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"octree_8h.html\">templates/octree.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>}</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_NAVIGATION_H</span></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">TODO:</div></div>\n<div class=\"ttc\" id=\"aoctree_8h_html\"><div class=\"ttname\"><a href=\"octree_8h.html\">octree.h</a></div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navmesh_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navmesh.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">navmesh.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"navmesh_8h_source.html\">framework/navmesh.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navmesh_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navmesh.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">navmesh.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"navmesh_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Not fully implemented yet.  <a href=\"classtram_1_1_navmesh.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ac0fd37b7041ae8a9df2990aab1946e4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">tram::node_id_t</a></td></tr>\n<tr class=\"separator:ac0fd37b7041ae8a9df2990aab1946e4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/navmesh_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/navmesh.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">navmesh.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"navmesh_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_NAVMESH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_NAVMESH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">   14</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_navmesh_node.html\">   16</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">   17</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">next</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">prev</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">left</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">right</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">   18</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">position</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html\">   21</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_navmesh.html\">Navmesh</a> {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">   23</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">Navmesh</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">   24</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">~Navmesh</a>() = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">   26</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">GetName</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">   27</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::vector&lt;node_id_t&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">GetNodes</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">nodes</a>; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a> <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">GetNavmeshNode</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> node_id);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_navmesh.html\">Navmesh</a>* <a class=\"code hl_function\" href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">Find</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">   34</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">name</a>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">   35</a></span>    std::vector&lt;node_id_t&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>};</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>}</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_NAVMESH_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html\">tram::Navmesh</a></div><div class=\"ttdoc\">Not fully implemented yet.</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a17689cf25d70bd126c147747daa8c559\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559\">tram::Navmesh::Navmesh</a></div><div class=\"ttdeci\">Navmesh(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a267e74b526a850dce2b51459113082f7\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7\">tram::Navmesh::nodes</a></div><div class=\"ttdeci\">std::vector&lt; node_id_t &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a6d3c3d41afd62d9551361c255ef9cff3\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3\">tram::Navmesh::~Navmesh</a></div><div class=\"ttdeci\">~Navmesh()=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a6f0d4a5f4fa94bb06a7731126c1f03e9\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9\">tram::Navmesh::GetNodes</a></div><div class=\"ttdeci\">const std::vector&lt; node_id_t &gt; &amp; GetNodes()</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a792dae6d4c013fb3f773c1bf851a3f6c\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c\">tram::Navmesh::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> navmesh.cpp:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_a9b5d215639881339b98b16b5c2bb56da\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da\">tram::Navmesh::GetNavmeshNode</a></div><div class=\"ttdeci\">static NavmeshNode GetNavmeshNode(node_id_t node_id)</div><div class=\"ttdef\"><b>Definition:</b> navmesh.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_aea73348a1b3d10864820e6b1dd711b94\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94\">tram::Navmesh::GetName</a></div><div class=\"ttdeci\">name_t GetName()</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_afa5f4827ce36be9a7e41fe2d4f4dc55f\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f\">tram::Navmesh::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_navmesh_html_aff49c111f072f7c12a1e209960a1cb6f\"><div class=\"ttname\"><a href=\"classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f\">tram::Navmesh::Find</a></div><div class=\"ttdeci\">static Navmesh * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> navmesh.cpp:49</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ac0fd37b7041ae8a9df2990aab1946e4c\"><div class=\"ttname\"><a href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">tram::node_id_t</a></div><div class=\"ttdeci\">uint32_t node_id_t</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html_a08dc0bcb36ae016bcc80f318a06b292f\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">tram::NavmeshNode::right</a></div><div class=\"ttdeci\">node_id_t right</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html_a56530b45077f4b6e6bf49e254b4a5ad5\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">tram::NavmeshNode::prev</a></div><div class=\"ttdeci\">node_id_t prev</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html_aae10ee4d482ec0937f6246279734e0f1\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">tram::NavmeshNode::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html_ad3d50642ce0f2c8aa8beb13fc48ca2e2\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">tram::NavmeshNode::next</a></div><div class=\"ttdeci\">node_id_t next</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_navmesh_node_html_ae94caf6d6598ec97d187913ec353ed31\"><div class=\"ttname\"><a href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">tram::NavmeshNode::left</a></div><div class=\"ttdeci\">node_id_t left</div><div class=\"ttdef\"><b>Definition:</b> navmesh.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/octree_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/octree.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">octree.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n</div>\n<p><a href=\"octree_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/octree_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/octree.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">octree.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"octree_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_OCTREE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_OCTREE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"pool_8h.html\">templates/pool.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html\">   14</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_octree.html\">Octree</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">   16</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">Octree</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, <span class=\"keywordtype\">size_t</span> size) : <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>(name, size) {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>.AddNew();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a> = 100.0f;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    }</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">   22</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, T data) {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* new_leaf = <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>.AddNew(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> {.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a> = point, .data = data});</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a>, new_leaf);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>.index(new_leaf);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">   28</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">Remove</a>(uint32_t node) {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">Remove</a>(&amp;<a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>[node]);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">   32</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">Find</a>(T* array, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point) {</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> search = {.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a> = point};</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        search.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a> = point;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(&amp;search, <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a>);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0 ; i &lt; search.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a> ; i++) {</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>            array[i] = search.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a>[i]-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">data</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>        }</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>        </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        <span class=\"keywordflow\">return</span> search.<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">   45</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">Draw</a>() {</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">Draw</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a>);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    }</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"comment\">// temporary compatibility methods</span></div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"comment\">// TODO: remove</span></div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">   51</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">AddLeaf</a>(T type, <span class=\"keywordtype\">float</span> x, <span class=\"keywordtype\">float</span> y, <span class=\"keywordtype\">float</span> z){</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>({x, y, z}, type);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">RemoveLeaf</a>(uint32_t leaf_id){</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">Remove</a>(leaf_id);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">   59</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(T result[], <span class=\"keywordtype\">float</span> x, <span class=\"keywordtype\">float</span> y, <span class=\"keywordtype\">float</span> z){</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">Find</a>(result, {x, y, z});</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    }</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">   64</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> {</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">   65</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">OCTANT_TOP_LEFT_BACK</a>,</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">   66</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">OCTANT_TOP_LEFT_FRONT</a>,</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">   67</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">OCTANT_TOP_RIGHT_BACK</a>,</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">   68</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">OCTANT_TOP_RIGHT_FRONT</a>,</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">   69</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">OCTANT_BOTTOM_LEFT_BACK</a>,</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">   70</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">OCTANT_BOTTOM_LEFT_FRONT</a>,</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">   71</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">OCTANT_BOTTOM_RIGHT_BACK</a>,</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">OCTANT_BOTTOM_RIGHT_FRONT</a></div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">   73</a></span>    };</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html\">   75</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">   76</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[8] = {<span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">   78</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        </div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">   80</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">   82</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">   84</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">   86</a></span>        T <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">data</a>;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">   88</a></span>        <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">IsLeaf</a>() {</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>            <span class=\"keywordflow\">return</span> !<a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>();</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        }</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">   92</a></span>        <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>() {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; 8; i++) <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[i]) <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>; </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        }</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    };</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">   98</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool&lt;Node&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">  100</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">root</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510\">  102</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510\">Insert</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* parent, <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* leaf) {</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>        <a class=\"code hl_enumeration\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> octant_type = <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">GetOctant</a>(parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>, leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>);</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>*&amp; octant = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[octant_type];</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>        </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>        <span class=\"keywordflow\">if</span> (octant) {</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>            <span class=\"keywordflow\">if</span> (octant-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>()) {</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(octant, leaf);</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* existing_leaf = octant;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                <span class=\"keywordflow\">if</span> (glm::distance(existing_leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>, leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>) == 0.0f) {</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                    std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Point &quot;</span> &lt;&lt; leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>.x &lt;&lt; <span class=\"stringliteral\">&quot; &quot;</span> &lt;&lt;  leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>.y &lt;&lt; <span class=\"stringliteral\">&quot; &quot;</span> &lt;&lt;  leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>.z &lt;&lt; <span class=\"stringliteral\">&quot; already in tree!&quot;</span> &lt;&lt; std::endl; </div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                    <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>                }</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>                </div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                octant = <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">NewNode</a>(octant_type, parent);</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                </div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(octant, existing_leaf);</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">Insert</a>(octant, leaf);</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            }</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            octant = leaf;</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>            leaf-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a> = parent;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        }</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55\">  128</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55\">Remove</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <span class=\"comment\">// don&#39;t allow removing root node</span></div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keywordflow\">if</span> (!node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a>) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        <span class=\"comment\">// remove node from parent</span></div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; 8; i++) {</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>            <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[i] == node) {</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[i] = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>            }</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        }</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <span class=\"comment\">//delete node;</span></div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>.Remove(node);</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    }</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    </div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">  144</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a> {</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">  145</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a>[4] = {<span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">  146</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a>[4] = {INFINITY, INFINITY, INFINITY, INFINITY};</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">  147</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a> = 0;</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">  148</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> = -INFINITY;</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">  149</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a>;</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">  150</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a> = 0;</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    };</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    </div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3\">  153</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3\">FindNearest</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a>* search, <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* parent_node) {</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keywordtype\">int</span> first_octant = <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">GetOctant</a>(parent_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>, search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a>);</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        </div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(search, parent_node, first_octant);</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        </div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i  = 0 ; i &lt; 8; i++) {</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            <span class=\"keywordflow\">if</span> (i != first_octant) <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(search, parent_node, i);</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>        }</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    }</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    </div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7\">  163</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7\">FindNearest</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a>* search, <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* parent_node, <span class=\"keywordtype\">int</span> octant) {</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* search_node = parent_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[octant];</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>        </div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        <span class=\"keywordflow\">if</span> (!search_node) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>        </div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        <span class=\"keywordflow\">if</span> (search_node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>()) {</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>            <span class=\"comment\">// do the nearest check</span></div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>            <span class=\"keywordflow\">if</span> (search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a> &gt;= 4) {</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                <span class=\"keywordtype\">float</span> nearest_possible = glm::distance(search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a>, search_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>) - 1.73205f * search_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                <span class=\"keywordflow\">if</span> (nearest_possible &gt; search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a>) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>            }</div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            </div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">FindNearest</a>(search, search_node);</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>            <span class=\"keywordflow\">if</span> (search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a> &lt; 4) {</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                <span class=\"keywordtype\">float</span> distance = glm::distance(search_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>, search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a>);</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a>[search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a>] = search_node;</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a>[search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a>] = distance;</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                </div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                <span class=\"keywordflow\">if</span> (search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> &lt; distance) {</div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                    search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> = distance;</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                    search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a> = search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a>;</div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                }</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                </div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a>++;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                <span class=\"keywordtype\">float</span> distance = glm::distance(search_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a>, search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a>);</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                </div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>                <span class=\"keywordflow\">if</span> (search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> &lt; distance) {</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                    <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>                }</div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>                </div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a>[search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a>] = distance;</div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a>[search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a>] = search_node;</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>                </div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>                search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> = -INFINITY;</div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; 4; i++) {</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>                    <span class=\"keywordflow\">if</span> (search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> &lt; search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a>[i]) {</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                        search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> = search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a>[i];</div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>                        search-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a> = i;</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>                    }</div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>                }</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>            }</div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>        }</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    }</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    </div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">  210</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">NewNode</a>(<a class=\"code hl_enumeration\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> octant, <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* parent) {</div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* node = <a class=\"code hl_variable\" href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">nodes</a>.AddNew();</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        </div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a> = parent;</div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>        </div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a> = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a> / 2.0f;</div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a> = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>;</div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>        </div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>        <span class=\"keywordflow\">switch</span> (octant) {</div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">OCTANT_TOP_LEFT_BACK</a>:</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">OCTANT_TOP_LEFT_FRONT</a>:</div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">OCTANT_TOP_RIGHT_BACK</a>:</div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">OCTANT_TOP_RIGHT_FRONT</a>:</div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">OCTANT_BOTTOM_LEFT_BACK</a>:</div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">OCTANT_BOTTOM_LEFT_FRONT</a>:</div>\n<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">OCTANT_BOTTOM_RIGHT_BACK</a>:</div>\n<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">OCTANT_BOTTOM_RIGHT_FRONT</a>:</div>\n<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.x += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.y -= node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a>.z += node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a>;</div>\n<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>        }</div>\n<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>        </div>\n<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>        <span class=\"keywordflow\">return</span> node;</div>\n<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    }</div>\n<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    </div>\n<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">  264</a></span>    <a class=\"code hl_enumeration\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">Octant</a> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">GetOctant</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> mid, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point) {</div>\n<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>        <span class=\"keywordflow\">if</span> (point.y &lt; mid.y) {</div>\n<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>            <span class=\"keywordflow\">if</span> (point.x &lt; mid.x) {</div>\n<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                <span class=\"keywordflow\">if</span> (point.z &lt; mid.z) {</div>\n<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">OCTANT_BOTTOM_LEFT_BACK</a>;</div>\n<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">OCTANT_BOTTOM_LEFT_FRONT</a>;</div>\n<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                }</div>\n<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>                <span class=\"keywordflow\">if</span> (point.z &lt; mid.z) {</div>\n<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">OCTANT_BOTTOM_RIGHT_BACK</a>;</div>\n<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">OCTANT_BOTTOM_RIGHT_FRONT</a>;</div>\n<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>                }</div>\n<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>            }</div>\n<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>            <span class=\"keywordflow\">if</span> (point.x &lt; mid.x) {</div>\n<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>                <span class=\"keywordflow\">if</span> (point.z &lt; mid.z) {</div>\n<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">OCTANT_TOP_LEFT_BACK</a>;</div>\n<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">OCTANT_TOP_LEFT_FRONT</a>;</div>\n<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>                }</div>\n<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>                <span class=\"keywordflow\">if</span> (point.z &lt; mid.z) {</div>\n<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">OCTANT_TOP_RIGHT_BACK</a>;</div>\n<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>                } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                    <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">OCTANT_TOP_RIGHT_FRONT</a>;</div>\n<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>                }</div>\n<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>            }</div>\n<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        }</div>\n<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        </div>\n<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    }</div>\n<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>    </div>\n<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197\">  297</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197\">Draw</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> * node) {</div>\n<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>()) {</div>\n<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>            <span class=\"comment\">/*vec3 p00 = node-&gt;mid_point + vec3(node-&gt;width, node-&gt;width, node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span><span class=\"comment\">            vec3 p01 = node-&gt;mid_point + vec3(-node-&gt;width, node-&gt;width, node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span><span class=\"comment\">            vec3 p02 = node-&gt;mid_point + vec3(node-&gt;width, node-&gt;width, -node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span><span class=\"comment\">            vec3 p03 = node-&gt;mid_point + vec3(-node-&gt;width, node-&gt;width, -node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span><span class=\"comment\">            vec3 p10 = node-&gt;mid_point + vec3(node-&gt;width, -node-&gt;width, node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"comment\">            vec3 p11 = node-&gt;mid_point + vec3(-node-&gt;width, -node-&gt;width, node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span><span class=\"comment\">            vec3 p12 = node-&gt;mid_point + vec3(node-&gt;width, -node-&gt;width, -node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span><span class=\"comment\">            vec3 p13 = node-&gt;mid_point + vec3(-node-&gt;width, -node-&gt;width, -node-&gt;width);</span></div>\n<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span><span class=\"comment\">            </span></div>\n<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span><span class=\"comment\">            AddLine(p00, p01, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span><span class=\"comment\">            AddLine(p00, p02, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span><span class=\"comment\">            AddLine(p03, p01, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span><span class=\"comment\">            AddLine(p03, p02, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span><span class=\"comment\">            </span></div>\n<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span><span class=\"comment\">            AddLine(p10, p11, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span><span class=\"comment\">            AddLine(p10, p12, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span><span class=\"comment\">            AddLine(p13, p11, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"comment\">            AddLine(p13, p12, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"comment\">            </span></div>\n<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"comment\">            AddLine(p00, p10, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"comment\">            AddLine(p01, p11, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"comment\">            AddLine(p02, p12, COLOR_YELLOW);</span></div>\n<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"comment\">            AddLine(p03, p13, COLOR_YELLOW);*/</span></div>\n<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>            </div>\n<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0 ; i &lt; 8; i++) {</div>\n<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[i]) <a class=\"code hl_function\" href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">Draw</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a>[i]);</div>\n<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            }</div>\n<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>            <span class=\"comment\">//AddLineMarker(node-&gt;point, COLOR_GREEN);</span></div>\n<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        }</div>\n<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    }</div>\n<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    </div>\n<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>};</div>\n<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span> </div>\n<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>}</div>\n<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span> </div>\n<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_OCTREE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html\">tram::Octree</a></div><div class=\"ttdef\"><b>Definition:</b> octree.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a02470aaeb494f3903c6f45e0e3357510\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510\">tram::Octree::Insert</a></div><div class=\"ttdeci\">void Insert(Node *parent, Node *leaf)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a03a71d1c84b4b3408a2929859a386d38\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38\">tram::Octree::Draw</a></div><div class=\"ttdeci\">void Draw()</div><div class=\"ttdef\"><b>Definition:</b> octree.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a220207230fbc117b610f5b4a1cf38d65\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65\">tram::Octree::nodes</a></div><div class=\"ttdeci\">Pool&lt; Node &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> octree.h:98</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a2d86fab3ff9590542faa44a542e90a30\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30\">tram::Octree::Octree</a></div><div class=\"ttdeci\">Octree(const char *name, size_t size)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a339f6bc48edaea36835c72727179450f\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f\">tram::Octree::root</a></div><div class=\"ttdeci\">Node * root</div><div class=\"ttdef\"><b>Definition:</b> octree.h:100</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a687c55bafdd80a22f550de2cbb1a8197\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197\">tram::Octree::Draw</a></div><div class=\"ttdeci\">void Draw(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:297</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a6ac6abd129adbfd434a034a7f156d7c7\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7\">tram::Octree::FindNearest</a></div><div class=\"ttdeci\">void FindNearest(NearestSearch *search, Node *parent_node, int octant)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:163</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a6d0d4f09bc8a2edd9abe38415e91bcc8\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8\">tram::Octree::NewNode</a></div><div class=\"ttdeci\">Node * NewNode(Octant octant, Node *parent)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:210</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a712401b2423a34b64d7205459ddacf55\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55\">tram::Octree::Remove</a></div><div class=\"ttdeci\">void Remove(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a78b461493864e5124fa6972004a754d6\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6\">tram::Octree::Find</a></div><div class=\"ttdeci\">size_t Find(T *array, vec3 point)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321\">tram::Octree::Octant</a></div><div class=\"ttdeci\">Octant</div><div class=\"ttdef\"><b>Definition:</b> octree.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9\">tram::Octree::OCTANT_BOTTOM_RIGHT_FRONT</a></div><div class=\"ttdeci\">@ OCTANT_BOTTOM_RIGHT_FRONT</div><div class=\"ttdef\"><b>Definition:</b> octree.h:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122\">tram::Octree::OCTANT_BOTTOM_LEFT_BACK</a></div><div class=\"ttdeci\">@ OCTANT_BOTTOM_LEFT_BACK</div><div class=\"ttdef\"><b>Definition:</b> octree.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a\">tram::Octree::OCTANT_TOP_RIGHT_FRONT</a></div><div class=\"ttdeci\">@ OCTANT_TOP_RIGHT_FRONT</div><div class=\"ttdef\"><b>Definition:</b> octree.h:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494\">tram::Octree::OCTANT_TOP_RIGHT_BACK</a></div><div class=\"ttdeci\">@ OCTANT_TOP_RIGHT_BACK</div><div class=\"ttdef\"><b>Definition:</b> octree.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02\">tram::Octree::OCTANT_TOP_LEFT_BACK</a></div><div class=\"ttdeci\">@ OCTANT_TOP_LEFT_BACK</div><div class=\"ttdef\"><b>Definition:</b> octree.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716\">tram::Octree::OCTANT_BOTTOM_LEFT_FRONT</a></div><div class=\"ttdeci\">@ OCTANT_BOTTOM_LEFT_FRONT</div><div class=\"ttdef\"><b>Definition:</b> octree.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9\">tram::Octree::OCTANT_BOTTOM_RIGHT_BACK</a></div><div class=\"ttdeci\">@ OCTANT_BOTTOM_RIGHT_BACK</div><div class=\"ttdef\"><b>Definition:</b> octree.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc\">tram::Octree::OCTANT_TOP_LEFT_FRONT</a></div><div class=\"ttdeci\">@ OCTANT_TOP_LEFT_FRONT</div><div class=\"ttdef\"><b>Definition:</b> octree.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a8496d30bf8f12e11b61923a06ee14e3d\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d\">tram::Octree::Remove</a></div><div class=\"ttdeci\">void Remove(uint32_t node)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a886968cb23838b42a4ea381eda9a93b4\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4\">tram::Octree::GetOctant</a></div><div class=\"ttdeci\">Octant GetOctant(vec3 mid, vec3 point)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:264</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_a9b95a094d1299eac280c2baaeef43f3b\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b\">tram::Octree::RemoveLeaf</a></div><div class=\"ttdeci\">void RemoveLeaf(uint32_t leaf_id)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_af27324144ece2995f714d7fb6a9a802d\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d\">tram::Octree::AddLeaf</a></div><div class=\"ttdeci\">uint32_t AddLeaf(T type, float x, float y, float z)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_af4b6041ef1096c464a9197a89037ea73\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73\">tram::Octree::FindNearest</a></div><div class=\"ttdeci\">size_t FindNearest(T result[], float x, float y, float z)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_af89de216af27eedb69a0255dc8f5baa3\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3\">tram::Octree::FindNearest</a></div><div class=\"ttdeci\">void FindNearest(NearestSearch *search, Node *parent_node)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:153</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_octree_html_aff7cf2c6bf99856721156aa6dcdf0b72\"><div class=\"ttname\"><a href=\"classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72\">tram::Octree::Insert</a></div><div class=\"ttdeci\">uint32_t Insert(vec3 point, T data)</div><div class=\"ttdef\"><b>Definition:</b> octree.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:21</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"apool_8h_html\"><div class=\"ttname\"><a href=\"pool_8h.html\">pool.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree::NearestSearch</a></div><div class=\"ttdef\"><b>Definition:</b> octree.h:144</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_a0a4cacd8eca108ce703cc4ede667550b\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">tram::Octree::NearestSearch::found</a></div><div class=\"ttdeci\">int found</div><div class=\"ttdef\"><b>Definition:</b> octree.h:150</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_a720eef381f2e423cce0ca23f94add470\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">tram::Octree::NearestSearch::nearest</a></div><div class=\"ttdeci\">Node * nearest[4]</div><div class=\"ttdef\"><b>Definition:</b> octree.h:145</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_aa6bbbfe8160af656016aa78c0fb106f2\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">tram::Octree::NearestSearch::distance</a></div><div class=\"ttdeci\">float distance[4]</div><div class=\"ttdef\"><b>Definition:</b> octree.h:146</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_aa822dea4fb296786eb30325c47e18635\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">tram::Octree::NearestSearch::farthest_distance</a></div><div class=\"ttdeci\">float farthest_distance</div><div class=\"ttdef\"><b>Definition:</b> octree.h:148</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_ad0e4df7ab810d7077f6237205f63aa58\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">tram::Octree::NearestSearch::farthest_index</a></div><div class=\"ttdeci\">int farthest_index</div><div class=\"ttdef\"><b>Definition:</b> octree.h:147</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_nearest_search_html_adf2e15ec26f3738dd03c6712de61df5e\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">tram::Octree::NearestSearch::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdef\"><b>Definition:</b> octree.h:149</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree::Node</a></div><div class=\"ttdef\"><b>Definition:</b> octree.h:75</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a3824ba3c3a244a92562817cf43c102df\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">tram::Octree::Node::parent</a></div><div class=\"ttdeci\">Node * parent</div><div class=\"ttdef\"><b>Definition:</b> octree.h:78</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a3abcf52999ab189502ffbd384f5c598c\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">tram::Octree::Node::IsNode</a></div><div class=\"ttdeci\">bool IsNode()</div><div class=\"ttdef\"><b>Definition:</b> octree.h:92</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a452e2b6329f9a981b6eb3738613f871d\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">tram::Octree::Node::half_extent</a></div><div class=\"ttdeci\">float half_extent</div><div class=\"ttdef\"><b>Definition:</b> octree.h:82</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a6547353b4a05dc60327f462ff73e0757\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">tram::Octree::Node::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdef\"><b>Definition:</b> octree.h:84</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a95c1f7044d872a41e611dd968405771d\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">tram::Octree::Node::octants</a></div><div class=\"ttdeci\">Node * octants[8]</div><div class=\"ttdef\"><b>Definition:</b> octree.h:76</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_a9f504886cb278bba4d7b3646c7a6f8f1\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">tram::Octree::Node::mid_point</a></div><div class=\"ttdeci\">vec3 mid_point</div><div class=\"ttdef\"><b>Definition:</b> octree.h:80</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_acf0b359104e69ae9202d41f55db25429\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">tram::Octree::Node::IsLeaf</a></div><div class=\"ttdeci\">bool IsLeaf()</div><div class=\"ttdef\"><b>Definition:</b> octree.h:88</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_octree_1_1_node_html_ae7e2eb79df26b8c7877defbe17d2e8eb\"><div class=\"ttname\"><a href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">tram::Octree::Node::data</a></div><div class=\"ttdeci\">T data</div><div class=\"ttdef\"><b>Definition:</b> octree.h:86</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/openal_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/openal/openal.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\">openal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">openal.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Implementation of the OpenAL Audio backend.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;AL/alc.h&gt;</code><br />\n<code>#include &lt;AL/al.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">tram::Audio::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API::Init</a> ()</td></tr>\n<tr class=\"separator:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55057fbdf290e0782209c5b31d972488\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API::Update</a> ()</td></tr>\n<tr class=\"separator:a55057fbdf290e0782209c5b31d972488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API::Uninit</a> ()</td></tr>\n<tr class=\"separator:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c238a85c44a1be22223921bb836673b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:a8c238a85c44a1be22223921bb836673b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener position.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c238a85c44a1be22223921bb836673b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener orientation.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">More...</a><br /></td></tr>\n<tr class=\"separator:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704\">tram::Audio::API::SetListenerGain</a> (float gain)</td></tr>\n<tr class=\"separator:a0722507591b4bba19c85e8f9d8088704\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiobuffer_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API::MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels)</td></tr>\n<tr class=\"memdesc:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates audio buffers from raw audio data.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">More...</a><br /></td></tr>\n<tr class=\"separator:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API::RemoveAudioBuffer</a> (audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes audio buffers.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiosource_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API::MakeAudioSource</a> ()</td></tr>\n<tr class=\"memdesc:a02a046aaade1a4a0290db64f9514816b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">More...</a><br /></td></tr>\n<tr class=\"separator:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API::SetAudioSourcePitch</a> (audiosource_t source, float pitch)</td></tr>\n<tr class=\"memdesc:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the pitch of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API::SetAudioSourceGain</a> (audiosource_t source, float gain)</td></tr>\n<tr class=\"memdesc:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the gain of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API::SetAudioSourcePosition</a> (audiosource_t source, vec3 position)</td></tr>\n<tr class=\"memdesc:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">More...</a><br /></td></tr>\n<tr class=\"separator:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API::SetAudioSourceVelocity</a> (audiosource_t source, vec3 velocity)</td></tr>\n<tr class=\"memdesc:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API::SetAudioSourceRepeating</a> (audiosource_t source, bool repeating)</td></tr>\n<tr class=\"memdesc:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repetition of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">More...</a><br /></td></tr>\n<tr class=\"separator:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66d344898a8b0355218f36cddc369046\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API::SetAudioSourceBuffer</a> (audiosource_t source, audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a66d344898a8b0355218f36cddc369046\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the buffers that the audio source will play.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">More...</a><br /></td></tr>\n<tr class=\"separator:a66d344898a8b0355218f36cddc369046\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API::PlayAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">More...</a><br /></td></tr>\n<tr class=\"separator:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API::PauseAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:ab58ddd72a8b81823756b0d141e015590\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">More...</a><br /></td></tr>\n<tr class=\"separator:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API::StopAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">More...</a><br /></td></tr>\n<tr class=\"separator:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API::IsAudioSourcePlaying</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an audio source is playing.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">More...</a><br /></td></tr>\n<tr class=\"separator:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af490232ec82451014fb9e858f3feca68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API::RemoveAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:af490232ec82451014fb9e858f3feca68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">More...</a><br /></td></tr>\n<tr class=\"separator:af490232ec82451014fb9e858f3feca68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Implementation of the OpenAL Audio backend. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/openal_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/openal/openal.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\">openal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">openal.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"openal_8h_source.html\">Go to the source code of this file.</a></p>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/openal_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/openal/openal.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_87e4469353846ab42ac7effb8e231a8f.html\">openal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">openal.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"openal_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_OPENAL_OPENAL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_OPENAL_OPENAL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">// Not deleting this file yet, might need it in the future.</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_OPENAL_OPENAL_H</span></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2error_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/error.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">error.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2material_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/material.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">material.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"opengl_2material_8h_source.html\">render/opengl/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">tram::Render::API::MakeMaterial</a> ()</td></tr>\n<tr class=\"separator:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26c75429ce3913f26e9df148750d4716\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">tram::Render::API::DeleteMaterial</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material)</td></tr>\n<tr class=\"separator:a26c75429ce3913f26e9df148750d4716\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">tram::Render::API::SetMaterialTexture</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> texture)</td></tr>\n<tr class=\"separator:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">tram::Render::API::SetMaterialColor</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> color)</td></tr>\n<tr class=\"separator:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">tram::Render::API::SetMaterialSpecularWeight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float weight)</td></tr>\n<tr class=\"separator:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">tram::Render::API::SetMaterialSpecularExponent</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float exponent)</td></tr>\n<tr class=\"separator:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">tram::Render::API::SetMaterialSpecularTransparency</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float transparency)</td></tr>\n<tr class=\"separator:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">tram::Render::API::SetMaterialReflectivity</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float reflectivity)</td></tr>\n<tr class=\"separator:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2material_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/material.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">material.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"opengl_2material_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2material_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/material.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">material.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"opengl_2material_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_MATERIAL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_MATERIAL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">   11</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">   12</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">gl_texture</a> = 0;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">   13</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">specular_weight</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">   14</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">specular_exponent</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">   15</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">specular_transparency</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">   16</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">reflectivity</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">   17</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>};</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>}</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_MATERIAL_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></div><div class=\"ttdef\"><b>Definition:</b> material.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_a07e7b84d5737ca1179d08607b6dd06aa\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">tram::Render::API::GLMaterial::specular_exponent</a></div><div class=\"ttdeci\">float specular_exponent</div><div class=\"ttdef\"><b>Definition:</b> material.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_a1260401099f04ec467b0ac463f48c83f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">tram::Render::API::GLMaterial::specular_weight</a></div><div class=\"ttdeci\">float specular_weight</div><div class=\"ttdef\"><b>Definition:</b> material.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_a32337dbe065506cde40f754aa3e8f4d7\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">tram::Render::API::GLMaterial::reflectivity</a></div><div class=\"ttdeci\">float reflectivity</div><div class=\"ttdef\"><b>Definition:</b> material.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_a5c1937af80981904bbfedfbf9b144b64\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">tram::Render::API::GLMaterial::specular_transparency</a></div><div class=\"ttdeci\">float specular_transparency</div><div class=\"ttdef\"><b>Definition:</b> material.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_a910bf64758275e7a85ddf7cb1762b461\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">tram::Render::API::GLMaterial::gl_texture</a></div><div class=\"ttdeci\">uint32_t gl_texture</div><div class=\"ttdef\"><b>Definition:</b> material.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html_ae6842cdc5bd66c705914b4d4b11a61a8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">tram::Render::API::GLMaterial::color</a></div><div class=\"ttdeci\">vec4 color</div><div class=\"ttdef\"><b>Definition:</b> material.h:17</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2renderer_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/renderer.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">renderer.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">render/opengl/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2opengl_2light_8h_source.html\">render/opengl/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"shader_8h_source.html\">render/opengl/shader.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"drawlist_8h_source.html\">render/opengl/drawlist.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n<code>#include &lt;GL/gl.h&gt;</code><br />\n<code>#include &lt;GLES3/gl3.h&gt;</code><br />\n<code>#include &lt;glm/gtc/type_ptr.hpp&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html\">tram::Render::API::ShaderBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:abe7ed6af822251d71e03add10aa5c14e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e\">tram::Render::API::MakeUniformBuffer</a> (const char *name, uint32_t binding, uint32_t initial_size)</td></tr>\n<tr class=\"separator:abe7ed6af822251d71e03add10aa5c14e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a7dd403c84682d2d554721e611e5880\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880\">tram::Render::API::UploadUniformBuffer</a> (uint32_t handle, uint32_t data_size, void *data)</td></tr>\n<tr class=\"separator:a6a7dd403c84682d2d554721e611e5880\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa88196543e9de714a86037204e01f75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API::SetLightingParameters</a> (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer)</td></tr>\n<tr class=\"separator:aa88196543e9de714a86037204e01f75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a860017f77f92d43c2b09b5ff526d61b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4\">tram::Render::API::SetViewParameters</a> (vec3 position, quat rotation, uint32_t layer)</td></tr>\n<tr class=\"separator:a860017f77f92d43c2b09b5ff526d61b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API::SetScreenClear</a> (vec3 clear_color, bool clear)</td></tr>\n<tr class=\"separator:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d75088dd180366fb45cb86654694db9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API::RenderFrame</a> ()</td></tr>\n<tr class=\"separator:a0d75088dd180366fb45cb86654694db9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23c877f60360662f3a1de1fd11957936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API::SetViewMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a23c877f60360662f3a1de1fd11957936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API::SetProjectionMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API::GetScreen</a> (char *buffer, int w, int h)</td></tr>\n<tr class=\"separator:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API::Init</a> ()</td></tr>\n<tr class=\"separator:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ContextType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API::GetContext</a> ()</td></tr>\n<tr class=\"separator:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18bc917a04c062cb18a310880301f545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API::GetMaxIndexRangeLength</a> ()</td></tr>\n<tr class=\"separator:a18bc917a04c062cb18a310880301f545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API::SetDevice</a> (void *)</td></tr>\n<tr class=\"separator:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">tram::Render::API::IsDebugMode</a> ()</td></tr>\n<tr class=\"separator:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">tram::Render::API::SetDebugMode</a> (bool)</td></tr>\n<tr class=\"separator:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a6dfddeaa3cef9401836d64332bf741d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ShaderUniformMatrices&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7\">tram::Render::API::matrices</a></td></tr>\n<tr class=\"separator:a6dfddeaa3cef9401836d64332bf741d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa07f4e77940a42bcb683f6a5fe639598\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ShaderUniformModelMatrices&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598\">tram::Render::API::modelMatrices</a></td></tr>\n<tr class=\"separator:aa07f4e77940a42bcb683f6a5fe639598\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6e1d5dec0444c684f0afec150c59bfc0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0\">tram::Render::API::matrix_uniform_binding</a> = 0</td></tr>\n<tr class=\"separator:a6e1d5dec0444c684f0afec150c59bfc0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2a0501e16181b7cde9c9983906abf9dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd\">tram::Render::API::model_matrix_uniform_binding</a> = 1</td></tr>\n<tr class=\"separator:a2a0501e16181b7cde9c9983906abf9dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0be78caaebe8d1e8e924fac4021c7955\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955\">tram::Render::API::light_uniform_binding</a> = 2</td></tr>\n<tr class=\"separator:a0be78caaebe8d1e8e924fac4021c7955\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace7ae8e4df165fb13c29c639727147c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8\">tram::Render::API::bone_uniform_binding</a> = 3</td></tr>\n<tr class=\"separator:ace7ae8e4df165fb13c29c639727147c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2de134ec2f22c719dbf8e81f7ee6852d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d\">tram::Render::API::matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a2de134ec2f22c719dbf8e81f7ee6852d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2caf5fc3ac8c9036ca6b9be0180c98ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec\">tram::Render::API::model_matrix_uniform_buffer</a></td></tr>\n<tr class=\"separator:a2caf5fc3ac8c9036ca6b9be0180c98ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa86b61fec7a4aff417768d154811ad32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32\">tram::Render::API::light_uniform_buffer</a></td></tr>\n<tr class=\"separator:aa86b61fec7a4aff417768d154811ad32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae204460e13beeb7a70031b5f393fcacb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb\">tram::Render::API::bone_uniform_buffer</a></td></tr>\n<tr class=\"separator:ae204460e13beeb7a70031b5f393fcacb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2renderer_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/renderer.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">renderer.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"opengl_2renderer_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/opengl_2renderer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/renderer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">renderer.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"opengl_2renderer_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_RENDERER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_RENDERER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_RENDERER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/other_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/other.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">other.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"other_8h_source.html\">platform/other.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">tram::Platform::TryDebugging</a> ()</td></tr>\n<tr class=\"memdesc:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Attempts to break into debugger.  <a href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">More...</a><br /></td></tr>\n<tr class=\"separator:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">tram::Platform::ShowErrorDialog</a> (const char *message, const char *title)</td></tr>\n<tr class=\"separator:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/other_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/other.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">other.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"other_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">tram::Platform::TryDebugging</a> ()</td></tr>\n<tr class=\"memdesc:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Attempts to break into debugger.  <a href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">More...</a><br /></td></tr>\n<tr class=\"separator:abafedf61de1bb3dc299c601f678ca6d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">tram::Platform::ShowErrorDialog</a> (const char *message, const char *title)</td></tr>\n<tr class=\"separator:a43ffc908587bc0a0680d4e923bf6fb54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/other_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/other.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">other.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"other_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_OTHER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_OTHER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">TryDebugging</a>();</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">ShowErrorDialog</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* = <span class=\"keyword\">nullptr</span>);</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PLATFORM_OTHER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform.html\">tram::Platform</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_html_a43ffc908587bc0a0680d4e923bf6fb54\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54\">tram::Platform::ShowErrorDialog</a></div><div class=\"ttdeci\">void ShowErrorDialog(const char *message, const char *title)</div><div class=\"ttdef\"><b>Definition:</b> other.cpp:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_html_abafedf61de1bb3dc299c601f678ca6d5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5\">tram::Platform::TryDebugging</a></div><div class=\"ttdeci\">void TryDebugging()</div><div class=\"ttdoc\">Attempts to break into debugger.</div><div class=\"ttdef\"><b>Definition:</b> other.cpp:17</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/output_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/output.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">output.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/output_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/output.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">output.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">audio/spatial/definitions.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"output_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_spatial\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_spatial\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Experimental path tracing audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1d958660cb3bf23f87e78a3a2a36d912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">tram::Audio::Spatial::InitOutput</a> ()</td></tr>\n<tr class=\"separator:a1d958660cb3bf23f87e78a3a2a36d912\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1369d0d3a2339c9205f38130aaa18b05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">tram::Audio::Spatial::UpdateOutput</a> ()</td></tr>\n<tr class=\"separator:a1369d0d3a2339c9205f38130aaa18b05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd2e06cbc247c1a503526098fb084789\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">tram::Audio::Spatial::UninitOutput</a> ()</td></tr>\n<tr class=\"separator:abd2e06cbc247c1a503526098fb084789\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0ceb28e435bdcb3504d0702785e2ad4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">tram::Audio::Spatial::LockRenderlist</a> ()</td></tr>\n<tr class=\"separator:af0ceb28e435bdcb3504d0702785e2ad4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f2da687a7b846d596f35af37ae63841\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">tram::Audio::Spatial::UnlockRenderlist</a> ()</td></tr>\n<tr class=\"separator:a1f2da687a7b846d596f35af37ae63841\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/output_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/output.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">output.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"output_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"definitions_8h.html\">audio/spatial/definitions.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">   12</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">InitOutput</a>();</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">   13</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">UpdateOutput</a>();</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">   14</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">UninitOutput</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">   16</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">LockRenderlist</a>();</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">   17</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">UnlockRenderlist</a>();</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H</span></div>\n<div class=\"ttc\" id=\"adefinitions_8h_html\"><div class=\"ttname\"><a href=\"definitions_8h.html\">definitions.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></div><div class=\"ttdoc\">Experimental path tracing audio system.</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a1369d0d3a2339c9205f38130aaa18b05\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05\">tram::Audio::Spatial::UpdateOutput</a></div><div class=\"ttdeci\">void UpdateOutput()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a1d958660cb3bf23f87e78a3a2a36d912\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912\">tram::Audio::Spatial::InitOutput</a></div><div class=\"ttdeci\">void InitOutput()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a1f2da687a7b846d596f35af37ae63841\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841\">tram::Audio::Spatial::UnlockRenderlist</a></div><div class=\"ttdeci\">void UnlockRenderlist()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_abd2e06cbc247c1a503526098fb084789\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789\">tram::Audio::Spatial::UninitOutput</a></div><div class=\"ttdeci\">void UninitOutput()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_af0ceb28e435bdcb3504d0702785e2ad4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4\">tram::Audio::Spatial::LockRenderlist</a></div><div class=\"ttdeci\">void LockRenderlist()</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pages.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Related Pages</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n</div><!-- top -->\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Related Pages</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\">Here is a list of all related documentation pages:</div><div class=\"directory\">\n<table class=\"directory\">\n<tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"todo.html\" target=\"_self\">Todo List</a></td><td class=\"desc\"></td></tr>\n<tr id=\"row_1_\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><a class=\"el\" href=\"deprecated.html\" target=\"_self\">Deprecated List</a></td><td class=\"desc\"></td></tr>\n</table>\n</div><!-- directory -->\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/particle_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/particle.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">particle.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"particle_8h_source.html\">components/particle.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/particle_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/particle.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">particle.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n</div>\n<p><a href=\"particle_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides amusing graphical effects.  <a href=\"classtram_1_1_particle_component.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/particle_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/particle.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">particle.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"particle_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2sprite_8h.html\">render/sprite.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_particle_component_1_1_particle.html\">   13</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">   14</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">coords</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">   15</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">velocity</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">   16</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">age</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    };</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">ParticleComponent</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>(this) {}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">~ParticleComponent</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">   21</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">GetSprite</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>-&gt;GetName(); }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">   23</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">SetSprite</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Render::Sprite</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>) {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>        this-&gt;sprite = <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">   33</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">UpdateLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> nlocation){</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">location</a> = nlocation;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">UpdateRenderListObject</a>();</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    }</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">   38</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){<span class=\"keywordflow\">return</span>;}</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">EmitParticle</a> (<span class=\"keyword\">const</span> Particle&amp; particle);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    <span class=\"comment\">// put these behind getter/setter methods, maybe?</span></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">   43</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">emission_rate</a> = 1;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">   44</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">particle_max_age</a> = 120;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">   45</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">gravity</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, -0.005f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">   46</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">initial_velocity</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>(0.0f, 0.15f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">   47</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">initial_velocity_randomness</a> = 0.1f;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">   49</a></span>    std::vector&lt;Particle&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">particles</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">   50</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Render::Sprite&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">sprite</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">   52</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">location</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">   54</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">Render::drawlistentry_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">draw_list_entry</a> = {};</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">   55</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">Render::vertexarray_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">vertex_array</a> = {};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>}</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html\">tram::ParticleComponent</a></div><div class=\"ttdoc\">Provides amusing graphical effects.</div><div class=\"ttdef\"><b>Definition:</b> particle.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a08d2217761e8209be71fb5accfcfcfd7\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7\">tram::ParticleComponent::~ParticleComponent</a></div><div class=\"ttdeci\">~ParticleComponent()</div><div class=\"ttdef\"><b>Definition:</b> particle.cpp:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a10d73a307d53059911966e00f9ea0154\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154\">tram::ParticleComponent::sprite</a></div><div class=\"ttdeci\">ResourceProxy&lt; Render::Sprite &gt; sprite</div><div class=\"ttdef\"><b>Definition:</b> particle.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a13b0e3b68f2b4fd346525baba49a7481\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481\">tram::ParticleComponent::GetSprite</a></div><div class=\"ttdeci\">name_t GetSprite()</div><div class=\"ttdef\"><b>Definition:</b> particle.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a154e0103510b6ba7bfe4e0c5109bb420\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420\">tram::ParticleComponent::EmitParticle</a></div><div class=\"ttdeci\">void EmitParticle(const Particle &amp;particle)</div><div class=\"ttdef\"><b>Definition:</b> particle.cpp:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a1d1a56c1b5c8ce7539663dba1d485c32\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32\">tram::ParticleComponent::emission_rate</a></div><div class=\"ttdeci\">uint32_t emission_rate</div><div class=\"ttdef\"><b>Definition:</b> particle.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a430a79ebe6cdfed63f9197226acbf2a3\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3\">tram::ParticleComponent::initial_velocity</a></div><div class=\"ttdeci\">vec3 initial_velocity</div><div class=\"ttdef\"><b>Definition:</b> particle.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a49ca6619dc2cc1f51243c26b9700650a\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a\">tram::ParticleComponent::gravity</a></div><div class=\"ttdeci\">vec3 gravity</div><div class=\"ttdef\"><b>Definition:</b> particle.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a53990e83ab645269af4e740d72d6914b\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b\">tram::ParticleComponent::ParticleComponent</a></div><div class=\"ttdeci\">ParticleComponent()</div><div class=\"ttdef\"><b>Definition:</b> particle.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a7403bb854acd08f1060bf3b659d62c75\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75\">tram::ParticleComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> particle.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a809c4b587625c3050decf6df8de83c07\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07\">tram::ParticleComponent::UpdateRenderListObject</a></div><div class=\"ttdeci\">void UpdateRenderListObject()</div><div class=\"ttdef\"><b>Definition:</b> particle.cpp:87</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a8798a3b667e45954102f0eae33d3b941\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941\">tram::ParticleComponent::SetSprite</a></div><div class=\"ttdeci\">void SetSprite(Render::Sprite *sprite)</div><div class=\"ttdef\"><b>Definition:</b> particle.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_a87d6c21e29d20330fba57f8d3b2134cd\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd\">tram::ParticleComponent::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdef\"><b>Definition:</b> particle.cpp:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_ac12c10889354895c145ddfbd759ed2c2\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2\">tram::ParticleComponent::particle_max_age</a></div><div class=\"ttdeci\">uint32_t particle_max_age</div><div class=\"ttdef\"><b>Definition:</b> particle.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_ac7bc366fee1d155a6f7f60ca1c7474cc\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc\">tram::ParticleComponent::draw_list_entry</a></div><div class=\"ttdeci\">Render::drawlistentry_t draw_list_entry</div><div class=\"ttdef\"><b>Definition:</b> particle.h:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_acb488cd232ea710d12db28f52d199377\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377\">tram::ParticleComponent::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> particle.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_ae89750f03a9e6c0beef9de59414f7a25\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25\">tram::ParticleComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> particle.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_af090a25e299547146b68263c6a70fc83\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83\">tram::ParticleComponent::initial_velocity_randomness</a></div><div class=\"ttdeci\">float initial_velocity_randomness</div><div class=\"ttdef\"><b>Definition:</b> particle.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_af671bbcfbdb0e2560ac63704b17e98f4\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4\">tram::ParticleComponent::particles</a></div><div class=\"ttdeci\">std::vector&lt; Particle &gt; particles</div><div class=\"ttdef\"><b>Definition:</b> particle.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_afc6cc6df023adfb622490cb39dee2df2\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2\">tram::ParticleComponent::vertex_array</a></div><div class=\"ttdeci\">Render::vertexarray_t vertex_array</div><div class=\"ttdef\"><b>Definition:</b> particle.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_particle_component_html_afd1c7f1296b2b2d19aa4f7a7eea2893b\"><div class=\"ttname\"><a href=\"classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b\">tram::ParticleComponent::UpdateLocation</a></div><div class=\"ttdeci\">void UpdateLocation(vec3 nlocation)</div><div class=\"ttdef\"><b>Definition:</b> particle.h:33</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arender_2sprite_8h_html\"><div class=\"ttname\"><a href=\"render_2sprite_8h.html\">sprite.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_particle_component_1_1_particle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a></div><div class=\"ttdef\"><b>Definition:</b> particle.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_particle_component_1_1_particle_html_a037670487eaab8302dfc4aff5dcaf9c1\"><div class=\"ttname\"><a href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">tram::ParticleComponent::Particle::age</a></div><div class=\"ttdeci\">uint32_t age</div><div class=\"ttdef\"><b>Definition:</b> particle.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_particle_component_1_1_particle_html_abda26a74eb7cae259f526ae455d912f2\"><div class=\"ttname\"><a href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">tram::ParticleComponent::Particle::coords</a></div><div class=\"ttdeci\">vec3 coords</div><div class=\"ttdef\"><b>Definition:</b> particle.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_particle_component_1_1_particle_html_af301390c50da385d76cb05fe2540e40f\"><div class=\"ttname\"><a href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">tram::ParticleComponent::Particle::velocity</a></div><div class=\"ttdeci\">vec3 velocity</div><div class=\"ttdef\"><b>Definition:</b> particle.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:149</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/path_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/path.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">path.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">framework/path.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/path_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/path.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">path.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"framework_2graph_8h_source.html\">framework/graph.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"path_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">tram::PathEdgeInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path.html\">tram::Path</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Base class for graphs.  <a href=\"classtram_1_1_path.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Point constrained to a <a class=\"el\" href=\"classtram_1_1_path.html\" title=\"Base class for graphs.\">Path</a>.  <a href=\"classtram_1_1_path_follower.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a8285e82eb5cb49da9f6a5a02dd0560a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">tram::PathType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">tram::PATH_STRAIGHT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">tram::PATH_LEFT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">tram::PATH_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">tram::PATH_LINEAR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">tram::PATH_CURVE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a8285e82eb5cb49da9f6a5a02dd0560a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/path_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/path.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">path.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"path_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_PATH_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_PATH_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"framework_2graph_8h.html\">framework/graph.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">PATH_STRAIGHT</a>,  <span class=\"comment\">//&lt; Path vertex connection interpreted as a straight line.</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">PATH_LEFT</a>,      <span class=\"comment\">//&lt; Path vertex connection interpreted as a left turn.</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">PATH_RIGHT</a>,     <span class=\"comment\">//&lt; Path vertex connection interpreted as a right turn.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">PATH_LINEAR</a>,    <span class=\"comment\">//&lt; Path will be interpreted as being made of straight line segments.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">PATH_CURVE</a>      <span class=\"comment\">//&lt; Not implemented.</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">   19</a></span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_path_edge_info.html\">   21</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a> {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">   22</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> <a class=\"code hl_variable\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">type</a>;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_path_follower.html\">PathFollower</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html\">   27</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_path.html\">Path</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_graph.html\">Graph</a> {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">   29</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">Path</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">Draw</a>();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_path.html\">Path</a>* <a class=\"code hl_function\" href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">   37</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">~Path</a>() = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8\">   39</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_path_follower.html\">PathFollower</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">   41</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">name</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">   42</a></span>    std::vector&lt;PathEdgeInfo&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">edge_infos</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html\">   45</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_path_follower.html\">PathFollower</a> {</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">PathFollower</a>(<a class=\"code hl_class\" href=\"classtram_1_1_path.html\">Path</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">path</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> initial_pos, <a class=\"code hl_enumeration\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">type</a>);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">Advance</a>(<span class=\"keywordtype\">float</span>);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">Project</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">   53</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">TurnLeft</a>();</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">TurnRight</a>();</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">TurnStraight</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">GetPosition</a>();</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">GetTangent</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">SetOrientation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">   62</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">progress</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">   63</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">prev</a>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">   64</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">next</a>;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">   65</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">type</a>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">   66</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">direction</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">   67</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_path.html\">Path</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">path</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>};</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>}</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_PATH_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_graph_html\"><div class=\"ttname\"><a href=\"classtram_1_1_graph.html\">tram::Graph</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html\">tram::PathFollower</a></div><div class=\"ttdoc\">Point constrained to a Path.</div><div class=\"ttdef\"><b>Definition:</b> path.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_a3517e3cd4fbc2f47b7a4b46743bcbaa0\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0\">tram::PathFollower::Advance</a></div><div class=\"ttdeci\">void Advance(float)</div><div class=\"ttdoc\">Advances the follower along the path.</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:132</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_a4a7dc721d2c2def8c57b73bf3e398314\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314\">tram::PathFollower::TurnRight</a></div><div class=\"ttdeci\">void TurnRight()</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:224</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_a86f5375b9ad4e9ee064df8782c357b49\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49\">tram::PathFollower::PathFollower</a></div><div class=\"ttdeci\">PathFollower(Path *path, vec3 initial_pos, PathType type)</div><div class=\"ttdoc\">Creates a new PathFollower for a path.</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:119</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_a97bd194a87f8c4d747b1c737a34f8c53\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53\">tram::PathFollower::next</a></div><div class=\"ttdeci\">uint32_t next</div><div class=\"ttdef\"><b>Definition:</b> path.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_a9e95681a6535da9569bea660127a52bb\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb\">tram::PathFollower::GetPosition</a></div><div class=\"ttdeci\">vec3 GetPosition()</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:211</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_aa88ed283123c1543ce714b87ec215ba8\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8\">tram::PathFollower::TurnLeft</a></div><div class=\"ttdeci\">void TurnLeft()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_ab026659adb3008a000bb00753cc74e07\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07\">tram::PathFollower::direction</a></div><div class=\"ttdeci\">PathType direction</div><div class=\"ttdef\"><b>Definition:</b> path.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_abdf8f79ad276308156aa2780e24412c9\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9\">tram::PathFollower::GetTangent</a></div><div class=\"ttdeci\">vec3 GetTangent()</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:217</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_aca1321d0863fe982ec2d827135ab8ee2\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2\">tram::PathFollower::SetOrientation</a></div><div class=\"ttdeci\">void SetOrientation(vec3)</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:201</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_ace8a71f492daf52acb64b89fd21bc025\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025\">tram::PathFollower::prev</a></div><div class=\"ttdeci\">uint32_t prev</div><div class=\"ttdef\"><b>Definition:</b> path.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_ad11ffc06ffa7fa6b5fd4732ee7ec70ab\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab\">tram::PathFollower::type</a></div><div class=\"ttdeci\">PathType type</div><div class=\"ttdef\"><b>Definition:</b> path.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_ada75b25602de0ccf13cc6a3c46885132\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132\">tram::PathFollower::Project</a></div><div class=\"ttdeci\">void Project(vec3)</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:179</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_adc605aaf1c4740b70ebe8a16be03af60\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60\">tram::PathFollower::progress</a></div><div class=\"ttdeci\">float progress</div><div class=\"ttdef\"><b>Definition:</b> path.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_af9aa9d6eca479eb74eca580212dc42a2\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2\">tram::PathFollower::TurnStraight</a></div><div class=\"ttdeci\">void TurnStraight()</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:227</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_follower_html_afef4ecc46377cb395a63dbd67bc16c9c\"><div class=\"ttname\"><a href=\"classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c\">tram::PathFollower::path</a></div><div class=\"ttdeci\">Path * path</div><div class=\"ttdef\"><b>Definition:</b> path.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html\">tram::Path</a></div><div class=\"ttdoc\">Base class for graphs.</div><div class=\"ttdef\"><b>Definition:</b> path.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_a03b3057af03cc8870dc7a699cdb1a77c\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c\">tram::Path::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_a25df1c0c40a359d561e259394593626f\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f\">tram::Path::~Path</a></div><div class=\"ttdeci\">~Path()=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_a296e431440d4a7572afa87217fd46996\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996\">tram::Path::edge_infos</a></div><div class=\"ttdeci\">std::vector&lt; PathEdgeInfo &gt; edge_infos</div><div class=\"ttdef\"><b>Definition:</b> path.h:42</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_a7933eedcc33af28cc227944e586fee3f\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f\">tram::Path::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> path.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_a9a0e7ff4de05db6ced2dd6ef0e1a2d75\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75\">tram::Path::Path</a></div><div class=\"ttdeci\">Path(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> path.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_aa5f2edca27bfb5eccec30976a3bb9b29\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29\">tram::Path::Draw</a></div><div class=\"ttdeci\">void Draw()</div><div class=\"ttdoc\">Draws the path's line segments.</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:112</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_path_html_ace5eac8a595a419404e4b4489f91a62a\"><div class=\"ttname\"><a href=\"classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a\">tram::Path::Find</a></div><div class=\"ttdeci\">static Path * Find(name_t name)</div><div class=\"ttdoc\">Finds a path.</div><div class=\"ttdef\"><b>Definition:</b> path.cpp:50</div></div>\n<div class=\"ttc\" id=\"aframework_2graph_8h_html\"><div class=\"ttname\"><a href=\"framework_2graph_8h.html\">graph.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">tram::PathType</a></div><div class=\"ttdeci\">PathType</div><div class=\"ttdef\"><b>Definition:</b> path.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f\">tram::PATH_RIGHT</a></div><div class=\"ttdeci\">@ PATH_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> path.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc\">tram::PATH_STRAIGHT</a></div><div class=\"ttdeci\">@ PATH_STRAIGHT</div><div class=\"ttdef\"><b>Definition:</b> path.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b\">tram::PATH_CURVE</a></div><div class=\"ttdeci\">@ PATH_CURVE</div><div class=\"ttdef\"><b>Definition:</b> path.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617\">tram::PATH_LEFT</a></div><div class=\"ttdeci\">@ PATH_LEFT</div><div class=\"ttdef\"><b>Definition:</b> path.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\"><div class=\"ttname\"><a href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd\">tram::PATH_LINEAR</a></div><div class=\"ttdeci\">@ PATH_LINEAR</div><div class=\"ttdef\"><b>Definition:</b> path.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_path_edge_info_html\"><div class=\"ttname\"><a href=\"structtram_1_1_path_edge_info.html\">tram::PathEdgeInfo</a></div><div class=\"ttdef\"><b>Definition:</b> path.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_path_edge_info_html_a26b5bde92d299e926fffa3cd942cfdbc\"><div class=\"ttname\"><a href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">tram::PathEdgeInfo::type</a></div><div class=\"ttdeci\">PathType type</div><div class=\"ttdef\"><b>Definition:</b> path.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pathtracer_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/pathtracer.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">pathtracer.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pathtracer_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/pathtracer.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">pathtracer.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">audio/spatial/definitions.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"pathtracer_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_spatial\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_spatial\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Experimental path tracing audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9e3e22294df1b1d269a8617a1b65291b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">tram::Audio::Spatial::FindPaths</a> (PathExplorationResult &amp;result, bool metropolis, vec3 position)</td></tr>\n<tr class=\"separator:a9e3e22294df1b1d269a8617a1b65291b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abac4b381854c802af06d8b08b9643434\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">tram::Audio::Spatial::FindPathsMetropolis</a> (PathExplorationResult *exploration, PathTracingResult *result, vec3 position)</td></tr>\n<tr class=\"separator:abac4b381854c802af06d8b08b9643434\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3dcc76efc87914d95c6011db3972eda4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">tram::Audio::Spatial::InitExplorationPaths</a> (PathExplorationResult *paths)</td></tr>\n<tr class=\"separator:a3dcc76efc87914d95c6011db3972eda4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad48745046cf034947258d77acad7b082\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">tram::Audio::Spatial::ValidateResult</a> (PathTracingResult &amp;result, vec3 position)</td></tr>\n<tr class=\"separator:ad48745046cf034947258d77acad7b082\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fce28512165221d8874ab495d005804\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">tram::Audio::Spatial::RenderResult</a> (PathTracingResult &amp;result, vec3 position)</td></tr>\n<tr class=\"separator:a4fce28512165221d8874ab495d005804\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d836ed6f922b4b64472050dd5b99304\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">tram::Audio::Spatial::CheckReverb</a> (PathExplorationResult *paths)</td></tr>\n<tr class=\"separator:a3d836ed6f922b4b64472050dd5b99304\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac07a5c7f91a197dfdd8544a505a71576\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">tram::Audio::Spatial::MakeSomeSourcePaths</a> (PathFromAudioSource &amp;path, vec3 source_position)</td></tr>\n<tr class=\"separator:ac07a5c7f91a197dfdd8544a505a71576\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pathtracer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/pathtracer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">pathtracer.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"pathtracer_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"definitions_8h.html\">audio/spatial/definitions.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"comment\">//void FindPaths(std::vector&lt;PathTracingResult&gt;&amp; paths, vec3 position);</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">   14</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">FindPaths</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a>&amp; result, <span class=\"keywordtype\">bool</span> metropolis, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">   16</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">FindPathsMetropolis</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a>* exploration, <a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a>* result, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">   18</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">InitExplorationPaths</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a>* paths);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">   20</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">ValidateResult</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a>&amp; result, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">   21</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">RenderResult</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a>&amp; result, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">   23</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">CheckReverb</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a>* paths);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">   25</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">MakeSomeSourcePaths</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a>&amp; path, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> source_position);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>}</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H</span></div>\n<div class=\"ttc\" id=\"adefinitions_8h_html\"><div class=\"ttname\"><a href=\"definitions_8h.html\">definitions.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></div><div class=\"ttdoc\">Experimental path tracing audio system.</div><div class=\"ttdef\"><b>Definition:</b> definitions.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a3d836ed6f922b4b64472050dd5b99304\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304\">tram::Audio::Spatial::CheckReverb</a></div><div class=\"ttdeci\">void CheckReverb(PathExplorationResult *paths)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a3dcc76efc87914d95c6011db3972eda4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4\">tram::Audio::Spatial::InitExplorationPaths</a></div><div class=\"ttdeci\">void InitExplorationPaths(PathExplorationResult *paths)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a4fce28512165221d8874ab495d005804\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804\">tram::Audio::Spatial::RenderResult</a></div><div class=\"ttdeci\">void RenderResult(PathTracingResult &amp;result, vec3 position)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_a9e3e22294df1b1d269a8617a1b65291b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b\">tram::Audio::Spatial::FindPaths</a></div><div class=\"ttdeci\">void FindPaths(PathExplorationResult &amp;result, bool metropolis, vec3 position)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_abac4b381854c802af06d8b08b9643434\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434\">tram::Audio::Spatial::FindPathsMetropolis</a></div><div class=\"ttdeci\">void FindPathsMetropolis(PathExplorationResult *exploration, PathTracingResult *result, vec3 position)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ac07a5c7f91a197dfdd8544a505a71576\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576\">tram::Audio::Spatial::MakeSomeSourcePaths</a></div><div class=\"ttdeci\">void MakeSomeSourcePaths(PathFromAudioSource &amp;path, vec3 source_position)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_1_1_spatial_html_ad48745046cf034947258d77acad7b082\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082\">tram::Audio::Spatial::ValidateResult</a></div><div class=\"ttdeci\">void ValidateResult(PathTracingResult &amp;result, vec3 position)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_exploration_result_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_audio_1_1_spatial_1_1_path_tracing_result_html\"><div class=\"ttname\"><a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></div><div class=\"ttdef\"><b>Definition:</b> definitions.h:30</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/physics_2api_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/api.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">api.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">physics/collisionshape.h</a>&gt;</code><br />\n</div>\n<p><a href=\"physics_2api_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a36463524ce5c3d5ee5d8c9bf2d4258bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::pair&lt; vec3, quat &gt;(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">tram::Physics::API::get_trf_callback</a>) (void *)</td></tr>\n<tr class=\"separator:a36463524ce5c3d5ee5d8c9bf2d4258bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e2158a307c228002d615529011ac455\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">tram::Physics::API::set_trf_callback</a>) (void *, std::pair&lt; vec3, quat &gt;)</td></tr>\n<tr class=\"separator:a8e2158a307c228002d615529011ac455\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd529fe6abcfcd4c2e82d455cddee7f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">tram::Physics::API::col_callback</a>) (void *, void *, ObjectCollision)</td></tr>\n<tr class=\"separator:acd529fe6abcfcd4c2e82d455cddee7f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">collisionshape_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">tram::Physics::API::MakeCollisionShape</a> (CollisionShapeTransform *shapes, size_t shape_count)</td></tr>\n<tr class=\"separator:a94cd3fb5de4826d7e83dd17450d30612\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">collisionshape_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a871da86313d2f9e88539c71940ac8e89\">tram::Physics::API::MakeCollisionShape</a> (CollisionShape shape)</td></tr>\n<tr class=\"separator:a871da86313d2f9e88539c71940ac8e89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">tram::Physics::API::YeetCollisionShape</a> (collisionshape_t shape)</td></tr>\n<tr class=\"separator:a54bd52773f6a40688ec69b6fe87749ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">rigidbody_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">tram::Physics::API::MakeRigidbody</a> (collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</td></tr>\n<tr class=\"separator:a5e1dea21d1c0aa5c2f2eec460c9be277\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">tram::Physics::API::YeetRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a6aa3f489a407250ed34d2b79f4ec83b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0abede70f73e5a367c12fc46a28b6fa3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">tram::Physics::API::SetRigidbodyTransformCallback</a> (rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</td></tr>\n<tr class=\"separator:a0abede70f73e5a367c12fc46a28b6fa3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">tram::Physics::API::SetRigidbodyCollisionCallback</a> (rigidbody_t rigidbody, col_callback callback, void *data)</td></tr>\n<tr class=\"separator:aacd35951302ec4c164498096dc1b4f59\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">tram::Physics::API::SetRigidbodyCollisionMask</a> (rigidbody_t rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:a6a8846f245dd0179318174a1e7379c8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">tram::Physics::API::SetRigidbodyCollisionGroup</a> (rigidbody_t rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:a1c06fae565edc0f7e9724d2699d206e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">tram::Physics::API::SetRigidbodyLocation</a> (rigidbody_t rigidbody, vec3 location)</td></tr>\n<tr class=\"separator:ac2cbf02cab4746c0351a894fe480d166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">tram::Physics::API::SetRigidbodyRotation</a> (rigidbody_t rigidbody, quat rotation)</td></tr>\n<tr class=\"separator:a3d0d81d724fbaf34ae5c7b159fe61aef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">tram::Physics::API::SetRigidbodyMass</a> (rigidbody_t rigidbody, float mass)</td></tr>\n<tr class=\"separator:a679d86cb7ebb5221e0c7655f728392b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">tram::Physics::API::PushRigidbody</a> (rigidbody_t rigidbody, vec3 direction)</td></tr>\n<tr class=\"separator:a7b6a5a76cb66998131a863a64989aa39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a04c616c8fd1cabe3561bc91f4a084392\">tram::Physics::API::PushRigidbody</a> (rigidbody_t rigidbody, vec3 direction, vec3 local)</td></tr>\n<tr class=\"separator:a04c616c8fd1cabe3561bc91f4a084392\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">tram::Physics::API::SpinRigidbody</a> (rigidbody_t rigidbody, vec3 direction)</td></tr>\n<tr class=\"separator:a43d326db472ec5a9e499b2816a5588c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">tram::Physics::API::SetRigidbodyDebugDrawing</a> (rigidbody_t rigidbody, bool drawing)</td></tr>\n<tr class=\"separator:a94909ae121eee8f34565dc482b16d74d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">tram::Physics::API::SetRigidbodyKinematic</a> (rigidbody_t rigidbody, bool kinematic)</td></tr>\n<tr class=\"separator:a69384c8fc4867f74184957c7b70ab882\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">tram::Physics::API::SetRigidbodyAngularFactor</a> (rigidbody_t rigidbody, vec3 factor)</td></tr>\n<tr class=\"separator:a7c4e5faa028c12c82946698a1110c1cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4adab24a698129a226d8dc841539738a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">tram::Physics::API::SetRigidbodyLinearFactor</a> (rigidbody_t rigidbody, vec3 factor)</td></tr>\n<tr class=\"separator:a4adab24a698129a226d8dc841539738a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">tram::Physics::API::SetRigidbodyVelocity</a> (rigidbody_t rigidbody, vec3 velocity)</td></tr>\n<tr class=\"separator:ae4a9270ecabf522b0978581496d4f0b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">tram::Physics::API::GetRigidbodyVelocity</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a1f0061f6029ee06aa8be370d33d1a48c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">tram::Physics::API::AwakenRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a165f12c0aa8cf05d459e9ceb71c5a629\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">tram::Physics::API::SleepRigidbody</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a59055c8583f280409fd8fbc7df08f2f4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">tram::Physics::API::DisableRigidbodyDeactivation</a> (rigidbody_t rigidbody)</td></tr>\n<tr class=\"separator:a5bc20f737d7d6dae2bb8a8c768b04cb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">trigger_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">tram::Physics::API::MakeTrigger</a> (collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation)</td></tr>\n<tr class=\"separator:a2268940df819b4cd3a4cf431515ac19d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">tram::Physics::API::YeetTrigger</a> (trigger_t)</td></tr>\n<tr class=\"separator:ab0d01da7b5dffd60aeb55dce7bb92694\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">tram::Physics::API::SetTriggerCollisionCallback</a> (trigger_t rigidbody, col_callback callback, void *data)</td></tr>\n<tr class=\"separator:a92e3c5b470bbf94447cc20b17aa4397e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4126218afb311b1eebc568240714fbd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">tram::Physics::API::SetTriggerCollisionMask</a> (trigger_t rigidbody, uint32_t mask)</td></tr>\n<tr class=\"separator:aa4126218afb311b1eebc568240714fbd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">tram::Physics::API::SetTriggerCollisionGroup</a> (trigger_t rigidbody, uint32_t group)</td></tr>\n<tr class=\"separator:af28f53e5e058544eebb6f3fb1dca5810\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">tram::Physics::API::SetTriggerLocation</a> (trigger_t rigidbody, vec3 location)</td></tr>\n<tr class=\"separator:a7562c6255d4d3aa1f54ea321af65a4f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad66528623ab1c92b411137a246641b6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">tram::Physics::API::SetTriggerRotation</a> (trigger_t rigidbody, quat location)</td></tr>\n<tr class=\"separator:ad66528623ab1c92b411137a246641b6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6725b1082075301a1d07f52948788fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; ObjectCollision, void * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">tram::Physics::API::Raycast</a> (vec3 from, vec3 to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:ab6725b1082075301a1d07f52948788fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; ObjectCollision, void * &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">tram::Physics::API::Shapecast</a> (CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask)</td></tr>\n<tr class=\"separator:af1231217a76d2c25b7134554ce9dac2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">tram::Physics::API::Init</a> ()</td></tr>\n<tr class=\"separator:a5d061813173c9cc7d06ff1fe5bb20717\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">tram::Physics::API::StepPhysics</a> ()</td></tr>\n<tr class=\"separator:a18ff0dc10793f33e66b57c8cd29d9fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">tram::Physics::API::DrawDebug</a> ()</td></tr>\n<tr class=\"separator:a1acb48d6ea2049b83205bbab3dc594e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a11e3876e4d86bc1c3b68d5d35c08ced6\">tram::Physics::API::DrawDebug</a> (bool)</td></tr>\n<tr class=\"separator:a11e3876e4d86bc1c3b68d5d35c08ced6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/physics_2api_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/api.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"physics_2api_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PHYSICS_API_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PHYSICS_API_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"collisionshape_8h.html\">physics/collisionshape.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">   17</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">   18</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">shape</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">   19</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">position</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">   20</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">rotation</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">   23</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">   24</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">point</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">   25</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">normal</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">   26</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">   29</a></span><span class=\"keyword\">typedef</span> std::pair&lt;vec3, quat&gt;(*<a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a>)(<span class=\"keywordtype\">void</span>*);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">   30</a></span><span class=\"keyword\">typedef</span> void(*<a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a>)(<span class=\"keywordtype\">void</span>*, std::pair&lt;vec3, quat&gt;);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">   31</a></span><span class=\"keyword\">typedef</span> void(*<a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a>)(<span class=\"keywordtype\">void</span>*, <span class=\"keywordtype\">void</span>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">MakeCollisionShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a>* shapes, <span class=\"keywordtype\">size_t</span> shape_count);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">MakeCollisionShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> shape);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">YeetCollisionShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">MakeRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape, <span class=\"keywordtype\">float</span> mass, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, uint32_t mask, uint32_t group, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a> get_callback, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a> set_callback, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">YeetRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">   39</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">SetRigidbodyTransformCallback</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">get_trf_callback</a> get_callback, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">set_trf_callback</a> set_callback, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">SetRigidbodyCollisionCallback</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a> callback, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">SetRigidbodyCollisionMask</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, uint32_t mask);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">SetRigidbodyCollisionGroup</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, uint32_t group);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">SetRigidbodyLocation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">SetRigidbodyRotation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">SetRigidbodyMass</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <span class=\"keywordtype\">float</span> mass);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">PushRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">PushRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> local);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">SpinRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">SetRigidbodyDebugDrawing</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <span class=\"keywordtype\">bool</span> drawing);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">SetRigidbodyKinematic</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <span class=\"keywordtype\">bool</span> kinematic);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">SetRigidbodyAngularFactor</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">SetRigidbodyLinearFactor</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> factor);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">SetRigidbodyVelocity</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> velocity);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">GetRigidbodyVelocity</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">AwakenRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">SleepRigidbody</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">DisableRigidbodyDeactivation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> rigidbody);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">MakeTrigger</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> shape, uint32_t mask, uint32_t group, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">YeetTrigger</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a>);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">SetTriggerCollisionCallback</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a> callback, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">SetTriggerCollisionMask</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, uint32_t mask);</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">SetTriggerCollisionGroup</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, uint32_t group);</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">SetTriggerLocation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">SetTriggerRotation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> rigidbody, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> location);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>std::pair&lt;ObjectCollision, void*&gt; <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">Raycast</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, uint32_t collision_mask);</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>std::vector&lt;std::pair&lt;ObjectCollision, void*&gt;&gt; <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">Shapecast</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> shape, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, uint32_t collision_mask);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">StepPhysics</a>();</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">DrawDebug</a>();</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">DrawDebug</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>}</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PHYSICS_API_H</span></div>\n<div class=\"ttc\" id=\"acollisionshape_8h_html\"><div class=\"ttname\"><a href=\"collisionshape_8h.html\">collisionshape.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></div><div class=\"ttdoc\">Physics backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a0abede70f73e5a367c12fc46a28b6fa3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3\">tram::Physics::API::SetRigidbodyTransformCallback</a></div><div class=\"ttdeci\">void SetRigidbodyTransformCallback(rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a165f12c0aa8cf05d459e9ceb71c5a629\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629\">tram::Physics::API::AwakenRigidbody</a></div><div class=\"ttdeci\">void AwakenRigidbody(rigidbody_t rigidbody)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:321</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a18ff0dc10793f33e66b57c8cd29d9fa2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2\">tram::Physics::API::StepPhysics</a></div><div class=\"ttdeci\">void StepPhysics()</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:514</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a1acb48d6ea2049b83205bbab3dc594e7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7\">tram::Physics::API::DrawDebug</a></div><div class=\"ttdeci\">void DrawDebug()</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:577</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a1c06fae565edc0f7e9724d2699d206e5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5\">tram::Physics::API::SetRigidbodyCollisionGroup</a></div><div class=\"ttdeci\">void SetRigidbodyCollisionGroup(rigidbody_t rigidbody, uint32_t group)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:240</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a1f0061f6029ee06aa8be370d33d1a48c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c\">tram::Physics::API::GetRigidbodyVelocity</a></div><div class=\"ttdeci\">vec3 GetRigidbodyVelocity(rigidbody_t rigidbody)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:316</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a2268940df819b4cd3a4cf431515ac19d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d\">tram::Physics::API::MakeTrigger</a></div><div class=\"ttdeci\">trigger_t MakeTrigger(collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:333</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a36463524ce5c3d5ee5d8c9bf2d4258bd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd\">tram::Physics::API::get_trf_callback</a></div><div class=\"ttdeci\">std::pair&lt; vec3, quat &gt;(* get_trf_callback)(void *)</div><div class=\"ttdef\"><b>Definition:</b> api.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a3d0d81d724fbaf34ae5c7b159fe61aef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef\">tram::Physics::API::SetRigidbodyRotation</a></div><div class=\"ttdeci\">void SetRigidbodyRotation(rigidbody_t rigidbody, quat rotation)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:252</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a43d326db472ec5a9e499b2816a5588c1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1\">tram::Physics::API::SpinRigidbody</a></div><div class=\"ttdeci\">void SpinRigidbody(rigidbody_t rigidbody, vec3 direction)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:272</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a4adab24a698129a226d8dc841539738a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a\">tram::Physics::API::SetRigidbodyLinearFactor</a></div><div class=\"ttdeci\">void SetRigidbodyLinearFactor(rigidbody_t rigidbody, vec3 factor)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:301</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a54bd52773f6a40688ec69b6fe87749ce\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce\">tram::Physics::API::YeetCollisionShape</a></div><div class=\"ttdeci\">void YeetCollisionShape(collisionshape_t shape)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:185</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a59055c8583f280409fd8fbc7df08f2f4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4\">tram::Physics::API::SleepRigidbody</a></div><div class=\"ttdeci\">void SleepRigidbody(rigidbody_t rigidbody)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:325</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a5bc20f737d7d6dae2bb8a8c768b04cb7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7\">tram::Physics::API::DisableRigidbodyDeactivation</a></div><div class=\"ttdeci\">void DisableRigidbodyDeactivation(rigidbody_t rigidbody)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:329</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a5d061813173c9cc7d06ff1fe5bb20717\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717\">tram::Physics::API::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:486</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a5e1dea21d1c0aa5c2f2eec460c9be277\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277\">tram::Physics::API::MakeRigidbody</a></div><div class=\"ttdeci\">rigidbody_t MakeRigidbody(collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void *data)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:190</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a679d86cb7ebb5221e0c7655f728392b7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7\">tram::Physics::API::SetRigidbodyMass</a></div><div class=\"ttdeci\">void SetRigidbodyMass(rigidbody_t rigidbody, float mass)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:258</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a69384c8fc4867f74184957c7b70ab882\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882\">tram::Physics::API::SetRigidbodyKinematic</a></div><div class=\"ttdeci\">void SetRigidbodyKinematic(rigidbody_t rigidbody, bool kinematic)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:287</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a6a8846f245dd0179318174a1e7379c8e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e\">tram::Physics::API::SetRigidbodyCollisionMask</a></div><div class=\"ttdeci\">void SetRigidbodyCollisionMask(rigidbody_t rigidbody, uint32_t mask)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:234</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a6aa3f489a407250ed34d2b79f4ec83b3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3\">tram::Physics::API::YeetRigidbody</a></div><div class=\"ttdeci\">void YeetRigidbody(rigidbody_t rigidbody)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:218</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a7562c6255d4d3aa1f54ea321af65a4f8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8\">tram::Physics::API::SetTriggerLocation</a></div><div class=\"ttdeci\">void SetTriggerLocation(trigger_t rigidbody, vec3 location)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:390</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a7b6a5a76cb66998131a863a64989aa39\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39\">tram::Physics::API::PushRigidbody</a></div><div class=\"ttdeci\">void PushRigidbody(rigidbody_t rigidbody, vec3 direction)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:262</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a7c4e5faa028c12c82946698a1110c1cd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd\">tram::Physics::API::SetRigidbodyAngularFactor</a></div><div class=\"ttdeci\">void SetRigidbodyAngularFactor(rigidbody_t rigidbody, vec3 factor)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:297</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a8e2158a307c228002d615529011ac455\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455\">tram::Physics::API::set_trf_callback</a></div><div class=\"ttdeci\">void(* set_trf_callback)(void *, std::pair&lt; vec3, quat &gt;)</div><div class=\"ttdef\"><b>Definition:</b> api.h:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a92e3c5b470bbf94447cc20b17aa4397e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e\">tram::Physics::API::SetTriggerCollisionCallback</a></div><div class=\"ttdeci\">void SetTriggerCollisionCallback(trigger_t rigidbody, col_callback callback, void *data)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:373</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a94909ae121eee8f34565dc482b16d74d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d\">tram::Physics::API::SetRigidbodyDebugDrawing</a></div><div class=\"ttdeci\">void SetRigidbodyDebugDrawing(rigidbody_t rigidbody, bool drawing)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:277</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_a94cd3fb5de4826d7e83dd17450d30612\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612\">tram::Physics::API::MakeCollisionShape</a></div><div class=\"ttdeci\">collisionshape_t MakeCollisionShape(CollisionShapeTransform *shapes, size_t shape_count)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:156</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_aa4126218afb311b1eebc568240714fbd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd\">tram::Physics::API::SetTriggerCollisionMask</a></div><div class=\"ttdeci\">void SetTriggerCollisionMask(trigger_t rigidbody, uint32_t mask)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:378</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_aacd35951302ec4c164498096dc1b4f59\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59\">tram::Physics::API::SetRigidbodyCollisionCallback</a></div><div class=\"ttdeci\">void SetRigidbodyCollisionCallback(rigidbody_t rigidbody, col_callback callback, void *data)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:229</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_ab0d01da7b5dffd60aeb55dce7bb92694\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694\">tram::Physics::API::YeetTrigger</a></div><div class=\"ttdeci\">void YeetTrigger(trigger_t)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:368</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_ab6725b1082075301a1d07f52948788fa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa\">tram::Physics::API::Raycast</a></div><div class=\"ttdeci\">std::pair&lt; ObjectCollision, void * &gt; Raycast(vec3 from, vec3 to, uint32_t collision_mask)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:402</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_ac2cbf02cab4746c0351a894fe480d166\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166\">tram::Physics::API::SetRigidbodyLocation</a></div><div class=\"ttdeci\">void SetRigidbodyLocation(rigidbody_t rigidbody, vec3 location)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:246</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_acd529fe6abcfcd4c2e82d455cddee7f7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">tram::Physics::API::col_callback</a></div><div class=\"ttdeci\">void(* col_callback)(void *, void *, ObjectCollision)</div><div class=\"ttdef\"><b>Definition:</b> api.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_ad66528623ab1c92b411137a246641b6e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e\">tram::Physics::API::SetTriggerRotation</a></div><div class=\"ttdeci\">void SetTriggerRotation(trigger_t rigidbody, quat location)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:396</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_ae4a9270ecabf522b0978581496d4f0b7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7\">tram::Physics::API::SetRigidbodyVelocity</a></div><div class=\"ttdeci\">void SetRigidbodyVelocity(rigidbody_t rigidbody, vec3 velocity)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:305</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_af1231217a76d2c25b7134554ce9dac2d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d\">tram::Physics::API::Shapecast</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; ObjectCollision, void * &gt; &gt; Shapecast(CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:459</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_1_1_a_p_i_html_af28f53e5e058544eebb6f3fb1dca5810\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810\">tram::Physics::API::SetTriggerCollisionGroup</a></div><div class=\"ttdeci\">void SetTriggerCollisionGroup(trigger_t rigidbody, uint32_t group)</div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:384</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a></div><div class=\"ttdef\"><b>Definition:</b> api.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform_html_a05e28343c7cc2518e829f6f8151d22d8\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">tram::Physics::API::CollisionShapeTransform::shape</a></div><div class=\"ttdeci\">CollisionShape shape</div><div class=\"ttdef\"><b>Definition:</b> api.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform_html_a5f018e305b8e1f25cd8bf8b2939605d1\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">tram::Physics::API::CollisionShapeTransform::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> api.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform_html_af65c9e8ab913b92a3b19454ab7747105\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">tram::Physics::API::CollisionShapeTransform::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> api.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_object_collision_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a></div><div class=\"ttdef\"><b>Definition:</b> api.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_object_collision_html_a092ad31904c1e2c66386ee35b85f151a\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">tram::Physics::API::ObjectCollision::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdef\"><b>Definition:</b> api.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_object_collision_html_a29cedd1e3495373e681e36fa2e835403\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">tram::Physics::API::ObjectCollision::normal</a></div><div class=\"ttdeci\">vec3 normal</div><div class=\"ttdef\"><b>Definition:</b> api.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_object_collision_html_ab97dd0b0dde2624c20f0b1c9551d91ad\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">tram::Physics::API::ObjectCollision::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> api.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdoc\">Shape for a collider.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1rigidbody__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1trigger__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:47</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/physics_2physics_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/physics.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">physics.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">physics/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">tram::Physics::Init</a> ()</td></tr>\n<tr class=\"memdesc:a176087bb562e45cdb38d96605d03ded6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the physics system.  <a href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">More...</a><br /></td></tr>\n<tr class=\"separator:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">tram::Physics::Update</a> ()</td></tr>\n<tr class=\"memdesc:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the physics system.  <a href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">More...</a><br /></td></tr>\n<tr class=\"separator:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Collision&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">tram::Physics::Raycast</a> (const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs a raycast.  <a href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Collision &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">tram::Physics::Shapecast</a> (const CollisionShape &amp;shape, const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">I have no idea if this function works. (yes it does)  <a href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">More...</a><br /></td></tr>\n<tr class=\"separator:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/physics_2physics_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/physics.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">physics.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"physics_2physics_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data.  <a href=\"structtram_1_1_physics_1_1_collision.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">tram::Physics::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_physics_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> backend <a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\" title=\"Physics backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a5b8f6a7bd1ffb55b55a5f534008406f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">tram::Physics::CollisionGroup</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">tram::Physics::COLL_WORLDOBJ</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">tram::Physics::COLL_STATICOBJ</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">tram::Physics::COLL_DYNAMICOBJ</a> = 8\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">tram::Physics::COLL_TRIGGER</a> = 16\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">tram::Physics::COLL_PLAYER</a> = 32\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">tram::Physics::COLL_MONSTER</a> = 64\n, <a class=\"el\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">tram::Physics::COLL_VEHICLE</a> = 128\n<br />\n }</td></tr>\n<tr class=\"separator:a5b8f6a7bd1ffb55b55a5f534008406f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">tram::Physics::Init</a> ()</td></tr>\n<tr class=\"memdesc:a176087bb562e45cdb38d96605d03ded6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the physics system.  <a href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">More...</a><br /></td></tr>\n<tr class=\"separator:a176087bb562e45cdb38d96605d03ded6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">tram::Physics::Update</a> ()</td></tr>\n<tr class=\"memdesc:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the physics system.  <a href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">More...</a><br /></td></tr>\n<tr class=\"separator:aba25e48ea456c82d6c11ef12b2862184\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Collision&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">tram::Physics::Raycast</a> (const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Performs a raycast.  <a href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3616a0153cf20031eff7b3aba43e7f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; Collision &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">tram::Physics::Shapecast</a> (const CollisionShape &amp;shape, const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</td></tr>\n<tr class=\"memdesc:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">I have no idea if this function works. (yes it does)  <a href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">More...</a><br /></td></tr>\n<tr class=\"separator:a415045d72320d7d4512e4ecdc430d89f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/physics_2physics_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/physics.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_4c096b243504cf129e41270299bfcecc.html\">physics</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">physics.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"physics_2physics_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PHYSICS_PHYSICS_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PHYSICS_PHYSICS_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">struct </span>btCollisionShape;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">struct </span>btCollisionObject;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">struct </span>btRigidBody;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <span class=\"keyword\">class </span>PhysicsComponent;  </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>}</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_physics.html\">tram::Physics</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">   24</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">CollisionGroup</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">   25</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">COLL_WORLDOBJ</a> = 2,      <span class=\"comment\">//&lt; Worldspawns</span></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">   26</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">COLL_STATICOBJ</a> = 4,     <span class=\"comment\">//&lt; Decorations, doors, elevators and platforms</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">COLL_DYNAMICOBJ</a> = 8,    <span class=\"comment\">//&lt; Crates and other </span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">   28</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">COLL_TRIGGER</a> = 16,      <span class=\"comment\">//&lt; Triggers</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">   29</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">COLL_PLAYER</a>  = 32,      <span class=\"comment\">//&lt; Players</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">   30</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">COLL_MONSTER</a> = 64,      <span class=\"comment\">//&lt; Monsters and other NPCs</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">COLL_VEHICLE</a> = 128      <span class=\"comment\">//&lt; Trams and microbuses</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">   32</a></span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision.html\">   34</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> {</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">   35</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">collider</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">point</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">   37</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">normal</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">   38</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">distance</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>};</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>RigidbodyMetadata; }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">   43</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a> {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">   44</a></span>    btCollisionShape* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">bt_shape</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>};</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1trigger__t.html\">   47</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a> {</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">   48</a></span>    btCollisionObject* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">bt_collisionshape</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">   49</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">bt_metadata</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>};</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">   52</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a> {</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">   53</a></span>    btRigidBody* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">bt_rigidbody</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">   54</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">bt_metadata</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">class </span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">Raycast</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; from, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; to, uint32_t collision_mask = -1);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>std::vector&lt;Collision&gt; <a class=\"code hl_function\" href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">Shapecast</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&amp; shape, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; from, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; to, uint32_t collision_mask = -1);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>}</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PHYSICS_PHYSICS_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdoc\">Rigidbody wrapper.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:12</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html\">tram::Physics</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a176087bb562e45cdb38d96605d03ded6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6\">tram::Physics::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes the physics system.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a415045d72320d7d4512e4ecdc430d89f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f\">tram::Physics::Shapecast</a></div><div class=\"ttdeci\">std::vector&lt; Collision &gt; Shapecast(const CollisionShape &amp;shape, const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</div><div class=\"ttdoc\">I have no idea if this function works. (yes it does)</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:67</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8\">tram::Physics::CollisionGroup</a></div><div class=\"ttdeci\">CollisionGroup</div><div class=\"ttdef\"><b>Definition:</b> physics.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658\">tram::Physics::COLL_TRIGGER</a></div><div class=\"ttdeci\">@ COLL_TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> physics.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287\">tram::Physics::COLL_VEHICLE</a></div><div class=\"ttdeci\">@ COLL_VEHICLE</div><div class=\"ttdef\"><b>Definition:</b> physics.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec\">tram::Physics::COLL_WORLDOBJ</a></div><div class=\"ttdeci\">@ COLL_WORLDOBJ</div><div class=\"ttdef\"><b>Definition:</b> physics.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f\">tram::Physics::COLL_STATICOBJ</a></div><div class=\"ttdeci\">@ COLL_STATICOBJ</div><div class=\"ttdef\"><b>Definition:</b> physics.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65\">tram::Physics::COLL_PLAYER</a></div><div class=\"ttdeci\">@ COLL_PLAYER</div><div class=\"ttdef\"><b>Definition:</b> physics.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473\">tram::Physics::COLL_MONSTER</a></div><div class=\"ttdeci\">@ COLL_MONSTER</div><div class=\"ttdef\"><b>Definition:</b> physics.h:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4\">tram::Physics::COLL_DYNAMICOBJ</a></div><div class=\"ttdeci\">@ COLL_DYNAMICOBJ</div><div class=\"ttdef\"><b>Definition:</b> physics.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_aa3616a0153cf20031eff7b3aba43e7f9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\">tram::Physics::Raycast</a></div><div class=\"ttdeci\">Collision Raycast(const vec3 &amp;from, const vec3 &amp;to, uint32_t collision_mask)</div><div class=\"ttdoc\">Performs a raycast.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_physics_html_aba25e48ea456c82d6c11ef12b2862184\"><div class=\"ttname\"><a href=\"namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184\">tram::Physics::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Updates the physics system.</div><div class=\"ttdef\"><b>Definition:</b> physics.cpp:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></div><div class=\"ttdef\"><b>Definition:</b> bullet.cpp:100</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></div><div class=\"ttdoc\">Physics collision data.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html_a690a4beda93af1b5ebc99d8c8fbf781b\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">tram::Physics::Collision::normal</a></div><div class=\"ttdeci\">vec3 normal</div><div class=\"ttdoc\">Normal vector of the surface that the collision happened with.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html_a6d9ec6fb6b22c4d6c7426a6ac99962ce\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">tram::Physics::Collision::point</a></div><div class=\"ttdeci\">vec3 point</div><div class=\"ttdoc\">Position of the collision in world space.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html_a9f47771842fd66f970df994aaf4364ff\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">tram::Physics::Collision::collider</a></div><div class=\"ttdeci\">PhysicsComponent * collider</div><div class=\"ttdoc\">Pointer to a PhysicsComponent that owns the rigidbody with which the collision happened.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html_ae80a8d88309f42e12b2fa84e0e8809a8\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">tram::Physics::Collision::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdoc\">Distance of the collision, i.e.</div><div class=\"ttdef\"><b>Definition:</b> physics.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdoc\">Shape for a collider.</div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1collisionshape__t_html_a11986390d77b413d024f236a8e9f41e7\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">tram::Physics::collisionshape_t::bt_shape</a></div><div class=\"ttdeci\">btCollisionShape * bt_shape</div><div class=\"ttdef\"><b>Definition:</b> physics.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1rigidbody__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1rigidbody__t_html_a4b513c1a384b224dc1225c02c314b9f3\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">tram::Physics::rigidbody_t::bt_rigidbody</a></div><div class=\"ttdeci\">btRigidBody * bt_rigidbody</div><div class=\"ttdef\"><b>Definition:</b> physics.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1rigidbody__t_html_a57287fd1b0bb9650403230e67c315fc9\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">tram::Physics::rigidbody_t::bt_metadata</a></div><div class=\"ttdeci\">API::RigidbodyMetadata * bt_metadata</div><div class=\"ttdef\"><b>Definition:</b> physics.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1trigger__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:47</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1trigger__t_html_a71cfc73a8237b3ef17fe522d9c8060fa\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">tram::Physics::trigger_t::bt_metadata</a></div><div class=\"ttdeci\">API::RigidbodyMetadata * bt_metadata</div><div class=\"ttdef\"><b>Definition:</b> physics.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1trigger__t_html_aba9c93ad4d520e049fcea5713032bdf4\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">tram::Physics::trigger_t::bt_collisionshape</a></div><div class=\"ttdeci\">btCollisionObject * bt_collisionshape</div><div class=\"ttdef\"><b>Definition:</b> physics.h:48</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_2api_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/api.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">api.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstddef&gt;</code><br />\n</div>\n<p><a href=\"platform_2api_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform_1_1_window\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html\">tram::Platform::Window</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_platform_1_1_window\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Windowing backend API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform_1_1_input\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\">tram::Platform::Input</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_platform_1_1_input\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html\" title=\"Input backend API.\">Input</a> backend API. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a1ed03f0da21527169589f581e55c881f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">tram::Platform::Window::CursorType</a> { <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">tram::Platform::Window::CURSOR_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">tram::Platform::Window::CURSOR_TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">tram::Platform::Window::CURSOR_CLICK</a>\n }</td></tr>\n<tr class=\"separator:a1ed03f0da21527169589f581e55c881f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:af03eb6bcb74b8f5ac5fe208c82c7e7b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">tram::Platform::Window::Init</a> ()</td></tr>\n<tr class=\"separator:af03eb6bcb74b8f5ac5fe208c82c7e7b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaed5c879e7890030c7db2b6a03949f39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">tram::Platform::Window::Update</a> ()</td></tr>\n<tr class=\"separator:aaed5c879e7890030c7db2b6a03949f39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a573de0dcedb42bb3fc34a010d3cbff38\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">tram::Platform::Window::Uninit</a> ()</td></tr>\n<tr class=\"separator:a573de0dcedb42bb3fc34a010d3cbff38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c20800318f5aa9b5d9b8a357c20e7e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">tram::Platform::Window::SetTitle</a> (const char *)</td></tr>\n<tr class=\"separator:a9c20800318f5aa9b5d9b8a357c20e7e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af936ef79e15427ab64724cb9c0b102d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">tram::Platform::Window::SetSize</a> (int w, int h)</td></tr>\n<tr class=\"separator:af936ef79e15427ab64724cb9c0b102d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8f96fbc1d628f67ed4301d47d67120a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">tram::Platform::Window::SetCursor</a> (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a>)</td></tr>\n<tr class=\"separator:af8f96fbc1d628f67ed4301d47d67120a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeadcf3d1d5fbf11485b74214f091819e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">tram::Platform::Window::SetCursorPosition</a> (float x, float y)</td></tr>\n<tr class=\"separator:aeadcf3d1d5fbf11485b74214f091819e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2079845fb32cb1e0a7a65742f381a567\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">tram::Platform::Window::EnableCursor</a> ()</td></tr>\n<tr class=\"separator:a2079845fb32cb1e0a7a65742f381a567\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4172bf310d20904476bbdd69dedc2947\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">tram::Platform::Window::DisableCursor</a> ()</td></tr>\n<tr class=\"separator:a4172bf310d20904476bbdd69dedc2947\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7000ba82ae8a78716a4d46451b7e3fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">tram::Platform::Window::SetScale</a> (int s)</td></tr>\n<tr class=\"separator:ad7000ba82ae8a78716a4d46451b7e3fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25eea05c5898d99a27460394bc17ee92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">tram::Platform::Window::GetTime</a> ()</td></tr>\n<tr class=\"separator:a25eea05c5898d99a27460394bc17ee92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a71748e1f64a454dc9b47260b67b035\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">tram::Platform::Window::GetCurrentMonitor</a> ()</td></tr>\n<tr class=\"separator:a3a71748e1f64a454dc9b47260b67b035\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a254ec949eaaef45870d59c02a4c35381\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">tram::Platform::Window::GetMonitorCount</a> ()</td></tr>\n<tr class=\"separator:a254ec949eaaef45870d59c02a4c35381\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58daaf85f6e0870b9bcdb2a443356213\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">tram::Platform::Window::SetMonitor</a> (int monitor)</td></tr>\n<tr class=\"separator:a58daaf85f6e0870b9bcdb2a443356213\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a283d6de486d8c8808e78da64f2a4667e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">tram::Platform::Window::IsFullscreen</a> ()</td></tr>\n<tr class=\"separator:a283d6de486d8c8808e78da64f2a4667e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a225b179d574437d4573c016bfeed7fe4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">tram::Platform::Window::SetFullscreen</a> (bool)</td></tr>\n<tr class=\"separator:a225b179d574437d4573c016bfeed7fe4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f0dc2c949f69dbde94b216e53d26797\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">tram::Platform::Window::IsVsync</a> ()</td></tr>\n<tr class=\"separator:a5f0dc2c949f69dbde94b216e53d26797\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf3bd7faf17dc6100dd061c8aa1bfaa4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">tram::Platform::Window::SetVsync</a> (bool)</td></tr>\n<tr class=\"separator:adf3bd7faf17dc6100dd061c8aa1bfaa4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a767093572b3a28a3c4c3bb86c9f2fdaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">tram::Platform::Window::IsRawInput</a> ()</td></tr>\n<tr class=\"separator:a767093572b3a28a3c4c3bb86c9f2fdaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2fd499590eebaf0a891068d1bac9945\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">tram::Platform::Window::SetRawInput</a> (bool)</td></tr>\n<tr class=\"separator:aa2fd499590eebaf0a891068d1bac9945\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9cb305ebdf39acfb85f04ef54d867703\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">tram::Platform::Window::IsRenderContextThread</a> ()</td></tr>\n<tr class=\"separator:a9cb305ebdf39acfb85f04ef54d867703\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::Platform::Input::Init</a> ()</td></tr>\n<tr class=\"separator:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::Platform::Input::Update</a> ()</td></tr>\n<tr class=\"separator:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::Platform::Input::Uninit</a> ()</td></tr>\n<tr class=\"separator:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_2api_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/api.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"platform_2api_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_API_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_API_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_platform_1_1_window.html\">tram::Platform::Window</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">   22</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">   23</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">   24</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">SetTitle</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">SetSize</a>(<span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">   29</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">CursorType</a> {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">   30</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">CURSOR_DEFAULT</a>,</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">   31</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">CURSOR_TEXT</a>,</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">CURSOR_CLICK</a></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">   33</a></span>};</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">SetCursor</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">CursorType</a>);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">SetCursorPosition</a>(<span class=\"keywordtype\">float</span> x, <span class=\"keywordtype\">float</span> y);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">EnableCursor</a>();</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">DisableCursor</a>();</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">   41</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">SetScale</a>(<span class=\"keywordtype\">int</span> s);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">GetTime</a>();</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">GetCurrentMonitor</a>();</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">GetMonitorCount</a>();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">SetMonitor</a>(<span class=\"keywordtype\">int</span> monitor);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">IsFullscreen</a>();</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">SetFullscreen</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">IsVsync</a>();</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">SetVsync</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">IsRawInput</a>();</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">SetRawInput</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">IsRenderContextThread</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>}</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_platform_1_1_input.html\">tram::Platform::Input</a> {</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">   61</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">   62</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">   63</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>}</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PLATFORM_API_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_input_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_input.html\">tram::Platform::Input</a></div><div class=\"ttdoc\">Input backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_input_html_a34c539a00c1e5228b2ee9d9f69de5af8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::Platform::Input::Init</a></div><div class=\"ttdeci\">void Init()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_input_html_a5206ed605c69006a0d6ad1b2dafb2a80\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::Platform::Input::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_input_html_a8d6af6713f2e6c053cacfaab7e628438\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::Platform::Input::Update</a></div><div class=\"ttdeci\">void Update()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html\">tram::Platform::Window</a></div><div class=\"ttdoc\">Windowing backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a1ed03f0da21527169589f581e55c881f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f\">tram::Platform::Window::CursorType</a></div><div class=\"ttdeci\">CursorType</div><div class=\"ttdef\"><b>Definition:</b> api.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131\">tram::Platform::Window::CURSOR_DEFAULT</a></div><div class=\"ttdeci\">@ CURSOR_DEFAULT</div><div class=\"ttdef\"><b>Definition:</b> api.h:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec\">tram::Platform::Window::CURSOR_CLICK</a></div><div class=\"ttdeci\">@ CURSOR_CLICK</div><div class=\"ttdef\"><b>Definition:</b> api.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c\">tram::Platform::Window::CURSOR_TEXT</a></div><div class=\"ttdeci\">@ CURSOR_TEXT</div><div class=\"ttdef\"><b>Definition:</b> api.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a2079845fb32cb1e0a7a65742f381a567\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567\">tram::Platform::Window::EnableCursor</a></div><div class=\"ttdeci\">void EnableCursor()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:174</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a225b179d574437d4573c016bfeed7fe4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4\">tram::Platform::Window::SetFullscreen</a></div><div class=\"ttdeci\">void SetFullscreen(bool)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:214</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a254ec949eaaef45870d59c02a4c35381\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381\">tram::Platform::Window::GetMonitorCount</a></div><div class=\"ttdeci\">int GetMonitorCount()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:199</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a25eea05c5898d99a27460394bc17ee92\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92\">tram::Platform::Window::GetTime</a></div><div class=\"ttdeci\">double GetTime()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:190</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a283d6de486d8c8808e78da64f2a4667e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e\">tram::Platform::Window::IsFullscreen</a></div><div class=\"ttdeci\">bool IsFullscreen()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:210</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a3a71748e1f64a454dc9b47260b67b035\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035\">tram::Platform::Window::GetCurrentMonitor</a></div><div class=\"ttdeci\">int GetCurrentMonitor()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:195</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a4172bf310d20904476bbdd69dedc2947\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947\">tram::Platform::Window::DisableCursor</a></div><div class=\"ttdeci\">void DisableCursor()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:178</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a573de0dcedb42bb3fc34a010d3cbff38\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38\">tram::Platform::Window::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a58daaf85f6e0870b9bcdb2a443356213\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213\">tram::Platform::Window::SetMonitor</a></div><div class=\"ttdeci\">void SetMonitor(int monitor)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:205</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a5f0dc2c949f69dbde94b216e53d26797\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797\">tram::Platform::Window::IsVsync</a></div><div class=\"ttdeci\">bool IsVsync()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:241</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a767093572b3a28a3c4c3bb86c9f2fdaa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa\">tram::Platform::Window::IsRawInput</a></div><div class=\"ttdeci\">bool IsRawInput()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:182</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a9c20800318f5aa9b5d9b8a357c20e7e5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5\">tram::Platform::Window::SetTitle</a></div><div class=\"ttdeci\">void SetTitle(const char *)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:156</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_a9cb305ebdf39acfb85f04ef54d867703\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703\">tram::Platform::Window::IsRenderContextThread</a></div><div class=\"ttdeci\">bool IsRenderContextThread()</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:255</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_aa2fd499590eebaf0a891068d1bac9945\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945\">tram::Platform::Window::SetRawInput</a></div><div class=\"ttdeci\">void SetRawInput(bool)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:186</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_aaed5c879e7890030c7db2b6a03949f39\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39\">tram::Platform::Window::Update</a></div><div class=\"ttdeci\">void Update()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_ad7000ba82ae8a78716a4d46451b7e3fc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc\">tram::Platform::Window::SetScale</a></div><div class=\"ttdeci\">void SetScale(int s)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_adf3bd7faf17dc6100dd061c8aa1bfaa4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4\">tram::Platform::Window::SetVsync</a></div><div class=\"ttdeci\">void SetVsync(bool)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:245</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_aeadcf3d1d5fbf11485b74214f091819e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e\">tram::Platform::Window::SetCursorPosition</a></div><div class=\"ttdeci\">void SetCursorPosition(float x, float y)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:170</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_af03eb6bcb74b8f5ac5fe208c82c7e7b5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5\">tram::Platform::Window::Init</a></div><div class=\"ttdeci\">void Init()</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_af8f96fbc1d628f67ed4301d47d67120a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a\">tram::Platform::Window::SetCursor</a></div><div class=\"ttdeci\">void SetCursor(CursorType)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:166</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_platform_1_1_window_html_af936ef79e15427ab64724cb9c0b102d2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2\">tram::Platform::Window::SetSize</a></div><div class=\"ttdeci\">void SetSize(int w, int h)</div><div class=\"ttdef\"><b>Definition:</b> glfw.cpp:161</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_2file_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/file.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">file.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cassert&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">platform/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_reader.html\">tram::DiskReader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_disk_writer.html\">tram::DiskWriter</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_2file_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/file.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">file.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstddef&gt;</code><br />\n<code>#include &lt;string&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"platform_2file_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">tram::FileSource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a972c59287ba467dbfe003f137609550d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">tram::FileStatus</a> { <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\">tram::IO_ERROR</a>\n, <a class=\"el\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\">tram::READY</a>\n }</td></tr>\n<tr class=\"separator:a972c59287ba467dbfe003f137609550d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a529c8d3e049a7dcc4425fbe040e4c531\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">tram::FileMedium</a> { <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\">tram::DISK</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\">tram::USER</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\">tram::ARCHIVE</a>\n, <a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\">tram::HTTP</a>\n }</td></tr>\n<tr class=\"separator:a529c8d3e049a7dcc4425fbe040e4c531\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_2file_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/file.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">file.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"platform_2file_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">   12</a></span><span class=\"keyword\">enum class</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\">IO_ERROR</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\">READY</a></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>};</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">   17</a></span><span class=\"keyword\">enum class</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">FileMedium</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\">DISK</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\">USER</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\">ARCHIVE</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\">HTTP</a></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_file_source.html\">   24</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_file_source.html\">FileSource</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">   25</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">FileMedium</a> <a class=\"code hl_variable\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">medium</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">   26</a></span>    std::string <a class=\"code hl_variable\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">path</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html\">   29</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_file_reader.html\">FileReader</a> {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">   31</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">~FileReader</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">   33</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">GetContents</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">   34</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">GetSize</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">   35</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">GetStatus</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">   36</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">Yeet</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_file_reader.html\">FileReader</a>* <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">GetReader</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">SetSearchList</a>();</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">static</span> std::vector&lt;FileSource&gt; <a class=\"code hl_function\" href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">GetSearchList</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_writer.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_file_writer.html\">FileWriter</a> {</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">   46</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">~FileWriter</a>() = <span class=\"keywordflow\">default</span>;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">   48</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">SetContents</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* contents, <span class=\"keywordtype\">size_t</span> size) = 0;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">   49</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">FileStatus</a> <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">GetStatus</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">   50</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">Yeet</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_file_writer.html\">FileWriter</a>* <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">GetWriter</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">SetMediumList</a>();</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"keyword\">static</span> std::vector&lt;FileSource&gt; <a class=\"code hl_function\" href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">GetMediumList</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>}</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PLATFORM_FILE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html\">tram::FileReader</a></div><div class=\"ttdef\"><b>Definition:</b> file.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_a13fadbba64b0b75fc9c52bf64fbfe116\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116\">tram::FileReader::GetSearchList</a></div><div class=\"ttdeci\">static std::vector&lt; FileSource &gt; GetSearchList()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_a28bb4f3c47fb4aa8a2241b2944986bdc\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc\">tram::FileReader::GetSize</a></div><div class=\"ttdeci\">virtual size_t GetSize()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_a359b60e4d588f6721a56bf619e85dded\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded\">tram::FileReader::GetContents</a></div><div class=\"ttdeci\">virtual const char * GetContents()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_a8a7d782b12279f564439c0438365c91a\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a\">tram::FileReader::SetSearchList</a></div><div class=\"ttdeci\">static void SetSearchList()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_aadf272a73650e58beb40679038b8fafd\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd\">tram::FileReader::Yeet</a></div><div class=\"ttdeci\">virtual void Yeet()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_ac1c9f2016c1c475ed82418fb2a2dca8f\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f\">tram::FileReader::~FileReader</a></div><div class=\"ttdeci\">virtual ~FileReader()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_adeafb2e1ec0d9d2c9e2ea25b0d705f14\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14\">tram::FileReader::GetReader</a></div><div class=\"ttdeci\">static FileReader * GetReader(const char *path)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:99</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_reader_html_afe64d8768d91a14f788e7d518591a572\"><div class=\"ttname\"><a href=\"classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572\">tram::FileReader::GetStatus</a></div><div class=\"ttdeci\">virtual FileStatus GetStatus()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html\">tram::FileWriter</a></div><div class=\"ttdef\"><b>Definition:</b> file.h:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_a74186dc3ea104ae0fa72c23f96ef7e80\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80\">tram::FileWriter::SetContents</a></div><div class=\"ttdeci\">virtual void SetContents(const char *contents, size_t size)=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_a83856556c818cf185c04b5e5e26a0021\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021\">tram::FileWriter::Yeet</a></div><div class=\"ttdeci\">virtual void Yeet()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_a9c50a8afb948a19a9bc89d6353046aab\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab\">tram::FileWriter::SetMediumList</a></div><div class=\"ttdeci\">static void SetMediumList()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:160</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_ab9657acc04bba611bd8f061dcd207f1c\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c\">tram::FileWriter::~FileWriter</a></div><div class=\"ttdeci\">virtual ~FileWriter()=default</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_abcf99237a3774981e16c871ec68b1473\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473\">tram::FileWriter::GetMediumList</a></div><div class=\"ttdeci\">static std::vector&lt; FileSource &gt; GetMediumList()</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:164</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_acdf5bcd53cc32c0c7f268d73a9fca3cc\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc\">tram::FileWriter::GetWriter</a></div><div class=\"ttdeci\">static FileWriter * GetWriter(const char *path)</div><div class=\"ttdef\"><b>Definition:</b> file.cpp:155</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_file_writer_html_ae51986fead14e4b024fea535c0986cec\"><div class=\"ttname\"><a href=\"classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec\">tram::FileWriter::GetStatus</a></div><div class=\"ttdeci\">virtual FileStatus GetStatus()=0</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a529c8d3e049a7dcc4425fbe040e4c531\"><div class=\"ttname\"><a href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">tram::FileMedium</a></div><div class=\"ttdeci\">FileMedium</div><div class=\"ttdef\"><b>Definition:</b> file.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\"><div class=\"ttname\"><a href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7\">tram::FileMedium::DISK</a></div><div class=\"ttdeci\">@ DISK</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\"><div class=\"ttname\"><a href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986\">tram::FileMedium::HTTP</a></div><div class=\"ttdeci\">@ HTTP</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\"><div class=\"ttname\"><a href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12\">tram::FileMedium::USER</a></div><div class=\"ttdeci\">@ USER</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\"><div class=\"ttname\"><a href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995\">tram::FileMedium::ARCHIVE</a></div><div class=\"ttdeci\">@ ARCHIVE</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a972c59287ba467dbfe003f137609550d\"><div class=\"ttname\"><a href=\"namespacetram.html#a972c59287ba467dbfe003f137609550d\">tram::FileStatus</a></div><div class=\"ttdeci\">FileStatus</div><div class=\"ttdef\"><b>Definition:</b> file.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\"><div class=\"ttname\"><a href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93\">tram::FileStatus::IO_ERROR</a></div><div class=\"ttdeci\">@ IO_ERROR</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\"><div class=\"ttname\"><a href=\"namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489\">tram::FileStatus::READY</a></div><div class=\"ttdeci\">@ READY</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_file_source_html\"><div class=\"ttname\"><a href=\"structtram_1_1_file_source.html\">tram::FileSource</a></div><div class=\"ttdef\"><b>Definition:</b> file.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_file_source_html_a13ed2bed034f6bdbfb616d75141c8d63\"><div class=\"ttname\"><a href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">tram::FileSource::medium</a></div><div class=\"ttdeci\">FileMedium medium</div><div class=\"ttdef\"><b>Definition:</b> file.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_file_source_html_a5addd94ec280b82396cff93ec0ece536\"><div class=\"ttname\"><a href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">tram::FileSource::path</a></div><div class=\"ttdeci\">std::string path</div><div class=\"ttdef\"><b>Definition:</b> file.h:26</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/platform.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">platform.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"platform_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/platform_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/platform.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">platform.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"platform_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_PLATFORM_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_PLATFORM_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span>}</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// PLATFORM_PLATFORM_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pool_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/pool.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">pool.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;string&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;cassert&gt;</code><br />\n</div>\n<p><a href=\"pool_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">using&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">tram::PoopProxy</a> = PoolProxy&lt; T &gt;</td></tr>\n<tr class=\"separator:a72cce72d3494bf0e132892a3735ac229\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/pool_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/pool.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">pool.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"pool_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_POOL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_POOL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"comment\">/* this is one of the oldest files in the library, hence why it looks so awful.</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"comment\"> * it probably would be a good idea to clean up the code, but editing this file</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"comment\"> * causes the whole library to re-compile and I don&#39;t really feel like doing it</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"comment\"> * now. also adding this comment caused the whole library to recompile. also</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"comment\"> * adding this bit at the end caused the library to re-compile. I should</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\"> * probably stop editing this file.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html\">   21</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool</a> {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">   23</a></span>    std::string <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">poolName</a>;</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">   24</a></span>    uint64_t <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">   25</a></span>    uint64_t <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">maxSize</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">   26</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">   27</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">   28</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html\">   30</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> {</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">   31</a></span>        <a class=\"code hl_function\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">iterator</a>(T* <a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>) : <a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>(<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>) {}</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">   33</a></span>        T&amp; <a class=\"code hl_function\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">operator*</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">   34</a></span>        T* <a class=\"code hl_function\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">operator-&gt;</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">   36</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&amp; <a class=\"code hl_function\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">operator++</a>() { <span class=\"keywordflow\">do</span> <a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>++; <span class=\"keywordflow\">while</span> (*((uint64_t*)<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>) == 0 &amp;&amp; *(((uint64_t*)<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>) + 1) != 0); <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }  </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302\">   38</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"code hl_function\" href=\"structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302\">operator++</a>(<span class=\"keywordtype\">int</span>) { <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> tmp = *<span class=\"keyword\">this</span>; ++(*this); <span class=\"keywordflow\">return</span> tmp; }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">   40</a></span>        <span class=\"keyword\">friend</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_friend\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">operator== </a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&amp; a, <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&amp; b) { <span class=\"keywordflow\">return</span> a.<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a> == b.<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>; };</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">   41</a></span>        <span class=\"keyword\">friend</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_friend\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">operator!= </a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&amp; a, <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&amp; b) { <span class=\"keywordflow\">return</span> a.<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a> != b.<a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>; };  </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">   43</a></span>        T* <a class=\"code hl_variable\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    };</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">   46</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">Pool</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint64_t initialSize<span class=\"comment\">/*, bool skipFirst = false*/</span>) {</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">poolName</a> = name;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">maxSize</a> = initialSize;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"comment\">//poolSize = skipFirst ? 1 : 0;</span></div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a> = 0;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a> = <span class=\"keyword\">static_cast&lt;</span>T*<span class=\"keyword\">&gt;</span>(::operator <span class=\"keyword\">new</span>((initialSize * <span class=\"keyword\">sizeof</span>(T)) + <span class=\"keyword\">sizeof</span>(uint64_t) * 2));</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"comment\">/*if (skipFirst) {</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">            last++;</span></div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">            lastfree++;</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">        }*/</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        *((uint64_t*)<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>) = 0;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        *(((uint64_t*)<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>) + 1) = 0;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    };</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">   65</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">Pool</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint64_t initialSize, std::initializer_list&lt;T&gt; list) : <a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool</a>(name, initialSize) {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>&amp; entry : list) {</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>            <span class=\"comment\">//*AddNew(1) = entry; // not good, but works</span></div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>            <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">AddNew</a>(entry);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        }</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    }</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">   73</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">AddNew</a>(Args&amp;&amp;... args){</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <span class=\"keywordflow\">if</span>(<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">maxSize</a>){</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Pool &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">poolName</a> &lt;&lt; <span class=\"stringliteral\">&quot; out of space!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>            abort();</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        }</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        T* newobj;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <span class=\"keywordflow\">if</span>(<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a> != <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>){</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>            newobj = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            uint64_t* skip = <span class=\"keyword\">reinterpret_cast&lt;</span>uint64_t*<span class=\"keyword\">&gt;</span>(<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>);</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>            skip++;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>            T** skip2 = <span class=\"keyword\">reinterpret_cast&lt;</span>T**<span class=\"keyword\">&gt;</span>(skip);</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a> = *skip2;</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>            newobj = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>++;</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>++;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>            </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            *((uint64_t*)<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>) = 0;</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            *(((uint64_t*)<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>) + 1) = 0;</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        }</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keyword\">new</span>(newobj) T(std::forward&lt;Args&gt;(args)...);</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a>++;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"keywordflow\">return</span> newobj;</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    };</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">  103</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">Remove</a>(T* removeptr){</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        assert(removeptr &gt;= <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a> &amp;&amp; removeptr &lt; <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>); <span class=\"comment\">// pointer is in pool</span></div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>        removeptr-&gt;~T(); <span class=\"comment\">// destruct</span></div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>        uint64_t* skip = <span class=\"keyword\">reinterpret_cast&lt;</span>uint64_t*<span class=\"keyword\">&gt;</span>(removeptr);</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>        *skip = 0; <span class=\"comment\">// mark as empty</span></div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        skip++;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        T** nextfree = <span class=\"keyword\">reinterpret_cast&lt;</span>T**<span class=\"keyword\">&gt;</span>(skip);</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        *nextfree = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a>; <span class=\"comment\">// add pointer to previous free place</span></div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">lastfree</a> = removeptr;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a>--;</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    };</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">  114</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">operator[]</a>(<span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a>) { <span class=\"keywordflow\">return</span> *(<a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a> + <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a>); } <span class=\"comment\">// note that there is no checking for whether the index is valid</span></div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">  115</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">GetFirst</a>() {<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>;};   <span class=\"comment\">// yeet?</span></div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">  116</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">GetLast</a>() {<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>;};     <span class=\"comment\">// also yeet?</span></div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">  117</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">begin</a>() {<span class=\"keyword\">auto</span> ptr = <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>; <span class=\"keywordflow\">while</span> (*((uint64_t*)ptr) == 0 &amp;&amp; ptr &lt; <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>) ptr++; <span class=\"keywordflow\">return</span> ptr;};</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">  118</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">end</a>() {<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a>;};</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">  119</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">GetSize</a>()<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a>;}; <span class=\"comment\">// yeet too?</span></div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">  120</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">size</a>()<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">poolSize</a>;};</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">  121</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">index</a>(<span class=\"keyword\">const</span> T* ptr)<span class=\"keyword\"> const </span>{<span class=\"keywordflow\">return</span> ptr - <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a>;};</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">  124</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">validate</a> (<span class=\"keyword\">const</span> T* ptr)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">return</span> ptr &gt;= <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">first</a> &amp;&amp; ptr &lt;= <a class=\"code hl_variable\" href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">last</a> &amp;&amp; *((uint64_t*)ptr) != 0;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"comment\">// make sure that there will be enough room for the empty place marker and free list pointer</span></div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"keyword\">static_assert</span>(<span class=\"keyword\">sizeof</span>(T) &gt;= <span class=\"keyword\">sizeof</span>(T*) + <span class=\"keyword\">sizeof</span>(uint64_t));</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"comment\">//static_assert(sizeof(T) % sizeof(uint64_t) == 0); // idk what this is</span></div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>};</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_proxy.html\">  134</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy</a> {</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">  137</a></span>    <span class=\"keyword\">static</span> T* <a class=\"code hl_function\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">New</a>(Args&amp;&amp;... args){<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a>.AddNew(std::forward&lt;Args&gt;(args)...);}</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">  138</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">Delete</a>(T* obj){<a class=\"code hl_variable\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a>.Remove(obj);}</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">  139</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool&lt;T&gt;</a>&amp; <a class=\"code hl_function\" href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">GetPool</a>(){<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a>;}</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">  141</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">Pool&lt;T&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">pool</a>;</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>};</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a72cce72d3494bf0e132892a3735ac229\">  144</a></span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt; <span class=\"keyword\">using</span> <a class=\"code hl_class\" href=\"classtram_1_1_pool_proxy.html\">PoopProxy</a> = <a class=\"code hl_class\" href=\"classtram_1_1_pool_proxy.html\">PoolProxy&lt;T&gt;</a>;</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html\">  147</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool_ptr.html\">PoolPtr</a> {</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">  149</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">PoolPtr</a> () { <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a> = <a class=\"code hl_function\" href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">PoolProxy&lt;T&gt;::New</a>(); }</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">  150</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">~PoolPtr</a> () { <a class=\"code hl_function\" href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">PoolProxy&lt;T&gt;::Delete</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a>); }</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">  151</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">GetResource</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">  152</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">operator-&gt;</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">  153</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">operator*</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2\">  154</a></span>    <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a> != <span class=\"keyword\">nullptr</span>; }</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">  156</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">ptr</a>;</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>};</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>}</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_POOL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a0650ba8f22b8180249c5a9050256f979\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979\">tram::Pool::Pool</a></div><div class=\"ttdeci\">constexpr Pool(const char *name, uint64_t initialSize, std::initializer_list&lt; T &gt; list)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a09e44e2d85b1f84461756d203450e014\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014\">tram::Pool::lastfree</a></div><div class=\"ttdeci\">T * lastfree</div><div class=\"ttdef\"><b>Definition:</b> pool.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a10facadf048aa836508ffd73c22fbc69\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69\">tram::Pool::validate</a></div><div class=\"ttdeci\">bool validate(const T *ptr) const</div><div class=\"ttdoc\">Checks if an object can be accessed through iteration.</div><div class=\"ttdef\"><b>Definition:</b> pool.h:124</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a2b0b341946b782acc6ca1959b7452488\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488\">tram::Pool::AddNew</a></div><div class=\"ttdeci\">T * AddNew(Args &amp;&amp;... args)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a4208869bc738c75f8c11b7b65b526564\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564\">tram::Pool::poolSize</a></div><div class=\"ttdeci\">uint64_t poolSize</div><div class=\"ttdef\"><b>Definition:</b> pool.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a4623a5f83e0f8a60e0189b4dd1cb7792\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792\">tram::Pool::last</a></div><div class=\"ttdeci\">T * last</div><div class=\"ttdef\"><b>Definition:</b> pool.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a4916bb192a24754ced8b7e712dd55107\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107\">tram::Pool::end</a></div><div class=\"ttdeci\">iterator end()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:118</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a57e13a9a51ca187af45f052b3d70b17f\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f\">tram::Pool::Pool</a></div><div class=\"ttdeci\">constexpr Pool(const char *name, uint64_t initialSize)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a60d25b55dc178234fd501c6329c1b7aa\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa\">tram::Pool::Remove</a></div><div class=\"ttdeci\">void Remove(T *removeptr)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a6ccf1a748fa7d1f7caa10d7358f64b50\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50\">tram::Pool::GetLast</a></div><div class=\"ttdeci\">T * GetLast()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:116</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a7c93c6c74e11a18855e33e69a87d481f\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f\">tram::Pool::poolName</a></div><div class=\"ttdeci\">std::string poolName</div><div class=\"ttdef\"><b>Definition:</b> pool.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_a7ffa82540f27a9b7ff4da2b75daebbf5\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5\">tram::Pool::index</a></div><div class=\"ttdeci\">size_t index(const T *ptr) const</div><div class=\"ttdef\"><b>Definition:</b> pool.h:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_aae84df45d298efe25e64b9f688f97916\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916\">tram::Pool::begin</a></div><div class=\"ttdeci\">iterator begin()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:117</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_aba0758ee3091dd01f8f880000973d805\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805\">tram::Pool::maxSize</a></div><div class=\"ttdeci\">uint64_t maxSize</div><div class=\"ttdef\"><b>Definition:</b> pool.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_ac3fa225dfc0f2bcbdb8b99cd532159f6\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6\">tram::Pool::first</a></div><div class=\"ttdeci\">T * first</div><div class=\"ttdef\"><b>Definition:</b> pool.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_ad3e5247f51702e2e59fd5b62436f326c\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c\">tram::Pool::operator[]</a></div><div class=\"ttdeci\">T &amp; operator[](size_t index)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:114</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_ad803699e4dab92b42ba4a86180f60acc\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc\">tram::Pool::GetFirst</a></div><div class=\"ttdeci\">T * GetFirst()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_aeac3545f8646c676dcc84748db30dfcc\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc\">tram::Pool::size</a></div><div class=\"ttdeci\">size_t size() const</div><div class=\"ttdef\"><b>Definition:</b> pool.h:120</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html_afcc89e07039f40d888ef8bb970467ff2\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2\">tram::Pool::GetSize</a></div><div class=\"ttdeci\">size_t GetSize() const</div><div class=\"ttdef\"><b>Definition:</b> pool.h:119</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_proxy.html\">tram::PoolProxy</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:134</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_proxy_html_a0565709eb51102242ceb5488fc66f8ff\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff\">tram::PoolProxy::Delete</a></div><div class=\"ttdeci\">static void Delete(T *obj)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:138</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_proxy_html_a1a4541a7cb8ccbb3fe2c074ecece4905\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905\">tram::PoolProxy::GetPool</a></div><div class=\"ttdeci\">static Pool&lt; T &gt; &amp; GetPool()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:139</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_proxy_html_a799c01c3a6c1648adb02038baff3e30a\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a\">tram::PoolProxy::New</a></div><div class=\"ttdeci\">static T * New(Args &amp;&amp;... args)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:137</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_proxy_html_ad6e9619a7833dc2b54ee8cbe1d27ef51\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51\">tram::PoolProxy::pool</a></div><div class=\"ttdeci\">static Pool&lt; T &gt; pool</div><div class=\"ttdef\"><b>Definition:</b> pool.h:141</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html\">tram::PoolPtr</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:147</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_a05567d055c22c94213c1108f1197dc16\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16\">tram::PoolPtr::GetResource</a></div><div class=\"ttdeci\">T * GetResource()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:151</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_a6d00d265dff562e8bba6d9712d26006e\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e\">tram::PoolPtr::operator-&gt;</a></div><div class=\"ttdeci\">T * operator-&gt;()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:152</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_aa3872ea828f4efe84b9392f565df53a3\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3\">tram::PoolPtr::~PoolPtr</a></div><div class=\"ttdeci\">~PoolPtr()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:150</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_aab24751b40c889dac6e66c78bdb4adbb\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb\">tram::PoolPtr::operator*</a></div><div class=\"ttdeci\">T &amp; operator*()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:153</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_aba35892d9d52fdbeb76f74fdbe9ed80f\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f\">tram::PoolPtr::ptr</a></div><div class=\"ttdeci\">T * ptr</div><div class=\"ttdef\"><b>Definition:</b> pool.h:156</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_ptr_html_adffa17bd2f9d7fd2242ed255a7832324\"><div class=\"ttname\"><a href=\"classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324\">tram::PoolPtr::PoolPtr</a></div><div class=\"ttdeci\">PoolPtr()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:149</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool::iterator</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a457d9529077f98de008f5c96ff860eb0\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">tram::Pool::iterator::iterator</a></div><div class=\"ttdeci\">iterator(T *ptr)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a48a325f43b759e963ebc8f9a6791cdcb\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">tram::Pool::iterator::operator-&gt;</a></div><div class=\"ttdeci\">T * operator-&gt;()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a55a8ee0e80dad1a7da9d751c25bc0386\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">tram::Pool::iterator::operator!=</a></div><div class=\"ttdeci\">friend bool operator!=(const iterator &amp;a, const iterator &amp;b)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a808c822ba3bb0ba92a806f668c934fa7\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">tram::Pool::iterator::ptr</a></div><div class=\"ttdeci\">T * ptr</div><div class=\"ttdef\"><b>Definition:</b> pool.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a81d10d7799462c7ca5e7cf19119ca356\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">tram::Pool::iterator::operator==</a></div><div class=\"ttdeci\">friend bool operator==(const iterator &amp;a, const iterator &amp;b)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_a8cd774ed78f4aa2e1e23d005e8f43302\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302\">tram::Pool::iterator::operator++</a></div><div class=\"ttdeci\">iterator operator++(int)</div><div class=\"ttdef\"><b>Definition:</b> pool.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_ae1b598c681e2e0993cd726817c7304cf\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">tram::Pool::iterator::operator*</a></div><div class=\"ttdeci\">T &amp; operator*() const</div><div class=\"ttdef\"><b>Definition:</b> pool.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_pool_1_1iterator_html_af29387992afc913f26300d7b779a4db8\"><div class=\"ttname\"><a href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">tram::Pool::iterator::operator++</a></div><div class=\"ttdeci\">iterator &amp; operator++()</div><div class=\"ttdef\"><b>Definition:</b> pool.h:36</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/probe_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/probe.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">probe.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"probe_8h_source.html\">extensions/kitchensink/probe.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"gui_8h_source.html\">framework/gui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"image_8h_source.html\">platform/image.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">tram::Ext::Kitchensink::RegisterRenderEnvironmentMapShortcut</a> ()</td></tr>\n<tr class=\"separator:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">tram::Ext::Kitchensink::RenderEnvironmentMaps</a> (WorldCell *cell)</td></tr>\n<tr class=\"separator:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/probe_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/probe.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">probe.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n</div>\n<p><a href=\"probe_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">tram::Ext::Kitchensink::RegisterRenderEnvironmentMapShortcut</a> ()</td></tr>\n<tr class=\"separator:aac57df31b8265b053fcc5470b852a85a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">tram::Ext::Kitchensink::RenderEnvironmentMaps</a> (WorldCell *cell)</td></tr>\n<tr class=\"separator:aad417990ff2a73e06c72f341d12c1c9b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/probe_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/probe.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">probe.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"probe_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"worldcell_8h.html\">framework/worldcell.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">RegisterRenderEnvironmentMapShortcut</a>();</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">RenderEnvironmentMaps</a>(WorldCell*);</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_aac57df31b8265b053fcc5470b852a85a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a\">tram::Ext::Kitchensink::RegisterRenderEnvironmentMapShortcut</a></div><div class=\"ttdeci\">void RegisterRenderEnvironmentMapShortcut()</div><div class=\"ttdef\"><b>Definition:</b> probe.cpp:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_aad417990ff2a73e06c72f341d12c1c9b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b\">tram::Ext::Kitchensink::RenderEnvironmentMaps</a></div><div class=\"ttdeci\">void RenderEnvironmentMaps(WorldCell *cell)</div><div class=\"ttdef\"><b>Definition:</b> probe.cpp:28</div></div>\n<div class=\"ttc\" id=\"aworldcell_8h_html\"><div class=\"ttname\"><a href=\"worldcell_8h.html\">worldcell.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/query_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/query.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">query.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n<code>#include &lt;cstddef&gt;</code><br />\n</div>\n<p><a href=\"query_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:aa011d11403da009a2f2455cab15bc2e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">tram::query_t</a></td></tr>\n<tr class=\"separator:aa011d11403da009a2f2455cab15bc2e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:af26d713039b679cdcdfc7831c26be2aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aa\">tram::Query</a> : query_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa2fad07e1bd953f6da14c2c21d9cb589f\">tram::QUERY_PICKUPABLE</a>\n, <a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaabf85fcff1dc2a541f1f51d88a4cfbdf9\">tram::QUERY_LOOK_DIRECTION</a>\n, <a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa8f4426aea5d930138f0c56f5ff8bc24c\">tram::QUERY_BOUNDING_BOX_MIN</a>\n, <a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa5b4d716e3656307134648286a5e8c80a\">tram::QUERY_BOUNDING_BOX_MAX</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa4360f35933ca169a792906e695053ecd\">tram::LAST_QUERY</a>\n<br />\n }</td></tr>\n<tr class=\"separator:af26d713039b679cdcdfc7831c26be2aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/query_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/query.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">query.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"query_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_QUERY_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_QUERY_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">   12</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">query_t</a>;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aa\">   14</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aa\">Query</a> : <a class=\"code hl_typedef\" href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">query_t</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa2fad07e1bd953f6da14c2c21d9cb589f\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa2fad07e1bd953f6da14c2c21d9cb589f\">QUERY_PICKUPABLE</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaabf85fcff1dc2a541f1f51d88a4cfbdf9\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaabf85fcff1dc2a541f1f51d88a4cfbdf9\">QUERY_LOOK_DIRECTION</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa8f4426aea5d930138f0c56f5ff8bc24c\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa8f4426aea5d930138f0c56f5ff8bc24c\">QUERY_BOUNDING_BOX_MIN</a>,</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa5b4d716e3656307134648286a5e8c80a\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa5b4d716e3656307134648286a5e8c80a\">QUERY_BOUNDING_BOX_MAX</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa4360f35933ca169a792906e695053ecd\">LAST_QUERY</a></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa4360f35933ca169a792906e695053ecd\">   20</a></span>};</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>}</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_QUERY_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa011d11403da009a2f2455cab15bc2e0\"><div class=\"ttname\"><a href=\"namespacetram.html#aa011d11403da009a2f2455cab15bc2e0\">tram::query_t</a></div><div class=\"ttdeci\">uint32_t query_t</div><div class=\"ttdef\"><b>Definition:</b> query.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aa\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aa\">tram::Query</a></div><div class=\"ttdeci\">Query</div><div class=\"ttdef\"><b>Definition:</b> query.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aaa2fad07e1bd953f6da14c2c21d9cb589f\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa2fad07e1bd953f6da14c2c21d9cb589f\">tram::QUERY_PICKUPABLE</a></div><div class=\"ttdeci\">@ QUERY_PICKUPABLE</div><div class=\"ttdef\"><b>Definition:</b> query.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aaa4360f35933ca169a792906e695053ecd\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa4360f35933ca169a792906e695053ecd\">tram::LAST_QUERY</a></div><div class=\"ttdeci\">@ LAST_QUERY</div><div class=\"ttdef\"><b>Definition:</b> query.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aaa5b4d716e3656307134648286a5e8c80a\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa5b4d716e3656307134648286a5e8c80a\">tram::QUERY_BOUNDING_BOX_MAX</a></div><div class=\"ttdeci\">@ QUERY_BOUNDING_BOX_MAX</div><div class=\"ttdef\"><b>Definition:</b> query.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aaa8f4426aea5d930138f0c56f5ff8bc24c\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaa8f4426aea5d930138f0c56f5ff8bc24c\">tram::QUERY_BOUNDING_BOX_MIN</a></div><div class=\"ttdeci\">@ QUERY_BOUNDING_BOX_MIN</div><div class=\"ttdef\"><b>Definition:</b> query.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_af26d713039b679cdcdfc7831c26be2aaabf85fcff1dc2a541f1f51d88a4cfbdf9\"><div class=\"ttname\"><a href=\"namespacetram.html#af26d713039b679cdcdfc7831c26be2aaabf85fcff1dc2a541f1f51d88a4cfbdf9\">tram::QUERY_LOOK_DIRECTION</a></div><div class=\"ttdeci\">@ QUERY_LOOK_DIRECTION</div><div class=\"ttdef\"><b>Definition:</b> query.h:16</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/quest_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/quest.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">quest.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">extensions/kitchensink/quest.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">extensions/kitchensink/inventory.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html\">tram::Ext::Kitchensink::QuestEntity</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/quest_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/quest.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">quest.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"quest_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ab3814d859340fe53dd54ca8fa8f84f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">tram::Ext::Kitchensink::quest_t</a> : int { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">tram::Ext::Kitchensink::QUEST_VAR_INVALID</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">tram::Ext::Kitchensink::QUEST_VAR_VALUE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">tram::Ext::Kitchensink::QUEST_VAR_OBJECTIVE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_IS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_IS_NOT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_GREATER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_GREATER_OR_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_LESS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_LESS_OR_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_NOT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_AND</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_OR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_SCRIPT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">tram::Ext::Kitchensink::QUEST_VAR_ENTITY_ITEM_COUNT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">tram::Ext::Kitchensink::QUEST_TGR_SET_VARIABLE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">tram::Ext::Kitchensink::QUEST_TGR_SET_OBJECTIVE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">tram::Ext::Kitchensink::QUEST_TGR_INCREMENT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">tram::Ext::Kitchensink::QUEST_TGR_SHOW_MESSAGE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ab3814d859340fe53dd54ca8fa8f84f1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/quest_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/quest.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">quest.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"quest_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> : <span class=\"keywordtype\">int</span> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">QUEST_VAR_INVALID</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">QUEST_VAR_VALUE</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">QUEST_VAR_OBJECTIVE</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">QUEST_VAR_VALUE_IS</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">QUEST_VAR_VALUE_IS_NOT</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">QUEST_VAR_VALUE_GREATER</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">QUEST_VAR_VALUE_GREATER_OR_EQUAL</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">QUEST_VAR_VALUE_LESS</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">   23</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">QUEST_VAR_VALUE_LESS_OR_EQUAL</a>,</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">   24</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">QUEST_VAR_CONDITION_NOT</a>,</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">   26</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">QUEST_VAR_CONDITION_AND</a>,</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">QUEST_VAR_CONDITION_OR</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">   29</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">QUEST_VAR_CONDITION_SCRIPT</a>,</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">   32</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">QUEST_VAR_ENTITY_ITEM_COUNT</a>,</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">   35</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">QUEST_TGR_SET_VARIABLE</a>,</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">   36</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">QUEST_TGR_SET_OBJECTIVE</a>,</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">   37</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">QUEST_TGR_INCREMENT</a>,</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">   38</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">QUEST_TGR_SHOW_MESSAGE</a>,</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>};</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">   41</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> {</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">   42</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">name</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">   43</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">type</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">   47</a></span>            <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">value</a>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad77d58b02c65c98115798f167a4a6cb4\">   48</a></span>        } <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">value</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa\">   51</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa\">value</a>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">   52</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">title</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">   53</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">subtitle</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">   54</a></span>        } <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">objective</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">name</a>;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">   58</a></span>        } <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">script</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">   61</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">quest1</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">   62</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">variable1</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>            </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>            <span class=\"comment\">// if quest2 set, then variable2 is name of the quest&#39;s variable</span></div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>            <span class=\"comment\">// if quest is not set, then variable2 is the Value for comparison</span></div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">   66</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">quest2</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">   67</a></span>            <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">variable2</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>            </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">   69</a></span>        } <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">comparison</a>;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">   72</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">entity</a>;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">   73</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">item</a>;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">   74</a></span>            <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">count</a>;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aabc1c4ce438e88d992880d126648a343\">   75</a></span>        } <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">item</a>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    };</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">Value</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">Objective</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">Is</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">IsNot</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">Greater</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">GreaterOrEqual</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">Less</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">LessOrEqual</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">And</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">Or</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a>);</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    </div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">Not</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    </div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">Script</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    </div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"keyword\">static</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">ItemCount</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">   97</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a>() { <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">QUEST_VAR_INVALID</a>; }</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">   98</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">~QuestVariable</a>() {}</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    </div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&amp; <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">operator=</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//QuestVariable&amp; operator=(QuestVariable&amp; a, const QuestVariable&amp; b);</span></div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">Evaluate</a>();</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>};</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">  107</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a> {</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">  108</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">name</a>;</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">  109</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">type</a>;</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    </div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">  111</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">condition</a>; <span class=\"comment\">// condition, if any, for firing</span></div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">  113</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a>; <span class=\"comment\">// name for variable which will be set</span></div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">  114</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">value</a>; <span class=\"comment\">// variable name for which will be set</span></div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    </div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">SetValue</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>);</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">SetObjective</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">name</a>, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> state);</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">SetIncrement</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a>);</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>};</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">  121</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> {</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">  122</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">Quest</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a>) : <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a>(<a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">  124</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a>;</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">  126</a></span>    std::vector&lt;QuestVariable&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">variables</a>;</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">  127</a></span>    std::vector&lt;QuestTrigger&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">triggers</a>;</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    </div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"comment\">// TODO: add trigger script</span></div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"comment\">// if can&#39;t find in trigger list, then call script</span></div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">GetVariable</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">SetVariable</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>);</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">FireTrigger</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>);</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    </div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    </div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    </div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <span class=\"keyword\">static</span> std::vector&lt;Quest*&gt; <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">FindAll</a>(<span class=\"keywordtype\">bool</span> unknown_also);</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    </div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">LoadFromDisk</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* filename);</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a>* <a class=\"code hl_function\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> quest);</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>};</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    </div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>}</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">tram::Ext::Kitchensink::quest_t</a></div><div class=\"ttdeci\">quest_t</div><div class=\"ttdef\"><b>Definition:</b> quest.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_OR</a></div><div class=\"ttdeci\">@ QUEST_VAR_CONDITION_OR</div><div class=\"ttdef\"><b>Definition:</b> quest.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_GREATER_OR_EQUAL</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_GREATER_OR_EQUAL</div><div class=\"ttdef\"><b>Definition:</b> quest.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7\">tram::Ext::Kitchensink::QUEST_TGR_INCREMENT</a></div><div class=\"ttdeci\">@ QUEST_TGR_INCREMENT</div><div class=\"ttdef\"><b>Definition:</b> quest.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_AND</a></div><div class=\"ttdeci\">@ QUEST_VAR_CONDITION_AND</div><div class=\"ttdef\"><b>Definition:</b> quest.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86\">tram::Ext::Kitchensink::QUEST_VAR_INVALID</a></div><div class=\"ttdeci\">@ QUEST_VAR_INVALID</div><div class=\"ttdef\"><b>Definition:</b> quest.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_NOT</a></div><div class=\"ttdeci\">@ QUEST_VAR_CONDITION_NOT</div><div class=\"ttdef\"><b>Definition:</b> quest.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6\">tram::Ext::Kitchensink::QUEST_TGR_SET_OBJECTIVE</a></div><div class=\"ttdeci\">@ QUEST_TGR_SET_OBJECTIVE</div><div class=\"ttdef\"><b>Definition:</b> quest.h:36</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7\">tram::Ext::Kitchensink::QUEST_VAR_CONDITION_SCRIPT</a></div><div class=\"ttdeci\">@ QUEST_VAR_CONDITION_SCRIPT</div><div class=\"ttdef\"><b>Definition:</b> quest.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_IS</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_IS</div><div class=\"ttdef\"><b>Definition:</b> quest.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc\">tram::Ext::Kitchensink::QUEST_VAR_VALUE</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE</div><div class=\"ttdef\"><b>Definition:</b> quest.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6\">tram::Ext::Kitchensink::QUEST_VAR_OBJECTIVE</a></div><div class=\"ttdeci\">@ QUEST_VAR_OBJECTIVE</div><div class=\"ttdef\"><b>Definition:</b> quest.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c\">tram::Ext::Kitchensink::QUEST_TGR_SET_VARIABLE</a></div><div class=\"ttdeci\">@ QUEST_TGR_SET_VARIABLE</div><div class=\"ttdef\"><b>Definition:</b> quest.h:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1\">tram::Ext::Kitchensink::QUEST_VAR_ENTITY_ITEM_COUNT</a></div><div class=\"ttdeci\">@ QUEST_VAR_ENTITY_ITEM_COUNT</div><div class=\"ttdef\"><b>Definition:</b> quest.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_LESS_OR_EQUAL</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_LESS_OR_EQUAL</div><div class=\"ttdef\"><b>Definition:</b> quest.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_GREATER</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_GREATER</div><div class=\"ttdef\"><b>Definition:</b> quest.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_IS_NOT</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_IS_NOT</div><div class=\"ttdef\"><b>Definition:</b> quest.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97\">tram::Ext::Kitchensink::QUEST_VAR_VALUE_LESS</a></div><div class=\"ttdeci\">@ QUEST_VAR_VALUE_LESS</div><div class=\"ttdef\"><b>Definition:</b> quest.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069\">tram::Ext::Kitchensink::QUEST_TGR_SHOW_MESSAGE</a></div><div class=\"ttdeci\">@ QUEST_TGR_SHOW_MESSAGE</div><div class=\"ttdef\"><b>Definition:</b> quest.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></div><div class=\"ttdef\"><b>Definition:</b> quest.h:121</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a28b905e9fb5bec79e66daad45578a60c\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">tram::Ext::Kitchensink::Quest::GetVariable</a></div><div class=\"ttdeci\">Value GetVariable(name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:286</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a45dcecc77ac3add50354215a87117f58\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">tram::Ext::Kitchensink::Quest::Init</a></div><div class=\"ttdeci\">static void Init()</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:397</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a4970c1dac3ff3944988953b026fe61a7\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">tram::Ext::Kitchensink::Quest::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> quest.h:124</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a678d358f3b12331a4f01ac12cd161773\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">tram::Ext::Kitchensink::Quest::Find</a></div><div class=\"ttdeci\">static Quest * Find(name_t quest)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:385</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a683519bebd8b57ca04103a79858ca885\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">tram::Ext::Kitchensink::Quest::Quest</a></div><div class=\"ttdeci\">Quest(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> quest.h:122</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_a923d2830ead5ba315b40a9b8551dda7e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">tram::Ext::Kitchensink::Quest::SetVariable</a></div><div class=\"ttdeci\">void SetVariable(name_t, Value)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:296</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_aadf35ec9fef560168ee449692458e1d8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">tram::Ext::Kitchensink::Quest::LoadFromDisk</a></div><div class=\"ttdeci\">static void LoadFromDisk(const char *filename)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:427</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_ab9a78d09f8a3235d107d07420f867184\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">tram::Ext::Kitchensink::Quest::FireTrigger</a></div><div class=\"ttdeci\">void FireTrigger(name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:318</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_abaeea35c7bce4071e8d4276215c78969\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">tram::Ext::Kitchensink::Quest::variables</a></div><div class=\"ttdeci\">std::vector&lt; QuestVariable &gt; variables</div><div class=\"ttdef\"><b>Definition:</b> quest.h:126</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_ada625bbce2632f2d828a2f3b721f9165\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">tram::Ext::Kitchensink::Quest::FindAll</a></div><div class=\"ttdeci\">static std::vector&lt; Quest * &gt; FindAll(bool unknown_also)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:353</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_html_af46e76fae1a86683f0b2221b995c62aa\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">tram::Ext::Kitchensink::Quest::triggers</a></div><div class=\"ttdeci\">std::vector&lt; QuestTrigger &gt; triggers</div><div class=\"ttdef\"><b>Definition:</b> quest.h:127</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></div><div class=\"ttdef\"><b>Definition:</b> quest.h:107</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_a2c73379c1b2dc328379689c441b4f6c8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">tram::Ext::Kitchensink::QuestTrigger::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> quest.h:108</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_a4d0df39a718f4aea2e2bbb77317db257\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">tram::Ext::Kitchensink::QuestTrigger::variable</a></div><div class=\"ttdeci\">name_t variable</div><div class=\"ttdef\"><b>Definition:</b> quest.h:113</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_a7913f7b41be31d418a7811479db0a6e5\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">tram::Ext::Kitchensink::QuestTrigger::type</a></div><div class=\"ttdeci\">quest_t type</div><div class=\"ttdef\"><b>Definition:</b> quest.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_a8b50d062701669c3cd83ae8f4ecced33\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">tram::Ext::Kitchensink::QuestTrigger::condition</a></div><div class=\"ttdeci\">name_t condition</div><div class=\"ttdef\"><b>Definition:</b> quest.h:111</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_a9cce590fff9284b7c0e791495517aa8e\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">tram::Ext::Kitchensink::QuestTrigger::value</a></div><div class=\"ttdeci\">value_t value</div><div class=\"ttdef\"><b>Definition:</b> quest.h:114</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_ac60462a520bb57318bea757ecbfb9db5\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">tram::Ext::Kitchensink::QuestTrigger::SetIncrement</a></div><div class=\"ttdeci\">void SetIncrement(name_t variable)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:279</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_acd10df0459a57b9b8384a697d1a67ea8\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">tram::Ext::Kitchensink::QuestTrigger::SetObjective</a></div><div class=\"ttdeci\">void SetObjective(name_t name, name_t state)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:273</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger_html_aded1963fcaa2fe9e73bd27258d16b7af\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">tram::Ext::Kitchensink::QuestTrigger::SetValue</a></div><div class=\"ttdeci\">void SetValue(name_t variable, Value)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:267</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></div><div class=\"ttdef\"><b>Definition:</b> quest.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a074b98a66cd3f7404053c41d564be669\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">tram::Ext::Kitchensink::QuestVariable::item</a></div><div class=\"ttdeci\">name_t item</div><div class=\"ttdef\"><b>Definition:</b> quest.h:73</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a0fe85e14b47e33482e46c8138d76d5ba\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">tram::Ext::Kitchensink::QuestVariable::~QuestVariable</a></div><div class=\"ttdeci\">~QuestVariable()</div><div class=\"ttdef\"><b>Definition:</b> quest.h:98</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a18c205b49926dee3f171363f65249349\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">tram::Ext::Kitchensink::QuestVariable::Value</a></div><div class=\"ttdeci\">static QuestVariable Value(name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a21b68aede57e29c31f3abac8c0c4fef6\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">tram::Ext::Kitchensink::QuestVariable::comparison</a></div><div class=\"ttdeci\">struct tram::Ext::Kitchensink::QuestVariable::@21::@26 comparison</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a278406d8202cc8c9ec06e6f7970d58ed\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">tram::Ext::Kitchensink::QuestVariable::quest1</a></div><div class=\"ttdeci\">name_t quest1</div><div class=\"ttdef\"><b>Definition:</b> quest.h:61</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a27ee71a112e47b3caf0e8e167653a3ed\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">tram::Ext::Kitchensink::QuestVariable::ItemCount</a></div><div class=\"ttdeci\">static QuestVariable ItemCount(name_t, name_t, name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:196</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a33142a6aaa4cbf2fab8888fc13a1477c\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">tram::Ext::Kitchensink::QuestVariable::Script</a></div><div class=\"ttdeci\">static QuestVariable Script(name_t, name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:172</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a36e6f0dae5f477802b91bd4cafe72f56\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">tram::Ext::Kitchensink::QuestVariable::Is</a></div><div class=\"ttdeci\">static QuestVariable Is(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a3c9c1cd6c108fb87f86e98fccc21a7ff\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">tram::Ext::Kitchensink::QuestVariable::variable2</a></div><div class=\"ttdeci\">value_t variable2</div><div class=\"ttdef\"><b>Definition:</b> quest.h:67</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a4ab73b956ef675005147fe16651de78b\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">tram::Ext::Kitchensink::QuestVariable::operator=</a></div><div class=\"ttdeci\">QuestVariable &amp; operator=(const QuestVariable &amp;)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a59fa09daf71db92b76d7543e45dabefd\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">tram::Ext::Kitchensink::QuestVariable::QuestVariable</a></div><div class=\"ttdeci\">QuestVariable()</div><div class=\"ttdef\"><b>Definition:</b> quest.h:97</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a5a8c1d8a4ba4f4059112ea7dbe9a2b65\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">tram::Ext::Kitchensink::QuestVariable::Or</a></div><div class=\"ttdeci\">static QuestVariable Or(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:158</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a5c5f6e13ed0ceddb4b4507c59db2423d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">tram::Ext::Kitchensink::QuestVariable::count</a></div><div class=\"ttdeci\">int count</div><div class=\"ttdef\"><b>Definition:</b> quest.h:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a5db92704bb3700f46790b108525400e5\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">tram::Ext::Kitchensink::QuestVariable::script</a></div><div class=\"ttdeci\">struct tram::Ext::Kitchensink::QuestVariable::@21::@25 script</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a60afb565dd3a1e281129e5564ec3d3c1\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">tram::Ext::Kitchensink::QuestVariable::Less</a></div><div class=\"ttdeci\">static QuestVariable Less(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:102</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a6cbf029ca43aa8a9780b4beb654d65be\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">tram::Ext::Kitchensink::QuestVariable::entity</a></div><div class=\"ttdeci\">name_t entity</div><div class=\"ttdef\"><b>Definition:</b> quest.h:72</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a7021e12190dd43a86f02ea92fc0bb700\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">tram::Ext::Kitchensink::QuestVariable::objective</a></div><div class=\"ttdeci\">struct tram::Ext::Kitchensink::QuestVariable::@21::@24 objective</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a7279723d0adb71d2ac2bb9a960f3029d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">tram::Ext::Kitchensink::QuestVariable::Greater</a></div><div class=\"ttdeci\">static QuestVariable Greater(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a7d0db342f3f3eed6bc5d8e2bad2bea5d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">tram::Ext::Kitchensink::QuestVariable::type</a></div><div class=\"ttdeci\">quest_t type</div><div class=\"ttdef\"><b>Definition:</b> quest.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a836e78370020eb0f3939b0cbb7d67b5d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">tram::Ext::Kitchensink::QuestVariable::Not</a></div><div class=\"ttdeci\">static QuestVariable Not(name_t, name_t, name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:130</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a89dca0079262b8780f559d02c7865799\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">tram::Ext::Kitchensink::QuestVariable::subtitle</a></div><div class=\"ttdeci\">name_t subtitle</div><div class=\"ttdef\"><b>Definition:</b> quest.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_a9fea540d2b9a8fec5b7bec83329d33fa\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa\">tram::Ext::Kitchensink::QuestVariable::value</a></div><div class=\"ttdeci\">name_t value</div><div class=\"ttdef\"><b>Definition:</b> quest.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_aa15fbf47249f3a14cfa3e1bd33a10b56\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">tram::Ext::Kitchensink::QuestVariable::LessOrEqual</a></div><div class=\"ttdeci\">static QuestVariable LessOrEqual(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:116</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_aa38c56e4efe619fcefd99a1f87047c88\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">tram::Ext::Kitchensink::QuestVariable::value</a></div><div class=\"ttdeci\">Value value</div><div class=\"ttdef\"><b>Definition:</b> quest.h:47</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_aa919ae019059ff89faca34a829962fa0\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">tram::Ext::Kitchensink::QuestVariable::IsNot</a></div><div class=\"ttdeci\">static QuestVariable IsNot(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_aacf971b4d14c9d97ab7f522f53409a35\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">tram::Ext::Kitchensink::QuestVariable::GreaterOrEqual</a></div><div class=\"ttdeci\">static QuestVariable GreaterOrEqual(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:88</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_abdaedd33351ad672e211fecaabf207bd\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">tram::Ext::Kitchensink::QuestVariable::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> quest.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_ac300d9727ec2d9e12f536168075c07ef\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">tram::Ext::Kitchensink::QuestVariable::Objective</a></div><div class=\"ttdeci\">static QuestVariable Objective(name_t, name_t, name_t, name_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:183</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_ad202900b3ff880d1dfd139b9e9c6029d\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">tram::Ext::Kitchensink::QuestVariable::Evaluate</a></div><div class=\"ttdeci\">value_t Evaluate()</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:220</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_ad57c101bc6373283564cf19973ef47ce\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">tram::Ext::Kitchensink::QuestVariable::variable1</a></div><div class=\"ttdeci\">name_t variable1</div><div class=\"ttdef\"><b>Definition:</b> quest.h:62</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_ad6574937d3491e89d92d0fab8f3ec746\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">tram::Ext::Kitchensink::QuestVariable::title</a></div><div class=\"ttdeci\">name_t title</div><div class=\"ttdef\"><b>Definition:</b> quest.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_aec3fd459b2220d63b3aae47c2dfbb71a\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">tram::Ext::Kitchensink::QuestVariable::And</a></div><div class=\"ttdeci\">static QuestVariable And(name_t, name_t, name_t, name_t, value_t)</div><div class=\"ttdef\"><b>Definition:</b> quest.cpp:144</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_ext_1_1_kitchensink_1_1_quest_variable_html_af8ab60abb939875937f7a0ef894c45e1\"><div class=\"ttname\"><a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">tram::Ext::Kitchensink::QuestVariable::quest2</a></div><div class=\"ttdeci\">name_t quest2</div><div class=\"ttdef\"><b>Definition:</b> quest.h:66</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/queue_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/queue.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">queue.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;atomic&gt;</code><br />\n</div>\n<p><a href=\"queue_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_queue.html\">tram::Queue&lt; T &gt;</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple queue implementation.  <a href=\"classtram_1_1_queue.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/queue_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/queue.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">queue.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"queue_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_QUEUE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_QUEUE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;atomic&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_queue.html\">Queue</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">Queue</a>() = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6\">   20</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6\">Queue</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_queue.html\">Queue</a>&amp;) = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef\">   21</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef\">Queue</a>(<a class=\"code hl_class\" href=\"classtram_1_1_queue.html\">Queue</a>&amp;&amp;) = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d\">   22</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d\">Queue</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a>, <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a>), <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>) {</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>        T* allocated_memory = (T*)::<span class=\"keyword\">operator</span> <span class=\"keyword\">new</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a> * <span class=\"keyword\">sizeof</span>(T));</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>        </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a> = allocated_memory;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a> = allocated_memory;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>        </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a> = allocated_memory;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a> = allocated_memory + <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>        </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a> = 0;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    }</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>... Args&gt;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">   36</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">push</a>(Args&amp;&amp;... args) {</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>        <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">lock</a>();</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>        </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a>) {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Queue &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; out of space!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>();</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>        }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>        </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>        <span class=\"keyword\">new</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a>) T (std::forward&lt;Args&gt;(args)...);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a>++;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a>++;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <span class=\"comment\">// wrap around</span></div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a>) {</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">   58</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">pop</a>() {</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a>-&gt;~T();</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a>++;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a>--;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"comment\">// wrap around</span></div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a>) {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        }</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    }</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">   70</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">front</a>() {</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a>;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">   74</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">back</a>() {</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        <span class=\"keywordflow\">if</span> (T* elem = <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a> - 1; elem &lt; <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a>) {</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>            <span class=\"keywordflow\">return</span> *(<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a> - 1);</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>            <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a>;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        }</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    }</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">   86</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">try_pop</a>(T&amp; value) {</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">lock</a>();</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a> == 0) {</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>            <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>();</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        }</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        value = *<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">pop</a>();</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>();</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    }</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    </div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">  101</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">size</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a>; }</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">  103</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">lock</a>() { <span class=\"keywordflow\">while</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">spinlock</a>.exchange(<span class=\"keyword\">true</span>)); }</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">  104</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">unlock</a>() { <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">spinlock</a>.store(<span class=\"keyword\">false</span>); }</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">  107</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">name</a>;   <span class=\"comment\">// name of queue for log messages etc.</span></div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">  108</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">csize</a>;       <span class=\"comment\">// how many elements are in queue right now</span></div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">  109</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">count</a>;       <span class=\"comment\">// how many elements can be added to queue</span></div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">  110</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">first</a>;           <span class=\"comment\">// first element in queue</span></div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">  111</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">last</a>;            <span class=\"comment\">// one past last element in queue</span></div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">  112</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">memory_start</a>;    <span class=\"comment\">// beginning of allocated memory</span></div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">  113</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">memory_end</a>;      <span class=\"comment\">// end of allocated memory</span></div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">  115</a></span>    std::atomic&lt;bool&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">spinlock</a> = {<span class=\"keyword\">false</span>};</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>};</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>}</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_QUEUE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html\">tram::Queue</a></div><div class=\"ttdoc\">Simple queue implementation.</div><div class=\"ttdef\"><b>Definition:</b> queue.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a0c059b66ef5b9bac992a134da0b9768a\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a\">tram::Queue::try_pop</a></div><div class=\"ttdeci\">bool try_pop(T &amp;value)</div><div class=\"ttdoc\">Thread safe.</div><div class=\"ttdef\"><b>Definition:</b> queue.h:86</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a264f19470d0c440e15b3fea1a3ca083a\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a\">tram::Queue::unlock</a></div><div class=\"ttdeci\">void unlock()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a45fae4fa6028c6f6f5c714f9bd88e6b8\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8\">tram::Queue::lock</a></div><div class=\"ttdeci\">void lock()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:103</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a5a96adeb0d29e7f5f6f53c4171d19390\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390\">tram::Queue::memory_start</a></div><div class=\"ttdeci\">T * memory_start</div><div class=\"ttdef\"><b>Definition:</b> queue.h:112</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a710adca95612b66427f7f6cc918492ef\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef\">tram::Queue::Queue</a></div><div class=\"ttdeci\">Queue(Queue &amp;&amp;)=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a85bfdb354ca6e34201d6554bc541bfe1\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1\">tram::Queue::push</a></div><div class=\"ttdeci\">void push(Args &amp;&amp;... args)</div><div class=\"ttdoc\">Thread safe.</div><div class=\"ttdef\"><b>Definition:</b> queue.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a869affb595c884f94449617be6ba5da0\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0\">tram::Queue::front</a></div><div class=\"ttdeci\">T &amp; front()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_a9a53c8973a5cb86f76b039ef0f3d0ee6\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6\">tram::Queue::Queue</a></div><div class=\"ttdeci\">Queue(const Queue &amp;)=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_aa0cce633bc90e45e142d32a0e7827d88\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88\">tram::Queue::spinlock</a></div><div class=\"ttdeci\">std::atomic&lt; bool &gt; spinlock</div><div class=\"ttdef\"><b>Definition:</b> queue.h:115</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_aa2211c6ebb109da351fbc179fa8ea03b\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b\">tram::Queue::pop</a></div><div class=\"ttdeci\">void pop()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_aa63013a7088d526ff1529718777848f1\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1\">tram::Queue::last</a></div><div class=\"ttdeci\">T * last</div><div class=\"ttdef\"><b>Definition:</b> queue.h:111</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_aa896915df22a178fe292fc763131184c\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c\">tram::Queue::count</a></div><div class=\"ttdeci\">size_t count</div><div class=\"ttdef\"><b>Definition:</b> queue.h:109</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_aba308a2dd5f4e5dac2841047c46fa9bd\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd\">tram::Queue::name</a></div><div class=\"ttdeci\">const char * name</div><div class=\"ttdef\"><b>Definition:</b> queue.h:107</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_abdd8f8cca203a1cb1612535dc418bf37\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37\">tram::Queue::memory_end</a></div><div class=\"ttdeci\">T * memory_end</div><div class=\"ttdef\"><b>Definition:</b> queue.h:113</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_abdeabcac12516595916ee8f3b600e392\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392\">tram::Queue::back</a></div><div class=\"ttdeci\">T &amp; back()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_ad797d5d45ded6116bc9bbd23e8848e9d\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d\">tram::Queue::Queue</a></div><div class=\"ttdeci\">Queue(const char *name, size_t count)</div><div class=\"ttdef\"><b>Definition:</b> queue.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_adbc2d690665b980a97b26eb2cf0fb4e4\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4\">tram::Queue::Queue</a></div><div class=\"ttdeci\">Queue()=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_af7bdb257fbe379deddd3b3e810311a19\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19\">tram::Queue::first</a></div><div class=\"ttdeci\">T * first</div><div class=\"ttdef\"><b>Definition:</b> queue.h:110</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_afa65ddd7ad10c02cefc507a06c4cbbd1\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1\">tram::Queue::csize</a></div><div class=\"ttdeci\">size_t csize</div><div class=\"ttdef\"><b>Definition:</b> queue.h:108</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_queue_html_afc039b82d19e4eedbcc47c0f537a7fd4\"><div class=\"ttname\"><a href=\"classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4\">tram::Queue::size</a></div><div class=\"ttdeci\">size_t size()</div><div class=\"ttdef\"><b>Definition:</b> queue.h:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2aabb_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/aabb.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">aabb.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2aabb_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_light_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_light_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene light tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render::aabbleaf_t</a></td></tr>\n<tr class=\"separator:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB::ReferenceType</a> : uint32_t { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB::REFERENCE_RENDERCOMPONENT</a> = 1\n }</td></tr>\n<tr class=\"separator:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6625049c0bc385b24b326868ad74a779\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">aabbleaf_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a> (RenderComponent *component, vec3 position, quat rotation, vec3 scale)</td></tr>\n<tr class=\"memdesc:a6625049c0bc385b24b326868ad74a779\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">More...</a><br /></td></tr>\n<tr class=\"separator:a6625049c0bc385b24b326868ad74a779\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a> (aabbleaf_t leaf_id)</td></tr>\n<tr class=\"memdesc:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a leaf from.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">More...</a><br /></td></tr>\n<tr class=\"separator:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631b3af49e3238165b6005edf3608394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">QueryResponse&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a> (vec3 ray_pos, vec3 ray_dir, uint32_t mask)</td></tr>\n<tr class=\"memdesc:a631b3af49e3238165b6005edf3608394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Peforms a raycast and retrieves the nearest object.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">More...</a><br /></td></tr>\n<tr class=\"separator:a631b3af49e3238165b6005edf3608394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a> ()</td></tr>\n<tr class=\"memdesc:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the scene tree for a single frame.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">More...</a><br /></td></tr>\n<tr class=\"separator:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a> (light_t light, vec3 pos, float dist)</td></tr>\n<tr class=\"memdesc:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a light to the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">More...</a><br /></td></tr>\n<tr class=\"separator:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a> (vec3 position, light_t *dest)</td></tr>\n<tr class=\"memdesc:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the 4 nearest lights to a given position.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a> (light_t light)</td></tr>\n<tr class=\"memdesc:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a light from the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">More...</a><br /></td></tr>\n<tr class=\"separator:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2aabb_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/aabb.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">aabb.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2aabb_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"model_8h.html\">render/model.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    <span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">   14</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">void</span>* <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>}</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">   19</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">REFERENCE_RENDERCOMPONENT</a> = 1</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">   21</a></span>};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">   23</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">   24</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">type</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">   25</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">data</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">   27</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">intersection</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">   28</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">triangle</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>};</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">InsertLeaf</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* component, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> scale);    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">RemoveLeaf</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> leaf);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">FindNearestFromRay</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, uint32_t mask);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">DebugDrawTree</a>();</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>}</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a> {</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">AddLight</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keywordtype\">float</span> dist);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">FindLights</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>* dest);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">RemoveLight</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_AABB_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></div><div class=\"ttdoc\">Renders a Model.</div><div class=\"ttdef\"><b>Definition:</b> render.h:12</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"amodel_8h_html\"><div class=\"ttname\"><a href=\"model_8h.html\">model.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></div><div class=\"ttdoc\">Scene tree.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a0714a6a654730b3f04222f08c26c8eec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a></div><div class=\"ttdeci\">void RemoveLeaf(aabbleaf_t leaf_id)</div><div class=\"ttdoc\">Removes a leaf from.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a5bb0d1f9511914c037cd30f91aa9264c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB::ReferenceType</a></div><div class=\"ttdeci\">ReferenceType</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB::REFERENCE_RENDERCOMPONENT</a></div><div class=\"ttdeci\">@ REFERENCE_RENDERCOMPONENT</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a631b3af49e3238165b6005edf3608394\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a></div><div class=\"ttdeci\">QueryResponse FindNearestFromRay(vec3 ray_pos, vec3 ray_dir, uint32_t mask)</div><div class=\"ttdoc\">Peforms a raycast and retrieves the nearest object.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:113</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a6625049c0bc385b24b326868ad74a779\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a></div><div class=\"ttdeci\">aabbleaf_t InsertLeaf(RenderComponent *component, vec3 position, quat rotation, vec3 scale)</div><div class=\"ttdoc\">Inserts a RenderComponent leaf into the scene tree.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:61</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_ad017e45f12e6ac18dfa2417e462525ef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a></div><div class=\"ttdeci\">void DebugDrawTree()</div><div class=\"ttdoc\">Draws the scene tree for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:184</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></div><div class=\"ttdoc\">Scene light tree.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_aad6c0b080cf76a2e64216adc9318807e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a></div><div class=\"ttdeci\">void AddLight(light_t light, vec3 pos, float dist)</div><div class=\"ttdoc\">Adds a light to the light tree.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:203</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_acbb22184ab1cca95ca3dd1f250e3f12d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a></div><div class=\"ttdeci\">void RemoveLight(light_t light)</div><div class=\"ttdoc\">Removes a light from the light tree.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:230</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_ae353165809c1cd85edb8e42944c0dee4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a></div><div class=\"ttdeci\">void FindLights(vec3 position, light_t *dest)</div><div class=\"ttdoc\">Finds the 4 nearest lights to a given position.</div><div class=\"ttdef\"><b>Definition:</b> aabb.cpp:216</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ab19b566afd13e36e1b377bd19adab144\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render::aabbleaf_t</a></div><div class=\"ttdeci\">void * aabbleaf_t</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></div><div class=\"ttdef\"><b>Definition:</b> aabb.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_a7731e6615a0676cbaa1aa81668314256\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">tram::Render::AABB::QueryResponse::intersection</a></div><div class=\"ttdeci\">vec3 intersection</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_acbc9174af642114af907b43460aa2b39\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">tram::Render::AABB::QueryResponse::type</a></div><div class=\"ttdeci\">ReferenceType type</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_ae3f83ed0e19fec90c88b5057ea34e965\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">tram::Render::AABB::QueryResponse::triangle</a></div><div class=\"ttdeci\">AABBTriangle triangle</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_aee216817295b389fd464292129006984\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">tram::Render::AABB::QueryResponse::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:166</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2animation_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/animation.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animation.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">render/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">components/animation.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">templates/stackpool.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a7dd412c7626de34a2b2e4fd4d750dd4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a\">tram::Render::animation_list</a> (&quot;model name list&quot;, 500)</td></tr>\n<tr class=\"separator:a7dd412c7626de34a2b2e4fd4d750dd4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a4241295a3e7f28b70cfc9a4fa831903d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">StackPool</a>&lt; uint8_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d\">tram::Render::animation_pool</a> (&quot;animation keyframe pool&quot;, 1024 *1024)</td></tr>\n<tr class=\"separator:a4241295a3e7f28b70cfc9a4fa831903d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2animation_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/animation.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">animation.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;unordered_map&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2animation_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton.  <a href=\"structtram_1_1_render_1_1_bone.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation.  <a href=\"structtram_1_1_render_1_1_keyframe.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Skeletal animation for a 3D model.  <a href=\"classtram_1_1_render_1_1_animation.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a5c915c417ac6870808de6e5dff23c287\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::pair&lt; name_t, uint64_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">tram::Render::NameCount</a></td></tr>\n<tr class=\"separator:a5c915c417ac6870808de6e5dff23c287\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ae4355f7ab257050d67eb34b6c95b58e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">tram::Render::BONE_COUNT</a> = 30</td></tr>\n<tr class=\"separator:ae4355f7ab257050d67eb34b6c95b58e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2animation_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/animation.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">animation.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2animation_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_ARMATURE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_ARMATURE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;unordered_map&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">   16</a></span><span class=\"keyword\">typedef</span> std::pair&lt;name_t, uint64_t&gt; <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">NameCount</a>; <span class=\"comment\">// animation header</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">   17</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">BONE_COUNT</a> = 30; <span class=\"comment\">// bone count in a pose</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html\">   19</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">   20</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">name</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">   21</a></span>    int32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">parent</a> = -1;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">   22</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">head</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">   23</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tail</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">   24</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">roll</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>};</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html\">   27</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a> {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">   28</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">frame</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">   29</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">   30</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">   31</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">scale</a> = {1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">   32</a></span>    <span class=\"keywordtype\">char</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">padding</a>[4]; <span class=\"comment\">// for emscripten ??</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>};</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_pose.html\">   35</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> {</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">   36</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">pose</a>[<a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">BONE_COUNT</a>];</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">   39</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a> {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">   40</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">bone</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">   41</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">keyframe_offset</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">   42</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">keyframe_count</a>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>};</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html\">   45</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">   47</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">Animation</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">GetKeyframes</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> bone);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">GetKeyframeCount</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> bone);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">   52</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">GetHeader</a>(uint32_t index) { <span class=\"keywordflow\">return</span> &amp;headers[index]; }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">   53</a></span>    <span class=\"keyword\">inline</span> uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">GetHeaderCount</a>() { <span class=\"keywordflow\">return</span> header_count; }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">   56</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">LoadFromMemory</a>() {}</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_animation.html\">Animation</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">   61</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">LoadAll</a>();</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a>* keyframes = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a>* headers = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    uint32_t header_count = 0;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>}</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_ARMATURE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html\">tram::Render::Animation</a></div><div class=\"ttdoc\">Skeletal animation for a 3D model.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_a256a3c4dc1998b67c26aab28b7684d9d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d\">tram::Render::Animation::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> animation.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_a815b1115dfa11c8e21cf305d24ac49f8\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8\">tram::Render::Animation::GetKeyframeCount</a></div><div class=\"ttdeci\">uint32_t GetKeyframeCount(name_t bone)</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:170</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_a8d75cbe7f57a4b7b77f38ca710cadf30\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30\">tram::Render::Animation::GetHeaderCount</a></div><div class=\"ttdeci\">uint32_t GetHeaderCount()</div><div class=\"ttdef\"><b>Definition:</b> animation.h:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_a97148015f708147071e224e18128b442\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442\">tram::Render::Animation::GetHeader</a></div><div class=\"ttdeci\">KeyframeHeader * GetHeader(uint32_t index)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_aa0a4327e94e5babd310c67593cf4dae7\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7\">tram::Render::Animation::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_ac0bf7285a28f37f9e41d66c4325f8799\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799\">tram::Render::Animation::Find</a></div><div class=\"ttdeci\">static Animation * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:180</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_acd6c4015e2d1ed771624e80141eb29fd\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd\">tram::Render::Animation::LoadAll</a></div><div class=\"ttdeci\">static void LoadAll()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_ad47884e1acea138f8b664bc2d418dfd6\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6\">tram::Render::Animation::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:156</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_aeb52730a357d678921b547c4eae16405\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405\">tram::Render::Animation::Animation</a></div><div class=\"ttdeci\">Animation(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> animation.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_animation_html_afa51937c2a487fe82bafdb2d4056e30c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c\">tram::Render::Animation::GetKeyframes</a></div><div class=\"ttdeci\">Keyframe * GetKeyframes(name_t bone)</div><div class=\"ttdef\"><b>Definition:</b> animation.cpp:160</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a5c915c417ac6870808de6e5dff23c287\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287\">tram::Render::NameCount</a></div><div class=\"ttdeci\">std::pair&lt; name_t, uint64_t &gt; NameCount</div><div class=\"ttdef\"><b>Definition:</b> animation.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae4355f7ab257050d67eb34b6c95b58e6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">tram::Render::BONE_COUNT</a></div><div class=\"ttdeci\">const size_t BONE_COUNT</div><div class=\"ttdef\"><b>Definition:</b> animation.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></div><div class=\"ttdoc\">Bone for a 3D models skeleton.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html_a2233872a355e1400ec15d418addceba9\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">tram::Render::Bone::roll</a></div><div class=\"ttdeci\">float roll</div><div class=\"ttdoc\">Rotation of the bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html_aa35e3897afb1d7c407ce7b85251742e3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">tram::Render::Bone::parent</a></div><div class=\"ttdeci\">int32_t parent</div><div class=\"ttdoc\">Parent index of the bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html_ab98135b9d804b337b5415c5ca1462e84\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">tram::Render::Bone::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdoc\">Unique identifier for the bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html_ae3620af03d2adb4b04f0e1c9e1648800\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">tram::Render::Bone::head</a></div><div class=\"ttdeci\">vec3 head</div><div class=\"ttdoc\">Origin of the bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_bone_html_aeb360901af3cd399664d42fc7f45b621\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tram::Render::Bone::tail</a></div><div class=\"ttdeci\">vec3 tail</div><div class=\"ttdoc\">Direction of the bone.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_header_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_header_html_a63ce32117d2989baf934941940c747ae\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">tram::Render::KeyframeHeader::keyframe_offset</a></div><div class=\"ttdeci\">uint32_t keyframe_offset</div><div class=\"ttdef\"><b>Definition:</b> animation.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_header_html_ad5759dfc006442feaed40a25e8f19629\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">tram::Render::KeyframeHeader::keyframe_count</a></div><div class=\"ttdeci\">uint32_t keyframe_count</div><div class=\"ttdef\"><b>Definition:</b> animation.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_header_html_aede52b0456d0af84c59386e2f7b4e5e0\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">tram::Render::KeyframeHeader::bone</a></div><div class=\"ttdeci\">name_t bone</div><div class=\"ttdef\"><b>Definition:</b> animation.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></div><div class=\"ttdoc\">Keyframe for a skeletal animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a0a8682e86efe22d381951a748d49b617\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">tram::Render::Keyframe::frame</a></div><div class=\"ttdeci\">float frame</div><div class=\"ttdoc\">Used only when keyframes are used in the context of an animation.</div><div class=\"ttdef\"><b>Definition:</b> animation.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a1cd5b08f51a3ae82605f1aeb22ef52c1\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">tram::Render::Keyframe::padding</a></div><div class=\"ttdeci\">char padding[4]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a54ad174c2d1454d5b8699463918241cc\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">tram::Render::Keyframe::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> animation.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a77e3cb6ebfeb2417da1887eb85a0b7c5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">tram::Render::Keyframe::scale</a></div><div class=\"ttdeci\">vec3 scale</div><div class=\"ttdef\"><b>Definition:</b> animation.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_keyframe_html_a9a2801c157a6717bfc008716b4c28a83\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">tram::Render::Keyframe::rotation</a></div><div class=\"ttdeci\">quat rotation</div><div class=\"ttdef\"><b>Definition:</b> animation.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html_a80a33d6441ac42610e7cae4e31c8b1bb\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">tram::Render::Pose::pose</a></div><div class=\"ttdeci\">mat4 pose[BONE_COUNT]</div><div class=\"ttdef\"><b>Definition:</b> animation.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2api_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/api.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">api.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2api_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a4aa628366e46526d2722302d9ce9d230\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">tram::Render::API::ContextType</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">tram::Render::API::CONTEXT_OPENGL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">tram::Render::API::CONTEXT_WEBGL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">tram::Render::API::CONTEXT_DIRECT3D</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">tram::Render::API::CONTEXT_SOFTWARE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">tram::Render::API::CONTEXT_NONE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a4aa628366e46526d2722302d9ce9d230\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API::Init</a> ()</td></tr>\n<tr class=\"separator:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d75088dd180366fb45cb86654694db9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API::RenderFrame</a> ()</td></tr>\n<tr class=\"separator:a0d75088dd180366fb45cb86654694db9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API::SetScreenClear</a> (vec3 clear_color, bool clear)</td></tr>\n<tr class=\"separator:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa88196543e9de714a86037204e01f75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API::SetLightingParameters</a> (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer)</td></tr>\n<tr class=\"separator:aa88196543e9de714a86037204e01f75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23c877f60360662f3a1de1fd11957936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API::SetViewMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a23c877f60360662f3a1de1fd11957936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API::SetProjectionMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API::GetScreen</a> (char *buffer, int w, int h)</td></tr>\n<tr class=\"separator:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API::RegisterShader</a> (vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">drawlistentry_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API::InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API::RemoveDrawListEntry</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API::GetFlags</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API::SetFlags</a> (drawlistentry_t entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API::SetLayer</a> (drawlistentry_t entry, layer_t layer)</td></tr>\n<tr class=\"separator:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API::SetPose</a> (drawlistentry_t entry, Pose *pose)</td></tr>\n<tr class=\"separator:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API::SetLightmap</a> (drawlistentry_t entry, texturehandle_t lightmap)</td></tr>\n<tr class=\"separator:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">tram::Render::API::SetEnvironmentMap</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> environmentmap)</td></tr>\n<tr class=\"separator:a52c5145a1f9715fcb38218c4c6383fcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">tram::Render::API::SetSphericalHarmonic</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a> harmonic)</td></tr>\n<tr class=\"separator:a10c0e3ee3da9bfa728e219bf497ed773\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API::SetLights</a> (drawlistentry_t entry, light_t *lights)</td></tr>\n<tr class=\"separator:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API::SetMatrix</a> (drawlistentry_t entry, const mat4 &amp;matrix)</td></tr>\n<tr class=\"separator:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a664d9f1a7426b3a1505975402100480a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">tram::Render::API::SetFadeDistance</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, float near, float far)</td></tr>\n<tr class=\"separator:a664d9f1a7426b3a1505975402100480a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API::SetDrawListVertexArray</a> (drawlistentry_t entry, vertexarray_t vertex_array_handle)</td></tr>\n<tr class=\"separator:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API::SetDrawListIndexArray</a> (drawlistentry_t entry, indexarray_t index_array_handle)</td></tr>\n<tr class=\"separator:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78a374d698ab9d252afd86163c19440\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API::SetDrawListIndexRange</a> (drawlistentry_t entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:ac78a374d698ab9d252afd86163c19440\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9089059c10db7896ab1796273aab81b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">tram::Render::API::SetDrawListSpriteArray</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> sprite_array_handle)</td></tr>\n<tr class=\"separator:a9089059c10db7896ab1796273aab81b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3724426196e2fad6e190726003249aed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API::SetDrawListShader</a> (drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type)</td></tr>\n<tr class=\"separator:a3724426196e2fad6e190726003249aed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">tram::Render::API::SetDrawListMaterials</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t material_count, <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> *materials)</td></tr>\n<tr class=\"separator:a020f2e580879d12bf3b84b0ed5b9ab70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API::SetDrawListColors</a> (drawlistentry_t entry, size_t count, vec4 *color)</td></tr>\n<tr class=\"separator:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">tram::Render::API::SetDrawListTextureOffsets</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, size_t count, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> *offset)</td></tr>\n<tr class=\"separator:aabd8944a6224d5713a02ab8805acf20d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68a28820f27f670a90c2a644aa199728\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">tram::Render::API::SetDrawListAABB</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> entry, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max)</td></tr>\n<tr class=\"separator:a68a28820f27f670a90c2a644aa199728\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API::CreateIndexedVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array, indexarray_t &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f3030e7ef229bee087b336d8882232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API::CreateVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array)</td></tr>\n<tr class=\"separator:a76f3030e7ef229bee087b336d8882232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23acf51fa4097aecd557d23f73131463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API::UpdateVertexArray</a> (vertexarray_t &amp;vertex_buffer, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a23acf51fa4097aecd557d23f73131463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">texturehandle_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API::CreateTexture</a> (ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af87e801d1160ed2235b7188a506f753d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">spritearray_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">tram::Render::API::CreateSpriteArray</a> ()</td></tr>\n<tr class=\"separator:af87e801d1160ed2235b7188a506f753d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">tram::Render::API::UpdateSpriteArray</a> (spritearray_t array, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">light_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API::MakeLight</a> ()</td></tr>\n<tr class=\"separator:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API::DeleteLight</a> (light_t light)</td></tr>\n<tr class=\"separator:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API::SetLightParameters</a> (light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent)</td></tr>\n<tr class=\"separator:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">tram::Render::API::MakeMaterial</a> ()</td></tr>\n<tr class=\"separator:afaefcc84f8bd511adca07903dd4cd276\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26c75429ce3913f26e9df148750d4716\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">tram::Render::API::DeleteMaterial</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material)</td></tr>\n<tr class=\"separator:a26c75429ce3913f26e9df148750d4716\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">tram::Render::API::SetMaterialTexture</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> texture)</td></tr>\n<tr class=\"separator:a8bd81654a22565c08d8b34aa9c405c14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">tram::Render::API::SetMaterialColor</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, <a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> color)</td></tr>\n<tr class=\"separator:a58fe214fe7c887e0911762eefa69f1ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">tram::Render::API::SetMaterialSpecularWeight</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float weight)</td></tr>\n<tr class=\"separator:a295d16334d54c86ddc7599a56546dc56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">tram::Render::API::SetMaterialSpecularExponent</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float exponent)</td></tr>\n<tr class=\"separator:a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">tram::Render::API::SetMaterialSpecularTransparency</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float transparency)</td></tr>\n<tr class=\"separator:a071cd1636bc88d93e740e78ad0c6a3be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">tram::Render::API::SetMaterialReflectivity</a> (<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> material, float reflectivity)</td></tr>\n<tr class=\"separator:a777441cfb7c5806fcc7411a51739af30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ContextType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API::GetContext</a> ()</td></tr>\n<tr class=\"separator:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18bc917a04c062cb18a310880301f545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API::GetMaxIndexRangeLength</a> ()</td></tr>\n<tr class=\"separator:a18bc917a04c062cb18a310880301f545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API::SetDevice</a> (void *)</td></tr>\n<tr class=\"separator:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">tram::Render::API::IsDebugMode</a> ()</td></tr>\n<tr class=\"separator:aa5310d3f1d84890fdd8b6c9b8ceead3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">tram::Render::API::SetDebugMode</a> (bool)</td></tr>\n<tr class=\"separator:a7d69a7f95415804042a41c3580a7c56f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2api_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/api.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2api_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_API_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_API_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">// meta functions</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">RenderFrame</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">SetScreenSize</a>(<span class=\"keywordtype\">float</span> width, <span class=\"keywordtype\">float</span> height);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">SetScreenClear</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> clear_color, <span class=\"keywordtype\">bool</span> clear);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">SetLightingParameters</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">sun_direction</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">sun_color</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">ambient_color</a>, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">SetViewMatrix</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&amp; matrix, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">SetProjectionMatrix</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&amp; matrix, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">GetScreen</a>(<span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">buffer</a>, <span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">RegisterShader</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* vertex_shader, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* fragment_shader);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"comment\">// drawlist functions</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>drawlistentry_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">InsertDrawListEntry</a>();</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">RemoveDrawListEntry</a>(drawlistentry_t entry);</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">GetFlags</a>(drawlistentry_t entry);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">SetFlags</a>(drawlistentry_t entry, uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">SetLayer</a>(drawlistentry_t entry, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">SetPose</a>(drawlistentry_t entry, Pose* pose);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">SetLightmap</a>(drawlistentry_t entry, texturehandle_t lightmap);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">SetEnvironmentMap</a>(drawlistentry_t entry, texturehandle_t environmentmap);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">SetSphericalHarmonic</a>(drawlistentry_t entry, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a> harmonic);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">SetLights</a>(drawlistentry_t entry, light_t* lights);</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">SetMatrix</a>(drawlistentry_t entry, <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&amp; matrix);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">SetFadeDistance</a>(drawlistentry_t entry, <span class=\"keywordtype\">float</span> near, <span class=\"keywordtype\">float</span> far);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">SetDrawListVertexArray</a>(drawlistentry_t entry, vertexarray_t vertex_array_handle);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">SetDrawListIndexArray</a>(drawlistentry_t entry, indexarray_t index_array_handle);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">SetDrawListIndexRange</a>(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">SetDrawListSpriteArray</a>(drawlistentry_t entry, spritearray_t sprite_array_handle);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">SetDrawListShader</a>(drawlistentry_t entry, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> vertex_format, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> material_type);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">SetDrawListMaterials</a>(drawlistentry_t entry, <span class=\"keywordtype\">size_t</span> material_count, material_t* materials);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">SetDrawListColors</a>(drawlistentry_t entry, <span class=\"keywordtype\">size_t</span> count, <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>* color);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">SetDrawListTextureOffsets</a>(drawlistentry_t entry, <span class=\"keywordtype\">size_t</span> count, <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>* offset);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">SetDrawListAABB</a>(drawlistentry_t entry, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">// vertex buffer functions</span></div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">CreateIndexedVertexArray</a>(VertexDefinition vertex_format, vertexarray_t&amp; vertex_array, indexarray_t&amp; index_array, <span class=\"keywordtype\">size_t</span> vertex_size, <span class=\"keywordtype\">void</span>* vertex_data, <span class=\"keywordtype\">size_t</span> index_size, <span class=\"keywordtype\">void</span>* index_data);</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">CreateVertexArray</a>(VertexDefinition vertex_format, vertexarray_t&amp; vertex_array);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">UpdateVertexArray</a>(vertexarray_t&amp; vertex_buffer, <span class=\"keywordtype\">size_t</span> data_size, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">// TODO: add deletion functions</span></div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">// texture functions</span></div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>texturehandle_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">CreateTexture</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a> color_mode, <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a> texture_filter, uint32_t width, uint32_t height, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">// TODO: add deletion function</span></div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">// TODO: add update functions (filter?)</span></div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">// sprite functions</span></div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>spritearray_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">CreateSpriteArray</a>();</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">UpdateSpriteArray</a>(spritearray_t array, <span class=\"keywordtype\">size_t</span> data_size, <span class=\"keywordtype\">void</span>* data);</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">// light functions</span></div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>light_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">MakeLight</a>();</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">DeleteLight</a>(light_t light);</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">SetLightParameters</a>(light_t light, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color, <span class=\"keywordtype\">float</span> distance, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <span class=\"keywordtype\">float</span> exponent);</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"comment\">// TODO: decompose big function?</span></div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"comment\">// material functions</span></div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>material_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">MakeMaterial</a>();</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">DeleteMaterial</a>(material_t material);</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">SetMaterialTexture</a>(material_t material, texturehandle_t texture);</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">SetMaterialColor</a>(material_t material, <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> color);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">SetMaterialSpecularWeight</a>(material_t material, <span class=\"keywordtype\">float</span> weight);</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">SetMaterialSpecularExponent</a>(material_t material, <span class=\"keywordtype\">float</span> exponent);</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">SetMaterialSpecularTransparency</a>(material_t material, <span class=\"keywordtype\">float</span> transparency);</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">SetMaterialReflectivity</a>(material_t material, <span class=\"keywordtype\">float</span> reflectivity);</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">   94</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">ContextType</a> {</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">   95</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">CONTEXT_OPENGL</a>,</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">   96</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">CONTEXT_WEBGL</a>,</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">   97</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">CONTEXT_DIRECT3D</a>,</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">   98</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">CONTEXT_SOFTWARE</a>,</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">CONTEXT_NONE</a></div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">  100</a></span>};</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">ContextType</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">GetContext</a>();</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">GetMaxIndexRangeLength</a>();</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">SetDevice</a>(<span class=\"keywordtype\">void</span>*);</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">IsDebugMode</a>();</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">SetDebugMode</a>(<span class=\"keywordtype\">bool</span>);</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>}</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_API_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a01464db10e614acc7db508e0ecdc642c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API::GetFlags</a></div><div class=\"ttdeci\">uint32_t GetFlags(drawlistentry_t entry)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:242</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a020f2e580879d12bf3b84b0ed5b9ab70\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70\">tram::Render::API::SetDrawListMaterials</a></div><div class=\"ttdeci\">void SetDrawListMaterials(drawlistentry_t entry, size_t material_count, material_t *materials)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:112</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a071cd1636bc88d93e740e78ad0c6a3be\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be\">tram::Render::API::SetMaterialSpecularTransparency</a></div><div class=\"ttdeci\">void SetMaterialSpecularTransparency(material_t material, float transparency)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a0d75088dd180366fb45cb86654694db9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API::RenderFrame</a></div><div class=\"ttdeci\">void RenderFrame()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:62</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a10a6b549dc7e27d1f27c14bd2e3fc896\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API::SetFlags</a></div><div class=\"ttdeci\">void SetFlags(drawlistentry_t entry, uint32_t flags)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:246</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a10c0e3ee3da9bfa728e219bf497ed773\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773\">tram::Render::API::SetSphericalHarmonic</a></div><div class=\"ttdeci\">void SetSphericalHarmonic(drawlistentry_t entry, sphericalharmonic_t harmonic)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:48</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a1132a0b2a9d3f0e2cf62dc5db40a6504\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API::GetContext</a></div><div class=\"ttdeci\">ContextType GetContext()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:803</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a18bc917a04c062cb18a310880301f545\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API::GetMaxIndexRangeLength</a></div><div class=\"ttdeci\">uint32_t GetMaxIndexRangeLength()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:807</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a1a5a35d0071849e1f4a44362df772ce1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API::InsertDrawListEntry</a></div><div class=\"ttdeci\">drawlistentry_t InsertDrawListEntry()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:234</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a23acf51fa4097aecd557d23f73131463\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API::UpdateVertexArray</a></div><div class=\"ttdeci\">void UpdateVertexArray(vertexarray_t &amp;vertex_buffer, size_t data_size, void *data)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:690</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a23c877f60360662f3a1de1fd11957936\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API::SetViewMatrix</a></div><div class=\"ttdeci\">void SetViewMatrix(const mat4 &amp;matrix, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:732</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a26c75429ce3913f26e9df148750d4716\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716\">tram::Render::API::DeleteMaterial</a></div><div class=\"ttdeci\">void DeleteMaterial(material_t material)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a295d16334d54c86ddc7599a56546dc56\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56\">tram::Render::API::SetMaterialSpecularWeight</a></div><div class=\"ttdeci\">void SetMaterialSpecularWeight(material_t material, float weight)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a2c690bed4e6f7ccf1e001526b6b6f013\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">tram::Render::API::UpdateSpriteArray</a></div><div class=\"ttdeci\">void UpdateSpriteArray(spritearray_t array, size_t data_size, void *data)</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a3333e144d9fcb3f23192760dabce0d0d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:768</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a3724426196e2fad6e190726003249aed\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API::SetDrawListShader</a></div><div class=\"ttdeci\">bool SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:302</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a3e3f408a1abea6b59284b89e49624950\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API::SetLightmap</a></div><div class=\"ttdeci\">void SetLightmap(drawlistentry_t entry, texturehandle_t lightmap)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:258</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a411524f6804a132bdfdf7e95d318fe6a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API::SetDrawListIndexArray</a></div><div class=\"ttdeci\">void SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:293</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a453419fa3a31de6918ce7c54454b1314\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API::SetScreenSize</a></div><div class=\"ttdeci\">void SetScreenSize(float width, float height)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:50</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4546d61832af8f8af9038e5d060afe70\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API::SetScreenClear</a></div><div class=\"ttdeci\">void SetScreenClear(vec3 clear_color, bool clear)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4642bc504c6d77fde8a824bb95c5ec16\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API::SetDrawListVertexArray</a></div><div class=\"ttdeci\">void SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:286</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4a13fea5192ecde4d6483fd7ac4109d2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API::RemoveDrawListEntry</a></div><div class=\"ttdeci\">void RemoveDrawListEntry(drawlistentry_t entry)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:238</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230\">tram::Render::API::ContextType</a></div><div class=\"ttdeci\">ContextType</div><div class=\"ttdef\"><b>Definition:</b> api.h:94</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160\">tram::Render::API::CONTEXT_WEBGL</a></div><div class=\"ttdeci\">@ CONTEXT_WEBGL</div><div class=\"ttdef\"><b>Definition:</b> api.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2\">tram::Render::API::CONTEXT_NONE</a></div><div class=\"ttdeci\">@ CONTEXT_NONE</div><div class=\"ttdef\"><b>Definition:</b> api.h:99</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e\">tram::Render::API::CONTEXT_DIRECT3D</a></div><div class=\"ttdeci\">@ CONTEXT_DIRECT3D</div><div class=\"ttdef\"><b>Definition:</b> api.h:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f\">tram::Render::API::CONTEXT_OPENGL</a></div><div class=\"ttdeci\">@ CONTEXT_OPENGL</div><div class=\"ttdef\"><b>Definition:</b> api.h:95</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae\">tram::Render::API::CONTEXT_SOFTWARE</a></div><div class=\"ttdeci\">@ CONTEXT_SOFTWARE</div><div class=\"ttdef\"><b>Definition:</b> api.h:98</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52c5145a1f9715fcb38218c4c6383fcf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf\">tram::Render::API::SetEnvironmentMap</a></div><div class=\"ttdeci\">void SetEnvironmentMap(drawlistentry_t entry, texturehandle_t environmentmap)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a58fe214fe7c887e0911762eefa69f1ef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef\">tram::Render::API::SetMaterialColor</a></div><div class=\"ttdeci\">void SetMaterialColor(material_t material, vec4 color)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a5a2dbe49094868d5a7efea439f9148f0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API::SetPose</a></div><div class=\"ttdeci\">void SetPose(drawlistentry_t entry, Pose *pose)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:254</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a63b87913acfc6af2fd7e39754dc1522d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API::RegisterShader</a></div><div class=\"ttdeci\">void RegisterShader(vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:343</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a664d9f1a7426b3a1505975402100480a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a\">tram::Render::API::SetFadeDistance</a></div><div class=\"ttdeci\">void SetFadeDistance(drawlistentry_t entry, float near, float far)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:80</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a68a28820f27f670a90c2a644aa199728\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728\">tram::Render::API::SetDrawListAABB</a></div><div class=\"ttdeci\">void SetDrawListAABB(drawlistentry_t entry, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:52</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a6fca8cce2a22ed1edf6cc3fe8f241c7f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f\">tram::Render::API::SetMaterialSpecularExponent</a></div><div class=\"ttdeci\">void SetMaterialSpecularExponent(material_t material, float exponent)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a72ff5f43fc09f16266e3fc9ed33715af\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API::CreateTexture</a></div><div class=\"ttdeci\">texturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void *data)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:346</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a746afea6f8369d0a1570bb46b7a6e9b3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API::GetScreen</a></div><div class=\"ttdeci\">void GetScreen(char *buffer, int w, int h)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:744</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a76f3030e7ef229bee087b336d8882232\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API::CreateVertexArray</a></div><div class=\"ttdeci\">void CreateVertexArray(VertexDefinition vertex_format, vertexarray_t &amp;vertex_array)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:655</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a777441cfb7c5806fcc7411a51739af30\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30\">tram::Render::API::SetMaterialReflectivity</a></div><div class=\"ttdeci\">void SetMaterialReflectivity(material_t material, float reflectivity)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a7d69a7f95415804042a41c3580a7c56f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f\">tram::Render::API::SetDebugMode</a></div><div class=\"ttdeci\">void SetDebugMode(bool)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:521</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a832d87127faad4c76d3b09fb0efcbb39\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API::SetLightParameters</a></div><div class=\"ttdeci\">void SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:329</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a86dea3f6c3851af17406ccee3bdc8b85\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API::MakeLight</a></div><div class=\"ttdeci\">light_t MakeLight()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:310</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a8712a5ab1b0f028eb8559586b458262d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API::SetProjectionMatrix</a></div><div class=\"ttdeci\">void SetProjectionMatrix(const mat4 &amp;matrix, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:737</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a8bd81654a22565c08d8b34aa9c405c14\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14\">tram::Render::API::SetMaterialTexture</a></div><div class=\"ttdeci\">void SetMaterialTexture(material_t material, texturehandle_t texture)</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a9089059c10db7896ab1796273aab81b7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7\">tram::Render::API::SetDrawListSpriteArray</a></div><div class=\"ttdeci\">void SetDrawListSpriteArray(drawlistentry_t entry, spritearray_t sprite_array_handle)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:93</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_aa5310d3f1d84890fdd8b6c9b8ceead3f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f\">tram::Render::API::IsDebugMode</a></div><div class=\"ttdeci\">bool IsDebugMode()</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:517</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_aa88196543e9de714a86037204e01f75c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API::SetLightingParameters</a></div><div class=\"ttdeci\">void SetLightingParameters(vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_aabd8944a6224d5713a02ab8805acf20d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d\">tram::Render::API::SetDrawListTextureOffsets</a></div><div class=\"ttdeci\">void SetDrawListTextureOffsets(drawlistentry_t entry, size_t count, vec4 *offset)</div><div class=\"ttdef\"><b>Definition:</b> drawlist.cpp:63</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ab591dae55495d78c86d150973ea3bef1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API::SetDrawListColors</a></div><div class=\"ttdeci\">void SetDrawListColors(drawlistentry_t entry, size_t count, vec4 *color)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:262</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ac78a374d698ab9d252afd86163c19440\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API::SetDrawListIndexRange</a></div><div class=\"ttdeci\">void SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:297</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ac9af752a04919c1be9443f491ba9364a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API::SetLights</a></div><div class=\"ttdeci\">void SetLights(drawlistentry_t entry, light_t *lights)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:272</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_acf65aad3d61388081cff7f81c92368a4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API::DeleteLight</a></div><div class=\"ttdeci\">void DeleteLight(light_t light)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:320</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ad62b8a1dc88abdbcf24dbcbc97571b22\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API::SetMatrix</a></div><div class=\"ttdeci\">void SetMatrix(drawlistentry_t entry, const mat4 &amp;matrix)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:278</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ae22f8a73faf3d561003265a51e3ca2b3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API::CreateIndexedVertexArray</a></div><div class=\"ttdeci\">void CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t &amp;vertex_array, indexarray_t &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:608</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ae66b8323eef7ab765ad466ec90da6ed6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API::SetDevice</a></div><div class=\"ttdeci\">void SetDevice(void *)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:811</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_af87e801d1160ed2235b7188a506f753d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">tram::Render::API::CreateSpriteArray</a></div><div class=\"ttdeci\">spritearray_t CreateSpriteArray()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_afac0e9fbfee600d48f07f13a04ad5e50\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API::SetLayer</a></div><div class=\"ttdeci\">void SetLayer(drawlistentry_t entry, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:250</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_afaefcc84f8bd511adca07903dd4cd276\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276\">tram::Render::API::MakeMaterial</a></div><div class=\"ttdeci\">material_t MakeMaterial()</div><div class=\"ttdef\"><b>Definition:</b> material.cpp:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a3789b74039f89d50409081cdc8fc1457\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">tram::Render::ambient_color</a></div><div class=\"ttdeci\">vec3 ambient_color</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:40</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4e5691f40b84e848c0d9b19b285bf0e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></div><div class=\"ttdeci\">uint32_t vertexformat_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a786b665a3cc7c9557dd8d67a418bcaaf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">tram::Render::sun_color</a></div><div class=\"ttdeci\">vec3 sun_color</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:39</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a92b94ac310d4c8df9a4294518ffd75c8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render::layer_t</a></div><div class=\"ttdeci\">uint32_t layer_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9be8283c1665f7d42c97367d857d43cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></div><div class=\"ttdeci\">uint32_t materialtype_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render::ColorMode</a></div><div class=\"ttdeci\">ColorMode</div><div class=\"ttdoc\">Texture color mode.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad3c2cb5af20e13497cc81f62d22b430c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render::TextureFilter</a></div><div class=\"ttdeci\">TextureFilter</div><div class=\"ttdoc\">Texture filters.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad44eb5b755e8ae84746af1b369c01908\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">tram::Render::sun_direction</a></div><div class=\"ttdeci\">vec3 sun_direction</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_adc772ee58f3700260f2f155f334fd6d5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render::sphericalharmonic_t</a></div><div class=\"ttdeci\">SphericalHarmonic sphericalharmonic_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1implementation_html_a8098d615040fde5cc1fc55269394ccb7\"><div class=\"ttname\"><a href=\"namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7\">tram::implementation::buffer</a></div><div class=\"ttdeci\">char buffer[500]</div><div class=\"ttdef\"><b>Definition:</b> logging.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2light_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/light.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">render/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2light_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/light.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"render_2light_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\" title=\"LightGraph resource.\">LightGraph</a> resource.  <a href=\"classtram_1_1_render_1_1_light_graph.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2light_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/light.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2light_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>Material;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">   17</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">LightGraph</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">   20</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">LoadFromMemory</a>() {}</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    std::vector&lt;std::pair&lt;uint32_t, vec3&gt;&gt; <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">GetEnvironmentProbes</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">ContainsEntity</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> entity);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">LookupHarmonic</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, uint32_t layers);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">LookupEnvironmentMap</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">   31</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">   32</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">position</a>;</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">   33</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">has_light</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">   34</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">has_reflection</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">   35</a></span>        <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">environment_map</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">   36</a></span>        std::vector&lt;SphericalHarmonic&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">constants</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    };</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">   39</a></span>    std::vector&lt;id_t&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">entities</a>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">   40</a></span>    std::vector&lt;Node&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">nodes</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">   41</a></span>    std::vector&lt;std::pair&lt;uint32_t, uint32_t&gt;&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">edges</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>}</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_LIGHT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html\">tram::Render::LightGraph</a></div><div class=\"ttdoc\">LightGraph resource.</div><div class=\"ttdef\"><b>Definition:</b> light.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a076e24396cd1802aa4abbd69d49e1c8d\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d\">tram::Render::LightGraph::edges</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; uint32_t, uint32_t &gt; &gt; edges</div><div class=\"ttdef\"><b>Definition:</b> light.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a07e34cb8706381d97bc4e138a625a1bf\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf\">tram::Render::LightGraph::GetEnvironmentProbes</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; uint32_t, vec3 &gt; &gt; GetEnvironmentProbes()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:45</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a0c98cd60f1386f73c654536c70147351\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351\">tram::Render::LightGraph::LookupEnvironmentMap</a></div><div class=\"ttdeci\">static Material * LookupEnvironmentMap(vec3 position)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a32f29f8d80661eedcfe32d72e7f11def\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def\">tram::Render::LightGraph::LightGraph</a></div><div class=\"ttdeci\">LightGraph(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> light.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a33ebe4cfeae7cd18ceacb54d3e4c5a3f\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f\">tram::Render::LightGraph::Find</a></div><div class=\"ttdeci\">static LightGraph * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:149</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a5d61946d71fd0b3765492c2f7b5d4e58\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58\">tram::Render::LightGraph::ContainsEntity</a></div><div class=\"ttdeci\">static bool ContainsEntity(id_t entity)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a5ecc9ba96984a2e7fc95704c46b98049\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049\">tram::Render::LightGraph::entities</a></div><div class=\"ttdeci\">std::vector&lt; id_t &gt; entities</div><div class=\"ttdef\"><b>Definition:</b> light.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a798e549b6f611fceee1549ecdf63658a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a\">tram::Render::LightGraph::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> light.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_a7dd1cd54e31470a76c5919dfb8311629\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629\">tram::Render::LightGraph::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:160</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_ad506de9dafeee1b2e44727ac031f0d4a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a\">tram::Render::LightGraph::LookupHarmonic</a></div><div class=\"ttdeci\">static SphericalHarmonic LookupHarmonic(vec3 position, uint32_t layers)</div><div class=\"ttdef\"><b>Definition:</b> light.cpp:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_aea188bfb0d41aa49aea9898a72fd0ff2\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2\">tram::Render::LightGraph::nodes</a></div><div class=\"ttdeci\">std::vector&lt; Node &gt; nodes</div><div class=\"ttdef\"><b>Definition:</b> light.h:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_light_graph_html_af1948a05344456f61b7c26f2871c7a91\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91\">tram::Render::LightGraph::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> light.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></div><div class=\"ttdoc\">Material resource.</div><div class=\"ttdef\"><b>Definition:</b> material.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></div><div class=\"ttdef\"><b>Definition:</b> light.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html_a0fa39d48f3054f6ac06005afe60c8166\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">tram::Render::LightGraph::Node::has_reflection</a></div><div class=\"ttdeci\">bool has_reflection</div><div class=\"ttdef\"><b>Definition:</b> light.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html_aa1ce3c4277d9f6afbd8360c932ddeb9f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">tram::Render::LightGraph::Node::has_light</a></div><div class=\"ttdeci\">bool has_light</div><div class=\"ttdef\"><b>Definition:</b> light.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html_aa9aec84624a3677767c4ba9f1e593a35\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">tram::Render::LightGraph::Node::constants</a></div><div class=\"ttdeci\">std::vector&lt; SphericalHarmonic &gt; constants</div><div class=\"ttdef\"><b>Definition:</b> light.h:36</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html_ac676ead25ef8bcd8846345f39d733a12\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">tram::Render::LightGraph::Node::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> light.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_light_graph_1_1_node_html_aee5b13a5643db5232b8a49eeafbdc3f5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">tram::Render::LightGraph::Node::environment_map</a></div><div class=\"ttdeci\">Material * environment_map</div><div class=\"ttdef\"><b>Definition:</b> light.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:92</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2api_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/api.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2opengl_2api_8h_source.html\">Go to the source code of this file.</a></p>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2api_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/api.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">api.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2opengl_2api_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_API_H</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_API_H</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//namespace tram::Render::OpenGL {</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//void Init();</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"comment\">//void Render();</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"comment\">//void SetScreenSize (float width, float height);</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\">//drawlistentry_t InsertDrawListEntry ();</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\">//uint32_t GetFlags (drawlistentry_t entry);</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//void SetFlags (drawlistentry_t entry, uint32_t flags);</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//void SetLayer (drawlistentry_t entry, uint32_t flags);</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//void SetPose (drawlistentry_t entry, Pose* pose);</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//void SetLightmap (drawlistentry_t entry, uint32_t lightmap);</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//void SetLights (drawlistentry_t entry, uint32_t* lights);</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//void SetMatrix (drawlistentry_t entry, const mat4&amp; matrix);</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//void SetDrawListVertexArray (drawlistentry_t entry, uint32_t vertex_array_handle);</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"comment\">//void SetDrawListIndexRange (drawlistentry_t entry, uint32_t index_offset, uint32_t index_length);</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"comment\">//void SetDrawListShader (drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type);</span></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"comment\">//void SetDrawListTextures (drawlistentry_t entry, size_t texture_count, uint32_t* textures);</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"comment\">//void SetScreenClear (vec3 clear_color, bool clear);</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"comment\">//void SetLightingParameters (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, uint32_t layer);</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"comment\">//void SetViewParameters (vec3 position, quat rotation, uint32_t layer);</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"comment\">//light_t MakeLight ();</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"comment\">//void DeleteLight (light_t light);</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">//void SetLightParameters (light_t light, vec3 location, vec3 color, float distance);</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//void RemoveDrawListEntry (drawlistentry_t entry);</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//uint32_t CreateTexture (ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data);</span></div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">// this bit of the API is a bit leaky</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">// might change later!</span></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//void CreateIndexedVertexArray (VertexDefinition vertex_format, vertexhandle_t&amp; vertex_buffer_handle, vertexhandle_t&amp; index_buffer_handle,  vertexhandle_t&amp; vertex_array_handle, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data);</span></div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//void CreateVertexArray (VertexDefinition vertex_format, vertexhandle_t&amp; vertex_buffer_handle,  vertexhandle_t&amp; vertex_array_handle);</span></div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//void UpdateVertexArray (vertexhandle_t vertex_buffer_handle, size_t data_size, void* data);</span></div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//void RenderFrame ();</span></div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//}</span></div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_API_H</span></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2light_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/light.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2opengl_2light_8h_source.html\">render/opengl/light.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">light_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API::MakeLight</a> ()</td></tr>\n<tr class=\"separator:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API::DeleteLight</a> (light_t light)</td></tr>\n<tr class=\"separator:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API::SetLightParameters</a> (light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent)</td></tr>\n<tr class=\"separator:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2light_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/light.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">light.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2opengl_2light_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2light_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/light.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">light.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2opengl_2light_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_LIGHT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">   11</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">   12</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">   13</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">padding</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">   14</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">color</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">   15</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">distance</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">   16</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">direction</a> = {0.0f, 0.0f, -1.0f};</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">   17</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">exponent</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">   18</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">padding2</a>[4];</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>};</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>}</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_LIGHT_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></div><div class=\"ttdef\"><b>Definition:</b> light.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_a0bbe7d80789eab7c5206ce463e320f3f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">tram::Render::API::GLLight::exponent</a></div><div class=\"ttdeci\">float exponent</div><div class=\"ttdef\"><b>Definition:</b> light.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_a58b24ce258b313935592f59caa960391\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">tram::Render::API::GLLight::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> light.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_a77e3100b3b9e5768fd058115e131d221\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">tram::Render::API::GLLight::padding</a></div><div class=\"ttdeci\">float padding</div><div class=\"ttdef\"><b>Definition:</b> light.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_a78cdd846a56cbb9ca8d7085a04a0edde\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">tram::Render::API::GLLight::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> light.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_a99216bd4b9cc9d114f1a17f41d77faab\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">tram::Render::API::GLLight::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> light.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_aaba013dff6639e491d1e9f82e40bd5c9\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">tram::Render::API::GLLight::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> light.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html_aaf9eba5b5c1706e06920f3ed97880984\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">tram::Render::API::GLLight::padding2</a></div><div class=\"ttdeci\">float padding2[4]</div><div class=\"ttdef\"><b>Definition:</b> light.h:18</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2sprite_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/sprite.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:af87e801d1160ed2235b7188a506f753d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">spritearray_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d\">tram::Render::API::CreateSpriteArray</a> ()</td></tr>\n<tr class=\"separator:af87e801d1160ed2235b7188a506f753d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013\">tram::Render::API::UpdateSpriteArray</a> (spritearray_t array, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a2c690bed4e6f7ccf1e001526b6b6f013\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2sprite_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/sprite.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2opengl_2sprite_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2opengl_2sprite_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/sprite.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sprite.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2opengl_2sprite_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_SPRITE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_SPRITE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_SPRITE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2render_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/render.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">render.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2sprite_8h_source.html\">components/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"particle_8h_source.html\">components/particle.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">tram::Render::Init</a> ()</td></tr>\n<tr class=\"memdesc:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the rendering system.  <a href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">More...</a><br /></td></tr>\n<tr class=\"separator:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5862ead09843f2489307cec433956d17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">tram::Render::Render</a> ()</td></tr>\n<tr class=\"memdesc:a5862ead09843f2489307cec433956d17\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Renders a single frame.  <a href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">More...</a><br /></td></tr>\n<tr class=\"separator:a5862ead09843f2489307cec433956d17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a542bb444bfd6387612406c107509bbff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">tram::Render::SetSunDirection</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> direction, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a542bb444bfd6387612406c107509bbff\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun direction.  <a href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">More...</a><br /></td></tr>\n<tr class=\"separator:a542bb444bfd6387612406c107509bbff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">tram::Render::SetSunColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a8804912a4838fc7b29819738b86f2b68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun color.  <a href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">More...</a><br /></td></tr>\n<tr class=\"separator:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">tram::Render::SetAmbientColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the ambient color.  <a href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">More...</a><br /></td></tr>\n<tr class=\"separator:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">tram::Render::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">tram::Render::SetViewFov</a> (float fov, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">tram::Render::GetViewFov</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa988a06a114b75baae33e244628ecd32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">tram::Render::SetOrthoRatio</a> (float ratio, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:aa988a06a114b75baae33e244628ecd32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">tram::Render::SetViewDistance</a> (float dist, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">tram::Render::GetViewDistance</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">tram::Render::SetViewPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view position.  <a href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">More...</a><br /></td></tr>\n<tr class=\"separator:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">tram::Render::SetViewRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view rotation.  <a href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">More...</a><br /></td></tr>\n<tr class=\"separator:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">tram::Render::GetViewPosition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view position for a given layer.  <a href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">More...</a><br /></td></tr>\n<tr class=\"separator:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">tram::Render::GetViewRotation</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view rotation for a given layer.  <a href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">More...</a><br /></td></tr>\n<tr class=\"separator:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render::AddLine</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a line for a single frame.  <a href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">tram::Render::AddLineMarker</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cross marker for a single frame.  <a href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">More...</a><br /></td></tr>\n<tr class=\"separator:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">tram::Render::AddLineAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> center, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws an <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> box for a single frame.  <a href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">tram::Render::AddSphere</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a sphere for a single frame.  <a href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">More...</a><br /></td></tr>\n<tr class=\"separator:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">tram::Render::AddCylinder</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cylinder for a single frame.  <a href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">More...</a><br /></td></tr>\n<tr class=\"separator:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">tram::Render::AddCube</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cube for a single frame.  <a href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">More...</a><br /></td></tr>\n<tr class=\"separator:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">tram::Render::AddText</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:acb324f6e78d295296dd65efb3d3071af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, in 3D space, for a single frame.  <a href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">More...</a><br /></td></tr>\n<tr class=\"separator:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">tram::Render::AddText</a> (float x, float y, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, on the screen, for a single frame.  <a href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">More...</a><br /></td></tr>\n<tr class=\"separator:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">tram::Render::Project</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;point, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;result, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point into screen coordinates.  <a href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">More...</a><br /></td></tr>\n<tr class=\"separator:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe4a18573155f61186484e55955c6dac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">tram::Render::ProjectInverse</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:afe4a18573155f61186484e55955c6dac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reverses screen coordinates into world coordinates.  <a href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">More...</a><br /></td></tr>\n<tr class=\"separator:afe4a18573155f61186484e55955c6dac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">tram::Render::RegisterVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new vertex format.  <a href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">More...</a><br /></td></tr>\n<tr class=\"separator:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">tram::Render::RegisterMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new material type.  <a href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">More...</a><br /></td></tr>\n<tr class=\"separator:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">tram::Render::FindVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already allocated vertex format by its name.  <a href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">More...</a><br /></td></tr>\n<tr class=\"separator:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">tram::Render::FindMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already material type format by its name.  <a href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">More...</a><br /></td></tr>\n<tr class=\"separator:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">tram::Render::GetVertexFormatName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> type)</td></tr>\n<tr class=\"memdesc:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated vertex format's name.  <a href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">More...</a><br /></td></tr>\n<tr class=\"separator:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">tram::Render::GetMaterialTypeName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type)</td></tr>\n<tr class=\"memdesc:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated material type's name.  <a href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">More...</a><br /></td></tr>\n<tr class=\"separator:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memItemLeft\" >struct {</td></tr>\n<tr class=\"memitem:a87b0b9402269620f2b80dde0e2cd53e8\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349\">tram::Render::view_position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a87b0b9402269620f2b80dde0e2cd53e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa4d893130e516140f4ef9f4d5844d65\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6\">tram::Render::view_rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:afa4d893130e516140f4ef9f4d5844d65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd431247589cdc68ef85071dec58aeae\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c\">tram::Render::view_fov</a> = 60.0f</td></tr>\n<tr class=\"separator:abd431247589cdc68ef85071dec58aeae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3c8ef8c67b2f38e5bf818ac7e45360f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f\">tram::Render::near_plane</a> = 0.01f</td></tr>\n<tr class=\"separator:aa3c8ef8c67b2f38e5bf818ac7e45360f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a741d2c3356cec6d5db9866f3830469c0\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82\">tram::Render::far_plane</a> = 750.0f</td></tr>\n<tr class=\"separator:a741d2c3356cec6d5db9866f3830469c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a144aec877b43217c3eeb643723ea5e43\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d\">tram::Render::ortho_ratio</a> = 1.0f</td></tr>\n<tr class=\"separator:a144aec877b43217c3eeb643723ea5e43\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb43ec7b0edb251e745a048d144d4c97\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908\">tram::Render::sun_direction</a> = {0.0f, 1.0f, 0.0f}</td></tr>\n<tr class=\"separator:abb43ec7b0edb251e745a048d144d4c97\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac808bdbb303e366f3ed0f374d9b8a668\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf\">tram::Render::sun_color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:ac808bdbb303e366f3ed0f374d9b8a668\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53037f65626c0c910603020c68c366a2\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457\">tram::Render::ambient_color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a53037f65626c0c910603020c68c366a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab65c325fbdda913dc13ad3ec1973b625\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc\">tram::Render::projection</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ab65c325fbdda913dc13ad3ec1973b625\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8860c14959b5f987feba80c50a88f42\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc\">tram::Render::view</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ac8860c14959b5f987feba80c50a88f42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memItemLeft\" valign=\"top\">}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57\">tram::Render::view_properties</a> [7]</td></tr>\n<tr class=\"separator:a6d7d51d8e68a3a77b1015fa31e838e57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c04f6971cbc222d951bd80fb9fb56b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9\">tram::Render::THIRD_PERSON</a> = false</td></tr>\n<tr class=\"separator:a8c04f6971cbc222d951bd80fb9fb56b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0328476aed6f9a79b37ead38c539d30b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b\">tram::Render::DRAW_RENDER_DEBUG</a> = false</td></tr>\n<tr class=\"separator:a0328476aed6f9a79b37ead38c539d30b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56939aaf0348435b0e53119c4df5ce6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f\">tram::Render::colorlines_vertex_array</a> = {}</td></tr>\n<tr class=\"separator:a56939aaf0348435b0e53119c4df5ce6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdc87f9f25286c1ac68113e173db9c65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65\">tram::Render::colorlines_entry</a></td></tr>\n<tr class=\"separator:afdc87f9f25286c1ac68113e173db9c65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef5acbc59557fb9733ae605596cb9ab4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4\">tram::Render::debugtext_vertex_array</a> = {}</td></tr>\n<tr class=\"separator:aef5acbc59557fb9733ae605596cb9ab4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e1e2410b7586fbd9fcc9ac537f6b58c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c\">tram::Render::debugtext_entry</a></td></tr>\n<tr class=\"separator:a2e1e2410b7586fbd9fcc9ac537f6b58c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02ef1036594289bf19ebfa9927708a5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d\">tram::Render::font_debug</a> = nullptr</td></tr>\n<tr class=\"separator:a02ef1036594289bf19ebfa9927708a5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fbef4fea80d616dcb5ca311f69e32d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6\">tram::Render::colorlines</a></td></tr>\n<tr class=\"separator:a4fbef4fea80d616dcb5ca311f69e32d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbf7d35ffc1fe3624a48655681f07209\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209\">tram::Render::textvertices</a></td></tr>\n<tr class=\"separator:acbf7d35ffc1fe3624a48655681f07209\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2render_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/render.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">render.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">render/animation.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2render_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></td></tr>\n<tr class=\"separator:a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92b94ac310d4c8df9a4294518ffd75c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render::layer_t</a></td></tr>\n<tr class=\"separator:a92b94ac310d4c8df9a4294518ffd75c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e5691f40b84e848c0d9b19b285bf0e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></td></tr>\n<tr class=\"separator:a4e5691f40b84e848c0d9b19b285bf0e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9be8283c1665f7d42c97367d857d43cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></td></tr>\n<tr class=\"separator:a9be8283c1665f7d42c97367d857d43cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc772ee58f3700260f2f155f334fd6d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef SphericalHarmonic&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render::sphericalharmonic_t</a></td></tr>\n<tr class=\"separator:adc772ee58f3700260f2f155f334fd6d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a55401591f1faf2a435bdb5eb188ad2c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">tram::Render::VertexFormats</a> : vertexformat_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">tram::Render::VERTEX_STATIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">tram::Render::VERTEX_DYNAMIC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">tram::Render::VERTEX_SPRITE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">tram::Render::VERTEX_LINE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">tram::Render::VERTEX_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a55401591f1faf2a435bdb5eb188ad2c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a315a4bade1773ce2a425e5e7702c003e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">tram::Render::MaterialTypes</a> : materialtype_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">tram::Render::MATERIAL_TEXTURE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">tram::Render::MATERIAL_TEXTURE_ALPHA</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">tram::Render::MATERIAL_LIGHTMAP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">tram::Render::MATERIAL_ENVIRONMENTMAP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">tram::Render::MATERIAL_MSDF</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">tram::Render::MATERIAL_GLYPH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">tram::Render::MATERIAL_WATER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">tram::Render::MATERIAL_FLAT_COLOR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">tram::Render::MATERIAL_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a315a4bade1773ce2a425e5e7702c003e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab519c3dc6ead26c1a7695e4c3b5501c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render::MaterialFilter</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">tram::Render::FILTER_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">tram::Render::FILTER_LINEAR</a>\n }</td></tr>\n<tr class=\"separator:aab519c3dc6ead26c1a7695e4c3b5501c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">tram::Render::Init</a> ()</td></tr>\n<tr class=\"memdesc:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the rendering system.  <a href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">More...</a><br /></td></tr>\n<tr class=\"separator:a432d184f3b358b4f7ee6daf055f9ef74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5862ead09843f2489307cec433956d17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">tram::Render::Render</a> ()</td></tr>\n<tr class=\"memdesc:a5862ead09843f2489307cec433956d17\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Renders a single frame.  <a href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">More...</a><br /></td></tr>\n<tr class=\"separator:a5862ead09843f2489307cec433956d17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">tram::Render::Project</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;point, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;result, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projects a point into screen coordinates.  <a href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">More...</a><br /></td></tr>\n<tr class=\"separator:a67eb4708222066d5a516c5eff9a14fa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe4a18573155f61186484e55955c6dac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">tram::Render::ProjectInverse</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:afe4a18573155f61186484e55955c6dac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Reverses screen coordinates into world coordinates.  <a href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">More...</a><br /></td></tr>\n<tr class=\"separator:afe4a18573155f61186484e55955c6dac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a542bb444bfd6387612406c107509bbff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">tram::Render::SetSunDirection</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> direction, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a542bb444bfd6387612406c107509bbff\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun direction.  <a href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">More...</a><br /></td></tr>\n<tr class=\"separator:a542bb444bfd6387612406c107509bbff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">tram::Render::SetSunColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a8804912a4838fc7b29819738b86f2b68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the sun color.  <a href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">More...</a><br /></td></tr>\n<tr class=\"separator:a8804912a4838fc7b29819738b86f2b68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">tram::Render::SetAmbientColor</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the ambient color.  <a href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">More...</a><br /></td></tr>\n<tr class=\"separator:acb0e80ad32fe24d60dc62e58017b37b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">tram::Render::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:abcb118a759504ad9bc0993ca69f7231e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa988a06a114b75baae33e244628ecd32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">tram::Render::SetOrthoRatio</a> (float ratio, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:aa988a06a114b75baae33e244628ecd32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">tram::Render::SetViewFov</a> (float fov, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a2aaf3e85135fa18435eb0d9412ca3a6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">tram::Render::GetViewFov</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a91420cfff2ed4a2548d27a0924000187\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">tram::Render::SetViewDistance</a> (float dist, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a6957c2557d41fe2fb76646cea2266eeb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">tram::Render::GetViewDistance</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"separator:a0a15770929caa8b52620ed6b2cd3f731\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">tram::Render::SetViewPosition</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view position.  <a href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">More...</a><br /></td></tr>\n<tr class=\"separator:a844a096223a3c0f236c7ef8f304a24f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">tram::Render::SetViewRotation</a> (<a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the view rotation.  <a href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">More...</a><br /></td></tr>\n<tr class=\"separator:a81a4ef257882a1513b6077fd05d1d1c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">tram::Render::GetViewPosition</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view position for a given layer.  <a href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">More...</a><br /></td></tr>\n<tr class=\"separator:acfbfc3fc3b9bcc20aba46673364bfa6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">tram::Render::GetViewRotation</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer)</td></tr>\n<tr class=\"memdesc:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the view rotation for a given layer.  <a href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">More...</a><br /></td></tr>\n<tr class=\"separator:a588afc5ab26e5dea5924df08c70f95bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3b0b62b8ab1781496fd3a2ac86eaa7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">tram::Render::COLOR_WHITE</a> (1.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:ac3b0b62b8ab1781496fd3a2ac86eaa7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3d207aeb8d3bd302970a0ce72b15f98a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">tram::Render::COLOR_RED</a> (1.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a3d207aeb8d3bd302970a0ce72b15f98a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46842a211bc249ada03b3879ee9e7d61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">tram::Render::COLOR_GREEN</a> (0.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:a46842a211bc249ada03b3879ee9e7d61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2545e14772852a87dae9066123c2646\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">tram::Render::COLOR_BLUE</a> (0.0f, 0.0f, 1.0f)</td></tr>\n<tr class=\"separator:ac2545e14772852a87dae9066123c2646\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a528da7221f08fab1b6d5e3b3cacdb8fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">tram::Render::COLOR_YELLOW</a> (1.0f, 1.0f, 0.0f)</td></tr>\n<tr class=\"separator:a528da7221f08fab1b6d5e3b3cacdb8fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa08fcc8a83e73c8896423742971d97fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">tram::Render::COLOR_PINK</a> (1.0f, 0.0f, 1.0f)</td></tr>\n<tr class=\"separator:aa08fcc8a83e73c8896423742971d97fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bece9ac513eed3675e8fc05dde16e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">tram::Render::COLOR_CYAN</a> (0.0f, 1.0f, 1.0f)</td></tr>\n<tr class=\"separator:a9bece9ac513eed3675e8fc05dde16e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1881266fc3e4ccfe6161b9f53816c1b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">tram::Render::COLOR_BLACK</a> (0.0f, 0.0f, 0.0f)</td></tr>\n<tr class=\"separator:a1881266fc3e4ccfe6161b9f53816c1b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38f1da44cef9b7d17113d9204723e561\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const color_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">tram::Render::COLOR_GRAY</a> (0.3f, 0.3f, 0.3f)</td></tr>\n<tr class=\"separator:a38f1da44cef9b7d17113d9204723e561\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render::AddLine</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a line for a single frame.  <a href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">More...</a><br /></td></tr>\n<tr class=\"separator:aaf8ef81eae0da772762ff835a3a24536\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">tram::Render::AddLineMarker</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cross marker for a single frame.  <a href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">More...</a><br /></td></tr>\n<tr class=\"separator:ae5ab2f07c068f59f0ded62a742e05fdf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">tram::Render::AddLineAABB</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> center, <a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color)</td></tr>\n<tr class=\"memdesc:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws an <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a> box for a single frame.  <a href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">More...</a><br /></td></tr>\n<tr class=\"separator:aa2585f6dc9fbeddf62db686a5dbafbea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">tram::Render::AddSphere</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a sphere for a single frame.  <a href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">More...</a><br /></td></tr>\n<tr class=\"separator:ac8426b2175dd44cfee749c08ae81583c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">tram::Render::AddCylinder</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cylinder for a single frame.  <a href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">More...</a><br /></td></tr>\n<tr class=\"separator:a504da26659f9ff6e512e052ccd974ce8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">tram::Render::AddCube</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, float height, float radius, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws a cube for a single frame.  <a href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">More...</a><br /></td></tr>\n<tr class=\"separator:a80ac9a1f629a048bc89f3a816783db87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">tram::Render::AddText</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:acb324f6e78d295296dd65efb3d3071af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, in 3D space, for a single frame.  <a href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">More...</a><br /></td></tr>\n<tr class=\"separator:acb324f6e78d295296dd65efb3d3071af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">tram::Render::AddText</a> (float x, float y, const char *text, <a class=\"el\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color)</td></tr>\n<tr class=\"memdesc:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws text, on the screen, for a single frame.  <a href=\"namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13\">More...</a><br /></td></tr>\n<tr class=\"separator:af0419e9b99eb8d74ca41fd30f32e3e13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">tram::Render::RegisterVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new vertex format.  <a href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">More...</a><br /></td></tr>\n<tr class=\"separator:a4ee55080a07d32caee9f42ce596d7e18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">tram::Render::RegisterMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates a new material type.  <a href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">More...</a><br /></td></tr>\n<tr class=\"separator:a86482f81f22e15a053cf87bd77b863fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">tram::Render::FindVertexFormat</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already allocated vertex format by its name.  <a href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">More...</a><br /></td></tr>\n<tr class=\"separator:a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">tram::Render::FindMaterialType</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an already material type format by its name.  <a href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">More...</a><br /></td></tr>\n<tr class=\"separator:a94a9ceb0462c8a24b1912ffd179c33f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">tram::Render::GetVertexFormatName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> type)</td></tr>\n<tr class=\"memdesc:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated vertex format's name.  <a href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">More...</a><br /></td></tr>\n<tr class=\"separator:ac38b6a74526f6b0bcc15fb23dbc965b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">tram::Render::GetMaterialTypeName</a> (<a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type)</td></tr>\n<tr class=\"memdesc:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds an allocated material type's name.  <a href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">More...</a><br /></td></tr>\n<tr class=\"separator:a0356f2f33a144760b168fbc84d5c1931\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2render_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/render.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">render.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2render_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2animation_8h.html\">render/animation.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">struct </span>IDirect3DVertexBuffer9;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">struct </span>IDirect3DIndexBuffer9;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">struct </span>IDirect3DTexture9;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">   16</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">   17</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">   19</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">   20</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">Render</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">Project</a>(<span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; point, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&amp; result, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">ProjectInverse</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">SetSunDirection</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> direction, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">SetSunColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">SetAmbientColor</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">SetScreenSize</a>(<span class=\"keywordtype\">float</span> width, <span class=\"keywordtype\">float</span> height);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">SetOrthoRatio</a>(<span class=\"keywordtype\">float</span> ratio, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">SetViewFov</a>(<span class=\"keywordtype\">float</span> fov, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">GetViewFov</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">SetViewDistance</a>(<span class=\"keywordtype\">float</span> dist, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">GetViewDistance</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">SetViewPosition</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">SetViewRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">GetViewPosition</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">GetViewRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">layer_t</a> layer = 0);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">   48</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">COLOR_WHITE</a>  (1.0f, 1.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">   49</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">COLOR_RED</a>    (1.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">   50</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">COLOR_GREEN</a>  (0.0f, 1.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">   51</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">COLOR_BLUE</a>   (0.0f, 0.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">   52</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">COLOR_YELLOW</a> (1.0f, 1.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">   53</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">COLOR_PINK</a>   (1.0f, 0.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">   54</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">COLOR_CYAN</a>   (0.0f, 1.0f, 1.0f);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">   55</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">COLOR_BLACK</a>  (0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">   56</a></span><span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">COLOR_GRAY</a>   (0.3f, 0.3f, 0.3f);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">AddLine</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> from, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> to, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color);</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">AddLineMarker</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> location, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color);</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">AddLineAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> center, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> color);</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">AddSphere</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keywordtype\">float</span> radius, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color);</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">AddCylinder</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> radius, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color);</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">AddCube</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keywordtype\">float</span> height, <span class=\"keywordtype\">float</span> radius, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color);</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">AddText</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color = <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">COLOR_WHITE</a>);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">AddText</a>(<span class=\"keywordtype\">float</span> x, <span class=\"keywordtype\">float</span> y, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* text, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">color_t</a> color = <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">COLOR_WHITE</a>);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">   67</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">VertexFormats</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> {</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">   68</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">VERTEX_STATIC</a>,</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">   69</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">VERTEX_DYNAMIC</a>,</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">   70</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">VERTEX_SPRITE</a>,</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">   71</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">VERTEX_LINE</a>,</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">VERTEX_LAST</a></div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">   73</a></span>};</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">   75</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">MaterialTypes</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> {</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">   76</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">MATERIAL_TEXTURE</a>,</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">   77</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">MATERIAL_TEXTURE_ALPHA</a>,</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">   78</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">MATERIAL_LIGHTMAP</a>,</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">   79</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">MATERIAL_ENVIRONMENTMAP</a>,</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">   80</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">MATERIAL_MSDF</a>,</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">   81</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">MATERIAL_GLYPH</a>,</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">   82</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">MATERIAL_WATER</a>,</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">   83</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">MATERIAL_FLAT_COLOR</a>,</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">MATERIAL_LAST</a></div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">   85</a></span>};</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">   87</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">MaterialFilter</a> {</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">   88</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">FILTER_NEAREST</a>,</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">FILTER_LINEAR</a></div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">   90</a></span>};</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">   92</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">   93</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">l00</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">l1m1</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">l10</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">l11</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">l2m2</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">l2m1</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">l20</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">l21</a>, <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">l22</a>;</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>};</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">   96</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a>;</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">RegisterVertexFormat</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">RegisterMaterialType</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">FindVertexFormat</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">FindMaterialType</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">GetVertexFormatName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> type);</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">GetMaterialTypeName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type);</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a>; }</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">  109</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> {</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">  112</a></span>            uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">gl_vertex_array</a>;</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">  113</a></span>            uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">gl_vertex_buffer</a>;</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        };</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        <span class=\"keyword\">struct </span>{</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">  116</a></span>            IDirect3DVertexBuffer9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">d3d_vertex_buffer</a>;</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">  117</a></span>            uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">d3d_metadata</a>;</div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        };</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">  119</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">API::SWVertexArray</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">sw_vertex_array</a>;</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8\">  120</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    };</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>};</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a>; }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1indexarray__t.html\">  126</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a> {</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">  128</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">gl_index_buffer</a>;</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">  129</a></span>        IDirect3DIndexBuffer9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">d3d_index_buffer</a>;</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">  130</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">API::SWIndexArray</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">sw_index_array</a>;</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f\">  131</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    };</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>};</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1spritearray__t.html\">  135</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a> {</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">  137</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">vertex_array</a>;</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7\">  138</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    };</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    </div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <span class=\"comment\">// TODO: add whatever you need for the D3D renderer</span></div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <span class=\"comment\">// TODO: also add everything for the SW renderer</span></div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>};</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a>; }</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>D3DDrawListEntry; }</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>SWDrawListEntry; }</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">  149</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a> {</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">  151</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">API::GLDrawListEntry</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">gl</a>;</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">  152</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">API::D3DDrawListEntry</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">d3d</a>;</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">  153</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">API::SWDrawListEntry</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">sw</a>;</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626\">  154</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    };</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>};</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a>; }</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">  160</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a> {</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">  162</a></span>        uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">gl_texture_handle</a>;</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">  163</a></span>        IDirect3DTexture9* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">d3d_texture_handle</a>;</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">  164</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">API::SWTexture</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">sw_texture</a>;</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac\">  165</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    };</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>};</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a>; }</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>D3DLight; }</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>SWLight; }</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1light__t.html\">  173</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> {</div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">  175</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">API::GLLight</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">gl</a>;</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">  176</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">API::D3DLight</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">d3d</a>;</div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">  177</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">API::SWLight</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">sw</a>;</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f\">  178</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    };</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>};</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span> </div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a>; }</div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>D3DMaterial; }</div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span><span class=\"keyword\">namespace </span>API { <span class=\"keyword\">struct </span>SWMaterial; }</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1material__t.html\">  186</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a> {</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">  188</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">API::GLMaterial</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">gl</a>;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">  189</a></span>        API::D3DMaterial* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">d3d</a>;</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">  190</a></span>        API::SWMaterial* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">sw</a>;</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">  191</a></span>        <span class=\"keywordtype\">void</span>* <span class=\"keyword\">generic</span>;</div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    };</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>};</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>}</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a0356f2f33a144760b168fbc84d5c1931\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931\">tram::Render::GetMaterialTypeName</a></div><div class=\"ttdeci\">const char * GetMaterialTypeName(materialtype_t type)</div><div class=\"ttdoc\">Finds an allocated material type's name.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:521</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a0a15770929caa8b52620ed6b2cd3f731\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731\">tram::Render::GetViewDistance</a></div><div class=\"ttdeci\">float GetViewDistance(layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:233</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a1881266fc3e4ccfe6161b9f53816c1b4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4\">tram::Render::COLOR_BLACK</a></div><div class=\"ttdeci\">const color_t COLOR_BLACK(0.0f, 0.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a2aaf3e85135fa18435eb0d9412ca3a6d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d\">tram::Render::SetViewFov</a></div><div class=\"ttdeci\">void SetViewFov(float fov, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:215</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e\">tram::Render::MaterialTypes</a></div><div class=\"ttdeci\">MaterialTypes</div><div class=\"ttdef\"><b>Definition:</b> render.h:75</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605\">tram::Render::MATERIAL_LIGHTMAP</a></div><div class=\"ttdeci\">@ MATERIAL_LIGHTMAP</div><div class=\"ttdef\"><b>Definition:</b> render.h:78</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac\">tram::Render::MATERIAL_TEXTURE_ALPHA</a></div><div class=\"ttdeci\">@ MATERIAL_TEXTURE_ALPHA</div><div class=\"ttdef\"><b>Definition:</b> render.h:77</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f\">tram::Render::MATERIAL_LAST</a></div><div class=\"ttdeci\">@ MATERIAL_LAST</div><div class=\"ttdef\"><b>Definition:</b> render.h:84</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004\">tram::Render::MATERIAL_GLYPH</a></div><div class=\"ttdeci\">@ MATERIAL_GLYPH</div><div class=\"ttdef\"><b>Definition:</b> render.h:81</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943\">tram::Render::MATERIAL_FLAT_COLOR</a></div><div class=\"ttdeci\">@ MATERIAL_FLAT_COLOR</div><div class=\"ttdef\"><b>Definition:</b> render.h:83</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d\">tram::Render::MATERIAL_ENVIRONMENTMAP</a></div><div class=\"ttdeci\">@ MATERIAL_ENVIRONMENTMAP</div><div class=\"ttdef\"><b>Definition:</b> render.h:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc\">tram::Render::MATERIAL_WATER</a></div><div class=\"ttdeci\">@ MATERIAL_WATER</div><div class=\"ttdef\"><b>Definition:</b> render.h:82</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f\">tram::Render::MATERIAL_MSDF</a></div><div class=\"ttdeci\">@ MATERIAL_MSDF</div><div class=\"ttdef\"><b>Definition:</b> render.h:80</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632\">tram::Render::MATERIAL_TEXTURE</a></div><div class=\"ttdeci\">@ MATERIAL_TEXTURE</div><div class=\"ttdef\"><b>Definition:</b> render.h:76</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a32fb4b5bd9e12e48f08e6ff4ce8817b8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8\">tram::Render::color_t</a></div><div class=\"ttdeci\">vec3 color_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c\">tram::Render::FindVertexFormat</a></div><div class=\"ttdeci\">vertexformat_t FindVertexFormat(const char *name)</div><div class=\"ttdoc\">Finds an already allocated vertex format by its name.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:496</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a38f1da44cef9b7d17113d9204723e561\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561\">tram::Render::COLOR_GRAY</a></div><div class=\"ttdeci\">const color_t COLOR_GRAY(0.3f, 0.3f, 0.3f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a3d207aeb8d3bd302970a0ce72b15f98a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a\">tram::Render::COLOR_RED</a></div><div class=\"ttdeci\">const color_t COLOR_RED(1.0f, 0.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a432d184f3b358b4f7ee6daf055f9ef74\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74\">tram::Render::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes the rendering system.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:105</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a46842a211bc249ada03b3879ee9e7d61\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61\">tram::Render::COLOR_GREEN</a></div><div class=\"ttdeci\">const color_t COLOR_GREEN(0.0f, 1.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4e5691f40b84e848c0d9b19b285bf0e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></div><div class=\"ttdeci\">uint32_t vertexformat_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4ee55080a07d32caee9f42ce596d7e18\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18\">tram::Render::RegisterVertexFormat</a></div><div class=\"ttdeci\">vertexformat_t RegisterVertexFormat(const char *name)</div><div class=\"ttdoc\">Allocates a new vertex format.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:478</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a504da26659f9ff6e512e052ccd974ce8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8\">tram::Render::AddCylinder</a></div><div class=\"ttdeci\">void AddCylinder(vec3 pos, float height, float radius, color_t color)</div><div class=\"ttdoc\">Draws a cylinder for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:330</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a528da7221f08fab1b6d5e3b3cacdb8fc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc\">tram::Render::COLOR_YELLOW</a></div><div class=\"ttdeci\">const color_t COLOR_YELLOW(1.0f, 1.0f, 0.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a542bb444bfd6387612406c107509bbff\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff\">tram::Render::SetSunDirection</a></div><div class=\"ttdeci\">void SetSunDirection(color_t direction, layer_t layer)</div><div class=\"ttdoc\">Sets the sun direction.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:183</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8\">tram::Render::VertexFormats</a></div><div class=\"ttdeci\">VertexFormats</div><div class=\"ttdef\"><b>Definition:</b> render.h:67</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051\">tram::Render::VERTEX_SPRITE</a></div><div class=\"ttdeci\">@ VERTEX_SPRITE</div><div class=\"ttdef\"><b>Definition:</b> render.h:70</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe\">tram::Render::VERTEX_DYNAMIC</a></div><div class=\"ttdeci\">@ VERTEX_DYNAMIC</div><div class=\"ttdef\"><b>Definition:</b> render.h:69</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77\">tram::Render::VERTEX_STATIC</a></div><div class=\"ttdeci\">@ VERTEX_STATIC</div><div class=\"ttdef\"><b>Definition:</b> render.h:68</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481\">tram::Render::VERTEX_LAST</a></div><div class=\"ttdeci\">@ VERTEX_LAST</div><div class=\"ttdef\"><b>Definition:</b> render.h:72</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d\">tram::Render::VERTEX_LINE</a></div><div class=\"ttdeci\">@ VERTEX_LINE</div><div class=\"ttdef\"><b>Definition:</b> render.h:71</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a5862ead09843f2489307cec433956d17\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17\">tram::Render::Render</a></div><div class=\"ttdeci\">void Render()</div><div class=\"ttdoc\">Renders a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:157</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a588afc5ab26e5dea5924df08c70f95bf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf\">tram::Render::GetViewRotation</a></div><div class=\"ttdeci\">quat GetViewRotation(layer_t layer)</div><div class=\"ttdoc\">Returns the view rotation for a given layer.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:261</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a67eb4708222066d5a516c5eff9a14fa7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7\">tram::Render::Project</a></div><div class=\"ttdeci\">void Project(const vec3 &amp;point, vec3 &amp;result, layer_t layer)</div><div class=\"ttdoc\">Projects a point into screen coordinates.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:438</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a6957c2557d41fe2fb76646cea2266eeb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb\">tram::Render::SetViewDistance</a></div><div class=\"ttdeci\">void SetViewDistance(float dist, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:229</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a80ac9a1f629a048bc89f3a816783db87\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87\">tram::Render::AddCube</a></div><div class=\"ttdeci\">void AddCube(vec3 pos, float height, float radius, color_t color)</div><div class=\"ttdoc\">Draws a cube for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:336</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a81a4ef257882a1513b6077fd05d1d1c7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7\">tram::Render::SetViewRotation</a></div><div class=\"ttdeci\">void SetViewRotation(quat rotation, layer_t layer)</div><div class=\"ttdoc\">Sets the view rotation.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:250</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a844a096223a3c0f236c7ef8f304a24f8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8\">tram::Render::SetViewPosition</a></div><div class=\"ttdeci\">void SetViewPosition(vec3 position, layer_t layer)</div><div class=\"ttdoc\">Sets the view position.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:242</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a86482f81f22e15a053cf87bd77b863fa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa\">tram::Render::RegisterMaterialType</a></div><div class=\"ttdeci\">materialtype_t RegisterMaterialType(const char *name)</div><div class=\"ttdoc\">Allocates a new material type.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:487</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a8804912a4838fc7b29819738b86f2b68\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68\">tram::Render::SetSunColor</a></div><div class=\"ttdeci\">void SetSunColor(color_t color, layer_t layer)</div><div class=\"ttdoc\">Sets the sun color.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:191</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a91420cfff2ed4a2548d27a0924000187\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187\">tram::Render::GetViewFov</a></div><div class=\"ttdeci\">float GetViewFov(layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:220</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a92b94ac310d4c8df9a4294518ffd75c8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8\">tram::Render::layer_t</a></div><div class=\"ttdeci\">uint32_t layer_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a94a9ceb0462c8a24b1912ffd179c33f7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7\">tram::Render::FindMaterialType</a></div><div class=\"ttdeci\">materialtype_t FindMaterialType(const char *name)</div><div class=\"ttdoc\">Finds an already material type format by its name.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:505</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9be8283c1665f7d42c97367d857d43cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></div><div class=\"ttdeci\">uint32_t materialtype_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9bece9ac513eed3675e8fc05dde16e2c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c\">tram::Render::COLOR_CYAN</a></div><div class=\"ttdeci\">const color_t COLOR_CYAN(0.0f, 1.0f, 1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa08fcc8a83e73c8896423742971d97fd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd\">tram::Render::COLOR_PINK</a></div><div class=\"ttdeci\">const color_t COLOR_PINK(1.0f, 0.0f, 1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa2585f6dc9fbeddf62db686a5dbafbea\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea\">tram::Render::AddLineAABB</a></div><div class=\"ttdeci\">void AddLineAABB(vec3 min, vec3 max, vec3 center, quat rotation, vec3 color)</div><div class=\"ttdoc\">Draws an AABB box for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:279</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aa988a06a114b75baae33e244628ecd32\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32\">tram::Render::SetOrthoRatio</a></div><div class=\"ttdeci\">void SetOrthoRatio(float ratio, layer_t layer)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:224</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aab519c3dc6ead26c1a7695e4c3b5501c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c\">tram::Render::MaterialFilter</a></div><div class=\"ttdeci\">MaterialFilter</div><div class=\"ttdef\"><b>Definition:</b> render.h:87</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c\">tram::Render::FILTER_NEAREST</a></div><div class=\"ttdeci\">@ FILTER_NEAREST</div><div class=\"ttdef\"><b>Definition:</b> render.h:88</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7\">tram::Render::FILTER_LINEAR</a></div><div class=\"ttdeci\">@ FILTER_LINEAR</div><div class=\"ttdef\"><b>Definition:</b> render.h:89</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_aaf8ef81eae0da772762ff835a3a24536\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536\">tram::Render::AddLine</a></div><div class=\"ttdeci\">void AddLine(vec3 from, vec3 to, vec3 color)</div><div class=\"ttdoc\">Draws a line for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:266</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_abcb118a759504ad9bc0993ca69f7231e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e\">tram::Render::SetScreenSize</a></div><div class=\"ttdeci\">void SetScreenSize(float width, float height)</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:204</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac2545e14772852a87dae9066123c2646\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646\">tram::Render::COLOR_BLUE</a></div><div class=\"ttdeci\">const color_t COLOR_BLUE(0.0f, 0.0f, 1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac38b6a74526f6b0bcc15fb23dbc965b6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6\">tram::Render::GetVertexFormatName</a></div><div class=\"ttdeci\">const char * GetVertexFormatName(vertexformat_t type)</div><div class=\"ttdoc\">Finds an allocated vertex format's name.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:514</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac3b0b62b8ab1781496fd3a2ac86eaa7a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a\">tram::Render::COLOR_WHITE</a></div><div class=\"ttdeci\">const color_t COLOR_WHITE(1.0f, 1.0f, 1.0f)</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac8426b2175dd44cfee749c08ae81583c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c\">tram::Render::AddSphere</a></div><div class=\"ttdeci\">void AddSphere(vec3 pos, float radius, color_t color)</div><div class=\"ttdoc\">Draws a sphere for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:320</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_acb0e80ad32fe24d60dc62e58017b37b2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2\">tram::Render::SetAmbientColor</a></div><div class=\"ttdeci\">void SetAmbientColor(color_t color, layer_t layer)</div><div class=\"ttdoc\">Sets the ambient color.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:199</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_acb324f6e78d295296dd65efb3d3071af\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af\">tram::Render::AddText</a></div><div class=\"ttdeci\">void AddText(vec3 pos, const char *text, color_t color)</div><div class=\"ttdoc\">Draws text, in 3D space, for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:341</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_acfbfc3fc3b9bcc20aba46673364bfa6b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b\">tram::Render::GetViewPosition</a></div><div class=\"ttdeci\">vec3 GetViewPosition(layer_t layer)</div><div class=\"ttdoc\">Returns the view position for a given layer.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:256</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_adc772ee58f3700260f2f155f334fd6d5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">tram::Render::sphericalharmonic_t</a></div><div class=\"ttdeci\">SphericalHarmonic sphericalharmonic_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae5ab2f07c068f59f0ded62a742e05fdf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf\">tram::Render::AddLineMarker</a></div><div class=\"ttdeci\">void AddLineMarker(vec3 location, vec3 color)</div><div class=\"ttdoc\">Draws a cross marker for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:272</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_afe4a18573155f61186484e55955c6dac\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac\">tram::Render::ProjectInverse</a></div><div class=\"ttdeci\">vec3 ProjectInverse(vec3 point, layer_t layer)</div><div class=\"ttdoc\">Reverses screen coordinates into world coordinates.</div><div class=\"ttdef\"><b>Definition:</b> render.cpp:447</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"arender_2animation_8h_html\"><div class=\"ttname\"><a href=\"render_2animation_8h.html\">animation.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_d3_d_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></div><div class=\"ttdef\"><b>Definition:</b> direct3d.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> drawlist.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></div><div class=\"ttdef\"><b>Definition:</b> light.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_g_l_material_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></div><div class=\"ttdef\"><b>Definition:</b> material.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:65</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:57</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:92</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_a1025a228f68a93c7b8615b88fd396c48\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">tram::Render::SphericalHarmonic::l21</a></div><div class=\"ttdeci\">vec3 l21</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_a2fde1bd3674e6c203b2a2e7c8d8e07e8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">tram::Render::SphericalHarmonic::l00</a></div><div class=\"ttdeci\">vec3 l00</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_a31d249ba90d9ca39cd367cb245a60ebd\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">tram::Render::SphericalHarmonic::l2m2</a></div><div class=\"ttdeci\">vec3 l2m2</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_a4e2b108386258d38350834e9a27b0fa5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">tram::Render::SphericalHarmonic::l10</a></div><div class=\"ttdeci\">vec3 l10</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_a7092c1cfbcf8e874806928c2d2c238cb\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">tram::Render::SphericalHarmonic::l1m1</a></div><div class=\"ttdeci\">vec3 l1m1</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_aaabe11128777b6ba8ff82ab0e66e6bf3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">tram::Render::SphericalHarmonic::l20</a></div><div class=\"ttdeci\">vec3 l20</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_aadeb8364aa07f05f2205f45edd341156\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">tram::Render::SphericalHarmonic::l11</a></div><div class=\"ttdeci\">vec3 l11</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_ac053c1c3de62cd1e3437549721d4d1ab\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">tram::Render::SphericalHarmonic::l22</a></div><div class=\"ttdeci\">vec3 l22</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_spherical_harmonic_html_ad8260971060597fb0edb9c00677ac751\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">tram::Render::SphericalHarmonic::l2m1</a></div><div class=\"ttdeci\">vec3 l2m1</div><div class=\"ttdef\"><b>Definition:</b> render.h:93</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:149</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html_a926aab37c6029049aa1910bbee5f9a47\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">tram::Render::drawlistentry_t::gl</a></div><div class=\"ttdeci\">API::GLDrawListEntry * gl</div><div class=\"ttdef\"><b>Definition:</b> render.h:151</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html_aa19e9354b8948dc1e47a4c5983cad9b2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">tram::Render::drawlistentry_t::sw</a></div><div class=\"ttdeci\">API::SWDrawListEntry * sw</div><div class=\"ttdef\"><b>Definition:</b> render.h:153</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1drawlistentry__t_html_acb9edd62e1b55899b00774b19239001a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">tram::Render::drawlistentry_t::d3d</a></div><div class=\"ttdeci\">API::D3DDrawListEntry * d3d</div><div class=\"ttdef\"><b>Definition:</b> render.h:152</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1indexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:126</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1indexarray__t_html_a0446d36e56fb1aefc070c9b5b0ee64a3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">tram::Render::indexarray_t::d3d_index_buffer</a></div><div class=\"ttdeci\">IDirect3DIndexBuffer9 * d3d_index_buffer</div><div class=\"ttdef\"><b>Definition:</b> render.h:129</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1indexarray__t_html_a8ad83d6138df2d320f3ada45e47ac8de\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">tram::Render::indexarray_t::sw_index_array</a></div><div class=\"ttdeci\">API::SWIndexArray * sw_index_array</div><div class=\"ttdef\"><b>Definition:</b> render.h:130</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1indexarray__t_html_ab8718d1b7ff7dfb2e5dfd4bd4feff552\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">tram::Render::indexarray_t::gl_index_buffer</a></div><div class=\"ttdeci\">uint32_t gl_index_buffer</div><div class=\"ttdef\"><b>Definition:</b> render.h:128</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:173</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html_a0f207f290e0ca7fbdf9df1a3232332aa\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">tram::Render::light_t::gl</a></div><div class=\"ttdeci\">API::GLLight * gl</div><div class=\"ttdef\"><b>Definition:</b> render.h:175</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html_a79b25b22803214088591ba7e3f9816d5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">tram::Render::light_t::d3d</a></div><div class=\"ttdeci\">API::D3DLight * d3d</div><div class=\"ttdef\"><b>Definition:</b> render.h:176</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html_a8884681b5c37bd90c77607fe04738d27\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">tram::Render::light_t::sw</a></div><div class=\"ttdeci\">API::SWLight * sw</div><div class=\"ttdef\"><b>Definition:</b> render.h:177</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:186</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html_a5e46477c4edac192b6977a69bf2cda1b\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">tram::Render::material_t::sw</a></div><div class=\"ttdeci\">API::SWMaterial * sw</div><div class=\"ttdef\"><b>Definition:</b> render.h:190</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html_a8a2afd08577348cd6d892f0fe0f2743f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">tram::Render::material_t::gl</a></div><div class=\"ttdeci\">API::GLMaterial * gl</div><div class=\"ttdef\"><b>Definition:</b> render.h:188</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1material__t_html_a8fb78cd8900865b9c344ca0a026e15d5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">tram::Render::material_t::d3d</a></div><div class=\"ttdeci\">API::D3DMaterial * d3d</div><div class=\"ttdef\"><b>Definition:</b> render.h:189</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1spritearray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:135</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1spritearray__t_html_a3a692b3332da76d0b2202f8831ae77b5\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">tram::Render::spritearray_t::vertex_array</a></div><div class=\"ttdeci\">vertexarray_t vertex_array</div><div class=\"ttdef\"><b>Definition:</b> render.h:137</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1texturehandle__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:160</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1texturehandle__t_html_a43671e152005e2c0623b3492672751ee\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">tram::Render::texturehandle_t::gl_texture_handle</a></div><div class=\"ttdeci\">uint32_t gl_texture_handle</div><div class=\"ttdef\"><b>Definition:</b> render.h:162</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1texturehandle__t_html_a52a3d65c111609ceea98acc5efcd735e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">tram::Render::texturehandle_t::d3d_texture_handle</a></div><div class=\"ttdeci\">IDirect3DTexture9 * d3d_texture_handle</div><div class=\"ttdef\"><b>Definition:</b> render.h:163</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1texturehandle__t_html_ac29891059d4c6b816fa4a6e515f1bced\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">tram::Render::texturehandle_t::sw_texture</a></div><div class=\"ttdeci\">API::SWTexture * sw_texture</div><div class=\"ttdef\"><b>Definition:</b> render.h:164</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:109</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html_a58e132836686f81374a161a1a4b79a7f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">tram::Render::vertexarray_t::sw_vertex_array</a></div><div class=\"ttdeci\">API::SWVertexArray * sw_vertex_array</div><div class=\"ttdef\"><b>Definition:</b> render.h:119</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html_a5f4fecb59b0b4c52b656d6bf8f8a5f8e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">tram::Render::vertexarray_t::d3d_vertex_buffer</a></div><div class=\"ttdeci\">IDirect3DVertexBuffer9 * d3d_vertex_buffer</div><div class=\"ttdef\"><b>Definition:</b> render.h:116</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html_a823c61d8f42e8d1f378d8e7208163371\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">tram::Render::vertexarray_t::gl_vertex_array</a></div><div class=\"ttdeci\">uint32_t gl_vertex_array</div><div class=\"ttdef\"><b>Definition:</b> render.h:112</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html_abf17d9003261e94d8d26b6f32e29b23f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">tram::Render::vertexarray_t::gl_vertex_buffer</a></div><div class=\"ttdeci\">uint32_t gl_vertex_buffer</div><div class=\"ttdef\"><b>Definition:</b> render.h:113</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1vertexarray__t_html_ace7fc23faf01f8916c670a611c9997be\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">tram::Render::vertexarray_t::d3d_metadata</a></div><div class=\"ttdeci\">uint32_t d3d_metadata</div><div class=\"ttdef\"><b>Definition:</b> render.h:117</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2sprite_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/sprite.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"async_8h_source.html\">framework/async.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n<code>#include &lt;sstream&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aa7ba6e3579e4897ccc9c2e5f8d033b20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"render_2sprite_8cpp.html#aa7ba6e3579e4897ccc9c2e5f8d033b20\">sprite_list</a> (&quot;Sprite name list&quot;, RESOURCE_LIMIT_SPRITE)</td></tr>\n<tr class=\"separator:aa7ba6e3579e4897ccc9c2e5f8d033b20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Function Documentation</h2>\n<a id=\"aa7ba6e3579e4897ccc9c2e5f8d033b20\" name=\"aa7ba6e3579e4897ccc9c2e5f8d033b20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa7ba6e3579e4897ccc9c2e5f8d033b20\">&#9670;&nbsp;</a></span>sprite_list()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a>&lt; <a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> * &gt; sprite_list </td>\n          <td>(</td>\n          <td class=\"paramtype\">&quot;Sprite name list&quot;&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">RESOURCE_LIMIT_SPRITE&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2sprite_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/sprite.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sprite.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"render_2sprite_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_sprite.html\" title=\"Sprite resource.\">Sprite</a> resource.  <a href=\"classtram_1_1_render_1_1_sprite.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/render_2sprite_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/sprite.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sprite.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"render_2sprite_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_SPRITE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_SPRITE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span>    </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">class </span>Material;</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">   12</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">   13</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">offset_x</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">   14</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">offset_y</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">   15</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">width</a>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">   16</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">height</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">   17</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">midpoint_x</a>;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">   18</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">midpoint_y</a>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">   19</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">border_h</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">   20</a></span>    uint16_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">border_v</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html\">   23</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">   25</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">Sprite</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">   26</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">GetMaterial</a> ()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">material</a>; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">   27</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">SetMaterial</a> (<a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* mat) { <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">material</a> = mat; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">LoadFromMemory</a>();</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">   32</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">Unload</a>() {}</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">   34</a></span>    <span class=\"keyword\">const</span> std::vector&lt;SpriteFrame&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">GetFrames</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">frames</a>; };</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_sprite.html\">Sprite</a>* <a class=\"code hl_function\" href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">   38</a></span>    std::vector&lt;SpriteFrame&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">frames</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">   39</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">material</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>}</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_SPRITE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_material_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_material.html\">tram::Render::Material</a></div><div class=\"ttdoc\">Material resource.</div><div class=\"ttdef\"><b>Definition:</b> material.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html\">tram::Render::Sprite</a></div><div class=\"ttdoc\">Sprite resource.</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a0bac764220b653067aaed890943d28cc\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc\">tram::Render::Sprite::SetMaterial</a></div><div class=\"ttdeci\">void SetMaterial(Material *mat)</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a128d2e728b4a7b035b2a2436ad83a77a\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a\">tram::Render::Sprite::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:54</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a163aa5c3d09db10acb35f4446705faa4\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4\">tram::Render::Sprite::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a1fb88f43158526d7330e36bdbba2f86c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c\">tram::Render::Sprite::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a259105984bbeb254bb9124fba78a2596\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596\">tram::Render::Sprite::GetFrames</a></div><div class=\"ttdeci\">const std::vector&lt; SpriteFrame &gt; &amp; GetFrames()</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a661555af281cb553323a07a3bf39c08e\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e\">tram::Render::Sprite::Find</a></div><div class=\"ttdeci\">static Sprite * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> sprite.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_a7c98ddbe57968a26bb8bb5f6a86ca359\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359\">tram::Render::Sprite::GetMaterial</a></div><div class=\"ttdeci\">Material * GetMaterial() const</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_aca24e7f82749a755a8118a46b3729a3b\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b\">tram::Render::Sprite::material</a></div><div class=\"ttdeci\">Material * material</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_ad1f3d4b42af2c6ae60e8eccac3368d4c\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c\">tram::Render::Sprite::frames</a></div><div class=\"ttdeci\">std::vector&lt; SpriteFrame &gt; frames</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_1_1_sprite_html_ad6ccadbf3c461fc6a579506dab6d40b9\"><div class=\"ttname\"><a href=\"classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9\">tram::Render::Sprite::Sprite</a></div><div class=\"ttdeci\">Sprite(UID name)</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></div><div class=\"ttdef\"><b>Definition:</b> sprite.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_a2bc1e1c80b941539bf4bd98f0ad01ed6\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">tram::Render::SpriteFrame::border_v</a></div><div class=\"ttdeci\">uint16_t border_v</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_a70f2bdc216f92de2f441546154a47114\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">tram::Render::SpriteFrame::height</a></div><div class=\"ttdeci\">uint16_t height</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_a8ed7da0b5f25a4b6c74db2864ba0162e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">tram::Render::SpriteFrame::offset_y</a></div><div class=\"ttdeci\">uint16_t offset_y</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_a9eb4dd892a159105c8cd75208b151b64\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">tram::Render::SpriteFrame::midpoint_y</a></div><div class=\"ttdeci\">uint16_t midpoint_y</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_ab4657070362abc108e5838bb7c1c20e0\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">tram::Render::SpriteFrame::offset_x</a></div><div class=\"ttdeci\">uint16_t offset_x</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_ab6f18d025d640c62966bd57c417fdaa7\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">tram::Render::SpriteFrame::border_h</a></div><div class=\"ttdeci\">uint16_t border_h</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_ae3a9270cdf9fc55044ab6eea633efb58\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">tram::Render::SpriteFrame::width</a></div><div class=\"ttdeci\">uint16_t width</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_frame_html_ae60529c0aba231cf453f559d756f3f03\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">tram::Render::SpriteFrame::midpoint_x</a></div><div class=\"ttdeci\">uint16_t midpoint_x</div><div class=\"ttdef\"><b>Definition:</b> sprite.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/renderer_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/renderer.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">renderer.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">render/vertices.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">tram::Render::RegisteredVertexDefinition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">tram::Render::RegisterVertexDefinition</a> (vertexformat_t format, VertexDefinition definition)</td></tr>\n<tr class=\"memdesc:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> for a specified vertex format.  <a href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">More...</a><br /></td></tr>\n<tr class=\"separator:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">VertexDefinition&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">tram::Render::GetVertexDefinition</a> (vertexformat_t format)</td></tr>\n<tr class=\"memdesc:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns a previously registered <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>.  <a href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">More...</a><br /></td></tr>\n<tr class=\"separator:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/renderer_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/renderer.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">renderer.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"renderer_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Atributes for vertex buffer vertices.  <a href=\"structtram_1_1_render_1_1_vertex_attribute.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">tram::Render::renderflags</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">tram::Render::FLAG_NO_RENDER</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">tram::Render::FLAG_RENDER</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">tram::Render::FLAG_DRAW_INDEXED</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">tram::Render::FLAG_REVERSE_SORT</a> = 8\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">tram::Render::FLAG_TRANSPARENT</a> = 16\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">tram::Render::FLAG_NO_DEPTH_TEST</a> = 32\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">tram::Render::FLAG_NO_DIRECTIONAL</a> = 64\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">tram::Render::FLAG_DRAW_LINES</a> = 128\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">tram::Render::FLAG_DISABLE_LIGHTING</a> = 256\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">tram::Render::FLAG_NO_DEBUG</a> = 512\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">tram::Render::FLAG_USE_AABB</a> = 1024\n<br />\n }</td></tr>\n<tr class=\"memdesc:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Flags for DrawListObjects.  <a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">More...</a><br /></td></tr>\n<tr class=\"separator:ac048699f6dc8dc5b8681c8aa3ac65d9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac973dc59905532e29e79841ae76af894\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render::ColorMode</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">tram::Render::COLORMODE_R</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">tram::Render::COLORMODE_RG</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">tram::Render::COLORMODE_RGB</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">tram::Render::COLORMODE_RGBA</a>\n }</td></tr>\n<tr class=\"memdesc:ac973dc59905532e29e79841ae76af894\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Texture color mode.  <a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">More...</a><br /></td></tr>\n<tr class=\"separator:ac973dc59905532e29e79841ae76af894\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render::TextureFilter</a> { <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">tram::Render::TEXTUREFILTER_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">tram::Render::TEXTUREFILTER_LINEAR</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">tram::Render::TEXTUREFILTER_LINEAR_MIPMAPPED</a>\n }</td></tr>\n<tr class=\"memdesc:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Texture filters.  <a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">More...</a><br /></td></tr>\n<tr class=\"separator:ad3c2cb5af20e13497cc81f62d22b430c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">tram::Render::RegisterVertexDefinition</a> (vertexformat_t format, VertexDefinition definition)</td></tr>\n<tr class=\"memdesc:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> for a specified vertex format.  <a href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">More...</a><br /></td></tr>\n<tr class=\"separator:a457bd7e3ddb309251cb2cd0ffe1a5b37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">VertexDefinition&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">tram::Render::GetVertexDefinition</a> (vertexformat_t format)</td></tr>\n<tr class=\"memdesc:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns a previously registered <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>.  <a href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">More...</a><br /></td></tr>\n<tr class=\"separator:ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/renderer_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/renderer.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">renderer.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"renderer_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_RENDERER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_RENDERER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">   11</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">renderflags</a>: uint32_t {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">   12</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">FLAG_NO_RENDER</a> = 0,             <span class=\"comment\">//&lt; Object is not rendered.</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">FLAG_RENDER</a> = 1,                <span class=\"comment\">//&lt; Object is rendered.</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">FLAG_DRAW_INDEXED</a> = 4,          <span class=\"comment\">//&lt; Vertex buffer has indices.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">FLAG_REVERSE_SORT</a> = 8,          <span class=\"comment\">//&lt; Furthest objects are rendered first.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">FLAG_TRANSPARENT</a> = 16,          <span class=\"comment\">//&lt; Object is transparent and is rendered last.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">FLAG_NO_DEPTH_TEST</a> = 32,        <span class=\"comment\">//&lt; Object is rendered on top of other objects.</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">FLAG_NO_DIRECTIONAL</a> = 64,       <span class=\"comment\">//&lt; Object is not lit by directional lighting.</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">FLAG_DRAW_LINES</a> = 128,          <span class=\"comment\">//&lt; Object is rendered as lines. Otherwise rendered as triangles.</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">FLAG_DISABLE_LIGHTING</a> = 256,    <span class=\"comment\">//&lt; Object is rendered without lighting.</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">FLAG_NO_DEBUG</a> = 512,            <span class=\"comment\">//&lt; Object does not get debugged.</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">FLAG_USE_AABB</a> = 1024            <span class=\"comment\">//&lt; Object has an AABB that can be used for filtering.</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">   24</a></span>};</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">   27</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">ColorMode</a> {</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">   28</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">COLORMODE_R</a>,    <span class=\"comment\">//&lt; Contains only red channel, pixel is 1 byte long.</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">   29</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">COLORMODE_RG</a>,   <span class=\"comment\">//&lt; Contains red and green channels, pixel is 2 bytes long.</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">   30</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">COLORMODE_RGB</a>,  <span class=\"comment\">//&lt; Contains red, green and blue channels, pixel is 3 bytes long.</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">COLORMODE_RGBA</a>  <span class=\"comment\">//&lt; Contains red, green, blue and alpha channels, pixel is 4 bytes long.</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">   32</a></span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">   35</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">TextureFilter</a> {</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">   36</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">TEXTUREFILTER_NEAREST</a>,</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">   37</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">TEXTUREFILTER_LINEAR</a>,           <span class=\"comment\">//&lt; Textures use linear filtering.</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">TEXTUREFILTER_LINEAR_MIPMAPPED</a>  <span class=\"comment\">//&lt; Textures use linear filtering and are mipmapped.</span></div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">   39</a></span>};</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">   42</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a> {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keyword\">enum</span> {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">   44</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">FLOAT32</a>,</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">   45</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">INT32</a>,</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">UINT32</a></div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">   47</a></span>    } <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">type</a>;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">enum</span> {</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">   49</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">FFP_IGNORE</a>,</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">   50</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">FFP_POSITION</a>,</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">   51</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">FFP_NORMAL</a>,</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">   52</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">FFP_COLOR</a>,</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">   53</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">FFP_TEXTURE</a>,</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">   54</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">FFP_LIGHTMAP</a>,</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">   55</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">FFP_BONE_INDEX</a>,</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">FFP_BONE_WEIGHT</a></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">   57</a></span>    } <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">ffp_type</a>;         <span class=\"comment\">//&lt; Tells the FFP how to interpret this attribute.</span></div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">   58</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">size</a>;      <span class=\"comment\">//&lt; Size of the attribute, in bytes.</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">   59</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">stride</a>;    <span class=\"comment\">//&lt; Distance between same attribute in different vertices, in bytes.</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">   60</a></span>    uint64_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">offset</a>;    <span class=\"comment\">//&lt; Offset of beginning of attribute in vertex buffer.</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>};</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">   63</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> {</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">   64</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">attributes</a>;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">   65</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">attribute_count</a>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>};</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">RegisterVertexDefinition</a> (<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> definition);</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">GetVertexDefinition</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format);</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>}</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_RENDERER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a457bd7e3ddb309251cb2cd0ffe1a5b37\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37\">tram::Render::RegisterVertexDefinition</a></div><div class=\"ttdeci\">void RegisterVertexDefinition(vertexformat_t format, VertexDefinition definition)</div><div class=\"ttdoc\">Registers a VertexDefinition for a specified vertex format.</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:61</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4e5691f40b84e848c0d9b19b285bf0e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></div><div class=\"ttdeci\">uint32_t vertexformat_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c\">tram::Render::renderflags</a></div><div class=\"ttdeci\">renderflags</div><div class=\"ttdoc\">Flags for DrawListObjects.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4\">tram::Render::FLAG_NO_RENDER</a></div><div class=\"ttdeci\">@ FLAG_NO_RENDER</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab\">tram::Render::FLAG_DRAW_INDEXED</a></div><div class=\"ttdeci\">@ FLAG_DRAW_INDEXED</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9\">tram::Render::FLAG_NO_DEBUG</a></div><div class=\"ttdeci\">@ FLAG_NO_DEBUG</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9\">tram::Render::FLAG_REVERSE_SORT</a></div><div class=\"ttdeci\">@ FLAG_REVERSE_SORT</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364\">tram::Render::FLAG_USE_AABB</a></div><div class=\"ttdeci\">@ FLAG_USE_AABB</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223\">tram::Render::FLAG_DISABLE_LIGHTING</a></div><div class=\"ttdeci\">@ FLAG_DISABLE_LIGHTING</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4\">tram::Render::FLAG_RENDER</a></div><div class=\"ttdeci\">@ FLAG_RENDER</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282\">tram::Render::FLAG_NO_DEPTH_TEST</a></div><div class=\"ttdeci\">@ FLAG_NO_DEPTH_TEST</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a\">tram::Render::FLAG_TRANSPARENT</a></div><div class=\"ttdeci\">@ FLAG_TRANSPARENT</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf\">tram::Render::FLAG_NO_DIRECTIONAL</a></div><div class=\"ttdeci\">@ FLAG_NO_DIRECTIONAL</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a\">tram::Render::FLAG_DRAW_LINES</a></div><div class=\"ttdeci\">@ FLAG_DRAW_LINES</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894\">tram::Render::ColorMode</a></div><div class=\"ttdeci\">ColorMode</div><div class=\"ttdoc\">Texture color mode.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda\">tram::Render::COLORMODE_RG</a></div><div class=\"ttdeci\">@ COLORMODE_RG</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:29</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519\">tram::Render::COLORMODE_R</a></div><div class=\"ttdeci\">@ COLORMODE_R</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae\">tram::Render::COLORMODE_RGBA</a></div><div class=\"ttdeci\">@ COLORMODE_RGBA</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc\">tram::Render::COLORMODE_RGB</a></div><div class=\"ttdeci\">@ COLORMODE_RGB</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:30</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad3c2cb5af20e13497cc81f62d22b430c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c\">tram::Render::TextureFilter</a></div><div class=\"ttdeci\">TextureFilter</div><div class=\"ttdoc\">Texture filters.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef\">tram::Render::TEXTUREFILTER_LINEAR</a></div><div class=\"ttdeci\">@ TEXTUREFILTER_LINEAR</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91\">tram::Render::TEXTUREFILTER_LINEAR_MIPMAPPED</a></div><div class=\"ttdeci\">@ TEXTUREFILTER_LINEAR_MIPMAPPED</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647\">tram::Render::TEXTUREFILTER_NEAREST</a></div><div class=\"ttdeci\">@ TEXTUREFILTER_NEAREST</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:36</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ae7cb3ec82d35f3a4b5bf4fbb7f15a429\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429\">tram::Render::GetVertexDefinition</a></div><div class=\"ttdeci\">VertexDefinition GetVertexDefinition(vertexformat_t format)</div><div class=\"ttdoc\">Returns a previously registered VertexDefinition.</div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:76</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></div><div class=\"ttdoc\">Atributes for vertex buffer vertices.</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a244d28f089f6ad9cda2ca2dd04dd41ca\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">tram::Render::VertexAttribute::stride</a></div><div class=\"ttdeci\">uint32_t stride</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e41ef607217ea0dd93110df26b9d672\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">tram::Render::VertexAttribute::type</a></div><div class=\"ttdeci\">enum tram::Render::VertexAttribute::@82 type</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">tram::Render::VertexAttribute::FFP_COLOR</a></div><div class=\"ttdeci\">@ FFP_COLOR</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">tram::Render::VertexAttribute::FFP_POSITION</a></div><div class=\"ttdeci\">@ FFP_POSITION</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">tram::Render::VertexAttribute::FFP_BONE_INDEX</a></div><div class=\"ttdeci\">@ FFP_BONE_INDEX</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">tram::Render::VertexAttribute::FFP_IGNORE</a></div><div class=\"ttdeci\">@ FFP_IGNORE</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">tram::Render::VertexAttribute::FFP_LIGHTMAP</a></div><div class=\"ttdeci\">@ FFP_LIGHTMAP</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">tram::Render::VertexAttribute::FFP_BONE_WEIGHT</a></div><div class=\"ttdeci\">@ FFP_BONE_WEIGHT</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">tram::Render::VertexAttribute::FFP_TEXTURE</a></div><div class=\"ttdeci\">@ FFP_TEXTURE</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">tram::Render::VertexAttribute::FFP_NORMAL</a></div><div class=\"ttdeci\">@ FFP_NORMAL</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a4b9b3ff2c6594e5c1cecbc5d362ab4b8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">tram::Render::VertexAttribute::size</a></div><div class=\"ttdeci\">uint32_t size</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">tram::Render::VertexAttribute::INT32</a></div><div class=\"ttdeci\">@ INT32</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:45</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">tram::Render::VertexAttribute::FLOAT32</a></div><div class=\"ttdeci\">@ FLOAT32</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">tram::Render::VertexAttribute::UINT32</a></div><div class=\"ttdeci\">@ UINT32</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_a5f80d9935ba524ba91ac7a76ad40ea63\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">tram::Render::VertexAttribute::offset</a></div><div class=\"ttdeci\">uint64_t offset</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_attribute_html_aee67a88dcdc860897f24790716674422\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">tram::Render::VertexAttribute::ffp_type</a></div><div class=\"ttdeci\">enum tram::Render::VertexAttribute::@83 ffp_type</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_definition_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a></div><div class=\"ttdef\"><b>Definition:</b> renderer.h:63</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_definition_html_a02fb890eb9d7bf33a5613bc6868ea9ae\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">tram::Render::VertexDefinition::attributes</a></div><div class=\"ttdeci\">const VertexAttribute * attributes</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:64</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_definition_html_a40ed4f54909928aa59fd3de4f3c7f451\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">tram::Render::VertexDefinition::attribute_count</a></div><div class=\"ttdeci\">size_t attribute_count</div><div class=\"ttdef\"><b>Definition:</b> renderer.h:65</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/resource_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/resource.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">resource.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n</div>\n<p><a href=\"resource_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource.html\">tram::Resource</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_async\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">tram::Async</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_async\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Multi-threading and <a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> streaming. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async::RequestResource</a> (EntityComponent *requester, Resource *resource)</td></tr>\n<tr class=\"memdesc:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a resource to the loading queue.  <a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a9db009e1493d70c2ce388b2910e32fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/resource_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/resource.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">resource.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"resource_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_RESOURCE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_RESOURCE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html\">   11</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>  {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">   13</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">   14</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>,   <span class=\"comment\">//&lt; Resource not in memory. Can&#39;t be used.</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">   15</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">LOADED</a>,     <span class=\"comment\">//&lt; Resource loaded in memory, but still needs some processing (like uploading to video memory).</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">   16</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">READY</a>,      <span class=\"comment\">//&lt; Resource is ready for sus.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    };</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">Resource</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">   21</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Resource::Status</a> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a>; }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">   22</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">GetName</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">   23</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">GetReferences</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a>; }</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">   24</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">IsLoadFailed</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a>; }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">   26</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>() { <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a>++; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">   27</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>() { <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a>--; }</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">   29</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">LoadFromDisk</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">   30</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">LoadFromMemory</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">   32</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">Load</a>() { <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">LoadFromDisk</a>(); <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">LoadFromMemory</a>(); }</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">   34</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">Unload</a>() = 0;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">   36</a></span>    <a class=\"code hl_enumeration\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">Status</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">status</a> = <a class=\"code hl_enumvalue\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">UNLOADED</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">   37</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">   38</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">load_fail</a> = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">   39</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">references</a> = 0;</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>};</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Async { <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">RequestResource</a> (<a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* requester, <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>* requested_resource); }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy</a> {</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">   48</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">ResourceProxy</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>) : <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>) {}</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">   49</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">~ResourceProxy</a>() { <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">set</a>(<span class=\"keyword\">nullptr</span>); }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">   50</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">set</a>(<a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>* new_res){</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">if</span> (new_res == <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>) <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>) {</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">RemoveReference</a>();</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>            <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">Async::CancelRequest</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>, <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        } </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a> = new_res;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>) {</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">AddReference</a>();</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>            </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>-&gt;<a class=\"code hl_function\" href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">GetStatus</a>() != <a class=\"code hl_enumvalue\" href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">Resource::READY</a>) {</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">resources_waiting</a>++;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                <a class=\"code hl_function\" href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">Async::RequestResource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>, <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>);</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>            }</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        }</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    }</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">   69</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">get</a>() { <span class=\"keywordflow\">return</span> (T*)<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>; }</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">   70</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">operator= </a>(<a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>* res) { <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">set</a>(res); <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">get</a>(); }</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">   71</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">operator-&gt;</a>() { <span class=\"keywordflow\">return</span> (T*)<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>; }</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">   72</a></span>    T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">operator*</a>() { <span class=\"keywordflow\">return</span> *((T*)<a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a>); }</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071\">   73</a></span>    <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a> != <span class=\"keyword\">nullptr</span>; }</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">   75</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">   76</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">resource</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>};</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_RESOURCE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html_a67f362753d2e2c2e5859ceab8b9461ce\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce\">tram::EntityComponent::resources_waiting</a></div><div class=\"ttdeci\">size_t resources_waiting</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a11d6ce36b6bf1d520bb63d6413e99299\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299\">tram::Resource::Unload</a></div><div class=\"ttdeci\">virtual void Unload()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a25c818d18a10010f342eaae99c083826\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826\">tram::Resource::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:32</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a2967c7a144291895ef629bb1b5d15acb\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb\">tram::Resource::GetName</a></div><div class=\"ttdeci\">name_t GetName() const</div><div class=\"ttdef\"><b>Definition:</b> resource.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a4c975d7c7ef4a34ac9b2dc72977e10f9\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9\">tram::Resource::RemoveReference</a></div><div class=\"ttdeci\">void RemoveReference()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a52f4c25fe2642109f7f35088419cd086\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086\">tram::Resource::GetStatus</a></div><div class=\"ttdeci\">Resource::Status GetStatus() const</div><div class=\"ttdef\"><b>Definition:</b> resource.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a5dc8ecdb5e36b98015fe2f2ea0de6e14\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14\">tram::Resource::LoadFromDisk</a></div><div class=\"ttdeci\">virtual void LoadFromDisk()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a634805edb61d305a1ed69e35dbe4aeb3\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3\">tram::Resource::Resource</a></div><div class=\"ttdeci\">Resource(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> resource.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a7a4ce943d482665189305b828868c2a4\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4\">tram::Resource::Status</a></div><div class=\"ttdeci\">Status</div><div class=\"ttdef\"><b>Definition:</b> resource.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2\">tram::Resource::LOADED</a></div><div class=\"ttdeci\">@ LOADED</div><div class=\"ttdef\"><b>Definition:</b> resource.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084\">tram::Resource::READY</a></div><div class=\"ttdeci\">@ READY</div><div class=\"ttdef\"><b>Definition:</b> resource.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d\">tram::Resource::UNLOADED</a></div><div class=\"ttdeci\">@ UNLOADED</div><div class=\"ttdef\"><b>Definition:</b> resource.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a81746c1ca8f0d380259f8906a79942b8\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8\">tram::Resource::IsLoadFailed</a></div><div class=\"ttdeci\">bool IsLoadFailed() const</div><div class=\"ttdef\"><b>Definition:</b> resource.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a9f937078a3f7e3df1ad275528e615539\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539\">tram::Resource::references</a></div><div class=\"ttdeci\">size_t references</div><div class=\"ttdef\"><b>Definition:</b> resource.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_aabc50d5a44a79da0f323e829711a6b0b\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b\">tram::Resource::LoadFromMemory</a></div><div class=\"ttdeci\">virtual void LoadFromMemory()=0</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_ad797d797d3fb0e517063f8178b0ff243\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243\">tram::Resource::status</a></div><div class=\"ttdeci\">Status status</div><div class=\"ttdef\"><b>Definition:</b> resource.h:36</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_adbe7a1f09b0aa6eec9c5f930180008fb\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb\">tram::Resource::GetReferences</a></div><div class=\"ttdeci\">size_t GetReferences() const</div><div class=\"ttdef\"><b>Definition:</b> resource.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_ae12c04585a9bf0e7f6f14e394d649978\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978\">tram::Resource::AddReference</a></div><div class=\"ttdeci\">void AddReference()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_af0e8d76a1a9490a659b8ef54b1357a59\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59\">tram::Resource::load_fail</a></div><div class=\"ttdeci\">bool load_fail</div><div class=\"ttdef\"><b>Definition:</b> resource.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:46</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_a12bcf3a4db3fb67fbfbca4e904fe6e11\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11\">tram::ResourceProxy::operator-&gt;</a></div><div class=\"ttdeci\">T * operator-&gt;()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_a1f763b625481fde25be8bcdb2b9387ea\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea\">tram::ResourceProxy::resource</a></div><div class=\"ttdeci\">Resource * resource</div><div class=\"ttdef\"><b>Definition:</b> resource.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_a3481987ea325fd008b4dc41f4ab64dc1\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1\">tram::ResourceProxy::set</a></div><div class=\"ttdeci\">void set(Resource *new_res)</div><div class=\"ttdef\"><b>Definition:</b> resource.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_a40da59b39b0d3b1467775c655d06007b\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b\">tram::ResourceProxy::operator*</a></div><div class=\"ttdeci\">T &amp; operator*()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_abcaffdba60268a1aa0c1ed19249f63b0\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0\">tram::ResourceProxy::get</a></div><div class=\"ttdeci\">T * get()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_ac391d66e8b3b4a5da5c27e8b29d3086c\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c\">tram::ResourceProxy::ResourceProxy</a></div><div class=\"ttdeci\">ResourceProxy(EntityComponent *parent)</div><div class=\"ttdef\"><b>Definition:</b> resource.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_ad0386a7f5c0158ead0174c2cdd25c2b6\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6\">tram::ResourceProxy::parent</a></div><div class=\"ttdeci\">EntityComponent * parent</div><div class=\"ttdef\"><b>Definition:</b> resource.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_ae53d8742d944de173e8eb489f7aadb63\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63\">tram::ResourceProxy::~ResourceProxy</a></div><div class=\"ttdeci\">~ResourceProxy()</div><div class=\"ttdef\"><b>Definition:</b> resource.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html_ae9b5619de08c190d93c0cf7aa9736df9\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9\">tram::ResourceProxy::operator=</a></div><div class=\"ttdeci\">T * operator=(Resource *res)</div><div class=\"ttdef\"><b>Definition:</b> resource.h:70</div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a00df174c441553df6c3728c4355a4b7e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e\">tram::Async::CancelRequest</a></div><div class=\"ttdeci\">void CancelRequest(EntityComponent *requester, Resource *resource)</div><div class=\"ttdoc\">Cancels a resource load request.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:126</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_async_html_a9db009e1493d70c2ce388b2910e32fa2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2\">tram::Async::RequestResource</a></div><div class=\"ttdeci\">void RequestResource(EntityComponent *requester, Resource *resource)</div><div class=\"ttdoc\">Adds a resource to the loading queue.</div><div class=\"ttdef\"><b>Definition:</b> async.cpp:91</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/scene_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/scene.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">scene.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">render/scene.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"aabb_8h_source.html\">templates/aabb.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_scene_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_scene_tree.html\">tram::Render::SceneTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_scene_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_light_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_light_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene light tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6625049c0bc385b24b326868ad74a779\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">aabbleaf_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a> (RenderComponent *component, vec3 position, quat rotation, vec3 scale)</td></tr>\n<tr class=\"memdesc:a6625049c0bc385b24b326868ad74a779\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">More...</a><br /></td></tr>\n<tr class=\"separator:a6625049c0bc385b24b326868ad74a779\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a> (aabbleaf_t leaf_id)</td></tr>\n<tr class=\"memdesc:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a leaf from.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">More...</a><br /></td></tr>\n<tr class=\"separator:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631b3af49e3238165b6005edf3608394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">QueryResponse&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a> (vec3 ray_pos, vec3 ray_dir, uint32_t mask)</td></tr>\n<tr class=\"memdesc:a631b3af49e3238165b6005edf3608394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Peforms a raycast and retrieves the nearest object.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">More...</a><br /></td></tr>\n<tr class=\"separator:a631b3af49e3238165b6005edf3608394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5030c8f345b2d6543274015951361d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">tram::Render::AABB::FindAllIntersectionsFromAABB</a> (vec3 min, vec3 max, std::function&lt; void(ReferenceType, EntityComponent *)&gt; callback)</td></tr>\n<tr class=\"separator:a5030c8f345b2d6543274015951361d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a> ()</td></tr>\n<tr class=\"memdesc:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the scene tree for a single frame.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">More...</a><br /></td></tr>\n<tr class=\"separator:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Octree&lt; Light * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb\">tram::Render::LightTree::light_tree</a> (&quot;light tree&quot;, 200)</td></tr>\n<tr class=\"separator:a6baeaf6a8a379247c5a02079c1ef92cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a> (light_t light, vec3 pos, float dist)</td></tr>\n<tr class=\"memdesc:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a light to the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">More...</a><br /></td></tr>\n<tr class=\"separator:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a> (vec3 position, light_t *dest)</td></tr>\n<tr class=\"memdesc:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the 4 nearest lights to a given position.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a> (light_t light)</td></tr>\n<tr class=\"memdesc:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a light from the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">More...</a><br /></td></tr>\n<tr class=\"separator:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; Light &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8\">tram::Render::LightTree::light_list</a> (&quot;lighttree pool&quot;, 200)</td></tr>\n<tr class=\"separator:ace17f1d05c614eb447987103188f6fe8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/scene_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/scene.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">scene.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;functional&gt;</code><br />\n</div>\n<p><a href=\"scene_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_a_b_b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_light_tree\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_light_tree\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Scene light tree. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render::aabbleaf_t</a></td></tr>\n<tr class=\"separator:ab19b566afd13e36e1b377bd19adab144\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB::ReferenceType</a> : uint32_t { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB::REFERENCE_RENDERCOMPONENT</a> = 1\n }</td></tr>\n<tr class=\"separator:a5bb0d1f9511914c037cd30f91aa9264c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a6625049c0bc385b24b326868ad74a779\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">aabbleaf_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a> (RenderComponent *component, vec3 position, quat rotation, vec3 scale)</td></tr>\n<tr class=\"memdesc:a6625049c0bc385b24b326868ad74a779\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Inserts a <a class=\"el\" href=\"classtram_1_1_render_component.html\" title=\"Renders a Model.\">RenderComponent</a> leaf into the scene tree.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">More...</a><br /></td></tr>\n<tr class=\"separator:a6625049c0bc385b24b326868ad74a779\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a> (aabbleaf_t leaf_id)</td></tr>\n<tr class=\"memdesc:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a leaf from.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">More...</a><br /></td></tr>\n<tr class=\"separator:a0714a6a654730b3f04222f08c26c8eec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a631b3af49e3238165b6005edf3608394\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">QueryResponse&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a> (vec3 ray_pos, vec3 ray_dir, uint32_t mask)</td></tr>\n<tr class=\"memdesc:a631b3af49e3238165b6005edf3608394\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Peforms a raycast and retrieves the nearest object.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">More...</a><br /></td></tr>\n<tr class=\"separator:a631b3af49e3238165b6005edf3608394\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5030c8f345b2d6543274015951361d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">tram::Render::AABB::FindAllIntersectionsFromAABB</a> (vec3 min, vec3 max, std::function&lt; void(ReferenceType, EntityComponent *)&gt; callback)</td></tr>\n<tr class=\"separator:a5030c8f345b2d6543274015951361d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a> ()</td></tr>\n<tr class=\"memdesc:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Draws the scene tree for a single frame.  <a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">More...</a><br /></td></tr>\n<tr class=\"separator:ad017e45f12e6ac18dfa2417e462525ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a> (light_t light, vec3 pos, float dist)</td></tr>\n<tr class=\"memdesc:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds a light to the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">More...</a><br /></td></tr>\n<tr class=\"separator:aad6c0b080cf76a2e64216adc9318807e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a> (vec3 position, light_t *dest)</td></tr>\n<tr class=\"memdesc:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds the 4 nearest lights to a given position.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">More...</a><br /></td></tr>\n<tr class=\"separator:ae353165809c1cd85edb8e42944c0dee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a> (light_t light)</td></tr>\n<tr class=\"memdesc:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes a light from the light tree.  <a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">More...</a><br /></td></tr>\n<tr class=\"separator:acbb22184ab1cca95ca3dd1f250e3f12d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/scene_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/scene.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">scene.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"scene_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_SCENE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_SCENE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"model_8h.html\">render/model.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;functional&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    <span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">   16</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">void</span>* <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a>;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>}</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">   21</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">REFERENCE_RENDERCOMPONENT</a> = 1</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">   23</a></span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">   25</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">   26</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">type</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">   27</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">data</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">   29</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">intersection</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">   30</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">triangle</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>};</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">InsertLeaf</a>(<a class=\"code hl_class\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* component, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> rotation, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> scale);    </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">RemoveLeaf</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">aabbleaf_t</a> leaf);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">FindNearestFromRay</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, uint32_t mask);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">FindAllIntersectionsFromAABB</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">std::function</a>&lt;<span class=\"keywordtype\">void</span>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a>, <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>*)&gt; callback);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">DebugDrawTree</a>();</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>}</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a> {</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    </div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">AddLight</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> pos, <span class=\"keywordtype\">float</span> dist);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">FindLights</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>* dest);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">RemoveLight</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> light);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>}</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_SCENE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_render_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_render_component.html\">tram::RenderComponent</a></div><div class=\"ttdoc\">Renders a Model.</div><div class=\"ttdef\"><b>Definition:</b> render.h:12</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"amodel_8h_html\"><div class=\"ttname\"><a href=\"model_8h.html\">model.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a4eb0c0bc6178c8d324c89f213a5a1a15\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15\">tram::Ext::Scripting::Lua::function</a></div><div class=\"ttdeci\">value_t(* function)(valuearray_t)</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:156</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">tram::Render::AABB</a></div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a0714a6a654730b3f04222f08c26c8eec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec\">tram::Render::AABB::RemoveLeaf</a></div><div class=\"ttdeci\">void RemoveLeaf(aabbleaf_t leaf_id)</div><div class=\"ttdoc\">Removes a leaf from.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a5030c8f345b2d6543274015951361d4d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d\">tram::Render::AABB::FindAllIntersectionsFromAABB</a></div><div class=\"ttdeci\">void FindAllIntersectionsFromAABB(vec3 min, vec3 max, std::function&lt; void(ReferenceType, EntityComponent *)&gt; callback)</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:167</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a5bb0d1f9511914c037cd30f91aa9264c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">tram::Render::AABB::ReferenceType</a></div><div class=\"ttdeci\">ReferenceType</div><div class=\"ttdef\"><b>Definition:</b> scene.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec\">tram::Render::AABB::REFERENCE_RENDERCOMPONENT</a></div><div class=\"ttdeci\">@ REFERENCE_RENDERCOMPONENT</div><div class=\"ttdef\"><b>Definition:</b> scene.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a631b3af49e3238165b6005edf3608394\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394\">tram::Render::AABB::FindNearestFromRay</a></div><div class=\"ttdeci\">QueryResponse FindNearestFromRay(vec3 ray_pos, vec3 ray_dir, uint32_t mask)</div><div class=\"ttdoc\">Peforms a raycast and retrieves the nearest object.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:113</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_a6625049c0bc385b24b326868ad74a779\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779\">tram::Render::AABB::InsertLeaf</a></div><div class=\"ttdeci\">aabbleaf_t InsertLeaf(RenderComponent *component, vec3 position, quat rotation, vec3 scale)</div><div class=\"ttdoc\">Inserts a RenderComponent leaf into the scene tree.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:61</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_a_b_b_html_ad017e45f12e6ac18dfa2417e462525ef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef\">tram::Render::AABB::DebugDrawTree</a></div><div class=\"ttdeci\">void DebugDrawTree()</div><div class=\"ttdoc\">Draws the scene tree for a single frame.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:193</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html\">tram::Render::LightTree</a></div><div class=\"ttdoc\">Scene light tree.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_aad6c0b080cf76a2e64216adc9318807e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e\">tram::Render::LightTree::AddLight</a></div><div class=\"ttdeci\">void AddLight(light_t light, vec3 pos, float dist)</div><div class=\"ttdoc\">Adds a light to the light tree.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:212</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_acbb22184ab1cca95ca3dd1f250e3f12d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d\">tram::Render::LightTree::RemoveLight</a></div><div class=\"ttdeci\">void RemoveLight(light_t light)</div><div class=\"ttdoc\">Removes a light from the light tree.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:239</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_light_tree_html_ae353165809c1cd85edb8e42944c0dee4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4\">tram::Render::LightTree::FindLights</a></div><div class=\"ttdeci\">void FindLights(vec3 position, light_t *dest)</div><div class=\"ttdoc\">Finds the 4 nearest lights to a given position.</div><div class=\"ttdef\"><b>Definition:</b> scene.cpp:225</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_ab19b566afd13e36e1b377bd19adab144\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144\">tram::Render::aabbleaf_t</a></div><div class=\"ttdeci\">void * aabbleaf_t</div><div class=\"ttdef\"><b>Definition:</b> scene.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></div><div class=\"ttdef\"><b>Definition:</b> scene.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_a7731e6615a0676cbaa1aa81668314256\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">tram::Render::AABB::QueryResponse::intersection</a></div><div class=\"ttdeci\">vec3 intersection</div><div class=\"ttdef\"><b>Definition:</b> scene.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_acbc9174af642114af907b43460aa2b39\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">tram::Render::AABB::QueryResponse::type</a></div><div class=\"ttdeci\">ReferenceType type</div><div class=\"ttdef\"><b>Definition:</b> scene.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_ae3f83ed0e19fec90c88b5057ea34e965\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">tram::Render::AABB::QueryResponse::triangle</a></div><div class=\"ttdeci\">AABBTriangle triangle</div><div class=\"ttdef\"><b>Definition:</b> scene.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_1_1_query_response_html_aee216817295b389fd464292129006984\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">tram::Render::AABB::QueryResponse::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdef\"><b>Definition:</b> scene.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_a_b_b_triangle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></div><div class=\"ttdef\"><b>Definition:</b> model.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1light__t_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></div><div class=\"ttdef\"><b>Definition:</b> render.h:173</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/script_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"script_8h_source.html\">framework/script.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"material_8h_source.html\">render/material.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">render/model.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">render/sprite.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_script\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">tram::Script</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a> (name_t name, value_t value)</td></tr>\n<tr class=\"separator:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a> (name_t name)</td></tr>\n<tr class=\"separator:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446f2631dceec969ceccee5841e8e019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a> (name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</td></tr>\n<tr class=\"separator:a446f2631dceec969ceccee5841e8e019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a> (name_t name, std::vector&lt; Value &gt; parameters)</td></tr>\n<tr class=\"separator:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d601f41f81643060037ab238452e643\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a8d601f41f81643060037ab238452e643\">tram::Script::SetLanguage</a> (Language lang)</td></tr>\n<tr class=\"separator:a8d601f41f81643060037ab238452e643\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a> (const char *path)</td></tr>\n<tr class=\"separator:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a> ()</td></tr>\n<tr class=\"separator:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/script_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">script.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"script_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_script\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">tram::Script</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a> (name_t name, value_t value)</td></tr>\n<tr class=\"separator:a3052ee4f8a5d4cba402b9342e3a7b0a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a> (name_t name)</td></tr>\n<tr class=\"separator:a917b2fc2737b5d72d66ce869fad40b2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a446f2631dceec969ceccee5841e8e019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a> (name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</td></tr>\n<tr class=\"separator:a446f2631dceec969ceccee5841e8e019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">value_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a> (name_t name, std::vector&lt; Value &gt; parameters)</td></tr>\n<tr class=\"separator:af8e8489ae939b80cca8c7b220c230447\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d601f41f81643060037ab238452e643\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a8d601f41f81643060037ab238452e643\">tram::Script::SetLanguage</a> (Language lang)</td></tr>\n<tr class=\"separator:a8d601f41f81643060037ab238452e643\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a> (const char *path)</td></tr>\n<tr class=\"separator:aadbf03d624e136dc8f25ab15c15e9f1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a> ()</td></tr>\n<tr class=\"separator:a3df9d0d4778b39ca7c95328ae4fd5a22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/script_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/script.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">script.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"script_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_script.html\">tram::Script</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">SetGlobal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value);</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">GetGlobal</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">SetFunction</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt;Type&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> (*<span class=\"keyword\">function</span>)(<a class=\"code hl_typedef\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>));</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">CallFunction</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, std::vector&lt;Value&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span> </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html\">   18</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_script_1_1_language.html\">Language</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">   19</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#af5b52a493cdf3511320ca67ae7d32ecc\">   21</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> (*<a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#af5b52a493cdf3511320ca67ae7d32ecc\">get_global</a>)(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">   22</a></span>    void (*<a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">set_global</a>)(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">value_t</a> value);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#aa308929820f0ba302be521bf848b9805\">   23</a></span>    void (*<a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#aa308929820f0ba302be521bf848b9805\">set_function</a>)(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt;Type&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>, <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> (*<span class=\"keyword\">function</span>)(<a class=\"code hl_typedef\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>));</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#ad9373b24badbe5823d6463455814543c\">   24</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> (*<a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#ad9373b24badbe5823d6463455814543c\">call_function</a>)(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt;Value&gt; <a class=\"code hl_variable\" href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">parameters</a>);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_script_1_1_language.html#a34ec018319125b4ad1339967c4a27199\">   26</a></span>    void (*<a class=\"code hl_variable\" href=\"structtram_1_1_script_1_1_language.html#a34ec018319125b4ad1339967c4a27199\">load_script</a>)(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a8d601f41f81643060037ab238452e643\">SetLanguage</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_script_1_1_language.html\">Language</a> language);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">LoadScript</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* path);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SCRIPT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_scripting_1_1_lua_html_a63ffedf8d40f57cc6c53d9f617b1fcc5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5\">tram::Ext::Scripting::Lua::parameters</a></div><div class=\"ttdeci\">std::vector&lt; Type &gt; parameters</div><div class=\"ttdef\"><b>Definition:</b> lua.cpp:156</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html\">tram::Script</a></div><div class=\"ttdef\"><b>Definition:</b> script.cpp:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a3052ee4f8a5d4cba402b9342e3a7b0a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6\">tram::Script::SetGlobal</a></div><div class=\"ttdeci\">void SetGlobal(name_t name, value_t value)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a3df9d0d4778b39ca7c95328ae4fd5a22\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22\">tram::Script::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:58</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a446f2631dceec969ceccee5841e8e019\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019\">tram::Script::SetFunction</a></div><div class=\"ttdeci\">void SetFunction(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a8d601f41f81643060037ab238452e643\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a8d601f41f81643060037ab238452e643\">tram::Script::SetLanguage</a></div><div class=\"ttdeci\">void SetLanguage(Language lang)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:50</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_a917b2fc2737b5d72d66ce869fad40b2a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a\">tram::Script::GetGlobal</a></div><div class=\"ttdeci\">value_t GetGlobal(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_aadbf03d624e136dc8f25ab15c15e9f1a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a\">tram::Script::LoadScript</a></div><div class=\"ttdeci\">void LoadScript(const char *path)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_script_html_af8e8489ae939b80cca8c7b220c230447\"><div class=\"ttname\"><a href=\"namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447\">tram::Script::CallFunction</a></div><div class=\"ttdeci\">value_t CallFunction(name_t name, std::vector&lt; Value &gt; parameters)</div><div class=\"ttdef\"><b>Definition:</b> script.cpp:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7d506d80abf93dd017a92dbcb169f9c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></div><div class=\"ttdeci\">Value value_t</div><div class=\"ttdef\"><b>Definition:</b> value.h:346</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9a399a2754b52b60de20e936546d0637\"><div class=\"ttname\"><a href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></div><div class=\"ttdeci\">ValueArray valuearray_t</div><div class=\"ttdef\"><b>Definition:</b> value.h:347</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></div><div class=\"ttdef\"><b>Definition:</b> script.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_a01d2fb78bf0df4893feca90bdf4a2525\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">tram::Script::Language::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> script.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_a34ec018319125b4ad1339967c4a27199\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#a34ec018319125b4ad1339967c4a27199\">tram::Script::Language::load_script</a></div><div class=\"ttdeci\">void(* load_script)(const char *path)</div><div class=\"ttdef\"><b>Definition:</b> script.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">tram::Script::Language::set_global</a></div><div class=\"ttdeci\">void(* set_global)(name_t name, value_t value)</div><div class=\"ttdef\"><b>Definition:</b> script.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_aa308929820f0ba302be521bf848b9805\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#aa308929820f0ba302be521bf848b9805\">tram::Script::Language::set_function</a></div><div class=\"ttdeci\">void(* set_function)(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))</div><div class=\"ttdef\"><b>Definition:</b> script.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_ad9373b24badbe5823d6463455814543c\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#ad9373b24badbe5823d6463455814543c\">tram::Script::Language::call_function</a></div><div class=\"ttdeci\">value_t(* call_function)(name_t name, std::vector&lt; Value &gt; parameters)</div><div class=\"ttdef\"><b>Definition:</b> script.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_script_1_1_language_html_af5b52a493cdf3511320ca67ae7d32ecc\"><div class=\"ttname\"><a href=\"structtram_1_1_script_1_1_language.html#af5b52a493cdf3511320ca67ae7d32ecc\">tram::Script::Language::get_global</a></div><div class=\"ttdeci\">value_t(* get_global)(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> script.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdef\"><b>Definition:</b> uid.h:11</div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/sdl_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/sdl/sdl.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_cc4878aa85695f89f2ccbc192aae421c.html\">sdl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sdl.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_8h_source.html\">platform/platform.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;SDL.h&gt;</code><br />\n<code>#include &lt;SDL_syswm.h&gt;</code><br />\n<code>#include &lt;glad.c&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_platform\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html\">tram::Platform</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a13e3e0fd03175cb1a3fcab404e3f0ef5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5\">tram::Platform::SetScale</a> (int s)</td></tr>\n<tr class=\"separator:a13e3e0fd03175cb1a3fcab404e3f0ef5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_0.js",
    "content": "var searchData=\n[\n  ['_5ftest_5fcase_0',['_test_case',['../struct__test__case.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_1.js",
    "content": "var searchData=\n[\n  ['aabb_2eh_0',['aabb.h',['../aabb_8h.html',1,'']]],\n  ['aabb_5fmax_1',['aabb_max',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed',1,'tram::Render::API::GLDrawListEntry::aabb_max()'],['../classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2',1,'tram::Render::Model::aabb_max()']]],\n  ['aabb_5fmin_2',['aabb_min',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0',1,'tram::Render::API::GLDrawListEntry::aabb_min()'],['../classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c',1,'tram::Render::Model::aabb_min()']]],\n  ['aabb_5ftree_5fleaf_3',['aabb_tree_leaf',['../classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5',1,'tram::RenderComponent']]],\n  ['aabbdistance_4',['AABBDistance',['../classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b',1,'tram::AABBTree']]],\n  ['aabbintersect_5',['AABBIntersect',['../classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1',1,'tram::AABBTree']]],\n  ['aabbleaf_6',['AABBLeaf',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html',1,'tram::Render::AABB']]],\n  ['aabbleaf_5ft_7',['aabbleaf_t',['../namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144',1,'tram::Render']]],\n  ['aabboverlap_8',['AABBOverlap',['../classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80',1,'tram::AABBTree']]],\n  ['aabbsurface_9',['AABBSurface',['../classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2',1,'tram::AABBTree']]],\n  ['aabbtree_10',['AABBTree',['../classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29',1,'tram::AABBTree::AABBTree()'],['../classtram_1_1_a_a_b_b_tree.html',1,'tram::AABBTree']]],\n  ['aabbtriangle_11',['AABBTriangle',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html',1,'tram::Render']]],\n  ['aabbvolume_12',['AABBVolume',['../classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77',1,'tram::AABBTree']]],\n  ['abbrv_13',['abbrv',['../struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6',1,'_test_case']]],\n  ['accessmode_14',['AccessMode',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477',1,'tram::File']]],\n  ['action_15',['action',['../structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41',1,'tram::UI::KeyBinding::action()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636',1,'tram::Ext::Kitchensink::DialogTopic::action()']]],\n  ['actions_2eh_16',['actions.h',['../actions_8h.html',1,'']]],\n  ['activate_17',['ACTIVATE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402',1,'tram::Signal::ACTIVATE()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0',1,'tram::Message::ACTIVATE()']]],\n  ['activate_18',['Activate',['../classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc',1,'tram::Trigger']]],\n  ['activate_5fonce_19',['ACTIVATE_ONCE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a',1,'tram::Message']]],\n  ['add_20',['Add',['../namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa',1,'tram::Stats::Add()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80',1,'tram::Ext::Menu::Menu::Add()'],['../classtram_1_1_world_cell.html#a6d8c426c88e1a950304ce2b499a2a065',1,'tram::WorldCell::Add()'],['../classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4',1,'tram::SignalTable::Add()'],['../classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef',1,'tram::WorldCell::Add()']]],\n  ['addbaseclass_21',['AddBaseClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['addcharacter_22',['AddCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763',1,'tram::Ext::Kitchensink::Faction']]],\n  ['addchild_23',['AddChild',['../namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156',1,'tram::Ext::Kitchensink']]],\n  ['addclass_24',['AddClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d',1,'tram::Ext::Kitchensink::Character']]],\n  ['addcube_25',['AddCube',['../namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87',1,'tram::Render']]],\n  ['addcylinder_26',['AddCylinder',['../namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8',1,'tram::Render']]],\n  ['addfaction_27',['AddFaction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['additem_28',['AddItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263',1,'tram::Ext::Kitchensink::Inventory::AddItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d',1,'tram::Ext::Kitchensink::InventoryManager::AddItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484',1,'tram::Ext::Kitchensink::ListInventoryManager::AddItem()']]],\n  ['addleaf_29',['AddLeaf',['../classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d',1,'tram::Octree']]],\n  ['addlight_30',['AddLight',['../namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e',1,'tram::Render::LightTree']]],\n  ['addline_31',['AddLine',['../namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536',1,'tram::Render']]],\n  ['addlineaabb_32',['AddLineAABB',['../namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea',1,'tram::Render']]],\n  ['addlinemarker_33',['AddLineMarker',['../namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf',1,'tram::Render']]],\n  ['addlistener_34',['AddListener',['../structtram_1_1_event.html#a5610bb4c11e4610b9b13ea2301e14f39',1,'tram::Event::AddListener(event_t type, void(*handler)(Event &amp;event))'],['../structtram_1_1_event.html#a817b7223a8818863e27dba112ade5930',1,'tram::Event::AddListener(event_t type, void *data, void(*handler)(Event &amp;event, void *data))'],['../structtram_1_1_event.html#a912991992322aab15d777e22848332cb',1,'tram::Event::AddListener(event_t type, Entity *entity)'],['../structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05',1,'tram::Event::AddListener(event_t type, EntityComponent *component)']]],\n  ['addnew_35',['AddNew',['../classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e',1,'tram::StackPool::AddNew()'],['../classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556',1,'tram::Stack::AddNew()'],['../classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488',1,'tram::Pool::AddNew()']]],\n  ['addpoint_36',['AddPoint',['../classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0',1,'tram::Transition']]],\n  ['addreference_37',['AddReference',['../classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978',1,'tram::Resource']]],\n  ['addsingleresult_38',['addSingleResult',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f',1,'tram::Physics::API::ShapecastCallback']]],\n  ['addsound_39',['AddSound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2',1,'tram::Ext::Kitchensink::SoundTable']]],\n  ['addsphere_40',['AddSphere',['../namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c',1,'tram::Render']]],\n  ['addstate_41',['AddState',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['addstatespace_42',['AddStateSpace',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['addtext_43',['AddText',['../namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af',1,'tram::Render::AddText(vec3 pos, const char *text, color_t color)'],['../namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13',1,'tram::Render::AddText(float x, float y, const char *text, color_t color)']]],\n  ['addtransition_44',['AddTransition',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#abb6ce7a99352a9ed067351ed8598a321',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionDefault)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionFrom)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a3e2e0645eebf89ec94fa0e8352503c3b',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionInto)']]],\n  ['advance_45',['Advance',['../classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0',1,'tram::PathFollower']]],\n  ['affected_5fvalue_46',['affected_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['age_47',['age',['../structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1',1,'tram::ParticleComponent::Particle']]],\n  ['ai_2ecpp_48',['ai.cpp',['../ai_8cpp.html',1,'']]],\n  ['ai_2eh_49',['ai.h',['../ai_8h.html',1,'']]],\n  ['ai_5fpackage_5fconstr_50',['ai_package_constr',['../namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442',1,'tram::Ext::Kitchensink']]],\n  ['aiagent_51',['AIAgent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html',1,'tram::Ext::Kitchensink']]],\n  ['aipackage_52',['AIPackage',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html',1,'tram::Ext::Kitchensink']]],\n  ['air_5fvelocity_53',['air_velocity',['../classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893',1,'tram::RaycastControllerComponent']]],\n  ['aivariable_54',['AIVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html',1,'tram::Ext::Kitchensink']]],\n  ['al_5fbuffer_5fcount_55',['al_buffer_count',['../structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c',1,'tram::Audio::audiobuffer_t']]],\n  ['al_5fbuffers_56',['al_buffers',['../structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad',1,'tram::Audio::audiobuffer_t']]],\n  ['al_5fsource_57',['al_source',['../structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7',1,'tram::Audio::audiosource_t']]],\n  ['allocate_58',['allocate',['../classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84',1,'tram::StackPool']]],\n  ['allocated_5fsize_59',['allocated_size',['../classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123',1,'tram::StackPool']]],\n  ['allocated_5fvertex_5fcount_60',['allocated_vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246',1,'tram::Render::API::VertexBufferMetadata']]],\n  ['allocatedata_61',['AllocateData',['../structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35',1,'tram::Event::AllocateData(size_t ammount)'],['../structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039',1,'tram::Event::AllocateData(const T &amp;data)'],['../structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d',1,'tram::Message::AllocateData(size_t ammount)'],['../structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e',1,'tram::Message::AllocateData()'],['../structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b',1,'tram::Message::AllocateData(const T &amp;data)'],['../structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305',1,'tram::Event::AllocateData()']]],\n  ['ambient_5fcolor_62',['ambient_color',['../namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457',1,'tram::Render::ambient_color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6',1,'tram::Render::API::LayerParameters::ambient_color()']]],\n  ['ambientcolor_63',['ambientColor',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['and_64',['And',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['anim_5fbframe_65',['anim_bframe',['../classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c',1,'tram::SpriteComponent']]],\n  ['anim_5fcount_66',['ANIM_COUNT',['../classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27',1,'tram::AnimationComponent']]],\n  ['anim_5ffinish_5fcallback_67',['anim_finish_callback',['../classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7',1,'tram::AnimationComponent']]],\n  ['anim_5fframe_68',['anim_frame',['../classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1',1,'tram::SpriteComponent']]],\n  ['anim_5finfo_69',['anim_info',['../classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2',1,'tram::AnimationComponent']]],\n  ['anim_5fisplaying_70',['anim_isplaying',['../classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157',1,'tram::SpriteComponent']]],\n  ['anim_5fplaying_71',['anim_playing',['../classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4',1,'tram::AnimationComponent']]],\n  ['anim_5fspeed_72',['anim_speed',['../classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf',1,'tram::SpriteComponent']]],\n  ['animation_73',['animation',['../classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1',1,'tram::Decoration::animation()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d',1,'tram::Ext::Kitchensink::AnimState::animation()']]],\n  ['animation_74',['Animation',['../classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405',1,'tram::Render::Animation::Animation()'],['../classtram_1_1_render_1_1_animation.html',1,'tram::Render::Animation']]],\n  ['animation_2ecpp_75',['animation.cpp',['../render_2animation_8cpp.html',1,'(Global Namespace)'],['../components_2animation_8cpp.html',1,'(Global Namespace)']]],\n  ['animation_2eh_76',['animation.h',['../render_2animation_8h.html',1,'(Global Namespace)'],['../components_2animation_8h.html',1,'(Global Namespace)']]],\n  ['animation_5flist_77',['animation_list',['../namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a',1,'tram::Render']]],\n  ['animation_5fpool_78',['animation_pool',['../namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d',1,'tram::Render']]],\n  ['animationcomponent_79',['animationcomponent',['../classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12',1,'tram::Decoration']]],\n  ['animationcomponent_80',['AnimationComponent',['../classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad',1,'tram::AnimationComponent::AnimationComponent()'],['../classtram_1_1_animation_component.html',1,'tram::AnimationComponent']]],\n  ['animationplaybackinfo_81',['AnimationPlaybackInfo',['../structtram_1_1_animation_component_1_1_animation_playback_info.html',1,'tram::AnimationComponent']]],\n  ['animationstatecomponent_82',['AnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html',1,'tram::Ext::Kitchensink']]],\n  ['animationtable_83',['AnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123',1,'tram::Ext::Kitchensink::AnimationStateComponent::AnimationTable()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc',1,'tram::Ext::Kitchensink::AnimationTable::AnimationTable()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['animationtable_2ecpp_84',['animationtable.cpp',['../animationtable_8cpp.html',1,'']]],\n  ['animationtable_2eh_85',['animationtable.h',['../animationtable_8h.html',1,'']]],\n  ['animstate_86',['AnimState',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatespace_87',['AnimStateSpace',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitiondefault_88',['AnimStateTransitionDefault',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitionfrom_89',['AnimStateTransitionFrom',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitioninto_90',['AnimStateTransitionInto',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html',1,'tram::Ext::Kitchensink']]],\n  ['answer_91',['answer',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['api_2eh_92',['api.h',['../render_2api_8h.html',1,'(Global Namespace)'],['../platform_2api_8h.html',1,'(Global Namespace)'],['../physics_2api_8h.html',1,'(Global Namespace)'],['../audio_2api_8h.html',1,'(Global Namespace)']]],\n  ['application_93',['APPLICATION',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db',1,'tram::Settings']]],\n  ['applydynamics_94',['ApplyDynamics',['../classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7',1,'tram::RaycastControllerComponent::ApplyDynamics()'],['../classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b',1,'tram::FPSControllerComponent::ApplyDynamics()']]],\n  ['applyeffect_95',['ApplyEffect',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['approx_5fvram_5fusage_96',['approx_vram_usage',['../classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428',1,'tram::Render::Material::approx_vram_usage()'],['../classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7',1,'tram::Render::Model::approx_vram_usage()']]],\n  ['archive_97',['ARCHIVE',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995',1,'tram']]],\n  ['armature_98',['armature',['../classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430',1,'tram::Render::Model']]],\n  ['armature_5fbone_5fcount_99',['armature_bone_count',['../classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8',1,'tram::AnimationComponent']]],\n  ['armature_5fbone_5fparents_100',['armature_bone_parents',['../classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8',1,'tram::AnimationComponent']]],\n  ['armature_5fbones_101',['armature_bones',['../classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072',1,'tram::AnimationComponent']]],\n  ['arrival_5fdirection_102',['arrival_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['assert_103',['ASSERT',['../test_8h.html#ad014a2a071494bbabc34b48eeebadbf3',1,'test.h']]],\n  ['assertdependency_104',['AssertDependency',['../namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49',1,'tram::System']]],\n  ['asserttype_105',['AssertType',['../classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916',1,'tram::Value']]],\n  ['async_106',['ASYNC',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f',1,'tram::System']]],\n  ['async_2ecpp_107',['async.cpp',['../async_8cpp.html',1,'']]],\n  ['async_2eh_108',['async.h',['../async_8h.html',1,'']]],\n  ['attribute_109',['attribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617',1,'tram::Ext::Kitchensink::Effect::attribute()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08',1,'tram::Ext::Kitchensink::InitialAttribute::attribute()']]],\n  ['attribute_110',['Attribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['attribute_5fcontainer_5fcount_111',['ATTRIBUTE_CONTAINER_COUNT',['../attributes_8cpp.html#a84627f70639f661d824e70f33c21021d',1,'attributes.cpp']]],\n  ['attribute_5fcount_112',['attribute_count',['../structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451',1,'tram::Render::VertexDefinition']]],\n  ['attribute_5finfo_5fcount_113',['ATTRIBUTE_INFO_COUNT',['../attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269',1,'attributes.cpp']]],\n  ['attributecontainer_114',['AttributeContainer',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html',1,'tram::Ext::Kitchensink']]],\n  ['attributeinfo_115',['AttributeInfo',['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html',1,'tram::Ext::Kitchensink']]],\n  ['attributes_116',['attributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b',1,'tram::Ext::Kitchensink::ItemClass::attributes()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6',1,'tram::Ext::Kitchensink::AttributeContainer::attributes()'],['../structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae',1,'tram::Render::VertexDefinition::attributes()']]],\n  ['attributes_2ecpp_117',['attributes.cpp',['../attributes_8cpp.html',1,'']]],\n  ['attributes_2eh_118',['attributes.h',['../attributes_8h.html',1,'']]],\n  ['audio_119',['audio',['../classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b',1,'tram::Sound']]],\n  ['audio_120',['AUDIO',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee',1,'tram::System']]],\n  ['audio_2ecpp_121',['audio.cpp',['../components_2audio_8cpp.html',1,'(Global Namespace)'],['../audio_2audio_8cpp.html',1,'(Global Namespace)']]],\n  ['audio_2eh_122',['audio.h',['../components_2audio_8h.html',1,'(Global Namespace)'],['../audio_2audio_8h.html',1,'(Global Namespace)']]],\n  ['audiobuffer_123',['AudioBuffer',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html',1,'tram::Audio::Spatial']]],\n  ['audiobuffer_5ft_124',['audiobuffer_t',['../structtram_1_1_audio_1_1audiobuffer__t.html',1,'tram::Audio']]],\n  ['audiobuffers_125',['audiobuffers',['../namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e',1,'tram::Audio::Spatial']]],\n  ['audiocomponent_126',['AudioComponent',['../classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5',1,'tram::AudioComponent::AudioComponent()'],['../classtram_1_1_audio_component.html',1,'tram::AudioComponent']]],\n  ['audiorender_127',['AudioRender',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html',1,'tram::Audio::Spatial']]],\n  ['audiorenders_128',['audiorenders',['../namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501',1,'tram::Audio::Spatial']]],\n  ['audiosamplerate_129',['AudioSampleRate',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92',1,'tram::Audio::Spatial']]],\n  ['audiosource_130',['AudioSource',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html',1,'tram::Audio::Spatial']]],\n  ['audiosource_5ft_131',['audiosource_t',['../structtram_1_1_audio_1_1audiosource__t.html',1,'tram::Audio']]],\n  ['audiosourceflags_132',['AudioSourceFlags',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351',1,'tram::Audio::Spatial']]],\n  ['audiosources_133',['audiosources',['../namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f',1,'tram::Audio::Spatial']]],\n  ['automatic_5floading_134',['AUTOMATIC_LOADING',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f',1,'tram::WorldCell']]],\n  ['available_5fsize_135',['available_size',['../classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8',1,'tram::StackPool']]],\n  ['average_5fcount_136',['average_count',['../structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3',1,'tram::Stats::SystemStat']]],\n  ['awaken_137',['Awaken',['../classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a',1,'tram::PhysicsComponent']]],\n  ['awakenrigidbody_138',['AwakenRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629',1,'tram::Physics::API']]],\n  ['finishresources_139',['FinishResources',['../classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02',1,'tram::EntityComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_10.js",
    "content": "var searchData=\n[\n  ['p0_0',['p0',['../structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c',1,'tram::Physics::CollisionTriangle']]],\n  ['p1_1',['p1',['../structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d',1,'tram::Physics::CollisionTriangle']]],\n  ['p2_2',['p2',['../structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342',1,'tram::Physics::CollisionTriangle']]],\n  ['package_5fstack_3',['package_stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['packvertexbuffer_4',['PackVertexBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae',1,'tram::Render::API']]],\n  ['packvertices_5',['PackVertices',['../namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51',1,'tram::Render::API']]],\n  ['padding_6',['padding',['../classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc',1,'tram::Hashmap::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f',1,'tram::Render::API::SWIndexArray::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221',1,'tram::Render::API::GLLight::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf',1,'tram::Render::API::ShaderUniformMatrices::padding()'],['../structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1',1,'tram::Render::Keyframe::padding()'],['../structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e',1,'tram::Async::ResourceRequest::padding()']]],\n  ['padding2_7',['padding2',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984',1,'tram::Render::API::GLLight']]],\n  ['panning_8',['panning',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['panning_5fdelay_9',['panning_delay',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['param1_10',['param1',['../structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2',1,'tram::Audio::FilterParameters']]],\n  ['param2_11',['param2',['../structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e',1,'tram::Audio::FilterParameters']]],\n  ['parameter_5fstring_12',['parameter_string',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3',1,'tram::Ext::Menu::MessageSend::parameter_string()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1',1,'tram::Ext::Menu::EventEmit::parameter_string()']]],\n  ['parameter_5ftype_13',['parameter_type',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd',1,'tram::Ext::Menu::EventEmit::parameter_type()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0',1,'tram::Ext::Menu::MessageSend::parameter_type()']]],\n  ['parameters_14',['parameters',['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60',1,'tram::Audio::SoundGraph::Node::parameters()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5',1,'tram::Ext::Scripting::Lua::parameters()']]],\n  ['parent_15',['parent',['../structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df',1,'tram::Octree::Node::parent()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33',1,'tram::AABBTree::Node::parent()'],['../structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3',1,'tram::Render::Bone::parent()'],['../classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6',1,'tram::ResourceProxy::parent()'],['../classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b',1,'tram::EntityComponent::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731',1,'tram::Ext::Kitchensink::Inventory::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede',1,'tram::Ext::Kitchensink::Button::parent()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a',1,'tram::Ext::Kitchensink::AnimStateSpace::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349',1,'tram::Ext::Kitchensink::AIPackage::parent()']]],\n  ['parse_16',['Parse',['../namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456',1,'tram::Settings']]],\n  ['parseformat_17',['ParseFormat',['../namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424',1,'tram::Render::API']]],\n  ['particle_18',['Particle',['../structtram_1_1_particle_component_1_1_particle.html',1,'tram::ParticleComponent']]],\n  ['particle_2ecpp_19',['particle.cpp',['../particle_8cpp.html',1,'']]],\n  ['particle_2eh_20',['particle.h',['../particle_8h.html',1,'']]],\n  ['particle_5fmax_5fage_21',['particle_max_age',['../classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2',1,'tram::ParticleComponent']]],\n  ['particlecomponent_22',['ParticleComponent',['../classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b',1,'tram::ParticleComponent::ParticleComponent()'],['../classtram_1_1_particle_component.html',1,'tram::ParticleComponent']]],\n  ['particles_23',['particles',['../classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4',1,'tram::ParticleComponent']]],\n  ['path_24',['path',['../classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c',1,'tram::PathFollower::path()'],['../classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782',1,'tram::File::path()'],['../structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536',1,'tram::FileSource::path()']]],\n  ['path_25',['Path',['../classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75',1,'tram::Path::Path()'],['../classtram_1_1_path.html',1,'tram::Path']]],\n  ['path_2ecpp_26',['path.cpp',['../path_8cpp.html',1,'']]],\n  ['path_2eh_27',['path.h',['../path_8h.html',1,'']]],\n  ['path_5fcurve_28',['PATH_CURVE',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b',1,'tram']]],\n  ['path_5fleft_29',['PATH_LEFT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617',1,'tram']]],\n  ['path_5flimit_30',['PATH_LIMIT',['../namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955',1,'tram']]],\n  ['path_5flinear_31',['PATH_LINEAR',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd',1,'tram']]],\n  ['path_5fright_32',['PATH_RIGHT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f',1,'tram']]],\n  ['path_5fstraight_33',['PATH_STRAIGHT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc',1,'tram']]],\n  ['pathaction_34',['PathAction',['../classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c',1,'tram::Physics::PathAction::PathAction()'],['../classtram_1_1_physics_1_1_path_action.html',1,'tram::Physics::PathAction']]],\n  ['pathedgeinfo_35',['PathEdgeInfo',['../structtram_1_1_path_edge_info.html',1,'tram']]],\n  ['pathexplorationresult_36',['PathExplorationResult',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html',1,'tram::Audio::Spatial']]],\n  ['pathfollower_37',['PathFollower',['../classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49',1,'tram::PathFollower::PathFollower()'],['../classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8',1,'tram::Path::PathFollower()'],['../classtram_1_1_path_follower.html',1,'tram::PathFollower']]],\n  ['pathfromaudiosource_38',['PathFromAudioSource',['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html',1,'tram::Audio::Spatial']]],\n  ['pathrenderinginfo_39',['PathRenderingInfo',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html',1,'tram::Audio::Spatial']]],\n  ['paths_40',['paths',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8',1,'tram::Audio::Spatial::AudioRender::paths()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630',1,'tram::Audio::Spatial::AudioSource::paths()']]],\n  ['paths_5ffor_5flistener_41',['PATHS_FOR_LISTENER',['../namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4',1,'tram::Audio::Spatial']]],\n  ['paths_5ffor_5frendering_42',['PATHS_FOR_RENDERING',['../namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9',1,'tram::Audio::Spatial']]],\n  ['paths_5ffor_5fsource_43',['PATHS_FOR_SOURCE',['../namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae',1,'tram::Audio::Spatial']]],\n  ['pathtracer_2ecpp_44',['pathtracer.cpp',['../pathtracer_8cpp.html',1,'']]],\n  ['pathtracer_2eh_45',['pathtracer.h',['../pathtracer_8h.html',1,'']]],\n  ['pathtracingresult_46',['PathTracingResult',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html',1,'tram::Audio::Spatial']]],\n  ['pathtype_47',['PathType',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2',1,'tram']]],\n  ['pause_48',['Pause',['../classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972',1,'tram::SpriteComponent']]],\n  ['pause_49',['pause',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c',1,'tram::AnimationComponent::AnimationPlaybackInfo::pause()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e',1,'tram::Ext::Kitchensink::Button::pause()']]],\n  ['pause_50',['Pause',['../classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd',1,'tram::AnimationComponent::Pause()'],['../classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df',1,'tram::AudioComponent::Pause()']]],\n  ['pause_5flast_51',['pause_last',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['pause_5fline_52',['PAUSE_LINE',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f',1,'tram::File']]],\n  ['pause_5fnext_53',['pause_next',['../classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265',1,'tram::File']]],\n  ['pause_5fon_5flast_5fframe_54',['pause_on_last_frame',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['pauseaudiosource_55',['PauseAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590',1,'tram::Audio::API']]],\n  ['perform_56',['Perform',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4',1,'tram::Ext::Kitchensink::DialogAction']]],\n  ['perspectivedivision_57',['PerspectiveDivision',['../namespacetram_1_1_render_1_1_a_p_i.html#a437320a39ddec40f81acdc942eeb9940',1,'tram::Render::API::PerspectiveDivision(vec4 &amp;p0, vec4 &amp;p1)'],['../namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8',1,'tram::Render::API::PerspectiveDivision(vec4 &amp;p)']]],\n  ['physics_58',['PHYSICS',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622',1,'tram::System']]],\n  ['physics_2ecpp_59',['physics.cpp',['../physics_2physics_8cpp.html',1,'(Global Namespace)'],['../components_2physics_8cpp.html',1,'(Global Namespace)']]],\n  ['physics_2eh_60',['physics.h',['../components_2physics_8h.html',1,'(Global Namespace)'],['../physics_2physics_8h.html',1,'(Global Namespace)']]],\n  ['physics_5fbody_61',['physics_body',['../classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b',1,'tram::Player']]],\n  ['physics_5fgravity_62',['PHYSICS_GRAVITY',['../namespacetram.html#a62a53097647f52336381e7470fb2abe5',1,'tram']]],\n  ['physics_5fground_5fplane_63',['PHYSICS_GROUND_PLANE',['../namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247',1,'tram']]],\n  ['physicscomponent_64',['physicscomponent',['../classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2',1,'tram::Crate::physicscomponent()'],['../classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf',1,'tram::Decoration::physicscomponent()'],['../classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def',1,'tram::StaticWorldObject::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d',1,'tram::Ext::Kitchensink::Button::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17',1,'tram::Ext::Kitchensink::Breakable::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562',1,'tram::Ext::Kitchensink::Train::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2',1,'tram::Ext::Kitchensink::Pickup::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d',1,'tram::Ext::Kitchensink::DebugText::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74',1,'tram::Ext::Kitchensink::DebugShape::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c',1,'tram::Ext::Kitchensink::TriggerAutosave::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961',1,'tram::Ext::Kitchensink::TriggerHurt::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50',1,'tram::Ext::Kitchensink::TriggerOnce::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa',1,'tram::Ext::Kitchensink::TriggerMultiple::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e',1,'tram::Ext::Kitchensink::TriggerPush::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d',1,'tram::Ext::Kitchensink::TriggerRemove::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f',1,'tram::Ext::Kitchensink::TriggerTeleport::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb',1,'tram::Ext::Kitchensink::Water::physicscomponent()']]],\n  ['physicscomponent_65',['PhysicsComponent',['../classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d',1,'tram::PhysicsComponent::PhysicsComponent()'],['../classtram_1_1_physics_component.html',1,'tram::PhysicsComponent']]],\n  ['physicsdebugdraw_66',['PhysicsDebugDraw',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html',1,'tram::Physics::API']]],\n  ['pickup_67',['Pickup',['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0',1,'tram::Ext::Kitchensink::Pickup::Pickup()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html',1,'tram::Ext::Kitchensink::Pickup']]],\n  ['ping_68',['PING',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e',1,'tram::Message']]],\n  ['pitch_69',['pitch',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['pixels_70',['pixels',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334',1,'tram::Render::API::SWTexture']]],\n  ['planes_71',['planes',['../classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7',1,'tram::Transition']]],\n  ['platform_72',['PLATFORM',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9',1,'tram::System']]],\n  ['platform_2eh_73',['platform.h',['../platform_8h.html',1,'']]],\n  ['play_74',['Play',['../classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad',1,'tram::AnimationComponent::Play()'],['../classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd',1,'tram::AudioComponent::Play()'],['../classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1',1,'tram::SpriteComponent::Play()']]],\n  ['play_5fon_5fstart_75',['play_on_start',['../classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852',1,'tram::AudioComponent']]],\n  ['playaudiosource_76',['PlayAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5',1,'tram::Audio::API']]],\n  ['player_77',['player',['../main_8cpp.html#a96781128d3743da3d17e0fdd91afba7b',1,'main.cpp']]],\n  ['player_78',['Player',['../classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7',1,'tram::Player::Player()'],['../classtram_1_1_player.html#a96db3f6f72ef25251dced6d52448fbe7',1,'tram::Player::Player(name_t)'],['../classtram_1_1_player.html',1,'tram::Player']]],\n  ['player_2ecpp_79',['player.cpp',['../components_2player_8cpp.html',1,'(Global Namespace)'],['../entities_2player_8cpp.html',1,'(Global Namespace)']]],\n  ['player_2eh_80',['player.h',['../entities_2player_8h.html',1,'(Global Namespace)'],['../components_2player_8h.html',1,'(Global Namespace)']]],\n  ['playercomponent_81',['PlayerComponent',['../classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f',1,'tram::PlayerComponent::PlayerComponent()'],['../classtram_1_1_player_component.html',1,'tram::PlayerComponent']]],\n  ['playsound_82',['PlaySound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ad31116a4938a4f571022d9c33eeae03d',1,'tram::Ext::Kitchensink::SoundTable::PlaySound(SoundAction type, vec3 position, float volume)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86',1,'tram::Ext::Kitchensink::SoundTable::PlaySound(SoundAction type)'],['../entities_8cpp.html#a4366553d515649fefe284775ebaed16e',1,'PlaySound():&#160;entities.cpp']]],\n  ['plomp_83',['plomp',['../classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b',1,'tram::Player']]],\n  ['point_84',['point',['../structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e',1,'tram::Octree::NearestSearch::point()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952',1,'tram::Audio::Spatial::PathTracingResult::point()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7',1,'tram::Audio::Spatial::PathFromAudioSource::point()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a',1,'tram::Physics::API::ObjectCollision::point()'],['../structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce',1,'tram::Physics::Collision::point()'],['../structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757',1,'tram::Octree::Node::point()']]],\n  ['point1_85',['point1',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73',1,'tram::Render::AABBTriangle']]],\n  ['point2_86',['point2',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473',1,'tram::Render::AABBTriangle']]],\n  ['point2d_87',['Point2D',['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html',1,'tram::Render::API']]],\n  ['point3_88',['point3',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148',1,'tram::Render::AABBTriangle']]],\n  ['pointoutsidebottomplane_89',['PointOutsideBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58',1,'tram::Render::API']]],\n  ['pointoutsidefarplane_90',['PointOutsideFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065',1,'tram::Render::API']]],\n  ['pointoutsideleftplane_91',['PointOutsideLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242',1,'tram::Render::API']]],\n  ['pointoutsidenearplane_92',['PointOutsideNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46',1,'tram::Render::API']]],\n  ['pointoutsiderightplane_93',['PointOutsideRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b',1,'tram::Render::API']]],\n  ['pointoutsidetopplane_94',['PointOutsideTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db',1,'tram::Render::API']]],\n  ['points_95',['points',['../classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b',1,'tram::Transition::points()'],['../structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f',1,'tram::Render::API::ClipTriangle::points()']]],\n  ['pointvisible_96',['PointVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa',1,'tram::Render::API']]],\n  ['poll_97',['Poll',['../classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20',1,'tram::TriggerComponent']]],\n  ['pollkeyboardaxis_98',['PollKeyboardAxis',['../namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc',1,'tram::UI']]],\n  ['pollkeyboardaxisdelta_99',['PollKeyboardAxisDelta',['../namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1',1,'tram::UI']]],\n  ['pollkeyboardkey_100',['PollKeyboardKey',['../namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef',1,'tram::UI']]],\n  ['pool_101',['pool',['../classtram_1_1_pool_proxy.html#a9ccc00cffda0d7145eafd0200ce096e5',1,'tram::PoolProxy::pool(&quot;Path pool&quot;, RESOURCE_LIMIT_PATH)'],['../classtram_1_1_pool_proxy.html#a723d321955d74db634af0e4ab271b83c',1,'tram::PoolProxy::pool(&quot;worldcelltransition pool&quot;, WORLDCELL_TRANSITION_LIMIT)'],['../classtram_1_1_pool_proxy.html#ab9460e6c8698b9c98ce783f162632258',1,'tram::PoolProxy::pool(&quot;Worldcell pool&quot;, WORLDCELL_LIMIT)'],['../classtram_1_1_pool_proxy.html#a8c9901a9a4d72574c76864140ba646f6',1,'tram::PoolProxy::pool(&quot;GLDrawListEntry pool&quot;, 1000)'],['../classtram_1_1_pool_proxy.html#a120a8282dfe1622b41d36f70ff239fc8',1,'tram::PoolProxy::pool(&quot;GLLight pool&quot;, COMPONENT_LIMIT_LIGHT, {tram::Render::API::GLLight{}})'],['../classtram_1_1_pool_proxy.html#aa4966ced53d457eaf4047aada15c0ddd',1,'tram::PoolProxy::pool(&quot;GLMaterial pool&quot;, RESOURCE_LIMIT_MATERIAL)']]],\n  ['pool_102',['Pool',['../classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::AnimationComponent::Pool()'],['../classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::FPSControllerComponent::Pool()'],['../classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::RaycastControllerComponent::Pool()'],['../classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f',1,'tram::Pool::Pool(const char *name, uint64_t initialSize)'],['../classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979',1,'tram::Pool::Pool(const char *name, uint64_t initialSize, std::initializer_list&lt; T &gt; list)']]],\n  ['pool_103',['pool',['../classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51',1,'tram::PoolProxy::pool()'],['../classtram_1_1_pool_proxy.html#aedcb7d9eceb53a8a1495741d098658c1',1,'tram::PoolProxy::pool(&quot;Sound Resource pool&quot;, RESOURCE_LIMIT_SOUND)'],['../classtram_1_1_pool_proxy.html#ab37438f9460b4f23ed37fa5c751e5d92',1,'tram::PoolProxy::pool(&quot;AnimationComponent pool&quot;, COMPONENT_LIMIT_ANIMATION)'],['../classtram_1_1_pool_proxy.html#a132113c7cf9888dcf791d1bdae86a4ce',1,'tram::PoolProxy::pool(&quot;AudioComponent pool&quot;, COMPONENT_LIMIT_AUDIO)'],['../classtram_1_1_pool_proxy.html#a15a62f52369603f61fda4a0c3aab3453',1,'tram::PoolProxy::pool(&quot;FPSControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)'],['../classtram_1_1_pool_proxy.html#a8c8f705895edd3f1ef5416a39dcfb289',1,'tram::PoolProxy::pool(&quot;RaycastControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)'],['../classtram_1_1_pool_proxy.html#a87680b64deb218fbd3c991fe36e45449',1,'tram::PoolProxy::pool(&quot;DecalComponent pool&quot;, COMPONENT_LIMIT_DECAL)'],['../classtram_1_1_pool_proxy.html#afd8b1fb3154ba576098996c425b8008b',1,'tram::PoolProxy::pool(&quot;LightComponent pool&quot;, COMPONENT_LIMIT_LIGHT)'],['../classtram_1_1_pool_proxy.html#ab583e428b551012df0fe5d86e0787c23',1,'tram::PoolProxy::pool(&quot;ParticleComponent pool&quot;, COMPONENT_LIMIT_PARTICLE)'],['../classtram_1_1_pool_proxy.html#af892e1cc1c5b55d1de83b23a7f6acd7a',1,'tram::PoolProxy::pool(&quot;PhysicsComponent pool&quot;, COMPONENT_LIMIT_PHYSICS)'],['../classtram_1_1_pool_proxy.html#adec8cf47dae0c2c7dbcac50b62c4b4ce',1,'tram::PoolProxy::pool(&quot;PlayerComponent pool&quot;, COMPONENT_LIMIT_PLAYER)'],['../classtram_1_1_pool_proxy.html#a17815902e003552d6c1843f655b50606',1,'tram::PoolProxy::pool(&quot;RenderComponent pool&quot;, COMPONENT_LIMIT_RENDER)'],['../classtram_1_1_pool_proxy.html#a549d35aabd0230f175b2f78681c55408',1,'tram::PoolProxy::pool(&quot;SpriteComponent pool&quot;, COMPONENT_LIMIT_SPRITE)'],['../classtram_1_1_pool_proxy.html#a605e61fa1ef7ff0fa4ca51f4a351bb09',1,'tram::PoolProxy::pool(&quot;TriggerComponent pool&quot;, COMPONENT_LIMIT_TRIGGER)'],['../classtram_1_1_pool_proxy.html#af9f3b37524524346fdc58b79b3b0a148',1,'tram::PoolProxy::pool(&quot;ai_agent_list pool&quot;, 100)'],['../classtram_1_1_pool_proxy.html#a6b9f8209e7c3b8eea4675f06acb65b0c',1,'tram::PoolProxy::pool(&quot;AnimationTable pool&quot;, EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT)'],['../classtram_1_1_pool_proxy.html#a12f234e6bf9f9403ee4efb999a2a2a09',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::AttributeContainer Pool&quot;, ATTRIBUTE_CONTAINER_COUNT)'],['../classtram_1_1_pool_proxy.html#abb5ee08a098040647676affc6c7f23de',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::Faction Pool&quot;, FACTION_COUNT)'],['../classtram_1_1_pool_proxy.html#ae60e28486ed4752fdb1c22baa4ea81b2',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::Character Pool&quot;, CHARACTER_COUNT)'],['../classtram_1_1_pool_proxy.html#ab758ff8edc0858676caf8051a77d8408',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::CharacterClass Pool&quot;, CLASS_COUNT)'],['../classtram_1_1_pool_proxy.html#ae158206e9edb5f68852a8b43972f3991',1,'tram::PoolProxy::pool(&quot;SoundTable pool&quot;, EXT_KITCHENSINK_SOUNDTABLE_LIMIT)'],['../classtram_1_1_pool_proxy.html#af8e4dd501fdaba304cc75fab9d0122f9',1,'tram::PoolProxy::pool(&quot;navmesh pool&quot;, 100)']]],\n  ['pool_104',['Pool',['../classtram_1_1_pool.html',1,'tram']]],\n  ['pool_2eh_105',['pool.h',['../pool_8h.html',1,'']]],\n  ['poolname_106',['poolName',['../classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f',1,'tram::Pool']]],\n  ['poolproxy_107',['PoolProxy',['../classtram_1_1_pool_proxy.html',1,'tram']]],\n  ['poolptr_108',['PoolPtr',['../classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324',1,'tram::PoolPtr::PoolPtr()'],['../classtram_1_1_pool_ptr.html',1,'tram::PoolPtr&lt; T &gt;']]],\n  ['poolsize_109',['poolSize',['../classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564',1,'tram::Pool']]],\n  ['poopproxy_110',['PoopProxy',['../namespacetram.html#a72cce72d3494bf0e132892a3735ac229',1,'tram']]],\n  ['pop_111',['pop',['../classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841',1,'tram::Stack::pop()'],['../classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b',1,'tram::Queue::pop()']]],\n  ['pop_112',['Pop',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd',1,'tram::Ext::Menu::Menu']]],\n  ['popframe_113',['PopFrame',['../namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0',1,'tram::GUI']]],\n  ['popframekeepcursor_114',['PopFrameKeepCursor',['../namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf',1,'tram::GUI']]],\n  ['pos_115',['pos',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521',1,'tram::Render::API::StaticVertex::pos()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd',1,'tram::Render::API::DynamicVertex::pos()'],['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91',1,'tram::Render::API::ColorVertex::pos()']]],\n  ['pos_5fx_116',['pos_x',['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac',1,'tram::Render::API::LineVertex::pos_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f',1,'tram::Render::API::DynamicVertex::pos_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2',1,'tram::Render::API::StaticVertex::pos_x()']]],\n  ['pos_5fy_117',['pos_y',['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67',1,'tram::Render::API::LineVertex::pos_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816',1,'tram::Render::API::DynamicVertex::pos_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6',1,'tram::Render::API::StaticVertex::pos_y()']]],\n  ['pos_5fz_118',['pos_z',['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf',1,'tram::Render::API::LineVertex::pos_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a',1,'tram::Render::API::DynamicVertex::pos_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93',1,'tram::Render::API::StaticVertex::pos_z()']]],\n  ['pose_119',['pose',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d',1,'tram::Render::API::GLDrawListEntry::pose()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377',1,'tram::Render::API::SWDrawListEntry::pose()'],['../classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3',1,'tram::RenderComponent::pose()'],['../classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77',1,'tram::AnimationComponent::pose()'],['../structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb',1,'tram::Render::Pose::pose()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2',1,'tram::Render::API::D3DDrawListEntry::pose()']]],\n  ['pose_120',['Pose',['../structtram_1_1_render_1_1_pose.html',1,'tram::Render']]],\n  ['position_121',['position',['../structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1',1,'tram::SharedEntityData::position()'],['../structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a',1,'tram::Node::position()'],['../structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1',1,'tram::NavmeshNode::position()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105',1,'tram::Physics::API::CollisionShapeTransform::position()'],['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431',1,'tram::Physics::API::CallbackMotionState::position()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f',1,'tram::Render::API::FVFHelper::position()'],['../structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12',1,'tram::Render::LightGraph::Node::position()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc',1,'tram::Render::LightTree::Light::position()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f',1,'tram::Render::API::FFPHelper::position()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df',1,'tram::Ext::Camera::Camera::position()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6',1,'tram::Audio::Spatial::AudioSource::position()'],['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83',1,'tram::Audio::SoundGraph::Node::position()'],['../structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450',1,'tram::Render::SpritePoint::position()']]],\n  ['positionrotationscaletomatrix_122',['PositionRotationScaleToMatrix',['../namespacetram.html#a9d150b4b732715b4989afe480bb3ef98',1,'tram']]],\n  ['positionrotationtomatrix_123',['PositionRotationToMatrix',['../namespacetram.html#ab488668dddf5085ed2f05fef803dba33',1,'tram']]],\n  ['post_124',['Post',['../structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774',1,'tram::Event']]],\n  ['poster_125',['poster',['../structtram_1_1_event.html#a92418dc8036094cf309758831c14deed',1,'tram::Event']]],\n  ['prev_126',['prev',['../structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5',1,'tram::NavmeshNode::prev()'],['../classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025',1,'tram::PathFollower::prev()']]],\n  ['print_127',['Print',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146',1,'tram::AABBTree::Node']]],\n  ['probe_2ecpp_128',['probe.cpp',['../probe_8cpp.html',1,'']]],\n  ['probe_2eh_129',['probe.h',['../probe_8h.html',1,'']]],\n  ['process_130',['Process',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868',1,'tram::Ext::Kitchensink::AIPackage']]],\n  ['progress_131',['progress',['../classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60',1,'tram::PathFollower']]],\n  ['progress_132',['PROGRESS',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4',1,'tram::Signal']]],\n  ['progress_133',['progress',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6',1,'tram::Ext::Kitchensink::Button']]],\n  ['project_134',['Project',['../classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132',1,'tram::PathFollower::Project()'],['../namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7',1,'tram::Render::Project(const vec3 &amp;point, vec3 &amp;result, layer_t layer)']]],\n  ['projectinverse_135',['ProjectInverse',['../namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac',1,'tram::Render']]],\n  ['projection_136',['projection',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2',1,'tram::Render::API::ShaderUniformMatrices::projection()'],['../namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc',1,'tram::Render::projection()']]],\n  ['projection_5fmatrix_137',['projection_matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc',1,'tram::Render::API::LayerParameters']]],\n  ['projectline_138',['ProjectLine',['../namespacetram.html#afb93166d174dd8e63b4ea02836446b11',1,'tram']]],\n  ['prompt_139',['prompt',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['property_140',['Property',['../structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3',1,'tram::Settings::Property::Property(std::initializer_list&lt; value_t &gt; values)'],['../structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad',1,'tram::Settings::Property::Property(const T &amp;value)']]],\n  ['property_141',['property',['../classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21',1,'tram::Render::Material']]],\n  ['property_142',['Property',['../structtram_1_1_settings_1_1_property.html',1,'tram::Settings']]],\n  ['property_5fcomputer_143',['PROPERTY_COMPUTER',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8',1,'tram::Render']]],\n  ['property_5fconcrete_144',['PROPERTY_CONCRETE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126',1,'tram::Render']]],\n  ['property_5fflesh_145',['PROPERTY_FLESH',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4',1,'tram::Render']]],\n  ['property_5fglass_146',['PROPERTY_GLASS',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a',1,'tram::Render']]],\n  ['property_5fgrass_147',['PROPERTY_GRASS',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f',1,'tram::Render']]],\n  ['property_5fgrate_148',['PROPERTY_GRATE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65',1,'tram::Render']]],\n  ['property_5fmetal_149',['PROPERTY_METAL',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96',1,'tram::Render']]],\n  ['property_5fmetal_5fthin_150',['PROPERTY_METAL_THIN',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7',1,'tram::Render']]],\n  ['property_5fslime_151',['PROPERTY_SLIME',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119',1,'tram::Render']]],\n  ['property_5fsnow_152',['PROPERTY_SNOW',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86',1,'tram::Render']]],\n  ['property_5ftile_153',['PROPERTY_TILE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9',1,'tram::Render']]],\n  ['property_5fwood_154',['PROPERTY_WOOD',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b',1,'tram::Render']]],\n  ['ptr_155',['ptr',['../classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f',1,'tram::PoolPtr::ptr()'],['../structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7',1,'tram::Pool::iterator::ptr()'],['../classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe',1,'tram::Component::ptr()']]],\n  ['push_156',['Push',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012',1,'tram::Ext::Kitchensink::AIAgent::Push()'],['../classtram_1_1_physics_component.html#af5569e651b77b56a659f4b3a988f04b1',1,'tram::PhysicsComponent::Push(vec3 direction, vec3 local_position)'],['../classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4',1,'tram::PhysicsComponent::Push(vec3 direction)'],['../classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4',1,'tram::RaycastControllerComponent::Push()'],['../classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c',1,'tram::FPSControllerComponent::Push()'],['../classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a',1,'tram::ControllerComponent::Push()']]],\n  ['push_157',['push',['../classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588',1,'tram::Stack::push()'],['../classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1',1,'tram::Queue::push()']]],\n  ['push_158',['Push',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f',1,'tram::Ext::Menu::Menu']]],\n  ['pushframe_159',['PushFrame',['../namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301',1,'tram::GUI']]],\n  ['pushframerelative_160',['PushFrameRelative',['../namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6',1,'tram::GUI']]],\n  ['pushframerelativekeepcursor_161',['PushFrameRelativeKeepCursor',['../namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18',1,'tram::GUI']]],\n  ['pushoverride_162',['PushOverride',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['pushrigidbody_163',['PushRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39',1,'tram::Physics::API::PushRigidbody(rigidbody_t rigidbody, vec3 direction)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a04c616c8fd1cabe3561bc91f4a084392',1,'tram::Physics::API::PushRigidbody(rigidbody_t rigidbody, vec3 direction, vec3 local)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_11.js",
    "content": "var searchData=\n[\n  ['quat_0',['quat',['../namespacetram.html#a6ba8befa39d714232ba6f05ade798893',1,'tram']]],\n  ['quat_5fptr_1',['quat_ptr',['../classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3',1,'tram::ValuePtr']]],\n  ['quat_5fvalue_2',['quat_value',['../classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7',1,'tram::Value']]],\n  ['quatlookat_3',['QuatLookAt',['../namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf',1,'tram']]],\n  ['queryresponse_4',['QueryResponse',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html',1,'tram::Render::AABB']]],\n  ['quest_5',['quest',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198',1,'tram::Ext::Kitchensink::DialogCondition::quest()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401',1,'tram::Ext::Kitchensink::DialogAction::quest()']]],\n  ['quest_6',['Quest',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885',1,'tram::Ext::Kitchensink::Quest::Quest()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html',1,'tram::Ext::Kitchensink::Quest']]],\n  ['quest_2ecpp_7',['quest.cpp',['../quest_8cpp.html',1,'']]],\n  ['quest_2eh_8',['quest.h',['../quest_8h.html',1,'']]],\n  ['quest1_9',['quest1',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['quest2_10',['quest2',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['quest_5ft_11',['quest_t',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fincrement_12',['QUEST_TGR_INCREMENT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fset_5fobjective_13',['QUEST_TGR_SET_OBJECTIVE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fset_5fvariable_14',['QUEST_TGR_SET_VARIABLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fshow_5fmessage_15',['QUEST_TGR_SHOW_MESSAGE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fand_16',['QUEST_VAR_CONDITION_AND',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fnot_17',['QUEST_VAR_CONDITION_NOT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5for_18',['QUEST_VAR_CONDITION_OR',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fscript_19',['QUEST_VAR_CONDITION_SCRIPT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fentity_5fitem_5fcount_20',['QUEST_VAR_ENTITY_ITEM_COUNT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5finvalid_21',['QUEST_VAR_INVALID',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fobjective_22',['QUEST_VAR_OBJECTIVE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_23',['QUEST_VAR_VALUE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fgreater_24',['QUEST_VAR_VALUE_GREATER',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fgreater_5for_5fequal_25',['QUEST_VAR_VALUE_GREATER_OR_EQUAL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fis_26',['QUEST_VAR_VALUE_IS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fis_5fnot_27',['QUEST_VAR_VALUE_IS_NOT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fless_28',['QUEST_VAR_VALUE_LESS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fless_5for_5fequal_29',['QUEST_VAR_VALUE_LESS_OR_EQUAL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816',1,'tram::Ext::Kitchensink']]],\n  ['questentity_30',['QuestEntity',['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb',1,'tram::Ext::Kitchensink::QuestEntity::QuestEntity()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html',1,'tram::Ext::Kitchensink::QuestEntity']]],\n  ['questlist_31',['QuestList',['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html',1,'tram::Ext::Kitchensink']]],\n  ['questtrigger_32',['QuestTrigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html',1,'tram::Ext::Kitchensink']]],\n  ['questvariable_33',['QuestVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd',1,'tram::Ext::Kitchensink::QuestVariable::QuestVariable()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa398510013c7875c7ac6d3d1b0b3fdd2',1,'tram::Ext::Kitchensink::QuestVariable::QuestVariable(const QuestVariable &amp;)'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['queue_34',['Queue',['../classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef',1,'tram::Queue::Queue(Queue &amp;&amp;)=delete'],['../classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d',1,'tram::Queue::Queue(const char *name, size_t count)'],['../classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6',1,'tram::Queue::Queue(const Queue &amp;)=delete'],['../classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4',1,'tram::Queue::Queue()=delete'],['../classtram_1_1_queue.html',1,'tram::Queue&lt; T &gt;']]],\n  ['queue_2eh_35',['queue.h',['../queue_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_12.js",
    "content": "var searchData=\n[\n  ['radiobutton_0',['RadioButton',['../namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604',1,'tram::GUI']]],\n  ['radius_1',['radius',['../structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d',1,'tram::Physics::CollisionShape']]],\n  ['radius_5fx_2',['radius_x',['../structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc',1,'tram::Physics::CollisionShape']]],\n  ['radius_5fz_3',['radius_z',['../structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7',1,'tram::Physics::CollisionShape']]],\n  ['rank_4',['rank',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d',1,'tram::Ext::Kitchensink::FactionRank::rank()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae',1,'tram::Ext::Kitchensink::BaseFactionRank::rank()']]],\n  ['ranks_5',['ranks',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d',1,'tram::Ext::Kitchensink::Faction']]],\n  ['rasterizetriangle_6',['RasterizeTriangle',['../namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf',1,'tram::Render::API']]],\n  ['rasterizetrianglelightmapped_7',['RasterizeTriangleLightmapped',['../namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd',1,'tram::Render::API']]],\n  ['rasterizetriangleshadedtextured_8',['RasterizeTriangleShadedTextured',['../namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a',1,'tram::Render::API']]],\n  ['rawsetting_9',['RawSetting',['../structtram_1_1_settings_1_1_raw_setting.html',1,'tram::Settings']]],\n  ['raycast_10',['Raycast',['../namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9',1,'tram::Physics::Raycast()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa',1,'tram::Physics::API::Raycast()']]],\n  ['raycastcontrollercomponent_11',['RaycastControllerComponent',['../classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9',1,'tram::RaycastControllerComponent::RaycastControllerComponent()'],['../classtram_1_1_raycast_controller_component.html',1,'tram::RaycastControllerComponent']]],\n  ['raytriangleintersection_12',['RayTriangleIntersection',['../namespacetram.html#a709b43407c76d65a5e0e9567d55fb212',1,'tram']]],\n  ['read_13',['READ',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d',1,'tram::File']]],\n  ['read_5ffloat32_14',['read_float32',['../classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d',1,'tram::FileReaderParser::read_float32()'],['../classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142',1,'tram::TextReaderParser::read_float32()'],['../classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd',1,'tram::File::read_float32()']]],\n  ['read_5ffloat64_15',['read_float64',['../classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d',1,'tram::TextReaderParser::read_float64()'],['../classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241',1,'tram::File::read_float64()'],['../classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a',1,'tram::FileReaderParser::read_float64()=0']]],\n  ['read_5fint16_16',['read_int16',['../classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72',1,'tram::FileReaderParser::read_int16()'],['../classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad',1,'tram::TextReaderParser::read_int16()'],['../classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d',1,'tram::File::read_int16()']]],\n  ['read_5fint32_17',['read_int32',['../classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8',1,'tram::FileReaderParser::read_int32()'],['../classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd',1,'tram::TextReaderParser::read_int32()'],['../classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6',1,'tram::File::read_int32()']]],\n  ['read_5fint64_18',['read_int64',['../classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0',1,'tram::FileReaderParser::read_int64()'],['../classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316',1,'tram::TextReaderParser::read_int64()'],['../classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857',1,'tram::File::read_int64()']]],\n  ['read_5fint8_19',['read_int8',['../classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e',1,'tram::TextReaderParser::read_int8()'],['../classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68',1,'tram::File::read_int8()'],['../classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec',1,'tram::FileReaderParser::read_int8()']]],\n  ['read_5fline_20',['read_line',['../classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17',1,'tram::File::read_line()'],['../classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8',1,'tram::TextReaderParser::read_line()'],['../classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724',1,'tram::FileReaderParser::read_line()']]],\n  ['read_5fname_21',['read_name',['../classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3',1,'tram::File::read_name()'],['../classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9',1,'tram::TextReaderParser::read_name()'],['../classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986',1,'tram::FileReaderParser::read_name()']]],\n  ['read_5fstring_22',['read_string',['../classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e',1,'tram::File::read_string()'],['../classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516',1,'tram::TextReaderParser::read_string()'],['../classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005',1,'tram::FileReaderParser::read_string()=0']]],\n  ['read_5ftoken_23',['read_token',['../classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3',1,'tram::FileReaderParser::read_token()'],['../classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3',1,'tram::TextReaderParser::read_token()'],['../classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79',1,'tram::File::read_token()']]],\n  ['read_5fuint16_24',['read_uint16',['../classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de',1,'tram::TextReaderParser::read_uint16()'],['../classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d',1,'tram::FileReaderParser::read_uint16()'],['../classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723',1,'tram::File::read_uint16()']]],\n  ['read_5fuint32_25',['read_uint32',['../classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973',1,'tram::FileReaderParser::read_uint32()'],['../classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c',1,'tram::TextReaderParser::read_uint32()'],['../classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc',1,'tram::File::read_uint32()']]],\n  ['read_5fuint64_26',['read_uint64',['../classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e',1,'tram::File::read_uint64()'],['../classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f',1,'tram::TextReaderParser::read_uint64()'],['../classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827',1,'tram::FileReaderParser::read_uint64()']]],\n  ['read_5fuint8_27',['read_uint8',['../classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d',1,'tram::File::read_uint8()'],['../classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023',1,'tram::TextReaderParser::read_uint8()'],['../classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e',1,'tram::FileReaderParser::read_uint8()']]],\n  ['reader_28',['reader',['../classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e',1,'tram::File']]],\n  ['reader_5fparser_29',['reader_parser',['../classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18',1,'tram::File']]],\n  ['ready_30',['READY',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958',1,'tram::System::READY()'],['../namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489',1,'tram::READY()'],['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084',1,'tram::Resource::READY()']]],\n  ['recalculate_31',['Recalculate',['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b',1,'tram::Ext::Kitchensink::AttributeInfo']]],\n  ['receiver_32',['receiver',['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc',1,'tram::Ext::Menu::MessageIntercept::receiver()'],['../structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1',1,'tram::Message::receiver()'],['../structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6',1,'tram::Signal::receiver()']]],\n  ['record_33',['record',['../main_8cpp.html#a24abc1cdb33ae6cc929ae21787c1cec9',1,'main.cpp']]],\n  ['record_34',['Record',['../structtram_1_1_hashmap_1_1_record.html',1,'tram::Hashmap']]],\n  ['recoverfromcollisions_35',['RecoverFromCollisions',['../classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff',1,'tram::FPSControllerComponent::RecoverFromCollisions()'],['../classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45',1,'tram::RaycastControllerComponent::RecoverFromCollisions()']]],\n  ['recursivelyappendnexttopic_36',['RecursivelyAppendNextTopic',['../namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504',1,'tram::Ext::Kitchensink']]],\n  ['ref_5ftype_37',['ref_type',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5',1,'tram::Render::AABB::AABBLeaf']]],\n  ['reference_5frendercomponent_38',['REFERENCE_RENDERCOMPONENT',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec',1,'tram::Render::AABB']]],\n  ['references_39',['references',['../classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539',1,'tram::Resource']]],\n  ['referencetype_40',['ReferenceType',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c',1,'tram::Render::AABB']]],\n  ['reflection_5fabsorption_41',['reflection_absorption',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['reflection_5fcount_42',['reflection_count',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['reflections_43',['reflections',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898',1,'tram::Audio::Spatial::PathTracingResult::reflections()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5',1,'tram::Audio::Spatial::PathFromAudioSource::reflections()']]],\n  ['reflectivity_44',['reflectivity',['../classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6',1,'tram::Render::Material::reflectivity()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7',1,'tram::Render::API::GLMaterial::reflectivity()']]],\n  ['refresh_45',['Refresh',['../classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a',1,'tram::AnimationComponent']]],\n  ['refreshaabb_46',['RefreshAABB',['../classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433',1,'tram::RenderComponent']]],\n  ['register_47',['Register',['../namespacetram_1_1_settings.html#aa67d64e20ae324efb9693944c7a56823',1,'tram::Settings::Register(int32_t &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5',1,'tram::Settings::Register(bool &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04',1,'tram::ScriptableType::Register()'],['../namespacetram_1_1_settings.html#a8a4aec9c01b32664d1849fe0afde230c',1,'tram::Settings::Register()'],['../classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109',1,'tram::Crate::Register()'],['../classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad',1,'tram::Decoration::Register()'],['../classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46',1,'tram::Light::Register()'],['../classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961',1,'tram::Marker::Register()'],['../classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e',1,'tram::Sound::Register()'],['../classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051',1,'tram::StaticWorldObject::Register()'],['../classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2',1,'tram::Trigger::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7',1,'tram::Ext::Kitchensink::AIPackage::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8',1,'tram::Ext::Kitchensink::AttributeInfo::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c',1,'tram::Ext::Kitchensink::Button::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f',1,'tram::Ext::Kitchensink::Breakable::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a',1,'tram::Ext::Kitchensink::Water::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52',1,'tram::Ext::Kitchensink::Train::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9',1,'tram::Ext::Kitchensink::Pickup::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499',1,'tram::Ext::Kitchensink::DebugText::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa',1,'tram::Ext::Kitchensink::DebugShape::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf',1,'tram::Ext::Kitchensink::TriggerAutosave::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792',1,'tram::Ext::Kitchensink::TriggerHurt::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23',1,'tram::Ext::Kitchensink::TriggerOnce::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de',1,'tram::Ext::Kitchensink::TriggerMultiple::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d',1,'tram::Ext::Kitchensink::TriggerPush::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6',1,'tram::Ext::Kitchensink::TriggerRemove::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a',1,'tram::Ext::Kitchensink::TriggerTeleport::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043',1,'tram::Ext::Kitchensink::ItemClass::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c',1,'tram::Ext::Kitchensink::InventoryManager::Register()'],['../classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c',1,'tram::Entity::Register()'],['../structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d',1,'tram::Event::Register()'],['../structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a',1,'tram::Message::Register()'],['../structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8',1,'tram::Signal::Register()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396',1,'tram::Render::API::LinkedShader::Register()'],['../namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710',1,'tram::System::Register()'],['../namespacetram_1_1_settings.html#ae777d5373a811ea16bac85f681608054',1,'tram::Settings::Register()']]],\n  ['registered_48',['registered',['../structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2',1,'tram::Render::RegisteredVertexDefinition']]],\n  ['registeredvertexdefinition_49',['RegisteredVertexDefinition',['../structtram_1_1_render_1_1_registered_vertex_definition.html',1,'tram::Render']]],\n  ['registerfont_50',['RegisterFont',['../namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054',1,'tram::GUI']]],\n  ['registerkeyboardaction_51',['RegisterKeyboardAction',['../namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9',1,'tram::UI']]],\n  ['registermaterialtype_52',['RegisterMaterialType',['../namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa',1,'tram::Render']]],\n  ['registerrenderenvironmentmapshortcut_53',['RegisterRenderEnvironmentMapShortcut',['../namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a',1,'tram::Ext::Kitchensink']]],\n  ['registershader_54',['RegisterShader',['../namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d',1,'tram::Render::API']]],\n  ['registertype_55',['RegisterType',['../classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)'],['../classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)'],['../classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)']]],\n  ['registeruniformblock_56',['RegisterUniformBlock',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2',1,'tram::Render::API::LinkedShader']]],\n  ['registervertexdefinition_57',['RegisterVertexDefinition',['../namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37',1,'tram::Render']]],\n  ['registervertexformat_58',['RegisterVertexFormat',['../namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18',1,'tram::Render']]],\n  ['relations_59',['relations',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f',1,'tram::Ext::Kitchensink::Faction']]],\n  ['remove_60',['Remove',['../namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799',1,'tram::Stats::Remove()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db',1,'tram::Ext::Menu::Menu::Remove()'],['../classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338',1,'tram::WorldCell::Remove()'],['../classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb',1,'tram::Hashmap::Remove(UID key)'],['../classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199',1,'tram::Hashmap::Remove(uint32_t key)'],['../classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55',1,'tram::Octree::Remove()'],['../classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa',1,'tram::Pool::Remove()'],['../classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc',1,'tram::Stack::Remove()'],['../classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d',1,'tram::Octree::Remove()']]],\n  ['removeaudiobuffer_61',['RemoveAudioBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d',1,'tram::Audio::API']]],\n  ['removeaudiosource_62',['RemoveAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68',1,'tram::Audio::API']]],\n  ['removecharacter_63',['RemoveCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f',1,'tram::Ext::Kitchensink::Faction']]],\n  ['removedrawlistentry_64',['RemoveDrawListEntry',['../namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2',1,'tram::Render::API']]],\n  ['removeeffect_65',['RemoveEffect',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['removehierarchy_66',['RemoveHierarchy',['../classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474',1,'tram::AABBTree']]],\n  ['removeitem_67',['RemoveItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547',1,'tram::Ext::Kitchensink::Inventory::RemoveItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be',1,'tram::Ext::Kitchensink::InventoryManager::RemoveItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc',1,'tram::Ext::Kitchensink::ListInventoryManager::RemoveItem()']]],\n  ['removeleaf_68',['RemoveLeaf',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec',1,'tram::Render::AABB::RemoveLeaf()'],['../classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b',1,'tram::Octree::RemoveLeaf()'],['../classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6',1,'tram::AABBTree::RemoveLeaf()']]],\n  ['removelight_69',['RemoveLight',['../namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d',1,'tram::Render::LightTree']]],\n  ['removelistener_70',['RemoveListener',['../structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5',1,'tram::Event']]],\n  ['removereference_71',['RemoveReference',['../classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9',1,'tram::Resource']]],\n  ['render_72',['Render',['../namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17',1,'tram::Render']]],\n  ['render_73',['RENDER',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7',1,'tram::System']]],\n  ['render_2ecpp_74',['render.cpp',['../components_2render_8cpp.html',1,'(Global Namespace)'],['../render_2render_8cpp.html',1,'(Global Namespace)']]],\n  ['render_2eh_75',['render.h',['../render_2render_8h.html',1,'(Global Namespace)'],['../components_2render_8h.html',1,'(Global Namespace)']]],\n  ['render_5fflags_76',['render_flags',['../classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f',1,'tram::RenderComponent']]],\n  ['rendercomponent_77',['rendercomponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd',1,'tram::Ext::Kitchensink::Pickup::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd',1,'tram::Ext::Kitchensink::DebugText::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c',1,'tram::Ext::Kitchensink::DebugShape::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1',1,'tram::Ext::Kitchensink::TriggerAutosave::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5',1,'tram::Ext::Kitchensink::TriggerHurt::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2',1,'tram::Ext::Kitchensink::TriggerMultiple::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8',1,'tram::Ext::Kitchensink::TriggerPush::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe',1,'tram::Ext::Kitchensink::TriggerRemove::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085',1,'tram::Ext::Kitchensink::TriggerTeleport::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::rendercomponent()'],['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773',1,'tram::Render::AABB::AABBLeaf::rendercomponent()'],['../classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe',1,'tram::StaticWorldObject::rendercomponent()'],['../classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423',1,'tram::Decoration::rendercomponent()']]],\n  ['rendercomponent_78',['RenderComponent',['../classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285',1,'tram::RenderComponent']]],\n  ['rendercomponent_79',['rendercomponent',['../classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c',1,'tram::Crate::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35',1,'tram::Ext::Kitchensink::Button::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a',1,'tram::Ext::Kitchensink::Train::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f',1,'tram::Ext::Kitchensink::Water::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80',1,'tram::Ext::Kitchensink::Breakable::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6',1,'tram::Ext::Kitchensink::TriggerOnce::rendercomponent()'],['../classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816',1,'tram::Trigger::rendercomponent()']]],\n  ['rendercomponent_80',['RenderComponent',['../classtram_1_1_render_component.html',1,'tram']]],\n  ['renderenvironmentmaps_81',['RenderEnvironmentMaps',['../namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b',1,'tram::Ext::Kitchensink']]],\n  ['renderer_2ecpp_82',['renderer.cpp',['../direct3d_2renderer_8cpp.html',1,'(Global Namespace)'],['../opengl_2renderer_8cpp.html',1,'(Global Namespace)'],['../renderer_8cpp.html',1,'(Global Namespace)']]],\n  ['renderer_2eh_83',['renderer.h',['../renderer_8h.html',1,'(Global Namespace)'],['../opengl_2renderer_8h.html',1,'(Global Namespace)']]],\n  ['renderflags_84',['renderflags',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c',1,'tram::Render']]],\n  ['renderframe_85',['RenderFrame',['../namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9',1,'tram::Render::API']]],\n  ['renderresult_86',['RenderResult',['../namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804',1,'tram::Audio::Spatial']]],\n  ['reparent_87',['Reparent',['../classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590',1,'tram::AnimationComponent']]],\n  ['repeat_88',['repeat',['../classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303',1,'tram::AudioComponent']]],\n  ['repeats_89',['repeats',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c',1,'tram::AnimationComponent::AnimationPlaybackInfo::repeats()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8',1,'tram::Ext::Kitchensink::AnimState::repeats()']]],\n  ['reporterrorwarning_90',['reportErrorWarning',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['requestanimationcomponent_91',['RequestAnimationComponent',['../classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d',1,'tram::Decoration']]],\n  ['requester_92',['requester',['../structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9',1,'tram::Async::ResourceRequest']]],\n  ['requestnotification_93',['RequestNotification',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5',1,'tram::Async']]],\n  ['requestresource_94',['RequestResource',['../namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2',1,'tram::Async::RequestResource(EntityComponent *requester, Resource *resource)'],['../namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f',1,'tram::Async::RequestResource(void(*callback)(void *data), void *data, Resource *resource)']]],\n  ['reset_95',['reset',['../classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3',1,'tram::Stack::reset()'],['../classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0',1,'tram::StackPool::reset()']]],\n  ['reset_96',['Reset',['../classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152',1,'tram::Stack::Reset()'],['../classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832',1,'tram::StackPool::Reset()']]],\n  ['reset_5ferror_97',['reset_error',['../classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd',1,'tram::FileReaderParser::reset_error()'],['../classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435',1,'tram::TextReaderParser::reset_error()']]],\n  ['reset_5fflags_98',['reset_flags',['../classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6',1,'tram::File']]],\n  ['resetcollisions_99',['ResetCollisions',['../classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8',1,'tram::TriggerComponent']]],\n  ['resetmove_100',['ResetMove',['../classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5',1,'tram::FPSControllerComponent::ResetMove()'],['../classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838',1,'tram::RaycastControllerComponent::ResetMove()']]],\n  ['resource_101',['resource',['../structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65',1,'tram::Async::ResourceRequest::resource()'],['../classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea',1,'tram::ResourceProxy::resource()']]],\n  ['resource_102',['Resource',['../classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3',1,'tram::Resource::Resource()'],['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e',1,'tram::Stats::Resource()'],['../classtram_1_1_resource.html',1,'tram::Resource']]],\n  ['resource_2eh_103',['resource.h',['../resource_8h.html',1,'']]],\n  ['resource_5fdrawcall_104',['RESOURCE_DRAWCALL',['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635',1,'tram::Stats']]],\n  ['resource_5flimit_5fcollision_5fmodel_105',['RESOURCE_LIMIT_COLLISION_MODEL',['../namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3',1,'tram']]],\n  ['resource_5flimit_5flight_5fgraph_106',['RESOURCE_LIMIT_LIGHT_GRAPH',['../namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce',1,'tram']]],\n  ['resource_5flimit_5fmaterial_107',['RESOURCE_LIMIT_MATERIAL',['../namespacetram.html#a204e0f9d92f93902f454380c35b33c49',1,'tram']]],\n  ['resource_5flimit_5fmodel_108',['RESOURCE_LIMIT_MODEL',['../namespacetram.html#a824fea7217919eb6958e08a8bbab50d1',1,'tram']]],\n  ['resource_5flimit_5fpath_109',['RESOURCE_LIMIT_PATH',['../namespacetram.html#aaffd4a95c2adf2e132260b84190ca660',1,'tram']]],\n  ['resource_5flimit_5fsound_110',['RESOURCE_LIMIT_SOUND',['../namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf',1,'tram']]],\n  ['resource_5flimit_5fsound_5fgraph_111',['RESOURCE_LIMIT_SOUND_GRAPH',['../namespacetram.html#a899ede00065e962b5ca2528841e45aa7',1,'tram']]],\n  ['resource_5flimit_5fsprite_112',['RESOURCE_LIMIT_SPRITE',['../namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e',1,'tram']]],\n  ['resource_5floader_5fqueue_5flimit_113',['RESOURCE_LOADER_QUEUE_LIMIT',['../namespacetram.html#ae549eb9876cd460a36ec048cd029af97',1,'tram']]],\n  ['resource_5floader_5frequest_5flimit_114',['RESOURCE_LOADER_REQUEST_LIMIT',['../namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03',1,'tram']]],\n  ['resource_5fvram_115',['RESOURCE_VRAM',['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998',1,'tram::Stats']]],\n  ['resourceproxy_116',['ResourceProxy',['../classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d',1,'tram::EntityComponent::ResourceProxy()'],['../classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c',1,'tram::ResourceProxy::ResourceProxy()'],['../classtram_1_1_resource_proxy.html',1,'tram::ResourceProxy&lt; T &gt;']]],\n  ['resourceready_117',['ResourceReady',['../classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40',1,'tram::EntityComponent']]],\n  ['resourcerequest_118',['ResourceRequest',['../structtram_1_1_async_1_1_resource_request.html',1,'tram::Async']]],\n  ['resources_5fwaiting_119',['resources_waiting',['../classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce',1,'tram::EntityComponent']]],\n  ['restorecolor_120',['RestoreColor',['../namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5',1,'tram::GUI']]],\n  ['restorefont_121',['RestoreFont',['../namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec',1,'tram::GUI']]],\n  ['result_5fpaths_122',['result_paths',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e',1,'tram::Audio::Spatial::AudioSource']]],\n  ['rgbcolor_123',['RGBColor',['../namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb',1,'tram::Render::API']]],\n  ['right_124',['right',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6',1,'tram::AABBTree::Node::right()'],['../structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f',1,'tram::NavmeshNode::right()']]],\n  ['rigidbody_5flimit_125',['RIGIDBODY_LIMIT',['../namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a',1,'tram']]],\n  ['rigidbody_5fmetadata_5fpool_126',['rigidbody_metadata_pool',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681',1,'tram::Physics::API']]],\n  ['rigidbody_5ft_127',['rigidbody_t',['../structtram_1_1_physics_1_1rigidbody__t.html',1,'tram::Physics']]],\n  ['rigidbodymetadata_128',['RigidbodyMetadata',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html',1,'tram::Physics::API']]],\n  ['roll_129',['roll',['../structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9',1,'tram::Render::Bone']]],\n  ['root_130',['root',['../classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f',1,'tram::Octree::root()'],['../classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c',1,'tram::AABBTree::root()']]],\n  ['rotate_5ffollowing_131',['rotate_following',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['rotateaabb_132',['RotateAABB',['../namespacetram.html#aecd3454b9944728f9e8beca79fb86a4b',1,'tram::RotateAABB(vec3 &amp;min, vec3 &amp;max, mat4 rotation)'],['../namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55',1,'tram::RotateAABB(vec3 &amp;min, vec3 &amp;max, quat rotation)']]],\n  ['rotation_133',['rotation',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423',1,'tram::Ext::Camera::Camera::rotation()'],['../classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a',1,'tram::DecalComponent::rotation()'],['../classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb',1,'tram::RenderComponent::rotation()'],['../classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62',1,'tram::Entity::rotation()'],['../structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5',1,'tram::SharedEntityData::rotation()'],['../structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f',1,'tram::Render::SpritePoint::rotation()'],['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e',1,'tram::Physics::API::CallbackMotionState::rotation()'],['../structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83',1,'tram::Render::Keyframe::rotation()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1',1,'tram::Physics::API::CollisionShapeTransform::rotation()']]],\n  ['run_134',['Run',['../classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995',1,'tram::RaycastControllerComponent::Run()'],['../classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615',1,'tram::FPSControllerComponent::Run()'],['../classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121',1,'tram::ControllerComponent::Run()']]],\n  ['run_5fspeed_135',['run_speed',['../classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6',1,'tram::FPSControllerComponent::run_speed()'],['../classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed',1,'tram::RaycastControllerComponent::run_speed()']]],\n  ['running_136',['running',['../classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9',1,'tram::FPSControllerComponent::running()'],['../classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea',1,'tram::RaycastControllerComponent::running()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_13.js",
    "content": "var searchData=\n[\n  ['sample_0',['sample',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e',1,'tram::Audio::Spatial::AudioRender']]],\n  ['sample_5frate_1',['sample_rate',['../classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911',1,'tram::Audio::Sound::sample_rate()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f',1,'tram::Audio::Spatial::AudioBuffer::sample_rate()']]],\n  ['samplerate_5f11025_2',['SAMPLERATE_11025',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136',1,'tram::Audio::Spatial']]],\n  ['samplerate_5f22050_3',['SAMPLERATE_22050',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67',1,'tram::Audio::Spatial']]],\n  ['samplerate_5f44100_4',['SAMPLERATE_44100',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32',1,'tram::Audio::Spatial']]],\n  ['sampling_5fdirection_5',['sampling_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d',1,'tram::Audio::Spatial::PathExplorationResult']]],\n  ['sanitizedata_6',['SanitizeData',['../classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134',1,'tram::Scriptable']]],\n  ['save_7',['Save',['../namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77',1,'tram::Settings']]],\n  ['saveimagetodisk_8',['SaveImageToDisk',['../namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d',1,'tram::Platform']]],\n  ['scale_9',['scale',['../classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c',1,'tram::RenderComponent::scale()'],['../classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca',1,'tram::DecalComponent::scale()'],['../structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5',1,'tram::Render::Keyframe::scale()']]],\n  ['scanline_10',['Scanline',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html',1,'tram::Render::API']]],\n  ['scanline_5flength_11',['scanline_length',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169',1,'tram::Render::API::ScanlineBuffer']]],\n  ['scanlinebuffer_12',['ScanlineBuffer',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html',1,'tram::Render::API']]],\n  ['scanlineconverttriangle_13',['ScanlineConvertTriangle',['../namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449',1,'tram::Render::API']]],\n  ['scanlines_14',['scanlines',['../namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7',1,'tram::Render::API::scanlines()'],['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019',1,'tram::Render::API::ScanlineBuffer::scanlines()']]],\n  ['scene_2ecpp_15',['scene.cpp',['../scene_8cpp.html',1,'']]],\n  ['scene_2eh_16',['scene.h',['../scene_8h.html',1,'']]],\n  ['screen_5fclear_5fcolor_17',['screen_clear_color',['../namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e',1,'tram::Render::API']]],\n  ['screenclose_18',['ScreenClose',['../namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487',1,'tram::UI']]],\n  ['screenheight_19',['screenHeight',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['screenresize_20',['ScreenResize',['../namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282',1,'tram::UI']]],\n  ['screenwidth_21',['screenWidth',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['script_22',['script',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5',1,'tram::Ext::Kitchensink::QuestVariable::script()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070',1,'tram::Ext::Kitchensink::AIAgent::script()']]],\n  ['script_23',['Script',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['script_2ecpp_24',['script.cpp',['../entities_2script_8cpp.html',1,'(Global Namespace)'],['../framework_2script_8cpp.html',1,'(Global Namespace)']]],\n  ['script_2eh_25',['script.h',['../framework_2script_8h.html',1,'(Global Namespace)'],['../entities_2script_8h.html',1,'(Global Namespace)']]],\n  ['scriptable_26',['Scriptable',['../classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7',1,'tram::Scriptable::Scriptable()'],['../classtram_1_1_scriptable.html',1,'tram::Scriptable&lt; T &gt;']]],\n  ['scriptable_5fentity_5ftype_5flimit_27',['SCRIPTABLE_ENTITY_TYPE_LIMIT',['../namespacetram.html#afde783f76b29484fca014a71379688da',1,'tram']]],\n  ['scriptabletypeinfo_28',['ScriptableTypeInfo',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html',1,'tram::ScriptableType']]],\n  ['sdl_2ecpp_29',['sdl.cpp',['../sdl_8cpp.html',1,'']]],\n  ['search_5fstring_5flength_30',['SEARCH_STRING_LENGTH',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d',1,'tram::Ext::Kitchensink']]],\n  ['select_31',['SELECT',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa',1,'tram::Message']]],\n  ['selected_32',['SELECTED',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6',1,'tram::Event']]],\n  ['selected_5fcamera_33',['selected_camera',['../namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc',1,'tram::Ext::Camera']]],\n  ['send_34',['Send',['../structtram_1_1_message.html#a9e97e1f98831bf5a18bf28a7f6ece953',1,'tram::Message::Send(const Message &amp;message, float delay)'],['../structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8',1,'tram::Message::Send(const Message &amp;message)']]],\n  ['sender_35',['sender',['../structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94',1,'tram::Message::sender()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256',1,'tram::Ext::Menu::MessageIntercept::sender()']]],\n  ['serialization_2eh_36',['serialization.h',['../serialization_8h.html',1,'']]],\n  ['serialize_37',['Serialize',['../classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae',1,'tram::Decoration::Serialize()'],['../classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d',1,'tram::Light::Serialize()'],['../classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09',1,'tram::Marker::Serialize()'],['../classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61',1,'tram::Player::Serialize()'],['../classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6',1,'tram::Scriptable::Serialize()'],['../classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794',1,'tram::Sound::Serialize()'],['../classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f',1,'tram::StaticWorldObject::Serialize()'],['../classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f',1,'tram::Trigger::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f',1,'tram::Ext::Kitchensink::Button::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30',1,'tram::Ext::Kitchensink::Breakable::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157',1,'tram::Ext::Kitchensink::Water::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9',1,'tram::Ext::Kitchensink::Train::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802',1,'tram::Ext::Kitchensink::Pickup::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3',1,'tram::Ext::Kitchensink::DebugText::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738',1,'tram::Ext::Kitchensink::DebugShape::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43',1,'tram::Ext::Kitchensink::TriggerAutosave::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a',1,'tram::Ext::Kitchensink::TriggerHurt::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359',1,'tram::Ext::Kitchensink::TriggerOnce::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e',1,'tram::Ext::Kitchensink::TriggerPush::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734',1,'tram::Ext::Kitchensink::TriggerRemove::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382',1,'tram::Ext::Kitchensink::TriggerTeleport::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab',1,'tram::Ext::Kitchensink::QuestEntity::Serialize()'],['../classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488',1,'tram::Entity::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546',1,'tram::Ext::Kitchensink::TriggerMultiple::Serialize()'],['../classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934',1,'tram::Crate::Serialize()']]],\n  ['serializestring_38',['SerializeString',['../classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528',1,'tram::Player']]],\n  ['set_39',['set',['../classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1',1,'tram::ResourceProxy']]],\n  ['set_40',['Set',['../namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5',1,'tram::Settings']]],\n  ['set_5fanimation_41',['SET_ANIMATION',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8',1,'tram::Message']]],\n  ['set_5fflag_5foff_42',['SET_FLAG_OFF',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8',1,'tram::Message']]],\n  ['set_5fflag_5fon_43',['SET_FLAG_ON',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d',1,'tram::Message']]],\n  ['set_5fprogress_44',['SET_PROGRESS',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b',1,'tram::Message']]],\n  ['set_5fskip_5fnewline_45',['set_skip_newline',['../classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1',1,'tram::FileReaderParser']]],\n  ['set_5fskip_5fvalue_46',['set_skip_value',['../classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a',1,'tram::FileReaderParser']]],\n  ['set_5ftransform_5fcallback_47',['set_transform_callback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda',1,'tram::Physics::API::CallbackMotionState']]],\n  ['set_5ftrf_5fcallback_48',['set_trf_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455',1,'tram::Physics::API']]],\n  ['setactivationcallback_49',['SetActivationCallback',['../classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892',1,'tram::TriggerComponent']]],\n  ['setactive_50',['SetActive',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508',1,'tram::Ext::Camera::Camera']]],\n  ['setambientcolor_51',['SetAmbientColor',['../namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2',1,'tram::Render']]],\n  ['setandstore_52',['SetAndStore',['../namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643',1,'tram::Settings']]],\n  ['setangularfactor_53',['SetAngularFactor',['../classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999',1,'tram::PhysicsComponent']]],\n  ['setanimationcomponent_54',['SetAnimationComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['setanimationstatecomponent_55',['SetAnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['setanimationtable_56',['SetAnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['setarmature_57',['SetArmature',['../classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88',1,'tram::RenderComponent']]],\n  ['setattribute_58',['SetAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64',1,'tram::Ext::Kitchensink::AttributeContainer::SetAttribute()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248',1,'tram::Ext::Kitchensink::CharacterClass::SetAttribute()']]],\n  ['setaudiosourcebuffer_59',['SetAudioSourceBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046',1,'tram::Audio::API']]],\n  ['setaudiosourcegain_60',['SetAudioSourceGain',['../namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f',1,'tram::Audio::API']]],\n  ['setaudiosourcepitch_61',['SetAudioSourcePitch',['../namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6',1,'tram::Audio::API']]],\n  ['setaudiosourceposition_62',['SetAudioSourcePosition',['../namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b',1,'tram::Audio::API']]],\n  ['setaudiosourcerepeating_63',['SetAudioSourceRepeating',['../namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c',1,'tram::Audio::API']]],\n  ['setaudiosourcevelocity_64',['SetAudioSourceVelocity',['../namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570',1,'tram::Audio::API']]],\n  ['setautoload_65',['SetAutoLoad',['../classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e',1,'tram::Entity']]],\n  ['setautomaticloading_66',['SetAutomaticLoading',['../classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859',1,'tram::WorldCell']]],\n  ['setaxissensitivity_67',['SetAxisSensitivity',['../namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5',1,'tram::UI']]],\n  ['setbasedisposition_68',['SetBaseDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2',1,'tram::Ext::Kitchensink::Character']]],\n  ['setbobbing_69',['SetBobbing',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingcallback_70',['SetBobbingCallback',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingdistance_71',['SetBobbingDistance',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingtilt_72',['SetBobbingTilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobspeed_73',['SetBobSpeed',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setcharacterloyalty_74',['SetCharacterLoyalty',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setcharacterrank_75',['SetCharacterRank',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setcollisiongroup_76',['SetCollisionGroup',['../classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75',1,'tram::TriggerComponent::SetCollisionGroup()'],['../classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e',1,'tram::PhysicsComponent::SetCollisionGroup()'],['../classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4',1,'tram::RaycastControllerComponent::SetCollisionGroup()'],['../classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79',1,'tram::FPSControllerComponent::SetCollisionGroup()']]],\n  ['setcollisionmask_77',['SetCollisionMask',['../classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4',1,'tram::TriggerComponent::SetCollisionMask()'],['../classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10',1,'tram::PhysicsComponent::SetCollisionMask()']]],\n  ['setcollisions_78',['SetCollisions',['../classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47',1,'tram::ControllerComponent']]],\n  ['setcollisionsize_79',['SetCollisionSize',['../classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef',1,'tram::RaycastControllerComponent::SetCollisionSize()'],['../classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70',1,'tram::FPSControllerComponent::SetCollisionSize()']]],\n  ['setcolor_80',['SetColor',['../namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6',1,'tram::GUI::SetColor()'],['../classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b',1,'tram::LightComponent::SetColor()'],['../classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb',1,'tram::RenderComponent::SetColor()'],['../classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8',1,'tram::Render::Material::SetColor()']]],\n  ['setconsolelogcallback_81',['SetConsoleLogCallback',['../namespacetram.html#ad6e944197c5e9252268255850e7d15fb',1,'tram::SetConsoleLogCallback(void(*callback)(int, const char *))'],['../namespacetram.html#aaf2fa22ee1b4ccc8fc03fe49402db0c5',1,'tram::SetConsoleLogCallback(void(int, const char *))']]],\n  ['setcontents_82',['SetContents',['../classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80',1,'tram::FileWriter::SetContents()'],['../classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c',1,'tram::DiskWriter::SetContents()']]],\n  ['setcontrollercomponent_83',['SetControllerComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf',1,'tram::Ext::Kitchensink::AIAgent::SetControllerComponent()'],['../classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56',1,'tram::PlayerComponent::SetControllerComponent()']]],\n  ['setcrouchspeed_84',['SetCrouchSpeed',['../classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c',1,'tram::RaycastControllerComponent::SetCrouchSpeed()'],['../classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72',1,'tram::FPSControllerComponent::SetCrouchSpeed()']]],\n  ['setcursor_85',['SetCursor',['../namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf',1,'tram::UI::SetCursor()'],['../namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a',1,'tram::Platform::Window::SetCursor()']]],\n  ['setcursordelayed_86',['SetCursorDelayed',['../namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8',1,'tram::GUI']]],\n  ['setcursorposition_87',['SetCursorPosition',['../namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e',1,'tram::Platform::Window']]],\n  ['setdebugdraw_88',['SetDebugDraw',['../classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8',1,'tram::WorldCell']]],\n  ['setdebugdrawing_89',['SetDebugDrawing',['../classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758',1,'tram::PhysicsComponent']]],\n  ['setdebuginfodraw_90',['SetDebugInfoDraw',['../classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd',1,'tram::ControllerComponent::SetDebugInfoDraw()'],['../classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e',1,'tram::AnimationComponent::SetDebugInfoDraw()'],['../classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf',1,'tram::AudioComponent::SetDebugInfoDraw()']]],\n  ['setdebugmode_91',['setDebugMode',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['setdebugmode_92',['SetDebugMode',['../namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f',1,'tram::Render::API']]],\n  ['setdectivationcallback_93',['SetDectivationCallback',['../classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d',1,'tram::TriggerComponent']]],\n  ['setdevice_94',['SetDevice',['../namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6',1,'tram::Render::API']]],\n  ['setdirection_95',['SetDirection',['../classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1',1,'tram::LightComponent']]],\n  ['setdirectionalight_96',['SetDirectionaLight',['../classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d',1,'tram::RenderComponent']]],\n  ['setdisplaylogcallback_97',['SetDisplayLogCallback',['../namespacetram.html#aeb62c461f07f0472724808f099abd05d',1,'tram::SetDisplayLogCallback(void(*callback)(int, const char *))'],['../namespacetram.html#a6386f26cd40ff74930ce7855564b513d',1,'tram::SetDisplayLogCallback(void(int, const char *))']]],\n  ['setdistance_98',['SetDistance',['../classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da',1,'tram::LightComponent']]],\n  ['setdrawlistaabb_99',['SetDrawListAABB',['../namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728',1,'tram::Render::API']]],\n  ['setdrawlistcolors_100',['SetDrawListColors',['../namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1',1,'tram::Render::API']]],\n  ['setdrawlistindexarray_101',['SetDrawListIndexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a',1,'tram::Render::API']]],\n  ['setdrawlistindexrange_102',['SetDrawListIndexRange',['../namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440',1,'tram::Render::API']]],\n  ['setdrawlistmaterials_103',['SetDrawListMaterials',['../namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70',1,'tram::Render::API']]],\n  ['setdrawlistshader_104',['SetDrawListShader',['../namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed',1,'tram::Render::API']]],\n  ['setdrawlistspecularities_105',['SetDrawListSpecularities',['../namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8',1,'tram::Render::API']]],\n  ['setdrawlistspritearray_106',['SetDrawListSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7',1,'tram::Render::API']]],\n  ['setdrawlisttextureoffsets_107',['SetDrawListTextureOffsets',['../namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d',1,'tram::Render::API']]],\n  ['setdrawlisttextures_108',['SetDrawListTextures',['../namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c',1,'tram::Render::API']]],\n  ['setdrawlistvertexarray_109',['SetDrawListVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16',1,'tram::Render::API']]],\n  ['setdrawtrigger_110',['SetDrawTrigger',['../classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038',1,'tram::Trigger']]],\n  ['setentity_111',['SetEntity',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e',1,'tram::Ext::Menu::SignalMenu::SetEntity()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1',1,'tram::Ext::Menu::MessageSend::SetEntity()']]],\n  ['setenvironmentmap_112',['SetEnvironmentMap',['../namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf',1,'tram::Render::API::SetEnvironmentMap()'],['../classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd',1,'tram::RenderComponent::SetEnvironmentMap()']]],\n  ['seteventtype_113',['SetEventType',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469',1,'tram::Ext::Menu::EventEmit']]],\n  ['setexponent_114',['SetExponent',['../classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f',1,'tram::LightComponent']]],\n  ['setfade_115',['SetFade',['../classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f',1,'tram::AnimationComponent']]],\n  ['setfadedistance_116',['SetFadeDistance',['../namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a',1,'tram::Render::API']]],\n  ['setfardistance_117',['SetFarDistance',['../classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266',1,'tram::Render::Model']]],\n  ['setfiltercallback_118',['SetFilterCallback',['../classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5',1,'tram::TriggerComponent']]],\n  ['setflag_119',['SetFlag',['../classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e',1,'tram::Entity::SetFlag()'],['../classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050',1,'tram::WorldCell::SetFlag()']]],\n  ['setflags_120',['SetFlags',['../namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896',1,'tram::Render::API']]],\n  ['setflyspeed_121',['SetFlySpeed',['../classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9',1,'tram::RaycastControllerComponent::SetFlySpeed()'],['../classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6',1,'tram::FPSControllerComponent::SetFlySpeed()']]],\n  ['setfollowing_122',['SetFollowing',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3',1,'tram::Ext::Camera::Camera']]],\n  ['setfollowinginterpolation_123',['SetFollowingInterpolation',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setfollowinglookat_124',['SetFollowingLookat',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf',1,'tram::Ext::Camera::Camera']]],\n  ['setfollowingoffset_125',['SetFollowingOffset',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setfont_126',['SetFont',['../namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a',1,'tram::GUI']]],\n  ['setframe_127',['SetFrame',['../classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08',1,'tram::AnimationComponent::SetFrame()'],['../classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6',1,'tram::DecalComponent::SetFrame()']]],\n  ['setfriction_128',['SetFriction',['../classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894',1,'tram::FPSControllerComponent::SetFriction()'],['../classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f',1,'tram::RaycastControllerComponent::SetFriction()']]],\n  ['setfromraw_129',['SetFromRaw',['../namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea',1,'tram::Settings']]],\n  ['setfullscreen_130',['SetFullscreen',['../namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4',1,'tram::Platform::Window']]],\n  ['setfunction_131',['SetFunction',['../namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019',1,'tram::Script::SetFunction()'],['../classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703',1,'tram::Script::Interface::SetFunction()']]],\n  ['setglobal_132',['SetGlobal',['../namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6',1,'tram::Script::SetGlobal()'],['../classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b',1,'tram::Script::Interface::SetGlobal()']]],\n  ['setglyph_133',['SetGlyph',['../namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1',1,'tram::GUI']]],\n  ['setglyphdefaults_134',['SetGlyphDefaults',['../namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d',1,'tram::GUI']]],\n  ['setincrement_135',['SetIncrement',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5',1,'tram::Ext::Kitchensink::QuestTrigger']]],\n  ['setinitialized_136',['SetInitialized',['../namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d',1,'tram::System']]],\n  ['setinputstate_137',['SetInputState',['../namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35',1,'tram::UI']]],\n  ['setinterceptcallback_138',['SetInterceptCallback',['../structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f',1,'tram::Message']]],\n  ['setinterface_139',['SetInterface',['../namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073',1,'tram::Script']]],\n  ['setinterior_140',['SetInterior',['../classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf',1,'tram::WorldCell']]],\n  ['setinteriorlights_141',['SetInteriorLights',['../classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9',1,'tram::WorldCell']]],\n  ['setkeyboardlook_142',['SetKeyboardLook',['../classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa',1,'tram::PlayerComponent']]],\n  ['setkeyframe_143',['SetKeyframe',['../classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba',1,'tram::AnimationComponent']]],\n  ['setkinematic_144',['SetKinematic',['../classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090',1,'tram::PhysicsComponent']]],\n  ['setlayer_145',['SetLayer',['../namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50',1,'tram::Render::API::SetLayer()'],['../classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc',1,'tram::RenderComponent::SetLayer()']]],\n  ['setlayermask_146',['SetLayerMask',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8',1,'tram::Ext::Camera::Camera']]],\n  ['setlightdraw_147',['SetLightDraw',['../classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd',1,'tram::LightComponent']]],\n  ['setlightingparameters_148',['SetLightingParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c',1,'tram::Render::API']]],\n  ['setlightmap_149',['SetLightmap',['../classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874',1,'tram::RenderComponent::SetLightmap()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950',1,'tram::Render::API::SetLightmap(drawlistentry_t entry, texturehandle_t lightmap)']]],\n  ['setlightparameters_150',['SetLightParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39',1,'tram::Render::API']]],\n  ['setlights_151',['SetLights',['../namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a',1,'tram::Render::API']]],\n  ['setlinearfactor_152',['SetLinearFactor',['../classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2',1,'tram::PhysicsComponent']]],\n  ['setlistenergain_153',['SetListenerGain',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704',1,'tram::Audio::API']]],\n  ['setlistenerorientation_154',['SetListenerOrientation',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b',1,'tram::Audio::API::SetListenerOrientation()'],['../namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab',1,'tram::Audio::SetListenerOrientation()']]],\n  ['setlistenerposition_155',['SetListenerPosition',['../namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b',1,'tram::Audio::API::SetListenerPosition()'],['../namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727',1,'tram::Audio::SetListenerPosition()']]],\n  ['setlistenertransform_156',['SetListenerTransform',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876',1,'tram::Ext::Camera::Camera']]],\n  ['setlocation_157',['SetLocation',['../classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df',1,'tram::AudioComponent::SetLocation()'],['../classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6',1,'tram::DecalComponent::SetLocation()'],['../classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a',1,'tram::LightComponent::SetLocation()'],['../classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a',1,'tram::PhysicsComponent::SetLocation()'],['../classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4',1,'tram::RenderComponent::SetLocation()'],['../classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc',1,'tram::TriggerComponent::SetLocation()'],['../classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de',1,'tram::Entity::SetLocation()']]],\n  ['setlookdirection_158',['SetLookDirection',['../classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce',1,'tram::ControllerComponent']]],\n  ['setmass_159',['SetMass',['../classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b',1,'tram::PhysicsComponent']]],\n  ['setmaterial_160',['SetMaterial',['../classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc',1,'tram::Render::Sprite']]],\n  ['setmaterialcolor_161',['SetMaterialColor',['../namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef',1,'tram::Render::API']]],\n  ['setmaterialfilter_162',['SetMaterialFilter',['../classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc',1,'tram::Render::Material']]],\n  ['setmaterialproperty_163',['SetMaterialProperty',['../classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04',1,'tram::Render::Material']]],\n  ['setmaterialreflectivity_164',['SetMaterialReflectivity',['../namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30',1,'tram::Render::API']]],\n  ['setmaterialspecularexponent_165',['SetMaterialSpecularExponent',['../namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f',1,'tram::Render::API']]],\n  ['setmaterialspeculartransparency_166',['SetMaterialSpecularTransparency',['../namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be',1,'tram::Render::API']]],\n  ['setmaterialspecularweight_167',['SetMaterialSpecularWeight',['../namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56',1,'tram::Render::API']]],\n  ['setmaterialtexture_168',['SetMaterialTexture',['../namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14',1,'tram::Render::API']]],\n  ['setmaterialtype_169',['SetMaterialType',['../classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e',1,'tram::Render::Material']]],\n  ['setmatrix_170',['SetMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22',1,'tram::Render::API']]],\n  ['setmediumlist_171',['SetMediumList',['../classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab',1,'tram::FileWriter']]],\n  ['setmessagetype_172',['SetMessageType',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7',1,'tram::Ext::Menu::MessageSend']]],\n  ['setmodel_173',['SetModel',['../classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2',1,'tram::AnimationComponent::SetModel()'],['../classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85',1,'tram::PhysicsComponent::SetModel()'],['../classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782',1,'tram::AnimationComponent::SetModel()'],['../classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b',1,'tram::RenderComponent::SetModel()'],['../classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc',1,'tram::TriggerComponent::SetModel(name_t model)'],['../classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9',1,'tram::TriggerComponent::SetModel(Physics::CollisionModel *model)']]],\n  ['setmonitor_174',['SetMonitor',['../namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213',1,'tram::Platform::Window']]],\n  ['setmouselook_175',['SetMouselook',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setneardistance_176',['SetNearDistance',['../classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604',1,'tram::Render::Model']]],\n  ['setnoclip_177',['SetNoclip',['../classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d',1,'tram::PlayerComponent']]],\n  ['setobjective_178',['SetObjective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8',1,'tram::Ext::Kitchensink::QuestTrigger']]],\n  ['setoffset_179',['SetOffset',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2',1,'tram::Ext::Menu::InterceptMenu']]],\n  ['setonanimationfinishcallback_180',['SetOnAnimationFinishCallback',['../classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a',1,'tram::AnimationComponent']]],\n  ['setorientation_181',['SetOrientation',['../classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2',1,'tram::PathFollower']]],\n  ['setorthoratio_182',['SetOrthoRatio',['../namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32',1,'tram::Render']]],\n  ['setparameters_183',['SetParameters',['../classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3',1,'tram::StaticWorldObject::SetParameters()'],['../classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4',1,'tram::Trigger::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72',1,'tram::Ext::Kitchensink::Button::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d',1,'tram::Ext::Kitchensink::Breakable::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3',1,'tram::Ext::Kitchensink::Water::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798',1,'tram::Ext::Kitchensink::Train::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0',1,'tram::Ext::Kitchensink::Pickup::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483',1,'tram::Ext::Kitchensink::DebugText::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174',1,'tram::Ext::Kitchensink::DebugShape::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a',1,'tram::Ext::Kitchensink::TriggerAutosave::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b',1,'tram::Ext::Kitchensink::TriggerHurt::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45',1,'tram::Ext::Kitchensink::TriggerOnce::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967',1,'tram::Ext::Kitchensink::TriggerMultiple::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25',1,'tram::Ext::Kitchensink::TriggerPush::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa',1,'tram::Ext::Kitchensink::TriggerRemove::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1',1,'tram::Ext::Kitchensink::TriggerTeleport::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb',1,'tram::Ext::Kitchensink::QuestEntity::SetParameters()'],['../classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832',1,'tram::Entity::SetParameters()'],['../classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540',1,'tram::Crate::SetParameters()'],['../classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6',1,'tram::Decoration::SetParameters()'],['../classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f',1,'tram::Light::SetParameters()'],['../classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded',1,'tram::Marker::SetParameters()'],['../classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699',1,'tram::Player::SetParameters()'],['../classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68',1,'tram::Scriptable::SetParameters()'],['../classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa',1,'tram::Sound::SetParameters()']]],\n  ['setparent_184',['SetParent',['../classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a',1,'tram::EntityComponent']]],\n  ['setpause_185',['SetPause',['../classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a',1,'tram::AnimationComponent']]],\n  ['setpersistent_186',['SetPersistent',['../classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514',1,'tram::Entity']]],\n  ['setpicked_187',['SetPicked',['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c',1,'tram::Ext::Menu::EntityProperties::SetPicked()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4',1,'tram::Ext::Menu::WorldCellProperties::SetPicked()']]],\n  ['setplayspeed_188',['SetPlaySpeed',['../classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81',1,'tram::SpriteComponent']]],\n  ['setpose_189',['SetPose',['../namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0',1,'tram::Render::API']]],\n  ['setposition_190',['SetPosition',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93',1,'tram::Ext::Camera::Camera']]],\n  ['setprojectionmatrix_191',['SetProjectionMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d',1,'tram::Render::API']]],\n  ['setrawinput_192',['SetRawInput',['../namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945',1,'tram::Platform::Window']]],\n  ['setreflectivity_193',['SetReflectivity',['../classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be',1,'tram::Render::Material']]],\n  ['setrelation_194',['SetRelation',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setrenderdebug_195',['SetRenderDebug',['../classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded',1,'tram::RenderComponent']]],\n  ['setrepeating_196',['SetRepeating',['../classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9',1,'tram::AudioComponent']]],\n  ['setrepeats_197',['SetRepeats',['../classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb',1,'tram::AnimationComponent']]],\n  ['setrigidbodyangularfactor_198',['SetRigidbodyAngularFactor',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd',1,'tram::Physics::API']]],\n  ['setrigidbodycollisioncallback_199',['SetRigidbodyCollisionCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59',1,'tram::Physics::API']]],\n  ['setrigidbodycollisiongroup_200',['SetRigidbodyCollisionGroup',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5',1,'tram::Physics::API']]],\n  ['setrigidbodycollisionmask_201',['SetRigidbodyCollisionMask',['../namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e',1,'tram::Physics::API']]],\n  ['setrigidbodydebugdrawing_202',['SetRigidbodyDebugDrawing',['../namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d',1,'tram::Physics::API']]],\n  ['setrigidbodykinematic_203',['SetRigidbodyKinematic',['../namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882',1,'tram::Physics::API']]],\n  ['setrigidbodylinearfactor_204',['SetRigidbodyLinearFactor',['../namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a',1,'tram::Physics::API']]],\n  ['setrigidbodylocation_205',['SetRigidbodyLocation',['../namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166',1,'tram::Physics::API']]],\n  ['setrigidbodymass_206',['SetRigidbodyMass',['../namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7',1,'tram::Physics::API']]],\n  ['setrigidbodyrotation_207',['SetRigidbodyRotation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef',1,'tram::Physics::API']]],\n  ['setrigidbodytransformcallback_208',['SetRigidbodyTransformCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#ad0713a3c44d84eee3bd0823cb58705f6',1,'tram::Physics::API::SetRigidbodyTransformCallback(rigidbody_t rigidbody, std::pair&lt; vec3, quat &gt;(*get_transform_callback)(void *), void(*set_transform_callback)(void *, std::pair&lt; vec3, quat &gt;), void *data)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3',1,'tram::Physics::API::SetRigidbodyTransformCallback(rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void *data)']]],\n  ['setrigidbodyvelocity_209',['SetRigidbodyVelocity',['../namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7',1,'tram::Physics::API']]],\n  ['setrotatefollowing_210',['SetRotateFollowing',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setrotation_211',['SetRotation',['../classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad',1,'tram::DecalComponent::SetRotation()'],['../classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc',1,'tram::PhysicsComponent::SetRotation()'],['../classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74',1,'tram::RenderComponent::SetRotation()'],['../classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d',1,'tram::TriggerComponent::SetRotation()'],['../classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3',1,'tram::Entity::SetRotation()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93',1,'tram::Ext::Camera::Camera::SetRotation()']]],\n  ['setrunspeed_212',['SetRunSpeed',['../classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc',1,'tram::FPSControllerComponent::SetRunSpeed()'],['../classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a',1,'tram::RaycastControllerComponent::SetRunSpeed()']]],\n  ['setscale_213',['SetScale',['../classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c',1,'tram::DecalComponent::SetScale()'],['../classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3',1,'tram::RenderComponent::SetScale()'],['../namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc',1,'tram::Platform::Window::SetScale()'],['../namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5',1,'tram::Platform::SetScale()']]],\n  ['setscaling_214',['SetScaling',['../namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35',1,'tram::GUI']]],\n  ['setscreenclear_215',['SetScreenClear',['../namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70',1,'tram::Render::API']]],\n  ['setscreensize_216',['SetScreenSize',['../namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e',1,'tram::Render::SetScreenSize()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314',1,'tram::Render::API::SetScreenSize()']]],\n  ['setsearchlist_217',['SetSearchList',['../classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a',1,'tram::FileReader']]],\n  ['setselectedtext_218',['SetSelectedText',['../namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed',1,'tram::GUI']]],\n  ['setshape_219',['SetShape',['../classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c',1,'tram::PhysicsComponent::SetShape()'],['../classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e',1,'tram::TriggerComponent::SetShape()']]],\n  ['setsize_220',['SetSize',['../namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2',1,'tram::Platform::Window']]],\n  ['setsound_221',['SetSound',['../classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e',1,'tram::AudioComponent']]],\n  ['setsource_222',['SetSource',['../classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b',1,'tram::Render::Material']]],\n  ['setsourcedraw_223',['SetSourceDraw',['../classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3',1,'tram::AudioComponent']]],\n  ['setspecular_224',['SetSpecular',['../classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f',1,'tram::Render::Material']]],\n  ['setspeed_225',['SetSpeed',['../classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1',1,'tram::AnimationComponent']]],\n  ['setsphericalharmonic_226',['SetSphericalHarmonic',['../namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773',1,'tram::Render::API']]],\n  ['setsprite_227',['SetSprite',['../classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9',1,'tram::DecalComponent::SetSprite()'],['../classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941',1,'tram::ParticleComponent::SetSprite()'],['../classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2',1,'tram::SpriteComponent::SetSprite()']]],\n  ['setstate_228',['SetState',['../namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb',1,'tram::System']]],\n  ['setstateanimation_229',['SetStateAnimation',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['setstatenextstate_230',['SetStateNextState',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['setstepheight_231',['SetStepHeight',['../classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894',1,'tram::RaycastControllerComponent::SetStepHeight()'],['../classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f',1,'tram::FPSControllerComponent::SetStepHeight()']]],\n  ['setstorecollisions_232',['SetStoreCollisions',['../classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5',1,'tram::TriggerComponent']]],\n  ['setsuncolor_233',['SetSunColor',['../namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68',1,'tram::Render']]],\n  ['setsundirection_234',['SetSunDirection',['../namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff',1,'tram::Render']]],\n  ['setsystemloggingseverity_235',['SetSystemLoggingSeverity',['../namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07',1,'tram']]],\n  ['settextureoffset_236',['SetTextureOffset',['../classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a',1,'tram::RenderComponent']]],\n  ['settexturetype_237',['SetTextureType',['../classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689',1,'tram::Render::Material']]],\n  ['settilt_238',['SetTilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setting_5flimit_239',['SETTING_LIMIT',['../namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f',1,'tram::Settings']]],\n  ['settinginfo_240',['SettingInfo',['../structtram_1_1_settings_1_1_setting_info.html',1,'tram::Settings']]],\n  ['settings_2ecpp_241',['settings.cpp',['../settings_8cpp.html',1,'']]],\n  ['settings_2eh_242',['settings.h',['../settings_8h.html',1,'']]],\n  ['settingsmenu_243',['SettingsMenu',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html',1,'tram::Ext::Menu']]],\n  ['settitle_244',['SetTitle',['../namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5',1,'tram::Platform::Window']]],\n  ['settransformcallback_245',['SetTransformCallback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307',1,'tram::Physics::API::CallbackMotionState']]],\n  ['settriggercollisioncallback_246',['SetTriggerCollisionCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e',1,'tram::Physics::API']]],\n  ['settriggercollisiongroup_247',['SetTriggerCollisionGroup',['../namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810',1,'tram::Physics::API']]],\n  ['settriggercollisionmask_248',['SetTriggerCollisionMask',['../namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd',1,'tram::Physics::API']]],\n  ['settriggerlocation_249',['SetTriggerLocation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8',1,'tram::Physics::API']]],\n  ['settriggerrotation_250',['SetTriggerRotation',['../namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e',1,'tram::Physics::API']]],\n  ['setupdateparenttransform_251',['SetUpdateParentTransform',['../classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7',1,'tram::PhysicsComponent']]],\n  ['setupmodel_252',['SetupModel',['../classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268',1,'tram::Trigger::SetupModel()'],['../classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800',1,'tram::LightComponent::SetupModel()'],['../classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031',1,'tram::AudioComponent::SetupModel()']]],\n  ['setvalue_253',['SetValue',['../classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a',1,'tram::ValuePtr::SetValue()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af',1,'tram::Ext::Kitchensink::QuestTrigger::SetValue()']]],\n  ['setvariable_254',['SetVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e',1,'tram::Ext::Kitchensink::Quest']]],\n  ['setvelocity_255',['SetVelocity',['../classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394',1,'tram::PhysicsComponent']]],\n  ['setviewdistance_256',['SetViewDistance',['../namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb',1,'tram::Render']]],\n  ['setviewfov_257',['SetViewFov',['../namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d',1,'tram::Render']]],\n  ['setviewmatrix_258',['SetViewMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936',1,'tram::Render::API']]],\n  ['setviewparameters_259',['SetViewParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4',1,'tram::Render::API']]],\n  ['setviewposition_260',['SetViewPosition',['../namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8',1,'tram::Render']]],\n  ['setviewrotation_261',['SetViewRotation',['../namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7',1,'tram::Render']]],\n  ['setviewtransform_262',['SetViewTransform',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5',1,'tram::Ext::Camera::Camera']]],\n  ['setvolume_263',['SetVolume',['../namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3',1,'tram::Audio']]],\n  ['setvsync_264',['SetVsync',['../namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4',1,'tram::Platform::Window']]],\n  ['setwalkspeed_265',['SetWalkSpeed',['../classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3',1,'tram::RaycastControllerComponent::SetWalkSpeed()'],['../classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba',1,'tram::FPSControllerComponent::SetWalkSpeed(float speed)']]],\n  ['setwallcollisioncallback_266',['SetWallCollisionCallback',['../classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2',1,'tram::FPSControllerComponent::SetWallCollisionCallback()'],['../classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f',1,'tram::RaycastControllerComponent::SetWallCollisionCallback()']]],\n  ['setwebmainloop_267',['SetWebMainLoop',['../namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df',1,'tram::UI']]],\n  ['setweight_268',['SetWeight',['../classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c',1,'tram::AnimationComponent']]],\n  ['setwindowsize_269',['SetWindowSize',['../namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78',1,'tram::UI']]],\n  ['setwindowtitle_270',['SetWindowTitle',['../namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016',1,'tram::UI']]],\n  ['setworldtransform_271',['setWorldTransform',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7',1,'tram::Physics::API::CallbackMotionState']]],\n  ['severity_272',['Severity',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56',1,'tram']]],\n  ['shader_273',['shader',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b',1,'tram::Render::API::GLDrawListEntry']]],\n  ['shader_2ecpp_274',['shader.cpp',['../shader_8cpp.html',1,'']]],\n  ['shader_2eh_275',['shader.h',['../shader_8h.html',1,'']]],\n  ['shader_5flightmap_276',['SHADER_LIGHTMAP',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53',1,'tram::Render::API']]],\n  ['shader_5fnone_277',['SHADER_NONE',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4',1,'tram::Render::API']]],\n  ['shader_5fpath_278',['shader_path',['../namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e',1,'tram::Render::API']]],\n  ['shader_5fspecular_279',['SHADER_SPECULAR',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0',1,'tram::Render::API']]],\n  ['shaderbuffer_280',['ShaderBuffer',['../classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html',1,'tram::Render::API']]],\n  ['shaderflag_281',['ShaderFlag',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517',1,'tram::Render::API']]],\n  ['shaderflags_5ft_282',['shaderflags_t',['../namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976',1,'tram::Render::API']]],\n  ['shaderuniformmatrices_283',['ShaderUniformMatrices',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html',1,'tram::Render::API']]],\n  ['shaderuniformmodelmatrices_284',['ShaderUniformModelMatrices',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html',1,'tram::Render::API']]],\n  ['shake_5fmultiplier_285',['shake_multiplier',['../namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed',1,'tram::Ext::Camera']]],\n  ['shape_286',['shape',['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8',1,'tram::Physics::API::CollisionShapeTransform::shape()'],['../classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd',1,'tram::Physics::CollisionModel::shape()']]],\n  ['shape_287',['Shape',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470',1,'tram::Physics']]],\n  ['shape_5fbox_288',['SHAPE_BOX',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4',1,'tram::Physics']]],\n  ['shape_5fcapsule_289',['SHAPE_CAPSULE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070',1,'tram::Physics']]],\n  ['shape_5fcone_290',['SHAPE_CONE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b',1,'tram::Physics']]],\n  ['shape_5fcylinder_291',['SHAPE_CYLINDER',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04',1,'tram::Physics']]],\n  ['shape_5fhull_292',['SHAPE_HULL',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6',1,'tram::Physics']]],\n  ['shape_5fmesh_293',['SHAPE_MESH',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3',1,'tram::Physics']]],\n  ['shape_5fsphere_294',['SHAPE_SPHERE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de',1,'tram::Physics']]],\n  ['shapecast_295',['Shapecast',['../namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f',1,'tram::Physics::Shapecast()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d',1,'tram::Physics::API::Shapecast()']]],\n  ['shapecastcallback_296',['ShapecastCallback',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1',1,'tram::Physics::API::ShapecastCallback::ShapecastCallback()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html',1,'tram::Physics::API::ShapecastCallback']]],\n  ['sharedentitydata_297',['SharedEntityData',['../structtram_1_1_shared_entity_data.html',1,'tram']]],\n  ['short_5fname_298',['short_name',['../structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd',1,'tram::System::SystemInfo']]],\n  ['shouldexit_299',['ShouldExit',['../namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4',1,'tram::UI::ShouldExit()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b',1,'tram::Ext::Kitchensink::DialogController::ShouldExit()']]],\n  ['showerrordialog_300',['ShowErrorDialog',['../namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54',1,'tram::Platform']]],\n  ['signal_301',['Signal',['../structtram_1_1_signal.html',1,'tram']]],\n  ['signal_2ecpp_302',['signal.cpp',['../signal_8cpp.html',1,'']]],\n  ['signal_2eh_303',['signal.h',['../signal_8h.html',1,'']]],\n  ['signal_5fcount_304',['signal_count',['../classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1',1,'tram::SignalTable']]],\n  ['signal_5ft_305',['signal_t',['../namespacetram.html#a2efd897a3a954a002664292b5d6264d6',1,'tram']]],\n  ['signal_5ftype_5flimit_306',['SIGNAL_TYPE_LIMIT',['../namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73',1,'tram']]],\n  ['signalmenu_307',['SignalMenu',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html',1,'tram::Ext::Menu']]],\n  ['signals_308',['signals',['../classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397',1,'tram::SignalTable::signals()'],['../classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0',1,'tram::Entity::signals()']]],\n  ['signaltable_309',['SignalTable',['../classtram_1_1_signal_table.html',1,'tram']]],\n  ['size_310',['size',['../classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411',1,'tram::Hashmap::size()'],['../classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230',1,'tram::ValueArray::size()'],['../classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f',1,'tram::StackPool::size()'],['../classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc',1,'tram::Pool::size()'],['../classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4',1,'tram::Queue::size()'],['../classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2',1,'tram::Stack::size()'],['../structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8',1,'tram::Render::VertexAttribute::size()']]],\n  ['skip_5flinebreak_311',['skip_linebreak',['../classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f',1,'tram::File']]],\n  ['skip_5fnewline_312',['skip_newline',['../classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab',1,'tram::FileReaderParser::skip_newline()'],['../classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05',1,'tram::TextReaderParser::skip_newline()']]],\n  ['skip_5fnewline_5fflag_313',['skip_newline_flag',['../classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd',1,'tram::FileReaderParser']]],\n  ['skip_5fvalue_314',['skip_value',['../classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227',1,'tram::FileReaderParser']]],\n  ['skip_5fwhitespace_315',['skip_whitespace',['../classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e',1,'tram::FileReaderParser::skip_whitespace()'],['../classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897',1,'tram::TextReaderParser::skip_whitespace()']]],\n  ['sleep_316',['Sleep',['../classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc',1,'tram::PhysicsComponent']]],\n  ['sleeprigidbody_317',['SleepRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4',1,'tram::Physics::API']]],\n  ['slider_318',['Slider',['../namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8',1,'tram::GUI']]],\n  ['software_2ecpp_319',['software.cpp',['../software_8cpp.html',1,'']]],\n  ['software_2eh_320',['software.h',['../software_8h.html',1,'']]],\n  ['sound_321',['sound',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f',1,'tram::Ext::Kitchensink::Button::sound()'],['../classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb',1,'tram::Sound::sound()'],['../classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230',1,'tram::AudioComponent::sound()']]],\n  ['sound_322',['Sound',['../classtram_1_1_sound.html#aad69728aae94531aae365a3762d1a4e7',1,'tram::Sound::Sound(name_t sound, float volume, vec3 position)'],['../classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37',1,'tram::Sound::Sound(const SharedEntityData &amp;, const ValueArray &amp;)'],['../classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398',1,'tram::Audio::Sound::Sound()'],['../classtram_1_1_audio_1_1_sound.html',1,'tram::Audio::Sound'],['../classtram_1_1_sound.html',1,'tram::Sound']]],\n  ['sound_2ecpp_323',['sound.cpp',['../audio_2sound_8cpp.html',1,'(Global Namespace)'],['../entities_2sound_8cpp.html',1,'(Global Namespace)']]],\n  ['sound_2eh_324',['sound.h',['../entities_2sound_8h.html',1,'(Global Namespace)'],['../audio_2sound_8h.html',1,'(Global Namespace)']]],\n  ['sound_5fbuffer_325',['sound_buffer',['../classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53',1,'tram::Audio::Sound']]],\n  ['sound_5fclose_326',['SOUND_CLOSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fdata_327',['sound_data',['../classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d',1,'tram::Audio::Sound']]],\n  ['sound_5fend_5fclose_328',['SOUND_END_CLOSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fend_5fopen_329',['SOUND_END_OPEN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fflags_330',['sound_flags',['../classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494',1,'tram::Sound']]],\n  ['sound_5fhit_331',['SOUND_HIT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fjump_5fon_332',['SOUND_JUMP_ON',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8',1,'tram::Ext::Kitchensink']]],\n  ['sound_5flength_333',['sound_length',['../classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e',1,'tram::Audio::Sound']]],\n  ['sound_5flocked_334',['SOUND_LOCKED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75',1,'tram::Ext::Kitchensink']]],\n  ['sound_5flooping_335',['SOUND_LOOPING',['../namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d',1,'tram']]],\n  ['sound_5fopen_336',['SOUND_OPEN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fstart_5fon_5fload_337',['SOUND_START_ON_LOAD',['../namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8',1,'tram']]],\n  ['sound_5fwalk_5fon_338',['SOUND_WALK_ON',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1',1,'tram::Ext::Kitchensink']]],\n  ['soundaction_339',['SoundAction',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53',1,'tram::Ext::Kitchensink']]],\n  ['soundgraph_340',['SoundGraph',['../classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c',1,'tram::Audio::SoundGraph::SoundGraph()'],['../classtram_1_1_audio_1_1_sound_graph.html',1,'tram::Audio::SoundGraph'],['../classtram_1_1_render_1_1_sound_graph.html',1,'SoundGraph']]],\n  ['soundtable_341',['SoundTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html',1,'tram::Ext::Kitchensink']]],\n  ['soundtable_2ecpp_342',['soundtable.cpp',['../soundtable_8cpp.html',1,'']]],\n  ['soundtable_2eh_343',['soundtable.h',['../soundtable_8h.html',1,'']]],\n  ['source_344',['source',['../classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171',1,'tram::AudioComponent::source()'],['../classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394',1,'tram::Render::Material::source()'],['../classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91',1,'tram::Render::Model::source()']]],\n  ['source_5fcount_345',['SOURCE_COUNT',['../namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8',1,'tram::Audio::Spatial']]],\n  ['source_5fdepth_5flimit_346',['SOURCE_DEPTH_LIMIT',['../namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee',1,'tram::Audio::Spatial']]],\n  ['source_5fdirection_347',['source_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6',1,'tram::Audio::Spatial::PathFromAudioSource']]],\n  ['source_5fideal_5fangle_348',['source_ideal_angle',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['source_5fplaying_349',['SOURCE_PLAYING',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338',1,'tram::Audio::Spatial']]],\n  ['source_5frepeating_350',['SOURCE_REPEATING',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f',1,'tram::Audio::Spatial']]],\n  ['spatial_2ecpp_351',['spatial.cpp',['../spatial_8cpp.html',1,'']]],\n  ['spatial_2eh_352',['spatial.h',['../spatial_8h.html',1,'']]],\n  ['spawn_353',['SPAWN',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476',1,'tram::Signal']]],\n  ['special_5foption_354',['special_option',['../structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89',1,'tram::UI::KeyBinding']]],\n  ['special_5foption2_355',['special_option2',['../structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd',1,'tram::UI::KeyBinding']]],\n  ['specular_356',['specular',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['specular_5fexponent_357',['specular_exponent',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200',1,'tram::Render::API::D3DDrawListEntry::specular_exponent()'],['../classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b',1,'tram::Render::Material::specular_exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa',1,'tram::Render::API::GLMaterial::specular_exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de',1,'tram::Render::API::SWDrawListEntry::specular_exponent()']]],\n  ['specular_5ftransparency_358',['specular_transparency',['../classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6',1,'tram::Render::Material::specular_transparency()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64',1,'tram::Render::API::GLMaterial::specular_transparency()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d',1,'tram::Render::API::SWDrawListEntry::specular_transparency()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e',1,'tram::Render::API::D3DDrawListEntry::specular_transparency()']]],\n  ['specular_5fweight_359',['specular_weight',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3',1,'tram::Render::API::D3DDrawListEntry::specular_weight()'],['../classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944',1,'tram::Render::Material::specular_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f',1,'tram::Render::API::GLMaterial::specular_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698',1,'tram::Render::API::SWDrawListEntry::specular_weight()']]],\n  ['speed_360',['speed',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6',1,'tram::AnimationComponent::AnimationPlaybackInfo::speed()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e',1,'tram::Ext::Kitchensink::AnimState::speed()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080',1,'tram::Ext::Kitchensink::Button::speed()']]],\n  ['sphere_361',['Sphere',['../structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b',1,'tram::Physics::CollisionShape']]],\n  ['sphericalharmonic_362',['SphericalHarmonic',['../structtram_1_1_render_1_1_spherical_harmonic.html',1,'tram::Render']]],\n  ['sphericalharmonic_5ft_363',['sphericalharmonic_t',['../namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5',1,'tram::Render']]],\n  ['spin_364',['Spin',['../classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec',1,'tram::PhysicsComponent']]],\n  ['spinlock_365',['spinlock',['../classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88',1,'tram::Queue']]],\n  ['spinlock_366',['Spinlock',['../classtram_1_1_spinlock.html',1,'tram']]],\n  ['spinlock_2eh_367',['spinlock.h',['../spinlock_8h.html',1,'']]],\n  ['spinrigidbody_368',['SpinRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1',1,'tram::Physics::API']]],\n  ['sprite_369',['sprite',['../classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78',1,'tram::DecalComponent::sprite()'],['../classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154',1,'tram::ParticleComponent::sprite()'],['../classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4',1,'tram::SpriteComponent::sprite()']]],\n  ['sprite_370',['Sprite',['../classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344',1,'tram::Render::Material::Sprite()'],['../classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9',1,'tram::Render::Sprite::Sprite()'],['../classtram_1_1_render_1_1_sprite.html',1,'tram::Render::Sprite']]],\n  ['sprite_2ecpp_371',['sprite.cpp',['../components_2sprite_8cpp.html',1,'(Global Namespace)'],['../render_2opengl_2sprite_8cpp.html',1,'(Global Namespace)'],['../render_2sprite_8cpp.html',1,'(Global Namespace)']]],\n  ['sprite_2eh_372',['sprite.h',['../render_2sprite_8h.html',1,'(Global Namespace)'],['../components_2sprite_8h.html',1,'(Global Namespace)'],['../render_2opengl_2sprite_8h.html',1,'(Global Namespace)']]],\n  ['sprite_5farray_373',['sprite_array',['../classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9',1,'tram::SpriteComponent']]],\n  ['sprite_5ffont_374',['sprite_font',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['sprite_5fglyph_375',['sprite_glyph',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['sprite_5flist_376',['sprite_list',['../render_2sprite_8cpp.html#aa7ba6e3579e4897ccc9c2e5f8d033b20',1,'sprite.cpp']]],\n  ['spritearray_5ft_377',['spritearray_t',['../structtram_1_1_render_1_1spritearray__t.html',1,'tram::Render']]],\n  ['spritecomponent_378',['SpriteComponent',['../classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4',1,'tram::SpriteComponent::SpriteComponent()'],['../classtram_1_1_sprite_component.html',1,'tram::SpriteComponent']]],\n  ['spriteframe_379',['SpriteFrame',['../structtram_1_1_render_1_1_sprite_frame.html',1,'tram::Render']]],\n  ['spritepoint_380',['SpritePoint',['../structtram_1_1_render_1_1_sprite_point.html',1,'tram::Render']]],\n  ['spritevertex_381',['SpriteVertex',['../structtram_1_1_render_1_1_sprite_vertex.html',1,'tram::Render']]],\n  ['stack_382',['Stack',['../classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41',1,'tram::Stack']]],\n  ['stack_383',['stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['stack_384',['Stack',['../classtram_1_1_stack.html',1,'tram']]],\n  ['stack_2eh_385',['stack.h',['../stack_8h.html',1,'']]],\n  ['stack_5fheight_386',['stack_height',['../structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c',1,'tram::GUI::FrameObject']]],\n  ['stacklength_387',['stackLength',['../classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4',1,'tram::Stack']]],\n  ['stackname_388',['stackName',['../classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e',1,'tram::Stack']]],\n  ['stackpool_389',['StackPool',['../classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c',1,'tram::StackPool::StackPool(const char *name, size_t size)'],['../classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b',1,'tram::StackPool::StackPool(const char *name, size_t max_size, std::initializer_list&lt; T &gt; list)'],['../classtram_1_1_stack_pool.html',1,'tram::StackPool&lt; T &gt;']]],\n  ['stackpool_2eh_390',['stackpool.h',['../stackpool_8h.html',1,'']]],\n  ['stacksize_391',['stackSize',['../classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a',1,'tram::Stack']]],\n  ['standing_5fon_392',['standing_on',['../classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb',1,'tram::RaycastControllerComponent::standing_on()'],['../classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001',1,'tram::FPSControllerComponent::standing_on()']]],\n  ['standing_5fon_5fprev_393',['standing_on_prev',['../classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d',1,'tram::RaycastControllerComponent::standing_on_prev()'],['../classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4',1,'tram::FPSControllerComponent::standing_on_prev()']]],\n  ['standing_5fpos_394',['standing_pos',['../classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6',1,'tram::RaycastControllerComponent::standing_pos()'],['../classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a',1,'tram::FPSControllerComponent::standing_pos()']]],\n  ['standing_5frot_395',['standing_rot',['../classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc',1,'tram::FPSControllerComponent']]],\n  ['start_396',['Start',['../classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f',1,'tram::LightComponent::Start()'],['../classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25',1,'tram::ParticleComponent::Start()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4',1,'tram::Ext::Kitchensink::AnimationStateComponent::Start()'],['../classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6',1,'tram::EntityComponent::Start()']]],\n  ['start_397',['START',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282',1,'tram::Message']]],\n  ['start_398',['Start',['../classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9',1,'tram::DecalComponent::Start()'],['../classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3',1,'tram::AudioComponent::Start()'],['../classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059',1,'tram::TriggerComponent::Start()'],['../classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb',1,'tram::AnimationComponent::Start()'],['../classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2',1,'tram::PhysicsComponent::Start()'],['../classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3',1,'tram::PlayerComponent::Start()'],['../classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490',1,'tram::RenderComponent::Start()'],['../classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4',1,'tram::SpriteComponent::Start()'],['../classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d',1,'tram::TemplateComponent::Start()'],['../classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea',1,'tram::FPSControllerComponent::Start()'],['../classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad',1,'tram::RaycastControllerComponent::Start()'],['../namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58',1,'tram::Stats::Start()']]],\n  ['start_5fpos_399',['start_pos',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd',1,'tram::Ext::Kitchensink::Button']]],\n  ['start_5frot_400',['start_rot',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b',1,'tram::Ext::Kitchensink::Button']]],\n  ['start_5ftest_401',['START_TEST',['../test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f',1,'test.h']]],\n  ['start_5fy_402',['start_y',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373',1,'tram::Render::API::ScanlineBuffer']]],\n  ['state_403',['state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault::state()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514',1,'tram::Ext::Kitchensink::Button::state()'],['../structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb',1,'tram::System::SystemInfo::state()']]],\n  ['state_5fcursor_404',['STATE_CURSOR',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c',1,'tram::UI']]],\n  ['state_5fdefault_405',['STATE_DEFAULT',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d',1,'tram::UI']]],\n  ['state_5fflying_406',['STATE_FLYING',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6',1,'tram::UI']]],\n  ['state_5fmenu_5fopen_407',['STATE_MENU_OPEN',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12',1,'tram::UI']]],\n  ['state_5fno_5finput_408',['STATE_NO_INPUT',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9',1,'tram::UI']]],\n  ['state_5fspace_409',['state_space',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['states_410',['states',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['static_5fvertex_5ffvf_411',['STATIC_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e',1,'tram::Render::API']]],\n  ['staticmodeldata_412',['StaticModelData',['../structtram_1_1_render_1_1_static_model_data.html',1,'tram::Render']]],\n  ['staticmodelvertex_413',['StaticModelVertex',['../structtram_1_1_render_1_1_static_model_vertex.html',1,'tram::Render']]],\n  ['staticvertex_414',['StaticVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html',1,'tram::Render::API']]],\n  ['staticworldobject_415',['StaticWorldObject',['../classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3',1,'tram::StaticWorldObject::StaticWorldObject()'],['../classtram_1_1_static_world_object.html',1,'tram::StaticWorldObject']]],\n  ['staticworldobject_2ecpp_416',['staticworldobject.cpp',['../staticworldobject_8cpp.html',1,'']]],\n  ['staticworldobject_2eh_417',['staticworldobject.h',['../staticworldobject_8h.html',1,'']]],\n  ['statistics_5fenabled_418',['statistics_enabled',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971',1,'tram::Ext::Menu::DebugMenu']]],\n  ['statistics_5fmenu_419',['statistics_menu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab',1,'tram::Ext::Menu::DebugMenu']]],\n  ['statisticsmenu_420',['StatisticsMenu',['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html',1,'tram::Ext::Menu']]],\n  ['stats_2ecpp_421',['stats.cpp',['../stats_8cpp.html',1,'']]],\n  ['stats_2eh_422',['stats.h',['../stats_8h.html',1,'']]],\n  ['status_423',['Status',['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4',1,'tram::Resource']]],\n  ['status_424',['status',['../classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243',1,'tram::Resource']]],\n  ['stb_5fimage_5fimplementation_425',['STB_IMAGE_IMPLEMENTATION',['../material_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78',1,'material.cpp']]],\n  ['stb_5fimage_5fwrite_5fimplementation_426',['STB_IMAGE_WRITE_IMPLEMENTATION',['../image_8cpp.html#aefe397a94e8feddc652f92ef40ce9597',1,'image.cpp']]],\n  ['stbi_5fonly_5fpng_427',['STBI_ONLY_PNG',['../material_8cpp.html#a305f0db3256dd1248d3f17a83f7a6129',1,'material.cpp']]],\n  ['step_5fheight_428',['step_height',['../classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b',1,'tram::RaycastControllerComponent::step_height()'],['../classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0',1,'tram::FPSControllerComponent::step_height()']]],\n  ['step_5fheight_5fcrouch_429',['step_height_crouch',['../classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9',1,'tram::FPSControllerComponent']]],\n  ['stepphysics_430',['StepPhysics',['../namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2',1,'tram::Physics::API']]],\n  ['stop_431',['Stop',['../namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b',1,'tram::Stats::Stop()'],['../classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5',1,'tram::AudioComponent::Stop()'],['../classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96',1,'tram::AnimationComponent::Stop()']]],\n  ['stop_432',['STOP',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785',1,'tram::Message']]],\n  ['stopaudiosource_433',['StopAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261',1,'tram::Audio::API']]],\n  ['stride_434',['stride',['../structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca',1,'tram::Render::VertexAttribute']]],\n  ['string_5ffloat_435',['string_float',['../namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770',1,'tram::Ext::Menu']]],\n  ['string_5fptr_436',['string_ptr',['../classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73',1,'tram::ValuePtr']]],\n  ['string_5fvalue_437',['string_value',['../classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b',1,'tram::Value']]],\n  ['subtitle_438',['subtitle',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['subtype_439',['subtype',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f',1,'tram::Ext::Menu::EventEmit::subtype()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee',1,'tram::Ext::Menu::EventIntercept::subtype()'],['../structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e',1,'tram::Event::subtype()']]],\n  ['subtype_5fstring_440',['subtype_string',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25',1,'tram::Ext::Menu::EventEmit']]],\n  ['succ_441',['succ',['../struct__test__case.html#a11762360b352fb17f288e1f11b69efaa',1,'_test_case']]],\n  ['sun_5fcolor_442',['sun_color',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4',1,'tram::Render::API::LayerParameters::sun_color()'],['../namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf',1,'tram::Render::sun_color()']]],\n  ['sun_5fdirection_443',['sun_direction',['../namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908',1,'tram::Render::sun_direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82',1,'tram::Render::API::LayerParameters::sun_direction()']]],\n  ['suncolor_444',['sunColor',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sundirection_445',['sunDirection',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sunweight_446',['sunWeight',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sw_447',['sw',['../structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27',1,'tram::Render::light_t::sw()'],['../structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b',1,'tram::Render::material_t::sw()'],['../structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2',1,'tram::Render::drawlistentry_t::sw()']]],\n  ['sw_5fblended_448',['SW_BLENDED',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4',1,'tram::Render::API']]],\n  ['sw_5fdynamic_5fblended_449',['SW_DYNAMIC_BLENDED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419',1,'tram::Render::API']]],\n  ['sw_5findex_5farray_450',['sw_index_array',['../structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de',1,'tram::Render::indexarray_t']]],\n  ['sw_5fnearest_451',['SW_NEAREST',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31',1,'tram::Render::API']]],\n  ['sw_5fsprite_452',['SW_SPRITE',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8',1,'tram::Render::API']]],\n  ['sw_5fstatic_5fcolored_453',['SW_STATIC_COLORED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a',1,'tram::Render::API']]],\n  ['sw_5fstatic_5flightmapped_454',['SW_STATIC_LIGHTMAPPED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255',1,'tram::Render::API']]],\n  ['sw_5ftexture_455',['sw_texture',['../structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced',1,'tram::Render::texturehandle_t']]],\n  ['sw_5fvertex_5farray_456',['sw_vertex_array',['../structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f',1,'tram::Render::vertexarray_t']]],\n  ['swdrawlistentry_457',['SWDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html',1,'tram::Render::API']]],\n  ['swindexarray_458',['SWIndexArray',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html',1,'tram::Render::API']]],\n  ['switchstate_459',['SwitchState',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361',1,'tram::Ext::Kitchensink::Button::SwitchState()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7',1,'tram::Ext::Kitchensink::AnimationStateComponent::SwitchState()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f',1,'tram::Ext::Kitchensink::AnimationTable::SwitchState()']]],\n  ['swlight_460',['SWLight',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html',1,'tram::Render::API']]],\n  ['swtexture_461',['SWTexture',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html',1,'tram::Render::API']]],\n  ['swtexturemode_462',['SWTextureMode',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c',1,'tram::Render::API']]],\n  ['swvertexarray_463',['SWVertexArray',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html',1,'tram::Render::API']]],\n  ['swvertextype_464',['SWVertexType',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2',1,'tram::Render::API']]],\n  ['system_465',['System',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65',1,'tram::System']]],\n  ['system_2ecpp_466',['system.cpp',['../extensions_2menu_2system_8cpp.html',1,'(Global Namespace)'],['../framework_2system_8cpp.html',1,'(Global Namespace)']]],\n  ['system_2eh_467',['system.h',['../extensions_2menu_2system_8h.html',1,'(Global Namespace)'],['../framework_2system_8h.html',1,'(Global Namespace)']]],\n  ['system_5flast_468',['SYSTEM_LAST',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4',1,'tram::System']]],\n  ['system_5flimit_469',['SYSTEM_LIMIT',['../namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5',1,'tram']]],\n  ['system_5ft_470',['system_t',['../namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40',1,'tram::System']]],\n  ['systeminfo_471',['SystemInfo',['../structtram_1_1_system_1_1_system_info.html',1,'tram::System']]],\n  ['systemmenu_472',['SystemMenu',['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html',1,'tram::Ext::Menu']]],\n  ['systemstat_473',['SystemStat',['../structtram_1_1_stats_1_1_system_stat.html',1,'tram::Stats']]],\n  ['systemstate_474',['SystemState',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_14.js",
    "content": "var searchData=\n[\n  ['aabb_0',['AABB',['../namespacetram_1_1_render_1_1_a_a_b_b.html',1,'tram::Render']]],\n  ['api_1',['API',['../namespacetram_1_1_audio_1_1_a_p_i.html',1,'tram::Audio::API'],['../namespacetram_1_1_physics_1_1_a_p_i.html',1,'tram::Physics::API'],['../namespacetram_1_1_render_1_1_a_p_i.html',1,'tram::Render::API']]],\n  ['async_2',['Async',['../namespacetram_1_1_async.html',1,'tram']]],\n  ['audio_3',['Audio',['../namespacetram_1_1_audio.html',1,'tram']]],\n  ['camera_4',['Camera',['../namespacetram_1_1_ext_1_1_camera.html',1,'tram::Ext']]],\n  ['core_5',['Core',['../namespacetram_1_1_core.html',1,'tram']]],\n  ['ext_6',['Ext',['../namespacetram_1_1_ext.html',1,'tram']]],\n  ['gui_7',['GUI',['../namespacetram_1_1_g_u_i.html',1,'tram']]],\n  ['implementation_8',['implementation',['../namespacetram_1_1implementation.html',1,'tram']]],\n  ['input_9',['Input',['../namespacetram_1_1_platform_1_1_input.html',1,'tram::Platform']]],\n  ['kitchensink_10',['Kitchensink',['../namespacetram_1_1_ext_1_1_kitchensink.html',1,'tram::Ext']]],\n  ['language_11',['Language',['../namespacetram_1_1_language.html',1,'tram']]],\n  ['lighttree_12',['LightTree',['../namespacetram_1_1_render_1_1_light_tree.html',1,'tram::Render']]],\n  ['loader_13',['Loader',['../namespacetram_1_1_loader.html',1,'tram']]],\n  ['lua_14',['Lua',['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html',1,'tram::Ext::Scripting']]],\n  ['menu_15',['Menu',['../namespacetram_1_1_ext_1_1_menu.html',1,'tram::Ext::Menu'],['../namespacetram_1_1_ext_1_1_menu_1_1_menu.html',1,'tram::Ext::Menu::Menu']]],\n  ['physics_16',['Physics',['../namespacetram_1_1_physics.html',1,'tram']]],\n  ['platform_17',['Platform',['../namespacetram_1_1_platform.html',1,'tram']]],\n  ['pool_18',['Pool',['../classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6',1,'tram::Audio::Sound']]],\n  ['render_19',['Render',['../namespacetram_1_1_render.html',1,'tram']]],\n  ['scenetree_20',['SceneTree',['../namespacetram_1_1_render_1_1_scene_tree.html',1,'tram::Render']]],\n  ['script_21',['Script',['../namespacetram_1_1_script.html',1,'tram']]],\n  ['scriptabletype_22',['ScriptableType',['../namespacetram_1_1_scriptable_type.html',1,'tram']]],\n  ['scripting_23',['Scripting',['../namespacetram_1_1_ext_1_1_scripting.html',1,'tram::Ext']]],\n  ['settings_24',['Settings',['../namespacetram_1_1_settings.html',1,'tram']]],\n  ['spatial_25',['Spatial',['../namespacetram_1_1_audio_1_1_spatial.html',1,'tram::Audio']]],\n  ['stats_26',['Stats',['../namespacetram_1_1_stats.html',1,'tram']]],\n  ['system_27',['System',['../namespacetram_1_1_system.html',1,'tram']]],\n  ['tab_28',['tab',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['table_29',['table',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['tag_30',['tag',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b',1,'tram::Ext::Kitchensink::Effect']]],\n  ['tail_31',['tail',['../structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621',1,'tram::Render::Bone']]],\n  ['template_2ecpp_32',['template.cpp',['../template_8cpp.html',1,'']]],\n  ['template_2eh_33',['template.h',['../template_8h.html',1,'']]],\n  ['templatecomponent_34',['TemplateComponent',['../classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367',1,'tram::TemplateComponent::TemplateComponent()'],['../classtram_1_1_template_component.html',1,'tram::TemplateComponent']]],\n  ['test_2eh_35',['test.h',['../test_8h.html',1,'']]],\n  ['test_5fcase_36',['TEST_CASE',['../test_8h.html#adf0988a4a0680d35bed223d0b021437e',1,'test.h']]],\n  ['tex_37',['tex',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be',1,'tram::Render::API::StaticVertex::tex()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150',1,'tram::Render::API::DynamicVertex::tex()'],['../structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224',1,'tram::Render::StaticModelVertex::tex()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9',1,'tram::Render::DynamicModelVertex::tex()']]],\n  ['tex_5fx_38',['tex_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5',1,'tram::Render::API::StaticVertex::tex_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82',1,'tram::Render::API::DynamicVertex::tex_x()']]],\n  ['tex_5fy_39',['tex_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9',1,'tram::Render::API::StaticVertex::tex_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed',1,'tram::Render::API::DynamicVertex::tex_y()']]],\n  ['texco_40',['texco',['../structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343',1,'tram::Render::SpriteVertex']]],\n  ['texcount_41',['texCount',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455',1,'tram::Render::API::GLDrawListEntry']]],\n  ['text_42',['TEXT',['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d',1,'tram::GUI']]],\n  ['text_43',['Text',['../namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9',1,'tram::GUI']]],\n  ['text_44',['text',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1',1,'tram::Ext::Menu::Console']]],\n  ['text_45',['TEXT',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78',1,'tram::File']]],\n  ['text_5fcenter_46',['TEXT_CENTER',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8',1,'tram::GUI']]],\n  ['text_5fjustified_47',['TEXT_JUSTIFIED',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c',1,'tram::GUI']]],\n  ['text_5fleft_48',['TEXT_LEFT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d',1,'tram::GUI']]],\n  ['text_5fright_49',['TEXT_RIGHT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa',1,'tram::GUI']]],\n  ['textbox_50',['TextBox',['../namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619',1,'tram::GUI::TextBox(char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)'],['../namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486',1,'tram::GUI::TextBox(const char *text, uint32_t w, uint32_t h)']]],\n  ['textreaderparser_51',['TextReaderParser',['../classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943',1,'tram::TextReaderParser::TextReaderParser()'],['../classtram_1_1_text_reader_parser.html',1,'tram::TextReaderParser']]],\n  ['texture_52',['texture',['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20',1,'tram::Render::API::FFPHelper::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31',1,'tram::Render::API::SWDrawListEntry::texture()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738',1,'tram::Render::StaticModelVertex::texture()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3',1,'tram::Render::DynamicModelVertex::texture()'],['../structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e',1,'tram::Render::SpriteVertex::texture()'],['../structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99',1,'tram::Render::SpritePoint::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b',1,'tram::Render::API::D3DDrawListEntry::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e',1,'tram::Render::API::FVFHelper::texture()'],['../classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037',1,'tram::Render::Material::texture()']]],\n  ['texture_2ecpp_53',['texture.cpp',['../texture_8cpp.html',1,'']]],\n  ['texture_2eh_54',['texture.h',['../texture_8h.html',1,'']]],\n  ['texture_5fdata_55',['texture_data',['../classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d',1,'tram::Render::Material']]],\n  ['texture_5flist_56',['texture_list',['../namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e',1,'tram::Render::API']]],\n  ['texture_5fnone_57',['TEXTURE_NONE',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b',1,'tram::Render']]],\n  ['texture_5foffset_58',['texture_offset',['../structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516',1,'tram::Render::SpritePoint']]],\n  ['texture_5fsame_59',['TEXTURE_SAME',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043',1,'tram::Render']]],\n  ['texture_5fsize_60',['texture_size',['../structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3',1,'tram::Render::SpritePoint']]],\n  ['texture_5fsource_61',['TEXTURE_SOURCE',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863',1,'tram::Render']]],\n  ['texture_5ftransforms_62',['texture_transforms',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711',1,'tram::Render::API::ShaderUniformModelMatrices::texture_transforms()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec',1,'tram::Render::API::GLDrawListEntry::texture_transforms()']]],\n  ['texture_5ftype_63',['texture_type',['../classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43',1,'tram::Render::Material']]],\n  ['texturefilter_64',['TextureFilter',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c',1,'tram::Render']]],\n  ['texturefilter_5flinear_65',['TEXTUREFILTER_LINEAR',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef',1,'tram::Render']]],\n  ['texturefilter_5flinear_5fmipmapped_66',['TEXTUREFILTER_LINEAR_MIPMAPPED',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91',1,'tram::Render']]],\n  ['texturefilter_5fnearest_67',['TEXTUREFILTER_NEAREST',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647',1,'tram::Render']]],\n  ['texturehandle_5ft_68',['texturehandle_t',['../structtram_1_1_render_1_1texturehandle__t.html',1,'tram::Render']]],\n  ['texturetype_69',['TextureType',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811',1,'tram::Render']]],\n  ['textvertices_70',['textvertices',['../namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209',1,'tram::Render']]],\n  ['textwidth_71',['TextWidth',['../namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f',1,'tram::GUI']]],\n  ['textwriterparser_72',['TextWriterParser',['../classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c',1,'tram::TextWriterParser::TextWriterParser()'],['../classtram_1_1_text_writer_parser.html',1,'tram::TextWriterParser']]],\n  ['third_5fperson_73',['THIRD_PERSON',['../namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9',1,'tram::Render']]],\n  ['thirdperson_2ecpp_74',['thirdperson.cpp',['../thirdperson_8cpp.html',1,'']]],\n  ['thirdperson_2eh_75',['thirdperson.h',['../thirdperson_8h.html',1,'']]],\n  ['tick_76',['Tick',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['tick_77',['TICK',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436',1,'tram::Event']]],\n  ['tick_78',['tick',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240',1,'tram::Ext::Kitchensink::Button']]],\n  ['tick_5frate_79',['TICK_RATE',['../namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7',1,'tram']]],\n  ['tilt_80',['tilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5fgoal_81',['tilt_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5flast_82',['tilt_last',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5fspeed_83',['TILT_SPEED',['../namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac',1,'tram::Ext::Camera']]],\n  ['time_84',['time',['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a',1,'tram::Ext::Menu::Intercept::time()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39',1,'tram::Render::API::ShaderUniformModelMatrices::time()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf',1,'tram::Ext::Kitchensink::Effect::time()']]],\n  ['time_5fspent_85',['time_spent',['../structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5faverage_86',['time_spent_average',['../structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5faverage_5fcollated_87',['time_spent_average_collated',['../structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5fcollated_88',['time_spent_collated',['../structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5ftotal_89',['time_spent_total',['../structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae',1,'tram::Stats::SystemStat']]],\n  ['time_5fstarted_90',['time_started',['../structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24',1,'tram::Stats::SystemStat']]],\n  ['timer_91',['timer',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534',1,'tram::Ext::Kitchensink::Button']]],\n  ['title_92',['title',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['to_93',['to',['../structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee',1,'tram::Edge']]],\n  ['to_5fchars_5fconcat_94',['to_chars_concat',['../namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe',1,'tram::implementation']]],\n  ['todo_20list_95',['Todo List',['../todo.html',1,'']]],\n  ['toggle_96',['TOGGLE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59',1,'tram::Message']]],\n  ['togglemenustate_97',['ToggleMenuState',['../namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c',1,'tram::Ext::Menu']]],\n  ['tolet_5femitter_98',['tolet_emitter',['../main_8cpp.html#aa6314261586f8d6bdb38d84211ab9068',1,'main.cpp']]],\n  ['tolet_5fspinner_99',['tolet_spinner',['../main_8cpp.html#aef1afcddb99ee1a555eb26a6904d7362',1,'main.cpp']]],\n  ['tolet_5fsprayer_100',['tolet_sprayer',['../main_8cpp.html#aa6df28e8f20bf2b2154a6676327ac225',1,'main.cpp']]],\n  ['tolet_5fsprite_101',['tolet_sprite',['../main_8cpp.html#ad5b4101b5ff3df42a2fe16f3499d1e67',1,'main.cpp']]],\n  ['top_102',['top',['../classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43',1,'tram::Stack']]],\n  ['tostring_103',['ToString',['../classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c',1,'tram::Value']]],\n  ['totl_5fasserts_104',['totl_asserts',['../struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494',1,'_test_case']]],\n  ['track_105',['Track',['../namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54',1,'tram::Loader']]],\n  ['tracked_5fentities_106',['tracked_entities',['../namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371',1,'tram::Loader']]],\n  ['train_107',['Train',['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77',1,'tram::Ext::Kitchensink::Train::Train()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html',1,'tram::Ext::Kitchensink::Train']]],\n  ['tram_108',['tram',['../namespacetram.html',1,'']]],\n  ['tram_5fsdk_5fassert_109',['TRAM_SDK_ASSERT',['../macros_8h.html#ab8acc3253ef25e7241078bb72714f386',1,'macros.h']]],\n  ['tram_5fsdk_5fassert_5fmessage_110',['TRAM_SDK_ASSERT_MESSAGE',['../macros_8h.html#a152c2304044652f7572e5759c6535a2c',1,'macros.h']]],\n  ['tram_5fsdk_5fentity_5fname_111',['TRAM_SDK_ENTITY_NAME',['../macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159',1,'macros.h']]],\n  ['tram_5fsdk_5fimplement_5fpool_112',['TRAM_SDK_IMPLEMENT_POOL',['../macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb',1,'macros.h']]],\n  ['tram_5fsdk_5fproperty_113',['TRAM_SDK_PROPERTY',['../macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a',1,'macros.h']]],\n  ['tram_5fsdk_5fregister_5fevent_5fdatatype_114',['TRAM_SDK_REGISTER_EVENT_DATATYPE',['../macros_8h.html#a52706c5e76dff5554e6be98274f86e3d',1,'macros.h']]],\n  ['tram_5fsdk_5fvirtual_5fproperty_115',['TRAM_SDK_VIRTUAL_PROPERTY',['../macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe',1,'macros.h']]],\n  ['tramway_20sdk_116',['Tramway SDK',['../index.html',1,'']]],\n  ['transition_117',['Transition',['../classtram_1_1_transition.html',1,'tram::Transition'],['../classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2',1,'tram::Transition::Transition()']]],\n  ['transition_2ecpp_118',['transition.cpp',['../transition_8cpp.html',1,'']]],\n  ['transition_2eh_119',['transition.h',['../transition_8h.html',1,'']]],\n  ['transitions_120',['transitions',['../classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5',1,'tram::WorldCell']]],\n  ['tree_121',['tree',['../structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d',1,'tram::Render::ModelAABB']]],\n  ['tree_5fhandle_122',['tree_handle',['../structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8',1,'tram::Render::LightTree::Light']]],\n  ['triangle_123',['Triangle',['../structtram_1_1_render_1_1_triangle.html',1,'tram::Render']]],\n  ['triangle_124',['triangle',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965',1,'tram::Render::AABB::QueryResponse']]],\n  ['trianglebucket_125',['TriangleBucket',['../structtram_1_1_render_1_1_triangle_bucket.html',1,'tram::Render']]],\n  ['triangles_126',['triangles',['../structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd',1,'tram::Render::ModelAABB::triangles()'],['../structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388',1,'tram::Render::TriangleBucket::triangles()']]],\n  ['trianglevisible_127',['TriangleVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f',1,'tram::Render::API']]],\n  ['trigger_128',['Trigger',['../classtram_1_1_trigger.html',1,'tram']]],\n  ['trigger_129',['TRIGGER',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd',1,'tram::Signal::TRIGGER()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c',1,'tram::Message::TRIGGER()']]],\n  ['trigger_130',['Trigger',['../classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c',1,'tram::Trigger']]],\n  ['trigger_131',['trigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c',1,'tram::Ext::Kitchensink::DialogAction']]],\n  ['trigger_2ecpp_132',['trigger.cpp',['../components_2trigger_8cpp.html',1,'(Global Namespace)'],['../entities_2trigger_8cpp.html',1,'(Global Namespace)']]],\n  ['trigger_2eh_133',['trigger.h',['../entities_2trigger_8h.html',1,'(Global Namespace)'],['../components_2trigger_8h.html',1,'(Global Namespace)']]],\n  ['trigger_5fdisabled_134',['TRIGGER_DISABLED',['../namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159',1,'tram']]],\n  ['trigger_5fflags_135',['trigger_flags',['../classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040',1,'tram::Trigger']]],\n  ['trigger_5ft_136',['trigger_t',['../structtram_1_1_physics_1_1trigger__t.html',1,'tram::Physics']]],\n  ['triggerautosave_137',['TriggerAutosave',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html',1,'tram::Ext::Kitchensink::TriggerAutosave'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b',1,'tram::Ext::Kitchensink::TriggerAutosave::TriggerAutosave()']]],\n  ['triggercomponent_138',['TriggerComponent',['../classtram_1_1_trigger_component.html',1,'tram']]],\n  ['triggercomponent_139',['triggercomponent',['../classtram_1_1_trigger.html#a72b18d259352340995c217999106916d',1,'tram::Trigger']]],\n  ['triggercomponent_140',['TriggerComponent',['../classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3',1,'tram::TriggerComponent']]],\n  ['triggerhurt_141',['TriggerHurt',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html',1,'tram::Ext::Kitchensink::TriggerHurt'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d',1,'tram::Ext::Kitchensink::TriggerHurt::TriggerHurt()']]],\n  ['triggermultiple_142',['TriggerMultiple',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html',1,'tram::Ext::Kitchensink::TriggerMultiple'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4',1,'tram::Ext::Kitchensink::TriggerMultiple::TriggerMultiple()']]],\n  ['triggeronce_143',['TriggerOnce',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html',1,'tram::Ext::Kitchensink::TriggerOnce'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127',1,'tram::Ext::Kitchensink::TriggerOnce::TriggerOnce()']]],\n  ['triggerplayermovement_144',['TriggerPlayerMovement',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html',1,'tram::Ext::Kitchensink::TriggerPlayerMovement'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::TriggerPlayerMovement()']]],\n  ['triggerpush_145',['TriggerPush',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html',1,'tram::Ext::Kitchensink::TriggerPush'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a',1,'tram::Ext::Kitchensink::TriggerPush::TriggerPush()']]],\n  ['triggerremove_146',['TriggerRemove',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html',1,'tram::Ext::Kitchensink::TriggerRemove'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99',1,'tram::Ext::Kitchensink::TriggerRemove::TriggerRemove()']]],\n  ['triggers_147',['triggers',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa',1,'tram::Ext::Kitchensink::Quest']]],\n  ['triggerteleport_148',['TriggerTeleport',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html',1,'tram::Ext::Kitchensink::TriggerTeleport'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d',1,'tram::Ext::Kitchensink::TriggerTeleport::TriggerTeleport()']]],\n  ['try_5fpop_149',['try_pop',['../classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a',1,'tram::Queue']]],\n  ['trydebugging_150',['TryDebugging',['../namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5',1,'tram::Platform']]],\n  ['turnleft_151',['TurnLeft',['../classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089',1,'tram::ControllerComponent::TurnLeft()'],['../classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20',1,'tram::FPSControllerComponent::TurnLeft()'],['../classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec',1,'tram::RaycastControllerComponent::TurnLeft()'],['../classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8',1,'tram::PathFollower::TurnLeft()']]],\n  ['turnright_152',['TurnRight',['../classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052',1,'tram::RaycastControllerComponent::TurnRight()'],['../classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314',1,'tram::PathFollower::TurnRight()'],['../classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34',1,'tram::FPSControllerComponent::TurnRight()'],['../classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db',1,'tram::ControllerComponent::TurnRight()']]],\n  ['turnstraight_153',['TurnStraight',['../classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2',1,'tram::PathFollower']]],\n  ['type_154',['type',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39',1,'tram::Render::AABB::QueryResponse::type()'],['../structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672',1,'tram::Render::VertexAttribute::type()'],['../structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e',1,'tram::Settings::SettingInfo::type()'],['../classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2',1,'tram::Render::Material::type()'],['../structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b',1,'tram::Physics::CollisionShape::type()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c',1,'tram::Physics::API::RigidbodyMetadata::type()'],['../classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa',1,'tram::Value::type()'],['../structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472',1,'tram::Signal::type()'],['../classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab',1,'tram::PathFollower::type()'],['../structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc',1,'tram::PathEdgeInfo::type()'],['../structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1',1,'tram::Message::type()'],['../structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a',1,'tram::Event::type()'],['../structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02',1,'tram::ListenerInfo::type()'],['../structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e',1,'tram::SharedEntityData::type()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a',1,'tram::Ext::Menu::EventIntercept::type()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769',1,'tram::Ext::Menu::MessageIntercept::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5',1,'tram::Ext::Kitchensink::QuestTrigger::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d',1,'tram::Ext::Kitchensink::QuestVariable::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a',1,'tram::Ext::Kitchensink::DialogTopic::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546',1,'tram::Ext::Kitchensink::Effect::type()'],['../classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e',1,'tram::Scriptable::type()']]],\n  ['type_155',['Type',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd',1,'tram::Message::Type()'],['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765',1,'tram::Event::Type()'],['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609',1,'tram::Type()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6',1,'tram::Signal::Type()']]],\n  ['type_156',['type',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133',1,'tram::Render::API::SWVertexArray']]],\n  ['type_2ecpp_157',['type.cpp',['../type_8cpp.html',1,'']]],\n  ['type_2eh_158',['type.h',['../type_8h.html',1,'']]],\n  ['type_5fbool_159',['TYPE_BOOL',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc',1,'tram']]],\n  ['type_5ffloat32_160',['TYPE_FLOAT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d',1,'tram']]],\n  ['type_5fint16_161',['TYPE_INT16',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4',1,'tram']]],\n  ['type_5fint32_162',['TYPE_INT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5',1,'tram']]],\n  ['type_5fint8_163',['TYPE_INT8',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0',1,'tram']]],\n  ['type_5fname_164',['TYPE_NAME',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c',1,'tram']]],\n  ['type_5fquat_165',['TYPE_QUAT',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b',1,'tram']]],\n  ['type_5fstring_166',['TYPE_STRING',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6',1,'tram']]],\n  ['type_5fuint16_167',['TYPE_UINT16',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef',1,'tram']]],\n  ['type_5fuint32_168',['TYPE_UINT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417',1,'tram']]],\n  ['type_5fuint8_169',['TYPE_UINT8',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e',1,'tram']]],\n  ['type_5fundefined_170',['TYPE_UNDEFINED',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05',1,'tram']]],\n  ['type_5fvec2_171',['TYPE_VEC2',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4',1,'tram']]],\n  ['type_5fvec3_172',['TYPE_VEC3',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009',1,'tram']]],\n  ['type_5fvec4_173',['TYPE_VEC4',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee',1,'tram']]],\n  ['typetostring_174',['TypeToString',['../namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e',1,'tram']]],\n  ['ui_175',['UI',['../namespacetram_1_1_u_i.html',1,'tram']]],\n  ['window_176',['Window',['../namespacetram_1_1_platform_1_1_window.html',1,'tram::Platform']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_15.js",
    "content": "var searchData=\n[\n  ['ui_0',['UI',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50',1,'tram::System']]],\n  ['ui_2ecpp_1',['ui.cpp',['../ui_8cpp.html',1,'']]],\n  ['ui_2eh_2',['ui.h',['../ui_8h.html',1,'']]],\n  ['uid_3',['UID',['../structtram_1_1_u_i_d.html',1,'tram::UID'],['../structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e',1,'tram::UID::UID()'],['../structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82',1,'tram::UID::UID(const UID &amp;value)'],['../structtram_1_1_u_i_d.html#a8b30e026e1776200b7f91f67c7492aea',1,'tram::UID::UID(const std::string &amp;value)'],['../structtram_1_1_u_i_d.html#a4bfd2fabbf7538d9145235b83784332a',1,'tram::UID::UID(const char *value)']]],\n  ['uid_2ecpp_4',['uid.cpp',['../uid_8cpp.html',1,'']]],\n  ['uid_2eh_5',['uid.h',['../uid_8h.html',1,'']]],\n  ['uid_5fcharacter_5flimit_6',['UID_CHARACTER_LIMIT',['../namespacetram.html#abd586f202b2593831d3d48a18eb15776',1,'tram']]],\n  ['uid_5flimit_7',['UID_LIMIT',['../namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8',1,'tram']]],\n  ['uint32_8',['UINT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8',1,'tram::Render::VertexAttribute']]],\n  ['uint32_9',['uint32',['../structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5',1,'tram::Settings::SettingInfo']]],\n  ['uint32_5fptr_10',['uint32_ptr',['../classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9',1,'tram::ValuePtr']]],\n  ['uint32_5fvalue_11',['uint32_value',['../classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de',1,'tram::Value']]],\n  ['unequipitem_12',['UnequipItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['unequipslot_13',['UnequipSlot',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['uninit_14',['Uninit',['../namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e',1,'tram::Audio::Uninit()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68',1,'tram::Audio::API::Uninit()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066',1,'tram::Ext::Scripting::Lua::Uninit()'],['../namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80',1,'tram::UI::Uninit()'],['../namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38',1,'tram::Platform::Window::Uninit()'],['../namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80',1,'tram::Platform::Input::Uninit()']]],\n  ['uninitoutput_15',['UninitOutput',['../namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789',1,'tram::Audio::Spatial']]],\n  ['unload_16',['Unload',['../classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01',1,'tram::StaticWorldObject::Unload()'],['../classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e',1,'tram::Trigger::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08',1,'tram::Ext::Kitchensink::Button::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20',1,'tram::Ext::Kitchensink::Breakable::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613',1,'tram::Ext::Kitchensink::Water::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef',1,'tram::Ext::Kitchensink::Train::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6',1,'tram::Ext::Kitchensink::Pickup::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98',1,'tram::Ext::Kitchensink::DebugText::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1',1,'tram::Ext::Kitchensink::DebugShape::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903',1,'tram::Ext::Kitchensink::TriggerAutosave::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9',1,'tram::Ext::Kitchensink::TriggerHurt::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9',1,'tram::Ext::Kitchensink::TriggerOnce::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254',1,'tram::Ext::Kitchensink::TriggerMultiple::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be',1,'tram::Ext::Kitchensink::TriggerPush::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90',1,'tram::Ext::Kitchensink::TriggerRemove::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32',1,'tram::Ext::Kitchensink::TriggerTeleport::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd',1,'tram::Ext::Kitchensink::QuestEntity::Unload()'],['../classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829',1,'tram::Entity::Unload()'],['../classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299',1,'tram::Resource::Unload()'],['../classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63',1,'tram::WorldCell::Unload()'],['../classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c',1,'tram::Physics::CollisionModel::Unload()'],['../classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6',1,'tram::Render::Animation::Unload()'],['../classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a',1,'tram::Render::LightGraph::Unload()'],['../classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e',1,'tram::Render::Material::Unload()'],['../classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673',1,'tram::Render::Model::Unload()'],['../classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de',1,'tram::Audio::SoundGraph::Unload()'],['../classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2',1,'tram::Audio::Sound::Unload()'],['../classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232',1,'tram::Crate::Unload()'],['../classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4',1,'tram::Render::Sprite::Unload()'],['../classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5',1,'tram::Decoration::Unload()'],['../classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256',1,'tram::Light::Unload()'],['../classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71',1,'tram::Marker::Unload()'],['../classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643',1,'tram::Player::Unload()'],['../classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d',1,'tram::Scriptable::Unload()'],['../classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2',1,'tram::Sound::Unload()']]],\n  ['unloaded_17',['UNLOADED',['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d',1,'tram::Resource']]],\n  ['unlock_18',['unlock',['../classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a',1,'tram::Queue']]],\n  ['unlock_19',['Unlock',['../classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634',1,'tram::Spinlock']]],\n  ['unlock_20',['UNLOCK',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001',1,'tram::Message']]],\n  ['unlockrenderlist_21',['UnlockRenderlist',['../namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841',1,'tram::Audio::Spatial']]],\n  ['unregister_22',['Unregister',['../classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd',1,'tram::Entity']]],\n  ['untrack_23',['Untrack',['../namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa',1,'tram::Loader']]],\n  ['update_24',['Update',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe',1,'tram::Ext::Camera::FirstPersonCamera::Update()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222',1,'tram::Ext::Kitchensink::AIAgent::Update()'],['../classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5',1,'tram::Entity::Update()'],['../namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39',1,'tram::Platform::Window::Update()'],['../classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65',1,'tram::AnimationComponent::Update()'],['../classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf',1,'tram::ControllerComponent::Update()'],['../classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630',1,'tram::DecalComponent::Update()'],['../classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4',1,'tram::LightComponent::Update()'],['../classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd',1,'tram::ParticleComponent::Update()'],['../classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c',1,'tram::SpriteComponent::Update()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63',1,'tram::Ext::Camera::Camera::Update()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488',1,'tram::Audio::API::Update()'],['../namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b',1,'tram::Audio::Update()'],['../namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c',1,'tram::Ext::Camera::Update()'],['../namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f',1,'tram::Ext::Kitchensink::Update()'],['../namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057',1,'tram::Ext::Menu::Update()'],['../namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd',1,'tram::Core::Update()'],['../namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc',1,'tram::GUI::Update()'],['../namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505',1,'tram::Loader::Update()'],['../namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438',1,'tram::UI::Update()'],['../namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184',1,'tram::Physics::Update()'],['../namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438',1,'tram::Platform::Input::Update()']]],\n  ['updateaction_25',['updateAction',['../classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050',1,'tram::Physics::PathAction']]],\n  ['updateai_26',['UpdateAI',['../namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242',1,'tram::Ext::Kitchensink']]],\n  ['updatecallbacks_27',['UpdateCallbacks',['../namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22',1,'tram::Ext::Menu']]],\n  ['updatedrawlistfonts_28',['UpdateDrawListFonts',['../namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1',1,'tram::GUI']]],\n  ['updatehierarchy_29',['UpdateHierarchy',['../namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111',1,'tram::Ext::Kitchensink']]],\n  ['updatelocation_30',['UpdateLocation',['../classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8',1,'tram::SpriteComponent::UpdateLocation()'],['../classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b',1,'tram::ParticleComponent::UpdateLocation()']]],\n  ['updateoutput_31',['UpdateOutput',['../namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05',1,'tram::Audio::Spatial']]],\n  ['updateparameters_32',['UpdateParameters',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59',1,'tram::Ext::Kitchensink::TriggerPush::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416',1,'tram::Ext::Kitchensink::TriggerRemove::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b',1,'tram::Ext::Kitchensink::TriggerTeleport::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8',1,'tram::Ext::Kitchensink::QuestEntity::UpdateParameters()'],['../classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3',1,'tram::Entity::UpdateParameters()'],['../classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd',1,'tram::Crate::UpdateParameters()'],['../classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c',1,'tram::Decoration::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d',1,'tram::Ext::Kitchensink::TriggerMultiple::UpdateParameters()'],['../classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f',1,'tram::Light::UpdateParameters()'],['../classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d',1,'tram::Marker::UpdateParameters()'],['../classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5',1,'tram::Player::UpdateParameters()'],['../classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2',1,'tram::Scriptable::UpdateParameters()'],['../classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723',1,'tram::Sound::UpdateParameters()'],['../classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b',1,'tram::StaticWorldObject::UpdateParameters()'],['../classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389',1,'tram::Trigger::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4',1,'tram::Ext::Kitchensink::Button::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c',1,'tram::Ext::Kitchensink::Breakable::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4',1,'tram::Ext::Kitchensink::Water::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167',1,'tram::Ext::Kitchensink::Train::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881',1,'tram::Ext::Kitchensink::Pickup::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5',1,'tram::Ext::Kitchensink::DebugText::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302',1,'tram::Ext::Kitchensink::DebugShape::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681',1,'tram::Ext::Kitchensink::TriggerAutosave::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2',1,'tram::Ext::Kitchensink::TriggerHurt::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6',1,'tram::Ext::Kitchensink::TriggerOnce::UpdateParameters()']]],\n  ['updateparentaabb_33',['UpdateParentAABB',['../classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc',1,'tram::AABBTree']]],\n  ['updaterenderlistobject_34',['UpdateRenderListObject',['../classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994',1,'tram::DecalComponent::UpdateRenderListObject()'],['../classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07',1,'tram::ParticleComponent::UpdateRenderListObject()'],['../classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117',1,'tram::SpriteComponent::UpdateRenderListObject()']]],\n  ['updatespritearray_35',['UpdateSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013',1,'tram::Render::API']]],\n  ['updatetransform_36',['UpdateTransform',['../classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8',1,'tram::Entity']]],\n  ['updatevertexarray_37',['UpdateVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463',1,'tram::Render::API']]],\n  ['uploaduniformbuffer_38',['UploadUniformBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880',1,'tram::Render::API']]],\n  ['use_39',['USE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29',1,'tram::Signal']]],\n  ['user_40',['USER',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20',1,'tram::Settings::USER()'],['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12',1,'tram::USER()']]],\n  ['userindex_41',['UserIndex',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c',1,'tram::Physics::API']]],\n  ['userindex_5frigidbody_42',['USERINDEX_RIGIDBODY',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c',1,'tram::Physics::API']]],\n  ['userindex_5ftrigger_43',['USERINDEX_TRIGGER',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72',1,'tram::Physics::API']]],\n  ['utf16tolatin7_44',['UTF16ToLatin7',['../namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573',1,'tram::Language']]],\n  ['utils_2ecpp_45',['utils.cpp',['../utils_8cpp.html',1,'']]],\n  ['uvec3_46',['uvec3',['../namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f',1,'tram']]],\n  ['uvec4_47',['uvec4',['../namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_16.js",
    "content": "var searchData=\n[\n  ['validate_0',['validate',['../classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69',1,'tram::Pool']]],\n  ['validateresult_1',['ValidateResult',['../namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082',1,'tram::Audio::Spatial']]],\n  ['validatetree_2',['ValidateTree',['../classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d',1,'tram::AABBTree::ValidateTree(Node *node)'],['../classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9',1,'tram::AABBTree::ValidateTree(Node *node, size_t num)']]],\n  ['value_3',['Value',['../classtram_1_1_value.html',1,'tram']]],\n  ['value_4',['value',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad77d58b02c65c98115798f167a4a6cb4',1,'tram::Ext::Kitchensink::QuestVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa',1,'tram::Ext::Kitchensink::QuestVariable::value()'],['../structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897',1,'tram::Settings::Property::value()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1',1,'tram::AABBTree::Node::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e',1,'tram::Ext::Kitchensink::QuestTrigger::value()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93',1,'tram::Ext::Menu::MessageIntercept::value()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e',1,'tram::Ext::Menu::EventIntercept::value()'],['../structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b',1,'tram::Settings::RawSetting::value()'],['../structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996',1,'tram::Hashmap::Record::value()']]],\n  ['value_5',['Value',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349',1,'tram::Ext::Kitchensink::QuestVariable::Value()'],['../classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f',1,'tram::Value::Value()'],['../classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60',1,'tram::Value::Value(const Value &amp;other)'],['../classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305',1,'tram::Value::Value(bool value)'],['../classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e',1,'tram::Value::Value(name_t value)'],['../classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055',1,'tram::Value::Value(const char *value)'],['../classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585',1,'tram::Value::Value(int8_t value)'],['../classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5',1,'tram::Value::Value(int16_t value)'],['../classtram_1_1_value.html#a831372ec4d00555168651da5fd654641',1,'tram::Value::Value(int64_t value)'],['../classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275',1,'tram::Value::Value(uint8_t value)'],['../classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb',1,'tram::Value::Value(uint16_t value)'],['../classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b',1,'tram::Value::Value(uint64_t value)'],['../classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e',1,'tram::Value::Value(double value)'],['../classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427',1,'tram::Value::Value(int32_t value)'],['../classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8',1,'tram::Value::Value(uint32_t value)'],['../classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893',1,'tram::Value::Value(vec2 value)'],['../classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553',1,'tram::Value::Value(vec3 value)'],['../classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d',1,'tram::Value::Value(vec4 value)'],['../classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716',1,'tram::Value::Value(quat value)'],['../classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94',1,'tram::Value::Value(float value)']]],\n  ['value_6',['value',['../structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436',1,'tram::Ext::Kitchensink::AIVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5',1,'tram::Ext::Kitchensink::Effect::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd',1,'tram::Ext::Kitchensink::InitialAttribute::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887',1,'tram::Ext::Kitchensink::BaseAttribute::value()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904',1,'tram::Ext::Kitchensink::ItemClass::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88',1,'tram::Ext::Kitchensink::QuestVariable::value()']]],\n  ['value_2eh_7',['value.h',['../value_8h.html',1,'']]],\n  ['value_5ft_8',['value_t',['../namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4',1,'tram']]],\n  ['valuearray_9',['ValueArray',['../classtram_1_1_value_array.html',1,'tram::ValueArray'],['../classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552',1,'tram::ValueArray::ValueArray()']]],\n  ['valuearray_5ft_10',['valuearray_t',['../namespacetram.html#a9a399a2754b52b60de20e936546d0637',1,'tram']]],\n  ['valueptr_11',['ValuePtr',['../classtram_1_1_value_ptr.html',1,'tram::ValuePtr'],['../classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f',1,'tram::ValuePtr::ValuePtr(vec3 *ptr)'],['../classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3',1,'tram::ValuePtr::ValuePtr(vec4 *ptr)'],['../classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e',1,'tram::ValuePtr::ValuePtr(quat *ptr)'],['../classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35',1,'tram::ValuePtr::ValuePtr(float *ptr)'],['../classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e',1,'tram::Value::ValuePtr()'],['../classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab',1,'tram::ValuePtr::ValuePtr()'],['../classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a',1,'tram::ValuePtr::ValuePtr(const ValuePtr &amp;other)'],['../classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6',1,'tram::ValuePtr::ValuePtr(Value &amp;other)'],['../classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b',1,'tram::ValuePtr::ValuePtr(bool *ptr)'],['../classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583',1,'tram::ValuePtr::ValuePtr(name_t *ptr)'],['../classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60',1,'tram::ValuePtr::ValuePtr(const char **ptr)'],['../classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14',1,'tram::ValuePtr::ValuePtr(int32_t *ptr)'],['../classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4',1,'tram::ValuePtr::ValuePtr(uint32_t *ptr)'],['../classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4',1,'tram::ValuePtr::ValuePtr(vec2 *ptr)']]],\n  ['vao_12',['vao',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d',1,'tram::Render::API::GLDrawListEntry']]],\n  ['variable_13',['variable',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78',1,'tram::Ext::Kitchensink::DialogCondition::variable()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257',1,'tram::Ext::Kitchensink::QuestTrigger::variable()']]],\n  ['variable1_14',['variable1',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['variable2_15',['variable2',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['variables_16',['variables',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130',1,'tram::Ext::Kitchensink::AIAgent::variables()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969',1,'tram::Ext::Kitchensink::Quest::variables()']]],\n  ['vec2_17',['vec2',['../namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49',1,'tram']]],\n  ['vec2_5fptr_18',['vec2_ptr',['../classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3',1,'tram::ValuePtr']]],\n  ['vec2_5fvalue_19',['vec2_value',['../classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a',1,'tram::Value']]],\n  ['vec3_20',['vec3',['../namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891',1,'tram']]],\n  ['vec3_5fptr_21',['vec3_ptr',['../classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba',1,'tram::ValuePtr']]],\n  ['vec3_5fvalue_22',['vec3_value',['../classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae',1,'tram::Value']]],\n  ['vec4_23',['vec4',['../namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b',1,'tram']]],\n  ['vec4_5fptr_24',['vec4_ptr',['../classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d',1,'tram::ValuePtr']]],\n  ['vec4_5fvalue_25',['vec4_value',['../classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8',1,'tram::Value']]],\n  ['velocity_26',['velocity',['../structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f',1,'tram::ParticleComponent::Particle::velocity()'],['../classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911',1,'tram::FPSControllerComponent::velocity()']]],\n  ['vertex_5farray_27',['vertex_array',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2',1,'tram::Render::API::SWDrawListEntry::vertex_array()'],['../classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217',1,'tram::DecalComponent::vertex_array()'],['../classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2',1,'tram::ParticleComponent::vertex_array()'],['../classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7',1,'tram::SpriteComponent::vertex_array()'],['../classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa',1,'tram::Render::Model::vertex_array()'],['../structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5',1,'tram::Render::spritearray_t::vertex_array()']]],\n  ['vertex_5farrays_28',['vertex_arrays',['../namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2',1,'tram::Render::API']]],\n  ['vertex_5fbuffer_29',['vertex_buffer',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891',1,'tram::Render::API::D3DDrawListEntry']]],\n  ['vertex_5fbuffer_5fmetadata_30',['vertex_buffer_metadata',['../namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185',1,'tram::Render::API']]],\n  ['vertex_5fcount_31',['vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c',1,'tram::Render::API::D3DDrawListEntry::vertex_count()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f',1,'tram::Render::API::SWVertexArray::vertex_count()']]],\n  ['vertex_5fdynamic_32',['VERTEX_DYNAMIC',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe',1,'tram::Render']]],\n  ['vertex_5fformat_33',['vertex_format',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64',1,'tram::Render::API::VertexBufferMetadata::vertex_format()'],['../classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8',1,'tram::Render::Model::vertex_format()']]],\n  ['vertex_5flast_34',['VERTEX_LAST',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481',1,'tram::Render']]],\n  ['vertex_5fline_35',['VERTEX_LINE',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d',1,'tram::Render']]],\n  ['vertex_5fsprite_36',['VERTEX_SPRITE',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051',1,'tram::Render']]],\n  ['vertex_5fstatic_37',['VERTEX_STATIC',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77',1,'tram::Render']]],\n  ['vertexarray_5ft_38',['vertexarray_t',['../structtram_1_1_render_1_1vertexarray__t.html',1,'tram::Render']]],\n  ['vertexattribute_39',['VertexAttribute',['../structtram_1_1_render_1_1_vertex_attribute.html',1,'tram::Render']]],\n  ['vertexbuffermetadata_40',['VertexBufferMetadata',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html',1,'tram::Render::API']]],\n  ['vertexdefinition_41',['VertexDefinition',['../structtram_1_1_render_1_1_vertex_definition.html',1,'tram::Render']]],\n  ['vertexdefinitiontofvf_42',['VertexDefinitionToFVF',['../namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119',1,'tram::Render::API']]],\n  ['vertexformat_5ft_43',['vertexformat_t',['../namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2',1,'tram::Render']]],\n  ['vertexformats_44',['VertexFormats',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8',1,'tram::Render']]],\n  ['vertexshader_45',['VertexShader',['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html',1,'tram::Render::API']]],\n  ['verticality_46',['verticality',['../structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8',1,'tram::Render::SpriteVertex']]],\n  ['vertices_47',['vertices',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d',1,'tram::Render::API::SWVertexArray::vertices()'],['../structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473',1,'tram::Render::DynamicModelData::vertices()'],['../structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0',1,'tram::Render::StaticModelData::vertices()']]],\n  ['vertices_2ecpp_48',['vertices.cpp',['../vertices_8cpp.html',1,'']]],\n  ['vertices_2eh_49',['vertices.h',['../vertices_8h.html',1,'']]],\n  ['view_50',['view',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26',1,'tram::Render::API::ShaderUniformMatrices::view()'],['../namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc',1,'tram::Render::view()']]],\n  ['view_5ffov_51',['view_fov',['../namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c',1,'tram::Render']]],\n  ['view_5fmatrix_52',['view_matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95',1,'tram::Render::API::LayerParameters']]],\n  ['view_5fpos_53',['view_pos',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf',1,'tram::Render::API::ShaderUniformMatrices']]],\n  ['view_5fposition_54',['view_position',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd',1,'tram::Render::API::LayerParameters::view_position()'],['../namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349',1,'tram::Render::view_position()']]],\n  ['view_5fproperties_55',['view_properties',['../namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57',1,'tram::Render']]],\n  ['view_5frotation_56',['view_rotation',['../namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6',1,'tram::Render']]],\n  ['viewmodel_57',['viewmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['voffset_58',['voffset',['../structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001',1,'tram::Render::SpriteVertex']]],\n  ['volume_59',['volume',['../classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22',1,'tram::WorldCell::volume()'],['../classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145',1,'tram::Sound::volume()']]],\n  ['vsync_60',['vsync',['../namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99',1,'tram::Platform']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_17.js",
    "content": "var searchData=\n[\n  ['w_0',['w',['../structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6',1,'tram::GUI::FrameObject']]],\n  ['walk_5fcollision_1',['walk_collision',['../classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d',1,'tram::FPSControllerComponent']]],\n  ['walk_5fspeed_2',['walk_speed',['../classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7',1,'tram::FPSControllerComponent::walk_speed()'],['../classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3',1,'tram::RaycastControllerComponent::walk_speed()']]],\n  ['wall_5fcollision_3',['wall_collision',['../classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407',1,'tram::RaycastControllerComponent']]],\n  ['wallbonk_5fcallback_4',['wallbonk_callback',['../classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2',1,'tram::FPSControllerComponent::wallbonk_callback()'],['../classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd',1,'tram::RaycastControllerComponent::wallbonk_callback()']]],\n  ['warning_5',['WARNING',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b',1,'tram']]],\n  ['was_5ferror_6',['was_error',['../classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f',1,'tram::File']]],\n  ['water_7',['Water',['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html',1,'tram::Ext::Kitchensink::Water'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2',1,'tram::Ext::Kitchensink::Water::Water()']]],\n  ['weight_8',['weight',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81',1,'tram::AnimationComponent::AnimationPlaybackInfo::weight()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e',1,'tram::Ext::Kitchensink::AnimState::weight()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175',1,'tram::Ext::Kitchensink::ItemClass::weight()']]],\n  ['wgt_9',['wgt',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f1_10',['wgt_1',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f2_11',['wgt_2',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f3_12',['wgt_3',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5fi_13',['wgt_i',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359',1,'tram::Render::API::DynamicVertex']]],\n  ['widget_14',['WIDGET',['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24',1,'tram::GUI']]],\n  ['widget_15',['widget',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1',1,'tram::GUI']]],\n  ['widget_5fborder_16',['WIDGET_BORDER',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755',1,'tram::GUI']]],\n  ['widget_5fbottom_5fleft_17',['WIDGET_BOTTOM_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9',1,'tram::GUI']]],\n  ['widget_5fbottom_5fmiddle_18',['WIDGET_BOTTOM_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8',1,'tram::GUI']]],\n  ['widget_5fbottom_5fright_19',['WIDGET_BOTTOM_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df',1,'tram::GUI']]],\n  ['widget_5fbutton_20',['WIDGET_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58',1,'tram::GUI']]],\n  ['widget_5fbutton_5f1_5fwindow_21',['WIDGET_BUTTON_1_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f',1,'tram::GUI']]],\n  ['widget_5fbutton_5f2_5fwindow_22',['WIDGET_BUTTON_2_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a',1,'tram::GUI']]],\n  ['widget_5fbutton_5fdisabled_23',['WIDGET_BUTTON_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9',1,'tram::GUI']]],\n  ['widget_5fbutton_5fdown_24',['WIDGET_BUTTON_DOWN',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e',1,'tram::GUI']]],\n  ['widget_5fbutton_5fexit_25',['WIDGET_BUTTON_EXIT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f',1,'tram::GUI']]],\n  ['widget_5fbutton_5fhelp_26',['WIDGET_BUTTON_HELP',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2',1,'tram::GUI']]],\n  ['widget_5fbutton_5fleft_27',['WIDGET_BUTTON_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3',1,'tram::GUI']]],\n  ['widget_5fbutton_5fpressed_28',['WIDGET_BUTTON_PRESSED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005',1,'tram::GUI']]],\n  ['widget_5fbutton_5fpressed_5fdisabled_29',['WIDGET_BUTTON_PRESSED_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52',1,'tram::GUI']]],\n  ['widget_5fbutton_5fright_30',['WIDGET_BUTTON_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925',1,'tram::GUI']]],\n  ['widget_5fbutton_5fselected_5fdisabled_31',['WIDGET_BUTTON_SELECTED_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82',1,'tram::GUI']]],\n  ['widget_5fbutton_5fselected_5fenabled_32',['WIDGET_BUTTON_SELECTED_ENABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29',1,'tram::GUI']]],\n  ['widget_5fbutton_5fup_33',['WIDGET_BUTTON_UP',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315',1,'tram::GUI']]],\n  ['widget_5fcheck_5fbutton_34',['WIDGET_CHECK_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04',1,'tram::GUI']]],\n  ['widget_5fdefault_35',['WIDGET_DEFAULT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664',1,'tram::GUI']]],\n  ['widget_5fdivider_5fhorizontal_36',['WIDGET_DIVIDER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09',1,'tram::GUI']]],\n  ['widget_5fdivider_5fvertical_37',['WIDGET_DIVIDER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda',1,'tram::GUI']]],\n  ['widget_5fleft_38',['WIDGET_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9',1,'tram::GUI']]],\n  ['widget_5fmiddle_39',['WIDGET_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fleft_40',['WIDGET_MIDDLE_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fmiddle_41',['WIDGET_MIDDLE_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fright_42',['WIDGET_MIDDLE_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9',1,'tram::GUI']]],\n  ['widget_5fprogess_5fbar_43',['WIDGET_PROGESS_BAR',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37',1,'tram::GUI']]],\n  ['widget_5fradio_5fbutton_44',['WIDGET_RADIO_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525',1,'tram::GUI']]],\n  ['widget_5freverse_5fwindow_45',['WIDGET_REVERSE_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b',1,'tram::GUI']]],\n  ['widget_5fright_46',['WIDGET_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5fhorizontal_47',['WIDGET_SCROLL_BAR_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5ftrack_5fhorizontal_48',['WIDGET_SCROLL_BAR_TRACK_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5ftrack_5fvertical_49',['WIDGET_SCROLL_BAR_TRACK_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5fvertical_50',['WIDGET_SCROLL_BAR_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_51',['WIDGET_SELECT_BOX',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_5fpressed_52',['WIDGET_SELECT_BOX_PRESSED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_5fselected_53',['WIDGET_SELECT_BOX_SELECTED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44',1,'tram::GUI']]],\n  ['widget_5fslider_5fhorizontal_54',['WIDGET_SLIDER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543',1,'tram::GUI']]],\n  ['widget_5fslider_5ftrack_5fhorizontal_55',['WIDGET_SLIDER_TRACK_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de',1,'tram::GUI']]],\n  ['widget_5fslider_5ftrack_5fvertical_56',['WIDGET_SLIDER_TRACK_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b',1,'tram::GUI']]],\n  ['widget_5fslider_5fvertical_57',['WIDGET_SLIDER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334',1,'tram::GUI']]],\n  ['widget_5ftab_58',['WIDGET_TAB',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41',1,'tram::GUI']]],\n  ['widget_5ftext_5fbox_59',['WIDGET_TEXT_BOX',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95',1,'tram::GUI']]],\n  ['widget_5ftext_5fbox_5fdisabled_60',['WIDGET_TEXT_BOX_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f',1,'tram::GUI']]],\n  ['widget_5ftop_5fleft_61',['WIDGET_TOP_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505',1,'tram::GUI']]],\n  ['widget_5ftop_5fmiddle_62',['WIDGET_TOP_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c',1,'tram::GUI']]],\n  ['widget_5ftop_5fright_63',['WIDGET_TOP_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1',1,'tram::GUI']]],\n  ['widget_5fwindow_64',['WIDGET_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c',1,'tram::GUI']]],\n  ['width_65',['width',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f',1,'tram::Ext::Kitchensink::ItemClass::width()'],['../classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca',1,'tram::Render::Material::width()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6',1,'tram::Render::API::SWTexture::width()'],['../structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58',1,'tram::Render::SpriteFrame::width()']]],\n  ['worldcell_66',['WorldCell',['../classtram_1_1_world_cell.html',1,'tram::WorldCell'],['../classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54',1,'tram::Entity::WorldCell()'],['../classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54',1,'tram::Transition::WorldCell()'],['../classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8',1,'tram::WorldCell::WorldCell()']]],\n  ['worldcell_2ecpp_67',['worldcell.cpp',['../worldcell_8cpp.html',1,'']]],\n  ['worldcell_2eh_68',['worldcell.h',['../worldcell_8h.html',1,'']]],\n  ['worldcell_5flimit_69',['WORLDCELL_LIMIT',['../namespacetram.html#ab751286624cca492c1abca52f7e0be8c',1,'tram']]],\n  ['worldcell_5ftransition_5flimit_70',['WORLDCELL_TRANSITION_LIMIT',['../namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50',1,'tram']]],\n  ['worldcellproperties_71',['WorldCellProperties',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html',1,'tram::Ext::Menu']]],\n  ['worldmodel_72',['worldmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['write_73',['WRITE',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece',1,'tram::File']]],\n  ['write_5ffloat32_74',['write_float32',['../classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5',1,'tram::TextWriterParser::write_float32()'],['../classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf',1,'tram::File::write_float32()'],['../classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7',1,'tram::FileWriterParser::write_float32()']]],\n  ['write_5ffloat64_75',['write_float64',['../classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5',1,'tram::TextWriterParser::write_float64()'],['../classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912',1,'tram::FileWriterParser::write_float64()'],['../classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c',1,'tram::File::write_float64()']]],\n  ['write_5fint16_76',['write_int16',['../classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55',1,'tram::FileWriterParser::write_int16()'],['../classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c',1,'tram::TextWriterParser::write_int16()'],['../classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f',1,'tram::File::write_int16()']]],\n  ['write_5fint32_77',['write_int32',['../classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51',1,'tram::FileWriterParser::write_int32()'],['../classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880',1,'tram::TextWriterParser::write_int32()'],['../classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb',1,'tram::File::write_int32()']]],\n  ['write_5fint64_78',['write_int64',['../classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a',1,'tram::FileWriterParser::write_int64()'],['../classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da',1,'tram::File::write_int64()'],['../classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8',1,'tram::TextWriterParser::write_int64()']]],\n  ['write_5fint8_79',['write_int8',['../classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2',1,'tram::File::write_int8()'],['../classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6',1,'tram::FileWriterParser::write_int8()'],['../classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc',1,'tram::TextWriterParser::write_int8()']]],\n  ['write_5fname_80',['write_name',['../classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52',1,'tram::FileWriterParser::write_name()'],['../classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b',1,'tram::TextWriterParser::write_name()'],['../classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3',1,'tram::File::write_name()']]],\n  ['write_5fnewline_81',['write_newline',['../classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5',1,'tram::TextWriterParser::write_newline()'],['../classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875',1,'tram::File::write_newline()'],['../classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33',1,'tram::FileWriterParser::write_newline()=0']]],\n  ['write_5fstring_82',['write_string',['../classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d',1,'tram::FileWriterParser::write_string()'],['../classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929',1,'tram::TextWriterParser::write_string()'],['../classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91',1,'tram::File::write_string()']]],\n  ['write_5fuint16_83',['write_uint16',['../classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b',1,'tram::FileWriterParser::write_uint16()'],['../classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4',1,'tram::TextWriterParser::write_uint16()'],['../classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e',1,'tram::File::write_uint16(uint16_t value)']]],\n  ['write_5fuint32_84',['write_uint32',['../classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5',1,'tram::File::write_uint32()'],['../classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e',1,'tram::TextWriterParser::write_uint32()'],['../classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772',1,'tram::FileWriterParser::write_uint32()']]],\n  ['write_5fuint64_85',['write_uint64',['../classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d',1,'tram::TextWriterParser::write_uint64()'],['../classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e',1,'tram::File::write_uint64()'],['../classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542',1,'tram::FileWriterParser::write_uint64()']]],\n  ['write_5fuint8_86',['write_uint8',['../classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5',1,'tram::File::write_uint8()'],['../classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389',1,'tram::TextWriterParser::write_uint8()'],['../classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b',1,'tram::FileWriterParser::write_uint8()']]],\n  ['writer_87',['writer',['../classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a',1,'tram::File']]],\n  ['writer_5fparser_88',['writer_parser',['../classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1',1,'tram::File']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_18.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_18.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_18.js",
    "content": "var searchData=\n[\n  ['x_0',['x',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a',1,'tram::Ext::Kitchensink::ItemInstance::x()'],['../structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e',1,'tram::GUI::FrameObject::x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039',1,'tram::Render::API::Point2D::x()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_19.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_19.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_19.js",
    "content": "var searchData=\n[\n  ['y_0',['y',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87',1,'tram::Ext::Kitchensink::ItemInstance::y()'],['../structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2',1,'tram::GUI::FrameObject::y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28',1,'tram::Render::API::Point2D::y()']]],\n  ['yaw_1',['yaw',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['yeet_2',['Yeet',['../classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91',1,'tram::Entity::Yeet()'],['../classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf',1,'tram::DiskReader::Yeet()'],['../classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb',1,'tram::DiskWriter::Yeet()'],['../classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd',1,'tram::FileReader::Yeet()'],['../classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021',1,'tram::FileWriter::Yeet()']]],\n  ['yeet_3',['yeet',['../classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a92887e8a968a2e5c33afde0a97d909d3',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a7fd2f109de653312be2dd05e70bcb456',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ade7b2c38396c3e7b4e56575f8a0d45dd',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a56bd08e6a719e3ce42b1befec0871314',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a9b57dacbc4100263efa58393d4dcee71',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#abf8fb2ac22a613aeec1352f2b6fd9f19',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ab03a41f9f06ec0498dbbe9936f89f15a',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#aeff899a413c447e8b1f0c43c2ee1b22d',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a2eaafb5a31e19e33fd479f78f74dfdbc',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a33a0538e443702363c86b29422ddecf1',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#adc47ac1f2a537bc6f1bd71203ae7c27a',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ad29f0c53f47721905f77a3f83a4d2b97',1,'tram::Component::yeet()']]],\n  ['yeet_4',['Yeet',['../namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73',1,'tram::ScriptableType::Yeet()'],['../namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb',1,'tram::Async::Yeet()']]],\n  ['yeet_5',['YEET',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d',1,'tram::System']]],\n  ['yeetcollisionshape_6',['YeetCollisionShape',['../namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce',1,'tram::Physics::API']]],\n  ['yeetrigidbody_7',['YeetRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3',1,'tram::Physics::API']]],\n  ['yeettrigger_8',['YeetTrigger',['../namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_1a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_1a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_1a.js",
    "content": "var searchData=\n[\n  ['_7eaabbtree_0',['~AABBTree',['../classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc',1,'tram::AABBTree']]],\n  ['_7eaipackage_1',['~AIPackage',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e',1,'tram::Ext::Kitchensink::AIPackage']]],\n  ['_7eanimationcomponent_2',['~AnimationComponent',['../classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee',1,'tram::AnimationComponent']]],\n  ['_7eaudiocomponent_3',['~AudioComponent',['../classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13',1,'tram::AudioComponent']]],\n  ['_7ecallbackmotionstate_4',['~CallbackMotionState',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59',1,'tram::Physics::API::CallbackMotionState']]],\n  ['_7ecamera_5',['~Camera',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111',1,'tram::Ext::Camera::Camera']]],\n  ['_7ecomponent_6',['~Component',['../classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f',1,'tram::Component']]],\n  ['_7econsole_7',['~Console',['../classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe',1,'tram::Ext::Menu::Console']]],\n  ['_7edebugmenu_8',['~DebugMenu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7',1,'tram::Ext::Menu::DebugMenu']]],\n  ['_7edecalcomponent_9',['~DecalComponent',['../classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267',1,'tram::DecalComponent']]],\n  ['_7ediskreader_10',['~DiskReader',['../classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228',1,'tram::DiskReader']]],\n  ['_7ediskwriter_11',['~DiskWriter',['../classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587',1,'tram::DiskWriter']]],\n  ['_7eentity_12',['~Entity',['../classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2',1,'tram::Entity']]],\n  ['_7eentitycomponent_13',['~EntityComponent',['../classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33',1,'tram::EntityComponent']]],\n  ['_7eentitypicker_14',['~EntityPicker',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b',1,'tram::Ext::Menu::EntityPicker']]],\n  ['_7eentityproperties_15',['~EntityProperties',['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808',1,'tram::Ext::Menu::EntityProperties']]],\n  ['_7eeventemit_16',['~EventEmit',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494',1,'tram::Ext::Menu::EventEmit']]],\n  ['_7eeventlistener_17',['~EventListener',['../classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1',1,'tram::EventListener']]],\n  ['_7efile_18',['~File',['../classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857',1,'tram::File']]],\n  ['_7efilereader_19',['~FileReader',['../classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f',1,'tram::FileReader']]],\n  ['_7efilewriter_20',['~FileWriter',['../classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c',1,'tram::FileWriter']]],\n  ['_7efirstpersoncamera_21',['~FirstPersonCamera',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['_7efpscontrollercomponent_22',['~FPSControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660',1,'tram::FPSControllerComponent']]],\n  ['_7eintercept_23',['~Intercept',['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6',1,'tram::Ext::Menu::Intercept']]],\n  ['_7einterceptmenu_24',['~InterceptMenu',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166',1,'tram::Ext::Menu::InterceptMenu']]],\n  ['_7einventorymanager_25',['~InventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d',1,'tram::Ext::Kitchensink::InventoryManager']]],\n  ['_7elightcomponent_26',['~LightComponent',['../classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b',1,'tram::LightComponent']]],\n  ['_7elistdialog_27',['~ListDialog',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27',1,'tram::Ext::Kitchensink::ListDialog']]],\n  ['_7elistinventorymanager_28',['~ListInventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b',1,'tram::Ext::Kitchensink::ListInventoryManager']]],\n  ['_7elistselection_29',['~ListSelection',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b',1,'tram::Ext::Menu::ListSelection']]],\n  ['_7emenu_30',['~Menu',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305',1,'tram::Ext::Menu::Menu']]],\n  ['_7emessagesend_31',['~MessageSend',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4',1,'tram::Ext::Menu::MessageSend']]],\n  ['_7enavmesh_32',['~Navmesh',['../classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3',1,'tram::Navmesh']]],\n  ['_7eoptions_33',['~Options',['../classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b',1,'tram::Ext::Menu::Options']]],\n  ['_7eparticlecomponent_34',['~ParticleComponent',['../classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7',1,'tram::ParticleComponent']]],\n  ['_7epath_35',['~Path',['../classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f',1,'tram::Path']]],\n  ['_7ephysicscomponent_36',['~PhysicsComponent',['../classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba',1,'tram::PhysicsComponent']]],\n  ['_7eplayer_37',['~Player',['../classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc',1,'tram::Player']]],\n  ['_7eplayercomponent_38',['~PlayerComponent',['../classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1',1,'tram::PlayerComponent']]],\n  ['_7epoolptr_39',['~PoolPtr',['../classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3',1,'tram::PoolPtr']]],\n  ['_7equestvariable_40',['~QuestVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['_7eraycastcontrollercomponent_41',['~RaycastControllerComponent',['../classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01',1,'tram::RaycastControllerComponent']]],\n  ['_7erendercomponent_42',['~RenderComponent',['../classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd',1,'tram::RenderComponent']]],\n  ['_7eresourceproxy_43',['~ResourceProxy',['../classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63',1,'tram::ResourceProxy']]],\n  ['_7escriptable_44',['~Scriptable',['../classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf',1,'tram::Scriptable']]],\n  ['_7esettingsmenu_45',['~SettingsMenu',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['_7esignalmenu_46',['~SignalMenu',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1',1,'tram::Ext::Menu::SignalMenu']]],\n  ['_7espritecomponent_47',['~SpriteComponent',['../classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2',1,'tram::SpriteComponent']]],\n  ['_7estatisticsmenu_48',['~StatisticsMenu',['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809',1,'tram::Ext::Menu::StatisticsMenu']]],\n  ['_7esystemmenu_49',['~SystemMenu',['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce',1,'tram::Ext::Menu::SystemMenu']]],\n  ['_7etemplatecomponent_50',['~TemplateComponent',['../classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d',1,'tram::TemplateComponent']]],\n  ['_7etransition_51',['~Transition',['../classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b',1,'tram::Transition']]],\n  ['_7etriggercomponent_52',['~TriggerComponent',['../classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012',1,'tram::TriggerComponent']]],\n  ['_7euid_53',['~UID',['../structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835',1,'tram::UID']]],\n  ['_7evalue_54',['~Value',['../classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d',1,'tram::Value']]],\n  ['_7evalueptr_55',['~ValuePtr',['../classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab',1,'tram::ValuePtr']]],\n  ['_7eworldcellproperties_56',['~WorldCellProperties',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f',1,'tram::Ext::Menu::WorldCellProperties']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_2.js",
    "content": "var searchData=\n[\n  ['back_0',['back',['../classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392',1,'tram::Queue']]],\n  ['barycentric_1',['barycentric',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a',1,'tram::Render::API::ClipPoint']]],\n  ['base_5fattributes_2',['base_attributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5fclass_3',['base_class',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['base_5fclasses_4',['base_classes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5ffactions_5',['base_factions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5fpose_6',['base_pose',['../classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c',1,'tram::AnimationComponent']]],\n  ['base_5ftype_7',['base_type',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['base_5fvalue_8',['base_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['baseattribute_9',['BaseAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['basefactionrank_10',['BaseFactionRank',['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html',1,'tram::Ext::Kitchensink']]],\n  ['begin_11',['begin',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7',1,'tram::Render::API::Scanline::begin()'],['../classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916',1,'tram::Pool::begin()'],['../classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43',1,'tram::StackPool::begin()']]],\n  ['begin_12',['Begin',['../namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f',1,'tram::GUI']]],\n  ['begin_5fadv_13',['begin_adv',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5',1,'tram::Render::API::Scanline']]],\n  ['begin_5fp0_14',['begin_p0',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16',1,'tram::Render::API::Scanline']]],\n  ['begin_5fp1_15',['begin_p1',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334',1,'tram::Render::API::Scanline']]],\n  ['beginned_16',['beginned',['../namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8',1,'tram::GUI']]],\n  ['binary_17',['BINARY',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d',1,'tram::File']]],\n  ['binding_5faction_18',['binding_action',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['binding_5fstate_5fready_19',['binding_state_ready',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['bindkeyboardkey_20',['BindKeyboardKey',['../namespacetram_1_1_u_i.html#a581823cdaa8ed3cef6f48d2610961511',1,'tram::UI::BindKeyboardKey(KeyboardKey key, void(*action)(KeyboardKey))'],['../namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9',1,'tram::UI::BindKeyboardKey(KeyboardKey key, keyboardaction_t action)'],['../namespacetram_1_1_u_i.html#a49763cc0300d866370805b94a99f36fd',1,'tram::UI::BindKeyboardKey(KeyboardKey key, void(*action)())']]],\n  ['binduniformblock_21',['BindUniformBlock',['../namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4',1,'tram::Render::API::BindUniformBlock()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0',1,'tram::Render::API::LinkedShader::BindUniformBlock()']]],\n  ['binguser_22',['binguser',['../main_8cpp.html#a7b2977ab1d0adc9fca3191665cdbd8a8',1,'main.cpp']]],\n  ['blitdot_23',['BlitDot',['../namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08',1,'tram::Render::API']]],\n  ['blitline_24',['BlitLine',['../namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d',1,'tram::Render::API']]],\n  ['blitlineoctant0_25',['BlitLineOctant0',['../namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde',1,'tram::Render::API']]],\n  ['blitlineoctant1_26',['BlitLineOctant1',['../namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c',1,'tram::Render::API']]],\n  ['bob_27',['bob',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bob_5fcallback_28',['bob_callback',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bob_5fchange_5fspeed_29',['BOB_CHANGE_SPEED',['../namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee',1,'tram::Ext::Camera']]],\n  ['bob_5fspeed_30',['bob_speed',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fdistance_31',['bobbing_distance',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5ftilt_32',['bobbing_tilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5ftilt_5fgoal_33',['bobbing_tilt_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fweight_34',['bobbing_weight',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fweight_5fgoal_35',['bobbing_weight_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bone_36',['bone',['../structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0',1,'tram::Render::KeyframeHeader::bone()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874',1,'tram::Render::DynamicModelVertex::bone()']]],\n  ['bone_37',['Bone',['../structtram_1_1_render_1_1_bone.html',1,'tram::Render']]],\n  ['bone_5fcount_38',['BONE_COUNT',['../namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6',1,'tram::Render']]],\n  ['bone_5findex_39',['bone_index',['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e',1,'tram::Render::API::FFPHelper::bone_index()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468',1,'tram::Render::API::FVFHelper::bone_index()']]],\n  ['bone_5funiform_5fbinding_40',['bone_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8',1,'tram::Render::API']]],\n  ['bone_5funiform_5fbuffer_41',['bone_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb',1,'tram::Render::API']]],\n  ['bone_5fweight_42',['bone_weight',['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9',1,'tram::Render::API::FFPHelper::bone_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022',1,'tram::Render::API::FVFHelper::bone_weight()']]],\n  ['boneweight_43',['boneweight',['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2',1,'tram::Render::DynamicModelVertex']]],\n  ['bool32_44',['bool32',['../structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa',1,'tram::Settings::SettingInfo']]],\n  ['bool_5fptr_45',['bool_ptr',['../classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103',1,'tram::ValuePtr']]],\n  ['bool_5fvalue_46',['bool_value',['../classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8',1,'tram::Value']]],\n  ['border_5fh_47',['border_h',['../structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7',1,'tram::Render::SpriteFrame']]],\n  ['border_5fv_48',['border_v',['../structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6',1,'tram::Render::SpriteFrame']]],\n  ['box_49',['Box',['../structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3',1,'tram::Physics::CollisionShape']]],\n  ['breakable_50',['Breakable',['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d',1,'tram::Ext::Kitchensink::Breakable::Breakable()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html',1,'tram::Ext::Kitchensink::Breakable']]],\n  ['bt_5fcollisionshape_51',['bt_collisionshape',['../structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4',1,'tram::Physics::trigger_t']]],\n  ['bt_5fmetadata_52',['bt_metadata',['../structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa',1,'tram::Physics::trigger_t::bt_metadata()'],['../structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9',1,'tram::Physics::rigidbody_t::bt_metadata()']]],\n  ['bt_5frigidbody_53',['bt_rigidbody',['../structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3',1,'tram::Physics::rigidbody_t']]],\n  ['bt_5fshape_54',['bt_shape',['../structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7',1,'tram::Physics::collisionshape_t']]],\n  ['bucket_55',['bucket',['../structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8',1,'tram::Render::BucketMapping']]],\n  ['bucketmapping_56',['BucketMapping',['../structtram_1_1_render_1_1_bucket_mapping.html',1,'tram::Render']]],\n  ['buffer_57',['buffer',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212',1,'tram::Audio::Spatial::AudioRender::buffer()'],['../classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf',1,'tram::File::buffer()'],['../namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7',1,'tram::implementation::buffer()']]],\n  ['buffer_2ecpp_58',['buffer.cpp',['../buffer_8cpp.html',1,'']]],\n  ['buffer_2eh_59',['buffer.h',['../buffer_8h.html',1,'']]],\n  ['buffer_5fcount_60',['BUFFER_COUNT',['../namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20',1,'tram::Audio::Spatial']]],\n  ['buffer_5fcursor_61',['buffer_cursor',['../classtram_1_1_file.html#aa4875014953235da2776dac766558fad',1,'tram::File']]],\n  ['buffer_5fend_62',['buffer_end',['../classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f',1,'tram::File']]],\n  ['bullet_2ecpp_63',['bullet.cpp',['../bullet_8cpp.html',1,'']]],\n  ['button_64',['Button',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9',1,'tram::Ext::Kitchensink::Button::Button()'],['../namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a',1,'tram::GUI::Button()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html',1,'tram::Ext::Kitchensink::Button']]],\n  ['button_5ffield_5fdirection_65',['BUTTON_FIELD_DIRECTION',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fdistance_66',['BUTTON_FIELD_DISTANCE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fflags_67',['BUTTON_FIELD_FLAGS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5flast_68',['BUTTON_FIELD_LAST',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5flightmap_69',['BUTTON_FIELD_LIGHTMAP',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fmodel_70',['BUTTON_FIELD_MODEL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5forigin_71',['BUTTON_FIELD_ORIGIN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fparent_72',['BUTTON_FIELD_PARENT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fpause_73',['BUTTON_FIELD_PAUSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fsound_74',['BUTTON_FIELD_SOUND',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fspeed_75',['BUTTON_FIELD_SPEED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5flocked_76',['BUTTON_FLAG_LOCKED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5fmomentary_77',['BUTTON_FLAG_MOMENTARY',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5fpushed_78',['BUTTON_FLAG_PUSHED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5frotary_79',['BUTTON_FLAG_ROTARY',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5ftoggle_80',['BUTTON_FLAG_TOGGLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5flowering_81',['BUTTON_STATE_LOWERING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fnadir_5fready_82',['BUTTON_STATE_NADIR_READY',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fnadir_5fwaiting_83',['BUTTON_STATE_NADIR_WAITING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5frising_84',['BUTTON_STATE_RISING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fzenith_5fready_85',['BUTTON_STATE_ZENITH_READY',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fzenith_5fwaiting_86',['BUTTON_STATE_ZENITH_WAITING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_3.js",
    "content": "var searchData=\n[\n  ['calcsortkey_0',['CalcSortKey',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415',1,'tram::Render::API::GLDrawListEntry']]],\n  ['callback_1',['callback',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760',1,'tram::Ext::Menu::ListSelection::callback()'],['../structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5',1,'tram::Async::ResourceRequest::callback()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a',1,'tram::Ext::Menu::EntityPicker::callback()']]],\n  ['callback_2',['CALLBACK',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c',1,'tram::Async']]],\n  ['callback_5fcount_3',['callback_count',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['callback_5fdata_4',['callback_data',['../structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea',1,'tram::Async::ResourceRequest']]],\n  ['callbackmotionstate_5',['CallbackMotionState',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05',1,'tram::Physics::API::CallbackMotionState::CallbackMotionState()'],['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html',1,'tram::Physics::API::CallbackMotionState']]],\n  ['callfunction_6',['CallFunction',['../classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed',1,'tram::Script::Interface::CallFunction()'],['../namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447',1,'tram::Script::CallFunction()']]],\n  ['camera_7',['camera',['../main_8cpp.html#a9b1d1ad26dca3cdfbe7bcabb98c50bcd',1,'main.cpp']]],\n  ['camera_8',['Camera',['../classtram_1_1_ext_1_1_camera_1_1_camera.html',1,'tram::Ext::Camera']]],\n  ['camera_2ecpp_9',['camera.cpp',['../camera_8cpp.html',1,'']]],\n  ['camera_2eh_10',['camera.h',['../camera_8h.html',1,'']]],\n  ['camera_5fmultiplier_11',['CAMERA_MULTIPLIER',['../namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f',1,'tram']]],\n  ['camera_5fsensitivity_12',['CAMERA_SENSITIVITY',['../namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af',1,'tram::UI']]],\n  ['camera_5fspeed_13',['CAMERA_SPEED',['../namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c',1,'tram::UI']]],\n  ['camera_5fsystem_14',['CAMERA_SYSTEM',['../namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d',1,'tram::Ext::Camera']]],\n  ['cancelrequest_15',['CancelRequest',['../namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e',1,'tram::Async']]],\n  ['capsule_16',['Capsule',['../structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248',1,'tram::Physics::CollisionShape']]],\n  ['cell_17',['cell',['../classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470',1,'tram::Entity::cell()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc',1,'tram::Ext::Menu::WorldCellProperties::cell()']]],\n  ['cell_5finto_18',['cell_into',['../classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5',1,'tram::Transition']]],\n  ['center_19',['center',['../structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620',1,'tram::Render::SpritePoint']]],\n  ['chamberpot_20',['chamberpot',['../main_8cpp.html#acc812653ff7db6ef5da9d01fbfd28f17',1,'main.cpp']]],\n  ['channels_21',['channels',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f',1,'tram::Audio::Spatial::AudioBuffer::channels()'],['../classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369',1,'tram::Audio::Sound::channels()'],['../classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b',1,'tram::Render::Material::channels()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d',1,'tram::Render::API::SWTexture::channels()']]],\n  ['character_22',['character',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6',1,'tram::Ext::Kitchensink::FactionRank::character()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974',1,'tram::Ext::Kitchensink::CharacterDisposition::character()']]],\n  ['character_23',['Character',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html',1,'tram::Ext::Kitchensink']]],\n  ['character_2ecpp_24',['character.cpp',['../character_8cpp.html',1,'']]],\n  ['character_2eh_25',['character.h',['../character_8h.html',1,'']]],\n  ['character_5fclass_26',['character_class',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5',1,'tram::Ext::Kitchensink::Character']]],\n  ['character_5fclasses_27',['character_classes',['../namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7',1,'tram::Ext::Kitchensink']]],\n  ['character_5fcount_28',['CHARACTER_COUNT',['../character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf',1,'character.cpp']]],\n  ['characterclass_29',['CharacterClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html',1,'tram::Ext::Kitchensink']]],\n  ['characterdisposition_30',['CharacterDisposition',['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html',1,'tram::Ext::Kitchensink']]],\n  ['characters_31',['characters',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4',1,'tram::Ext::Kitchensink']]],\n  ['checkbox_32',['CheckBox',['../namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf',1,'tram::GUI']]],\n  ['checkreverb_33',['CheckReverb',['../namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304',1,'tram::Audio::Spatial']]],\n  ['checktransition_34',['CheckTransition',['../classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a',1,'tram::Entity']]],\n  ['children_35',['children',['../structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af',1,'tram::Ext::Kitchensink::EntityChildren']]],\n  ['class_5fcount_36',['CLASS_COUNT',['../character_8cpp.html#a1b511158ca6796bb813f3bdb64369417',1,'character.cpp']]],\n  ['clear_37',['clear',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f',1,'tram::Ext::Kitchensink::InventoryFactoryInfo']]],\n  ['clear_38',['Clear',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19',1,'tram::Ext::Menu::Menu::Clear()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272',1,'tram::Ext::Kitchensink::AIAgent::Clear()']]],\n  ['clear_39',['clear',['../classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b',1,'tram::EventListener::clear()'],['../classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376',1,'tram::Component::clear()']]],\n  ['clear_5fscreen_40',['clear_screen',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e',1,'tram::Render::API']]],\n  ['clearoverride_41',['ClearOverride',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['clicked_42',['Clicked',['../namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07',1,'tram::GUI']]],\n  ['clickhandled_43',['ClickHandled',['../namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f',1,'tram::GUI']]],\n  ['clickhandledlate_44',['ClickHandledLate',['../namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8',1,'tram::GUI']]],\n  ['cliplineinclipspace_45',['ClipLineInClipSpace',['../namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00',1,'tram::Render::API']]],\n  ['clippoint_46',['ClipPoint',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html',1,'tram::Render::API']]],\n  ['cliprenderline_47',['ClipRenderLine',['../namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0',1,'tram::Render::API']]],\n  ['clipsingleclippointlinebottomplane_48',['ClipSingleClipPointLineBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca',1,'tram::Render::API']]],\n  ['clipsingleclippointlinefarplane_49',['ClipSingleClipPointLineFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a',1,'tram::Render::API']]],\n  ['clipsingleclippointlineleftplane_50',['ClipSingleClipPointLineLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8',1,'tram::Render::API']]],\n  ['clipsingleclippointlinenearplane_51',['ClipSingleClipPointLineNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263',1,'tram::Render::API']]],\n  ['clipsingleclippointlinerightplane_52',['ClipSingleClipPointLineRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb',1,'tram::Render::API']]],\n  ['clipsingleclippointlinetopplane_53',['ClipSingleClipPointLineTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e',1,'tram::Render::API']]],\n  ['clipsinglepointline_54',['ClipSinglePointLine',['../namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718',1,'tram::Render::API']]],\n  ['clipsinglepointlinebottomplane_55',['ClipSinglePointLineBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8',1,'tram::Render::API']]],\n  ['clipsinglepointlinefarplane_56',['ClipSinglePointLineFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8',1,'tram::Render::API']]],\n  ['clipsinglepointlineleftplane_57',['ClipSinglePointLineLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0',1,'tram::Render::API']]],\n  ['clipsinglepointlinenearplane_58',['ClipSinglePointLineNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e',1,'tram::Render::API']]],\n  ['clipsinglepointlinerightplane_59',['ClipSinglePointLineRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5',1,'tram::Render::API']]],\n  ['clipsinglepointlinetopplane_60',['ClipSinglePointLineTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d',1,'tram::Render::API']]],\n  ['clipspacetoscreenspace_61',['ClipSpaceToScreenSpace',['../namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853',1,'tram::Render::API']]],\n  ['cliptriangle_62',['ClipTriangle',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html',1,'tram::Render::API']]],\n  ['cliptrianglelist_63',['ClipTriangleList',['../namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef',1,'tram::Render::API']]],\n  ['close_64',['CLOSE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa',1,'tram::Message::CLOSE()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315',1,'tram::Signal::CLOSE()']]],\n  ['closeall_65',['CloseAll',['../namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295',1,'tram::Ext::Menu']]],\n  ['co_66',['co',['../structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4',1,'tram::Render::DynamicModelVertex::co()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376',1,'tram::Render::StaticModelVertex::co()'],['../structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589',1,'tram::Render::SpriteVertex::co()'],['../structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3',1,'tram::Render::LineVertex::co()']]],\n  ['col_67',['col',['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c',1,'tram::Render::API::ColorVertex']]],\n  ['col_5fcallback_68',['col_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7',1,'tram::Physics::API']]],\n  ['coll_5fdynamicobj_69',['COLL_DYNAMICOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4',1,'tram::Physics']]],\n  ['coll_5fmonster_70',['COLL_MONSTER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473',1,'tram::Physics']]],\n  ['coll_5fplayer_71',['COLL_PLAYER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65',1,'tram::Physics']]],\n  ['coll_5fstaticobj_72',['COLL_STATICOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f',1,'tram::Physics']]],\n  ['coll_5ftrigger_73',['COLL_TRIGGER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658',1,'tram::Physics']]],\n  ['coll_5fvehicle_74',['COLL_VEHICLE',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287',1,'tram::Physics']]],\n  ['coll_5fworldobj_75',['COLL_WORLDOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec',1,'tram::Physics']]],\n  ['collate_76',['Collate',['../namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024',1,'tram::Stats']]],\n  ['collide_77',['collide',['../classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839',1,'tram::ControllerComponent']]],\n  ['collider_78',['collider',['../structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff',1,'tram::Physics::Collision']]],\n  ['collision_79',['Collision',['../classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d',1,'tram::TriggerComponent::Collision()'],['../structtram_1_1_physics_1_1_collision.html',1,'tram::Physics::Collision']]],\n  ['collision_5fcallback_80',['collision_callback',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181',1,'tram::Physics::API::RigidbodyMetadata::collision_callback()'],['../namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0',1,'tram::collision_callback()']]],\n  ['collision_5fdata_81',['collision_data',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['collision_5fflags_82',['collision_flags',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['collision_5fgroup_83',['collision_group',['../namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a',1,'tram::collision_group()'],['../classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299',1,'tram::FPSControllerComponent::collision_group()'],['../classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099',1,'tram::RaycastControllerComponent::collision_group()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead',1,'tram::Physics::API::RigidbodyMetadata::collision_group()']]],\n  ['collision_5fheight_84',['collision_height',['../namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9',1,'tram::collision_height()'],['../classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed',1,'tram::FPSControllerComponent::collision_height()'],['../classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a',1,'tram::RaycastControllerComponent::collision_height()']]],\n  ['collision_5fheight_5fcrouch_85',['collision_height_crouch',['../namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f',1,'tram::collision_height_crouch()'],['../classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04',1,'tram::FPSControllerComponent::collision_height_crouch()']]],\n  ['collision_5fmask_86',['collision_mask',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb',1,'tram::Physics::API::RigidbodyMetadata::collision_mask()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0',1,'tram::Physics::API::ShapecastCallback::collision_mask()'],['../classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68',1,'tram::Trigger::collision_mask()']]],\n  ['collision_5fwidth_87',['collision_width',['../namespacetram.html#a1759e20de49502fc468e5b65e7baf481',1,'tram::collision_width()'],['../classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f',1,'tram::RaycastControllerComponent::collision_width()'],['../classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781',1,'tram::FPSControllerComponent::collision_width()']]],\n  ['collisiongroup_88',['CollisionGroup',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8',1,'tram::Physics']]],\n  ['collisionmodel_89',['CollisionModel',['../classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc',1,'tram::Physics::CollisionModel::CollisionModel()'],['../classtram_1_1_physics_1_1_collision_model.html',1,'tram::Physics::CollisionModel']]],\n  ['collisionmodel_2ecpp_90',['collisionmodel.cpp',['../collisionmodel_8cpp.html',1,'']]],\n  ['collisionmodel_2eh_91',['collisionmodel.h',['../collisionmodel_8h.html',1,'']]],\n  ['collisions_92',['collisions',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8',1,'tram::Physics::API::ShapecastCallback']]],\n  ['collisionshape_93',['CollisionShape',['../structtram_1_1_physics_1_1_collision_shape.html',1,'tram::Physics']]],\n  ['collisionshape_2eh_94',['collisionshape.h',['../collisionshape_8h.html',1,'']]],\n  ['collisionshape_5ft_95',['collisionshape_t',['../structtram_1_1_physics_1_1collisionshape__t.html',1,'tram::Physics']]],\n  ['collisionshapetransform_96',['CollisionShapeTransform',['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html',1,'tram::Physics::API']]],\n  ['collisiontriangle_97',['CollisionTriangle',['../structtram_1_1_physics_1_1_collision_triangle.html',1,'tram::Physics']]],\n  ['collmodel_98',['collmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa',1,'tram::Ext::Kitchensink::TriggerRemove::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a',1,'tram::Ext::Kitchensink::TriggerTeleport::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8',1,'tram::Ext::Kitchensink::TriggerMultiple::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0',1,'tram::Ext::Kitchensink::TriggerOnce::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775',1,'tram::Ext::Kitchensink::TriggerAutosave::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88',1,'tram::Ext::Kitchensink::Train::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf',1,'tram::Ext::Kitchensink::Pickup::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee',1,'tram::Ext::Kitchensink::Breakable::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215',1,'tram::Ext::Kitchensink::DebugText::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811',1,'tram::Ext::Kitchensink::DebugShape::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c',1,'tram::Ext::Kitchensink::TriggerPush::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7',1,'tram::Ext::Kitchensink::TriggerHurt::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea',1,'tram::Ext::Kitchensink::Water::collmodel()'],['../classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34',1,'tram::Crate::collmodel()']]],\n  ['color_99',['color',['../classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4',1,'tram::RenderComponent::color()'],['../classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787',1,'tram::Light::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7',1,'tram::Render::API::D3DDrawListEntry::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2',1,'tram::Render::API::FVFHelper::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588',1,'tram::Render::API::LineVertex::color()'],['../classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d',1,'tram::Render::Material::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde',1,'tram::Render::API::GLLight::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8',1,'tram::Render::API::GLMaterial::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929',1,'tram::Render::API::SWLight::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e',1,'tram::Render::API::FFPHelper::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f',1,'tram::Render::API::SWDrawListEntry::color()'],['../structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e',1,'tram::Render::SpriteVertex::color()'],['../structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40',1,'tram::Render::LineVertex::color()'],['../structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e',1,'tram::Render::SpritePoint::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a',1,'tram::Render::API::D3DLight::color()'],['../classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef',1,'tram::LightComponent::color()']]],\n  ['color_5fblack_100',['COLOR_BLACK',['../namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4',1,'tram::Render']]],\n  ['color_5fblue_101',['COLOR_BLUE',['../namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646',1,'tram::Render']]],\n  ['color_5fcyan_102',['COLOR_CYAN',['../namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c',1,'tram::Render']]],\n  ['color_5fgray_103',['COLOR_GRAY',['../namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561',1,'tram::Render']]],\n  ['color_5fgreen_104',['COLOR_GREEN',['../namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61',1,'tram::Render']]],\n  ['color_5fpink_105',['COLOR_PINK',['../namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd',1,'tram::Render']]],\n  ['color_5fred_106',['COLOR_RED',['../namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a',1,'tram::Render']]],\n  ['color_5ft_107',['color_t',['../namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8',1,'tram::Render']]],\n  ['color_5fwhite_108',['COLOR_WHITE',['../namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a',1,'tram::Render']]],\n  ['color_5fyellow_109',['COLOR_YELLOW',['../namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc',1,'tram::Render']]],\n  ['colorlines_110',['colorlines',['../namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6',1,'tram::Render']]],\n  ['colorlines_5fentry_111',['colorlines_entry',['../namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65',1,'tram::Render']]],\n  ['colorlines_5fvertex_5farray_112',['colorlines_vertex_array',['../namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f',1,'tram::Render']]],\n  ['colormode_113',['ColorMode',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894',1,'tram::Render']]],\n  ['colormode_5fr_114',['COLORMODE_R',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519',1,'tram::Render']]],\n  ['colormode_5frg_115',['COLORMODE_RG',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda',1,'tram::Render']]],\n  ['colormode_5frgb_116',['COLORMODE_RGB',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc',1,'tram::Render']]],\n  ['colormode_5frgba_117',['COLORMODE_RGBA',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae',1,'tram::Render']]],\n  ['colors_118',['colors',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7',1,'tram::Render::API::ShaderUniformModelMatrices::colors()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464',1,'tram::Render::API::GLDrawListEntry::colors()']]],\n  ['colorvertex_119',['ColorVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html',1,'tram::Render::API']]],\n  ['comparison_120',['comparison',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['compartment_121',['compartment',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090',1,'tram::Ext::Kitchensink::ItemInstance']]],\n  ['compartments_122',['compartments',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['compileshaders_123',['CompileShaders',['../namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d',1,'tram::Render::API']]],\n  ['component_124',['COMPONENT',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e',1,'tram::Async']]],\n  ['component_125',['Component',['../classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979',1,'tram::Component']]],\n  ['component_126',['component',['../structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf',1,'tram::ListenerInfo::component()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7',1,'tram::Ext::Kitchensink::AnimationStateComponent::component()']]],\n  ['component_127',['Component',['../classtram_1_1_component.html',1,'tram']]],\n  ['component_5flimit_5fanimation_128',['COMPONENT_LIMIT_ANIMATION',['../namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f',1,'tram']]],\n  ['component_5flimit_5faudio_129',['COMPONENT_LIMIT_AUDIO',['../namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5',1,'tram']]],\n  ['component_5flimit_5fcontroller_130',['COMPONENT_LIMIT_CONTROLLER',['../namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2',1,'tram']]],\n  ['component_5flimit_5fdecal_131',['COMPONENT_LIMIT_DECAL',['../namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f',1,'tram']]],\n  ['component_5flimit_5flight_132',['COMPONENT_LIMIT_LIGHT',['../namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c',1,'tram']]],\n  ['component_5flimit_5fparticle_133',['COMPONENT_LIMIT_PARTICLE',['../namespacetram.html#a1ef1096144023efed74009fd55ff4668',1,'tram']]],\n  ['component_5flimit_5fphysics_134',['COMPONENT_LIMIT_PHYSICS',['../namespacetram.html#aef0b54c575d166021a519456e745e5a8',1,'tram']]],\n  ['component_5flimit_5fplayer_135',['COMPONENT_LIMIT_PLAYER',['../namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a',1,'tram']]],\n  ['component_5flimit_5frender_136',['COMPONENT_LIMIT_RENDER',['../namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f',1,'tram']]],\n  ['component_5flimit_5fsprite_137',['COMPONENT_LIMIT_SPRITE',['../namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d',1,'tram']]],\n  ['component_5flimit_5ftrigger_138',['COMPONENT_LIMIT_TRIGGER',['../namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387',1,'tram']]],\n  ['concat_139',['concat',['../namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a',1,'tram::implementation::concat(const std::string_view &amp;value)'],['../namespacetram_1_1implementation.html#a39fba9c0eb726295d1456c1651b12d45',1,'tram::implementation::concat(const std::string &amp;value)'],['../namespacetram_1_1implementation.html#acebb47b38e9273b2c259256c7a8fee5f',1,'tram::implementation::concat(const char *const &amp;value)'],['../namespacetram_1_1implementation.html#a4cec4f0b2a5a9e7fb164820607f105d4',1,'tram::implementation::concat(const char *value)'],['../namespacetram_1_1implementation.html#a7a2a311b556467311387960228c67ab8',1,'tram::implementation::concat(const UID &amp;value)'],['../namespacetram_1_1implementation.html#ad81660eda2af6067bdf5708b9157a524',1,'tram::implementation::concat(const T &amp;value)'],['../namespacetram_1_1implementation.html#a4bb77cc33a48fded3045407919472113',1,'tram::implementation::concat(const char(&amp;value)[N])']]],\n  ['concat_5ffmt_140',['concat_fmt',['../namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f',1,'tram::implementation']]],\n  ['concat_5fnumeric_141',['concat_numeric',['../namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56',1,'tram::implementation::concat_numeric(const int64_t &amp;value)'],['../namespacetram_1_1implementation.html#ae9f6692c3813328fafd9e99871fafb04',1,'tram::implementation::concat_numeric(const uint64_t &amp;value)'],['../namespacetram_1_1implementation.html#a829582177c315b267d8c5d25071dc20b',1,'tram::implementation::concat_numeric(const T &amp;value)'],['../namespacetram_1_1implementation.html#a8a5a3ae9f84e3585cda2b06cd8221d69',1,'tram::implementation::concat_numeric(const float &amp;value)']]],\n  ['condition_142',['condition',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f',1,'tram::Ext::Kitchensink::DialogTopic::condition()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33',1,'tram::Ext::Kitchensink::QuestTrigger::condition()']]],\n  ['cone_143',['Cone',['../structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b',1,'tram::Physics::CollisionShape']]],\n  ['config_2eh_144',['config.h',['../config_8h.html',1,'']]],\n  ['console_145',['Console',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953',1,'tram::Ext::Menu::Console::Console()'],['../classtram_1_1_ext_1_1_menu_1_1_console.html',1,'tram::Ext::Menu::Console']]],\n  ['console_5flogs_146',['console_logs',['../namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124',1,'tram::Ext::Menu']]],\n  ['constants_147',['constants',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35',1,'tram::Render::LightGraph::Node']]],\n  ['constr_5ffunc_148',['constr_func',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['constructor_149',['constructor',['../structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f',1,'tram::EntityTypeInfo']]],\n  ['containers_150',['containers',['../namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42',1,'tram::Ext::Kitchensink']]],\n  ['containsentity_151',['ContainsEntity',['../classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58',1,'tram::Render::LightGraph']]],\n  ['context_5fdirect3d_152',['CONTEXT_DIRECT3D',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e',1,'tram::Render::API']]],\n  ['context_5fnone_153',['CONTEXT_NONE',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2',1,'tram::Render::API']]],\n  ['context_5fopengl_154',['CONTEXT_OPENGL',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f',1,'tram::Render::API']]],\n  ['context_5fsoftware_155',['CONTEXT_SOFTWARE',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae',1,'tram::Render::API']]],\n  ['context_5fwebgl_156',['CONTEXT_WEBGL',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160',1,'tram::Render::API']]],\n  ['contexttype_157',['ContextType',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230',1,'tram::Render::API']]],\n  ['continue_158',['Continue',['../classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f',1,'tram::AnimationComponent']]],\n  ['controller_2ecpp_159',['controller.cpp',['../controller_8cpp.html',1,'']]],\n  ['controller_2eh_160',['controller.h',['../controller_8h.html',1,'']]],\n  ['controllercomponent_161',['controllercomponent',['../classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e',1,'tram::Player']]],\n  ['controllercomponent_162',['ControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b',1,'tram::FPSControllerComponent::ControllerComponent()'],['../classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b',1,'tram::RaycastControllerComponent::ControllerComponent()'],['../classtram_1_1_controller_component.html',1,'tram::ControllerComponent']]],\n  ['coordinate_163',['coordinate',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612',1,'tram::Render::API::ClipPoint']]],\n  ['coords_164',['coords',['../structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2',1,'tram::ParticleComponent::Particle']]],\n  ['core_165',['CORE',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0',1,'tram::System']]],\n  ['core_2ecpp_166',['core.cpp',['../core_8cpp.html',1,'']]],\n  ['core_2eh_167',['core.h',['../core_8h.html',1,'']]],\n  ['count_168',['count',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d',1,'tram::Ext::Kitchensink::QuestVariable::count()'],['../classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c',1,'tram::Queue::count()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0',1,'tram::Ext::Kitchensink::ItemInstance::count()']]],\n  ['crate_169',['Crate',['../classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1',1,'tram::Crate::Crate(const SharedEntityData &amp;, const ValueArray &amp;)'],['../classtram_1_1_crate.html#a1a395f9988ba5ae548823524ea33da06',1,'tram::Crate::Crate(const char *nname, const char *modelname, const char *collisionmodelname, vec3 pos, vec3 rot)'],['../classtram_1_1_crate.html',1,'tram::Crate']]],\n  ['crate_2ecpp_170',['crate.cpp',['../crate_8cpp.html',1,'']]],\n  ['crate_2eh_171',['crate.h',['../crate_8h.html',1,'']]],\n  ['createindexedvertexarray_172',['CreateIndexedVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3',1,'tram::Render::API']]],\n  ['createspritearray_173',['CreateSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d',1,'tram::Render::API']]],\n  ['createtexture_174',['CreateTexture',['../namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af',1,'tram::Render::API']]],\n  ['createvertexarray_175',['CreateVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232',1,'tram::Render::API']]],\n  ['critical_5ferror_176',['CRITICAL_ERROR',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5',1,'tram']]],\n  ['crouch_177',['Crouch',['../classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e',1,'tram::FPSControllerComponent::Crouch()'],['../classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d',1,'tram::RaycastControllerComponent::Crouch()'],['../classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931',1,'tram::ControllerComponent::Crouch()']]],\n  ['crouch_5fcollision_178',['crouch_collision',['../classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5',1,'tram::FPSControllerComponent']]],\n  ['crouch_5fspeed_179',['crouch_speed',['../classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d',1,'tram::FPSControllerComponent::crouch_speed()'],['../classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d',1,'tram::RaycastControllerComponent::crouch_speed()']]],\n  ['crouching_180',['crouching',['../classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb',1,'tram::FPSControllerComponent::crouching()'],['../classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf',1,'tram::RaycastControllerComponent::crouching()']]],\n  ['csize_181',['csize',['../classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1',1,'tram::Queue']]],\n  ['current_5fmonitor_182',['current_monitor',['../namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26',1,'tram::Platform']]],\n  ['current_5fvertex_5fcount_183',['current_vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706',1,'tram::Render::API::VertexBufferMetadata']]],\n  ['cursor_5fclick_184',['CURSOR_CLICK',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2',1,'tram::UI::CURSOR_CLICK()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec',1,'tram::Platform::Window::CURSOR_CLICK()']]],\n  ['cursor_5fdefault_185',['CURSOR_DEFAULT',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2',1,'tram::UI::CURSOR_DEFAULT()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131',1,'tram::Platform::Window::CURSOR_DEFAULT()']]],\n  ['cursor_5ftext_186',['CURSOR_TEXT',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd',1,'tram::UI::CURSOR_TEXT()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c',1,'tram::Platform::Window::CURSOR_TEXT()']]],\n  ['cursor_5fx_187',['cursor_x',['../structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501',1,'tram::GUI::FrameObject']]],\n  ['cursor_5fy_188',['cursor_y',['../structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e',1,'tram::GUI::FrameObject']]],\n  ['cursorover_189',['CursorOver',['../namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c',1,'tram::GUI']]],\n  ['cursorpos_190',['CURSORPOS',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd',1,'tram::Event']]],\n  ['cursortype_191',['CursorType',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f',1,'tram::UI::CursorType()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f',1,'tram::Platform::Window::CursorType()']]],\n  ['cycles_5fsince_5flast_5fhit_192',['cycles_since_last_hit',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff',1,'tram::Audio::Spatial::PathExplorationResult::cycles_since_last_hit()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44',1,'tram::Audio::Spatial::PathTracingResult::cycles_since_last_hit()']]],\n  ['cylinder_193',['Cylinder',['../structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_4.js",
    "content": "var searchData=\n[\n  ['d3d_0',['d3d',['../structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5',1,'tram::Render::material_t::d3d()'],['../structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5',1,'tram::Render::light_t::d3d()'],['../structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a',1,'tram::Render::drawlistentry_t::d3d()']]],\n  ['d3d_5findex_5fbuffer_1',['d3d_index_buffer',['../structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3',1,'tram::Render::indexarray_t']]],\n  ['d3d_5fmetadata_2',['d3d_metadata',['../structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be',1,'tram::Render::vertexarray_t']]],\n  ['d3d_5ftexture_5fhandle_3',['d3d_texture_handle',['../structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e',1,'tram::Render::texturehandle_t']]],\n  ['d3d_5fvertex_5fbuffer_4',['d3d_vertex_buffer',['../structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e',1,'tram::Render::vertexarray_t']]],\n  ['d3ddrawlistentry_5',['D3DDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html',1,'tram::Render::API']]],\n  ['d3dlight_6',['D3DLight',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html',1,'tram::Render::API']]],\n  ['data_7',['data',['../structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26',1,'tram::Signal::data()'],['../structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10',1,'tram::Event::data()'],['../structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0',1,'tram::ListenerInfo::data()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7',1,'tram::Audio::Spatial::AudioBuffer::data()'],['../structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925',1,'tram::Message::data()'],['../structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb',1,'tram::Octree::Node::data()'],['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984',1,'tram::Render::AABB::QueryResponse::data()']]],\n  ['data_5ffunction_8',['data_function',['../structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722',1,'tram::ListenerInfo']]],\n  ['data_5fint_9',['data_int',['../structtram_1_1_event.html#a6f907880059f690671dda82db28439f5',1,'tram::Event::data_int()'],['../structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494',1,'tram::Message::data_int()']]],\n  ['data_5fpointer_10',['data_pointer',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97',1,'tram::Physics::API::CallbackMotionState']]],\n  ['data_5fvalue_11',['data_value',['../structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319',1,'tram::Event::data_value()'],['../structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d',1,'tram::Message::data_value()']]],\n  ['debug_2ecpp_12',['debug.cpp',['../debug_8cpp.html',1,'']]],\n  ['debug_2eh_13',['debug.h',['../debug_8h.html',1,'']]],\n  ['debug_5fdraw_14',['DEBUG_DRAW',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326',1,'tram::WorldCell']]],\n  ['debug_5fmenu_15',['debug_menu',['../namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b',1,'tram::Ext::Menu']]],\n  ['debugdraw_16',['debugDraw',['../classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992',1,'tram::Physics::PathAction']]],\n  ['debugdrawer_2eh_17',['debugdrawer.h',['../debugdrawer_8h.html',1,'']]],\n  ['debugdrawtree_18',['DebugDrawTree',['../namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef',1,'tram::Render::AABB']]],\n  ['debugmenu_19',['DebugMenu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html',1,'tram::Ext::Menu']]],\n  ['debugmenue_20',['DebugMenue',['../namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7',1,'tram::Ext::Menu']]],\n  ['debugshape_21',['DebugShape',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d',1,'tram::Ext::Kitchensink::DebugShape::DebugShape()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html',1,'tram::Ext::Kitchensink::DebugShape']]],\n  ['debugtext_22',['DebugText',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a',1,'tram::Ext::Kitchensink::DebugText::DebugText()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html',1,'tram::Ext::Kitchensink::DebugText']]],\n  ['debugtext_5fentry_23',['debugtext_entry',['../namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c',1,'tram::Render']]],\n  ['debugtext_5fvertex_5farray_24',['debugtext_vertex_array',['../namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4',1,'tram::Render']]],\n  ['decal_2ecpp_25',['decal.cpp',['../decal_8cpp.html',1,'']]],\n  ['decal_2eh_26',['decal.h',['../decal_8h.html',1,'']]],\n  ['decalcomponent_27',['DecalComponent',['../classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d',1,'tram::DecalComponent::DecalComponent()'],['../classtram_1_1_decal_component.html',1,'tram::DecalComponent']]],\n  ['decoration_28',['Decoration',['../classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87',1,'tram::Decoration::Decoration()'],['../classtram_1_1_decoration.html',1,'tram::Decoration']]],\n  ['decoration_2ecpp_29',['decoration.cpp',['../decoration_8cpp.html',1,'']]],\n  ['decoration_2eh_30',['decoration.h',['../decoration_8h.html',1,'']]],\n  ['decoration_5fflags_31',['decoration_flags',['../classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6',1,'tram::Decoration']]],\n  ['default_32',['DEFAULT',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee',1,'tram']]],\n  ['default_5fcompartment_33',['default_compartment',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['definition_34',['definition',['../structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0',1,'tram::Render::RegisteredVertexDefinition']]],\n  ['definitions_2eh_35',['definitions.h',['../definitions_8h.html',1,'']]],\n  ['delay_36',['delay',['../structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0',1,'tram::Signal']]],\n  ['delete_37',['Delete',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0',1,'tram::Ext::Kitchensink::InventoryManager::Delete()'],['../classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff',1,'tram::PoolProxy::Delete()']]],\n  ['deleted_38',['DELETED',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d',1,'tram::Entity']]],\n  ['deletelight_39',['DeleteLight',['../namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4',1,'tram::Render::API']]],\n  ['deletematerial_40',['DeleteMaterial',['../namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716',1,'tram::Render::API']]],\n  ['deprecated_20list_41',['Deprecated List',['../deprecated.html',1,'']]],\n  ['depth_42',['depth',['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30',1,'tram::Render::API::Point2D']]],\n  ['derp_43',['derp',['../main_8cpp.html#a8bb2bbfa377225bdc2575d60f73eb24d',1,'main.cpp']]],\n  ['derp_5fplayer_44',['derp_player',['../main_8cpp.html#a705d8710b0919174ceba4c291f26824b',1,'main.cpp']]],\n  ['destr_5ffunc_45',['destr_func',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['destructor_46',['destructor',['../structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2',1,'tram::EntityTypeInfo']]],\n  ['dialog_2ecpp_47',['dialog.cpp',['../dialog_8cpp.html',1,'']]],\n  ['dialog_2eh_48',['dialog.h',['../dialog_8h.html',1,'']]],\n  ['dialog_5fimport_5fmultiple_49',['DIALOG_IMPORT_MULTIPLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1',1,'tram::Ext::Kitchensink']]],\n  ['dialog_5fimport_5fsingle_50',['DIALOG_IMPORT_SINGLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd',1,'tram::Ext::Kitchensink']]],\n  ['dialog_5ftopic_51',['DIALOG_TOPIC',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5',1,'tram::Ext::Kitchensink']]],\n  ['dialogaction_52',['DialogAction',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogcondition_53',['DialogCondition',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogcontroller_54',['DialogController',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7',1,'tram::Ext::Kitchensink::DialogController::DialogController()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['dialogtopic_55',['DialogTopic',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogtype_56',['DialogType',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54',1,'tram::Ext::Kitchensink']]],\n  ['dimensions_57',['dimensions',['../structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a',1,'tram::Render::SpritePoint']]],\n  ['dingbat_58',['dingbat',['../main_8cpp.html#a39e40a8e7cee2dd7c112dcd36fe20cb6',1,'main.cpp']]],\n  ['direct3d_2eh_59',['direct3d.h',['../direct3d_8h.html',1,'']]],\n  ['direction_60',['direction',['../classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3',1,'tram::Light::direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5',1,'tram::Render::API::D3DLight::direction()'],['../classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07',1,'tram::PathFollower::direction()'],['../classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf',1,'tram::LightComponent::direction()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7',1,'tram::Audio::Spatial::PathFromAudioSource::direction()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1',1,'tram::Ext::Kitchensink::Button::direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391',1,'tram::Render::API::GLLight::direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421',1,'tram::Render::API::SWLight::direction()']]],\n  ['direction_5fforward_61',['DIRECTION_FORWARD',['../namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395',1,'tram']]],\n  ['direction_5fside_62',['DIRECTION_SIDE',['../namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511',1,'tram']]],\n  ['direction_5fup_63',['DIRECTION_UP',['../namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680',1,'tram']]],\n  ['dirty_64',['DIRTY',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e',1,'tram::Entity']]],\n  ['disable_5fauto_5fload_65',['DISABLE_AUTO_LOAD',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152',1,'tram::Entity']]],\n  ['disablecursor_66',['DisableCursor',['../namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947',1,'tram::Platform::Window']]],\n  ['disabledeactivation_67',['DisableDeactivation',['../classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a',1,'tram::PhysicsComponent']]],\n  ['disablerigidbodydeactivation_68',['DisableRigidbodyDeactivation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7',1,'tram::Physics::API']]],\n  ['disk_69',['DISK',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7',1,'tram']]],\n  ['diskreader_70',['DiskReader',['../classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30',1,'tram::DiskReader::DiskReader()'],['../classtram_1_1_disk_reader.html',1,'tram::DiskReader']]],\n  ['diskwriter_71',['DiskWriter',['../classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25',1,'tram::DiskWriter::DiskWriter()'],['../classtram_1_1_disk_writer.html',1,'tram::DiskWriter']]],\n  ['dispatch_72',['Dispatch',['../structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3',1,'tram::Event::Dispatch()'],['../structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a',1,'tram::Message::Dispatch()']]],\n  ['display_73',['Display',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c',1,'tram::Ext::Menu::EntityPicker::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6',1,'tram::Ext::Menu::ListSelection::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2',1,'tram::Ext::Menu::MessageSend::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3',1,'tram::Ext::Menu::InterceptMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc',1,'tram::Ext::Menu::WorldCellProperties::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596',1,'tram::Ext::Menu::StatisticsMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2',1,'tram::Ext::Menu::EventEmit::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282',1,'tram::Ext::Menu::SignalMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86',1,'tram::Ext::Menu::Options::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c',1,'tram::Ext::Menu::Console::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775',1,'tram::Ext::Menu::Menu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a',1,'tram::Ext::Menu::SystemMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb',1,'tram::Ext::Menu::SettingsMenu::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15',1,'tram::Ext::Menu::LogIntercept::Display()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21',1,'tram::Ext::Kitchensink::ListDialog::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539',1,'tram::Ext::Menu::Intercept::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a',1,'tram::Ext::Menu::MessageIntercept::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924',1,'tram::Ext::Menu::EventIntercept::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d',1,'tram::Ext::Menu::DebugMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e',1,'tram::Ext::Menu::EntityProperties::Display()']]],\n  ['displaylog_74',['DisplayLog',['../namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce',1,'tram']]],\n  ['disposition_75',['disposition',['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7',1,'tram::Ext::Kitchensink::CharacterDisposition::disposition()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765',1,'tram::Ext::Kitchensink::FactionRelation::disposition()']]],\n  ['dispositions_76',['dispositions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc',1,'tram::Ext::Kitchensink::Character']]],\n  ['distance_77',['distance',['../structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8',1,'tram::Physics::Collision::distance()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858',1,'tram::Render::LightTree::Light::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab',1,'tram::Render::API::GLLight::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271',1,'tram::Render::API::D3DLight::distance()'],['../structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2',1,'tram::Octree::NearestSearch::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67',1,'tram::Render::API::SWLight::distance()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad',1,'tram::Physics::API::ObjectCollision::distance()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0',1,'tram::Ext::Kitchensink::Button::distance()'],['../classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653',1,'tram::Light::distance()'],['../classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac',1,'tram::LightComponent::distance()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549',1,'tram::Audio::Spatial::PathTracingResult::distance()']]],\n  ['distance_5fdelay_78',['distance_delay',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['draw_79',['Draw',['../classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197',1,'tram::Octree::Draw()'],['../classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29',1,'tram::Path::Draw()'],['../classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38',1,'tram::Octree::Draw()']]],\n  ['draw3dtext_80',['draw3dText',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['draw_5flist_81',['draw_list',['../namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671',1,'tram::Render::API']]],\n  ['draw_5flist_5fentries_82',['draw_list_entries',['../classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4',1,'tram::RenderComponent']]],\n  ['draw_5flist_5fentry_83',['draw_list_entry',['../classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf',1,'tram::DecalComponent::draw_list_entry()'],['../classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8',1,'tram::SpriteComponent::draw_list_entry()'],['../classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc',1,'tram::ParticleComponent::draw_list_entry()']]],\n  ['draw_5frender_5fdebug_84',['DRAW_RENDER_DEBUG',['../namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b',1,'tram::Render']]],\n  ['drawaabb_85',['DrawAABB',['../classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014',1,'tram::Render::Model']]],\n  ['drawbox_86',['DrawBox',['../namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88',1,'tram::GUI']]],\n  ['drawboxhorizontal_87',['DrawBoxHorizontal',['../namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c',1,'tram::GUI']]],\n  ['drawcontactpoint_88',['drawContactPoint',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['drawdebug_89',['DrawDebug',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7',1,'tram::Physics::API::DrawDebug()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a11e3876e4d86bc1c3b68d5d35c08ced6',1,'tram::Physics::API::DrawDebug(bool)']]],\n  ['drawglyph_90',['DrawGlyph',['../namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73',1,'tram::GUI']]],\n  ['drawline_91',['drawLine',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['drawlist_2ecpp_92',['drawlist.cpp',['../drawlist_8cpp.html',1,'']]],\n  ['drawlist_2eh_93',['drawlist.h',['../drawlist_8h.html',1,'']]],\n  ['drawlistentry_5ft_94',['drawlistentry_t',['../structtram_1_1_render_1_1drawlistentry__t.html',1,'tram::Render']]],\n  ['dynamic_5fvertex_5ffvf_95',['DYNAMIC_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2',1,'tram::Render::API']]],\n  ['dynamicmodeldata_96',['DynamicModelData',['../structtram_1_1_render_1_1_dynamic_model_data.html',1,'tram::Render']]],\n  ['dynamicmodelvertex_97',['DynamicModelVertex',['../structtram_1_1_render_1_1_dynamic_model_vertex.html',1,'tram::Render']]],\n  ['dynamicvertex_98',['DynamicVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_5.js",
    "content": "var searchData=\n[\n  ['ebolen_0',['eboLen',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917',1,'tram::Render::API::GLDrawListEntry']]],\n  ['ebooff_1',['eboOff',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a',1,'tram::Render::API::GLDrawListEntry']]],\n  ['edge_2',['Edge',['../structtram_1_1_edge.html',1,'tram']]],\n  ['edge_5finfos_3',['edge_infos',['../classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996',1,'tram::Path']]],\n  ['edges_4',['edges',['../classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d',1,'tram::Render::LightGraph::edges()'],['../classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722',1,'tram::Graph::edges()'],['../structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce',1,'tram::Node::edges()'],['../classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e',1,'tram::Audio::SoundGraph::edges()']]],\n  ['eerp_5',['eerp',['../main_8cpp.html#ad4a7109a74a328b58d1568997f025a46',1,'main.cpp']]],\n  ['effect_6',['Effect',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html',1,'tram::Ext::Kitchensink']]],\n  ['effect_5fnegate_5fchange_7',['EFFECT_NEGATE_CHANGE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b',1,'tram::Ext::Kitchensink']]],\n  ['effect_5fraise_5fbase_8',['EFFECT_RAISE_BASE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f',1,'tram::Ext::Kitchensink']]],\n  ['effect_5fraise_5fconstant_9',['EFFECT_RAISE_CONSTANT',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56',1,'tram::Ext::Kitchensink']]],\n  ['effective_5fvalue_10',['effective_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['effects_11',['effects',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae',1,'tram::Ext::Kitchensink::AttributeContainer::effects()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4',1,'tram::Ext::Kitchensink::ItemClass::effects()']]],\n  ['emission_5frate_12',['emission_rate',['../classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32',1,'tram::ParticleComponent']]],\n  ['emitparticle_13',['EmitParticle',['../classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420',1,'tram::ParticleComponent']]],\n  ['emitter_14',['emitter',['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004',1,'tram::Ext::Menu::EventIntercept']]],\n  ['empty_15',['Empty',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f',1,'tram::Ext::Menu::Menu']]],\n  ['enablecursor_16',['EnableCursor',['../namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567',1,'tram::Platform::Window']]],\n  ['enabled_17',['enabled',['../classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75',1,'tram::RaycastControllerComponent']]],\n  ['end_18',['end',['../classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107',1,'tram::Pool::end()'],['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909',1,'tram::Render::API::Scanline::end()']]],\n  ['end_19',['End',['../namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1',1,'tram::GUI']]],\n  ['end_20',['end',['../classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498',1,'tram::StackPool']]],\n  ['end_5fadv_21',['end_adv',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33',1,'tram::Render::API::Scanline']]],\n  ['end_5fclose_22',['END_CLOSE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2',1,'tram::Signal']]],\n  ['end_5fopen_23',['END_OPEN',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f',1,'tram::Signal']]],\n  ['end_5fp0_24',['end_p0',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49',1,'tram::Render::API::Scanline']]],\n  ['end_5fp1_25',['end_p1',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c',1,'tram::Render::API::Scanline']]],\n  ['end_5ftest_26',['END_TEST',['../test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8',1,'test.h']]],\n  ['endframe_27',['EndFrame',['../namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391',1,'tram::UI']]],\n  ['enter_5ftrigger_28',['ENTER_TRIGGER',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c',1,'tram::Signal']]],\n  ['entities_29',['entities',['../classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22',1,'tram::WorldCell::entities()'],['../classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049',1,'tram::Render::LightGraph::entities()']]],\n  ['entities_2ecpp_30',['entities.cpp',['../entities_8cpp.html',1,'']]],\n  ['entities_2eh_31',['entities.h',['../entities_8h.html',1,'']]],\n  ['entity_32',['Entity',['../classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d',1,'tram::Entity::Entity()'],['../classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e',1,'tram::Entity::Entity(name_t name)'],['../classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80',1,'tram::Entity::Entity(const SharedEntityData &amp;)']]],\n  ['entity_33',['entity',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be',1,'tram::Ext::Kitchensink::QuestVariable::entity()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3',1,'tram::Ext::Menu::EntityProperties::entity()'],['../structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32',1,'tram::ListenerInfo::entity()']]],\n  ['entity_34',['Entity',['../classtram_1_1_entity.html',1,'tram']]],\n  ['entity_2ecpp_35',['entity.cpp',['../entity_8cpp.html',1,'']]],\n  ['entity_2eh_36',['entity.h',['../entity_8h.html',1,'']]],\n  ['entity_5fclear_37',['entity_clear',['../namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b',1,'tram']]],\n  ['entity_5fid_38',['entity_id',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923',1,'tram::Ext::Menu::SignalMenu::entity_id()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446',1,'tram::Ext::Menu::MessageSend::entity_id()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32',1,'tram::Ext::Kitchensink::Character::entity_id()']]],\n  ['entity_5flimit_39',['ENTITY_LIMIT',['../namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d',1,'tram']]],\n  ['entity_5fmake_40',['entity_make',['../namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d',1,'tram']]],\n  ['entity_5ftype_5flimit_41',['ENTITY_TYPE_LIMIT',['../namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2',1,'tram']]],\n  ['entitychildren_42',['EntityChildren',['../structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html',1,'tram::Ext::Kitchensink']]],\n  ['entitycomponent_43',['EntityComponent',['../classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8',1,'tram::EntityComponent::EntityComponent()'],['../classtram_1_1_entity_component.html',1,'tram::EntityComponent']]],\n  ['entitycomponent_2ecpp_44',['entitycomponent.cpp',['../entitycomponent_8cpp.html',1,'']]],\n  ['entitycomponent_2eh_45',['entitycomponent.h',['../entitycomponent_8h.html',1,'']]],\n  ['entitypicker_46',['EntityPicker',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af',1,'tram::Ext::Menu::EntityPicker::EntityPicker()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html',1,'tram::Ext::Menu::EntityPicker']]],\n  ['entityproperties_47',['EntityProperties',['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html',1,'tram::Ext::Menu']]],\n  ['entitytypeinfo_48',['EntityTypeInfo',['../structtram_1_1_entity_type_info.html',1,'tram']]],\n  ['environment_5fmap_49',['environment_map',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5',1,'tram::Render::LightGraph::Node']]],\n  ['environmentmap_50',['environmentmap',['../classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393',1,'tram::RenderComponent::environmentmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308',1,'tram::Render::API::GLDrawListEntry::environmentmap()']]],\n  ['equipitem_51',['EquipItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['equipped_52',['equipped',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f',1,'tram::Ext::Kitchensink::ItemInstance::equipped()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78',1,'tram::Ext::Kitchensink::Inventory::equipped()']]],\n  ['equipped_5fslot_53',['equipped_slot',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['error_54',['ERROR',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5',1,'tram']]],\n  ['error_2ecpp_55',['error.cpp',['../error_8cpp.html',1,'']]],\n  ['error_2eh_56',['error.h',['../error_8h.html',1,'']]],\n  ['evaluate_57',['Evaluate',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d',1,'tram::Ext::Kitchensink::QuestVariable::Evaluate()'],['../classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a',1,'tram::Script::Interface::Evaluate()'],['../namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142',1,'tram::Script::Evaluate()']]],\n  ['event_58',['Event',['../structtram_1_1_event.html',1,'tram']]],\n  ['event_2ecpp_59',['event.cpp',['../event_8cpp.html',1,'']]],\n  ['event_2eh_60',['event.h',['../event_8h.html',1,'']]],\n  ['event_5ft_61',['event_t',['../namespacetram.html#a0183b475d47925143ca46259ec594d90',1,'tram']]],\n  ['event_5ftype_62',['event_type',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1',1,'tram::Ext::Menu::EventEmit']]],\n  ['eventemit_63',['EventEmit',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html',1,'tram::Ext::Menu']]],\n  ['eventhandler_64',['EventHandler',['../classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16',1,'tram::Scriptable::EventHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad',1,'tram::Ext::Kitchensink::AnimationStateComponent::EventHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc',1,'tram::Ext::Kitchensink::Button::EventHandler()'],['../classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a',1,'tram::Entity::EventHandler()'],['../classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b',1,'tram::AnimationComponent::EventHandler()'],['../classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8',1,'tram::AudioComponent::EventHandler()'],['../classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3',1,'tram::FPSControllerComponent::EventHandler()'],['../classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958',1,'tram::RaycastControllerComponent::EventHandler()'],['../classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d',1,'tram::DecalComponent::EventHandler()'],['../classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40',1,'tram::LightComponent::EventHandler()'],['../classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75',1,'tram::ParticleComponent::EventHandler()'],['../classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8',1,'tram::PhysicsComponent::EventHandler()'],['../classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b',1,'tram::EntityComponent::EventHandler()'],['../classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8',1,'tram::PlayerComponent::EventHandler()'],['../classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e',1,'tram::RenderComponent::EventHandler()'],['../classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f',1,'tram::SpriteComponent::EventHandler()'],['../classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2',1,'tram::TemplateComponent::EventHandler()'],['../classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5',1,'tram::TriggerComponent::EventHandler()']]],\n  ['eventintercept_65',['EventIntercept',['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html',1,'tram::Ext::Menu']]],\n  ['eventlistener_66',['EventListener',['../classtram_1_1_event_listener.html',1,'tram']]],\n  ['exists_67',['Exists',['../classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e',1,'tram::Hashmap::Exists(UID key)'],['../classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162',1,'tram::Hashmap::Exists(uint32_t key)']]],\n  ['exit_5ftrigger_68',['EXIT_TRIGGER',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4',1,'tram::Signal']]],\n  ['exponent_69',['exponent',['../classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4',1,'tram::LightComponent::exponent()'],['../classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3',1,'tram::Light::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7',1,'tram::Render::API::D3DLight::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f',1,'tram::Render::API::GLLight::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092',1,'tram::Render::API::SWLight::exponent()']]],\n  ['ext_5fkitchensink_5fanimationtable_5flimit_70',['EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT',['../namespacetram.html#af1919b7d31f90785f9b208acbdeb8576',1,'tram']]],\n  ['ext_5fkitchensink_5fsoundtable_5flimit_71',['EXT_KITCHENSINK_SOUNDTABLE_LIMIT',['../namespacetram.html#a16fcee576d8ededdde2fb49658013315',1,'tram']]],\n  ['extent_5fx_72',['extent_x',['../structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5',1,'tram::Physics::CollisionShape']]],\n  ['extent_5fy_73',['extent_y',['../structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26',1,'tram::Physics::CollisionShape']]],\n  ['extent_5fz_74',['extent_z',['../structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_6.js",
    "content": "var searchData=\n[\n  ['faction_0',['Faction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737',1,'tram::Ext::Kitchensink::Character']]],\n  ['faction_1',['faction',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29',1,'tram::Ext::Kitchensink::FactionRelation::faction()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf',1,'tram::Ext::Kitchensink::BaseFactionRank::faction()']]],\n  ['faction_2',['Faction',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html',1,'tram::Ext::Kitchensink']]],\n  ['faction_5fcount_3',['FACTION_COUNT',['../character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758',1,'character.cpp']]],\n  ['factionrank_4',['FactionRank',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html',1,'tram::Ext::Kitchensink']]],\n  ['factionrelation_5',['FactionRelation',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html',1,'tram::Ext::Kitchensink']]],\n  ['factions_6',['factions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37',1,'tram::Ext::Kitchensink::Character::factions()'],['../namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef',1,'tram::Ext::Kitchensink::factions()']]],\n  ['fade_5fammount_7',['fade_ammount',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5ffar_8',['fade_far',['../classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0',1,'tram::Render::Model::fade_far()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2',1,'tram::Render::API::GLDrawListEntry::fade_far()']]],\n  ['fade_5fin_9',['fade_in',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5fin_5ftime_10',['fade_in_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault']]],\n  ['fade_5fnear_11',['fade_near',['../classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d',1,'tram::Render::Model::fade_near()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec',1,'tram::Render::API::GLDrawListEntry::fade_near()']]],\n  ['fade_5fout_12',['fade_out',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5fout_5ftime_13',['fade_out_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault']]],\n  ['fade_5fspeed_14',['fade_speed',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5ftime_15',['fade_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::fade_time()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::fade_time()']]],\n  ['fadein_16',['FadeIn',['../classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178',1,'tram::AnimationComponent']]],\n  ['fadeout_17',['FadeOut',['../classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50',1,'tram::AnimationComponent']]],\n  ['fail_18',['fail',['../struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f',1,'_test_case']]],\n  ['fail_5fasserts_19',['fail_asserts',['../struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1',1,'_test_case']]],\n  ['far_5fplane_20',['far_plane',['../namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82',1,'tram::Render']]],\n  ['farthest_5fdistance_21',['farthest_distance',['../structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635',1,'tram::Octree::NearestSearch']]],\n  ['farthest_5findex_22',['farthest_index',['../structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58',1,'tram::Octree::NearestSearch']]],\n  ['ffp_5fbone_5findex_23',['FFP_BONE_INDEX',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fbone_5fweight_24',['FFP_BONE_WEIGHT',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fcolor_25',['FFP_COLOR',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fignore_26',['FFP_IGNORE',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5flightmap_27',['FFP_LIGHTMAP',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fnormal_28',['FFP_NORMAL',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fposition_29',['FFP_POSITION',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5ftexture_30',['FFP_TEXTURE',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5ftype_31',['ffp_type',['../structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422',1,'tram::Render::VertexAttribute']]],\n  ['ffphelper_32',['FFPHelper',['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html',1,'tram::Render::API']]],\n  ['field_5fanimation_33',['FIELD_ANIMATION',['../namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3',1,'tram']]],\n  ['field_5fcollision_5fmask_34',['FIELD_COLLISION_MASK',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82',1,'tram']]],\n  ['field_5fcollmodel_35',['FIELD_COLLMODEL',['../namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f',1,'tram']]],\n  ['field_5fcolor_36',['FIELD_COLOR',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8',1,'tram']]],\n  ['field_5fdirection_37',['FIELD_DIRECTION',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708',1,'tram']]],\n  ['field_5fdistance_38',['FIELD_DISTANCE',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f',1,'tram']]],\n  ['field_5fexponent_39',['FIELD_EXPONENT',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a',1,'tram']]],\n  ['field_5fflags_40',['FIELD_FLAGS',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615',1,'tram']]],\n  ['field_5fflags_41',['field_flags',['../structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3',1,'tram::Entity::FieldInfo']]],\n  ['field_5fid_42',['field_id',['../structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558',1,'tram::Entity::FieldInfo']]],\n  ['field_5flightmap_43',['FIELD_LIGHTMAP',['../namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b',1,'tram']]],\n  ['field_5fmodel_44',['FIELD_MODEL',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be',1,'tram']]],\n  ['field_5fserialize_45',['FIELD_SERIALIZE',['../classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b',1,'tram::Entity']]],\n  ['field_5fsound_46',['FIELD_SOUND',['../namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6',1,'tram']]],\n  ['field_5ftype_47',['field_type',['../structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0',1,'tram::Entity::FieldInfo']]],\n  ['field_5fvolume_48',['FIELD_VOLUME',['../namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2',1,'tram']]],\n  ['fieldcount_49',['fieldcount',['../structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81',1,'tram::EntityTypeInfo']]],\n  ['fieldinfo_50',['FieldInfo',['../structtram_1_1_entity_1_1_field_info.html',1,'tram::Entity']]],\n  ['fields_51',['fields',['../structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8',1,'tram::EntityTypeInfo']]],\n  ['file_52',['File',['../classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6',1,'tram::File::File()'],['../classtram_1_1_file.html',1,'tram::File']]],\n  ['file_2ecpp_53',['file.cpp',['../platform_2file_8cpp.html',1,'(Global Namespace)'],['../framework_2file_8cpp.html',1,'(Global Namespace)']]],\n  ['file_2eh_54',['file.h',['../platform_2file_8h.html',1,'(Global Namespace)'],['../framework_2file_8h.html',1,'(Global Namespace)']]],\n  ['filemedium_55',['FileMedium',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531',1,'tram']]],\n  ['filereader_56',['FileReader',['../classtram_1_1_file_reader.html',1,'tram::FileReader'],['../classtram_1_1_platform_1_1_file_reader.html',1,'FileReader']]],\n  ['filereaderparser_57',['FileReaderParser',['../classtram_1_1_file_reader_parser.html',1,'tram']]],\n  ['filesource_58',['FileSource',['../structtram_1_1_file_source.html',1,'tram']]],\n  ['filestatus_59',['FileStatus',['../namespacetram.html#a972c59287ba467dbfe003f137609550d',1,'tram']]],\n  ['filewriter_60',['FileWriter',['../classtram_1_1_file_writer.html',1,'tram::FileWriter'],['../classtram_1_1_platform_1_1_file_writer.html',1,'FileWriter']]],\n  ['filewriterparser_61',['FileWriterParser',['../classtram_1_1_file_writer_parser.html',1,'tram']]],\n  ['fillframe_62',['FillFrame',['../namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6',1,'tram::GUI']]],\n  ['filter_63',['filter',['../classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42',1,'tram::Render::Material']]],\n  ['filter_5fcallback_64',['filter_callback',['../namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7',1,'tram']]],\n  ['filter_5flinear_65',['FILTER_LINEAR',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7',1,'tram::Render']]],\n  ['filter_5fnearest_66',['FILTER_NEAREST',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c',1,'tram::Render']]],\n  ['filterparameters_67',['FilterParameters',['../structtram_1_1_audio_1_1_filter_parameters.html',1,'tram::Audio']]],\n  ['find_68',['Find',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a70f852d7053390285611b9a81062e1f2',1,'tram::Ext::Kitchensink::Character::Find()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914',1,'tram::Ext::Kitchensink::DialogTopic::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b',1,'tram::Ext::Kitchensink::ItemClass::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b',1,'tram::Ext::Kitchensink::Inventory::Find()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773',1,'tram::Ext::Kitchensink::Quest::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc',1,'tram::Ext::Kitchensink::SoundTable::Find()'],['../classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2',1,'tram::Entity::Find(id_t entity_id)'],['../classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec',1,'tram::Entity::Find(name_t entity_name)'],['../classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f',1,'tram::Navmesh::Find()'],['../classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a',1,'tram::Path::Find()'],['../classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce',1,'tram::Transition::Find()'],['../classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01',1,'tram::WorldCell::Find(vec3 point)'],['../classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3',1,'tram::WorldCell::Find(name_t name)'],['../classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da',1,'tram::Physics::CollisionModel::Find()'],['../classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799',1,'tram::Render::Animation::Find()'],['../classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f',1,'tram::Render::LightGraph::Find()'],['../classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc',1,'tram::Render::Material::Find()'],['../classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43',1,'tram::Render::Model::Find()'],['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987',1,'tram::Render::API::VertexShader::Find()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3',1,'tram::Render::API::FragmentShader::Find()'],['../classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e',1,'tram::Render::Sprite::Find()'],['../classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1',1,'tram::Hashmap::Find(UID key)'],['../classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9',1,'tram::Hashmap::Find(uint32_t key)'],['../classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6',1,'tram::Octree::Find()'],['../classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3',1,'tram::Audio::SoundGraph::Find()'],['../classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a',1,'tram::Audio::Sound::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e',1,'tram::Ext::Kitchensink::AIAgent::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1',1,'tram::Ext::Kitchensink::AnimationTable::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5',1,'tram::Ext::Kitchensink::AttributeInfo::Find()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933',1,'tram::Ext::Kitchensink::AttributeContainer::Find(Entity *)'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aea111bc346b485851485b4354b766b0e',1,'tram::Ext::Kitchensink::AttributeContainer::Find(id_t)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c',1,'tram::Ext::Kitchensink::Faction::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d',1,'tram::Ext::Kitchensink::CharacterClass::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13',1,'tram::Ext::Kitchensink::Character::Find()'],['../namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de',1,'tram::System::Find()']]],\n  ['findaabbintersection_69',['FindAABBIntersection',['../classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab',1,'tram::AABBTree::FindAABBIntersection(Node *node, vec3 min, vec3 max, auto callback)'],['../classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b',1,'tram::AABBTree::FindAABBIntersection(vec3 min, vec3 max, auto callback)']]],\n  ['findall_70',['FindAll',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165',1,'tram::Ext::Kitchensink::Quest']]],\n  ['findallfromaabb_71',['FindAllFromAABB',['../classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a',1,'tram::Render::Model']]],\n  ['findallfromray_72',['FindAllFromRay',['../classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f',1,'tram::Render::Model']]],\n  ['findallintersectionsfromaabb_73',['FindAllIntersectionsFromAABB',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d',1,'tram::Render::AABB']]],\n  ['findcompartment_74',['FindCompartment',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['findintersection_75',['FindIntersection',['../classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba',1,'tram::AABBTree::FindIntersection(vec3 ray_pos, vec3 ray_dir, float distance_limit, auto filter) const'],['../classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d',1,'tram::AABBTree::FindIntersection(vec3 ray_pos, vec3 ray_dir, Node *node, std::vector&lt; uint32_t &gt; &amp;result) const']]],\n  ['findintersectionrecursive_76',['FindIntersectionRecursive',['../classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1',1,'tram::AABBTree']]],\n  ['findkeyframepointers_77',['FindKeyframePointers',['../classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9',1,'tram::AnimationComponent']]],\n  ['findlights_78',['FindLights',['../namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4',1,'tram::Render::LightTree']]],\n  ['findmaterialtype_79',['FindMaterialType',['../namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7',1,'tram::Render']]],\n  ['findnearest_80',['FindNearest',['../classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7',1,'tram::Octree::FindNearest(NearestSearch *search, Node *parent_node, int octant)'],['../classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3',1,'tram::Octree::FindNearest(NearestSearch *search, Node *parent_node)'],['../classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73',1,'tram::Octree::FindNearest(T result[], float x, float y, float z)']]],\n  ['findnearestfromray_81',['FindNearestFromRay',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394',1,'tram::Render::AABB']]],\n  ['findpaths_82',['FindPaths',['../namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b',1,'tram::Audio::Spatial']]],\n  ['findpathsmetropolis_83',['FindPathsMetropolis',['../namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434',1,'tram::Audio::Spatial']]],\n  ['findshader_84',['FindShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5',1,'tram::Render::API::LinkedShader::FindShader()'],['../namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee',1,'tram::Render::API::FindShader()']]],\n  ['findsibling_85',['FindSibling',['../classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1',1,'tram::AABBTree']]],\n  ['findtransition_86',['FindTransition',['../classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6',1,'tram::WorldCell']]],\n  ['findvertexformat_87',['FindVertexFormat',['../namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c',1,'tram::Render']]],\n  ['finishresources_88',['FinishResources',['../namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65',1,'tram::Async']]],\n  ['fire_89',['Fire',['../classtram_1_1_signal_table.html#a52fe697c321904e1b59f0ed655c3e3d9',1,'tram::SignalTable::Fire(signal_t signal, id_t sender, Value value)'],['../classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41',1,'tram::SignalTable::Fire(signal_t signal, id_t sender)']]],\n  ['fireadded_90',['FireAdded',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireequip_91',['FireEquip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireidle_92',['FireIdle',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireprimaryaction_93',['FirePrimaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireremoved_94',['FireRemoved',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['firesecondaryaction_95',['FireSecondaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['firesignal_96',['FireSignal',['../classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d',1,'tram::Entity::FireSignal(signal_t type)'],['../classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88',1,'tram::Entity::FireSignal(signal_t type, Value value)']]],\n  ['firetrigger_97',['FireTrigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184',1,'tram::Ext::Kitchensink::Quest']]],\n  ['fireunequip_98',['FireUnequip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['first_99',['first',['../classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c',1,'tram::StackPool::first()'],['../classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6',1,'tram::Pool::first()'],['../classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3',1,'tram::Hashmap::first()'],['../classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19',1,'tram::Queue::first()'],['../classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4',1,'tram::Stack::first()']]],\n  ['firstend_100',['firstend',['../classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf',1,'tram::Stack']]],\n  ['firstperson_2ecpp_101',['firstperson.cpp',['../firstperson_8cpp.html',1,'']]],\n  ['firstperson_2eh_102',['firstperson.h',['../firstperson_8h.html',1,'']]],\n  ['firstpersoncamera_103',['FirstPersonCamera',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e',1,'tram::Ext::Camera::FirstPersonCamera::FirstPersonCamera()'],['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['flag_5fdeleted_104',['FLAG_DELETED',['../classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83',1,'tram::Hashmap']]],\n  ['flag_5fdisable_5flighting_105',['FLAG_DISABLE_LIGHTING',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223',1,'tram::Render']]],\n  ['flag_5fdraw_5findexed_106',['FLAG_DRAW_INDEXED',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab',1,'tram::Render']]],\n  ['flag_5fdraw_5flines_107',['FLAG_DRAW_LINES',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a',1,'tram::Render']]],\n  ['flag_5flocked_108',['FLAG_LOCKED',['../namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c',1,'tram']]],\n  ['flag_5fno_5fdebug_109',['FLAG_NO_DEBUG',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9',1,'tram::Render']]],\n  ['flag_5fno_5fdepth_5ftest_110',['FLAG_NO_DEPTH_TEST',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282',1,'tram::Render']]],\n  ['flag_5fno_5fdirectional_111',['FLAG_NO_DIRECTIONAL',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf',1,'tram::Render']]],\n  ['flag_5fno_5frender_112',['FLAG_NO_RENDER',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4',1,'tram::Render']]],\n  ['flag_5frecord_113',['FLAG_RECORD',['../classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74',1,'tram::Hashmap']]],\n  ['flag_5frender_114',['FLAG_RENDER',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4',1,'tram::Render']]],\n  ['flag_5freverse_5fsort_115',['FLAG_REVERSE_SORT',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9',1,'tram::Render']]],\n  ['flag_5ftransparent_116',['FLAG_TRANSPARENT',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a',1,'tram::Render']]],\n  ['flag_5fuse_5faabb_117',['FLAG_USE_AABB',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364',1,'tram::Render']]],\n  ['flags_118',['flags',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66',1,'tram::Render::API::SWDrawListEntry::flags()'],['../structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526',1,'tram::Hashmap::Record::flags()']]],\n  ['flags_119',['Flags',['../namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40',1,'tram::Settings']]],\n  ['flags_120',['flags',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77',1,'tram::Render::API::GLDrawListEntry::flags()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c',1,'tram::Render::API::D3DDrawListEntry::flags()'],['../classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2',1,'tram::WorldCell::flags()'],['../structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da',1,'tram::Settings::SettingInfo::flags()'],['../classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478',1,'tram::Entity::flags()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab',1,'tram::Ext::Kitchensink::Button::flags()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63',1,'tram::Ext::Kitchensink::Effect::flags()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d',1,'tram::Audio::Spatial::AudioRender::flags()'],['../structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f',1,'tram::SharedEntityData::flags()']]],\n  ['float32_121',['float32',['../structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9',1,'tram::Settings::SettingInfo']]],\n  ['float32_122',['FLOAT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495',1,'tram::Render::VertexAttribute']]],\n  ['float_5fptr_123',['float_ptr',['../classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb',1,'tram::ValuePtr']]],\n  ['float_5fvalue_124',['float_value',['../classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067',1,'tram::Value']]],\n  ['flush_5fconsole_125',['flush_console',['../namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb',1,'tram::implementation']]],\n  ['flush_5fdisplay_126',['flush_display',['../namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48',1,'tram::implementation::flush_display(int time, int system)'],['../namespacetram_1_1implementation.html#afa314b84e606df8e9955afd0b5d3f84e',1,'tram::implementation::flush_display(int time, System::system_t system)']]],\n  ['fly_127',['Fly',['../classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe',1,'tram::ControllerComponent::Fly()'],['../classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b',1,'tram::RaycastControllerComponent::Fly()'],['../classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb',1,'tram::FPSControllerComponent::Fly()']]],\n  ['fly_5fspeed_128',['fly_speed',['../classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873',1,'tram::RaycastControllerComponent::fly_speed()'],['../classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36',1,'tram::FPSControllerComponent::fly_speed()']]],\n  ['flying_129',['flying',['../classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a',1,'tram::RaycastControllerComponent::flying()'],['../classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341',1,'tram::FPSControllerComponent::flying()']]],\n  ['follower_130',['follower',['../main_8cpp.html#a6ad3920985a278030871ba19a36e9029',1,'main.cpp']]],\n  ['following_131',['following',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79',1,'tram::Ext::Camera::Camera']]],\n  ['following_2ecpp_132',['following.cpp',['../following_8cpp.html',1,'']]],\n  ['following_2eh_133',['following.h',['../following_8h.html',1,'']]],\n  ['following_5finterpolation_134',['following_interpolation',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['following_5flistener_135',['following_listener',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b',1,'tram::Ext::Camera::Camera']]],\n  ['following_5flookat_136',['following_lookat',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5',1,'tram::Ext::Camera::Camera']]],\n  ['following_5foffset_137',['following_offset',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['font_5fdebug_138',['font_debug',['../namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d',1,'tram::Render']]],\n  ['font_5fheader_139',['FONT_HEADER',['../namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361',1,'tram::Ext::Menu']]],\n  ['font_5fpixelart_140',['FONT_PIXELART',['../namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468',1,'tram::Ext::Menu']]],\n  ['font_5ft_141',['font_t',['../namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1',1,'tram::GUI']]],\n  ['font_5ftext_142',['FONT_TEXT',['../namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a',1,'tram::Ext::Menu']]],\n  ['font_5ftext_5fbold_143',['FONT_TEXT_BOLD',['../namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3',1,'tram::Ext::Menu']]],\n  ['font_5fwidgets_144',['FONT_WIDGETS',['../namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466',1,'tram::Ext::Menu']]],\n  ['force_145',['force',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7',1,'tram::Audio::Spatial::PathExplorationResult::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657',1,'tram::Audio::Spatial::PathTracingResult::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b',1,'tram::Audio::Spatial::PathRenderingInfo::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b',1,'tram::Audio::Spatial::PathFromAudioSource::force()']]],\n  ['format_146',['format',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2',1,'tram::Render::API::SWVertexArray']]],\n  ['found_147',['found',['../structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b',1,'tram::Octree::NearestSearch']]],\n  ['fpscamera_2ecpp_148',['fpscamera.cpp',['../fpscamera_8cpp.html',1,'']]],\n  ['fpscamera_2eh_149',['fpscamera.h',['../fpscamera_8h.html',1,'']]],\n  ['fpscontrollercomponent_150',['FPSControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91',1,'tram::FPSControllerComponent::FPSControllerComponent()'],['../classtram_1_1_f_p_s_controller_component.html',1,'tram::FPSControllerComponent']]],\n  ['fragmentshader_151',['FragmentShader',['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html',1,'tram::Render::API']]],\n  ['frame_152',['frame',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b',1,'tram::AnimationComponent::AnimationPlaybackInfo::frame()'],['../classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13',1,'tram::DecalComponent::frame()']]],\n  ['frame_153',['FRAME',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa',1,'tram::Event']]],\n  ['frame_154',['frame',['../structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617',1,'tram::Render::Keyframe']]],\n  ['frame_5fbottom_155',['FRAME_BOTTOM',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c',1,'tram::GUI']]],\n  ['frame_5fbottom_5finv_156',['FRAME_BOTTOM_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd',1,'tram::GUI']]],\n  ['frame_5fcenter_5fhorizontal_157',['FRAME_CENTER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6',1,'tram::GUI']]],\n  ['frame_5fcenter_5fvertical_158',['FRAME_CENTER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484',1,'tram::GUI']]],\n  ['frame_5finset_159',['FRAME_INSET',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71',1,'tram::GUI']]],\n  ['frame_5fleft_160',['FRAME_LEFT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7',1,'tram::GUI']]],\n  ['frame_5fleft_5finv_161',['FRAME_LEFT_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057',1,'tram::GUI']]],\n  ['frame_5fright_162',['FRAME_RIGHT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25',1,'tram::GUI']]],\n  ['frame_5fright_5finv_163',['FRAME_RIGHT_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7',1,'tram::GUI']]],\n  ['frame_5ftop_164',['FRAME_TOP',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6',1,'tram::GUI']]],\n  ['frame_5ftop_5finv_165',['FRAME_TOP_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73',1,'tram::GUI']]],\n  ['frameobject_166',['FrameObject',['../structtram_1_1_g_u_i_1_1_frame_object.html',1,'tram::GUI']]],\n  ['frames_167',['frames',['../classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c',1,'tram::Render::Sprite']]],\n  ['friction_168',['friction',['../classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3',1,'tram::FPSControllerComponent']]],\n  ['from_169',['from',['../structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e',1,'tram::Edge']]],\n  ['from_5fstate_170',['from_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::from_state()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::from_state()']]],\n  ['front_171',['front',['../classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0',1,'tram::Queue']]],\n  ['fullname_172',['fullname',['../struct__test__case.html#a028f8c7752296eebd358db5357c46064',1,'_test_case']]],\n  ['function_173',['function',['../structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2',1,'tram::ListenerInfo::function()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15',1,'tram::Ext::Scripting::Lua::function()']]],\n  ['fvf_174',['fvf',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e',1,'tram::Render::API::FVFHelper::fvf()'],['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee',1,'tram::Render::API::VertexBufferMetadata::fvf()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae',1,'tram::Render::API::D3DDrawListEntry::fvf()']]],\n  ['fvfhelper_175',['FVFHelper',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_7.js",
    "content": "var searchData=\n[\n  ['gather_0',['Gather',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['gatherbaseattributes_1',['GatherBaseAttributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['gatherfactions_2',['GatherFactions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['generateid_3',['GenerateID',['../namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0',1,'tram']]],\n  ['generateplanes_4',['GeneratePlanes',['../classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb',1,'tram::Transition']]],\n  ['generic_5',['generic',['../structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8',1,'tram::Render::vertexarray_t::generic()'],['../structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f',1,'tram::Render::indexarray_t::generic()'],['../structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e',1,'tram::Audio::audiosource_t::generic()'],['../structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756',1,'tram::Audio::audiobuffer_t::generic()'],['../structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7',1,'tram::Render::spritearray_t::generic()'],['../structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626',1,'tram::Render::drawlistentry_t::generic()'],['../structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac',1,'tram::Render::texturehandle_t::generic()'],['../structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f',1,'tram::Render::light_t::generic()'],['../structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c',1,'tram::Render::material_t::generic()']]],\n  ['get_6',['Get',['../namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd',1,'tram::Settings::Get()'],['../namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834',1,'tram::Language::Get()']]],\n  ['get_7',['get',['../classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541',1,'tram::Component::get()'],['../classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0',1,'tram::ResourceProxy::get()']]],\n  ['get_5ftransform_5fcallback_8',['get_transform_callback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba',1,'tram::Physics::API::CallbackMotionState']]],\n  ['get_5ftrf_5fcallback_9',['get_trf_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd',1,'tram::Physics::API']]],\n  ['getaabbmax_10',['GetAABBMax',['../classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b',1,'tram::Render::Model::GetAABBMax()'],['../classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a',1,'tram::AABBTree::GetAABBMax()']]],\n  ['getaabbmin_11',['GetAABBMin',['../classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0',1,'tram::Render::Model::GetAABBMin()'],['../classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce',1,'tram::AABBTree::GetAABBMin()']]],\n  ['getallkeyboardkeybindings_12',['GetAllKeyboardKeyBindings',['../namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91',1,'tram::UI']]],\n  ['getanimationcomponent_13',['GetAnimationComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['getanimationstatecomponent_14',['GetAnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['getanswer_15',['GetAnswer',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['getanyshader_16',['GetAnyShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c',1,'tram::Render::API::LinkedShader::GetAnyShader()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04',1,'tram::Render::API::GetAnyShader()']]],\n  ['getarmature_17',['GetArmature',['../classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e',1,'tram::Render::Model']]],\n  ['getattribute_18',['GetAttribute',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096',1,'tram::Ext::Kitchensink::CharacterClass::GetAttribute()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7',1,'tram::Ext::Kitchensink::AttributeContainer::GetAttribute(name_t attribute)']]],\n  ['getattributebase_19',['GetAttributeBase',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['getaxissensitivity_20',['GetAxisSensitivity',['../namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c',1,'tram::UI']]],\n  ['getbasedisposition_21',['GetBaseDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5',1,'tram::Ext::Kitchensink::Character']]],\n  ['getbob_22',['GetBob',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['getcell_23',['GetCell',['../classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375',1,'tram::Entity::GetCell()'],['../classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560',1,'tram::Transition::GetCell()']]],\n  ['getcharacterloyalty_24',['GetCharacterLoyalty',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getcharacterrank_25',['GetCharacterRank',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getcollisiongroup_26',['GetCollisionGroup',['../classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2',1,'tram::PhysicsComponent::GetCollisionGroup()'],['../classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461',1,'tram::TriggerComponent::GetCollisionGroup()']]],\n  ['getcollisionmask_27',['GetCollisionMask',['../classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a',1,'tram::PhysicsComponent::GetCollisionMask()'],['../classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0',1,'tram::TriggerComponent::GetCollisionMask()']]],\n  ['getcolor_28',['GetColor',['../classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349',1,'tram::LightComponent::GetColor()'],['../classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d',1,'tram::Render::Material::GetColor()']]],\n  ['getcontents_29',['GetContents',['../classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c',1,'tram::DiskReader::GetContents()'],['../classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded',1,'tram::FileReader::GetContents()']]],\n  ['getcontext_30',['GetContext',['../namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504',1,'tram::Render::API']]],\n  ['getcontrollercomponent_31',['GetControllerComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['getcurrentmonitor_32',['GetCurrentMonitor',['../namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035',1,'tram::Platform::Window']]],\n  ['getdebugmode_33',['getDebugMode',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['getdeltatick_34',['GetDeltaTick',['../namespacetram.html#ac5510fd86603682d0cac4954bff11620',1,'tram']]],\n  ['getdeltatime_35',['GetDeltaTime',['../namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06',1,'tram']]],\n  ['getdirectionfacing_36',['GetDirectionFacing',['../classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0',1,'tram::PlayerComponent']]],\n  ['getdisposition_37',['GetDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113',1,'tram::Ext::Kitchensink::Faction::GetDisposition()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7',1,'tram::Ext::Kitchensink::Character::GetDisposition()']]],\n  ['getdistance_38',['GetDistance',['../classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f',1,'tram::LightComponent']]],\n  ['getentities_39',['GetEntities',['../classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f',1,'tram::WorldCell']]],\n  ['getentitycount_40',['GetEntityCount',['../classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe',1,'tram::WorldCell']]],\n  ['getenvironmentprobes_41',['GetEnvironmentProbes',['../classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf',1,'tram::Render::LightGraph']]],\n  ['getequippeditem_42',['GetEquippedItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['getfardistance_43',['GetFarDistance',['../classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af',1,'tram::Render::Model']]],\n  ['getfirst_44',['GetFirst',['../classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc',1,'tram::Pool']]],\n  ['getflags_45',['GetFlags',['../namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c',1,'tram::Render::API']]],\n  ['getfloat_46',['GetFloat',['../classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1',1,'tram::Value']]],\n  ['getfollowing_47',['GetFollowing',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265',1,'tram::Ext::Camera::Camera']]],\n  ['getformat_48',['GetFormat',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f',1,'tram::Render::API::LinkedShader']]],\n  ['getfragmentshader_49',['GetFragmentShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c',1,'tram::Render::API::LinkedShader']]],\n  ['getframe_50',['GetFrame',['../namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4',1,'tram']]],\n  ['getframes_51',['GetFrames',['../classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596',1,'tram::Render::Sprite']]],\n  ['getframetime_52',['GetFrameTime',['../namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e',1,'tram']]],\n  ['getglobal_53',['GetGlobal',['../classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697',1,'tram::Script::Interface::GetGlobal()'],['../namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a',1,'tram::Script::GetGlobal()']]],\n  ['getheader_54',['GetHeader',['../classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442',1,'tram::Render::Animation']]],\n  ['getheadercount_55',['GetHeaderCount',['../classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30',1,'tram::Render::Animation']]],\n  ['getheight_56',['GetHeight',['../classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0',1,'tram::Render::Material']]],\n  ['getid_57',['GetID',['../classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f',1,'tram::Entity']]],\n  ['getindexarray_58',['GetIndexArray',['../classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9',1,'tram::Render::Model']]],\n  ['getindexranges_59',['GetIndexRanges',['../classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d',1,'tram::Render::Model']]],\n  ['getinputstate_60',['GetInputState',['../namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d',1,'tram::UI']]],\n  ['getint_61',['GetInt',['../classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd',1,'tram::Value']]],\n  ['getitemcount_62',['GetItemCount',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc',1,'tram::Ext::Kitchensink::InventoryManager::GetItemCount()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9',1,'tram::Ext::Kitchensink::ListInventoryManager::GetItemCount()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944',1,'tram::Ext::Kitchensink::Inventory::GetItemCount()']]],\n  ['getitems_63',['GetItems',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272',1,'tram::Ext::Kitchensink::InventoryManager::GetItems()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980',1,'tram::Ext::Kitchensink::ListInventoryManager::GetItems()']]],\n  ['getkeyboardaction_64',['GetKeyboardAction',['../namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b',1,'tram::UI']]],\n  ['getkeyboardactionname_65',['GetKeyboardActionName',['../namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832',1,'tram::UI']]],\n  ['getkeyboardkeyname_66',['GetKeyboardKeyName',['../namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce',1,'tram::UI']]],\n  ['getkeyframecount_67',['GetKeyframeCount',['../classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8',1,'tram::Render::Animation']]],\n  ['getkeyframes_68',['GetKeyframes',['../classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c',1,'tram::Render::Animation']]],\n  ['getlast_69',['GetLast',['../structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15',1,'tram::Event::GetLast()'],['../structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90',1,'tram::Message::GetLast()'],['../classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50',1,'tram::Pool::GetLast()']]],\n  ['getlastptr_70',['GetLastPtr',['../classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb',1,'tram::Stack']]],\n  ['getlength_71',['GetLength',['../classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266',1,'tram::Audio::Sound::GetLength()'],['../classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a',1,'tram::Stack::GetLength()']]],\n  ['getlightmap_72',['GetLightmap',['../classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8',1,'tram::RenderComponent']]],\n  ['getlocation_73',['GetLocation',['../classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b',1,'tram::RenderComponent::GetLocation()'],['../classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda',1,'tram::Entity::GetLocation()']]],\n  ['getlookdirection_74',['GetLookDirection',['../classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb',1,'tram::ControllerComponent']]],\n  ['getlookrotation_75',['GetLookRotation',['../classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6',1,'tram::PlayerComponent']]],\n  ['getmaterial_76',['GetMaterial',['../classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953',1,'tram::Render::Material::GetMaterial()'],['../classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359',1,'tram::Render::Sprite::GetMaterial()']]],\n  ['getmaterials_77',['GetMaterials',['../classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e',1,'tram::Render::Model']]],\n  ['getmaterialtypename_78',['GetMaterialTypeName',['../namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931',1,'tram::Render']]],\n  ['getmaxindexrangelength_79',['GetMaxIndexRangeLength',['../namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545',1,'tram::Render::API']]],\n  ['getmediumlist_80',['GetMediumList',['../classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473',1,'tram::FileWriter']]],\n  ['getmodel_81',['GetModel',['../classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d',1,'tram::AnimationComponent::GetModel()'],['../classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d',1,'tram::PhysicsComponent::GetModel()'],['../classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c',1,'tram::RenderComponent::GetModel()'],['../classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d',1,'tram::TriggerComponent::GetModel()']]],\n  ['getmonitorcount_82',['GetMonitorCount',['../namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381',1,'tram::Platform::Window']]],\n  ['getname_83',['GetName',['../structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80',1,'tram::Event::GetName()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a',1,'tram::Ext::Kitchensink::AttributeInfo::GetName()'],['../namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701',1,'tram::System::GetName()'],['../classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271',1,'tram::Entity::GetName()'],['../structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77',1,'tram::Message::GetName()'],['../classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94',1,'tram::Navmesh::GetName()'],['../classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb',1,'tram::Resource::GetName()'],['../classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe',1,'tram::Script::Interface::GetName()'],['../structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd',1,'tram::Signal::GetName()'],['../classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9',1,'tram::WorldCell::GetName()'],['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957',1,'tram::Render::API::VertexShader::GetName()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb',1,'tram::Render::API::FragmentShader::GetName()']]],\n  ['getnavmeshnode_84',['GetNavmeshNode',['../classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da',1,'tram::Navmesh']]],\n  ['getneardistance_85',['GetNearDistance',['../classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7',1,'tram::Render::Model']]],\n  ['getnodes_86',['GetNodes',['../classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9',1,'tram::Navmesh']]],\n  ['getoctant_87',['GetOctant',['../classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4',1,'tram::Octree']]],\n  ['getorigin_88',['GetOrigin',['../classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22',1,'tram::Render::Model']]],\n  ['getparent_89',['GetParent',['../classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009',1,'tram::EntityComponent']]],\n  ['getpool_90',['GetPool',['../classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905',1,'tram::PoolProxy']]],\n  ['getpose_91',['GetPose',['../classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1',1,'tram::AnimationComponent']]],\n  ['getposition_92',['GetPosition',['../classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb',1,'tram::PathFollower::GetPosition()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b',1,'tram::Ext::Camera::Camera::GetPosition()']]],\n  ['getprompts_93',['GetPrompts',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['getproperty_94',['GetProperty',['../classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d',1,'tram::Render::Material']]],\n  ['getreader_95',['GetReader',['../classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14',1,'tram::FileReader']]],\n  ['getreferences_96',['GetReferences',['../classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb',1,'tram::Resource']]],\n  ['getrelation_97',['GetRelation',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getresource_98',['GetResource',['../classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16',1,'tram::PoolPtr']]],\n  ['getrigidbodyvelocity_99',['GetRigidbodyVelocity',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c',1,'tram::Physics::API']]],\n  ['getrotation_100',['GetRotation',['../classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75',1,'tram::RenderComponent::GetRotation()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a',1,'tram::Ext::Camera::Camera::GetRotation()'],['../classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162',1,'tram::Entity::GetRotation()']]],\n  ['getscale_101',['GetScale',['../classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736',1,'tram::RenderComponent']]],\n  ['getscaling_102',['GetScaling',['../namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e',1,'tram::GUI']]],\n  ['getscreen_103',['GetScreen',['../namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3',1,'tram::Render::API']]],\n  ['getscreenheight_104',['GetScreenHeight',['../namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66',1,'tram::UI']]],\n  ['getscreenwidth_105',['GetScreenWidth',['../namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca',1,'tram::UI']]],\n  ['getsearchlist_106',['GetSearchList',['../classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116',1,'tram::FileReader']]],\n  ['getsettings_107',['GetSettings',['../namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a',1,'tram::Settings']]],\n  ['getshader_108',['GetShader',['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c',1,'tram::Render::API::VertexShader::GetShader()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535',1,'tram::Render::API::FragmentShader::GetShader()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760',1,'tram::Render::API::LinkedShader::GetShader()']]],\n  ['getshape_109',['GetShape',['../classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098',1,'tram::Physics::CollisionModel']]],\n  ['getshortname_110',['GetShortName',['../namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355',1,'tram::System']]],\n  ['getsignaltable_111',['GetSignalTable',['../classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb',1,'tram::Entity']]],\n  ['getsize_112',['GetSize',['../classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc',1,'tram::FileReader::GetSize()'],['../classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2',1,'tram::Pool::GetSize()'],['../classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7',1,'tram::DiskReader::GetSize()']]],\n  ['getsound_113',['GetSound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b',1,'tram::Ext::Kitchensink::SoundTable']]],\n  ['getspecularexponent_114',['GetSpecularExponent',['../classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51',1,'tram::Render::Material']]],\n  ['getspeculartransparency_115',['GetSpecularTransparency',['../classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd',1,'tram::Render::Material']]],\n  ['getspecularweight_116',['GetSpecularWeight',['../classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485',1,'tram::Render::Material']]],\n  ['getsprite_117',['GetSprite',['../classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b',1,'tram::DecalComponent::GetSprite()'],['../classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481',1,'tram::ParticleComponent::GetSprite()'],['../classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f',1,'tram::SpriteComponent::GetSprite()']]],\n  ['getstat_118',['GetStat',['../namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b',1,'tram::Stats::GetStat(Resource resource)'],['../namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb',1,'tram::Stats::GetStat(System::system_t system)']]],\n  ['getstataverage_119',['GetStatAverage',['../namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1',1,'tram::Stats']]],\n  ['getstatuncollated_120',['GetStatUncollated',['../namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a',1,'tram::Stats']]],\n  ['getstatus_121',['GetStatus',['../classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086',1,'tram::Resource::GetStatus()'],['../classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264',1,'tram::DiskReader::GetStatus()'],['../classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a',1,'tram::DiskWriter::GetStatus()'],['../classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572',1,'tram::FileReader::GetStatus()'],['../classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec',1,'tram::FileWriter::GetStatus()']]],\n  ['getstoredcollisions_122',['GetStoredCollisions',['../classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3',1,'tram::TriggerComponent']]],\n  ['getsystemcount_123',['GetSystemCount',['../namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6',1,'tram::System']]],\n  ['gettangent_124',['GetTangent',['../classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9',1,'tram::PathFollower']]],\n  ['gettexture_125',['GetTexture',['../classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b',1,'tram::Render::Material']]],\n  ['gettick_126',['GetTick',['../namespacetram.html#a45d3de117b68f4c584f4b9012b230557',1,'tram']]],\n  ['getticktime_127',['GetTickTime',['../namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7',1,'tram']]],\n  ['gettime_128',['GetTime',['../namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92',1,'tram::Platform::Window']]],\n  ['gettransitions_129',['GetTransitions',['../classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa',1,'tram::WorldCell']]],\n  ['gettype_130',['GetType',['../structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af',1,'tram::Signal::GetType()'],['../structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119',1,'tram::Message::GetType()'],['../structtram_1_1_event.html#af584b523e077a59452a91153334e75cd',1,'tram::Event::GetType()'],['../classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264',1,'tram::Entity::GetType()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c',1,'tram::Ext::Kitchensink::QuestEntity::GetType()'],['../classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438',1,'tram::Trigger::GetType()'],['../classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9',1,'tram::StaticWorldObject::GetType()'],['../classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689',1,'tram::Sound::GetType()'],['../classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1',1,'tram::Scriptable::GetType()'],['../classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb',1,'tram::Player::GetType()'],['../classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5',1,'tram::Marker::GetType()'],['../classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd',1,'tram::Light::GetType()'],['../classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b',1,'tram::Decoration::GetType()'],['../classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434',1,'tram::Crate::GetType()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7',1,'tram::Render::API::LinkedShader::GetType()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec',1,'tram::Ext::Kitchensink::Button::GetType()'],['../classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50',1,'tram::ValuePtr::GetType()'],['../classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f',1,'tram::Render::Material::GetType()'],['../classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf',1,'tram::Value::GetType()']]],\n  ['getvalidnexttopics_131',['GetValidNextTopics',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['getvariable_132',['GetVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c',1,'tram::Ext::Kitchensink::Quest']]],\n  ['getvelocity_133',['GetVelocity',['../classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094',1,'tram::PhysicsComponent']]],\n  ['getversion_134',['GetVersion',['../namespacetram.html#a3b5616291800641604306bbf678b3873',1,'tram']]],\n  ['getvertexarray_135',['GetVertexArray',['../classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96',1,'tram::Render::Model']]],\n  ['getvertexdefinition_136',['GetVertexDefinition',['../namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429',1,'tram::Render']]],\n  ['getvertexformat_137',['GetVertexFormat',['../classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56',1,'tram::Render::Model']]],\n  ['getvertexformatname_138',['GetVertexFormatName',['../namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6',1,'tram::Render']]],\n  ['getvertexshader_139',['GetVertexShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa',1,'tram::Render::API::LinkedShader']]],\n  ['getviewdistance_140',['GetViewDistance',['../namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731',1,'tram::Render']]],\n  ['getviewfov_141',['GetViewFov',['../namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187',1,'tram::Render']]],\n  ['getviewposition_142',['GetViewPosition',['../namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b',1,'tram::Render']]],\n  ['getviewrotation_143',['GetViewRotation',['../namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf',1,'tram::Render']]],\n  ['getvolume_144',['GetVolume',['../classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a',1,'tram::WorldCell::GetVolume()'],['../namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c',1,'tram::Audio::GetVolume()']]],\n  ['getwaitingresources_145',['GetWaitingResources',['../namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3',1,'tram::Async']]],\n  ['getweight_146',['GetWeight',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['getwidth_147',['GetWidth',['../classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac',1,'tram::Render::Material']]],\n  ['getworldtransform_148',['getWorldTransform',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f',1,'tram::Physics::API::CallbackMotionState']]],\n  ['getwriter_149',['GetWriter',['../classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc',1,'tram::FileWriter']]],\n  ['gl_150',['gl',['../structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f',1,'tram::Render::material_t::gl()'],['../structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa',1,'tram::Render::light_t::gl()'],['../structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47',1,'tram::Render::drawlistentry_t::gl()']]],\n  ['gl_5findex_5fbuffer_151',['gl_index_buffer',['../structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552',1,'tram::Render::indexarray_t']]],\n  ['gl_5ftexture_152',['gl_texture',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461',1,'tram::Render::API::GLMaterial']]],\n  ['gl_5ftexture_5fhandle_153',['gl_texture_handle',['../structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee',1,'tram::Render::texturehandle_t']]],\n  ['gl_5fvertex_5farray_154',['gl_vertex_array',['../structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371',1,'tram::Render::vertexarray_t']]],\n  ['gl_5fvertex_5fbuffer_155',['gl_vertex_buffer',['../structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f',1,'tram::Render::vertexarray_t']]],\n  ['gldrawlistentry_156',['GLDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28',1,'tram::Render::API::GLDrawListEntry::GLDrawListEntry()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html',1,'tram::Render::API::GLDrawListEntry']]],\n  ['glfw_2ecpp_157',['glfw.cpp',['../glfw_8cpp.html',1,'']]],\n  ['gllight_158',['GLLight',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html',1,'tram::Render::API']]],\n  ['glmaterial_159',['GLMaterial',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html',1,'tram::Render::API']]],\n  ['glyph_160',['Glyph',['../namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13',1,'tram::GUI::Glyph(font_t font, glyph_t glyph)'],['../namespacetram_1_1_g_u_i.html#ab9cbc24cc6766595f1a063de7c32e568',1,'tram::GUI::Glyph(glyph_t glyph)']]],\n  ['glyph_5ft_161',['glyph_t',['../namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a',1,'tram::GUI']]],\n  ['glyphborderv_162',['GlyphBorderV',['../namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6',1,'tram::GUI']]],\n  ['glyphheight_163',['GlyphHeight',['../namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0',1,'tram::GUI']]],\n  ['glyphtype_164',['GlyphType',['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6',1,'tram::GUI']]],\n  ['glyphwidth_165',['GlyphWidth',['../namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6',1,'tram::GUI']]],\n  ['graph_166',['Graph',['../classtram_1_1_graph.html',1,'tram']]],\n  ['graph_2ecpp_167',['graph.cpp',['../framework_2graph_8cpp.html',1,'(Global Namespace)'],['../audio_2graph_8cpp.html',1,'(Global Namespace)']]],\n  ['graph_2eh_168',['graph.h',['../framework_2graph_8h.html',1,'(Global Namespace)'],['../audio_2graph_8h.html',1,'(Global Namespace)']]],\n  ['gravity_169',['gravity',['../classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a',1,'tram::ParticleComponent']]],\n  ['greater_170',['Greater',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['greaterorequal_171',['GreaterOrEqual',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['groups_172',['groups',['../structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3',1,'tram::Render::DynamicModelData']]],\n  ['gui_173',['GUI',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a',1,'tram::System']]],\n  ['gui_2ecpp_174',['gui.cpp',['../gui_8cpp.html',1,'']]],\n  ['gui_2eh_175',['gui.h',['../gui_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_8.js",
    "content": "var searchData=\n[\n  ['h_0',['h',['../structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752',1,'tram::GUI::FrameObject']]],\n  ['half_5fextent_1',['half_extent',['../structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d',1,'tram::Octree::Node']]],\n  ['handle_2',['handle',['../structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2',1,'tram::ListenerInfo::handle()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519',1,'tram::Render::LightTree::Light::handle()']]],\n  ['harmonic_3',['harmonic',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20',1,'tram::Render::API::GLDrawListEntry']]],\n  ['has_5flight_4',['has_light',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f',1,'tram::Render::LightGraph::Node']]],\n  ['has_5freflection_5',['has_reflection',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166',1,'tram::Render::LightGraph::Node']]],\n  ['hasattribute_6',['HasAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['hasautomaticloading_7',['HasAutomaticLoading',['../classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6',1,'tram::WorldCell']]],\n  ['hasbaseclass_8',['HasBaseClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['hascharacter_9',['HasCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1',1,'tram::Ext::Kitchensink::Faction']]],\n  ['hasclass_10',['HasClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f',1,'tram::Ext::Kitchensink::Character']]],\n  ['hash_5fparameter_11',['hash_parameter',['../classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5',1,'tram::Hashmap']]],\n  ['hashmap_12',['Hashmap',['../classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c',1,'tram::Hashmap::Hashmap(const char *name, size_t max_size)'],['../classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc',1,'tram::Hashmap::Hashmap(const char *name, size_t max_size, std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt; list)'],['../classtram_1_1_hashmap.html',1,'tram::Hashmap&lt; T &gt;']]],\n  ['hashmap_2eh_13',['hashmap.h',['../hashmap_8h.html',1,'']]],\n  ['hasinteriorlighting_14',['HasInteriorLighting',['../classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345',1,'tram::WorldCell']]],\n  ['head_15',['head',['../structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800',1,'tram::Render::Bone']]],\n  ['height_16',['height',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2',1,'tram::Ext::Kitchensink::ItemClass::height()'],['../structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d',1,'tram::Physics::CollisionShape::height()'],['../classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b',1,'tram::Render::Material::height()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579',1,'tram::Render::API::SWTexture::height()'],['../structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114',1,'tram::Render::SpriteFrame::height()']]],\n  ['helper_17',['helper',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4',1,'tram::Render::API::SWVertexArray']]],\n  ['hierarchy_5fmap_18',['hierarchy_map',['../namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e',1,'tram::Ext::Kitchensink']]],\n  ['history_5fcursor_19',['history_cursor',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5',1,'tram::Ext::Menu::Console']]],\n  ['horizontaldivider_20',['HorizontalDivider',['../namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56',1,'tram::GUI']]],\n  ['http_21',['HTTP',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986',1,'tram']]],\n  ['hull_22',['Hull',['../structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96',1,'tram::Physics::CollisionShape']]],\n  ['hull_5fpoints_23',['hull_points',['../structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca',1,'tram::Physics::CollisionShape']]],\n  ['hull_5fsize_24',['hull_size',['../structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_9.js",
    "content": "var searchData=\n[\n  ['icon_5ffont_0',['icon_font',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['icon_5fglyph_1',['icon_glyph',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['id_2',['id',['../classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197',1,'tram::Entity::id()'],['../structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f',1,'tram::SharedEntityData::id()']]],\n  ['id_5ft_3',['id_t',['../namespacetram.html#a25ae39989bce3dab64401c3956be9c03',1,'tram']]],\n  ['identity_5fposition_4',['IDENTITY_POSITION',['../namespacetram.html#a54978c27914521c35127181e9cb0f849',1,'tram']]],\n  ['identity_5frotation_5',['IDENTITY_ROTATION',['../namespacetram.html#a6643f20251af5564678ffc98ef58be9e',1,'tram']]],\n  ['identity_5fscale_6',['IDENTITY_SCALE',['../namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46',1,'tram']]],\n  ['image_2ecpp_7',['image.cpp',['../image_8cpp.html',1,'']]],\n  ['image_2eh_8',['image.h',['../image_8h.html',1,'']]],\n  ['ind_9',['ind',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3',1,'tram::Render::API::DynamicVertex']]],\n  ['index_10',['index',['../classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5',1,'tram::Pool']]],\n  ['index_5farray_11',['index_array',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a',1,'tram::Render::API::SWDrawListEntry::index_array()'],['../classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719',1,'tram::Render::Model::index_array()']]],\n  ['index_5farrays_12',['index_arrays',['../namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8',1,'tram::Render::API']]],\n  ['index_5fbuffer_13',['index_buffer',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8',1,'tram::Render::API::D3DDrawListEntry']]],\n  ['index_5fcount_14',['index_count',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57',1,'tram::Render::API::SWIndexArray']]],\n  ['index_5fin_5fbucket_15',['index_in_bucket',['../structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95',1,'tram::Render::BucketMapping']]],\n  ['index_5flength_16',['index_length',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474',1,'tram::Render::API::D3DDrawListEntry::index_length()'],['../structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23',1,'tram::Render::IndexRange::index_length()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9',1,'tram::Render::API::SWDrawListEntry::index_length()']]],\n  ['index_5foffset_17',['index_offset',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f',1,'tram::Render::API::D3DDrawListEntry::index_offset()'],['../structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72',1,'tram::Render::IndexRange::index_offset()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084',1,'tram::Render::API::SWDrawListEntry::index_offset()']]],\n  ['index_5franges_18',['index_ranges',['../classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712',1,'tram::Render::Model']]],\n  ['indexarray_5ft_19',['indexarray_t',['../structtram_1_1_render_1_1indexarray__t.html',1,'tram::Render']]],\n  ['indexrange_20',['IndexRange',['../structtram_1_1_render_1_1_index_range.html',1,'tram::Render']]],\n  ['indices_21',['indices',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a',1,'tram::Render::API::SWIndexArray::indices()'],['../structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39',1,'tram::Render::Triangle::indices()'],['../structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd',1,'tram::Render::StaticModelData::indices()'],['../structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17',1,'tram::Render::DynamicModelData::indices()']]],\n  ['info_22',['INFO',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3',1,'tram']]],\n  ['info_2edox_23',['info.dox',['../info_8dox.html',1,'']]],\n  ['infos_24',['infos',['../namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5',1,'tram::Ext::Kitchensink']]],\n  ['init_25',['Init',['../namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8',1,'tram::UI::Init()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717',1,'tram::Physics::API::Init()'],['../namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6',1,'tram::Physics::Init()'],['../namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5',1,'tram::Platform::Window::Init()'],['../namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8',1,'tram::Platform::Input::Init()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d',1,'tram::Render::API::Init()'],['../namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74',1,'tram::Render::Init()']]],\n  ['init_26',['INIT',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38',1,'tram::System']]],\n  ['init_27',['Init',['../namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd',1,'tram::Audio::API::Init()'],['../namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470',1,'tram::Audio::Init()'],['../namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2',1,'tram::Ext::Camera::Init()'],['../namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6',1,'tram::Ext::Kitchensink::Init()'],['../classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6',1,'tram::LightComponent::Init()'],['../classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd',1,'tram::PlayerComponent::Init()'],['../classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9',1,'tram::TemplateComponent::Init()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58',1,'tram::Ext::Kitchensink::Quest::Init()'],['../classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7',1,'tram::EntityComponent::Init()']]],\n  ['init_28',['init',['../classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619',1,'tram::Component::init()'],['../classtram_1_1_component.html#a1e0318f6b89ca572f28e9fed070dd32b',1,'tram::Component::init()'],['../classtram_1_1_component.html#ad96889276619fda754e4af68a5075db2',1,'tram::Component::init()'],['../classtram_1_1_component.html#a4ba7f565d501661914c7648cd1b62b44',1,'tram::Component::init()'],['../classtram_1_1_component.html#ae956519770a3e6c53b9bcecf407676b6',1,'tram::Component::init()'],['../classtram_1_1_component.html#a0abec218348d77cebbfa73723815606f',1,'tram::Component::init()'],['../classtram_1_1_component.html#a81ec0494d37dea609b33cf00cf0c33d3',1,'tram::Component::init()'],['../classtram_1_1_component.html#ab30ccc33ece77ac0526eccd693de6a1a',1,'tram::Component::init()'],['../classtram_1_1_component.html#a451ffe51f9f1e27648f7a5f585eb1ea4',1,'tram::Component::init()'],['../classtram_1_1_component.html#a54a5bab4377e5b7895691516332639ac',1,'tram::Component::init()'],['../classtram_1_1_component.html#a827f85fff0e002fb5706f4ade3ddc72a',1,'tram::Component::init()'],['../classtram_1_1_component.html#ac8b7faa733f01297be8df3a2ea685eed',1,'tram::Component::init()'],['../classtram_1_1_component.html#a3848187d991b7185779a6c237957bd9c',1,'tram::Component::init()']]],\n  ['init_29',['Init',['../namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a',1,'tram::Ext::Menu::Init()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab',1,'tram::Ext::Scripting::Lua::Init()'],['../namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0',1,'tram::Async::Init()'],['../namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578',1,'tram::Core::Init()'],['../namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0',1,'tram::GUI::Init()'],['../namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22',1,'tram::Script::Init()']]],\n  ['initai_30',['InitAI',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953',1,'tram::Ext::Kitchensink']]],\n  ['initcallbacks_31',['InitCallbacks',['../namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c',1,'tram::Ext::Menu']]],\n  ['initexplorationpaths_32',['InitExplorationPaths',['../namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4',1,'tram::Audio::Spatial']]],\n  ['initial_5ffollower_33',['initial_follower',['../main_8cpp.html#a26541762e56e12ecf3defe0cdf54445c',1,'main.cpp']]],\n  ['initial_5fvelocity_34',['initial_velocity',['../classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3',1,'tram::ParticleComponent']]],\n  ['initial_5fvelocity_5frandomness_35',['initial_velocity_randomness',['../classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83',1,'tram::ParticleComponent']]],\n  ['initialattribute_36',['InitialAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['initoutput_37',['InitOutput',['../namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912',1,'tram::Audio::Spatial']]],\n  ['inputstate_38',['InputState',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef',1,'tram::UI']]],\n  ['insert_39',['Insert',['../classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510',1,'tram::Octree::Insert(Node *parent, Node *leaf)'],['../classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72',1,'tram::Octree::Insert(vec3 point, T data)'],['../classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0',1,'tram::Hashmap::Insert(uint32_t key, T value)'],['../classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da',1,'tram::Hashmap::Insert(UID key, T value)']]],\n  ['insertdrawlistentries_40',['InsertDrawListEntries',['../classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1',1,'tram::RenderComponent']]],\n  ['insertdrawlistentry_41',['InsertDrawListEntry',['../namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1',1,'tram::Render::API']]],\n  ['insertleaf_42',['InsertLeaf',['../classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41',1,'tram::AABBTree::InsertLeaf()'],['../namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779',1,'tram::Render::AABB::InsertLeaf()']]],\n  ['int32_43',['int32',['../structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707',1,'tram::Settings::SettingInfo']]],\n  ['int32_44',['INT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a',1,'tram::Render::VertexAttribute']]],\n  ['int32_5fptr_45',['int32_ptr',['../classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d',1,'tram::ValuePtr']]],\n  ['int32_5fvalue_46',['int32_value',['../classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714',1,'tram::Value']]],\n  ['intcolor_47',['IntColor',['../namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b',1,'tram::Render::API']]],\n  ['intercept_48',['Intercept',['../structtram_1_1_ext_1_1_menu_1_1_intercept.html',1,'tram::Ext::Menu']]],\n  ['intercept_5fenabled_49',['intercept_enabled',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a',1,'tram::Ext::Menu::DebugMenu']]],\n  ['intercept_5fmenu_50',['intercept_menu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42',1,'tram::Ext::Menu::DebugMenu']]],\n  ['interceptmenu_51',['InterceptMenu',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html',1,'tram::Ext::Menu']]],\n  ['intercepts_52',['intercepts',['../namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2',1,'tram::Ext::Menu']]],\n  ['interface_53',['Interface',['../classtram_1_1_script_1_1_interface.html',1,'tram::Script']]],\n  ['interior_54',['INTERIOR',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507',1,'tram::WorldCell']]],\n  ['interior_5flighting_55',['INTERIOR_LIGHTING',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101',1,'tram::WorldCell']]],\n  ['interpolate_56',['interpolate',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb',1,'tram::AnimationComponent::AnimationPlaybackInfo::interpolate()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa',1,'tram::Ext::Kitchensink::AnimState::interpolate()']]],\n  ['intersection_57',['intersection',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256',1,'tram::Render::AABB::QueryResponse']]],\n  ['into_5fstate_58',['into_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::into_state()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::into_state()']]],\n  ['invalid_59',['INVALID',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861',1,'tram::System']]],\n  ['inventory_60',['Inventory',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2',1,'tram::Ext::Kitchensink::Inventory::Inventory()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['inventory_2ecpp_61',['inventory.cpp',['../inventory_8cpp.html',1,'']]],\n  ['inventory_2eh_62',['inventory.h',['../inventory_8h.html',1,'']]],\n  ['inventoryfactoryinfo_63',['InventoryFactoryInfo',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html',1,'tram::Ext::Kitchensink']]],\n  ['inventorymanager_64',['InventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html',1,'tram::Ext::Kitchensink']]],\n  ['io_5ferror_65',['IO_ERROR',['../namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93',1,'tram']]],\n  ['is_66',['Is',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['is_5fcontinue_67',['is_continue',['../classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b',1,'tram::FileReaderParser::is_continue()'],['../classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17',1,'tram::TextReaderParser::is_continue()'],['../classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558',1,'tram::File::is_continue()']]],\n  ['is_5fempty_68',['is_empty',['../structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0',1,'tram::UID']]],\n  ['is_5ferror_69',['is_error',['../classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151',1,'tram::FileReaderParser::is_error()'],['../classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b',1,'tram::TextReaderParser::is_error()']]],\n  ['is_5ffullscreen_70',['is_fullscreen',['../namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765',1,'tram::Platform']]],\n  ['is_5fin_5fair_71',['is_in_air',['../classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6',1,'tram::RaycastControllerComponent::is_in_air()'],['../classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c',1,'tram::FPSControllerComponent::is_in_air()']]],\n  ['is_5finit_72',['is_init',['../classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac',1,'tram::EntityComponent']]],\n  ['is_5fopen_73',['is_open',['../classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13',1,'tram::File']]],\n  ['is_5fready_74',['is_ready',['../classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918',1,'tram::EntityComponent']]],\n  ['is_5fvalid_75',['is_valid',['../structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449',1,'tram::UID']]],\n  ['isaudiosourceplaying_76',['IsAudioSourcePlaying',['../namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596',1,'tram::Audio::API']]],\n  ['isautoload_77',['IsAutoLoad',['../classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12',1,'tram::Entity']]],\n  ['isbool_78',['IsBool',['../classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02',1,'tram::Value::IsBool()'],['../classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5',1,'tram::ValuePtr::IsBool()']]],\n  ['ischanged_79',['IsChanged',['../classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0',1,'tram::Entity']]],\n  ['isdebugdraw_80',['IsDebugDraw',['../classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1',1,'tram::WorldCell']]],\n  ['isdebuginfodraw_81',['IsDebugInfoDraw',['../classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2',1,'tram::ControllerComponent::IsDebugInfoDraw()'],['../classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e',1,'tram::AudioComponent::IsDebugInfoDraw()'],['../classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0',1,'tram::AnimationComponent::IsDebugInfoDraw()']]],\n  ['isdebugmode_82',['IsDebugMode',['../namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f',1,'tram::Render::API']]],\n  ['isdeleted_83',['IsDeleted',['../classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee',1,'tram::Entity']]],\n  ['isdrawtrigger_84',['IsDrawTrigger',['../classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77',1,'tram::Trigger']]],\n  ['isequippeditem_85',['IsEquippedItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['isequippedslot_86',['IsEquippedSlot',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['isfloat_87',['IsFloat',['../classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274',1,'tram::ValuePtr::IsFloat()'],['../classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e',1,'tram::Value::IsFloat()']]],\n  ['isfullscreen_88',['IsFullscreen',['../namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e',1,'tram::Platform::Window']]],\n  ['isinfaction_89',['IsInFaction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e',1,'tram::Ext::Kitchensink::Character']]],\n  ['isinit_90',['IsInit',['../classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a',1,'tram::EntityComponent']]],\n  ['isinitialized_91',['IsInitialized',['../namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2',1,'tram::System']]],\n  ['isinside_92',['IsInside',['../classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f',1,'tram::Transition::IsInside()'],['../classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70',1,'tram::WorldCell::IsInside()']]],\n  ['isint_93',['IsInt',['../classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61',1,'tram::Value::IsInt()'],['../classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695',1,'tram::ValuePtr::IsInt()']]],\n  ['isinterior_94',['IsInterior',['../classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8',1,'tram::WorldCell']]],\n  ['isleaf_95',['IsLeaf',['../structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429',1,'tram::Octree::Node::IsLeaf()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4',1,'tram::AABBTree::Node::IsLeaf()']]],\n  ['islightdraw_96',['IsLightDraw',['../classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b',1,'tram::LightComponent']]],\n  ['isloaded_97',['IsLoaded',['../classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6',1,'tram::WorldCell::IsLoaded()'],['../classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422',1,'tram::Entity::IsLoaded() const']]],\n  ['isloadedfromdisk_98',['IsLoadedFromDisk',['../classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a',1,'tram::Entity']]],\n  ['isloadfailed_99',['IsLoadFailed',['../classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8',1,'tram::Resource']]],\n  ['ismet_100',['IsMet',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7',1,'tram::Ext::Kitchensink::DialogCondition']]],\n  ['isname_101',['IsName',['../classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900',1,'tram::Value']]],\n  ['isnode_102',['IsNode',['../structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c',1,'tram::Octree::Node']]],\n  ['isnot_103',['IsNot',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['ispersistent_104',['IsPersistent',['../classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a',1,'tram::Entity']]],\n  ['isplaying_105',['IsPlaying',['../classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07',1,'tram::AnimationComponent::IsPlaying()'],['../classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58',1,'tram::AudioComponent::IsPlaying()']]],\n  ['isquat_106',['IsQuat',['../classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c',1,'tram::Value']]],\n  ['israwinput_107',['IsRawInput',['../namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa',1,'tram::Platform::Window']]],\n  ['isready_108',['IsReady',['../classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f',1,'tram::EntityComponent']]],\n  ['isrendercontextthread_109',['IsRenderContextThread',['../namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703',1,'tram::Platform::Window']]],\n  ['issourcedraw_110',['IsSourceDraw',['../classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58',1,'tram::AudioComponent']]],\n  ['isstring_111',['IsString',['../classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380',1,'tram::Value']]],\n  ['isvec2_112',['IsVec2',['../classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508',1,'tram::Value']]],\n  ['isvec3_113',['IsVec3',['../classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af',1,'tram::Value']]],\n  ['isvec4_114',['IsVec4',['../classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc',1,'tram::Value']]],\n  ['isvsync_115',['IsVsync',['../namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797',1,'tram::Platform::Window']]],\n  ['item_116',['item',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669',1,'tram::Ext::Kitchensink::QuestVariable::item()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aabc1c4ce438e88d992880d126648a343',1,'tram::Ext::Kitchensink::QuestVariable::item()']]],\n  ['item_5faction_5ffunc_117',['item_action_func',['../namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8',1,'tram::Ext::Kitchensink']]],\n  ['item_5fclass_118',['item_class',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f',1,'tram::Ext::Kitchensink::ItemInstance']]],\n  ['itemclass_119',['ItemClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html',1,'tram::Ext::Kitchensink']]],\n  ['itemcount_120',['ItemCount',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['iteminstance_121',['ItemInstance',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html',1,'tram::Ext::Kitchensink']]],\n  ['items_122',['items',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2',1,'tram::Ext::Kitchensink::ListInventoryManager']]],\n  ['iterator_123',['iterator',['../structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0',1,'tram::Pool::iterator::iterator()'],['../structtram_1_1_pool_1_1iterator.html',1,'tram::Pool&lt; T &gt;::iterator']]],\n  ['ivec3_124',['ivec3',['../namespacetram.html#a376f6f34fd81bba7071907b5226432f9',1,'tram']]],\n  ['ivec4_125',['ivec4',['../namespacetram.html#a1632687848b1fc76b67d96646ef5a691',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_a.js",
    "content": "var searchData=\n[\n  ['jump_0',['Jump',['../classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76',1,'tram::ControllerComponent::Jump()'],['../classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8',1,'tram::FPSControllerComponent::Jump()'],['../classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8',1,'tram::RaycastControllerComponent::Jump() override']]],\n  ['jump_5fframes_1',['jump_frames',['../classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92',1,'tram::RaycastControllerComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_b.js",
    "content": "var searchData=\n[\n  ['key_0',['key',['../structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a',1,'tram::Hashmap::Record::key()'],['../structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431',1,'tram::Settings::RawSetting::key()'],['../structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8',1,'tram::UID::key()']]],\n  ['key_5f0_1',['KEY_0',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e',1,'tram::UI']]],\n  ['key_5f1_2',['KEY_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae',1,'tram::UI']]],\n  ['key_5f2_3',['KEY_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41',1,'tram::UI']]],\n  ['key_5f3_4',['KEY_3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37',1,'tram::UI']]],\n  ['key_5f4_5',['KEY_4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736',1,'tram::UI']]],\n  ['key_5f5_6',['KEY_5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584',1,'tram::UI']]],\n  ['key_5f6_7',['KEY_6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390',1,'tram::UI']]],\n  ['key_5f7_8',['KEY_7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da',1,'tram::UI']]],\n  ['key_5f8_9',['KEY_8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004',1,'tram::UI']]],\n  ['key_5f9_10',['KEY_9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e',1,'tram::UI']]],\n  ['key_5fa_11',['KEY_A',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9',1,'tram::UI']]],\n  ['key_5faction_5factivate_12',['KEY_ACTION_ACTIVATE',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd',1,'tram::UI']]],\n  ['key_5faction_5fbackward_13',['KEY_ACTION_BACKWARD',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39',1,'tram::UI']]],\n  ['key_5faction_5fcrouch_14',['KEY_ACTION_CROUCH',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2',1,'tram::UI']]],\n  ['key_5faction_5fdown_15',['KEY_ACTION_DOWN',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603',1,'tram::UI']]],\n  ['key_5faction_5ffly_16',['KEY_ACTION_FLY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7',1,'tram::UI']]],\n  ['key_5faction_5fforward_17',['KEY_ACTION_FORWARD',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0',1,'tram::UI']]],\n  ['key_5faction_5fjump_18',['KEY_ACTION_JUMP',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e',1,'tram::UI']]],\n  ['key_5faction_5flast_19',['KEY_ACTION_LAST',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9',1,'tram::UI']]],\n  ['key_5faction_5fleft_20',['KEY_ACTION_LEFT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb',1,'tram::UI']]],\n  ['key_5faction_5fnone_21',['KEY_ACTION_NONE',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40',1,'tram::UI']]],\n  ['key_5faction_5fprimary_22',['KEY_ACTION_PRIMARY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90',1,'tram::UI']]],\n  ['key_5faction_5fright_23',['KEY_ACTION_RIGHT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea',1,'tram::UI']]],\n  ['key_5faction_5fsecondary_24',['KEY_ACTION_SECONDARY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c',1,'tram::UI']]],\n  ['key_5faction_5fsprint_25',['KEY_ACTION_SPRINT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e',1,'tram::UI']]],\n  ['key_5faction_5fstrafe_5fleft_26',['KEY_ACTION_STRAFE_LEFT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9',1,'tram::UI']]],\n  ['key_5faction_5fstrafe_5fright_27',['KEY_ACTION_STRAFE_RIGHT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9',1,'tram::UI']]],\n  ['key_5faction_5fup_28',['KEY_ACTION_UP',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859',1,'tram::UI']]],\n  ['key_5fapostrophe_29',['KEY_APOSTROPHE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf',1,'tram::UI']]],\n  ['key_5fb_30',['KEY_B',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7',1,'tram::UI']]],\n  ['key_5fbackslash_31',['KEY_BACKSLASH',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30',1,'tram::UI']]],\n  ['key_5fbackspace_32',['KEY_BACKSPACE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c',1,'tram::UI']]],\n  ['key_5fc_33',['KEY_C',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111',1,'tram::UI']]],\n  ['key_5fcaps_5flock_34',['KEY_CAPS_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3',1,'tram::UI']]],\n  ['key_5fcomma_35',['KEY_COMMA',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3',1,'tram::UI']]],\n  ['key_5fd_36',['KEY_D',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283',1,'tram::UI']]],\n  ['key_5fdelete_37',['KEY_DELETE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f',1,'tram::UI']]],\n  ['key_5fdown_38',['KEY_DOWN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7',1,'tram::UI']]],\n  ['key_5fe_39',['KEY_E',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea',1,'tram::UI']]],\n  ['key_5fend_40',['KEY_END',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95',1,'tram::UI']]],\n  ['key_5fenter_41',['KEY_ENTER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d',1,'tram::UI']]],\n  ['key_5fequal_42',['KEY_EQUAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd',1,'tram::UI']]],\n  ['key_5fescape_43',['KEY_ESCAPE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49',1,'tram::UI']]],\n  ['key_5ff_44',['KEY_F',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3',1,'tram::UI']]],\n  ['key_5ff1_45',['KEY_F1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126',1,'tram::UI']]],\n  ['key_5ff10_46',['KEY_F10',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78',1,'tram::UI']]],\n  ['key_5ff11_47',['KEY_F11',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03',1,'tram::UI']]],\n  ['key_5ff12_48',['KEY_F12',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd',1,'tram::UI']]],\n  ['key_5ff13_49',['KEY_F13',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783',1,'tram::UI']]],\n  ['key_5ff14_50',['KEY_F14',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6',1,'tram::UI']]],\n  ['key_5ff15_51',['KEY_F15',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36',1,'tram::UI']]],\n  ['key_5ff16_52',['KEY_F16',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819',1,'tram::UI']]],\n  ['key_5ff17_53',['KEY_F17',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa',1,'tram::UI']]],\n  ['key_5ff18_54',['KEY_F18',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb',1,'tram::UI']]],\n  ['key_5ff19_55',['KEY_F19',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910',1,'tram::UI']]],\n  ['key_5ff2_56',['KEY_F2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc',1,'tram::UI']]],\n  ['key_5ff20_57',['KEY_F20',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03',1,'tram::UI']]],\n  ['key_5ff21_58',['KEY_F21',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410',1,'tram::UI']]],\n  ['key_5ff22_59',['KEY_F22',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7',1,'tram::UI']]],\n  ['key_5ff23_60',['KEY_F23',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c',1,'tram::UI']]],\n  ['key_5ff24_61',['KEY_F24',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd',1,'tram::UI']]],\n  ['key_5ff25_62',['KEY_F25',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0',1,'tram::UI']]],\n  ['key_5ff3_63',['KEY_F3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b',1,'tram::UI']]],\n  ['key_5ff4_64',['KEY_F4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d',1,'tram::UI']]],\n  ['key_5ff5_65',['KEY_F5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a',1,'tram::UI']]],\n  ['key_5ff6_66',['KEY_F6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523',1,'tram::UI']]],\n  ['key_5ff7_67',['KEY_F7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4',1,'tram::UI']]],\n  ['key_5ff8_68',['KEY_F8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083',1,'tram::UI']]],\n  ['key_5ff9_69',['KEY_F9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2',1,'tram::UI']]],\n  ['key_5fg_70',['KEY_G',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20',1,'tram::UI']]],\n  ['key_5fgrave_5faccent_71',['KEY_GRAVE_ACCENT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed',1,'tram::UI']]],\n  ['key_5fh_72',['KEY_H',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808',1,'tram::UI']]],\n  ['key_5fhome_73',['KEY_HOME',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc',1,'tram::UI']]],\n  ['key_5fi_74',['KEY_I',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787',1,'tram::UI']]],\n  ['key_5finsert_75',['KEY_INSERT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508',1,'tram::UI']]],\n  ['key_5fj_76',['KEY_J',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66',1,'tram::UI']]],\n  ['key_5fk_77',['KEY_K',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab',1,'tram::UI']]],\n  ['key_5fkp_5f0_78',['KEY_KP_0',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be',1,'tram::UI']]],\n  ['key_5fkp_5f1_79',['KEY_KP_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d',1,'tram::UI']]],\n  ['key_5fkp_5f2_80',['KEY_KP_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded',1,'tram::UI']]],\n  ['key_5fkp_5f3_81',['KEY_KP_3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c',1,'tram::UI']]],\n  ['key_5fkp_5f4_82',['KEY_KP_4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172',1,'tram::UI']]],\n  ['key_5fkp_5f5_83',['KEY_KP_5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498',1,'tram::UI']]],\n  ['key_5fkp_5f6_84',['KEY_KP_6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5',1,'tram::UI']]],\n  ['key_5fkp_5f7_85',['KEY_KP_7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a',1,'tram::UI']]],\n  ['key_5fkp_5f8_86',['KEY_KP_8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901',1,'tram::UI']]],\n  ['key_5fkp_5f9_87',['KEY_KP_9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959',1,'tram::UI']]],\n  ['key_5fkp_5fadd_88',['KEY_KP_ADD',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b',1,'tram::UI']]],\n  ['key_5fkp_5fdecimal_89',['KEY_KP_DECIMAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862',1,'tram::UI']]],\n  ['key_5fkp_5fdivide_90',['KEY_KP_DIVIDE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49',1,'tram::UI']]],\n  ['key_5fkp_5fenter_91',['KEY_KP_ENTER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665',1,'tram::UI']]],\n  ['key_5fkp_5fequal_92',['KEY_KP_EQUAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad',1,'tram::UI']]],\n  ['key_5fkp_5fmultiply_93',['KEY_KP_MULTIPLY',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5',1,'tram::UI']]],\n  ['key_5fkp_5fsubtract_94',['KEY_KP_SUBTRACT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd',1,'tram::UI']]],\n  ['key_5fl_95',['KEY_L',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc',1,'tram::UI']]],\n  ['key_5flastaxis_96',['KEY_LASTAXIS',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2',1,'tram::UI']]],\n  ['key_5flastkey_97',['KEY_LASTKEY',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450',1,'tram::UI']]],\n  ['key_5fleft_98',['KEY_LEFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6',1,'tram::UI']]],\n  ['key_5fleft_5falt_99',['KEY_LEFT_ALT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34',1,'tram::UI']]],\n  ['key_5fleft_5fbracket_100',['KEY_LEFT_BRACKET',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849',1,'tram::UI']]],\n  ['key_5fleft_5fcontrol_101',['KEY_LEFT_CONTROL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35',1,'tram::UI']]],\n  ['key_5fleft_5fshift_102',['KEY_LEFT_SHIFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c',1,'tram::UI']]],\n  ['key_5fleft_5fsuper_103',['KEY_LEFT_SUPER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7',1,'tram::UI']]],\n  ['key_5fleftmouse_104',['KEY_LEFTMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e',1,'tram::UI']]],\n  ['key_5fm_105',['KEY_M',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d',1,'tram::UI']]],\n  ['key_5fmenu_106',['KEY_MENU',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825',1,'tram::UI']]],\n  ['key_5fmiddlemouse_107',['KEY_MIDDLEMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de',1,'tram::UI']]],\n  ['key_5fminus_108',['KEY_MINUS',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3',1,'tram::UI']]],\n  ['key_5fmouse_5fscroll_109',['KEY_MOUSE_SCROLL',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a',1,'tram::UI']]],\n  ['key_5fmouse_5fx_110',['KEY_MOUSE_X',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077',1,'tram::UI']]],\n  ['key_5fmouse_5fy_111',['KEY_MOUSE_Y',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401',1,'tram::UI']]],\n  ['key_5fn_112',['KEY_N',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25',1,'tram::UI']]],\n  ['key_5fnum_5flock_113',['KEY_NUM_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462',1,'tram::UI']]],\n  ['key_5fo_114',['KEY_O',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01',1,'tram::UI']]],\n  ['key_5fp_115',['KEY_P',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695',1,'tram::UI']]],\n  ['key_5fpage_5fdown_116',['KEY_PAGE_DOWN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac',1,'tram::UI']]],\n  ['key_5fpage_5fup_117',['KEY_PAGE_UP',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e',1,'tram::UI']]],\n  ['key_5fpause_118',['KEY_PAUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50',1,'tram::UI']]],\n  ['key_5fperiod_119',['KEY_PERIOD',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0',1,'tram::UI']]],\n  ['key_5fprint_5fscreen_120',['KEY_PRINT_SCREEN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12',1,'tram::UI']]],\n  ['key_5fq_121',['KEY_Q',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6',1,'tram::UI']]],\n  ['key_5fr_122',['KEY_R',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc',1,'tram::UI']]],\n  ['key_5fright_123',['KEY_RIGHT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6',1,'tram::UI']]],\n  ['key_5fright_5falt_124',['KEY_RIGHT_ALT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16',1,'tram::UI']]],\n  ['key_5fright_5fbracket_125',['KEY_RIGHT_BRACKET',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc',1,'tram::UI']]],\n  ['key_5fright_5fcontrol_126',['KEY_RIGHT_CONTROL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321',1,'tram::UI']]],\n  ['key_5fright_5fshift_127',['KEY_RIGHT_SHIFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6',1,'tram::UI']]],\n  ['key_5fright_5fsuper_128',['KEY_RIGHT_SUPER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96',1,'tram::UI']]],\n  ['key_5frightmouse_129',['KEY_RIGHTMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479',1,'tram::UI']]],\n  ['key_5fs_130',['KEY_S',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4',1,'tram::UI']]],\n  ['key_5fscroll_5flock_131',['KEY_SCROLL_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163',1,'tram::UI']]],\n  ['key_5fsemicolon_132',['KEY_SEMICOLON',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12',1,'tram::UI']]],\n  ['key_5fslash_133',['KEY_SLASH',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d',1,'tram::UI']]],\n  ['key_5fspace_134',['KEY_SPACE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91',1,'tram::UI']]],\n  ['key_5ft_135',['KEY_T',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6',1,'tram::UI']]],\n  ['key_5ftab_136',['KEY_TAB',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce',1,'tram::UI']]],\n  ['key_5fu_137',['KEY_U',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8',1,'tram::UI']]],\n  ['key_5fup_138',['KEY_UP',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513',1,'tram::UI']]],\n  ['key_5fv_139',['KEY_V',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72',1,'tram::UI']]],\n  ['key_5fw_140',['KEY_W',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a',1,'tram::UI']]],\n  ['key_5fworld_5f1_141',['KEY_WORLD_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306',1,'tram::UI']]],\n  ['key_5fworld_5f2_142',['KEY_WORLD_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8',1,'tram::UI']]],\n  ['key_5fx_143',['KEY_X',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c',1,'tram::UI']]],\n  ['key_5fy_144',['KEY_Y',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b',1,'tram::UI']]],\n  ['key_5fz_145',['KEY_Z',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2',1,'tram::UI']]],\n  ['keybinding_146',['KeyBinding',['../structtram_1_1_u_i_1_1_key_binding.html',1,'tram::UI']]],\n  ['keyboardaction_147',['KeyboardAction',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99',1,'tram::UI']]],\n  ['keyboardaction_5flimit_148',['KEYBOARDACTION_LIMIT',['../namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba',1,'tram']]],\n  ['keyboardaction_5ft_149',['keyboardaction_t',['../namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461',1,'tram::UI']]],\n  ['keyboardaxis_150',['KeyboardAxis',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064',1,'tram::UI']]],\n  ['keyboardkey_151',['KeyboardKey',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9',1,'tram::UI']]],\n  ['keychar_152',['KEYCHAR',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201',1,'tram::Event']]],\n  ['keycode_153',['KeyCode',['../namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa',1,'tram::UI']]],\n  ['keydown_154',['KEYDOWN',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393',1,'tram::Event']]],\n  ['keyframe_155',['Keyframe',['../structtram_1_1_render_1_1_keyframe.html',1,'tram::Render']]],\n  ['keyframe_5fcount_156',['keyframe_count',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8',1,'tram::AnimationComponent::AnimationPlaybackInfo::keyframe_count()'],['../structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629',1,'tram::Render::KeyframeHeader::keyframe_count()']]],\n  ['keyframe_5foffset_157',['keyframe_offset',['../structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae',1,'tram::Render::KeyframeHeader']]],\n  ['keyframeheader_158',['KeyframeHeader',['../structtram_1_1_render_1_1_keyframe_header.html',1,'tram::Render']]],\n  ['keyframes_159',['keyframes',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['keymouse_160',['KeyMouse',['../namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b',1,'tram::UI']]],\n  ['keypress_161',['KEYPRESS',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1',1,'tram::Event']]],\n  ['keypress_162',['KeyPress',['../namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d',1,'tram::UI']]],\n  ['keyrelease_163',['KeyRelease',['../namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7',1,'tram::UI']]],\n  ['keyscroll_164',['KeyScroll',['../namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c',1,'tram::UI']]],\n  ['keyup_165',['KEYUP',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03',1,'tram::Event']]],\n  ['kill_166',['KILL',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6',1,'tram::Signal::KILL()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb',1,'tram::Message::KILL()']]],\n  ['kitchensink_2ecpp_167',['kitchensink.cpp',['../kitchensink_8cpp.html',1,'']]],\n  ['kitchensink_2eh_168',['kitchensink.h',['../kitchensink_8h.html',1,'']]],\n  ['kitchensink_5fsystem_169',['KITCHENSINK_SYSTEM',['../namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7',1,'tram::Ext::Kitchensink']]],\n  ['kitchensinkmenulist_170',['KitchensinkMenuList',['../classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_c.js",
    "content": "var searchData=\n[\n  ['l00_0',['l00',['../structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8',1,'tram::Render::SphericalHarmonic::l00()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d',1,'tram::Render::API::ShaderUniformModelMatrices::l00()']]],\n  ['l10_1',['l10',['../structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5',1,'tram::Render::SphericalHarmonic::l10()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd',1,'tram::Render::API::ShaderUniformModelMatrices::l10()']]],\n  ['l11_2',['l11',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a',1,'tram::Render::API::ShaderUniformModelMatrices::l11()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156',1,'tram::Render::SphericalHarmonic::l11()']]],\n  ['l1m1_3',['l1m1',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6',1,'tram::Render::API::ShaderUniformModelMatrices::l1m1()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb',1,'tram::Render::SphericalHarmonic::l1m1()']]],\n  ['l20_4',['l20',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb',1,'tram::Render::API::ShaderUniformModelMatrices::l20()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3',1,'tram::Render::SphericalHarmonic::l20()']]],\n  ['l21_5',['l21',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316',1,'tram::Render::API::ShaderUniformModelMatrices::l21()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48',1,'tram::Render::SphericalHarmonic::l21()']]],\n  ['l22_6',['l22',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a',1,'tram::Render::API::ShaderUniformModelMatrices::l22()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab',1,'tram::Render::SphericalHarmonic::l22()']]],\n  ['l2m1_7',['l2m1',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a',1,'tram::Render::API::ShaderUniformModelMatrices::l2m1()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751',1,'tram::Render::SphericalHarmonic::l2m1()']]],\n  ['l2m2_8',['l2m2',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff',1,'tram::Render::API::ShaderUniformModelMatrices::l2m2()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd',1,'tram::Render::SphericalHarmonic::l2m2()']]],\n  ['language_2ecpp_9',['language.cpp',['../language_8cpp.html',1,'']]],\n  ['language_2eh_10',['language.h',['../language_8h.html',1,'']]],\n  ['language_5fstring_5flimit_11',['LANGUAGE_STRING_LIMIT',['../namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b',1,'tram']]],\n  ['lanugage_5fstring_5fcharacter_5flimit_12',['LANUGAGE_STRING_CHARACTER_LIMIT',['../namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9',1,'tram']]],\n  ['last_13',['last',['../classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1',1,'tram::Hashmap::last()'],['../classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1',1,'tram::Queue::last()'],['../classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0',1,'tram::Stack::last()'],['../classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147',1,'tram::StackPool::last()'],['../classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792',1,'tram::Pool::last()']]],\n  ['last_5factivate_14',['last_activate',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed',1,'tram::Ext::Kitchensink::Button']]],\n  ['last_5fevent_15',['LAST_EVENT',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8',1,'tram::Event']]],\n  ['last_5fmessage_16',['LAST_MESSAGE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303',1,'tram::Message']]],\n  ['last_5fpath_17',['last_path',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f',1,'tram::Audio::Spatial::AudioSource']]],\n  ['last_5fsignal_18',['LAST_SIGNAL',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f',1,'tram::Signal']]],\n  ['last_5ftick_19',['last_tick',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['last_5fupdate_5fframe_20',['last_update_frame',['../namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0',1,'tram::GUI']]],\n  ['lastend_21',['lastend',['../classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7',1,'tram::Stack']]],\n  ['lastfree_22',['lastfree',['../classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014',1,'tram::Pool']]],\n  ['layer_23',['Layer',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc',1,'tram::Ext::Menu::Console::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921',1,'tram::Ext::Menu::Menu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8',1,'tram::Ext::Menu::SystemMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f',1,'tram::Ext::Menu::SettingsMenu::Layer()']]],\n  ['layer_24',['layer',['../classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081',1,'tram::RenderComponent::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e',1,'tram::Render::API::D3DDrawListEntry::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8',1,'tram::Render::API::GLDrawListEntry::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd',1,'tram::Render::API::SWDrawListEntry::layer()']]],\n  ['layer_25',['Layer',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46',1,'tram::Ext::Kitchensink::ListDialog::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200',1,'tram::Ext::Menu::DebugMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4',1,'tram::Ext::Menu::EntityProperties::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413',1,'tram::Ext::Menu::EntityPicker::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439',1,'tram::Ext::Menu::ListSelection::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6',1,'tram::Ext::Menu::MessageSend::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9',1,'tram::Ext::Menu::InterceptMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647',1,'tram::Ext::Menu::WorldCellProperties::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9',1,'tram::Ext::Menu::StatisticsMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af',1,'tram::Ext::Menu::EventEmit::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7',1,'tram::Ext::Menu::SignalMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557',1,'tram::Ext::Menu::Options::Layer()']]],\n  ['layer_5fmask_26',['layer_mask',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0',1,'tram::Ext::Camera::Camera']]],\n  ['layer_5ft_27',['layer_t',['../namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8',1,'tram::Render']]],\n  ['layerparameters_28',['LayerParameters',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html',1,'tram::Render::API']]],\n  ['leaf_29',['leaf',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6',1,'tram::Render::AABB::AABBLeaf']]],\n  ['left_30',['left',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3',1,'tram::AABBTree::Node::left()'],['../structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31',1,'tram::NavmeshNode::left()']]],\n  ['length_31',['length',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c',1,'tram::Audio::Spatial::AudioBuffer']]],\n  ['less_32',['Less',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['lessorequal_33',['LessOrEqual',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['light_34',['light',['../classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9',1,'tram::LightComponent::light()'],['../classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9',1,'tram::Light::light()']]],\n  ['light_35',['Light',['../classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff',1,'tram::Light::Light()'],['../classtram_1_1_light.html',1,'tram::Light'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html',1,'tram::Render::LightTree::Light']]],\n  ['light_2ecpp_36',['light.cpp',['../render_2light_8cpp.html',1,'(Global Namespace)'],['../render_2opengl_2light_8cpp.html',1,'(Global Namespace)'],['../components_2light_8cpp.html',1,'(Global Namespace)'],['../entities_2light_8cpp.html',1,'(Global Namespace)']]],\n  ['light_2eh_37',['light.h',['../components_2light_8h.html',1,'(Global Namespace)'],['../render_2light_8h.html',1,'(Global Namespace)'],['../render_2opengl_2light_8h.html',1,'(Global Namespace)'],['../entities_2light_8h.html',1,'(Global Namespace)']]],\n  ['light_5flist_38',['light_list',['../namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e',1,'tram::Render::API::light_list()'],['../namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8',1,'tram::Render::LightTree::light_list()']]],\n  ['light_5ft_39',['light_t',['../structtram_1_1_render_1_1light__t.html',1,'tram::Render']]],\n  ['light_5ftree_40',['light_tree',['../namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de',1,'tram::Render::API::light_tree()'],['../namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb',1,'tram::Render::LightTree::light_tree()']]],\n  ['light_5ftree_5fids_41',['light_tree_ids',['../namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa',1,'tram::Render::API']]],\n  ['light_5funiform_5fbinding_42',['light_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955',1,'tram::Render::API']]],\n  ['light_5funiform_5fbuffer_43',['light_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32',1,'tram::Render::API']]],\n  ['lightcomponent_44',['LightComponent',['../classtram_1_1_light_component.html',1,'tram']]],\n  ['lightgraph_45',['LightGraph',['../classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def',1,'tram::Render::LightGraph::LightGraph()'],['../classtram_1_1_render_1_1_light_graph.html',1,'tram::Render::LightGraph']]],\n  ['lightmap_46',['lightmap',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c',1,'tram::Ext::Kitchensink::Button::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980',1,'tram::Render::API::D3DDrawListEntry::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14',1,'tram::Render::API::FVFHelper::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1',1,'tram::Render::API::GLDrawListEntry::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635',1,'tram::Render::API::FFPHelper::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055',1,'tram::Render::API::SWDrawListEntry::lightmap()'],['../classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914',1,'tram::RenderComponent::lightmap()'],['../classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7',1,'tram::StaticWorldObject::lightmap()']]],\n  ['lights_47',['lights',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe',1,'tram::Render::API::D3DDrawListEntry::lights()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f',1,'tram::Render::API::GLDrawListEntry::lights()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7',1,'tram::Render::API::SWDrawListEntry::lights()']]],\n  ['lighttex_48',['lighttex',['../structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18',1,'tram::Render::StaticModelVertex']]],\n  ['limit_49',['limit',['../structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138',1,'tram::Signal']]],\n  ['line_5fhigh_50',['LINE_HIGH',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13',1,'tram::GUI']]],\n  ['line_5flow_51',['LINE_LOW',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120',1,'tram::GUI']]],\n  ['line_5fnormal_52',['LINE_NORMAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890',1,'tram::GUI']]],\n  ['line_5fvertex_5ffvf_53',['LINE_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97',1,'tram::Render::API']]],\n  ['linevertex_54',['LineVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html',1,'tram::Render::API::LineVertex'],['../structtram_1_1_render_1_1_line_vertex.html',1,'tram::Render::LineVertex']]],\n  ['linevisible_55',['LineVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b',1,'tram::Render::API']]],\n  ['link_56',['Link',['../classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280',1,'tram::WorldCell']]],\n  ['linkedshader_57',['LinkedShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html',1,'tram::Render::API']]],\n  ['list_58',['list',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd',1,'tram::Ext::Menu::ListSelection']]],\n  ['listdialog_59',['ListDialog',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c',1,'tram::Ext::Kitchensink::ListDialog::ListDialog()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a150d52aef6f1ab1053a824ada7801c1d',1,'tram::Ext::Kitchensink::ListDialog::ListDialog(name_t)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html',1,'tram::Ext::Kitchensink::ListDialog']]],\n  ['listener_60',['listener',['../classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329',1,'tram::EventListener']]],\n  ['listener_5fcomponent_61',['LISTENER_COMPONENT',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99',1,'tram::ListenerInfo']]],\n  ['listener_5fdata_5ffunction_62',['LISTENER_DATA_FUNCTION',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c',1,'tram::ListenerInfo']]],\n  ['listener_5fdeleted_63',['LISTENER_DELETED',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0',1,'tram::ListenerInfo']]],\n  ['listener_5fdepth_5flimit_64',['LISTENER_DEPTH_LIMIT',['../namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af',1,'tram::Audio::Spatial']]],\n  ['listener_5fentity_65',['LISTENER_ENTITY',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b',1,'tram::ListenerInfo']]],\n  ['listener_5ffunction_66',['LISTENER_FUNCTION',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5',1,'tram::ListenerInfo']]],\n  ['listener_5fideal_5fangle_67',['listener_ideal_angle',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['listener_5forientation_68',['listener_orientation',['../namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8',1,'tram::Audio::Spatial']]],\n  ['listener_5fposition_69',['listener_position',['../namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fdelay_70',['listener_reverb_delay',['../namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fdistance_71',['listener_reverb_distance',['../namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fforce_72',['listener_reverb_force',['../namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fnormalized_73',['listener_reverb_normalized',['../namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb',1,'tram::Audio::Spatial']]],\n  ['listener_5ft_74',['listener_t',['../namespacetram.html#abc1aacd663943b92d06f10950a9f10d0',1,'tram']]],\n  ['listenerinfo_75',['ListenerInfo',['../structtram_1_1_listener_info.html',1,'tram']]],\n  ['listenertype_76',['ListenerType',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f',1,'tram::ListenerInfo']]],\n  ['listinventory_77',['ListInventory',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html',1,'tram::Ext::Kitchensink']]],\n  ['listinventorymanager_78',['ListInventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html',1,'tram::Ext::Kitchensink']]],\n  ['listselection_79',['ListSelection',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f',1,'tram::Ext::Menu::ListSelection::ListSelection()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html',1,'tram::Ext::Menu::ListSelection']]],\n  ['listtrade_80',['ListTrade',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html',1,'tram::Ext::Kitchensink']]],\n  ['lit_81',['lit',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84',1,'tram::Render::API::StaticVertex::lit()'],['../main_8cpp.html#a3c4f14ce2eba453f60e455656652a950',1,'lit():&#160;main.cpp']]],\n  ['lit_5fx_82',['lit_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189',1,'tram::Render::API::StaticVertex']]],\n  ['lit_5fy_83',['lit_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19',1,'tram::Render::API::StaticVertex']]],\n  ['load_84',['Load',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f',1,'tram::Ext::Kitchensink::TriggerHurt::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8',1,'tram::Ext::Kitchensink::TriggerOnce::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc',1,'tram::Ext::Kitchensink::TriggerMultiple::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f',1,'tram::Ext::Kitchensink::TriggerPush::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128',1,'tram::Ext::Kitchensink::TriggerRemove::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a',1,'tram::Ext::Kitchensink::TriggerTeleport::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d',1,'tram::Ext::Kitchensink::QuestEntity::Load()'],['../classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386',1,'tram::Entity::Load()'],['../classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826',1,'tram::Resource::Load()'],['../classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6',1,'tram::WorldCell::Load()'],['../classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430',1,'tram::Crate::Load()'],['../classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb',1,'tram::Decoration::Load()'],['../classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0',1,'tram::Light::Load()'],['../classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357',1,'tram::Marker::Load()'],['../classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7',1,'tram::Player::Load()'],['../classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208',1,'tram::Scriptable::Load()'],['../classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391',1,'tram::Sound::Load()'],['../classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc',1,'tram::StaticWorldObject::Load()'],['../classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c',1,'tram::Trigger::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952',1,'tram::Ext::Kitchensink::Button::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e',1,'tram::Ext::Kitchensink::Breakable::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c',1,'tram::Ext::Kitchensink::Water::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76',1,'tram::Ext::Kitchensink::Train::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37',1,'tram::Ext::Kitchensink::Pickup::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472',1,'tram::Ext::Kitchensink::DebugText::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af',1,'tram::Ext::Kitchensink::DebugShape::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925',1,'tram::Ext::Kitchensink::TriggerAutosave::Load()'],['../namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3',1,'tram::Language::Load()'],['../namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181',1,'tram::Settings::Load()']]],\n  ['load_5ffail_85',['load_fail',['../classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59',1,'tram::Resource']]],\n  ['loadall_86',['LoadAll',['../classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd',1,'tram::Render::Animation']]],\n  ['loaddependency_87',['LoadDependency',['../namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f',1,'tram::Async']]],\n  ['loaded_88',['LOADED',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b',1,'tram::Entity::LOADED()'],['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2',1,'tram::Resource::LOADED()'],['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1',1,'tram::WorldCell::LOADED()']]],\n  ['loaded_5ffrom_5fdisk_89',['LOADED_FROM_DISK',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd',1,'tram::Entity::LOADED_FROM_DISK()'],['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d',1,'tram::WorldCell::LOADED_FROM_DISK()']]],\n  ['loader_2ecpp_90',['loader.cpp',['../loader_8cpp.html',1,'']]],\n  ['loader_2eh_91',['loader.h',['../loader_8h.html',1,'']]],\n  ['loadfromdisk_92',['LoadFromDisk',['../classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629',1,'tram::Render::LightGraph::LoadFromDisk()'],['../classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5',1,'tram::Render::Material::LoadFromDisk()'],['../classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f',1,'tram::Render::Model::LoadFromDisk()'],['../classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a',1,'tram::Render::Sprite::LoadFromDisk()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e',1,'tram::Ext::Kitchensink::AttributeContainer::LoadFromDisk()'],['../classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c',1,'tram::Audio::Sound::LoadFromDisk()'],['../classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f',1,'tram::Audio::SoundGraph::LoadFromDisk()'],['../classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33',1,'tram::WorldCell::LoadFromDisk()'],['../classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e',1,'tram::Physics::CollisionModel::LoadFromDisk()'],['../classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7',1,'tram::Render::Animation::LoadFromDisk()'],['../classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14',1,'tram::Resource::LoadFromDisk()'],['../classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c',1,'tram::Path::LoadFromDisk()'],['../classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c',1,'tram::Navmesh::LoadFromDisk()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8',1,'tram::Ext::Kitchensink::Quest::LoadFromDisk()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c',1,'tram::Ext::Kitchensink::Inventory::LoadFromDisk()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a',1,'tram::Ext::Kitchensink::DialogTopic::LoadFromDisk()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2',1,'tram::Ext::Kitchensink::Character::LoadFromDisk()']]],\n  ['loadfrommemory_93',['LoadFromMemory',['../classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650',1,'tram::Audio::SoundGraph::LoadFromMemory()'],['../classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0',1,'tram::Audio::Sound::LoadFromMemory()'],['../classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b',1,'tram::Resource::LoadFromMemory()'],['../classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0',1,'tram::Physics::CollisionModel::LoadFromMemory()'],['../classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c',1,'tram::Render::Sprite::LoadFromMemory()'],['../classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e',1,'tram::Render::Model::LoadFromMemory()'],['../classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744',1,'tram::Render::Material::LoadFromMemory()'],['../classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91',1,'tram::Render::LightGraph::LoadFromMemory()'],['../classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d',1,'tram::Render::Animation::LoadFromMemory()']]],\n  ['loadmaterialinfo_94',['LoadMaterialInfo',['../classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a',1,'tram::Render::Material']]],\n  ['loadresourcesfromdisk_95',['LoadResourcesFromDisk',['../namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503',1,'tram::Async']]],\n  ['loadresourcesfrommemory_96',['LoadResourcesFromMemory',['../namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de',1,'tram::Async']]],\n  ['loadscript_97',['LoadScript',['../namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a',1,'tram::Script::LoadScript()'],['../classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434',1,'tram::Script::Interface::LoadScript()']]],\n  ['location_98',['location',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9',1,'tram::Render::API::GLLight::location()'],['../classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464',1,'tram::AudioComponent::location()'],['../classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e',1,'tram::DecalComponent::location()'],['../classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1',1,'tram::LightComponent::location()'],['../classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377',1,'tram::ParticleComponent::location()'],['../classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72',1,'tram::RenderComponent::location()'],['../classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b',1,'tram::SpriteComponent::location()'],['../classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c',1,'tram::Entity::location()'],['../structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc',1,'tram::Render::Keyframe::location()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b',1,'tram::Render::API::D3DLight::location()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e',1,'tram::Render::API::SWLight::location()']]],\n  ['lock_99',['lock',['../classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8',1,'tram::Queue::lock()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442',1,'tram::Audio::Spatial::AudioRender::lock()']]],\n  ['lock_100',['Lock',['../classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864',1,'tram::Spinlock']]],\n  ['lock_101',['LOCK',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760',1,'tram::Message']]],\n  ['locked_5fuse_102',['LOCKED_USE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78',1,'tram::Signal']]],\n  ['lockrenderlist_103',['LockRenderlist',['../namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4',1,'tram::Audio::Spatial']]],\n  ['log_104',['Log',['../namespacetram.html#a78660be0737c048109e94b12da8376c1',1,'tram::Log(Severity severity, System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)'],['../namespacetram.html#ab55eb49c2df70f400895dab88b146d00',1,'tram::Log(System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)'],['../namespacetram.html#a1d9753464d0d21a28f513716fa797cd8',1,'tram::Log(const std::string_view &amp;format, Args &amp;&amp;... args)']]],\n  ['log_105',['log',['../namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d',1,'tram::implementation::log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format)'],['../namespacetram_1_1implementation.html#aaddb11c3ce07c8bbb6e9dc206f13fff3',1,'tram::implementation::log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format, T &amp;value, Args &amp;&amp;... args)']]],\n  ['logging_2ecpp_106',['logging.cpp',['../logging_8cpp.html',1,'']]],\n  ['logging_2eh_107',['logging.h',['../logging_8h.html',1,'']]],\n  ['logintercept_108',['LogIntercept',['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html',1,'tram::Ext::Menu']]],\n  ['look_5fat_109',['LOOK_AT',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d',1,'tram::Event']]],\n  ['look_5fat_5fdirection_110',['look_at_direction',['../namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e',1,'tram::Ext::Camera']]],\n  ['look_5fat_5fentity_111',['look_at_entity',['../namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18',1,'tram::Ext::Camera']]],\n  ['look_5fdirection_112',['look_direction',['../classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750',1,'tram::ControllerComponent']]],\n  ['lookupenvironmentmap_113',['LookupEnvironmentMap',['../classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351',1,'tram::Render::LightGraph']]],\n  ['lookupfilter_114',['LookupFilter',['../classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f',1,'tram::Audio::SoundGraph']]],\n  ['lookupharmonic_115',['LookupHarmonic',['../classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a',1,'tram::Render::LightGraph']]],\n  ['loyalty_116',['loyalty',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347',1,'tram::Ext::Kitchensink::FactionRank::loyalty()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806',1,'tram::Ext::Kitchensink::BaseFactionRank::loyalty()']]],\n  ['lua_117',['Lua',['../classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html',1,'tram::Ext::Scripting::Lua']]],\n  ['lua_2ecpp_118',['lua.cpp',['../lua_8cpp.html',1,'']]],\n  ['lua_2eh_119',['lua.h',['../lua_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_d.js",
    "content": "var searchData=\n[\n  ['macros_2eh_0',['macros.h',['../macros_8h.html',1,'']]],\n  ['main_1',['main',['../main_8cpp.html#a217dbf8b442f20279ea00b898af96f52',1,'main.cpp']]],\n  ['main_2ecpp_2',['main.cpp',['../main_8cpp.html',1,'']]],\n  ['mainloop_3',['mainloop',['../main_8cpp.html#a896df4ffe3f986ad843e4d191cd712b3',1,'main.cpp']]],\n  ['make_4',['make',['../classtram_1_1_event_listener.html#afabda0702b19ce175e7603c6e3624ea1',1,'tram::EventListener']]],\n  ['make_5',['Make',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416',1,'tram::Ext::Kitchensink::AIPackage::Make()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f',1,'tram::Ext::Kitchensink::DialogTopic::Make()'],['../classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9',1,'tram::Entity::Make(name_t type, File *file)'],['../classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333',1,'tram::Entity::Make(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)'],['../classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c',1,'tram::Transition::Make()'],['../classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041',1,'tram::WorldCell::Make()'],['../classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d',1,'tram::Render::Material::Make()'],['../namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b',1,'tram::ScriptableType::Make()']]],\n  ['make_6',['make',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e',1,'tram::Ext::Kitchensink::InventoryFactoryInfo::make()'],['../classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9',1,'tram::Component::make()'],['../classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec',1,'tram::EventListener::make(event_t event, Entity *parent)'],['../classtram_1_1_event_listener.html#a53f1f1eb7860d9f8e2138c0b605cbefc',1,'tram::EventListener::make(event_t event, EntityComponent *parent)']]],\n  ['makeaudiobuffer_7',['MakeAudioBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0',1,'tram::Audio::API']]],\n  ['makeaudiosource_8',['MakeAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b',1,'tram::Audio::API']]],\n  ['makecollisionshape_9',['MakeCollisionShape',['../namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612',1,'tram::Physics::API::MakeCollisionShape(CollisionShapeTransform *shapes, size_t shape_count)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a871da86313d2f9e88539c71940ac8e89',1,'tram::Physics::API::MakeCollisionShape(CollisionShape shape)']]],\n  ['makelight_10',['MakeLight',['../namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85',1,'tram::Render::API']]],\n  ['makematerial_11',['MakeMaterial',['../namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276',1,'tram::Render::API']]],\n  ['makenewerrormodel_12',['MakeNewErrorModel',['../namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e',1,'tram::Render']]],\n  ['makenewerrortexture_13',['MakeNewErrorTexture',['../namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37',1,'tram::Render']]],\n  ['makepattern_14',['MakePattern',['../classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7',1,'tram::Render::Material']]],\n  ['makerigidbody_15',['MakeRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277',1,'tram::Physics::API']]],\n  ['makesomesourcepaths_16',['MakeSomeSourcePaths',['../namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576',1,'tram::Audio::Spatial']]],\n  ['makespans_17',['MakeSpans',['../namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869',1,'tram::Render::API']]],\n  ['maketrigger_18',['MakeTrigger',['../namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d',1,'tram::Physics::API']]],\n  ['makeuniformbuffer_19',['MakeUniformBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e',1,'tram::Render::API']]],\n  ['marker_20',['Marker',['../classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1',1,'tram::Marker::Marker()'],['../classtram_1_1_marker.html',1,'tram::Marker']]],\n  ['marker_2ecpp_21',['marker.cpp',['../marker_8cpp.html',1,'']]],\n  ['marker_2eh_22',['marker.h',['../marker_8h.html',1,'']]],\n  ['mat2_23',['mat2',['../namespacetram.html#a1449f767374f220889ec5253470ac9d9',1,'tram']]],\n  ['mat4_24',['mat4',['../namespacetram.html#aa105cf31ac2e470934e6b0827a14d942',1,'tram']]],\n  ['material_25',['Material',['../classtram_1_1_render_1_1_material.html#a7953b137f0390f6e729efe9e9cf86aa3',1,'tram::Render::Material::Material(name_t name, materialtype_t type)'],['../classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441',1,'tram::Render::Material::Material(name_t name)']]],\n  ['material_26',['material',['../classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197',1,'tram::Render::Material::material()'],['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75',1,'tram::Render::AABBTriangle::material()'],['../classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b',1,'tram::Render::Sprite::material()']]],\n  ['material_27',['Material',['../classtram_1_1_render_1_1_material.html',1,'tram::Render']]],\n  ['material_2ecpp_28',['material.cpp',['../material_8cpp.html',1,'(Global Namespace)'],['../opengl_2material_8cpp.html',1,'(Global Namespace)']]],\n  ['material_2eh_29',['material.h',['../opengl_2material_8h.html',1,'(Global Namespace)'],['../material_8h.html',1,'(Global Namespace)']]],\n  ['material_5fcount_30',['material_count',['../structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196',1,'tram::Render::IndexRange']]],\n  ['material_5fenvironmentmap_31',['MATERIAL_ENVIRONMENTMAP',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d',1,'tram::Render']]],\n  ['material_5fflat_5fcolor_32',['MATERIAL_FLAT_COLOR',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943',1,'tram::Render']]],\n  ['material_5fglyph_33',['MATERIAL_GLYPH',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004',1,'tram::Render']]],\n  ['material_5flast_34',['MATERIAL_LAST',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f',1,'tram::Render']]],\n  ['material_5flightmap_35',['MATERIAL_LIGHTMAP',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605',1,'tram::Render']]],\n  ['material_5fmsdf_36',['MATERIAL_MSDF',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f',1,'tram::Render']]],\n  ['material_5ft_37',['material_t',['../structtram_1_1_render_1_1material__t.html',1,'tram::Render']]],\n  ['material_5ftexture_38',['MATERIAL_TEXTURE',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632',1,'tram::Render']]],\n  ['material_5ftexture_5falpha_39',['MATERIAL_TEXTURE_ALPHA',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac',1,'tram::Render']]],\n  ['material_5ftype_40',['material_type',['../structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f',1,'tram::Render::TriangleBucket::material_type()'],['../structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205',1,'tram::Render::IndexRange::material_type()']]],\n  ['material_5fwater_41',['MATERIAL_WATER',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc',1,'tram::Render']]],\n  ['materialfilter_42',['MaterialFilter',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c',1,'tram::Render']]],\n  ['materialproperty_43',['MaterialProperty',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f',1,'tram::Render']]],\n  ['materials_44',['materials',['../classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1',1,'tram::Render::Model::materials()'],['../structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088',1,'tram::Render::TriangleBucket::materials()'],['../structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320',1,'tram::Render::IndexRange::materials()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18',1,'tram::Render::API::GLDrawListEntry::materials()']]],\n  ['materialtype_5ft_45',['materialtype_t',['../namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc',1,'tram::Render']]],\n  ['materialtypes_46',['MaterialTypes',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e',1,'tram::Render']]],\n  ['math_2ecpp_47',['math.cpp',['../math_8cpp.html',1,'']]],\n  ['math_2eh_48',['math.h',['../math_8h.html',1,'']]],\n  ['matrices_49',['matrices',['../namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7',1,'tram::Render::API']]],\n  ['matrix_50',['matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360',1,'tram::Render::API::SWDrawListEntry::matrix()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4',1,'tram::Render::API::GLDrawListEntry::matrix()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f',1,'tram::Render::API::D3DDrawListEntry::matrix()']]],\n  ['matrix_5funiform_5fbinding_51',['matrix_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0',1,'tram::Render::API']]],\n  ['matrix_5funiform_5fbuffer_52',['matrix_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d',1,'tram::Render::API']]],\n  ['max_53',['max',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc',1,'tram::AABBTree::Node']]],\n  ['max_5fevent_5ftypes_54',['MAX_EVENT_TYPES',['../namespacetram.html#a67acb96d23f8bfea55638bc35178d08d',1,'tram']]],\n  ['max_5ffragment_5fshaders_55',['MAX_FRAGMENT_SHADERS',['../namespacetram.html#ac5209551801f3515acbdabc46e957f45',1,'tram']]],\n  ['max_5flinked_5fshaders_56',['MAX_LINKED_SHADERS',['../namespacetram.html#af6d768de9b8d7f850907e74b15f654ab',1,'tram']]],\n  ['max_5flua_5ffunctions_57',['MAX_LUA_FUNCTIONS',['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952',1,'tram::Ext::Scripting::Lua']]],\n  ['max_5fmaterial_5ftypes_58',['MAX_MATERIAL_TYPES',['../namespacetram.html#a917f372f74717cd689223239e73f0ec5',1,'tram']]],\n  ['max_5fsize_59',['max_size',['../classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa',1,'tram::Hashmap']]],\n  ['max_5fvertex_5fformats_60',['MAX_VERTEX_FORMATS',['../namespacetram.html#a7bc148b33d35076ac28624e78c06e32f',1,'tram']]],\n  ['max_5fvertex_5fshaders_61',['MAX_VERTEX_SHADERS',['../namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5',1,'tram']]],\n  ['maxsize_62',['maxSize',['../classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805',1,'tram::Pool']]],\n  ['maybe_5fflag_63',['maybe_flag',['../structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28',1,'tram::Settings::RawSetting']]],\n  ['medium_64',['medium',['../structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63',1,'tram::FileSource']]],\n  ['memory_5fend_65',['memory_end',['../classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37',1,'tram::Queue']]],\n  ['memory_5fstart_66',['memory_start',['../classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390',1,'tram::Queue']]],\n  ['menu_67',['MENU',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273',1,'tram::Settings']]],\n  ['menu_68',['Menu',['../classtram_1_1_ext_1_1_menu_1_1_menu.html',1,'tram::Ext::Menu']]],\n  ['menu_2ecpp_69',['menu.cpp',['../kitchensink_2menu_8cpp.html',1,'(Global Namespace)'],['../menu_2menu_8cpp.html',1,'(Global Namespace)']]],\n  ['menu_2eh_70',['menu.h',['../kitchensink_2menu_8h.html',1,'(Global Namespace)'],['../menu_2menu_8h.html',1,'(Global Namespace)']]],\n  ['menu_5flist_71',['menu_list',['../namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113',1,'tram::Ext::Menu']]],\n  ['menu_5fstack_72',['menu_stack',['../namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014',1,'tram::Ext::Menu']]],\n  ['menu_5fsystem_73',['MENU_SYSTEM',['../namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674',1,'tram::Ext::Menu']]],\n  ['mergeaabbmax_74',['MergeAABBMax',['../namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888',1,'tram::MergeAABBMax()'],['../classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291',1,'tram::AABBTree::MergeAABBMax(vec3 a, vec3 b)']]],\n  ['mergeaabbmin_75',['MergeAABBMin',['../classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609',1,'tram::AABBTree::MergeAABBMin()'],['../namespacetram.html#a47d29b14ffc788f302abead903c46544',1,'tram::MergeAABBMin()']]],\n  ['mesh_76',['Mesh',['../structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096',1,'tram::Physics::CollisionShape']]],\n  ['mesh_5fsize_77',['mesh_size',['../structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7',1,'tram::Physics::CollisionShape']]],\n  ['mesh_5ftriangles_78',['mesh_triangles',['../structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c',1,'tram::Physics::CollisionShape']]],\n  ['message_79',['message',['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0',1,'tram::Ext::Menu::LogIntercept']]],\n  ['message_80',['Message',['../structtram_1_1_message.html',1,'tram']]],\n  ['message_2ecpp_81',['message.cpp',['../message_8cpp.html',1,'']]],\n  ['message_2eh_82',['message.h',['../message_8h.html',1,'']]],\n  ['message_5fdata_5flimit_83',['MESSAGE_DATA_LIMIT',['../namespacetram.html#a3e23af0f990c870da7822e6160160173',1,'tram']]],\n  ['message_5fpriority_5fqueue_5flimit_84',['MESSAGE_PRIORITY_QUEUE_LIMIT',['../namespacetram.html#a2b1778620231829d63a83b6c451b60c2',1,'tram']]],\n  ['message_5fqueue_5flimit_85',['MESSAGE_QUEUE_LIMIT',['../namespacetram.html#a13df257c04982a0237aed3b1d1a18388',1,'tram']]],\n  ['message_5ft_86',['message_t',['../namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0',1,'tram']]],\n  ['message_5ftype_87',['message_type',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03',1,'tram::Ext::Menu::MessageSend::message_type()'],['../structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9',1,'tram::Signal::message_type()']]],\n  ['message_5ftype_5flimit_88',['MESSAGE_TYPE_LIMIT',['../namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b',1,'tram']]],\n  ['messagehandler_89',['MessageHandler',['../classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2',1,'tram::Trigger::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d',1,'tram::Ext::Kitchensink::Button::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4',1,'tram::Ext::Kitchensink::Breakable::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0',1,'tram::Ext::Kitchensink::TriggerMultiple::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab',1,'tram::Ext::Kitchensink::Train::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef',1,'tram::Ext::Kitchensink::TriggerRemove::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7',1,'tram::Ext::Kitchensink::TriggerPush::MessageHandler()'],['../classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa',1,'tram::Light::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77',1,'tram::Ext::Kitchensink::TriggerOnce::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49',1,'tram::Ext::Kitchensink::TriggerHurt::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f',1,'tram::Ext::Kitchensink::TriggerAutosave::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0',1,'tram::Ext::Kitchensink::DebugShape::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450',1,'tram::Ext::Kitchensink::DebugText::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932',1,'tram::Ext::Kitchensink::Pickup::MessageHandler()'],['../classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb',1,'tram::Entity::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b',1,'tram::Ext::Kitchensink::QuestEntity::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd',1,'tram::Ext::Kitchensink::TriggerTeleport::MessageHandler()'],['../classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38',1,'tram::StaticWorldObject::MessageHandler()'],['../classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9',1,'tram::Sound::MessageHandler()'],['../classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200',1,'tram::Scriptable::MessageHandler()'],['../classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2',1,'tram::Player::MessageHandler()'],['../classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df',1,'tram::Marker::MessageHandler()'],['../classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f',1,'tram::Decoration::MessageHandler()'],['../classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86',1,'tram::Crate::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef',1,'tram::Ext::Kitchensink::Water::MessageHandler()']]],\n  ['messageintercept_90',['MessageIntercept',['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html',1,'tram::Ext::Menu']]],\n  ['messagesend_91',['MessageSend',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html',1,'tram::Ext::Menu']]],\n  ['metadata_5frigidbody_92',['METADATA_RIGIDBODY',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818',1,'tram::Physics::API']]],\n  ['metadata_5ftrigger_93',['METADATA_TRIGGER',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04',1,'tram::Physics::API']]],\n  ['metadatatype_94',['MetadataType',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0',1,'tram::Physics::API']]],\n  ['mid_5fpoint_95',['mid_point',['../structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1',1,'tram::Octree::Node']]],\n  ['midpoint_5fx_96',['midpoint_x',['../structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03',1,'tram::Render::SpriteFrame']]],\n  ['midpoint_5fy_97',['midpoint_y',['../structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64',1,'tram::Render::SpriteFrame']]],\n  ['min_98',['min',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113',1,'tram::AABBTree::Node']]],\n  ['misc_99',['MISC',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207',1,'tram::System']]],\n  ['mode_100',['mode',['../classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9',1,'tram::File::mode()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44',1,'tram::Render::API::SWTexture::mode()']]],\n  ['model_101',['model',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117',1,'tram::Ext::Kitchensink::TriggerTeleport::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::model()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce',1,'tram::Render::API::ShaderUniformModelMatrices::model()'],['../classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b',1,'tram::RenderComponent::model()'],['../classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025',1,'tram::AnimationComponent::model()'],['../classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84',1,'tram::AudioComponent::model()'],['../classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28',1,'tram::LightComponent::model()'],['../classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96',1,'tram::Crate::model()'],['../classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053',1,'tram::Decoration::model()']]],\n  ['model_102',['Model',['../classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822',1,'tram::Render::Model']]],\n  ['model_103',['model',['../classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b',1,'tram::StaticWorldObject::model()'],['../classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d',1,'tram::Trigger::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550',1,'tram::Ext::Kitchensink::Button::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4',1,'tram::Ext::Kitchensink::Breakable::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21',1,'tram::Ext::Kitchensink::Water::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a',1,'tram::Ext::Kitchensink::Train::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279',1,'tram::Ext::Kitchensink::Pickup::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27',1,'tram::Ext::Kitchensink::DebugText::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc',1,'tram::Ext::Kitchensink::DebugShape::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902',1,'tram::Ext::Kitchensink::TriggerAutosave::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c',1,'tram::Ext::Kitchensink::TriggerHurt::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7',1,'tram::Ext::Kitchensink::TriggerOnce::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4',1,'tram::Ext::Kitchensink::TriggerMultiple::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877',1,'tram::Ext::Kitchensink::TriggerPush::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb',1,'tram::Ext::Kitchensink::TriggerRemove::model()']]],\n  ['model_104',['Model',['../classtram_1_1_render_1_1_model.html',1,'tram::Render']]],\n  ['model_2ecpp_105',['model.cpp',['../model_8cpp.html',1,'']]],\n  ['model_2eh_106',['model.h',['../model_8h.html',1,'']]],\n  ['model_5faabb_107',['model_aabb',['../classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01',1,'tram::Render::Model']]],\n  ['model_5fdata_108',['model_data',['../classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167',1,'tram::Render::Model']]],\n  ['model_5fmatrix_5funiform_5fbinding_109',['model_matrix_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd',1,'tram::Render::API']]],\n  ['model_5fmatrix_5funiform_5fbuffer_110',['model_matrix_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec',1,'tram::Render::API']]],\n  ['modelaabb_111',['ModelAABB',['../structtram_1_1_render_1_1_model_a_a_b_b.html',1,'tram::Render']]],\n  ['modeldata_112',['ModelData',['../structtram_1_1_render_1_1_model_data.html',1,'tram::Render']]],\n  ['modellights_113',['modelLights',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['modelmatrices_114',['modelMatrices',['../namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598',1,'tram::Render::API']]],\n  ['monguser_115',['monguser',['../main_8cpp.html#a9968db2fbe46c1d2ce9a76ccdff7929c',1,'main.cpp']]],\n  ['monguser_5farmature_116',['monguser_armature',['../main_8cpp.html#ac2200d84471744e6d70ce13d0835a5c9',1,'main.cpp']]],\n  ['motion_5fstate_117',['motion_state',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['mouse_5fclick_5fnot_5fhandled_118',['mouse_click_not_handled',['../namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca',1,'tram::GUI']]],\n  ['mouse_5fclick_5fnot_5fhandled_5flate_119',['mouse_click_not_handled_late',['../namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6',1,'tram::GUI']]],\n  ['mouselook_120',['mouselook',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['move_121',['Move',['../classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0',1,'tram::RaycastControllerComponent::Move()'],['../classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6',1,'tram::ControllerComponent::Move()'],['../classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825',1,'tram::FPSControllerComponent::Move(vec3 local_direction) override']]],\n  ['move_5fdirection_122',['move_direction',['../classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656',1,'tram::FPSControllerComponent::move_direction()'],['../classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4',1,'tram::RaycastControllerComponent::move_direction()']]],\n  ['move_5fmagnitude_123',['move_magnitude',['../classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae',1,'tram::RaycastControllerComponent']]],\n  ['move_5fpick_5fup_124',['MOVE_PICK_UP',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107',1,'tram::Message']]],\n  ['moveto_125',['MoveTo',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226',1,'tram::Ext::Kitchensink::DialogController']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_e.js",
    "content": "var searchData=\n[\n  ['name_0',['name',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61',1,'tram::Ext::Kitchensink::AnimStateSpace::name()'],['../classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83',1,'tram::Resource::name()'],['../classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f',1,'tram::Path::name()'],['../classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f',1,'tram::Navmesh::name()'],['../structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1',1,'tram::SharedEntityData::name()'],['../classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140',1,'tram::Entity::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7',1,'tram::Ext::Kitchensink::Quest::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8',1,'tram::Ext::Kitchensink::QuestTrigger::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37',1,'tram::Ext::Kitchensink::AnimState::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b',1,'tram::Ext::Kitchensink::Attribute::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a',1,'tram::Ext::Kitchensink::Effect::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48',1,'tram::Ext::Kitchensink::AttributeInfo::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f',1,'tram::Ext::Kitchensink::Faction::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719',1,'tram::Ext::Kitchensink::BaseAttribute::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c',1,'tram::Ext::Kitchensink::DialogTopic::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe',1,'tram::Ext::Kitchensink::ItemClass::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd',1,'tram::Ext::Kitchensink::QuestVariable::name()'],['../structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87',1,'tram::Settings::SettingInfo::name()'],['../structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848',1,'tram::System::SystemInfo::name()'],['../classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0',1,'tram::Transition::name()'],['../classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05',1,'tram::WorldCell::name()'],['../structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84',1,'tram::Render::Bone::name()'],['../classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb',1,'tram::Hashmap::name()'],['../classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd',1,'tram::Queue::name()'],['../classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28',1,'tram::StackPool::name()']]],\n  ['name_5fptr_1',['name_ptr',['../classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646',1,'tram::ValuePtr']]],\n  ['name_5ft_2',['name_t',['../namespacetram.html#ad77b577436f476438699a1c4da9d549c',1,'tram']]],\n  ['name_5fvalue_3',['name_value',['../classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105',1,'tram::Value']]],\n  ['namecount_4',['NameCount',['../namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287',1,'tram::Render']]],\n  ['named_5fentity_5flimit_5',['NAMED_ENTITY_LIMIT',['../namespacetram.html#a746e6432794113f984198f336d8cce65',1,'tram']]],\n  ['navmesh_6',['Navmesh',['../classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559',1,'tram::Navmesh::Navmesh()'],['../classtram_1_1_navmesh.html',1,'tram::Navmesh']]],\n  ['navmesh_2ecpp_7',['navmesh.cpp',['../navmesh_8cpp.html',1,'']]],\n  ['navmesh_2eh_8',['navmesh.h',['../navmesh_8h.html',1,'']]],\n  ['navmeshnode_9',['NavmeshNode',['../structtram_1_1_navmesh_node.html',1,'tram']]],\n  ['near_5fplane_10',['near_plane',['../namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f',1,'tram::Render']]],\n  ['nearest_11',['nearest',['../structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470',1,'tram::Octree::NearestSearch']]],\n  ['nearestsearch_12',['NearestSearch',['../structtram_1_1_octree_1_1_nearest_search.html',1,'tram::Octree']]],\n  ['new_13',['New',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c',1,'tram::Ext::Kitchensink::InventoryManager::New()'],['../classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a',1,'tram::PoolProxy::New()']]],\n  ['newline_14',['NewLine',['../namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507',1,'tram::GUI']]],\n  ['newnode_15',['NewNode',['../classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8',1,'tram::Octree']]],\n  ['next_16',['next',['../structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2',1,'tram::NavmeshNode::next()'],['../classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53',1,'tram::PathFollower::next()']]],\n  ['next_5fstate_17',['next_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['next_5ftopics_18',['next_topics',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['no_5fquote_19',['no_quote',['../structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47',1,'tram::UID']]],\n  ['node_20',['Node',['../structtram_1_1_a_a_b_b_tree_1_1_node.html',1,'tram::AABBTree::Node'],['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html',1,'tram::Audio::SoundGraph::Node'],['../structtram_1_1_node.html',1,'tram::Node'],['../structtram_1_1_octree_1_1_node.html',1,'tram::Octree&lt; T &gt;::Node'],['../structtram_1_1_render_1_1_light_graph_1_1_node.html',1,'tram::Render::LightGraph::Node']]],\n  ['node_5fid_5ft_21',['node_id_t',['../namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c',1,'tram']]],\n  ['nodes_22',['nodes',['../classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e',1,'tram::Audio::SoundGraph::nodes()'],['../classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d',1,'tram::Graph::nodes()'],['../classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7',1,'tram::Navmesh::nodes()'],['../classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2',1,'tram::Render::LightGraph::nodes()'],['../classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65',1,'tram::Octree::nodes()']]],\n  ['non_5fpersistent_23',['NON_PERSISTENT',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295',1,'tram::Entity']]],\n  ['non_5fserializable_24',['NON_SERIALIZABLE',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3',1,'tram::Entity']]],\n  ['none_25',['NONE',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77',1,'tram::Event::NONE()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748',1,'tram::Message::NONE()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4',1,'tram::Signal::NONE()'],['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530',1,'tram::Settings::NONE()'],['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725',1,'tram::Async::NONE()']]],\n  ['normal_26',['normal',['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403',1,'tram::Physics::API::ObjectCollision::normal()'],['../structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b',1,'tram::Physics::Collision::normal()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4',1,'tram::Render::API::FVFHelper::normal()'],['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b',1,'tram::Render::AABBTriangle::normal()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92',1,'tram::Render::StaticModelVertex::normal()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520',1,'tram::Render::DynamicModelVertex::normal()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664',1,'tram::Render::API::FFPHelper::normal()']]],\n  ['not_27',['Not',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['notification_5ftype_28',['notification_type',['../structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2',1,'tram::Async::ResourceRequest']]],\n  ['nrm_29',['nrm',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124',1,'tram::Render::API::StaticVertex::nrm()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140',1,'tram::Render::API::DynamicVertex::nrm()']]],\n  ['nrm_5fx_30',['nrm_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd',1,'tram::Render::API::StaticVertex::nrm_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925',1,'tram::Render::API::DynamicVertex::nrm_x()']]],\n  ['nrm_5fy_31',['nrm_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686',1,'tram::Render::API::StaticVertex::nrm_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b',1,'tram::Render::API::DynamicVertex::nrm_y()']]],\n  ['nrm_5fz_32',['nrm_z',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910',1,'tram::Render::API::StaticVertex::nrm_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249',1,'tram::Render::API::DynamicVertex::nrm_z()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/all_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"all_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/all_f.js",
    "content": "var searchData=\n[\n  ['objectcollision_0',['ObjectCollision',['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html',1,'tram::Physics::API']]],\n  ['objective_1',['objective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['objective_2',['Objective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['octant_3',['Octant',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321',1,'tram::Octree']]],\n  ['octant_5fbottom_5fleft_5fback_4',['OCTANT_BOTTOM_LEFT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122',1,'tram::Octree']]],\n  ['octant_5fbottom_5fleft_5ffront_5',['OCTANT_BOTTOM_LEFT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716',1,'tram::Octree']]],\n  ['octant_5fbottom_5fright_5fback_6',['OCTANT_BOTTOM_RIGHT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9',1,'tram::Octree']]],\n  ['octant_5fbottom_5fright_5ffront_7',['OCTANT_BOTTOM_RIGHT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9',1,'tram::Octree']]],\n  ['octant_5ftop_5fleft_5fback_8',['OCTANT_TOP_LEFT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02',1,'tram::Octree']]],\n  ['octant_5ftop_5fleft_5ffront_9',['OCTANT_TOP_LEFT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc',1,'tram::Octree']]],\n  ['octant_5ftop_5fright_5fback_10',['OCTANT_TOP_RIGHT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494',1,'tram::Octree']]],\n  ['octant_5ftop_5fright_5ffront_11',['OCTANT_TOP_RIGHT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a',1,'tram::Octree']]],\n  ['octants_12',['octants',['../structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d',1,'tram::Octree::Node']]],\n  ['octree_13',['Octree',['../classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30',1,'tram::Octree::Octree()'],['../classtram_1_1_octree.html',1,'tram::Octree&lt; T &gt;']]],\n  ['octree_2eh_14',['octree.h',['../octree_8h.html',1,'']]],\n  ['offset_15',['offset',['../structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63',1,'tram::Render::VertexAttribute::offset()'],['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c',1,'tram::Ext::Menu::InterceptMenu::offset()']]],\n  ['offset_5fx_16',['offset_x',['../structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0',1,'tram::Render::SpriteFrame']]],\n  ['offset_5fy_17',['offset_y',['../structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e',1,'tram::Render::SpriteFrame']]],\n  ['onadded_18',['OnAdded',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onequip_19',['OnEquip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onidle_20',['OnIdle',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onprimaryaction_21',['OnPrimaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onremoved_22',['OnRemoved',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onsecondaryaction_23',['OnSecondaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onunequip_24',['OnUnequip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['open_25',['OPEN',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af',1,'tram::Message::OPEN()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927',1,'tram::Signal::OPEN()']]],\n  ['openal_2ecpp_26',['openal.cpp',['../openal_8cpp.html',1,'']]],\n  ['openal_2eh_27',['openal.h',['../openal_8h.html',1,'']]],\n  ['operator_20bool_28',['operator bool',['../classtram_1_1_component.html#ac42050ff047751f66c1549099461d047',1,'tram::Component::operator bool()'],['../classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4',1,'tram::EventListener::operator bool()'],['../classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071',1,'tram::ResourceProxy::operator bool()'],['../structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d',1,'tram::UID::operator bool()'],['../classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520',1,'tram::Value::operator bool()'],['../classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2',1,'tram::PoolPtr::operator bool()']]],\n  ['operator_20bool_20_2a_29',['operator bool *',['../classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4',1,'tram::ValuePtr']]],\n  ['operator_20char_20const_20_2a_30',['operator char const *',['../structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9',1,'tram::UID']]],\n  ['operator_20const_20char_20_2a_31',['operator const char *',['../classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe',1,'tram::Value']]],\n  ['operator_20const_20char_20_2a_2a_32',['operator const char **',['../classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967',1,'tram::ValuePtr']]],\n  ['operator_20double_33',['operator double',['../classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470',1,'tram::Value']]],\n  ['operator_20float_34',['operator float',['../classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0',1,'tram::Value']]],\n  ['operator_20float_20_2a_35',['operator float *',['../classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b',1,'tram::ValuePtr']]],\n  ['operator_20int16_5ft_36',['operator int16_t',['../classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f',1,'tram::Value']]],\n  ['operator_20int32_5ft_37',['operator int32_t',['../classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69',1,'tram::Value']]],\n  ['operator_20int32_5ft_20_2a_38',['operator int32_t *',['../classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86',1,'tram::ValuePtr']]],\n  ['operator_20int64_5ft_39',['operator int64_t',['../classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85',1,'tram::Value']]],\n  ['operator_20int8_5ft_40',['operator int8_t',['../classtram_1_1_value.html#aa919d5718da818826402272ff33bf164',1,'tram::Value']]],\n  ['operator_20name_5ft_41',['operator name_t',['../classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9',1,'tram::Value']]],\n  ['operator_20name_5ft_20_2a_42',['operator name_t *',['../classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5',1,'tram::ValuePtr']]],\n  ['operator_20quat_43',['operator quat',['../classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2',1,'tram::Value']]],\n  ['operator_20quat_20_2a_44',['operator quat *',['../classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0',1,'tram::ValuePtr']]],\n  ['operator_20t_45',['operator T',['../structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0',1,'tram::Settings::Property']]],\n  ['operator_20t_2a_46',['operator T*',['../classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd',1,'tram::Component']]],\n  ['operator_20uint16_5ft_47',['operator uint16_t',['../classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748',1,'tram::Value']]],\n  ['operator_20uint32_5ft_48',['operator uint32_t',['../classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154',1,'tram::Value']]],\n  ['operator_20uint32_5ft_20_2a_49',['operator uint32_t *',['../classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7',1,'tram::ValuePtr']]],\n  ['operator_20uint64_5ft_50',['operator uint64_t',['../classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577',1,'tram::Value']]],\n  ['operator_20uint8_5ft_51',['operator uint8_t',['../classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987',1,'tram::Value']]],\n  ['operator_20value_52',['operator Value',['../classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8',1,'tram::ValuePtr']]],\n  ['operator_20vec2_53',['operator vec2',['../classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175',1,'tram::Value']]],\n  ['operator_20vec2_20_2a_54',['operator vec2 *',['../classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108',1,'tram::ValuePtr']]],\n  ['operator_20vec3_55',['operator vec3',['../classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45',1,'tram::Value']]],\n  ['operator_20vec3_20_2a_56',['operator vec3 *',['../classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45',1,'tram::ValuePtr']]],\n  ['operator_20vec4_57',['operator vec4',['../classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189',1,'tram::Value']]],\n  ['operator_20vec4_20_2a_58',['operator vec4 *',['../classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063',1,'tram::ValuePtr']]],\n  ['operator_21_3d_59',['operator!=',['../structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386',1,'tram::Pool::iterator']]],\n  ['operator_2a_60',['operator*',['../structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf',1,'tram::Pool::iterator::operator*()'],['../classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb',1,'tram::PoolPtr::operator*()'],['../classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e',1,'tram::Component::operator*()'],['../classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b',1,'tram::ResourceProxy::operator*()']]],\n  ['operator_2b_2b_61',['operator++',['../structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8',1,'tram::Pool::iterator::operator++()'],['../structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302',1,'tram::Pool::iterator::operator++(int)']]],\n  ['operator_2d_3e_62',['operator-&gt;',['../classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127',1,'tram::Component::operator-&gt;()'],['../classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11',1,'tram::ResourceProxy::operator-&gt;()'],['../structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb',1,'tram::Pool::iterator::operator-&gt;()'],['../classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e',1,'tram::PoolPtr::operator-&gt;()']]],\n  ['operator_3d_63',['operator=',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b',1,'tram::Ext::Kitchensink::QuestVariable::operator=()'],['../classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9',1,'tram::ResourceProxy::operator=()'],['../structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e',1,'tram::UID::operator=()'],['../classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889',1,'tram::Value::operator=()']]],\n  ['operator_3d_3d_64',['operator==',['../structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823',1,'tram::UID::operator==(const UID &amp;other) const'],['../structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587',1,'tram::UID::operator==(const char *other) const'],['../classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3',1,'tram::Value::operator==()'],['../structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356',1,'tram::Pool::iterator::operator==()']]],\n  ['operator_5b_5d_65',['operator[]',['../classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952',1,'tram::ValueArray::operator[]()'],['../classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d',1,'tram::Hashmap::operator[](UID key)'],['../classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff',1,'tram::Hashmap::operator[](uint32_t key)'],['../classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c',1,'tram::Pool::operator[]()']]],\n  ['options_66',['Options',['../classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22',1,'tram::Ext::Menu::Options::Options()'],['../classtram_1_1_ext_1_1_menu_1_1_options.html',1,'tram::Ext::Menu::Options']]],\n  ['or_67',['Or',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['orientation_68',['orientation',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef',1,'tram::GUI']]],\n  ['origin_69',['origin',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902',1,'tram::Ext::Kitchensink::Button::origin()'],['../classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100',1,'tram::Render::Model::origin()']]],\n  ['ortho_5fratio_70',['ortho_ratio',['../namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d',1,'tram::Render']]],\n  ['other_2ecpp_71',['other.cpp',['../other_8cpp.html',1,'']]],\n  ['other_2eh_72',['other.h',['../other_8h.html',1,'']]],\n  ['output_2ecpp_73',['output.cpp',['../output_8cpp.html',1,'']]],\n  ['output_2eh_74',['output.h',['../output_8h.html',1,'']]],\n  ['override_5fstack_75',['override_stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['string_76',['string',['../structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801',1,'tram::UID']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_0.js",
    "content": "var searchData=\n[\n  ['_5ftest_5fcase_0',['_test_case',['../struct__test__case.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_1.js",
    "content": "var searchData=\n[\n  ['aabbleaf_0',['AABBLeaf',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html',1,'tram::Render::AABB']]],\n  ['aabbtree_1',['AABBTree',['../classtram_1_1_a_a_b_b_tree.html',1,'tram']]],\n  ['aabbtriangle_2',['AABBTriangle',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html',1,'tram::Render']]],\n  ['aiagent_3',['AIAgent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html',1,'tram::Ext::Kitchensink']]],\n  ['aipackage_4',['AIPackage',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html',1,'tram::Ext::Kitchensink']]],\n  ['aivariable_5',['AIVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html',1,'tram::Ext::Kitchensink']]],\n  ['animation_6',['Animation',['../classtram_1_1_render_1_1_animation.html',1,'tram::Render']]],\n  ['animationcomponent_7',['AnimationComponent',['../classtram_1_1_animation_component.html',1,'tram']]],\n  ['animationplaybackinfo_8',['AnimationPlaybackInfo',['../structtram_1_1_animation_component_1_1_animation_playback_info.html',1,'tram::AnimationComponent']]],\n  ['animationstatecomponent_9',['AnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html',1,'tram::Ext::Kitchensink']]],\n  ['animationtable_10',['AnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html',1,'tram::Ext::Kitchensink']]],\n  ['animstate_11',['AnimState',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatespace_12',['AnimStateSpace',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitiondefault_13',['AnimStateTransitionDefault',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitionfrom_14',['AnimStateTransitionFrom',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html',1,'tram::Ext::Kitchensink']]],\n  ['animstatetransitioninto_15',['AnimStateTransitionInto',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html',1,'tram::Ext::Kitchensink']]],\n  ['attribute_16',['Attribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['attributecontainer_17',['AttributeContainer',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html',1,'tram::Ext::Kitchensink']]],\n  ['attributeinfo_18',['AttributeInfo',['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html',1,'tram::Ext::Kitchensink']]],\n  ['audiobuffer_19',['AudioBuffer',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html',1,'tram::Audio::Spatial']]],\n  ['audiobuffer_5ft_20',['audiobuffer_t',['../structtram_1_1_audio_1_1audiobuffer__t.html',1,'tram::Audio']]],\n  ['audiocomponent_21',['AudioComponent',['../classtram_1_1_audio_component.html',1,'tram']]],\n  ['audiorender_22',['AudioRender',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html',1,'tram::Audio::Spatial']]],\n  ['audiosource_23',['AudioSource',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html',1,'tram::Audio::Spatial']]],\n  ['audiosource_5ft_24',['audiosource_t',['../structtram_1_1_audio_1_1audiosource__t.html',1,'tram::Audio']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_10.js",
    "content": "var searchData=\n[\n  ['queryresponse_0',['QueryResponse',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html',1,'tram::Render::AABB']]],\n  ['quest_1',['Quest',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html',1,'tram::Ext::Kitchensink']]],\n  ['questentity_2',['QuestEntity',['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html',1,'tram::Ext::Kitchensink']]],\n  ['questlist_3',['QuestList',['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_list.html',1,'tram::Ext::Kitchensink']]],\n  ['questtrigger_4',['QuestTrigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html',1,'tram::Ext::Kitchensink']]],\n  ['questvariable_5',['QuestVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html',1,'tram::Ext::Kitchensink']]],\n  ['queue_6',['Queue',['../classtram_1_1_queue.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_11.js",
    "content": "var searchData=\n[\n  ['rawsetting_0',['RawSetting',['../structtram_1_1_settings_1_1_raw_setting.html',1,'tram::Settings']]],\n  ['raycastcontrollercomponent_1',['RaycastControllerComponent',['../classtram_1_1_raycast_controller_component.html',1,'tram']]],\n  ['record_2',['Record',['../structtram_1_1_hashmap_1_1_record.html',1,'tram::Hashmap']]],\n  ['registeredvertexdefinition_3',['RegisteredVertexDefinition',['../structtram_1_1_render_1_1_registered_vertex_definition.html',1,'tram::Render']]],\n  ['rendercomponent_4',['RenderComponent',['../classtram_1_1_render_component.html',1,'tram']]],\n  ['resource_5',['Resource',['../classtram_1_1_resource.html',1,'tram']]],\n  ['resourceproxy_6',['ResourceProxy',['../classtram_1_1_resource_proxy.html',1,'tram']]],\n  ['resourcerequest_7',['ResourceRequest',['../structtram_1_1_async_1_1_resource_request.html',1,'tram::Async']]],\n  ['rigidbody_5ft_8',['rigidbody_t',['../structtram_1_1_physics_1_1rigidbody__t.html',1,'tram::Physics']]],\n  ['rigidbodymetadata_9',['RigidbodyMetadata',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_12.js",
    "content": "var searchData=\n[\n  ['scanline_0',['Scanline',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html',1,'tram::Render::API']]],\n  ['scanlinebuffer_1',['ScanlineBuffer',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html',1,'tram::Render::API']]],\n  ['scriptable_2',['Scriptable',['../classtram_1_1_scriptable.html',1,'tram']]],\n  ['scriptabletypeinfo_3',['ScriptableTypeInfo',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html',1,'tram::ScriptableType']]],\n  ['settinginfo_4',['SettingInfo',['../structtram_1_1_settings_1_1_setting_info.html',1,'tram::Settings']]],\n  ['settingsmenu_5',['SettingsMenu',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html',1,'tram::Ext::Menu']]],\n  ['shaderbuffer_6',['ShaderBuffer',['../classtram_1_1_render_1_1_a_p_i_1_1_shader_buffer.html',1,'tram::Render::API']]],\n  ['shaderuniformmatrices_7',['ShaderUniformMatrices',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html',1,'tram::Render::API']]],\n  ['shaderuniformmodelmatrices_8',['ShaderUniformModelMatrices',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html',1,'tram::Render::API']]],\n  ['shapecastcallback_9',['ShapecastCallback',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html',1,'tram::Physics::API']]],\n  ['sharedentitydata_10',['SharedEntityData',['../structtram_1_1_shared_entity_data.html',1,'tram']]],\n  ['signal_11',['Signal',['../structtram_1_1_signal.html',1,'tram']]],\n  ['signalmenu_12',['SignalMenu',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html',1,'tram::Ext::Menu']]],\n  ['signaltable_13',['SignalTable',['../classtram_1_1_signal_table.html',1,'tram']]],\n  ['sound_14',['Sound',['../classtram_1_1_audio_1_1_sound.html',1,'tram::Audio::Sound'],['../classtram_1_1_sound.html',1,'tram::Sound']]],\n  ['soundgraph_15',['SoundGraph',['../classtram_1_1_audio_1_1_sound_graph.html',1,'tram::Audio::SoundGraph'],['../classtram_1_1_render_1_1_sound_graph.html',1,'SoundGraph']]],\n  ['soundtable_16',['SoundTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html',1,'tram::Ext::Kitchensink']]],\n  ['sphericalharmonic_17',['SphericalHarmonic',['../structtram_1_1_render_1_1_spherical_harmonic.html',1,'tram::Render']]],\n  ['spinlock_18',['Spinlock',['../classtram_1_1_spinlock.html',1,'tram']]],\n  ['sprite_19',['Sprite',['../classtram_1_1_render_1_1_sprite.html',1,'tram::Render']]],\n  ['spritearray_5ft_20',['spritearray_t',['../structtram_1_1_render_1_1spritearray__t.html',1,'tram::Render']]],\n  ['spritecomponent_21',['SpriteComponent',['../classtram_1_1_sprite_component.html',1,'tram']]],\n  ['spriteframe_22',['SpriteFrame',['../structtram_1_1_render_1_1_sprite_frame.html',1,'tram::Render']]],\n  ['spritepoint_23',['SpritePoint',['../structtram_1_1_render_1_1_sprite_point.html',1,'tram::Render']]],\n  ['spritevertex_24',['SpriteVertex',['../structtram_1_1_render_1_1_sprite_vertex.html',1,'tram::Render']]],\n  ['stack_25',['Stack',['../classtram_1_1_stack.html',1,'tram']]],\n  ['stackpool_26',['StackPool',['../classtram_1_1_stack_pool.html',1,'tram']]],\n  ['staticmodeldata_27',['StaticModelData',['../structtram_1_1_render_1_1_static_model_data.html',1,'tram::Render']]],\n  ['staticmodelvertex_28',['StaticModelVertex',['../structtram_1_1_render_1_1_static_model_vertex.html',1,'tram::Render']]],\n  ['staticvertex_29',['StaticVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html',1,'tram::Render::API']]],\n  ['staticworldobject_30',['StaticWorldObject',['../classtram_1_1_static_world_object.html',1,'tram']]],\n  ['statisticsmenu_31',['StatisticsMenu',['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html',1,'tram::Ext::Menu']]],\n  ['swdrawlistentry_32',['SWDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html',1,'tram::Render::API']]],\n  ['swindexarray_33',['SWIndexArray',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html',1,'tram::Render::API']]],\n  ['swlight_34',['SWLight',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html',1,'tram::Render::API']]],\n  ['swtexture_35',['SWTexture',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html',1,'tram::Render::API']]],\n  ['swvertexarray_36',['SWVertexArray',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html',1,'tram::Render::API']]],\n  ['systeminfo_37',['SystemInfo',['../structtram_1_1_system_1_1_system_info.html',1,'tram::System']]],\n  ['systemmenu_38',['SystemMenu',['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html',1,'tram::Ext::Menu']]],\n  ['systemstat_39',['SystemStat',['../structtram_1_1_stats_1_1_system_stat.html',1,'tram::Stats']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_13.js",
    "content": "var searchData=\n[\n  ['templatecomponent_0',['TemplateComponent',['../classtram_1_1_template_component.html',1,'tram']]],\n  ['textreaderparser_1',['TextReaderParser',['../classtram_1_1_text_reader_parser.html',1,'tram']]],\n  ['texturehandle_5ft_2',['texturehandle_t',['../structtram_1_1_render_1_1texturehandle__t.html',1,'tram::Render']]],\n  ['textwriterparser_3',['TextWriterParser',['../classtram_1_1_text_writer_parser.html',1,'tram']]],\n  ['train_4',['Train',['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html',1,'tram::Ext::Kitchensink']]],\n  ['transition_5',['Transition',['../classtram_1_1_transition.html',1,'tram']]],\n  ['triangle_6',['Triangle',['../structtram_1_1_render_1_1_triangle.html',1,'tram::Render']]],\n  ['trianglebucket_7',['TriangleBucket',['../structtram_1_1_render_1_1_triangle_bucket.html',1,'tram::Render']]],\n  ['trigger_8',['Trigger',['../classtram_1_1_trigger.html',1,'tram']]],\n  ['trigger_5ft_9',['trigger_t',['../structtram_1_1_physics_1_1trigger__t.html',1,'tram::Physics']]],\n  ['triggerautosave_10',['TriggerAutosave',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html',1,'tram::Ext::Kitchensink']]],\n  ['triggercomponent_11',['TriggerComponent',['../classtram_1_1_trigger_component.html',1,'tram']]],\n  ['triggerhurt_12',['TriggerHurt',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html',1,'tram::Ext::Kitchensink']]],\n  ['triggermultiple_13',['TriggerMultiple',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html',1,'tram::Ext::Kitchensink']]],\n  ['triggeronce_14',['TriggerOnce',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html',1,'tram::Ext::Kitchensink']]],\n  ['triggerplayermovement_15',['TriggerPlayerMovement',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html',1,'tram::Ext::Kitchensink']]],\n  ['triggerpush_16',['TriggerPush',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html',1,'tram::Ext::Kitchensink']]],\n  ['triggerremove_17',['TriggerRemove',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html',1,'tram::Ext::Kitchensink']]],\n  ['triggerteleport_18',['TriggerTeleport',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_14.js",
    "content": "var searchData=\n[\n  ['uid_0',['UID',['../structtram_1_1_u_i_d.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_15.js",
    "content": "var searchData=\n[\n  ['value_0',['Value',['../classtram_1_1_value.html',1,'tram']]],\n  ['valuearray_1',['ValueArray',['../classtram_1_1_value_array.html',1,'tram']]],\n  ['valueptr_2',['ValuePtr',['../classtram_1_1_value_ptr.html',1,'tram']]],\n  ['vertexarray_5ft_3',['vertexarray_t',['../structtram_1_1_render_1_1vertexarray__t.html',1,'tram::Render']]],\n  ['vertexattribute_4',['VertexAttribute',['../structtram_1_1_render_1_1_vertex_attribute.html',1,'tram::Render']]],\n  ['vertexbuffermetadata_5',['VertexBufferMetadata',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html',1,'tram::Render::API']]],\n  ['vertexdefinition_6',['VertexDefinition',['../structtram_1_1_render_1_1_vertex_definition.html',1,'tram::Render']]],\n  ['vertexshader_7',['VertexShader',['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_16.js",
    "content": "var searchData=\n[\n  ['water_0',['Water',['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html',1,'tram::Ext::Kitchensink']]],\n  ['worldcell_1',['WorldCell',['../classtram_1_1_world_cell.html',1,'tram']]],\n  ['worldcellproperties_2',['WorldCellProperties',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html',1,'tram::Ext::Menu']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_2.js",
    "content": "var searchData=\n[\n  ['baseattribute_0',['BaseAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['basefactionrank_1',['BaseFactionRank',['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html',1,'tram::Ext::Kitchensink']]],\n  ['bone_2',['Bone',['../structtram_1_1_render_1_1_bone.html',1,'tram::Render']]],\n  ['breakable_3',['Breakable',['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html',1,'tram::Ext::Kitchensink']]],\n  ['bucketmapping_4',['BucketMapping',['../structtram_1_1_render_1_1_bucket_mapping.html',1,'tram::Render']]],\n  ['button_5',['Button',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_3.js",
    "content": "var searchData=\n[\n  ['callbackmotionstate_0',['CallbackMotionState',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html',1,'tram::Physics::API']]],\n  ['camera_1',['Camera',['../classtram_1_1_ext_1_1_camera_1_1_camera.html',1,'tram::Ext::Camera']]],\n  ['character_2',['Character',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html',1,'tram::Ext::Kitchensink']]],\n  ['characterclass_3',['CharacterClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html',1,'tram::Ext::Kitchensink']]],\n  ['characterdisposition_4',['CharacterDisposition',['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html',1,'tram::Ext::Kitchensink']]],\n  ['clippoint_5',['ClipPoint',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html',1,'tram::Render::API']]],\n  ['cliptriangle_6',['ClipTriangle',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html',1,'tram::Render::API']]],\n  ['collision_7',['Collision',['../structtram_1_1_physics_1_1_collision.html',1,'tram::Physics']]],\n  ['collisionmodel_8',['CollisionModel',['../classtram_1_1_physics_1_1_collision_model.html',1,'tram::Physics']]],\n  ['collisionshape_9',['CollisionShape',['../structtram_1_1_physics_1_1_collision_shape.html',1,'tram::Physics']]],\n  ['collisionshape_5ft_10',['collisionshape_t',['../structtram_1_1_physics_1_1collisionshape__t.html',1,'tram::Physics']]],\n  ['collisionshapetransform_11',['CollisionShapeTransform',['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html',1,'tram::Physics::API']]],\n  ['collisiontriangle_12',['CollisionTriangle',['../structtram_1_1_physics_1_1_collision_triangle.html',1,'tram::Physics']]],\n  ['colorvertex_13',['ColorVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html',1,'tram::Render::API']]],\n  ['component_14',['Component',['../classtram_1_1_component.html',1,'tram']]],\n  ['console_15',['Console',['../classtram_1_1_ext_1_1_menu_1_1_console.html',1,'tram::Ext::Menu']]],\n  ['controllercomponent_16',['ControllerComponent',['../classtram_1_1_controller_component.html',1,'tram']]],\n  ['crate_17',['Crate',['../classtram_1_1_crate.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_4.js",
    "content": "var searchData=\n[\n  ['d3ddrawlistentry_0',['D3DDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html',1,'tram::Render::API']]],\n  ['d3dlight_1',['D3DLight',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html',1,'tram::Render::API']]],\n  ['debugmenu_2',['DebugMenu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html',1,'tram::Ext::Menu']]],\n  ['debugshape_3',['DebugShape',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html',1,'tram::Ext::Kitchensink']]],\n  ['debugtext_4',['DebugText',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html',1,'tram::Ext::Kitchensink']]],\n  ['decalcomponent_5',['DecalComponent',['../classtram_1_1_decal_component.html',1,'tram']]],\n  ['decoration_6',['Decoration',['../classtram_1_1_decoration.html',1,'tram']]],\n  ['dialogaction_7',['DialogAction',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogcondition_8',['DialogCondition',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogcontroller_9',['DialogController',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html',1,'tram::Ext::Kitchensink']]],\n  ['dialogtopic_10',['DialogTopic',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html',1,'tram::Ext::Kitchensink']]],\n  ['diskreader_11',['DiskReader',['../classtram_1_1_disk_reader.html',1,'tram']]],\n  ['diskwriter_12',['DiskWriter',['../classtram_1_1_disk_writer.html',1,'tram']]],\n  ['drawlistentry_5ft_13',['drawlistentry_t',['../structtram_1_1_render_1_1drawlistentry__t.html',1,'tram::Render']]],\n  ['dynamicmodeldata_14',['DynamicModelData',['../structtram_1_1_render_1_1_dynamic_model_data.html',1,'tram::Render']]],\n  ['dynamicmodelvertex_15',['DynamicModelVertex',['../structtram_1_1_render_1_1_dynamic_model_vertex.html',1,'tram::Render']]],\n  ['dynamicvertex_16',['DynamicVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_5.js",
    "content": "var searchData=\n[\n  ['edge_0',['Edge',['../structtram_1_1_edge.html',1,'tram']]],\n  ['effect_1',['Effect',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html',1,'tram::Ext::Kitchensink']]],\n  ['entity_2',['Entity',['../classtram_1_1_entity.html',1,'tram']]],\n  ['entitychildren_3',['EntityChildren',['../structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html',1,'tram::Ext::Kitchensink']]],\n  ['entitycomponent_4',['EntityComponent',['../classtram_1_1_entity_component.html',1,'tram']]],\n  ['entitypicker_5',['EntityPicker',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html',1,'tram::Ext::Menu']]],\n  ['entityproperties_6',['EntityProperties',['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html',1,'tram::Ext::Menu']]],\n  ['entitytypeinfo_7',['EntityTypeInfo',['../structtram_1_1_entity_type_info.html',1,'tram']]],\n  ['event_8',['Event',['../structtram_1_1_event.html',1,'tram']]],\n  ['eventemit_9',['EventEmit',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html',1,'tram::Ext::Menu']]],\n  ['eventintercept_10',['EventIntercept',['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html',1,'tram::Ext::Menu']]],\n  ['eventlistener_11',['EventListener',['../classtram_1_1_event_listener.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_6.js",
    "content": "var searchData=\n[\n  ['faction_0',['Faction',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html',1,'tram::Ext::Kitchensink']]],\n  ['factionrank_1',['FactionRank',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html',1,'tram::Ext::Kitchensink']]],\n  ['factionrelation_2',['FactionRelation',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html',1,'tram::Ext::Kitchensink']]],\n  ['ffphelper_3',['FFPHelper',['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html',1,'tram::Render::API']]],\n  ['fieldinfo_4',['FieldInfo',['../structtram_1_1_entity_1_1_field_info.html',1,'tram::Entity']]],\n  ['file_5',['File',['../classtram_1_1_file.html',1,'tram']]],\n  ['filereader_6',['FileReader',['../classtram_1_1_file_reader.html',1,'tram::FileReader'],['../classtram_1_1_platform_1_1_file_reader.html',1,'FileReader']]],\n  ['filereaderparser_7',['FileReaderParser',['../classtram_1_1_file_reader_parser.html',1,'tram']]],\n  ['filesource_8',['FileSource',['../structtram_1_1_file_source.html',1,'tram']]],\n  ['filewriter_9',['FileWriter',['../classtram_1_1_file_writer.html',1,'tram::FileWriter'],['../classtram_1_1_platform_1_1_file_writer.html',1,'FileWriter']]],\n  ['filewriterparser_10',['FileWriterParser',['../classtram_1_1_file_writer_parser.html',1,'tram']]],\n  ['filterparameters_11',['FilterParameters',['../structtram_1_1_audio_1_1_filter_parameters.html',1,'tram::Audio']]],\n  ['firstpersoncamera_12',['FirstPersonCamera',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html',1,'tram::Ext::Camera']]],\n  ['fpscontrollercomponent_13',['FPSControllerComponent',['../classtram_1_1_f_p_s_controller_component.html',1,'tram']]],\n  ['fragmentshader_14',['FragmentShader',['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html',1,'tram::Render::API']]],\n  ['frameobject_15',['FrameObject',['../structtram_1_1_g_u_i_1_1_frame_object.html',1,'tram::GUI']]],\n  ['fvfhelper_16',['FVFHelper',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_7.js",
    "content": "var searchData=\n[\n  ['gldrawlistentry_0',['GLDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html',1,'tram::Render::API']]],\n  ['gllight_1',['GLLight',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html',1,'tram::Render::API']]],\n  ['glmaterial_2',['GLMaterial',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html',1,'tram::Render::API']]],\n  ['graph_3',['Graph',['../classtram_1_1_graph.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_8.js",
    "content": "var searchData=\n[\n  ['hashmap_0',['Hashmap',['../classtram_1_1_hashmap.html',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_9.js",
    "content": "var searchData=\n[\n  ['indexarray_5ft_0',['indexarray_t',['../structtram_1_1_render_1_1indexarray__t.html',1,'tram::Render']]],\n  ['indexrange_1',['IndexRange',['../structtram_1_1_render_1_1_index_range.html',1,'tram::Render']]],\n  ['initialattribute_2',['InitialAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html',1,'tram::Ext::Kitchensink']]],\n  ['intercept_3',['Intercept',['../structtram_1_1_ext_1_1_menu_1_1_intercept.html',1,'tram::Ext::Menu']]],\n  ['interceptmenu_4',['InterceptMenu',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html',1,'tram::Ext::Menu']]],\n  ['interface_5',['Interface',['../classtram_1_1_script_1_1_interface.html',1,'tram::Script']]],\n  ['inventory_6',['Inventory',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html',1,'tram::Ext::Kitchensink']]],\n  ['inventoryfactoryinfo_7',['InventoryFactoryInfo',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html',1,'tram::Ext::Kitchensink']]],\n  ['inventorymanager_8',['InventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html',1,'tram::Ext::Kitchensink']]],\n  ['itemclass_9',['ItemClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html',1,'tram::Ext::Kitchensink']]],\n  ['iteminstance_10',['ItemInstance',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html',1,'tram::Ext::Kitchensink']]],\n  ['iterator_11',['iterator',['../structtram_1_1_pool_1_1iterator.html',1,'tram::Pool']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_a.js",
    "content": "var searchData=\n[\n  ['keybinding_0',['KeyBinding',['../structtram_1_1_u_i_1_1_key_binding.html',1,'tram::UI']]],\n  ['keyframe_1',['Keyframe',['../structtram_1_1_render_1_1_keyframe.html',1,'tram::Render']]],\n  ['keyframeheader_2',['KeyframeHeader',['../structtram_1_1_render_1_1_keyframe_header.html',1,'tram::Render']]],\n  ['kitchensinkmenulist_3',['KitchensinkMenuList',['../classtram_1_1_ext_1_1_kitchensink_1_1_kitchensink_menu_list.html',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_b.js",
    "content": "var searchData=\n[\n  ['layerparameters_0',['LayerParameters',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html',1,'tram::Render::API']]],\n  ['light_1',['Light',['../classtram_1_1_light.html',1,'tram::Light'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html',1,'tram::Render::LightTree::Light']]],\n  ['light_5ft_2',['light_t',['../structtram_1_1_render_1_1light__t.html',1,'tram::Render']]],\n  ['lightcomponent_3',['LightComponent',['../classtram_1_1_light_component.html',1,'tram']]],\n  ['lightgraph_4',['LightGraph',['../classtram_1_1_render_1_1_light_graph.html',1,'tram::Render']]],\n  ['linevertex_5',['LineVertex',['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html',1,'tram::Render::API::LineVertex'],['../structtram_1_1_render_1_1_line_vertex.html',1,'tram::Render::LineVertex']]],\n  ['linkedshader_6',['LinkedShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html',1,'tram::Render::API']]],\n  ['listdialog_7',['ListDialog',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html',1,'tram::Ext::Kitchensink']]],\n  ['listenerinfo_8',['ListenerInfo',['../structtram_1_1_listener_info.html',1,'tram']]],\n  ['listinventory_9',['ListInventory',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory.html',1,'tram::Ext::Kitchensink']]],\n  ['listinventorymanager_10',['ListInventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html',1,'tram::Ext::Kitchensink']]],\n  ['listselection_11',['ListSelection',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html',1,'tram::Ext::Menu']]],\n  ['listtrade_12',['ListTrade',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_trade.html',1,'tram::Ext::Kitchensink']]],\n  ['logintercept_13',['LogIntercept',['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html',1,'tram::Ext::Menu']]],\n  ['lua_14',['Lua',['../classtram_1_1_ext_1_1_scripting_1_1_lua_1_1_lua.html',1,'tram::Ext::Scripting::Lua']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_c.js",
    "content": "var searchData=\n[\n  ['marker_0',['Marker',['../classtram_1_1_marker.html',1,'tram']]],\n  ['material_1',['Material',['../classtram_1_1_render_1_1_material.html',1,'tram::Render']]],\n  ['material_5ft_2',['material_t',['../structtram_1_1_render_1_1material__t.html',1,'tram::Render']]],\n  ['menu_3',['Menu',['../classtram_1_1_ext_1_1_menu_1_1_menu.html',1,'tram::Ext::Menu']]],\n  ['message_4',['Message',['../structtram_1_1_message.html',1,'tram']]],\n  ['messageintercept_5',['MessageIntercept',['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html',1,'tram::Ext::Menu']]],\n  ['messagesend_6',['MessageSend',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html',1,'tram::Ext::Menu']]],\n  ['model_7',['Model',['../classtram_1_1_render_1_1_model.html',1,'tram::Render']]],\n  ['modelaabb_8',['ModelAABB',['../structtram_1_1_render_1_1_model_a_a_b_b.html',1,'tram::Render']]],\n  ['modeldata_9',['ModelData',['../structtram_1_1_render_1_1_model_data.html',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_d.js",
    "content": "var searchData=\n[\n  ['navmesh_0',['Navmesh',['../classtram_1_1_navmesh.html',1,'tram']]],\n  ['navmeshnode_1',['NavmeshNode',['../structtram_1_1_navmesh_node.html',1,'tram']]],\n  ['nearestsearch_2',['NearestSearch',['../structtram_1_1_octree_1_1_nearest_search.html',1,'tram::Octree']]],\n  ['node_3',['Node',['../structtram_1_1_a_a_b_b_tree_1_1_node.html',1,'tram::AABBTree::Node'],['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html',1,'tram::Audio::SoundGraph::Node'],['../structtram_1_1_node.html',1,'tram::Node'],['../structtram_1_1_octree_1_1_node.html',1,'tram::Octree&lt; T &gt;::Node'],['../structtram_1_1_render_1_1_light_graph_1_1_node.html',1,'tram::Render::LightGraph::Node']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_e.js",
    "content": "var searchData=\n[\n  ['objectcollision_0',['ObjectCollision',['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html',1,'tram::Physics::API']]],\n  ['octree_1',['Octree',['../classtram_1_1_octree.html',1,'tram']]],\n  ['options_2',['Options',['../classtram_1_1_ext_1_1_menu_1_1_options.html',1,'tram::Ext::Menu']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/classes_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"classes_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/classes_f.js",
    "content": "var searchData=\n[\n  ['particle_0',['Particle',['../structtram_1_1_particle_component_1_1_particle.html',1,'tram::ParticleComponent']]],\n  ['particlecomponent_1',['ParticleComponent',['../classtram_1_1_particle_component.html',1,'tram']]],\n  ['path_2',['Path',['../classtram_1_1_path.html',1,'tram']]],\n  ['pathaction_3',['PathAction',['../classtram_1_1_physics_1_1_path_action.html',1,'tram::Physics']]],\n  ['pathedgeinfo_4',['PathEdgeInfo',['../structtram_1_1_path_edge_info.html',1,'tram']]],\n  ['pathexplorationresult_5',['PathExplorationResult',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html',1,'tram::Audio::Spatial']]],\n  ['pathfollower_6',['PathFollower',['../classtram_1_1_path_follower.html',1,'tram']]],\n  ['pathfromaudiosource_7',['PathFromAudioSource',['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html',1,'tram::Audio::Spatial']]],\n  ['pathrenderinginfo_8',['PathRenderingInfo',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html',1,'tram::Audio::Spatial']]],\n  ['pathtracingresult_9',['PathTracingResult',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html',1,'tram::Audio::Spatial']]],\n  ['physicscomponent_10',['PhysicsComponent',['../classtram_1_1_physics_component.html',1,'tram']]],\n  ['physicsdebugdraw_11',['PhysicsDebugDraw',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html',1,'tram::Physics::API']]],\n  ['pickup_12',['Pickup',['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html',1,'tram::Ext::Kitchensink']]],\n  ['player_13',['Player',['../classtram_1_1_player.html',1,'tram']]],\n  ['playercomponent_14',['PlayerComponent',['../classtram_1_1_player_component.html',1,'tram']]],\n  ['point2d_15',['Point2D',['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html',1,'tram::Render::API']]],\n  ['pool_16',['Pool',['../classtram_1_1_pool.html',1,'tram']]],\n  ['poolproxy_17',['PoolProxy',['../classtram_1_1_pool_proxy.html',1,'tram']]],\n  ['poolptr_18',['PoolPtr',['../classtram_1_1_pool_ptr.html',1,'tram']]],\n  ['pose_19',['Pose',['../structtram_1_1_render_1_1_pose.html',1,'tram::Render']]],\n  ['property_20',['Property',['../structtram_1_1_settings_1_1_property.html',1,'tram::Settings']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_0.js",
    "content": "var searchData=\n[\n  ['assert_0',['ASSERT',['../test_8h.html#ad014a2a071494bbabc34b48eeebadbf3',1,'test.h']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_1.js",
    "content": "var searchData=\n[\n  ['end_5ftest_0',['END_TEST',['../test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8',1,'test.h']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_2.js",
    "content": "var searchData=\n[\n  ['playsound_0',['PlaySound',['../entities_8cpp.html#a4366553d515649fefe284775ebaed16e',1,'entities.cpp']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_3.js",
    "content": "var searchData=\n[\n  ['start_5ftest_0',['START_TEST',['../test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f',1,'test.h']]],\n  ['stb_5fimage_5fimplementation_1',['STB_IMAGE_IMPLEMENTATION',['../material_8cpp.html#a18372412ad2fc3ce1e3240b3cf0efe78',1,'material.cpp']]],\n  ['stb_5fimage_5fwrite_5fimplementation_2',['STB_IMAGE_WRITE_IMPLEMENTATION',['../image_8cpp.html#aefe397a94e8feddc652f92ef40ce9597',1,'image.cpp']]],\n  ['stbi_5fonly_5fpng_3',['STBI_ONLY_PNG',['../material_8cpp.html#a305f0db3256dd1248d3f17a83f7a6129',1,'material.cpp']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_4.js",
    "content": "var searchData=\n[\n  ['test_5fcase_0',['TEST_CASE',['../test_8h.html#adf0988a4a0680d35bed223d0b021437e',1,'test.h']]],\n  ['tram_5fsdk_5fassert_1',['TRAM_SDK_ASSERT',['../macros_8h.html#ab8acc3253ef25e7241078bb72714f386',1,'macros.h']]],\n  ['tram_5fsdk_5fassert_5fmessage_2',['TRAM_SDK_ASSERT_MESSAGE',['../macros_8h.html#a152c2304044652f7572e5759c6535a2c',1,'macros.h']]],\n  ['tram_5fsdk_5fentity_5fname_3',['TRAM_SDK_ENTITY_NAME',['../macros_8h.html#a8f9f5f41852998a382c115e4f6bbf159',1,'macros.h']]],\n  ['tram_5fsdk_5fimplement_5fpool_4',['TRAM_SDK_IMPLEMENT_POOL',['../macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb',1,'macros.h']]],\n  ['tram_5fsdk_5fproperty_5',['TRAM_SDK_PROPERTY',['../macros_8h.html#a295f857ea2759f1ca46a41b9bf3dec1a',1,'macros.h']]],\n  ['tram_5fsdk_5fregister_5fevent_5fdatatype_6',['TRAM_SDK_REGISTER_EVENT_DATATYPE',['../macros_8h.html#a52706c5e76dff5554e6be98274f86e3d',1,'macros.h']]],\n  ['tram_5fsdk_5fvirtual_5fproperty_7',['TRAM_SDK_VIRTUAL_PROPERTY',['../macros_8h.html#a2b6582f54dfcdb7471a7a86d9c01eafe',1,'macros.h']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/defines_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"defines_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/defines_5.js",
    "content": "var searchData=\n[\n  ['test_5fcase_0',['TEST_CASE',['../test_8h.html#adf0988a4a0680d35bed223d0b021437e',1,'test.h']]],\n  ['tram_5fsdk_5fassert_1',['TRAM_SDK_ASSERT',['../macros_8h.html#ab8acc3253ef25e7241078bb72714f386',1,'macros.h']]],\n  ['tram_5fsdk_5fassert_5fmessage_2',['TRAM_SDK_ASSERT_MESSAGE',['../macros_8h.html#a152c2304044652f7572e5759c6535a2c',1,'macros.h']]],\n  ['tram_5fsdk_5fimplement_5fpool_3',['TRAM_SDK_IMPLEMENT_POOL',['../macros_8h.html#ad00c543490e5b3b7db91b1fdb62d44cb',1,'macros.h']]],\n  ['tram_5fsdk_5fregister_5fevent_5fdatatype_4',['TRAM_SDK_REGISTER_EVENT_DATATYPE',['../macros_8h.html#a52706c5e76dff5554e6be98274f86e3d',1,'macros.h']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_0.js",
    "content": "var searchData=\n[\n  ['accessmode_0',['AccessMode',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477',1,'tram::File']]],\n  ['audiosamplerate_1',['AudioSampleRate',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92',1,'tram::Audio::Spatial']]],\n  ['audiosourceflags_2',['AudioSourceFlags',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351',1,'tram::Audio::Spatial']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_1.js",
    "content": "var searchData=\n[\n  ['collisiongroup_0',['CollisionGroup',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8',1,'tram::Physics']]],\n  ['colormode_1',['ColorMode',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894',1,'tram::Render']]],\n  ['contexttype_2',['ContextType',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230',1,'tram::Render::API']]],\n  ['cursortype_3',['CursorType',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f',1,'tram::UI::CursorType()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881f',1,'tram::Platform::Window::CursorType()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_10.js",
    "content": "var searchData=\n[\n  ['vertexformats_0',['VertexFormats',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_11.js",
    "content": "var searchData=\n[\n  ['widget_0',['widget',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_2.js",
    "content": "var searchData=\n[\n  ['dialogtype_0',['DialogType',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_3.js",
    "content": "var searchData=\n[\n  ['filemedium_0',['FileMedium',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531',1,'tram']]],\n  ['filestatus_1',['FileStatus',['../namespacetram.html#a972c59287ba467dbfe003f137609550d',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_4.js",
    "content": "var searchData=\n[\n  ['glyphtype_0',['GlyphType',['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_5.js",
    "content": "var searchData=\n[\n  ['inputstate_0',['InputState',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef',1,'tram::UI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_6.js",
    "content": "var searchData=\n[\n  ['keyboardaction_0',['KeyboardAction',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99',1,'tram::UI']]],\n  ['keyboardaxis_1',['KeyboardAxis',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064',1,'tram::UI']]],\n  ['keyboardkey_2',['KeyboardKey',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9',1,'tram::UI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_7.js",
    "content": "var searchData=\n[\n  ['listenertype_0',['ListenerType',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f',1,'tram::ListenerInfo']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_8.js",
    "content": "var searchData=\n[\n  ['materialfilter_0',['MaterialFilter',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501c',1,'tram::Render']]],\n  ['materialproperty_1',['MaterialProperty',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43f',1,'tram::Render']]],\n  ['materialtypes_2',['MaterialTypes',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003e',1,'tram::Render']]],\n  ['metadatatype_3',['MetadataType',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_9.js",
    "content": "var searchData=\n[\n  ['octant_0',['Octant',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321',1,'tram::Octree']]],\n  ['orientation_1',['orientation',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deef',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_a.js",
    "content": "var searchData=\n[\n  ['pathtype_0',['PathType',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_b.js",
    "content": "var searchData=\n[\n  ['quest_5ft_0',['quest_t',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_c.js",
    "content": "var searchData=\n[\n  ['referencetype_0',['ReferenceType',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c',1,'tram::Render::AABB']]],\n  ['renderflags_1',['renderflags',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9c',1,'tram::Render']]],\n  ['requestnotification_2',['RequestNotification',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5',1,'tram::Async']]],\n  ['resource_3',['Resource',['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e',1,'tram::Stats']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_d.js",
    "content": "var searchData=\n[\n  ['severity_0',['Severity',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56',1,'tram']]],\n  ['shaderflag_1',['ShaderFlag',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517',1,'tram::Render::API']]],\n  ['shape_2',['Shape',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470',1,'tram::Physics']]],\n  ['soundaction_3',['SoundAction',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53',1,'tram::Ext::Kitchensink']]],\n  ['status_4',['Status',['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4',1,'tram::Resource']]],\n  ['swtexturemode_5',['SWTextureMode',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c',1,'tram::Render::API']]],\n  ['swvertextype_6',['SWVertexType',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2',1,'tram::Render::API']]],\n  ['system_7',['System',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65',1,'tram::System']]],\n  ['systemstate_8',['SystemState',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_e.js",
    "content": "var searchData=\n[\n  ['texturefilter_0',['TextureFilter',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430c',1,'tram::Render']]],\n  ['texturetype_1',['TextureType',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811',1,'tram::Render']]],\n  ['type_2',['Type',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765',1,'tram::Event::Type()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd',1,'tram::Message::Type()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6',1,'tram::Signal::Type()'],['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609',1,'tram::Type()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enums_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enums_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enums_f.js",
    "content": "var searchData=\n[\n  ['userindex_0',['UserIndex',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663c',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_0.js",
    "content": "var searchData=\n[\n  ['activate_0',['ACTIVATE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0',1,'tram::Message::ACTIVATE()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402',1,'tram::Signal::ACTIVATE()']]],\n  ['activate_5fonce_1',['ACTIVATE_ONCE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a',1,'tram::Message']]],\n  ['application_2',['APPLICATION',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db',1,'tram::Settings']]],\n  ['archive_3',['ARCHIVE',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a71f01f32e90440fd6039511dde69e995',1,'tram']]],\n  ['async_4',['ASYNC',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a8f56dd168853c665aca65b28e1b0fa4f',1,'tram::System']]],\n  ['audio_5',['AUDIO',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65aa677dba760329e1c8a19f1b9564fb0ee',1,'tram::System']]],\n  ['automatic_5floading_6',['AUTOMATIC_LOADING',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f',1,'tram::WorldCell']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_1.js",
    "content": "var searchData=\n[\n  ['binary_0',['BINARY',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a48058d1f6460f840218c5f0f3cf9189d',1,'tram::File']]],\n  ['button_5ffield_5fdirection_1',['BUTTON_FIELD_DIRECTION',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a92474d3f271e766f76971dda90cd0362',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fdistance_2',['BUTTON_FIELD_DISTANCE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7ac099af4787961ca1566e96824af7ffc7',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fflags_3',['BUTTON_FIELD_FLAGS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a028447ade1e576d6a3596bedf3517528',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5flast_4',['BUTTON_FIELD_LAST',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7af808d6a5415653e978a37bc90f1712ca',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5flightmap_5',['BUTTON_FIELD_LIGHTMAP',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abd316ee424b7b23bc29edb3db10d7971',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fmodel_6',['BUTTON_FIELD_MODEL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a5939dee0aa6a66cd382da9d723dc5119',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5forigin_7',['BUTTON_FIELD_ORIGIN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7abccb49cfe3ecf4a7089d3f68b31d5733',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fparent_8',['BUTTON_FIELD_PARENT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a07490a9283436693bf80c3c6b0058c01',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fpause_9',['BUTTON_FIELD_PAUSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7afe4015956bfc5bb557953716e66a1661',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fsound_10',['BUTTON_FIELD_SOUND',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a728d91fe623b79e8061cafa8a4652b36',1,'tram::Ext::Kitchensink']]],\n  ['button_5ffield_5fspeed_11',['BUTTON_FIELD_SPEED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad924f50692439454362f23d98fb1ffe7a52b7c6c18b3e554e70783d4fbff24377',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5flocked_12',['BUTTON_FLAG_LOCKED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a256eaf735f9a4e3d494796a41a86020f',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5fmomentary_13',['BUTTON_FLAG_MOMENTARY',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4a32a1fe42b0a3f2c8fe9a144c063d8875',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5fpushed_14',['BUTTON_FLAG_PUSHED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ac3fd8b6adb00899959c6922434df8667',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5frotary_15',['BUTTON_FLAG_ROTARY',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4accb92c1699f26653b36e7d8e034de0ab',1,'tram::Ext::Kitchensink']]],\n  ['button_5fflag_5ftoggle_16',['BUTTON_FLAG_TOGGLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac280e36a407bbb9e04103c5b98a6d6d4ad5ba4fa14d330818e7cb9d2d925bfd89',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5flowering_17',['BUTTON_STATE_LOWERING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a9539b1c85c98e25e6d3bfbdec2a53a10',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fnadir_5fready_18',['BUTTON_STATE_NADIR_READY',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0abe12753cafabc3489ec75a7d078c2938',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fnadir_5fwaiting_19',['BUTTON_STATE_NADIR_WAITING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0be36c3333481d4855b2113b7cabc18c',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5frising_20',['BUTTON_STATE_RISING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a0ef998e800a26a482cca479d2f93e691',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fzenith_5fready_21',['BUTTON_STATE_ZENITH_READY',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a8e326dcbf2adbe29156062f45c99c2d9',1,'tram::Ext::Kitchensink']]],\n  ['button_5fstate_5fzenith_5fwaiting_22',['BUTTON_STATE_ZENITH_WAITING',['../namespacetram_1_1_ext_1_1_kitchensink.html#a0d1eaa08844d3f7ecb0fafaa53d7eea0a558287c453525abd4baca12cb3b0f3e9',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_10.js",
    "content": "var searchData=\n[\n  ['read_0',['READ',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a5e3d5e80c10e5d25d26a648c1f26e02d',1,'tram::File']]],\n  ['ready_1',['READY',['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aa3769d5e294e6b2450a45d76dabd4084',1,'tram::Resource::READY()'],['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2afe2c2852d86a0bab7964b332561c1958',1,'tram::System::READY()'],['../namespacetram.html#a972c59287ba467dbfe003f137609550da2baa69eafc7204f3bd8648eba580c489',1,'tram::READY()']]],\n  ['reference_5frendercomponent_2',['REFERENCE_RENDERCOMPONENT',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264cacd9048859d266397d2abe34d831b84ec',1,'tram::Render::AABB']]],\n  ['render_3',['RENDER',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a002f90cdb21c6e590918357ef589f0d7',1,'tram::System']]],\n  ['resource_5fdrawcall_4',['RESOURCE_DRAWCALL',['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635',1,'tram::Stats']]],\n  ['resource_5fvram_5',['RESOURCE_VRAM',['../namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998',1,'tram::Stats']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_11.js",
    "content": "var searchData=\n[\n  ['samplerate_5f11025_0',['SAMPLERATE_11025',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92aac71770f82a6275d05bd2bbca3197136',1,'tram::Audio::Spatial']]],\n  ['samplerate_5f22050_1',['SAMPLERATE_22050',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92a169e074b5f1d0c78d330391b2af84f67',1,'tram::Audio::Spatial']]],\n  ['samplerate_5f44100_2',['SAMPLERATE_44100',['../namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92adea809ee311892b0def96da9d7daea32',1,'tram::Audio::Spatial']]],\n  ['select_3',['SELECT',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa',1,'tram::Message']]],\n  ['selected_4',['SELECTED',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6',1,'tram::Event']]],\n  ['set_5fanimation_5',['SET_ANIMATION',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8',1,'tram::Message']]],\n  ['set_5fflag_5foff_6',['SET_FLAG_OFF',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8',1,'tram::Message']]],\n  ['set_5fflag_5fon_7',['SET_FLAG_ON',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d',1,'tram::Message']]],\n  ['set_5fprogress_8',['SET_PROGRESS',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b',1,'tram::Message']]],\n  ['shader_5flightmap_9',['SHADER_LIGHTMAP',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53',1,'tram::Render::API']]],\n  ['shader_5fnone_10',['SHADER_NONE',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4',1,'tram::Render::API']]],\n  ['shader_5fspecular_11',['SHADER_SPECULAR',['../namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0',1,'tram::Render::API']]],\n  ['shape_5fbox_12',['SHAPE_BOX',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470ab5dfdaaa7551c0d3dfc1f83fe5e2c5c4',1,'tram::Physics']]],\n  ['shape_5fcapsule_13',['SHAPE_CAPSULE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a7b5b398889fced1c5ab79ab282dc4070',1,'tram::Physics']]],\n  ['shape_5fcone_14',['SHAPE_CONE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a0e7a9317522c84731b8a3610ed56023b',1,'tram::Physics']]],\n  ['shape_5fcylinder_15',['SHAPE_CYLINDER',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470af2ee4d68fba8f9cafa1b5e46fbf84f04',1,'tram::Physics']]],\n  ['shape_5fhull_16',['SHAPE_HULL',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470aebd34133bb70b2f3b749a97ecba9a7c6',1,'tram::Physics']]],\n  ['shape_5fmesh_17',['SHAPE_MESH',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a8c92deed143d83925369f4bbac1d79d3',1,'tram::Physics']]],\n  ['shape_5fsphere_18',['SHAPE_SPHERE',['../namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470a2e2d1dec24f7a13509f6c93e916c29de',1,'tram::Physics']]],\n  ['sound_5fclose_19',['SOUND_CLOSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fend_5fclose_20',['SOUND_END_CLOSE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fend_5fopen_21',['SOUND_END_OPEN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fhit_22',['SOUND_HIT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fjump_5fon_23',['SOUND_JUMP_ON',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8',1,'tram::Ext::Kitchensink']]],\n  ['sound_5flocked_24',['SOUND_LOCKED',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75',1,'tram::Ext::Kitchensink']]],\n  ['sound_5flooping_25',['SOUND_LOOPING',['../namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a2b98109c83d1a5e315eda5bd27f24c6d',1,'tram']]],\n  ['sound_5fopen_26',['SOUND_OPEN',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd',1,'tram::Ext::Kitchensink']]],\n  ['sound_5fstart_5fon_5fload_27',['SOUND_START_ON_LOAD',['../namespacetram.html#a9f451d1ee1334ce10a83ea2f79c93370a8343d10ea6ccc52ae5edac8e1b9f44a8',1,'tram']]],\n  ['sound_5fwalk_5fon_28',['SOUND_WALK_ON',['../namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1',1,'tram::Ext::Kitchensink']]],\n  ['source_5fplaying_29',['SOURCE_PLAYING',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a76edfe568a1b4a6cd61ea9e4634d4338',1,'tram::Audio::Spatial']]],\n  ['source_5frepeating_30',['SOURCE_REPEATING',['../namespacetram_1_1_audio_1_1_spatial.html#a29e8b2fda522dd1d5e8f4ec648217351a16c59175dddfde6cd9721d2eab2c577f',1,'tram::Audio::Spatial']]],\n  ['spawn_31',['SPAWN',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476',1,'tram::Signal']]],\n  ['start_32',['START',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282',1,'tram::Message']]],\n  ['state_5fcursor_33',['STATE_CURSOR',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c',1,'tram::UI']]],\n  ['state_5fdefault_34',['STATE_DEFAULT',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d',1,'tram::UI']]],\n  ['state_5fflying_35',['STATE_FLYING',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6',1,'tram::UI']]],\n  ['state_5fmenu_5fopen_36',['STATE_MENU_OPEN',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12',1,'tram::UI']]],\n  ['state_5fno_5finput_37',['STATE_NO_INPUT',['../namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9',1,'tram::UI']]],\n  ['stop_38',['STOP',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785',1,'tram::Message']]],\n  ['sw_5fblended_39',['SW_BLENDED',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4',1,'tram::Render::API']]],\n  ['sw_5fdynamic_5fblended_40',['SW_DYNAMIC_BLENDED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419',1,'tram::Render::API']]],\n  ['sw_5fnearest_41',['SW_NEAREST',['../namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31',1,'tram::Render::API']]],\n  ['sw_5fsprite_42',['SW_SPRITE',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8',1,'tram::Render::API']]],\n  ['sw_5fstatic_5fcolored_43',['SW_STATIC_COLORED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a',1,'tram::Render::API']]],\n  ['sw_5fstatic_5flightmapped_44',['SW_STATIC_LIGHTMAPPED',['../namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255',1,'tram::Render::API']]],\n  ['system_5flast_45',['SYSTEM_LAST',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_12.js",
    "content": "var searchData=\n[\n  ['text_0',['TEXT',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a6518ec116fa14720023ab555ac98fc78',1,'tram::File::TEXT()'],['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6abfe639cbd14f55a92f4ebe8375a1ac2d',1,'tram::GUI::TEXT()']]],\n  ['text_5fcenter_1',['TEXT_CENTER',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaab9068e1ea84d1d6500fff39f40432d8',1,'tram::GUI']]],\n  ['text_5fjustified_2',['TEXT_JUSTIFIED',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5599915901369f00b9f42ac84e491a2c',1,'tram::GUI']]],\n  ['text_5fleft_3',['TEXT_LEFT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa1e9c20e6fa371be1c425b7a6e7f6618d',1,'tram::GUI']]],\n  ['text_5fright_4',['TEXT_RIGHT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa06eff8d79ce30aab6563d6e3f35ce4aa',1,'tram::GUI']]],\n  ['texture_5fnone_5',['TEXTURE_NONE',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811ae02c2e6f4cec72ea436b28aad4efd80b',1,'tram::Render']]],\n  ['texture_5fsame_6',['TEXTURE_SAME',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811af6589e2c02fc50470840c08b9892f043',1,'tram::Render']]],\n  ['texture_5fsource_7',['TEXTURE_SOURCE',['../namespacetram_1_1_render.html#ae823e9f58d9c8060a531459eec5ff811a3cfd37b75ddc6c3ba8caa20597d6c863',1,'tram::Render']]],\n  ['texturefilter_5flinear_8',['TEXTUREFILTER_LINEAR',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca811c3596f6fa1f1dc908e87d7e45d3ef',1,'tram::Render']]],\n  ['texturefilter_5flinear_5fmipmapped_9',['TEXTUREFILTER_LINEAR_MIPMAPPED',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430ca9975010d94838d5395406df69da07d91',1,'tram::Render']]],\n  ['texturefilter_5fnearest_10',['TEXTUREFILTER_NEAREST',['../namespacetram_1_1_render.html#ad3c2cb5af20e13497cc81f62d22b430caf20b0ce0de416c5d5b69e1674ab4b647',1,'tram::Render']]],\n  ['tick_11',['TICK',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436',1,'tram::Event']]],\n  ['toggle_12',['TOGGLE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59',1,'tram::Message']]],\n  ['trigger_13',['TRIGGER',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c',1,'tram::Message::TRIGGER()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd',1,'tram::Signal::TRIGGER()']]],\n  ['trigger_5fdisabled_14',['TRIGGER_DISABLED',['../namespacetram.html#a7df27030d05a9ea15250c9c9811a6f80ac0129f4f79c932b3b87cc690cfafb159',1,'tram']]],\n  ['type_5fbool_15',['TYPE_BOOL',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc',1,'tram']]],\n  ['type_5ffloat32_16',['TYPE_FLOAT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d',1,'tram']]],\n  ['type_5fint16_17',['TYPE_INT16',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4',1,'tram']]],\n  ['type_5fint32_18',['TYPE_INT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5',1,'tram']]],\n  ['type_5fint8_19',['TYPE_INT8',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0',1,'tram']]],\n  ['type_5fname_20',['TYPE_NAME',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c',1,'tram']]],\n  ['type_5fquat_21',['TYPE_QUAT',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b',1,'tram']]],\n  ['type_5fstring_22',['TYPE_STRING',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6',1,'tram']]],\n  ['type_5fuint16_23',['TYPE_UINT16',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef',1,'tram']]],\n  ['type_5fuint32_24',['TYPE_UINT32',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417',1,'tram']]],\n  ['type_5fuint8_25',['TYPE_UINT8',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e',1,'tram']]],\n  ['type_5fundefined_26',['TYPE_UNDEFINED',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05',1,'tram']]],\n  ['type_5fvec2_27',['TYPE_VEC2',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4',1,'tram']]],\n  ['type_5fvec3_28',['TYPE_VEC3',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009',1,'tram']]],\n  ['type_5fvec4_29',['TYPE_VEC4',['../namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_13.js",
    "content": "var searchData=\n[\n  ['ui_0',['UI',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ad88b5fea78202cf57786b8c73b33de50',1,'tram::System']]],\n  ['uint32_1',['UINT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8',1,'tram::Render::VertexAttribute']]],\n  ['unloaded_2',['UNLOADED',['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4aaf2b9e0d9106fbd6dac3913e0b23f11d',1,'tram::Resource']]],\n  ['unlock_3',['UNLOCK',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001',1,'tram::Message']]],\n  ['use_4',['USE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29',1,'tram::Signal']]],\n  ['user_5',['USER',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20',1,'tram::Settings::USER()'],['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a2e40ad879e955201df4dedbf8d479a12',1,'tram::USER()']]],\n  ['userindex_5frigidbody_6',['USERINDEX_RIGIDBODY',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663ca9e73c15871f0e5bf0d0c703f2806847c',1,'tram::Physics::API']]],\n  ['userindex_5ftrigger_7',['USERINDEX_TRIGGER',['../namespacetram_1_1_physics_1_1_a_p_i.html#a142223787cfe33696de7cd92c8ae663cadbe60cd188938c521a61b0ca3cc66b72',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_14.js",
    "content": "var searchData=\n[\n  ['vertex_5fdynamic_0',['VERTEX_DYNAMIC',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a2b7b747a45e6dc165399cd79730221fe',1,'tram::Render']]],\n  ['vertex_5flast_1',['VERTEX_LAST',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac6efea31b82282c07b93044c570f0481',1,'tram::Render']]],\n  ['vertex_5fline_2',['VERTEX_LINE',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8aca3254ad94ebb6b1de5f49ed69adf02d',1,'tram::Render']]],\n  ['vertex_5fsprite_3',['VERTEX_SPRITE',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8a0da15a89b461de653834eec6475e2051',1,'tram::Render']]],\n  ['vertex_5fstatic_4',['VERTEX_STATIC',['../namespacetram_1_1_render.html#a55401591f1faf2a435bdb5eb188ad2c8ac16ec92851118708abd2a9e6d844de77',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_15.js",
    "content": "var searchData=\n[\n  ['warning_0',['WARNING',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a059e9861e0400dfbe05c98a841f3f96b',1,'tram']]],\n  ['widget_1',['WIDGET',['../namespacetram_1_1_g_u_i.html#aed177dc7d46e43f3cf52662fecbaf0a6a48da4725286ba176bffc3ddc5ab2aa24',1,'tram::GUI']]],\n  ['widget_5fborder_2',['WIDGET_BORDER',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a288375715fc56e1428e163f7737c9755',1,'tram::GUI']]],\n  ['widget_5fbottom_5fleft_3',['WIDGET_BOTTOM_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af28be408ba1f85c75d8e82321b1690c9',1,'tram::GUI']]],\n  ['widget_5fbottom_5fmiddle_4',['WIDGET_BOTTOM_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0fb26b364c50c4db472ce498b3f3b2b8',1,'tram::GUI']]],\n  ['widget_5fbottom_5fright_5',['WIDGET_BOTTOM_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4e5a270739d7cd63b52e69ecaae854df',1,'tram::GUI']]],\n  ['widget_5fbutton_6',['WIDGET_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a8fe5f8b635b453d316df64a80e6b0c58',1,'tram::GUI']]],\n  ['widget_5fbutton_5f1_5fwindow_7',['WIDGET_BUTTON_1_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a05c885b34b9322641a6d73aea7773e1f',1,'tram::GUI']]],\n  ['widget_5fbutton_5f2_5fwindow_8',['WIDGET_BUTTON_2_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a811458e951868c94ac60b14eede5c06a',1,'tram::GUI']]],\n  ['widget_5fbutton_5fdisabled_9',['WIDGET_BUTTON_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2d7380a25c2607e1f4918b15bc9a19b9',1,'tram::GUI']]],\n  ['widget_5fbutton_5fdown_10',['WIDGET_BUTTON_DOWN',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a4d5ac84d958f2447cbe84f9aa6febb6e',1,'tram::GUI']]],\n  ['widget_5fbutton_5fexit_11',['WIDGET_BUTTON_EXIT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad8917083f0691ad8480e4663ca65f92f',1,'tram::GUI']]],\n  ['widget_5fbutton_5fhelp_12',['WIDGET_BUTTON_HELP',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a16e6c73545efbda66f5ddf6db3e051b2',1,'tram::GUI']]],\n  ['widget_5fbutton_5fleft_13',['WIDGET_BUTTON_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a686d11c06b4cd2243f53f593038a44a3',1,'tram::GUI']]],\n  ['widget_5fbutton_5fpressed_14',['WIDGET_BUTTON_PRESSED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cb065ba1c044aea4d5324c505196005',1,'tram::GUI']]],\n  ['widget_5fbutton_5fpressed_5fdisabled_15',['WIDGET_BUTTON_PRESSED_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7084cb5cfbd4484e6d25d9e45184e52',1,'tram::GUI']]],\n  ['widget_5fbutton_5fright_16',['WIDGET_BUTTON_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ae1a968e27456a02ea20df7a01edd2925',1,'tram::GUI']]],\n  ['widget_5fbutton_5fselected_5fdisabled_17',['WIDGET_BUTTON_SELECTED_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6624ba8fc8bb24a188aa8aeaef64ad82',1,'tram::GUI']]],\n  ['widget_5fbutton_5fselected_5fenabled_18',['WIDGET_BUTTON_SELECTED_ENABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a6251b4c7c648ebc44de8cd4308496c29',1,'tram::GUI']]],\n  ['widget_5fbutton_5fup_19',['WIDGET_BUTTON_UP',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a88dde871d55777c757c7ac3585cbc315',1,'tram::GUI']]],\n  ['widget_5fcheck_5fbutton_20',['WIDGET_CHECK_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1d1c09efe24b08eecaa3e8499e3c0b04',1,'tram::GUI']]],\n  ['widget_5fdefault_21',['WIDGET_DEFAULT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a81dc1f5bdaeac23554dd91d090c28664',1,'tram::GUI']]],\n  ['widget_5fdivider_5fhorizontal_22',['WIDGET_DIVIDER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a06c7dd7b52ac02d304b96e2d8607df09',1,'tram::GUI']]],\n  ['widget_5fdivider_5fvertical_23',['WIDGET_DIVIDER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a7b49ba0d1d26cfba2cdd5ce3de8a8fda',1,'tram::GUI']]],\n  ['widget_5fleft_24',['WIDGET_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a94196edf414a3b0a32bebd4a2d4098c9',1,'tram::GUI']]],\n  ['widget_5fmiddle_25',['WIDGET_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2cf14d139df473a8ae69fc15f70b0c47',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fleft_26',['WIDGET_MIDDLE_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3781ffd15bc0497fe8bb6914f3f4c162',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fmiddle_27',['WIDGET_MIDDLE_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a72ea4daaba6e760a76d6b40eee74ef44',1,'tram::GUI']]],\n  ['widget_5fmiddle_5fright_28',['WIDGET_MIDDLE_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1adb168efcef55492cffb1228bcc6be6a9',1,'tram::GUI']]],\n  ['widget_5fprogess_5fbar_29',['WIDGET_PROGESS_BAR',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ad64339dee0b99f2734657fb71ccc2c37',1,'tram::GUI']]],\n  ['widget_5fradio_5fbutton_30',['WIDGET_RADIO_BUTTON',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1af03845a03923971c0f0c25be45192525',1,'tram::GUI']]],\n  ['widget_5freverse_5fwindow_31',['WIDGET_REVERSE_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a65b54ebe6aedd029c23657f1f8969d3b',1,'tram::GUI']]],\n  ['widget_5fright_32',['WIDGET_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0b7a3592ed83f984fdb65982278dd291',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5fhorizontal_33',['WIDGET_SCROLL_BAR_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a304530150480931bb8b5b5836ce49cdc',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5ftrack_5fhorizontal_34',['WIDGET_SCROLL_BAR_TRACK_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1bb74bb58fdefa45afa6fe4c3fa242e7',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5ftrack_5fvertical_35',['WIDGET_SCROLL_BAR_TRACK_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a328a052e1848b362bd99119bfc4b5c9f',1,'tram::GUI']]],\n  ['widget_5fscroll_5fbar_5fvertical_36',['WIDGET_SCROLL_BAR_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa7b8ae824573bb1b44f2fc8d402a7e86',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_37',['WIDGET_SELECT_BOX',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3ae7d7c322fc27d607180c633cedc2ec',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_5fpressed_38',['WIDGET_SELECT_BOX_PRESSED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1aa75f29ad29f628c63d9e96408996bd6f',1,'tram::GUI']]],\n  ['widget_5fselect_5fbox_5fselected_39',['WIDGET_SELECT_BOX_SELECTED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1add809a3f52b68a13ba2005f4379d3a44',1,'tram::GUI']]],\n  ['widget_5fslider_5fhorizontal_40',['WIDGET_SLIDER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a3cad8e90400248d0e65e69df03d08543',1,'tram::GUI']]],\n  ['widget_5fslider_5ftrack_5fhorizontal_41',['WIDGET_SLIDER_TRACK_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a2df6db20f587dc87edcd52cf8d6481de',1,'tram::GUI']]],\n  ['widget_5fslider_5ftrack_5fvertical_42',['WIDGET_SLIDER_TRACK_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a631f870e14a146ad565a98757457e00b',1,'tram::GUI']]],\n  ['widget_5fslider_5fvertical_43',['WIDGET_SLIDER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a742bec56b7461b8fac393ba74e5fd334',1,'tram::GUI']]],\n  ['widget_5ftab_44',['WIDGET_TAB',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a83d5658a1b1c8e3d7cc8258a98539e41',1,'tram::GUI']]],\n  ['widget_5ftext_5fbox_45',['WIDGET_TEXT_BOX',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1a58f10d4774879f67773be73099ac95',1,'tram::GUI']]],\n  ['widget_5ftext_5fbox_5fdisabled_46',['WIDGET_TEXT_BOX_DISABLED',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a42eafb8ac9b1e31d0f7d7bb14c5af45f',1,'tram::GUI']]],\n  ['widget_5ftop_5fleft_47',['WIDGET_TOP_LEFT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a1b25994b6b491488d2bb3d21f93be505',1,'tram::GUI']]],\n  ['widget_5ftop_5fmiddle_48',['WIDGET_TOP_MIDDLE',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1ac59c390211a381ff98cd66ff93106e2c',1,'tram::GUI']]],\n  ['widget_5ftop_5fright_49',['WIDGET_TOP_RIGHT',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a39b6661549648d74a3760128c0323dc1',1,'tram::GUI']]],\n  ['widget_5fwindow_50',['WIDGET_WINDOW',['../namespacetram_1_1_g_u_i.html#a6000fd29fa38db33926bfe7980344fe1a0d131a74010abdcb8ccf5fe1eb9d7f5c',1,'tram::GUI']]],\n  ['write_51',['WRITE',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a4e4881217ac0f0eed34368fb2d5fcece',1,'tram::File']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_16.js",
    "content": "var searchData=\n[\n  ['yeet_0',['YEET',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a6e9e1e44ddd4a383ea30f9f1d3fac00d',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_2.js",
    "content": "var searchData=\n[\n  ['callback_0',['CALLBACK',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a1e2e20d91f42657d02e821985a4bd96c',1,'tram::Async']]],\n  ['close_1',['CLOSE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa',1,'tram::Message::CLOSE()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315',1,'tram::Signal::CLOSE()']]],\n  ['coll_5fdynamicobj_2',['COLL_DYNAMICOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ada93bb639c3353ec4e0e96311fd39ad4',1,'tram::Physics']]],\n  ['coll_5fmonster_3',['COLL_MONSTER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8ab4df3752bcc815d93a68e60b473f3473',1,'tram::Physics']]],\n  ['coll_5fplayer_4',['COLL_PLAYER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a841ef1760b61cef0e7da530c47cafb65',1,'tram::Physics']]],\n  ['coll_5fstaticobj_5',['COLL_STATICOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a692e3914ee76adacd3617acf7c0b001f',1,'tram::Physics']]],\n  ['coll_5ftrigger_6',['COLL_TRIGGER',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a0a6bfe7e23b7e4bc04404c729057a658',1,'tram::Physics']]],\n  ['coll_5fvehicle_7',['COLL_VEHICLE',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a4fe6355fc11904c1e79a3b936e299287',1,'tram::Physics']]],\n  ['coll_5fworldobj_8',['COLL_WORLDOBJ',['../namespacetram_1_1_physics.html#a5b8f6a7bd1ffb55b55a5f534008406f8a592c0e5ecae83ad6b89e1c408b1434ec',1,'tram::Physics']]],\n  ['colormode_5fr_9',['COLORMODE_R',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a85a444049030a1778193c39eed3a0519',1,'tram::Render']]],\n  ['colormode_5frg_10',['COLORMODE_RG',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894a74b0578836d9a93c2731f68b14224cda',1,'tram::Render']]],\n  ['colormode_5frgb_11',['COLORMODE_RGB',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae9f556d36de484416685e7e5d2bd3efc',1,'tram::Render']]],\n  ['colormode_5frgba_12',['COLORMODE_RGBA',['../namespacetram_1_1_render.html#ac973dc59905532e29e79841ae76af894ae27c6265a9141741207b650f597a74ae',1,'tram::Render']]],\n  ['component_13',['COMPONENT',['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a3c24b0dd40835b178028420b095d347e',1,'tram::Async']]],\n  ['context_5fdirect3d_14',['CONTEXT_DIRECT3D',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a40b500f8960ee646ebd96e8d05dae86e',1,'tram::Render::API']]],\n  ['context_5fnone_15',['CONTEXT_NONE',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a3f5d25beb76d002f053806e9cfe529b2',1,'tram::Render::API']]],\n  ['context_5fopengl_16',['CONTEXT_OPENGL',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230aac082f7410744614278abecf95d7ba9f',1,'tram::Render::API']]],\n  ['context_5fsoftware_17',['CONTEXT_SOFTWARE',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230ab492cfde782a179b9019e8691e20d8ae',1,'tram::Render::API']]],\n  ['context_5fwebgl_18',['CONTEXT_WEBGL',['../namespacetram_1_1_render_1_1_a_p_i.html#a4aa628366e46526d2722302d9ce9d230a1c61e90aa0c562e92bb6f53ee5f01160',1,'tram::Render::API']]],\n  ['core_19',['CORE',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0',1,'tram::System']]],\n  ['critical_5ferror_20',['CRITICAL_ERROR',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5',1,'tram']]],\n  ['cursor_5fclick_21',['CURSOR_CLICK',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2',1,'tram::UI::CURSOR_CLICK()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa92266bf16a3d2465b5b78fc4b7657dec',1,'tram::Platform::Window::CURSOR_CLICK()']]],\n  ['cursor_5fdefault_22',['CURSOR_DEFAULT',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2',1,'tram::UI::CURSOR_DEFAULT()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fa4ef504a754ec99acfe83324f48f35131',1,'tram::Platform::Window::CURSOR_DEFAULT()']]],\n  ['cursor_5ftext_23',['CURSOR_TEXT',['../namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd',1,'tram::UI::CURSOR_TEXT()'],['../namespacetram_1_1_platform_1_1_window.html#a1ed03f0da21527169589f581e55c881fad289a01bac20159f7b9ce592364b5f0c',1,'tram::Platform::Window::CURSOR_TEXT()']]],\n  ['cursorpos_24',['CURSORPOS',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd',1,'tram::Event']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_3.js",
    "content": "var searchData=\n[\n  ['debug_5fdraw_0',['DEBUG_DRAW',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326',1,'tram::WorldCell']]],\n  ['default_1',['DEFAULT',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a5b39c8b553c821e7cddc6da64b5bd2ee',1,'tram']]],\n  ['deleted_2',['DELETED',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a755858b0f8f5109a99faab0024d3606d',1,'tram::Entity']]],\n  ['dialog_5fimport_5fmultiple_3',['DIALOG_IMPORT_MULTIPLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a1f9c9efebeaf5ae87702e8d7f0e857f1',1,'tram::Ext::Kitchensink']]],\n  ['dialog_5fimport_5fsingle_4',['DIALOG_IMPORT_SINGLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54aa7241fe428070fbc73d0d87ee7d667bd',1,'tram::Ext::Kitchensink']]],\n  ['dialog_5ftopic_5',['DIALOG_TOPIC',['../namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5',1,'tram::Ext::Kitchensink']]],\n  ['dirty_6',['DIRTY',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378af7284fe296d74a18b12dab1faee25e7e',1,'tram::Entity']]],\n  ['disable_5fauto_5fload_7',['DISABLE_AUTO_LOAD',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a1f8b96cb9a0642c1ce332e10d9b01152',1,'tram::Entity']]],\n  ['disk_8',['DISK',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a290d4b81f4e2b47d86fd1b0170e9aab7',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_4.js",
    "content": "var searchData=\n[\n  ['effect_5fnegate_5fchange_0',['EFFECT_NEGATE_CHANGE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa09ec84b29c3ed038c814ca806a69c13b',1,'tram::Ext::Kitchensink']]],\n  ['effect_5fraise_5fbase_1',['EFFECT_RAISE_BASE',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa92bb5b3112a435f52d9cee38c24cff0f',1,'tram::Ext::Kitchensink']]],\n  ['effect_5fraise_5fconstant_2',['EFFECT_RAISE_CONSTANT',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6c0031a7853f40659433180bd98fb62aa423e4ab891e299f94c62e8e47d1d0b56',1,'tram::Ext::Kitchensink']]],\n  ['end_5fclose_3',['END_CLOSE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2',1,'tram::Signal']]],\n  ['end_5fopen_4',['END_OPEN',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f',1,'tram::Signal']]],\n  ['enter_5ftrigger_5',['ENTER_TRIGGER',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c',1,'tram::Signal']]],\n  ['error_6',['ERROR',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56abb1ca97ec761fc37101737ba0aa2e7c5',1,'tram']]],\n  ['exit_5ftrigger_7',['EXIT_TRIGGER',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4',1,'tram::Signal']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_5.js",
    "content": "var searchData=\n[\n  ['ffp_5fbone_5findex_0',['FFP_BONE_INDEX',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fbone_5fweight_1',['FFP_BONE_WEIGHT',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fcolor_2',['FFP_COLOR',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fignore_3',['FFP_IGNORE',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5flightmap_4',['FFP_LIGHTMAP',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fnormal_5',['FFP_NORMAL',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5fposition_6',['FFP_POSITION',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08',1,'tram::Render::VertexAttribute']]],\n  ['ffp_5ftexture_7',['FFP_TEXTURE',['../structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86',1,'tram::Render::VertexAttribute']]],\n  ['field_5fanimation_8',['FIELD_ANIMATION',['../namespacetram.html#a21be90fb412cdf8c5703ab2155b270a4a294cfaf164e1fc2aa7233f26a29041d3',1,'tram']]],\n  ['field_5fcollision_5fmask_9',['FIELD_COLLISION_MASK',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a9613ced1d60f3a1213ebb4ee3c5fef82',1,'tram']]],\n  ['field_5fcollmodel_10',['FIELD_COLLMODEL',['../namespacetram.html#abebf242bd359cf070de0a7074f31d7c2a7d3bbda6c810b29444fe1f7ba9d2a33f',1,'tram']]],\n  ['field_5fcolor_11',['FIELD_COLOR',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca40844fb482bc115a59cb3946075b8bf8',1,'tram']]],\n  ['field_5fdirection_12',['FIELD_DIRECTION',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4cad5f489826b6b9f360cd8f9f72a657708',1,'tram']]],\n  ['field_5fdistance_13',['FIELD_DISTANCE',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4ca5a7593cfaa5e8d4b977d96749103b34f',1,'tram']]],\n  ['field_5fexponent_14',['FIELD_EXPONENT',['../namespacetram.html#a480f7c687b7792584a6b60552bf1ce4caec62432636aab03a5e13f90c724f3f2a',1,'tram']]],\n  ['field_5fflags_15',['FIELD_FLAGS',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a209938ad94122f6e58232d271d762615',1,'tram']]],\n  ['field_5flightmap_16',['FIELD_LIGHTMAP',['../namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b',1,'tram']]],\n  ['field_5fmodel_17',['FIELD_MODEL',['../namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be',1,'tram']]],\n  ['field_5fserialize_18',['FIELD_SERIALIZE',['../classtram_1_1_entity.html#a9c07ba341c9b5a9d969a5ba58ccb7d8fa2de12a0ad5fcc748aaa165d9c5cab16b',1,'tram::Entity']]],\n  ['field_5fsound_19',['FIELD_SOUND',['../namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a3567cbf4114feaeae8973646109c78c6',1,'tram']]],\n  ['field_5fvolume_20',['FIELD_VOLUME',['../namespacetram.html#a32f771ce4ec7817ac72d4835f558c424a5a098c343d8b04be1628923d86b259a2',1,'tram']]],\n  ['filter_5flinear_21',['FILTER_LINEAR',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca6de99baf59757370ce7015f1acdabfc7',1,'tram::Render']]],\n  ['filter_5fnearest_22',['FILTER_NEAREST',['../namespacetram_1_1_render.html#aab519c3dc6ead26c1a7695e4c3b5501ca3f92e1775eab20a3d572e3256446199c',1,'tram::Render']]],\n  ['flag_5fdeleted_23',['FLAG_DELETED',['../classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7ab892ee7040996433c21bafc1cbe06b83',1,'tram::Hashmap']]],\n  ['flag_5fdisable_5flighting_24',['FLAG_DISABLE_LIGHTING',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca98b0957a0ef2b44bc45bad5f3eca0223',1,'tram::Render']]],\n  ['flag_5fdraw_5findexed_25',['FLAG_DRAW_INDEXED',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca21d08069337093c63805e471da1044ab',1,'tram::Render']]],\n  ['flag_5fdraw_5flines_26',['FLAG_DRAW_LINES',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf506d03848aef5c27c97cd4798ef2d0a',1,'tram::Render']]],\n  ['flag_5flocked_27',['FLAG_LOCKED',['../namespacetram.html#ace0f2946cbdd6fa99edd7597d589c36aab86ea350289e16e0769a2c5ded29841c',1,'tram']]],\n  ['flag_5fno_5fdebug_28',['FLAG_NO_DEBUG',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca2edd1aba3d257f1a0649ac703f1487e9',1,'tram::Render']]],\n  ['flag_5fno_5fdepth_5ftest_29',['FLAG_NO_DEPTH_TEST',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9cae7db99a59b57cfb480a99322e5ee3282',1,'tram::Render']]],\n  ['flag_5fno_5fdirectional_30',['FLAG_NO_DIRECTIONAL',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caf3fc1cfd17228e4739e682643d403aaf',1,'tram::Render']]],\n  ['flag_5fno_5frender_31',['FLAG_NO_RENDER',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca08d94ef5eb8ba141c253f1d338873bd4',1,'tram::Render']]],\n  ['flag_5frecord_32',['FLAG_RECORD',['../classtram_1_1_hashmap.html#a5dba31c8c90742090caf46529e6771c7accc46643e3f50f499ab2ffac37d02f74',1,'tram::Hashmap']]],\n  ['flag_5frender_33',['FLAG_RENDER',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca9a2628bf2260f59af082c0527ec370a4',1,'tram::Render']]],\n  ['flag_5freverse_5fsort_34',['FLAG_REVERSE_SORT',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca67cbaea35d33f46ff65e43e7180d1bb9',1,'tram::Render']]],\n  ['flag_5ftransparent_35',['FLAG_TRANSPARENT',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9caed3ea54d0ca27e6f6ccf6bbf97de2d8a',1,'tram::Render']]],\n  ['flag_5fuse_5faabb_36',['FLAG_USE_AABB',['../namespacetram_1_1_render.html#ac048699f6dc8dc5b8681c8aa3ac65d9ca6d518bb47788015018288f63f111d364',1,'tram::Render']]],\n  ['float32_37',['FLOAT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495',1,'tram::Render::VertexAttribute']]],\n  ['frame_38',['FRAME',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa',1,'tram::Event']]],\n  ['frame_5fbottom_39',['FRAME_BOTTOM',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa7748663007d8947e6bf4bce366df534c',1,'tram::GUI']]],\n  ['frame_5fbottom_5finv_40',['FRAME_BOTTOM_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefacfb3ce3ac246f9bc9609bfb340ae7dfd',1,'tram::GUI']]],\n  ['frame_5fcenter_5fhorizontal_41',['FRAME_CENTER_HORIZONTAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa95bd1777b43114754f8c3dba6b2918e6',1,'tram::GUI']]],\n  ['frame_5fcenter_5fvertical_42',['FRAME_CENTER_VERTICAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa2ea467ec8de3c873daca99f6e28bd484',1,'tram::GUI']]],\n  ['frame_5finset_43',['FRAME_INSET',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa98142b3610036479f66047dcf5277a71',1,'tram::GUI']]],\n  ['frame_5fleft_44',['FRAME_LEFT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefafce4689473a6a893962e0605f8ba84e7',1,'tram::GUI']]],\n  ['frame_5fleft_5finv_45',['FRAME_LEFT_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaf3de8d80436e3cd82525f79e84ff1057',1,'tram::GUI']]],\n  ['frame_5fright_46',['FRAME_RIGHT',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa12ad966aac117df6a4f0090230801f25',1,'tram::GUI']]],\n  ['frame_5fright_5finv_47',['FRAME_RIGHT_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa79e0b80984df5db58ef3e444503984a7',1,'tram::GUI']]],\n  ['frame_5ftop_48',['FRAME_TOP',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa5f7d391746d81b33b1a09ac367bbd9d6',1,'tram::GUI']]],\n  ['frame_5ftop_5finv_49',['FRAME_TOP_INV',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa9a17d7ae2dca7f74667d4ca2d132ee73',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_6.js",
    "content": "var searchData=\n[\n  ['gui_0',['GUI',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a26ca0a3dcc38523be3b96f153dac237a',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_7.js",
    "content": "var searchData=\n[\n  ['http_0',['HTTP',['../namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531a293c9ea246ff9985dc6f62a650f78986',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_8.js",
    "content": "var searchData=\n[\n  ['info_0',['INFO',['../namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a551b723eafd6a31d444fcb2f5920fbd3',1,'tram']]],\n  ['init_1',['INIT',['../namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2a8549b677c065a257a9f4d0c56a38cf38',1,'tram::System']]],\n  ['int32_2',['INT32',['../structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a',1,'tram::Render::VertexAttribute']]],\n  ['interior_3',['INTERIOR',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507',1,'tram::WorldCell']]],\n  ['interior_5flighting_4',['INTERIOR_LIGHTING',['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101',1,'tram::WorldCell']]],\n  ['invalid_5',['INVALID',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ac3f542a5593bbe1407d0beb44980d861',1,'tram::System']]],\n  ['io_5ferror_6',['IO_ERROR',['../namespacetram.html#a972c59287ba467dbfe003f137609550da198489bd72edc2407c15917c5323cd93',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_9.js",
    "content": "var searchData=\n[\n  ['key_5f0_0',['KEY_0',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e',1,'tram::UI']]],\n  ['key_5f1_1',['KEY_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae',1,'tram::UI']]],\n  ['key_5f2_2',['KEY_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41',1,'tram::UI']]],\n  ['key_5f3_3',['KEY_3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37',1,'tram::UI']]],\n  ['key_5f4_4',['KEY_4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736',1,'tram::UI']]],\n  ['key_5f5_5',['KEY_5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584',1,'tram::UI']]],\n  ['key_5f6_6',['KEY_6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390',1,'tram::UI']]],\n  ['key_5f7_7',['KEY_7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da',1,'tram::UI']]],\n  ['key_5f8_8',['KEY_8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004',1,'tram::UI']]],\n  ['key_5f9_9',['KEY_9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e',1,'tram::UI']]],\n  ['key_5fa_10',['KEY_A',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9',1,'tram::UI']]],\n  ['key_5faction_5factivate_11',['KEY_ACTION_ACTIVATE',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd',1,'tram::UI']]],\n  ['key_5faction_5fbackward_12',['KEY_ACTION_BACKWARD',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39',1,'tram::UI']]],\n  ['key_5faction_5fcrouch_13',['KEY_ACTION_CROUCH',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2',1,'tram::UI']]],\n  ['key_5faction_5fdown_14',['KEY_ACTION_DOWN',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603',1,'tram::UI']]],\n  ['key_5faction_5ffly_15',['KEY_ACTION_FLY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7',1,'tram::UI']]],\n  ['key_5faction_5fforward_16',['KEY_ACTION_FORWARD',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0',1,'tram::UI']]],\n  ['key_5faction_5fjump_17',['KEY_ACTION_JUMP',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e',1,'tram::UI']]],\n  ['key_5faction_5flast_18',['KEY_ACTION_LAST',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9',1,'tram::UI']]],\n  ['key_5faction_5fleft_19',['KEY_ACTION_LEFT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb',1,'tram::UI']]],\n  ['key_5faction_5fnone_20',['KEY_ACTION_NONE',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40',1,'tram::UI']]],\n  ['key_5faction_5fprimary_21',['KEY_ACTION_PRIMARY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90',1,'tram::UI']]],\n  ['key_5faction_5fright_22',['KEY_ACTION_RIGHT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea',1,'tram::UI']]],\n  ['key_5faction_5fsecondary_23',['KEY_ACTION_SECONDARY',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c',1,'tram::UI']]],\n  ['key_5faction_5fsprint_24',['KEY_ACTION_SPRINT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e',1,'tram::UI']]],\n  ['key_5faction_5fstrafe_5fleft_25',['KEY_ACTION_STRAFE_LEFT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9',1,'tram::UI']]],\n  ['key_5faction_5fstrafe_5fright_26',['KEY_ACTION_STRAFE_RIGHT',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9',1,'tram::UI']]],\n  ['key_5faction_5fup_27',['KEY_ACTION_UP',['../namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859',1,'tram::UI']]],\n  ['key_5fapostrophe_28',['KEY_APOSTROPHE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf',1,'tram::UI']]],\n  ['key_5fb_29',['KEY_B',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7',1,'tram::UI']]],\n  ['key_5fbackslash_30',['KEY_BACKSLASH',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30',1,'tram::UI']]],\n  ['key_5fbackspace_31',['KEY_BACKSPACE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c',1,'tram::UI']]],\n  ['key_5fc_32',['KEY_C',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111',1,'tram::UI']]],\n  ['key_5fcaps_5flock_33',['KEY_CAPS_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3',1,'tram::UI']]],\n  ['key_5fcomma_34',['KEY_COMMA',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3',1,'tram::UI']]],\n  ['key_5fd_35',['KEY_D',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283',1,'tram::UI']]],\n  ['key_5fdelete_36',['KEY_DELETE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f',1,'tram::UI']]],\n  ['key_5fdown_37',['KEY_DOWN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7',1,'tram::UI']]],\n  ['key_5fe_38',['KEY_E',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea',1,'tram::UI']]],\n  ['key_5fend_39',['KEY_END',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95',1,'tram::UI']]],\n  ['key_5fenter_40',['KEY_ENTER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d',1,'tram::UI']]],\n  ['key_5fequal_41',['KEY_EQUAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd',1,'tram::UI']]],\n  ['key_5fescape_42',['KEY_ESCAPE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49',1,'tram::UI']]],\n  ['key_5ff_43',['KEY_F',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3',1,'tram::UI']]],\n  ['key_5ff1_44',['KEY_F1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126',1,'tram::UI']]],\n  ['key_5ff10_45',['KEY_F10',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78',1,'tram::UI']]],\n  ['key_5ff11_46',['KEY_F11',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03',1,'tram::UI']]],\n  ['key_5ff12_47',['KEY_F12',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd',1,'tram::UI']]],\n  ['key_5ff13_48',['KEY_F13',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783',1,'tram::UI']]],\n  ['key_5ff14_49',['KEY_F14',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6',1,'tram::UI']]],\n  ['key_5ff15_50',['KEY_F15',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36',1,'tram::UI']]],\n  ['key_5ff16_51',['KEY_F16',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819',1,'tram::UI']]],\n  ['key_5ff17_52',['KEY_F17',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa',1,'tram::UI']]],\n  ['key_5ff18_53',['KEY_F18',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb',1,'tram::UI']]],\n  ['key_5ff19_54',['KEY_F19',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910',1,'tram::UI']]],\n  ['key_5ff2_55',['KEY_F2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc',1,'tram::UI']]],\n  ['key_5ff20_56',['KEY_F20',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03',1,'tram::UI']]],\n  ['key_5ff21_57',['KEY_F21',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410',1,'tram::UI']]],\n  ['key_5ff22_58',['KEY_F22',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7',1,'tram::UI']]],\n  ['key_5ff23_59',['KEY_F23',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c',1,'tram::UI']]],\n  ['key_5ff24_60',['KEY_F24',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd',1,'tram::UI']]],\n  ['key_5ff25_61',['KEY_F25',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0',1,'tram::UI']]],\n  ['key_5ff3_62',['KEY_F3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b',1,'tram::UI']]],\n  ['key_5ff4_63',['KEY_F4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d',1,'tram::UI']]],\n  ['key_5ff5_64',['KEY_F5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a',1,'tram::UI']]],\n  ['key_5ff6_65',['KEY_F6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523',1,'tram::UI']]],\n  ['key_5ff7_66',['KEY_F7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4',1,'tram::UI']]],\n  ['key_5ff8_67',['KEY_F8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083',1,'tram::UI']]],\n  ['key_5ff9_68',['KEY_F9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2',1,'tram::UI']]],\n  ['key_5fg_69',['KEY_G',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20',1,'tram::UI']]],\n  ['key_5fgrave_5faccent_70',['KEY_GRAVE_ACCENT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed',1,'tram::UI']]],\n  ['key_5fh_71',['KEY_H',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808',1,'tram::UI']]],\n  ['key_5fhome_72',['KEY_HOME',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc',1,'tram::UI']]],\n  ['key_5fi_73',['KEY_I',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787',1,'tram::UI']]],\n  ['key_5finsert_74',['KEY_INSERT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508',1,'tram::UI']]],\n  ['key_5fj_75',['KEY_J',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66',1,'tram::UI']]],\n  ['key_5fk_76',['KEY_K',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab',1,'tram::UI']]],\n  ['key_5fkp_5f0_77',['KEY_KP_0',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be',1,'tram::UI']]],\n  ['key_5fkp_5f1_78',['KEY_KP_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d',1,'tram::UI']]],\n  ['key_5fkp_5f2_79',['KEY_KP_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded',1,'tram::UI']]],\n  ['key_5fkp_5f3_80',['KEY_KP_3',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c',1,'tram::UI']]],\n  ['key_5fkp_5f4_81',['KEY_KP_4',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172',1,'tram::UI']]],\n  ['key_5fkp_5f5_82',['KEY_KP_5',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498',1,'tram::UI']]],\n  ['key_5fkp_5f6_83',['KEY_KP_6',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5',1,'tram::UI']]],\n  ['key_5fkp_5f7_84',['KEY_KP_7',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a',1,'tram::UI']]],\n  ['key_5fkp_5f8_85',['KEY_KP_8',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901',1,'tram::UI']]],\n  ['key_5fkp_5f9_86',['KEY_KP_9',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959',1,'tram::UI']]],\n  ['key_5fkp_5fadd_87',['KEY_KP_ADD',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b',1,'tram::UI']]],\n  ['key_5fkp_5fdecimal_88',['KEY_KP_DECIMAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862',1,'tram::UI']]],\n  ['key_5fkp_5fdivide_89',['KEY_KP_DIVIDE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49',1,'tram::UI']]],\n  ['key_5fkp_5fenter_90',['KEY_KP_ENTER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665',1,'tram::UI']]],\n  ['key_5fkp_5fequal_91',['KEY_KP_EQUAL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad',1,'tram::UI']]],\n  ['key_5fkp_5fmultiply_92',['KEY_KP_MULTIPLY',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5',1,'tram::UI']]],\n  ['key_5fkp_5fsubtract_93',['KEY_KP_SUBTRACT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd',1,'tram::UI']]],\n  ['key_5fl_94',['KEY_L',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc',1,'tram::UI']]],\n  ['key_5flastaxis_95',['KEY_LASTAXIS',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2',1,'tram::UI']]],\n  ['key_5flastkey_96',['KEY_LASTKEY',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450',1,'tram::UI']]],\n  ['key_5fleft_97',['KEY_LEFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6',1,'tram::UI']]],\n  ['key_5fleft_5falt_98',['KEY_LEFT_ALT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34',1,'tram::UI']]],\n  ['key_5fleft_5fbracket_99',['KEY_LEFT_BRACKET',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849',1,'tram::UI']]],\n  ['key_5fleft_5fcontrol_100',['KEY_LEFT_CONTROL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35',1,'tram::UI']]],\n  ['key_5fleft_5fshift_101',['KEY_LEFT_SHIFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c',1,'tram::UI']]],\n  ['key_5fleft_5fsuper_102',['KEY_LEFT_SUPER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7',1,'tram::UI']]],\n  ['key_5fleftmouse_103',['KEY_LEFTMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e',1,'tram::UI']]],\n  ['key_5fm_104',['KEY_M',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d',1,'tram::UI']]],\n  ['key_5fmenu_105',['KEY_MENU',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825',1,'tram::UI']]],\n  ['key_5fmiddlemouse_106',['KEY_MIDDLEMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de',1,'tram::UI']]],\n  ['key_5fminus_107',['KEY_MINUS',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3',1,'tram::UI']]],\n  ['key_5fmouse_5fscroll_108',['KEY_MOUSE_SCROLL',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a',1,'tram::UI']]],\n  ['key_5fmouse_5fx_109',['KEY_MOUSE_X',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077',1,'tram::UI']]],\n  ['key_5fmouse_5fy_110',['KEY_MOUSE_Y',['../namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401',1,'tram::UI']]],\n  ['key_5fn_111',['KEY_N',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25',1,'tram::UI']]],\n  ['key_5fnum_5flock_112',['KEY_NUM_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462',1,'tram::UI']]],\n  ['key_5fo_113',['KEY_O',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01',1,'tram::UI']]],\n  ['key_5fp_114',['KEY_P',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695',1,'tram::UI']]],\n  ['key_5fpage_5fdown_115',['KEY_PAGE_DOWN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac',1,'tram::UI']]],\n  ['key_5fpage_5fup_116',['KEY_PAGE_UP',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e',1,'tram::UI']]],\n  ['key_5fpause_117',['KEY_PAUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50',1,'tram::UI']]],\n  ['key_5fperiod_118',['KEY_PERIOD',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0',1,'tram::UI']]],\n  ['key_5fprint_5fscreen_119',['KEY_PRINT_SCREEN',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12',1,'tram::UI']]],\n  ['key_5fq_120',['KEY_Q',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6',1,'tram::UI']]],\n  ['key_5fr_121',['KEY_R',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc',1,'tram::UI']]],\n  ['key_5fright_122',['KEY_RIGHT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6',1,'tram::UI']]],\n  ['key_5fright_5falt_123',['KEY_RIGHT_ALT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16',1,'tram::UI']]],\n  ['key_5fright_5fbracket_124',['KEY_RIGHT_BRACKET',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc',1,'tram::UI']]],\n  ['key_5fright_5fcontrol_125',['KEY_RIGHT_CONTROL',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321',1,'tram::UI']]],\n  ['key_5fright_5fshift_126',['KEY_RIGHT_SHIFT',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6',1,'tram::UI']]],\n  ['key_5fright_5fsuper_127',['KEY_RIGHT_SUPER',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96',1,'tram::UI']]],\n  ['key_5frightmouse_128',['KEY_RIGHTMOUSE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479',1,'tram::UI']]],\n  ['key_5fs_129',['KEY_S',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4',1,'tram::UI']]],\n  ['key_5fscroll_5flock_130',['KEY_SCROLL_LOCK',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163',1,'tram::UI']]],\n  ['key_5fsemicolon_131',['KEY_SEMICOLON',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12',1,'tram::UI']]],\n  ['key_5fslash_132',['KEY_SLASH',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d',1,'tram::UI']]],\n  ['key_5fspace_133',['KEY_SPACE',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91',1,'tram::UI']]],\n  ['key_5ft_134',['KEY_T',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6',1,'tram::UI']]],\n  ['key_5ftab_135',['KEY_TAB',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce',1,'tram::UI']]],\n  ['key_5fu_136',['KEY_U',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8',1,'tram::UI']]],\n  ['key_5fup_137',['KEY_UP',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513',1,'tram::UI']]],\n  ['key_5fv_138',['KEY_V',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72',1,'tram::UI']]],\n  ['key_5fw_139',['KEY_W',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a',1,'tram::UI']]],\n  ['key_5fworld_5f1_140',['KEY_WORLD_1',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306',1,'tram::UI']]],\n  ['key_5fworld_5f2_141',['KEY_WORLD_2',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8',1,'tram::UI']]],\n  ['key_5fx_142',['KEY_X',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c',1,'tram::UI']]],\n  ['key_5fy_143',['KEY_Y',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b',1,'tram::UI']]],\n  ['key_5fz_144',['KEY_Z',['../namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2',1,'tram::UI']]],\n  ['keychar_145',['KEYCHAR',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201',1,'tram::Event']]],\n  ['keydown_146',['KEYDOWN',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393',1,'tram::Event']]],\n  ['keypress_147',['KEYPRESS',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1',1,'tram::Event']]],\n  ['keyup_148',['KEYUP',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03',1,'tram::Event']]],\n  ['kill_149',['KILL',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6',1,'tram::Signal::KILL()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb',1,'tram::Message::KILL()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_a.js",
    "content": "var searchData=\n[\n  ['last_5fevent_0',['LAST_EVENT',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8',1,'tram::Event']]],\n  ['last_5fmessage_1',['LAST_MESSAGE',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303',1,'tram::Message']]],\n  ['last_5fsignal_2',['LAST_SIGNAL',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f',1,'tram::Signal']]],\n  ['line_5fhigh_3',['LINE_HIGH',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefaa82e6b81c1dad1e5be58b33af7dd8d13',1,'tram::GUI']]],\n  ['line_5flow_4',['LINE_LOW',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa25770615c52ba66df41c25c40f294120',1,'tram::GUI']]],\n  ['line_5fnormal_5',['LINE_NORMAL',['../namespacetram_1_1_g_u_i.html#a25b2f7af6fe6845d047fd58c6232deefa88618d8270351e0a56f9c48b9a7ea890',1,'tram::GUI']]],\n  ['listener_5fcomponent_6',['LISTENER_COMPONENT',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99',1,'tram::ListenerInfo']]],\n  ['listener_5fdata_5ffunction_7',['LISTENER_DATA_FUNCTION',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c',1,'tram::ListenerInfo']]],\n  ['listener_5fdeleted_8',['LISTENER_DELETED',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0',1,'tram::ListenerInfo']]],\n  ['listener_5fentity_9',['LISTENER_ENTITY',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b',1,'tram::ListenerInfo']]],\n  ['listener_5ffunction_10',['LISTENER_FUNCTION',['../structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5',1,'tram::ListenerInfo']]],\n  ['loaded_11',['LOADED',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a58c799076c57526cf98b222b7c9ccb0b',1,'tram::Entity::LOADED()'],['../classtram_1_1_resource.html#a7a4ce943d482665189305b828868c2a4a1cd089eb2e1c0a5a211eed70d4cd18f2',1,'tram::Resource::LOADED()'],['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1',1,'tram::WorldCell::LOADED()']]],\n  ['loaded_5ffrom_5fdisk_12',['LOADED_FROM_DISK',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a6527c86a34651be34b20c68178af4cdd',1,'tram::Entity::LOADED_FROM_DISK()'],['../classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d',1,'tram::WorldCell::LOADED_FROM_DISK()']]],\n  ['lock_13',['LOCK',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760',1,'tram::Message']]],\n  ['locked_5fuse_14',['LOCKED_USE',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78',1,'tram::Signal']]],\n  ['look_5fat_15',['LOOK_AT',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d',1,'tram::Event']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_b.js",
    "content": "var searchData=\n[\n  ['material_5fenvironmentmap_0',['MATERIAL_ENVIRONMENTMAP',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab3c06e1d79de6f9c4b972d1cb999da4d',1,'tram::Render']]],\n  ['material_5fflat_5fcolor_1',['MATERIAL_FLAT_COLOR',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eaa6dd8472dc4c68ec742267e42f35b943',1,'tram::Render']]],\n  ['material_5fglyph_2',['MATERIAL_GLYPH',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea682ec4dc9c0e2f2bc0c9240a2a2ea004',1,'tram::Render']]],\n  ['material_5flast_3',['MATERIAL_LAST',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea5b08ab6f4c7f3deb1d5d137e5beb629f',1,'tram::Render']]],\n  ['material_5flightmap_4',['MATERIAL_LIGHTMAP',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea18dd7f6f787feb198b3e7edb65298605',1,'tram::Render']]],\n  ['material_5fmsdf_5',['MATERIAL_MSDF',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead0ee78b3fd22ca7f74c90e0599f8ef0f',1,'tram::Render']]],\n  ['material_5ftexture_6',['MATERIAL_TEXTURE',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ead42b4d3349a29728811b787cc7bc7632',1,'tram::Render']]],\n  ['material_5ftexture_5falpha_7',['MATERIAL_TEXTURE_ALPHA',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003ea3812bb1fe713fff55c3ed971c25324ac',1,'tram::Render']]],\n  ['material_5fwater_8',['MATERIAL_WATER',['../namespacetram_1_1_render.html#a315a4bade1773ce2a425e5e7702c003eab4828c9e426ef1f1cc97c9d20fb9d6dc',1,'tram::Render']]],\n  ['menu_9',['MENU',['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273',1,'tram::Settings']]],\n  ['metadata_5frigidbody_10',['METADATA_RIGIDBODY',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a683885e7afa6ad15b84e90ec65051818',1,'tram::Physics::API']]],\n  ['metadata_5ftrigger_11',['METADATA_TRIGGER',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0a5fb012083160bfb528a3b549ce276c04',1,'tram::Physics::API']]],\n  ['misc_12',['MISC',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65abeb938a79405470de9ba19372a7eb207',1,'tram::System']]],\n  ['move_5fpick_5fup_13',['MOVE_PICK_UP',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107',1,'tram::Message']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_c.js",
    "content": "var searchData=\n[\n  ['non_5fpersistent_0',['NON_PERSISTENT',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a2b07df103621567e55bd08cf7eaf6295',1,'tram::Entity']]],\n  ['non_5fserializable_1',['NON_SERIALIZABLE',['../classtram_1_1_entity.html#aaed86a9cc626eeab1796509f702ff378a801be8e427a55a5afd0ab13515c3b4c3',1,'tram::Entity']]],\n  ['none_2',['NONE',['../structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77',1,'tram::Event::NONE()'],['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748',1,'tram::Message::NONE()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4',1,'tram::Signal::NONE()'],['../namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5a81db66b6ed079088749c66cca26aa725',1,'tram::Async::NONE()'],['../namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530',1,'tram::Settings::NONE()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_d.js",
    "content": "var searchData=\n[\n  ['octant_5fbottom_5fleft_5fback_0',['OCTANT_BOTTOM_LEFT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a2725927ea43dc9ad1d75bf626e7a3122',1,'tram::Octree']]],\n  ['octant_5fbottom_5fleft_5ffront_1',['OCTANT_BOTTOM_LEFT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aa2db770146af64ef460c9178aa13e716',1,'tram::Octree']]],\n  ['octant_5fbottom_5fright_5fback_2',['OCTANT_BOTTOM_RIGHT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321afa2be5c65b39f91ddb5ce010124498b9',1,'tram::Octree']]],\n  ['octant_5fbottom_5fright_5ffront_3',['OCTANT_BOTTOM_RIGHT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a1216bd5563a5df6cc9d366567ade4ca9',1,'tram::Octree']]],\n  ['octant_5ftop_5fleft_5fback_4',['OCTANT_TOP_LEFT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a80ea459a34a50a932b66112239ddfe02',1,'tram::Octree']]],\n  ['octant_5ftop_5fleft_5ffront_5',['OCTANT_TOP_LEFT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321aff19451a99f6f71ad5c4ffc06c011ddc',1,'tram::Octree']]],\n  ['octant_5ftop_5fright_5fback_6',['OCTANT_TOP_RIGHT_BACK',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a49bfceafb3d3275a8eb3b92b6efc7494',1,'tram::Octree']]],\n  ['octant_5ftop_5fright_5ffront_7',['OCTANT_TOP_RIGHT_FRONT',['../classtram_1_1_octree.html#a7d20e8b44f034b8f8c6748d004c72321a34ff0d0904aca63b2f65a0ffcb5f779a',1,'tram::Octree']]],\n  ['open_8',['OPEN',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af',1,'tram::Message::OPEN()'],['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927',1,'tram::Signal::OPEN()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_e.js",
    "content": "var searchData=\n[\n  ['path_5fcurve_0',['PATH_CURVE',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a2fb053d09179ae21da8b7f17c2f6861b',1,'tram']]],\n  ['path_5fleft_1',['PATH_LEFT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a468f0ebb474e7d12003ea27e5db8b617',1,'tram']]],\n  ['path_5flinear_2',['PATH_LINEAR',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2ac758fff69db3c028ba8f599d47bac3fd',1,'tram']]],\n  ['path_5fright_3',['PATH_RIGHT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a0589ae9b6078dd155c3ead82cb3eed0f',1,'tram']]],\n  ['path_5fstraight_4',['PATH_STRAIGHT',['../namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2a13db939fe9562c84c1f83073156459fc',1,'tram']]],\n  ['pause_5fline_5',['PAUSE_LINE',['../classtram_1_1_file.html#ab340a7edca3c73f54d764cd17b362477a3498da60161cfd421524d4b5a5262d1f',1,'tram::File']]],\n  ['physics_6',['PHYSICS',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65afacc4f271a47ef1f95656f32030c2622',1,'tram::System']]],\n  ['ping_7',['PING',['../structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e',1,'tram::Message']]],\n  ['platform_8',['PLATFORM',['../namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a922fa0106a11539d618969d792a6e1b9',1,'tram::System']]],\n  ['progress_9',['PROGRESS',['../structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4',1,'tram::Signal']]],\n  ['property_5fcomputer_10',['PROPERTY_COMPUTER',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fada33452c93d29a0fc18f1d8f09bc44b8',1,'tram::Render']]],\n  ['property_5fconcrete_11',['PROPERTY_CONCRETE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fae2b1b6ada982d1c1c61a36e1c2f31126',1,'tram::Render']]],\n  ['property_5fflesh_12',['PROPERTY_FLESH',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0c2cbb57c6cfcc43710333ef255aea4',1,'tram::Render']]],\n  ['property_5fglass_13',['PROPERTY_GLASS',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa9fe641e38a1a52f765bd88a14bed407a',1,'tram::Render']]],\n  ['property_5fgrass_14',['PROPERTY_GRASS',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa63132978d6ea9a5eed11e5ee7117410f',1,'tram::Render']]],\n  ['property_5fgrate_15',['PROPERTY_GRATE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa06905ec293dc3675d21274cf114d4d65',1,'tram::Render']]],\n  ['property_5fmetal_16',['PROPERTY_METAL',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43faf0f9e334f61c84e46541a7cc6a568b96',1,'tram::Render']]],\n  ['property_5fmetal_5fthin_17',['PROPERTY_METAL_THIN',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa00e42e8d7d6988b4a9300714b8bbc7a7',1,'tram::Render']]],\n  ['property_5fslime_18',['PROPERTY_SLIME',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa3df30b149393b17bb9b6a1b647012119',1,'tram::Render']]],\n  ['property_5fsnow_19',['PROPERTY_SNOW',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fa14a30486b4b7c0ec56c9474618d94e86',1,'tram::Render']]],\n  ['property_5ftile_20',['PROPERTY_TILE',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43facd803e1bd20fa9d04a0e97284feeb2b9',1,'tram::Render']]],\n  ['property_5fwood_21',['PROPERTY_WOOD',['../namespacetram_1_1_render.html#aa55781f294a5a76e9cba54376f45a43fab3fd02f2941169418a236b4de11c1c0b',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"enumvalues_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/enumvalues_f.js",
    "content": "var searchData=\n[\n  ['quest_5ftgr_5fincrement_0',['QUEST_TGR_INCREMENT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba17b72845d665cf133b85f8f9f6a266a7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fset_5fobjective_1',['QUEST_TGR_SET_OBJECTIVE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5be55952382cfcbdeff33c9848c751a6',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fset_5fvariable_2',['QUEST_TGR_SET_VARIABLE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bab3184e4606cdb4af3d7c99634d68643c',1,'tram::Ext::Kitchensink']]],\n  ['quest_5ftgr_5fshow_5fmessage_3',['QUEST_TGR_SHOW_MESSAGE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1baed1f0c08592a54fabf9d38da32861069',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fand_4',['QUEST_VAR_CONDITION_AND',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba186f563d6876469d9a15d27843a5b53e',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fnot_5',['QUEST_VAR_CONDITION_NOT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba5222f372b4fc5839970f0e83836d8963',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5for_6',['QUEST_VAR_CONDITION_OR',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba08d52f2b0b110ace1985eebf58c530b7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fcondition_5fscript_7',['QUEST_VAR_CONDITION_SCRIPT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba6c8b793de899085ef9a4e667f0494aa7',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fentity_5fitem_5fcount_8',['QUEST_VAR_ENTITY_ITEM_COUNT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bac81c3a50657104e20115d48fcce012f1',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5finvalid_9',['QUEST_VAR_INVALID',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba30cbed799aadafbe321339018783ea86',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fobjective_10',['QUEST_VAR_OBJECTIVE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba9f6abb709c8d8e059f95ba9effdeaea6',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_11',['QUEST_VAR_VALUE',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba96ef0600cecd28d4995fa0d7752cbdcc',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fgreater_12',['QUEST_VAR_VALUE_GREATER',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad093ff9e327a290e2386fdb6f9e640dd',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fgreater_5for_5fequal_13',['QUEST_VAR_VALUE_GREATER_OR_EQUAL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba0d54b933eb12ed94fc946b685e46d7a2',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fis_14',['QUEST_VAR_VALUE_IS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1ba7f25c526cc3e1223bc2d6697cfb7cf71',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fis_5fnot_15',['QUEST_VAR_VALUE_IS_NOT',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bad3dea61a0fac22587a0c9e7dbb202e0b',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fless_16',['QUEST_VAR_VALUE_LESS',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bae7561b1caf29ca996a233daa45274a97',1,'tram::Ext::Kitchensink']]],\n  ['quest_5fvar_5fvalue_5fless_5for_5fequal_17',['QUEST_VAR_VALUE_LESS_OR_EQUAL',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1bace549e0bce35a03eacba99bc23a86816',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_0.js",
    "content": "var searchData=\n[\n  ['aabb_2eh_0',['aabb.h',['../aabb_8h.html',1,'']]],\n  ['actions_2eh_1',['actions.h',['../actions_8h.html',1,'']]],\n  ['ai_2ecpp_2',['ai.cpp',['../ai_8cpp.html',1,'']]],\n  ['ai_2eh_3',['ai.h',['../ai_8h.html',1,'']]],\n  ['animation_2ecpp_4',['animation.cpp',['../components_2animation_8cpp.html',1,'(Global Namespace)'],['../render_2animation_8cpp.html',1,'(Global Namespace)']]],\n  ['animation_2eh_5',['animation.h',['../components_2animation_8h.html',1,'(Global Namespace)'],['../render_2animation_8h.html',1,'(Global Namespace)']]],\n  ['animationtable_2ecpp_6',['animationtable.cpp',['../animationtable_8cpp.html',1,'']]],\n  ['animationtable_2eh_7',['animationtable.h',['../animationtable_8h.html',1,'']]],\n  ['api_2eh_8',['api.h',['../audio_2api_8h.html',1,'(Global Namespace)'],['../physics_2api_8h.html',1,'(Global Namespace)'],['../platform_2api_8h.html',1,'(Global Namespace)'],['../render_2api_8h.html',1,'(Global Namespace)']]],\n  ['async_2ecpp_9',['async.cpp',['../async_8cpp.html',1,'']]],\n  ['async_2eh_10',['async.h',['../async_8h.html',1,'']]],\n  ['attributes_2ecpp_11',['attributes.cpp',['../attributes_8cpp.html',1,'']]],\n  ['attributes_2eh_12',['attributes.h',['../attributes_8h.html',1,'']]],\n  ['audio_2ecpp_13',['audio.cpp',['../audio_2audio_8cpp.html',1,'(Global Namespace)'],['../components_2audio_8cpp.html',1,'(Global Namespace)']]],\n  ['audio_2eh_14',['audio.h',['../audio_2audio_8h.html',1,'(Global Namespace)'],['../components_2audio_8h.html',1,'(Global Namespace)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_1.js",
    "content": "var searchData=\n[\n  ['buffer_2ecpp_0',['buffer.cpp',['../buffer_8cpp.html',1,'']]],\n  ['buffer_2eh_1',['buffer.h',['../buffer_8h.html',1,'']]],\n  ['bullet_2ecpp_2',['bullet.cpp',['../bullet_8cpp.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_10.js",
    "content": "var searchData=\n[\n  ['render_2ecpp_0',['render.cpp',['../components_2render_8cpp.html',1,'(Global Namespace)'],['../render_2render_8cpp.html',1,'(Global Namespace)']]],\n  ['render_2eh_1',['render.h',['../components_2render_8h.html',1,'(Global Namespace)'],['../render_2render_8h.html',1,'(Global Namespace)']]],\n  ['renderer_2ecpp_2',['renderer.cpp',['../direct3d_2renderer_8cpp.html',1,'(Global Namespace)'],['../opengl_2renderer_8cpp.html',1,'(Global Namespace)'],['../renderer_8cpp.html',1,'(Global Namespace)']]],\n  ['renderer_2eh_3',['renderer.h',['../opengl_2renderer_8h.html',1,'(Global Namespace)'],['../renderer_8h.html',1,'(Global Namespace)']]],\n  ['resource_2eh_4',['resource.h',['../resource_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_11.js",
    "content": "var searchData=\n[\n  ['scene_2ecpp_0',['scene.cpp',['../scene_8cpp.html',1,'']]],\n  ['scene_2eh_1',['scene.h',['../scene_8h.html',1,'']]],\n  ['script_2ecpp_2',['script.cpp',['../entities_2script_8cpp.html',1,'(Global Namespace)'],['../framework_2script_8cpp.html',1,'(Global Namespace)']]],\n  ['script_2eh_3',['script.h',['../entities_2script_8h.html',1,'(Global Namespace)'],['../framework_2script_8h.html',1,'(Global Namespace)']]],\n  ['sdl_2ecpp_4',['sdl.cpp',['../sdl_8cpp.html',1,'']]],\n  ['serialization_2eh_5',['serialization.h',['../serialization_8h.html',1,'']]],\n  ['settings_2ecpp_6',['settings.cpp',['../settings_8cpp.html',1,'']]],\n  ['settings_2eh_7',['settings.h',['../settings_8h.html',1,'']]],\n  ['shader_2ecpp_8',['shader.cpp',['../shader_8cpp.html',1,'']]],\n  ['shader_2eh_9',['shader.h',['../shader_8h.html',1,'']]],\n  ['signal_2ecpp_10',['signal.cpp',['../signal_8cpp.html',1,'']]],\n  ['signal_2eh_11',['signal.h',['../signal_8h.html',1,'']]],\n  ['software_2ecpp_12',['software.cpp',['../software_8cpp.html',1,'']]],\n  ['software_2eh_13',['software.h',['../software_8h.html',1,'']]],\n  ['sound_2ecpp_14',['sound.cpp',['../audio_2sound_8cpp.html',1,'(Global Namespace)'],['../entities_2sound_8cpp.html',1,'(Global Namespace)']]],\n  ['sound_2eh_15',['sound.h',['../audio_2sound_8h.html',1,'(Global Namespace)'],['../entities_2sound_8h.html',1,'(Global Namespace)']]],\n  ['soundtable_2ecpp_16',['soundtable.cpp',['../soundtable_8cpp.html',1,'']]],\n  ['soundtable_2eh_17',['soundtable.h',['../soundtable_8h.html',1,'']]],\n  ['spatial_2ecpp_18',['spatial.cpp',['../spatial_8cpp.html',1,'']]],\n  ['spatial_2eh_19',['spatial.h',['../spatial_8h.html',1,'']]],\n  ['spinlock_2eh_20',['spinlock.h',['../spinlock_8h.html',1,'']]],\n  ['sprite_2ecpp_21',['sprite.cpp',['../components_2sprite_8cpp.html',1,'(Global Namespace)'],['../render_2opengl_2sprite_8cpp.html',1,'(Global Namespace)'],['../render_2sprite_8cpp.html',1,'(Global Namespace)']]],\n  ['sprite_2eh_22',['sprite.h',['../components_2sprite_8h.html',1,'(Global Namespace)'],['../render_2opengl_2sprite_8h.html',1,'(Global Namespace)'],['../render_2sprite_8h.html',1,'(Global Namespace)']]],\n  ['stack_2eh_23',['stack.h',['../stack_8h.html',1,'']]],\n  ['stackpool_2eh_24',['stackpool.h',['../stackpool_8h.html',1,'']]],\n  ['staticworldobject_2ecpp_25',['staticworldobject.cpp',['../staticworldobject_8cpp.html',1,'']]],\n  ['staticworldobject_2eh_26',['staticworldobject.h',['../staticworldobject_8h.html',1,'']]],\n  ['stats_2ecpp_27',['stats.cpp',['../stats_8cpp.html',1,'']]],\n  ['stats_2eh_28',['stats.h',['../stats_8h.html',1,'']]],\n  ['system_2ecpp_29',['system.cpp',['../framework_2system_8cpp.html',1,'(Global Namespace)'],['../extensions_2menu_2system_8cpp.html',1,'(Global Namespace)']]],\n  ['system_2eh_30',['system.h',['../extensions_2menu_2system_8h.html',1,'(Global Namespace)'],['../framework_2system_8h.html',1,'(Global Namespace)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_12.js",
    "content": "var searchData=\n[\n  ['template_2ecpp_0',['template.cpp',['../template_8cpp.html',1,'']]],\n  ['template_2eh_1',['template.h',['../template_8h.html',1,'']]],\n  ['test_2eh_2',['test.h',['../test_8h.html',1,'']]],\n  ['texture_2ecpp_3',['texture.cpp',['../texture_8cpp.html',1,'']]],\n  ['texture_2eh_4',['texture.h',['../texture_8h.html',1,'']]],\n  ['thirdperson_2ecpp_5',['thirdperson.cpp',['../thirdperson_8cpp.html',1,'']]],\n  ['thirdperson_2eh_6',['thirdperson.h',['../thirdperson_8h.html',1,'']]],\n  ['transition_2ecpp_7',['transition.cpp',['../transition_8cpp.html',1,'']]],\n  ['transition_2eh_8',['transition.h',['../transition_8h.html',1,'']]],\n  ['trigger_2ecpp_9',['trigger.cpp',['../components_2trigger_8cpp.html',1,'(Global Namespace)'],['../entities_2trigger_8cpp.html',1,'(Global Namespace)']]],\n  ['trigger_2eh_10',['trigger.h',['../components_2trigger_8h.html',1,'(Global Namespace)'],['../entities_2trigger_8h.html',1,'(Global Namespace)']]],\n  ['type_2ecpp_11',['type.cpp',['../type_8cpp.html',1,'']]],\n  ['type_2eh_12',['type.h',['../type_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_13.js",
    "content": "var searchData=\n[\n  ['ui_2ecpp_0',['ui.cpp',['../ui_8cpp.html',1,'']]],\n  ['ui_2eh_1',['ui.h',['../ui_8h.html',1,'']]],\n  ['uid_2ecpp_2',['uid.cpp',['../uid_8cpp.html',1,'']]],\n  ['uid_2eh_3',['uid.h',['../uid_8h.html',1,'']]],\n  ['utils_2ecpp_4',['utils.cpp',['../utils_8cpp.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_14.js",
    "content": "var searchData=\n[\n  ['value_2eh_0',['value.h',['../value_8h.html',1,'']]],\n  ['vertices_2ecpp_1',['vertices.cpp',['../vertices_8cpp.html',1,'']]],\n  ['vertices_2eh_2',['vertices.h',['../vertices_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_15.js",
    "content": "var searchData=\n[\n  ['worldcell_2ecpp_0',['worldcell.cpp',['../worldcell_8cpp.html',1,'']]],\n  ['worldcell_2eh_1',['worldcell.h',['../worldcell_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_2.js",
    "content": "var searchData=\n[\n  ['camera_2ecpp_0',['camera.cpp',['../camera_8cpp.html',1,'']]],\n  ['camera_2eh_1',['camera.h',['../camera_8h.html',1,'']]],\n  ['character_2ecpp_2',['character.cpp',['../character_8cpp.html',1,'']]],\n  ['character_2eh_3',['character.h',['../character_8h.html',1,'']]],\n  ['collisionmodel_2ecpp_4',['collisionmodel.cpp',['../collisionmodel_8cpp.html',1,'']]],\n  ['collisionmodel_2eh_5',['collisionmodel.h',['../collisionmodel_8h.html',1,'']]],\n  ['collisionshape_2eh_6',['collisionshape.h',['../collisionshape_8h.html',1,'']]],\n  ['config_2eh_7',['config.h',['../config_8h.html',1,'']]],\n  ['controller_2ecpp_8',['controller.cpp',['../controller_8cpp.html',1,'']]],\n  ['controller_2eh_9',['controller.h',['../controller_8h.html',1,'']]],\n  ['core_2ecpp_10',['core.cpp',['../core_8cpp.html',1,'']]],\n  ['core_2eh_11',['core.h',['../core_8h.html',1,'']]],\n  ['crate_2ecpp_12',['crate.cpp',['../crate_8cpp.html',1,'']]],\n  ['crate_2eh_13',['crate.h',['../crate_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_3.js",
    "content": "var searchData=\n[\n  ['debug_2ecpp_0',['debug.cpp',['../debug_8cpp.html',1,'']]],\n  ['debug_2eh_1',['debug.h',['../debug_8h.html',1,'']]],\n  ['debugdrawer_2eh_2',['debugdrawer.h',['../debugdrawer_8h.html',1,'']]],\n  ['decal_2ecpp_3',['decal.cpp',['../decal_8cpp.html',1,'']]],\n  ['decal_2eh_4',['decal.h',['../decal_8h.html',1,'']]],\n  ['decoration_2ecpp_5',['decoration.cpp',['../decoration_8cpp.html',1,'']]],\n  ['decoration_2eh_6',['decoration.h',['../decoration_8h.html',1,'']]],\n  ['definitions_2eh_7',['definitions.h',['../definitions_8h.html',1,'']]],\n  ['dialog_2ecpp_8',['dialog.cpp',['../dialog_8cpp.html',1,'']]],\n  ['dialog_2eh_9',['dialog.h',['../dialog_8h.html',1,'']]],\n  ['direct3d_2eh_10',['direct3d.h',['../direct3d_8h.html',1,'']]],\n  ['drawlist_2ecpp_11',['drawlist.cpp',['../drawlist_8cpp.html',1,'']]],\n  ['drawlist_2eh_12',['drawlist.h',['../drawlist_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_4.js",
    "content": "var searchData=\n[\n  ['entities_2ecpp_0',['entities.cpp',['../entities_8cpp.html',1,'']]],\n  ['entities_2eh_1',['entities.h',['../entities_8h.html',1,'']]],\n  ['entity_2ecpp_2',['entity.cpp',['../entity_8cpp.html',1,'']]],\n  ['entity_2eh_3',['entity.h',['../entity_8h.html',1,'']]],\n  ['entitycomponent_2ecpp_4',['entitycomponent.cpp',['../entitycomponent_8cpp.html',1,'']]],\n  ['entitycomponent_2eh_5',['entitycomponent.h',['../entitycomponent_8h.html',1,'']]],\n  ['error_2ecpp_6',['error.cpp',['../error_8cpp.html',1,'']]],\n  ['error_2eh_7',['error.h',['../error_8h.html',1,'']]],\n  ['event_2ecpp_8',['event.cpp',['../event_8cpp.html',1,'']]],\n  ['event_2eh_9',['event.h',['../event_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_5.js",
    "content": "var searchData=\n[\n  ['file_2ecpp_0',['file.cpp',['../framework_2file_8cpp.html',1,'(Global Namespace)'],['../platform_2file_8cpp.html',1,'(Global Namespace)']]],\n  ['file_2eh_1',['file.h',['../framework_2file_8h.html',1,'(Global Namespace)'],['../platform_2file_8h.html',1,'(Global Namespace)']]],\n  ['firstperson_2ecpp_2',['firstperson.cpp',['../firstperson_8cpp.html',1,'']]],\n  ['firstperson_2eh_3',['firstperson.h',['../firstperson_8h.html',1,'']]],\n  ['following_2ecpp_4',['following.cpp',['../following_8cpp.html',1,'']]],\n  ['following_2eh_5',['following.h',['../following_8h.html',1,'']]],\n  ['fpscamera_2ecpp_6',['fpscamera.cpp',['../fpscamera_8cpp.html',1,'']]],\n  ['fpscamera_2eh_7',['fpscamera.h',['../fpscamera_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_6.js",
    "content": "var searchData=\n[\n  ['glfw_2ecpp_0',['glfw.cpp',['../glfw_8cpp.html',1,'']]],\n  ['graph_2ecpp_1',['graph.cpp',['../audio_2graph_8cpp.html',1,'(Global Namespace)'],['../framework_2graph_8cpp.html',1,'(Global Namespace)']]],\n  ['graph_2eh_2',['graph.h',['../audio_2graph_8h.html',1,'(Global Namespace)'],['../framework_2graph_8h.html',1,'(Global Namespace)']]],\n  ['gui_2ecpp_3',['gui.cpp',['../gui_8cpp.html',1,'']]],\n  ['gui_2eh_4',['gui.h',['../gui_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_7.js",
    "content": "var searchData=\n[\n  ['hashmap_2eh_0',['hashmap.h',['../hashmap_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_8.js",
    "content": "var searchData=\n[\n  ['image_2ecpp_0',['image.cpp',['../image_8cpp.html',1,'']]],\n  ['image_2eh_1',['image.h',['../image_8h.html',1,'']]],\n  ['info_2edox_2',['info.dox',['../info_8dox.html',1,'']]],\n  ['inventory_2ecpp_3',['inventory.cpp',['../inventory_8cpp.html',1,'']]],\n  ['inventory_2eh_4',['inventory.h',['../inventory_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_9.js",
    "content": "var searchData=\n[\n  ['kitchensink_2ecpp_0',['kitchensink.cpp',['../kitchensink_8cpp.html',1,'']]],\n  ['kitchensink_2eh_1',['kitchensink.h',['../kitchensink_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_a.js",
    "content": "var searchData=\n[\n  ['language_2ecpp_0',['language.cpp',['../language_8cpp.html',1,'']]],\n  ['language_2eh_1',['language.h',['../language_8h.html',1,'']]],\n  ['light_2ecpp_2',['light.cpp',['../components_2light_8cpp.html',1,'(Global Namespace)'],['../entities_2light_8cpp.html',1,'(Global Namespace)'],['../render_2light_8cpp.html',1,'(Global Namespace)'],['../render_2opengl_2light_8cpp.html',1,'(Global Namespace)']]],\n  ['light_2eh_3',['light.h',['../components_2light_8h.html',1,'(Global Namespace)'],['../entities_2light_8h.html',1,'(Global Namespace)'],['../render_2light_8h.html',1,'(Global Namespace)'],['../render_2opengl_2light_8h.html',1,'(Global Namespace)']]],\n  ['loader_2ecpp_4',['loader.cpp',['../loader_8cpp.html',1,'']]],\n  ['loader_2eh_5',['loader.h',['../loader_8h.html',1,'']]],\n  ['logging_2ecpp_6',['logging.cpp',['../logging_8cpp.html',1,'']]],\n  ['logging_2eh_7',['logging.h',['../logging_8h.html',1,'']]],\n  ['lua_2ecpp_8',['lua.cpp',['../lua_8cpp.html',1,'']]],\n  ['lua_2eh_9',['lua.h',['../lua_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_b.js",
    "content": "var searchData=\n[\n  ['macros_2eh_0',['macros.h',['../macros_8h.html',1,'']]],\n  ['main_2ecpp_1',['main.cpp',['../main_8cpp.html',1,'']]],\n  ['marker_2ecpp_2',['marker.cpp',['../marker_8cpp.html',1,'']]],\n  ['marker_2eh_3',['marker.h',['../marker_8h.html',1,'']]],\n  ['material_2ecpp_4',['material.cpp',['../material_8cpp.html',1,'(Global Namespace)'],['../opengl_2material_8cpp.html',1,'(Global Namespace)']]],\n  ['material_2eh_5',['material.h',['../material_8h.html',1,'(Global Namespace)'],['../opengl_2material_8h.html',1,'(Global Namespace)']]],\n  ['math_2ecpp_6',['math.cpp',['../math_8cpp.html',1,'']]],\n  ['math_2eh_7',['math.h',['../math_8h.html',1,'']]],\n  ['menu_2ecpp_8',['menu.cpp',['../kitchensink_2menu_8cpp.html',1,'(Global Namespace)'],['../menu_2menu_8cpp.html',1,'(Global Namespace)']]],\n  ['menu_2eh_9',['menu.h',['../kitchensink_2menu_8h.html',1,'(Global Namespace)'],['../menu_2menu_8h.html',1,'(Global Namespace)']]],\n  ['message_2ecpp_10',['message.cpp',['../message_8cpp.html',1,'']]],\n  ['message_2eh_11',['message.h',['../message_8h.html',1,'']]],\n  ['model_2ecpp_12',['model.cpp',['../model_8cpp.html',1,'']]],\n  ['model_2eh_13',['model.h',['../model_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_c.js",
    "content": "var searchData=\n[\n  ['navmesh_2ecpp_0',['navmesh.cpp',['../navmesh_8cpp.html',1,'']]],\n  ['navmesh_2eh_1',['navmesh.h',['../navmesh_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_d.js",
    "content": "var searchData=\n[\n  ['octree_2eh_0',['octree.h',['../octree_8h.html',1,'']]],\n  ['openal_2ecpp_1',['openal.cpp',['../openal_8cpp.html',1,'']]],\n  ['openal_2eh_2',['openal.h',['../openal_8h.html',1,'']]],\n  ['other_2ecpp_3',['other.cpp',['../other_8cpp.html',1,'']]],\n  ['other_2eh_4',['other.h',['../other_8h.html',1,'']]],\n  ['output_2ecpp_5',['output.cpp',['../output_8cpp.html',1,'']]],\n  ['output_2eh_6',['output.h',['../output_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_e.js",
    "content": "var searchData=\n[\n  ['particle_2ecpp_0',['particle.cpp',['../particle_8cpp.html',1,'']]],\n  ['particle_2eh_1',['particle.h',['../particle_8h.html',1,'']]],\n  ['path_2ecpp_2',['path.cpp',['../path_8cpp.html',1,'']]],\n  ['path_2eh_3',['path.h',['../path_8h.html',1,'']]],\n  ['pathtracer_2ecpp_4',['pathtracer.cpp',['../pathtracer_8cpp.html',1,'']]],\n  ['pathtracer_2eh_5',['pathtracer.h',['../pathtracer_8h.html',1,'']]],\n  ['physics_2ecpp_6',['physics.cpp',['../components_2physics_8cpp.html',1,'(Global Namespace)'],['../physics_2physics_8cpp.html',1,'(Global Namespace)']]],\n  ['physics_2eh_7',['physics.h',['../components_2physics_8h.html',1,'(Global Namespace)'],['../physics_2physics_8h.html',1,'(Global Namespace)']]],\n  ['platform_2eh_8',['platform.h',['../platform_8h.html',1,'']]],\n  ['player_2ecpp_9',['player.cpp',['../components_2player_8cpp.html',1,'(Global Namespace)'],['../entities_2player_8cpp.html',1,'(Global Namespace)']]],\n  ['player_2eh_10',['player.h',['../components_2player_8h.html',1,'(Global Namespace)'],['../entities_2player_8h.html',1,'(Global Namespace)']]],\n  ['pool_2eh_11',['pool.h',['../pool_8h.html',1,'']]],\n  ['probe_2ecpp_12',['probe.cpp',['../probe_8cpp.html',1,'']]],\n  ['probe_2eh_13',['probe.h',['../probe_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/files_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"files_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/files_f.js",
    "content": "var searchData=\n[\n  ['quest_2ecpp_0',['quest.cpp',['../quest_8cpp.html',1,'']]],\n  ['quest_2eh_1',['quest.h',['../quest_8h.html',1,'']]],\n  ['queue_2eh_2',['queue.h',['../queue_8h.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_0.js",
    "content": "var searchData=\n[\n  ['aabbdistance_0',['AABBDistance',['../classtram_1_1_a_a_b_b_tree.html#a854ba4aa154dfc14b544cc142418b63b',1,'tram::AABBTree']]],\n  ['aabbintersect_1',['AABBIntersect',['../classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1',1,'tram::AABBTree']]],\n  ['aabboverlap_2',['AABBOverlap',['../classtram_1_1_a_a_b_b_tree.html#afe35ffcff47d45bf7b4dad9b2d510d80',1,'tram::AABBTree']]],\n  ['aabbsurface_3',['AABBSurface',['../classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2',1,'tram::AABBTree']]],\n  ['aabbtree_4',['AABBTree',['../classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29',1,'tram::AABBTree']]],\n  ['aabbvolume_5',['AABBVolume',['../classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77',1,'tram::AABBTree']]],\n  ['activate_6',['Activate',['../classtram_1_1_trigger.html#a99650ea152bb5eb058cdb49d19bc4ecc',1,'tram::Trigger']]],\n  ['add_7',['Add',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a1daec0fd40b63b2ebedbbc99dee5cb80',1,'tram::Ext::Menu::Menu::Add()'],['../classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4',1,'tram::SignalTable::Add()'],['../classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef',1,'tram::WorldCell::Add(Entity *entity)'],['../classtram_1_1_world_cell.html#a6d8c426c88e1a950304ce2b499a2a065',1,'tram::WorldCell::Add(Transition *transition)'],['../namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa',1,'tram::Stats::Add()']]],\n  ['addbaseclass_8',['AddBaseClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a84d3d60fea7430558208b30e8281d751',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['addcharacter_9',['AddCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae240133d8845aeae9cffc999e37a1763',1,'tram::Ext::Kitchensink::Faction']]],\n  ['addchild_10',['AddChild',['../namespacetram_1_1_ext_1_1_kitchensink.html#a16caf89d1fcf378195a2f0fa188b0156',1,'tram::Ext::Kitchensink']]],\n  ['addclass_11',['AddClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ab8675fad8c679169af255b91d45b807d',1,'tram::Ext::Kitchensink::Character']]],\n  ['addcube_12',['AddCube',['../namespacetram_1_1_render.html#a80ac9a1f629a048bc89f3a816783db87',1,'tram::Render']]],\n  ['addcylinder_13',['AddCylinder',['../namespacetram_1_1_render.html#a504da26659f9ff6e512e052ccd974ce8',1,'tram::Render']]],\n  ['addfaction_14',['AddFaction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a86b83d010b464d657533f54684f3b819',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['additem_15',['AddItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a36bc5edd165aedb4ff48c5ef27426a4d',1,'tram::Ext::Kitchensink::InventoryManager::AddItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a86886a96730029deb9c866327eec9484',1,'tram::Ext::Kitchensink::ListInventoryManager::AddItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263',1,'tram::Ext::Kitchensink::Inventory::AddItem()']]],\n  ['addleaf_16',['AddLeaf',['../classtram_1_1_octree.html#af27324144ece2995f714d7fb6a9a802d',1,'tram::Octree']]],\n  ['addlight_17',['AddLight',['../namespacetram_1_1_render_1_1_light_tree.html#aad6c0b080cf76a2e64216adc9318807e',1,'tram::Render::LightTree']]],\n  ['addline_18',['AddLine',['../namespacetram_1_1_render.html#aaf8ef81eae0da772762ff835a3a24536',1,'tram::Render']]],\n  ['addlineaabb_19',['AddLineAABB',['../namespacetram_1_1_render.html#aa2585f6dc9fbeddf62db686a5dbafbea',1,'tram::Render']]],\n  ['addlinemarker_20',['AddLineMarker',['../namespacetram_1_1_render.html#ae5ab2f07c068f59f0ded62a742e05fdf',1,'tram::Render']]],\n  ['addlistener_21',['AddListener',['../structtram_1_1_event.html#a912991992322aab15d777e22848332cb',1,'tram::Event::AddListener(event_t type, Entity *entity)'],['../structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05',1,'tram::Event::AddListener(event_t type, EntityComponent *component)'],['../structtram_1_1_event.html#a5610bb4c11e4610b9b13ea2301e14f39',1,'tram::Event::AddListener(event_t type, void(*handler)(Event &amp;event))'],['../structtram_1_1_event.html#a817b7223a8818863e27dba112ade5930',1,'tram::Event::AddListener(event_t type, void *data, void(*handler)(Event &amp;event, void *data))']]],\n  ['addnew_22',['AddNew',['../classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e',1,'tram::StackPool::AddNew()'],['../classtram_1_1_pool.html#a2b0b341946b782acc6ca1959b7452488',1,'tram::Pool::AddNew()'],['../classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556',1,'tram::Stack::AddNew()']]],\n  ['addpoint_23',['AddPoint',['../classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0',1,'tram::Transition']]],\n  ['addreference_24',['AddReference',['../classtram_1_1_resource.html#ae12c04585a9bf0e7f6f14e394d649978',1,'tram::Resource']]],\n  ['addsingleresult_25',['addSingleResult',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f',1,'tram::Physics::API::ShapecastCallback']]],\n  ['addsound_26',['AddSound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2',1,'tram::Ext::Kitchensink::SoundTable']]],\n  ['addsphere_27',['AddSphere',['../namespacetram_1_1_render.html#ac8426b2175dd44cfee749c08ae81583c',1,'tram::Render']]],\n  ['addstate_28',['AddState',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#af80681af9d6461c2545e1ba6f3559a0d',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['addstatespace_29',['AddStateSpace',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a4ccd358ff8f03863bb1c431931175c8d',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['addtext_30',['AddText',['../namespacetram_1_1_render.html#acb324f6e78d295296dd65efb3d3071af',1,'tram::Render::AddText(vec3 pos, const char *text, color_t color)'],['../namespacetram_1_1_render.html#af0419e9b99eb8d74ca41fd30f32e3e13',1,'tram::Render::AddText(float x, float y, const char *text, color_t color)']]],\n  ['addtransition_31',['AddTransition',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#abb6ce7a99352a9ed067351ed8598a321',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionDefault)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1d0ea0b121a54d5ecee11eda9b8a621c',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionFrom)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a3e2e0645eebf89ec94fa0e8352503c3b',1,'tram::Ext::Kitchensink::AnimationTable::AddTransition(AnimStateTransitionInto)']]],\n  ['advance_32',['Advance',['../classtram_1_1_path_follower.html#a3517e3cd4fbc2f47b7a4b46743bcbaa0',1,'tram::PathFollower']]],\n  ['allocate_33',['allocate',['../classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84',1,'tram::StackPool']]],\n  ['allocatedata_34',['AllocateData',['../structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35',1,'tram::Event::AllocateData(size_t ammount)'],['../structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305',1,'tram::Event::AllocateData()'],['../structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039',1,'tram::Event::AllocateData(const T &amp;data)'],['../structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d',1,'tram::Message::AllocateData(size_t ammount)'],['../structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e',1,'tram::Message::AllocateData()'],['../structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b',1,'tram::Message::AllocateData(const T &amp;data)']]],\n  ['and_35',['And',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['animation_36',['Animation',['../classtram_1_1_render_1_1_animation.html#aeb52730a357d678921b547c4eae16405',1,'tram::Render::Animation']]],\n  ['animation_5flist_37',['animation_list',['../namespacetram_1_1_render.html#a7dd412c7626de34a2b2e4fd4d750dd4a',1,'tram::Render']]],\n  ['animationcomponent_38',['AnimationComponent',['../classtram_1_1_animation_component.html#af773091315f64f349184c6f9055dc5ad',1,'tram::AnimationComponent']]],\n  ['animationtable_39',['AnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a1cb9d318dcab93ae71a377f195ceb3bc',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['applydynamics_40',['ApplyDynamics',['../classtram_1_1_f_p_s_controller_component.html#a396834cd7a573800365e68a4aa49122b',1,'tram::FPSControllerComponent::ApplyDynamics()'],['../classtram_1_1_raycast_controller_component.html#a63b3bdb3d6d211eb1ce407a900b612a7',1,'tram::RaycastControllerComponent::ApplyDynamics()']]],\n  ['applyeffect_41',['ApplyEffect',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['assertdependency_42',['AssertDependency',['../namespacetram_1_1_system.html#ae343978bd8ac9ddbc48dbffa5aea2f49',1,'tram::System']]],\n  ['asserttype_43',['AssertType',['../classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916',1,'tram::Value']]],\n  ['audiocomponent_44',['AudioComponent',['../classtram_1_1_audio_component.html#aff631c814eda2b4e8b615ebe9a4217f5',1,'tram::AudioComponent']]],\n  ['awaken_45',['Awaken',['../classtram_1_1_physics_component.html#aa05aa42d0ba5486d18a5c6951c2dcf7a',1,'tram::PhysicsComponent']]],\n  ['awakenrigidbody_46',['AwakenRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a165f12c0aa8cf05d459e9ceb71c5a629',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_1.js",
    "content": "var searchData=\n[\n  ['back_0',['back',['../classtram_1_1_queue.html#abdeabcac12516595916ee8f3b600e392',1,'tram::Queue']]],\n  ['begin_1',['begin',['../classtram_1_1_pool.html#aae84df45d298efe25e64b9f688f97916',1,'tram::Pool::begin()'],['../classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43',1,'tram::StackPool::begin()']]],\n  ['begin_2',['Begin',['../namespacetram_1_1_g_u_i.html#af4ecd3d74bffd0e8e5fd26061418ef4f',1,'tram::GUI']]],\n  ['bindkeyboardkey_3',['BindKeyboardKey',['../namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9',1,'tram::UI::BindKeyboardKey(KeyboardKey key, keyboardaction_t action)'],['../namespacetram_1_1_u_i.html#a49763cc0300d866370805b94a99f36fd',1,'tram::UI::BindKeyboardKey(KeyboardKey key, void(*action)())'],['../namespacetram_1_1_u_i.html#a581823cdaa8ed3cef6f48d2610961511',1,'tram::UI::BindKeyboardKey(KeyboardKey key, void(*action)(KeyboardKey))']]],\n  ['binduniformblock_4',['BindUniformBlock',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa69a85e88039257fec2cdd5feaee0fb0',1,'tram::Render::API::LinkedShader::BindUniformBlock()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4',1,'tram::Render::API::BindUniformBlock(const char *name, uint32_t binding)']]],\n  ['blitdot_5',['BlitDot',['../namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08',1,'tram::Render::API']]],\n  ['blitline_6',['BlitLine',['../namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d',1,'tram::Render::API']]],\n  ['blitlineoctant0_7',['BlitLineOctant0',['../namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde',1,'tram::Render::API']]],\n  ['blitlineoctant1_8',['BlitLineOctant1',['../namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c',1,'tram::Render::API']]],\n  ['box_9',['Box',['../structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3',1,'tram::Physics::CollisionShape']]],\n  ['breakable_10',['Breakable',['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a391835e621041d6ff5d42830deb4551d',1,'tram::Ext::Kitchensink::Breakable']]],\n  ['button_11',['Button',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1cdc713f455d7e0df9815ce1c75b67b9',1,'tram::Ext::Kitchensink::Button::Button()'],['../namespacetram_1_1_g_u_i.html#a36df4e7f162a96882c85976374864e7a',1,'tram::GUI::Button()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_10.js",
    "content": "var searchData=\n[\n  ['quatlookat_0',['QuatLookAt',['../namespacetram.html#a9a9788a262342a3b6cf9b08117faedcf',1,'tram']]],\n  ['quest_1',['Quest',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885',1,'tram::Ext::Kitchensink::Quest']]],\n  ['questentity_2',['QuestEntity',['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a96675f3d8b439116d9fff376f212efbb',1,'tram::Ext::Kitchensink::QuestEntity']]],\n  ['questvariable_3',['QuestVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd',1,'tram::Ext::Kitchensink::QuestVariable::QuestVariable()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa398510013c7875c7ac6d3d1b0b3fdd2',1,'tram::Ext::Kitchensink::QuestVariable::QuestVariable(const QuestVariable &amp;)']]],\n  ['queue_4',['Queue',['../classtram_1_1_queue.html#adbc2d690665b980a97b26eb2cf0fb4e4',1,'tram::Queue::Queue()=delete'],['../classtram_1_1_queue.html#a9a53c8973a5cb86f76b039ef0f3d0ee6',1,'tram::Queue::Queue(const Queue &amp;)=delete'],['../classtram_1_1_queue.html#a710adca95612b66427f7f6cc918492ef',1,'tram::Queue::Queue(Queue &amp;&amp;)=delete'],['../classtram_1_1_queue.html#ad797d5d45ded6116bc9bbd23e8848e9d',1,'tram::Queue::Queue(const char *name, size_t count)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_11.js",
    "content": "var searchData=\n[\n  ['radiobutton_0',['RadioButton',['../namespacetram_1_1_g_u_i.html#a1488c8699f98eaaefd9dab7d1e220604',1,'tram::GUI']]],\n  ['rasterizetriangle_1',['RasterizeTriangle',['../namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf',1,'tram::Render::API']]],\n  ['rasterizetrianglelightmapped_2',['RasterizeTriangleLightmapped',['../namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd',1,'tram::Render::API']]],\n  ['rasterizetriangleshadedtextured_3',['RasterizeTriangleShadedTextured',['../namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a',1,'tram::Render::API']]],\n  ['raycast_4',['Raycast',['../namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9',1,'tram::Physics::Raycast()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#ab6725b1082075301a1d07f52948788fa',1,'tram::Physics::API::Raycast()']]],\n  ['raycastcontrollercomponent_5',['RaycastControllerComponent',['../classtram_1_1_raycast_controller_component.html#a5b2d1abffafb92a86d9e48ead1eec5d9',1,'tram::RaycastControllerComponent']]],\n  ['raytriangleintersection_6',['RayTriangleIntersection',['../namespacetram.html#a709b43407c76d65a5e0e9567d55fb212',1,'tram']]],\n  ['read_5ffloat32_7',['read_float32',['../classtram_1_1_file_reader_parser.html#af8a5e8c5ed7909608b3c75a2c75f6e7d',1,'tram::FileReaderParser::read_float32()'],['../classtram_1_1_text_reader_parser.html#af178bb228cb9309753ca06926faf7142',1,'tram::TextReaderParser::read_float32()'],['../classtram_1_1_file.html#a49b122601c017e1964144c23cbe290fd',1,'tram::File::read_float32()']]],\n  ['read_5ffloat64_8',['read_float64',['../classtram_1_1_file_reader_parser.html#a5946a704dfee7567c528c50d02bcf74a',1,'tram::FileReaderParser::read_float64()'],['../classtram_1_1_text_reader_parser.html#aadab4b54c1468cb34f498da0403d919d',1,'tram::TextReaderParser::read_float64()'],['../classtram_1_1_file.html#ac11afdd957e7a113e25c101eea4ac241',1,'tram::File::read_float64()']]],\n  ['read_5fint16_9',['read_int16',['../classtram_1_1_file_reader_parser.html#a6589a27772f1c001af13d50a0111be72',1,'tram::FileReaderParser::read_int16()'],['../classtram_1_1_text_reader_parser.html#a99abb84482da2a05ca31f6099c5e9fad',1,'tram::TextReaderParser::read_int16()'],['../classtram_1_1_file.html#a5d7ea9f1ad7cb867061aea6a4ed1b89d',1,'tram::File::read_int16()']]],\n  ['read_5fint32_10',['read_int32',['../classtram_1_1_file_reader_parser.html#a9f21c9d82fd1ddbe3170d41e9c4454f8',1,'tram::FileReaderParser::read_int32()'],['../classtram_1_1_file.html#a225dfcebd4c490f19388cfb7aca8e0a6',1,'tram::File::read_int32()'],['../classtram_1_1_text_reader_parser.html#a7b891300d2c4c863fed16dccba4566cd',1,'tram::TextReaderParser::read_int32()']]],\n  ['read_5fint64_11',['read_int64',['../classtram_1_1_file.html#af10fb5448d6e77230bdc268d328c0857',1,'tram::File::read_int64()'],['../classtram_1_1_text_reader_parser.html#ab4d063176ad5ddb665980b05f4162316',1,'tram::TextReaderParser::read_int64()'],['../classtram_1_1_file_reader_parser.html#ad20fc7bfba19d51c9ade3b5a4d07f0e0',1,'tram::FileReaderParser::read_int64()']]],\n  ['read_5fint8_12',['read_int8',['../classtram_1_1_file.html#a039568453770acbc144c9fdce0f3fc68',1,'tram::File::read_int8()'],['../classtram_1_1_file_reader_parser.html#ada15ac5d1a3d84549898524e2b1faaec',1,'tram::FileReaderParser::read_int8()'],['../classtram_1_1_text_reader_parser.html#ac2727568c3a10f2e173ec4179f3e354e',1,'tram::TextReaderParser::read_int8()']]],\n  ['read_5fline_13',['read_line',['../classtram_1_1_file_reader_parser.html#a8d6d0fc588569a550368355fb99c5724',1,'tram::FileReaderParser::read_line()'],['../classtram_1_1_text_reader_parser.html#a9bcbf9cc72a0631af8222c378dc767b8',1,'tram::TextReaderParser::read_line()'],['../classtram_1_1_file.html#aaa1c1eca4e5feb35b576da5533408b17',1,'tram::File::read_line()']]],\n  ['read_5fname_14',['read_name',['../classtram_1_1_file_reader_parser.html#acc84d2050fc037feebe7e97681baf986',1,'tram::FileReaderParser::read_name()'],['../classtram_1_1_text_reader_parser.html#a467ff7b32859f86869bf2134e3b5f7b9',1,'tram::TextReaderParser::read_name()'],['../classtram_1_1_file.html#aca554d85c9430ee8d39ddb16c41e72e3',1,'tram::File::read_name()']]],\n  ['read_5fstring_15',['read_string',['../classtram_1_1_file_reader_parser.html#a0bac8a5eb06119787111423ce520c005',1,'tram::FileReaderParser::read_string()'],['../classtram_1_1_text_reader_parser.html#a51d680fae0e08d2b468d114192d36516',1,'tram::TextReaderParser::read_string()'],['../classtram_1_1_file.html#a384df5b223c9e0d2535a622e282a356e',1,'tram::File::read_string()']]],\n  ['read_5ftoken_16',['read_token',['../classtram_1_1_text_reader_parser.html#ad02dd97ca99e1b028a5c662a7c46f1d3',1,'tram::TextReaderParser::read_token()'],['../classtram_1_1_file.html#a49ba33b0139ddde95daf7f88adbeca79',1,'tram::File::read_token()'],['../classtram_1_1_file_reader_parser.html#a398699124bf0cba7680196ca16425bf3',1,'tram::FileReaderParser::read_token()=0']]],\n  ['read_5fuint16_17',['read_uint16',['../classtram_1_1_file_reader_parser.html#a8a80b30acb200e9eeebacdf2da6d931d',1,'tram::FileReaderParser::read_uint16()'],['../classtram_1_1_text_reader_parser.html#a25ef758dce299e3013327c59fa8276de',1,'tram::TextReaderParser::read_uint16()'],['../classtram_1_1_file.html#a64635a9d28e30c7300d6a7459302d723',1,'tram::File::read_uint16()']]],\n  ['read_5fuint32_18',['read_uint32',['../classtram_1_1_file_reader_parser.html#af1be7fcf9c20d57a470425db1d01c973',1,'tram::FileReaderParser::read_uint32()'],['../classtram_1_1_text_reader_parser.html#af27393ec11a775c33135bdf8af3ee14c',1,'tram::TextReaderParser::read_uint32()'],['../classtram_1_1_file.html#a153f0eccaaaca9cacdb4bb082060bcbc',1,'tram::File::read_uint32()']]],\n  ['read_5fuint64_19',['read_uint64',['../classtram_1_1_text_reader_parser.html#a8d1e49afadde9b3ac293308b3f72394f',1,'tram::TextReaderParser::read_uint64()'],['../classtram_1_1_file.html#a48c7cadf209801e17f3cc2f7b3bb877e',1,'tram::File::read_uint64()'],['../classtram_1_1_file_reader_parser.html#adab7efdbacf1949c1b79510804f58827',1,'tram::FileReaderParser::read_uint64()=0']]],\n  ['read_5fuint8_20',['read_uint8',['../classtram_1_1_file_reader_parser.html#a5527b551c2f71b78d9ae3e8c00b61d6e',1,'tram::FileReaderParser::read_uint8()'],['../classtram_1_1_file.html#a4f4075e222dd524d4132b616225d191d',1,'tram::File::read_uint8()'],['../classtram_1_1_text_reader_parser.html#a72087b8d7d3fe5aae9195ac35edb5023',1,'tram::TextReaderParser::read_uint8()']]],\n  ['recalculate_21',['Recalculate',['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#ab2c7811e4fd4d8ef5c00a8085d0eef4b',1,'tram::Ext::Kitchensink::AttributeInfo']]],\n  ['recoverfromcollisions_22',['RecoverFromCollisions',['../classtram_1_1_f_p_s_controller_component.html#a14fa87139f0ba7e8325019afb05f56ff',1,'tram::FPSControllerComponent::RecoverFromCollisions()'],['../classtram_1_1_raycast_controller_component.html#ae97c6619effa4d637ecaca717798ba45',1,'tram::RaycastControllerComponent::RecoverFromCollisions()']]],\n  ['recursivelyappendnexttopic_23',['RecursivelyAppendNextTopic',['../namespacetram_1_1_ext_1_1_kitchensink.html#a388f74aaa8aeb8efd221f91bf2014504',1,'tram::Ext::Kitchensink']]],\n  ['refresh_24',['Refresh',['../classtram_1_1_animation_component.html#af951b71145c810f51d1c6c04feff431a',1,'tram::AnimationComponent']]],\n  ['refreshaabb_25',['RefreshAABB',['../classtram_1_1_render_component.html#a51f449b6197db27708cbd4ebfb6ed433',1,'tram::RenderComponent']]],\n  ['register_26',['Register',['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a1ed7709d6bccc5c11c042e1f9062c4c8',1,'tram::Ext::Kitchensink::AttributeInfo::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad10e29486dbc5f775f99ad93f94b265c',1,'tram::Ext::Kitchensink::Button::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a1de507d7dea92475ef9f2437f1e58e6f',1,'tram::Ext::Kitchensink::Breakable::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#aa1ea56987cb0695dbb7747307895107a',1,'tram::Ext::Kitchensink::Water::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae4baca0092d7c385ae72abe24f017e52',1,'tram::Ext::Kitchensink::Train::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0e0f4eb79e699f1e7c1ec86bd859e6b9',1,'tram::Ext::Kitchensink::Pickup::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a2cfbebb081bb04c2c636f90378f62499',1,'tram::Ext::Kitchensink::DebugText::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0ac5e2d0194f5d8a000240e5fdb81aa',1,'tram::Ext::Kitchensink::DebugShape::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a42d3c79e2604d3e8f7b66c13dbfa47cf',1,'tram::Ext::Kitchensink::TriggerAutosave::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad355370a396ef40aa776d75b1f5c8792',1,'tram::Ext::Kitchensink::TriggerHurt::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a4772ae9b7dc27bc1b58d876381a22a23',1,'tram::Ext::Kitchensink::TriggerOnce::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#af34ee313ba0e8e9fa03ec43a45cd99de',1,'tram::Ext::Kitchensink::TriggerMultiple::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a40042ae95b62c4b861aed2b5688f151d',1,'tram::Ext::Kitchensink::TriggerPush::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#acc0a673bdbc61686390ddc48f8e93ed6',1,'tram::Ext::Kitchensink::TriggerRemove::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac43c05116add4165f154679954941b1a',1,'tram::Ext::Kitchensink::TriggerTeleport::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a22615e5cbc341c9b9b97fa83b64cf889',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aee7dc2dfd34cc554c1428c897e2ab043',1,'tram::Ext::Kitchensink::ItemClass::Register()'],['../classtram_1_1_crate.html#aff35e03d11ebc3c23ab1c10f80aeb109',1,'tram::Crate::Register()'],['../classtram_1_1_entity.html#a21f52a14480f7dec666418d7ba17524c',1,'tram::Entity::Register()'],['../structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d',1,'tram::Event::Register()'],['../structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a',1,'tram::Message::Register()'],['../structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8',1,'tram::Signal::Register()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a4e8506ce47f417ec8d0b10d71acec396',1,'tram::Render::API::LinkedShader::Register()'],['../classtram_1_1_decoration.html#a1b74c5467bdfdcf8749f0b3c172832ad',1,'tram::Decoration::Register()'],['../classtram_1_1_light.html#aab4ab5b5a486c5b765906b62da2eaa46',1,'tram::Light::Register()'],['../classtram_1_1_marker.html#a6122424fbc20e0355ca793c26481d961',1,'tram::Marker::Register()'],['../classtram_1_1_sound.html#a588c740a125c4956b97155e89838884e',1,'tram::Sound::Register()'],['../classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051',1,'tram::StaticWorldObject::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a38a603ab838ff6b5896f2a19f3c15e1c',1,'tram::Ext::Kitchensink::InventoryManager::Register()'],['../classtram_1_1_trigger.html#a695e8a121f4c3e42dbe4afcd1adecbe2',1,'tram::Trigger::Register()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a084b23b5977c656c8b6792c3e2704df7',1,'tram::Ext::Kitchensink::AIPackage::Register()'],['../namespacetram_1_1_scriptable_type.html#a1920e75c5a3e8de81df686d8f4073d04',1,'tram::ScriptableType::Register()'],['../namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5',1,'tram::Settings::Register(bool &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_settings.html#ae777d5373a811ea16bac85f681608054',1,'tram::Settings::Register(float &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_settings.html#aa67d64e20ae324efb9693944c7a56823',1,'tram::Settings::Register(int32_t &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_settings.html#a8a4aec9c01b32664d1849fe0afde230c',1,'tram::Settings::Register(uint32_t &amp;value, const char *name, uint32_t flags)'],['../namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710',1,'tram::System::Register()']]],\n  ['registerfont_27',['RegisterFont',['../namespacetram_1_1_g_u_i.html#a7b243fa8e17bd3e09a70b94f9f0a8054',1,'tram::GUI']]],\n  ['registerkeyboardaction_28',['RegisterKeyboardAction',['../namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9',1,'tram::UI']]],\n  ['registermaterialtype_29',['RegisterMaterialType',['../namespacetram_1_1_render.html#a86482f81f22e15a053cf87bd77b863fa',1,'tram::Render']]],\n  ['registerrenderenvironmentmapshortcut_30',['RegisterRenderEnvironmentMapShortcut',['../namespacetram_1_1_ext_1_1_kitchensink.html#aac57df31b8265b053fcc5470b852a85a',1,'tram::Ext::Kitchensink']]],\n  ['registershader_31',['RegisterShader',['../namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d',1,'tram::Render::API']]],\n  ['registertype_32',['RegisterType',['../classtram_1_1_entity.html#a9611e07ae9178831c24f65d35e936199',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, const FieldInfo *fields, size_t fieldcount)'],['../classtram_1_1_entity.html#abf07867be6c8d765620cf6ad3a1b2525',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, std::initializer_list&lt; FieldInfo &gt; fields)'],['../classtram_1_1_entity.html#a688ecc3f647b88edae8704c9330d2afe',1,'tram::Entity::RegisterType(name_t name, entity_make, entity_clear, const Type *fields, size_t fieldcount)']]],\n  ['registeruniformblock_33',['RegisterUniformBlock',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#ad06e322a21edacc9e1aa8a99b997f1b2',1,'tram::Render::API::LinkedShader']]],\n  ['registervertexdefinition_34',['RegisterVertexDefinition',['../namespacetram_1_1_render.html#a457bd7e3ddb309251cb2cd0ffe1a5b37',1,'tram::Render']]],\n  ['registervertexformat_35',['RegisterVertexFormat',['../namespacetram_1_1_render.html#a4ee55080a07d32caee9f42ce596d7e18',1,'tram::Render']]],\n  ['remove_36',['Remove',['../namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799',1,'tram::Stats::Remove()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#aa9d042bb7757a4a95a634582c36eb7db',1,'tram::Ext::Menu::Menu::Remove()'],['../classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338',1,'tram::WorldCell::Remove()'],['../classtram_1_1_hashmap.html#aa5ec795eaaa273c57e3362be015a9dcb',1,'tram::Hashmap::Remove(UID key)'],['../classtram_1_1_hashmap.html#aaa8261398da94654cde9e61690810199',1,'tram::Hashmap::Remove(uint32_t key)'],['../classtram_1_1_octree.html#a8496d30bf8f12e11b61923a06ee14e3d',1,'tram::Octree::Remove(uint32_t node)'],['../classtram_1_1_octree.html#a712401b2423a34b64d7205459ddacf55',1,'tram::Octree::Remove(Node *node)'],['../classtram_1_1_pool.html#a60d25b55dc178234fd501c6329c1b7aa',1,'tram::Pool::Remove()'],['../classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc',1,'tram::Stack::Remove()']]],\n  ['removeaudiobuffer_37',['RemoveAudioBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d',1,'tram::Audio::API']]],\n  ['removeaudiosource_38',['RemoveAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68',1,'tram::Audio::API']]],\n  ['removecharacter_39',['RemoveCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#abe0e002aef7acae2e30fc9c756777b1f',1,'tram::Ext::Kitchensink::Faction']]],\n  ['removedrawlistentry_40',['RemoveDrawListEntry',['../namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2',1,'tram::Render::API']]],\n  ['removeeffect_41',['RemoveEffect',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['removehierarchy_42',['RemoveHierarchy',['../classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474',1,'tram::AABBTree']]],\n  ['removeitem_43',['RemoveItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547',1,'tram::Ext::Kitchensink::Inventory::RemoveItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#abd31745962ddee971598846630493ddc',1,'tram::Ext::Kitchensink::ListInventoryManager::RemoveItem()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#ab2b80ac808e4806ab9302a8e63a6c9be',1,'tram::Ext::Kitchensink::InventoryManager::RemoveItem()']]],\n  ['removeleaf_44',['RemoveLeaf',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a0714a6a654730b3f04222f08c26c8eec',1,'tram::Render::AABB::RemoveLeaf()'],['../classtram_1_1_octree.html#a9b95a094d1299eac280c2baaeef43f3b',1,'tram::Octree::RemoveLeaf()'],['../classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6',1,'tram::AABBTree::RemoveLeaf()']]],\n  ['removelight_45',['RemoveLight',['../namespacetram_1_1_render_1_1_light_tree.html#acbb22184ab1cca95ca3dd1f250e3f12d',1,'tram::Render::LightTree']]],\n  ['removelistener_46',['RemoveListener',['../structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5',1,'tram::Event']]],\n  ['removereference_47',['RemoveReference',['../classtram_1_1_resource.html#a4c975d7c7ef4a34ac9b2dc72977e10f9',1,'tram::Resource']]],\n  ['render_48',['Render',['../namespacetram_1_1_render.html#a5862ead09843f2489307cec433956d17',1,'tram::Render']]],\n  ['rendercomponent_49',['RenderComponent',['../classtram_1_1_render_component.html#aa32cca5b26feda97cbbed341d6633285',1,'tram::RenderComponent']]],\n  ['renderenvironmentmaps_50',['RenderEnvironmentMaps',['../namespacetram_1_1_ext_1_1_kitchensink.html#aad417990ff2a73e06c72f341d12c1c9b',1,'tram::Ext::Kitchensink']]],\n  ['renderframe_51',['RenderFrame',['../namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9',1,'tram::Render::API']]],\n  ['renderresult_52',['RenderResult',['../namespacetram_1_1_audio_1_1_spatial.html#a4fce28512165221d8874ab495d005804',1,'tram::Audio::Spatial']]],\n  ['reparent_53',['Reparent',['../classtram_1_1_animation_component.html#aaa1fa307b6434b4f33232fd2fb831590',1,'tram::AnimationComponent']]],\n  ['reporterrorwarning_54',['reportErrorWarning',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a0c323eedacd1cf9f7cd2d5c7ef4be405',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['requestanimationcomponent_55',['RequestAnimationComponent',['../classtram_1_1_decoration.html#aa0c8b3925860c63caa0c525c9160195d',1,'tram::Decoration']]],\n  ['requestresource_56',['RequestResource',['../namespacetram_1_1_async.html#a9db009e1493d70c2ce388b2910e32fa2',1,'tram::Async::RequestResource(EntityComponent *requester, Resource *resource)'],['../namespacetram_1_1_async.html#aa2234c4cb0590d5672aa3bf4bb78703f',1,'tram::Async::RequestResource(void(*callback)(void *data), void *data, Resource *resource)']]],\n  ['reset_57',['Reset',['../classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152',1,'tram::Stack']]],\n  ['reset_58',['reset',['../classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0',1,'tram::StackPool::reset()'],['../classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3',1,'tram::Stack::reset()']]],\n  ['reset_59',['Reset',['../classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832',1,'tram::StackPool']]],\n  ['reset_5ferror_60',['reset_error',['../classtram_1_1_text_reader_parser.html#ac24ef033c2f6c0db5ebb5aad736a0435',1,'tram::TextReaderParser::reset_error()'],['../classtram_1_1_file_reader_parser.html#a9efa5234488245dbb7918bfdd5bc41bd',1,'tram::FileReaderParser::reset_error()']]],\n  ['reset_5fflags_61',['reset_flags',['../classtram_1_1_file.html#a5c4dc235347eed3842168ad548d1d5a6',1,'tram::File']]],\n  ['resetcollisions_62',['ResetCollisions',['../classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8',1,'tram::TriggerComponent']]],\n  ['resetmove_63',['ResetMove',['../classtram_1_1_raycast_controller_component.html#a9f0a5b5809b046971e2b8f23d34f4838',1,'tram::RaycastControllerComponent::ResetMove()'],['../classtram_1_1_f_p_s_controller_component.html#a5302db1fe5d853e5bb0845ea5b0fa5f5',1,'tram::FPSControllerComponent::ResetMove()']]],\n  ['resource_64',['Resource',['../classtram_1_1_resource.html#a634805edb61d305a1ed69e35dbe4aeb3',1,'tram::Resource']]],\n  ['resourceproxy_65',['ResourceProxy',['../classtram_1_1_resource_proxy.html#ac391d66e8b3b4a5da5c27e8b29d3086c',1,'tram::ResourceProxy']]],\n  ['resourceready_66',['ResourceReady',['../classtram_1_1_entity_component.html#a7f860b05911af126e8bd152492466b40',1,'tram::EntityComponent']]],\n  ['restorecolor_67',['RestoreColor',['../namespacetram_1_1_g_u_i.html#a13a111a88e62cb6d8dd4434c22881dc5',1,'tram::GUI']]],\n  ['restorefont_68',['RestoreFont',['../namespacetram_1_1_g_u_i.html#a2750747aff85f20a25ae9bb33dd72bec',1,'tram::GUI']]],\n  ['rgbcolor_69',['RGBColor',['../namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb',1,'tram::Render::API']]],\n  ['rotateaabb_70',['RotateAABB',['../namespacetram.html#aecd3454b9944728f9e8beca79fb86a4b',1,'tram::RotateAABB(vec3 &amp;min, vec3 &amp;max, mat4 rotation)'],['../namespacetram.html#ae55bcde03ae63b1ceec8fb99f4416a55',1,'tram::RotateAABB(vec3 &amp;min, vec3 &amp;max, quat rotation)']]],\n  ['run_71',['Run',['../classtram_1_1_f_p_s_controller_component.html#a8cdc505ef5241f71136c2ff356e55615',1,'tram::FPSControllerComponent::Run()'],['../classtram_1_1_controller_component.html#a09830a27a27ef8b419a9cf9e60446121',1,'tram::ControllerComponent::Run()'],['../classtram_1_1_raycast_controller_component.html#a5d4e68ef39d6a803e86f9b6fed954995',1,'tram::RaycastControllerComponent::Run()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_12.js",
    "content": "var searchData=\n[\n  ['sanitizedata_0',['SanitizeData',['../classtram_1_1_scriptable.html#a51e08621ef581d5991528c9b8e5b0134',1,'tram::Scriptable']]],\n  ['save_1',['Save',['../namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77',1,'tram::Settings']]],\n  ['saveimagetodisk_2',['SaveImageToDisk',['../namespacetram_1_1_platform.html#a62f1df4ce7fc6c46cd5cf3d348d1ac5d',1,'tram::Platform']]],\n  ['scanlineconverttriangle_3',['ScanlineConvertTriangle',['../namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449',1,'tram::Render::API']]],\n  ['screenclose_4',['ScreenClose',['../namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487',1,'tram::UI']]],\n  ['screenresize_5',['ScreenResize',['../namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282',1,'tram::UI']]],\n  ['script_6',['Script',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['scriptable_7',['Scriptable',['../classtram_1_1_scriptable.html#a155369bc0f7a32617d2b9addb29daea7',1,'tram::Scriptable']]],\n  ['send_8',['Send',['../structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8',1,'tram::Message::Send(const Message &amp;message)'],['../structtram_1_1_message.html#a9e97e1f98831bf5a18bf28a7f6ece953',1,'tram::Message::Send(const Message &amp;message, float delay)']]],\n  ['serialize_9',['Serialize',['../classtram_1_1_crate.html#a5e88d32ca11233d9f779f6182e808934',1,'tram::Crate::Serialize()'],['../classtram_1_1_decoration.html#a3be7afb5d539dfef12b41d9132b051ae',1,'tram::Decoration::Serialize()'],['../classtram_1_1_light.html#a1b28bc6a6961ed135f688efd63930d1d',1,'tram::Light::Serialize()'],['../classtram_1_1_marker.html#a5c9a6085109982a942bf4f08c8b6cb09',1,'tram::Marker::Serialize()'],['../classtram_1_1_player.html#abda0826d3fb3a3ef717a4b8704745b61',1,'tram::Player::Serialize()'],['../classtram_1_1_scriptable.html#a382a7e9d207bb65e475aa0012f9a2ac6',1,'tram::Scriptable::Serialize()'],['../classtram_1_1_sound.html#a41a7fbea5ee99ed28d7d586de0b8f794',1,'tram::Sound::Serialize()'],['../classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f',1,'tram::StaticWorldObject::Serialize()'],['../classtram_1_1_trigger.html#aa5b794eeecfb4a50395bb0013a5a0d2f',1,'tram::Trigger::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac06e45332876905bc76befbaf387b20f',1,'tram::Ext::Kitchensink::Button::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aed52a8cb6a7d734e0da47fed6b687de3',1,'tram::Ext::Kitchensink::DebugText::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa0fedc7fe85850fe25383fe839b67738',1,'tram::Ext::Kitchensink::DebugShape::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ad054dbd579c90c448a21a741a4e14b43',1,'tram::Ext::Kitchensink::TriggerAutosave::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a4b08beab647a0ea56a113ac035d4061a',1,'tram::Ext::Kitchensink::TriggerHurt::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a25d11e16da07ac56161f2bc4b1ef7359',1,'tram::Ext::Kitchensink::TriggerOnce::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#aa87df5a1dc89880323ba8e5c306de546',1,'tram::Ext::Kitchensink::TriggerMultiple::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5311486ac974e5897071824f0d03ee6e',1,'tram::Ext::Kitchensink::TriggerPush::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#aea1ec1ba74f293b5043d00d7899fb734',1,'tram::Ext::Kitchensink::TriggerRemove::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2ec405cef2fbc36f67215266939c4382',1,'tram::Ext::Kitchensink::TriggerTeleport::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a8235ebd895fe382b080d2e0a70e1738f',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#aaca880ca76b51e2ce862148a895f61ab',1,'tram::Ext::Kitchensink::QuestEntity::Serialize()'],['../classtram_1_1_entity.html#a022989dd6fae21cdb65af24f26648488',1,'tram::Entity::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aae6220e39a9664f2279dc889179b21b9',1,'tram::Ext::Kitchensink::Train::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a91048dbb77098e96000955924add2157',1,'tram::Ext::Kitchensink::Water::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aa00b9673f6363852e48c7522e202fd30',1,'tram::Ext::Kitchensink::Breakable::Serialize()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa3a8dd7dd03c77cc765e2f8e279f7802',1,'tram::Ext::Kitchensink::Pickup::Serialize()']]],\n  ['serializestring_10',['SerializeString',['../classtram_1_1_player.html#aab33b3c6c47189f920a5d4f0bee78528',1,'tram::Player']]],\n  ['set_11',['set',['../classtram_1_1_resource_proxy.html#a3481987ea325fd008b4dc41f4ab64dc1',1,'tram::ResourceProxy']]],\n  ['set_12',['Set',['../namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5',1,'tram::Settings']]],\n  ['set_5fskip_5fnewline_13',['set_skip_newline',['../classtram_1_1_file_reader_parser.html#a593aa775ae47147f9328673822adb7d1',1,'tram::FileReaderParser']]],\n  ['set_5fskip_5fvalue_14',['set_skip_value',['../classtram_1_1_file_reader_parser.html#a99a0e7fd09920b898ef0a275b202541a',1,'tram::FileReaderParser']]],\n  ['setactivationcallback_15',['SetActivationCallback',['../classtram_1_1_trigger_component.html#ad30c23103020b9c9144d21835793f892',1,'tram::TriggerComponent']]],\n  ['setactive_16',['SetActive',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ad08e1bd8a37aa799617220b19e2df508',1,'tram::Ext::Camera::Camera']]],\n  ['setambientcolor_17',['SetAmbientColor',['../namespacetram_1_1_render.html#acb0e80ad32fe24d60dc62e58017b37b2',1,'tram::Render']]],\n  ['setandstore_18',['SetAndStore',['../namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643',1,'tram::Settings']]],\n  ['setangularfactor_19',['SetAngularFactor',['../classtram_1_1_physics_component.html#a4a7c6f98fc1ff033c6988c35bc14c999',1,'tram::PhysicsComponent']]],\n  ['setanimationcomponent_20',['SetAnimationComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a353c54cd4574695e428894719609c595',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['setanimationstatecomponent_21',['SetAnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a3b750ab68f6cd76205f6f39a8b98f8e8',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['setanimationtable_22',['SetAnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#aa549e6a492118321af2af17a1c342290',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['setarmature_23',['SetArmature',['../classtram_1_1_render_component.html#ab67dd56c013753efd5c8fa9866daab88',1,'tram::RenderComponent']]],\n  ['setattribute_24',['SetAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64',1,'tram::Ext::Kitchensink::AttributeContainer::SetAttribute()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ab809fb75392382fe9c0081e2b1c72248',1,'tram::Ext::Kitchensink::CharacterClass::SetAttribute()']]],\n  ['setaudiosourcebuffer_25',['SetAudioSourceBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046',1,'tram::Audio::API']]],\n  ['setaudiosourcegain_26',['SetAudioSourceGain',['../namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f',1,'tram::Audio::API']]],\n  ['setaudiosourcepitch_27',['SetAudioSourcePitch',['../namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6',1,'tram::Audio::API']]],\n  ['setaudiosourceposition_28',['SetAudioSourcePosition',['../namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b',1,'tram::Audio::API']]],\n  ['setaudiosourcerepeating_29',['SetAudioSourceRepeating',['../namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c',1,'tram::Audio::API']]],\n  ['setaudiosourcevelocity_30',['SetAudioSourceVelocity',['../namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570',1,'tram::Audio::API']]],\n  ['setautoload_31',['SetAutoLoad',['../classtram_1_1_entity.html#a742a345ed3da6d6966040b4a2045ce8e',1,'tram::Entity']]],\n  ['setautomaticloading_32',['SetAutomaticLoading',['../classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859',1,'tram::WorldCell']]],\n  ['setaxissensitivity_33',['SetAxisSensitivity',['../namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5',1,'tram::UI']]],\n  ['setbasedisposition_34',['SetBaseDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a250fa84700e6ae73eb75f343f8a7b1c2',1,'tram::Ext::Kitchensink::Character']]],\n  ['setbobbing_35',['SetBobbing',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc8754d53b7ba8698791378dbda72007',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingcallback_36',['SetBobbingCallback',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a9c90b959c76be84f182e826b60f4d1bb',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingdistance_37',['SetBobbingDistance',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab1b10331c68852d99dadeaba25aae16d',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobbingtilt_38',['SetBobbingTilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a647225bd7bd3d33fc1295b8e59945b1a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setbobspeed_39',['SetBobSpeed',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a34cc63ef60051ea61e79d460563d8806',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setcharacterloyalty_40',['SetCharacterLoyalty',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ad8d824372cef0f862a20d2e0e1cc6efc',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setcharacterrank_41',['SetCharacterRank',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a4b2fb5b81f7d1d27dab2eac014eddef4',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setcollisiongroup_42',['SetCollisionGroup',['../classtram_1_1_f_p_s_controller_component.html#a198a3b9279dffb137f56bb510b65cf79',1,'tram::FPSControllerComponent::SetCollisionGroup()'],['../classtram_1_1_raycast_controller_component.html#a6588e19ca0bc87e0ddf3f53f6b938df4',1,'tram::RaycastControllerComponent::SetCollisionGroup()'],['../classtram_1_1_physics_component.html#a62ca80aadcd392cc94243f1a42d1b06e',1,'tram::PhysicsComponent::SetCollisionGroup()'],['../classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75',1,'tram::TriggerComponent::SetCollisionGroup()']]],\n  ['setcollisionmask_43',['SetCollisionMask',['../classtram_1_1_physics_component.html#a02d7278815c993d0c267002740e2cc10',1,'tram::PhysicsComponent::SetCollisionMask()'],['../classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4',1,'tram::TriggerComponent::SetCollisionMask()']]],\n  ['setcollisions_44',['SetCollisions',['../classtram_1_1_controller_component.html#a005c65e23bba7635c05821a5bebbdf47',1,'tram::ControllerComponent']]],\n  ['setcollisionsize_45',['SetCollisionSize',['../classtram_1_1_f_p_s_controller_component.html#a790794239c994c8c15f988edee64ae70',1,'tram::FPSControllerComponent::SetCollisionSize()'],['../classtram_1_1_raycast_controller_component.html#a83c8376ae644ba75c5caa09803e4e8ef',1,'tram::RaycastControllerComponent::SetCollisionSize()']]],\n  ['setcolor_46',['SetColor',['../classtram_1_1_render_component.html#af17bf80e41504736aafbed51e68777cb',1,'tram::RenderComponent::SetColor()'],['../classtram_1_1_render_1_1_material.html#ac450fbb7d4e815d5d84aee35acf40fc8',1,'tram::Render::Material::SetColor()'],['../classtram_1_1_light_component.html#ac9245097981e9adcb4f31f83513a071b',1,'tram::LightComponent::SetColor()'],['../namespacetram_1_1_g_u_i.html#a7210e80143cdcc0ce28a57c0b283fca6',1,'tram::GUI::SetColor()']]],\n  ['setconsolelogcallback_47',['SetConsoleLogCallback',['../namespacetram.html#aaf2fa22ee1b4ccc8fc03fe49402db0c5',1,'tram::SetConsoleLogCallback(void(int, const char *))'],['../namespacetram.html#ad6e944197c5e9252268255850e7d15fb',1,'tram::SetConsoleLogCallback(void(*callback)(int, const char *))']]],\n  ['setcontents_48',['SetContents',['../classtram_1_1_disk_writer.html#a6430c8e4e068ca19c9b31f1d0899b34c',1,'tram::DiskWriter::SetContents()'],['../classtram_1_1_file_writer.html#a74186dc3ea104ae0fa72c23f96ef7e80',1,'tram::FileWriter::SetContents()']]],\n  ['setcontrollercomponent_49',['SetControllerComponent',['../classtram_1_1_player_component.html#a8487102a9cb10c8c9b59e4aa8c0d4c56',1,'tram::PlayerComponent::SetControllerComponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7740703b2a0dfef31440331972ca0bdf',1,'tram::Ext::Kitchensink::AIAgent::SetControllerComponent()']]],\n  ['setcrouchspeed_50',['SetCrouchSpeed',['../classtram_1_1_f_p_s_controller_component.html#a576c462ea53d985f902085041cfafc72',1,'tram::FPSControllerComponent::SetCrouchSpeed()'],['../classtram_1_1_raycast_controller_component.html#ab9cc4edd8b6e0076ee4e6ffd0df8353c',1,'tram::RaycastControllerComponent::SetCrouchSpeed()']]],\n  ['setcursor_51',['SetCursor',['../namespacetram_1_1_platform_1_1_window.html#af8f96fbc1d628f67ed4301d47d67120a',1,'tram::Platform::Window::SetCursor()'],['../namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf',1,'tram::UI::SetCursor()']]],\n  ['setcursordelayed_52',['SetCursorDelayed',['../namespacetram_1_1_g_u_i.html#a722e52d1cec8ee81a55e26dc1a4c63c8',1,'tram::GUI']]],\n  ['setcursorposition_53',['SetCursorPosition',['../namespacetram_1_1_platform_1_1_window.html#aeadcf3d1d5fbf11485b74214f091819e',1,'tram::Platform::Window']]],\n  ['setdebugdraw_54',['SetDebugDraw',['../classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8',1,'tram::WorldCell']]],\n  ['setdebugdrawing_55',['SetDebugDrawing',['../classtram_1_1_physics_component.html#aa352025ec22ad95c90b1b4055eaca758',1,'tram::PhysicsComponent']]],\n  ['setdebuginfodraw_56',['SetDebugInfoDraw',['../classtram_1_1_audio_component.html#a08da2d9226240fb8e37b91b77145f0cf',1,'tram::AudioComponent::SetDebugInfoDraw()'],['../classtram_1_1_controller_component.html#af7b5cdc611a17b8a7261e14df61c56dd',1,'tram::ControllerComponent::SetDebugInfoDraw()'],['../classtram_1_1_animation_component.html#a9040237d0b7095c4f3c40263bbf8428e',1,'tram::AnimationComponent::SetDebugInfoDraw()']]],\n  ['setdebugmode_57',['setDebugMode',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#a77b61272d7ad912dc96eb1b4e721a6b2',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['setdebugmode_58',['SetDebugMode',['../namespacetram_1_1_render_1_1_a_p_i.html#a7d69a7f95415804042a41c3580a7c56f',1,'tram::Render::API']]],\n  ['setdectivationcallback_59',['SetDectivationCallback',['../classtram_1_1_trigger_component.html#a5810d82217bbf1ba29a40beca70ce30d',1,'tram::TriggerComponent']]],\n  ['setdevice_60',['SetDevice',['../namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6',1,'tram::Render::API']]],\n  ['setdirection_61',['SetDirection',['../classtram_1_1_light_component.html#a407b59e1e8c215a030e5eff1aba7d7d1',1,'tram::LightComponent']]],\n  ['setdirectionalight_62',['SetDirectionaLight',['../classtram_1_1_render_component.html#a6f3130e436973f3e9f9f949e642df68d',1,'tram::RenderComponent']]],\n  ['setdisplaylogcallback_63',['SetDisplayLogCallback',['../namespacetram.html#aeb62c461f07f0472724808f099abd05d',1,'tram::SetDisplayLogCallback(void(*callback)(int, const char *))'],['../namespacetram.html#a6386f26cd40ff74930ce7855564b513d',1,'tram::SetDisplayLogCallback(void(int, const char *))']]],\n  ['setdistance_64',['SetDistance',['../classtram_1_1_light_component.html#a1861087271aee66c91c327ec199000da',1,'tram::LightComponent']]],\n  ['setdrawlistaabb_65',['SetDrawListAABB',['../namespacetram_1_1_render_1_1_a_p_i.html#a68a28820f27f670a90c2a644aa199728',1,'tram::Render::API']]],\n  ['setdrawlistcolors_66',['SetDrawListColors',['../namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1',1,'tram::Render::API']]],\n  ['setdrawlistindexarray_67',['SetDrawListIndexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a',1,'tram::Render::API']]],\n  ['setdrawlistindexrange_68',['SetDrawListIndexRange',['../namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440',1,'tram::Render::API']]],\n  ['setdrawlistmaterials_69',['SetDrawListMaterials',['../namespacetram_1_1_render_1_1_a_p_i.html#a020f2e580879d12bf3b84b0ed5b9ab70',1,'tram::Render::API']]],\n  ['setdrawlistshader_70',['SetDrawListShader',['../namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed',1,'tram::Render::API']]],\n  ['setdrawlistspecularities_71',['SetDrawListSpecularities',['../namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8',1,'tram::Render::API']]],\n  ['setdrawlistspritearray_72',['SetDrawListSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a9089059c10db7896ab1796273aab81b7',1,'tram::Render::API']]],\n  ['setdrawlisttextureoffsets_73',['SetDrawListTextureOffsets',['../namespacetram_1_1_render_1_1_a_p_i.html#aabd8944a6224d5713a02ab8805acf20d',1,'tram::Render::API']]],\n  ['setdrawlisttextures_74',['SetDrawListTextures',['../namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c',1,'tram::Render::API']]],\n  ['setdrawlistvertexarray_75',['SetDrawListVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16',1,'tram::Render::API']]],\n  ['setdrawtrigger_76',['SetDrawTrigger',['../classtram_1_1_trigger.html#ae6703ba2939bf5799cec0c87eb677038',1,'tram::Trigger']]],\n  ['setentity_77',['SetEntity',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0895a5a8ed80b2a60a59cb1fe37a5cc1',1,'tram::Ext::Menu::MessageSend::SetEntity()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#afb8fba8b653379700d91bef8816f036e',1,'tram::Ext::Menu::SignalMenu::SetEntity()']]],\n  ['setenvironmentmap_78',['SetEnvironmentMap',['../classtram_1_1_render_component.html#a81729832968e5f5656d3b230cd0f66fd',1,'tram::RenderComponent::SetEnvironmentMap()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a52c5145a1f9715fcb38218c4c6383fcf',1,'tram::Render::API::SetEnvironmentMap()']]],\n  ['seteventtype_79',['SetEventType',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab8f2c00eee82630287cf68b3d9ca9469',1,'tram::Ext::Menu::EventEmit']]],\n  ['setexponent_80',['SetExponent',['../classtram_1_1_light_component.html#ac7375045221c2b515f18c1b5893f048f',1,'tram::LightComponent']]],\n  ['setfade_81',['SetFade',['../classtram_1_1_animation_component.html#a2fcbfb0820bce127c4ef9c82238a296f',1,'tram::AnimationComponent']]],\n  ['setfadedistance_82',['SetFadeDistance',['../namespacetram_1_1_render_1_1_a_p_i.html#a664d9f1a7426b3a1505975402100480a',1,'tram::Render::API']]],\n  ['setfardistance_83',['SetFarDistance',['../classtram_1_1_render_1_1_model.html#acf0073d6b4982cb158d3d7289afa9266',1,'tram::Render::Model']]],\n  ['setfiltercallback_84',['SetFilterCallback',['../classtram_1_1_trigger_component.html#ac4d9c4e43a0e75b00ec6de674c9b7bc5',1,'tram::TriggerComponent']]],\n  ['setflag_85',['SetFlag',['../classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050',1,'tram::WorldCell::SetFlag()'],['../classtram_1_1_entity.html#a613b86846cd7d82c666367c98d266e6e',1,'tram::Entity::SetFlag()']]],\n  ['setflags_86',['SetFlags',['../namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896',1,'tram::Render::API']]],\n  ['setflyspeed_87',['SetFlySpeed',['../classtram_1_1_raycast_controller_component.html#aafc558e1478f35254aa19f0bfd4bbac9',1,'tram::RaycastControllerComponent::SetFlySpeed()'],['../classtram_1_1_f_p_s_controller_component.html#ac0b5fd2754147656c7a45085715119c6',1,'tram::FPSControllerComponent::SetFlySpeed()']]],\n  ['setfollowing_88',['SetFollowing',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a890d07770b117f45d57435f233f29da3',1,'tram::Ext::Camera::Camera']]],\n  ['setfollowinginterpolation_89',['SetFollowingInterpolation',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0b2dd1c3281e606b65cabb974583dcab',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setfollowinglookat_90',['SetFollowingLookat',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a025cfc11ad96bc784c5b6b7dfdfd57cf',1,'tram::Ext::Camera::Camera']]],\n  ['setfollowingoffset_91',['SetFollowingOffset',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a25ab9c4939a27be11cb70b3d5adfda40',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setfont_92',['SetFont',['../namespacetram_1_1_g_u_i.html#a2a3c432ea9156a810b47d5e9836d861a',1,'tram::GUI']]],\n  ['setframe_93',['SetFrame',['../classtram_1_1_animation_component.html#a8f3653661fe211b4b809c1fdbdcc8d08',1,'tram::AnimationComponent::SetFrame()'],['../classtram_1_1_decal_component.html#af3ff3ceaf63a48c77bbadd3788384ce6',1,'tram::DecalComponent::SetFrame()']]],\n  ['setfriction_94',['SetFriction',['../classtram_1_1_raycast_controller_component.html#a8e3f7be1fc7488057d7319883300dc5f',1,'tram::RaycastControllerComponent::SetFriction()'],['../classtram_1_1_f_p_s_controller_component.html#a4a55f5fdc6a0540f3843309ec6f53894',1,'tram::FPSControllerComponent::SetFriction()']]],\n  ['setfromraw_95',['SetFromRaw',['../namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea',1,'tram::Settings']]],\n  ['setfullscreen_96',['SetFullscreen',['../namespacetram_1_1_platform_1_1_window.html#a225b179d574437d4573c016bfeed7fe4',1,'tram::Platform::Window']]],\n  ['setfunction_97',['SetFunction',['../classtram_1_1_script_1_1_interface.html#aee03e2ec9682ab4d801bed9eaf53f703',1,'tram::Script::Interface::SetFunction()'],['../namespacetram_1_1_script.html#a446f2631dceec969ceccee5841e8e019',1,'tram::Script::SetFunction(name_t name, std::vector&lt; Type &gt; parameters, value_t(*function)(valuearray_t))']]],\n  ['setglobal_98',['SetGlobal',['../namespacetram_1_1_script.html#a3052ee4f8a5d4cba402b9342e3a7b0a6',1,'tram::Script::SetGlobal()'],['../classtram_1_1_script_1_1_interface.html#ac3540126716b8a6a8675cf859ab8152b',1,'tram::Script::Interface::SetGlobal()']]],\n  ['setglyph_99',['SetGlyph',['../namespacetram_1_1_g_u_i.html#ac467099a0542b69fb101532431fef5a1',1,'tram::GUI']]],\n  ['setglyphdefaults_100',['SetGlyphDefaults',['../namespacetram_1_1_g_u_i.html#a8b13f224cb4fc10e56e14f176d93b95d',1,'tram::GUI']]],\n  ['setincrement_101',['SetIncrement',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5',1,'tram::Ext::Kitchensink::QuestTrigger']]],\n  ['setinitialized_102',['SetInitialized',['../namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d',1,'tram::System']]],\n  ['setinputstate_103',['SetInputState',['../namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35',1,'tram::UI']]],\n  ['setinterceptcallback_104',['SetInterceptCallback',['../structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f',1,'tram::Message']]],\n  ['setinterface_105',['SetInterface',['../namespacetram_1_1_script.html#ad66379be86f633359248ee30b1d7b073',1,'tram::Script']]],\n  ['setinterior_106',['SetInterior',['../classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf',1,'tram::WorldCell']]],\n  ['setinteriorlights_107',['SetInteriorLights',['../classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9',1,'tram::WorldCell']]],\n  ['setkeyboardlook_108',['SetKeyboardLook',['../classtram_1_1_player_component.html#ab188c1286058f995a0260cc488d32daa',1,'tram::PlayerComponent']]],\n  ['setkeyframe_109',['SetKeyframe',['../classtram_1_1_animation_component.html#a56d81b59bfb31b228aacaeda632474ba',1,'tram::AnimationComponent']]],\n  ['setkinematic_110',['SetKinematic',['../classtram_1_1_physics_component.html#a80d73825a4421015c00f3fe968b6b090',1,'tram::PhysicsComponent']]],\n  ['setlayer_111',['SetLayer',['../namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50',1,'tram::Render::API::SetLayer()'],['../classtram_1_1_render_component.html#ad7c9df8966b4b2e87c0afbb9b75fffdc',1,'tram::RenderComponent::SetLayer()']]],\n  ['setlayermask_112',['SetLayerMask',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ab3f35ec6484b5b14ed1d67fda34e42f8',1,'tram::Ext::Camera::Camera']]],\n  ['setlightdraw_113',['SetLightDraw',['../classtram_1_1_light_component.html#a4a3e561c198c80a5f5ffdbc3168e6dfd',1,'tram::LightComponent']]],\n  ['setlightingparameters_114',['SetLightingParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c',1,'tram::Render::API']]],\n  ['setlightmap_115',['SetLightmap',['../classtram_1_1_render_component.html#a3eb6d145b4258093f8fcd1487edf2874',1,'tram::RenderComponent::SetLightmap()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950',1,'tram::Render::API::SetLightmap(drawlistentry_t entry, texturehandle_t lightmap)']]],\n  ['setlightparameters_116',['SetLightParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39',1,'tram::Render::API']]],\n  ['setlights_117',['SetLights',['../namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a',1,'tram::Render::API']]],\n  ['setlinearfactor_118',['SetLinearFactor',['../classtram_1_1_physics_component.html#aaf3bcc38317375d73fd6b7b426aaedc2',1,'tram::PhysicsComponent']]],\n  ['setlistenergain_119',['SetListenerGain',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0722507591b4bba19c85e8f9d8088704',1,'tram::Audio::API']]],\n  ['setlistenerorientation_120',['SetListenerOrientation',['../namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b',1,'tram::Audio::API::SetListenerOrientation()'],['../namespacetram_1_1_audio.html#acd913701b5ffec0d613acaca89266eab',1,'tram::Audio::SetListenerOrientation(quat orientation)']]],\n  ['setlistenerposition_121',['SetListenerPosition',['../namespacetram_1_1_audio.html#ae4700c24d6f820914c7f36ea15203727',1,'tram::Audio::SetListenerPosition()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b',1,'tram::Audio::API::SetListenerPosition()']]],\n  ['setlistenertransform_122',['SetListenerTransform',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#af377217d1922777d7d6513b28434c876',1,'tram::Ext::Camera::Camera']]],\n  ['setlocation_123',['SetLocation',['../classtram_1_1_decal_component.html#a1c1f2732d6481c3e25c7a5bca8c0f7e6',1,'tram::DecalComponent::SetLocation()'],['../classtram_1_1_audio_component.html#ad0fc5f3971f62787f84b8150f6a2e1df',1,'tram::AudioComponent::SetLocation()'],['../classtram_1_1_physics_component.html#a619f8a0efc2df26aaed1e5ef2e541b0a',1,'tram::PhysicsComponent::SetLocation()'],['../classtram_1_1_light_component.html#a3eaddbed4577c9c58915b1eafad0617a',1,'tram::LightComponent::SetLocation()'],['../classtram_1_1_entity.html#a6e2489225d5ca4a76b702b4d138963de',1,'tram::Entity::SetLocation()'],['../classtram_1_1_trigger_component.html#a0fcaae81162184053fc3354de8fae8cc',1,'tram::TriggerComponent::SetLocation()'],['../classtram_1_1_render_component.html#a81f2ac27fa4516443e6a11f3371736d4',1,'tram::RenderComponent::SetLocation()']]],\n  ['setlookdirection_124',['SetLookDirection',['../classtram_1_1_controller_component.html#a92c6a99db84d365877eb1e6f45b406ce',1,'tram::ControllerComponent']]],\n  ['setmass_125',['SetMass',['../classtram_1_1_physics_component.html#ae2431ad05061b3ead05fc896aa78fa8b',1,'tram::PhysicsComponent']]],\n  ['setmaterial_126',['SetMaterial',['../classtram_1_1_render_1_1_sprite.html#a0bac764220b653067aaed890943d28cc',1,'tram::Render::Sprite']]],\n  ['setmaterialcolor_127',['SetMaterialColor',['../namespacetram_1_1_render_1_1_a_p_i.html#a58fe214fe7c887e0911762eefa69f1ef',1,'tram::Render::API']]],\n  ['setmaterialfilter_128',['SetMaterialFilter',['../classtram_1_1_render_1_1_material.html#a37155313cda78e8032afeed80b2dc8bc',1,'tram::Render::Material']]],\n  ['setmaterialproperty_129',['SetMaterialProperty',['../classtram_1_1_render_1_1_material.html#a15456a50f775b0b406e376947b71bb04',1,'tram::Render::Material']]],\n  ['setmaterialreflectivity_130',['SetMaterialReflectivity',['../namespacetram_1_1_render_1_1_a_p_i.html#a777441cfb7c5806fcc7411a51739af30',1,'tram::Render::API']]],\n  ['setmaterialspecularexponent_131',['SetMaterialSpecularExponent',['../namespacetram_1_1_render_1_1_a_p_i.html#a6fca8cce2a22ed1edf6cc3fe8f241c7f',1,'tram::Render::API']]],\n  ['setmaterialspeculartransparency_132',['SetMaterialSpecularTransparency',['../namespacetram_1_1_render_1_1_a_p_i.html#a071cd1636bc88d93e740e78ad0c6a3be',1,'tram::Render::API']]],\n  ['setmaterialspecularweight_133',['SetMaterialSpecularWeight',['../namespacetram_1_1_render_1_1_a_p_i.html#a295d16334d54c86ddc7599a56546dc56',1,'tram::Render::API']]],\n  ['setmaterialtexture_134',['SetMaterialTexture',['../namespacetram_1_1_render_1_1_a_p_i.html#a8bd81654a22565c08d8b34aa9c405c14',1,'tram::Render::API']]],\n  ['setmaterialtype_135',['SetMaterialType',['../classtram_1_1_render_1_1_material.html#a25207b8d6b7c4ed0805a732bc196125e',1,'tram::Render::Material']]],\n  ['setmatrix_136',['SetMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22',1,'tram::Render::API']]],\n  ['setmediumlist_137',['SetMediumList',['../classtram_1_1_file_writer.html#a9c50a8afb948a19a9bc89d6353046aab',1,'tram::FileWriter']]],\n  ['setmessagetype_138',['SetMessageType',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a44e7e4389ab204102b9d53581be518d7',1,'tram::Ext::Menu::MessageSend']]],\n  ['setmodel_139',['SetModel',['../classtram_1_1_animation_component.html#ae18431fe0083fcb808cf91cac0a25ee2',1,'tram::AnimationComponent::SetModel()'],['../classtram_1_1_physics_component.html#acceb6cafd1dd8635ed56ec71a1c61f85',1,'tram::PhysicsComponent::SetModel()'],['../classtram_1_1_render_component.html#ab4769cf5994097dc687169595ceac02b',1,'tram::RenderComponent::SetModel()'],['../classtram_1_1_trigger_component.html#a1c35e8061d5dc72e113fa4fc52f875fc',1,'tram::TriggerComponent::SetModel(name_t model)'],['../classtram_1_1_trigger_component.html#ae965164c2483a255585e9998abe87df9',1,'tram::TriggerComponent::SetModel(Physics::CollisionModel *model)'],['../classtram_1_1_animation_component.html#a8a927071d5509777104ff0de4d613782',1,'tram::AnimationComponent::SetModel()']]],\n  ['setmonitor_140',['SetMonitor',['../namespacetram_1_1_platform_1_1_window.html#a58daaf85f6e0870b9bcdb2a443356213',1,'tram::Platform::Window']]],\n  ['setmouselook_141',['SetMouselook',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ade2f1910a021d9f4b2e836fa170f9f4a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setneardistance_142',['SetNearDistance',['../classtram_1_1_render_1_1_model.html#a5e2bf8fce6f1b151e5ce019d437f7604',1,'tram::Render::Model']]],\n  ['setnoclip_143',['SetNoclip',['../classtram_1_1_player_component.html#a9a1e25c0111518b35070974b80a1ce7d',1,'tram::PlayerComponent']]],\n  ['setobjective_144',['SetObjective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8',1,'tram::Ext::Kitchensink::QuestTrigger']]],\n  ['setoffset_145',['SetOffset',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a5b0714060be9fd26726a1aa37108edc2',1,'tram::Ext::Menu::InterceptMenu']]],\n  ['setonanimationfinishcallback_146',['SetOnAnimationFinishCallback',['../classtram_1_1_animation_component.html#a82fda1bdec933e8b63788b286081885a',1,'tram::AnimationComponent']]],\n  ['setorientation_147',['SetOrientation',['../classtram_1_1_path_follower.html#aca1321d0863fe982ec2d827135ab8ee2',1,'tram::PathFollower']]],\n  ['setorthoratio_148',['SetOrthoRatio',['../namespacetram_1_1_render.html#aa988a06a114b75baae33e244628ecd32',1,'tram::Render']]],\n  ['setparameters_149',['SetParameters',['../classtram_1_1_trigger.html#a2537a228019f8807f75f7169238614e4',1,'tram::Trigger::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a29563d3cf838e8bd7f981b155a61fb72',1,'tram::Ext::Kitchensink::Button::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af79ddccccc2a9a8fabb87a5634e91c3d',1,'tram::Ext::Kitchensink::Breakable::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#ad17e120992eba3ccc7a4a17160a8bfa3',1,'tram::Ext::Kitchensink::Water::SetParameters()'],['../classtram_1_1_player.html#ad91ecec5652fba7dc3d061b7823bc699',1,'tram::Player::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a7b7238d413eddcfdda31aeff7e55afb0',1,'tram::Ext::Kitchensink::Pickup::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a8358248f0c5e4f2f1a8d6c999454f483',1,'tram::Ext::Kitchensink::DebugText::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a1ecd14f21602db88a06c2b160cfa9174',1,'tram::Ext::Kitchensink::DebugShape::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a46ab45c6f44dbf65bc6dcdfff52f9798',1,'tram::Ext::Kitchensink::Train::SetParameters()'],['../classtram_1_1_crate.html#a2fd93587f542e04c90e066df25468540',1,'tram::Crate::SetParameters()'],['../classtram_1_1_decoration.html#a6bd26ad8c997a12796c4523dd0f3f8e6',1,'tram::Decoration::SetParameters()'],['../classtram_1_1_light.html#a4c76b25a1ea34c90b9eed095443e143f',1,'tram::Light::SetParameters()'],['../classtram_1_1_marker.html#a6217c8c7e40bb9a4904b28c2d0c44ded',1,'tram::Marker::SetParameters()'],['../classtram_1_1_entity.html#ac9e3adac30cac41573d2bdda676a0832',1,'tram::Entity::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#adc40d013900ce2da25ac6487593b24bb',1,'tram::Ext::Kitchensink::QuestEntity::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ad550edd2a6389a2ce7ef3e840dd14e7a',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#ac617bac29cb094149c2904a13c2e0de1',1,'tram::Ext::Kitchensink::TriggerTeleport::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac802678eba14b6f7396fa242f3b389fa',1,'tram::Ext::Kitchensink::TriggerRemove::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a0a01698a8de860ef2d97e6a0f57b7c25',1,'tram::Ext::Kitchensink::TriggerPush::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a18ef2e180b564569ebfb773ec83d9e45',1,'tram::Ext::Kitchensink::TriggerOnce::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a588c6567a94f6b471ae8528053ca244a',1,'tram::Ext::Kitchensink::TriggerAutosave::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c720eeebbc10b399c75cbf7225f8f7b',1,'tram::Ext::Kitchensink::TriggerHurt::SetParameters()'],['../classtram_1_1_scriptable.html#aa5c6c82c64f014b7a9068899f7282c68',1,'tram::Scriptable::SetParameters()'],['../classtram_1_1_sound.html#ab40d5d4f1ca14bcd32a252326f333bfa',1,'tram::Sound::SetParameters()'],['../classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3',1,'tram::StaticWorldObject::SetParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0acfdc56498029e59f4eaa3f389b8967',1,'tram::Ext::Kitchensink::TriggerMultiple::SetParameters()']]],\n  ['setparent_150',['SetParent',['../classtram_1_1_entity_component.html#a1683ad236bce69ab4b2c2dac75ef526a',1,'tram::EntityComponent']]],\n  ['setpause_151',['SetPause',['../classtram_1_1_animation_component.html#a73a899480e5814119ddb716c93253b4a',1,'tram::AnimationComponent']]],\n  ['setpersistent_152',['SetPersistent',['../classtram_1_1_entity.html#a0143b5547a4eeef3e1501defe9882514',1,'tram::Entity']]],\n  ['setpicked_153',['SetPicked',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a93063bcbb048c2fd86995f4ca5ad0ab4',1,'tram::Ext::Menu::WorldCellProperties::SetPicked()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a2465ce3aca5ad2e0b1e7b4b69090132c',1,'tram::Ext::Menu::EntityProperties::SetPicked()']]],\n  ['setplayspeed_154',['SetPlaySpeed',['../classtram_1_1_sprite_component.html#af67c5b9890fa7c815e53e39927db6c81',1,'tram::SpriteComponent']]],\n  ['setpose_155',['SetPose',['../namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0',1,'tram::Render::API']]],\n  ['setposition_156',['SetPosition',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a551344bef8e92a63362a56e61ba47e93',1,'tram::Ext::Camera::Camera']]],\n  ['setprojectionmatrix_157',['SetProjectionMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d',1,'tram::Render::API']]],\n  ['setrawinput_158',['SetRawInput',['../namespacetram_1_1_platform_1_1_window.html#aa2fd499590eebaf0a891068d1bac9945',1,'tram::Platform::Window']]],\n  ['setreflectivity_159',['SetReflectivity',['../classtram_1_1_render_1_1_material.html#a9ec5c89d070ff541a3ac8b449524a1be',1,'tram::Render::Material']]],\n  ['setrelation_160',['SetRelation',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a925e58834615871b89a1e8e7e223a54b',1,'tram::Ext::Kitchensink::Faction']]],\n  ['setrenderdebug_161',['SetRenderDebug',['../classtram_1_1_render_component.html#a5957906efb717b5596b1c6f12fbe6ded',1,'tram::RenderComponent']]],\n  ['setrepeating_162',['SetRepeating',['../classtram_1_1_audio_component.html#aa6d30f7ac730409c6d4a50edfc1d2ee9',1,'tram::AudioComponent']]],\n  ['setrepeats_163',['SetRepeats',['../classtram_1_1_animation_component.html#ab837c1cffe19cc9baa3ea3bc80577cdb',1,'tram::AnimationComponent']]],\n  ['setrigidbodyangularfactor_164',['SetRigidbodyAngularFactor',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7c4e5faa028c12c82946698a1110c1cd',1,'tram::Physics::API']]],\n  ['setrigidbodycollisioncallback_165',['SetRigidbodyCollisionCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#aacd35951302ec4c164498096dc1b4f59',1,'tram::Physics::API']]],\n  ['setrigidbodycollisiongroup_166',['SetRigidbodyCollisionGroup',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1c06fae565edc0f7e9724d2699d206e5',1,'tram::Physics::API']]],\n  ['setrigidbodycollisionmask_167',['SetRigidbodyCollisionMask',['../namespacetram_1_1_physics_1_1_a_p_i.html#a6a8846f245dd0179318174a1e7379c8e',1,'tram::Physics::API']]],\n  ['setrigidbodydebugdrawing_168',['SetRigidbodyDebugDrawing',['../namespacetram_1_1_physics_1_1_a_p_i.html#a94909ae121eee8f34565dc482b16d74d',1,'tram::Physics::API']]],\n  ['setrigidbodykinematic_169',['SetRigidbodyKinematic',['../namespacetram_1_1_physics_1_1_a_p_i.html#a69384c8fc4867f74184957c7b70ab882',1,'tram::Physics::API']]],\n  ['setrigidbodylinearfactor_170',['SetRigidbodyLinearFactor',['../namespacetram_1_1_physics_1_1_a_p_i.html#a4adab24a698129a226d8dc841539738a',1,'tram::Physics::API']]],\n  ['setrigidbodylocation_171',['SetRigidbodyLocation',['../namespacetram_1_1_physics_1_1_a_p_i.html#ac2cbf02cab4746c0351a894fe480d166',1,'tram::Physics::API']]],\n  ['setrigidbodymass_172',['SetRigidbodyMass',['../namespacetram_1_1_physics_1_1_a_p_i.html#a679d86cb7ebb5221e0c7655f728392b7',1,'tram::Physics::API']]],\n  ['setrigidbodyrotation_173',['SetRigidbodyRotation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a3d0d81d724fbaf34ae5c7b159fe61aef',1,'tram::Physics::API']]],\n  ['setrigidbodytransformcallback_174',['SetRigidbodyTransformCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a0abede70f73e5a367c12fc46a28b6fa3',1,'tram::Physics::API::SetRigidbodyTransformCallback(rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void *data)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#ad0713a3c44d84eee3bd0823cb58705f6',1,'tram::Physics::API::SetRigidbodyTransformCallback(rigidbody_t rigidbody, std::pair&lt; vec3, quat &gt;(*get_transform_callback)(void *), void(*set_transform_callback)(void *, std::pair&lt; vec3, quat &gt;), void *data)']]],\n  ['setrigidbodyvelocity_175',['SetRigidbodyVelocity',['../namespacetram_1_1_physics_1_1_a_p_i.html#ae4a9270ecabf522b0978581496d4f0b7',1,'tram::Physics::API']]],\n  ['setrotatefollowing_176',['SetRotateFollowing',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a81a3ae850df9d192387b0a16e39fe160',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['setrotation_177',['SetRotation',['../classtram_1_1_entity.html#a9a15c4d86ef5f814eb8cc9b70cb8ced3',1,'tram::Entity::SetRotation()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a1c2bd59cd7281d90dbc88be202982a93',1,'tram::Ext::Camera::Camera::SetRotation()'],['../classtram_1_1_trigger_component.html#afa86224935cc08c00224dc774da9c71d',1,'tram::TriggerComponent::SetRotation()'],['../classtram_1_1_render_component.html#ac254a9ca5d3e3aaf19831ed8cba3da74',1,'tram::RenderComponent::SetRotation()'],['../classtram_1_1_physics_component.html#a012cb69d2fc0bc2dedacd198e2de04dc',1,'tram::PhysicsComponent::SetRotation()'],['../classtram_1_1_decal_component.html#ab83fc898b9b0eebb2534149a51d0bbad',1,'tram::DecalComponent::SetRotation()']]],\n  ['setrunspeed_178',['SetRunSpeed',['../classtram_1_1_f_p_s_controller_component.html#a35420874880b9df73e292e495aa1e1dc',1,'tram::FPSControllerComponent::SetRunSpeed()'],['../classtram_1_1_raycast_controller_component.html#afec9667d19d362fddf18e23fe5375c2a',1,'tram::RaycastControllerComponent::SetRunSpeed()']]],\n  ['setscale_179',['SetScale',['../namespacetram_1_1_platform.html#a13e3e0fd03175cb1a3fcab404e3f0ef5',1,'tram::Platform::SetScale()'],['../classtram_1_1_decal_component.html#a0f75089eb63e3ad93137cad8a208a85c',1,'tram::DecalComponent::SetScale()'],['../classtram_1_1_render_component.html#ad4839670e65963fc3c247f01de60e8a3',1,'tram::RenderComponent::SetScale()'],['../namespacetram_1_1_platform_1_1_window.html#ad7000ba82ae8a78716a4d46451b7e3fc',1,'tram::Platform::Window::SetScale()']]],\n  ['setscaling_180',['SetScaling',['../namespacetram_1_1_g_u_i.html#abc96e6226a9e9abe317c04fe4661ee35',1,'tram::GUI']]],\n  ['setscreenclear_181',['SetScreenClear',['../namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70',1,'tram::Render::API']]],\n  ['setscreensize_182',['SetScreenSize',['../namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314',1,'tram::Render::API::SetScreenSize()'],['../namespacetram_1_1_render.html#abcb118a759504ad9bc0993ca69f7231e',1,'tram::Render::SetScreenSize()']]],\n  ['setsearchlist_183',['SetSearchList',['../classtram_1_1_file_reader.html#a8a7d782b12279f564439c0438365c91a',1,'tram::FileReader']]],\n  ['setselectedtext_184',['SetSelectedText',['../namespacetram_1_1_g_u_i.html#a2cea0738110390ba9a29efd3abde74ed',1,'tram::GUI']]],\n  ['setshape_185',['SetShape',['../classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e',1,'tram::TriggerComponent::SetShape()'],['../classtram_1_1_physics_component.html#a0956a47778936024e1d1b245728a680c',1,'tram::PhysicsComponent::SetShape()']]],\n  ['setsize_186',['SetSize',['../namespacetram_1_1_platform_1_1_window.html#af936ef79e15427ab64724cb9c0b102d2',1,'tram::Platform::Window']]],\n  ['setsound_187',['SetSound',['../classtram_1_1_audio_component.html#a736977966c4d0485ef879349eeef271e',1,'tram::AudioComponent']]],\n  ['setsource_188',['SetSource',['../classtram_1_1_render_1_1_material.html#a5f29589bc4853e8f7a7b321be58fc51b',1,'tram::Render::Material']]],\n  ['setsourcedraw_189',['SetSourceDraw',['../classtram_1_1_audio_component.html#a07c6b771da60423e0357a1c872db6ed3',1,'tram::AudioComponent']]],\n  ['setspecular_190',['SetSpecular',['../classtram_1_1_render_1_1_material.html#a059b96f9b911c30041d21d47ac27cb6f',1,'tram::Render::Material']]],\n  ['setspeed_191',['SetSpeed',['../classtram_1_1_animation_component.html#acfacd194c9559609030b7aff261ea9f1',1,'tram::AnimationComponent']]],\n  ['setsphericalharmonic_192',['SetSphericalHarmonic',['../namespacetram_1_1_render_1_1_a_p_i.html#a10c0e3ee3da9bfa728e219bf497ed773',1,'tram::Render::API']]],\n  ['setsprite_193',['SetSprite',['../classtram_1_1_decal_component.html#aa1a667b7f5e747d2216eeab28bf99de9',1,'tram::DecalComponent::SetSprite()'],['../classtram_1_1_particle_component.html#a8798a3b667e45954102f0eae33d3b941',1,'tram::ParticleComponent::SetSprite()'],['../classtram_1_1_sprite_component.html#a567f7ce43923f04380bc6a04d8f4b5a2',1,'tram::SpriteComponent::SetSprite()']]],\n  ['setstate_194',['SetState',['../namespacetram_1_1_system.html#a3b2b06b04a927a1cbb754d1054130ddb',1,'tram::System']]],\n  ['setstateanimation_195',['SetStateAnimation',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a504aca8b015e8fca48124474966a6e1e',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['setstatenextstate_196',['SetStateNextState',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#a57b233bcdc733ea9c7128d23499ef5cc',1,'tram::Ext::Kitchensink::AnimationTable']]],\n  ['setstepheight_197',['SetStepHeight',['../classtram_1_1_raycast_controller_component.html#a8152d995918ad6bda5a35d3bbf4be894',1,'tram::RaycastControllerComponent::SetStepHeight()'],['../classtram_1_1_f_p_s_controller_component.html#a70b7b9fae981e57ff334e5a5a5abbc8f',1,'tram::FPSControllerComponent::SetStepHeight()']]],\n  ['setstorecollisions_198',['SetStoreCollisions',['../classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5',1,'tram::TriggerComponent']]],\n  ['setsuncolor_199',['SetSunColor',['../namespacetram_1_1_render.html#a8804912a4838fc7b29819738b86f2b68',1,'tram::Render']]],\n  ['setsundirection_200',['SetSunDirection',['../namespacetram_1_1_render.html#a542bb444bfd6387612406c107509bbff',1,'tram::Render']]],\n  ['setsystemloggingseverity_201',['SetSystemLoggingSeverity',['../namespacetram.html#ad33d1b97d4055d1dc0ed20da61825d07',1,'tram']]],\n  ['settextureoffset_202',['SetTextureOffset',['../classtram_1_1_render_component.html#ad0cdc3be1acbe43f6fd315948c73611a',1,'tram::RenderComponent']]],\n  ['settexturetype_203',['SetTextureType',['../classtram_1_1_render_1_1_material.html#a0dd09cbb341520b030f16cc4f64a2689',1,'tram::Render::Material']]],\n  ['settilt_204',['SetTilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a264a29b441d6180743b3a59b7d14476f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['settitle_205',['SetTitle',['../namespacetram_1_1_platform_1_1_window.html#a9c20800318f5aa9b5d9b8a357c20e7e5',1,'tram::Platform::Window']]],\n  ['settransformcallback_206',['SetTransformCallback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa4cd905f3f85673090c5cd67957a8307',1,'tram::Physics::API::CallbackMotionState']]],\n  ['settriggercollisioncallback_207',['SetTriggerCollisionCallback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a92e3c5b470bbf94447cc20b17aa4397e',1,'tram::Physics::API']]],\n  ['settriggercollisiongroup_208',['SetTriggerCollisionGroup',['../namespacetram_1_1_physics_1_1_a_p_i.html#af28f53e5e058544eebb6f3fb1dca5810',1,'tram::Physics::API']]],\n  ['settriggercollisionmask_209',['SetTriggerCollisionMask',['../namespacetram_1_1_physics_1_1_a_p_i.html#aa4126218afb311b1eebc568240714fbd',1,'tram::Physics::API']]],\n  ['settriggerlocation_210',['SetTriggerLocation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7562c6255d4d3aa1f54ea321af65a4f8',1,'tram::Physics::API']]],\n  ['settriggerrotation_211',['SetTriggerRotation',['../namespacetram_1_1_physics_1_1_a_p_i.html#ad66528623ab1c92b411137a246641b6e',1,'tram::Physics::API']]],\n  ['setupdateparenttransform_212',['SetUpdateParentTransform',['../classtram_1_1_physics_component.html#a1a84053f86862350a329a1607c62f9a7',1,'tram::PhysicsComponent']]],\n  ['setupmodel_213',['SetupModel',['../classtram_1_1_audio_component.html#aacd7fc7a708e8bae044c8fa34bca2031',1,'tram::AudioComponent::SetupModel()'],['../classtram_1_1_trigger.html#a888c3a8eafbed2f160ada1af651de268',1,'tram::Trigger::SetupModel()'],['../classtram_1_1_light_component.html#ae603c601fe95f22db85c49b1bc53f800',1,'tram::LightComponent::SetupModel()']]],\n  ['setvalue_214',['SetValue',['../classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a',1,'tram::ValuePtr::SetValue()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af',1,'tram::Ext::Kitchensink::QuestTrigger::SetValue()']]],\n  ['setvariable_215',['SetVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e',1,'tram::Ext::Kitchensink::Quest']]],\n  ['setvelocity_216',['SetVelocity',['../classtram_1_1_physics_component.html#a8570e4138cdd40ea3547017f2fff1394',1,'tram::PhysicsComponent']]],\n  ['setviewdistance_217',['SetViewDistance',['../namespacetram_1_1_render.html#a6957c2557d41fe2fb76646cea2266eeb',1,'tram::Render']]],\n  ['setviewfov_218',['SetViewFov',['../namespacetram_1_1_render.html#a2aaf3e85135fa18435eb0d9412ca3a6d',1,'tram::Render']]],\n  ['setviewmatrix_219',['SetViewMatrix',['../namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936',1,'tram::Render::API']]],\n  ['setviewparameters_220',['SetViewParameters',['../namespacetram_1_1_render_1_1_a_p_i.html#a860017f77f92d43c2b09b5ff526d61b4',1,'tram::Render::API']]],\n  ['setviewposition_221',['SetViewPosition',['../namespacetram_1_1_render.html#a844a096223a3c0f236c7ef8f304a24f8',1,'tram::Render']]],\n  ['setviewrotation_222',['SetViewRotation',['../namespacetram_1_1_render.html#a81a4ef257882a1513b6077fd05d1d1c7',1,'tram::Render']]],\n  ['setviewtransform_223',['SetViewTransform',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a391d685c473cd0dcabbeb372938357f5',1,'tram::Ext::Camera::Camera']]],\n  ['setvolume_224',['SetVolume',['../namespacetram_1_1_audio.html#a95222c442aeb50c4b0efd0c1a284eea3',1,'tram::Audio']]],\n  ['setvsync_225',['SetVsync',['../namespacetram_1_1_platform_1_1_window.html#adf3bd7faf17dc6100dd061c8aa1bfaa4',1,'tram::Platform::Window']]],\n  ['setwalkspeed_226',['SetWalkSpeed',['../classtram_1_1_f_p_s_controller_component.html#a5a0be1714e44e2397bf5339ec569f8ba',1,'tram::FPSControllerComponent::SetWalkSpeed()'],['../classtram_1_1_raycast_controller_component.html#aec04a4c35f1bc0449e3f944e9034d7c3',1,'tram::RaycastControllerComponent::SetWalkSpeed(float speed)']]],\n  ['setwallcollisioncallback_227',['SetWallCollisionCallback',['../classtram_1_1_raycast_controller_component.html#af9a6f218caee176cc5b25510edc9b34f',1,'tram::RaycastControllerComponent::SetWallCollisionCallback()'],['../classtram_1_1_f_p_s_controller_component.html#a245323aa009e05cb44bde289b2ca75e2',1,'tram::FPSControllerComponent::SetWallCollisionCallback()']]],\n  ['setwebmainloop_228',['SetWebMainLoop',['../namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df',1,'tram::UI']]],\n  ['setweight_229',['SetWeight',['../classtram_1_1_animation_component.html#a6433689ecdafdbcfe82ba1436a21f41c',1,'tram::AnimationComponent']]],\n  ['setwindowsize_230',['SetWindowSize',['../namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78',1,'tram::UI']]],\n  ['setwindowtitle_231',['SetWindowTitle',['../namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016',1,'tram::UI']]],\n  ['setworldtransform_232',['setWorldTransform',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a813941aee5728ff97d671972b1b180b7',1,'tram::Physics::API::CallbackMotionState']]],\n  ['shapecast_233',['Shapecast',['../namespacetram_1_1_physics.html#a415045d72320d7d4512e4ecdc430d89f',1,'tram::Physics::Shapecast()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#af1231217a76d2c25b7134554ce9dac2d',1,'tram::Physics::API::Shapecast()']]],\n  ['shapecastcallback_234',['ShapecastCallback',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1',1,'tram::Physics::API::ShapecastCallback']]],\n  ['shouldexit_235',['ShouldExit',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab1134f34b965c2b538a4d8ca670c233b',1,'tram::Ext::Kitchensink::DialogController::ShouldExit()'],['../namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4',1,'tram::UI::ShouldExit()']]],\n  ['showerrordialog_236',['ShowErrorDialog',['../namespacetram_1_1_platform.html#a43ffc908587bc0a0680d4e923bf6fb54',1,'tram::Platform']]],\n  ['size_237',['size',['../classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230',1,'tram::ValueArray::size()'],['../classtram_1_1_pool.html#aeac3545f8646c676dcc84748db30dfcc',1,'tram::Pool::size()'],['../classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f',1,'tram::StackPool::size()'],['../classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2',1,'tram::Stack::size()'],['../classtram_1_1_queue.html#afc039b82d19e4eedbcc47c0f537a7fd4',1,'tram::Queue::size()']]],\n  ['skip_5flinebreak_238',['skip_linebreak',['../classtram_1_1_file.html#ab5086d2c4a3d374fbf26241e6c14c64f',1,'tram::File']]],\n  ['skip_5fnewline_239',['skip_newline',['../classtram_1_1_text_reader_parser.html#a0cba960c7fd3821e8142e4bdffadfe05',1,'tram::TextReaderParser::skip_newline()'],['../classtram_1_1_file_reader_parser.html#a2e9e3bce8f6b88355092541992be60ab',1,'tram::FileReaderParser::skip_newline()']]],\n  ['skip_5fwhitespace_240',['skip_whitespace',['../classtram_1_1_text_reader_parser.html#a81ad733ab82054803ee16aee53958897',1,'tram::TextReaderParser::skip_whitespace()'],['../classtram_1_1_file_reader_parser.html#a3f7c3a32719c64fb24ecd8e0a781738e',1,'tram::FileReaderParser::skip_whitespace()']]],\n  ['sleep_241',['Sleep',['../classtram_1_1_physics_component.html#a8901baef618e56f57553d613bc8af2cc',1,'tram::PhysicsComponent']]],\n  ['sleeprigidbody_242',['SleepRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a59055c8583f280409fd8fbc7df08f2f4',1,'tram::Physics::API']]],\n  ['slider_243',['Slider',['../namespacetram_1_1_g_u_i.html#a081da10ffbacc71992b191a911acf1b8',1,'tram::GUI']]],\n  ['sound_244',['Sound',['../classtram_1_1_sound.html#a2f9189b04fcabb7aca986bf123e44c37',1,'tram::Sound::Sound(const SharedEntityData &amp;, const ValueArray &amp;)'],['../classtram_1_1_sound.html#aad69728aae94531aae365a3762d1a4e7',1,'tram::Sound::Sound(name_t sound, float volume, vec3 position)'],['../classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398',1,'tram::Audio::Sound::Sound()']]],\n  ['soundgraph_245',['SoundGraph',['../classtram_1_1_audio_1_1_sound_graph.html#ad9ef3ae1d9537e6e955cd7c8d1357d3c',1,'tram::Audio::SoundGraph']]],\n  ['sphere_246',['Sphere',['../structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b',1,'tram::Physics::CollisionShape']]],\n  ['spin_247',['Spin',['../classtram_1_1_physics_component.html#a39981bb11f6e8eb4dcce36f4c380ebec',1,'tram::PhysicsComponent']]],\n  ['spinrigidbody_248',['SpinRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a43d326db472ec5a9e499b2816a5588c1',1,'tram::Physics::API']]],\n  ['sprite_249',['Sprite',['../classtram_1_1_render_1_1_sprite.html#ad6ccadbf3c461fc6a579506dab6d40b9',1,'tram::Render::Sprite']]],\n  ['sprite_5flist_250',['sprite_list',['../render_2sprite_8cpp.html#aa7ba6e3579e4897ccc9c2e5f8d033b20',1,'sprite.cpp']]],\n  ['spritecomponent_251',['SpriteComponent',['../classtram_1_1_sprite_component.html#ac1a001371822ddc0a285e0741ea2bdb4',1,'tram::SpriteComponent']]],\n  ['stack_252',['Stack',['../classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41',1,'tram::Stack']]],\n  ['stackpool_253',['StackPool',['../classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b',1,'tram::StackPool::StackPool(const char *name, size_t max_size, std::initializer_list&lt; T &gt; list)'],['../classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c',1,'tram::StackPool::StackPool(const char *name, size_t size)']]],\n  ['start_254',['Start',['../classtram_1_1_physics_component.html#a79d8c1c7d1a2df6937ac901532c880b2',1,'tram::PhysicsComponent::Start()'],['../classtram_1_1_player_component.html#aa8a009699e5fd349e952284665e1d1c3',1,'tram::PlayerComponent::Start()'],['../classtram_1_1_entity_component.html#a64cc26454bf92a709eef5e19931695d6',1,'tram::EntityComponent::Start()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a335a1c5814483482acbaf2417e624da4',1,'tram::Ext::Kitchensink::AnimationStateComponent::Start()'],['../classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059',1,'tram::TriggerComponent::Start()'],['../classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d',1,'tram::TemplateComponent::Start()'],['../classtram_1_1_sprite_component.html#a8a8fe6d5647764bf064a432ec26f59e4',1,'tram::SpriteComponent::Start()'],['../classtram_1_1_render_component.html#a97f294652a7627376510082ca4935490',1,'tram::RenderComponent::Start()'],['../classtram_1_1_particle_component.html#ae89750f03a9e6c0beef9de59414f7a25',1,'tram::ParticleComponent::Start()'],['../classtram_1_1_light_component.html#aee724429d715a9da2793d66b0938080f',1,'tram::LightComponent::Start()'],['../classtram_1_1_decal_component.html#aec504c10a2756f3d0c7746d706483be9',1,'tram::DecalComponent::Start()'],['../classtram_1_1_raycast_controller_component.html#a61f46b2f0838fe1db449109a531f1dad',1,'tram::RaycastControllerComponent::Start()'],['../classtram_1_1_f_p_s_controller_component.html#ab078a61443c6f5d29fa5a9bb1fa06aea',1,'tram::FPSControllerComponent::Start()'],['../classtram_1_1_audio_component.html#a0a1ef247f18c73318db0355a6b0a44f3',1,'tram::AudioComponent::Start()'],['../classtram_1_1_animation_component.html#a6d476ab03612c5e87aadfb6b70a1a8fb',1,'tram::AnimationComponent::Start()'],['../namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58',1,'tram::Stats::Start()']]],\n  ['staticworldobject_255',['StaticWorldObject',['../classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3',1,'tram::StaticWorldObject']]],\n  ['stepphysics_256',['StepPhysics',['../namespacetram_1_1_physics_1_1_a_p_i.html#a18ff0dc10793f33e66b57c8cd29d9fa2',1,'tram::Physics::API']]],\n  ['stop_257',['Stop',['../classtram_1_1_animation_component.html#a29f7010dec34fdcd9c7a3e9bcadf2b96',1,'tram::AnimationComponent::Stop()'],['../classtram_1_1_audio_component.html#a4acdea9eb5e1750b2c2ff66f07b9daf5',1,'tram::AudioComponent::Stop()'],['../namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b',1,'tram::Stats::Stop()']]],\n  ['stopaudiosource_258',['StopAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261',1,'tram::Audio::API']]],\n  ['string_5ffloat_259',['string_float',['../namespacetram_1_1_ext_1_1_menu.html#aab031015981522b1ea19979d05d54770',1,'tram::Ext::Menu']]],\n  ['succ_260',['succ',['../struct__test__case.html#a11762360b352fb17f288e1f11b69efaa',1,'_test_case']]],\n  ['switchstate_261',['SwitchState',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ac68d960146cdf7525c403fa80dce8d1f',1,'tram::Ext::Kitchensink::AnimationTable::SwitchState()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a616a6e22840e08cf291834d172b22ee7',1,'tram::Ext::Kitchensink::AnimationStateComponent::SwitchState()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ab4cc583a65fe7ce2582924ca93283361',1,'tram::Ext::Kitchensink::Button::SwitchState()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_13.js",
    "content": "var searchData=\n[\n  ['templatecomponent_0',['TemplateComponent',['../classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367',1,'tram::TemplateComponent']]],\n  ['text_1',['Text',['../namespacetram_1_1_g_u_i.html#a1eeac17180cfd99f45e0d997766543c9',1,'tram::GUI']]],\n  ['textbox_2',['TextBox',['../namespacetram_1_1_g_u_i.html#a356c2eeb0e6b3a8c19ed6ee19a448619',1,'tram::GUI::TextBox(char *text, uint32_t length, bool enabled, uint32_t w, uint32_t h)'],['../namespacetram_1_1_g_u_i.html#a197eda70726287d8c846535df181e486',1,'tram::GUI::TextBox(const char *text, uint32_t w, uint32_t h)']]],\n  ['textreaderparser_3',['TextReaderParser',['../classtram_1_1_text_reader_parser.html#a4c9bda65a540a5c369b1bc5c36d19943',1,'tram::TextReaderParser']]],\n  ['textwidth_4',['TextWidth',['../namespacetram_1_1_g_u_i.html#af581d06594c177e5c1e7ea98db61382f',1,'tram::GUI']]],\n  ['textwriterparser_5',['TextWriterParser',['../classtram_1_1_text_writer_parser.html#a3e74edee81b110b0166b90e3bf17e31c',1,'tram::TextWriterParser']]],\n  ['tick_6',['Tick',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['to_5fchars_5fconcat_7',['to_chars_concat',['../namespacetram_1_1implementation.html#a28f9a5440be4ee4b82bf3ff7eebba2fe',1,'tram::implementation']]],\n  ['togglemenustate_8',['ToggleMenuState',['../namespacetram_1_1_ext_1_1_menu.html#a6fb37f42d3452b509021c8ccf3c1b17c',1,'tram::Ext::Menu']]],\n  ['top_9',['top',['../classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43',1,'tram::Stack']]],\n  ['tostring_10',['ToString',['../classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c',1,'tram::Value']]],\n  ['track_11',['Track',['../namespacetram_1_1_loader.html#a682ad9ccb8fee9638cfea657405e9d54',1,'tram::Loader']]],\n  ['train_12',['Train',['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a8d6109469356d31dfe601d2324204a77',1,'tram::Ext::Kitchensink::Train']]],\n  ['transition_13',['Transition',['../classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2',1,'tram::Transition']]],\n  ['trianglevisible_14',['TriangleVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f',1,'tram::Render::API']]],\n  ['trigger_15',['Trigger',['../classtram_1_1_trigger.html#ad3b87b8e7ae11e8813593402ff1ae12c',1,'tram::Trigger']]],\n  ['triggerautosave_16',['TriggerAutosave',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ac6a7eaffb4459cf10007606b0f9c8f8b',1,'tram::Ext::Kitchensink::TriggerAutosave']]],\n  ['triggercomponent_17',['TriggerComponent',['../classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3',1,'tram::TriggerComponent']]],\n  ['triggerhurt_18',['TriggerHurt',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ae6b5d706f8a9d56a245ac555ec95a44d',1,'tram::Ext::Kitchensink::TriggerHurt']]],\n  ['triggermultiple_19',['TriggerMultiple',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4602154e8a02a03eae992f400079dfb4',1,'tram::Ext::Kitchensink::TriggerMultiple']]],\n  ['triggeronce_20',['TriggerOnce',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#accb4e63a197bbd0d350b72d58dc6a127',1,'tram::Ext::Kitchensink::TriggerOnce']]],\n  ['triggerplayermovement_21',['TriggerPlayerMovement',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a944ce8f354e4ba224b3ba2257a80257b',1,'tram::Ext::Kitchensink::TriggerPlayerMovement']]],\n  ['triggerpush_22',['TriggerPush',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a19f24315f51a42ac631cd6e9031f196a',1,'tram::Ext::Kitchensink::TriggerPush']]],\n  ['triggerremove_23',['TriggerRemove',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a32851695a736fb2e4419782991115f99',1,'tram::Ext::Kitchensink::TriggerRemove']]],\n  ['triggerteleport_24',['TriggerTeleport',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a2dc8dfbaa1e358714459a4854860aa8d',1,'tram::Ext::Kitchensink::TriggerTeleport']]],\n  ['try_5fpop_25',['try_pop',['../classtram_1_1_queue.html#a0c059b66ef5b9bac992a134da0b9768a',1,'tram::Queue']]],\n  ['trydebugging_26',['TryDebugging',['../namespacetram_1_1_platform.html#abafedf61de1bb3dc299c601f678ca6d5',1,'tram::Platform']]],\n  ['turnleft_27',['TurnLeft',['../classtram_1_1_f_p_s_controller_component.html#a23e43852ea4528a1b50f28628f5a9f20',1,'tram::FPSControllerComponent::TurnLeft()'],['../classtram_1_1_raycast_controller_component.html#a84b8137c59028604b98c6087ddf03bec',1,'tram::RaycastControllerComponent::TurnLeft()'],['../classtram_1_1_path_follower.html#aa88ed283123c1543ce714b87ec215ba8',1,'tram::PathFollower::TurnLeft()'],['../classtram_1_1_controller_component.html#ad173b5388f4168d4de4acd13e4819089',1,'tram::ControllerComponent::TurnLeft()=0']]],\n  ['turnright_28',['TurnRight',['../classtram_1_1_controller_component.html#a1ebc25137ba38f067f7986e3a5f1d5db',1,'tram::ControllerComponent::TurnRight()'],['../classtram_1_1_f_p_s_controller_component.html#aa68f65e5a902e77db578edf8d1b4af34',1,'tram::FPSControllerComponent::TurnRight()'],['../classtram_1_1_raycast_controller_component.html#a7f441e43b9e92927dbb4103cf7fa3052',1,'tram::RaycastControllerComponent::TurnRight()'],['../classtram_1_1_path_follower.html#a4a7dc721d2c2def8c57b73bf3e398314',1,'tram::PathFollower::TurnRight()']]],\n  ['turnstraight_29',['TurnStraight',['../classtram_1_1_path_follower.html#af9aa9d6eca479eb74eca580212dc42a2',1,'tram::PathFollower']]],\n  ['typetostring_30',['TypeToString',['../namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_14.js",
    "content": "var searchData=\n[\n  ['uid_0',['UID',['../structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e',1,'tram::UID::UID()'],['../structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82',1,'tram::UID::UID(const UID &amp;value)'],['../structtram_1_1_u_i_d.html#a8b30e026e1776200b7f91f67c7492aea',1,'tram::UID::UID(const std::string &amp;value)'],['../structtram_1_1_u_i_d.html#a4bfd2fabbf7538d9145235b83784332a',1,'tram::UID::UID(const char *value)']]],\n  ['unequipitem_1',['UnequipItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a3947148514d07596275b3ceddef07ed1',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['unequipslot_2',['UnequipSlot',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a020f087850b6993a1d3751c2b133063d',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['uninit_3',['Uninit',['../namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80',1,'tram::UI::Uninit()'],['../namespacetram_1_1_audio.html#a999017ca4b466fef799869fd591d134e',1,'tram::Audio::Uninit()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68',1,'tram::Audio::API::Uninit()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a0b662ed28da72b11080b7948181fa066',1,'tram::Ext::Scripting::Lua::Uninit()'],['../namespacetram_1_1_platform_1_1_window.html#a573de0dcedb42bb3fc34a010d3cbff38',1,'tram::Platform::Window::Uninit()'],['../namespacetram_1_1_platform_1_1_input.html#a5206ed605c69006a0d6ad1b2dafb2a80',1,'tram::Platform::Input::Uninit()']]],\n  ['uninitoutput_4',['UninitOutput',['../namespacetram_1_1_audio_1_1_spatial.html#abd2e06cbc247c1a503526098fb084789',1,'tram::Audio::Spatial']]],\n  ['unload_5',['Unload',['../classtram_1_1_scriptable.html#a4f92e3739872ff0938669d2d493f932d',1,'tram::Scriptable::Unload()'],['../classtram_1_1_sound.html#a6070314c5146a08863b061aeafede2b2',1,'tram::Sound::Unload()'],['../classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01',1,'tram::StaticWorldObject::Unload()'],['../classtram_1_1_trigger.html#a8c2c332e744a2e780974d4638d388c6e',1,'tram::Trigger::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a8eac7f52eb37a936c9378307412c6c08',1,'tram::Ext::Kitchensink::Button::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#af2fc102e7da4b0707df89f56909a1c20',1,'tram::Ext::Kitchensink::Breakable::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a81376f797590abe8a90b35ac999a0613',1,'tram::Ext::Kitchensink::Water::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#afa1b79f17c17ead03058dd28ae1cc3ef',1,'tram::Ext::Kitchensink::Train::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a2881141c1ee4783d0b719b1dd28a68e6',1,'tram::Ext::Kitchensink::Pickup::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ade7918dd8156ee4252c58eece2cfdb98',1,'tram::Ext::Kitchensink::DebugText::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#affdabd90a946e7aae9301f7d47d87fe1',1,'tram::Ext::Kitchensink::DebugShape::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aea36c18cd09a2fc62b2cd8713744c903',1,'tram::Ext::Kitchensink::TriggerAutosave::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ac28bb3aede402f40174b4348a10e1cf9',1,'tram::Ext::Kitchensink::TriggerHurt::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aa0cc2cfba975cf5a964444914ea15cc9',1,'tram::Ext::Kitchensink::TriggerOnce::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a9df96abe2232f3566983f29a87e62254',1,'tram::Ext::Kitchensink::TriggerMultiple::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aba68720ed7fe5a20f905404548cd71be',1,'tram::Ext::Kitchensink::TriggerPush::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ab3aa0697b3e09b938d18c71253fefb90',1,'tram::Ext::Kitchensink::TriggerRemove::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a6c178b1022efc43f197d8bebc4e1ba32',1,'tram::Ext::Kitchensink::TriggerTeleport::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a566d546dad8cbfe6758851ac38442a9a',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Unload()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#afb7d9e51247faff2fb3b2a67372260fd',1,'tram::Ext::Kitchensink::QuestEntity::Unload()'],['../classtram_1_1_entity.html#a2b9df5ef54954cdcd7b0f3af7aa7f829',1,'tram::Entity::Unload()'],['../classtram_1_1_resource.html#a11d6ce36b6bf1d520bb63d6413e99299',1,'tram::Resource::Unload()'],['../classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63',1,'tram::WorldCell::Unload()'],['../classtram_1_1_physics_1_1_collision_model.html#a2f20c343448ae313aea88be28784704c',1,'tram::Physics::CollisionModel::Unload()'],['../classtram_1_1_render_1_1_animation.html#ad47884e1acea138f8b664bc2d418dfd6',1,'tram::Render::Animation::Unload()'],['../classtram_1_1_render_1_1_light_graph.html#a798e549b6f611fceee1549ecdf63658a',1,'tram::Render::LightGraph::Unload()'],['../classtram_1_1_render_1_1_material.html#aefa2777f79de1882362e0fc50099a46e',1,'tram::Render::Material::Unload()'],['../classtram_1_1_render_1_1_model.html#a7e5db9d7130f9cda66ad3be78026c673',1,'tram::Render::Model::Unload()'],['../classtram_1_1_audio_1_1_sound_graph.html#a5e25152edb671610cb0edca497a653de',1,'tram::Audio::SoundGraph::Unload()'],['../classtram_1_1_audio_1_1_sound.html#a6070314c5146a08863b061aeafede2b2',1,'tram::Audio::Sound::Unload()'],['../classtram_1_1_crate.html#ab8336e58a8dcb7e3631db13003011232',1,'tram::Crate::Unload()'],['../classtram_1_1_render_1_1_sprite.html#a163aa5c3d09db10acb35f4446705faa4',1,'tram::Render::Sprite::Unload()'],['../classtram_1_1_decoration.html#ad8917fa59a923deca11f37f96825f9b5',1,'tram::Decoration::Unload()'],['../classtram_1_1_light.html#a14d15741d030edc15620a73fbfaf0256',1,'tram::Light::Unload()'],['../classtram_1_1_marker.html#ad8cb67e60618a29e0d170527f30d3e71',1,'tram::Marker::Unload()'],['../classtram_1_1_player.html#afddc1a9d1a0e2a61cc8bb13e210c0643',1,'tram::Player::Unload()']]],\n  ['unlock_6',['Unlock',['../classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634',1,'tram::Spinlock']]],\n  ['unlock_7',['unlock',['../classtram_1_1_queue.html#a264f19470d0c440e15b3fea1a3ca083a',1,'tram::Queue']]],\n  ['unlockrenderlist_8',['UnlockRenderlist',['../namespacetram_1_1_audio_1_1_spatial.html#a1f2da687a7b846d596f35af37ae63841',1,'tram::Audio::Spatial']]],\n  ['unregister_9',['Unregister',['../classtram_1_1_entity.html#a80727e0995ac3f27addb02613c8e5edd',1,'tram::Entity']]],\n  ['untrack_10',['Untrack',['../namespacetram_1_1_loader.html#add220f7fedcb52197b68d9d17115ceaa',1,'tram::Loader']]],\n  ['update_11',['Update',['../classtram_1_1_sprite_component.html#a8755153a58b06a785cd393fb23252b3c',1,'tram::SpriteComponent::Update()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ae0d37368dbc256f74d6a8eb756fbcd63',1,'tram::Ext::Camera::Camera::Update()'],['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afb2ef9be0c07a1df11c53cf1a6d632fe',1,'tram::Ext::Camera::FirstPersonCamera::Update()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a2d6f211e82a9785ead2324aa02ad7222',1,'tram::Ext::Kitchensink::AIAgent::Update()'],['../classtram_1_1_entity.html#af4a0a09ff81566de5b217018529844c5',1,'tram::Entity::Update()'],['../namespacetram_1_1_g_u_i.html#a19bd1015c21055a46d61eb4193a888cc',1,'tram::GUI::Update()'],['../classtram_1_1_animation_component.html#a6553e17f7e26893e25cca1b229a2ab65',1,'tram::AnimationComponent::Update()'],['../classtram_1_1_controller_component.html#adc0d17de6313da06268b3c14b18e8dcf',1,'tram::ControllerComponent::Update()'],['../classtram_1_1_decal_component.html#a0c93631ef6012a9b3e77b973debda630',1,'tram::DecalComponent::Update()'],['../classtram_1_1_light_component.html#ae3a23ce02a2f45cbfcc386a78acc5db4',1,'tram::LightComponent::Update()'],['../classtram_1_1_particle_component.html#a87d6c21e29d20330fba57f8d3b2134cd',1,'tram::ParticleComponent::Update()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488',1,'tram::Audio::API::Update()'],['../namespacetram_1_1_audio.html#acb768aeb78a526fe6c4378db6041b06b',1,'tram::Audio::Update()'],['../namespacetram_1_1_ext_1_1_camera.html#abe8df61bea8ea5f58fa6efa942eeaa4c',1,'tram::Ext::Camera::Update()'],['../namespacetram_1_1_ext_1_1_kitchensink.html#a4999baa52dc92a9e3e5ce094d39e6a6f',1,'tram::Ext::Kitchensink::Update()'],['../namespacetram_1_1_ext_1_1_menu.html#ae5c12ef1b6e9e1cc0ee542e6296e9057',1,'tram::Ext::Menu::Update()'],['../namespacetram_1_1_core.html#aca02676414df9541f853df2376da13bd',1,'tram::Core::Update()'],['../namespacetram_1_1_loader.html#aa2ff0e373bfa20733197131513624505',1,'tram::Loader::Update()'],['../namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438',1,'tram::UI::Update()'],['../namespacetram_1_1_physics.html#aba25e48ea456c82d6c11ef12b2862184',1,'tram::Physics::Update()'],['../namespacetram_1_1_platform_1_1_window.html#aaed5c879e7890030c7db2b6a03949f39',1,'tram::Platform::Window::Update()'],['../namespacetram_1_1_platform_1_1_input.html#a8d6af6713f2e6c053cacfaab7e628438',1,'tram::Platform::Input::Update()']]],\n  ['updateaction_12',['updateAction',['../classtram_1_1_physics_1_1_path_action.html#a41ae4385e939b2c9eca055424032d050',1,'tram::Physics::PathAction']]],\n  ['updateai_13',['UpdateAI',['../namespacetram_1_1_ext_1_1_kitchensink.html#aa032a6e16a417cef3ada074352b8a242',1,'tram::Ext::Kitchensink']]],\n  ['updatecallbacks_14',['UpdateCallbacks',['../namespacetram_1_1_ext_1_1_menu.html#aabf1b590c1e568b43ccb3060adf2fa22',1,'tram::Ext::Menu']]],\n  ['updatedrawlistfonts_15',['UpdateDrawListFonts',['../namespacetram_1_1_g_u_i.html#aa150493c2b4c1d204d394ec3a8145ef1',1,'tram::GUI']]],\n  ['updatehierarchy_16',['UpdateHierarchy',['../namespacetram_1_1_ext_1_1_kitchensink.html#a68dcf197af43441da209e8296de00111',1,'tram::Ext::Kitchensink']]],\n  ['updatelocation_17',['UpdateLocation',['../classtram_1_1_sprite_component.html#a067d3592ad5bfba2afba0b4a6a447ee8',1,'tram::SpriteComponent::UpdateLocation()'],['../classtram_1_1_particle_component.html#afd1c7f1296b2b2d19aa4f7a7eea2893b',1,'tram::ParticleComponent::UpdateLocation()']]],\n  ['updateoutput_18',['UpdateOutput',['../namespacetram_1_1_audio_1_1_spatial.html#a1369d0d3a2339c9205f38130aaa18b05',1,'tram::Audio::Spatial']]],\n  ['updateparameters_19',['UpdateParameters',['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a30104cdda5bc47e58da125d3bf574fc6',1,'tram::Ext::Kitchensink::TriggerOnce::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a0bf6e059ed5c51f77ec170c98d88038d',1,'tram::Ext::Kitchensink::TriggerMultiple::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#abfe9a81308db168ea94212b43c2b2c59',1,'tram::Ext::Kitchensink::TriggerPush::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ad6d873ff183a86de8c1997f3c59f6416',1,'tram::Ext::Kitchensink::TriggerRemove::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa839f0ebcb29f3e79f4bd91aa5c67a5b',1,'tram::Ext::Kitchensink::TriggerTeleport::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#afdf06caa8341620e6e60fcefcd953286',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#ae1268d343f92cdd87ea7ba095a29b6d8',1,'tram::Ext::Kitchensink::QuestEntity::UpdateParameters()'],['../classtram_1_1_entity.html#a8654143c591ec6d8dcb5d2414d4d63a3',1,'tram::Entity::UpdateParameters()'],['../classtram_1_1_crate.html#a30a0ab1f7c54b15b1eb0a02a381790bd',1,'tram::Crate::UpdateParameters()'],['../classtram_1_1_light.html#ae075d84f1f0778ac30f0ba35d040998f',1,'tram::Light::UpdateParameters()'],['../classtram_1_1_marker.html#a1a145d01d9bdd8d6aebd38b3ce27cf3d',1,'tram::Marker::UpdateParameters()'],['../classtram_1_1_player.html#a34cfa479567416e9aa5b3b147b44fdb5',1,'tram::Player::UpdateParameters()'],['../classtram_1_1_scriptable.html#a119e711f82fe681c38b372634754bfe2',1,'tram::Scriptable::UpdateParameters()'],['../classtram_1_1_sound.html#a859500a040dbfa4ac1e303fc2f9b3723',1,'tram::Sound::UpdateParameters()'],['../classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b',1,'tram::StaticWorldObject::UpdateParameters()'],['../classtram_1_1_trigger.html#ac3db6f95f9583f10e1bbe88f0915e389',1,'tram::Trigger::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a5fb8a5285093beccc894039c5102aab4',1,'tram::Ext::Kitchensink::Button::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aae8c4d28e4f057e28f392e96a498890c',1,'tram::Ext::Kitchensink::Breakable::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#acf40cdc632ca2113b4299ac9ce9387d4',1,'tram::Ext::Kitchensink::Water::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a101e803dc193a3588f046f7e33ec2167',1,'tram::Ext::Kitchensink::Train::UpdateParameters()'],['../classtram_1_1_decoration.html#af3ea5d13e17e6b50f233a9104892ba1c',1,'tram::Decoration::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#afc230744f36cb7dc31dcd30ce8d97881',1,'tram::Ext::Kitchensink::Pickup::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac335b5e268c6bde3d3d7dbbd7c9358a5',1,'tram::Ext::Kitchensink::DebugText::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a2e0f87444db5fef3bd831bea39775302',1,'tram::Ext::Kitchensink::DebugShape::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a81726364a17268ea23d810a35ce4d3b2',1,'tram::Ext::Kitchensink::TriggerHurt::UpdateParameters()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#aeb7b0630b5ed9fa40444e378fa5b5681',1,'tram::Ext::Kitchensink::TriggerAutosave::UpdateParameters()']]],\n  ['updateparentaabb_20',['UpdateParentAABB',['../classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc',1,'tram::AABBTree']]],\n  ['updaterenderlistobject_21',['UpdateRenderListObject',['../classtram_1_1_sprite_component.html#a0ebab8875f064f5119b9bd976fe7f117',1,'tram::SpriteComponent::UpdateRenderListObject()'],['../classtram_1_1_particle_component.html#a809c4b587625c3050decf6df8de83c07',1,'tram::ParticleComponent::UpdateRenderListObject()'],['../classtram_1_1_decal_component.html#a59130c628a9585b0c39b12b96b915994',1,'tram::DecalComponent::UpdateRenderListObject()']]],\n  ['updatespritearray_22',['UpdateSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a2c690bed4e6f7ccf1e001526b6b6f013',1,'tram::Render::API']]],\n  ['updatetransform_23',['UpdateTransform',['../classtram_1_1_entity.html#a475636f78b92b3eca43ce1d01da4fcb8',1,'tram::Entity']]],\n  ['updatevertexarray_24',['UpdateVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463',1,'tram::Render::API']]],\n  ['uploaduniformbuffer_25',['UploadUniformBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a6a7dd403c84682d2d554721e611e5880',1,'tram::Render::API']]],\n  ['utf16tolatin7_26',['UTF16ToLatin7',['../namespacetram_1_1_language.html#aef5799e241bda18ef51f887437408573',1,'tram::Language']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_15.js",
    "content": "var searchData=\n[\n  ['validate_0',['validate',['../classtram_1_1_pool.html#a10facadf048aa836508ffd73c22fbc69',1,'tram::Pool']]],\n  ['validateresult_1',['ValidateResult',['../namespacetram_1_1_audio_1_1_spatial.html#ad48745046cf034947258d77acad7b082',1,'tram::Audio::Spatial']]],\n  ['validatetree_2',['ValidateTree',['../classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d',1,'tram::AABBTree::ValidateTree(Node *node)'],['../classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9',1,'tram::AABBTree::ValidateTree(Node *node, size_t num)']]],\n  ['value_3',['Value',['../classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f',1,'tram::Value::Value()'],['../classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60',1,'tram::Value::Value(const Value &amp;other)'],['../classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305',1,'tram::Value::Value(bool value)'],['../classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e',1,'tram::Value::Value(name_t value)'],['../classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055',1,'tram::Value::Value(const char *value)'],['../classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585',1,'tram::Value::Value(int8_t value)'],['../classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5',1,'tram::Value::Value(int16_t value)'],['../classtram_1_1_value.html#a831372ec4d00555168651da5fd654641',1,'tram::Value::Value(int64_t value)'],['../classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275',1,'tram::Value::Value(uint8_t value)'],['../classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb',1,'tram::Value::Value(uint16_t value)'],['../classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b',1,'tram::Value::Value(uint64_t value)'],['../classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e',1,'tram::Value::Value(double value)'],['../classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427',1,'tram::Value::Value(int32_t value)'],['../classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8',1,'tram::Value::Value(uint32_t value)'],['../classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893',1,'tram::Value::Value(vec2 value)'],['../classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553',1,'tram::Value::Value(vec3 value)'],['../classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d',1,'tram::Value::Value(vec4 value)'],['../classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716',1,'tram::Value::Value(quat value)'],['../classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94',1,'tram::Value::Value(float value)'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349',1,'tram::Ext::Kitchensink::QuestVariable::Value()']]],\n  ['valuearray_4',['ValueArray',['../classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552',1,'tram::ValueArray']]],\n  ['valueptr_5',['ValuePtr',['../classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab',1,'tram::ValuePtr::ValuePtr()'],['../classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a',1,'tram::ValuePtr::ValuePtr(const ValuePtr &amp;other)'],['../classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6',1,'tram::ValuePtr::ValuePtr(Value &amp;other)'],['../classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b',1,'tram::ValuePtr::ValuePtr(bool *ptr)'],['../classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583',1,'tram::ValuePtr::ValuePtr(name_t *ptr)'],['../classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60',1,'tram::ValuePtr::ValuePtr(const char **ptr)'],['../classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14',1,'tram::ValuePtr::ValuePtr(int32_t *ptr)'],['../classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4',1,'tram::ValuePtr::ValuePtr(uint32_t *ptr)'],['../classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4',1,'tram::ValuePtr::ValuePtr(vec2 *ptr)'],['../classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f',1,'tram::ValuePtr::ValuePtr(vec3 *ptr)'],['../classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3',1,'tram::ValuePtr::ValuePtr(vec4 *ptr)'],['../classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e',1,'tram::ValuePtr::ValuePtr(quat *ptr)'],['../classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35',1,'tram::ValuePtr::ValuePtr(float *ptr)']]],\n  ['vertexdefinitiontofvf_6',['VertexDefinitionToFVF',['../namespacetram_1_1_render_1_1_a_p_i.html#ab4057f1a8dc032f5f4aded5bc14b5119',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_16.js",
    "content": "var searchData=\n[\n  ['was_5ferror_0',['was_error',['../classtram_1_1_file.html#a14fa0ae7b7ebe485fddf204df95c905f',1,'tram::File']]],\n  ['water_1',['Water',['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a61815d9fed63e4724d8704b8f7eb99e2',1,'tram::Ext::Kitchensink::Water']]],\n  ['worldcell_2',['WorldCell',['../classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8',1,'tram::WorldCell']]],\n  ['write_5ffloat32_3',['write_float32',['../classtram_1_1_file_writer_parser.html#a52e41cf58a05494af4458da3fa5d47c7',1,'tram::FileWriterParser::write_float32()'],['../classtram_1_1_text_writer_parser.html#a173dd06aa86fe89323ca1002e579fbd5',1,'tram::TextWriterParser::write_float32()'],['../classtram_1_1_file.html#ad37a6a76adf4fd5db765e860a9a20bcf',1,'tram::File::write_float32()']]],\n  ['write_5ffloat64_4',['write_float64',['../classtram_1_1_file_writer_parser.html#aeadeaa02b140dc0aff5f9bd0dfe9d912',1,'tram::FileWriterParser::write_float64()'],['../classtram_1_1_text_writer_parser.html#ab5d92f52efcf315bba5c093f36a26da5',1,'tram::TextWriterParser::write_float64()'],['../classtram_1_1_file.html#a52e71d6324ee7624dee122a59523001c',1,'tram::File::write_float64()']]],\n  ['write_5fint16_5',['write_int16',['../classtram_1_1_file_writer_parser.html#a33e6287ccf1da5b872e9b71892b15b55',1,'tram::FileWriterParser::write_int16()'],['../classtram_1_1_text_writer_parser.html#ade23c91446806e0d7ec6c8ddc1b3af3c',1,'tram::TextWriterParser::write_int16()'],['../classtram_1_1_file.html#a56ca0eb625c5fcef16158a9f107f8a1f',1,'tram::File::write_int16()']]],\n  ['write_5fint32_6',['write_int32',['../classtram_1_1_file_writer_parser.html#a40db8bb41ac6b1df2b8f4f7706e4af51',1,'tram::FileWriterParser::write_int32()'],['../classtram_1_1_text_writer_parser.html#a9c9890c6861506c1b2b66aced0bd7880',1,'tram::TextWriterParser::write_int32()'],['../classtram_1_1_file.html#a912eac8b041a22b2468d4fc2ae2ffbfb',1,'tram::File::write_int32()']]],\n  ['write_5fint64_7',['write_int64',['../classtram_1_1_file_writer_parser.html#aea0efc41d6117ffe74c289fe56b9b78a',1,'tram::FileWriterParser::write_int64()'],['../classtram_1_1_text_writer_parser.html#ae39447a94ffa853f810d7c7967013ef8',1,'tram::TextWriterParser::write_int64()'],['../classtram_1_1_file.html#a3164abdb1966197ca2e9a6cd018770da',1,'tram::File::write_int64()']]],\n  ['write_5fint8_8',['write_int8',['../classtram_1_1_file_writer_parser.html#a2624b7ac01f990d990719ef32f7491f6',1,'tram::FileWriterParser::write_int8()'],['../classtram_1_1_text_writer_parser.html#ad407f6ac2320d490426b64d7de4c8dbc',1,'tram::TextWriterParser::write_int8()'],['../classtram_1_1_file.html#a89b2859ed0ef1b7d66c5a4d9a2d536b2',1,'tram::File::write_int8()']]],\n  ['write_5fname_9',['write_name',['../classtram_1_1_file_writer_parser.html#aee67e0442a2f5db24bfdf9aa9bf37a52',1,'tram::FileWriterParser::write_name()'],['../classtram_1_1_text_writer_parser.html#a93311a154ad4f18ff15bcb705f31d80b',1,'tram::TextWriterParser::write_name()'],['../classtram_1_1_file.html#a3ec500f5f4c888093fdb6d93568fe9f3',1,'tram::File::write_name()']]],\n  ['write_5fnewline_10',['write_newline',['../classtram_1_1_file_writer_parser.html#ad9e6518d91f1a691b801032c280d3c33',1,'tram::FileWriterParser::write_newline()'],['../classtram_1_1_text_writer_parser.html#ab02072d2e22fd07014cf42c19a2e1ef5',1,'tram::TextWriterParser::write_newline()'],['../classtram_1_1_file.html#a7c2767ad1dfe1bc5d644f1a255ba9875',1,'tram::File::write_newline()']]],\n  ['write_5fstring_11',['write_string',['../classtram_1_1_file_writer_parser.html#af7d962155444c0960d1192b99638915d',1,'tram::FileWriterParser::write_string()'],['../classtram_1_1_text_writer_parser.html#a7657b9c3de6cef1a9f09be0da5869929',1,'tram::TextWriterParser::write_string()'],['../classtram_1_1_file.html#acc94c6e5b903c64232ac97079038db91',1,'tram::File::write_string()']]],\n  ['write_5fuint16_12',['write_uint16',['../classtram_1_1_file_writer_parser.html#ac99d04d600e6ac1cc4814dc3c0c35a5b',1,'tram::FileWriterParser::write_uint16()'],['../classtram_1_1_text_writer_parser.html#a01ea6be8c09ed2edd59d11f78170fee4',1,'tram::TextWriterParser::write_uint16()'],['../classtram_1_1_file.html#aaef1b401396e62884686b4773b9e5f6e',1,'tram::File::write_uint16()']]],\n  ['write_5fuint32_13',['write_uint32',['../classtram_1_1_file_writer_parser.html#ab8baa4186c11c563a27f2c3947c62772',1,'tram::FileWriterParser::write_uint32()'],['../classtram_1_1_text_writer_parser.html#a2eee18a0fc2e2c118d4405222a98fb9e',1,'tram::TextWriterParser::write_uint32()'],['../classtram_1_1_file.html#a968e1d9420146f006a7c4868a8978ec5',1,'tram::File::write_uint32()']]],\n  ['write_5fuint64_14',['write_uint64',['../classtram_1_1_file_writer_parser.html#aa29b2c3cd1646e0b81316cd39b8a8542',1,'tram::FileWriterParser::write_uint64()'],['../classtram_1_1_text_writer_parser.html#a887dfa879f5b48ea59e72389db4c436d',1,'tram::TextWriterParser::write_uint64()'],['../classtram_1_1_file.html#abfb1b5c29a40ddbada1f8c01b9c7143e',1,'tram::File::write_uint64()']]],\n  ['write_5fuint8_15',['write_uint8',['../classtram_1_1_file_writer_parser.html#a771545ed3ba23219575e1e10e28fad2b',1,'tram::FileWriterParser::write_uint8()'],['../classtram_1_1_text_writer_parser.html#a1354ba4b11cded7f82a0982aee9fd389',1,'tram::TextWriterParser::write_uint8()'],['../classtram_1_1_file.html#ac8b334b12d808c3bb28ebb92cc8db2d5',1,'tram::File::write_uint8()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_17.js",
    "content": "var searchData=\n[\n  ['yeet_0',['Yeet',['../classtram_1_1_entity.html#ad3430330bb5b0f51f64b23ea38396f91',1,'tram::Entity::Yeet()'],['../classtram_1_1_disk_reader.html#a81a139b80db9fbced34f8bb2f4a753cf',1,'tram::DiskReader::Yeet()'],['../classtram_1_1_disk_writer.html#a564c3fea7e402a81699e563310b58acb',1,'tram::DiskWriter::Yeet()'],['../classtram_1_1_file_reader.html#aadf272a73650e58beb40679038b8fafd',1,'tram::FileReader::Yeet()'],['../classtram_1_1_file_writer.html#a83856556c818cf185c04b5e5e26a0021',1,'tram::FileWriter::Yeet()']]],\n  ['yeet_1',['yeet',['../classtram_1_1_component.html#a49462f491b7ab20bc064693927baf3d4',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a92887e8a968a2e5c33afde0a97d909d3',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a7fd2f109de653312be2dd05e70bcb456',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ade7b2c38396c3e7b4e56575f8a0d45dd',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a56bd08e6a719e3ce42b1befec0871314',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a9b57dacbc4100263efa58393d4dcee71',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#abf8fb2ac22a613aeec1352f2b6fd9f19',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ab03a41f9f06ec0498dbbe9936f89f15a',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#aeff899a413c447e8b1f0c43c2ee1b22d',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a2eaafb5a31e19e33fd479f78f74dfdbc',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#a33a0538e443702363c86b29422ddecf1',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#adc47ac1f2a537bc6f1bd71203ae7c27a',1,'tram::Component::yeet()'],['../classtram_1_1_component.html#ad29f0c53f47721905f77a3f83a4d2b97',1,'tram::Component::yeet()']]],\n  ['yeet_2',['Yeet',['../namespacetram_1_1_scriptable_type.html#a2be0d23b1b7952145abea19ad2bf6c73',1,'tram::ScriptableType::Yeet()'],['../namespacetram_1_1_async.html#a808bec0c78a3d989b202cc84afed0cfb',1,'tram::Async::Yeet()']]],\n  ['yeetcollisionshape_3',['YeetCollisionShape',['../namespacetram_1_1_physics_1_1_a_p_i.html#a54bd52773f6a40688ec69b6fe87749ce',1,'tram::Physics::API']]],\n  ['yeetrigidbody_4',['YeetRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a6aa3f489a407250ed34d2b79f4ec83b3',1,'tram::Physics::API']]],\n  ['yeettrigger_5',['YeetTrigger',['../namespacetram_1_1_physics_1_1_a_p_i.html#ab0d01da7b5dffd60aeb55dce7bb92694',1,'tram::Physics::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_18.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_18.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_18.js",
    "content": "var searchData=\n[\n  ['_7eaabbtree_0',['~AABBTree',['../classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc',1,'tram::AABBTree']]],\n  ['_7eaipackage_1',['~AIPackage',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ad02bb92b98ecc4359ded1713f01eb19e',1,'tram::Ext::Kitchensink::AIPackage']]],\n  ['_7eanimationcomponent_2',['~AnimationComponent',['../classtram_1_1_animation_component.html#ac6008fd710fcfd5b79795890d0535bee',1,'tram::AnimationComponent']]],\n  ['_7eaudiocomponent_3',['~AudioComponent',['../classtram_1_1_audio_component.html#a0a9b7571ead611ac20d86a8c94b15b13',1,'tram::AudioComponent']]],\n  ['_7ecallbackmotionstate_4',['~CallbackMotionState',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a1563529ba951ebec065cf23c7f9d6d59',1,'tram::Physics::API::CallbackMotionState']]],\n  ['_7ecamera_5',['~Camera',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a35fe3922be2a20a08e724d5d18303111',1,'tram::Ext::Camera::Camera']]],\n  ['_7ecomponent_6',['~Component',['../classtram_1_1_component.html#af9e29eb673f1f11ec14d75aa19d6be1f',1,'tram::Component']]],\n  ['_7econsole_7',['~Console',['../classtram_1_1_ext_1_1_menu_1_1_console.html#adda3db0c47e9495176196c91373522fe',1,'tram::Ext::Menu::Console']]],\n  ['_7edebugmenu_8',['~DebugMenu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a7188e373f52410e350fbf91d27c4a9b7',1,'tram::Ext::Menu::DebugMenu']]],\n  ['_7edecalcomponent_9',['~DecalComponent',['../classtram_1_1_decal_component.html#ae71a412c19ba4fbc92fbb17507992267',1,'tram::DecalComponent']]],\n  ['_7ediskreader_10',['~DiskReader',['../classtram_1_1_disk_reader.html#ae9cd54f4c0b32c92fc8dc33238adb228',1,'tram::DiskReader']]],\n  ['_7ediskwriter_11',['~DiskWriter',['../classtram_1_1_disk_writer.html#a798d3cd845e210a17c372c1485b7e587',1,'tram::DiskWriter']]],\n  ['_7eentity_12',['~Entity',['../classtram_1_1_entity.html#a79fd0e828bd002ca6d4505dbc63739e2',1,'tram::Entity']]],\n  ['_7eentitycomponent_13',['~EntityComponent',['../classtram_1_1_entity_component.html#a4c959cc80467ad2e753972bdc4eb7c33',1,'tram::EntityComponent']]],\n  ['_7eentitypicker_14',['~EntityPicker',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ae218519cd786e399c27b562fdeada24b',1,'tram::Ext::Menu::EntityPicker']]],\n  ['_7eentityproperties_15',['~EntityProperties',['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#aa64a874d80a135c0eaa412fde3320808',1,'tram::Ext::Menu::EntityProperties']]],\n  ['_7eeventemit_16',['~EventEmit',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a7fe5f93eb89e11119d5cf0fb44e02494',1,'tram::Ext::Menu::EventEmit']]],\n  ['_7eeventlistener_17',['~EventListener',['../classtram_1_1_event_listener.html#a34b25d8225afb354e3e7ff8fe7ba78b1',1,'tram::EventListener']]],\n  ['_7efile_18',['~File',['../classtram_1_1_file.html#a56f8b809eeff67f9d5ed18580d8fe857',1,'tram::File']]],\n  ['_7efilereader_19',['~FileReader',['../classtram_1_1_file_reader.html#ac1c9f2016c1c475ed82418fb2a2dca8f',1,'tram::FileReader']]],\n  ['_7efilewriter_20',['~FileWriter',['../classtram_1_1_file_writer.html#ab9657acc04bba611bd8f061dcd207f1c',1,'tram::FileWriter']]],\n  ['_7efirstpersoncamera_21',['~FirstPersonCamera',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a3f5112b4261174831aa1e4664fcfb503',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['_7efpscontrollercomponent_22',['~FPSControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a4c0d475fb7ef8b5c98b800b8921cf660',1,'tram::FPSControllerComponent']]],\n  ['_7eintercept_23',['~Intercept',['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6',1,'tram::Ext::Menu::Intercept']]],\n  ['_7einterceptmenu_24',['~InterceptMenu',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a8e311e211e2d9b0d025ce9e1e571a166',1,'tram::Ext::Menu::InterceptMenu']]],\n  ['_7einventorymanager_25',['~InventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a40e187b17336deef3396e8883fad0c6d',1,'tram::Ext::Kitchensink::InventoryManager']]],\n  ['_7elightcomponent_26',['~LightComponent',['../classtram_1_1_light_component.html#a3cfee9529794960ce2238cd8306c438b',1,'tram::LightComponent']]],\n  ['_7elistdialog_27',['~ListDialog',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a57879c46dacd3aa040198ffeb3c3cc27',1,'tram::Ext::Kitchensink::ListDialog']]],\n  ['_7elistinventorymanager_28',['~ListInventoryManager',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a5ec9bf5e8398291fcb6271ec4944fb6b',1,'tram::Ext::Kitchensink::ListInventoryManager']]],\n  ['_7elistselection_29',['~ListSelection',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#acc2b7e76a954f3d314a73908d427d03b',1,'tram::Ext::Menu::ListSelection']]],\n  ['_7emenu_30',['~Menu',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a4661c15d6f311be1f7957a4e0ab28305',1,'tram::Ext::Menu::Menu']]],\n  ['_7emessagesend_31',['~MessageSend',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a20a8253e3f5b3401aad9cfad27133fb4',1,'tram::Ext::Menu::MessageSend']]],\n  ['_7enavmesh_32',['~Navmesh',['../classtram_1_1_navmesh.html#a6d3c3d41afd62d9551361c255ef9cff3',1,'tram::Navmesh']]],\n  ['_7eoptions_33',['~Options',['../classtram_1_1_ext_1_1_menu_1_1_options.html#a047aa5cac263824ead3e543667b2289b',1,'tram::Ext::Menu::Options']]],\n  ['_7eparticlecomponent_34',['~ParticleComponent',['../classtram_1_1_particle_component.html#a08d2217761e8209be71fb5accfcfcfd7',1,'tram::ParticleComponent']]],\n  ['_7epath_35',['~Path',['../classtram_1_1_path.html#a25df1c0c40a359d561e259394593626f',1,'tram::Path']]],\n  ['_7ephysicscomponent_36',['~PhysicsComponent',['../classtram_1_1_physics_component.html#a4669765afef6e232241d24959bf6a3ba',1,'tram::PhysicsComponent']]],\n  ['_7eplayer_37',['~Player',['../classtram_1_1_player.html#a751cd1b280c732f44f018c82464badcc',1,'tram::Player']]],\n  ['_7eplayercomponent_38',['~PlayerComponent',['../classtram_1_1_player_component.html#a6cf70a77be2388b6062f19b3fa16b1f1',1,'tram::PlayerComponent']]],\n  ['_7epoolptr_39',['~PoolPtr',['../classtram_1_1_pool_ptr.html#aa3872ea828f4efe84b9392f565df53a3',1,'tram::PoolPtr']]],\n  ['_7equestvariable_40',['~QuestVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['_7eraycastcontrollercomponent_41',['~RaycastControllerComponent',['../classtram_1_1_raycast_controller_component.html#ae1b1d5c0947337f319d4a6ac8e29ee01',1,'tram::RaycastControllerComponent']]],\n  ['_7erendercomponent_42',['~RenderComponent',['../classtram_1_1_render_component.html#a8c087151758ef3a7210c7a8c8f8607dd',1,'tram::RenderComponent']]],\n  ['_7eresourceproxy_43',['~ResourceProxy',['../classtram_1_1_resource_proxy.html#ae53d8742d944de173e8eb489f7aadb63',1,'tram::ResourceProxy']]],\n  ['_7escriptable_44',['~Scriptable',['../classtram_1_1_scriptable.html#ac46dc1ccdef6f82c56563b4b498d07bf',1,'tram::Scriptable']]],\n  ['_7esettingsmenu_45',['~SettingsMenu',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a95521cbfe6936dd0cd0011a107589491',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['_7esignalmenu_46',['~SignalMenu',['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#ae32579e6e3511bb5642aa3abf416f6e1',1,'tram::Ext::Menu::SignalMenu']]],\n  ['_7espritecomponent_47',['~SpriteComponent',['../classtram_1_1_sprite_component.html#ac3af9ed8e95feb7d735398fbdd5eb4d2',1,'tram::SpriteComponent']]],\n  ['_7estatisticsmenu_48',['~StatisticsMenu',['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a6ebc52f5c684a20cfad01e7c62e95809',1,'tram::Ext::Menu::StatisticsMenu']]],\n  ['_7esystemmenu_49',['~SystemMenu',['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a65e0843f9e22ac47984d5f7e2ba6a8ce',1,'tram::Ext::Menu::SystemMenu']]],\n  ['_7etemplatecomponent_50',['~TemplateComponent',['../classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d',1,'tram::TemplateComponent']]],\n  ['_7etransition_51',['~Transition',['../classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b',1,'tram::Transition']]],\n  ['_7etriggercomponent_52',['~TriggerComponent',['../classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012',1,'tram::TriggerComponent']]],\n  ['_7euid_53',['~UID',['../structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835',1,'tram::UID']]],\n  ['_7evalue_54',['~Value',['../classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d',1,'tram::Value']]],\n  ['_7evalueptr_55',['~ValuePtr',['../classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab',1,'tram::ValuePtr']]],\n  ['_7eworldcellproperties_56',['~WorldCellProperties',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af55b32e6c2a70a39efe13fd92ed3574f',1,'tram::Ext::Menu::WorldCellProperties']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_2.js",
    "content": "var searchData=\n[\n  ['calcsortkey_0',['CalcSortKey',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415',1,'tram::Render::API::GLDrawListEntry']]],\n  ['callbackmotionstate_1',['CallbackMotionState',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#aa3c82472daee6498cab94722d7d43a05',1,'tram::Physics::API::CallbackMotionState']]],\n  ['callfunction_2',['CallFunction',['../classtram_1_1_script_1_1_interface.html#a5aba7adedc8003e03a2cb0d161b9faed',1,'tram::Script::Interface::CallFunction()'],['../namespacetram_1_1_script.html#af8e8489ae939b80cca8c7b220c230447',1,'tram::Script::CallFunction()']]],\n  ['cancelrequest_3',['CancelRequest',['../namespacetram_1_1_async.html#a00df174c441553df6c3728c4355a4b7e',1,'tram::Async']]],\n  ['capsule_4',['Capsule',['../structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248',1,'tram::Physics::CollisionShape']]],\n  ['character_5fclasses_5',['character_classes',['../namespacetram_1_1_ext_1_1_kitchensink.html#a4573e832ec8b71f1590c7f8e05a5c6c7',1,'tram::Ext::Kitchensink']]],\n  ['characters_6',['characters',['../namespacetram_1_1_ext_1_1_kitchensink.html#ad4518a370e2bb8c8160f21d50cd952c4',1,'tram::Ext::Kitchensink']]],\n  ['checkbox_7',['CheckBox',['../namespacetram_1_1_g_u_i.html#abd53a76b58ffc880c50cd76f1b6019bf',1,'tram::GUI']]],\n  ['checkreverb_8',['CheckReverb',['../namespacetram_1_1_audio_1_1_spatial.html#a3d836ed6f922b4b64472050dd5b99304',1,'tram::Audio::Spatial']]],\n  ['checktransition_9',['CheckTransition',['../classtram_1_1_entity.html#a0fa0c3702c54eb536cd07eaf49dc799a',1,'tram::Entity']]],\n  ['clear_10',['clear',['../classtram_1_1_component.html#a913f66e1f83b18318e0962d532e77376',1,'tram::Component::clear()'],['../classtram_1_1_event_listener.html#adbbf55ccc50a2a2745bbd06adde45e1b',1,'tram::EventListener::clear()']]],\n  ['clear_11',['Clear',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab0e2c46e1b281bc6f2d87c2c7f432272',1,'tram::Ext::Kitchensink::AIAgent::Clear()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a172b7acc126ab25cbbb7162c7ae75f19',1,'tram::Ext::Menu::Menu::Clear()']]],\n  ['clearoverride_12',['ClearOverride',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a8b061b128f6b9e6494ed77517224db9a',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['clicked_13',['Clicked',['../namespacetram_1_1_g_u_i.html#a0d4089794c4aca324d8c19d02ef80a07',1,'tram::GUI']]],\n  ['clickhandled_14',['ClickHandled',['../namespacetram_1_1_g_u_i.html#a6121817714545cc76730037226ca285f',1,'tram::GUI']]],\n  ['clickhandledlate_15',['ClickHandledLate',['../namespacetram_1_1_g_u_i.html#aa6bfb846ae3573d59924997f6ce098b8',1,'tram::GUI']]],\n  ['cliplineinclipspace_16',['ClipLineInClipSpace',['../namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00',1,'tram::Render::API']]],\n  ['cliprenderline_17',['ClipRenderLine',['../namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0',1,'tram::Render::API']]],\n  ['clipsingleclippointlinebottomplane_18',['ClipSingleClipPointLineBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca',1,'tram::Render::API']]],\n  ['clipsingleclippointlinefarplane_19',['ClipSingleClipPointLineFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a',1,'tram::Render::API']]],\n  ['clipsingleclippointlineleftplane_20',['ClipSingleClipPointLineLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8',1,'tram::Render::API']]],\n  ['clipsingleclippointlinenearplane_21',['ClipSingleClipPointLineNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263',1,'tram::Render::API']]],\n  ['clipsingleclippointlinerightplane_22',['ClipSingleClipPointLineRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb',1,'tram::Render::API']]],\n  ['clipsingleclippointlinetopplane_23',['ClipSingleClipPointLineTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e',1,'tram::Render::API']]],\n  ['clipsinglepointline_24',['ClipSinglePointLine',['../namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718',1,'tram::Render::API']]],\n  ['clipsinglepointlinebottomplane_25',['ClipSinglePointLineBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8',1,'tram::Render::API']]],\n  ['clipsinglepointlinefarplane_26',['ClipSinglePointLineFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8',1,'tram::Render::API']]],\n  ['clipsinglepointlineleftplane_27',['ClipSinglePointLineLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0',1,'tram::Render::API']]],\n  ['clipsinglepointlinenearplane_28',['ClipSinglePointLineNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e',1,'tram::Render::API']]],\n  ['clipsinglepointlinerightplane_29',['ClipSinglePointLineRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5',1,'tram::Render::API']]],\n  ['clipsinglepointlinetopplane_30',['ClipSinglePointLineTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d',1,'tram::Render::API']]],\n  ['clipspacetoscreenspace_31',['ClipSpaceToScreenSpace',['../namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853',1,'tram::Render::API']]],\n  ['cliptrianglelist_32',['ClipTriangleList',['../namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef',1,'tram::Render::API']]],\n  ['closeall_33',['CloseAll',['../namespacetram_1_1_ext_1_1_menu.html#abbbd02bf188571d1d66399c4f1ffb295',1,'tram::Ext::Menu']]],\n  ['collate_34',['Collate',['../namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024',1,'tram::Stats']]],\n  ['collision_35',['Collision',['../classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d',1,'tram::TriggerComponent']]],\n  ['collisionmodel_36',['CollisionModel',['../classtram_1_1_physics_1_1_collision_model.html#ae85bad411b05db1eaa6ce1dc585c3dbc',1,'tram::Physics::CollisionModel']]],\n  ['color_5fblack_37',['COLOR_BLACK',['../namespacetram_1_1_render.html#a1881266fc3e4ccfe6161b9f53816c1b4',1,'tram::Render']]],\n  ['color_5fblue_38',['COLOR_BLUE',['../namespacetram_1_1_render.html#ac2545e14772852a87dae9066123c2646',1,'tram::Render']]],\n  ['color_5fcyan_39',['COLOR_CYAN',['../namespacetram_1_1_render.html#a9bece9ac513eed3675e8fc05dde16e2c',1,'tram::Render']]],\n  ['color_5fgray_40',['COLOR_GRAY',['../namespacetram_1_1_render.html#a38f1da44cef9b7d17113d9204723e561',1,'tram::Render']]],\n  ['color_5fgreen_41',['COLOR_GREEN',['../namespacetram_1_1_render.html#a46842a211bc249ada03b3879ee9e7d61',1,'tram::Render']]],\n  ['color_5fpink_42',['COLOR_PINK',['../namespacetram_1_1_render.html#aa08fcc8a83e73c8896423742971d97fd',1,'tram::Render']]],\n  ['color_5fred_43',['COLOR_RED',['../namespacetram_1_1_render.html#a3d207aeb8d3bd302970a0ce72b15f98a',1,'tram::Render']]],\n  ['color_5fwhite_44',['COLOR_WHITE',['../namespacetram_1_1_render.html#ac3b0b62b8ab1781496fd3a2ac86eaa7a',1,'tram::Render']]],\n  ['color_5fyellow_45',['COLOR_YELLOW',['../namespacetram_1_1_render.html#a528da7221f08fab1b6d5e3b3cacdb8fc',1,'tram::Render']]],\n  ['compileshaders_46',['CompileShaders',['../namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d',1,'tram::Render::API']]],\n  ['component_47',['Component',['../classtram_1_1_component.html#a45fa994315db8371fbd6b59cfa5d4979',1,'tram::Component']]],\n  ['concat_48',['concat',['../namespacetram_1_1implementation.html#a39fba9c0eb726295d1456c1651b12d45',1,'tram::implementation::concat(const std::string &amp;value)'],['../namespacetram_1_1implementation.html#a6faec7dc4da15e2576e1a201d4eb164a',1,'tram::implementation::concat(const std::string_view &amp;value)'],['../namespacetram_1_1implementation.html#acebb47b38e9273b2c259256c7a8fee5f',1,'tram::implementation::concat(const char *const &amp;value)'],['../namespacetram_1_1implementation.html#a4cec4f0b2a5a9e7fb164820607f105d4',1,'tram::implementation::concat(const char *value)'],['../namespacetram_1_1implementation.html#a7a2a311b556467311387960228c67ab8',1,'tram::implementation::concat(const UID &amp;value)'],['../namespacetram_1_1implementation.html#ad81660eda2af6067bdf5708b9157a524',1,'tram::implementation::concat(const T &amp;value)'],['../namespacetram_1_1implementation.html#a4bb77cc33a48fded3045407919472113',1,'tram::implementation::concat(const char(&amp;value)[N])']]],\n  ['concat_5ffmt_49',['concat_fmt',['../namespacetram_1_1implementation.html#a03b4b9c9589ff25e1b1df4e5491b829f',1,'tram::implementation']]],\n  ['concat_5fnumeric_50',['concat_numeric',['../namespacetram_1_1implementation.html#a829582177c315b267d8c5d25071dc20b',1,'tram::implementation::concat_numeric(const T &amp;value)'],['../namespacetram_1_1implementation.html#aac1de7cbd86415606d60e0476fa6fd56',1,'tram::implementation::concat_numeric(const int64_t &amp;value)'],['../namespacetram_1_1implementation.html#ae9f6692c3813328fafd9e99871fafb04',1,'tram::implementation::concat_numeric(const uint64_t &amp;value)'],['../namespacetram_1_1implementation.html#a8a5a3ae9f84e3585cda2b06cd8221d69',1,'tram::implementation::concat_numeric(const float &amp;value)']]],\n  ['cone_51',['Cone',['../structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b',1,'tram::Physics::CollisionShape']]],\n  ['console_52',['Console',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a8f37ecf596d0db477707c9d3ed698953',1,'tram::Ext::Menu::Console']]],\n  ['containers_53',['containers',['../namespacetram_1_1_ext_1_1_kitchensink.html#aaea789ed77d5f63e8cfe9f4ca2a4ac42',1,'tram::Ext::Kitchensink']]],\n  ['containsentity_54',['ContainsEntity',['../classtram_1_1_render_1_1_light_graph.html#a5d61946d71fd0b3765492c2f7b5d4e58',1,'tram::Render::LightGraph']]],\n  ['continue_55',['Continue',['../classtram_1_1_animation_component.html#ad6f14c184f255d16a73dd7fb1ad3b52f',1,'tram::AnimationComponent']]],\n  ['crate_56',['Crate',['../classtram_1_1_crate.html#a1a395f9988ba5ae548823524ea33da06',1,'tram::Crate::Crate(const char *nname, const char *modelname, const char *collisionmodelname, vec3 pos, vec3 rot)'],['../classtram_1_1_crate.html#a5b3a84d80ef6d5107b4eed8b6f4a07f1',1,'tram::Crate::Crate(const SharedEntityData &amp;, const ValueArray &amp;)']]],\n  ['createindexedvertexarray_57',['CreateIndexedVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3',1,'tram::Render::API']]],\n  ['createspritearray_58',['CreateSpriteArray',['../namespacetram_1_1_render_1_1_a_p_i.html#af87e801d1160ed2235b7188a506f753d',1,'tram::Render::API']]],\n  ['createtexture_59',['CreateTexture',['../namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af',1,'tram::Render::API']]],\n  ['createvertexarray_60',['CreateVertexArray',['../namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232',1,'tram::Render::API']]],\n  ['crouch_61',['Crouch',['../classtram_1_1_raycast_controller_component.html#a6cde78db12e923186e1d548a2ceb9d8d',1,'tram::RaycastControllerComponent::Crouch()'],['../classtram_1_1_f_p_s_controller_component.html#a44ff24373b7604e870849d286e3fe86e',1,'tram::FPSControllerComponent::Crouch()'],['../classtram_1_1_controller_component.html#aeca250fb793765f6d36d00ef05e9f931',1,'tram::ControllerComponent::Crouch()']]],\n  ['cursorover_62',['CursorOver',['../namespacetram_1_1_g_u_i.html#a4e023aaf6835da7993924f1796035f0c',1,'tram::GUI']]],\n  ['cylinder_63',['Cylinder',['../structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_3.js",
    "content": "var searchData=\n[\n  ['debugdraw_0',['debugDraw',['../classtram_1_1_physics_1_1_path_action.html#a8dce3b286d6b2e756a8b9890bf9d9992',1,'tram::Physics::PathAction']]],\n  ['debugdrawtree_1',['DebugDrawTree',['../namespacetram_1_1_render_1_1_a_a_b_b.html#ad017e45f12e6ac18dfa2417e462525ef',1,'tram::Render::AABB']]],\n  ['debugmenue_2',['DebugMenue',['../namespacetram_1_1_ext_1_1_menu.html#afe05ec9db55f3311aea523260dcf8db7',1,'tram::Ext::Menu']]],\n  ['debugshape_3',['DebugShape',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a20bdf86907cd7ccadbffa94d53dfac0d',1,'tram::Ext::Kitchensink::DebugShape']]],\n  ['debugtext_4',['DebugText',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9246c8960e6ae16f5c13bcb030d2608a',1,'tram::Ext::Kitchensink::DebugText']]],\n  ['decalcomponent_5',['DecalComponent',['../classtram_1_1_decal_component.html#a86fa64e28b7c9c0784be77892022a96d',1,'tram::DecalComponent']]],\n  ['decoration_6',['Decoration',['../classtram_1_1_decoration.html#a80442c970e96a9d3ec14046048833d87',1,'tram::Decoration']]],\n  ['delete_7',['Delete',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#af3c70682b3ed7f666e4170aa14a1fea0',1,'tram::Ext::Kitchensink::InventoryManager::Delete()'],['../classtram_1_1_pool_proxy.html#a0565709eb51102242ceb5488fc66f8ff',1,'tram::PoolProxy::Delete()']]],\n  ['deletelight_8',['DeleteLight',['../namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4',1,'tram::Render::API']]],\n  ['deletematerial_9',['DeleteMaterial',['../namespacetram_1_1_render_1_1_a_p_i.html#a26c75429ce3913f26e9df148750d4716',1,'tram::Render::API']]],\n  ['dialogcontroller_10',['DialogController',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ab13380e0377c25667f57e127f1971ae7',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['direction_5fforward_11',['DIRECTION_FORWARD',['../namespacetram.html#acc61b04dbad891d3eb08e0b5eb842395',1,'tram']]],\n  ['direction_5fside_12',['DIRECTION_SIDE',['../namespacetram.html#a03a6f88b2cb4818644b5f1fe7e7e3511',1,'tram']]],\n  ['direction_5fup_13',['DIRECTION_UP',['../namespacetram.html#ac7e1cf0d1d50c4b3afaac5727d3f5680',1,'tram']]],\n  ['disablecursor_14',['DisableCursor',['../namespacetram_1_1_platform_1_1_window.html#a4172bf310d20904476bbdd69dedc2947',1,'tram::Platform::Window']]],\n  ['disabledeactivation_15',['DisableDeactivation',['../classtram_1_1_physics_component.html#acad64c1b68c2f78fa2febef09e8f393a',1,'tram::PhysicsComponent']]],\n  ['disablerigidbodydeactivation_16',['DisableRigidbodyDeactivation',['../namespacetram_1_1_physics_1_1_a_p_i.html#a5bc20f737d7d6dae2bb8a8c768b04cb7',1,'tram::Physics::API']]],\n  ['diskreader_17',['DiskReader',['../classtram_1_1_disk_reader.html#a565638ef66be9c7cd05200056762cc30',1,'tram::DiskReader']]],\n  ['diskwriter_18',['DiskWriter',['../classtram_1_1_disk_writer.html#ad12321c26492fcaef43740bf21120d25',1,'tram::DiskWriter']]],\n  ['dispatch_19',['Dispatch',['../structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3',1,'tram::Event::Dispatch()'],['../structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a',1,'tram::Message::Dispatch()']]],\n  ['display_20',['Display',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a95629efafbccd335e434a1c97b9c6d21',1,'tram::Ext::Kitchensink::ListDialog::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539',1,'tram::Ext::Menu::Intercept::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a',1,'tram::Ext::Menu::MessageIntercept::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924',1,'tram::Ext::Menu::EventIntercept::Display()'],['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15',1,'tram::Ext::Menu::LogIntercept::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a18c5d317ba9354cd41742e98fc2f723d',1,'tram::Ext::Menu::DebugMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_options.html#a2987ac69185cc8573e00557bcc8eda86',1,'tram::Ext::Menu::Options::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_console.html#aae32f9a7938c628c698659957609cd7c',1,'tram::Ext::Menu::Console::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a99db3585e61c0c71f99ef8637edce775',1,'tram::Ext::Menu::Menu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#aebef9f1ed425a93b52230f3d176a765a',1,'tram::Ext::Menu::SystemMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a629fd955067640b30e849692d1eb5cfb',1,'tram::Ext::Menu::SettingsMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a62ff56e1969bb2b7cdd49446f8688de2',1,'tram::Ext::Menu::EventEmit::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a397886851d7cc3d304c552a8807e0596',1,'tram::Ext::Menu::StatisticsMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a10cc9429cb5dca2cfbbb12505d28acbc',1,'tram::Ext::Menu::WorldCellProperties::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#ace624827c9bfd8ef24aa15db1c2249c3',1,'tram::Ext::Menu::InterceptMenu::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a71295df4e886a77b31a12f873b8cf5c2',1,'tram::Ext::Menu::MessageSend::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5f67db7b4e9fa99e969427ecee0636f6',1,'tram::Ext::Menu::ListSelection::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ad21501bc964c628113e9b89f396e602c',1,'tram::Ext::Menu::EntityPicker::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#af4c550343edb9f75ef00d1b15e66636e',1,'tram::Ext::Menu::EntityProperties::Display()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#af2d0156404c23e79e3700b2cb0936282',1,'tram::Ext::Menu::SignalMenu::Display()']]],\n  ['displaylog_21',['DisplayLog',['../namespacetram.html#aafb9d3143cd13b2e8267161ce4813fce',1,'tram']]],\n  ['draw_22',['Draw',['../classtram_1_1_path.html#aa5f2edca27bfb5eccec30976a3bb9b29',1,'tram::Path::Draw()'],['../classtram_1_1_octree.html#a03a71d1c84b4b3408a2929859a386d38',1,'tram::Octree::Draw()'],['../classtram_1_1_octree.html#a687c55bafdd80a22f550de2cbb1a8197',1,'tram::Octree::Draw(Node *node)']]],\n  ['draw3dtext_23',['draw3dText',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#abee77254ff778ce50a428302815f0e3c',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['drawaabb_24',['DrawAABB',['../classtram_1_1_render_1_1_model.html#a1154b475ba52ad0bcae60926b9a1a014',1,'tram::Render::Model']]],\n  ['drawbox_25',['DrawBox',['../namespacetram_1_1_g_u_i.html#a8712e4716acb1c5eab60d40112c81d88',1,'tram::GUI']]],\n  ['drawboxhorizontal_26',['DrawBoxHorizontal',['../namespacetram_1_1_g_u_i.html#aaf5392e3e82d599804ba655dc2bba32c',1,'tram::GUI']]],\n  ['drawcontactpoint_27',['drawContactPoint',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#afe6a8f72a58739c6ea26e3312b813cdd',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['drawdebug_28',['DrawDebug',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1acb48d6ea2049b83205bbab3dc594e7',1,'tram::Physics::API::DrawDebug()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a11e3876e4d86bc1c3b68d5d35c08ced6',1,'tram::Physics::API::DrawDebug(bool)']]],\n  ['drawglyph_29',['DrawGlyph',['../namespacetram_1_1_g_u_i.html#a15d7e1006b2983a29f7f63f7dc2a6e73',1,'tram::GUI']]],\n  ['drawline_30',['drawLine',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#adae82b61c61a54f3b62cdd0499b9cb44',1,'tram::Physics::API::PhysicsDebugDraw']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_4.js",
    "content": "var searchData=\n[\n  ['emitparticle_0',['EmitParticle',['../classtram_1_1_particle_component.html#a154e0103510b6ba7bfe4e0c5109bb420',1,'tram::ParticleComponent']]],\n  ['empty_1',['Empty',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a8dc18857f173b127ee34a3fd65306d9f',1,'tram::Ext::Menu::Menu']]],\n  ['enablecursor_2',['EnableCursor',['../namespacetram_1_1_platform_1_1_window.html#a2079845fb32cb1e0a7a65742f381a567',1,'tram::Platform::Window']]],\n  ['end_3',['end',['../classtram_1_1_pool.html#a4916bb192a24754ced8b7e712dd55107',1,'tram::Pool::end()'],['../classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498',1,'tram::StackPool::end()']]],\n  ['end_4',['End',['../namespacetram_1_1_g_u_i.html#a7eb89f38a5f8e51434e7fdc3c21245e1',1,'tram::GUI']]],\n  ['endframe_5',['EndFrame',['../namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391',1,'tram::UI']]],\n  ['entity_6',['Entity',['../classtram_1_1_entity.html#a5cd683c73f9413ca09d5417c550eaf3d',1,'tram::Entity::Entity()'],['../classtram_1_1_entity.html#ab2c160e37d196c3a8f7224adbe282f8e',1,'tram::Entity::Entity(name_t name)'],['../classtram_1_1_entity.html#aae1750f202fa57bb040126c1d8af0b80',1,'tram::Entity::Entity(const SharedEntityData &amp;)']]],\n  ['entitycomponent_7',['EntityComponent',['../classtram_1_1_entity_component.html#a407901dc86e2eeb0b594d3730081f3e8',1,'tram::EntityComponent']]],\n  ['entitypicker_8',['EntityPicker',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#ab1f5eb1fcacb7e7e21312fca561f48af',1,'tram::Ext::Menu::EntityPicker']]],\n  ['equipitem_9',['EquipItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a0d4285f55bb35f3df054086b8433be71',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['evaluate_10',['Evaluate',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d',1,'tram::Ext::Kitchensink::QuestVariable::Evaluate()'],['../classtram_1_1_script_1_1_interface.html#ae8cde55720004d7319685163a092ca4a',1,'tram::Script::Interface::Evaluate()'],['../namespacetram_1_1_script.html#a658aaf0911ed091e1f6566375fc45142',1,'tram::Script::Evaluate()']]],\n  ['eventhandler_11',['EventHandler',['../classtram_1_1_animation_component.html#adc4711c76a0f6e6875f2e57400724f5b',1,'tram::AnimationComponent::EventHandler()'],['../classtram_1_1_audio_component.html#ac455283db7b930059f29e82905172ce8',1,'tram::AudioComponent::EventHandler()'],['../classtram_1_1_f_p_s_controller_component.html#a5c5b27f8fb2ca29b48fc4d291b71b8d3',1,'tram::FPSControllerComponent::EventHandler()'],['../classtram_1_1_physics_component.html#a60cc1624fa5521dfcd05449e99a123d8',1,'tram::PhysicsComponent::EventHandler()'],['../classtram_1_1_player_component.html#a7880e2d2d99db2ebfed2115f3682c4c8',1,'tram::PlayerComponent::EventHandler()'],['../classtram_1_1_render_component.html#a18fa5b9e63b9ef19051e0c705a19e46e',1,'tram::RenderComponent::EventHandler()'],['../classtram_1_1_sprite_component.html#a69fa78a5255a802e1975ce0a4eea868f',1,'tram::SpriteComponent::EventHandler()'],['../classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2',1,'tram::TemplateComponent::EventHandler()'],['../classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5',1,'tram::TriggerComponent::EventHandler()'],['../classtram_1_1_scriptable.html#a2ece532aab87d1570b1af751ffaf0f16',1,'tram::Scriptable::EventHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#af88977e10e060bf16fb2398dd127edad',1,'tram::Ext::Kitchensink::AnimationStateComponent::EventHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a328b1b451e9dabf23d90ea283bfb73bc',1,'tram::Ext::Kitchensink::Button::EventHandler()'],['../classtram_1_1_entity.html#a2ca775133055e997ef91ac3db27f2a0a',1,'tram::Entity::EventHandler()'],['../classtram_1_1_entity_component.html#a596335e001ab39c1f575ece6defaf04b',1,'tram::EntityComponent::EventHandler()'],['../classtram_1_1_light_component.html#ac5d511b09dd704670222c89f7f4bfb40',1,'tram::LightComponent::EventHandler()'],['../classtram_1_1_decal_component.html#a8a57cc185df060416fd0d3b69cd7422d',1,'tram::DecalComponent::EventHandler()'],['../classtram_1_1_raycast_controller_component.html#a3a8fb26c4de4b8c90b698f1f16ca3958',1,'tram::RaycastControllerComponent::EventHandler()'],['../classtram_1_1_particle_component.html#a7403bb854acd08f1060bf3b659d62c75',1,'tram::ParticleComponent::EventHandler()']]],\n  ['exists_12',['Exists',['../classtram_1_1_hashmap.html#a5598902c979d9635a7fa9c8b3aff4f4e',1,'tram::Hashmap::Exists(UID key)'],['../classtram_1_1_hashmap.html#a88408232bfa868c8345ed898a3a61162',1,'tram::Hashmap::Exists(uint32_t key)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_5.js",
    "content": "var searchData=\n[\n  ['factions_0',['factions',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab0abcbf31d67465bc42fb01a8eec2bef',1,'tram::Ext::Kitchensink']]],\n  ['fadein_1',['FadeIn',['../classtram_1_1_animation_component.html#aaf4161bf1e5c2cee940304cf35b8c178',1,'tram::AnimationComponent']]],\n  ['fadeout_2',['FadeOut',['../classtram_1_1_animation_component.html#aeb3ad3551105ef1e3a6306808900ae50',1,'tram::AnimationComponent']]],\n  ['fail_3',['fail',['../struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f',1,'_test_case']]],\n  ['file_4',['File',['../classtram_1_1_file.html#ab1b5812649adfd4ed0b16998c08beed6',1,'tram::File']]],\n  ['fillframe_5',['FillFrame',['../namespacetram_1_1_g_u_i.html#aa9e738ecaea859c6a6839587a10c4ac6',1,'tram::GUI']]],\n  ['find_6',['Find',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#ab263983af0673c1974878b5d7299492e',1,'tram::Ext::Kitchensink::AIAgent::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_table.html#ae762d3e66cb45a4739a5cbfa915da3a1',1,'tram::Ext::Kitchensink::AnimationTable::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a3ee5018c065a5d17681306983e5240b5',1,'tram::Ext::Kitchensink::AttributeInfo::Find()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933',1,'tram::Ext::Kitchensink::AttributeContainer::Find(Entity *)'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aea111bc346b485851485b4354b766b0e',1,'tram::Ext::Kitchensink::AttributeContainer::Find(id_t)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a1f3e834fa982e5d591e0e382fc477e9c',1,'tram::Ext::Kitchensink::Faction::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#ac7025bc9d8e297e380181b2f005f854d',1,'tram::Ext::Kitchensink::CharacterClass::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#aad6e2471fc73d5228e202990dba4af13',1,'tram::Ext::Kitchensink::Character::Find(Entity *entity)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a70f852d7053390285611b9a81062e1f2',1,'tram::Ext::Kitchensink::Character::Find(id_t entity_id)'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914',1,'tram::Ext::Kitchensink::DialogTopic::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b',1,'tram::Ext::Kitchensink::ItemClass::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a1d6dcf5fb1afcbaa6cb79de3bfbbf97b',1,'tram::Ext::Kitchensink::Inventory::Find()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773',1,'tram::Ext::Kitchensink::Quest::Find()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc',1,'tram::Ext::Kitchensink::SoundTable::Find()'],['../classtram_1_1_entity.html#afba6aa3dbbd10ebc42beb6729bdb7da2',1,'tram::Entity::Find(id_t entity_id)'],['../classtram_1_1_entity.html#aa949dd2fafeb955d699271dbe41c75ec',1,'tram::Entity::Find(name_t entity_name)'],['../classtram_1_1_navmesh.html#aff49c111f072f7c12a1e209960a1cb6f',1,'tram::Navmesh::Find()'],['../classtram_1_1_path.html#ace5eac8a595a419404e4b4489f91a62a',1,'tram::Path::Find()'],['../classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce',1,'tram::Transition::Find()'],['../classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01',1,'tram::WorldCell::Find(vec3 point)'],['../classtram_1_1_world_cell.html#a7757aa7efe44bb6bb948b559948e12b3',1,'tram::WorldCell::Find(name_t name)'],['../classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da',1,'tram::Physics::CollisionModel::Find()'],['../classtram_1_1_render_1_1_animation.html#ac0bf7285a28f37f9e41d66c4325f8799',1,'tram::Render::Animation::Find()'],['../classtram_1_1_render_1_1_light_graph.html#a33ebe4cfeae7cd18ceacb54d3e4c5a3f',1,'tram::Render::LightGraph::Find()'],['../classtram_1_1_render_1_1_material.html#a79794b5c6356b0a4da39a6c9cf468fbc',1,'tram::Render::Material::Find()'],['../classtram_1_1_render_1_1_model.html#a02abf1c725962593c6bbfa17d4fa2e43',1,'tram::Render::Model::Find()'],['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a953ba1f0a3d7657b8a242ae8193b0987',1,'tram::Render::API::VertexShader::Find()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a7d679ad0deb8e595b3182c6c0e786de3',1,'tram::Render::API::FragmentShader::Find()'],['../classtram_1_1_render_1_1_sprite.html#a661555af281cb553323a07a3bf39c08e',1,'tram::Render::Sprite::Find()'],['../classtram_1_1_hashmap.html#a7520d8013e86f06e43c2d46aacba39c1',1,'tram::Hashmap::Find(UID key)'],['../classtram_1_1_hashmap.html#afea08bf4be8e807fc6da90e1992e3df9',1,'tram::Hashmap::Find(uint32_t key)'],['../classtram_1_1_octree.html#a78b461493864e5124fa6972004a754d6',1,'tram::Octree::Find()'],['../classtram_1_1_audio_1_1_sound_graph.html#aaa0cdf6c6a42f59b3cc2362db60c16d3',1,'tram::Audio::SoundGraph::Find()'],['../classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a',1,'tram::Audio::Sound::Find()'],['../namespacetram_1_1_system.html#a80685c0799c2a0af7c493bfaf7de86de',1,'tram::System::Find()']]],\n  ['findaabbintersection_7',['FindAABBIntersection',['../classtram_1_1_a_a_b_b_tree.html#a72800aa33c03780b35f5510d8c80526b',1,'tram::AABBTree::FindAABBIntersection(vec3 min, vec3 max, auto callback)'],['../classtram_1_1_a_a_b_b_tree.html#a51ebff27bd53240096c90c198b970dab',1,'tram::AABBTree::FindAABBIntersection(Node *node, vec3 min, vec3 max, auto callback)']]],\n  ['findall_8',['FindAll',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165',1,'tram::Ext::Kitchensink::Quest']]],\n  ['findallfromaabb_9',['FindAllFromAABB',['../classtram_1_1_render_1_1_model.html#a6c1e5a51904349dbac4e6055b54f087a',1,'tram::Render::Model']]],\n  ['findallfromray_10',['FindAllFromRay',['../classtram_1_1_render_1_1_model.html#a3c38cde838ea3f56d2e77c23c8a1d77f',1,'tram::Render::Model']]],\n  ['findallintersectionsfromaabb_11',['FindAllIntersectionsFromAABB',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a5030c8f345b2d6543274015951361d4d',1,'tram::Render::AABB']]],\n  ['findcompartment_12',['FindCompartment',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af287eac367f38581825d3b4302642af9',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['findintersection_13',['FindIntersection',['../classtram_1_1_a_a_b_b_tree.html#a1f62c3784491fc7b1b924e9801d5685d',1,'tram::AABBTree::FindIntersection(vec3 ray_pos, vec3 ray_dir, Node *node, std::vector&lt; uint32_t &gt; &amp;result) const'],['../classtram_1_1_a_a_b_b_tree.html#ab91f605c9d68f45e8d5d5c0ae05e12ba',1,'tram::AABBTree::FindIntersection(vec3 ray_pos, vec3 ray_dir, float distance_limit, auto filter) const']]],\n  ['findintersectionrecursive_14',['FindIntersectionRecursive',['../classtram_1_1_a_a_b_b_tree.html#a6ce2d61d0eb768a2c41b5832177d71b1',1,'tram::AABBTree']]],\n  ['findkeyframepointers_15',['FindKeyframePointers',['../classtram_1_1_animation_component.html#aaa1ec23cc54f20569e9cce6a90844bc9',1,'tram::AnimationComponent']]],\n  ['findlights_16',['FindLights',['../namespacetram_1_1_render_1_1_light_tree.html#ae353165809c1cd85edb8e42944c0dee4',1,'tram::Render::LightTree']]],\n  ['findmaterialtype_17',['FindMaterialType',['../namespacetram_1_1_render.html#a94a9ceb0462c8a24b1912ffd179c33f7',1,'tram::Render']]],\n  ['findnearest_18',['FindNearest',['../classtram_1_1_octree.html#a6ac6abd129adbfd434a034a7f156d7c7',1,'tram::Octree::FindNearest(NearestSearch *search, Node *parent_node, int octant)'],['../classtram_1_1_octree.html#af4b6041ef1096c464a9197a89037ea73',1,'tram::Octree::FindNearest(T result[], float x, float y, float z)'],['../classtram_1_1_octree.html#af89de216af27eedb69a0255dc8f5baa3',1,'tram::Octree::FindNearest(NearestSearch *search, Node *parent_node)']]],\n  ['findnearestfromray_19',['FindNearestFromRay',['../namespacetram_1_1_render_1_1_a_a_b_b.html#a631b3af49e3238165b6005edf3608394',1,'tram::Render::AABB']]],\n  ['findpaths_20',['FindPaths',['../namespacetram_1_1_audio_1_1_spatial.html#a9e3e22294df1b1d269a8617a1b65291b',1,'tram::Audio::Spatial']]],\n  ['findpathsmetropolis_21',['FindPathsMetropolis',['../namespacetram_1_1_audio_1_1_spatial.html#abac4b381854c802af06d8b08b9643434',1,'tram::Audio::Spatial']]],\n  ['findshader_22',['FindShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5dc3db8286a72fc93e0c24a1ae6d7a5',1,'tram::Render::API::LinkedShader::FindShader()'],['../namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee',1,'tram::Render::API::FindShader()']]],\n  ['findsibling_23',['FindSibling',['../classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1',1,'tram::AABBTree']]],\n  ['findtransition_24',['FindTransition',['../classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6',1,'tram::WorldCell']]],\n  ['findvertexformat_25',['FindVertexFormat',['../namespacetram_1_1_render.html#a353a7d1babbd0a6f8bfc7bf1b4eb5a8c',1,'tram::Render']]],\n  ['finishresources_26',['FinishResources',['../namespacetram_1_1_async.html#aed73e549dce7f281ed1d2d8bb31c7b65',1,'tram::Async']]],\n  ['fire_27',['Fire',['../classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41',1,'tram::SignalTable::Fire(signal_t signal, id_t sender)'],['../classtram_1_1_signal_table.html#a52fe697c321904e1b59f0ed655c3e3d9',1,'tram::SignalTable::Fire(signal_t signal, id_t sender, Value value)']]],\n  ['fireadded_28',['FireAdded',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4567cddbfd773f1d162c9947a61d7acf',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireequip_29',['FireEquip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a27b6d1e19c2219ef08b38e0f6301b78a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireidle_30',['FireIdle',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aa63c9f3e897107f6a145fab913be5690',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireprimaryaction_31',['FirePrimaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3af8732cfbd61416567a257612f1320e',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['fireremoved_32',['FireRemoved',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a4b4d3c932032e2881323f1ec42e74f85',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['firesecondaryaction_33',['FireSecondaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a66d439782843161ca256d3f777b77a95',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['firesignal_34',['FireSignal',['../classtram_1_1_entity.html#aa83f617be04b68ab23d2f42a248b9e7d',1,'tram::Entity::FireSignal(signal_t type)'],['../classtram_1_1_entity.html#afbad8d97ef0905782c6aa0ef8ca7cf88',1,'tram::Entity::FireSignal(signal_t type, Value value)']]],\n  ['firetrigger_35',['FireTrigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184',1,'tram::Ext::Kitchensink::Quest']]],\n  ['fireunequip_36',['FireUnequip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac84ab7cd8c9fd41df4d50716df9d4bda',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['firstpersoncamera_37',['FirstPersonCamera',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab0b6d243e23d1e3bab6897ca8c846b0e',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['flags_38',['Flags',['../namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40',1,'tram::Settings']]],\n  ['flush_5fconsole_39',['flush_console',['../namespacetram_1_1implementation.html#a4f7ee627cbe8593eb958c9ac61ccd2eb',1,'tram::implementation']]],\n  ['flush_5fdisplay_40',['flush_display',['../namespacetram_1_1implementation.html#afa314b84e606df8e9955afd0b5d3f84e',1,'tram::implementation::flush_display(int time, System::system_t system)'],['../namespacetram_1_1implementation.html#ac91c6a3049a88f77305379c3185e9a48',1,'tram::implementation::flush_display(int time, int system)']]],\n  ['fly_41',['Fly',['../classtram_1_1_f_p_s_controller_component.html#ac3921936820398b0ed5d343732f5fbbb',1,'tram::FPSControllerComponent::Fly()'],['../classtram_1_1_controller_component.html#ae13d3ca8940732bb64b80f0d0a789bfe',1,'tram::ControllerComponent::Fly()'],['../classtram_1_1_raycast_controller_component.html#a7905d17bead35cf596c7fe19132e548b',1,'tram::RaycastControllerComponent::Fly()']]],\n  ['fpscontrollercomponent_42',['FPSControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a6f50d65657568e5d1afe87dd8cf17d91',1,'tram::FPSControllerComponent']]],\n  ['front_43',['front',['../classtram_1_1_queue.html#a869affb595c884f94449617be6ba5da0',1,'tram::Queue']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_6.js",
    "content": "var searchData=\n[\n  ['gather_0',['Gather',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['gatherbaseattributes_1',['GatherBaseAttributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#af5638f87859e56de9420d25e4e5668a8',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['gatherfactions_2',['GatherFactions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a2afeea3b907ba87955f7f636a3681599',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['generateid_3',['GenerateID',['../namespacetram.html#ad9db30198d176e4ffed5b38273c4beb0',1,'tram']]],\n  ['generateplanes_4',['GeneratePlanes',['../classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb',1,'tram::Transition']]],\n  ['get_5',['get',['../classtram_1_1_component.html#a129fcc4a535b3bbd7ae878a22b36e541',1,'tram::Component::get()'],['../classtram_1_1_resource_proxy.html#abcaffdba60268a1aa0c1ed19249f63b0',1,'tram::ResourceProxy::get()']]],\n  ['get_6',['Get',['../namespacetram_1_1_language.html#af059d31d855f0bf0fc06dfc1a170c834',1,'tram::Language::Get()'],['../namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd',1,'tram::Settings::Get()']]],\n  ['getaabbmax_7',['GetAABBMax',['../classtram_1_1_render_1_1_model.html#ab6e9404f95096afaea9226fe975e697b',1,'tram::Render::Model::GetAABBMax()'],['../classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a',1,'tram::AABBTree::GetAABBMax()']]],\n  ['getaabbmin_8',['GetAABBMin',['../classtram_1_1_render_1_1_model.html#a181f0a0d0b56d4f7235181ddd1cbeec0',1,'tram::Render::Model::GetAABBMin()'],['../classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce',1,'tram::AABBTree::GetAABBMin()']]],\n  ['getallkeyboardkeybindings_9',['GetAllKeyboardKeyBindings',['../namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91',1,'tram::UI']]],\n  ['getanimationcomponent_10',['GetAnimationComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ac6894d78aa54b2d0bf5bb4f55766c43b',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['getanimationstatecomponent_11',['GetAnimationStateComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a74c4e40e62073f4a4016ef0080d144f4',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['getanswer_12',['GetAnswer',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a80e5cf34f6478ba8921ad4df746252db',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['getanyshader_13',['GetAnyShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aade702f067875442fe766814c664247c',1,'tram::Render::API::LinkedShader::GetAnyShader()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04',1,'tram::Render::API::GetAnyShader()']]],\n  ['getarmature_14',['GetArmature',['../classtram_1_1_render_1_1_model.html#a823633680904cb6940047f5aeec3ef4e',1,'tram::Render::Model']]],\n  ['getattribute_15',['GetAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7',1,'tram::Ext::Kitchensink::AttributeContainer::GetAttribute()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a70e3248022a5813fa317d70d610c8096',1,'tram::Ext::Kitchensink::CharacterClass::GetAttribute()']]],\n  ['getattributebase_16',['GetAttributeBase',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['getaxissensitivity_17',['GetAxisSensitivity',['../namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c',1,'tram::UI']]],\n  ['getbasedisposition_18',['GetBaseDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad00663d7d18b7b6d37adaf0b6337b8a5',1,'tram::Ext::Kitchensink::Character']]],\n  ['getbob_19',['GetBob',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aefecd2a76d3631867157caa5ba9b7c9a',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['getcell_20',['GetCell',['../classtram_1_1_entity.html#a9fe6fef78260ef5d7a3dc425e26ca375',1,'tram::Entity::GetCell()'],['../classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560',1,'tram::Transition::GetCell()']]],\n  ['getcharacterloyalty_21',['GetCharacterLoyalty',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a9fa045c160d1fecb4cde3f76ab729ffa',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getcharacterrank_22',['GetCharacterRank',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#af48b732c21adc306f5856cb68ab300bf',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getcollisiongroup_23',['GetCollisionGroup',['../classtram_1_1_physics_component.html#aa0797c00f3d5e3a0ccb35da8b3ac42b2',1,'tram::PhysicsComponent::GetCollisionGroup()'],['../classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461',1,'tram::TriggerComponent::GetCollisionGroup()']]],\n  ['getcollisionmask_24',['GetCollisionMask',['../classtram_1_1_physics_component.html#a6d048406bb6f934d3167d046cf23d42a',1,'tram::PhysicsComponent::GetCollisionMask()'],['../classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0',1,'tram::TriggerComponent::GetCollisionMask()']]],\n  ['getcolor_25',['GetColor',['../classtram_1_1_light_component.html#a71e038c2e9a0cde417f2b1899ff87349',1,'tram::LightComponent::GetColor()'],['../classtram_1_1_render_1_1_material.html#a0c43d7ae57a787c8ea3f69341d98be2d',1,'tram::Render::Material::GetColor()']]],\n  ['getcontents_26',['GetContents',['../classtram_1_1_disk_reader.html#a57f73b425546a6fde55c2d863d8f095c',1,'tram::DiskReader::GetContents()'],['../classtram_1_1_file_reader.html#a359b60e4d588f6721a56bf619e85dded',1,'tram::FileReader::GetContents()']]],\n  ['getcontext_27',['GetContext',['../namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504',1,'tram::Render::API']]],\n  ['getcontrollercomponent_28',['GetControllerComponent',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#adfe0bb1d9761a59c4d36a83239fea93a',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['getcurrentmonitor_29',['GetCurrentMonitor',['../namespacetram_1_1_platform_1_1_window.html#a3a71748e1f64a454dc9b47260b67b035',1,'tram::Platform::Window']]],\n  ['getdebugmode_30',['getDebugMode',['../classtram_1_1_physics_1_1_a_p_i_1_1_physics_debug_draw.html#ae8dfaf1b441990503c10aad22f87cf3f',1,'tram::Physics::API::PhysicsDebugDraw']]],\n  ['getdeltatick_31',['GetDeltaTick',['../namespacetram.html#ac5510fd86603682d0cac4954bff11620',1,'tram']]],\n  ['getdeltatime_32',['GetDeltaTime',['../namespacetram.html#af8af5a4731abe7a1b4cc34780bd1eb06',1,'tram']]],\n  ['getdirectionfacing_33',['GetDirectionFacing',['../classtram_1_1_player_component.html#a521c6d15a3a7feb9d6f03fb08e7da7e0',1,'tram::PlayerComponent']]],\n  ['getdisposition_34',['GetDisposition',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a0fccfeb5e5a198b94e2cef7825bfd113',1,'tram::Ext::Kitchensink::Faction::GetDisposition()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a763a7386afa5ddb550fdd616acdebdc7',1,'tram::Ext::Kitchensink::Character::GetDisposition()']]],\n  ['getdistance_35',['GetDistance',['../classtram_1_1_light_component.html#a12116f3c73a230d6f2ba928d0f6af33f',1,'tram::LightComponent']]],\n  ['getentities_36',['GetEntities',['../classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f',1,'tram::WorldCell']]],\n  ['getentitycount_37',['GetEntityCount',['../classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe',1,'tram::WorldCell']]],\n  ['getenvironmentprobes_38',['GetEnvironmentProbes',['../classtram_1_1_render_1_1_light_graph.html#a07e34cb8706381d97bc4e138a625a1bf',1,'tram::Render::LightGraph']]],\n  ['getequippeditem_39',['GetEquippedItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8058f00b02aaddacea2eaee65dd5abe2',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['getfardistance_40',['GetFarDistance',['../classtram_1_1_render_1_1_model.html#a6552762c2c420643726ac9e6dac495af',1,'tram::Render::Model']]],\n  ['getfirst_41',['GetFirst',['../classtram_1_1_pool.html#ad803699e4dab92b42ba4a86180f60acc',1,'tram::Pool']]],\n  ['getflags_42',['GetFlags',['../namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c',1,'tram::Render::API']]],\n  ['getfloat_43',['GetFloat',['../classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1',1,'tram::Value']]],\n  ['getfollowing_44',['GetFollowing',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#abb082f0d019697d9555343905772e265',1,'tram::Ext::Camera::Camera']]],\n  ['getformat_45',['GetFormat',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a610721a4bf5b10a94a192863f45e366f',1,'tram::Render::API::LinkedShader']]],\n  ['getfragmentshader_46',['GetFragmentShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a8ac81e93a84a25d344d1d60fa614506c',1,'tram::Render::API::LinkedShader']]],\n  ['getframe_47',['GetFrame',['../namespacetram.html#aa3909d6bfd02679f663541f787f9c7b4',1,'tram']]],\n  ['getframes_48',['GetFrames',['../classtram_1_1_render_1_1_sprite.html#a259105984bbeb254bb9124fba78a2596',1,'tram::Render::Sprite']]],\n  ['getframetime_49',['GetFrameTime',['../namespacetram.html#aed55d85a1ab5cc85a558d180313eb64e',1,'tram']]],\n  ['getglobal_50',['GetGlobal',['../classtram_1_1_script_1_1_interface.html#a7265800ebc35b2221b25a4ba843b0697',1,'tram::Script::Interface::GetGlobal()'],['../namespacetram_1_1_script.html#a917b2fc2737b5d72d66ce869fad40b2a',1,'tram::Script::GetGlobal()']]],\n  ['getheader_51',['GetHeader',['../classtram_1_1_render_1_1_animation.html#a97148015f708147071e224e18128b442',1,'tram::Render::Animation']]],\n  ['getheadercount_52',['GetHeaderCount',['../classtram_1_1_render_1_1_animation.html#a8d75cbe7f57a4b7b77f38ca710cadf30',1,'tram::Render::Animation']]],\n  ['getheight_53',['GetHeight',['../classtram_1_1_render_1_1_material.html#a98628ad183a5289b9f6f7a407c9005c0',1,'tram::Render::Material']]],\n  ['getid_54',['GetID',['../classtram_1_1_entity.html#a5ec303fd15c52e42d390eabeece5365f',1,'tram::Entity']]],\n  ['getindexarray_55',['GetIndexArray',['../classtram_1_1_render_1_1_model.html#a435b6a7e005789637eacb30bc37bdbb9',1,'tram::Render::Model']]],\n  ['getindexranges_56',['GetIndexRanges',['../classtram_1_1_render_1_1_model.html#a71b7db1a28b591e3d4fa7eb58b6c196d',1,'tram::Render::Model']]],\n  ['getinputstate_57',['GetInputState',['../namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d',1,'tram::UI']]],\n  ['getint_58',['GetInt',['../classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd',1,'tram::Value']]],\n  ['getitemcount_59',['GetItemCount',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a7eb3c4a11513b9eed6fe34bd89cd43dc',1,'tram::Ext::Kitchensink::InventoryManager::GetItemCount()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a0f45f90b7e0f0a5223dd478538530da9',1,'tram::Ext::Kitchensink::ListInventoryManager::GetItemCount()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944',1,'tram::Ext::Kitchensink::Inventory::GetItemCount()']]],\n  ['getitems_60',['GetItems',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#a3b028ac27cbb2380d88ae2775f3c3272',1,'tram::Ext::Kitchensink::InventoryManager::GetItems()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a1b9b03dd24817da053563d6e0a39a980',1,'tram::Ext::Kitchensink::ListInventoryManager::GetItems()']]],\n  ['getkeyboardaction_61',['GetKeyboardAction',['../namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b',1,'tram::UI']]],\n  ['getkeyboardactionname_62',['GetKeyboardActionName',['../namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832',1,'tram::UI']]],\n  ['getkeyboardkeyname_63',['GetKeyboardKeyName',['../namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce',1,'tram::UI']]],\n  ['getkeyframecount_64',['GetKeyframeCount',['../classtram_1_1_render_1_1_animation.html#a815b1115dfa11c8e21cf305d24ac49f8',1,'tram::Render::Animation']]],\n  ['getkeyframes_65',['GetKeyframes',['../classtram_1_1_render_1_1_animation.html#afa51937c2a487fe82bafdb2d4056e30c',1,'tram::Render::Animation']]],\n  ['getlast_66',['GetLast',['../structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15',1,'tram::Event::GetLast()'],['../structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90',1,'tram::Message::GetLast()'],['../classtram_1_1_pool.html#a6ccf1a748fa7d1f7caa10d7358f64b50',1,'tram::Pool::GetLast()']]],\n  ['getlastptr_67',['GetLastPtr',['../classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb',1,'tram::Stack']]],\n  ['getlength_68',['GetLength',['../classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a',1,'tram::Stack::GetLength()'],['../classtram_1_1_audio_1_1_sound.html#a9c780daf835dce88cf19d267aa427266',1,'tram::Audio::Sound::GetLength()']]],\n  ['getlightmap_69',['GetLightmap',['../classtram_1_1_render_component.html#a5feee4df39aba6a4652817159cc5d4c8',1,'tram::RenderComponent']]],\n  ['getlocation_70',['GetLocation',['../classtram_1_1_entity.html#a7bf177c08614dd697b23cd021c7fbfda',1,'tram::Entity::GetLocation()'],['../classtram_1_1_render_component.html#ac1c0477f22ef04154367915c0294848b',1,'tram::RenderComponent::GetLocation()']]],\n  ['getlookdirection_71',['GetLookDirection',['../classtram_1_1_controller_component.html#a94439cce310fb5bc23485b3e23f19cfb',1,'tram::ControllerComponent']]],\n  ['getlookrotation_72',['GetLookRotation',['../classtram_1_1_player_component.html#adcba02c6226d985aece150ce291830f6',1,'tram::PlayerComponent']]],\n  ['getmaterial_73',['GetMaterial',['../classtram_1_1_render_1_1_material.html#a22ae5b8db7d434e07318cf201defc953',1,'tram::Render::Material::GetMaterial()'],['../classtram_1_1_render_1_1_sprite.html#a7c98ddbe57968a26bb8bb5f6a86ca359',1,'tram::Render::Sprite::GetMaterial()']]],\n  ['getmaterials_74',['GetMaterials',['../classtram_1_1_render_1_1_model.html#ae764be80aa1071ca7f459bb7b341fd8e',1,'tram::Render::Model']]],\n  ['getmaterialtypename_75',['GetMaterialTypeName',['../namespacetram_1_1_render.html#a0356f2f33a144760b168fbc84d5c1931',1,'tram::Render']]],\n  ['getmaxindexrangelength_76',['GetMaxIndexRangeLength',['../namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545',1,'tram::Render::API']]],\n  ['getmediumlist_77',['GetMediumList',['../classtram_1_1_file_writer.html#abcf99237a3774981e16c871ec68b1473',1,'tram::FileWriter']]],\n  ['getmodel_78',['GetModel',['../classtram_1_1_render_component.html#a743ccc0b2357cec2f80a4db1f5dc301c',1,'tram::RenderComponent::GetModel()'],['../classtram_1_1_physics_component.html#af9c6e58635ec55d523a23a0f70f8216d',1,'tram::PhysicsComponent::GetModel()'],['../classtram_1_1_animation_component.html#a10847fac3c1cd2e8750fda898eff512d',1,'tram::AnimationComponent::GetModel()'],['../classtram_1_1_trigger_component.html#aac9479cb3992294f494eefba8061ad1d',1,'tram::TriggerComponent::GetModel()']]],\n  ['getmonitorcount_79',['GetMonitorCount',['../namespacetram_1_1_platform_1_1_window.html#a254ec949eaaef45870d59c02a4c35381',1,'tram::Platform::Window']]],\n  ['getname_80',['GetName',['../classtram_1_1_script_1_1_interface.html#a7a41316c12ef797af3cd9fe6cc89bbbe',1,'tram::Script::Interface::GetName()'],['../structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd',1,'tram::Signal::GetName()'],['../classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9',1,'tram::WorldCell::GetName()'],['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a3be13e88fa61161353ca4f29254e3957',1,'tram::Render::API::VertexShader::GetName()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a83780b2e28d8d0432404f10a0a60e7bb',1,'tram::Render::API::FragmentShader::GetName()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a4dddff605761144769af37f736b0d99a',1,'tram::Ext::Kitchensink::AttributeInfo::GetName()'],['../structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80',1,'tram::Event::GetName()'],['../classtram_1_1_entity.html#afe85e71ed0b3321908e0c86c58a71271',1,'tram::Entity::GetName()'],['../structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77',1,'tram::Message::GetName()'],['../classtram_1_1_navmesh.html#aea73348a1b3d10864820e6b1dd711b94',1,'tram::Navmesh::GetName()'],['../classtram_1_1_resource.html#a2967c7a144291895ef629bb1b5d15acb',1,'tram::Resource::GetName()'],['../namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701',1,'tram::System::GetName()']]],\n  ['getnavmeshnode_81',['GetNavmeshNode',['../classtram_1_1_navmesh.html#a9b5d215639881339b98b16b5c2bb56da',1,'tram::Navmesh']]],\n  ['getneardistance_82',['GetNearDistance',['../classtram_1_1_render_1_1_model.html#aaf703730644d7fab65d1a9a21534b1d7',1,'tram::Render::Model']]],\n  ['getnodes_83',['GetNodes',['../classtram_1_1_navmesh.html#a6f0d4a5f4fa94bb06a7731126c1f03e9',1,'tram::Navmesh']]],\n  ['getoctant_84',['GetOctant',['../classtram_1_1_octree.html#a886968cb23838b42a4ea381eda9a93b4',1,'tram::Octree']]],\n  ['getorigin_85',['GetOrigin',['../classtram_1_1_render_1_1_model.html#a3d3484e3d729819081e525321fa0cc22',1,'tram::Render::Model']]],\n  ['getparent_86',['GetParent',['../classtram_1_1_entity_component.html#a678a0fce6a2deac1fa04baaed4db3009',1,'tram::EntityComponent']]],\n  ['getpool_87',['GetPool',['../classtram_1_1_pool_proxy.html#a1a4541a7cb8ccbb3fe2c074ecece4905',1,'tram::PoolProxy']]],\n  ['getpose_88',['GetPose',['../classtram_1_1_animation_component.html#a04aa5c1f59cfafd2485a5f8ac1376cc1',1,'tram::AnimationComponent']]],\n  ['getposition_89',['GetPosition',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#af738a04eb564e9d69d6f0c1db42f9f5b',1,'tram::Ext::Camera::Camera::GetPosition()'],['../classtram_1_1_path_follower.html#a9e95681a6535da9569bea660127a52bb',1,'tram::PathFollower::GetPosition()']]],\n  ['getprompts_90',['GetPrompts',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#ae25eee3d66e055232539c9c5fe471c39',1,'tram::Ext::Kitchensink::DialogController']]],\n  ['getproperty_91',['GetProperty',['../classtram_1_1_render_1_1_material.html#a0c225923c45cf941c0b3e9d16897411d',1,'tram::Render::Material']]],\n  ['getreader_92',['GetReader',['../classtram_1_1_file_reader.html#adeafb2e1ec0d9d2c9e2ea25b0d705f14',1,'tram::FileReader']]],\n  ['getreferences_93',['GetReferences',['../classtram_1_1_resource.html#adbe7a1f09b0aa6eec9c5f930180008fb',1,'tram::Resource']]],\n  ['getrelation_94',['GetRelation',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#aacebbb1b8bcdf040a4d70a88d91c2bb7',1,'tram::Ext::Kitchensink::Faction']]],\n  ['getresource_95',['GetResource',['../classtram_1_1_pool_ptr.html#a05567d055c22c94213c1108f1197dc16',1,'tram::PoolPtr']]],\n  ['getrigidbodyvelocity_96',['GetRigidbodyVelocity',['../namespacetram_1_1_physics_1_1_a_p_i.html#a1f0061f6029ee06aa8be370d33d1a48c',1,'tram::Physics::API']]],\n  ['getrotation_97',['GetRotation',['../classtram_1_1_entity.html#adbb214d504101d5113d149fa0f06e162',1,'tram::Entity::GetRotation()'],['../classtram_1_1_render_component.html#abb6747392d707e0dca643a0400adef75',1,'tram::RenderComponent::GetRotation()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac812c8e3643823efb034b61ec368047a',1,'tram::Ext::Camera::Camera::GetRotation()']]],\n  ['getscale_98',['GetScale',['../classtram_1_1_render_component.html#a82831dd25d49e53768209fe6b22ec736',1,'tram::RenderComponent']]],\n  ['getscaling_99',['GetScaling',['../namespacetram_1_1_g_u_i.html#a6592f1eadaa540d5d79a87d24363d69e',1,'tram::GUI']]],\n  ['getscreen_100',['GetScreen',['../namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3',1,'tram::Render::API']]],\n  ['getscreenheight_101',['GetScreenHeight',['../namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66',1,'tram::UI']]],\n  ['getscreenwidth_102',['GetScreenWidth',['../namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca',1,'tram::UI']]],\n  ['getsearchlist_103',['GetSearchList',['../classtram_1_1_file_reader.html#a13fadbba64b0b75fc9c52bf64fbfe116',1,'tram::FileReader']]],\n  ['getsettings_104',['GetSettings',['../namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a',1,'tram::Settings']]],\n  ['getshader_105',['GetShader',['../classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#ac6d1cade6063ff972474b5d23e95722c',1,'tram::Render::API::VertexShader::GetShader()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#acf41b46206e406a90a1cd1992b902760',1,'tram::Render::API::LinkedShader::GetShader()'],['../classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a3e89b66d402de11dc6d4622d71569535',1,'tram::Render::API::FragmentShader::GetShader()']]],\n  ['getshape_106',['GetShape',['../classtram_1_1_physics_1_1_collision_model.html#a4f42c4b06373d96f98faffedc3e5c098',1,'tram::Physics::CollisionModel']]],\n  ['getshortname_107',['GetShortName',['../namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355',1,'tram::System']]],\n  ['getsignaltable_108',['GetSignalTable',['../classtram_1_1_entity.html#a8439e1ea14f61418caf8fccc00315bbb',1,'tram::Entity']]],\n  ['getsize_109',['GetSize',['../classtram_1_1_file_reader.html#a28bb4f3c47fb4aa8a2241b2944986bdc',1,'tram::FileReader::GetSize()'],['../classtram_1_1_pool.html#afcc89e07039f40d888ef8bb970467ff2',1,'tram::Pool::GetSize()'],['../classtram_1_1_disk_reader.html#ad2b0b2e4625d5d1a6e4d914b561fc4e7',1,'tram::DiskReader::GetSize()']]],\n  ['getsound_110',['GetSound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b',1,'tram::Ext::Kitchensink::SoundTable']]],\n  ['getspecularexponent_111',['GetSpecularExponent',['../classtram_1_1_render_1_1_material.html#a8bfc4e66a2677349bdd4cec129005d51',1,'tram::Render::Material']]],\n  ['getspeculartransparency_112',['GetSpecularTransparency',['../classtram_1_1_render_1_1_material.html#a4ffa819bc7d2db2bc228ae5649fbf5cd',1,'tram::Render::Material']]],\n  ['getspecularweight_113',['GetSpecularWeight',['../classtram_1_1_render_1_1_material.html#a2ab043c6f5e8a512ac9ca34916b43485',1,'tram::Render::Material']]],\n  ['getsprite_114',['GetSprite',['../classtram_1_1_sprite_component.html#afe9a51092931932104237e352f15267f',1,'tram::SpriteComponent::GetSprite()'],['../classtram_1_1_particle_component.html#a13b0e3b68f2b4fd346525baba49a7481',1,'tram::ParticleComponent::GetSprite()'],['../classtram_1_1_decal_component.html#afc221ff999d6777f7d0bf15a63e8b11b',1,'tram::DecalComponent::GetSprite()']]],\n  ['getstat_115',['GetStat',['../namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b',1,'tram::Stats::GetStat(Resource resource)'],['../namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb',1,'tram::Stats::GetStat(System::system_t system)']]],\n  ['getstataverage_116',['GetStatAverage',['../namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1',1,'tram::Stats']]],\n  ['getstatuncollated_117',['GetStatUncollated',['../namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a',1,'tram::Stats']]],\n  ['getstatus_118',['GetStatus',['../classtram_1_1_file_reader.html#afe64d8768d91a14f788e7d518591a572',1,'tram::FileReader::GetStatus()'],['../classtram_1_1_disk_writer.html#a8b530f156118353d4ba12d332d4e832a',1,'tram::DiskWriter::GetStatus()'],['../classtram_1_1_disk_reader.html#afc56907851741e91da516352020ca264',1,'tram::DiskReader::GetStatus()'],['../classtram_1_1_file_writer.html#ae51986fead14e4b024fea535c0986cec',1,'tram::FileWriter::GetStatus()'],['../classtram_1_1_resource.html#a52f4c25fe2642109f7f35088419cd086',1,'tram::Resource::GetStatus()']]],\n  ['getstoredcollisions_119',['GetStoredCollisions',['../classtram_1_1_trigger_component.html#af88fca014f6f9615930c02f82ae00db3',1,'tram::TriggerComponent']]],\n  ['getsystemcount_120',['GetSystemCount',['../namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6',1,'tram::System']]],\n  ['gettangent_121',['GetTangent',['../classtram_1_1_path_follower.html#abdf8f79ad276308156aa2780e24412c9',1,'tram::PathFollower']]],\n  ['gettexture_122',['GetTexture',['../classtram_1_1_render_1_1_material.html#a7364618a398768519758ff9ffd7b3c4b',1,'tram::Render::Material']]],\n  ['gettick_123',['GetTick',['../namespacetram.html#a45d3de117b68f4c584f4b9012b230557',1,'tram']]],\n  ['getticktime_124',['GetTickTime',['../namespacetram.html#a370b9480a4f179e6e4c41d9d6a70fcb7',1,'tram']]],\n  ['gettime_125',['GetTime',['../namespacetram_1_1_platform_1_1_window.html#a25eea05c5898d99a27460394bc17ee92',1,'tram::Platform::Window']]],\n  ['gettransitions_126',['GetTransitions',['../classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa',1,'tram::WorldCell']]],\n  ['gettype_127',['GetType',['../classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50',1,'tram::ValuePtr::GetType()'],['../classtram_1_1_render_1_1_material.html#a9ab0ad47f18952f0014e01714435309f',1,'tram::Render::Material::GetType()'],['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a59da53365a58b0590b41d763cac529c7',1,'tram::Render::API::LinkedShader::GetType()'],['../classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9',1,'tram::StaticWorldObject::GetType()'],['../classtram_1_1_crate.html#a378f96494bd77812a24ca507be4ac434',1,'tram::Crate::GetType()'],['../classtram_1_1_decoration.html#a7e637e1beaf0cfc3a933d7a72304122b',1,'tram::Decoration::GetType()'],['../classtram_1_1_light.html#aaee848b4fe419b1fc6c82282b31aa9dd',1,'tram::Light::GetType()'],['../classtram_1_1_marker.html#ab7246a7be4136d9e70ba8a253b00a2d5',1,'tram::Marker::GetType()'],['../classtram_1_1_player.html#a10a805e40469321fb7d6fa1f66d0c0eb',1,'tram::Player::GetType()'],['../classtram_1_1_scriptable.html#a1e3c2da150ec8c8b7b075867cc6165b1',1,'tram::Scriptable::GetType()'],['../classtram_1_1_sound.html#aa8a9115da334eec12b8b837d9d47b689',1,'tram::Sound::GetType()'],['../classtram_1_1_trigger.html#aa0bd3f37d64f909978372c5323778438',1,'tram::Trigger::GetType()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ce13fa0441d27759aab3911ec2940ec',1,'tram::Ext::Kitchensink::Button::GetType()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acf19095d4330eb1ec6628be8e86b6e5c',1,'tram::Ext::Kitchensink::QuestEntity::GetType()'],['../classtram_1_1_entity.html#a552606c9eec8f007aaf42d251aaaa264',1,'tram::Entity::GetType()'],['../structtram_1_1_event.html#af584b523e077a59452a91153334e75cd',1,'tram::Event::GetType()'],['../structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119',1,'tram::Message::GetType()'],['../structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af',1,'tram::Signal::GetType()'],['../classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf',1,'tram::Value::GetType()']]],\n  ['getvalidnexttopics_128',['GetValidNextTopics',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['getvariable_129',['GetVariable',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c',1,'tram::Ext::Kitchensink::Quest']]],\n  ['getvelocity_130',['GetVelocity',['../classtram_1_1_physics_component.html#a61fef009717a9e4724dee61359319094',1,'tram::PhysicsComponent']]],\n  ['getversion_131',['GetVersion',['../namespacetram.html#a3b5616291800641604306bbf678b3873',1,'tram']]],\n  ['getvertexarray_132',['GetVertexArray',['../classtram_1_1_render_1_1_model.html#ac05721211dc33f67e5f59a4da99b4b96',1,'tram::Render::Model']]],\n  ['getvertexdefinition_133',['GetVertexDefinition',['../namespacetram_1_1_render.html#ae7cb3ec82d35f3a4b5bf4fbb7f15a429',1,'tram::Render']]],\n  ['getvertexformat_134',['GetVertexFormat',['../classtram_1_1_render_1_1_model.html#a878a07665c85cc2b0b45e9eed4012a56',1,'tram::Render::Model']]],\n  ['getvertexformatname_135',['GetVertexFormatName',['../namespacetram_1_1_render.html#ac38b6a74526f6b0bcc15fb23dbc965b6',1,'tram::Render']]],\n  ['getvertexshader_136',['GetVertexShader',['../classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#abd8d0225e99fe0bda893abde0429e0fa',1,'tram::Render::API::LinkedShader']]],\n  ['getviewdistance_137',['GetViewDistance',['../namespacetram_1_1_render.html#a0a15770929caa8b52620ed6b2cd3f731',1,'tram::Render']]],\n  ['getviewfov_138',['GetViewFov',['../namespacetram_1_1_render.html#a91420cfff2ed4a2548d27a0924000187',1,'tram::Render']]],\n  ['getviewposition_139',['GetViewPosition',['../namespacetram_1_1_render.html#acfbfc3fc3b9bcc20aba46673364bfa6b',1,'tram::Render']]],\n  ['getviewrotation_140',['GetViewRotation',['../namespacetram_1_1_render.html#a588afc5ab26e5dea5924df08c70f95bf',1,'tram::Render']]],\n  ['getvolume_141',['GetVolume',['../classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a',1,'tram::WorldCell::GetVolume()'],['../namespacetram_1_1_audio.html#ac8184c5ea205ddd19e0795f8ffdd7c1c',1,'tram::Audio::GetVolume()']]],\n  ['getwaitingresources_142',['GetWaitingResources',['../namespacetram_1_1_async.html#af447ff406255f241322da550d5d027a3',1,'tram::Async']]],\n  ['getweight_143',['GetWeight',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a69082df187434d24ec21dbcafa93f2ec',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['getwidth_144',['GetWidth',['../classtram_1_1_render_1_1_material.html#a3c06e86d3701b7377e4a86f4d6faeaac',1,'tram::Render::Material']]],\n  ['getworldtransform_145',['getWorldTransform',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a3c4651578a5cc3573ddf5dad03eb305f',1,'tram::Physics::API::CallbackMotionState']]],\n  ['getwriter_146',['GetWriter',['../classtram_1_1_file_writer.html#acdf5bcd53cc32c0c7f268d73a9fca3cc',1,'tram::FileWriter']]],\n  ['gldrawlistentry_147',['GLDrawListEntry',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28',1,'tram::Render::API::GLDrawListEntry']]],\n  ['glyph_148',['Glyph',['../namespacetram_1_1_g_u_i.html#ac9ba68cbd0b4343af392b64083f10f13',1,'tram::GUI::Glyph(font_t font, glyph_t glyph)'],['../namespacetram_1_1_g_u_i.html#ab9cbc24cc6766595f1a063de7c32e568',1,'tram::GUI::Glyph(glyph_t glyph)']]],\n  ['glyphborderv_149',['GlyphBorderV',['../namespacetram_1_1_g_u_i.html#a34d71791d5b4905b42111ea613a087e6',1,'tram::GUI']]],\n  ['glyphheight_150',['GlyphHeight',['../namespacetram_1_1_g_u_i.html#a5998935f32f2b821313449f0254dccf0',1,'tram::GUI']]],\n  ['glyphwidth_151',['GlyphWidth',['../namespacetram_1_1_g_u_i.html#a643f4e389961bc9ccb05092ea58cccc6',1,'tram::GUI']]],\n  ['greater_152',['Greater',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['greaterorequal_153',['GreaterOrEqual',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35',1,'tram::Ext::Kitchensink::QuestVariable']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_7.js",
    "content": "var searchData=\n[\n  ['hasattribute_0',['HasAttribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['hasautomaticloading_1',['HasAutomaticLoading',['../classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6',1,'tram::WorldCell']]],\n  ['hasbaseclass_2',['HasBaseClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a5e87837dea2d956226d92986b23dadd2',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['hascharacter_3',['HasCharacter',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a52cf75871489b10c7a6bf1ca2ad407b1',1,'tram::Ext::Kitchensink::Faction']]],\n  ['hasclass_4',['HasClass',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a7f663500e9a6aa3dad2ea05fdbf4226f',1,'tram::Ext::Kitchensink::Character']]],\n  ['hashmap_5',['Hashmap',['../classtram_1_1_hashmap.html#ac573657ae86fff9e00d4eea5e525f09c',1,'tram::Hashmap::Hashmap(const char *name, size_t max_size)'],['../classtram_1_1_hashmap.html#a0ffe9a0a3a55b18c2f01928055e3c8fc',1,'tram::Hashmap::Hashmap(const char *name, size_t max_size, std::initializer_list&lt; std::pair&lt; uint32_t, T &gt; &gt; list)']]],\n  ['hasinteriorlighting_6',['HasInteriorLighting',['../classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345',1,'tram::WorldCell']]],\n  ['horizontaldivider_7',['HorizontalDivider',['../namespacetram_1_1_g_u_i.html#a0568bf9d9061984bf013f44b50ff5e56',1,'tram::GUI']]],\n  ['hull_8',['Hull',['../structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_8.js",
    "content": "var searchData=\n[\n  ['identity_5fposition_0',['IDENTITY_POSITION',['../namespacetram.html#a54978c27914521c35127181e9cb0f849',1,'tram']]],\n  ['identity_5frotation_1',['IDENTITY_ROTATION',['../namespacetram.html#a6643f20251af5564678ffc98ef58be9e',1,'tram']]],\n  ['identity_5fscale_2',['IDENTITY_SCALE',['../namespacetram.html#a6aa1af51cd6d3679c00e656d1473cd46',1,'tram']]],\n  ['index_3',['index',['../classtram_1_1_pool.html#a7ffa82540f27a9b7ff4da2b75daebbf5',1,'tram::Pool']]],\n  ['infos_4',['infos',['../namespacetram_1_1_ext_1_1_kitchensink.html#af26c7178edaf07fc00c3ffb0048472c5',1,'tram::Ext::Kitchensink']]],\n  ['init_5',['Init',['../classtram_1_1_light_component.html#a523c8f75bcd17b885098fe30956d88a6',1,'tram::LightComponent::Init()'],['../classtram_1_1_player_component.html#afcbc45d601e912238fbe419681db88dd',1,'tram::PlayerComponent::Init()'],['../classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9',1,'tram::TemplateComponent::Init()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58',1,'tram::Ext::Kitchensink::Quest::Init()'],['../classtram_1_1_entity_component.html#ab5d797d6fd60beef019062e228679eb7',1,'tram::EntityComponent::Init()']]],\n  ['init_6',['init',['../classtram_1_1_component.html#a6cd91a842686662e8cceccd2920c3619',1,'tram::Component::init()'],['../classtram_1_1_component.html#a1e0318f6b89ca572f28e9fed070dd32b',1,'tram::Component::init()'],['../classtram_1_1_component.html#ad96889276619fda754e4af68a5075db2',1,'tram::Component::init()'],['../classtram_1_1_component.html#a4ba7f565d501661914c7648cd1b62b44',1,'tram::Component::init()'],['../classtram_1_1_component.html#ae956519770a3e6c53b9bcecf407676b6',1,'tram::Component::init()'],['../classtram_1_1_component.html#a0abec218348d77cebbfa73723815606f',1,'tram::Component::init()'],['../classtram_1_1_component.html#a81ec0494d37dea609b33cf00cf0c33d3',1,'tram::Component::init()'],['../classtram_1_1_component.html#ab30ccc33ece77ac0526eccd693de6a1a',1,'tram::Component::init()'],['../classtram_1_1_component.html#a451ffe51f9f1e27648f7a5f585eb1ea4',1,'tram::Component::init()'],['../classtram_1_1_component.html#a54a5bab4377e5b7895691516332639ac',1,'tram::Component::init()'],['../classtram_1_1_component.html#a827f85fff0e002fb5706f4ade3ddc72a',1,'tram::Component::init()'],['../classtram_1_1_component.html#ac8b7faa733f01297be8df3a2ea685eed',1,'tram::Component::init()'],['../classtram_1_1_component.html#a3848187d991b7185779a6c237957bd9c',1,'tram::Component::init()']]],\n  ['init_7',['Init',['../namespacetram_1_1_render.html#a432d184f3b358b4f7ee6daf055f9ef74',1,'tram::Render::Init()'],['../namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd',1,'tram::Audio::API::Init()'],['../namespacetram_1_1_audio.html#aabd3c9eadd115d4d66e324ffed163470',1,'tram::Audio::Init()'],['../namespacetram_1_1_ext_1_1_camera.html#ad252c0b524249e43b5b04f649a6697c2',1,'tram::Ext::Camera::Init()'],['../namespacetram_1_1_ext_1_1_kitchensink.html#aabfec8af9b6f67d87256ceb0565b8cc6',1,'tram::Ext::Kitchensink::Init()'],['../namespacetram_1_1_ext_1_1_menu.html#a389cad79647a9142bb4683217d94387a',1,'tram::Ext::Menu::Init()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a83bba368580b03eba8830e61ce8f13ab',1,'tram::Ext::Scripting::Lua::Init()'],['../namespacetram_1_1_async.html#abf1180d68deb60ea65e90073f8f8eaf0',1,'tram::Async::Init()'],['../namespacetram_1_1_core.html#a1704d5ca7badba9cc7486134bf2cc578',1,'tram::Core::Init()'],['../namespacetram_1_1_g_u_i.html#a2d278da9263fa009f2eaa8ea8d67eaa0',1,'tram::GUI::Init()'],['../namespacetram_1_1_script.html#a3df9d0d4778b39ca7c95328ae4fd5a22',1,'tram::Script::Init()'],['../namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8',1,'tram::UI::Init()'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a5d061813173c9cc7d06ff1fe5bb20717',1,'tram::Physics::API::Init()'],['../namespacetram_1_1_physics.html#a176087bb562e45cdb38d96605d03ded6',1,'tram::Physics::Init()'],['../namespacetram_1_1_platform_1_1_window.html#af03eb6bcb74b8f5ac5fe208c82c7e7b5',1,'tram::Platform::Window::Init()'],['../namespacetram_1_1_platform_1_1_input.html#a34c539a00c1e5228b2ee9d9f69de5af8',1,'tram::Platform::Input::Init()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d',1,'tram::Render::API::Init()']]],\n  ['initai_8',['InitAI',['../namespacetram_1_1_ext_1_1_kitchensink.html#ab9a442aa76563ab70aff7c560a3bb953',1,'tram::Ext::Kitchensink']]],\n  ['initcallbacks_9',['InitCallbacks',['../namespacetram_1_1_ext_1_1_menu.html#ab6a5cd004740b52fff348c26ee0a8b6c',1,'tram::Ext::Menu']]],\n  ['initexplorationpaths_10',['InitExplorationPaths',['../namespacetram_1_1_audio_1_1_spatial.html#a3dcc76efc87914d95c6011db3972eda4',1,'tram::Audio::Spatial']]],\n  ['initoutput_11',['InitOutput',['../namespacetram_1_1_audio_1_1_spatial.html#a1d958660cb3bf23f87e78a3a2a36d912',1,'tram::Audio::Spatial']]],\n  ['insert_12',['Insert',['../classtram_1_1_hashmap.html#a4b0e9748d29a4b4af463af55307818da',1,'tram::Hashmap::Insert(UID key, T value)'],['../classtram_1_1_hashmap.html#a68af1a319c6ffabf571332939b4633c0',1,'tram::Hashmap::Insert(uint32_t key, T value)'],['../classtram_1_1_octree.html#aff7cf2c6bf99856721156aa6dcdf0b72',1,'tram::Octree::Insert(vec3 point, T data)'],['../classtram_1_1_octree.html#a02470aaeb494f3903c6f45e0e3357510',1,'tram::Octree::Insert(Node *parent, Node *leaf)']]],\n  ['insertdrawlistentries_13',['InsertDrawListEntries',['../classtram_1_1_render_component.html#aae0ec9b022b64f9cfc19885dc6eee2c1',1,'tram::RenderComponent']]],\n  ['insertdrawlistentry_14',['InsertDrawListEntry',['../namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1',1,'tram::Render::API']]],\n  ['insertleaf_15',['InsertLeaf',['../classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41',1,'tram::AABBTree::InsertLeaf()'],['../namespacetram_1_1_render_1_1_a_a_b_b.html#a6625049c0bc385b24b326868ad74a779',1,'tram::Render::AABB::InsertLeaf()']]],\n  ['intcolor_16',['IntColor',['../namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b',1,'tram::Render::API']]],\n  ['inventory_17',['Inventory',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#af7a1b00c5dfadf08f99151978659a9c2',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['is_18',['Is',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['is_5fcontinue_19',['is_continue',['../classtram_1_1_file_reader_parser.html#afd0f9db53311ddb1c724c286cd18545b',1,'tram::FileReaderParser::is_continue()'],['../classtram_1_1_text_reader_parser.html#ac4fed2bc3815fed4a548ad35f7a30a17',1,'tram::TextReaderParser::is_continue()'],['../classtram_1_1_file.html#a613cfcd9ed88d5edacd33b345ddaa558',1,'tram::File::is_continue()']]],\n  ['is_5fempty_20',['is_empty',['../structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0',1,'tram::UID']]],\n  ['is_5ferror_21',['is_error',['../classtram_1_1_file_reader_parser.html#a9f33622ce91e090714839f2209e1a151',1,'tram::FileReaderParser::is_error()'],['../classtram_1_1_text_reader_parser.html#a783ecd25f9221a1ecdc6ae7075dff15b',1,'tram::TextReaderParser::is_error()']]],\n  ['is_5fopen_22',['is_open',['../classtram_1_1_file.html#a35ac8b7f25c9644484adb16e6315ac13',1,'tram::File']]],\n  ['is_5fvalid_23',['is_valid',['../structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449',1,'tram::UID']]],\n  ['isaudiosourceplaying_24',['IsAudioSourcePlaying',['../namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596',1,'tram::Audio::API']]],\n  ['isautoload_25',['IsAutoLoad',['../classtram_1_1_entity.html#a147a88601da58a30ee3d39bbc2c2da12',1,'tram::Entity']]],\n  ['isbool_26',['IsBool',['../classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02',1,'tram::Value::IsBool()'],['../classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5',1,'tram::ValuePtr::IsBool()']]],\n  ['ischanged_27',['IsChanged',['../classtram_1_1_entity.html#ab439f567d570a3bbd0f80c5d2e025eb0',1,'tram::Entity']]],\n  ['isdebugdraw_28',['IsDebugDraw',['../classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1',1,'tram::WorldCell']]],\n  ['isdebuginfodraw_29',['IsDebugInfoDraw',['../classtram_1_1_animation_component.html#a622f5ba394f586c8eddde6acfbc968e0',1,'tram::AnimationComponent::IsDebugInfoDraw()'],['../classtram_1_1_audio_component.html#a8f7d175b19b8e5b40994132c416a404e',1,'tram::AudioComponent::IsDebugInfoDraw()'],['../classtram_1_1_controller_component.html#a827a701de4481f78563b75fce6ea55a2',1,'tram::ControllerComponent::IsDebugInfoDraw()']]],\n  ['isdebugmode_30',['IsDebugMode',['../namespacetram_1_1_render_1_1_a_p_i.html#aa5310d3f1d84890fdd8b6c9b8ceead3f',1,'tram::Render::API']]],\n  ['isdeleted_31',['IsDeleted',['../classtram_1_1_entity.html#a409d0640de875ed0bdf2b8b71cfe75ee',1,'tram::Entity']]],\n  ['isdrawtrigger_32',['IsDrawTrigger',['../classtram_1_1_trigger.html#a6eafc910dc841bea5073d9cd27a14f77',1,'tram::Trigger']]],\n  ['isequippeditem_33',['IsEquippedItem',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a53fa2c2df9e2cb7c28395f23a91b42f6',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['isequippedslot_34',['IsEquippedSlot',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#aee945a9c74d9e50a5fe5f01430cc124c',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['isfloat_35',['IsFloat',['../classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e',1,'tram::Value::IsFloat()'],['../classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274',1,'tram::ValuePtr::IsFloat()']]],\n  ['isfullscreen_36',['IsFullscreen',['../namespacetram_1_1_platform_1_1_window.html#a283d6de486d8c8808e78da64f2a4667e',1,'tram::Platform::Window']]],\n  ['isinfaction_37',['IsInFaction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a61fe7823c735263feb55c31b615e858e',1,'tram::Ext::Kitchensink::Character']]],\n  ['isinit_38',['IsInit',['../classtram_1_1_entity_component.html#aad321b7c26fd5f710cf1e0e48f605a8a',1,'tram::EntityComponent']]],\n  ['isinitialized_39',['IsInitialized',['../namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2',1,'tram::System']]],\n  ['isinside_40',['IsInside',['../classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f',1,'tram::Transition::IsInside()'],['../classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70',1,'tram::WorldCell::IsInside()']]],\n  ['isint_41',['IsInt',['../classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61',1,'tram::Value::IsInt()'],['../classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695',1,'tram::ValuePtr::IsInt()']]],\n  ['isinterior_42',['IsInterior',['../classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8',1,'tram::WorldCell']]],\n  ['isleaf_43',['IsLeaf',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4',1,'tram::AABBTree::Node::IsLeaf()'],['../structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429',1,'tram::Octree::Node::IsLeaf()']]],\n  ['islightdraw_44',['IsLightDraw',['../classtram_1_1_light_component.html#aefae135fe915548285a2363b92e2915b',1,'tram::LightComponent']]],\n  ['isloaded_45',['IsLoaded',['../classtram_1_1_entity.html#a305ae4e799b36c4111f5cd089748f422',1,'tram::Entity::IsLoaded()'],['../classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6',1,'tram::WorldCell::IsLoaded()']]],\n  ['isloadedfromdisk_46',['IsLoadedFromDisk',['../classtram_1_1_entity.html#ace4932f5988e14152753e4de7de86a4a',1,'tram::Entity']]],\n  ['isloadfailed_47',['IsLoadFailed',['../classtram_1_1_resource.html#a81746c1ca8f0d380259f8906a79942b8',1,'tram::Resource']]],\n  ['ismet_48',['IsMet',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7',1,'tram::Ext::Kitchensink::DialogCondition']]],\n  ['isname_49',['IsName',['../classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900',1,'tram::Value']]],\n  ['isnode_50',['IsNode',['../structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c',1,'tram::Octree::Node']]],\n  ['isnot_51',['IsNot',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['ispersistent_52',['IsPersistent',['../classtram_1_1_entity.html#a07ace4859c60707136639f33cd525c0a',1,'tram::Entity']]],\n  ['isplaying_53',['IsPlaying',['../classtram_1_1_audio_component.html#a0cb407f67786c11bda3f8a4352796a58',1,'tram::AudioComponent::IsPlaying()'],['../classtram_1_1_animation_component.html#a27c7ff48133b01c79777af78e4ee5a07',1,'tram::AnimationComponent::IsPlaying()']]],\n  ['isquat_54',['IsQuat',['../classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c',1,'tram::Value']]],\n  ['israwinput_55',['IsRawInput',['../namespacetram_1_1_platform_1_1_window.html#a767093572b3a28a3c4c3bb86c9f2fdaa',1,'tram::Platform::Window']]],\n  ['isready_56',['IsReady',['../classtram_1_1_entity_component.html#a1ae29198858d24d3aba6914bdee6a46f',1,'tram::EntityComponent']]],\n  ['isrendercontextthread_57',['IsRenderContextThread',['../namespacetram_1_1_platform_1_1_window.html#a9cb305ebdf39acfb85f04ef54d867703',1,'tram::Platform::Window']]],\n  ['issourcedraw_58',['IsSourceDraw',['../classtram_1_1_audio_component.html#a9d8448140c994b866c61118e80887c58',1,'tram::AudioComponent']]],\n  ['isstring_59',['IsString',['../classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380',1,'tram::Value']]],\n  ['isvec2_60',['IsVec2',['../classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508',1,'tram::Value']]],\n  ['isvec3_61',['IsVec3',['../classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af',1,'tram::Value']]],\n  ['isvec4_62',['IsVec4',['../classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc',1,'tram::Value']]],\n  ['isvsync_63',['IsVsync',['../namespacetram_1_1_platform_1_1_window.html#a5f0dc2c949f69dbde94b216e53d26797',1,'tram::Platform::Window']]],\n  ['itemcount_64',['ItemCount',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['iterator_65',['iterator',['../structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0',1,'tram::Pool::iterator']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_9.js",
    "content": "var searchData=\n[\n  ['jump_0',['Jump',['../classtram_1_1_controller_component.html#ad5ac49ff2ac8a5c96dbd8c341d445f76',1,'tram::ControllerComponent::Jump()'],['../classtram_1_1_f_p_s_controller_component.html#a05586398229c44cfafe8b9c6fdb3f2d8',1,'tram::FPSControllerComponent::Jump()'],['../classtram_1_1_raycast_controller_component.html#a865d92b888b684f1a8ddfc550509dfc8',1,'tram::RaycastControllerComponent::Jump()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_a.js",
    "content": "var searchData=\n[\n  ['keycode_0',['KeyCode',['../namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa',1,'tram::UI']]],\n  ['keymouse_1',['KeyMouse',['../namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b',1,'tram::UI']]],\n  ['keypress_2',['KeyPress',['../namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d',1,'tram::UI']]],\n  ['keyrelease_3',['KeyRelease',['../namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7',1,'tram::UI']]],\n  ['keyscroll_4',['KeyScroll',['../namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c',1,'tram::UI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_b.js",
    "content": "var searchData=\n[\n  ['layer_0',['Layer',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a80fddca313006f7df721f6a76c4c0f46',1,'tram::Ext::Kitchensink::ListDialog::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#acbe4b614ff313801176a8d5c9323f200',1,'tram::Ext::Menu::DebugMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#a4a5a2895e27ec27d0872dbc9551d64f4',1,'tram::Ext::Menu::EntityProperties::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a82465472dd314737a46e71a4bb490413',1,'tram::Ext::Menu::EntityPicker::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a37f83670863cef2947520bfc87bf7439',1,'tram::Ext::Menu::ListSelection::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a0aac25870c19be99a9dbec77f3941bd6',1,'tram::Ext::Menu::MessageSend::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a350714cafdedf14bb78f9ccbc0c5d6b9',1,'tram::Ext::Menu::InterceptMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#a4ebf84a47dcf839b8b4cc56c968e9647',1,'tram::Ext::Menu::WorldCellProperties::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_statistics_menu.html#a0ecc5a8babc2c7f2efed7d7d05f57fc9',1,'tram::Ext::Menu::StatisticsMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3b6187201edc29ec7ce239ac0eaad7af',1,'tram::Ext::Menu::EventEmit::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a0a8ace39c5fbd999a3651c9c3042b3a7',1,'tram::Ext::Menu::SignalMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_options.html#aa6713b9bb4a7e222ce6ea27a7ecee557',1,'tram::Ext::Menu::Options::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_console.html#a6784de1db0572c2424cea93c4e0722dc',1,'tram::Ext::Menu::Console::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a972ff0163ab4ebc7d8acacce5d09a921',1,'tram::Ext::Menu::Menu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_system_menu.html#a692ddb36ef07913c6a6595e3446370b8',1,'tram::Ext::Menu::SystemMenu::Layer()'],['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a48a51fdd2b0697dc7eea3934e247760f',1,'tram::Ext::Menu::SettingsMenu::Layer()']]],\n  ['less_1',['Less',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['lessorequal_2',['LessOrEqual',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['light_3',['Light',['../classtram_1_1_light.html#ad1690e5bb21843da0f5ef2c16a6219ff',1,'tram::Light']]],\n  ['light_5ftree_4',['light_tree',['../namespacetram_1_1_render_1_1_light_tree.html#a6baeaf6a8a379247c5a02079c1ef92cb',1,'tram::Render::LightTree']]],\n  ['light_5ftree_5fids_5',['light_tree_ids',['../namespacetram_1_1_render_1_1_a_p_i.html#a8e818c0f10852d65d1464fa7db96faaa',1,'tram::Render::API']]],\n  ['lightgraph_6',['LightGraph',['../classtram_1_1_render_1_1_light_graph.html#a32f29f8d80661eedcfe32d72e7f11def',1,'tram::Render::LightGraph']]],\n  ['linevisible_7',['LineVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b',1,'tram::Render::API']]],\n  ['link_8',['Link',['../classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280',1,'tram::WorldCell']]],\n  ['listdialog_9',['ListDialog',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a7efdad5869f1dee758dd15a5c49e9d8c',1,'tram::Ext::Kitchensink::ListDialog::ListDialog()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_list_dialog.html#a150d52aef6f1ab1053a824ada7801c1d',1,'tram::Ext::Kitchensink::ListDialog::ListDialog(name_t)']]],\n  ['listselection_10',['ListSelection',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a3d214fa7bbb5d943a33213188da06d4f',1,'tram::Ext::Menu::ListSelection']]],\n  ['load_11',['Load',['../classtram_1_1_marker.html#a5ad81cd0f4cb4a426ac37ef1519f5357',1,'tram::Marker::Load()'],['../classtram_1_1_player.html#a7e5497fa4c5d70508cd8928a625bb2d7',1,'tram::Player::Load()'],['../classtram_1_1_scriptable.html#aad1310e7fddbaee776682f678d745208',1,'tram::Scriptable::Load()'],['../classtram_1_1_sound.html#ac7999efe8694dde2bbd32140c515c391',1,'tram::Sound::Load()'],['../classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc',1,'tram::StaticWorldObject::Load()'],['../classtram_1_1_trigger.html#a6d880e5d98a9a6210c79bf19d280219c',1,'tram::Trigger::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aae16221eb106915c8e3e509709f52952',1,'tram::Ext::Kitchensink::Button::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a430889350ca4370924e484230119c29e',1,'tram::Ext::Kitchensink::Breakable::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a2ae4115b327140de3532868a80f6738c',1,'tram::Ext::Kitchensink::Water::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad2659a3719dc8658bb53300fc312cd76',1,'tram::Ext::Kitchensink::Train::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a649fb346d1ab51b8cfcc2d21a8e87d37',1,'tram::Ext::Kitchensink::Pickup::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a33ea59023d2ab8334d03f2eca1920472',1,'tram::Ext::Kitchensink::DebugText::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aca488fc2cc2ee6132747b7f9ee2aa5af',1,'tram::Ext::Kitchensink::DebugShape::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a1ddc0ce845dfe63f5c7fa089a5309925',1,'tram::Ext::Kitchensink::TriggerAutosave::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#af6eb6f5d84da2055d5f4d361c951646f',1,'tram::Ext::Kitchensink::TriggerHurt::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a0779152e5dfe962f7cea735d6da6c5c8',1,'tram::Ext::Kitchensink::TriggerOnce::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a09b7e8d6f7c06354087c7bbed605a0dc',1,'tram::Ext::Kitchensink::TriggerMultiple::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a09d780452b0c4c3affdad42d728ccb9f',1,'tram::Ext::Kitchensink::TriggerPush::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a452f9f9d0d4b8864d59bfa8d93c2e128',1,'tram::Ext::Kitchensink::TriggerRemove::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa6638ecd68bb098631b31097e320839a',1,'tram::Ext::Kitchensink::TriggerTeleport::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#aff679002a0af88434745c06eacb3eadd',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::Load()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#acc37e81bc1cd3bf3459d8884e158737d',1,'tram::Ext::Kitchensink::QuestEntity::Load()'],['../classtram_1_1_entity.html#a42f5dbd06dc0014191ac78e6c2900386',1,'tram::Entity::Load()'],['../classtram_1_1_resource.html#a25c818d18a10010f342eaae99c083826',1,'tram::Resource::Load()'],['../classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6',1,'tram::WorldCell::Load()'],['../classtram_1_1_crate.html#a69259e33129f5d795e4fc449cc50a430',1,'tram::Crate::Load()'],['../classtram_1_1_decoration.html#a18546c61e3519a3a6ab882e7deb160fb',1,'tram::Decoration::Load()'],['../classtram_1_1_light.html#af787551e1e7ceecc73891f52811050b0',1,'tram::Light::Load()'],['../namespacetram_1_1_language.html#a33a74954652fedfbc85aab8cdd4c99f3',1,'tram::Language::Load()'],['../namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181',1,'tram::Settings::Load()']]],\n  ['loadall_12',['LoadAll',['../classtram_1_1_render_1_1_animation.html#acd6c4015e2d1ed771624e80141eb29fd',1,'tram::Render::Animation']]],\n  ['loaddependency_13',['LoadDependency',['../namespacetram_1_1_async.html#a9e1b28345fded87fa20aee192ddcce0f',1,'tram::Async']]],\n  ['loadfromdisk_14',['LoadFromDisk',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a',1,'tram::Ext::Kitchensink::DialogTopic::LoadFromDisk()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a68d8a76e4253d7236b9b1ce50483750c',1,'tram::Ext::Kitchensink::Inventory::LoadFromDisk()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8',1,'tram::Ext::Kitchensink::Quest::LoadFromDisk()'],['../classtram_1_1_navmesh.html#a792dae6d4c013fb3f773c1bf851a3f6c',1,'tram::Navmesh::LoadFromDisk()'],['../classtram_1_1_path.html#a03b3057af03cc8870dc7a699cdb1a77c',1,'tram::Path::LoadFromDisk()'],['../classtram_1_1_resource.html#a5dc8ecdb5e36b98015fe2f2ea0de6e14',1,'tram::Resource::LoadFromDisk()'],['../classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33',1,'tram::WorldCell::LoadFromDisk()'],['../classtram_1_1_physics_1_1_collision_model.html#a89325e4cec53a937d5f189701505344e',1,'tram::Physics::CollisionModel::LoadFromDisk()'],['../classtram_1_1_render_1_1_animation.html#aa0a4327e94e5babd310c67593cf4dae7',1,'tram::Render::Animation::LoadFromDisk()'],['../classtram_1_1_render_1_1_light_graph.html#a7dd1cd54e31470a76c5919dfb8311629',1,'tram::Render::LightGraph::LoadFromDisk()'],['../classtram_1_1_render_1_1_material.html#a0a50eea94634fac18b6a8fc13332f9f5',1,'tram::Render::Material::LoadFromDisk()'],['../classtram_1_1_render_1_1_model.html#a10296fe276ff9ac4d87dc9db6451092f',1,'tram::Render::Model::LoadFromDisk()'],['../classtram_1_1_render_1_1_sprite.html#a128d2e728b4a7b035b2a2436ad83a77a',1,'tram::Render::Sprite::LoadFromDisk()'],['../classtram_1_1_audio_1_1_sound_graph.html#ac716178da1e5c588036e57756bbcd76f',1,'tram::Audio::SoundGraph::LoadFromDisk()'],['../classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c',1,'tram::Audio::Sound::LoadFromDisk()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e',1,'tram::Ext::Kitchensink::AttributeContainer::LoadFromDisk()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abe19a06c096ca336b0951e93013675e2',1,'tram::Ext::Kitchensink::Character::LoadFromDisk()']]],\n  ['loadfrommemory_15',['LoadFromMemory',['../classtram_1_1_audio_1_1_sound_graph.html#ad953426922078e22c045f5d04517b650',1,'tram::Audio::SoundGraph::LoadFromMemory()'],['../classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0',1,'tram::Audio::Sound::LoadFromMemory()'],['../classtram_1_1_resource.html#aabc50d5a44a79da0f323e829711a6b0b',1,'tram::Resource::LoadFromMemory()'],['../classtram_1_1_physics_1_1_collision_model.html#a2d4b731dbae6f63ce4f665ccd60a94e0',1,'tram::Physics::CollisionModel::LoadFromMemory()'],['../classtram_1_1_render_1_1_animation.html#a256a3c4dc1998b67c26aab28b7684d9d',1,'tram::Render::Animation::LoadFromMemory()'],['../classtram_1_1_render_1_1_light_graph.html#af1948a05344456f61b7c26f2871c7a91',1,'tram::Render::LightGraph::LoadFromMemory()'],['../classtram_1_1_render_1_1_model.html#a4d4127ce3dd4bd14ca6c2a559137a57e',1,'tram::Render::Model::LoadFromMemory()'],['../classtram_1_1_render_1_1_sprite.html#a1fb88f43158526d7330e36bdbba2f86c',1,'tram::Render::Sprite::LoadFromMemory()'],['../classtram_1_1_render_1_1_material.html#a3006d4a771167841597b0ee169213744',1,'tram::Render::Material::LoadFromMemory()']]],\n  ['loadmaterialinfo_16',['LoadMaterialInfo',['../classtram_1_1_render_1_1_material.html#a5d94a73e4b23271686808101fd33211a',1,'tram::Render::Material']]],\n  ['loadresourcesfromdisk_17',['LoadResourcesFromDisk',['../namespacetram_1_1_async.html#a15485706aae380a728a9e771feabb503',1,'tram::Async']]],\n  ['loadresourcesfrommemory_18',['LoadResourcesFromMemory',['../namespacetram_1_1_async.html#a165152c16b8171d9a4acdfd2d80592de',1,'tram::Async']]],\n  ['loadscript_19',['LoadScript',['../classtram_1_1_script_1_1_interface.html#a133e2307fda40c3d2ab284e809a0f434',1,'tram::Script::Interface::LoadScript()'],['../namespacetram_1_1_script.html#aadbf03d624e136dc8f25ab15c15e9f1a',1,'tram::Script::LoadScript()']]],\n  ['lock_20',['Lock',['../classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864',1,'tram::Spinlock']]],\n  ['lock_21',['lock',['../classtram_1_1_queue.html#a45fae4fa6028c6f6f5c714f9bd88e6b8',1,'tram::Queue']]],\n  ['lockrenderlist_22',['LockRenderlist',['../namespacetram_1_1_audio_1_1_spatial.html#af0ceb28e435bdcb3504d0702785e2ad4',1,'tram::Audio::Spatial']]],\n  ['log_23',['Log',['../namespacetram.html#a78660be0737c048109e94b12da8376c1',1,'tram::Log(Severity severity, System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)'],['../namespacetram.html#ab55eb49c2df70f400895dab88b146d00',1,'tram::Log(System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)'],['../namespacetram.html#a1d9753464d0d21a28f513716fa797cd8',1,'tram::Log(const std::string_view &amp;format, Args &amp;&amp;... args)']]],\n  ['log_24',['log',['../namespacetram_1_1implementation.html#a9e18832774c9a92e285eeb0cfa84d64d',1,'tram::implementation::log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format)'],['../namespacetram_1_1implementation.html#aaddb11c3ce07c8bbb6e9dc206f13fff3',1,'tram::implementation::log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view &amp;format, T &amp;value, Args &amp;&amp;... args)']]],\n  ['lookupenvironmentmap_25',['LookupEnvironmentMap',['../classtram_1_1_render_1_1_light_graph.html#a0c98cd60f1386f73c654536c70147351',1,'tram::Render::LightGraph']]],\n  ['lookupfilter_26',['LookupFilter',['../classtram_1_1_audio_1_1_sound_graph.html#a3d22cc051810eba6e6e9bcc88191e67f',1,'tram::Audio::SoundGraph']]],\n  ['lookupharmonic_27',['LookupHarmonic',['../classtram_1_1_render_1_1_light_graph.html#ad506de9dafeee1b2e44727ac031f0d4a',1,'tram::Render::LightGraph']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_c.js",
    "content": "var searchData=\n[\n  ['main_0',['main',['../main_8cpp.html#a217dbf8b442f20279ea00b898af96f52',1,'main.cpp']]],\n  ['mainloop_1',['mainloop',['../main_8cpp.html#a896df4ffe3f986ad843e4d191cd712b3',1,'main.cpp']]],\n  ['make_2',['make',['../classtram_1_1_component.html#a677f4c2d5457aa376fba89d95f3ca8c9',1,'tram::Component::make()'],['../classtram_1_1_event_listener.html#ad0763adada010c84064f47422fce20ec',1,'tram::EventListener::make(event_t event, Entity *parent)'],['../classtram_1_1_event_listener.html#a53f1f1eb7860d9f8e2138c0b605cbefc',1,'tram::EventListener::make(event_t event, EntityComponent *parent)'],['../classtram_1_1_event_listener.html#afabda0702b19ce175e7603c6e3624ea1',1,'tram::EventListener::make(event_t event, void(*handler)(Event &amp;event))']]],\n  ['make_3',['Make',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#ace7ea2819350d9638a0980f288c62416',1,'tram::Ext::Kitchensink::AIPackage::Make()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f',1,'tram::Ext::Kitchensink::DialogTopic::Make()'],['../classtram_1_1_entity.html#a5bde1559d6170dca943fa7f41dde7ea9',1,'tram::Entity::Make(name_t type, File *file)'],['../classtram_1_1_entity.html#a357bb17d489c2f456994c1fa4150f333',1,'tram::Entity::Make(name_t type, const SharedEntityData &amp;, const ValueArray &amp;)'],['../classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c',1,'tram::Transition::Make()'],['../classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041',1,'tram::WorldCell::Make()'],['../classtram_1_1_render_1_1_material.html#a25c1c97007d7229c7adb8a4e9986e70d',1,'tram::Render::Material::Make()'],['../namespacetram_1_1_scriptable_type.html#a69a13c0e50a7af34965201fdee75210b',1,'tram::ScriptableType::Make()']]],\n  ['makeaudiobuffer_4',['MakeAudioBuffer',['../namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0',1,'tram::Audio::API']]],\n  ['makeaudiosource_5',['MakeAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b',1,'tram::Audio::API']]],\n  ['makecollisionshape_6',['MakeCollisionShape',['../namespacetram_1_1_physics_1_1_a_p_i.html#a871da86313d2f9e88539c71940ac8e89',1,'tram::Physics::API::MakeCollisionShape(CollisionShape shape)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a94cd3fb5de4826d7e83dd17450d30612',1,'tram::Physics::API::MakeCollisionShape(CollisionShapeTransform *shapes, size_t shape_count)']]],\n  ['makelight_7',['MakeLight',['../namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85',1,'tram::Render::API']]],\n  ['makematerial_8',['MakeMaterial',['../namespacetram_1_1_render_1_1_a_p_i.html#afaefcc84f8bd511adca07903dd4cd276',1,'tram::Render::API']]],\n  ['makenewerrormodel_9',['MakeNewErrorModel',['../namespacetram_1_1_render.html#a7e7fe9a01e4909b61222ad2214175b8e',1,'tram::Render']]],\n  ['makenewerrortexture_10',['MakeNewErrorTexture',['../namespacetram_1_1_render.html#a1ebeba7bcc783c32d08b2948d2640a37',1,'tram::Render']]],\n  ['makepattern_11',['MakePattern',['../classtram_1_1_render_1_1_material.html#acfdd1c7fb5e2c4057855d2dcf7ee75a7',1,'tram::Render::Material']]],\n  ['makerigidbody_12',['MakeRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a5e1dea21d1c0aa5c2f2eec460c9be277',1,'tram::Physics::API']]],\n  ['makesomesourcepaths_13',['MakeSomeSourcePaths',['../namespacetram_1_1_audio_1_1_spatial.html#ac07a5c7f91a197dfdd8544a505a71576',1,'tram::Audio::Spatial']]],\n  ['makespans_14',['MakeSpans',['../namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869',1,'tram::Render::API']]],\n  ['maketrigger_15',['MakeTrigger',['../namespacetram_1_1_physics_1_1_a_p_i.html#a2268940df819b4cd3a4cf431515ac19d',1,'tram::Physics::API']]],\n  ['makeuniformbuffer_16',['MakeUniformBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#abe7ed6af822251d71e03add10aa5c14e',1,'tram::Render::API']]],\n  ['marker_17',['Marker',['../classtram_1_1_marker.html#a1c59918f30d773f92bdea30840ef63a1',1,'tram::Marker']]],\n  ['material_18',['Material',['../classtram_1_1_render_1_1_material.html#a5174425b4875181d93adc3926d2d7441',1,'tram::Render::Material::Material(name_t name)'],['../classtram_1_1_render_1_1_material.html#a7953b137f0390f6e729efe9e9cf86aa3',1,'tram::Render::Material::Material(name_t name, materialtype_t type)']]],\n  ['mergeaabbmax_19',['MergeAABBMax',['../classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291',1,'tram::AABBTree::MergeAABBMax()'],['../namespacetram.html#ad77ebd7184cb4042cd3f12789f7f6888',1,'tram::MergeAABBMax()']]],\n  ['mergeaabbmin_20',['MergeAABBMin',['../classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609',1,'tram::AABBTree::MergeAABBMin()'],['../namespacetram.html#a47d29b14ffc788f302abead903c46544',1,'tram::MergeAABBMin()']]],\n  ['mesh_21',['Mesh',['../structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096',1,'tram::Physics::CollisionShape']]],\n  ['messagehandler_22',['MessageHandler',['../classtram_1_1_crate.html#af7343196750b22c09851f50d779faa86',1,'tram::Crate::MessageHandler()'],['../classtram_1_1_decoration.html#a9d89648397f17f989b157f3981f4d41f',1,'tram::Decoration::MessageHandler()'],['../classtram_1_1_light.html#ac45d1bc54463861a0b9919b8eca264aa',1,'tram::Light::MessageHandler()'],['../classtram_1_1_marker.html#ae890d19a9b46205c1be064f6c08291df',1,'tram::Marker::MessageHandler()'],['../classtram_1_1_player.html#ae00d494c1e34cc0387008e94ac6863a2',1,'tram::Player::MessageHandler()'],['../classtram_1_1_scriptable.html#abfdd163bed725d0adf7a42efcba0d200',1,'tram::Scriptable::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a7b9229167dc5e4e523673d81b715950f',1,'tram::Ext::Kitchensink::TriggerAutosave::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#ad528676eb4cc1bee09c8d61b18a60e49',1,'tram::Ext::Kitchensink::TriggerHurt::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#aea523f5b59a0d9495f264dfc46a11d77',1,'tram::Ext::Kitchensink::TriggerOnce::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a13c6b811f951816a92465949a34c3932',1,'tram::Ext::Kitchensink::Pickup::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ae2325d13d9f15bca5e4cac7111f95bab',1,'tram::Ext::Kitchensink::Train::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a82504fffe38ba4dbecd3ea108d6b23ef',1,'tram::Ext::Kitchensink::Water::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#aee0cec5c3827047160688f550eb3a9f4',1,'tram::Ext::Kitchensink::Breakable::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a7ffa11cb9e77ee441e75c12c776daf2d',1,'tram::Ext::Kitchensink::Button::MessageHandler()'],['../classtram_1_1_trigger.html#a6fba995382f75a47579141e409b6c4c2',1,'tram::Trigger::MessageHandler()'],['../classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb',1,'tram::Entity::MessageHandler()'],['../classtram_1_1_sound.html#afaf38811530319b1021f29e07f1b02c9',1,'tram::Sound::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a3db61b3a8693e5b27a5be2f811d2dff0',1,'tram::Ext::Kitchensink::DebugShape::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_quest_entity.html#a1fe119992afcc7629ca0395f40b6a78b',1,'tram::Ext::Kitchensink::QuestEntity::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a2f2b494dec320ccfe9a8c11dee242053',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ab3a96a3bea79e5de1e4db4b958d82450',1,'tram::Ext::Kitchensink::DebugText::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a3bbf1ab021f484e52d3c54f6c64cf2fd',1,'tram::Ext::Kitchensink::TriggerTeleport::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a361107230fc5fd0c1193cf0dfcd3f9ef',1,'tram::Ext::Kitchensink::TriggerRemove::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a16e84722dd3f82b8d31241c7a61adba7',1,'tram::Ext::Kitchensink::TriggerPush::MessageHandler()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#afba3b0305dadaadb47d03e299d5feed0',1,'tram::Ext::Kitchensink::TriggerMultiple::MessageHandler()'],['../classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38',1,'tram::StaticWorldObject::MessageHandler()']]],\n  ['model_23',['Model',['../classtram_1_1_render_1_1_model.html#a9b316fb88f81c47f0af41604333df822',1,'tram::Render::Model']]],\n  ['move_24',['Move',['../classtram_1_1_controller_component.html#a72c9c834cd28d9c7cdbd16e48d6146f6',1,'tram::ControllerComponent::Move()'],['../classtram_1_1_f_p_s_controller_component.html#ac47fe6964c8f7590a92f8fa5be91c825',1,'tram::FPSControllerComponent::Move()'],['../classtram_1_1_raycast_controller_component.html#a535ed363eec2dcf7f8232aeb1f594fb0',1,'tram::RaycastControllerComponent::Move()']]],\n  ['moveto_25',['MoveTo',['../classtram_1_1_ext_1_1_kitchensink_1_1_dialog_controller.html#a63a0067b174a312d9f08a935f86f1226',1,'tram::Ext::Kitchensink::DialogController']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_d.js",
    "content": "var searchData=\n[\n  ['navmesh_0',['Navmesh',['../classtram_1_1_navmesh.html#a17689cf25d70bd126c147747daa8c559',1,'tram::Navmesh']]],\n  ['new_1',['New',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html#abe28a6894e388eb7ab8894278211222c',1,'tram::Ext::Kitchensink::InventoryManager::New()'],['../classtram_1_1_pool_proxy.html#a799c01c3a6c1648adb02038baff3e30a',1,'tram::PoolProxy::New()']]],\n  ['newline_2',['NewLine',['../namespacetram_1_1_g_u_i.html#a76d6631e615a2c8e9fb923d034b92507',1,'tram::GUI']]],\n  ['newnode_3',['NewNode',['../classtram_1_1_octree.html#a6d0d4f09bc8a2edd9abe38415e91bcc8',1,'tram::Octree']]],\n  ['no_5fquote_4',['no_quote',['../structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47',1,'tram::UID']]],\n  ['not_5',['Not',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d',1,'tram::Ext::Kitchensink::QuestVariable']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_e.js",
    "content": "var searchData=\n[\n  ['objective_0',['Objective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['octree_1',['Octree',['../classtram_1_1_octree.html#a2d86fab3ff9590542faa44a542e90a30',1,'tram::Octree']]],\n  ['onadded_2',['OnAdded',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2018e6ddb7b0daa520a7dc275bb3a8f0',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onequip_3',['OnEquip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a871da89199081aeee3bc4b351764c5fb',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onidle_4',['OnIdle',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5605b4cce1b10ffb337f7e4d746034e2',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onprimaryaction_5',['OnPrimaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a8dc131c2ab76acccbc139c941193dbde',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onremoved_6',['OnRemoved',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2ebc7201376c73944e667f90e69e527d',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onsecondaryaction_7',['OnSecondaryAction',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a2e7fd99ac987efb75922a0ac3d1bfd6d',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['onunequip_8',['OnUnequip',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#aed8df724d985ebd66f934bf3bdc00b18',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['operator_20bool_9',['operator bool',['../classtram_1_1_component.html#ac42050ff047751f66c1549099461d047',1,'tram::Component::operator bool()'],['../classtram_1_1_event_listener.html#a470747c16eea957d442a15279c4d1ad4',1,'tram::EventListener::operator bool()'],['../classtram_1_1_resource_proxy.html#aa6e978c36ec5f1eafd43563e75d5e071',1,'tram::ResourceProxy::operator bool()'],['../structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d',1,'tram::UID::operator bool()'],['../classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520',1,'tram::Value::operator bool()'],['../classtram_1_1_pool_ptr.html#ad9256249e1bdc3d11359e8916dfe25c2',1,'tram::PoolPtr::operator bool()']]],\n  ['operator_20bool_20_2a_10',['operator bool *',['../classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4',1,'tram::ValuePtr']]],\n  ['operator_20char_20const_20_2a_11',['operator char const *',['../structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9',1,'tram::UID']]],\n  ['operator_20const_20char_20_2a_12',['operator const char *',['../classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe',1,'tram::Value']]],\n  ['operator_20const_20char_20_2a_2a_13',['operator const char **',['../classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967',1,'tram::ValuePtr']]],\n  ['operator_20double_14',['operator double',['../classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470',1,'tram::Value']]],\n  ['operator_20float_15',['operator float',['../classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0',1,'tram::Value']]],\n  ['operator_20float_20_2a_16',['operator float *',['../classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b',1,'tram::ValuePtr']]],\n  ['operator_20int16_5ft_17',['operator int16_t',['../classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f',1,'tram::Value']]],\n  ['operator_20int32_5ft_18',['operator int32_t',['../classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69',1,'tram::Value']]],\n  ['operator_20int32_5ft_20_2a_19',['operator int32_t *',['../classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86',1,'tram::ValuePtr']]],\n  ['operator_20int64_5ft_20',['operator int64_t',['../classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85',1,'tram::Value']]],\n  ['operator_20int8_5ft_21',['operator int8_t',['../classtram_1_1_value.html#aa919d5718da818826402272ff33bf164',1,'tram::Value']]],\n  ['operator_20name_5ft_22',['operator name_t',['../classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9',1,'tram::Value']]],\n  ['operator_20name_5ft_20_2a_23',['operator name_t *',['../classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5',1,'tram::ValuePtr']]],\n  ['operator_20quat_24',['operator quat',['../classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2',1,'tram::Value']]],\n  ['operator_20quat_20_2a_25',['operator quat *',['../classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0',1,'tram::ValuePtr']]],\n  ['operator_20t_26',['operator T',['../structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0',1,'tram::Settings::Property']]],\n  ['operator_20t_2a_27',['operator T*',['../classtram_1_1_component.html#a53f799110efd1ab0687820f197916abd',1,'tram::Component']]],\n  ['operator_20uint16_5ft_28',['operator uint16_t',['../classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748',1,'tram::Value']]],\n  ['operator_20uint32_5ft_29',['operator uint32_t',['../classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154',1,'tram::Value']]],\n  ['operator_20uint32_5ft_20_2a_30',['operator uint32_t *',['../classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7',1,'tram::ValuePtr']]],\n  ['operator_20uint64_5ft_31',['operator uint64_t',['../classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577',1,'tram::Value']]],\n  ['operator_20uint8_5ft_32',['operator uint8_t',['../classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987',1,'tram::Value']]],\n  ['operator_20value_33',['operator Value',['../classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8',1,'tram::ValuePtr']]],\n  ['operator_20vec2_34',['operator vec2',['../classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175',1,'tram::Value']]],\n  ['operator_20vec2_20_2a_35',['operator vec2 *',['../classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108',1,'tram::ValuePtr']]],\n  ['operator_20vec3_36',['operator vec3',['../classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45',1,'tram::Value']]],\n  ['operator_20vec3_20_2a_37',['operator vec3 *',['../classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45',1,'tram::ValuePtr']]],\n  ['operator_20vec4_38',['operator vec4',['../classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189',1,'tram::Value']]],\n  ['operator_20vec4_20_2a_39',['operator vec4 *',['../classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063',1,'tram::ValuePtr']]],\n  ['operator_2a_40',['operator*',['../classtram_1_1_pool_ptr.html#aab24751b40c889dac6e66c78bdb4adbb',1,'tram::PoolPtr::operator*()'],['../classtram_1_1_component.html#aa83c13894934e104f7b7fb9f95a2864e',1,'tram::Component::operator*()'],['../classtram_1_1_resource_proxy.html#a40da59b39b0d3b1467775c655d06007b',1,'tram::ResourceProxy::operator*()'],['../structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf',1,'tram::Pool::iterator::operator*() const']]],\n  ['operator_2b_2b_41',['operator++',['../structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302',1,'tram::Pool::iterator::operator++(int)'],['../structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8',1,'tram::Pool::iterator::operator++()']]],\n  ['operator_2d_3e_42',['operator-&gt;',['../classtram_1_1_component.html#a7867337d41058f8bdd955736e2ba1127',1,'tram::Component::operator-&gt;()'],['../classtram_1_1_resource_proxy.html#a12bcf3a4db3fb67fbfbca4e904fe6e11',1,'tram::ResourceProxy::operator-&gt;()'],['../structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb',1,'tram::Pool::iterator::operator-&gt;()'],['../classtram_1_1_pool_ptr.html#a6d00d265dff562e8bba6d9712d26006e',1,'tram::PoolPtr::operator-&gt;()']]],\n  ['operator_3d_43',['operator=',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b',1,'tram::Ext::Kitchensink::QuestVariable::operator=()'],['../classtram_1_1_resource_proxy.html#ae9b5619de08c190d93c0cf7aa9736df9',1,'tram::ResourceProxy::operator=()'],['../structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e',1,'tram::UID::operator=()'],['../classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889',1,'tram::Value::operator=()']]],\n  ['operator_3d_3d_44',['operator==',['../structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823',1,'tram::UID::operator==(const UID &amp;other) const'],['../structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587',1,'tram::UID::operator==(const char *other) const'],['../classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3',1,'tram::Value::operator==()']]],\n  ['operator_5b_5d_45',['operator[]',['../classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952',1,'tram::ValueArray::operator[]()'],['../classtram_1_1_hashmap.html#a16e686d27f2c5d67800e40fa01f2d97d',1,'tram::Hashmap::operator[](UID key)'],['../classtram_1_1_hashmap.html#a2a1f0c5b852df8b670b19293784c75ff',1,'tram::Hashmap::operator[](uint32_t key)'],['../classtram_1_1_pool.html#ad3e5247f51702e2e59fd5b62436f326c',1,'tram::Pool::operator[]()']]],\n  ['options_46',['Options',['../classtram_1_1_ext_1_1_menu_1_1_options.html#a11552024ef3e7976cf5b0fbcbbd63d22',1,'tram::Ext::Menu::Options']]],\n  ['or_47',['Or',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['string_48',['string',['../structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801',1,'tram::UID']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/functions_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"functions_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/functions_f.js",
    "content": "var searchData=\n[\n  ['packvertexbuffer_0',['PackVertexBuffer',['../namespacetram_1_1_render_1_1_a_p_i.html#ac9c8b1770aeeff3ea24c789c104551ae',1,'tram::Render::API']]],\n  ['packvertices_1',['PackVertices',['../namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51',1,'tram::Render::API']]],\n  ['parse_2',['Parse',['../namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456',1,'tram::Settings']]],\n  ['parseformat_3',['ParseFormat',['../namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424',1,'tram::Render::API']]],\n  ['particlecomponent_4',['ParticleComponent',['../classtram_1_1_particle_component.html#a53990e83ab645269af4e740d72d6914b',1,'tram::ParticleComponent']]],\n  ['path_5',['Path',['../classtram_1_1_path.html#a9a0e7ff4de05db6ced2dd6ef0e1a2d75',1,'tram::Path']]],\n  ['pathaction_6',['PathAction',['../classtram_1_1_physics_1_1_path_action.html#a22e23ed7cfd09968f5bc0663befd1d9c',1,'tram::Physics::PathAction']]],\n  ['pathfollower_7',['PathFollower',['../classtram_1_1_path_follower.html#a86f5375b9ad4e9ee064df8782c357b49',1,'tram::PathFollower']]],\n  ['pause_8',['Pause',['../classtram_1_1_animation_component.html#a752f8c4d9982c2a406e80597a85158cd',1,'tram::AnimationComponent::Pause()'],['../classtram_1_1_audio_component.html#ad8d20d0b929c8ac8666d80dac82ce0df',1,'tram::AudioComponent::Pause()'],['../classtram_1_1_sprite_component.html#a83f36a6e77225ccb7fd60f0f70f78972',1,'tram::SpriteComponent::Pause()']]],\n  ['pauseaudiosource_9',['PauseAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590',1,'tram::Audio::API']]],\n  ['perform_10',['Perform',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4',1,'tram::Ext::Kitchensink::DialogAction']]],\n  ['perspectivedivision_11',['PerspectiveDivision',['../namespacetram_1_1_render_1_1_a_p_i.html#a437320a39ddec40f81acdc942eeb9940',1,'tram::Render::API::PerspectiveDivision(vec4 &amp;p0, vec4 &amp;p1)'],['../namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8',1,'tram::Render::API::PerspectiveDivision(vec4 &amp;p)']]],\n  ['physicscomponent_12',['PhysicsComponent',['../classtram_1_1_physics_component.html#ae945e9f6b3d40e2fd3764a6f9ccd8f3d',1,'tram::PhysicsComponent']]],\n  ['pickup_13',['Pickup',['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#aa14c29d40df5968c605f63bdd03cd3d0',1,'tram::Ext::Kitchensink::Pickup']]],\n  ['play_14',['Play',['../classtram_1_1_animation_component.html#ae64dafa0a2ea87a033e0fa4bd342f5ad',1,'tram::AnimationComponent::Play()'],['../classtram_1_1_audio_component.html#a46dea84e302ded4f9d1cb4a19a15a4fd',1,'tram::AudioComponent::Play()'],['../classtram_1_1_sprite_component.html#af3bb6eacd3c918f5c227840bcea5f4e1',1,'tram::SpriteComponent::Play()']]],\n  ['playaudiosource_15',['PlayAudioSource',['../namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5',1,'tram::Audio::API']]],\n  ['player_16',['Player',['../classtram_1_1_player.html#a54576337a20fd6e5f753a1e9716900b7',1,'tram::Player::Player()'],['../classtram_1_1_player.html#a96db3f6f72ef25251dced6d52448fbe7',1,'tram::Player::Player(name_t)']]],\n  ['playercomponent_17',['PlayerComponent',['../classtram_1_1_player_component.html#ae5e66423537fa62170701cbf69c2882f',1,'tram::PlayerComponent']]],\n  ['playsound_18',['PlaySound',['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86',1,'tram::Ext::Kitchensink::SoundTable::PlaySound(SoundAction type)'],['../classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ad31116a4938a4f571022d9c33eeae03d',1,'tram::Ext::Kitchensink::SoundTable::PlaySound(SoundAction type, vec3 position, float volume)']]],\n  ['pointoutsidebottomplane_19',['PointOutsideBottomPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58',1,'tram::Render::API']]],\n  ['pointoutsidefarplane_20',['PointOutsideFarPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065',1,'tram::Render::API']]],\n  ['pointoutsideleftplane_21',['PointOutsideLeftPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242',1,'tram::Render::API']]],\n  ['pointoutsidenearplane_22',['PointOutsideNearPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46',1,'tram::Render::API']]],\n  ['pointoutsiderightplane_23',['PointOutsideRightPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b',1,'tram::Render::API']]],\n  ['pointoutsidetopplane_24',['PointOutsideTopPlane',['../namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db',1,'tram::Render::API']]],\n  ['pointvisible_25',['PointVisible',['../namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa',1,'tram::Render::API']]],\n  ['poll_26',['Poll',['../classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20',1,'tram::TriggerComponent']]],\n  ['pollkeyboardaxis_27',['PollKeyboardAxis',['../namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc',1,'tram::UI']]],\n  ['pollkeyboardaxisdelta_28',['PollKeyboardAxisDelta',['../namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1',1,'tram::UI']]],\n  ['pollkeyboardkey_29',['PollKeyboardKey',['../namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef',1,'tram::UI']]],\n  ['pool_30',['Pool',['../classtram_1_1_pool.html#a57e13a9a51ca187af45f052b3d70b17f',1,'tram::Pool::Pool(const char *name, uint64_t initialSize)'],['../classtram_1_1_pool.html#a0650ba8f22b8180249c5a9050256f979',1,'tram::Pool::Pool(const char *name, uint64_t initialSize, std::initializer_list&lt; T &gt; list)']]],\n  ['pool_31',['pool',['../classtram_1_1_pool_proxy.html#aedcb7d9eceb53a8a1495741d098658c1',1,'tram::PoolProxy::pool(&quot;Sound Resource pool&quot;, RESOURCE_LIMIT_SOUND)'],['../classtram_1_1_pool_proxy.html#ab37438f9460b4f23ed37fa5c751e5d92',1,'tram::PoolProxy::pool(&quot;AnimationComponent pool&quot;, COMPONENT_LIMIT_ANIMATION)'],['../classtram_1_1_pool_proxy.html#a132113c7cf9888dcf791d1bdae86a4ce',1,'tram::PoolProxy::pool(&quot;AudioComponent pool&quot;, COMPONENT_LIMIT_AUDIO)'],['../classtram_1_1_pool_proxy.html#a15a62f52369603f61fda4a0c3aab3453',1,'tram::PoolProxy::pool(&quot;FPSControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)'],['../classtram_1_1_pool_proxy.html#a8c8f705895edd3f1ef5416a39dcfb289',1,'tram::PoolProxy::pool(&quot;RaycastControllerComponent pool&quot;, COMPONENT_LIMIT_CONTROLLER)'],['../classtram_1_1_pool_proxy.html#a87680b64deb218fbd3c991fe36e45449',1,'tram::PoolProxy::pool(&quot;DecalComponent pool&quot;, COMPONENT_LIMIT_DECAL)'],['../classtram_1_1_pool_proxy.html#afd8b1fb3154ba576098996c425b8008b',1,'tram::PoolProxy::pool(&quot;LightComponent pool&quot;, COMPONENT_LIMIT_LIGHT)'],['../classtram_1_1_pool_proxy.html#ab583e428b551012df0fe5d86e0787c23',1,'tram::PoolProxy::pool(&quot;ParticleComponent pool&quot;, COMPONENT_LIMIT_PARTICLE)'],['../classtram_1_1_pool_proxy.html#af892e1cc1c5b55d1de83b23a7f6acd7a',1,'tram::PoolProxy::pool(&quot;PhysicsComponent pool&quot;, COMPONENT_LIMIT_PHYSICS)'],['../classtram_1_1_pool_proxy.html#adec8cf47dae0c2c7dbcac50b62c4b4ce',1,'tram::PoolProxy::pool(&quot;PlayerComponent pool&quot;, COMPONENT_LIMIT_PLAYER)'],['../classtram_1_1_pool_proxy.html#a17815902e003552d6c1843f655b50606',1,'tram::PoolProxy::pool(&quot;RenderComponent pool&quot;, COMPONENT_LIMIT_RENDER)'],['../classtram_1_1_pool_proxy.html#abb5ee08a098040647676affc6c7f23de',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::Faction Pool&quot;, FACTION_COUNT)'],['../classtram_1_1_pool_proxy.html#a12f234e6bf9f9403ee4efb999a2a2a09',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::AttributeContainer Pool&quot;, ATTRIBUTE_CONTAINER_COUNT)'],['../classtram_1_1_pool_proxy.html#a6b9f8209e7c3b8eea4675f06acb65b0c',1,'tram::PoolProxy::pool(&quot;AnimationTable pool&quot;, EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT)'],['../classtram_1_1_pool_proxy.html#af9f3b37524524346fdc58b79b3b0a148',1,'tram::PoolProxy::pool(&quot;ai_agent_list pool&quot;, 100)'],['../classtram_1_1_pool_proxy.html#a605e61fa1ef7ff0fa4ca51f4a351bb09',1,'tram::PoolProxy::pool(&quot;TriggerComponent pool&quot;, COMPONENT_LIMIT_TRIGGER)'],['../classtram_1_1_pool_proxy.html#a549d35aabd0230f175b2f78681c55408',1,'tram::PoolProxy::pool(&quot;SpriteComponent pool&quot;, COMPONENT_LIMIT_SPRITE)'],['../classtram_1_1_pool_proxy.html#ae60e28486ed4752fdb1c22baa4ea81b2',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::Character Pool&quot;, CHARACTER_COUNT)'],['../classtram_1_1_pool_proxy.html#ab758ff8edc0858676caf8051a77d8408',1,'tram::PoolProxy::pool(&quot;Ext::Kitchensink::CharacterClass Pool&quot;, CLASS_COUNT)'],['../classtram_1_1_pool_proxy.html#ae158206e9edb5f68852a8b43972f3991',1,'tram::PoolProxy::pool(&quot;SoundTable pool&quot;, EXT_KITCHENSINK_SOUNDTABLE_LIMIT)'],['../classtram_1_1_pool_proxy.html#af8e4dd501fdaba304cc75fab9d0122f9',1,'tram::PoolProxy::pool(&quot;navmesh pool&quot;, 100)'],['../classtram_1_1_pool_proxy.html#a9ccc00cffda0d7145eafd0200ce096e5',1,'tram::PoolProxy::pool(&quot;Path pool&quot;, RESOURCE_LIMIT_PATH)'],['../classtram_1_1_pool_proxy.html#a723d321955d74db634af0e4ab271b83c',1,'tram::PoolProxy::pool(&quot;worldcelltransition pool&quot;, WORLDCELL_TRANSITION_LIMIT)'],['../classtram_1_1_pool_proxy.html#ab9460e6c8698b9c98ce783f162632258',1,'tram::PoolProxy::pool(&quot;Worldcell pool&quot;, WORLDCELL_LIMIT)'],['../classtram_1_1_pool_proxy.html#a8c9901a9a4d72574c76864140ba646f6',1,'tram::PoolProxy::pool(&quot;GLDrawListEntry pool&quot;, 1000)'],['../classtram_1_1_pool_proxy.html#a120a8282dfe1622b41d36f70ff239fc8',1,'tram::PoolProxy::pool(&quot;GLLight pool&quot;, COMPONENT_LIMIT_LIGHT, {tram::Render::API::GLLight{}})'],['../classtram_1_1_pool_proxy.html#aa4966ced53d457eaf4047aada15c0ddd',1,'tram::PoolProxy::pool(&quot;GLMaterial pool&quot;, RESOURCE_LIMIT_MATERIAL)']]],\n  ['poolptr_32',['PoolPtr',['../classtram_1_1_pool_ptr.html#adffa17bd2f9d7fd2242ed255a7832324',1,'tram::PoolPtr']]],\n  ['pop_33',['pop',['../classtram_1_1_queue.html#aa2211c6ebb109da351fbc179fa8ea03b',1,'tram::Queue::pop()'],['../classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841',1,'tram::Stack::pop()']]],\n  ['pop_34',['Pop',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#a06f962abc8aeb9e7782cbd637d56f0fd',1,'tram::Ext::Menu::Menu']]],\n  ['popframe_35',['PopFrame',['../namespacetram_1_1_g_u_i.html#a76a6d727998bc4ad99cd754ca2cf54a0',1,'tram::GUI']]],\n  ['popframekeepcursor_36',['PopFrameKeepCursor',['../namespacetram_1_1_g_u_i.html#a53e9477d97918587d29a2b44a378dcbf',1,'tram::GUI']]],\n  ['positionrotationscaletomatrix_37',['PositionRotationScaleToMatrix',['../namespacetram.html#a9d150b4b732715b4989afe480bb3ef98',1,'tram']]],\n  ['positionrotationtomatrix_38',['PositionRotationToMatrix',['../namespacetram.html#ab488668dddf5085ed2f05fef803dba33',1,'tram']]],\n  ['post_39',['Post',['../structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774',1,'tram::Event']]],\n  ['print_40',['Print',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146',1,'tram::AABBTree::Node']]],\n  ['process_41',['Process',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#aefe04093df4daf73c85b271413d19868',1,'tram::Ext::Kitchensink::AIPackage']]],\n  ['project_42',['Project',['../namespacetram_1_1_render.html#a67eb4708222066d5a516c5eff9a14fa7',1,'tram::Render::Project()'],['../classtram_1_1_path_follower.html#ada75b25602de0ccf13cc6a3c46885132',1,'tram::PathFollower::Project()']]],\n  ['projectinverse_43',['ProjectInverse',['../namespacetram_1_1_render.html#afe4a18573155f61186484e55955c6dac',1,'tram::Render']]],\n  ['projectline_44',['ProjectLine',['../namespacetram.html#afb93166d174dd8e63b4ea02836446b11',1,'tram']]],\n  ['property_45',['Property',['../structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad',1,'tram::Settings::Property::Property(const T &amp;value)'],['../structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3',1,'tram::Settings::Property::Property(std::initializer_list&lt; value_t &gt; values)']]],\n  ['push_46',['push',['../classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588',1,'tram::Stack::push()'],['../classtram_1_1_queue.html#a85bfdb354ca6e34201d6554bc541bfe1',1,'tram::Queue::push()']]],\n  ['push_47',['Push',['../classtram_1_1_ext_1_1_menu_1_1_menu.html#afaf4c154f0f256b684b9ca9a7d7f057f',1,'tram::Ext::Menu::Menu::Push()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aa8590467f7d1239c7e12e07a63ee0012',1,'tram::Ext::Kitchensink::AIAgent::Push()'],['../classtram_1_1_physics_component.html#af5569e651b77b56a659f4b3a988f04b1',1,'tram::PhysicsComponent::Push(vec3 direction, vec3 local_position)'],['../classtram_1_1_physics_component.html#a056cae53c34b56b074f364251ca545e4',1,'tram::PhysicsComponent::Push(vec3 direction)'],['../classtram_1_1_f_p_s_controller_component.html#a178afe3b43f00f0a289a19d2fe323d9c',1,'tram::FPSControllerComponent::Push()'],['../classtram_1_1_controller_component.html#a85d0688b2477652353b92a7662fdc36a',1,'tram::ControllerComponent::Push()'],['../classtram_1_1_raycast_controller_component.html#a8780bc5e7bb5938ba85b7a2ae950dff4',1,'tram::RaycastControllerComponent::Push()']]],\n  ['pushframe_48',['PushFrame',['../namespacetram_1_1_g_u_i.html#abbe4fc88597f2b5171c105e74bcf8301',1,'tram::GUI']]],\n  ['pushframerelative_49',['PushFrameRelative',['../namespacetram_1_1_g_u_i.html#a4d59dd004d2a1ae7aed485247d674dc6',1,'tram::GUI']]],\n  ['pushframerelativekeepcursor_50',['PushFrameRelativeKeepCursor',['../namespacetram_1_1_g_u_i.html#a1cde426a98964d4f4780ff78b9663b18',1,'tram::GUI']]],\n  ['pushoverride_51',['PushOverride',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a89181f116b73c484e5b57dbd2152a7c2',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['pushrigidbody_52',['PushRigidbody',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7b6a5a76cb66998131a863a64989aa39',1,'tram::Physics::API::PushRigidbody(rigidbody_t rigidbody, vec3 direction)'],['../namespacetram_1_1_physics_1_1_a_p_i.html#a04c616c8fd1cabe3561bc91f4a084392',1,'tram::Physics::API::PushRigidbody(rigidbody_t rigidbody, vec3 direction, vec3 local)']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/namespaces_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"namespaces_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/namespaces_0.js",
    "content": "var searchData=\n[\n  ['aabb_0',['AABB',['../namespacetram_1_1_render_1_1_a_a_b_b.html',1,'tram::Render']]],\n  ['api_1',['API',['../namespacetram_1_1_audio_1_1_a_p_i.html',1,'tram::Audio::API'],['../namespacetram_1_1_physics_1_1_a_p_i.html',1,'tram::Physics::API'],['../namespacetram_1_1_render_1_1_a_p_i.html',1,'tram::Render::API']]],\n  ['async_2',['Async',['../namespacetram_1_1_async.html',1,'tram']]],\n  ['audio_3',['Audio',['../namespacetram_1_1_audio.html',1,'tram']]],\n  ['camera_4',['Camera',['../namespacetram_1_1_ext_1_1_camera.html',1,'tram::Ext']]],\n  ['core_5',['Core',['../namespacetram_1_1_core.html',1,'tram']]],\n  ['ext_6',['Ext',['../namespacetram_1_1_ext.html',1,'tram']]],\n  ['gui_7',['GUI',['../namespacetram_1_1_g_u_i.html',1,'tram']]],\n  ['implementation_8',['implementation',['../namespacetram_1_1implementation.html',1,'tram']]],\n  ['input_9',['Input',['../namespacetram_1_1_platform_1_1_input.html',1,'tram::Platform']]],\n  ['kitchensink_10',['Kitchensink',['../namespacetram_1_1_ext_1_1_kitchensink.html',1,'tram::Ext']]],\n  ['language_11',['Language',['../namespacetram_1_1_language.html',1,'tram']]],\n  ['lighttree_12',['LightTree',['../namespacetram_1_1_render_1_1_light_tree.html',1,'tram::Render']]],\n  ['loader_13',['Loader',['../namespacetram_1_1_loader.html',1,'tram']]],\n  ['lua_14',['Lua',['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html',1,'tram::Ext::Scripting']]],\n  ['menu_15',['Menu',['../namespacetram_1_1_ext_1_1_menu.html',1,'tram::Ext::Menu'],['../namespacetram_1_1_ext_1_1_menu_1_1_menu.html',1,'tram::Ext::Menu::Menu']]],\n  ['physics_16',['Physics',['../namespacetram_1_1_physics.html',1,'tram']]],\n  ['platform_17',['Platform',['../namespacetram_1_1_platform.html',1,'tram']]],\n  ['render_18',['Render',['../namespacetram_1_1_render.html',1,'tram']]],\n  ['scenetree_19',['SceneTree',['../namespacetram_1_1_render_1_1_scene_tree.html',1,'tram::Render']]],\n  ['script_20',['Script',['../namespacetram_1_1_script.html',1,'tram']]],\n  ['scriptabletype_21',['ScriptableType',['../namespacetram_1_1_scriptable_type.html',1,'tram']]],\n  ['scripting_22',['Scripting',['../namespacetram_1_1_ext_1_1_scripting.html',1,'tram::Ext']]],\n  ['settings_23',['Settings',['../namespacetram_1_1_settings.html',1,'tram']]],\n  ['spatial_24',['Spatial',['../namespacetram_1_1_audio_1_1_spatial.html',1,'tram::Audio']]],\n  ['stats_25',['Stats',['../namespacetram_1_1_stats.html',1,'tram']]],\n  ['system_26',['System',['../namespacetram_1_1_system.html',1,'tram']]],\n  ['tram_27',['tram',['../namespacetram.html',1,'']]],\n  ['ui_28',['UI',['../namespacetram_1_1_u_i.html',1,'tram']]],\n  ['window_29',['Window',['../namespacetram_1_1_platform_1_1_window.html',1,'tram::Platform']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/nomatches.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/pages_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/pages_0.js",
    "content": "var searchData=\n[\n  ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/pages_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"pages_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/pages_1.js",
    "content": "var searchData=\n[\n  ['todo_20list_0',['Todo List',['../todo.html',1,'']]],\n  ['tramway_20sdk_1',['Tramway SDK',['../index.html',1,'']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/properties_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"properties_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/properties_0.js",
    "content": "var searchData=\n[\n  ['property_5fmetal_0',['PROPERTY_METAL',['../classtram_1_1_render_1_1_material.html#a7e3b38b78a8cf0bb37f2bf22281d7928',1,'tram::Render::Material']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_0.js",
    "content": "var searchData=\n[\n  ['animationtable_0',['AnimationTable',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a6aa4df8a5973b3bb06701c7e430ba123',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['finishresources_1',['FinishResources',['../classtram_1_1_entity_component.html#a8f3324eae61258fe34ef99f2b994ac02',1,'tram::EntityComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_1.js",
    "content": "var searchData=\n[\n  ['controllercomponent_0',['ControllerComponent',['../classtram_1_1_f_p_s_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b',1,'tram::FPSControllerComponent::ControllerComponent()'],['../classtram_1_1_raycast_controller_component.html#a9fd3c58ec8707c5995232f089e6ef91b',1,'tram::RaycastControllerComponent::ControllerComponent()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_2.js",
    "content": "var searchData=\n[\n  ['faction_0',['Faction',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#abd70d3fa6043bc857bf6bc4d82805737',1,'tram::Ext::Kitchensink::Character']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_3.js",
    "content": "var searchData=\n[\n  ['operator_21_3d_0',['operator!=',['../structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386',1,'tram::Pool::iterator']]],\n  ['operator_3d_3d_1',['operator==',['../structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356',1,'tram::Pool::iterator']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_4.js",
    "content": "var searchData=\n[\n  ['pathfollower_0',['PathFollower',['../classtram_1_1_path.html#a7c5bae106d82b3014171a0347a70d2a8',1,'tram::Path']]],\n  ['pool_1',['Pool',['../classtram_1_1_animation_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::AnimationComponent::Pool()'],['../classtram_1_1_f_p_s_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::FPSControllerComponent::Pool()'],['../classtram_1_1_raycast_controller_component.html#a49d9babe42ba7f509bcff47a95b2c110',1,'tram::RaycastControllerComponent::Pool()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_5.js",
    "content": "var searchData=\n[\n  ['resourceproxy_0',['ResourceProxy',['../classtram_1_1_entity_component.html#aee6f37c71b1449f8cbbc9522dedbea6d',1,'tram::EntityComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_6.js",
    "content": "var searchData=\n[\n  ['sprite_0',['Sprite',['../classtram_1_1_render_1_1_material.html#a3292175d54d93d126ba2829249316344',1,'tram::Render::Material']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_7.js",
    "content": "var searchData=\n[\n  ['pool_0',['Pool',['../classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6',1,'tram::Audio::Sound']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_8.js",
    "content": "var searchData=\n[\n  ['valueptr_0',['ValuePtr',['../classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e',1,'tram::Value']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/related_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"related_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/related_9.js",
    "content": "var searchData=\n[\n  ['worldcell_0',['WorldCell',['../classtram_1_1_entity.html#a84136aa23993ba45f0745a9d9488ab54',1,'tram::Entity::WorldCell()'],['../classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54',1,'tram::Transition::WorldCell()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/search.css",
    "content": "/*---------------- Search Box */\n\n#MSearchBox {\n    white-space : nowrap;\n    background: white;\n    border-radius: 0.65em;\n    box-shadow: inset 0.5px 0.5px 3px 0px #555;\n    z-index: 102;\n}\n\n#MSearchBox .left {\n    display: inline-block;\n    vertical-align: middle;\n    height: 1.4em;\n}\n\n#MSearchSelect {\n    display: inline-block;\n    vertical-align: middle;\n    height: 19px;\n    padding: 0 0 0 0.3em;\n    margin: 0;\n}\n\n#MSearchField {\n    display: inline-block;\n    vertical-align: middle;\n    width: 7.5em;\n    height: 19px;\n    margin: 0 0.15em;\n    padding: 0;\n    line-height: 1em;\n    border:none;\n    color: #909090;\n    outline: none;\n    font-family: Arial, Verdana, sans-serif;\n    -webkit-border-radius: 0px;\n    border-radius: 0px;\n    background: none;\n}\n\n@media(hover: none) {\n    /* to avoid zooming on iOS */\n    #MSearchField {\n        font-size: 16px;\n    }\n}\n\n#MSearchBox .right {\n    display: inline-block;\n    vertical-align: middle;\n    width: 1.4em;\n    height: 1.4em;\n}\n\n#MSearchClose {\n    display: none;\n    font-size: inherit;\n    background : none;\n    border: none;\n    margin: 0;\n    padding: 0;\n    outline: none;\n\n}\n\n#MSearchCloseImg {\n    height: 1.4em;\n    padding: 0.3em;\n    margin: 0;\n}\n\n.MSearchBoxActive #MSearchField {\n    color: #000000;\n}\n\n#main-menu > li:last-child {\n    /* This <li> object is the parent of the search bar */\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    height: 36px;\n    margin-right: 1em;\n}\n\n/*---------------- Search filter selection */\n\n#MSearchSelectWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #90A5CE;\n    background-color: #F9FAFC;\n    z-index: 10001;\n    padding-top: 4px;\n    padding-bottom: 4px;\n    -moz-border-radius: 4px;\n    -webkit-border-top-left-radius: 4px;\n    -webkit-border-top-right-radius: 4px;\n    -webkit-border-bottom-left-radius: 4px;\n    -webkit-border-bottom-right-radius: 4px;\n    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);\n}\n\n.SelectItem {\n    font: 8pt Arial, Verdana, sans-serif;\n    padding-left:  2px;\n    padding-right: 12px;\n    border: 0px;\n}\n\nspan.SelectionMark {\n    margin-right: 4px;\n    font-family: monospace;\n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem {\n    display: block;\n    outline-style: none;\n    color: #000000; \n    text-decoration: none;\n    padding-left:   6px;\n    padding-right: 12px;\n}\n\na.SelectItem:focus,\na.SelectItem:active {\n    color: #000000; \n    outline-style: none;\n    text-decoration: none;\n}\n\na.SelectItem:hover {\n    color: #FFFFFF;\n    background-color: #3D578C;\n    outline-style: none;\n    text-decoration: none;\n    cursor: pointer;\n    display: block;\n}\n\n/*---------------- Search results window */\n\niframe#MSearchResults {\n    /*width: 60ex;*/\n    height: 15em;\n}\n\n#MSearchResultsWindow {\n    display: none;\n    position: absolute;\n    left: 0; top: 0;\n    border: 1px solid #000;\n    background-color: #EEF1F7;\n    z-index:10000;\n}\n\n/* ----------------------------------- */\n\n\n#SRIndex {\n    clear:both; \n    padding-bottom: 15px;\n}\n\n.SREntry {\n    font-size: 10pt;\n    padding-left: 1ex;\n}\n\n.SRPage .SREntry {\n    font-size: 8pt;\n    padding: 1px 5px;\n}\n\nbody.SRPage {\n    margin: 5px 2px;\n}\n\n.SRChildren {\n    padding-left: 3ex; padding-bottom: .5em \n}\n\n.SRPage .SRChildren {\n    display: none;\n}\n\n.SRSymbol {\n    font-weight: bold; \n    color: #425E97;\n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRScope {\n    display: block;\n    color: #425E97; \n    font-family: Arial, Verdana, sans-serif;\n    text-decoration: none;\n    outline: none;\n}\n\na.SRSymbol:focus, a.SRSymbol:active,\na.SRScope:focus, a.SRScope:active {\n    text-decoration: underline;\n}\n\nspan.SRScope {\n    padding-left: 4px;\n    font-family: Arial, Verdana, sans-serif;\n}\n\n.SRPage .SRStatus {\n    padding: 2px 5px;\n    font-size: 8pt;\n    font-style: italic;\n    font-family: Arial, Verdana, sans-serif;\n}\n\n.SRResult {\n    display: none;\n}\n\ndiv.searchresults {\n    margin-left: 10px;\n    margin-right: 10px;\n}\n\n/*---------------- External search page results */\n\n.searchresult {\n    background-color: #F0F3F8;\n}\n\n.pages b {\n   color: white;\n   padding: 5px 5px 3px 5px;\n   background-image: url(\"../tab_a.png\");\n   background-repeat: repeat-x;\n   text-shadow: 0 1px 1px #000000;\n}\n\n.pages {\n    line-height: 17px;\n    margin-left: 4px;\n    text-decoration: none;\n}\n\n.hl {\n    font-weight: bold;\n}\n\n#searchresults {\n    margin-bottom: 20px;\n}\n\n.searchpages {\n    margin-top: 10px;\n}\n\n"
  },
  {
    "path": "docs/cppapi/search/search.js",
    "content": "/*\n @licstart  The following is the entire license notice for the JavaScript code in this file.\n\n The MIT License (MIT)\n\n Copyright (C) 1997-2020 by Dimitri van Heesch\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software\n and associated documentation files (the \"Software\"), to deal in the Software without restriction,\n including without limitation the rights to use, copy, modify, merge, publish, distribute,\n sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or\n substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n @licend  The above is the entire license notice for the JavaScript code in this file\n */\nfunction convertToId(search)\n{\n  var result = '';\n  for (i=0;i<search.length;i++)\n  {\n    var c = search.charAt(i);\n    var cn = c.charCodeAt(0);\n    if (c.match(/[a-z0-9\\u0080-\\uFFFF]/))\n    {\n      result+=c;\n    }\n    else if (cn<16)\n    {\n      result+=\"_0\"+cn.toString(16);\n    }\n    else\n    {\n      result+=\"_\"+cn.toString(16);\n    }\n  }\n  return result;\n}\n\nfunction getXPos(item)\n{\n  var x = 0;\n  if (item.offsetWidth)\n  {\n    while (item && item!=document.body)\n    {\n      x   += item.offsetLeft;\n      item = item.offsetParent;\n    }\n  }\n  return x;\n}\n\nfunction getYPos(item)\n{\n  var y = 0;\n  if (item.offsetWidth)\n  {\n     while (item && item!=document.body)\n     {\n       y   += item.offsetTop;\n       item = item.offsetParent;\n     }\n  }\n  return y;\n}\n\n/* A class handling everything associated with the search panel.\n\n   Parameters:\n   name - The name of the global variable that will be\n          storing this instance.  Is needed to be able to set timeouts.\n   resultPath - path to use for external files\n*/\nfunction SearchBox(name, resultsPath, label, extension)\n{\n  if (!name || !resultsPath) {  alert(\"Missing parameters to SearchBox.\"); }\n  if (!extension || extension == \"\") { extension = \".html\"; }\n\n  // ---------- Instance variables\n  this.name                  = name;\n  this.resultsPath           = resultsPath;\n  this.keyTimeout            = 0;\n  this.keyTimeoutLength      = 500;\n  this.closeSelectionTimeout = 300;\n  this.lastSearchValue       = \"\";\n  this.lastResultsPage       = \"\";\n  this.hideTimeout           = 0;\n  this.searchIndex           = 0;\n  this.searchActive          = false;\n  this.searchLabel           = label;\n  this.extension             = extension;\n\n  // ----------- DOM Elements\n\n  this.DOMSearchField = function()\n  {  return document.getElementById(\"MSearchField\");  }\n\n  this.DOMSearchSelect = function()\n  {  return document.getElementById(\"MSearchSelect\");  }\n\n  this.DOMSearchSelectWindow = function()\n  {  return document.getElementById(\"MSearchSelectWindow\");  }\n\n  this.DOMPopupSearchResults = function()\n  {  return document.getElementById(\"MSearchResults\");  }\n\n  this.DOMPopupSearchResultsWindow = function()\n  {  return document.getElementById(\"MSearchResultsWindow\");  }\n\n  this.DOMSearchClose = function()\n  {  return document.getElementById(\"MSearchClose\"); }\n\n  this.DOMSearchBox = function()\n  {  return document.getElementById(\"MSearchBox\");  }\n\n  // ------------ Event Handlers\n\n  // Called when focus is added or removed from the search field.\n  this.OnSearchFieldFocus = function(isActive)\n  {\n    this.Activate(isActive);\n  }\n\n  this.OnSearchSelectShow = function()\n  {\n    var searchSelectWindow = this.DOMSearchSelectWindow();\n    var searchField        = this.DOMSearchSelect();\n\n    var left = getXPos(searchField);\n    var top  = getYPos(searchField);\n    top += searchField.offsetHeight;\n\n    // show search selection popup\n    searchSelectWindow.style.display='block';\n    searchSelectWindow.style.left =  left + 'px';\n    searchSelectWindow.style.top  =  top  + 'px';\n\n    // stop selection hide timer\n    if (this.hideTimeout)\n    {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout=0;\n    }\n    return false; // to avoid \"image drag\" default event\n  }\n\n  this.OnSearchSelectHide = function()\n  {\n    this.hideTimeout = setTimeout(this.name +\".CloseSelectionWindow()\",\n                                  this.closeSelectionTimeout);\n  }\n\n  // Called when the content of the search field is changed.\n  this.OnSearchFieldChange = function(evt)\n  {\n    if (this.keyTimeout) // kill running timer\n    {\n      clearTimeout(this.keyTimeout);\n      this.keyTimeout = 0;\n    }\n\n    var e  = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 || e.keyCode==13)\n    {\n      if (e.shiftKey==1)\n      {\n        this.OnSearchSelectShow();\n        var win=this.DOMSearchSelectWindow();\n        for (i=0;i<win.childNodes.length;i++)\n        {\n          var child = win.childNodes[i]; // get span within a\n          if (child.className=='SelectItem')\n          {\n            child.focus();\n            return;\n          }\n        }\n        return;\n      }\n      else\n      {\n        window.frames.MSearchResults.postMessage(\"take_focus\", \"*\");\n      }\n    }\n    else if (e.keyCode==27) // Escape out of the search field\n    {\n      this.DOMSearchField().blur();\n      this.DOMPopupSearchResultsWindow().style.display = 'none';\n      this.DOMSearchClose().style.display = 'none';\n      this.lastSearchValue = '';\n      this.Activate(false);\n      return;\n    }\n\n    // strip whitespaces\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n\n    if (searchValue != this.lastSearchValue) // search value has changed\n    {\n      if (searchValue != \"\") // non-empty search\n      {\n        // set timer for search update\n        this.keyTimeout = setTimeout(this.name + '.Search()',\n                                     this.keyTimeoutLength);\n      }\n      else // empty search field\n      {\n        this.DOMPopupSearchResultsWindow().style.display = 'none';\n        this.DOMSearchClose().style.display = 'none';\n        this.lastSearchValue = '';\n      }\n    }\n  }\n\n  this.SelectItemCount = function(id)\n  {\n    var count=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        count++;\n      }\n    }\n    return count;\n  }\n\n  this.SelectItemSet = function(id)\n  {\n    var i,j=0;\n    var win=this.DOMSearchSelectWindow();\n    for (i=0;i<win.childNodes.length;i++)\n    {\n      var child = win.childNodes[i]; // get span within a\n      if (child.className=='SelectItem')\n      {\n        var node = child.firstChild;\n        if (j==id)\n        {\n          node.innerHTML='&#8226;';\n        }\n        else\n        {\n          node.innerHTML='&#160;';\n        }\n        j++;\n      }\n    }\n  }\n\n  // Called when an search filter selection is made.\n  // set item with index id as the active item\n  this.OnSelectItem = function(id)\n  {\n    this.searchIndex = id;\n    this.SelectItemSet(id);\n    var searchValue = this.DOMSearchField().value.replace(/ +/g, \"\");\n    if (searchValue!=\"\" && this.searchActive) // something was found -> do a search\n    {\n      this.Search();\n    }\n  }\n\n  this.OnSearchSelectKey = function(evt)\n  {\n    var e = (evt) ? evt : window.event; // for IE\n    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down\n    {\n      this.searchIndex++;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==38 && this.searchIndex>0) // Up\n    {\n      this.searchIndex--;\n      this.OnSelectItem(this.searchIndex);\n    }\n    else if (e.keyCode==13 || e.keyCode==27)\n    {\n      this.OnSelectItem(this.searchIndex);\n      this.CloseSelectionWindow();\n      this.DOMSearchField().focus();\n    }\n    return false;\n  }\n\n  // --------- Actions\n\n  // Closes the results window.\n  this.CloseResultsWindow = function()\n  {\n    this.DOMPopupSearchResultsWindow().style.display = 'none';\n    this.DOMSearchClose().style.display = 'none';\n    this.Activate(false);\n  }\n\n  this.CloseSelectionWindow = function()\n  {\n    this.DOMSearchSelectWindow().style.display = 'none';\n  }\n\n  // Performs a search.\n  this.Search = function()\n  {\n    this.keyTimeout = 0;\n\n    // strip leading whitespace\n    var searchValue = this.DOMSearchField().value.replace(/^ +/, \"\");\n\n    var code = searchValue.toLowerCase().charCodeAt(0);\n    var idxChar = searchValue.substr(0, 1).toLowerCase();\n    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair\n    {\n      idxChar = searchValue.substr(0, 2);\n    }\n\n    var resultsPage;\n    var resultsPageWithSearch;\n    var hasResultsPage;\n\n    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);\n    if (idx!=-1)\n    {\n       var hexCode=idx.toString(16);\n       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;\n       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);\n       hasResultsPage = true;\n    }\n    else // nothing available for this search term\n    {\n       resultsPage = this.resultsPath + '/nomatches' + this.extension;\n       resultsPageWithSearch = resultsPage;\n       hasResultsPage = false;\n    }\n\n    window.frames.MSearchResults.location = resultsPageWithSearch;\n    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();\n\n    if (domPopupSearchResultsWindow.style.display!='block')\n    {\n       var domSearchBox = this.DOMSearchBox();\n       this.DOMSearchClose().style.display = 'inline-block';\n       var domPopupSearchResults = this.DOMPopupSearchResults();\n       var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;\n       var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;\n       domPopupSearchResultsWindow.style.display = 'block';\n       left -= domPopupSearchResults.offsetWidth;\n       var maxWidth = document.body.clientWidth;\n       var width = 400;\n       if (left<10) left=10;\n       if (width+left+8>maxWidth) width=maxWidth-left-8;\n       domPopupSearchResultsWindow.style.top     = top  + 'px';\n       domPopupSearchResultsWindow.style.left    = left + 'px';\n       domPopupSearchResultsWindow.style.width   = width + 'px';\n    }\n\n    this.lastSearchValue = searchValue;\n    this.lastResultsPage = resultsPage;\n  }\n\n  // -------- Activation Functions\n\n  // Activates or deactivates the search panel, resetting things to\n  // their default values if necessary.\n  this.Activate = function(isActive)\n  {\n    if (isActive || // open it\n        this.DOMPopupSearchResultsWindow().style.display == 'block'\n       )\n    {\n      this.DOMSearchBox().className = 'MSearchBoxActive';\n\n      var searchField = this.DOMSearchField();\n\n      if (searchField.value == this.searchLabel) // clear \"Search\" term upon entry\n      {\n        searchField.value = '';\n        this.searchActive = true;\n      }\n    }\n    else if (!isActive) // directly remove the panel\n    {\n      this.DOMSearchBox().className = 'MSearchBoxInactive';\n      this.DOMSearchField().value   = this.searchLabel;\n      this.searchActive             = false;\n      this.lastSearchValue          = ''\n      this.lastResultsPage          = '';\n    }\n  }\n}\n\n// -----------------------------------------------------------------------\n\n// The class that handles everything on the search results page.\nfunction SearchResults(name)\n{\n    // The number of matches from the last run of <Search()>.\n    this.lastMatchCount = 0;\n    this.lastKey = 0;\n    this.repeatOn = false;\n\n    // Toggles the visibility of the passed element ID.\n    this.FindChildElement = function(id)\n    {\n      var parentElement = document.getElementById(id);\n      var element = parentElement.firstChild;\n\n      while (element && element!=parentElement)\n      {\n        if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')\n        {\n          return element;\n        }\n\n        if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())\n        {\n           element = element.firstChild;\n        }\n        else if (element.nextSibling)\n        {\n           element = element.nextSibling;\n        }\n        else\n        {\n          do\n          {\n            element = element.parentNode;\n          }\n          while (element && element!=parentElement && !element.nextSibling);\n\n          if (element && element!=parentElement)\n          {\n            element = element.nextSibling;\n          }\n        }\n      }\n    }\n\n    this.Toggle = function(id)\n    {\n      var element = this.FindChildElement(id);\n      if (element)\n      {\n        if (element.style.display == 'block')\n        {\n          element.style.display = 'none';\n        }\n        else\n        {\n          element.style.display = 'block';\n        }\n      }\n    }\n\n    // Searches for the passed string.  If there is no parameter,\n    // it takes it from the URL query.\n    //\n    // Always returns true, since other documents may try to call it\n    // and that may or may not be possible.\n    this.Search = function(search)\n    {\n      if (!search) // get search word from URL\n      {\n        search = window.location.search;\n        search = search.substring(1);  // Remove the leading '?'\n        search = unescape(search);\n      }\n\n      search = search.replace(/^ +/, \"\"); // strip leading spaces\n      search = search.replace(/ +$/, \"\"); // strip trailing spaces\n      search = search.toLowerCase();\n      search = convertToId(search);\n\n      var resultRows = document.getElementsByTagName(\"div\");\n      var matches = 0;\n\n      var i = 0;\n      while (i < resultRows.length)\n      {\n        var row = resultRows.item(i);\n        if (row.className == \"SRResult\")\n        {\n          var rowMatchName = row.id.toLowerCase();\n          rowMatchName = rowMatchName.replace(/^sr\\d*_/, ''); // strip 'sr123_'\n\n          if (search.length<=rowMatchName.length &&\n             rowMatchName.substr(0, search.length)==search)\n          {\n            row.style.display = 'block';\n            matches++;\n          }\n          else\n          {\n            row.style.display = 'none';\n          }\n        }\n        i++;\n      }\n      document.getElementById(\"Searching\").style.display='none';\n      if (matches == 0) // no results\n      {\n        document.getElementById(\"NoMatches\").style.display='block';\n      }\n      else // at least one result\n      {\n        document.getElementById(\"NoMatches\").style.display='none';\n      }\n      this.lastMatchCount = matches;\n      return true;\n    }\n\n    // return the first item with index index or higher that is visible\n    this.NavNext = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index++;\n      }\n      return focusItem;\n    }\n\n    this.NavPrev = function(index)\n    {\n      var focusItem;\n      while (1)\n      {\n        var focusName = 'Item'+index;\n        focusItem = document.getElementById(focusName);\n        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')\n        {\n          break;\n        }\n        else if (!focusItem) // last element\n        {\n          break;\n        }\n        focusItem=null;\n        index--;\n      }\n      return focusItem;\n    }\n\n    this.ProcessKeys = function(e)\n    {\n      if (e.type == \"keydown\")\n      {\n        this.repeatOn = false;\n        this.lastKey = e.keyCode;\n      }\n      else if (e.type == \"keypress\")\n      {\n        if (!this.repeatOn)\n        {\n          if (this.lastKey) this.repeatOn = true;\n          return false; // ignore first keypress after keydown\n        }\n      }\n      else if (e.type == \"keyup\")\n      {\n        this.lastKey = 0;\n        this.repeatOn = false;\n      }\n      return this.lastKey!=0;\n    }\n\n    this.Nav = function(evt,itemIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        var newIndex = itemIndex-1;\n        var focusItem = this.NavPrev(newIndex);\n        if (focusItem)\n        {\n          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);\n          if (child && child.style.display == 'block') // children visible\n          {\n            var n=0;\n            var tmpElem;\n            while (1) // search for last child\n            {\n              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);\n              if (tmpElem)\n              {\n                focusItem = tmpElem;\n              }\n              else // found it!\n              {\n                break;\n              }\n              n++;\n            }\n          }\n        }\n        if (focusItem)\n        {\n          focusItem.focus();\n        }\n        else // return focus to search field\n        {\n           parent.document.getElementById(\"MSearchField\").focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = itemIndex+1;\n        var focusItem;\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem && elem.style.display == 'block') // children visible\n        {\n          focusItem = document.getElementById('Item'+itemIndex+'_c0');\n        }\n        if (!focusItem) focusItem = this.NavNext(newIndex);\n        if (focusItem)  focusItem.focus();\n      }\n      else if (this.lastKey==39) // Right\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'block';\n      }\n      else if (this.lastKey==37) // Left\n      {\n        var item = document.getElementById('Item'+itemIndex);\n        var elem = this.FindChildElement(item.parentNode.parentNode.id);\n        if (elem) elem.style.display = 'none';\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n\n    this.NavChild = function(evt,itemIndex,childIndex)\n    {\n      var e  = (evt) ? evt : window.event; // for IE\n      if (e.keyCode==13) return true;\n      if (!this.ProcessKeys(e)) return false;\n\n      if (this.lastKey==38) // Up\n      {\n        if (childIndex>0)\n        {\n          var newIndex = childIndex-1;\n          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();\n        }\n        else // already at first child, jump to parent\n        {\n          document.getElementById('Item'+itemIndex).focus();\n        }\n      }\n      else if (this.lastKey==40) // Down\n      {\n        var newIndex = childIndex+1;\n        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);\n        if (!elem) // last child, jump to parent next parent\n        {\n          elem = this.NavNext(itemIndex+1);\n        }\n        if (elem)\n        {\n          elem.focus();\n        }\n      }\n      else if (this.lastKey==27) // Escape\n      {\n        parent.searchBox.CloseResultsWindow();\n        parent.document.getElementById(\"MSearchField\").focus();\n      }\n      else if (this.lastKey==13) // Enter\n      {\n        return true;\n      }\n      return false;\n    }\n}\n\nfunction setKeyActions(elem,action)\n{\n  elem.setAttribute('onkeydown',action);\n  elem.setAttribute('onkeypress',action);\n  elem.setAttribute('onkeyup',action);\n}\n\nfunction setClassAttr(elem,attr)\n{\n  elem.setAttribute('class',attr);\n  elem.setAttribute('className',attr);\n}\n\nfunction createResults()\n{\n  var results = document.getElementById(\"SRResults\");\n  for (var e=0; e<searchData.length; e++)\n  {\n    var id = searchData[e][0];\n    var srResult = document.createElement('div');\n    srResult.setAttribute('id','SR_'+id);\n    setClassAttr(srResult,'SRResult');\n    var srEntry = document.createElement('div');\n    setClassAttr(srEntry,'SREntry');\n    var srLink = document.createElement('a');\n    srLink.setAttribute('id','Item'+e);\n    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');\n    setClassAttr(srLink,'SRSymbol');\n    srLink.innerHTML = searchData[e][1][0];\n    srEntry.appendChild(srLink);\n    if (searchData[e][1].length==2) // single result\n    {\n      srLink.setAttribute('href',searchData[e][1][1][0]);\n      srLink.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');\n      if (searchData[e][1][1][1])\n      {\n       srLink.setAttribute('target','_parent');\n      }\n      var srScope = document.createElement('span');\n      setClassAttr(srScope,'SRScope');\n      srScope.innerHTML = searchData[e][1][1][2];\n      srEntry.appendChild(srScope);\n    }\n    else // multiple results\n    {\n      srLink.setAttribute('href','javascript:searchResults.Toggle(\"SR_'+id+'\")');\n      var srChildren = document.createElement('div');\n      setClassAttr(srChildren,'SRChildren');\n      for (var c=0; c<searchData[e][1].length-1; c++)\n      {\n        var srChild = document.createElement('a');\n        srChild.setAttribute('id','Item'+e+'_c'+c);\n        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');\n        setClassAttr(srChild,'SRScope');\n        srChild.setAttribute('href',searchData[e][1][c+1][0]);\n        srChild.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');\n        if (searchData[e][1][c+1][1])\n        {\n         srChild.setAttribute('target','_parent');\n        }\n        srChild.innerHTML = searchData[e][1][c+1][2];\n        srChildren.appendChild(srChild);\n      }\n      srEntry.appendChild(srChildren);\n    }\n    srResult.appendChild(srEntry);\n    results.appendChild(srResult);\n  }\n}\n\nfunction init_search()\n{\n  var results = document.getElementById(\"MSearchSelectWindow\");\n  for (var key in indexSectionLabels)\n  {\n    var link = document.createElement('a');\n    link.setAttribute('class','SelectItem');\n    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');\n    link.href='javascript:void(0)';\n    link.innerHTML='<span class=\"SelectionMark\">&#160;</span>'+indexSectionLabels[key];\n    results.appendChild(link);\n  }\n  searchBox.OnSelectItem(0);\n}\n/* @license-end */\n"
  },
  {
    "path": "docs/cppapi/search/searchdata.js",
    "content": "var indexSectionsWithContent =\n{\n  0: \"_abcdefghijklmnopqrstuvwxy~\",\n  1: \"_abcdefghiklmnopqrstuvw\",\n  2: \"t\",\n  3: \"abcdefghiklmnopqrstuvw\",\n  4: \"abcdefghijklmnopqrstuvwy~\",\n  5: \"abcdefghijklmnopqrstuvwxy\",\n  6: \"acefgiklmnpqsuv\",\n  7: \"acdfgiklmopqrstuvw\",\n  8: \"abcdefghiklmnopqrstuvwy\",\n  9: \"acfoprstvw\",\n  10: \"aepst\",\n  11: \"dt\"\n};\n\nvar indexSectionNames =\n{\n  0: \"all\",\n  1: \"classes\",\n  2: \"namespaces\",\n  3: \"files\",\n  4: \"functions\",\n  5: \"variables\",\n  6: \"typedefs\",\n  7: \"enums\",\n  8: \"enumvalues\",\n  9: \"related\",\n  10: \"defines\",\n  11: \"pages\"\n};\n\nvar indexSectionLabels =\n{\n  0: \"All\",\n  1: \"Classes\",\n  2: \"Namespaces\",\n  3: \"Files\",\n  4: \"Functions\",\n  5: \"Variables\",\n  6: \"Typedefs\",\n  7: \"Enumerations\",\n  8: \"Enumerator\",\n  9: \"Friends\",\n  10: \"Macros\",\n  11: \"Pages\"\n};\n\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_0.js",
    "content": "var searchData=\n[\n  ['aabbleaf_5ft_0',['aabbleaf_t',['../namespacetram_1_1_render.html#ab19b566afd13e36e1b377bd19adab144',1,'tram::Render']]],\n  ['ai_5fpackage_5fconstr_1',['ai_package_constr',['../namespacetram_1_1_ext_1_1_kitchensink.html#a7ed49c241e07b037e40bcb940995e442',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_1.js",
    "content": "var searchData=\n[\n  ['col_5fcallback_0',['col_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7',1,'tram::Physics::API']]],\n  ['collision_5fcallback_1',['collision_callback',['../namespacetram.html#a0ec6f1beb2db1148bf277a12019a7ac0',1,'tram']]],\n  ['color_5ft_2',['color_t',['../namespacetram_1_1_render.html#a32fb4b5bd9e12e48f08e6ff4ce8817b8',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_2.js",
    "content": "var searchData=\n[\n  ['entity_5fclear_0',['entity_clear',['../namespacetram.html#acb6f2c041e69a847713e8d29f66dc58b',1,'tram']]],\n  ['entity_5fmake_1',['entity_make',['../namespacetram.html#a5f7e406660923fb9a2cc0a8628fa0c3d',1,'tram']]],\n  ['event_5ft_2',['event_t',['../namespacetram.html#a0183b475d47925143ca46259ec594d90',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_3.js",
    "content": "var searchData=\n[\n  ['filter_5fcallback_0',['filter_callback',['../namespacetram.html#a2ffbf64ab17d509c8a5dc283f437a5b7',1,'tram']]],\n  ['font_5ft_1',['font_t',['../namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_4.js",
    "content": "var searchData=\n[\n  ['get_5ftrf_5fcallback_0',['get_trf_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a36463524ce5c3d5ee5d8c9bf2d4258bd',1,'tram::Physics::API']]],\n  ['glyph_5ft_1',['glyph_t',['../namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a',1,'tram::GUI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_5.js",
    "content": "var searchData=\n[\n  ['id_5ft_0',['id_t',['../namespacetram.html#a25ae39989bce3dab64401c3956be9c03',1,'tram']]],\n  ['item_5faction_5ffunc_1',['item_action_func',['../namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8',1,'tram::Ext::Kitchensink']]],\n  ['ivec3_2',['ivec3',['../namespacetram.html#a376f6f34fd81bba7071907b5226432f9',1,'tram']]],\n  ['ivec4_3',['ivec4',['../namespacetram.html#a1632687848b1fc76b67d96646ef5a691',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_6.js",
    "content": "var searchData=\n[\n  ['keyboardaction_5ft_0',['keyboardaction_t',['../namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461',1,'tram::UI']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_7.js",
    "content": "var searchData=\n[\n  ['layer_5ft_0',['layer_t',['../namespacetram_1_1_render.html#a92b94ac310d4c8df9a4294518ffd75c8',1,'tram::Render']]],\n  ['listener_5ft_1',['listener_t',['../namespacetram.html#abc1aacd663943b92d06f10950a9f10d0',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_8.js",
    "content": "var searchData=\n[\n  ['mat2_0',['mat2',['../namespacetram.html#a1449f767374f220889ec5253470ac9d9',1,'tram']]],\n  ['mat4_1',['mat4',['../namespacetram.html#aa105cf31ac2e470934e6b0827a14d942',1,'tram']]],\n  ['materialtype_5ft_2',['materialtype_t',['../namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc',1,'tram::Render']]],\n  ['message_5ft_3',['message_t',['../namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_9.js",
    "content": "var searchData=\n[\n  ['name_5ft_0',['name_t',['../namespacetram.html#ad77b577436f476438699a1c4da9d549c',1,'tram']]],\n  ['namecount_1',['NameCount',['../namespacetram_1_1_render.html#a5c915c417ac6870808de6e5dff23c287',1,'tram::Render']]],\n  ['node_5fid_5ft_2',['node_id_t',['../namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_a.js",
    "content": "var searchData=\n[\n  ['poopproxy_0',['PoopProxy',['../namespacetram.html#a72cce72d3494bf0e132892a3735ac229',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_b.js",
    "content": "var searchData=\n[\n  ['quat_0',['quat',['../namespacetram.html#a6ba8befa39d714232ba6f05ade798893',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_c.js",
    "content": "var searchData=\n[\n  ['set_5ftrf_5fcallback_0',['set_trf_callback',['../namespacetram_1_1_physics_1_1_a_p_i.html#a8e2158a307c228002d615529011ac455',1,'tram::Physics::API']]],\n  ['shaderflags_5ft_1',['shaderflags_t',['../namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976',1,'tram::Render::API']]],\n  ['signal_5ft_2',['signal_t',['../namespacetram.html#a2efd897a3a954a002664292b5d6264d6',1,'tram']]],\n  ['sphericalharmonic_5ft_3',['sphericalharmonic_t',['../namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5',1,'tram::Render']]],\n  ['system_5ft_4',['system_t',['../namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40',1,'tram::System']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_d.js",
    "content": "var searchData=\n[\n  ['uvec3_0',['uvec3',['../namespacetram.html#a6302de3ebd59f9e8325c9d2f2752b78f',1,'tram']]],\n  ['uvec4_1',['uvec4',['../namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"typedefs_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/typedefs_e.js",
    "content": "var searchData=\n[\n  ['value_5ft_0',['value_t',['../namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4',1,'tram']]],\n  ['valuearray_5ft_1',['valuearray_t',['../namespacetram.html#a9a399a2754b52b60de20e936546d0637',1,'tram']]],\n  ['vec2_2',['vec2',['../namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49',1,'tram']]],\n  ['vec3_3',['vec3',['../namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891',1,'tram']]],\n  ['vec4_4',['vec4',['../namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b',1,'tram']]],\n  ['vertexformat_5ft_5',['vertexformat_t',['../namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2',1,'tram::Render']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_0.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_0.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_0.js",
    "content": "var searchData=\n[\n  ['aabb_5fmax_0',['aabb_max',['../classtram_1_1_render_1_1_model.html#a030f9e0ab4d7afbaf589eb18e767c3a2',1,'tram::Render::Model::aabb_max()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed',1,'tram::Render::API::GLDrawListEntry::aabb_max()']]],\n  ['aabb_5fmin_1',['aabb_min',['../classtram_1_1_render_1_1_model.html#a743debf3087f34ef70b7b98d5d1d3e6c',1,'tram::Render::Model::aabb_min()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0',1,'tram::Render::API::GLDrawListEntry::aabb_min()']]],\n  ['aabb_5ftree_5fleaf_2',['aabb_tree_leaf',['../classtram_1_1_render_component.html#ae40a30e7729ab549faf072c9b0440ae5',1,'tram::RenderComponent']]],\n  ['abbrv_3',['abbrv',['../struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6',1,'_test_case']]],\n  ['action_4',['action',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636',1,'tram::Ext::Kitchensink::DialogTopic::action()'],['../structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41',1,'tram::UI::KeyBinding::action()']]],\n  ['affected_5fvalue_5',['affected_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['age_6',['age',['../structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1',1,'tram::ParticleComponent::Particle']]],\n  ['air_5fvelocity_7',['air_velocity',['../classtram_1_1_raycast_controller_component.html#a762a880efb2b272fb8e19edac34c7893',1,'tram::RaycastControllerComponent']]],\n  ['al_5fbuffer_5fcount_8',['al_buffer_count',['../structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c',1,'tram::Audio::audiobuffer_t']]],\n  ['al_5fbuffers_9',['al_buffers',['../structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad',1,'tram::Audio::audiobuffer_t']]],\n  ['al_5fsource_10',['al_source',['../structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7',1,'tram::Audio::audiosource_t']]],\n  ['allocated_5fsize_11',['allocated_size',['../classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123',1,'tram::StackPool']]],\n  ['allocated_5fvertex_5fcount_12',['allocated_vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246',1,'tram::Render::API::VertexBufferMetadata']]],\n  ['ambient_5fcolor_13',['ambient_color',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6',1,'tram::Render::API::LayerParameters::ambient_color()'],['../namespacetram_1_1_render.html#a3789b74039f89d50409081cdc8fc1457',1,'tram::Render::ambient_color()']]],\n  ['ambientcolor_14',['ambientColor',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['anim_5fbframe_15',['anim_bframe',['../classtram_1_1_sprite_component.html#a60f9208d310ee25c0ae44d212b23a88c',1,'tram::SpriteComponent']]],\n  ['anim_5fcount_16',['ANIM_COUNT',['../classtram_1_1_animation_component.html#ae44dc606d6f719e5a470fdc6ed013e27',1,'tram::AnimationComponent']]],\n  ['anim_5ffinish_5fcallback_17',['anim_finish_callback',['../classtram_1_1_animation_component.html#abe657fb3e7986f8344a6a1aa5d1a40d7',1,'tram::AnimationComponent']]],\n  ['anim_5fframe_18',['anim_frame',['../classtram_1_1_sprite_component.html#a88b7103d26803ae5ea1315648ef813e1',1,'tram::SpriteComponent']]],\n  ['anim_5finfo_19',['anim_info',['../classtram_1_1_animation_component.html#a41874c91efb221e22ce606804aedf1c2',1,'tram::AnimationComponent']]],\n  ['anim_5fisplaying_20',['anim_isplaying',['../classtram_1_1_sprite_component.html#af50cea976158bc2472c9df7cee551157',1,'tram::SpriteComponent']]],\n  ['anim_5fplaying_21',['anim_playing',['../classtram_1_1_animation_component.html#a8cfc453f4f1a8e3d39ef58fd0ceb71e4',1,'tram::AnimationComponent']]],\n  ['anim_5fspeed_22',['anim_speed',['../classtram_1_1_sprite_component.html#a94e1866fddd8e554075eb49016f924bf',1,'tram::SpriteComponent']]],\n  ['animation_23',['animation',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d',1,'tram::Ext::Kitchensink::AnimState::animation()'],['../classtram_1_1_decoration.html#a9ed3fb5e8c71f3491fe57c843e0325e1',1,'tram::Decoration::animation()']]],\n  ['animation_5fpool_24',['animation_pool',['../namespacetram_1_1_render.html#a4241295a3e7f28b70cfc9a4fa831903d',1,'tram::Render']]],\n  ['animationcomponent_25',['animationcomponent',['../classtram_1_1_decoration.html#a24081b56bcc532c09441c1f4a71d0e12',1,'tram::Decoration']]],\n  ['answer_26',['answer',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['approx_5fvram_5fusage_27',['approx_vram_usage',['../classtram_1_1_render_1_1_material.html#a10304337c81204bdcf59fb2ae03e9428',1,'tram::Render::Material::approx_vram_usage()'],['../classtram_1_1_render_1_1_model.html#a69f11a78aa41ff398b91ffde31efb2b7',1,'tram::Render::Model::approx_vram_usage()']]],\n  ['armature_28',['armature',['../classtram_1_1_render_1_1_model.html#a7da36392dce1f4256a6ce67620501430',1,'tram::Render::Model']]],\n  ['armature_5fbone_5fcount_29',['armature_bone_count',['../classtram_1_1_animation_component.html#a548e0d34bf1bb6b24a534b759b83ccd8',1,'tram::AnimationComponent']]],\n  ['armature_5fbone_5fparents_30',['armature_bone_parents',['../classtram_1_1_animation_component.html#a61a263a46b3af801e91b0306f65bd5b8',1,'tram::AnimationComponent']]],\n  ['armature_5fbones_31',['armature_bones',['../classtram_1_1_animation_component.html#a86100bcacc626be6040580f705248072',1,'tram::AnimationComponent']]],\n  ['arrival_5fdirection_32',['arrival_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['attribute_33',['attribute',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617',1,'tram::Ext::Kitchensink::Effect::attribute()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08',1,'tram::Ext::Kitchensink::InitialAttribute::attribute()']]],\n  ['attribute_5fcontainer_5fcount_34',['ATTRIBUTE_CONTAINER_COUNT',['../attributes_8cpp.html#a84627f70639f661d824e70f33c21021d',1,'attributes.cpp']]],\n  ['attribute_5fcount_35',['attribute_count',['../structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451',1,'tram::Render::VertexDefinition']]],\n  ['attribute_5finfo_5fcount_36',['ATTRIBUTE_INFO_COUNT',['../attributes_8cpp.html#a9b8616fa5aa349f32551242738af8269',1,'attributes.cpp']]],\n  ['attributes_37',['attributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b',1,'tram::Ext::Kitchensink::ItemClass::attributes()'],['../structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae',1,'tram::Render::VertexDefinition::attributes()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6',1,'tram::Ext::Kitchensink::AttributeContainer::attributes()']]],\n  ['audio_38',['audio',['../classtram_1_1_sound.html#a934d998958463921ee96f604e7934a1b',1,'tram::Sound']]],\n  ['audiobuffers_39',['audiobuffers',['../namespacetram_1_1_audio_1_1_spatial.html#a0220900672de1f44004ac3fbea75384e',1,'tram::Audio::Spatial']]],\n  ['audiorenders_40',['audiorenders',['../namespacetram_1_1_audio_1_1_spatial.html#a1707c3651d829fc8dccf07265d990501',1,'tram::Audio::Spatial']]],\n  ['audiosources_41',['audiosources',['../namespacetram_1_1_audio_1_1_spatial.html#a09a8fe4a1def9a9851bd0eb34988036f',1,'tram::Audio::Spatial']]],\n  ['available_5fsize_42',['available_size',['../classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8',1,'tram::StackPool']]],\n  ['average_5fcount_43',['average_count',['../structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3',1,'tram::Stats::SystemStat']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_1.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_1.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_1.js",
    "content": "var searchData=\n[\n  ['barycentric_0',['barycentric',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a',1,'tram::Render::API::ClipPoint']]],\n  ['base_5fattributes_1',['base_attributes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a91bc67d549a53384a0b1aef0ced9fcd7',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5fclass_2',['base_class',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a38235d74c6c43032f0f53e84df2e00e4',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['base_5fclasses_3',['base_classes',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#adb00f39ea738b0df3ad9648819a215d0',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5ffactions_4',['base_factions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character_class.html#a8d6ce94fb5780a54fe9fff4d03f1d057',1,'tram::Ext::Kitchensink::CharacterClass']]],\n  ['base_5fpose_5',['base_pose',['../classtram_1_1_animation_component.html#af919af95bb7414728434643fcaeda10c',1,'tram::AnimationComponent']]],\n  ['base_5ftype_6',['base_type',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['base_5fvalue_7',['base_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['begin_8',['begin',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7',1,'tram::Render::API::Scanline']]],\n  ['begin_5fadv_9',['begin_adv',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5',1,'tram::Render::API::Scanline']]],\n  ['begin_5fp0_10',['begin_p0',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16',1,'tram::Render::API::Scanline']]],\n  ['begin_5fp1_11',['begin_p1',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334',1,'tram::Render::API::Scanline']]],\n  ['beginned_12',['beginned',['../namespacetram_1_1_g_u_i.html#a2fd25b3a9a83f7a905fd70aeda3cf2d8',1,'tram::GUI']]],\n  ['binding_5faction_13',['binding_action',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a6d4a3d849008c2cf884787555a373725',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['binding_5fstate_5fready_14',['binding_state_ready',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a5975fcefcf9922e267a6de09fa00a479',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['binguser_15',['binguser',['../main_8cpp.html#a7b2977ab1d0adc9fca3191665cdbd8a8',1,'main.cpp']]],\n  ['bob_16',['bob',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a939144795493647266dfed3c37f7964e',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bob_5fcallback_17',['bob_callback',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afa6a623662e232f8d979eb703d905834',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bob_5fchange_5fspeed_18',['BOB_CHANGE_SPEED',['../namespacetram_1_1_ext_1_1_camera.html#a9ebbcf579061fce613ced15545380bee',1,'tram::Ext::Camera']]],\n  ['bob_5fspeed_19',['bob_speed',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a71b4981935bc58995e4ee9ffb2f6c573',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fdistance_20',['bobbing_distance',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a55e48a64290f4a40a6332c4536c6e194',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5ftilt_21',['bobbing_tilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a4fee900edc8986fbf21a110744bca1dc',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5ftilt_5fgoal_22',['bobbing_tilt_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a0cdf4f127893f1b3a00701b5de1cac0d',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fweight_23',['bobbing_weight',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ae4d02663d09577f0771f3c145e826ae2',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bobbing_5fweight_5fgoal_24',['bobbing_weight_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a7e08632db39929c5d34f38709e5ea28f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['bone_25',['bone',['../structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0',1,'tram::Render::KeyframeHeader::bone()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874',1,'tram::Render::DynamicModelVertex::bone()']]],\n  ['bone_5fcount_26',['BONE_COUNT',['../namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6',1,'tram::Render']]],\n  ['bone_5findex_27',['bone_index',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468',1,'tram::Render::API::FVFHelper::bone_index()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e',1,'tram::Render::API::FFPHelper::bone_index()']]],\n  ['bone_5funiform_5fbinding_28',['bone_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#ace7ae8e4df165fb13c29c639727147c8',1,'tram::Render::API']]],\n  ['bone_5funiform_5fbuffer_29',['bone_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#ae204460e13beeb7a70031b5f393fcacb',1,'tram::Render::API']]],\n  ['bone_5fweight_30',['bone_weight',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022',1,'tram::Render::API::FVFHelper::bone_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9',1,'tram::Render::API::FFPHelper::bone_weight()']]],\n  ['boneweight_31',['boneweight',['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2',1,'tram::Render::DynamicModelVertex']]],\n  ['bool32_32',['bool32',['../structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa',1,'tram::Settings::SettingInfo']]],\n  ['bool_5fptr_33',['bool_ptr',['../classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103',1,'tram::ValuePtr']]],\n  ['bool_5fvalue_34',['bool_value',['../classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8',1,'tram::Value']]],\n  ['border_5fh_35',['border_h',['../structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7',1,'tram::Render::SpriteFrame']]],\n  ['border_5fv_36',['border_v',['../structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6',1,'tram::Render::SpriteFrame']]],\n  ['bt_5fcollisionshape_37',['bt_collisionshape',['../structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4',1,'tram::Physics::trigger_t']]],\n  ['bt_5fmetadata_38',['bt_metadata',['../structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa',1,'tram::Physics::trigger_t::bt_metadata()'],['../structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9',1,'tram::Physics::rigidbody_t::bt_metadata()']]],\n  ['bt_5frigidbody_39',['bt_rigidbody',['../structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3',1,'tram::Physics::rigidbody_t']]],\n  ['bt_5fshape_40',['bt_shape',['../structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7',1,'tram::Physics::collisionshape_t']]],\n  ['bucket_41',['bucket',['../structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8',1,'tram::Render::BucketMapping']]],\n  ['buffer_42',['buffer',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212',1,'tram::Audio::Spatial::AudioRender::buffer()'],['../classtram_1_1_file.html#a4b74a4d3fee7a6b42781d13b4c09c0bf',1,'tram::File::buffer()'],['../namespacetram_1_1implementation.html#a8098d615040fde5cc1fc55269394ccb7',1,'tram::implementation::buffer()']]],\n  ['buffer_5fcount_43',['BUFFER_COUNT',['../namespacetram_1_1_audio_1_1_spatial.html#ac53db006980b48a77fdcc80c34854c20',1,'tram::Audio::Spatial']]],\n  ['buffer_5fcursor_44',['buffer_cursor',['../classtram_1_1_file.html#aa4875014953235da2776dac766558fad',1,'tram::File']]],\n  ['buffer_5fend_45',['buffer_end',['../classtram_1_1_file.html#a5dfaae97d414184a8999f401fe07b01f',1,'tram::File']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_10.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_10.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_10.js",
    "content": "var searchData=\n[\n  ['quat_5fptr_0',['quat_ptr',['../classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3',1,'tram::ValuePtr']]],\n  ['quat_5fvalue_1',['quat_value',['../classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7',1,'tram::Value']]],\n  ['quest_2',['quest',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198',1,'tram::Ext::Kitchensink::DialogCondition::quest()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401',1,'tram::Ext::Kitchensink::DialogAction::quest()']]],\n  ['quest1_3',['quest1',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['quest2_4',['quest2',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1',1,'tram::Ext::Kitchensink::QuestVariable']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_11.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_11.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_11.js",
    "content": "var searchData=\n[\n  ['radius_0',['radius',['../structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d',1,'tram::Physics::CollisionShape']]],\n  ['radius_5fx_1',['radius_x',['../structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc',1,'tram::Physics::CollisionShape']]],\n  ['radius_5fz_2',['radius_z',['../structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7',1,'tram::Physics::CollisionShape']]],\n  ['rank_3',['rank',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d',1,'tram::Ext::Kitchensink::FactionRank::rank()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae',1,'tram::Ext::Kitchensink::BaseFactionRank::rank()']]],\n  ['ranks_4',['ranks',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a04d109da4bb8712655c604c986d6df2d',1,'tram::Ext::Kitchensink::Faction']]],\n  ['reader_5',['reader',['../classtram_1_1_file.html#a13e1dda97ae8a262ce9e28257c2aea1e',1,'tram::File']]],\n  ['reader_5fparser_6',['reader_parser',['../classtram_1_1_file.html#a00a329e60e55d43c3df1159b5f36de18',1,'tram::File']]],\n  ['receiver_7',['receiver',['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc',1,'tram::Ext::Menu::MessageIntercept::receiver()'],['../structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1',1,'tram::Message::receiver()'],['../structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6',1,'tram::Signal::receiver()']]],\n  ['record_8',['record',['../main_8cpp.html#a24abc1cdb33ae6cc929ae21787c1cec9',1,'main.cpp']]],\n  ['ref_5ftype_9',['ref_type',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5',1,'tram::Render::AABB::AABBLeaf']]],\n  ['references_10',['references',['../classtram_1_1_resource.html#a9f937078a3f7e3df1ad275528e615539',1,'tram::Resource']]],\n  ['reflection_5fabsorption_11',['reflection_absorption',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['reflection_5fcount_12',['reflection_count',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['reflections_13',['reflections',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898',1,'tram::Audio::Spatial::PathTracingResult::reflections()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5',1,'tram::Audio::Spatial::PathFromAudioSource::reflections()']]],\n  ['reflectivity_14',['reflectivity',['../classtram_1_1_render_1_1_material.html#a9f91bdfa808477343ccdc76aaeb8abd6',1,'tram::Render::Material::reflectivity()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7',1,'tram::Render::API::GLMaterial::reflectivity()']]],\n  ['registered_15',['registered',['../structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2',1,'tram::Render::RegisteredVertexDefinition']]],\n  ['relations_16',['relations',['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#a8863648b8b05263ec564eb65d860793f',1,'tram::Ext::Kitchensink::Faction']]],\n  ['render_5fflags_17',['render_flags',['../classtram_1_1_render_component.html#a49a2e872ecfb59e33f5ab7974b01c13f',1,'tram::RenderComponent']]],\n  ['rendercomponent_18',['rendercomponent',['../classtram_1_1_decoration.html#ade298a17a196fd33a11d421657e5a423',1,'tram::Decoration::rendercomponent()'],['../classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe',1,'tram::StaticWorldObject::rendercomponent()'],['../classtram_1_1_trigger.html#ac9ce430e5009ab03a6065d4ec1520816',1,'tram::Trigger::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a02890ff2bdddc5eda0fb4b325318ae35',1,'tram::Ext::Kitchensink::Button::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9cd3710f61b4079ce2f48d9b21a8ff80',1,'tram::Ext::Kitchensink::Breakable::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a57defa0f79a1b97c9154ef7d3318963f',1,'tram::Ext::Kitchensink::Water::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a993b1fba83b57ed7da2f068a63e12e9a',1,'tram::Ext::Kitchensink::Train::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a329479016aa8bba237d77d9b81d708bd',1,'tram::Ext::Kitchensink::Pickup::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#aea53d3e3b4c26becbb0f358cf8e13dcd',1,'tram::Ext::Kitchensink::DebugText::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#aa1a0877cf652538dc29c81a2b7be004c',1,'tram::Ext::Kitchensink::DebugShape::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a2f6cd3e9f01819693f25f76ea1deffe1',1,'tram::Ext::Kitchensink::TriggerAutosave::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a61e6183e35fdce3b974628d18c0f8ca5',1,'tram::Ext::Kitchensink::TriggerHurt::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a218ca60c7aa10b956ce4db11d0411ac6',1,'tram::Ext::Kitchensink::TriggerOnce::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a6d39ed9a2cbfab6cd334b9af39d99bc2',1,'tram::Ext::Kitchensink::TriggerMultiple::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a5b9ef4de873d19b9f989c967c26904d8',1,'tram::Ext::Kitchensink::TriggerPush::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a97e548c324cbdb15b6f90dbfea4eb2fe',1,'tram::Ext::Kitchensink::TriggerRemove::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a1ee314c75612530d797e07b5e2dff085',1,'tram::Ext::Kitchensink::TriggerTeleport::rendercomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ac98c9d0daa251c124f7bb347138c6d86',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::rendercomponent()'],['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773',1,'tram::Render::AABB::AABBLeaf::rendercomponent()'],['../classtram_1_1_crate.html#aab88e1a8a682dcc308d4c9119abd711c',1,'tram::Crate::rendercomponent()']]],\n  ['repeat_19',['repeat',['../classtram_1_1_audio_component.html#ab1cbca3ac78210b1c284dc6309a6b303',1,'tram::AudioComponent']]],\n  ['repeats_20',['repeats',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c',1,'tram::AnimationComponent::AnimationPlaybackInfo::repeats()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8',1,'tram::Ext::Kitchensink::AnimState::repeats()']]],\n  ['requester_21',['requester',['../structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9',1,'tram::Async::ResourceRequest']]],\n  ['resource_22',['resource',['../structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65',1,'tram::Async::ResourceRequest::resource()'],['../classtram_1_1_resource_proxy.html#a1f763b625481fde25be8bcdb2b9387ea',1,'tram::ResourceProxy::resource()']]],\n  ['resource_5flimit_5fcollision_5fmodel_23',['RESOURCE_LIMIT_COLLISION_MODEL',['../namespacetram.html#a09905cc9b5568b71843490d4d6ce5fc3',1,'tram']]],\n  ['resource_5flimit_5flight_5fgraph_24',['RESOURCE_LIMIT_LIGHT_GRAPH',['../namespacetram.html#acfe37808bb06b05bc9596bc3242e95ce',1,'tram']]],\n  ['resource_5flimit_5fmaterial_25',['RESOURCE_LIMIT_MATERIAL',['../namespacetram.html#a204e0f9d92f93902f454380c35b33c49',1,'tram']]],\n  ['resource_5flimit_5fmodel_26',['RESOURCE_LIMIT_MODEL',['../namespacetram.html#a824fea7217919eb6958e08a8bbab50d1',1,'tram']]],\n  ['resource_5flimit_5fpath_27',['RESOURCE_LIMIT_PATH',['../namespacetram.html#aaffd4a95c2adf2e132260b84190ca660',1,'tram']]],\n  ['resource_5flimit_5fsound_28',['RESOURCE_LIMIT_SOUND',['../namespacetram.html#a4057f0499e008e4ce99545c3d38f1ddf',1,'tram']]],\n  ['resource_5flimit_5fsound_5fgraph_29',['RESOURCE_LIMIT_SOUND_GRAPH',['../namespacetram.html#a899ede00065e962b5ca2528841e45aa7',1,'tram']]],\n  ['resource_5flimit_5fsprite_30',['RESOURCE_LIMIT_SPRITE',['../namespacetram.html#ad2e37d16ae78faab3eb2d8140fcd8b5e',1,'tram']]],\n  ['resource_5floader_5fqueue_5flimit_31',['RESOURCE_LOADER_QUEUE_LIMIT',['../namespacetram.html#ae549eb9876cd460a36ec048cd029af97',1,'tram']]],\n  ['resource_5floader_5frequest_5flimit_32',['RESOURCE_LOADER_REQUEST_LIMIT',['../namespacetram.html#a35b3cdfbe899c26e6da0068331ef4a03',1,'tram']]],\n  ['resources_5fwaiting_33',['resources_waiting',['../classtram_1_1_entity_component.html#a67f362753d2e2c2e5859ceab8b9461ce',1,'tram::EntityComponent']]],\n  ['result_5fpaths_34',['result_paths',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e',1,'tram::Audio::Spatial::AudioSource']]],\n  ['right_35',['right',['../structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f',1,'tram::NavmeshNode::right()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6',1,'tram::AABBTree::Node::right()']]],\n  ['rigidbody_5flimit_36',['RIGIDBODY_LIMIT',['../namespacetram.html#a95ef9ff7b7e26c1f357c10707720163a',1,'tram']]],\n  ['rigidbody_5fmetadata_5fpool_37',['rigidbody_metadata_pool',['../namespacetram_1_1_physics_1_1_a_p_i.html#a7fe1815cf77d8668e3eb109f279d1681',1,'tram::Physics::API']]],\n  ['roll_38',['roll',['../structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9',1,'tram::Render::Bone']]],\n  ['root_39',['root',['../classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c',1,'tram::AABBTree::root()'],['../classtram_1_1_octree.html#a339f6bc48edaea36835c72727179450f',1,'tram::Octree::root()']]],\n  ['rotate_5ffollowing_40',['rotate_following',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a01612b2beb8614c3602232f3313e143b',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['rotation_41',['rotation',['../structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5',1,'tram::SharedEntityData::rotation()'],['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a8eb70310ddfbbf5915e9f243317e845e',1,'tram::Physics::API::CallbackMotionState::rotation()'],['../structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83',1,'tram::Render::Keyframe::rotation()'],['../structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f',1,'tram::Render::SpritePoint::rotation()'],['../classtram_1_1_decal_component.html#a0ecda8cd0fd000ba8d9af749319d198a',1,'tram::DecalComponent::rotation()'],['../classtram_1_1_render_component.html#ab662c48c42ac7423a1be25def0850aeb',1,'tram::RenderComponent::rotation()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a3e35e4579d49fde2164b2eda46d38423',1,'tram::Ext::Camera::Camera::rotation()'],['../classtram_1_1_entity.html#a0525838325f363757549a3faa3267a62',1,'tram::Entity::rotation()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1',1,'tram::Physics::API::CollisionShapeTransform::rotation()']]],\n  ['run_5fspeed_42',['run_speed',['../classtram_1_1_raycast_controller_component.html#ac9876016d424f59dcbd70a22264ea0ed',1,'tram::RaycastControllerComponent::run_speed()'],['../classtram_1_1_f_p_s_controller_component.html#a69f90eea486552552948362847c43ee6',1,'tram::FPSControllerComponent::run_speed()']]],\n  ['running_43',['running',['../classtram_1_1_f_p_s_controller_component.html#a897a4b4f81cc5bba6e619a053abec6b9',1,'tram::FPSControllerComponent::running()'],['../classtram_1_1_raycast_controller_component.html#a1ff2fa537cf973283b7385f4b9c12eea',1,'tram::RaycastControllerComponent::running()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_12.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_12.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_12.js",
    "content": "var searchData=\n[\n  ['sample_0',['sample',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e',1,'tram::Audio::Spatial::AudioRender']]],\n  ['sample_5frate_1',['sample_rate',['../classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911',1,'tram::Audio::Sound::sample_rate()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f',1,'tram::Audio::Spatial::AudioBuffer::sample_rate()']]],\n  ['sampling_5fdirection_2',['sampling_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d',1,'tram::Audio::Spatial::PathExplorationResult']]],\n  ['scale_3',['scale',['../classtram_1_1_decal_component.html#abe8edd2e09691f0f2f0a5b2f150f7cca',1,'tram::DecalComponent::scale()'],['../classtram_1_1_render_component.html#aeb591d2819300ff65ac05acfd171fe4c',1,'tram::RenderComponent::scale()'],['../structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5',1,'tram::Render::Keyframe::scale()']]],\n  ['scanline_5flength_4',['scanline_length',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169',1,'tram::Render::API::ScanlineBuffer']]],\n  ['scanlines_5',['scanlines',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019',1,'tram::Render::API::ScanlineBuffer::scanlines()'],['../namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7',1,'tram::Render::API::scanlines()']]],\n  ['screen_5fclear_5fcolor_6',['screen_clear_color',['../namespacetram_1_1_render_1_1_a_p_i.html#ab8259e25142ce465c1c745dd91f4618e',1,'tram::Render::API']]],\n  ['screenheight_7',['screenHeight',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['screenwidth_8',['screenWidth',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['script_9',['script',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a000cfce98b029d0db88a9cbbc17bc070',1,'tram::Ext::Kitchensink::AIAgent::script()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5',1,'tram::Ext::Kitchensink::QuestVariable::script()']]],\n  ['scriptable_5fentity_5ftype_5flimit_10',['SCRIPTABLE_ENTITY_TYPE_LIMIT',['../namespacetram.html#afde783f76b29484fca014a71379688da',1,'tram']]],\n  ['search_5fstring_5flength_11',['SEARCH_STRING_LENGTH',['../namespacetram_1_1_ext_1_1_kitchensink.html#a6a6727c817a50b06905e75396bc8eb1d',1,'tram::Ext::Kitchensink']]],\n  ['selected_5fcamera_12',['selected_camera',['../namespacetram_1_1_ext_1_1_camera.html#acf02ee4711f59697606b71a4712e98bc',1,'tram::Ext::Camera']]],\n  ['sender_13',['sender',['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256',1,'tram::Ext::Menu::MessageIntercept::sender()'],['../structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94',1,'tram::Message::sender()']]],\n  ['set_5ftransform_5fcallback_14',['set_transform_callback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#af92a134178d01636e1b003a46daafdda',1,'tram::Physics::API::CallbackMotionState']]],\n  ['setting_5flimit_15',['SETTING_LIMIT',['../namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f',1,'tram::Settings']]],\n  ['shader_16',['shader',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b',1,'tram::Render::API::GLDrawListEntry']]],\n  ['shader_5fpath_17',['shader_path',['../namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e',1,'tram::Render::API']]],\n  ['shake_5fmultiplier_18',['shake_multiplier',['../namespacetram_1_1_ext_1_1_camera.html#a810e7f445faeca85ab997f2c0d9c4bed',1,'tram::Ext::Camera']]],\n  ['shape_19',['shape',['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8',1,'tram::Physics::API::CollisionShapeTransform::shape()'],['../classtram_1_1_physics_1_1_collision_model.html#a1e1df5d474c902a9043f7c2c3f5526bd',1,'tram::Physics::CollisionModel::shape()']]],\n  ['short_5fname_20',['short_name',['../structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd',1,'tram::System::SystemInfo']]],\n  ['signal_5fcount_21',['signal_count',['../classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1',1,'tram::SignalTable']]],\n  ['signal_5ftype_5flimit_22',['SIGNAL_TYPE_LIMIT',['../namespacetram.html#a9773c849e7f41480842e5cd1d8d4de73',1,'tram']]],\n  ['signals_23',['signals',['../classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397',1,'tram::SignalTable::signals()'],['../classtram_1_1_entity.html#a32d15f20656ffc4da923380374605df0',1,'tram::Entity::signals()']]],\n  ['size_24',['size',['../structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8',1,'tram::Render::VertexAttribute::size()'],['../classtram_1_1_hashmap.html#a42d72204053c0f76f228ffcbd5b70411',1,'tram::Hashmap::size()']]],\n  ['skip_5fnewline_5fflag_25',['skip_newline_flag',['../classtram_1_1_file_reader_parser.html#a8a40dde3c4452991d297c18b8f4098bd',1,'tram::FileReaderParser']]],\n  ['skip_5fvalue_26',['skip_value',['../classtram_1_1_file_reader_parser.html#aa4102a29b7986a007aed7ffac17d6227',1,'tram::FileReaderParser']]],\n  ['sound_27',['sound',['../classtram_1_1_audio_component.html#aaa933d4c47c8636b20a47ae313a79230',1,'tram::AudioComponent::sound()'],['../classtram_1_1_sound.html#a06e516eef6120b6ccad7f04189b15dfb',1,'tram::Sound::sound()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a9769adf64aaa9639b7855aeb3919ee6f',1,'tram::Ext::Kitchensink::Button::sound()']]],\n  ['sound_5fbuffer_28',['sound_buffer',['../classtram_1_1_audio_1_1_sound.html#a515eabe2a7fd2c3c230f651592ec2c53',1,'tram::Audio::Sound']]],\n  ['sound_5fdata_29',['sound_data',['../classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d',1,'tram::Audio::Sound']]],\n  ['sound_5fflags_30',['sound_flags',['../classtram_1_1_sound.html#a3c17af183ae0f42e2b59f221281a9494',1,'tram::Sound']]],\n  ['sound_5flength_31',['sound_length',['../classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e',1,'tram::Audio::Sound']]],\n  ['source_32',['source',['../classtram_1_1_audio_component.html#acfa284e522ae3aa9cb61337b23327171',1,'tram::AudioComponent::source()'],['../classtram_1_1_render_1_1_material.html#a0106a7e3c671374dcfd7b68b7b363394',1,'tram::Render::Material::source()'],['../classtram_1_1_render_1_1_model.html#ac23726058a2d599fbcf09c6d774f6c91',1,'tram::Render::Model::source()']]],\n  ['source_5fcount_33',['SOURCE_COUNT',['../namespacetram_1_1_audio_1_1_spatial.html#a1dc54415cd0414f047cfd68c37ef13a8',1,'tram::Audio::Spatial']]],\n  ['source_5fdepth_5flimit_34',['SOURCE_DEPTH_LIMIT',['../namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee',1,'tram::Audio::Spatial']]],\n  ['source_5fdirection_35',['source_direction',['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6',1,'tram::Audio::Spatial::PathFromAudioSource']]],\n  ['source_5fideal_5fangle_36',['source_ideal_angle',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['special_5foption_37',['special_option',['../structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89',1,'tram::UI::KeyBinding']]],\n  ['special_5foption2_38',['special_option2',['../structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd',1,'tram::UI::KeyBinding']]],\n  ['specular_39',['specular',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['specular_5fexponent_40',['specular_exponent',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200',1,'tram::Render::API::D3DDrawListEntry::specular_exponent()'],['../classtram_1_1_render_1_1_material.html#ace75dc47785b62f847b18bd282ee140b',1,'tram::Render::Material::specular_exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa',1,'tram::Render::API::GLMaterial::specular_exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de',1,'tram::Render::API::SWDrawListEntry::specular_exponent()']]],\n  ['specular_5ftransparency_41',['specular_transparency',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e',1,'tram::Render::API::D3DDrawListEntry::specular_transparency()'],['../classtram_1_1_render_1_1_material.html#a840d1b1dc3b84dc2a5b4b7f24e02e8c6',1,'tram::Render::Material::specular_transparency()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64',1,'tram::Render::API::GLMaterial::specular_transparency()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d',1,'tram::Render::API::SWDrawListEntry::specular_transparency()']]],\n  ['specular_5fweight_42',['specular_weight',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3',1,'tram::Render::API::D3DDrawListEntry::specular_weight()'],['../classtram_1_1_render_1_1_material.html#acf5a270cd06229986d2953ff2b2d9944',1,'tram::Render::Material::specular_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f',1,'tram::Render::API::GLMaterial::specular_weight()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698',1,'tram::Render::API::SWDrawListEntry::specular_weight()']]],\n  ['speed_43',['speed',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e',1,'tram::Ext::Kitchensink::AnimState::speed()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac47c81071b86e3b5876d1baa0c263080',1,'tram::Ext::Kitchensink::Button::speed()'],['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6',1,'tram::AnimationComponent::AnimationPlaybackInfo::speed()']]],\n  ['spinlock_44',['spinlock',['../classtram_1_1_queue.html#aa0cce633bc90e45e142d32a0e7827d88',1,'tram::Queue']]],\n  ['sprite_45',['sprite',['../classtram_1_1_decal_component.html#a311a631005417b52f325462a23685f78',1,'tram::DecalComponent::sprite()'],['../classtram_1_1_particle_component.html#a10d73a307d53059911966e00f9ea0154',1,'tram::ParticleComponent::sprite()'],['../classtram_1_1_sprite_component.html#a620c3aef918cd8570932341099d5d7c4',1,'tram::SpriteComponent::sprite()']]],\n  ['sprite_5farray_46',['sprite_array',['../classtram_1_1_sprite_component.html#a4fbf77711c216c8fcc0b3187708e10f9',1,'tram::SpriteComponent']]],\n  ['sprite_5ffont_47',['sprite_font',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['sprite_5fglyph_48',['sprite_glyph',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['stack_49',['stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['stack_5fheight_50',['stack_height',['../structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c',1,'tram::GUI::FrameObject']]],\n  ['stacklength_51',['stackLength',['../classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4',1,'tram::Stack']]],\n  ['stackname_52',['stackName',['../classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e',1,'tram::Stack']]],\n  ['stacksize_53',['stackSize',['../classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a',1,'tram::Stack']]],\n  ['standing_5fon_54',['standing_on',['../classtram_1_1_raycast_controller_component.html#a46760dcc830550459b52f6b26cd80bcb',1,'tram::RaycastControllerComponent::standing_on()'],['../classtram_1_1_f_p_s_controller_component.html#a1a9c20ae30cc0939f1c09febafb1a001',1,'tram::FPSControllerComponent::standing_on()']]],\n  ['standing_5fon_5fprev_55',['standing_on_prev',['../classtram_1_1_raycast_controller_component.html#af3f3c01dc71c60f64fd65709c294e39d',1,'tram::RaycastControllerComponent::standing_on_prev()'],['../classtram_1_1_f_p_s_controller_component.html#ae4a70bf3706f1cbada7ed97f70482fe4',1,'tram::FPSControllerComponent::standing_on_prev()']]],\n  ['standing_5fpos_56',['standing_pos',['../classtram_1_1_raycast_controller_component.html#a621f23a281ed1fc9ab27bbb0ac4103e6',1,'tram::RaycastControllerComponent::standing_pos()'],['../classtram_1_1_f_p_s_controller_component.html#a37f280a78fdb1596861619db391ff09a',1,'tram::FPSControllerComponent::standing_pos()']]],\n  ['standing_5frot_57',['standing_rot',['../classtram_1_1_f_p_s_controller_component.html#ac1c3824186959467cdf5f12a5f2684cc',1,'tram::FPSControllerComponent']]],\n  ['start_5fpos_58',['start_pos',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a12a4f0a94979b7b9c112fe3d43dfefcd',1,'tram::Ext::Kitchensink::Button']]],\n  ['start_5frot_59',['start_rot',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ae091221f1e75d235db2a4ab7ba30b83b',1,'tram::Ext::Kitchensink::Button']]],\n  ['start_5fy_60',['start_y',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373',1,'tram::Render::API::ScanlineBuffer']]],\n  ['state_61',['state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault::state()'],['../structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb',1,'tram::System::SystemInfo::state()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a91ceb993b3cbf17626bccd4899157514',1,'tram::Ext::Kitchensink::Button::state()']]],\n  ['state_5fspace_62',['state_space',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['states_63',['states',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ab06a67f085e005f0e985fd03f1bd2dcc',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['static_5fvertex_5ffvf_64',['STATIC_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#aae43b3038bb50f8c12f079db41ce172e',1,'tram::Render::API']]],\n  ['statistics_5fenabled_65',['statistics_enabled',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#ae2ef205978570aa98b85d92117664971',1,'tram::Ext::Menu::DebugMenu']]],\n  ['statistics_5fmenu_66',['statistics_menu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a0f6a07f1747a26714f916feaa04d01ab',1,'tram::Ext::Menu::DebugMenu']]],\n  ['status_67',['status',['../classtram_1_1_resource.html#ad797d797d3fb0e517063f8178b0ff243',1,'tram::Resource']]],\n  ['step_5fheight_68',['step_height',['../classtram_1_1_f_p_s_controller_component.html#a4b07abe21f47fc5dbac586aa45875fa0',1,'tram::FPSControllerComponent::step_height()'],['../classtram_1_1_raycast_controller_component.html#aebcd878947abb26efd9f9fe66d6caf6b',1,'tram::RaycastControllerComponent::step_height()']]],\n  ['step_5fheight_5fcrouch_69',['step_height_crouch',['../classtram_1_1_f_p_s_controller_component.html#a4074f2e9e605af90024754008010a1a9',1,'tram::FPSControllerComponent']]],\n  ['stride_70',['stride',['../structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca',1,'tram::Render::VertexAttribute']]],\n  ['string_5fptr_71',['string_ptr',['../classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73',1,'tram::ValuePtr']]],\n  ['string_5fvalue_72',['string_value',['../classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b',1,'tram::Value']]],\n  ['subtitle_73',['subtitle',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['subtype_74',['subtype',['../structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e',1,'tram::Event::subtype()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#afbcb5e97dee6c1c8eb8a4e4fff488c4f',1,'tram::Ext::Menu::EventEmit::subtype()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee',1,'tram::Ext::Menu::EventIntercept::subtype()']]],\n  ['subtype_5fstring_75',['subtype_string',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ab28d6b55f6c036ebd9399dd1bbb22e25',1,'tram::Ext::Menu::EventEmit']]],\n  ['sun_5fcolor_76',['sun_color',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4',1,'tram::Render::API::LayerParameters::sun_color()'],['../namespacetram_1_1_render.html#a786b665a3cc7c9557dd8d67a418bcaaf',1,'tram::Render::sun_color()']]],\n  ['sun_5fdirection_77',['sun_direction',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82',1,'tram::Render::API::LayerParameters::sun_direction()'],['../namespacetram_1_1_render.html#ad44eb5b755e8ae84746af1b369c01908',1,'tram::Render::sun_direction()']]],\n  ['suncolor_78',['sunColor',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sundirection_79',['sunDirection',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sunweight_80',['sunWeight',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['sw_81',['sw',['../structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2',1,'tram::Render::drawlistentry_t::sw()'],['../structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27',1,'tram::Render::light_t::sw()'],['../structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b',1,'tram::Render::material_t::sw()']]],\n  ['sw_5findex_5farray_82',['sw_index_array',['../structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de',1,'tram::Render::indexarray_t']]],\n  ['sw_5ftexture_83',['sw_texture',['../structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced',1,'tram::Render::texturehandle_t']]],\n  ['sw_5fvertex_5farray_84',['sw_vertex_array',['../structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f',1,'tram::Render::vertexarray_t']]],\n  ['system_5flimit_85',['SYSTEM_LIMIT',['../namespacetram.html#aa4a96a9b06c171a66beb3fe0066ac6b5',1,'tram']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_13.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_13.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_13.js",
    "content": "var searchData=\n[\n  ['tab_0',['tab',['../classtram_1_1_ext_1_1_menu_1_1_settings_menu.html#a51abff2b754e4376be37a35cceacc839',1,'tram::Ext::Menu::SettingsMenu']]],\n  ['table_1',['table',['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#a61c57d2abc379ab7551ae47f74d31688',1,'tram::Ext::Kitchensink::AnimationStateComponent']]],\n  ['tag_2',['tag',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b',1,'tram::Ext::Kitchensink::Effect']]],\n  ['tail_3',['tail',['../structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621',1,'tram::Render::Bone']]],\n  ['tex_4',['tex',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be',1,'tram::Render::API::StaticVertex::tex()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150',1,'tram::Render::API::DynamicVertex::tex()'],['../structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224',1,'tram::Render::StaticModelVertex::tex()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9',1,'tram::Render::DynamicModelVertex::tex()']]],\n  ['tex_5fx_5',['tex_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5',1,'tram::Render::API::StaticVertex::tex_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82',1,'tram::Render::API::DynamicVertex::tex_x()']]],\n  ['tex_5fy_6',['tex_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9',1,'tram::Render::API::StaticVertex::tex_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed',1,'tram::Render::API::DynamicVertex::tex_y()']]],\n  ['texco_7',['texco',['../structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343',1,'tram::Render::SpriteVertex']]],\n  ['texcount_8',['texCount',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455',1,'tram::Render::API::GLDrawListEntry']]],\n  ['text_9',['text',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a6a03f676654c17d2aaeadf875b90f4e1',1,'tram::Ext::Menu::Console']]],\n  ['texture_10',['texture',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b',1,'tram::Render::API::D3DDrawListEntry::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e',1,'tram::Render::API::FVFHelper::texture()'],['../classtram_1_1_render_1_1_material.html#a5a6e15bdcaf42aaab5e8553733663037',1,'tram::Render::Material::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20',1,'tram::Render::API::FFPHelper::texture()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31',1,'tram::Render::API::SWDrawListEntry::texture()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738',1,'tram::Render::StaticModelVertex::texture()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3',1,'tram::Render::DynamicModelVertex::texture()'],['../structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e',1,'tram::Render::SpriteVertex::texture()'],['../structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99',1,'tram::Render::SpritePoint::texture()']]],\n  ['texture_5fdata_11',['texture_data',['../classtram_1_1_render_1_1_material.html#a56f47f2d65d43e654d0abf9d104dce3d',1,'tram::Render::Material']]],\n  ['texture_5flist_12',['texture_list',['../namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e',1,'tram::Render::API']]],\n  ['texture_5foffset_13',['texture_offset',['../structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516',1,'tram::Render::SpritePoint']]],\n  ['texture_5fsize_14',['texture_size',['../structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3',1,'tram::Render::SpritePoint']]],\n  ['texture_5ftransforms_15',['texture_transforms',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec',1,'tram::Render::API::GLDrawListEntry::texture_transforms()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711',1,'tram::Render::API::ShaderUniformModelMatrices::texture_transforms()']]],\n  ['texture_5ftype_16',['texture_type',['../classtram_1_1_render_1_1_material.html#a5eecc16043ab3c30d158f22429c3fd43',1,'tram::Render::Material']]],\n  ['textvertices_17',['textvertices',['../namespacetram_1_1_render.html#acbf7d35ffc1fe3624a48655681f07209',1,'tram::Render']]],\n  ['third_5fperson_18',['THIRD_PERSON',['../namespacetram_1_1_render.html#a8c04f6971cbc222d951bd80fb9fb56b9',1,'tram::Render']]],\n  ['tick_19',['tick',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac41e197036c5ef823dbcd7f6bb5ae240',1,'tram::Ext::Kitchensink::Button']]],\n  ['tick_5frate_20',['TICK_RATE',['../namespacetram.html#a675b9496ee55fb465aa5d4972b45bac7',1,'tram']]],\n  ['tilt_21',['tilt',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afdc06174463b8c44161f9f74f73fb81f',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5fgoal_22',['tilt_goal',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa9a3d94e83b762fc15edbf7d3da266a0',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5flast_23',['tilt_last',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a77c42a4916c08b1a297720aff63a77c7',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['tilt_5fspeed_24',['TILT_SPEED',['../namespacetram_1_1_ext_1_1_camera.html#af85f9d24f3adcf1113b2c6425f8474ac',1,'tram::Ext::Camera']]],\n  ['time_25',['time',['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf',1,'tram::Ext::Kitchensink::Effect::time()'],['../structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a',1,'tram::Ext::Menu::Intercept::time()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39',1,'tram::Render::API::ShaderUniformModelMatrices::time()']]],\n  ['time_5fspent_26',['time_spent',['../structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5faverage_27',['time_spent_average',['../structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5faverage_5fcollated_28',['time_spent_average_collated',['../structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5fcollated_29',['time_spent_collated',['../structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2',1,'tram::Stats::SystemStat']]],\n  ['time_5fspent_5ftotal_30',['time_spent_total',['../structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae',1,'tram::Stats::SystemStat']]],\n  ['time_5fstarted_31',['time_started',['../structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24',1,'tram::Stats::SystemStat']]],\n  ['timer_32',['timer',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a06388461c6b4eb74595e5231b97f1534',1,'tram::Ext::Kitchensink::Button']]],\n  ['title_33',['title',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['to_34',['to',['../structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee',1,'tram::Edge']]],\n  ['tolet_5femitter_35',['tolet_emitter',['../main_8cpp.html#aa6314261586f8d6bdb38d84211ab9068',1,'main.cpp']]],\n  ['tolet_5fspinner_36',['tolet_spinner',['../main_8cpp.html#aef1afcddb99ee1a555eb26a6904d7362',1,'main.cpp']]],\n  ['tolet_5fsprayer_37',['tolet_sprayer',['../main_8cpp.html#aa6df28e8f20bf2b2154a6676327ac225',1,'main.cpp']]],\n  ['tolet_5fsprite_38',['tolet_sprite',['../main_8cpp.html#ad5b4101b5ff3df42a2fe16f3499d1e67',1,'main.cpp']]],\n  ['totl_5fasserts_39',['totl_asserts',['../struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494',1,'_test_case']]],\n  ['tracked_5fentities_40',['tracked_entities',['../namespacetram_1_1_loader.html#acc765a2553ec7b9c33e50b473d38d371',1,'tram::Loader']]],\n  ['transitions_41',['transitions',['../classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5',1,'tram::WorldCell']]],\n  ['tree_42',['tree',['../structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d',1,'tram::Render::ModelAABB']]],\n  ['tree_5fhandle_43',['tree_handle',['../structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8',1,'tram::Render::LightTree::Light']]],\n  ['triangle_44',['triangle',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965',1,'tram::Render::AABB::QueryResponse']]],\n  ['triangles_45',['triangles',['../structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd',1,'tram::Render::ModelAABB::triangles()'],['../structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388',1,'tram::Render::TriangleBucket::triangles()']]],\n  ['trigger_46',['trigger',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c',1,'tram::Ext::Kitchensink::DialogAction']]],\n  ['trigger_5fflags_47',['trigger_flags',['../classtram_1_1_trigger.html#ab6e57dd6a789d4f62c5a85b2b6974040',1,'tram::Trigger']]],\n  ['triggercomponent_48',['triggercomponent',['../classtram_1_1_trigger.html#a72b18d259352340995c217999106916d',1,'tram::Trigger']]],\n  ['triggers_49',['triggers',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa',1,'tram::Ext::Kitchensink::Quest']]],\n  ['type_50',['type',['../structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1',1,'tram::Message::type()'],['../structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc',1,'tram::PathEdgeInfo::type()'],['../classtram_1_1_path_follower.html#ad11ffc06ffa7fa6b5fd4732ee7ec70ab',1,'tram::PathFollower::type()'],['../structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e',1,'tram::Settings::SettingInfo::type()'],['../structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472',1,'tram::Signal::type()'],['../classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa',1,'tram::Value::type()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c',1,'tram::Physics::API::RigidbodyMetadata::type()'],['../structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b',1,'tram::Physics::CollisionShape::type()'],['../classtram_1_1_render_1_1_material.html#adafa815945158f89825308d5286869d2',1,'tram::Render::Material::type()'],['../structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672',1,'tram::Render::VertexAttribute::type()'],['../structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a',1,'tram::Event::type()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133',1,'tram::Render::API::SWVertexArray::type()'],['../classtram_1_1_scriptable.html#ae2b71cc843f216e53f0eeb2a4ebed28e',1,'tram::Scriptable::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546',1,'tram::Ext::Kitchensink::Effect::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a',1,'tram::Ext::Kitchensink::DialogTopic::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d',1,'tram::Ext::Kitchensink::QuestVariable::type()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5',1,'tram::Ext::Kitchensink::QuestTrigger::type()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769',1,'tram::Ext::Menu::MessageIntercept::type()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a',1,'tram::Ext::Menu::EventIntercept::type()'],['../structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e',1,'tram::SharedEntityData::type()'],['../structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02',1,'tram::ListenerInfo::type()'],['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39',1,'tram::Render::AABB::QueryResponse::type()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_14.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_14.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_14.js",
    "content": "var searchData=\n[\n  ['uid_5fcharacter_5flimit_0',['UID_CHARACTER_LIMIT',['../namespacetram.html#abd586f202b2593831d3d48a18eb15776',1,'tram']]],\n  ['uid_5flimit_1',['UID_LIMIT',['../namespacetram.html#af8599d00d63ed9f6ee3eecb0c0b136b8',1,'tram']]],\n  ['uint32_2',['uint32',['../structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5',1,'tram::Settings::SettingInfo']]],\n  ['uint32_5fptr_3',['uint32_ptr',['../classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9',1,'tram::ValuePtr']]],\n  ['uint32_5fvalue_4',['uint32_value',['../classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de',1,'tram::Value']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_15.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_15.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_15.js",
    "content": "var searchData=\n[\n  ['value_0',['value',['../structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436',1,'tram::Ext::Kitchensink::AIVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5',1,'tram::Ext::Kitchensink::Effect::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd',1,'tram::Ext::Kitchensink::InitialAttribute::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887',1,'tram::Ext::Kitchensink::BaseAttribute::value()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a94f01baa040314e9e8bd6b218dffc904',1,'tram::Ext::Kitchensink::ItemClass::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88',1,'tram::Ext::Kitchensink::QuestVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad77d58b02c65c98115798f167a4a6cb4',1,'tram::Ext::Kitchensink::QuestVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa',1,'tram::Ext::Kitchensink::QuestVariable::value()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e',1,'tram::Ext::Kitchensink::QuestTrigger::value()'],['../structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93',1,'tram::Ext::Menu::MessageIntercept::value()'],['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e',1,'tram::Ext::Menu::EventIntercept::value()'],['../structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b',1,'tram::Settings::RawSetting::value()'],['../structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897',1,'tram::Settings::Property::value()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1',1,'tram::AABBTree::Node::value()'],['../structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996',1,'tram::Hashmap::Record::value()']]],\n  ['vao_1',['vao',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d',1,'tram::Render::API::GLDrawListEntry']]],\n  ['variable_2',['variable',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78',1,'tram::Ext::Kitchensink::DialogCondition::variable()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257',1,'tram::Ext::Kitchensink::QuestTrigger::variable()']]],\n  ['variable1_3',['variable1',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['variable2_4',['variable2',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['variables_5',['variables',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a07dad067bc1ef1dbfeaa7603a0c20130',1,'tram::Ext::Kitchensink::AIAgent::variables()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969',1,'tram::Ext::Kitchensink::Quest::variables()']]],\n  ['vec2_5fptr_6',['vec2_ptr',['../classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3',1,'tram::ValuePtr']]],\n  ['vec2_5fvalue_7',['vec2_value',['../classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a',1,'tram::Value']]],\n  ['vec3_5fptr_8',['vec3_ptr',['../classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba',1,'tram::ValuePtr']]],\n  ['vec3_5fvalue_9',['vec3_value',['../classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae',1,'tram::Value']]],\n  ['vec4_5fptr_10',['vec4_ptr',['../classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d',1,'tram::ValuePtr']]],\n  ['vec4_5fvalue_11',['vec4_value',['../classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8',1,'tram::Value']]],\n  ['velocity_12',['velocity',['../classtram_1_1_f_p_s_controller_component.html#a73e7514f41a865feee9c0f9af2963911',1,'tram::FPSControllerComponent::velocity()'],['../structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f',1,'tram::ParticleComponent::Particle::velocity()']]],\n  ['vertex_5farray_13',['vertex_array',['../classtram_1_1_decal_component.html#abc2da65e6a353c30908e5826b744b217',1,'tram::DecalComponent::vertex_array()'],['../classtram_1_1_particle_component.html#afc6cc6df023adfb622490cb39dee2df2',1,'tram::ParticleComponent::vertex_array()'],['../classtram_1_1_sprite_component.html#af8e1293692c40c7817c7f7523c2d2ef7',1,'tram::SpriteComponent::vertex_array()'],['../classtram_1_1_render_1_1_model.html#ab5b0370a3b31cb6fa1b9ae0ad969a5aa',1,'tram::Render::Model::vertex_array()'],['../structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5',1,'tram::Render::spritearray_t::vertex_array()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2',1,'tram::Render::API::SWDrawListEntry::vertex_array()']]],\n  ['vertex_5farrays_14',['vertex_arrays',['../namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2',1,'tram::Render::API']]],\n  ['vertex_5fbuffer_15',['vertex_buffer',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891',1,'tram::Render::API::D3DDrawListEntry']]],\n  ['vertex_5fbuffer_5fmetadata_16',['vertex_buffer_metadata',['../namespacetram_1_1_render_1_1_a_p_i.html#a7897c51fe39d6a65173b8f12bb3b6185',1,'tram::Render::API']]],\n  ['vertex_5fcount_17',['vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c',1,'tram::Render::API::D3DDrawListEntry::vertex_count()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f',1,'tram::Render::API::SWVertexArray::vertex_count()']]],\n  ['vertex_5fformat_18',['vertex_format',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64',1,'tram::Render::API::VertexBufferMetadata::vertex_format()'],['../classtram_1_1_render_1_1_model.html#af924ab3580f9d3e0b5fb773fa2afd8d8',1,'tram::Render::Model::vertex_format()']]],\n  ['verticality_19',['verticality',['../structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8',1,'tram::Render::SpriteVertex']]],\n  ['vertices_20',['vertices',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d',1,'tram::Render::API::SWVertexArray::vertices()'],['../structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0',1,'tram::Render::StaticModelData::vertices()'],['../structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473',1,'tram::Render::DynamicModelData::vertices()']]],\n  ['view_21',['view',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26',1,'tram::Render::API::ShaderUniformMatrices::view()'],['../namespacetram_1_1_render.html#af103c344516eb912ffbee889c05775cc',1,'tram::Render::view()']]],\n  ['view_5ffov_22',['view_fov',['../namespacetram_1_1_render.html#af4c8e9b6a1eec2f0b34697baf4a4249c',1,'tram::Render']]],\n  ['view_5fmatrix_23',['view_matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95',1,'tram::Render::API::LayerParameters']]],\n  ['view_5fpos_24',['view_pos',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf',1,'tram::Render::API::ShaderUniformMatrices']]],\n  ['view_5fposition_25',['view_position',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd',1,'tram::Render::API::LayerParameters::view_position()'],['../namespacetram_1_1_render.html#ac04ea2d1a0ebf06f9737506c4a145349',1,'tram::Render::view_position()']]],\n  ['view_5fproperties_26',['view_properties',['../namespacetram_1_1_render.html#a6d7d51d8e68a3a77b1015fa31e838e57',1,'tram::Render']]],\n  ['view_5frotation_27',['view_rotation',['../namespacetram_1_1_render.html#a296b3bccc75faa4a1c6bfae290d673d6',1,'tram::Render']]],\n  ['viewmodel_28',['viewmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['voffset_29',['voffset',['../structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001',1,'tram::Render::SpriteVertex']]],\n  ['volume_30',['volume',['../classtram_1_1_sound.html#a08126edbad4f337264ff1206e96ef145',1,'tram::Sound::volume()'],['../classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22',1,'tram::WorldCell::volume()']]],\n  ['vsync_31',['vsync',['../namespacetram_1_1_platform.html#a45688259010e30ccfd694bf81f4abc99',1,'tram::Platform']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_16.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_16.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_16.js",
    "content": "var searchData=\n[\n  ['w_0',['w',['../structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6',1,'tram::GUI::FrameObject']]],\n  ['walk_5fcollision_1',['walk_collision',['../classtram_1_1_f_p_s_controller_component.html#af2a12d9cc7a245087852634e14b9bb2d',1,'tram::FPSControllerComponent']]],\n  ['walk_5fspeed_2',['walk_speed',['../classtram_1_1_f_p_s_controller_component.html#a1180c411c80596ee1d75daa987ce96f7',1,'tram::FPSControllerComponent::walk_speed()'],['../classtram_1_1_raycast_controller_component.html#ad0e8ba76175ff6d4adabaa860ea82bd3',1,'tram::RaycastControllerComponent::walk_speed()']]],\n  ['wall_5fcollision_3',['wall_collision',['../classtram_1_1_raycast_controller_component.html#a4989dfffd26974233d53a1d6c4eb8407',1,'tram::RaycastControllerComponent']]],\n  ['wallbonk_5fcallback_4',['wallbonk_callback',['../classtram_1_1_f_p_s_controller_component.html#a179230b5c2c207d38f12b1e784f00bb2',1,'tram::FPSControllerComponent::wallbonk_callback()'],['../classtram_1_1_raycast_controller_component.html#aa0b73d887c0b9349667c2dc9271e45cd',1,'tram::RaycastControllerComponent::wallbonk_callback()']]],\n  ['weight_5',['weight',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81',1,'tram::AnimationComponent::AnimationPlaybackInfo::weight()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e',1,'tram::Ext::Kitchensink::AnimState::weight()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175',1,'tram::Ext::Kitchensink::ItemClass::weight()']]],\n  ['wgt_6',['wgt',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f1_7',['wgt_1',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f2_8',['wgt_2',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5f3_9',['wgt_3',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567',1,'tram::Render::API::DynamicVertex']]],\n  ['wgt_5fi_10',['wgt_i',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359',1,'tram::Render::API::DynamicVertex']]],\n  ['width_11',['width',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f',1,'tram::Ext::Kitchensink::ItemClass::width()'],['../classtram_1_1_render_1_1_material.html#a39fdf6cc003568ca64a0b47af65d0cca',1,'tram::Render::Material::width()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6',1,'tram::Render::API::SWTexture::width()'],['../structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58',1,'tram::Render::SpriteFrame::width()']]],\n  ['worldcell_5flimit_12',['WORLDCELL_LIMIT',['../namespacetram.html#ab751286624cca492c1abca52f7e0be8c',1,'tram']]],\n  ['worldcell_5ftransition_5flimit_13',['WORLDCELL_TRANSITION_LIMIT',['../namespacetram.html#a1423ecbdc7b2879d47ac484d812fda50',1,'tram']]],\n  ['worldmodel_14',['worldmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['writer_15',['writer',['../classtram_1_1_file.html#ae80f51acbe4f7c016309d1525b00e25a',1,'tram::File']]],\n  ['writer_5fparser_16',['writer_parser',['../classtram_1_1_file.html#a3a53d60bca18a5afefa92a1ed1b70bd1',1,'tram::File']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_17.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_17.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_17.js",
    "content": "var searchData=\n[\n  ['x_0',['x',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a',1,'tram::Ext::Kitchensink::ItemInstance::x()'],['../structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e',1,'tram::GUI::FrameObject::x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039',1,'tram::Render::API::Point2D::x()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_18.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_18.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_18.js",
    "content": "var searchData=\n[\n  ['y_0',['y',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87',1,'tram::Ext::Kitchensink::ItemInstance::y()'],['../structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2',1,'tram::GUI::FrameObject::y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28',1,'tram::Render::API::Point2D::y()']]],\n  ['yaw_1',['yaw',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa2a9d5accb0655fdb4185a73866bb13b',1,'tram::Ext::Camera::FirstPersonCamera']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_2.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_2.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_2.js",
    "content": "var searchData=\n[\n  ['callback_0',['callback',['../classtram_1_1_ext_1_1_menu_1_1_entity_picker.html#a8c023a757a11debd8fd69ed09164e78a',1,'tram::Ext::Menu::EntityPicker::callback()'],['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a5651a090194d79d5ce22e0bca536b760',1,'tram::Ext::Menu::ListSelection::callback()'],['../structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5',1,'tram::Async::ResourceRequest::callback()']]],\n  ['callback_5fcount_1',['callback_count',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a78e5e9c142141e83c4060ac83702e261',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['callback_5fdata_2',['callback_data',['../structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea',1,'tram::Async::ResourceRequest']]],\n  ['camera_3',['camera',['../main_8cpp.html#a9b1d1ad26dca3cdfbe7bcabb98c50bcd',1,'main.cpp']]],\n  ['camera_5fmultiplier_4',['CAMERA_MULTIPLIER',['../namespacetram.html#a26aea911deb4f2a882fecaa9db2cca5f',1,'tram']]],\n  ['camera_5fsensitivity_5',['CAMERA_SENSITIVITY',['../namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af',1,'tram::UI']]],\n  ['camera_5fspeed_6',['CAMERA_SPEED',['../namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c',1,'tram::UI']]],\n  ['camera_5fsystem_7',['CAMERA_SYSTEM',['../namespacetram_1_1_ext_1_1_camera.html#a9ef902fd854a7068580fccde152ed56d',1,'tram::Ext::Camera']]],\n  ['cell_8',['cell',['../classtram_1_1_ext_1_1_menu_1_1_world_cell_properties.html#af1e688384507e5243de02c997e49f8fc',1,'tram::Ext::Menu::WorldCellProperties::cell()'],['../classtram_1_1_entity.html#ad3fb3cd40bf0ec9c846a46704d4f7470',1,'tram::Entity::cell()']]],\n  ['cell_5finto_9',['cell_into',['../classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5',1,'tram::Transition']]],\n  ['center_10',['center',['../structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620',1,'tram::Render::SpritePoint']]],\n  ['chamberpot_11',['chamberpot',['../main_8cpp.html#acc812653ff7db6ef5da9d01fbfd28f17',1,'main.cpp']]],\n  ['channels_12',['channels',['../classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369',1,'tram::Audio::Sound::channels()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f',1,'tram::Audio::Spatial::AudioBuffer::channels()'],['../classtram_1_1_render_1_1_material.html#aa342a4e570d577fd626ee7999ca2fd2b',1,'tram::Render::Material::channels()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d',1,'tram::Render::API::SWTexture::channels()']]],\n  ['character_13',['character',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6',1,'tram::Ext::Kitchensink::FactionRank::character()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974',1,'tram::Ext::Kitchensink::CharacterDisposition::character()']]],\n  ['character_5fclass_14',['character_class',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a2daf2dcab1aad5fbe67778562158b7b5',1,'tram::Ext::Kitchensink::Character']]],\n  ['character_5fcount_15',['CHARACTER_COUNT',['../character_8cpp.html#af6d152c6a0610a977ca689f1a964a1cf',1,'character.cpp']]],\n  ['children_16',['children',['../structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af',1,'tram::Ext::Kitchensink::EntityChildren']]],\n  ['class_5fcount_17',['CLASS_COUNT',['../character_8cpp.html#a1b511158ca6796bb813f3bdb64369417',1,'character.cpp']]],\n  ['clear_18',['clear',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f',1,'tram::Ext::Kitchensink::InventoryFactoryInfo']]],\n  ['clear_5fscreen_19',['clear_screen',['../namespacetram_1_1_render_1_1_a_p_i.html#a7f589aad0fe82884c1fc279e5f29092e',1,'tram::Render::API']]],\n  ['co_20',['co',['../structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3',1,'tram::Render::LineVertex::co()'],['../structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589',1,'tram::Render::SpriteVertex::co()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4',1,'tram::Render::DynamicModelVertex::co()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376',1,'tram::Render::StaticModelVertex::co()']]],\n  ['col_21',['col',['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c',1,'tram::Render::API::ColorVertex']]],\n  ['collide_22',['collide',['../classtram_1_1_controller_component.html#a93abb6fa1349a41b93f53450817f9839',1,'tram::ControllerComponent']]],\n  ['collider_23',['collider',['../structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff',1,'tram::Physics::Collision']]],\n  ['collision_5fcallback_24',['collision_callback',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['collision_5fdata_25',['collision_data',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['collision_5fflags_26',['collision_flags',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['collision_5fgroup_27',['collision_group',['../classtram_1_1_f_p_s_controller_component.html#a2b9917a31e94c6ba8f331dfc19184299',1,'tram::FPSControllerComponent::collision_group()'],['../classtram_1_1_raycast_controller_component.html#a61464776123849a63632483d70f9f099',1,'tram::RaycastControllerComponent::collision_group()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead',1,'tram::Physics::API::RigidbodyMetadata::collision_group()'],['../namespacetram.html#a47a4bfe3c127f07cf4fa3a20e3785f8a',1,'tram::collision_group()']]],\n  ['collision_5fheight_28',['collision_height',['../classtram_1_1_f_p_s_controller_component.html#a87c5ec8a494fd31a64e42492959673ed',1,'tram::FPSControllerComponent::collision_height()'],['../classtram_1_1_raycast_controller_component.html#a77d4b6aa40aaff452eb3793ddf9f087a',1,'tram::RaycastControllerComponent::collision_height()'],['../namespacetram.html#a73098ef9a80f90afd7d8f6ff04e420b9',1,'tram::collision_height()']]],\n  ['collision_5fheight_5fcrouch_29',['collision_height_crouch',['../namespacetram.html#a7cc6a6286e4acb91210a3c71fb8e805f',1,'tram::collision_height_crouch()'],['../classtram_1_1_f_p_s_controller_component.html#aca171f9f6200c93a0dd9dadab48cfa04',1,'tram::FPSControllerComponent::collision_height_crouch()']]],\n  ['collision_5fmask_30',['collision_mask',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb',1,'tram::Physics::API::RigidbodyMetadata::collision_mask()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0',1,'tram::Physics::API::ShapecastCallback::collision_mask()'],['../classtram_1_1_trigger.html#acd2708416416c4ecefaaf3d58022fe68',1,'tram::Trigger::collision_mask()']]],\n  ['collision_5fwidth_31',['collision_width',['../namespacetram.html#a1759e20de49502fc468e5b65e7baf481',1,'tram::collision_width()'],['../classtram_1_1_f_p_s_controller_component.html#a039b23d22ab01048dfacf106b1f33781',1,'tram::FPSControllerComponent::collision_width()'],['../classtram_1_1_raycast_controller_component.html#a68e41561de1361f67cb1782d0dc0a97f',1,'tram::RaycastControllerComponent::collision_width()']]],\n  ['collisions_32',['collisions',['../structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8',1,'tram::Physics::API::ShapecastCallback']]],\n  ['collmodel_33',['collmodel',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a9ad7471be8c0660f00e4f383673cd811',1,'tram::Ext::Kitchensink::DebugShape::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a0d72864744e1e06e95d53d7dfad8e775',1,'tram::Ext::Kitchensink::TriggerAutosave::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a6c79786157db20e80cc05ac169212de7',1,'tram::Ext::Kitchensink::TriggerHurt::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a6aaf60e131f0300688ae31d33413e4e0',1,'tram::Ext::Kitchensink::TriggerOnce::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a46495b4ffb89238697269f7dde7ba3f8',1,'tram::Ext::Kitchensink::TriggerMultiple::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#ac318ecbabe95dcb0beedd361a048cbaa',1,'tram::Ext::Kitchensink::TriggerRemove::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#a413cebe7dae0b94c8445d9cc4692d88a',1,'tram::Ext::Kitchensink::TriggerTeleport::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a6bcb6e7ecadc6d10fc9cb87afab88539',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::collmodel()'],['../classtram_1_1_crate.html#a739363f4998b4e6367a8dbc620156a34',1,'tram::Crate::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a9dd4b432726ee750a3c86fff4e6886ee',1,'tram::Ext::Kitchensink::Breakable::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a7814a30089783833b4f13ab9f009b4ea',1,'tram::Ext::Kitchensink::Water::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#a0ffb909fcfd24bf1eb7e1abd23af9e88',1,'tram::Ext::Kitchensink::Train::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a0ca93c8adc4f2ef76393b972dc9decaf',1,'tram::Ext::Kitchensink::Pickup::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a9d06ca5c12e96a67c3f5560ad8832215',1,'tram::Ext::Kitchensink::DebugText::collmodel()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a3c59dbb31bfa17213ffd45b84c655a5c',1,'tram::Ext::Kitchensink::TriggerPush::collmodel()']]],\n  ['color_34',['color',['../structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e',1,'tram::Render::SpriteVertex::color()'],['../structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40',1,'tram::Render::LineVertex::color()'],['../structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e',1,'tram::Render::SpritePoint::color()'],['../classtram_1_1_light_component.html#a9613f69281a1170cd3465920fc8254ef',1,'tram::LightComponent::color()'],['../classtram_1_1_render_component.html#a3802d623d0009f2649888be1a23dfba4',1,'tram::RenderComponent::color()'],['../classtram_1_1_light.html#ac704c0af1a53820b9dcbcaa991650787',1,'tram::Light::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7',1,'tram::Render::API::D3DDrawListEntry::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a',1,'tram::Render::API::D3DLight::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2',1,'tram::Render::API::FVFHelper::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588',1,'tram::Render::API::LineVertex::color()'],['../classtram_1_1_render_1_1_material.html#a22ce9caef788daf431d1e339fe72423d',1,'tram::Render::Material::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde',1,'tram::Render::API::GLLight::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8',1,'tram::Render::API::GLMaterial::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929',1,'tram::Render::API::SWLight::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e',1,'tram::Render::API::FFPHelper::color()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f',1,'tram::Render::API::SWDrawListEntry::color()']]],\n  ['colorlines_35',['colorlines',['../namespacetram_1_1_render.html#a4fbef4fea80d616dcb5ca311f69e32d6',1,'tram::Render']]],\n  ['colorlines_5fentry_36',['colorlines_entry',['../namespacetram_1_1_render.html#afdc87f9f25286c1ac68113e173db9c65',1,'tram::Render']]],\n  ['colorlines_5fvertex_5farray_37',['colorlines_vertex_array',['../namespacetram_1_1_render.html#a56939aaf0348435b0e53119c4df5ce6f',1,'tram::Render']]],\n  ['colors_38',['colors',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464',1,'tram::Render::API::GLDrawListEntry::colors()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7',1,'tram::Render::API::ShaderUniformModelMatrices::colors()']]],\n  ['comparison_39',['comparison',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['compartment_40',['compartment',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090',1,'tram::Ext::Kitchensink::ItemInstance']]],\n  ['compartments_41',['compartments',['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2a252220bb1ea4bd2303bb6b54cfeba7',1,'tram::Ext::Kitchensink::Inventory']]],\n  ['component_42',['component',['../structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf',1,'tram::ListenerInfo::component()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_animation_state_component.html#ad3332339eb0ad584e6dea173f1a03ad7',1,'tram::Ext::Kitchensink::AnimationStateComponent::component()']]],\n  ['component_5flimit_5fanimation_43',['COMPONENT_LIMIT_ANIMATION',['../namespacetram.html#aefb7b9aa5163a6725fc02bde6672b88f',1,'tram']]],\n  ['component_5flimit_5faudio_44',['COMPONENT_LIMIT_AUDIO',['../namespacetram.html#a7db4cca9ab5ecae0d8d4de7effd6aec5',1,'tram']]],\n  ['component_5flimit_5fcontroller_45',['COMPONENT_LIMIT_CONTROLLER',['../namespacetram.html#a66281a5ccd6da73b86dd9a2ba49585a2',1,'tram']]],\n  ['component_5flimit_5fdecal_46',['COMPONENT_LIMIT_DECAL',['../namespacetram.html#a38c17cf408e9c052cf6e8250250ef68f',1,'tram']]],\n  ['component_5flimit_5flight_47',['COMPONENT_LIMIT_LIGHT',['../namespacetram.html#a0351a7a038c0c51bf2e41a37bb54702c',1,'tram']]],\n  ['component_5flimit_5fparticle_48',['COMPONENT_LIMIT_PARTICLE',['../namespacetram.html#a1ef1096144023efed74009fd55ff4668',1,'tram']]],\n  ['component_5flimit_5fphysics_49',['COMPONENT_LIMIT_PHYSICS',['../namespacetram.html#aef0b54c575d166021a519456e745e5a8',1,'tram']]],\n  ['component_5flimit_5fplayer_50',['COMPONENT_LIMIT_PLAYER',['../namespacetram.html#a8d062bfaaf077ec23a49b1e932f27b6a',1,'tram']]],\n  ['component_5flimit_5frender_51',['COMPONENT_LIMIT_RENDER',['../namespacetram.html#afdf2b176e856c8c025e6c5a05b376f2f',1,'tram']]],\n  ['component_5flimit_5fsprite_52',['COMPONENT_LIMIT_SPRITE',['../namespacetram.html#a5099d59ad2cf7be3d5f16024f0a1443d',1,'tram']]],\n  ['component_5flimit_5ftrigger_53',['COMPONENT_LIMIT_TRIGGER',['../namespacetram.html#abf691e9b98162d05d0b235cf0f3d9387',1,'tram']]],\n  ['condition_54',['condition',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33',1,'tram::Ext::Kitchensink::QuestTrigger::condition()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f',1,'tram::Ext::Kitchensink::DialogTopic::condition()']]],\n  ['console_5flogs_55',['console_logs',['../namespacetram_1_1_ext_1_1_menu.html#af86d588e63468dd9f7b354da13f18124',1,'tram::Ext::Menu']]],\n  ['constants_56',['constants',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35',1,'tram::Render::LightGraph::Node']]],\n  ['constr_5ffunc_57',['constr_func',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['constructor_58',['constructor',['../structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f',1,'tram::EntityTypeInfo']]],\n  ['controllercomponent_59',['controllercomponent',['../classtram_1_1_player.html#a9a9d322035d6f80a89abf2e67337c52e',1,'tram::Player']]],\n  ['coordinate_60',['coordinate',['../structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612',1,'tram::Render::API::ClipPoint']]],\n  ['coords_61',['coords',['../structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2',1,'tram::ParticleComponent::Particle']]],\n  ['count_62',['count',['../classtram_1_1_queue.html#aa896915df22a178fe292fc763131184c',1,'tram::Queue::count()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d',1,'tram::Ext::Kitchensink::QuestVariable::count()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0',1,'tram::Ext::Kitchensink::ItemInstance::count()']]],\n  ['crouch_5fcollision_63',['crouch_collision',['../classtram_1_1_f_p_s_controller_component.html#aef3a06f85b58004fca42a4c42f5249c5',1,'tram::FPSControllerComponent']]],\n  ['crouch_5fspeed_64',['crouch_speed',['../classtram_1_1_raycast_controller_component.html#ac4fb92ffbcee998d0d015535549f763d',1,'tram::RaycastControllerComponent::crouch_speed()'],['../classtram_1_1_f_p_s_controller_component.html#ae9f922b8e4f7224dbae472337193752d',1,'tram::FPSControllerComponent::crouch_speed()']]],\n  ['crouching_65',['crouching',['../classtram_1_1_raycast_controller_component.html#aa6bcf9e2bb535b216000806c8750f5bf',1,'tram::RaycastControllerComponent::crouching()'],['../classtram_1_1_f_p_s_controller_component.html#a21405af6b1d6b8fda3258d50960428cb',1,'tram::FPSControllerComponent::crouching()']]],\n  ['csize_66',['csize',['../classtram_1_1_queue.html#afa65ddd7ad10c02cefc507a06c4cbbd1',1,'tram::Queue']]],\n  ['current_5fmonitor_67',['current_monitor',['../namespacetram_1_1_platform.html#ac2ffb1c1eceb5cc52cb771ab6f1f0b26',1,'tram::Platform']]],\n  ['current_5fvertex_5fcount_68',['current_vertex_count',['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706',1,'tram::Render::API::VertexBufferMetadata']]],\n  ['cursor_5fx_69',['cursor_x',['../structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501',1,'tram::GUI::FrameObject']]],\n  ['cursor_5fy_70',['cursor_y',['../structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e',1,'tram::GUI::FrameObject']]],\n  ['cycles_5fsince_5flast_5fhit_71',['cycles_since_last_hit',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44',1,'tram::Audio::Spatial::PathTracingResult::cycles_since_last_hit()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff',1,'tram::Audio::Spatial::PathExplorationResult::cycles_since_last_hit()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_3.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_3.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_3.js",
    "content": "var searchData=\n[\n  ['d3d_0',['d3d',['../structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a',1,'tram::Render::drawlistentry_t::d3d()'],['../structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5',1,'tram::Render::light_t::d3d()'],['../structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5',1,'tram::Render::material_t::d3d()']]],\n  ['d3d_5findex_5fbuffer_1',['d3d_index_buffer',['../structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3',1,'tram::Render::indexarray_t']]],\n  ['d3d_5fmetadata_2',['d3d_metadata',['../structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be',1,'tram::Render::vertexarray_t']]],\n  ['d3d_5ftexture_5fhandle_3',['d3d_texture_handle',['../structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e',1,'tram::Render::texturehandle_t']]],\n  ['d3d_5fvertex_5fbuffer_4',['d3d_vertex_buffer',['../structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e',1,'tram::Render::vertexarray_t']]],\n  ['data_5',['data',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7',1,'tram::Audio::Spatial::AudioBuffer::data()'],['../structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0',1,'tram::ListenerInfo::data()'],['../structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10',1,'tram::Event::data()'],['../structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925',1,'tram::Message::data()'],['../structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26',1,'tram::Signal::data()'],['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984',1,'tram::Render::AABB::QueryResponse::data()'],['../structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb',1,'tram::Octree::Node::data()']]],\n  ['data_5ffunction_6',['data_function',['../structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722',1,'tram::ListenerInfo']]],\n  ['data_5fint_7',['data_int',['../structtram_1_1_event.html#a6f907880059f690671dda82db28439f5',1,'tram::Event::data_int()'],['../structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494',1,'tram::Message::data_int()']]],\n  ['data_5fpointer_8',['data_pointer',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ae865860d86b2764693cf6e37a49c7d97',1,'tram::Physics::API::CallbackMotionState']]],\n  ['data_5fvalue_9',['data_value',['../structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319',1,'tram::Event::data_value()'],['../structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d',1,'tram::Message::data_value()']]],\n  ['debug_5fmenu_10',['debug_menu',['../namespacetram_1_1_ext_1_1_menu.html#a97df158550c8ac0179e812214570003b',1,'tram::Ext::Menu']]],\n  ['debugtext_5fentry_11',['debugtext_entry',['../namespacetram_1_1_render.html#a2e1e2410b7586fbd9fcc9ac537f6b58c',1,'tram::Render']]],\n  ['debugtext_5fvertex_5farray_12',['debugtext_vertex_array',['../namespacetram_1_1_render.html#aef5acbc59557fb9733ae605596cb9ab4',1,'tram::Render']]],\n  ['decoration_5fflags_13',['decoration_flags',['../classtram_1_1_decoration.html#a1d99378203e46938e612013702b092d6',1,'tram::Decoration']]],\n  ['default_5fcompartment_14',['default_compartment',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a153ebc85b2da1604a680fc0556f54578',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['definition_15',['definition',['../structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0',1,'tram::Render::RegisteredVertexDefinition']]],\n  ['delay_16',['delay',['../structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0',1,'tram::Signal']]],\n  ['depth_17',['depth',['../structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30',1,'tram::Render::API::Point2D']]],\n  ['derp_18',['derp',['../main_8cpp.html#a8bb2bbfa377225bdc2575d60f73eb24d',1,'main.cpp']]],\n  ['derp_5fplayer_19',['derp_player',['../main_8cpp.html#a705d8710b0919174ceba4c291f26824b',1,'main.cpp']]],\n  ['destr_5ffunc_20',['destr_func',['../structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9',1,'tram::ScriptableType::ScriptableTypeInfo']]],\n  ['destructor_21',['destructor',['../structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2',1,'tram::EntityTypeInfo']]],\n  ['dimensions_22',['dimensions',['../structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a',1,'tram::Render::SpritePoint']]],\n  ['dingbat_23',['dingbat',['../main_8cpp.html#a39e40a8e7cee2dd7c112dcd36fe20cb6',1,'main.cpp']]],\n  ['direction_24',['direction',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391',1,'tram::Render::API::GLLight::direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421',1,'tram::Render::API::SWLight::direction()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7',1,'tram::Audio::Spatial::PathFromAudioSource::direction()'],['../classtram_1_1_light_component.html#ae3d891ff89275a995fddeda744b085cf',1,'tram::LightComponent::direction()'],['../classtram_1_1_light.html#ab4a742307b9c463eef63115ad3b19ae3',1,'tram::Light::direction()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a96280d02e43933a1164d053405b673b1',1,'tram::Ext::Kitchensink::Button::direction()'],['../classtram_1_1_path_follower.html#ab026659adb3008a000bb00753cc74e07',1,'tram::PathFollower::direction()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5',1,'tram::Render::API::D3DLight::direction()']]],\n  ['disposition_25',['disposition',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765',1,'tram::Ext::Kitchensink::FactionRelation::disposition()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7',1,'tram::Ext::Kitchensink::CharacterDisposition::disposition()']]],\n  ['dispositions_26',['dispositions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a3bb575e1785d96a33747804dc658bffc',1,'tram::Ext::Kitchensink::Character']]],\n  ['distance_27',['distance',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a07df9007e2a4fa2938fe69f78e2db2c0',1,'tram::Ext::Kitchensink::Button::distance()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad',1,'tram::Physics::API::ObjectCollision::distance()'],['../structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8',1,'tram::Physics::Collision::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271',1,'tram::Render::API::D3DLight::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab',1,'tram::Render::API::GLLight::distance()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67',1,'tram::Render::API::SWLight::distance()'],['../structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2',1,'tram::Octree::NearestSearch::distance()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858',1,'tram::Render::LightTree::Light::distance()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549',1,'tram::Audio::Spatial::PathTracingResult::distance()'],['../classtram_1_1_light_component.html#a97341de0a9ff1c7ebd0d9ae721af0bac',1,'tram::LightComponent::distance()'],['../classtram_1_1_light.html#a8ebcbf936a12dbcef52e33fe7efe4653',1,'tram::Light::distance()']]],\n  ['distance_5fdelay_28',['distance_delay',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['draw_5flist_29',['draw_list',['../namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671',1,'tram::Render::API']]],\n  ['draw_5flist_5fentries_30',['draw_list_entries',['../classtram_1_1_render_component.html#a593b1a595fd07f68a4c4aa3fdfeb33c4',1,'tram::RenderComponent']]],\n  ['draw_5flist_5fentry_31',['draw_list_entry',['../classtram_1_1_decal_component.html#a3e8165999c84aaa7af2d92e22b0e19cf',1,'tram::DecalComponent::draw_list_entry()'],['../classtram_1_1_particle_component.html#ac7bc366fee1d155a6f7f60ca1c7474cc',1,'tram::ParticleComponent::draw_list_entry()'],['../classtram_1_1_sprite_component.html#ab8df644a8df43af1ffdf9de7ce156ac8',1,'tram::SpriteComponent::draw_list_entry()']]],\n  ['draw_5frender_5fdebug_32',['DRAW_RENDER_DEBUG',['../namespacetram_1_1_render.html#a0328476aed6f9a79b37ead38c539d30b',1,'tram::Render']]],\n  ['dynamic_5fvertex_5ffvf_33',['DYNAMIC_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#a1c2a4d0725f893593398cf0a61aa69a2',1,'tram::Render::API']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_4.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_4.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_4.js",
    "content": "var searchData=\n[\n  ['ebolen_0',['eboLen',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917',1,'tram::Render::API::GLDrawListEntry']]],\n  ['ebooff_1',['eboOff',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a',1,'tram::Render::API::GLDrawListEntry']]],\n  ['edge_5finfos_2',['edge_infos',['../classtram_1_1_path.html#a296e431440d4a7572afa87217fd46996',1,'tram::Path']]],\n  ['edges_3',['edges',['../classtram_1_1_audio_1_1_sound_graph.html#a6862a1fe3026f98bafee3fc0cf8c465e',1,'tram::Audio::SoundGraph::edges()'],['../structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce',1,'tram::Node::edges()'],['../classtram_1_1_graph.html#a4c1e9f785fe9ac3fe2665d073f2a6722',1,'tram::Graph::edges()'],['../classtram_1_1_render_1_1_light_graph.html#a076e24396cd1802aa4abbd69d49e1c8d',1,'tram::Render::LightGraph::edges()']]],\n  ['eerp_4',['eerp',['../main_8cpp.html#ad4a7109a74a328b58d1568997f025a46',1,'main.cpp']]],\n  ['effective_5fvalue_5',['effective_value',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112',1,'tram::Ext::Kitchensink::Attribute']]],\n  ['effects_6',['effects',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae',1,'tram::Ext::Kitchensink::AttributeContainer::effects()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad45de9b346dd461a8529e23a44e0dde4',1,'tram::Ext::Kitchensink::ItemClass::effects()']]],\n  ['emission_5frate_7',['emission_rate',['../classtram_1_1_particle_component.html#a1d1a56c1b5c8ce7539663dba1d485c32',1,'tram::ParticleComponent']]],\n  ['emitter_8',['emitter',['../structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004',1,'tram::Ext::Menu::EventIntercept']]],\n  ['enabled_9',['enabled',['../classtram_1_1_raycast_controller_component.html#aa5342f7e4fb16df60863ed8831887d75',1,'tram::RaycastControllerComponent']]],\n  ['end_10',['end',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909',1,'tram::Render::API::Scanline']]],\n  ['end_5fadv_11',['end_adv',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33',1,'tram::Render::API::Scanline']]],\n  ['end_5fp0_12',['end_p0',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49',1,'tram::Render::API::Scanline']]],\n  ['end_5fp1_13',['end_p1',['../structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c',1,'tram::Render::API::Scanline']]],\n  ['entities_14',['entities',['../classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22',1,'tram::WorldCell::entities()'],['../classtram_1_1_render_1_1_light_graph.html#a5ecc9ba96984a2e7fc95704c46b98049',1,'tram::Render::LightGraph::entities()']]],\n  ['entity_15',['entity',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be',1,'tram::Ext::Kitchensink::QuestVariable::entity()'],['../classtram_1_1_ext_1_1_menu_1_1_entity_properties.html#acf1bf7e593e36cb4b389c6632623b0e3',1,'tram::Ext::Menu::EntityProperties::entity()'],['../structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32',1,'tram::ListenerInfo::entity()']]],\n  ['entity_5fid_16',['entity_id',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#a4a0c4f4d89dead8b68cdf556558bf446',1,'tram::Ext::Menu::MessageSend::entity_id()'],['../classtram_1_1_ext_1_1_menu_1_1_signal_menu.html#a1b88163f3d0384c8d005d5457a75c923',1,'tram::Ext::Menu::SignalMenu::entity_id()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#a9d2a11a8e15e555048c4c5213023ce32',1,'tram::Ext::Kitchensink::Character::entity_id()']]],\n  ['entity_5flimit_17',['ENTITY_LIMIT',['../namespacetram.html#a0ddcd411f4af0e1052aa1c3341eb7e4d',1,'tram']]],\n  ['entity_5ftype_5flimit_18',['ENTITY_TYPE_LIMIT',['../namespacetram.html#aa3d5c2a5f250a9d674df10bdfa5904d2',1,'tram']]],\n  ['environment_5fmap_19',['environment_map',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5',1,'tram::Render::LightGraph::Node']]],\n  ['environmentmap_20',['environmentmap',['../classtram_1_1_render_component.html#ae8e60fbf5d87ba817101190869396393',1,'tram::RenderComponent::environmentmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308',1,'tram::Render::API::GLDrawListEntry::environmentmap()']]],\n  ['equipped_21',['equipped',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f',1,'tram::Ext::Kitchensink::ItemInstance::equipped()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8cd3c4606f66405f417609f1c45e9e78',1,'tram::Ext::Kitchensink::Inventory::equipped()']]],\n  ['equipped_5fslot_22',['equipped_slot',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['event_5ftype_23',['event_type',['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a3a3692407b1c476b25a80d299caa09a1',1,'tram::Ext::Menu::EventEmit']]],\n  ['exponent_24',['exponent',['../classtram_1_1_light_component.html#af28678281fb5b2012af9bba987aaf2f4',1,'tram::LightComponent::exponent()'],['../classtram_1_1_light.html#a0b11cd3d1f0ba7c48345eb54134848c3',1,'tram::Light::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7',1,'tram::Render::API::D3DLight::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f',1,'tram::Render::API::GLLight::exponent()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092',1,'tram::Render::API::SWLight::exponent()']]],\n  ['ext_5fkitchensink_5fanimationtable_5flimit_25',['EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT',['../namespacetram.html#af1919b7d31f90785f9b208acbdeb8576',1,'tram']]],\n  ['ext_5fkitchensink_5fsoundtable_5flimit_26',['EXT_KITCHENSINK_SOUNDTABLE_LIMIT',['../namespacetram.html#a16fcee576d8ededdde2fb49658013315',1,'tram']]],\n  ['extent_5fx_27',['extent_x',['../structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5',1,'tram::Physics::CollisionShape']]],\n  ['extent_5fy_28',['extent_y',['../structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26',1,'tram::Physics::CollisionShape']]],\n  ['extent_5fz_29',['extent_z',['../structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_5.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_5.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_5.js",
    "content": "var searchData=\n[\n  ['faction_0',['faction',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29',1,'tram::Ext::Kitchensink::FactionRelation::faction()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf',1,'tram::Ext::Kitchensink::BaseFactionRank::faction()']]],\n  ['faction_5fcount_1',['FACTION_COUNT',['../character_8cpp.html#ae5c94b904d8f09d1f4fab73abcb58758',1,'character.cpp']]],\n  ['factions_2',['factions',['../classtram_1_1_ext_1_1_kitchensink_1_1_character.html#ad38cfbf13b3b0044fb9b1b2fece43e37',1,'tram::Ext::Kitchensink::Character']]],\n  ['fade_5fammount_3',['fade_ammount',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5ffar_4',['fade_far',['../classtram_1_1_render_1_1_model.html#ab23a8639f37acbb57c7b2bd59f72f0e0',1,'tram::Render::Model::fade_far()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2',1,'tram::Render::API::GLDrawListEntry::fade_far()']]],\n  ['fade_5fin_5',['fade_in',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5fin_5ftime_6',['fade_in_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault']]],\n  ['fade_5fnear_7',['fade_near',['../classtram_1_1_render_1_1_model.html#aa81edd4e91330f0613abeecc945e323d',1,'tram::Render::Model::fade_near()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec',1,'tram::Render::API::GLDrawListEntry::fade_near()']]],\n  ['fade_5fout_8',['fade_out',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5fout_5ftime_9',['fade_out_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee',1,'tram::Ext::Kitchensink::AnimStateTransitionDefault']]],\n  ['fade_5fspeed_10',['fade_speed',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['fade_5ftime_11',['fade_time',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::fade_time()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::fade_time()']]],\n  ['fail_5fasserts_12',['fail_asserts',['../struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1',1,'_test_case']]],\n  ['far_5fplane_13',['far_plane',['../namespacetram_1_1_render.html#aaa39b7e5e70c04e8c22233f173f0ac82',1,'tram::Render']]],\n  ['farthest_5fdistance_14',['farthest_distance',['../structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635',1,'tram::Octree::NearestSearch']]],\n  ['farthest_5findex_15',['farthest_index',['../structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58',1,'tram::Octree::NearestSearch']]],\n  ['ffp_5ftype_16',['ffp_type',['../structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422',1,'tram::Render::VertexAttribute']]],\n  ['field_5fflags_17',['field_flags',['../structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3',1,'tram::Entity::FieldInfo']]],\n  ['field_5fid_18',['field_id',['../structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558',1,'tram::Entity::FieldInfo']]],\n  ['field_5ftype_19',['field_type',['../structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0',1,'tram::Entity::FieldInfo']]],\n  ['fieldcount_20',['fieldcount',['../structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81',1,'tram::EntityTypeInfo']]],\n  ['fields_21',['fields',['../structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8',1,'tram::EntityTypeInfo']]],\n  ['filter_22',['filter',['../classtram_1_1_render_1_1_material.html#a8793fc03d8f1a34076f3af8739323a42',1,'tram::Render::Material']]],\n  ['first_23',['first',['../classtram_1_1_hashmap.html#ab8e29b96d85af1c96d46f4eef83472b3',1,'tram::Hashmap::first()'],['../classtram_1_1_pool.html#ac3fa225dfc0f2bcbdb8b99cd532159f6',1,'tram::Pool::first()'],['../classtram_1_1_queue.html#af7bdb257fbe379deddd3b3e810311a19',1,'tram::Queue::first()'],['../classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4',1,'tram::Stack::first()'],['../classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c',1,'tram::StackPool::first()']]],\n  ['firstend_24',['firstend',['../classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf',1,'tram::Stack']]],\n  ['flags_25',['flags',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a230b3c266b55a9107188d5ceb44d2aab',1,'tram::Ext::Kitchensink::Button::flags()'],['../classtram_1_1_entity.html#af48fa95d5f1f47aebc79545a861cd478',1,'tram::Entity::flags()'],['../structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f',1,'tram::SharedEntityData::flags()'],['../structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da',1,'tram::Settings::SettingInfo::flags()'],['../classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2',1,'tram::WorldCell::flags()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c',1,'tram::Render::API::D3DDrawListEntry::flags()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77',1,'tram::Render::API::GLDrawListEntry::flags()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66',1,'tram::Render::API::SWDrawListEntry::flags()'],['../structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526',1,'tram::Hashmap::Record::flags()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d',1,'tram::Audio::Spatial::AudioRender::flags()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63',1,'tram::Ext::Kitchensink::Effect::flags()']]],\n  ['float32_26',['float32',['../structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9',1,'tram::Settings::SettingInfo']]],\n  ['float_5fptr_27',['float_ptr',['../classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb',1,'tram::ValuePtr']]],\n  ['float_5fvalue_28',['float_value',['../classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067',1,'tram::Value']]],\n  ['fly_5fspeed_29',['fly_speed',['../classtram_1_1_f_p_s_controller_component.html#a59caaa80439479140ec150e4abfb6f36',1,'tram::FPSControllerComponent::fly_speed()'],['../classtram_1_1_raycast_controller_component.html#ac3bc0f6a436b974dd1e207565bcee873',1,'tram::RaycastControllerComponent::fly_speed()']]],\n  ['flying_30',['flying',['../classtram_1_1_f_p_s_controller_component.html#adcec1e7d2eb544a14884da99d7de9341',1,'tram::FPSControllerComponent::flying()'],['../classtram_1_1_raycast_controller_component.html#a5481a92132dc6b4c1b6cbf6266fc7a1a',1,'tram::RaycastControllerComponent::flying()']]],\n  ['follower_31',['follower',['../main_8cpp.html#a6ad3920985a278030871ba19a36e9029',1,'main.cpp']]],\n  ['following_32',['following',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac824c2a2d2ec9f37965808a6f2197c79',1,'tram::Ext::Camera::Camera']]],\n  ['following_5finterpolation_33',['following_interpolation',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#afc061f0deae8ee4e0abc66d55544208b',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['following_5flistener_34',['following_listener',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#ac3852212644df817be31acab2fb4231b',1,'tram::Ext::Camera::Camera']]],\n  ['following_5flookat_35',['following_lookat',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#aaa242b24d1a6f48e868dcf73b9ca72d5',1,'tram::Ext::Camera::Camera']]],\n  ['following_5foffset_36',['following_offset',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#aa5267817e3d8ad5268a7a7149586f624',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['font_5fdebug_37',['font_debug',['../namespacetram_1_1_render.html#a02ef1036594289bf19ebfa9927708a5d',1,'tram::Render']]],\n  ['font_5fheader_38',['FONT_HEADER',['../namespacetram_1_1_ext_1_1_menu.html#afb19d70c23fefc9206a68b19238f0361',1,'tram::Ext::Menu']]],\n  ['font_5fpixelart_39',['FONT_PIXELART',['../namespacetram_1_1_ext_1_1_menu.html#a19b646bf9a31f4080201096d7c78b468',1,'tram::Ext::Menu']]],\n  ['font_5ftext_40',['FONT_TEXT',['../namespacetram_1_1_ext_1_1_menu.html#a8fba4d434da7bccc5f0a79b97f45301a',1,'tram::Ext::Menu']]],\n  ['font_5ftext_5fbold_41',['FONT_TEXT_BOLD',['../namespacetram_1_1_ext_1_1_menu.html#ac48d19ee29fc32e75b0c11bf85004bd3',1,'tram::Ext::Menu']]],\n  ['font_5fwidgets_42',['FONT_WIDGETS',['../namespacetram_1_1_ext_1_1_menu.html#a69fad955abedb48b03076af467f31466',1,'tram::Ext::Menu']]],\n  ['force_43',['force',['../structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7',1,'tram::Audio::Spatial::PathExplorationResult::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657',1,'tram::Audio::Spatial::PathTracingResult::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b',1,'tram::Audio::Spatial::PathFromAudioSource::force()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b',1,'tram::Audio::Spatial::PathRenderingInfo::force()']]],\n  ['format_44',['format',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2',1,'tram::Render::API::SWVertexArray']]],\n  ['found_45',['found',['../structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b',1,'tram::Octree::NearestSearch']]],\n  ['frame_46',['frame',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b',1,'tram::AnimationComponent::AnimationPlaybackInfo::frame()'],['../classtram_1_1_decal_component.html#a8cde217b87b345af7bd38a674afeea13',1,'tram::DecalComponent::frame()'],['../structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617',1,'tram::Render::Keyframe::frame()']]],\n  ['frames_47',['frames',['../classtram_1_1_render_1_1_sprite.html#ad1f3d4b42af2c6ae60e8eccac3368d4c',1,'tram::Render::Sprite']]],\n  ['friction_48',['friction',['../classtram_1_1_f_p_s_controller_component.html#a451fd7c7b46f15d8c41966e57389d9f3',1,'tram::FPSControllerComponent']]],\n  ['from_49',['from',['../structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e',1,'tram::Edge']]],\n  ['from_5fstate_50',['from_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::from_state()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::from_state()']]],\n  ['fullname_51',['fullname',['../struct__test__case.html#a028f8c7752296eebd358db5357c46064',1,'_test_case']]],\n  ['function_52',['function',['../structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2',1,'tram::ListenerInfo::function()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4eb0c0bc6178c8d324c89f213a5a1a15',1,'tram::Ext::Scripting::Lua::function()']]],\n  ['fvf_53',['fvf',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae',1,'tram::Render::API::D3DDrawListEntry::fvf()'],['../structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee',1,'tram::Render::API::VertexBufferMetadata::fvf()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e',1,'tram::Render::API::FVFHelper::fvf()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_6.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_6.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_6.js",
    "content": "var searchData=\n[\n  ['generic_0',['generic',['../structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e',1,'tram::Audio::audiosource_t::generic()'],['../structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756',1,'tram::Audio::audiobuffer_t::generic()'],['../structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8',1,'tram::Render::vertexarray_t::generic()'],['../structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f',1,'tram::Render::indexarray_t::generic()'],['../structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7',1,'tram::Render::spritearray_t::generic()'],['../structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626',1,'tram::Render::drawlistentry_t::generic()'],['../structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac',1,'tram::Render::texturehandle_t::generic()'],['../structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f',1,'tram::Render::light_t::generic()'],['../structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c',1,'tram::Render::material_t::generic()']]],\n  ['get_5ftransform_5fcallback_1',['get_transform_callback',['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#ab97d0dfa12197e6fa79055fd3bfc57ba',1,'tram::Physics::API::CallbackMotionState']]],\n  ['gl_2',['gl',['../structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47',1,'tram::Render::drawlistentry_t::gl()'],['../structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa',1,'tram::Render::light_t::gl()'],['../structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f',1,'tram::Render::material_t::gl()']]],\n  ['gl_5findex_5fbuffer_3',['gl_index_buffer',['../structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552',1,'tram::Render::indexarray_t']]],\n  ['gl_5ftexture_4',['gl_texture',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461',1,'tram::Render::API::GLMaterial']]],\n  ['gl_5ftexture_5fhandle_5',['gl_texture_handle',['../structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee',1,'tram::Render::texturehandle_t']]],\n  ['gl_5fvertex_5farray_6',['gl_vertex_array',['../structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371',1,'tram::Render::vertexarray_t']]],\n  ['gl_5fvertex_5fbuffer_7',['gl_vertex_buffer',['../structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f',1,'tram::Render::vertexarray_t']]],\n  ['gravity_8',['gravity',['../classtram_1_1_particle_component.html#a49ca6619dc2cc1f51243c26b9700650a',1,'tram::ParticleComponent']]],\n  ['groups_9',['groups',['../structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3',1,'tram::Render::DynamicModelData']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_7.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_7.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_7.js",
    "content": "var searchData=\n[\n  ['h_0',['h',['../structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752',1,'tram::GUI::FrameObject']]],\n  ['half_5fextent_1',['half_extent',['../structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d',1,'tram::Octree::Node']]],\n  ['handle_2',['handle',['../structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2',1,'tram::ListenerInfo::handle()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519',1,'tram::Render::LightTree::Light::handle()']]],\n  ['harmonic_3',['harmonic',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20',1,'tram::Render::API::GLDrawListEntry']]],\n  ['has_5flight_4',['has_light',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f',1,'tram::Render::LightGraph::Node']]],\n  ['has_5freflection_5',['has_reflection',['../structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166',1,'tram::Render::LightGraph::Node']]],\n  ['hash_5fparameter_6',['hash_parameter',['../classtram_1_1_hashmap.html#aed9ce370a0606d8f753370f537bd9ca5',1,'tram::Hashmap']]],\n  ['head_7',['head',['../structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800',1,'tram::Render::Bone']]],\n  ['height_8',['height',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2',1,'tram::Ext::Kitchensink::ItemClass::height()'],['../structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d',1,'tram::Physics::CollisionShape::height()'],['../classtram_1_1_render_1_1_material.html#a51a02ef0d56c1cf312bbb92c97087e7b',1,'tram::Render::Material::height()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579',1,'tram::Render::API::SWTexture::height()'],['../structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114',1,'tram::Render::SpriteFrame::height()']]],\n  ['helper_9',['helper',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4',1,'tram::Render::API::SWVertexArray']]],\n  ['hierarchy_5fmap_10',['hierarchy_map',['../namespacetram_1_1_ext_1_1_kitchensink.html#a88dc3b5c5e10e0a3f59566278143dd3e',1,'tram::Ext::Kitchensink']]],\n  ['history_5fcursor_11',['history_cursor',['../classtram_1_1_ext_1_1_menu_1_1_console.html#a5f626c471a7e2d91b3fb5b2c4a03b8e5',1,'tram::Ext::Menu::Console']]],\n  ['hull_5fpoints_12',['hull_points',['../structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca',1,'tram::Physics::CollisionShape']]],\n  ['hull_5fsize_13',['hull_size',['../structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053',1,'tram::Physics::CollisionShape']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_8.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_8.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_8.js",
    "content": "var searchData=\n[\n  ['icon_5ffont_0',['icon_font',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['icon_5fglyph_1',['icon_glyph',['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684',1,'tram::Ext::Kitchensink::ItemClass']]],\n  ['id_2',['id',['../classtram_1_1_entity.html#a0e0037fe55b567a2f73a84e4e6932197',1,'tram::Entity::id()'],['../structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f',1,'tram::SharedEntityData::id()']]],\n  ['ind_3',['ind',['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3',1,'tram::Render::API::DynamicVertex']]],\n  ['index_5farray_4',['index_array',['../classtram_1_1_render_1_1_model.html#aa5dee7ccfa3ff825f135ab07ae71a719',1,'tram::Render::Model::index_array()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a',1,'tram::Render::API::SWDrawListEntry::index_array()']]],\n  ['index_5farrays_5',['index_arrays',['../namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8',1,'tram::Render::API']]],\n  ['index_5fbuffer_6',['index_buffer',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8',1,'tram::Render::API::D3DDrawListEntry']]],\n  ['index_5fcount_7',['index_count',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57',1,'tram::Render::API::SWIndexArray']]],\n  ['index_5fin_5fbucket_8',['index_in_bucket',['../structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95',1,'tram::Render::BucketMapping']]],\n  ['index_5flength_9',['index_length',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474',1,'tram::Render::API::D3DDrawListEntry::index_length()'],['../structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23',1,'tram::Render::IndexRange::index_length()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9',1,'tram::Render::API::SWDrawListEntry::index_length()']]],\n  ['index_5foffset_10',['index_offset',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f',1,'tram::Render::API::D3DDrawListEntry::index_offset()'],['../structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72',1,'tram::Render::IndexRange::index_offset()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084',1,'tram::Render::API::SWDrawListEntry::index_offset()']]],\n  ['index_5franges_11',['index_ranges',['../classtram_1_1_render_1_1_model.html#a6dcde60794df195d5cbdc942b9e7f712',1,'tram::Render::Model']]],\n  ['indices_12',['indices',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a',1,'tram::Render::API::SWIndexArray::indices()'],['../structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39',1,'tram::Render::Triangle::indices()'],['../structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd',1,'tram::Render::StaticModelData::indices()'],['../structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17',1,'tram::Render::DynamicModelData::indices()']]],\n  ['initial_5ffollower_13',['initial_follower',['../main_8cpp.html#a26541762e56e12ecf3defe0cdf54445c',1,'main.cpp']]],\n  ['initial_5fvelocity_14',['initial_velocity',['../classtram_1_1_particle_component.html#a430a79ebe6cdfed63f9197226acbf2a3',1,'tram::ParticleComponent']]],\n  ['initial_5fvelocity_5frandomness_15',['initial_velocity_randomness',['../classtram_1_1_particle_component.html#af090a25e299547146b68263c6a70fc83',1,'tram::ParticleComponent']]],\n  ['int32_16',['int32',['../structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707',1,'tram::Settings::SettingInfo']]],\n  ['int32_5fptr_17',['int32_ptr',['../classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d',1,'tram::ValuePtr']]],\n  ['int32_5fvalue_18',['int32_value',['../classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714',1,'tram::Value']]],\n  ['intercept_5fenabled_19',['intercept_enabled',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#aaaeebe9c42d5ca723a4523549f3c633a',1,'tram::Ext::Menu::DebugMenu']]],\n  ['intercept_5fmenu_20',['intercept_menu',['../classtram_1_1_ext_1_1_menu_1_1_debug_menu.html#a3b84d612747abe7ce7521ec867b6df42',1,'tram::Ext::Menu::DebugMenu']]],\n  ['intercepts_21',['intercepts',['../namespacetram_1_1_ext_1_1_menu.html#ad8d4e5481ecd0bb091a930107037e0c2',1,'tram::Ext::Menu']]],\n  ['interpolate_22',['interpolate',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb',1,'tram::AnimationComponent::AnimationPlaybackInfo::interpolate()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa',1,'tram::Ext::Kitchensink::AnimState::interpolate()']]],\n  ['intersection_23',['intersection',['../structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256',1,'tram::Render::AABB::QueryResponse']]],\n  ['into_5fstate_24',['into_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0',1,'tram::Ext::Kitchensink::AnimStateTransitionFrom::into_state()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8',1,'tram::Ext::Kitchensink::AnimStateTransitionInto::into_state()']]],\n  ['is_5ffullscreen_25',['is_fullscreen',['../namespacetram_1_1_platform.html#a6f880cc4d19fcc8b45f2405afe847765',1,'tram::Platform']]],\n  ['is_5fin_5fair_26',['is_in_air',['../classtram_1_1_f_p_s_controller_component.html#a8579e399cc88ea96ad4d62d2cce9790c',1,'tram::FPSControllerComponent::is_in_air()'],['../classtram_1_1_raycast_controller_component.html#aafc457ddb805587b041ad13495aaa6c6',1,'tram::RaycastControllerComponent::is_in_air()']]],\n  ['is_5finit_27',['is_init',['../classtram_1_1_entity_component.html#a0e65307b795d61b931c6b3600fc737ac',1,'tram::EntityComponent']]],\n  ['is_5fready_28',['is_ready',['../classtram_1_1_entity_component.html#a4dcceab63838befe9fbffc1c3bc19918',1,'tram::EntityComponent']]],\n  ['item_29',['item',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669',1,'tram::Ext::Kitchensink::QuestVariable::item()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aabc1c4ce438e88d992880d126648a343',1,'tram::Ext::Kitchensink::QuestVariable::item()']]],\n  ['item_5fclass_30',['item_class',['../structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f',1,'tram::Ext::Kitchensink::ItemInstance']]],\n  ['items_31',['items',['../classtram_1_1_ext_1_1_kitchensink_1_1_list_inventory_manager.html#a706782e911333fcfafae739d283995a2',1,'tram::Ext::Kitchensink::ListInventoryManager']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_9.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_9.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_9.js",
    "content": "var searchData=\n[\n  ['jump_5fframes_0',['jump_frames',['../classtram_1_1_raycast_controller_component.html#a8a2115c6f76c654ad0daa63421474d92',1,'tram::RaycastControllerComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_a.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_a.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_a.js",
    "content": "var searchData=\n[\n  ['key_0',['key',['../structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431',1,'tram::Settings::RawSetting::key()'],['../structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8',1,'tram::UID::key()'],['../structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a',1,'tram::Hashmap::Record::key()']]],\n  ['keyboardaction_5flimit_1',['KEYBOARDACTION_LIMIT',['../namespacetram.html#a7c062f0c7a0634e170676191a5fc33ba',1,'tram']]],\n  ['keyframe_5fcount_2',['keyframe_count',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8',1,'tram::AnimationComponent::AnimationPlaybackInfo::keyframe_count()'],['../structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629',1,'tram::Render::KeyframeHeader::keyframe_count()']]],\n  ['keyframe_5foffset_3',['keyframe_offset',['../structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae',1,'tram::Render::KeyframeHeader']]],\n  ['keyframes_4',['keyframes',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['kitchensink_5fsystem_5',['KITCHENSINK_SYSTEM',['../namespacetram_1_1_ext_1_1_kitchensink.html#acada14362be543540a0a63813c3a68a7',1,'tram::Ext::Kitchensink']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_b.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_b.js",
    "content": "var searchData=\n[\n  ['l00_0',['l00',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d',1,'tram::Render::API::ShaderUniformModelMatrices::l00()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8',1,'tram::Render::SphericalHarmonic::l00()']]],\n  ['l10_1',['l10',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd',1,'tram::Render::API::ShaderUniformModelMatrices::l10()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5',1,'tram::Render::SphericalHarmonic::l10()']]],\n  ['l11_2',['l11',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a',1,'tram::Render::API::ShaderUniformModelMatrices::l11()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156',1,'tram::Render::SphericalHarmonic::l11()']]],\n  ['l1m1_3',['l1m1',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6',1,'tram::Render::API::ShaderUniformModelMatrices::l1m1()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb',1,'tram::Render::SphericalHarmonic::l1m1()']]],\n  ['l20_4',['l20',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb',1,'tram::Render::API::ShaderUniformModelMatrices::l20()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3',1,'tram::Render::SphericalHarmonic::l20()']]],\n  ['l21_5',['l21',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316',1,'tram::Render::API::ShaderUniformModelMatrices::l21()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48',1,'tram::Render::SphericalHarmonic::l21()']]],\n  ['l22_6',['l22',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a',1,'tram::Render::API::ShaderUniformModelMatrices::l22()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab',1,'tram::Render::SphericalHarmonic::l22()']]],\n  ['l2m1_7',['l2m1',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a',1,'tram::Render::API::ShaderUniformModelMatrices::l2m1()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751',1,'tram::Render::SphericalHarmonic::l2m1()']]],\n  ['l2m2_8',['l2m2',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff',1,'tram::Render::API::ShaderUniformModelMatrices::l2m2()'],['../structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd',1,'tram::Render::SphericalHarmonic::l2m2()']]],\n  ['language_5fstring_5flimit_9',['LANGUAGE_STRING_LIMIT',['../namespacetram.html#ac465c542500fdf2dc7483c0d15896d8b',1,'tram']]],\n  ['lanugage_5fstring_5fcharacter_5flimit_10',['LANUGAGE_STRING_CHARACTER_LIMIT',['../namespacetram.html#a94cfdaa4232d3dde886253c4eafcd4e9',1,'tram']]],\n  ['last_11',['last',['../classtram_1_1_hashmap.html#a08c1ce10f128f0995b5e82d8f372b6f1',1,'tram::Hashmap::last()'],['../classtram_1_1_pool.html#a4623a5f83e0f8a60e0189b4dd1cb7792',1,'tram::Pool::last()'],['../classtram_1_1_queue.html#aa63013a7088d526ff1529718777848f1',1,'tram::Queue::last()'],['../classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0',1,'tram::Stack::last()'],['../classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147',1,'tram::StackPool::last()']]],\n  ['last_5factivate_12',['last_activate',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ac4a1ce474fcd9da9bf9fc66dd27281ed',1,'tram::Ext::Kitchensink::Button']]],\n  ['last_5fpath_13',['last_path',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f',1,'tram::Audio::Spatial::AudioSource']]],\n  ['last_5ftick_14',['last_tick',['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1',1,'tram::Ext::Kitchensink::AttributeContainer']]],\n  ['last_5fupdate_5fframe_15',['last_update_frame',['../namespacetram_1_1_g_u_i.html#a6b89bb5200e494e6cd5a0191bf527df0',1,'tram::GUI']]],\n  ['lastend_16',['lastend',['../classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7',1,'tram::Stack']]],\n  ['lastfree_17',['lastfree',['../classtram_1_1_pool.html#a09e44e2d85b1f84461756d203450e014',1,'tram::Pool']]],\n  ['layer_18',['layer',['../classtram_1_1_render_component.html#a9af00bf62b86a65cfecda4579cea9081',1,'tram::RenderComponent::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e',1,'tram::Render::API::D3DDrawListEntry::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8',1,'tram::Render::API::GLDrawListEntry::layer()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd',1,'tram::Render::API::SWDrawListEntry::layer()']]],\n  ['layer_5fmask_19',['layer_mask',['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a7ed7e7879eb1dbfb568d72099a8c74d0',1,'tram::Ext::Camera::Camera']]],\n  ['leaf_20',['leaf',['../structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6',1,'tram::Render::AABB::AABBLeaf']]],\n  ['left_21',['left',['../structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31',1,'tram::NavmeshNode::left()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3',1,'tram::AABBTree::Node::left()']]],\n  ['length_22',['length',['../structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c',1,'tram::Audio::Spatial::AudioBuffer']]],\n  ['light_23',['light',['../classtram_1_1_light_component.html#ad6cf4eb83f59c3bd63368dc6f79e6df9',1,'tram::LightComponent::light()'],['../classtram_1_1_light.html#af5eb3563a405edc4d1344432268cd7a9',1,'tram::Light::light()']]],\n  ['light_5flist_24',['light_list',['../namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e',1,'tram::Render::API::light_list()'],['../namespacetram_1_1_render_1_1_light_tree.html#ace17f1d05c614eb447987103188f6fe8',1,'tram::Render::LightTree::light_list()']]],\n  ['light_5ftree_25',['light_tree',['../namespacetram_1_1_render_1_1_a_p_i.html#a4855c01cc36bad195643cf956389b5de',1,'tram::Render::API']]],\n  ['light_5funiform_5fbinding_26',['light_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a0be78caaebe8d1e8e924fac4021c7955',1,'tram::Render::API']]],\n  ['light_5funiform_5fbuffer_27',['light_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#aa86b61fec7a4aff417768d154811ad32',1,'tram::Render::API']]],\n  ['lightmap_28',['lightmap',['../classtram_1_1_render_component.html#a7d0c1122a6e9b85ccd68fb5b2a3b2914',1,'tram::RenderComponent::lightmap()'],['../classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7',1,'tram::StaticWorldObject::lightmap()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#aaabf5a2f388426badc47c45deff2a92c',1,'tram::Ext::Kitchensink::Button::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980',1,'tram::Render::API::D3DDrawListEntry::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14',1,'tram::Render::API::FVFHelper::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1',1,'tram::Render::API::GLDrawListEntry::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635',1,'tram::Render::API::FFPHelper::lightmap()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055',1,'tram::Render::API::SWDrawListEntry::lightmap()']]],\n  ['lights_29',['lights',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f',1,'tram::Render::API::GLDrawListEntry::lights()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7',1,'tram::Render::API::SWDrawListEntry::lights()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe',1,'tram::Render::API::D3DDrawListEntry::lights()']]],\n  ['lighttex_30',['lighttex',['../structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18',1,'tram::Render::StaticModelVertex']]],\n  ['limit_31',['limit',['../structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138',1,'tram::Signal']]],\n  ['line_5fvertex_5ffvf_32',['LINE_VERTEX_FVF',['../namespacetram_1_1_render_1_1_a_p_i.html#a092639593561b8318a7db302cde0cd97',1,'tram::Render::API']]],\n  ['list_33',['list',['../classtram_1_1_ext_1_1_menu_1_1_list_selection.html#a03f4f84b736a200aafa2848c1e3e02cd',1,'tram::Ext::Menu::ListSelection']]],\n  ['listener_34',['listener',['../classtram_1_1_event_listener.html#a930c397fc9144345c9fd431db387f329',1,'tram::EventListener']]],\n  ['listener_5fdepth_5flimit_35',['LISTENER_DEPTH_LIMIT',['../namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af',1,'tram::Audio::Spatial']]],\n  ['listener_5fideal_5fangle_36',['listener_ideal_angle',['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8',1,'tram::Audio::Spatial::PathTracingResult']]],\n  ['listener_5forientation_37',['listener_orientation',['../namespacetram_1_1_audio_1_1_spatial.html#acb9b0bd1fd2aee84d39ac5b2f656eac8',1,'tram::Audio::Spatial']]],\n  ['listener_5fposition_38',['listener_position',['../namespacetram_1_1_audio_1_1_spatial.html#a7d4e5961da95174066a93816b9b418ad',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fdelay_39',['listener_reverb_delay',['../namespacetram_1_1_audio_1_1_spatial.html#a572ed0408e51e97d4aab9499559dcabe',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fdistance_40',['listener_reverb_distance',['../namespacetram_1_1_audio_1_1_spatial.html#a8d1dc309e3904bd79c244bbc63c00839',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fforce_41',['listener_reverb_force',['../namespacetram_1_1_audio_1_1_spatial.html#abadc037457811482c0cc517072ab1f77',1,'tram::Audio::Spatial']]],\n  ['listener_5freverb_5fnormalized_42',['listener_reverb_normalized',['../namespacetram_1_1_audio_1_1_spatial.html#a4353683a488762dd6403d5c7d5f6e1fb',1,'tram::Audio::Spatial']]],\n  ['lit_43',['lit',['../main_8cpp.html#a3c4f14ce2eba453f60e455656652a950',1,'lit():&#160;main.cpp'],['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84',1,'tram::Render::API::StaticVertex::lit()']]],\n  ['lit_5fx_44',['lit_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189',1,'tram::Render::API::StaticVertex']]],\n  ['lit_5fy_45',['lit_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19',1,'tram::Render::API::StaticVertex']]],\n  ['load_5ffail_46',['load_fail',['../classtram_1_1_resource.html#af0e8d76a1a9490a659b8ef54b1357a59',1,'tram::Resource']]],\n  ['location_47',['location',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e',1,'tram::Render::API::SWLight::location()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9',1,'tram::Render::API::GLLight::location()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b',1,'tram::Render::API::D3DLight::location()'],['../structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc',1,'tram::Render::Keyframe::location()'],['../classtram_1_1_entity.html#aa2a31ccd75576ca82547ed1feed60d8c',1,'tram::Entity::location()'],['../classtram_1_1_sprite_component.html#a2d21c7134a144caa924c0c76fdd44e9b',1,'tram::SpriteComponent::location()'],['../classtram_1_1_render_component.html#a473efffe2b970de9b84d7c55c7e22f72',1,'tram::RenderComponent::location()'],['../classtram_1_1_particle_component.html#acb488cd232ea710d12db28f52d199377',1,'tram::ParticleComponent::location()'],['../classtram_1_1_light_component.html#afc605268cb96a739eee4ff721fc013d1',1,'tram::LightComponent::location()'],['../classtram_1_1_decal_component.html#a2f8e987f85f6ff0720b415e87509510e',1,'tram::DecalComponent::location()'],['../classtram_1_1_audio_component.html#a1ff1eab65a76f78216b57665a6c8b464',1,'tram::AudioComponent::location()']]],\n  ['lock_48',['lock',['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442',1,'tram::Audio::Spatial::AudioRender']]],\n  ['look_5fat_5fdirection_49',['look_at_direction',['../namespacetram_1_1_ext_1_1_camera.html#ae2730c41e6bab8d84d06e89700724e9e',1,'tram::Ext::Camera']]],\n  ['look_5fat_5fentity_50',['look_at_entity',['../namespacetram_1_1_ext_1_1_camera.html#a07e626d2d01f42be6f6f209cc12cbc18',1,'tram::Ext::Camera']]],\n  ['look_5fdirection_51',['look_direction',['../classtram_1_1_controller_component.html#ad160a058e6730f0040aa6a9338e15750',1,'tram::ControllerComponent']]],\n  ['loyalty_52',['loyalty',['../structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347',1,'tram::Ext::Kitchensink::FactionRank::loyalty()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806',1,'tram::Ext::Kitchensink::BaseFactionRank::loyalty()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_c.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_c.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_c.js",
    "content": "var searchData=\n[\n  ['make_0',['make',['../structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e',1,'tram::Ext::Kitchensink::InventoryFactoryInfo']]],\n  ['material_1',['material',['../classtram_1_1_render_1_1_material.html#aa1af831cde7f02d1d9c76c2223638197',1,'tram::Render::Material::material()'],['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75',1,'tram::Render::AABBTriangle::material()'],['../classtram_1_1_render_1_1_sprite.html#aca24e7f82749a755a8118a46b3729a3b',1,'tram::Render::Sprite::material()']]],\n  ['material_5fcount_2',['material_count',['../structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196',1,'tram::Render::IndexRange']]],\n  ['material_5ftype_3',['material_type',['../structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f',1,'tram::Render::TriangleBucket::material_type()'],['../structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205',1,'tram::Render::IndexRange::material_type()']]],\n  ['materials_4',['materials',['../structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088',1,'tram::Render::TriangleBucket::materials()'],['../structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320',1,'tram::Render::IndexRange::materials()'],['../classtram_1_1_render_1_1_model.html#add4100bd27f40383014ada9f1038e1d1',1,'tram::Render::Model::materials()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18',1,'tram::Render::API::GLDrawListEntry::materials()']]],\n  ['matrices_5',['matrices',['../namespacetram_1_1_render_1_1_a_p_i.html#a6dfddeaa3cef9401836d64332bf741d7',1,'tram::Render::API']]],\n  ['matrix_6',['matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f',1,'tram::Render::API::D3DDrawListEntry::matrix()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4',1,'tram::Render::API::GLDrawListEntry::matrix()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360',1,'tram::Render::API::SWDrawListEntry::matrix()']]],\n  ['matrix_5funiform_5fbinding_7',['matrix_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a6e1d5dec0444c684f0afec150c59bfc0',1,'tram::Render::API']]],\n  ['matrix_5funiform_5fbuffer_8',['matrix_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a2de134ec2f22c719dbf8e81f7ee6852d',1,'tram::Render::API']]],\n  ['max_9',['max',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc',1,'tram::AABBTree::Node']]],\n  ['max_5fevent_5ftypes_10',['MAX_EVENT_TYPES',['../namespacetram.html#a67acb96d23f8bfea55638bc35178d08d',1,'tram']]],\n  ['max_5ffragment_5fshaders_11',['MAX_FRAGMENT_SHADERS',['../namespacetram.html#ac5209551801f3515acbdabc46e957f45',1,'tram']]],\n  ['max_5flinked_5fshaders_12',['MAX_LINKED_SHADERS',['../namespacetram.html#af6d768de9b8d7f850907e74b15f654ab',1,'tram']]],\n  ['max_5flua_5ffunctions_13',['MAX_LUA_FUNCTIONS',['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a4cfafc75c333b7b33aa642f4a2dfa952',1,'tram::Ext::Scripting::Lua']]],\n  ['max_5fmaterial_5ftypes_14',['MAX_MATERIAL_TYPES',['../namespacetram.html#a917f372f74717cd689223239e73f0ec5',1,'tram']]],\n  ['max_5fsize_15',['max_size',['../classtram_1_1_hashmap.html#a1624bb31327369ea902f87e19531d6aa',1,'tram::Hashmap']]],\n  ['max_5fvertex_5fformats_16',['MAX_VERTEX_FORMATS',['../namespacetram.html#a7bc148b33d35076ac28624e78c06e32f',1,'tram']]],\n  ['max_5fvertex_5fshaders_17',['MAX_VERTEX_SHADERS',['../namespacetram.html#aeb3f21bc4e94ced5691b7a802ce417e5',1,'tram']]],\n  ['maxsize_18',['maxSize',['../classtram_1_1_pool.html#aba0758ee3091dd01f8f880000973d805',1,'tram::Pool']]],\n  ['maybe_5fflag_19',['maybe_flag',['../structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28',1,'tram::Settings::RawSetting']]],\n  ['medium_20',['medium',['../structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63',1,'tram::FileSource']]],\n  ['memory_5fend_21',['memory_end',['../classtram_1_1_queue.html#abdd8f8cca203a1cb1612535dc418bf37',1,'tram::Queue']]],\n  ['memory_5fstart_22',['memory_start',['../classtram_1_1_queue.html#a5a96adeb0d29e7f5f6f53c4171d19390',1,'tram::Queue']]],\n  ['menu_5flist_23',['menu_list',['../namespacetram_1_1_ext_1_1_menu.html#a430defe2c6bc8ce1fb5d75b41b558113',1,'tram::Ext::Menu']]],\n  ['menu_5fstack_24',['menu_stack',['../namespacetram_1_1_ext_1_1_menu.html#ad6f40542aa62e171700b1c195770c014',1,'tram::Ext::Menu']]],\n  ['menu_5fsystem_25',['MENU_SYSTEM',['../namespacetram_1_1_ext_1_1_menu.html#ac964e0479522fe9ecac4f78c47de8674',1,'tram::Ext::Menu']]],\n  ['mesh_5fsize_26',['mesh_size',['../structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7',1,'tram::Physics::CollisionShape']]],\n  ['mesh_5ftriangles_27',['mesh_triangles',['../structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c',1,'tram::Physics::CollisionShape']]],\n  ['message_28',['message',['../structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0',1,'tram::Ext::Menu::LogIntercept']]],\n  ['message_5fdata_5flimit_29',['MESSAGE_DATA_LIMIT',['../namespacetram.html#a3e23af0f990c870da7822e6160160173',1,'tram']]],\n  ['message_5fpriority_5fqueue_5flimit_30',['MESSAGE_PRIORITY_QUEUE_LIMIT',['../namespacetram.html#a2b1778620231829d63a83b6c451b60c2',1,'tram']]],\n  ['message_5fqueue_5flimit_31',['MESSAGE_QUEUE_LIMIT',['../namespacetram.html#a13df257c04982a0237aed3b1d1a18388',1,'tram']]],\n  ['message_5ftype_32',['message_type',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#af5a139a253bf7fccfbd60307e4552d03',1,'tram::Ext::Menu::MessageSend::message_type()'],['../structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9',1,'tram::Signal::message_type()']]],\n  ['message_5ftype_5flimit_33',['MESSAGE_TYPE_LIMIT',['../namespacetram.html#ac5765d4ac76416672f8f55e6e4e48b9b',1,'tram']]],\n  ['mid_5fpoint_34',['mid_point',['../structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1',1,'tram::Octree::Node']]],\n  ['midpoint_5fx_35',['midpoint_x',['../structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03',1,'tram::Render::SpriteFrame']]],\n  ['midpoint_5fy_36',['midpoint_y',['../structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64',1,'tram::Render::SpriteFrame']]],\n  ['min_37',['min',['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113',1,'tram::AABBTree::Node']]],\n  ['mode_38',['mode',['../classtram_1_1_file.html#acd6ce0e7642fe94f378dc8a749efdcb9',1,'tram::File::mode()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44',1,'tram::Render::API::SWTexture::mode()']]],\n  ['model_39',['model',['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#ac289a25bd2a5fbdd29c0d3572a99db27',1,'tram::Ext::Kitchensink::DebugText::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a0ab7b3efe24ac2f24fc2e94bbcc779bc',1,'tram::Ext::Kitchensink::DebugShape::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#ae330b7417b6da030f0932f51d9282902',1,'tram::Ext::Kitchensink::TriggerAutosave::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1695bf4215ec18944897194e0abff99c',1,'tram::Ext::Kitchensink::TriggerHurt::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a964426361804464f0916bfb2619691a7',1,'tram::Ext::Kitchensink::TriggerOnce::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#a4c73c411f8c7f31cb6a9db8863f0d2e4',1,'tram::Ext::Kitchensink::TriggerMultiple::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#a2119ac49d5090511a7f49419025cc877',1,'tram::Ext::Kitchensink::TriggerPush::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a17be889e28adc003ba638f2b8ee1a0cb',1,'tram::Ext::Kitchensink::TriggerRemove::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa7de7abe61d44d1229d02632344a3117',1,'tram::Ext::Kitchensink::TriggerTeleport::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#ae52d91988675dae168e7ccc18e36b737',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::model()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce',1,'tram::Render::API::ShaderUniformModelMatrices::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#ac077e8cc4096fec6612b47ff60054279',1,'tram::Ext::Kitchensink::Pickup::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a1eda56e61bb29500549213c1d194a550',1,'tram::Ext::Kitchensink::Button::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#aa4eb604d75a4b015c214a73385b8583a',1,'tram::Ext::Kitchensink::Train::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#abce68a2e7fe9394d10f26ab51fe14e21',1,'tram::Ext::Kitchensink::Water::model()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#a74d7eb13aeb7ac3a513fef56b0fe0bf4',1,'tram::Ext::Kitchensink::Breakable::model()'],['../classtram_1_1_trigger.html#a9646278b81b27211890f5895400d216d',1,'tram::Trigger::model()'],['../classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b',1,'tram::StaticWorldObject::model()'],['../classtram_1_1_decoration.html#ab6212cdb928b6d3f28cdd0ed5d7b6053',1,'tram::Decoration::model()'],['../classtram_1_1_crate.html#af5795bc6e73fbf1f6f40968ed4d53d96',1,'tram::Crate::model()'],['../classtram_1_1_render_component.html#a3f3ff752d0389444e9450d9d3c27ac2b',1,'tram::RenderComponent::model()'],['../classtram_1_1_light_component.html#a3bab1eb0115b251850a8342774d18a28',1,'tram::LightComponent::model()'],['../classtram_1_1_audio_component.html#acbf584247d4a88f0fa923f9e5b426f84',1,'tram::AudioComponent::model()'],['../classtram_1_1_animation_component.html#a03643f9802dcb7bfe3afdabc432c3025',1,'tram::AnimationComponent::model()']]],\n  ['model_5faabb_40',['model_aabb',['../classtram_1_1_render_1_1_model.html#a5308aff655f38cf12503c88a7d82cd01',1,'tram::Render::Model']]],\n  ['model_5fdata_41',['model_data',['../classtram_1_1_render_1_1_model.html#a7559c74fb4b4ebb3c643dc721ec84167',1,'tram::Render::Model']]],\n  ['model_5fmatrix_5funiform_5fbinding_42',['model_matrix_uniform_binding',['../namespacetram_1_1_render_1_1_a_p_i.html#a2a0501e16181b7cde9c9983906abf9dd',1,'tram::Render::API']]],\n  ['model_5fmatrix_5funiform_5fbuffer_43',['model_matrix_uniform_buffer',['../namespacetram_1_1_render_1_1_a_p_i.html#a2caf5fc3ac8c9036ca6b9be0180c98ec',1,'tram::Render::API']]],\n  ['modellights_44',['modelLights',['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9',1,'tram::Render::API::ShaderUniformModelMatrices']]],\n  ['modelmatrices_45',['modelMatrices',['../namespacetram_1_1_render_1_1_a_p_i.html#aa07f4e77940a42bcb683f6a5fe639598',1,'tram::Render::API']]],\n  ['monguser_46',['monguser',['../main_8cpp.html#a9968db2fbe46c1d2ce9a76ccdff7929c',1,'main.cpp']]],\n  ['monguser_5farmature_47',['monguser_armature',['../main_8cpp.html#ac2200d84471744e6d70ce13d0835a5c9',1,'main.cpp']]],\n  ['motion_5fstate_48',['motion_state',['../structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa',1,'tram::Physics::API::RigidbodyMetadata']]],\n  ['mouse_5fclick_5fnot_5fhandled_49',['mouse_click_not_handled',['../namespacetram_1_1_g_u_i.html#a8cd56d99b85b29b8659648e28bb1f5ca',1,'tram::GUI']]],\n  ['mouse_5fclick_5fnot_5fhandled_5flate_50',['mouse_click_not_handled_late',['../namespacetram_1_1_g_u_i.html#a64d510448e860481081147bb9e1ef0d6',1,'tram::GUI']]],\n  ['mouselook_51',['mouselook',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#ab7853506fcff02e0836600d49dd6c302',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['move_5fdirection_52',['move_direction',['../classtram_1_1_raycast_controller_component.html#a1bd33cca14d40e584b11c5794653dfe4',1,'tram::RaycastControllerComponent::move_direction()'],['../classtram_1_1_f_p_s_controller_component.html#a7f8e30150636e41889103015053db656',1,'tram::FPSControllerComponent::move_direction()']]],\n  ['move_5fmagnitude_53',['move_magnitude',['../classtram_1_1_raycast_controller_component.html#a2324ab257417857ba243ff51605ec8ae',1,'tram::RaycastControllerComponent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_d.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_d.js",
    "content": "var searchData=\n[\n  ['name_0',['name',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61',1,'tram::Ext::Kitchensink::AnimStateSpace::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37',1,'tram::Ext::Kitchensink::AnimState::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b',1,'tram::Ext::Kitchensink::Attribute::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a',1,'tram::Ext::Kitchensink::Effect::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_attribute_info.html#a7c20f9f0740b7cb843b7f83236c7ce48',1,'tram::Ext::Kitchensink::AttributeInfo::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_faction.html#ae37fd3f67a9a89138abf720d56b9ab3f',1,'tram::Ext::Kitchensink::Faction::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719',1,'tram::Ext::Kitchensink::BaseAttribute::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c',1,'tram::Ext::Kitchensink::DialogTopic::name()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe',1,'tram::Ext::Kitchensink::ItemClass::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd',1,'tram::Ext::Kitchensink::QuestVariable::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8',1,'tram::Ext::Kitchensink::QuestTrigger::name()'],['../structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7',1,'tram::Ext::Kitchensink::Quest::name()'],['../classtram_1_1_entity.html#ab9b31a0d34775a0f01a2bef87efd3140',1,'tram::Entity::name()'],['../structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1',1,'tram::SharedEntityData::name()'],['../classtram_1_1_navmesh.html#afa5f4827ce36be9a7e41fe2d4f4dc55f',1,'tram::Navmesh::name()'],['../classtram_1_1_path.html#a7933eedcc33af28cc227944e586fee3f',1,'tram::Path::name()'],['../classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83',1,'tram::Resource::name()'],['../structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87',1,'tram::Settings::SettingInfo::name()'],['../structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848',1,'tram::System::SystemInfo::name()'],['../classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0',1,'tram::Transition::name()'],['../classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05',1,'tram::WorldCell::name()'],['../structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84',1,'tram::Render::Bone::name()'],['../classtram_1_1_hashmap.html#a93e079fec725ee981f46656dec2b57fb',1,'tram::Hashmap::name()'],['../classtram_1_1_queue.html#aba308a2dd5f4e5dac2841047c46fa9bd',1,'tram::Queue::name()'],['../classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28',1,'tram::StackPool::name()']]],\n  ['name_5fptr_1',['name_ptr',['../classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646',1,'tram::ValuePtr']]],\n  ['name_5fvalue_2',['name_value',['../classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105',1,'tram::Value']]],\n  ['named_5fentity_5flimit_3',['NAMED_ENTITY_LIMIT',['../namespacetram.html#a746e6432794113f984198f336d8cce65',1,'tram']]],\n  ['near_5fplane_4',['near_plane',['../namespacetram_1_1_render.html#a5af0e03c95ed2805bfff581e9a09922f',1,'tram::Render']]],\n  ['nearest_5',['nearest',['../structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470',1,'tram::Octree::NearestSearch']]],\n  ['next_6',['next',['../structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2',1,'tram::NavmeshNode::next()'],['../classtram_1_1_path_follower.html#a97bd194a87f8c4d747b1c737a34f8c53',1,'tram::PathFollower::next()']]],\n  ['next_5fstate_7',['next_state',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['next_5ftopics_8',['next_topics',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['nodes_9',['nodes',['../classtram_1_1_audio_1_1_sound_graph.html#afa8bc79a4c17ed1850d6f24d9110f37e',1,'tram::Audio::SoundGraph::nodes()'],['../classtram_1_1_graph.html#a95178b1e2898a6f4ba58c8b72aa2873d',1,'tram::Graph::nodes()'],['../classtram_1_1_navmesh.html#a267e74b526a850dce2b51459113082f7',1,'tram::Navmesh::nodes()'],['../classtram_1_1_render_1_1_light_graph.html#aea188bfb0d41aa49aea9898a72fd0ff2',1,'tram::Render::LightGraph::nodes()'],['../classtram_1_1_octree.html#a220207230fbc117b610f5b4a1cf38d65',1,'tram::Octree::nodes()']]],\n  ['normal_10',['normal',['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403',1,'tram::Physics::API::ObjectCollision::normal()'],['../structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b',1,'tram::Physics::Collision::normal()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4',1,'tram::Render::API::FVFHelper::normal()'],['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b',1,'tram::Render::AABBTriangle::normal()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664',1,'tram::Render::API::FFPHelper::normal()'],['../structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520',1,'tram::Render::DynamicModelVertex::normal()'],['../structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92',1,'tram::Render::StaticModelVertex::normal()']]],\n  ['notification_5ftype_11',['notification_type',['../structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2',1,'tram::Async::ResourceRequest']]],\n  ['nrm_12',['nrm',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124',1,'tram::Render::API::StaticVertex::nrm()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140',1,'tram::Render::API::DynamicVertex::nrm()']]],\n  ['nrm_5fx_13',['nrm_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd',1,'tram::Render::API::StaticVertex::nrm_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925',1,'tram::Render::API::DynamicVertex::nrm_x()']]],\n  ['nrm_5fy_14',['nrm_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686',1,'tram::Render::API::StaticVertex::nrm_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b',1,'tram::Render::API::DynamicVertex::nrm_y()']]],\n  ['nrm_5fz_15',['nrm_z',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910',1,'tram::Render::API::StaticVertex::nrm_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249',1,'tram::Render::API::DynamicVertex::nrm_z()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_e.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_e.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_e.js",
    "content": "var searchData=\n[\n  ['objective_0',['objective',['../structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700',1,'tram::Ext::Kitchensink::QuestVariable']]],\n  ['octants_1',['octants',['../structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d',1,'tram::Octree::Node']]],\n  ['offset_2',['offset',['../classtram_1_1_ext_1_1_menu_1_1_intercept_menu.html#a2c39ca031c740b68ca7695bb8c3af75c',1,'tram::Ext::Menu::InterceptMenu::offset()'],['../structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63',1,'tram::Render::VertexAttribute::offset()']]],\n  ['offset_5fx_3',['offset_x',['../structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0',1,'tram::Render::SpriteFrame']]],\n  ['offset_5fy_4',['offset_y',['../structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e',1,'tram::Render::SpriteFrame']]],\n  ['origin_5',['origin',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#abd3ab3f24e9881fafefd2f8f47e1e902',1,'tram::Ext::Kitchensink::Button::origin()'],['../classtram_1_1_render_1_1_model.html#aff4ea02ba501bed88104e795ca72f100',1,'tram::Render::Model::origin()']]],\n  ['ortho_5fratio_6',['ortho_ratio',['../namespacetram_1_1_render.html#a1b80c54f15430a66aae59f839ece5e7d',1,'tram::Render']]],\n  ['override_5fstack_7',['override_stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#a7c1f9cd1c54afd025f332f11c4643cb1',1,'tram::Ext::Kitchensink::AIAgent']]]\n];\n"
  },
  {
    "path": "docs/cppapi/search/variables_f.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title></title>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"search.css\"/>\n<script type=\"text/javascript\" src=\"variables_f.js\"></script>\n<script type=\"text/javascript\" src=\"search.js\"></script>\n</head>\n<body class=\"SRPage\">\n<div id=\"SRIndex\">\n<div class=\"SRStatus\" id=\"Loading\">Loading...</div>\n<div id=\"SRResults\"></div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ncreateResults();\n/* @license-end */\n</script>\n<div class=\"SRStatus\" id=\"Searching\">Searching...</div>\n<div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\ndocument.getElementById(\"Loading\").style.display=\"none\";\ndocument.getElementById(\"NoMatches\").style.display=\"none\";\nvar searchResults = new SearchResults(\"searchResults\");\nsearchResults.Search();\nwindow.addEventListener(\"message\", function(event) {\n  if (event.data == \"take_focus\") {\n    var elem = searchResults.NavNext(0);\n    if (elem) elem.focus();\n  }\n});\n/* @license-end */\n</script>\n</div>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/search/variables_f.js",
    "content": "var searchData=\n[\n  ['p0_0',['p0',['../structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c',1,'tram::Physics::CollisionTriangle']]],\n  ['p1_1',['p1',['../structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d',1,'tram::Physics::CollisionTriangle']]],\n  ['p2_2',['p2',['../structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342',1,'tram::Physics::CollisionTriangle']]],\n  ['package_5fstack_3',['package_stack',['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_agent.html#aecf643b955c103675f0ae066f443dd16',1,'tram::Ext::Kitchensink::AIAgent']]],\n  ['padding_4',['padding',['../structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e',1,'tram::Async::ResourceRequest::padding()'],['../structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1',1,'tram::Render::Keyframe::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221',1,'tram::Render::API::GLLight::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf',1,'tram::Render::API::ShaderUniformMatrices::padding()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f',1,'tram::Render::API::SWIndexArray::padding()'],['../classtram_1_1_hashmap.html#a2eb7e0ca3a72367b3944121636bd74cc',1,'tram::Hashmap::padding()']]],\n  ['padding2_5',['padding2',['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984',1,'tram::Render::API::GLLight']]],\n  ['panning_6',['panning',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['panning_5fdelay_7',['panning_delay',['../structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5',1,'tram::Audio::Spatial::PathRenderingInfo']]],\n  ['param1_8',['param1',['../structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2',1,'tram::Audio::FilterParameters']]],\n  ['param2_9',['param2',['../structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e',1,'tram::Audio::FilterParameters']]],\n  ['parameter_5fstring_10',['parameter_string',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac7674c2ea9dadef8e94fb4f9407271e3',1,'tram::Ext::Menu::MessageSend::parameter_string()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#a123fd9dd1b5828d6e09669773c1c80d1',1,'tram::Ext::Menu::EventEmit::parameter_string()']]],\n  ['parameter_5ftype_11',['parameter_type',['../classtram_1_1_ext_1_1_menu_1_1_message_send.html#ac3eb62488f5accdcc4f60ef0f9d93fb0',1,'tram::Ext::Menu::MessageSend::parameter_type()'],['../classtram_1_1_ext_1_1_menu_1_1_event_emit.html#ac74668908219798e42ccb5c73b8b60fd',1,'tram::Ext::Menu::EventEmit::parameter_type()']]],\n  ['parameters_12',['parameters',['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60',1,'tram::Audio::SoundGraph::Node::parameters()'],['../namespacetram_1_1_ext_1_1_scripting_1_1_lua.html#a63ffedf8d40f57cc6c53d9f617b1fcc5',1,'tram::Ext::Scripting::Lua::parameters()']]],\n  ['parent_13',['parent',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a',1,'tram::Ext::Kitchensink::AnimStateSpace::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#ad9c047256c4c960006fcada8a7d03ede',1,'tram::Ext::Kitchensink::Button::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a121a1bf7605e24565f69bb965c2ad731',1,'tram::Ext::Kitchensink::Inventory::parent()'],['../classtram_1_1_entity_component.html#aea0aa7626e36e31f1621ba81925cb56b',1,'tram::EntityComponent::parent()'],['../classtram_1_1_resource_proxy.html#ad0386a7f5c0158ead0174c2cdd25c2b6',1,'tram::ResourceProxy::parent()'],['../structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3',1,'tram::Render::Bone::parent()'],['../structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33',1,'tram::AABBTree::Node::parent()'],['../structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df',1,'tram::Octree::Node::parent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_a_i_package.html#a9647c7b82c89b70b1f28c6b6fa7f6349',1,'tram::Ext::Kitchensink::AIPackage::parent()']]],\n  ['particle_5fmax_5fage_14',['particle_max_age',['../classtram_1_1_particle_component.html#ac12c10889354895c145ddfbd759ed2c2',1,'tram::ParticleComponent']]],\n  ['particles_15',['particles',['../classtram_1_1_particle_component.html#af671bbcfbdb0e2560ac63704b17e98f4',1,'tram::ParticleComponent']]],\n  ['path_16',['path',['../classtram_1_1_file.html#a3d25cbe667ab658dbaea6655a6321782',1,'tram::File::path()'],['../classtram_1_1_path_follower.html#afef4ecc46377cb395a63dbd67bc16c9c',1,'tram::PathFollower::path()'],['../structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536',1,'tram::FileSource::path()']]],\n  ['path_5flimit_17',['PATH_LIMIT',['../namespacetram.html#a4c8eb191637ec58035b98bc8a3dc7955',1,'tram']]],\n  ['paths_18',['paths',['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630',1,'tram::Audio::Spatial::AudioSource::paths()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8',1,'tram::Audio::Spatial::AudioRender::paths()']]],\n  ['paths_5ffor_5flistener_19',['PATHS_FOR_LISTENER',['../namespacetram_1_1_audio_1_1_spatial.html#abe41831e149db1775fb1a738b693a2e4',1,'tram::Audio::Spatial']]],\n  ['paths_5ffor_5frendering_20',['PATHS_FOR_RENDERING',['../namespacetram_1_1_audio_1_1_spatial.html#a84078cbb908ef623f2337cdce8a777b9',1,'tram::Audio::Spatial']]],\n  ['paths_5ffor_5fsource_21',['PATHS_FOR_SOURCE',['../namespacetram_1_1_audio_1_1_spatial.html#ab6d4c2f9690d64f882c492e5e9075eae',1,'tram::Audio::Spatial']]],\n  ['pause_22',['pause',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a86d016cc6943098f57b0b48ae9b39b8e',1,'tram::Ext::Kitchensink::Button::pause()'],['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c',1,'tram::AnimationComponent::AnimationPlaybackInfo::pause()']]],\n  ['pause_5flast_23',['pause_last',['../structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f',1,'tram::Ext::Kitchensink::AnimState']]],\n  ['pause_5fnext_24',['pause_next',['../classtram_1_1_file.html#a5b6f66dee66294cd7095cb4bc4a3a265',1,'tram::File']]],\n  ['pause_5fon_5flast_5fframe_25',['pause_on_last_frame',['../structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da',1,'tram::AnimationComponent::AnimationPlaybackInfo']]],\n  ['physics_5fbody_26',['physics_body',['../classtram_1_1_player.html#a70d0096e740c70b9d4b2a4d1f567166b',1,'tram::Player']]],\n  ['physics_5fgravity_27',['PHYSICS_GRAVITY',['../namespacetram.html#a62a53097647f52336381e7470fb2abe5',1,'tram']]],\n  ['physics_5fground_5fplane_28',['PHYSICS_GROUND_PLANE',['../namespacetram.html#aee70318c6bcb6ab23a4c627b40ffc247',1,'tram']]],\n  ['physicscomponent_29',['physicscomponent',['../classtram_1_1_decoration.html#a583857b0ebd4e260c7ef634ff93d7bdf',1,'tram::Decoration::physicscomponent()'],['../classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def',1,'tram::StaticWorldObject::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a4dd2f1f76ca0846de1455e4ad4d1cf8d',1,'tram::Ext::Kitchensink::Button::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_breakable.html#ac912d2b557ffcb5d2883ea43646b5b17',1,'tram::Ext::Kitchensink::Breakable::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_water.html#a1d604782c7dd64c7d26a515b35e9defb',1,'tram::Ext::Kitchensink::Water::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_train.html#ad72e7fe2faf8817a399bf94ada70c562',1,'tram::Ext::Kitchensink::Train::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_pickup.html#a881a5ba8049060a6ac23f30404c0d8e2',1,'tram::Ext::Kitchensink::Pickup::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_text.html#a24ac74bcb44bef87d855544b8040e83d',1,'tram::Ext::Kitchensink::DebugText::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_debug_shape.html#a4b6d2a2cc1fa252481c5418e50d26c74',1,'tram::Ext::Kitchensink::DebugShape::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_autosave.html#a641f20fdc9e0a3f0887be88f0198580c',1,'tram::Ext::Kitchensink::TriggerAutosave::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_hurt.html#a1fcf1fd373b0735b96983688eaa52961',1,'tram::Ext::Kitchensink::TriggerHurt::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_once.html#a1134b7b7a4a65ce7902004bb4dd75a50',1,'tram::Ext::Kitchensink::TriggerOnce::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_multiple.html#add39da54898ba26a33986bd99872abaa',1,'tram::Ext::Kitchensink::TriggerMultiple::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_push.html#aee5d9dfe5e798739bb70eb16d2a9948e',1,'tram::Ext::Kitchensink::TriggerPush::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_remove.html#a127f6410a4f40845b89d2b917154d09d',1,'tram::Ext::Kitchensink::TriggerRemove::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_teleport.html#aa1eabe6c002caa539efb57b79345520f',1,'tram::Ext::Kitchensink::TriggerTeleport::physicscomponent()'],['../classtram_1_1_ext_1_1_kitchensink_1_1_trigger_player_movement.html#a5bf7a2365438d0aff49a42ba6809de17',1,'tram::Ext::Kitchensink::TriggerPlayerMovement::physicscomponent()'],['../classtram_1_1_crate.html#a81bf1b61c023f0923ded303fabf343f2',1,'tram::Crate::physicscomponent()']]],\n  ['pitch_30',['pitch',['../classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html#a44a70884e100d0b6a198b3ec588a68b6',1,'tram::Ext::Camera::FirstPersonCamera']]],\n  ['pixels_31',['pixels',['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334',1,'tram::Render::API::SWTexture']]],\n  ['planes_32',['planes',['../classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7',1,'tram::Transition']]],\n  ['play_5fon_5fstart_33',['play_on_start',['../classtram_1_1_audio_component.html#afa9685950e016f31ca90c71839cd7852',1,'tram::AudioComponent']]],\n  ['player_34',['player',['../main_8cpp.html#a96781128d3743da3d17e0fdd91afba7b',1,'main.cpp']]],\n  ['plomp_35',['plomp',['../classtram_1_1_player.html#a02a0f79e73da31e380ab604773461b4b',1,'tram::Player']]],\n  ['point_36',['point',['../structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a',1,'tram::Physics::API::ObjectCollision::point()'],['../structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce',1,'tram::Physics::Collision::point()'],['../structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757',1,'tram::Octree::Node::point()'],['../structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e',1,'tram::Octree::NearestSearch::point()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952',1,'tram::Audio::Spatial::PathTracingResult::point()'],['../structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7',1,'tram::Audio::Spatial::PathFromAudioSource::point()']]],\n  ['point1_37',['point1',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73',1,'tram::Render::AABBTriangle']]],\n  ['point2_38',['point2',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473',1,'tram::Render::AABBTriangle']]],\n  ['point3_39',['point3',['../structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148',1,'tram::Render::AABBTriangle']]],\n  ['points_40',['points',['../classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b',1,'tram::Transition::points()'],['../structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f',1,'tram::Render::API::ClipTriangle::points()']]],\n  ['pool_41',['pool',['../classtram_1_1_pool_proxy.html#ad6e9619a7833dc2b54ee8cbe1d27ef51',1,'tram::PoolProxy']]],\n  ['poolname_42',['poolName',['../classtram_1_1_pool.html#a7c93c6c74e11a18855e33e69a87d481f',1,'tram::Pool']]],\n  ['poolsize_43',['poolSize',['../classtram_1_1_pool.html#a4208869bc738c75f8c11b7b65b526564',1,'tram::Pool']]],\n  ['pos_44',['pos',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521',1,'tram::Render::API::StaticVertex::pos()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd',1,'tram::Render::API::DynamicVertex::pos()'],['../structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91',1,'tram::Render::API::ColorVertex::pos()']]],\n  ['pos_5fx_45',['pos_x',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2',1,'tram::Render::API::StaticVertex::pos_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f',1,'tram::Render::API::DynamicVertex::pos_x()'],['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac',1,'tram::Render::API::LineVertex::pos_x()']]],\n  ['pos_5fy_46',['pos_y',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6',1,'tram::Render::API::StaticVertex::pos_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816',1,'tram::Render::API::DynamicVertex::pos_y()'],['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67',1,'tram::Render::API::LineVertex::pos_y()']]],\n  ['pos_5fz_47',['pos_z',['../structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93',1,'tram::Render::API::StaticVertex::pos_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a',1,'tram::Render::API::DynamicVertex::pos_z()'],['../structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf',1,'tram::Render::API::LineVertex::pos_z()']]],\n  ['pose_48',['pose',['../classtram_1_1_animation_component.html#a8ca6edc357f6d61b8750acdec9d4de77',1,'tram::AnimationComponent::pose()'],['../classtram_1_1_render_component.html#affc6cba67cad84483c2dd69ba952a7f3',1,'tram::RenderComponent::pose()'],['../structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb',1,'tram::Render::Pose::pose()'],['../structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2',1,'tram::Render::API::D3DDrawListEntry::pose()'],['../structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d',1,'tram::Render::API::GLDrawListEntry::pose()'],['../structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377',1,'tram::Render::API::SWDrawListEntry::pose()']]],\n  ['position_49',['position',['../structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f',1,'tram::Render::API::FVFHelper::position()'],['../structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12',1,'tram::Render::LightGraph::Node::position()'],['../structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc',1,'tram::Render::LightTree::Light::position()'],['../structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f',1,'tram::Render::API::FFPHelper::position()'],['../structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450',1,'tram::Render::SpritePoint::position()'],['../structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83',1,'tram::Audio::SoundGraph::Node::position()'],['../structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6',1,'tram::Audio::Spatial::AudioSource::position()'],['../classtram_1_1_ext_1_1_camera_1_1_camera.html#a071bb8522454174c7048ed6f3dcda4df',1,'tram::Ext::Camera::Camera::position()'],['../structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1',1,'tram::SharedEntityData::position()'],['../structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a',1,'tram::Node::position()'],['../structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1',1,'tram::NavmeshNode::position()'],['../structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105',1,'tram::Physics::API::CollisionShapeTransform::position()'],['../classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html#a2374bce1a3ea318d53f293d90231d431',1,'tram::Physics::API::CallbackMotionState::position()']]],\n  ['poster_50',['poster',['../structtram_1_1_event.html#a92418dc8036094cf309758831c14deed',1,'tram::Event']]],\n  ['prev_51',['prev',['../structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5',1,'tram::NavmeshNode::prev()'],['../classtram_1_1_path_follower.html#ace8a71f492daf52acb64b89fd21bc025',1,'tram::PathFollower::prev()']]],\n  ['progress_52',['progress',['../classtram_1_1_ext_1_1_kitchensink_1_1_button.html#a90673adbb238aace522e9ab8be1218d6',1,'tram::Ext::Kitchensink::Button::progress()'],['../classtram_1_1_path_follower.html#adc605aaf1c4740b70ebe8a16be03af60',1,'tram::PathFollower::progress()']]],\n  ['projection_53',['projection',['../namespacetram_1_1_render.html#a4b4ea9d6c17adfd0a9343d5908b5dcdc',1,'tram::Render::projection()'],['../structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2',1,'tram::Render::API::ShaderUniformMatrices::projection()']]],\n  ['projection_5fmatrix_54',['projection_matrix',['../structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc',1,'tram::Render::API::LayerParameters']]],\n  ['prompt_55',['prompt',['../structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8',1,'tram::Ext::Kitchensink::DialogTopic']]],\n  ['property_56',['property',['../classtram_1_1_render_1_1_material.html#a758d1a53191fd27bec22aa269b1edd21',1,'tram::Render::Material']]],\n  ['ptr_57',['ptr',['../classtram_1_1_component.html#a76e7065ebab1cd17d4cabe184ff78dfe',1,'tram::Component::ptr()'],['../structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7',1,'tram::Pool::iterator::ptr()'],['../classtram_1_1_pool_ptr.html#aba35892d9d52fdbeb76f74fdbe9ed80f',1,'tram::PoolPtr::ptr()']]]\n];\n"
  },
  {
    "path": "docs/cppapi/serialization_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/serialization.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">serialization.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cassert&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"serialization_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/serialization_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/serialization.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">serialization.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"serialization_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SERIALIZATION_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SERIALIZATION_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">/*class SerializedFieldArray {</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">public:</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"comment\">    SerializedFieldArray(const Value* first, size_t count) : first_field(first), field_count(count) {}</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"comment\">    const Value&amp; operator [](size_t n) const { assert(n &lt; field_count); return first_field[n]; }</span></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"comment\">private:</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"comment\">    const Value* first_field;</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"comment\">    size_t field_count;</span></div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"comment\">};*/</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>}</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SERIALIZATION_H</span></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/settings_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/settings.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">settings.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">framework/settings.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">tram::Settings::RawSetting</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_settings\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_settings\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Application setting management and CLI command parser. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a1eb24fa09d0b62f743ff74a99945b8ea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a1eb24fa09d0b62f743ff74a99945b8ea\">tram::Settings::SetFromRaw</a> (SettingInfo &amp;info)</td></tr>\n<tr class=\"separator:a1eb24fa09d0b62f743ff74a99945b8ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac51701ca424bff0d1a8251fc6b128643\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#ac51701ca424bff0d1a8251fc6b128643\">tram::Settings::SetAndStore</a> (SettingInfo info)</td></tr>\n<tr class=\"separator:ac51701ca424bff0d1a8251fc6b128643\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">tram::Settings::Register</a> (bool &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae777d5373a811ea16bac85f681608054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#ae777d5373a811ea16bac85f681608054\">tram::Settings::Register</a> (float &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:ae777d5373a811ea16bac85f681608054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#aa67d64e20ae324efb9693944c7a56823\">tram::Settings::Register</a> (int32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a8a4aec9c01b32664d1849fe0afde230c\">tram::Settings::Register</a> (uint32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Value&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">tram::Settings::Get</a> (name_t name)</td></tr>\n<tr class=\"separator:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">tram::Settings::Set</a> (name_t name, Value value)</td></tr>\n<tr class=\"separator:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">tram::Settings::Parse</a> (const char **argv, int argc)</td></tr>\n<tr class=\"separator:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a482e75867f85885025dc262763b8df40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">tram::Settings::Flags</a> (name_t name)</td></tr>\n<tr class=\"separator:a482e75867f85885025dc262763b8df40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; name_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">tram::Settings::GetSettings</a> (uint32_t filter)</td></tr>\n<tr class=\"separator:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af223a059620ac414794cb974b5923b77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">tram::Settings::Save</a> (const char *file)</td></tr>\n<tr class=\"separator:af223a059620ac414794cb974b5923b77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">tram::Settings::Load</a> (const char *file)</td></tr>\n<tr class=\"separator:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a18bc51cda3b8cbce070d4d8a3dfef15f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a18bc51cda3b8cbce070d4d8a3dfef15f\">tram::Settings::SETTING_LIMIT</a> = 200</td></tr>\n<tr class=\"separator:a18bc51cda3b8cbce070d4d8a3dfef15f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/settings_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/settings.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">settings.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;initializer_list&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"settings_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_settings\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_settings\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Application setting management and CLI command parser. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a0861538a476a71457a80e698e710eef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">: uint32_t { <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">tram::Settings::USER</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">tram::Settings::APPLICATION</a> = 2\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">tram::Settings::MENU</a> = 4\n, <a class=\"el\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">tram::Settings::NONE</a> = 0\n }</td></tr>\n<tr class=\"separator:a0861538a476a71457a80e698e710eef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">tram::Settings::Register</a> (bool &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a56e0d9f488dcff9a350929bf4ef3f8d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae777d5373a811ea16bac85f681608054\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#ae777d5373a811ea16bac85f681608054\">tram::Settings::Register</a> (float &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:ae777d5373a811ea16bac85f681608054\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#aa67d64e20ae324efb9693944c7a56823\">tram::Settings::Register</a> (int32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:aa67d64e20ae324efb9693944c7a56823\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a8a4aec9c01b32664d1849fe0afde230c\">tram::Settings::Register</a> (uint32_t &amp;value, const char *name, uint32_t flags)</td></tr>\n<tr class=\"separator:a8a4aec9c01b32664d1849fe0afde230c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Value&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">tram::Settings::Get</a> (name_t name)</td></tr>\n<tr class=\"separator:a2e673200f6c75070a5e40f65e46f92dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">tram::Settings::Set</a> (name_t name, Value value)</td></tr>\n<tr class=\"separator:a33ec2bfcebab7ee764566a172fab7cb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">tram::Settings::Parse</a> (const char **argv, int argc)</td></tr>\n<tr class=\"separator:a2194732b7c9aa48722e59cd5e5ceb456\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af223a059620ac414794cb974b5923b77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">tram::Settings::Save</a> (const char *file)</td></tr>\n<tr class=\"separator:af223a059620ac414794cb974b5923b77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">tram::Settings::Load</a> (const char *file)</td></tr>\n<tr class=\"separator:a455697cb70a2b3f4f481dba130d6b181\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a482e75867f85885025dc262763b8df40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">tram::Settings::Flags</a> (name_t name)</td></tr>\n<tr class=\"separator:a482e75867f85885025dc262763b8df40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; name_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">tram::Settings::GetSettings</a> (uint32_t filter)</td></tr>\n<tr class=\"separator:a4d6040ae5a9915dcc4d905693a63b67a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/settings_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/settings.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">settings.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"settings_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SETTINGS_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SETTINGS_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"value_8h.html\">framework/value.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;initializer_list&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_settings.html\">tram::Settings</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>enum : uint32_t {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">USER</a> = 1,         <span class=\"comment\">//&lt; Save the setting in user data</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">APPLICATION</a> = 2,  <span class=\"comment\">//&lt; Save the setting in application state data</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">MENU</a> = 4,         <span class=\"comment\">//&lt; Show the setting in the setting menu</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"comment\">// maybe we could add some read-only or write-only flags?</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">NONE</a> = 0</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">   21</a></span>};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a>(<span class=\"keywordtype\">bool</span>&amp; value, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a>(<span class=\"keywordtype\">float</span>&amp; value, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a>(int32_t&amp; value, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a>(uint32_t&amp; value, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">Get</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">Set</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> value);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">Parse</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>** argv, <span class=\"keywordtype\">int</span> argc);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">Save</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* file);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">Load</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* file);</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">Flags</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>std::vector&lt;name_t&gt; <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">GetSettings</a>(uint32_t filter);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_settings_1_1_property.html\">   41</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a> {</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">   42</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">Property</a>(std::initializer_list&lt;value_t&gt; values) {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>        <a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a> = values.begin()[0];</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>        </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name = values.begin()[1];</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>        uint32_t flags = values.begin()[2];</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        <a class=\"code hl_function\" href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">Register</a>(<a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>, name, flags);</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>    }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    </div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad\">   51</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad\">Property</a>(<span class=\"keyword\">const</span> T&amp; <a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>) {</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        this-&gt;value = <a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <span class=\"comment\">/*T&amp; operator=(const Setting&lt;T&gt;&amp; other) {</span></div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">        this-&gt;value = other;</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">        return *this;</span></div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">    }*/</span></div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0\">   60</a></span>    <span class=\"keyword\">operator</span> T() {</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">   64</a></span>    T <a class=\"code hl_variable\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>;</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>};</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>}</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SETTINGS_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html\">tram::Settings</a></div><div class=\"ttdoc\">Application setting management and CLI command parser.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a451735aa4dbc8730e0238c1d87758273\">tram::Settings::MENU</a></div><div class=\"ttdeci\">@ MENU</div><div class=\"ttdef\"><b>Definition:</b> settings.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1a5e8d3d37d3d54ed5793dfc159630d0db\">tram::Settings::APPLICATION</a></div><div class=\"ttdeci\">@ APPLICATION</div><div class=\"ttdef\"><b>Definition:</b> settings.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1ab553ee57502969cce370c35c3f47fa20\">tram::Settings::USER</a></div><div class=\"ttdeci\">@ USER</div><div class=\"ttdef\"><b>Definition:</b> settings.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a0861538a476a71457a80e698e710eef1abc55e02cfcd95615d38f62a14ebbc530\">tram::Settings::NONE</a></div><div class=\"ttdeci\">@ NONE</div><div class=\"ttdef\"><b>Definition:</b> settings.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a2194732b7c9aa48722e59cd5e5ceb456\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a2194732b7c9aa48722e59cd5e5ceb456\">tram::Settings::Parse</a></div><div class=\"ttdeci\">void Parse(const char **argv, int argc)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:178</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a2e673200f6c75070a5e40f65e46f92dd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a2e673200f6c75070a5e40f65e46f92dd\">tram::Settings::Get</a></div><div class=\"ttdeci\">Value Get(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:114</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a33ec2bfcebab7ee764566a172fab7cb5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a33ec2bfcebab7ee764566a172fab7cb5\">tram::Settings::Set</a></div><div class=\"ttdeci\">void Set(name_t name, Value value)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:148</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a455697cb70a2b3f4f481dba130d6b181\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a455697cb70a2b3f4f481dba130d6b181\">tram::Settings::Load</a></div><div class=\"ttdeci\">void Load(const char *file)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:247</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a482e75867f85885025dc262763b8df40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a482e75867f85885025dc262763b8df40\">tram::Settings::Flags</a></div><div class=\"ttdeci\">uint32_t Flags(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:233</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a4d6040ae5a9915dcc4d905693a63b67a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a4d6040ae5a9915dcc4d905693a63b67a\">tram::Settings::GetSettings</a></div><div class=\"ttdeci\">std::vector&lt; name_t &gt; GetSettings(uint32_t filter)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:238</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_a56e0d9f488dcff9a350929bf4ef3f8d5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#a56e0d9f488dcff9a350929bf4ef3f8d5\">tram::Settings::Register</a></div><div class=\"ttdeci\">void Register(bool &amp;value, const char *name, uint32_t flags)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_settings_html_af223a059620ac414794cb974b5923b77\"><div class=\"ttname\"><a href=\"namespacetram_1_1_settings.html#af223a059620ac414794cb974b5923b77\">tram::Settings::Save</a></div><div class=\"ttdeci\">void Save(const char *file)</div><div class=\"ttdef\"><b>Definition:</b> settings.cpp:243</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_settings_1_1_property_html\"><div class=\"ttname\"><a href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property</a></div><div class=\"ttdef\"><b>Definition:</b> settings.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_settings_1_1_property_html_a5389ad0ee0f0f3c870ba776440671897\"><div class=\"ttname\"><a href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">tram::Settings::Property::value</a></div><div class=\"ttdeci\">T value</div><div class=\"ttdef\"><b>Definition:</b> settings.h:64</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_settings_1_1_property_html_a9ac260b077617f945253284397723dad\"><div class=\"ttname\"><a href=\"structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad\">tram::Settings::Property::Property</a></div><div class=\"ttdeci\">Property(const T &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> settings.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_settings_1_1_property_html_ab24720ae7aee4b0f1018012b553096a3\"><div class=\"ttname\"><a href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">tram::Settings::Property::Property</a></div><div class=\"ttdeci\">Property(std::initializer_list&lt; value_t &gt; values)</div><div class=\"ttdef\"><b>Definition:</b> settings.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"avalue_8h_html\"><div class=\"ttname\"><a href=\"value_8h.html\">value.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/shader_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/shader.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">shader.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cassert&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n<code>#include &lt;sstream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;GL/gl.h&gt;</code><br />\n<code>#include &lt;GLES3/gl3.h&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">platform/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"shader_8h_source.html\">render/opengl/shader.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">render/opengl/renderer.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">tram::Render::API::BindUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API::RegisterShader</a> (vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">tram::Render::API::FindShader</a> (vertexformat_t format, materialtype_t type, shaderflags_t mask)</td></tr>\n<tr class=\"separator:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">tram::Render::API::GetAnyShader</a> (shaderflags_t mask)</td></tr>\n<tr class=\"separator:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">tram::Render::API::CompileShaders</a> ()</td></tr>\n<tr class=\"separator:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a55369c124562c90d626b1a67a3e2477e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a55369c124562c90d626b1a67a3e2477e\">tram::Render::API::shader_path</a> = &quot;shaders/gles3/&quot;</td></tr>\n<tr class=\"separator:a55369c124562c90d626b1a67a3e2477e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/shader_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/shader.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">shader.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"shader_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:adc040e3232e63f994c1e3c1d1579c976\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">tram::Render::API::shaderflags_t</a></td></tr>\n<tr class=\"separator:adc040e3232e63f994c1e3c1d1579c976\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a0a0206969f4d402cd5e729bd34391517\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">tram::Render::API::ShaderFlag</a> : shaderflags_t { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">tram::Render::API::SHADER_NONE</a> = 0\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">tram::Render::API::SHADER_SPECULAR</a> = 1\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">tram::Render::API::SHADER_LIGHTMAP</a> = 2\n }</td></tr>\n<tr class=\"separator:a0a0206969f4d402cd5e729bd34391517\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">tram::Render::API::CompileShaders</a> ()</td></tr>\n<tr class=\"separator:a39a089d719f123c75f967ca2a7065d4d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">tram::Render::API::FindShader</a> (vertexformat_t format, materialtype_t type, shaderflags_t mask)</td></tr>\n<tr class=\"separator:ac0c7d3299f33f45e1b65ea4b795eedee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">tram::Render::API::GetAnyShader</a> (shaderflags_t mask)</td></tr>\n<tr class=\"separator:a50e0305574ac545c1e62fd272d9c0c04\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API::RegisterShader</a> (vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</td></tr>\n<tr class=\"separator:a63b87913acfc6af2fd7e39754dc1522d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">tram::Render::API::BindUniformBlock</a> (const char *name, uint32_t binding)</td></tr>\n<tr class=\"separator:a507d7fd9947ed6152f9593c6611a91d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/shader_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/shader.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">shader.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"shader_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_SHADER_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_SHADER_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">   11</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a>;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">   13</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">ShaderFlag</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">SHADER_NONE</a> = 0,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">SHADER_SPECULAR</a> = 1,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">SHADER_LIGHTMAP</a> = 2,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">CompileShaders</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">FindShader</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> mask);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">GetAnyShader</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">shaderflags_t</a> mask);</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">RegisterShader</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> format, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> type, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* vertex_shader, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* fragment_shader);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">BindUniformBlock</a> (<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name, uint32_t binding);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>}</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_SHADER_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a0a0206969f4d402cd5e729bd34391517\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517\">tram::Render::API::ShaderFlag</a></div><div class=\"ttdeci\">ShaderFlag</div><div class=\"ttdef\"><b>Definition:</b> shader.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a32b9ba4ddcd11c5cc6742966a1c24e53\">tram::Render::API::SHADER_LIGHTMAP</a></div><div class=\"ttdeci\">@ SHADER_LIGHTMAP</div><div class=\"ttdef\"><b>Definition:</b> shader.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517a924f5c47b4962d4252d116c2e4641fc4\">tram::Render::API::SHADER_NONE</a></div><div class=\"ttdeci\">@ SHADER_NONE</div><div class=\"ttdef\"><b>Definition:</b> shader.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0a0206969f4d402cd5e729bd34391517aaf523bd1d505855eb402ae729cb552a0\">tram::Render::API::SHADER_SPECULAR</a></div><div class=\"ttdeci\">@ SHADER_SPECULAR</div><div class=\"ttdef\"><b>Definition:</b> shader.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a39a089d719f123c75f967ca2a7065d4d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a39a089d719f123c75f967ca2a7065d4d\">tram::Render::API::CompileShaders</a></div><div class=\"ttdeci\">void CompileShaders()</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:355</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a507d7fd9947ed6152f9593c6611a91d4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a507d7fd9947ed6152f9593c6611a91d4\">tram::Render::API::BindUniformBlock</a></div><div class=\"ttdeci\">void BindUniformBlock(const char *name, uint32_t binding)</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:339</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a50e0305574ac545c1e62fd272d9c0c04\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50e0305574ac545c1e62fd272d9c0c04\">tram::Render::API::GetAnyShader</a></div><div class=\"ttdeci\">uint32_t GetAnyShader(shaderflags_t mask)</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:351</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a63b87913acfc6af2fd7e39754dc1522d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a63b87913acfc6af2fd7e39754dc1522d\">tram::Render::API::RegisterShader</a></div><div class=\"ttdeci\">void RegisterShader(vertexformat_t format, materialtype_t type, const char *vertex_shader, const char *fragment_shader)</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:343</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_ac0c7d3299f33f45e1b65ea4b795eedee\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac0c7d3299f33f45e1b65ea4b795eedee\">tram::Render::API::FindShader</a></div><div class=\"ttdeci\">uint32_t FindShader(vertexformat_t format, materialtype_t type, shaderflags_t mask)</div><div class=\"ttdef\"><b>Definition:</b> shader.cpp:347</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_adc040e3232e63f994c1e3c1d1579c976\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#adc040e3232e63f994c1e3c1d1579c976\">tram::Render::API::shaderflags_t</a></div><div class=\"ttdeci\">uint32_t shaderflags_t</div><div class=\"ttdef\"><b>Definition:</b> shader.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a4e5691f40b84e848c0d9b19b285bf0e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">tram::Render::vertexformat_t</a></div><div class=\"ttdeci\">uint32_t vertexformat_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html_a9be8283c1665f7d42c97367d857d43cc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">tram::Render::materialtype_t</a></div><div class=\"ttdeci\">uint32_t materialtype_t</div><div class=\"ttdef\"><b>Definition:</b> render.h:20</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/signal_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/signal.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">signal.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"signal_8h_source.html\">framework/signal.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"value_8h_source.html\">framework/value.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/signal_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/signal.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">signal.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n</div>\n<p><a href=\"signal_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template.  <a href=\"structtram_1_1_signal.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">List of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates.  <a href=\"classtram_1_1_signal_table.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a2efd897a3a954a002664292b5d6264d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram::signal_t</a></td></tr>\n<tr class=\"separator:a2efd897a3a954a002664292b5d6264d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/signal_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/signal.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">signal.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"signal_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SIGNAL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SIGNAL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"message_8h.html\">framework/message.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"event_8h.html\">framework/event.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">   12</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">struct </span><a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html\">   16</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_signal.html\">Signal</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">   17</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">Type</a> : <a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">   18</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">   19</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">SPAWN</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">   20</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">KILL</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">   21</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">ACTIVATE</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">   22</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">USE</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">   23</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">LOCKED_USE</a>,</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">   24</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">OPEN</a>,</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">   25</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">CLOSE</a>,</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">   26</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">END_OPEN</a>,</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">   27</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">END_CLOSE</a>,</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">   28</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">TRIGGER</a>,</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">   29</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">ENTER_TRIGGER</a>,</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">   30</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">EXIT_TRIGGER</a>,</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">   31</a></span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">PROGRESS</a>,</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">LAST_SIGNAL</a></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">   33</a></span>    };</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">   35</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">type</a> = <a class=\"code hl_enumvalue\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">   37</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">receiver</a>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">   38</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">data</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">   40</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">delay</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">   41</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">limit</a>;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">   43</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">message_type</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">Register</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">GetType</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">GetName</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> <a class=\"code hl_variable\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">type</a>);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>};</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_signal_table.html\">   50</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_signal_table.html\">SignalTable</a> {</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> signal, <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> sender);</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">Fire</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> signal, <a class=\"code hl_typedef\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> sender, <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> value);</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">Add</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_signal.html\">Signal</a>&amp; signal);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">   56</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_signal.html\">Signal</a> <a class=\"code hl_variable\" href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">signals</a>[10];</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">   57</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">signal_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>};</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>}</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SIGNAL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html\">tram::SignalTable</a></div><div class=\"ttdoc\">List of Message templates.</div><div class=\"ttdef\"><b>Definition:</b> signal.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html_a42153d34f72f7fd4e3b43eec183d61a4\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html#a42153d34f72f7fd4e3b43eec183d61a4\">tram::SignalTable::Add</a></div><div class=\"ttdeci\">void Add(const Signal &amp;signal)</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:163</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html_a6268d498a6ba6846e797499a3100fe41\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html#a6268d498a6ba6846e797499a3100fe41\">tram::SignalTable::Fire</a></div><div class=\"ttdeci\">void Fire(signal_t signal, id_t sender)</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:105</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html_a938437fad98477de3bdc6ff5238fcff1\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html#a938437fad98477de3bdc6ff5238fcff1\">tram::SignalTable::signal_count</a></div><div class=\"ttdeci\">size_t signal_count</div><div class=\"ttdef\"><b>Definition:</b> signal.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_signal_table_html_ad8d71747477523bc6cd3ebaf8af62397\"><div class=\"ttname\"><a href=\"classtram_1_1_signal_table.html#ad8d71747477523bc6cd3ebaf8af62397\">tram::SignalTable::signals</a></div><div class=\"ttdeci\">Signal signals[10]</div><div class=\"ttdef\"><b>Definition:</b> signal.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"aevent_8h_html\"><div class=\"ttname\"><a href=\"event_8h.html\">event.h</a></div></div>\n<div class=\"ttc\" id=\"amessage_8h_html\"><div class=\"ttname\"><a href=\"message_8h.html\">message.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a25ae39989bce3dab64401c3956be9c03\"><div class=\"ttname\"><a href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">tram::id_t</a></div><div class=\"ttdeci\">uint32_t id_t</div><div class=\"ttdef\"><b>Definition:</b> core.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2d629e975ff280fbd5d11c40edb519f0\"><div class=\"ttname\"><a href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">tram::message_t</a></div><div class=\"ttdeci\">uint32_t message_t</div><div class=\"ttdef\"><b>Definition:</b> message.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2efd897a3a954a002664292b5d6264d6\"><div class=\"ttname\"><a href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">tram::signal_t</a></div><div class=\"ttdeci\">uint32_t signal_t</div><div class=\"ttdef\"><b>Definition:</b> signal.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html\">tram::Signal</a></div><div class=\"ttdoc\">Message template.</div><div class=\"ttdef\"><b>Definition:</b> signal.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a0a38e6da9341346a46338ba52c2be472\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">tram::Signal::type</a></div><div class=\"ttdeci\">signal_t type</div><div class=\"ttdef\"><b>Definition:</b> signal.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a0f13121126c5ae11e4ae73a4cbfdbcdd\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">tram::Signal::GetName</a></div><div class=\"ttdeci\">static name_t GetName(signal_t type)</div><div class=\"ttdoc\">Gets a nessage type name.</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:96</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a326e6aa18ff7b00902541db375c050af\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">tram::Signal::GetType</a></div><div class=\"ttdeci\">static signal_t GetType(name_t name)</div><div class=\"ttdoc\">Finds a message type from a name.</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:80</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a4cec75e6f5a3987de0924f8c204565f8\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">tram::Signal::Register</a></div><div class=\"ttdeci\">static signal_t Register(const char *name)</div><div class=\"ttdoc\">Registers a new message type.</div><div class=\"ttdef\"><b>Definition:</b> signal.cpp:56</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a51beeb43406c2be5e68d4f43265e7eb6\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">tram::Signal::receiver</a></div><div class=\"ttdeci\">name_t receiver</div><div class=\"ttdef\"><b>Definition:</b> signal.h:37</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_a7781884f42b0b91a9adf65f682ee88b9\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">tram::Signal::message_type</a></div><div class=\"ttdeci\">message_t message_type</div><div class=\"ttdef\"><b>Definition:</b> signal.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">tram::Signal::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition:</b> signal.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">tram::Signal::CLOSE</a></div><div class=\"ttdeci\">@ CLOSE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">tram::Signal::NONE</a></div><div class=\"ttdeci\">@ NONE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:18</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">tram::Signal::END_CLOSE</a></div><div class=\"ttdeci\">@ END_CLOSE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">tram::Signal::EXIT_TRIGGER</a></div><div class=\"ttdeci\">@ EXIT_TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> signal.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">tram::Signal::KILL</a></div><div class=\"ttdeci\">@ KILL</div><div class=\"ttdef\"><b>Definition:</b> signal.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">tram::Signal::END_OPEN</a></div><div class=\"ttdeci\">@ END_OPEN</div><div class=\"ttdef\"><b>Definition:</b> signal.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">tram::Signal::ACTIVATE</a></div><div class=\"ttdeci\">@ ACTIVATE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">tram::Signal::PROGRESS</a></div><div class=\"ttdeci\">@ PROGRESS</div><div class=\"ttdef\"><b>Definition:</b> signal.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">tram::Signal::USE</a></div><div class=\"ttdeci\">@ USE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">tram::Signal::LAST_SIGNAL</a></div><div class=\"ttdeci\">@ LAST_SIGNAL</div><div class=\"ttdef\"><b>Definition:</b> signal.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">tram::Signal::ENTER_TRIGGER</a></div><div class=\"ttdeci\">@ ENTER_TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> signal.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">tram::Signal::SPAWN</a></div><div class=\"ttdeci\">@ SPAWN</div><div class=\"ttdef\"><b>Definition:</b> signal.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">tram::Signal::OPEN</a></div><div class=\"ttdeci\">@ OPEN</div><div class=\"ttdef\"><b>Definition:</b> signal.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">tram::Signal::LOCKED_USE</a></div><div class=\"ttdeci\">@ LOCKED_USE</div><div class=\"ttdef\"><b>Definition:</b> signal.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">tram::Signal::TRIGGER</a></div><div class=\"ttdeci\">@ TRIGGER</div><div class=\"ttdef\"><b>Definition:</b> signal.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ac598b7c14aded31cbd9b2eedb4e5dfe0\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">tram::Signal::delay</a></div><div class=\"ttdeci\">float delay</div><div class=\"ttdef\"><b>Definition:</b> signal.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_ae11edb11f1051d538fd09157108bed26\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">tram::Signal::data</a></div><div class=\"ttdeci\">void * data</div><div class=\"ttdef\"><b>Definition:</b> signal.h:38</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_signal_html_aeea99e2596e8761fc321edb7876fd138\"><div class=\"ttname\"><a href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">tram::Signal::limit</a></div><div class=\"ttdeci\">int limit</div><div class=\"ttdef\"><b>Definition:</b> signal.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/software_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/software.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\">software</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">software.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">render/software/software.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">templates/octree.h</a>&gt;</code><br />\n<code>#include &lt;cstdlib&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">tram::Render::API::ScanlineBuffer</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">tram::Render::API::Point2D</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">tram::Render::API::ColorVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">tram::Render::API::ClipPoint</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">tram::Render::API::ClipTriangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aa88196543e9de714a86037204e01f75c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa88196543e9de714a86037204e01f75c\">tram::Render::API::SetLightingParameters</a> (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer)</td></tr>\n<tr class=\"separator:aa88196543e9de714a86037204e01f75c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a453419fa3a31de6918ce7c54454b1314\">tram::Render::API::SetScreenSize</a> (float width, float height)</td></tr>\n<tr class=\"separator:a453419fa3a31de6918ce7c54454b1314\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4546d61832af8f8af9038e5d060afe70\">tram::Render::API::SetScreenClear</a> (vec3 clear_color, bool clear)</td></tr>\n<tr class=\"separator:a4546d61832af8f8af9038e5d060afe70\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa272bbd99e773f619519f24981b411b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaa272bbd99e773f619519f24981b411b\">tram::Render::API::IntColor</a> (vec3 color)</td></tr>\n<tr class=\"separator:aaa272bbd99e773f619519f24981b411b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53824581d902c1e57599bd544a99a0fb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec3&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a53824581d902c1e57599bd544a99a0fb\">tram::Render::API::RGBColor</a> (uint16_t color)</td></tr>\n<tr class=\"separator:a53824581d902c1e57599bd544a99a0fb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8c4f13e2fd00320c101a35f7b075d08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad8c4f13e2fd00320c101a35f7b075d08\">tram::Render::API::BlitDot</a> (uint32_t x, uint32_t y, uint16_t color)</td></tr>\n<tr class=\"separator:ad8c4f13e2fd00320c101a35f7b075d08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abad5cda7dcbf4bc90ed26a65e9cc5fde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abad5cda7dcbf4bc90ed26a65e9cc5fde\">tram::Render::API::BlitLineOctant0</a> (uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color)</td></tr>\n<tr class=\"separator:abad5cda7dcbf4bc90ed26a65e9cc5fde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae135a0bcb76598854ab17a5edafbb69c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae135a0bcb76598854ab17a5edafbb69c\">tram::Render::API::BlitLineOctant1</a> (uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color)</td></tr>\n<tr class=\"separator:ae135a0bcb76598854ab17a5edafbb69c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa57aa8935b2da2b2c1818efd4a790a8d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aa57aa8935b2da2b2c1818efd4a790a8d\">tram::Render::API::BlitLine</a> (int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint16_t color)</td></tr>\n<tr class=\"separator:aa57aa8935b2da2b2c1818efd4a790a8d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;bool set_span_first&gt; </td></tr>\n<tr class=\"memitem:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a84dcc808d228294d594b6bb0a97e3869\">tram::Render::API::MakeSpans</a> (int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t p0, int32_t p1, int32_t skip_first, Scanline **scanline_array)</td></tr>\n<tr class=\"separator:a84dcc808d228294d594b6bb0a97e3869\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50224ff62bbe42c2feaaf53994343449\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a50224ff62bbe42c2feaaf53994343449\">tram::Render::API::ScanlineConvertTriangle</a> (ScanlineBuffer *scanlines, Point2D *vertices)</td></tr>\n<tr class=\"separator:a50224ff62bbe42c2feaaf53994343449\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a437bf04f6a5b4400240d03c0349935bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437bf04f6a5b4400240d03c0349935bf\">tram::Render::API::RasterizeTriangle</a> (ScanlineBuffer *scanlines, Point2D *vertices)</td></tr>\n<tr class=\"separator:a437bf04f6a5b4400240d03c0349935bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fbc57a2c1adf8740ab7744fd8dbacfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5fbc57a2c1adf8740ab7744fd8dbacfd\">tram::Render::API::RasterizeTriangleLightmapped</a> (ScanlineBuffer *scanlines, Point2D *vertices, uint16_t color, vec2 *texture_uvs, vec2 *lightmap_uvs, SWTexture *texture, SWTexture *lightmap)</td></tr>\n<tr class=\"separator:a5fbc57a2c1adf8740ab7744fd8dbacfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43eeada3415ce497712a8e7c5d341a7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a43eeada3415ce497712a8e7c5d341a7a\">tram::Render::API::RasterizeTriangleShadedTextured</a> (ScanlineBuffer *scanlines, Point2D *vertices, vec3 *colors, vec3 *speculars, vec2 *texture_uvs, SWTexture *texture)</td></tr>\n<tr class=\"separator:a43eeada3415ce497712a8e7c5d341a7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1c5b9548adfc17b5f3a7343e9194b00\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab1c5b9548adfc17b5f3a7343e9194b00\">tram::Render::API::ClipLineInClipSpace</a> (vec4 &amp;point0, vec4 &amp;point1)</td></tr>\n<tr class=\"separator:ab1c5b9548adfc17b5f3a7343e9194b00\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46caee60f68174eb2c6591274b2a2718\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a46caee60f68174eb2c6591274b2a2718\">tram::Render::API::ClipSinglePointLine</a> (vec4 *outside, vec4 *inside)</td></tr>\n<tr class=\"separator:a46caee60f68174eb2c6591274b2a2718\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5aff334ca94068954abaa63a7f2e8a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab5aff334ca94068954abaa63a7f2e8a0\">tram::Render::API::ClipSinglePointLineLeftPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:ab5aff334ca94068954abaa63a7f2e8a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08517cac3da578ca3841551b8d2e98d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a08517cac3da578ca3841551b8d2e98d5\">tram::Render::API::ClipSinglePointLineRightPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:a08517cac3da578ca3841551b8d2e98d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f56b51da726200209f842f1679692c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f56b51da726200209f842f1679692c8\">tram::Render::API::ClipSinglePointLineBottomPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:a7f56b51da726200209f842f1679692c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f4da9afb94ac65936c1fd9b71100f1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7f4da9afb94ac65936c1fd9b71100f1d\">tram::Render::API::ClipSinglePointLineTopPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:a7f4da9afb94ac65936c1fd9b71100f1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e3989389fafae9238714ed27974352e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1e3989389fafae9238714ed27974352e\">tram::Render::API::ClipSinglePointLineNearPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:a1e3989389fafae9238714ed27974352e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3acf6872da87792eac2ed0d1ed5907e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3acf6872da87792eac2ed0d1ed5907e8\">tram::Render::API::ClipSinglePointLineFarPlane</a> (vec4 outside, vec4 inside)</td></tr>\n<tr class=\"separator:a3acf6872da87792eac2ed0d1ed5907e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abd64f4c4eafba9f6c03d7019f10a31b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abd64f4c4eafba9f6c03d7019f10a31b8\">tram::Render::API::ClipSingleClipPointLineLeftPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:abd64f4c4eafba9f6c03d7019f10a31b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d1b7577bb0f160333ab20bd9edabadb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1d1b7577bb0f160333ab20bd9edabadb\">tram::Render::API::ClipSingleClipPointLineRightPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:a1d1b7577bb0f160333ab20bd9edabadb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2e0dddbb04d632038f35b35c93119ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae2e0dddbb04d632038f35b35c93119ca\">tram::Render::API::ClipSingleClipPointLineBottomPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:ae2e0dddbb04d632038f35b35c93119ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a80773bbd781af72dee05332f2e581d0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a80773bbd781af72dee05332f2e581d0e\">tram::Render::API::ClipSingleClipPointLineTopPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:a80773bbd781af72dee05332f2e581d0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef9b243efb8e2ad402b88e472fad8263\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aef9b243efb8e2ad402b88e472fad8263\">tram::Render::API::ClipSingleClipPointLineNearPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:aef9b243efb8e2ad402b88e472fad8263\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf4c3092dfcec8d8ed7d4fb68be7fb7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ClipPoint&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf4c3092dfcec8d8ed7d4fb68be7fb7a\">tram::Render::API::ClipSingleClipPointLineFarPlane</a> (ClipPoint outside, ClipPoint inside)</td></tr>\n<tr class=\"separator:acf4c3092dfcec8d8ed7d4fb68be7fb7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a835ced33fd7a5c9239310fdcffd701f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a835ced33fd7a5c9239310fdcffd701f8\">tram::Render::API::PerspectiveDivision</a> (vec4 &amp;p)</td></tr>\n<tr class=\"separator:a835ced33fd7a5c9239310fdcffd701f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a437320a39ddec40f81acdc942eeb9940\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a437320a39ddec40f81acdc942eeb9940\">tram::Render::API::PerspectiveDivision</a> (vec4 &amp;p0, vec4 &amp;p1)</td></tr>\n<tr class=\"separator:a437320a39ddec40f81acdc942eeb9940\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac21da51349e4de14ceba43b117898853\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::pair&lt; int32_t, int32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac21da51349e4de14ceba43b117898853\">tram::Render::API::ClipSpaceToScreenSpace</a> (const vec4 p)</td></tr>\n<tr class=\"separator:ac21da51349e4de14ceba43b117898853\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a305347e27d6c34316bee82ec791699aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a305347e27d6c34316bee82ec791699aa\">tram::Render::API::PointVisible</a> (vec4 p)</td></tr>\n<tr class=\"separator:a305347e27d6c34316bee82ec791699aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaae15e056fdabbbbdcb09cfe005b4242\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aaae15e056fdabbbbdcb09cfe005b4242\">tram::Render::API::PointOutsideLeftPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:aaae15e056fdabbbbdcb09cfe005b4242\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3911859adbfe0d04739e68361004226b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3911859adbfe0d04739e68361004226b\">tram::Render::API::PointOutsideRightPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:a3911859adbfe0d04739e68361004226b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a376abbcab88b34e51794e7e0ece4ec58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a376abbcab88b34e51794e7e0ece4ec58\">tram::Render::API::PointOutsideBottomPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:a376abbcab88b34e51794e7e0ece4ec58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70fdb5f6dca386dfe2f3fef83cb1a6db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a70fdb5f6dca386dfe2f3fef83cb1a6db\">tram::Render::API::PointOutsideTopPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:a70fdb5f6dca386dfe2f3fef83cb1a6db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abb0e4d781ba0d59d10503ec6aa352e46\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#abb0e4d781ba0d59d10503ec6aa352e46\">tram::Render::API::PointOutsideNearPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:abb0e4d781ba0d59d10503ec6aa352e46\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b8d2a62665b8a1f7fe6546ff6f09065\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5b8d2a62665b8a1f7fe6546ff6f09065\">tram::Render::API::PointOutsideFarPlane</a> (vec4 p)</td></tr>\n<tr class=\"separator:a5b8d2a62665b8a1f7fe6546ff6f09065\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66e59e9064356a39cc2fdcc936ba7e0b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a66e59e9064356a39cc2fdcc936ba7e0b\">tram::Render::API::LineVisible</a> (vec4 p0, vec4 p1)</td></tr>\n<tr class=\"separator:a66e59e9064356a39cc2fdcc936ba7e0b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a908e98b46914c044b8631b88babccb0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a908e98b46914c044b8631b88babccb0f\">tram::Render::API::TriangleVisible</a> (vec4 p0, vec4 p1, vec4 p2)</td></tr>\n<tr class=\"separator:a908e98b46914c044b8631b88babccb0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1abd96bf65b5421ee6da77b7f125f3e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1abd96bf65b5421ee6da77b7f125f3e0\">tram::Render::API::ClipRenderLine</a> (vec4 p0, vec4 p1, uint16_t color)</td></tr>\n<tr class=\"separator:a1abd96bf65b5421ee6da77b7f125f3e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af8330d284873597a2d985086d85e94ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af8330d284873597a2d985086d85e94ef\">tram::Render::API::ClipTriangleList</a> (ClipTriangle *triangles)</td></tr>\n<tr class=\"separator:af8330d284873597a2d985086d85e94ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d75088dd180366fb45cb86654694db9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a0d75088dd180366fb45cb86654694db9\">tram::Render::API::RenderFrame</a> ()</td></tr>\n<tr class=\"separator:a0d75088dd180366fb45cb86654694db9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">drawlistentry_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1a5a35d0071849e1f4a44362df772ce1\">tram::Render::API::InsertDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a1a5a35d0071849e1f4a44362df772ce1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4a13fea5192ecde4d6483fd7ac4109d2\">tram::Render::API::RemoveDrawListEntry</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a4a13fea5192ecde4d6483fd7ac4109d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a01464db10e614acc7db508e0ecdc642c\">tram::Render::API::GetFlags</a> (drawlistentry_t entry)</td></tr>\n<tr class=\"separator:a01464db10e614acc7db508e0ecdc642c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a10a6b549dc7e27d1f27c14bd2e3fc896\">tram::Render::API::SetFlags</a> (drawlistentry_t entry, uint32_t flags)</td></tr>\n<tr class=\"separator:a10a6b549dc7e27d1f27c14bd2e3fc896\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#afac0e9fbfee600d48f07f13a04ad5e50\">tram::Render::API::SetLayer</a> (drawlistentry_t entry, layer_t layer)</td></tr>\n<tr class=\"separator:afac0e9fbfee600d48f07f13a04ad5e50\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a5a2dbe49094868d5a7efea439f9148f0\">tram::Render::API::SetPose</a> (drawlistentry_t entry, Pose *pose)</td></tr>\n<tr class=\"separator:a5a2dbe49094868d5a7efea439f9148f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3e3f408a1abea6b59284b89e49624950\">tram::Render::API::SetLightmap</a> (drawlistentry_t entry, texturehandle_t lightmap)</td></tr>\n<tr class=\"separator:a3e3f408a1abea6b59284b89e49624950\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ab591dae55495d78c86d150973ea3bef1\">tram::Render::API::SetDrawListColors</a> (drawlistentry_t entry, size_t count, vec4 *color)</td></tr>\n<tr class=\"separator:ab591dae55495d78c86d150973ea3bef1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a96595ff7b2190bcc3b764d3ff9f6f5b8\">tram::Render::API::SetDrawListSpecularities</a> (drawlistentry_t entry, size_t count, float *weights, float *exponents, float *transparencies)</td></tr>\n<tr class=\"separator:a96595ff7b2190bcc3b764d3ff9f6f5b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac9af752a04919c1be9443f491ba9364a\">tram::Render::API::SetLights</a> (drawlistentry_t entry, light_t *lights)</td></tr>\n<tr class=\"separator:ac9af752a04919c1be9443f491ba9364a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ad62b8a1dc88abdbcf24dbcbc97571b22\">tram::Render::API::SetMatrix</a> (drawlistentry_t entry, const mat4 &amp;matrix)</td></tr>\n<tr class=\"separator:ad62b8a1dc88abdbcf24dbcbc97571b22\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a4642bc504c6d77fde8a824bb95c5ec16\">tram::Render::API::SetDrawListVertexArray</a> (drawlistentry_t entry, vertexarray_t vertex_array_handle)</td></tr>\n<tr class=\"separator:a4642bc504c6d77fde8a824bb95c5ec16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a411524f6804a132bdfdf7e95d318fe6a\">tram::Render::API::SetDrawListIndexArray</a> (drawlistentry_t entry, indexarray_t index_array_handle)</td></tr>\n<tr class=\"separator:a411524f6804a132bdfdf7e95d318fe6a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac78a374d698ab9d252afd86163c19440\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ac78a374d698ab9d252afd86163c19440\">tram::Render::API::SetDrawListIndexRange</a> (drawlistentry_t entry, uint32_t index_offset, uint32_t index_length)</td></tr>\n<tr class=\"separator:ac78a374d698ab9d252afd86163c19440\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3724426196e2fad6e190726003249aed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3724426196e2fad6e190726003249aed\">tram::Render::API::SetDrawListShader</a> (drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type)</td></tr>\n<tr class=\"separator:a3724426196e2fad6e190726003249aed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#aac05dea68d3b978e4303cf1c2164f44c\">tram::Render::API::SetDrawListTextures</a> (drawlistentry_t entry, size_t texture_count, texturehandle_t *textures)</td></tr>\n<tr class=\"separator:aac05dea68d3b978e4303cf1c2164f44c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">light_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a86dea3f6c3851af17406ccee3bdc8b85\">tram::Render::API::MakeLight</a> ()</td></tr>\n<tr class=\"separator:a86dea3f6c3851af17406ccee3bdc8b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#acf65aad3d61388081cff7f81c92368a4\">tram::Render::API::DeleteLight</a> (light_t light)</td></tr>\n<tr class=\"separator:acf65aad3d61388081cff7f81c92368a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a832d87127faad4c76d3b09fb0efcbb39\">tram::Render::API::SetLightParameters</a> (light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent)</td></tr>\n<tr class=\"separator:a832d87127faad4c76d3b09fb0efcbb39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">texturehandle_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API::CreateTexture</a> (ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e05816b2379825525b322e68af15424\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a7e05816b2379825525b322e68af15424\">tram::Render::API::ParseFormat</a> (vertexarray_t &amp;vertex_array, VertexDefinition vertex_format)</td></tr>\n<tr class=\"separator:a7e05816b2379825525b322e68af15424\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3c1162ce946a884d6018685ec1157c51\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3c1162ce946a884d6018685ec1157c51\">tram::Render::API::PackVertices</a> (vertexarray_t &amp;vertex_array, void *data, size_t count)</td></tr>\n<tr class=\"separator:a3c1162ce946a884d6018685ec1157c51\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22f8a73faf3d561003265a51e3ca2b3\">tram::Render::API::CreateIndexedVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array, indexarray_t &amp;index_array, size_t vertex_size, void *vertex_data, size_t index_size, void *index_data)</td></tr>\n<tr class=\"separator:ae22f8a73faf3d561003265a51e3ca2b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f3030e7ef229bee087b336d8882232\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a76f3030e7ef229bee087b336d8882232\">tram::Render::API::CreateVertexArray</a> (VertexDefinition vertex_format, vertexarray_t &amp;vertex_array)</td></tr>\n<tr class=\"separator:a76f3030e7ef229bee087b336d8882232\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23acf51fa4097aecd557d23f73131463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23acf51fa4097aecd557d23f73131463\">tram::Render::API::UpdateVertexArray</a> (vertexarray_t &amp;vertex_buffer, size_t data_size, void *data)</td></tr>\n<tr class=\"separator:a23acf51fa4097aecd557d23f73131463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a23c877f60360662f3a1de1fd11957936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a23c877f60360662f3a1de1fd11957936\">tram::Render::API::SetViewMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a23c877f60360662f3a1de1fd11957936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a8712a5ab1b0f028eb8559586b458262d\">tram::Render::API::SetProjectionMatrix</a> (const mat4 &amp;matrix, layer_t layer)</td></tr>\n<tr class=\"separator:a8712a5ab1b0f028eb8559586b458262d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a746afea6f8369d0a1570bb46b7a6e9b3\">tram::Render::API::GetScreen</a> (char *buffer, int w, int h)</td></tr>\n<tr class=\"separator:a746afea6f8369d0a1570bb46b7a6e9b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a3333e144d9fcb3f23192760dabce0d0d\">tram::Render::API::Init</a> ()</td></tr>\n<tr class=\"separator:a3333e144d9fcb3f23192760dabce0d0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ContextType&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a1132a0b2a9d3f0e2cf62dc5db40a6504\">tram::Render::API::GetContext</a> ()</td></tr>\n<tr class=\"separator:a1132a0b2a9d3f0e2cf62dc5db40a6504\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18bc917a04c062cb18a310880301f545\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a18bc917a04c062cb18a310880301f545\">tram::Render::API::GetMaxIndexRangeLength</a> ()</td></tr>\n<tr class=\"separator:a18bc917a04c062cb18a310880301f545\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae66b8323eef7ab765ad466ec90da6ed6\">tram::Render::API::SetDevice</a> (void *)</td></tr>\n<tr class=\"separator:ae66b8323eef7ab765ad466ec90da6ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:ae22731df276abfeb90be9ca92e40d03e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; SWTexture &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#ae22731df276abfeb90be9ca92e40d03e\">tram::Render::API::texture_list</a> (&quot;texture list&quot;, 200, false)</td></tr>\n<tr class=\"separator:ae22731df276abfeb90be9ca92e40d03e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af33e7d508d254e6d15926d063789d2a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; SWVertexArray &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#af33e7d508d254e6d15926d063789d2a2\">tram::Render::API::vertex_arrays</a> (&quot;vertex_arrays list&quot;, 200, false)</td></tr>\n<tr class=\"separator:af33e7d508d254e6d15926d063789d2a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95fa95ded8f82269167051e3c98f42b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; SWIndexArray &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a95fa95ded8f82269167051e3c98f42b8\">tram::Render::API::index_arrays</a> (&quot;index_arrays list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a95fa95ded8f82269167051e3c98f42b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98aac604b36b4bd1c29a5580cd309cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ScanlineBuffer *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a98aac604b36b4bd1c29a5580cd309cb7\">tram::Render::API::scanlines</a> = new ScanlineBuffer</td></tr>\n<tr class=\"separator:a98aac604b36b4bd1c29a5580cd309cb7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; D3DDrawListEntry &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a9ee5db9b2d1a8b354779f2a611792671\">tram::Render::API::draw_list</a> (&quot;render list&quot;, 500, false)</td></tr>\n<tr class=\"separator:a9ee5db9b2d1a8b354779f2a611792671\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Pool&lt; D3DLight &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a22c9b2ef54e756a89652662cc7ad099e\">tram::Render::API::light_list</a> (&quot;light list&quot;, 200, false)</td></tr>\n<tr class=\"separator:a22c9b2ef54e756a89652662cc7ad099e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/software_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/software.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\">software</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">software.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"software_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a435f5c7784d296fc909a87b6c6190a8c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">tram::Render::API::SWTextureMode</a> { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">tram::Render::API::SW_NEAREST</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">tram::Render::API::SW_BLENDED</a>\n }</td></tr>\n<tr class=\"separator:a435f5c7784d296fc909a87b6c6190a8c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52ad3127cec9daa2f9c83ca8875dd2d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">tram::Render::API::SWVertexType</a> { <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">tram::Render::API::SW_STATIC_LIGHTMAPPED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">tram::Render::API::SW_DYNAMIC_BLENDED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">tram::Render::API::SW_STATIC_COLORED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">tram::Render::API::SW_SPRITE</a>\n }</td></tr>\n<tr class=\"separator:a52ad3127cec9daa2f9c83ca8875dd2d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/software_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/software.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2dc1ac304fc37da9cbf93f53bf382100.html\">software</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">software.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"software_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">   11</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">   12</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">location</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">   13</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">color</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">   14</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">distance</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">   15</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">direction</a> = {0.0f, 0.0f, -1.0f};</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">   16</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">exponent</a> = 0.0f;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">   19</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">SWTextureMode</a> {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">SW_NEAREST</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">SW_BLENDED</a></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">   22</a></span>};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">   24</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">   25</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">width</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">   26</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">height</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">   27</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">channels</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">   28</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">SWTextureMode</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">mode</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">SW_NEAREST</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">   29</a></span>    uint8_t* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">pixels</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>};</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">   32</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">SWVertexType</a> {</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">   33</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">SW_STATIC_LIGHTMAPPED</a>,</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">   34</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">SW_DYNAMIC_BLENDED</a>,</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">   35</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">SW_STATIC_COLORED</a>,</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">SW_SPRITE</a></div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">   37</a></span>};</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">   39</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a> {</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">   40</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">position</a> = -1;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">   41</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">normal</a> = -1;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">   42</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">color</a> = -1;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">   43</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">texture</a> = -1;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">   44</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">lightmap</a> = -1;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">   45</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">bone_index</a> = -1;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">   46</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">bone_weight</a> = -1;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>};</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">   49</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a> {</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">   50</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">SWVertexType</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">SW_STATIC_LIGHTMAPPED</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">   51</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">vertices</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">   52</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">vertex_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">   53</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">format</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">   54</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">helper</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>};</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">   57</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a> {</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">   58</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">index_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">   59</a></span>    uint32_t* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">indices</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"preprocessor\">#ifndef __x86_64__</span></div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">   61</a></span>    <span class=\"keywordtype\">void</span>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">padding</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"preprocessor\">#endif</span></div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>};</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">   65</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a> {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">   66</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">flags</a> = 0;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">   68</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">pose</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">   70</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">matrix</a> = <a class=\"code hl_typedef\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f);</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">   72</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">lights</a>[4] = {<span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>};</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">   74</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">layer</a> = 0;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">   75</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">lightmap</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">   76</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">vertex_array</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">   77</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">index_array</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">   78</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">index_length</a> = 0;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">   79</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">index_offset</a> = 0;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">   80</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">texture</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">   81</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f};</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">   82</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">specular_weight</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">   83</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">specular_exponent</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">   84</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">specular_transparency</a> = 1.0f;</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>}</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a435f5c7784d296fc909a87b6c6190a8c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">tram::Render::API::SWTextureMode</a></div><div class=\"ttdeci\">SWTextureMode</div><div class=\"ttdef\"><b>Definition:</b> software.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">tram::Render::API::SW_NEAREST</a></div><div class=\"ttdeci\">@ SW_NEAREST</div><div class=\"ttdef\"><b>Definition:</b> software.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca716baa2db5e2b2ff5b4fb7b841f3c0f4\">tram::Render::API::SW_BLENDED</a></div><div class=\"ttdeci\">@ SW_BLENDED</div><div class=\"ttdef\"><b>Definition:</b> software.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52ad3127cec9daa2f9c83ca8875dd2d2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">tram::Render::API::SWVertexType</a></div><div class=\"ttdeci\">SWVertexType</div><div class=\"ttdef\"><b>Definition:</b> software.h:32</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a00b5e4053744cb39cb6155be720d7419\">tram::Render::API::SW_DYNAMIC_BLENDED</a></div><div class=\"ttdeci\">@ SW_DYNAMIC_BLENDED</div><div class=\"ttdef\"><b>Definition:</b> software.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">tram::Render::API::SW_STATIC_LIGHTMAPPED</a></div><div class=\"ttdeci\">@ SW_STATIC_LIGHTMAPPED</div><div class=\"ttdef\"><b>Definition:</b> software.h:33</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a7f4a9f5e1fe4e061d733b4da886ba1f8\">tram::Render::API::SW_SPRITE</a></div><div class=\"ttdeci\">@ SW_SPRITE</div><div class=\"ttdef\"><b>Definition:</b> software.h:36</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html_a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a94f59d3013c40170946204191132570a\">tram::Render::API::SW_STATIC_COLORED</a></div><div class=\"ttdeci\">@ SW_STATIC_COLORED</div><div class=\"ttdef\"><b>Definition:</b> software.h:35</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_aa105cf31ac2e470934e6b0827a14d942\"><div class=\"ttname\"><a href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">tram::mat4</a></div><div class=\"ttdeci\">glm::mat4 mat4</div><div class=\"ttdef\"><b>Definition:</b> math.h:14</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_aae50347cfce0859d5827af69495e6664\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">tram::Render::API::FFPHelper::normal</a></div><div class=\"ttdeci\">int normal</div><div class=\"ttdef\"><b>Definition:</b> software.h:41</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_abea9e4cefc78f34737c5ec3a4c78e635\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">tram::Render::API::FFPHelper::lightmap</a></div><div class=\"ttdeci\">int lightmap</div><div class=\"ttdef\"><b>Definition:</b> software.h:44</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_ac01392b410606fc8a96f548c3054414f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">tram::Render::API::FFPHelper::position</a></div><div class=\"ttdeci\">int position</div><div class=\"ttdef\"><b>Definition:</b> software.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_ac24edf27fe09335c5ae659ad0dbbe32e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">tram::Render::API::FFPHelper::bone_index</a></div><div class=\"ttdeci\">int bone_index</div><div class=\"ttdef\"><b>Definition:</b> software.h:45</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_accf51615aa39c47f2218b2a2b54da19e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">tram::Render::API::FFPHelper::color</a></div><div class=\"ttdeci\">int color</div><div class=\"ttdef\"><b>Definition:</b> software.h:42</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_aeb3b8d76aa80b1f680820bdfc47cb2e9\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">tram::Render::API::FFPHelper::bone_weight</a></div><div class=\"ttdeci\">int bone_weight</div><div class=\"ttdef\"><b>Definition:</b> software.h:46</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper_html_af5774461282b48faa2dd20a0be390d20\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">tram::Render::API::FFPHelper::texture</a></div><div class=\"ttdeci\">int texture</div><div class=\"ttdef\"><b>Definition:</b> software.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:65</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a05b99dbe35234a661eaf6e7b0ac12698\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">tram::Render::API::SWDrawListEntry::specular_weight</a></div><div class=\"ttdeci\">float specular_weight</div><div class=\"ttdef\"><b>Definition:</b> software.h:82</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a2becbbd55e937640b93428514e1feaf9\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">tram::Render::API::SWDrawListEntry::index_length</a></div><div class=\"ttdeci\">uint32_t index_length</div><div class=\"ttdef\"><b>Definition:</b> software.h:78</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a5014bfeba11937acbddee274ab2a240a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">tram::Render::API::SWDrawListEntry::index_array</a></div><div class=\"ttdeci\">SWIndexArray * index_array</div><div class=\"ttdef\"><b>Definition:</b> software.h:77</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a5e765e4ee8dd68acf7ece8f12d0663c7\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">tram::Render::API::SWDrawListEntry::lights</a></div><div class=\"ttdeci\">SWLight * lights[4]</div><div class=\"ttdef\"><b>Definition:</b> software.h:72</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a5ef81d3e413cd46fc8d06fcb14e1438d\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">tram::Render::API::SWDrawListEntry::specular_transparency</a></div><div class=\"ttdeci\">float specular_transparency</div><div class=\"ttdef\"><b>Definition:</b> software.h:84</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a615823889f7fb122e6eeffc9c4404ed2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">tram::Render::API::SWDrawListEntry::vertex_array</a></div><div class=\"ttdeci\">SWVertexArray * vertex_array</div><div class=\"ttdef\"><b>Definition:</b> software.h:76</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a63460358088c63ffeb9c361e7ac8398f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">tram::Render::API::SWDrawListEntry::color</a></div><div class=\"ttdeci\">vec4 color</div><div class=\"ttdef\"><b>Definition:</b> software.h:81</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a81ae414cf1df35f7eae3e7301df25377\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">tram::Render::API::SWDrawListEntry::pose</a></div><div class=\"ttdeci\">Pose * pose</div><div class=\"ttdef\"><b>Definition:</b> software.h:68</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a8312bc4a540cc25641d8b0cdf848b9dd\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">tram::Render::API::SWDrawListEntry::layer</a></div><div class=\"ttdeci\">uint32_t layer</div><div class=\"ttdef\"><b>Definition:</b> software.h:74</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a908345371794e728c6e67ca027a81b31\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">tram::Render::API::SWDrawListEntry::texture</a></div><div class=\"ttdeci\">SWTexture * texture</div><div class=\"ttdef\"><b>Definition:</b> software.h:80</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_a963fb9fdc188ee14b78c1514dc4a2360\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">tram::Render::API::SWDrawListEntry::matrix</a></div><div class=\"ttdeci\">mat4 matrix</div><div class=\"ttdef\"><b>Definition:</b> software.h:70</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_abdad019161ef217d6bdbb2c34f22e3de\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">tram::Render::API::SWDrawListEntry::specular_exponent</a></div><div class=\"ttdeci\">float specular_exponent</div><div class=\"ttdef\"><b>Definition:</b> software.h:83</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_abe68abe6d073d4442922709f286fe084\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">tram::Render::API::SWDrawListEntry::index_offset</a></div><div class=\"ttdeci\">uint32_t index_offset</div><div class=\"ttdef\"><b>Definition:</b> software.h:79</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_ac41f6b41aba38a7099bca75a12e45a66\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">tram::Render::API::SWDrawListEntry::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> software.h:66</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry_html_ada769a583a606a1cce9acbeaf75c0055\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">tram::Render::API::SWDrawListEntry::lightmap</a></div><div class=\"ttdeci\">SWTexture * lightmap</div><div class=\"ttdef\"><b>Definition:</b> software.h:75</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:57</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array_html_a1d40640fcd34e0d04e93967015a3f31a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">tram::Render::API::SWIndexArray::indices</a></div><div class=\"ttdeci\">uint32_t * indices</div><div class=\"ttdef\"><b>Definition:</b> software.h:59</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array_html_a2de31335d50d09b3228d92b4129dad6f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">tram::Render::API::SWIndexArray::padding</a></div><div class=\"ttdeci\">void * padding</div><div class=\"ttdef\"><b>Definition:</b> software.h:61</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array_html_ab13f8b1dc90072e971b2b6c997eb2f57\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">tram::Render::API::SWIndexArray::index_count</a></div><div class=\"ttdeci\">size_t index_count</div><div class=\"ttdef\"><b>Definition:</b> software.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html_a1838c501762f397cdd64335cced1e092\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">tram::Render::API::SWLight::exponent</a></div><div class=\"ttdeci\">float exponent</div><div class=\"ttdef\"><b>Definition:</b> software.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html_a2b570e30f7b76c312622439f7ea7323e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">tram::Render::API::SWLight::location</a></div><div class=\"ttdeci\">vec3 location</div><div class=\"ttdef\"><b>Definition:</b> software.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html_a9068a6c1a70d5227827ec2d85e8c1c67\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">tram::Render::API::SWLight::distance</a></div><div class=\"ttdeci\">float distance</div><div class=\"ttdef\"><b>Definition:</b> software.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html_ac7bf8ca7901ad82b4055cca7a9f17929\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">tram::Render::API::SWLight::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> software.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_light_html_ae2ce38d13d603acace4061af8a68e421\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">tram::Render::API::SWLight::direction</a></div><div class=\"ttdeci\">vec3 direction</div><div class=\"ttdef\"><b>Definition:</b> software.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html_a2560949172455dcc62693eb9161f4d44\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">tram::Render::API::SWTexture::mode</a></div><div class=\"ttdeci\">SWTextureMode mode</div><div class=\"ttdef\"><b>Definition:</b> software.h:28</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html_a5c8fdd2162a423532bc06502910f1579\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">tram::Render::API::SWTexture::height</a></div><div class=\"ttdeci\">int height</div><div class=\"ttdef\"><b>Definition:</b> software.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html_a95971f9092686bb8428c980f655d7334\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">tram::Render::API::SWTexture::pixels</a></div><div class=\"ttdeci\">uint8_t * pixels</div><div class=\"ttdef\"><b>Definition:</b> software.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html_a964e2ce1c9da10fdb367faf75368e18d\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">tram::Render::API::SWTexture::channels</a></div><div class=\"ttdeci\">int channels</div><div class=\"ttdef\"><b>Definition:</b> software.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_texture_html_ae907dbc5c37e4a1e92440c7518e242d6\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">tram::Render::API::SWTexture::width</a></div><div class=\"ttdeci\">int width</div><div class=\"ttdef\"><b>Definition:</b> software.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></div><div class=\"ttdef\"><b>Definition:</b> software.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html_a9696b067eb3e37d068c606ba565da133\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">tram::Render::API::SWVertexArray::type</a></div><div class=\"ttdeci\">SWVertexType type</div><div class=\"ttdef\"><b>Definition:</b> software.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html_aac501573a4eabe407679900bd4d814a4\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">tram::Render::API::SWVertexArray::helper</a></div><div class=\"ttdeci\">FFPHelper helper</div><div class=\"ttdef\"><b>Definition:</b> software.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html_ab33cd2e86d75d32f47c3071e186fc44d\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">tram::Render::API::SWVertexArray::vertices</a></div><div class=\"ttdeci\">void * vertices</div><div class=\"ttdef\"><b>Definition:</b> software.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html_add67c8209f7725b412aa0b3c24ab534f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">tram::Render::API::SWVertexArray::vertex_count</a></div><div class=\"ttdeci\">size_t vertex_count</div><div class=\"ttdef\"><b>Definition:</b> software.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array_html_ae5c1736575294cb01427786c8bc8e3a2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">tram::Render::API::SWVertexArray::format</a></div><div class=\"ttdeci\">VertexDefinition format</div><div class=\"ttdef\"><b>Definition:</b> software.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_pose_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></div><div class=\"ttdef\"><b>Definition:</b> animation.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_vertex_definition_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a></div><div class=\"ttdef\"><b>Definition:</b> renderer.h:63</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/sound_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;stb_vorbis.c&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"sound_8h_source.html\">audio/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:ab39c0631c06b955e43b18fe355851de8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">Hashmap&lt; Sound * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html#ab39c0631c06b955e43b18fe355851de8\">tram::Audio::SOUND_MAP</a> (&quot;Sound hash map&quot;, 500)</td></tr>\n<tr class=\"separator:ab39c0631c06b955e43b18fe355851de8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/sound_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">sound.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio/audio.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"resource_8h_source.html\">framework/resource.h</a>&gt;</code><br />\n</div>\n<p><a href=\"sound_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/sound_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/sound.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">sound.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"sound_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"audio_2audio_8h.html\">audio/audio.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"resource_8h.html\">framework/resource.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html\">   13</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#aa827af6cf1ac204d1fd1187d102b5023\">   15</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">audiobuffer_t</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#aa827af6cf1ac204d1fd1187d102b5023\">sound_buffers</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a79478a689380015f054c476de65d271c\">   16</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a79478a689380015f054c476de65d271c\">sound_buffer_count</a> = 0;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">   17</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">channels</a> = 0;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">   18</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">sample_rate</a> = 0;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">   19</a></span>    int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">sound_length</a> = 0;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">   20</a></span>    int16_t* <a class=\"code hl_variable\" href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">sound_data</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a3f131fe9c01518c14c67e52612b4bd47\">   22</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a3f131fe9c01518c14c67e52612b4bd47\">Load</a>() { <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">LoadFromDisk</a>(); }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">   24</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">LoadFromMemory</a>(){}</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a55bacb9cc581f2409db189fc3a68a9d8\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_audio_1_1_sound.html\">Sound</a>* <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">Find</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">   29</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">Sound</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) : <a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">name</a>) {}</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_audio_1_1_sound.html#a6138aa72cd0b6a55be22d74ab84c65d6\">   30</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span>&gt; <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_pool.html\">tram::Pool</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>};</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>}</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SOUND_H</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"ttc\" id=\"aaudio_2audio_8h_html\"><div class=\"ttname\"><a href=\"audio_2audio_8h.html\">audio.h</a></div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html\">tram::Audio::Sound</a></div><div class=\"ttdef\"><b>Definition:</b> sound.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a31e7f9540ea880eb01e07c5a887d1911\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a31e7f9540ea880eb01e07c5a887d1911\">tram::Audio::Sound::sample_rate</a></div><div class=\"ttdeci\">int32_t sample_rate</div><div class=\"ttdef\"><b>Definition:</b> sound.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a3f131fe9c01518c14c67e52612b4bd47\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a3f131fe9c01518c14c67e52612b4bd47\">tram::Audio::Sound::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdef\"><b>Definition:</b> sound.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a55bacb9cc581f2409db189fc3a68a9d8\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a55bacb9cc581f2409db189fc3a68a9d8\">tram::Audio::Sound::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Removes the sound from memory.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a79478a689380015f054c476de65d271c\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a79478a689380015f054c476de65d271c\">tram::Audio::Sound::sound_buffer_count</a></div><div class=\"ttdeci\">int32_t sound_buffer_count</div><div class=\"ttdef\"><b>Definition:</b> sound.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a8210efc515c9fff335ca38e09fadd398\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a8210efc515c9fff335ca38e09fadd398\">tram::Audio::Sound::Sound</a></div><div class=\"ttdeci\">Sound(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> sound.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a8e7cecf626c003bbb39fd560da2d68a0\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a8e7cecf626c003bbb39fd560da2d68a0\">tram::Audio::Sound::LoadFromMemory</a></div><div class=\"ttdeci\">void LoadFromMemory()</div><div class=\"ttdef\"><b>Definition:</b> sound.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a946974537a8c3a039a9c49a4edb7f369\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a946974537a8c3a039a9c49a4edb7f369\">tram::Audio::Sound::channels</a></div><div class=\"ttdeci\">int32_t channels</div><div class=\"ttdef\"><b>Definition:</b> sound.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a98e435c2eb675251a7b2826d1cee3e9d\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a98e435c2eb675251a7b2826d1cee3e9d\">tram::Audio::Sound::sound_data</a></div><div class=\"ttdeci\">int16_t * sound_data</div><div class=\"ttdef\"><b>Definition:</b> sound.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_a9fd0ad9ee54f5c3beaa148532d97726e\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#a9fd0ad9ee54f5c3beaa148532d97726e\">tram::Audio::Sound::sound_length</a></div><div class=\"ttdeci\">int32_t sound_length</div><div class=\"ttdef\"><b>Definition:</b> sound.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_aa827af6cf1ac204d1fd1187d102b5023\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#aa827af6cf1ac204d1fd1187d102b5023\">tram::Audio::Sound::sound_buffers</a></div><div class=\"ttdeci\">audiobuffer_t * sound_buffers</div><div class=\"ttdef\"><b>Definition:</b> sound.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_add19eef6a4ddc9d13638368c623f572a\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#add19eef6a4ddc9d13638368c623f572a\">tram::Audio::Sound::Find</a></div><div class=\"ttdeci\">static Sound * Find(name_t name)</div><div class=\"ttdoc\">Finds a sound by a name.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_audio_1_1_sound_html_ae681916d6ba3394f2993162be809738c\"><div class=\"ttname\"><a href=\"classtram_1_1_audio_1_1_sound.html#ae681916d6ba3394f2993162be809738c\">tram::Audio::Sound::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdoc\">Loads the sound from the disk.</div><div class=\"ttdef\"><b>Definition:</b> sound.cpp:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_pool.html\">tram::Pool</a></div><div class=\"ttdef\"><b>Definition:</b> pool.h:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:12</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html_a1fdc62041e403a7a4a49c9860ff00b83\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html#a1fdc62041e403a7a4a49c9860ff00b83\">tram::Resource::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> resource.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html\">tram::Audio</a></div><div class=\"ttdef\"><b>Definition:</b> api.cpp:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_audio_html_ad9a939ea7bd76c456ea09d232b672fba\"><div class=\"ttname\"><a href=\"namespacetram_1_1_audio.html#ad9a939ea7bd76c456ea09d232b672fba\">tram::Audio::audiobuffer_t</a></div><div class=\"ttdeci\">uint32_t audiobuffer_t</div><div class=\"ttdef\"><b>Definition:</b> audio.h:13</div></div>\n<div class=\"ttc\" id=\"aresource_8h_html\"><div class=\"ttname\"><a href=\"resource_8h.html\">resource.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdef\"><b>Definition:</b> uid.h:11</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/soundtable_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/soundtable.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">soundtable.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"soundtable_8h_source.html\">extensions/kitchensink/soundtable.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entities_2sound_8h_source.html\">entities/sound.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/soundtable_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/soundtable.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">soundtable.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"soundtable_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Maps actions to sounds.  <a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_kitchensink\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Extension containing random stuff that doesn't fit in anywhere else. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:ac0b6180871852d23893d3339b6beed53\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">tram::Ext::Kitchensink::SoundAction</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">tram::Ext::Kitchensink::SOUND_OPEN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">tram::Ext::Kitchensink::SOUND_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">tram::Ext::Kitchensink::SOUND_LOCKED</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">tram::Ext::Kitchensink::SOUND_END_OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">tram::Ext::Kitchensink::SOUND_END_CLOSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">tram::Ext::Kitchensink::SOUND_WALK_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">tram::Ext::Kitchensink::SOUND_JUMP_ON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">tram::Ext::Kitchensink::SOUND_HIT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ac0b6180871852d23893d3339b6beed53\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/soundtable_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/soundtable.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_72f27f6e39bba3da07977890c5e9396b.html\">kitchensink</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">soundtable.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"soundtable_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">SOUND_OPEN</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">SOUND_CLOSE</a>,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">SOUND_LOCKED</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">SOUND_END_OPEN</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">SOUND_END_CLOSE</a>,</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">SOUND_WALK_ON</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">SOUND_JUMP_ON</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">SOUND_HIT</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>};</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">   24</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a> {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">AddSound</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type, <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> sound);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">GetSound</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">PlaySound</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">PlaySound</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">SoundAction</a> type, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> position, <span class=\"keywordtype\">float</span> volume);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">SoundTable</a>* <a class=\"code hl_function\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    std::vector&lt;std::pair&lt;SoundAction, name_t&gt;&gt; sounds;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>};</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>}</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_sound_table_html\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html\">tram::Ext::Kitchensink::SoundTable</a></div><div class=\"ttdoc\">Maps actions to sounds.</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_sound_table_html_a7a6df6a1a197749301a22f3026617a86\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a7a6df6a1a197749301a22f3026617a86\">tram::Ext::Kitchensink::SoundTable::PlaySound</a></div><div class=\"ttdeci\">void PlaySound(SoundAction type)</div><div class=\"ttdef\"><b>Definition:</b> soundtable.cpp:53</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_sound_table_html_a8d4546e389d3135619016bd4ad493bc2\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#a8d4546e389d3135619016bd4ad493bc2\">tram::Ext::Kitchensink::SoundTable::AddSound</a></div><div class=\"ttdeci\">void AddSound(SoundAction type, name_t sound)</div><div class=\"ttdef\"><b>Definition:</b> soundtable.cpp:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_sound_table_html_ab1f347b3f34189f5b870633c9ee8d52b\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ab1f347b3f34189f5b870633c9ee8d52b\">tram::Ext::Kitchensink::SoundTable::GetSound</a></div><div class=\"ttdeci\">name_t GetSound(SoundAction type)</div><div class=\"ttdef\"><b>Definition:</b> soundtable.cpp:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_ext_1_1_kitchensink_1_1_sound_table_html_ae4cbf60676839ac61f953d315f0ac3cc\"><div class=\"ttname\"><a href=\"classtram_1_1_ext_1_1_kitchensink_1_1_sound_table.html#ae4cbf60676839ac61f953d315f0ac3cc\">tram::Ext::Kitchensink::SoundTable::Find</a></div><div class=\"ttdeci\">static SoundTable * Find(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> soundtable.cpp:63</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">tram::Ext::Kitchensink</a></div><div class=\"ttdoc\">Extension containing random stuff that doesn't fit in anywhere else.</div><div class=\"ttdef\"><b>Definition:</b> ai.cpp:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53\">tram::Ext::Kitchensink::SoundAction</a></div><div class=\"ttdeci\">SoundAction</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a0b1510724c55be0cad2e892725226c4d\">tram::Ext::Kitchensink::SOUND_CLOSE</a></div><div class=\"ttdeci\">@ SOUND_CLOSE</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a1945da65354169336d298153cc6d6fcd\">tram::Ext::Kitchensink::SOUND_OPEN</a></div><div class=\"ttdeci\">@ SOUND_OPEN</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a477e1a3f1473578ac80f685cd411a3d1\">tram::Ext::Kitchensink::SOUND_END_CLOSE</a></div><div class=\"ttdeci\">@ SOUND_END_CLOSE</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9c3e411d1043f7a77edc2a1c39177f5e\">tram::Ext::Kitchensink::SOUND_END_OPEN</a></div><div class=\"ttdeci\">@ SOUND_END_OPEN</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53a9d256387912c4726b3722a012d6d47b1\">tram::Ext::Kitchensink::SOUND_WALK_ON</a></div><div class=\"ttdeci\">@ SOUND_WALK_ON</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53aa78540b88200263453173ba9037db0f8\">tram::Ext::Kitchensink::SOUND_JUMP_ON</a></div><div class=\"ttdeci\">@ SOUND_JUMP_ON</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ab806d576cdea3d633ec61b5b3f1b9acb\">tram::Ext::Kitchensink::SOUND_HIT</a></div><div class=\"ttdeci\">@ SOUND_HIT</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_kitchensink_html_ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ac0b6180871852d23893d3339b6beed53ad8d8417ecb3b9e599d26ee4e9c8d7d75\">tram::Ext::Kitchensink::SOUND_LOCKED</a></div><div class=\"ttdeci\">@ SOUND_LOCKED</div><div class=\"ttdef\"><b>Definition:</b> soundtable.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/spatial_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/spatial.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">spatial.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_spatial\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_spatial\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Experimental path tracing audio system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/spatial_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/spatial.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">spatial.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Definitions for the Spatial Audio backend.  \n<a href=\"#details\">More...</a></p>\n\n<p><a href=\"spatial_8h_source.html\">Go to the source code of this file.</a></p>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Definitions for the Spatial Audio backend. </p>\n<p >It hasn't been compiled in years, so it is probably broken, but I will keep the code here, just in case I want to revive it in the future. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/spatial_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/spatial.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_d6dfb888f5e5a248d906bac34bc576a1.html\">spatial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">spatial.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"spatial_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#ifndef TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#define TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"comment\">/*#include &lt;audio/audio.h&gt;</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">namespace tram::Audio::Spatial {</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">void Init();</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">void Update();</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">void Uninit();</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">void SetListenerPosition(const vec3&amp; position);</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"comment\">void SetListenerOrientation(const quat&amp; orientation);</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"comment\">audiobuffer_t* MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels, int32_t&amp; buffer_count);</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"comment\">void RemoveAudioBuffer(audiobuffer_t* buffers, int32_t buffer_count);</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"comment\">audiosource_t MakeAudioSource();</span></div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"comment\">void SetAudioSourcePitch (audiosource_t source, float pitch);</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"comment\">void SetAudioSourceGain (audiosource_t source, float gain);</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"comment\">void SetAudioSourcePosition (audiosource_t source, vec3 position);</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"comment\">void SetAudioSourceVelocity (audiosource_t source, vec3 velocity);</span></div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">void SetAudioSourceRepeating (audiosource_t source, bool repeating);</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">void SetAudioSourceBuffer(audiosource_t source, const audiobuffer_t* buffers, int32_t buffer_count);</span></div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">void PlayAudioSource (audiosource_t source);</span></div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">void PauseAudioSource (audiosource_t source);</span></div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">void StopAudioSource (audiosource_t source);</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">bool IsAudioSourcePlaying (audiosource_t source);</span></div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">void RemoveAudioSource (audiosource_t source);    </span></div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\"></span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">}*/</span></div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H</span></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/spinlock_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/spinlock.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">spinlock.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;atomic&gt;</code><br />\n</div>\n<p><a href=\"spinlock_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/spinlock_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/spinlock.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">spinlock.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"spinlock_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_SPINLOCK_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_SPINLOCK_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;atomic&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">/* I have no idea how useful this is.</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_spinlock.html\">   13</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_spinlock.html\">Spinlock</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">   15</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">Lock</a>() {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>        <span class=\"keywordflow\">while</span> (lock.exchange(<span class=\"keyword\">true</span>));</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    }</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">   19</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">Unlock</a>() {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        lock.store(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    std::atomic&lt;bool&gt; lock = {<span class=\"keyword\">false</span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>};</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>}</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_SPINLOCK_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_spinlock_html\"><div class=\"ttname\"><a href=\"classtram_1_1_spinlock.html\">tram::Spinlock</a></div><div class=\"ttdef\"><b>Definition:</b> spinlock.h:13</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_spinlock_html_a9ab6e05f0a2d8cb920081fa3507eb864\"><div class=\"ttname\"><a href=\"classtram_1_1_spinlock.html#a9ab6e05f0a2d8cb920081fa3507eb864\">tram::Spinlock::Lock</a></div><div class=\"ttdeci\">void Lock()</div><div class=\"ttdef\"><b>Definition:</b> spinlock.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_spinlock_html_abc3aa4bbf54049125b46326dec076634\"><div class=\"ttname\"><a href=\"classtram_1_1_spinlock.html#abc3aa4bbf54049125b46326dec076634\">tram::Spinlock::Unlock</a></div><div class=\"ttdeci\">void Unlock()</div><div class=\"ttdef\"><b>Definition:</b> spinlock.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stack_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/stack.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">stack.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;string&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n</div>\n<p><a href=\"stack_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack.html\">tram::Stack&lt; T &gt;</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stack_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/stack.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">stack.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"stack_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_STACK_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_STACK_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">/* copy-pasting queue code might have not been the best idea. anyway, it would</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"comment\"> * be nice to yeet all of the old names of methods an keep only the new aliases.</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"comment\"> * </span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"comment\"> * the internal stuff should also be rewritten to be actually understandable</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"comment\"> */</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html\">   17</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_stack.html\">Stack</a>{</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>        <span class=\"comment\">// TODO: figure out what is going on in here???</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">   20</a></span>        std::string <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a>;  <span class=\"comment\">//name of queue for log messages etc.</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">   21</a></span>        uint64_t <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a>;   <span class=\"comment\">//how many elements are in queue right now</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">   22</a></span>        uint64_t <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">stackSize</a>;     <span class=\"comment\">//how many elements can be added to queue</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">   23</a></span>        T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a>;               <span class=\"comment\">//first element in queue</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">   24</a></span>        T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a>;                <span class=\"comment\">//one past last element in queue</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">   25</a></span>        T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">firstend</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">   26</a></span>        T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">lastend</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">   28</a></span>        <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">Stack</a>(std::string name, uint64_t initialSize){</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a> = name;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">stackSize</a> = initialSize;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a> = 0;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>            <span class=\"keywordtype\">char</span>* newmemory = (<span class=\"keywordtype\">char</span>*)::<span class=\"keyword\">operator</span> <span class=\"keyword\">new</span>(initialSize * <span class=\"keyword\">sizeof</span>(T));</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a> = (T*)newmemory;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a>;</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">firstend</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a>;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">lastend</a> = (T*)newmemory + (initialSize * <span class=\"keyword\">sizeof</span>(T));</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>        };</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">   39</a></span>        T* <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">AddNew</a>(){</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>            <span class=\"keywordflow\">if</span>(<a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">stackSize</a>){</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>                std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Stack &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a> &lt;&lt; <span class=\"stringliteral\">&quot; out of space!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>                <span class=\"keywordflow\">return</span> <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>            }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>            T* newobj = <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a>;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>            <span class=\"keyword\">new</span>(newobj) T;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a>++;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a>++;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>            <span class=\"keywordflow\">return</span> newobj;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        };</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">   51</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">Remove</a>(){</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>            <span class=\"keywordflow\">if</span>(<a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a> == <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">firstend</a>){</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>                std::cout &lt;&lt; <span class=\"stringliteral\">&quot;Stack &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">stackName</a> &lt;&lt; <span class=\"stringliteral\">&quot; already empty!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>            };</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a>--;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a>--;</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        };</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">   58</a></span>        T* <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">GetLastPtr</a>(){</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a> == 0)</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                <span class=\"keywordflow\">return</span> <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>            <span class=\"keywordflow\">else</span></div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a> - 1;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        };</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">   64</a></span>        uint64_t <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">GetLength</a>(){<span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a>;};</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">   65</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">Reset</a>(){</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">stackLength</a> = 0;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">first</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        }</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">   70</a></span>        T&amp; <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">top</a>() { <span class=\"keywordflow\">return</span> *<a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">GetLastPtr</a>(); }</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">   71</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">push</a>(<span class=\"keyword\">const</span> T&amp; value) { *<a class=\"code hl_function\" href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">AddNew</a>() = value; }</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">   72</a></span>        T <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">pop</a>() { T value = <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">top</a>(); <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">Remove</a>(); <span class=\"keywordflow\">return</span> value; }</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">   73</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">reset</a>() { <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">Reset</a>(); }</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">   74</a></span>        <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">size</a>() {<span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">GetLength</a>(); }</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    };</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>}</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_STACK_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html\">tram::Stack</a></div><div class=\"ttdef\"><b>Definition:</b> stack.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a0d0e42f7cb952325a56a77c5097f93a4\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a0d0e42f7cb952325a56a77c5097f93a4\">tram::Stack::first</a></div><div class=\"ttdeci\">T * first</div><div class=\"ttdef\"><b>Definition:</b> stack.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a1b57914b1686d486e8e724dd4ef511b2\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a1b57914b1686d486e8e724dd4ef511b2\">tram::Stack::size</a></div><div class=\"ttdeci\">size_t size()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a30a5b622fc4d1be6a302f2101e423e43\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a30a5b622fc4d1be6a302f2101e423e43\">tram::Stack::top</a></div><div class=\"ttdeci\">T &amp; top()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a382ca6f3fd7d1f13fc9f5c1decbf206a\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a382ca6f3fd7d1f13fc9f5c1decbf206a\">tram::Stack::stackSize</a></div><div class=\"ttdeci\">uint64_t stackSize</div><div class=\"ttdef\"><b>Definition:</b> stack.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a3cca2aef7b2091fff5bd9772b3f19edc\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a3cca2aef7b2091fff5bd9772b3f19edc\">tram::Stack::Remove</a></div><div class=\"ttdeci\">void Remove()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a3d06fa32cc63d712025d3090f03887b3\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a3d06fa32cc63d712025d3090f03887b3\">tram::Stack::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a4718060e0b69b752026d144a5db7e152\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a4718060e0b69b752026d144a5db7e152\">tram::Stack::Reset</a></div><div class=\"ttdeci\">void Reset()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a53b43f3330a4e398271d8c71d119e99a\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a53b43f3330a4e398271d8c71d119e99a\">tram::Stack::GetLength</a></div><div class=\"ttdeci\">uint64_t GetLength()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a5f6b6fb4a9090e80ade67b4937959e3e\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a5f6b6fb4a9090e80ade67b4937959e3e\">tram::Stack::stackName</a></div><div class=\"ttdeci\">std::string stackName</div><div class=\"ttdef\"><b>Definition:</b> stack.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a68378c5ce401f8baa36270fbe3174bd0\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a68378c5ce401f8baa36270fbe3174bd0\">tram::Stack::last</a></div><div class=\"ttdeci\">T * last</div><div class=\"ttdef\"><b>Definition:</b> stack.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a8c5bca889246272bd6fbc0789e7a2841\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a8c5bca889246272bd6fbc0789e7a2841\">tram::Stack::pop</a></div><div class=\"ttdeci\">T pop()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:72</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_a961d9d65f2fce72c72514203eefea7eb\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#a961d9d65f2fce72c72514203eefea7eb\">tram::Stack::GetLastPtr</a></div><div class=\"ttdeci\">T * GetLastPtr()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:58</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_aa0969199ef282f64cc05a4954bc67bb7\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#aa0969199ef282f64cc05a4954bc67bb7\">tram::Stack::lastend</a></div><div class=\"ttdeci\">T * lastend</div><div class=\"ttdef\"><b>Definition:</b> stack.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_acfba6f478c25b9476568caba14833fb4\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#acfba6f478c25b9476568caba14833fb4\">tram::Stack::stackLength</a></div><div class=\"ttdeci\">uint64_t stackLength</div><div class=\"ttdef\"><b>Definition:</b> stack.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_aef2cc6aeb5ebd3ee4365cce47e29dfdf\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#aef2cc6aeb5ebd3ee4365cce47e29dfdf\">tram::Stack::firstend</a></div><div class=\"ttdeci\">T * firstend</div><div class=\"ttdef\"><b>Definition:</b> stack.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_aef5ef45fb8c20c2f54ebcb7953be1556\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#aef5ef45fb8c20c2f54ebcb7953be1556\">tram::Stack::AddNew</a></div><div class=\"ttdeci\">T * AddNew()</div><div class=\"ttdef\"><b>Definition:</b> stack.h:39</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_af07b289d86a6b75514c2ae1412d0ab41\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#af07b289d86a6b75514c2ae1412d0ab41\">tram::Stack::Stack</a></div><div class=\"ttdeci\">Stack(std::string name, uint64_t initialSize)</div><div class=\"ttdef\"><b>Definition:</b> stack.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_html_af88a0407075f961d55e94de1f4ee9588\"><div class=\"ttname\"><a href=\"classtram_1_1_stack.html#af88a0407075f961d55e94de1f4ee9588\">tram::Stack::push</a></div><div class=\"ttdeci\">void push(const T &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> stack.h:71</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stackpool_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/stackpool.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">stackpool.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;string&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n</div>\n<p><a href=\"stackpool_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_stack_pool.html\">tram::StackPool&lt; T &gt;</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocator.  <a href=\"classtram_1_1_stack_pool.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stackpool_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/stackpool.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">stackpool.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"stackpool_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_STACKPOOL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_STACKPOOL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_stack_pool.html\">StackPool</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">   19</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">StackPool</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>, <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a>) {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        this-&gt;name = <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>        this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">available_size</a> = <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a>;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>        this-&gt;<a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a> = 0;</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a> = <span class=\"keyword\">static_cast&lt;</span>T*<span class=\"keyword\">&gt;</span>(::operator <span class=\"keyword\">new</span>(<a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a> * <span class=\"keyword\">sizeof</span>(T)));</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a>;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b\">   28</a></span>    <span class=\"keyword\">constexpr</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b\">StackPool</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>, <span class=\"keywordtype\">size_t</span> max_size, std::initializer_list&lt;T&gt; list) : <a class=\"code hl_class\" href=\"classtram_1_1_stack_pool.html\">StackPool</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>, max_size) {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <span class=\"keywordflow\">for</span> (<span class=\"keyword\">const</span> <span class=\"keyword\">auto</span>&amp; entry : list) {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>            *<a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">AddNew</a>(1) = entry; <span class=\"comment\">// not good, but works</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    }</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">   34</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">AddNew</a>(<span class=\"keywordtype\">size_t</span> units) {</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a> + units &gt; <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">available_size</a>) {</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>            std::cout &lt;&lt; <span class=\"stringliteral\">&quot;StackPool &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a> &lt;&lt; <span class=\"stringliteral\">&quot; out of space!&quot;</span> &lt;&lt; std::endl;</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>        }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>        T* allocation = <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>        </div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a> += units;</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a> += units;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>        <span class=\"keywordflow\">return</span> allocation;</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    }</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">   48</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">allocate</a>(<span class=\"keywordtype\">size_t</span> units) {</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">AddNew</a>(units);</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">   52</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">Reset</a>() {</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a> = 0;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    </div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">reset</a>() {</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">Reset</a>();</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">   61</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">size</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a>; }</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">   62</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">begin</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a>; }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">   63</a></span>    T* <a class=\"code hl_function\" href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">end</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a>; }</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">   66</a></span>    std::string <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">name</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">   67</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">allocated_size</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">   68</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">available_size</a>;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">   69</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">first</a>;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">   70</a></span>    T* <a class=\"code hl_variable\" href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">last</a>;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>};</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>}</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_STACKPOOL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html\">tram::StackPool</a></div><div class=\"ttdoc\">Allocator.</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a0c46cfa4c88b248b51a096436d4a4147\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a0c46cfa4c88b248b51a096436d4a4147\">tram::StackPool::last</a></div><div class=\"ttdeci\">T * last</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a12110066565425c621d05ee4dffbb70c\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a12110066565425c621d05ee4dffbb70c\">tram::StackPool::StackPool</a></div><div class=\"ttdeci\">constexpr StackPool(const char *name, size_t size)</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a4124c926206e0e06403f8cff5a999b43\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a4124c926206e0e06403f8cff5a999b43\">tram::StackPool::begin</a></div><div class=\"ttdeci\">T * begin()</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a45ca522e92ec2faada60b18dad845832\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a45ca522e92ec2faada60b18dad845832\">tram::StackPool::Reset</a></div><div class=\"ttdeci\">void Reset()</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a4f26be1e8228843b1d4928fbd584997e\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a4f26be1e8228843b1d4928fbd584997e\">tram::StackPool::AddNew</a></div><div class=\"ttdeci\">T * AddNew(size_t units)</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:34</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a6ce93b4a50a7e007acd3bbfdf8482d84\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a6ce93b4a50a7e007acd3bbfdf8482d84\">tram::StackPool::allocate</a></div><div class=\"ttdeci\">T * allocate(size_t units)</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:48</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a72cd4ac04fad51347b627f2d894b75d8\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a72cd4ac04fad51347b627f2d894b75d8\">tram::StackPool::available_size</a></div><div class=\"ttdeci\">size_t available_size</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_a8c6122dde12481b629f2f7b1ce2afc28\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#a8c6122dde12481b629f2f7b1ce2afc28\">tram::StackPool::name</a></div><div class=\"ttdeci\">std::string name</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_aa1b01a988e50384b053dab3204b2872f\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#aa1b01a988e50384b053dab3204b2872f\">tram::StackPool::size</a></div><div class=\"ttdeci\">size_t size()</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_aaeba247ccf78620d37bfb23ac812f123\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#aaeba247ccf78620d37bfb23ac812f123\">tram::StackPool::allocated_size</a></div><div class=\"ttdeci\">size_t allocated_size</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_aaf7603622a4b6515c9d00f26c758e34c\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#aaf7603622a4b6515c9d00f26c758e34c\">tram::StackPool::first</a></div><div class=\"ttdeci\">T * first</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_abd79d28bc444c59c3a1435e7580a3498\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#abd79d28bc444c59c3a1435e7580a3498\">tram::StackPool::end</a></div><div class=\"ttdeci\">T * end()</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_ac045057c72646b08dd0042b49ca9170b\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#ac045057c72646b08dd0042b49ca9170b\">tram::StackPool::StackPool</a></div><div class=\"ttdeci\">constexpr StackPool(const char *name, size_t max_size, std::initializer_list&lt; T &gt; list)</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_stack_pool_html_aed5f3ae73582e286a4f9964fc65e73a0\"><div class=\"ttname\"><a href=\"classtram_1_1_stack_pool.html#aed5f3ae73582e286a4f9964fc65e73a0\">tram::StackPool::reset</a></div><div class=\"ttdeci\">void reset()</div><div class=\"ttdef\"><b>Definition:</b> stackpool.h:57</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/staticworldobject_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/staticworldobject.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">staticworldobject.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"staticworldobject_8h_source.html\">entities/staticworldobject.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2render_8h_source.html\">components/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a717981bca7f8ce2fc1d263cec32f2e71\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"namespacetram.html#af7146bfc7fadecfa5f4443e416a5a356a13cd63275162d147854397503537f0be\">tram::FIELD_MODEL</a>\n, <a class=\"el\" href=\"namespacetram.html#a717981bca7f8ce2fc1d263cec32f2e71ad872d96f0629a60291cde0384b221c2b\">tram::FIELD_LIGHTMAP</a>\n }</td></tr>\n<tr class=\"separator:a717981bca7f8ce2fc1d263cec32f2e71\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/staticworldobject_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/staticworldobject.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">staticworldobject.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"serialization_8h_source.html\">framework/serialization.h</a>&gt;</code><br />\n</div>\n<p><a href=\"staticworldobject_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Worldspawn.  <a href=\"classtram_1_1_static_world_object.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/staticworldobject_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/staticworldobject.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_044994f9a1f49429ab82387beaf2fc8f.html\">entities</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">staticworldobject.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"staticworldobject_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef ENTITIES_STATICWORLDOBJECT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define ENTITIES_STATICWORLDOBJECT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entity_8h.html\">framework/entity.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"serialization_8h.html\">framework/serialization.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>RenderComponent;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>PhysicsComponent;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_static_world_object.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_static_world_object.html\">StaticWorldObject</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">StaticWorldObject</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a>&amp;, <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">UpdateParameters</a>();</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">SetParameters</a>();</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">Serialize</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">MessageHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_message.html\">Message</a>&amp; msg);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">Register</a>();</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">   27</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;RenderComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">rendercomponent</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">   28</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_component.html\">Component&lt;PhysicsComponent&gt;</a> <a class=\"code hl_variable\" href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">physicscomponent</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">   30</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">model</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">   31</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">lightmap</a>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>};</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// ENTITIES_STATICWORLDOBJECT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_component.html\">tram::Component</a></div><div class=\"ttdoc\">Wrapper for an EntityComponent pointer.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html\">tram::StaticWorldObject</a></div><div class=\"ttdoc\">Worldspawn.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a08c7e874c022df3ec4a4c6bc5a09a2e3\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a08c7e874c022df3ec4a4c6bc5a09a2e3\">tram::StaticWorldObject::StaticWorldObject</a></div><div class=\"ttdeci\">StaticWorldObject(const SharedEntityData &amp;, const ValueArray &amp;)</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a0f37865a6e409691526901290d6c1d8b\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a0f37865a6e409691526901290d6c1d8b\">tram::StaticWorldObject::model</a></div><div class=\"ttdeci\">name_t model</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a304c5569f576f950ff443c4fd5910f9b\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a304c5569f576f950ff443c4fd5910f9b\">tram::StaticWorldObject::UpdateParameters</a></div><div class=\"ttdeci\">void UpdateParameters()</div><div class=\"ttdoc\">Called when Entity::UpdateTransform is called.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a48e342917b51b7002d803a43d32daca3\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a48e342917b51b7002d803a43d32daca3\">tram::StaticWorldObject::SetParameters</a></div><div class=\"ttdeci\">void SetParameters()</div><div class=\"ttdoc\">Called when either Entity::SetLocation or Entity::SetRotation is called.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a51c9c75f31cfe28bc7934498bf4b3dfe\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a51c9c75f31cfe28bc7934498bf4b3dfe\">tram::StaticWorldObject::rendercomponent</a></div><div class=\"ttdeci\">Component&lt; RenderComponent &gt; rendercomponent</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a6686c2178ae7e6444df5f9887c2199d7\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a6686c2178ae7e6444df5f9887c2199d7\">tram::StaticWorldObject::lightmap</a></div><div class=\"ttdeci\">name_t lightmap</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.h:31</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a7ad11c2699b96d4f78f55d032a4e63e9\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a7ad11c2699b96d4f78f55d032a4e63e9\">tram::StaticWorldObject::GetType</a></div><div class=\"ttdeci\">name_t GetType()</div><div class=\"ttdoc\">Returns the type of the entity.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:40</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a7db1c49df54e8a3be9f874af923b196f\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a7db1c49df54e8a3be9f874af923b196f\">tram::StaticWorldObject::Serialize</a></div><div class=\"ttdeci\">void Serialize()</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:97</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a8e563a79c899fe488977537b60f5f051\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a8e563a79c899fe488977537b60f5f051\">tram::StaticWorldObject::Register</a></div><div class=\"ttdeci\">static void Register()</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_a9fef88663daf97d8d472e29d480f29cc\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#a9fef88663daf97d8d472e29d480f29cc\">tram::StaticWorldObject::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads an entity.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_aadf4aa7defed528401d1b40561b56e38\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#aadf4aa7defed528401d1b40561b56e38\">tram::StaticWorldObject::MessageHandler</a></div><div class=\"ttdeci\">void MessageHandler(Message &amp;msg)</div><div class=\"ttdoc\">Allows entities to receive messages.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:102</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_abe3ba490eff6dbed046904e2cda3aa01\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#abe3ba490eff6dbed046904e2cda3aa01\">tram::StaticWorldObject::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads an entity.</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.cpp:88</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_static_world_object_html_afcf86a58f1164ab9bef21c7f01e42def\"><div class=\"ttname\"><a href=\"classtram_1_1_static_world_object.html#afcf86a58f1164ab9bef21c7f01e42def\">tram::StaticWorldObject::physicscomponent</a></div><div class=\"ttdeci\">Component&lt; PhysicsComponent &gt; physicscomponent</div><div class=\"ttdef\"><b>Definition:</b> staticworldobject.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aentity_8h_html\"><div class=\"ttname\"><a href=\"entity_8h.html\">entity.h</a></div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"aserialization_8h_html\"><div class=\"ttname\"><a href=\"serialization_8h.html\">serialization.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_message_html\"><div class=\"ttname\"><a href=\"structtram_1_1_message.html\">tram::Message</a></div><div class=\"ttdoc\">Message data.</div><div class=\"ttdef\"><b>Definition:</b> message.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_shared_entity_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></div><div class=\"ttdoc\">Basic Entity parameters.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:132</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stats_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/stats.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">stats.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"stats_8h_source.html\">framework/stats.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;cassert&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_stats\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">tram::Stats</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_stats\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">tram::Stats::Start</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">tram::Stats::Stop</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">More...</a><br /></td></tr>\n<tr class=\"separator:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">tram::Stats::Add</a> (Resource resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">More...</a><br /></td></tr>\n<tr class=\"separator:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">tram::Stats::Remove</a> (Resource resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a9686b4d0c7f066e945be48a67719d799\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">More...</a><br /></td></tr>\n<tr class=\"separator:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1240fac658a4410cdd81f6944087a024\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">tram::Stats::Collate</a> ()</td></tr>\n<tr class=\"memdesc:a1240fac658a4410cdd81f6944087a024\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Collates all of the time statistics.  <a href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">More...</a><br /></td></tr>\n<tr class=\"separator:a1240fac658a4410cdd81f6944087a024\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">tram::Stats::GetStat</a> (Resource resource)</td></tr>\n<tr class=\"memdesc:a47a75adf92f441eaf8c99564471f028b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">More...</a><br /></td></tr>\n<tr class=\"separator:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">tram::Stats::GetStat</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the collated time of a system.  <a href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">tram::Stats::GetStatUncollated</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated time of a system.  <a href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">More...</a><br /></td></tr>\n<tr class=\"separator:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">tram::Stats::GetStatAverage</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the ammount of resource, averaged over the last second.  <a href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stats_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/stats.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">stats.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;cstddef&gt;</code><br />\n</div>\n<p><a href=\"stats_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_stats\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">tram::Stats</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_stats\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> usage statistics. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a3308525cd94517390ff06b22b9fef78e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats::Resource</a> : uint32_t { <a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">tram::Stats::RESOURCE_VRAM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">tram::Stats::RESOURCE_DRAWCALL</a>\n }</td></tr>\n<tr class=\"separator:a3308525cd94517390ff06b22b9fef78e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">tram::Stats::Start</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Starts counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">More...</a><br /></td></tr>\n<tr class=\"separator:a3b4a3c925a0c33d945546aac71b22c58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">tram::Stats::Stop</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops counting time spent on a system.  <a href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">More...</a><br /></td></tr>\n<tr class=\"separator:a254f2eae826c19cdfaa8acdc7a80310b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">tram::Stats::Add</a> (Resource resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">More...</a><br /></td></tr>\n<tr class=\"separator:a7d1692841a6345016a11319bb9d5a3aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">tram::Stats::Remove</a> (Resource resource, size_t ammount)</td></tr>\n<tr class=\"memdesc:a9686b4d0c7f066e945be48a67719d799\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Removes an ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">More...</a><br /></td></tr>\n<tr class=\"separator:a9686b4d0c7f066e945be48a67719d799\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1240fac658a4410cdd81f6944087a024\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">tram::Stats::Collate</a> ()</td></tr>\n<tr class=\"memdesc:a1240fac658a4410cdd81f6944087a024\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Collates all of the time statistics.  <a href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">More...</a><br /></td></tr>\n<tr class=\"separator:a1240fac658a4410cdd81f6944087a024\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">tram::Stats::GetStat</a> (Resource resource)</td></tr>\n<tr class=\"memdesc:a47a75adf92f441eaf8c99564471f028b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated ammount of a resource.  <a href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">More...</a><br /></td></tr>\n<tr class=\"separator:a47a75adf92f441eaf8c99564471f028b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">tram::Stats::GetStat</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the collated time of a system.  <a href=\"namespacetram_1_1_stats.html#ac6bed4088975e4651fdcffd10f2d1ddb\">More...</a><br /></td></tr>\n<tr class=\"separator:ac6bed4088975e4651fdcffd10f2d1ddb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">tram::Stats::GetStatAverage</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the ammount of resource, averaged over the last second.  <a href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a9fb3323e6726d2010fab092bc9180dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">tram::Stats::GetStatUncollated</a> (System::system_t system)</td></tr>\n<tr class=\"memdesc:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the uncollated time of a system.  <a href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">More...</a><br /></td></tr>\n<tr class=\"separator:adc7ecc593e1e434e5df1f573651e146a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/stats_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/stats.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">stats.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"stats_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_STATS_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_STATS_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"framework_2system_8h.html\">framework/system.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_stats.html\">tram::Stats</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">Resource</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">RESOURCE_VRAM</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">RESOURCE_DRAWCALL</a></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">   15</a></span>};</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">Start</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">Stop</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">Add</a>(<a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> resource, <span class=\"keywordtype\">size_t</span> ammount);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">Remove</a>(<a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> resource, <span class=\"keywordtype\">size_t</span> ammount);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span> </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">Collate</a>();</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">GetStat</a>(<a class=\"code hl_class\" href=\"classtram_1_1_resource.html\">Resource</a> resource);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">GetStat</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">GetStatAverage</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keywordtype\">double</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">GetStatUncollated</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">System::system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>}</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_STATS_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource.html\">tram::Resource</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:11</div></div>\n<div class=\"ttc\" id=\"aframework_2system_8h_html\"><div class=\"ttname\"><a href=\"framework_2system_8h.html\">system.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html\">tram::Stats</a></div><div class=\"ttdoc\">Resource usage statistics.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a1240fac658a4410cdd81f6944087a024\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a1240fac658a4410cdd81f6944087a024\">tram::Stats::Collate</a></div><div class=\"ttdeci\">void Collate()</div><div class=\"ttdoc\">Collates all of the time statistics.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:95</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a254f2eae826c19cdfaa8acdc7a80310b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a254f2eae826c19cdfaa8acdc7a80310b\">tram::Stats::Stop</a></div><div class=\"ttdeci\">void Stop(System::system_t system)</div><div class=\"ttdoc\">Stops counting time spent on a system.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a3308525cd94517390ff06b22b9fef78e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78e\">tram::Stats::Resource</a></div><div class=\"ttdeci\">Resource</div><div class=\"ttdef\"><b>Definition:</b> stats.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea30dfa36d594401ff8bc2fa42bdaef635\">tram::Stats::RESOURCE_DRAWCALL</a></div><div class=\"ttdeci\">@ RESOURCE_DRAWCALL</div><div class=\"ttdef\"><b>Definition:</b> stats.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a3308525cd94517390ff06b22b9fef78ea5562dbf309e54c68ea2c9be9659c3998\">tram::Stats::RESOURCE_VRAM</a></div><div class=\"ttdeci\">@ RESOURCE_VRAM</div><div class=\"ttdef\"><b>Definition:</b> stats.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a3b4a3c925a0c33d945546aac71b22c58\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a3b4a3c925a0c33d945546aac71b22c58\">tram::Stats::Start</a></div><div class=\"ttdeci\">void Start(System::system_t system)</div><div class=\"ttdoc\">Starts counting time spent on a system.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a47a75adf92f441eaf8c99564471f028b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a47a75adf92f441eaf8c99564471f028b\">tram::Stats::GetStat</a></div><div class=\"ttdeci\">size_t GetStat(Resource resource)</div><div class=\"ttdoc\">Returns the uncollated ammount of a resource.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:127</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a7d1692841a6345016a11319bb9d5a3aa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a7d1692841a6345016a11319bb9d5a3aa\">tram::Stats::Add</a></div><div class=\"ttdeci\">void Add(Resource resource, size_t ammount)</div><div class=\"ttdoc\">Adds an ammount of a resource.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:75</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a9686b4d0c7f066e945be48a67719d799\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a9686b4d0c7f066e945be48a67719d799\">tram::Stats::Remove</a></div><div class=\"ttdeci\">void Remove(Resource resource, size_t ammount)</div><div class=\"ttdoc\">Removes an ammount of a resource.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:85</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_a9fb3323e6726d2010fab092bc9180dd1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#a9fb3323e6726d2010fab092bc9180dd1\">tram::Stats::GetStatAverage</a></div><div class=\"ttdeci\">double GetStatAverage(System::system_t system)</div><div class=\"ttdoc\">Returns the ammount of resource, averaged over the last second.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:157</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_stats_html_adc7ecc593e1e434e5df1f573651e146a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_stats.html#adc7ecc593e1e434e5df1f573651e146a\">tram::Stats::GetStatUncollated</a></div><div class=\"ttdeci\">double GetStatUncollated(System::system_t system)</div><div class=\"ttdoc\">Returns the uncollated time of a system.</div><div class=\"ttdef\"><b>Definition:</b> stats.cpp:147</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a3480b59cb32a6f70ad1fce1626b64e40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></div><div class=\"ttdeci\">uint32_t system_t</div><div class=\"ttdef\"><b>Definition:</b> system.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/struct__test__case-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">_test_case Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"struct__test__case.html\">_test_case</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">abbrv</a></td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">fail</a>()</td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">fail_asserts</a></td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">fullname</a></td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">succ</a>()</td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a></td><td class=\"entry\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/struct__test__case.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: _test_case Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"struct__test__case-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">_test_case Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"test_8h_source.html\">test.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad2d0094cb5eb924936cb840093b1048f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">fail</a> ()</td></tr>\n<tr class=\"separator:ad2d0094cb5eb924936cb840093b1048f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11762360b352fb17f288e1f11b69efaa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">succ</a> ()</td></tr>\n<tr class=\"separator:a11762360b352fb17f288e1f11b69efaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a028f8c7752296eebd358db5357c46064\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">fullname</a></td></tr>\n<tr class=\"separator:a028f8c7752296eebd358db5357c46064\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99c028d2ac17e92affe9fec7483b98a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">abbrv</a></td></tr>\n<tr class=\"separator:a99c028d2ac17e92affe9fec7483b98a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad41c1983f63c22e6891e73714a4f7494\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a> = 0</td></tr>\n<tr class=\"separator:ad41c1983f63c22e6891e73714a4f7494\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae886ab44d5b05f5d6bbece76e2f423b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">fail_asserts</a> = 0</td></tr>\n<tr class=\"separator:ae886ab44d5b05f5d6bbece76e2f423b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad2d0094cb5eb924936cb840093b1048f\" name=\"ad2d0094cb5eb924936cb840093b1048f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2d0094cb5eb924936cb840093b1048f\">&#9670;&nbsp;</a></span>fail()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void _test_case::fail </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a11762360b352fb17f288e1f11b69efaa\" name=\"a11762360b352fb17f288e1f11b69efaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11762360b352fb17f288e1f11b69efaa\">&#9670;&nbsp;</a></span>succ()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void _test_case::succ </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a99c028d2ac17e92affe9fec7483b98a6\" name=\"a99c028d2ac17e92affe9fec7483b98a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99c028d2ac17e92affe9fec7483b98a6\">&#9670;&nbsp;</a></span>abbrv</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* _test_case::abbrv</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae886ab44d5b05f5d6bbece76e2f423b1\" name=\"ae886ab44d5b05f5d6bbece76e2f423b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae886ab44d5b05f5d6bbece76e2f423b1\">&#9670;&nbsp;</a></span>fail_asserts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _test_case::fail_asserts = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a028f8c7752296eebd358db5357c46064\" name=\"a028f8c7752296eebd358db5357c46064\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a028f8c7752296eebd358db5357c46064\">&#9670;&nbsp;</a></span>fullname</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* _test_case::fullname</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad41c1983f63c22e6891e73714a4f7494\" name=\"ad41c1983f63c22e6891e73714a4f7494\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad41c1983f63c22e6891e73714a4f7494\">&#9670;&nbsp;</a></span>totl_asserts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int _test_case::totl_asserts = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"test_8h_source.html\">test.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_a_a_b_b_tree_1_1_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::AABBTree::Node Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">Print</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_a_a_b_b_tree_1_1_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::AABBTree::Node Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_a_a_b_b_tree_1_1_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::AABBTree::Node Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"aabb_8h_source.html\">aabb.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a6ca75579cef2d995affbeced0c4f3ee4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a> () const</td></tr>\n<tr class=\"separator:a6ca75579cef2d995affbeced0c4f3ee4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef471e23e1400e7c4f466576552a5146\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">Print</a> () const</td></tr>\n<tr class=\"separator:aef471e23e1400e7c4f466576552a5146\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab4056f183eb30a7458a836feb340ca55\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a14530a4d2859154074e6d0ae9985ca80\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = nullptr</td></tr>\n<tr class=\"separator:a14530a4d2859154074e6d0ae9985ca80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d42f0f65a0e183a25d226ec696bcdc8\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a></td></tr>\n<tr class=\"separator:a4d42f0f65a0e183a25d226ec696bcdc8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab4056f183eb30a7458a836feb340ca55\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:ab4056f183eb30a7458a836feb340ca55\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57ca67dfe98a914549d55d710ef8fec6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = nullptr</td></tr>\n<tr class=\"separator:a57ca67dfe98a914549d55d710ef8fec6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70fe0c482870a3a4a60f17eaacc2be33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:a70fe0c482870a3a4a60f17eaacc2be33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93c5a016f35c05c08f454db6db446113\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a></td></tr>\n<tr class=\"separator:a93c5a016f35c05c08f454db6db446113\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76065598bad42f58e74815676b4232fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a></td></tr>\n<tr class=\"separator:a76065598bad42f58e74815676b4232fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a6ca75579cef2d995affbeced0c4f3ee4\" name=\"a6ca75579cef2d995affbeced0c4f3ee4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ca75579cef2d995affbeced0c4f3ee4\">&#9670;&nbsp;</a></span>IsLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AABBTree::Node::IsLeaf </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef471e23e1400e7c4f466576552a5146\" name=\"aef471e23e1400e7c4f466576552a5146\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef471e23e1400e7c4f466576552a5146\">&#9670;&nbsp;</a></span>Print()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::AABBTree::Node::Print </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab4056f183eb30a7458a836feb340ca55\" name=\"ab4056f183eb30a7458a836feb340ca55\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4056f183eb30a7458a836feb340ca55\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::AABBTree::Node::@87</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31d0922f21e58394dad1993d731601b3\" name=\"a31d0922f21e58394dad1993d731601b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31d0922f21e58394dad1993d731601b3\">&#9670;&nbsp;</a></span>left</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* tram::AABBTree::Node::left = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76065598bad42f58e74815676b4232fc\" name=\"a76065598bad42f58e74815676b4232fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76065598bad42f58e74815676b4232fc\">&#9670;&nbsp;</a></span>max</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::Node::max</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a93c5a016f35c05c08f454db6db446113\" name=\"a93c5a016f35c05c08f454db6db446113\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93c5a016f35c05c08f454db6db446113\">&#9670;&nbsp;</a></span>min</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::AABBTree::Node::min</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70fe0c482870a3a4a60f17eaacc2be33\" name=\"a70fe0c482870a3a4a60f17eaacc2be33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70fe0c482870a3a4a60f17eaacc2be33\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* tram::AABBTree::Node::parent = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57ca67dfe98a914549d55d710ef8fec6\" name=\"a57ca67dfe98a914549d55d710ef8fec6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57ca67dfe98a914549d55d710ef8fec6\">&#9670;&nbsp;</a></span>right</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* tram::AABBTree::Node::right = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab59c932ba14cda33cd9918d02ef074c1\" name=\"ab59c932ba14cda33cd9918d02ef074c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab59c932ba14cda33cd9918d02ef074c1\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::AABBTree::Node::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"aabb_8h_source.html\">aabb.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_animation_component_1_1_animation_playback_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::AnimationComponent::AnimationPlaybackInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">fade_ammount</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">fade_in</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">fade_out</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">fade_speed</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">interpolate</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">keyframe_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">keyframes</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">pause</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">pause_on_last_frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">repeats</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">speed</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">tram::AnimationComponent::AnimationPlaybackInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_animation_component_1_1_animation_playback_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::AnimationComponent::AnimationPlaybackInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_animation_component.html\">AnimationComponent</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html\">AnimationPlaybackInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_animation_component_1_1_animation_playback_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::AnimationComponent::AnimationPlaybackInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2animation_8h_source.html\">animation.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab1317f7c6f09824b1dc5a8df6b35bf7c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab1317f7c6f09824b1dc5a8df6b35bf7c\">repeats</a></td></tr>\n<tr class=\"separator:ab1317f7c6f09824b1dc5a8df6b35bf7c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab88da3c134852e675a0a1b0138dd6b81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ab88da3c134852e675a0a1b0138dd6b81\">weight</a></td></tr>\n<tr class=\"separator:ab88da3c134852e675a0a1b0138dd6b81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a605b9819919b636a4ec02c58bbea28d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a605b9819919b636a4ec02c58bbea28d6\">speed</a></td></tr>\n<tr class=\"separator:a605b9819919b636a4ec02c58bbea28d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada1f5f7cfa76593710d843a609d7c35b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ada1f5f7cfa76593710d843a609d7c35b\">frame</a></td></tr>\n<tr class=\"separator:ada1f5f7cfa76593710d843a609d7c35b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a393f1b21fb4bf95d0d20a99fe1b6a4c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">fade_speed</a></td></tr>\n<tr class=\"separator:a393f1b21fb4bf95d0d20a99fe1b6a4c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae085e9df26b79fc91ac3a18d469bce96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#ae085e9df26b79fc91ac3a18d469bce96\">fade_ammount</a></td></tr>\n<tr class=\"separator:ae085e9df26b79fc91ac3a18d469bce96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7456d5837fff021227866a7e713af0bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7456d5837fff021227866a7e713af0bb\">interpolate</a></td></tr>\n<tr class=\"separator:a7456d5837fff021227866a7e713af0bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a447bcffb27576df3ed62a4f8e7a1ac29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a447bcffb27576df3ed62a4f8e7a1ac29\">fade_in</a></td></tr>\n<tr class=\"separator:a447bcffb27576df3ed62a4f8e7a1ac29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a048b270710009b885b74f65c311d4585\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a048b270710009b885b74f65c311d4585\">fade_out</a></td></tr>\n<tr class=\"separator:a048b270710009b885b74f65c311d4585\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ac66228a0680599c017d9dad5bbcc6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a7ac66228a0680599c017d9dad5bbcc6c\">pause</a></td></tr>\n<tr class=\"separator:a7ac66228a0680599c017d9dad5bbcc6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cd0230ac57aa0d044f40a4f159e07da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a5cd0230ac57aa0d044f40a4f159e07da\">pause_on_last_frame</a></td></tr>\n<tr class=\"separator:a5cd0230ac57aa0d044f40a4f159e07da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46acadd400538066abb77bebaee607bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a46acadd400538066abb77bebaee607bc\">keyframes</a> [<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {nullptr}</td></tr>\n<tr class=\"separator:a46acadd400538066abb77bebaee607bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71d6f0678bda33baa5635c35df35f4e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_animation_component_1_1_animation_playback_info.html#a71d6f0678bda33baa5635c35df35f4e8\">keyframe_count</a> [<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {0}</td></tr>\n<tr class=\"separator:a71d6f0678bda33baa5635c35df35f4e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae085e9df26b79fc91ac3a18d469bce96\" name=\"ae085e9df26b79fc91ac3a18d469bce96\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae085e9df26b79fc91ac3a18d469bce96\">&#9670;&nbsp;</a></span>fade_ammount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::AnimationComponent::AnimationPlaybackInfo::fade_ammount</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a447bcffb27576df3ed62a4f8e7a1ac29\" name=\"a447bcffb27576df3ed62a4f8e7a1ac29\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a447bcffb27576df3ed62a4f8e7a1ac29\">&#9670;&nbsp;</a></span>fade_in</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::AnimationPlaybackInfo::fade_in</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a048b270710009b885b74f65c311d4585\" name=\"a048b270710009b885b74f65c311d4585\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a048b270710009b885b74f65c311d4585\">&#9670;&nbsp;</a></span>fade_out</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::AnimationPlaybackInfo::fade_out</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a393f1b21fb4bf95d0d20a99fe1b6a4c8\" name=\"a393f1b21fb4bf95d0d20a99fe1b6a4c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a393f1b21fb4bf95d0d20a99fe1b6a4c8\">&#9670;&nbsp;</a></span>fade_speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::AnimationComponent::AnimationPlaybackInfo::fade_speed</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ada1f5f7cfa76593710d843a609d7c35b\" name=\"ada1f5f7cfa76593710d843a609d7c35b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada1f5f7cfa76593710d843a609d7c35b\">&#9670;&nbsp;</a></span>frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::AnimationComponent::AnimationPlaybackInfo::frame</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7456d5837fff021227866a7e713af0bb\" name=\"a7456d5837fff021227866a7e713af0bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7456d5837fff021227866a7e713af0bb\">&#9670;&nbsp;</a></span>interpolate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::AnimationPlaybackInfo::interpolate</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71d6f0678bda33baa5635c35df35f4e8\" name=\"a71d6f0678bda33baa5635c35df35f4e8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71d6f0678bda33baa5635c35df35f4e8\">&#9670;&nbsp;</a></span>keyframe_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::AnimationComponent::AnimationPlaybackInfo::keyframe_count[<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46acadd400538066abb77bebaee607bc\" name=\"a46acadd400538066abb77bebaee607bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46acadd400538066abb77bebaee607bc\">&#9670;&nbsp;</a></span>keyframes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Render::Keyframe</a>* tram::AnimationComponent::AnimationPlaybackInfo::keyframes[<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">Render::BONE_COUNT</a>] = {nullptr}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7ac66228a0680599c017d9dad5bbcc6c\" name=\"a7ac66228a0680599c017d9dad5bbcc6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ac66228a0680599c017d9dad5bbcc6c\">&#9670;&nbsp;</a></span>pause</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::AnimationPlaybackInfo::pause</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5cd0230ac57aa0d044f40a4f159e07da\" name=\"a5cd0230ac57aa0d044f40a4f159e07da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cd0230ac57aa0d044f40a4f159e07da\">&#9670;&nbsp;</a></span>pause_on_last_frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::AnimationComponent::AnimationPlaybackInfo::pause_on_last_frame</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1317f7c6f09824b1dc5a8df6b35bf7c\" name=\"ab1317f7c6f09824b1dc5a8df6b35bf7c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1317f7c6f09824b1dc5a8df6b35bf7c\">&#9670;&nbsp;</a></span>repeats</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::AnimationComponent::AnimationPlaybackInfo::repeats</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a605b9819919b636a4ec02c58bbea28d6\" name=\"a605b9819919b636a4ec02c58bbea28d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a605b9819919b636a4ec02c58bbea28d6\">&#9670;&nbsp;</a></span>speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::AnimationComponent::AnimationPlaybackInfo::speed</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab88da3c134852e675a0a1b0138dd6b81\" name=\"ab88da3c134852e675a0a1b0138dd6b81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab88da3c134852e675a0a1b0138dd6b81\">&#9670;&nbsp;</a></span>weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::AnimationComponent::AnimationPlaybackInfo::weight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2animation_8h_source.html\">animation.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_async_1_1_resource_request-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">Async</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">ResourceRequest</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Async::ResourceRequest Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5\">callback</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea\">callback_data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2\">notification_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9\">requester</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65\">resource</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">tram::Async::ResourceRequest</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_async_1_1_resource_request.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Async::ResourceRequest Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_async.html\">Async</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html\">ResourceRequest</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_async_1_1_resource_request-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Async::ResourceRequest Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab379a8d5ddb692bc89f984e3b50b28d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">RequestNotification</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#ab379a8d5ddb692bc89f984e3b50b28d2\">notification_type</a></td></tr>\n<tr class=\"separator:ab379a8d5ddb692bc89f984e3b50b28d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd7d16241779d48e5da39b7a6de4fb65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#afd7d16241779d48e5da39b7a6de4fb65\">resource</a> = nullptr</td></tr>\n<tr class=\"separator:afd7d16241779d48e5da39b7a6de4fb65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43aa3bf1b79f3ca55a467786aaabca57\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a9273f7e0fcc9a91c49792d9ebba42ce7\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a303e76288b98f9f1cd11d326f580c7d4\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;void(*&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a18c34da06b9f3eea7875699d11781cc5\">callback</a> )(void *)</td></tr>\n<tr class=\"separator:a303e76288b98f9f1cd11d326f580c7d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58f863af5e6b8b36610b07d6bc9d24c2\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#aa5757146bd87abef32ac1f65ff1965ea\">callback_data</a></td></tr>\n<tr class=\"separator:a58f863af5e6b8b36610b07d6bc9d24c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9273f7e0fcc9a91c49792d9ebba42ce7\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a9273f7e0fcc9a91c49792d9ebba42ce7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a774e137c3a48aef90ed01ee4d18af80c\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a6d012e198b66993662a598ea69a022c9\">requester</a></td></tr>\n<tr class=\"separator:a774e137c3a48aef90ed01ee4d18af80c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43aa3bf1b79f3ca55a467786aaabca57\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a43aa3bf1b79f3ca55a467786aaabca57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5dcec7fba31fe955a878c7689bebcb5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_async_1_1_resource_request.html#a5dcec7fba31fe955a878c7689bebcb5e\">padding</a> [2]</td></tr>\n<tr class=\"separator:a5dcec7fba31fe955a878c7689bebcb5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a43aa3bf1b79f3ca55a467786aaabca57\" name=\"a43aa3bf1b79f3ca55a467786aaabca57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43aa3bf1b79f3ca55a467786aaabca57\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Async::ResourceRequest::@30</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a18c34da06b9f3eea7875699d11781cc5\" name=\"a18c34da06b9f3eea7875699d11781cc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18c34da06b9f3eea7875699d11781cc5\">&#9670;&nbsp;</a></span>callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Async::ResourceRequest::callback) (void *)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5757146bd87abef32ac1f65ff1965ea\" name=\"aa5757146bd87abef32ac1f65ff1965ea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5757146bd87abef32ac1f65ff1965ea\">&#9670;&nbsp;</a></span>callback_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Async::ResourceRequest::callback_data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab379a8d5ddb692bc89f984e3b50b28d2\" name=\"ab379a8d5ddb692bc89f984e3b50b28d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab379a8d5ddb692bc89f984e3b50b28d2\">&#9670;&nbsp;</a></span>notification_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_async.html#a3852629b110e5e57e85140bb5fe518e5\">RequestNotification</a> tram::Async::ResourceRequest::notification_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5dcec7fba31fe955a878c7689bebcb5e\" name=\"a5dcec7fba31fe955a878c7689bebcb5e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dcec7fba31fe955a878c7689bebcb5e\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Async::ResourceRequest::padding[2]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6d012e198b66993662a598ea69a022c9\" name=\"a6d012e198b66993662a598ea69a022c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d012e198b66993662a598ea69a022c9\">&#9670;&nbsp;</a></span>requester</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* tram::Async::ResourceRequest::requester</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afd7d16241779d48e5da39b7a6de4fb65\" name=\"afd7d16241779d48e5da39b7a6de4fb65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd7d16241779d48e5da39b7a6de4fb65\">&#9670;&nbsp;</a></span>resource</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_resource.html\">Resource</a>* tram::Async::ResourceRequest::resource = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"async_8cpp.html\">async.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_filter_parameters-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::FilterParameters Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">tram::Audio::FilterParameters</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">param1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">tram::Audio::FilterParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">param2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">tram::Audio::FilterParameters</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_filter_parameters.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::FilterParameters Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_filter_parameters-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::FilterParameters Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae3e26b76955919a2680af843d03241b2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#ae3e26b76955919a2680af843d03241b2\">param1</a></td></tr>\n<tr class=\"separator:ae3e26b76955919a2680af843d03241b2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9850c062a0de94c19491e7f2cf65ce1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html#a9850c062a0de94c19491e7f2cf65ce1e\">param2</a></td></tr>\n<tr class=\"separator:a9850c062a0de94c19491e7f2cf65ce1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae3e26b76955919a2680af843d03241b2\" name=\"ae3e26b76955919a2680af843d03241b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3e26b76955919a2680af843d03241b2\">&#9670;&nbsp;</a></span>param1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::FilterParameters::param1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9850c062a0de94c19491e7f2cf65ce1e\" name=\"a9850c062a0de94c19491e7f2cf65ce1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9850c062a0de94c19491e7f2cf65ce1e\">&#9670;&nbsp;</a></span>param2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::FilterParameters::param2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_sound_graph_1_1_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::SoundGraph::Node Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">tram::Audio::SoundGraph::Node</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">parameters</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">tram::Audio::SoundGraph::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">tram::Audio::SoundGraph::Node</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_sound_graph_1_1_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::SoundGraph::Node Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_audio_1_1_sound_graph.html\">SoundGraph</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::SoundGraph::Node Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0a633c6d644b35fad08de5f63dbb9e83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a0a633c6d644b35fad08de5f63dbb9e83\">position</a></td></tr>\n<tr class=\"separator:a0a633c6d644b35fad08de5f63dbb9e83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a602e0ab95181fce7095038d2c7e8cc60\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_sound_graph_1_1_node.html#a602e0ab95181fce7095038d2c7e8cc60\">parameters</a></td></tr>\n<tr class=\"separator:a602e0ab95181fce7095038d2c7e8cc60\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a602e0ab95181fce7095038d2c7e8cc60\" name=\"a602e0ab95181fce7095038d2c7e8cc60\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a602e0ab95181fce7095038d2c7e8cc60\">&#9670;&nbsp;</a></span>parameters</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_filter_parameters.html\">FilterParameters</a> tram::Audio::SoundGraph::Node::parameters</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a633c6d644b35fad08de5f63dbb9e83\" name=\"a0a633c6d644b35fad08de5f63dbb9e83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a633c6d644b35fad08de5f63dbb9e83\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::SoundGraph::Node::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2graph_8h_source.html\">graph.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_buffer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioBuffer Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">channels</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">length</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">sample_rate</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">tram::Audio::Spatial::AudioBuffer</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::AudioBuffer Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioBuffer Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a31d58d975d8c500b69f62db5d998cb4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">AudioSampleRate</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a31d58d975d8c500b69f62db5d998cb4f\">sample_rate</a></td></tr>\n<tr class=\"separator:a31d58d975d8c500b69f62db5d998cb4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa356def298534b01ba646ab533a9340f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aa356def298534b01ba646ab533a9340f\">channels</a></td></tr>\n<tr class=\"separator:aa356def298534b01ba646ab533a9340f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aedd3b42bb186f9f0902e148cb315e64c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#aedd3b42bb186f9f0902e148cb315e64c\">length</a></td></tr>\n<tr class=\"separator:aedd3b42bb186f9f0902e148cb315e64c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a88c6843050757be44715ec68be75aee7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html#a88c6843050757be44715ec68be75aee7\">data</a></td></tr>\n<tr class=\"separator:a88c6843050757be44715ec68be75aee7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa356def298534b01ba646ab533a9340f\" name=\"aa356def298534b01ba646ab533a9340f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa356def298534b01ba646ab533a9340f\">&#9670;&nbsp;</a></span>channels</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::Spatial::AudioBuffer::channels</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a88c6843050757be44715ec68be75aee7\" name=\"a88c6843050757be44715ec68be75aee7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a88c6843050757be44715ec68be75aee7\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float* tram::Audio::Spatial::AudioBuffer::data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aedd3b42bb186f9f0902e148cb315e64c\" name=\"aedd3b42bb186f9f0902e148cb315e64c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aedd3b42bb186f9f0902e148cb315e64c\">&#9670;&nbsp;</a></span>length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Audio::Spatial::AudioBuffer::length</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31d58d975d8c500b69f62db5d998cb4f\" name=\"a31d58d975d8c500b69f62db5d998cb4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31d58d975d8c500b69f62db5d998cb4f\">&#9670;&nbsp;</a></span>sample_rate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#ade3f518b6f4fc8663aa6cc3143481f92\">AudioSampleRate</a> tram::Audio::Spatial::AudioBuffer::sample_rate</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_render-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioRender Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">lock</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">paths</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">sample</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">tram::Audio::Spatial::AudioRender</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_render.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::AudioRender Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html\">AudioRender</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioRender Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae791d5a4cb90154dccd3baa41bd19442\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#ae791d5a4cb90154dccd3baa41bd19442\">lock</a></td></tr>\n<tr class=\"separator:ae791d5a4cb90154dccd3baa41bd19442\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e6693da21f0990dd89c5745b018764d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a0e6693da21f0990dd89c5745b018764d\">flags</a></td></tr>\n<tr class=\"separator:a0e6693da21f0990dd89c5745b018764d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3de86af0e9c4a8ecf0b84c74f66b815e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a3de86af0e9c4a8ecf0b84c74f66b815e\">sample</a></td></tr>\n<tr class=\"separator:a3de86af0e9c4a8ecf0b84c74f66b815e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2e3f19d4d0628de60db45e064d97212\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#aa2e3f19d4d0628de60db45e064d97212\">buffer</a></td></tr>\n<tr class=\"separator:aa2e3f19d4d0628de60db45e064d97212\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aa48cc3aaf2682ae9d82c25d9efa6b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_render.html#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">paths</a></td></tr>\n<tr class=\"separator:a2aa48cc3aaf2682ae9d82c25d9efa6b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa2e3f19d4d0628de60db45e064d97212\" name=\"aa2e3f19d4d0628de60db45e064d97212\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2e3f19d4d0628de60db45e064d97212\">&#9670;&nbsp;</a></span>buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_buffer.html\">AudioBuffer</a>* tram::Audio::Spatial::AudioRender::buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0e6693da21f0990dd89c5745b018764d\" name=\"a0e6693da21f0990dd89c5745b018764d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e6693da21f0990dd89c5745b018764d\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Audio::Spatial::AudioRender::flags</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae791d5a4cb90154dccd3baa41bd19442\" name=\"ae791d5a4cb90154dccd3baa41bd19442\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae791d5a4cb90154dccd3baa41bd19442\">&#9670;&nbsp;</a></span>lock</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_spinlock.html\">Spinlock</a> tram::Audio::Spatial::AudioRender::lock</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2aa48cc3aaf2682ae9d82c25d9efa6b8\" name=\"a2aa48cc3aaf2682ae9d82c25d9efa6b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2aa48cc3aaf2682ae9d82c25d9efa6b8\">&#9670;&nbsp;</a></span>paths</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a>* tram::Audio::Spatial::AudioRender::paths</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3de86af0e9c4a8ecf0b84c74f66b815e\" name=\"a3de86af0e9c4a8ecf0b84c74f66b815e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3de86af0e9c4a8ecf0b84c74f66b815e\">&#9670;&nbsp;</a></span>sample</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::Spatial::AudioRender::sample</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_source-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioSource Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">last_path</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">paths</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">result_paths</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">tram::Audio::Spatial::AudioSource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_audio_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::AudioSource Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html\">AudioSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::AudioSource Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a45a1264a5f87e8e4cbc767b3511adfc6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a45a1264a5f87e8e4cbc767b3511adfc6\">position</a></td></tr>\n<tr class=\"separator:a45a1264a5f87e8e4cbc767b3511adfc6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2307e10b58bfd5e4226f76a8fd562630\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a2307e10b58bfd5e4226f76a8fd562630\">paths</a></td></tr>\n<tr class=\"separator:a2307e10b58bfd5e4226f76a8fd562630\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9b6559e0ee3ca945a46bcf95ca60d25e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a9b6559e0ee3ca945a46bcf95ca60d25e\">result_paths</a></td></tr>\n<tr class=\"separator:a9b6559e0ee3ca945a46bcf95ca60d25e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8768b3b7278d9cc7cf1401a56b9ee64f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_audio_source.html#a8768b3b7278d9cc7cf1401a56b9ee64f\">last_path</a></td></tr>\n<tr class=\"separator:a8768b3b7278d9cc7cf1401a56b9ee64f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8768b3b7278d9cc7cf1401a56b9ee64f\" name=\"a8768b3b7278d9cc7cf1401a56b9ee64f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8768b3b7278d9cc7cf1401a56b9ee64f\">&#9670;&nbsp;</a></span>last_path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Audio::Spatial::AudioSource::last_path</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2307e10b58bfd5e4226f76a8fd562630\" name=\"a2307e10b58bfd5e4226f76a8fd562630\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2307e10b58bfd5e4226f76a8fd562630\">&#9670;&nbsp;</a></span>paths</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a>* tram::Audio::Spatial::AudioSource::paths</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a45a1264a5f87e8e4cbc767b3511adfc6\" name=\"a45a1264a5f87e8e4cbc767b3511adfc6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45a1264a5f87e8e4cbc767b3511adfc6\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::AudioSource::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9b6559e0ee3ca945a46bcf95ca60d25e\" name=\"a9b6559e0ee3ca945a46bcf95ca60d25e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b6559e0ee3ca945a46bcf95ca60d25e\">&#9670;&nbsp;</a></span>result_paths</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a>* tram::Audio::Spatial::AudioSource::result_paths</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathExplorationResult Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">cycles_since_last_hit</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">force</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">sampling_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">tram::Audio::Spatial::PathExplorationResult</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::PathExplorationResult Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html\">PathExplorationResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathExplorationResult Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a43985ab3f8a3450cb1f6d9c732c2b9e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a43985ab3f8a3450cb1f6d9c732c2b9e7\">force</a></td></tr>\n<tr class=\"separator:a43985ab3f8a3450cb1f6d9c732c2b9e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46a0473cea400f336d28d65b5625cd7d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#a46a0473cea400f336d28d65b5625cd7d\">sampling_direction</a></td></tr>\n<tr class=\"separator:a46a0473cea400f336d28d65b5625cd7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aebc3bf33c046d283ef6fe0b83a8e73ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_exploration_result.html#aebc3bf33c046d283ef6fe0b83a8e73ff\">cycles_since_last_hit</a></td></tr>\n<tr class=\"separator:aebc3bf33c046d283ef6fe0b83a8e73ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aebc3bf33c046d283ef6fe0b83a8e73ff\" name=\"aebc3bf33c046d283ef6fe0b83a8e73ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aebc3bf33c046d283ef6fe0b83a8e73ff\">&#9670;&nbsp;</a></span>cycles_since_last_hit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::Spatial::PathExplorationResult::cycles_since_last_hit</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43985ab3f8a3450cb1f6d9c732c2b9e7\" name=\"a43985ab3f8a3450cb1f6d9c732c2b9e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43985ab3f8a3450cb1f6d9c732c2b9e7\">&#9670;&nbsp;</a></span>force</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathExplorationResult::force</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a46a0473cea400f336d28d65b5625cd7d\" name=\"a46a0473cea400f336d28d65b5625cd7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46a0473cea400f336d28d65b5625cd7d\">&#9670;&nbsp;</a></span>sampling_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathExplorationResult::sampling_direction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathFromAudioSource Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">force</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">reflections</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">source_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">tram::Audio::Spatial::PathFromAudioSource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::PathFromAudioSource Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html\">PathFromAudioSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathFromAudioSource Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad8d0951179c5050779f6c44c83dc3ba5\"><td class=\"memItemLeft\" >struct {</td></tr>\n<tr class=\"memitem:a06536c7da235d4f68905a1d75b1c1b85\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a5f809d617ba9af7d80992d569868ccb7\">point</a></td></tr>\n<tr class=\"separator:a06536c7da235d4f68905a1d75b1c1b85\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab359c87dd5e09bc5083ae3863d69b073\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a0daad3712479c354367bbb338368f6a7\">direction</a></td></tr>\n<tr class=\"separator:ab359c87dd5e09bc5083ae3863d69b073\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd444161c8c5567ce59c61d5c953a790\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a224a92306d48694e4256b258d1ad0c2b\">force</a></td></tr>\n<tr class=\"separator:acd444161c8c5567ce59c61d5c953a790\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8d0951179c5050779f6c44c83dc3ba5\"><td class=\"memItemLeft\" valign=\"top\">}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#ad8d0951179c5050779f6c44c83dc3ba5\">reflections</a> [<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>]</td></tr>\n<tr class=\"separator:ad8d0951179c5050779f6c44c83dc3ba5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2cc3ae9172c3a920dab2553009c900d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_from_audio_source.html#a2cc3ae9172c3a920dab2553009c900d6\">source_direction</a></td></tr>\n<tr class=\"separator:a2cc3ae9172c3a920dab2553009c900d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0daad3712479c354367bbb338368f6a7\" name=\"a0daad3712479c354367bbb338368f6a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0daad3712479c354367bbb338368f6a7\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathFromAudioSource::direction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a224a92306d48694e4256b258d1ad0c2b\" name=\"a224a92306d48694e4256b258d1ad0c2b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a224a92306d48694e4256b258d1ad0c2b\">&#9670;&nbsp;</a></span>force</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathFromAudioSource::force</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f809d617ba9af7d80992d569868ccb7\" name=\"a5f809d617ba9af7d80992d569868ccb7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f809d617ba9af7d80992d569868ccb7\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathFromAudioSource::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8d0951179c5050779f6c44c83dc3ba5\" name=\"ad8d0951179c5050779f6c44c83dc3ba5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8d0951179c5050779f6c44c83dc3ba5\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Audio::Spatial::PathFromAudioSource::reflections[<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2cc3ae9172c3a920dab2553009c900d6\" name=\"a2cc3ae9172c3a920dab2553009c900d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2cc3ae9172c3a920dab2553009c900d6\">&#9670;&nbsp;</a></span>source_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathFromAudioSource::source_direction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathRenderingInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">distance_delay</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">force</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">panning</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">panning_delay</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">tram::Audio::Spatial::PathRenderingInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::PathRenderingInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html\">PathRenderingInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathRenderingInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab2e46bddf62459ce6f74591478c1f09b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ab2e46bddf62459ce6f74591478c1f09b\">force</a></td></tr>\n<tr class=\"separator:ab2e46bddf62459ce6f74591478c1f09b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78cb51ec6fb70e03023f07e2e73a4151\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a78cb51ec6fb70e03023f07e2e73a4151\">panning</a></td></tr>\n<tr class=\"separator:a78cb51ec6fb70e03023f07e2e73a4151\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25cccaf4eef89dd7b557744b85e0c4a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#a25cccaf4eef89dd7b557744b85e0c4a5\">panning_delay</a></td></tr>\n<tr class=\"separator:a25cccaf4eef89dd7b557744b85e0c4a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2caac1002a91fa0d362a3edbf3cb45e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_rendering_info.html#ae2caac1002a91fa0d362a3edbf3cb45e\">distance_delay</a></td></tr>\n<tr class=\"separator:ae2caac1002a91fa0d362a3edbf3cb45e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae2caac1002a91fa0d362a3edbf3cb45e\" name=\"ae2caac1002a91fa0d362a3edbf3cb45e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2caac1002a91fa0d362a3edbf3cb45e\">&#9670;&nbsp;</a></span>distance_delay</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Spatial::PathRenderingInfo::distance_delay</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2e46bddf62459ce6f74591478c1f09b\" name=\"ab2e46bddf62459ce6f74591478c1f09b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2e46bddf62459ce6f74591478c1f09b\">&#9670;&nbsp;</a></span>force</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathRenderingInfo::force</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a78cb51ec6fb70e03023f07e2e73a4151\" name=\"a78cb51ec6fb70e03023f07e2e73a4151\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78cb51ec6fb70e03023f07e2e73a4151\">&#9670;&nbsp;</a></span>panning</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathRenderingInfo::panning</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25cccaf4eef89dd7b557744b85e0c4a5\" name=\"a25cccaf4eef89dd7b557744b85e0c4a5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25cccaf4eef89dd7b557744b85e0c4a5\">&#9670;&nbsp;</a></span>panning_delay</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::Spatial::PathRenderingInfo::panning_delay</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_segment-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html\">PathSegment</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathSegment Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html\">tram::Audio::Spatial::PathSegment</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html#afc0a615f7b21de4f0646d391c2ae35d7\">segment_end</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html\">tram::Audio::Spatial::PathSegment</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html#ad42e0c68415ac08b6f0e24fc2d0bcea2\">segment_start</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html\">tram::Audio::Spatial::PathSegment</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_segment.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::PathSegment Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html\">PathSegment</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathSegment Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad42e0c68415ac08b6f0e24fc2d0bcea2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html#ad42e0c68415ac08b6f0e24fc2d0bcea2\">segment_start</a></td></tr>\n<tr class=\"separator:ad42e0c68415ac08b6f0e24fc2d0bcea2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc0a615f7b21de4f0646d391c2ae35d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_segment.html#afc0a615f7b21de4f0646d391c2ae35d7\">segment_end</a></td></tr>\n<tr class=\"separator:afc0a615f7b21de4f0646d391c2ae35d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"afc0a615f7b21de4f0646d391c2ae35d7\" name=\"afc0a615f7b21de4f0646d391c2ae35d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc0a615f7b21de4f0646d391c2ae35d7\">&#9670;&nbsp;</a></span>segment_end</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathSegment::segment_end</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad42e0c68415ac08b6f0e24fc2d0bcea2\" name=\"ad42e0c68415ac08b6f0e24fc2d0bcea2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad42e0c68415ac08b6f0e24fc2d0bcea2\">&#9670;&nbsp;</a></span>segment_start</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathSegment::segment_start</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"pathtracer_8cpp.html\">pathtracer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathTracingResult Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">arrival_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">cycles_since_last_hit</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">force</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">listener_ideal_angle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">reflection_absorption</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">reflection_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">reflections</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">source_ideal_angle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">tram::Audio::Spatial::PathTracingResult</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::Spatial::PathTracingResult Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">Spatial</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html\">PathTracingResult</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::Spatial::PathTracingResult Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a493b960cdc2495f703f392b83e2ef657\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a493b960cdc2495f703f392b83e2ef657\">force</a></td></tr>\n<tr class=\"separator:a493b960cdc2495f703f392b83e2ef657\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf8c49606dda008b43d5035691a72549\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#abf8c49606dda008b43d5035691a72549\">distance</a></td></tr>\n<tr class=\"separator:abf8c49606dda008b43d5035691a72549\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4f0cda1076cd190d46c1a0f03e9f9f44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a4f0cda1076cd190d46c1a0f03e9f9f44\">cycles_since_last_hit</a></td></tr>\n<tr class=\"separator:a4f0cda1076cd190d46c1a0f03e9f9f44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a241ad9bff06f84bc1924722fa97ef5ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a241ad9bff06f84bc1924722fa97ef5ec\">reflection_count</a></td></tr>\n<tr class=\"separator:a241ad9bff06f84bc1924722fa97ef5ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aab4ef60ba584a8d10ab12d5fe2674b32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aab4ef60ba584a8d10ab12d5fe2674b32\">arrival_direction</a></td></tr>\n<tr class=\"separator:aab4ef60ba584a8d10ab12d5fe2674b32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad239e98f2f77864eb10988803b8729d3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#ad239e98f2f77864eb10988803b8729d3\">reflection_absorption</a></td></tr>\n<tr class=\"separator:ad239e98f2f77864eb10988803b8729d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa24833c62159206914afc05979470fa8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa24833c62159206914afc05979470fa8\">listener_ideal_angle</a></td></tr>\n<tr class=\"separator:aa24833c62159206914afc05979470fa8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a217efabbc7b81c3fe4ca8ac67526863b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a217efabbc7b81c3fe4ca8ac67526863b\">source_ideal_angle</a></td></tr>\n<tr class=\"separator:a217efabbc7b81c3fe4ca8ac67526863b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3558215b661cecc8bb1ec9bb2654898\"><td class=\"memItemLeft\" >struct {</td></tr>\n<tr class=\"memitem:a7b9da058e0b7997a6352f52aaea47890\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#a56f99496bd44366e4bca18e6ca954952\">point</a></td></tr>\n<tr class=\"separator:a7b9da058e0b7997a6352f52aaea47890\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3558215b661cecc8bb1ec9bb2654898\"><td class=\"memItemLeft\" valign=\"top\">}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_audio_1_1_spatial_1_1_path_tracing_result.html#aa3558215b661cecc8bb1ec9bb2654898\">reflections</a> [<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">SOURCE_DEPTH_LIMIT</a> *<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>]</td></tr>\n<tr class=\"separator:aa3558215b661cecc8bb1ec9bb2654898\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aab4ef60ba584a8d10ab12d5fe2674b32\" name=\"aab4ef60ba584a8d10ab12d5fe2674b32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4ef60ba584a8d10ab12d5fe2674b32\">&#9670;&nbsp;</a></span>arrival_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathTracingResult::arrival_direction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4f0cda1076cd190d46c1a0f03e9f9f44\" name=\"a4f0cda1076cd190d46c1a0f03e9f9f44\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f0cda1076cd190d46c1a0f03e9f9f44\">&#9670;&nbsp;</a></span>cycles_since_last_hit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::Spatial::PathTracingResult::cycles_since_last_hit</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf8c49606dda008b43d5035691a72549\" name=\"abf8c49606dda008b43d5035691a72549\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf8c49606dda008b43d5035691a72549\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathTracingResult::distance</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a493b960cdc2495f703f392b83e2ef657\" name=\"a493b960cdc2495f703f392b83e2ef657\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a493b960cdc2495f703f392b83e2ef657\">&#9670;&nbsp;</a></span>force</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathTracingResult::force</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa24833c62159206914afc05979470fa8\" name=\"aa24833c62159206914afc05979470fa8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa24833c62159206914afc05979470fa8\">&#9670;&nbsp;</a></span>listener_ideal_angle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathTracingResult::listener_ideal_angle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56f99496bd44366e4bca18e6ca954952\" name=\"a56f99496bd44366e4bca18e6ca954952\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56f99496bd44366e4bca18e6ca954952\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathTracingResult::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad239e98f2f77864eb10988803b8729d3\" name=\"ad239e98f2f77864eb10988803b8729d3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad239e98f2f77864eb10988803b8729d3\">&#9670;&nbsp;</a></span>reflection_absorption</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Audio::Spatial::PathTracingResult::reflection_absorption</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a241ad9bff06f84bc1924722fa97ef5ec\" name=\"a241ad9bff06f84bc1924722fa97ef5ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a241ad9bff06f84bc1924722fa97ef5ec\">&#9670;&nbsp;</a></span>reflection_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::Spatial::PathTracingResult::reflection_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa3558215b661cecc8bb1ec9bb2654898\" name=\"aa3558215b661cecc8bb1ec9bb2654898\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3558215b661cecc8bb1ec9bb2654898\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Audio::Spatial::PathTracingResult::reflections[<a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#a470153ad5cab64ede6d4a517710c7aee\">SOURCE_DEPTH_LIMIT</a> * <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html#aa61124c29ea3a00d8124d9c20dd8a4af\">LISTENER_DEPTH_LIMIT</a>]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a217efabbc7b81c3fe4ca8ac67526863b\" name=\"a217efabbc7b81c3fe4ca8ac67526863b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a217efabbc7b81c3fe4ca8ac67526863b\">&#9670;&nbsp;</a></span>source_ideal_angle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Audio::Spatial::PathTracingResult::source_ideal_angle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/spatial/<a class=\"el\" href=\"definitions_8h_source.html\">definitions.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1audiobuffer__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::audiobuffer_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">al_buffer_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">al_buffers</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">tram::Audio::audiobuffer_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1audiobuffer__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::audiobuffer_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html\">audiobuffer_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1audiobuffer__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::audiobuffer_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle.  \n <a href=\"structtram_1_1_audio_1_1audiobuffer__t.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5b671586a4e4497e3752ce1519d525a7\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:af6c8fc370a5d4b54b71ce8edc5d3eccb\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:abb7f2e8e1e66d328523ee083864a96a9\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;uint32_t *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#af57828b299513dfcf833b82c420376ad\">al_buffers</a></td></tr>\n<tr class=\"separator:abb7f2e8e1e66d328523ee083864a96a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af35fb75e9cefa3efd978bb1203ac9ec1\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;int32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#a6885d64a1de9cf00a1c92e833342717c\">al_buffer_count</a></td></tr>\n<tr class=\"separator:af35fb75e9cefa3efd978bb1203ac9ec1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6c8fc370a5d4b54b71ce8edc5d3eccb\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:af6c8fc370a5d4b54b71ce8edc5d3eccb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3806d01cbd59bf1a2a82687017d44017\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiobuffer__t.html#aa6218cbba41fa39bd964c556ffe4b756\">generic</a></td></tr>\n<tr class=\"separator:a3806d01cbd59bf1a2a82687017d44017\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b671586a4e4497e3752ce1519d525a7\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a5b671586a4e4497e3752ce1519d525a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> buffer handle. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5b671586a4e4497e3752ce1519d525a7\" name=\"a5b671586a4e4497e3752ce1519d525a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b671586a4e4497e3752ce1519d525a7\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Audio::audiobuffer_t::@3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6885d64a1de9cf00a1c92e833342717c\" name=\"a6885d64a1de9cf00a1c92e833342717c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6885d64a1de9cf00a1c92e833342717c\">&#9670;&nbsp;</a></span>al_buffer_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Audio::audiobuffer_t::al_buffer_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af57828b299513dfcf833b82c420376ad\" name=\"af57828b299513dfcf833b82c420376ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af57828b299513dfcf833b82c420376ad\">&#9670;&nbsp;</a></span>al_buffers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t* tram::Audio::audiobuffer_t::al_buffers</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6218cbba41fa39bd964c556ffe4b756\" name=\"aa6218cbba41fa39bd964c556ffe4b756\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6218cbba41fa39bd964c556ffe4b756\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Audio::audiobuffer_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1audiosource__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::audiosource_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">al_source</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">tram::Audio::audiosource_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_audio_1_1audiosource__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Audio::audiosource_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">Audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html\">audiosource_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_audio_1_1audiosource__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Audio::audiosource_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle.  \n <a href=\"structtram_1_1_audio_1_1audiosource__t.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a451b1943645c13b775d0c1277370663b\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a796253723730d32fc93253d5f7178dcd\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a329f753b9c5fe9317e2bc22bc493b3c7\">al_source</a></td></tr>\n<tr class=\"separator:a796253723730d32fc93253d5f7178dcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6640a7daa73e8a3113a2d87eaa5d2cd0\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_audio_1_1audiosource__t.html#a8cb8354dafecc4ccb01a425de4ed202e\">generic</a></td></tr>\n<tr class=\"separator:a6640a7daa73e8a3113a2d87eaa5d2cd0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a451b1943645c13b775d0c1277370663b\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a451b1943645c13b775d0c1277370663b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> source handle. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a451b1943645c13b775d0c1277370663b\" name=\"a451b1943645c13b775d0c1277370663b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a451b1943645c13b775d0c1277370663b\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Audio::audiosource_t::@1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a329f753b9c5fe9317e2bc22bc493b3c7\" name=\"a329f753b9c5fe9317e2bc22bc493b3c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a329f753b9c5fe9317e2bc22bc493b3c7\">&#9670;&nbsp;</a></span>al_source</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Audio::audiosource_t::al_source</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cb8354dafecc4ccb01a425de4ed202e\" name=\"a8cb8354dafecc4ccb01a425de4ed202e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cb8354dafecc4ccb01a425de4ed202e\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Audio::audiosource_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/<a class=\"el\" href=\"audio_2audio_8h_source.html\">audio.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_edge-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Edge Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_edge.html\">tram::Edge</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">from</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_edge.html\">tram::Edge</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">to</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_edge.html\">tram::Edge</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_edge.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Edge Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_edge.html\">Edge</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_edge-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Edge Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad6343a5ac259ec2941d5aabd5a06908e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_edge.html#ad6343a5ac259ec2941d5aabd5a06908e\">from</a></td></tr>\n<tr class=\"separator:ad6343a5ac259ec2941d5aabd5a06908e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b4b8a5653bb798802c9319ed8374cee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_edge.html#a3b4b8a5653bb798802c9319ed8374cee\">to</a></td></tr>\n<tr class=\"separator:a3b4b8a5653bb798802c9319ed8374cee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad6343a5ac259ec2941d5aabd5a06908e\" name=\"ad6343a5ac259ec2941d5aabd5a06908e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6343a5ac259ec2941d5aabd5a06908e\">&#9670;&nbsp;</a></span>from</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Edge::from</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b4b8a5653bb798802c9319ed8374cee\" name=\"a3b4b8a5653bb798802c9319ed8374cee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b4b8a5653bb798802c9319ed8374cee\">&#9670;&nbsp;</a></span>to</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Edge::to</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_entity_1_1_field_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Entity::FieldInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">field_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">field_id</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">field_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">tram::Entity::FieldInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_entity_1_1_field_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Entity::FieldInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">FieldInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_entity_1_1_field_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Entity::FieldInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">entity.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:afc597660b771bd0d90e3e1c4b5fd5558\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#afc597660b771bd0d90e3e1c4b5fd5558\">field_id</a></td></tr>\n<tr class=\"separator:afc597660b771bd0d90e3e1c4b5fd5558\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a37fb586096567f2c3da11d696f119fd0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#a37fb586096567f2c3da11d696f119fd0\">field_type</a></td></tr>\n<tr class=\"separator:a37fb586096567f2c3da11d696f119fd0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab70f9293bd89845c16aeb3f1d44901c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html#ab70f9293bd89845c16aeb3f1d44901c3\">field_flags</a></td></tr>\n<tr class=\"separator:ab70f9293bd89845c16aeb3f1d44901c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab70f9293bd89845c16aeb3f1d44901c3\" name=\"ab70f9293bd89845c16aeb3f1d44901c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab70f9293bd89845c16aeb3f1d44901c3\">&#9670;&nbsp;</a></span>field_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Entity::FieldInfo::field_flags</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc597660b771bd0d90e3e1c4b5fd5558\" name=\"afc597660b771bd0d90e3e1c4b5fd5558\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc597660b771bd0d90e3e1c4b5fd5558\">&#9670;&nbsp;</a></span>field_id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Entity::FieldInfo::field_id</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a37fb586096567f2c3da11d696f119fd0\" name=\"a37fb586096567f2c3da11d696f119fd0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a37fb586096567f2c3da11d696f119fd0\">&#9670;&nbsp;</a></span>field_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> tram::Entity::FieldInfo::field_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entity_8h_source.html\">entity.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_entity_type_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">EntityTypeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::EntityTypeInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f\">constructor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2\">destructor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81\">fieldcount</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8\">fields</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">tram::EntityTypeInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_entity_type_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::EntityTypeInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html\">EntityTypeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_entity_type_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::EntityTypeInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a6f02871ebb50c56b606338eb05d0e11f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a6f02871ebb50c56b606338eb05d0e11f\">constructor</a> )(const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;) = nullptr</td></tr>\n<tr class=\"separator:a6f02871ebb50c56b606338eb05d0e11f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4106992bfbeb9121dee27f03bc67fc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#aa4106992bfbeb9121dee27f03bc67fc2\">destructor</a> )(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *) = nullptr</td></tr>\n<tr class=\"separator:aa4106992bfbeb9121dee27f03bc67fc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24f9612233dc930fe6f85d1e6e001fd8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">Entity::FieldInfo</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a24f9612233dc930fe6f85d1e6e001fd8\">fields</a> = nullptr</td></tr>\n<tr class=\"separator:a24f9612233dc930fe6f85d1e6e001fd8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e9c84b465297f05ccb785d6b9f26e81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_entity_type_info.html#a4e9c84b465297f05ccb785d6b9f26e81\">fieldcount</a> = 0</td></tr>\n<tr class=\"separator:a4e9c84b465297f05ccb785d6b9f26e81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6f02871ebb50c56b606338eb05d0e11f\" name=\"a6f02871ebb50c56b606338eb05d0e11f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f02871ebb50c56b606338eb05d0e11f\">&#9670;&nbsp;</a></span>constructor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(* tram::EntityTypeInfo::constructor) (const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4106992bfbeb9121dee27f03bc67fc2\" name=\"aa4106992bfbeb9121dee27f03bc67fc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4106992bfbeb9121dee27f03bc67fc2\">&#9670;&nbsp;</a></span>destructor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::EntityTypeInfo::destructor) (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e9c84b465297f05ccb785d6b9f26e81\" name=\"a4e9c84b465297f05ccb785d6b9f26e81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e9c84b465297f05ccb785d6b9f26e81\">&#9670;&nbsp;</a></span>fieldcount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::EntityTypeInfo::fieldcount = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24f9612233dc930fe6f85d1e6e001fd8\" name=\"a24f9612233dc930fe6f85d1e6e001fd8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24f9612233dc930fe6f85d1e6e001fd8\">&#9670;&nbsp;</a></span>fields</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"structtram_1_1_entity_1_1_field_info.html\">Entity::FieldInfo</a>* tram::EntityTypeInfo::fields = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entity_8cpp.html\">entity.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_event-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Event Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a>(event_t type, EntityComponent *component)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a912991992322aab15d777e22848332cb\">AddListener</a>(event_t type, Entity *entity)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a817b7223a8818863e27dba112ade5930\">AddListener</a>(event_t type, void *data, void(*handler)(Event &amp;event, void *data))</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a5610bb4c11e4610b9b13ea2301e14f39\">AddListener</a>(event_t type, void(*handler)(Event &amp;event))</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35\">AllocateData</a>(size_t ammount)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">AllocateData</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">AllocateData</a>(const T &amp;data)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">CURSORPOS</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">data_int</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">data_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">Dispatch</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">FRAME</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">GetLast</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">GetName</a>(event_t type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">GetType</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">KEYCHAR</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">KEYDOWN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">KEYPRESS</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">KEYUP</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">LAST_EVENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">LOOK_AT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">NONE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">Post</a>(const Event &amp;event)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">poster</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">Register</a>(const char *name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">RemoveListener</a>(listener_t listener_id)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">SELECTED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">subtype</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">TICK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_event.html\">tram::Event</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_event.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Event Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_event.html\">Event</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_event-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Event Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data.  \n <a href=\"structtram_1_1_event.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a569d6673fa83d2a5ec86b3d0c36c8765\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">Type</a> : event_t { <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\">NONE</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\">KEYPRESS</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\">KEYDOWN</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\">KEYUP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\">KEYCHAR</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\">CURSORPOS</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\">FRAME</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\">TICK</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\">SELECTED</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\">LOOK_AT</a>\n, <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\">LAST_EVENT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a569d6673fa83d2a5ec86b3d0c36c8765\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a71beec0c04550efde19bc6e76e5b209d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">Register</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a71beec0c04550efde19bc6e76e5b209d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new event type.  <a href=\"structtram_1_1_event.html#a71beec0c04550efde19bc6e76e5b209d\">More...</a><br /></td></tr>\n<tr class=\"separator:a71beec0c04550efde19bc6e76e5b209d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af584b523e077a59452a91153334e75cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">GetType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:af584b523e077a59452a91153334e75cd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the event_t associated with a given name.  <a href=\"structtram_1_1_event.html#af584b523e077a59452a91153334e75cd\">More...</a><br /></td></tr>\n<tr class=\"separator:af584b523e077a59452a91153334e75cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee54dc533e45e7e43fb0ada6308f8d80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">GetName</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>)</td></tr>\n<tr class=\"memdesc:aee54dc533e45e7e43fb0ada6308f8d80\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the name that was associated with a given event_t.  <a href=\"structtram_1_1_event.html#aee54dc533e45e7e43fb0ada6308f8d80\">More...</a><br /></td></tr>\n<tr class=\"separator:aee54dc533e45e7e43fb0ada6308f8d80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a181fc927e0b983c6d1af3d0a1ed4ed15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">GetLast</a> ()</td></tr>\n<tr class=\"memdesc:a181fc927e0b983c6d1af3d0a1ed4ed15\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the last event_t plus one.  <a href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\">More...</a><br /></td></tr>\n<tr class=\"separator:a181fc927e0b983c6d1af3d0a1ed4ed15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2964632c82d23cc106fb57530210c774\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">Post</a> (const <a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"memdesc:a2964632c82d23cc106fb57530210c774\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adds an event to the event queue.  <a href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\">More...</a><br /></td></tr>\n<tr class=\"separator:a2964632c82d23cc106fb57530210c774\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d1f19efb6907f2fd3eccc398dd2a9f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">Dispatch</a> ()</td></tr>\n<tr class=\"memdesc:a1d1f19efb6907f2fd3eccc398dd2a9f3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Dispatches events from the event queue.  <a href=\"structtram_1_1_event.html#a1d1f19efb6907f2fd3eccc398dd2a9f3\">More...</a><br /></td></tr>\n<tr class=\"separator:a1d1f19efb6907f2fd3eccc398dd2a9f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1a090951d04d0b72b10020a273d8f05\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">AddListener</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *component)</td></tr>\n<tr class=\"memdesc:af1a090951d04d0b72b10020a273d8f05\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a listener.  <a href=\"structtram_1_1_event.html#af1a090951d04d0b72b10020a273d8f05\">More...</a><br /></td></tr>\n<tr class=\"separator:af1a090951d04d0b72b10020a273d8f05\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a912991992322aab15d777e22848332cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a912991992322aab15d777e22848332cb\">AddListener</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, <a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *entity)</td></tr>\n<tr class=\"memdesc:a912991992322aab15d777e22848332cb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a listener.  <a href=\"structtram_1_1_event.html#a912991992322aab15d777e22848332cb\">More...</a><br /></td></tr>\n<tr class=\"separator:a912991992322aab15d777e22848332cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a817b7223a8818863e27dba112ade5930\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a817b7223a8818863e27dba112ade5930\">AddListener</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, void *<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>, void(*handler)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event, void *<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>))</td></tr>\n<tr class=\"memdesc:a817b7223a8818863e27dba112ade5930\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a listener.  <a href=\"structtram_1_1_event.html#a817b7223a8818863e27dba112ade5930\">More...</a><br /></td></tr>\n<tr class=\"separator:a817b7223a8818863e27dba112ade5930\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5610bb4c11e4610b9b13ea2301e14f39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a5610bb4c11e4610b9b13ea2301e14f39\">AddListener</a> (<a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> <a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a>, void(*handler)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event))</td></tr>\n<tr class=\"memdesc:a5610bb4c11e4610b9b13ea2301e14f39\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a listener.  <a href=\"structtram_1_1_event.html#a5610bb4c11e4610b9b13ea2301e14f39\">More...</a><br /></td></tr>\n<tr class=\"separator:a5610bb4c11e4610b9b13ea2301e14f39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a092d09e0b63277a8fbc77e92c0a61be5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">RemoveListener</a> (<a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> listener_id)</td></tr>\n<tr class=\"memdesc:a092d09e0b63277a8fbc77e92c0a61be5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deregisters a listener.  <a href=\"structtram_1_1_event.html#a092d09e0b63277a8fbc77e92c0a61be5\">More...</a><br /></td></tr>\n<tr class=\"separator:a092d09e0b63277a8fbc77e92c0a61be5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0dda15a570f291dc9efd56058027f35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35\">AllocateData</a> (size_t ammount)</td></tr>\n<tr class=\"memdesc:ae0dda15a570f291dc9efd56058027f35\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates space for event data.  <a href=\"structtram_1_1_event.html#ae0dda15a570f291dc9efd56058027f35\">More...</a><br /></td></tr>\n<tr class=\"separator:ae0dda15a570f291dc9efd56058027f35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0e33b78a59445000e7fbe10f97e32305\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a0e33b78a59445000e7fbe10f97e32305\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a0e33b78a59445000e7fbe10f97e32305\">AllocateData</a> ()</td></tr>\n<tr class=\"separator:a0e33b78a59445000e7fbe10f97e32305\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acdd37976a6d83ee51522e128feb72039\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:acdd37976a6d83ee51522e128feb72039\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#acdd37976a6d83ee51522e128feb72039\">AllocateData</a> (const T &amp;<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>)</td></tr>\n<tr class=\"separator:acdd37976a6d83ee51522e128feb72039\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a26cc77ee3a08567434f0b475a148007a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">type</a></td></tr>\n<tr class=\"memdesc:a26cc77ee3a08567434f0b475a148007a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type of the event.  <a href=\"structtram_1_1_event.html#a26cc77ee3a08567434f0b475a148007a\">More...</a><br /></td></tr>\n<tr class=\"separator:a26cc77ee3a08567434f0b475a148007a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab499b6c8117176c1c2d782faf862412e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">subtype</a></td></tr>\n<tr class=\"memdesc:ab499b6c8117176c1c2d782faf862412e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Arbitrary event subtype.  <a href=\"structtram_1_1_event.html#ab499b6c8117176c1c2d782faf862412e\">More...</a><br /></td></tr>\n<tr class=\"separator:ab499b6c8117176c1c2d782faf862412e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a92418dc8036094cf309758831c14deed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_event.html#a92418dc8036094cf309758831c14deed\">poster</a></td></tr>\n<tr class=\"separator:a92418dc8036094cf309758831c14deed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a942f8f77ebf95eae95e20c7216865f21\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a2a923151148c784dea677e10d2da6654\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a> = nullptr</td></tr>\n<tr class=\"separator:a2a923151148c784dea677e10d2da6654\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a910e01fd34d04068bc493417eae0f0\"><td class=\"memItemLeft\" >&#160;&#160;&#160;int32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#a6f907880059f690671dda82db28439f5\">data_int</a></td></tr>\n<tr class=\"separator:a9a910e01fd34d04068bc493417eae0f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2a1c9e3394bbe78ee261e9d3ab5480a\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_event.html#ac2c8fdcc08e45feb8b90b6899e69e319\">data_value</a></td></tr>\n<tr class=\"separator:ae2a1c9e3394bbe78ee261e9d3ab5480a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a942f8f77ebf95eae95e20c7216865f21\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a942f8f77ebf95eae95e20c7216865f21\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"structtram_1_1_event.html\" title=\"Event data.\">Event</a> data. </p>\n<p >Fill in the struct fields and then use <a class=\"el\" href=\"structtram_1_1_event.html#a2964632c82d23cc106fb57530210c774\" title=\"Adds an event to the event queue.\">Event::Post()</a> to send it out to listeners. </p>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a569d6673fa83d2a5ec86b3d0c36c8765\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a569d6673fa83d2a5ec86b3d0c36c8765\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_event.html#a569d6673fa83d2a5ec86b3d0c36c8765\">tram::Event::Type</a> : <a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765aded002c9efb73820628351359fd03c77\"></a>NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765aebce1b240f10af279a3528b2e1a66be1\"></a>KEYPRESS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765aa052e9950f1d2312d34d82e91687e393\"></a>KEYDOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a6af1fe1cbf5d703f660915d9d3132d03\"></a>KEYUP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a666e52b2727737f31e9817000fed8201\"></a>KEYCHAR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a84ac6f8e04f99e15f7ca86f4e40ccffd\"></a>CURSORPOS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a8feafca698ba40be02d682358b638efa\"></a>FRAME&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a5f4725790d09920d33c0121683f8e436\"></a>TICK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a95f4763a21669c2b729ec12f7e6970c6\"></a>SELECTED&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765ae40a6fc2fbfe23e1efe200dfea7e1c5d\"></a>LOOK_AT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\" name=\"a569d6673fa83d2a5ec86b3d0c36c8765a6ff49b678610c7c9535811b1457b65f8\"></a>LAST_EVENT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a912991992322aab15d777e22848332cb\" name=\"a912991992322aab15d777e22848332cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a912991992322aab15d777e22848332cb\">&#9670;&nbsp;</a></span>AddListener() <span class=\"overload\">[1/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::Event::AddListener </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a listener. </p>\n\n</div>\n</div>\n<a id=\"af1a090951d04d0b72b10020a273d8f05\" name=\"af1a090951d04d0b72b10020a273d8f05\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1a090951d04d0b72b10020a273d8f05\">&#9670;&nbsp;</a></span>AddListener() <span class=\"overload\">[2/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::Event::AddListener </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;</td>\n          <td class=\"paramname\"><em>component</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a listener. </p>\n\n</div>\n</div>\n<a id=\"a817b7223a8818863e27dba112ade5930\" name=\"a817b7223a8818863e27dba112ade5930\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a817b7223a8818863e27dba112ade5930\">&#9670;&nbsp;</a></span>AddListener() <span class=\"overload\">[3/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::Event::AddListener </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void *&#160;</td>\n          <td class=\"paramname\"><em>data</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event, void *<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\">data</a>)&#160;</td>\n          <td class=\"paramname\"><em>handler</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a listener. </p>\n\n</div>\n</div>\n<a id=\"a5610bb4c11e4610b9b13ea2301e14f39\" name=\"a5610bb4c11e4610b9b13ea2301e14f39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5610bb4c11e4610b9b13ea2301e14f39\">&#9670;&nbsp;</a></span>AddListener() <span class=\"overload\">[4/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::Event::AddListener </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">void(*)(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)&#160;</td>\n          <td class=\"paramname\"><em>handler</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a listener. </p>\n\n</div>\n</div>\n<a id=\"a0e33b78a59445000e7fbe10f97e32305\" name=\"a0e33b78a59445000e7fbe10f97e32305\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e33b78a59445000e7fbe10f97e32305\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static T * tram::Event::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acdd37976a6d83ee51522e128feb72039\" name=\"acdd37976a6d83ee51522e128feb72039\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acdd37976a6d83ee51522e128feb72039\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static T * tram::Event::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>data</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0dda15a570f291dc9efd56058027f35\" name=\"ae0dda15a570f291dc9efd56058027f35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0dda15a570f291dc9efd56058027f35\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void * tram::Event::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>ammount</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allocates space for event data. </p>\n<p >This allocation is useful for storing the additional data (<a class=\"el\" href=\"structtram_1_1_event.html#a877f4911d3811c501fdb4841aae78d10\" title=\"Pointer to arbitrary data.\">Event::data</a> pointer), for events, since all allocated space will be cleared once all events have been dispatched. </p><dl class=\"section note\"><dt>Note</dt><dd>Only store POD data types in the allocated memory. Either that, or prepare for memory leaks. Altough an IDE might complain that a value_t is not POD, you can ignore the warning. Overwriting a value_t shouldn't cause memory leaks. </dd></dl>\n\n</div>\n</div>\n<a id=\"a1d1f19efb6907f2fd3eccc398dd2a9f3\" name=\"a1d1f19efb6907f2fd3eccc398dd2a9f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1f19efb6907f2fd3eccc398dd2a9f3\">&#9670;&nbsp;</a></span>Dispatch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Event::Dispatch </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Dispatches events from the event queue. </p>\n\n</div>\n</div>\n<a id=\"a181fc927e0b983c6d1af3d0a1ed4ed15\" name=\"a181fc927e0b983c6d1af3d0a1ed4ed15\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a181fc927e0b983c6d1af3d0a1ed4ed15\">&#9670;&nbsp;</a></span>GetLast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> tram::Event::GetLast </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the last event_t plus one. </p>\n<p >Useful for iterating over all registered events, i.e. in a <code>while (++event &lt; <a class=\"el\" href=\"structtram_1_1_event.html#a181fc927e0b983c6d1af3d0a1ed4ed15\" title=\"Returns the last event_t plus one.\">Event::GetLast()</a>);</code> or a similar loop. </p>\n\n</div>\n</div>\n<a id=\"aee54dc533e45e7e43fb0ada6308f8d80\" name=\"aee54dc533e45e7e43fb0ada6308f8d80\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee54dc533e45e7e43fb0ada6308f8d80\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Event::GetName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the name that was associated with a given event_t. </p>\n\n</div>\n</div>\n<a id=\"af584b523e077a59452a91153334e75cd\" name=\"af584b523e077a59452a91153334e75cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af584b523e077a59452a91153334e75cd\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> tram::Event::GetType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the event_t associated with a given name. </p>\n\n</div>\n</div>\n<a id=\"a2964632c82d23cc106fb57530210c774\" name=\"a2964632c82d23cc106fb57530210c774\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2964632c82d23cc106fb57530210c774\">&#9670;&nbsp;</a></span>Post()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Event::Post </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>event</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Adds an event to the event queue. </p>\n\n</div>\n</div>\n<a id=\"a71beec0c04550efde19bc6e76e5b209d\" name=\"a71beec0c04550efde19bc6e76e5b209d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71beec0c04550efde19bc6e76e5b209d\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a0183b475d47925143ca46259ec594d90\">event_t</a> tram::Event::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new event type. </p>\n\n</div>\n</div>\n<a id=\"a092d09e0b63277a8fbc77e92c0a61be5\" name=\"a092d09e0b63277a8fbc77e92c0a61be5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a092d09e0b63277a8fbc77e92c0a61be5\">&#9670;&nbsp;</a></span>RemoveListener()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Event::RemoveListener </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td>\n          <td class=\"paramname\"><em>listener_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Deregisters a listener. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a942f8f77ebf95eae95e20c7216865f21\" name=\"a942f8f77ebf95eae95e20c7216865f21\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a942f8f77ebf95eae95e20c7216865f21\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Event::@38</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a877f4911d3811c501fdb4841aae78d10\" name=\"a877f4911d3811c501fdb4841aae78d10\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a877f4911d3811c501fdb4841aae78d10\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Event::data = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pointer to arbitrary data. </p>\n<p >Can be set to a nullptr. Some event types have specific data, e.g. structs or other types that they need their data pointers to be pointing to. For your own event types, you can use this pointer for whatever purpose you want. If uncertain, set this to a nullptr. </p>\n\n</div>\n</div>\n<a id=\"a6f907880059f690671dda82db28439f5\" name=\"a6f907880059f690671dda82db28439f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f907880059f690671dda82db28439f5\">&#9670;&nbsp;</a></span>data_int</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Event::data_int</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Arbitrary data integer. </p>\n\n</div>\n</div>\n<a id=\"ac2c8fdcc08e45feb8b90b6899e69e319\" name=\"ac2c8fdcc08e45feb8b90b6899e69e319\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2c8fdcc08e45feb8b90b6899e69e319\">&#9670;&nbsp;</a></span>data_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Event::data_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pointer to a value_t. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/event.html\">https://racenis.github.io/tram-sdk/documentation/framework/event.html</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a92418dc8036094cf309758831c14deed\" name=\"a92418dc8036094cf309758831c14deed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92418dc8036094cf309758831c14deed\">&#9670;&nbsp;</a></span>poster</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> tram::Event::poster</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab499b6c8117176c1c2d782faf862412e\" name=\"ab499b6c8117176c1c2d782faf862412e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab499b6c8117176c1c2d782faf862412e\">&#9670;&nbsp;</a></span>subtype</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Event::subtype</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Arbitrary event subtype. </p>\n<p >Some event types have subtypes with specific semantics, but if you create your own event types, you can use the subtype field for anything. </p>\n\n</div>\n</div>\n<a id=\"a26cc77ee3a08567434f0b475a148007a\" name=\"a26cc77ee3a08567434f0b475a148007a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26cc77ee3a08567434f0b475a148007a\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Event::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Type of the event. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"event_8h_source.html\">event.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"event_8cpp.html\">event.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_bag-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">AttributeBag</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeBag Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a86981fd690b75eb07e9c49f40d7e7d15\">ApplyBoost</a>(const AttributeBoost &amp;boost)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a0133d589e85beed1c70b12773cc3c4a2\">attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abf20d806bb3d1fed92b60cffddd666cf\">boosts</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a678e9a3217183c393947c843a8f77069\">ExpireBoosts</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#ac008d2be33ccf5e9228b94688bdb8418\">GetAttribute</a>(attribute type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abcf7587aba6eaa06b64cc88c12284dec\">GetBaseAttribute</a>(attribute type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a11da0b05effc13a1852fafc1159f4675\">HasAttribute</a>(attribute type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#ac7c0f99d4182305784bc34003f37b942\">RemoveBoost</a>(const AttributeBoost &amp;boost)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a04b952b7f67b258100bdc5478cc982eb\">RemoveBoosts</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#afa57de7ec1ca90b44c12973645ccd372\">SetBaseAttribute</a>(attribute type, const AttributeInstance &amp;new_attrib)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abf17b796a0324aebacf80b463d1e83c0\">Tick</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">tram::Ext::Design::AttributeBag</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_bag.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::AttributeBag Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html\">AttributeBag</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeBag Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac008d2be33ccf5e9228b94688bdb8418\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#ac008d2be33ccf5e9228b94688bdb8418\">GetAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> type)</td></tr>\n<tr class=\"separator:ac008d2be33ccf5e9228b94688bdb8418\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abcf7587aba6eaa06b64cc88c12284dec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abcf7587aba6eaa06b64cc88c12284dec\">GetBaseAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> type)</td></tr>\n<tr class=\"separator:abcf7587aba6eaa06b64cc88c12284dec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa57de7ec1ca90b44c12973645ccd372\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#afa57de7ec1ca90b44c12973645ccd372\">SetBaseAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> type, const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a> &amp;new_attrib)</td></tr>\n<tr class=\"separator:afa57de7ec1ca90b44c12973645ccd372\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a11da0b05effc13a1852fafc1159f4675\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a11da0b05effc13a1852fafc1159f4675\">HasAttribute</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> type)</td></tr>\n<tr class=\"separator:a11da0b05effc13a1852fafc1159f4675\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a04b952b7f67b258100bdc5478cc982eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a04b952b7f67b258100bdc5478cc982eb\">RemoveBoosts</a> ()</td></tr>\n<tr class=\"separator:a04b952b7f67b258100bdc5478cc982eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678e9a3217183c393947c843a8f77069\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a678e9a3217183c393947c843a8f77069\">ExpireBoosts</a> ()</td></tr>\n<tr class=\"separator:a678e9a3217183c393947c843a8f77069\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86981fd690b75eb07e9c49f40d7e7d15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a86981fd690b75eb07e9c49f40d7e7d15\">ApplyBoost</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &amp;boost)</td></tr>\n<tr class=\"separator:a86981fd690b75eb07e9c49f40d7e7d15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7c0f99d4182305784bc34003f37b942\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#ac7c0f99d4182305784bc34003f37b942\">RemoveBoost</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &amp;boost)</td></tr>\n<tr class=\"separator:ac7c0f99d4182305784bc34003f37b942\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf17b796a0324aebacf80b463d1e83c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abf17b796a0324aebacf80b463d1e83c0\">Tick</a> ()</td></tr>\n<tr class=\"separator:abf17b796a0324aebacf80b463d1e83c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0133d589e85beed1c70b12773cc3c4a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#a0133d589e85beed1c70b12773cc3c4a2\">attributes</a></td></tr>\n<tr class=\"separator:a0133d589e85beed1c70b12773cc3c4a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abf20d806bb3d1fed92b60cffddd666cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_bag.html#abf20d806bb3d1fed92b60cffddd666cf\">boosts</a></td></tr>\n<tr class=\"separator:abf20d806bb3d1fed92b60cffddd666cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a86981fd690b75eb07e9c49f40d7e7d15\" name=\"a86981fd690b75eb07e9c49f40d7e7d15\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86981fd690b75eb07e9c49f40d7e7d15\">&#9670;&nbsp;</a></span>ApplyBoost()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::ApplyBoost </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>boost</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a678e9a3217183c393947c843a8f77069\" name=\"a678e9a3217183c393947c843a8f77069\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a678e9a3217183c393947c843a8f77069\">&#9670;&nbsp;</a></span>ExpireBoosts()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::ExpireBoosts </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac008d2be33ccf5e9228b94688bdb8418\" name=\"ac008d2be33ccf5e9228b94688bdb8418\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac008d2be33ccf5e9228b94688bdb8418\">&#9670;&nbsp;</a></span>GetAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeBag::GetAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abcf7587aba6eaa06b64cc88c12284dec\" name=\"abcf7587aba6eaa06b64cc88c12284dec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcf7587aba6eaa06b64cc88c12284dec\">&#9670;&nbsp;</a></span>GetBaseAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a> &amp; tram::Ext::Design::AttributeBag::GetBaseAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a11da0b05effc13a1852fafc1159f4675\" name=\"a11da0b05effc13a1852fafc1159f4675\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11da0b05effc13a1852fafc1159f4675\">&#9670;&nbsp;</a></span>HasAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeBag::HasAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac7c0f99d4182305784bc34003f37b942\" name=\"ac7c0f99d4182305784bc34003f37b942\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7c0f99d4182305784bc34003f37b942\">&#9670;&nbsp;</a></span>RemoveBoost()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::RemoveBoost </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>boost</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04b952b7f67b258100bdc5478cc982eb\" name=\"a04b952b7f67b258100bdc5478cc982eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04b952b7f67b258100bdc5478cc982eb\">&#9670;&nbsp;</a></span>RemoveBoosts()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::RemoveBoosts </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa57de7ec1ca90b44c12973645ccd372\" name=\"afa57de7ec1ca90b44c12973645ccd372\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa57de7ec1ca90b44c12973645ccd372\">&#9670;&nbsp;</a></span>SetBaseAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::SetBaseAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>new_attrib</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf17b796a0324aebacf80b463d1e83c0\" name=\"abf17b796a0324aebacf80b463d1e83c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf17b796a0324aebacf80b463d1e83c0\">&#9670;&nbsp;</a></span>Tick()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::AttributeBag::Tick </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0133d589e85beed1c70b12773cc3c4a2\" name=\"a0133d589e85beed1c70b12773cc3c4a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0133d589e85beed1c70b12773cc3c4a2\">&#9670;&nbsp;</a></span>attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a>&gt; tram::Ext::Design::AttributeBag::attributes</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf20d806bb3d1fed92b60cffddd666cf\" name=\"abf20d806bb3d1fed92b60cffddd666cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf20d806bb3d1fed92b60cffddd666cf\">&#9670;&nbsp;</a></span>boosts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a>&gt; tram::Ext::Design::AttributeBag::boosts</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_boost-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeBoost Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a383c31d25159477f09c7d7046a5b2055\">boost</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#ac3f916a5d822377c0d635408296cbb20\">boost_multiply</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a31c52d07ff366f384d564b16c2830acc\">boost_once</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a078e74ed65449494af36b92d4b38a341\">expires</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a657d1df7e43bd408ae0cb3923935ed1a\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">tram::Ext::Design::AttributeBoost</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_boost.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::AttributeBoost Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeBoost Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a657d1df7e43bd408ae0cb3923935ed1a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a657d1df7e43bd408ae0cb3923935ed1a\">type</a></td></tr>\n<tr class=\"separator:a657d1df7e43bd408ae0cb3923935ed1a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a078e74ed65449494af36b92d4b38a341\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a078e74ed65449494af36b92d4b38a341\">expires</a></td></tr>\n<tr class=\"separator:a078e74ed65449494af36b92d4b38a341\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a383c31d25159477f09c7d7046a5b2055\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a383c31d25159477f09c7d7046a5b2055\">boost</a></td></tr>\n<tr class=\"separator:a383c31d25159477f09c7d7046a5b2055\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3f916a5d822377c0d635408296cbb20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#ac3f916a5d822377c0d635408296cbb20\">boost_multiply</a></td></tr>\n<tr class=\"separator:ac3f916a5d822377c0d635408296cbb20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31c52d07ff366f384d564b16c2830acc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html#a31c52d07ff366f384d564b16c2830acc\">boost_once</a></td></tr>\n<tr class=\"separator:a31c52d07ff366f384d564b16c2830acc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a383c31d25159477f09c7d7046a5b2055\" name=\"a383c31d25159477f09c7d7046a5b2055\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a383c31d25159477f09c7d7046a5b2055\">&#9670;&nbsp;</a></span>boost</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeBoost::boost</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3f916a5d822377c0d635408296cbb20\" name=\"ac3f916a5d822377c0d635408296cbb20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3f916a5d822377c0d635408296cbb20\">&#9670;&nbsp;</a></span>boost_multiply</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeBoost::boost_multiply</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31c52d07ff366f384d564b16c2830acc\" name=\"a31c52d07ff366f384d564b16c2830acc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31c52d07ff366f384d564b16c2830acc\">&#9670;&nbsp;</a></span>boost_once</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeBoost::boost_once</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a078e74ed65449494af36b92d4b38a341\" name=\"a078e74ed65449494af36b92d4b38a341\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a078e74ed65449494af36b92d4b38a341\">&#9670;&nbsp;</a></span>expires</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::AttributeBoost::expires</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a657d1df7e43bd408ae0cb3923935ed1a\" name=\"a657d1df7e43bd408ae0cb3923935ed1a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a657d1df7e43bd408ae0cb3923935ed1a\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> tram::Ext::Design::AttributeBoost::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_definition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeDefinition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#ac065264766cee735b89b5ef71640ce5d\">integer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a454dee338101b20e689d856e900c4463\">linear_boost</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a4c038ce39db5556b1d0d7f1d5dc49a3b\">max_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a712cfea3b7cb164ba0208d613a8c1732\">min_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a059a3ddea889ba1745e2a6c4b079aaf4\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a41dd67695ddd54ba9c9537f5d18a4d10\">Register</a>(const AttributeDefinition &amp;def)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#acb2a11225bf53117c7d0ea27dae25dba\">Replace</a>(attribute attrib, const AttributeDefinition &amp;def)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a21431dc3d7f5b6b7d9ca262b9a929b0f\">stack_boost</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">tram::Ext::Design::AttributeDefinition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_definition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::AttributeDefinition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeDefinition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a41dd67695ddd54ba9c9537f5d18a4d10\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a41dd67695ddd54ba9c9537f5d18a4d10\">Register</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a> &amp;def)</td></tr>\n<tr class=\"separator:a41dd67695ddd54ba9c9537f5d18a4d10\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb2a11225bf53117c7d0ea27dae25dba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#acb2a11225bf53117c7d0ea27dae25dba\">Replace</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> attrib, const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a> &amp;def)</td></tr>\n<tr class=\"separator:acb2a11225bf53117c7d0ea27dae25dba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a059a3ddea889ba1745e2a6c4b079aaf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a059a3ddea889ba1745e2a6c4b079aaf4\">name</a></td></tr>\n<tr class=\"separator:a059a3ddea889ba1745e2a6c4b079aaf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a712cfea3b7cb164ba0208d613a8c1732\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a712cfea3b7cb164ba0208d613a8c1732\">min_value</a></td></tr>\n<tr class=\"separator:a712cfea3b7cb164ba0208d613a8c1732\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c038ce39db5556b1d0d7f1d5dc49a3b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a4c038ce39db5556b1d0d7f1d5dc49a3b\">max_value</a></td></tr>\n<tr class=\"separator:a4c038ce39db5556b1d0d7f1d5dc49a3b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac065264766cee735b89b5ef71640ce5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#ac065264766cee735b89b5ef71640ce5d\">integer</a></td></tr>\n<tr class=\"separator:ac065264766cee735b89b5ef71640ce5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a454dee338101b20e689d856e900c4463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a454dee338101b20e689d856e900c4463\">linear_boost</a></td></tr>\n<tr class=\"separator:a454dee338101b20e689d856e900c4463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a21431dc3d7f5b6b7d9ca262b9a929b0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html#a21431dc3d7f5b6b7d9ca262b9a929b0f\">stack_boost</a></td></tr>\n<tr class=\"separator:a21431dc3d7f5b6b7d9ca262b9a929b0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a41dd67695ddd54ba9c9537f5d18a4d10\" name=\"a41dd67695ddd54ba9c9537f5d18a4d10\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41dd67695ddd54ba9c9537f5d18a4d10\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> tram::Ext::Design::AttributeDefinition::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>def</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb2a11225bf53117c7d0ea27dae25dba\" name=\"acb2a11225bf53117c7d0ea27dae25dba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb2a11225bf53117c7d0ea27dae25dba\">&#9670;&nbsp;</a></span>Replace()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static void tram::Ext::Design::AttributeDefinition::Replace </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td>\n          <td class=\"paramname\"><em>attrib</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_definition.html\">AttributeDefinition</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>def</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac065264766cee735b89b5ef71640ce5d\" name=\"ac065264766cee735b89b5ef71640ce5d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac065264766cee735b89b5ef71640ce5d\">&#9670;&nbsp;</a></span>integer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeDefinition::integer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a454dee338101b20e689d856e900c4463\" name=\"a454dee338101b20e689d856e900c4463\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a454dee338101b20e689d856e900c4463\">&#9670;&nbsp;</a></span>linear_boost</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeDefinition::linear_boost</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4c038ce39db5556b1d0d7f1d5dc49a3b\" name=\"a4c038ce39db5556b1d0d7f1d5dc49a3b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c038ce39db5556b1d0d7f1d5dc49a3b\">&#9670;&nbsp;</a></span>max_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeDefinition::max_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a712cfea3b7cb164ba0208d613a8c1732\" name=\"a712cfea3b7cb164ba0208d613a8c1732\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a712cfea3b7cb164ba0208d613a8c1732\">&#9670;&nbsp;</a></span>min_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeDefinition::min_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a059a3ddea889ba1745e2a6c4b079aaf4\" name=\"a059a3ddea889ba1745e2a6c4b079aaf4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a059a3ddea889ba1745e2a6c4b079aaf4\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::AttributeDefinition::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a21431dc3d7f5b6b7d9ca262b9a929b0f\" name=\"a21431dc3d7f5b6b7d9ca262b9a929b0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21431dc3d7f5b6b7d9ca262b9a929b0f\">&#9670;&nbsp;</a></span>stack_boost</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::AttributeDefinition::stack_boost</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_instance-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeInstance Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">tram::Ext::Design::AttributeInstance</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#adc3d3feb556a54827ad49c0127690a19\">max_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">tram::Ext::Design::AttributeInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#aafa0efe6ba93be6aefa1461d57e02879\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">tram::Ext::Design::AttributeInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#ae3255408aace55d9282ad8818e1ad658\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">tram::Ext::Design::AttributeInstance</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_attribute_instance.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::AttributeInstance Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html\">AttributeInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::AttributeInstance Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aafa0efe6ba93be6aefa1461d57e02879\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#aafa0efe6ba93be6aefa1461d57e02879\">type</a></td></tr>\n<tr class=\"separator:aafa0efe6ba93be6aefa1461d57e02879\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3255408aace55d9282ad8818e1ad658\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#ae3255408aace55d9282ad8818e1ad658\">value</a></td></tr>\n<tr class=\"separator:ae3255408aace55d9282ad8818e1ad658\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adc3d3feb556a54827ad49c0127690a19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_instance.html#adc3d3feb556a54827ad49c0127690a19\">max_value</a></td></tr>\n<tr class=\"separator:adc3d3feb556a54827ad49c0127690a19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"adc3d3feb556a54827ad49c0127690a19\" name=\"adc3d3feb556a54827ad49c0127690a19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc3d3feb556a54827ad49c0127690a19\">&#9670;&nbsp;</a></span>max_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeInstance::max_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafa0efe6ba93be6aefa1461d57e02879\" name=\"aafa0efe6ba93be6aefa1461d57e02879\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafa0efe6ba93be6aefa1461d57e02879\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#af3d599a52793eec9defdf8f703006906\">attribute</a> tram::Ext::Design::AttributeInstance::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae3255408aace55d9282ad8818e1ad658\" name=\"ae3255408aace55d9282ad8818e1ad658\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3255408aace55d9282ad8818e1ad658\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Design::AttributeInstance::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_character_class-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">CharacterClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::CharacterClass Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">tram::Ext::Design::CharacterClass</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html#a145bc059c723ebddea4247f7789ff46d\">Register</a>(name_t name, const CharacterClass &amp;def)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">tram::Ext::Design::CharacterClass</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_character_class.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::CharacterClass Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">CharacterClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_character_class-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::CharacterClass Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a145bc059c723ebddea4247f7789ff46d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html#a145bc059c723ebddea4247f7789ff46d\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name, const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">CharacterClass</a> &amp;def)</td></tr>\n<tr class=\"separator:a145bc059c723ebddea4247f7789ff46d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a145bc059c723ebddea4247f7789ff46d\" name=\"a145bc059c723ebddea4247f7789ff46d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a145bc059c723ebddea4247f7789ff46d\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::CharacterClass::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_character_class.html\">CharacterClass</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>def</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_action-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">DialogAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogAction Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a78cddb23a3d90c082f589e3e5d75aa1d\">item_class</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ab2406d6a8a5f2aee1c1e3936f380fca6\">item_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ab918fe25bb0367355ddc8d39465525bf\">message</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4baaddf8bafaab882dca94004241cf1cc9b\">PLAYER_GIVE_ITEM</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4ba99dd9f5b003415d728bc7eaecd052b5c\">PLAYER_TAKE_ITEM</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\">quest</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4bad5fd30874b39087b2f4857a7eb0ebb86\">QUEST_ADVANCE_STAGE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4ba2793da1dd6098a514818d4c337f5f886\">QUEST_SET_STAGE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a1964c8663fe50459b32f8bff11eabbe3\">stage</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac5e4908b1a62262baf3d99ef2a859275\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a140b265c8ac7479acd73d5747b24cf34\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">tram::Ext::Design::DialogAction</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_action.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::DialogAction Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">DialogAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogAction Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ac6a8bf6a028fbd2f67dcacc701bdbf4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">Type</a> { <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4ba2793da1dd6098a514818d4c337f5f886\">QUEST_SET_STAGE</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4bad5fd30874b39087b2f4857a7eb0ebb86\">QUEST_ADVANCE_STAGE</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4baaddf8bafaab882dca94004241cf1cc9b\">PLAYER_GIVE_ITEM</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4ba99dd9f5b003415d728bc7eaecd052b5c\">PLAYER_TAKE_ITEM</a>\n }</td></tr>\n<tr class=\"separator:ac6a8bf6a028fbd2f67dcacc701bdbf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac5e4908b1a62262baf3d99ef2a859275\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac5e4908b1a62262baf3d99ef2a859275\">type</a></td></tr>\n<tr class=\"separator:ac5e4908b1a62262baf3d99ef2a859275\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\">quest</a></td></tr>\n<tr class=\"separator:a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1964c8663fe50459b32f8bff11eabbe3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a1964c8663fe50459b32f8bff11eabbe3\">stage</a></td></tr>\n<tr class=\"separator:a1964c8663fe50459b32f8bff11eabbe3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78cddb23a3d90c082f589e3e5d75aa1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a78cddb23a3d90c082f589e3e5d75aa1d\">item_class</a></td></tr>\n<tr class=\"separator:a78cddb23a3d90c082f589e3e5d75aa1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2406d6a8a5f2aee1c1e3936f380fca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ab2406d6a8a5f2aee1c1e3936f380fca6\">item_count</a></td></tr>\n<tr class=\"separator:ab2406d6a8a5f2aee1c1e3936f380fca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab918fe25bb0367355ddc8d39465525bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ab918fe25bb0367355ddc8d39465525bf\">message</a></td></tr>\n<tr class=\"separator:ab918fe25bb0367355ddc8d39465525bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a140b265c8ac7479acd73d5747b24cf34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#a140b265c8ac7479acd73d5747b24cf34\">value</a></td></tr>\n<tr class=\"separator:a140b265c8ac7479acd73d5747b24cf34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"ac6a8bf6a028fbd2f67dcacc701bdbf4b\" name=\"ac6a8bf6a028fbd2f67dcacc701bdbf4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">tram::Ext::Design::DialogAction::Type</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac6a8bf6a028fbd2f67dcacc701bdbf4ba2793da1dd6098a514818d4c337f5f886\" name=\"ac6a8bf6a028fbd2f67dcacc701bdbf4ba2793da1dd6098a514818d4c337f5f886\"></a>QUEST_SET_STAGE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac6a8bf6a028fbd2f67dcacc701bdbf4bad5fd30874b39087b2f4857a7eb0ebb86\" name=\"ac6a8bf6a028fbd2f67dcacc701bdbf4bad5fd30874b39087b2f4857a7eb0ebb86\"></a>QUEST_ADVANCE_STAGE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac6a8bf6a028fbd2f67dcacc701bdbf4baaddf8bafaab882dca94004241cf1cc9b\" name=\"ac6a8bf6a028fbd2f67dcacc701bdbf4baaddf8bafaab882dca94004241cf1cc9b\"></a>PLAYER_GIVE_ITEM&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac6a8bf6a028fbd2f67dcacc701bdbf4ba99dd9f5b003415d728bc7eaecd052b5c\" name=\"ac6a8bf6a028fbd2f67dcacc701bdbf4ba99dd9f5b003415d728bc7eaecd052b5c\"></a>PLAYER_TAKE_ITEM&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a78cddb23a3d90c082f589e3e5d75aa1d\" name=\"a78cddb23a3d90c082f589e3e5d75aa1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78cddb23a3d90c082f589e3e5d75aa1d\">&#9670;&nbsp;</a></span>item_class</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogAction::item_class</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2406d6a8a5f2aee1c1e3936f380fca6\" name=\"ab2406d6a8a5f2aee1c1e3936f380fca6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2406d6a8a5f2aee1c1e3936f380fca6\">&#9670;&nbsp;</a></span>item_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::DialogAction::item_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab918fe25bb0367355ddc8d39465525bf\" name=\"ab918fe25bb0367355ddc8d39465525bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab918fe25bb0367355ddc8d39465525bf\">&#9670;&nbsp;</a></span>message</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogAction::message</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\" name=\"a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7dcf8135a2a8ec4dfdaeb9d830d6c0ba\">&#9670;&nbsp;</a></span>quest</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogAction::quest</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1964c8663fe50459b32f8bff11eabbe3\" name=\"a1964c8663fe50459b32f8bff11eabbe3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1964c8663fe50459b32f8bff11eabbe3\">&#9670;&nbsp;</a></span>stage</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogAction::stage</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac5e4908b1a62262baf3d99ef2a859275\" name=\"ac5e4908b1a62262baf3d99ef2a859275\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5e4908b1a62262baf3d99ef2a859275\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html#ac6a8bf6a028fbd2f67dcacc701bdbf4b\">Type</a> tram::Ext::Design::DialogAction::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a140b265c8ac7479acd73d5747b24cf34\" name=\"a140b265c8ac7479acd73d5747b24cf34\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a140b265c8ac7479acd73d5747b24cf34\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Ext::Design::DialogAction::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_condition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">DialogCondition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogCondition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0ac5cad3fd596284827943be9721fc8733\">ENTITY_QUERY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a7154267cbc9a8f09804df230faecb437\">PLAYER_HAS_ITEM</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a25aec784ae02b90fdfcccf5bb4c2ffac\">query</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#af5aec721e85ccf12b9b3b3ae3985fc27\">quest</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a1a1df24dc51f91cb6bc8b49654455085\">QUEST_STAGE_LESSTHAN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a529ef84b996bf6a5f3b0d5b5094aa5c5\">QUEST_STAGE_MORETHAN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#ad9b5e80d042690b559bdb6f1040c4c0f\">stage</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a8a1e693aca83708b72843dce6e2d5153\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a5ba1ae1750fa97ac110dc95beb9dcac2\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">tram::Ext::Design::DialogCondition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_condition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::DialogCondition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">DialogCondition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogCondition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:aff29f07a1c675b4ebd00ae1b154b28c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0\">Type</a> { <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a529ef84b996bf6a5f3b0d5b5094aa5c5\">QUEST_STAGE_MORETHAN</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a1a1df24dc51f91cb6bc8b49654455085\">QUEST_STAGE_LESSTHAN</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0a7154267cbc9a8f09804df230faecb437\">PLAYER_HAS_ITEM</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0ac5cad3fd596284827943be9721fc8733\">ENTITY_QUERY</a>\n }</td></tr>\n<tr class=\"separator:aff29f07a1c675b4ebd00ae1b154b28c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8a1e693aca83708b72843dce6e2d5153\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a8a1e693aca83708b72843dce6e2d5153\">type</a></td></tr>\n<tr class=\"separator:a8a1e693aca83708b72843dce6e2d5153\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5aec721e85ccf12b9b3b3ae3985fc27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#af5aec721e85ccf12b9b3b3ae3985fc27\">quest</a></td></tr>\n<tr class=\"separator:af5aec721e85ccf12b9b3b3ae3985fc27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9b5e80d042690b559bdb6f1040c4c0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#ad9b5e80d042690b559bdb6f1040c4c0f\">stage</a></td></tr>\n<tr class=\"separator:ad9b5e80d042690b559bdb6f1040c4c0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a25aec784ae02b90fdfcccf5bb4c2ffac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a25aec784ae02b90fdfcccf5bb4c2ffac\">query</a></td></tr>\n<tr class=\"separator:a25aec784ae02b90fdfcccf5bb4c2ffac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ba1ae1750fa97ac110dc95beb9dcac2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#a5ba1ae1750fa97ac110dc95beb9dcac2\">value</a></td></tr>\n<tr class=\"separator:a5ba1ae1750fa97ac110dc95beb9dcac2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"aff29f07a1c675b4ebd00ae1b154b28c0\" name=\"aff29f07a1c675b4ebd00ae1b154b28c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff29f07a1c675b4ebd00ae1b154b28c0\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0\">tram::Ext::Design::DialogCondition::Type</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"aff29f07a1c675b4ebd00ae1b154b28c0a529ef84b996bf6a5f3b0d5b5094aa5c5\" name=\"aff29f07a1c675b4ebd00ae1b154b28c0a529ef84b996bf6a5f3b0d5b5094aa5c5\"></a>QUEST_STAGE_MORETHAN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aff29f07a1c675b4ebd00ae1b154b28c0a1a1df24dc51f91cb6bc8b49654455085\" name=\"aff29f07a1c675b4ebd00ae1b154b28c0a1a1df24dc51f91cb6bc8b49654455085\"></a>QUEST_STAGE_LESSTHAN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aff29f07a1c675b4ebd00ae1b154b28c0a7154267cbc9a8f09804df230faecb437\" name=\"aff29f07a1c675b4ebd00ae1b154b28c0a7154267cbc9a8f09804df230faecb437\"></a>PLAYER_HAS_ITEM&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"aff29f07a1c675b4ebd00ae1b154b28c0ac5cad3fd596284827943be9721fc8733\" name=\"aff29f07a1c675b4ebd00ae1b154b28c0ac5cad3fd596284827943be9721fc8733\"></a>ENTITY_QUERY&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a25aec784ae02b90fdfcccf5bb4c2ffac\" name=\"a25aec784ae02b90fdfcccf5bb4c2ffac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25aec784ae02b90fdfcccf5bb4c2ffac\">&#9670;&nbsp;</a></span>query</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogCondition::query</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5aec721e85ccf12b9b3b3ae3985fc27\" name=\"af5aec721e85ccf12b9b3b3ae3985fc27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5aec721e85ccf12b9b3b3ae3985fc27\">&#9670;&nbsp;</a></span>quest</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogCondition::quest</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9b5e80d042690b559bdb6f1040c4c0f\" name=\"ad9b5e80d042690b559bdb6f1040c4c0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9b5e80d042690b559bdb6f1040c4c0f\">&#9670;&nbsp;</a></span>stage</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogCondition::stage</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a1e693aca83708b72843dce6e2d5153\" name=\"a8a1e693aca83708b72843dce6e2d5153\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a1e693aca83708b72843dce6e2d5153\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html#aff29f07a1c675b4ebd00ae1b154b28c0\">Type</a> tram::Ext::Design::DialogCondition::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5ba1ae1750fa97ac110dc95beb9dcac2\" name=\"a5ba1ae1750fa97ac110dc95beb9dcac2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ba1ae1750fa97ac110dc95beb9dcac2\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Ext::Design::DialogCondition::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_topic-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogTopic Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a8eace76b575800b118d7d7dc321ea721\">actions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a5a6e045c67bd22ac10b63bb86af3d6aa\">answer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a984ab2364c71e7189bd25f9f9a28cfc9\">conditions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a0bb268a37905fa0d52dfe2f585118dd7\">Find</a>(name_t topic)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a455ebe304d8a744b778a78aa0d62ea92\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a1f1c9c2117707034b26ec25af0658a91\">next_topics</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#ab35972c2d12a4798e21a2d6f5db4e9a9\">prompt</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#aa5404923d5823ca803e85bd9ff389702\">Register</a>(const DialogTopic &amp;topic)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">tram::Ext::Design::DialogTopic</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_dialog_topic.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::DialogTopic Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::DialogTopic Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa5404923d5823ca803e85bd9ff389702\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#aa5404923d5823ca803e85bd9ff389702\">Register</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a> &amp;topic)</td></tr>\n<tr class=\"separator:aa5404923d5823ca803e85bd9ff389702\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bb268a37905fa0d52dfe2f585118dd7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a0bb268a37905fa0d52dfe2f585118dd7\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> topic)</td></tr>\n<tr class=\"separator:a0bb268a37905fa0d52dfe2f585118dd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a455ebe304d8a744b778a78aa0d62ea92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a455ebe304d8a744b778a78aa0d62ea92\">name</a></td></tr>\n<tr class=\"separator:a455ebe304d8a744b778a78aa0d62ea92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab35972c2d12a4798e21a2d6f5db4e9a9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#ab35972c2d12a4798e21a2d6f5db4e9a9\">prompt</a></td></tr>\n<tr class=\"separator:ab35972c2d12a4798e21a2d6f5db4e9a9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a6e045c67bd22ac10b63bb86af3d6aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a5a6e045c67bd22ac10b63bb86af3d6aa\">answer</a></td></tr>\n<tr class=\"separator:a5a6e045c67bd22ac10b63bb86af3d6aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a984ab2364c71e7189bd25f9f9a28cfc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">DialogCondition</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a984ab2364c71e7189bd25f9f9a28cfc9\">conditions</a></td></tr>\n<tr class=\"separator:a984ab2364c71e7189bd25f9f9a28cfc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8eace76b575800b118d7d7dc321ea721\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">DialogAction</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a8eace76b575800b118d7d7dc321ea721\">actions</a></td></tr>\n<tr class=\"separator:a8eace76b575800b118d7d7dc321ea721\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f1c9c2117707034b26ec25af0658a91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html#a1f1c9c2117707034b26ec25af0658a91\">next_topics</a></td></tr>\n<tr class=\"separator:a1f1c9c2117707034b26ec25af0658a91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0bb268a37905fa0d52dfe2f585118dd7\" name=\"a0bb268a37905fa0d52dfe2f585118dd7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bb268a37905fa0d52dfe2f585118dd7\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a> &amp; tram::Ext::Design::DialogTopic::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>topic</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5404923d5823ca803e85bd9ff389702\" name=\"aa5404923d5823ca803e85bd9ff389702\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5404923d5823ca803e85bd9ff389702\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::DialogTopic::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_topic.html\">DialogTopic</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>topic</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8eace76b575800b118d7d7dc321ea721\" name=\"a8eace76b575800b118d7d7dc321ea721\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8eace76b575800b118d7d7dc321ea721\">&#9670;&nbsp;</a></span>actions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_action.html\">DialogAction</a>&gt; tram::Ext::Design::DialogTopic::actions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a6e045c67bd22ac10b63bb86af3d6aa\" name=\"a5a6e045c67bd22ac10b63bb86af3d6aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a6e045c67bd22ac10b63bb86af3d6aa\">&#9670;&nbsp;</a></span>answer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogTopic::answer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a984ab2364c71e7189bd25f9f9a28cfc9\" name=\"a984ab2364c71e7189bd25f9f9a28cfc9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a984ab2364c71e7189bd25f9f9a28cfc9\">&#9670;&nbsp;</a></span>conditions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_dialog_condition.html\">DialogCondition</a>&gt; tram::Ext::Design::DialogTopic::conditions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a455ebe304d8a744b778a78aa0d62ea92\" name=\"a455ebe304d8a744b778a78aa0d62ea92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a455ebe304d8a744b778a78aa0d62ea92\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogTopic::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1f1c9c2117707034b26ec25af0658a91\" name=\"a1f1c9c2117707034b26ec25af0658a91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f1c9c2117707034b26ec25af0658a91\">&#9670;&nbsp;</a></span>next_topics</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&gt; tram::Ext::Design::DialogTopic::next_topics</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab35972c2d12a4798e21a2d6f5db4e9a9\" name=\"ab35972c2d12a4798e21a2d6f5db4e9a9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab35972c2d12a4798e21a2d6f5db4e9a9\">&#9670;&nbsp;</a></span>prompt</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::DialogTopic::prompt</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_entity_children-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">EntityChildren</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::EntityChildren Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">tram::Ext::Design::EntityChildren</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html#a5454bfc0efe7197bf92aad70bedb9c92\">children</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">tram::Ext::Design::EntityChildren</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_entity_children.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::EntityChildren Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html\">EntityChildren</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_entity_children-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::EntityChildren Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5454bfc0efe7197bf92aad70bedb9c92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_entity_children.html#a5454bfc0efe7197bf92aad70bedb9c92\">children</a></td></tr>\n<tr class=\"separator:a5454bfc0efe7197bf92aad70bedb9c92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5454bfc0efe7197bf92aad70bedb9c92\" name=\"a5454bfc0efe7197bf92aad70bedb9c92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5454bfc0efe7197bf92aad70bedb9c92\">&#9670;&nbsp;</a></span>children</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&gt; tram::Ext::Design::EntityChildren::children</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_inventory-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Inventory Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a0c4f4c20d9136f93b2d8da4e9525023a\">AddItem</a>(const ItemInstance &amp;item)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a623df75432045a312ab5f5bf74d2f7f7\">AddItem</a>(item_class item, int count)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a52a1acf9fa15fca02888fe3000846c1e\">allow_overlap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a1e4dcb24c63eb39ac2b54120d44b6227\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a8576ef34ed52d8595a18a5c721407ecc\">holding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#abf8a064e44880f7e494858f7a148e042\">items</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a9f1f5ae5b1df140a397772960e803176\">RemoveItem</a>(item_class item, int count)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a09fb52507fd921c3b8efd7a7f4ebcb5c\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">tram::Ext::Design::Inventory</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_inventory.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::Inventory Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_inventory-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::Inventory Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a0c4f4c20d9136f93b2d8da4e9525023a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a0c4f4c20d9136f93b2d8da4e9525023a\">AddItem</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a> &amp;item)</td></tr>\n<tr class=\"separator:a0c4f4c20d9136f93b2d8da4e9525023a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a623df75432045a312ab5f5bf74d2f7f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a623df75432045a312ab5f5bf74d2f7f7\">AddItem</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a> item, int count)</td></tr>\n<tr class=\"separator:a623df75432045a312ab5f5bf74d2f7f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f1f5ae5b1df140a397772960e803176\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a9f1f5ae5b1df140a397772960e803176\">RemoveItem</a> (<a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a> item, int count)</td></tr>\n<tr class=\"separator:a9f1f5ae5b1df140a397772960e803176\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abf8a064e44880f7e494858f7a148e042\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#abf8a064e44880f7e494858f7a148e042\">items</a></td></tr>\n<tr class=\"separator:abf8a064e44880f7e494858f7a148e042\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8576ef34ed52d8595a18a5c721407ecc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a8576ef34ed52d8595a18a5c721407ecc\">holding</a> = -1</td></tr>\n<tr class=\"separator:a8576ef34ed52d8595a18a5c721407ecc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09fb52507fd921c3b8efd7a7f4ebcb5c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a09fb52507fd921c3b8efd7a7f4ebcb5c\">width</a> = 1</td></tr>\n<tr class=\"separator:a09fb52507fd921c3b8efd7a7f4ebcb5c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e4dcb24c63eb39ac2b54120d44b6227\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a1e4dcb24c63eb39ac2b54120d44b6227\">height</a> = 1</td></tr>\n<tr class=\"separator:a1e4dcb24c63eb39ac2b54120d44b6227\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a52a1acf9fa15fca02888fe3000846c1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_inventory.html#a52a1acf9fa15fca02888fe3000846c1e\">allow_overlap</a> = true</td></tr>\n<tr class=\"separator:a52a1acf9fa15fca02888fe3000846c1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0c4f4c20d9136f93b2d8da4e9525023a\" name=\"a0c4f4c20d9136f93b2d8da4e9525023a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c4f4c20d9136f93b2d8da4e9525023a\">&#9670;&nbsp;</a></span>AddItem() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Inventory::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>item</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a623df75432045a312ab5f5bf74d2f7f7\" name=\"a623df75432045a312ab5f5bf74d2f7f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a623df75432045a312ab5f5bf74d2f7f7\">&#9670;&nbsp;</a></span>AddItem() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Inventory::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a>&#160;</td>\n          <td class=\"paramname\"><em>item</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f1f5ae5b1df140a397772960e803176\" name=\"a9f1f5ae5b1df140a397772960e803176\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f1f5ae5b1df140a397772960e803176\">&#9670;&nbsp;</a></span>RemoveItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Design::Inventory::RemoveItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a>&#160;</td>\n          <td class=\"paramname\"><em>item</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a52a1acf9fa15fca02888fe3000846c1e\" name=\"a52a1acf9fa15fca02888fe3000846c1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52a1acf9fa15fca02888fe3000846c1e\">&#9670;&nbsp;</a></span>allow_overlap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::Inventory::allow_overlap = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e4dcb24c63eb39ac2b54120d44b6227\" name=\"a1e4dcb24c63eb39ac2b54120d44b6227\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e4dcb24c63eb39ac2b54120d44b6227\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::Inventory::height = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8576ef34ed52d8595a18a5c721407ecc\" name=\"a8576ef34ed52d8595a18a5c721407ecc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8576ef34ed52d8595a18a5c721407ecc\">&#9670;&nbsp;</a></span>holding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::Inventory::holding = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf8a064e44880f7e494858f7a148e042\" name=\"abf8a064e44880f7e494858f7a148e042\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf8a064e44880f7e494858f7a148e042\">&#9670;&nbsp;</a></span>items</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a>&gt; tram::Ext::Design::Inventory::items</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09fb52507fd921c3b8efd7a7f4ebcb5c\" name=\"a09fb52507fd921c3b8efd7a7f4ebcb5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09fb52507fd921c3b8efd7a7f4ebcb5c\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::Inventory::width = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_class-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemClass Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#afe22616e6e965328926648bd60441ec0\">base_boosts</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a8b967de9dec854a0b439176682e72997\">draw_hands</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a58d05cb1a437034921181a0cfb9d8680\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a976511c5188c66bb8de209520f859384\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#afdd786cf9dd86924d6c76d79219351ba\">primary_action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a3714e19c94d63b647203c98676760b94\">primary_action_animation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a47891a8b1eff0300e36e60d8fc5572ca\">Register</a>(name_t name, const ItemClass &amp;def)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#ab86c693440d44195e23ce275a42a5d34\">secondary_action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a803855a8ca26c46f37b856f9e33febb1\">secondary_action_animation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a225092675500b61566fed328802bbef3\">sprite</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#acf1aebf7ba4c9028567715f93e6372d6\">stack</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a31afb174efe1ad6d77d387dff6812c83\">viewmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#ae6ca0139f6d227400c5f93d5077928fc\">viewmodel_animation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a93fa0eecdd647da82646abff3cc94207\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">tram::Ext::Design::ItemClass</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_class.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::ItemClass Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_item_class-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemClass Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a47891a8b1eff0300e36e60d8fc5572ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a47891a8b1eff0300e36e60d8fc5572ca\">Register</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a976511c5188c66bb8de209520f859384\">name</a>, const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">ItemClass</a> &amp;def)</td></tr>\n<tr class=\"separator:a47891a8b1eff0300e36e60d8fc5572ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a976511c5188c66bb8de209520f859384\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a976511c5188c66bb8de209520f859384\">name</a></td></tr>\n<tr class=\"separator:a976511c5188c66bb8de209520f859384\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31afb174efe1ad6d77d387dff6812c83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a31afb174efe1ad6d77d387dff6812c83\">viewmodel</a></td></tr>\n<tr class=\"separator:a31afb174efe1ad6d77d387dff6812c83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6ca0139f6d227400c5f93d5077928fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#ae6ca0139f6d227400c5f93d5077928fc\">viewmodel_animation</a></td></tr>\n<tr class=\"separator:ae6ca0139f6d227400c5f93d5077928fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3714e19c94d63b647203c98676760b94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a3714e19c94d63b647203c98676760b94\">primary_action_animation</a></td></tr>\n<tr class=\"separator:a3714e19c94d63b647203c98676760b94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a803855a8ca26c46f37b856f9e33febb1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a803855a8ca26c46f37b856f9e33febb1\">secondary_action_animation</a></td></tr>\n<tr class=\"separator:a803855a8ca26c46f37b856f9e33febb1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afdd786cf9dd86924d6c76d79219351ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#afdd786cf9dd86924d6c76d79219351ba\">primary_action</a></td></tr>\n<tr class=\"separator:afdd786cf9dd86924d6c76d79219351ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab86c693440d44195e23ce275a42a5d34\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#ab86c693440d44195e23ce275a42a5d34\">secondary_action</a></td></tr>\n<tr class=\"separator:ab86c693440d44195e23ce275a42a5d34\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b967de9dec854a0b439176682e72997\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a8b967de9dec854a0b439176682e72997\">draw_hands</a> = false</td></tr>\n<tr class=\"separator:a8b967de9dec854a0b439176682e72997\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a225092675500b61566fed328802bbef3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a225092675500b61566fed328802bbef3\">sprite</a> = -1</td></tr>\n<tr class=\"separator:a225092675500b61566fed328802bbef3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93fa0eecdd647da82646abff3cc94207\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a93fa0eecdd647da82646abff3cc94207\">width</a> = 1</td></tr>\n<tr class=\"separator:a93fa0eecdd647da82646abff3cc94207\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58d05cb1a437034921181a0cfb9d8680\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#a58d05cb1a437034921181a0cfb9d8680\">height</a> = 1</td></tr>\n<tr class=\"separator:a58d05cb1a437034921181a0cfb9d8680\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf1aebf7ba4c9028567715f93e6372d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#acf1aebf7ba4c9028567715f93e6372d6\">stack</a> = 1</td></tr>\n<tr class=\"separator:acf1aebf7ba4c9028567715f93e6372d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe22616e6e965328926648bd60441ec0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html#afe22616e6e965328926648bd60441ec0\">base_boosts</a></td></tr>\n<tr class=\"separator:afe22616e6e965328926648bd60441ec0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a47891a8b1eff0300e36e60d8fc5572ca\" name=\"a47891a8b1eff0300e36e60d8fc5572ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47891a8b1eff0300e36e60d8fc5572ca\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a> tram::Ext::Design::ItemClass::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_class.html\">ItemClass</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>def</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"afe22616e6e965328926648bd60441ec0\" name=\"afe22616e6e965328926648bd60441ec0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe22616e6e965328926648bd60441ec0\">&#9670;&nbsp;</a></span>base_boosts</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a>&gt; tram::Ext::Design::ItemClass::base_boosts</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8b967de9dec854a0b439176682e72997\" name=\"a8b967de9dec854a0b439176682e72997\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b967de9dec854a0b439176682e72997\">&#9670;&nbsp;</a></span>draw_hands</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Design::ItemClass::draw_hands = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58d05cb1a437034921181a0cfb9d8680\" name=\"a58d05cb1a437034921181a0cfb9d8680\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58d05cb1a437034921181a0cfb9d8680\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemClass::height = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a976511c5188c66bb8de209520f859384\" name=\"a976511c5188c66bb8de209520f859384\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a976511c5188c66bb8de209520f859384\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afdd786cf9dd86924d6c76d79219351ba\" name=\"afdd786cf9dd86924d6c76d79219351ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdd786cf9dd86924d6c76d79219351ba\">&#9670;&nbsp;</a></span>primary_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::primary_action</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3714e19c94d63b647203c98676760b94\" name=\"a3714e19c94d63b647203c98676760b94\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3714e19c94d63b647203c98676760b94\">&#9670;&nbsp;</a></span>primary_action_animation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::primary_action_animation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab86c693440d44195e23ce275a42a5d34\" name=\"ab86c693440d44195e23ce275a42a5d34\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab86c693440d44195e23ce275a42a5d34\">&#9670;&nbsp;</a></span>secondary_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::secondary_action</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a803855a8ca26c46f37b856f9e33febb1\" name=\"a803855a8ca26c46f37b856f9e33febb1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a803855a8ca26c46f37b856f9e33febb1\">&#9670;&nbsp;</a></span>secondary_action_animation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::secondary_action_animation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a225092675500b61566fed328802bbef3\" name=\"a225092675500b61566fed328802bbef3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a225092675500b61566fed328802bbef3\">&#9670;&nbsp;</a></span>sprite</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemClass::sprite = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf1aebf7ba4c9028567715f93e6372d6\" name=\"acf1aebf7ba4c9028567715f93e6372d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf1aebf7ba4c9028567715f93e6372d6\">&#9670;&nbsp;</a></span>stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemClass::stack = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31afb174efe1ad6d77d387dff6812c83\" name=\"a31afb174efe1ad6d77d387dff6812c83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31afb174efe1ad6d77d387dff6812c83\">&#9670;&nbsp;</a></span>viewmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::viewmodel</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae6ca0139f6d227400c5f93d5077928fc\" name=\"ae6ca0139f6d227400c5f93d5077928fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6ca0139f6d227400c5f93d5077928fc\">&#9670;&nbsp;</a></span>viewmodel_animation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemClass::viewmodel_animation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a93fa0eecdd647da82646abff3cc94207\" name=\"a93fa0eecdd647da82646abff3cc94207\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93fa0eecdd647da82646abff3cc94207\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemClass::width = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_instance-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemInstance Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">tram::Ext::Design::ItemInstance</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#afac187f972eb54fe7b780fef5a700a87\">count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">tram::Ext::Design::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a57ba3efb75a7d992a50845e59dd1aa30\">item_class</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">tram::Ext::Design::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a3412e817c0d9a973dec245b0de2e3fc5\">x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">tram::Ext::Design::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a12d8f498d388d3a963107453bb5cf47c\">y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">tram::Ext::Design::ItemInstance</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_instance.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::ItemInstance Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html\">ItemInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_item_instance-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemInstance Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3412e817c0d9a973dec245b0de2e3fc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a3412e817c0d9a973dec245b0de2e3fc5\">x</a> = 0</td></tr>\n<tr class=\"separator:a3412e817c0d9a973dec245b0de2e3fc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12d8f498d388d3a963107453bb5cf47c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a12d8f498d388d3a963107453bb5cf47c\">y</a> = 0</td></tr>\n<tr class=\"separator:a12d8f498d388d3a963107453bb5cf47c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afac187f972eb54fe7b780fef5a700a87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#afac187f972eb54fe7b780fef5a700a87\">count</a> = 1</td></tr>\n<tr class=\"separator:afac187f972eb54fe7b780fef5a700a87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57ba3efb75a7d992a50845e59dd1aa30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_instance.html#a57ba3efb75a7d992a50845e59dd1aa30\">item_class</a></td></tr>\n<tr class=\"separator:a57ba3efb75a7d992a50845e59dd1aa30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"afac187f972eb54fe7b780fef5a700a87\" name=\"afac187f972eb54fe7b780fef5a700a87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afac187f972eb54fe7b780fef5a700a87\">&#9670;&nbsp;</a></span>count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemInstance::count = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57ba3efb75a7d992a50845e59dd1aa30\" name=\"a57ba3efb75a7d992a50845e59dd1aa30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57ba3efb75a7d992a50845e59dd1aa30\">&#9670;&nbsp;</a></span>item_class</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html#a1ffbad1daa17098e5d328df98d8d5e55\">item_class</a> tram::Ext::Design::ItemInstance::item_class</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3412e817c0d9a973dec245b0de2e3fc5\" name=\"a3412e817c0d9a973dec245b0de2e3fc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3412e817c0d9a973dec245b0de2e3fc5\">&#9670;&nbsp;</a></span>x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemInstance::x = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a12d8f498d388d3a963107453bb5cf47c\" name=\"a12d8f498d388d3a963107453bb5cf47c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12d8f498d388d3a963107453bb5cf47c\">&#9670;&nbsp;</a></span>y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Design::ItemInstance::y = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_property-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">ItemProperty</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemProperty Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#af5be7ba7c4266bd3650765113ae77ced\">attribute_boost</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316da62c6dd14b477ab0901e15f9841ce1329\">ATTRIBUTE_BOOST</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a0bc56156742065c223941036e725f3f5\">flag</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316dac362b480a93d14cfee89c00478f99c42\">FLAG</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316d\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#aed28ca5b79050330e5777de559e5d878\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">tram::Ext::Design::ItemProperty</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_design_1_1_item_property.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Design::ItemProperty Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_design.html\">Design</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html\">ItemProperty</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_design_1_1_item_property-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Design::ItemProperty Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a8a0bacfd34cfb2d10e21b5452200316d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316d\">Type</a> { <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316da62c6dd14b477ab0901e15f9841ce1329\">ATTRIBUTE_BOOST</a>\n, <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316dac362b480a93d14cfee89c00478f99c42\">FLAG</a>\n }</td></tr>\n<tr class=\"separator:a8a0bacfd34cfb2d10e21b5452200316d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aed28ca5b79050330e5777de559e5d878\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316d\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#aed28ca5b79050330e5777de559e5d878\">type</a></td></tr>\n<tr class=\"separator:aed28ca5b79050330e5777de559e5d878\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67204e0a5418b7b315db60cf117ab0c1\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a2e0866ff794650ce643071afa9886e9d\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#af5be7ba7c4266bd3650765113ae77ced\">attribute_boost</a></td></tr>\n<tr class=\"separator:a2e0866ff794650ce643071afa9886e9d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a206bb2c9395521abaa9d26d65f80ff19\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a0bc56156742065c223941036e725f3f5\">flag</a></td></tr>\n<tr class=\"separator:a206bb2c9395521abaa9d26d65f80ff19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67204e0a5418b7b315db60cf117ab0c1\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a67204e0a5418b7b315db60cf117ab0c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a8a0bacfd34cfb2d10e21b5452200316d\" name=\"a8a0bacfd34cfb2d10e21b5452200316d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a0bacfd34cfb2d10e21b5452200316d\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316d\">tram::Ext::Design::ItemProperty::Type</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a8a0bacfd34cfb2d10e21b5452200316da62c6dd14b477ab0901e15f9841ce1329\" name=\"a8a0bacfd34cfb2d10e21b5452200316da62c6dd14b477ab0901e15f9841ce1329\"></a>ATTRIBUTE_BOOST&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a8a0bacfd34cfb2d10e21b5452200316dac362b480a93d14cfee89c00478f99c42\" name=\"a8a0bacfd34cfb2d10e21b5452200316dac362b480a93d14cfee89c00478f99c42\"></a>FLAG&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a67204e0a5418b7b315db60cf117ab0c1\" name=\"a67204e0a5418b7b315db60cf117ab0c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67204e0a5418b7b315db60cf117ab0c1\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Ext::Design::ItemProperty::@21</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5be7ba7c4266bd3650765113ae77ced\" name=\"af5be7ba7c4266bd3650765113ae77ced\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5be7ba7c4266bd3650765113ae77ced\">&#9670;&nbsp;</a></span>attribute_boost</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_attribute_boost.html\">AttributeBoost</a> tram::Ext::Design::ItemProperty::attribute_boost</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0bc56156742065c223941036e725f3f5\" name=\"a0bc56156742065c223941036e725f3f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bc56156742065c223941036e725f3f5\">&#9670;&nbsp;</a></span>flag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Design::ItemProperty::flag</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed28ca5b79050330e5777de559e5d878\" name=\"aed28ca5b79050330e5777de559e5d878\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed28ca5b79050330e5777de559e5d878\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_design_1_1_item_property.html#a8a0bacfd34cfb2d10e21b5452200316d\">Type</a> tram::Ext::Design::ItemProperty::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIVariable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">tram::Ext::Kitchensink::AIVariable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">tram::Ext::Kitchensink::AIVariable</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AIVariable Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html\">AIVariable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AIVariable Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab8f5ca82a06f30ec861907366c362436\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_a_i_variable.html#ab8f5ca82a06f30ec861907366c362436\">value</a></td></tr>\n<tr class=\"separator:ab8f5ca82a06f30ec861907366c362436\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab8f5ca82a06f30ec861907366c362436\" name=\"ab8f5ca82a06f30ec861907366c362436\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8f5ca82a06f30ec861907366c362436\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Ext::Kitchensink::AIVariable::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"ai_8h_source.html\">ai.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">AnimState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimState Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">animation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">interpolate</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">next_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">pause_last</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">repeats</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">speed</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">state_space</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">tram::Ext::Kitchensink::AnimState</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimState Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html\">AnimState</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimState Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2d83ea50ba1cea2d5c129c0aef94ba37\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a2d83ea50ba1cea2d5c129c0aef94ba37\">name</a></td></tr>\n<tr class=\"separator:a2d83ea50ba1cea2d5c129c0aef94ba37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2f443e6c0e1f4195e88666fd512708d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#af2f443e6c0e1f4195e88666fd512708d\">animation</a></td></tr>\n<tr class=\"separator:af2f443e6c0e1f4195e88666fd512708d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a076616449b844c51000c7b65940443b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a076616449b844c51000c7b65940443b8\">repeats</a></td></tr>\n<tr class=\"separator:a076616449b844c51000c7b65940443b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1d093333e0433d071a618226768270e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ae1d093333e0433d071a618226768270e\">weight</a></td></tr>\n<tr class=\"separator:ae1d093333e0433d071a618226768270e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a96c66b08a366597595eac4038641834e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a96c66b08a366597595eac4038641834e\">speed</a></td></tr>\n<tr class=\"separator:a96c66b08a366597595eac4038641834e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3092db31243a93267bddd5f9797696fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a3092db31243a93267bddd5f9797696fa\">interpolate</a></td></tr>\n<tr class=\"separator:a3092db31243a93267bddd5f9797696fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4d3e08ffedcce66e94535cf569b183f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#aa4d3e08ffedcce66e94535cf569b183f\">pause_last</a></td></tr>\n<tr class=\"separator:aa4d3e08ffedcce66e94535cf569b183f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a462487781aa6ea8911cb37bc3064b575\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#a462487781aa6ea8911cb37bc3064b575\">state_space</a></td></tr>\n<tr class=\"separator:a462487781aa6ea8911cb37bc3064b575\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab37350588a0e40d138aa060e4477a3ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state.html#ab37350588a0e40d138aa060e4477a3ee\">next_state</a></td></tr>\n<tr class=\"separator:ab37350588a0e40d138aa060e4477a3ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af2f443e6c0e1f4195e88666fd512708d\" name=\"af2f443e6c0e1f4195e88666fd512708d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2f443e6c0e1f4195e88666fd512708d\">&#9670;&nbsp;</a></span>animation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimState::animation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3092db31243a93267bddd5f9797696fa\" name=\"a3092db31243a93267bddd5f9797696fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3092db31243a93267bddd5f9797696fa\">&#9670;&nbsp;</a></span>interpolate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::AnimState::interpolate</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d83ea50ba1cea2d5c129c0aef94ba37\" name=\"a2d83ea50ba1cea2d5c129c0aef94ba37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d83ea50ba1cea2d5c129c0aef94ba37\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimState::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab37350588a0e40d138aa060e4477a3ee\" name=\"ab37350588a0e40d138aa060e4477a3ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab37350588a0e40d138aa060e4477a3ee\">&#9670;&nbsp;</a></span>next_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimState::next_state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4d3e08ffedcce66e94535cf569b183f\" name=\"aa4d3e08ffedcce66e94535cf569b183f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4d3e08ffedcce66e94535cf569b183f\">&#9670;&nbsp;</a></span>pause_last</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::AnimState::pause_last</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a076616449b844c51000c7b65940443b8\" name=\"a076616449b844c51000c7b65940443b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a076616449b844c51000c7b65940443b8\">&#9670;&nbsp;</a></span>repeats</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Ext::Kitchensink::AnimState::repeats</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a96c66b08a366597595eac4038641834e\" name=\"a96c66b08a366597595eac4038641834e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96c66b08a366597595eac4038641834e\">&#9670;&nbsp;</a></span>speed</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimState::speed</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a462487781aa6ea8911cb37bc3064b575\" name=\"a462487781aa6ea8911cb37bc3064b575\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a462487781aa6ea8911cb37bc3064b575\">&#9670;&nbsp;</a></span>state_space</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimState::state_space</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae1d093333e0433d071a618226768270e\" name=\"ae1d093333e0433d071a618226768270e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1d093333e0433d071a618226768270e\">&#9670;&nbsp;</a></span>weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimState::weight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">AnimStateSpace</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateSpace Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">tram::Ext::Kitchensink::AnimStateSpace</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">tram::Ext::Kitchensink::AnimStateSpace</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">tram::Ext::Kitchensink::AnimStateSpace</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimStateSpace Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html\">AnimStateSpace</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateSpace Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad0a26b8eab6b4bf5ceb070fb8a933e61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#ad0a26b8eab6b4bf5ceb070fb8a933e61\">name</a></td></tr>\n<tr class=\"separator:ad0a26b8eab6b4bf5ceb070fb8a933e61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ff4f114e9722b8a4bcda22212789b9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_space.html#a5ff4f114e9722b8a4bcda22212789b9a\">parent</a></td></tr>\n<tr class=\"separator:a5ff4f114e9722b8a4bcda22212789b9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad0a26b8eab6b4bf5ceb070fb8a933e61\" name=\"ad0a26b8eab6b4bf5ceb070fb8a933e61\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0a26b8eab6b4bf5ceb070fb8a933e61\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateSpace::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5ff4f114e9722b8a4bcda22212789b9a\" name=\"a5ff4f114e9722b8a4bcda22212789b9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ff4f114e9722b8a4bcda22212789b9a\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateSpace::parent</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionDefault Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">fade_in_time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">fade_out_time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">tram::Ext::Kitchensink::AnimStateTransitionDefault</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimStateTransitionDefault Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html\">AnimStateTransitionDefault</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionDefault Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acf9e01d5a11aa7a4b40a7135a8bb10e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#acf9e01d5a11aa7a4b40a7135a8bb10e9\">state</a></td></tr>\n<tr class=\"separator:acf9e01d5a11aa7a4b40a7135a8bb10e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48f08ce7495ae730fd0f89e7fcf19f57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a48f08ce7495ae730fd0f89e7fcf19f57\">fade_in_time</a></td></tr>\n<tr class=\"separator:a48f08ce7495ae730fd0f89e7fcf19f57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2eb7130d015e139f42813ac89cf7cfee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_default.html#a2eb7130d015e139f42813ac89cf7cfee\">fade_out_time</a></td></tr>\n<tr class=\"separator:a2eb7130d015e139f42813ac89cf7cfee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a48f08ce7495ae730fd0f89e7fcf19f57\" name=\"a48f08ce7495ae730fd0f89e7fcf19f57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48f08ce7495ae730fd0f89e7fcf19f57\">&#9670;&nbsp;</a></span>fade_in_time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimStateTransitionDefault::fade_in_time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2eb7130d015e139f42813ac89cf7cfee\" name=\"a2eb7130d015e139f42813ac89cf7cfee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2eb7130d015e139f42813ac89cf7cfee\">&#9670;&nbsp;</a></span>fade_out_time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimStateTransitionDefault::fade_out_time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acf9e01d5a11aa7a4b40a7135a8bb10e9\" name=\"acf9e01d5a11aa7a4b40a7135a8bb10e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf9e01d5a11aa7a4b40a7135a8bb10e9\">&#9670;&nbsp;</a></span>state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateTransitionDefault::state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionFrom Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">fade_time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">from_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">into_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">tram::Ext::Kitchensink::AnimStateTransitionFrom</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimStateTransitionFrom Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html\">AnimStateTransitionFrom</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionFrom Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abce9f4aa66e81f7bdacdd957145bf2d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#abce9f4aa66e81f7bdacdd957145bf2d8\">from_state</a></td></tr>\n<tr class=\"separator:abce9f4aa66e81f7bdacdd957145bf2d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4fc967dfe7caf8f300842148f0b8eba0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a4fc967dfe7caf8f300842148f0b8eba0\">into_state</a></td></tr>\n<tr class=\"separator:a4fc967dfe7caf8f300842148f0b8eba0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ccb60919e27cfe5cf01b20e824f494a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_from.html#a7ccb60919e27cfe5cf01b20e824f494a\">fade_time</a></td></tr>\n<tr class=\"separator:a7ccb60919e27cfe5cf01b20e824f494a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7ccb60919e27cfe5cf01b20e824f494a\" name=\"a7ccb60919e27cfe5cf01b20e824f494a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ccb60919e27cfe5cf01b20e824f494a\">&#9670;&nbsp;</a></span>fade_time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimStateTransitionFrom::fade_time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abce9f4aa66e81f7bdacdd957145bf2d8\" name=\"abce9f4aa66e81f7bdacdd957145bf2d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abce9f4aa66e81f7bdacdd957145bf2d8\">&#9670;&nbsp;</a></span>from_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateTransitionFrom::from_state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4fc967dfe7caf8f300842148f0b8eba0\" name=\"a4fc967dfe7caf8f300842148f0b8eba0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fc967dfe7caf8f300842148f0b8eba0\">&#9670;&nbsp;</a></span>into_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateTransitionFrom::into_state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionInto Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">fade_time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">from_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">into_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">tram::Ext::Kitchensink::AnimStateTransitionInto</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AnimStateTransitionInto Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html\">AnimStateTransitionInto</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AnimStateTransitionInto Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">from_state</a></td></tr>\n<tr class=\"separator:a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68ba9c13086b86f10f80cd36e61200d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a68ba9c13086b86f10f80cd36e61200d8\">into_state</a></td></tr>\n<tr class=\"separator:a68ba9c13086b86f10f80cd36e61200d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a800a33afe025e16593895da5634bff6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_anim_state_transition_into.html#a800a33afe025e16593895da5634bff6e\">fade_time</a></td></tr>\n<tr class=\"separator:a800a33afe025e16593895da5634bff6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a800a33afe025e16593895da5634bff6e\" name=\"a800a33afe025e16593895da5634bff6e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a800a33afe025e16593895da5634bff6e\">&#9670;&nbsp;</a></span>fade_time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AnimStateTransitionInto::fade_time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\" name=\"a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ef52cbdfa3fe1b8b13a7b479ccf0ec0\">&#9670;&nbsp;</a></span>from_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateTransitionInto::from_state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68ba9c13086b86f10f80cd36e61200d8\" name=\"a68ba9c13086b86f10f80cd36e61200d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68ba9c13086b86f10f80cd36e61200d8\">&#9670;&nbsp;</a></span>into_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AnimStateTransitionInto::into_state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"animationtable_8h_source.html\">animationtable.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Attribute Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">affected_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">base_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">effective_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">tram::Ext::Kitchensink::Attribute</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Attribute Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Attribute Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a120d6552e1adf281dad0a69266fd0d7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a120d6552e1adf281dad0a69266fd0d7b\">name</a></td></tr>\n<tr class=\"separator:a120d6552e1adf281dad0a69266fd0d7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7621d33bbc6e85404781094a53a436e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#ae7621d33bbc6e85404781094a53a436e\">base_value</a></td></tr>\n<tr class=\"separator:ae7621d33bbc6e85404781094a53a436e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a122e60f9dedb9ba701a35eceb8c82476\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a122e60f9dedb9ba701a35eceb8c82476\">affected_value</a></td></tr>\n<tr class=\"separator:a122e60f9dedb9ba701a35eceb8c82476\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9bccf3052c467ffcd74f2d542dfa7112\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html#a9bccf3052c467ffcd74f2d542dfa7112\">effective_value</a></td></tr>\n<tr class=\"separator:a9bccf3052c467ffcd74f2d542dfa7112\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a122e60f9dedb9ba701a35eceb8c82476\" name=\"a122e60f9dedb9ba701a35eceb8c82476\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a122e60f9dedb9ba701a35eceb8c82476\">&#9670;&nbsp;</a></span>affected_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Attribute::affected_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae7621d33bbc6e85404781094a53a436e\" name=\"ae7621d33bbc6e85404781094a53a436e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7621d33bbc6e85404781094a53a436e\">&#9670;&nbsp;</a></span>base_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Attribute::base_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9bccf3052c467ffcd74f2d542dfa7112\" name=\"a9bccf3052c467ffcd74f2d542dfa7112\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9bccf3052c467ffcd74f2d542dfa7112\">&#9670;&nbsp;</a></span>effective_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Attribute::effective_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a120d6552e1adf281dad0a69266fd0d7b\" name=\"a120d6552e1adf281dad0a69266fd0d7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a120d6552e1adf281dad0a69266fd0d7b\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Attribute::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeContainer Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">ApplyEffect</a>(Effect effect)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">effects</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">Find</a>(Entity *)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aea111bc346b485851485b4354b766b0e\">Find</a>(id_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">GetAttribute</a>(name_t attribute)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">GetAttributeBase</a>(name_t attribute)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">HasAttribute</a>(name_t type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">last_tick</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">LoadFromDisk</a>(const char *)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">RemoveEffect</a>(name_t tag)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">SetAttribute</a>(name_t attribute, float base_value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">Tick</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">tram::Ext::Kitchensink::AttributeContainer</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AttributeContainer Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeContainer Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3ee8ff405063d9cbd58792ddfb225ac7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a3ee8ff405063d9cbd58792ddfb225ac7\">GetAttribute</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> attribute)</td></tr>\n<tr class=\"separator:a3ee8ff405063d9cbd58792ddfb225ac7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ac70ad8c111191b8c1fb8dd44e706e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5ac70ad8c111191b8c1fb8dd44e706e1\">GetAttributeBase</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> attribute)</td></tr>\n<tr class=\"separator:a5ac70ad8c111191b8c1fb8dd44e706e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7e832ff6e766b735b531d9b7e9b10a64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a7e832ff6e766b735b531d9b7e9b10a64\">SetAttribute</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> attribute, float base_value)</td></tr>\n<tr class=\"separator:a7e832ff6e766b735b531d9b7e9b10a64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed0fd0323979e353abd8c61dcb9384a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aed0fd0323979e353abd8c61dcb9384a8\">ApplyEffect</a> (<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> effect)</td></tr>\n<tr class=\"separator:aed0fd0323979e353abd8c61dcb9384a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a47b495de8ee956c0871fc192ab4fa224\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a47b495de8ee956c0871fc192ab4fa224\">RemoveEffect</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tag)</td></tr>\n<tr class=\"separator:a47b495de8ee956c0871fc192ab4fa224\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a68b8159d853b0027b4afe738b67707f9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a68b8159d853b0027b4afe738b67707f9\">HasAttribute</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> type)</td></tr>\n<tr class=\"separator:a68b8159d853b0027b4afe738b67707f9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5256dac8514420f9b45698cb2298c024\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a5256dac8514420f9b45698cb2298c024\">Tick</a> ()</td></tr>\n<tr class=\"separator:a5256dac8514420f9b45698cb2298c024\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a16dcafc82dbe7851b127f9bbf6a42933\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a16dcafc82dbe7851b127f9bbf6a42933\">Find</a> (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *)</td></tr>\n<tr class=\"separator:a16dcafc82dbe7851b127f9bbf6a42933\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea111bc346b485851485b4354b766b0e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#aea111bc346b485851485b4354b766b0e\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>)</td></tr>\n<tr class=\"separator:aea111bc346b485851485b4354b766b0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69e3f0e2bea54c85f6ae123d0409a86e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a69e3f0e2bea54c85f6ae123d0409a86e\">LoadFromDisk</a> (const char *)</td></tr>\n<tr class=\"separator:a69e3f0e2bea54c85f6ae123d0409a86e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a33b5848afcb8d3758b9c39b5ac3de2c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a33b5848afcb8d3758b9c39b5ac3de2c1\">last_tick</a> = 0.0f</td></tr>\n<tr class=\"separator:a33b5848afcb8d3758b9c39b5ac3de2c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a683cbb898b97a9d6e6d9ee800ea965a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a683cbb898b97a9d6e6d9ee800ea965a6\">attributes</a></td></tr>\n<tr class=\"separator:a683cbb898b97a9d6e6d9ee800ea965a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71f44dcd6e534fd2366ee31be69497ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html#a71f44dcd6e534fd2366ee31be69497ae\">effects</a></td></tr>\n<tr class=\"separator:a71f44dcd6e534fd2366ee31be69497ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aed0fd0323979e353abd8c61dcb9384a8\" name=\"aed0fd0323979e353abd8c61dcb9384a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed0fd0323979e353abd8c61dcb9384a8\">&#9670;&nbsp;</a></span>ApplyEffect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeContainer::ApplyEffect </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a>&#160;</td>\n          <td class=\"paramname\"><em>effect</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a16dcafc82dbe7851b127f9bbf6a42933\" name=\"a16dcafc82dbe7851b127f9bbf6a42933\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16dcafc82dbe7851b127f9bbf6a42933\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> * tram::Ext::Kitchensink::AttributeContainer::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;</td>\n          <td class=\"paramname\"><em>entity</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea111bc346b485851485b4354b766b0e\" name=\"aea111bc346b485851485b4354b766b0e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea111bc346b485851485b4354b766b0e\">&#9670;&nbsp;</a></span>Find() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_container.html\">AttributeContainer</a> * tram::Ext::Kitchensink::AttributeContainer::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity_id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3ee8ff405063d9cbd58792ddfb225ac7\" name=\"a3ee8ff405063d9cbd58792ddfb225ac7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ee8ff405063d9cbd58792ddfb225ac7\">&#9670;&nbsp;</a></span>GetAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AttributeContainer::GetAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>attribute</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5ac70ad8c111191b8c1fb8dd44e706e1\" name=\"a5ac70ad8c111191b8c1fb8dd44e706e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ac70ad8c111191b8c1fb8dd44e706e1\">&#9670;&nbsp;</a></span>GetAttributeBase()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AttributeContainer::GetAttributeBase </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>attribute</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a68b8159d853b0027b4afe738b67707f9\" name=\"a68b8159d853b0027b4afe738b67707f9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68b8159d853b0027b4afe738b67707f9\">&#9670;&nbsp;</a></span>HasAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::AttributeContainer::HasAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69e3f0e2bea54c85f6ae123d0409a86e\" name=\"a69e3f0e2bea54c85f6ae123d0409a86e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69e3f0e2bea54c85f6ae123d0409a86e\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeContainer::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47b495de8ee956c0871fc192ab4fa224\" name=\"a47b495de8ee956c0871fc192ab4fa224\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47b495de8ee956c0871fc192ab4fa224\">&#9670;&nbsp;</a></span>RemoveEffect()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeContainer::RemoveEffect </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>tag</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7e832ff6e766b735b531d9b7e9b10a64\" name=\"a7e832ff6e766b735b531d9b7e9b10a64\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e832ff6e766b735b531d9b7e9b10a64\">&#9670;&nbsp;</a></span>SetAttribute()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeContainer::SetAttribute </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>attribute</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>base_value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5256dac8514420f9b45698cb2298c024\" name=\"a5256dac8514420f9b45698cb2298c024\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5256dac8514420f9b45698cb2298c024\">&#9670;&nbsp;</a></span>Tick()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::AttributeContainer::Tick </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a683cbb898b97a9d6e6d9ee800ea965a6\" name=\"a683cbb898b97a9d6e6d9ee800ea965a6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a683cbb898b97a9d6e6d9ee800ea965a6\">&#9670;&nbsp;</a></span>attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a>&gt; tram::Ext::Kitchensink::AttributeContainer::attributes</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71f44dcd6e534fd2366ee31be69497ae\" name=\"a71f44dcd6e534fd2366ee31be69497ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71f44dcd6e534fd2366ee31be69497ae\">&#9670;&nbsp;</a></span>effects</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a>&gt; tram::Ext::Kitchensink::AttributeContainer::effects</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33b5848afcb8d3758b9c39b5ac3de2c1\" name=\"a33b5848afcb8d3758b9c39b5ac3de2c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33b5848afcb8d3758b9c39b5ac3de2c1\">&#9670;&nbsp;</a></span>last_tick</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AttributeContainer::last_tick = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8cpp.html\">attributes.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">AttributeModifier</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeModifier Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#ae117521868ddc0ab99a8af5d8b30c1c2\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#ab363da24e57fbf2f782b2aac111f9e8f\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a1d63f39e8d6659261fd3e9b35edc0fcd\">tag</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a831011c38109e8dca7a7374fbf7dc42d\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a76bb302fe50afb94834aaaefbb9669f3\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">tram::Ext::Kitchensink::AttributeModifier</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::AttributeModifier Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html\">AttributeModifier</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::AttributeModifier Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab363da24e57fbf2f782b2aac111f9e8f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#ab363da24e57fbf2f782b2aac111f9e8f\">name</a></td></tr>\n<tr class=\"separator:ab363da24e57fbf2f782b2aac111f9e8f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d63f39e8d6659261fd3e9b35edc0fcd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a1d63f39e8d6659261fd3e9b35edc0fcd\">tag</a></td></tr>\n<tr class=\"separator:a1d63f39e8d6659261fd3e9b35edc0fcd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76bb302fe50afb94834aaaefbb9669f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a76bb302fe50afb94834aaaefbb9669f3\">value</a></td></tr>\n<tr class=\"separator:a76bb302fe50afb94834aaaefbb9669f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae117521868ddc0ab99a8af5d8b30c1c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#ae117521868ddc0ab99a8af5d8b30c1c2\">flags</a></td></tr>\n<tr class=\"separator:ae117521868ddc0ab99a8af5d8b30c1c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a831011c38109e8dca7a7374fbf7dc42d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute_modifier.html#a831011c38109e8dca7a7374fbf7dc42d\">time</a></td></tr>\n<tr class=\"separator:a831011c38109e8dca7a7374fbf7dc42d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae117521868ddc0ab99a8af5d8b30c1c2\" name=\"ae117521868ddc0ab99a8af5d8b30c1c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae117521868ddc0ab99a8af5d8b30c1c2\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::AttributeModifier::flags</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab363da24e57fbf2f782b2aac111f9e8f\" name=\"ab363da24e57fbf2f782b2aac111f9e8f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab363da24e57fbf2f782b2aac111f9e8f\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AttributeModifier::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d63f39e8d6659261fd3e9b35edc0fcd\" name=\"a1d63f39e8d6659261fd3e9b35edc0fcd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d63f39e8d6659261fd3e9b35edc0fcd\">&#9670;&nbsp;</a></span>tag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::AttributeModifier::tag</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a831011c38109e8dca7a7374fbf7dc42d\" name=\"a831011c38109e8dca7a7374fbf7dc42d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a831011c38109e8dca7a7374fbf7dc42d\">&#9670;&nbsp;</a></span>time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AttributeModifier::time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76bb302fe50afb94834aaaefbb9669f3\" name=\"a76bb302fe50afb94834aaaefbb9669f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76bb302fe50afb94834aaaefbb9669f3\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::AttributeModifier::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::BaseAttribute Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">tram::Ext::Kitchensink::BaseAttribute</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">tram::Ext::Kitchensink::BaseAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">tram::Ext::Kitchensink::BaseAttribute</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::BaseAttribute Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html\">BaseAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::BaseAttribute Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a510e0c24a6e61c55033bc18a038ed719\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#a510e0c24a6e61c55033bc18a038ed719\">name</a></td></tr>\n<tr class=\"separator:a510e0c24a6e61c55033bc18a038ed719\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af66cdb9500769f91ecff0c49a489d887\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_attribute.html#af66cdb9500769f91ecff0c49a489d887\">value</a></td></tr>\n<tr class=\"separator:af66cdb9500769f91ecff0c49a489d887\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a510e0c24a6e61c55033bc18a038ed719\" name=\"a510e0c24a6e61c55033bc18a038ed719\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a510e0c24a6e61c55033bc18a038ed719\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::BaseAttribute::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af66cdb9500769f91ecff0c49a489d887\" name=\"af66cdb9500769f91ecff0c49a489d887\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af66cdb9500769f91ecff0c49a489d887\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::BaseAttribute::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::BaseFactionRank Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">faction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">loyalty</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">rank</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">tram::Ext::Kitchensink::BaseFactionRank</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::BaseFactionRank Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html\">BaseFactionRank</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::BaseFactionRank Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a68423eb013d6a0f6b2d8eed2ef4e19cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#a68423eb013d6a0f6b2d8eed2ef4e19cf\">faction</a></td></tr>\n<tr class=\"separator:a68423eb013d6a0f6b2d8eed2ef4e19cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af762dbee29581d65a7afbb771c9638ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#af762dbee29581d65a7afbb771c9638ae\">rank</a></td></tr>\n<tr class=\"separator:af762dbee29581d65a7afbb771c9638ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac64acf21dbf7f0ce28fc4976aa610806\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_base_faction_rank.html#ac64acf21dbf7f0ce28fc4976aa610806\">loyalty</a></td></tr>\n<tr class=\"separator:ac64acf21dbf7f0ce28fc4976aa610806\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a68423eb013d6a0f6b2d8eed2ef4e19cf\" name=\"a68423eb013d6a0f6b2d8eed2ef4e19cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68423eb013d6a0f6b2d8eed2ef4e19cf\">&#9670;&nbsp;</a></span>faction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>* tram::Ext::Kitchensink::BaseFactionRank::faction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac64acf21dbf7f0ce28fc4976aa610806\" name=\"ac64acf21dbf7f0ce28fc4976aa610806\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac64acf21dbf7f0ce28fc4976aa610806\">&#9670;&nbsp;</a></span>loyalty</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::BaseFactionRank::loyalty</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af762dbee29581d65a7afbb771c9638ae\" name=\"af762dbee29581d65a7afbb771c9638ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af762dbee29581d65a7afbb771c9638ae\">&#9670;&nbsp;</a></span>rank</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::BaseFactionRank::rank</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::CharacterDisposition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">tram::Ext::Kitchensink::CharacterDisposition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">character</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">tram::Ext::Kitchensink::CharacterDisposition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">disposition</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">tram::Ext::Kitchensink::CharacterDisposition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::CharacterDisposition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html\">CharacterDisposition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::CharacterDisposition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad88789d2cf725bb4c89baf02e542a974\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#ad88789d2cf725bb4c89baf02e542a974\">character</a></td></tr>\n<tr class=\"separator:ad88789d2cf725bb4c89baf02e542a974\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6f7910b8365a22cfa1b26fc7927df5f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_character_disposition.html#a6f7910b8365a22cfa1b26fc7927df5f7\">disposition</a></td></tr>\n<tr class=\"separator:a6f7910b8365a22cfa1b26fc7927df5f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad88789d2cf725bb4c89baf02e542a974\" name=\"ad88789d2cf725bb4c89baf02e542a974\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad88789d2cf725bb4c89baf02e542a974\">&#9670;&nbsp;</a></span>character</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* tram::Ext::Kitchensink::CharacterDisposition::character</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6f7910b8365a22cfa1b26fc7927df5f7\" name=\"a6f7910b8365a22cfa1b26fc7927df5f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f7910b8365a22cfa1b26fc7927df5f7\">&#9670;&nbsp;</a></span>disposition</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::CharacterDisposition::disposition</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogAction Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">Perform</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">quest</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">trigger</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">tram::Ext::Kitchensink::DialogAction</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DialogAction Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogAction Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a773e06de51af612cd67bc422a37cfda4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#a773e06de51af612cd67bc422a37cfda4\">Perform</a> ()</td></tr>\n<tr class=\"separator:a773e06de51af612cd67bc422a37cfda4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab7830ce3388bcc68886658f6ebac4401\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ab7830ce3388bcc68886658f6ebac4401\">quest</a></td></tr>\n<tr class=\"separator:ab7830ce3388bcc68886658f6ebac4401\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad286a54082f47f5755efd6cc9c73823c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html#ad286a54082f47f5755efd6cc9c73823c\">trigger</a></td></tr>\n<tr class=\"separator:ad286a54082f47f5755efd6cc9c73823c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a773e06de51af612cd67bc422a37cfda4\" name=\"a773e06de51af612cd67bc422a37cfda4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a773e06de51af612cd67bc422a37cfda4\">&#9670;&nbsp;</a></span>Perform()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DialogAction::Perform </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab7830ce3388bcc68886658f6ebac4401\" name=\"ab7830ce3388bcc68886658f6ebac4401\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7830ce3388bcc68886658f6ebac4401\">&#9670;&nbsp;</a></span>quest</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogAction::quest</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad286a54082f47f5755efd6cc9c73823c\" name=\"ad286a54082f47f5755efd6cc9c73823c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad286a54082f47f5755efd6cc9c73823c\">&#9670;&nbsp;</a></span>trigger</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogAction::trigger</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogCondition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">IsMet</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">quest</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">variable</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">tram::Ext::Kitchensink::DialogCondition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DialogCondition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogCondition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:adaa8ef03f80dfbe1e610747674d556a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#adaa8ef03f80dfbe1e610747674d556a7\">IsMet</a> ()</td></tr>\n<tr class=\"separator:adaa8ef03f80dfbe1e610747674d556a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acd0cc2ffea91837a2e51e9a7919ee198\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#acd0cc2ffea91837a2e51e9a7919ee198\">quest</a></td></tr>\n<tr class=\"separator:acd0cc2ffea91837a2e51e9a7919ee198\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14f314e9911fc87757376b5267df2b78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html#a14f314e9911fc87757376b5267df2b78\">variable</a></td></tr>\n<tr class=\"separator:a14f314e9911fc87757376b5267df2b78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"adaa8ef03f80dfbe1e610747674d556a7\" name=\"adaa8ef03f80dfbe1e610747674d556a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adaa8ef03f80dfbe1e610747674d556a7\">&#9670;&nbsp;</a></span>IsMet()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::DialogCondition::IsMet </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"acd0cc2ffea91837a2e51e9a7919ee198\" name=\"acd0cc2ffea91837a2e51e9a7919ee198\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd0cc2ffea91837a2e51e9a7919ee198\">&#9670;&nbsp;</a></span>quest</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogCondition::quest</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a14f314e9911fc87757376b5267df2b78\" name=\"a14f314e9911fc87757376b5267df2b78\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14f314e9911fc87757376b5267df2b78\">&#9670;&nbsp;</a></span>variable</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogCondition::variable</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogTopic Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">answer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">condition</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">Find</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">Gather</a>(std::vector&lt; name_t &gt; &amp;topics)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">GetValidNextTopics</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">LoadFromDisk</a>(const char *filename)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">Make</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">next_topics</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">prompt</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">tram::Ext::Kitchensink::DialogTopic</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::DialogTopic Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::DialogTopic Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a92b21c6a95d462272577358cc702d16f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a92b21c6a95d462272577358cc702d16f\">GetValidNextTopics</a> ()</td></tr>\n<tr class=\"separator:a92b21c6a95d462272577358cc702d16f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af40984203be124856962da32edaac92d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#af40984203be124856962da32edaac92d\">Gather</a> (std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &amp;topics)</td></tr>\n<tr class=\"separator:af40984203be124856962da32edaac92d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:afb41bd714afd933a421568dbd55cd99a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#afb41bd714afd933a421568dbd55cd99a\">LoadFromDisk</a> (const char *filename)</td></tr>\n<tr class=\"separator:afb41bd714afd933a421568dbd55cd99a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62f08db43d9b1adc67326d1910b3bf0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a62f08db43d9b1adc67326d1910b3bf0f\">Make</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a62f08db43d9b1adc67326d1910b3bf0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6de61f6febffca8612e76926575df914\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a6de61f6febffca8612e76926575df914\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a6de61f6febffca8612e76926575df914\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aaeb1f8e04e35e34ff363d9fd6b8eeb0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">DialogType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">type</a> = <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">DIALOG_TOPIC</a></td></tr>\n<tr class=\"separator:aaeb1f8e04e35e34ff363d9fd6b8eeb0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">name</a></td></tr>\n<tr class=\"separator:a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a078f196f4d258ea6dda98a69263ceae8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a078f196f4d258ea6dda98a69263ceae8\">prompt</a></td></tr>\n<tr class=\"separator:a078f196f4d258ea6dda98a69263ceae8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9210fb3d74cbf84d790863396b671a4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#a9210fb3d74cbf84d790863396b671a4b\">answer</a></td></tr>\n<tr class=\"separator:a9210fb3d74cbf84d790863396b671a4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa78509b95f65ce2d8974875004cd736f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#aa78509b95f65ce2d8974875004cd736f\">condition</a></td></tr>\n<tr class=\"separator:aa78509b95f65ce2d8974875004cd736f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab41b9820fb4c0943c7e564fc790cf636\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ab41b9820fb4c0943c7e564fc790cf636\">action</a></td></tr>\n<tr class=\"separator:ab41b9820fb4c0943c7e564fc790cf636\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad7c75b7bab534c7d74ea772608285213\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html#ad7c75b7bab534c7d74ea772608285213\">next_topics</a></td></tr>\n<tr class=\"separator:ad7c75b7bab534c7d74ea772608285213\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a6de61f6febffca8612e76926575df914\" name=\"a6de61f6febffca8612e76926575df914\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6de61f6febffca8612e76926575df914\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> * tram::Ext::Kitchensink::DialogTopic::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af40984203be124856962da32edaac92d\" name=\"af40984203be124856962da32edaac92d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af40984203be124856962da32edaac92d\">&#9670;&nbsp;</a></span>Gather()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DialogTopic::Gather </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>topics</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a92b21c6a95d462272577358cc702d16f\" name=\"a92b21c6a95d462272577358cc702d16f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92b21c6a95d462272577358cc702d16f\">&#9670;&nbsp;</a></span>GetValidNextTopics()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> &gt; tram::Ext::Kitchensink::DialogTopic::GetValidNextTopics </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afb41bd714afd933a421568dbd55cd99a\" name=\"afb41bd714afd933a421568dbd55cd99a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb41bd714afd933a421568dbd55cd99a\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::DialogTopic::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a62f08db43d9b1adc67326d1910b3bf0f\" name=\"a62f08db43d9b1adc67326d1910b3bf0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62f08db43d9b1adc67326d1910b3bf0f\">&#9670;&nbsp;</a></span>Make()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_topic.html\">DialogTopic</a> * tram::Ext::Kitchensink::DialogTopic::Make </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab41b9820fb4c0943c7e564fc790cf636\" name=\"ab41b9820fb4c0943c7e564fc790cf636\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab41b9820fb4c0943c7e564fc790cf636\">&#9670;&nbsp;</a></span>action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_action.html\">DialogAction</a> tram::Ext::Kitchensink::DialogTopic::action</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9210fb3d74cbf84d790863396b671a4b\" name=\"a9210fb3d74cbf84d790863396b671a4b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9210fb3d74cbf84d790863396b671a4b\">&#9670;&nbsp;</a></span>answer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogTopic::answer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa78509b95f65ce2d8974875004cd736f\" name=\"aa78509b95f65ce2d8974875004cd736f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa78509b95f65ce2d8974875004cd736f\">&#9670;&nbsp;</a></span>condition</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_dialog_condition.html\">DialogCondition</a> tram::Ext::Kitchensink::DialogTopic::condition</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\" name=\"a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b3b0ac1cc9d4f78bdbcc3c40e1dda9c\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogTopic::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad7c75b7bab534c7d74ea772608285213\" name=\"ad7c75b7bab534c7d74ea772608285213\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7c75b7bab534c7d74ea772608285213\">&#9670;&nbsp;</a></span>next_topics</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&gt; tram::Ext::Kitchensink::DialogTopic::next_topics</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a078f196f4d258ea6dda98a69263ceae8\" name=\"a078f196f4d258ea6dda98a69263ceae8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a078f196f4d258ea6dda98a69263ceae8\">&#9670;&nbsp;</a></span>prompt</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::DialogTopic::prompt</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaeb1f8e04e35e34ff363d9fd6b8eeb0a\" name=\"aaeb1f8e04e35e34ff363d9fd6b8eeb0a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaeb1f8e04e35e34ff363d9fd6b8eeb0a\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54\">DialogType</a> tram::Ext::Kitchensink::DialogTopic::type = <a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a9ab8b667486c023b0e1defc92b807c54a40a60c2f1361e5bbf88a083d32560ed5\">DIALOG_TOPIC</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8h_source.html\">dialog.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"dialog_8cpp.html\">dialog.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_effect-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Effect Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">attribute</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tag</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">tram::Ext::Kitchensink::Effect</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_effect.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Effect Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html\">Effect</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Effect Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a22bd1353836cf3bde3fed6137a801617\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a22bd1353836cf3bde3fed6137a801617\">attribute</a></td></tr>\n<tr class=\"separator:a22bd1353836cf3bde3fed6137a801617\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab233fd8a0eeb7e70c0be0b243d8ebe4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">name</a></td></tr>\n<tr class=\"separator:ab233fd8a0eeb7e70c0be0b243d8ebe4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00596a75be2bf65fa1d2e03dcfeb435b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a00596a75be2bf65fa1d2e03dcfeb435b\">tag</a></td></tr>\n<tr class=\"separator:a00596a75be2bf65fa1d2e03dcfeb435b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57feec2c1a36fad9bebd6884684f1fd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a57feec2c1a36fad9bebd6884684f1fd5\">value</a></td></tr>\n<tr class=\"separator:a57feec2c1a36fad9bebd6884684f1fd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1ed0d5f39ee959afa066eef7c765e546\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a1ed0d5f39ee959afa066eef7c765e546\">type</a></td></tr>\n<tr class=\"separator:a1ed0d5f39ee959afa066eef7c765e546\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72c383540fc6f43645df6c5c658bbf63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#a72c383540fc6f43645df6c5c658bbf63\">flags</a></td></tr>\n<tr class=\"separator:a72c383540fc6f43645df6c5c658bbf63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af2a9120bba4c62aabf617297bda2edaf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_effect.html#af2a9120bba4c62aabf617297bda2edaf\">time</a></td></tr>\n<tr class=\"separator:af2a9120bba4c62aabf617297bda2edaf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a22bd1353836cf3bde3fed6137a801617\" name=\"a22bd1353836cf3bde3fed6137a801617\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22bd1353836cf3bde3fed6137a801617\">&#9670;&nbsp;</a></span>attribute</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Effect::attribute</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72c383540fc6f43645df6c5c658bbf63\" name=\"a72c383540fc6f43645df6c5c658bbf63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72c383540fc6f43645df6c5c658bbf63\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Effect::flags</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab233fd8a0eeb7e70c0be0b243d8ebe4a\" name=\"ab233fd8a0eeb7e70c0be0b243d8ebe4a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab233fd8a0eeb7e70c0be0b243d8ebe4a\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Effect::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a00596a75be2bf65fa1d2e03dcfeb435b\" name=\"a00596a75be2bf65fa1d2e03dcfeb435b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00596a75be2bf65fa1d2e03dcfeb435b\">&#9670;&nbsp;</a></span>tag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Effect::tag</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af2a9120bba4c62aabf617297bda2edaf\" name=\"af2a9120bba4c62aabf617297bda2edaf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2a9120bba4c62aabf617297bda2edaf\">&#9670;&nbsp;</a></span>time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Effect::time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1ed0d5f39ee959afa066eef7c765e546\" name=\"a1ed0d5f39ee959afa066eef7c765e546\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ed0d5f39ee959afa066eef7c765e546\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Effect::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a57feec2c1a36fad9bebd6884684f1fd5\" name=\"a57feec2c1a36fad9bebd6884684f1fd5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57feec2c1a36fad9bebd6884684f1fd5\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::Effect::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"attributes_8h_source.html\">attributes.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_entity_children-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::EntityChildren Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">tram::Ext::Kitchensink::EntityChildren</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af\">children</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">tram::Ext::Kitchensink::EntityChildren</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::EntityChildren Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html\">EntityChildren</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::EntityChildren Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aa6ddfcd9329072939a5ee08991b275af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_entity_children.html#aa6ddfcd9329072939a5ee08991b275af\">children</a></td></tr>\n<tr class=\"separator:aa6ddfcd9329072939a5ee08991b275af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa6ddfcd9329072939a5ee08991b275af\" name=\"aa6ddfcd9329072939a5ee08991b275af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6ddfcd9329072939a5ee08991b275af\">&#9670;&nbsp;</a></span>children</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&gt; tram::Ext::Kitchensink::EntityChildren::children</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"entities_8cpp.html\">entities.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::FactionRank Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">character</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">loyalty</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">rank</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">tram::Ext::Kitchensink::FactionRank</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::FactionRank Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html\">FactionRank</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::FactionRank Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9b34eaee9f8316ebd6bc36e3e30aaed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a9b34eaee9f8316ebd6bc36e3e30aaed6\">character</a></td></tr>\n<tr class=\"separator:a9b34eaee9f8316ebd6bc36e3e30aaed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a571ec9260b660c807637a3a4645a171d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#a571ec9260b660c807637a3a4645a171d\">rank</a></td></tr>\n<tr class=\"separator:a571ec9260b660c807637a3a4645a171d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abeca783c9890c1faaadc5d8faefad347\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_rank.html#abeca783c9890c1faaadc5d8faefad347\">loyalty</a></td></tr>\n<tr class=\"separator:abeca783c9890c1faaadc5d8faefad347\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9b34eaee9f8316ebd6bc36e3e30aaed6\" name=\"a9b34eaee9f8316ebd6bc36e3e30aaed6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b34eaee9f8316ebd6bc36e3e30aaed6\">&#9670;&nbsp;</a></span>character</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_character.html\">Character</a>* tram::Ext::Kitchensink::FactionRank::character</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abeca783c9890c1faaadc5d8faefad347\" name=\"abeca783c9890c1faaadc5d8faefad347\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeca783c9890c1faaadc5d8faefad347\">&#9670;&nbsp;</a></span>loyalty</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::FactionRank::loyalty</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a571ec9260b660c807637a3a4645a171d\" name=\"a571ec9260b660c807637a3a4645a171d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a571ec9260b660c807637a3a4645a171d\">&#9670;&nbsp;</a></span>rank</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::FactionRank::rank</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::FactionRelation Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">tram::Ext::Kitchensink::FactionRelation</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">disposition</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">tram::Ext::Kitchensink::FactionRelation</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">faction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">tram::Ext::Kitchensink::FactionRelation</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::FactionRelation Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html\">FactionRelation</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::FactionRelation Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"character_8h_source.html\">character.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a71cc30c73f550a5fd4007bc494b44c29\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a71cc30c73f550a5fd4007bc494b44c29\">faction</a></td></tr>\n<tr class=\"separator:a71cc30c73f550a5fd4007bc494b44c29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2036e1b6447ae394e0a9e429f744e765\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_faction_relation.html#a2036e1b6447ae394e0a9e429f744e765\">disposition</a></td></tr>\n<tr class=\"separator:a2036e1b6447ae394e0a9e429f744e765\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2036e1b6447ae394e0a9e429f744e765\" name=\"a2036e1b6447ae394e0a9e429f744e765\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2036e1b6447ae394e0a9e429f744e765\">&#9670;&nbsp;</a></span>disposition</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::FactionRelation::disposition</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71cc30c73f550a5fd4007bc494b44c29\" name=\"a71cc30c73f550a5fd4007bc494b44c29\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71cc30c73f550a5fd4007bc494b44c29\">&#9670;&nbsp;</a></span>faction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_faction.html\">Faction</a>* tram::Ext::Kitchensink::FactionRelation::faction</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8h_source.html\">character.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">InitialAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InitialAttribute Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">tram::Ext::Kitchensink::InitialAttribute</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08\">attribute</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">tram::Ext::Kitchensink::InitialAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">tram::Ext::Kitchensink::InitialAttribute</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::InitialAttribute Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html\">InitialAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InitialAttribute Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a588b56210da3d6628ceb90e106684a08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a588b56210da3d6628ceb90e106684a08\">attribute</a></td></tr>\n<tr class=\"separator:a588b56210da3d6628ceb90e106684a08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5860f657091240f31bf7d180e659f9fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_initial_attribute.html#a5860f657091240f31bf7d180e659f9fd\">value</a></td></tr>\n<tr class=\"separator:a5860f657091240f31bf7d180e659f9fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a588b56210da3d6628ceb90e106684a08\" name=\"a588b56210da3d6628ceb90e106684a08\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a588b56210da3d6628ceb90e106684a08\">&#9670;&nbsp;</a></span>attribute</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::InitialAttribute::attribute</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5860f657091240f31bf7d180e659f9fd\" name=\"a5860f657091240f31bf7d180e659f9fd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5860f657091240f31bf7d180e659f9fd\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::InitialAttribute::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"character_8cpp.html\">character.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_inventory-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Inventory Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2c0396c8fb060c2d493fd03ec7ed8c75\">AddItem</a>(const ItemInstance &amp;item)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">AddItem</a>(name_t item_class, int count)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac1c51dfaf327a6cc8e97a144c77ea3af\">allow_overlap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ab84acc3793f4b4fdb00d1d8d12504e28\">Find</a>(id_t id)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">GetItemCount</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ad335fe0bcd5108519120b89a71d96d72\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ab4cffc0368c90c47c2e8aa0ffb3b59e0\">items</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">RemoveItem</a>(name_t item_class, int count)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a7eeb8790630a9aa7691922a6494d9d1e\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">tram::Ext::Kitchensink::Inventory</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Inventory Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Inventory Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a2c0396c8fb060c2d493fd03ec7ed8c75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a2c0396c8fb060c2d493fd03ec7ed8c75\">AddItem</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> &amp;item)</td></tr>\n<tr class=\"separator:a2c0396c8fb060c2d493fd03ec7ed8c75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac82a46651c702a1efac9917179d42263\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac82a46651c702a1efac9917179d42263\">AddItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)</td></tr>\n<tr class=\"separator:ac82a46651c702a1efac9917179d42263\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8de2d037b208dbd8efc4976e3a0a8547\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a8de2d037b208dbd8efc4976e3a0a8547\">RemoveItem</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class, int count)</td></tr>\n<tr class=\"separator:a8de2d037b208dbd8efc4976e3a0a8547\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4950e478978bec57a319ab31fa25c944\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a4950e478978bec57a319ab31fa25c944\">GetItemCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a4950e478978bec57a319ab31fa25c944\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:ab84acc3793f4b4fdb00d1d8d12504e28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ab84acc3793f4b4fdb00d1d8d12504e28\">Find</a> (<a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a> id)</td></tr>\n<tr class=\"separator:ab84acc3793f4b4fdb00d1d8d12504e28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab4cffc0368c90c47c2e8aa0ffb3b59e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ab4cffc0368c90c47c2e8aa0ffb3b59e0\">items</a></td></tr>\n<tr class=\"separator:ab4cffc0368c90c47c2e8aa0ffb3b59e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7eeb8790630a9aa7691922a6494d9d1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#a7eeb8790630a9aa7691922a6494d9d1e\">width</a> = 1</td></tr>\n<tr class=\"separator:a7eeb8790630a9aa7691922a6494d9d1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad335fe0bcd5108519120b89a71d96d72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ad335fe0bcd5108519120b89a71d96d72\">height</a> = 1</td></tr>\n<tr class=\"separator:ad335fe0bcd5108519120b89a71d96d72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1c51dfaf327a6cc8e97a144c77ea3af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html#ac1c51dfaf327a6cc8e97a144c77ea3af\">allow_overlap</a> = true</td></tr>\n<tr class=\"separator:ac1c51dfaf327a6cc8e97a144c77ea3af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2c0396c8fb060c2d493fd03ec7ed8c75\" name=\"a2c0396c8fb060c2d493fd03ec7ed8c75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c0396c8fb060c2d493fd03ec7ed8c75\">&#9670;&nbsp;</a></span>AddItem() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>item</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac82a46651c702a1efac9917179d42263\" name=\"ac82a46651c702a1efac9917179d42263\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac82a46651c702a1efac9917179d42263\">&#9670;&nbsp;</a></span>AddItem() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::AddItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab84acc3793f4b4fdb00d1d8d12504e28\" name=\"ab84acc3793f4b4fdb00d1d8d12504e28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab84acc3793f4b4fdb00d1d8d12504e28\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory.html\">Inventory</a> * tram::Ext::Kitchensink::Inventory::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td>\n          <td class=\"paramname\"><em>id</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4950e478978bec57a319ab31fa25c944\" name=\"a4950e478978bec57a319ab31fa25c944\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4950e478978bec57a319ab31fa25c944\">&#9670;&nbsp;</a></span>GetItemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::GetItemCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8de2d037b208dbd8efc4976e3a0a8547\" name=\"a8de2d037b208dbd8efc4976e3a0a8547\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8de2d037b208dbd8efc4976e3a0a8547\">&#9670;&nbsp;</a></span>RemoveItem()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::RemoveItem </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"><em>count</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac1c51dfaf327a6cc8e97a144c77ea3af\" name=\"ac1c51dfaf327a6cc8e97a144c77ea3af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1c51dfaf327a6cc8e97a144c77ea3af\">&#9670;&nbsp;</a></span>allow_overlap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::Inventory::allow_overlap = true</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad335fe0bcd5108519120b89a71d96d72\" name=\"ad335fe0bcd5108519120b89a71d96d72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad335fe0bcd5108519120b89a71d96d72\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::height = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab4cffc0368c90c47c2e8aa0ffb3b59e0\" name=\"ab4cffc0368c90c47c2e8aa0ffb3b59e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4cffc0368c90c47c2e8aa0ffb3b59e0\">&#9670;&nbsp;</a></span>items</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a>&gt; tram::Ext::Kitchensink::Inventory::items</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7eeb8790630a9aa7691922a6494d9d1e\" name=\"a7eeb8790630a9aa7691922a6494d9d1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7eeb8790630a9aa7691922a6494d9d1e\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::Inventory::width = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">InventoryFactoryInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InventoryFactoryInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">tram::Ext::Kitchensink::InventoryFactoryInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f\">clear</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e\">make</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">tram::Ext::Kitchensink::InventoryFactoryInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::InventoryFactoryInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html\">InventoryFactoryInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::InventoryFactoryInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a71e5a6e2f63dc97ca9bc99bdcda4634e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a71e5a6e2f63dc97ca9bc99bdcda4634e\">make</a> )(void) = nullptr</td></tr>\n<tr class=\"separator:a71e5a6e2f63dc97ca9bc99bdcda4634e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05a7d18aa421d23935e61ad99cb4e23f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_inventory_factory_info.html#a05a7d18aa421d23935e61ad99cb4e23f\">clear</a> )(<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *) = nullptr</td></tr>\n<tr class=\"separator:a05a7d18aa421d23935e61ad99cb4e23f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a05a7d18aa421d23935e61ad99cb4e23f\" name=\"a05a7d18aa421d23935e61ad99cb4e23f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05a7d18aa421d23935e61ad99cb4e23f\">&#9670;&nbsp;</a></span>clear</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Ext::Kitchensink::InventoryFactoryInfo::clear) (<a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71e5a6e2f63dc97ca9bc99bdcda4634e\" name=\"a71e5a6e2f63dc97ca9bc99bdcda4634e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71e5a6e2f63dc97ca9bc99bdcda4634e\">&#9670;&nbsp;</a></span>make</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_ext_1_1_kitchensink_1_1_inventory_manager.html\">InventoryManager</a> *(* tram::Ext::Kitchensink::InventoryFactoryInfo::make) (void) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_item_class-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemClass Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afc021b883a454640f5fec188885fe39c\">draw_hands</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">equipped_slot</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">Find</a>(name_t item_class)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">icon_font</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">icon_glyph</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7652d6508f7e48c2403b96eb626bd936\">idle_action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3a4ce92d706e7dea3a4c1cc5f07b6035\">primary_action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ae2ab9dadc514df51146c8bed3bd5582b\">secondary_action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">sprite_font</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">sprite_glyph</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">stack</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">viewmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">worldmodel</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">tram::Ext::Kitchensink::ItemClass</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ItemClass Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemClass Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a378e9829bffe817d03eec5844816015b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a378e9829bffe817d03eec5844816015b\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> item_class)</td></tr>\n<tr class=\"separator:a378e9829bffe817d03eec5844816015b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abeaafff54d0a01ac7f6dfb3299bfeafe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#abeaafff54d0a01ac7f6dfb3299bfeafe\">name</a></td></tr>\n<tr class=\"separator:abeaafff54d0a01ac7f6dfb3299bfeafe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac9e52c97862461717796ec8e567cd506\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac9e52c97862461717796ec8e567cd506\">viewmodel</a></td></tr>\n<tr class=\"separator:ac9e52c97862461717796ec8e567cd506\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af12183588fa7ee60e0f173f60a0e841a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af12183588fa7ee60e0f173f60a0e841a\">worldmodel</a></td></tr>\n<tr class=\"separator:af12183588fa7ee60e0f173f60a0e841a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3a4ce92d706e7dea3a4c1cc5f07b6035\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a3a4ce92d706e7dea3a4c1cc5f07b6035\">primary_action</a> = nullptr</td></tr>\n<tr class=\"separator:a3a4ce92d706e7dea3a4c1cc5f07b6035\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2ab9dadc514df51146c8bed3bd5582b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ae2ab9dadc514df51146c8bed3bd5582b\">secondary_action</a> = nullptr</td></tr>\n<tr class=\"separator:ae2ab9dadc514df51146c8bed3bd5582b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7652d6508f7e48c2403b96eb626bd936\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7652d6508f7e48c2403b96eb626bd936\">idle_action</a> = nullptr</td></tr>\n<tr class=\"separator:a7652d6508f7e48c2403b96eb626bd936\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afc021b883a454640f5fec188885fe39c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afc021b883a454640f5fec188885fe39c\">draw_hands</a> = false</td></tr>\n<tr class=\"separator:afc021b883a454640f5fec188885fe39c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13ad05e4fa0c7e16c8982ae4b2b54e25\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a13ad05e4fa0c7e16c8982ae4b2b54e25\">equipped_slot</a></td></tr>\n<tr class=\"separator:a13ad05e4fa0c7e16c8982ae4b2b54e25\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5446fb0643408689bf3e3228ae0e204a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a5446fb0643408689bf3e3228ae0e204a\">sprite_font</a> = 0</td></tr>\n<tr class=\"separator:a5446fb0643408689bf3e3228ae0e204a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac623e7fc63960697ee68bc58b83468ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ac623e7fc63960697ee68bc58b83468ac\">icon_font</a> = 0</td></tr>\n<tr class=\"separator:ac623e7fc63960697ee68bc58b83468ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01e50cc84077d0e95c63843fc9bf318e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a01e50cc84077d0e95c63843fc9bf318e\">sprite_glyph</a> = 0</td></tr>\n<tr class=\"separator:a01e50cc84077d0e95c63843fc9bf318e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7558e88a147da74a438982f195c16684\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7558e88a147da74a438982f195c16684\">icon_glyph</a> = 0</td></tr>\n<tr class=\"separator:a7558e88a147da74a438982f195c16684\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af21e13dba2bf5003456f23075e616c9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#af21e13dba2bf5003456f23075e616c9f\">width</a> = 1</td></tr>\n<tr class=\"separator:af21e13dba2bf5003456f23075e616c9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f62e3b657e2410379cb293cc1ac0da2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a0f62e3b657e2410379cb293cc1ac0da2\">height</a> = 1</td></tr>\n<tr class=\"separator:a0f62e3b657e2410379cb293cc1ac0da2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afe8942947a3e1323eec2ab314c64b2ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#afe8942947a3e1323eec2ab314c64b2ad\">stack</a> = 1</td></tr>\n<tr class=\"separator:afe8942947a3e1323eec2ab314c64b2ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2e897d231ebf85514642793c8595175\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#ad2e897d231ebf85514642793c8595175\">weight</a> = 0.0f</td></tr>\n<tr class=\"separator:ad2e897d231ebf85514642793c8595175\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7ae02dc32f976f0cfe1b54c09f65d84b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html#a7ae02dc32f976f0cfe1b54c09f65d84b\">attributes</a></td></tr>\n<tr class=\"separator:a7ae02dc32f976f0cfe1b54c09f65d84b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a378e9829bffe817d03eec5844816015b\" name=\"a378e9829bffe817d03eec5844816015b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a378e9829bffe817d03eec5844816015b\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_class.html\">ItemClass</a> * tram::Ext::Kitchensink::ItemClass::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item_class</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7ae02dc32f976f0cfe1b54c09f65d84b\" name=\"a7ae02dc32f976f0cfe1b54c09f65d84b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ae02dc32f976f0cfe1b54c09f65d84b\">&#9670;&nbsp;</a></span>attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_attribute.html\">Attribute</a>&gt; tram::Ext::Kitchensink::ItemClass::attributes</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afc021b883a454640f5fec188885fe39c\" name=\"afc021b883a454640f5fec188885fe39c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc021b883a454640f5fec188885fe39c\">&#9670;&nbsp;</a></span>draw_hands</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::ItemClass::draw_hands = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a13ad05e4fa0c7e16c8982ae4b2b54e25\" name=\"a13ad05e4fa0c7e16c8982ae4b2b54e25\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13ad05e4fa0c7e16c8982ae4b2b54e25\">&#9670;&nbsp;</a></span>equipped_slot</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::equipped_slot</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f62e3b657e2410379cb293cc1ac0da2\" name=\"a0f62e3b657e2410379cb293cc1ac0da2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f62e3b657e2410379cb293cc1ac0da2\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::height = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac623e7fc63960697ee68bc58b83468ac\" name=\"ac623e7fc63960697ee68bc58b83468ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac623e7fc63960697ee68bc58b83468ac\">&#9670;&nbsp;</a></span>icon_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Kitchensink::ItemClass::icon_font = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7558e88a147da74a438982f195c16684\" name=\"a7558e88a147da74a438982f195c16684\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7558e88a147da74a438982f195c16684\">&#9670;&nbsp;</a></span>icon_glyph</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> tram::Ext::Kitchensink::ItemClass::icon_glyph = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7652d6508f7e48c2403b96eb626bd936\" name=\"a7652d6508f7e48c2403b96eb626bd936\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7652d6508f7e48c2403b96eb626bd936\">&#9670;&nbsp;</a></span>idle_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a> tram::Ext::Kitchensink::ItemClass::idle_action = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abeaafff54d0a01ac7f6dfb3299bfeafe\" name=\"abeaafff54d0a01ac7f6dfb3299bfeafe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeaafff54d0a01ac7f6dfb3299bfeafe\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a4ce92d706e7dea3a4c1cc5f07b6035\" name=\"a3a4ce92d706e7dea3a4c1cc5f07b6035\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a4ce92d706e7dea3a4c1cc5f07b6035\">&#9670;&nbsp;</a></span>primary_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a> tram::Ext::Kitchensink::ItemClass::primary_action = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2ab9dadc514df51146c8bed3bd5582b\" name=\"ae2ab9dadc514df51146c8bed3bd5582b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2ab9dadc514df51146c8bed3bd5582b\">&#9670;&nbsp;</a></span>secondary_action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#a4b23e475cb12c9bd604bb44cc06e52d8\">item_action_func</a> tram::Ext::Kitchensink::ItemClass::secondary_action = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5446fb0643408689bf3e3228ae0e204a\" name=\"a5446fb0643408689bf3e3228ae0e204a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5446fb0643408689bf3e3228ae0e204a\">&#9670;&nbsp;</a></span>sprite_font</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#ad72e4051d38000777cac376d29fc18a1\">GUI::font_t</a> tram::Ext::Kitchensink::ItemClass::sprite_font = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a01e50cc84077d0e95c63843fc9bf318e\" name=\"a01e50cc84077d0e95c63843fc9bf318e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01e50cc84077d0e95c63843fc9bf318e\">&#9670;&nbsp;</a></span>sprite_glyph</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html#afecdfd821a1e89c4d62d0f8b420ca33a\">GUI::glyph_t</a> tram::Ext::Kitchensink::ItemClass::sprite_glyph = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe8942947a3e1323eec2ab314c64b2ad\" name=\"afe8942947a3e1323eec2ab314c64b2ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe8942947a3e1323eec2ab314c64b2ad\">&#9670;&nbsp;</a></span>stack</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::stack = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac9e52c97862461717796ec8e567cd506\" name=\"ac9e52c97862461717796ec8e567cd506\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9e52c97862461717796ec8e567cd506\">&#9670;&nbsp;</a></span>viewmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::viewmodel</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad2e897d231ebf85514642793c8595175\" name=\"ad2e897d231ebf85514642793c8595175\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2e897d231ebf85514642793c8595175\">&#9670;&nbsp;</a></span>weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Ext::Kitchensink::ItemClass::weight = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af21e13dba2bf5003456f23075e616c9f\" name=\"af21e13dba2bf5003456f23075e616c9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af21e13dba2bf5003456f23075e616c9f\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemClass::width = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af12183588fa7ee60e0f173f60a0e841a\" name=\"af12183588fa7ee60e0f173f60a0e841a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af12183588fa7ee60e0f173f60a0e841a\">&#9670;&nbsp;</a></span>worldmodel</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemClass::worldmodel</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8cpp.html\">inventory.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_item_instance-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemInstance Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">compartment</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">equipped</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">item_class</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">tram::Ext::Kitchensink::ItemInstance</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::ItemInstance Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html\">ItemInstance</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::ItemInstance Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad30fe5398e295fa0edc24ee7e1b3f06f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ad30fe5398e295fa0edc24ee7e1b3f06f\">item_class</a></td></tr>\n<tr class=\"separator:ad30fe5398e295fa0edc24ee7e1b3f06f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16fa6fa3ba81cb1533d9eb56446e7090\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a16fa6fa3ba81cb1533d9eb56446e7090\">compartment</a></td></tr>\n<tr class=\"separator:a16fa6fa3ba81cb1533d9eb56446e7090\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af357d83441c2dc2f703d809fdc3585a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#af357d83441c2dc2f703d809fdc3585a0\">count</a> = 1</td></tr>\n<tr class=\"separator:af357d83441c2dc2f703d809fdc3585a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba27042000b273495cc18583b811d66a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#aba27042000b273495cc18583b811d66a\">x</a> = 0</td></tr>\n<tr class=\"separator:aba27042000b273495cc18583b811d66a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1af2c957c7634bcd1d1ece6f0436c87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#ab1af2c957c7634bcd1d1ece6f0436c87\">y</a> = 0</td></tr>\n<tr class=\"separator:ab1af2c957c7634bcd1d1ece6f0436c87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8a5bc739c95aa6b49e82d5b4325d250f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_item_instance.html#a8a5bc739c95aa6b49e82d5b4325d250f\">equipped</a> = false</td></tr>\n<tr class=\"separator:a8a5bc739c95aa6b49e82d5b4325d250f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a16fa6fa3ba81cb1533d9eb56446e7090\" name=\"a16fa6fa3ba81cb1533d9eb56446e7090\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16fa6fa3ba81cb1533d9eb56446e7090\">&#9670;&nbsp;</a></span>compartment</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemInstance::compartment</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af357d83441c2dc2f703d809fdc3585a0\" name=\"af357d83441c2dc2f703d809fdc3585a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af357d83441c2dc2f703d809fdc3585a0\">&#9670;&nbsp;</a></span>count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemInstance::count = 1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a5bc739c95aa6b49e82d5b4325d250f\" name=\"a8a5bc739c95aa6b49e82d5b4325d250f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a5bc739c95aa6b49e82d5b4325d250f\">&#9670;&nbsp;</a></span>equipped</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Ext::Kitchensink::ItemInstance::equipped = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad30fe5398e295fa0edc24ee7e1b3f06f\" name=\"ad30fe5398e295fa0edc24ee7e1b3f06f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad30fe5398e295fa0edc24ee7e1b3f06f\">&#9670;&nbsp;</a></span>item_class</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::ItemInstance::item_class</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aba27042000b273495cc18583b811d66a\" name=\"aba27042000b273495cc18583b811d66a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba27042000b273495cc18583b811d66a\">&#9670;&nbsp;</a></span>x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemInstance::x = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1af2c957c7634bcd1d1ece6f0436c87\" name=\"ab1af2c957c7634bcd1d1ece6f0436c87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1af2c957c7634bcd1d1ece6f0436c87\">&#9670;&nbsp;</a></span>y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::ItemInstance::y = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"inventory_8h_source.html\">inventory.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Quest Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">Find</a>(name_t quest)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">FindAll</a>(bool unknown_also)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">FireTrigger</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">GetVariable</a>(name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">Init</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">LoadFromDisk</a>(const char *filename)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">Quest</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">SetVariable</a>(name_t, Value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">triggers</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">variables</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">tram::Ext::Kitchensink::Quest</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::Quest Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::Quest Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a683519bebd8b57ca04103a79858ca885\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a683519bebd8b57ca04103a79858ca885\">Quest</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a>)</td></tr>\n<tr class=\"separator:a683519bebd8b57ca04103a79858ca885\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28b905e9fb5bec79e66daad45578a60c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a28b905e9fb5bec79e66daad45578a60c\">GetVariable</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a28b905e9fb5bec79e66daad45578a60c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a923d2830ead5ba315b40a9b8551dda7e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a923d2830ead5ba315b40a9b8551dda7e\">SetVariable</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>)</td></tr>\n<tr class=\"separator:a923d2830ead5ba315b40a9b8551dda7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9a78d09f8a3235d107d07420f867184\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ab9a78d09f8a3235d107d07420f867184\">FireTrigger</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:ab9a78d09f8a3235d107d07420f867184\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a45dcecc77ac3add50354215a87117f58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a45dcecc77ac3add50354215a87117f58\">Init</a> ()</td></tr>\n<tr class=\"separator:a45dcecc77ac3add50354215a87117f58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada625bbce2632f2d828a2f3b721f9165\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> * &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#ada625bbce2632f2d828a2f3b721f9165\">FindAll</a> (bool unknown_also)</td></tr>\n<tr class=\"separator:ada625bbce2632f2d828a2f3b721f9165\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadf35ec9fef560168ee449692458e1d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#aadf35ec9fef560168ee449692458e1d8\">LoadFromDisk</a> (const char *filename)</td></tr>\n<tr class=\"separator:aadf35ec9fef560168ee449692458e1d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a678d358f3b12331a4f01ac12cd161773\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a678d358f3b12331a4f01ac12cd161773\">Find</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> quest)</td></tr>\n<tr class=\"separator:a678d358f3b12331a4f01ac12cd161773\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4970c1dac3ff3944988953b026fe61a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#a4970c1dac3ff3944988953b026fe61a7\">name</a></td></tr>\n<tr class=\"separator:a4970c1dac3ff3944988953b026fe61a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abaeea35c7bce4071e8d4276215c78969\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#abaeea35c7bce4071e8d4276215c78969\">variables</a></td></tr>\n<tr class=\"separator:abaeea35c7bce4071e8d4276215c78969\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af46e76fae1a86683f0b2221b995c62aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html#af46e76fae1a86683f0b2221b995c62aa\">triggers</a></td></tr>\n<tr class=\"separator:af46e76fae1a86683f0b2221b995c62aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a683519bebd8b57ca04103a79858ca885\" name=\"a683519bebd8b57ca04103a79858ca885\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a683519bebd8b57ca04103a79858ca885\">&#9670;&nbsp;</a></span>Quest()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::Quest::Quest </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a678d358f3b12331a4f01ac12cd161773\" name=\"a678d358f3b12331a4f01ac12cd161773\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a678d358f3b12331a4f01ac12cd161773\">&#9670;&nbsp;</a></span>Find()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> * tram::Ext::Kitchensink::Quest::Find </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ada625bbce2632f2d828a2f3b721f9165\" name=\"ada625bbce2632f2d828a2f3b721f9165\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada625bbce2632f2d828a2f3b721f9165\">&#9670;&nbsp;</a></span>FindAll()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest.html\">Quest</a> * &gt; tram::Ext::Kitchensink::Quest::FindAll </td>\n          <td>(</td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>unknown_also</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9a78d09f8a3235d107d07420f867184\" name=\"ab9a78d09f8a3235d107d07420f867184\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9a78d09f8a3235d107d07420f867184\">&#9670;&nbsp;</a></span>FireTrigger()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Quest::FireTrigger </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a28b905e9fb5bec79e66daad45578a60c\" name=\"a28b905e9fb5bec79e66daad45578a60c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28b905e9fb5bec79e66daad45578a60c\">&#9670;&nbsp;</a></span>GetVariable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Ext::Kitchensink::Quest::GetVariable </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a45dcecc77ac3add50354215a87117f58\" name=\"a45dcecc77ac3add50354215a87117f58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45dcecc77ac3add50354215a87117f58\">&#9670;&nbsp;</a></span>Init()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Quest::Init </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aadf35ec9fef560168ee449692458e1d8\" name=\"aadf35ec9fef560168ee449692458e1d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadf35ec9fef560168ee449692458e1d8\">&#9670;&nbsp;</a></span>LoadFromDisk()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Quest::LoadFromDisk </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>filename</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a923d2830ead5ba315b40a9b8551dda7e\" name=\"a923d2830ead5ba315b40a9b8551dda7e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a923d2830ead5ba315b40a9b8551dda7e\">&#9670;&nbsp;</a></span>SetVariable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::Quest::SetVariable </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4970c1dac3ff3944988953b026fe61a7\" name=\"a4970c1dac3ff3944988953b026fe61a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4970c1dac3ff3944988953b026fe61a7\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::Quest::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af46e76fae1a86683f0b2221b995c62aa\" name=\"af46e76fae1a86683f0b2221b995c62aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af46e76fae1a86683f0b2221b995c62aa\">&#9670;&nbsp;</a></span>triggers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a>&gt; tram::Ext::Kitchensink::Quest::triggers</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abaeea35c7bce4071e8d4276215c78969\" name=\"abaeea35c7bce4071e8d4276215c78969\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abaeea35c7bce4071e8d4276215c78969\">&#9670;&nbsp;</a></span>variables</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&gt; tram::Ext::Kitchensink::Quest::variables</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestTrigger Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">condition</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">SetIncrement</a>(name_t variable)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">SetObjective</a>(name_t name, name_t state)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">SetValue</a>(name_t variable, Value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">tram::Ext::Kitchensink::QuestTrigger</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::QuestTrigger Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html\">QuestTrigger</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestTrigger Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aded1963fcaa2fe9e73bd27258d16b7af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#aded1963fcaa2fe9e73bd27258d16b7af\">SetValue</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a>, <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>)</td></tr>\n<tr class=\"separator:aded1963fcaa2fe9e73bd27258d16b7af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd10df0459a57b9b8384a697d1a67ea8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#acd10df0459a57b9b8384a697d1a67ea8\">SetObjective</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">name</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> state)</td></tr>\n<tr class=\"separator:acd10df0459a57b9b8384a697d1a67ea8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac60462a520bb57318bea757ecbfb9db5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#ac60462a520bb57318bea757ecbfb9db5\">SetIncrement</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a>)</td></tr>\n<tr class=\"separator:ac60462a520bb57318bea757ecbfb9db5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2c73379c1b2dc328379689c441b4f6c8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a2c73379c1b2dc328379689c441b4f6c8\">name</a></td></tr>\n<tr class=\"separator:a2c73379c1b2dc328379689c441b4f6c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7913f7b41be31d418a7811479db0a6e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a7913f7b41be31d418a7811479db0a6e5\">type</a></td></tr>\n<tr class=\"separator:a7913f7b41be31d418a7811479db0a6e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b50d062701669c3cd83ae8f4ecced33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a8b50d062701669c3cd83ae8f4ecced33\">condition</a></td></tr>\n<tr class=\"separator:a8b50d062701669c3cd83ae8f4ecced33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d0df39a718f4aea2e2bbb77317db257\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a4d0df39a718f4aea2e2bbb77317db257\">variable</a></td></tr>\n<tr class=\"separator:a4d0df39a718f4aea2e2bbb77317db257\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9cce590fff9284b7c0e791495517aa8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_trigger.html#a9cce590fff9284b7c0e791495517aa8e\">value</a></td></tr>\n<tr class=\"separator:a9cce590fff9284b7c0e791495517aa8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac60462a520bb57318bea757ecbfb9db5\" name=\"ac60462a520bb57318bea757ecbfb9db5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac60462a520bb57318bea757ecbfb9db5\">&#9670;&nbsp;</a></span>SetIncrement()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestTrigger::SetIncrement </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>variable</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acd10df0459a57b9b8384a697d1a67ea8\" name=\"acd10df0459a57b9b8384a697d1a67ea8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd10df0459a57b9b8384a697d1a67ea8\">&#9670;&nbsp;</a></span>SetObjective()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestTrigger::SetObjective </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>state</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aded1963fcaa2fe9e73bd27258d16b7af\" name=\"aded1963fcaa2fe9e73bd27258d16b7af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aded1963fcaa2fe9e73bd27258d16b7af\">&#9670;&nbsp;</a></span>SetValue()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Kitchensink::QuestTrigger::SetValue </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>variable</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8b50d062701669c3cd83ae8f4ecced33\" name=\"a8b50d062701669c3cd83ae8f4ecced33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b50d062701669c3cd83ae8f4ecced33\">&#9670;&nbsp;</a></span>condition</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestTrigger::condition</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2c73379c1b2dc328379689c441b4f6c8\" name=\"a2c73379c1b2dc328379689c441b4f6c8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c73379c1b2dc328379689c441b4f6c8\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestTrigger::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7913f7b41be31d418a7811479db0a6e5\" name=\"a7913f7b41be31d418a7811479db0a6e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7913f7b41be31d418a7811479db0a6e5\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> tram::Ext::Kitchensink::QuestTrigger::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9cce590fff9284b7c0e791495517aa8e\" name=\"a9cce590fff9284b7c0e791495517aa8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cce590fff9284b7c0e791495517aa8e\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Ext::Kitchensink::QuestTrigger::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d0df39a718f4aea2e2bbb77317db257\" name=\"a4d0df39a718f4aea2e2bbb77317db257\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d0df39a718f4aea2e2bbb77317db257\">&#9670;&nbsp;</a></span>variable</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestTrigger::variable</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestVariable Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">And</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">comparison</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">entity</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">Evaluate</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">Greater</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">GreaterOrEqual</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">Is</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">IsNot</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">item</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aabc1c4ce438e88d992880d126648a343\">item</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">ItemCount</a>(name_t, name_t, name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">Less</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">LessOrEqual</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">Not</a>(name_t, name_t, name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">Objective</a>(name_t, name_t, name_t, name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">objective</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">operator=</a>(const QuestVariable &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">Or</a>(name_t, name_t, name_t, name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">quest1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">quest2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa398510013c7875c7ac6d3d1b0b3fdd2\">QuestVariable</a>(const QuestVariable &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">script</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">Script</a>(name_t, name_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">subtitle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">title</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad77d58b02c65c98115798f167a4a6cb4\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">Value</a>(name_t, value_t)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">variable1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">variable2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">~QuestVariable</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">tram::Ext::Kitchensink::QuestVariable</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Kitchensink::QuestVariable Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html\">Kitchensink</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Kitchensink::QuestVariable Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a59fa09daf71db92b76d7543e45dabefd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a59fa09daf71db92b76d7543e45dabefd\">QuestVariable</a> ()</td></tr>\n<tr class=\"separator:a59fa09daf71db92b76d7543e45dabefd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fe85e14b47e33482e46c8138d76d5ba\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a0fe85e14b47e33482e46c8138d76d5ba\">~QuestVariable</a> ()</td></tr>\n<tr class=\"separator:a0fe85e14b47e33482e46c8138d76d5ba\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa398510013c7875c7ac6d3d1b0b3fdd2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa398510013c7875c7ac6d3d1b0b3fdd2\">QuestVariable</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp;)</td></tr>\n<tr class=\"separator:aa398510013c7875c7ac6d3d1b0b3fdd2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ab73b956ef675005147fe16651de78b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a4ab73b956ef675005147fe16651de78b\">operator=</a> (const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp;)</td></tr>\n<tr class=\"separator:a4ab73b956ef675005147fe16651de78b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad202900b3ff880d1dfd139b9e9c6029d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad202900b3ff880d1dfd139b9e9c6029d\">Evaluate</a> ()</td></tr>\n<tr class=\"separator:ad202900b3ff880d1dfd139b9e9c6029d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a18c205b49926dee3f171363f65249349\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a18c205b49926dee3f171363f65249349\">Value</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:a18c205b49926dee3f171363f65249349\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac300d9727ec2d9e12f536168075c07ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ac300d9727ec2d9e12f536168075c07ef\">Objective</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:ac300d9727ec2d9e12f536168075c07ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a36e6f0dae5f477802b91bd4cafe72f56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a36e6f0dae5f477802b91bd4cafe72f56\">Is</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:a36e6f0dae5f477802b91bd4cafe72f56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa919ae019059ff89faca34a829962fa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa919ae019059ff89faca34a829962fa0\">IsNot</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:aa919ae019059ff89faca34a829962fa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7279723d0adb71d2ac2bb9a960f3029d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7279723d0adb71d2ac2bb9a960f3029d\">Greater</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:a7279723d0adb71d2ac2bb9a960f3029d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aacf971b4d14c9d97ab7f522f53409a35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aacf971b4d14c9d97ab7f522f53409a35\">GreaterOrEqual</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:aacf971b4d14c9d97ab7f522f53409a35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60afb565dd3a1e281129e5564ec3d3c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a60afb565dd3a1e281129e5564ec3d3c1\">Less</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:a60afb565dd3a1e281129e5564ec3d3c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa15fbf47249f3a14cfa3e1bd33a10b56\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa15fbf47249f3a14cfa3e1bd33a10b56\">LessOrEqual</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:aa15fbf47249f3a14cfa3e1bd33a10b56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aec3fd459b2220d63b3aae47c2dfbb71a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aec3fd459b2220d63b3aae47c2dfbb71a\">And</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:aec3fd459b2220d63b3aae47c2dfbb71a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5a8c1d8a4ba4f4059112ea7dbe9a2b65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">Or</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>)</td></tr>\n<tr class=\"separator:a5a8c1d8a4ba4f4059112ea7dbe9a2b65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a836e78370020eb0f3939b0cbb7d67b5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a836e78370020eb0f3939b0cbb7d67b5d\">Not</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a836e78370020eb0f3939b0cbb7d67b5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33142a6aaa4cbf2fab8888fc13a1477c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a33142a6aaa4cbf2fab8888fc13a1477c\">Script</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a33142a6aaa4cbf2fab8888fc13a1477c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27ee71a112e47b3caf0e8e167653a3ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a27ee71a112e47b3caf0e8e167653a3ed\">ItemCount</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>, <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)</td></tr>\n<tr class=\"separator:a27ee71a112e47b3caf0e8e167653a3ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abdaedd33351ad672e211fecaabf207bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">name</a></td></tr>\n<tr class=\"separator:abdaedd33351ad672e211fecaabf207bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7d0db342f3f3eed6bc5d8e2bad2bea5d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">type</a></td></tr>\n<tr class=\"separator:a7d0db342f3f3eed6bc5d8e2bad2bea5d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0fd318f848e726a2a6a95add79feec\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a077af6166e491b4b2470f1aae9f1800b\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a14ed87b5d002e703f2a71aafc70ae612\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_value.html\">Value</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aa38c56e4efe619fcefd99a1f87047c88\">value</a></td></tr>\n<tr class=\"separator:a14ed87b5d002e703f2a71aafc70ae612\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a077af6166e491b4b2470f1aae9f1800b\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad77d58b02c65c98115798f167a4a6cb4\">value</a></td></tr>\n<tr class=\"separator:a077af6166e491b4b2470f1aae9f1800b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f0894c45713ca7dd676edbece3beedc\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a94f1f60ca87ab8b5549b563ecd94499d\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a9fea540d2b9a8fec5b7bec83329d33fa\">value</a></td></tr>\n<tr class=\"separator:a94f1f60ca87ab8b5549b563ecd94499d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac22c08346e71c8ce766831017ed46a33\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad6574937d3491e89d92d0fab8f3ec746\">title</a></td></tr>\n<tr class=\"separator:ac22c08346e71c8ce766831017ed46a33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a35d76c452e0801e62c656dfcfcbc2c3f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a89dca0079262b8780f559d02c7865799\">subtitle</a></td></tr>\n<tr class=\"separator:a35d76c452e0801e62c656dfcfcbc2c3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8f0894c45713ca7dd676edbece3beedc\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a7021e12190dd43a86f02ea92fc0bb700\">objective</a></td></tr>\n<tr class=\"separator:a8f0894c45713ca7dd676edbece3beedc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10d66debb64152a66a5759022f50eaef\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a34e0542c0155e65c0385d3634bddca78\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#abdaedd33351ad672e211fecaabf207bd\">name</a></td></tr>\n<tr class=\"separator:a34e0542c0155e65c0385d3634bddca78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a10d66debb64152a66a5759022f50eaef\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5db92704bb3700f46790b108525400e5\">script</a></td></tr>\n<tr class=\"separator:a10d66debb64152a66a5759022f50eaef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac61ab7d1529e1632ac80ac213e5c029b\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a88308ba547cf591c3d36a3182fe44df4\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a278406d8202cc8c9ec06e6f7970d58ed\">quest1</a></td></tr>\n<tr class=\"separator:a88308ba547cf591c3d36a3182fe44df4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9cb62c7dd84c02a06bd837790b9203e4\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#ad57c101bc6373283564cf19973ef47ce\">variable1</a></td></tr>\n<tr class=\"separator:a9cb62c7dd84c02a06bd837790b9203e4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac451bf5d9b98fcf5df1a8b65ba6bcf81\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#af8ab60abb939875937f7a0ef894c45e1\">quest2</a></td></tr>\n<tr class=\"separator:ac451bf5d9b98fcf5df1a8b65ba6bcf81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea39bdd25abba85ee2e840d4bf54efbf\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a3c9c1cd6c108fb87f86e98fccc21a7ff\">variable2</a></td></tr>\n<tr class=\"separator:aea39bdd25abba85ee2e840d4bf54efbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac61ab7d1529e1632ac80ac213e5c029b\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a21b68aede57e29c31f3abac8c0c4fef6\">comparison</a></td></tr>\n<tr class=\"separator:ac61ab7d1529e1632ac80ac213e5c029b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9c215e1c658b3202c81b4c1e0caeaf3\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:af74011f53eebff23b24a01a35af8b6ae\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a6cbf029ca43aa8a9780b4beb654d65be\">entity</a></td></tr>\n<tr class=\"separator:af74011f53eebff23b24a01a35af8b6ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acb0565c9be5b215c753dbe875658850e\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a074b98a66cd3f7404053c41d564be669\">item</a></td></tr>\n<tr class=\"separator:acb0565c9be5b215c753dbe875658850e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f6e7cfc58b3710520f5b5894a4769e8\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;int&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#a5c5f6e13ed0ceddb4b4507c59db2423d\">count</a></td></tr>\n<tr class=\"separator:a5f6e7cfc58b3710520f5b5894a4769e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9c215e1c658b3202c81b4c1e0caeaf3\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html#aabc1c4ce438e88d992880d126648a343\">item</a></td></tr>\n<tr class=\"separator:ad9c215e1c658b3202c81b4c1e0caeaf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf0fd318f848e726a2a6a95add79feec\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:acf0fd318f848e726a2a6a95add79feec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a59fa09daf71db92b76d7543e45dabefd\" name=\"a59fa09daf71db92b76d7543e45dabefd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59fa09daf71db92b76d7543e45dabefd\">&#9670;&nbsp;</a></span>QuestVariable() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::QuestVariable::QuestVariable </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0fe85e14b47e33482e46c8138d76d5ba\" name=\"a0fe85e14b47e33482e46c8138d76d5ba\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fe85e14b47e33482e46c8138d76d5ba\">&#9670;&nbsp;</a></span>~QuestVariable()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::QuestVariable::~QuestVariable </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa398510013c7875c7ac6d3d1b0b3fdd2\" name=\"aa398510013c7875c7ac6d3d1b0b3fdd2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa398510013c7875c7ac6d3d1b0b3fdd2\">&#9670;&nbsp;</a></span>QuestVariable() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Ext::Kitchensink::QuestVariable::QuestVariable </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aec3fd459b2220d63b3aae47c2dfbb71a\" name=\"aec3fd459b2220d63b3aae47c2dfbb71a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec3fd459b2220d63b3aae47c2dfbb71a\">&#9670;&nbsp;</a></span>And()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::And </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad202900b3ff880d1dfd139b9e9c6029d\" name=\"ad202900b3ff880d1dfd139b9e9c6029d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad202900b3ff880d1dfd139b9e9c6029d\">&#9670;&nbsp;</a></span>Evaluate()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Ext::Kitchensink::QuestVariable::Evaluate </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7279723d0adb71d2ac2bb9a960f3029d\" name=\"a7279723d0adb71d2ac2bb9a960f3029d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7279723d0adb71d2ac2bb9a960f3029d\">&#9670;&nbsp;</a></span>Greater()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Greater </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aacf971b4d14c9d97ab7f522f53409a35\" name=\"aacf971b4d14c9d97ab7f522f53409a35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aacf971b4d14c9d97ab7f522f53409a35\">&#9670;&nbsp;</a></span>GreaterOrEqual()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::GreaterOrEqual </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a36e6f0dae5f477802b91bd4cafe72f56\" name=\"a36e6f0dae5f477802b91bd4cafe72f56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36e6f0dae5f477802b91bd4cafe72f56\">&#9670;&nbsp;</a></span>Is()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Is </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa919ae019059ff89faca34a829962fa0\" name=\"aa919ae019059ff89faca34a829962fa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa919ae019059ff89faca34a829962fa0\">&#9670;&nbsp;</a></span>IsNot()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::IsNot </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a27ee71a112e47b3caf0e8e167653a3ed\" name=\"a27ee71a112e47b3caf0e8e167653a3ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27ee71a112e47b3caf0e8e167653a3ed\">&#9670;&nbsp;</a></span>ItemCount()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::ItemCount </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>entity</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>item</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a60afb565dd3a1e281129e5564ec3d3c1\" name=\"a60afb565dd3a1e281129e5564ec3d3c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60afb565dd3a1e281129e5564ec3d3c1\">&#9670;&nbsp;</a></span>Less()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Less </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa15fbf47249f3a14cfa3e1bd33a10b56\" name=\"aa15fbf47249f3a14cfa3e1bd33a10b56\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa15fbf47249f3a14cfa3e1bd33a10b56\">&#9670;&nbsp;</a></span>LessOrEqual()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::LessOrEqual </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a836e78370020eb0f3939b0cbb7d67b5d\" name=\"a836e78370020eb0f3939b0cbb7d67b5d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a836e78370020eb0f3939b0cbb7d67b5d\">&#9670;&nbsp;</a></span>Not()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Not </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac300d9727ec2d9e12f536168075c07ef\" name=\"ac300d9727ec2d9e12f536168075c07ef\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac300d9727ec2d9e12f536168075c07ef\">&#9670;&nbsp;</a></span>Objective()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Objective </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>title</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>description</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ab73b956ef675005147fe16651de78b\" name=\"a4ab73b956ef675005147fe16651de78b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ab73b956ef675005147fe16651de78b\">&#9670;&nbsp;</a></span>operator=()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp; tram::Ext::Kitchensink::QuestVariable::operator= </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a8c1d8a4ba4f4059112ea7dbe9a2b65\" name=\"a5a8c1d8a4ba4f4059112ea7dbe9a2b65\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a8c1d8a4ba4f4059112ea7dbe9a2b65\">&#9670;&nbsp;</a></span>Or()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Or </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>quest2</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>var2</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a33142a6aaa4cbf2fab8888fc13a1477c\" name=\"a33142a6aaa4cbf2fab8888fc13a1477c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33142a6aaa4cbf2fab8888fc13a1477c\">&#9670;&nbsp;</a></span>Script()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Script </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>script</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a18c205b49926dee3f171363f65249349\" name=\"a18c205b49926dee3f171363f65249349\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18c205b49926dee3f171363f65249349\">&#9670;&nbsp;</a></span>Value()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_kitchensink_1_1_quest_variable.html\">QuestVariable</a> tram::Ext::Kitchensink::QuestVariable::Value </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>&#160;</td>\n          <td class=\"paramname\"><em>value</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"acf0fd318f848e726a2a6a95add79feec\" name=\"acf0fd318f848e726a2a6a95add79feec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf0fd318f848e726a2a6a95add79feec\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Ext::Kitchensink::QuestVariable::@22</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a21b68aede57e29c31f3abac8c0c4fef6\" name=\"a21b68aede57e29c31f3abac8c0c4fef6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a21b68aede57e29c31f3abac8c0c4fef6\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Ext::Kitchensink::QuestVariable::comparison</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c5f6e13ed0ceddb4b4507c59db2423d\" name=\"a5c5f6e13ed0ceddb4b4507c59db2423d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c5f6e13ed0ceddb4b4507c59db2423d\">&#9670;&nbsp;</a></span>count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Ext::Kitchensink::QuestVariable::count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6cbf029ca43aa8a9780b4beb654d65be\" name=\"a6cbf029ca43aa8a9780b4beb654d65be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6cbf029ca43aa8a9780b4beb654d65be\">&#9670;&nbsp;</a></span>entity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::entity</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a074b98a66cd3f7404053c41d564be669\" name=\"a074b98a66cd3f7404053c41d564be669\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a074b98a66cd3f7404053c41d564be669\">&#9670;&nbsp;</a></span>item <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::item</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aabc1c4ce438e88d992880d126648a343\" name=\"aabc1c4ce438e88d992880d126648a343\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aabc1c4ce438e88d992880d126648a343\">&#9670;&nbsp;</a></span> <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Ext::Kitchensink::QuestVariable::item</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdaedd33351ad672e211fecaabf207bd\" name=\"abdaedd33351ad672e211fecaabf207bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdaedd33351ad672e211fecaabf207bd\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7021e12190dd43a86f02ea92fc0bb700\" name=\"a7021e12190dd43a86f02ea92fc0bb700\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7021e12190dd43a86f02ea92fc0bb700\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Ext::Kitchensink::QuestVariable::objective</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a278406d8202cc8c9ec06e6f7970d58ed\" name=\"a278406d8202cc8c9ec06e6f7970d58ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a278406d8202cc8c9ec06e6f7970d58ed\">&#9670;&nbsp;</a></span>quest1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::quest1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af8ab60abb939875937f7a0ef894c45e1\" name=\"af8ab60abb939875937f7a0ef894c45e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8ab60abb939875937f7a0ef894c45e1\">&#9670;&nbsp;</a></span>quest2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::quest2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5db92704bb3700f46790b108525400e5\" name=\"a5db92704bb3700f46790b108525400e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5db92704bb3700f46790b108525400e5\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Ext::Kitchensink::QuestVariable::script</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a89dca0079262b8780f559d02c7865799\" name=\"a89dca0079262b8780f559d02c7865799\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89dca0079262b8780f559d02c7865799\">&#9670;&nbsp;</a></span>subtitle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::subtitle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6574937d3491e89d92d0fab8f3ec746\" name=\"ad6574937d3491e89d92d0fab8f3ec746\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6574937d3491e89d92d0fab8f3ec746\">&#9670;&nbsp;</a></span>title</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::title</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7d0db342f3f3eed6bc5d8e2bad2bea5d\" name=\"a7d0db342f3f3eed6bc5d8e2bad2bea5d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d0db342f3f3eed6bc5d8e2bad2bea5d\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_kitchensink.html#ab3814d859340fe53dd54ca8fa8f84f1b\">quest_t</a> tram::Ext::Kitchensink::QuestVariable::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa38c56e4efe619fcefd99a1f87047c88\" name=\"aa38c56e4efe619fcefd99a1f87047c88\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa38c56e4efe619fcefd99a1f87047c88\">&#9670;&nbsp;</a></span>value <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> tram::Ext::Kitchensink::QuestVariable::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad77d58b02c65c98115798f167a4a6cb4\" name=\"ad77d58b02c65c98115798f167a4a6cb4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad77d58b02c65c98115798f167a4a6cb4\">&#9670;&nbsp;</a></span> <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">struct  { ... }  tram::Ext::Kitchensink::QuestVariable::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9fea540d2b9a8fec5b7bec83329d33fa\" name=\"a9fea540d2b9a8fec5b7bec83329d33fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fea540d2b9a8fec5b7bec83329d33fa\">&#9670;&nbsp;</a></span>value <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad57c101bc6373283564cf19973ef47ce\" name=\"ad57c101bc6373283564cf19973ef47ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad57c101bc6373283564cf19973ef47ce\">&#9670;&nbsp;</a></span>variable1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Ext::Kitchensink::QuestVariable::variable1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3c9c1cd6c108fb87f86e98fccc21a7ff\" name=\"a3c9c1cd6c108fb87f86e98fccc21a7ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c9c1cd6c108fb87f86e98fccc21a7ff\">&#9670;&nbsp;</a></span>variable2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> tram::Ext::Kitchensink::QuestVariable::variable2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8h_source.html\">quest.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/kitchensink/<a class=\"el\" href=\"quest_8cpp.html\">quest.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_event_intercept-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">EventIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EventIntercept Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004\">emitter</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee\">subtype</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">tram::Ext::Menu::EventIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_event_intercept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::EventIntercept Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\">EventIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::EventIntercept Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::EventIntercept:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.png\" usemap=\"#tram::Ext::Menu::EventIntercept_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::EventIntercept_map\" name=\"tram::Ext::Menu::EventIntercept_map\">\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" alt=\"tram::Ext::Menu::Intercept\" shape=\"rect\" coords=\"0,0,184,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a01e67c6d1a67bd394e8f74816eb1b924\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924\">Display</a> ()</td></tr>\n<tr class=\"separator:a01e67c6d1a67bd394e8f74816eb1b924\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a> ()=default</td></tr>\n<tr class=\"separator:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4e5f06420a95be438108f03861401004\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a4e5f06420a95be438108f03861401004\">emitter</a></td></tr>\n<tr class=\"separator:a4e5f06420a95be438108f03861401004\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a26cca1d8441ace64474409596e11338a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a26cca1d8441ace64474409596e11338a\">type</a></td></tr>\n<tr class=\"separator:a26cca1d8441ace64474409596e11338a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d1db56536b83ffc15b91bf8ea8138ee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a2d1db56536b83ffc15b91bf8ea8138ee\">subtype</a></td></tr>\n<tr class=\"separator:a2d1db56536b83ffc15b91bf8ea8138ee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9c997714569712e28893f2422f6aad8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a9c997714569712e28893f2422f6aad8e\">value</a></td></tr>\n<tr class=\"separator:a9c997714569712e28893f2422f6aad8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td></tr>\n<tr class=\"separator:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a01e67c6d1a67bd394e8f74816eb1b924\" name=\"a01e67c6d1a67bd394e8f74816eb1b924\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01e67c6d1a67bd394e8f74816eb1b924\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::EventIntercept::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">tram::Ext::Menu::Intercept</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4e5f06420a95be438108f03861401004\" name=\"a4e5f06420a95be438108f03861401004\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e5f06420a95be438108f03861401004\">&#9670;&nbsp;</a></span>emitter</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::EventIntercept::emitter</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d1db56536b83ffc15b91bf8ea8138ee\" name=\"a2d1db56536b83ffc15b91bf8ea8138ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d1db56536b83ffc15b91bf8ea8138ee\">&#9670;&nbsp;</a></span>subtype</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::EventIntercept::subtype</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a26cca1d8441ace64474409596e11338a\" name=\"a26cca1d8441ace64474409596e11338a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26cca1d8441ace64474409596e11338a\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::EventIntercept::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9c997714569712e28893f2422f6aad8e\" name=\"a9c997714569712e28893f2422f6aad8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c997714569712e28893f2422f6aad8e\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::EventIntercept::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_intercept-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Intercept Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">Display</a>()=0</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"><span class=\"mlabel\">pure virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_intercept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::Intercept Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">Intercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_menu_1_1_intercept-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::Intercept Struct Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::Intercept:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_ext_1_1_menu_1_1_intercept.png\" usemap=\"#tram::Ext::Menu::Intercept_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::Intercept_map\" name=\"tram::Ext::Menu::Intercept_map\">\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html\" alt=\"tram::Ext::Menu::EventIntercept\" shape=\"rect\" coords=\"0,56,203,80\"/>\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\" alt=\"tram::Ext::Menu::LogIntercept\" shape=\"rect\" coords=\"213,56,416,80\"/>\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\" alt=\"tram::Ext::Menu::MessageIntercept\" shape=\"rect\" coords=\"426,56,629,80\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a895d3bf8867a84c9001e51b5e0601539\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">Display</a> ()=0</td></tr>\n<tr class=\"separator:a895d3bf8867a84c9001e51b5e0601539\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1f44c91b5eaebb2f6eaab53b76796ce6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a> ()=default</td></tr>\n<tr class=\"separator:a1f44c91b5eaebb2f6eaab53b76796ce6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a6b7b147914bc32b6a2b76e9eb7fbef9a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td></tr>\n<tr class=\"separator:a6b7b147914bc32b6a2b76e9eb7fbef9a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a1f44c91b5eaebb2f6eaab53b76796ce6\" name=\"a1f44c91b5eaebb2f6eaab53b76796ce6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f44c91b5eaebb2f6eaab53b76796ce6\">&#9670;&nbsp;</a></span>~Intercept()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual tram::Ext::Menu::Intercept::~Intercept </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">virtual</span><span class=\"mlabel\">default</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a895d3bf8867a84c9001e51b5e0601539\" name=\"a895d3bf8867a84c9001e51b5e0601539\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a895d3bf8867a84c9001e51b5e0601539\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">virtual void tram::Ext::Menu::Intercept::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">pure virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implemented in <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a\">tram::Ext::Menu::MessageIntercept</a>, <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_event_intercept.html#a01e67c6d1a67bd394e8f74816eb1b924\">tram::Ext::Menu::EventIntercept</a>, and <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15\">tram::Ext::Menu::LogIntercept</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6b7b147914bc32b6a2b76e9eb7fbef9a\" name=\"a6b7b147914bc32b6a2b76e9eb7fbef9a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b7b147914bc32b6a2b76e9eb7fbef9a\">&#9670;&nbsp;</a></span>time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">unsigned int tram::Ext::Menu::Intercept::time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_log_intercept-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">LogIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::LogIntercept Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">tram::Ext::Menu::LogIntercept</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">tram::Ext::Menu::LogIntercept</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0\">message</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">tram::Ext::Menu::LogIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_log_intercept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::LogIntercept Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html\">LogIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::LogIntercept Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::LogIntercept:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.png\" usemap=\"#tram::Ext::Menu::LogIntercept_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::LogIntercept_map\" name=\"tram::Ext::Menu::LogIntercept_map\">\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" alt=\"tram::Ext::Menu::Intercept\" shape=\"rect\" coords=\"0,0,173,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ad70ddb5580e8cb9c2203f873bf006f15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#ad70ddb5580e8cb9c2203f873bf006f15\">Display</a> ()</td></tr>\n<tr class=\"separator:ad70ddb5580e8cb9c2203f873bf006f15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a> ()=default</td></tr>\n<tr class=\"separator:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2a20b88ce99a306fdf5ab41a905550e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_log_intercept.html#a2a20b88ce99a306fdf5ab41a905550e0\">message</a></td></tr>\n<tr class=\"separator:a2a20b88ce99a306fdf5ab41a905550e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td></tr>\n<tr class=\"separator:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad70ddb5580e8cb9c2203f873bf006f15\" name=\"ad70ddb5580e8cb9c2203f873bf006f15\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad70ddb5580e8cb9c2203f873bf006f15\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::LogIntercept::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">tram::Ext::Menu::Intercept</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2a20b88ce99a306fdf5ab41a905550e0\" name=\"a2a20b88ce99a306fdf5ab41a905550e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a20b88ce99a306fdf5ab41a905550e0\">&#9670;&nbsp;</a></span>message</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::LogIntercept::message</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_message_intercept-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">MessageIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::MessageIntercept Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a\">Display</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc\">receiver</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256\">sender</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">tram::Ext::Menu::MessageIntercept</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a>()=default</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td><td class=\"entry\"><span class=\"mlabel\">virtual</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_ext_1_1_menu_1_1_message_intercept.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Ext::Menu::MessageIntercept Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">Ext</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_menu.html\">Menu</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html\">MessageIntercept</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Ext::Menu::MessageIntercept Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Ext::Menu::MessageIntercept:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.png\" usemap=\"#tram::Ext::Menu::MessageIntercept_map\" alt=\"\"/>\n  <map id=\"tram::Ext::Menu::MessageIntercept_map\" name=\"tram::Ext::Menu::MessageIntercept_map\">\n<area href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\" alt=\"tram::Ext::Menu::Intercept\" shape=\"rect\" coords=\"0,0,203,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aba89a9144dabfeaa8946944f3489ad3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aba89a9144dabfeaa8946944f3489ad3a\">Display</a> ()</td></tr>\n<tr class=\"separator:aba89a9144dabfeaa8946944f3489ad3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Member Functions inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a1f44c91b5eaebb2f6eaab53b76796ce6\">~Intercept</a> ()=default</td></tr>\n<tr class=\"separator:a1f44c91b5eaebb2f6eaab53b76796ce6 inherit pub_methods_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a46c8966a8a40c2904944a704e28bb8bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a46c8966a8a40c2904944a704e28bb8bc\">receiver</a></td></tr>\n<tr class=\"separator:a46c8966a8a40c2904944a704e28bb8bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a435b82f7becf196d66c0951f6df0b256\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#a435b82f7becf196d66c0951f6df0b256\">sender</a></td></tr>\n<tr class=\"separator:a435b82f7becf196d66c0951f6df0b256\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad4a5ce94c977ea6b4c6a0c95b1176769\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#ad4a5ce94c977ea6b4c6a0c95b1176769\">type</a></td></tr>\n<tr class=\"separator:ad4a5ce94c977ea6b4c6a0c95b1176769\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aed2f13180c49a2b73832bc00d0bf9a93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_message_intercept.html#aed2f13180c49a2b73832bc00d0bf9a93\">value</a></td></tr>\n<tr class=\"separator:aed2f13180c49a2b73832bc00d0bf9a93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"inherit_header pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Attributes inherited from <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html\">tram::Ext::Menu::Intercept</a></td></tr>\n<tr class=\"memitem:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a6b7b147914bc32b6a2b76e9eb7fbef9a\">time</a></td></tr>\n<tr class=\"separator:a6b7b147914bc32b6a2b76e9eb7fbef9a inherit pub_attribs_structtram_1_1_ext_1_1_menu_1_1_intercept\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aba89a9144dabfeaa8946944f3489ad3a\" name=\"aba89a9144dabfeaa8946944f3489ad3a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba89a9144dabfeaa8946944f3489ad3a\">&#9670;&nbsp;</a></span>Display()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Ext::Menu::MessageIntercept::Display </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Implements <a class=\"el\" href=\"structtram_1_1_ext_1_1_menu_1_1_intercept.html#a895d3bf8867a84c9001e51b5e0601539\">tram::Ext::Menu::Intercept</a>.</p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a46c8966a8a40c2904944a704e28bb8bc\" name=\"a46c8966a8a40c2904944a704e28bb8bc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46c8966a8a40c2904944a704e28bb8bc\">&#9670;&nbsp;</a></span>receiver</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::MessageIntercept::receiver</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a435b82f7becf196d66c0951f6df0b256\" name=\"a435b82f7becf196d66c0951f6df0b256\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a435b82f7becf196d66c0951f6df0b256\">&#9670;&nbsp;</a></span>sender</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::MessageIntercept::sender</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad4a5ce94c977ea6b4c6a0c95b1176769\" name=\"ad4a5ce94c977ea6b4c6a0c95b1176769\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4a5ce94c977ea6b4c6a0c95b1176769\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::MessageIntercept::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aed2f13180c49a2b73832bc00d0bf9a93\" name=\"aed2f13180c49a2b73832bc00d0bf9a93\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed2f13180c49a2b73832bc00d0bf9a93\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::Ext::Menu::MessageIntercept::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/menu/<a class=\"el\" href=\"debug_8cpp.html\">debug.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_file_source-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::FileSource Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_file_source.html\">tram::FileSource</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">medium</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">tram::FileSource</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">path</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">tram::FileSource</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_file_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::FileSource Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_file_source.html\">FileSource</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_file_source-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::FileSource Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a13ed2bed034f6bdbfb616d75141c8d63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">FileMedium</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_file_source.html#a13ed2bed034f6bdbfb616d75141c8d63\">medium</a></td></tr>\n<tr class=\"separator:a13ed2bed034f6bdbfb616d75141c8d63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5addd94ec280b82396cff93ec0ece536\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_file_source.html#a5addd94ec280b82396cff93ec0ece536\">path</a></td></tr>\n<tr class=\"separator:a5addd94ec280b82396cff93ec0ece536\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a13ed2bed034f6bdbfb616d75141c8d63\" name=\"a13ed2bed034f6bdbfb616d75141c8d63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13ed2bed034f6bdbfb616d75141c8d63\">&#9670;&nbsp;</a></span>medium</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a529c8d3e049a7dcc4425fbe040e4c531\">FileMedium</a> tram::FileSource::medium</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5addd94ec280b82396cff93ec0ece536\" name=\"a5addd94ec280b82396cff93ec0ece536\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5addd94ec280b82396cff93ec0ece536\">&#9670;&nbsp;</a></span>path</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::string tram::FileSource::path</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/<a class=\"el\" href=\"platform_2file_8h_source.html\">file.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_g_u_i_1_1_frame_object-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">GUI</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">FrameObject</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::GUI::FrameObject Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501\">cursor_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e\">cursor_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752\">h</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c\">stack_height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6\">w</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e\">x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2\">y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">tram::GUI::FrameObject</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_g_u_i_1_1_frame_object.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::GUI::FrameObject Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_g_u_i.html\">GUI</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html\">FrameObject</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_g_u_i_1_1_frame_object-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::GUI::FrameObject Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5b80eddf57e0744b870d933958f2d70e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a5b80eddf57e0744b870d933958f2d70e\">x</a></td></tr>\n<tr class=\"separator:a5b80eddf57e0744b870d933958f2d70e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a98e4cea97c1c2ceef0aa79ccf27749c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a98e4cea97c1c2ceef0aa79ccf27749c2\">y</a></td></tr>\n<tr class=\"separator:a98e4cea97c1c2ceef0aa79ccf27749c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa17bd9855c951ce25ef26a5e0c97cd6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#aaa17bd9855c951ce25ef26a5e0c97cd6\">w</a></td></tr>\n<tr class=\"separator:aaa17bd9855c951ce25ef26a5e0c97cd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70f4e81acd34d11127d304faee8e9752\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a70f4e81acd34d11127d304faee8e9752\">h</a></td></tr>\n<tr class=\"separator:a70f4e81acd34d11127d304faee8e9752\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0262f15becf5e99247d3cdf051548501\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#a0262f15becf5e99247d3cdf051548501\">cursor_x</a></td></tr>\n<tr class=\"separator:a0262f15becf5e99247d3cdf051548501\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adced63c254bc9b79b3f1d2ad5f07943e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#adced63c254bc9b79b3f1d2ad5f07943e\">cursor_y</a></td></tr>\n<tr class=\"separator:adced63c254bc9b79b3f1d2ad5f07943e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abed55225f2d2c6c5d15ff99eaee05d9c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_g_u_i_1_1_frame_object.html#abed55225f2d2c6c5d15ff99eaee05d9c\">stack_height</a></td></tr>\n<tr class=\"separator:abed55225f2d2c6c5d15ff99eaee05d9c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0262f15becf5e99247d3cdf051548501\" name=\"a0262f15becf5e99247d3cdf051548501\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0262f15becf5e99247d3cdf051548501\">&#9670;&nbsp;</a></span>cursor_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::cursor_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adced63c254bc9b79b3f1d2ad5f07943e\" name=\"adced63c254bc9b79b3f1d2ad5f07943e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adced63c254bc9b79b3f1d2ad5f07943e\">&#9670;&nbsp;</a></span>cursor_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::cursor_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70f4e81acd34d11127d304faee8e9752\" name=\"a70f4e81acd34d11127d304faee8e9752\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70f4e81acd34d11127d304faee8e9752\">&#9670;&nbsp;</a></span>h</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::h</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abed55225f2d2c6c5d15ff99eaee05d9c\" name=\"abed55225f2d2c6c5d15ff99eaee05d9c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abed55225f2d2c6c5d15ff99eaee05d9c\">&#9670;&nbsp;</a></span>stack_height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::stack_height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa17bd9855c951ce25ef26a5e0c97cd6\" name=\"aaa17bd9855c951ce25ef26a5e0c97cd6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa17bd9855c951ce25ef26a5e0c97cd6\">&#9670;&nbsp;</a></span>w</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::w</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b80eddf57e0744b870d933958f2d70e\" name=\"a5b80eddf57e0744b870d933958f2d70e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b80eddf57e0744b870d933958f2d70e\">&#9670;&nbsp;</a></span>x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a98e4cea97c1c2ceef0aa79ccf27749c2\" name=\"a98e4cea97c1c2ceef0aa79ccf27749c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98e4cea97c1c2ceef0aa79ccf27749c2\">&#9670;&nbsp;</a></span>y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::GUI::FrameObject::y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"gui_8cpp.html\">gui.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_hashmap_1_1_record-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Hashmap&lt; T &gt;::Record Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap&lt; T &gt;::Record</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap&lt; T &gt;::Record</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap&lt; T &gt;::Record</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">tram::Hashmap&lt; T &gt;::Record</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_hashmap_1_1_record.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Hashmap&lt; T &gt;::Record Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_hashmap.html\">Hashmap</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html\">Record</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_hashmap_1_1_record-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Hashmap&lt; T &gt;::Record Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">hashmap.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac3d3cebcb5768feb0ca9f6f4d1c7e02a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">key</a> = 0</td></tr>\n<tr class=\"separator:ac3d3cebcb5768feb0ca9f6f4d1c7e02a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67309019d9e71aeb7fa5fca434c86526\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#a67309019d9e71aeb7fa5fca434c86526\">flags</a> = 0</td></tr>\n<tr class=\"separator:a67309019d9e71aeb7fa5fca434c86526\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2c09b3dcf41d13a53dc2d65e6a60996\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_hashmap_1_1_record.html#ab2c09b3dcf41d13a53dc2d65e6a60996\">value</a></td></tr>\n<tr class=\"separator:ab2c09b3dcf41d13a53dc2d65e6a60996\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a67309019d9e71aeb7fa5fca434c86526\" name=\"a67309019d9e71aeb7fa5fca434c86526\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67309019d9e71aeb7fa5fca434c86526\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Record::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3d3cebcb5768feb0ca9f6f4d1c7e02a\" name=\"ac3d3cebcb5768feb0ca9f6f4d1c7e02a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3d3cebcb5768feb0ca9f6f4d1c7e02a\">&#9670;&nbsp;</a></span>key</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Record::key = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab2c09b3dcf41d13a53dc2d65e6a60996\" name=\"ab2c09b3dcf41d13a53dc2d65e6a60996\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2c09b3dcf41d13a53dc2d65e6a60996\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"classtram_1_1_hashmap.html\">tram::Hashmap</a>&lt; T &gt;::Record::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"hashmap_8h_source.html\">hashmap.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_listener_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">ListenerInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ListenerInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf\">component</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722\">data_function</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32\">entity</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2\">function</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2\">handle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">LISTENER_COMPONENT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\">LISTENER_DATA_FUNCTION</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\">LISTENER_DELETED</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\">LISTENER_ENTITY</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\">LISTENER_FUNCTION</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">ListenerType</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">tram::ListenerInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_listener_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ListenerInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_listener_info.html\">ListenerInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_listener_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ListenerInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a92c413c2c02e7a4f40f59d27dd94de0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">ListenerType</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">LISTENER_COMPONENT</a>\n, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\">LISTENER_ENTITY</a>\n, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\">LISTENER_DATA_FUNCTION</a>\n, <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\">LISTENER_FUNCTION</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\">LISTENER_DELETED</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a92c413c2c02e7a4f40f59d27dd94de0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aee0adb84180405e4c1b734e2e9e93c66\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:ab69531d2ff52d0bd7939b9aa67bb4114\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aee7f801b96773125388c51639472d1bf\">component</a> = nullptr</td></tr>\n<tr class=\"separator:ab69531d2ff52d0bd7939b9aa67bb4114\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e76398522c48750933935a5a8e2fe31\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a91672b06dda91ac838e8f21fa43afb32\">entity</a></td></tr>\n<tr class=\"separator:a8e76398522c48750933935a5a8e2fe31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a253c99bfba054584f48dfbc62856bbd7\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void(*&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#a2e4f01f36470ce06dd3565b51838a722\">data_function</a> )(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event, void *<a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">data</a>)</td></tr>\n<tr class=\"separator:a253c99bfba054584f48dfbc62856bbd7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab2e9f5cd200efd355d190f80be7aee54\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void(*&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_listener_info.html#aa34513becad7ae12187bd4654f930df2\">function</a> )(<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td></tr>\n<tr class=\"separator:ab2e9f5cd200efd355d190f80be7aee54\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee0adb84180405e4c1b734e2e9e93c66\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:aee0adb84180405e4c1b734e2e9e93c66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa652abf363801df8691b1700d5531af0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">data</a></td></tr>\n<tr class=\"separator:aa652abf363801df8691b1700d5531af0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee785f4d7173a7fc8a9ea904251990c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#aee785f4d7173a7fc8a9ea904251990c2\">handle</a> = -1</td></tr>\n<tr class=\"separator:aee785f4d7173a7fc8a9ea904251990c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07e1a856ac9f66c9b9f71644d23ada02\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">ListenerType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a07e1a856ac9f66c9b9f71644d23ada02\">type</a> = <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">LISTENER_COMPONENT</a></td></tr>\n<tr class=\"separator:a07e1a856ac9f66c9b9f71644d23ada02\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a92c413c2c02e7a4f40f59d27dd94de0f\" name=\"a92c413c2c02e7a4f40f59d27dd94de0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92c413c2c02e7a4f40f59d27dd94de0f\">&#9670;&nbsp;</a></span>ListenerType</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">tram::ListenerInfo::ListenerType</a> : uint32_t</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\" name=\"a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\"></a>LISTENER_COMPONENT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\" name=\"a92c413c2c02e7a4f40f59d27dd94de0fadca681ed634170780b5eb66663ebeb5b\"></a>LISTENER_ENTITY&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\" name=\"a92c413c2c02e7a4f40f59d27dd94de0fa5c5d57b139c0be8c8136418756f7150c\"></a>LISTENER_DATA_FUNCTION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\" name=\"a92c413c2c02e7a4f40f59d27dd94de0fa094d897ff3fc5cf407e8d5d13c71f0a5\"></a>LISTENER_FUNCTION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\" name=\"a92c413c2c02e7a4f40f59d27dd94de0fa209a858d23af3b0b1b8737235412e5d0\"></a>LISTENER_DELETED&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aee0adb84180405e4c1b734e2e9e93c66\" name=\"aee0adb84180405e4c1b734e2e9e93c66\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee0adb84180405e4c1b734e2e9e93c66\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::ListenerInfo::@36</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee7f801b96773125388c51639472d1bf\" name=\"aee7f801b96773125388c51639472d1bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee7f801b96773125388c51639472d1bf\">&#9670;&nbsp;</a></span>component</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a>* tram::ListenerInfo::component = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa652abf363801df8691b1700d5531af0\" name=\"aa652abf363801df8691b1700d5531af0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa652abf363801df8691b1700d5531af0\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::ListenerInfo::data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2e4f01f36470ce06dd3565b51838a722\" name=\"a2e4f01f36470ce06dd3565b51838a722\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e4f01f36470ce06dd3565b51838a722\">&#9670;&nbsp;</a></span>data_function</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::ListenerInfo::data_function) (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event, void *<a class=\"el\" href=\"structtram_1_1_listener_info.html#aa652abf363801df8691b1700d5531af0\">data</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a91672b06dda91ac838e8f21fa43afb32\" name=\"a91672b06dda91ac838e8f21fa43afb32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91672b06dda91ac838e8f21fa43afb32\">&#9670;&nbsp;</a></span>entity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a>* tram::ListenerInfo::entity</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa34513becad7ae12187bd4654f930df2\" name=\"aa34513becad7ae12187bd4654f930df2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa34513becad7ae12187bd4654f930df2\">&#9670;&nbsp;</a></span>function</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::ListenerInfo::function) (<a class=\"el\" href=\"structtram_1_1_event.html\">Event</a> &amp;event)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee785f4d7173a7fc8a9ea904251990c2\" name=\"aee785f4d7173a7fc8a9ea904251990c2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee785f4d7173a7fc8a9ea904251990c2\">&#9670;&nbsp;</a></span>handle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#abc1aacd663943b92d06f10950a9f10d0\">listener_t</a> tram::ListenerInfo::handle = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07e1a856ac9f66c9b9f71644d23ada02\" name=\"a07e1a856ac9f66c9b9f71644d23ada02\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07e1a856ac9f66c9b9f71644d23ada02\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0f\">ListenerType</a> tram::ListenerInfo::type = <a class=\"el\" href=\"structtram_1_1_listener_info.html#a92c413c2c02e7a4f40f59d27dd94de0fa3f989e91e3bfe4271d96a41254195a99\">LISTENER_COMPONENT</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"event_8cpp.html\">event.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_message-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Message Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">ACTIVATE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">ACTIVATE_ONCE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d\">AllocateData</a>(size_t ammount)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">AllocateData</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">AllocateData</a>(const T &amp;data)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">CLOSE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">data_int</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">data_value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">Dispatch</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">GetLast</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">GetName</a>(message_t type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">GetType</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">KILL</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">LAST_MESSAGE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">LOCK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">MOVE_PICK_UP</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">NONE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">OPEN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">PING</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">receiver</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">Register</a>(const char *name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">SELECT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">Send</a>(const Message &amp;message)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a9e97e1f98831bf5a18bf28a7f6ece953\">Send</a>(const Message &amp;message, float delay)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">sender</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">SET_ANIMATION</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">SET_FLAG_OFF</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">SET_FLAG_ON</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">SET_PROGRESS</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">SetInterceptCallback</a>(void(const Message &amp;))</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">START</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">STOP</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">TOGGLE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">TRIGGER</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">UNLOCK</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_message.html\">tram::Message</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_message.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Message Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_message.html\">Message</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_message-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Message Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data.  \n <a href=\"structtram_1_1_message.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"message_8h_source.html\">framework/message.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ad7f83643df194a92e3376d78596b9afd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">Type</a> : message_t { <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\">NONE</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\">PING</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\">MOVE_PICK_UP</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\">OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\">CLOSE</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\">LOCK</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\">UNLOCK</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\">TOGGLE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\">KILL</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\">TRIGGER</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\">START</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\">STOP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\">ACTIVATE</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\">ACTIVATE_ONCE</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\">SELECT</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\">SET_PROGRESS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\">SET_ANIMATION</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\">SET_FLAG_ON</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\">SET_FLAG_OFF</a>\n, <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\">LAST_MESSAGE</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ad7f83643df194a92e3376d78596b9afd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a404d077230b30357e8f515ee5b93149a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">Register</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a404d077230b30357e8f515ee5b93149a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new message type.  <a href=\"structtram_1_1_message.html#a404d077230b30357e8f515ee5b93149a\">More...</a><br /></td></tr>\n<tr class=\"separator:a404d077230b30357e8f515ee5b93149a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad27f76114ca903dded8f84890c302119\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">GetType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:ad27f76114ca903dded8f84890c302119\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a message type from a name.  <a href=\"structtram_1_1_message.html#ad27f76114ca903dded8f84890c302119\">More...</a><br /></td></tr>\n<tr class=\"separator:ad27f76114ca903dded8f84890c302119\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adad7616c7def22014e7c8f276e65fe77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">GetName</a> (<a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> <a class=\"el\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a>)</td></tr>\n<tr class=\"memdesc:adad7616c7def22014e7c8f276e65fe77\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gets a nessage type name.  <a href=\"structtram_1_1_message.html#adad7616c7def22014e7c8f276e65fe77\">More...</a><br /></td></tr>\n<tr class=\"separator:adad7616c7def22014e7c8f276e65fe77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19be3fd1d26c56de4fcd721376b39c90\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">GetLast</a> ()</td></tr>\n<tr class=\"memdesc:a19be3fd1d26c56de4fcd721376b39c90\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the last message_t plus one.  <a href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\">More...</a><br /></td></tr>\n<tr class=\"separator:a19be3fd1d26c56de4fcd721376b39c90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4c7116e2921062b636dbf57a152046a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">Send</a> (const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;message)</td></tr>\n<tr class=\"memdesc:a4c7116e2921062b636dbf57a152046a8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sends a message.  <a href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\">More...</a><br /></td></tr>\n<tr class=\"separator:a4c7116e2921062b636dbf57a152046a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e97e1f98831bf5a18bf28a7f6ece953\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a9e97e1f98831bf5a18bf28a7f6ece953\">Send</a> (const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;message, float delay)</td></tr>\n<tr class=\"memdesc:a9e97e1f98831bf5a18bf28a7f6ece953\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Semds a message into the future.  <a href=\"structtram_1_1_message.html#a9e97e1f98831bf5a18bf28a7f6ece953\">More...</a><br /></td></tr>\n<tr class=\"separator:a9e97e1f98831bf5a18bf28a7f6ece953\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa148e227c8da865e87f8122c0f4ab41a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">Dispatch</a> ()</td></tr>\n<tr class=\"memdesc:aa148e227c8da865e87f8122c0f4ab41a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Dispatches sent messsages.  <a href=\"structtram_1_1_message.html#aa148e227c8da865e87f8122c0f4ab41a\">More...</a><br /></td></tr>\n<tr class=\"separator:aa148e227c8da865e87f8122c0f4ab41a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14d91051b699371994bacfd7d0cf0a6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d\">AllocateData</a> (size_t ammount)</td></tr>\n<tr class=\"memdesc:a14d91051b699371994bacfd7d0cf0a6d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Allocates space for message data.  <a href=\"structtram_1_1_message.html#a14d91051b699371994bacfd7d0cf0a6d\">More...</a><br /></td></tr>\n<tr class=\"separator:a14d91051b699371994bacfd7d0cf0a6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a944e18391daa913fad2807ba33463a8e\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:a944e18391daa913fad2807ba33463a8e\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a944e18391daa913fad2807ba33463a8e\">AllocateData</a> ()</td></tr>\n<tr class=\"separator:a944e18391daa913fad2807ba33463a8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc663230fe9deda62a6b1da94d65b90b\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename T &gt; </td></tr>\n<tr class=\"memitem:abc663230fe9deda62a6b1da94d65b90b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static T *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#abc663230fe9deda62a6b1da94d65b90b\">AllocateData</a> (const T &amp;<a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a>)</td></tr>\n<tr class=\"separator:abc663230fe9deda62a6b1da94d65b90b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae415c262a095fd620ef84c7c8654a02f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#ae415c262a095fd620ef84c7c8654a02f\">SetInterceptCallback</a> (void(const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;))</td></tr>\n<tr class=\"separator:ae415c262a095fd620ef84c7c8654a02f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0f822eec485aa46e9c93e9445526c8c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">type</a></td></tr>\n<tr class=\"memdesc:a0f822eec485aa46e9c93e9445526c8c1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type of the message.  <a href=\"structtram_1_1_message.html#a0f822eec485aa46e9c93e9445526c8c1\">More...</a><br /></td></tr>\n<tr class=\"separator:a0f822eec485aa46e9c93e9445526c8c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28e9498ff0a7bb62e84f2a6c2589fa94\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">sender</a></td></tr>\n<tr class=\"memdesc:a28e9498ff0a7bb62e84f2a6c2589fa94\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">ID of the <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> that sent the message.  <a href=\"structtram_1_1_message.html#a28e9498ff0a7bb62e84f2a6c2589fa94\">More...</a><br /></td></tr>\n<tr class=\"separator:a28e9498ff0a7bb62e84f2a6c2589fa94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d8a1a38aac71f1a0725b52ce898b7b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a25ae39989bce3dab64401c3956be9c03\">id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">receiver</a></td></tr>\n<tr class=\"memdesc:a1d8a1a38aac71f1a0725b52ce898b7b1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">ID of the <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> that will receive the message.  <a href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\">More...</a><br /></td></tr>\n<tr class=\"separator:a1d8a1a38aac71f1a0725b52ce898b7b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19d0c06734e250b277052df94631f561\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:ad47e11c695d9948a4fa8484930848651\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\">data</a> = nullptr</td></tr>\n<tr class=\"separator:ad47e11c695d9948a4fa8484930848651\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5b3748097a36adf79adf5381947983c\"><td class=\"memItemLeft\" >&#160;&#160;&#160;int32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#aa694cba3fcc077563b3d47e36a818494\">data_int</a></td></tr>\n<tr class=\"separator:ae5b3748097a36adf79adf5381947983c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acd2538694a4769b67c70af2d682a4362\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_message.html#af0bef4c3d63c5908c15440636071d25d\">data_value</a></td></tr>\n<tr class=\"separator:acd2538694a4769b67c70af2d682a4362\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19d0c06734e250b277052df94631f561\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a19d0c06734e250b277052df94631f561\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> data. </p>\n<p >Fill in the struct fields and then use <a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\" title=\"Sends a message.\">Message::Send()</a> to send it out to listeners. </p>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"ad7f83643df194a92e3376d78596b9afd\" name=\"ad7f83643df194a92e3376d78596b9afd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7f83643df194a92e3376d78596b9afd\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_message.html#ad7f83643df194a92e3376d78596b9afd\">tram::Message::Type</a> : <a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\" name=\"ad7f83643df194a92e3376d78596b9afda7ae53af63c049ac73b14c74e217b9748\"></a>NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\" name=\"ad7f83643df194a92e3376d78596b9afda88ef805d301227661029ccb4e90e262e\"></a>PING&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\" name=\"ad7f83643df194a92e3376d78596b9afdad871312fc591cdf55d895050b433f107\"></a>MOVE_PICK_UP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\" name=\"ad7f83643df194a92e3376d78596b9afdae0caa75bd4a1fa8c53b159a5194b07af\"></a>OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\" name=\"ad7f83643df194a92e3376d78596b9afda804fd125ffcb561b7664348dd4f481aa\"></a>CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\" name=\"ad7f83643df194a92e3376d78596b9afdaf080d077b786681283fc6cdef14e0760\"></a>LOCK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\" name=\"ad7f83643df194a92e3376d78596b9afda293259ce10e99401eb22c95c3e2af001\"></a>UNLOCK&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\" name=\"ad7f83643df194a92e3376d78596b9afda93e680ef8cb095acd544a1f003fd6d59\"></a>TOGGLE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\" name=\"ad7f83643df194a92e3376d78596b9afda4f54ab68d5ca6abbfdf4a90c4f4d56fb\"></a>KILL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\" name=\"ad7f83643df194a92e3376d78596b9afda7212349b95502a98e821a6a03013e23c\"></a>TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\" name=\"ad7f83643df194a92e3376d78596b9afdaefb80d59450ad6bd1ebed0479a8fc282\"></a>START&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\" name=\"ad7f83643df194a92e3376d78596b9afda1ad9eec2532ec3093a0fcb54d5da9785\"></a>STOP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\" name=\"ad7f83643df194a92e3376d78596b9afda22521d1c8ac869500c5e2bac43e6acd0\"></a>ACTIVATE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\" name=\"ad7f83643df194a92e3376d78596b9afdac734cee3c6945cb40d1e23a5b6e12a3a\"></a>ACTIVATE_ONCE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\" name=\"ad7f83643df194a92e3376d78596b9afda25c37f57fe797d8c8f13fc639eac22aa\"></a>SELECT&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\" name=\"ad7f83643df194a92e3376d78596b9afda80330a58630331f2b6204ffadc99b68b\"></a>SET_PROGRESS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\" name=\"ad7f83643df194a92e3376d78596b9afda7060aac17306329964fe7abda5b538c8\"></a>SET_ANIMATION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\" name=\"ad7f83643df194a92e3376d78596b9afda6339dff2f96fb0b14555a2df9c70195d\"></a>SET_FLAG_ON&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\" name=\"ad7f83643df194a92e3376d78596b9afda8fe9a252ea757ae7d93edf0da09172d8\"></a>SET_FLAG_OFF&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\" name=\"ad7f83643df194a92e3376d78596b9afda96a5ae11c632629632b9aff371451303\"></a>LAST_MESSAGE&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a944e18391daa913fad2807ba33463a8e\" name=\"a944e18391daa913fad2807ba33463a8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a944e18391daa913fad2807ba33463a8e\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[1/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static T * tram::Message::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abc663230fe9deda62a6b1da94d65b90b\" name=\"abc663230fe9deda62a6b1da94d65b90b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc663230fe9deda62a6b1da94d65b90b\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[2/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">static T * tram::Message::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>data</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a14d91051b699371994bacfd7d0cf0a6d\" name=\"a14d91051b699371994bacfd7d0cf0a6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14d91051b699371994bacfd7d0cf0a6d\">&#9670;&nbsp;</a></span>AllocateData() <span class=\"overload\">[3/3]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void * tram::Message::AllocateData </td>\n          <td>(</td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>ammount</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Allocates space for message data. </p>\n<p >This allocation is useful for storing the additional data (<a class=\"el\" href=\"structtram_1_1_message.html#af2dcffd8b7a243a909af718abcac4925\" title=\"Pointer to arbitrary data.\">Message::data</a> pointer), for messages, since all allocated space will be cleared once all messages have been dispatched. This only applies to messages that are sent without a time delay, if you're sending messages with a delay, then you'll need to allocate memory for their data yourself. </p><dl class=\"section note\"><dt>Note</dt><dd>Remember to only use POD data types. </dd></dl>\n\n</div>\n</div>\n<a id=\"aa148e227c8da865e87f8122c0f4ab41a\" name=\"aa148e227c8da865e87f8122c0f4ab41a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa148e227c8da865e87f8122c0f4ab41a\">&#9670;&nbsp;</a></span>Dispatch()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Message::Dispatch </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Dispatches sent messsages. </p>\n<p >Dispatches the messages that have been sent using the <a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\" title=\"Sends a message.\">Message::Send()</a> function. </p>\n\n</div>\n</div>\n<a id=\"a19be3fd1d26c56de4fcd721376b39c90\" name=\"a19be3fd1d26c56de4fcd721376b39c90\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19be3fd1d26c56de4fcd721376b39c90\">&#9670;&nbsp;</a></span>GetLast()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> tram::Message::GetLast </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Returns the last message_t plus one. </p>\n<p >Useful for iterating over all registered messages, i.e. in a <code>while (++message &lt; <a class=\"el\" href=\"structtram_1_1_message.html#a19be3fd1d26c56de4fcd721376b39c90\" title=\"Returns the last message_t plus one.\">Message::GetLast()</a>);</code> or a similar loop. </p>\n\n</div>\n</div>\n<a id=\"adad7616c7def22014e7c8f276e65fe77\" name=\"adad7616c7def22014e7c8f276e65fe77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adad7616c7def22014e7c8f276e65fe77\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Message::GetName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Gets a nessage type name. </p>\n\n</div>\n</div>\n<a id=\"ad27f76114ca903dded8f84890c302119\" name=\"ad27f76114ca903dded8f84890c302119\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad27f76114ca903dded8f84890c302119\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> tram::Message::GetType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a message type from a name. </p>\n\n</div>\n</div>\n<a id=\"a404d077230b30357e8f515ee5b93149a\" name=\"a404d077230b30357e8f515ee5b93149a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a404d077230b30357e8f515ee5b93149a\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> tram::Message::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new message type. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Unique message type number. </dd></dl>\n\n</div>\n</div>\n<a id=\"a4c7116e2921062b636dbf57a152046a8\" name=\"a4c7116e2921062b636dbf57a152046a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c7116e2921062b636dbf57a152046a8\">&#9670;&nbsp;</a></span>Send() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Message::Send </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>message</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Sends a message. </p>\n<p ><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> will be delivered to the <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> with the ID number specified in the <a class=\"el\" href=\"structtram_1_1_message.html#a1d8a1a38aac71f1a0725b52ce898b7b1\" title=\"ID of the Entity that will receive the message.\">Message::receiver</a> field, by calling its <a class=\"el\" href=\"classtram_1_1_entity.html#ad81126191ef55c6ff2b3b112ce6c9cdb\" title=\"Allows entities to receive messages.\">Entity::MessageHandler()</a> method. </p>\n\n</div>\n</div>\n<a id=\"a9e97e1f98831bf5a18bf28a7f6ece953\" name=\"a9e97e1f98831bf5a18bf28a7f6ece953\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e97e1f98831bf5a18bf28a7f6ece953\">&#9670;&nbsp;</a></span>Send() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Message::Send </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>message</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>delay</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Semds a message into the future. </p>\n<p >Same as <a class=\"el\" href=\"structtram_1_1_message.html#a4c7116e2921062b636dbf57a152046a8\" title=\"Sends a message.\">Message::Send()</a>, but the actual sending will be delayed until specified ammount of ticks have passed. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">message</td><td><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> to be sent. </td></tr>\n    <tr><td class=\"paramname\">when</td><td>How many ticks need to pass until the message will be sent out, i.e. if you want to send a message out in 1 secons, set this parameter to 60. </td></tr>\n  </table>\n  </dd>\n</dl>\n\n</div>\n</div>\n<a id=\"ae415c262a095fd620ef84c7c8654a02f\" name=\"ae415c262a095fd620ef84c7c8654a02f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae415c262a095fd620ef84c7c8654a02f\">&#9670;&nbsp;</a></span>SetInterceptCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void tram::Message::SetInterceptCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">void(const <a class=\"el\" href=\"structtram_1_1_message.html\">Message</a> &amp;)&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a19d0c06734e250b277052df94631f561\" name=\"a19d0c06734e250b277052df94631f561\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19d0c06734e250b277052df94631f561\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Message::@40</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af2dcffd8b7a243a909af718abcac4925\" name=\"af2dcffd8b7a243a909af718abcac4925\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2dcffd8b7a243a909af718abcac4925\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::data = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pointer to arbitrary data. </p>\n<p >Can be set to a nullptr. Some message types have specific data, e.g. structs or other types that they need their data pointers to be pointing to. For your own message types, you can use this pointer for whatever purpose you want. If uncertain, set this to a nullptr. </p>\n\n</div>\n</div>\n<a id=\"aa694cba3fcc077563b3d47e36a818494\" name=\"aa694cba3fcc077563b3d47e36a818494\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa694cba3fcc077563b3d47e36a818494\">&#9670;&nbsp;</a></span>data_int</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::data_int</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Arbitrary data integer. </p>\n\n</div>\n</div>\n<a id=\"af0bef4c3d63c5908c15440636071d25d\" name=\"af0bef4c3d63c5908c15440636071d25d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0bef4c3d63c5908c15440636071d25d\">&#9670;&nbsp;</a></span>data_value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::data_value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pointer to a value_t. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/message.html\">https://racenis.github.io/tram-sdk/documentation/framework/message.html</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a1d8a1a38aac71f1a0725b52ce898b7b1\" name=\"a1d8a1a38aac71f1a0725b52ce898b7b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d8a1a38aac71f1a0725b52ce898b7b1\">&#9670;&nbsp;</a></span>receiver</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::receiver</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>ID of the <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> that will receive the message. </p>\n<p >Set to the ID of an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>. </p>\n\n</div>\n</div>\n<a id=\"a28e9498ff0a7bb62e84f2a6c2589fa94\" name=\"a28e9498ff0a7bb62e84f2a6c2589fa94\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28e9498ff0a7bb62e84f2a6c2589fa94\">&#9670;&nbsp;</a></span>sender</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::sender</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>ID of the <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> that sent the message. </p>\n<p >Either set to the ID of an <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a>, or can be set to zero. </p>\n\n</div>\n</div>\n<a id=\"a0f822eec485aa46e9c93e9445526c8c1\" name=\"a0f822eec485aa46e9c93e9445526c8c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f822eec485aa46e9c93e9445526c8c1\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Message::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Type of the message. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"message_8h_source.html\">message.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"message_8cpp.html\">message.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_navmesh_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::NavmeshNode Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">left</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">next</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">prev</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">right</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">tram::NavmeshNode</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_navmesh_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::NavmeshNode Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html\">NavmeshNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_navmesh_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::NavmeshNode Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"navmesh_8h_source.html\">navmesh.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad3d50642ce0f2c8aa8beb13fc48ca2e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">next</a></td></tr>\n<tr class=\"separator:ad3d50642ce0f2c8aa8beb13fc48ca2e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a56530b45077f4b6e6bf49e254b4a5ad5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a56530b45077f4b6e6bf49e254b4a5ad5\">prev</a></td></tr>\n<tr class=\"separator:a56530b45077f4b6e6bf49e254b4a5ad5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae94caf6d6598ec97d187913ec353ed31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#ae94caf6d6598ec97d187913ec353ed31\">left</a></td></tr>\n<tr class=\"separator:ae94caf6d6598ec97d187913ec353ed31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08dc0bcb36ae016bcc80f318a06b292f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#a08dc0bcb36ae016bcc80f318a06b292f\">right</a></td></tr>\n<tr class=\"separator:a08dc0bcb36ae016bcc80f318a06b292f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae10ee4d482ec0937f6246279734e0f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_navmesh_node.html#aae10ee4d482ec0937f6246279734e0f1\">position</a></td></tr>\n<tr class=\"separator:aae10ee4d482ec0937f6246279734e0f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae94caf6d6598ec97d187913ec353ed31\" name=\"ae94caf6d6598ec97d187913ec353ed31\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae94caf6d6598ec97d187913ec353ed31\">&#9670;&nbsp;</a></span>left</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::NavmeshNode::left</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad3d50642ce0f2c8aa8beb13fc48ca2e2\" name=\"ad3d50642ce0f2c8aa8beb13fc48ca2e2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3d50642ce0f2c8aa8beb13fc48ca2e2\">&#9670;&nbsp;</a></span>next</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::NavmeshNode::next</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae10ee4d482ec0937f6246279734e0f1\" name=\"aae10ee4d482ec0937f6246279734e0f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae10ee4d482ec0937f6246279734e0f1\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::NavmeshNode::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a56530b45077f4b6e6bf49e254b4a5ad5\" name=\"a56530b45077f4b6e6bf49e254b4a5ad5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56530b45077f4b6e6bf49e254b4a5ad5\">&#9670;&nbsp;</a></span>prev</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::NavmeshNode::prev</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08dc0bcb36ae016bcc80f318a06b292f\" name=\"a08dc0bcb36ae016bcc80f318a06b292f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08dc0bcb36ae016bcc80f318a06b292f\">&#9670;&nbsp;</a></span>right</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::NavmeshNode::right</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"navmesh_8h_source.html\">navmesh.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Node Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_node.html\">tram::Node</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">edges</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_node.html\">tram::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_node.html\">tram::Node</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Node Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Node Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a189f24e56e385fcf1e9ff4b4b40c7b7a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_node.html#a189f24e56e385fcf1e9ff4b4b40c7b7a\">position</a></td></tr>\n<tr class=\"separator:a189f24e56e385fcf1e9ff4b4b40c7b7a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28d12d5232b5f9651565664e0eae3cce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_node.html#a28d12d5232b5f9651565664e0eae3cce\">edges</a></td></tr>\n<tr class=\"separator:a28d12d5232b5f9651565664e0eae3cce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a28d12d5232b5f9651565664e0eae3cce\" name=\"a28d12d5232b5f9651565664e0eae3cce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d12d5232b5f9651565664e0eae3cce\">&#9670;&nbsp;</a></span>edges</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;uint32_t&gt; tram::Node::edges</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a189f24e56e385fcf1e9ff4b4b40c7b7a\" name=\"a189f24e56e385fcf1e9ff4b4b40c7b7a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a189f24e56e385fcf1e9ff4b4b40c7b7a\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Node::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2graph_8h_source.html\">graph.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_octree_1_1_nearest_search-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt;::NearestSearch Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">tram::Octree&lt; T &gt;::NearestSearch</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_octree_1_1_nearest_search.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Octree&lt; T &gt;::NearestSearch Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html\">NearestSearch</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_octree_1_1_nearest_search-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt;::NearestSearch Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a720eef381f2e423cce0ca23f94add470\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a720eef381f2e423cce0ca23f94add470\">nearest</a> [4] = {nullptr, nullptr, nullptr, nullptr}</td></tr>\n<tr class=\"separator:a720eef381f2e423cce0ca23f94add470\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6bbbfe8160af656016aa78c0fb106f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa6bbbfe8160af656016aa78c0fb106f2\">distance</a> [4] = {INFINITY, INFINITY, INFINITY, INFINITY}</td></tr>\n<tr class=\"separator:aa6bbbfe8160af656016aa78c0fb106f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad0e4df7ab810d7077f6237205f63aa58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#ad0e4df7ab810d7077f6237205f63aa58\">farthest_index</a> = 0</td></tr>\n<tr class=\"separator:ad0e4df7ab810d7077f6237205f63aa58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa822dea4fb296786eb30325c47e18635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#aa822dea4fb296786eb30325c47e18635\">farthest_distance</a> = -INFINITY</td></tr>\n<tr class=\"separator:aa822dea4fb296786eb30325c47e18635\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf2e15ec26f3738dd03c6712de61df5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#adf2e15ec26f3738dd03c6712de61df5e\">point</a></td></tr>\n<tr class=\"separator:adf2e15ec26f3738dd03c6712de61df5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a4cacd8eca108ce703cc4ede667550b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_nearest_search.html#a0a4cacd8eca108ce703cc4ede667550b\">found</a> = 0</td></tr>\n<tr class=\"separator:a0a4cacd8eca108ce703cc4ede667550b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa6bbbfe8160af656016aa78c0fb106f2\" name=\"aa6bbbfe8160af656016aa78c0fb106f2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6bbbfe8160af656016aa78c0fb106f2\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::distance[4] = {INFINITY, INFINITY, INFINITY, INFINITY}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa822dea4fb296786eb30325c47e18635\" name=\"aa822dea4fb296786eb30325c47e18635\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa822dea4fb296786eb30325c47e18635\">&#9670;&nbsp;</a></span>farthest_distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::farthest_distance = -INFINITY</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad0e4df7ab810d7077f6237205f63aa58\" name=\"ad0e4df7ab810d7077f6237205f63aa58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0e4df7ab810d7077f6237205f63aa58\">&#9670;&nbsp;</a></span>farthest_index</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::farthest_index = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a4cacd8eca108ce703cc4ede667550b\" name=\"a0a4cacd8eca108ce703cc4ede667550b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a4cacd8eca108ce703cc4ede667550b\">&#9670;&nbsp;</a></span>found</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::found = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a720eef381f2e423cce0ca23f94add470\" name=\"a720eef381f2e423cce0ca23f94add470\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a720eef381f2e423cce0ca23f94add470\">&#9670;&nbsp;</a></span>nearest</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::nearest[4] = {nullptr, nullptr, nullptr, nullptr}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf2e15ec26f3738dd03c6712de61df5e\" name=\"adf2e15ec26f3738dd03c6712de61df5e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf2e15ec26f3738dd03c6712de61df5e\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::NearestSearch::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_octree_1_1_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt;::Node Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">IsLeaf</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">tram::Octree&lt; T &gt;::Node</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_octree_1_1_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Octree&lt; T &gt;::Node Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_octree.html\">Octree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_octree_1_1_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Octree&lt; T &gt;::Node Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:acf0b359104e69ae9202d41f55db25429\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#acf0b359104e69ae9202d41f55db25429\">IsLeaf</a> ()</td></tr>\n<tr class=\"separator:acf0b359104e69ae9202d41f55db25429\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3abcf52999ab189502ffbd384f5c598c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3abcf52999ab189502ffbd384f5c598c\">IsNode</a> ()</td></tr>\n<tr class=\"separator:a3abcf52999ab189502ffbd384f5c598c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a95c1f7044d872a41e611dd968405771d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a95c1f7044d872a41e611dd968405771d\">octants</a> [8] = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}</td></tr>\n<tr class=\"separator:a95c1f7044d872a41e611dd968405771d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3824ba3c3a244a92562817cf43c102df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a3824ba3c3a244a92562817cf43c102df\">parent</a> = nullptr</td></tr>\n<tr class=\"separator:a3824ba3c3a244a92562817cf43c102df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f504886cb278bba4d7b3646c7a6f8f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a9f504886cb278bba4d7b3646c7a6f8f1\">mid_point</a></td></tr>\n<tr class=\"separator:a9f504886cb278bba4d7b3646c7a6f8f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a452e2b6329f9a981b6eb3738613f871d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a452e2b6329f9a981b6eb3738613f871d\">half_extent</a> = 1.0f</td></tr>\n<tr class=\"separator:a452e2b6329f9a981b6eb3738613f871d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6547353b4a05dc60327f462ff73e0757\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#a6547353b4a05dc60327f462ff73e0757\">point</a></td></tr>\n<tr class=\"separator:a6547353b4a05dc60327f462ff73e0757\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae7e2eb79df26b8c7877defbe17d2e8eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html#ae7e2eb79df26b8c7877defbe17d2e8eb\">data</a></td></tr>\n<tr class=\"separator:ae7e2eb79df26b8c7877defbe17d2e8eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"acf0b359104e69ae9202d41f55db25429\" name=\"acf0b359104e69ae9202d41f55db25429\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf0b359104e69ae9202d41f55db25429\">&#9670;&nbsp;</a></span>IsLeaf()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::IsLeaf </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3abcf52999ab189502ffbd384f5c598c\" name=\"a3abcf52999ab189502ffbd384f5c598c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3abcf52999ab189502ffbd384f5c598c\">&#9670;&nbsp;</a></span>IsNode()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::IsNode </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae7e2eb79df26b8c7877defbe17d2e8eb\" name=\"ae7e2eb79df26b8c7877defbe17d2e8eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7e2eb79df26b8c7877defbe17d2e8eb\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a452e2b6329f9a981b6eb3738613f871d\" name=\"a452e2b6329f9a981b6eb3738613f871d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a452e2b6329f9a981b6eb3738613f871d\">&#9670;&nbsp;</a></span>half_extent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::half_extent = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f504886cb278bba4d7b3646c7a6f8f1\" name=\"a9f504886cb278bba4d7b3646c7a6f8f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f504886cb278bba4d7b3646c7a6f8f1\">&#9670;&nbsp;</a></span>mid_point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::mid_point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95c1f7044d872a41e611dd968405771d\" name=\"a95c1f7044d872a41e611dd968405771d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95c1f7044d872a41e611dd968405771d\">&#9670;&nbsp;</a></span>octants</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::octants[8] = {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3824ba3c3a244a92562817cf43c102df\" name=\"a3824ba3c3a244a92562817cf43c102df\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3824ba3c3a244a92562817cf43c102df\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_octree_1_1_node.html\">Node</a>* <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::parent = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6547353b4a05dc60327f462ff73e0757\" name=\"a6547353b4a05dc60327f462ff73e0757\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6547353b4a05dc60327f462ff73e0757\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"el\" href=\"classtram_1_1_octree.html\">tram::Octree</a>&lt; T &gt;::Node::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"octree_8h_source.html\">octree.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_particle_component_1_1_particle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ParticleComponent::Particle Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">age</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">coords</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">velocity</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">tram::ParticleComponent::Particle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_particle_component_1_1_particle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ParticleComponent::Particle Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_particle_component.html\">ParticleComponent</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html\">Particle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_particle_component_1_1_particle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ParticleComponent::Particle Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"particle_8h_source.html\">particle.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abda26a74eb7cae259f526ae455d912f2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#abda26a74eb7cae259f526ae455d912f2\">coords</a></td></tr>\n<tr class=\"separator:abda26a74eb7cae259f526ae455d912f2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af301390c50da385d76cb05fe2540e40f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#af301390c50da385d76cb05fe2540e40f\">velocity</a></td></tr>\n<tr class=\"separator:af301390c50da385d76cb05fe2540e40f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a037670487eaab8302dfc4aff5dcaf9c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_particle_component_1_1_particle.html#a037670487eaab8302dfc4aff5dcaf9c1\">age</a></td></tr>\n<tr class=\"separator:a037670487eaab8302dfc4aff5dcaf9c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a037670487eaab8302dfc4aff5dcaf9c1\" name=\"a037670487eaab8302dfc4aff5dcaf9c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a037670487eaab8302dfc4aff5dcaf9c1\">&#9670;&nbsp;</a></span>age</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::ParticleComponent::Particle::age</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abda26a74eb7cae259f526ae455d912f2\" name=\"abda26a74eb7cae259f526ae455d912f2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abda26a74eb7cae259f526ae455d912f2\">&#9670;&nbsp;</a></span>coords</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::ParticleComponent::Particle::coords</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af301390c50da385d76cb05fe2540e40f\" name=\"af301390c50da385d76cb05fe2540e40f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af301390c50da385d76cb05fe2540e40f\">&#9670;&nbsp;</a></span>velocity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::ParticleComponent::Particle::velocity</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"particle_8h_source.html\">particle.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_path_edge_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PathEdgeInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">tram::PathEdgeInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">tram::PathEdgeInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_path_edge_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PathEdgeInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html\">PathEdgeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_path_edge_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PathEdgeInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">path.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a26b5bde92d299e926fffa3cd942cfdbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_edge_info.html#a26b5bde92d299e926fffa3cd942cfdbc\">type</a></td></tr>\n<tr class=\"separator:a26b5bde92d299e926fffa3cd942cfdbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a26b5bde92d299e926fffa3cd942cfdbc\" name=\"a26b5bde92d299e926fffa3cd942cfdbc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26b5bde92d299e926fffa3cd942cfdbc\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a8285e82eb5cb49da9f6a5a02dd0560a2\">PathType</a> tram::PathEdgeInfo::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8h_source.html\">path.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_path_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">PathNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PathNode Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a61e0f39f3b736995836d7a35b6f91525\">left</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html#ab9a11c3f7335c360a9e5f2232d618bcf\">next</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a7cbd93d39bcad826f68fc6c5cffb5a2d\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a4cb21895a70e7030393c7f172c8098e5\">prev</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a27e16c485c4c698e9875b06a0f07843f\">right</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">tram::PathNode</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_path_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PathNode Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_path_node.html\">PathNode</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_path_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PathNode Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"path_8h_source.html\">path.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab9a11c3f7335c360a9e5f2232d618bcf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_node.html#ab9a11c3f7335c360a9e5f2232d618bcf\">next</a></td></tr>\n<tr class=\"separator:ab9a11c3f7335c360a9e5f2232d618bcf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cb21895a70e7030393c7f172c8098e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a4cb21895a70e7030393c7f172c8098e5\">prev</a></td></tr>\n<tr class=\"separator:a4cb21895a70e7030393c7f172c8098e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a61e0f39f3b736995836d7a35b6f91525\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a61e0f39f3b736995836d7a35b6f91525\">left</a></td></tr>\n<tr class=\"separator:a61e0f39f3b736995836d7a35b6f91525\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27e16c485c4c698e9875b06a0f07843f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a27e16c485c4c698e9875b06a0f07843f\">right</a></td></tr>\n<tr class=\"separator:a27e16c485c4c698e9875b06a0f07843f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7cbd93d39bcad826f68fc6c5cffb5a2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_path_node.html#a7cbd93d39bcad826f68fc6c5cffb5a2d\">position</a></td></tr>\n<tr class=\"separator:a7cbd93d39bcad826f68fc6c5cffb5a2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a61e0f39f3b736995836d7a35b6f91525\" name=\"a61e0f39f3b736995836d7a35b6f91525\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61e0f39f3b736995836d7a35b6f91525\">&#9670;&nbsp;</a></span>left</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::PathNode::left</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9a11c3f7335c360a9e5f2232d618bcf\" name=\"ab9a11c3f7335c360a9e5f2232d618bcf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9a11c3f7335c360a9e5f2232d618bcf\">&#9670;&nbsp;</a></span>next</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::PathNode::next</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7cbd93d39bcad826f68fc6c5cffb5a2d\" name=\"a7cbd93d39bcad826f68fc6c5cffb5a2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7cbd93d39bcad826f68fc6c5cffb5a2d\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::PathNode::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4cb21895a70e7030393c7f172c8098e5\" name=\"a4cb21895a70e7030393c7f172c8098e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4cb21895a70e7030393c7f172c8098e5\">&#9670;&nbsp;</a></span>prev</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::PathNode::prev</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a27e16c485c4c698e9875b06a0f07843f\" name=\"a27e16c485c4c698e9875b06a0f07843f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27e16c485c4c698e9875b06a0f07843f\">&#9670;&nbsp;</a></span>right</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac0fd37b7041ae8a9df2990aab1946e4c\">node_id_t</a> tram::PathNode::right</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"path_8h_source.html\">path.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::CollisionShapeTransform Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">shape</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">tram::Physics::API::CollisionShapeTransform</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::CollisionShapeTransform Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html\">CollisionShapeTransform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::CollisionShapeTransform Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">api.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a05e28343c7cc2518e829f6f8151d22d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a05e28343c7cc2518e829f6f8151d22d8\">shape</a></td></tr>\n<tr class=\"separator:a05e28343c7cc2518e829f6f8151d22d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af65c9e8ab913b92a3b19454ab7747105\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#af65c9e8ab913b92a3b19454ab7747105\">position</a></td></tr>\n<tr class=\"separator:af65c9e8ab913b92a3b19454ab7747105\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f018e305b8e1f25cd8bf8b2939605d1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_collision_shape_transform.html#a5f018e305b8e1f25cd8bf8b2939605d1\">rotation</a></td></tr>\n<tr class=\"separator:a5f018e305b8e1f25cd8bf8b2939605d1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af65c9e8ab913b92a3b19454ab7747105\" name=\"af65c9e8ab913b92a3b19454ab7747105\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af65c9e8ab913b92a3b19454ab7747105\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::API::CollisionShapeTransform::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f018e305b8e1f25cd8bf8b2939605d1\" name=\"a5f018e305b8e1f25cd8bf8b2939605d1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f018e305b8e1f25cd8bf8b2939605d1\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Physics::API::CollisionShapeTransform::rotation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a05e28343c7cc2518e829f6f8151d22d8\" name=\"a05e28343c7cc2518e829f6f8151d22d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05e28343c7cc2518e829f6f8151d22d8\">&#9670;&nbsp;</a></span>shape</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::API::CollisionShapeTransform::shape</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2api_8h_source.html\">api.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_object_collision-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::ObjectCollision Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">tram::Physics::API::ObjectCollision</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::ObjectCollision Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::ObjectCollision Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2api_8h_source.html\">api.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a092ad31904c1e2c66386ee35b85f151a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a092ad31904c1e2c66386ee35b85f151a\">point</a></td></tr>\n<tr class=\"separator:a092ad31904c1e2c66386ee35b85f151a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a29cedd1e3495373e681e36fa2e835403\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#a29cedd1e3495373e681e36fa2e835403\">normal</a></td></tr>\n<tr class=\"separator:a29cedd1e3495373e681e36fa2e835403\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab97dd0b0dde2624c20f0b1c9551d91ad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html#ab97dd0b0dde2624c20f0b1c9551d91ad\">distance</a></td></tr>\n<tr class=\"separator:ab97dd0b0dde2624c20f0b1c9551d91ad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab97dd0b0dde2624c20f0b1c9551d91ad\" name=\"ab97dd0b0dde2624c20f0b1c9551d91ad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab97dd0b0dde2624c20f0b1c9551d91ad\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::API::ObjectCollision::distance</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a29cedd1e3495373e681e36fa2e835403\" name=\"a29cedd1e3495373e681e36fa2e835403\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29cedd1e3495373e681e36fa2e835403\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::API::ObjectCollision::normal</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a092ad31904c1e2c66386ee35b85f151a\" name=\"a092ad31904c1e2c66386ee35b85f151a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a092ad31904c1e2c66386ee35b85f151a\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::API::ObjectCollision::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2api_8h_source.html\">api.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::RigidbodyMetadata Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181\">collision_callback</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7\">collision_data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994\">collision_flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead\">collision_group</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb\">collision_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa\">motion_state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">tram::Physics::API::RigidbodyMetadata</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::RigidbodyMetadata Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">RigidbodyMetadata</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::RigidbodyMetadata Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3a4939cc208da60f4699370c0cd06cfb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a3a4939cc208da60f4699370c0cd06cfb\">collision_mask</a> = -1</td></tr>\n<tr class=\"separator:a3a4939cc208da60f4699370c0cd06cfb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa6c56afdaf9c872476e22c40c377ead\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#afa6c56afdaf9c872476e22c40c377ead\">collision_group</a> = -1</td></tr>\n<tr class=\"separator:afa6c56afdaf9c872476e22c40c377ead\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a244fc4d3569fdb5dcf085618c9e43994\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a244fc4d3569fdb5dcf085618c9e43994\">collision_flags</a> = 0</td></tr>\n<tr class=\"separator:a244fc4d3569fdb5dcf085618c9e43994\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a796afd885b22f43971092effd71696aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a796afd885b22f43971092effd71696aa\">motion_state</a> = nullptr</td></tr>\n<tr class=\"separator:a796afd885b22f43971092effd71696aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aea210efa373c418e2c0ddb2b5ecc623c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">MetadataType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#aea210efa373c418e2c0ddb2b5ecc623c\">type</a></td></tr>\n<tr class=\"separator:aea210efa373c418e2c0ddb2b5ecc623c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55749e240a2fd4f7dd0f86138f172181\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a55749e240a2fd4f7dd0f86138f172181\">collision_callback</a> = nullptr</td></tr>\n<tr class=\"separator:a55749e240a2fd4f7dd0f86138f172181\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76f7624540258f9c63b2ec9d3cd564d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html#a76f7624540258f9c63b2ec9d3cd564d7\">collision_data</a> = nullptr</td></tr>\n<tr class=\"separator:a76f7624540258f9c63b2ec9d3cd564d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a55749e240a2fd4f7dd0f86138f172181\" name=\"a55749e240a2fd4f7dd0f86138f172181\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55749e240a2fd4f7dd0f86138f172181\">&#9670;&nbsp;</a></span>collision_callback</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#acd529fe6abcfcd4c2e82d455cddee7f7\">col_callback</a> tram::Physics::API::RigidbodyMetadata::collision_callback = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76f7624540258f9c63b2ec9d3cd564d7\" name=\"a76f7624540258f9c63b2ec9d3cd564d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76f7624540258f9c63b2ec9d3cd564d7\">&#9670;&nbsp;</a></span>collision_data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Physics::API::RigidbodyMetadata::collision_data = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a244fc4d3569fdb5dcf085618c9e43994\" name=\"a244fc4d3569fdb5dcf085618c9e43994\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a244fc4d3569fdb5dcf085618c9e43994\">&#9670;&nbsp;</a></span>collision_flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Physics::API::RigidbodyMetadata::collision_flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa6c56afdaf9c872476e22c40c377ead\" name=\"afa6c56afdaf9c872476e22c40c377ead\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa6c56afdaf9c872476e22c40c377ead\">&#9670;&nbsp;</a></span>collision_group</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Physics::API::RigidbodyMetadata::collision_group = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a4939cc208da60f4699370c0cd06cfb\" name=\"a3a4939cc208da60f4699370c0cd06cfb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a4939cc208da60f4699370c0cd06cfb\">&#9670;&nbsp;</a></span>collision_mask</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Physics::API::RigidbodyMetadata::collision_mask = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a796afd885b22f43971092effd71696aa\" name=\"a796afd885b22f43971092effd71696aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a796afd885b22f43971092effd71696aa\">&#9670;&nbsp;</a></span>motion_state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_physics_1_1_a_p_i_1_1_callback_motion_state.html\">CallbackMotionState</a>* tram::Physics::API::RigidbodyMetadata::motion_state = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aea210efa373c418e2c0ddb2b5ecc623c\" name=\"aea210efa373c418e2c0ddb2b5ecc623c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea210efa373c418e2c0ddb2b5ecc623c\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html#a7fe5a316a9a2a82e6fefebb795f58eb0\">MetadataType</a> tram::Physics::API::RigidbodyMetadata::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"bullet_8cpp.html\">bullet.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">ShapecastCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::ShapecastCallback Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f\">addSingleResult</a>(btCollisionWorld::LocalConvexResult &amp;convexResult, bool normalInWorldSpace)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0\">collision_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8\">collisions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1\">ShapecastCallback</a>(std::vector&lt; std::pair&lt; ObjectCollision, void * &gt; &gt; &amp;collisions, uint32_t collision_mask)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">tram::Physics::API::ShapecastCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::API::ShapecastCallback Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html\">ShapecastCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::API::ShapecastCallback Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::API::ShapecastCallback:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a71bda3c478c917d209b6513b99c1f1b1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a71bda3c478c917d209b6513b99c1f1b1\">ShapecastCallback</a> (std::vector&lt; std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; &gt; &amp;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8\">collisions</a>, uint32_t <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0\">collision_mask</a>)</td></tr>\n<tr class=\"separator:a71bda3c478c917d209b6513b99c1f1b1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab75650c5457a0594da168d17a03dab9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btScalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#ab75650c5457a0594da168d17a03dab9f\">addSingleResult</a> (btCollisionWorld::LocalConvexResult &amp;convexResult, bool normalInWorldSpace)</td></tr>\n<tr class=\"separator:ab75650c5457a0594da168d17a03dab9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a47ade4608bfdc01f7b7b9bdf9afacac8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a47ade4608bfdc01f7b7b9bdf9afacac8\">collisions</a></td></tr>\n<tr class=\"separator:a47ade4608bfdc01f7b7b9bdf9afacac8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a484204bd5bd9c58a35435ea149de92b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_shapecast_callback.html#a484204bd5bd9c58a35435ea149de92b0\">collision_mask</a></td></tr>\n<tr class=\"separator:a484204bd5bd9c58a35435ea149de92b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a71bda3c478c917d209b6513b99c1f1b1\" name=\"a71bda3c478c917d209b6513b99c1f1b1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71bda3c478c917d209b6513b99c1f1b1\">&#9670;&nbsp;</a></span>ShapecastCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::API::ShapecastCallback::ShapecastCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; std::pair&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void * &gt; &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>collisions</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ab75650c5457a0594da168d17a03dab9f\" name=\"ab75650c5457a0594da168d17a03dab9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab75650c5457a0594da168d17a03dab9f\">&#9670;&nbsp;</a></span>addSingleResult()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btScalar tram::Physics::API::ShapecastCallback::addSingleResult </td>\n          <td>(</td>\n          <td class=\"paramtype\">btCollisionWorld::LocalConvexResult &amp;&#160;</td>\n          <td class=\"paramname\"><em>convexResult</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>normalInWorldSpace</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a484204bd5bd9c58a35435ea149de92b0\" name=\"a484204bd5bd9c58a35435ea149de92b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a484204bd5bd9c58a35435ea149de92b0\">&#9670;&nbsp;</a></span>collision_mask</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Physics::API::ShapecastCallback::collision_mask</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a47ade4608bfdc01f7b7b9bdf9afacac8\" name=\"a47ade4608bfdc01f7b7b9bdf9afacac8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47ade4608bfdc01f7b7b9bdf9afacac8\">&#9670;&nbsp;</a></span>collisions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;std::pair&lt;<a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_object_collision.html\">ObjectCollision</a>, void*&gt; &gt;&amp; tram::Physics::API::ShapecastCallback::collisions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"bullet_8cpp.html\">bullet.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">Bullet</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">ShapecastCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::Bullet::ShapecastCallback Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">tram::Physics::Bullet::ShapecastCallback</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#a49a0ec7ab6eaa97ddeae4982fab79932\">addSingleResult</a>(btCollisionWorld::LocalConvexResult &amp;convexResult, bool normalInWorldSpace)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">tram::Physics::Bullet::ShapecastCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#aefdef077cd1cf0c9599d27d27bdcd4a1\">collision_mask</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">tram::Physics::Bullet::ShapecastCallback</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#a24ecfe5668fcc2f7ede7cf31bc1a551e\">collisions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">tram::Physics::Bullet::ShapecastCallback</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#ab802e8f640b0e901d2aebda849a49bb5\">ShapecastCallback</a>(std::vector&lt; Physics::Collision &gt; &amp;collisions, uint32_t collision_mask)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">tram::Physics::Bullet::ShapecastCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::Bullet::ShapecastCallback Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics_1_1_bullet.html\">Bullet</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html\">ShapecastCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::Bullet::ShapecastCallback Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::Physics::Bullet::ShapecastCallback:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab802e8f640b0e901d2aebda849a49bb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#ab802e8f640b0e901d2aebda849a49bb5\">ShapecastCallback</a> (std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;<a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#a24ecfe5668fcc2f7ede7cf31bc1a551e\">collisions</a>, uint32_t <a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#aefdef077cd1cf0c9599d27d27bdcd4a1\">collision_mask</a>)</td></tr>\n<tr class=\"separator:ab802e8f640b0e901d2aebda849a49bb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49a0ec7ab6eaa97ddeae4982fab79932\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btScalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#a49a0ec7ab6eaa97ddeae4982fab79932\">addSingleResult</a> (btCollisionWorld::LocalConvexResult &amp;convexResult, bool normalInWorldSpace)</td></tr>\n<tr class=\"separator:a49a0ec7ab6eaa97ddeae4982fab79932\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a24ecfe5668fcc2f7ede7cf31bc1a551e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#a24ecfe5668fcc2f7ede7cf31bc1a551e\">collisions</a></td></tr>\n<tr class=\"separator:a24ecfe5668fcc2f7ede7cf31bc1a551e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefdef077cd1cf0c9599d27d27bdcd4a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_bullet_1_1_shapecast_callback.html#aefdef077cd1cf0c9599d27d27bdcd4a1\">collision_mask</a></td></tr>\n<tr class=\"separator:aefdef077cd1cf0c9599d27d27bdcd4a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab802e8f640b0e901d2aebda849a49bb5\" name=\"ab802e8f640b0e901d2aebda849a49bb5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab802e8f640b0e901d2aebda849a49bb5\">&#9670;&nbsp;</a></span>ShapecastCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::Bullet::ShapecastCallback::ShapecastCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>collisions</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">uint32_t&#160;</td>\n          <td class=\"paramname\"><em>collision_mask</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a49a0ec7ab6eaa97ddeae4982fab79932\" name=\"a49a0ec7ab6eaa97ddeae4982fab79932\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49a0ec7ab6eaa97ddeae4982fab79932\">&#9670;&nbsp;</a></span>addSingleResult()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btScalar tram::Physics::Bullet::ShapecastCallback::addSingleResult </td>\n          <td>(</td>\n          <td class=\"paramtype\">btCollisionWorld::LocalConvexResult &amp;&#160;</td>\n          <td class=\"paramname\"><em>convexResult</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">bool&#160;</td>\n          <td class=\"paramname\"><em>normalInWorldSpace</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aefdef077cd1cf0c9599d27d27bdcd4a1\" name=\"aefdef077cd1cf0c9599d27d27bdcd4a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefdef077cd1cf0c9599d27d27bdcd4a1\">&#9670;&nbsp;</a></span>collision_mask</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Physics::Bullet::ShapecastCallback::collision_mask</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24ecfe5668fcc2f7ede7cf31bc1a551e\" name=\"a24ecfe5668fcc2f7ede7cf31bc1a551e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24ecfe5668fcc2f7ede7cf31bc1a551e\">&#9670;&nbsp;</a></span>collisions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>&gt;&amp; tram::Physics::Bullet::ShapecastCallback::collisions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/bullet/<a class=\"el\" href=\"bullet_8cpp.html\">bullet.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::Collision Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">collider</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">point</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::Collision Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Collision</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_collision-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::Collision Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data.  \n <a href=\"structtram_1_1_physics_1_1_collision.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9f47771842fd66f970df994aaf4364ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">collider</a></td></tr>\n<tr class=\"memdesc:a9f47771842fd66f970df994aaf4364ff\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pointer to a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a> that owns the rigidbody with which the collision happened.  <a href=\"structtram_1_1_physics_1_1_collision.html#a9f47771842fd66f970df994aaf4364ff\">More...</a><br /></td></tr>\n<tr class=\"separator:a9f47771842fd66f970df994aaf4364ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6d9ec6fb6b22c4d6c7426a6ac99962ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">point</a></td></tr>\n<tr class=\"memdesc:a6d9ec6fb6b22c4d6c7426a6ac99962ce\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Position of the collision in world space.  <a href=\"structtram_1_1_physics_1_1_collision.html#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">More...</a><br /></td></tr>\n<tr class=\"separator:a6d9ec6fb6b22c4d6c7426a6ac99962ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a690a4beda93af1b5ebc99d8c8fbf781b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">normal</a></td></tr>\n<tr class=\"memdesc:a690a4beda93af1b5ebc99d8c8fbf781b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Normal vector of the surface that the collision happened with.  <a href=\"structtram_1_1_physics_1_1_collision.html#a690a4beda93af1b5ebc99d8c8fbf781b\">More...</a><br /></td></tr>\n<tr class=\"separator:a690a4beda93af1b5ebc99d8c8fbf781b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae80a8d88309f42e12b2fa84e0e8809a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">distance</a></td></tr>\n<tr class=\"memdesc:ae80a8d88309f42e12b2fa84e0e8809a8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Distance of the collision, i.e.  <a href=\"structtram_1_1_physics_1_1_collision.html#ae80a8d88309f42e12b2fa84e0e8809a8\">More...</a><br /></td></tr>\n<tr class=\"separator:ae80a8d88309f42e12b2fa84e0e8809a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a> collision data. </p>\n<p >Used to represent a collision between two physics objects. Sometimes a function always returns a <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\" title=\"Physics collision data.\">Collision</a> struct, but it can still fail, such as the <a class=\"el\" href=\"namespacetram_1_1_physics.html#aa3616a0153cf20031eff7b3aba43e7f9\" title=\"Performs a raycast.\">Raycast()</a> function, which can perform a raycast that doesn't hit anything. In such a case the structs vector properties will be zeroed-out and the <code>collider</code> will be set to a <code>nullptr</code>. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9f47771842fd66f970df994aaf4364ff\" name=\"a9f47771842fd66f970df994aaf4364ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f47771842fd66f970df994aaf4364ff\">&#9670;&nbsp;</a></span>collider</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::Collision::collider</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Pointer to a <a class=\"el\" href=\"classtram_1_1_physics_component.html\" title=\"Rigidbody wrapper.\">PhysicsComponent</a> that owns the rigidbody with which the collision happened. </p>\n\n</div>\n</div>\n<a id=\"ae80a8d88309f42e12b2fa84e0e8809a8\" name=\"ae80a8d88309f42e12b2fa84e0e8809a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae80a8d88309f42e12b2fa84e0e8809a8\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::Collision::distance</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Distance of the collision, i.e. </p>\n<p >how far the colliders penetrated each other. </p>\n\n</div>\n</div>\n<a id=\"a690a4beda93af1b5ebc99d8c8fbf781b\" name=\"a690a4beda93af1b5ebc99d8c8fbf781b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a690a4beda93af1b5ebc99d8c8fbf781b\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::Collision::normal</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Normal vector of the surface that the collision happened with. </p>\n\n</div>\n</div>\n<a id=\"a6d9ec6fb6b22c4d6c7426a6ac99962ce\" name=\"a6d9ec6fb6b22c4d6c7426a6ac99962ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d9ec6fb6b22c4d6c7426a6ac99962ce\">&#9670;&nbsp;</a></span>point</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Physics::Collision::point</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Position of the collision in world space. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2physics_8cpp.html\">physics.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision_shape-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionShape Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">Box</a>(vec3 dimensions)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">Capsule</a>(float radius, float height)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">Cone</a>(float radius, float height)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">Cylinder</a>(float radius, float height)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">extent_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">extent_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">extent_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">Hull</a>(vec3 *points, size_t size)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">hull_points</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">hull_size</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">Mesh</a>(CollisionTriangle *triangles, size_t size)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">mesh_size</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">mesh_triangles</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">radius_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">radius_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">Sphere</a>(float radius)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision_shape.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::CollisionShape Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_collision_shape-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionShape Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Shape for a collider.  \n <a href=\"structtram_1_1_physics_1_1_collision_shape.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">physics/collisionshape.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a208f202b55cc4bed0b0eb7f181e9b33b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">Sphere</a> (float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>)</td></tr>\n<tr class=\"memdesc:a208f202b55cc4bed0b0eb7f181e9b33b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a sphere.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#a208f202b55cc4bed0b0eb7f181e9b33b\">More...</a><br /></td></tr>\n<tr class=\"separator:a208f202b55cc4bed0b0eb7f181e9b33b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16a7c9a700bb8498cdc70e4b57e1c248\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">Cylinder</a> (float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>)</td></tr>\n<tr class=\"memdesc:a16a7c9a700bb8498cdc70e4b57e1c248\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a cylinder.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#a16a7c9a700bb8498cdc70e4b57e1c248\">More...</a><br /></td></tr>\n<tr class=\"separator:a16a7c9a700bb8498cdc70e4b57e1c248\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afae4406289b2e70a53335128889c4248\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">Capsule</a> (float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>)</td></tr>\n<tr class=\"memdesc:afae4406289b2e70a53335128889c4248\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a capsule.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#afae4406289b2e70a53335128889c4248\">More...</a><br /></td></tr>\n<tr class=\"separator:afae4406289b2e70a53335128889c4248\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6bfd9e0a322b6a7c5babf73c33695f5b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">Cone</a> (float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a>, float <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a>)</td></tr>\n<tr class=\"memdesc:a6bfd9e0a322b6a7c5babf73c33695f5b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a cone.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#a6bfd9e0a322b6a7c5babf73c33695f5b\">More...</a><br /></td></tr>\n<tr class=\"separator:a6bfd9e0a322b6a7c5babf73c33695f5b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fe0b464de813a7b9e4756ed81882bd3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">Box</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> dimensions)</td></tr>\n<tr class=\"memdesc:a2fe0b464de813a7b9e4756ed81882bd3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a box.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#a2fe0b464de813a7b9e4756ed81882bd3\">More...</a><br /></td></tr>\n<tr class=\"separator:a2fe0b464de813a7b9e4756ed81882bd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a883545f482ba93253bfa3c03764dcf96\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">Hull</a> (<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *points, size_t size)</td></tr>\n<tr class=\"memdesc:a883545f482ba93253bfa3c03764dcf96\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a convex hull.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#a883545f482ba93253bfa3c03764dcf96\">More...</a><br /></td></tr>\n<tr class=\"separator:a883545f482ba93253bfa3c03764dcf96\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1b9dd4a5ab3e27a4325d18df5e4d096\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">Mesh</a> (<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a> *triangles, size_t size)</td></tr>\n<tr class=\"memdesc:ab1b9dd4a5ab3e27a4325d18df5e4d096\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates a triangle mesh.  <a href=\"structtram_1_1_physics_1_1_collision_shape.html#ab1b9dd4a5ab3e27a4325d18df5e4d096\">More...</a><br /></td></tr>\n<tr class=\"separator:ab1b9dd4a5ab3e27a4325d18df5e4d096\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad4f0ef4192b9763bc7775ef9f6b9a26b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">Shape</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#ad4f0ef4192b9763bc7775ef9f6b9a26b\">type</a></td></tr>\n<tr class=\"separator:ad4f0ef4192b9763bc7775ef9f6b9a26b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcac0168658d73996097663bd37536ff\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:ae75f9dd8759b3e0ec9617c08b9752cdb\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a414b658c4c8ef2c6c68179d76fc7417c\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;union {</td></tr>\n<tr class=\"memitem:ad3ac68c398e9cf0716d26b708dc432fa\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a3aea9804127806597d0b72a0bb643c3d\">radius</a></td></tr>\n<tr class=\"separator:ad3ac68c398e9cf0716d26b708dc432fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adea984fa9962642278438830946c7dd4\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a11613d734d20966282442b4b2c1614fc\">radius_x</a></td></tr>\n<tr class=\"separator:adea984fa9962642278438830946c7dd4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05a086e3bff5b498df167da53b769082\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a4350269fc3bb66af08e57cc8051457c5\">extent_x</a></td></tr>\n<tr class=\"separator:a05a086e3bff5b498df167da53b769082\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a414b658c4c8ef2c6c68179d76fc7417c\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a414b658c4c8ef2c6c68179d76fc7417c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a702850c2f5475c723f289016785e34d8\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;union {</td></tr>\n<tr class=\"memitem:a431eec9a7d00294d915e0dfb07ca54bb\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a2dd2e0e04264791e0f363e6aaf0a777d\">height</a></td></tr>\n<tr class=\"separator:a431eec9a7d00294d915e0dfb07ca54bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4dc3be530d64419535998387d8239b38\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aab4dbf0584616aab6910c8a070c70a26\">extent_y</a></td></tr>\n<tr class=\"separator:a4dc3be530d64419535998387d8239b38\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a702850c2f5475c723f289016785e34d8\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a702850c2f5475c723f289016785e34d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add44cb4f1760d0bb9be526240b4891fa\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;union {</td></tr>\n<tr class=\"memitem:a23d9433c68983cb09ec9792cbd65c5f0\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a863758c71ebd465cb595af8e3320f456\">extent_z</a></td></tr>\n<tr class=\"separator:a23d9433c68983cb09ec9792cbd65c5f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afecccad036893b754a8c3dec06e5ab8b\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;float&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a9ae3a56320a72a76d882ba2e84b699a7\">radius_z</a></td></tr>\n<tr class=\"separator:afecccad036893b754a8c3dec06e5ab8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add44cb4f1760d0bb9be526240b4891fa\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:add44cb4f1760d0bb9be526240b4891fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae75f9dd8759b3e0ec9617c08b9752cdb\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:ae75f9dd8759b3e0ec9617c08b9752cdb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c69e92f57fce52cd60c0cf4af2761e9\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:ab22823f4539799f83d35d38f8bc4f20f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a6275c4f2f2e95cd9ad571f7c0f749fca\">hull_points</a></td></tr>\n<tr class=\"separator:ab22823f4539799f83d35d38f8bc4f20f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae9bdff9497307064c060bd38acdb5a4a\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;size_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a483912b8ad6fc27f23f7c634f9aea053\">hull_size</a></td></tr>\n<tr class=\"separator:ae9bdff9497307064c060bd38acdb5a4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c69e92f57fce52cd60c0cf4af2761e9\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a6c69e92f57fce52cd60c0cf4af2761e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae49752022b9aa11b71aad0f9cd2967c9\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a1925de7946f537cb32dd0b63bd219861\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#a7c3bf4d26299f93f429849ad4f075a5c\">mesh_triangles</a></td></tr>\n<tr class=\"separator:a1925de7946f537cb32dd0b63bd219861\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a433d9410ab2feabbd0da52cb84e8a8f1\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;size_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html#aec3a6b467737e8ca959299a9173d30b7\">mesh_size</a></td></tr>\n<tr class=\"separator:a433d9410ab2feabbd0da52cb84e8a8f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae49752022b9aa11b71aad0f9cd2967c9\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:ae49752022b9aa11b71aad0f9cd2967c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adcac0168658d73996097663bd37536ff\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:adcac0168658d73996097663bd37536ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Shape for a collider. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/physics/collisionshape.html\">https://racenis.github.io/tram-sdk/documentation/physics/collisionshape.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a2fe0b464de813a7b9e4756ed81882bd3\" name=\"a2fe0b464de813a7b9e4756ed81882bd3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fe0b464de813a7b9e4756ed81882bd3\">&#9670;&nbsp;</a></span>Box()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Box </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td>\n          <td class=\"paramname\"><em>dimensions</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a box. </p>\n\n</div>\n</div>\n<a id=\"afae4406289b2e70a53335128889c4248\" name=\"afae4406289b2e70a53335128889c4248\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afae4406289b2e70a53335128889c4248\">&#9670;&nbsp;</a></span>Capsule()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Capsule </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a capsule. </p>\n\n</div>\n</div>\n<a id=\"a6bfd9e0a322b6a7c5babf73c33695f5b\" name=\"a6bfd9e0a322b6a7c5babf73c33695f5b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bfd9e0a322b6a7c5babf73c33695f5b\">&#9670;&nbsp;</a></span>Cone()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Cone </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a cone. </p>\n\n</div>\n</div>\n<a id=\"a16a7c9a700bb8498cdc70e4b57e1c248\" name=\"a16a7c9a700bb8498cdc70e4b57e1c248\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16a7c9a700bb8498cdc70e4b57e1c248\">&#9670;&nbsp;</a></span>Cylinder()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Cylinder </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>height</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a cylinder. </p>\n\n</div>\n</div>\n<a id=\"a883545f482ba93253bfa3c03764dcf96\" name=\"a883545f482ba93253bfa3c03764dcf96\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a883545f482ba93253bfa3c03764dcf96\">&#9670;&nbsp;</a></span>Hull()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Hull </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> *&#160;</td>\n          <td class=\"paramname\"><em>points</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a convex hull. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>Memory pointed to by the point pointer should not be freed until the <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> is no longer in use. </dd></dl>\n\n</div>\n</div>\n<a id=\"ab1b9dd4a5ab3e27a4325d18df5e4d096\" name=\"ab1b9dd4a5ab3e27a4325d18df5e4d096\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1b9dd4a5ab3e27a4325d18df5e4d096\">&#9670;&nbsp;</a></span>Mesh()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Mesh </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a> *&#160;</td>\n          <td class=\"paramname\"><em>triangles</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">size_t&#160;</td>\n          <td class=\"paramname\"><em>size</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a triangle mesh. </p>\n<dl class=\"section note\"><dt>Note</dt><dd>Memory pointed to by the triangle pointer should not be freed until the <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\" title=\"Shape for a collider.\">CollisionShape</a> is no longer in use. </dd></dl>\n\n</div>\n</div>\n<a id=\"a208f202b55cc4bed0b0eb7f181e9b33b\" name=\"a208f202b55cc4bed0b0eb7f181e9b33b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a208f202b55cc4bed0b0eb7f181e9b33b\">&#9670;&nbsp;</a></span>Sphere()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">CollisionShape</a> tram::Physics::CollisionShape::Sphere </td>\n          <td>(</td>\n          <td class=\"paramtype\">float&#160;</td>\n          <td class=\"paramname\"><em>radius</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Creates a sphere. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"adcac0168658d73996097663bd37536ff\" name=\"adcac0168658d73996097663bd37536ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adcac0168658d73996097663bd37536ff\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Physics::CollisionShape::@50</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4350269fc3bb66af08e57cc8051457c5\" name=\"a4350269fc3bb66af08e57cc8051457c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4350269fc3bb66af08e57cc8051457c5\">&#9670;&nbsp;</a></span>extent_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::extent_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aab4dbf0584616aab6910c8a070c70a26\" name=\"aab4dbf0584616aab6910c8a070c70a26\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4dbf0584616aab6910c8a070c70a26\">&#9670;&nbsp;</a></span>extent_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::extent_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a863758c71ebd465cb595af8e3320f456\" name=\"a863758c71ebd465cb595af8e3320f456\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a863758c71ebd465cb595af8e3320f456\">&#9670;&nbsp;</a></span>extent_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::extent_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2dd2e0e04264791e0f363e6aaf0a777d\" name=\"a2dd2e0e04264791e0f363e6aaf0a777d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2dd2e0e04264791e0f363e6aaf0a777d\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6275c4f2f2e95cd9ad571f7c0f749fca\" name=\"a6275c4f2f2e95cd9ad571f7c0f749fca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6275c4f2f2e95cd9ad571f7c0f749fca\">&#9670;&nbsp;</a></span>hull_points</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* tram::Physics::CollisionShape::hull_points</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a483912b8ad6fc27f23f7c634f9aea053\" name=\"a483912b8ad6fc27f23f7c634f9aea053\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a483912b8ad6fc27f23f7c634f9aea053\">&#9670;&nbsp;</a></span>hull_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Physics::CollisionShape::hull_size</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aec3a6b467737e8ca959299a9173d30b7\" name=\"aec3a6b467737e8ca959299a9173d30b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec3a6b467737e8ca959299a9173d30b7\">&#9670;&nbsp;</a></span>mesh_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Physics::CollisionShape::mesh_size</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7c3bf4d26299f93f429849ad4f075a5c\" name=\"a7c3bf4d26299f93f429849ad4f075a5c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c3bf4d26299f93f429849ad4f075a5c\">&#9670;&nbsp;</a></span>mesh_triangles</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a>* tram::Physics::CollisionShape::mesh_triangles</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3aea9804127806597d0b72a0bb643c3d\" name=\"a3aea9804127806597d0b72a0bb643c3d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3aea9804127806597d0b72a0bb643c3d\">&#9670;&nbsp;</a></span>radius</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::radius</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a11613d734d20966282442b4b2c1614fc\" name=\"a11613d734d20966282442b4b2c1614fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11613d734d20966282442b4b2c1614fc\">&#9670;&nbsp;</a></span>radius_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::radius_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ae3a56320a72a76d882ba2e84b699a7\" name=\"a9ae3a56320a72a76d882ba2e84b699a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ae3a56320a72a76d882ba2e84b699a7\">&#9670;&nbsp;</a></span>radius_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Physics::CollisionShape::radius_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad4f0ef4192b9763bc7775ef9f6b9a26b\" name=\"ad4f0ef4192b9763bc7775ef9f6b9a26b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4f0ef4192b9763bc7775ef9f6b9a26b\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_physics.html#abe8615cdc9ae6d697635a3a024e90470\">Shape</a> tram::Physics::CollisionShape::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"collisionshape_8h_source.html\">collisionshape.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision_triangle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionTriangle Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">p0</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">p1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">p2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">tram::Physics::CollisionTriangle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1_collision_triangle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::CollisionTriangle Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html\">CollisionTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1_collision_triangle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::CollisionTriangle Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"collisionshape_8h_source.html\">collisionshape.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af79a85c745ddbf74ab90304395826b6c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#af79a85c745ddbf74ab90304395826b6c\">p0</a></td></tr>\n<tr class=\"separator:af79a85c745ddbf74ab90304395826b6c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3bfb775d8ba71bf1452495ac6aa73a1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a3bfb775d8ba71bf1452495ac6aa73a1d\">p1</a></td></tr>\n<tr class=\"separator:a3bfb775d8ba71bf1452495ac6aa73a1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2fd02ff41418623b5dcc960512a0c342\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_collision_triangle.html#a2fd02ff41418623b5dcc960512a0c342\">p2</a></td></tr>\n<tr class=\"separator:a2fd02ff41418623b5dcc960512a0c342\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af79a85c745ddbf74ab90304395826b6c\" name=\"af79a85c745ddbf74ab90304395826b6c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af79a85c745ddbf74ab90304395826b6c\">&#9670;&nbsp;</a></span>p0</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::CollisionTriangle::p0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3bfb775d8ba71bf1452495ac6aa73a1d\" name=\"a3bfb775d8ba71bf1452495ac6aa73a1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bfb775d8ba71bf1452495ac6aa73a1d\">&#9670;&nbsp;</a></span>p1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::CollisionTriangle::p1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2fd02ff41418623b5dcc960512a0c342\" name=\"a2fd02ff41418623b5dcc960512a0c342\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fd02ff41418623b5dcc960512a0c342\">&#9670;&nbsp;</a></span>p2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Physics::CollisionTriangle::p2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"collisionshape_8h_source.html\">collisionshape.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1collisionshape__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::collisionshape_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">bt_shape</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">tram::Physics::collisionshape_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1collisionshape__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::collisionshape_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html\">collisionshape_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1collisionshape__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::collisionshape_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a11986390d77b413d024f236a8e9f41e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btCollisionShape *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1collisionshape__t.html#a11986390d77b413d024f236a8e9f41e7\">bt_shape</a></td></tr>\n<tr class=\"separator:a11986390d77b413d024f236a8e9f41e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a11986390d77b413d024f236a8e9f41e7\" name=\"a11986390d77b413d024f236a8e9f41e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11986390d77b413d024f236a8e9f41e7\">&#9670;&nbsp;</a></span>bt_shape</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btCollisionShape* tram::Physics::collisionshape_t::bt_shape</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1rigidbody__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::rigidbody_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">bt_metadata</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">bt_rigidbody</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">tram::Physics::rigidbody_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1rigidbody__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::rigidbody_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html\">rigidbody_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1rigidbody__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::rigidbody_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4b513c1a384b224dc1225c02c314b9f3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btRigidBody *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a4b513c1a384b224dc1225c02c314b9f3\">bt_rigidbody</a></td></tr>\n<tr class=\"separator:a4b513c1a384b224dc1225c02c314b9f3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a57287fd1b0bb9650403230e67c315fc9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1rigidbody__t.html#a57287fd1b0bb9650403230e67c315fc9\">bt_metadata</a></td></tr>\n<tr class=\"separator:a57287fd1b0bb9650403230e67c315fc9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a57287fd1b0bb9650403230e67c315fc9\" name=\"a57287fd1b0bb9650403230e67c315fc9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57287fd1b0bb9650403230e67c315fc9\">&#9670;&nbsp;</a></span>bt_metadata</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a>* tram::Physics::rigidbody_t::bt_metadata</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b513c1a384b224dc1225c02c314b9f3\" name=\"a4b513c1a384b224dc1225c02c314b9f3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b513c1a384b224dc1225c02c314b9f3\">&#9670;&nbsp;</a></span>bt_rigidbody</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btRigidBody* tram::Physics::rigidbody_t::bt_rigidbody</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1trigger__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::trigger_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">bt_collisionshape</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">bt_metadata</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">tram::Physics::trigger_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_1_1trigger__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Physics::trigger_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_physics.html\">Physics</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html\">trigger_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_1_1trigger__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Physics::trigger_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aba9c93ad4d520e049fcea5713032bdf4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btCollisionObject *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#aba9c93ad4d520e049fcea5713032bdf4\">bt_collisionshape</a></td></tr>\n<tr class=\"separator:aba9c93ad4d520e049fcea5713032bdf4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a71cfc73a8237b3ef17fe522d9c8060fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_1_1trigger__t.html#a71cfc73a8237b3ef17fe522d9c8060fa\">bt_metadata</a></td></tr>\n<tr class=\"separator:a71cfc73a8237b3ef17fe522d9c8060fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aba9c93ad4d520e049fcea5713032bdf4\" name=\"aba9c93ad4d520e049fcea5713032bdf4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba9c93ad4d520e049fcea5713032bdf4\">&#9670;&nbsp;</a></span>bt_collisionshape</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btCollisionObject* tram::Physics::trigger_t::bt_collisionshape</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a71cfc73a8237b3ef17fe522d9c8060fa\" name=\"a71cfc73a8237b3ef17fe522d9c8060fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71cfc73a8237b3ef17fe522d9c8060fa\">&#9670;&nbsp;</a></span>bt_metadata</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_physics_1_1_a_p_i_1_1_rigidbody_metadata.html\">API::RigidbodyMetadata</a>* tram::Physics::trigger_t::bt_metadata</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/physics/<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_constraint-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html\">PhysicsConstraint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::PhysicsConstraint Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_physics_constraint.html\">tram::PhysicsConstraint</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html#a352e7a6554663cacd6884a2e2adf2e4f\">constraint</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html\">tram::PhysicsConstraint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html#a99546e18528ad2514d339d8a069fbfe7\">other</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html\">tram::PhysicsConstraint</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_physics_constraint.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::PhysicsConstraint Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html\">PhysicsConstraint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_physics_constraint-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::PhysicsConstraint Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">physics.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a99546e18528ad2514d339d8a069fbfe7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html#a99546e18528ad2514d339d8a069fbfe7\">other</a></td></tr>\n<tr class=\"separator:a99546e18528ad2514d339d8a069fbfe7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a352e7a6554663cacd6884a2e2adf2e4f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btTypedConstraint *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_physics_constraint.html#a352e7a6554663cacd6884a2e2adf2e4f\">constraint</a></td></tr>\n<tr class=\"separator:a352e7a6554663cacd6884a2e2adf2e4f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a352e7a6554663cacd6884a2e2adf2e4f\" name=\"a352e7a6554663cacd6884a2e2adf2e4f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a352e7a6554663cacd6884a2e2adf2e4f\">&#9670;&nbsp;</a></span>constraint</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btTypedConstraint* tram::PhysicsConstraint::constraint</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a99546e18528ad2514d339d8a069fbfe7\" name=\"a99546e18528ad2514d339d8a069fbfe7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99546e18528ad2514d339d8a069fbfe7\">&#9670;&nbsp;</a></span>other</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>* tram::PhysicsConstraint::other</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2physics_8h_source.html\">physics.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_pool_1_1iterator-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Pool&lt; T &gt;::iterator Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">iterator</a>(T *ptr)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">operator!=</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">operator*</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">operator++</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302\">operator++</a>(int)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">operator-&gt;</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">operator==</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"><span class=\"mlabel\">friend</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">tram::Pool&lt; T &gt;::iterator</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_pool_1_1iterator.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Pool&lt; T &gt;::iterator Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_pool.html\">Pool</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"#friends\">Friends</a> &#124;\n<a href=\"structtram_1_1_pool_1_1iterator-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Pool&lt; T &gt;::iterator Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a457d9529077f98de008f5c96ff860eb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a457d9529077f98de008f5c96ff860eb0\">iterator</a> (T *<a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a>)</td></tr>\n<tr class=\"separator:a457d9529077f98de008f5c96ff860eb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae1b598c681e2e0993cd726817c7304cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#ae1b598c681e2e0993cd726817c7304cf\">operator*</a> () const</td></tr>\n<tr class=\"separator:ae1b598c681e2e0993cd726817c7304cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a48a325f43b759e963ebc8f9a6791cdcb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a48a325f43b759e963ebc8f9a6791cdcb\">operator-&gt;</a> ()</td></tr>\n<tr class=\"separator:a48a325f43b759e963ebc8f9a6791cdcb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af29387992afc913f26300d7b779a4db8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#af29387992afc913f26300d7b779a4db8\">operator++</a> ()</td></tr>\n<tr class=\"separator:af29387992afc913f26300d7b779a4db8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8cd774ed78f4aa2e1e23d005e8f43302\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a8cd774ed78f4aa2e1e23d005e8f43302\">operator++</a> (int)</td></tr>\n<tr class=\"separator:a8cd774ed78f4aa2e1e23d005e8f43302\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a808c822ba3bb0ba92a806f668c934fa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a808c822ba3bb0ba92a806f668c934fa7\">ptr</a></td></tr>\n<tr class=\"separator:a808c822ba3bb0ba92a806f668c934fa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"friends\" name=\"friends\"></a>\nFriends</h2></td></tr>\n<tr class=\"memitem:a81d10d7799462c7ca5e7cf19119ca356\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a81d10d7799462c7ca5e7cf19119ca356\">operator==</a> (const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;a, const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;b)</td></tr>\n<tr class=\"separator:a81d10d7799462c7ca5e7cf19119ca356\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55a8ee0e80dad1a7da9d751c25bc0386\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html#a55a8ee0e80dad1a7da9d751c25bc0386\">operator!=</a> (const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;a, const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;b)</td></tr>\n<tr class=\"separator:a55a8ee0e80dad1a7da9d751c25bc0386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a457d9529077f98de008f5c96ff860eb0\" name=\"a457d9529077f98de008f5c96ff860eb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a457d9529077f98de008f5c96ff860eb0\">&#9670;&nbsp;</a></span>iterator()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::iterator </td>\n          <td>(</td>\n          <td class=\"paramtype\">T *&#160;</td>\n          <td class=\"paramname\"><em>ptr</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ae1b598c681e2e0993cd726817c7304cf\" name=\"ae1b598c681e2e0993cd726817c7304cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1b598c681e2e0993cd726817c7304cf\">&#9670;&nbsp;</a></span>operator*()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T &amp; <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::operator* </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af29387992afc913f26300d7b779a4db8\" name=\"af29387992afc913f26300d7b779a4db8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af29387992afc913f26300d7b779a4db8\">&#9670;&nbsp;</a></span>operator++() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp; <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::operator++ </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8cd774ed78f4aa2e1e23d005e8f43302\" name=\"a8cd774ed78f4aa2e1e23d005e8f43302\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cd774ed78f4aa2e1e23d005e8f43302\">&#9670;&nbsp;</a></span>operator++() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::operator++ </td>\n          <td>(</td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a48a325f43b759e963ebc8f9a6791cdcb\" name=\"a48a325f43b759e963ebc8f9a6791cdcb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48a325f43b759e963ebc8f9a6791cdcb\">&#9670;&nbsp;</a></span>operator-&gt;()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T * <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::operator-&gt; </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Friends And Related Function Documentation</h2>\n<a id=\"a55a8ee0e80dad1a7da9d751c25bc0386\" name=\"a55a8ee0e80dad1a7da9d751c25bc0386\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55a8ee0e80dad1a7da9d751c25bc0386\">&#9670;&nbsp;</a></span>operator!=</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool operator!= </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81d10d7799462c7ca5e7cf19119ca356\" name=\"a81d10d7799462c7ca5e7cf19119ca356\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81d10d7799462c7ca5e7cf19119ca356\">&#9670;&nbsp;</a></span>operator==</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool operator== </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>a</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_pool_1_1iterator.html\">iterator</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>b</em>&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a808c822ba3bb0ba92a806f668c934fa7\" name=\"a808c822ba3bb0ba92a806f668c934fa7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a808c822ba3bb0ba92a806f668c934fa7\">&#9670;&nbsp;</a></span>ptr</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T* <a class=\"el\" href=\"classtram_1_1_pool.html\">tram::Pool</a>&lt; T &gt;::iterator::ptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/<a class=\"el\" href=\"pool_8h_source.html\">pool.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">AABBLeaf</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABB::AABBLeaf Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6\">leaf</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5\">ref_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773\">rendercomponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">tram::Render::AABB::AABBLeaf</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::AABB::AABBLeaf Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html\">AABBLeaf</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABB::AABBLeaf Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a25ddbe86d347600cbfda7432448d05b5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a25ddbe86d347600cbfda7432448d05b5\">ref_type</a></td></tr>\n<tr class=\"separator:a25ddbe86d347600cbfda7432448d05b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad1a2099435858c965b4ddb5e4dbea1e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">AABBTree::Node</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#ad1a2099435858c965b4ddb5e4dbea1e6\">leaf</a></td></tr>\n<tr class=\"separator:ad1a2099435858c965b4ddb5e4dbea1e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a876d9e8166c307910b9377d16220aa37\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a64a5dabf07fc923abae2c65aa96e6e74\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_a_a_b_b_leaf.html#a0c210b34d5b66cf3a0f26eb37a45f773\">rendercomponent</a></td></tr>\n<tr class=\"separator:a64a5dabf07fc923abae2c65aa96e6e74\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a876d9e8166c307910b9377d16220aa37\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a876d9e8166c307910b9377d16220aa37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a876d9e8166c307910b9377d16220aa37\" name=\"a876d9e8166c307910b9377d16220aa37\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a876d9e8166c307910b9377d16220aa37\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::AABB::AABBLeaf::@85</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad1a2099435858c965b4ddb5e4dbea1e6\" name=\"ad1a2099435858c965b4ddb5e4dbea1e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad1a2099435858c965b4ddb5e4dbea1e6\">&#9670;&nbsp;</a></span>leaf</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">AABBTree::Node</a>* tram::Render::AABB::AABBLeaf::leaf</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a25ddbe86d347600cbfda7432448d05b5\" name=\"a25ddbe86d347600cbfda7432448d05b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25ddbe86d347600cbfda7432448d05b5\">&#9670;&nbsp;</a></span>ref_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> tram::Render::AABB::AABBLeaf::ref_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0c210b34d5b66cf3a0f26eb37a45f773\" name=\"a0c210b34d5b66cf3a0f26eb37a45f773\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c210b34d5b66cf3a0f26eb37a45f773\">&#9670;&nbsp;</a></span>rendercomponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_component.html\">RenderComponent</a>* tram::Render::AABB::AABBLeaf::rendercomponent</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"scene_8cpp.html\">scene.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_1_1_query_response-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABB::QueryResponse Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">intersection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">triangle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">tram::Render::AABB::QueryResponse</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::AABB::QueryResponse Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html\">AABB</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html\">QueryResponse</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABB::QueryResponse Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"scene_8h_source.html\">scene.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acbc9174af642114af907b43460aa2b39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#acbc9174af642114af907b43460aa2b39\">type</a></td></tr>\n<tr class=\"separator:acbc9174af642114af907b43460aa2b39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee216817295b389fd464292129006984\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#aee216817295b389fd464292129006984\">data</a></td></tr>\n<tr class=\"separator:aee216817295b389fd464292129006984\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7731e6615a0676cbaa1aa81668314256\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#a7731e6615a0676cbaa1aa81668314256\">intersection</a></td></tr>\n<tr class=\"separator:a7731e6615a0676cbaa1aa81668314256\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3f83ed0e19fec90c88b5057ea34e965\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_1_1_query_response.html#ae3f83ed0e19fec90c88b5057ea34e965\">triangle</a></td></tr>\n<tr class=\"separator:ae3f83ed0e19fec90c88b5057ea34e965\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aee216817295b389fd464292129006984\" name=\"aee216817295b389fd464292129006984\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee216817295b389fd464292129006984\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::AABB::QueryResponse::data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7731e6615a0676cbaa1aa81668314256\" name=\"a7731e6615a0676cbaa1aa81668314256\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7731e6615a0676cbaa1aa81668314256\">&#9670;&nbsp;</a></span>intersection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::AABB::QueryResponse::intersection</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae3f83ed0e19fec90c88b5057ea34e965\" name=\"ae3f83ed0e19fec90c88b5057ea34e965\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3f83ed0e19fec90c88b5057ea34e965\">&#9670;&nbsp;</a></span>triangle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> tram::Render::AABB::QueryResponse::triangle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acbc9174af642114af907b43460aa2b39\" name=\"acbc9174af642114af907b43460aa2b39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbc9174af642114af907b43460aa2b39\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_a_b_b.html#a5bb0d1f9511914c037cd30f91aa9264c\">ReferenceType</a> tram::Render::AABB::QueryResponse::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"scene_8h_source.html\">scene.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_triangle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABBTriangle Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">material</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">point1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">point2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">point3</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">tram::Render::AABBTriangle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_a_b_b_triangle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::AABBTriangle Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_a_b_b_triangle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::AABBTriangle Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">model.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a6706198c449462db4acad33bfccc4a73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a6706198c449462db4acad33bfccc4a73\">point1</a></td></tr>\n<tr class=\"separator:a6706198c449462db4acad33bfccc4a73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a912b569097565c02f6614349d39ba473\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a912b569097565c02f6614349d39ba473\">point2</a></td></tr>\n<tr class=\"separator:a912b569097565c02f6614349d39ba473\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abda9898750755ee69a75ae3251a92148\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#abda9898750755ee69a75ae3251a92148\">point3</a></td></tr>\n<tr class=\"separator:abda9898750755ee69a75ae3251a92148\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15f432bcb85141fa1bd8d9db631a552b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a15f432bcb85141fa1bd8d9db631a552b\">normal</a></td></tr>\n<tr class=\"separator:a15f432bcb85141fa1bd8d9db631a552b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b4b6aa924442e2390bf50cc9f601c75\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html#a5b4b6aa924442e2390bf50cc9f601c75\">material</a></td></tr>\n<tr class=\"separator:a5b4b6aa924442e2390bf50cc9f601c75\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5b4b6aa924442e2390bf50cc9f601c75\" name=\"a5b4b6aa924442e2390bf50cc9f601c75\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b4b6aa924442e2390bf50cc9f601c75\">&#9670;&nbsp;</a></span>material</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::AABBTriangle::material</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15f432bcb85141fa1bd8d9db631a552b\" name=\"a15f432bcb85141fa1bd8d9db631a552b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15f432bcb85141fa1bd8d9db631a552b\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::AABBTriangle::normal</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6706198c449462db4acad33bfccc4a73\" name=\"a6706198c449462db4acad33bfccc4a73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6706198c449462db4acad33bfccc4a73\">&#9670;&nbsp;</a></span>point1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::AABBTriangle::point1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a912b569097565c02f6614349d39ba473\" name=\"a912b569097565c02f6614349d39ba473\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a912b569097565c02f6614349d39ba473\">&#9670;&nbsp;</a></span>point2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::AABBTriangle::point2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abda9898750755ee69a75ae3251a92148\" name=\"abda9898750755ee69a75ae3251a92148\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abda9898750755ee69a75ae3251a92148\">&#9670;&nbsp;</a></span>point3</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::AABBTriangle::point3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8h_source.html\">model.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_clip_point-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ClipPoint Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">tram::Render::API::ClipPoint</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a\">barycentric</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">tram::Render::API::ClipPoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612\">coordinate</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">tram::Render::API::ClipPoint</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ClipPoint Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ClipPoint Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9358b7eaf18d3e55f16ed4837a736612\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#a9358b7eaf18d3e55f16ed4837a736612\">coordinate</a></td></tr>\n<tr class=\"separator:a9358b7eaf18d3e55f16ed4837a736612\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac0a612c9c2e16b94104e01063987446a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html#ac0a612c9c2e16b94104e01063987446a\">barycentric</a></td></tr>\n<tr class=\"separator:ac0a612c9c2e16b94104e01063987446a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac0a612c9c2e16b94104e01063987446a\" name=\"ac0a612c9c2e16b94104e01063987446a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0a612c9c2e16b94104e01063987446a\">&#9670;&nbsp;</a></span>barycentric</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::ClipPoint::barycentric</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9358b7eaf18d3e55f16ed4837a736612\" name=\"a9358b7eaf18d3e55f16ed4837a736612\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9358b7eaf18d3e55f16ed4837a736612\">&#9670;&nbsp;</a></span>coordinate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ClipPoint::coordinate</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ClipTriangle Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">tram::Render::API::ClipTriangle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f\">points</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">tram::Render::API::ClipTriangle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ClipTriangle Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html\">ClipTriangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ClipTriangle Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a937617e87e580c7b4c0c4e0a3a07316f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_triangle.html#a937617e87e580c7b4c0c4e0a3a07316f\">points</a> [3]</td></tr>\n<tr class=\"separator:a937617e87e580c7b4c0c4e0a3a07316f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a937617e87e580c7b4c0c4e0a3a07316f\" name=\"a937617e87e580c7b4c0c4e0a3a07316f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a937617e87e580c7b4c0c4e0a3a07316f\">&#9670;&nbsp;</a></span>points</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_clip_point.html\">ClipPoint</a> tram::Render::API::ClipTriangle::points[3]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_color_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">ColorVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ColorVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">tram::Render::API::ColorVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c\">col</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">tram::Render::API::ColorVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91\">pos</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">tram::Render::API::ColorVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ColorVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html\">ColorVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ColorVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a90cad82d292fb32eb4149d3cd5992b91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a90cad82d292fb32eb4149d3cd5992b91\">pos</a></td></tr>\n<tr class=\"separator:a90cad82d292fb32eb4149d3cd5992b91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9df94956349fae1207826426888b308c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_color_vertex.html#a9df94956349fae1207826426888b308c\">col</a></td></tr>\n<tr class=\"separator:a9df94956349fae1207826426888b308c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9df94956349fae1207826426888b308c\" name=\"a9df94956349fae1207826426888b308c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9df94956349fae1207826426888b308c\">&#9670;&nbsp;</a></span>col</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::ColorVertex::col</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a90cad82d292fb32eb4149d3cd5992b91\" name=\"a90cad82d292fb32eb4149d3cd5992b91\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90cad82d292fb32eb4149d3cd5992b91\">&#9670;&nbsp;</a></span>pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::ColorVertex::pos</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::D3DDrawListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">fvf</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">index_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">index_length</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">index_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">lights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">specular_exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">specular_transparency</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">specular_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">vertex_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">vertex_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">tram::Render::API::D3DDrawListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::D3DDrawListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">D3DDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::D3DDrawListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"direct3d_8h_source.html\">direct3d.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5e85792af5fd8e02fd1ccbc924a55d1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a5e85792af5fd8e02fd1ccbc924a55d1c\">flags</a> = 0</td></tr>\n<tr class=\"separator:a5e85792af5fd8e02fd1ccbc924a55d1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53e75e90c2e6720867d49dbfe3d379a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a53e75e90c2e6720867d49dbfe3d379a2\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:a53e75e90c2e6720867d49dbfe3d379a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a140d4caf20bd86230ad43a203602020f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a140d4caf20bd86230ad43a203602020f\">matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:a140d4caf20bd86230ad43a203602020f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78b0d32279518eb5cd60d66a2fc9f4fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a78b0d32279518eb5cd60d66a2fc9f4fe\">lights</a> [4] = {0}</td></tr>\n<tr class=\"separator:a78b0d32279518eb5cd60d66a2fc9f4fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58d427c9d7b5147bbbdc8d77a67d3891\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">IDirect3DVertexBuffer9 *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a58d427c9d7b5147bbbdc8d77a67d3891\">vertex_buffer</a> = nullptr</td></tr>\n<tr class=\"separator:a58d427c9d7b5147bbbdc8d77a67d3891\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7690e858e67902794ba8421881381bb8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">IDirect3DIndexBuffer9 *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7690e858e67902794ba8421881381bb8\">index_buffer</a> = nullptr</td></tr>\n<tr class=\"separator:a7690e858e67902794ba8421881381bb8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab339e52985c6c382e0b314d2b4b8081c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab339e52985c6c382e0b314d2b4b8081c\">vertex_count</a> = 0</td></tr>\n<tr class=\"separator:ab339e52985c6c382e0b314d2b4b8081c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f6a06108ebc5a50ab5144af1d60d474\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a7f6a06108ebc5a50ab5144af1d60d474\">index_length</a> = 0</td></tr>\n<tr class=\"separator:a7f6a06108ebc5a50ab5144af1d60d474\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeee744eb4618ad8390ff3fdf7a4f504f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aeee744eb4618ad8390ff3fdf7a4f504f\">index_offset</a> = 0</td></tr>\n<tr class=\"separator:aeee744eb4618ad8390ff3fdf7a4f504f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acc24155c9681da771fe7102a101561ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#acc24155c9681da771fe7102a101561ae\">fvf</a> = 0</td></tr>\n<tr class=\"separator:acc24155c9681da771fe7102a101561ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2b5170151eece25917d7ec3bd7ffc18e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a2b5170151eece25917d7ec3bd7ffc18e\">layer</a> = 0</td></tr>\n<tr class=\"separator:a2b5170151eece25917d7ec3bd7ffc18e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3fe0f4405b6bf946621d32ea4313980\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">IDirect3DTexture9 *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae3fe0f4405b6bf946621d32ea4313980\">lightmap</a> = nullptr</td></tr>\n<tr class=\"separator:ae3fe0f4405b6bf946621d32ea4313980\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae8a6150817c6af5a23681465585f807b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">IDirect3DTexture9 *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ae8a6150817c6af5a23681465585f807b\">texture</a> = nullptr</td></tr>\n<tr class=\"separator:ae8a6150817c6af5a23681465585f807b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aff53e1b18af098752ef32e98869439e7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#aff53e1b18af098752ef32e98869439e7\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:aff53e1b18af098752ef32e98869439e7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a09a0f6696c1a4d4b64b30376826316b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a09a0f6696c1a4d4b64b30376826316b3\">specular_weight</a> = 0.0f</td></tr>\n<tr class=\"separator:a09a0f6696c1a4d4b64b30376826316b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7df87a59ab31eee8df41c3686f35200\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#ab7df87a59ab31eee8df41c3686f35200\">specular_exponent</a> = 1.0f</td></tr>\n<tr class=\"separator:ab7df87a59ab31eee8df41c3686f35200\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38e16ee087cd107bad43a77b4556223e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html#a38e16ee087cd107bad43a77b4556223e\">specular_transparency</a> = 1.0f</td></tr>\n<tr class=\"separator:a38e16ee087cd107bad43a77b4556223e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aff53e1b18af098752ef32e98869439e7\" name=\"aff53e1b18af098752ef32e98869439e7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff53e1b18af098752ef32e98869439e7\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::D3DDrawListEntry::color = {1.0f, 1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e85792af5fd8e02fd1ccbc924a55d1c\" name=\"a5e85792af5fd8e02fd1ccbc924a55d1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e85792af5fd8e02fd1ccbc924a55d1c\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acc24155c9681da771fe7102a101561ae\" name=\"acc24155c9681da771fe7102a101561ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc24155c9681da771fe7102a101561ae\">&#9670;&nbsp;</a></span>fvf</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::fvf = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7690e858e67902794ba8421881381bb8\" name=\"a7690e858e67902794ba8421881381bb8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7690e858e67902794ba8421881381bb8\">&#9670;&nbsp;</a></span>index_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DIndexBuffer9* tram::Render::API::D3DDrawListEntry::index_buffer = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f6a06108ebc5a50ab5144af1d60d474\" name=\"a7f6a06108ebc5a50ab5144af1d60d474\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f6a06108ebc5a50ab5144af1d60d474\">&#9670;&nbsp;</a></span>index_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::index_length = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeee744eb4618ad8390ff3fdf7a4f504f\" name=\"aeee744eb4618ad8390ff3fdf7a4f504f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeee744eb4618ad8390ff3fdf7a4f504f\">&#9670;&nbsp;</a></span>index_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::index_offset = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2b5170151eece25917d7ec3bd7ffc18e\" name=\"a2b5170151eece25917d7ec3bd7ffc18e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b5170151eece25917d7ec3bd7ffc18e\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::layer = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae3fe0f4405b6bf946621d32ea4313980\" name=\"ae3fe0f4405b6bf946621d32ea4313980\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3fe0f4405b6bf946621d32ea4313980\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DTexture9* tram::Render::API::D3DDrawListEntry::lightmap = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a78b0d32279518eb5cd60d66a2fc9f4fe\" name=\"a78b0d32279518eb5cd60d66a2fc9f4fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78b0d32279518eb5cd60d66a2fc9f4fe\">&#9670;&nbsp;</a></span>lights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::lights[4] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a140d4caf20bd86230ad43a203602020f\" name=\"a140d4caf20bd86230ad43a203602020f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a140d4caf20bd86230ad43a203602020f\">&#9670;&nbsp;</a></span>matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::D3DDrawListEntry::matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53e75e90c2e6720867d49dbfe3d379a2\" name=\"a53e75e90c2e6720867d49dbfe3d379a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53e75e90c2e6720867d49dbfe3d379a2\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* tram::Render::API::D3DDrawListEntry::pose = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab7df87a59ab31eee8df41c3686f35200\" name=\"ab7df87a59ab31eee8df41c3686f35200\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7df87a59ab31eee8df41c3686f35200\">&#9670;&nbsp;</a></span>specular_exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::D3DDrawListEntry::specular_exponent = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38e16ee087cd107bad43a77b4556223e\" name=\"a38e16ee087cd107bad43a77b4556223e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38e16ee087cd107bad43a77b4556223e\">&#9670;&nbsp;</a></span>specular_transparency</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::D3DDrawListEntry::specular_transparency = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09a0f6696c1a4d4b64b30376826316b3\" name=\"a09a0f6696c1a4d4b64b30376826316b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09a0f6696c1a4d4b64b30376826316b3\">&#9670;&nbsp;</a></span>specular_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::D3DDrawListEntry::specular_weight = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae8a6150817c6af5a23681465585f807b\" name=\"ae8a6150817c6af5a23681465585f807b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8a6150817c6af5a23681465585f807b\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DTexture9* tram::Render::API::D3DDrawListEntry::texture = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58d427c9d7b5147bbbdc8d77a67d3891\" name=\"a58d427c9d7b5147bbbdc8d77a67d3891\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58d427c9d7b5147bbbdc8d77a67d3891\">&#9670;&nbsp;</a></span>vertex_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DVertexBuffer9* tram::Render::API::D3DDrawListEntry::vertex_buffer = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab339e52985c6c382e0b314d2b4b8081c\" name=\"ab339e52985c6c382e0b314d2b4b8081c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab339e52985c6c382e0b314d2b4b8081c\">&#9670;&nbsp;</a></span>vertex_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::D3DDrawListEntry::vertex_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_8h_source.html\">direct3d.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::D3DLight Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">tram::Render::API::D3DLight</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::D3DLight Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">D3DLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::D3DLight Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"direct3d_8h_source.html\">direct3d.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acbab4448a21e3615bd881388b0af1a8b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#acbab4448a21e3615bd881388b0af1a8b\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:acbab4448a21e3615bd881388b0af1a8b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fd841ddfed89181a99b82c83f26298a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a5fd841ddfed89181a99b82c83f26298a\">color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a5fd841ddfed89181a99b82c83f26298a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67a2716e3f6f00f40642d9db82569271\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a67a2716e3f6f00f40642d9db82569271\">distance</a> = 0.0f</td></tr>\n<tr class=\"separator:a67a2716e3f6f00f40642d9db82569271\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aead638bd05a0ed7dc438c22814381fd5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#aead638bd05a0ed7dc438c22814381fd5\">direction</a> = {0.0f, 0.0f, -1.0f}</td></tr>\n<tr class=\"separator:aead638bd05a0ed7dc438c22814381fd5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a035db274a74493fd1c49bb5c7b2229c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html#a035db274a74493fd1c49bb5c7b2229c7\">exponent</a> = 0.0f</td></tr>\n<tr class=\"separator:a035db274a74493fd1c49bb5c7b2229c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5fd841ddfed89181a99b82c83f26298a\" name=\"a5fd841ddfed89181a99b82c83f26298a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fd841ddfed89181a99b82c83f26298a\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::D3DLight::color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aead638bd05a0ed7dc438c22814381fd5\" name=\"aead638bd05a0ed7dc438c22814381fd5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aead638bd05a0ed7dc438c22814381fd5\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::D3DLight::direction = {0.0f, 0.0f, -1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a67a2716e3f6f00f40642d9db82569271\" name=\"a67a2716e3f6f00f40642d9db82569271\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67a2716e3f6f00f40642d9db82569271\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::D3DLight::distance = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a035db274a74493fd1c49bb5c7b2229c7\" name=\"a035db274a74493fd1c49bb5c7b2229c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a035db274a74493fd1c49bb5c7b2229c7\">&#9670;&nbsp;</a></span>exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::D3DLight::exponent = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acbab4448a21e3615bd881388b0af1a8b\" name=\"acbab4448a21e3615bd881388b0af1a8b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbab4448a21e3615bd881388b0af1a8b\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::D3DLight::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_8h_source.html\">direct3d.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">DrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::DrawListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ad613b0baf2c69550b11af53477bc2c7f\">CalcSortKey</a>(const glm::vec3 &amp;cameraPosition)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ab7b4c754ae2d07309eeeaa0d0695c9b8\">colors</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a3290d9e0829f8b2efb9519da0e3a45a1\">DrawListEntry</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#afa0262e75c261b237a6a265755b89ddf\">eboLen</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ac103c8c32c7a3d72a780a9087f28a1b7\">eboOff</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a9ca3e6a474771e7933b2533d074f88e6\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a721942e4c58818bd9b7836530f1c7edf\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a739d39cc3210d1dfc7bfc5cecf64656f\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a1db8de87f02f316d90f64096dd243288\">lights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a69828838679f6e3c085ffeab7e6476b8\">matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ac663dd5064d475237628c9759592f6a1\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ad6448b08df868d144ac9a682367b3248\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a5497c1f5826a0e6907b201f35233d82c\">shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aef4ed3788502ea2041d98d7804802240\">specular_powers</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a205c072c584322e9528899ea0c24960f\">specular_weights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aaa883e00cedca96a64f514bcb2f85039\">texCount</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a86caff7f0d1b9c3b6899744f59678d76\">textures</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aa1a11f29eed3e7cb60b5ad9e45382634\">vao</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">tram::Render::API::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::DrawListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html\">DrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::DrawListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:a3290d9e0829f8b2efb9519da0e3a45a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a3290d9e0829f8b2efb9519da0e3a45a1\">DrawListEntry</a> ()</td></tr>\n<tr class=\"separator:a3290d9e0829f8b2efb9519da0e3a45a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad613b0baf2c69550b11af53477bc2c7f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ad613b0baf2c69550b11af53477bc2c7f\">CalcSortKey</a> (const glm::vec3 &amp;cameraPosition)</td></tr>\n<tr class=\"memdesc:ad613b0baf2c69550b11af53477bc2c7f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Assembles a key for sorting.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ad613b0baf2c69550b11af53477bc2c7f\">More...</a><br /></td></tr>\n<tr class=\"separator:ad613b0baf2c69550b11af53477bc2c7f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9ca3e6a474771e7933b2533d074f88e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a9ca3e6a474771e7933b2533d074f88e6\">flags</a> = 0</td></tr>\n<tr class=\"separator:a9ca3e6a474771e7933b2533d074f88e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6448b08df868d144ac9a682367b3248\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ad6448b08df868d144ac9a682367b3248\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:ad6448b08df868d144ac9a682367b3248\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a69828838679f6e3c085ffeab7e6476b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a69828838679f6e3c085ffeab7e6476b8\">matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:a69828838679f6e3c085ffeab7e6476b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1db8de87f02f316d90f64096dd243288\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a1db8de87f02f316d90f64096dd243288\">lights</a> [4] = {0}</td></tr>\n<tr class=\"separator:a1db8de87f02f316d90f64096dd243288\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a721942e4c58818bd9b7836530f1c7edf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a721942e4c58818bd9b7836530f1c7edf\">layer</a> = 0</td></tr>\n<tr class=\"separator:a721942e4c58818bd9b7836530f1c7edf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a739d39cc3210d1dfc7bfc5cecf64656f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a739d39cc3210d1dfc7bfc5cecf64656f\">lightmap</a> = 0</td></tr>\n<tr class=\"separator:a739d39cc3210d1dfc7bfc5cecf64656f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1a11f29eed3e7cb60b5ad9e45382634\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aa1a11f29eed3e7cb60b5ad9e45382634\">vao</a> = 0</td></tr>\n<tr class=\"separator:aa1a11f29eed3e7cb60b5ad9e45382634\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afa0262e75c261b237a6a265755b89ddf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#afa0262e75c261b237a6a265755b89ddf\">eboLen</a> = 0</td></tr>\n<tr class=\"separator:afa0262e75c261b237a6a265755b89ddf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac103c8c32c7a3d72a780a9087f28a1b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ac103c8c32c7a3d72a780a9087f28a1b7\">eboOff</a> = 0</td></tr>\n<tr class=\"separator:ac103c8c32c7a3d72a780a9087f28a1b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5497c1f5826a0e6907b201f35233d82c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a5497c1f5826a0e6907b201f35233d82c\">shader</a> = 0</td></tr>\n<tr class=\"separator:a5497c1f5826a0e6907b201f35233d82c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaa883e00cedca96a64f514bcb2f85039\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aaa883e00cedca96a64f514bcb2f85039\">texCount</a> = 0</td></tr>\n<tr class=\"separator:aaa883e00cedca96a64f514bcb2f85039\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a86caff7f0d1b9c3b6899744f59678d76\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a86caff7f0d1b9c3b6899744f59678d76\">textures</a> [15] = {0}</td></tr>\n<tr class=\"separator:a86caff7f0d1b9c3b6899744f59678d76\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab7b4c754ae2d07309eeeaa0d0695c9b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ab7b4c754ae2d07309eeeaa0d0695c9b8\">colors</a> [15]</td></tr>\n<tr class=\"separator:ab7b4c754ae2d07309eeeaa0d0695c9b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a205c072c584322e9528899ea0c24960f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#a205c072c584322e9528899ea0c24960f\">specular_weights</a> [15]</td></tr>\n<tr class=\"separator:a205c072c584322e9528899ea0c24960f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef4ed3788502ea2041d98d7804802240\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#aef4ed3788502ea2041d98d7804802240\">specular_powers</a> [15]</td></tr>\n<tr class=\"separator:aef4ed3788502ea2041d98d7804802240\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac663dd5064d475237628c9759592f6a1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_draw_list_entry.html#ac663dd5064d475237628c9759592f6a1\">padding</a> [4]</td></tr>\n<tr class=\"separator:ac663dd5064d475237628c9759592f6a1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"a3290d9e0829f8b2efb9519da0e3a45a1\" name=\"a3290d9e0829f8b2efb9519da0e3a45a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3290d9e0829f8b2efb9519da0e3a45a1\">&#9670;&nbsp;</a></span>DrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::API::DrawListEntry::DrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ad613b0baf2c69550b11af53477bc2c7f\" name=\"ad613b0baf2c69550b11af53477bc2c7f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad613b0baf2c69550b11af53477bc2c7f\">&#9670;&nbsp;</a></span>CalcSortKey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::Render::API::DrawListEntry::CalcSortKey </td>\n          <td>(</td>\n          <td class=\"paramtype\">const glm::vec3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>cameraPosition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Assembles a key for sorting. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab7b4c754ae2d07309eeeaa0d0695c9b8\" name=\"ab7b4c754ae2d07309eeeaa0d0695c9b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7b4c754ae2d07309eeeaa0d0695c9b8\">&#9670;&nbsp;</a></span>colors</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::DrawListEntry::colors[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afa0262e75c261b237a6a265755b89ddf\" name=\"afa0262e75c261b237a6a265755b89ddf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa0262e75c261b237a6a265755b89ddf\">&#9670;&nbsp;</a></span>eboLen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::eboLen = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac103c8c32c7a3d72a780a9087f28a1b7\" name=\"ac103c8c32c7a3d72a780a9087f28a1b7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac103c8c32c7a3d72a780a9087f28a1b7\">&#9670;&nbsp;</a></span>eboOff</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::eboOff = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ca3e6a474771e7933b2533d074f88e6\" name=\"a9ca3e6a474771e7933b2533d074f88e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ca3e6a474771e7933b2533d074f88e6\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a721942e4c58818bd9b7836530f1c7edf\" name=\"a721942e4c58818bd9b7836530f1c7edf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a721942e4c58818bd9b7836530f1c7edf\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::layer = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a739d39cc3210d1dfc7bfc5cecf64656f\" name=\"a739d39cc3210d1dfc7bfc5cecf64656f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a739d39cc3210d1dfc7bfc5cecf64656f\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::lightmap = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1db8de87f02f316d90f64096dd243288\" name=\"a1db8de87f02f316d90f64096dd243288\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1db8de87f02f316d90f64096dd243288\">&#9670;&nbsp;</a></span>lights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::lights[4] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a69828838679f6e3c085ffeab7e6476b8\" name=\"a69828838679f6e3c085ffeab7e6476b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69828838679f6e3c085ffeab7e6476b8\">&#9670;&nbsp;</a></span>matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::DrawListEntry::matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac663dd5064d475237628c9759592f6a1\" name=\"ac663dd5064d475237628c9759592f6a1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac663dd5064d475237628c9759592f6a1\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Render::API::DrawListEntry::padding[4]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6448b08df868d144ac9a682367b3248\" name=\"ad6448b08df868d144ac9a682367b3248\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6448b08df868d144ac9a682367b3248\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* tram::Render::API::DrawListEntry::pose = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5497c1f5826a0e6907b201f35233d82c\" name=\"a5497c1f5826a0e6907b201f35233d82c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5497c1f5826a0e6907b201f35233d82c\">&#9670;&nbsp;</a></span>shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::shader = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aef4ed3788502ea2041d98d7804802240\" name=\"aef4ed3788502ea2041d98d7804802240\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef4ed3788502ea2041d98d7804802240\">&#9670;&nbsp;</a></span>specular_powers</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DrawListEntry::specular_powers[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a205c072c584322e9528899ea0c24960f\" name=\"a205c072c584322e9528899ea0c24960f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a205c072c584322e9528899ea0c24960f\">&#9670;&nbsp;</a></span>specular_weights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DrawListEntry::specular_weights[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaa883e00cedca96a64f514bcb2f85039\" name=\"aaa883e00cedca96a64f514bcb2f85039\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa883e00cedca96a64f514bcb2f85039\">&#9670;&nbsp;</a></span>texCount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::texCount = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86caff7f0d1b9c3b6899744f59678d76\" name=\"a86caff7f0d1b9c3b6899744f59678d76\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86caff7f0d1b9c3b6899744f59678d76\">&#9670;&nbsp;</a></span>textures</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::textures[15] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1a11f29eed3e7cb60b5ad9e45382634\" name=\"aa1a11f29eed3e7cb60b5ad9e45382634\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1a11f29eed3e7cb60b5ad9e45382634\">&#9670;&nbsp;</a></span>vao</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::DrawListEntry::vao = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">DynamicVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::DynamicVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3\">ind</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140\">nrm</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925\">nrm_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b\">nrm_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249\">nrm_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd\">pos</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f\">pos_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816\">pos_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a\">pos_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150\">tex</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82\">tex_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed\">tex_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413\">wgt</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5\">wgt_1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc\">wgt_2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567\">wgt_3</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359\">wgt_i</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">tram::Render::API::DynamicVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::DynamicVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html\">DynamicVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::DynamicVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8712dd86d3119a4fc6ddbf92c235067f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a8712dd86d3119a4fc6ddbf92c235067f\">pos_x</a></td></tr>\n<tr class=\"separator:a8712dd86d3119a4fc6ddbf92c235067f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac2f4357b94953eee0475ad9f61889816\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac2f4357b94953eee0475ad9f61889816\">pos_y</a></td></tr>\n<tr class=\"separator:ac2f4357b94953eee0475ad9f61889816\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a748a5f6c0a267fb6b51f1180e78c504a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a748a5f6c0a267fb6b51f1180e78c504a\">pos_z</a></td></tr>\n<tr class=\"separator:a748a5f6c0a267fb6b51f1180e78c504a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a078c81bb38d4951accfc6df9c00a92d5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a078c81bb38d4951accfc6df9c00a92d5\">wgt_1</a></td></tr>\n<tr class=\"separator:a078c81bb38d4951accfc6df9c00a92d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a924179d40de8890d819f55b061c720dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a924179d40de8890d819f55b061c720dc\">wgt_2</a></td></tr>\n<tr class=\"separator:a924179d40de8890d819f55b061c720dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a73488e66a1c64254438c49676239f567\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a73488e66a1c64254438c49676239f567\">wgt_3</a></td></tr>\n<tr class=\"separator:a73488e66a1c64254438c49676239f567\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab36ec5e7ab8d27a963c2a160a8dfe359\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ab36ec5e7ab8d27a963c2a160a8dfe359\">wgt_i</a></td></tr>\n<tr class=\"separator:ab36ec5e7ab8d27a963c2a160a8dfe359\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a497ee794924fd0a703819a500a55f925\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a497ee794924fd0a703819a500a55f925\">nrm_x</a></td></tr>\n<tr class=\"separator:a497ee794924fd0a703819a500a55f925\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9efb756c481030e4f235dc3c7877185b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9efb756c481030e4f235dc3c7877185b\">nrm_y</a></td></tr>\n<tr class=\"separator:a9efb756c481030e4f235dc3c7877185b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51c8374f9bfabfec978dc16fe67f7249\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a51c8374f9bfabfec978dc16fe67f7249\">nrm_z</a></td></tr>\n<tr class=\"separator:a51c8374f9bfabfec978dc16fe67f7249\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1f682bed82ea178bd8beb9d9390be82\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#ac1f682bed82ea178bd8beb9d9390be82\">tex_x</a></td></tr>\n<tr class=\"separator:ac1f682bed82ea178bd8beb9d9390be82\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9e180bc6be33c64cf919a1fdfe5556ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a9e180bc6be33c64cf919a1fdfe5556ed\">tex_y</a></td></tr>\n<tr class=\"separator:a9e180bc6be33c64cf919a1fdfe5556ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d99341a991cf7b2a8b4f298e4e96afd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a4d99341a991cf7b2a8b4f298e4e96afd\">pos</a></td></tr>\n<tr class=\"separator:a4d99341a991cf7b2a8b4f298e4e96afd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0adeb384b4118a57a77b3c9cb26c140\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aa0adeb384b4118a57a77b3c9cb26c140\">nrm</a></td></tr>\n<tr class=\"separator:aa0adeb384b4118a57a77b3c9cb26c140\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2d81747033b8094cbafb222ab1f42150\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a2d81747033b8094cbafb222ab1f42150\">tex</a></td></tr>\n<tr class=\"separator:a2d81747033b8094cbafb222ab1f42150\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0db7472217610a8c7032a85aeef22413\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#a0db7472217610a8c7032a85aeef22413\">wgt</a></td></tr>\n<tr class=\"separator:a0db7472217610a8c7032a85aeef22413\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadbe189ab3e4e334794d0dc588694fb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_dynamic_vertex.html#aadbe189ab3e4e334794d0dc588694fb3\">ind</a></td></tr>\n<tr class=\"separator:aadbe189ab3e4e334794d0dc588694fb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aadbe189ab3e4e334794d0dc588694fb3\" name=\"aadbe189ab3e4e334794d0dc588694fb3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadbe189ab3e4e334794d0dc588694fb3\">&#9670;&nbsp;</a></span>ind</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a> tram::Render::API::DynamicVertex::ind</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0adeb384b4118a57a77b3c9cb26c140\" name=\"aa0adeb384b4118a57a77b3c9cb26c140\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0adeb384b4118a57a77b3c9cb26c140\">&#9670;&nbsp;</a></span>nrm</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::DynamicVertex::nrm</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a497ee794924fd0a703819a500a55f925\" name=\"a497ee794924fd0a703819a500a55f925\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a497ee794924fd0a703819a500a55f925\">&#9670;&nbsp;</a></span>nrm_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::nrm_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9efb756c481030e4f235dc3c7877185b\" name=\"a9efb756c481030e4f235dc3c7877185b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9efb756c481030e4f235dc3c7877185b\">&#9670;&nbsp;</a></span>nrm_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::nrm_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51c8374f9bfabfec978dc16fe67f7249\" name=\"a51c8374f9bfabfec978dc16fe67f7249\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51c8374f9bfabfec978dc16fe67f7249\">&#9670;&nbsp;</a></span>nrm_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::nrm_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d99341a991cf7b2a8b4f298e4e96afd\" name=\"a4d99341a991cf7b2a8b4f298e4e96afd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d99341a991cf7b2a8b4f298e4e96afd\">&#9670;&nbsp;</a></span>pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::DynamicVertex::pos</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8712dd86d3119a4fc6ddbf92c235067f\" name=\"a8712dd86d3119a4fc6ddbf92c235067f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8712dd86d3119a4fc6ddbf92c235067f\">&#9670;&nbsp;</a></span>pos_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::pos_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac2f4357b94953eee0475ad9f61889816\" name=\"ac2f4357b94953eee0475ad9f61889816\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac2f4357b94953eee0475ad9f61889816\">&#9670;&nbsp;</a></span>pos_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::pos_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a748a5f6c0a267fb6b51f1180e78c504a\" name=\"a748a5f6c0a267fb6b51f1180e78c504a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a748a5f6c0a267fb6b51f1180e78c504a\">&#9670;&nbsp;</a></span>pos_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::pos_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2d81747033b8094cbafb222ab1f42150\" name=\"a2d81747033b8094cbafb222ab1f42150\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d81747033b8094cbafb222ab1f42150\">&#9670;&nbsp;</a></span>tex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::API::DynamicVertex::tex</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac1f682bed82ea178bd8beb9d9390be82\" name=\"ac1f682bed82ea178bd8beb9d9390be82\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1f682bed82ea178bd8beb9d9390be82\">&#9670;&nbsp;</a></span>tex_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::tex_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9e180bc6be33c64cf919a1fdfe5556ed\" name=\"a9e180bc6be33c64cf919a1fdfe5556ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e180bc6be33c64cf919a1fdfe5556ed\">&#9670;&nbsp;</a></span>tex_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::tex_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0db7472217610a8c7032a85aeef22413\" name=\"a0db7472217610a8c7032a85aeef22413\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0db7472217610a8c7032a85aeef22413\">&#9670;&nbsp;</a></span>wgt</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::DynamicVertex::wgt</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a078c81bb38d4951accfc6df9c00a92d5\" name=\"a078c81bb38d4951accfc6df9c00a92d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a078c81bb38d4951accfc6df9c00a92d5\">&#9670;&nbsp;</a></span>wgt_1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::wgt_1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a924179d40de8890d819f55b061c720dc\" name=\"a924179d40de8890d819f55b061c720dc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a924179d40de8890d819f55b061c720dc\">&#9670;&nbsp;</a></span>wgt_2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::wgt_2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a73488e66a1c64254438c49676239f567\" name=\"a73488e66a1c64254438c49676239f567\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73488e66a1c64254438c49676239f567\">&#9670;&nbsp;</a></span>wgt_3</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::DynamicVertex::wgt_3</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab36ec5e7ab8d27a963c2a160a8dfe359\" name=\"ab36ec5e7ab8d27a963c2a160a8dfe359\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab36ec5e7ab8d27a963c2a160a8dfe359\">&#9670;&nbsp;</a></span>wgt_i</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DWORD tram::Render::API::DynamicVertex::wgt_i</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FFPHelper Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">bone_index</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">bone_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">tram::Render::API::FFPHelper</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::FFPHelper Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FFPHelper Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac01392b410606fc8a96f548c3054414f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac01392b410606fc8a96f548c3054414f\">position</a> = -1</td></tr>\n<tr class=\"separator:ac01392b410606fc8a96f548c3054414f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aae50347cfce0859d5827af69495e6664\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aae50347cfce0859d5827af69495e6664\">normal</a> = -1</td></tr>\n<tr class=\"separator:aae50347cfce0859d5827af69495e6664\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:accf51615aa39c47f2218b2a2b54da19e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#accf51615aa39c47f2218b2a2b54da19e\">color</a> = -1</td></tr>\n<tr class=\"separator:accf51615aa39c47f2218b2a2b54da19e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5774461282b48faa2dd20a0be390d20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#af5774461282b48faa2dd20a0be390d20\">texture</a> = -1</td></tr>\n<tr class=\"separator:af5774461282b48faa2dd20a0be390d20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abea9e4cefc78f34737c5ec3a4c78e635\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#abea9e4cefc78f34737c5ec3a4c78e635\">lightmap</a> = -1</td></tr>\n<tr class=\"separator:abea9e4cefc78f34737c5ec3a4c78e635\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac24edf27fe09335c5ae659ad0dbbe32e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#ac24edf27fe09335c5ae659ad0dbbe32e\">bone_index</a> = -1</td></tr>\n<tr class=\"separator:ac24edf27fe09335c5ae659ad0dbbe32e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb3b8d76aa80b1f680820bdfc47cb2e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html#aeb3b8d76aa80b1f680820bdfc47cb2e9\">bone_weight</a> = -1</td></tr>\n<tr class=\"separator:aeb3b8d76aa80b1f680820bdfc47cb2e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac24edf27fe09335c5ae659ad0dbbe32e\" name=\"ac24edf27fe09335c5ae659ad0dbbe32e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac24edf27fe09335c5ae659ad0dbbe32e\">&#9670;&nbsp;</a></span>bone_index</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::bone_index = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeb3b8d76aa80b1f680820bdfc47cb2e9\" name=\"aeb3b8d76aa80b1f680820bdfc47cb2e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb3b8d76aa80b1f680820bdfc47cb2e9\">&#9670;&nbsp;</a></span>bone_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::bone_weight = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"accf51615aa39c47f2218b2a2b54da19e\" name=\"accf51615aa39c47f2218b2a2b54da19e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#accf51615aa39c47f2218b2a2b54da19e\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::color = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abea9e4cefc78f34737c5ec3a4c78e635\" name=\"abea9e4cefc78f34737c5ec3a4c78e635\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abea9e4cefc78f34737c5ec3a4c78e635\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::lightmap = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aae50347cfce0859d5827af69495e6664\" name=\"aae50347cfce0859d5827af69495e6664\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae50347cfce0859d5827af69495e6664\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::normal = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac01392b410606fc8a96f548c3054414f\" name=\"ac01392b410606fc8a96f548c3054414f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac01392b410606fc8a96f548c3054414f\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::position = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5774461282b48faa2dd20a0be390d20\" name=\"af5774461282b48faa2dd20a0be390d20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5774461282b48faa2dd20a0be390d20\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FFPHelper::texture = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FVFHelper Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468\">bone_index</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022\">bone_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e\">fvf</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">tram::Render::API::FVFHelper</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::FVFHelper Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html\">FVFHelper</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FVFHelper Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a81dd8b7602640a63b63ef086aab65c0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a81dd8b7602640a63b63ef086aab65c0f\">position</a> = -1</td></tr>\n<tr class=\"separator:a81dd8b7602640a63b63ef086aab65c0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1404df1c7ae080b5bc1b02abef7c8be4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a1404df1c7ae080b5bc1b02abef7c8be4\">normal</a> = -1</td></tr>\n<tr class=\"separator:a1404df1c7ae080b5bc1b02abef7c8be4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ace2a0fa5572ce1b168fe94cb20ec08a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ace2a0fa5572ce1b168fe94cb20ec08a2\">color</a> = -1</td></tr>\n<tr class=\"separator:ace2a0fa5572ce1b168fe94cb20ec08a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a842dd15f583c42dbba0b870848b2788e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a842dd15f583c42dbba0b870848b2788e\">texture</a> = -1</td></tr>\n<tr class=\"separator:a842dd15f583c42dbba0b870848b2788e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af69f0b192cb4f3f7b4332c356146db14\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#af69f0b192cb4f3f7b4332c356146db14\">lightmap</a> = -1</td></tr>\n<tr class=\"separator:af69f0b192cb4f3f7b4332c356146db14\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab873ad3f80505bc83e65f9f2edf69468\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#ab873ad3f80505bc83e65f9f2edf69468\">bone_index</a> = -1</td></tr>\n<tr class=\"separator:ab873ad3f80505bc83e65f9f2edf69468\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8422b55f8d7c41e6df476ae1093e4022\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a8422b55f8d7c41e6df476ae1093e4022\">bone_weight</a> = -1</td></tr>\n<tr class=\"separator:a8422b55f8d7c41e6df476ae1093e4022\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d36c1cfc5b492d3e1bb07506635b81e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_v_f_helper.html#a0d36c1cfc5b492d3e1bb07506635b81e\">fvf</a> = 0</td></tr>\n<tr class=\"separator:a0d36c1cfc5b492d3e1bb07506635b81e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab873ad3f80505bc83e65f9f2edf69468\" name=\"ab873ad3f80505bc83e65f9f2edf69468\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab873ad3f80505bc83e65f9f2edf69468\">&#9670;&nbsp;</a></span>bone_index</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::bone_index = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8422b55f8d7c41e6df476ae1093e4022\" name=\"a8422b55f8d7c41e6df476ae1093e4022\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8422b55f8d7c41e6df476ae1093e4022\">&#9670;&nbsp;</a></span>bone_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::bone_weight = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ace2a0fa5572ce1b168fe94cb20ec08a2\" name=\"ace2a0fa5572ce1b168fe94cb20ec08a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace2a0fa5572ce1b168fe94cb20ec08a2\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::color = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0d36c1cfc5b492d3e1bb07506635b81e\" name=\"a0d36c1cfc5b492d3e1bb07506635b81e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d36c1cfc5b492d3e1bb07506635b81e\">&#9670;&nbsp;</a></span>fvf</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DWORD tram::Render::API::FVFHelper::fvf = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af69f0b192cb4f3f7b4332c356146db14\" name=\"af69f0b192cb4f3f7b4332c356146db14\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af69f0b192cb4f3f7b4332c356146db14\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::lightmap = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1404df1c7ae080b5bc1b02abef7c8be4\" name=\"a1404df1c7ae080b5bc1b02abef7c8be4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1404df1c7ae080b5bc1b02abef7c8be4\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::normal = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81dd8b7602640a63b63ef086aab65c0f\" name=\"a81dd8b7602640a63b63ef086aab65c0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81dd8b7602640a63b63ef086aab65c0f\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::position = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a842dd15f583c42dbba0b870848b2788e\" name=\"a842dd15f583c42dbba0b870848b2788e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a842dd15f583c42dbba0b870848b2788e\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::FVFHelper::texture = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FragmentShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a42bf5162da3377f1b0bb7ac9f9104c42\">compiled_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a2be9e0baabeb26d975aaba15bf74f3a7\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">tram::Render::API::FragmentShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::FragmentShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::FragmentShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2be9e0baabeb26d975aaba15bf74f3a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a2be9e0baabeb26d975aaba15bf74f3a7\">name</a></td></tr>\n<tr class=\"separator:a2be9e0baabeb26d975aaba15bf74f3a7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a42bf5162da3377f1b0bb7ac9f9104c42\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_fragment_shader.html#a42bf5162da3377f1b0bb7ac9f9104c42\">compiled_shader</a></td></tr>\n<tr class=\"separator:a42bf5162da3377f1b0bb7ac9f9104c42\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a42bf5162da3377f1b0bb7ac9f9104c42\" name=\"a42bf5162da3377f1b0bb7ac9f9104c42\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a42bf5162da3377f1b0bb7ac9f9104c42\">&#9670;&nbsp;</a></span>compiled_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::FragmentShader::compiled_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2be9e0baabeb26d975aaba15bf74f3a7\" name=\"a2be9e0baabeb26d975aaba15bf74f3a7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2be9e0baabeb26d975aaba15bf74f3a7\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::FragmentShader::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLDrawListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">aabb_max</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">aabb_min</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">CalcSortKey</a>(const vec3 &amp;cameraPosition)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">colors</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">eboLen</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">eboOff</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">environmentmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">fade_far</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">fade_near</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">GLDrawListEntry</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">harmonic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">lights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">materials</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">texCount</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">texture_transforms</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">vao</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">tram::Render::API::GLDrawListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::GLDrawListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">GLDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLDrawListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"drawlist_8h_source.html\">drawlist.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:af7bb6164cd2f0ca88d08e2dd524f2c28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#af7bb6164cd2f0ca88d08e2dd524f2c28\">GLDrawListEntry</a> ()</td></tr>\n<tr class=\"separator:af7bb6164cd2f0ca88d08e2dd524f2c28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3460a35f7e6246b3990b5b09f26c6415\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">CalcSortKey</a> (const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;cameraPosition)</td></tr>\n<tr class=\"memdesc:a3460a35f7e6246b3990b5b09f26c6415\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Assembles a key for sorting.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a3460a35f7e6246b3990b5b09f26c6415\">More...</a><br /></td></tr>\n<tr class=\"separator:a3460a35f7e6246b3990b5b09f26c6415\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4a282542da7ede553863e63080b53e77\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4a282542da7ede553863e63080b53e77\">flags</a> = 0</td></tr>\n<tr class=\"separator:a4a282542da7ede553863e63080b53e77\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad431ba61a7c7f2673948abacbf85aa0d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ad431ba61a7c7f2673948abacbf85aa0d\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:ad431ba61a7c7f2673948abacbf85aa0d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d34b1b8c60ff21a937113dc78b7d4a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4d34b1b8c60ff21a937113dc78b7d4a4\">matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:a4d34b1b8c60ff21a937113dc78b7d4a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41a219aed82e2711a6e78adfcdfb299f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a41a219aed82e2711a6e78adfcdfb299f\">lights</a> [4] = {0}</td></tr>\n<tr class=\"separator:a41a219aed82e2711a6e78adfcdfb299f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac3c45c286b4c4e9fea14811c685a7b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aac3c45c286b4c4e9fea14811c685a7b8\">layer</a> = 0</td></tr>\n<tr class=\"separator:aac3c45c286b4c4e9fea14811c685a7b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67f380744f271dbece03c8f081c86bf1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a67f380744f271dbece03c8f081c86bf1\">lightmap</a> = 0</td></tr>\n<tr class=\"separator:a67f380744f271dbece03c8f081c86bf1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf126029f650661e7a83c6a054f57308\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aaf126029f650661e7a83c6a054f57308\">environmentmap</a> = 0</td></tr>\n<tr class=\"separator:aaf126029f650661e7a83c6a054f57308\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac984d3f4c21946c93809b5e07408fc1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac984d3f4c21946c93809b5e07408fc1d\">vao</a> = 0</td></tr>\n<tr class=\"separator:ac984d3f4c21946c93809b5e07408fc1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28960b58e1684771943364ceddfe4917\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a28960b58e1684771943364ceddfe4917\">eboLen</a> = 0</td></tr>\n<tr class=\"separator:a28960b58e1684771943364ceddfe4917\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a865e421a077ef2c6fafe376311afe40a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a865e421a077ef2c6fafe376311afe40a\">eboOff</a> = 0</td></tr>\n<tr class=\"separator:a865e421a077ef2c6fafe376311afe40a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0e14420c779fa4bc2fbd4f8246ce78b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae0e14420c779fa4bc2fbd4f8246ce78b\">shader</a> = 0</td></tr>\n<tr class=\"separator:ae0e14420c779fa4bc2fbd4f8246ce78b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a00d701e6b4117b3ea568a1733d5f4455\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a00d701e6b4117b3ea568a1733d5f4455\">texCount</a> = 0</td></tr>\n<tr class=\"separator:a00d701e6b4117b3ea568a1733d5f4455\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac329ee9b6d3154d5f81d1cb322bdb464\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ac329ee9b6d3154d5f81d1cb322bdb464\">colors</a> [15]</td></tr>\n<tr class=\"separator:ac329ee9b6d3154d5f81d1cb322bdb464\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70b0e18a2a7c521c25994b24941984ec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a70b0e18a2a7c521c25994b24941984ec\">texture_transforms</a> [15]</td></tr>\n<tr class=\"separator:a70b0e18a2a7c521c25994b24941984ec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafdb1c878c1a40c28478169a730e3c18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#aafdb1c878c1a40c28478169a730e3c18\">materials</a> [15]</td></tr>\n<tr class=\"separator:aafdb1c878c1a40c28478169a730e3c18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0d85b48d0b7d54b45de4f436571e40b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a0d85b48d0b7d54b45de4f436571e40b0\">aabb_min</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0d85b48d0b7d54b45de4f436571e40b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">aabb_max</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a832edf238874e59d291c76e04b22ccec\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a832edf238874e59d291c76e04b22ccec\">fade_near</a> = 0.0f</td></tr>\n<tr class=\"separator:a832edf238874e59d291c76e04b22ccec\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae282428d355cd814ebf720a5885adab2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#ae282428d355cd814ebf720a5885adab2\">fade_far</a> = INFINITY</td></tr>\n<tr class=\"separator:ae282428d355cd814ebf720a5885adab2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74b3a8569c8bc84e8df38aa62da38f20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html#a74b3a8569c8bc84e8df38aa62da38f20\">harmonic</a></td></tr>\n<tr class=\"separator:a74b3a8569c8bc84e8df38aa62da38f20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"af7bb6164cd2f0ca88d08e2dd524f2c28\" name=\"af7bb6164cd2f0ca88d08e2dd524f2c28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7bb6164cd2f0ca88d08e2dd524f2c28\">&#9670;&nbsp;</a></span>GLDrawListEntry()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::API::GLDrawListEntry::GLDrawListEntry </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a3460a35f7e6246b3990b5b09f26c6415\" name=\"a3460a35f7e6246b3990b5b09f26c6415\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3460a35f7e6246b3990b5b09f26c6415\">&#9670;&nbsp;</a></span>CalcSortKey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::Render::API::GLDrawListEntry::CalcSortKey </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>cameraPosition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Assembles a key for sorting. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\" name=\"a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4cd6d561d1c22dcbf7e81a7fc1b4e9ed\">&#9670;&nbsp;</a></span>aabb_max</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::GLDrawListEntry::aabb_max = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0d85b48d0b7d54b45de4f436571e40b0\" name=\"a0d85b48d0b7d54b45de4f436571e40b0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d85b48d0b7d54b45de4f436571e40b0\">&#9670;&nbsp;</a></span>aabb_min</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::GLDrawListEntry::aabb_min = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac329ee9b6d3154d5f81d1cb322bdb464\" name=\"ac329ee9b6d3154d5f81d1cb322bdb464\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac329ee9b6d3154d5f81d1cb322bdb464\">&#9670;&nbsp;</a></span>colors</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::GLDrawListEntry::colors[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a28960b58e1684771943364ceddfe4917\" name=\"a28960b58e1684771943364ceddfe4917\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28960b58e1684771943364ceddfe4917\">&#9670;&nbsp;</a></span>eboLen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::eboLen = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a865e421a077ef2c6fafe376311afe40a\" name=\"a865e421a077ef2c6fafe376311afe40a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a865e421a077ef2c6fafe376311afe40a\">&#9670;&nbsp;</a></span>eboOff</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::eboOff = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaf126029f650661e7a83c6a054f57308\" name=\"aaf126029f650661e7a83c6a054f57308\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf126029f650661e7a83c6a054f57308\">&#9670;&nbsp;</a></span>environmentmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::environmentmap = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae282428d355cd814ebf720a5885adab2\" name=\"ae282428d355cd814ebf720a5885adab2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae282428d355cd814ebf720a5885adab2\">&#9670;&nbsp;</a></span>fade_far</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLDrawListEntry::fade_far = INFINITY</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a832edf238874e59d291c76e04b22ccec\" name=\"a832edf238874e59d291c76e04b22ccec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a832edf238874e59d291c76e04b22ccec\">&#9670;&nbsp;</a></span>fade_near</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLDrawListEntry::fade_near = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4a282542da7ede553863e63080b53e77\" name=\"a4a282542da7ede553863e63080b53e77\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a282542da7ede553863e63080b53e77\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a74b3a8569c8bc84e8df38aa62da38f20\" name=\"a74b3a8569c8bc84e8df38aa62da38f20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74b3a8569c8bc84e8df38aa62da38f20\">&#9670;&nbsp;</a></span>harmonic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#adc772ee58f3700260f2f155f334fd6d5\">sphericalharmonic_t</a> tram::Render::API::GLDrawListEntry::harmonic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac3c45c286b4c4e9fea14811c685a7b8\" name=\"aac3c45c286b4c4e9fea14811c685a7b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac3c45c286b4c4e9fea14811c685a7b8\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::layer = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a67f380744f271dbece03c8f081c86bf1\" name=\"a67f380744f271dbece03c8f081c86bf1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67f380744f271dbece03c8f081c86bf1\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::lightmap = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a41a219aed82e2711a6e78adfcdfb299f\" name=\"a41a219aed82e2711a6e78adfcdfb299f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41a219aed82e2711a6e78adfcdfb299f\">&#9670;&nbsp;</a></span>lights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::lights[4] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aafdb1c878c1a40c28478169a730e3c18\" name=\"aafdb1c878c1a40c28478169a730e3c18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafdb1c878c1a40c28478169a730e3c18\">&#9670;&nbsp;</a></span>materials</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a>* tram::Render::API::GLDrawListEntry::materials[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d34b1b8c60ff21a937113dc78b7d4a4\" name=\"a4d34b1b8c60ff21a937113dc78b7d4a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d34b1b8c60ff21a937113dc78b7d4a4\">&#9670;&nbsp;</a></span>matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::GLDrawListEntry::matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad431ba61a7c7f2673948abacbf85aa0d\" name=\"ad431ba61a7c7f2673948abacbf85aa0d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad431ba61a7c7f2673948abacbf85aa0d\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* tram::Render::API::GLDrawListEntry::pose = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0e14420c779fa4bc2fbd4f8246ce78b\" name=\"ae0e14420c779fa4bc2fbd4f8246ce78b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0e14420c779fa4bc2fbd4f8246ce78b\">&#9670;&nbsp;</a></span>shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::shader = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a00d701e6b4117b3ea568a1733d5f4455\" name=\"a00d701e6b4117b3ea568a1733d5f4455\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00d701e6b4117b3ea568a1733d5f4455\">&#9670;&nbsp;</a></span>texCount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::texCount = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70b0e18a2a7c521c25994b24941984ec\" name=\"a70b0e18a2a7c521c25994b24941984ec\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70b0e18a2a7c521c25994b24941984ec\">&#9670;&nbsp;</a></span>texture_transforms</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::GLDrawListEntry::texture_transforms[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac984d3f4c21946c93809b5e07408fc1d\" name=\"ac984d3f4c21946c93809b5e07408fc1d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac984d3f4c21946c93809b5e07408fc1d\">&#9670;&nbsp;</a></span>vao</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLDrawListEntry::vao = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"drawlist_8h_source.html\">drawlist.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_light-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLLight Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">padding2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">tram::Render::API::GLLight</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::GLLight Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">GLLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLLight Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2opengl_2light_8h_source.html\">light.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aaba013dff6639e491d1e9f82e40bd5c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaba013dff6639e491d1e9f82e40bd5c9\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:aaba013dff6639e491d1e9f82e40bd5c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3100b3b9e5768fd058115e131d221\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a77e3100b3b9e5768fd058115e131d221\">padding</a></td></tr>\n<tr class=\"separator:a77e3100b3b9e5768fd058115e131d221\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a78cdd846a56cbb9ca8d7085a04a0edde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a78cdd846a56cbb9ca8d7085a04a0edde\">color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a78cdd846a56cbb9ca8d7085a04a0edde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a99216bd4b9cc9d114f1a17f41d77faab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a99216bd4b9cc9d114f1a17f41d77faab\">distance</a> = 0.0f</td></tr>\n<tr class=\"separator:a99216bd4b9cc9d114f1a17f41d77faab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a58b24ce258b313935592f59caa960391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a58b24ce258b313935592f59caa960391\">direction</a> = {0.0f, 0.0f, -1.0f}</td></tr>\n<tr class=\"separator:a58b24ce258b313935592f59caa960391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0bbe7d80789eab7c5206ce463e320f3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#a0bbe7d80789eab7c5206ce463e320f3f\">exponent</a> = 0.0f</td></tr>\n<tr class=\"separator:a0bbe7d80789eab7c5206ce463e320f3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf9eba5b5c1706e06920f3ed97880984\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html#aaf9eba5b5c1706e06920f3ed97880984\">padding2</a> [4]</td></tr>\n<tr class=\"separator:aaf9eba5b5c1706e06920f3ed97880984\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a78cdd846a56cbb9ca8d7085a04a0edde\" name=\"a78cdd846a56cbb9ca8d7085a04a0edde\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78cdd846a56cbb9ca8d7085a04a0edde\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::GLLight::color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58b24ce258b313935592f59caa960391\" name=\"a58b24ce258b313935592f59caa960391\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58b24ce258b313935592f59caa960391\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::GLLight::direction = {0.0f, 0.0f, -1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a99216bd4b9cc9d114f1a17f41d77faab\" name=\"a99216bd4b9cc9d114f1a17f41d77faab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a99216bd4b9cc9d114f1a17f41d77faab\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLLight::distance = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0bbe7d80789eab7c5206ce463e320f3f\" name=\"a0bbe7d80789eab7c5206ce463e320f3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0bbe7d80789eab7c5206ce463e320f3f\">&#9670;&nbsp;</a></span>exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLLight::exponent = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaba013dff6639e491d1e9f82e40bd5c9\" name=\"aaba013dff6639e491d1e9f82e40bd5c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaba013dff6639e491d1e9f82e40bd5c9\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::GLLight::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77e3100b3b9e5768fd058115e131d221\" name=\"a77e3100b3b9e5768fd058115e131d221\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77e3100b3b9e5768fd058115e131d221\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLLight::padding</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaf9eba5b5c1706e06920f3ed97880984\" name=\"aaf9eba5b5c1706e06920f3ed97880984\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf9eba5b5c1706e06920f3ed97880984\">&#9670;&nbsp;</a></span>padding2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLLight::padding2[4]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"render_2opengl_2light_8h_source.html\">light.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_material-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLMaterial Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">gl_texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">reflectivity</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">specular_exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">specular_transparency</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">specular_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">tram::Render::API::GLMaterial</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::GLMaterial Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">GLMaterial</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::GLMaterial Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"opengl_2material_8h_source.html\">material.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a910bf64758275e7a85ddf7cb1762b461\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a910bf64758275e7a85ddf7cb1762b461\">gl_texture</a> = 0</td></tr>\n<tr class=\"separator:a910bf64758275e7a85ddf7cb1762b461\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1260401099f04ec467b0ac463f48c83f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a1260401099f04ec467b0ac463f48c83f\">specular_weight</a> = 0.0f</td></tr>\n<tr class=\"separator:a1260401099f04ec467b0ac463f48c83f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a07e7b84d5737ca1179d08607b6dd06aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a07e7b84d5737ca1179d08607b6dd06aa\">specular_exponent</a> = 1.0f</td></tr>\n<tr class=\"separator:a07e7b84d5737ca1179d08607b6dd06aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c1937af80981904bbfedfbf9b144b64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a5c1937af80981904bbfedfbf9b144b64\">specular_transparency</a> = 0.0f</td></tr>\n<tr class=\"separator:a5c1937af80981904bbfedfbf9b144b64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32337dbe065506cde40f754aa3e8f4d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#a32337dbe065506cde40f754aa3e8f4d7\">reflectivity</a> = 0.0f</td></tr>\n<tr class=\"separator:a32337dbe065506cde40f754aa3e8f4d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6842cdc5bd66c705914b4d4b11a61a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html#ae6842cdc5bd66c705914b4d4b11a61a8\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:ae6842cdc5bd66c705914b4d4b11a61a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae6842cdc5bd66c705914b4d4b11a61a8\" name=\"ae6842cdc5bd66c705914b4d4b11a61a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6842cdc5bd66c705914b4d4b11a61a8\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::GLMaterial::color = {1.0f, 1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a910bf64758275e7a85ddf7cb1762b461\" name=\"a910bf64758275e7a85ddf7cb1762b461\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a910bf64758275e7a85ddf7cb1762b461\">&#9670;&nbsp;</a></span>gl_texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::GLMaterial::gl_texture = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32337dbe065506cde40f754aa3e8f4d7\" name=\"a32337dbe065506cde40f754aa3e8f4d7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32337dbe065506cde40f754aa3e8f4d7\">&#9670;&nbsp;</a></span>reflectivity</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLMaterial::reflectivity = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07e7b84d5737ca1179d08607b6dd06aa\" name=\"a07e7b84d5737ca1179d08607b6dd06aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07e7b84d5737ca1179d08607b6dd06aa\">&#9670;&nbsp;</a></span>specular_exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLMaterial::specular_exponent = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c1937af80981904bbfedfbf9b144b64\" name=\"a5c1937af80981904bbfedfbf9b144b64\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c1937af80981904bbfedfbf9b144b64\">&#9670;&nbsp;</a></span>specular_transparency</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLMaterial::specular_transparency = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1260401099f04ec467b0ac463f48c83f\" name=\"a1260401099f04ec467b0ac463f48c83f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1260401099f04ec467b0ac463f48c83f\">&#9670;&nbsp;</a></span>specular_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::GLMaterial::specular_weight = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2material_8h_source.html\">material.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">LayerParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LayerParameters Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6\">ambient_color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc\">projection_matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4\">sun_color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82\">sun_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95\">view_matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd\">view_position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">tram::Render::API::LayerParameters</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::LayerParameters Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html\">LayerParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LayerParameters Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a90f643942f1e49d84aaf87c8d9edc1fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a90f643942f1e49d84aaf87c8d9edc1fc\">projection_matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:a90f643942f1e49d84aaf87c8d9edc1fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5f470f758b077022ece9b02d9853b95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ae5f470f758b077022ece9b02d9853b95\">view_matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ae5f470f758b077022ece9b02d9853b95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd5f17ca5eda416d0f7f19344a60e5bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#afd5f17ca5eda416d0f7f19344a60e5bd\">view_position</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:afd5f17ca5eda416d0f7f19344a60e5bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a76cca2cbf53a6cb3f21faee686130d82\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a76cca2cbf53a6cb3f21faee686130d82\">sun_direction</a> = {0.0f, 1.0f, 0.0f}</td></tr>\n<tr class=\"separator:a76cca2cbf53a6cb3f21faee686130d82\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9f4010d78ed2b6398c86bbd3bfa3d3b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#a9f4010d78ed2b6398c86bbd3bfa3d3b4\">sun_color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a9f4010d78ed2b6398c86bbd3bfa3d3b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad69fb09970588b36db1fd69a307211d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_layer_parameters.html#ad69fb09970588b36db1fd69a307211d6\">ambient_color</a> = {0.3f, 0.3f, 0.3f}</td></tr>\n<tr class=\"separator:ad69fb09970588b36db1fd69a307211d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad69fb09970588b36db1fd69a307211d6\" name=\"ad69fb09970588b36db1fd69a307211d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad69fb09970588b36db1fd69a307211d6\">&#9670;&nbsp;</a></span>ambient_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LayerParameters::ambient_color = {0.3f, 0.3f, 0.3f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a90f643942f1e49d84aaf87c8d9edc1fc\" name=\"a90f643942f1e49d84aaf87c8d9edc1fc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90f643942f1e49d84aaf87c8d9edc1fc\">&#9670;&nbsp;</a></span>projection_matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::LayerParameters::projection_matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9f4010d78ed2b6398c86bbd3bfa3d3b4\" name=\"a9f4010d78ed2b6398c86bbd3bfa3d3b4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f4010d78ed2b6398c86bbd3bfa3d3b4\">&#9670;&nbsp;</a></span>sun_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LayerParameters::sun_color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76cca2cbf53a6cb3f21faee686130d82\" name=\"a76cca2cbf53a6cb3f21faee686130d82\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76cca2cbf53a6cb3f21faee686130d82\">&#9670;&nbsp;</a></span>sun_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LayerParameters::sun_direction = {0.0f, 1.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae5f470f758b077022ece9b02d9853b95\" name=\"ae5f470f758b077022ece9b02d9853b95\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5f470f758b077022ece9b02d9853b95\">&#9670;&nbsp;</a></span>view_matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::LayerParameters::view_matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afd5f17ca5eda416d0f7f19344a60e5bd\" name=\"afd5f17ca5eda416d0f7f19344a60e5bd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd5f17ca5eda416d0f7f19344a60e5bd\">&#9670;&nbsp;</a></span>view_position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LayerParameters::view_position = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">LightListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LightListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a2555fea36471fbb148f9af722a50e035\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#aee80399f519d440fe7a178087606e744\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#afe8ee9f73c7e0c474f3504224aa4cae7\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a12f3720b22d46aee8155eda716d2a27e\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a2029421b03ce11f2a72193e4ab5462b6\">padding2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">tram::Render::API::LightListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::LightListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html\">LightListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LightListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:afe8ee9f73c7e0c474f3504224aa4cae7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#afe8ee9f73c7e0c474f3504224aa4cae7\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:afe8ee9f73c7e0c474f3504224aa4cae7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a12f3720b22d46aee8155eda716d2a27e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a12f3720b22d46aee8155eda716d2a27e\">padding</a></td></tr>\n<tr class=\"separator:a12f3720b22d46aee8155eda716d2a27e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2555fea36471fbb148f9af722a50e035\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a2555fea36471fbb148f9af722a50e035\">color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a2555fea36471fbb148f9af722a50e035\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee80399f519d440fe7a178087606e744\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#aee80399f519d440fe7a178087606e744\">distance</a> = 0.0f</td></tr>\n<tr class=\"separator:aee80399f519d440fe7a178087606e744\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2029421b03ce11f2a72193e4ab5462b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_light_list_entry.html#a2029421b03ce11f2a72193e4ab5462b6\">padding2</a> [8]</td></tr>\n<tr class=\"separator:a2029421b03ce11f2a72193e4ab5462b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2555fea36471fbb148f9af722a50e035\" name=\"a2555fea36471fbb148f9af722a50e035\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2555fea36471fbb148f9af722a50e035\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LightListEntry::color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee80399f519d440fe7a178087606e744\" name=\"aee80399f519d440fe7a178087606e744\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee80399f519d440fe7a178087606e744\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LightListEntry::distance = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afe8ee9f73c7e0c474f3504224aa4cae7\" name=\"afe8ee9f73c7e0c474f3504224aa4cae7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe8ee9f73c7e0c474f3504224aa4cae7\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::LightListEntry::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a12f3720b22d46aee8155eda716d2a27e\" name=\"a12f3720b22d46aee8155eda716d2a27e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a12f3720b22d46aee8155eda716d2a27e\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LightListEntry::padding</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2029421b03ce11f2a72193e4ab5462b6\" name=\"a2029421b03ce11f2a72193e4ab5462b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2029421b03ce11f2a72193e4ab5462b6\">&#9670;&nbsp;</a></span>padding2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LightListEntry::padding2[8]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_line_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LineVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac\">pos_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67\">pos_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf\">pos_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::LineVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LineVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a07bdacffe0baf8fd7b6f179b525105ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a07bdacffe0baf8fd7b6f179b525105ac\">pos_x</a></td></tr>\n<tr class=\"separator:a07bdacffe0baf8fd7b6f179b525105ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae0cc6aaaecc942735cf306818d019a67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#ae0cc6aaaecc942735cf306818d019a67\">pos_y</a></td></tr>\n<tr class=\"separator:ae0cc6aaaecc942735cf306818d019a67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e8c58a3a5bee43731ebe1d31ffcb1bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a4e8c58a3a5bee43731ebe1d31ffcb1bf\">pos_z</a></td></tr>\n<tr class=\"separator:a4e8c58a3a5bee43731ebe1d31ffcb1bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7881817677d8099c98465c08652c6588\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">D3DCOLOR&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html#a7881817677d8099c98465c08652c6588\">color</a></td></tr>\n<tr class=\"separator:a7881817677d8099c98465c08652c6588\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a7881817677d8099c98465c08652c6588\" name=\"a7881817677d8099c98465c08652c6588\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7881817677d8099c98465c08652c6588\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">D3DCOLOR tram::Render::API::LineVertex::color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a07bdacffe0baf8fd7b6f179b525105ac\" name=\"a07bdacffe0baf8fd7b6f179b525105ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07bdacffe0baf8fd7b6f179b525105ac\">&#9670;&nbsp;</a></span>pos_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LineVertex::pos_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae0cc6aaaecc942735cf306818d019a67\" name=\"ae0cc6aaaecc942735cf306818d019a67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0cc6aaaecc942735cf306818d019a67\">&#9670;&nbsp;</a></span>pos_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LineVertex::pos_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e8c58a3a5bee43731ebe1d31ffcb1bf\" name=\"a4e8c58a3a5bee43731ebe1d31ffcb1bf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e8c58a3a5bee43731ebe1d31ffcb1bf\">&#9670;&nbsp;</a></span>pos_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::LineVertex::pos_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_linked_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LinkedShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a41457d93aaeda9f7425a236206b5d05f\">fragment_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a3cb14cc39ec67a27cefa4dfed4271f82\">linked_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#adb57647c20045748ac4d076931af6b30\">material_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5b945162451f60f07edd51e309fbcfd\">vertex_format</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a5f5f11c1296f725453c7cd4368b9292b\">vertex_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">tram::Render::API::LinkedShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::LinkedShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::LinkedShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aa5b945162451f60f07edd51e309fbcfd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#aa5b945162451f60f07edd51e309fbcfd\">vertex_format</a></td></tr>\n<tr class=\"separator:aa5b945162451f60f07edd51e309fbcfd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb57647c20045748ac4d076931af6b30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#adb57647c20045748ac4d076931af6b30\">material_type</a></td></tr>\n<tr class=\"separator:adb57647c20045748ac4d076931af6b30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3cb14cc39ec67a27cefa4dfed4271f82\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a3cb14cc39ec67a27cefa4dfed4271f82\">linked_shader</a></td></tr>\n<tr class=\"separator:a3cb14cc39ec67a27cefa4dfed4271f82\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f5f11c1296f725453c7cd4368b9292b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a5f5f11c1296f725453c7cd4368b9292b\">vertex_shader</a></td></tr>\n<tr class=\"separator:a5f5f11c1296f725453c7cd4368b9292b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a41457d93aaeda9f7425a236206b5d05f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_linked_shader.html#a41457d93aaeda9f7425a236206b5d05f\">fragment_shader</a></td></tr>\n<tr class=\"separator:a41457d93aaeda9f7425a236206b5d05f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a41457d93aaeda9f7425a236206b5d05f\" name=\"a41457d93aaeda9f7425a236206b5d05f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41457d93aaeda9f7425a236206b5d05f\">&#9670;&nbsp;</a></span>fragment_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::LinkedShader::fragment_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3cb14cc39ec67a27cefa4dfed4271f82\" name=\"a3cb14cc39ec67a27cefa4dfed4271f82\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3cb14cc39ec67a27cefa4dfed4271f82\">&#9670;&nbsp;</a></span>linked_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::LinkedShader::linked_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adb57647c20045748ac4d076931af6b30\" name=\"adb57647c20045748ac4d076931af6b30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb57647c20045748ac4d076931af6b30\">&#9670;&nbsp;</a></span>material_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::API::LinkedShader::material_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5b945162451f60f07edd51e309fbcfd\" name=\"aa5b945162451f60f07edd51e309fbcfd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5b945162451f60f07edd51e309fbcfd\">&#9670;&nbsp;</a></span>vertex_format</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::API::LinkedShader::vertex_format</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f5f11c1296f725453c7cd4368b9292b\" name=\"a5f5f11c1296f725453c7cd4368b9292b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f5f11c1296f725453c7cd4368b9292b\">&#9670;&nbsp;</a></span>vertex_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::LinkedShader::vertex_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_point2_d-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::Point2D Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">tram::Render::API::Point2D</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30\">depth</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">tram::Render::API::Point2D</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039\">x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">tram::Render::API::Point2D</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28\">y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">tram::Render::API::Point2D</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::Point2D Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html\">Point2D</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::Point2D Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:acb12d46b028d44cca7d143396173c039\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#acb12d46b028d44cca7d143396173c039\">x</a></td></tr>\n<tr class=\"separator:acb12d46b028d44cca7d143396173c039\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af783aee7c4be2562b7bc790843622c28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#af783aee7c4be2562b7bc790843622c28\">y</a></td></tr>\n<tr class=\"separator:af783aee7c4be2562b7bc790843622c28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a990ab3ba3b03564739d41f9645cd2f30\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_point2_d.html#a990ab3ba3b03564739d41f9645cd2f30\">depth</a></td></tr>\n<tr class=\"separator:a990ab3ba3b03564739d41f9645cd2f30\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a990ab3ba3b03564739d41f9645cd2f30\" name=\"a990ab3ba3b03564739d41f9645cd2f30\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a990ab3ba3b03564739d41f9645cd2f30\">&#9670;&nbsp;</a></span>depth</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::Point2D::depth</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb12d46b028d44cca7d143396173c039\" name=\"acb12d46b028d44cca7d143396173c039\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb12d46b028d44cca7d143396173c039\">&#9670;&nbsp;</a></span>x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::Point2D::x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af783aee7c4be2562b7bc790843622c28\" name=\"af783aee7c4be2562b7bc790843622c28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af783aee7c4be2562b7bc790843622c28\">&#9670;&nbsp;</a></span>y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::Point2D::y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWDrawListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">index_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">index_length</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">index_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">lights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">specular_exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">specular_transparency</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">specular_weight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">tram::Render::API::SWDrawListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::SWDrawListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">SWDrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWDrawListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac41f6b41aba38a7099bca75a12e45a66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ac41f6b41aba38a7099bca75a12e45a66\">flags</a> = 0</td></tr>\n<tr class=\"separator:ac41f6b41aba38a7099bca75a12e45a66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a81ae414cf1df35f7eae3e7301df25377\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a81ae414cf1df35f7eae3e7301df25377\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:a81ae414cf1df35f7eae3e7301df25377\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a963fb9fdc188ee14b78c1514dc4a2360\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a963fb9fdc188ee14b78c1514dc4a2360\">matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:a963fb9fdc188ee14b78c1514dc4a2360\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5e765e4ee8dd68acf7ece8f12d0663c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5e765e4ee8dd68acf7ece8f12d0663c7\">lights</a> [4] = {nullptr, nullptr, nullptr, nullptr}</td></tr>\n<tr class=\"separator:a5e765e4ee8dd68acf7ece8f12d0663c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8312bc4a540cc25641d8b0cdf848b9dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a8312bc4a540cc25641d8b0cdf848b9dd\">layer</a> = 0</td></tr>\n<tr class=\"separator:a8312bc4a540cc25641d8b0cdf848b9dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ada769a583a606a1cce9acbeaf75c0055\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#ada769a583a606a1cce9acbeaf75c0055\">lightmap</a> = nullptr</td></tr>\n<tr class=\"separator:ada769a583a606a1cce9acbeaf75c0055\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a615823889f7fb122e6eeffc9c4404ed2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a615823889f7fb122e6eeffc9c4404ed2\">vertex_array</a> = nullptr</td></tr>\n<tr class=\"separator:a615823889f7fb122e6eeffc9c4404ed2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5014bfeba11937acbddee274ab2a240a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5014bfeba11937acbddee274ab2a240a\">index_array</a> = nullptr</td></tr>\n<tr class=\"separator:a5014bfeba11937acbddee274ab2a240a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2becbbd55e937640b93428514e1feaf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a2becbbd55e937640b93428514e1feaf9\">index_length</a> = 0</td></tr>\n<tr class=\"separator:a2becbbd55e937640b93428514e1feaf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abe68abe6d073d4442922709f286fe084\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abe68abe6d073d4442922709f286fe084\">index_offset</a> = 0</td></tr>\n<tr class=\"separator:abe68abe6d073d4442922709f286fe084\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a908345371794e728c6e67ca027a81b31\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a908345371794e728c6e67ca027a81b31\">texture</a> = nullptr</td></tr>\n<tr class=\"separator:a908345371794e728c6e67ca027a81b31\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63460358088c63ffeb9c361e7ac8398f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a63460358088c63ffeb9c361e7ac8398f\">color</a> = {1.0f, 1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a63460358088c63ffeb9c361e7ac8398f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05b99dbe35234a661eaf6e7b0ac12698\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a05b99dbe35234a661eaf6e7b0ac12698\">specular_weight</a> = 1.0f</td></tr>\n<tr class=\"separator:a05b99dbe35234a661eaf6e7b0ac12698\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdad019161ef217d6bdbb2c34f22e3de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#abdad019161ef217d6bdbb2c34f22e3de\">specular_exponent</a> = 1.0f</td></tr>\n<tr class=\"separator:abdad019161ef217d6bdbb2c34f22e3de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5ef81d3e413cd46fc8d06fcb14e1438d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html#a5ef81d3e413cd46fc8d06fcb14e1438d\">specular_transparency</a> = 1.0f</td></tr>\n<tr class=\"separator:a5ef81d3e413cd46fc8d06fcb14e1438d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a63460358088c63ffeb9c361e7ac8398f\" name=\"a63460358088c63ffeb9c361e7ac8398f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63460358088c63ffeb9c361e7ac8398f\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::SWDrawListEntry::color = {1.0f, 1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac41f6b41aba38a7099bca75a12e45a66\" name=\"ac41f6b41aba38a7099bca75a12e45a66\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac41f6b41aba38a7099bca75a12e45a66\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::SWDrawListEntry::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5014bfeba11937acbddee274ab2a240a\" name=\"a5014bfeba11937acbddee274ab2a240a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5014bfeba11937acbddee274ab2a240a\">&#9670;&nbsp;</a></span>index_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a>* tram::Render::API::SWDrawListEntry::index_array = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2becbbd55e937640b93428514e1feaf9\" name=\"a2becbbd55e937640b93428514e1feaf9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2becbbd55e937640b93428514e1feaf9\">&#9670;&nbsp;</a></span>index_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::SWDrawListEntry::index_length = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe68abe6d073d4442922709f286fe084\" name=\"abe68abe6d073d4442922709f286fe084\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe68abe6d073d4442922709f286fe084\">&#9670;&nbsp;</a></span>index_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::SWDrawListEntry::index_offset = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8312bc4a540cc25641d8b0cdf848b9dd\" name=\"a8312bc4a540cc25641d8b0cdf848b9dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8312bc4a540cc25641d8b0cdf848b9dd\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::SWDrawListEntry::layer = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ada769a583a606a1cce9acbeaf75c0055\" name=\"ada769a583a606a1cce9acbeaf75c0055\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada769a583a606a1cce9acbeaf75c0055\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a>* tram::Render::API::SWDrawListEntry::lightmap = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e765e4ee8dd68acf7ece8f12d0663c7\" name=\"a5e765e4ee8dd68acf7ece8f12d0663c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e765e4ee8dd68acf7ece8f12d0663c7\">&#9670;&nbsp;</a></span>lights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a>* tram::Render::API::SWDrawListEntry::lights[4] = {nullptr, nullptr, nullptr, nullptr}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a963fb9fdc188ee14b78c1514dc4a2360\" name=\"a963fb9fdc188ee14b78c1514dc4a2360\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a963fb9fdc188ee14b78c1514dc4a2360\">&#9670;&nbsp;</a></span>matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::SWDrawListEntry::matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a81ae414cf1df35f7eae3e7301df25377\" name=\"a81ae414cf1df35f7eae3e7301df25377\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81ae414cf1df35f7eae3e7301df25377\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* tram::Render::API::SWDrawListEntry::pose = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abdad019161ef217d6bdbb2c34f22e3de\" name=\"abdad019161ef217d6bdbb2c34f22e3de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdad019161ef217d6bdbb2c34f22e3de\">&#9670;&nbsp;</a></span>specular_exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::SWDrawListEntry::specular_exponent = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5ef81d3e413cd46fc8d06fcb14e1438d\" name=\"a5ef81d3e413cd46fc8d06fcb14e1438d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ef81d3e413cd46fc8d06fcb14e1438d\">&#9670;&nbsp;</a></span>specular_transparency</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::SWDrawListEntry::specular_transparency = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a05b99dbe35234a661eaf6e7b0ac12698\" name=\"a05b99dbe35234a661eaf6e7b0ac12698\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05b99dbe35234a661eaf6e7b0ac12698\">&#9670;&nbsp;</a></span>specular_weight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::SWDrawListEntry::specular_weight = 1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a908345371794e728c6e67ca027a81b31\" name=\"a908345371794e728c6e67ca027a81b31\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a908345371794e728c6e67ca027a81b31\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a>* tram::Render::API::SWDrawListEntry::texture = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a615823889f7fb122e6eeffc9c4404ed2\" name=\"a615823889f7fb122e6eeffc9c4404ed2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a615823889f7fb122e6eeffc9c4404ed2\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a>* tram::Render::API::SWDrawListEntry::vertex_array = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWIndexArray Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">index_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">indices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">tram::Render::API::SWIndexArray</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::SWIndexArray Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">SWIndexArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWIndexArray Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab13f8b1dc90072e971b2b6c997eb2f57\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#ab13f8b1dc90072e971b2b6c997eb2f57\">index_count</a> = 0</td></tr>\n<tr class=\"separator:ab13f8b1dc90072e971b2b6c997eb2f57\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d40640fcd34e0d04e93967015a3f31a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a1d40640fcd34e0d04e93967015a3f31a\">indices</a> = nullptr</td></tr>\n<tr class=\"separator:a1d40640fcd34e0d04e93967015a3f31a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2de31335d50d09b3228d92b4129dad6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html#a2de31335d50d09b3228d92b4129dad6f\">padding</a></td></tr>\n<tr class=\"separator:a2de31335d50d09b3228d92b4129dad6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab13f8b1dc90072e971b2b6c997eb2f57\" name=\"ab13f8b1dc90072e971b2b6c997eb2f57\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab13f8b1dc90072e971b2b6c997eb2f57\">&#9670;&nbsp;</a></span>index_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::API::SWIndexArray::index_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d40640fcd34e0d04e93967015a3f31a\" name=\"a1d40640fcd34e0d04e93967015a3f31a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d40640fcd34e0d04e93967015a3f31a\">&#9670;&nbsp;</a></span>indices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t* tram::Render::API::SWIndexArray::indices = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2de31335d50d09b3228d92b4129dad6f\" name=\"a2de31335d50d09b3228d92b4129dad6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2de31335d50d09b3228d92b4129dad6f\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::API::SWIndexArray::padding</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_light-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWLight Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">exponent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">tram::Render::API::SWLight</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::SWLight Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">SWLight</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWLight Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2b570e30f7b76c312622439f7ea7323e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a2b570e30f7b76c312622439f7ea7323e\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a2b570e30f7b76c312622439f7ea7323e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac7bf8ca7901ad82b4055cca7a9f17929\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ac7bf8ca7901ad82b4055cca7a9f17929\">color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ac7bf8ca7901ad82b4055cca7a9f17929\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9068a6c1a70d5227827ec2d85e8c1c67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a9068a6c1a70d5227827ec2d85e8c1c67\">distance</a> = 0.0f</td></tr>\n<tr class=\"separator:a9068a6c1a70d5227827ec2d85e8c1c67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2ce38d13d603acace4061af8a68e421\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#ae2ce38d13d603acace4061af8a68e421\">direction</a> = {0.0f, 0.0f, -1.0f}</td></tr>\n<tr class=\"separator:ae2ce38d13d603acace4061af8a68e421\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1838c501762f397cdd64335cced1e092\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html#a1838c501762f397cdd64335cced1e092\">exponent</a> = 0.0f</td></tr>\n<tr class=\"separator:a1838c501762f397cdd64335cced1e092\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac7bf8ca7901ad82b4055cca7a9f17929\" name=\"ac7bf8ca7901ad82b4055cca7a9f17929\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac7bf8ca7901ad82b4055cca7a9f17929\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::SWLight::color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2ce38d13d603acace4061af8a68e421\" name=\"ae2ce38d13d603acace4061af8a68e421\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2ce38d13d603acace4061af8a68e421\">&#9670;&nbsp;</a></span>direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::SWLight::direction = {0.0f, 0.0f, -1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9068a6c1a70d5227827ec2d85e8c1c67\" name=\"a9068a6c1a70d5227827ec2d85e8c1c67\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9068a6c1a70d5227827ec2d85e8c1c67\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::SWLight::distance = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1838c501762f397cdd64335cced1e092\" name=\"a1838c501762f397cdd64335cced1e092\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1838c501762f397cdd64335cced1e092\">&#9670;&nbsp;</a></span>exponent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::SWLight::exponent = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2b570e30f7b76c312622439f7ea7323e\" name=\"a2b570e30f7b76c312622439f7ea7323e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b570e30f7b76c312622439f7ea7323e\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::SWLight::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWTexture Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">channels</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">mode</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">pixels</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">tram::Render::API::SWTexture</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::SWTexture Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">SWTexture</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWTexture Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae907dbc5c37e4a1e92440c7518e242d6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#ae907dbc5c37e4a1e92440c7518e242d6\">width</a></td></tr>\n<tr class=\"separator:ae907dbc5c37e4a1e92440c7518e242d6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5c8fdd2162a423532bc06502910f1579\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a5c8fdd2162a423532bc06502910f1579\">height</a></td></tr>\n<tr class=\"separator:a5c8fdd2162a423532bc06502910f1579\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a964e2ce1c9da10fdb367faf75368e18d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a964e2ce1c9da10fdb367faf75368e18d\">channels</a></td></tr>\n<tr class=\"separator:a964e2ce1c9da10fdb367faf75368e18d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2560949172455dcc62693eb9161f4d44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">SWTextureMode</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a2560949172455dcc62693eb9161f4d44\">mode</a> = <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">SW_NEAREST</a></td></tr>\n<tr class=\"separator:a2560949172455dcc62693eb9161f4d44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95971f9092686bb8428c980f655d7334\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint8_t *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html#a95971f9092686bb8428c980f655d7334\">pixels</a> = nullptr</td></tr>\n<tr class=\"separator:a95971f9092686bb8428c980f655d7334\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a964e2ce1c9da10fdb367faf75368e18d\" name=\"a964e2ce1c9da10fdb367faf75368e18d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a964e2ce1c9da10fdb367faf75368e18d\">&#9670;&nbsp;</a></span>channels</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::SWTexture::channels</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5c8fdd2162a423532bc06502910f1579\" name=\"a5c8fdd2162a423532bc06502910f1579\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c8fdd2162a423532bc06502910f1579\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::SWTexture::height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2560949172455dcc62693eb9161f4d44\" name=\"a2560949172455dcc62693eb9161f4d44\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2560949172455dcc62693eb9161f4d44\">&#9670;&nbsp;</a></span>mode</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8c\">SWTextureMode</a> tram::Render::API::SWTexture::mode = <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a435f5c7784d296fc909a87b6c6190a8ca1da7efb4481bda8396c5e620c0df3c31\">SW_NEAREST</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95971f9092686bb8428c980f655d7334\" name=\"a95971f9092686bb8428c980f655d7334\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95971f9092686bb8428c980f655d7334\">&#9670;&nbsp;</a></span>pixels</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint8_t* tram::Render::API::SWTexture::pixels = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae907dbc5c37e4a1e92440c7518e242d6\" name=\"ae907dbc5c37e4a1e92440c7518e242d6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae907dbc5c37e4a1e92440c7518e242d6\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Render::API::SWTexture::width</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWVertexArray Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">format</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">helper</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">vertex_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">vertices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">tram::Render::API::SWVertexArray</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::SWVertexArray Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">SWVertexArray</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::SWVertexArray Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"software_8h_source.html\">software.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9696b067eb3e37d068c606ba565da133\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">SWVertexType</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#a9696b067eb3e37d068c606ba565da133\">type</a> = <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">SW_STATIC_LIGHTMAPPED</a></td></tr>\n<tr class=\"separator:a9696b067eb3e37d068c606ba565da133\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab33cd2e86d75d32f47c3071e186fc44d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ab33cd2e86d75d32f47c3071e186fc44d\">vertices</a> = nullptr</td></tr>\n<tr class=\"separator:ab33cd2e86d75d32f47c3071e186fc44d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add67c8209f7725b412aa0b3c24ab534f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#add67c8209f7725b412aa0b3c24ab534f\">vertex_count</a> = 0</td></tr>\n<tr class=\"separator:add67c8209f7725b412aa0b3c24ab534f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae5c1736575294cb01427786c8bc8e3a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#ae5c1736575294cb01427786c8bc8e3a2\">format</a></td></tr>\n<tr class=\"separator:ae5c1736575294cb01427786c8bc8e3a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac501573a4eabe407679900bd4d814a4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html#aac501573a4eabe407679900bd4d814a4\">helper</a></td></tr>\n<tr class=\"separator:aac501573a4eabe407679900bd4d814a4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae5c1736575294cb01427786c8bc8e3a2\" name=\"ae5c1736575294cb01427786c8bc8e3a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5c1736575294cb01427786c8bc8e3a2\">&#9670;&nbsp;</a></span>format</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> tram::Render::API::SWVertexArray::format</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac501573a4eabe407679900bd4d814a4\" name=\"aac501573a4eabe407679900bd4d814a4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac501573a4eabe407679900bd4d814a4\">&#9670;&nbsp;</a></span>helper</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_f_f_p_helper.html\">FFPHelper</a> tram::Render::API::SWVertexArray::helper</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9696b067eb3e37d068c606ba565da133\" name=\"a9696b067eb3e37d068c606ba565da133\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9696b067eb3e37d068c606ba565da133\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2\">SWVertexType</a> tram::Render::API::SWVertexArray::type = <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a52ad3127cec9daa2f9c83ca8875dd2d2a5f33f9d3675e0124018172ead149c255\">SW_STATIC_LIGHTMAPPED</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add67c8209f7725b412aa0b3c24ab534f\" name=\"add67c8209f7725b412aa0b3c24ab534f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add67c8209f7725b412aa0b3c24ab534f\">&#9670;&nbsp;</a></span>vertex_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::API::SWVertexArray::vertex_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab33cd2e86d75d32f47c3071e186fc44d\" name=\"ab33cd2e86d75d32f47c3071e186fc44d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab33cd2e86d75d32f47c3071e186fc44d\">&#9670;&nbsp;</a></span>vertices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::API::SWVertexArray::vertices = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8h_source.html\">software.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_scanline-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::Scanline Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7\">begin</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5\">begin_adv</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16\">begin_p0</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334\">begin_p1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909\">end</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33\">end_adv</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49\">end_p0</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c\">end_p1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">tram::Render::API::Scanline</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_scanline.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::Scanline Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::Scanline Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3372ad996c67ffcf0bcd0099498981c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3372ad996c67ffcf0bcd0099498981c7\">begin</a></td></tr>\n<tr class=\"separator:a3372ad996c67ffcf0bcd0099498981c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4d94aa4b204cb90a9455e131a24e3909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a4d94aa4b204cb90a9455e131a24e3909\">end</a></td></tr>\n<tr class=\"separator:a4d94aa4b204cb90a9455e131a24e3909\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3802a9a9b40e56ec27089ffbdda2be16\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a3802a9a9b40e56ec27089ffbdda2be16\">begin_p0</a></td></tr>\n<tr class=\"separator:a3802a9a9b40e56ec27089ffbdda2be16\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac943df2f987544ca5bc87a5b2ff17334\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ac943df2f987544ca5bc87a5b2ff17334\">begin_p1</a></td></tr>\n<tr class=\"separator:ac943df2f987544ca5bc87a5b2ff17334\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a699ad631d7655c390f9271d1d3fd1cc5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#a699ad631d7655c390f9271d1d3fd1cc5\">begin_adv</a></td></tr>\n<tr class=\"separator:a699ad631d7655c390f9271d1d3fd1cc5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa91f1dea5fe7fb9dd33fd4f0533bfc49\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aa91f1dea5fe7fb9dd33fd4f0533bfc49\">end_p0</a></td></tr>\n<tr class=\"separator:aa91f1dea5fe7fb9dd33fd4f0533bfc49\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca649d2fe5fff4af41971c73edca2e1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#aca649d2fe5fff4af41971c73edca2e1c\">end_p1</a></td></tr>\n<tr class=\"separator:aca649d2fe5fff4af41971c73edca2e1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab5319d20339ecf03164380c91dbbdb33\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html#ab5319d20339ecf03164380c91dbbdb33\">end_adv</a></td></tr>\n<tr class=\"separator:ab5319d20339ecf03164380c91dbbdb33\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a3372ad996c67ffcf0bcd0099498981c7\" name=\"a3372ad996c67ffcf0bcd0099498981c7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3372ad996c67ffcf0bcd0099498981c7\">&#9670;&nbsp;</a></span>begin</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::begin</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a699ad631d7655c390f9271d1d3fd1cc5\" name=\"a699ad631d7655c390f9271d1d3fd1cc5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a699ad631d7655c390f9271d1d3fd1cc5\">&#9670;&nbsp;</a></span>begin_adv</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::Scanline::begin_adv</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3802a9a9b40e56ec27089ffbdda2be16\" name=\"a3802a9a9b40e56ec27089ffbdda2be16\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3802a9a9b40e56ec27089ffbdda2be16\">&#9670;&nbsp;</a></span>begin_p0</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::begin_p0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac943df2f987544ca5bc87a5b2ff17334\" name=\"ac943df2f987544ca5bc87a5b2ff17334\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac943df2f987544ca5bc87a5b2ff17334\">&#9670;&nbsp;</a></span>begin_p1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::begin_p1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4d94aa4b204cb90a9455e131a24e3909\" name=\"a4d94aa4b204cb90a9455e131a24e3909\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d94aa4b204cb90a9455e131a24e3909\">&#9670;&nbsp;</a></span>end</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::end</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab5319d20339ecf03164380c91dbbdb33\" name=\"ab5319d20339ecf03164380c91dbbdb33\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5319d20339ecf03164380c91dbbdb33\">&#9670;&nbsp;</a></span>end_adv</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::Scanline::end_adv</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa91f1dea5fe7fb9dd33fd4f0533bfc49\" name=\"aa91f1dea5fe7fb9dd33fd4f0533bfc49\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa91f1dea5fe7fb9dd33fd4f0533bfc49\">&#9670;&nbsp;</a></span>end_p0</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::end_p0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aca649d2fe5fff4af41971c73edca2e1c\" name=\"aca649d2fe5fff4af41971c73edca2e1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca649d2fe5fff4af41971c73edca2e1c\">&#9670;&nbsp;</a></span>end_p1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::API::Scanline::end_p1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ScanlineBuffer Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">tram::Render::API::ScanlineBuffer</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169\">scanline_length</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">tram::Render::API::ScanlineBuffer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019\">scanlines</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">tram::Render::API::ScanlineBuffer</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373\">start_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">tram::Render::API::ScanlineBuffer</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ScanlineBuffer Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html\">ScanlineBuffer</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ScanlineBuffer Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a19c45e4651ead4e492155c6392ea5019\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a19c45e4651ead4e492155c6392ea5019\">scanlines</a> [1000]</td></tr>\n<tr class=\"separator:a19c45e4651ead4e492155c6392ea5019\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1b58e3c8b743fa7395633e6f1dfc2169\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a1b58e3c8b743fa7395633e6f1dfc2169\">scanline_length</a> = 0</td></tr>\n<tr class=\"separator:a1b58e3c8b743fa7395633e6f1dfc2169\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f182b42c73e158605f8eb2c0a0ca373\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline_buffer.html#a5f182b42c73e158605f8eb2c0a0ca373\">start_y</a> = 0</td></tr>\n<tr class=\"separator:a5f182b42c73e158605f8eb2c0a0ca373\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a1b58e3c8b743fa7395633e6f1dfc2169\" name=\"a1b58e3c8b743fa7395633e6f1dfc2169\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b58e3c8b743fa7395633e6f1dfc2169\">&#9670;&nbsp;</a></span>scanline_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::ScanlineBuffer::scanline_length = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a19c45e4651ead4e492155c6392ea5019\" name=\"a19c45e4651ead4e492155c6392ea5019\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19c45e4651ead4e492155c6392ea5019\">&#9670;&nbsp;</a></span>scanlines</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_scanline.html\">Scanline</a> tram::Render::API::ScanlineBuffer::scanlines[1000]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f182b42c73e158605f8eb2c0a0ca373\" name=\"a5f182b42c73e158605f8eb2c0a0ca373\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f182b42c73e158605f8eb2c0a0ca373\">&#9670;&nbsp;</a></span>start_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::API::ScanlineBuffer::start_y = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ShaderUniformMatrices Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2\">projection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26\">view</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf\">view_pos</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">tram::Render::API::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ShaderUniformMatrices Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ShaderUniformMatrices Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a392cd9d354cb1ca50b9cbde197f687a2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a392cd9d354cb1ca50b9cbde197f687a2\">projection</a></td></tr>\n<tr class=\"separator:a392cd9d354cb1ca50b9cbde197f687a2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7251aa6f10820a419a8927fc4bdebf26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26\">view</a></td></tr>\n<tr class=\"memdesc:a7251aa6f10820a419a8927fc4bdebf26\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projection matrix.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a7251aa6f10820a419a8927fc4bdebf26\">More...</a><br /></td></tr>\n<tr class=\"separator:a7251aa6f10820a419a8927fc4bdebf26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad95d2f70b74eb3b43089224555935caf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf\">view_pos</a></td></tr>\n<tr class=\"memdesc:ad95d2f70b74eb3b43089224555935caf\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">View matrix.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#ad95d2f70b74eb3b43089224555935caf\">More...</a><br /></td></tr>\n<tr class=\"separator:ad95d2f70b74eb3b43089224555935caf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0caf5926243d94dddc492057c25363cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_matrices.html#a0caf5926243d94dddc492057c25363cf\">padding</a></td></tr>\n<tr class=\"separator:a0caf5926243d94dddc492057c25363cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0caf5926243d94dddc492057c25363cf\" name=\"a0caf5926243d94dddc492057c25363cf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0caf5926243d94dddc492057c25363cf\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::ShaderUniformMatrices::padding</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a392cd9d354cb1ca50b9cbde197f687a2\" name=\"a392cd9d354cb1ca50b9cbde197f687a2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a392cd9d354cb1ca50b9cbde197f687a2\">&#9670;&nbsp;</a></span>projection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::ShaderUniformMatrices::projection</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7251aa6f10820a419a8927fc4bdebf26\" name=\"a7251aa6f10820a419a8927fc4bdebf26\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7251aa6f10820a419a8927fc4bdebf26\">&#9670;&nbsp;</a></span>view</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::ShaderUniformMatrices::view</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Projection matrix. </p>\n\n</div>\n</div>\n<a id=\"ad95d2f70b74eb3b43089224555935caf\" name=\"ad95d2f70b74eb3b43089224555935caf\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad95d2f70b74eb3b43089224555935caf\">&#9670;&nbsp;</a></span>view_pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::ShaderUniformMatrices::view_pos</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>View matrix. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ShaderUniformModelMatrices Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436\">ambientColor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7\">colors</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d\">l00</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd\">l10</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a\">l11</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6\">l1m1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb\">l20</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316\">l21</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a\">l22</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a\">l2m1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff\">l2m2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9\">modelLights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5\">screenHeight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2\">screenWidth</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b\">specular</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718\">sunColor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe\">sunDirection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d\">sunWeight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711\">texture_transforms</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">tram::Render::API::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::ShaderUniformModelMatrices Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::ShaderUniformModelMatrices Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a4282d72e8b3c644febb6531d275854ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a4282d72e8b3c644febb6531d275854ce\">model</a></td></tr>\n<tr class=\"separator:a4282d72e8b3c644febb6531d275854ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a466d03b2582d755052fec416d5b41ed9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">uvec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9\">modelLights</a></td></tr>\n<tr class=\"memdesc:a466d03b2582d755052fec416d5b41ed9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> -&gt; world space matrix. Rotates and translates vertices from how they are defined in the model to where they will appear in the world.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a466d03b2582d755052fec416d5b41ed9\">More...</a><br /></td></tr>\n<tr class=\"separator:a466d03b2582d755052fec416d5b41ed9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acfdaa66e9dfe4c104bc5e7dba81d98fe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe\">sunDirection</a></td></tr>\n<tr class=\"memdesc:acfdaa66e9dfe4c104bc5e7dba81d98fe\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Indices for lights in the light list. The shader will use these 4 indices to determine with which lights the model should be lit up.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#acfdaa66e9dfe4c104bc5e7dba81d98fe\">More...</a><br /></td></tr>\n<tr class=\"separator:acfdaa66e9dfe4c104bc5e7dba81d98fe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa6fbe14bdb769a5454cba00b17f66718\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718\">sunColor</a></td></tr>\n<tr class=\"memdesc:aa6fbe14bdb769a5454cba00b17f66718\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Normalized vector. Sunlight direction.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aa6fbe14bdb769a5454cba00b17f66718\">More...</a><br /></td></tr>\n<tr class=\"separator:aa6fbe14bdb769a5454cba00b17f66718\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abbdd547abac3fec00f41c6fbf3879436\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436\">ambientColor</a></td></tr>\n<tr class=\"memdesc:abbdd547abac3fec00f41c6fbf3879436\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sunlight color.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#abbdd547abac3fec00f41c6fbf3879436\">More...</a><br /></td></tr>\n<tr class=\"separator:abbdd547abac3fec00f41c6fbf3879436\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab38766b73e84418db17ba19afabb6d39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39\">time</a></td></tr>\n<tr class=\"memdesc:ab38766b73e84418db17ba19afabb6d39\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Shadow color.  <a href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ab38766b73e84418db17ba19afabb6d39\">More...</a><br /></td></tr>\n<tr class=\"separator:ab38766b73e84418db17ba19afabb6d39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaf90895edcb47ffbbe0190184358ad6d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aaf90895edcb47ffbbe0190184358ad6d\">sunWeight</a></td></tr>\n<tr class=\"separator:aaf90895edcb47ffbbe0190184358ad6d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e39494459b73be83dfbeef16e5775d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a8e39494459b73be83dfbeef16e5775d2\">screenWidth</a></td></tr>\n<tr class=\"separator:a8e39494459b73be83dfbeef16e5775d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a989f62e254b867c662ead69c0fe6bbe5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a989f62e254b867c662ead69c0fe6bbe5\">screenHeight</a></td></tr>\n<tr class=\"separator:a989f62e254b867c662ead69c0fe6bbe5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a65ce88387a56b47a03820d4c69aa38f7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a65ce88387a56b47a03820d4c69aa38f7\">colors</a> [15]</td></tr>\n<tr class=\"separator:a65ce88387a56b47a03820d4c69aa38f7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5894b06241aa52b860a8d73d8c3c526b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a5894b06241aa52b860a8d73d8c3c526b\">specular</a> [15]</td></tr>\n<tr class=\"separator:a5894b06241aa52b860a8d73d8c3c526b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7f6207739a1721d96706eeb5b263b711\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a7f6207739a1721d96706eeb5b263b711\">texture_transforms</a> [15]</td></tr>\n<tr class=\"separator:a7f6207739a1721d96706eeb5b263b711\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af95ce39082aca3d3b042baf2d557026d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#af95ce39082aca3d3b042baf2d557026d\">l00</a></td></tr>\n<tr class=\"separator:af95ce39082aca3d3b042baf2d557026d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd6502029f8f67602ccea8590d5a04b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#afd6502029f8f67602ccea8590d5a04b6\">l1m1</a></td></tr>\n<tr class=\"separator:afd6502029f8f67602ccea8590d5a04b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad6eb45bf4538c03eb0feb42dabb711dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad6eb45bf4538c03eb0feb42dabb711dd\">l10</a></td></tr>\n<tr class=\"separator:ad6eb45bf4538c03eb0feb42dabb711dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a000c1b753af3925ea749caf983a6933a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a000c1b753af3925ea749caf983a6933a\">l11</a></td></tr>\n<tr class=\"separator:a000c1b753af3925ea749caf983a6933a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fa948a1fffff9cfe0007da4edb0e3ff\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a6fa948a1fffff9cfe0007da4edb0e3ff\">l2m2</a></td></tr>\n<tr class=\"separator:a6fa948a1fffff9cfe0007da4edb0e3ff\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2eb22be8a185c17e85dc12a42a55e0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ae2eb22be8a185c17e85dc12a42a55e0a\">l2m1</a></td></tr>\n<tr class=\"separator:ae2eb22be8a185c17e85dc12a42a55e0a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad072a1d1260143d7540ccee58dae20eb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#ad072a1d1260143d7540ccee58dae20eb\">l20</a></td></tr>\n<tr class=\"separator:ad072a1d1260143d7540ccee58dae20eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aba2e8aa574479f3238defdda372fb316\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#aba2e8aa574479f3238defdda372fb316\">l21</a></td></tr>\n<tr class=\"separator:aba2e8aa574479f3238defdda372fb316\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a848095a6e0880c5988c75ecce810213a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_shader_uniform_model_matrices.html#a848095a6e0880c5988c75ecce810213a\">l22</a></td></tr>\n<tr class=\"separator:a848095a6e0880c5988c75ecce810213a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abbdd547abac3fec00f41c6fbf3879436\" name=\"abbdd547abac3fec00f41c6fbf3879436\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbdd547abac3fec00f41c6fbf3879436\">&#9670;&nbsp;</a></span>ambientColor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::ambientColor</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sunlight color. </p>\n\n</div>\n</div>\n<a id=\"a65ce88387a56b47a03820d4c69aa38f7\" name=\"a65ce88387a56b47a03820d4c69aa38f7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65ce88387a56b47a03820d4c69aa38f7\">&#9670;&nbsp;</a></span>colors</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::colors[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af95ce39082aca3d3b042baf2d557026d\" name=\"af95ce39082aca3d3b042baf2d557026d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af95ce39082aca3d3b042baf2d557026d\">&#9670;&nbsp;</a></span>l00</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l00</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad6eb45bf4538c03eb0feb42dabb711dd\" name=\"ad6eb45bf4538c03eb0feb42dabb711dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6eb45bf4538c03eb0feb42dabb711dd\">&#9670;&nbsp;</a></span>l10</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a000c1b753af3925ea749caf983a6933a\" name=\"a000c1b753af3925ea749caf983a6933a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a000c1b753af3925ea749caf983a6933a\">&#9670;&nbsp;</a></span>l11</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l11</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"afd6502029f8f67602ccea8590d5a04b6\" name=\"afd6502029f8f67602ccea8590d5a04b6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd6502029f8f67602ccea8590d5a04b6\">&#9670;&nbsp;</a></span>l1m1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l1m1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad072a1d1260143d7540ccee58dae20eb\" name=\"ad072a1d1260143d7540ccee58dae20eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad072a1d1260143d7540ccee58dae20eb\">&#9670;&nbsp;</a></span>l20</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aba2e8aa574479f3238defdda372fb316\" name=\"aba2e8aa574479f3238defdda372fb316\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba2e8aa574479f3238defdda372fb316\">&#9670;&nbsp;</a></span>l21</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l21</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a848095a6e0880c5988c75ecce810213a\" name=\"a848095a6e0880c5988c75ecce810213a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a848095a6e0880c5988c75ecce810213a\">&#9670;&nbsp;</a></span>l22</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l22</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2eb22be8a185c17e85dc12a42a55e0a\" name=\"ae2eb22be8a185c17e85dc12a42a55e0a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2eb22be8a185c17e85dc12a42a55e0a\">&#9670;&nbsp;</a></span>l2m1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l2m1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6fa948a1fffff9cfe0007da4edb0e3ff\" name=\"a6fa948a1fffff9cfe0007da4edb0e3ff\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fa948a1fffff9cfe0007da4edb0e3ff\">&#9670;&nbsp;</a></span>l2m2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::l2m2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4282d72e8b3c644febb6531d275854ce\" name=\"a4282d72e8b3c644febb6531d275854ce\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4282d72e8b3c644febb6531d275854ce\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::API::ShaderUniformModelMatrices::model</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a466d03b2582d755052fec416d5b41ed9\" name=\"a466d03b2582d755052fec416d5b41ed9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a466d03b2582d755052fec416d5b41ed9\">&#9670;&nbsp;</a></span>modelLights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ac9bd3cda50ab2180695b6e4bc8bddb74\">uvec4</a> tram::Render::API::ShaderUniformModelMatrices::modelLights</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> -&gt; world space matrix. Rotates and translates vertices from how they are defined in the model to where they will appear in the world. </p>\n\n</div>\n</div>\n<a id=\"a989f62e254b867c662ead69c0fe6bbe5\" name=\"a989f62e254b867c662ead69c0fe6bbe5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a989f62e254b867c662ead69c0fe6bbe5\">&#9670;&nbsp;</a></span>screenHeight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::ShaderUniformModelMatrices::screenHeight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8e39494459b73be83dfbeef16e5775d2\" name=\"a8e39494459b73be83dfbeef16e5775d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e39494459b73be83dfbeef16e5775d2\">&#9670;&nbsp;</a></span>screenWidth</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::ShaderUniformModelMatrices::screenWidth</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5894b06241aa52b860a8d73d8c3c526b\" name=\"a5894b06241aa52b860a8d73d8c3c526b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5894b06241aa52b860a8d73d8c3c526b\">&#9670;&nbsp;</a></span>specular</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::specular[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa6fbe14bdb769a5454cba00b17f66718\" name=\"aa6fbe14bdb769a5454cba00b17f66718\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6fbe14bdb769a5454cba00b17f66718\">&#9670;&nbsp;</a></span>sunColor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::sunColor</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Normalized vector. Sunlight direction. </p>\n\n</div>\n</div>\n<a id=\"acfdaa66e9dfe4c104bc5e7dba81d98fe\" name=\"acfdaa66e9dfe4c104bc5e7dba81d98fe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfdaa66e9dfe4c104bc5e7dba81d98fe\">&#9670;&nbsp;</a></span>sunDirection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::sunDirection</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Indices for lights in the light list. The shader will use these 4 indices to determine with which lights the model should be lit up. </p>\n\n</div>\n</div>\n<a id=\"aaf90895edcb47ffbbe0190184358ad6d\" name=\"aaf90895edcb47ffbbe0190184358ad6d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf90895edcb47ffbbe0190184358ad6d\">&#9670;&nbsp;</a></span>sunWeight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::ShaderUniformModelMatrices::sunWeight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7f6207739a1721d96706eeb5b263b711\" name=\"a7f6207739a1721d96706eeb5b263b711\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f6207739a1721d96706eeb5b263b711\">&#9670;&nbsp;</a></span>texture_transforms</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::API::ShaderUniformModelMatrices::texture_transforms[15]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab38766b73e84418db17ba19afabb6d39\" name=\"ab38766b73e84418db17ba19afabb6d39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab38766b73e84418db17ba19afabb6d39\">&#9670;&nbsp;</a></span>time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::ShaderUniformModelMatrices::time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Shadow color. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_static_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">StaticVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::StaticVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84\">lit</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189\">lit_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19\">lit_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124\">nrm</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd\">nrm_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686\">nrm_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910\">nrm_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521\">pos</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2\">pos_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6\">pos_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93\">pos_z</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be\">tex</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5\">tex_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9\">tex_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">tram::Render::API::StaticVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::StaticVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html\">StaticVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::StaticVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab7fad3a06c395b99809f8957e73e4cc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ab7fad3a06c395b99809f8957e73e4cc2\">pos_x</a></td></tr>\n<tr class=\"separator:ab7fad3a06c395b99809f8957e73e4cc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4aec6b58286bda99e48c539f5b273ca6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a4aec6b58286bda99e48c539f5b273ca6\">pos_y</a></td></tr>\n<tr class=\"separator:a4aec6b58286bda99e48c539f5b273ca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a483db60e761add751c3b23e81bedcb93\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a483db60e761add751c3b23e81bedcb93\">pos_z</a></td></tr>\n<tr class=\"separator:a483db60e761add751c3b23e81bedcb93\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae979b200874e1c01a4527b4f1164d8dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ae979b200874e1c01a4527b4f1164d8dd\">nrm_x</a></td></tr>\n<tr class=\"separator:ae979b200874e1c01a4527b4f1164d8dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a82764d3aeda76e41829894da5c73c686\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a82764d3aeda76e41829894da5c73c686\">nrm_y</a></td></tr>\n<tr class=\"separator:a82764d3aeda76e41829894da5c73c686\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a334cd02aa75a7460392752076ce9b910\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a334cd02aa75a7460392752076ce9b910\">nrm_z</a></td></tr>\n<tr class=\"separator:a334cd02aa75a7460392752076ce9b910\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add3d074d339900d6e0484f32a21530e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#add3d074d339900d6e0484f32a21530e5\">tex_x</a></td></tr>\n<tr class=\"separator:add3d074d339900d6e0484f32a21530e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2f7ff3ae59f5008deb76ecb7b4ffb6d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a2f7ff3ae59f5008deb76ecb7b4ffb6d9\">tex_y</a></td></tr>\n<tr class=\"separator:a2f7ff3ae59f5008deb76ecb7b4ffb6d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a53eed8281dac3f4bed2ede27d0954189\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a53eed8281dac3f4bed2ede27d0954189\">lit_x</a></td></tr>\n<tr class=\"separator:a53eed8281dac3f4bed2ede27d0954189\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac62101b4f1d1623067501c1fd21c0e19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#ac62101b4f1d1623067501c1fd21c0e19\">lit_y</a></td></tr>\n<tr class=\"separator:ac62101b4f1d1623067501c1fd21c0e19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a121754a2c7e31faab70e3d3f64e11521\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a121754a2c7e31faab70e3d3f64e11521\">pos</a></td></tr>\n<tr class=\"separator:a121754a2c7e31faab70e3d3f64e11521\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a688746f8f14a10efc891cf21050a8124\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a688746f8f14a10efc891cf21050a8124\">nrm</a></td></tr>\n<tr class=\"separator:a688746f8f14a10efc891cf21050a8124\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a24707e6d30a0f70142d473bddba876be\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a24707e6d30a0f70142d473bddba876be\">tex</a></td></tr>\n<tr class=\"separator:a24707e6d30a0f70142d473bddba876be\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0859b3baf93722d9d62189c3647e6f84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_static_vertex.html#a0859b3baf93722d9d62189c3647e6f84\">lit</a></td></tr>\n<tr class=\"separator:a0859b3baf93722d9d62189c3647e6f84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0859b3baf93722d9d62189c3647e6f84\" name=\"a0859b3baf93722d9d62189c3647e6f84\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0859b3baf93722d9d62189c3647e6f84\">&#9670;&nbsp;</a></span>lit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::API::StaticVertex::lit</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a53eed8281dac3f4bed2ede27d0954189\" name=\"a53eed8281dac3f4bed2ede27d0954189\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53eed8281dac3f4bed2ede27d0954189\">&#9670;&nbsp;</a></span>lit_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::lit_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac62101b4f1d1623067501c1fd21c0e19\" name=\"ac62101b4f1d1623067501c1fd21c0e19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac62101b4f1d1623067501c1fd21c0e19\">&#9670;&nbsp;</a></span>lit_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::lit_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a688746f8f14a10efc891cf21050a8124\" name=\"a688746f8f14a10efc891cf21050a8124\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a688746f8f14a10efc891cf21050a8124\">&#9670;&nbsp;</a></span>nrm</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::StaticVertex::nrm</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae979b200874e1c01a4527b4f1164d8dd\" name=\"ae979b200874e1c01a4527b4f1164d8dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae979b200874e1c01a4527b4f1164d8dd\">&#9670;&nbsp;</a></span>nrm_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::nrm_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a82764d3aeda76e41829894da5c73c686\" name=\"a82764d3aeda76e41829894da5c73c686\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82764d3aeda76e41829894da5c73c686\">&#9670;&nbsp;</a></span>nrm_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::nrm_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a334cd02aa75a7460392752076ce9b910\" name=\"a334cd02aa75a7460392752076ce9b910\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a334cd02aa75a7460392752076ce9b910\">&#9670;&nbsp;</a></span>nrm_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::nrm_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a121754a2c7e31faab70e3d3f64e11521\" name=\"a121754a2c7e31faab70e3d3f64e11521\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a121754a2c7e31faab70e3d3f64e11521\">&#9670;&nbsp;</a></span>pos</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::API::StaticVertex::pos</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab7fad3a06c395b99809f8957e73e4cc2\" name=\"ab7fad3a06c395b99809f8957e73e4cc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7fad3a06c395b99809f8957e73e4cc2\">&#9670;&nbsp;</a></span>pos_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::pos_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4aec6b58286bda99e48c539f5b273ca6\" name=\"a4aec6b58286bda99e48c539f5b273ca6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4aec6b58286bda99e48c539f5b273ca6\">&#9670;&nbsp;</a></span>pos_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::pos_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a483db60e761add751c3b23e81bedcb93\" name=\"a483db60e761add751c3b23e81bedcb93\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a483db60e761add751c3b23e81bedcb93\">&#9670;&nbsp;</a></span>pos_z</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::pos_z</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a24707e6d30a0f70142d473bddba876be\" name=\"a24707e6d30a0f70142d473bddba876be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24707e6d30a0f70142d473bddba876be\">&#9670;&nbsp;</a></span>tex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::API::StaticVertex::tex</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add3d074d339900d6e0484f32a21530e5\" name=\"add3d074d339900d6e0484f32a21530e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add3d074d339900d6e0484f32a21530e5\">&#9670;&nbsp;</a></span>tex_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::tex_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2f7ff3ae59f5008deb76ecb7b4ffb6d9\" name=\"a2f7ff3ae59f5008deb76ecb7b4ffb6d9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f7ff3ae59f5008deb76ecb7b4ffb6d9\">&#9670;&nbsp;</a></span>tex_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::API::StaticVertex::tex_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/software/<a class=\"el\" href=\"software_8cpp.html\">software.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexBufferMetadata Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246\">allocated_vertex_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706\">current_vertex_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee\">fvf</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64\">vertex_format</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">tram::Render::API::VertexBufferMetadata</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::VertexBufferMetadata Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html\">VertexBufferMetadata</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexBufferMetadata Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a03f717cdd3ef607182b8a4865d1c7d64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a03f717cdd3ef607182b8a4865d1c7d64\">vertex_format</a></td></tr>\n<tr class=\"separator:a03f717cdd3ef607182b8a4865d1c7d64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa5759a20251376053ea53b5b51efedee\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">DWORD&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#aa5759a20251376053ea53b5b51efedee\">fvf</a></td></tr>\n<tr class=\"separator:aa5759a20251376053ea53b5b51efedee\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6f0ee162005ad6d33c0209241cce706\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#ae6f0ee162005ad6d33c0209241cce706\">current_vertex_count</a></td></tr>\n<tr class=\"separator:ae6f0ee162005ad6d33c0209241cce706\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a05b3e968c350358dc7309eeb7cd76246\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_buffer_metadata.html#a05b3e968c350358dc7309eeb7cd76246\">allocated_vertex_count</a></td></tr>\n<tr class=\"separator:a05b3e968c350358dc7309eeb7cd76246\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a05b3e968c350358dc7309eeb7cd76246\" name=\"a05b3e968c350358dc7309eeb7cd76246\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a05b3e968c350358dc7309eeb7cd76246\">&#9670;&nbsp;</a></span>allocated_vertex_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::API::VertexBufferMetadata::allocated_vertex_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae6f0ee162005ad6d33c0209241cce706\" name=\"ae6f0ee162005ad6d33c0209241cce706\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6f0ee162005ad6d33c0209241cce706\">&#9670;&nbsp;</a></span>current_vertex_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::API::VertexBufferMetadata::current_vertex_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa5759a20251376053ea53b5b51efedee\" name=\"aa5759a20251376053ea53b5b51efedee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa5759a20251376053ea53b5b51efedee\">&#9670;&nbsp;</a></span>fvf</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">DWORD tram::Render::API::VertexBufferMetadata::fvf</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a03f717cdd3ef607182b8a4865d1c7d64\" name=\"a03f717cdd3ef607182b8a4865d1c7d64\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03f717cdd3ef607182b8a4865d1c7d64\">&#9670;&nbsp;</a></span>vertex_format</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> tram::Render::API::VertexBufferMetadata::vertex_format</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/direct3d/<a class=\"el\" href=\"direct3d_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a000eb0081104b99c6be6c8e07ccfbf13\">compiled_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#aa4247593df0862a9d7011535fc3befa8\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">tram::Render::API::VertexShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::API::VertexShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">API</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::API::VertexShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aa4247593df0862a9d7011535fc3befa8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#aa4247593df0862a9d7011535fc3befa8\">name</a></td></tr>\n<tr class=\"separator:aa4247593df0862a9d7011535fc3befa8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a000eb0081104b99c6be6c8e07ccfbf13\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_vertex_shader.html#a000eb0081104b99c6be6c8e07ccfbf13\">compiled_shader</a></td></tr>\n<tr class=\"separator:a000eb0081104b99c6be6c8e07ccfbf13\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a000eb0081104b99c6be6c8e07ccfbf13\" name=\"a000eb0081104b99c6be6c8e07ccfbf13\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a000eb0081104b99c6be6c8e07ccfbf13\">&#9670;&nbsp;</a></span>compiled_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::API::VertexShader::compiled_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4247593df0862a9d7011535fc3befa8\" name=\"aa4247593df0862a9d7011535fc3befa8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4247593df0862a9d7011535fc3befa8\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::API::VertexShader::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_bone-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Bone Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">head</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">parent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">roll</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tail</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">tram::Render::Bone</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_bone.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Bone Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\">Bone</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_bone-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Bone Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton.  \n <a href=\"structtram_1_1_render_1_1_bone.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">render/animation.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab98135b9d804b337b5415c5ca1462e84\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">name</a></td></tr>\n<tr class=\"memdesc:ab98135b9d804b337b5415c5ca1462e84\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Unique identifier for the bone.  <a href=\"structtram_1_1_render_1_1_bone.html#ab98135b9d804b337b5415c5ca1462e84\">More...</a><br /></td></tr>\n<tr class=\"separator:ab98135b9d804b337b5415c5ca1462e84\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa35e3897afb1d7c407ce7b85251742e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">parent</a> = -1</td></tr>\n<tr class=\"memdesc:aa35e3897afb1d7c407ce7b85251742e3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Parent index of the bone.  <a href=\"structtram_1_1_render_1_1_bone.html#aa35e3897afb1d7c407ce7b85251742e3\">More...</a><br /></td></tr>\n<tr class=\"separator:aa35e3897afb1d7c407ce7b85251742e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3620af03d2adb4b04f0e1c9e1648800\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">head</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"memdesc:ae3620af03d2adb4b04f0e1c9e1648800\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Origin of the bone.  <a href=\"structtram_1_1_render_1_1_bone.html#ae3620af03d2adb4b04f0e1c9e1648800\">More...</a><br /></td></tr>\n<tr class=\"separator:ae3620af03d2adb4b04f0e1c9e1648800\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeb360901af3cd399664d42fc7f45b621\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">tail</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"memdesc:aeb360901af3cd399664d42fc7f45b621\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Direction of the bone.  <a href=\"structtram_1_1_render_1_1_bone.html#aeb360901af3cd399664d42fc7f45b621\">More...</a><br /></td></tr>\n<tr class=\"separator:aeb360901af3cd399664d42fc7f45b621\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2233872a355e1400ec15d418addceba9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">roll</a> = 0.0f</td></tr>\n<tr class=\"memdesc:a2233872a355e1400ec15d418addceba9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rotation of the bone.  <a href=\"structtram_1_1_render_1_1_bone.html#a2233872a355e1400ec15d418addceba9\">More...</a><br /></td></tr>\n<tr class=\"separator:a2233872a355e1400ec15d418addceba9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"structtram_1_1_render_1_1_bone.html\" title=\"Bone for a 3D models skeleton.\">Bone</a> for a 3D models skeleton. </p>\n<p >The name property identifies a bone and is referenced in animations. The parent property is used to construct the skeletal hierarchy. The head, tail and roll properties are used to construct the bone's local space within the local space of the 3D model. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae3620af03d2adb4b04f0e1c9e1648800\" name=\"ae3620af03d2adb4b04f0e1c9e1648800\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3620af03d2adb4b04f0e1c9e1648800\">&#9670;&nbsp;</a></span>head</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Bone::head = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Origin of the bone. </p>\n<p >Position in model space. The bone will rotate and scale around this point. </p>\n\n</div>\n</div>\n<a id=\"ab98135b9d804b337b5415c5ca1462e84\" name=\"ab98135b9d804b337b5415c5ca1462e84\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab98135b9d804b337b5415c5ca1462e84\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Bone::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Unique identifier for the bone. </p>\n<p >Must be unique in the context of a skeleton. This name is how <a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" title=\"Skeletal animation for a 3D model.\">Animation</a> keyframes will reference the bone. </p>\n\n</div>\n</div>\n<a id=\"aa35e3897afb1d7c407ce7b85251742e3\" name=\"aa35e3897afb1d7c407ce7b85251742e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa35e3897afb1d7c407ce7b85251742e3\">&#9670;&nbsp;</a></span>parent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Bone::parent = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Parent index of the bone. </p>\n<p >This index is in the context of a skeleton. If set to an index of some other bone, this bone will move together with the parent bone. Can be set to <code>-1</code> if you don't want the bone to move with any other bone, and instead want it to move with the models origin or for bones with no parents, i.e. root bones. </p>\n\n</div>\n</div>\n<a id=\"a2233872a355e1400ec15d418addceba9\" name=\"a2233872a355e1400ec15d418addceba9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2233872a355e1400ec15d418addceba9\">&#9670;&nbsp;</a></span>roll</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Bone::roll = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Rotation of the bone. </p>\n<p >Determines the rotation of the bone around its <code>z</code> axis. This is used to determine in which direction the <code>x</code> and <code>y</code> axis of the bone local space will be pointing in.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" title=\"Skeletal animation for a 3D model.\">tram::Render::Animation</a> </dd>\n<dd>\n<a href=\"https://racenis.github.io/tram-sdk/documentation/render/animation.html\">https://racenis.github.io/tram-sdk/documentation/render/animation.html</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"aeb360901af3cd399664d42fc7f45b621\" name=\"aeb360901af3cd399664d42fc7f45b621\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb360901af3cd399664d42fc7f45b621\">&#9670;&nbsp;</a></span>tail</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Bone::tail = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Direction of the bone. </p>\n<p >Position in model space. The vector going from the head of the bone to the tail of the bone will be used as the <code>z</code> axis of the bone. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8cpp.html\">animation.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_bucket_mapping-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">BucketMapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::BucketMapping Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">tram::Render::BucketMapping</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8\">bucket</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">tram::Render::BucketMapping</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95\">index_in_bucket</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">tram::Render::BucketMapping</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_bucket_mapping.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::BucketMapping Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html\">BucketMapping</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_bucket_mapping-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::BucketMapping Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a933815398d8912dd7b24d70fbe88a0d8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#a933815398d8912dd7b24d70fbe88a0d8\">bucket</a> = -1</td></tr>\n<tr class=\"separator:a933815398d8912dd7b24d70fbe88a0d8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aac8991fd658ce5b7c20f4bd8c07d7a95\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_bucket_mapping.html#aac8991fd658ce5b7c20f4bd8c07d7a95\">index_in_bucket</a> = -1</td></tr>\n<tr class=\"separator:aac8991fd658ce5b7c20f4bd8c07d7a95\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a933815398d8912dd7b24d70fbe88a0d8\" name=\"a933815398d8912dd7b24d70fbe88a0d8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a933815398d8912dd7b24d70fbe88a0d8\">&#9670;&nbsp;</a></span>bucket</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::BucketMapping::bucket = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aac8991fd658ce5b7c20f4bd8c07d7a95\" name=\"aac8991fd658ce5b7c20f4bd8c07d7a95\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac8991fd658ce5b7c20f4bd8c07d7a95\">&#9670;&nbsp;</a></span>index_in_bucket</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t tram::Render::BucketMapping::index_in_bucket = -1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8cpp.html\">model.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_dynamic_model_data-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">DynamicModelData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::DynamicModelData Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">groups</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">indices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">vertices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_dynamic_model_data.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::DynamicModelData Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">DynamicModelData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_dynamic_model_data-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::DynamicModelData Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::DynamicModelData:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_render_1_1_dynamic_model_data.png\" usemap=\"#tram::Render::DynamicModelData_map\" alt=\"\"/>\n  <map id=\"tram::Render::DynamicModelData_map\" name=\"tram::Render::DynamicModelData_map\">\n<area href=\"structtram_1_1_render_1_1_model_data.html\" alt=\"tram::Render::ModelData\" shape=\"rect\" coords=\"0,0,199,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a95478c605a0c584ac6710fb1cc79c473\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">vertices</a></td></tr>\n<tr class=\"separator:a95478c605a0c584ac6710fb1cc79c473\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1035c833b573784ed658754feb0b7c17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">indices</a></td></tr>\n<tr class=\"separator:a1035c833b573784ed658754feb0b7c17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab12ffc9bc3a25b66d24b120f4563f1b3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">groups</a></td></tr>\n<tr class=\"separator:ab12ffc9bc3a25b66d24b120f4563f1b3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab12ffc9bc3a25b66d24b120f4563f1b3\" name=\"ab12ffc9bc3a25b66d24b120f4563f1b3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab12ffc9bc3a25b66d24b120f4563f1b3\">&#9670;&nbsp;</a></span>groups</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a>&gt; tram::Render::DynamicModelData::groups</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1035c833b573784ed658754feb0b7c17\" name=\"a1035c833b573784ed658754feb0b7c17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1035c833b573784ed658754feb0b7c17\">&#9670;&nbsp;</a></span>indices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a>&gt; tram::Render::DynamicModelData::indices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a95478c605a0c584ac6710fb1cc79c473\" name=\"a95478c605a0c584ac6710fb1cc79c473\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95478c605a0c584ac6710fb1cc79c473\">&#9670;&nbsp;</a></span>vertices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a>&gt; tram::Render::DynamicModelData::vertices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_dynamic_model_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::DynamicModelVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">bone</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">boneweight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">co</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tex</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_dynamic_model_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::DynamicModelVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_dynamic_model_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::DynamicModelVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abe2dcd54a8992ee1eb86927943ec84d4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">co</a></td></tr>\n<tr class=\"separator:abe2dcd54a8992ee1eb86927943ec84d4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae360db7530c291cdcb6464a083824520\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">normal</a></td></tr>\n<tr class=\"separator:ae360db7530c291cdcb6464a083824520\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20afebb7b239ed53a388bb53e32d9cf9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tex</a></td></tr>\n<tr class=\"separator:a20afebb7b239ed53a388bb53e32d9cf9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14eec60b6751efb3a18233b51b09d874\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">bone</a></td></tr>\n<tr class=\"separator:a14eec60b6751efb3a18233b51b09d874\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2dede085a14ed82c933ed72e555d2fb2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">boneweight</a></td></tr>\n<tr class=\"separator:a2dede085a14ed82c933ed72e555d2fb2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72c02c5037cf0f6f2fc3b7a843c3a1e3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">texture</a></td></tr>\n<tr class=\"separator:a72c02c5037cf0f6f2fc3b7a843c3a1e3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a14eec60b6751efb3a18233b51b09d874\" name=\"a14eec60b6751efb3a18233b51b09d874\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14eec60b6751efb3a18233b51b09d874\">&#9670;&nbsp;</a></span>bone</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a> tram::Render::DynamicModelVertex::bone</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2dede085a14ed82c933ed72e555d2fb2\" name=\"a2dede085a14ed82c933ed72e555d2fb2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2dede085a14ed82c933ed72e555d2fb2\">&#9670;&nbsp;</a></span>boneweight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> tram::Render::DynamicModelVertex::boneweight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abe2dcd54a8992ee1eb86927943ec84d4\" name=\"abe2dcd54a8992ee1eb86927943ec84d4\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe2dcd54a8992ee1eb86927943ec84d4\">&#9670;&nbsp;</a></span>co</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::DynamicModelVertex::co</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae360db7530c291cdcb6464a083824520\" name=\"ae360db7530c291cdcb6464a083824520\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae360db7530c291cdcb6464a083824520\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::DynamicModelVertex::normal</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a20afebb7b239ed53a388bb53e32d9cf9\" name=\"a20afebb7b239ed53a388bb53e32d9cf9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20afebb7b239ed53a388bb53e32d9cf9\">&#9670;&nbsp;</a></span>tex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::DynamicModelVertex::tex</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a72c02c5037cf0f6f2fc3b7a843c3a1e3\" name=\"a72c02c5037cf0f6f2fc3b7a843c3a1e3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::DynamicModelVertex::texture</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_index_range-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::IndexRange Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">index_length</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">index_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">material_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">material_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">materials</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">tram::Render::IndexRange</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_index_range.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::IndexRange Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html\">IndexRange</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_index_range-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::IndexRange Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"model_8h_source.html\">model.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ade22f8be5ffc1e0de728fa94ed496e72\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#ade22f8be5ffc1e0de728fa94ed496e72\">index_offset</a> = 0</td></tr>\n<tr class=\"separator:ade22f8be5ffc1e0de728fa94ed496e72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a79dd94c687b439d58019231d29437d23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a79dd94c687b439d58019231d29437d23\">index_length</a> = 0</td></tr>\n<tr class=\"separator:a79dd94c687b439d58019231d29437d23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14c45f9b3939a2e5238a8600a7534196\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a14c45f9b3939a2e5238a8600a7534196\">material_count</a> = 0</td></tr>\n<tr class=\"separator:a14c45f9b3939a2e5238a8600a7534196\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a125c674b4ce58b771a833686ed8b6205\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#a125c674b4ce58b771a833686ed8b6205\">material_type</a></td></tr>\n<tr class=\"separator:a125c674b4ce58b771a833686ed8b6205\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa0179744732873180811f35532344320\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_index_range.html#aa0179744732873180811f35532344320\">materials</a> [15] = { 0 }</td></tr>\n<tr class=\"separator:aa0179744732873180811f35532344320\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a79dd94c687b439d58019231d29437d23\" name=\"a79dd94c687b439d58019231d29437d23\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79dd94c687b439d58019231d29437d23\">&#9670;&nbsp;</a></span>index_length</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::IndexRange::index_length = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ade22f8be5ffc1e0de728fa94ed496e72\" name=\"ade22f8be5ffc1e0de728fa94ed496e72\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade22f8be5ffc1e0de728fa94ed496e72\">&#9670;&nbsp;</a></span>index_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::IndexRange::index_offset = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a14c45f9b3939a2e5238a8600a7534196\" name=\"a14c45f9b3939a2e5238a8600a7534196\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14c45f9b3939a2e5238a8600a7534196\">&#9670;&nbsp;</a></span>material_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::IndexRange::material_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a125c674b4ce58b771a833686ed8b6205\" name=\"a125c674b4ce58b771a833686ed8b6205\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a125c674b4ce58b771a833686ed8b6205\">&#9670;&nbsp;</a></span>material_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::IndexRange::material_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa0179744732873180811f35532344320\" name=\"aa0179744732873180811f35532344320\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0179744732873180811f35532344320\">&#9670;&nbsp;</a></span>materials</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::IndexRange::materials[15] = { 0 }</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8h_source.html\">model.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_keyframe-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Keyframe Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">frame</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">scale</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">tram::Render::Keyframe</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_keyframe.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Keyframe Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\">Keyframe</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_keyframe-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Keyframe Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation.  \n <a href=\"structtram_1_1_render_1_1_keyframe.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">render/animation.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0a8682e86efe22d381951a748d49b617\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">frame</a> = 0.0f</td></tr>\n<tr class=\"memdesc:a0a8682e86efe22d381951a748d49b617\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Used only when keyframes are used in the context of an animation.  <a href=\"structtram_1_1_render_1_1_keyframe.html#a0a8682e86efe22d381951a748d49b617\">More...</a><br /></td></tr>\n<tr class=\"separator:a0a8682e86efe22d381951a748d49b617\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54ad174c2d1454d5b8699463918241cc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a54ad174c2d1454d5b8699463918241cc\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a54ad174c2d1454d5b8699463918241cc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a2801c157a6717bfc008716b4c28a83\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a9a2801c157a6717bfc008716b4c28a83\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a9a2801c157a6717bfc008716b4c28a83\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3cb6ebfeb2417da1887eb85a0b7c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a77e3cb6ebfeb2417da1887eb85a0b7c5\">scale</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:a77e3cb6ebfeb2417da1887eb85a0b7c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1cd5b08f51a3ae82605f1aeb22ef52c1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html#a1cd5b08f51a3ae82605f1aeb22ef52c1\">padding</a> [4]</td></tr>\n<tr class=\"separator:a1cd5b08f51a3ae82605f1aeb22ef52c1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe.html\" title=\"Keyframe for a skeletal animation.\">Keyframe</a> for a skeletal animation. </p>\n<p >All of the translation, rotation and scaling operations will be performed in a given bone's local space. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0a8682e86efe22d381951a748d49b617\" name=\"a0a8682e86efe22d381951a748d49b617\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a8682e86efe22d381951a748d49b617\">&#9670;&nbsp;</a></span>frame</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::Render::Keyframe::frame = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Used only when keyframes are used in the context of an animation. </p>\n<dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"classtram_1_1_render_1_1_animation.html\" title=\"Skeletal animation for a 3D model.\">tram::Render::Animation</a> </dd>\n<dd>\n<a href=\"https://racenis.github.io/tram-sdk/documentation/render/animation.html\">https://racenis.github.io/tram-sdk/documentation/render/animation.html</a> </dd></dl>\n\n</div>\n</div>\n<a id=\"a54ad174c2d1454d5b8699463918241cc\" name=\"a54ad174c2d1454d5b8699463918241cc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54ad174c2d1454d5b8699463918241cc\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Keyframe::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1cd5b08f51a3ae82605f1aeb22ef52c1\" name=\"a1cd5b08f51a3ae82605f1aeb22ef52c1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1cd5b08f51a3ae82605f1aeb22ef52c1\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Render::Keyframe::padding[4]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a2801c157a6717bfc008716b4c28a83\" name=\"a9a2801c157a6717bfc008716b4c28a83\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a2801c157a6717bfc008716b4c28a83\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Render::Keyframe::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77e3cb6ebfeb2417da1887eb85a0b7c5\" name=\"a77e3cb6ebfeb2417da1887eb85a0b7c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77e3cb6ebfeb2417da1887eb85a0b7c5\">&#9670;&nbsp;</a></span>scale</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::Keyframe::scale = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8cpp.html\">animation.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_keyframe_header-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::KeyframeHeader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">bone</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">keyframe_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">keyframe_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">tram::Render::KeyframeHeader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_keyframe_header.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::KeyframeHeader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html\">KeyframeHeader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_keyframe_header-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::KeyframeHeader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aede52b0456d0af84c59386e2f7b4e5e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#aede52b0456d0af84c59386e2f7b4e5e0\">bone</a></td></tr>\n<tr class=\"separator:aede52b0456d0af84c59386e2f7b4e5e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a63ce32117d2989baf934941940c747ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#a63ce32117d2989baf934941940c747ae\">keyframe_offset</a></td></tr>\n<tr class=\"separator:a63ce32117d2989baf934941940c747ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad5759dfc006442feaed40a25e8f19629\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_keyframe_header.html#ad5759dfc006442feaed40a25e8f19629\">keyframe_count</a></td></tr>\n<tr class=\"separator:ad5759dfc006442feaed40a25e8f19629\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aede52b0456d0af84c59386e2f7b4e5e0\" name=\"aede52b0456d0af84c59386e2f7b4e5e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aede52b0456d0af84c59386e2f7b4e5e0\">&#9670;&nbsp;</a></span>bone</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::KeyframeHeader::bone</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad5759dfc006442feaed40a25e8f19629\" name=\"ad5759dfc006442feaed40a25e8f19629\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5759dfc006442feaed40a25e8f19629\">&#9670;&nbsp;</a></span>keyframe_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::KeyframeHeader::keyframe_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a63ce32117d2989baf934941940c747ae\" name=\"a63ce32117d2989baf934941940c747ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63ce32117d2989baf934941940c747ae\">&#9670;&nbsp;</a></span>keyframe_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::KeyframeHeader::keyframe_offset</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_light_graph_1_1_node-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightGraph::Node Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">constants</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">environment_map</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">has_light</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">has_reflection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">tram::Render::LightGraph::Node</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_light_graph_1_1_node.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::LightGraph::Node Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"classtram_1_1_render_1_1_light_graph.html\">LightGraph</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html\">Node</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_light_graph_1_1_node-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightGraph::Node Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2light_8h_source.html\">light.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac676ead25ef8bcd8846345f39d733a12\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#ac676ead25ef8bcd8846345f39d733a12\">position</a></td></tr>\n<tr class=\"separator:ac676ead25ef8bcd8846345f39d733a12\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa1ce3c4277d9f6afbd8360c932ddeb9f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa1ce3c4277d9f6afbd8360c932ddeb9f\">has_light</a> = false</td></tr>\n<tr class=\"separator:aa1ce3c4277d9f6afbd8360c932ddeb9f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0fa39d48f3054f6ac06005afe60c8166\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#a0fa39d48f3054f6ac06005afe60c8166\">has_reflection</a> = false</td></tr>\n<tr class=\"separator:a0fa39d48f3054f6ac06005afe60c8166\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee5b13a5643db5232b8a49eeafbdc3f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aee5b13a5643db5232b8a49eeafbdc3f5\">environment_map</a> = nullptr</td></tr>\n<tr class=\"separator:aee5b13a5643db5232b8a49eeafbdc3f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9aec84624a3677767c4ba9f1e593a35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_graph_1_1_node.html#aa9aec84624a3677767c4ba9f1e593a35\">constants</a></td></tr>\n<tr class=\"separator:aa9aec84624a3677767c4ba9f1e593a35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aa9aec84624a3677767c4ba9f1e593a35\" name=\"aa9aec84624a3677767c4ba9f1e593a35\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9aec84624a3677767c4ba9f1e593a35\">&#9670;&nbsp;</a></span>constants</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a>&gt; tram::Render::LightGraph::Node::constants</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aee5b13a5643db5232b8a49eeafbdc3f5\" name=\"aee5b13a5643db5232b8a49eeafbdc3f5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee5b13a5643db5232b8a49eeafbdc3f5\">&#9670;&nbsp;</a></span>environment_map</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_render_1_1_material.html\">Material</a>* tram::Render::LightGraph::Node::environment_map = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa1ce3c4277d9f6afbd8360c932ddeb9f\" name=\"aa1ce3c4277d9f6afbd8360c932ddeb9f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1ce3c4277d9f6afbd8360c932ddeb9f\">&#9670;&nbsp;</a></span>has_light</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::LightGraph::Node::has_light = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0fa39d48f3054f6ac06005afe60c8166\" name=\"a0fa39d48f3054f6ac06005afe60c8166\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fa39d48f3054f6ac06005afe60c8166\">&#9670;&nbsp;</a></span>has_reflection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::LightGraph::Node::has_reflection = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac676ead25ef8bcd8846345f39d733a12\" name=\"ac676ead25ef8bcd8846345f39d733a12\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac676ead25ef8bcd8846345f39d733a12\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::LightGraph::Node::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2light_8h_source.html\">light.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_light_tree_1_1_light-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">LightTree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightTree::Light Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519\">handle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8\">tree_handle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">tram::Render::LightTree::Light</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_light_tree_1_1_light.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::LightTree::Light Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_light_tree.html\">LightTree</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html\">Light</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_light_tree_1_1_light-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LightTree::Light Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a525f786cf65ecf4555843a773941e519\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#a525f786cf65ecf4555843a773941e519\">handle</a></td></tr>\n<tr class=\"separator:a525f786cf65ecf4555843a773941e519\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae48221ebf0f2f7822ab6afdf24178acc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae48221ebf0f2f7822ab6afdf24178acc\">position</a></td></tr>\n<tr class=\"separator:ae48221ebf0f2f7822ab6afdf24178acc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6f7549b89b1f8e6fd5a6c6c8c37f858\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#ae6f7549b89b1f8e6fd5a6c6c8c37f858\">distance</a></td></tr>\n<tr class=\"separator:ae6f7549b89b1f8e6fd5a6c6c8c37f858\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aded7a9c4c5e7c06e84b2ac9d0967e2b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_light_tree_1_1_light.html#aded7a9c4c5e7c06e84b2ac9d0967e2b8\">tree_handle</a></td></tr>\n<tr class=\"separator:aded7a9c4c5e7c06e84b2ac9d0967e2b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae6f7549b89b1f8e6fd5a6c6c8c37f858\" name=\"ae6f7549b89b1f8e6fd5a6c6c8c37f858\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6f7549b89b1f8e6fd5a6c6c8c37f858\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::LightTree::Light::distance</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a525f786cf65ecf4555843a773941e519\" name=\"a525f786cf65ecf4555843a773941e519\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a525f786cf65ecf4555843a773941e519\">&#9670;&nbsp;</a></span>handle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a> tram::Render::LightTree::Light::handle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae48221ebf0f2f7822ab6afdf24178acc\" name=\"ae48221ebf0f2f7822ab6afdf24178acc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae48221ebf0f2f7822ab6afdf24178acc\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::LightTree::Light::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aded7a9c4c5e7c06e84b2ac9d0967e2b8\" name=\"aded7a9c4c5e7c06e84b2ac9d0967e2b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aded7a9c4c5e7c06e84b2ac9d0967e2b8\">&#9670;&nbsp;</a></span>tree_handle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::LightTree::Light::tree_handle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"scene_8cpp.html\">scene.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_line_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">LineVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LineVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">tram::Render::LineVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">co</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">tram::Render::LineVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">tram::Render::LineVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_line_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::LineVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">LineVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_line_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::LineVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a19733733fc175c6d7892ecc8233ca9c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">co</a></td></tr>\n<tr class=\"separator:a19733733fc175c6d7892ecc8233ca9c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89e5b2b41533702bef6a605c4443de40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">color</a></td></tr>\n<tr class=\"separator:a89e5b2b41533702bef6a605c4443de40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a19733733fc175c6d7892ecc8233ca9c3\" name=\"a19733733fc175c6d7892ecc8233ca9c3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19733733fc175c6d7892ecc8233ca9c3\">&#9670;&nbsp;</a></span>co</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::LineVertex::co</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a89e5b2b41533702bef6a605c4443de40\" name=\"a89e5b2b41533702bef6a605c4443de40\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89e5b2b41533702bef6a605c4443de40\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::LineVertex::color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_model_a_a_b_b-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::ModelAABB Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">tram::Render::ModelAABB</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d\">tree</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">tram::Render::ModelAABB</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd\">triangles</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">tram::Render::ModelAABB</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_model_a_a_b_b.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::ModelAABB Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html\">ModelAABB</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_model_a_a_b_b-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::ModelAABB Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af540dbe8676bc422d33cc7140f733e2d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#af540dbe8676bc422d33cc7140f733e2d\">tree</a></td></tr>\n<tr class=\"separator:af540dbe8676bc422d33cc7140f733e2d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab9d31a748f2085bda0d9db193d8865dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_a_a_b_b.html#ab9d31a748f2085bda0d9db193d8865dd\">triangles</a></td></tr>\n<tr class=\"separator:ab9d31a748f2085bda0d9db193d8865dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af540dbe8676bc422d33cc7140f733e2d\" name=\"af540dbe8676bc422d33cc7140f733e2d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af540dbe8676bc422d33cc7140f733e2d\">&#9670;&nbsp;</a></span>tree</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a> tram::Render::ModelAABB::tree</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab9d31a748f2085bda0d9db193d8865dd\" name=\"ab9d31a748f2085bda0d9db193d8865dd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9d31a748f2085bda0d9db193d8865dd\">&#9670;&nbsp;</a></span>triangles</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_a_b_b_triangle.html\">AABBTriangle</a>&gt; tram::Render::ModelAABB::triangles</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8cpp.html\">model.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_model_data.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::ModelData Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::ModelData Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::ModelData:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_render_1_1_model_data.png\" usemap=\"#tram::Render::ModelData_map\" alt=\"\"/>\n  <map id=\"tram::Render::ModelData_map\" name=\"tram::Render::ModelData_map\">\n<area href=\"structtram_1_1_render_1_1_dynamic_model_data.html\" alt=\"tram::Render::DynamicModelData\" shape=\"rect\" coords=\"0,56,199,80\"/>\n<area href=\"structtram_1_1_render_1_1_static_model_data.html\" alt=\"tram::Render::StaticModelData\" shape=\"rect\" coords=\"209,56,408,80\"/>\n  </map>\n</div></div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">DrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::DrawListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac5ca2fd823ae9e3d17eb8ed9ef497474\">CalcSortKey</a>(const glm::vec3 &amp;cameraPosition)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a39de58aa6150340ba5a0f29970a88157\">eboLen</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a27a0e874119878c0b35b44e582477ab7\">eboOff</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a04cdaacce428c5671947c5b6fb6a92e5\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a5b07c38f83dceba90e15dfa4e8be3592\">layer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#adbecb52ff00cb3dafc01c83eb7ce4f86\">lightmap</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ad9fc78dea714bdcb83a22c0e3e1f1014\">lights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac37f0d64b5973229ff946919d201cf07\">matrix</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#af6f14ceff99e5b35c6f97b30a4fd6ddd\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a1e90c455d7407a2316466f83ce05d697\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac605ada6824840fd020426a00ba4f81c\">shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac6cee92eb23bdd8aeb2a408ad584cb17\">texCount</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a078924ce0fc7e476bb5c0e0840cee86e\">textures</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a75e0260d0c0f958bee0c6e998302aa1c\">vao</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">tram::Render::OpenGL::DrawListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::DrawListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html\">DrawListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::DrawListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ac5ca2fd823ae9e3d17eb8ed9ef497474\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac5ca2fd823ae9e3d17eb8ed9ef497474\">CalcSortKey</a> (const glm::vec3 &amp;cameraPosition)</td></tr>\n<tr class=\"memdesc:ac5ca2fd823ae9e3d17eb8ed9ef497474\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Assembles a key for sorting.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac5ca2fd823ae9e3d17eb8ed9ef497474\">More...</a><br /></td></tr>\n<tr class=\"separator:ac5ca2fd823ae9e3d17eb8ed9ef497474\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a04cdaacce428c5671947c5b6fb6a92e5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a04cdaacce428c5671947c5b6fb6a92e5\">flags</a> = 0</td></tr>\n<tr class=\"separator:a04cdaacce428c5671947c5b6fb6a92e5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e90c455d7407a2316466f83ce05d697\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a1e90c455d7407a2316466f83ce05d697\">pose</a> = nullptr</td></tr>\n<tr class=\"separator:a1e90c455d7407a2316466f83ce05d697\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac37f0d64b5973229ff946919d201cf07\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac37f0d64b5973229ff946919d201cf07\">matrix</a> = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td></tr>\n<tr class=\"separator:ac37f0d64b5973229ff946919d201cf07\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9fc78dea714bdcb83a22c0e3e1f1014\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ad9fc78dea714bdcb83a22c0e3e1f1014\">lights</a> [4] = {0}</td></tr>\n<tr class=\"separator:ad9fc78dea714bdcb83a22c0e3e1f1014\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b07c38f83dceba90e15dfa4e8be3592\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a5b07c38f83dceba90e15dfa4e8be3592\">layer</a> = 0</td></tr>\n<tr class=\"separator:a5b07c38f83dceba90e15dfa4e8be3592\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adbecb52ff00cb3dafc01c83eb7ce4f86\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#adbecb52ff00cb3dafc01c83eb7ce4f86\">lightmap</a> = 0</td></tr>\n<tr class=\"separator:adbecb52ff00cb3dafc01c83eb7ce4f86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a75e0260d0c0f958bee0c6e998302aa1c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a75e0260d0c0f958bee0c6e998302aa1c\">vao</a> = 0</td></tr>\n<tr class=\"separator:a75e0260d0c0f958bee0c6e998302aa1c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39de58aa6150340ba5a0f29970a88157\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a39de58aa6150340ba5a0f29970a88157\">eboLen</a> = 0</td></tr>\n<tr class=\"separator:a39de58aa6150340ba5a0f29970a88157\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a27a0e874119878c0b35b44e582477ab7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a27a0e874119878c0b35b44e582477ab7\">eboOff</a> = 0</td></tr>\n<tr class=\"separator:a27a0e874119878c0b35b44e582477ab7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac605ada6824840fd020426a00ba4f81c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac605ada6824840fd020426a00ba4f81c\">shader</a> = 0</td></tr>\n<tr class=\"separator:ac605ada6824840fd020426a00ba4f81c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac6cee92eb23bdd8aeb2a408ad584cb17\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#ac6cee92eb23bdd8aeb2a408ad584cb17\">texCount</a> = 0</td></tr>\n<tr class=\"separator:ac6cee92eb23bdd8aeb2a408ad584cb17\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a078924ce0fc7e476bb5c0e0840cee86e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#a078924ce0fc7e476bb5c0e0840cee86e\">textures</a> [15] = {0}</td></tr>\n<tr class=\"separator:a078924ce0fc7e476bb5c0e0840cee86e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af6f14ceff99e5b35c6f97b30a4fd6ddd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_draw_list_entry.html#af6f14ceff99e5b35c6f97b30a4fd6ddd\">padding</a> [4]</td></tr>\n<tr class=\"separator:af6f14ceff99e5b35c6f97b30a4fd6ddd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"ac5ca2fd823ae9e3d17eb8ed9ef497474\" name=\"ac5ca2fd823ae9e3d17eb8ed9ef497474\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5ca2fd823ae9e3d17eb8ed9ef497474\">&#9670;&nbsp;</a></span>CalcSortKey()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::Render::OpenGL::DrawListEntry::CalcSortKey </td>\n          <td>(</td>\n          <td class=\"paramtype\">const glm::vec3 &amp;&#160;</td>\n          <td class=\"paramname\"><em>cameraPosition</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Assembles a key for sorting. </p>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a39de58aa6150340ba5a0f29970a88157\" name=\"a39de58aa6150340ba5a0f29970a88157\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39de58aa6150340ba5a0f29970a88157\">&#9670;&nbsp;</a></span>eboLen</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::eboLen = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a27a0e874119878c0b35b44e582477ab7\" name=\"a27a0e874119878c0b35b44e582477ab7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27a0e874119878c0b35b44e582477ab7\">&#9670;&nbsp;</a></span>eboOff</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::eboOff = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a04cdaacce428c5671947c5b6fb6a92e5\" name=\"a04cdaacce428c5671947c5b6fb6a92e5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04cdaacce428c5671947c5b6fb6a92e5\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b07c38f83dceba90e15dfa4e8be3592\" name=\"a5b07c38f83dceba90e15dfa4e8be3592\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b07c38f83dceba90e15dfa4e8be3592\">&#9670;&nbsp;</a></span>layer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::layer = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adbecb52ff00cb3dafc01c83eb7ce4f86\" name=\"adbecb52ff00cb3dafc01c83eb7ce4f86\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbecb52ff00cb3dafc01c83eb7ce4f86\">&#9670;&nbsp;</a></span>lightmap</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::lightmap = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad9fc78dea714bdcb83a22c0e3e1f1014\" name=\"ad9fc78dea714bdcb83a22c0e3e1f1014\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9fc78dea714bdcb83a22c0e3e1f1014\">&#9670;&nbsp;</a></span>lights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::lights[4] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac37f0d64b5973229ff946919d201cf07\" name=\"ac37f0d64b5973229ff946919d201cf07\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac37f0d64b5973229ff946919d201cf07\">&#9670;&nbsp;</a></span>matrix</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::OpenGL::DrawListEntry::matrix = <a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>(1.0f)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af6f14ceff99e5b35c6f97b30a4fd6ddd\" name=\"af6f14ceff99e5b35c6f97b30a4fd6ddd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6f14ceff99e5b35c6f97b30a4fd6ddd\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char tram::Render::OpenGL::DrawListEntry::padding[4]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1e90c455d7407a2316466f83ce05d697\" name=\"a1e90c455d7407a2316466f83ce05d697\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e90c455d7407a2316466f83ce05d697\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a>* tram::Render::OpenGL::DrawListEntry::pose = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac605ada6824840fd020426a00ba4f81c\" name=\"ac605ada6824840fd020426a00ba4f81c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac605ada6824840fd020426a00ba4f81c\">&#9670;&nbsp;</a></span>shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::shader = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac6cee92eb23bdd8aeb2a408ad584cb17\" name=\"ac6cee92eb23bdd8aeb2a408ad584cb17\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6cee92eb23bdd8aeb2a408ad584cb17\">&#9670;&nbsp;</a></span>texCount</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::texCount = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a078924ce0fc7e476bb5c0e0840cee86e\" name=\"a078924ce0fc7e476bb5c0e0840cee86e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a078924ce0fc7e476bb5c0e0840cee86e\">&#9670;&nbsp;</a></span>textures</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::textures[15] = {0}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a75e0260d0c0f958bee0c6e998302aa1c\" name=\"a75e0260d0c0f958bee0c6e998302aa1c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75e0260d0c0f958bee0c6e998302aa1c\">&#9670;&nbsp;</a></span>vao</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::DrawListEntry::vao = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::FragmentShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">tram::Render::OpenGL::FragmentShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html#a89b4db76784298d96414e3e052acf741\">compiled_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">tram::Render::OpenGL::FragmentShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html#a76c6b4ec285a141d1a0e9195be1ffb3f\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">tram::Render::OpenGL::FragmentShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::FragmentShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html\">FragmentShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::FragmentShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a76c6b4ec285a141d1a0e9195be1ffb3f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html#a76c6b4ec285a141d1a0e9195be1ffb3f\">name</a></td></tr>\n<tr class=\"separator:a76c6b4ec285a141d1a0e9195be1ffb3f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a89b4db76784298d96414e3e052acf741\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_fragment_shader.html#a89b4db76784298d96414e3e052acf741\">compiled_shader</a></td></tr>\n<tr class=\"separator:a89b4db76784298d96414e3e052acf741\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a89b4db76784298d96414e3e052acf741\" name=\"a89b4db76784298d96414e3e052acf741\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89b4db76784298d96414e3e052acf741\">&#9670;&nbsp;</a></span>compiled_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::FragmentShader::compiled_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a76c6b4ec285a141d1a0e9195be1ffb3f\" name=\"a76c6b4ec285a141d1a0e9195be1ffb3f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76c6b4ec285a141d1a0e9195be1ffb3f\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::OpenGL::FragmentShader::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">LayerParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LayerParameters Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#af10da7d96c04f6befe381b972238af32\">ambient_color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#a316e3708592ec47993ae63dbd250d418\">camera_position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#ad16f6abe078c776b1217e5d638016463\">camera_rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#abeef0031a4d50ef38a30c85559e0d47d\">sun_color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#ad476a63e22c833f551e6bf0e826e8a20\">sun_direction</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">tram::Render::OpenGL::LayerParameters</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::LayerParameters Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html\">LayerParameters</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LayerParameters Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a316e3708592ec47993ae63dbd250d418\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#a316e3708592ec47993ae63dbd250d418\">camera_position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a316e3708592ec47993ae63dbd250d418\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad16f6abe078c776b1217e5d638016463\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#ad16f6abe078c776b1217e5d638016463\">camera_rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:ad16f6abe078c776b1217e5d638016463\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad476a63e22c833f551e6bf0e826e8a20\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#ad476a63e22c833f551e6bf0e826e8a20\">sun_direction</a> = {0.0f, 1.0f, 0.0f}</td></tr>\n<tr class=\"separator:ad476a63e22c833f551e6bf0e826e8a20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abeef0031a4d50ef38a30c85559e0d47d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#abeef0031a4d50ef38a30c85559e0d47d\">sun_color</a> = {1.0f, 1.0f, 1.0f}</td></tr>\n<tr class=\"separator:abeef0031a4d50ef38a30c85559e0d47d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af10da7d96c04f6befe381b972238af32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_layer_parameters.html#af10da7d96c04f6befe381b972238af32\">ambient_color</a> = {0.3f, 0.3f, 0.3f}</td></tr>\n<tr class=\"separator:af10da7d96c04f6befe381b972238af32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af10da7d96c04f6befe381b972238af32\" name=\"af10da7d96c04f6befe381b972238af32\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af10da7d96c04f6befe381b972238af32\">&#9670;&nbsp;</a></span>ambient_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LayerParameters::ambient_color = {0.3f, 0.3f, 0.3f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a316e3708592ec47993ae63dbd250d418\" name=\"a316e3708592ec47993ae63dbd250d418\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a316e3708592ec47993ae63dbd250d418\">&#9670;&nbsp;</a></span>camera_position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LayerParameters::camera_position = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad16f6abe078c776b1217e5d638016463\" name=\"ad16f6abe078c776b1217e5d638016463\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad16f6abe078c776b1217e5d638016463\">&#9670;&nbsp;</a></span>camera_rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::Render::OpenGL::LayerParameters::camera_rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abeef0031a4d50ef38a30c85559e0d47d\" name=\"abeef0031a4d50ef38a30c85559e0d47d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeef0031a4d50ef38a30c85559e0d47d\">&#9670;&nbsp;</a></span>sun_color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LayerParameters::sun_color = {1.0f, 1.0f, 1.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad476a63e22c833f551e6bf0e826e8a20\" name=\"ad476a63e22c833f551e6bf0e826e8a20\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad476a63e22c833f551e6bf0e826e8a20\">&#9670;&nbsp;</a></span>sun_direction</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LayerParameters::sun_direction = {0.0f, 1.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">LightListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LightListEntry Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a72cc524d3682c814617ba925e634e221\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a5b73db12f2ba2f73ab6c9e5558717967\">distance</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a0559578525c3039391103415fd2ef88b\">location</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a38a958acb91ef1f231851d3d87414f73\">padding</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#aa21156f321ddb6eac9134d63d23ddfbe\">padding2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">tram::Render::OpenGL::LightListEntry</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::LightListEntry Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html\">LightListEntry</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LightListEntry Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0559578525c3039391103415fd2ef88b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a0559578525c3039391103415fd2ef88b\">location</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a0559578525c3039391103415fd2ef88b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a38a958acb91ef1f231851d3d87414f73\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a38a958acb91ef1f231851d3d87414f73\">padding</a></td></tr>\n<tr class=\"separator:a38a958acb91ef1f231851d3d87414f73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a72cc524d3682c814617ba925e634e221\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a72cc524d3682c814617ba925e634e221\">color</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a72cc524d3682c814617ba925e634e221\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5b73db12f2ba2f73ab6c9e5558717967\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#a5b73db12f2ba2f73ab6c9e5558717967\">distance</a> = 0.0f</td></tr>\n<tr class=\"separator:a5b73db12f2ba2f73ab6c9e5558717967\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa21156f321ddb6eac9134d63d23ddfbe\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_light_list_entry.html#aa21156f321ddb6eac9134d63d23ddfbe\">padding2</a> [8]</td></tr>\n<tr class=\"separator:aa21156f321ddb6eac9134d63d23ddfbe\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a72cc524d3682c814617ba925e634e221\" name=\"a72cc524d3682c814617ba925e634e221\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72cc524d3682c814617ba925e634e221\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LightListEntry::color = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5b73db12f2ba2f73ab6c9e5558717967\" name=\"a5b73db12f2ba2f73ab6c9e5558717967\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b73db12f2ba2f73ab6c9e5558717967\">&#9670;&nbsp;</a></span>distance</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::LightListEntry::distance = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0559578525c3039391103415fd2ef88b\" name=\"a0559578525c3039391103415fd2ef88b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0559578525c3039391103415fd2ef88b\">&#9670;&nbsp;</a></span>location</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::OpenGL::LightListEntry::location = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a38a958acb91ef1f231851d3d87414f73\" name=\"a38a958acb91ef1f231851d3d87414f73\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a38a958acb91ef1f231851d3d87414f73\">&#9670;&nbsp;</a></span>padding</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::LightListEntry::padding</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa21156f321ddb6eac9134d63d23ddfbe\" name=\"aa21156f321ddb6eac9134d63d23ddfbe\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa21156f321ddb6eac9134d63d23ddfbe\">&#9670;&nbsp;</a></span>padding2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::LightListEntry::padding2[8]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_linked_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LinkedShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a0078df039c18dea40ab46d8beb27737b\">fragment_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#acad09f8efcc6a89365e734280278b7e6\">linked_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a67e5f5914c4d80a5212fdff1db904b0c\">material_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a9aeae1297521f3c22bdb95264ba3730b\">vertex_format</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#adea4e052a096ab5c783eebf140011f27\">vertex_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">tram::Render::OpenGL::LinkedShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::LinkedShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html\">LinkedShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::LinkedShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9aeae1297521f3c22bdb95264ba3730b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a9aeae1297521f3c22bdb95264ba3730b\">vertex_format</a></td></tr>\n<tr class=\"separator:a9aeae1297521f3c22bdb95264ba3730b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a67e5f5914c4d80a5212fdff1db904b0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a67e5f5914c4d80a5212fdff1db904b0c\">material_type</a></td></tr>\n<tr class=\"separator:a67e5f5914c4d80a5212fdff1db904b0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acad09f8efcc6a89365e734280278b7e6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#acad09f8efcc6a89365e734280278b7e6\">linked_shader</a></td></tr>\n<tr class=\"separator:acad09f8efcc6a89365e734280278b7e6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adea4e052a096ab5c783eebf140011f27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#adea4e052a096ab5c783eebf140011f27\">vertex_shader</a></td></tr>\n<tr class=\"separator:adea4e052a096ab5c783eebf140011f27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0078df039c18dea40ab46d8beb27737b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_linked_shader.html#a0078df039c18dea40ab46d8beb27737b\">fragment_shader</a></td></tr>\n<tr class=\"separator:a0078df039c18dea40ab46d8beb27737b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a0078df039c18dea40ab46d8beb27737b\" name=\"a0078df039c18dea40ab46d8beb27737b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0078df039c18dea40ab46d8beb27737b\">&#9670;&nbsp;</a></span>fragment_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::OpenGL::LinkedShader::fragment_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acad09f8efcc6a89365e734280278b7e6\" name=\"acad09f8efcc6a89365e734280278b7e6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acad09f8efcc6a89365e734280278b7e6\">&#9670;&nbsp;</a></span>linked_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::LinkedShader::linked_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a67e5f5914c4d80a5212fdff1db904b0c\" name=\"a67e5f5914c4d80a5212fdff1db904b0c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67e5f5914c4d80a5212fdff1db904b0c\">&#9670;&nbsp;</a></span>material_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::OpenGL::LinkedShader::material_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9aeae1297521f3c22bdb95264ba3730b\" name=\"a9aeae1297521f3c22bdb95264ba3730b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9aeae1297521f3c22bdb95264ba3730b\">&#9670;&nbsp;</a></span>vertex_format</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a4e5691f40b84e848c0d9b19b285bf0e2\">vertexformat_t</a> tram::Render::OpenGL::LinkedShader::vertex_format</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adea4e052a096ab5c783eebf140011f27\" name=\"adea4e052a096ab5c783eebf140011f27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adea4e052a096ab5c783eebf140011f27\">&#9670;&nbsp;</a></span>vertex_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::OpenGL::LinkedShader::vertex_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::ShaderUniformMatrices Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">tram::Render::OpenGL::ShaderUniformMatrices</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html#ae33a83e47363ff422796532a5926dfc2\">projection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">tram::Render::OpenGL::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html#a31b1aac964a89b8f61126f1b3646c8f6\">view</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">tram::Render::OpenGL::ShaderUniformMatrices</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::ShaderUniformMatrices Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html\">ShaderUniformMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::ShaderUniformMatrices Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae33a83e47363ff422796532a5926dfc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html#ae33a83e47363ff422796532a5926dfc2\">projection</a></td></tr>\n<tr class=\"separator:ae33a83e47363ff422796532a5926dfc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b1aac964a89b8f61126f1b3646c8f6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html#a31b1aac964a89b8f61126f1b3646c8f6\">view</a></td></tr>\n<tr class=\"memdesc:a31b1aac964a89b8f61126f1b3646c8f6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Projection matrix.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_matrices.html#a31b1aac964a89b8f61126f1b3646c8f6\">More...</a><br /></td></tr>\n<tr class=\"separator:a31b1aac964a89b8f61126f1b3646c8f6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae33a83e47363ff422796532a5926dfc2\" name=\"ae33a83e47363ff422796532a5926dfc2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae33a83e47363ff422796532a5926dfc2\">&#9670;&nbsp;</a></span>projection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::mat4 tram::Render::OpenGL::ShaderUniformMatrices::projection</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31b1aac964a89b8f61126f1b3646c8f6\" name=\"a31b1aac964a89b8f61126f1b3646c8f6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31b1aac964a89b8f61126f1b3646c8f6\">&#9670;&nbsp;</a></span>view</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::mat4 tram::Render::OpenGL::ShaderUniformMatrices::view</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Projection matrix. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::ShaderUniformModelMatrices Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a13f796d324fb2ea85a14e68389b18ad7\">ambientColor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a3ba06405f7247ce7fc02bd40e6eb2ba0\">model</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a047c91c09a3ef4f7f3d5e44f2cfb8dca\">modelLights</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a74ddf75660c8b8e08b944ac62b9a6555\">screenHeight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a20e50f87b8838d0389b2e0a783c013c0\">screenWidth</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a4ec2c0bdaba9abc7bed6b12ce19df7db\">sunColor</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a31b1ab36a404d25fcb9647fdf8c5a385\">sunDirection</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a312a478912d37f49a384ebc577a2d374\">sunWeight</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#ac3912d74a91d23b1c55da9b49d6aac19\">time</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">tram::Render::OpenGL::ShaderUniformModelMatrices</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::ShaderUniformModelMatrices Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html\">ShaderUniformModelMatrices</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::ShaderUniformModelMatrices Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3ba06405f7247ce7fc02bd40e6eb2ba0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::mat4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a3ba06405f7247ce7fc02bd40e6eb2ba0\">model</a></td></tr>\n<tr class=\"separator:a3ba06405f7247ce7fc02bd40e6eb2ba0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a047c91c09a3ef4f7f3d5e44f2cfb8dca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::uvec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a047c91c09a3ef4f7f3d5e44f2cfb8dca\">modelLights</a></td></tr>\n<tr class=\"memdesc:a047c91c09a3ef4f7f3d5e44f2cfb8dca\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> -&gt; world space matrix. Rotates and translates vertices from how they are defined in the model to where they will appear in the world.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a047c91c09a3ef4f7f3d5e44f2cfb8dca\">More...</a><br /></td></tr>\n<tr class=\"separator:a047c91c09a3ef4f7f3d5e44f2cfb8dca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31b1ab36a404d25fcb9647fdf8c5a385\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a31b1ab36a404d25fcb9647fdf8c5a385\">sunDirection</a></td></tr>\n<tr class=\"memdesc:a31b1ab36a404d25fcb9647fdf8c5a385\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Indices for lights in the light list. The shader will use these 4 indices to determine with which lights the model should be lit up.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a31b1ab36a404d25fcb9647fdf8c5a385\">More...</a><br /></td></tr>\n<tr class=\"separator:a31b1ab36a404d25fcb9647fdf8c5a385\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4ec2c0bdaba9abc7bed6b12ce19df7db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a4ec2c0bdaba9abc7bed6b12ce19df7db\">sunColor</a></td></tr>\n<tr class=\"memdesc:a4ec2c0bdaba9abc7bed6b12ce19df7db\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Normalized vector. Sunlight direction.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a4ec2c0bdaba9abc7bed6b12ce19df7db\">More...</a><br /></td></tr>\n<tr class=\"separator:a4ec2c0bdaba9abc7bed6b12ce19df7db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a13f796d324fb2ea85a14e68389b18ad7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">glm::vec4&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a13f796d324fb2ea85a14e68389b18ad7\">ambientColor</a></td></tr>\n<tr class=\"memdesc:a13f796d324fb2ea85a14e68389b18ad7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sunlight color.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a13f796d324fb2ea85a14e68389b18ad7\">More...</a><br /></td></tr>\n<tr class=\"separator:a13f796d324fb2ea85a14e68389b18ad7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac3912d74a91d23b1c55da9b49d6aac19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#ac3912d74a91d23b1c55da9b49d6aac19\">time</a></td></tr>\n<tr class=\"memdesc:ac3912d74a91d23b1c55da9b49d6aac19\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Shadow color.  <a href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#ac3912d74a91d23b1c55da9b49d6aac19\">More...</a><br /></td></tr>\n<tr class=\"separator:ac3912d74a91d23b1c55da9b49d6aac19\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a312a478912d37f49a384ebc577a2d374\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a312a478912d37f49a384ebc577a2d374\">sunWeight</a></td></tr>\n<tr class=\"separator:a312a478912d37f49a384ebc577a2d374\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a20e50f87b8838d0389b2e0a783c013c0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a20e50f87b8838d0389b2e0a783c013c0\">screenWidth</a></td></tr>\n<tr class=\"separator:a20e50f87b8838d0389b2e0a783c013c0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a74ddf75660c8b8e08b944ac62b9a6555\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_shader_uniform_model_matrices.html#a74ddf75660c8b8e08b944ac62b9a6555\">screenHeight</a></td></tr>\n<tr class=\"separator:a74ddf75660c8b8e08b944ac62b9a6555\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a13f796d324fb2ea85a14e68389b18ad7\" name=\"a13f796d324fb2ea85a14e68389b18ad7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13f796d324fb2ea85a14e68389b18ad7\">&#9670;&nbsp;</a></span>ambientColor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::vec4 tram::Render::OpenGL::ShaderUniformModelMatrices::ambientColor</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Sunlight color. </p>\n\n</div>\n</div>\n<a id=\"a3ba06405f7247ce7fc02bd40e6eb2ba0\" name=\"a3ba06405f7247ce7fc02bd40e6eb2ba0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ba06405f7247ce7fc02bd40e6eb2ba0\">&#9670;&nbsp;</a></span>model</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::mat4 tram::Render::OpenGL::ShaderUniformModelMatrices::model</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a047c91c09a3ef4f7f3d5e44f2cfb8dca\" name=\"a047c91c09a3ef4f7f3d5e44f2cfb8dca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a047c91c09a3ef4f7f3d5e44f2cfb8dca\">&#9670;&nbsp;</a></span>modelLights</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::uvec4 tram::Render::OpenGL::ShaderUniformModelMatrices::modelLights</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p><a class=\"el\" href=\"classtram_1_1_render_1_1_model.html\">Model</a> -&gt; world space matrix. Rotates and translates vertices from how they are defined in the model to where they will appear in the world. </p>\n\n</div>\n</div>\n<a id=\"a74ddf75660c8b8e08b944ac62b9a6555\" name=\"a74ddf75660c8b8e08b944ac62b9a6555\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74ddf75660c8b8e08b944ac62b9a6555\">&#9670;&nbsp;</a></span>screenHeight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::ShaderUniformModelMatrices::screenHeight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a20e50f87b8838d0389b2e0a783c013c0\" name=\"a20e50f87b8838d0389b2e0a783c013c0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20e50f87b8838d0389b2e0a783c013c0\">&#9670;&nbsp;</a></span>screenWidth</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::ShaderUniformModelMatrices::screenWidth</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4ec2c0bdaba9abc7bed6b12ce19df7db\" name=\"a4ec2c0bdaba9abc7bed6b12ce19df7db\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ec2c0bdaba9abc7bed6b12ce19df7db\">&#9670;&nbsp;</a></span>sunColor</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::vec4 tram::Render::OpenGL::ShaderUniformModelMatrices::sunColor</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Normalized vector. Sunlight direction. </p>\n\n</div>\n</div>\n<a id=\"a31b1ab36a404d25fcb9647fdf8c5a385\" name=\"a31b1ab36a404d25fcb9647fdf8c5a385\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31b1ab36a404d25fcb9647fdf8c5a385\">&#9670;&nbsp;</a></span>sunDirection</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">glm::vec4 tram::Render::OpenGL::ShaderUniformModelMatrices::sunDirection</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Indices for lights in the light list. The shader will use these 4 indices to determine with which lights the model should be lit up. </p>\n\n</div>\n</div>\n<a id=\"a312a478912d37f49a384ebc577a2d374\" name=\"a312a478912d37f49a384ebc577a2d374\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a312a478912d37f49a384ebc577a2d374\">&#9670;&nbsp;</a></span>sunWeight</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::ShaderUniformModelMatrices::sunWeight</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac3912d74a91d23b1c55da9b49d6aac19\" name=\"ac3912d74a91d23b1c55da9b49d6aac19\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3912d74a91d23b1c55da9b49d6aac19\">&#9670;&nbsp;</a></span>time</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::OpenGL::ShaderUniformModelMatrices::time</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Shadow color. </p>\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"opengl_2renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::VertexShader Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">tram::Render::OpenGL::VertexShader</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html#a28922ce2165c520055dd528ecbea8ebd\">compiled_shader</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">tram::Render::OpenGL::VertexShader</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html#a619225bcb72d87d02ee88a706c02e208\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">tram::Render::OpenGL::VertexShader</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::OpenGL::VertexShader Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_open_g_l.html\">OpenGL</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html\">VertexShader</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::OpenGL::VertexShader Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a619225bcb72d87d02ee88a706c02e208\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html#a619225bcb72d87d02ee88a706c02e208\">name</a></td></tr>\n<tr class=\"separator:a619225bcb72d87d02ee88a706c02e208\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a28922ce2165c520055dd528ecbea8ebd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_open_g_l_1_1_vertex_shader.html#a28922ce2165c520055dd528ecbea8ebd\">compiled_shader</a></td></tr>\n<tr class=\"separator:a28922ce2165c520055dd528ecbea8ebd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a28922ce2165c520055dd528ecbea8ebd\" name=\"a28922ce2165c520055dd528ecbea8ebd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28922ce2165c520055dd528ecbea8ebd\">&#9670;&nbsp;</a></span>compiled_shader</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::OpenGL::VertexShader::compiled_shader</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a619225bcb72d87d02ee88a706c02e208\" name=\"a619225bcb72d87d02ee88a706c02e208\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a619225bcb72d87d02ee88a706c02e208\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Render::OpenGL::VertexShader::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/<a class=\"el\" href=\"shader_8cpp.html\">shader.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_pose-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Pose Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">pose</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">tram::Render::Pose</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_pose.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Pose Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html\">Pose</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_pose-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Pose Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a80a33d6441ac42610e7cae4e31c8b1bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_pose.html#a80a33d6441ac42610e7cae4e31c8b1bb\">pose</a> [<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">BONE_COUNT</a>]</td></tr>\n<tr class=\"separator:a80a33d6441ac42610e7cae4e31c8b1bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a80a33d6441ac42610e7cae4e31c8b1bb\" name=\"a80a33d6441ac42610e7cae4e31c8b1bb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80a33d6441ac42610e7cae4e31c8b1bb\">&#9670;&nbsp;</a></span>pose</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#aa105cf31ac2e470934e6b0827a14d942\">mat4</a> tram::Render::Pose::pose[<a class=\"el\" href=\"namespacetram_1_1_render.html#ae4355f7ab257050d67eb34b6c95b58e6\">BONE_COUNT</a>]</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2animation_8h_source.html\">animation.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_registered_vertex_definition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">RegisteredVertexDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::RegisteredVertexDefinition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">tram::Render::RegisteredVertexDefinition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0\">definition</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">tram::Render::RegisteredVertexDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2\">registered</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">tram::Render::RegisteredVertexDefinition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_registered_vertex_definition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::RegisteredVertexDefinition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html\">RegisteredVertexDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_registered_vertex_definition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::RegisteredVertexDefinition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a771519468d6787026df59c277ee94ae2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a771519468d6787026df59c277ee94ae2\">registered</a> = false</td></tr>\n<tr class=\"separator:a771519468d6787026df59c277ee94ae2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6838d38a4634cb93fb1b8def21470fa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_registered_vertex_definition.html#a6838d38a4634cb93fb1b8def21470fa0\">definition</a></td></tr>\n<tr class=\"separator:a6838d38a4634cb93fb1b8def21470fa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6838d38a4634cb93fb1b8def21470fa0\" name=\"a6838d38a4634cb93fb1b8def21470fa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6838d38a4634cb93fb1b8def21470fa0\">&#9670;&nbsp;</a></span>definition</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a> tram::Render::RegisteredVertexDefinition::definition</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a771519468d6787026df59c277ee94ae2\" name=\"a771519468d6787026df59c277ee94ae2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a771519468d6787026df59c277ee94ae2\">&#9670;&nbsp;</a></span>registered</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Render::RegisteredVertexDefinition::registered = false</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"renderer_8cpp.html\">renderer.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_spherical_harmonic-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SphericalHarmonic Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">l00</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">l10</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">l11</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">l1m1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">l20</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">l21</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">l22</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">l2m1</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">l2m2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">tram::Render::SphericalHarmonic</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_spherical_harmonic.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::SphericalHarmonic Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html\">SphericalHarmonic</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_spherical_harmonic-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SphericalHarmonic Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2fde1bd3674e6c203b2a2e7c8d8e07e8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">l00</a></td></tr>\n<tr class=\"separator:a2fde1bd3674e6c203b2a2e7c8d8e07e8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7092c1cfbcf8e874806928c2d2c238cb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a7092c1cfbcf8e874806928c2d2c238cb\">l1m1</a></td></tr>\n<tr class=\"separator:a7092c1cfbcf8e874806928c2d2c238cb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4e2b108386258d38350834e9a27b0fa5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a4e2b108386258d38350834e9a27b0fa5\">l10</a></td></tr>\n<tr class=\"separator:a4e2b108386258d38350834e9a27b0fa5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aadeb8364aa07f05f2205f45edd341156\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aadeb8364aa07f05f2205f45edd341156\">l11</a></td></tr>\n<tr class=\"separator:aadeb8364aa07f05f2205f45edd341156\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a31d249ba90d9ca39cd367cb245a60ebd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a31d249ba90d9ca39cd367cb245a60ebd\">l2m2</a></td></tr>\n<tr class=\"separator:a31d249ba90d9ca39cd367cb245a60ebd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad8260971060597fb0edb9c00677ac751\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ad8260971060597fb0edb9c00677ac751\">l2m1</a></td></tr>\n<tr class=\"separator:ad8260971060597fb0edb9c00677ac751\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaabe11128777b6ba8ff82ab0e66e6bf3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#aaabe11128777b6ba8ff82ab0e66e6bf3\">l20</a></td></tr>\n<tr class=\"separator:aaabe11128777b6ba8ff82ab0e66e6bf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1025a228f68a93c7b8615b88fd396c48\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#a1025a228f68a93c7b8615b88fd396c48\">l21</a></td></tr>\n<tr class=\"separator:a1025a228f68a93c7b8615b88fd396c48\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac053c1c3de62cd1e3437549721d4d1ab\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_spherical_harmonic.html#ac053c1c3de62cd1e3437549721d4d1ab\">l22</a></td></tr>\n<tr class=\"separator:ac053c1c3de62cd1e3437549721d4d1ab\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2fde1bd3674e6c203b2a2e7c8d8e07e8\" name=\"a2fde1bd3674e6c203b2a2e7c8d8e07e8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fde1bd3674e6c203b2a2e7c8d8e07e8\">&#9670;&nbsp;</a></span>l00</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l00</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4e2b108386258d38350834e9a27b0fa5\" name=\"a4e2b108386258d38350834e9a27b0fa5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e2b108386258d38350834e9a27b0fa5\">&#9670;&nbsp;</a></span>l10</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l10</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aadeb8364aa07f05f2205f45edd341156\" name=\"aadeb8364aa07f05f2205f45edd341156\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadeb8364aa07f05f2205f45edd341156\">&#9670;&nbsp;</a></span>l11</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l11</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7092c1cfbcf8e874806928c2d2c238cb\" name=\"a7092c1cfbcf8e874806928c2d2c238cb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7092c1cfbcf8e874806928c2d2c238cb\">&#9670;&nbsp;</a></span>l1m1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l1m1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaabe11128777b6ba8ff82ab0e66e6bf3\" name=\"aaabe11128777b6ba8ff82ab0e66e6bf3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaabe11128777b6ba8ff82ab0e66e6bf3\">&#9670;&nbsp;</a></span>l20</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l20</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1025a228f68a93c7b8615b88fd396c48\" name=\"a1025a228f68a93c7b8615b88fd396c48\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1025a228f68a93c7b8615b88fd396c48\">&#9670;&nbsp;</a></span>l21</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l21</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac053c1c3de62cd1e3437549721d4d1ab\" name=\"ac053c1c3de62cd1e3437549721d4d1ab\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac053c1c3de62cd1e3437549721d4d1ab\">&#9670;&nbsp;</a></span>l22</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l22</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad8260971060597fb0edb9c00677ac751\" name=\"ad8260971060597fb0edb9c00677ac751\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8260971060597fb0edb9c00677ac751\">&#9670;&nbsp;</a></span>l2m1</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l2m1</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a31d249ba90d9ca39cd367cb245a60ebd\" name=\"a31d249ba90d9ca39cd367cb245a60ebd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31d249ba90d9ca39cd367cb245a60ebd\">&#9670;&nbsp;</a></span>l2m2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SphericalHarmonic::l2m2</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_frame-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpriteFrame Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">border_h</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">border_v</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">height</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">midpoint_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">midpoint_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">offset_x</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">offset_y</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">width</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">tram::Render::SpriteFrame</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_frame.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::SpriteFrame Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html\">SpriteFrame</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_sprite_frame-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpriteFrame Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2sprite_8h_source.html\">sprite.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ab4657070362abc108e5838bb7c1c20e0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab4657070362abc108e5838bb7c1c20e0\">offset_x</a></td></tr>\n<tr class=\"separator:ab4657070362abc108e5838bb7c1c20e0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ed7da0b5f25a4b6c74db2864ba0162e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a8ed7da0b5f25a4b6c74db2864ba0162e\">offset_y</a></td></tr>\n<tr class=\"separator:a8ed7da0b5f25a4b6c74db2864ba0162e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3a9270cdf9fc55044ab6eea633efb58\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae3a9270cdf9fc55044ab6eea633efb58\">width</a></td></tr>\n<tr class=\"separator:ae3a9270cdf9fc55044ab6eea633efb58\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a70f2bdc216f92de2f441546154a47114\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a70f2bdc216f92de2f441546154a47114\">height</a></td></tr>\n<tr class=\"separator:a70f2bdc216f92de2f441546154a47114\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae60529c0aba231cf453f559d756f3f03\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ae60529c0aba231cf453f559d756f3f03\">midpoint_x</a></td></tr>\n<tr class=\"separator:ae60529c0aba231cf453f559d756f3f03\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9eb4dd892a159105c8cd75208b151b64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a9eb4dd892a159105c8cd75208b151b64\">midpoint_y</a></td></tr>\n<tr class=\"separator:a9eb4dd892a159105c8cd75208b151b64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab6f18d025d640c62966bd57c417fdaa7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#ab6f18d025d640c62966bd57c417fdaa7\">border_h</a></td></tr>\n<tr class=\"separator:ab6f18d025d640c62966bd57c417fdaa7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2bc1e1c80b941539bf4bd98f0ad01ed6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_frame.html#a2bc1e1c80b941539bf4bd98f0ad01ed6\">border_v</a></td></tr>\n<tr class=\"separator:a2bc1e1c80b941539bf4bd98f0ad01ed6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ab6f18d025d640c62966bd57c417fdaa7\" name=\"ab6f18d025d640c62966bd57c417fdaa7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6f18d025d640c62966bd57c417fdaa7\">&#9670;&nbsp;</a></span>border_h</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::border_h</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a2bc1e1c80b941539bf4bd98f0ad01ed6\" name=\"a2bc1e1c80b941539bf4bd98f0ad01ed6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2bc1e1c80b941539bf4bd98f0ad01ed6\">&#9670;&nbsp;</a></span>border_v</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::border_v</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a70f2bdc216f92de2f441546154a47114\" name=\"a70f2bdc216f92de2f441546154a47114\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70f2bdc216f92de2f441546154a47114\">&#9670;&nbsp;</a></span>height</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::height</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae60529c0aba231cf453f559d756f3f03\" name=\"ae60529c0aba231cf453f559d756f3f03\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae60529c0aba231cf453f559d756f3f03\">&#9670;&nbsp;</a></span>midpoint_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::midpoint_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9eb4dd892a159105c8cd75208b151b64\" name=\"a9eb4dd892a159105c8cd75208b151b64\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9eb4dd892a159105c8cd75208b151b64\">&#9670;&nbsp;</a></span>midpoint_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::midpoint_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab4657070362abc108e5838bb7c1c20e0\" name=\"ab4657070362abc108e5838bb7c1c20e0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4657070362abc108e5838bb7c1c20e0\">&#9670;&nbsp;</a></span>offset_x</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::offset_x</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ed7da0b5f25a4b6c74db2864ba0162e\" name=\"a8ed7da0b5f25a4b6c74db2864ba0162e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ed7da0b5f25a4b6c74db2864ba0162e\">&#9670;&nbsp;</a></span>offset_y</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::offset_y</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae3a9270cdf9fc55044ab6eea633efb58\" name=\"ae3a9270cdf9fc55044ab6eea633efb58\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3a9270cdf9fc55044ab6eea633efb58\">&#9670;&nbsp;</a></span>width</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint16_t tram::Render::SpriteFrame::width</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2sprite_8h_source.html\">sprite.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_point-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">SpritePoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpritePoint Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">center</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">dimensions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">texture_offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">texture_size</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_point.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::SpritePoint Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">SpritePoint</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_sprite_point-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpritePoint Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3103f0ed581c4c8e8a43bc89ed981450\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">position</a></td></tr>\n<tr class=\"separator:a3103f0ed581c4c8e8a43bc89ed981450\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abc7c9bdede266f19ac735648da416620\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">center</a></td></tr>\n<tr class=\"separator:abc7c9bdede266f19ac735648da416620\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae6af3c7ee1e7f4b5e23b31fd159fbd1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">color</a></td></tr>\n<tr class=\"separator:ae6af3c7ee1e7f4b5e23b31fd159fbd1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac1308953c2313e45cb7b3f82c35a409f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">rotation</a></td></tr>\n<tr class=\"separator:ac1308953c2313e45cb7b3f82c35a409f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae43f9f3709a9cf44fb321dee4b2c336a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">dimensions</a></td></tr>\n<tr class=\"separator:ae43f9f3709a9cf44fb321dee4b2c336a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9a13cc02b4286881dd37bc6675e30516\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">texture_offset</a></td></tr>\n<tr class=\"separator:a9a13cc02b4286881dd37bc6675e30516\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94456d286185795097932358effe13a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">texture_size</a></td></tr>\n<tr class=\"separator:a94456d286185795097932358effe13a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3b0683b95f728e95b47705da6c22db99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">texture</a></td></tr>\n<tr class=\"separator:a3b0683b95f728e95b47705da6c22db99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abc7c9bdede266f19ac735648da416620\" name=\"abc7c9bdede266f19ac735648da416620\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc7c9bdede266f19ac735648da416620\">&#9670;&nbsp;</a></span>center</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SpritePoint::center</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae6af3c7ee1e7f4b5e23b31fd159fbd1e\" name=\"ae6af3c7ee1e7f4b5e23b31fd159fbd1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SpritePoint::color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae43f9f3709a9cf44fb321dee4b2c336a\" name=\"ae43f9f3709a9cf44fb321dee4b2c336a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae43f9f3709a9cf44fb321dee4b2c336a\">&#9670;&nbsp;</a></span>dimensions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::SpritePoint::dimensions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3103f0ed581c4c8e8a43bc89ed981450\" name=\"a3103f0ed581c4c8e8a43bc89ed981450\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3103f0ed581c4c8e8a43bc89ed981450\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SpritePoint::position</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac1308953c2313e45cb7b3f82c35a409f\" name=\"ac1308953c2313e45cb7b3f82c35a409f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1308953c2313e45cb7b3f82c35a409f\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::SpritePoint::rotation</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3b0683b95f728e95b47705da6c22db99\" name=\"a3b0683b95f728e95b47705da6c22db99\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b0683b95f728e95b47705da6c22db99\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::SpritePoint::texture</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9a13cc02b4286881dd37bc6675e30516\" name=\"a9a13cc02b4286881dd37bc6675e30516\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a13cc02b4286881dd37bc6675e30516\">&#9670;&nbsp;</a></span>texture_offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::SpritePoint::texture_offset</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a94456d286185795097932358effe13a3\" name=\"a94456d286185795097932358effe13a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a94456d286185795097932358effe13a3\">&#9670;&nbsp;</a></span>texture_size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::SpritePoint::texture_size</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpriteVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">co</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">color</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">texco</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">verticality</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">voffset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_sprite_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::SpriteVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_sprite_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::SpriteVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac907370fcda98fc09892bf2d6b5ca589\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">co</a></td></tr>\n<tr class=\"separator:ac907370fcda98fc09892bf2d6b5ca589\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fb739d8f642c69f87f111a8a668b001\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">voffset</a></td></tr>\n<tr class=\"separator:a5fb739d8f642c69f87f111a8a668b001\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abeffdb3fc7194d2e43ca60aab57f5343\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">texco</a></td></tr>\n<tr class=\"separator:abeffdb3fc7194d2e43ca60aab57f5343\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:add933d35ed49d8979c02c6a817bf347e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">color</a></td></tr>\n<tr class=\"separator:add933d35ed49d8979c02c6a817bf347e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6368e6f15b611c6bcc3160bac1d80ca8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">verticality</a></td></tr>\n<tr class=\"separator:a6368e6f15b611c6bcc3160bac1d80ca8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8085377574c6989403d1bd2c3f7fb65e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">texture</a></td></tr>\n<tr class=\"separator:a8085377574c6989403d1bd2c3f7fb65e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac907370fcda98fc09892bf2d6b5ca589\" name=\"ac907370fcda98fc09892bf2d6b5ca589\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac907370fcda98fc09892bf2d6b5ca589\">&#9670;&nbsp;</a></span>co</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SpriteVertex::co</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"add933d35ed49d8979c02c6a817bf347e\" name=\"add933d35ed49d8979c02c6a817bf347e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add933d35ed49d8979c02c6a817bf347e\">&#9670;&nbsp;</a></span>color</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::SpriteVertex::color</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abeffdb3fc7194d2e43ca60aab57f5343\" name=\"abeffdb3fc7194d2e43ca60aab57f5343\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeffdb3fc7194d2e43ca60aab57f5343\">&#9670;&nbsp;</a></span>texco</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::SpriteVertex::texco</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8085377574c6989403d1bd2c3f7fb65e\" name=\"a8085377574c6989403d1bd2c3f7fb65e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8085377574c6989403d1bd2c3f7fb65e\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::SpriteVertex::texture</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6368e6f15b611c6bcc3160bac1d80ca8\" name=\"a6368e6f15b611c6bcc3160bac1d80ca8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6368e6f15b611c6bcc3160bac1d80ca8\">&#9670;&nbsp;</a></span>verticality</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Render::SpriteVertex::verticality</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5fb739d8f642c69f87f111a8a668b001\" name=\"a5fb739d8f642c69f87f111a8a668b001\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5fb739d8f642c69f87f111a8a668b001\">&#9670;&nbsp;</a></span>voffset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::SpriteVertex::voffset</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_static_model_data-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::StaticModelData Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">tram::Render::StaticModelData</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">indices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">tram::Render::StaticModelData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">vertices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">tram::Render::StaticModelData</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_static_model_data.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::StaticModelData Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_static_model_data-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::StaticModelData Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<div class=\"dynheader\">\nInheritance diagram for tram::Render::StaticModelData:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_render_1_1_static_model_data.png\" usemap=\"#tram::Render::StaticModelData_map\" alt=\"\"/>\n  <map id=\"tram::Render::StaticModelData_map\" name=\"tram::Render::StaticModelData_map\">\n<area href=\"structtram_1_1_render_1_1_model_data.html\" alt=\"tram::Render::ModelData\" shape=\"rect\" coords=\"0,0,181,24\"/>\n  </map>\n</div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad57619c7212131ac5bcef78c008e9bb0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">vertices</a></td></tr>\n<tr class=\"separator:ad57619c7212131ac5bcef78c008e9bb0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac608149e0f9e85bf4b102e750c375abd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">indices</a></td></tr>\n<tr class=\"separator:ac608149e0f9e85bf4b102e750c375abd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac608149e0f9e85bf4b102e750c375abd\" name=\"ac608149e0f9e85bf4b102e750c375abd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac608149e0f9e85bf4b102e750c375abd\">&#9670;&nbsp;</a></span>indices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a>&gt; tram::Render::StaticModelData::indices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad57619c7212131ac5bcef78c008e9bb0\" name=\"ad57619c7212131ac5bcef78c008e9bb0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad57619c7212131ac5bcef78c008e9bb0\">&#9670;&nbsp;</a></span>vertices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a>&gt; tram::Render::StaticModelData::vertices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_static_model_vertex-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::StaticModelVertex Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">co</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">lighttex</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">normal</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tex</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_static_model_vertex.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::StaticModelVertex Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_static_model_vertex-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::StaticModelVertex Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a03a02fdd57efe92a0436710cc9f35376\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">co</a></td></tr>\n<tr class=\"separator:a03a02fdd57efe92a0436710cc9f35376\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a75f016333052129270d3ec90b7e19e92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">normal</a></td></tr>\n<tr class=\"separator:a75f016333052129270d3ec90b7e19e92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad51bc04758264d5ac8dc9bde8902b224\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tex</a></td></tr>\n<tr class=\"separator:ad51bc04758264d5ac8dc9bde8902b224\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1ff0529e48d198c0875ccb58f73eb18\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">lighttex</a></td></tr>\n<tr class=\"separator:ab1ff0529e48d198c0875ccb58f73eb18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a14236fc030ada6beb923c59481356738\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">texture</a></td></tr>\n<tr class=\"separator:a14236fc030ada6beb923c59481356738\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a03a02fdd57efe92a0436710cc9f35376\" name=\"a03a02fdd57efe92a0436710cc9f35376\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03a02fdd57efe92a0436710cc9f35376\">&#9670;&nbsp;</a></span>co</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::StaticModelVertex::co</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab1ff0529e48d198c0875ccb58f73eb18\" name=\"ab1ff0529e48d198c0875ccb58f73eb18\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab1ff0529e48d198c0875ccb58f73eb18\">&#9670;&nbsp;</a></span>lighttex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::StaticModelVertex::lighttex</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a75f016333052129270d3ec90b7e19e92\" name=\"a75f016333052129270d3ec90b7e19e92\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75f016333052129270d3ec90b7e19e92\">&#9670;&nbsp;</a></span>normal</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::Render::StaticModelVertex::normal</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad51bc04758264d5ac8dc9bde8902b224\" name=\"ad51bc04758264d5ac8dc9bde8902b224\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad51bc04758264d5ac8dc9bde8902b224\">&#9670;&nbsp;</a></span>tex</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> tram::Render::StaticModelVertex::tex</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a14236fc030ada6beb923c59481356738\" name=\"a14236fc030ada6beb923c59481356738\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14236fc030ada6beb923c59481356738\">&#9670;&nbsp;</a></span>texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::StaticModelVertex::texture</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_triangle-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Triangle Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">tram::Render::Triangle</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">indices</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">tram::Render::Triangle</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_triangle.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::Triangle Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_triangle-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::Triangle Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a2582220ecd2310b21a7391756b283d39\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">ivec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">indices</a></td></tr>\n<tr class=\"separator:a2582220ecd2310b21a7391756b283d39\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a2582220ecd2310b21a7391756b283d39\" name=\"a2582220ecd2310b21a7391756b283d39\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2582220ecd2310b21a7391756b283d39\">&#9670;&nbsp;</a></span>indices</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">ivec3</a> tram::Render::Triangle::indices</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"vertices_8h_source.html\">vertices.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_triangle_bucket-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">TriangleBucket</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::TriangleBucket Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">tram::Render::TriangleBucket</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f\">material_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">tram::Render::TriangleBucket</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088\">materials</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">tram::Render::TriangleBucket</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388\">triangles</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">tram::Render::TriangleBucket</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_triangle_bucket.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::TriangleBucket Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html\">TriangleBucket</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_triangle_bucket-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::TriangleBucket Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a75c3cdb4cdc7c330594859449fb1dd0f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a75c3cdb4cdc7c330594859449fb1dd0f\">material_type</a></td></tr>\n<tr class=\"separator:a75c3cdb4cdc7c330594859449fb1dd0f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a279a79cbe2932b9f9fd33cf9d856f088\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; uint32_t &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a279a79cbe2932b9f9fd33cf9d856f088\">materials</a></td></tr>\n<tr class=\"separator:a279a79cbe2932b9f9fd33cf9d856f088\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9d41d11849a7b16ec57526b77e1f3388\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle_bucket.html#a9d41d11849a7b16ec57526b77e1f3388\">triangles</a></td></tr>\n<tr class=\"separator:a9d41d11849a7b16ec57526b77e1f3388\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a75c3cdb4cdc7c330594859449fb1dd0f\" name=\"a75c3cdb4cdc7c330594859449fb1dd0f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75c3cdb4cdc7c330594859449fb1dd0f\">&#9670;&nbsp;</a></span>material_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_render.html#a9be8283c1665f7d42c97367d857d43cc\">materialtype_t</a> tram::Render::TriangleBucket::material_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a279a79cbe2932b9f9fd33cf9d856f088\" name=\"a279a79cbe2932b9f9fd33cf9d856f088\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a279a79cbe2932b9f9fd33cf9d856f088\">&#9670;&nbsp;</a></span>materials</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;uint32_t&gt; tram::Render::TriangleBucket::materials</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9d41d11849a7b16ec57526b77e1f3388\" name=\"a9d41d11849a7b16ec57526b77e1f3388\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d41d11849a7b16ec57526b77e1f3388\">&#9670;&nbsp;</a></span>triangles</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a>&gt; tram::Render::TriangleBucket::triangles</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"model_8cpp.html\">model.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_vertex_attribute-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::VertexAttribute Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">FFP_BONE_INDEX</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">FFP_BONE_WEIGHT</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">FFP_COLOR</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">FFP_IGNORE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">FFP_LIGHTMAP</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">FFP_NORMAL</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">FFP_POSITION</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">FFP_TEXTURE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">ffp_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">FLOAT32</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">INT32</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">offset</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">size</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">stride</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">UINT32</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">tram::Render::VertexAttribute</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_vertex_attribute.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::VertexAttribute Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_vertex_attribute-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::VertexAttribute Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Atributes for vertex buffer vertices.  \n <a href=\"structtram_1_1_render_1_1_vertex_attribute.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:a5478d84843dda2d90f4628b2e2c39868\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\">FLOAT32</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\">INT32</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\">UINT32</a>\n }</td></tr>\n<tr class=\"separator:a5478d84843dda2d90f4628b2e2c39868\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3e46db7ca21dfef52d3e8adb8ff21a81\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\">{ <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\">FFP_IGNORE</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\">FFP_POSITION</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\">FFP_NORMAL</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\">FFP_COLOR</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\">FFP_TEXTURE</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\">FFP_LIGHTMAP</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\">FFP_BONE_INDEX</a>\n, <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\">FFP_BONE_WEIGHT</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a3e46db7ca21dfef52d3e8adb8ff21a81\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a3e41ef607217ea0dd93110df26b9d672\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum tram::Render::VertexAttribute:: { ... } &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a3e41ef607217ea0dd93110df26b9d672\">type</a></td></tr>\n<tr class=\"separator:a3e41ef607217ea0dd93110df26b9d672\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee67a88dcdc860897f24790716674422\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum tram::Render::VertexAttribute:: { ... } &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#aee67a88dcdc860897f24790716674422\">ffp_type</a></td></tr>\n<tr class=\"separator:aee67a88dcdc860897f24790716674422\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4b9b3ff2c6594e5c1cecbc5d362ab4b8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">size</a></td></tr>\n<tr class=\"separator:a4b9b3ff2c6594e5c1cecbc5d362ab4b8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a244d28f089f6ad9cda2ca2dd04dd41ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a244d28f089f6ad9cda2ca2dd04dd41ca\">stride</a></td></tr>\n<tr class=\"separator:a244d28f089f6ad9cda2ca2dd04dd41ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f80d9935ba524ba91ac7a76ad40ea63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html#a5f80d9935ba524ba91ac7a76ad40ea63\">offset</a></td></tr>\n<tr class=\"separator:a5f80d9935ba524ba91ac7a76ad40ea63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Atributes for vertex buffer vertices. </p>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"a5478d84843dda2d90f4628b2e2c39868\" name=\"a5478d84843dda2d90f4628b2e2c39868\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5478d84843dda2d90f4628b2e2c39868\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\" name=\"a5478d84843dda2d90f4628b2e2c39868aee86317317f7f033b64772b793f25495\"></a>FLOAT32&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\" name=\"a5478d84843dda2d90f4628b2e2c39868ad6e1ed11fa35b400322354060286eb3a\"></a>INT32&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\" name=\"a5478d84843dda2d90f4628b2e2c39868aef6493c68c47d96ac90a5ec12a80ecf8\"></a>UINT32&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e46db7ca21dfef52d3e8adb8ff21a81\">&#9670;&nbsp;</a></span>anonymous enum</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">anonymous enum</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81a79a2ffd5522f4648ed66407aaa5caf23\"></a>FFP_IGNORE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81a163ad63558542d36ba9827c777dd2f08\"></a>FFP_POSITION&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81ac9314abdec089aafc611ab43ffba5f01\"></a>FFP_NORMAL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81a144f2d22f3cbd87fd4b0af33730d06a0\"></a>FFP_COLOR&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81ac1ba003af48f60bd2cc918f7c6987b86\"></a>FFP_TEXTURE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81aa5215ee0c7371d8c67a0abcf1b8f8507\"></a>FFP_LIGHTMAP&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81a74a3fdb7bfeb1bb08716624bce81d847\"></a>FFP_BONE_INDEX&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\" name=\"a3e46db7ca21dfef52d3e8adb8ff21a81ab3a4f45918953e4a245da004e17e31b2\"></a>FFP_BONE_WEIGHT&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aee67a88dcdc860897f24790716674422\" name=\"aee67a88dcdc860897f24790716674422\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee67a88dcdc860897f24790716674422\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum  { ... }  tram::Render::VertexAttribute::ffp_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f80d9935ba524ba91ac7a76ad40ea63\" name=\"a5f80d9935ba524ba91ac7a76ad40ea63\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f80d9935ba524ba91ac7a76ad40ea63\">&#9670;&nbsp;</a></span>offset</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::Render::VertexAttribute::offset</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4b9b3ff2c6594e5c1cecbc5d362ab4b8\" name=\"a4b9b3ff2c6594e5c1cecbc5d362ab4b8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b9b3ff2c6594e5c1cecbc5d362ab4b8\">&#9670;&nbsp;</a></span>size</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::VertexAttribute::size</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a244d28f089f6ad9cda2ca2dd04dd41ca\" name=\"a244d28f089f6ad9cda2ca2dd04dd41ca\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a244d28f089f6ad9cda2ca2dd04dd41ca\">&#9670;&nbsp;</a></span>stride</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::VertexAttribute::stride</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3e41ef607217ea0dd93110df26b9d672\" name=\"a3e41ef607217ea0dd93110df26b9d672\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e41ef607217ea0dd93110df26b9d672\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum  { ... }  tram::Render::VertexAttribute::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_vertex_definition-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::VertexDefinition Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">attribute_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">attributes</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">tram::Render::VertexDefinition</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1_vertex_definition.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::VertexDefinition Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html\">VertexDefinition</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1_vertex_definition-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::VertexDefinition Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">renderer.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a02fb890eb9d7bf33a5613bc6868ea9ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a02fb890eb9d7bf33a5613bc6868ea9ae\">attributes</a></td></tr>\n<tr class=\"separator:a02fb890eb9d7bf33a5613bc6868ea9ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a40ed4f54909928aa59fd3de4f3c7f451\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">size_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_definition.html#a40ed4f54909928aa59fd3de4f3c7f451\">attribute_count</a></td></tr>\n<tr class=\"separator:a40ed4f54909928aa59fd3de4f3c7f451\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a40ed4f54909928aa59fd3de4f3c7f451\" name=\"a40ed4f54909928aa59fd3de4f3c7f451\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a40ed4f54909928aa59fd3de4f3c7f451\">&#9670;&nbsp;</a></span>attribute_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">size_t tram::Render::VertexDefinition::attribute_count</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a02fb890eb9d7bf33a5613bc6868ea9ae\" name=\"a02fb890eb9d7bf33a5613bc6868ea9ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02fb890eb9d7bf33a5613bc6868ea9ae\">&#9670;&nbsp;</a></span>attributes</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const <a class=\"el\" href=\"structtram_1_1_render_1_1_vertex_attribute.html\">VertexAttribute</a>* tram::Render::VertexDefinition::attributes</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"renderer_8h_source.html\">renderer.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1drawlistentry__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::drawlistentry_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">d3d</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">gl</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">sw</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">tram::Render::drawlistentry_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1drawlistentry__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::drawlistentry_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html\">drawlistentry_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1drawlistentry__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::drawlistentry_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad2abad1e8063885e1b27fb99168ea48b\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:aa8bf2fc010feac2978850fd3cfdb80a3\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">API::GLDrawListEntry</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#a926aab37c6029049aa1910bbee5f9a47\">gl</a></td></tr>\n<tr class=\"separator:aa8bf2fc010feac2978850fd3cfdb80a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac83c1ce584e5ed9fa6a0dda1bec6267e\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">API::D3DDrawListEntry</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#acb9edd62e1b55899b00774b19239001a\">d3d</a></td></tr>\n<tr class=\"separator:ac83c1ce584e5ed9fa6a0dda1bec6267e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f9f643744893a695973a27940fe506f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">API::SWDrawListEntry</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aa19e9354b8948dc1e47a4c5983cad9b2\">sw</a></td></tr>\n<tr class=\"separator:a0f9f643744893a695973a27940fe506f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ccd1ac7d1aa024a5e1223b5b845410e\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1drawlistentry__t.html#aaf774d6b3835faaadbbadd9cd65ac626\">generic</a></td></tr>\n<tr class=\"separator:a8ccd1ac7d1aa024a5e1223b5b845410e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad2abad1e8063885e1b27fb99168ea48b\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:ad2abad1e8063885e1b27fb99168ea48b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad2abad1e8063885e1b27fb99168ea48b\" name=\"ad2abad1e8063885e1b27fb99168ea48b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2abad1e8063885e1b27fb99168ea48b\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::drawlistentry_t::@75</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"acb9edd62e1b55899b00774b19239001a\" name=\"acb9edd62e1b55899b00774b19239001a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acb9edd62e1b55899b00774b19239001a\">&#9670;&nbsp;</a></span>d3d</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_draw_list_entry.html\">API::D3DDrawListEntry</a>* tram::Render::drawlistentry_t::d3d</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaf774d6b3835faaadbbadd9cd65ac626\" name=\"aaf774d6b3835faaadbbadd9cd65ac626\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf774d6b3835faaadbbadd9cd65ac626\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::drawlistentry_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a926aab37c6029049aa1910bbee5f9a47\" name=\"a926aab37c6029049aa1910bbee5f9a47\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a926aab37c6029049aa1910bbee5f9a47\">&#9670;&nbsp;</a></span>gl</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_draw_list_entry.html\">API::GLDrawListEntry</a>* tram::Render::drawlistentry_t::gl</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa19e9354b8948dc1e47a4c5983cad9b2\" name=\"aa19e9354b8948dc1e47a4c5983cad9b2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa19e9354b8948dc1e47a4c5983cad9b2\">&#9670;&nbsp;</a></span>sw</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_draw_list_entry.html\">API::SWDrawListEntry</a>* tram::Render::drawlistentry_t::sw</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1indexarray__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::indexarray_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">d3d_index_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">gl_index_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">sw_index_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">tram::Render::indexarray_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1indexarray__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::indexarray_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html\">indexarray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1indexarray__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::indexarray_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:afd7ca82e056f59988338b9a9d3525636\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a5fe7907c523b06c714f5fbd0089b0c20\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">gl_index_buffer</a></td></tr>\n<tr class=\"separator:a5fe7907c523b06c714f5fbd0089b0c20\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa4182adae547fd3cbdf42bb1d24d6811\"><td class=\"memItemLeft\" >&#160;&#160;&#160;IDirect3DIndexBuffer9 *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a0446d36e56fb1aefc070c9b5b0ee64a3\">d3d_index_buffer</a></td></tr>\n<tr class=\"separator:aa4182adae547fd3cbdf42bb1d24d6811\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6920e5af9953a0109f3a418e1be89fd2\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">API::SWIndexArray</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a8ad83d6138df2d320f3ada45e47ac8de\">sw_index_array</a></td></tr>\n<tr class=\"separator:a6920e5af9953a0109f3a418e1be89fd2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a19820b6ab42b604ba56002f455513def\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1indexarray__t.html#a86c0b0a651bf16d9bb3b7566a325290f\">generic</a></td></tr>\n<tr class=\"separator:a19820b6ab42b604ba56002f455513def\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:afd7ca82e056f59988338b9a9d3525636\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:afd7ca82e056f59988338b9a9d3525636\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"afd7ca82e056f59988338b9a9d3525636\" name=\"afd7ca82e056f59988338b9a9d3525636\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd7ca82e056f59988338b9a9d3525636\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::indexarray_t::@71</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0446d36e56fb1aefc070c9b5b0ee64a3\" name=\"a0446d36e56fb1aefc070c9b5b0ee64a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0446d36e56fb1aefc070c9b5b0ee64a3\">&#9670;&nbsp;</a></span>d3d_index_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DIndexBuffer9* tram::Render::indexarray_t::d3d_index_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a86c0b0a651bf16d9bb3b7566a325290f\" name=\"a86c0b0a651bf16d9bb3b7566a325290f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a86c0b0a651bf16d9bb3b7566a325290f\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::indexarray_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab8718d1b7ff7dfb2e5dfd4bd4feff552\" name=\"ab8718d1b7ff7dfb2e5dfd4bd4feff552\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8718d1b7ff7dfb2e5dfd4bd4feff552\">&#9670;&nbsp;</a></span>gl_index_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::indexarray_t::gl_index_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8ad83d6138df2d320f3ada45e47ac8de\" name=\"a8ad83d6138df2d320f3ada45e47ac8de\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ad83d6138df2d320f3ada45e47ac8de\">&#9670;&nbsp;</a></span>sw_index_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_index_array.html\">API::SWIndexArray</a>* tram::Render::indexarray_t::sw_index_array</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1light__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::light_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">d3d</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">gl</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">sw</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">tram::Render::light_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1light__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::light_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html\">light_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1light__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::light_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a62ed897d3beac033c498568a111fb616\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a8a57e8833f6350c13e6b18eba3e62ecd\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">API::GLLight</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a0f207f290e0ca7fbdf9df1a3232332aa\">gl</a></td></tr>\n<tr class=\"separator:a8a57e8833f6350c13e6b18eba3e62ecd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae3ba204461c783acaed622c3e9a4cb01\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">API::D3DLight</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a79b25b22803214088591ba7e3f9816d5\">d3d</a></td></tr>\n<tr class=\"separator:ae3ba204461c783acaed622c3e9a4cb01\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a343115becb25a6fc246dbac5f37b048a\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">API::SWLight</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a8884681b5c37bd90c77607fe04738d27\">sw</a></td></tr>\n<tr class=\"separator:a343115becb25a6fc246dbac5f37b048a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a752021413cd777aa4659f68a99f26f86\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1light__t.html#a9435b381024f28d7b66f0235be42c28f\">generic</a></td></tr>\n<tr class=\"separator:a752021413cd777aa4659f68a99f26f86\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a62ed897d3beac033c498568a111fb616\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a62ed897d3beac033c498568a111fb616\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a62ed897d3beac033c498568a111fb616\" name=\"a62ed897d3beac033c498568a111fb616\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a62ed897d3beac033c498568a111fb616\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::light_t::@79</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a79b25b22803214088591ba7e3f9816d5\" name=\"a79b25b22803214088591ba7e3f9816d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79b25b22803214088591ba7e3f9816d5\">&#9670;&nbsp;</a></span>d3d</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_d3_d_light.html\">API::D3DLight</a>* tram::Render::light_t::d3d</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9435b381024f28d7b66f0235be42c28f\" name=\"a9435b381024f28d7b66f0235be42c28f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9435b381024f28d7b66f0235be42c28f\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::light_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0f207f290e0ca7fbdf9df1a3232332aa\" name=\"a0f207f290e0ca7fbdf9df1a3232332aa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f207f290e0ca7fbdf9df1a3232332aa\">&#9670;&nbsp;</a></span>gl</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_light.html\">API::GLLight</a>* tram::Render::light_t::gl</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8884681b5c37bd90c77607fe04738d27\" name=\"a8884681b5c37bd90c77607fe04738d27\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8884681b5c37bd90c77607fe04738d27\">&#9670;&nbsp;</a></span>sw</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_light.html\">API::SWLight</a>* tram::Render::light_t::sw</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1material__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::material_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">d3d</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">gl</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">sw</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">tram::Render::material_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1material__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::material_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html\">material_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1material__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::material_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a8b483cf4f78b7afd2dc83471c69e8eaa\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a31534a2c05b526bbd9211b1e83ac21c3\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">API::GLMaterial</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8a2afd08577348cd6d892f0fe0f2743f\">gl</a></td></tr>\n<tr class=\"separator:a31534a2c05b526bbd9211b1e83ac21c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab1aaa2ecb1781d568b127e3aba87e696\"><td class=\"memItemLeft\" >&#160;&#160;&#160;API::D3DMaterial *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a8fb78cd8900865b9c344ca0a026e15d5\">d3d</a></td></tr>\n<tr class=\"separator:ab1aaa2ecb1781d568b127e3aba87e696\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2db8a74372efb7e47c79690fd2ba6640\"><td class=\"memItemLeft\" >&#160;&#160;&#160;API::SWMaterial *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#a5e46477c4edac192b6977a69bf2cda1b\">sw</a></td></tr>\n<tr class=\"separator:a2db8a74372efb7e47c79690fd2ba6640\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5feb00c285716df2adc6fb1f9440b564\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1material__t.html#aa4163a9839bbec7828aab7a0bba5861c\">generic</a></td></tr>\n<tr class=\"separator:a5feb00c285716df2adc6fb1f9440b564\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b483cf4f78b7afd2dc83471c69e8eaa\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a8b483cf4f78b7afd2dc83471c69e8eaa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a8b483cf4f78b7afd2dc83471c69e8eaa\" name=\"a8b483cf4f78b7afd2dc83471c69e8eaa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b483cf4f78b7afd2dc83471c69e8eaa\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::material_t::@81</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8fb78cd8900865b9c344ca0a026e15d5\" name=\"a8fb78cd8900865b9c344ca0a026e15d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8fb78cd8900865b9c344ca0a026e15d5\">&#9670;&nbsp;</a></span>d3d</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">API::D3DMaterial* tram::Render::material_t::d3d</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa4163a9839bbec7828aab7a0bba5861c\" name=\"aa4163a9839bbec7828aab7a0bba5861c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4163a9839bbec7828aab7a0bba5861c\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::material_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8a2afd08577348cd6d892f0fe0f2743f\" name=\"a8a2afd08577348cd6d892f0fe0f2743f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a2afd08577348cd6d892f0fe0f2743f\">&#9670;&nbsp;</a></span>gl</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_g_l_material.html\">API::GLMaterial</a>* tram::Render::material_t::gl</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5e46477c4edac192b6977a69bf2cda1b\" name=\"a5e46477c4edac192b6977a69bf2cda1b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e46477c4edac192b6977a69bf2cda1b\">&#9670;&nbsp;</a></span>sw</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">API::SWMaterial* tram::Render::material_t::sw</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1spritearray__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::spritearray_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">tram::Render::spritearray_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1spritearray__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::spritearray_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html\">spritearray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1spritearray__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::spritearray_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a6fe51a1161778f6a11a3c553fde4c8eb\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a19bc3ea95c5588fac0aaebf2141ebab5\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a>&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#a3a692b3332da76d0b2202f8831ae77b5\">vertex_array</a></td></tr>\n<tr class=\"separator:a19bc3ea95c5588fac0aaebf2141ebab5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad10a607e49c99a4ffbd90a5e73cb0886\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1spritearray__t.html#ab76a2d9193e201e274efa86af5ce5af7\">generic</a></td></tr>\n<tr class=\"separator:ad10a607e49c99a4ffbd90a5e73cb0886\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6fe51a1161778f6a11a3c553fde4c8eb\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a6fe51a1161778f6a11a3c553fde4c8eb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a6fe51a1161778f6a11a3c553fde4c8eb\" name=\"a6fe51a1161778f6a11a3c553fde4c8eb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6fe51a1161778f6a11a3c553fde4c8eb\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::spritearray_t::@73</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ab76a2d9193e201e274efa86af5ce5af7\" name=\"ab76a2d9193e201e274efa86af5ce5af7\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab76a2d9193e201e274efa86af5ce5af7\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::spritearray_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3a692b3332da76d0b2202f8831ae77b5\" name=\"a3a692b3332da76d0b2202f8831ae77b5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a692b3332da76d0b2202f8831ae77b5\">&#9670;&nbsp;</a></span>vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a> tram::Render::spritearray_t::vertex_array</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1texturehandle__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::texturehandle_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">d3d_texture_handle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">gl_texture_handle</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">sw_texture</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">tram::Render::texturehandle_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1texturehandle__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::texturehandle_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html\">texturehandle_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1texturehandle__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::texturehandle_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:af10034fb32d283da15f4eca754fb0cd3\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a14e8260be346fb8a6515a4f4c2517b18\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a43671e152005e2c0623b3492672751ee\">gl_texture_handle</a></td></tr>\n<tr class=\"separator:a14e8260be346fb8a6515a4f4c2517b18\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4052e62f68ba9cfabf6b11aeadcad79f\"><td class=\"memItemLeft\" >&#160;&#160;&#160;IDirect3DTexture9 *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#a52a3d65c111609ceea98acc5efcd735e\">d3d_texture_handle</a></td></tr>\n<tr class=\"separator:a4052e62f68ba9cfabf6b11aeadcad79f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aaaf6024716c3fada2bf346aa127453\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">API::SWTexture</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#ac29891059d4c6b816fa4a6e515f1bced\">sw_texture</a></td></tr>\n<tr class=\"separator:a2aaaf6024716c3fada2bf346aa127453\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43c356c443fb066c5ce57e7f8e246dd6\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1texturehandle__t.html#af0041c0ed8d24e29e6e09cff06e8a6ac\">generic</a></td></tr>\n<tr class=\"separator:a43c356c443fb066c5ce57e7f8e246dd6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af10034fb32d283da15f4eca754fb0cd3\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:af10034fb32d283da15f4eca754fb0cd3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"af10034fb32d283da15f4eca754fb0cd3\" name=\"af10034fb32d283da15f4eca754fb0cd3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af10034fb32d283da15f4eca754fb0cd3\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::texturehandle_t::@77</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a52a3d65c111609ceea98acc5efcd735e\" name=\"a52a3d65c111609ceea98acc5efcd735e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52a3d65c111609ceea98acc5efcd735e\">&#9670;&nbsp;</a></span>d3d_texture_handle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DTexture9* tram::Render::texturehandle_t::d3d_texture_handle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af0041c0ed8d24e29e6e09cff06e8a6ac\" name=\"af0041c0ed8d24e29e6e09cff06e8a6ac\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af0041c0ed8d24e29e6e09cff06e8a6ac\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::texturehandle_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43671e152005e2c0623b3492672751ee\" name=\"a43671e152005e2c0623b3492672751ee\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43671e152005e2c0623b3492672751ee\">&#9670;&nbsp;</a></span>gl_texture_handle</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::texturehandle_t::gl_texture_handle</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac29891059d4c6b816fa4a6e515f1bced\" name=\"ac29891059d4c6b816fa4a6e515f1bced\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac29891059d4c6b816fa4a6e515f1bced\">&#9670;&nbsp;</a></span>sw_texture</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_texture.html\">API::SWTexture</a>* tram::Render::texturehandle_t::sw_texture</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1vertexarray__t-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::vertexarray_t Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">d3d_metadata</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">d3d_vertex_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8\">generic</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">gl_vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">gl_vertex_buffer</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">sw_vertex_array</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">tram::Render::vertexarray_t</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_render_1_1vertexarray__t.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Render::vertexarray_t Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">Render</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html\">vertexarray_t</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_render_1_1vertexarray__t-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Render::vertexarray_t Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:aee008e208a151dcf01d66493b2ed2d7d\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a18a9f870e0cca460361e674fa40c8ca6\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a7628a8a047aeddff25ea2b4371279904\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a823c61d8f42e8d1f378d8e7208163371\">gl_vertex_array</a></td></tr>\n<tr class=\"separator:a7628a8a047aeddff25ea2b4371279904\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee51d5f02d24c610b924f740b7a90c29\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#abf17d9003261e94d8d26b6f32e29b23f\">gl_vertex_buffer</a></td></tr>\n<tr class=\"separator:aee51d5f02d24c610b924f740b7a90c29\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a18a9f870e0cca460361e674fa40c8ca6\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a18a9f870e0cca460361e674fa40c8ca6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adaa8d166e87bca904a27573ef1abc4db\"><td class=\"memItemLeft\" >&#160;&#160;&#160;struct {</td></tr>\n<tr class=\"memitem:a479a4b0ebb585489bf70a33bff1e1ea5\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;IDirect3DVertexBuffer9 *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">d3d_vertex_buffer</a></td></tr>\n<tr class=\"separator:a479a4b0ebb585489bf70a33bff1e1ea5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaffc92e9464e393521d7a93fceaf7526\"><td class=\"memItemLeft\" >&#160;&#160;&#160;&#160;&#160;&#160;uint32_t&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#ace7fc23faf01f8916c670a611c9997be\">d3d_metadata</a></td></tr>\n<tr class=\"separator:aaffc92e9464e393521d7a93fceaf7526\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adaa8d166e87bca904a27573ef1abc4db\"><td class=\"memItemLeft\" valign=\"top\">&#160;&#160;&#160;}&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:adaa8d166e87bca904a27573ef1abc4db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac01afb26430f84cfcecc2f236e139258\"><td class=\"memItemLeft\" >&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">API::SWVertexArray</a> *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a58e132836686f81374a161a1a4b79a7f\">sw_vertex_array</a></td></tr>\n<tr class=\"separator:ac01afb26430f84cfcecc2f236e139258\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6523ca201de4dea2f60a3b57c979ae72\"><td class=\"memItemLeft\" >&#160;&#160;&#160;void *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_render_1_1vertexarray__t.html#a6233f7ad4c54f375d0a7faf2a7fd54a8\">generic</a></td></tr>\n<tr class=\"separator:a6523ca201de4dea2f60a3b57c979ae72\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aee008e208a151dcf01d66493b2ed2d7d\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:aee008e208a151dcf01d66493b2ed2d7d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"aee008e208a151dcf01d66493b2ed2d7d\" name=\"aee008e208a151dcf01d66493b2ed2d7d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aee008e208a151dcf01d66493b2ed2d7d\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Render::vertexarray_t::@65</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ace7fc23faf01f8916c670a611c9997be\" name=\"ace7fc23faf01f8916c670a611c9997be\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace7fc23faf01f8916c670a611c9997be\">&#9670;&nbsp;</a></span>d3d_metadata</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::vertexarray_t::d3d_metadata</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5f4fecb59b0b4c52b656d6bf8f8a5f8e\" name=\"a5f4fecb59b0b4c52b656d6bf8f8a5f8e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f4fecb59b0b4c52b656d6bf8f8a5f8e\">&#9670;&nbsp;</a></span>d3d_vertex_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">IDirect3DVertexBuffer9* tram::Render::vertexarray_t::d3d_vertex_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6233f7ad4c54f375d0a7faf2a7fd54a8\" name=\"a6233f7ad4c54f375d0a7faf2a7fd54a8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6233f7ad4c54f375d0a7faf2a7fd54a8\">&#9670;&nbsp;</a></span>generic</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Render::vertexarray_t::generic</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a823c61d8f42e8d1f378d8e7208163371\" name=\"a823c61d8f42e8d1f378d8e7208163371\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a823c61d8f42e8d1f378d8e7208163371\">&#9670;&nbsp;</a></span>gl_vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::vertexarray_t::gl_vertex_array</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"abf17d9003261e94d8d26b6f32e29b23f\" name=\"abf17d9003261e94d8d26b6f32e29b23f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf17d9003261e94d8d26b6f32e29b23f\">&#9670;&nbsp;</a></span>gl_vertex_buffer</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Render::vertexarray_t::gl_vertex_buffer</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a58e132836686f81374a161a1a4b79a7f\" name=\"a58e132836686f81374a161a1a4b79a7f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a58e132836686f81374a161a1a4b79a7f\">&#9670;&nbsp;</a></span>sw_vertex_array</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_s_w_vertex_array.html\">API::SWVertexArray</a>* tram::Render::vertexarray_t::sw_vertex_array</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/render/<a class=\"el\" href=\"render_2render_8h_source.html\">render.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_script_1_1_language-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">Language</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Script::Language Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#ad9373b24badbe5823d6463455814543c\">call_function</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a798162d8aff2edb02cf94000db8878fa\">evaluate</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#af5b52a493cdf3511320ca67ae7d32ecc\">get_global</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a34ec018319125b4ad1339967c4a27199\">load_script</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#aa308929820f0ba302be521bf848b9805\">set_function</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">set_global</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">tram::Script::Language</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_script_1_1_language.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Script::Language Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_script.html\">Script</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html\">Language</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_script_1_1_language-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Script::Language Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"framework_2script_8h_source.html\">script.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a01d2fb78bf0df4893feca90bdf4a2525\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a></td></tr>\n<tr class=\"separator:a01d2fb78bf0df4893feca90bdf4a2525\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af5b52a493cdf3511320ca67ae7d32ecc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#af5b52a493cdf3511320ca67ae7d32ecc\">get_global</a> )(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>)</td></tr>\n<tr class=\"separator:af5b52a493cdf3511320ca67ae7d32ecc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">set_global</a> )(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value)</td></tr>\n<tr class=\"separator:aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa308929820f0ba302be521bf848b9805\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#aa308929820f0ba302be521bf848b9805\">set_function</a> )(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt; parameters, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*function)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>))</td></tr>\n<tr class=\"separator:aa308929820f0ba302be521bf848b9805\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad9373b24badbe5823d6463455814543c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#ad9373b24badbe5823d6463455814543c\">call_function</a> )(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt; parameters)</td></tr>\n<tr class=\"separator:ad9373b24badbe5823d6463455814543c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34ec018319125b4ad1339967c4a27199\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a34ec018319125b4ad1339967c4a27199\">load_script</a> )(const char *path)</td></tr>\n<tr class=\"separator:a34ec018319125b4ad1339967c4a27199\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a798162d8aff2edb02cf94000db8878fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a798162d8aff2edb02cf94000db8878fa\">evaluate</a> )(const char *code)</td></tr>\n<tr class=\"separator:a798162d8aff2edb02cf94000db8878fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad9373b24badbe5823d6463455814543c\" name=\"ad9373b24badbe5823d6463455814543c\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9373b24badbe5823d6463455814543c\">&#9670;&nbsp;</a></span>call_function</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(* tram::Script::Language::call_function) (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt; <a class=\"el\" href=\"classtram_1_1_value.html\">Value</a> &gt; parameters)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a798162d8aff2edb02cf94000db8878fa\" name=\"a798162d8aff2edb02cf94000db8878fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a798162d8aff2edb02cf94000db8878fa\">&#9670;&nbsp;</a></span>evaluate</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(* tram::Script::Language::evaluate) (const char *code)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af5b52a493cdf3511320ca67ae7d32ecc\" name=\"af5b52a493cdf3511320ca67ae7d32ecc\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5b52a493cdf3511320ca67ae7d32ecc\">&#9670;&nbsp;</a></span>get_global</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(* tram::Script::Language::get_global) (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a34ec018319125b4ad1339967c4a27199\" name=\"a34ec018319125b4ad1339967c4a27199\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34ec018319125b4ad1339967c4a27199\">&#9670;&nbsp;</a></span>load_script</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Script::Language::load_script) (const char *path)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a01d2fb78bf0df4893feca90bdf4a2525\" name=\"a01d2fb78bf0df4893feca90bdf4a2525\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01d2fb78bf0df4893feca90bdf4a2525\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Script::Language::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa308929820f0ba302be521bf848b9805\" name=\"aa308929820f0ba302be521bf848b9805\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa308929820f0ba302be521bf848b9805\">&#9670;&nbsp;</a></span>set_function</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Script::Language::set_function) (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, std::vector&lt; <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> &gt; parameters, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>(*function)(<a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>))</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\" name=\"aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa095e8f0cc3f09a5cbd7fc7bc9f98a1e\">&#9670;&nbsp;</a></span>set_global</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::Script::Language::set_global) (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> <a class=\"el\" href=\"structtram_1_1_script_1_1_language.html#a01d2fb78bf0df4893feca90bdf4a2525\">name</a>, <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> value)</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2script_8h_source.html\">script.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_scriptable_type_1_1_scriptable_type_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">ScriptableType</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">ScriptableTypeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::ScriptableType::ScriptableTypeInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">tram::ScriptableType::ScriptableTypeInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d\">base_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">tram::ScriptableType::ScriptableTypeInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f\">constr_func</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">tram::ScriptableType::ScriptableTypeInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9\">destr_func</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">tram::ScriptableType::ScriptableTypeInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_scriptable_type_1_1_scriptable_type_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::ScriptableType::ScriptableTypeInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_scriptable_type.html\">ScriptableType</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html\">ScriptableTypeInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::ScriptableType::ScriptableTypeInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ac57965a45a8f5897954176c01038698d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#ac57965a45a8f5897954176c01038698d\">base_type</a></td></tr>\n<tr class=\"separator:ac57965a45a8f5897954176c01038698d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a54731a0f6990e3594ea9973b38848e1f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a54731a0f6990e3594ea9973b38848e1f\">constr_func</a> )(<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;) = nullptr</td></tr>\n<tr class=\"separator:a54731a0f6990e3594ea9973b38848e1f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a60e82d60aa627ae742b2092a4e0c51e9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_scriptable_type_1_1_scriptable_type_info.html#a60e82d60aa627ae742b2092a4e0c51e9\">destr_func</a> )(<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *) = nullptr</td></tr>\n<tr class=\"separator:a60e82d60aa627ae742b2092a4e0c51e9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ac57965a45a8f5897954176c01038698d\" name=\"ac57965a45a8f5897954176c01038698d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac57965a45a8f5897954176c01038698d\">&#9670;&nbsp;</a></span>base_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::ScriptableType::ScriptableTypeInfo::base_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a54731a0f6990e3594ea9973b38848e1f\" name=\"a54731a0f6990e3594ea9973b38848e1f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54731a0f6990e3594ea9973b38848e1f\">&#9670;&nbsp;</a></span>constr_func</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *(* tram::ScriptableType::ScriptableTypeInfo::constr_func) (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> new_type, const <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a> &amp;, const <a class=\"el\" href=\"classtram_1_1_value_array.html\">ValueArray</a> &amp;) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a60e82d60aa627ae742b2092a4e0c51e9\" name=\"a60e82d60aa627ae742b2092a4e0c51e9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60e82d60aa627ae742b2092a4e0c51e9\">&#9670;&nbsp;</a></span>destr_func</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::ScriptableType::ScriptableTypeInfo::destr_func) (<a class=\"el\" href=\"classtram_1_1_entity.html\">Entity</a> *) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/entities/<a class=\"el\" href=\"entities_2script_8cpp.html\">script.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_property-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::Property&lt; T &gt; Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0\">operator T</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">Property</a>(std::initializer_list&lt; value_t &gt; values)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad\">Property</a>(const T &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property&lt; T &gt;</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_property.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Settings::Property&lt; T &gt; Struct Template Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_settings_1_1_property-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::Property&lt; T &gt; Struct Template Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><code>#include &lt;<a class=\"el\" href=\"settings_8h_source.html\">settings.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:ab24720ae7aee4b0f1018012b553096a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#ab24720ae7aee4b0f1018012b553096a3\">Property</a> (std::initializer_list&lt; <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> &gt; values)</td></tr>\n<tr class=\"separator:ab24720ae7aee4b0f1018012b553096a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9ac260b077617f945253284397723dad\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a9ac260b077617f945253284397723dad\">Property</a> (const T &amp;<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a>)</td></tr>\n<tr class=\"separator:a9ac260b077617f945253284397723dad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a658015428992dd46bb49a68c9a714dd0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a658015428992dd46bb49a68c9a714dd0\">operator T</a> ()</td></tr>\n<tr class=\"separator:a658015428992dd46bb49a68c9a714dd0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5389ad0ee0f0f3c870ba776440671897\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">T&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html#a5389ad0ee0f0f3c870ba776440671897\">value</a></td></tr>\n<tr class=\"separator:a5389ad0ee0f0f3c870ba776440671897\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"ab24720ae7aee4b0f1018012b553096a3\" name=\"ab24720ae7aee4b0f1018012b553096a3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab24720ae7aee4b0f1018012b553096a3\">&#9670;&nbsp;</a></span>Property() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property</a>&lt; T &gt;::<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::initializer_list&lt; <a class=\"el\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a> &gt;&#160;</td>\n          <td class=\"paramname\"><em>values</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9ac260b077617f945253284397723dad\" name=\"a9ac260b077617f945253284397723dad\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ac260b077617f945253284397723dad\">&#9670;&nbsp;</a></span>Property() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property</a>&lt; T &gt;::<a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">Property</a> </td>\n          <td>(</td>\n          <td class=\"paramtype\">const T &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a658015428992dd46bb49a68c9a714dd0\" name=\"a658015428992dd46bb49a68c9a714dd0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a658015428992dd46bb49a68c9a714dd0\">&#9670;&nbsp;</a></span>operator T()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property</a>&lt; T &gt;::operator T </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a5389ad0ee0f0f3c870ba776440671897\" name=\"a5389ad0ee0f0f3c870ba776440671897\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5389ad0ee0f0f3c870ba776440671897\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<div class=\"memtemplate\">\ntemplate&lt;typename T &gt; </div>\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">T <a class=\"el\" href=\"structtram_1_1_settings_1_1_property.html\">tram::Settings::Property</a>&lt; T &gt;::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"settings_8h_source.html\">settings.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_raw_setting-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">RawSetting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::RawSetting Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">tram::Settings::RawSetting</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431\">key</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">tram::Settings::RawSetting</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28\">maybe_flag</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">tram::Settings::RawSetting</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b\">value</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">tram::Settings::RawSetting</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_raw_setting.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Settings::RawSetting Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html\">RawSetting</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_settings_1_1_raw_setting-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::RawSetting Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ad489cdd3d038e1cd7cae211fd9646431\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#ad489cdd3d038e1cd7cae211fd9646431\">key</a></td></tr>\n<tr class=\"separator:ad489cdd3d038e1cd7cae211fd9646431\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3f36f7e9e8252147d72a427c735b5d7b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a3f36f7e9e8252147d72a427c735b5d7b\">value</a></td></tr>\n<tr class=\"separator:a3f36f7e9e8252147d72a427c735b5d7b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6524501498362b74170adbf0250fba28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_raw_setting.html#a6524501498362b74170adbf0250fba28\">maybe_flag</a></td></tr>\n<tr class=\"separator:a6524501498362b74170adbf0250fba28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ad489cdd3d038e1cd7cae211fd9646431\" name=\"ad489cdd3d038e1cd7cae211fd9646431\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad489cdd3d038e1cd7cae211fd9646431\">&#9670;&nbsp;</a></span>key</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Settings::RawSetting::key</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a6524501498362b74170adbf0250fba28\" name=\"a6524501498362b74170adbf0250fba28\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6524501498362b74170adbf0250fba28\">&#9670;&nbsp;</a></span>maybe_flag</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::Settings::RawSetting::maybe_flag</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a3f36f7e9e8252147d72a427c735b5d7b\" name=\"a3f36f7e9e8252147d72a427c735b5d7b\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f36f7e9e8252147d72a427c735b5d7b\">&#9670;&nbsp;</a></span>value</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Settings::RawSetting::value</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"settings_8cpp.html\">settings.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_setting_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::SettingInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa\">bool32</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9\">float32</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707\">int32</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5\">uint32</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">tram::Settings::SettingInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_settings_1_1_setting_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Settings::SettingInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_settings.html\">Settings</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html\">SettingInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_settings_1_1_setting_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Settings::SettingInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a134ef5796b1bfc34a1d037fbbdad95d5\"><td class=\"memItemLeft\" >union {</td></tr>\n<tr class=\"memitem:a70b28478ab3a2b5c47a90362e12c168b\"><td class=\"memItemLeft\" >&#160;&#160;&#160;int32_t *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#aaab2c92712b3450a253e4eca1d648707\">int32</a></td></tr>\n<tr class=\"separator:a70b28478ab3a2b5c47a90362e12c168b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5fb9c2ca6d0be9f49c129f8cad44dd56\"><td class=\"memItemLeft\" >&#160;&#160;&#160;uint32_t *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a5d38111e0ad99f7248006277064dffe5\">uint32</a></td></tr>\n<tr class=\"separator:a5fb9c2ca6d0be9f49c129f8cad44dd56\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2aec31a6e79d8effbf6e0b7ac56227ea\"><td class=\"memItemLeft\" >&#160;&#160;&#160;float *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#af59a80050b35c6db46f3a65a25a8e8c9\">float32</a></td></tr>\n<tr class=\"separator:a2aec31a6e79d8effbf6e0b7ac56227ea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7c78db0d74ed82d4d7847b19935bc298\"><td class=\"memItemLeft\" >&#160;&#160;&#160;bool *&#160;&#160;&#160;<a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a09eb1679fe614e71bbc8a08ba3e593fa\">bool32</a></td></tr>\n<tr class=\"separator:a7c78db0d74ed82d4d7847b19935bc298\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a134ef5796b1bfc34a1d037fbbdad95d5\"><td class=\"memItemLeft\" valign=\"top\">};&#160;</td><td class=\"memItemRight\" valign=\"bottom\"></td></tr>\n<tr class=\"separator:a134ef5796b1bfc34a1d037fbbdad95d5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77fe25accfc80bff790e3f81ebfb527e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a77fe25accfc80bff790e3f81ebfb527e\">type</a></td></tr>\n<tr class=\"separator:a77fe25accfc80bff790e3f81ebfb527e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a50e929f975c24f00c030d31f89132d87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a50e929f975c24f00c030d31f89132d87\">name</a></td></tr>\n<tr class=\"separator:a50e929f975c24f00c030d31f89132d87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a15ded2e3664456c138ea8aad9f3704da\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_settings_1_1_setting_info.html#a15ded2e3664456c138ea8aad9f3704da\">flags</a></td></tr>\n<tr class=\"separator:a15ded2e3664456c138ea8aad9f3704da\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a134ef5796b1bfc34a1d037fbbdad95d5\" name=\"a134ef5796b1bfc34a1d037fbbdad95d5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a134ef5796b1bfc34a1d037fbbdad95d5\">&#9670;&nbsp;</a></span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">union  { ... }  tram::Settings::SettingInfo::@42</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a09eb1679fe614e71bbc8a08ba3e593fa\" name=\"a09eb1679fe614e71bbc8a08ba3e593fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a09eb1679fe614e71bbc8a08ba3e593fa\">&#9670;&nbsp;</a></span>bool32</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool* tram::Settings::SettingInfo::bool32</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a15ded2e3664456c138ea8aad9f3704da\" name=\"a15ded2e3664456c138ea8aad9f3704da\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15ded2e3664456c138ea8aad9f3704da\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::Settings::SettingInfo::flags</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af59a80050b35c6db46f3a65a25a8e8c9\" name=\"af59a80050b35c6db46f3a65a25a8e8c9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af59a80050b35c6db46f3a65a25a8e8c9\">&#9670;&nbsp;</a></span>float32</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float* tram::Settings::SettingInfo::float32</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aaab2c92712b3450a253e4eca1d648707\" name=\"aaab2c92712b3450a253e4eca1d648707\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaab2c92712b3450a253e4eca1d648707\">&#9670;&nbsp;</a></span>int32</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int32_t* tram::Settings::SettingInfo::int32</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a50e929f975c24f00c030d31f89132d87\" name=\"a50e929f975c24f00c030d31f89132d87\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50e929f975c24f00c030d31f89132d87\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">const char* tram::Settings::SettingInfo::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a77fe25accfc80bff790e3f81ebfb527e\" name=\"a77fe25accfc80bff790e3f81ebfb527e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77fe25accfc80bff790e3f81ebfb527e\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> tram::Settings::SettingInfo::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d38111e0ad99f7248006277064dffe5\" name=\"a5d38111e0ad99f7248006277064dffe5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d38111e0ad99f7248006277064dffe5\">&#9670;&nbsp;</a></span>uint32</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t* tram::Settings::SettingInfo::uint32</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"settings_8cpp.html\">settings.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_shared_entity_data-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::SharedEntityData Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">flags</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f\">id</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">position</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">rotation</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">tram::SharedEntityData</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_shared_entity_data.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::SharedEntityData Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html\">SharedEntityData</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_shared_entity_data-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::SharedEntityData Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters.  \n <a href=\"structtram_1_1_shared_entity_data.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a64c88d3fd0cd94c90c66f1dd9dd5ce9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">type</a></td></tr>\n<tr class=\"separator:a64c88d3fd0cd94c90c66f1dd9dd5ce9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4220b9dc04f5c5a94ae1a92347ae697f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint64_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4220b9dc04f5c5a94ae1a92347ae697f\">id</a> = 0</td></tr>\n<tr class=\"separator:a4220b9dc04f5c5a94ae1a92347ae697f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7b51e3157cac585cc29e5fac4e4c92e1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a7b51e3157cac585cc29e5fac4e4c92e1\">name</a></td></tr>\n<tr class=\"separator:a7b51e3157cac585cc29e5fac4e4c92e1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4a85b5f990cc351ec57869c3fe08335f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a4a85b5f990cc351ec57869c3fe08335f\">flags</a> = 0</td></tr>\n<tr class=\"separator:a4a85b5f990cc351ec57869c3fe08335f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af1759c89e46d55eb848b84f67cc0c3f1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#af1759c89e46d55eb848b84f67cc0c3f1\">position</a> = {0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:af1759c89e46d55eb848b84f67cc0c3f1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a08cdfe854b58bb8a32ca9594866186c5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_shared_entity_data.html#a08cdfe854b58bb8a32ca9594866186c5\">rotation</a> = {1.0f, 0.0f, 0.0f, 0.0f}</td></tr>\n<tr class=\"separator:a08cdfe854b58bb8a32ca9594866186c5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Basic <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> parameters. </p>\n<p >Used for <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> serialization. This struct contains the parameters that every <a class=\"el\" href=\"classtram_1_1_entity.html\" title=\"Entity base class.\">Entity</a> type shares in common. </p>\n</div><h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a4a85b5f990cc351ec57869c3fe08335f\" name=\"a4a85b5f990cc351ec57869c3fe08335f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a85b5f990cc351ec57869c3fe08335f\">&#9670;&nbsp;</a></span>flags</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::SharedEntityData::flags = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4220b9dc04f5c5a94ae1a92347ae697f\" name=\"a4220b9dc04f5c5a94ae1a92347ae697f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4220b9dc04f5c5a94ae1a92347ae697f\">&#9670;&nbsp;</a></span>id</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint64_t tram::SharedEntityData::id = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7b51e3157cac585cc29e5fac4e4c92e1\" name=\"a7b51e3157cac585cc29e5fac4e4c92e1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b51e3157cac585cc29e5fac4e4c92e1\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::SharedEntityData::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af1759c89e46d55eb848b84f67cc0c3f1\" name=\"af1759c89e46d55eb848b84f67cc0c3f1\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af1759c89e46d55eb848b84f67cc0c3f1\">&#9670;&nbsp;</a></span>position</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> tram::SharedEntityData::position = {0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a08cdfe854b58bb8a32ca9594866186c5\" name=\"a08cdfe854b58bb8a32ca9594866186c5\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08cdfe854b58bb8a32ca9594866186c5\">&#9670;&nbsp;</a></span>rotation</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> tram::SharedEntityData::rotation = {1.0f, 0.0f, 0.0f, 0.0f}</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a64c88d3fd0cd94c90c66f1dd9dd5ce9e\" name=\"a64c88d3fd0cd94c90c66f1dd9dd5ce9e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64c88d3fd0cd94c90c66f1dd9dd5ce9e\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::SharedEntityData::type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"entity_8h_source.html\">entity.h</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_signal-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Signal Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">ACTIVATE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">CLOSE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">data</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">delay</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">END_CLOSE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">END_OPEN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">ENTER_TRIGGER</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">EXIT_TRIGGER</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">GetName</a>(signal_t type)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">GetType</a>(name_t name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">KILL</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">LAST_SIGNAL</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">limit</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">LOCKED_USE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">message_type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">OPEN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">PROGRESS</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">receiver</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">Register</a>(const char *name)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">SPAWN</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">TRIGGER</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">Type</a> enum name</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">type</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">USE</a> enum value</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_signal.html\">tram::Signal</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_signal.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Signal Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_signal.html\">Signal</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-types\">Public Types</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_signal-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Signal Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template.  \n <a href=\"structtram_1_1_signal.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"signal_8h_source.html\">framework/signal.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\nPublic Types</h2></td></tr>\n<tr class=\"memitem:ac4962f60874f650d905fb2a935922af6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">Type</a> : signal_t { <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\">SPAWN</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\">KILL</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\">ACTIVATE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\">USE</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\">LOCKED_USE</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\">OPEN</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\">CLOSE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\">END_OPEN</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\">END_CLOSE</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\">TRIGGER</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\">ENTER_TRIGGER</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\">EXIT_TRIGGER</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\">PROGRESS</a>\n, <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\">LAST_SIGNAL</a>\n<br />\n }</td></tr>\n<tr class=\"separator:ac4962f60874f650d905fb2a935922af6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a4cec75e6f5a3987de0924f8c204565f8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">Register</a> (const char *name)</td></tr>\n<tr class=\"memdesc:a4cec75e6f5a3987de0924f8c204565f8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new message type.  <a href=\"structtram_1_1_signal.html#a4cec75e6f5a3987de0924f8c204565f8\">More...</a><br /></td></tr>\n<tr class=\"separator:a4cec75e6f5a3987de0924f8c204565f8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a326e6aa18ff7b00902541db375c050af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">GetType</a> (<a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> name)</td></tr>\n<tr class=\"memdesc:a326e6aa18ff7b00902541db375c050af\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Finds a message type from a name.  <a href=\"structtram_1_1_signal.html#a326e6aa18ff7b00902541db375c050af\">More...</a><br /></td></tr>\n<tr class=\"separator:a326e6aa18ff7b00902541db375c050af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0f13121126c5ae11e4ae73a4cbfdbcdd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">GetName</a> (<a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> <a class=\"el\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">type</a>)</td></tr>\n<tr class=\"memdesc:a0f13121126c5ae11e4ae73a4cbfdbcdd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Gets a nessage type name.  <a href=\"structtram_1_1_signal.html#a0f13121126c5ae11e4ae73a4cbfdbcdd\">More...</a><br /></td></tr>\n<tr class=\"separator:a0f13121126c5ae11e4ae73a4cbfdbcdd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a0a38e6da9341346a46338ba52c2be472\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a0a38e6da9341346a46338ba52c2be472\">type</a> = <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a></td></tr>\n<tr class=\"separator:a0a38e6da9341346a46338ba52c2be472\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a51beeb43406c2be5e68d4f43265e7eb6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a51beeb43406c2be5e68d4f43265e7eb6\">receiver</a></td></tr>\n<tr class=\"separator:a51beeb43406c2be5e68d4f43265e7eb6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae11edb11f1051d538fd09157108bed26\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#ae11edb11f1051d538fd09157108bed26\">data</a></td></tr>\n<tr class=\"separator:ae11edb11f1051d538fd09157108bed26\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac598b7c14aded31cbd9b2eedb4e5dfe0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#ac598b7c14aded31cbd9b2eedb4e5dfe0\">delay</a></td></tr>\n<tr class=\"separator:ac598b7c14aded31cbd9b2eedb4e5dfe0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aeea99e2596e8761fc321edb7876fd138\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#aeea99e2596e8761fc321edb7876fd138\">limit</a></td></tr>\n<tr class=\"separator:aeea99e2596e8761fc321edb7876fd138\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7781884f42b0b91a9adf65f682ee88b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_signal.html#a7781884f42b0b91a9adf65f682ee88b9\">message_type</a></td></tr>\n<tr class=\"separator:a7781884f42b0b91a9adf65f682ee88b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p ><a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> template. </p>\n<p >Table of <a class=\"el\" href=\"structtram_1_1_message.html\" title=\"Message data.\">Message</a> templates that can be sent off by entities on certain triggers.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/signal.html\">https://racenis.github.io/tram-sdk/documentation/framework/signal.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n<a id=\"ac4962f60874f650d905fb2a935922af6\" name=\"ac4962f60874f650d905fb2a935922af6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4962f60874f650d905fb2a935922af6\">&#9670;&nbsp;</a></span>Type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">enum <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6\">tram::Signal::Type</a> : <a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<table class=\"fieldtable\">\n<tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\" name=\"ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\"></a>NONE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\" name=\"ac4962f60874f650d905fb2a935922af6a9690ebb5954232b7d16f29442a036476\"></a>SPAWN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\" name=\"ac4962f60874f650d905fb2a935922af6a3553b17921e781edc3cf5231e7d074e6\"></a>KILL&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\" name=\"ac4962f60874f650d905fb2a935922af6a3df791ecf039d9c7b4bc33d2d309d402\"></a>ACTIVATE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\" name=\"ac4962f60874f650d905fb2a935922af6a82485cb8296d8eb5604d3aba9e489e29\"></a>USE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\" name=\"ac4962f60874f650d905fb2a935922af6ae8146d8232bb6831a1194a39c668fd78\"></a>LOCKED_USE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\" name=\"ac4962f60874f650d905fb2a935922af6ab0e0dc7772a2218a1e9d77acfbd36927\"></a>OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\" name=\"ac4962f60874f650d905fb2a935922af6a03cc5db0ca5e74167bf7cdee1feb3315\"></a>CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\" name=\"ac4962f60874f650d905fb2a935922af6a36ae2c817312031d045362ee51b2933f\"></a>END_OPEN&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\" name=\"ac4962f60874f650d905fb2a935922af6a220403760a74088dbd4275cec3bbd9d2\"></a>END_CLOSE&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\" name=\"ac4962f60874f650d905fb2a935922af6afedf8321ba6bcc2dffe71710785714fd\"></a>TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\" name=\"ac4962f60874f650d905fb2a935922af6a8e4d860c423ec5e375a1f45c182f402c\"></a>ENTER_TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\" name=\"ac4962f60874f650d905fb2a935922af6a2eb75594d68f8fa95cd2101a5a3e9ee4\"></a>EXIT_TRIGGER&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\" name=\"ac4962f60874f650d905fb2a935922af6a7cc11bd95a71a01ae61ef329e2a149f4\"></a>PROGRESS&#160;</td><td class=\"fielddoc\"></td></tr>\n<tr><td class=\"fieldname\"><a id=\"ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\" name=\"ac4962f60874f650d905fb2a935922af6a8777185c2588cce0992b52afd378c79f\"></a>LAST_SIGNAL&#160;</td><td class=\"fielddoc\"></td></tr>\n</table>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a0f13121126c5ae11e4ae73a4cbfdbcdd\" name=\"a0f13121126c5ae11e4ae73a4cbfdbcdd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f13121126c5ae11e4ae73a4cbfdbcdd\">&#9670;&nbsp;</a></span>GetName()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Signal::GetName </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a>&#160;</td>\n          <td class=\"paramname\"><em>type</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Gets a nessage type name. </p>\n\n</div>\n</div>\n<a id=\"a326e6aa18ff7b00902541db375c050af\" name=\"a326e6aa18ff7b00902541db375c050af\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a326e6aa18ff7b00902541db375c050af\">&#9670;&nbsp;</a></span>GetType()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> tram::Signal::GetType </td>\n          <td>(</td>\n          <td class=\"paramtype\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Finds a message type from a name. </p>\n\n</div>\n</div>\n<a id=\"a4cec75e6f5a3987de0924f8c204565f8\" name=\"a4cec75e6f5a3987de0924f8c204565f8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4cec75e6f5a3987de0924f8c204565f8\">&#9670;&nbsp;</a></span>Register()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> tram::Signal::Register </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>name</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Registers a new message type. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>Unique message type number. </dd></dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae11edb11f1051d538fd09157108bed26\" name=\"ae11edb11f1051d538fd09157108bed26\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae11edb11f1051d538fd09157108bed26\">&#9670;&nbsp;</a></span>data</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void* tram::Signal::data</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ac598b7c14aded31cbd9b2eedb4e5dfe0\" name=\"ac598b7c14aded31cbd9b2eedb4e5dfe0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac598b7c14aded31cbd9b2eedb4e5dfe0\">&#9670;&nbsp;</a></span>delay</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">float tram::Signal::delay</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aeea99e2596e8761fc321edb7876fd138\" name=\"aeea99e2596e8761fc321edb7876fd138\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeea99e2596e8761fc321edb7876fd138\">&#9670;&nbsp;</a></span>limit</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Signal::limit</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a7781884f42b0b91a9adf65f682ee88b9\" name=\"a7781884f42b0b91a9adf65f682ee88b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7781884f42b0b91a9adf65f682ee88b9\">&#9670;&nbsp;</a></span>message_type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2d629e975ff280fbd5d11c40edb519f0\">message_t</a> tram::Signal::message_type</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a51beeb43406c2be5e68d4f43265e7eb6\" name=\"a51beeb43406c2be5e68d4f43265e7eb6\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51beeb43406c2be5e68d4f43265e7eb6\">&#9670;&nbsp;</a></span>receiver</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a> tram::Signal::receiver</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a38e6da9341346a46338ba52c2be472\" name=\"a0a38e6da9341346a46338ba52c2be472\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a38e6da9341346a46338ba52c2be472\">&#9670;&nbsp;</a></span>type</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram.html#a2efd897a3a954a002664292b5d6264d6\">signal_t</a> tram::Signal::type = <a class=\"el\" href=\"structtram_1_1_signal.html#ac4962f60874f650d905fb2a935922af6a0cc507ea9a180827724f623883db14b4\">NONE</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"signal_8h_source.html\">signal.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"signal_8cpp.html\">signal.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_stats_1_1_system_stat-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">Stats</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">SystemStat</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::Stats::SystemStat Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3\">average_count</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa\">time_spent</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f\">time_spent_average</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859\">time_spent_average_collated</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2\">time_spent_collated</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae\">time_spent_total</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24\">time_started</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">tram::Stats::SystemStat</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_stats_1_1_system_stat.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::Stats::SystemStat Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_stats.html\">Stats</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html\">SystemStat</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_stats_1_1_system_stat-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::Stats::SystemStat Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a5a348062859b92b2ed6defce303d9e24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a5a348062859b92b2ed6defce303d9e24\">time_started</a> = -1.0f</td></tr>\n<tr class=\"separator:a5a348062859b92b2ed6defce303d9e24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a32672156fe327f706f10a187b186b1fa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a32672156fe327f706f10a187b186b1fa\">time_spent</a> = 0.0f</td></tr>\n<tr class=\"separator:a32672156fe327f706f10a187b186b1fa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a16f80dfae2be619ec215d29cd18390d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a16f80dfae2be619ec215d29cd18390d2\">time_spent_collated</a> = 0.0f</td></tr>\n<tr class=\"separator:a16f80dfae2be619ec215d29cd18390d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1d92dce48ee382f655b1d0412604d4ae\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a1d92dce48ee382f655b1d0412604d4ae\">time_spent_total</a> = 0.0f</td></tr>\n<tr class=\"separator:a1d92dce48ee382f655b1d0412604d4ae\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a93bb42e1b4287d0ee87ea740f51f561f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a93bb42e1b4287d0ee87ea740f51f561f\">time_spent_average</a> = 0.0f</td></tr>\n<tr class=\"separator:a93bb42e1b4287d0ee87ea740f51f561f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a347ff65490bda5b7174efe440dac0859\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#a347ff65490bda5b7174efe440dac0859\">time_spent_average_collated</a> = 0.0f</td></tr>\n<tr class=\"separator:a347ff65490bda5b7174efe440dac0859\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf35b66321a2c018ca20c7a53c0c2ca3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_stats_1_1_system_stat.html#acf35b66321a2c018ca20c7a53c0c2ca3\">average_count</a> = 0</td></tr>\n<tr class=\"separator:acf35b66321a2c018ca20c7a53c0c2ca3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"acf35b66321a2c018ca20c7a53c0c2ca3\" name=\"acf35b66321a2c018ca20c7a53c0c2ca3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf35b66321a2c018ca20c7a53c0c2ca3\">&#9670;&nbsp;</a></span>average_count</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">int tram::Stats::SystemStat::average_count = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a32672156fe327f706f10a187b186b1fa\" name=\"a32672156fe327f706f10a187b186b1fa\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32672156fe327f706f10a187b186b1fa\">&#9670;&nbsp;</a></span>time_spent</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_spent = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a93bb42e1b4287d0ee87ea740f51f561f\" name=\"a93bb42e1b4287d0ee87ea740f51f561f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93bb42e1b4287d0ee87ea740f51f561f\">&#9670;&nbsp;</a></span>time_spent_average</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_spent_average = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a347ff65490bda5b7174efe440dac0859\" name=\"a347ff65490bda5b7174efe440dac0859\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a347ff65490bda5b7174efe440dac0859\">&#9670;&nbsp;</a></span>time_spent_average_collated</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_spent_average_collated = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a16f80dfae2be619ec215d29cd18390d2\" name=\"a16f80dfae2be619ec215d29cd18390d2\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16f80dfae2be619ec215d29cd18390d2\">&#9670;&nbsp;</a></span>time_spent_collated</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_spent_collated = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1d92dce48ee382f655b1d0412604d4ae\" name=\"a1d92dce48ee382f655b1d0412604d4ae\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d92dce48ee382f655b1d0412604d4ae\">&#9670;&nbsp;</a></span>time_spent_total</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_spent_total = 0.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5a348062859b92b2ed6defce303d9e24\" name=\"a5a348062859b92b2ed6defce303d9e24\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a348062859b92b2ed6defce303d9e24\">&#9670;&nbsp;</a></span>time_started</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">double tram::Stats::SystemStat::time_started = -1.0f</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"stats_8cpp.html\">stats.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_system_1_1_system_info-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">System</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">SystemInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::System::SystemInfo Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848\">name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd\">short_name</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb\">state</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_system_1_1_system_info.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::System::SystemInfo Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">System</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">SystemInfo</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_system_1_1_system_info-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::System::SystemInfo Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:abaf1fcdb583a3c57d96ddcd49699a848\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const  *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#abaf1fcdb583a3c57d96ddcd49699a848\">name</a></td></tr>\n<tr class=\"separator:abaf1fcdb583a3c57d96ddcd49699a848\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af25347b2e3971892ca5c6cd2b9b782cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const  *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#af25347b2e3971892ca5c6cd2b9b782cd\">short_name</a></td></tr>\n<tr class=\"separator:af25347b2e3971892ca5c6cd2b9b782cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a44f69f3ce380405fc41b7dfff7079beb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html#a44f69f3ce380405fc41b7dfff7079beb\">state</a></td></tr>\n<tr class=\"separator:a44f69f3ce380405fc41b7dfff7079beb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"abaf1fcdb583a3c57d96ddcd49699a848\" name=\"abaf1fcdb583a3c57d96ddcd49699a848\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abaf1fcdb583a3c57d96ddcd49699a848\">&#9670;&nbsp;</a></span>name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char const* tram::System::SystemInfo::name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af25347b2e3971892ca5c6cd2b9b782cd\" name=\"af25347b2e3971892ca5c6cd2b9b782cd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af25347b2e3971892ca5c6cd2b9b782cd\">&#9670;&nbsp;</a></span>short_name</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">char const* tram::System::SystemInfo::short_name</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a44f69f3ce380405fc41b7dfff7079beb\" name=\"a44f69f3ce380405fc41b7dfff7079beb\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44f69f3ce380405fc41b7dfff7079beb\">&#9670;&nbsp;</a></span>state</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a4703b937891576671c79a6d02a63c0a2\">SystemState</a> tram::System::SystemInfo::state</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"framework_2system_8cpp.html\">system.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_trigger_poll_callback-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">TriggerPollCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::TriggerPollCallback Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">tram::TriggerPollCallback</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#aa21fd40d859f7d6d2062efe86a9b64b9\">addSingleResult</a>(btManifoldPoint &amp;cp, const btCollisionObjectWrapper *coll_obj0, int, int, const btCollisionObjectWrapper *coll_obj1, int, int)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">tram::TriggerPollCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#ae854475d175f025111d7f4b7755c5333\">collisions</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">tram::TriggerPollCallback</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#aa87c52f9d19725daa3f96d215f35afa0\">TriggerPollCallback</a>(std::vector&lt; Physics::Collision &gt; &amp;collisions)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">tram::TriggerPollCallback</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_trigger_poll_callback.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::TriggerPollCallback Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">TriggerPollCallback</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_trigger_poll_callback-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::TriggerPollCallback Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"dynheader\">\nInheritance diagram for tram::TriggerPollCallback:</div>\n<div class=\"dyncontent\">\n <div class=\"center\">\n  <img src=\"structtram_1_1_trigger_poll_callback.png\" alt=\"\"/>\n </div></div>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aa87c52f9d19725daa3f96d215f35afa0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#aa87c52f9d19725daa3f96d215f35afa0\">TriggerPollCallback</a> (std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;<a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#ae854475d175f025111d7f4b7755c5333\">collisions</a>)</td></tr>\n<tr class=\"separator:aa87c52f9d19725daa3f96d215f35afa0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa21fd40d859f7d6d2062efe86a9b64b9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">btScalar&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#aa21fd40d859f7d6d2062efe86a9b64b9\">addSingleResult</a> (btManifoldPoint &amp;cp, const btCollisionObjectWrapper *coll_obj0, int, int, const btCollisionObjectWrapper *coll_obj1, int, int)</td></tr>\n<tr class=\"separator:aa21fd40d859f7d6d2062efe86a9b64b9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:ae854475d175f025111d7f4b7755c5333\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html#ae854475d175f025111d7f4b7755c5333\">collisions</a></td></tr>\n<tr class=\"separator:ae854475d175f025111d7f4b7755c5333\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aa87c52f9d19725daa3f96d215f35afa0\" name=\"aa87c52f9d19725daa3f96d215f35afa0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa87c52f9d19725daa3f96d215f35afa0\">&#9670;&nbsp;</a></span>TriggerPollCallback()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::TriggerPollCallback::TriggerPollCallback </td>\n          <td>(</td>\n          <td class=\"paramtype\">std::vector&lt; <a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> &gt; &amp;&#160;</td>\n          <td class=\"paramname\"><em>collisions</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"aa21fd40d859f7d6d2062efe86a9b64b9\" name=\"aa21fd40d859f7d6d2062efe86a9b64b9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa21fd40d859f7d6d2062efe86a9b64b9\">&#9670;&nbsp;</a></span>addSingleResult()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">btScalar tram::TriggerPollCallback::addSingleResult </td>\n          <td>(</td>\n          <td class=\"paramtype\">btManifoldPoint &amp;&#160;</td>\n          <td class=\"paramname\"><em>cp</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btCollisionObjectWrapper *&#160;</td>\n          <td class=\"paramname\"><em>coll_obj0</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">const btCollisionObjectWrapper *&#160;</td>\n          <td class=\"paramname\"><em>coll_obj1</em>, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\">, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">int&#160;</td>\n          <td class=\"paramname\">&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"ae854475d175f025111d7f4b7755c5333\" name=\"ae854475d175f025111d7f4b7755c5333\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae854475d175f025111d7f4b7755c5333\">&#9670;&nbsp;</a></span>collisions</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">std::vector&lt;<a class=\"el\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>&gt;&amp; tram::TriggerPollCallback::collisions</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/components/<a class=\"el\" href=\"components_2trigger_8cpp.html\">trigger.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_u_i_1_1_key_binding-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">UI</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">KeyBinding</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::UI::KeyBinding Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">tram::UI::KeyBinding</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41\">action</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">tram::UI::KeyBinding</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89\">special_option</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">tram::UI::KeyBinding</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd\">special_option2</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">tram::UI::KeyBinding</a></td><td class=\"entry\"></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_u_i_1_1_key_binding.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::UI::KeyBinding Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">UI</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">KeyBinding</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_u_i_1_1_key_binding-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::UI::KeyBinding Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a891c15910a42f723bbc0db27e2dd3e41\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#a891c15910a42f723bbc0db27e2dd3e41\">action</a> = <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">KEY_ACTION_NONE</a></td></tr>\n<tr class=\"separator:a891c15910a42f723bbc0db27e2dd3e41\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad131bfe825ffebbbe5129c31adab3f89\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#ad131bfe825ffebbbe5129c31adab3f89\">special_option</a> )(void) = nullptr</td></tr>\n<tr class=\"separator:ad131bfe825ffebbbe5129c31adab3f89\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af82a3db19fbf9a3a80f768ad2f129acd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html#af82a3db19fbf9a3a80f768ad2f129acd\">special_option2</a> )(<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>) = nullptr</td></tr>\n<tr class=\"separator:af82a3db19fbf9a3a80f768ad2f129acd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a891c15910a42f723bbc0db27e2dd3e41\" name=\"a891c15910a42f723bbc0db27e2dd3e41\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a891c15910a42f723bbc0db27e2dd3e41\">&#9670;&nbsp;</a></span>action</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> tram::UI::KeyBinding::action = <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">KEY_ACTION_NONE</a></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ad131bfe825ffebbbe5129c31adab3f89\" name=\"ad131bfe825ffebbbe5129c31adab3f89\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad131bfe825ffebbbe5129c31adab3f89\">&#9670;&nbsp;</a></span>special_option</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::UI::KeyBinding::special_option) (void) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"af82a3db19fbf9a3a80f768ad2f129acd\" name=\"af82a3db19fbf9a3a80f768ad2f129acd\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af82a3db19fbf9a3a80f768ad2f129acd\">&#9670;&nbsp;</a></span>special_option2</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">void(* tram::UI::KeyBinding::special_option2) (<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>) = nullptr</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following file:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"ui_8cpp.html\">ui.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_u_i_d-members.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Member List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">tram::UID Member List</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>This is the complete list of members for <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a>, including all inherited members.</p>\n<table class=\"directory\">\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">is_empty</a>(const char *)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">is_valid</a>(const UID &amp;)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a></td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">no_quote</a>(const char *)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">static</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d\">operator bool</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9\">operator char const *</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801\">operator std::string</a>() const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">operator=</a>(const UID &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">operator==</a>(const UID &amp;other) const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587\">operator==</a>(const char *other) const</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82\">UID</a>(const UID &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a8b30e026e1776200b7f91f67c7492aea\">UID</a>(const std::string &amp;value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"odd\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a4bfd2fabbf7538d9145235b83784332a\">UID</a>(const char *value)</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"></td></tr>\n  <tr class=\"even\"><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">~UID</a>()</td><td class=\"entry\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td><td class=\"entry\"><span class=\"mlabel\">inline</span></td></tr>\n</table></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/structtram_1_1_u_i_d.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: tram::UID Struct Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"namespacetram.html\">tram</a></li><li class=\"navelem\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#pub-methods\">Public Member Functions</a> &#124;\n<a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n<a href=\"#pub-attribs\">Public Attributes</a> &#124;\n<a href=\"structtram_1_1_u_i_d-members.html\">List of all members</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">tram::UID Struct Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Interned string type.  \n <a href=\"structtram_1_1_u_i_d.html#details\">More...</a></p>\n\n<p><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\nPublic Member Functions</h2></td></tr>\n<tr class=\"memitem:aab45feed090c6e1b82756eb8a47c8c2e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a> ()</td></tr>\n<tr class=\"separator:aab45feed090c6e1b82756eb8a47c8c2e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5d4fdf9f636c6e28fefbb716b0c1ad82\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82\">UID</a> (const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;value)</td></tr>\n<tr class=\"separator:a5d4fdf9f636c6e28fefbb716b0c1ad82\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a43f5c1a2523a9ed0ea40b42b730ab835\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">~UID</a> ()</td></tr>\n<tr class=\"separator:a43f5c1a2523a9ed0ea40b42b730ab835\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8b30e026e1776200b7f91f67c7492aea\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a8b30e026e1776200b7f91f67c7492aea\">UID</a> (const std::string &amp;value)</td></tr>\n<tr class=\"separator:a8b30e026e1776200b7f91f67c7492aea\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a4bfd2fabbf7538d9145235b83784332a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a4bfd2fabbf7538d9145235b83784332a\">UID</a> (const char *value)</td></tr>\n<tr class=\"memdesc:a4bfd2fabbf7538d9145235b83784332a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Interns a string.  <a href=\"structtram_1_1_u_i_d.html#a4bfd2fabbf7538d9145235b83784332a\">More...</a><br /></td></tr>\n<tr class=\"separator:a4bfd2fabbf7538d9145235b83784332a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ae2a5ed9b778bcc983f12591981d2802e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">operator=</a> (const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;value)</td></tr>\n<tr class=\"separator:ae2a5ed9b778bcc983f12591981d2802e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0a5dbb6d93d93b65abf71ae5d84d4823\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">operator==</a> (const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;other) const</td></tr>\n<tr class=\"separator:a0a5dbb6d93d93b65abf71ae5d84d4823\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1dbeaf14b2261159f5a2569fc5289587\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587\">operator==</a> (const char *other) const</td></tr>\n<tr class=\"separator:a1dbeaf14b2261159f5a2569fc5289587\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a711568eafe8684f867cadc960073424d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d\">operator bool</a> ()</td></tr>\n<tr class=\"separator:a711568eafe8684f867cadc960073424d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adef010b946f7cc1ea7f7ecac7df3e801\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#adef010b946f7cc1ea7f7ecac7df3e801\">operator std::string</a> () const</td></tr>\n<tr class=\"separator:adef010b946f7cc1ea7f7ecac7df3e801\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a9af82bbfd8dcab2fc38cc817a2dbffe9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9af82bbfd8dcab2fc38cc817a2dbffe9\">operator char const *</a> () const</td></tr>\n<tr class=\"separator:a9af82bbfd8dcab2fc38cc817a2dbffe9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\nStatic Public Member Functions</h2></td></tr>\n<tr class=\"memitem:a1b9ca41783891921e10ab8eea617db47\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">no_quote</a> (const char *)</td></tr>\n<tr class=\"memdesc:a1b9ca41783891921e10ab8eea617db47\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the name will need quotes.  <a href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">More...</a><br /></td></tr>\n<tr class=\"separator:a1b9ca41783891921e10ab8eea617db47\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c632137cc995abd646d872429f059a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">is_empty</a> (const char *)</td></tr>\n<tr class=\"memdesc:a1c632137cc995abd646d872429f059a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether a string consists of only whitespace.  <a href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c632137cc995abd646d872429f059a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a819c4f8b86a7fb91519937f2cf8e4449\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">is_valid</a> (const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;)</td></tr>\n<tr class=\"memdesc:a819c4f8b86a7fb91519937f2cf8e4449\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks whether the name is valid.  <a href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">More...</a><br /></td></tr>\n<tr class=\"separator:a819c4f8b86a7fb91519937f2cf8e4449\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\nPublic Attributes</h2></td></tr>\n<tr class=\"memitem:a9d2e43bf7b4f21af160251d969e37af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a> = 0</td></tr>\n<tr class=\"separator:a9d2e43bf7b4f21af160251d969e37af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Interned string type. </p>\n<p >Should intern strings in O(1) as long as the total number of interned strings is lower than UID_LIMIT. In either case, interned string comparison will always be O(1). If you are converting a lot of strings, it is best to do so early, because the internment process, altough nearly constant time, does, in fact, take some time.</p>\n<dl class=\"section see\"><dt>See also</dt><dd><a href=\"https://racenis.github.io/tram-sdk/documentation/framework/uid.html\">https://racenis.github.io/tram-sdk/documentation/framework/uid.html</a> </dd></dl>\n</div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n<a id=\"aab45feed090c6e1b82756eb8a47c8c2e\" name=\"aab45feed090c6e1b82756eb8a47c8c2e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab45feed090c6e1b82756eb8a47c8c2e\">&#9670;&nbsp;</a></span>UID() <span class=\"overload\">[1/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::UID </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a5d4fdf9f636c6e28fefbb716b0c1ad82\" name=\"a5d4fdf9f636c6e28fefbb716b0c1ad82\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d4fdf9f636c6e28fefbb716b0c1ad82\">&#9670;&nbsp;</a></span>UID() <span class=\"overload\">[2/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::UID </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a43f5c1a2523a9ed0ea40b42b730ab835\" name=\"a43f5c1a2523a9ed0ea40b42b730ab835\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43f5c1a2523a9ed0ea40b42b730ab835\">&#9670;&nbsp;</a></span>~UID()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::~UID </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a8b30e026e1776200b7f91f67c7492aea\" name=\"a8b30e026e1776200b7f91f67c7492aea\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b30e026e1776200b7f91f67c7492aea\">&#9670;&nbsp;</a></span>UID() <span class=\"overload\">[3/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::UID </td>\n          <td>(</td>\n          <td class=\"paramtype\">const std::string &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a4bfd2fabbf7538d9145235b83784332a\" name=\"a4bfd2fabbf7538d9145235b83784332a\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4bfd2fabbf7538d9145235b83784332a\">&#9670;&nbsp;</a></span>UID() <span class=\"overload\">[4/4]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::UID </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n<p>Interns a string. </p>\n<p >This will intern the string and return a little <a class=\"el\" href=\"structtram_1_1_u_i_d.html\" title=\"Interned string type.\">UID</a> that you can put in your little pockets and take away with you. For best results I recommend using the no_quotes() and <a class=\"el\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\" title=\"Checks whether a string consists of only whitespace.\">is_empty()</a> functions to first check whether a given string will also be a good name. A string that isn't empty and doesn't need quotes is a good name. </p><dl class=\"params\"><dt>Parameters</dt><dd>\n  <table class=\"params\">\n    <tr><td class=\"paramname\">value</td><td>The string which will be interned. </td></tr>\n  </table>\n  </dd>\n</dl>\n<dl class=\"section note\"><dt>Note</dt><dd>Empty strings and <br  />\n </dd></dl>\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Function Documentation</h2>\n<a id=\"a1c632137cc995abd646d872429f059a0\" name=\"a1c632137cc995abd646d872429f059a0\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c632137cc995abd646d872429f059a0\">&#9670;&nbsp;</a></span>is_empty()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UID::is_empty </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>str</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether a string consists of only whitespace. </p>\n<dl class=\"section return\"><dt>Returns</dt><dd>True, if string contains at least a single non-whitespace character. </dd></dl>\n\n</div>\n</div>\n<a id=\"a819c4f8b86a7fb91519937f2cf8e4449\" name=\"a819c4f8b86a7fb91519937f2cf8e4449\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a819c4f8b86a7fb91519937f2cf8e4449\">&#9670;&nbsp;</a></span>is_valid()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UID::is_valid </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the name is valid. </p>\n<p >Due to bad memory handling practices, it is possible to create a name with such a key, that when this name's string is looked up from the string table and dereferenced, a segfault occurs. This function checks whether a segfault is likely to occur when given a name to check. This is done by a simple bounds check on the string table. </p><dl class=\"section return\"><dt>Returns</dt><dd>True, if using a name is safe. </dd></dl>\n\n</div>\n</div>\n<a id=\"a1b9ca41783891921e10ab8eea617db47\" name=\"a1b9ca41783891921e10ab8eea617db47\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b9ca41783891921e10ab8eea617db47\">&#9670;&nbsp;</a></span>no_quote()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UID::no_quote </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>str</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n<p>Checks whether the name will need quotes. </p>\n<p >When parsing a name from a text file, if a name has spaces in it, then it will require quotes around it to be parsed in correctly. This function checks whether a certain string will be able to be parsed as a name correctly, without quotes. </p><dl class=\"section return\"><dt>Returns</dt><dd>True, if the string won't need quotes. </dd></dl>\n\n</div>\n</div>\n<a id=\"a711568eafe8684f867cadc960073424d\" name=\"a711568eafe8684f867cadc960073424d\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a711568eafe8684f867cadc960073424d\">&#9670;&nbsp;</a></span>operator bool()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::operator bool </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">explicit</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a9af82bbfd8dcab2fc38cc817a2dbffe9\" name=\"a9af82bbfd8dcab2fc38cc817a2dbffe9\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9af82bbfd8dcab2fc38cc817a2dbffe9\">&#9670;&nbsp;</a></span>operator char const *()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::operator char const * </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adef010b946f7cc1ea7f7ecac7df3e801\" name=\"adef010b946f7cc1ea7f7ecac7df3e801\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adef010b946f7cc1ea7f7ecac7df3e801\">&#9670;&nbsp;</a></span>operator std::string()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">tram::UID::operator std::string </td>\n          <td>(</td>\n          <td class=\"paramname\"></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"ae2a5ed9b778bcc983f12591981d2802e\" name=\"ae2a5ed9b778bcc983f12591981d2802e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2a5ed9b778bcc983f12591981d2802e\">&#9670;&nbsp;</a></span>operator=()</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp; tram::UID::operator= </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>value</em></td><td>)</td>\n          <td></td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a1dbeaf14b2261159f5a2569fc5289587\" name=\"a1dbeaf14b2261159f5a2569fc5289587\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1dbeaf14b2261159f5a2569fc5289587\">&#9670;&nbsp;</a></span>operator==() <span class=\"overload\">[1/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UID::operator== </td>\n          <td>(</td>\n          <td class=\"paramtype\">const char *&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"a0a5dbb6d93d93b65abf71ae5d84d4823\" name=\"a0a5dbb6d93d93b65abf71ae5d84d4823\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a5dbb6d93d93b65abf71ae5d84d4823\">&#9670;&nbsp;</a></span>operator==() <span class=\"overload\">[2/2]</span></h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n<table class=\"mlabels\">\n  <tr>\n  <td class=\"mlabels-left\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">bool tram::UID::operator== </td>\n          <td>(</td>\n          <td class=\"paramtype\">const <a class=\"el\" href=\"structtram_1_1_u_i_d.html\">UID</a> &amp;&#160;</td>\n          <td class=\"paramname\"><em>other</em></td><td>)</td>\n          <td> const</td>\n        </tr>\n      </table>\n  </td>\n  <td class=\"mlabels-right\">\n<span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n  </tr>\n</table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<h2 class=\"groupheader\">Member Data Documentation</h2>\n<a id=\"a9d2e43bf7b4f21af160251d969e37af8\" name=\"a9d2e43bf7b4f21af160251d969e37af8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9d2e43bf7b4f21af160251d969e37af8\">&#9670;&nbsp;</a></span>key</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">uint32_t tram::UID::key = 0</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<hr/>The documentation for this struct was generated from the following files:<ul>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"uid_8h_source.html\">uid.h</a></li>\n<li>C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/<a class=\"el\" href=\"uid_8cpp.html\">uid.cpp</a></li>\n</ul>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/system_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;cassert&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_system_1_1_system_info.html\">tram::System::SystemInfo</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_system\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">tram::System</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a> (char const *name, char const *short_name)</td></tr>\n<tr class=\"memdesc:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new system.  <a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">More...</a><br /></td></tr>\n<tr class=\"separator:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the full name of a system.  <a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:aa9b274cc4e89cca2157eae886db07355\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the short name of a system.  <a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a268bed781cdfb281916c2475f969b55d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a> (uint32_t system, bool is_initialized)</td></tr>\n<tr class=\"memdesc:a268bed781cdfb281916c2475f969b55d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the initialization status of a system.  <a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">More...</a><br /></td></tr>\n<tr class=\"separator:a268bed781cdfb281916c2475f969b55d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is initialized.  <a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">tram::System::SetUpdated</a> (uint32_t system, bool is_updated)</td></tr>\n<tr class=\"memdesc:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the update status of a system.  <a href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">More...</a><br /></td></tr>\n<tr class=\"separator:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">tram::System::IsUpdated</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is updated.  <a href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a> ()</td></tr>\n<tr class=\"memdesc:a338ea827ae004b8133debac8bb1428a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the total count of registered systems.  <a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/system_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">system.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"system_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_system\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html\">tram::System</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></td></tr>\n<tr class=\"separator:a3480b59cb32a6f70ad1fce1626b64e40\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System::System</a> : system_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a582c1f270126216b06b4e1d269652651\">tram::System::SYSTEM_CORE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65af2c906ce1741b06949a236ff62d12fa6\">tram::System::SYSTEM_PLATFORM</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a69970478f403f6145a4010211cd6f06a\">tram::System::SYSTEM_UI</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a50af422f0c2ebd12c2ee7d72cea5c105\">tram::System::SYSTEM_GUI</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a1e7439787d47b5b28dc000e4559ad269\">tram::System::SYSTEM_ASYNC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a32a2f49ef9a039a74172526f0867e148\">tram::System::SYSTEM_RENDER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a3a0912f814b45bae6799f1b9590c9725\">tram::System::SYSTEM_PHYSICS</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ab0384d50d195f8fe3d2c1e7af60e8464\">tram::System::SYSTEM_AUDIO</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a809269be6b2892096b06e284dd44cdc1\">tram::System::SYSTEM_MISC</a>\n, <a class=\"el\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System::SYSTEM_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a02b5e7a5340ef5ca42a650ca4d8ade65\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">uint32_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a> (char const *name, char const *short_name)</td></tr>\n<tr class=\"memdesc:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Registers a new system.  <a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">More...</a><br /></td></tr>\n<tr class=\"separator:aee7d79683193e5c01dab72b3bd84e710\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a268bed781cdfb281916c2475f969b55d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a> (uint32_t system, bool is_initialized)</td></tr>\n<tr class=\"memdesc:a268bed781cdfb281916c2475f969b55d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the initialization status of a system.  <a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">More...</a><br /></td></tr>\n<tr class=\"separator:a268bed781cdfb281916c2475f969b55d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is initialized.  <a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">More...</a><br /></td></tr>\n<tr class=\"separator:a1c1f26d92502016519f4a147cdc0fbc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">tram::System::SetUpdated</a> (uint32_t system, bool is_updated)</td></tr>\n<tr class=\"memdesc:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the update status of a system.  <a href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">More...</a><br /></td></tr>\n<tr class=\"separator:a1e64ede9311e821b3d9bff2bbca64dd9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">tram::System::IsUpdated</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if a system is updated.  <a href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">More...</a><br /></td></tr>\n<tr class=\"separator:a94c84b6cbe80fa69f047ddf9b7876fa2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the full name of a system.  <a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">More...</a><br /></td></tr>\n<tr class=\"separator:a2ca63f47f3cfdfd0eb183d46b36f9701\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">char const *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a> (uint32_t system)</td></tr>\n<tr class=\"memdesc:aa9b274cc4e89cca2157eae886db07355\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the short name of a system.  <a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">More...</a><br /></td></tr>\n<tr class=\"separator:aa9b274cc4e89cca2157eae886db07355\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">system_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a> ()</td></tr>\n<tr class=\"memdesc:a338ea827ae004b8133debac8bb1428a6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the total count of registered systems.  <a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">More...</a><br /></td></tr>\n<tr class=\"separator:a338ea827ae004b8133debac8bb1428a6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/system_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/system.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">system.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"system_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_system.html\">tram::System</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">   11</a></span><span class=\"keyword\">typedef</span> uint32_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a>;</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">System</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a582c1f270126216b06b4e1d269652651\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a582c1f270126216b06b4e1d269652651\">SYSTEM_CORE</a>,</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65af2c906ce1741b06949a236ff62d12fa6\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65af2c906ce1741b06949a236ff62d12fa6\">SYSTEM_PLATFORM</a>,</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a69970478f403f6145a4010211cd6f06a\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a69970478f403f6145a4010211cd6f06a\">SYSTEM_UI</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a50af422f0c2ebd12c2ee7d72cea5c105\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a50af422f0c2ebd12c2ee7d72cea5c105\">SYSTEM_GUI</a>,</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a1e7439787d47b5b28dc000e4559ad269\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a1e7439787d47b5b28dc000e4559ad269\">SYSTEM_ASYNC</a>,</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a32a2f49ef9a039a74172526f0867e148\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a32a2f49ef9a039a74172526f0867e148\">SYSTEM_RENDER</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a3a0912f814b45bae6799f1b9590c9725\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a3a0912f814b45bae6799f1b9590c9725\">SYSTEM_PHYSICS</a>,</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ab0384d50d195f8fe3d2c1e7af60e8464\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ab0384d50d195f8fe3d2c1e7af60e8464\">SYSTEM_AUDIO</a>,</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a809269be6b2892096b06e284dd44cdc1\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a809269be6b2892096b06e284dd44cdc1\">SYSTEM_MISC</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">SYSTEM_LAST</a></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">   23</a></span>};</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">Register</a>(<span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* name, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* short_name);</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">SetInitialized</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system, <span class=\"keywordtype\">bool</span> is_initialized);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">IsInitialized</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">SetUpdated</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system, <span class=\"keywordtype\">bool</span> is_updated);</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">IsUpdated</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">GetName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">GetShortName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">system_t</a> system);</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>uint32_t <a class=\"code hl_function\" href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">GetSystemCount</a>();</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>}</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_SYSTEM_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html\">tram::System</a></div><div class=\"ttdef\"><b>Definition:</b> system.cpp:7</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65\">tram::System::System</a></div><div class=\"ttdeci\">System</div><div class=\"ttdef\"><b>Definition:</b> system.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a01dd7ac92f0b981b22c96c5d43882da4\">tram::System::SYSTEM_LAST</a></div><div class=\"ttdeci\">@ SYSTEM_LAST</div><div class=\"ttdef\"><b>Definition:</b> system.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a1e7439787d47b5b28dc000e4559ad269\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a1e7439787d47b5b28dc000e4559ad269\">tram::System::SYSTEM_ASYNC</a></div><div class=\"ttdeci\">@ SYSTEM_ASYNC</div><div class=\"ttdef\"><b>Definition:</b> system.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a32a2f49ef9a039a74172526f0867e148\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a32a2f49ef9a039a74172526f0867e148\">tram::System::SYSTEM_RENDER</a></div><div class=\"ttdeci\">@ SYSTEM_RENDER</div><div class=\"ttdef\"><b>Definition:</b> system.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a3a0912f814b45bae6799f1b9590c9725\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a3a0912f814b45bae6799f1b9590c9725\">tram::System::SYSTEM_PHYSICS</a></div><div class=\"ttdeci\">@ SYSTEM_PHYSICS</div><div class=\"ttdef\"><b>Definition:</b> system.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a50af422f0c2ebd12c2ee7d72cea5c105\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a50af422f0c2ebd12c2ee7d72cea5c105\">tram::System::SYSTEM_GUI</a></div><div class=\"ttdeci\">@ SYSTEM_GUI</div><div class=\"ttdef\"><b>Definition:</b> system.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a582c1f270126216b06b4e1d269652651\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a582c1f270126216b06b4e1d269652651\">tram::System::SYSTEM_CORE</a></div><div class=\"ttdeci\">@ SYSTEM_CORE</div><div class=\"ttdef\"><b>Definition:</b> system.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a69970478f403f6145a4010211cd6f06a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a69970478f403f6145a4010211cd6f06a\">tram::System::SYSTEM_UI</a></div><div class=\"ttdeci\">@ SYSTEM_UI</div><div class=\"ttdef\"><b>Definition:</b> system.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65a809269be6b2892096b06e284dd44cdc1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65a809269be6b2892096b06e284dd44cdc1\">tram::System::SYSTEM_MISC</a></div><div class=\"ttdeci\">@ SYSTEM_MISC</div><div class=\"ttdef\"><b>Definition:</b> system.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65ab0384d50d195f8fe3d2c1e7af60e8464\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ab0384d50d195f8fe3d2c1e7af60e8464\">tram::System::SYSTEM_AUDIO</a></div><div class=\"ttdeci\">@ SYSTEM_AUDIO</div><div class=\"ttdef\"><b>Definition:</b> system.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65af2c906ce1741b06949a236ff62d12fa6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65af2c906ce1741b06949a236ff62d12fa6\">tram::System::SYSTEM_PLATFORM</a></div><div class=\"ttdeci\">@ SYSTEM_PLATFORM</div><div class=\"ttdef\"><b>Definition:</b> system.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a1c1f26d92502016519f4a147cdc0fbc2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a1c1f26d92502016519f4a147cdc0fbc2\">tram::System::IsInitialized</a></div><div class=\"ttdeci\">bool IsInitialized(uint32_t system)</div><div class=\"ttdoc\">Checks if a system is initialized.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:65</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a1e64ede9311e821b3d9bff2bbca64dd9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a1e64ede9311e821b3d9bff2bbca64dd9\">tram::System::SetUpdated</a></div><div class=\"ttdeci\">void SetUpdated(uint32_t system, bool is_updated)</div><div class=\"ttdoc\">Sets the update status of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:74</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a268bed781cdfb281916c2475f969b55d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a268bed781cdfb281916c2475f969b55d\">tram::System::SetInitialized</a></div><div class=\"ttdeci\">void SetInitialized(uint32_t system, bool is_initialized)</div><div class=\"ttdoc\">Sets the initialization status of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:59</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a2ca63f47f3cfdfd0eb183d46b36f9701\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a2ca63f47f3cfdfd0eb183d46b36f9701\">tram::System::GetName</a></div><div class=\"ttdeci\">char const * GetName(uint32_t system)</div><div class=\"ttdoc\">Retrieves the full name of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:47</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a338ea827ae004b8133debac8bb1428a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a338ea827ae004b8133debac8bb1428a6\">tram::System::GetSystemCount</a></div><div class=\"ttdeci\">system_t GetSystemCount()</div><div class=\"ttdoc\">Returns the total count of registered systems.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:89</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a3480b59cb32a6f70ad1fce1626b64e40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a3480b59cb32a6f70ad1fce1626b64e40\">tram::System::system_t</a></div><div class=\"ttdeci\">uint32_t system_t</div><div class=\"ttdef\"><b>Definition:</b> system.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a94c84b6cbe80fa69f047ddf9b7876fa2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a94c84b6cbe80fa69f047ddf9b7876fa2\">tram::System::IsUpdated</a></div><div class=\"ttdeci\">bool IsUpdated(uint32_t system)</div><div class=\"ttdoc\">Checks if a system is updated.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:80</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_aa9b274cc4e89cca2157eae886db07355\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#aa9b274cc4e89cca2157eae886db07355\">tram::System::GetShortName</a></div><div class=\"ttdeci\">char const * GetShortName(uint32_t system)</div><div class=\"ttdoc\">Retrieves the short name of a system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_aee7d79683193e5c01dab72b3bd84e710\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#aee7d79683193e5c01dab72b3bd84e710\">tram::System::Register</a></div><div class=\"ttdeci\">uint32_t Register(char const *name, char const *short_name)</div><div class=\"ttdoc\">Registers a new system.</div><div class=\"ttdef\"><b>Definition:</b> system.cpp:33</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/tabs.css",
    "content": ".sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:\"\\00a0\";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url(\"tab_b.png\")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:\"Lucida Grande\",\"Geneva\",\"Helvetica\",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url(\"tab_b.png\");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url(\"tab_s.png\");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url(\"tab_a.png\");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url(\"tab_b.png\")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}"
  },
  {
    "path": "docs/cppapi/template_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/audio/template/template.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_81a2138add035487371796f7e3635d7f.html\">audio</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_8257c9d1ec427d0353bb282f2bab11cb.html\">template</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">template.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p>Template for Audio backend implementations.  \n<a href=\"#details\">More...</a></p>\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"audio_2api_8h_source.html\">audio/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\">tram::Audio</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_system.html\" title=\"System tracking.\">System</a> for doing audio related stuff. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\">tram::Audio::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_audio_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"namespacetram_1_1_audio.html\" title=\"System for doing audio related stuff.\">Audio</a> backend <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html\" title=\"Audio backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8d3b6a316e9eabc092a7302995d545bd\">tram::Audio::API::Init</a> ()</td></tr>\n<tr class=\"separator:a8d3b6a316e9eabc092a7302995d545bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a55057fbdf290e0782209c5b31d972488\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a55057fbdf290e0782209c5b31d972488\">tram::Audio::API::Update</a> ()</td></tr>\n<tr class=\"separator:a55057fbdf290e0782209c5b31d972488\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#adb92f6546681004b6ec62abf005d3f68\">tram::Audio::API::Uninit</a> ()</td></tr>\n<tr class=\"separator:adb92f6546681004b6ec62abf005d3f68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8c238a85c44a1be22223921bb836673b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">tram::Audio::API::SetListenerPosition</a> (vec3 position)</td></tr>\n<tr class=\"memdesc:a8c238a85c44a1be22223921bb836673b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener position.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8c238a85c44a1be22223921bb836673b\">More...</a><br /></td></tr>\n<tr class=\"separator:a8c238a85c44a1be22223921bb836673b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">tram::Audio::API::SetListenerOrientation</a> (quat orientation)</td></tr>\n<tr class=\"memdesc:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the listener orientation.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0ec692e07524255ef5c814ccbff53b1b\">More...</a><br /></td></tr>\n<tr class=\"separator:a0ec692e07524255ef5c814ccbff53b1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiobuffer_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">tram::Audio::API::MakeAudioBuffer</a> (const int16_t *audio_data, int32_t length, int32_t samples, int32_t channels)</td></tr>\n<tr class=\"memdesc:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates audio buffers from raw audio data.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aaaac5e27e3363b227c4ea0d70f8844a0\">More...</a><br /></td></tr>\n<tr class=\"separator:aaaac5e27e3363b227c4ea0d70f8844a0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">tram::Audio::API::RemoveAudioBuffer</a> (audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes audio buffers.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a0724c17fd3523893b97ee2a6aa8a090d\">More...</a><br /></td></tr>\n<tr class=\"separator:a0724c17fd3523893b97ee2a6aa8a090d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">audiosource_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">tram::Audio::API::MakeAudioSource</a> ()</td></tr>\n<tr class=\"memdesc:a02a046aaade1a4a0290db64f9514816b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Creates an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a02a046aaade1a4a0290db64f9514816b\">More...</a><br /></td></tr>\n<tr class=\"separator:a02a046aaade1a4a0290db64f9514816b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">tram::Audio::API::SetAudioSourcePitch</a> (audiosource_t source, float pitch)</td></tr>\n<tr class=\"memdesc:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the pitch of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa3b7d9891305e368e07d7ad863d628c6\">More...</a><br /></td></tr>\n<tr class=\"separator:aa3b7d9891305e368e07d7ad863d628c6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">tram::Audio::API::SetAudioSourceGain</a> (audiosource_t source, float gain)</td></tr>\n<tr class=\"memdesc:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the gain of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#aa34a3e351de4035848dc1280ef3e824f\">More...</a><br /></td></tr>\n<tr class=\"separator:aa34a3e351de4035848dc1280ef3e824f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">tram::Audio::API::SetAudioSourcePosition</a> (audiosource_t source, vec3 position)</td></tr>\n<tr class=\"memdesc:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the position of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a273ec7fe95edfbd9414878e67eadaf4b\">More...</a><br /></td></tr>\n<tr class=\"separator:a273ec7fe95edfbd9414878e67eadaf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">tram::Audio::API::SetAudioSourceVelocity</a> (audiosource_t source, vec3 velocity)</td></tr>\n<tr class=\"memdesc:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the velocity of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7a9b62489392c6a82eda4a2157cad570\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a9b62489392c6a82eda4a2157cad570\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">tram::Audio::API::SetAudioSourceRepeating</a> (audiosource_t source, bool repeating)</td></tr>\n<tr class=\"memdesc:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the repetition of an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a7420c760d8243ed9e24b2af3a77e4e2c\">More...</a><br /></td></tr>\n<tr class=\"separator:a7420c760d8243ed9e24b2af3a77e4e2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a66d344898a8b0355218f36cddc369046\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">tram::Audio::API::SetAudioSourceBuffer</a> (audiosource_t source, audiobuffer_t buffer)</td></tr>\n<tr class=\"memdesc:a66d344898a8b0355218f36cddc369046\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the buffers that the audio source will play.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a66d344898a8b0355218f36cddc369046\">More...</a><br /></td></tr>\n<tr class=\"separator:a66d344898a8b0355218f36cddc369046\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">tram::Audio::API::PlayAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Plays an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a909017b3d28ed5fe14bac0b516770bb5\">More...</a><br /></td></tr>\n<tr class=\"separator:a909017b3d28ed5fe14bac0b516770bb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">tram::Audio::API::PauseAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:ab58ddd72a8b81823756b0d141e015590\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Pauses the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#ab58ddd72a8b81823756b0d141e015590\">More...</a><br /></td></tr>\n<tr class=\"separator:ab58ddd72a8b81823756b0d141e015590\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">tram::Audio::API::StopAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stops the audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a77e3f4ff9024d2adb99aab7a03cb2261\">More...</a><br /></td></tr>\n<tr class=\"separator:a77e3f4ff9024d2adb99aab7a03cb2261\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">tram::Audio::API::IsAudioSourcePlaying</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks if an audio source is playing.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#a8e6b04b5e38e41ca29049e7d3f36d596\">More...</a><br /></td></tr>\n<tr class=\"separator:a8e6b04b5e38e41ca29049e7d3f36d596\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:af490232ec82451014fb9e858f3feca68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">tram::Audio::API::RemoveAudioSource</a> (audiosource_t source)</td></tr>\n<tr class=\"memdesc:af490232ec82451014fb9e858f3feca68\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deletes an audio source.  <a href=\"namespacetram_1_1_audio_1_1_a_p_i.html#af490232ec82451014fb9e858f3feca68\">More...</a><br /></td></tr>\n<tr class=\"separator:af490232ec82451014fb9e858f3feca68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n<div class=\"textblock\"><p >Template for Audio backend implementations. </p>\n<p >This template can also be used as a blank Audio backend if no audio is needed to be played and the system won't be used. </p>\n</div></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/template_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/template.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">template.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"entitycomponent_8h_source.html\">framework/entitycomponent.h</a>&gt;</code><br />\n</div>\n<p><a href=\"template_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/template_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/template.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">template.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"template_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"entitycomponent_8h.html\">framework/entitycomponent.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html\">   10</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_template_component.html\">TemplateComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">   12</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">TemplateComponent</a>();</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">   13</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">~TemplateComponent</a>();</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">   14</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">   15</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">   16</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>};</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span> </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span> </div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdoc\">Component base class.</div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html\">tram::TemplateComponent</a></div><div class=\"ttdef\"><b>Definition:</b> template.h:10</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html_a41a703bfee11a984319c23ca8b58601d\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html#a41a703bfee11a984319c23ca8b58601d\">tram::TemplateComponent::Start</a></div><div class=\"ttdeci\">void Start()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html_a6e081f7006cb6a8b6c0621a7ee6d81f9\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html#a6e081f7006cb6a8b6c0621a7ee6d81f9\">tram::TemplateComponent::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes an entity component.</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html_a8e89883fc13d2969e300e3dab133624d\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html#a8e89883fc13d2969e300e3dab133624d\">tram::TemplateComponent::~TemplateComponent</a></div><div class=\"ttdeci\">~TemplateComponent()</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html_ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html#ac2eeaaa1164b1a5cbbc6f54b5ce16dc2\">tram::TemplateComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_template_component_html_ac49dab36bc93c1d44db3fa7b78ec3367\"><div class=\"ttname\"><a href=\"classtram_1_1_template_component.html#ac49dab36bc93c1d44db3fa7b78ec3367\">tram::TemplateComponent::TemplateComponent</a></div><div class=\"ttdeci\">TemplateComponent()</div></div>\n<div class=\"ttc\" id=\"aentitycomponent_8h_html\"><div class=\"ttname\"><a href=\"entitycomponent_8h.html\">entitycomponent.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdoc\">Event data.</div><div class=\"ttdef\"><b>Definition:</b> event.h:24</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/templates_2aabb_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/aabb.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">aabb.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;iostream&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"templates_2aabb_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/templates_2aabb_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/aabb.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">aabb.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"templates_2aabb_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"logging_8h.html\">framework/logging.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"core_8h.html\">framework/core.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span> </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html\">   16</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_a_a_b_b_tree.html\">AABBTree</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">   18</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">AABBTree</a>() {}</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">~AABBTree</a>() {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">   23</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">GetAABBMin</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>; }</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">   24</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">GetAABBMax</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>; }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    </div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">   28</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">InsertLeaf</a> (uint32_t value, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* new_node = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>        </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a> = value;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>        </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = min;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = max;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>        </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>            new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>;</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>            </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>) {</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>            }</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>            </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>            <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>        }</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        </div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>            <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>            new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>            </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>) {</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>            }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>            </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>            <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        }</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling_parent = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* new_parent = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        <span class=\"keywordflow\">if</span> (sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == sibling) {</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>            sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == sibling) {</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>            sibling_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        }</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        </div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = sibling_parent;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        </div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = new_node;</div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        new_parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        new_node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = new_parent;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(new_parent);</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        </div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <span class=\"keywordflow\">return</span> new_node;</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    }</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    </div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">   91</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">RemoveLeaf</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        </div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* parent = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* sibling = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == node ? parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> : parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>;</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <span class=\"keywordflow\">if</span> (parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> != node &amp;&amp; parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> != node) {</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        }</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        </div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        <span class=\"keywordflow\">if</span> (parent == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>            <span class=\"keywordflow\">if</span> (parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == node) {</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>                </div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                <span class=\"keywordflow\">if</span> (sibling) {</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                }</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                </div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                <span class=\"keywordflow\">if</span> (sibling) {</div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                    parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>                }</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>            }</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>            </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>            </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            </div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        }</div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        </div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* grandparent = parent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>;</div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        </div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keywordflow\">if</span> (grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == parent) {</div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>            grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            grandparent-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = sibling;</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        }</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        </div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        sibling-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = grandparent;</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        </div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(grandparent);</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        </div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keyword\">delete</span> parent;</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        </div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    }</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    </div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">  143</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>()) {</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">RemoveHierarchy</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>            <span class=\"keyword\">delete</span> node;</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        }</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    }</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    </div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ad5af63bba9c28b11a17d345510768627\">  153</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ad5af63bba9c28b11a17d345510768627\">FindIntersection</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, std::vector&lt;uint32_t&gt;&amp; result) {</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keywordtype\">bool</span> is_node_intersect = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a>(ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        </div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">if</span> (is_node_intersect) {</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                result.push_back(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>);</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>) <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ad5af63bba9c28b11a17d345510768627\">FindIntersection</a> (ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, result);</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>) <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ad5af63bba9c28b11a17d345510768627\">FindIntersection</a> (ray_pos, ray_dir, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, result);</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            }</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>        }</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    }</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    </div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span><span class=\"comment\">//private:</span></div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    </div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">  168</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        assert(!node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>());</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        </div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* left_child = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>;</div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* right_child = node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>;</div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        </div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keywordflow\">if</span> (!left_child || !right_child) {</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            assert(node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>);</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>            </div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>            <span class=\"keywordflow\">if</span> (!left_child &amp;&amp; right_child) {</div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>            } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (left_child &amp;&amp; !right_child) {</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>            } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = {0.0f, 0.0f, 0.0f};</div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>            }</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>            </div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>            <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>        }</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>        </div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>        </div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a> = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>, right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a> = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(left_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>, right_child-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>        </div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>            <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">UpdateParentAABB</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a>);</div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        }</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        </div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != node);</div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    }</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>    </div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"comment\">// searches the children of search_node to find a sibling for target_node</span></div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">  203</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max, <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>()) {</div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>            <span class=\"keywordflow\">return</span> node;</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>        }</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>        </div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> == <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>            assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        }</div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>        assert(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>        </div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> left_merge_min = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(min, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> left_merge_max = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>        </div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> right_merge_min = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a>(min, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>);</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> right_merge_max = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a>(max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>);</div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        </div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        <span class=\"keywordtype\">float</span> left_merge_volume = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a>(left_merge_min, left_merge_max);</div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        <span class=\"keywordtype\">float</span> right_merge_volume = <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a>(right_merge_min, right_merge_max);</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        </div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <span class=\"comment\">//float left_merge_volume = AABBSurface(left_merge_min, left_merge_max);</span></div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"comment\">//float right_merge_volume = AABBSurface(right_merge_min, right_merge_max);</span></div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        </div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>        <span class=\"keywordflow\">if</span> (left_merge_volume &lt; right_merge_volume) {</div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>            <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>);</div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>            <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">FindSibling</a>(min, max, node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>);</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>        }</div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    }</div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    </div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    </div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">  236</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node) {</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> != <span class=\"keyword\">nullptr</span>) {</div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>            <span class=\"comment\">//if (((Node*)0)-&gt;IsLeaf()) assert(false);</span></div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        }</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        </div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keywordflow\">return</span>;</div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a> (node, 0);</div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    }</div>\n<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">  245</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">ValidateTree</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* node, <span class=\"keywordtype\">size_t</span> num) {</div>\n<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        assert(node);</div>\n<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>        assert((<span class=\"keywordtype\">long</span> <span class=\"keywordtype\">long</span>)node &gt; 100);</div>\n<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>        </div>\n<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>        <span class=\"keywordflow\">if</span> (num &gt; 400) {</div>\n<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>            <span class=\"comment\">//if (((Node*)0)-&gt;IsLeaf()) assert(false);</span></div>\n<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>        }</div>\n<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>        </div>\n<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        <span class=\"keywordflow\">if</span> (node-&gt;<a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a>() &amp;&amp; node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a>) {</div>\n<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>            <span class=\"comment\">//assert(node-&gt;value &lt; 40000);</span></div>\n<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>        } <span class=\"keywordflow\">else</span> {</div>\n<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>            <span class=\"keywordflow\">if</span> (node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> || (node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> &amp;&amp; node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>))<a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a>, num+1);</div>\n<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>            <span class=\"keywordflow\">if</span> (node != <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> || (node == <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> &amp;&amp; node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>))<a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">ValidateTree</a>(node-&gt;<a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a>, num+1);</div>\n<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>        }</div>\n<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    }</div>\n<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    </div>\n<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">  261</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">MergeAABBMin</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b) {</div>\n<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> {</div>\n<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>            a.x &lt; b.x ? a.x : b.x,</div>\n<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>            a.y &lt; b.y ? a.y : b.y,</div>\n<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>            a.z &lt; b.z ? a.z : b.z</div>\n<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>        };<span class=\"comment\">// - vec3 {0.1f, 0.1f, 0.1f};</span></div>\n<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    }</div>\n<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    </div>\n<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">  269</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">MergeAABBMax</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> a, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> b) {</div>\n<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> {</div>\n<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>            a.x &gt; b.x ? a.x : b.x,</div>\n<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>            a.y &gt; b.y ? a.y : b.y,</div>\n<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>            a.z &gt; b.z ? a.z : b.z</div>\n<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>        };<span class=\"comment\">// + vec3 {0.1f, 0.1f, 0.1f};</span></div>\n<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    }</div>\n<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    </div>\n<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">  277</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">AABBVolume</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        <span class=\"keywordflow\">return</span> (max.x - min.x) * (max.y - min.y) * (max.z - min.z);</div>\n<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    }</div>\n<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    </div>\n<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">  281</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">AABBSurface</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        <span class=\"keywordtype\">float</span> x = max.x - min.x;</div>\n<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        <span class=\"keywordtype\">float</span> y = max.y - min.y;</div>\n<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        <span class=\"keywordtype\">float</span> z = max.z - min.z;</div>\n<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        </div>\n<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        assert(max.x &gt;= min.x);</div>\n<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        assert(max.y &gt;= min.y);</div>\n<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>        assert(max.z &gt;= min.z);</div>\n<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        </div>\n<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        <span class=\"keywordflow\">return</span> 2 * ((x * y) + (x * z) + (y * z));</div>\n<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    }</div>\n<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>    </div>\n<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">  293</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">AABBIntersect</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_pos, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> ray_dir, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> min, <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> max) {</div>\n<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1 = (min - ray_pos) / ray_dir; <span class=\"comment\">// what happens if ray_dir == 0.0f?</span></div>\n<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2 = (max - ray_pos) / ray_dir; <span class=\"comment\">// TODO: check</span></div>\n<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        </div>\n<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t1min = glm::min(t1, t2);</div>\n<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> t2max = glm::max(t1, t2);</div>\n<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        </div>\n<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        <span class=\"keywordtype\">float</span> tnear = glm::max(glm::max(t1min.x, t1min.y), t1min.z);</div>\n<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        <span class=\"keywordtype\">float</span> tfar = glm::min(glm::min(t2max.x, t2max.y), t2max.z);</div>\n<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        </div>\n<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <span class=\"keywordflow\">return</span> tfar &gt;= tnear;</div>\n<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    }</div>\n<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    </div>\n<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">  306</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {</div>\n<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">  307</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">IsLeaf</a> ()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> == 0; }</div>\n<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        </div>\n<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">  309</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">Print</a> ()<span class=\"keyword\"> const </span>{ std::cout &lt;&lt; <span class=\"stringliteral\">&quot; l: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> &lt;&lt; <span class=\"stringliteral\">&quot; r: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> &lt;&lt; <span class=\"stringliteral\">&quot; p: &quot;</span> &lt;&lt; <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> &lt;&lt; std::endl; }</div>\n<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        </div>\n<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">  312</a></span>            <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">left</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">  313</a></span>            uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">value</a>;</div>\n<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        };</div>\n<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        </div>\n<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">  316</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">right</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">  317</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">parent</a> = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        </div>\n<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">  319</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">min</a>;</div>\n<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">  320</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">max</a>;</div>\n<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    };</div>\n<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    </div>\n<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">  323</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">root</a> = <span class=\"keyword\">new</span> <a class=\"code hl_struct\" href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">Node</a> {<span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, <span class=\"keyword\">nullptr</span>, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}};</div>\n<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>};</div>\n<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>}</div>\n<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span> </div>\n<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_AABB_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html\">tram::AABBTree</a></div><div class=\"ttdef\"><b>Definition:</b> aabb.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a09154884a07d9aec60f8e84f54292d41\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a09154884a07d9aec60f8e84f54292d41\">tram::AABBTree::InsertLeaf</a></div><div class=\"ttdeci\">Node * InsertLeaf(uint32_t value, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a0fdc8691cc5674bcd2b18e1b287301e1\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a0fdc8691cc5674bcd2b18e1b287301e1\">tram::AABBTree::AABBIntersect</a></div><div class=\"ttdeci\">static bool AABBIntersect(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:293</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a10e8e2eef3ea7b92fe8f62019efb6ebc\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a10e8e2eef3ea7b92fe8f62019efb6ebc\">tram::AABBTree::~AABBTree</a></div><div class=\"ttdeci\">~AABBTree()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a32675d95c889b42d34ec88309ccc1adc\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a32675d95c889b42d34ec88309ccc1adc\">tram::AABBTree::UpdateParentAABB</a></div><div class=\"ttdeci\">void UpdateParentAABB(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:168</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a509b43b26b87d2c14783fb7af4ddfb3d\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a509b43b26b87d2c14783fb7af4ddfb3d\">tram::AABBTree::ValidateTree</a></div><div class=\"ttdeci\">void ValidateTree(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:236</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a567a82fddf4d8649dec4f358fe08da29\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a567a82fddf4d8649dec4f358fe08da29\">tram::AABBTree::AABBTree</a></div><div class=\"ttdeci\">AABBTree()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a61d5cb103f8529afdd926a8b6a1cf79a\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a61d5cb103f8529afdd926a8b6a1cf79a\">tram::AABBTree::GetAABBMax</a></div><div class=\"ttdeci\">vec3 GetAABBMax()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a6e50b9b4d4d2dde317cef8dcb3ce648c\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a6e50b9b4d4d2dde317cef8dcb3ce648c\">tram::AABBTree::root</a></div><div class=\"ttdeci\">Node * root</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:323</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a715f0769ae31e4adfcea697bf841dd77\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a715f0769ae31e4adfcea697bf841dd77\">tram::AABBTree::AABBVolume</a></div><div class=\"ttdeci\">static float AABBVolume(vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:277</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a7381f1d5ef18522f092b20432af0c291\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a7381f1d5ef18522f092b20432af0c291\">tram::AABBTree::MergeAABBMax</a></div><div class=\"ttdeci\">static vec3 MergeAABBMax(vec3 a, vec3 b)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:269</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_a9efb144bb94afd82a7c58a0ecd16a1a6\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#a9efb144bb94afd82a7c58a0ecd16a1a6\">tram::AABBTree::RemoveLeaf</a></div><div class=\"ttdeci\">void RemoveLeaf(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:91</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_aa064aa5b6071d82fe3dc84bb08c07474\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#aa064aa5b6071d82fe3dc84bb08c07474\">tram::AABBTree::RemoveHierarchy</a></div><div class=\"ttdeci\">void RemoveHierarchy(Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:143</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_aa25621c85212298d11a04b79b8638609\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#aa25621c85212298d11a04b79b8638609\">tram::AABBTree::MergeAABBMin</a></div><div class=\"ttdeci\">static vec3 MergeAABBMin(vec3 a, vec3 b)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:261</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ab2029865cbcf492b0c6dd70899a6fdf1\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ab2029865cbcf492b0c6dd70899a6fdf1\">tram::AABBTree::FindSibling</a></div><div class=\"ttdeci\">Node * FindSibling(vec3 min, vec3 max, Node *node)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:203</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ab7b01ca3a4bd8402b5337819d0482fce\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ab7b01ca3a4bd8402b5337819d0482fce\">tram::AABBTree::GetAABBMin</a></div><div class=\"ttdeci\">vec3 GetAABBMin()</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_abc30ba522129a7fe8d093bce4f9ab6c9\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#abc30ba522129a7fe8d093bce4f9ab6c9\">tram::AABBTree::ValidateTree</a></div><div class=\"ttdeci\">void ValidateTree(Node *node, size_t num)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:245</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ad5af63bba9c28b11a17d345510768627\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ad5af63bba9c28b11a17d345510768627\">tram::AABBTree::FindIntersection</a></div><div class=\"ttdeci\">void FindIntersection(vec3 ray_pos, vec3 ray_dir, Node *node, std::vector&lt; uint32_t &gt; &amp;result)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:153</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_a_a_b_b_tree_html_ad990b44be408032340081fb22dbc1ca2\"><div class=\"ttname\"><a href=\"classtram_1_1_a_a_b_b_tree.html#ad990b44be408032340081fb22dbc1ca2\">tram::AABBTree::AABBSurface</a></div><div class=\"ttdeci\">static float AABBSurface(vec3 min, vec3 max)</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:281</div></div>\n<div class=\"ttc\" id=\"acore_8h_html\"><div class=\"ttname\"><a href=\"core_8h.html\">core.h</a></div></div>\n<div class=\"ttc\" id=\"alogging_8h_html\"><div class=\"ttname\"><a href=\"logging_8h.html\">logging.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html\">tram::AABBTree::Node</a></div><div class=\"ttdef\"><b>Definition:</b> aabb.h:306</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a31d0922f21e58394dad1993d731601b3\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a31d0922f21e58394dad1993d731601b3\">tram::AABBTree::Node::left</a></div><div class=\"ttdeci\">Node * left</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:312</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a57ca67dfe98a914549d55d710ef8fec6\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a57ca67dfe98a914549d55d710ef8fec6\">tram::AABBTree::Node::right</a></div><div class=\"ttdeci\">Node * right</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:316</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a6ca75579cef2d995affbeced0c4f3ee4\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a6ca75579cef2d995affbeced0c4f3ee4\">tram::AABBTree::Node::IsLeaf</a></div><div class=\"ttdeci\">bool IsLeaf() const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:307</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a70fe0c482870a3a4a60f17eaacc2be33\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a70fe0c482870a3a4a60f17eaacc2be33\">tram::AABBTree::Node::parent</a></div><div class=\"ttdeci\">Node * parent</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:317</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a76065598bad42f58e74815676b4232fc\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a76065598bad42f58e74815676b4232fc\">tram::AABBTree::Node::max</a></div><div class=\"ttdeci\">vec3 max</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:320</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_a93c5a016f35c05c08f454db6db446113\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#a93c5a016f35c05c08f454db6db446113\">tram::AABBTree::Node::min</a></div><div class=\"ttdeci\">vec3 min</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:319</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_ab59c932ba14cda33cd9918d02ef074c1\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#ab59c932ba14cda33cd9918d02ef074c1\">tram::AABBTree::Node::value</a></div><div class=\"ttdeci\">uint32_t value</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:313</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_a_a_b_b_tree_1_1_node_html_aef471e23e1400e7c4f466576552a5146\"><div class=\"ttname\"><a href=\"structtram_1_1_a_a_b_b_tree_1_1_node.html#aef471e23e1400e7c4f466576552a5146\">tram::AABBTree::Node::Print</a></div><div class=\"ttdeci\">void Print() const</div><div class=\"ttdef\"><b>Definition:</b> aabb.h:309</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_node_html\"><div class=\"ttname\"><a href=\"structtram_1_1_node.html\">tram::Node</a></div><div class=\"ttdef\"><b>Definition:</b> graph.h:16</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/test_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/test.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#define-members\">Macros</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">test.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdio&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n</div>\n<p><a href=\"test_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"struct__test__case.html\">_test_case</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"define-members\" name=\"define-members\"></a>\nMacros</h2></td></tr>\n<tr class=\"memitem:ad014a2a071494bbabc34b48eeebadbf3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"test_8h.html#ad014a2a071494bbabc34b48eeebadbf3\">ASSERT</a>(X)&#160;&#160;&#160;if (!(X)) { printf(&quot;Assert %s fail on line %i\\n&quot;, #X, __LINE__); _last_test_case-&gt;fail(); } else { _last_test_case-&gt;succ(); }</td></tr>\n<tr class=\"separator:ad014a2a071494bbabc34b48eeebadbf3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:adf0988a4a0680d35bed223d0b021437e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"test_8h.html#adf0988a4a0680d35bed223d0b021437e\">TEST_CASE</a>(X,  Y)</td></tr>\n<tr class=\"separator:adf0988a4a0680d35bed223d0b021437e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a33b3bceb630bc5fc81c06aaad9c1fb6f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f\">START_TEST</a>&#160;&#160;&#160;    int <a class=\"el\" href=\"main_8cpp.html#a217dbf8b442f20279ea00b898af96f52\">main</a>(int argc, char** argv) {</td></tr>\n<tr class=\"separator:a33b3bceb630bc5fc81c06aaad9c1fb6f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aefcd1ca1799d2395f7bbe3c50bcc8ff8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">#define&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8\">END_TEST</a></td></tr>\n<tr class=\"separator:aefcd1ca1799d2395f7bbe3c50bcc8ff8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n<h2 class=\"groupheader\">Macro Definition Documentation</h2>\n<a id=\"ad014a2a071494bbabc34b48eeebadbf3\" name=\"ad014a2a071494bbabc34b48eeebadbf3\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad014a2a071494bbabc34b48eeebadbf3\">&#9670;&nbsp;</a></span>ASSERT</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define ASSERT</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">X</td><td>)</td>\n          <td>&#160;&#160;&#160;if (!(X)) { printf(&quot;Assert %s fail on line %i\\n&quot;, #X, __LINE__); _last_test_case-&gt;fail(); } else { _last_test_case-&gt;succ(); }</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"aefcd1ca1799d2395f7bbe3c50bcc8ff8\" name=\"aefcd1ca1799d2395f7bbe3c50bcc8ff8\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefcd1ca1799d2395f7bbe3c50bcc8ff8\">&#9670;&nbsp;</a></span>END_TEST</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define END_TEST</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<b>Value:</b><div class=\"fragment\"><div class=\"line\">    <span class=\"keywordtype\">bool</span> fail = <span class=\"keyword\">false</span>;\\</div>\n<div class=\"line\">\\</div>\n<div class=\"line\">printf(<span class=\"stringliteral\">&quot;\\nRESULTS:\\n&quot;</span>);\\</div>\n<div class=\"line\">\\</div>\n<div class=\"line\">    for (<span class=\"keywordtype\">int</span> i = 0; i &lt; _test_case_count; i++) {\\</div>\n<div class=\"line\">        auto c = &amp;_all_test_cases[i];\\</div>\n<div class=\"line\">        \\</div>\n<div class=\"line\">        if (c-&gt;fail_asserts &gt; 0) {\\</div>\n<div class=\"line\">            fail = <span class=\"keyword\">true</span>;\\</div>\n<div class=\"line\">        }\\</div>\n<div class=\"line\">        \\</div>\n<div class=\"line\">        int p = c-&gt;<a class=\"code hl_variable\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a> - c-&gt;fail_asserts;\\</div>\n<div class=\"line\">        int t = c-&gt;totl_asserts;\\</div>\n<div class=\"line\">        \\</div>\n<div class=\"line\">        printf(<span class=\"stringliteral\">&quot;Test %s %s (%i/%i)\\n&quot;</span>, c-&gt;fullname, c-&gt;abbrv, p, t);\\</div>\n<div class=\"line\">    }\\</div>\n<div class=\"line\">\\</div>\n<div class=\"line\">    return fail ? -1 : 0;\\</div>\n<div class=\"line\">}</div>\n<div class=\"ttc\" id=\"astruct__test__case_html_ad41c1983f63c22e6891e73714a4f7494\"><div class=\"ttname\"><a href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">_test_case::totl_asserts</a></div><div class=\"ttdeci\">int totl_asserts</div><div class=\"ttdef\"><b>Definition:</b> test.h:16</div></div>\n</div><!-- fragment -->\n</div>\n</div>\n<a id=\"a33b3bceb630bc5fc81c06aaad9c1fb6f\" name=\"a33b3bceb630bc5fc81c06aaad9c1fb6f\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33b3bceb630bc5fc81c06aaad9c1fb6f\">&#9670;&nbsp;</a></span>START_TEST</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define START_TEST&#160;&#160;&#160;    int <a class=\"el\" href=\"main_8cpp.html#a217dbf8b442f20279ea00b898af96f52\">main</a>(int argc, char** argv) {</td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n\n</div>\n</div>\n<a id=\"adf0988a4a0680d35bed223d0b021437e\" name=\"adf0988a4a0680d35bed223d0b021437e\"></a>\n<h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf0988a4a0680d35bed223d0b021437e\">&#9670;&nbsp;</a></span>TEST_CASE</h2>\n\n<div class=\"memitem\">\n<div class=\"memproto\">\n      <table class=\"memname\">\n        <tr>\n          <td class=\"memname\">#define TEST_CASE</td>\n          <td>(</td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">X, </td>\n        </tr>\n        <tr>\n          <td class=\"paramkey\"></td>\n          <td></td>\n          <td class=\"paramtype\">&#160;</td>\n          <td class=\"paramname\">Y&#160;</td>\n        </tr>\n        <tr>\n          <td></td>\n          <td>)</td>\n          <td></td><td></td>\n        </tr>\n      </table>\n</div><div class=\"memdoc\">\n<b>Value:</b><div class=\"fragment\"><div class=\"line\">    _last_test_case = &amp;_all_test_cases[_test_case_count]; \\</div>\n<div class=\"line\">    _test_case_count++; \\</div>\n<div class=\"line\">    \\</div>\n<div class=\"line\">    _last_test_case-&gt;<a class=\"code hl_variable\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">fullname</a> = X; \\</div>\n<div class=\"line\">    _last_test_case-&gt;abbrv = Y;</div>\n<div class=\"ttc\" id=\"astruct__test__case_html_a028f8c7752296eebd358db5357c46064\"><div class=\"ttname\"><a href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">_test_case::fullname</a></div><div class=\"ttdeci\">const char * fullname</div><div class=\"ttdef\"><b>Definition:</b> test.h:13</div></div>\n</div><!-- fragment -->\n</div>\n</div>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/test_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/templates/test.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_713f53f5525a4ba6a1756f0c27ee7b0f.html\">templates</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">test.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"test_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_TEMPLATES_TEST_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_TEMPLATES_TEST_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstdio&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">// This is the framwork for testing the library.</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"comment\">// It not actually part of library. But only test. I am testing.</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html\">   12</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"struct__test__case.html\">_test_case</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">   13</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">fullname</a>;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">   14</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">abbrv</a>;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">   16</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a> = 0;</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">   17</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">fail_asserts</a> = 0;</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>    </div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">   19</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">fail</a>() {</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        <a class=\"code hl_variable\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a>++;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>        <a class=\"code hl_variable\" href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">fail_asserts</a>++;</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">   24</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">succ</a>() {</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>        <a class=\"code hl_variable\" href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">totl_asserts</a>++;</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"struct__test__case.html\">_test_case</a> _all_test_cases[100];</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> _test_case_count = 0;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"struct__test__case.html\">_test_case</a>* _last_test_case = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"test_8h.html#ad014a2a071494bbabc34b48eeebadbf3\">   33</a></span><span class=\"preprocessor\">#define ASSERT(X) if (!(X)) { printf(&quot;Assert %s fail on line %i\\n&quot;</span>, #X, __LINE__); _last_test_case-&gt;fail(); } else { _last_test_case-&gt;succ(); }</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"test_8h.html#adf0988a4a0680d35bed223d0b021437e\">   41</a></span><span class=\"preprocessor\">#define TEST_CASE(X, Y) \\</span></div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"preprocessor\">    _last_test_case = &amp;_all_test_cases[_test_case_count]; \\</span></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">    _test_case_count++; \\</span></div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"preprocessor\">    \\</span></div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">    _last_test_case-&gt;fullname = X; \\</span></div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"preprocessor\">    _last_test_case-&gt;abbrv = Y;</span></div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"test_8h.html#a33b3bceb630bc5fc81c06aaad9c1fb6f\">   49</a></span><span class=\"preprocessor\">#define START_TEST \\</span></div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"preprocessor\">    int main(int argc, char** argv) {</span></div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"test_8h.html#aefcd1ca1799d2395f7bbe3c50bcc8ff8\">   52</a></span><span class=\"preprocessor\">#define END_TEST \\</span></div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">    bool fail = false;\\</span></div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"preprocessor\">\\</span></div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"preprocessor\">printf(&quot;\\nRESULTS:\\n&quot;</span>);\\</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>\\</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    for (int i = 0; i &lt; _test_case_count; i++) {\\</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        auto c = &amp;_all_test_cases[i];\\</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        \\</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        if (c-&gt;fail_asserts &gt; 0) {\\</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>            fail = true;\\</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        }\\</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        \\</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        int p = c-&gt;totl_asserts - c-&gt;fail_asserts;\\</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        int t = c-&gt;totl_asserts;\\</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        \\</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        printf(&quot;Test %s %s (%i/%i)\\n&quot;, c-&gt;fullname, c-&gt;abbrv, p, t);\\</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    }\\</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>\\</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    return fail ? -1 : 0;\\</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>}</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// TRAM_SDK_TEMPLATES_TEST_H</span></div>\n<div class=\"ttc\" id=\"astruct__test__case_html\"><div class=\"ttname\"><a href=\"struct__test__case.html\">_test_case</a></div><div class=\"ttdef\"><b>Definition:</b> test.h:12</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_a028f8c7752296eebd358db5357c46064\"><div class=\"ttname\"><a href=\"struct__test__case.html#a028f8c7752296eebd358db5357c46064\">_test_case::fullname</a></div><div class=\"ttdeci\">const char * fullname</div><div class=\"ttdef\"><b>Definition:</b> test.h:13</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_a11762360b352fb17f288e1f11b69efaa\"><div class=\"ttname\"><a href=\"struct__test__case.html#a11762360b352fb17f288e1f11b69efaa\">_test_case::succ</a></div><div class=\"ttdeci\">void succ()</div><div class=\"ttdef\"><b>Definition:</b> test.h:24</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_a99c028d2ac17e92affe9fec7483b98a6\"><div class=\"ttname\"><a href=\"struct__test__case.html#a99c028d2ac17e92affe9fec7483b98a6\">_test_case::abbrv</a></div><div class=\"ttdeci\">const char * abbrv</div><div class=\"ttdef\"><b>Definition:</b> test.h:14</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_ad2d0094cb5eb924936cb840093b1048f\"><div class=\"ttname\"><a href=\"struct__test__case.html#ad2d0094cb5eb924936cb840093b1048f\">_test_case::fail</a></div><div class=\"ttdeci\">void fail()</div><div class=\"ttdef\"><b>Definition:</b> test.h:19</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_ad41c1983f63c22e6891e73714a4f7494\"><div class=\"ttname\"><a href=\"struct__test__case.html#ad41c1983f63c22e6891e73714a4f7494\">_test_case::totl_asserts</a></div><div class=\"ttdeci\">int totl_asserts</div><div class=\"ttdef\"><b>Definition:</b> test.h:16</div></div>\n<div class=\"ttc\" id=\"astruct__test__case_html_ae886ab44d5b05f5d6bbece76e2f423b1\"><div class=\"ttname\"><a href=\"struct__test__case.html#ae886ab44d5b05f5d6bbece76e2f423b1\">_test_case::fail_asserts</a></div><div class=\"ttdeci\">int fail_asserts</div><div class=\"ttdef\"><b>Definition:</b> test.h:17</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/texture_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/texture.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">texture.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"texture_8h_source.html\">render/opengl/texture.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;GL/gl.h&gt;</code><br />\n<code>#include &lt;GLES3/gl3.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">texturehandle_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html#a72ff5f43fc09f16266e3fc9ed33715af\">tram::Render::API::CreateTexture</a> (ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void *data)</td></tr>\n<tr class=\"separator:a72ff5f43fc09f16266e3fc9ed33715af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/texture_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/texture.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">texture.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n</div>\n<p><a href=\"texture_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render_1_1_a_p_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Rendering backend <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/texture_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/opengl/texture.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c91d79491a9631c76ad80e8d8bf0efb6.html\">opengl</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">texture.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"texture_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_OPENGL_TEXTURE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_OPENGL_TEXTURE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a> {</div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_OPENGL_TEXTURE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_1_1_a_p_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render_1_1_a_p_i.html\">tram::Render::API</a></div><div class=\"ttdoc\">Rendering backend API.</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/thirdperson_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/thirdperson.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">thirdperson.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/thirdperson_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/thirdperson.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">thirdperson.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"camera_8h_source.html\">extensions/camera/camera.h</a>&gt;</code><br />\n</div>\n<p><a href=\"thirdperson_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext.html\">tram::Ext</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_ext_1_1_camera\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_ext_1_1_camera\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Several different camera implementations. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/thirdperson_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/extensions/camera/thirdperson.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_690097dbf5541613f26178bc15166d11.html\">extensions</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_45a0510223f8d95df257ae4513f5dcf2.html\">camera</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">thirdperson.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"thirdperson_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"camera_8h.html\">extensions/camera/camera.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>}</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H</span></div>\n<div class=\"ttc\" id=\"acamera_8h_html\"><div class=\"ttname\"><a href=\"camera_8h.html\">camera.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_ext_1_1_camera_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_ext_1_1_camera.html\">tram::Ext::Camera</a></div><div class=\"ttdoc\">Several different camera implementations.</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/time_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/time.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">time.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"time_8h_source.html\">platform/time.h</a>&gt;</code><br />\n<code>#include &lt;GLFW/glfw3.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a671c94a4ccf98a1a6f37240b2fd6d284\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">double&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a671c94a4ccf98a1a6f37240b2fd6d284\">tram::GetTime</a> ()</td></tr>\n<tr class=\"memdesc:a671c94a4ccf98a1a6f37240b2fd6d284\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Retrieves the current time.  <a href=\"namespacetram.html#a671c94a4ccf98a1a6f37240b2fd6d284\">More...</a><br /></td></tr>\n<tr class=\"separator:a671c94a4ccf98a1a6f37240b2fd6d284\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/time_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/time.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">time.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n\n<p><a href=\"time_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/time_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/time.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">time.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"time_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span> </div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">// should this be? in line  a namespace? like PLATFORM::GetTime()?????</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"comment\">//double GetTime();</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span>    </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_PLATFORM_FILE_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.h:9</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/todo.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: Todo List</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n</div><!-- top -->\n<div><div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">Todo List </div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><dl class=\"reflist\">\n<dt>Namespace <a class=\"el\" href=\"namespacetram_1_1_audio_1_1_spatial.html\">tram::Audio::Spatial</a>  </dt>\n<dd><p class=\"startdd\"><a class=\"anchor\" id=\"_todo000001\"></a>Make sure that it compiles and do some improvements </p>\n<p class=\"interdd\"></p>\n<p class=\"interdd\">Investigate the possibilities of using hardware accelerated ray-tracing </p>\n<p class=\"interdd\"></p>\n<p class=\"enddd\">I am very poor and can't afford a graphics card, NVIDIA pls sponsor me  </p>\n</dd>\n<dt>Class <a class=\"el\" href=\"classtram_1_1_physics_1_1_path_action.html\">tram::Physics::PathAction</a>  </dt>\n<dd><a class=\"anchor\" id=\"_todo000002\"></a>finish!!! </dd>\n</dl>\n</div></div><!-- contents -->\n</div><!-- PageDoc -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/transition_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/transition.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">transition.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"transition_8h_source.html\">framework/transition.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/transition_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/transition.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">transition.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"transition_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_transition.html\">tram::Transition</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Connects WorldCells together.  <a href=\"classtram_1_1_transition.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/transition_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/transition.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">transition.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"transition_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_TRANSITION_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_TRANSITION_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>WorldCell;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html\">   15</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_transition.html\">Transition</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">Transition</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>, <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>);</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">   18</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">~Transition</a>() = <span class=\"keyword\">delete</span>;</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">AddPoint</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point);</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">GeneratePlanes</a> (<span class=\"keywordtype\">bool</span> disp = <span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">IsInside</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point);</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">   22</a></span>    <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">GetCell</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_transition.html\">Transition</a>* <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">Find</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>);</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"classtram_1_1_transition.html\">Transition</a>* <a class=\"code hl_function\" href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">Make</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>, <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>);</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">   26</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">name</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">   27</a></span>    <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">cell_into</a>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">   28</a></span>    std::vector&lt;vec3&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">points</a>;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">   29</a></span>    std::vector&lt;vec4&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">planes</a>;</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_transition.html#a84136aa23993ba45f0745a9d9488ab54\">   30</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>;</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>};</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>}</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_TRANSITION_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html\">tram::Transition</a></div><div class=\"ttdoc\">Connects WorldCells together.</div><div class=\"ttdef\"><b>Definition:</b> transition.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a0abe4ca65b69601118f03ed677b276c0\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a0abe4ca65b69601118f03ed677b276c0\">tram::Transition::AddPoint</a></div><div class=\"ttdeci\">void AddPoint(vec3 point)</div><div class=\"ttdoc\">Adds a point to the transition volume.</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a0d8f2bf93f2ea1502d7ef4faf5a019c5\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a0d8f2bf93f2ea1502d7ef4faf5a019c5\">tram::Transition::cell_into</a></div><div class=\"ttdeci\">WorldCell * cell_into</div><div class=\"ttdef\"><b>Definition:</b> transition.h:27</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a1308ec63595db0c05d3085de4f50d9ce\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a1308ec63595db0c05d3085de4f50d9ce\">tram::Transition::Find</a></div><div class=\"ttdeci\">static Transition * Find(name_t name)</div><div class=\"ttdoc\">Finds a transition with the given name.</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a15309d1c272d449fb0bda318deb76dd7\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a15309d1c272d449fb0bda318deb76dd7\">tram::Transition::planes</a></div><div class=\"ttdeci\">std::vector&lt; vec4 &gt; planes</div><div class=\"ttdef\"><b>Definition:</b> transition.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a42f1c234540f31c6f9e67e332e5f55b2\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a42f1c234540f31c6f9e67e332e5f55b2\">tram::Transition::Transition</a></div><div class=\"ttdeci\">Transition(name_t name, WorldCell *cell_into)</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:52</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a43d8d05a4e4a8e59ebd166d65a6f193b\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a43d8d05a4e4a8e59ebd166d65a6f193b\">tram::Transition::points</a></div><div class=\"ttdeci\">std::vector&lt; vec3 &gt; points</div><div class=\"ttdef\"><b>Definition:</b> transition.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a47224165493129a93ae5d7cd71993ab0\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a47224165493129a93ae5d7cd71993ab0\">tram::Transition::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> transition.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_a7aca14200b843ed9d5f623d7637a5e3b\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#a7aca14200b843ed9d5f623d7637a5e3b\">tram::Transition::~Transition</a></div><div class=\"ttdeci\">~Transition()=delete</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_aa10c4f5e137fa766558505864995af4f\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#aa10c4f5e137fa766558505864995af4f\">tram::Transition::IsInside</a></div><div class=\"ttdeci\">bool IsInside(vec3 point)</div><div class=\"ttdoc\">Checks whether a point is inside the transition volume.</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:68</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_aa87cde46adb540c592be7626e595119c\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#aa87cde46adb540c592be7626e595119c\">tram::Transition::Make</a></div><div class=\"ttdeci\">static Transition * Make(name_t name, WorldCell *cell_into)</div><div class=\"ttdoc\">Creates a new transition.</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_ac2617a4858326884753cc3198c7d6560\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#ac2617a4858326884753cc3198c7d6560\">tram::Transition::GetCell</a></div><div class=\"ttdeci\">WorldCell * GetCell()</div><div class=\"ttdef\"><b>Definition:</b> transition.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html_ad2c202e43fb8725030c17c88176a36bb\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html#ad2c202e43fb8725030c17c88176a36bb\">tram::Transition::GeneratePlanes</a></div><div class=\"ttdeci\">void GeneratePlanes(bool disp=false)</div><div class=\"ttdoc\">Finalizes the transition after adding points to it.</div><div class=\"ttdef\"><b>Definition:</b> transition.cpp:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></div><div class=\"ttdoc\">World streaming unit.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:16</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/trigger_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"trigger_8h_source.html\">components/trigger.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"bullet_8h_source.html\">physics/bullet/bullet.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_trigger_poll_callback.html\">tram::TriggerPollCallback</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/trigger_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">trigger.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"physics_2physics_8h_source.html\">physics/physics.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"components_2physics_8h_source.html\">components/physics.h</a>&gt;</code><br />\n<code>#include &lt;vector&gt;</code><br />\n</div>\n<p><a href=\"trigger_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/trigger_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/components/trigger.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_e956729b6428f6b8620d3e268ab44978.html\">components</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">trigger.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"trigger_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">// All rights reserved.</span></div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span> </div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#ifndef TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"preprocessor\">#define TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span> </div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"physics_2physics_8h.html\">physics/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"components_2physics_8h.html\">components/physics.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span><span class=\"keyword\">class </span>btCollisionShape;</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>btCollisionObject;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span> </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html\">   17</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"classtram_1_1_entity_component.html\">EntityComponent</a> {</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">   19</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">TriggerComponent</a>() : model(this){}</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">~TriggerComponent</a>();</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">   21</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">EventHandler</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_event.html\">Event</a> &amp;event){};</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">Start</a>();</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span> </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#aad292acd526021ecc258c7c6f509110c\">   24</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#aad292acd526021ecc258c7c6f509110c\">GetModel</a>(){ <span class=\"keywordflow\">return</span> model-&gt;GetName(); }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#ab100b725ae8d95280d34d7cbed51afb7\">   25</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ab100b725ae8d95280d34d7cbed51afb7\">SetModel</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> modelName){ model = <a class=\"code hl_function\" href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">Physics::CollisionModel::Find</a>(modelName); }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">SetShape</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision_shape.html\">Physics::CollisionShape</a> shape);</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a2f9d3a5ff24b0db6b72407b1d18d12a5\">   28</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a2f9d3a5ff24b0db6b72407b1d18d12a5\">SetActivationCallback</a>(<span class=\"keywordtype\">void</span> (*activation_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)) { this-&gt;activation_callback = activation_callback; }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a2faed9215cdab26cbd208a434be60642\">   29</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a2faed9215cdab26cbd208a434be60642\">SetDectivationCallback</a>(<span class=\"keywordtype\">void</span> (*deactivation_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>)) { this-&gt;deactivation_callback = deactivation_callback; }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a2ff721ff7ce9b3b647ef969392bb652b\">   30</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a2ff721ff7ce9b3b647ef969392bb652b\">SetFilterCallback</a>(<span class=\"keywordtype\">bool</span> (*filter_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>*)) { this-&gt;filter_callback = filter_callback; }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">SetCollisionMask</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">SetCollisionGroup</a>(uint32_t flags);</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    </div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">   35</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">SetStoreCollisions</a>(<span class=\"keywordtype\">bool</span> store_collisions) { this-&gt;store_collisions = store_collisions; }</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    </div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">   37</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">GetCollisionMask</a>() { <span class=\"keywordflow\">return</span> collisionMask; }</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">   38</a></span>    uint32_t <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">GetCollisionGroup</a>() { <span class=\"keywordflow\">return</span> collisionGroup; }</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a2d10ed07302b2c4b0daaed2d4c696982\">SetLocation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">glm::vec3</a> location);</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ac6632807ebb8dbe6feb551bd2b072bd3\">SetRotation</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">glm::quat</a> rotation);</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>    </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_trigger_component.html#aee30feb5721fdf210cef6d5b36e914e6\">   43</a></span>    std::vector&lt;Physics::Collision&gt; <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#aee30feb5721fdf210cef6d5b36e914e6\">GetStoredCollisions</a>() { <span class=\"keywordflow\">return</span> stored_collisions; }</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">Collision</a> (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>&amp; collision);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">ResetCollisions</a>();</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    std::vector&lt;Physics::Collision&gt; <a class=\"code hl_function\" href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">Poll</a> ();</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <a class=\"code hl_class\" href=\"classtram_1_1_resource_proxy.html\">ResourceProxy&lt;Physics::CollisionModel&gt;</a> model;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    uint32_t collisionMask = -1;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    uint32_t collisionGroup = -1;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">glm::vec3</a> location = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> (0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">glm::quat</a> rotation = <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> (0.0f, 0.0f, 0.0f);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    btCollisionShape* shape = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    btCollisionObject* trigger = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    </div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    void (*activation_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    void (*deactivation_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a>) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    bool (*filter_callback)(<a class=\"code hl_class\" href=\"classtram_1_1_trigger_component.html\">TriggerComponent</a>*, <a class=\"code hl_class\" href=\"classtram_1_1_physics_component.html\">PhysicsComponent</a>*) = <span class=\"keyword\">nullptr</span>;</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"keywordtype\">bool</span> is_collided = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">bool</span> was_collided = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    </div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keywordtype\">bool</span> store_collisions = <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <a class=\"code hl_struct\" href=\"structtram_1_1_physics_1_1_collision.html\">Physics::Collision</a> collision;</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    std::vector&lt;Physics::Collision&gt; stored_collisions;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>};</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>}</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity_component.html\">tram::EntityComponent</a></div><div class=\"ttdef\"><b>Definition:</b> entitycomponent.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_1_1_collision_model_html_af125ec91786a3422e236709fb2ee72da\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_1_1_collision_model.html#af125ec91786a3422e236709fb2ee72da\">tram::Physics::CollisionModel::Find</a></div><div class=\"ttdeci\">static CollisionModel * Find(name_t model_name)</div><div class=\"ttdoc\">Finds a model.</div><div class=\"ttdef\"><b>Definition:</b> collisionmodel.cpp:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_physics_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_physics_component.html\">tram::PhysicsComponent</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_resource_proxy_html\"><div class=\"ttname\"><a href=\"classtram_1_1_resource_proxy.html\">tram::ResourceProxy</a></div><div class=\"ttdef\"><b>Definition:</b> resource.h:47</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html\">tram::TriggerComponent</a></div><div class=\"ttdef\"><b>Definition:</b> trigger.h:17</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a04476746aae520a06b1ec9fe65c0a5a0\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a04476746aae520a06b1ec9fe65c0a5a0\">tram::TriggerComponent::GetCollisionMask</a></div><div class=\"ttdeci\">uint32_t GetCollisionMask()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:37</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a1576403ad5e3fe824e53453660ba90c5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a1576403ad5e3fe824e53453660ba90c5\">tram::TriggerComponent::EventHandler</a></div><div class=\"ttdeci\">void EventHandler(Event &amp;event)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a2d10ed07302b2c4b0daaed2d4c696982\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a2d10ed07302b2c4b0daaed2d4c696982\">tram::TriggerComponent::SetLocation</a></div><div class=\"ttdeci\">void SetLocation(glm::vec3 location)</div><div class=\"ttdoc\">Sets the location of the component.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:81</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a2f9d3a5ff24b0db6b72407b1d18d12a5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a2f9d3a5ff24b0db6b72407b1d18d12a5\">tram::TriggerComponent::SetActivationCallback</a></div><div class=\"ttdeci\">void SetActivationCallback(void(*activation_callback)(TriggerComponent *, Physics::Collision))</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a2faed9215cdab26cbd208a434be60642\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a2faed9215cdab26cbd208a434be60642\">tram::TriggerComponent::SetDectivationCallback</a></div><div class=\"ttdeci\">void SetDectivationCallback(void(*deactivation_callback)(TriggerComponent *, Physics::Collision))</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a2ff721ff7ce9b3b647ef969392bb652b\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a2ff721ff7ce9b3b647ef969392bb652b\">tram::TriggerComponent::SetFilterCallback</a></div><div class=\"ttdeci\">void SetFilterCallback(bool(*filter_callback)(TriggerComponent *, PhysicsComponent *))</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a62a3322c918a0cf7b2793b94b1144059\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a62a3322c918a0cf7b2793b94b1144059\">tram::TriggerComponent::Start</a></div><div class=\"ttdeci\">void Start()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:14</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a646ebe8013bad9a91574d603995847b5\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a646ebe8013bad9a91574d603995847b5\">tram::TriggerComponent::SetStoreCollisions</a></div><div class=\"ttdeci\">void SetStoreCollisions(bool store_collisions)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:35</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a78db310fadbc1c2c572fa7e7deaf93c8\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a78db310fadbc1c2c572fa7e7deaf93c8\">tram::TriggerComponent::ResetCollisions</a></div><div class=\"ttdeci\">void ResetCollisions()</div><div class=\"ttdoc\">Resets registered collisions.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:121</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a924939c39095e5cf7444b00578423e75\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a924939c39095e5cf7444b00578423e75\">tram::TriggerComponent::SetCollisionGroup</a></div><div class=\"ttdeci\">void SetCollisionGroup(uint32_t flags)</div><div class=\"ttdoc\">Sets a collision group for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a93405806332d5309d8ab674c072d2461\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a93405806332d5309d8ab674c072d2461\">tram::TriggerComponent::GetCollisionGroup</a></div><div class=\"ttdeci\">uint32_t GetCollisionGroup()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:38</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_a9fa2ed0795ec0f93390762bc849c8012\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#a9fa2ed0795ec0f93390762bc849c8012\">tram::TriggerComponent::~TriggerComponent</a></div><div class=\"ttdeci\">~TriggerComponent()</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:44</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_aaa9f40c6c3afaddd4657b6a2e5ea35e4\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#aaa9f40c6c3afaddd4657b6a2e5ea35e4\">tram::TriggerComponent::SetCollisionMask</a></div><div class=\"ttdeci\">void SetCollisionMask(uint32_t flags)</div><div class=\"ttdoc\">Sets a collision mask for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_aad292acd526021ecc258c7c6f509110c\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#aad292acd526021ecc258c7c6f509110c\">tram::TriggerComponent::GetModel</a></div><div class=\"ttdeci\">name_t GetModel()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ab100b725ae8d95280d34d7cbed51afb7\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ab100b725ae8d95280d34d7cbed51afb7\">tram::TriggerComponent::SetModel</a></div><div class=\"ttdeci\">void SetModel(name_t modelName)</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ac6632807ebb8dbe6feb551bd2b072bd3\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ac6632807ebb8dbe6feb551bd2b072bd3\">tram::TriggerComponent::SetRotation</a></div><div class=\"ttdeci\">void SetRotation(glm::quat rotation)</div><div class=\"ttdoc\">Sets the rotation of the component.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:92</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_acb29106d21d1cf02169a58c1c82c86a3\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#acb29106d21d1cf02169a58c1c82c86a3\">tram::TriggerComponent::TriggerComponent</a></div><div class=\"ttdeci\">TriggerComponent()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:19</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ad3b53b1d861f09301a7d6dfb34fb667d\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ad3b53b1d861f09301a7d6dfb34fb667d\">tram::TriggerComponent::Collision</a></div><div class=\"ttdeci\">void Collision(const Physics::Collision &amp;collision)</div><div class=\"ttdoc\">Registers a collision.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:104</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_ae6374eae5d6d91477a7abadc14a19b20\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#ae6374eae5d6d91477a7abadc14a19b20\">tram::TriggerComponent::Poll</a></div><div class=\"ttdeci\">std::vector&lt; Physics::Collision &gt; Poll()</div><div class=\"ttdoc\">Checks for collisions with the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:184</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_aee30feb5721fdf210cef6d5b36e914e6\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#aee30feb5721fdf210cef6d5b36e914e6\">tram::TriggerComponent::GetStoredCollisions</a></div><div class=\"ttdeci\">std::vector&lt; Physics::Collision &gt; GetStoredCollisions()</div><div class=\"ttdef\"><b>Definition:</b> trigger.h:43</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_trigger_component_html_af69d3a60b12eebbbdec84c83b049941e\"><div class=\"ttname\"><a href=\"classtram_1_1_trigger_component.html#af69d3a60b12eebbbdec84c83b049941e\">tram::TriggerComponent::SetShape</a></div><div class=\"ttdeci\">void SetShape(Physics::CollisionShape shape)</div><div class=\"ttdoc\">Sets a collision shape for the trigger.</div><div class=\"ttdef\"><b>Definition:</b> trigger.cpp:52</div></div>\n<div class=\"ttc\" id=\"acomponents_2physics_8h_html\"><div class=\"ttname\"><a href=\"components_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdef\"><b>Definition:</b> api.cpp:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:13</div></div>\n<div class=\"ttc\" id=\"aphysics_2physics_8h_html\"><div class=\"ttname\"><a href=\"physics_2physics_8h.html\">physics.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_event_html\"><div class=\"ttname\"><a href=\"structtram_1_1_event.html\">tram::Event</a></div><div class=\"ttdef\"><b>Definition:</b> event.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision.html\">tram::Physics::Collision</a></div><div class=\"ttdef\"><b>Definition:</b> physics.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_physics_1_1_collision_shape_html\"><div class=\"ttname\"><a href=\"structtram_1_1_physics_1_1_collision_shape.html\">tram::Physics::CollisionShape</a></div><div class=\"ttdef\"><b>Definition:</b> collisionshape.h:19</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdef\"><b>Definition:</b> uid.h:11</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/type_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/type.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">type.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"type_8h_source.html\">framework/type.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram::TypeToString</a> (Type type)</td></tr>\n<tr class=\"memdesc:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts type enum to string.  <a href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">More...</a><br /></td></tr>\n<tr class=\"separator:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/type_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/type.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">type.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cstdint&gt;</code><br />\n</div>\n<p><a href=\"type_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram::Type</a> : uint32_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">tram::TYPE_UNDEFINED</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">tram::TYPE_BOOL</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram::TYPE_NAME</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">tram::TYPE_STRING</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">tram::TYPE_INT8</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">tram::TYPE_INT16</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">tram::TYPE_INT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">tram::TYPE_UINT8</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">tram::TYPE_UINT16</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">tram::TYPE_UINT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">tram::TYPE_FLOAT32</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">tram::TYPE_VEC2</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">tram::TYPE_VEC3</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">tram::TYPE_VEC4</a>\n, <a class=\"el\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">tram::TYPE_QUAT</a>\n<br />\n }</td></tr>\n<tr class=\"memdesc:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Type enumeration for serialization, etc.  <a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">More...</a><br /></td></tr>\n<tr class=\"separator:a2b5d2fc96be5dd5baddedba49a7ef609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram::TypeToString</a> (Type type)</td></tr>\n<tr class=\"memdesc:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Converts type enum to string.  <a href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">More...</a><br /></td></tr>\n<tr class=\"separator:a8f6d1d8931b6fc9fe7e5767f1352383e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/type_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/type.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">type.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"type_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_TYPES_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_TYPES_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span>    </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">   12</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> : uint32_t {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">   13</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>, <span class=\"comment\">//&lt; When you don&#39;t know what the type is.</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">   14</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>,      <span class=\"comment\">//&lt; Bool. Defaults to C++ bool type.</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>,      <span class=\"comment\">//&lt; Our own name_t hashtable string.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">   16</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>,    <span class=\"comment\">//&lt; Generic string. Defaults to a char array.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">   17</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">TYPE_INT8</a>,      <span class=\"comment\">//&lt; Signed 8 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">TYPE_INT16</a>,     <span class=\"comment\">//&lt; Signed 16 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">   19</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>,     <span class=\"comment\">//&lt; Signed 32 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">   20</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">TYPE_UINT8</a>,     <span class=\"comment\">//&lt; Unsigned 8 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">TYPE_UINT16</a>,    <span class=\"comment\">//&lt; Unsigned 16 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>,    <span class=\"comment\">//&lt; Unsigned 32 bit long integer.</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">   23</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>,   <span class=\"comment\">//&lt; Normal precision floating-point.</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">   24</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>,      <span class=\"comment\">//&lt; Normal precision floating-point 2 element vector.</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">   25</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>,      <span class=\"comment\">//&lt; Normal precision floating-point 3 element vector.</span></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">   26</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>,      <span class=\"comment\">//&lt; Normal precision floating-point 4 element vector.</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">   27</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>,      <span class=\"comment\">//&lt; Normal precision floating-point quaternion.</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>};</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">TypeToString</a>(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> type);</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>}</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_TYPES_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdoc\">Type enumeration for serialization, etc.</div><div class=\"ttdef\"><b>Definition:</b> type.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">tram::TYPE_BOOL</a></div><div class=\"ttdeci\">@ TYPE_BOOL</div><div class=\"ttdef\"><b>Definition:</b> type.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">tram::TYPE_STRING</a></div><div class=\"ttdeci\">@ TYPE_STRING</div><div class=\"ttdef\"><b>Definition:</b> type.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a49b78449d81fdcd2a93b3d5fa92325c4\">tram::TYPE_INT16</a></div><div class=\"ttdeci\">@ TYPE_INT16</div><div class=\"ttdef\"><b>Definition:</b> type.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">tram::TYPE_VEC2</a></div><div class=\"ttdeci\">@ TYPE_VEC2</div><div class=\"ttdef\"><b>Definition:</b> type.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">tram::TYPE_UINT32</a></div><div class=\"ttdeci\">@ TYPE_UINT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">tram::TYPE_INT32</a></div><div class=\"ttdeci\">@ TYPE_INT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">tram::TYPE_VEC3</a></div><div class=\"ttdeci\">@ TYPE_VEC3</div><div class=\"ttdef\"><b>Definition:</b> type.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">tram::TYPE_QUAT</a></div><div class=\"ttdeci\">@ TYPE_QUAT</div><div class=\"ttdef\"><b>Definition:</b> type.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">tram::TYPE_VEC4</a></div><div class=\"ttdeci\">@ TYPE_VEC4</div><div class=\"ttdef\"><b>Definition:</b> type.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab89f008c241c92259b4b0c1d4d91624e\">tram::TYPE_UINT8</a></div><div class=\"ttdeci\">@ TYPE_UINT8</div><div class=\"ttdef\"><b>Definition:</b> type.h:20</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad0d568cbbb0814f238d210d2b4e9d3c0\">tram::TYPE_INT8</a></div><div class=\"ttdeci\">@ TYPE_INT8</div><div class=\"ttdef\"><b>Definition:</b> type.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">tram::TYPE_UNDEFINED</a></div><div class=\"ttdeci\">@ TYPE_UNDEFINED</div><div class=\"ttdef\"><b>Definition:</b> type.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram::TYPE_NAME</a></div><div class=\"ttdeci\">@ TYPE_NAME</div><div class=\"ttdef\"><b>Definition:</b> type.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af8ea1dfd3e18e18031dd0108f82b07ef\">tram::TYPE_UINT16</a></div><div class=\"ttdeci\">@ TYPE_UINT16</div><div class=\"ttdef\"><b>Definition:</b> type.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">tram::TYPE_FLOAT32</a></div><div class=\"ttdeci\">@ TYPE_FLOAT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8f6d1d8931b6fc9fe7e5767f1352383e\"><div class=\"ttname\"><a href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram::TypeToString</a></div><div class=\"ttdeci\">const char * TypeToString(Type type)</div><div class=\"ttdoc\">Converts type enum to string.</div><div class=\"ttdef\"><b>Definition:</b> type.cpp:8</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ui_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/ui.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#func-members\">Functions</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">ui.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"platform_8h_source.html\">platform/platform.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"image_8h_source.html\">platform/image.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"platform_2api_8h_source.html\">platform/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"core_8h_source.html\">framework/core.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"event_8h_source.html\">framework/event.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"ui_8h_source.html\">framework/ui.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2system_8h_source.html\">framework/system.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2api_8h_source.html\">render/api.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n<code>#include &lt;ctime&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_1_1_key_binding.html\">tram::UI::KeyBinding</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram_1_1_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">tram::UI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User interface system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, keyboardaction_t action)</td></tr>\n<tr class=\"separator:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49763cc0300d866370805b94a99f36fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a49763cc0300d866370805b94a99f36fd\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, void(*action)())</td></tr>\n<tr class=\"separator:a49763cc0300d866370805b94a99f36fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a581823cdaa8ed3cef6f48d2610961511\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, void(*action)(KeyboardKey))</td></tr>\n<tr class=\"separator:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::UI::Init</a> ()</td></tr>\n<tr class=\"memdesc:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">More...</a><br /></td></tr>\n<tr class=\"separator:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::UI::Uninit</a> ()</td></tr>\n<tr class=\"memdesc:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Uninitializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">More...</a><br /></td></tr>\n<tr class=\"separator:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::UI::Update</a> ()</td></tr>\n<tr class=\"memdesc:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">More...</a><br /></td></tr>\n<tr class=\"separator:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">tram::UI::EndFrame</a> ()</td></tr>\n<tr class=\"memdesc:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the frame and updates the window.  <a href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">More...</a><br /></td></tr>\n<tr class=\"separator:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">tram::UI::SetWebMainLoop</a> (void(*loop_function)(void))</td></tr>\n<tr class=\"separator:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">tram::UI::GetScreenWidth</a> ()</td></tr>\n<tr class=\"separator:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">tram::UI::GetScreenHeight</a> ()</td></tr>\n<tr class=\"separator:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a390f8622eafc311400a2454f11dfc016\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">tram::UI::SetWindowTitle</a> (const char *title)</td></tr>\n<tr class=\"separator:a390f8622eafc311400a2454f11dfc016\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">tram::UI::SetWindowSize</a> (int w, int h)</td></tr>\n<tr class=\"memdesc:a39ef71fa7757a83fa159686920f16f78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the window size.  <a href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">More...</a><br /></td></tr>\n<tr class=\"separator:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">tram::UI::SetCursor</a> (CursorType cursor)</td></tr>\n<tr class=\"separator:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">tram::UI::SetInputState</a> (InputState state)</td></tr>\n<tr class=\"separator:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">InputState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">tram::UI::GetInputState</a> ()</td></tr>\n<tr class=\"separator:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">tram::UI::PollKeyboardKey</a> (KeyboardKey key)</td></tr>\n<tr class=\"memdesc:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of a key for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">tram::UI::PollKeyboardAxis</a> (KeyboardAxis key)</td></tr>\n<tr class=\"memdesc:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of an axis for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">More...</a><br /></td></tr>\n<tr class=\"separator:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">tram::UI::PollKeyboardAxisDelta</a> (KeyboardAxis key)</td></tr>\n<tr class=\"memdesc:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the change of an axis for since the last frame.  <a href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">tram::UI::GetAxisSensitivity</a> (KeyboardAxis key)</td></tr>\n<tr class=\"separator:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">tram::UI::SetAxisSensitivity</a> (KeyboardAxis key, float value)</td></tr>\n<tr class=\"separator:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad23f479a3671059a175ec92cc496018d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">tram::UI::KeyPress</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:ad23f479a3671059a175ec92cc496018d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">tram::UI::KeyRelease</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">tram::UI::KeyCode</a> (uint16_t code)</td></tr>\n<tr class=\"separator:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">tram::UI::KeyMouse</a> (float xpos, float ypos)</td></tr>\n<tr class=\"separator:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">tram::UI::KeyScroll</a> (float value)</td></tr>\n<tr class=\"separator:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">tram::UI::ScreenResize</a> (int width, int height)</td></tr>\n<tr class=\"separator:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">tram::UI::ScreenClose</a> ()</td></tr>\n<tr class=\"separator:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">tram::UI::ShouldExit</a> ()</td></tr>\n<tr class=\"separator:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">keyboardaction_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">tram::UI::RegisterKeyboardAction</a> (const char *name)</td></tr>\n<tr class=\"separator:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">keyboardaction_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">tram::UI::GetKeyboardAction</a> (name_t name)</td></tr>\n<tr class=\"separator:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecde138c9de471bd9ef945d534669832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">name_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">tram::UI::GetKeyboardActionName</a> (keyboardaction_t type)</td></tr>\n<tr class=\"separator:aecde138c9de471bd9ef945d534669832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; keyboardaction_t, std::vector&lt; KeyboardKey &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">tram::UI::GetAllKeyboardKeyBindings</a> ()</td></tr>\n<tr class=\"separator:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">tram::UI::GetKeyboardKeyName</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ui_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/ui.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a> &#124;\n<a href=\"#enum-members\">Enumerations</a> &#124;\n<a href=\"#func-members\">Functions</a> &#124;\n<a href=\"#var-members\">Variables</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">ui.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"ui_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_u_i\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html\">tram::UI</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_u_i\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">User interface system. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a7127b8ce6c937f44455685b8ec1f0461\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef uint16_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">tram::UI::keyboardaction_t</a></td></tr>\n<tr class=\"separator:a7127b8ce6c937f44455685b8ec1f0461\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\nEnumerations</h2></td></tr>\n<tr class=\"memitem:acf6b27efa4c062d8c7110a6fb9f9fde9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">tram::UI::KeyboardKey</a> : uint16_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">tram::UI::KEY_SPACE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">tram::UI::KEY_APOSTROPHE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">tram::UI::KEY_COMMA</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">tram::UI::KEY_MINUS</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">tram::UI::KEY_PERIOD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">tram::UI::KEY_SLASH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">tram::UI::KEY_0</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">tram::UI::KEY_1</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">tram::UI::KEY_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">tram::UI::KEY_3</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">tram::UI::KEY_4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">tram::UI::KEY_5</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">tram::UI::KEY_6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">tram::UI::KEY_7</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">tram::UI::KEY_8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">tram::UI::KEY_9</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">tram::UI::KEY_SEMICOLON</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">tram::UI::KEY_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">tram::UI::KEY_A</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">tram::UI::KEY_B</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">tram::UI::KEY_C</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">tram::UI::KEY_D</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">tram::UI::KEY_E</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">tram::UI::KEY_F</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">tram::UI::KEY_G</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">tram::UI::KEY_H</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">tram::UI::KEY_I</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">tram::UI::KEY_J</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">tram::UI::KEY_K</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">tram::UI::KEY_L</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">tram::UI::KEY_M</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">tram::UI::KEY_N</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">tram::UI::KEY_O</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">tram::UI::KEY_P</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">tram::UI::KEY_Q</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">tram::UI::KEY_R</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">tram::UI::KEY_S</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">tram::UI::KEY_T</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">tram::UI::KEY_U</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">tram::UI::KEY_V</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">tram::UI::KEY_W</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">tram::UI::KEY_X</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">tram::UI::KEY_Y</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">tram::UI::KEY_Z</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">tram::UI::KEY_LEFT_BRACKET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">tram::UI::KEY_BACKSLASH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">tram::UI::KEY_RIGHT_BRACKET</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">tram::UI::KEY_GRAVE_ACCENT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">tram::UI::KEY_WORLD_1</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">tram::UI::KEY_WORLD_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">tram::UI::KEY_ESCAPE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">tram::UI::KEY_ENTER</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">tram::UI::KEY_TAB</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">tram::UI::KEY_BACKSPACE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">tram::UI::KEY_INSERT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">tram::UI::KEY_DELETE</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">tram::UI::KEY_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">tram::UI::KEY_LEFT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">tram::UI::KEY_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">tram::UI::KEY_UP</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">tram::UI::KEY_PAGE_UP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">tram::UI::KEY_PAGE_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">tram::UI::KEY_HOME</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">tram::UI::KEY_END</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">tram::UI::KEY_CAPS_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">tram::UI::KEY_SCROLL_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">tram::UI::KEY_NUM_LOCK</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">tram::UI::KEY_PRINT_SCREEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">tram::UI::KEY_PAUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">tram::UI::KEY_F1</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">tram::UI::KEY_F2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">tram::UI::KEY_F3</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">tram::UI::KEY_F4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">tram::UI::KEY_F5</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">tram::UI::KEY_F6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">tram::UI::KEY_F7</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">tram::UI::KEY_F8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">tram::UI::KEY_F9</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">tram::UI::KEY_F10</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">tram::UI::KEY_F11</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">tram::UI::KEY_F12</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">tram::UI::KEY_F13</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">tram::UI::KEY_F14</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">tram::UI::KEY_F15</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">tram::UI::KEY_F16</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">tram::UI::KEY_F17</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">tram::UI::KEY_F18</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">tram::UI::KEY_F19</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">tram::UI::KEY_F20</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">tram::UI::KEY_F21</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">tram::UI::KEY_F22</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">tram::UI::KEY_F23</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">tram::UI::KEY_F24</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">tram::UI::KEY_F25</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">tram::UI::KEY_KP_0</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">tram::UI::KEY_KP_1</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">tram::UI::KEY_KP_2</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">tram::UI::KEY_KP_3</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">tram::UI::KEY_KP_4</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">tram::UI::KEY_KP_5</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">tram::UI::KEY_KP_6</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">tram::UI::KEY_KP_7</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">tram::UI::KEY_KP_8</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">tram::UI::KEY_KP_9</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">tram::UI::KEY_KP_DECIMAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">tram::UI::KEY_KP_DIVIDE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">tram::UI::KEY_KP_MULTIPLY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">tram::UI::KEY_KP_SUBTRACT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">tram::UI::KEY_KP_ADD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">tram::UI::KEY_KP_ENTER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">tram::UI::KEY_KP_EQUAL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">tram::UI::KEY_LEFT_SHIFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">tram::UI::KEY_LEFT_CONTROL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">tram::UI::KEY_LEFT_ALT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">tram::UI::KEY_LEFT_SUPER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">tram::UI::KEY_RIGHT_SHIFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">tram::UI::KEY_RIGHT_CONTROL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">tram::UI::KEY_RIGHT_ALT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">tram::UI::KEY_RIGHT_SUPER</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">tram::UI::KEY_MENU</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">tram::UI::KEY_RIGHTMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">tram::UI::KEY_LEFTMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">tram::UI::KEY_MIDDLEMOUSE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">tram::UI::KEY_LASTKEY</a>\n<br />\n }</td></tr>\n<tr class=\"separator:acf6b27efa4c062d8c7110a6fb9f9fde9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aace717edeba1f507cd383c7d1f00e064\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">tram::UI::KeyboardAxis</a> : uint16_t { <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">tram::UI::KEY_MOUSE_X</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">tram::UI::KEY_MOUSE_Y</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">tram::UI::KEY_MOUSE_SCROLL</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">tram::UI::KEY_LASTAXIS</a>\n }</td></tr>\n<tr class=\"separator:aace717edeba1f507cd383c7d1f00e064\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aef59b5ccd9382ca4fdd1f951a9b68aef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">tram::UI::InputState</a> { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">tram::UI::STATE_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">tram::UI::STATE_NO_INPUT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">tram::UI::STATE_FLYING</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">tram::UI::STATE_MENU_OPEN</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">tram::UI::STATE_CURSOR</a>\n<br />\n }</td></tr>\n<tr class=\"separator:aef59b5ccd9382ca4fdd1f951a9b68aef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a642ac99af3c1ebae068607e82baa5f99\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">tram::UI::KeyboardAction</a> : keyboardaction_t { <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">tram::UI::KEY_ACTION_NONE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">tram::UI::KEY_ACTION_FORWARD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">tram::UI::KEY_ACTION_BACKWARD</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">tram::UI::KEY_ACTION_STRAFE_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">tram::UI::KEY_ACTION_STRAFE_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">tram::UI::KEY_ACTION_UP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">tram::UI::KEY_ACTION_DOWN</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">tram::UI::KEY_ACTION_LEFT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">tram::UI::KEY_ACTION_RIGHT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">tram::UI::KEY_ACTION_JUMP</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">tram::UI::KEY_ACTION_CROUCH</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">tram::UI::KEY_ACTION_SPRINT</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">tram::UI::KEY_ACTION_FLY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">tram::UI::KEY_ACTION_ACTIVATE</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">tram::UI::KEY_ACTION_PRIMARY</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">tram::UI::KEY_ACTION_SECONDARY</a>\n, <br />\n&#160;&#160;<a class=\"el\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">tram::UI::KEY_ACTION_LAST</a>\n<br />\n }</td></tr>\n<tr class=\"separator:a642ac99af3c1ebae068607e82baa5f99\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ae9e156e84d2049fc1e691a10e0348f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">tram::UI::CursorType</a> { <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">tram::UI::CURSOR_DEFAULT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">tram::UI::CURSOR_TEXT</a>\n, <a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">tram::UI::CURSOR_CLICK</a>\n }</td></tr>\n<tr class=\"separator:a6ae9e156e84d2049fc1e691a10e0348f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\nFunctions</h2></td></tr>\n<tr class=\"memitem:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::UI::Init</a> ()</td></tr>\n<tr class=\"memdesc:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Initializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">More...</a><br /></td></tr>\n<tr class=\"separator:a34c539a00c1e5228b2ee9d9f69de5af8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::UI::Uninit</a> ()</td></tr>\n<tr class=\"memdesc:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Uninitializes the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">More...</a><br /></td></tr>\n<tr class=\"separator:a5206ed605c69006a0d6ad1b2dafb2a80\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::UI::Update</a> ()</td></tr>\n<tr class=\"memdesc:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Updates the <a class=\"el\" href=\"namespacetram_1_1_u_i.html\" title=\"User interface system.\">UI</a> system.  <a href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">More...</a><br /></td></tr>\n<tr class=\"separator:a8d6af6713f2e6c053cacfaab7e628438\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">tram::UI::EndFrame</a> ()</td></tr>\n<tr class=\"memdesc:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Ends the frame and updates the window.  <a href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">More...</a><br /></td></tr>\n<tr class=\"separator:a303b8e17aa7e0dff5839a0b1ab33d391\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">tram::UI::GetScreenWidth</a> ()</td></tr>\n<tr class=\"separator:a761e8c28f0e3748eb8b618b1fd393aca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">tram::UI::GetScreenHeight</a> ()</td></tr>\n<tr class=\"separator:a982ad2ea96f9db1688a0004ba480bb66\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a390f8622eafc311400a2454f11dfc016\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">tram::UI::SetWindowTitle</a> (const char *title)</td></tr>\n<tr class=\"separator:a390f8622eafc311400a2454f11dfc016\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">tram::UI::SetWindowSize</a> (int w, int h)</td></tr>\n<tr class=\"memdesc:a39ef71fa7757a83fa159686920f16f78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the window size.  <a href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">More...</a><br /></td></tr>\n<tr class=\"separator:a39ef71fa7757a83fa159686920f16f78\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">tram::UI::SetCursor</a> (CursorType cursor)</td></tr>\n<tr class=\"separator:a6ca596524ffb0c21621d8cfdcf9c5fbf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">tram::UI::SetWebMainLoop</a> (void(*loop_function)(void))</td></tr>\n<tr class=\"separator:a654d5f4b77f90147a9098acce21b19df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, keyboardaction_t action)</td></tr>\n<tr class=\"separator:aa3f058ce3fd0e6b76f3224eb80f547c9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a49763cc0300d866370805b94a99f36fd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a49763cc0300d866370805b94a99f36fd\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, void(*action)())</td></tr>\n<tr class=\"separator:a49763cc0300d866370805b94a99f36fd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a581823cdaa8ed3cef6f48d2610961511\">tram::UI::BindKeyboardKey</a> (KeyboardKey key, void(*action)(KeyboardKey))</td></tr>\n<tr class=\"separator:a581823cdaa8ed3cef6f48d2610961511\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">tram::UI::PollKeyboardKey</a> (KeyboardKey key)</td></tr>\n<tr class=\"memdesc:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of a key for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">More...</a><br /></td></tr>\n<tr class=\"separator:a7a1f37f6e233c727f219f06aefc745ef\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">tram::UI::PollKeyboardAxis</a> (KeyboardAxis key)</td></tr>\n<tr class=\"memdesc:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the state of an axis for the current frame.  <a href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">More...</a><br /></td></tr>\n<tr class=\"separator:a3667dadfea3dcd6dff80d60611fb7cdc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">tram::UI::PollKeyboardAxisDelta</a> (KeyboardAxis key)</td></tr>\n<tr class=\"memdesc:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Checks the change of an axis for since the last frame.  <a href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">More...</a><br /></td></tr>\n<tr class=\"separator:a5cb12417deb961741e7269cbe3398dd1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">tram::UI::SetInputState</a> (InputState state)</td></tr>\n<tr class=\"separator:abdd66ea8df097a0c2b314b87850cef35\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">InputState&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">tram::UI::GetInputState</a> ()</td></tr>\n<tr class=\"separator:a6865ff9dd91ce26566f1867e6005980d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ad23f479a3671059a175ec92cc496018d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">tram::UI::KeyPress</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:ad23f479a3671059a175ec92cc496018d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">tram::UI::KeyRelease</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:a46b24e31c21dac00a0d569caeed3a3c7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">tram::UI::KeyCode</a> (uint16_t code)</td></tr>\n<tr class=\"separator:ac636614381ad3dbc2f776a81b079d7aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">tram::UI::KeyMouse</a> (float xpos, float ypos)</td></tr>\n<tr class=\"separator:aa2ea74c6f62438b6f846bee415717c6b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">tram::UI::KeyScroll</a> (float value)</td></tr>\n<tr class=\"separator:a6b5c256e6ef51e21a36a61a03114383c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">tram::UI::ScreenResize</a> (int width, int height)</td></tr>\n<tr class=\"separator:a8ca04b3e70a301b34b59d9aa2dde6282\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">tram::UI::ScreenClose</a> ()</td></tr>\n<tr class=\"separator:aca1f573178e278ecf636cbe954aa6487\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">tram::UI::GetAxisSensitivity</a> (KeyboardAxis key)</td></tr>\n<tr class=\"separator:a2e57de90a0a4d8616e2ac2115bc2a09c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">tram::UI::SetAxisSensitivity</a> (KeyboardAxis key, float value)</td></tr>\n<tr class=\"separator:aafa7d6428092dcd22b4ea486c948baf5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">keyboardaction_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">tram::UI::RegisterKeyboardAction</a> (const char *name)</td></tr>\n<tr class=\"separator:a01f1e35610c8d42fbf3f65a1b192dcb9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">keyboardaction_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">tram::UI::GetKeyboardAction</a> (name_t name)</td></tr>\n<tr class=\"separator:a151dea9e688c18e631f2aaef4758497b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:aecde138c9de471bd9ef945d534669832\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">name_t&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">tram::UI::GetKeyboardActionName</a> (keyboardaction_t type)</td></tr>\n<tr class=\"separator:aecde138c9de471bd9ef945d534669832\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; std::pair&lt; keyboardaction_t, std::vector&lt; KeyboardKey &gt; &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">tram::UI::GetAllKeyboardKeyBindings</a> ()</td></tr>\n<tr class=\"separator:a95733211eecad5c91c9f4ae453765a91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const char *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">tram::UI::GetKeyboardKeyName</a> (KeyboardKey key)</td></tr>\n<tr class=\"separator:a6c013d6464921c3bdcb5b3a2906148ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">tram::UI::ShouldExit</a> ()</td></tr>\n<tr class=\"separator:a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"var-members\" name=\"var-members\"></a>\nVariables</h2></td></tr>\n<tr class=\"memitem:a2613ca9ec2e1a030b94d21e9e87281af\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">tram::UI::CAMERA_SENSITIVITY</a> = 6.0f</td></tr>\n<tr class=\"separator:a2613ca9ec2e1a030b94d21e9e87281af\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:acf999f961120350df3549cff1d0c9b0c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">const float&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">tram::UI::CAMERA_SPEED</a> = 6.0f</td></tr>\n<tr class=\"separator:acf999f961120350df3549cff1d0c9b0c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/ui_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/ui.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">ui.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"ui_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_UI_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_UI_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_u_i.html\">tram::UI</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">   10</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> : uint16_t {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span>    <span class=\"comment\">// stutter keys</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">   12</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">KEY_SPACE</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">KEY_APOSTROPHE</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">KEY_COMMA</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">KEY_MINUS</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">KEY_PERIOD</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">KEY_SLASH</a>,</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span>    </div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    <span class=\"comment\">// number keys</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">   15</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">KEY_0</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">KEY_1</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">KEY_2</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">KEY_3</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">KEY_4</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">KEY_5</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">KEY_6</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">KEY_7</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">KEY_8</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">KEY_9</a>,</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    <span class=\"comment\">// programming keys</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">   18</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">KEY_SEMICOLON</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">KEY_EQUAL</a>,</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>    </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>    <span class=\"comment\">// letter keys</span></div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">   21</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">KEY_A</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">KEY_B</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">KEY_C</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">KEY_D</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">KEY_E</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">KEY_F</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">KEY_G</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">KEY_H</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">KEY_I</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">KEY_J</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">KEY_K</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">KEY_L</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">KEY_M</a>,</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">   22</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">KEY_N</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">KEY_O</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">KEY_P</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">KEY_Q</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">KEY_R</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">KEY_S</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">KEY_T</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">KEY_U</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">KEY_V</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">KEY_W</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">KEY_X</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">KEY_Y</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">KEY_Z</a>,</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span>    </div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    <span class=\"comment\">// keys that you press by accident</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">   25</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">KEY_LEFT_BRACKET</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">KEY_BACKSLASH</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">KEY_RIGHT_BRACKET</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">KEY_GRAVE_ACCENT</a>,</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    <span class=\"comment\">// i have no idea what these are</span></div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">   28</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">KEY_WORLD_1</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">KEY_WORLD_2</a>,</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    <span class=\"comment\">// stutter keys</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">   31</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">KEY_ESCAPE</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">KEY_ENTER</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">KEY_TAB</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">KEY_BACKSPACE</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">KEY_INSERT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">KEY_DELETE</a>,</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"comment\">// arrow keys</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">   34</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">KEY_RIGHT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">KEY_LEFT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">KEY_DOWN</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">KEY_UP</a>,</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"comment\">// keys right above arrow keys</span></div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">   37</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">KEY_PAGE_UP</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">KEY_PAGE_DOWN</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">KEY_HOME</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">KEY_END</a>,</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">   38</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">KEY_CAPS_LOCK</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">KEY_SCROLL_LOCK</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">KEY_NUM_LOCK</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">KEY_PRINT_SCREEN</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">KEY_PAUSE</a>,</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"comment\">// function keys</span></div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">   41</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">KEY_F1</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">KEY_F2</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">KEY_F3</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">KEY_F4</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">KEY_F5</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">KEY_F6</a>,</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">   42</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">KEY_F7</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">KEY_F8</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">KEY_F9</a>,     <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">KEY_F10</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">KEY_F11</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">KEY_F12</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">KEY_F13</a>,</div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">   43</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">KEY_F14</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">KEY_F15</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">KEY_F16</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">KEY_F17</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">KEY_F18</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">KEY_F19</a>,</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">   44</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">KEY_F20</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">KEY_F21</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">KEY_F22</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">KEY_F23</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">KEY_F24</a>,    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">KEY_F25</a>,</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">   45</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">KEY_KP_0</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">KEY_KP_1</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">KEY_KP_2</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">KEY_KP_3</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">KEY_KP_4</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">KEY_KP_5</a>,</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">   46</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">KEY_KP_6</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">KEY_KP_7</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">KEY_KP_8</a>,   <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">KEY_KP_9</a>,</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    </div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"comment\">// keyoad keys</span></div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">   49</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">KEY_KP_DECIMAL</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">KEY_KP_DIVIDE</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">KEY_KP_MULTIPLY</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">KEY_KP_SUBTRACT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">KEY_KP_ADD</a>,</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">   50</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">KEY_KP_ENTER</a>,  <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">KEY_KP_EQUAL</a>,</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    </div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"comment\">// modfier keys</span></div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">   53</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">KEY_LEFT_SHIFT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">KEY_LEFT_CONTROL</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">KEY_LEFT_ALT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">KEY_LEFT_SUPER</a>,</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">   54</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">KEY_RIGHT_SHIFT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">KEY_RIGHT_CONTROL</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">KEY_RIGHT_ALT</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">KEY_RIGHT_SUPER</a>,</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"comment\">// i have no idea what this key is</span></div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">   57</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">KEY_MENU</a>,</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    <span class=\"comment\">// mouse keys</span></div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">   60</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">KEY_RIGHTMOUSE</a>,</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">   61</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">KEY_LEFTMOUSE</a>,</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">   62</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">KEY_MIDDLEMOUSE</a>,</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    </div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">KEY_LASTKEY</a></div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">   65</a></span>};</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">   67</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> : uint16_t {</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">   68</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">KEY_MOUSE_X</a>,</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">   69</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">KEY_MOUSE_Y</a>,</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">   70</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">KEY_MOUSE_SCROLL</a>,</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">KEY_LASTAXIS</a></div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">   72</a></span>};</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">   74</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> {</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">   75</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">STATE_DEFAULT</a>,      <span class=\"comment\">//&lt; Normal input, events get generated, cursor disabled.</span></div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">   76</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">STATE_NO_INPUT</a>,     <span class=\"comment\">//&lt; Inputs get ignored, no cursor.</span></div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">   77</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">STATE_FLYING</a>,       <span class=\"comment\">//&lt; Events are skipped, inputs directly move view.</span></div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">   78</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">STATE_MENU_OPEN</a>,    <span class=\"comment\">//&lt; Input gets registered, but no events are generated, cursor enabled.</span></div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">STATE_CURSOR</a>        <span class=\"comment\">//&lt; Normal input, events get generated, but cursor enabled.</span></div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">   80</a></span>};</div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">   82</a></span><span class=\"keyword\">typedef</span> uint16_t <a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a>;</div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">   84</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">KeyboardAction</a> : <a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> {</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">   85</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">KEY_ACTION_NONE</a>,</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">   86</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">KEY_ACTION_FORWARD</a>,</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">   87</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">KEY_ACTION_BACKWARD</a>,</div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">   88</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">KEY_ACTION_STRAFE_LEFT</a>,</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">   89</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">KEY_ACTION_STRAFE_RIGHT</a>,</div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">   90</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">KEY_ACTION_UP</a>,</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">   91</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">KEY_ACTION_DOWN</a>,</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">   92</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">KEY_ACTION_LEFT</a>,</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">   93</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">KEY_ACTION_RIGHT</a>,</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">   94</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">KEY_ACTION_JUMP</a>,</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">   95</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">KEY_ACTION_CROUCH</a>,</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">   96</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">KEY_ACTION_SPRINT</a>,</div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">   97</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">KEY_ACTION_FLY</a>,</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">   98</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">KEY_ACTION_ACTIVATE</a>,</div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">   99</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">KEY_ACTION_PRIMARY</a>,</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">  100</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">KEY_ACTION_SECONDARY</a>,</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">KEY_ACTION_LAST</a></div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">  102</a></span>};</div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">  104</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a> {</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">  105</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">CURSOR_DEFAULT</a>,</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">  106</a></span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">CURSOR_TEXT</a>,</div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">CURSOR_CLICK</a></div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">  108</a></span>};</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">  110</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">CAMERA_SENSITIVITY</a> = 6.0f;</div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">  111</a></span><span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">CAMERA_SPEED</a> = 6.0f;</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">Init</a>();</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">Uninit</a>();</div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">Update</a>();</div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">EndFrame</a>();</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">GetScreenWidth</a>();</div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">GetScreenHeight</a>();</div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">SetWindowTitle</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* title);</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">SetWindowSize</a>(<span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h);</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">SetCursor</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">CursorType</a> cursor);</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">SetWebMainLoop</a>(<span class=\"keywordtype\">void</span>(*loop_function)(<span class=\"keywordtype\">void</span>));</div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">BindKeyboardKey</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, <a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> action);</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">BindKeyboardKey</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, <span class=\"keywordtype\">void</span> (*action)());</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">BindKeyboardKey</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key, <span class=\"keywordtype\">void</span> (*action)(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a>));</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">PollKeyboardKey</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key);</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">PollKeyboardAxis</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key);</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">PollKeyboardAxisDelta</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> key);</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">SetInputState</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> state);</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">InputState</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">GetInputState</a>();</div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"comment\">// maybe instead of each platform calling this? these could be fed as pointers</span></div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"comment\">// into the platform?</span></div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"comment\">// TODO: fix</span></div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">KeyPress</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key);</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">KeyRelease</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key);</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">KeyCode</a>(uint16_t code);</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">KeyMouse</a>(<span class=\"keywordtype\">float</span> x_value, <span class=\"keywordtype\">float</span> y_value);</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">KeyScroll</a>(<span class=\"keywordtype\">float</span> value);</div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">ScreenResize</a>(<span class=\"keywordtype\">int</span> w, <span class=\"keywordtype\">int</span> h);</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">ScreenClose</a>();</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">GetAxisSensitivity</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> axis);</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">SetAxisSensitivity</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">KeyboardAxis</a> axis, <span class=\"keywordtype\">float</span> value);</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">RegisterKeyboardAction</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* name);</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span><a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">GetKeyboardAction</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> name);</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">GetKeyboardActionName</a>(<a class=\"code hl_typedef\" href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">keyboardaction_t</a> type);</div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>std::vector&lt;std::pair&lt;keyboardaction_t, std::vector&lt;KeyboardKey&gt;&gt;&gt; <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">GetAllKeyboardKeyBindings</a>();</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">GetKeyboardKeyName</a>(<a class=\"code hl_enumeration\" href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">KeyboardKey</a> key);</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span><span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">ShouldExit</a>();</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>}</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_UI_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html\">tram::UI</a></div><div class=\"ttdoc\">User interface system.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a01f1e35610c8d42fbf3f65a1b192dcb9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a01f1e35610c8d42fbf3f65a1b192dcb9\">tram::UI::RegisterKeyboardAction</a></div><div class=\"ttdeci\">keyboardaction_t RegisterKeyboardAction(const char *name)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:382</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a151dea9e688c18e631f2aaef4758497b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a151dea9e688c18e631f2aaef4758497b\">tram::UI::GetKeyboardAction</a></div><div class=\"ttdeci\">keyboardaction_t GetKeyboardAction(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:405</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a2613ca9ec2e1a030b94d21e9e87281af\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a2613ca9ec2e1a030b94d21e9e87281af\">tram::UI::CAMERA_SENSITIVITY</a></div><div class=\"ttdeci\">const float CAMERA_SENSITIVITY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:110</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a2e57de90a0a4d8616e2ac2115bc2a09c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a2e57de90a0a4d8616e2ac2115bc2a09c\">tram::UI::GetAxisSensitivity</a></div><div class=\"ttdeci\">float GetAxisSensitivity(KeyboardAxis key)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:291</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a303b8e17aa7e0dff5839a0b1ab33d391\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a303b8e17aa7e0dff5839a0b1ab33d391\">tram::UI::EndFrame</a></div><div class=\"ttdeci\">void EndFrame()</div><div class=\"ttdoc\">Ends the frame and updates the window.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:188</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a34c539a00c1e5228b2ee9d9f69de5af8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a34c539a00c1e5228b2ee9d9f69de5af8\">tram::UI::Init</a></div><div class=\"ttdeci\">void Init()</div><div class=\"ttdoc\">Initializes the UI system.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:121</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a3667dadfea3dcd6dff80d60611fb7cdc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a3667dadfea3dcd6dff80d60611fb7cdc\">tram::UI::PollKeyboardAxis</a></div><div class=\"ttdeci\">float PollKeyboardAxis(KeyboardAxis key)</div><div class=\"ttdoc\">Checks the state of an axis for the current frame.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:281</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a390f8622eafc311400a2454f11dfc016\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a390f8622eafc311400a2454f11dfc016\">tram::UI::SetWindowTitle</a></div><div class=\"ttdeci\">void SetWindowTitle(const char *title)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:210</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a39ef71fa7757a83fa159686920f16f78\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a39ef71fa7757a83fa159686920f16f78\">tram::UI::SetWindowSize</a></div><div class=\"ttdeci\">void SetWindowSize(int w, int h)</div><div class=\"ttdoc\">Sets the window size.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:217</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a46b24e31c21dac00a0d569caeed3a3c7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a46b24e31c21dac00a0d569caeed3a3c7\">tram::UI::KeyRelease</a></div><div class=\"ttdeci\">void KeyRelease(KeyboardKey key)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:313</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a5206ed605c69006a0d6ad1b2dafb2a80\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a5206ed605c69006a0d6ad1b2dafb2a80\">tram::UI::Uninit</a></div><div class=\"ttdeci\">void Uninit()</div><div class=\"ttdoc\">Uninitializes the UI system.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:132</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a5cb12417deb961741e7269cbe3398dd1\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a5cb12417deb961741e7269cbe3398dd1\">tram::UI::PollKeyboardAxisDelta</a></div><div class=\"ttdeci\">float PollKeyboardAxisDelta(KeyboardAxis key)</div><div class=\"ttdoc\">Checks the change of an axis for since the last frame.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:287</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a5f001c3dd4e24194b7b8b7e6ae73d6b4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a5f001c3dd4e24194b7b8b7e6ae73d6b4\">tram::UI::ShouldExit</a></div><div class=\"ttdeci\">bool ShouldExit()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:356</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99\">tram::UI::KeyboardAction</a></div><div class=\"ttdeci\">KeyboardAction</div><div class=\"ttdef\"><b>Definition:</b> ui.h:84</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a05969ba3d0841548ca5c74e520acceea\">tram::UI::KEY_ACTION_RIGHT</a></div><div class=\"ttdeci\">@ KEY_ACTION_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:93</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a076e3f62c43d41515fc4f49ff52caabd\">tram::UI::KEY_ACTION_ACTIVATE</a></div><div class=\"ttdeci\">@ KEY_ACTION_ACTIVATE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:98</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a1df68d53996f14b271458109f5c74859\">tram::UI::KEY_ACTION_UP</a></div><div class=\"ttdeci\">@ KEY_ACTION_UP</div><div class=\"ttdef\"><b>Definition:</b> ui.h:90</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a260f4ae152cb86c6657c321a97d42f40\">tram::UI::KEY_ACTION_NONE</a></div><div class=\"ttdeci\">@ KEY_ACTION_NONE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:85</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a26612bdb65d175cc56131b1ab416954c\">tram::UI::KEY_ACTION_SECONDARY</a></div><div class=\"ttdeci\">@ KEY_ACTION_SECONDARY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:100</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a2ab360c8d227a318e206cd60302220e0\">tram::UI::KEY_ACTION_FORWARD</a></div><div class=\"ttdeci\">@ KEY_ACTION_FORWARD</div><div class=\"ttdef\"><b>Definition:</b> ui.h:86</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a3153636a951f4fe7961e1531b10bd1b9\">tram::UI::KEY_ACTION_STRAFE_RIGHT</a></div><div class=\"ttdeci\">@ KEY_ACTION_STRAFE_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:89</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a4243be2902836000e58876f71bcd6d90\">tram::UI::KEY_ACTION_PRIMARY</a></div><div class=\"ttdeci\">@ KEY_ACTION_PRIMARY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:99</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a466d107fc666cf939873650da55b36d9\">tram::UI::KEY_ACTION_STRAFE_LEFT</a></div><div class=\"ttdeci\">@ KEY_ACTION_STRAFE_LEFT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:88</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a59cf019c9e17effcf31b30c805ff5fd7\">tram::UI::KEY_ACTION_FLY</a></div><div class=\"ttdeci\">@ KEY_ACTION_FLY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:97</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a90778630020380ab86ef277e27a92603\">tram::UI::KEY_ACTION_DOWN</a></div><div class=\"ttdeci\">@ KEY_ACTION_DOWN</div><div class=\"ttdef\"><b>Definition:</b> ui.h:91</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99a9086284540999b0ce7ebe45247de8c39\">tram::UI::KEY_ACTION_BACKWARD</a></div><div class=\"ttdeci\">@ KEY_ACTION_BACKWARD</div><div class=\"ttdef\"><b>Definition:</b> ui.h:87</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99aa5239b56b4a53ca00c16ba6ba82faf7e\">tram::UI::KEY_ACTION_SPRINT</a></div><div class=\"ttdeci\">@ KEY_ACTION_SPRINT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:96</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ac1d329520148264671aecb8bfdd340f2\">tram::UI::KEY_ACTION_CROUCH</a></div><div class=\"ttdeci\">@ KEY_ACTION_CROUCH</div><div class=\"ttdef\"><b>Definition:</b> ui.h:95</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99ad9cd378006df175750430fe1a2de542e\">tram::UI::KEY_ACTION_JUMP</a></div><div class=\"ttdeci\">@ KEY_ACTION_JUMP</div><div class=\"ttdef\"><b>Definition:</b> ui.h:94</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99addfb9f474cccad06817f61d7d9881cf9\">tram::UI::KEY_ACTION_LAST</a></div><div class=\"ttdeci\">@ KEY_ACTION_LAST</div><div class=\"ttdef\"><b>Definition:</b> ui.h:101</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a642ac99af3c1ebae068607e82baa5f99af7f10fa172ce512ff124f22f7eaf76eb\">tram::UI::KEY_ACTION_LEFT</a></div><div class=\"ttdeci\">@ KEY_ACTION_LEFT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:92</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a654d5f4b77f90147a9098acce21b19df\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a654d5f4b77f90147a9098acce21b19df\">tram::UI::SetWebMainLoop</a></div><div class=\"ttdeci\">void SetWebMainLoop(void(*loop_function)(void))</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:192</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6865ff9dd91ce26566f1867e6005980d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6865ff9dd91ce26566f1867e6005980d\">tram::UI::GetInputState</a></div><div class=\"ttdeci\">InputState GetInputState()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:269</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6ae9e156e84d2049fc1e691a10e0348f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348f\">tram::UI::CursorType</a></div><div class=\"ttdeci\">CursorType</div><div class=\"ttdef\"><b>Definition:</b> ui.h:104</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa038670b3ea8b7062e29f83da791209dd\">tram::UI::CURSOR_TEXT</a></div><div class=\"ttdeci\">@ CURSOR_TEXT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:106</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fa7d5caca61a671199d777b087902542c2\">tram::UI::CURSOR_CLICK</a></div><div class=\"ttdeci\">@ CURSOR_CLICK</div><div class=\"ttdef\"><b>Definition:</b> ui.h:107</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6ae9e156e84d2049fc1e691a10e0348fae0745982afd357e57249fd3d8ccc41e2\">tram::UI::CURSOR_DEFAULT</a></div><div class=\"ttdeci\">@ CURSOR_DEFAULT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:105</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6b5c256e6ef51e21a36a61a03114383c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6b5c256e6ef51e21a36a61a03114383c\">tram::UI::KeyScroll</a></div><div class=\"ttdeci\">void KeyScroll(float value)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:342</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6c013d6464921c3bdcb5b3a2906148ce\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6c013d6464921c3bdcb5b3a2906148ce\">tram::UI::GetKeyboardKeyName</a></div><div class=\"ttdeci\">const char * GetKeyboardKeyName(KeyboardKey key)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:448</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a6ca596524ffb0c21621d8cfdcf9c5fbf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a6ca596524ffb0c21621d8cfdcf9c5fbf\">tram::UI::SetCursor</a></div><div class=\"ttdeci\">void SetCursor(CursorType cursor)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:225</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a7127b8ce6c937f44455685b8ec1f0461\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a7127b8ce6c937f44455685b8ec1f0461\">tram::UI::keyboardaction_t</a></div><div class=\"ttdeci\">uint16_t keyboardaction_t</div><div class=\"ttdef\"><b>Definition:</b> ui.h:82</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a761e8c28f0e3748eb8b618b1fd393aca\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a761e8c28f0e3748eb8b618b1fd393aca\">tram::UI::GetScreenWidth</a></div><div class=\"ttdeci\">float GetScreenWidth()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:201</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a7a1f37f6e233c727f219f06aefc745ef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a7a1f37f6e233c727f219f06aefc745ef\">tram::UI::PollKeyboardKey</a></div><div class=\"ttdeci\">bool PollKeyboardKey(KeyboardKey key)</div><div class=\"ttdoc\">Checks the state of a key for the current frame.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:275</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a8ca04b3e70a301b34b59d9aa2dde6282\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a8ca04b3e70a301b34b59d9aa2dde6282\">tram::UI::ScreenResize</a></div><div class=\"ttdeci\">void ScreenResize(int width, int height)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:346</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a8d6af6713f2e6c053cacfaab7e628438\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a8d6af6713f2e6c053cacfaab7e628438\">tram::UI::Update</a></div><div class=\"ttdeci\">void Update()</div><div class=\"ttdoc\">Updates the UI system.</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:140</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a95733211eecad5c91c9f4ae453765a91\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a95733211eecad5c91c9f4ae453765a91\">tram::UI::GetAllKeyboardKeyBindings</a></div><div class=\"ttdeci\">std::vector&lt; std::pair&lt; keyboardaction_t, std::vector&lt; KeyboardKey &gt; &gt; &gt; GetAllKeyboardKeyBindings()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:428</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_a982ad2ea96f9db1688a0004ba480bb66\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#a982ad2ea96f9db1688a0004ba480bb66\">tram::UI::GetScreenHeight</a></div><div class=\"ttdeci\">float GetScreenHeight()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:205</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aa2ea74c6f62438b6f846bee415717c6b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aa2ea74c6f62438b6f846bee415717c6b\">tram::UI::KeyMouse</a></div><div class=\"ttdeci\">void KeyMouse(float xpos, float ypos)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:327</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aa3f058ce3fd0e6b76f3224eb80f547c9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aa3f058ce3fd0e6b76f3224eb80f547c9\">tram::UI::BindKeyboardKey</a></div><div class=\"ttdeci\">void BindKeyboardKey(KeyboardKey key, keyboardaction_t action)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:107</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aace717edeba1f507cd383c7d1f00e064\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064\">tram::UI::KeyboardAxis</a></div><div class=\"ttdeci\">KeyboardAxis</div><div class=\"ttdef\"><b>Definition:</b> ui.h:67</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a1b5aaf04a80eebb831a4cb781aa5d077\">tram::UI::KEY_MOUSE_X</a></div><div class=\"ttdeci\">@ KEY_MOUSE_X</div><div class=\"ttdef\"><b>Definition:</b> ui.h:68</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a75cfdc48455414e815068fdb2f27ff0a\">tram::UI::KEY_MOUSE_SCROLL</a></div><div class=\"ttdeci\">@ KEY_MOUSE_SCROLL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:70</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064a9acff80ae609b9842ec96d2ec7cfa401\">tram::UI::KEY_MOUSE_Y</a></div><div class=\"ttdeci\">@ KEY_MOUSE_Y</div><div class=\"ttdef\"><b>Definition:</b> ui.h:69</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aace717edeba1f507cd383c7d1f00e064ab7fba8f6f26d9907c971775a44ceeed2\">tram::UI::KEY_LASTAXIS</a></div><div class=\"ttdeci\">@ KEY_LASTAXIS</div><div class=\"ttdef\"><b>Definition:</b> ui.h:71</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aafa7d6428092dcd22b4ea486c948baf5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aafa7d6428092dcd22b4ea486c948baf5\">tram::UI::SetAxisSensitivity</a></div><div class=\"ttdeci\">void SetAxisSensitivity(KeyboardAxis key, float value)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:295</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_abdd66ea8df097a0c2b314b87850cef35\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#abdd66ea8df097a0c2b314b87850cef35\">tram::UI::SetInputState</a></div><div class=\"ttdeci\">void SetInputState(InputState state)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:239</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_ac636614381ad3dbc2f776a81b079d7aa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#ac636614381ad3dbc2f776a81b079d7aa\">tram::UI::KeyCode</a></div><div class=\"ttdeci\">void KeyCode(uint16_t code)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:323</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aca1f573178e278ecf636cbe954aa6487\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aca1f573178e278ecf636cbe954aa6487\">tram::UI::ScreenClose</a></div><div class=\"ttdeci\">void ScreenClose()</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:352</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9\">tram::UI::KeyboardKey</a></div><div class=\"ttdeci\">KeyboardKey</div><div class=\"ttdef\"><b>Definition:</b> ui.h:10</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a004d71e440f811db5a803f58a96b0ef7\">tram::UI::KEY_LEFT_SUPER</a></div><div class=\"ttdeci\">@ KEY_LEFT_SUPER</div><div class=\"ttdef\"><b>Definition:</b> ui.h:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a04a43fccb3b5f46fd89d69eb768b00b6\">tram::UI::KEY_F14</a></div><div class=\"ttdeci\">@ KEY_F14</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a079997c8c91cd20d3ebadc87cf6d1f91\">tram::UI::KEY_SPACE</a></div><div class=\"ttdeci\">@ KEY_SPACE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a08b565df6cf04d6dd3340510fdeeda5c\">tram::UI::KEY_BACKSPACE</a></div><div class=\"ttdeci\">@ KEY_BACKSPACE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a09d550ac685c22bb4d5300f1b561d584\">tram::UI::KEY_5</a></div><div class=\"ttdeci\">@ KEY_5</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0ec59343c2a98d537ff7805715136bf5\">tram::UI::KEY_KP_6</a></div><div class=\"ttdeci\">@ KEY_KP_6</div><div class=\"ttdef\"><b>Definition:</b> ui.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a0fd671dc791741b42da6eabebe4ca390\">tram::UI::KEY_6</a></div><div class=\"ttdeci\">@ KEY_6</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a100b49a46873faed9c936065fa8ec083\">tram::UI::KEY_F8</a></div><div class=\"ttdeci\">@ KEY_F8</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a10d0bf239c52e0e5f6579b672d179a96\">tram::UI::KEY_RIGHT_SUPER</a></div><div class=\"ttdeci\">@ KEY_RIGHT_SUPER</div><div class=\"ttdef\"><b>Definition:</b> ui.h:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a11320158e4c6b1ee2eaa85de773478be\">tram::UI::KEY_KP_0</a></div><div class=\"ttdeci\">@ KEY_KP_0</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a121d6705933ca4b329538569b386ef35\">tram::UI::KEY_LEFT_CONTROL</a></div><div class=\"ttdeci\">@ KEY_LEFT_CONTROL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1364c846ab1fb1bd231e0a33ab840695\">tram::UI::KEY_P</a></div><div class=\"ttdeci\">@ KEY_P</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1589d6ef189b4ac3fa79a86f5c54154f\">tram::UI::KEY_DELETE</a></div><div class=\"ttdeci\">@ KEY_DELETE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1663093048d8896ab8430aed03ffa4e8\">tram::UI::KEY_WORLD_2</a></div><div class=\"ttdeci\">@ KEY_WORLD_2</div><div class=\"ttdef\"><b>Definition:</b> ui.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a177ac49be216ce7a254abc7fbfd7d4e5\">tram::UI::KEY_KP_MULTIPLY</a></div><div class=\"ttdeci\">@ KEY_KP_MULTIPLY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a18661a0216c2a833e439d7f58dd08172\">tram::UI::KEY_KP_4</a></div><div class=\"ttdeci\">@ KEY_KP_4</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a1d420499e5a93232a3f3fcf83729add6\">tram::UI::KEY_LEFT</a></div><div class=\"ttdeci\">@ KEY_LEFT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a209ff909ac90cf0283d967f79cc2f910\">tram::UI::KEY_F19</a></div><div class=\"ttdeci\">@ KEY_F19</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a21c8bed6edc424845ca57b0cd546b498\">tram::UI::KEY_KP_5</a></div><div class=\"ttdeci\">@ KEY_KP_5</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a220bd95fc6428bff9fb31368839b5ae6\">tram::UI::KEY_Q</a></div><div class=\"ttdeci\">@ KEY_Q</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a241aec56571dc4ecf29a15c780253f34\">tram::UI::KEY_LEFT_ALT</a></div><div class=\"ttdeci\">@ KEY_LEFT_ALT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2443c38294500dcbd81b37a6da743787\">tram::UI::KEY_I</a></div><div class=\"ttdeci\">@ KEY_I</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2450cca859342b1b0232eb713bd62783\">tram::UI::KEY_F13</a></div><div class=\"ttdeci\">@ KEY_F13</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2a746cdb3b9ec58cd66095bb4a3aceac\">tram::UI::KEY_PAGE_DOWN</a></div><div class=\"ttdeci\">@ KEY_PAGE_DOWN</div><div class=\"ttdef\"><b>Definition:</b> ui.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2b1e11784d8c56555f3bb53270aea92c\">tram::UI::KEY_KP_3</a></div><div class=\"ttdeci\">@ KEY_KP_3</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a2d056aa6db1428d01d3b23b397ed40c2\">tram::UI::KEY_F9</a></div><div class=\"ttdeci\">@ KEY_F9</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3243162f0d4f7b54b99186f52716b0ab\">tram::UI::KEY_K</a></div><div class=\"ttdeci\">@ KEY_K</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a372fbac101c73e052a6d80c79db7541d\">tram::UI::KEY_F4</a></div><div class=\"ttdeci\">@ KEY_F4</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a39bc230491a0f214530797586b693d72\">tram::UI::KEY_V</a></div><div class=\"ttdeci\">@ KEY_V</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a3c49139f417b568a3db68492f84de02d\">tram::UI::KEY_KP_1</a></div><div class=\"ttdeci\">@ KEY_KP_1</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a40b9ce26532098fabe2d4024735ffded\">tram::UI::KEY_KP_2</a></div><div class=\"ttdeci\">@ KEY_KP_2</div><div class=\"ttdef\"><b>Definition:</b> ui.h:45</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a459511af96035124f096b16dafeb5862\">tram::UI::KEY_KP_DECIMAL</a></div><div class=\"ttdeci\">@ KEY_KP_DECIMAL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a49be5538de01fda8d9f1c01a38559ddc\">tram::UI::KEY_HOME</a></div><div class=\"ttdeci\">@ KEY_HOME</div><div class=\"ttdef\"><b>Definition:</b> ui.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4a02c40bbf639ad789c13c578f989dea\">tram::UI::KEY_E</a></div><div class=\"ttdeci\">@ KEY_E</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d2455d4d22bcf88b705d9bf758dcc95\">tram::UI::KEY_END</a></div><div class=\"ttdeci\">@ KEY_END</div><div class=\"ttdef\"><b>Definition:</b> ui.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4d49655cb7a568a34431639694d3d665\">tram::UI::KEY_KP_ENTER</a></div><div class=\"ttdeci\">@ KEY_KP_ENTER</div><div class=\"ttdef\"><b>Definition:</b> ui.h:50</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a4f3eab8d07ff29a6fcd7ddb560469bbc\">tram::UI::KEY_L</a></div><div class=\"ttdeci\">@ KEY_L</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a504213d8c07892e5474b10a27eba806d\">tram::UI::KEY_M</a></div><div class=\"ttdeci\">@ KEY_M</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a50ada7aae92f4fcb249e20f3227ca1b7\">tram::UI::KEY_DOWN</a></div><div class=\"ttdeci\">@ KEY_DOWN</div><div class=\"ttdef\"><b>Definition:</b> ui.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a52c0f592224c6fc6e05d3d6423a96cfb\">tram::UI::KEY_F18</a></div><div class=\"ttdeci\">@ KEY_F18</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5587286e8256cdd129cd715e129f41fd\">tram::UI::KEY_KP_SUBTRACT</a></div><div class=\"ttdeci\">@ KEY_KP_SUBTRACT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a562a379580554859b14364ea2bdcc71e\">tram::UI::KEY_9</a></div><div class=\"ttdeci\">@ KEY_9</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a57e21efd8cdb16815ddb8b3d522fd8e2\">tram::UI::KEY_Z</a></div><div class=\"ttdeci\">@ KEY_Z</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a5839ff3c35479538c66a126a95a1ea7a\">tram::UI::KEY_F5</a></div><div class=\"ttdeci\">@ KEY_F5</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6101d82366a7de86f4dc96e14a965479\">tram::UI::KEY_RIGHTMOUSE</a></div><div class=\"ttdeci\">@ KEY_RIGHTMOUSE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:60</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a61169512aa6359e9a471477823f463fc\">tram::UI::KEY_F2</a></div><div class=\"ttdeci\">@ KEY_F2</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a647dc8d7292b79a396b74fb76b654e01\">tram::UI::KEY_O</a></div><div class=\"ttdeci\">@ KEY_O</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a65437d90c5caa67d4724f54553508e9e\">tram::UI::KEY_0</a></div><div class=\"ttdeci\">@ KEY_0</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6941d464b7ba2e0185eba26cd1a60e12\">tram::UI::KEY_PRINT_SCREEN</a></div><div class=\"ttdeci\">@ KEY_PRINT_SCREEN</div><div class=\"ttdef\"><b>Definition:</b> ui.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a6975cca52ea36c81c0d056f00506205c\">tram::UI::KEY_LEFT_SHIFT</a></div><div class=\"ttdeci\">@ KEY_LEFT_SHIFT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:53</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69969530a5d1d24554b12a6ac17aad20\">tram::UI::KEY_G</a></div><div class=\"ttdeci\">@ KEY_G</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a69b752301befc5f3a4d907be6f7629b9\">tram::UI::KEY_A</a></div><div class=\"ttdeci\">@ KEY_A</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a71212b3b964bc010cbe1e28c0ebe98a6\">tram::UI::KEY_RIGHT_SHIFT</a></div><div class=\"ttdeci\">@ KEY_RIGHT_SHIFT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7604f42d8b8bcf46bc692a7abb6417a4\">tram::UI::KEY_S</a></div><div class=\"ttdeci\">@ KEY_S</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76401413bb93ff3e71adddc5d6b4ea3d\">tram::UI::KEY_ENTER</a></div><div class=\"ttdeci\">@ KEY_ENTER</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a76bf98cee4a061d34598d858be264cd3\">tram::UI::KEY_COMMA</a></div><div class=\"ttdeci\">@ KEY_COMMA</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a78cf64e98df9ca5559f27d97c3e9d6b3\">tram::UI::KEY_MINUS</a></div><div class=\"ttdeci\">@ KEY_MINUS</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a79f3423e223d68ae943c5254a429f523\">tram::UI::KEY_F6</a></div><div class=\"ttdeci\">@ KEY_F6</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7c8104f6c5d08d99e2b8a126f883bddf\">tram::UI::KEY_APOSTROPHE</a></div><div class=\"ttdeci\">@ KEY_APOSTROPHE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a7f249c51c85b70d88b3111981395fc12\">tram::UI::KEY_SEMICOLON</a></div><div class=\"ttdeci\">@ KEY_SEMICOLON</div><div class=\"ttdef\"><b>Definition:</b> ui.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a827aa5629b54051ef62be5b653d42901\">tram::UI::KEY_KP_8</a></div><div class=\"ttdeci\">@ KEY_KP_8</div><div class=\"ttdef\"><b>Definition:</b> ui.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a84a9c489b8f14cca0868c37d657ab1da\">tram::UI::KEY_7</a></div><div class=\"ttdeci\">@ KEY_7</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a879c1fe86636b4cd2f421dd769972f49\">tram::UI::KEY_KP_DIVIDE</a></div><div class=\"ttdeci\">@ KEY_KP_DIVIDE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8839d85d99e2a494b68890ed9da64daa\">tram::UI::KEY_F17</a></div><div class=\"ttdeci\">@ KEY_F17</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a883bff2a025e52694148f0c2e426cf03\">tram::UI::KEY_F11</a></div><div class=\"ttdeci\">@ KEY_F11</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a88c3bed03d9746ee5d29791785c2f70b\">tram::UI::KEY_KP_ADD</a></div><div class=\"ttdeci\">@ KEY_KP_ADD</div><div class=\"ttdef\"><b>Definition:</b> ui.h:49</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a896d3cc0f76a3ebc14dc960265e73462\">tram::UI::KEY_NUM_LOCK</a></div><div class=\"ttdeci\">@ KEY_NUM_LOCK</div><div class=\"ttdef\"><b>Definition:</b> ui.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a89dc956618bf640b45ee4a294ebdf306\">tram::UI::KEY_WORLD_1</a></div><div class=\"ttdeci\">@ KEY_WORLD_1</div><div class=\"ttdef\"><b>Definition:</b> ui.h:28</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a8c33c781cca98efefda19291cbe7fbd7\">tram::UI::KEY_F22</a></div><div class=\"ttdeci\">@ KEY_F22</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a90604854aaf219402dcd8dcef0e0e90d\">tram::UI::KEY_SLASH</a></div><div class=\"ttdeci\">@ KEY_SLASH</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9137d1e85435e1ffdd1ae5dfb60642ce\">tram::UI::KEY_TAB</a></div><div class=\"ttdeci\">@ KEY_TAB</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a94b3a8e7447c1a4dc8f9c1df8f100c25\">tram::UI::KEY_N</a></div><div class=\"ttdeci\">@ KEY_N</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99563910c4089bb0757836e3e4b8ad03\">tram::UI::KEY_F20</a></div><div class=\"ttdeci\">@ KEY_F20</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a99bddd837fe2be48872a0ca77265a02c\">tram::UI::KEY_F23</a></div><div class=\"ttdeci\">@ KEY_F23</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9a2534085f6831bba64642f48e16541c\">tram::UI::KEY_X</a></div><div class=\"ttdeci\">@ KEY_X</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9cb458069447eafb5d86658176b8032e\">tram::UI::KEY_PAGE_UP</a></div><div class=\"ttdeci\">@ KEY_PAGE_UP</div><div class=\"ttdef\"><b>Definition:</b> ui.h:37</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9a9ecaf975717fee1e6ef34eaeb89790bd\">tram::UI::KEY_F12</a></div><div class=\"ttdeci\">@ KEY_F12</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa072fdfab871f337f8fc0da6acae7508\">tram::UI::KEY_INSERT</a></div><div class=\"ttdeci\">@ KEY_INSERT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa205961286cd337ec06902909fb154e6\">tram::UI::KEY_RIGHT</a></div><div class=\"ttdeci\">@ KEY_RIGHT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa816822358691cbc4a3357d21699d40e\">tram::UI::KEY_LEFTMOUSE</a></div><div class=\"ttdeci\">@ KEY_LEFTMOUSE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:61</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa953f283270f27bd5fe8222f587ead41\">tram::UI::KEY_2</a></div><div class=\"ttdeci\">@ KEY_2</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aa9b00c9fc9bbf4eb7f217174c80ca004\">tram::UI::KEY_8</a></div><div class=\"ttdeci\">@ KEY_8</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aab815d03fe3a3bceae097559b6621736\">tram::UI::KEY_4</a></div><div class=\"ttdeci\">@ KEY_4</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aabc4c90cb2b3e6b0489e9a0d244daffd\">tram::UI::KEY_F24</a></div><div class=\"ttdeci\">@ KEY_F24</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aadcd3b27239865a98778acc1671fbbad\">tram::UI::KEY_KP_EQUAL</a></div><div class=\"ttdeci\">@ KEY_KP_EQUAL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:50</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aaee26a121b3a7ecc334e0767f00a70d7\">tram::UI::KEY_B</a></div><div class=\"ttdeci\">@ KEY_B</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab6ce6bc7d35678baf784ad6408dc5163\">tram::UI::KEY_SCROLL_LOCK</a></div><div class=\"ttdeci\">@ KEY_SCROLL_LOCK</div><div class=\"ttdef\"><b>Definition:</b> ui.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ab914308d1d5c183beee4b1e5de50bd66\">tram::UI::KEY_J</a></div><div class=\"ttdeci\">@ KEY_J</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abb510afb8b9257bfc55dc903a8962819\">tram::UI::KEY_F16</a></div><div class=\"ttdeci\">@ KEY_F16</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd3eb119fd58b73594acea4545d8eb49\">tram::UI::KEY_ESCAPE</a></div><div class=\"ttdeci\">@ KEY_ESCAPE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:31</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abd5cfd042feed366f2014670fb7575c0\">tram::UI::KEY_F25</a></div><div class=\"ttdeci\">@ KEY_F25</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9abe5aae21c145c2c6f5d0997b4bb72513\">tram::UI::KEY_UP</a></div><div class=\"ttdeci\">@ KEY_UP</div><div class=\"ttdef\"><b>Definition:</b> ui.h:34</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac053172e8885ba9a6cc0dcce61be6825\">tram::UI::KEY_MENU</a></div><div class=\"ttdeci\">@ KEY_MENU</div><div class=\"ttdef\"><b>Definition:</b> ui.h:57</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac16d2495f2e0ad5db18868ffecd016ed\">tram::UI::KEY_GRAVE_ACCENT</a></div><div class=\"ttdeci\">@ KEY_GRAVE_ACCENT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac205aca8c92ea3e8bcfcb455cde81410\">tram::UI::KEY_F21</a></div><div class=\"ttdeci\">@ KEY_F21</div><div class=\"ttdef\"><b>Definition:</b> ui.h:44</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac3318863e23da41cdb1211b4998c4f5b\">tram::UI::KEY_F3</a></div><div class=\"ttdeci\">@ KEY_F3</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac5295758df806be9a4f5eb9057c253c0\">tram::UI::KEY_PERIOD</a></div><div class=\"ttdeci\">@ KEY_PERIOD</div><div class=\"ttdef\"><b>Definition:</b> ui.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ac98369b8a3b7464424f590a189d7f16b\">tram::UI::KEY_Y</a></div><div class=\"ttdeci\">@ KEY_Y</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aca57442c7bcab260391fb5f29ee3c6c3\">tram::UI::KEY_F</a></div><div class=\"ttdeci\">@ KEY_F</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acd1ed18883f019a4fbf609580215e283\">tram::UI::KEY_D</a></div><div class=\"ttdeci\">@ KEY_D</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aceda48a96fdeb639c66c87d1fa235b37\">tram::UI::KEY_3</a></div><div class=\"ttdeci\">@ KEY_3</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9acf6224b6422ea249b4a3b235aba12b30\">tram::UI::KEY_BACKSLASH</a></div><div class=\"ttdeci\">@ KEY_BACKSLASH</div><div class=\"ttdef\"><b>Definition:</b> ui.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad00c2f86ceadf9093d621f0020cc8111\">tram::UI::KEY_C</a></div><div class=\"ttdeci\">@ KEY_C</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad12c03040aff876f71d0536260626849\">tram::UI::KEY_LEFT_BRACKET</a></div><div class=\"ttdeci\">@ KEY_LEFT_BRACKET</div><div class=\"ttdef\"><b>Definition:</b> ui.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad1642afcc58232b9e6f12f6f3cc208fc\">tram::UI::KEY_R</a></div><div class=\"ttdeci\">@ KEY_R</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad4c7822edd979f8bdedd5e6163f56aa6\">tram::UI::KEY_T</a></div><div class=\"ttdeci\">@ KEY_T</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad534a3e46746e91991157a05eb7d3cb8\">tram::UI::KEY_U</a></div><div class=\"ttdeci\">@ KEY_U</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ad8c6f95a09ee0612aaf90926fa8efc1a\">tram::UI::KEY_KP_7</a></div><div class=\"ttdeci\">@ KEY_KP_7</div><div class=\"ttdef\"><b>Definition:</b> ui.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adab858cfb830bf92e4aeda721befd126\">tram::UI::KEY_F1</a></div><div class=\"ttdeci\">@ KEY_F1</div><div class=\"ttdef\"><b>Definition:</b> ui.h:41</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9adae0bf1fb06302b73ddb8ceba5df75d3\">tram::UI::KEY_CAPS_LOCK</a></div><div class=\"ttdeci\">@ KEY_CAPS_LOCK</div><div class=\"ttdef\"><b>Definition:</b> ui.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae144b84145992ccde121f27d42c7cfc4\">tram::UI::KEY_F7</a></div><div class=\"ttdeci\">@ KEY_F7</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae1d3cc6b1216baf0546b60321178cccc\">tram::UI::KEY_RIGHT_BRACKET</a></div><div class=\"ttdeci\">@ KEY_RIGHT_BRACKET</div><div class=\"ttdef\"><b>Definition:</b> ui.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae2d4522e9402af36973ee244c1ea8959\">tram::UI::KEY_KP_9</a></div><div class=\"ttdeci\">@ KEY_KP_9</div><div class=\"ttdef\"><b>Definition:</b> ui.h:46</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3a336ff48b187617d8637dd2718e7ae\">tram::UI::KEY_1</a></div><div class=\"ttdeci\">@ KEY_1</div><div class=\"ttdef\"><b>Definition:</b> ui.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae3ab9bd431f46c16051fa07c0bc90bcd\">tram::UI::KEY_EQUAL</a></div><div class=\"ttdeci\">@ KEY_EQUAL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae55ea7c6af938ac5867bf7d2e17b4321\">tram::UI::KEY_RIGHT_CONTROL</a></div><div class=\"ttdeci\">@ KEY_RIGHT_CONTROL</div><div class=\"ttdef\"><b>Definition:</b> ui.h:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae69389e08b08925a36b9cdd07aee0f36\">tram::UI::KEY_F15</a></div><div class=\"ttdeci\">@ KEY_F15</div><div class=\"ttdef\"><b>Definition:</b> ui.h:43</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9ae8ccc2a44e4bbe61742a3e1aa1d5f808\">tram::UI::KEY_H</a></div><div class=\"ttdeci\">@ KEY_H</div><div class=\"ttdef\"><b>Definition:</b> ui.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9aef93744dfaee588745f651c77f24cf50\">tram::UI::KEY_PAUSE</a></div><div class=\"ttdeci\">@ KEY_PAUSE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:38</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af03983e7a15a27c5ea4b5eeea851132a\">tram::UI::KEY_W</a></div><div class=\"ttdeci\">@ KEY_W</div><div class=\"ttdef\"><b>Definition:</b> ui.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af34f41b344dc079076521012c729a450\">tram::UI::KEY_LASTKEY</a></div><div class=\"ttdeci\">@ KEY_LASTKEY</div><div class=\"ttdef\"><b>Definition:</b> ui.h:64</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9af837c69d666b76476c0df2d1b787f9de\">tram::UI::KEY_MIDDLEMOUSE</a></div><div class=\"ttdeci\">@ KEY_MIDDLEMOUSE</div><div class=\"ttdef\"><b>Definition:</b> ui.h:62</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afaf27e7af0aee992b05d18764258ff16\">tram::UI::KEY_RIGHT_ALT</a></div><div class=\"ttdeci\">@ KEY_RIGHT_ALT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:54</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf6b27efa4c062d8c7110a6fb9f9fde9afeea4fcee657263b7309bb3df45cba78\">tram::UI::KEY_F10</a></div><div class=\"ttdeci\">@ KEY_F10</div><div class=\"ttdef\"><b>Definition:</b> ui.h:42</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_acf999f961120350df3549cff1d0c9b0c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#acf999f961120350df3549cff1d0c9b0c\">tram::UI::CAMERA_SPEED</a></div><div class=\"ttdeci\">const float CAMERA_SPEED</div><div class=\"ttdef\"><b>Definition:</b> ui.h:111</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_ad23f479a3671059a175ec92cc496018d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#ad23f479a3671059a175ec92cc496018d\">tram::UI::KeyPress</a></div><div class=\"ttdeci\">void KeyPress(KeyboardKey key)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:299</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aecde138c9de471bd9ef945d534669832\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aecde138c9de471bd9ef945d534669832\">tram::UI::GetKeyboardActionName</a></div><div class=\"ttdeci\">name_t GetKeyboardActionName(keyboardaction_t type)</div><div class=\"ttdef\"><b>Definition:</b> ui.cpp:420</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aef\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aef\">tram::UI::InputState</a></div><div class=\"ttdeci\">InputState</div><div class=\"ttdef\"><b>Definition:</b> ui.h:74</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa0ba9af9131cd70f1cd88e11a2f0ddfd9\">tram::UI::STATE_NO_INPUT</a></div><div class=\"ttdeci\">@ STATE_NO_INPUT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:76</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa12b82658eb8500babd0132e1ef48d60c\">tram::UI::STATE_CURSOR</a></div><div class=\"ttdeci\">@ STATE_CURSOR</div><div class=\"ttdef\"><b>Definition:</b> ui.h:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefa27b3b1ef62f6dbd05179b47d610ddda6\">tram::UI::STATE_FLYING</a></div><div class=\"ttdeci\">@ STATE_FLYING</div><div class=\"ttdef\"><b>Definition:</b> ui.h:77</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefac85efc9d2a4eb7e1cc2262d7dff47a2d\">tram::UI::STATE_DEFAULT</a></div><div class=\"ttdeci\">@ STATE_DEFAULT</div><div class=\"ttdef\"><b>Definition:</b> ui.h:75</div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_u_i_html_aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\"><div class=\"ttname\"><a href=\"namespacetram_1_1_u_i.html#aef59b5ccd9382ca4fdd1f951a9b68aefadb34ad1fcde66543097a2bf401fa4a12\">tram::UI::STATE_MENU_OPEN</a></div><div class=\"ttdeci\">@ STATE_MENU_OPEN</div><div class=\"ttdef\"><b>Definition:</b> ui.h:78</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/uid_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/uid.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">uid.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"stackpool_8h_source.html\">templates/stackpool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;murmur.h&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/uid_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/uid.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">uid.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;string&gt;</code><br />\n</div>\n<p><a href=\"uid_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_u_i_d.html\">tram::UID</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Interned string type.  <a href=\"structtram_1_1_u_i_d.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:ad77b577436f476438699a1c4da9d549c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef UID&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></td></tr>\n<tr class=\"separator:ad77b577436f476438699a1c4da9d549c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/uid_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/uid.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">uid.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"uid_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_UID_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_UID_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html\">   10</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">   11</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a>() {}</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82\">   12</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82\">UID</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp; value) { *<span class=\"keyword\">this</span> = value; }</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">   13</a></span>    <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">~UID</a>() {}</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span>    </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span>    <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a>(<span class=\"keyword\">const</span> std::string&amp; value);</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* value);</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">   18</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp; <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">operator=</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp; value) {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span>        <a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a> = value.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>;</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span>        <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span>    }</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">   23</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">operator==</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp; other)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a> == other.<a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>;</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span>    }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>    </div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587\">   27</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587\">operator==</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* other)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a> == <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">UID</a>(other).key;</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span>    </div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a711568eafe8684f867cadc960073424d\">   31</a></span>    <span class=\"keyword\">explicit</span> <span class=\"keyword\">operator</span> bool() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a>; }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keyword\">operator</span> std::string() <span class=\"keyword\">const</span>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keyword\">operator</span> <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span>*() <span class=\"keyword\">const</span>;</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>    </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">no_quote</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">is_empty</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*);</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">is_valid</a>(<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a>&amp;);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    </div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">   40</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">key</a> = 0;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">   43</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">UID</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>;</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>}</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_UID_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a0a5dbb6d93d93b65abf71ae5d84d4823\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a0a5dbb6d93d93b65abf71ae5d84d4823\">tram::UID::operator==</a></div><div class=\"ttdeci\">bool operator==(const UID &amp;other) const</div><div class=\"ttdef\"><b>Definition:</b> uid.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a1b9ca41783891921e10ab8eea617db47\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a1b9ca41783891921e10ab8eea617db47\">tram::UID::no_quote</a></div><div class=\"ttdeci\">static bool no_quote(const char *)</div><div class=\"ttdoc\">Checks whether the name will need quotes.</div><div class=\"ttdef\"><b>Definition:</b> uid.cpp:131</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a1c632137cc995abd646d872429f059a0\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a1c632137cc995abd646d872429f059a0\">tram::UID::is_empty</a></div><div class=\"ttdeci\">static bool is_empty(const char *)</div><div class=\"ttdoc\">Checks whether a string consists of only whitespace.</div><div class=\"ttdef\"><b>Definition:</b> uid.cpp:144</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a1dbeaf14b2261159f5a2569fc5289587\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a1dbeaf14b2261159f5a2569fc5289587\">tram::UID::operator==</a></div><div class=\"ttdeci\">bool operator==(const char *other) const</div><div class=\"ttdef\"><b>Definition:</b> uid.h:27</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a43f5c1a2523a9ed0ea40b42b730ab835\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a43f5c1a2523a9ed0ea40b42b730ab835\">tram::UID::~UID</a></div><div class=\"ttdeci\">~UID()</div><div class=\"ttdef\"><b>Definition:</b> uid.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a5d4fdf9f636c6e28fefbb716b0c1ad82\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a5d4fdf9f636c6e28fefbb716b0c1ad82\">tram::UID::UID</a></div><div class=\"ttdeci\">UID(const UID &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> uid.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a819c4f8b86a7fb91519937f2cf8e4449\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a819c4f8b86a7fb91519937f2cf8e4449\">tram::UID::is_valid</a></div><div class=\"ttdeci\">static bool is_valid(const UID &amp;)</div><div class=\"ttdoc\">Checks whether the name is valid.</div><div class=\"ttdef\"><b>Definition:</b> uid.cpp:121</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_a9d2e43bf7b4f21af160251d969e37af8\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#a9d2e43bf7b4f21af160251d969e37af8\">tram::UID::key</a></div><div class=\"ttdeci\">uint32_t key</div><div class=\"ttdef\"><b>Definition:</b> uid.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_aab45feed090c6e1b82756eb8a47c8c2e\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#aab45feed090c6e1b82756eb8a47c8c2e\">tram::UID::UID</a></div><div class=\"ttdeci\">UID()</div><div class=\"ttdef\"><b>Definition:</b> uid.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html_ae2a5ed9b778bcc983f12591981d2802e\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html#ae2a5ed9b778bcc983f12591981d2802e\">tram::UID::operator=</a></div><div class=\"ttdeci\">UID &amp; operator=(const UID &amp;value)</div><div class=\"ttdef\"><b>Definition:</b> uid.h:18</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/utils_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/platform/utils.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_0235421c6a8b7ca6f3b3ad3f290c4a8b.html\">platform</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">utils.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/value_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/value.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a> &#124;\n<a href=\"#typedef-members\">Typedefs</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">value.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;cassert&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"type_8h_source.html\">framework/type.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n</div>\n<p><a href=\"value_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value.html\">tram::Value</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic, type-safe union.  <a href=\"classtram_1_1_value.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\nTypedefs</h2></td></tr>\n<tr class=\"memitem:a9a399a2754b52b60de20e936546d0637\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef ValueArray&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></td></tr>\n<tr class=\"separator:a9a399a2754b52b60de20e936546d0637\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/value_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/value.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">value.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"value_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_VALUE_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_VALUE_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"type_8h.html\">framework/type.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"logging_8h.html\">framework/logging.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span> </div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span><span class=\"keyword\">class </span>ValuePtr;</div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\">   16</span>    </div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html\">   18</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a> {</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">   20</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">Value</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>({0, 0, 0, 0}) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>; }</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">   21</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">~Value</a>() {}</div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span>    </div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60\">   23</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60\">Value</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; other) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>(other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>) <span class=\"comment\">/* hehe */</span> { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>; }</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span>    </div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">   25</a></span>    <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">operator=</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; other) {</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a> = other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>;</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>        <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>; <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span>    }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span>    </div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">   30</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">operator==</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; other)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span>        <span class=\"keywordflow\">switch</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) {</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>:</div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a>;</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:</div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>                <span class=\"keywordflow\">if</span> (!other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a>() &amp;&amp; !other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a>()) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">GetInt</a>() == other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">GetInt</a>();</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:</div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>                <span class=\"keywordflow\">if</span> (!other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a>() &amp;&amp; !other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a>()) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">GetFloat</a>() == other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">GetFloat</a>();</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>:</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>;</div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>:</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>                <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"comment\">// TODO: fix this</span></div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>:</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>;</div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>:</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>;</div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>:</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>:</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                <span class=\"keywordflow\">if</span> (other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>() != <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>; <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a> == other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>            <span class=\"keywordflow\">default</span>: <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        }</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    </div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305\">   55</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305\">Value</a>(<span class=\"keywordtype\">bool</span> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>; }</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e\">   56</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e\">Value</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>; }</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055\">   57</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055\">Value</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>; }</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    </div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585\">   59</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585\">Value</a>(int8_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>; }</div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5\">   60</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5\">Value</a>(int16_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>; }</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a831372ec4d00555168651da5fd654641\">   61</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a831372ec4d00555168651da5fd654641\">Value</a>(int64_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>; }</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    </div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275\">   63</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275\">Value</a>(uint8_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb\">   64</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb\">Value</a>(uint16_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b\">   65</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b\">Value</a>(uint64_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    </div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e\">   67</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e\">Value</a>(<span class=\"keywordtype\">double</span> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>; }</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    </div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427\">   69</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427\">Value</a>(int32_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>; }</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8\">   71</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8\">Value</a>(uint32_t value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893\">   73</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893\">Value</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>; }</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">   74</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">Value</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>; }</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d\">   75</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d\">Value</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>; }</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    </div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716\">   77</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716\">Value</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>; }</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94\">   79</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94\">Value</a>(<span class=\"keywordtype\">float</span> value) : <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>(value) { <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>; }</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a9e4adfed646e5615bba90d78396a1520\">   81</a></span>    <span class=\"keyword\">operator</span> bool()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a>; }</div>\n<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    </div>\n<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#add6cf0d6e6e2830cf8caf35509735ff9\">   83</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>()<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>) {</div>\n<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>            <span class=\"keywordflow\">return</span> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>)<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>;</div>\n<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        }</div>\n<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        </div>\n<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>);</div>\n<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        </div>\n<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>;</div>\n<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    }</div>\n<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a15856860b73c5d576801dae6f4715dfe\">   92</a></span>    <span class=\"keyword\">operator</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*() <span class=\"keyword\">const</span> {</div>\n<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>) {</div>\n<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>;</div>\n<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        }</div>\n<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        </div>\n<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>);</div>\n<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        </div>\n<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>;</div>\n<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    }</div>\n<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    </div>\n<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#aa919d5718da818826402272ff33bf164\">  103</a></span>    <span class=\"keyword\">operator</span> int8_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (int32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#aa1b1ea0a628e85c8dcc81b7764d0aa6f\">  104</a></span>    <span class=\"keyword\">operator</span> int16_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (int32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a39d40edb670c7aecc861261018a57d85\">  105</a></span>    <span class=\"keyword\">operator</span> int64_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (int32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    </div>\n<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a2c5a0317d82668f998a66d8761569987\">  107</a></span>    <span class=\"keyword\">operator</span> uint8_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (uint32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#aa28db4afe53e6e7d8c28996b9e3fb748\">  108</a></span>    <span class=\"keyword\">operator</span> uint16_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (uint32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a9ae9787d652066d81e5c5c8cd2bb0577\">  109</a></span>    <span class=\"keyword\">operator</span> uint64_t()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (uint32_t)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    </div>\n<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a9639ed16d4cb470358687dc976993470\">  111</a></span>    <span class=\"keyword\">operator</span> double()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">float</span>)*<span class=\"keyword\">this</span>; }</div>\n<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    </div>\n<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ae53ccc02b30523aa2709b44dc43fda69\">  113</a></span>    <span class=\"keyword\">operator</span> int32_t()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>; }</div>\n<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    <span class=\"comment\">//operator uint16_t() const { if (type != TYPE_UINT16) {__asm__ volatile(&quot;int $0x03&quot;);} /*assert(type == TYPE_UINT16);*/ return uint16_value; }</span></div>\n<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a784abb3dd60f5c793651f1aa1d837154\">  116</a></span>    <span class=\"keyword\">operator</span> uint32_t()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>; }</div>\n<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    </div>\n<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a1175f90f2eab9d3d316914b1ee84aeb0\">  118</a></span>    <span class=\"keyword\">operator</span> float()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>; } </div>\n<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    </div>\n<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#acddba52345b86f24d2cb810b99774175\">  120</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>; }</div>\n<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ad1db6f75ec7be66818e032e2c0115d45\">  121</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>; }</div>\n<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ada6847b5e4ee399009ffbffe1cc57189\">  122</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>; }</div>\n<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    </div>\n<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a7794e38049e0b66a7cc567dd119b46c2\">  124</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>()<span class=\"keyword\"> const </span>{ <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>; }</div>\n<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    </div>\n<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    </div>\n<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    </div>\n<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">  128</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">IsBool</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>; }</div>\n<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">  129</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">IsInt</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a> || <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">  130</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">IsFloat</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>; }</div>\n<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">  131</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">IsName</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>; }</div>\n<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">  132</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">IsString</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>; }</div>\n<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">  133</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">IsVec2</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>; }</div>\n<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">  134</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">IsVec3</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>; }</div>\n<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">  135</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">IsVec4</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>; }</div>\n<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">  136</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">IsQuat</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a> == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>; }</div>\n<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    </div>\n<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">  138</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">GetInt</a>()<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"keywordflow\">switch</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) {</div>\n<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>;</div>\n<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:   <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>;</div>\n<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:  <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>;</div>\n<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>            <span class=\"keywordflow\">default</span>: <span class=\"keywordflow\">return</span> 0;</div>\n<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        }</div>\n<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    }</div>\n<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    </div>\n<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">  147</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">GetFloat</a>()<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        <span class=\"keywordflow\">switch</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) {</div>\n<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>;</div>\n<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:   <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>;</div>\n<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:  <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>;</div>\n<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>            <span class=\"keywordflow\">default</span>: <span class=\"keywordflow\">return</span> 0;</div>\n<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        }</div>\n<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    }</div>\n<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    </div>\n<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">  156</a></span>    <span class=\"keyword\">inline</span> std::string <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">ToString</a>() {</div>\n<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">switch</span> (<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) {</div>\n<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>:    <span class=\"keywordflow\">return</span> <span class=\"stringliteral\">&quot;undefined&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>:         <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a> ? <span class=\"stringliteral\">&quot;true&quot;</span> : <span class=\"stringliteral\">&quot;false&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:        <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>);</div>\n<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:       <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>);</div>\n<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:      <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>);</div>\n<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>:         <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>;</div>\n<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>:       <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>;</div>\n<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>:         <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>.x) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>.y);</div>\n<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>:         <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>.x) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>.y) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>.z);</div>\n<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>:         <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>.x) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>.y) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>.z) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>.w);</div>\n<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>:         <span class=\"keywordflow\">return</span> std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>.x) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>.y) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>.z) + <span class=\"stringliteral\">&quot;;&quot;</span> + std::to_string(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>.w);</div>\n<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>            <span class=\"keywordflow\">default</span>:                <span class=\"keywordflow\">return</span> <span class=\"stringliteral\">&quot;unknown&quot;</span>;</div>\n<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        }</div>\n<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>            </div>\n<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    }</div>\n<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    </div>\n<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">  174</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>; }</div>\n<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">  176</a></span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>;</div>\n<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    </div>\n<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">  178</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">AssertType</a>(<a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>)<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        <span class=\"keywordflow\">if</span> (this-&gt;type != <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>) {</div>\n<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>            <a class=\"code hl_function\" href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">Log</a>(<a class=\"code hl_enumvalue\" href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">Severity::CRITICAL_ERROR</a>, <a class=\"code hl_enumvalue\" href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">System::CORE</a>, <span class=\"stringliteral\">&quot;Value of type {} used in a {} context&quot;</span>, <a class=\"code hl_function\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">TypeToString</a>(this-&gt;type), <a class=\"code hl_function\" href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">TypeToString</a>(<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">type</a>));</div>\n<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>        }</div>\n<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    }</div>\n<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    </div>\n<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">  185</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a>;</div>\n<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">  186</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>;</div>\n<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">  187</a></span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>;</div>\n<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">  188</a></span>        int32_t <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>;</div>\n<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">  189</a></span>        uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>;</div>\n<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">  190</a></span>        <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>;</div>\n<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">  191</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>;</div>\n<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">  192</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>;</div>\n<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">  193</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>;</div>\n<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">  194</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a> <a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>;</div>\n<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    };</div>\n<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    </div>\n<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value.html#a32a3f364acb79fb996044d7d31bc994e\">  197</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a>;</div>\n<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>};</div>\n<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html\">  200</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a> {</div>\n<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">  202</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">ValuePtr</a>() : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a>(nullptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>; }</div>\n<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">  203</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">~ValuePtr</a>() {}</div>\n<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    </div>\n<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a\">  205</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a\">ValuePtr</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_ptr.html\">ValuePtr</a>&amp; other) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>(other.<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>) { type = other.type; }</div>\n<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    </div>\n<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6\">  207</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6\">ValuePtr</a>(<a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; other) {</div>\n<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>        type = other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>();</div>\n<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>        </div>\n<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>        <span class=\"keywordflow\">switch</span> (type) {</div>\n<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">bool_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:    <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">int32_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:   <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">uint32_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:  <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">float_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">name_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>:   <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">string_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">vec2_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">vec3_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">vec4_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>:     <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a> = &amp;other.<a class=\"code hl_variable\" href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">quat_value</a>; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>            <span class=\"keywordflow\">default</span>: assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        }</div>\n<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    }</div>\n<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    </div>\n<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a574e55635d32e94735d03e09622eccd8\">  225</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>()<span class=\"keyword\"> const </span>{</div>\n<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"keywordflow\">switch</span> (type) {</div>\n<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">TYPE_UNDEFINED</a>: <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:    <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:   <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:  <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>:   <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>:     <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>            <span class=\"keywordflow\">default</span>: assert(<span class=\"keyword\">false</span>); <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>();</div>\n<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        }</div>\n<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    }</div>\n<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    </div>\n<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">  242</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">SetValue</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; other) {</div>\n<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        assert(type == other.<a class=\"code hl_function\" href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">GetType</a>());</div>\n<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        </div>\n<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordflow\">switch</span> (type) {</div>\n<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a> = (bool)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>:    *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a> = (int32_t)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>:   *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a> = (uint32_t)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>:  *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a> = (float)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a> = (<a class=\"code hl_typedef\" href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">name_t</a>)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>:   *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a> = (<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>*)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a> = (<a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a> = (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a> = (<a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>            <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>:     *<a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a> = (<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>)other; <span class=\"keywordflow\">break</span>;</div>\n<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>            <span class=\"keywordflow\">default</span>: assert(<span class=\"keyword\">false</span>);</div>\n<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>        }</div>\n<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    }</div>\n<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    </div>\n<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b\">  260</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b\">ValuePtr</a>(<span class=\"keywordtype\">bool</span>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>; }</div>\n<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583\">  261</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583\">ValuePtr</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>; }</div>\n<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60\">  262</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60\">ValuePtr</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>** ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>; }</div>\n<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    </div>\n<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14\">  264</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14\">ValuePtr</a>(int32_t* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>; }</div>\n<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4\">  266</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4\">ValuePtr</a>(uint32_t* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4\">  268</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4\">ValuePtr</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>; }</div>\n<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f\">  269</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f\">ValuePtr</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>; }</div>\n<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3\">  270</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3\">ValuePtr</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>; }</div>\n<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    </div>\n<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e\">  272</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e\">ValuePtr</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>; }</div>\n<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span> </div>\n<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35\">  274</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35\">ValuePtr</a>(<span class=\"keywordtype\">float</span>* ptr) : <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a>(ptr) { type = <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>; }</div>\n<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#af8e50ee83fee75e420ac76981b8d06c4\">  276</a></span>    <span class=\"keyword\">operator</span> <span class=\"keywordtype\">bool</span>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a>; } </div>\n<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a4736ff47afb4c66c197c4f006b22c9c5\">  277</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">TYPE_NAME</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a77f0013cb0d9b53db31f09f4de6c2967\">  278</a></span>    <span class=\"keyword\">operator</span> <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>**() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">TYPE_STRING</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    </div>\n<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ab0a5e0c74d237cee355b29fd9da38c86\">  280</a></span>    <span class=\"keyword\">operator</span> int32_t*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#aa6b8c236803c98f1444cefa27f4898e7\">  282</a></span>    <span class=\"keyword\">operator</span> uint32_t*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    </div>\n<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#adb4fc61323ca7975037a71dce2b28d9b\">  284</a></span>    <span class=\"keyword\">operator</span> <span class=\"keywordtype\">float</span>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a>; } </div>\n<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a73f06a36dab1e2913d5151249a2e6108\">  286</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">TYPE_VEC2</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#af8d2ca7e235ca06306a250b9c8e51d45\">  287</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">TYPE_VEC3</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#aaacda1660f2ba288b538f5ec5de89063\">  288</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">TYPE_VEC4</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    </div>\n<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a4ac212df5db186a5a5f2c4e4639b07d0\">  290</a></span>    <span class=\"keyword\">operator</span> <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>*() <span class=\"keyword\">const</span> { assert(type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">TYPE_QUAT</a>); <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a>; }</div>\n<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    </div>\n<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">  292</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">IsBool</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">TYPE_BOOL</a>; }</div>\n<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">  293</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">IsInt</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">TYPE_INT32</a> || type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">TYPE_UINT32</a>; }</div>\n<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">  294</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">IsFloat</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> type == <a class=\"code hl_enumvalue\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">TYPE_FLOAT32</a>; }</div>\n<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    </div>\n<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">  296</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> <a class=\"code hl_function\" href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">GetType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> type; }</div>\n<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <a class=\"code hl_enumeration\" href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">Type</a> type;</div>\n<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    </div>\n<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keyword\">union </span>{</div>\n<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">  301</a></span>        <span class=\"keywordtype\">bool</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">bool_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">  302</a></span>        <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">name_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">  303</a></span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span>** <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">string_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">  304</a></span>        int32_t* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">int32_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">  305</a></span>        uint32_t* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">uint32_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">  306</a></span>        <span class=\"keywordtype\">float</span>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">float_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">  307</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">vec2_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">  308</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">vec3_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">  309</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">vec4_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">  310</a></span>        <a class=\"code hl_typedef\" href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">quat</a>* <a class=\"code hl_variable\" href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">quat_ptr</a>;</div>\n<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    };</div>\n<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>};</div>\n<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span> </div>\n<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_array.html\">  314</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a> {</div>\n<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">  316</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">ValueArray</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>* first, <span class=\"keywordtype\">size_t</span> count) : first_field(first), field_count(count) {}</div>\n<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">  317</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>&amp; <a class=\"code hl_function\" href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">operator []</a>(<span class=\"keywordtype\">size_t</span> n)<span class=\"keyword\"> const </span>{ assert(n &lt; field_count); <span class=\"keywordflow\">return</span> first_field[n]; }</div>\n<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">  318</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">size</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> field_count; }</div>\n<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"keyword\">private</span>:</div>\n<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"classtram_1_1_value.html\">Value</a>* first_field;</div>\n<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordtype\">size_t</span> field_count;</div>\n<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>};</div>\n<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span><span class=\"keyword\">typedef</span> Value <a class=\"code hl_typedef\" href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">value_t</a>;</div>\n<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"><a class=\"line\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">  325</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"classtram_1_1_value_array.html\">ValueArray</a> <a class=\"code hl_typedef\" href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">valuearray_t</a>;</div>\n<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>}</div>\n<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span> </div>\n<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_VALUE_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html\">tram::ValueArray</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:314</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html_ac27d29e59b70dc51bcfe4e16f7826952\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html#ac27d29e59b70dc51bcfe4e16f7826952\">tram::ValueArray::operator[]</a></div><div class=\"ttdeci\">const Value &amp; operator[](size_t n) const</div><div class=\"ttdef\"><b>Definition:</b> value.h:317</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html_ac33d43e6eeffbfaad8a4349dd56c2230\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html#ac33d43e6eeffbfaad8a4349dd56c2230\">tram::ValueArray::size</a></div><div class=\"ttdeci\">const size_t size() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:318</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_array_html_ae0c421c4cb96c4a568d54f7761324552\"><div class=\"ttname\"><a href=\"classtram_1_1_value_array.html#ae0c421c4cb96c4a568d54f7761324552\">tram::ValueArray::ValueArray</a></div><div class=\"ttdeci\">ValueArray(const Value *first, size_t count)</div><div class=\"ttdef\"><b>Definition:</b> value.h:316</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html\">tram::Value</a></div><div class=\"ttdoc\">Generic, type-safe union.</div><div class=\"ttdef\"><b>Definition:</b> value.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a0025245d17103e5061144c0914a2598c\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a0025245d17103e5061144c0914a2598c\">tram::Value::IsQuat</a></div><div class=\"ttdeci\">bool IsQuat() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:136</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a032355ea52d6ea101a88388e2a7f2714\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a032355ea52d6ea101a88388e2a7f2714\">tram::Value::int32_value</a></div><div class=\"ttdeci\">int32_t int32_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:188</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a055377410aa38120a535afb9b3cd69e3\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a055377410aa38120a535afb9b3cd69e3\">tram::Value::operator==</a></div><div class=\"ttdeci\">bool operator==(const Value &amp;other) const</div><div class=\"ttdef\"><b>Definition:</b> value.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a0ce8527b48ea24e7312b7fe8b7ba9cb8\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a0ce8527b48ea24e7312b7fe8b7ba9cb8\">tram::Value::bool_value</a></div><div class=\"ttdeci\">bool bool_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:185</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a17f14d1a9ac224f049a63fe867f93f8e\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a17f14d1a9ac224f049a63fe867f93f8e\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(double value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a21076ffaf589d2099a0ab3d3abe27bb8\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a21076ffaf589d2099a0ab3d3abe27bb8\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(uint32_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:71</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a32ac730eae3ebef2c9d4218db19f27e5\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a32ac730eae3ebef2c9d4218db19f27e5\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(int16_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:60</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a3673f59ae7ba469c1d088fffe04cc4dd\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a3673f59ae7ba469c1d088fffe04cc4dd\">tram::Value::GetInt</a></div><div class=\"ttdeci\">int GetInt() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:138</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a39d9d95afcdd16dc499d694e458fb553\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a39d9d95afcdd16dc499d694e458fb553\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(vec3 value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a3e8a6869e6364b63c6bc73e7ffb49916\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a3e8a6869e6364b63c6bc73e7ffb49916\">tram::Value::AssertType</a></div><div class=\"ttdeci\">void AssertType(Type type) const</div><div class=\"ttdef\"><b>Definition:</b> value.h:178</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a4baee4afcfd915fab1056bbe3e90b889\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a4baee4afcfd915fab1056bbe3e90b889\">tram::Value::operator=</a></div><div class=\"ttdeci\">Value &amp; operator=(const Value &amp;other)</div><div class=\"ttdef\"><b>Definition:</b> value.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a52f124f1bb9637ad3ae7763768382ca8\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a52f124f1bb9637ad3ae7763768382ca8\">tram::Value::vec4_value</a></div><div class=\"ttdeci\">vec4 vec4_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:193</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a55c1e2fc1d44a258a1e7574f8dc8301d\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a55c1e2fc1d44a258a1e7574f8dc8301d\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(vec4 value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5730c454f7a08e4ad926fa0438e0ca02\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5730c454f7a08e4ad926fa0438e0ca02\">tram::Value::IsBool</a></div><div class=\"ttdeci\">bool IsBool() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:128</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5794f8b98f39f0f898874e38bbe9c66f\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5794f8b98f39f0f898874e38bbe9c66f\">tram::Value::Value</a></div><div class=\"ttdeci\">Value()</div><div class=\"ttdef\"><b>Definition:</b> value.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a57e02b0f0c958d2a5ac93722d1118b7d\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a57e02b0f0c958d2a5ac93722d1118b7d\">tram::Value::~Value</a></div><div class=\"ttdeci\">~Value()</div><div class=\"ttdef\"><b>Definition:</b> value.h:21</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a598196e2d0a2320326b46ed5ca9e6055\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a598196e2d0a2320326b46ed5ca9e6055\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(const char *value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:57</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5b771cb492491a14a1b2ff4aebf0ab3a\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5b771cb492491a14a1b2ff4aebf0ab3a\">tram::Value::vec2_value</a></div><div class=\"ttdeci\">vec2 vec2_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:191</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5da5adfcfc734e81d6d10833b551d427\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5da5adfcfc734e81d6d10833b551d427\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(int32_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:69</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a5e5cc98ba9a99ddd337091c91a917c8c\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a5e5cc98ba9a99ddd337091c91a917c8c\">tram::Value::ToString</a></div><div class=\"ttdeci\">std::string ToString()</div><div class=\"ttdef\"><b>Definition:</b> value.h:156</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a602ff619b99e1e7bf104968b0e6cc105\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a602ff619b99e1e7bf104968b0e6cc105\">tram::Value::name_value</a></div><div class=\"ttdeci\">name_t name_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:186</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a66085936ba2cabe6e5a327253c6c9aa7\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a66085936ba2cabe6e5a327253c6c9aa7\">tram::Value::quat_value</a></div><div class=\"ttdeci\">quat quat_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:194</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a6b7c80c5327bd2f41fd145d1f9bb3716\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a6b7c80c5327bd2f41fd145d1f9bb3716\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(quat value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:77</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a6c06918b9f54415fb97892f2009d54b1\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a6c06918b9f54415fb97892f2009d54b1\">tram::Value::GetFloat</a></div><div class=\"ttdeci\">float GetFloat() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:147</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a6c99dda196237da9884bd1390dd40f6e\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a6c99dda196237da9884bd1390dd40f6e\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(name_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:56</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a76b971a65a139f711180c348be2b8dae\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a76b971a65a139f711180c348be2b8dae\">tram::Value::vec3_value</a></div><div class=\"ttdeci\">vec3 vec3_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:192</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a7be0d3e1625e7bc8cb398908153709de\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a7be0d3e1625e7bc8cb398908153709de\">tram::Value::uint32_value</a></div><div class=\"ttdeci\">uint32_t uint32_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:189</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a7ee321f7843e602cdf1dc6ec6d8c707b\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a7ee321f7843e602cdf1dc6ec6d8c707b\">tram::Value::string_value</a></div><div class=\"ttdeci\">const char * string_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:187</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a81e95640899e63a329a020a6fe2dfebc\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a81e95640899e63a329a020a6fe2dfebc\">tram::Value::IsVec4</a></div><div class=\"ttdeci\">bool IsVec4() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:135</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a831372ec4d00555168651da5fd654641\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a831372ec4d00555168651da5fd654641\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(int64_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:61</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a853b7775d3db060de6868c3e284e1305\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a853b7775d3db060de6868c3e284e1305\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(bool value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:55</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_a8aa70a82725f60f68b3d24865edfc275\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#a8aa70a82725f60f68b3d24865edfc275\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(uint8_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ab72671e0091919d1657ac549e9b6bc60\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ab72671e0091919d1657ac549e9b6bc60\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(const Value &amp;other)</div><div class=\"ttdef\"><b>Definition:</b> value.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_abaa6b4a80038f14d4d9fac5742011900\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#abaa6b4a80038f14d4d9fac5742011900\">tram::Value::IsName</a></div><div class=\"ttdeci\">bool IsName() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:131</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_abcedb8e96c6af96db3dacb1b5859cf61\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#abcedb8e96c6af96db3dacb1b5859cf61\">tram::Value::IsInt</a></div><div class=\"ttdeci\">bool IsInt() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:129</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ac198c01333d3f9819a8e08faf95cabeb\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ac198c01333d3f9819a8e08faf95cabeb\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(uint16_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ac300cdbdca5c4e2f5b4a890033fe79af\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ac300cdbdca5c4e2f5b4a890033fe79af\">tram::Value::IsVec3</a></div><div class=\"ttdeci\">bool IsVec3() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:134</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ac3b2d9648f97190efe021f4c8345d585\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ac3b2d9648f97190efe021f4c8345d585\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(int8_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:59</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ad054720a352630eda06a3d7ee750f067\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ad054720a352630eda06a3d7ee750f067\">tram::Value::float_value</a></div><div class=\"ttdeci\">float float_value</div><div class=\"ttdef\"><b>Definition:</b> value.h:190</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ad1f3542b668e1dabe541a89be2338e94\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ad1f3542b668e1dabe541a89be2338e94\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(float value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:79</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ad59a44468143c7dfdafca922f37eb380\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ad59a44468143c7dfdafca922f37eb380\">tram::Value::IsString</a></div><div class=\"ttdeci\">bool IsString() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:132</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_ad9061d7a9f7f1d440bed085327cb1893\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#ad9061d7a9f7f1d440bed085327cb1893\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(vec2 value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_adf7c16903c484a39086cc193fa4d3f1e\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#adf7c16903c484a39086cc193fa4d3f1e\">tram::Value::IsFloat</a></div><div class=\"ttdeci\">bool IsFloat() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:130</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_aec15d455c732150f97eb47662f23fedf\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#aec15d455c732150f97eb47662f23fedf\">tram::Value::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:174</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_af19a2afc58fe6b53f4817d8177930508\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#af19a2afc58fe6b53f4817d8177930508\">tram::Value::IsVec2</a></div><div class=\"ttdeci\">bool IsVec2() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:133</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_af5bb94d263f9f0a53c7a317b903fa8aa\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#af5bb94d263f9f0a53c7a317b903fa8aa\">tram::Value::type</a></div><div class=\"ttdeci\">Type type</div><div class=\"ttdef\"><b>Definition:</b> value.h:176</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_html_afe9d45f9c080eacff5b16b8a61e94b6b\"><div class=\"ttname\"><a href=\"classtram_1_1_value.html#afe9d45f9c080eacff5b16b8a61e94b6b\">tram::Value::Value</a></div><div class=\"ttdeci\">Value(uint64_t value)</div><div class=\"ttdef\"><b>Definition:</b> value.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html\">tram::ValuePtr</a></div><div class=\"ttdef\"><b>Definition:</b> value.h:200</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a1916311938740122169aaf88c83aefa9\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a1916311938740122169aaf88c83aefa9\">tram::ValuePtr::uint32_ptr</a></div><div class=\"ttdeci\">uint32_t * uint32_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:305</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a1bdaf5ddd78cea7f6265b7f2885bd49f\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a1bdaf5ddd78cea7f6265b7f2885bd49f\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(vec3 *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:269</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a1d7b7f756a82db8ceaa542a2a991702b\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a1d7b7f756a82db8ceaa542a2a991702b\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(bool *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:260</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a2510ece20da4a990011d9b3487000695\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a2510ece20da4a990011d9b3487000695\">tram::ValuePtr::IsInt</a></div><div class=\"ttdeci\">bool IsInt() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:293</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a30acbba06034afaa772635752a46979d\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a30acbba06034afaa772635752a46979d\">tram::ValuePtr::int32_ptr</a></div><div class=\"ttdeci\">int32_t * int32_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:304</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a3a0c3c020fc28d602f348a2771185274\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a3a0c3c020fc28d602f348a2771185274\">tram::ValuePtr::IsFloat</a></div><div class=\"ttdeci\">bool IsFloat() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:294</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a47f3134ee2d01c4d863774e072a535e4\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a47f3134ee2d01c4d863774e072a535e4\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(vec2 *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:268</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a522c59ef5b59f1ed23637a64bf26f26e\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a522c59ef5b59f1ed23637a64bf26f26e\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(quat *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:272</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a611fec6779600e3a3508e87fa9a83f6a\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a611fec6779600e3a3508e87fa9a83f6a\">tram::ValuePtr::SetValue</a></div><div class=\"ttdeci\">void SetValue(const Value &amp;other)</div><div class=\"ttdef\"><b>Definition:</b> value.h:242</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a6a5d3a375ce2d32d453e42796e777103\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a6a5d3a375ce2d32d453e42796e777103\">tram::ValuePtr::bool_ptr</a></div><div class=\"ttdeci\">bool * bool_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:301</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a710718917b773c0a1e242cd9d1adb8ab\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a710718917b773c0a1e242cd9d1adb8ab\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr()</div><div class=\"ttdef\"><b>Definition:</b> value.h:202</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a87abd9913a910f4dd2b5c20a987347d3\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a87abd9913a910f4dd2b5c20a987347d3\">tram::ValuePtr::quat_ptr</a></div><div class=\"ttdeci\">quat * quat_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:310</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a90a98402ca4571e3de89695ccfb9bd35\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a90a98402ca4571e3de89695ccfb9bd35\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(float *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:274</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a92882c2ebfa617edca2359ee75f49db3\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a92882c2ebfa617edca2359ee75f49db3\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(vec4 *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:270</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a9335ead8270ada0fd06cab62315dd646\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a9335ead8270ada0fd06cab62315dd646\">tram::ValuePtr::name_ptr</a></div><div class=\"ttdeci\">name_t * name_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:302</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a9a40889e3cb361b60b2ca68b9ad5866d\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a9a40889e3cb361b60b2ca68b9ad5866d\">tram::ValuePtr::vec4_ptr</a></div><div class=\"ttdeci\">vec4 * vec4_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:309</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_a9c37ca2a5950081f0d84e161d3f8fd50\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#a9c37ca2a5950081f0d84e161d3f8fd50\">tram::ValuePtr::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:296</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_aa41430152ae099fa046cb717764a5f73\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#aa41430152ae099fa046cb717764a5f73\">tram::ValuePtr::string_ptr</a></div><div class=\"ttdeci\">const char ** string_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:303</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ab31b750bd4f2b23f2279519ca9e3a5b3\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ab31b750bd4f2b23f2279519ca9e3a5b3\">tram::ValuePtr::vec2_ptr</a></div><div class=\"ttdeci\">vec2 * vec2_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:307</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ab32d7ed3d22a06ad91776f2604d70e1a\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ab32d7ed3d22a06ad91776f2604d70e1a\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(const ValuePtr &amp;other)</div><div class=\"ttdef\"><b>Definition:</b> value.h:205</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_aba2c848ef361b2ba2a85e8d4b9a5dfab\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#aba2c848ef361b2ba2a85e8d4b9a5dfab\">tram::ValuePtr::~ValuePtr</a></div><div class=\"ttdeci\">~ValuePtr()</div><div class=\"ttdef\"><b>Definition:</b> value.h:203</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ac0043fc618372996a0b05f85074a06b6\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ac0043fc618372996a0b05f85074a06b6\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(Value &amp;other)</div><div class=\"ttdef\"><b>Definition:</b> value.h:207</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ac25851bd286667025b81cdf9b29c60ba\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ac25851bd286667025b81cdf9b29c60ba\">tram::ValuePtr::vec3_ptr</a></div><div class=\"ttdeci\">vec3 * vec3_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:308</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ac28b4b028d4493d27a7f6e1fa6d5fda5\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ac28b4b028d4493d27a7f6e1fa6d5fda5\">tram::ValuePtr::IsBool</a></div><div class=\"ttdeci\">bool IsBool() const</div><div class=\"ttdef\"><b>Definition:</b> value.h:292</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ae042fdfe2489cb32bece84e5993b1c14\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ae042fdfe2489cb32bece84e5993b1c14\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(int32_t *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:264</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ae055d89765f91e6dbaa448feaf0063c4\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ae055d89765f91e6dbaa448feaf0063c4\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(uint32_t *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:266</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_ae34aab6f72a348a3cb5ac1d953e0df60\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#ae34aab6f72a348a3cb5ac1d953e0df60\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(const char **ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:262</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_aeca88a1e5474cb104fcf79d0c579b583\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#aeca88a1e5474cb104fcf79d0c579b583\">tram::ValuePtr::ValuePtr</a></div><div class=\"ttdeci\">ValuePtr(name_t *ptr)</div><div class=\"ttdef\"><b>Definition:</b> value.h:261</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_value_ptr_html_af358e691eb1c70e81271966fdef46dfb\"><div class=\"ttname\"><a href=\"classtram_1_1_value_ptr.html#af358e691eb1c70e81271966fdef46dfb\">tram::ValuePtr::float_ptr</a></div><div class=\"ttdeci\">float * float_ptr</div><div class=\"ttdef\"><b>Definition:</b> value.h:306</div></div>\n<div class=\"ttc\" id=\"alogging_8h_html\"><div class=\"ttname\"><a href=\"logging_8h.html\">logging.h</a></div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_system_html_a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\"><div class=\"ttname\"><a href=\"namespacetram_1_1_system.html#a02b5e7a5340ef5ca42a650ca4d8ade65ada08d006736503d6ad767d03f59716a0\">tram::System::CORE</a></div><div class=\"ttdeci\">@ CORE</div><div class=\"ttdef\"><b>Definition:</b> system.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609\">tram::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdoc\">Type enumeration for serialization, etc.</div><div class=\"ttdef\"><b>Definition:</b> type.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a111453a4d7714cf86faa97be315b46cc\">tram::TYPE_BOOL</a></div><div class=\"ttdeci\">@ TYPE_BOOL</div><div class=\"ttdef\"><b>Definition:</b> type.h:14</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a3d336d61c1e5bc13bd9118a9eaef27b6\">tram::TYPE_STRING</a></div><div class=\"ttdeci\">@ TYPE_STRING</div><div class=\"ttdef\"><b>Definition:</b> type.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a4f418b5865c768e38124f40a4ce833e4\">tram::TYPE_VEC2</a></div><div class=\"ttdeci\">@ TYPE_VEC2</div><div class=\"ttdef\"><b>Definition:</b> type.h:24</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a844da12f97bd954de21a57e8a2a92417\">tram::TYPE_UINT32</a></div><div class=\"ttdeci\">@ TYPE_UINT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:22</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609a86fd0d5ff1171a6451643f81818e90a5\">tram::TYPE_INT32</a></div><div class=\"ttdeci\">@ TYPE_INT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:19</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609aa18f8ff29f12654a098855735f6ec009\">tram::TYPE_VEC3</a></div><div class=\"ttdeci\">@ TYPE_VEC3</div><div class=\"ttdef\"><b>Definition:</b> type.h:25</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab4f55e3ac7164edcba77a919c4c6c92b\">tram::TYPE_QUAT</a></div><div class=\"ttdeci\">@ TYPE_QUAT</div><div class=\"ttdef\"><b>Definition:</b> type.h:27</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ab74623faa07cd1460524e37db8650aee\">tram::TYPE_VEC4</a></div><div class=\"ttdeci\">@ TYPE_VEC4</div><div class=\"ttdef\"><b>Definition:</b> type.h:26</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609ad58e67edf974dfb07e729461f8705f05\">tram::TYPE_UNDEFINED</a></div><div class=\"ttdeci\">@ TYPE_UNDEFINED</div><div class=\"ttdef\"><b>Definition:</b> type.h:13</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609af71a0101efab7293c5e5e7d0e1fddd8c\">tram::TYPE_NAME</a></div><div class=\"ttdeci\">@ TYPE_NAME</div><div class=\"ttdef\"><b>Definition:</b> type.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\"><div class=\"ttname\"><a href=\"namespacetram.html#a2b5d2fc96be5dd5baddedba49a7ef609afa725a1f951661b708f729b920749c1d\">tram::TYPE_FLOAT32</a></div><div class=\"ttdeci\">@ TYPE_FLOAT32</div><div class=\"ttdef\"><b>Definition:</b> type.h:23</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2d99e12b9721e0d27d105d40a52bbc49\"><div class=\"ttname\"><a href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram::vec2</a></div><div class=\"ttdeci\">glm::vec2 vec2</div><div class=\"ttdef\"><b>Definition:</b> math.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\"><div class=\"ttname\"><a href=\"namespacetram.html#a34ab368bc856f9bd71bfcb4f2bb86c56a195c3aaf9aee74d8d2e715f0bc8c33e5\">tram::Severity::CRITICAL_ERROR</a></div><div class=\"ttdeci\">@ CRITICAL_ERROR</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a6ba8befa39d714232ba6f05ade798893\"><div class=\"ttname\"><a href=\"namespacetram.html#a6ba8befa39d714232ba6f05ade798893\">tram::quat</a></div><div class=\"ttdeci\">glm::quat quat</div><div class=\"ttdef\"><b>Definition:</b> math.h:12</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a78660be0737c048109e94b12da8376c1\"><div class=\"ttname\"><a href=\"namespacetram.html#a78660be0737c048109e94b12da8376c1\">tram::Log</a></div><div class=\"ttdeci\">void Log(Severity severity, System::system_t system, const std::string_view &amp;format, Args &amp;&amp;... args)</div><div class=\"ttdef\"><b>Definition:</b> logging.h:79</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a7d506d80abf93dd017a92dbcb169f9c4\"><div class=\"ttname\"><a href=\"namespacetram.html#a7d506d80abf93dd017a92dbcb169f9c4\">tram::value_t</a></div><div class=\"ttdeci\">Value value_t</div><div class=\"ttdef\"><b>Definition:</b> event.h:21</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a8f6d1d8931b6fc9fe7e5767f1352383e\"><div class=\"ttname\"><a href=\"namespacetram.html#a8f6d1d8931b6fc9fe7e5767f1352383e\">tram::TypeToString</a></div><div class=\"ttdeci\">const char * TypeToString(Type type)</div><div class=\"ttdoc\">Converts type enum to string.</div><div class=\"ttdef\"><b>Definition:</b> type.cpp:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a9a399a2754b52b60de20e936546d0637\"><div class=\"ttname\"><a href=\"namespacetram.html#a9a399a2754b52b60de20e936546d0637\">tram::valuearray_t</a></div><div class=\"ttdeci\">ValueArray valuearray_t</div><div class=\"ttdef\"><b>Definition:</b> value.h:325</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_ad77b577436f476438699a1c4da9d549c\"><div class=\"ttname\"><a href=\"namespacetram.html#ad77b577436f476438699a1c4da9d549c\">tram::name_t</a></div><div class=\"ttdeci\">UID name_t</div><div class=\"ttdef\"><b>Definition:</b> uid.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"atype_8h_html\"><div class=\"ttname\"><a href=\"type_8h.html\">type.h</a></div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/vertices_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/vertices.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">vertices.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/vertices_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/vertices.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">vertices.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"renderer_8h_source.html\">render/renderer.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n</div>\n<p><a href=\"vertices_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_line_vertex.html\">tram::Render::LineVertex</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_triangle.html\">tram::Render::Triangle</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_model_data.html\">tram::Render::ModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_static_model_data.html\">tram::Render::StaticModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n<tr class=\"memitem:namespacetram_1_1_render\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram_1_1_render.html\">tram::Render</a></td></tr>\n<tr class=\"memdesc:namespacetram_1_1_render\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">High-level <a class=\"el\" href=\"namespacetram_1_1_render.html\" title=\"High-level Render system API.\">Render</a> system <a class=\"el\" href=\"namespacetram_1_1_render_1_1_a_p_i.html\" title=\"Rendering backend API.\">API</a>. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/vertices_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/render/vertices.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_01fd219969118eefb63f711194f953b6.html\">render</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">vertices.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"vertices_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_RENDER_VERTICES_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_RENDER_VERTICES_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"renderer_8h.html\">render/renderer.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"render_2render_8h.html\">render/render.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span> </div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram_1_1_render.html\">tram::Render</a> {</div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span> </div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">   12</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_static_model_vertex.html\">StaticModelVertex</a> {</div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">   13</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">co</a>;            <span class=\"comment\">//&lt; Vertex position in object space.</span></div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">   14</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">normal</a>;        <span class=\"comment\">//&lt; Vertex normal vector.</span></div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">   15</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tex</a>;           <span class=\"comment\">//&lt; Vertex texture coordinates.</span></div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">   16</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">lighttex</a>;      <span class=\"comment\">//&lt; Vertex lightmap coordinates.</span></div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">   17</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">texture</a>;   <span class=\"comment\">//&lt; Vertex texture material index.</span></div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span>};</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">   20</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">DynamicModelVertex</a> {</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">   21</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">co</a>;            <span class=\"comment\">//&lt; Vertex position in object space.</span></div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">   22</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">normal</a>;        <span class=\"comment\">//&lt; Vertex normal vector.</span></div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">   23</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tex</a>;           <span class=\"comment\">//&lt; Vertex texture coordinates.</span></div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">   24</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">ivec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">bone</a>;         <span class=\"comment\">//&lt; Vertex bone indices.</span></div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">   25</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">vec4</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">boneweight</a>;    <span class=\"comment\">//&lt; Vertex bone weights.</span></div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">   26</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">texture</a>;   <span class=\"comment\">//&lt; Vertex texture material index.</span></div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>};</div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">   29</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_sprite_vertex.html\">SpriteVertex</a> {</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">   30</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">co</a>;            <span class=\"comment\">//&lt; Sprite position in object space.</span></div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">   31</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">voffset</a>;       <span class=\"comment\">//&lt; Vertex offset in projection space.</span></div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">   32</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">texco</a>;         <span class=\"comment\">//&lt; Vertex texture coordinates.</span></div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">   33</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">color</a>;         <span class=\"comment\">//&lt; Vertex color.</span></div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">   34</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">verticality</a>;  <span class=\"comment\">//&lt; I don&#39;t remember.</span></div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">   35</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">texture</a>;   <span class=\"comment\">//&lt; Vertex texture material index.</span></div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>};</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_line_vertex.html\">   38</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">LineVertex</a> {</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">   39</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">co</a>;            <span class=\"comment\">//&lt; Vertex position in object space.</span></div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">   40</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">color</a>;         <span class=\"comment\">//&lt; Vertex color.</span></div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_triangle.html\">   43</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_triangle.html\">Triangle</a> {</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">   44</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">ivec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">indices</a>;          <span class=\"comment\">//&lt; Triangle vertex indices.</span></div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>};</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html\">   47</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_sprite_point.html\">SpritePoint</a> {</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">   48</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">position</a>;</div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">   49</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">center</a>;</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">   50</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">color</a>;</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">   51</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">rotation</a>;</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">   52</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">dimensions</a>;</div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">   53</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">texture_offset</a>;</div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">   54</a></span>    <a class=\"code hl_typedef\" href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">vec2</a> <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">texture_size</a>;</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">   55</a></span>    uint32_t <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">texture</a>;</div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>};</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_model_data.html\">   58</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a> {};</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_data.html\">   60</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_static_model_data.html\">StaticModelData</a> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a> {</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">   61</a></span>    std::vector&lt;StaticModelVertex&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">vertices</a>;</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">   62</a></span>    std::vector&lt;Triangle&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">indices</a>;</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>};</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">   65</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">DynamicModelData</a> : <span class=\"keyword\">public</span> <a class=\"code hl_struct\" href=\"structtram_1_1_render_1_1_model_data.html\">ModelData</a> {</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">   66</a></span>    std::vector&lt;DynamicModelVertex&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">vertices</a>;</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">   67</a></span>    std::vector&lt;Triangle&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">indices</a>;</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">   68</a></span>    std::vector&lt;UID&gt; <a class=\"code hl_variable\" href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">groups</a>;</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>};</div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>}</div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_RENDER_VERTICES_H</span></div>\n<div class=\"ttc\" id=\"anamespacetram_1_1_render_html\"><div class=\"ttname\"><a href=\"namespacetram_1_1_render.html\">tram::Render</a></div><div class=\"ttdoc\">High-level Render system API.</div><div class=\"ttdef\"><b>Definition:</b> gui.h:8</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1632687848b1fc76b67d96646ef5a691\"><div class=\"ttname\"><a href=\"namespacetram.html#a1632687848b1fc76b67d96646ef5a691\">tram::ivec4</a></div><div class=\"ttdeci\">glm::ivec4 ivec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:18</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a1d95095efd075f601cb4afe9ff24c93b\"><div class=\"ttname\"><a href=\"namespacetram.html#a1d95095efd075f601cb4afe9ff24c93b\">tram::vec4</a></div><div class=\"ttdeci\">glm::vec4 vec4</div><div class=\"ttdef\"><b>Definition:</b> math.h:15</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a2d99e12b9721e0d27d105d40a52bbc49\"><div class=\"ttname\"><a href=\"namespacetram.html#a2d99e12b9721e0d27d105d40a52bbc49\">tram::vec2</a></div><div class=\"ttdeci\">glm::vec2 vec2</div><div class=\"ttdef\"><b>Definition:</b> math.h:16</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a376f6f34fd81bba7071907b5226432f9\"><div class=\"ttname\"><a href=\"namespacetram.html#a376f6f34fd81bba7071907b5226432f9\">tram::ivec3</a></div><div class=\"ttdeci\">glm::ivec3 ivec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:17</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"arender_2render_8h_html\"><div class=\"ttname\"><a href=\"render_2render_8h.html\">render.h</a></div></div>\n<div class=\"ttc\" id=\"arenderer_8h_html\"><div class=\"ttname\"><a href=\"renderer_8h.html\">renderer.h</a></div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_a_p_i_1_1_line_vertex_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_a_p_i_1_1_line_vertex.html\">tram::Render::API::LineVertex</a></div><div class=\"ttdef\"><b>Definition:</b> renderer.cpp:449</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_data.html\">tram::Render::DynamicModelData</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:65</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_data_html_a1035c833b573784ed658754feb0b7c17\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a1035c833b573784ed658754feb0b7c17\">tram::Render::DynamicModelData::indices</a></div><div class=\"ttdeci\">std::vector&lt; Triangle &gt; indices</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:67</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_data_html_a95478c605a0c584ac6710fb1cc79c473\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_data.html#a95478c605a0c584ac6710fb1cc79c473\">tram::Render::DynamicModelData::vertices</a></div><div class=\"ttdeci\">std::vector&lt; DynamicModelVertex &gt; vertices</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:66</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_data_html_ab12ffc9bc3a25b66d24b120f4563f1b3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_data.html#ab12ffc9bc3a25b66d24b120f4563f1b3\">tram::Render::DynamicModelData::groups</a></div><div class=\"ttdeci\">std::vector&lt; UID &gt; groups</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:68</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html\">tram::Render::DynamicModelVertex</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:20</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_a14eec60b6751efb3a18233b51b09d874\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a14eec60b6751efb3a18233b51b09d874\">tram::Render::DynamicModelVertex::bone</a></div><div class=\"ttdeci\">ivec4 bone</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:24</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_a20afebb7b239ed53a388bb53e32d9cf9\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a20afebb7b239ed53a388bb53e32d9cf9\">tram::Render::DynamicModelVertex::tex</a></div><div class=\"ttdeci\">vec2 tex</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:23</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_a2dede085a14ed82c933ed72e555d2fb2\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a2dede085a14ed82c933ed72e555d2fb2\">tram::Render::DynamicModelVertex::boneweight</a></div><div class=\"ttdeci\">vec4 boneweight</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:25</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_a72c02c5037cf0f6f2fc3b7a843c3a1e3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#a72c02c5037cf0f6f2fc3b7a843c3a1e3\">tram::Render::DynamicModelVertex::texture</a></div><div class=\"ttdeci\">uint32_t texture</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:26</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_abe2dcd54a8992ee1eb86927943ec84d4\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#abe2dcd54a8992ee1eb86927943ec84d4\">tram::Render::DynamicModelVertex::co</a></div><div class=\"ttdeci\">vec3 co</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:21</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_dynamic_model_vertex_html_ae360db7530c291cdcb6464a083824520\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_dynamic_model_vertex.html#ae360db7530c291cdcb6464a083824520\">tram::Render::DynamicModelVertex::normal</a></div><div class=\"ttdeci\">vec3 normal</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:22</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_line_vertex_html_a19733733fc175c6d7892ecc8233ca9c3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_line_vertex.html#a19733733fc175c6d7892ecc8233ca9c3\">tram::Render::LineVertex::co</a></div><div class=\"ttdeci\">vec3 co</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:39</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_line_vertex_html_a89e5b2b41533702bef6a605c4443de40\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_line_vertex.html#a89e5b2b41533702bef6a605c4443de40\">tram::Render::LineVertex::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:40</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_model_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_model_data.html\">tram::Render::ModelData</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:58</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html\">tram::Render::SpritePoint</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:47</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_a3103f0ed581c4c8e8a43bc89ed981450\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#a3103f0ed581c4c8e8a43bc89ed981450\">tram::Render::SpritePoint::position</a></div><div class=\"ttdeci\">vec3 position</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:48</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_a3b0683b95f728e95b47705da6c22db99\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#a3b0683b95f728e95b47705da6c22db99\">tram::Render::SpritePoint::texture</a></div><div class=\"ttdeci\">uint32_t texture</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:55</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_a94456d286185795097932358effe13a3\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#a94456d286185795097932358effe13a3\">tram::Render::SpritePoint::texture_size</a></div><div class=\"ttdeci\">vec2 texture_size</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:54</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_a9a13cc02b4286881dd37bc6675e30516\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#a9a13cc02b4286881dd37bc6675e30516\">tram::Render::SpritePoint::texture_offset</a></div><div class=\"ttdeci\">vec2 texture_offset</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:53</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_abc7c9bdede266f19ac735648da416620\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#abc7c9bdede266f19ac735648da416620\">tram::Render::SpritePoint::center</a></div><div class=\"ttdeci\">vec3 center</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:49</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_ac1308953c2313e45cb7b3f82c35a409f\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#ac1308953c2313e45cb7b3f82c35a409f\">tram::Render::SpritePoint::rotation</a></div><div class=\"ttdeci\">float rotation</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:51</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_ae43f9f3709a9cf44fb321dee4b2c336a\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#ae43f9f3709a9cf44fb321dee4b2c336a\">tram::Render::SpritePoint::dimensions</a></div><div class=\"ttdeci\">vec2 dimensions</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:52</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_point_html_ae6af3c7ee1e7f4b5e23b31fd159fbd1e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_point.html#ae6af3c7ee1e7f4b5e23b31fd159fbd1e\">tram::Render::SpritePoint::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:50</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html\">tram::Render::SpriteVertex</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:29</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_a5fb739d8f642c69f87f111a8a668b001\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#a5fb739d8f642c69f87f111a8a668b001\">tram::Render::SpriteVertex::voffset</a></div><div class=\"ttdeci\">vec2 voffset</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:31</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_a6368e6f15b611c6bcc3160bac1d80ca8\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#a6368e6f15b611c6bcc3160bac1d80ca8\">tram::Render::SpriteVertex::verticality</a></div><div class=\"ttdeci\">float verticality</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:34</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_a8085377574c6989403d1bd2c3f7fb65e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#a8085377574c6989403d1bd2c3f7fb65e\">tram::Render::SpriteVertex::texture</a></div><div class=\"ttdeci\">uint32_t texture</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:35</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_abeffdb3fc7194d2e43ca60aab57f5343\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#abeffdb3fc7194d2e43ca60aab57f5343\">tram::Render::SpriteVertex::texco</a></div><div class=\"ttdeci\">vec2 texco</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:32</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_ac907370fcda98fc09892bf2d6b5ca589\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#ac907370fcda98fc09892bf2d6b5ca589\">tram::Render::SpriteVertex::co</a></div><div class=\"ttdeci\">vec3 co</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:30</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_sprite_vertex_html_add933d35ed49d8979c02c6a817bf347e\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_sprite_vertex.html#add933d35ed49d8979c02c6a817bf347e\">tram::Render::SpriteVertex::color</a></div><div class=\"ttdeci\">vec3 color</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:33</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_data_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_data.html\">tram::Render::StaticModelData</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:60</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_data_html_ac608149e0f9e85bf4b102e750c375abd\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_data.html#ac608149e0f9e85bf4b102e750c375abd\">tram::Render::StaticModelData::indices</a></div><div class=\"ttdeci\">std::vector&lt; Triangle &gt; indices</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:62</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_data_html_ad57619c7212131ac5bcef78c008e9bb0\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_data.html#ad57619c7212131ac5bcef78c008e9bb0\">tram::Render::StaticModelData::vertices</a></div><div class=\"ttdeci\">std::vector&lt; StaticModelVertex &gt; vertices</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:61</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html\">tram::Render::StaticModelVertex</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:12</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html_a03a02fdd57efe92a0436710cc9f35376\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html#a03a02fdd57efe92a0436710cc9f35376\">tram::Render::StaticModelVertex::co</a></div><div class=\"ttdeci\">vec3 co</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:13</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html_a14236fc030ada6beb923c59481356738\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html#a14236fc030ada6beb923c59481356738\">tram::Render::StaticModelVertex::texture</a></div><div class=\"ttdeci\">uint32_t texture</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:17</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html_a75f016333052129270d3ec90b7e19e92\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html#a75f016333052129270d3ec90b7e19e92\">tram::Render::StaticModelVertex::normal</a></div><div class=\"ttdeci\">vec3 normal</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:14</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html_ab1ff0529e48d198c0875ccb58f73eb18\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html#ab1ff0529e48d198c0875ccb58f73eb18\">tram::Render::StaticModelVertex::lighttex</a></div><div class=\"ttdeci\">vec2 lighttex</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:16</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_static_model_vertex_html_ad51bc04758264d5ac8dc9bde8902b224\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_static_model_vertex.html#ad51bc04758264d5ac8dc9bde8902b224\">tram::Render::StaticModelVertex::tex</a></div><div class=\"ttdeci\">vec2 tex</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:15</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_triangle_html\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_triangle.html\">tram::Render::Triangle</a></div><div class=\"ttdef\"><b>Definition:</b> vertices.h:43</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_render_1_1_triangle_html_a2582220ecd2310b21a7391756b283d39\"><div class=\"ttname\"><a href=\"structtram_1_1_render_1_1_triangle.html#a2582220ecd2310b21a7391756b283d39\">tram::Render::Triangle::indices</a></div><div class=\"ttdeci\">ivec3 indices</div><div class=\"ttdef\"><b>Definition:</b> vertices.h:44</div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/worldcell_8cpp.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/worldcell.cpp File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">worldcell.cpp File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;<a class=\"el\" href=\"worldcell_8h_source.html\">framework/worldcell.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"entity_8h_source.html\">framework/entity.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"transition_8h_source.html\">framework/transition.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"framework_2file_8h_source.html\">framework/file.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"logging_8h_source.html\">framework/logging.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"pool_8h_source.html\">templates/pool.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"hashmap_8h_source.html\">templates/hashmap.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"render_2render_8h_source.html\">render/render.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"config_8h_source.html\">config.h</a>&gt;</code><br />\n<code>#include &lt;algorithm&gt;</code><br />\n<code>#include &lt;fstream&gt;</code><br />\n<code>#include &lt;cstring&gt;</code><br />\n<code>#include &lt;sstream&gt;</code><br />\n</div><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/worldcell_8h.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/worldcell.h File Reference</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"summary\">\n<a href=\"#nested-classes\">Classes</a> &#124;\n<a href=\"#namespaces\">Namespaces</a>  </div>\n  <div class=\"headertitle\"><div class=\"title\">worldcell.h File Reference</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<div class=\"textblock\"><code>#include &lt;vector&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"uid_8h_source.html\">framework/uid.h</a>&gt;</code><br />\n<code>#include &lt;<a class=\"el\" href=\"math_8h_source.html\">framework/math.h</a>&gt;</code><br />\n</div>\n<p><a href=\"worldcell_8h_source.html\">Go to the source code of this file.</a></p>\n<table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\nClasses</h2></td></tr>\n<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></td></tr>\n<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">World streaming unit.  <a href=\"classtram_1_1_world_cell.html#details\">More...</a><br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table><table class=\"memberdecls\">\n<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\nNamespaces</h2></td></tr>\n<tr class=\"memitem:namespacetram\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"namespacetram.html\">tram</a></td></tr>\n<tr class=\"memdesc:namespacetram\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Serialization, i.e. <br /></td></tr>\n<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n</table>\n</div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/cppapi/worldcell_8h_source.html",
    "content": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n<meta name=\"generator\" content=\"Doxygen 1.9.2\"/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n<title>Tramway SDK: C:/Users/Poga/Desktop/painis/tram-sdk/src/framework/worldcell.h Source File</title>\n<link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"jquery.js\"></script>\n<script type=\"text/javascript\" src=\"dynsections.js\"></script>\n<link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n<script type=\"text/javascript\" src=\"search/searchdata.js\"></script>\n<script type=\"text/javascript\" src=\"search/search.js\"></script>\n<link href=\"doxygen.css\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n<div id=\"top\"><!-- do not remove this div, it is closed by doxygen! -->\n<div id=\"titlearea\">\n<table cellspacing=\"0\" cellpadding=\"0\">\n <tbody>\n <tr style=\"height: 56px;\">\n  <td id=\"projectalign\" style=\"padding-left: 0.5em;\">\n   <div id=\"projectname\">Tramway SDK<span id=\"projectnumber\">&#160;v0.1.1</span>\n   </div>\n  </td>\n </tr>\n </tbody>\n</table>\n</div>\n<!-- end header part -->\n<!-- Generated by Doxygen 1.9.2 -->\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\nvar searchBox = new SearchBox(\"searchBox\", \"search\",'Search','.html');\n/* @license-end */\n</script>\n<script type=\"text/javascript\" src=\"menudata.js\"></script>\n<script type=\"text/javascript\" src=\"menu.js\"></script>\n<script type=\"text/javascript\">\n/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n$(function() {\n  initMenu('',true,false,'search.php','Search');\n  $(document).ready(function() { init_search(); });\n});\n/* @license-end */\n</script>\n<div id=\"main-nav\"></div>\n<!-- window showing the filter options -->\n<div id=\"MSearchSelectWindow\"\n     onmouseover=\"return searchBox.OnSearchSelectShow()\"\n     onmouseout=\"return searchBox.OnSearchSelectHide()\"\n     onkeydown=\"return searchBox.OnSearchSelectKey(event)\">\n</div>\n\n<!-- iframe showing the search results (closed by default) -->\n<div id=\"MSearchResultsWindow\">\n<iframe src=\"javascript:void(0)\" frameborder=\"0\" \n        name=\"MSearchResults\" id=\"MSearchResults\">\n</iframe>\n</div>\n\n<div id=\"nav-path\" class=\"navpath\">\n  <ul>\n<li class=\"navelem\"><a class=\"el\" href=\"dir_861a72433926be42e693eaf9e590afa7.html\">painis</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7dd791b49cea2de8a9731625e7ba4332.html\">tram-sdk</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_c902ca23ecd29d6b4b325f81f7f23ad0.html\">src</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_486a74d7b0f57b9c55d744bdbb092905.html\">framework</a></li>  </ul>\n</div>\n</div><!-- top -->\n<div class=\"header\">\n  <div class=\"headertitle\"><div class=\"title\">worldcell.h</div></div>\n</div><!--header-->\n<div class=\"contents\">\n<a href=\"worldcell_8h.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime</span></div>\n<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span> </div>\n<div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"preprocessor\">#ifndef TRAM_SDK_FRAMEWORK_WORLDCELL_H</span></div>\n<div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"preprocessor\">#define TRAM_SDK_FRAMEWORK_WORLDCELL_H</span></div>\n<div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span> </div>\n<div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n<div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span> </div>\n<div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"uid_8h.html\">framework/uid.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"preprocessor\">#include &lt;<a class=\"code\" href=\"math_8h.html\">framework/math.h</a>&gt;</span></div>\n<div class=\"line\"><a id=\"l00010\" name=\"l00010\"></a><span class=\"lineno\">   10</span> </div>\n<div class=\"line\"><a id=\"l00011\" name=\"l00011\"></a><span class=\"lineno\">   11</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"namespacetram.html\">tram</a> {</div>\n<div class=\"line\"><a id=\"l00012\" name=\"l00012\"></a><span class=\"lineno\">   12</span> </div>\n<div class=\"line\"><a id=\"l00013\" name=\"l00013\"></a><span class=\"lineno\">   13</span><span class=\"keyword\">class </span>Entity;</div>\n<div class=\"line\"><a id=\"l00014\" name=\"l00014\"></a><span class=\"lineno\">   14</span><span class=\"keyword\">class </span>Transition;</div>\n<div class=\"line\"><a id=\"l00015\" name=\"l00015\"></a><span class=\"lineno\">   15</span> </div>\n<div class=\"line\"><a id=\"l00016\" name=\"l00016\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html\">   16</a></span><span class=\"keyword\">class </span><a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a> {</div>\n<div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"keyword\">public</span>:</div>\n<div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">   18</a></span>    <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">WorldCell</a>(<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>) { this-&gt;name = <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span> </div>\n<div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">   20</a></span>    <span class=\"keyword\">inline</span> <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">GetName</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>; }</div>\n<div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span> </div>\n<div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">   22</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">IsLoaded</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">LOADED</a>; }</div>\n<div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">   23</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">IsInterior</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">INTERIOR</a>; }</div>\n<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">   24</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">HasInteriorLighting</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">INTERIOR_LIGHTING</a>; }</div>\n<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">   25</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">IsDebugDraw</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">DEBUG_DRAW</a>; }</div>\n<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">   26</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">HasAutomaticLoading</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a>; }</div>\n<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span>    </div>\n<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">   28</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">SetInterior</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(<a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">INTERIOR</a>, is); }</div>\n<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">   29</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">SetInteriorLights</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(<a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">INTERIOR_LIGHTING</a>, is); }</div>\n<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">   30</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">SetDebugDraw</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(<a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">DEBUG_DRAW</a>, is); }</div>\n<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">   31</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">SetAutomaticLoading</a>(<span class=\"keywordtype\">bool</span> is) { <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(<a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a>, is); }</div>\n<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span>    </div>\n<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">Load</a>();</div>\n<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">Unload</a>();</div>\n<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">LoadFromDisk</a>();</div>\n<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">Add</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity);</div>\n<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">Remove</a>(<a class=\"code hl_class\" href=\"classtram_1_1_entity.html\">Entity</a>* entity);</div>\n<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    </div>\n<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">   41</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">GetEntityCount</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">entities</a>.size(); }</div>\n<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">Add</a>(<a class=\"code hl_class\" href=\"classtram_1_1_transition.html\">Transition</a>* transition);</div>\n<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    </div>\n<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">Link</a>(<a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* other);</div>\n<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>    </div>\n<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">FindTransition</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point);</div>\n<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    </div>\n<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">   49</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::vector&lt;Entity*&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">GetEntities</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">entities</a>; }</div>\n<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">   50</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::vector&lt;Transition*&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">GetTransitions</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">transitions</a>; }</div>\n<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">   51</a></span>    <span class=\"keyword\">inline</span> <span class=\"keyword\">const</span> std::vector&lt;Transition*&gt;&amp; <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">GetVolume</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">volume</a>; }</div>\n<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    </div>\n<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    </div>\n<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">IsInside</a>(<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point);</div>\n<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">Find</a> (<a class=\"code hl_typedef\" href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">vec3</a> point);</div>\n<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">Find</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>);</div>\n<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keyword\">static</span> <a class=\"code hl_struct\" href=\"classtram_1_1_world_cell.html\">WorldCell</a>* <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">Make</a> (<a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>);</div>\n<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    </div>\n<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">protected</span>:</div>\n<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <span class=\"keyword\">enum</span> {</div>\n<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">   62</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">LOADED</a> = 1,</div>\n<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">   63</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">INTERIOR</a> = 2,</div>\n<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">   64</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">INTERIOR_LIGHTING</a> = 4,</div>\n<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">   65</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">DEBUG_DRAW</a> = 8,</div>\n<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">   66</a></span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a> = 16,</div>\n<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">LOADED_FROM_DISK</a> = 32</div>\n<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">   68</a></span>    };</div>\n<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">   70</a></span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">SetFlag</a>(uint32_t flag, <span class=\"keywordtype\">bool</span> value) { <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> = value ? <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> | flag : <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> &amp; ~flag; };</div>\n<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">   72</a></span>    <a class=\"code hl_struct\" href=\"structtram_1_1_u_i_d.html\">name_t</a> <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">name</a>;</div>\n<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">   73</a></span>    uint32_t <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">flags</a> = <a class=\"code hl_enumvalue\" href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">AUTOMATIC_LOADING</a>;</div>\n<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">   74</a></span>    std::vector&lt;Entity*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">entities</a>;</div>\n<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">   75</a></span>    std::vector&lt;Transition*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">transitions</a>;</div>\n<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">   76</a></span>    std::vector&lt;Transition*&gt; <a class=\"code hl_variable\" href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">volume</a>;</div>\n<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>};</div>\n<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}</div>\n<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// TRAM_SDK_FRAMEWORK_WORLDCELL_H</span></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_entity_html\"><div class=\"ttname\"><a href=\"classtram_1_1_entity.html\">tram::Entity</a></div><div class=\"ttdoc\">Entity base class.</div><div class=\"ttdef\"><b>Definition:</b> entity.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_transition_html\"><div class=\"ttname\"><a href=\"classtram_1_1_transition.html\">tram::Transition</a></div><div class=\"ttdoc\">Connects WorldCells together.</div><div class=\"ttdef\"><b>Definition:</b> transition.h:15</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html\">tram::WorldCell</a></div><div class=\"ttdoc\">World streaming unit.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:16</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a13cf0ae3a6ecb0f8d9c4800f24c914ef\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a13cf0ae3a6ecb0f8d9c4800f24c914ef\">tram::WorldCell::Add</a></div><div class=\"ttdeci\">void Add(Entity *entity)</div><div class=\"ttdoc\">Adds an entity to the worldcell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:191</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a2c0e438bdf14ec661b99ce78df3a6e22\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a2c0e438bdf14ec661b99ce78df3a6e22\">tram::WorldCell::entities</a></div><div class=\"ttdeci\">std::vector&lt; Entity * &gt; entities</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:74</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a2fa5f2ba361a94f37a1f981771cdafaa\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a2fa5f2ba361a94f37a1f981771cdafaa\">tram::WorldCell::GetTransitions</a></div><div class=\"ttdeci\">const std::vector&lt; Transition * &gt; &amp; GetTransitions()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:50</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a38a76916bccb66a452c50c083aa315bf\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a38a76916bccb66a452c50c083aa315bf\">tram::WorldCell::SetInterior</a></div><div class=\"ttdeci\">void SetInterior(bool is)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:28</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a47609a24f5f428ede775c09d633096f2\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a47609a24f5f428ede775c09d633096f2\">tram::WorldCell::flags</a></div><div class=\"ttdeci\">uint32_t flags</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:73</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a4d8144c3a7c27244fb6c8fb87c9783a5\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a4d8144c3a7c27244fb6c8fb87c9783a5\">tram::WorldCell::transitions</a></div><div class=\"ttdeci\">std::vector&lt; Transition * &gt; transitions</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:75</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a539e63e21eadaeda761161d2e162ecf8\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a539e63e21eadaeda761161d2e162ecf8\">tram::WorldCell::IsInterior</a></div><div class=\"ttdeci\">bool IsInterior()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:23</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a587fab236965840dbf0b5254f562b2f6\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a587fab236965840dbf0b5254f562b2f6\">tram::WorldCell::Load</a></div><div class=\"ttdeci\">void Load()</div><div class=\"ttdoc\">Loads the cell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:83</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a5d383de9e1314938cf44ba8dc976150a\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a5d383de9e1314938cf44ba8dc976150a\">tram::WorldCell::GetVolume</a></div><div class=\"ttdeci\">const std::vector&lt; Transition * &gt; &amp; GetVolume()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:51</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a68de53ebe113f1cddbd433dd048acf70\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a68de53ebe113f1cddbd433dd048acf70\">tram::WorldCell::IsInside</a></div><div class=\"ttdeci\">bool IsInside(vec3 point)</div><div class=\"ttdoc\">Checks if point is inside the worldcell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:168</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a71c4e65daebc0e0dd1244843f8148c33\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a71c4e65daebc0e0dd1244843f8148c33\">tram::WorldCell::LoadFromDisk</a></div><div class=\"ttdeci\">void LoadFromDisk()</div><div class=\"ttdoc\">Loads worldcell data from disk.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:248</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a7ee87e1140b9f20b04463f0342135050\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a7ee87e1140b9f20b04463f0342135050\">tram::WorldCell::SetFlag</a></div><div class=\"ttdeci\">void SetFlag(uint32_t flag, bool value)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a8cc37dbda76f539084cba7950b355b22\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a8cc37dbda76f539084cba7950b355b22\">tram::WorldCell::volume</a></div><div class=\"ttdeci\">std::vector&lt; Transition * &gt; volume</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:76</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a8d1863ca31c03feec24439e296d3f5fe\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a8d1863ca31c03feec24439e296d3f5fe\">tram::WorldCell::GetEntityCount</a></div><div class=\"ttdeci\">size_t GetEntityCount()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:41</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a8e14746ba0ad7786857dcc73987cc7b9\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a8e14746ba0ad7786857dcc73987cc7b9\">tram::WorldCell::SetInteriorLights</a></div><div class=\"ttdeci\">void SetInteriorLights(bool is)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:29</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a9005d19a5708c2fc52d97c632ff638f6\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a9005d19a5708c2fc52d97c632ff638f6\">tram::WorldCell::HasAutomaticLoading</a></div><div class=\"ttdeci\">bool HasAutomaticLoading()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:26</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a906f8e64babfe45db448955b205226e1\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a906f8e64babfe45db448955b205226e1\">tram::WorldCell::IsDebugDraw</a></div><div class=\"ttdeci\">bool IsDebugDraw()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:25</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a53db64208d71f275b14f759d1371d326\">tram::WorldCell::DEBUG_DRAW</a></div><div class=\"ttdeci\">@ DEBUG_DRAW</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:65</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a5bcce5b3c7f26f25c0a5e06cb8658c7f\">tram::WorldCell::AUTOMATIC_LOADING</a></div><div class=\"ttdeci\">@ AUTOMATIC_LOADING</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:66</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6b5701f7e4536f58cd7bb5ec2496e33d\">tram::WorldCell::LOADED_FROM_DISK</a></div><div class=\"ttdeci\">@ LOADED_FROM_DISK</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a6ddd0d1668e3847063a1ef166854a507\">tram::WorldCell::INTERIOR</a></div><div class=\"ttdeci\">@ INTERIOR</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:63</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514a87adfa2880447ba4a45de045b1e55ea1\">tram::WorldCell::LOADED</a></div><div class=\"ttdeci\">@ LOADED</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:62</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a90b9ed6e3265fb6b3e569669117fd514abc50d99cd3e56932a7a61ba6471f5101\">tram::WorldCell::INTERIOR_LIGHTING</a></div><div class=\"ttdeci\">@ INTERIOR_LIGHTING</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:64</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_a9521430ae60c9fa514b98fa2e5a5c01f\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#a9521430ae60c9fa514b98fa2e5a5c01f\">tram::WorldCell::GetEntities</a></div><div class=\"ttdeci\">const std::vector&lt; Entity * &gt; &amp; GetEntities()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_aa592b038ed73c8e2accc3ab41deb3d05\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#aa592b038ed73c8e2accc3ab41deb3d05\">tram::WorldCell::name</a></div><div class=\"ttdeci\">name_t name</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:70</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_ab9fc8c0a06f6867f636663a55721f338\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#ab9fc8c0a06f6867f636663a55721f338\">tram::WorldCell::Remove</a></div><div class=\"ttdeci\">void Remove(Entity *entity)</div><div class=\"ttdoc\">Removes an entity from the worldcell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:226</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_abb50e84305e87fea83abf124d311d4f8\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#abb50e84305e87fea83abf124d311d4f8\">tram::WorldCell::WorldCell</a></div><div class=\"ttdeci\">WorldCell(name_t name)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:18</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_abe83e953cd5a7905807a1f4ab8157d01\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#abe83e953cd5a7905807a1f4ab8157d01\">tram::WorldCell::Find</a></div><div class=\"ttdeci\">static WorldCell * Find(vec3 point)</div><div class=\"ttdoc\">Finds the WorldCell which contains a given point.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:67</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_ac34c6821383503d786d5de19caba1041\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#ac34c6821383503d786d5de19caba1041\">tram::WorldCell::Make</a></div><div class=\"ttdeci\">static WorldCell * Make(name_t name)</div><div class=\"ttdoc\">Creates a WorldCell by name.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:49</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_ac65638978ab32fe02e3bcebf5feaf6b9\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#ac65638978ab32fe02e3bcebf5feaf6b9\">tram::WorldCell::GetName</a></div><div class=\"ttdeci\">name_t GetName()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:20</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_acfada914f06d4f84530531b1117b5280\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#acfada914f06d4f84530531b1117b5280\">tram::WorldCell::Link</a></div><div class=\"ttdeci\">void Link(WorldCell *other)</div><div class=\"ttdoc\">Links a worldcell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:179</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_ad023bb63d9cb471fb1b4ab17d59c9b63\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#ad023bb63d9cb471fb1b4ab17d59c9b63\">tram::WorldCell::Unload</a></div><div class=\"ttdeci\">void Unload()</div><div class=\"ttdoc\">Unloads the cell.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:101</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_ad17560365ad3f35f832fe14cb2ad7be6\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#ad17560365ad3f35f832fe14cb2ad7be6\">tram::WorldCell::FindTransition</a></div><div class=\"ttdeci\">WorldCell * FindTransition(vec3 point)</div><div class=\"ttdoc\">Finds a transition from a position.</div><div class=\"ttdef\"><b>Definition:</b> worldcell.cpp:132</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_add3fba0e03d6c7e4b9ba05f83cf811f8\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#add3fba0e03d6c7e4b9ba05f83cf811f8\">tram::WorldCell::SetDebugDraw</a></div><div class=\"ttdeci\">void SetDebugDraw(bool is)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:30</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_af0b8ff336e94162438f66b7670312345\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#af0b8ff336e94162438f66b7670312345\">tram::WorldCell::HasInteriorLighting</a></div><div class=\"ttdeci\">bool HasInteriorLighting()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:24</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_af970d01a2b78d45162c94c3acab1e4a6\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#af970d01a2b78d45162c94c3acab1e4a6\">tram::WorldCell::IsLoaded</a></div><div class=\"ttdeci\">bool IsLoaded()</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:22</div></div>\n<div class=\"ttc\" id=\"aclasstram_1_1_world_cell_html_afb21e78a8b34ebcb39f149f50436b859\"><div class=\"ttname\"><a href=\"classtram_1_1_world_cell.html#afb21e78a8b34ebcb39f149f50436b859\">tram::WorldCell::SetAutomaticLoading</a></div><div class=\"ttdeci\">void SetAutomaticLoading(bool is)</div><div class=\"ttdef\"><b>Definition:</b> worldcell.h:31</div></div>\n<div class=\"ttc\" id=\"amath_8h_html\"><div class=\"ttname\"><a href=\"math_8h.html\">math.h</a></div></div>\n<div class=\"ttc\" id=\"anamespacetram_html\"><div class=\"ttname\"><a href=\"namespacetram.html\">tram</a></div><div class=\"ttdoc\">Serialization, i.e.</div></div>\n<div class=\"ttc\" id=\"anamespacetram_html_a632d9fcf54e995edd8c66e25cb7c1891\"><div class=\"ttname\"><a href=\"namespacetram.html#a632d9fcf54e995edd8c66e25cb7c1891\">tram::vec3</a></div><div class=\"ttdeci\">glm::vec3 vec3</div><div class=\"ttdef\"><b>Definition:</b> math.h:11</div></div>\n<div class=\"ttc\" id=\"astructtram_1_1_u_i_d_html\"><div class=\"ttname\"><a href=\"structtram_1_1_u_i_d.html\">tram::UID</a></div><div class=\"ttdoc\">Interned string type.</div><div class=\"ttdef\"><b>Definition:</b> uid.h:10</div></div>\n<div class=\"ttc\" id=\"auid_8h_html\"><div class=\"ttname\"><a href=\"uid_8h.html\">uid.h</a></div></div>\n</div><!-- fragment --></div><!-- contents -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\nGenerated by&#160;<a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.2\n</small></address>\n</body>\n</html>\n"
  },
  {
    "path": "docs/default.css",
    "content": "body {\n\tfont-size: 10pt;\n\tfont-family: Arial,Helvetica,sans-serif;\n\t/*font-family: Verdana,Arial,Helvetica,sans-serif;*/\n}\n\n.titlebar {\n\tposition: relative;\n}\n\n.titlebar .links {\n\tposition: absolute;\n\tbottom: 0;\n\tright: 0;\n\tpadding-right: 5px;\n\tpadding-bottom: 2px;\n}\n\n.menubar a, .menubar a:link, .menubar a:visited, .menubar a:focus,\n\t\t\t.menubar a:active {\n\tcolor: white;\n}\n\n.menubar a:hover {\n\tcolor: white;\n\ttext-decoration: none;\n}\n\n.menubar {\n\tfont-family: Verdana,Arial,Helvetica,sans-serif;\n}\n\n.navbar {\n\twidth: 100%;\n}\n\n.navbar .left {\n\twidth: 50px;\n}\n\n.navbar .middle {\n\ttext-align: center;\n}\n\n.navbar .right {\n\twidth: 50px;\n\ttext-align: right;\n}\n\n.resizable {\n\twidth: 320px;\n}\n\nh1, h2, h3, h4, h5 {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\np {\n\tmargin-top: 4px;\n\tmargin-bottom: 4px;\n}\n\nh1 {\n\tfont-size: 16pt;\n}\n\nh2 {\n\tfont-size: 12pt;\n}\n\nh3 {\n\tfont-size: 11pt;\n}\n\nh4 {\n\tfont-size: 10pt;\n}\n\nul {\n\tmargin-top: 0;\n\tpadding-left: 20px;\n}\n\n.codefunc {\n\tcolor: blue;\n}\n\n.codeclass {\n\tcolor: blue;\n}\n\n.codekeyw {\n\tcolor: red;\n}\n\n.codecomm {\n\tcolor: green;\n}\n\n.codelit {\n\tcolor: orange;\n}\n\n.codespac {\n\tcolor: blue;\n}\n\n.codeexample {\n\twhite-space: pre;\n}\n\n.infobox {\n\t/* margin: 0px 10px 0px 10px;*/\n\tmargin: 10px 0px 10px 0px;\n\tpadding: 10px 15px 10px 15px;\n\tborder: 2px groove gray;\n}\n\n/* disables animated GIFs if reduced motion is requested */\n@media (prefers-reduced-motion) {\n\t.animated {\n\t\tdisplay: none;\n\t}\n}"
  },
  {
    "path": "docs/desktop.ini",
    "content": "[ViewState]\nMode=\nVid=\nFolderType=Documents\n"
  },
  {
    "path": "docs/documentation/audio.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Audio | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Audio | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAudio\n</h1>\n\n<hr/>\n\n<p>\n\tThe audio system provides audio playback services.\n</p>\n\n<p>\n\tCurrently it only supports playing back audio from audio files, and from\n\t.ogg format audio files in particular.\n</p>\n\n<p>\n\tIn the future, the system will be enhanced to allow streaming audio, and\n\tpossibly to allow for more formats to be used.\n</p>\n\n<p>\n\tIf you want to easily play back sounds in your levels, check out the\n\t<a href=\"entities/sound.html\">Sound</a> entity. It also has a scripting API\n\toption, which is useful for playing back sound effects.\n</p>\n\n<p>\n\tIf you want to incorporate audio playback into the entities you are\n\tconstructing, you will find the <a href=\"components/audio.html\">Audio\n\tComponent</a> useful.\n</p>\n\n<h2>Key concepts</h2>\n\n<hr/>\n\n<h4 id=\"sound\">Sound</h4>\n\n<p>\n\tA sound is a <a href=\"framework/resource.html\">Resource</a>. It contains\n\taudio data loaded from an .ogg audio file.\n</p>\n\n<h4 id=\"source\">Source</h4>\n\n<p>\n\tA source will play back the audio contained in a Sound. It can be positioned\n\tin 3D space.\n</p>\n\n<h4 id=\"listener\">Listener</h4>\n\n<p>\n\tA listener is usually attached to the render view. It has a position and an\n\torientation.\n</p>\n\t\n<p>\n\tIt determines how the sources should sound like, relative to it, i.e. if a\n\tsound source is next to the listener, it will sound very loud, and if it is\n\tmoved to be very far from the listener, it will be very quiet.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t// TODO: implement\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\t// TODO: implement\n</p>\n\n<h2>Backends</h2>\n\n<hr/>\n\n<p>\n\tJust like <a href=\"physics.html\">Physics</a> and\n\t<a href=\"render.html\">Render</a>, the Audio system provides an\n\tinterface for swapping out the audio system backends. The possible\n\toptions are:\n</p>\n\n<h4>OpenAL</h4>\n\n<p>\n\tThis is the default Audio backend. It uses the OpenAL library to play back\n\taudio.\n</p>\n\n<h4>Spatial</h4>\n\n<p>\n\tAn experimental audio backend. Uses path tracing adapted from the primary\n\tsample space metropolis light transport algorithm. Very fancy, but also\n\tvery slow and broken. Might not even compile without some fixes.\n</p>\n\n<h4>Template</h4>\n\n<p>\n\tThe template for implementing further backends. Implements only stubs of the\n\tinternal API functions. Can be used if you don't want to use any audio.\n</p>\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/animation.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Animation Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Animation Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimation Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> plays\n\tback <a href=\"../render/animation.html\">animations</a>. More precisely, it\n\tgenerates pose matrices for the deformation of 3D models. It basically lets\n\tyou animate 3D models.\n</p>\n\n<p>\n\tWith this component you get 8 tracks to play back animations on. You also\n\tget an additional track for procedural animations.\n</p>\n\n<p>\n\tMultiple animations get added together. This can be used to animate\n\tparts of characters seperately.\n</p>\n\n<p>\n\tThe playback speed of animations can be changed. This is useful for movement\n\tanimations.\n</p>\n\n<p>\n\tYou can also set up weights for animations. For example, you could create a\n\tnodding animation for a character. Then you could play it back with a weight\n\tof 0.2 to get a slight nod, 0.5 to get a normal nod and 1.0 to get a very \n\tenthusiastic nod.\n</p>\n\n<p>\n\tThere are also fade-ins and fade-outs, which gradually increase or decrease\n\tthe animation weight. This could be used, for example, if you created a \n\twalking animation for a character, which you could fade out, to make the \n\tcharacter appear as if it is gradually coming to a stop.\n</p>\n\n\n<p>\n\tThere is some limited animation re-targeting &ndash; if the model for which\n\tyou created the animations has an armature which is similar enough for the\n\tmodel which you want to animate, you can play back the same animations ande\n\teverything will work. The bone names do need to be exactly the same in both\n\tmodels.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/animation.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_animation_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe only thing that you need to do before initializing this component? You\n\tneed to feed it a model. This has to be a \n\t<a href=\"../render/model.html#dynamic\">dynamic model</a>, since \n\t<a href=\"../render/model.html#static\">static models</a> have no \n\t<a href=\"../render.html#armature\">bone</a> data in them.\n</p>\n\n<code>\n\tComponent&lt;AnimationComponent&gt; component;<br/>\n\t<br/>\n\tcomponent.make();<br/>\n\tcomponent->SetModel(\"mongus\");<br/>\n\tcomponent->Init();\n</code>\n\n<p>\n\tThen you can begin playing some animations. You do need to make sure that \n\tthe animation that you want to play is already loaded, since I forgot to\n\tadd the code for them to be automatically streamed in. Anyway:\n</p>\n\n<code class=\"codeexample\">Animation::Find(\"mongus-run\")->Load();\n\t\ncomponent->PlayAnimation(\"mongus-run\",\n                         -1,\n                         1.0f,\n                         1.0f);\n</code>\n\n<p>\n\tIf you look closely, you will notice that we set the number of repeats to\n\t-1. This means that it will repeat for a very long time. It will stop \n\teventually, but it will take at least 2 years for an application running\n\tat 60 FPS.\n</p>\n\n<p>\n\tTo actually view the animation that you are playing, you need to attach it\n\tto a <a href=\"render.html\">RenderComponent</a>.\n</p>\n\n<code>\n\tComponent&lt;RenderComponent&gt; model;<br/>\n\t<br/>\n\tmodel.make();<br/>\n\tmodel->SetModel(\"mongus\");<br/>\n\tmodel->Init();<br/>\n\t<br/>\n\tmodel->SetArmature(component);\n</code>\n\n<p>\n\tThe possibilities of animation playback are limitless. Check the\n\t<a href=\"../../cppapi/classtram_1_1_animation_component.html\">API\n\tdocumentation</a> for more information.\n</p>\n\n\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on this.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/audio.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Audio Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Audio Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAudio Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper for <a href=\"../audio.html#source\">audio sources</a>.\n</p>\n\n<p>\n\tPass in the sound which it needs to play, the position of the audio source\n\tand it will play it. Very easy. Very simple.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/audio.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_audio_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tCurrently <a href=\"../audio.html#sound\">sounds</a> won't get automatically\n\tstreamed in via the <a href=\"../framework/async.html\">Async</a> system, so\n\tmake sure that the sound is already loaded before passing it to the\n\tcomponent:\n</p>\n\n<code>\n\t<span class=\"codespac\">Sound</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"my-sound\"</span>)-><span class=\"codefunc\">Load</span>();\n</code>\n\n<p>\n\tRemember to store the Component&lt;&gt; smart pointer in a class, static\n\tvariable, or otherwise ensure that it doesn't immediately get destructed.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">AudioComponent</span>&gt; audio;<br/>\n\t<br/>\n\taudio.<span class=\"codefunc\">make</span>();<br/>\n\taudio-><span class=\"codefunc\">SetLocation</span>({<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>});<br/>\n\taudio-><span class=\"codefunc\">SetSound</span>(<span class=\"codelit\">\"my-sound\"</span>);<br/>\n\taudio-><span class=\"codefunc\">SetRepeating</span>(<span class=\"codekeyw\">true</span>);<br/>\n\taudio-><span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\n</p>\n\n<p>\n\tAfter initialization, you can begin playback of the sound, pause it or stop\n\tit completely.\n</p>\n\n<code>\n\taudio-><span class=\"codefunc\">Play</span>();&nbsp;&nbsp;<span class=\"codecomm\">// Begins the playback of the sound</span><br/>\n\taudio-><span class=\"codefunc\">Pause</span>();&nbsp;<span class=\"codecomm\">// Pauses the playback</span><br/>\n\taudio-><span class=\"codefunc\">Stop</span>();&nbsp;&nbsp;<span class=\"codecomm\">// Cancels the playback</span>\n</code>\n\n<p>\n\tYou can also check the status of the playback.\n</p>\n\n<code>\n\t<span class=\"codecomm\">\n\t// Since we stopped the playback, this will<br/>\n\t// evaluate to false<br/>\n\t</span>\n\t<span class=\"codekeyw\">if</span> (audio-><span class=\"codefunc\">IsPlaying</span>()) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Audio source is playing.\"</span>);<br/>\n\t} <span class=\"codekeyw\">else</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Audio source has stopped.\"</span>);<br/>\n\t}\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\t<i>Not yet implemented.</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/controller.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Controller Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Controller Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tController Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> can be\n\tused for controlling players and NPCs and that sort of stuff.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/controller.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_controller_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tAll you really need to do to get started is just the creation of the \n\tcomponent. Also you need to feed in a pointer to the entity which will be\n\tcontrolled by this component. It will automatically update the position of\n\tit when it moves.\n</p>\n\n<code>\n\t<span class=\"codefunc\">Component</span>&lt;<span class=\"codefunc\">ControllerComponent</span>&gt; component;<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetParent</span>(<span class=\"codekeyw\">this</span>);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tAfter that, you can begin sending commands to the component. Check the\n\t<a href=\"../../cppapi/classtram_1_1_controller_component.html\">API \n\tdocumentation</a> to see what kinds of commands there are. You can also\n\tlook at the implementation of the <a href=\"player.html\">PlayerComponent</a>\n\tto see an example of the usage of the component.\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tNot done yet.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/light.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Light Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Light Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLight Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../render.html#light\">light</a>.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/light.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_light_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tIt's very simple, just pick the position of the light and its color. If you\n\twant to increase the brightness of the light, multiply the \n</p>\n\n<code>\n\t<span class=\"codefunc\">Component</span>&lt;<span class=\"codefunc\">LightComponent</span>&gt; component;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">const float</span> brightness = <span class=\"codelit\">2.0f</span>;<br/>\n\t<span class=\"codekeyw\">const vec3</span> color = {<span class=\"codelit\">0.38f</span>, <span class=\"codelit\">0.25f</span>, <span class=\"codelit\">0.31f</span>};<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetLocation</span>({<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>});<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetColor</span>(brightness * color);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tIf you want to turn the light from a point light into a spotlight, you can\n\tset its direction and exponent. The direction is a direction normal vector.\n\tThe exponent starts at 1.0 and increasing it narrows the spotlight's width.\n</p>\n\n\n<code>\n\tcomponent-&gt;<span class=\"codefunc\">SetDirection</span>(DIRECTION_FORWARD);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetExponent</span>(<span class=\"codelit\">16.0f</span>);\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it...\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/particle.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Particle Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Particle Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tParticle Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> allows\n\tthe creation of a particle system.\n</p>\n\n<p>\n\tThe API is still not finallized. It's possible to manually spawn in\n\tindividual particles, but this feature is still being worked on.\n</p>\n\n<p>\n\tIf you have any suggestions, consider\n\t<a href=\"https://github.com/racenis/tram-sdk/issues\">leaving a Github\n\tissue.</a>\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/sprite.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_particle_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it...\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/physics.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Physics Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Physics Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPhysics Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../physics.html#rigidbody\">rigidbody</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/physics.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_physics_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it... might be finished soon...\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/player.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Player Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Player Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlayer Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> can be\n\tused to translate <a href=\"../framework/ui.html\">UI</a> inputs into inputs for the\n\t<a href=\"controller.html\">ControllerComponent</a>\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/player.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_player_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tWorking.... working....\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/render.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Render Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Render Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRender Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../render.html#drawlistentry\"> draw list entry</a>.\n\tIt provides an easy to use interface by which it is possible to add a 3D\n\tmodel to the scene and to manipulate it in various ways.\n</p>\n\n<p>\n\tThis is the first component I created for the framework and the one I have\n\tbeen cooking for the longest. Hopefully it is also very good and very\n\tuseful. If you do not find it very useful, leave a\n\t<a href=\"https://github.com/racenis/tram-sdk/issues\">Github issue</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_render_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tThis one will probably the first that I work on. But still working on...\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/sprite.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Sprite Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Sprite Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSprite Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> displays\n\ta <a href=\"../render/sprite.html\">sprite</a>.\n</p>\n\n<p>\n\tIf the spritesheet contains multiple sprites, it's possible to play them as\n\tan animation. Very neat!\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/sprite.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_sprite_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tTo get started, construct the component, feed it a sprite and set its\n\tlocation. It might take a few moments for the sprite to be streamed in.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">SpriteComponent</span>&gt; component;<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-><span class=\"codefunc\">SetSprite</span>(<span class=\"codeclass\">Sprite</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"poland\"</span>));<br/>\n\tcomopennt-><span class=\"codefunc\">UpdateLocation</span>({<span class=\"codelit\">3.0f</span>, <span class=\"codelit\">1.2f</span>, <span class=\"codelit\">-1.0f</span>});<br/>\n\tcomponent-><span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tIf you want to play the spritesheet as an animation.\n</p>\n\n<code>\n\tcomponent-><span class=\"codefunc\">SetPlaySpeed</span>(<span class=\"codelit\">2</span>);<br/>\n\tcomponent-><span class=\"codefunc\">Play</span>();\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tEventually it will be finished, but might take some time.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/template.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Template Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Template Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTemplate Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\ttemplate. You can copy it to quickly create new components.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_template_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tYou probably don't want to use this component directly. Just copy the files\n\t<code>components/template.h</code> and <code>components/template.cpp</code>,\n\trename them to <code>mycomponent.h</code> and <code>mycomponent.cpp</code>\n\trespectively and inside of these new files replace each instance of \n\t<code>TemplateComponent</code> with <code>MyComponent</code>.\n</p>\n\n<p>\n\tOther frameworks have fancy commandline scripts to let you quickly create\n\tnew components. We do not have any fancy scripts. You will need to create\n\tyour components manually.\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tFor scripting there will be a scripting component. That you will be able to\n\tuse. But it's not fully implemented yet.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components/trigger.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Trigger Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Trigger Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTrigger Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../physics.html#trigger\">trigger</a>.\n</p>\n\n<p>\n\tThe trigger itself is triggered by rigidbodies moving into its volume. You\n\tcan add a callback, which will be fired when that happens, or you can have\n\tit store the collision data, so that you can pick it up and to whatever you\n\twant to do with it.\n</p>\n\n<p>\n\tThe volume of the trigger can be taken from a\n\t<a href=\"../physics/collisionmodel.html\">collision model</a>, or a\n\t<a href=\"../physics/collisionshape.html\">collision shape</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_trigger_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tYes, working. Very working.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/components.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Components | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Components | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tComponents\n</h1>\n\n<hr/>\n\n<p>\n\tThe framework comes packaged with some pre-made\n\t<a href=\"framework/entitycomponent.html\">EntityComponents</a>. Some of these\n\tcomponents are convenient wrappers around lower level systems, others have\n\tsome logic of their own.\n</p>\n\n<p>\n\tThese components are:\n</p>\n\n<ul>\n\t<li><a href=\"components/animation.html\">Animation</a></li>\n\t<p>\n\t\tAllows playback of <a href=\"render/animation.html\">Animations</a> for 3D\n\t\tmodels. Can be attached to a \n\t\t<a href=\"components/render.html\">RenderComponent</a>.\n\t</p>\n\t<li><a href=\"components/audio.html\">Audio</a></li>\n\t<p>\n\t\tA wrapper around an <a href=\"audio.html#source\">audio source</a>. Can be\n\t\tused to play back <a href=\"audio.html#sound\">sounds</a>.\n\t</p>\n\t<li><a href=\"components/controller.html\">Controller</a></li>\n\t<p>\n\t\tController for characters, i.e. player, NPCs. Accepts movement commands,\n\t\ti.e. walk, turn, jump, etc.\n\t</p>\n\t<li><a href=\"components/light.html\">Light</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"render.html#light\">light</a>. Used to\n\t\tilluminate the 3D scene.\n\t</p>\n\t<li><a href=\"components/particle.html\">Particle</a></li>\n\t<p>\n\t\tEnables the creation of particle effects, i.e. smoke, sparks, falling\n\t\tleaves, snow, etc.\n\t</p>\n\t<li><a href=\"components/physics.html\">Physics</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"physics.html#rigidbody\">rigidbody</a> in the\n\t\tphysics simulation.\n\t</p>\n\t<li><a href=\"components/player.html\">Player</a></li>\n\t<p>\n\t\tMaps input from the <a href=\"framework/ui.html\">UI</a> system into commands for a\n\t\t<a href=\"components/controller.html\">CharacterController</a>.\n\t</p>\n\t<li><a href=\"components/render.html\">Render</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"render.html#drawlistentry\">draw list\n\t\tentry</a>. Used to display 3D models in the scene.\n\t</p>\n\t<li><a href=\"components/sprite.html\">Sprite</a></li>\n\t<p>\n\t\tCan be used to display a flat 2D image in a 3D scene.\n\t</p>\n\t<li><a href=\"components/template.html\">Template</a></li>\n\t<p>\n\t\tBlank component, the source of which can be copied to be used as a base\n\t\tto create new components.\n\t</p>\n\t<li><a href=\"components/trigger.html\">Trigger</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"physics.html#trigger\">trigger</a>. Can fire off\n\t\tcallbacks when a <a href=\"physics.html#rigidbody\">rigidbody</a> enters\n\t\tits volume.\n\t</p>\n</ul>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/crate.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Crate | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Crate | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCrate\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be placed in a level. It doesn't do anything other than do\n\tnormal rigidbody stuff.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../render/model.html\">3D model</a>. \n</p>\n\n<h4>\n\tCollision Model | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/decoration.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDecoration\n</h1>\n\n<hr/>\n\n<p>\n\tDisplays a <a href=\"../render/model.html\">3D model</a> and optionally plays\n\tback an <a href=\"../render/animation.html\">animation</a> on it.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>Int32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of both the 3D model and the\n\t<a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h4>\n\tAnimation | <code>Name</code>\n</h4>\n\n<p>\n\tName of the animation that the model will play. If set to <code>none</code>,\n\tno animation will be played and the\n\t<a href=\"../components/animation.html\">AnimationComponent</a> won't even be\n\tcreated.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | FLAG_LOCKED</code>\n</h4>\n\n<p>\n\tThe decoration is locked and prevented from activating.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tSelect | <code>SELECT</code>\n</h4>\n\n<p>\n\tIf the decoration isn't locked, it will emit a\n\t<a href=\"../framework/event.html#selected\">Selected event</a>.\n</p>\n\n<h4>\n\tActivate Once | <code>ACTIVATE_ONCE</code>\n</h4>\n\n<p>\n\tIf the decoration isn't locked, it will fire the \n\t<a href=\"../framework/signal.html#activate\">Activate</a> and the\n\t<a href=\"../framework/signal.html#use\">Use</a> signals.\n</p>\n\n<h4>\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tLocks the decoration.\n</p>\n\n<h4>\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tUnlocks the decoration.\n</p>\n\n<h4>\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tIf an animation is set and is being played, it will be stopped. If it is\n\tstopped, it will be restarted.\n</p>\n\n<h4>\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tYeets the entity.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tIf an animation is set, it will be played back.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tIf an animation is being played back, it will be stopped.\n</p>\n\n<h4>\n\tSet Animation | <code>SET_ANIMATION</code>\n</h4>\n\n<p>\n\tSwitches which animation the component will play back. The data pointer of\n\tthe message needs to be set to a <a href=\"../framework/value.html\">Value</a>\n\twhich contains the <a href=\"../framework/uid.html\">name</a> of the animation\n\tto which the switch is happening.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated and isn't locked.\n</p>\n\n<h4>\n\tUse | <code>USE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated and isn't locked.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/light.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Light | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Light | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLight\n</h1>\n\n<hr/>\n\n<p>\n\tPlaces a light into the scene.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tColor | <code>Vec3</code>\n</h4>\n\n<p>\n\tThe color of the light.\n</p>\n\n<h4>\n\tDistance | <code>Float32</code>\n</h4>\n\n<p>\n\tMaximum distance, in meters, that the light is allowed to travel. Used for\n\tlightmapping optimiziations.\n</p>\n\n<h4>\n\tDirection | <code>Vec3</code>\n</h4>\n\n<p>\n\tThe direction of the light, if used as a spotlight. If you want a point\n\tlight, set this to a random unit vector like\n\t<code>{0,&nbsp;1,&nbsp;0}</code>.\n</p>\n\n<h4>\n\tExponent | <code>Float32</code>\n</h4>\n\n<p>\n\tSpotlight exponent. Higher values means narrower spot. Set this value to \n\t<code>1.0</code> to get a point light.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/marker.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Marker | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Marker | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMarker\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity doesm't do anything.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/player.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Player | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Player | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlayer\n</h1>\n\n<hr/>\n\n<p>\n\tAdds a player. The entity will accept keyboard inputs and move about.\n</p>\n\n<p>\n\tSince this entity type doesn't get registered and has no fields, it can't be\n\tplaced in the level editor. Instead, it should be created through code.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/sound.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSound\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be placed in a level to play back sounds.\n</p>\n\n<p>\n\tIt also has a constructor so that it can be created thorugh code. If created\n\tthis way, the entity will yeet itself once it finishes playing back the \n\tsound. This way you can play a sound effect and then forget it.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>Int32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tSound | <code>Name</code>\n</h4>\n\n<p>\n\tName of the sound that the entity will play back.\n</p>\n\n<h4>\n\tVolume | <code>Float32</code>\n</h4>\n\n<p>\n\tHow loud the sound will be. From 0.0 to 1.0.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | SOUND_LOOPING</code>\n</h4>\n\n<p>\n\tThe sound will loop after finishing.\n</p>\n\n<h4>\n\t<code>2 | SOUND_START_ON_LOAD</code>\n</h4>\n\n<p>\n\tThe sound will begin playback as soon as the entity is loaded. Useful for\n\tambient sort of environmental sounds\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tIf the sound is being played, it will be stopped. If it is stopped, it will \n\tstart again.\n</p>\n\n<h4>\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tThis yeets the entity.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tStarts playing back the sound.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tStops playing back the sound.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/staticwobj.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Static World Object | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Static World Object | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tStatic World Object\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity is used for worldspawns. To make parts of the level out of.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of both of the <a href=\"../render/model.html\">3D model</a> and the \n\t<a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h4>\n\tLightmap | <code>Name</code>\n</h4>\n\n<p>\n\tName of the lightmap material.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities/trigger.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Trigger | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Trigger | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTrigger\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be used to detect collisions with other entities.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>UInt32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tCollision Mask | <code>UInt32</code>\n</h4>\n\n<p>\n\tThe <a href=\"../physics.html#collisionmask\">collision mask</a> of the trigger.\n</p>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../physics/collisionmodel.html\">collision model</a>\n\tthat the trigger will use.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | TRIGGER_DISABLED</code>\n</h4>\n\n<p>\n\tThis will disable the trigger from being triggered.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tDisables the trigger.\n</p>\n\n<h4>\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tEnables the trigger.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired when an entity collides with the trigger volume.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entities.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Entities | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Entities | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntities\n</h1>\n\n<p>\n\tThe framework comes with some pre-made enitites. These are very nice, you\n\tshould try using them. If you want, you can extend them by subclassing them\n\tand building a new entity on top of them.\n</p>\n\n<ul>\n\t<li><a href=\"entities/crate.html\">Crate</a></li>\n\t<p>\n\t\tA crate is basically a\n\t\t<a href=\"components/render.html\">RenderComponent</a> and a \n\t\t<a href=\"components/physics.html\">PhysicsComponent</a> glued together.\n\t\tIt doesn't do anything special. Can be used for small clutter objects.\n\t</p>\n\t\n\t<li><a href=\"entities/decoration.html\">Decoration</a></li>\n\t<p>\n\t\tDecorations are meant to display dynamic models. They can have a\n\t\t<a href=\"components/physics.html\">PhysicsComponent</a> to be used as a\n\t\tcollider, but it won't participate in the dynamics simulation.\n\t</p>\t\n\t<p>\n\t\tThey also have a<a href=\"components/render.html\">RenderComponent</a> and\n\t\tan optional <a href=\"components/animation.html\">AnimationComponent</a>.\n\t</p>\n\t<li><a href=\"entities/light.html\">Light</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"components/light.html\">LightComponent</a>.\n\t\tCan be used for real-time illumination of dynamic objects and for\n\t\tpre-computed lightmaps.\n\t</p>\n\t<li><a href=\"entities/marker.html\">Marker</a></li>\n\t<p>\n\t\tA most basic entity. Has no components, doesn't do anything. It is only\n\t\tused for its transform. Can be used as a template to create further\n\t\tentity types on top of it.\n\t</p>\n\t<li><a href=\"entities/player.html\">Player</a></li>\n\t<p>\n\t\tA very basic entity that serves as a wrapper for a\n\t\t<a href=\"components/player.html\">PlayerComponent</a> and a \n\t\t<a href=\"components/controller.html\">ControllerComponent</a>, which are\n\t\tconnected together. Useful if you want the user of your application to\n\t\tbe able to walk around the scene.\n\t</p>\n\t<li><a href=\"entities/sound.html\">Sound</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"components/audio.html\">AudioComponent</a>.\n\t\tCan be used for environmental sounds, or if you just want to trigger a\n\t\tsound by a <a href=\"framework/signal.html\">Signal</a>.\n\t</p>\n\t<li><a href=\"entities/staticwobj.html\">Static World Object</a></li>\n\t<p>\n\t\tIt's meant for creating worldspawns.\n\t\t<a href=\"components/render.html\">RenderComponent</a> for the 3D model\n\t\tpart and <a href=\"components/physics.html\">PhysicsComponent</a> for the\n\t\tcollision. Can add lightmaps.\n\t</p>\n\t<li><a href=\"entities/trigger.html\">Trigger</a></li>\n\t<p>\n\t\tA wrapper for a <a href=\"components/trigger.html\">TriggerComponent</a>.\n\t\tWhen triggered, outputs <a href=\"framework/signal.html\">Signal</a>, so\n\t\tcan be used for logics and stuff.\n\t</p>\n</ul>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/entitydefinition.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Entity Definition | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Entity Definition | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntity Definition\n</h1>\n\n<hr/>\n\n<p>\n\tIt's the .entdef file in the data directory.\n</p>\n\n// TODO: document\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/camera.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Camera | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Camera | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCamera\n</h1>\n\n<hr/>\n\n<p>\n\tAll camera types basically do a bit of logic and then come up with a\n\tposition and a rotation. Then they pass them over to the Render system to\n\tand use them to set the View and pass them to the Audio system to set the\n\tlistener.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<h4>\n\tCamera Interface\n</h4>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/camera/camera.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_ext_1_1_camera_1_1_camera.html\">API documentation\n\tpage</a>.\n</p>\n\n<h4>\n\tFirst Person Camera\n</h4>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/camera/firstperson.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">API documentation\n\tpage</a>.\n</p>\n\n\n\n<p>\n\tHere's how to do a first person camera.\n</p>\n\n<code>\n\t// here will be our camera<br/>\n\tExt::Camera::FirstPersonCamera* camera = nullptr;<br/>\n\t<br/>\n\t// this will be our player<br/>\n\tEntity* player = Entity::Find(\"player\");<br/>\n\t<br/>\n\t// let's make a new camera<br/>\n\tcamera = new Ext::Camera::FirstPersonCamera;<br/>\n\t<br/>\n\t// this attaches the camera to the player<br/>\n\tcamera->SetFollowing(player);<br/>\n\t<br/>\n\t// this will allow rotation of the camera<br/>\n\t// by moving the mouse cursor<br/>\n\tcamera->SetMouselook(true);<br/>\n\t<br/>\n\t// this will rotate the player with the<br/>\n\t// camera. useful if player has a visible<br/>\n\t// 3D model<br/>\n\tcamera->SetRotateFollowing(true);<br/>\n\t<br/>\n\t// this will position the camera half a meter<br/>\n\t// above the player entity's middle point<br/>\n\tcamera->SetFollowingOffset({0.0f, 0.5f, 0.0f});<br/>\n\t<br/>\n\t// this turns on the camera<br/>\n\tcamera->SetActive();\n</code>\n\n<p>\n\tThere are other camera types, but they are sort of unfinished.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/kitchensink/animationtable.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../../favicon.gif\">\n\t\t<title>AnimationTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../../default.css\");\n\t\t\t\t\tAddCSS(\"../../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: AnimationTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimationTable\n</h1>\n\n<hr/>\n\n<p>\n\tThis is what is called a hierarchical animation blend space tree graph node\n\tautomata. It basically lets you define how an\n\t<a href=\"../../components/animation.html\">AnimationComponent</a> should\n\tswitch between animations, and which animations it can and which ones it\n\tcannot play back at the same time.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tState\n</h4>\n\n<p>\n\tWhen in a given state, the component will play back an animation. When the\n\tstate is switched, it will perform the configured transition, such as a\n\tfade-in or fade-out. \n</p>\n\n<h4>\n\tState space\n</h4>\n\n<p>\n\tThe state space holds a They are organized hierarchically, and higher state spaces can override lower state spaces with their state.\n</p>\n\n<p> \n\tFor example, a character could have a state space for torso and for legs,\n\tboth of which could be parented to a full body state space. It could then\n\tplay back animations on the torso and legs seperately, but sometimes it is\n\teasier to create an animation for the armature together, like when climbing\n\ta ladder, so then a state could be changed in the full body space and it\n\twould override the animations of torso and legs.\n</p>\n\n<h4>\n\tTransition\n</h4>\n\n<p>\n\tWhen a transition between two states occurs, the animations have to be\n\tswitched. A transition determines how this occurs. It allows to configure\n\tfade-ins, fade-outs and their durations.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tI still haven't finalized the API and debugged everything, so it's not \n\t\tfinished yet.\n\t</i>\n</p>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/kitchensink/soundtable.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../../favicon.gif\">\n\t\t<title>SoundTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../../default.css\");\n\t\t\t\t\tAddCSS(\"../../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: SoundTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSoundTable\n</h1>\n\n<hr/>\n\n<p>\n\tA sound table contains many-to-many mappings from a key to a name of a\n\tsound. This allows to associate sounds with a certain category.\n</p>\n\n<p>\n\tFor example, <a href=\"../kitchensink.html\">Button</a> entity has a\n\tsound table parameter. When it opens or close, it will look up the sounds\n\tmapped to the <code>SOUND_OPEN</code> and <code>SOUND_CLOSE</code> keys \n\trespectively. If it finds a sound that is mapped to a give key, it will play\n\tit back.\n</p>\n\n<p>\n\tSince there can be multiple sounds mapped to the same key, if there arises\n\tsuch a situation when a sound is being looked up and there are multiple \n\tsounds associated with the given key, a random sound that is mapped to said\n\tkey will be returned.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/kitchensink/soundtable.h</span>&gt;</code> <br/>\n\t<a href=\"../../../cppapi/classtram_1_1_ext_1_1_design_1_1_sound_table.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tVery simple API. It was supposed to be very simple, so it is such.\n</p>\n\n<code>\n\tSoundTable* table = SoundTable::Find(\"table\");<br/>\n\t<br/>\n\ttable->AddSound(SOUND_OPEN, \"open1\");<br/>\n\ttable->AddSound(SOUND_OPEN, \"open2\");<br/>\n\ttable->AddSound(SOUND_CLOSE, \"close1\");<br/>\n\t<br/>\n\t// this variable will be set to \"close1\"<br/>\n\tname_t sound = table->GetSound(SOUND_CLOSE);<br/>\n\t<br/>\n\t// this will play back either \"open1\" or \"open2\"<br/>\n\ttable->Play(SOUND_OPEN);\n</code>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/kitchensink.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Kitchensink | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Kitchensink | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tKitchensink\n</h1>\n\n<hr/>\n\n<p>\n\tThis is where I put all of the random stuff that I feel like a lot of users\n\tcould maybe not actually want to use.\n</p>\n\n<p>\n\tPutting this in an extension allows you to skip compiling this part of the\n\tframework.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/menu.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Menu | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Menu | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMenu\n</h1>\n\n<hr/>\n\n<p>\n\tThe menu system provides a menu dialog framework and implementations of a\n\tcouple of useful menus.\n</p>\n\n<h2>\n\tDebug Menu\n</h2>\n\n<hr/>\n\n<p>\n\tThe debug menu provides a way to view the list of all loaded worldcells, all\n\tloaded entities, select entities by mouse picking, view worldcell settings\n\tand change them, view entity settings, send messages to entities, emit\n\tevents, visualize all of the events and messages being sent through their\n\tqueues.\n</p>\n\n<p>\n\tBy default it is accessible by pressing the <code>~</code>, aka \n\t<code>`</code>, aka the tilde key.\n</p>\n\n<h2>\n\tSettings Menu\n</h2>\n\n<hr/>\n\n<p>\n\tThe settings menu provides a way to change various engine settings, such as\n\tFOV, key bindings, screen resolution, fullscreen mode, GUI scale and others.\n</p>\n\n<p>\n\tBy default it is accessible by pressing the <code>Esc</code> key and\n\tthen selecting <i>Settings</i> in the escape menu.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions/scripting.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tScripting\n</h1>\n\n<hr/>\n\n<p>\n\tThis extension contains the bindings for various scripting languages, and by\n\tvarious I mean Lua. We only have Lua.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/extensions.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Extensions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Extensions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tExtensions\n</h1>\n\n<p>\n\tExtensions are parts of the framework are optional parts of the framework.\n\tMost extensions are various useful tools, game mechanics, integrations with\n\tother services.\n</p>\n\n<p>\n\tCurrently available extensions are:\n</p>\n\n<ul>\n\t<li><a href=\"extensions/camera.html\">Camera</a></li>\n\t<p>\n\t\tThis extension contains implementations of first-person, third-person\n\t\tand other cameras for various viewpoints. They support effects like\n\t\ttilting, view bobbing and screen shakes.\n\t</p>\n\t<li><a href=\"extensions/kitchensink.html\">Kitchensink</a></li>\n\t<p>\n\t\tThis extension contains random game mechanics and other useful tools\n\t\tthat didn't fit in other extensions.\n\t</p>\n\t<li><a href=\"extensions/menu.html\">Menu</a></li>\n\t<p>\n\t\tThis extension contains a framework for creating menus, as well as\n\t\timplementation of a debugging menu, a settings menu and an escape/pause\n\t\tscreen menu.\n\t</p>\n\t<li><a href=\"extensions/scripting.html\">Scripting</a></li>\n\t<p>\n\t\tThis extension contains integrations with various scripting languages.\n\t\tCurently the only scripting language that is fully integrated is the Lua\n\t\tscripting language.\n\t</p>\n</ul>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/async.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Async | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Async | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAsync\n</h1>\n\n<hr/>\n\n<p>\n\tThe Async system lets you do stuff... asynchronously. On a separate\n\tworker thread. This meant that the main logic thread can be freed up from\n\tcertain computations and in general makes the framework go vroom vroom.\n</p>\n\n<p>\n\tCurrently the async system supports <a href=\"resource.html\">Resource</a>\n\tloading. In the future it will get some more functionality, but it's only \n\tresources for now.\n</p>\n\n<p>\n\tTo use it, you need to initialize the system. This will start up the worker\n\tthreads. The system needs to be updated in the main loop and then shut down.\n</p>\n\n<p>\n\tUnfortunately, it seems like multithreading still doesn't work in\n\twebassembly builds, so you will have to do resource loading entirely from\n\tthe main thread.\n</p>\n\n<h2>\n\tResource streaming\n</h2>\n\n<hr/>\n\n<p>\n\tLet's take the <a href=\"../render/model.html\">Model</a> resource as an example.\n\tIt is derived from the <a href=\"resource.html\">Resource</a> class and\n\timplements its API.\n</p>\n\n<p>\n\tMost of the time while loading the Model is spent retrieving it from the\n\tdisk and parsing it. All of the relevant logic is implemented in the\n\t<code>LoadFromDisk()</code> method. This method will be called from the\n\tworker thread.\n</p>\n\n<p>\n\tDue to a quirk in the OpenGL API, we need to perform all of the data uploads\n\tto the GPU from the main thread. The relevant logic for this is implemented \n\tin the <code>LoadFromMemory()</code> method.\n</p>\n\n<h3>\n\tExample\n</h3>\n\n<hr/>\n\n<center>\n\t<img src=\"asyncswimlane.gif\"/><br/>\n\t<i>\n\t\tThis is what happens when you call the SetModel() method on a \n\t\tRenderComponent and if the Model isn't loaded yet.\n\t</i>\n</center>\n\n<p>\n\tWhat happens when you assign a Model to a\n\t<a href=\"../components/render.html\">RenderComponent</a>?\n</p>\n\n<ol>\n\t<li>\n\t\tThe RenderComponent will check if the Model is loaded. If it is not, it\n\t\twill pass the Model to the Async system, which will add it to the disk\n\t\tloading\tqueue.\n\t</li>\n\t<li>\n\t\tThe worker thread will pop the Model from the disk loading queue and \n\t\twill call its <code>LoadFromDisk()</code> method. The method will load\n\t\tthe\t<code>.stmdl</code> or <code>.dymdl</code> file associated with the \n\t\tModel, parse it into binary format and build up an AABB tree. The worker\n\t\twill then add the resource to the memory loading queue.\n\t</li>\n\t<li>\n\t\tThe main thread will pop the Model from the memory loading queue and\n\t\twill call its <code>LoadFromMemory()</code> method. The method will pass\n\t\tthe binary model data to the <a href=\"../render.html\">Render</a> API,\n\t\twhich in turn will upload the model data to the GPU memory. The memory\n\t\tcontaining the binary data will then be free. Finally the Model will be\n\t\tadded to the finishing queue.\n\t</li>\n\t<li>\n\t\tThe main thread will pop the Model from the finishing queue. It will\n\t\tthen check which <a href=\"entitycomponent.html\">EntityComponent</a>\n\t\trequested the resource to be loaded. It will then notify our\n\t\tRenderComponent about the loaded resource.\n\t</li>\n\t<li>\n\t\tThe RenderComponent will then add the loaded 3D model to the scene. It\n\t\twill then be eligible to be rendered to the screen.\n\t</li>\n</ol>\n\n\t\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/async.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_async.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codekeyw\">const size_t</span> thread_count = <span class=\"codelit\">1</span>;<br/>\n\t<br/>\n\t<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">Init</span>(thread_count);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// the worker thread won't start on webassembly</br>\n\t&nbsp;&nbsp;&nbsp;&nbsp;// builds, so we just do that part on the<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;// main thread</span><br/>\n#<span class=\"codekeyw\">ifdef</span> __EMSCRIPTEN__<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">LoadResourcesFromDisk</span>();<br/>\n#<span class=\"codekeyw\">endif</span><br/>\n<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">LoadResourcesFromMemory</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">FinishResources</span>();<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">Yeet</span>();<br/><br/>\n</code>\n\n<p>\n\tIt is possible to request a resource to be loaded by calling the\n\t<code><span class=\"codeclass\">Async</span>::<span class=\"codefunc\">RequestResource</span>()</code> function, but a\n\tbetter way would be by using the\n\t<a href=\"resource.html#proxy\">ResourceProxy</a> smart pointer, which will\n\tnot only automatically request\ta resource to be loaded, but will also\n\tautomatically manage reference count.\n</p>\n\n<p>\n\tIf you want to create a progress bar which displays the process of resource\n\tloading, you can use <code><span class=\"codeclass\">Async</span>::<span class=\"codefunc\">GetWaitingResources</span>()</code> to get the number\n\tof resources being processed by the Async system.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/core.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Core | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Core | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCore\n</h1>\n\n<hr/>\n\n<p>\n\tThis is the main system of the framework. It keeps track of the main loop,\n\tprovides ID number generation services and keeps track of the framework\n\tversion.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tEach cycle of the main loop is called a frame. It is called that because\n\tduring each loop you render a single frame of graphics.\n</p>\n\n<h4>\n\tTick\n</h4>\n\n<p>\n\tThere are 60 ticks in a second. If you have a 60hz monitor and you have\n\tturned on vsync or a frame limiter,\tthen a tick will be the same as a frame.\n</p>\n\n<p>\n\tThis concept allows you to create applications as if they were always run\n\tat 60 frames per second.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/core.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_core.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tEvery application created with the framework needs to initialize and update\n\tthe core system.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Core</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Core</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n\n<p>\n\tThat was very simple.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">id_t</span> id = <span class=\"codefunc\">GenerateID</span>();<br/>\n\t<br/>\n\t<span class=\"codekeyw\">uint32_t</span> ticks = <span class=\"codefunc\">GetTick</span>();<br/>\n\t<br/>\n\t<span class=\"codekeyw\">double</span> time = <span class=\"codefunc\">GetTickTime</span>();<br/>\n\t<span class=\"codekeyw\">float</span> delta_time <span class=\"codefunc\">GetDeltaTime</span>();<br/>\n</code>\n\n<p>\n\tAfter the previous bit of code is executed:\n</p>\n\n<ul>\n\t<li>\n\t\tThe variable <i>id</i> will contain a new, unique ID number.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>ticks</i> will contain the number of ticks which have \n\t\telapsed since the initialization of the application.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>time</i> will contain the time, in seconds, that has\n\t\tpassed since the initialization of the application.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>delta_time</i> will contain the time, in seconds, that\n\t\thas passed between the start of this and the start of the previous\n\t\tframe.\n\t</li>\n</ul>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/entity.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Entity | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Entity | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntity\n</h1>\n\n<hr/>\n\n<p>\n\tEntities are one of the main concepts of the framework. An entity is a\n\tthing. Anything. A part of the level geometry, an interactable object,\n\ta pickup or an NPC.\n</p>\n\n<p>\n\tEntities are also the things that receive messages and the things that you\n\tplace down in the level editor.\n</p>\n\n<p>\n\tMost of your entities will probably be placed in \n\t<a href=\"worldcell.html\">WorldCells</a>, which are the basic level and\n\tstreaming units of your virtual world.\n</p>\n\n<p>\n\tRe-usable parts of the entity logic are usually placed into\n\t<a href=\"entitycomponent.html\">EntityComponents</a> and entities are then\n\tassembled out of them.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tID\n</h4>\n\n<p>\n\tEach entity gets its own unique ID number. You can assign an ID number to an\n\tentity, or the framework can generate one for you. No two entities can have\n\tthe same ID number, since then the framework will assume that one of the\n\tentitie is a copy and will yeet it.\n</p>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tEntities can be given names, but unlike an ID, these are optional. This is\n\talso how you will refer to specific entities most of the time.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tEach entity has a type. It determines its behavior and what kinds of\n\tproperties it has.\n</p>\n\n<h4>\n\tProperties\n</h4>\n\n<p>\n\tEach entity has properties. These can be numbers, strings, vectors or\n\tother kinds of types. An entity's properties can be edited in the level\n\teditor.\n</p>\n\n<p>\n\tThey are also called parameters, fields and entity data. Mostly because I\n\tkeep forgetting how this concept is called.\n</p>\n\n<h4>\n\tLocation/Rotation\n</h4>\n\n<p>\n\tEach entity gets a rotation and a location. This transform is used to \n\tdetermine in which WorldCell the entity is located in and when to load and\n\tunload it\n</p>\n\n<h4>\n\tLoading/Unloading\n</h4>\n\n<p>\n\tWhen an entity is constructed, either through code or from a record in a \n\tWorldCell file on disk, it starts out unloaded and has no EntityComponents\n\tattached to it. It just sits there, doing nothing.\n</p>\n\n<p>\n\tWhen an entity is loaded, either when its WorldCell is loaded or on some\n\tother event, it will construct its EntityComponents and pass its properties\n\tto them.\n</p>\n\n<p>\n\tWhen unloaded again, it will pack up and yeet all of its EntityComponents.\n\tThis saves on computational resources &ndash; it allows the framework to\n\tprocess only a small part of all of the entities at the same time.\n</p>\n\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entity.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_entity.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tIf you want to create your own entity type, a good place to start would be\n\tby copying the <a href=\"../entities/marker.html\">Marker</a> entity.\n</p>\n\n<p>\n\tThe other way would be to create a subclass of the Entity class and then\n\timplement all of its virtual methods. If you want the Entity to be loadable\n\tfrom a level file, you also need to add an entity type registration static\n\tmethod. Additionally, you could add the type to your project's \n\t<a href=\"../entitydefinition.html\">entity definition file</a>, so that the \n\tlevel editor and other utilities can process your entity type.\n</p>\n\n<p>\n\tTo interact with an entity, you first need to get a pointer to it. You can\n\tget the pointer by using the <code>Find()</code> static method, which can\n\tfind an entity either by its ID number, or by its name.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Entity</span>* entity1 = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"bingus\"</span>);<br/>\n\t<span class=\"codeclass\">Entity</span>* entity2 = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">42069</span>);<br/>\n\t<br/>\n\tif (!entity1) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Entity bingus doesn't exist!\"</span>);<br/>\n\t}\n</code>\n\n<p>\n\tIt is also possible to query its transform and to change it.\n</p>\n\n<code>\n\t<span class=\"codeclass\">vec3</span> position = entity-><span class=\"codefunc\">GetLocation</span>();<br/>\n\t<span class=\"codeclass\">quat</span> rotation = entity-><span class=\"codefunc\">GetRotation</span>();<br/>\n\t<br/>\n\tposition += <span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">1.0f</span>, <span class=\"codelit\">0.0f</span>);<br/>\n\t<br/>\n\tentity-><span class=\"codefunc\">SetLocation</span>(position);\n</code>\n\n<p>\n\tThere are a lot of other methods for the Entity class. Check the API\n\tdocumentation for them.\n</p>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tThe Lua API is basically the same as the C++ API.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">local</span> bingus = tram.entity.<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"bingus\"</span>)<br/>\n\t<br/>\n\t<span class=\"codekeyw\">if</span> bingus == <span class=\"codekeyw\">nil then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"Entity bingus doesn't exist!\"</span>)<br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codekeyw\">local</span> position = bingus:<span class=\"codefunc\">GetLocation</span>()<br/>\n\t<span class=\"codekeyw\">local</span> rotation = bingus:<span class=\"codefunc\">GetRotation</span>()<br/>\n\t<br/>\n\tposition = position + tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">1.0</span>, <span class=\"codelit\">0.0</span>)<br/>\n\t<br/>\n\tbingus:<span class=\"codefunc\">SetLocation</span>(position)\n</code>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/entitycomponent.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>EntityComponent | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: EntityComponent | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntityComponent\n</h1>\n\n<hr/>\n\n<p>\n\tEntityComponents are re-usable parts for assembling <a href=\"entity.html\">\n\tEntities</a>. Need to display a 3D model for an entity? Use a\n\tRenderComponent. Need to add entity to the physics simulation? Use a\n\tPhysicsComponent. Have an entity that simulates a frog and want to add frog\n\tbehavior to other entities? Refactor the frog code into a FrogComponent.\n</p>\n\n<p>\n\tMost components are created in a way that you can use them without attaching\n\tthem to an entity, so you can use a RenderComponent to render some\n\tUI elements, or a skybox or something like that, but in general they are\n\tused for constructing entities.\n</p>\n\n<p>\n\tComponents can have dependencies on <a href=\"resource.html\">Resources</a>.\n\tThis can be automatically tracked.\n</p>\n\n<p>\n\tUnlike entities, which can be repeatedly loaded and unloaded, once a \n\tcomponent is initialized, it can only be deleted. After that it will have to\n\tbe reconstructed and reinitialized.\n</p>\n\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entitycomponent.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_entity_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tComponents work something like this:\n</p>\n\n<ol>\n\t<li>\n\t\tThe component class object is constructed.\n\t</li>\n\t\n\t<li>\n\t\tThe component is fed parameters by calling methods on it.\n\t</li>\n\t<ul>\n\t\t<li>\n\t\t\tIf the parameter is a Resource and it is unloaded, then it gets\n\t\t\tadded to the Async loader queue.\n\t\t</li>\n\t\t<li>\n\t\t\tIn such a case, the component will remember that it is waiting\n\t\t\tfor a resource.\n\t\t</li>\n\t</ul>\n\t\t\n\t<li>\n\t\tThe component is initialized by calling the <code>Init()</code> method.\n\t</li>\n\t\n\t<li>\n\t\tIf the component is waiting on any resources, then it will just do \n\t\tnothing and will wait for them to be ready.\n\t</li>\n\t\n\t<li>\n\t\tThe component is started by either calling its own <code>Start()</code>\n\t\tmethod, if it isn't waiting on any resources, or by the\n\t\t<a href=\"asynv.html\">Async</a> system, once the resources on which the\n\t\tcomponent is waiting have been loaded.\n\t</li>\n\t\n\t<li>\n\t\tThe component does its component stuff. Some parameters may be changed\n\t\tby getting their methods called.\n\t</li>\n\t\n\t<li>\n\t\tThe component class gets destructed.\n\t</li>\n</ol>\n\n<p>\n\tNone of the constructors have any parameters &ndash; this is mostly due to\n\tthe fact that I feel like the initialization code for components with a lot\n\tof parameters, and therefore very long constructors looks incredibly awful.\n</p>\n\t\n<p>\n\tIf you want to create your own component, you can copy the header and\n\timplementation files of the \n\t<a href=\"../components/template.html\">TemplateComponent</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">TemplateComponent</span>&gt; template;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// constructs a new TemplateComponent</span><br/>\n\ttemplate.<span class=\"codefunc\">make(</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// initializes it</span><br/>\n\ttemplate-><span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// destructs it</span><br/>\n\ttemplate.<span class=\"codefunc\">clear</span>();<br/>\n</code>\n\n<p>\n\tThe <code>Component</code> smart pointer class ensures that it will be\n\tconstructed into the correct <a href = \"../templates/pool.html\">Pool</a>.\n\tThis is required for some components to work properly, like the\n\t<a href=\"../components/animation.html\">AnimationComponent</a>, which will\n\tnot get updated if it isn't constructed in the correct pool.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/event.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Events | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Events | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEvents\n</h1>\n\n<hr/>\n\n<p>\n\tEvents are the main form of decoupled data interchange in the framework.\n\tPeople with too much time will recognize it as the &laquo;Observer&raquo;\n\tdesign pattern.\n</p>\n\n<p>\n\tThe main emitter of events is the <a href=\"ui.html\">UI system</a>, which\n\temits an event for every keypress and every mousemove.\n</p>\n\n<p>\n\tThere's also the tick and frame events, which are emitted by the \n\t<a href=\"core.html\">Core system</a> for each tick and frame respectively.\n</p>\n\n<center>\n\t<img src=\"event.gif\"/><br/>\n\t<i>Potato frog is emitting some events and potato cat is aware of it, since\n\the has an Event Listener.</i>\n</center>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"event\">\n\tEvent\n</h4>\n\n<p>\n\tIt is like a thing that has happened. Each event has a type, a subtype and\n\tit contains information about its emitter and has some optional data that\n\tcan be attached to the event.\n</p>\n\n<h4 id=\"listener\">\n\tListener\n</h4>\n\n<p>\n\tIt allows the event system to keep track of all of the other systems,\n\tentities and components that are interested in an event.\n</p>\n\n<p>\n\tAfter a registrant has registered an event listener for a specific event\n\ttype, the event system will begin dispatching events of said type either to\n\ta callback function or to an event handler method of the registrant.\n</p>\n\n<h2>\n\tEvent types\n</h2>\n\n<hr/>\n\n<p>\n\tIn order to use an event, you need to know what that event is and what it\n\tdoes. What it means. What does it mean?\n</p>\n\n<p>\n\tThese are the events which I have created, which means that I can tell you\n\twhat they do. If you use someone else's events. you need to ask them what\n\tthey do. If you have created the events yourself, you will need to ask\n\tyourself what you meant by them. This might be difficult, even the greatest\n\tphilosophers have struggled to understand themselves.\n</p>\n\n<h4 id=\"keypress\">\n\tKeypress | <code>KEYPRESS</code>\n</h4>\n\n<p>\n\tEmitted every frame that a key is being held down. The subtype field of the\n\tevent contains a <a href=\"ui.html\">UI::KeyboardKey</a> enumeration number,\n\tdepending on which key was pressed.\n</p>\n\n<h4 id=\"keydown\">\n\tKeydown | <code>KEYDOWN</code>\n</h4>\n\n<p>\n\tSame as keypress, except that the event is emitted only on the frame on\n\twhich the key was pressed down for the first time.\n</p>\n\n<h4 id=\"keyup\">\n\tKeyup | <code>KEYUP</code>\n</h4>\n\n<p>\n\tSame as keypress, except that the event is emitted only when the key is\n\treleased.\n</p>\n\n<h4 id=\"keychar\">\n\tKeychar | <code>KEYCHAR</code>\n</h4>\n\n<p>\n\tUsed for text input. Emitted whenever a keyboard key used for text input is \n\tpressed. The subtype field contains a UTF-16 encoded codepoint of the text\n\tcharacter.\n</p>\n\n<h4 id=\"cursorpos\">\n\tCursorpos | <code>CURSORPOS</code>\n</h4>\n\n<p>\n\tEmitted whenever the mouse cursor pointer position changes. No data.\n</p>\n\n<h4 id=\"frame\">\n\tFrame | <code>FRAME</code>\n</h4>\n\n<p>\n\tEmitted every frame. It's very useful when you want to execute some code\n\tevery frame &ndash; simply register a listener with a callback function\n\tcontaining your code.\n</p>\n\t\n<h4 id=\"tick\">\n\tTick | <code>TICK</code>\n</h4>\n\n<p>\n\tVery similar to the frame event, the main difference being that this event\n\tis independent of them frame rate &ndash; every second exactly 60 tick\n\tevents will be emitted.\n</p>\n\n\n<h4 id=\"selected\">\n\tSelected | <code>SELECTED</code>\n</h4>\n\n<p>\n\tEmitted by entities which are selected. Data pointer points to a \n\t<a href=\"value.html\">Value</a> which contains a name, which represents the\n\ttype of the entity. This event can be used for displaying information\n\tabout the selected entity, i.e. actions which can be performed on the\n\tentity.\n</p>\n\n<h4 id=\"lookat\">\n\tLook at | <code>LOOK-AT</code>\n</h4>\n\n<p>\n\tEmitted by entities which are looking at something. Data pointer points to\n\ta <a href=\"value.html\">Value</a> which contains a quaternion with the look\n\tdirection of the entity.\n</p>\n\n\n<h4 id=\"lastevent\">\n\tLast event | <code>LAST_EVENT</code>\n</h4>\n\n<p>\n\tThis is not actually an event.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/event.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_event.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tLet's emit our own event!\n</p>\n\n<code>\n\t<span class=\"codekeyw\">const name_t</span> m_type = <span class=\"codelit\">\"mongus\"</span>;<br/>\n\t<br/>\n\t<span class=\"codeclass\">Event</span> event;<br/>\n\t<br/>\n\tevent.type = <span class=\"codeclass\">Event</span>::SELECTED;<br/>\n    event.subtype = <span class=\"codelit\">420</span>;<br/>\n    event.poster_id = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>)-><span class=\"codefunc\">GetID</span>();<br/>\n    <br/>\n\tevent.data = <span class=\"codeclass\">Event</span>::<span class=\"codefunc\">AllocateData</span>&lt;<span class=\"codeclass\">Value</span>&gt;(m_type);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Event</span>::<span class=\"codefunc\">Post</span>(event);\n</code>\n\n<p>\n\tThe <code>Event::AllocateData()</code> static method allocates a bit of memory for use with the\n\tevent data pointer. This allocated memory gets automatically released when\n\tall of the emitted events have been dispatched.\n</p>\n\n<p>\n\tThere are the <code>Event::AddListener()</code> and the\n\t<code>Event::RemoveListener()</code> static methods to add and remove event\n\tlisteners respectively, but there is also a smart pointer type which will\n\tautomatically remove the listener when deleted.\n</p>\n\n<code>\n\t<span class=\"codeclass\">EventListener</span> keypress;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// creates an event listener</span><br/>\n\tkeypress.<span class=\"codefunc\">make</span>(<span class=\"codeclass\">Event</span>::KEYPRESS, <span class=\"codekeyw\">this</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// removes an event listener</span><br/>\n\tkeypress.<span class=\"codefunc\">clear</span>();\n</code>\n\n<p>\n\tIf you want to, you can also create new event types.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">event_t</span> frog_event = <span class=\"codeclass\">Event</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-event\"</span>);\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tEmitting an event is very similar to how it is done with the C++ API. The\n\tmain difference is that we can't attach arbitrary data to the event, instead\n\twe are limited to floating point numbers, integers and names, which is the\n\tsame limitation as with <a href=\"signal.html\">Signals</a>.\n</p>\n\n<code>\n\tevent = {}<br/>\n\tevent.type = tram.event.<span class=\"codefunc\">GetType</span>(<span class=\"codelit\">\"my_fancy_event\"</span>)<br/>\n\tevent.subtype = <span class=\"codelit\">420</span><br/>\n\tevent.poster = tram.entity.<span class=\"codefunc\">Find</span>(mongus):<span class=\"codefunc\">GetID</span>()<br/>\n\tevent.data = <span class=\"codelit\">\"mongus\"</span><br/>\n\t<br/>\n\ttram.event.<span class=\"codefunc\">Post</span>(event)\n</code>\n\n<p>\n\tRegistering events and adding event listeners is also similar.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">local</span> frog_event = tram.event.<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-event\"</span>)<br/>\n\t<br/>\n\ttram.event.<span class=\"codefunc\">AddListener</span>(frog_event, <span class=\"codekeyw\">function</span>(event)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;type_name = tram.event.<span class=\"codefunc\">GetName</span>(event.type)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;subtype = event.subtype<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;poster = tram.entity.<span class=\"codefunc\">Find</span>(event.poster)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;data = event.data<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"Event received:\"</span>,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type_name,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subtype,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poster:<span class=\"codefunc\">GetName</span>(),<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data)<br/>\n\t<span class=\"codekeyw\">end</span>)<br/>\n</code>\n\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/file.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>File | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: File | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFile\n</h1>\n\n<hr/>\n\n<p>\n\tThis is a file abstraction that I made. I made it because the filestream of\n\tthe C++ standard library, altough possesing a very <i>je ne sais quoi</i> \n\tinterface, is way too slow.\n</p>\n\n<p>\n\tCurrently it can only be used to load text files and parse them from disk.\n</p>\n\n<p>\n\tI will probably add some more stuff to it in the future, like accessing\n\tfiles over HTTP instead of just from disk, or maybe loading them from .zip\n\tfiles.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/file.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_file.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThis is how you can parse in some text files.\n</p>\n\n<code>\n\t<span class=\"codeclass\">File</span> file(<span class=\"codelit\">\"my-text-file.txt\"</span>, MODE_READ);<br/>\n\t<br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"num1: %f\\n\"</span>, file.<span class=\"codefunc\">read_float32</span>());<br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"num2: %i\\n\"</span>, file.<span class=\"codefunc\">read_int32</span>());<br/>\n\t<br/>\n\t<span class=\"codecomm\">// read until end of file</span><br/>\n\t<span class=\"codekeyw\">while</span> (file.<span class=\"codefunc\">is_continue</span>()) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codekeyw\">\"%s\\n\"</span>, file.<span class=\"codefunc\">read_name</span>());<br/>\n\t}\n</code>\n\n<p>\n\tCheck <code>render/model.cpp</code> and <code>render/sprite.cpp</code> for\n\tmore examples of how you can use this.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/graph.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Graph | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Graph | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tGraph\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/gui.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>GUI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: GUI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tGUI\n</h1>\n\n<hr/>\n\n<p>\n\tThe GUI system provides GUI widgets.\n</p>\n\n<p>\n\tUnlike inferior GUI systems, which use objects (Win32, etc.) or classes \n\t(Java Swing, etc.), this GUI system is immediate mode. Which means that \n\tinstead of creating an object, you just call a function once per frame.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tWidget\n</h4>\n\n<p>\n\tGUI element, i.e. buttons, text boxes, checkmarks, radio buttons, etc.\n</p>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tFrames are used to position widgets. They are arranged in a stack. When you\n\tpush a frame, all of the consequent widgets will be drawn inside that frame.\n\tAfter you are done with a frame, you need to pop it from the frame stack.\n</p>\n\n<h4>\n\tImmediate mode\n</h4>\n\n<p>\n\tThis basically means that you call function instead of creating objects to\n\tmanage GUI widgets. For example, the function for creating a button is\n\t<code>GUI::Button()</code>. Calling this function will render a button on\n\tthe screen. This function returns the value <code>true</code> if it has been\n\tclicked on.\n</p>\n\n<h2>\n\tPushing frames\n</h2>\n\n<hr/>\n\n<p>\n\tFrames can be created using absolute coordinates, or pushed relative to the\n\tunderlying frame. For example, pushing frame 100 pixels from\n\t<code>FRAME_TOP</code> will create a frame with the topmost 100 pixel rows\n\tfrom underlying frame. Switching it to <code>FRAME_TOP_INV</code> will skip\n\tthe topmost 100 pixel rows and select everything below it.\n</p>\n\n<center>\n\t<img src=\"guiframe.gif\"/><br/>\n\t<i>This is how we push the frames.</i>\n</center>\n\n<p>\n\tVery simple, very easy, very nice.\n</p>\n\n<h2>\n\tFonts\n</h2>\n\n<hr/>\n\n<p>\n\tFonts are basically just sprites that have been registered\n</p>\n\n<p>\n\tFor each character that is rendered, its character code in the encoding is\n\tused as an index to select a frame from the spritesheet.\n</p>\n\n<p>\n\tThe fonts can be used to draw text. They are also used for widgets\n\tthemselves.\n</p>\n\n<p>\n\tIf you want to use some pre-made widget and text fonts, then you can use the\n\t<a href=\"../extensions/menu.html\">Menu extension</a>. It contains some fonts\n\tthat you can use.\n</p>\n\n<h2>\n\tWidgets\n</h2>\n\n<hr/>\n\n<h4>\n\tGlyph\n</h4>\n\n<p>\n\tDraws a single glyph from the font spritesheet.\n</p>\n\n<h4>\n\tText\n</h4>\n\n<p>\n\tDraws some text.\n</p>\n\n<h4>\n\tButton\n</h4>\n\n<p>\n\tDraws a clickable button. The button function returns true if it has been\n\tclicked.\n</p>\n\n<h4>\n\tRadio button\n</h4>\n\n<p>\n\tAllows selection between several exclusive choices. The choices are\n\trepresented by an index.\n</p>\n\n<h4>\n\tCheckbox\n</h4>\n\n<p>\n\tAllows a boolean yes/no type of selection.\n</p>\n\n<h4>\n\tSlider\n</h4>\n\n<p>\n\tAllows selecting a floating point value by dragging a slider.\n</p>\n\n<h4>\n\tTextbox\n</h4>\n\n<p>\n\tAllows text input.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/gui.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_g_u_i.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe GUI system needs the <a href=\"../render.html\">Render</a> and the\n\t<a href=\"ui.html\">UI</a> systems to be initialized before being initialized\n\titself.\n</p>\n\n<code>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go here</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tPushing frames is easy, but you need to remember to pop them afterwards.\n</p>\n\n<code>\n<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_LEFT, <span class=\"codelit\">150</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go in here</span><br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_LEFT_INV, <span class=\"codelit\">150</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_INSET, <span class=\"codelit\">10</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go in here</span><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<br/>\n</code>\n\n<p>\n\tHere's how to use the various widgets.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codekeyw\">enum</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ICON_FROG,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ICON_TOILET<br/>\n\t};<br/>\n\t<br/>\n\t<span class=\"codecomm\">// registering a new font</span><br/>\n\t<span class=\"codeclass\">Sprite</span>* icon_sprite = <span class=\"codeclass\">Sprite</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"font-icon\"</span>);\n\t<span class=\"codekeyw\">font_t</span> FONT_ICON = <span class=\"codefunc\">RegisterFont</span>(icon_sprite);<br/>\n<br/>\n\t<span class=\"codecomm\">// drawing a glyph from a font</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Glyph</span>(FONT_ICON, ICON_FROG);<br/>\n<br/>\n\t<span class=\"codecomm\">// drawing some text</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Text</span>(FONT_BOLD, <span class=\"codelit\">\"Hello, world!\"</span>, TEXT_LEFT);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// buttons</span><br/>\n\t<span class=\"codekeyw\">if</span> (<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Button</span>(<span class=\"codelit\">\"Click here!\"</span>)) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Button clicked!\\n\"</span>);<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">enum</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_NONE,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_A,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_B<br/>\n\t};<br/>\n\t<br/>\n\t<span class=\"codekeyw\">uint32_t</span> selected = CHOICE_NONE;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// radio buttons</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">RadioButton</span>(CHOICE_A, selected, <span class=\"codelit\">\"Choice A\"</span>);<br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">RadioButton</span>(CHOICE_B, selected, <span class=\"codelit\">\"Choice B\"</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">bool</span> checked = <span class=\"codelit\">false</span>;\n\t<br/><br/>\n\t<span class=\"codecomm\">// checkbox</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">CheckBox</span>(checked, <span class=\"codelit\">\"Check to select.\"</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">float</span> value = <span class=\"codelit\">0.0f</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// slider</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Slider</span>(value);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">const size_t</span> text_length = <span class=\"codelit\">100</span>;<br/>\n\t<span class=\"codekeyw\">static char</span> text[text_length] = <span class=\"codelit\">\"hello!\"</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// textbox</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">TextBox</span>(text, text_length);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// new line</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">NewLine</span>(LINE_NORMAL);<br/>\n\t<br/>\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tNot yet implemented.\n\t</i>\n</p>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/language.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Language | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Language | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLanguage\n</h1>\n\n<hr/>\n\n<p>\n\tThe language system allows for localization of text.\n</p>\n\n\n<p>\n\tUTF-16 support is planned, but currently the only supported text encoding is\n\tLatin&nbsp;7/Windows&nbsp;1257. It supports these languages:\n</p>\n\n<ul>\n\t<li>Estonian</li>\n\t<li>Latvian</li>\n\t<li>Lithuanian</li>\n\t<li>Finnish</li>\n\t<li>English</li>\n\t<li>German</li>\n\t<li>Polish</li>\n\t<li>Slovene</li>\n\t<li>Norwegian</li>\n\t<li><font size=\"1\">Swedish</font></li>\n\t<li><font size=\"1\">Danish</font></li>\n</ul>\n\n<h2>\n\tFile format\n</h2>\n\n<hr/>\n\n<p>\n\tCurently the format has no header. It consists of lines, they start with the\n\tname of the string, a space and then the rest of the line is the string.\n</p>\n\n<p>\n\tExample.\n</p>\n\t\n<code>\n\tmongus-ask Hello! Where is Mongus?<br/>\n\tmongus-answer Very busy. Come back later!\n</code>\n\n<p>\n\tThe language files are stored in the <code>/data/</code> directory, the file\n\textension is <code>.lang</code>.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/language.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_language.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// loading a language file</span><br/>\n\t<span class=\"codeclass\">Language</span>::<span class=\"codefunc\">Load</span>(<span class=\"codelit\">\"english\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// accessing a string</span><br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"%s\\n\"</span>, <span class=\"codeclass\">Language</span>::<span class=\"codefunc\">Get</span>(<span class=\"codelit\">\"hello\"</span>));\n</code>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/loader.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Loader | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Loader | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLoader\n</h1>\n\n<hr/>\n\n<p>\n\tThe loader is supposed to help with automatically loading and unloading\n\t<a href=\"worldcell.html\">WorldCells</a>. Take a look at the\n\t<a href=\"../entities/player.html\">Player</a> entity to see how to use them.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/logging.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Logging | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Logging | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLogging\n</h1>\n\n<hr/>\n\n<p>\n\tThe logging system provides logging.\n</p>\n\n<p>\n\tCurrently all logs are just dumped to standard output. In the future I'll \n\tadd in some more logging stuff, like saving logs to a file.\n</p>\n\n<p>\n\tIt's possible to assign the system from which the logging statement\n\toriginates, as well as the logging statements severity. Logs then can be\n\tfiltered based on the system and severity.\n</p>\n\n<h2>\n\tSeverities\n</h2>\n\n<hr/>\n\n<h4>\n\tInfo | SEVERITY_INFO\n</h4>\n\n<p>\n\tFor very verbose debugging purposes. Useful to dump anything and everything.\n\tFiltered out by default.\n</p>\n\n<h4>\n\tWarning | SEVERITY_WARNING\n</h4>\n\n<p>\n\tFor things that should be looked at, such as the use of deprecated\n\tfunctionality, missing files and such.\n</p>\n\n<h4>\n\tError | SEVERITY_ERROR\n</h4>\n\n<p>\n\tFor things that are ungood, but can be recovered from, such as errors with\n\tfile formatting, incorrect usage of functionality and such.\n</p>\n\n<h4>\n\tDoubleplus Ungood Error | SEVERITY_CRITICAL_ERROR\n</h4>\n\n<p>\n\tFor errors that can't be recovered from. Useful to log some final data\n\tbefore aborting the application.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/logging.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/logging_8h.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// filter out everything coming from the Platform</span><br/>\n\t<span class=\"codecomm\">// system that has a severity which is lower than</span><br/>\n\t<span class=\"codecomm\">// error, i.e. infos and warnings.</span><br/>\n\t<span class=\"codefunc\">SetSystemLoggingSeverity</span>(<span class=\"codeclass\">System</span>::SYSTEM_PLATFORM,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEVERITY_ERROR);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">float</span> number = <span class=\"codelit\">420.0f</span>;<br/>\n\t<span class=\"codekeyw\">const char</span>* string = <span class=\"codelit\">\"mongus\"</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// will log: mongus has 420 bananas</span><br/>\n\t<span class=\"codefunc\">Log</span>(<span class=\"codelit\">\"{} has {} bananas.\"</span>, number, string);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// will log: hi!</span><br/>\n\t<span class=\"codecomm\">// but due to our filtering settings this will</span><br/>\n\t/<span class=\"codecomm\">/ be filtered out</span><br/>\n\t<span class=\"codefunc\">Log</span>(<span class=\"codeclass\">System</span>::SYSTEM_PLATFORM, SEVERITY_INFO, <span class=\"codelit\">\"hi!\"</span>);<br/>\n</code>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/math.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Math | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Math | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMath\n</h1>\n\n<hr/>\n\n<p>\n\tThis part of the framework contains math stuff. Since we use the glm library,\n\twe don't really need to create any of our own math types, but I alisased\n\tthe vector and matrix types into the <code>tram</code> namespace in order to\n\tincrease the readability of the source code.\n</p>\n\n<p>\n\tThere's also a couple of constants, which have to do with the coordinate\n\tsystem that we're using, i.e. <code>DIRECTION_FORWARD</code>,\n\t<code>DIRECTION_SIDE</code> and <code>DIRECTION_UP</code>.\n</p>\n\n<p>\n\tOther than that, this part of the framework contains a couple of random math\n\tfunctions which the glm library doesn't have. At least in C++ part of the\n\tframework.\n</p>\n\n<p>\n\tSince glm is a C++ only library, I re-implemented some of the vector types\n\tin Lua, so that they can be used for scripting.\n</p>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tCreating a vector and operations on a vector\n</p>\n\n<code>\n\tvector = tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">420.0</span>, <span class=\"codelit\">-42.0</span>, <span class=\"codelit\">4.20</span>)<br/>\n\t<br/>\n\tvector = vector + tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">69.0</span>, <span class=\"codelit\">-69.0</span>, <span class=\"codelit\">6.9</span>)<br/>\n\tvector = vector + <span class=\"codelit\">69.0</span><br/>\n\t<br/>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"My vector:\"</span>, vector)\n</code>\n\n<p>\n\tCreating a quaternion from euler angles and operations on it\n</p>\n\n<code>\n\trotation = tram.math.<span class=\"codefunc\">quat</span>(vector)<br/>\n\t<br/>\n\trotation = rotation * rotation\n</code>\n\n<p>\n\tRotating a vector by a quaternion\n</p>\n\n<code>\n\tvector = rotation * vector\n</code>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/message.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Messages | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Messages | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMessages\n</h1>\n\n<hr/>\n\n<p>\n\tMessages are the main way <a href=\"entity.html\">entities</a> communicate\n\tamongst themselves.\n</p>\n\n<p>\n\tThey allow for greater decoupling. Entities don't have to know about each\n\tother's capabilites or any other characteristics, they only need to know\n\tabout the types of messages.\n</p>\n\n<p>\n\tTo allow effective communication between enities, we only need to define\n\twhat a certain message type means. For this purpose the framework includes\n\tmany different and useful message types with predefined meanings.\n</p>\n\n<center>\n\t<img src=\"message.gif\"/><br/>\n\t<i>Potato cat is sending potato frog a Message.</i>\n</center>\n\n<h2>\n\tMessage types\n</h2>\n\n<hr/>\n\n<h4 id=\"none\">\n\tNone | <code>NONE</code>\n</h4>\n\n<p>\n\tDummy message type, doesn't mean anything.\n</p>\n\n<h4 id=\"ping\">\n\tPing | <code>PING</code>\n</h4>\n\n<p>\n\tGeneric message type. Can be used to probe entities. When pinged, certain\n\tentities will emit an event, or print text to console.\n</p>\n\n<h4 id=\"movepickup\">\n\tMove pick up | <code>MOVE_PICK_UP</code>\n</h4>\n\n<p>\n\tWas used to create crate stacking mechanics for immersive sims. Not used\n\tanymore, since I added better techniques for the coordination of crate\n\tstacking.\n</p>\n\n<h4 id=\"open\">\n\tOpen | <code>OPEN</code>\n</h4>\n\n<p>\n\tUsed to tell doors and similar entities to open. More generally, could be\n\tused for entities with two distinct states to assume the non-default state.\n</p>\n\n<h4 id=\"close\">\n\tClose | <code>CLOSE</code>\n</h4>\n\n<p>\n\tUsed to tell doors and similar entities to close. More generally, could be\n\tused for entities with two distinct states to assume the default state.\n</p>\n\n<h4 id=\"lock\">\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tUsed to tell doors and other entities with some kind of opening and closing\n\tmechanism to stop opening. More generically could be used to tell enitities\n\tto ignore certain inputs, such as the activation messages.\n</p>\n\n<h4 id=\"unlock\">\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tSimilar to locking message, but in reverse.\n</p>\n\n<h4 id=\"toggle\">\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tSimilar to open and close messages. Used to tell entities to toggle their\n\tstate, that is, if closed, to open, or if open, to close.\n</p>\n\n<h4 id=\"kill\">\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tUsed to tell entities to yeet themselves.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger | <code>TRIGGER</code>\n</h4>\n\n<p>\n\tUsed to pass an arbitrary message to an entity. The message data field will\n\tthen contain a pointer to a <a href=\"value.html\">Value</a>, usually with \n\tthe type of <a href=\"uid.html\">name</a>.\n</p>\n\n<p>\n\tFor example, <a href=\"../extensions/kitchensink.html\">Quests</a> from the\n\tkitchensink extension will create a quest entity, so that they can receive\n\tmessages from <a href=\"signal.html\">Signals</a>. Since quests have triggers,\n\tthis message is used to trigger them.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tSimilar to open message, but used for entities that have some kind of\n\tcontinuos action. For example, the\n\t<a href=\"../entities/sound.html\">Sound</a> entity uses this message to\n\tbegin playback of its associated sound.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tThis type is the counterpart to the start message. It tells entities to\n\tstop their action. For example, the\n\t<a href=\"../entities/decoration.html\">Decoration</a> entity uses this \n\tmessage to stop playing its animation, if it has one.\n</p>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tSent every <a href=\"core.html\">tick</a> from an agentic entity. Generally \n\tmeant to be used when a player presses the keyboard key associated with the \n\t<a href=\"ui.html\">Use</a> keyboard action while facing an entity.\n</p>\n\n<h4>\n\tActivate Once | <code>ACTIVATE_ONCE</code>\n</h4>\n\n<p>\n\tSimilar to Activate message, but meant to be sent only for the first tick of\n\tthe activation.\n</p>\n\n<h4>\n\tSelect | <code>SELECT</code>\n</h4>\n\n<p>\n\tUsed to tell an entity that it is being selected. This could be when a\n\tplayer is facing in the direction of the entity, or when the player has\n\tplaced the mouse cursor over said entity.\n</p>\n\n<p>\n\tIn response, most entities will emit a <a href=\"event.html\">Selected</a>\n\tevent.\n</p>\n\n<h4>\n\tSet Progress | <code>SET_PROGRESS</code>\n</h4>\n\n<p>\n\tUsed to set the progress of the action that the entity is performing. The\n\tdata pointer of the message should be set to a Value. Usually it will be a\n\t<a href=\"type.html\">Float32</a> value in the range from 0.0f to 1.0f. \n</p>\n\n<p>\n\tFor example, the \n\t<a href=\"../extensions/kitchensink/button.html\">Button</a> entity will use\n\tit to set its opening/closing state. A value of 0.0 will close it\n\tcompletely, a value of 1.0 will open it completely and a value of 0.5 will\n\tset it to being half-open.\n</p>\n\n<h4>\n\tSet Animation | <code>SET_ANIMATION</code>\n</h4>\n\n<p>\n\tUsed to set the animation of an entity. The data pointer will then be set\n\tto a Value with the type of name. The name will be the name of the \n\tanimation to which this entity should switch.\n</p>\n\n<h4>\n\tLast Mesasge | <code>LAST_MESSAGE</code>\n</h4>\n\n<p>\n\tNot actually a message type.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/message.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_message.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe API for message sending is nearly identical to that of the \n\t<a href=\"event.html\">Event</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Message</span> msg;<br/>\n\t<br/>\n\tmsg.type = <span class=\"codeclass\">Message</span>::PING;<br/>\n\tmsg.sender = <span class=\"codekeyw\">this</span>-><span class=\"codefunc\">GetID</span>();<br/>\n\tmsg.receiver = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>)-><span class=\"codefunc\">GetID</span>();<br/>\n\tmsg.data = <span class=\"codeclass\">Message</span>::<span class=\"codefunc\">AllocateData</span>&lt;<span class=\"codeclass\">Value</span>&gt;(<span class=\"codelit\">420</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this will ping mongus</span><br/>\n\t<span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Send</span>(msg);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// we can also delay the message, pinging</span><br/>\n\t<span class=\"codecomm\">// mongus 69 seconds in the future</span><br/>\n\tmsg.data = <span class=\"codekeyw\">nullptr</span>;<br/>\n\t<span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Send</span>(msg, <span class=\"codelit\">69.0f</span>);\n</code>\n\n<p>\n\tThe <code>Message::AllocateData()</code> static method will allocate memory\n\tfor the message's data. This memory will get automatically released after\n\tall of the messages get dispatched.\n</p>\n\n<p>\n\tUnfortunately, due to certain limitations, this allocation works only for\n\tmessages that get sent without a delay. This will be remedied in the future.\n</p>\n\n<p>\n\tJust like with events, we can register our own message types.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">message_t</span> type = <span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-message\"</span>);<br/>\n\t<br/>\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tEssentially the same as in C++.\n</p>\n\n<code>\n\tmsg = {}<br/>\n\t<br/>\n\tmsg.type = tram.message.PING<br/>\n\tmsg.sender = <span class=\"codelit\">0</span><br/>\n\tmsg.receiver = tram.entity.<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>):<span class=\"codefunc\">GetID</span>()<br/>\n\tmsg.data = <span class=\"codelit\">420</span><br/>\n\t<br/>\n\ttram.message.<span class=\"codefunc\">Send</span>(msg, <span class=\"codelit\">69.0</span>)\n</code>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/navmesh.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Navmesh | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Navmesh | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tNavmesh\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/path.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Path | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Path | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPath\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/resource.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Resources | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Resources | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tResources\n</h1>\n\n<hr/>\n\n<p>\n\tA resource is any kind of thing that you want to you want to be streamed in\n\tfrom the disk or any other location.\n</p>\n\n<p>\n\tResources can be loaded directly, or they can be passed to the\n\t<a href=\"async.html\">Async</a> system to be streamed in.\n</p>\n\n<p>\n\tSome resource types included in the framework are\n\t<a href=\"../render/model.html\">Models</a>,\n\t<a href=\"../render/model.html\">Materials</a> and\n\t<a href=\"../audio.html\">Sounds</a>. \n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tEach resource has a unique name. This is how resources are identified.\n\tUsually the name references the name of a file on disk, but does not always\n\thave to be so.\n</p>\t\n\n<p>\n\tThe uniqueness only applies to resources of the same type. Different types of resources can have a resource with the same name.\n</p>\n\n<h4>\n\tReferences\n</h4>\n\n<p>\n\tThis is how the framework keeps track of which resources are being used and\n\twhich resources can be freed. Used resources are not freed.\n</p>\n\n<p>\n\tWhenever an <a href=\"entitycomponent.html\">EntityComponent</a> or any other\n\tuser starts\tusing a resource, they should add a reference to the resource,\n\tin order to\tmark it as being used. After the usage of the resource ceases,\n\tthe reference should be removed.\n</p>\n\n<p>\n\tIf you want a resource to be always availabe, you can add a reference to it.\n\tThis way it will never be freed and you won't have to wait for it to be\n\tstreamed in.\n</p>\n\n<h4>\n\tStatus\n</h4>\n\n<p>\n\tThe status of the resource keeps track of whether the resource needs to be\n\tloaded or whether it is ready for usage.\n</p>\n\n<h2>\n\tStatuses\n</h2>\n\n<hr/>\n\n<h4>\n\tUnloaded | <code>UNLOADED</code>\n</h4>\n\n<p>\n\tThe resource has not been loaded from disk.\n</p>\n\n<h4>\n\tLoaded | <code>LOADED</code>\n</h4>\n\n<p>\n\tThe resource has been loaded form disk, but needs further processing. For\n\texample, graphics resources use this status for when they have been parsed\n\tfrom the disk, but haven't been uploaded to the GPU memory, since this step\n\thas to happen on the main thread, not the resource streaming thread.\n</p>\n\n<h4>\n\tReady | <code>READY</code>\n</h4>\n\n<p>\n\tThe resource has been fully loaded and is ready for use.\n</p>\n\n<h4>\n\tLoad fail\n</h4>\n\n<p>\n\tWhile not implemented as a status (it was at one point, but the API was not\n\tthat neat to use), the load fail is flag that keeps track of whether the \n\tresource was successfully loaded.\n</p>\n\n<p>\n\tFor example, the resource could be considered as having failed to load if\n\tthe file associated with the resource was missing, or if it the format of\n\tthe file was determined to be invalid.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/resource.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_resource.html\">API documentation\n\tpage</a>.\n</p>\n\n<p id=\"proxy\">\n\tIf you want to use a resource, you can use the ResourceProxy class. It is a\n\ttype of smart pointer, which will not only automatically keep track of\n\treferences, but also automatically pass the resource to the Aync system\n\tfor streaming, if the resource is not loaded already.\n</p>\n\n<code>\n\t<span class=\"codeclass\">ResourceProxy</span>&lt;<span class=\"codeclass\">Material</span>&gt; material;<br/>\n\t<br/>\n\tmaterial.<span class=\"codefunc\">set</span>(<span class=\"codeclass\">Material</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>));<br/>\n\t<br/>\n\t<span class=\"codecomm\">// if the mongus material hasn't been loaded yet,</span><br/>\n\t<span class=\"codecomm\">// it will now have been added to the Async</span><br/>\n\t<span class=\"codecomm\">// resource streaming queue</span><br/>\n\t<br/>\n\t<span class=\"codekeyw\">if</span> (material-><span class=\"codefunc\">GetStatus</span>() == <span class=\"codeclass\">Resource</span>::READY) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"width: %f height: %f\\n\"</span>,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;material-><span class=\"codefunc\">GetWidth</span>(), \n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;material-><span class=\"codefunc\">GetHeight</span>());<br/>\n\t}\n</code>\n\n<p>\n\tTo create a resource, you will need to create a subclass of the Resource\n\tclass.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">class</span> <span class=\"codeclass\">NewResource</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Resource</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">NewResource</span>(<span class=\"codekeyw\">name_t</span> name) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Resource</span>::<span class=\"codefunc\">Resource</span>(name);<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">LoadFromDisk</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">LoadFromMemory</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<br/>\n\t<span class=\"codekeyw\">private</span>:<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">int</span>* data;<br/>\n\t};<br/>\n\n</code>\n\n<p>\n\tAfter that, you will need to implement the resource loading methods, as well\n\tas a resource cleanup method.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">LoadFromDisk</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->data = data_from_disk;<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">if</span> (<span class=\"codekeyw\">this</span>->data == bad_data) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->load_fail = true;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->data = dummy_data;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">if</span> (requires_further_processing) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = LOADED;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;} <span class=\"codekeyw\">else</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = READY;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">LoadFromMemory</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;main_thread_processing(<span class=\"codekeyw\">this</span>->data);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = READY;<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">Unload</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;yeet_data(<span class=\"codekeyw\">this</span>->data);<br/>\n\t}<br/>\n\n</code>\n\n<p>\n\tIf the resource can't be located from the disk, you should generate some\n\tdummy data and check the load_fail flag. For example, if the Material\n\tresource can't load the texture image associated with that material, it will\n\tgenerate a checkerboard pattern texture image.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/script.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tScripting\n</h1>\n\n<hr/>\n\n<p>\n\tThe script system implements the scripting API. It allows you to call \n\tscripts from C++ without being concerned with which scripting language\n\tthe script is actually implemented in.\n</p>\n\n<p>\n\tCurrently the only scripting language bindings that have been implemented\n\tare for the <a href=\"../extensions/scripting.html\">Lua language</a>.\n</p>\n\n<p>\n\tAll scripts are located in the <code>/scripts/</code> directory.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/script.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_script.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tFirst a script needs to be loaded. When a script is loaded from disk, it\n\twill be automatically executed.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">LoadScript</span>(<span class=\"codelit\">\"frog\"</span>);\n</code>\n\n<p>\n\tYou can set global variables in the scripting context and retrieve\n\tglobal variables from it.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">SetGlobal</span>(<span class=\"codelit\">\"frog_status\"</span>, <span class=\"codelit\">420</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">value_t</span> frogs = <span class=\"codeclass\">Script</span>::<span class=\"codefunc\">GetGlobal</span>(<span class=\"codelit\">\"frog_count\"</span>);\n</code>\n\n<p>\n\tYou can also register in C++ function which can be called from the scripting\n\tlanguage. For example, this function, named <code>frog</code>, will accept\n\ta single integer parameter, which it will print to console. It will then\n\treturn the value <code>true</code> if the integer inputted was \n\t<code>420</code>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">SetFunction</span>(<span class=\"codelit\">\"frog\"</span>, {TYPE_INT},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[](<span class=\"codekeyw\">valuearray_t</span> array) -> <span class=\"codekeyw\">value_t</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">int32_t</span> frog = array[<span class=\"codelit\">0</span>];<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"frog: %i\"</span>, frog);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> frog == <span class=\"codelit\">420</span>;<br/>\n\t});\n</code>\n\n<p>\n\tYou can also call script functions from C++.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">bool</span> result = <span class=\"codeclass\">Script</span>::<span class=\"codefunc\">CallFunction</span>(<span class=\"codelit\">\"frog\"</span>, {<span class=\"codelit\">420</span>});\n</code>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/serialization.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Serialization | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Serialization | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSerialization\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/settings.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Settings | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Settings | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSettings\n</h1>\n\n<hr/>\n\n<p>\n\tThe settings system can be used to save your application's settings, as well\n\tas automatically parse command line options.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/settings.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_settings.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tSettings can be registered in two different ways. In the first, the \n\tsettings system will store the setting for you. In the second, you provide\n\ta pointer to the setting and manage the storage yourself.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// allowing settings to manage the setting</span><br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">420</span>, <span class=\"codelit\">\"frog-count\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// managing our own setting</span><br/>\n\t<span class=\"codekeyw\">uint32_t</span> frog_count = <span class=\"codelit\">420</span>;<br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Register</span>(&amp;frog_count, <span class=\"codelit\">\"frog-count\"</span>);<br/>\n</code>\n\n<p>\n\tParsing settings from commandline is very simple.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">int</span> <span class=\"codefunc\">main</span>(<span class=\"codekeyw\">const char</span>** argv, <span class=\"codekeyw\">int</span> argc) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Parse</span>(argv, argc);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> <span class=\"codelit\">0</span>;<br/>\n\t}\n</code>\n\n<p>\n\tSettings can also be saved to disk and loaded back up.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Save</span>(<span class=\"codelit\">\"frog-settings\"</span>);<br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Load</span>(<span class=\"codelit\">\"frog-settings\"</span>);<br/>\n</code>\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/signal.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Signals | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Signals | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSignals\n</h1>\n\n<hr/>\n\n<p>\n\tSignals are <a href=\"message.html\">Message</a> presets that can be attached\n\tto entities.\n</p>\t\n\n<p>\n\tThese can be configured in the <a href=\"../leveleditor.html\">level\n\teditor</a>, or they\tcan be attached through scripting.\t\n</p>\n\n<p>\n\tWhen the appropriate moment comes, the entity will fire off the signal,\n\twhich in turn will send off the preset message.\n</p>\n\n<p>\n\tSignals are named so as to be confusing to Godot users. Similar frameworks\n\tcall these the entity input/output system.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tSignal type\n</h4>\n\n<p>\n\tEach signal has a type. This type determines what kind of action cause the\n\tsignal to fire.\n</p>\n\n<p>\n\tAny entity can fire off any signal type for any action, but to keep it\n\tconsistent we have described some signal types.\n</p>\n\n<h4>\n\tSignal firing\n</h4>\n\n<p>\n\tWhen the appropriate moment comes, the entity fires off the signal. This\n\tcauses the signal table to look up all message presets associated with the\n\tfired signal type. The signal table will then send off all of the relevant\n\tmessage presets.\n</p>\n\n<p>\n\tWhile signal message presets can have a value attached to them to be sent as\n\tthe attached data, during firing the entity can choose to replace the data\n\twith something other than what the preset contains.\n</p>\n\n<h4>\n\tSignal table\n</h4>\n\n<p>\n\tContains all of the signals that are defined for a certain entity. Can be\n\tedited in the level editor. On disk each entity's signals are stored in the\n\t<a href=\"worldcell.html\">Worldcell</a> file.\n</p>\n\n<h2>\n\tSignal types\n</h2>\n\n<hr/>\n\n<h4 id=\"none\">\n\tNone | <code>NONE</code>\n</h4>\n\n<p>\n\tThis is not a signal.\n</p>\n\n<h4 id=\"spawn\">\n\tSpawn | <code>SPAWN</code>\n</h4>\n\n<p>\n\tFired when an entity is loaded.\n</p>\n\n<h4 id=\"kill\">\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tFired when an entity is killed.\n</p>\n\n<h4 id=\"activate\">\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired off when an entity is activated. What is considered an activation \n\tdepends on the entity type.\n</p>\n\n<h4 id=\"use\">\n\tUse | <code>USE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated, that is, receives a <i>Activate Once</i>\n\tmessage.\n</p>\n\n<h4 id=\"lockeduse\">\n\tLocked Use | <code>LOCKED_USE</code>\n</h4>\n\n<p>\n\tSame as Use, but fired when entity activation fails due to the entity being\n\tlocked.\n</p>\n\n<h4 id=\"open\">\n\tOpen | <code>OPEN</code>\n</h4>\n\n<p>\n\tFired when the entity begins opening.\n</p>\n\n<h4 id=\"close\">\n\tClose | <code>CLOSE</code>\n</h4>\n\n<p>\n\tFired when the entity begins closing.\n</p>\n\n<h4 id=\"endopen\">\n\tEnd Open | <code>END_OPEN</code>\n</h4>\n\n<p>\n\tFired when the entity finishes opening.\n</p>\n\n<h4 id=\"endclose\">\n\tEnd Close | <code>END_CLOSE</code>\n</h4>\n\n<p>\n\tFired when the entity finishes closing.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger | <code>TRIGGER</code>\n</h4>\n\n<p>\n\tFired when the entity is triggered.\n</p>\n\n<h4 id=\"entertrigger\">\n\tEnter Trigger | <code>ENTER_TRIGGER</code>\n</h4>\n\n<p>\n\tFired when an entity enters a trigger. Its ID is attached as data in the\n\tmessage.\n</p>\n\n<h4 id=\"exittrigger\">\n\tExit Trigger | <code>EXIT_TRIGGER</code>\n</h4>\n\n<p>\n\tFired when an entity exits a trigger. Its ID is attached as data in the\n\tmessage.\n</p>\n\n<h4 id=\"progress\">\n\tProgress | <code>PROGRESS</code>\n</h4>\n\n<p>\n\tFired every tick that an entity is progressing. It replaces the message data\n\twith a floating point progress value.\n</p>\n\n<p>\n\tIf the message type attached to this signal is set to Set Progress, then it\n\tis possible to synchronize two entities that support progress.\n</p>\n\n<h4 id=\"lastsignal\">\n\tLast Signal | <code>LAST_SIGNAL</code>\n</h4>\n\n<p>\n\tNot actually a signal.\n</p>\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/stats.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Statistics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Statistics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tStatistics\n</h1>\n\n<hr/>\n\n<p>\n\tThe statistics system collects data. There are two different types of data.\n</p>\n\n<p>\n\tThe first type is time. Each <a href=\"system.html\">System</a> gets its own\n\ttime counter. Systems can add time spent in themselves to the counter.\n</p>\n\n<p>\n\tThe second type is the counter counter. It provides arbitrary counting\n\tservices. For example, the Render system uses this service to count up an\n\tapproximation of how much GPU memory it is using.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_system.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tFor the timings, somewhere in your main loop you need to add a call to the\n\tcollate function.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Collate</span>();<br/>\n\t}<br/>\n</code>\n\n<p>\n\tAfter that, you can start counting stuff.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">system_t</span> frog_system = <span class=\"codeclass\">System</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog\"</span>);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Start</span>(frog_system);<br/>\n\t<br/>\n\t<span class=\"codefunc\">pet_frogs</span>();<br/>\n\t<span class=\"codefunc\">feed_frogs</span>();<br/>\n\t<span class=\"codefunc\">bathe_frogs</span>();<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Stop</span>(frog_system);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Add</span>(RESOURCE_FROG, inital_frogs);<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Remove</span>(RESOURCE_FROG, escaped_frogs);\n</code>\n\t\n<p>\n\tFinally, you can retrieve your counts.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">size_t</span> frogs = <span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">GetStat</span>(RESOURCE_FROG);<br/>\n\t<span class=\"codekeyw\">float</span> frog_time = <span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">GetStat</span>(frog_system);\n</code>\n\t\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/system.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Systems | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Systems | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSystems\n</h1>\n\n<hr/>\n\n<p>\n\tThe system concept was created to help identify parts of code.\n</p>\n\n<p>\n\tThis allows, for example, to check if a system has been initialized. This is\n\tuseful for systems which have a dependency on another system &ndash; they\n\tcan check if the system that they have a dependecy on has been initialized\n\tbefore initializing themselves.\n</p>\n\n<p>\n\tThis concept also allows tracking <a href=\"stats.html\">statistics</a> and\n\tfiltering <a href=\"logging.html\">logging</a> based on the system from which\n\tthe logs originate.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_system.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tSome systems are already registered into the framework, but you can register\n\tyour own systems too.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">system_t</span> frog_system = <span class=\"codeclass\">System</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// now we can initialize it</span><br/>\n\t<span class=\"codeclass\">System</span>::<span class=\"codefunc\">SetInitialize</span>(frog_system, <span class=\"codekeyw\">true</span>);<br/>\n\t<span class=\"codekeyw\">assert</span>(<span class=\"codeclass\">System</span>::<span class=\"codefunc\">IsInitialized</span>(frog_system));\n</code>\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/transition.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Transitions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Transitions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTransitions\n</h1>\n\n<p>\n\tTransitions are connections between <a href=\"worldcell.html\">WorldCells</a>.\n\tThey consist of a volume, which is defined as a convex hull wrapped around a\n\tset of points.\n</p>\n\n<p>\n\tCheck the <a href=\"worldcell.html\">WorldCell</a> page for more details.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/type.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Type | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Type | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tType\n</h1>\n\n<hr/>\n\n<p>\n\tThere are a couple of types, which the framework supports for \n\t<a href=\"value.html\">values</a>, <a href=\"signal.html\">signals</a> and\n\t<a href=\"script.html\">scripting API</a>.\n</p>\n\n<h2>\n\tMain types\n</h2>\n\n<hr/>\n\n<p>\n\tAll of these types are supported by signals, scripting API and level editor.\n</p>\n\n<h4>\n\tInt\n</h4>\n\n<p>\n\tSame as Int32.\n</p>\n\n<h4>\n\tFloat\n</h4>\n\n<p>\n\tSame as Float32.\n</p>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tAlias for <a href=\"uid.html\">UID</a>.\n</p>\n\n<h2>\n\tAll types\n</h2>\n\n<hr/>\n\n<h4>\n\tUndefined\n</h4>\n\n<p>\n\tNot actually type. Used when a type is unknown.\n</p>\n\n<h4>\n\tBool\n</h4>\n\n<p>\n\tSame as Int8.\n</p>\n\n<h4>\n\tString\n</h4>\n\n<p>\n\tRegular C flavored, null-terminated character array string.\n</p>\n\n<h4>\n\tInt8, Int16, Int32, Int64 \n</h4>\n\n<p>\n\tSigned integers, which are 8-bit, 16-bit, 32-bit and 64-bit wide\n\trespectively.\n</p>\n\n<h4>\n\tUInt\n</h4>\n\n<p>\n\tSame as UInt32.\n</p>\n\n<h4>\n\tUInt8, UInt16, UInt32, UInt64 \n</h4>\n\n<p>\n\tUnsigned integers, which are 8-bit, 16-bit, 32-bit and 64-bit wide\n\trespectively.\n</p>\n\n<h4>\n\tFloat32, Float64\n</h4>\n\n<p>\n\tFloating point numbers, which are 32-bit and 64-bit wide respectively.\n</p>\n\n<h4>\n\tVec2, Vec3, Vec4\n</h4>\n\n<p>\n\tArrays consisting of 2, 3 and 4 elements of Float32 numbers respectively.\n</p>\n\n<h4>\n\tQuat\n</h4>\n\n<p>\n\tSame as Vec4, but with rotational semantics.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/ui.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>UI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: UI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tUI\n</h1>\n\n<hr/>\n\n<p>\n\tThe UI system deals with the creation of windows and taking in of the input.\n</p>\n\n<p>\n\tOnce initialized, the system will create an operating system window and will\n\tstart gathering and emitting keyboard and mouse events.\tIt also creates the\n\trendering context.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tWindow\n</h4>\n\n<p>\n\tIt's where the graphics are rendered to. Also can be clicked on.\n</p>\n\n<h4>\n\tKeyboard key\n</h4>\n\n<p>\n\tRepresents either a key on a computer keyboard, or a button on a mouse. Yes.\n</p>\n\n<p>\n\tCan either be pressed on released.\n</p>\n\n<h4>\n\tKeyboard axis\n</h4>\n\n<p>\n\tRepresents cursor position or scroll wheel scrolling.\n</p>\n\n<p>\n\tUnlike a keyboard key, an axis has a scalar state.\n</p>\n\n<h4>\n\tKeyboard action\n</h4>\n\n<p>\n\tUnlike a keyboard key, which represents a physical key or something similar,\n\tkeyboard actions are completely abstract.\n</p>\n\n<p>\n\tKeyboard keys can be bound to keyboard actions. This means that pressing and\n\treleasing the keyboard key will also trigger the keyboard action.\n</p>\n\n<h4>\n\tState\n</h4>\n\n<p>\n\tThe UI state determines what the system will do with keyboard and mouse\n\tinputs.\n</p>\n\n<h2>\n\tStates\n</h2>\n\n<hr/>\n\n<h4>\n\tDefault | <code>STATE_DEFAULT</code>\n</h4>\n\n<p>\n\tCursor is hidden. Inputs generate events normally.\n</p>\n\n<h4>\n\tNo Input | <code>STATE_NO_INPUT</code>\n</h4>\n\n<p>\n\tCursor is hidden, but inputs generate no events.\n</p>\n\n<h4>\n\tFlying | <code>STATE_FLYING</code>\n</h4>\n\n<p>\n\tCursor is hidden, no inputs are generated. Instead, WASD keys can be used to\n\tmove the <a href=\"../render.html\">Render view</a> directly. Useful for\n\tdebugging.\n</p>\n\n<h4>\n\tMenu Open | <code>STATE_MENU_OPEN</code>\n</h4>\n\n<p>\n\tCursor is displayed, but no events are generated.\n</p>\n\n<h4>\n\tCursor | <code>STATE_CURSOR</code>\n</h4>\n\n<p>\n\tCursor is displayed. Inputs generate events normally.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_u_i.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe basic initializtion and stuff goes something like this.\n</p>\n\n<code>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Uninit</span>();<br/><br/>\n</code>\n\n<p>\n\tAs for the rest of it, there is too much stuff to cover all here. Check the\n\tAPI documentation.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/uid.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>UID | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: UID | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tUID\n</h1>\n\n<hr/>\n\n<p>\n\tUID is also aliased as name_t and called a name. It is my greatest\n\ttechnological accomplishment.\n</p>\n\n<p>\n\tWhen a name is created, the string representation of it is saved into a very\n\tnice string table. The name itself only the index of the string in the \n\tstring table.\n</p>\n\n<p>\n\tThe system also ensures that each string gets store only once. This means\n\tthat name instances with identical string representations also have the same\n\tinded. This makes the comparisons between names very fast and efficient.\n</p>\n\n<p>\n\tAlso I have no idea what UID actually stands for, I forgot it a very long\n\ttime ago.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/value.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Value | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Value | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tValue\n</h1>\n\n<hr/>\n\n<p>\n\tValues in the framework are basically just type-safe unions. They support\n\tall of the <a href=\"type.html\">types</a>.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework/worldcell.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>WorldCells | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: WorldCells | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWorldCells\n</h1>\n\n<hr/>\n\n<p>\n\tWorldcells are the basic streaming unit of the virtual world. Essentially\n\tthey are a list of entities.\n</p>\n\n<p>\n\tThe worldcells also have a volume. All of the entities, whose positions are\n\tinside the worldcell's volume are considered to inside the worldcell.\n<p/>\n\n<p>\n\tAn entity is added to a worldcell if its definition is located in the\n\tworldcell's disk file, or if it is created and its position is inside the\n\tworldcell's volume or it enters a <a href=\"transition.html\">transition\n\tvolume</a> leading from one worldcell to another.\n</p>\n\n<p>\n\tAll worldcell data files are located in the <code>/data/worldcells/</code>\n\tdirectory. The file extension is <code>.cell</code>.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tInterior\n</h4>\n\n<p>\n\tWorldcell volumes are not supposed to overlap. The only exception are \n\tinterior and exterior worldcells. If an entity's position is both inside an\n\texterior and an interior worldcell, preference will be given to the interior\n\tworldcell.\n</p>\n\n<h4>\n\tInterior lighting\n</h4>\n\n<p>\n\tIf a worldcell has its lighting set to be interior, it means that for every\n\tentity in that cell the <a href=\"../render.html\">directional lighting</a>\n\twill be disabled. This is more of a convention for entity implementation,\n\tthan something that is forced on entities\t\n</p>\n\n<h4>\n\tTransition\n</h4>\n\n<p>\n\tA worldcell transition has a volume, defined by a convex hull wrapped around\n\ta set of points, and an originating and a destination worldcell. If an\n\tentity is in the originating worldcell and it enters the volume of the\n\ttranistion, it will be switched to being in the destination worldcell.\n</p>\n\n<h4>\n\tVolume\n</h4>\n\n<p>\n\tIf a transition has its originating and its destination worldcells set to\n\tthe same worldcell, then it is considered that the volume of the transition\n\tcontributes to the volume of the worldcell.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/worldcell.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_world_cell.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tLoading a worldcell is very simple.\n</p>\n\n<code>\n\t<span class=\"codeclass\">WorldCell</span>* frog_house = <span class=\"codeclass\">WorldCell</span>::<span class=\"codefunc\">Make</span>(<span class=\"codelit\">\"pond\"</span>);<br/>\n\t<br/>\n\tfrog_house-><span class=\"codefunc\">LoadFromDisk</span>();<br/>\n\tfrog_house-><span class=\"codefunc\">Load</span>();\n</code>\n\n<p>\n\tWe can also probe entitial contents of the worldcell.\n</p>\n\n<code>\n\t<span class=\"codeclass\">WorldCell</span>* frog_house = <span class=\"codeclass\">WorldCell</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"pond\"</span>);<br/>\n<br/>\n\t<span class=\"codekeyw\">auto</span> entities = frog_house-><span class=\"codefunc\">GetEntities</span>();<br/>\n<br/>\n\t<span class=\"codekeyw\">for</span> (<span class=\"codekeyw\">auto</span> entity : enitities) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Entity: %s\\n\"</span>, entity-><span class=\"codefunc\">GetName</span>());<br/>\n\t}\n</code>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/framework.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Framework | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Framework | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFramework\n</h1>\n\n<hr/>\n\n<p>\n\tThis is where the core of the framework lives.\n</p>\n\n<code>\n\t// TODO: write a brief overview of each section\n</code>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/index.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLearn\n</h1>\n\n<p>\n\t<i>\n\t\tThere is nothing to learn.\n\t</i>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/leveleditor.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Level Editor | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Level Editor | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLevel Editor\n</h1>\n\n<p>\n\t// TODO: implement\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/physics/collisionmodel.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Collision Model | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Collision Model | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCollision Model\n</h1>\n\n<hr/>\n\n<p>\n\tCollision models are essentially the \n\t<a href=\"../framework/resource.html\">Resource</a> form of the\n\t<a href=\"collisionshape.html\">CollisionShape</a>. They consist of a\n\tsingle or several collision shapes.\n</p>\n\n<p>\n\tCollision models are stored in the <code>/data/model/</code> directory. The\n\tfile extension is <code>.coll</code>. They can be created using the\n\tcollision model exporter Blender plugin.\n</p>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/physics/collisionshape.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Collision Shape | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Collision Shape | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCollision Shape\n</h1>\n\n<hr/>\n\n<p>\n\tThe collision shape determines the volume of the of a\n\t<a href=\"../physics.html\">rigidbody</a> or a\n\t<a href=\"../physics.html\">trigger</a>. It consists of of a geometric shape.\n</p>\n\n<h2>\n\tShapes\n</h2>\n\n<hr/>\n\n<center>\n\t<img src=\"collisionshape.gif\"/><br/>\n\t<i>These are the shapes that you can use.</i>\n</center>\n\n<h4>\n\tSphere | <code>SHAPE_SPHERE</code>\n</h4>\n\n<p>\n\tA sphere is... well, you probably know what a sphere is. The only parameter\n\tthat it has is it's radius.\n</p>\n\n<h4>\n\tCylinder | <code>SHAPE_CYLINDER</code>\n</h4>\n\n<p>\n\tA cylinder has a radius and a height.\n</p>\n\n<h4>\n\tCapsule | <code>SHAPE_CAPSULE</code>\n</h4>\n\n<p>\n\tA capsule is like a cylinder, but instead of having flat ends, those ends\n\thave spheres attached to them. It has a radius and a height.\n</p>\n\n<h4>\n\tCone | <code>SHAPE_CONE</code>\n</h4>\n\n<p>\n\tA cone is like a cylinder, but one of the ends has been collapsed into a\n\tpoint. It has a radius and a height.\n</p>\n\n<h4>\n\tBox | <code>SHAPE_BOX</code>\n</h4>\n\n<p>\n\tA box is a box. It has a width, length and height. If all of these\n\tparameters are equal, you get a cube.\n</p>\n\n<h4>\n\tHull | <code>SHAPE_HULL</code>\n</h4>\n\n<p>\n\tA hull is a convex hull that is generated from a point cloud. It consists\n\tof points, which have a position.\n</p>\n\n<h4>\n\tMesh | <code>SHAPE_MESH</code>\n</h4>\n\n<p>\n\tA mesh consists of triangles. Each triangle has 3 vertices, each of which\n\thas a position. This is shape has the worst performance, avoid it if you\n\tcan.\n</p>\n\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">physics/collisionshape.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_physics_1_1_collision_shape.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThis is how you make the shapes.\n</p>\n\n<code>\n\n\tconst float radius = 0.5f;<br/>\n\tconst float height = 1.5f;<br/>\n<br/>\n\tauto sphere = CollisionShape::Sphere(radius);<br/>\n<br/>\n\tauto cylinder = CollisionShape::Cylinder(radius,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height);<br/>\n<br/>\n\tauto capsule = CollisionShape::Capsule(radius,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height);<br/>\n<br/>\n\tauto cone = CollisionShape::Cone(radius, height);<br/>\n<br/>\n\tconst vec3 dimensions = {42.0f, 6.9f, 48.9f};<br/>\n<br/>\n\tauto box = CollisionShape::Box(dimensions);<br/>\n<br/>\n\tconst size_t cloud_size = 3;<br/>\n\tconst vec3 cloud[cloud_size] = {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{-1.0f, 1.0f, -1.0f},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{1.0f, 4.2f, 0.0f},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{-6.9f, 1.0f, -1.0f},<br/>\n\t};<br/>\n<br/>\n\tauto hull = CollisionShape::Hull(cloud, cloud_size);<br/>\n<br/>\n\tconst vec3 point1 = {1.0f, 1.0f, 0.0f}, <br/>\n\tconst vec3 point2 = {-1.0f, 1.0f, 0.0f}, <br/>\n\tconst vec3 point3 = {1.0f, -1.0f, 0.0f}, <br/>\n\tconst vec3 point4 = {-1.0f, -1.0f, 0.0f}, <br/>\n<br/>\n\tconst size_t mesh_size = 2;<br/>\n\tCollisionTriangle triangles[mesh_size] = {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{point1, point2, point3},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{point4, point2, point3}<br/>\n\t}; <br/>\n<br/>\n\tauto mesh = CollisionShape::Mesh(triangles,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mesh_size);<br/>\n<br/>\n</code>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/physics.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPhysics\n</h1>\n\n<hr/>\n\n<p>\n\tThe physics system provides rigidbody physics simulation services.\n</p>\n\n<p>\n\tCurrently a single backed is implemented, which is the Bullet physics\n\tlibrary backed, but more will be added in the future.\n</p>\n\n<p>\n\tIf you want to add rigidbodies to your entities, consider using the\n\t<a href=\"components/physics.html\">PhysicsComponent</a>. For triggers, the \n\t<a href=\"components/trigger.html\">TriggerComponent</a> is available.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"rigidbody\">\n\tRigidbody\n</h4>\n\n<p>\n\tAn object in the physics simlation. Rigidbodies have some kind of a shape or\n\tvolume. This is determined by their\n\t<a href=\"physics/collisionmodel.html\">CollisionModel</a> or\n\t<a href=\"physics/collisionshape.html\">CollisionShape</a>.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger\n</h4>\n\n<p>\n\tTriggers are special shapes or volumes that can detect if a rigidbody enters\n\tits\tvolume.\n</p>\n\n<h4 id=\"collisiongroup\">\n\tCollision Group\n</h4>\n\n<p>\n\tCollision groups are groups that the rigidbody, trigger or other physics\n\tconstruct is a part of. The object can be a part of several groups. They are\n\trepresented by bits in a bitmask.\n</p>\n\n<p>\n\tIt is more efficient for an object to belong to only a single group, or very\n\tfew groups.\n</p>\n\n<h4 id=\"collisionmask\">\n\tCollision Mask\n</h4>\n\n<p>\n\tCollision masks are groups with which the rigidbody, trigger or other\n\tphysics\tconstruct can collide with. The object can be set to collide with\n\tseveral groups. Allowed collision groups are represented by bits in a\n\tbitmask.\n</p>\n\n<p>\n\tTo determine if an object should collide with another object, each objects\n\tgroup bitmask and the other object's mask bitmask are logically ANDed\n\ttogether. If the resulting value is not zero, the objects are allowed to\n\tcollide.\n</p>\n\n<h4 id=\"raycast\">\n\tRaycast\n</h4>\n\n<p>\n\tUseful for poking things, selecting objects. A raycast constructs a ray \n\tbetween two points and check whether it intersects any rigidbody between\n\tthese points. If an intersection is found, it is returned.\n</p>\n\n<h4 id=\"shapecast\">\n\tShapecast\n</h4>\n\n<p>\n\tSimilar to raycast, but instead of a checking an intersection with an\n\tinfinitely thin line, a shape is used. \n</p>\n\n<h2>\n\tCollisions: how do they work?\n</h2>\n\n<hr/>\n\n<p>\n\tLike this.\n</p>\n\n<center>\n\t<img src=\"collisionmaskgroup.gif\"/><br/>\n\t<i>This is how the bitmask ANDing works.</i>\n</center>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">physics/physics.h</span>&gt;</code> <br/>\n\t<a href=\"../cppapi/namespacetram_1_1_physics.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Physics</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Physics</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tHere's how we do raycasts. Let's do one from the render view.\n</p>\n\n<code>\n\tauto pos = Render::GetViewPositon();<br/>\n\tauto rot = Render::GetViewRotation();<br/>\n\t<br/>\n\t// convert rotation to normal vector<br/>\n\tvec3 dir = rot * DIRECTION_FORWARD;<br/>\n\t<br/>\n\t// set end point to ne 5 meters in<br/>\n\t// front of the view<br/>\n\tvec3 end = pos + dir * 5.0f;<br/>\n\t<br/>\n\t// collision mask -1 means all bits, aka<br/>\n\t// collide with all collision groups<br/>\n\tauto coll = Physics::Raycast(pos, end, -1);<br/>\n\t<br/>\n\t<br/>\n\t// skip collision if no entity attached<br/>\n\tif (!coll.collider || !coll.collider->GetParent())<br/>\n\t\treturn;<br/>\n\t<br/>\n\tauto entity = coll.collider->GetParent();<br/>\n\t<br/>\n\t// send a SELECTED message to the collided<br/>\n\tMessage msg;<br/>\n\t<br/>\n\tmsg.sender = 0;<br/>\n\tmsg.receiver = entity->GetID();<br/>\n\tmsg.type = Message::SELECTED;<br/>\n\tmsg.data = nullptr;<br/>\n\t<br/>\n\tMessage::Send(msg);\n</code>\n\n<p>\n\tThis is how interactable object highlighting is usually done for a\n\tfirst-person view. We check if there is an object withing 5 meters right in\n\tfront of the view, and if there is an object, we send the it a Selected\n\tmessage.\n</p>\n\n<p>\n\tShapecasts work the same way, except that you also need to pass in the\n\tshape, which will be used for the collision.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/platform.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Platform | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Platform | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlatform\n</h1>\n\n<p>\n\tThis system contains the platform compatibility layer. Basically it provides\n\ta single API to perform various tasks, which are platform-specific.\n</p>\n\n<p>\n\tFor example, the creation of a window and the capture of keyboard keypress\n\tevents is specific to the operating system. Windows uses the Win32 API and\n\tLinux uses the X Window System API. \n</p>\n\n<p>\n\tTo make porting easier, the framework does not use these APIs directly,\n\tinstead using either the GLFW or the SDL libraries as a backend. It is also\n\tpossible to create your own backend.\n</p>\n\n<p>\n\tCreating your own backend is useful if you want to embed the framework\n\tinside of another application. For example, the\n\t<a href=\"leveleditor.html\">level editor</a> is a wxWidgets application that\n\tembeds the rendering system of the framework.\n</p>\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/plugin.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Plugins | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Plugins | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlugins\n</h1>\n\n<p>\n\t// TODO: implement\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render/aabb.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>AABB | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: AABB | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAABB\n</h1>\n\n<hr/>\n\n<p>\n\tWhenever a 3D model is added to the scene by a\n\t<a href=\"../components/render.html\">RenderComponent</a>, it is also added to\n\tthe very large AABB tree which contains every model in the scene.\n</p>\n\n<p>\n\tThis tree can be used to query the contents of the scene. This is useful for\n\tthings like mouse picking of objects or decal projection.\n</p>\n\n<p>\n\tThis system also contains the LightTree, which is an octree that contains\n\tall of the lights in the scene. It is used to determine which lights will be\n\tused to illuminate which objects, since it speeds up nearest point queries.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render/animation.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimations\n</h1>\n\n<hr/>\n\n<p>\n\tAnimations are a <a href=\"../framework/resource.html\">Resource</a> that can\n\tbe used to, essentially, generate pose matrices. Those are used to deform\n\tmeshes. See <a href=\"../components/animation.html\">AnimationComponent</a>\n\tfor examples of what you can do with animations.\n</p>\n\n<p>\n\tAnimations consist of keyframes. Each keyframe has some data associated with\n\tit. This data is used to transform bones.\n</p>\n\n<p>\n\tKeyframes start from zero and increase at a rate of 24 frames per second.\n\tThis is the same as the default animation frame rate in Blender.\n</p>\n\n<p>\n\tAnimations can be created in the Blender program and then exported using the\n\t<a href=\"../plugin.html\">Animation Exporter Plugin</a>.\n</p>\n\n<h2>\n\tA brief overview of the Keyframe\n</h2>\n\n<hr/>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tAny positive number. It is used to determine when the keyframe will be\n\tactive.\n</p>\n\n<h4>\n\tLocation\n</h4>\n\n<p>\n\tTranslation of a bone.\n</p>\n\n<h4>\n\tRotation\n</h4>\n\n<p>\n\tRotation of a bone.\n</p>\n\n<h4>\n\tScale\n</h4>\n\n<p>\n\tScale of a bone.\n</p>\n\n<h4>\n\tThat's it\n</h4>\n\n<p>\n\tNo shearing or any other kind of funny transformations. \n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render/material.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Material | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Material | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMaterial\n</h1>\n\n<hr/>\n\n<p>\n\tMaterials are used to describe the properties of geometry primitive\n\tsurfaces.\n</p>\n\n<p>\n\tIf a material is set to use a texture image, these images will be loaded \n\tfrom the <code>/data/textures/</code> directory and have the extension\n\t<code>.png</code>.\n</p>\n\n<p>\n\tMaterials can be defined through code, or they can be defined through a\n\tmaterial list file. These files are located in the <code>/data/</code>\n\tdirectory and have the extenstion <code>.list</code>.\n</p>\n\n<h2>\n\tProperties\n</h2>\n\n<hr/>\n\n<h4>\n\tTexture\n</h4>\n\n<p>\n\tOptional texture image.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tDetermines how the surface is rendered. For the OpenGL backend this\n\tdetermines which shader is used.\n</p>\n\n<h4>\n\tProperty\n</h4>\n\n<p>\n\tDetermines what the material is made of. Useful for determining which sound\n\tto use when collision happens with object, or which particle effect to spawn.\n</p>\n\n<h4>\n\tFilter\n</h4>\n\n<p>\n\tDetermines how the texture of the material will be interpolated.\n</p>\n\n<h4>\n\tTexture type\n</h4>\n\n<p>\n\tAllows the material to not use its own texture, instead using a plain color,\n\tor allows it to use another material's texture.\n</p>\n\n<h4>\n\tColor\n</h4>\n\n<p>\n\tIf a material has no texture, it will use appear as this color. Otherwise \n\tthe texture of the material will be tinted with this color.\n</p>\n\n<h4>\n\tSpecular weight\n</h4>\n\n<p>\n\tFloating point value between 0.0 and 1.0. Determines how visible the\n\tspecular reflections of the material are. Setting this to 0.0 essentially\n\tdisables specular reflections.\n</p>\n\n<h4>\n\tSpecular exponent\n</h4>\n\n<p>\n\tFloating point value from 1.0 to higher. Determines how wide the specular\n\treflection will be. Higher values means narrower relection.\n</p>\n\n<h4>\n\tSpecular transparency\n</h4>\n\n<p>\n\tFloating point value between 0.0 and 1.0. Determines whether the material\n\tabsorbs any of the specular reflection. Setting this to 0.0 will make the\n\tmaterial absorb the specular reflection just like it does with diffuse and\n\tsetting this to 1.0 will have the specular reflection be the same color as\n\tthe light source.\n</p>\n\n<h2>\n\tMaterial types\n</h2>\n\n<hr/>\n\n<p>\n\tMost of these material types are accepted by all backends. If using OpenGL\n\tbacked, you can register new material types and set their shaders.\n</p>\n\n<h4>\n\tTexture | <code>MATERIAL_TEXTURE</code>\n</h4>\n\n<p>\n\tThe material has a texture. It is fully opaque.\n</p>\n\n<h4>\n\tTexture Alpha | <code>MATERIAL_TEXTURE_ALPHA</code>\n</h4>\n\n<p>\n\tThe material has a texture. It is partially opaque. The transparency channel\n\tof the texture is used for an alpha test.\n</p>\n\n<h4>\n\tLightmap | <code>MATERIAL_LIGHTMAP</code>\n</h4>\n\n<p>\n\tThe texture of this material is used as a lightmap.\n</p>\n\n<h4>\n\tMSDF | <code>MATERIAL_MSDF</code>\n</h4>\n\n<p>\n\tThe texture represents a MSDF.\n</p>\n\n<h4>\n\tGlyph | <code>MATERIAL_GLYPH</code>\n</h4>\n\n<p>\n\tThis is the material used for GUI elements.\n</p>\n \t\n<h4>\n\tWater | <code>MATERIAL_WATER</code>\n</h4>\n\n<p>\n\tThis material will get fancy water effects applied to it, but this only\n\tworks with the OpenGL backend.\n</p>\n\n<h4>\n\tFlat Color | <code>MATERIAL_FLAT_COLOR</code>\n</h4>\n\n<p>\n\tThe material has no texture associated with it and instead it will use its\n\tcolor parameter.\n</p>\n \n<h2>\n\tMaterial Property properties\n</h2>\n\n<hr/>\n\n<h4>\n\tMetal | <code>PROPERTY_METAL</code>\n</h4>\n\n<p>\n\tHeavy metal objects.\n</p>\n\n<h4>\n\tMetal Thin | <code>PROPERTY_METAL_THIN</code>\n</h4>\n\n<p>\n\tLight metal objects.\n</p>\n\n<h4>\n\tSlime | <code>PROPERTY_SLIME</code>\n</h4>\n\n<p>\n\tExretions of a biological origin.\n</p>\n\n<h4>\n\tTile | <code>PROPERTY_TILE</code>\n</h4>\n\n<p>\n\tTiles, like those found in a bathroom.\n</p>\n \t\n<h4>\n\tGrate | <code>PROPERTY_GRATE</code>\n</h4>\n\n<p>\n\tFences and other metallic objects with lots of holes in them.\n</p>\n\n<h4>\n\tWood | <code>PROPERTY_WOOD</code>\n</h4>\n\n<p>\n\tTrees, planks and logs.\n</p>\n\n<h4>\n\tComputer | <code>PROPERTY_COMPUTER</code>\n</h4>\n\n<p>\n\tActs like mixture of metal and glass.\n</p>\n \t\n<h4>\n\tGlass | <code>PROPERTY_GLASS</code>\n</h4>\n\n<p>\n\tWindows, jars and bottles.\n</p>\n\n<h4>\n\tSnow | <code>PROPERTY_SNOW</code>\n</h4>\n\n<p>\n\tSnow and other sound absorbent materials, carpets.\n</p>\n\n<h4>\n\tGrass | <code>PROPERTY_GRASS</code>\n</h4>\n\n<p>\n\tLike the green touchable stuff that grows outside.\n</p>\n\n<h4>\n\tConcrete | <code>PROPERTY_CONCRETE</code>\n</h4>\n\n<p>\n\tConcrete, rocks and stones.\n</p>\n\n<h4>\n\tFlesh | <code>PROPERTY_FLESH</code>\n</h4>\n\n<p>\n\tSort of like a heavier version of slime. Things that are made out of meat.\n</p>\n\n\n<h2>\n\tFilters\n</h2>\n\n<hr/>\n\n<h4>\n\tNearest | <code>FILTER_NEAREST</code>\n</h4>\n\n<p>\n\tTextures won't use interpolation.\n</p>\n\n<h4>\n\tLinear | <code>FILTER_LINEAR</code>\n</h4>\n\n<p>\n\tTextures use linear interpolation.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render/model.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tModels\n</h1>\n\n<hr/>\n\n<p>\n\tCurrently we have three types of 3D models.\n</p>\n\n<p>\n\tAll model types are stored in the <code>/data/models/</code> directory.\n\tStatic models have the extension <code>.stmdl</code>, dynamic models have\n\tthe <code>.dymdl</code> extension and modifcation models have the \n\t<code>.mdmdl</code> extension.\n</p>\n\n<h2 id=\"static\">\n\tStatic models\n</h2>\n\n<hr/>\n\n<p>\n\tStatic models not only have normal texture coordinates, but they also have \n\tlightmap coordinates. They can be lightmapped. That's pretty nice.\n</p>\n\n<h2 id=\"dynamic\">\n\tDynamic models\n</h2>\n\n<hr/>\n\n<p>\n\tDynamic models also have texture coordinates, but no lightmap coordinates.\n\tInstead they have bone weights, which allow them to use pose matrices and\n\tbe animated by animations and stuff.\n</p>\n\n<h2 id=\"modification\">\n\tModification models\n</h2>\n\n<hr/>\n\n<p>\n\tUnlike other model types, this model type has no vertex data of its own.\n\tInstead it references the vertex data of some other model. What is unique\n\tto it, is its material to material mapping. It can be used to swap out a\n\tmaterial.\n</p>\n\n<p>\n\tFor example, if you have a pink teapot model which uses a material named\n\t<code>pink-pot</code> and you would like a cyan teapot model, instead of\n\tre-exporting another dynamic model but with just the materials replaced,\n\tyou could create a modification model with the material mapping of\n\t<code>pink-pot => cyan-pot</code>.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render/sprite.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Sprite | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Sprite | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSprite\n</h1>\n\n<hr/>\n\n<p>\n\tSprites are like little images that live inside of other images. These\n\timages are the texture images of <a href=\"material.html\">Materials</a>.\n\tSprites reference materials.\n</p>\n\n<p>\n\tIf you are creating a flipbook animation, it is easier to animate all of the\n\tframes inside of a single image texture file. But how would the framework\n\tknow where exactly are each of the frames located in the image? It would\n\tknow it because you created a sprite, which contains the positions of each\n\tframe inside the larger texture image.\n</p>\n\n<h2>\n\tWhat does is inside a frame\n</h2>\n\n<hr/>\n\n<center>\n\t<img src=\"spriteframe.gif\"/><br/>\n\t<i>This is how these different metrics look like.</i>\n</center>\n\n<h4>\n\tOffset X and Offset Y\n</h4>\n\n<p>\n\tOffsets in pixels, from the top-left corner. This is the pixel coordinate\n\tposition of the top-left corner of the sprite and where it starts.\n</p>\n\n<h4>\n\tWidth and Height\n</h4>\n\n<p>\n\tWidth and height of the frame, in pixels.\n</p>\n\n<h4>\n\tMidpoint X and Midpoint Y\n</h4>\n\n<p>\n\tOffsets of the midpoint of the frame, in pixels. It is relative to the frame\n\toffset. Usually they will be set to half of the width and half of the\n\theight, so that the midpoint is in the midpoint of the sprite.\n</p>\n\n<h4>\n\tBorder H and V\n</h4>\n\n<p>\n\tHorizontal and vertical borders around the sprite, in pixels. Only used for\n\ttext rendering.\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/render.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRender\n</h1>\n\n<hr/>\n\n<p>\n\tProbably one of the most useful systems in the framework. Performs all of\n\tthe graphics stuff.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"view\">\n\tView\n</h4>\n\n<p>\n\tVirtual camera perspective. Can be set using a position vector and a\n\trotation quaternion, or by directly feeding in a view and perspective\n\tmatrices.\n</p>\n\n<h4 id=\"layer\">\n\tLayer\n</h4>\n\n<p>\n\tObjects can be assigned to a layer. Curently there are 7 layers. Objects\n\tin higher layers will be drawn on top of the objects in lower layers.\n</p>\n\n<h4 id=\"primitive\">\n\tGraphics Primitive\n</h4>\n\n<p>\n\tA geometric shape that can be rasterized. The framework currently supports\n\tthe rasterization of triangles and straight line segments.\n</p>\n\n<h4 id=\"drawlistentry\">\n\tDraw List Entry\n</h4>\n\n<p>\n\tA record in the draw list. The draw list is list of all of the objects,\n\tconsisting of graphics primitives, that compose the rendered scene. To be\n\teligble for being rendered to the screen, the object must be added to the\n\tdraw list.\n</p>\n\n<h4 id=\"vertex\">\n\tVertex\n</h4>\n\n<p>\n\tA point consisting of some kind of a coordinate and possibly some other\n\tdata. Used to construct graphics primitives. A triangle consists of 3\n\tvertices, a line segment of 2. Can be arranged in a buffer in list form.\n</p>\n\n<h4 id=\"index\">\n\tIndex\n</h4>\n\n<p>\n\tReference to a vertex. Can be arranged in a buffer in list form. Invented as\n\ta digital computer memory saving measure sometime in the late 20th century.\n</p>\n\n<h4 id=\"texture\">\n\tTexture\n</h4>\n\n<p>\n\tRaster image that can be applied to the surface of a graphics primitive\n\tduring rendering.\n</p>\n\n<h4 id=\"material\">\n\tMaterial\n</h4>\n\n<p>\n\tSet of surface properties, possibly including a reference to a texture. \n\tDetermines how the surface of a graphics primitive will be rendered.\n</p>\n\n<h4 id=\"light\">\n\tLight\n</h4>\n\n<p>\n\tIf there was no light we could just clear the screen with a black color\n\tinstead of rendering anything and you wouldn't even know.\n</p>\n\n<h4 id=\"lightmap\">\n\tLightmap\n</h4>\n\n<p>\n\tPrecomputed surface illumination for static objects. Allows the usage of\n\tsome rather slow algorithms for lighting computations, i.e. ray tracing,\n\tpath tracing, radiosity.\n</p>\n\n<h4 id=\"armature\">\n\tArmature\n</h4>\n\n<p>\n\tConsists of bones. Allows deformation of a 3D model via the transfors of the\n\tbones. Can be animated.\n</p>\n\n<h2>\n\tBackends\n</h2>\n\n<hr/>\n\n<h4>\n\tOpenGL\n</h4>\n\n<p>\n\tWritten in a subset of OpenGL 4.0 and WebGL, this is the main rendering\n\tbackend of the framework.\n</p>\n\n<h4>\n\tDirect3D\n</h4>\n\n<p>\n\tThis backend uses the Direct3D9 fixed function pipeline. Not tested, but\n\tshould work with Direct3D7 level hardware. Curently only supports static\n\tmodel, dynamic model and line rendering.\n</p>\n\n<h4>\n\tSoftware\n</h4>\n\n<p>\n\tThis backend does all of the rendering on the CPU. Curently only supports\n\tstatic model, dynamic model and line rendering.\n</p>\n\n<h2>\n\tLighting Types\n</h2>\n\n<hr/>\n\n<h4>\n\tDynamic light\n</h4>\n\n<p>\n\tCan either be configured to act as a point light, or a spotlight.\n</p>\n\n<p>\n\tNo real limit on the ammount of lights in the scene, but each object can be\n\tilluminated by only 4 lights at the same time.\n</p>\n\n<h4>\n\tDirectional light\n</h4>\n\n<p>\n\tLight which is originating from a light source infinitely far away. Useful\n\tfor modelling sunlight.\n</p>\n\n<p>\n\tThe framework allows a single directional light to be used in the scene.\n</p>\n\n<h4>\n\tAmbient light\n</h4>\n\n<p>\n\tAdds some base lighting to every object in the scene. Has no direction.\n</p>\n\n<h4>\n\tLightmap\n</h4>\n\n<p>\n\tPre-computed lighting for a 3D model. Stored as a texture image. Only\n\tavailable to static models.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">render/render.h</span>&gt;</code> <br/>\n\t<a href=\"../cppapi/render_2render_8h.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tInitialization the same as with other systems.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// UI system needs to be initialized first</span><br/>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// now we initialize Render</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">Render</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tThere's too many functions in the system to list, but here's some more\n\tuseful ones.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codecomm\">// the system defines some color constants</span><br/>\n\t<span class=\"codekeyw\">color_t</span> cyan = <span class=\"codeclass\">Render</span>::COLOR_CYAN;<br/>\n\t<span class=\"codekeyw\">color_t</span> pink = <span class=\"codeclass\">Render</span>::COLOR_PINK;<br/>\n <br/>\n\t<span class=\"codecomm\">// this draws a debug line. all of the debug</span><br/>\n\t<span class=\"codecomm\">// drawing functions need to be called once</span><br/>\n\t<span class=\"codecomm\">// per frame, since after rendering a frame</span><br/>\n\t<span class=\"codecomm\">// the debug line buffer is emptied</span><br/>\n\t<span class=\"codekeyw\">const vec3</span> from = {<span class=\"codelit\">0</span>, <span class=\"codelit\">0</span>, <span class=\"codelit\">0</span>};<br/>\n\t<span class=\"codekeyw\">const vec3</span> to = {<span class=\"codelit\">1</span>, <span class=\"codelit\">1</span>, <span class=\"codelit\">1</span>};<br/>\n\t<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddLine</span>(from, to, cyan);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this draws a cross</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddLineMarker</span>(from, pink);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// sphere</span><br/>\n\t<span class=\"codekeyw\">const float</span> radius = 1.0f;<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddSphere</span>(from, radius, pink);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this is how to set the directional light</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetSunDirection</span>(DIRECTION_FORWARD);<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetSunColor</span>(COLOR_CYAN * <span class=\"codelit\">1.0f</span>);<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetAmbientColor</span>(COLOR_CYAN * <span class=\"codelit\">0.1f</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// setting the FOV, in degrees</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetViewFov</span>(<span class=\"codelit\">90.0f</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// setting it to zero changes it to</span><br/>\n\t<span class=\"codecomm\">// orthographic projection.</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetViewFov</span>(<span class=\"codelit\">90.0f</span>);<br/>\n\n\t\n</code>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation/tools/codegen.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../../favicon.gif\">\n\t\t<title>Codegen | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../../default.css\");\n\t\t\t\t\tAddCSS(\"../../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Codegen | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCodegen\n</h1>\n\n<hr/>\n\n<p>\n\tCodegen is a small Python script to help with syncing up C++ entity\n\tserialization code and entdef files.\n</p>\n\n<h2>\n\tHow to use\n</h2>\n\n<hr/>\n\n<p>\n\tOpen command prompt in you project's directory and run the codegen.py\n</p>\n\n<p>\n\t<code>\n\t\tC:\\garden>codegen.py make StickyFroggy\n\t</code>\n</p>\n\n<p>\n\tThe program will prompt you with the filename of the new file to be created.\n\tPress <code>y</code> to accept.\n</p>\n\n<p>\n\t<code>\n\t\tTramway SDK Code generator v0.1.1<br/>\n\t\tCreate file C:\\garden\\src\\stickyfroggy.h? [y/n]\n\t</code>\n</p>\n\n<p>\n\tThe program will now have created the files <code>/src/stickyfroggy.h</code>\n\tand <code>/src/stickyfroggy.cpp</code>.\n</p>\n\n<p>\n\tLet's open up stickyfroggy.h and take a look inside:\n</p>\n\n<code>\n\t<span class=\"codecomm\">// Generated by Tramway SDK Code generator</span><br/>\n\t<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entity.h</span>&gt;<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/serialization.h</span>&gt;<br/>\n\t<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">templates/macros.h</span>&gt;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">using namespace</span> tram;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">class</span> <span class=\"codeclass\">StickyFroggy</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Entity</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;<span class=\"codefunc\">StickyFroggy</span>(<span class=\"codekeyw\">const</span> <span class=\"codeclass\">SharedEntityData</span>&amp;, <span class=\"codekeyw\">const</span> <span class=\"codeclass\">ValueArray</span>&amp;);<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_ENTITY_NAME(<span class=\"codelit\">\"stickyfroggy\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">UpdateParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">SetParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Load</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Serialize</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">EventHandler</span>(<span class=\"codeclass\">Event</span>&amp; evt);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">MessageHandler</span>(<span class=\"codeclass\">Message</span>&amp; msg);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> <span class=\"codefunc\">GetType</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">static void</span> <span class=\"codefunc\">Register</span>();<br/>\n\t};\n</code>\n\n<p>\n\tLet's add some properties to the class!\n</p>\n\n<code>\n<span class=\"codekeyw\">class</span> <span class=\"codeclass\">StickyFroggy</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Entity</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;<span class=\"codefunc\">StickyFroggy</span>(<span class=\"codekeyw\">const</span> <span class=\"codeclass\">SharedEntityData</span>&amp;, <span class=\"codekeyw\">const</span> <span class=\"codeclass\">ValueArray</span>&amp;);<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_ENTITY_NAME(<span class=\"codelit\">\"stickyfroggy\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">UpdateParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">SetParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Load</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Serialize</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">EventHandler</span>(<span class=\"codeclass\">Event</span>&amp; evt);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">MessageHandler</span>(<span class=\"codeclass\">Message</span>&amp; msg);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> <span class=\"codefunc\">GetType</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">static void</span> <span class=\"codefunc\">Register</span>();<br/>\n\t<span class=\"codekeyw\">private</span>:\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_KEY_VALUE(<span class=\"codelit\">\"model\"</span>, <span class=\"codelit\">\"frog-marker\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"viewmodel\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> viewmodel = <span class=\"codelit\">\"frog\"</span>;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"stickiness\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">float</span> stickiness = <span class=\"codelit\">1.5f</span>;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"roll\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">bool</span> egg;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_VIRTUAL_PROPERTY(<span class=\"codekeyw\">int32_t</span>, <span class=\"codelit\">\"egg-count\"</span>, FIELD_SERIALIZE, <span class=\"codelit\">11</span>)<br/>\n};\n</code>\n\n<p>\n\tAfter editing entity properties, we need to create/regenerate code and data\n\tfiles\n</p>\n\n\n<p>\n\t<code>\n\t\tC:\\codegen.py refresh StickyFroggy\n\t</code>\n</p>\n\n<p>\n\tThis command creates or overwrites these files\n</p>\n\n<p>\n\t<code>\n\t\t/src/stickyfroggy.inl<br/>\n\t\t/data/stickyfroggy.[number].entdef\n\t</code>\n</p>\n\n<p>\n\tIf you want, you can take a look at the generated code in\n\t<code>stickyfroggy.inl</code> file, but don't bother editing it &mdash; it\n\twill be overwritten every time you run the refresh command.\n</p>\n\n<p>\n\tLet's look at the generated <code>.entdef</code> file\n</p>\n\n<code>\nbegin<br/>\n&nbsp;&nbsp;# this comes from TRAM_SDK_ENTITY_NAME() macro<br/>\n&nbsp;&nbsp;name stickyfroggy<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# this comes from TRAM_SDK_KEY_VALUE() macro<br/>\n&nbsp;&nbsp;model  frog-marker<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# these come from TRAM_SDK_PROPERTY()<br/>\n&nbsp;&nbsp;# and TRAM_SDK_VIRTUAL_PROPERTY() macros<br/>\n&nbsp;&nbsp;field string viewmodel<br/>\n&nbsp;&nbsp;field float stickiness<br/>\n&nbsp;&nbsp;field bool roll<br/>\n&nbsp;&nbsp;field int  egg-count<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# this is randomly generated index<br/>\n&nbsp;&nbsp;version 193035075<br/>\nend\n</code>\n\n<h2>\n\tSupported types\n</h2>\n\n<hr/>\n\n<ul>\n\t<li><code>name_t</code></li>\n\t<li><code>bool</code></li>\n\t<li><code>int</code></li>\n\t<li><code>float</code></li>\n\t<li><code>double</code></li>\n\t<li><code>int8_t</code></li>\n\t<li><code>int16_t</code></li>\n\t<li><code>int32_t</code></li>\n\t<li><code>uint8_t</code></li>\n\t<li><code>uint16_t</code></li>\n\t<li><code>uint32_t</code></li>\n\t<li><code>vec2</code></li>\n\t<li><code>vec3</code></li>\n\t<li><code>vec4</code></li>\n\t<li><code>quat</code></li>\n</ul>\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/documentation.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Documentation | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Documentation | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDocumentation\n</h1>\n\n<p>\n\tThis page contains links to the pages of the framework documentation. These\n\tpages are meant to be used as a general, high-level overview of the\n\tframework's features.\n</p>\n\n<p>\n\tIf you're looking for low-level C++ API documentation, the reference\n\tgenerated by doxygen <a href=\"cppapi/index.html\">can be found here</a>.\n</p>\n\n<p>\n\tIt is also worth noting here, that all of the C++ code examples omit the\n\tmain framwork namespace. This is equivalent to adding this line of code\n\tto the beginning of your source code files:\n</p>\n\n<code>\n\t<span class=\"codekeyw\">using namespace</span> tram;\n\t<br/>\n\t<br/>\n</code>\n\n<h3>Runtime</h3>\n\n<ul>\n\t<li><a href=\"documentation/audio.html\">Audio</a></li>\n\t<li><a href=\"documentation/components.html\">Components</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/components/animation.html\">Animation</a></li>\n\t\t<li><a href=\"documentation/components/audio.html\">Audio</a></li>\n\t\t<li><a href=\"documentation/components/controller.html\">Controller</a></li>\n\t\t<li><a href=\"documentation/components/light.html\">Light</a></li>\n\t\t<li><a href=\"documentation/components/particle.html\">Particle</a></li>\n\t\t<li><a href=\"documentation/components/physics.html\">Physics</a></li>\n\t\t<li><a href=\"documentation/components/player.html\">Player</a></li>\n\t\t<li><a href=\"documentation/components/render.html\">Render</a></li>\n\t\t<li><a href=\"documentation/components/sprite.html\">Sprite</a></li>\n\t\t<li><a href=\"documentation/components/template.html\">Template</a></li>\n\t\t<li><a href=\"documentation/components/trigger.html\">Trigger</a></li>\n\t</ul>\n\t<li><a href=\"documentation/entities.html\">Entities</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/entities/crate.html\">Crate</a></li>\n\t\t<li><a href=\"documentation/entities/decoration.html\">Decoration</a></li>\n\t\t<li><a href=\"documentation/entities/light.html\">Light</a></li>\n\t\t<li><a href=\"documentation/entities/marker.html\">Marker</a></li>\n\t\t<li><a href=\"documentation/entities/player.html\">Player</a></li>\n\t\t<li><a href=\"documentation/entities/sound.html\">Sound</a></li>\n\t\t<li><a href=\"documentation/entities/staticwobj.html\">Static World Object</a></li>\n\t\t<li><a href=\"documentation/entities/trigger.html\">Trigger</a></li>\n\t</ul>\n\t<li><a href=\"documentation/extensions.html\">Extensions</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/extensions/camera.html\">Camera</a></li>\n\t\t<li><a href=\"documentation/extensions/kitchensink.html\">Kitchensink</a></li>\n\t\t<ul>\n\t\t\t<li><a href=\"documentation/extensions/kitchensink/animationtable.html\">Animation Table</a></li>\n\t\t\t<li><a href=\"documentation/extensions/kitchensink/soundtable.html\">Sound Table</a></li>\n\t\t</ul>\n\t\t<li><a href=\"documentation/extensions/menu.html\">Menu</a></li>\n\t\t<li><a href=\"documentation/extensions/scripting.html\">Scripting</a></li>\n\t</ul>\n\t\n\t<li><a href=\"documentation/framework.html\">Framework</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/framework/async.html\">Async</a></li>\n\t\t<li><a href=\"documentation/framework/core.html\">Core</a></li>\n\t\t<li><a href=\"documentation/framework/entity.html\">Entity</a></li>\n\t\t<li><a href=\"documentation/framework/entitycomponent.html\">EntityComponent</a></li>\n\t\t<li><a href=\"documentation/framework/event.html\">Event</a></li>\n\t\t<li><a href=\"documentation/framework/file.html\">File</a></li>\n\t\t<li><a href=\"documentation/framework/graph.html\">Graph</a></li>\n\t\t<li><a href=\"documentation/framework/gui.html\">GUI</a></li>\n\t\t<li><a href=\"documentation/framework/language.html\">Language</a></li>\n\t\t<li><a href=\"documentation/framework/loader.html\">Loader</a></li>\n\t\t<li><a href=\"documentation/framework/logging.html\">Logging</a></li>\n\t\t<li><a href=\"documentation/framework/math.html\">Math</a></li>\n\t\t<li><a href=\"documentation/framework/message.html\">Message</a></li>\n\t\t<li><a href=\"documentation/framework/navmesh.html\">Navmesh</a></li>\n\t\t<li><a href=\"documentation/framework/path.html\">Path</a></li>\n\t\t<li><a href=\"documentation/framework/resource.html\">Resource</a></li>\n\t\t<li><a href=\"documentation/framework/script.html\">Script</a></li>\n\t\t<li><a href=\"documentation/framework/serialization.html\">Serialization</a></li>\n\t\t<li><a href=\"documentation/framework/settings.html\">Settings</a></li>\n\t\t<li><a href=\"documentation/framework/signal.html\">Signal</a></li>\n\t\t<li><a href=\"documentation/framework/stats.html\">Stats</a></li>\n\t\t<li><a href=\"documentation/framework/system.html\">System</a></li>\n\t\t<li><a href=\"documentation/framework/transition.html\">Transition</a></li>\n\t\t<li><a href=\"documentation/framework/type.html\">Type</a></li>\n\t\t<li><a href=\"documentation/framework/ui.html\">UI</a></li>\n\t\t<li><a href=\"documentation/framework/uid.html\">UID</a></li>\n\t\t<li><a href=\"documentation/framework/value.html\">Value</a></li>\n\t\t<li><a href=\"documentation/framework/worldcell.html\">WorldCell</a></li>\n\t</ul>\n\t<li><a href=\"documentation/physics.html\">Physics</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/physics/collisionmodel.html\">CollisionModel</a></li>\n\t\t<li><a href=\"documentation/physics/collisionshape.html\">CollisionShape</a></li>\n\t</ul>\n\t<li><a href=\"documentation/platform.html\">Platform</a></li>\n\t<li><a href=\"documentation/render.html\">Render</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/render/aabb.html\">AABB</a></li>\n\t\t<li><a href=\"documentation/render/animation.html\">Animation</a></li>\n\t\t<li><a href=\"documentation/render/material.html\">Material</a></li>\n\t\t<li><a href=\"documentation/render/model.html\">Model</a></li>\n\t\t<li><a href=\"documentation/render/sprite.html\">Sprite</a></li>\n\t</ul>\n</ul>\n\n<h3>Level editor</h3>\n\n<h3>Map compilers</h3>\n\n<h3>Blender plugins</h3>\n\n<h3>CLI tools</h3>\n<ul>\n\t<li><a href=\"documentation/tools/codegen.html\">Codegen.py</a></li>\n</ul>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/enterprise.css",
    "content": "body {\n\tfont-size: 12pt;\n\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n}\n\n.container {\n\twidth: 1000px;\n\tborder-radius: 15px;\n\tbox-shadow: 5px 5px 0px rgba(25, 25, 25, 0.8);\n\tpadding:10px;\n}\n\n.left-pane {\n\twidth: 200px;\n\t/*padding: 10px;*/\n\tpadding-left: 5px;\n\tpadding-top: 10px;\n}\n\n.middle-pane {\n\t/*padding: 10px;*/\n\tpadding-right: 5px;\n\tpadding-top: 10px;\n}\n\n.right-pane {\n\tdisplay: none;\n}\n\n/* hide the spinning toilet */\n.animated {\n\tdisplay: none;\n}\n\n\n.titlebar {\n\tposition: relative;\n\tpadding-bottom: 10px;\n}\n\n.titlebar .links {\n\tposition: absolute;\n\tbottom: 10px;\n\tright: 0;\n\tpadding-right: 5px;\n\tpadding-bottom: 2px\n}\n\n.menubar a, .menubar a:link, .menubar a:visited, .menubar a:focus,\n\t\t\t.menubar a:active {\n\tcolor: white;\n}\n\n.menubar a:hover {\n\tcolor: white;\n\ttext-decoration: none;\n}\n\n.menubar {\n\tfont-family: Verdana, Arial, Helvetica, sans-serif;\n\theight: 25px;\n\tpadding-bottom: 5px;\n\tborder-radius: 15px;\n\tpadding-left: 10px;\n\tbox-shadow: 0px 3px 0px #2222aa;\n}\n\n.navbar {\n\twidth: 100%;\n}\n\n.navbar .left {\n\twidth: 50px;\n}\n\n.navbar .middle {\n\ttext-align: center;\n}\n\n.navbar .right {\n\twidth: 50px;\n\ttext-align: right;\n}\n\n.resizable {\n\twidth: 640px;\n}\n\nh1, h2, h3, h4, h5 {\n\tmargin-top: 0;\n\tmargin-bottom: 0;\n}\n\np {\n\tmargin-top: 4px;\n\tmargin-bottom: 4px;\n}\n\nh1 {\n\tfont-size: 20pt;\n}\n\nh2 {\n\tfont-size: 16pt;\n}\n\nh3 {\n\tfont-size: 14pt;\n}\n\nh4 {\n\tfont-size: 12pt;\n}\n\nul {\n\tmargin-top: 0;\n\tpadding-left: 20px;\n}\n\n.codefunc {\n\tcolor: blue;\n}\n\n.codeclass {\n\tcolor: blue;\n}\n\n.codekeyw {\n\tcolor: red;\n}\n\n.codecomm {\n\tcolor: green;\n}\n\n.codelit {\n\tcolor: orange;\n}\n\n.codespac {\n\tcolor: blue;\n}\n\n.codeexample {\n\twhite-space: pre;\n}\n\n.infobox {\n\t/* margin: 0px 10px 0px 10px;*/\n\tmargin: 10px 0px 10px 0px;\n\tpadding: 10px 15px 10px 15px;\n\tborder: 2px groove gray;\n}"
  },
  {
    "path": "docs/features.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Features | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Features | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFeatures\n</h1>\n\n<ul>\n<li>Photo-realistic graphics.\n<ul>\n<li>Textured 3D models.</li>\n<li>Gouraud shading.</li>\n<li>24-bit color.</li>\n<!--<li>Fog.</li>-->\n<li>Night and day conditions.</li>\n<li>Screen resolutions from 320x200 to 800x600.</li>\n</ul>\nAll of that together provides very realistic appearance.\n</li>\n<li>Data oriented design.\n<ul><li>Engine core data is laid out in memory in the most efficient way possible as to increase the data processing speed. The core library also provides templates so that you can have efficient data too.</li></ul>\n</li>\n<li>Hyperrealistic physics simulation provided by the Bullet Physics library.</li>\n<li>Open-world style level streaming, including assets.</li>\n<li>Runs on virtually any computer from the last 15 years.</li>\n<li>Very fast and environmentally-friendly C++20 code performance.</li>\n<li>Windows XP and Linux support.</li>\n</ul>\n\n<h1>\n\tImages\n</h1>\n\n<center>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen01.png\"><img src=\"images/features/screen01.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen02.png\"><img src=\"images/features/screen02.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen03.png\"><img src=\"images/features/screen03.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen04.png\"><img src=\"images/features/screen04.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen05.png\"><img src=\"images/features/screen05.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen06.png\"><img src=\"images/features/screen06.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen07.png\"><img src=\"images/features/screen07.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen20.png\"><img src=\"images/features/screen20.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen21.png\"><img src=\"images/features/screen21.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen08.png\"><img src=\"images/features/screen08.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen09.png\"><img src=\"images/features/screen09.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen10.png\"><img src=\"images/features/screen10.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen11.png\"><img src=\"images/features/screen11.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen22.png\"><img src=\"images/features/screen22.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen23.png\"><img src=\"images/features/screen23.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen24.png\"><img src=\"images/features/screen24.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen25.png\"><img src=\"images/features/screen25.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen40.png\"><img src=\"images/features/screen40.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen41.png\"><img src=\"images/features/screen41.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen42.png\"><img src=\"images/features/screen42.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen43.png\"><img src=\"images/features/screen43.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen44.png\"><img src=\"images/features/screen44.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen45.png\"><img src=\"images/features/screen45.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen46.png\"><img src=\"images/features/screen46.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen47.png\"><img src=\"images/features/screen47.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen48.png\"><img src=\"images/features/screen48.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen52.png\"><img src=\"images/features/screen52.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen50.png\"><img src=\"images/features/screen50.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen49.png\"><img src=\"images/features/screen49.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen51.png\"><img src=\"images/features/screen51.gif\"/></a>\n\n</center>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/generate.bat",
    "content": "py page_generator.py\npause"
  },
  {
    "path": "docs/googlef0d2a216ce53fc15.html",
    "content": "google-site-verification: googlef0d2a216ce53fc15.html"
  },
  {
    "path": "docs/index.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link menu-open-page\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1 style=\"font-family: serif;\">\n\tDid you know...\n</h1>\n\n<i>\n\tThat the Tramway Drifting and Dungeon Exploration Simulator Software\n\tDevelopment Kit is the bestest 3D graphics package?\n</i>\n\n<hr/>\n\n<h2>\n\tWhat is goings on?\n</h2>\n\n<hr/>\n\n<p>\n\tVersion 0.1.1 is out. You can finally download an installer. Like a wizard\n\tinstaller. It will install the engine and all of the utilities. Very\n\tprofessional. 99% of other engines can't to that!\n</p>\n\n<p>\n\tThe tools still are very glitchy and everything breaks all the time. But at\n\tleast the engine is capable of shipping. Shipping real applications. You can\n\tactually do that now.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/watersnooter.png\">\n\t\t<img border=\"0\" src=\"images/posts/watersnooter.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tRay-tracing render backend can now do transparency, btw.\n\t</i>\n</center>\n\n<p>\n\tWhat we'll do next:\n</p>\n\n<ul>\n\t<li>Ship apps.</li>\n\t<li>Ship some more apps.</li>\n\t<li>Analyze deficiencies.</li>\n\t<li>Fix bugs. Fix deficiencies. Fix everything.</li>\n</ul>\n\n<hr/>\n\n<center>\n\t<h3>\n\t\tDesign Patterns Used\n\t</h3>\n\t\n\t<h1>\n\t\t82%\n\t</h1>\n\t\n\t<a href=\"patterns.html\">Click here to learn more.</a>\n</center>\n\n<hr/>\n\n<h2>\n\tTramway SDK now ships applications\n</h2>\n\n<hr/>\n\n<p>\n\tTramway SDK has now been used on actual, shipping applications. You can't\n\tsay that about 99% of other graphics engines, since they don't ship. Like\n\tdon't ship. Ever. Never will ship either.\n</p>\n\n<p>\n\tWe have compiled a list of the shipped projects:\n</p>\n\n<ul>\n\t<li><a target=\"_blank\" href=\"https://kaimlatechnology.com/saas/\">Greeting Cards</a></li>\n\t<li><a target=\"_blank\" href=\"https://kaimlatechnology.com/sea/\">Undersea Simulation</a></li>\n\t<li><a target=\"_blank\" href=\"https://store.steampowered.com/app/3941230/Milk_Racing/\">Milk Racing</a> (coming soon)</li>\n</ul>\n\n<hr/>\n\n<h2>\n\tWhy we use use sphere maps instead of cubemaps\n</h2>\n\n<hr/>\n\n<p>\n\t<i>Big Engine</i> wants you to think that cubemaps are superior to sphere\n\tmaps and that sphere mapping is obsolete. Nothing could be further from the\n\ttruth.\n</p>\n\n<p>\n\t<i>They</i> keep insisting that sphere maps supposedly suffer from\n\t<a href=\"https://en.wikipedia.org/wiki/Cube_mapping\">&laquo;image\n\tdistortion&raquo;, &laquo;viewpoint\tdependency&raquo; and\n\t&laquo;computational inefficiency&raquo;</a>. This is demonstrably false.\n</p>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/shiny.png\">\n\t\t<img border=\"0\" src=\"images/posts/shiny.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tWhere's the image distortion? It's a perfect reflection!\n\t</i>\n</center>\n\n<br/>\n\n<p>\n\tSphere maps might have been viewport dependent in the 1980s, but since at\n\tleast 1998(!) there\thave existed\n\t<a href=\"https://dl.acm.org/doi/10.1145/285305.285310\">techniques</a> that\n\tcan overcome this limitation by using a single <code>if()</code> statement.\n</p>\n\n<p>\n\tConsider the standard approach to sampling a cubemap:\n</p>\n\n<code class=\"codeexample\">\nauto sample_cubemap = [=](vec3 nrm) {\n\tchar* image = nullptr;\n\tfloat axis; vec2 uv;\n\n\tvec3 abs = glm::abs(nrm);\n\n\tbool x_positive = nrm.x > 0;\n\tbool y_positive = nrm.y > 0;\n\tbool z_positive = nrm.z > 0;\n\n\tif (z_positive\n\t\t\t&&abs.z >=abs.x && abs.z >= abs.y) {\n\t\timage = front;\n\t\tuv.x = nrm.x;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.z;\n\t} else if (!x_positive\n\t\t\t&& abs.x >= abs.y && abs.x >= abs.z) {\n\t\timage = left;\n\t\tuv.x = nrm.z;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.x;\n\t} else if (x_positiv\n\t\t\t&& abs.x >= abs.y && abs.x >= abs.z) {\n\t\timage = right;\n\t\tuv.x = -nrm.z;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.x;\n\t} else if (!z_positive\n\t\t\t&& abs.z >= abs.x && abs.z >= abs.y) {\n\t\timage = back;\n\t\tuv.x = -nrm.x;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.z;\n\t} else if (y_positive\n\t\t\t&& abs.y >= abs.x && abs.y >= abs.z) {\n\t\timage = top;\n\t\tuv.x = nrm.x;\n\t\tuv.y = -nrm.z;\n\t\taxis = abs.y;\n\t}  else if (!y_positive\n\t\t\t&& abs.y >= abs.x && abs.y >= abs.z) {\n\t\timage = bottom;\n\t\tuv.x = nrm.x;\n\t\tuv.y = nrm.z;\n\t\taxis = abs.y;\n\t}\n\n\tuv = 0.5f * (uv / axis + 1.0f);\n\n\tif (!image) {\n\t\treturn std::tuple&lt;char,\n\t\t\t\t\t\t\tchar,\n\t\t\t\t\t\t\tchar&gt;{uv.y * 255.0f,\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tuv.x * 255.0f};\n\t}\n\n\treturn get_pixel(image, uv);\n};\n</code>\n\n<p>\n\tNot only is it whole 47(!) lines of code, it contains 6 <code>if/else</code>\n\tstatements. Remember that shaders can't execute those and only those\n\t<code>if/else</code> statements which evaluate to a <code>true</code> value.\n\tInstead they will always execute every single branch and will throw\n\taway the results of the <code>false</code> branches.\n</p>\n\n<p>\n\tNow consider our implementation of sphere map sampling code:\n</p>\n\n<code class=\"codeexample\">\nvec2 sphere_map_coords = vec2(normal.x * 0.25 + 0.25,\n\t\t\t\t\t\t\tnormal.y * 0.5 + 0.5);\nif (normal.z > 0.0) sphere_map_coords.x += 0.5;\n</code>\n\n<p>\n\tOnly 2(!) lines of code with a single <code>if/else</code> that the compiler\n\tcan optimize away to a single conditional move operation, resulting in\n\tessentially no branching.\n</p>\n\n<p>\n\tNow consider the fact that cubemaps consist of the 6 square sides of a cube.\n\tA lot of GPUs support only textures with sizes that are a power of two. If\n\tyou put these 6 sides of a cube into a single texture, you will waste 25% of\n\tthe space in the texture.\n</p>\n\n<p>\n\tSphere maps leave only 21% of space empty. If you use a slightly different\n\tprojection (paraboloid), you can reduce this number to 0%.\n</p>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/wastedspace.png\">\n\t\t<img border=\"0\" src=\"images/posts/wastedspace.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tCubemaps waste space.\n\t</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/potentiallyusable.png\">\n\t\t<img border=\"0\" src=\"images/posts/potentiallyusable.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tSphere maps fit perfectly.\n\t</i>\n</center>\n\n<p>\n\tWithout a doubt, the push from <i>Big Engine</i> to use cubemaps is\n\tintentionally intended use up more RAM and GPU processing time to force\n\tusers to purchase more expensive GPUs.\n</p>\n\t\n<p>\n\tWe strongly encourage that you do not believe the lies and misinformation\n\tspread by <i>Big Engine</i> and instead do your own research.\n</p>\n\n<h2>\n\tVery large open world project\n</h2>\n\n<hr/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/verylarge.png\">\n\t\t<img border=\"0\" src=\"images/posts/verylarge.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tRendering a lot of 3D models.\n\t</i>\n</center>\n\n<p>\n\tMaking 3D models and placing them in the world. Will do a first pass and\n\tthen set up streaming.\n</p>\n\n<p>\n\tCurrently very slow performance due to a lot of draw calls. But could be\n\tbecause of Intel HD 4000 being bad. Will need to optimize.\n</p>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/3dmodeling.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Adding 3D models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Adding 3D models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAdding 3D models\n</h1>\n\n<hr/>\n\n<p>\n\tAfter becoming experts in the coloring of teapots, how about we replace the\n\tteapot model with something else?\n</p>\n\n<p>\n\tFirst of all, make sure that you have\n\t<a target=\"_blank\" href=\"http://blender.org\">Blender</a> either installed or\n\tdownloaded. After that, install the <code>tram_dynamic_obj_export.py</code>\n\tplugin which can be found in the <code>/devtools/exporters</code> directory\n\tin the main Tramway SDK repository.\n</p>\n\n<p>\n\tIf you have problems, or need a more detailed guide, take a look at the\n\t<a href=\"../documentation/blender.html\">exporter plugin</a> documentation\n\tpage.\n</p>\n\n<h2>\n\tCreating and exporting a monkey\n</h2>\n\n<hr/>\n\n<h4>\n\tStep 1: Create the monkey\n</h4>\n\n<p>\n\tLook at the top bar. Locate the <i>Add</i> button. Then perform the\n\t<i>Add</i> &raquo; <i>Mesh</i> &raquo; <i>Monkey</i> selection. A monkey\n\tshould appear in your Blender window.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport1.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport1.gif\"/>\n\t</a><br/>\n\t<i>This is where you find the monkey button.</i>\n</center>\n\n<h4>\n\tStep 2: Give the monkey a new material\n</h4>\n\n<p>\n\tNext we need to give the monkey a material. Add a material in the selection\n\ton the right side of the screen.\n</p>\n\n<center>\n\t<img src=\"monkeyexport2.gif\"/><br/>\n\t<i>This is where the new material button is.</i>\n</center>\n\n<p>\n\tLet's give the monkey the same material as the teapot. Rename the new\n\tmaterial to <code>teapot</code>.\n</p>\n\n<center>\n\t<img src=\"monkeyexport3.gif\"/><br/>\n\t<i>You can click on the name of the material to edit it.</i>\n</center>\n\n<h4>\n\tStep 3: Export!\n</h4>\n\n<p>\n\tFirst, make sure that the monkey object is still selected. Now look at the\n\ttop bar. Locate the <i>Add</i> button. Then perform the\n\t<i>File</i> &raquo; <i>Export</i> &raquo; <i>Tram Dynamic Exporter</i> selection. A file\n\tdialog should appear.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport4.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport4.gif\"/>\n\t</a><br/>\n\t<i>This is where you find the exporters.</i>\n</center>\n\n<p>\n\tYou will need to save the monkey to the <code>/data/models/</code>\n\tdirectory, so that the framework can find it. You don't have to name it\n\t<code>monkey.dymdl</code>, just remember to keep the file extension and to\n\tnot put any spaces in the file name.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport5.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport5.gif\"/>\n\t</a><br/>\n\t<i>The big blue button. It does the export.</i>\n</center>\n\n<h2>\n\tReplacing the teapot with a monkey\n</h2>\n\n<hr/>\n\n<p>\n\tNow we just need to swap out the teapot for the monkey. Change this line of\n\tcode:\n</p>\n\n<code>\n\t<del>teapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"teapot\"</span>)</del><br/>\n\tteapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"monkey\"</span>)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"monkeyfail.gif\"/><br/>\n\t<i>It appears that we are inside a monkey.</i>\n</center>\n\n<p>\n\tIt appears that the default Blender monkey is much larger than our teapot.\n\tLet's resize the monkey, so that we can better appreciate it:\n</p>\n\n<code>\n\tteapot:<span class=\"codefunc\">SetScale</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.5</span>, <span class=\"codelit\">0.5</span>, <span class=\"codelit\">0.5</span>))<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"monkeyexplorer.gif\"/><br/>\n\t<i>It is much easier to appreciate the monkey from the outside.</i><br/>\n\t<br/>\n</center>\n\n<h2>\n\tHow to texture a teapot\n</h2>\n\n<hr/>\n\n<p>\n\tGoing back into Blender, create another model. Maybe it will be another\n\tmonkey, maybe you will use Blender's teapot generation capabilities, or\n\tperhaps you will create your own.\n</p>\n\n<p>\n\tNow comes the difficult part. Open up\n\t<a target=\"_blank\" href=\"http://tuxpaint.org\">Tuxpaint</a> or some other\n\timage editing program and create a texture. It's best if you use an image\n\tsize which is powers of two, i.e. 32x32, 128x128, 256x128, etc.\n</p>\n\n<p>\n\tOnce it's done, save it in the <code>/data/textures/</code> directory. I \n\tdecided to name it <code>mybestwork.png</code>.\n</p>\n\n<center>\n\t<img src=\"creatingmybestwork.gif\"/><br/>\n\t<i>I am very proud of how this turned out.</i>\n</center>\n\n<p>\n\tBack in Blender, create the material the same way we did before. This time,\n\tmake sure that you give it the same name as you gave that texture image.\n\tOnce you do that, in the same material pane you should see a <i>Base\n\tColor</i> selection. Click on that and select <i>Image Texture</i>. Now\n\tclick on <i>Open</i> and find that image.\n</p>\n\n<p>\n\tThe last thing left to do is to finish up the UVs. Enter edit mode by \n\tpressing the <code>Tab</code> key. Select all of the model by pressing\n\t<code>Ctrl+A</code>. Click on the <i>UV</i> button in the top bar and then\n\tselect <i>Sphere Projection</i> or some othertexture projection. Not use\n\t<code>Tab</code> to get back into object mode and perform the export as\n\tbefore.\n</p>\n\n<p>\n\tChange the init script to load the new 3D model.\n</p>\n\n<center>\n\t<img src=\"mybestwork.gif\"/><br/>\n\t<i>My favorite teapot.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tIf you don't know how to already, learn to use Blender.\n\t</p>\n\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tCreate a 3D model with several different textures. Load it into the \n\t\tteapot viewer.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"scripting.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"materials.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/animations.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Adding Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Adding Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Adding Animations</h1>\n\n<p>\n\tFirst, make sure that you have installed the\n\t<a href=\"../documentation/blender.html\">Blender animation exporter\n\tplugin</a>. Next up, create a 3D model of something, create an armature for\n\tit and rig it.\n</p>\n\n\n<div class=\"infobox\">\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTramway SDK only allows 4 bones to influence a single vertex. Take this\n\t\tinto account when vertex weight painting. If the exporter sees that a\n\t\tsingle vertex has weights for more than 4 bones, it will pick only 4 of\n\t\tthe vertex groups that have the greatest weight for export.\n\t</p>\n</div>\n\n<p>\n\tFor the animations, you will need to open the Blender's <i>Action\n\tEditor</i>. Each exported animation will be a single action.\n</p>\n\n<p>\n\tWhen creating an animation, make sure that each bone that will be animated\n\thas a keyframe at frame zero and another keyframe at the end of the\n\tanimation, on whichever frame you decide to put it.\n</p>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tUse only <i>LocRotScale</i> keyframes, otherwise the exporter will\n\t\texplode and your computer will catch on fire. This might be fixed \n\t\tsometime in the future.\n\t</p>\n\t\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTramway SDK only uses linear interpolation, so make sure to set it in \n\t\tyour keyframes, so that you see the animation in Blender just like it\n\t\twill look like when rendered by the framework.\n\t</p>\n\t\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tSince animations are resources with names, do not use a name with any\n\t\tspaces for your action name.\n\t</p>\n</div>\n\n<p>\n\tAfter the animation or animations are finished, select\n\t<i>File</i> &raquo; <i>Export</i> &raquo; <i>Tram Animation Exporter</i>\n\toption. In the file dialog, navigate to <code>/data/animations/</code>\n\tdirectory and click the <i>Export Tram Animation</i> button.\n</p>\n\n<p>\n\tEach Blender action will get saved into its own animation file.\n</p>\n\n<p>\n\tIf you want an example of a rigged 3D model and an animation, take a look at\n\tthe <code>/assets/toilet.blend/</code> file.\n</p>\n\n<h2>\n\tPlaying the animation\n</h2>\n\n<hr/>\n\n<p>\n\tFirst, set up the 3D model.\n</p>\n\n<code>\n\ttoilet = tram.components.<span class=\"codefunc\">Render</span>()<br/>\n\ttoilet:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"toilet\"</span>)<br/>\n\ttoilet:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tThen, let's load the Animation which we created.\n</p>\n\n<code>\n\tanimation = tram.render.animation.<span class=\"codefunc\">Find</span>(<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codelit\">\"toilet-lid-open-close\"</span>)<br/>\n\tanimation:<span class=\"codefunc\">Load</span>()\n</code>\n\n<p>\n\tNext, let's set up the\n\t<a href=\"../documentation/components/animation.html\">AnimationComponent</a>,\n\twhich will be playing our animation.\n</p>\n\n<code>\n\tarmature = tram.components.<span class=\"codeclass\">Animation</span>()<br/>\n\tarmature:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"toilet\"</span>)<br/>\n\tarmature:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tAfter both the Render and the Animation components have been initialized, we\n\tcan link them together.\n</p>\n\n<code>\n\ttoilet:<span class=\"codefunc\">SetArmature</span>(armature)\n</code>\n\n<p>\n\tFinally, we can play back the Animation on the AnimationComponent, which\n\twill be visible on the RenderComponent, to which we linked it to.\n</p>\n\n<code>\n\tarmature:<span class=\"codefunc\">Play</span>(<span class=\"codelit\">\"toilet-lid-open-close\"</span>)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"animatedtoilet.gif\"/><br/>\n\t<i>Animation being played on a 3D model.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tThe example above shows only the most basic animation playback option.\n\t\tTry changing the animation playback parameters. Try pausing, continuing\n\t\tand stopping animations. Fade them in and fade them out.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"materials.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"pingpong.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/cake.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Making a cake simulator | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Making a cake simulator | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Making a cake simulator</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"platforms.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<!--<td class=\"right\"><a href=\"structure.html\">Next</a> &raquo;</td>-->\n\t\t<td class=\"right\"></td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/cameras.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Platforms and stuff</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"walking.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"platforms.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/desktop.ini",
    "content": "[ViewState]\nMode=\nVid=\nFolderType=Generic\n"
  },
  {
    "path": "docs/learn/getstarted.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Getting started | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link menu-open-page\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Getting started | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Getting started</h1>\n\n<hr/>\n\n<p>\n\tIf you already know how to C++ and are very good at it, you should be able\n\tto compile the code that can be found in the Tramway SDK repository.\n</p>\n\t\n<p>\n\tThis article will cover the usage of the framework for beginners who are\n\teither scared of C++ or just bad at it. I tried to create the LUA scripting\n\tAPI in a way that is very close to the underlying C++ API, so after you\n\tovercome your fear of C++ or get better at it, you should be able to switch\n\tto it rather easily.\n</p>\n\n<p>\n\tBefore starting, evaluate yourself and make sure that you possess the\n\tfollowing qualities:\n</p>\n\n<ul>\n\t<li>Good computer skills;</li>\n\t<li>Decent programming skills;</li>\n\t<li>Basic maths;</li>\n\t<li>Knowledge of game engine concepts.</li>\n</ul>\n\t\n<p>\n\tIf you do not meet these requirements, consider visiting your local public\n\tlibrary, signing up for computer literacy courses or finishing your \n\tsecondary education (if applicable).\n</p>\n\n<h3>Setting up your workspace</h3>\n\n<hr/>\n\n<p>\n\tBefore beginning, it would be worthwhile to set up your virtual workspace.\n\tMy personal preference is to dump everything into a directory located on\n\tmy <code>Desktop</code> on Windows or in my <code>home</code> directory\n\ton Linux.\n</p>\n\n<p>\n\tDecide where you will put your workspace directory and create it. Name it\n\tsomething descriptive, like <code>tramsdk</code>, <code>projects</code>,\n\t<code>my_games</code> or <code>IMPORTANT</code>. Customize the icon. Add a\n\tshortcut to your start menu or a start menu equivalent.\n</p>\n\n<p>\n\tNext up, you will need to acquire the framework source code. Even if you use\n\tpre-built binaries, the source code repository contains many useful Python\n\tscripts.\n</p>\n\n<p>\t\n\tDownload the <a href=\"https://github.com/racenis/tram-sdk\">\n\trepository</a>, either as a .zip file from the Github web interface, or\n\tclone it through the git program. After that, download the\n\t<a href=\"https://github.com/racenis/tram-template\">template\trepository</a>,\n\tjust like you downloaded the main framework repository.\n</p>\n\n<h3>Creating your first app.</h3>\n\n<hr/>\n\n<p>\n\tCopy the directory and name it something descriptive, like\n\t<code>my-app</code>. You will probably do this every time\n\tyou create a new app using the framework. Navigate into this directory.\n</p>\n\n<p>\n\tIf you're using Windows, then the template repository already contained\n\tbinaries for you. On Linux, you should take a look at the contents of the\n\t<code>maketool.ini</code> file. Try running <code>maketool.py</code> found\n\tin the <code>devtools</code> directory of the main framework repository,\n\twhile having this directory as the working directory. If you are using\n\tLinux, then you're probably very clever, you should be able to figure this \n\tout.\n</p>\n\n<p>\n\tThe executable of the app is named <code>template.exe</code>, you might want\n\tto rename it. Double-click on it or run it through command line and a window\n\twith a teapot should appear. You can rotate the teapot by pressing the\n\tarrow keys on your keyboard.\n</p>\n\n<center>\n\t<img src=\"teapotexplorer.gif\"/><br/>\n\t<i>This is what you should be seeing.</i>\n</center>\n\n<p>\n\tIf a window does not appear, check if your monitor is plugged in and turned\n\ton. Many users make this simple mistake.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"whatis.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"structure.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/materials.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Adding Materials | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Adding Materials | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Adding Materials</h1>\n\n<hr/>\n\n<p>\n\tIf you followed the last guide and made your own teapot, you might have\n\tnoticed that the teapot is not shiny. Not shiny at all! Also the texture\n\twas pixelated. Very pixelated!\n</p>\n\n<p>\n\tThe reason for this is very simple &ndash; by default all materials are\n\tmatte and not at all shiny. However, we can override this behavior by adding\n\ta material definition ourselves, instead of letting the framework create a\n\tdefault one.\n</p>\n\n<p>\n\tOpen up the <code>/data/material.list</code> file in a text editor. What you\n\twill notice is a table of material definitions. Somewhere near the end you\n\tshould find the <code>teapot</code> material that we gave the monkey 3D\n\tmodel.\n</p>\n\n<h2>\n\tWhat do all of the values do?\n</h2>\n\n<hr/>\n\n<h4>\n\tMaterial name\n</h4>\n\n<p>\n\tThis is the name of the material. It is used to reference it, such as by 3D\n\tmodels. It is also used to lookup the texture image for the material.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tThis tells the renderer how to render the material. For the OpenGL backend\n\tthis also determines which shader will be used to render this material.\n</p>\n\n<h4>\n\tFilter\n</h4>\n\n<p>\n\tThis tells the renderer whether to blur the textures when upscaling them.\n\tThis is why they look pixelated &endash; by default blurring is disabled.\n</p>\n\n<h4>\n\tProperty\n</h4>\n\n<p>\n\tThis describes aural and other physical properties about the material. This\n\tis not directly used by the renderer. We can ignore this for now.\n</p>\n\n<h4>\n\tColor\n</h4>\n\n<p>\n\tThis is the color of the material. You might have noticed that a lot of \n\tmaterials have the white color. This is because if you use a texture image\n\tand if you want it to look exactly it looks in your image editor, you need\n\tto set it to white, since the material color and the texture color is\n\tmultiplied together. Changing this will tint the texture image, or just set\n\tthe material's color if there is no texture.\n</p>\n\n<h4>\n\tSpecularity\n</h4>\n\n<p>\n\tThis determines how intense the specularity of the material will be. Can be\n\tset in the range from 0.0 to 1.0.\n</p>\n\n<h4>\n\tSpecularity\n</h4>\n\n<p>\n\tThis determines how narrow or wide the specular reflection will be. Needs to\n\tbe set to at least 1.0 or higher.\n</p>\n\n<h4>\n\tSpecular Transparency\n</h4>\n\n<p>\n\tThis determines whether the specular reflection will be multiplied with the\n\tmaterial's color, or added to it. Can be set in the range from 0.0 to 1.0.\n</p>\n\n<h4>\n\tSource\n</h4>\n\n<p>\n\tThis determines the source of the material's texture image. If set to\n\t<code>same</code>, the material's name will be used to lookup an image from\n\tthe <code>/data/materials</code>, directory. If set to <code>none</code>,\n\tthe material will have no texture and instead will use its color for\n\tdisplay. Finally, if this parameter is set to anything else, this will be\n\tinterpreted as the name of another material and this material will use the\n\tother's texture image.\n</p>\n\n<p>\n\tThis is useful if, for example, you want to create multiple materials with\n\tthe same texture, but with different specular, color or other parameters.\n\tThis way all of the materials will share the same texture image in GPU\n\tmemory, thereby saving some space there.\n</p>\n\n<h2>\n\tFixing the teapot material\n</h2>\n\n<hr/>\n\n<p>\n\tAn easy way to do this would be to duplicate the <code>teapot</code>\n\tmaterial's line in the file and to replace the material's name with you\n\tmaterial's name. Also don't forget to change the source from\n\t<code>none</code> to <code>same</code>. Perhaps also change the transparency\n\tfrom <code>0.0</code> to <code>1.0</code>, to make the teapot look less\n\tmetallic.\n</p>\n\n<center>\n\t<img src=\"mybestworkfixed.gif\"/><br/>\n\t<i>My best work: now shiny again.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTry changing your teapot's material's properties. See what changing them\n\t\tto different values does.\n\t</p>\n\t\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tUse the texture source option and the color parameter to create\n\t\tdifferent colored variations of your material.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"3dmodeling.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"animations.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/physics.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Physics</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"pingpong.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"render.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/pingpong.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Making Ping Pong | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Making Ping Pong | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Making Ping Pong</h1>\n\n<p>\n\tFirst of all, we will be using debug lines. Debug lines are drawn on layer 1\n\tand up to this point we have been using layer 0, which is the default layer\n\tfor RenderComponents.\n</p>\n\n<p>\n\tBy default, when calling <code>tram.render.SetViewPosition()</code>, it will\n\taffect the view position in the layer 0, so for the debug lines to appear\n\tcorrectly, we will need to set the view in the layer 1 as well.\n</p>\n\n<code>\n\tlocal view_pos = tram.math.DIRECTION_FORWARD * -3.0<br/>\n\t<br/>\n\ttram.render.SetViewPosition(view_pos, 0)<br/>\n\ttram.render.SetViewPosition(view_pos, 1)<br/>\n</code>\n\n<p>\n\tMost ping pongy games are 2D, but Tramway SDK uses 3D graphics. How do we\n\treconciliate this? The easiest way would be to just disregard the Z axis.\n\tWhenever we need to pass in a Vec3, we will set the third component to 0.0.\n</p>\n\n<p>\n\tLet's set up the ball and the paddles.\n</p>\n\n<code>\n\tball = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(0.0, 0.0, 0.0),<br/>\n\t&nbsp;&nbsp;velocity = tram.math.vec3(0.02, 0.02, 0.0)<br/>\n\t}<br/>\n\t<br/>\n\tpaddle_left = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(-2.0, 0.0, 0.0)<br/>\n\t}<br/>\n\t<br/>\n\tpaddle_right = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(2.0, 0.0, 0.0)<br/>\n\t}<br/>\n</code>\n\n<p>\n\tWe'll set up the playing field so that the left and right borders are on the\n\t-2.0 and 2.0 X coordinates respectively and top and bottom are on the -1.0\n\tand 1.0 Y coordinates respectively.\n</p>\n\n<p>\n\tThe paddles will be moving along the left and the right sides of the field.\n\tThe ball will start in the middle. We also give it a starting velocity.\n</p>\n\n<p>\n\tWhen drawing lines using the debug line functions, we need to call these\n\tfunctions every frame. Up until now we have been using the Tick event\n\thandler to drive the logic. Tick events get emitted at regular intervals,\n\tbut they might not be emitted for every frame. That's why we will be putting\n\tall of the rendering related code in the event handler for the Frame event.\n</p>\n\n<p>\n\tLet's draw the field first.\n</p>\n\n<code>\n\tlocal corner1 = tram.math.vec3(-2.0, 1.0, 0.0)<br/>\n\tlocal corner2 = tram.math.vec3(2.0, 1.0, 0.0)<br/>\n\tlocal corner3 = tram.math.vec3(2.0, -1.0, 0.0)<br/>\n\tlocal corner4 = tram.math.vec3(-2.0, -1.0, 0.0)<br/>\n\t<br/>\n\tlocal midpoint1 = tram.math.vec3(0.0, 1.0, 0.0)<br/>\n\tlocal midpoint2 = tram.math.vec3(0.0, -1.0, 0.0)<br/>\n\t<br/>\n\tlocal color = tram.render.COLOR_WHITE<br/>\n\t<br/>\n\ttram.render.AddLine(corner1, corner2, color)<br/>\n\ttram.render.AddLine(corner2, corner3, color)<br/>\n\ttram.render.AddLine(corner3, corner4, color)<br/>\n\ttram.render.AddLine(corner4, corner1, color)<br/>\n\ttram.render.AddLine(midpoint1, midpoint2, color)<br/>\n</code>\n\t\n<p>\n\tHere we just define the corners of the field and use the debug line drawing functions to draw them. Let's draw the paddles next.\n</p>\n\n<code>\n\tlocal left_top = paddle_left.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(0.1, paddle_size, 0.0)<br/>\n\tlocal left_btm = paddle_left.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(0.1, -paddle_size, 0.0)<br/>\n\t<br/>\n\ttram.render.AddLine(left_top, left_btm, tram.render.COLOR_GREEN)<br/>\n\t<br/>\n\tlocal right_top = paddle_right.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(-0.1, paddle_size, 0.0)<br/>\n\tlocal right_btm = paddle_right.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(-0.1, -paddle_size, 0.0)<br/>\n\t<br/>\n\ttram.render.AddLine(right_top, right_btm,<br/>\n\t&nbsp;&nbsp;tram.render.COLOR_GREEN)<br/>\n</code>\n\n<p>\n\tHere we just calculate the top and bottom coordinates of the paddles, then\n\tdraw them. Also we push them into the field a bit, so that they don't get\n\tobscured by the lines that make up the sides of the field.\n</p>\n\n<p>\n\tYou can set the <code>paddle_size</code> to whatever size you want. I set it\n\tto 0.2.\n</p>\n\n<p>\n\tFinally, we draw the ball.\n</p>\n\n<code>\n\ttram.render.AddLineMarker(ball.position,<br/>\n\t&nbsp;&nbsp;tram.render.COLOR_RED)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"pingpong1.gif\"/><br/>\n\t<i>Initial field setup.</i>\n</center>\n\n<p>\n\tLet's add the ability to move the paddles. This we should put in the Tick\n\tevent handler, since we want the paddles to move at a speed independently\n\tof the frame rate.\n</p>\n\n<code>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_UP) then<br/>\n\t&nbsp;&nbsp;if paddle_right.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ paddle_size &lt; 1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y + 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_DOWN) then<br/>\n\t&nbsp;&nbsp;if paddle_right.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- paddle_size &gt; -1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y - 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_W) then<br/>\n\t&nbsp;&nbsp;if paddle_left.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ paddle_size &lt; 1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y + 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_S) then<br/>\n\t&nbsp;&nbsp;if paddle_left.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- paddle_size &gt; -1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y - 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n</code>\n\n<p>\n\tI set it up so that the left paddle can be moved up and down by the W and S\n\tkeys respectively, and the right paddle can be moved up and down by the \n\tUp and Down arrow keys respectively.\n</p>\n\n<center>\n\t<img src=\"pingpong2.gif\"/><br/>\n\t<i>The paddles can be moved now.</i>\n</center>\n\n<p>\n\tLet's make the ball move as well.\n</p>\n\n<code>\n\tball.position = ball.position + ball.velocity<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"pingpong3.gif\"/><br/>\n\t<i>The ball flies out of the field.</i>\n</center>\n\n<p>\n\tAdding collisions to the top and bottom sides of the field is very easy.\n</p>\n\n<code>\n\tif ball.position.y &lt; -1.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;or ball.position.y &gt; 1.0 then<br/>\n\t&nbsp;&nbsp;ball.velocity.y = -ball.velocity.y<br/>\n\tend<br/>\n</code>\n\t\n<p>\n\tAdding collisons to the left and right sides is a little bit more\n\tcomplicated, since we also have to take into account collisions with the\n\tpaddles.\n</p>\n\n<code>\n\tif ball.position.x &lt; -2.0 then<br/>\n\t&nbsp;&nbsp;local paddle_dist = math.abs(ball.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;- paddle_left.position.y)<br/>\n\t<br/>\n\t&nbsp;&nbsp;if paddle_dist &lt; paddle_size then<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.velocity.x = -ball.velocity.x<br/>\n\t&nbsp;&nbsp;else<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.x = 0.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.y = 0.0<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;player_right_score = player_right_score + 1<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Left lost!!\")<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Score is\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_left_score,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"|\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_right_score)<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif ball.position.x &gt; 2.0 then<br/>\n\t&nbsp;&nbsp;local paddle_dist = math.abs(ball.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;- paddle_right.position.y)<br/>\n\t<br/>\n\t&nbsp;&nbsp;if paddle_dist &lt; paddle_size then<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.velocity.x = -ball.velocity.x<br/>\n\t&nbsp;&nbsp;else <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.x = 0.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.y = 0.0<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;player_left_score = player_left_score + 1<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Right lost!!\")<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Score is\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_left_score,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"|\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_right_score)<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n</code>\n\t\n<p>\n\tWe also need to define the player score counters for this.\n</p>\n\n<code>\n\tplayer_left_score = 0<br/>\n\tplayer_right_score = 0<br/>\n</code>\n\n<p>\n\tAt this point, the gameplay logic is finished. We just have to add the 3D\n\tmodels. For the ball model, I decided to use the teapot model. For the \n\tpaddles I used the default Blender cube, with some bevels applied to the\n\tedges.\n</p>\n\n<center>\n\t<img src=\"pingpong4.gif\"/><br/>\n\t<i> How it looks like with the 3D models replacing the debug lines.</i>\n</center>\n\t\n<p>\n\tOne thing you might notice is that the 3D models are being drawn underneath\n\tthe debug lines. We can fix this by setting them to a higher layer.\n</p>\n\n<code>\n\tpaddle_model_left:SetLayer(1)<br/>\n\tpaddle_model_right:SetLayer(1)<br/>\n\t<br/>\n</code>\n\t\n<center>\n\t<img src=\"pingpong5.gif\"/><br/>\n\t<i>In motion.</i>\n</center>\n<p>\n\tIf you want to look at the full code, it is available in the\n\t<a href=\"https://github.com/racenis/tram-example\">example repository.</a>\n</p>\n\t\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"animations.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"physics.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/platforms.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Platforms and stuff</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"cameras.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"cake.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/render.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Render</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"physics.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"world.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/scripting.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Basic scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Basic scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tBasic scripting\n</h1>\n\n<hr/>\n\n<p>\n\tIn order to follow this guide, you might need the following:\n</p>\n\n<ul>\n\t<li>\n\t\tBasic computer programming skills\n\t</li>\n\t<ul>\n\t\t<li>\n\t\t\tPrevious experience in object-oriented programming will prove to be\n\t\t\tvery useful\n\t\t</li>\n\t</ul>\n\t<li>\n\t\tBasic understanding of Lua or other Pascal-derived languages\n\t</li>\n\t<li>\n\t\tGeneral understanding of how game engines and similar software works\n\t</li>\n</ul>\n\n<h2>\n\tReminder about Lua syntax\n</h2>\n\n<hr/>\n\n<p>\n\tAnyway, here's a small reminder of how Lua works.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- this is a comment</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- creating a global variable</span><br/>\n\tnumber_first = <span class=\"codelit\">420</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- creating a local variable</span><br/>\n\t<span class=\"codekeyw\">local</span> number_second = <span class=\"codelit\">69</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- printing stuff to the console</span><br/>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">420</span> + <span class=\"codelit\">69</span>)<br/>\n\t<br/>\n\t<span class=\"codecomm\">-- Lua only has if/else statements. no switches</span><br/>\n\t<span class=\"codekeyw\">if</span> <span class=\"codelit\">420</span> == <span class=\"codelit\">69</span> <span class=\"codekeyw\">then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">elseif</span> <span class=\"codelit\">420</span> + <span class=\"codelit\">69</span> == <span class=\"codelit\">489</span> <span class=\"codekeyw\">then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">else</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- function</span><br/>\n\t<span class=\"codekeyw\">function</span> <span class=\"codefunc\">add_special_number</span>(x)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> x + <span class=\"codelit\">420</span><br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- Lua has tables, which are similar to</span><br/>\n\t<span class=\"codecomm\">-- JavaScript objects. they function as</span><br/>\n\t<span class=\"codecomm\">-- dynamic dictionaries, arrays, as objects</span><br/>\n\t<span class=\"codecomm\">-- with methods, etc.</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- array</span><br/>\n\tarray = {}<br/>\n\tarray[<span class=\"codelit\">1</span>] = <span class=\"codelit\">420</span><br/>\n\tarray[<span class=\"codelit\">2</span>] = <span class=\"codelit\">69</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- dynamic dictionary</span><br/>\n\tdict = {}<br/>\n\tdict[<span class=\"codelit\">\"hello\"</span>] = <span class=\"codelit\">\"world\"</span><br/>\n\t<span class=\"codecomm\">-- identical to previous statement</span><br/>\n\tdict.hello = <span class=\"codelit\">\"world\"</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- object</span><br/>\n\tobject = {}<br/>\n\tobject.number = <span class=\"codelit\">420</span><br/>\n\tobject.add = <span class=\"codekeyw\">function</span>(self, x)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> self.number + x<br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- if using the colon symbol, you can</span><br/>\n\t<span class=\"codecomm\">-- call the method and the self parameter</span><br/>\n\t<span class=\"codecomm\">-- will be filled in automatically</span><br/>\n\tnumber = object:<span class=\"codefunc\">add</span>(<span class=\"codelit\">69</span>)<br/>\n\t<br/>\n</code>\n\n<h2>\n\tWhat does the init script do?\n</h2>\n\n<hr/>\n\n<p>\n\tFirst, let's go through the <code>init.lua</code> file and see what it does.\n\tIt can be found in the <code>/scripts/</code> directory in the project\n\ttemplate.\n</p>\n\n<code>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"\\n\\nHello! [...]\\n\"</span>)<br/>\n\t<span class=\"codecomm\">-- ...</span>\n</code>\n\n<p>\n\tThis part just prints some text to the console.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Retitling the main window.</span><br/>\n\ttram.ui.<span class=\"codefunc\">SetWindowTitle</span>(<span class=\"codelit\">\"Teapot Explorer v1.0\"</span>)<br/>\n\ttram.ui.<span class=\"codefunc\">SetWindowSize</span>(<span class=\"codelit\">640</span>, <span class=\"codelit\">480</span>)\n</code>\n\n<p>\n\tThis part sets the title of the window, which is opened automatically on\n\tprogram start. It also sets the size of the window.\n</p>\n\n\n<code>\n\t<span class=\"codecomm\">-- Setting up the global lighting.</span></span><br/>\n\ttram.render.<span class=\"codefunc\">SetSunColor</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>))<br/>\n\ttram.render.<span class=\"codefunc\">SetSunDirection</span>(tram.math.DIRECTION_FORWARD)<br/>\n\t<span class=\"codekeyw\">local</span> ambient = tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.1</span>, <span class=\"codelit\">0.1</span>, <span class=\"codelit\">0.1</span>)<br/>\n\ttram.render.<span class=\"codefunc\">SetAmbientColor</span>(ambient)<br/>\n\ttram.render.<span class=\"codefunc\">SetScreenClearColor</span>(tram.render.COLOR_BLACK)<br/>\n</code>\n\n<p>\n\tThis section will set up the scene lighting. All of these functions accept\n\ta <code>vec3</code> table. The <code>tram.math.vec3(x, y, z)</code> function\n\tconstructs a <code>vec3</code> table.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Move the camera a bit away from the origin.</span><br/>\n\t<span class=\"codekeyw\">local</span> position = tram.math.DIRECTION_FORWARD * <span class=\"codelit\">-1.2</span><br/>\n\ttram.render.<span class=\"codefunc\">SetViewPosition</span>(position)\n</code>\n\n<p>\n\tBy default, all new 3D models get created at the origin, which is the \n\tcoordinates <code>(0.0, 0.0, 0.0)</code>. The view also starts at this\n\tposition, so we move it a bit back, so that it doesn't end up in the teapot.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Setting up a light so that you can see something.</span><br/>\n\tscene_light = tram.components.<span class=\"codeclass\">Light</span>()<br/>\n\tscene_light:<span class=\"codefunc\">SetColor</span>(tram.render.COLOR_WHITE)<br/>\n\tscene_light:<span class=\"codefunc\">SetLocation</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">5.0</span>, <span class=\"codelit\">5.0</span>, <span class=\"codelit\">5.0</span>))<br/>\n\tscene_light:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tSince the previous bit of code set the directional light's color to zero, it\n\twon't contribute to the scene's illumination, so here we create a \n\t<a href=\"../documentation/components/light.html\">light</a>, so that you can\n\tactually see the teapot.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Adding a teapot to the scene.</span><br/>\n\tteapot = tram.components.<span class=\"codeclass\">Render</span>()<br/>\n\tteapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"teapot\"</span>)<br/>\n\tteapot:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tFinally, we add the \n\t<a href=\"../documentation/components/render.html\">3D model</a> of the teapot\n\tto the scene.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- This vector here will contain teapot euler angle rotation in radians.</span><br/>\n\t<span class=\"codekeyw\">local</span> teapot_modifier = tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>)\n</code>\n\n<p>\n\tIn order to rotate the teapot, we need to set up its initial rotation.\n</p>\n\n<pre class=\"max-width:350px;overflow:hidden;\">\n<span class=\"codecomm\">-- This function will be called every tick.</span>\ntram.event.<span class=\"codefunc\">AddListener</span>(tram.event.TICK, <span class=\"codekeyw\">function</span>()\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_LEFT)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_A) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t - tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n  \n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_RIGHT)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_D) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t + tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_UP)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_W) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t - tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_DOWN)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_S) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t + tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  teapot:<span class=\"codefunc\">SetRotation</span>(tram.math.<span class=\"codeclass\">quat</span>(teapot_modifier))\n<span class=\"codekeyw\">end</span>)\n</pre>\n\n<p>\n\tWe need to execute the rotation logic during runtime. A good way to do it is\n\tto add an\n\t<a href=\"../documentation/framework/event.html#listener\">Event Listener</a>\n\tand set it to listen to the \n\t<a href=\"../documentation/framework/event.html#tick\">Tick</a> event, which\n\tis emitted at regular intervals.\n</p>\n\n<p>\n\tThe code for the logic itself will check if the arrow keys are being\n\tpressed, and if they are, it will modify the rotation of the teapot. After\n\tall of the keys are checked and a new rotation is computed, it is assigned\n\tto the teapot's 3D model.\n</p>\n\n<p>\n\tSince all rotations use quaternions, we can pass the\n\t<code>tram.math.quat()</code> quaternion constructor a <code>vec3</code>,\n\twhich will be interpreted as a vector containing euler angles, i.e. the\n\trotations around the x, y and z axis.\n</p>\n\n<h2>\n\tTeapot coloring.\n</h2>\n\n<hr/>\n\n<p>\n\tThe default white teapot color is rather uninteresting. Let's change it to\n\tsomething more interesting.\n</p>\n\n<p>\n\tAdd this line of code somewhere after the <code>teapot</code> variable is\n\tinitialized:\n</p>\n\n<code>\nteapot:<span class=\"codefunc\">SetColor</span>(tram.render.COLOR_PINK)\n</code>\n\n<p>\n\tAll of the color definitions are just <code>vec3</code>s, so we can pass\n\tthem in as the colors. The only thing to remember is that each color value\n\tneeds to be in the range from 0.0 to 1.0.\n</p>\n\n<center>\n\t<img src=\"teapotpink.gif\"/><br/>\n\t<i>The teapot has been colored pink.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tLook up the hex or integer color values for your favorite color. Convert\n\t\tthem into the range from 0.0 to 1.0 for each color channel and assign them\n\t\tto the teapot.\n\t</p>\n\n\t<p>\n\t\tAt this point, you are probably very proud of your teapot coloring skills.\n\t\tPress the <code>F12</code> key on your keyboard. This will save a screenshot\n\t\tof the teapot in your project directory. Print it out and mail it to your\n\t\tfriends!\n\t</p>\n</div>\n\t\n<p>\n\tLet's try doing something more interesting with the colors. Place these\n\tlines of code somewhere in the update function:\n</p>\n\n<code>\n<span class=\"codekeyw\">local</span> r = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<span class=\"codekeyw\">local</span> g = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<span class=\"codekeyw\">local</span> b = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<br/>\n<span class=\"codekeyw\">local</span> color = tram.math.<span class=\"codeclass\">vec3</span>(r, g, b)<br/>\n<br/>\n<span class=\"codecomm\">-- the r, g, b values are in the range</span><br/>\n<span class=\"codecomm\">-- from -1.0 to 1.0 due to the sin()</span><br/>\n<span class=\"codecomm\">-- function, so we need to re-map them</span><br/>\n<span class=\"codecomm\">-- to the 0.0 to 1.0 range for colors</span><br/>\n<br/>\ncolor = color + <span class=\"codelit\">1.0</span><br/>\ncolor = color * <span class=\"codelit\">0.5</span><br/>\n<br/>\nteapot:<span class=\"codefunc\">SetColor</span>(color)<br/>\n<br/>\n</code>\n\t\n<center>\n\t<img src=\"teapotblink.gif\"/><br/>\n\t<i>The teapot fades from white to black and then back to white.</i>\n</center>\n\n<p>\n\tWe can make this even more interesting. Let's add a different phase shift to\n\teach of the color channels.\n</p>\n\n<code>\n<span class=\"codekeyw\">local</span> r = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">1.0</span>)<br/>\n<span class=\"codekeyw\">local</span> g = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">2.0</span>)<br/>\n<span class=\"codekeyw\">local</span> b = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">4.0</span>)<br/>\n<br/>\n</code>\n\t\n<center>\n\t<img src=\"teapotrainbow.gif\"/><br/>\n\t<i>The teapot cycles through all of the colors.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tNow that you can dynamically change a vec3 for colors, how about\n\t\tdynamically changing the teapot's position and rotation?\n\t</p>\n\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tMaybe try changing the color of the scene's light.\n\t</p>\n\t\n\t<h3>\n\t\tExercise\n\t</h3>\n\t\n\t<hr/>\n\t\n\t<p>\n\t\tThe code for controlling the teapot's rotation is already set up. Maybe\n\t\tadd the option to not only be able to change the rotation of the teapot,\n\t\tbut also its position?\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"structure.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"3dmodeling.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/structure.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Structure of a project</h1>\n\n<p>\n\tYour project files are located in your project directory. It also contains\n\tseveral other directories. This is how these are structured and where\n\teverything is located.\n</p>\n\n<h3>\n\t<code>/assets/</code>\n</h3>\n\n<p>\n\tCurrently there are no tools which use this particular directory, but there\n\twill be in the future.\n</p>\n\n<p>\n\tThe assets directory is meant to shadow the structure of the data directory,\n\twith the main difference that the data files are stored in an editable\n\tformat. For example, the assets directory could contain\n\t<code>/assets/models/frogs/green.blend</code> file and it would have its\n\tcounterpart <code>/data/models/frogs/green.dymdl</code> which is prepared\n\tfrom the first file.\n</p>\n\n<h3>\n\t<code>/data/</code>\n</h3>\n\n<p>\n\tThis is the main data directory. It contains the directories for various\n\tresources, as well as language files, editor settings and entity definition\n\tfiles (might be moved in the future) and the material definition files.\n</p>\n\n<h4>\n\t<code>/data/animations/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/animation.html\">Animation resources</a>.\n</p>\n\n<h4>\n\t<code>/data/audio/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/audio.html\">Sound resources</a>.\n</p>\n\n<h4>\n\t<code>/data/models/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/model.html\">3D model resources</a>.\n</p>\n\n<h4>\n\t<code>/data/navmesh/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/navmesh.html\">Navmeshes</a>.\n</p>\n\n<h4>\n\t<code>/data/paths/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/path.html\">Paths</a>.\n</p>\n\n<h4>\n\t<code>/data/sprites/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/sprite.html\">Sprite resources</a>.\n</p>\n\n<h4>\n\t<code>/data/textures/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the textures for the \n\t<a href=\"../documentation/render/material.html\">Material resources</a>.\n</p>\n\n<h4>\n\t<code>/data/sprites/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/worldcell.html\">WorldCells</a>.\n</p>\n\n<h3>\n\t<code>/scripts/</code>\n</h3>\n\n<p>\n\tThis directory contains all of the scripts. When the\n\t<a href=\"../documentation/framework/script.html\">Script</a> system is\n\tinitialized with a scripting language initialized, it will load the\n\t<code>api</code> file, which contains the language-specific script bindings.\n</p>\n\n<p>\t\n\tFor Lua, this is the <code>api.lua</code> file. You probably should avoid\n\tediting it, unless you know what you are doing.\n</p>\n\n<p>\t\n\tThere is also an <code>init</code> file. This is loaded by the template\n\tproject after initializing all of the framework's systems. You can edit this\n\tfile and put whatever you want in it.\n</p>\n\n<h3>\n\t<code>/shaders/</code>\n</h3>\n\n<p>\t\n\tThis directory contains all of the shaders for the \n\t<a href=\"../documentation/render.html\">rendering backends</a> that support\n\tshaders. You can edit them if you want.\n</p>\n\n<h3>\n\t<code>/src/</code>\n</h3>\n\n<p>\t\n\tContains all of the C++ source code for the project.\n</p>\n\n<h3>\n\t<code>/</code>\n</h3>\n\n<p>\t\n\tThe project root directory contains the executable file for the application,\n\tas well as various configuration files. This is also the working directory\n\tfrom which the various tools and utilities need to be launched from.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"getstarted.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"scripting.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/walking.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Walking around a world | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Walking around a world | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Walking around a world</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"world.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"cameras.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/whatis.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>What it is and what does it do? | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: What it is and what does it do? | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWhat it is and what does it do?\n</h1>\n\n<hr/>\n\n<p>\n\tTramway Drifting and Dungeon Exploration Simulator Software Development Kit\n\tconsists of approximately 30 000 lines of code. These lines of code have\n\tbeen written, so that you don't have to.\n</p>\n\n<p>\n\tThe main goal of this project is to enable the creation of real-time 3D\n\tgraphics applications. These applications could be video games, virtual\n\treality spaces, various visualizations, etc.\n</p>\n\n<p>\n\tMost of the code of this project is contained in the Tramway SDK runtime.\n\tThe runtime is implemented as a C++ library, which can be embedded into\n\texisting applications, or used as a standalone application, using the Lua\n\tAPI for scripting.\n</p>\n\n<p>\n\tIn addition to the runtime, the project also consists of a graphical level\n\teditor, 3D content authoring plugins for the Blender 3D modeling \n\tapplication, as well as various commandline utilities.\n</p>\n\n<p>\n\tIn the future, the project will be enhanced by the addition of additional\n\tapplications and utilities.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\"></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"getstarted.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn/world.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"../favicon.gif\">\n\t\t<title>Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"../default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"../no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"../no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"../default.css\");\n\t\t\t\t\tAddCSS(\"../enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"../enterprise.css\");\n\t\t\t\t\tAddCSS(\"../default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"../images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"../images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"../images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"../index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"../features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"../roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"../learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"../documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"../index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"../learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Creating a world</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"render.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"walking.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"../images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"../images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"../images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"../images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"../images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/learn.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLearn\n</h1>\n\n<p>\n\tHere's all of the &laquo;guide&raquo; style documentation. It's meant to\n\tshowcase the framework in a less formal and structured way.\n</p>\n\n<p>\n\tIf you have no idea what it is and how to use it, this is a good place to\n\tstart.\n</p>\n\n<h2>\n\tBasic stuff\n</h2>\n\n<p>\n\t<ol>\n\t\t<li><a href=\"learn/whatis.html\">What it is and what does it do?</a></li>\n\t\t<li><a href=\"learn/getstarted.html\">Getting started</a></li>\n\t\t<li><a href=\"learn/structure.html\">Structure of a project</a></li>\n\t\t<li><a href=\"learn/scripting.html\">Basic scripting</a></li>\n\t\t<li><a href=\"learn/3dmodeling.html\">Adding 3D models</a></li>\n\t\t<li><a href=\"learn/materials.html\">Adding Materials</a></li>\n\t\t<li><a href=\"learn/animations.html\">Adding Animations</a></li>\n\t\t<li><a href=\"learn/pingpong.html\">Making Ping Pong</a></li>\n\t\t<li><a href=\"learn/physics.html\">Physics</a></li>\n\t\t<li><a href=\"learn/render.html\">Render</a></li>\n\t\t<li><a href=\"learn/world.html\">Creating a world</a></li>\n\t\t<li><a href=\"learn/walking.html\">Walking around a world</a></li>\n\t\t<li><a href=\"learn/cameras.html\">Cameras, how do they work?</a></li>\n\t\t<li><a href=\"learn/platforms.html\">Platforms and stuff</a></li>\n\t\t<li><a href=\"learn/cake.html\">Making a cake simulator</a></li>\n\t</ol>\n</p>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/no_gifs.css",
    "content": ".animated {\n\tdisplay: none;\n}"
  },
  {
    "path": "docs/page_generator.py",
    "content": "import re\n\npages = [\"index\",\n\t\t \"features\",\n\t\t \"roadmap\",\n\t\t \"learn\",\n\t\t \n\t\t \"patterns\",\n\t\t \"why\",\n\t\t \n\t\t \"learn/whatis\",\n\t\t \"learn/getstarted\",\n\t\t \"learn/structure\",\n\t\t \"learn/scripting\",\n\t\t \"learn/3dmodeling\",\n\t\t \"learn/materials\",\n\t\t \"learn/animations\",\n\t\t \"learn/pingpong\",\n\t\t \"learn/physics\",\n\t\t \"learn/render\",\n\t\t \"learn/world\",\n\t\t \"learn/walking\",\n\t\t \"learn/cameras\",\n\t\t \"learn/platforms\",\n\t\t \"learn/cake\",\n\t\t \n\t\t \"documentation\",\n\t\t \"documentation/index\",\n\t\t \"documentation/audio\",\n\t\t \"documentation/components\",\n\t\t \"documentation/components/animation\",\n\t\t \"documentation/components/audio\",\n\t\t \"documentation/components/controller\",\n\t\t \"documentation/components/light\",\n\t\t \"documentation/components/particle\",\n\t\t \"documentation/components/physics\",\n\t\t \"documentation/components/player\",\n\t\t \"documentation/components/render\",\n\t\t \"documentation/components/sprite\",\n\t\t \"documentation/components/template\",\n\t\t \"documentation/components/trigger\",\n\t\t \n\t\t \"documentation/entities\",\n\t\t \"documentation/entities/crate\",\n\t\t \"documentation/entities/decoration\",\n\t\t \"documentation/entities/light\",\n\t\t \"documentation/entities/marker\",\n\t\t \"documentation/entities/player\",\n\t\t \"documentation/entities/sound\",\n\t\t \"documentation/entities/staticwobj\",\n\t\t \"documentation/entities/trigger\",\n\t\t \n\t\t \"documentation/extensions\",\n\t\t \"documentation/extensions/camera\",\n\t\t \"documentation/extensions/menu\",\n\t\t \"documentation/extensions/kitchensink\",\n\t\t \"documentation/extensions/kitchensink/animationtable\",\n\t\t \"documentation/extensions/kitchensink/soundtable\",\n\t\t \"documentation/extensions/scripting\",\n\t\t \n\t\t \"documentation/framework\",\n\t\t \"documentation/framework/async\",\n\t\t \"documentation/framework/core\",\n\t\t \"documentation/framework/entity\",\n\t\t \"documentation/framework/entitycomponent\",\n\t\t \"documentation/framework/event\",\n\t\t \"documentation/framework/file\",\n\t\t \"documentation/framework/graph\",\n\t\t \"documentation/framework/gui\",\n\t\t \"documentation/framework/language\",\n\t\t \"documentation/framework/loader\",\n\t\t \"documentation/framework/logging\",\n\t\t \"documentation/framework/math\",\n\t\t \"documentation/framework/message\",\n\t\t \"documentation/framework/navmesh\",\n\t\t \"documentation/framework/path\",\n\t\t \"documentation/framework/resource\",\n\t\t \"documentation/framework/script\",\n\t\t \"documentation/framework/serialization\",\n\t\t \"documentation/framework/settings\",\n\t\t \"documentation/framework/signal\",\n\t\t \"documentation/framework/stats\",\n\t\t \"documentation/framework/system\",\n\t\t \"documentation/framework/transition\",\n\t\t \"documentation/framework/type\",\n\t\t \"documentation/framework/ui\",\n\t\t \"documentation/framework/uid\",\n\t\t \"documentation/framework/worldcell\",\n\t\t \"documentation/framework/value\",\n\t\t \n\t\t \"documentation/physics\",\n\t\t \"documentation/physics/collisionmodel\",\n\t\t \"documentation/physics/collisionshape\",\n\t\t \n\t\t \"documentation/platform\",\n\t\t \n\t\t \"documentation/render\",\n\t\t \"documentation/render/aabb\",\n\t\t \"documentation/render/animation\",\n\t\t \"documentation/render/material\",\n\t\t \"documentation/render/model\",\n\t\t \"documentation/render/sprite\",\n\t\t \n\t\t \"documentation/tools/codegen\",\n\t\t \n\t\t \"documentation/plugin\",\n\t\t \"documentation/leveleditor\",\n\t\t \"documentation/entitydefinition\",\n\t\t ]\ntemplate = \"template\"\n\ntemplate_text = open(\"src/\" + template + \".html\", \"r\").read()\n\nfor page in pages:\n\tpage_text = open(\"src/\" + page + \".html\", \"r\").read()\n\t\n\tpage_level = page.count('/')\n\tpage_level = \"../\" * page_level\n\t\n\tpage_title = re.search(\"<!-- PAGE_TITLE: (.+?) -->\", page_text)\n\tif page_title:\n\t\tpage_title = page_title.group(1)\n\telse:\n\t\tpage_title = \"UNTITLED\"\n\t\n\tpage_templated = template_text\n\tpage_templated = page_templated.replace(\"<!-- PAGE_TITLE -->\", page_title).replace(\"<!-- PAGE_CONTENT -->\", page_text)\n\t\n\tpage_templated = page_templated.replace(\"<!-- PAGE_LEVEL -->\", page_level)\n\t\n\tfor link in re.findall(\"<!-- MENU_LINK:(.+?):(.+?) -->\", page_templated):\n\t\treplace_match = \"<!-- MENU_LINK:\" + link[0] + \":\" + link[1] + \" -->\"\n\t\treplace_string = \"<a href=\\\"\" + page_level + link[0] + \".html\\\" class=\\\"menu-link\" + (\" menu-open-page\" if page == link[0] else \"\") + \"\\\">\" + link[1] + \"</a><br/>\"\n\t\tpage_templated = page_templated.replace(replace_match, replace_string)\n\t\n\tfile = open(page + \".html\", \"w\")\n\tfile.write(page_templated)\n\tfile.close()\n\t\n\tprint(page + \" done\")"
  },
  {
    "path": "docs/patterns.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Design Patterns | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Design Patterns | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDesign Patterns Used\n</h1>\n\n<hr/>\n\n<p>\n\tWhen all of the patterns get used, I will delete the project and rewrite it\n\tin Rust. With no OOP.\n</p>\n\n<table border=\"1\">\n\t<tr>\n\t\t<th>\n\t\t\tPattern\n\t\t</th>\n\t\t<th>\n\t\t\tWhere is it used?\n\t\t</th>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAbstract factory\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBuilder\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFactory method\n\t\t</td>\n\t\t<td>\n\t\t\tUsed all over the place.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tPrototype\n\t\t</td>\n\t\t<td>\n\t\t\tUsed in the level editor for objects. Some objects can be cloned.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSingleton\n\t\t</td>\n\t\t<td>\n\t\t\tPoolProxy class is used to force a single Pool template\n\t\t\tinstantiation per type.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdapter\n\t\t</td>\n\t\t<td>\n\t\t\tThere's probably some adapters in there, but can't remember a\n\t\t\tspecific example.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBridge\n\t\t</td>\n\t\t<td>\n\t\t\tDefinitely somewhere in there.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tComposite\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for level editor objects.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tDecorator\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for scripting API.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFacade\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for the file abstraction.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFlyweight\n\t\t</td>\n\t\t<td>\n\t\t\tDynamically created collisionshapes use the same underlying object\n\t\t\tif their types and dimensions are the same.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tProxy\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by some resources.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tChain of responsiblity\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tCommand\n\t\t</td>\n\t\t<td>\n\t\t\tMessages are essentially commands.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tInterpreter\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by the quest extension for nocode scripting.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tIterator\n\t\t</td>\n\t\t<td>\n\t\t\tUsed all over the place.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMediator\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMemento\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for undo/redo functionality in the level editor.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tObserver\n\t\t</td>\n\t\t<td>\n\t\t\tEvent listeners are essentially observers.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tState\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for tools in the level editor.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tStrategy\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by the file abstraction.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tTemplate method\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by resources, entities and entity components for their life\n\t\t\tcycles and stuff.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tVisitor\n\t\t</td>\n\t\t<td>\n\t\t\tProbably used somewhere in there.\n\t\t</td>\n\t</tr>\n</table>\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/roadmap.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Roadmap | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Roadmap | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRoadmap\n</h1>\n\n<p>\n\tTasks that have been completed and are a success are marked with\n\t<s>strikethrough</s>. Some tasks are only partially completed.\n</p>\n\n<table border=\"1\">\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Audio</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to attach audio effects to audio sources.\n\t\t</td>\n\t\t<td>\n\t\t\tThe OpenAL backend supports this. Other possible, future backends\n\t\t\tmight also support this.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to automatically determine audio effects for audio sources.\n\t\t</td>\n\t\t<td>\n\t\t\tThis could be implemented as reverb zones, which are manually\n\t\t\tplaced in levels, or the parameters of the effects could be \n\t\t\tdetermined using raycasts, or with other means.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to play back tracker files\n\t\t</td>\n\t\t<td>\n\t\t\tThere are libraries which should be able to play back tracker\n\t\t\tfiles. One of them could be integrated into the audio system.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Animation</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd events to animations\n\t\t</td>\n\t\t<td>\n\t\t\tIt should be possible to add a callback for a specific bone, and when\n\t\t\ta keyframe for that bone is reached, it would trigger the callback.\n\t\t\tThis would allow syncing up code to animations.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Language</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd UTF-16 strings\n\t\t</td>\n\t\t<td>\n\t\t\tCurrently it is possible to only use 256 different characters in\n\t\t\ttext. By switching strings from char to wchar, we could use all\n\t\t\tof the characters. \n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Graph</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add Paths</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>It would be neat if you could have entities follow a path that is\n\t\t\tlaid down in the level editor.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add Navmeshes</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Navmeshes would allow better navigation by NPCs.</s>\n\t\t\t<br/><b>Note:</b> only navmesh editing and loading has been\n\t\t\timplemented, no navmesh navigation has been implemented yet.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Serialization</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd serialization\n\t\t</td>\n\t\t<td>\n\t\t\tSerialization was yeeted out, but it should be very easy to put it\n\t\t\tback in. This would allow saving the state of the application.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Files</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd virtual file system\n\t\t</td>\n\t\t<td>\n\t\t\tThis would allow files to be read not only from disk, but also\n\t\t\tarchives. Files could also be written to archives. Files could\n\t\t\talso be read using HTTP GET and written as POST requests.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Rendering</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add sphere maps</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>This would allow reflective surfaces. Would also need to add some\n\t\t\tway to automatically capture.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Light probes</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Implemented using spherical harmonics or something similar.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t Detail textures\n\t\t</td>\n\t\t<td>\n\t\t\twould be neat\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBump/normal mapping\n\t\t</td>\n\t\t<td>\n\t\t\tMor edetails good!\n\t\t\t<br/><b>Note:</b> normal mapping implemented, but only for\n\t\t\traytracing rendering backend.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tPlanar reflections\n\t\t</td>\n\t\t<td>\n\t\t\tUsing with stencils or something\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Transparency</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>There already is, but it is not !! is not good! --> not blendered</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Decals</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Would allow projecting! images and that would be good.</s>\n\t\t\t<br/><b>Note:</b> currently basic implementation done, still needs\n\t\t\toptimizations.\n\t\t</td>\n\t</tr>\n\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Applets</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMaterial Editor\n\t\t</td>\n\t\t<td>\n\t\t\tThis would allow the creation of new materials interactively. It\n\t\t\twould also mean that you don't have to edit the material text files\n\t\t\tdirectly.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tModel/Animation Viewer\n\t\t</td>\n\t\t<td>\n\t\t\tThis applet would allow the previewing 3D models, as well as\n\t\t\tplaying back animations on them. This would be useful for previewing\n\t\t\t3D models and animations. It could also be used as a 3D model\n\t\t\tpicker/palette tool for other applications, or added as a default\n\t\t\tviewer program for .DYMDL and .STMDL files, so that they can be\n\t\t\topened directly form the operating system's shell.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tModification Model Editor\n\t\t</td>\n\t\t<td>\n\t\t\tCurrently modification models can only be created using a text\n\t\t\teditor. It would be easier to create them in an applet that can\n\t\t\timmediately display the newly created 3D model.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tLanguage Editor\n\t\t</td>\n\t\t<td>\n\t\t\tEditing strings would be nicer if done in a GUI. It would also allow\n\t\t\tthe comparison of strings in different languages and would allow\n\t\t\tdetecting missing language strings easier.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSoundtable Editor\n\t\t</td>\n\t\t<td>\n\t\t\tIt might be useful to have an editor for soundtables, which also has\n\t\t\ta sound preview functionality.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAnimationtable Editor\n\t\t</td>\n\t\t<td>\n\t\t\tIt would allow previewing of animation states in real time. Could be\n\t\t\tuseful.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSprite Editor\n\t\t</td>\n\t\t<td>\n\t\t\tWould be better than using a text editor.\n\t\t</td>\n\t</tr>\n</table>\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/src/documentation/audio.html",
    "content": "<!-- PAGE_TITLE: Audio | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAudio\n</h1>\n\n<hr/>\n\n<p>\n\tThe audio system provides audio playback services.\n</p>\n\n<p>\n\tCurrently it only supports playing back audio from audio files, and from\n\t.ogg format audio files in particular.\n</p>\n\n<p>\n\tIn the future, the system will be enhanced to allow streaming audio, and\n\tpossibly to allow for more formats to be used.\n</p>\n\n<p>\n\tIf you want to easily play back sounds in your levels, check out the\n\t<a href=\"entities/sound.html\">Sound</a> entity. It also has a scripting API\n\toption, which is useful for playing back sound effects.\n</p>\n\n<p>\n\tIf you want to incorporate audio playback into the entities you are\n\tconstructing, you will find the <a href=\"components/audio.html\">Audio\n\tComponent</a> useful.\n</p>\n\n<h2>Key concepts</h2>\n\n<hr/>\n\n<h4 id=\"sound\">Sound</h4>\n\n<p>\n\tA sound is a <a href=\"framework/resource.html\">Resource</a>. It contains\n\taudio data loaded from an .ogg audio file.\n</p>\n\n<h4 id=\"source\">Source</h4>\n\n<p>\n\tA source will play back the audio contained in a Sound. It can be positioned\n\tin 3D space.\n</p>\n\n<h4 id=\"listener\">Listener</h4>\n\n<p>\n\tA listener is usually attached to the render view. It has a position and an\n\torientation.\n</p>\n\t\n<p>\n\tIt determines how the sources should sound like, relative to it, i.e. if a\n\tsound source is next to the listener, it will sound very loud, and if it is\n\tmoved to be very far from the listener, it will be very quiet.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t// TODO: implement\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\t// TODO: implement\n</p>\n\n<h2>Backends</h2>\n\n<hr/>\n\n<p>\n\tJust like <a href=\"physics.html\">Physics</a> and\n\t<a href=\"render.html\">Render</a>, the Audio system provides an\n\tinterface for swapping out the audio system backends. The possible\n\toptions are:\n</p>\n\n<h4>OpenAL</h4>\n\n<p>\n\tThis is the default Audio backend. It uses the OpenAL library to play back\n\taudio.\n</p>\n\n<h4>Spatial</h4>\n\n<p>\n\tAn experimental audio backend. Uses path tracing adapted from the primary\n\tsample space metropolis light transport algorithm. Very fancy, but also\n\tvery slow and broken. Might not even compile without some fixes.\n</p>\n\n<h4>Template</h4>\n\n<p>\n\tThe template for implementing further backends. Implements only stubs of the\n\tinternal API functions. Can be used if you don't want to use any audio.\n</p>\n\n\n"
  },
  {
    "path": "docs/src/documentation/components/animation.html",
    "content": "<!-- PAGE_TITLE: Animation Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimation Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> plays\n\tback <a href=\"../render/animation.html\">animations</a>. More precisely, it\n\tgenerates pose matrices for the deformation of 3D models. It basically lets\n\tyou animate 3D models.\n</p>\n\n<p>\n\tWith this component you get 8 tracks to play back animations on. You also\n\tget an additional track for procedural animations.\n</p>\n\n<p>\n\tMultiple animations get added together. This can be used to animate\n\tparts of characters seperately.\n</p>\n\n<p>\n\tThe playback speed of animations can be changed. This is useful for movement\n\tanimations.\n</p>\n\n<p>\n\tYou can also set up weights for animations. For example, you could create a\n\tnodding animation for a character. Then you could play it back with a weight\n\tof 0.2 to get a slight nod, 0.5 to get a normal nod and 1.0 to get a very \n\tenthusiastic nod.\n</p>\n\n<p>\n\tThere are also fade-ins and fade-outs, which gradually increase or decrease\n\tthe animation weight. This could be used, for example, if you created a \n\twalking animation for a character, which you could fade out, to make the \n\tcharacter appear as if it is gradually coming to a stop.\n</p>\n\n\n<p>\n\tThere is some limited animation re-targeting &ndash; if the model for which\n\tyou created the animations has an armature which is similar enough for the\n\tmodel which you want to animate, you can play back the same animations ande\n\teverything will work. The bone names do need to be exactly the same in both\n\tmodels.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/animation.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_animation_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe only thing that you need to do before initializing this component? You\n\tneed to feed it a model. This has to be a \n\t<a href=\"../render/model.html#dynamic\">dynamic model</a>, since \n\t<a href=\"../render/model.html#static\">static models</a> have no \n\t<a href=\"../render.html#armature\">bone</a> data in them.\n</p>\n\n<code>\n\tComponent&lt;AnimationComponent&gt; component;<br/>\n\t<br/>\n\tcomponent.make();<br/>\n\tcomponent->SetModel(\"mongus\");<br/>\n\tcomponent->Init();\n</code>\n\n<p>\n\tThen you can begin playing some animations. You do need to make sure that \n\tthe animation that you want to play is already loaded, since I forgot to\n\tadd the code for them to be automatically streamed in. Anyway:\n</p>\n\n<code class=\"codeexample\">Animation::Find(\"mongus-run\")->Load();\n\t\ncomponent->PlayAnimation(\"mongus-run\",\n                         -1,\n                         1.0f,\n                         1.0f);\n</code>\n\n<p>\n\tIf you look closely, you will notice that we set the number of repeats to\n\t-1. This means that it will repeat for a very long time. It will stop \n\teventually, but it will take at least 2 years for an application running\n\tat 60 FPS.\n</p>\n\n<p>\n\tTo actually view the animation that you are playing, you need to attach it\n\tto a <a href=\"render.html\">RenderComponent</a>.\n</p>\n\n<code>\n\tComponent&lt;RenderComponent&gt; model;<br/>\n\t<br/>\n\tmodel.make();<br/>\n\tmodel->SetModel(\"mongus\");<br/>\n\tmodel->Init();<br/>\n\t<br/>\n\tmodel->SetArmature(component);\n</code>\n\n<p>\n\tThe possibilities of animation playback are limitless. Check the\n\t<a href=\"../../cppapi/classtram_1_1_animation_component.html\">API\n\tdocumentation</a> for more information.\n</p>\n\n\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on this.\n</p>"
  },
  {
    "path": "docs/src/documentation/components/audio.html",
    "content": "<!-- PAGE_TITLE: Audio Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAudio Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper for <a href=\"../audio.html#source\">audio sources</a>.\n</p>\n\n<p>\n\tPass in the sound which it needs to play, the position of the audio source\n\tand it will play it. Very easy. Very simple.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/audio.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_audio_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tCurrently <a href=\"../audio.html#sound\">sounds</a> won't get automatically\n\tstreamed in via the <a href=\"../framework/async.html\">Async</a> system, so\n\tmake sure that the sound is already loaded before passing it to the\n\tcomponent:\n</p>\n\n<code>\n\t<span class=\"codespac\">Sound</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"my-sound\"</span>)-><span class=\"codefunc\">Load</span>();\n</code>\n\n<p>\n\tRemember to store the Component&lt;&gt; smart pointer in a class, static\n\tvariable, or otherwise ensure that it doesn't immediately get destructed.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">AudioComponent</span>&gt; audio;<br/>\n\t<br/>\n\taudio.<span class=\"codefunc\">make</span>();<br/>\n\taudio-><span class=\"codefunc\">SetLocation</span>({<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>});<br/>\n\taudio-><span class=\"codefunc\">SetSound</span>(<span class=\"codelit\">\"my-sound\"</span>);<br/>\n\taudio-><span class=\"codefunc\">SetRepeating</span>(<span class=\"codekeyw\">true</span>);<br/>\n\taudio-><span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\n</p>\n\n<p>\n\tAfter initialization, you can begin playback of the sound, pause it or stop\n\tit completely.\n</p>\n\n<code>\n\taudio-><span class=\"codefunc\">Play</span>();&nbsp;&nbsp;<span class=\"codecomm\">// Begins the playback of the sound</span><br/>\n\taudio-><span class=\"codefunc\">Pause</span>();&nbsp;<span class=\"codecomm\">// Pauses the playback</span><br/>\n\taudio-><span class=\"codefunc\">Stop</span>();&nbsp;&nbsp;<span class=\"codecomm\">// Cancels the playback</span>\n</code>\n\n<p>\n\tYou can also check the status of the playback.\n</p>\n\n<code>\n\t<span class=\"codecomm\">\n\t// Since we stopped the playback, this will<br/>\n\t// evaluate to false<br/>\n\t</span>\n\t<span class=\"codekeyw\">if</span> (audio-><span class=\"codefunc\">IsPlaying</span>()) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Audio source is playing.\"</span>);<br/>\n\t} <span class=\"codekeyw\">else</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Audio source has stopped.\"</span>);<br/>\n\t}\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\t<i>Not yet implemented.</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/components/controller.html",
    "content": "<!-- PAGE_TITLE: Controller Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tController Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> can be\n\tused for controlling players and NPCs and that sort of stuff.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/controller.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_controller_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tAll you really need to do to get started is just the creation of the \n\tcomponent. Also you need to feed in a pointer to the entity which will be\n\tcontrolled by this component. It will automatically update the position of\n\tit when it moves.\n</p>\n\n<code>\n\t<span class=\"codefunc\">Component</span>&lt;<span class=\"codefunc\">ControllerComponent</span>&gt; component;<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetParent</span>(<span class=\"codekeyw\">this</span>);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tAfter that, you can begin sending commands to the component. Check the\n\t<a href=\"../../cppapi/classtram_1_1_controller_component.html\">API \n\tdocumentation</a> to see what kinds of commands there are. You can also\n\tlook at the implementation of the <a href=\"player.html\">PlayerComponent</a>\n\tto see an example of the usage of the component.\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tNot done yet.\n</p>"
  },
  {
    "path": "docs/src/documentation/components/light.html",
    "content": "<!-- PAGE_TITLE: Light Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLight Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../render.html#light\">light</a>.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/light.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_light_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tIt's very simple, just pick the position of the light and its color. If you\n\twant to increase the brightness of the light, multiply the \n</p>\n\n<code>\n\t<span class=\"codefunc\">Component</span>&lt;<span class=\"codefunc\">LightComponent</span>&gt; component;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">const float</span> brightness = <span class=\"codelit\">2.0f</span>;<br/>\n\t<span class=\"codekeyw\">const vec3</span> color = {<span class=\"codelit\">0.38f</span>, <span class=\"codelit\">0.25f</span>, <span class=\"codelit\">0.31f</span>};<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetLocation</span>({<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>, <span class=\"codelit\">0.0f</span>});<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetColor</span>(brightness * color);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tIf you want to turn the light from a point light into a spotlight, you can\n\tset its direction and exponent. The direction is a direction normal vector.\n\tThe exponent starts at 1.0 and increasing it narrows the spotlight's width.\n</p>\n\n\n<code>\n\tcomponent-&gt;<span class=\"codefunc\">SetDirection</span>(DIRECTION_FORWARD);<br/>\n\tcomponent-&gt;<span class=\"codefunc\">SetExponent</span>(<span class=\"codelit\">16.0f</span>);\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it...\n</p>"
  },
  {
    "path": "docs/src/documentation/components/particle.html",
    "content": "<!-- PAGE_TITLE: Particle Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tParticle Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> allows\n\tthe creation of a particle system.\n</p>\n\n<p>\n\tThe API is still not finallized. It's possible to manually spawn in\n\tindividual particles, but this feature is still being worked on.\n</p>\n\n<p>\n\tIf you have any suggestions, consider\n\t<a href=\"https://github.com/racenis/tram-sdk/issues\">leaving a Github\n\tissue.</a>\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/sprite.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_particle_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it...\n</p>"
  },
  {
    "path": "docs/src/documentation/components/physics.html",
    "content": "<!-- PAGE_TITLE: Physics Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPhysics Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../physics.html#rigidbody\">rigidbody</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/physics.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_physics_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tStill working on it... might be finished soon...\n</p>"
  },
  {
    "path": "docs/src/documentation/components/player.html",
    "content": "<!-- PAGE_TITLE: Player Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlayer Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> can be\n\tused to translate <a href=\"../framework/ui.html\">UI</a> inputs into inputs for the\n\t<a href=\"controller.html\">ControllerComponent</a>\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/player.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_player_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tWorking.... working....\n</p>"
  },
  {
    "path": "docs/src/documentation/components/render.html",
    "content": "<!-- PAGE_TITLE: Render Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRender Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../render.html#drawlistentry\"> draw list entry</a>.\n\tIt provides an easy to use interface by which it is possible to add a 3D\n\tmodel to the scene and to manipulate it in various ways.\n</p>\n\n<p>\n\tThis is the first component I created for the framework and the one I have\n\tbeen cooking for the longest. Hopefully it is also very good and very\n\tuseful. If you do not find it very useful, leave a\n\t<a href=\"https://github.com/racenis/tram-sdk/issues\">Github issue</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_render_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tThis one will probably the first that I work on. But still working on...\n</p>"
  },
  {
    "path": "docs/src/documentation/components/sprite.html",
    "content": "<!-- PAGE_TITLE: Sprite Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSprite Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> displays\n\ta <a href=\"../render/sprite.html\">sprite</a>.\n</p>\n\n<p>\n\tIf the spritesheet contains multiple sprites, it's possible to play them as\n\tan animation. Very neat!\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/sprite.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_sprite_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tTo get started, construct the component, feed it a sprite and set its\n\tlocation. It might take a few moments for the sprite to be streamed in.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">SpriteComponent</span>&gt; component;<br/>\n\t<br/>\n\tcomponent.<span class=\"codefunc\">make</span>();<br/>\n\tcomponent-><span class=\"codefunc\">SetSprite</span>(<span class=\"codeclass\">Sprite</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"poland\"</span>));<br/>\n\tcomopennt-><span class=\"codefunc\">UpdateLocation</span>({<span class=\"codelit\">3.0f</span>, <span class=\"codelit\">1.2f</span>, <span class=\"codelit\">-1.0f</span>});<br/>\n\tcomponent-><span class=\"codefunc\">Init</span>();\n</code>\n\n<p>\n\tIf you want to play the spritesheet as an animation.\n</p>\n\n<code>\n\tcomponent-><span class=\"codefunc\">SetPlaySpeed</span>(<span class=\"codelit\">2</span>);<br/>\n\tcomponent-><span class=\"codefunc\">Play</span>();\n</code>\n\n<br/>\n<br/>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tEventually it will be finished, but might take some time.\n</p>"
  },
  {
    "path": "docs/src/documentation/components/template.html",
    "content": "<!-- PAGE_TITLE: Template Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTemplate Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\ttemplate. You can copy it to quickly create new components.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_template_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tYou probably don't want to use this component directly. Just copy the files\n\t<code>components/template.h</code> and <code>components/template.cpp</code>,\n\trename them to <code>mycomponent.h</code> and <code>mycomponent.cpp</code>\n\trespectively and inside of these new files replace each instance of \n\t<code>TemplateComponent</code> with <code>MyComponent</code>.\n</p>\n\n<p>\n\tOther frameworks have fancy commandline scripts to let you quickly create\n\tnew components. We do not have any fancy scripts. You will need to create\n\tyour components manually.\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tFor scripting there will be a scripting component. That you will be able to\n\tuse. But it's not fully implemented yet.\n</p>"
  },
  {
    "path": "docs/src/documentation/components/trigger.html",
    "content": "<!-- PAGE_TITLE: Trigger Component | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTrigger Component\n</h1>\n\n<hr/>\n\n<p>\n\tThis <a href=\"../framework/entitycomponent.html\">EntityComponent</a> is a\n\twrapper around a <a href=\"../physics.html#trigger\">trigger</a>.\n</p>\n\n<p>\n\tThe trigger itself is triggered by rigidbodies moving into its volume. You\n\tcan add a callback, which will be fired when that happens, or you can have\n\tit store the collision data, so that you can pick it up and to whatever you\n\twant to do with it.\n</p>\n\n<p>\n\tThe volume of the trigger can be taken from a\n\t<a href=\"../physics/collisionmodel.html\">collision model</a>, or a\n\t<a href=\"../physics/collisionshape.html\">collision shape</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">components/template.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_trigger_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\t// TODO: finish\n</p>\n\n<h2>Scripting in Lua</h2>\n\n<hr/>\n\n<p>\n\tYes, working. Very working.\n</p>"
  },
  {
    "path": "docs/src/documentation/components.html",
    "content": "<!-- PAGE_TITLE: Components | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tComponents\n</h1>\n\n<hr/>\n\n<p>\n\tThe framework comes packaged with some pre-made\n\t<a href=\"framework/entitycomponent.html\">EntityComponents</a>. Some of these\n\tcomponents are convenient wrappers around lower level systems, others have\n\tsome logic of their own.\n</p>\n\n<p>\n\tThese components are:\n</p>\n\n<ul>\n\t<li><a href=\"components/animation.html\">Animation</a></li>\n\t<p>\n\t\tAllows playback of <a href=\"render/animation.html\">Animations</a> for 3D\n\t\tmodels. Can be attached to a \n\t\t<a href=\"components/render.html\">RenderComponent</a>.\n\t</p>\n\t<li><a href=\"components/audio.html\">Audio</a></li>\n\t<p>\n\t\tA wrapper around an <a href=\"audio.html#source\">audio source</a>. Can be\n\t\tused to play back <a href=\"audio.html#sound\">sounds</a>.\n\t</p>\n\t<li><a href=\"components/controller.html\">Controller</a></li>\n\t<p>\n\t\tController for characters, i.e. player, NPCs. Accepts movement commands,\n\t\ti.e. walk, turn, jump, etc.\n\t</p>\n\t<li><a href=\"components/light.html\">Light</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"render.html#light\">light</a>. Used to\n\t\tilluminate the 3D scene.\n\t</p>\n\t<li><a href=\"components/particle.html\">Particle</a></li>\n\t<p>\n\t\tEnables the creation of particle effects, i.e. smoke, sparks, falling\n\t\tleaves, snow, etc.\n\t</p>\n\t<li><a href=\"components/physics.html\">Physics</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"physics.html#rigidbody\">rigidbody</a> in the\n\t\tphysics simulation.\n\t</p>\n\t<li><a href=\"components/player.html\">Player</a></li>\n\t<p>\n\t\tMaps input from the <a href=\"framework/ui.html\">UI</a> system into commands for a\n\t\t<a href=\"components/controller.html\">CharacterController</a>.\n\t</p>\n\t<li><a href=\"components/render.html\">Render</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"render.html#drawlistentry\">draw list\n\t\tentry</a>. Used to display 3D models in the scene.\n\t</p>\n\t<li><a href=\"components/sprite.html\">Sprite</a></li>\n\t<p>\n\t\tCan be used to display a flat 2D image in a 3D scene.\n\t</p>\n\t<li><a href=\"components/template.html\">Template</a></li>\n\t<p>\n\t\tBlank component, the source of which can be copied to be used as a base\n\t\tto create new components.\n\t</p>\n\t<li><a href=\"components/trigger.html\">Trigger</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"physics.html#trigger\">trigger</a>. Can fire off\n\t\tcallbacks when a <a href=\"physics.html#rigidbody\">rigidbody</a> enters\n\t\tits volume.\n\t</p>\n</ul>"
  },
  {
    "path": "docs/src/documentation/entities/crate.html",
    "content": "<!-- PAGE_TITLE: Crate | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCrate\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be placed in a level. It doesn't do anything other than do\n\tnormal rigidbody stuff.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../render/model.html\">3D model</a>. \n</p>\n\n<h4>\n\tCollision Model | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/decoration.html",
    "content": "<!-- PAGE_TITLE: Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDecoration\n</h1>\n\n<hr/>\n\n<p>\n\tDisplays a <a href=\"../render/model.html\">3D model</a> and optionally plays\n\tback an <a href=\"../render/animation.html\">animation</a> on it.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>Int32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of both the 3D model and the\n\t<a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h4>\n\tAnimation | <code>Name</code>\n</h4>\n\n<p>\n\tName of the animation that the model will play. If set to <code>none</code>,\n\tno animation will be played and the\n\t<a href=\"../components/animation.html\">AnimationComponent</a> won't even be\n\tcreated.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | FLAG_LOCKED</code>\n</h4>\n\n<p>\n\tThe decoration is locked and prevented from activating.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tSelect | <code>SELECT</code>\n</h4>\n\n<p>\n\tIf the decoration isn't locked, it will emit a\n\t<a href=\"../framework/event.html#selected\">Selected event</a>.\n</p>\n\n<h4>\n\tActivate Once | <code>ACTIVATE_ONCE</code>\n</h4>\n\n<p>\n\tIf the decoration isn't locked, it will fire the \n\t<a href=\"../framework/signal.html#activate\">Activate</a> and the\n\t<a href=\"../framework/signal.html#use\">Use</a> signals.\n</p>\n\n<h4>\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tLocks the decoration.\n</p>\n\n<h4>\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tUnlocks the decoration.\n</p>\n\n<h4>\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tIf an animation is set and is being played, it will be stopped. If it is\n\tstopped, it will be restarted.\n</p>\n\n<h4>\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tYeets the entity.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tIf an animation is set, it will be played back.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tIf an animation is being played back, it will be stopped.\n</p>\n\n<h4>\n\tSet Animation | <code>SET_ANIMATION</code>\n</h4>\n\n<p>\n\tSwitches which animation the component will play back. The data pointer of\n\tthe message needs to be set to a <a href=\"../framework/value.html\">Value</a>\n\twhich contains the <a href=\"../framework/uid.html\">name</a> of the animation\n\tto which the switch is happening.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated and isn't locked.\n</p>\n\n<h4>\n\tUse | <code>USE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated and isn't locked.\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/light.html",
    "content": "<!-- PAGE_TITLE: Light | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLight\n</h1>\n\n<hr/>\n\n<p>\n\tPlaces a light into the scene.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tColor | <code>Vec3</code>\n</h4>\n\n<p>\n\tThe color of the light.\n</p>\n\n<h4>\n\tDistance | <code>Float32</code>\n</h4>\n\n<p>\n\tMaximum distance, in meters, that the light is allowed to travel. Used for\n\tlightmapping optimiziations.\n</p>\n\n<h4>\n\tDirection | <code>Vec3</code>\n</h4>\n\n<p>\n\tThe direction of the light, if used as a spotlight. If you want a point\n\tlight, set this to a random unit vector like\n\t<code>{0,&nbsp;1,&nbsp;0}</code>.\n</p>\n\n<h4>\n\tExponent | <code>Float32</code>\n</h4>\n\n<p>\n\tSpotlight exponent. Higher values means narrower spot. Set this value to \n\t<code>1.0</code> to get a point light.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/marker.html",
    "content": "<!-- PAGE_TITLE: Marker | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMarker\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity doesm't do anything.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/player.html",
    "content": "<!-- PAGE_TITLE: Player | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlayer\n</h1>\n\n<hr/>\n\n<p>\n\tAdds a player. The entity will accept keyboard inputs and move about.\n</p>\n\n<p>\n\tSince this entity type doesn't get registered and has no fields, it can't be\n\tplaced in the level editor. Instead, it should be created through code.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/sound.html",
    "content": "<!-- PAGE_TITLE: Sound | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSound\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be placed in a level to play back sounds.\n</p>\n\n<p>\n\tIt also has a constructor so that it can be created thorugh code. If created\n\tthis way, the entity will yeet itself once it finishes playing back the \n\tsound. This way you can play a sound effect and then forget it.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>Int32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tSound | <code>Name</code>\n</h4>\n\n<p>\n\tName of the sound that the entity will play back.\n</p>\n\n<h4>\n\tVolume | <code>Float32</code>\n</h4>\n\n<p>\n\tHow loud the sound will be. From 0.0 to 1.0.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | SOUND_LOOPING</code>\n</h4>\n\n<p>\n\tThe sound will loop after finishing.\n</p>\n\n<h4>\n\t<code>2 | SOUND_START_ON_LOAD</code>\n</h4>\n\n<p>\n\tThe sound will begin playback as soon as the entity is loaded. Useful for\n\tambient sort of environmental sounds\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tIf the sound is being played, it will be stopped. If it is stopped, it will \n\tstart again.\n</p>\n\n<h4>\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tThis yeets the entity.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tStarts playing back the sound.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tStops playing back the sound.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/staticwobj.html",
    "content": "<!-- PAGE_TITLE: Static World Object | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tStatic World Object\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity is used for worldspawns. To make parts of the level out of.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of both of the <a href=\"../render/model.html\">3D model</a> and the \n\t<a href=\"../physics/collisionmodel.html\">collision model</a>.\n</p>\n\n<h4>\n\tLightmap | <code>Name</code>\n</h4>\n\n<p>\n\tName of the lightmap material.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tThere are none.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/entities/trigger.html",
    "content": "<!-- PAGE_TITLE: Trigger | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTrigger\n</h1>\n\n<hr/>\n\n<p>\n\tThis entity can be used to detect collisions with other entities.\n</p>\n\n<h2>\n\tFields\n</h2>\n\n<hr/>\n\n<h4>\n\tFlags | <code>UInt32</code>\n</h4>\n\n<p>\n\tBitmask, see flags section.\n</p>\n\n<h4>\n\tCollision Mask | <code>UInt32</code>\n</h4>\n\n<p>\n\tThe <a href=\"../physics.html#collisionmask\">collision mask</a> of the trigger.\n</p>\n\n<h4>\n\tModel | <code>Name</code>\n</h4>\n\n<p>\n\tName of the <a href=\"../physics/collisionmodel.html\">collision model</a>\n\tthat the trigger will use.\n</p>\n\n<h2>\n\tFlags\n</h2>\n\n<hr/>\n\n<h4>\n\t<code>1 | TRIGGER_DISABLED</code>\n</h4>\n\n<p>\n\tThis will disable the trigger from being triggered.\n</p>\n\n<h2>\n\tMessages\n</h2>\n\n<hr/>\n\n<h4>\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tDisables the trigger.\n</p>\n\n<h4>\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tEnables the trigger.\n</p>\n\n<h2>\n\tSignals\n</h2>\n\n<hr/>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired when an entity collides with the trigger volume.\n</p>"
  },
  {
    "path": "docs/src/documentation/entities.html",
    "content": "<!-- PAGE_TITLE: Entities | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntities\n</h1>\n\n<p>\n\tThe framework comes with some pre-made enitites. These are very nice, you\n\tshould try using them. If you want, you can extend them by subclassing them\n\tand building a new entity on top of them.\n</p>\n\n<ul>\n\t<li><a href=\"entities/crate.html\">Crate</a></li>\n\t<p>\n\t\tA crate is basically a\n\t\t<a href=\"components/render.html\">RenderComponent</a> and a \n\t\t<a href=\"components/physics.html\">PhysicsComponent</a> glued together.\n\t\tIt doesn't do anything special. Can be used for small clutter objects.\n\t</p>\n\t\n\t<li><a href=\"entities/decoration.html\">Decoration</a></li>\n\t<p>\n\t\tDecorations are meant to display dynamic models. They can have a\n\t\t<a href=\"components/physics.html\">PhysicsComponent</a> to be used as a\n\t\tcollider, but it won't participate in the dynamics simulation.\n\t</p>\t\n\t<p>\n\t\tThey also have a<a href=\"components/render.html\">RenderComponent</a> and\n\t\tan optional <a href=\"components/animation.html\">AnimationComponent</a>.\n\t</p>\n\t<li><a href=\"entities/light.html\">Light</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"components/light.html\">LightComponent</a>.\n\t\tCan be used for real-time illumination of dynamic objects and for\n\t\tpre-computed lightmaps.\n\t</p>\n\t<li><a href=\"entities/marker.html\">Marker</a></li>\n\t<p>\n\t\tA most basic entity. Has no components, doesn't do anything. It is only\n\t\tused for its transform. Can be used as a template to create further\n\t\tentity types on top of it.\n\t</p>\n\t<li><a href=\"entities/player.html\">Player</a></li>\n\t<p>\n\t\tA very basic entity that serves as a wrapper for a\n\t\t<a href=\"components/player.html\">PlayerComponent</a> and a \n\t\t<a href=\"components/controller.html\">ControllerComponent</a>, which are\n\t\tconnected together. Useful if you want the user of your application to\n\t\tbe able to walk around the scene.\n\t</p>\n\t<li><a href=\"entities/sound.html\">Sound</a></li>\n\t<p>\n\t\tA wrapper around a <a href=\"components/audio.html\">AudioComponent</a>.\n\t\tCan be used for environmental sounds, or if you just want to trigger a\n\t\tsound by a <a href=\"framework/signal.html\">Signal</a>.\n\t</p>\n\t<li><a href=\"entities/staticwobj.html\">Static World Object</a></li>\n\t<p>\n\t\tIt's meant for creating worldspawns.\n\t\t<a href=\"components/render.html\">RenderComponent</a> for the 3D model\n\t\tpart and <a href=\"components/physics.html\">PhysicsComponent</a> for the\n\t\tcollision. Can add lightmaps.\n\t</p>\n\t<li><a href=\"entities/trigger.html\">Trigger</a></li>\n\t<p>\n\t\tA wrapper for a <a href=\"components/trigger.html\">TriggerComponent</a>.\n\t\tWhen triggered, outputs <a href=\"framework/signal.html\">Signal</a>, so\n\t\tcan be used for logics and stuff.\n\t</p>\n</ul>"
  },
  {
    "path": "docs/src/documentation/entitydefinition.html",
    "content": "<!-- PAGE_TITLE: Entity Definition | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntity Definition\n</h1>\n\n<hr/>\n\n<p>\n\tIt's the .entdef file in the data directory.\n</p>\n\n// TODO: document"
  },
  {
    "path": "docs/src/documentation/extensions/camera.html",
    "content": "<!-- PAGE_TITLE: Camera | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCamera\n</h1>\n\n<hr/>\n\n<p>\n\tAll camera types basically do a bit of logic and then come up with a\n\tposition and a rotation. Then they pass them over to the Render system to\n\tand use them to set the View and pass them to the Audio system to set the\n\tlistener.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<h4>\n\tCamera Interface\n</h4>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/camera/camera.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_ext_1_1_camera_1_1_camera.html\">API documentation\n\tpage</a>.\n</p>\n\n<h4>\n\tFirst Person Camera\n</h4>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/camera/firstperson.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_ext_1_1_camera_1_1_first_person_camera.html\">API documentation\n\tpage</a>.\n</p>\n\n\n\n<p>\n\tHere's how to do a first person camera.\n</p>\n\n<code>\n\t// here will be our camera<br/>\n\tExt::Camera::FirstPersonCamera* camera = nullptr;<br/>\n\t<br/>\n\t// this will be our player<br/>\n\tEntity* player = Entity::Find(\"player\");<br/>\n\t<br/>\n\t// let's make a new camera<br/>\n\tcamera = new Ext::Camera::FirstPersonCamera;<br/>\n\t<br/>\n\t// this attaches the camera to the player<br/>\n\tcamera->SetFollowing(player);<br/>\n\t<br/>\n\t// this will allow rotation of the camera<br/>\n\t// by moving the mouse cursor<br/>\n\tcamera->SetMouselook(true);<br/>\n\t<br/>\n\t// this will rotate the player with the<br/>\n\t// camera. useful if player has a visible<br/>\n\t// 3D model<br/>\n\tcamera->SetRotateFollowing(true);<br/>\n\t<br/>\n\t// this will position the camera half a meter<br/>\n\t// above the player entity's middle point<br/>\n\tcamera->SetFollowingOffset({0.0f, 0.5f, 0.0f});<br/>\n\t<br/>\n\t// this turns on the camera<br/>\n\tcamera->SetActive();\n</code>\n\n<p>\n\tThere are other camera types, but they are sort of unfinished.\n</p>"
  },
  {
    "path": "docs/src/documentation/extensions/kitchensink/animationtable.html",
    "content": "<!-- PAGE_TITLE: AnimationTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimationTable\n</h1>\n\n<hr/>\n\n<p>\n\tThis is what is called a hierarchical animation blend space tree graph node\n\tautomata. It basically lets you define how an\n\t<a href=\"../../components/animation.html\">AnimationComponent</a> should\n\tswitch between animations, and which animations it can and which ones it\n\tcannot play back at the same time.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tState\n</h4>\n\n<p>\n\tWhen in a given state, the component will play back an animation. When the\n\tstate is switched, it will perform the configured transition, such as a\n\tfade-in or fade-out. \n</p>\n\n<h4>\n\tState space\n</h4>\n\n<p>\n\tThe state space holds a They are organized hierarchically, and higher state spaces can override lower state spaces with their state.\n</p>\n\n<p> \n\tFor example, a character could have a state space for torso and for legs,\n\tboth of which could be parented to a full body state space. It could then\n\tplay back animations on the torso and legs seperately, but sometimes it is\n\teasier to create an animation for the armature together, like when climbing\n\ta ladder, so then a state could be changed in the full body space and it\n\twould override the animations of torso and legs.\n</p>\n\n<h4>\n\tTransition\n</h4>\n\n<p>\n\tWhen a transition between two states occurs, the animations have to be\n\tswitched. A transition determines how this occurs. It allows to configure\n\tfade-ins, fade-outs and their durations.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tI still haven't finalized the API and debugged everything, so it's not \n\t\tfinished yet.\n\t</i>\n</p>\n\n"
  },
  {
    "path": "docs/src/documentation/extensions/kitchensink/soundtable.html",
    "content": "<!-- PAGE_TITLE: SoundTable | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSoundTable\n</h1>\n\n<hr/>\n\n<p>\n\tA sound table contains many-to-many mappings from a key to a name of a\n\tsound. This allows to associate sounds with a certain category.\n</p>\n\n<p>\n\tFor example, <a href=\"../kitchensink.html\">Button</a> entity has a\n\tsound table parameter. When it opens or close, it will look up the sounds\n\tmapped to the <code>SOUND_OPEN</code> and <code>SOUND_CLOSE</code> keys \n\trespectively. If it finds a sound that is mapped to a give key, it will play\n\tit back.\n</p>\n\n<p>\n\tSince there can be multiple sounds mapped to the same key, if there arises\n\tsuch a situation when a sound is being looked up and there are multiple \n\tsounds associated with the given key, a random sound that is mapped to said\n\tkey will be returned.\n</p>\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">extensions/kitchensink/soundtable.h</span>&gt;</code> <br/>\n\t<a href=\"../../../cppapi/classtram_1_1_ext_1_1_design_1_1_sound_table.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tVery simple API. It was supposed to be very simple, so it is such.\n</p>\n\n<code>\n\tSoundTable* table = SoundTable::Find(\"table\");<br/>\n\t<br/>\n\ttable->AddSound(SOUND_OPEN, \"open1\");<br/>\n\ttable->AddSound(SOUND_OPEN, \"open2\");<br/>\n\ttable->AddSound(SOUND_CLOSE, \"close1\");<br/>\n\t<br/>\n\t// this variable will be set to \"close1\"<br/>\n\tname_t sound = table->GetSound(SOUND_CLOSE);<br/>\n\t<br/>\n\t// this will play back either \"open1\" or \"open2\"<br/>\n\ttable->Play(SOUND_OPEN);\n</code>\n\n"
  },
  {
    "path": "docs/src/documentation/extensions/kitchensink.html",
    "content": "<!-- PAGE_TITLE: Kitchensink | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tKitchensink\n</h1>\n\n<hr/>\n\n<p>\n\tThis is where I put all of the random stuff that I feel like a lot of users\n\tcould maybe not actually want to use.\n</p>\n\n<p>\n\tPutting this in an extension allows you to skip compiling this part of the\n\tframework.\n</p>"
  },
  {
    "path": "docs/src/documentation/extensions/menu.html",
    "content": "<!-- PAGE_TITLE: Menu | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMenu\n</h1>\n\n<hr/>\n\n<p>\n\tThe menu system provides a menu dialog framework and implementations of a\n\tcouple of useful menus.\n</p>\n\n<h2>\n\tDebug Menu\n</h2>\n\n<hr/>\n\n<p>\n\tThe debug menu provides a way to view the list of all loaded worldcells, all\n\tloaded entities, select entities by mouse picking, view worldcell settings\n\tand change them, view entity settings, send messages to entities, emit\n\tevents, visualize all of the events and messages being sent through their\n\tqueues.\n</p>\n\n<p>\n\tBy default it is accessible by pressing the <code>~</code>, aka \n\t<code>`</code>, aka the tilde key.\n</p>\n\n<h2>\n\tSettings Menu\n</h2>\n\n<hr/>\n\n<p>\n\tThe settings menu provides a way to change various engine settings, such as\n\tFOV, key bindings, screen resolution, fullscreen mode, GUI scale and others.\n</p>\n\n<p>\n\tBy default it is accessible by pressing the <code>Esc</code> key and\n\tthen selecting <i>Settings</i> in the escape menu.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/extensions/scripting.html",
    "content": "<!-- PAGE_TITLE: Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tScripting\n</h1>\n\n<hr/>\n\n<p>\n\tThis extension contains the bindings for various scripting languages, and by\n\tvarious I mean Lua. We only have Lua.\n</p>"
  },
  {
    "path": "docs/src/documentation/extensions.html",
    "content": "<!-- PAGE_TITLE: Extensions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tExtensions\n</h1>\n\n<p>\n\tExtensions are parts of the framework are optional parts of the framework.\n\tMost extensions are various useful tools, game mechanics, integrations with\n\tother services.\n</p>\n\n<p>\n\tCurrently available extensions are:\n</p>\n\n<ul>\n\t<li><a href=\"extensions/camera.html\">Camera</a></li>\n\t<p>\n\t\tThis extension contains implementations of first-person, third-person\n\t\tand other cameras for various viewpoints. They support effects like\n\t\ttilting, view bobbing and screen shakes.\n\t</p>\n\t<li><a href=\"extensions/kitchensink.html\">Kitchensink</a></li>\n\t<p>\n\t\tThis extension contains random game mechanics and other useful tools\n\t\tthat didn't fit in other extensions.\n\t</p>\n\t<li><a href=\"extensions/menu.html\">Menu</a></li>\n\t<p>\n\t\tThis extension contains a framework for creating menus, as well as\n\t\timplementation of a debugging menu, a settings menu and an escape/pause\n\t\tscreen menu.\n\t</p>\n\t<li><a href=\"extensions/scripting.html\">Scripting</a></li>\n\t<p>\n\t\tThis extension contains integrations with various scripting languages.\n\t\tCurently the only scripting language that is fully integrated is the Lua\n\t\tscripting language.\n\t</p>\n</ul>"
  },
  {
    "path": "docs/src/documentation/framework/async.html",
    "content": "<!-- PAGE_TITLE: Async | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAsync\n</h1>\n\n<hr/>\n\n<p>\n\tThe Async system lets you do stuff... asynchronously. On a separate\n\tworker thread. This meant that the main logic thread can be freed up from\n\tcertain computations and in general makes the framework go vroom vroom.\n</p>\n\n<p>\n\tCurrently the async system supports <a href=\"resource.html\">Resource</a>\n\tloading. In the future it will get some more functionality, but it's only \n\tresources for now.\n</p>\n\n<p>\n\tTo use it, you need to initialize the system. This will start up the worker\n\tthreads. The system needs to be updated in the main loop and then shut down.\n</p>\n\n<p>\n\tUnfortunately, it seems like multithreading still doesn't work in\n\twebassembly builds, so you will have to do resource loading entirely from\n\tthe main thread.\n</p>\n\n<h2>\n\tResource streaming\n</h2>\n\n<hr/>\n\n<p>\n\tLet's take the <a href=\"../render/model.html\">Model</a> resource as an example.\n\tIt is derived from the <a href=\"resource.html\">Resource</a> class and\n\timplements its API.\n</p>\n\n<p>\n\tMost of the time while loading the Model is spent retrieving it from the\n\tdisk and parsing it. All of the relevant logic is implemented in the\n\t<code>LoadFromDisk()</code> method. This method will be called from the\n\tworker thread.\n</p>\n\n<p>\n\tDue to a quirk in the OpenGL API, we need to perform all of the data uploads\n\tto the GPU from the main thread. The relevant logic for this is implemented \n\tin the <code>LoadFromMemory()</code> method.\n</p>\n\n<h3>\n\tExample\n</h3>\n\n<hr/>\n\n<center>\n\t<img src=\"asyncswimlane.gif\"/><br/>\n\t<i>\n\t\tThis is what happens when you call the SetModel() method on a \n\t\tRenderComponent and if the Model isn't loaded yet.\n\t</i>\n</center>\n\n<p>\n\tWhat happens when you assign a Model to a\n\t<a href=\"../components/render.html\">RenderComponent</a>?\n</p>\n\n<ol>\n\t<li>\n\t\tThe RenderComponent will check if the Model is loaded. If it is not, it\n\t\twill pass the Model to the Async system, which will add it to the disk\n\t\tloading\tqueue.\n\t</li>\n\t<li>\n\t\tThe worker thread will pop the Model from the disk loading queue and \n\t\twill call its <code>LoadFromDisk()</code> method. The method will load\n\t\tthe\t<code>.stmdl</code> or <code>.dymdl</code> file associated with the \n\t\tModel, parse it into binary format and build up an AABB tree. The worker\n\t\twill then add the resource to the memory loading queue.\n\t</li>\n\t<li>\n\t\tThe main thread will pop the Model from the memory loading queue and\n\t\twill call its <code>LoadFromMemory()</code> method. The method will pass\n\t\tthe binary model data to the <a href=\"../render.html\">Render</a> API,\n\t\twhich in turn will upload the model data to the GPU memory. The memory\n\t\tcontaining the binary data will then be free. Finally the Model will be\n\t\tadded to the finishing queue.\n\t</li>\n\t<li>\n\t\tThe main thread will pop the Model from the finishing queue. It will\n\t\tthen check which <a href=\"entitycomponent.html\">EntityComponent</a>\n\t\trequested the resource to be loaded. It will then notify our\n\t\tRenderComponent about the loaded resource.\n\t</li>\n\t<li>\n\t\tThe RenderComponent will then add the loaded 3D model to the scene. It\n\t\twill then be eligible to be rendered to the screen.\n\t</li>\n</ol>\n\n\t\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/async.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_async.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codekeyw\">const size_t</span> thread_count = <span class=\"codelit\">1</span>;<br/>\n\t<br/>\n\t<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">Init</span>(thread_count);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// the worker thread won't start on webassembly</br>\n\t&nbsp;&nbsp;&nbsp;&nbsp;// builds, so we just do that part on the<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;// main thread</span><br/>\n#<span class=\"codekeyw\">ifdef</span> __EMSCRIPTEN__<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">LoadResourcesFromDisk</span>();<br/>\n#<span class=\"codekeyw\">endif</span><br/>\n<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">LoadResourcesFromMemory</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">FinishResources</span>();<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codeclass\">Async</span>::<span class=\"codefunc\">Yeet</span>();<br/><br/>\n</code>\n\n<p>\n\tIt is possible to request a resource to be loaded by calling the\n\t<code><span class=\"codeclass\">Async</span>::<span class=\"codefunc\">RequestResource</span>()</code> function, but a\n\tbetter way would be by using the\n\t<a href=\"resource.html#proxy\">ResourceProxy</a> smart pointer, which will\n\tnot only automatically request\ta resource to be loaded, but will also\n\tautomatically manage reference count.\n</p>\n\n<p>\n\tIf you want to create a progress bar which displays the process of resource\n\tloading, you can use <code><span class=\"codeclass\">Async</span>::<span class=\"codefunc\">GetWaitingResources</span>()</code> to get the number\n\tof resources being processed by the Async system.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/framework/core.html",
    "content": "<!-- PAGE_TITLE: Core | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCore\n</h1>\n\n<hr/>\n\n<p>\n\tThis is the main system of the framework. It keeps track of the main loop,\n\tprovides ID number generation services and keeps track of the framework\n\tversion.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tEach cycle of the main loop is called a frame. It is called that because\n\tduring each loop you render a single frame of graphics.\n</p>\n\n<h4>\n\tTick\n</h4>\n\n<p>\n\tThere are 60 ticks in a second. If you have a 60hz monitor and you have\n\tturned on vsync or a frame limiter,\tthen a tick will be the same as a frame.\n</p>\n\n<p>\n\tThis concept allows you to create applications as if they were always run\n\tat 60 frames per second.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/core.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_core.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tEvery application created with the framework needs to initialize and update\n\tthe core system.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Core</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Core</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n\n<p>\n\tThat was very simple.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">id_t</span> id = <span class=\"codefunc\">GenerateID</span>();<br/>\n\t<br/>\n\t<span class=\"codekeyw\">uint32_t</span> ticks = <span class=\"codefunc\">GetTick</span>();<br/>\n\t<br/>\n\t<span class=\"codekeyw\">double</span> time = <span class=\"codefunc\">GetTickTime</span>();<br/>\n\t<span class=\"codekeyw\">float</span> delta_time <span class=\"codefunc\">GetDeltaTime</span>();<br/>\n</code>\n\n<p>\n\tAfter the previous bit of code is executed:\n</p>\n\n<ul>\n\t<li>\n\t\tThe variable <i>id</i> will contain a new, unique ID number.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>ticks</i> will contain the number of ticks which have \n\t\telapsed since the initialization of the application.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>time</i> will contain the time, in seconds, that has\n\t\tpassed since the initialization of the application.\n\t</li>\n\t\n\t<li>\n\t\tThe variable <i>delta_time</i> will contain the time, in seconds, that\n\t\thas passed between the start of this and the start of the previous\n\t\tframe.\n\t</li>\n</ul>\n"
  },
  {
    "path": "docs/src/documentation/framework/entity.html",
    "content": "<!-- PAGE_TITLE: Entity | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntity\n</h1>\n\n<hr/>\n\n<p>\n\tEntities are one of the main concepts of the framework. An entity is a\n\tthing. Anything. A part of the level geometry, an interactable object,\n\ta pickup or an NPC.\n</p>\n\n<p>\n\tEntities are also the things that receive messages and the things that you\n\tplace down in the level editor.\n</p>\n\n<p>\n\tMost of your entities will probably be placed in \n\t<a href=\"worldcell.html\">WorldCells</a>, which are the basic level and\n\tstreaming units of your virtual world.\n</p>\n\n<p>\n\tRe-usable parts of the entity logic are usually placed into\n\t<a href=\"entitycomponent.html\">EntityComponents</a> and entities are then\n\tassembled out of them.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tID\n</h4>\n\n<p>\n\tEach entity gets its own unique ID number. You can assign an ID number to an\n\tentity, or the framework can generate one for you. No two entities can have\n\tthe same ID number, since then the framework will assume that one of the\n\tentitie is a copy and will yeet it.\n</p>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tEntities can be given names, but unlike an ID, these are optional. This is\n\talso how you will refer to specific entities most of the time.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tEach entity has a type. It determines its behavior and what kinds of\n\tproperties it has.\n</p>\n\n<h4>\n\tProperties\n</h4>\n\n<p>\n\tEach entity has properties. These can be numbers, strings, vectors or\n\tother kinds of types. An entity's properties can be edited in the level\n\teditor.\n</p>\n\n<p>\n\tThey are also called parameters, fields and entity data. Mostly because I\n\tkeep forgetting how this concept is called.\n</p>\n\n<h4>\n\tLocation/Rotation\n</h4>\n\n<p>\n\tEach entity gets a rotation and a location. This transform is used to \n\tdetermine in which WorldCell the entity is located in and when to load and\n\tunload it\n</p>\n\n<h4>\n\tLoading/Unloading\n</h4>\n\n<p>\n\tWhen an entity is constructed, either through code or from a record in a \n\tWorldCell file on disk, it starts out unloaded and has no EntityComponents\n\tattached to it. It just sits there, doing nothing.\n</p>\n\n<p>\n\tWhen an entity is loaded, either when its WorldCell is loaded or on some\n\tother event, it will construct its EntityComponents and pass its properties\n\tto them.\n</p>\n\n<p>\n\tWhen unloaded again, it will pack up and yeet all of its EntityComponents.\n\tThis saves on computational resources &ndash; it allows the framework to\n\tprocess only a small part of all of the entities at the same time.\n</p>\n\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entity.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_entity.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tIf you want to create your own entity type, a good place to start would be\n\tby copying the <a href=\"../entities/marker.html\">Marker</a> entity.\n</p>\n\n<p>\n\tThe other way would be to create a subclass of the Entity class and then\n\timplement all of its virtual methods. If you want the Entity to be loadable\n\tfrom a level file, you also need to add an entity type registration static\n\tmethod. Additionally, you could add the type to your project's \n\t<a href=\"../entitydefinition.html\">entity definition file</a>, so that the \n\tlevel editor and other utilities can process your entity type.\n</p>\n\n<p>\n\tTo interact with an entity, you first need to get a pointer to it. You can\n\tget the pointer by using the <code>Find()</code> static method, which can\n\tfind an entity either by its ID number, or by its name.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Entity</span>* entity1 = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"bingus\"</span>);<br/>\n\t<span class=\"codeclass\">Entity</span>* entity2 = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">42069</span>);<br/>\n\t<br/>\n\tif (!entity1) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Entity bingus doesn't exist!\"</span>);<br/>\n\t}\n</code>\n\n<p>\n\tIt is also possible to query its transform and to change it.\n</p>\n\n<code>\n\t<span class=\"codeclass\">vec3</span> position = entity-><span class=\"codefunc\">GetLocation</span>();<br/>\n\t<span class=\"codeclass\">quat</span> rotation = entity-><span class=\"codefunc\">GetRotation</span>();<br/>\n\t<br/>\n\tposition += <span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0f</span>, <span class=\"codelit\">1.0f</span>, <span class=\"codelit\">0.0f</span>);<br/>\n\t<br/>\n\tentity-><span class=\"codefunc\">SetLocation</span>(position);\n</code>\n\n<p>\n\tThere are a lot of other methods for the Entity class. Check the API\n\tdocumentation for them.\n</p>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tThe Lua API is basically the same as the C++ API.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">local</span> bingus = tram.entity.<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"bingus\"</span>)<br/>\n\t<br/>\n\t<span class=\"codekeyw\">if</span> bingus == <span class=\"codekeyw\">nil then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"Entity bingus doesn't exist!\"</span>)<br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codekeyw\">local</span> position = bingus:<span class=\"codefunc\">GetLocation</span>()<br/>\n\t<span class=\"codekeyw\">local</span> rotation = bingus:<span class=\"codefunc\">GetRotation</span>()<br/>\n\t<br/>\n\tposition = position + tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">1.0</span>, <span class=\"codelit\">0.0</span>)<br/>\n\t<br/>\n\tbingus:<span class=\"codefunc\">SetLocation</span>(position)\n</code>"
  },
  {
    "path": "docs/src/documentation/framework/entitycomponent.html",
    "content": "<!-- PAGE_TITLE: EntityComponent | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEntityComponent\n</h1>\n\n<hr/>\n\n<p>\n\tEntityComponents are re-usable parts for assembling <a href=\"entity.html\">\n\tEntities</a>. Need to display a 3D model for an entity? Use a\n\tRenderComponent. Need to add entity to the physics simulation? Use a\n\tPhysicsComponent. Have an entity that simulates a frog and want to add frog\n\tbehavior to other entities? Refactor the frog code into a FrogComponent.\n</p>\n\n<p>\n\tMost components are created in a way that you can use them without attaching\n\tthem to an entity, so you can use a RenderComponent to render some\n\tUI elements, or a skybox or something like that, but in general they are\n\tused for constructing entities.\n</p>\n\n<p>\n\tComponents can have dependencies on <a href=\"resource.html\">Resources</a>.\n\tThis can be automatically tracked.\n</p>\n\n<p>\n\tUnlike entities, which can be repeatedly loaded and unloaded, once a \n\tcomponent is initialized, it can only be deleted. After that it will have to\n\tbe reconstructed and reinitialized.\n</p>\n\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entitycomponent.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_entity_component.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tComponents work something like this:\n</p>\n\n<ol>\n\t<li>\n\t\tThe component class object is constructed.\n\t</li>\n\t\n\t<li>\n\t\tThe component is fed parameters by calling methods on it.\n\t</li>\n\t<ul>\n\t\t<li>\n\t\t\tIf the parameter is a Resource and it is unloaded, then it gets\n\t\t\tadded to the Async loader queue.\n\t\t</li>\n\t\t<li>\n\t\t\tIn such a case, the component will remember that it is waiting\n\t\t\tfor a resource.\n\t\t</li>\n\t</ul>\n\t\t\n\t<li>\n\t\tThe component is initialized by calling the <code>Init()</code> method.\n\t</li>\n\t\n\t<li>\n\t\tIf the component is waiting on any resources, then it will just do \n\t\tnothing and will wait for them to be ready.\n\t</li>\n\t\n\t<li>\n\t\tThe component is started by either calling its own <code>Start()</code>\n\t\tmethod, if it isn't waiting on any resources, or by the\n\t\t<a href=\"asynv.html\">Async</a> system, once the resources on which the\n\t\tcomponent is waiting have been loaded.\n\t</li>\n\t\n\t<li>\n\t\tThe component does its component stuff. Some parameters may be changed\n\t\tby getting their methods called.\n\t</li>\n\t\n\t<li>\n\t\tThe component class gets destructed.\n\t</li>\n</ol>\n\n<p>\n\tNone of the constructors have any parameters &ndash; this is mostly due to\n\tthe fact that I feel like the initialization code for components with a lot\n\tof parameters, and therefore very long constructors looks incredibly awful.\n</p>\n\t\n<p>\n\tIf you want to create your own component, you can copy the header and\n\timplementation files of the \n\t<a href=\"../components/template.html\">TemplateComponent</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Component</span>&lt;<span class=\"codeclass\">TemplateComponent</span>&gt; template;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// constructs a new TemplateComponent</span><br/>\n\ttemplate.<span class=\"codefunc\">make(</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// initializes it</span><br/>\n\ttemplate-><span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// destructs it</span><br/>\n\ttemplate.<span class=\"codefunc\">clear</span>();<br/>\n</code>\n\n<p>\n\tThe <code>Component</code> smart pointer class ensures that it will be\n\tconstructed into the correct <a href = \"../templates/pool.html\">Pool</a>.\n\tThis is required for some components to work properly, like the\n\t<a href=\"../components/animation.html\">AnimationComponent</a>, which will\n\tnot get updated if it isn't constructed in the correct pool.\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/event.html",
    "content": "<!-- PAGE_TITLE: Events | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tEvents\n</h1>\n\n<hr/>\n\n<p>\n\tEvents are the main form of decoupled data interchange in the framework.\n\tPeople with too much time will recognize it as the &laquo;Observer&raquo;\n\tdesign pattern.\n</p>\n\n<p>\n\tThe main emitter of events is the <a href=\"ui.html\">UI system</a>, which\n\temits an event for every keypress and every mousemove.\n</p>\n\n<p>\n\tThere's also the tick and frame events, which are emitted by the \n\t<a href=\"core.html\">Core system</a> for each tick and frame respectively.\n</p>\n\n<center>\n\t<img src=\"event.gif\"/><br/>\n\t<i>Potato frog is emitting some events and potato cat is aware of it, since\n\the has an Event Listener.</i>\n</center>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"event\">\n\tEvent\n</h4>\n\n<p>\n\tIt is like a thing that has happened. Each event has a type, a subtype and\n\tit contains information about its emitter and has some optional data that\n\tcan be attached to the event.\n</p>\n\n<h4 id=\"listener\">\n\tListener\n</h4>\n\n<p>\n\tIt allows the event system to keep track of all of the other systems,\n\tentities and components that are interested in an event.\n</p>\n\n<p>\n\tAfter a registrant has registered an event listener for a specific event\n\ttype, the event system will begin dispatching events of said type either to\n\ta callback function or to an event handler method of the registrant.\n</p>\n\n<h2>\n\tEvent types\n</h2>\n\n<hr/>\n\n<p>\n\tIn order to use an event, you need to know what that event is and what it\n\tdoes. What it means. What does it mean?\n</p>\n\n<p>\n\tThese are the events which I have created, which means that I can tell you\n\twhat they do. If you use someone else's events. you need to ask them what\n\tthey do. If you have created the events yourself, you will need to ask\n\tyourself what you meant by them. This might be difficult, even the greatest\n\tphilosophers have struggled to understand themselves.\n</p>\n\n<h4 id=\"keypress\">\n\tKeypress | <code>KEYPRESS</code>\n</h4>\n\n<p>\n\tEmitted every frame that a key is being held down. The subtype field of the\n\tevent contains a <a href=\"ui.html\">UI::KeyboardKey</a> enumeration number,\n\tdepending on which key was pressed.\n</p>\n\n<h4 id=\"keydown\">\n\tKeydown | <code>KEYDOWN</code>\n</h4>\n\n<p>\n\tSame as keypress, except that the event is emitted only on the frame on\n\twhich the key was pressed down for the first time.\n</p>\n\n<h4 id=\"keyup\">\n\tKeyup | <code>KEYUP</code>\n</h4>\n\n<p>\n\tSame as keypress, except that the event is emitted only when the key is\n\treleased.\n</p>\n\n<h4 id=\"keychar\">\n\tKeychar | <code>KEYCHAR</code>\n</h4>\n\n<p>\n\tUsed for text input. Emitted whenever a keyboard key used for text input is \n\tpressed. The subtype field contains a UTF-16 encoded codepoint of the text\n\tcharacter.\n</p>\n\n<h4 id=\"cursorpos\">\n\tCursorpos | <code>CURSORPOS</code>\n</h4>\n\n<p>\n\tEmitted whenever the mouse cursor pointer position changes. No data.\n</p>\n\n<h4 id=\"frame\">\n\tFrame | <code>FRAME</code>\n</h4>\n\n<p>\n\tEmitted every frame. It's very useful when you want to execute some code\n\tevery frame &ndash; simply register a listener with a callback function\n\tcontaining your code.\n</p>\n\t\n<h4 id=\"tick\">\n\tTick | <code>TICK</code>\n</h4>\n\n<p>\n\tVery similar to the frame event, the main difference being that this event\n\tis independent of them frame rate &ndash; every second exactly 60 tick\n\tevents will be emitted.\n</p>\n\n\n<h4 id=\"selected\">\n\tSelected | <code>SELECTED</code>\n</h4>\n\n<p>\n\tEmitted by entities which are selected. Data pointer points to a \n\t<a href=\"value.html\">Value</a> which contains a name, which represents the\n\ttype of the entity. This event can be used for displaying information\n\tabout the selected entity, i.e. actions which can be performed on the\n\tentity.\n</p>\n\n<h4 id=\"lookat\">\n\tLook at | <code>LOOK-AT</code>\n</h4>\n\n<p>\n\tEmitted by entities which are looking at something. Data pointer points to\n\ta <a href=\"value.html\">Value</a> which contains a quaternion with the look\n\tdirection of the entity.\n</p>\n\n\n<h4 id=\"lastevent\">\n\tLast event | <code>LAST_EVENT</code>\n</h4>\n\n<p>\n\tThis is not actually an event.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/event.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_event.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tLet's emit our own event!\n</p>\n\n<code>\n\t<span class=\"codekeyw\">const name_t</span> m_type = <span class=\"codelit\">\"mongus\"</span>;<br/>\n\t<br/>\n\t<span class=\"codeclass\">Event</span> event;<br/>\n\t<br/>\n\tevent.type = <span class=\"codeclass\">Event</span>::SELECTED;<br/>\n    event.subtype = <span class=\"codelit\">420</span>;<br/>\n    event.poster_id = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>)-><span class=\"codefunc\">GetID</span>();<br/>\n    <br/>\n\tevent.data = <span class=\"codeclass\">Event</span>::<span class=\"codefunc\">AllocateData</span>&lt;<span class=\"codeclass\">Value</span>&gt;(m_type);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Event</span>::<span class=\"codefunc\">Post</span>(event);\n</code>\n\n<p>\n\tThe <code>Event::AllocateData()</code> static method allocates a bit of memory for use with the\n\tevent data pointer. This allocated memory gets automatically released when\n\tall of the emitted events have been dispatched.\n</p>\n\n<p>\n\tThere are the <code>Event::AddListener()</code> and the\n\t<code>Event::RemoveListener()</code> static methods to add and remove event\n\tlisteners respectively, but there is also a smart pointer type which will\n\tautomatically remove the listener when deleted.\n</p>\n\n<code>\n\t<span class=\"codeclass\">EventListener</span> keypress;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// creates an event listener</span><br/>\n\tkeypress.<span class=\"codefunc\">make</span>(<span class=\"codeclass\">Event</span>::KEYPRESS, <span class=\"codekeyw\">this</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// removes an event listener</span><br/>\n\tkeypress.<span class=\"codefunc\">clear</span>();\n</code>\n\n<p>\n\tIf you want to, you can also create new event types.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">event_t</span> frog_event = <span class=\"codeclass\">Event</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-event\"</span>);\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tEmitting an event is very similar to how it is done with the C++ API. The\n\tmain difference is that we can't attach arbitrary data to the event, instead\n\twe are limited to floating point numbers, integers and names, which is the\n\tsame limitation as with <a href=\"signal.html\">Signals</a>.\n</p>\n\n<code>\n\tevent = {}<br/>\n\tevent.type = tram.event.<span class=\"codefunc\">GetType</span>(<span class=\"codelit\">\"my_fancy_event\"</span>)<br/>\n\tevent.subtype = <span class=\"codelit\">420</span><br/>\n\tevent.poster = tram.entity.<span class=\"codefunc\">Find</span>(mongus):<span class=\"codefunc\">GetID</span>()<br/>\n\tevent.data = <span class=\"codelit\">\"mongus\"</span><br/>\n\t<br/>\n\ttram.event.<span class=\"codefunc\">Post</span>(event)\n</code>\n\n<p>\n\tRegistering events and adding event listeners is also similar.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">local</span> frog_event = tram.event.<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-event\"</span>)<br/>\n\t<br/>\n\ttram.event.<span class=\"codefunc\">AddListener</span>(frog_event, <span class=\"codekeyw\">function</span>(event)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;type_name = tram.event.<span class=\"codefunc\">GetName</span>(event.type)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;subtype = event.subtype<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;poster = tram.entity.<span class=\"codefunc\">Find</span>(event.poster)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;data = event.data<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"Event received:\"</span>,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type_name,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subtype,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poster:<span class=\"codefunc\">GetName</span>(),<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data)<br/>\n\t<span class=\"codekeyw\">end</span>)<br/>\n</code>\n\n\n\n"
  },
  {
    "path": "docs/src/documentation/framework/file.html",
    "content": "<!-- PAGE_TITLE: File | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFile\n</h1>\n\n<hr/>\n\n<p>\n\tThis is a file abstraction that I made. I made it because the filestream of\n\tthe C++ standard library, altough possesing a very <i>je ne sais quoi</i> \n\tinterface, is way too slow.\n</p>\n\n<p>\n\tCurrently it can only be used to load text files and parse them from disk.\n</p>\n\n<p>\n\tI will probably add some more stuff to it in the future, like accessing\n\tfiles over HTTP instead of just from disk, or maybe loading them from .zip\n\tfiles.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/file.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_file.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThis is how you can parse in some text files.\n</p>\n\n<code>\n\t<span class=\"codeclass\">File</span> file(<span class=\"codelit\">\"my-text-file.txt\"</span>, MODE_READ);<br/>\n\t<br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"num1: %f\\n\"</span>, file.<span class=\"codefunc\">read_float32</span>());<br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"num2: %i\\n\"</span>, file.<span class=\"codefunc\">read_int32</span>());<br/>\n\t<br/>\n\t<span class=\"codecomm\">// read until end of file</span><br/>\n\t<span class=\"codekeyw\">while</span> (file.<span class=\"codefunc\">is_continue</span>()) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codekeyw\">\"%s\\n\"</span>, file.<span class=\"codefunc\">read_name</span>());<br/>\n\t}\n</code>\n\n<p>\n\tCheck <code>render/model.cpp</code> and <code>render/sprite.cpp</code> for\n\tmore examples of how you can use this.\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/graph.html",
    "content": "<!-- PAGE_TITLE: Graph | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tGraph\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/gui.html",
    "content": "<!-- PAGE_TITLE: GUI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tGUI\n</h1>\n\n<hr/>\n\n<p>\n\tThe GUI system provides GUI widgets.\n</p>\n\n<p>\n\tUnlike inferior GUI systems, which use objects (Win32, etc.) or classes \n\t(Java Swing, etc.), this GUI system is immediate mode. Which means that \n\tinstead of creating an object, you just call a function once per frame.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tWidget\n</h4>\n\n<p>\n\tGUI element, i.e. buttons, text boxes, checkmarks, radio buttons, etc.\n</p>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tFrames are used to position widgets. They are arranged in a stack. When you\n\tpush a frame, all of the consequent widgets will be drawn inside that frame.\n\tAfter you are done with a frame, you need to pop it from the frame stack.\n</p>\n\n<h4>\n\tImmediate mode\n</h4>\n\n<p>\n\tThis basically means that you call function instead of creating objects to\n\tmanage GUI widgets. For example, the function for creating a button is\n\t<code>GUI::Button()</code>. Calling this function will render a button on\n\tthe screen. This function returns the value <code>true</code> if it has been\n\tclicked on.\n</p>\n\n<h2>\n\tPushing frames\n</h2>\n\n<hr/>\n\n<p>\n\tFrames can be created using absolute coordinates, or pushed relative to the\n\tunderlying frame. For example, pushing frame 100 pixels from\n\t<code>FRAME_TOP</code> will create a frame with the topmost 100 pixel rows\n\tfrom underlying frame. Switching it to <code>FRAME_TOP_INV</code> will skip\n\tthe topmost 100 pixel rows and select everything below it.\n</p>\n\n<center>\n\t<img src=\"guiframe.gif\"/><br/>\n\t<i>This is how we push the frames.</i>\n</center>\n\n<p>\n\tVery simple, very easy, very nice.\n</p>\n\n<h2>\n\tFonts\n</h2>\n\n<hr/>\n\n<p>\n\tFonts are basically just sprites that have been registered\n</p>\n\n<p>\n\tFor each character that is rendered, its character code in the encoding is\n\tused as an index to select a frame from the spritesheet.\n</p>\n\n<p>\n\tThe fonts can be used to draw text. They are also used for widgets\n\tthemselves.\n</p>\n\n<p>\n\tIf you want to use some pre-made widget and text fonts, then you can use the\n\t<a href=\"../extensions/menu.html\">Menu extension</a>. It contains some fonts\n\tthat you can use.\n</p>\n\n<h2>\n\tWidgets\n</h2>\n\n<hr/>\n\n<h4>\n\tGlyph\n</h4>\n\n<p>\n\tDraws a single glyph from the font spritesheet.\n</p>\n\n<h4>\n\tText\n</h4>\n\n<p>\n\tDraws some text.\n</p>\n\n<h4>\n\tButton\n</h4>\n\n<p>\n\tDraws a clickable button. The button function returns true if it has been\n\tclicked.\n</p>\n\n<h4>\n\tRadio button\n</h4>\n\n<p>\n\tAllows selection between several exclusive choices. The choices are\n\trepresented by an index.\n</p>\n\n<h4>\n\tCheckbox\n</h4>\n\n<p>\n\tAllows a boolean yes/no type of selection.\n</p>\n\n<h4>\n\tSlider\n</h4>\n\n<p>\n\tAllows selecting a floating point value by dragging a slider.\n</p>\n\n<h4>\n\tTextbox\n</h4>\n\n<p>\n\tAllows text input.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/gui.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_g_u_i.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe GUI system needs the <a href=\"../render.html\">Render</a> and the\n\t<a href=\"ui.html\">UI</a> systems to be initialized before being initialized\n\titself.\n</p>\n\n<code>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go here</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tPushing frames is easy, but you need to remember to pop them afterwards.\n</p>\n\n<code>\n<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_LEFT, <span class=\"codelit\">150</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go in here</span><br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_LEFT_INV, <span class=\"codelit\">150</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PushFrameRelative</span>(FRAME_INSET, <span class=\"codelit\">10</span>);<br/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">// GUI widgets go in here</span><br/>\n&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">PopFrame</span>();<br/>\n<br/>\n</code>\n\n<p>\n\tHere's how to use the various widgets.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codekeyw\">enum</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ICON_FROG,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ICON_TOILET<br/>\n\t};<br/>\n\t<br/>\n\t<span class=\"codecomm\">// registering a new font</span><br/>\n\t<span class=\"codeclass\">Sprite</span>* icon_sprite = <span class=\"codeclass\">Sprite</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"font-icon\"</span>);\n\t<span class=\"codekeyw\">font_t</span> FONT_ICON = <span class=\"codefunc\">RegisterFont</span>(icon_sprite);<br/>\n<br/>\n\t<span class=\"codecomm\">// drawing a glyph from a font</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Glyph</span>(FONT_ICON, ICON_FROG);<br/>\n<br/>\n\t<span class=\"codecomm\">// drawing some text</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Text</span>(FONT_BOLD, <span class=\"codelit\">\"Hello, world!\"</span>, TEXT_LEFT);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// buttons</span><br/>\n\t<span class=\"codekeyw\">if</span> (<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Button</span>(<span class=\"codelit\">\"Click here!\"</span>)) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Button clicked!\\n\"</span>);<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">enum</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_NONE,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_A,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;CHOICE_B<br/>\n\t};<br/>\n\t<br/>\n\t<span class=\"codekeyw\">uint32_t</span> selected = CHOICE_NONE;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// radio buttons</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">RadioButton</span>(CHOICE_A, selected, <span class=\"codelit\">\"Choice A\"</span>);<br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">RadioButton</span>(CHOICE_B, selected, <span class=\"codelit\">\"Choice B\"</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">bool</span> checked = <span class=\"codelit\">false</span>;\n\t<br/><br/>\n\t<span class=\"codecomm\">// checkbox</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">CheckBox</span>(checked, <span class=\"codelit\">\"Check to select.\"</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">float</span> value = <span class=\"codelit\">0.0f</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// slider</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">Slider</span>(value);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">const size_t</span> text_length = <span class=\"codelit\">100</span>;<br/>\n\t<span class=\"codekeyw\">static char</span> text[text_length] = <span class=\"codelit\">\"hello!\"</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// textbox</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">TextBox</span>(text, text_length);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// new line</span><br/>\n\t<span class=\"codeclass\">GUI</span>::<span class=\"codefunc\">NewLine</span>(LINE_NORMAL);<br/>\n\t<br/>\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\t<i>\n\t\tNot yet implemented.\n\t</i>\n</p>\n\n"
  },
  {
    "path": "docs/src/documentation/framework/language.html",
    "content": "<!-- PAGE_TITLE: Language | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLanguage\n</h1>\n\n<hr/>\n\n<p>\n\tThe language system allows for localization of text.\n</p>\n\n\n<p>\n\tUTF-16 support is planned, but currently the only supported text encoding is\n\tLatin&nbsp;7/Windows&nbsp;1257. It supports these languages:\n</p>\n\n<ul>\n\t<li>Estonian</li>\n\t<li>Latvian</li>\n\t<li>Lithuanian</li>\n\t<li>Finnish</li>\n\t<li>English</li>\n\t<li>German</li>\n\t<li>Polish</li>\n\t<li>Slovene</li>\n\t<li>Norwegian</li>\n\t<li><font size=\"1\">Swedish</font></li>\n\t<li><font size=\"1\">Danish</font></li>\n</ul>\n\n<h2>\n\tFile format\n</h2>\n\n<hr/>\n\n<p>\n\tCurently the format has no header. It consists of lines, they start with the\n\tname of the string, a space and then the rest of the line is the string.\n</p>\n\n<p>\n\tExample.\n</p>\n\t\n<code>\n\tmongus-ask Hello! Where is Mongus?<br/>\n\tmongus-answer Very busy. Come back later!\n</code>\n\n<p>\n\tThe language files are stored in the <code>/data/</code> directory, the file\n\textension is <code>.lang</code>.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/language.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_language.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// loading a language file</span><br/>\n\t<span class=\"codeclass\">Language</span>::<span class=\"codefunc\">Load</span>(<span class=\"codelit\">\"english\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// accessing a string</span><br/>\n\t<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"%s\\n\"</span>, <span class=\"codeclass\">Language</span>::<span class=\"codefunc\">Get</span>(<span class=\"codelit\">\"hello\"</span>));\n</code>"
  },
  {
    "path": "docs/src/documentation/framework/loader.html",
    "content": "<!-- PAGE_TITLE: Loader | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLoader\n</h1>\n\n<hr/>\n\n<p>\n\tThe loader is supposed to help with automatically loading and unloading\n\t<a href=\"worldcell.html\">WorldCells</a>. Take a look at the\n\t<a href=\"../entities/player.html\">Player</a> entity to see how to use them.\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/logging.html",
    "content": "<!-- PAGE_TITLE: Logging | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLogging\n</h1>\n\n<hr/>\n\n<p>\n\tThe logging system provides logging.\n</p>\n\n<p>\n\tCurrently all logs are just dumped to standard output. In the future I'll \n\tadd in some more logging stuff, like saving logs to a file.\n</p>\n\n<p>\n\tIt's possible to assign the system from which the logging statement\n\toriginates, as well as the logging statements severity. Logs then can be\n\tfiltered based on the system and severity.\n</p>\n\n<h2>\n\tSeverities\n</h2>\n\n<hr/>\n\n<h4>\n\tInfo | SEVERITY_INFO\n</h4>\n\n<p>\n\tFor very verbose debugging purposes. Useful to dump anything and everything.\n\tFiltered out by default.\n</p>\n\n<h4>\n\tWarning | SEVERITY_WARNING\n</h4>\n\n<p>\n\tFor things that should be looked at, such as the use of deprecated\n\tfunctionality, missing files and such.\n</p>\n\n<h4>\n\tError | SEVERITY_ERROR\n</h4>\n\n<p>\n\tFor things that are ungood, but can be recovered from, such as errors with\n\tfile formatting, incorrect usage of functionality and such.\n</p>\n\n<h4>\n\tDoubleplus Ungood Error | SEVERITY_CRITICAL_ERROR\n</h4>\n\n<p>\n\tFor errors that can't be recovered from. Useful to log some final data\n\tbefore aborting the application.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/logging.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/logging_8h.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// filter out everything coming from the Platform</span><br/>\n\t<span class=\"codecomm\">// system that has a severity which is lower than</span><br/>\n\t<span class=\"codecomm\">// error, i.e. infos and warnings.</span><br/>\n\t<span class=\"codefunc\">SetSystemLoggingSeverity</span>(<span class=\"codeclass\">System</span>::SYSTEM_PLATFORM,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SEVERITY_ERROR);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">float</span> number = <span class=\"codelit\">420.0f</span>;<br/>\n\t<span class=\"codekeyw\">const char</span>* string = <span class=\"codelit\">\"mongus\"</span>;<br/>\n\t<br/>\n\t<span class=\"codecomm\">// will log: mongus has 420 bananas</span><br/>\n\t<span class=\"codefunc\">Log</span>(<span class=\"codelit\">\"{} has {} bananas.\"</span>, number, string);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// will log: hi!</span><br/>\n\t<span class=\"codecomm\">// but due to our filtering settings this will</span><br/>\n\t/<span class=\"codecomm\">/ be filtered out</span><br/>\n\t<span class=\"codefunc\">Log</span>(<span class=\"codeclass\">System</span>::SYSTEM_PLATFORM, SEVERITY_INFO, <span class=\"codelit\">\"hi!\"</span>);<br/>\n</code>"
  },
  {
    "path": "docs/src/documentation/framework/math.html",
    "content": "<!-- PAGE_TITLE: Math | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMath\n</h1>\n\n<hr/>\n\n<p>\n\tThis part of the framework contains math stuff. Since we use the glm library,\n\twe don't really need to create any of our own math types, but I alisased\n\tthe vector and matrix types into the <code>tram</code> namespace in order to\n\tincrease the readability of the source code.\n</p>\n\n<p>\n\tThere's also a couple of constants, which have to do with the coordinate\n\tsystem that we're using, i.e. <code>DIRECTION_FORWARD</code>,\n\t<code>DIRECTION_SIDE</code> and <code>DIRECTION_UP</code>.\n</p>\n\n<p>\n\tOther than that, this part of the framework contains a couple of random math\n\tfunctions which the glm library doesn't have. At least in C++ part of the\n\tframework.\n</p>\n\n<p>\n\tSince glm is a C++ only library, I re-implemented some of the vector types\n\tin Lua, so that they can be used for scripting.\n</p>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tCreating a vector and operations on a vector\n</p>\n\n<code>\n\tvector = tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">420.0</span>, <span class=\"codelit\">-42.0</span>, <span class=\"codelit\">4.20</span>)<br/>\n\t<br/>\n\tvector = vector + tram.math.<span class=\"codefunc\">vec3</span>(<span class=\"codelit\">69.0</span>, <span class=\"codelit\">-69.0</span>, <span class=\"codelit\">6.9</span>)<br/>\n\tvector = vector + <span class=\"codelit\">69.0</span><br/>\n\t<br/>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"My vector:\"</span>, vector)\n</code>\n\n<p>\n\tCreating a quaternion from euler angles and operations on it\n</p>\n\n<code>\n\trotation = tram.math.<span class=\"codefunc\">quat</span>(vector)<br/>\n\t<br/>\n\trotation = rotation * rotation\n</code>\n\n<p>\n\tRotating a vector by a quaternion\n</p>\n\n<code>\n\tvector = rotation * vector\n</code>\n"
  },
  {
    "path": "docs/src/documentation/framework/message.html",
    "content": "<!-- PAGE_TITLE: Messages | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMessages\n</h1>\n\n<hr/>\n\n<p>\n\tMessages are the main way <a href=\"entity.html\">entities</a> communicate\n\tamongst themselves.\n</p>\n\n<p>\n\tThey allow for greater decoupling. Entities don't have to know about each\n\tother's capabilites or any other characteristics, they only need to know\n\tabout the types of messages.\n</p>\n\n<p>\n\tTo allow effective communication between enities, we only need to define\n\twhat a certain message type means. For this purpose the framework includes\n\tmany different and useful message types with predefined meanings.\n</p>\n\n<center>\n\t<img src=\"message.gif\"/><br/>\n\t<i>Potato cat is sending potato frog a Message.</i>\n</center>\n\n<h2>\n\tMessage types\n</h2>\n\n<hr/>\n\n<h4 id=\"none\">\n\tNone | <code>NONE</code>\n</h4>\n\n<p>\n\tDummy message type, doesn't mean anything.\n</p>\n\n<h4 id=\"ping\">\n\tPing | <code>PING</code>\n</h4>\n\n<p>\n\tGeneric message type. Can be used to probe entities. When pinged, certain\n\tentities will emit an event, or print text to console.\n</p>\n\n<h4 id=\"movepickup\">\n\tMove pick up | <code>MOVE_PICK_UP</code>\n</h4>\n\n<p>\n\tWas used to create crate stacking mechanics for immersive sims. Not used\n\tanymore, since I added better techniques for the coordination of crate\n\tstacking.\n</p>\n\n<h4 id=\"open\">\n\tOpen | <code>OPEN</code>\n</h4>\n\n<p>\n\tUsed to tell doors and similar entities to open. More generally, could be\n\tused for entities with two distinct states to assume the non-default state.\n</p>\n\n<h4 id=\"close\">\n\tClose | <code>CLOSE</code>\n</h4>\n\n<p>\n\tUsed to tell doors and similar entities to close. More generally, could be\n\tused for entities with two distinct states to assume the default state.\n</p>\n\n<h4 id=\"lock\">\n\tLock | <code>LOCK</code>\n</h4>\n\n<p>\n\tUsed to tell doors and other entities with some kind of opening and closing\n\tmechanism to stop opening. More generically could be used to tell enitities\n\tto ignore certain inputs, such as the activation messages.\n</p>\n\n<h4 id=\"unlock\">\n\tUnlock | <code>UNLOCK</code>\n</h4>\n\n<p>\n\tSimilar to locking message, but in reverse.\n</p>\n\n<h4 id=\"toggle\">\n\tToggle | <code>TOGGLE</code>\n</h4>\n\n<p>\n\tSimilar to open and close messages. Used to tell entities to toggle their\n\tstate, that is, if closed, to open, or if open, to close.\n</p>\n\n<h4 id=\"kill\">\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tUsed to tell entities to yeet themselves.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger | <code>TRIGGER</code>\n</h4>\n\n<p>\n\tUsed to pass an arbitrary message to an entity. The message data field will\n\tthen contain a pointer to a <a href=\"value.html\">Value</a>, usually with \n\tthe type of <a href=\"uid.html\">name</a>.\n</p>\n\n<p>\n\tFor example, <a href=\"../extensions/kitchensink.html\">Quests</a> from the\n\tkitchensink extension will create a quest entity, so that they can receive\n\tmessages from <a href=\"signal.html\">Signals</a>. Since quests have triggers,\n\tthis message is used to trigger them.\n</p>\n\n<h4>\n\tStart | <code>START</code>\n</h4>\n\n<p>\n\tSimilar to open message, but used for entities that have some kind of\n\tcontinuos action. For example, the\n\t<a href=\"../entities/sound.html\">Sound</a> entity uses this message to\n\tbegin playback of its associated sound.\n</p>\n\n<h4>\n\tStop | <code>STOP</code>\n</h4>\n\n<p>\n\tThis type is the counterpart to the start message. It tells entities to\n\tstop their action. For example, the\n\t<a href=\"../entities/decoration.html\">Decoration</a> entity uses this \n\tmessage to stop playing its animation, if it has one.\n</p>\n\n<h4>\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tSent every <a href=\"core.html\">tick</a> from an agentic entity. Generally \n\tmeant to be used when a player presses the keyboard key associated with the \n\t<a href=\"ui.html\">Use</a> keyboard action while facing an entity.\n</p>\n\n<h4>\n\tActivate Once | <code>ACTIVATE_ONCE</code>\n</h4>\n\n<p>\n\tSimilar to Activate message, but meant to be sent only for the first tick of\n\tthe activation.\n</p>\n\n<h4>\n\tSelect | <code>SELECT</code>\n</h4>\n\n<p>\n\tUsed to tell an entity that it is being selected. This could be when a\n\tplayer is facing in the direction of the entity, or when the player has\n\tplaced the mouse cursor over said entity.\n</p>\n\n<p>\n\tIn response, most entities will emit a <a href=\"event.html\">Selected</a>\n\tevent.\n</p>\n\n<h4>\n\tSet Progress | <code>SET_PROGRESS</code>\n</h4>\n\n<p>\n\tUsed to set the progress of the action that the entity is performing. The\n\tdata pointer of the message should be set to a Value. Usually it will be a\n\t<a href=\"type.html\">Float32</a> value in the range from 0.0f to 1.0f. \n</p>\n\n<p>\n\tFor example, the \n\t<a href=\"../extensions/kitchensink/button.html\">Button</a> entity will use\n\tit to set its opening/closing state. A value of 0.0 will close it\n\tcompletely, a value of 1.0 will open it completely and a value of 0.5 will\n\tset it to being half-open.\n</p>\n\n<h4>\n\tSet Animation | <code>SET_ANIMATION</code>\n</h4>\n\n<p>\n\tUsed to set the animation of an entity. The data pointer will then be set\n\tto a Value with the type of name. The name will be the name of the \n\tanimation to which this entity should switch.\n</p>\n\n<h4>\n\tLast Mesasge | <code>LAST_MESSAGE</code>\n</h4>\n\n<p>\n\tNot actually a message type.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/message.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_message.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe API for message sending is nearly identical to that of the \n\t<a href=\"event.html\">Event</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Message</span> msg;<br/>\n\t<br/>\n\tmsg.type = <span class=\"codeclass\">Message</span>::PING;<br/>\n\tmsg.sender = <span class=\"codekeyw\">this</span>-><span class=\"codefunc\">GetID</span>();<br/>\n\tmsg.receiver = <span class=\"codeclass\">Entity</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>)-><span class=\"codefunc\">GetID</span>();<br/>\n\tmsg.data = <span class=\"codeclass\">Message</span>::<span class=\"codefunc\">AllocateData</span>&lt;<span class=\"codeclass\">Value</span>&gt;(<span class=\"codelit\">420</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this will ping mongus</span><br/>\n\t<span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Send</span>(msg);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// we can also delay the message, pinging</span><br/>\n\t<span class=\"codecomm\">// mongus 69 seconds in the future</span><br/>\n\tmsg.data = <span class=\"codekeyw\">nullptr</span>;<br/>\n\t<span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Send</span>(msg, <span class=\"codelit\">69.0f</span>);\n</code>\n\n<p>\n\tThe <code>Message::AllocateData()</code> static method will allocate memory\n\tfor the message's data. This memory will get automatically released after\n\tall of the messages get dispatched.\n</p>\n\n<p>\n\tUnfortunately, due to certain limitations, this allocation works only for\n\tmessages that get sent without a delay. This will be remedied in the future.\n</p>\n\n<p>\n\tJust like with events, we can register our own message types.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">message_t</span> type = <span class=\"codeclass\">Message</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog-message\"</span>);<br/>\n\t<br/>\n</code>\n\n<h2>\n\tScripting in Lua\n</h2>\n\n<hr/>\n\n<p>\n\tEssentially the same as in C++.\n</p>\n\n<code>\n\tmsg = {}<br/>\n\t<br/>\n\tmsg.type = tram.message.PING<br/>\n\tmsg.sender = <span class=\"codelit\">0</span><br/>\n\tmsg.receiver = tram.entity.<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>):<span class=\"codefunc\">GetID</span>()<br/>\n\tmsg.data = <span class=\"codelit\">420</span><br/>\n\t<br/>\n\ttram.message.<span class=\"codefunc\">Send</span>(msg, <span class=\"codelit\">69.0</span>)\n</code>\n"
  },
  {
    "path": "docs/src/documentation/framework/navmesh.html",
    "content": "<!-- PAGE_TITLE: Navmesh | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tNavmesh\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/path.html",
    "content": "<!-- PAGE_TITLE: Path | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPath\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/resource.html",
    "content": "<!-- PAGE_TITLE: Resources | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tResources\n</h1>\n\n<hr/>\n\n<p>\n\tA resource is any kind of thing that you want to you want to be streamed in\n\tfrom the disk or any other location.\n</p>\n\n<p>\n\tResources can be loaded directly, or they can be passed to the\n\t<a href=\"async.html\">Async</a> system to be streamed in.\n</p>\n\n<p>\n\tSome resource types included in the framework are\n\t<a href=\"../render/model.html\">Models</a>,\n\t<a href=\"../render/model.html\">Materials</a> and\n\t<a href=\"../audio.html\">Sounds</a>. \n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tEach resource has a unique name. This is how resources are identified.\n\tUsually the name references the name of a file on disk, but does not always\n\thave to be so.\n</p>\t\n\n<p>\n\tThe uniqueness only applies to resources of the same type. Different types of resources can have a resource with the same name.\n</p>\n\n<h4>\n\tReferences\n</h4>\n\n<p>\n\tThis is how the framework keeps track of which resources are being used and\n\twhich resources can be freed. Used resources are not freed.\n</p>\n\n<p>\n\tWhenever an <a href=\"entitycomponent.html\">EntityComponent</a> or any other\n\tuser starts\tusing a resource, they should add a reference to the resource,\n\tin order to\tmark it as being used. After the usage of the resource ceases,\n\tthe reference should be removed.\n</p>\n\n<p>\n\tIf you want a resource to be always availabe, you can add a reference to it.\n\tThis way it will never be freed and you won't have to wait for it to be\n\tstreamed in.\n</p>\n\n<h4>\n\tStatus\n</h4>\n\n<p>\n\tThe status of the resource keeps track of whether the resource needs to be\n\tloaded or whether it is ready for usage.\n</p>\n\n<h2>\n\tStatuses\n</h2>\n\n<hr/>\n\n<h4>\n\tUnloaded | <code>UNLOADED</code>\n</h4>\n\n<p>\n\tThe resource has not been loaded from disk.\n</p>\n\n<h4>\n\tLoaded | <code>LOADED</code>\n</h4>\n\n<p>\n\tThe resource has been loaded form disk, but needs further processing. For\n\texample, graphics resources use this status for when they have been parsed\n\tfrom the disk, but haven't been uploaded to the GPU memory, since this step\n\thas to happen on the main thread, not the resource streaming thread.\n</p>\n\n<h4>\n\tReady | <code>READY</code>\n</h4>\n\n<p>\n\tThe resource has been fully loaded and is ready for use.\n</p>\n\n<h4>\n\tLoad fail\n</h4>\n\n<p>\n\tWhile not implemented as a status (it was at one point, but the API was not\n\tthat neat to use), the load fail is flag that keeps track of whether the \n\tresource was successfully loaded.\n</p>\n\n<p>\n\tFor example, the resource could be considered as having failed to load if\n\tthe file associated with the resource was missing, or if it the format of\n\tthe file was determined to be invalid.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/resource.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_resource.html\">API documentation\n\tpage</a>.\n</p>\n\n<p id=\"proxy\">\n\tIf you want to use a resource, you can use the ResourceProxy class. It is a\n\ttype of smart pointer, which will not only automatically keep track of\n\treferences, but also automatically pass the resource to the Aync system\n\tfor streaming, if the resource is not loaded already.\n</p>\n\n<code>\n\t<span class=\"codeclass\">ResourceProxy</span>&lt;<span class=\"codeclass\">Material</span>&gt; material;<br/>\n\t<br/>\n\tmaterial.<span class=\"codefunc\">set</span>(<span class=\"codeclass\">Material</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"mongus\"</span>));<br/>\n\t<br/>\n\t<span class=\"codecomm\">// if the mongus material hasn't been loaded yet,</span><br/>\n\t<span class=\"codecomm\">// it will now have been added to the Async</span><br/>\n\t<span class=\"codecomm\">// resource streaming queue</span><br/>\n\t<br/>\n\t<span class=\"codekeyw\">if</span> (material-><span class=\"codefunc\">GetStatus</span>() == <span class=\"codeclass\">Resource</span>::READY) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"width: %f height: %f\\n\"</span>,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;material-><span class=\"codefunc\">GetWidth</span>(), \n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;material-><span class=\"codefunc\">GetHeight</span>());<br/>\n\t}\n</code>\n\n<p>\n\tTo create a resource, you will need to create a subclass of the Resource\n\tclass.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">class</span> <span class=\"codeclass\">NewResource</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Resource</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">NewResource</span>(<span class=\"codekeyw\">name_t</span> name) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Resource</span>::<span class=\"codefunc\">Resource</span>(name);<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">LoadFromDisk</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">LoadFromMemory</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<br/>\n\t<span class=\"codekeyw\">private</span>:<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">int</span>* data;<br/>\n\t};<br/>\n\n</code>\n\n<p>\n\tAfter that, you will need to implement the resource loading methods, as well\n\tas a resource cleanup method.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">LoadFromDisk</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->data = data_from_disk;<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">if</span> (<span class=\"codekeyw\">this</span>->data == bad_data) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->load_fail = true;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->data = dummy_data;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">if</span> (requires_further_processing) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = LOADED;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;} <span class=\"codekeyw\">else</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = READY;<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;}<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">LoadFromMemory</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;main_thread_processing(<span class=\"codekeyw\">this</span>->data);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">this</span>->status = READY;<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codekeyw\">void</span> <span class=\"codeclass\">NewResource</span>::<span class=\"codefunc\">Unload</span>() {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;yeet_data(<span class=\"codekeyw\">this</span>->data);<br/>\n\t}<br/>\n\n</code>\n\n<p>\n\tIf the resource can't be located from the disk, you should generate some\n\tdummy data and check the load_fail flag. For example, if the Material\n\tresource can't load the texture image associated with that material, it will\n\tgenerate a checkerboard pattern texture image.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/framework/script.html",
    "content": "<!-- PAGE_TITLE: Scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tScripting\n</h1>\n\n<hr/>\n\n<p>\n\tThe script system implements the scripting API. It allows you to call \n\tscripts from C++ without being concerned with which scripting language\n\tthe script is actually implemented in.\n</p>\n\n<p>\n\tCurrently the only scripting language bindings that have been implemented\n\tare for the <a href=\"../extensions/scripting.html\">Lua language</a>.\n</p>\n\n<p>\n\tAll scripts are located in the <code>/scripts/</code> directory.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/script.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_script.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tFirst a script needs to be loaded. When a script is loaded from disk, it\n\twill be automatically executed.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">LoadScript</span>(<span class=\"codelit\">\"frog\"</span>);\n</code>\n\n<p>\n\tYou can set global variables in the scripting context and retrieve\n\tglobal variables from it.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">SetGlobal</span>(<span class=\"codelit\">\"frog_status\"</span>, <span class=\"codelit\">420</span>);<br/>\n\t<br/>\n\t<span class=\"codekeyw\">value_t</span> frogs = <span class=\"codeclass\">Script</span>::<span class=\"codefunc\">GetGlobal</span>(<span class=\"codelit\">\"frog_count\"</span>);\n</code>\n\n<p>\n\tYou can also register in C++ function which can be called from the scripting\n\tlanguage. For example, this function, named <code>frog</code>, will accept\n\ta single integer parameter, which it will print to console. It will then\n\treturn the value <code>true</code> if the integer inputted was \n\t<code>420</code>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Script</span>::<span class=\"codefunc\">SetFunction</span>(<span class=\"codelit\">\"frog\"</span>, {TYPE_INT},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[](<span class=\"codekeyw\">valuearray_t</span> array) -> <span class=\"codekeyw\">value_t</span> {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">int32_t</span> frog = array[<span class=\"codelit\">0</span>];<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"frog: %i\"</span>, frog);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> frog == <span class=\"codelit\">420</span>;<br/>\n\t});\n</code>\n\n<p>\n\tYou can also call script functions from C++.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">bool</span> result = <span class=\"codeclass\">Script</span>::<span class=\"codefunc\">CallFunction</span>(<span class=\"codelit\">\"frog\"</span>, {<span class=\"codelit\">420</span>});\n</code>\n\n"
  },
  {
    "path": "docs/src/documentation/framework/serialization.html",
    "content": "<!-- PAGE_TITLE: Serialization | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSerialization\n</h1>\n\n<p>\n\t<i>\n\t\tNot fully implemented yet.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/settings.html",
    "content": "<!-- PAGE_TITLE: Settings | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSettings\n</h1>\n\n<hr/>\n\n<p>\n\tThe settings system can be used to save your application's settings, as well\n\tas automatically parse command line options.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/settings.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_settings.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tSettings can be registered in two different ways. In the first, the \n\tsettings system will store the setting for you. In the second, you provide\n\ta pointer to the setting and manage the storage yourself.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// allowing settings to manage the setting</span><br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">420</span>, <span class=\"codelit\">\"frog-count\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// managing our own setting</span><br/>\n\t<span class=\"codekeyw\">uint32_t</span> frog_count = <span class=\"codelit\">420</span>;<br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Register</span>(&amp;frog_count, <span class=\"codelit\">\"frog-count\"</span>);<br/>\n</code>\n\n<p>\n\tParsing settings from commandline is very simple.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">int</span> <span class=\"codefunc\">main</span>(<span class=\"codekeyw\">const char</span>** argv, <span class=\"codekeyw\">int</span> argc) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Parse</span>(argv, argc);<br/>\n\t\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> <span class=\"codelit\">0</span>;<br/>\n\t}\n</code>\n\n<p>\n\tSettings can also be saved to disk and loaded back up.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Save</span>(<span class=\"codelit\">\"frog-settings\"</span>);<br/>\n\t<span class=\"codeclass\">Settings</span>::<span class=\"codefunc\">Load</span>(<span class=\"codelit\">\"frog-settings\"</span>);<br/>\n</code>\n\n\n"
  },
  {
    "path": "docs/src/documentation/framework/signal.html",
    "content": "<!-- PAGE_TITLE: Signals | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSignals\n</h1>\n\n<hr/>\n\n<p>\n\tSignals are <a href=\"message.html\">Message</a> presets that can be attached\n\tto entities.\n</p>\t\n\n<p>\n\tThese can be configured in the <a href=\"../leveleditor.html\">level\n\teditor</a>, or they\tcan be attached through scripting.\t\n</p>\n\n<p>\n\tWhen the appropriate moment comes, the entity will fire off the signal,\n\twhich in turn will send off the preset message.\n</p>\n\n<p>\n\tSignals are named so as to be confusing to Godot users. Similar frameworks\n\tcall these the entity input/output system.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tSignal type\n</h4>\n\n<p>\n\tEach signal has a type. This type determines what kind of action cause the\n\tsignal to fire.\n</p>\n\n<p>\n\tAny entity can fire off any signal type for any action, but to keep it\n\tconsistent we have described some signal types.\n</p>\n\n<h4>\n\tSignal firing\n</h4>\n\n<p>\n\tWhen the appropriate moment comes, the entity fires off the signal. This\n\tcauses the signal table to look up all message presets associated with the\n\tfired signal type. The signal table will then send off all of the relevant\n\tmessage presets.\n</p>\n\n<p>\n\tWhile signal message presets can have a value attached to them to be sent as\n\tthe attached data, during firing the entity can choose to replace the data\n\twith something other than what the preset contains.\n</p>\n\n<h4>\n\tSignal table\n</h4>\n\n<p>\n\tContains all of the signals that are defined for a certain entity. Can be\n\tedited in the level editor. On disk each entity's signals are stored in the\n\t<a href=\"worldcell.html\">Worldcell</a> file.\n</p>\n\n<h2>\n\tSignal types\n</h2>\n\n<hr/>\n\n<h4 id=\"none\">\n\tNone | <code>NONE</code>\n</h4>\n\n<p>\n\tThis is not a signal.\n</p>\n\n<h4 id=\"spawn\">\n\tSpawn | <code>SPAWN</code>\n</h4>\n\n<p>\n\tFired when an entity is loaded.\n</p>\n\n<h4 id=\"kill\">\n\tKill | <code>KILL</code>\n</h4>\n\n<p>\n\tFired when an entity is killed.\n</p>\n\n<h4 id=\"activate\">\n\tActivate | <code>ACTIVATE</code>\n</h4>\n\n<p>\n\tFired off when an entity is activated. What is considered an activation \n\tdepends on the entity type.\n</p>\n\n<h4 id=\"use\">\n\tUse | <code>USE</code>\n</h4>\n\n<p>\n\tFired when the entity is activated, that is, receives a <i>Activate Once</i>\n\tmessage.\n</p>\n\n<h4 id=\"lockeduse\">\n\tLocked Use | <code>LOCKED_USE</code>\n</h4>\n\n<p>\n\tSame as Use, but fired when entity activation fails due to the entity being\n\tlocked.\n</p>\n\n<h4 id=\"open\">\n\tOpen | <code>OPEN</code>\n</h4>\n\n<p>\n\tFired when the entity begins opening.\n</p>\n\n<h4 id=\"close\">\n\tClose | <code>CLOSE</code>\n</h4>\n\n<p>\n\tFired when the entity begins closing.\n</p>\n\n<h4 id=\"endopen\">\n\tEnd Open | <code>END_OPEN</code>\n</h4>\n\n<p>\n\tFired when the entity finishes opening.\n</p>\n\n<h4 id=\"endclose\">\n\tEnd Close | <code>END_CLOSE</code>\n</h4>\n\n<p>\n\tFired when the entity finishes closing.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger | <code>TRIGGER</code>\n</h4>\n\n<p>\n\tFired when the entity is triggered.\n</p>\n\n<h4 id=\"entertrigger\">\n\tEnter Trigger | <code>ENTER_TRIGGER</code>\n</h4>\n\n<p>\n\tFired when an entity enters a trigger. Its ID is attached as data in the\n\tmessage.\n</p>\n\n<h4 id=\"exittrigger\">\n\tExit Trigger | <code>EXIT_TRIGGER</code>\n</h4>\n\n<p>\n\tFired when an entity exits a trigger. Its ID is attached as data in the\n\tmessage.\n</p>\n\n<h4 id=\"progress\">\n\tProgress | <code>PROGRESS</code>\n</h4>\n\n<p>\n\tFired every tick that an entity is progressing. It replaces the message data\n\twith a floating point progress value.\n</p>\n\n<p>\n\tIf the message type attached to this signal is set to Set Progress, then it\n\tis possible to synchronize two entities that support progress.\n</p>\n\n<h4 id=\"lastsignal\">\n\tLast Signal | <code>LAST_SIGNAL</code>\n</h4>\n\n<p>\n\tNot actually a signal.\n</p>\n\n\n"
  },
  {
    "path": "docs/src/documentation/framework/stats.html",
    "content": "<!-- PAGE_TITLE: Statistics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tStatistics\n</h1>\n\n<hr/>\n\n<p>\n\tThe statistics system collects data. There are two different types of data.\n</p>\n\n<p>\n\tThe first type is time. Each <a href=\"system.html\">System</a> gets its own\n\ttime counter. Systems can add time spent in themselves to the counter.\n</p>\n\n<p>\n\tThe second type is the counter counter. It provides arbitrary counting\n\tservices. For example, the Render system uses this service to count up an\n\tapproximation of how much GPU memory it is using.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_system.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tFor the timings, somewhere in your main loop you need to add a call to the\n\tcollate function.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Collate</span>();<br/>\n\t}<br/>\n</code>\n\n<p>\n\tAfter that, you can start counting stuff.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">system_t</span> frog_system = <span class=\"codeclass\">System</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog\"</span>);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Start</span>(frog_system);<br/>\n\t<br/>\n\t<span class=\"codefunc\">pet_frogs</span>();<br/>\n\t<span class=\"codefunc\">feed_frogs</span>();<br/>\n\t<span class=\"codefunc\">bathe_frogs</span>();<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Stop</span>(frog_system);<br/>\n\t<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Add</span>(RESOURCE_FROG, inital_frogs);<br/>\n\t<span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">Remove</span>(RESOURCE_FROG, escaped_frogs);\n</code>\n\t\n<p>\n\tFinally, you can retrieve your counts.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">size_t</span> frogs = <span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">GetStat</span>(RESOURCE_FROG);<br/>\n\t<span class=\"codekeyw\">float</span> frog_time = <span class=\"codeclass\">Stats</span>::<span class=\"codefunc\">GetStat</span>(frog_system);\n</code>\n\t"
  },
  {
    "path": "docs/src/documentation/framework/system.html",
    "content": "<!-- PAGE_TITLE: Systems | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSystems\n</h1>\n\n<hr/>\n\n<p>\n\tThe system concept was created to help identify parts of code.\n</p>\n\n<p>\n\tThis allows, for example, to check if a system has been initialized. This is\n\tuseful for systems which have a dependency on another system &ndash; they\n\tcan check if the system that they have a dependecy on has been initialized\n\tbefore initializing themselves.\n</p>\n\n<p>\n\tThis concept also allows tracking <a href=\"stats.html\">statistics</a> and\n\tfiltering <a href=\"logging.html\">logging</a> based on the system from which\n\tthe logs originate.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_system.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tSome systems are already registered into the framework, but you can register\n\tyour own systems too.\n</p>\n\n<code>\n\t<span class=\"codekeyw\">system_t</span> frog_system = <span class=\"codeclass\">System</span>::<span class=\"codefunc\">Register</span>(<span class=\"codelit\">\"frog\"</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// now we can initialize it</span><br/>\n\t<span class=\"codeclass\">System</span>::<span class=\"codefunc\">SetInitialize</span>(frog_system, <span class=\"codekeyw\">true</span>);<br/>\n\t<span class=\"codekeyw\">assert</span>(<span class=\"codeclass\">System</span>::<span class=\"codefunc\">IsInitialized</span>(frog_system));\n</code>\n\n\n"
  },
  {
    "path": "docs/src/documentation/framework/transition.html",
    "content": "<!-- PAGE_TITLE: Transitions | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tTransitions\n</h1>\n\n<p>\n\tTransitions are connections between <a href=\"worldcell.html\">WorldCells</a>.\n\tThey consist of a volume, which is defined as a convex hull wrapped around a\n\tset of points.\n</p>\n\n<p>\n\tCheck the <a href=\"worldcell.html\">WorldCell</a> page for more details.\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/type.html",
    "content": "<!-- PAGE_TITLE: Type | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tType\n</h1>\n\n<hr/>\n\n<p>\n\tThere are a couple of types, which the framework supports for \n\t<a href=\"value.html\">values</a>, <a href=\"signal.html\">signals</a> and\n\t<a href=\"script.html\">scripting API</a>.\n</p>\n\n<h2>\n\tMain types\n</h2>\n\n<hr/>\n\n<p>\n\tAll of these types are supported by signals, scripting API and level editor.\n</p>\n\n<h4>\n\tInt\n</h4>\n\n<p>\n\tSame as Int32.\n</p>\n\n<h4>\n\tFloat\n</h4>\n\n<p>\n\tSame as Float32.\n</p>\n\n<h4>\n\tName\n</h4>\n\n<p>\n\tAlias for <a href=\"uid.html\">UID</a>.\n</p>\n\n<h2>\n\tAll types\n</h2>\n\n<hr/>\n\n<h4>\n\tUndefined\n</h4>\n\n<p>\n\tNot actually type. Used when a type is unknown.\n</p>\n\n<h4>\n\tBool\n</h4>\n\n<p>\n\tSame as Int8.\n</p>\n\n<h4>\n\tString\n</h4>\n\n<p>\n\tRegular C flavored, null-terminated character array string.\n</p>\n\n<h4>\n\tInt8, Int16, Int32, Int64 \n</h4>\n\n<p>\n\tSigned integers, which are 8-bit, 16-bit, 32-bit and 64-bit wide\n\trespectively.\n</p>\n\n<h4>\n\tUInt\n</h4>\n\n<p>\n\tSame as UInt32.\n</p>\n\n<h4>\n\tUInt8, UInt16, UInt32, UInt64 \n</h4>\n\n<p>\n\tUnsigned integers, which are 8-bit, 16-bit, 32-bit and 64-bit wide\n\trespectively.\n</p>\n\n<h4>\n\tFloat32, Float64\n</h4>\n\n<p>\n\tFloating point numbers, which are 32-bit and 64-bit wide respectively.\n</p>\n\n<h4>\n\tVec2, Vec3, Vec4\n</h4>\n\n<p>\n\tArrays consisting of 2, 3 and 4 elements of Float32 numbers respectively.\n</p>\n\n<h4>\n\tQuat\n</h4>\n\n<p>\n\tSame as Vec4, but with rotational semantics.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/framework/ui.html",
    "content": "<!-- PAGE_TITLE: UI | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tUI\n</h1>\n\n<hr/>\n\n<p>\n\tThe UI system deals with the creation of windows and taking in of the input.\n</p>\n\n<p>\n\tOnce initialized, the system will create an operating system window and will\n\tstart gathering and emitting keyboard and mouse events.\tIt also creates the\n\trendering context.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tWindow\n</h4>\n\n<p>\n\tIt's where the graphics are rendered to. Also can be clicked on.\n</p>\n\n<h4>\n\tKeyboard key\n</h4>\n\n<p>\n\tRepresents either a key on a computer keyboard, or a button on a mouse. Yes.\n</p>\n\n<p>\n\tCan either be pressed on released.\n</p>\n\n<h4>\n\tKeyboard axis\n</h4>\n\n<p>\n\tRepresents cursor position or scroll wheel scrolling.\n</p>\n\n<p>\n\tUnlike a keyboard key, an axis has a scalar state.\n</p>\n\n<h4>\n\tKeyboard action\n</h4>\n\n<p>\n\tUnlike a keyboard key, which represents a physical key or something similar,\n\tkeyboard actions are completely abstract.\n</p>\n\n<p>\n\tKeyboard keys can be bound to keyboard actions. This means that pressing and\n\treleasing the keyboard key will also trigger the keyboard action.\n</p>\n\n<h4>\n\tState\n</h4>\n\n<p>\n\tThe UI state determines what the system will do with keyboard and mouse\n\tinputs.\n</p>\n\n<h2>\n\tStates\n</h2>\n\n<hr/>\n\n<h4>\n\tDefault | <code>STATE_DEFAULT</code>\n</h4>\n\n<p>\n\tCursor is hidden. Inputs generate events normally.\n</p>\n\n<h4>\n\tNo Input | <code>STATE_NO_INPUT</code>\n</h4>\n\n<p>\n\tCursor is hidden, but inputs generate no events.\n</p>\n\n<h4>\n\tFlying | <code>STATE_FLYING</code>\n</h4>\n\n<p>\n\tCursor is hidden, no inputs are generated. Instead, WASD keys can be used to\n\tmove the <a href=\"../render.html\">Render view</a> directly. Useful for\n\tdebugging.\n</p>\n\n<h4>\n\tMenu Open | <code>STATE_MENU_OPEN</code>\n</h4>\n\n<p>\n\tCursor is displayed, but no events are generated.\n</p>\n\n<h4>\n\tCursor | <code>STATE_CURSOR</code>\n</h4>\n\n<p>\n\tCursor is displayed. Inputs generate events normally.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/system.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/namespacetram_1_1_u_i.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThe basic initializtion and stuff goes something like this.\n</p>\n\n<code>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Uninit</span>();<br/><br/>\n</code>\n\n<p>\n\tAs for the rest of it, there is too much stuff to cover all here. Check the\n\tAPI documentation.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/framework/uid.html",
    "content": "<!-- PAGE_TITLE: UID | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tUID\n</h1>\n\n<hr/>\n\n<p>\n\tUID is also aliased as name_t and called a name. It is my greatest\n\ttechnological accomplishment.\n</p>\n\n<p>\n\tWhen a name is created, the string representation of it is saved into a very\n\tnice string table. The name itself only the index of the string in the \n\tstring table.\n</p>\n\n<p>\n\tThe system also ensures that each string gets store only once. This means\n\tthat name instances with identical string representations also have the same\n\tinded. This makes the comparisons between names very fast and efficient.\n</p>\n\n<p>\n\tAlso I have no idea what UID actually stands for, I forgot it a very long\n\ttime ago.\n</p>"
  },
  {
    "path": "docs/src/documentation/framework/value.html",
    "content": "<!-- PAGE_TITLE: Value | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tValue\n</h1>\n\n<hr/>\n\n<p>\n\tValues in the framework are basically just type-safe unions. They support\n\tall of the <a href=\"type.html\">types</a>.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/framework/worldcell.html",
    "content": "<!-- PAGE_TITLE: WorldCells | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWorldCells\n</h1>\n\n<hr/>\n\n<p>\n\tWorldcells are the basic streaming unit of the virtual world. Essentially\n\tthey are a list of entities.\n</p>\n\n<p>\n\tThe worldcells also have a volume. All of the entities, whose positions are\n\tinside the worldcell's volume are considered to inside the worldcell.\n<p/>\n\n<p>\n\tAn entity is added to a worldcell if its definition is located in the\n\tworldcell's disk file, or if it is created and its position is inside the\n\tworldcell's volume or it enters a <a href=\"transition.html\">transition\n\tvolume</a> leading from one worldcell to another.\n</p>\n\n<p>\n\tAll worldcell data files are located in the <code>/data/worldcells/</code>\n\tdirectory. The file extension is <code>.cell</code>.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4>\n\tInterior\n</h4>\n\n<p>\n\tWorldcell volumes are not supposed to overlap. The only exception are \n\tinterior and exterior worldcells. If an entity's position is both inside an\n\texterior and an interior worldcell, preference will be given to the interior\n\tworldcell.\n</p>\n\n<h4>\n\tInterior lighting\n</h4>\n\n<p>\n\tIf a worldcell has its lighting set to be interior, it means that for every\n\tentity in that cell the <a href=\"../render.html\">directional lighting</a>\n\twill be disabled. This is more of a convention for entity implementation,\n\tthan something that is forced on entities\t\n</p>\n\n<h4>\n\tTransition\n</h4>\n\n<p>\n\tA worldcell transition has a volume, defined by a convex hull wrapped around\n\ta set of points, and an originating and a destination worldcell. If an\n\tentity is in the originating worldcell and it enters the volume of the\n\ttranistion, it will be switched to being in the destination worldcell.\n</p>\n\n<h4>\n\tVolume\n</h4>\n\n<p>\n\tIf a transition has its originating and its destination worldcells set to\n\tthe same worldcell, then it is considered that the volume of the transition\n\tcontributes to the volume of the worldcell.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/worldcell.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/classtram_1_1_world_cell.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tLoading a worldcell is very simple.\n</p>\n\n<code>\n\t<span class=\"codeclass\">WorldCell</span>* frog_house = <span class=\"codeclass\">WorldCell</span>::<span class=\"codefunc\">Make</span>(<span class=\"codelit\">\"pond\"</span>);<br/>\n\t<br/>\n\tfrog_house-><span class=\"codefunc\">LoadFromDisk</span>();<br/>\n\tfrog_house-><span class=\"codefunc\">Load</span>();\n</code>\n\n<p>\n\tWe can also probe entitial contents of the worldcell.\n</p>\n\n<code>\n\t<span class=\"codeclass\">WorldCell</span>* frog_house = <span class=\"codeclass\">WorldCell</span>::<span class=\"codefunc\">Find</span>(<span class=\"codelit\">\"pond\"</span>);<br/>\n<br/>\n\t<span class=\"codekeyw\">auto</span> entities = frog_house-><span class=\"codefunc\">GetEntities</span>();<br/>\n<br/>\n\t<span class=\"codekeyw\">for</span> (<span class=\"codekeyw\">auto</span> entity : enitities) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codefunc\">printf</span>(<span class=\"codelit\">\"Entity: %s\\n\"</span>, entity-><span class=\"codefunc\">GetName</span>());<br/>\n\t}\n</code>\n"
  },
  {
    "path": "docs/src/documentation/framework.html",
    "content": "<!-- PAGE_TITLE: Framework | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFramework\n</h1>\n\n<hr/>\n\n<p>\n\tThis is where the core of the framework lives.\n</p>\n\n<code>\n\t// TODO: write a brief overview of each section\n</code>"
  },
  {
    "path": "docs/src/documentation/index.html",
    "content": "<!-- PAGE_TITLE: Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLearn\n</h1>\n\n<p>\n\t<i>\n\t\tThere is nothing to learn.\n\t</i>\n</p>"
  },
  {
    "path": "docs/src/documentation/leveleditor.html",
    "content": "<!-- PAGE_TITLE: Level Editor | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLevel Editor\n</h1>\n\n<p>\n\t// TODO: implement\n</p>"
  },
  {
    "path": "docs/src/documentation/physics/collisionmodel.html",
    "content": "<!-- PAGE_TITLE: Collision Model | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCollision Model\n</h1>\n\n<hr/>\n\n<p>\n\tCollision models are essentially the \n\t<a href=\"../framework/resource.html\">Resource</a> form of the\n\t<a href=\"collisionshape.html\">CollisionShape</a>. They consist of a\n\tsingle or several collision shapes.\n</p>\n\n<p>\n\tCollision models are stored in the <code>/data/model/</code> directory. The\n\tfile extension is <code>.coll</code>. They can be created using the\n\tcollision model exporter Blender plugin.\n</p>\n\n"
  },
  {
    "path": "docs/src/documentation/physics/collisionshape.html",
    "content": "<!-- PAGE_TITLE: Collision Shape | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCollision Shape\n</h1>\n\n<hr/>\n\n<p>\n\tThe collision shape determines the volume of the of a\n\t<a href=\"../physics.html\">rigidbody</a> or a\n\t<a href=\"../physics.html\">trigger</a>. It consists of of a geometric shape.\n</p>\n\n<h2>\n\tShapes\n</h2>\n\n<hr/>\n\n<center>\n\t<img src=\"collisionshape.gif\"/><br/>\n\t<i>These are the shapes that you can use.</i>\n</center>\n\n<h4>\n\tSphere | <code>SHAPE_SPHERE</code>\n</h4>\n\n<p>\n\tA sphere is... well, you probably know what a sphere is. The only parameter\n\tthat it has is it's radius.\n</p>\n\n<h4>\n\tCylinder | <code>SHAPE_CYLINDER</code>\n</h4>\n\n<p>\n\tA cylinder has a radius and a height.\n</p>\n\n<h4>\n\tCapsule | <code>SHAPE_CAPSULE</code>\n</h4>\n\n<p>\n\tA capsule is like a cylinder, but instead of having flat ends, those ends\n\thave spheres attached to them. It has a radius and a height.\n</p>\n\n<h4>\n\tCone | <code>SHAPE_CONE</code>\n</h4>\n\n<p>\n\tA cone is like a cylinder, but one of the ends has been collapsed into a\n\tpoint. It has a radius and a height.\n</p>\n\n<h4>\n\tBox | <code>SHAPE_BOX</code>\n</h4>\n\n<p>\n\tA box is a box. It has a width, length and height. If all of these\n\tparameters are equal, you get a cube.\n</p>\n\n<h4>\n\tHull | <code>SHAPE_HULL</code>\n</h4>\n\n<p>\n\tA hull is a convex hull that is generated from a point cloud. It consists\n\tof points, which have a position.\n</p>\n\n<h4>\n\tMesh | <code>SHAPE_MESH</code>\n</h4>\n\n<p>\n\tA mesh consists of triangles. Each triangle has 3 vertices, each of which\n\thas a position. This is shape has the worst performance, avoid it if you\n\tcan.\n</p>\n\n\n<h2>Programming in C++</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">physics/collisionshape.h</span>&gt;</code> <br/>\n\t<a href=\"../../cppapi/structtram_1_1_physics_1_1_collision_shape.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tThis is how you make the shapes.\n</p>\n\n<code>\n\n\tconst float radius = 0.5f;<br/>\n\tconst float height = 1.5f;<br/>\n<br/>\n\tauto sphere = CollisionShape::Sphere(radius);<br/>\n<br/>\n\tauto cylinder = CollisionShape::Cylinder(radius,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height);<br/>\n<br/>\n\tauto capsule = CollisionShape::Capsule(radius,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height);<br/>\n<br/>\n\tauto cone = CollisionShape::Cone(radius, height);<br/>\n<br/>\n\tconst vec3 dimensions = {42.0f, 6.9f, 48.9f};<br/>\n<br/>\n\tauto box = CollisionShape::Box(dimensions);<br/>\n<br/>\n\tconst size_t cloud_size = 3;<br/>\n\tconst vec3 cloud[cloud_size] = {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{-1.0f, 1.0f, -1.0f},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{1.0f, 4.2f, 0.0f},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{-6.9f, 1.0f, -1.0f},<br/>\n\t};<br/>\n<br/>\n\tauto hull = CollisionShape::Hull(cloud, cloud_size);<br/>\n<br/>\n\tconst vec3 point1 = {1.0f, 1.0f, 0.0f}, <br/>\n\tconst vec3 point2 = {-1.0f, 1.0f, 0.0f}, <br/>\n\tconst vec3 point3 = {1.0f, -1.0f, 0.0f}, <br/>\n\tconst vec3 point4 = {-1.0f, -1.0f, 0.0f}, <br/>\n<br/>\n\tconst size_t mesh_size = 2;<br/>\n\tCollisionTriangle triangles[mesh_size] = {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{point1, point2, point3},<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;{point4, point2, point3}<br/>\n\t}; <br/>\n<br/>\n\tauto mesh = CollisionShape::Mesh(triangles,\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mesh_size);<br/>\n<br/>\n</code>\n"
  },
  {
    "path": "docs/src/documentation/physics.html",
    "content": "<!-- PAGE_TITLE: Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPhysics\n</h1>\n\n<hr/>\n\n<p>\n\tThe physics system provides rigidbody physics simulation services.\n</p>\n\n<p>\n\tCurrently a single backed is implemented, which is the Bullet physics\n\tlibrary backed, but more will be added in the future.\n</p>\n\n<p>\n\tIf you want to add rigidbodies to your entities, consider using the\n\t<a href=\"components/physics.html\">PhysicsComponent</a>. For triggers, the \n\t<a href=\"components/trigger.html\">TriggerComponent</a> is available.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"rigidbody\">\n\tRigidbody\n</h4>\n\n<p>\n\tAn object in the physics simlation. Rigidbodies have some kind of a shape or\n\tvolume. This is determined by their\n\t<a href=\"physics/collisionmodel.html\">CollisionModel</a> or\n\t<a href=\"physics/collisionshape.html\">CollisionShape</a>.\n</p>\n\n<h4 id=\"trigger\">\n\tTrigger\n</h4>\n\n<p>\n\tTriggers are special shapes or volumes that can detect if a rigidbody enters\n\tits\tvolume.\n</p>\n\n<h4 id=\"collisiongroup\">\n\tCollision Group\n</h4>\n\n<p>\n\tCollision groups are groups that the rigidbody, trigger or other physics\n\tconstruct is a part of. The object can be a part of several groups. They are\n\trepresented by bits in a bitmask.\n</p>\n\n<p>\n\tIt is more efficient for an object to belong to only a single group, or very\n\tfew groups.\n</p>\n\n<h4 id=\"collisionmask\">\n\tCollision Mask\n</h4>\n\n<p>\n\tCollision masks are groups with which the rigidbody, trigger or other\n\tphysics\tconstruct can collide with. The object can be set to collide with\n\tseveral groups. Allowed collision groups are represented by bits in a\n\tbitmask.\n</p>\n\n<p>\n\tTo determine if an object should collide with another object, each objects\n\tgroup bitmask and the other object's mask bitmask are logically ANDed\n\ttogether. If the resulting value is not zero, the objects are allowed to\n\tcollide.\n</p>\n\n<h4 id=\"raycast\">\n\tRaycast\n</h4>\n\n<p>\n\tUseful for poking things, selecting objects. A raycast constructs a ray \n\tbetween two points and check whether it intersects any rigidbody between\n\tthese points. If an intersection is found, it is returned.\n</p>\n\n<h4 id=\"shapecast\">\n\tShapecast\n</h4>\n\n<p>\n\tSimilar to raycast, but instead of a checking an intersection with an\n\tinfinitely thin line, a shape is used. \n</p>\n\n<h2>\n\tCollisions: how do they work?\n</h2>\n\n<hr/>\n\n<p>\n\tLike this.\n</p>\n\n<center>\n\t<img src=\"collisionmaskgroup.gif\"/><br/>\n\t<i>This is how the bitmask ANDing works.</i>\n</center>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">physics/physics.h</span>&gt;</code> <br/>\n\t<a href=\"../cppapi/namespacetram_1_1_physics.html\">API documentation\n\tpage</a>.\n</p>\n\n<code>\n\t<span class=\"codeclass\">Physics</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Physics</span>::<span class=\"codefunc\">Update</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tHere's how we do raycasts. Let's do one from the render view.\n</p>\n\n<code>\n\tauto pos = Render::GetViewPositon();<br/>\n\tauto rot = Render::GetViewRotation();<br/>\n\t<br/>\n\t// convert rotation to normal vector<br/>\n\tvec3 dir = rot * DIRECTION_FORWARD;<br/>\n\t<br/>\n\t// set end point to ne 5 meters in<br/>\n\t// front of the view<br/>\n\tvec3 end = pos + dir * 5.0f;<br/>\n\t<br/>\n\t// collision mask -1 means all bits, aka<br/>\n\t// collide with all collision groups<br/>\n\tauto coll = Physics::Raycast(pos, end, -1);<br/>\n\t<br/>\n\t<br/>\n\t// skip collision if no entity attached<br/>\n\tif (!coll.collider || !coll.collider->GetParent())<br/>\n\t\treturn;<br/>\n\t<br/>\n\tauto entity = coll.collider->GetParent();<br/>\n\t<br/>\n\t// send a SELECTED message to the collided<br/>\n\tMessage msg;<br/>\n\t<br/>\n\tmsg.sender = 0;<br/>\n\tmsg.receiver = entity->GetID();<br/>\n\tmsg.type = Message::SELECTED;<br/>\n\tmsg.data = nullptr;<br/>\n\t<br/>\n\tMessage::Send(msg);\n</code>\n\n<p>\n\tThis is how interactable object highlighting is usually done for a\n\tfirst-person view. We check if there is an object withing 5 meters right in\n\tfront of the view, and if there is an object, we send the it a Selected\n\tmessage.\n</p>\n\n<p>\n\tShapecasts work the same way, except that you also need to pass in the\n\tshape, which will be used for the collision.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/platform.html",
    "content": "<!-- PAGE_TITLE: Platform | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlatform\n</h1>\n\n<p>\n\tThis system contains the platform compatibility layer. Basically it provides\n\ta single API to perform various tasks, which are platform-specific.\n</p>\n\n<p>\n\tFor example, the creation of a window and the capture of keyboard keypress\n\tevents is specific to the operating system. Windows uses the Win32 API and\n\tLinux uses the X Window System API. \n</p>\n\n<p>\n\tTo make porting easier, the framework does not use these APIs directly,\n\tinstead using either the GLFW or the SDL libraries as a backend. It is also\n\tpossible to create your own backend.\n</p>\n\n<p>\n\tCreating your own backend is useful if you want to embed the framework\n\tinside of another application. For example, the\n\t<a href=\"leveleditor.html\">level editor</a> is a wxWidgets application that\n\tembeds the rendering system of the framework.\n</p>\n\n"
  },
  {
    "path": "docs/src/documentation/plugin.html",
    "content": "<!-- PAGE_TITLE: Plugins | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tPlugins\n</h1>\n\n<p>\n\t// TODO: implement\n</p>"
  },
  {
    "path": "docs/src/documentation/render/aabb.html",
    "content": "<!-- PAGE_TITLE: AABB | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAABB\n</h1>\n\n<hr/>\n\n<p>\n\tWhenever a 3D model is added to the scene by a\n\t<a href=\"../components/render.html\">RenderComponent</a>, it is also added to\n\tthe very large AABB tree which contains every model in the scene.\n</p>\n\n<p>\n\tThis tree can be used to query the contents of the scene. This is useful for\n\tthings like mouse picking of objects or decal projection.\n</p>\n\n<p>\n\tThis system also contains the LightTree, which is an octree that contains\n\tall of the lights in the scene. It is used to determine which lights will be\n\tused to illuminate which objects, since it speeds up nearest point queries.\n</p>"
  },
  {
    "path": "docs/src/documentation/render/animation.html",
    "content": "<!-- PAGE_TITLE: Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAnimations\n</h1>\n\n<hr/>\n\n<p>\n\tAnimations are a <a href=\"../framework/resource.html\">Resource</a> that can\n\tbe used to, essentially, generate pose matrices. Those are used to deform\n\tmeshes. See <a href=\"../components/animation.html\">AnimationComponent</a>\n\tfor examples of what you can do with animations.\n</p>\n\n<p>\n\tAnimations consist of keyframes. Each keyframe has some data associated with\n\tit. This data is used to transform bones.\n</p>\n\n<p>\n\tKeyframes start from zero and increase at a rate of 24 frames per second.\n\tThis is the same as the default animation frame rate in Blender.\n</p>\n\n<p>\n\tAnimations can be created in the Blender program and then exported using the\n\t<a href=\"../plugin.html\">Animation Exporter Plugin</a>.\n</p>\n\n<h2>\n\tA brief overview of the Keyframe\n</h2>\n\n<hr/>\n\n<h4>\n\tFrame\n</h4>\n\n<p>\n\tAny positive number. It is used to determine when the keyframe will be\n\tactive.\n</p>\n\n<h4>\n\tLocation\n</h4>\n\n<p>\n\tTranslation of a bone.\n</p>\n\n<h4>\n\tRotation\n</h4>\n\n<p>\n\tRotation of a bone.\n</p>\n\n<h4>\n\tScale\n</h4>\n\n<p>\n\tScale of a bone.\n</p>\n\n<h4>\n\tThat's it\n</h4>\n\n<p>\n\tNo shearing or any other kind of funny transformations. \n</p>\n"
  },
  {
    "path": "docs/src/documentation/render/material.html",
    "content": "<!-- PAGE_TITLE: Material | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tMaterial\n</h1>\n\n<hr/>\n\n<p>\n\tMaterials are used to describe the properties of geometry primitive\n\tsurfaces.\n</p>\n\n<p>\n\tIf a material is set to use a texture image, these images will be loaded \n\tfrom the <code>/data/textures/</code> directory and have the extension\n\t<code>.png</code>.\n</p>\n\n<p>\n\tMaterials can be defined through code, or they can be defined through a\n\tmaterial list file. These files are located in the <code>/data/</code>\n\tdirectory and have the extenstion <code>.list</code>.\n</p>\n\n<h2>\n\tProperties\n</h2>\n\n<hr/>\n\n<h4>\n\tTexture\n</h4>\n\n<p>\n\tOptional texture image.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tDetermines how the surface is rendered. For the OpenGL backend this\n\tdetermines which shader is used.\n</p>\n\n<h4>\n\tProperty\n</h4>\n\n<p>\n\tDetermines what the material is made of. Useful for determining which sound\n\tto use when collision happens with object, or which particle effect to spawn.\n</p>\n\n<h4>\n\tFilter\n</h4>\n\n<p>\n\tDetermines how the texture of the material will be interpolated.\n</p>\n\n<h4>\n\tTexture type\n</h4>\n\n<p>\n\tAllows the material to not use its own texture, instead using a plain color,\n\tor allows it to use another material's texture.\n</p>\n\n<h4>\n\tColor\n</h4>\n\n<p>\n\tIf a material has no texture, it will use appear as this color. Otherwise \n\tthe texture of the material will be tinted with this color.\n</p>\n\n<h4>\n\tSpecular weight\n</h4>\n\n<p>\n\tFloating point value between 0.0 and 1.0. Determines how visible the\n\tspecular reflections of the material are. Setting this to 0.0 essentially\n\tdisables specular reflections.\n</p>\n\n<h4>\n\tSpecular exponent\n</h4>\n\n<p>\n\tFloating point value from 1.0 to higher. Determines how wide the specular\n\treflection will be. Higher values means narrower relection.\n</p>\n\n<h4>\n\tSpecular transparency\n</h4>\n\n<p>\n\tFloating point value between 0.0 and 1.0. Determines whether the material\n\tabsorbs any of the specular reflection. Setting this to 0.0 will make the\n\tmaterial absorb the specular reflection just like it does with diffuse and\n\tsetting this to 1.0 will have the specular reflection be the same color as\n\tthe light source.\n</p>\n\n<h2>\n\tMaterial types\n</h2>\n\n<hr/>\n\n<p>\n\tMost of these material types are accepted by all backends. If using OpenGL\n\tbacked, you can register new material types and set their shaders.\n</p>\n\n<h4>\n\tTexture | <code>MATERIAL_TEXTURE</code>\n</h4>\n\n<p>\n\tThe material has a texture. It is fully opaque.\n</p>\n\n<h4>\n\tTexture Alpha | <code>MATERIAL_TEXTURE_ALPHA</code>\n</h4>\n\n<p>\n\tThe material has a texture. It is partially opaque. The transparency channel\n\tof the texture is used for an alpha test.\n</p>\n\n<h4>\n\tLightmap | <code>MATERIAL_LIGHTMAP</code>\n</h4>\n\n<p>\n\tThe texture of this material is used as a lightmap.\n</p>\n\n<h4>\n\tMSDF | <code>MATERIAL_MSDF</code>\n</h4>\n\n<p>\n\tThe texture represents a MSDF.\n</p>\n\n<h4>\n\tGlyph | <code>MATERIAL_GLYPH</code>\n</h4>\n\n<p>\n\tThis is the material used for GUI elements.\n</p>\n \t\n<h4>\n\tWater | <code>MATERIAL_WATER</code>\n</h4>\n\n<p>\n\tThis material will get fancy water effects applied to it, but this only\n\tworks with the OpenGL backend.\n</p>\n\n<h4>\n\tFlat Color | <code>MATERIAL_FLAT_COLOR</code>\n</h4>\n\n<p>\n\tThe material has no texture associated with it and instead it will use its\n\tcolor parameter.\n</p>\n \n<h2>\n\tMaterial Property properties\n</h2>\n\n<hr/>\n\n<h4>\n\tMetal | <code>PROPERTY_METAL</code>\n</h4>\n\n<p>\n\tHeavy metal objects.\n</p>\n\n<h4>\n\tMetal Thin | <code>PROPERTY_METAL_THIN</code>\n</h4>\n\n<p>\n\tLight metal objects.\n</p>\n\n<h4>\n\tSlime | <code>PROPERTY_SLIME</code>\n</h4>\n\n<p>\n\tExretions of a biological origin.\n</p>\n\n<h4>\n\tTile | <code>PROPERTY_TILE</code>\n</h4>\n\n<p>\n\tTiles, like those found in a bathroom.\n</p>\n \t\n<h4>\n\tGrate | <code>PROPERTY_GRATE</code>\n</h4>\n\n<p>\n\tFences and other metallic objects with lots of holes in them.\n</p>\n\n<h4>\n\tWood | <code>PROPERTY_WOOD</code>\n</h4>\n\n<p>\n\tTrees, planks and logs.\n</p>\n\n<h4>\n\tComputer | <code>PROPERTY_COMPUTER</code>\n</h4>\n\n<p>\n\tActs like mixture of metal and glass.\n</p>\n \t\n<h4>\n\tGlass | <code>PROPERTY_GLASS</code>\n</h4>\n\n<p>\n\tWindows, jars and bottles.\n</p>\n\n<h4>\n\tSnow | <code>PROPERTY_SNOW</code>\n</h4>\n\n<p>\n\tSnow and other sound absorbent materials, carpets.\n</p>\n\n<h4>\n\tGrass | <code>PROPERTY_GRASS</code>\n</h4>\n\n<p>\n\tLike the green touchable stuff that grows outside.\n</p>\n\n<h4>\n\tConcrete | <code>PROPERTY_CONCRETE</code>\n</h4>\n\n<p>\n\tConcrete, rocks and stones.\n</p>\n\n<h4>\n\tFlesh | <code>PROPERTY_FLESH</code>\n</h4>\n\n<p>\n\tSort of like a heavier version of slime. Things that are made out of meat.\n</p>\n\n\n<h2>\n\tFilters\n</h2>\n\n<hr/>\n\n<h4>\n\tNearest | <code>FILTER_NEAREST</code>\n</h4>\n\n<p>\n\tTextures won't use interpolation.\n</p>\n\n<h4>\n\tLinear | <code>FILTER_LINEAR</code>\n</h4>\n\n<p>\n\tTextures use linear interpolation.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/render/model.html",
    "content": "<!-- PAGE_TITLE: Models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tModels\n</h1>\n\n<hr/>\n\n<p>\n\tCurrently we have three types of 3D models.\n</p>\n\n<p>\n\tAll model types are stored in the <code>/data/models/</code> directory.\n\tStatic models have the extension <code>.stmdl</code>, dynamic models have\n\tthe <code>.dymdl</code> extension and modifcation models have the \n\t<code>.mdmdl</code> extension.\n</p>\n\n<h2 id=\"static\">\n\tStatic models\n</h2>\n\n<hr/>\n\n<p>\n\tStatic models not only have normal texture coordinates, but they also have \n\tlightmap coordinates. They can be lightmapped. That's pretty nice.\n</p>\n\n<h2 id=\"dynamic\">\n\tDynamic models\n</h2>\n\n<hr/>\n\n<p>\n\tDynamic models also have texture coordinates, but no lightmap coordinates.\n\tInstead they have bone weights, which allow them to use pose matrices and\n\tbe animated by animations and stuff.\n</p>\n\n<h2 id=\"modification\">\n\tModification models\n</h2>\n\n<hr/>\n\n<p>\n\tUnlike other model types, this model type has no vertex data of its own.\n\tInstead it references the vertex data of some other model. What is unique\n\tto it, is its material to material mapping. It can be used to swap out a\n\tmaterial.\n</p>\n\n<p>\n\tFor example, if you have a pink teapot model which uses a material named\n\t<code>pink-pot</code> and you would like a cyan teapot model, instead of\n\tre-exporting another dynamic model but with just the materials replaced,\n\tyou could create a modification model with the material mapping of\n\t<code>pink-pot => cyan-pot</code>.\n</p>\n"
  },
  {
    "path": "docs/src/documentation/render/sprite.html",
    "content": "<!-- PAGE_TITLE: Sprite | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSprite\n</h1>\n\n<hr/>\n\n<p>\n\tSprites are like little images that live inside of other images. These\n\timages are the texture images of <a href=\"material.html\">Materials</a>.\n\tSprites reference materials.\n</p>\n\n<p>\n\tIf you are creating a flipbook animation, it is easier to animate all of the\n\tframes inside of a single image texture file. But how would the framework\n\tknow where exactly are each of the frames located in the image? It would\n\tknow it because you created a sprite, which contains the positions of each\n\tframe inside the larger texture image.\n</p>\n\n<h2>\n\tWhat does is inside a frame\n</h2>\n\n<hr/>\n\n<center>\n\t<img src=\"spriteframe.gif\"/><br/>\n\t<i>This is how these different metrics look like.</i>\n</center>\n\n<h4>\n\tOffset X and Offset Y\n</h4>\n\n<p>\n\tOffsets in pixels, from the top-left corner. This is the pixel coordinate\n\tposition of the top-left corner of the sprite and where it starts.\n</p>\n\n<h4>\n\tWidth and Height\n</h4>\n\n<p>\n\tWidth and height of the frame, in pixels.\n</p>\n\n<h4>\n\tMidpoint X and Midpoint Y\n</h4>\n\n<p>\n\tOffsets of the midpoint of the frame, in pixels. It is relative to the frame\n\toffset. Usually they will be set to half of the width and half of the\n\theight, so that the midpoint is in the midpoint of the sprite.\n</p>\n\n<h4>\n\tBorder H and V\n</h4>\n\n<p>\n\tHorizontal and vertical borders around the sprite, in pixels. Only used for\n\ttext rendering.\n</p>"
  },
  {
    "path": "docs/src/documentation/render.html",
    "content": "<!-- PAGE_TITLE: Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRender\n</h1>\n\n<hr/>\n\n<p>\n\tProbably one of the most useful systems in the framework. Performs all of\n\tthe graphics stuff.\n</p>\n\n<h2>\n\tKey concepts\n</h2>\n\n<hr/>\n\n<h4 id=\"view\">\n\tView\n</h4>\n\n<p>\n\tVirtual camera perspective. Can be set using a position vector and a\n\trotation quaternion, or by directly feeding in a view and perspective\n\tmatrices.\n</p>\n\n<h4 id=\"layer\">\n\tLayer\n</h4>\n\n<p>\n\tObjects can be assigned to a layer. Curently there are 7 layers. Objects\n\tin higher layers will be drawn on top of the objects in lower layers.\n</p>\n\n<h4 id=\"primitive\">\n\tGraphics Primitive\n</h4>\n\n<p>\n\tA geometric shape that can be rasterized. The framework currently supports\n\tthe rasterization of triangles and straight line segments.\n</p>\n\n<h4 id=\"drawlistentry\">\n\tDraw List Entry\n</h4>\n\n<p>\n\tA record in the draw list. The draw list is list of all of the objects,\n\tconsisting of graphics primitives, that compose the rendered scene. To be\n\teligble for being rendered to the screen, the object must be added to the\n\tdraw list.\n</p>\n\n<h4 id=\"vertex\">\n\tVertex\n</h4>\n\n<p>\n\tA point consisting of some kind of a coordinate and possibly some other\n\tdata. Used to construct graphics primitives. A triangle consists of 3\n\tvertices, a line segment of 2. Can be arranged in a buffer in list form.\n</p>\n\n<h4 id=\"index\">\n\tIndex\n</h4>\n\n<p>\n\tReference to a vertex. Can be arranged in a buffer in list form. Invented as\n\ta digital computer memory saving measure sometime in the late 20th century.\n</p>\n\n<h4 id=\"texture\">\n\tTexture\n</h4>\n\n<p>\n\tRaster image that can be applied to the surface of a graphics primitive\n\tduring rendering.\n</p>\n\n<h4 id=\"material\">\n\tMaterial\n</h4>\n\n<p>\n\tSet of surface properties, possibly including a reference to a texture. \n\tDetermines how the surface of a graphics primitive will be rendered.\n</p>\n\n<h4 id=\"light\">\n\tLight\n</h4>\n\n<p>\n\tIf there was no light we could just clear the screen with a black color\n\tinstead of rendering anything and you wouldn't even know.\n</p>\n\n<h4 id=\"lightmap\">\n\tLightmap\n</h4>\n\n<p>\n\tPrecomputed surface illumination for static objects. Allows the usage of\n\tsome rather slow algorithms for lighting computations, i.e. ray tracing,\n\tpath tracing, radiosity.\n</p>\n\n<h4 id=\"armature\">\n\tArmature\n</h4>\n\n<p>\n\tConsists of bones. Allows deformation of a 3D model via the transfors of the\n\tbones. Can be animated.\n</p>\n\n<h2>\n\tBackends\n</h2>\n\n<hr/>\n\n<h4>\n\tOpenGL\n</h4>\n\n<p>\n\tWritten in a subset of OpenGL 4.0 and WebGL, this is the main rendering\n\tbackend of the framework.\n</p>\n\n<h4>\n\tDirect3D\n</h4>\n\n<p>\n\tThis backend uses the Direct3D9 fixed function pipeline. Not tested, but\n\tshould work with Direct3D7 level hardware. Curently only supports static\n\tmodel, dynamic model and line rendering.\n</p>\n\n<h4>\n\tSoftware\n</h4>\n\n<p>\n\tThis backend does all of the rendering on the CPU. Curently only supports\n\tstatic model, dynamic model and line rendering.\n</p>\n\n<h2>\n\tLighting Types\n</h2>\n\n<hr/>\n\n<h4>\n\tDynamic light\n</h4>\n\n<p>\n\tCan either be configured to act as a point light, or a spotlight.\n</p>\n\n<p>\n\tNo real limit on the ammount of lights in the scene, but each object can be\n\tilluminated by only 4 lights at the same time.\n</p>\n\n<h4>\n\tDirectional light\n</h4>\n\n<p>\n\tLight which is originating from a light source infinitely far away. Useful\n\tfor modelling sunlight.\n</p>\n\n<p>\n\tThe framework allows a single directional light to be used in the scene.\n</p>\n\n<h4>\n\tAmbient light\n</h4>\n\n<p>\n\tAdds some base lighting to every object in the scene. Has no direction.\n</p>\n\n<h4>\n\tLightmap\n</h4>\n\n<p>\n\tPre-computed lighting for a 3D model. Stored as a texture image. Only\n\tavailable to static models.\n</p>\n\n<h2>\n\tProgramming in C++\n</h2>\n\n<hr/>\n\n<p>\n\t<code>#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">render/render.h</span>&gt;</code> <br/>\n\t<a href=\"../cppapi/render_2render_8h.html\">API documentation\n\tpage</a>.\n</p>\n\n<p>\n\tInitialization the same as with other systems.\n</p>\n\n<code>\n\t<span class=\"codecomm\">// UI system needs to be initialized first</span><br/>\n\t<span class=\"codeclass\">UI</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// now we initialize Render</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">Init</span>();<br/>\n\t<br/>\n\t<span class=\"codecomm\">// main loop</span><br/>\n\t<span class=\"codekeyw\">while</span> (<span class=\"codekeyw\">true</span>) {<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">Render</span>();<br/>\n\t}<br/>\n\t<br/>\n</code>\n\n<p>\n\tThere's too many functions in the system to list, but here's some more\n\tuseful ones.\n</p>\n\n<code>\n\t<br/>\n\t<span class=\"codecomm\">// the system defines some color constants</span><br/>\n\t<span class=\"codekeyw\">color_t</span> cyan = <span class=\"codeclass\">Render</span>::COLOR_CYAN;<br/>\n\t<span class=\"codekeyw\">color_t</span> pink = <span class=\"codeclass\">Render</span>::COLOR_PINK;<br/>\n <br/>\n\t<span class=\"codecomm\">// this draws a debug line. all of the debug</span><br/>\n\t<span class=\"codecomm\">// drawing functions need to be called once</span><br/>\n\t<span class=\"codecomm\">// per frame, since after rendering a frame</span><br/>\n\t<span class=\"codecomm\">// the debug line buffer is emptied</span><br/>\n\t<span class=\"codekeyw\">const vec3</span> from = {<span class=\"codelit\">0</span>, <span class=\"codelit\">0</span>, <span class=\"codelit\">0</span>};<br/>\n\t<span class=\"codekeyw\">const vec3</span> to = {<span class=\"codelit\">1</span>, <span class=\"codelit\">1</span>, <span class=\"codelit\">1</span>};<br/>\n\t<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddLine</span>(from, to, cyan);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this draws a cross</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddLineMarker</span>(from, pink);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// sphere</span><br/>\n\t<span class=\"codekeyw\">const float</span> radius = 1.0f;<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">AddSphere</span>(from, radius, pink);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// this is how to set the directional light</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetSunDirection</span>(DIRECTION_FORWARD);<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetSunColor</span>(COLOR_CYAN * <span class=\"codelit\">1.0f</span>);<br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetAmbientColor</span>(COLOR_CYAN * <span class=\"codelit\">0.1f</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// setting the FOV, in degrees</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetViewFov</span>(<span class=\"codelit\">90.0f</span>);<br/>\n\t<br/>\n\t<span class=\"codecomm\">// setting it to zero changes it to</span><br/>\n\t<span class=\"codecomm\">// orthographic projection.</span><br/>\n\t<span class=\"codeclass\">Render</span>::<span class=\"codefunc\">SetViewFov</span>(<span class=\"codelit\">90.0f</span>);<br/>\n\n\t\n</code>"
  },
  {
    "path": "docs/src/documentation/source-layout.html",
    "content": "<!-- PAGE_TITLE: Source Layout | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tSource Layout\n</h1>\n\n<p>\n\tAll of the source code for the library is located in the <code>/src/</code>\n\tdirectory of the repository. There's also header files for the libraries in\n\tthe <code>/libraries/</code> directory.\n</p>\n\n<h2><code>/libraries/</code></h2>"
  },
  {
    "path": "docs/src/documentation/tools/codegen.html",
    "content": "<!-- PAGE_TITLE: Codegen | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tCodegen\n</h1>\n\n<hr/>\n\n<p>\n\tCodegen is a small Python script to help with syncing up C++ entity\n\tserialization code and entdef files.\n</p>\n\n<h2>\n\tHow to use\n</h2>\n\n<hr/>\n\n<p>\n\tOpen command prompt in you project's directory and run the codegen.py\n</p>\n\n<p>\n\t<code>\n\t\tC:\\garden>codegen.py make StickyFroggy\n\t</code>\n</p>\n\n<p>\n\tThe program will prompt you with the filename of the new file to be created.\n\tPress <code>y</code> to accept.\n</p>\n\n<p>\n\t<code>\n\t\tTramway SDK Code generator v0.1.1<br/>\n\t\tCreate file C:\\garden\\src\\stickyfroggy.h? [y/n]\n\t</code>\n</p>\n\n<p>\n\tThe program will now have created the files <code>/src/stickyfroggy.h</code>\n\tand <code>/src/stickyfroggy.cpp</code>.\n</p>\n\n<p>\n\tLet's open up stickyfroggy.h and take a look inside:\n</p>\n\n<code>\n\t<span class=\"codecomm\">// Generated by Tramway SDK Code generator</span><br/>\n\t<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/entity.h</span>&gt;<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">framework/serialization.h</span>&gt;<br/>\n\t<br/>\n\t#<span class=\"codekeyw\">include</span> &lt;<span class=\"codelit\">templates/macros.h</span>&gt;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">using namespace</span> tram;<br/>\n\t<br/>\n\t<span class=\"codekeyw\">class</span> <span class=\"codeclass\">StickyFroggy</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Entity</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;<span class=\"codefunc\">StickyFroggy</span>(<span class=\"codekeyw\">const</span> <span class=\"codeclass\">SharedEntityData</span>&amp;, <span class=\"codekeyw\">const</span> <span class=\"codeclass\">ValueArray</span>&amp;);<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_ENTITY_NAME(<span class=\"codelit\">\"stickyfroggy\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">UpdateParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">SetParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Load</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Serialize</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">EventHandler</span>(<span class=\"codeclass\">Event</span>&amp; evt);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">MessageHandler</span>(<span class=\"codeclass\">Message</span>&amp; msg);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> <span class=\"codefunc\">GetType</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">static void</span> <span class=\"codefunc\">Register</span>();<br/>\n\t};\n</code>\n\n<p>\n\tLet's add some properties to the class!\n</p>\n\n<code>\n<span class=\"codekeyw\">class</span> <span class=\"codeclass\">StickyFroggy</span> : <span class=\"codekeyw\">public</span> <span class=\"codeclass\">Entity</span> {<br/>\n\t<span class=\"codekeyw\">public</span>:<br/>\n\t&nbsp;&nbsp;<span class=\"codefunc\">StickyFroggy</span>(<span class=\"codekeyw\">const</span> <span class=\"codeclass\">SharedEntityData</span>&amp;, <span class=\"codekeyw\">const</span> <span class=\"codeclass\">ValueArray</span>&amp;);<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_ENTITY_NAME(<span class=\"codelit\">\"stickyfroggy\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">UpdateParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">SetParameters</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Load</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Unload</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">Serialize</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">EventHandler</span>(<span class=\"codeclass\">Event</span>&amp; evt);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">void</span> <span class=\"codefunc\">MessageHandler</span>(<span class=\"codeclass\">Message</span>&amp; msg);<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> <span class=\"codefunc\">GetType</span>();<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">static void</span> <span class=\"codefunc\">Register</span>();<br/>\n\t<span class=\"codekeyw\">private</span>:\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_KEY_VALUE(<span class=\"codelit\">\"model\"</span>, <span class=\"codelit\">\"frog-marker\"</span>)<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"viewmodel\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">name_t</span> viewmodel = <span class=\"codelit\">\"frog\"</span>;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"stickiness\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">float</span> stickiness = <span class=\"codelit\">1.5f</span>;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_PROPERTY(<span class=\"codelit\">\"roll\"</span>, FIELD_SERIALIZE)<br/>\n\t&nbsp;&nbsp;<span class=\"codekeyw\">bool</span> egg;<br/>\n\t&nbsp;&nbsp;<br/>\n\t&nbsp;&nbsp;TRAM_SDK_VIRTUAL_PROPERTY(<span class=\"codekeyw\">int32_t</span>, <span class=\"codelit\">\"egg-count\"</span>, FIELD_SERIALIZE, <span class=\"codelit\">11</span>)<br/>\n};\n</code>\n\n<p>\n\tAfter editing entity properties, we need to create/regenerate code and data\n\tfiles\n</p>\n\n\n<p>\n\t<code>\n\t\tC:\\codegen.py refresh StickyFroggy\n\t</code>\n</p>\n\n<p>\n\tThis command creates or overwrites these files\n</p>\n\n<p>\n\t<code>\n\t\t/src/stickyfroggy.inl<br/>\n\t\t/data/stickyfroggy.[number].entdef\n\t</code>\n</p>\n\n<p>\n\tIf you want, you can take a look at the generated code in\n\t<code>stickyfroggy.inl</code> file, but don't bother editing it &mdash; it\n\twill be overwritten every time you run the refresh command.\n</p>\n\n<p>\n\tLet's look at the generated <code>.entdef</code> file\n</p>\n\n<code>\nbegin<br/>\n&nbsp;&nbsp;# this comes from TRAM_SDK_ENTITY_NAME() macro<br/>\n&nbsp;&nbsp;name stickyfroggy<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# this comes from TRAM_SDK_KEY_VALUE() macro<br/>\n&nbsp;&nbsp;model  frog-marker<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# these come from TRAM_SDK_PROPERTY()<br/>\n&nbsp;&nbsp;# and TRAM_SDK_VIRTUAL_PROPERTY() macros<br/>\n&nbsp;&nbsp;field string viewmodel<br/>\n&nbsp;&nbsp;field float stickiness<br/>\n&nbsp;&nbsp;field bool roll<br/>\n&nbsp;&nbsp;field int  egg-count<br/>\n&nbsp;&nbsp;<br/>\n&nbsp;&nbsp;# this is randomly generated index<br/>\n&nbsp;&nbsp;version 193035075<br/>\nend\n</code>\n\n<h2>\n\tSupported types\n</h2>\n\n<hr/>\n\n<ul>\n\t<li><code>name_t</code></li>\n\t<li><code>bool</code></li>\n\t<li><code>int</code></li>\n\t<li><code>float</code></li>\n\t<li><code>double</code></li>\n\t<li><code>int8_t</code></li>\n\t<li><code>int16_t</code></li>\n\t<li><code>int32_t</code></li>\n\t<li><code>uint8_t</code></li>\n\t<li><code>uint16_t</code></li>\n\t<li><code>uint32_t</code></li>\n\t<li><code>vec2</code></li>\n\t<li><code>vec3</code></li>\n\t<li><code>vec4</code></li>\n\t<li><code>quat</code></li>\n</ul>\n\n\n"
  },
  {
    "path": "docs/src/documentation.html",
    "content": "<!-- PAGE_TITLE: Documentation | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDocumentation\n</h1>\n\n<p>\n\tThis page contains links to the pages of the framework documentation. These\n\tpages are meant to be used as a general, high-level overview of the\n\tframework's features.\n</p>\n\n<p>\n\tIf you're looking for low-level C++ API documentation, the reference\n\tgenerated by doxygen <a href=\"cppapi/index.html\">can be found here</a>.\n</p>\n\n<p>\n\tIt is also worth noting here, that all of the C++ code examples omit the\n\tmain framwork namespace. This is equivalent to adding this line of code\n\tto the beginning of your source code files:\n</p>\n\n<code>\n\t<span class=\"codekeyw\">using namespace</span> tram;\n\t<br/>\n\t<br/>\n</code>\n\n<h3>Runtime</h3>\n\n<ul>\n\t<li><a href=\"documentation/audio.html\">Audio</a></li>\n\t<li><a href=\"documentation/components.html\">Components</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/components/animation.html\">Animation</a></li>\n\t\t<li><a href=\"documentation/components/audio.html\">Audio</a></li>\n\t\t<li><a href=\"documentation/components/controller.html\">Controller</a></li>\n\t\t<li><a href=\"documentation/components/light.html\">Light</a></li>\n\t\t<li><a href=\"documentation/components/particle.html\">Particle</a></li>\n\t\t<li><a href=\"documentation/components/physics.html\">Physics</a></li>\n\t\t<li><a href=\"documentation/components/player.html\">Player</a></li>\n\t\t<li><a href=\"documentation/components/render.html\">Render</a></li>\n\t\t<li><a href=\"documentation/components/sprite.html\">Sprite</a></li>\n\t\t<li><a href=\"documentation/components/template.html\">Template</a></li>\n\t\t<li><a href=\"documentation/components/trigger.html\">Trigger</a></li>\n\t</ul>\n\t<li><a href=\"documentation/entities.html\">Entities</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/entities/crate.html\">Crate</a></li>\n\t\t<li><a href=\"documentation/entities/decoration.html\">Decoration</a></li>\n\t\t<li><a href=\"documentation/entities/light.html\">Light</a></li>\n\t\t<li><a href=\"documentation/entities/marker.html\">Marker</a></li>\n\t\t<li><a href=\"documentation/entities/player.html\">Player</a></li>\n\t\t<li><a href=\"documentation/entities/sound.html\">Sound</a></li>\n\t\t<li><a href=\"documentation/entities/staticwobj.html\">Static World Object</a></li>\n\t\t<li><a href=\"documentation/entities/trigger.html\">Trigger</a></li>\n\t</ul>\n\t<li><a href=\"documentation/extensions.html\">Extensions</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/extensions/camera.html\">Camera</a></li>\n\t\t<li><a href=\"documentation/extensions/kitchensink.html\">Kitchensink</a></li>\n\t\t<ul>\n\t\t\t<li><a href=\"documentation/extensions/kitchensink/animationtable.html\">Animation Table</a></li>\n\t\t\t<li><a href=\"documentation/extensions/kitchensink/soundtable.html\">Sound Table</a></li>\n\t\t</ul>\n\t\t<li><a href=\"documentation/extensions/menu.html\">Menu</a></li>\n\t\t<li><a href=\"documentation/extensions/scripting.html\">Scripting</a></li>\n\t</ul>\n\t\n\t<li><a href=\"documentation/framework.html\">Framework</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/framework/async.html\">Async</a></li>\n\t\t<li><a href=\"documentation/framework/core.html\">Core</a></li>\n\t\t<li><a href=\"documentation/framework/entity.html\">Entity</a></li>\n\t\t<li><a href=\"documentation/framework/entitycomponent.html\">EntityComponent</a></li>\n\t\t<li><a href=\"documentation/framework/event.html\">Event</a></li>\n\t\t<li><a href=\"documentation/framework/file.html\">File</a></li>\n\t\t<li><a href=\"documentation/framework/graph.html\">Graph</a></li>\n\t\t<li><a href=\"documentation/framework/gui.html\">GUI</a></li>\n\t\t<li><a href=\"documentation/framework/language.html\">Language</a></li>\n\t\t<li><a href=\"documentation/framework/loader.html\">Loader</a></li>\n\t\t<li><a href=\"documentation/framework/logging.html\">Logging</a></li>\n\t\t<li><a href=\"documentation/framework/math.html\">Math</a></li>\n\t\t<li><a href=\"documentation/framework/message.html\">Message</a></li>\n\t\t<li><a href=\"documentation/framework/navmesh.html\">Navmesh</a></li>\n\t\t<li><a href=\"documentation/framework/path.html\">Path</a></li>\n\t\t<li><a href=\"documentation/framework/resource.html\">Resource</a></li>\n\t\t<li><a href=\"documentation/framework/script.html\">Script</a></li>\n\t\t<li><a href=\"documentation/framework/serialization.html\">Serialization</a></li>\n\t\t<li><a href=\"documentation/framework/settings.html\">Settings</a></li>\n\t\t<li><a href=\"documentation/framework/signal.html\">Signal</a></li>\n\t\t<li><a href=\"documentation/framework/stats.html\">Stats</a></li>\n\t\t<li><a href=\"documentation/framework/system.html\">System</a></li>\n\t\t<li><a href=\"documentation/framework/transition.html\">Transition</a></li>\n\t\t<li><a href=\"documentation/framework/type.html\">Type</a></li>\n\t\t<li><a href=\"documentation/framework/ui.html\">UI</a></li>\n\t\t<li><a href=\"documentation/framework/uid.html\">UID</a></li>\n\t\t<li><a href=\"documentation/framework/value.html\">Value</a></li>\n\t\t<li><a href=\"documentation/framework/worldcell.html\">WorldCell</a></li>\n\t</ul>\n\t<li><a href=\"documentation/physics.html\">Physics</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/physics/collisionmodel.html\">CollisionModel</a></li>\n\t\t<li><a href=\"documentation/physics/collisionshape.html\">CollisionShape</a></li>\n\t</ul>\n\t<li><a href=\"documentation/platform.html\">Platform</a></li>\n\t<li><a href=\"documentation/render.html\">Render</a></li>\n\t<ul>\n\t\t<li><a href=\"documentation/render/aabb.html\">AABB</a></li>\n\t\t<li><a href=\"documentation/render/animation.html\">Animation</a></li>\n\t\t<li><a href=\"documentation/render/material.html\">Material</a></li>\n\t\t<li><a href=\"documentation/render/model.html\">Model</a></li>\n\t\t<li><a href=\"documentation/render/sprite.html\">Sprite</a></li>\n\t</ul>\n</ul>\n\n<h3>Level editor</h3>\n\n<h3>Map compilers</h3>\n\n<h3>Blender plugins</h3>\n\n<h3>CLI tools</h3>\n<ul>\n\t<li><a href=\"documentation/tools/codegen.html\">Codegen.py</a></li>\n</ul>"
  },
  {
    "path": "docs/src/features.html",
    "content": "<!-- PAGE_TITLE: Features | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tFeatures\n</h1>\n\n<ul>\n<li>Photo-realistic graphics.\n<ul>\n<li>Textured 3D models.</li>\n<li>Gouraud shading.</li>\n<li>24-bit color.</li>\n<!--<li>Fog.</li>-->\n<li>Night and day conditions.</li>\n<li>Screen resolutions from 320x200 to 800x600.</li>\n</ul>\nAll of that together provides very realistic appearance.\n</li>\n<li>Data oriented design.\n<ul><li>Engine core data is laid out in memory in the most efficient way possible as to increase the data processing speed. The core library also provides templates so that you can have efficient data too.</li></ul>\n</li>\n<li>Hyperrealistic physics simulation provided by the Bullet Physics library.</li>\n<li>Open-world style level streaming, including assets.</li>\n<li>Runs on virtually any computer from the last 15 years.</li>\n<li>Very fast and environmentally-friendly C++20 code performance.</li>\n<li>Windows XP and Linux support.</li>\n</ul>\n\n<h1>\n\tImages\n</h1>\n\n<center>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen01.png\"><img src=\"images/features/screen01.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen02.png\"><img src=\"images/features/screen02.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen03.png\"><img src=\"images/features/screen03.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen04.png\"><img src=\"images/features/screen04.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen05.png\"><img src=\"images/features/screen05.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen06.png\"><img src=\"images/features/screen06.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen07.png\"><img src=\"images/features/screen07.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen20.png\"><img src=\"images/features/screen20.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen21.png\"><img src=\"images/features/screen21.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen08.png\"><img src=\"images/features/screen08.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen09.png\"><img src=\"images/features/screen09.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen10.png\"><img src=\"images/features/screen10.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen11.png\"><img src=\"images/features/screen11.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen22.png\"><img src=\"images/features/screen22.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen23.png\"><img src=\"images/features/screen23.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen24.png\"><img src=\"images/features/screen24.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen25.png\"><img src=\"images/features/screen25.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen40.png\"><img src=\"images/features/screen40.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen41.png\"><img src=\"images/features/screen41.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen42.png\"><img src=\"images/features/screen42.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen43.png\"><img src=\"images/features/screen43.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen44.png\"><img src=\"images/features/screen44.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen45.png\"><img src=\"images/features/screen45.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen46.png\"><img src=\"images/features/screen46.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen47.png\"><img src=\"images/features/screen47.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen48.png\"><img src=\"images/features/screen48.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen52.png\"><img src=\"images/features/screen52.gif\"/></a>\n<br/>\n<a target=\"_blank\" href=\"images/features/screen50.png\"><img src=\"images/features/screen50.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen49.png\"><img src=\"images/features/screen49.gif\"/></a>\n<a target=\"_blank\" href=\"images/features/screen51.png\"><img src=\"images/features/screen51.gif\"/></a>\n\n</center>"
  },
  {
    "path": "docs/src/index.html",
    "content": "<!-- PAGE_TITLE: Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1 style=\"font-family: serif;\">\n\tDid you know...\n</h1>\n\n<i>\n\tThat the Tramway Drifting and Dungeon Exploration Simulator Software\n\tDevelopment Kit is the bestest 3D graphics package?\n</i>\n\n<hr/>\n\n<h2>\n\tWhat is goings on?\n</h2>\n\n<hr/>\n\n<p>\n\tVersion 0.1.1 is out. You can finally download an installer. Like a wizard\n\tinstaller. It will install the engine and all of the utilities. Very\n\tprofessional. 99% of other engines can't to that!\n</p>\n\n<p>\n\tThe tools still are very glitchy and everything breaks all the time. But at\n\tleast the engine is capable of shipping. Shipping real applications. You can\n\tactually do that now.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/watersnooter.png\">\n\t\t<img border=\"0\" src=\"images/posts/watersnooter.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tRay-tracing render backend can now do transparency, btw.\n\t</i>\n</center>\n\n<p>\n\tWhat we'll do next:\n</p>\n\n<ul>\n\t<li>Ship apps.</li>\n\t<li>Ship some more apps.</li>\n\t<li>Analyze deficiencies.</li>\n\t<li>Fix bugs. Fix deficiencies. Fix everything.</li>\n</ul>\n\n<hr/>\n\n<center>\n\t<h3>\n\t\tDesign Patterns Used\n\t</h3>\n\t\n\t<h1>\n\t\t82%\n\t</h1>\n\t\n\t<a href=\"patterns.html\">Click here to learn more.</a>\n</center>\n\n<hr/>\n\n<h2>\n\tTramway SDK now ships applications\n</h2>\n\n<hr/>\n\n<p>\n\tTramway SDK has now been used on actual, shipping applications. You can't\n\tsay that about 99% of other graphics engines, since they don't ship. Like\n\tdon't ship. Ever. Never will ship either.\n</p>\n\n<p>\n\tWe have compiled a list of the shipped projects:\n</p>\n\n<ul>\n\t<li><a target=\"_blank\" href=\"https://kaimlatechnology.com/saas/\">Greeting Cards</a></li>\n\t<li><a target=\"_blank\" href=\"https://kaimlatechnology.com/sea/\">Undersea Simulation</a></li>\n\t<li><a target=\"_blank\" href=\"https://store.steampowered.com/app/3941230/Milk_Racing/\">Milk Racing</a> (coming soon)</li>\n</ul>\n\n<hr/>\n\n<h2>\n\tWhy we use use sphere maps instead of cubemaps\n</h2>\n\n<hr/>\n\n<p>\n\t<i>Big Engine</i> wants you to think that cubemaps are superior to sphere\n\tmaps and that sphere mapping is obsolete. Nothing could be further from the\n\ttruth.\n</p>\n\n<p>\n\t<i>They</i> keep insisting that sphere maps supposedly suffer from\n\t<a href=\"https://en.wikipedia.org/wiki/Cube_mapping\">&laquo;image\n\tdistortion&raquo;, &laquo;viewpoint\tdependency&raquo; and\n\t&laquo;computational inefficiency&raquo;</a>. This is demonstrably false.\n</p>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/shiny.png\">\n\t\t<img border=\"0\" src=\"images/posts/shiny.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tWhere's the image distortion? It's a perfect reflection!\n\t</i>\n</center>\n\n<br/>\n\n<p>\n\tSphere maps might have been viewport dependent in the 1980s, but since at\n\tleast 1998(!) there\thave existed\n\t<a href=\"https://dl.acm.org/doi/10.1145/285305.285310\">techniques</a> that\n\tcan overcome this limitation by using a single <code>if()</code> statement.\n</p>\n\n<p>\n\tConsider the standard approach to sampling a cubemap:\n</p>\n\n<code class=\"codeexample\">\nauto sample_cubemap = [=](vec3 nrm) {\n\tchar* image = nullptr;\n\tfloat axis; vec2 uv;\n\n\tvec3 abs = glm::abs(nrm);\n\n\tbool x_positive = nrm.x > 0;\n\tbool y_positive = nrm.y > 0;\n\tbool z_positive = nrm.z > 0;\n\n\tif (z_positive\n\t\t\t&&abs.z >=abs.x && abs.z >= abs.y) {\n\t\timage = front;\n\t\tuv.x = nrm.x;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.z;\n\t} else if (!x_positive\n\t\t\t&& abs.x >= abs.y && abs.x >= abs.z) {\n\t\timage = left;\n\t\tuv.x = nrm.z;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.x;\n\t} else if (x_positiv\n\t\t\t&& abs.x >= abs.y && abs.x >= abs.z) {\n\t\timage = right;\n\t\tuv.x = -nrm.z;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.x;\n\t} else if (!z_positive\n\t\t\t&& abs.z >= abs.x && abs.z >= abs.y) {\n\t\timage = back;\n\t\tuv.x = -nrm.x;\n\t\tuv.y = nrm.y;\n\t\taxis = abs.z;\n\t} else if (y_positive\n\t\t\t&& abs.y >= abs.x && abs.y >= abs.z) {\n\t\timage = top;\n\t\tuv.x = nrm.x;\n\t\tuv.y = -nrm.z;\n\t\taxis = abs.y;\n\t}  else if (!y_positive\n\t\t\t&& abs.y >= abs.x && abs.y >= abs.z) {\n\t\timage = bottom;\n\t\tuv.x = nrm.x;\n\t\tuv.y = nrm.z;\n\t\taxis = abs.y;\n\t}\n\n\tuv = 0.5f * (uv / axis + 1.0f);\n\n\tif (!image) {\n\t\treturn std::tuple&lt;char,\n\t\t\t\t\t\t\tchar,\n\t\t\t\t\t\t\tchar&gt;{uv.y * 255.0f,\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\tuv.x * 255.0f};\n\t}\n\n\treturn get_pixel(image, uv);\n};\n</code>\n\n<p>\n\tNot only is it whole 47(!) lines of code, it contains 6 <code>if/else</code>\n\tstatements. Remember that shaders can't execute those and only those\n\t<code>if/else</code> statements which evaluate to a <code>true</code> value.\n\tInstead they will always execute every single branch and will throw\n\taway the results of the <code>false</code> branches.\n</p>\n\n<p>\n\tNow consider our implementation of sphere map sampling code:\n</p>\n\n<code class=\"codeexample\">\nvec2 sphere_map_coords = vec2(normal.x * 0.25 + 0.25,\n\t\t\t\t\t\t\tnormal.y * 0.5 + 0.5);\nif (normal.z > 0.0) sphere_map_coords.x += 0.5;\n</code>\n\n<p>\n\tOnly 2(!) lines of code with a single <code>if/else</code> that the compiler\n\tcan optimize away to a single conditional move operation, resulting in\n\tessentially no branching.\n</p>\n\n<p>\n\tNow consider the fact that cubemaps consist of the 6 square sides of a cube.\n\tA lot of GPUs support only textures with sizes that are a power of two. If\n\tyou put these 6 sides of a cube into a single texture, you will waste 25% of\n\tthe space in the texture.\n</p>\n\n<p>\n\tSphere maps leave only 21% of space empty. If you use a slightly different\n\tprojection (paraboloid), you can reduce this number to 0%.\n</p>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/wastedspace.png\">\n\t\t<img border=\"0\" src=\"images/posts/wastedspace.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tCubemaps waste space.\n\t</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/potentiallyusable.png\">\n\t\t<img border=\"0\" src=\"images/posts/potentiallyusable.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tSphere maps fit perfectly.\n\t</i>\n</center>\n\n<p>\n\tWithout a doubt, the push from <i>Big Engine</i> to use cubemaps is\n\tintentionally intended use up more RAM and GPU processing time to force\n\tusers to purchase more expensive GPUs.\n</p>\n\t\n<p>\n\tWe strongly encourage that you do not believe the lies and misinformation\n\tspread by <i>Big Engine</i> and instead do your own research.\n</p>\n\n<h2>\n\tVery large open world project\n</h2>\n\n<hr/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/posts/verylarge.png\">\n\t\t<img border=\"0\" src=\"images/posts/verylarge.gif\"/>\n\t</a>\n\t<br/>\n\t<i>\n\t\tRendering a lot of 3D models.\n\t</i>\n</center>\n\n<p>\n\tMaking 3D models and placing them in the world. Will do a first pass and\n\tthen set up streaming.\n</p>\n\n<p>\n\tCurrently very slow performance due to a lot of draw calls. But could be\n\tbecause of Intel HD 4000 being bad. Will need to optimize.\n</p>\n"
  },
  {
    "path": "docs/src/learn/3dmodeling.html",
    "content": "<!-- PAGE_TITLE: Adding 3D models | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tAdding 3D models\n</h1>\n\n<hr/>\n\n<p>\n\tAfter becoming experts in the coloring of teapots, how about we replace the\n\tteapot model with something else?\n</p>\n\n<p>\n\tFirst of all, make sure that you have\n\t<a target=\"_blank\" href=\"http://blender.org\">Blender</a> either installed or\n\tdownloaded. After that, install the <code>tram_dynamic_obj_export.py</code>\n\tplugin which can be found in the <code>/devtools/exporters</code> directory\n\tin the main Tramway SDK repository.\n</p>\n\n<p>\n\tIf you have problems, or need a more detailed guide, take a look at the\n\t<a href=\"../documentation/blender.html\">exporter plugin</a> documentation\n\tpage.\n</p>\n\n<h2>\n\tCreating and exporting a monkey\n</h2>\n\n<hr/>\n\n<h4>\n\tStep 1: Create the monkey\n</h4>\n\n<p>\n\tLook at the top bar. Locate the <i>Add</i> button. Then perform the\n\t<i>Add</i> &raquo; <i>Mesh</i> &raquo; <i>Monkey</i> selection. A monkey\n\tshould appear in your Blender window.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport1.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport1.gif\"/>\n\t</a><br/>\n\t<i>This is where you find the monkey button.</i>\n</center>\n\n<h4>\n\tStep 2: Give the monkey a new material\n</h4>\n\n<p>\n\tNext we need to give the monkey a material. Add a material in the selection\n\ton the right side of the screen.\n</p>\n\n<center>\n\t<img src=\"monkeyexport2.gif\"/><br/>\n\t<i>This is where the new material button is.</i>\n</center>\n\n<p>\n\tLet's give the monkey the same material as the teapot. Rename the new\n\tmaterial to <code>teapot</code>.\n</p>\n\n<center>\n\t<img src=\"monkeyexport3.gif\"/><br/>\n\t<i>You can click on the name of the material to edit it.</i>\n</center>\n\n<h4>\n\tStep 3: Export!\n</h4>\n\n<p>\n\tFirst, make sure that the monkey object is still selected. Now look at the\n\ttop bar. Locate the <i>Add</i> button. Then perform the\n\t<i>File</i> &raquo; <i>Export</i> &raquo; <i>Tram Dynamic Exporter</i> selection. A file\n\tdialog should appear.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport4.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport4.gif\"/>\n\t</a><br/>\n\t<i>This is where you find the exporters.</i>\n</center>\n\n<p>\n\tYou will need to save the monkey to the <code>/data/models/</code>\n\tdirectory, so that the framework can find it. You don't have to name it\n\t<code>monkey.dymdl</code>, just remember to keep the file extension and to\n\tnot put any spaces in the file name.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"monkeyexport5.jpg\">\n\t\t<img border=\"0\" src=\"monkeyexport5.gif\"/>\n\t</a><br/>\n\t<i>The big blue button. It does the export.</i>\n</center>\n\n<h2>\n\tReplacing the teapot with a monkey\n</h2>\n\n<hr/>\n\n<p>\n\tNow we just need to swap out the teapot for the monkey. Change this line of\n\tcode:\n</p>\n\n<code>\n\t<del>teapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"teapot\"</span>)</del><br/>\n\tteapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"monkey\"</span>)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"monkeyfail.gif\"/><br/>\n\t<i>It appears that we are inside a monkey.</i>\n</center>\n\n<p>\n\tIt appears that the default Blender monkey is much larger than our teapot.\n\tLet's resize the monkey, so that we can better appreciate it:\n</p>\n\n<code>\n\tteapot:<span class=\"codefunc\">SetScale</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.5</span>, <span class=\"codelit\">0.5</span>, <span class=\"codelit\">0.5</span>))<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"monkeyexplorer.gif\"/><br/>\n\t<i>It is much easier to appreciate the monkey from the outside.</i><br/>\n\t<br/>\n</center>\n\n<h2>\n\tHow to texture a teapot\n</h2>\n\n<hr/>\n\n<p>\n\tGoing back into Blender, create another model. Maybe it will be another\n\tmonkey, maybe you will use Blender's teapot generation capabilities, or\n\tperhaps you will create your own.\n</p>\n\n<p>\n\tNow comes the difficult part. Open up\n\t<a target=\"_blank\" href=\"http://tuxpaint.org\">Tuxpaint</a> or some other\n\timage editing program and create a texture. It's best if you use an image\n\tsize which is powers of two, i.e. 32x32, 128x128, 256x128, etc.\n</p>\n\n<p>\n\tOnce it's done, save it in the <code>/data/textures/</code> directory. I \n\tdecided to name it <code>mybestwork.png</code>.\n</p>\n\n<center>\n\t<img src=\"creatingmybestwork.gif\"/><br/>\n\t<i>I am very proud of how this turned out.</i>\n</center>\n\n<p>\n\tBack in Blender, create the material the same way we did before. This time,\n\tmake sure that you give it the same name as you gave that texture image.\n\tOnce you do that, in the same material pane you should see a <i>Base\n\tColor</i> selection. Click on that and select <i>Image Texture</i>. Now\n\tclick on <i>Open</i> and find that image.\n</p>\n\n<p>\n\tThe last thing left to do is to finish up the UVs. Enter edit mode by \n\tpressing the <code>Tab</code> key. Select all of the model by pressing\n\t<code>Ctrl+A</code>. Click on the <i>UV</i> button in the top bar and then\n\tselect <i>Sphere Projection</i> or some othertexture projection. Not use\n\t<code>Tab</code> to get back into object mode and perform the export as\n\tbefore.\n</p>\n\n<p>\n\tChange the init script to load the new 3D model.\n</p>\n\n<center>\n\t<img src=\"mybestwork.gif\"/><br/>\n\t<i>My favorite teapot.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tIf you don't know how to already, learn to use Blender.\n\t</p>\n\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tCreate a 3D model with several different textures. Load it into the \n\t\tteapot viewer.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"scripting.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"materials.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/animations.html",
    "content": "<!-- PAGE_TITLE: Adding Animations | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Adding Animations</h1>\n\n<p>\n\tFirst, make sure that you have installed the\n\t<a href=\"../documentation/blender.html\">Blender animation exporter\n\tplugin</a>. Next up, create a 3D model of something, create an armature for\n\tit and rig it.\n</p>\n\n\n<div class=\"infobox\">\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTramway SDK only allows 4 bones to influence a single vertex. Take this\n\t\tinto account when vertex weight painting. If the exporter sees that a\n\t\tsingle vertex has weights for more than 4 bones, it will pick only 4 of\n\t\tthe vertex groups that have the greatest weight for export.\n\t</p>\n</div>\n\n<p>\n\tFor the animations, you will need to open the Blender's <i>Action\n\tEditor</i>. Each exported animation will be a single action.\n</p>\n\n<p>\n\tWhen creating an animation, make sure that each bone that will be animated\n\thas a keyframe at frame zero and another keyframe at the end of the\n\tanimation, on whichever frame you decide to put it.\n</p>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tUse only <i>LocRotScale</i> keyframes, otherwise the exporter will\n\t\texplode and your computer will catch on fire. This might be fixed \n\t\tsometime in the future.\n\t</p>\n\t\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTramway SDK only uses linear interpolation, so make sure to set it in \n\t\tyour keyframes, so that you see the animation in Blender just like it\n\t\twill look like when rendered by the framework.\n\t</p>\n\t\n\t<h3>\n\t\tNote\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tSince animations are resources with names, do not use a name with any\n\t\tspaces for your action name.\n\t</p>\n</div>\n\n<p>\n\tAfter the animation or animations are finished, select\n\t<i>File</i> &raquo; <i>Export</i> &raquo; <i>Tram Animation Exporter</i>\n\toption. In the file dialog, navigate to <code>/data/animations/</code>\n\tdirectory and click the <i>Export Tram Animation</i> button.\n</p>\n\n<p>\n\tEach Blender action will get saved into its own animation file.\n</p>\n\n<p>\n\tIf you want an example of a rigged 3D model and an animation, take a look at\n\tthe <code>/assets/toilet.blend/</code> file.\n</p>\n\n<h2>\n\tPlaying the animation\n</h2>\n\n<hr/>\n\n<p>\n\tFirst, set up the 3D model.\n</p>\n\n<code>\n\ttoilet = tram.components.<span class=\"codefunc\">Render</span>()<br/>\n\ttoilet:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"toilet\"</span>)<br/>\n\ttoilet:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tThen, let's load the Animation which we created.\n</p>\n\n<code>\n\tanimation = tram.render.animation.<span class=\"codefunc\">Find</span>(<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codelit\">\"toilet-lid-open-close\"</span>)<br/>\n\tanimation:<span class=\"codefunc\">Load</span>()\n</code>\n\n<p>\n\tNext, let's set up the\n\t<a href=\"../documentation/components/animation.html\">AnimationComponent</a>,\n\twhich will be playing our animation.\n</p>\n\n<code>\n\tarmature = tram.components.<span class=\"codeclass\">Animation</span>()<br/>\n\tarmature:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"toilet\"</span>)<br/>\n\tarmature:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tAfter both the Render and the Animation components have been initialized, we\n\tcan link them together.\n</p>\n\n<code>\n\ttoilet:<span class=\"codefunc\">SetArmature</span>(armature)\n</code>\n\n<p>\n\tFinally, we can play back the Animation on the AnimationComponent, which\n\twill be visible on the RenderComponent, to which we linked it to.\n</p>\n\n<code>\n\tarmature:<span class=\"codefunc\">Play</span>(<span class=\"codelit\">\"toilet-lid-open-close\"</span>)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"animatedtoilet.gif\"/><br/>\n\t<i>Animation being played on a 3D model.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tThe example above shows only the most basic animation playback option.\n\t\tTry changing the animation playback parameters. Try pausing, continuing\n\t\tand stopping animations. Fade them in and fade them out.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"materials.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"pingpong.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/cake.html",
    "content": "<!-- PAGE_TITLE: Making a cake simulator | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Making a cake simulator</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"platforms.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<!--<td class=\"right\"><a href=\"structure.html\">Next</a> &raquo;</td>-->\n\t\t<td class=\"right\"></td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/cameras.html",
    "content": "<!-- PAGE_TITLE: Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Platforms and stuff</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"walking.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"platforms.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/getstarted.html",
    "content": "<!-- PAGE_TITLE: Getting started | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Getting started</h1>\n\n<hr/>\n\n<p>\n\tIf you already know how to C++ and are very good at it, you should be able\n\tto compile the code that can be found in the Tramway SDK repository.\n</p>\n\t\n<p>\n\tThis article will cover the usage of the framework for beginners who are\n\teither scared of C++ or just bad at it. I tried to create the LUA scripting\n\tAPI in a way that is very close to the underlying C++ API, so after you\n\tovercome your fear of C++ or get better at it, you should be able to switch\n\tto it rather easily.\n</p>\n\n<p>\n\tBefore starting, evaluate yourself and make sure that you possess the\n\tfollowing qualities:\n</p>\n\n<ul>\n\t<li>Good computer skills;</li>\n\t<li>Decent programming skills;</li>\n\t<li>Basic maths;</li>\n\t<li>Knowledge of game engine concepts.</li>\n</ul>\n\t\n<p>\n\tIf you do not meet these requirements, consider visiting your local public\n\tlibrary, signing up for computer literacy courses or finishing your \n\tsecondary education (if applicable).\n</p>\n\n<h3>Setting up your workspace</h3>\n\n<hr/>\n\n<p>\n\tBefore beginning, it would be worthwhile to set up your virtual workspace.\n\tMy personal preference is to dump everything into a directory located on\n\tmy <code>Desktop</code> on Windows or in my <code>home</code> directory\n\ton Linux.\n</p>\n\n<p>\n\tDecide where you will put your workspace directory and create it. Name it\n\tsomething descriptive, like <code>tramsdk</code>, <code>projects</code>,\n\t<code>my_games</code> or <code>IMPORTANT</code>. Customize the icon. Add a\n\tshortcut to your start menu or a start menu equivalent.\n</p>\n\n<p>\n\tNext up, you will need to acquire the framework source code. Even if you use\n\tpre-built binaries, the source code repository contains many useful Python\n\tscripts.\n</p>\n\n<p>\t\n\tDownload the <a href=\"https://github.com/racenis/tram-sdk\">\n\trepository</a>, either as a .zip file from the Github web interface, or\n\tclone it through the git program. After that, download the\n\t<a href=\"https://github.com/racenis/tram-template\">template\trepository</a>,\n\tjust like you downloaded the main framework repository.\n</p>\n\n<h3>Creating your first app.</h3>\n\n<hr/>\n\n<p>\n\tCopy the directory and name it something descriptive, like\n\t<code>my-app</code>. You will probably do this every time\n\tyou create a new app using the framework. Navigate into this directory.\n</p>\n\n<p>\n\tIf you're using Windows, then the template repository already contained\n\tbinaries for you. On Linux, you should take a look at the contents of the\n\t<code>maketool.ini</code> file. Try running <code>maketool.py</code> found\n\tin the <code>devtools</code> directory of the main framework repository,\n\twhile having this directory as the working directory. If you are using\n\tLinux, then you're probably very clever, you should be able to figure this \n\tout.\n</p>\n\n<p>\n\tThe executable of the app is named <code>template.exe</code>, you might want\n\tto rename it. Double-click on it or run it through command line and a window\n\twith a teapot should appear. You can rotate the teapot by pressing the\n\tarrow keys on your keyboard.\n</p>\n\n<center>\n\t<img src=\"teapotexplorer.gif\"/><br/>\n\t<i>This is what you should be seeing.</i>\n</center>\n\n<p>\n\tIf a window does not appear, check if your monitor is plugged in and turned\n\ton. Many users make this simple mistake.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"whatis.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"structure.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/materials.html",
    "content": "<!-- PAGE_TITLE: Adding Materials | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Adding Materials</h1>\n\n<hr/>\n\n<p>\n\tIf you followed the last guide and made your own teapot, you might have\n\tnoticed that the teapot is not shiny. Not shiny at all! Also the texture\n\twas pixelated. Very pixelated!\n</p>\n\n<p>\n\tThe reason for this is very simple &ndash; by default all materials are\n\tmatte and not at all shiny. However, we can override this behavior by adding\n\ta material definition ourselves, instead of letting the framework create a\n\tdefault one.\n</p>\n\n<p>\n\tOpen up the <code>/data/material.list</code> file in a text editor. What you\n\twill notice is a table of material definitions. Somewhere near the end you\n\tshould find the <code>teapot</code> material that we gave the monkey 3D\n\tmodel.\n</p>\n\n<h2>\n\tWhat do all of the values do?\n</h2>\n\n<hr/>\n\n<h4>\n\tMaterial name\n</h4>\n\n<p>\n\tThis is the name of the material. It is used to reference it, such as by 3D\n\tmodels. It is also used to lookup the texture image for the material.\n</p>\n\n<h4>\n\tType\n</h4>\n\n<p>\n\tThis tells the renderer how to render the material. For the OpenGL backend\n\tthis also determines which shader will be used to render this material.\n</p>\n\n<h4>\n\tFilter\n</h4>\n\n<p>\n\tThis tells the renderer whether to blur the textures when upscaling them.\n\tThis is why they look pixelated &endash; by default blurring is disabled.\n</p>\n\n<h4>\n\tProperty\n</h4>\n\n<p>\n\tThis describes aural and other physical properties about the material. This\n\tis not directly used by the renderer. We can ignore this for now.\n</p>\n\n<h4>\n\tColor\n</h4>\n\n<p>\n\tThis is the color of the material. You might have noticed that a lot of \n\tmaterials have the white color. This is because if you use a texture image\n\tand if you want it to look exactly it looks in your image editor, you need\n\tto set it to white, since the material color and the texture color is\n\tmultiplied together. Changing this will tint the texture image, or just set\n\tthe material's color if there is no texture.\n</p>\n\n<h4>\n\tSpecularity\n</h4>\n\n<p>\n\tThis determines how intense the specularity of the material will be. Can be\n\tset in the range from 0.0 to 1.0.\n</p>\n\n<h4>\n\tSpecularity\n</h4>\n\n<p>\n\tThis determines how narrow or wide the specular reflection will be. Needs to\n\tbe set to at least 1.0 or higher.\n</p>\n\n<h4>\n\tSpecular Transparency\n</h4>\n\n<p>\n\tThis determines whether the specular reflection will be multiplied with the\n\tmaterial's color, or added to it. Can be set in the range from 0.0 to 1.0.\n</p>\n\n<h4>\n\tSource\n</h4>\n\n<p>\n\tThis determines the source of the material's texture image. If set to\n\t<code>same</code>, the material's name will be used to lookup an image from\n\tthe <code>/data/materials</code>, directory. If set to <code>none</code>,\n\tthe material will have no texture and instead will use its color for\n\tdisplay. Finally, if this parameter is set to anything else, this will be\n\tinterpreted as the name of another material and this material will use the\n\tother's texture image.\n</p>\n\n<p>\n\tThis is useful if, for example, you want to create multiple materials with\n\tthe same texture, but with different specular, color or other parameters.\n\tThis way all of the materials will share the same texture image in GPU\n\tmemory, thereby saving some space there.\n</p>\n\n<h2>\n\tFixing the teapot material\n</h2>\n\n<hr/>\n\n<p>\n\tAn easy way to do this would be to duplicate the <code>teapot</code>\n\tmaterial's line in the file and to replace the material's name with you\n\tmaterial's name. Also don't forget to change the source from\n\t<code>none</code> to <code>same</code>. Perhaps also change the transparency\n\tfrom <code>0.0</code> to <code>1.0</code>, to make the teapot look less\n\tmetallic.\n</p>\n\n<center>\n\t<img src=\"mybestworkfixed.gif\"/><br/>\n\t<i>My best work: now shiny again.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tTry changing your teapot's material's properties. See what changing them\n\t\tto different values does.\n\t</p>\n\t\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tUse the texture source option and the color parameter to create\n\t\tdifferent colored variations of your material.\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"3dmodeling.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"animations.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/physics.html",
    "content": "<!-- PAGE_TITLE: Physics | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Physics</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"pingpong.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"render.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/pingpong.html",
    "content": "<!-- PAGE_TITLE: Making Ping Pong | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Making Ping Pong</h1>\n\n<p>\n\tFirst of all, we will be using debug lines. Debug lines are drawn on layer 1\n\tand up to this point we have been using layer 0, which is the default layer\n\tfor RenderComponents.\n</p>\n\n<p>\n\tBy default, when calling <code>tram.render.SetViewPosition()</code>, it will\n\taffect the view position in the layer 0, so for the debug lines to appear\n\tcorrectly, we will need to set the view in the layer 1 as well.\n</p>\n\n<code>\n\tlocal view_pos = tram.math.DIRECTION_FORWARD * -3.0<br/>\n\t<br/>\n\ttram.render.SetViewPosition(view_pos, 0)<br/>\n\ttram.render.SetViewPosition(view_pos, 1)<br/>\n</code>\n\n<p>\n\tMost ping pongy games are 2D, but Tramway SDK uses 3D graphics. How do we\n\treconciliate this? The easiest way would be to just disregard the Z axis.\n\tWhenever we need to pass in a Vec3, we will set the third component to 0.0.\n</p>\n\n<p>\n\tLet's set up the ball and the paddles.\n</p>\n\n<code>\n\tball = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(0.0, 0.0, 0.0),<br/>\n\t&nbsp;&nbsp;velocity = tram.math.vec3(0.02, 0.02, 0.0)<br/>\n\t}<br/>\n\t<br/>\n\tpaddle_left = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(-2.0, 0.0, 0.0)<br/>\n\t}<br/>\n\t<br/>\n\tpaddle_right = {<br/>\n\t&nbsp;&nbsp;position = tram.math.vec3(2.0, 0.0, 0.0)<br/>\n\t}<br/>\n</code>\n\n<p>\n\tWe'll set up the playing field so that the left and right borders are on the\n\t-2.0 and 2.0 X coordinates respectively and top and bottom are on the -1.0\n\tand 1.0 Y coordinates respectively.\n</p>\n\n<p>\n\tThe paddles will be moving along the left and the right sides of the field.\n\tThe ball will start in the middle. We also give it a starting velocity.\n</p>\n\n<p>\n\tWhen drawing lines using the debug line functions, we need to call these\n\tfunctions every frame. Up until now we have been using the Tick event\n\thandler to drive the logic. Tick events get emitted at regular intervals,\n\tbut they might not be emitted for every frame. That's why we will be putting\n\tall of the rendering related code in the event handler for the Frame event.\n</p>\n\n<p>\n\tLet's draw the field first.\n</p>\n\n<code>\n\tlocal corner1 = tram.math.vec3(-2.0, 1.0, 0.0)<br/>\n\tlocal corner2 = tram.math.vec3(2.0, 1.0, 0.0)<br/>\n\tlocal corner3 = tram.math.vec3(2.0, -1.0, 0.0)<br/>\n\tlocal corner4 = tram.math.vec3(-2.0, -1.0, 0.0)<br/>\n\t<br/>\n\tlocal midpoint1 = tram.math.vec3(0.0, 1.0, 0.0)<br/>\n\tlocal midpoint2 = tram.math.vec3(0.0, -1.0, 0.0)<br/>\n\t<br/>\n\tlocal color = tram.render.COLOR_WHITE<br/>\n\t<br/>\n\ttram.render.AddLine(corner1, corner2, color)<br/>\n\ttram.render.AddLine(corner2, corner3, color)<br/>\n\ttram.render.AddLine(corner3, corner4, color)<br/>\n\ttram.render.AddLine(corner4, corner1, color)<br/>\n\ttram.render.AddLine(midpoint1, midpoint2, color)<br/>\n</code>\n\t\n<p>\n\tHere we just define the corners of the field and use the debug line drawing functions to draw them. Let's draw the paddles next.\n</p>\n\n<code>\n\tlocal left_top = paddle_left.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(0.1, paddle_size, 0.0)<br/>\n\tlocal left_btm = paddle_left.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(0.1, -paddle_size, 0.0)<br/>\n\t<br/>\n\ttram.render.AddLine(left_top, left_btm, tram.render.COLOR_GREEN)<br/>\n\t<br/>\n\tlocal right_top = paddle_right.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(-0.1, paddle_size, 0.0)<br/>\n\tlocal right_btm = paddle_right.position<br/>\n\t&nbsp;&nbsp;+ tram.math.vec3(-0.1, -paddle_size, 0.0)<br/>\n\t<br/>\n\ttram.render.AddLine(right_top, right_btm,<br/>\n\t&nbsp;&nbsp;tram.render.COLOR_GREEN)<br/>\n</code>\n\n<p>\n\tHere we just calculate the top and bottom coordinates of the paddles, then\n\tdraw them. Also we push them into the field a bit, so that they don't get\n\tobscured by the lines that make up the sides of the field.\n</p>\n\n<p>\n\tYou can set the <code>paddle_size</code> to whatever size you want. I set it\n\tto 0.2.\n</p>\n\n<p>\n\tFinally, we draw the ball.\n</p>\n\n<code>\n\ttram.render.AddLineMarker(ball.position,<br/>\n\t&nbsp;&nbsp;tram.render.COLOR_RED)<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"pingpong1.gif\"/><br/>\n\t<i>Initial field setup.</i>\n</center>\n\n<p>\n\tLet's add the ability to move the paddles. This we should put in the Tick\n\tevent handler, since we want the paddles to move at a speed independently\n\tof the frame rate.\n</p>\n\n<code>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_UP) then<br/>\n\t&nbsp;&nbsp;if paddle_right.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ paddle_size &lt; 1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y + 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_DOWN) then<br/>\n\t&nbsp;&nbsp;if paddle_right.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- paddle_size &gt; -1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_right.position.y - 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_W) then<br/>\n\t&nbsp;&nbsp;if paddle_left.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ paddle_size &lt; 1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y + 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_S) then<br/>\n\t&nbsp;&nbsp;if paddle_left.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- paddle_size &gt; -1.0 then <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y =<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paddle_left.position.y - 0.05<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n</code>\n\n<p>\n\tI set it up so that the left paddle can be moved up and down by the W and S\n\tkeys respectively, and the right paddle can be moved up and down by the \n\tUp and Down arrow keys respectively.\n</p>\n\n<center>\n\t<img src=\"pingpong2.gif\"/><br/>\n\t<i>The paddles can be moved now.</i>\n</center>\n\n<p>\n\tLet's make the ball move as well.\n</p>\n\n<code>\n\tball.position = ball.position + ball.velocity<br/>\n\t<br/>\n</code>\n\n<center>\n\t<img src=\"pingpong3.gif\"/><br/>\n\t<i>The ball flies out of the field.</i>\n</center>\n\n<p>\n\tAdding collisions to the top and bottom sides of the field is very easy.\n</p>\n\n<code>\n\tif ball.position.y &lt; -1.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;or ball.position.y &gt; 1.0 then<br/>\n\t&nbsp;&nbsp;ball.velocity.y = -ball.velocity.y<br/>\n\tend<br/>\n</code>\n\t\n<p>\n\tAdding collisons to the left and right sides is a little bit more\n\tcomplicated, since we also have to take into account collisions with the\n\tpaddles.\n</p>\n\n<code>\n\tif ball.position.x &lt; -2.0 then<br/>\n\t&nbsp;&nbsp;local paddle_dist = math.abs(ball.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;- paddle_left.position.y)<br/>\n\t<br/>\n\t&nbsp;&nbsp;if paddle_dist &lt; paddle_size then<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.velocity.x = -ball.velocity.x<br/>\n\t&nbsp;&nbsp;else<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.x = 0.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.y = 0.0<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;player_right_score = player_right_score + 1<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Left lost!!\")<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Score is\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_left_score,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"|\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_right_score)<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n\t<br/>\n\tif ball.position.x &gt; 2.0 then<br/>\n\t&nbsp;&nbsp;local paddle_dist = math.abs(ball.position.y<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;- paddle_right.position.y)<br/>\n\t<br/>\n\t&nbsp;&nbsp;if paddle_dist &lt; paddle_size then<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.velocity.x = -ball.velocity.x<br/>\n\t&nbsp;&nbsp;else <br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.x = 0.0<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;ball.position.y = 0.0<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;player_left_score = player_left_score + 1<br/>\n\t<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Right lost!!\")<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;print(\"Score is\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_left_score,<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"|\",<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;player_right_score)<br/>\n\t&nbsp;&nbsp;end<br/>\n\tend<br/>\n</code>\n\t\n<p>\n\tWe also need to define the player score counters for this.\n</p>\n\n<code>\n\tplayer_left_score = 0<br/>\n\tplayer_right_score = 0<br/>\n</code>\n\n<p>\n\tAt this point, the gameplay logic is finished. We just have to add the 3D\n\tmodels. For the ball model, I decided to use the teapot model. For the \n\tpaddles I used the default Blender cube, with some bevels applied to the\n\tedges.\n</p>\n\n<center>\n\t<img src=\"pingpong4.gif\"/><br/>\n\t<i> How it looks like with the 3D models replacing the debug lines.</i>\n</center>\n\t\n<p>\n\tOne thing you might notice is that the 3D models are being drawn underneath\n\tthe debug lines. We can fix this by setting them to a higher layer.\n</p>\n\n<code>\n\tpaddle_model_left:SetLayer(1)<br/>\n\tpaddle_model_right:SetLayer(1)<br/>\n\t<br/>\n</code>\n\t\n<center>\n\t<img src=\"pingpong5.gif\"/><br/>\n\t<i>In motion.</i>\n</center>\n<p>\n\tIf you want to look at the full code, it is available in the\n\t<a href=\"https://github.com/racenis/tram-example\">example repository.</a>\n</p>\n\t\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"animations.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"physics.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/platforms.html",
    "content": "<!-- PAGE_TITLE: Platforms and stuff | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Platforms and stuff</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"cameras.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"cake.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/render.html",
    "content": "<!-- PAGE_TITLE: Render | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Render</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"physics.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"world.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/scripting.html",
    "content": "<!-- PAGE_TITLE: Basic scripting | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tBasic scripting\n</h1>\n\n<hr/>\n\n<p>\n\tIn order to follow this guide, you might need the following:\n</p>\n\n<ul>\n\t<li>\n\t\tBasic computer programming skills\n\t</li>\n\t<ul>\n\t\t<li>\n\t\t\tPrevious experience in object-oriented programming will prove to be\n\t\t\tvery useful\n\t\t</li>\n\t</ul>\n\t<li>\n\t\tBasic understanding of Lua or other Pascal-derived languages\n\t</li>\n\t<li>\n\t\tGeneral understanding of how game engines and similar software works\n\t</li>\n</ul>\n\n<h2>\n\tReminder about Lua syntax\n</h2>\n\n<hr/>\n\n<p>\n\tAnyway, here's a small reminder of how Lua works.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- this is a comment</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- creating a global variable</span><br/>\n\tnumber_first = <span class=\"codelit\">420</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- creating a local variable</span><br/>\n\t<span class=\"codekeyw\">local</span> number_second = <span class=\"codelit\">69</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- printing stuff to the console</span><br/>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">420</span> + <span class=\"codelit\">69</span>)<br/>\n\t<br/>\n\t<span class=\"codecomm\">-- Lua only has if/else statements. no switches</span><br/>\n\t<span class=\"codekeyw\">if</span> <span class=\"codelit\">420</span> == <span class=\"codelit\">69</span> <span class=\"codekeyw\">then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">elseif</span> <span class=\"codelit\">420</span> + <span class=\"codelit\">69</span> == <span class=\"codelit\">489</span> <span class=\"codekeyw\">then</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">else</span><br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codecomm\">-- ...</span><br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- function</span><br/>\n\t<span class=\"codekeyw\">function</span> <span class=\"codefunc\">add_special_number</span>(x)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> x + <span class=\"codelit\">420</span><br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- Lua has tables, which are similar to</span><br/>\n\t<span class=\"codecomm\">-- JavaScript objects. they function as</span><br/>\n\t<span class=\"codecomm\">-- dynamic dictionaries, arrays, as objects</span><br/>\n\t<span class=\"codecomm\">-- with methods, etc.</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- array</span><br/>\n\tarray = {}<br/>\n\tarray[<span class=\"codelit\">1</span>] = <span class=\"codelit\">420</span><br/>\n\tarray[<span class=\"codelit\">2</span>] = <span class=\"codelit\">69</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- dynamic dictionary</span><br/>\n\tdict = {}<br/>\n\tdict[<span class=\"codelit\">\"hello\"</span>] = <span class=\"codelit\">\"world\"</span><br/>\n\t<span class=\"codecomm\">-- identical to previous statement</span><br/>\n\tdict.hello = <span class=\"codelit\">\"world\"</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- object</span><br/>\n\tobject = {}<br/>\n\tobject.number = <span class=\"codelit\">420</span><br/>\n\tobject.add = <span class=\"codekeyw\">function</span>(self, x)<br/>\n\t&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"codekeyw\">return</span> self.number + x<br/>\n\t<span class=\"codekeyw\">end</span><br/>\n\t<br/>\n\t<span class=\"codecomm\">-- if using the colon symbol, you can</span><br/>\n\t<span class=\"codecomm\">-- call the method and the self parameter</span><br/>\n\t<span class=\"codecomm\">-- will be filled in automatically</span><br/>\n\tnumber = object:<span class=\"codefunc\">add</span>(<span class=\"codelit\">69</span>)<br/>\n\t<br/>\n</code>\n\n<h2>\n\tWhat does the init script do?\n</h2>\n\n<hr/>\n\n<p>\n\tFirst, let's go through the <code>init.lua</code> file and see what it does.\n\tIt can be found in the <code>/scripts/</code> directory in the project\n\ttemplate.\n</p>\n\n<code>\n\t<span class=\"codefunc\">print</span>(<span class=\"codelit\">\"\\n\\nHello! [...]\\n\"</span>)<br/>\n\t<span class=\"codecomm\">-- ...</span>\n</code>\n\n<p>\n\tThis part just prints some text to the console.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Retitling the main window.</span><br/>\n\ttram.ui.<span class=\"codefunc\">SetWindowTitle</span>(<span class=\"codelit\">\"Teapot Explorer v1.0\"</span>)<br/>\n\ttram.ui.<span class=\"codefunc\">SetWindowSize</span>(<span class=\"codelit\">640</span>, <span class=\"codelit\">480</span>)\n</code>\n\n<p>\n\tThis part sets the title of the window, which is opened automatically on\n\tprogram start. It also sets the size of the window.\n</p>\n\n\n<code>\n\t<span class=\"codecomm\">-- Setting up the global lighting.</span></span><br/>\n\ttram.render.<span class=\"codefunc\">SetSunColor</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>))<br/>\n\ttram.render.<span class=\"codefunc\">SetSunDirection</span>(tram.math.DIRECTION_FORWARD)<br/>\n\t<span class=\"codekeyw\">local</span> ambient = tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.1</span>, <span class=\"codelit\">0.1</span>, <span class=\"codelit\">0.1</span>)<br/>\n\ttram.render.<span class=\"codefunc\">SetAmbientColor</span>(ambient)<br/>\n\ttram.render.<span class=\"codefunc\">SetScreenClearColor</span>(tram.render.COLOR_BLACK)<br/>\n</code>\n\n<p>\n\tThis section will set up the scene lighting. All of these functions accept\n\ta <code>vec3</code> table. The <code>tram.math.vec3(x, y, z)</code> function\n\tconstructs a <code>vec3</code> table.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Move the camera a bit away from the origin.</span><br/>\n\t<span class=\"codekeyw\">local</span> position = tram.math.DIRECTION_FORWARD * <span class=\"codelit\">-1.2</span><br/>\n\ttram.render.<span class=\"codefunc\">SetViewPosition</span>(position)\n</code>\n\n<p>\n\tBy default, all new 3D models get created at the origin, which is the \n\tcoordinates <code>(0.0, 0.0, 0.0)</code>. The view also starts at this\n\tposition, so we move it a bit back, so that it doesn't end up in the teapot.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Setting up a light so that you can see something.</span><br/>\n\tscene_light = tram.components.<span class=\"codeclass\">Light</span>()<br/>\n\tscene_light:<span class=\"codefunc\">SetColor</span>(tram.render.COLOR_WHITE)<br/>\n\tscene_light:<span class=\"codefunc\">SetLocation</span>(tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">5.0</span>, <span class=\"codelit\">5.0</span>, <span class=\"codelit\">5.0</span>))<br/>\n\tscene_light:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tSince the previous bit of code set the directional light's color to zero, it\n\twon't contribute to the scene's illumination, so here we create a \n\t<a href=\"../documentation/components/light.html\">light</a>, so that you can\n\tactually see the teapot.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- Adding a teapot to the scene.</span><br/>\n\tteapot = tram.components.<span class=\"codeclass\">Render</span>()<br/>\n\tteapot:<span class=\"codefunc\">SetModel</span>(<span class=\"codelit\">\"teapot\"</span>)<br/>\n\tteapot:<span class=\"codefunc\">Init</span>()\n</code>\n\n<p>\n\tFinally, we add the \n\t<a href=\"../documentation/components/render.html\">3D model</a> of the teapot\n\tto the scene.\n</p>\n\n<code>\n\t<span class=\"codecomm\">-- This vector here will contain teapot euler angle rotation in radians.</span><br/>\n\t<span class=\"codekeyw\">local</span> teapot_modifier = tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>, <span class=\"codelit\">0.0</span>)\n</code>\n\n<p>\n\tIn order to rotate the teapot, we need to set up its initial rotation.\n</p>\n\n<pre class=\"max-width:350px;overflow:hidden;\">\n<span class=\"codecomm\">-- This function will be called every tick.</span>\ntram.event.<span class=\"codefunc\">AddListener</span>(tram.event.TICK, <span class=\"codekeyw\">function</span>()\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_LEFT)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_A) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t - tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n  \n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_RIGHT)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_D) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t + tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_UP)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_W) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t - tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  <span class=\"codekeyw\">if</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_DOWN)\n   <span class=\"codekeyw\">or</span> tram.ui.<span class=\"codefunc\">PollKeyboardKey</span>(tram.ui.KEY_S) <span class=\"codekeyw\">then</span>\n    teapot_modifier = teapot_modifier\n\t + tram.math.<span class=\"codeclass\">vec3</span>(<span class=\"codelit\">0.01</span>, <span class=\"codelit\">0.0</span></span>, <span class=\"codelit\">0.0</span>)\n  <span class=\"codekeyw\">end</span>\n\t\n  teapot:<span class=\"codefunc\">SetRotation</span>(tram.math.<span class=\"codeclass\">quat</span>(teapot_modifier))\n<span class=\"codekeyw\">end</span>)\n</pre>\n\n<p>\n\tWe need to execute the rotation logic during runtime. A good way to do it is\n\tto add an\n\t<a href=\"../documentation/framework/event.html#listener\">Event Listener</a>\n\tand set it to listen to the \n\t<a href=\"../documentation/framework/event.html#tick\">Tick</a> event, which\n\tis emitted at regular intervals.\n</p>\n\n<p>\n\tThe code for the logic itself will check if the arrow keys are being\n\tpressed, and if they are, it will modify the rotation of the teapot. After\n\tall of the keys are checked and a new rotation is computed, it is assigned\n\tto the teapot's 3D model.\n</p>\n\n<p>\n\tSince all rotations use quaternions, we can pass the\n\t<code>tram.math.quat()</code> quaternion constructor a <code>vec3</code>,\n\twhich will be interpreted as a vector containing euler angles, i.e. the\n\trotations around the x, y and z axis.\n</p>\n\n<h2>\n\tTeapot coloring.\n</h2>\n\n<hr/>\n\n<p>\n\tThe default white teapot color is rather uninteresting. Let's change it to\n\tsomething more interesting.\n</p>\n\n<p>\n\tAdd this line of code somewhere after the <code>teapot</code> variable is\n\tinitialized:\n</p>\n\n<code>\nteapot:<span class=\"codefunc\">SetColor</span>(tram.render.COLOR_PINK)\n</code>\n\n<p>\n\tAll of the color definitions are just <code>vec3</code>s, so we can pass\n\tthem in as the colors. The only thing to remember is that each color value\n\tneeds to be in the range from 0.0 to 1.0.\n</p>\n\n<center>\n\t<img src=\"teapotpink.gif\"/><br/>\n\t<i>The teapot has been colored pink.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tLook up the hex or integer color values for your favorite color. Convert\n\t\tthem into the range from 0.0 to 1.0 for each color channel and assign them\n\t\tto the teapot.\n\t</p>\n\n\t<p>\n\t\tAt this point, you are probably very proud of your teapot coloring skills.\n\t\tPress the <code>F12</code> key on your keyboard. This will save a screenshot\n\t\tof the teapot in your project directory. Print it out and mail it to your\n\t\tfriends!\n\t</p>\n</div>\n\t\n<p>\n\tLet's try doing something more interesting with the colors. Place these\n\tlines of code somewhere in the update function:\n</p>\n\n<code>\n<span class=\"codekeyw\">local</span> r = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<span class=\"codekeyw\">local</span> g = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<span class=\"codekeyw\">local</span> b = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>())<br/>\n<br/>\n<span class=\"codekeyw\">local</span> color = tram.math.<span class=\"codeclass\">vec3</span>(r, g, b)<br/>\n<br/>\n<span class=\"codecomm\">-- the r, g, b values are in the range</span><br/>\n<span class=\"codecomm\">-- from -1.0 to 1.0 due to the sin()</span><br/>\n<span class=\"codecomm\">-- function, so we need to re-map them</span><br/>\n<span class=\"codecomm\">-- to the 0.0 to 1.0 range for colors</span><br/>\n<br/>\ncolor = color + <span class=\"codelit\">1.0</span><br/>\ncolor = color * <span class=\"codelit\">0.5</span><br/>\n<br/>\nteapot:<span class=\"codefunc\">SetColor</span>(color)<br/>\n<br/>\n</code>\n\t\n<center>\n\t<img src=\"teapotblink.gif\"/><br/>\n\t<i>The teapot fades from white to black and then back to white.</i>\n</center>\n\n<p>\n\tWe can make this even more interesting. Let's add a different phase shift to\n\teach of the color channels.\n</p>\n\n<code>\n<span class=\"codekeyw\">local</span> r = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">1.0</span>)<br/>\n<span class=\"codekeyw\">local</span> g = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">2.0</span>)<br/>\n<span class=\"codekeyw\">local</span> b = <span class=\"codekeyw\">math</span>.<span class=\"codekeyw\">sin</span>(tram.<span class=\"codefunc\">GetTickTime</span>() + <span class=\"codelit\">4.0</span>)<br/>\n<br/>\n</code>\n\t\n<center>\n\t<img src=\"teapotrainbow.gif\"/><br/>\n\t<i>The teapot cycles through all of the colors.</i>\n</center>\n\n<div class=\"infobox\">\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tNow that you can dynamically change a vec3 for colors, how about\n\t\tdynamically changing the teapot's position and rotation?\n\t</p>\n\n\t<h3>\n\t\tExercise\n\t</h3>\n\n\t<hr/>\n\t\n\t<p>\n\t\tMaybe try changing the color of the scene's light.\n\t</p>\n\t\n\t<h3>\n\t\tExercise\n\t</h3>\n\t\n\t<hr/>\n\t\n\t<p>\n\t\tThe code for controlling the teapot's rotation is already set up. Maybe\n\t\tadd the option to not only be able to change the rotation of the teapot,\n\t\tbut also its position?\n\t</p>\n</div>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"structure.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"3dmodeling.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/structure.html",
    "content": "<!-- PAGE_TITLE: Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Structure of a project</h1>\n\n<p>\n\tYour project files are located in your project directory. It also contains\n\tseveral other directories. This is how these are structured and where\n\teverything is located.\n</p>\n\n<h3>\n\t<code>/assets/</code>\n</h3>\n\n<p>\n\tCurrently there are no tools which use this particular directory, but there\n\twill be in the future.\n</p>\n\n<p>\n\tThe assets directory is meant to shadow the structure of the data directory,\n\twith the main difference that the data files are stored in an editable\n\tformat. For example, the assets directory could contain\n\t<code>/assets/models/frogs/green.blend</code> file and it would have its\n\tcounterpart <code>/data/models/frogs/green.dymdl</code> which is prepared\n\tfrom the first file.\n</p>\n\n<h3>\n\t<code>/data/</code>\n</h3>\n\n<p>\n\tThis is the main data directory. It contains the directories for various\n\tresources, as well as language files, editor settings and entity definition\n\tfiles (might be moved in the future) and the material definition files.\n</p>\n\n<h4>\n\t<code>/data/animations/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/animation.html\">Animation resources</a>.\n</p>\n\n<h4>\n\t<code>/data/audio/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/audio.html\">Sound resources</a>.\n</p>\n\n<h4>\n\t<code>/data/models/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/model.html\">3D model resources</a>.\n</p>\n\n<h4>\n\t<code>/data/navmesh/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/navmesh.html\">Navmeshes</a>.\n</p>\n\n<h4>\n\t<code>/data/paths/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/path.html\">Paths</a>.\n</p>\n\n<h4>\n\t<code>/data/sprites/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/render/sprite.html\">Sprite resources</a>.\n</p>\n\n<h4>\n\t<code>/data/textures/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the textures for the \n\t<a href=\"../documentation/render/material.html\">Material resources</a>.\n</p>\n\n<h4>\n\t<code>/data/sprites/</code>\n</h4>\n\n<p>\n\tThis directory contains the all of the\n\t<a href=\"../documentation/framework/worldcell.html\">WorldCells</a>.\n</p>\n\n<h3>\n\t<code>/scripts/</code>\n</h3>\n\n<p>\n\tThis directory contains all of the scripts. When the\n\t<a href=\"../documentation/framework/script.html\">Script</a> system is\n\tinitialized with a scripting language initialized, it will load the\n\t<code>api</code> file, which contains the language-specific script bindings.\n</p>\n\n<p>\t\n\tFor Lua, this is the <code>api.lua</code> file. You probably should avoid\n\tediting it, unless you know what you are doing.\n</p>\n\n<p>\t\n\tThere is also an <code>init</code> file. This is loaded by the template\n\tproject after initializing all of the framework's systems. You can edit this\n\tfile and put whatever you want in it.\n</p>\n\n<h3>\n\t<code>/shaders/</code>\n</h3>\n\n<p>\t\n\tThis directory contains all of the shaders for the \n\t<a href=\"../documentation/render.html\">rendering backends</a> that support\n\tshaders. You can edit them if you want.\n</p>\n\n<h3>\n\t<code>/src/</code>\n</h3>\n\n<p>\t\n\tContains all of the C++ source code for the project.\n</p>\n\n<h3>\n\t<code>/</code>\n</h3>\n\n<p>\t\n\tThe project root directory contains the executable file for the application,\n\tas well as various configuration files. This is also the working directory\n\tfrom which the various tools and utilities need to be launched from.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"getstarted.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"scripting.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/walking.html",
    "content": "<!-- PAGE_TITLE: Walking around a world | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Walking around a world</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"world.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"cameras.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/whatis.html",
    "content": "<!-- PAGE_TITLE: What it is and what does it do? | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWhat it is and what does it do?\n</h1>\n\n<hr/>\n\n<p>\n\tTramway Drifting and Dungeon Exploration Simulator Software Development Kit\n\tconsists of approximately 30 000 lines of code. These lines of code have\n\tbeen written, so that you don't have to.\n</p>\n\n<p>\n\tThe main goal of this project is to enable the creation of real-time 3D\n\tgraphics applications. These applications could be video games, virtual\n\treality spaces, various visualizations, etc.\n</p>\n\n<p>\n\tMost of the code of this project is contained in the Tramway SDK runtime.\n\tThe runtime is implemented as a C++ library, which can be embedded into\n\texisting applications, or used as a standalone application, using the Lua\n\tAPI for scripting.\n</p>\n\n<p>\n\tIn addition to the runtime, the project also consists of a graphical level\n\teditor, 3D content authoring plugins for the Blender 3D modeling \n\tapplication, as well as various commandline utilities.\n</p>\n\n<p>\n\tIn the future, the project will be enhanced by the addition of additional\n\tapplications and utilities.\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\"></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"getstarted.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn/world.html",
    "content": "<!-- PAGE_TITLE: Structure of a project | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>Creating a world</h1>\n\n<p>\n\t<code>\n\t\t// TODO: implement\n\t</code>\n</p>\n\n<table class=\"navbar\">\n\t<tr>\n\t\t<td class=\"left\">&laquo; <a href=\"render.html\">Back</a></td>\n\t\t<td class=\"middle\"><a href=\"../learn.html\">Home</a></td>\n\t\t<td class=\"right\"><a href=\"walking.html\">Next</a> &raquo;</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/learn.html",
    "content": "<!-- PAGE_TITLE: Learn | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tLearn\n</h1>\n\n<p>\n\tHere's all of the &laquo;guide&raquo; style documentation. It's meant to\n\tshowcase the framework in a less formal and structured way.\n</p>\n\n<p>\n\tIf you have no idea what it is and how to use it, this is a good place to\n\tstart.\n</p>\n\n<h2>\n\tBasic stuff\n</h2>\n\n<p>\n\t<ol>\n\t\t<li><a href=\"learn/whatis.html\">What it is and what does it do?</a></li>\n\t\t<li><a href=\"learn/getstarted.html\">Getting started</a></li>\n\t\t<li><a href=\"learn/structure.html\">Structure of a project</a></li>\n\t\t<li><a href=\"learn/scripting.html\">Basic scripting</a></li>\n\t\t<li><a href=\"learn/3dmodeling.html\">Adding 3D models</a></li>\n\t\t<li><a href=\"learn/materials.html\">Adding Materials</a></li>\n\t\t<li><a href=\"learn/animations.html\">Adding Animations</a></li>\n\t\t<li><a href=\"learn/pingpong.html\">Making Ping Pong</a></li>\n\t\t<li><a href=\"learn/physics.html\">Physics</a></li>\n\t\t<li><a href=\"learn/render.html\">Render</a></li>\n\t\t<li><a href=\"learn/world.html\">Creating a world</a></li>\n\t\t<li><a href=\"learn/walking.html\">Walking around a world</a></li>\n\t\t<li><a href=\"learn/cameras.html\">Cameras, how do they work?</a></li>\n\t\t<li><a href=\"learn/platforms.html\">Platforms and stuff</a></li>\n\t\t<li><a href=\"learn/cake.html\">Making a cake simulator</a></li>\n\t</ol>\n</p>"
  },
  {
    "path": "docs/src/manual/audio/api.md",
    "content": "# API\n\nThe low-level API of the audio system for the library.\n\nI tried to make it modular, so that it's possible to swap out the back-end calls\nfor different platforms.\n\nIt's really basic right now, but I will add audio effects and other stuff to it\nlater.\n\nThe library currently supports OpenAL as the back-end. There's also a spatial\naudio back-end, but it's only a prototype."
  },
  {
    "path": "docs/src/manual/audio/audio.md",
    "content": "# Audio\n\nRight now the library's audio system doesn't have that many features, but it's\npossible to load up `.ogg` audio files and play them back.\n\n## Initialization\n\nThe Core and the UI systems need to be initialized first.\n\nThen `Audio::Init()` function will initialize the audio system. \n`Audio::Update()` needs to be called once a frame and `Audio::Uninit()` when\nexiting the application.\n\n## Sounds\n\nSounds are considered Resources and can be streamed in from disk.\n\nTo play them, use an AudioComponent.\n"
  },
  {
    "path": "docs/src/manual/components/animation.md",
    "content": "# Animation\n\nThe AnimationComponent component plays Animations. As in 3D animations for\n3D models. It can also be used for making procedural animations.\n\nTo actually see the animations, AnimationComponent needs to be linked with a\nRenderComponent.\n\n## Usage\n\n```\n// create the component\nComponent<AnimationComponent> component;\ncomponent.make();\n\n// give it the model that it will play animations on\ncomponent->SetModel(\"model-name\");\n\n// initialize it\ncomponent->Init();\n\n// play an animation\ncomponent->PlayAnimation(\"animation-name\", 1, 1.0f, 1.0f);\n```\n\n\n\n## Notes\n\nRight now, before playing animations, they need to be loaded first. They are not\nautomatically streamed in from disk.\n\n```\nRender::Animation::Find(\"animation-name\")->LoadFromDisk();\n```\n\nIdk, might change this later."
  },
  {
    "path": "docs/src/manual/components/audio.md",
    "content": "# Audio\n\nThe AudioComponent plays Sounds. \n\n## Usage\n\n```\n// create the component\nComponent<AudioComponent> component;\ncomponent.make();\n\n// give it the sound that it will play\ncomponent->SetSound(\"sound-name\");\n\n// set the location of the component in the world\ncomponnt->SetLocation({0.0f, 0.0f, 0.0f});\n\n// initialize it\ncomponent->Init();\n\n// play the sound\ncomponent->Play();\n```\n\n\n"
  },
  {
    "path": "docs/src/manual/components/components.md",
    "content": "# Components\n\nEntityComponents are reusable pieces of logic for entities, but most of them can\nalso be used on their own.\n\nSome of them are wrappers around low-level APIs, others are completely new.\n\n## How do they work\n\nMost components need to be created in their respective Pools, which can be\ndone with the `Component` smart pointer (or by asking the Pool directly).\n\nThen they get fed some parameters and their `Init()` method is called.\n\nAfter they are no longer needed, they can be deleted.\n\n```\n// define a component smart-pointer\nComponent<ExampleComponent> component;\n\n// create a new component instance\ncomponent.make();\n\n// feed it some parameters\ncomponent->SetFoo(\"123\");\ncomponent->SetBar(321);\n\n// initialize it\ncomponent->Init();\n\n// when not needed anymore, the component can be deleted\ncomponent.clear();\n```"
  },
  {
    "path": "docs/src/manual/components/controller.md",
    "content": "# Controller\n\nThe ControllerComponent controls the player or any other character.\n\nIt's a bit unfinished.\n\nSee PlayerComponent for how this component could be used."
  },
  {
    "path": "docs/src/manual/components/light.md",
    "content": "# Light\n\nThe LightComponent is a wrapper around Lights in the Rendering."
  },
  {
    "path": "docs/src/manual/components/particle.md",
    "content": "# Particle\n\nThe ParticleComponent emits particles.\n\nIt's unfinished."
  },
  {
    "path": "docs/src/manual/components/physics.md",
    "content": "# Physics\n\nThe PhysicsComponent is a wrapper around a rigidbody in the Physics system.\n"
  },
  {
    "path": "docs/src/manual/components/player.md",
    "content": "# Player\n\nThe PlayerComponent maps keyboard/mouse inputs to CharacterController inputs.\n\nIt's unfinished."
  },
  {
    "path": "docs/src/manual/components/sprite.md",
    "content": "# Sprite\n\nThe SpriteComponent is unfinished."
  },
  {
    "path": "docs/src/manual/components/trigger.md",
    "content": "# Trigger\n\nThe TriggerComponent is used to trigger stuff from the Physics simulation."
  },
  {
    "path": "docs/src/manual/config.md",
    "content": "# Config\n\nThe library has a `config.h` file. It contains some configurations as to how\nthe library should be compiled.\n\nRight now there isn't much stuff in it, but I'll add some stuff later."
  },
  {
    "path": "docs/src/manual/main.md",
    "content": "# Main\n\nThe library code contains a main.cpp that I use for testing, you can ignore it."
  },
  {
    "path": "docs/src/manual/manual.md",
    "content": "# Manual\n\nHere's some stuff about how the stuff works and stuff. Stuff!\n\nIt's unfinished.\n\nThe layout of the manual is supposed to mirror the layout of the code, btw."
  },
  {
    "path": "docs/src/patterns.html",
    "content": "<!-- PAGE_TITLE: Design Patterns | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tDesign Patterns Used\n</h1>\n\n<hr/>\n\n<p>\n\tWhen all of the patterns get used, I will delete the project and rewrite it\n\tin Rust. With no OOP.\n</p>\n\n<table border=\"1\">\n\t<tr>\n\t\t<th>\n\t\t\tPattern\n\t\t</th>\n\t\t<th>\n\t\t\tWhere is it used?\n\t\t</th>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAbstract factory\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBuilder\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFactory method\n\t\t</td>\n\t\t<td>\n\t\t\tUsed all over the place.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tPrototype\n\t\t</td>\n\t\t<td>\n\t\t\tUsed in the level editor for objects. Some objects can be cloned.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSingleton\n\t\t</td>\n\t\t<td>\n\t\t\tPoolProxy class is used to force a single Pool template\n\t\t\tinstantiation per type.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdapter\n\t\t</td>\n\t\t<td>\n\t\t\tThere's probably some adapters in there, but can't remember a\n\t\t\tspecific example.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBridge\n\t\t</td>\n\t\t<td>\n\t\t\tDefinitely somewhere in there.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tComposite\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for level editor objects.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tDecorator\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for scripting API.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFacade\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for the file abstraction.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tFlyweight\n\t\t</td>\n\t\t<td>\n\t\t\tDynamically created collisionshapes use the same underlying object\n\t\t\tif their types and dimensions are the same.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tProxy\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by some resources.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tChain of responsiblity\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tCommand\n\t\t</td>\n\t\t<td>\n\t\t\tMessages are essentially commands.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tInterpreter\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by the quest extension for nocode scripting.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tIterator\n\t\t</td>\n\t\t<td>\n\t\t\tUsed all over the place.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMediator\n\t\t</td>\n\t\t<td>\n\t\t\tNot used.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMemento\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for undo/redo functionality in the level editor.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tObserver\n\t\t</td>\n\t\t<td>\n\t\t\tEvent listeners are essentially observers.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tState\n\t\t</td>\n\t\t<td>\n\t\t\tUsed for tools in the level editor.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tStrategy\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by the file abstraction.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tTemplate method\n\t\t</td>\n\t\t<td>\n\t\t\tUsed by resources, entities and entity components for their life\n\t\t\tcycles and stuff.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tVisitor\n\t\t</td>\n\t\t<td>\n\t\t\tProbably used somewhere in there.\n\t\t</td>\n\t</tr>\n</table>"
  },
  {
    "path": "docs/src/roadmap.html",
    "content": "<!-- PAGE_TITLE: Roadmap | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tRoadmap\n</h1>\n\n<p>\n\tTasks that have been completed and are a success are marked with\n\t<s>strikethrough</s>. Some tasks are only partially completed.\n</p>\n\n<table border=\"1\">\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Audio</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to attach audio effects to audio sources.\n\t\t</td>\n\t\t<td>\n\t\t\tThe OpenAL backend supports this. Other possible, future backends\n\t\t\tmight also support this.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to automatically determine audio effects for audio sources.\n\t\t</td>\n\t\t<td>\n\t\t\tThis could be implemented as reverb zones, which are manually\n\t\t\tplaced in levels, or the parameters of the effects could be \n\t\t\tdetermined using raycasts, or with other means.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd an option to play back tracker files\n\t\t</td>\n\t\t<td>\n\t\t\tThere are libraries which should be able to play back tracker\n\t\t\tfiles. One of them could be integrated into the audio system.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Animation</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd events to animations\n\t\t</td>\n\t\t<td>\n\t\t\tIt should be possible to add a callback for a specific bone, and when\n\t\t\ta keyframe for that bone is reached, it would trigger the callback.\n\t\t\tThis would allow syncing up code to animations.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Language</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd UTF-16 strings\n\t\t</td>\n\t\t<td>\n\t\t\tCurrently it is possible to only use 256 different characters in\n\t\t\ttext. By switching strings from char to wchar, we could use all\n\t\t\tof the characters. \n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Graph</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add Paths</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>It would be neat if you could have entities follow a path that is\n\t\t\tlaid down in the level editor.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add Navmeshes</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Navmeshes would allow better navigation by NPCs.</s>\n\t\t\t<br/><b>Note:</b> only navmesh editing and loading has been\n\t\t\timplemented, no navmesh navigation has been implemented yet.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Serialization</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd serialization\n\t\t</td>\n\t\t<td>\n\t\t\tSerialization was yeeted out, but it should be very easy to put it\n\t\t\tback in. This would allow saving the state of the application.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Files</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAdd virtual file system\n\t\t</td>\n\t\t<td>\n\t\t\tThis would allow files to be read not only from disk, but also\n\t\t\tarchives. Files could also be written to archives. Files could\n\t\t\talso be read using HTTP GET and written as POST requests.\n\t\t</td>\n\t</tr>\n\t\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Rendering</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Add sphere maps</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>This would allow reflective surfaces. Would also need to add some\n\t\t\tway to automatically capture.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Light probes</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Implemented using spherical harmonics or something similar.</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t Detail textures\n\t\t</td>\n\t\t<td>\n\t\t\twould be neat\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tBump/normal mapping\n\t\t</td>\n\t\t<td>\n\t\t\tMor edetails good!\n\t\t\t<br/><b>Note:</b> normal mapping implemented, but only for\n\t\t\traytracing rendering backend.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tPlanar reflections\n\t\t</td>\n\t\t<td>\n\t\t\tUsing with stencils or something\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Transparency</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>There already is, but it is not !! is not good! --> not blendered</s>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\t<s>Decals</s>\n\t\t</td>\n\t\t<td>\n\t\t\t<s>Would allow projecting! images and that would be good.</s>\n\t\t\t<br/><b>Note:</b> currently basic implementation done, still needs\n\t\t\toptimizations.\n\t\t</td>\n\t</tr>\n\n\t<tr>\n\t\t<td colspan=\"2\">\n\t\t\t<center>\n\t\t\t\t<b>Applets</b>\n\t\t\t</center>\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tMaterial Editor\n\t\t</td>\n\t\t<td>\n\t\t\tThis would allow the creation of new materials interactively. It\n\t\t\twould also mean that you don't have to edit the material text files\n\t\t\tdirectly.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tModel/Animation Viewer\n\t\t</td>\n\t\t<td>\n\t\t\tThis applet would allow the previewing 3D models, as well as\n\t\t\tplaying back animations on them. This would be useful for previewing\n\t\t\t3D models and animations. It could also be used as a 3D model\n\t\t\tpicker/palette tool for other applications, or added as a default\n\t\t\tviewer program for .DYMDL and .STMDL files, so that they can be\n\t\t\topened directly form the operating system's shell.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tModification Model Editor\n\t\t</td>\n\t\t<td>\n\t\t\tCurrently modification models can only be created using a text\n\t\t\teditor. It would be easier to create them in an applet that can\n\t\t\timmediately display the newly created 3D model.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tLanguage Editor\n\t\t</td>\n\t\t<td>\n\t\t\tEditing strings would be nicer if done in a GUI. It would also allow\n\t\t\tthe comparison of strings in different languages and would allow\n\t\t\tdetecting missing language strings easier.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSoundtable Editor\n\t\t</td>\n\t\t<td>\n\t\t\tIt might be useful to have an editor for soundtables, which also has\n\t\t\ta sound preview functionality.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tAnimationtable Editor\n\t\t</td>\n\t\t<td>\n\t\t\tIt would allow previewing of animation states in real time. Could be\n\t\t\tuseful.\n\t\t</td>\n\t</tr>\n\t<tr>\n\t\t<td>\n\t\t\tSprite Editor\n\t\t</td>\n\t\t<td>\n\t\t\tWould be better than using a text editor.\n\t\t</td>\n\t</tr>\n</table>\n"
  },
  {
    "path": "docs/src/template.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"<!-- PAGE_LEVEL -->favicon.gif\">\n\t\t<title><!-- PAGE_TITLE --></title>\n\t\t<link rel=\"stylesheet\" href=\"<!-- PAGE_LEVEL -->default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"<!-- PAGE_LEVEL -->no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"<!-- PAGE_LEVEL -->no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"<!-- PAGE_LEVEL -->default.css\");\n\t\t\t\t\tAddCSS(\"<!-- PAGE_LEVEL -->enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"<!-- PAGE_LEVEL -->enterprise.css\");\n\t\t\t\t\tAddCSS(\"<!-- PAGE_LEVEL -->default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"<!-- PAGE_LEVEL -->images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"<!-- PAGE_LEVEL -->images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"<!-- PAGE_LEVEL -->images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"<!-- PAGE_LEVEL -->index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"<!-- PAGE_LEVEL -->features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"<!-- PAGE_LEVEL -->roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"<!-- PAGE_LEVEL -->learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"<!-- PAGE_LEVEL -->documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<!-- MENU_LINK:index:Home -->\n\t\t\t\t\t<!-- MENU_LINK:learn/getstarted:Get Started -->\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_CONTENT -->\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"<!-- PAGE_LEVEL -->images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"<!-- PAGE_LEVEL -->images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"<!-- PAGE_LEVEL -->images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "docs/src/why.html",
    "content": "<!-- PAGE_TITLE: Why Tramway SDK | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWhy Tramway SDK\n</h1>\n\n<hr/>\n\n<p>\n\t<b>Tramway SDK</b> (heavy metal spelling &ndash;\n\tT&#776;ra&#806;m&#778;w&#776;a&#806;y&#776; SD&#776;K) is a graphics\n\tpackage/framework/game engine that I have been working on for the past\n\t3 years.\n</p>\n\n<p>\n\tIn this article I attempt to turn you against mainstream engines and I will\n\texplain, in detail, why Tramway SDK is not as awful as them.\n</p>\n\n<h2>\n\tUnreasonable system requirements due to Turbobloat\n</h2>\n\n<hr/>\n\n<p>\n\tUnity needs very powerful hardware and consumes enough power to burn down a\n\trainforest. Godot is slightly better, but you still need relatively capable\n\thardware.\n</p>\n\n<p>\n\tBut what if all that you really want to make is just a lowpoly horror\n\troguelite deckbuilder simulator? 15 year old hardware is more than capable\n\tof running a game like that, but not if you use a mainstream engine, due to\n\tTurbobloat.\n</p>\n\n<p>\n\tTramway SDK can run on virtually any hardware from the last 15 years, since\n\tit is not Turbobloated. It doesn't even need a graphics card, since it can\n\tbe switched to use software rasterization, making it perfect for displaying\n\tgraphics on\ttoasters and fridges.\n</p>\n\n<p>\n\tSome might say \"just get a better computer\". This is why getting a better\n\tcomputer is bad:\n</p>\n\n<ol>\n\t<li>\n\t\t<h4>\n\t\t\tAffordance\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tA lot of people, especially from 3rd world countries are very poor\n\t\t\tand can't afford to buy hardware to run Turbobloat.\n\t\t</p>\n\t</li>\n\t\n\t<li>\n\t\t<h4>\n\t\t\te-Waste\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tProducing computer chips is very bad on the environment. If modern\n\t\t\tsoftware wasn't Turbobloated you would buy new hardware only when\n\t\t\tthe previous hardware broke and wasn't repairable.\n\t\t</p>\n\t</li>\n\t\n\t<li>\n\t\t<h4>\n\t\t\tNot putting up with Turbobloat\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tWhy spend money on another computer if you already have one that\n\t\t\tworks perfectly fine? Just because of someone else's turbobloat? \n\t\t\tYou could buy 1000 cans of Dr. Pepper instead.\n\t\t</p>\n\t</li>\n</ol>\n\n<h2>\n\tNodes are bad\n</h2>\n\n<hr/>\n\n<p>\n\tA thing should be a thing. It should not be a bunch of things pretending to\n\tbe a single thing. With nodes you have to pretend that a collection of\n\tthings is a single thing.\n</p>\n\n<p>\n\tAlso when creating things with nodes, you have to go back and forth between\n\tnode GUI and code. \n</p>\n\n<p>\n\tIn Tramway SDK you just subclass the Entity class and write the code. After\n\tthat you make a level using the level editor. No going back and forth. No \n\tnodes, just entities.\n</p>\n\n<h2>\n\tMonolithism\n</h2>\n\n<hr/>\n\n<p>\n\tAll of the mainstream engines have a monolithic game editor. It doesn't\n\tmatter how many features you use from it, you still have to wait 10 minutes\n\tfor all of them to load in.\n</p>\n\n<p>\n\tTramway SDK has editors, but all of them are optional. If you just want to\n\tuse it as a framework, you can use only the C++ runtime. If you want to\n\tbuild levels, you can use only the level editor and no other GUI tool.\n</p>\n\n<p>\n\tData files are stored as whitespace-seperated-values, so you could even edit\n\tall of the data files by hand, without using a single editor.\n</p>\n\n<h2>\n\tBad graphics\n</h2>\n\n<hr/>\n\n<p>\n\tMost Unity games look like very bad, even with fancy shaders, normal mapping\n\tand other techniques.\n</p>\n\n<p>\n\tLook at what Tramway SDK can do with just lightmapping and Gouraud shading:\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/photorealism.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/photorealism.png\"/>\n\t</a><br/>\n\t<i>\n\t\tThis could be rendered on a Direct3D 7 level graphics card with a\n\t\tfixed-function pipeline.\n\t</i>\n</center>\n\n<h2>\n\tQuake level editors\n</h2>\n\n<hr/>\n\n<p>\n\tBrush based level geometry is very good and you can prototype levels with it\n\tvery quickly. Tramway SDK has a <code>.map</code> file converter, which\n\tconverts brushes into triangle meshes.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/trenchbroom.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/trenchbroom.png\"/>\n\t</a><br/>\n\t<i>Level being created in the Trenchbroom map editor.</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/leveleditor.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/leveleditor.png\"/>\n\t</a><br/>\n\t<i>Level being set up in the Tramway SDK level editor.</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/inengine.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/inengine.png\"/>\n\t</a><br/>\n\t<i>Level with lightmaps being rendered in-engine.</i>\n</center>\n\n<p>\n\tWow! Look at this very fancy level. Not only can we create brush-based\n\tlevels, we even have an input/output system like in Source to set up \n\tinteractions between entities in levels.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/signals.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/signals.png\"/>\n\t</a><br/>\n\t<i>Very fancy interaction editor.</i>\n</center>\n\n<p>\n\tIn the future I will be implementing all of the Source logic entities, so\n\tthat you can do visual scripting right in the level editor.\n</p>\n\n<h2>\n\tFramework for RPGs\n</h2>\n\n<hr/>\n\n<p>\n\tI think that it is very interesting to see the different kinds of games that\n\tcan be created in a tool like RPG Maker. There's also tons of mods, even\n\ttotal conversions based on Morrowind. You can do a lot of stuff by changing\n\tthe data, even in the RPG mechanics have already preprogrammed.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/kitchensink.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/kitchensink.png\"/>\n\t</a><br/>\n\t<i>Editor for the RPG framework.</i>\n</center>\n\n<p>\n\tSince the engine was designed to support level streaming from the very\n\tbeginning, it should make the creation of open-world RPG-ish games very\n\tquick and very easy.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/rpg.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/rpg.png\"/>\n\t</a><br/>\n\t<i>\n\t\tEveryone always says that you \"shouldn't create an open-world RPG\", but\n\t\tthat's just because they have never tried using the Trawmay SDK.\n\t</i>\n</center>\n\n<h2>\n\tTL; DR\n</h2>\n\n<hr/>\n\n<p>\n\tTramway SDK is a game engine based on Quake/Source style entities, supports\n\topen-world streaming, comes with optional extensions, like the RPG framework\n\tthat is sort like RPG Maker, but for 3D.\n</p>\n\n<p>\n\tThis project is still in very early development. APIs are unstable, stuff\n\tbreaks or just doesn't work, a lot of things still haven't been implemented,\n\tbut it's getting better very quickly.\n</p>\n\n<center>\n\t<a href=\"https://github.com/racenis/tram-sdk\">\n\t\tClick here for the Github repo!\n\t</a>\n</center>\n\n\n\n"
  },
  {
    "path": "docs/why.html",
    "content": "<!doctype html>\n<html>\n\t<head>\n\t\t<link rel=\"eeee\" href=\"favicon.gif\">\n\t\t<title>Why Tramway SDK | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit</title>\n\t\t<link rel=\"stylesheet\" href=\"default.css\"/>\n\t\t<script>\n\t\t\tfunction AddCSS(file) {\n\t\t\t\tconst disable_sheet = document.createElement('link');\n\t\t\t\t\n\t\t\t\tdisable_sheet.rel = 'stylesheet';\n\t\t\t\tdisable_sheet.href = file;\n\t\t\t\t\n\t\t\t\tdocument.head.appendChild(disable_sheet);\n\t\t\t}\n\t\t\t\n\t\t\tfunction YeetCSS(file) {\n\t\t\t\tconst links = document.querySelectorAll('head link[rel=\"stylesheet\"]');\n\n\t\t\t\tlinks.forEach(link => {\n\t\t\t\t  if (link.getAttribute('href') === file) {\n\t\t\t\t\tlink.remove();\n\t\t\t\t  }\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tfunction RecheckCSS() {\n\t\t\t\tconst disable_gif = localStorage.getItem(\"disable_gif\");\n\t\t\t\tconst enterprise_mode = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (disable_gif == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Enable GIFs]\";\n\t\t\t\t\tAddCSS(\"no_gifs.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#no-gifs\").innerHTML = \"[Disable GIFs]\";\n\t\t\t\t\tYeetCSS(\"no_gifs.css\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (enterprise_mode == \"yes\") {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Default Mode]\";\n\t\t\t\t\tYeetCSS(\"default.css\");\n\t\t\t\t\tAddCSS(\"enterprise.css\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.querySelector(\"#enterprise\").innerHTML = \"[Enterprise Mode]\";\n\t\t\t\t\tYeetCSS(\"enterprise.css\");\n\t\t\t\t\tAddCSS(\"default.css\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleGIFs() {\n\t\t\t\tconst enabled = localStorage.getItem(\"disable_gif\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"disable_gif\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\tfunction ToggleEnterprise() {\n\t\t\t\tconst enabled = localStorage.getItem(\"enterprise\");\n\t\t\t\t\n\t\t\t\tif (enabled == \"yes\") {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"no\");\n\t\t\t\t} else {\n\t\t\t\t\tlocalStorage.setItem(\"enterprise\", \"yes\");\n\t\t\t\t}\n\t\t\t\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\n\t\t\twindow.onload = function() {\n\t\t\t\tRecheckCSS();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t</script>\n\t</head>\n\t<body background=\"images/sky.jpg\">\n\t\t<table class=\"container\" width=\"600\" align=\"center\" cellspacing=\"0\" bgcolor=\"white\">\n\t\t\t<tr>\n\t\t\t\t<td class=\"titlebar\" colspan=\"3\" class=\"header\">\n\t\t\t\t\t<img style=\"float:left;\" src=\"images/logo3.gif\"/>\n\t\t\t\t\t<img style=\"float:right;\" class=\"animated\" src=\"images/poland.gif\"/>\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t<a id=\"no-gifs\" onclick=\"ToggleGIFs()\" href=\"#\">[Disable GIFs]</a>\n\t\t\t\t\t\t<a id=\"enterprise\" onclick=\"ToggleEnterprise()\" href=\"#\">[Enterprise Mode]</a>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"menubar\" bgcolor=\"#4444ff\">\n\t\t\t\t\t<font size=\"2\" color=\"white\">\n\t\t\t\t\t\t<b>\n\t\t\t\t\t\t\t&nbsp;\n\t\t\t\t\t\t\t<a href=\"index.html\">Home</a> | \n\t\t\t\t\t\t\t<a href=\"features.html\">Features</a> | \n\t\t\t\t\t\t\t<a href=\"roadmap.html\">Roadmap</a> | \n\t\t\t\t\t\t\t<a href=\"learn.html\">Learn</a> | \n\t\t\t\t\t\t\t<a href=\"documentation.html\">Documentation</a>\n\t\t\t\t\t\t</b>\n\t\t\t\t\t</font>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td width=\"140\" valign=\"top\" class=\"left-pane\">\n\t\t\t\t\t<b>Latest release</b><br/>\n\t\t\t\t\tTramway SDK 0.1.1<br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk\">Github</a><br/>\n\t\t\t\t\t<b>Download</b><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-installer.exe\">Installer (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-sdk/releases/download/v0.1.1/tram-sdk-v0.1.1b-win64-portable.zip\">Portable .zip (win64)</a><br/>\n\t\t\t\t\t<a href=\"https://github.com/racenis/tram-template\">Starter Template</a><br/>\n\t\t\t\t\t<b>Quick links</b><br/>\n\t\t\t\t\t<a href=\"index.html\" class=\"menu-link\">Home</a><br/>\n\t\t\t\t\t<a href=\"learn/getstarted.html\" class=\"menu-link\">Get Started</a><br/>\n\t\t\t\t</td>\n\t\t\t\t<td valign=\"top\" class=\"middle-pane\">\n\t\t\t\t\t<!-- PAGE_TITLE: Why Tramway SDK | Tramway Drifting and Dungeon Exploration Simulator Software Development Kit -->\n\n<h1>\n\tWhy Tramway SDK\n</h1>\n\n<hr/>\n\n<p>\n\t<b>Tramway SDK</b> (heavy metal spelling &ndash;\n\tT&#776;ra&#806;m&#778;w&#776;a&#806;y&#776; SD&#776;K) is a graphics\n\tpackage/framework/game engine that I have been working on for the past\n\t3 years.\n</p>\n\n<p>\n\tIn this article I attempt to turn you against mainstream engines and I will\n\texplain, in detail, why Tramway SDK is not as awful as them.\n</p>\n\n<h2>\n\tUnreasonable system requirements due to Turbobloat\n</h2>\n\n<hr/>\n\n<p>\n\tUnity needs very powerful hardware and consumes enough power to burn down a\n\trainforest. Godot is slightly better, but you still need relatively capable\n\thardware.\n</p>\n\n<p>\n\tBut what if all that you really want to make is just a lowpoly horror\n\troguelite deckbuilder simulator? 15 year old hardware is more than capable\n\tof running a game like that, but not if you use a mainstream engine, due to\n\tTurbobloat.\n</p>\n\n<p>\n\tTramway SDK can run on virtually any hardware from the last 15 years, since\n\tit is not Turbobloated. It doesn't even need a graphics card, since it can\n\tbe switched to use software rasterization, making it perfect for displaying\n\tgraphics on\ttoasters and fridges.\n</p>\n\n<p>\n\tSome might say \"just get a better computer\". This is why getting a better\n\tcomputer is bad:\n</p>\n\n<ol>\n\t<li>\n\t\t<h4>\n\t\t\tAffordance\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tA lot of people, especially from 3rd world countries are very poor\n\t\t\tand can't afford to buy hardware to run Turbobloat.\n\t\t</p>\n\t</li>\n\t\n\t<li>\n\t\t<h4>\n\t\t\te-Waste\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tProducing computer chips is very bad on the environment. If modern\n\t\t\tsoftware wasn't Turbobloated you would buy new hardware only when\n\t\t\tthe previous hardware broke and wasn't repairable.\n\t\t</p>\n\t</li>\n\t\n\t<li>\n\t\t<h4>\n\t\t\tNot putting up with Turbobloat\n\t\t</h4>\n\t\t\n\t\t<p>\n\t\t\tWhy spend money on another computer if you already have one that\n\t\t\tworks perfectly fine? Just because of someone else's turbobloat? \n\t\t\tYou could buy 1000 cans of Dr. Pepper instead.\n\t\t</p>\n\t</li>\n</ol>\n\n<h2>\n\tNodes are bad\n</h2>\n\n<hr/>\n\n<p>\n\tA thing should be a thing. It should not be a bunch of things pretending to\n\tbe a single thing. With nodes you have to pretend that a collection of\n\tthings is a single thing.\n</p>\n\n<p>\n\tAlso when creating things with nodes, you have to go back and forth between\n\tnode GUI and code. \n</p>\n\n<p>\n\tIn Tramway SDK you just subclass the Entity class and write the code. After\n\tthat you make a level using the level editor. No going back and forth. No \n\tnodes, just entities.\n</p>\n\n<h2>\n\tMonolithism\n</h2>\n\n<hr/>\n\n<p>\n\tAll of the mainstream engines have a monolithic game editor. It doesn't\n\tmatter how many features you use from it, you still have to wait 10 minutes\n\tfor all of them to load in.\n</p>\n\n<p>\n\tTramway SDK has editors, but all of them are optional. If you just want to\n\tuse it as a framework, you can use only the C++ runtime. If you want to\n\tbuild levels, you can use only the level editor and no other GUI tool.\n</p>\n\n<p>\n\tData files are stored as whitespace-seperated-values, so you could even edit\n\tall of the data files by hand, without using a single editor.\n</p>\n\n<h2>\n\tBad graphics\n</h2>\n\n<hr/>\n\n<p>\n\tMost Unity games look like very bad, even with fancy shaders, normal mapping\n\tand other techniques.\n</p>\n\n<p>\n\tLook at what Tramway SDK can do with just lightmapping and Gouraud shading:\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/photorealism.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/photorealism.png\"/>\n\t</a><br/>\n\t<i>\n\t\tThis could be rendered on a Direct3D 7 level graphics card with a\n\t\tfixed-function pipeline.\n\t</i>\n</center>\n\n<h2>\n\tQuake level editors\n</h2>\n\n<hr/>\n\n<p>\n\tBrush based level geometry is very good and you can prototype levels with it\n\tvery quickly. Tramway SDK has a <code>.map</code> file converter, which\n\tconverts brushes into triangle meshes.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/trenchbroom.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/trenchbroom.png\"/>\n\t</a><br/>\n\t<i>Level being created in the Trenchbroom map editor.</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/leveleditor.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/leveleditor.png\"/>\n\t</a><br/>\n\t<i>Level being set up in the Tramway SDK level editor.</i>\n</center>\n\n<br/>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/inengine.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/inengine.png\"/>\n\t</a><br/>\n\t<i>Level with lightmaps being rendered in-engine.</i>\n</center>\n\n<p>\n\tWow! Look at this very fancy level. Not only can we create brush-based\n\tlevels, we even have an input/output system like in Source to set up \n\tinteractions between entities in levels.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/signals.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/signals.png\"/>\n\t</a><br/>\n\t<i>Very fancy interaction editor.</i>\n</center>\n\n<p>\n\tIn the future I will be implementing all of the Source logic entities, so\n\tthat you can do visual scripting right in the level editor.\n</p>\n\n<h2>\n\tFramework for RPGs\n</h2>\n\n<hr/>\n\n<p>\n\tI think that it is very interesting to see the different kinds of games that\n\tcan be created in a tool like RPG Maker. There's also tons of mods, even\n\ttotal conversions based on Morrowind. You can do a lot of stuff by changing\n\tthe data, even in the RPG mechanics have already preprogrammed.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/kitchensink.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/kitchensink.png\"/>\n\t</a><br/>\n\t<i>Editor for the RPG framework.</i>\n</center>\n\n<p>\n\tSince the engine was designed to support level streaming from the very\n\tbeginning, it should make the creation of open-world RPG-ish games very\n\tquick and very easy.\n</p>\n\n<center>\n\t<a target=\"_blank\" href=\"images/article/why/rpg.png\">\n\t\t<img class=\"resizable\" src=\"images/article/why/rpg.png\"/>\n\t</a><br/>\n\t<i>\n\t\tEveryone always says that you \"shouldn't create an open-world RPG\", but\n\t\tthat's just because they have never tried using the Trawmay SDK.\n\t</i>\n</center>\n\n<h2>\n\tTL; DR\n</h2>\n\n<hr/>\n\n<p>\n\tTramway SDK is a game engine based on Quake/Source style entities, supports\n\topen-world streaming, comes with optional extensions, like the RPG framework\n\tthat is sort like RPG Maker, but for 3D.\n</p>\n\n<p>\n\tThis project is still in very early development. APIs are unstable, stuff\n\tbreaks or just doesn't work, a lot of things still haven't been implemented,\n\tbut it's getting better very quickly.\n</p>\n\n<center>\n\t<a href=\"https://github.com/racenis/tram-sdk\">\n\t\tClick here for the Github repo!\n\t</a>\n</center>\n\n\n\n\n\t\t\t\t</td>\n\t\t\t\t<td width=\"90\" valign=\"top\" class=\"right-pane\">\n\t\t\t\t\t<img src=\"images/800x600.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/firefoxnow.gif\"/><br/>\n\t\t\t\t\t<img class=\"animated\" src=\"images/hicolor.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/blender.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/wxwidgets.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winxp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/linux.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/hatemac.jpg\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img class=\"animated\" src=\"images/discord-no-way.gif\"/><br class=\"animated\"/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/winrar.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/sdblast.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/esheep.gif\"/><br/>\n\t\t\t\t\t\n\t\t\t\t\t<img src=\"images/valid-bad.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/notepadpp.gif\"/><br/>\n\t\t\t\t\t<img src=\"images/drpepper.gif\"/><br/>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td colspan=\"3\" class=\"footer\">\n\t\t\t\t\t<center>\n\t\t\t\t\t\t<font size=\"1\">\n\t\t\t\t\t\t\t<i>Tramway SDK &copy; racenis 2021&ndash;2025</i>\n\t\t\t\t\t\t</font>\n\t\t\t\t\t</center>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>\n\t</body>\n</html>"
  },
  {
    "path": "libraries/README.md",
    "content": "# Libraries\n\nThis directory contains all of the dependencies of the framework part of the SDK.\n\nThe header files for the various libraries used in the framework are provided here, for convenience, as well as binaries for 64-bit windows, since compiling all of the libraries from source would take about an hour.\n\nSome of these libraries are not covered under the MIT license, so check before modifying them.\n\n## Bullet physics 3.17\n<https://github.com/bulletphysics/bullet3>\n\n## glm\n<https://github.com/g-truc/glm>\n\n## OpenAL-soft\n<https://github.com/kcat/openal-soft>\n\n## PortAudio 19.7.0\n<https://github.com/PortAudio/portaudio>\n\n## glad\n<https://github.com/Dav1dde/glad>\n\n## glfw\n<https://github.com/glfw/glfw>\n\n## MurmurHash2\n<https://github.com/aappleby/smhasher>\n\n## stb_image\n<https://github.com/nothings/stb/blob/master/stb_image.h>\n\n## stb_image_write\n<https://github.com/nothings/stb/blob/master/stb_image_write.h>\n\n## stb_vorbis\n<https://github.com/nothings/stb/blob/master/stb_vorbis.c>\n\n## lua 5.4.6\n<https://www.lua.org/>\n\n## SDL 2.30.4\n<https://www.libsdl.org/>\n\n## xatlas\n<https://github.com/jpcy/xatlas>\n\nThanks to everyone for licensing their work under free licenses, so that I can appropriate it."
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h",
    "content": "//Bullet Continuous Collision Detection and Physics Library\n//Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\n//\n// btAxisSweep3.h\n//\n// Copyright (c) 2006 Simon Hobbs\n//\n// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n//\n// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n//\n// 3. This notice may not be removed or altered from any source distribution.\n\n#ifndef BT_AXIS_SWEEP_3_H\n#define BT_AXIS_SWEEP_3_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btOverlappingPairCache.h\"\n#include \"btBroadphaseInterface.h\"\n#include \"btBroadphaseProxy.h\"\n#include \"btOverlappingPairCallback.h\"\n#include \"btDbvtBroadphase.h\"\n#include \"btAxisSweep3Internal.h\"\n\n/// The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase.\n/// It uses arrays rather then lists for storage of the 3 axis. Also it operates using 16 bit integer coordinates instead of floats.\n/// For large worlds and many objects, use bt32BitAxisSweep3 or btDbvtBroadphase instead. bt32BitAxisSweep3 has higher precision and allows more then 16384 objects at the cost of more memory and bit of performance.\nclass btAxisSweep3 : public btAxisSweep3Internal<unsigned short int>\n{\npublic:\n\tbtAxisSweep3(const btVector3& worldAabbMin, const btVector3& worldAabbMax, unsigned short int maxHandles = 16384, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false);\n};\n\n/// The bt32BitAxisSweep3 allows higher precision quantization and more objects compared to the btAxisSweep3 sweep and prune.\n/// This comes at the cost of more memory per handle, and a bit slower performance.\n/// It uses arrays rather then lists for storage of the 3 axis.\nclass bt32BitAxisSweep3 : public btAxisSweep3Internal<unsigned int>\n{\npublic:\n\tbt32BitAxisSweep3(const btVector3& worldAabbMin, const btVector3& worldAabbMax, unsigned int maxHandles = 1500000, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false);\n};\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3Internal.h",
    "content": "//Bullet Continuous Collision Detection and Physics Library\n//Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\n//\n// btAxisSweep3.h\n//\n// Copyright (c) 2006 Simon Hobbs\n//\n// This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n//\n// 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n//\n// 3. This notice may not be removed or altered from any source distribution.\n\n#ifndef BT_AXIS_SWEEP_3_INTERNAL_H\n#define BT_AXIS_SWEEP_3_INTERNAL_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btOverlappingPairCache.h\"\n#include \"btBroadphaseInterface.h\"\n#include \"btBroadphaseProxy.h\"\n#include \"btOverlappingPairCallback.h\"\n#include \"btDbvtBroadphase.h\"\n\n//#define DEBUG_BROADPHASE 1\n#define USE_OVERLAP_TEST_ON_REMOVES 1\n\n/// The internal templace class btAxisSweep3Internal implements the sweep and prune broadphase.\n/// It uses quantized integers to represent the begin and end points for each of the 3 axis.\n/// Dont use this class directly, use btAxisSweep3 or bt32BitAxisSweep3 instead.\ntemplate <typename BP_FP_INT_TYPE>\nclass btAxisSweep3Internal : public btBroadphaseInterface\n{\nprotected:\n\tBP_FP_INT_TYPE m_bpHandleMask;\n\tBP_FP_INT_TYPE m_handleSentinel;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tclass Edge\n\t{\n\tpublic:\n\t\tBP_FP_INT_TYPE m_pos;  // low bit is min/max\n\t\tBP_FP_INT_TYPE m_handle;\n\n\t\tBP_FP_INT_TYPE IsMax() const { return static_cast<BP_FP_INT_TYPE>(m_pos & 1); }\n\t};\n\npublic:\n\tclass Handle : public btBroadphaseProxy\n\t{\n\tpublic:\n\t\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t\t// indexes into the edge arrays\n\t\tBP_FP_INT_TYPE m_minEdges[3], m_maxEdges[3];  // 6 * 2 = 12\n\t\t\t\t\t\t\t\t\t\t\t\t\t  //\t\tBP_FP_INT_TYPE m_uniqueId;\n\t\tbtBroadphaseProxy* m_dbvtProxy;               //for faster raycast\n\t\t//void* m_pOwner; this is now in btBroadphaseProxy.m_clientObject\n\n\t\tSIMD_FORCE_INLINE void SetNextFree(BP_FP_INT_TYPE next) { m_minEdges[0] = next; }\n\t\tSIMD_FORCE_INLINE BP_FP_INT_TYPE GetNextFree() const { return m_minEdges[0]; }\n\t};  // 24 bytes + 24 for Edge structures = 44 bytes total per entry\n\nprotected:\n\tbtVector3 m_worldAabbMin;  // overall system bounds\n\tbtVector3 m_worldAabbMax;  // overall system bounds\n\n\tbtVector3 m_quantize;  // scaling factor for quantization\n\n\tBP_FP_INT_TYPE m_numHandles;  // number of active handles\n\tBP_FP_INT_TYPE m_maxHandles;  // max number of handles\n\tHandle* m_pHandles;           // handles pool\n\n\tBP_FP_INT_TYPE m_firstFreeHandle;  // free handles list\n\n\tEdge* m_pEdges[3];  // edge arrays for the 3 axes (each array has m_maxHandles * 2 + 2 sentinel entries)\n\tvoid* m_pEdgesRawPtr[3];\n\n\tbtOverlappingPairCache* m_pairCache;\n\n\t///btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache.\n\tbtOverlappingPairCallback* m_userPairCallback;\n\n\tbool m_ownsPairCache;\n\n\tint m_invalidPair;\n\n\t///additional dynamic aabb structure, used to accelerate ray cast queries.\n\t///can be disabled using a optional argument in the constructor\n\tbtDbvtBroadphase* m_raycastAccelerator;\n\tbtOverlappingPairCache* m_nullPairCache;\n\n\t// allocation/deallocation\n\tBP_FP_INT_TYPE allocHandle();\n\tvoid freeHandle(BP_FP_INT_TYPE handle);\n\n\tbool testOverlap2D(const Handle* pHandleA, const Handle* pHandleB, int axis0, int axis1);\n\n#ifdef DEBUG_BROADPHASE\n\tvoid debugPrintAxis(int axis, bool checkCardinality = true);\n#endif  //DEBUG_BROADPHASE\n\n\t//Overlap* AddOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);\n\t//void RemoveOverlap(BP_FP_INT_TYPE handleA, BP_FP_INT_TYPE handleB);\n\n\tvoid sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps);\n\tvoid sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps);\n\tvoid sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps);\n\tvoid sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps);\n\npublic:\n\tbtAxisSweep3Internal(const btVector3& worldAabbMin, const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE maxHandles = 16384, btOverlappingPairCache* pairCache = 0, bool disableRaycastAccelerator = false);\n\n\tvirtual ~btAxisSweep3Internal();\n\n\tBP_FP_INT_TYPE getNumHandles() const\n\t{\n\t\treturn m_numHandles;\n\t}\n\n\tvirtual void calculateOverlappingPairs(btDispatcher* dispatcher);\n\n\tBP_FP_INT_TYPE addHandle(const btVector3& aabbMin, const btVector3& aabbMax, void* pOwner, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher);\n\tvoid removeHandle(BP_FP_INT_TYPE handle, btDispatcher* dispatcher);\n\tvoid updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher);\n\tSIMD_FORCE_INLINE Handle* getHandle(BP_FP_INT_TYPE index) const { return m_pHandles + index; }\n\n\tvirtual void resetPool(btDispatcher* dispatcher);\n\n\tvoid processAllOverlappingPairs(btOverlapCallback* callback);\n\n\t//Broadphase Interface\n\tvirtual btBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher);\n\tvirtual void destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher);\n\tvirtual void setAabb(btBroadphaseProxy* proxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher);\n\tvirtual void getAabb(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin = btVector3(0, 0, 0), const btVector3& aabbMax = btVector3(0, 0, 0));\n\tvirtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);\n\n\tvoid quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const;\n\t///unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result\n\tvoid unQuantize(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tbool testAabbOverlap(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1);\n\n\tbtOverlappingPairCache* getOverlappingPairCache()\n\t{\n\t\treturn m_pairCache;\n\t}\n\tconst btOverlappingPairCache* getOverlappingPairCache() const\n\t{\n\t\treturn m_pairCache;\n\t}\n\n\tvoid setOverlappingPairUserCallback(btOverlappingPairCallback* pairCallback)\n\t{\n\t\tm_userPairCallback = pairCallback;\n\t}\n\tconst btOverlappingPairCallback* getOverlappingPairUserCallback() const\n\t{\n\t\treturn m_userPairCallback;\n\t}\n\n\t///getAabb returns the axis aligned bounding box in the 'global' coordinate frame\n\t///will add some transform later\n\tvirtual void getBroadphaseAabb(btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\taabbMin = m_worldAabbMin;\n\t\taabbMax = m_worldAabbMax;\n\t}\n\n\tvirtual void printStats()\n\t{\n\t\t/*\t\tprintf(\"btAxisSweep3.h\\n\");\n\t\tprintf(\"numHandles = %d, maxHandles = %d\\n\",m_numHandles,m_maxHandles);\n\t\tprintf(\"aabbMin=%f,%f,%f,aabbMax=%f,%f,%f\\n\",m_worldAabbMin.getX(),m_worldAabbMin.getY(),m_worldAabbMin.getZ(),\n\t\t\tm_worldAabbMax.getX(),m_worldAabbMax.getY(),m_worldAabbMax.getZ());\n\t\t\t*/\n\t}\n};\n\n////////////////////////////////////////////////////////////////////\n\n#ifdef DEBUG_BROADPHASE\n#include <stdio.h>\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3<BP_FP_INT_TYPE>::debugPrintAxis(int axis, bool checkCardinality)\n{\n\tint numEdges = m_pHandles[0].m_maxEdges[axis];\n\tprintf(\"SAP Axis %d, numEdges=%d\\n\", axis, numEdges);\n\n\tint i;\n\tfor (i = 0; i < numEdges + 1; i++)\n\t{\n\t\tEdge* pEdge = m_pEdges[axis] + i;\n\t\tHandle* pHandlePrev = getHandle(pEdge->m_handle);\n\t\tint handleIndex = pEdge->IsMax() ? pHandlePrev->m_maxEdges[axis] : pHandlePrev->m_minEdges[axis];\n\t\tchar beginOrEnd;\n\t\tbeginOrEnd = pEdge->IsMax() ? 'E' : 'B';\n\t\tprintf(\"\t[%c,h=%d,p=%x,i=%d]\\n\", beginOrEnd, pEdge->m_handle, pEdge->m_pos, handleIndex);\n\t}\n\n\tif (checkCardinality)\n\t\tbtAssert(numEdges == m_numHandles * 2 + 1);\n}\n#endif  //DEBUG_BROADPHASE\n\ntemplate <typename BP_FP_INT_TYPE>\nbtBroadphaseProxy* btAxisSweep3Internal<BP_FP_INT_TYPE>::createProxy(const btVector3& aabbMin, const btVector3& aabbMax, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher)\n{\n\t(void)shapeType;\n\tBP_FP_INT_TYPE handleId = addHandle(aabbMin, aabbMax, userPtr, collisionFilterGroup, collisionFilterMask, dispatcher);\n\n\tHandle* handle = getHandle(handleId);\n\n\tif (m_raycastAccelerator)\n\t{\n\t\tbtBroadphaseProxy* rayProxy = m_raycastAccelerator->createProxy(aabbMin, aabbMax, shapeType, userPtr, collisionFilterGroup, collisionFilterMask, dispatcher);\n\t\thandle->m_dbvtProxy = rayProxy;\n\t}\n\treturn handle;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher)\n{\n\tHandle* handle = static_cast<Handle*>(proxy);\n\tif (m_raycastAccelerator)\n\t\tm_raycastAccelerator->destroyProxy(handle->m_dbvtProxy, dispatcher);\n\tremoveHandle(static_cast<BP_FP_INT_TYPE>(handle->m_uniqueId), dispatcher);\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::setAabb(btBroadphaseProxy* proxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher)\n{\n\tHandle* handle = static_cast<Handle*>(proxy);\n\thandle->m_aabbMin = aabbMin;\n\thandle->m_aabbMax = aabbMax;\n\tupdateHandle(static_cast<BP_FP_INT_TYPE>(handle->m_uniqueId), aabbMin, aabbMax, dispatcher);\n\tif (m_raycastAccelerator)\n\t\tm_raycastAccelerator->setAabb(handle->m_dbvtProxy, aabbMin, aabbMax, dispatcher);\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::rayTest(const btVector3& rayFrom, const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin, const btVector3& aabbMax)\n{\n\tif (m_raycastAccelerator)\n\t{\n\t\tm_raycastAccelerator->rayTest(rayFrom, rayTo, rayCallback, aabbMin, aabbMax);\n\t}\n\telse\n\t{\n\t\t//choose axis?\n\t\tBP_FP_INT_TYPE axis = 0;\n\t\t//for each proxy\n\t\tfor (BP_FP_INT_TYPE i = 1; i < m_numHandles * 2 + 1; i++)\n\t\t{\n\t\t\tif (m_pEdges[axis][i].IsMax())\n\t\t\t{\n\t\t\t\trayCallback.process(getHandle(m_pEdges[axis][i].m_handle));\n\t\t\t}\n\t\t}\n\t}\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback)\n{\n\tif (m_raycastAccelerator)\n\t{\n\t\tm_raycastAccelerator->aabbTest(aabbMin, aabbMax, callback);\n\t}\n\telse\n\t{\n\t\t//choose axis?\n\t\tBP_FP_INT_TYPE axis = 0;\n\t\t//for each proxy\n\t\tfor (BP_FP_INT_TYPE i = 1; i < m_numHandles * 2 + 1; i++)\n\t\t{\n\t\t\tif (m_pEdges[axis][i].IsMax())\n\t\t\t{\n\t\t\t\tHandle* handle = getHandle(m_pEdges[axis][i].m_handle);\n\t\t\t\tif (TestAabbAgainstAabb2(aabbMin, aabbMax, handle->m_aabbMin, handle->m_aabbMax))\n\t\t\t\t{\n\t\t\t\t\tcallback.process(handle);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::getAabb(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const\n{\n\tHandle* pHandle = static_cast<Handle*>(proxy);\n\taabbMin = pHandle->m_aabbMin;\n\taabbMax = pHandle->m_aabbMax;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::unQuantize(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const\n{\n\tHandle* pHandle = static_cast<Handle*>(proxy);\n\n\tunsigned short vecInMin[3];\n\tunsigned short vecInMax[3];\n\n\tvecInMin[0] = m_pEdges[0][pHandle->m_minEdges[0]].m_pos;\n\tvecInMax[0] = m_pEdges[0][pHandle->m_maxEdges[0]].m_pos + 1;\n\tvecInMin[1] = m_pEdges[1][pHandle->m_minEdges[1]].m_pos;\n\tvecInMax[1] = m_pEdges[1][pHandle->m_maxEdges[1]].m_pos + 1;\n\tvecInMin[2] = m_pEdges[2][pHandle->m_minEdges[2]].m_pos;\n\tvecInMax[2] = m_pEdges[2][pHandle->m_maxEdges[2]].m_pos + 1;\n\n\taabbMin.setValue((btScalar)(vecInMin[0]) / (m_quantize.getX()), (btScalar)(vecInMin[1]) / (m_quantize.getY()), (btScalar)(vecInMin[2]) / (m_quantize.getZ()));\n\taabbMin += m_worldAabbMin;\n\n\taabbMax.setValue((btScalar)(vecInMax[0]) / (m_quantize.getX()), (btScalar)(vecInMax[1]) / (m_quantize.getY()), (btScalar)(vecInMax[2]) / (m_quantize.getZ()));\n\taabbMax += m_worldAabbMin;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nbtAxisSweep3Internal<BP_FP_INT_TYPE>::btAxisSweep3Internal(const btVector3& worldAabbMin, const btVector3& worldAabbMax, BP_FP_INT_TYPE handleMask, BP_FP_INT_TYPE handleSentinel, BP_FP_INT_TYPE userMaxHandles, btOverlappingPairCache* pairCache, bool disableRaycastAccelerator)\n\t: m_bpHandleMask(handleMask),\n\t  m_handleSentinel(handleSentinel),\n\t  m_pairCache(pairCache),\n\t  m_userPairCallback(0),\n\t  m_ownsPairCache(false),\n\t  m_invalidPair(0),\n\t  m_raycastAccelerator(0)\n{\n\tBP_FP_INT_TYPE maxHandles = static_cast<BP_FP_INT_TYPE>(userMaxHandles + 1);  //need to add one sentinel handle\n\n\tif (!m_pairCache)\n\t{\n\t\tvoid* ptr = btAlignedAlloc(sizeof(btHashedOverlappingPairCache), 16);\n\t\tm_pairCache = new (ptr) btHashedOverlappingPairCache();\n\t\tm_ownsPairCache = true;\n\t}\n\n\tif (!disableRaycastAccelerator)\n\t{\n\t\tm_nullPairCache = new (btAlignedAlloc(sizeof(btNullPairCache), 16)) btNullPairCache();\n\t\tm_raycastAccelerator = new (btAlignedAlloc(sizeof(btDbvtBroadphase), 16)) btDbvtBroadphase(m_nullPairCache);  //m_pairCache);\n\t\tm_raycastAccelerator->m_deferedcollide = true;                                                                //don't add/remove pairs\n\t}\n\n\t//btAssert(bounds.HasVolume());\n\n\t// init bounds\n\tm_worldAabbMin = worldAabbMin;\n\tm_worldAabbMax = worldAabbMax;\n\n\tbtVector3 aabbSize = m_worldAabbMax - m_worldAabbMin;\n\n\tBP_FP_INT_TYPE maxInt = m_handleSentinel;\n\n\tm_quantize = btVector3(btScalar(maxInt), btScalar(maxInt), btScalar(maxInt)) / aabbSize;\n\n\t// allocate handles buffer, using btAlignedAlloc, and put all handles on free list\n\tm_pHandles = new Handle[maxHandles];\n\n\tm_maxHandles = maxHandles;\n\tm_numHandles = 0;\n\n\t// handle 0 is reserved as the null index, and is also used as the sentinel\n\tm_firstFreeHandle = 1;\n\t{\n\t\tfor (BP_FP_INT_TYPE i = m_firstFreeHandle; i < maxHandles; i++)\n\t\t\tm_pHandles[i].SetNextFree(static_cast<BP_FP_INT_TYPE>(i + 1));\n\t\tm_pHandles[maxHandles - 1].SetNextFree(0);\n\t}\n\n\t{\n\t\t// allocate edge buffers\n\t\tfor (int i = 0; i < 3; i++)\n\t\t{\n\t\t\tm_pEdgesRawPtr[i] = btAlignedAlloc(sizeof(Edge) * maxHandles * 2, 16);\n\t\t\tm_pEdges[i] = new (m_pEdgesRawPtr[i]) Edge[maxHandles * 2];\n\t\t}\n\t}\n\t//removed overlap management\n\n\t// make boundary sentinels\n\n\tm_pHandles[0].m_clientObject = 0;\n\n\tfor (int axis = 0; axis < 3; axis++)\n\t{\n\t\tm_pHandles[0].m_minEdges[axis] = 0;\n\t\tm_pHandles[0].m_maxEdges[axis] = 1;\n\n\t\tm_pEdges[axis][0].m_pos = 0;\n\t\tm_pEdges[axis][0].m_handle = 0;\n\t\tm_pEdges[axis][1].m_pos = m_handleSentinel;\n\t\tm_pEdges[axis][1].m_handle = 0;\n#ifdef DEBUG_BROADPHASE\n\t\tdebugPrintAxis(axis);\n#endif  //DEBUG_BROADPHASE\n\t}\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nbtAxisSweep3Internal<BP_FP_INT_TYPE>::~btAxisSweep3Internal()\n{\n\tif (m_raycastAccelerator)\n\t{\n\t\tm_nullPairCache->~btOverlappingPairCache();\n\t\tbtAlignedFree(m_nullPairCache);\n\t\tm_raycastAccelerator->~btDbvtBroadphase();\n\t\tbtAlignedFree(m_raycastAccelerator);\n\t}\n\n\tfor (int i = 2; i >= 0; i--)\n\t{\n\t\tbtAlignedFree(m_pEdgesRawPtr[i]);\n\t}\n\tdelete[] m_pHandles;\n\n\tif (m_ownsPairCache)\n\t{\n\t\tm_pairCache->~btOverlappingPairCache();\n\t\tbtAlignedFree(m_pairCache);\n\t}\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::quantize(BP_FP_INT_TYPE* out, const btVector3& point, int isMax) const\n{\n#ifdef OLD_CLAMPING_METHOD\n\t///problem with this clamping method is that the floating point during quantization might still go outside the range [(0|isMax) .. (m_handleSentinel&m_bpHandleMask]|isMax]\n\t///see http://code.google.com/p/bullet/issues/detail?id=87\n\tbtVector3 clampedPoint(point);\n\tclampedPoint.setMax(m_worldAabbMin);\n\tclampedPoint.setMin(m_worldAabbMax);\n\tbtVector3 v = (clampedPoint - m_worldAabbMin) * m_quantize;\n\tout[0] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getX() & m_bpHandleMask) | isMax);\n\tout[1] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getY() & m_bpHandleMask) | isMax);\n\tout[2] = (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v.getZ() & m_bpHandleMask) | isMax);\n#else\n\tbtVector3 v = (point - m_worldAabbMin) * m_quantize;\n\tout[0] = (v[0] <= 0) ? (BP_FP_INT_TYPE)isMax : (v[0] >= m_handleSentinel) ? (BP_FP_INT_TYPE)((m_handleSentinel & m_bpHandleMask) | isMax) : (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[0] & m_bpHandleMask) | isMax);\n\tout[1] = (v[1] <= 0) ? (BP_FP_INT_TYPE)isMax : (v[1] >= m_handleSentinel) ? (BP_FP_INT_TYPE)((m_handleSentinel & m_bpHandleMask) | isMax) : (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[1] & m_bpHandleMask) | isMax);\n\tout[2] = (v[2] <= 0) ? (BP_FP_INT_TYPE)isMax : (v[2] >= m_handleSentinel) ? (BP_FP_INT_TYPE)((m_handleSentinel & m_bpHandleMask) | isMax) : (BP_FP_INT_TYPE)(((BP_FP_INT_TYPE)v[2] & m_bpHandleMask) | isMax);\n#endif  //OLD_CLAMPING_METHOD\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nBP_FP_INT_TYPE btAxisSweep3Internal<BP_FP_INT_TYPE>::allocHandle()\n{\n\tbtAssert(m_firstFreeHandle);\n\n\tBP_FP_INT_TYPE handle = m_firstFreeHandle;\n\tm_firstFreeHandle = getHandle(handle)->GetNextFree();\n\tm_numHandles++;\n\n\treturn handle;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::freeHandle(BP_FP_INT_TYPE handle)\n{\n\tbtAssert(handle > 0 && handle < m_maxHandles);\n\n\tgetHandle(handle)->SetNextFree(m_firstFreeHandle);\n\tm_firstFreeHandle = handle;\n\n\tm_numHandles--;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nBP_FP_INT_TYPE btAxisSweep3Internal<BP_FP_INT_TYPE>::addHandle(const btVector3& aabbMin, const btVector3& aabbMax, void* pOwner, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher)\n{\n\t// quantize the bounds\n\tBP_FP_INT_TYPE min[3], max[3];\n\tquantize(min, aabbMin, 0);\n\tquantize(max, aabbMax, 1);\n\n\t// allocate a handle\n\tBP_FP_INT_TYPE handle = allocHandle();\n\n\tHandle* pHandle = getHandle(handle);\n\n\tpHandle->m_uniqueId = static_cast<int>(handle);\n\t//pHandle->m_pOverlaps = 0;\n\tpHandle->m_clientObject = pOwner;\n\tpHandle->m_collisionFilterGroup = collisionFilterGroup;\n\tpHandle->m_collisionFilterMask = collisionFilterMask;\n\n\t// compute current limit of edge arrays\n\tBP_FP_INT_TYPE limit = static_cast<BP_FP_INT_TYPE>(m_numHandles * 2);\n\n\t// insert new edges just inside the max boundary edge\n\tfor (BP_FP_INT_TYPE axis = 0; axis < 3; axis++)\n\t{\n\t\tm_pHandles[0].m_maxEdges[axis] += 2;\n\n\t\tm_pEdges[axis][limit + 1] = m_pEdges[axis][limit - 1];\n\n\t\tm_pEdges[axis][limit - 1].m_pos = min[axis];\n\t\tm_pEdges[axis][limit - 1].m_handle = handle;\n\n\t\tm_pEdges[axis][limit].m_pos = max[axis];\n\t\tm_pEdges[axis][limit].m_handle = handle;\n\n\t\tpHandle->m_minEdges[axis] = static_cast<BP_FP_INT_TYPE>(limit - 1);\n\t\tpHandle->m_maxEdges[axis] = limit;\n\t}\n\n\t// now sort the new edges to their correct position\n\tsortMinDown(0, pHandle->m_minEdges[0], dispatcher, false);\n\tsortMaxDown(0, pHandle->m_maxEdges[0], dispatcher, false);\n\tsortMinDown(1, pHandle->m_minEdges[1], dispatcher, false);\n\tsortMaxDown(1, pHandle->m_maxEdges[1], dispatcher, false);\n\tsortMinDown(2, pHandle->m_minEdges[2], dispatcher, true);\n\tsortMaxDown(2, pHandle->m_maxEdges[2], dispatcher, true);\n\n\treturn handle;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::removeHandle(BP_FP_INT_TYPE handle, btDispatcher* dispatcher)\n{\n\tHandle* pHandle = getHandle(handle);\n\n\t//explicitly remove the pairs containing the proxy\n\t//we could do it also in the sortMinUp (passing true)\n\t///@todo: compare performance\n\tif (!m_pairCache->hasDeferredRemoval())\n\t{\n\t\tm_pairCache->removeOverlappingPairsContainingProxy(pHandle, dispatcher);\n\t}\n\n\t// compute current limit of edge arrays\n\tint limit = static_cast<int>(m_numHandles * 2);\n\n\tint axis;\n\n\tfor (axis = 0; axis < 3; axis++)\n\t{\n\t\tm_pHandles[0].m_maxEdges[axis] -= 2;\n\t}\n\n\t// remove the edges by sorting them up to the end of the list\n\tfor (axis = 0; axis < 3; axis++)\n\t{\n\t\tEdge* pEdges = m_pEdges[axis];\n\t\tBP_FP_INT_TYPE max = pHandle->m_maxEdges[axis];\n\t\tpEdges[max].m_pos = m_handleSentinel;\n\n\t\tsortMaxUp(axis, max, dispatcher, false);\n\n\t\tBP_FP_INT_TYPE i = pHandle->m_minEdges[axis];\n\t\tpEdges[i].m_pos = m_handleSentinel;\n\n\t\tsortMinUp(axis, i, dispatcher, false);\n\n\t\tpEdges[limit - 1].m_handle = 0;\n\t\tpEdges[limit - 1].m_pos = m_handleSentinel;\n\n#ifdef DEBUG_BROADPHASE\n\t\tdebugPrintAxis(axis, false);\n#endif  //DEBUG_BROADPHASE\n\t}\n\n\t// free the handle\n\tfreeHandle(handle);\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::resetPool(btDispatcher* /*dispatcher*/)\n{\n\tif (m_numHandles == 0)\n\t{\n\t\tm_firstFreeHandle = 1;\n\t\t{\n\t\t\tfor (BP_FP_INT_TYPE i = m_firstFreeHandle; i < m_maxHandles; i++)\n\t\t\t\tm_pHandles[i].SetNextFree(static_cast<BP_FP_INT_TYPE>(i + 1));\n\t\t\tm_pHandles[m_maxHandles - 1].SetNextFree(0);\n\t\t}\n\t}\n}\n\n//#include <stdio.h>\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::calculateOverlappingPairs(btDispatcher* dispatcher)\n{\n\tif (m_pairCache->hasDeferredRemoval())\n\t{\n\t\tbtBroadphasePairArray& overlappingPairArray = m_pairCache->getOverlappingPairArray();\n\n\t\t//perform a sort, to find duplicates and to sort 'invalid' pairs to the end\n\t\toverlappingPairArray.quickSort(btBroadphasePairSortPredicate());\n\n\t\toverlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair);\n\t\tm_invalidPair = 0;\n\n\t\tint i;\n\n\t\tbtBroadphasePair previousPair;\n\t\tpreviousPair.m_pProxy0 = 0;\n\t\tpreviousPair.m_pProxy1 = 0;\n\t\tpreviousPair.m_algorithm = 0;\n\n\t\tfor (i = 0; i < overlappingPairArray.size(); i++)\n\t\t{\n\t\t\tbtBroadphasePair& pair = overlappingPairArray[i];\n\n\t\t\tbool isDuplicate = (pair == previousPair);\n\n\t\t\tpreviousPair = pair;\n\n\t\t\tbool needsRemoval = false;\n\n\t\t\tif (!isDuplicate)\n\t\t\t{\n\t\t\t\t///important to use an AABB test that is consistent with the broadphase\n\t\t\t\tbool hasOverlap = testAabbOverlap(pair.m_pProxy0, pair.m_pProxy1);\n\n\t\t\t\tif (hasOverlap)\n\t\t\t\t{\n\t\t\t\t\tneedsRemoval = false;  //callback->processOverlap(pair);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tneedsRemoval = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//remove duplicate\n\t\t\t\tneedsRemoval = true;\n\t\t\t\t//should have no algorithm\n\t\t\t\tbtAssert(!pair.m_algorithm);\n\t\t\t}\n\n\t\t\tif (needsRemoval)\n\t\t\t{\n\t\t\t\tm_pairCache->cleanOverlappingPair(pair, dispatcher);\n\n\t\t\t\t//\t\tm_overlappingPairArray.swap(i,m_overlappingPairArray.size()-1);\n\t\t\t\t//\t\tm_overlappingPairArray.pop_back();\n\t\t\t\tpair.m_pProxy0 = 0;\n\t\t\t\tpair.m_pProxy1 = 0;\n\t\t\t\tm_invalidPair++;\n\t\t\t}\n\t\t}\n\n///if you don't like to skip the invalid pairs in the array, execute following code:\n#define CLEAN_INVALID_PAIRS 1\n#ifdef CLEAN_INVALID_PAIRS\n\n\t\t//perform a sort, to sort 'invalid' pairs to the end\n\t\toverlappingPairArray.quickSort(btBroadphasePairSortPredicate());\n\n\t\toverlappingPairArray.resize(overlappingPairArray.size() - m_invalidPair);\n\t\tm_invalidPair = 0;\n#endif  //CLEAN_INVALID_PAIRS\n\n\t\t//printf(\"overlappingPairArray.size()=%d\\n\",overlappingPairArray.size());\n\t}\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nbool btAxisSweep3Internal<BP_FP_INT_TYPE>::testAabbOverlap(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1)\n{\n\tconst Handle* pHandleA = static_cast<Handle*>(proxy0);\n\tconst Handle* pHandleB = static_cast<Handle*>(proxy1);\n\n\t//optimization 1: check the array index (memory address), instead of the m_pos\n\n\tfor (int axis = 0; axis < 3; axis++)\n\t{\n\t\tif (pHandleA->m_maxEdges[axis] < pHandleB->m_minEdges[axis] ||\n\t\t\tpHandleB->m_maxEdges[axis] < pHandleA->m_minEdges[axis])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nbool btAxisSweep3Internal<BP_FP_INT_TYPE>::testOverlap2D(const Handle* pHandleA, const Handle* pHandleB, int axis0, int axis1)\n{\n\t//optimization 1: check the array index (memory address), instead of the m_pos\n\n\tif (pHandleA->m_maxEdges[axis0] < pHandleB->m_minEdges[axis0] ||\n\t\tpHandleB->m_maxEdges[axis0] < pHandleA->m_minEdges[axis0] ||\n\t\tpHandleA->m_maxEdges[axis1] < pHandleB->m_minEdges[axis1] ||\n\t\tpHandleB->m_maxEdges[axis1] < pHandleA->m_minEdges[axis1])\n\t{\n\t\treturn false;\n\t}\n\treturn true;\n}\n\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::updateHandle(BP_FP_INT_TYPE handle, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher)\n{\n\t//\tbtAssert(bounds.IsFinite());\n\t//btAssert(bounds.HasVolume());\n\n\tHandle* pHandle = getHandle(handle);\n\n\t// quantize the new bounds\n\tBP_FP_INT_TYPE min[3], max[3];\n\tquantize(min, aabbMin, 0);\n\tquantize(max, aabbMax, 1);\n\n\t// update changed edges\n\tfor (int axis = 0; axis < 3; axis++)\n\t{\n\t\tBP_FP_INT_TYPE emin = pHandle->m_minEdges[axis];\n\t\tBP_FP_INT_TYPE emax = pHandle->m_maxEdges[axis];\n\n\t\tint dmin = (int)min[axis] - (int)m_pEdges[axis][emin].m_pos;\n\t\tint dmax = (int)max[axis] - (int)m_pEdges[axis][emax].m_pos;\n\n\t\tm_pEdges[axis][emin].m_pos = min[axis];\n\t\tm_pEdges[axis][emax].m_pos = max[axis];\n\n\t\t// expand (only adds overlaps)\n\t\tif (dmin < 0)\n\t\t\tsortMinDown(axis, emin, dispatcher, true);\n\n\t\tif (dmax > 0)\n\t\t\tsortMaxUp(axis, emax, dispatcher, true);\n\n\t\t// shrink (only removes overlaps)\n\t\tif (dmin > 0)\n\t\t\tsortMinUp(axis, emin, dispatcher, true);\n\n\t\tif (dmax < 0)\n\t\t\tsortMaxDown(axis, emax, dispatcher, true);\n\n#ifdef DEBUG_BROADPHASE\n\t\tdebugPrintAxis(axis);\n#endif  //DEBUG_BROADPHASE\n\t}\n}\n\n// sorting a min edge downwards can only ever *add* overlaps\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMinDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps)\n{\n\tEdge* pEdge = m_pEdges[axis] + edge;\n\tEdge* pPrev = pEdge - 1;\n\tHandle* pHandleEdge = getHandle(pEdge->m_handle);\n\n\twhile (pEdge->m_pos < pPrev->m_pos)\n\t{\n\t\tHandle* pHandlePrev = getHandle(pPrev->m_handle);\n\n\t\tif (pPrev->IsMax())\n\t\t{\n\t\t\t// if previous edge is a maximum check the bounds and add an overlap if necessary\n\t\t\tconst int axis1 = (1 << axis) & 3;\n\t\t\tconst int axis2 = (1 << axis1) & 3;\n\t\t\tif (updateOverlaps && testOverlap2D(pHandleEdge, pHandlePrev, axis1, axis2))\n\t\t\t{\n\t\t\t\tm_pairCache->addOverlappingPair(pHandleEdge, pHandlePrev);\n\t\t\t\tif (m_userPairCallback)\n\t\t\t\t\tm_userPairCallback->addOverlappingPair(pHandleEdge, pHandlePrev);\n\n\t\t\t\t//AddOverlap(pEdge->m_handle, pPrev->m_handle);\n\t\t\t}\n\n\t\t\t// update edge reference in other handle\n\t\t\tpHandlePrev->m_maxEdges[axis]++;\n\t\t}\n\t\telse\n\t\t\tpHandlePrev->m_minEdges[axis]++;\n\n\t\tpHandleEdge->m_minEdges[axis]--;\n\n\t\t// swap the edges\n\t\tEdge swap = *pEdge;\n\t\t*pEdge = *pPrev;\n\t\t*pPrev = swap;\n\n\t\t// decrement\n\t\tpEdge--;\n\t\tpPrev--;\n\t}\n\n#ifdef DEBUG_BROADPHASE\n\tdebugPrintAxis(axis);\n#endif  //DEBUG_BROADPHASE\n}\n\n// sorting a min edge upwards can only ever *remove* overlaps\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMinUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps)\n{\n\tEdge* pEdge = m_pEdges[axis] + edge;\n\tEdge* pNext = pEdge + 1;\n\tHandle* pHandleEdge = getHandle(pEdge->m_handle);\n\n\twhile (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos))\n\t{\n\t\tHandle* pHandleNext = getHandle(pNext->m_handle);\n\n\t\tif (pNext->IsMax())\n\t\t{\n\t\t\tHandle* handle0 = getHandle(pEdge->m_handle);\n\t\t\tHandle* handle1 = getHandle(pNext->m_handle);\n\t\t\tconst int axis1 = (1 << axis) & 3;\n\t\t\tconst int axis2 = (1 << axis1) & 3;\n\n\t\t\t// if next edge is maximum remove any overlap between the two handles\n\t\t\tif (updateOverlaps\n#ifdef USE_OVERLAP_TEST_ON_REMOVES\n\t\t\t\t&& testOverlap2D(handle0, handle1, axis1, axis2)\n#endif  //USE_OVERLAP_TEST_ON_REMOVES\n\t\t\t)\n\t\t\t{\n\t\t\t\tm_pairCache->removeOverlappingPair(handle0, handle1, dispatcher);\n\t\t\t\tif (m_userPairCallback)\n\t\t\t\t\tm_userPairCallback->removeOverlappingPair(handle0, handle1, dispatcher);\n\t\t\t}\n\n\t\t\t// update edge reference in other handle\n\t\t\tpHandleNext->m_maxEdges[axis]--;\n\t\t}\n\t\telse\n\t\t\tpHandleNext->m_minEdges[axis]--;\n\n\t\tpHandleEdge->m_minEdges[axis]++;\n\n\t\t// swap the edges\n\t\tEdge swap = *pEdge;\n\t\t*pEdge = *pNext;\n\t\t*pNext = swap;\n\n\t\t// increment\n\t\tpEdge++;\n\t\tpNext++;\n\t}\n}\n\n// sorting a max edge downwards can only ever *remove* overlaps\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMaxDown(int axis, BP_FP_INT_TYPE edge, btDispatcher* dispatcher, bool updateOverlaps)\n{\n\tEdge* pEdge = m_pEdges[axis] + edge;\n\tEdge* pPrev = pEdge - 1;\n\tHandle* pHandleEdge = getHandle(pEdge->m_handle);\n\n\twhile (pEdge->m_pos < pPrev->m_pos)\n\t{\n\t\tHandle* pHandlePrev = getHandle(pPrev->m_handle);\n\n\t\tif (!pPrev->IsMax())\n\t\t{\n\t\t\t// if previous edge was a minimum remove any overlap between the two handles\n\t\t\tHandle* handle0 = getHandle(pEdge->m_handle);\n\t\t\tHandle* handle1 = getHandle(pPrev->m_handle);\n\t\t\tconst int axis1 = (1 << axis) & 3;\n\t\t\tconst int axis2 = (1 << axis1) & 3;\n\n\t\t\tif (updateOverlaps\n#ifdef USE_OVERLAP_TEST_ON_REMOVES\n\t\t\t\t&& testOverlap2D(handle0, handle1, axis1, axis2)\n#endif  //USE_OVERLAP_TEST_ON_REMOVES\n\t\t\t)\n\t\t\t{\n\t\t\t\t//this is done during the overlappingpairarray iteration/narrowphase collision\n\n\t\t\t\tm_pairCache->removeOverlappingPair(handle0, handle1, dispatcher);\n\t\t\t\tif (m_userPairCallback)\n\t\t\t\t\tm_userPairCallback->removeOverlappingPair(handle0, handle1, dispatcher);\n\t\t\t}\n\n\t\t\t// update edge reference in other handle\n\t\t\tpHandlePrev->m_minEdges[axis]++;\n\t\t\t;\n\t\t}\n\t\telse\n\t\t\tpHandlePrev->m_maxEdges[axis]++;\n\n\t\tpHandleEdge->m_maxEdges[axis]--;\n\n\t\t// swap the edges\n\t\tEdge swap = *pEdge;\n\t\t*pEdge = *pPrev;\n\t\t*pPrev = swap;\n\n\t\t// decrement\n\t\tpEdge--;\n\t\tpPrev--;\n\t}\n\n#ifdef DEBUG_BROADPHASE\n\tdebugPrintAxis(axis);\n#endif  //DEBUG_BROADPHASE\n}\n\n// sorting a max edge upwards can only ever *add* overlaps\ntemplate <typename BP_FP_INT_TYPE>\nvoid btAxisSweep3Internal<BP_FP_INT_TYPE>::sortMaxUp(int axis, BP_FP_INT_TYPE edge, btDispatcher* /* dispatcher */, bool updateOverlaps)\n{\n\tEdge* pEdge = m_pEdges[axis] + edge;\n\tEdge* pNext = pEdge + 1;\n\tHandle* pHandleEdge = getHandle(pEdge->m_handle);\n\n\twhile (pNext->m_handle && (pEdge->m_pos >= pNext->m_pos))\n\t{\n\t\tHandle* pHandleNext = getHandle(pNext->m_handle);\n\n\t\tconst int axis1 = (1 << axis) & 3;\n\t\tconst int axis2 = (1 << axis1) & 3;\n\n\t\tif (!pNext->IsMax())\n\t\t{\n\t\t\t// if next edge is a minimum check the bounds and add an overlap if necessary\n\t\t\tif (updateOverlaps && testOverlap2D(pHandleEdge, pHandleNext, axis1, axis2))\n\t\t\t{\n\t\t\t\tHandle* handle0 = getHandle(pEdge->m_handle);\n\t\t\t\tHandle* handle1 = getHandle(pNext->m_handle);\n\t\t\t\tm_pairCache->addOverlappingPair(handle0, handle1);\n\t\t\t\tif (m_userPairCallback)\n\t\t\t\t\tm_userPairCallback->addOverlappingPair(handle0, handle1);\n\t\t\t}\n\n\t\t\t// update edge reference in other handle\n\t\t\tpHandleNext->m_minEdges[axis]--;\n\t\t}\n\t\telse\n\t\t\tpHandleNext->m_maxEdges[axis]--;\n\n\t\tpHandleEdge->m_maxEdges[axis]++;\n\n\t\t// swap the edges\n\t\tEdge swap = *pEdge;\n\t\t*pEdge = *pNext;\n\t\t*pNext = swap;\n\n\t\t// increment\n\t\tpEdge++;\n\t\tpNext++;\n\t}\n}\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BROADPHASE_INTERFACE_H\n#define BT_BROADPHASE_INTERFACE_H\n\nstruct btDispatcherInfo;\nclass btDispatcher;\n#include \"btBroadphaseProxy.h\"\n\nclass btOverlappingPairCache;\n\nstruct btBroadphaseAabbCallback\n{\n\tvirtual ~btBroadphaseAabbCallback() {}\n\tvirtual bool process(const btBroadphaseProxy* proxy) = 0;\n};\n\nstruct btBroadphaseRayCallback : public btBroadphaseAabbCallback\n{\n\t///added some cached data to accelerate ray-AABB tests\n\tbtVector3 m_rayDirectionInverse;\n\tunsigned int m_signs[3];\n\tbtScalar m_lambda_max;\n\n\tvirtual ~btBroadphaseRayCallback() {}\n\nprotected:\n\tbtBroadphaseRayCallback() {}\n};\n\n#include \"LinearMath/btVector3.h\"\n\n///The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs.\n///Some implementations for this broadphase interface include btAxisSweep3, bt32BitAxisSweep3 and btDbvtBroadphase.\n///The actual overlapping pair management, storage, adding and removing of pairs is dealt by the btOverlappingPairCache class.\nclass btBroadphaseInterface\n{\npublic:\n\tvirtual ~btBroadphaseInterface() {}\n\n\tvirtual btBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher) = 0;\n\tvirtual void destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher) = 0;\n\tvirtual void setAabb(btBroadphaseProxy* proxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher) = 0;\n\tvirtual void getAabb(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const = 0;\n\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin = btVector3(0, 0, 0), const btVector3& aabbMax = btVector3(0, 0, 0)) = 0;\n\n\tvirtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback) = 0;\n\n\t///calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb\n\tvirtual void calculateOverlappingPairs(btDispatcher* dispatcher) = 0;\n\n\tvirtual btOverlappingPairCache* getOverlappingPairCache() = 0;\n\tvirtual const btOverlappingPairCache* getOverlappingPairCache() const = 0;\n\n\t///getAabb returns the axis aligned bounding box in the 'global' coordinate frame\n\t///will add some transform later\n\tvirtual void getBroadphaseAabb(btVector3& aabbMin, btVector3& aabbMax) const = 0;\n\n\t///reset broadphase internal structures, to ensure determinism/reproducability\n\tvirtual void resetPool(btDispatcher* dispatcher) { (void)dispatcher; };\n\n\tvirtual void printStats() = 0;\n};\n\n#endif  //BT_BROADPHASE_INTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BROADPHASE_PROXY_H\n#define BT_BROADPHASE_PROXY_H\n\n#include \"LinearMath/btScalar.h\"  //for SIMD_FORCE_INLINE\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n\n/// btDispatcher uses these types\n/// IMPORTANT NOTE:The types are ordered polyhedral, implicit convex and concave\n/// to facilitate type checking\n/// CUSTOM_POLYHEDRAL_SHAPE_TYPE,CUSTOM_CONVEX_SHAPE_TYPE and CUSTOM_CONCAVE_SHAPE_TYPE can be used to extend Bullet without modifying source code\nenum BroadphaseNativeTypes\n{\n\t// polyhedral convex shapes\n\tBOX_SHAPE_PROXYTYPE,\n\tTRIANGLE_SHAPE_PROXYTYPE,\n\tTETRAHEDRAL_SHAPE_PROXYTYPE,\n\tCONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE,\n\tCONVEX_HULL_SHAPE_PROXYTYPE,\n\tCONVEX_POINT_CLOUD_SHAPE_PROXYTYPE,\n\tCUSTOM_POLYHEDRAL_SHAPE_TYPE,\n\t//implicit convex shapes\n\tIMPLICIT_CONVEX_SHAPES_START_HERE,\n\tSPHERE_SHAPE_PROXYTYPE,\n\tMULTI_SPHERE_SHAPE_PROXYTYPE,\n\tCAPSULE_SHAPE_PROXYTYPE,\n\tCONE_SHAPE_PROXYTYPE,\n\tCONVEX_SHAPE_PROXYTYPE,\n\tCYLINDER_SHAPE_PROXYTYPE,\n\tUNIFORM_SCALING_SHAPE_PROXYTYPE,\n\tMINKOWSKI_SUM_SHAPE_PROXYTYPE,\n\tMINKOWSKI_DIFFERENCE_SHAPE_PROXYTYPE,\n\tBOX_2D_SHAPE_PROXYTYPE,\n\tCONVEX_2D_SHAPE_PROXYTYPE,\n\tCUSTOM_CONVEX_SHAPE_TYPE,\n\t//concave shapes\n\tCONCAVE_SHAPES_START_HERE,\n\t//keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy!\n\tTRIANGLE_MESH_SHAPE_PROXYTYPE,\n\tSCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE,\n\t///used for demo integration FAST/Swift collision library and Bullet\n\tFAST_CONCAVE_MESH_PROXYTYPE,\n\t//terrain\n\tTERRAIN_SHAPE_PROXYTYPE,\n\t///Used for GIMPACT Trimesh integration\n\tGIMPACT_SHAPE_PROXYTYPE,\n\t///Multimaterial mesh\n\tMULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE,\n\n\tEMPTY_SHAPE_PROXYTYPE,\n\tSTATIC_PLANE_PROXYTYPE,\n\tCUSTOM_CONCAVE_SHAPE_TYPE,\n\tSDF_SHAPE_PROXYTYPE = CUSTOM_CONCAVE_SHAPE_TYPE,\n\tCONCAVE_SHAPES_END_HERE,\n\n\tCOMPOUND_SHAPE_PROXYTYPE,\n\n\tSOFTBODY_SHAPE_PROXYTYPE,\n\tHFFLUID_SHAPE_PROXYTYPE,\n\tHFFLUID_BUOYANT_CONVEX_SHAPE_PROXYTYPE,\n\tINVALID_SHAPE_PROXYTYPE,\n\n\tMAX_BROADPHASE_COLLISION_TYPES\n\n};\n\n///The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.\n///It stores collision shape type information, collision filter information and a client object, typically a btCollisionObject or btRigidBody.\nATTRIBUTE_ALIGNED16(struct)\nbtBroadphaseProxy\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t///optional filtering to cull potential collisions\n\tenum CollisionFilterGroups\n\t{\n\t\tDefaultFilter = 1,\n\t\tStaticFilter = 2,\n\t\tKinematicFilter = 4,\n\t\tDebrisFilter = 8,\n\t\tSensorTrigger = 16,\n\t\tCharacterFilter = 32,\n\t\tAllFilter = -1  //all bits sets: DefaultFilter | StaticFilter | KinematicFilter | DebrisFilter | SensorTrigger\n\t};\n\n\t//Usually the client btCollisionObject or Rigidbody class\n\tvoid* m_clientObject;\n\tint m_collisionFilterGroup;\n\tint m_collisionFilterMask;\n\n\tint m_uniqueId;  //m_uniqueId is introduced for paircache. could get rid of this, by calculating the address offset etc.\n\n\tbtVector3 m_aabbMin;\n\tbtVector3 m_aabbMax;\n\n\tSIMD_FORCE_INLINE int getUid() const\n\t{\n\t\treturn m_uniqueId;\n\t}\n\n\t//used for memory pools\n\tbtBroadphaseProxy() : m_clientObject(0)\n\t{\n\t}\n\n\tbtBroadphaseProxy(const btVector3& aabbMin, const btVector3& aabbMax, void* userPtr, int collisionFilterGroup, int collisionFilterMask)\n\t\t: m_clientObject(userPtr),\n\t\t  m_collisionFilterGroup(collisionFilterGroup),\n\t\t  m_collisionFilterMask(collisionFilterMask),\n\t\t  m_aabbMin(aabbMin),\n\t\t  m_aabbMax(aabbMax)\n\t{\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isPolyhedral(int proxyType)\n\t{\n\t\treturn (proxyType < IMPLICIT_CONVEX_SHAPES_START_HERE);\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isConvex(int proxyType)\n\t{\n\t\treturn (proxyType < CONCAVE_SHAPES_START_HERE);\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isNonMoving(int proxyType)\n\t{\n\t\treturn (isConcave(proxyType) && !(proxyType == GIMPACT_SHAPE_PROXYTYPE));\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isConcave(int proxyType)\n\t{\n\t\treturn ((proxyType > CONCAVE_SHAPES_START_HERE) &&\n\t\t\t\t(proxyType < CONCAVE_SHAPES_END_HERE));\n\t}\n\tstatic SIMD_FORCE_INLINE bool isCompound(int proxyType)\n\t{\n\t\treturn (proxyType == COMPOUND_SHAPE_PROXYTYPE);\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isSoftBody(int proxyType)\n\t{\n\t\treturn (proxyType == SOFTBODY_SHAPE_PROXYTYPE);\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isInfinite(int proxyType)\n\t{\n\t\treturn (proxyType == STATIC_PLANE_PROXYTYPE);\n\t}\n\n\tstatic SIMD_FORCE_INLINE bool isConvex2d(int proxyType)\n\t{\n\t\treturn (proxyType == BOX_2D_SHAPE_PROXYTYPE) || (proxyType == CONVEX_2D_SHAPE_PROXYTYPE);\n\t}\n};\n\nclass btCollisionAlgorithm;\n\nstruct btBroadphaseProxy;\n\n///The btBroadphasePair class contains a pair of aabb-overlapping objects.\n///A btDispatcher can search a btCollisionAlgorithm that performs exact/narrowphase collision detection on the actual collision shapes.\nATTRIBUTE_ALIGNED16(struct)\nbtBroadphasePair\n{\n\tbtBroadphasePair()\n\t\t: m_pProxy0(0),\n\t\t  m_pProxy1(0),\n\t\t  m_algorithm(0),\n\t\t  m_internalInfo1(0)\n\t{\n\t}\n\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtBroadphasePair(btBroadphaseProxy & proxy0, btBroadphaseProxy & proxy1)\n\t{\n\t\t//keep them sorted, so the std::set operations work\n\t\tif (proxy0.m_uniqueId < proxy1.m_uniqueId)\n\t\t{\n\t\t\tm_pProxy0 = &proxy0;\n\t\t\tm_pProxy1 = &proxy1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_pProxy0 = &proxy1;\n\t\t\tm_pProxy1 = &proxy0;\n\t\t}\n\n\t\tm_algorithm = 0;\n\t\tm_internalInfo1 = 0;\n\t}\n\n\tbtBroadphaseProxy* m_pProxy0;\n\tbtBroadphaseProxy* m_pProxy1;\n\n\tmutable btCollisionAlgorithm* m_algorithm;\n\tunion {\n\t\tvoid* m_internalInfo1;\n\t\tint m_internalTmpValue;\n\t};  //don't use this data, it will be removed in future version.\n};\n\n/*\n//comparison for set operation, see Solid DT_Encounter\nSIMD_FORCE_INLINE bool operator<(const btBroadphasePair& a, const btBroadphasePair& b) \n{ \n    return a.m_pProxy0 < b.m_pProxy0 || \n        (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 < b.m_pProxy1); \n}\n*/\n\nclass btBroadphasePairSortPredicate\n{\npublic:\n\tbool operator()(const btBroadphasePair& a, const btBroadphasePair& b) const\n\t{\n\t\tconst int uidA0 = a.m_pProxy0 ? a.m_pProxy0->m_uniqueId : -1;\n\t\tconst int uidB0 = b.m_pProxy0 ? b.m_pProxy0->m_uniqueId : -1;\n\t\tconst int uidA1 = a.m_pProxy1 ? a.m_pProxy1->m_uniqueId : -1;\n\t\tconst int uidB1 = b.m_pProxy1 ? b.m_pProxy1->m_uniqueId : -1;\n\n\t\treturn uidA0 > uidB0 ||\n\t\t\t   (a.m_pProxy0 == b.m_pProxy0 && uidA1 > uidB1) ||\n\t\t\t   (a.m_pProxy0 == b.m_pProxy0 && a.m_pProxy1 == b.m_pProxy1 && a.m_algorithm > b.m_algorithm);\n\t}\n};\n\nSIMD_FORCE_INLINE bool operator==(const btBroadphasePair& a, const btBroadphasePair& b)\n{\n\treturn (a.m_pProxy0 == b.m_pProxy0) && (a.m_pProxy1 == b.m_pProxy1);\n}\n\n#endif  //BT_BROADPHASE_PROXY_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_ALGORITHM_H\n#define BT_COLLISION_ALGORITHM_H\n\n#include \"LinearMath/btScalar.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\nstruct btBroadphaseProxy;\nclass btDispatcher;\nclass btManifoldResult;\nclass btCollisionObject;\nstruct btCollisionObjectWrapper;\nstruct btDispatcherInfo;\nclass btPersistentManifold;\n\ntypedef btAlignedObjectArray<btPersistentManifold*> btManifoldArray;\n\nstruct btCollisionAlgorithmConstructionInfo\n{\n\tbtCollisionAlgorithmConstructionInfo()\n\t\t: m_dispatcher1(0),\n\t\t  m_manifold(0)\n\t{\n\t}\n\tbtCollisionAlgorithmConstructionInfo(btDispatcher* dispatcher, int temp)\n\t\t: m_dispatcher1(dispatcher)\n\t{\n\t\t(void)temp;\n\t}\n\n\tbtDispatcher* m_dispatcher1;\n\tbtPersistentManifold* m_manifold;\n\n\t//\tint\tgetDispatcherId();\n};\n\n///btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatcher.\n///It is persistent over frames\nclass btCollisionAlgorithm\n{\nprotected:\n\tbtDispatcher* m_dispatcher;\n\nprotected:\n\t//\tint\tgetDispatcherId();\n\npublic:\n\tbtCollisionAlgorithm(){};\n\n\tbtCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci);\n\n\tvirtual ~btCollisionAlgorithm(){};\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut) = 0;\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut) = 0;\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray) = 0;\n};\n\n#endif  //BT_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btDbvt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2007 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n///btDbvt implementation by Nathanael Presson\n\n#ifndef BT_DYNAMIC_BOUNDING_VOLUME_TREE_H\n#define BT_DYNAMIC_BOUNDING_VOLUME_TREE_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAabbUtil2.h\"\n//\n// Compile time configuration\n//\n\n// Implementation profiles\n#define DBVT_IMPL_GENERIC 0  // Generic implementation\n#define DBVT_IMPL_SSE 1      // SSE\n\n// Template implementation of ICollide\n#ifdef _WIN32\n#if (defined(_MSC_VER) && _MSC_VER >= 1400)\n#define DBVT_USE_TEMPLATE 1\n#else\n#define DBVT_USE_TEMPLATE 0\n#endif\n#else\n#define DBVT_USE_TEMPLATE 0\n#endif\n\n// Use only intrinsics instead of inline asm\n#define DBVT_USE_INTRINSIC_SSE 1\n\n// Using memmov for collideOCL\n#define DBVT_USE_MEMMOVE 1\n\n// Enable benchmarking code\n#define DBVT_ENABLE_BENCHMARK 0\n\n// Inlining\n#define DBVT_INLINE SIMD_FORCE_INLINE\n\n// Specific methods implementation\n\n//SSE gives errors on a MSVC 7.1\n#if defined(BT_USE_SSE)  //&& defined (_WIN32)\n#define DBVT_SELECT_IMPL DBVT_IMPL_SSE\n#define DBVT_MERGE_IMPL DBVT_IMPL_SSE\n#define DBVT_INT0_IMPL DBVT_IMPL_SSE\n#else\n#define DBVT_SELECT_IMPL DBVT_IMPL_GENERIC\n#define DBVT_MERGE_IMPL DBVT_IMPL_GENERIC\n#define DBVT_INT0_IMPL DBVT_IMPL_GENERIC\n#endif\n\n#if (DBVT_SELECT_IMPL == DBVT_IMPL_SSE) || \\\n\t(DBVT_MERGE_IMPL == DBVT_IMPL_SSE) ||  \\\n\t(DBVT_INT0_IMPL == DBVT_IMPL_SSE)\n#include <emmintrin.h>\n#endif\n\n//\n// Auto config and checks\n//\n\n#if DBVT_USE_TEMPLATE\n#define DBVT_VIRTUAL\n#define DBVT_VIRTUAL_DTOR(a)\n#define DBVT_PREFIX template <typename T>\n#define DBVT_IPOLICY T& policy\n#define DBVT_CHECKTYPE                           \\\n\tstatic const ICollide& typechecker = *(T*)1; \\\n\t(void)typechecker;\n#else\n#define DBVT_VIRTUAL_DTOR(a) \\\n\tvirtual ~a() {}\n#define DBVT_VIRTUAL virtual\n#define DBVT_PREFIX\n#define DBVT_IPOLICY ICollide& policy\n#define DBVT_CHECKTYPE\n#endif\n\n#if DBVT_USE_MEMMOVE\n#if !defined(__CELLOS_LV2__) && !defined(__MWERKS__)\n#include <memory.h>\n#endif\n#include <string.h>\n#endif\n\n#ifndef DBVT_USE_TEMPLATE\n#error \"DBVT_USE_TEMPLATE undefined\"\n#endif\n\n#ifndef DBVT_USE_MEMMOVE\n#error \"DBVT_USE_MEMMOVE undefined\"\n#endif\n\n#ifndef DBVT_ENABLE_BENCHMARK\n#error \"DBVT_ENABLE_BENCHMARK undefined\"\n#endif\n\n#ifndef DBVT_SELECT_IMPL\n#error \"DBVT_SELECT_IMPL undefined\"\n#endif\n\n#ifndef DBVT_MERGE_IMPL\n#error \"DBVT_MERGE_IMPL undefined\"\n#endif\n\n#ifndef DBVT_INT0_IMPL\n#error \"DBVT_INT0_IMPL undefined\"\n#endif\n\n//\n// Defaults volumes\n//\n\n/* btDbvtAabbMm\t\t\t*/\nstruct btDbvtAabbMm\n{\n    DBVT_INLINE btDbvtAabbMm(){}\n\tDBVT_INLINE btVector3 Center() const { return ((mi + mx) / 2); }\n\tDBVT_INLINE btVector3 Lengths() const { return (mx - mi); }\n\tDBVT_INLINE btVector3 Extents() const { return ((mx - mi) / 2); }\n\tDBVT_INLINE const btVector3& Mins() const { return (mi); }\n\tDBVT_INLINE const btVector3& Maxs() const { return (mx); }\n\tstatic inline btDbvtAabbMm FromCE(const btVector3& c, const btVector3& e);\n\tstatic inline btDbvtAabbMm FromCR(const btVector3& c, btScalar r);\n\tstatic inline btDbvtAabbMm FromMM(const btVector3& mi, const btVector3& mx);\n\tstatic inline btDbvtAabbMm FromPoints(const btVector3* pts, int n);\n\tstatic inline btDbvtAabbMm FromPoints(const btVector3** ppts, int n);\n\tDBVT_INLINE void Expand(const btVector3& e);\n\tDBVT_INLINE void SignedExpand(const btVector3& e);\n\tDBVT_INLINE bool Contain(const btDbvtAabbMm& a) const;\n\tDBVT_INLINE int Classify(const btVector3& n, btScalar o, int s) const;\n\tDBVT_INLINE btScalar ProjectMinimum(const btVector3& v, unsigned signs) const;\n\tDBVT_INLINE friend bool Intersect(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b);\n\n\tDBVT_INLINE friend bool Intersect(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t\t  const btVector3& b);\n\n\tDBVT_INLINE friend btScalar Proximity(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b);\n\tDBVT_INLINE friend int Select(const btDbvtAabbMm& o,\n\t\t\t\t\t\t\t\t  const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b);\n\tDBVT_INLINE friend void Merge(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t  const btDbvtAabbMm& b,\n\t\t\t\t\t\t\t\t  btDbvtAabbMm& r);\n\tDBVT_INLINE friend bool NotEqual(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t\t\t const btDbvtAabbMm& b);\n\n\tDBVT_INLINE btVector3& tMins() { return (mi); }\n\tDBVT_INLINE btVector3& tMaxs() { return (mx); }\n\nprivate:\n\tDBVT_INLINE void AddSpan(const btVector3& d, btScalar& smi, btScalar& smx) const;\n\nprivate:\n\tbtVector3 mi, mx;\n};\n\n// Types\ntypedef btDbvtAabbMm btDbvtVolume;\n\n/* btDbvtNode\t\t\t\t*/\nstruct btDbvtNode\n{\n\tbtDbvtVolume volume;\n\tbtDbvtNode* parent;\n\tDBVT_INLINE bool isleaf() const { return (childs[1] == 0); }\n\tDBVT_INLINE bool isinternal() const { return (!isleaf()); }\n\tunion {\n\t\tbtDbvtNode* childs[2];\n\t\tvoid* data;\n\t\tint dataAsInt;\n\t};\n};\n\n/* btDbv(normal)tNode                */\nstruct btDbvntNode\n{\n    btDbvtVolume volume;\n    btVector3 normal;\n    btScalar angle;\n    DBVT_INLINE bool isleaf() const { return (childs[1] == 0); }\n    DBVT_INLINE bool isinternal() const { return (!isleaf()); }\n    btDbvntNode* childs[2];\n    void* data;\n\n    btDbvntNode(const btDbvtNode* n)\n    : volume(n->volume)\n    , normal(0,0,0)\n    , angle(0)\n    , data(n->data)\n    {\n        childs[0] = 0;\n        childs[1] = 0;\n    }\n    \n    ~btDbvntNode()\n    {\n        if (childs[0])\n            delete childs[0];\n        if (childs[1])\n            delete childs[1];\n    }\n};\n\ntypedef btAlignedObjectArray<const btDbvtNode*> btNodeStack;\n\n///The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes (aabb tree).\n///This btDbvt is used for soft body collision detection and for the btDbvtBroadphase. It has a fast insert, remove and update of nodes.\n///Unlike the btQuantizedBvh, nodes can be dynamically moved around, which allows for change in topology of the underlying data structure.\nstruct btDbvt\n{\n\t/* Stack element\t*/\n\tstruct sStkNN\n\t{\n\t\tconst btDbvtNode* a;\n\t\tconst btDbvtNode* b;\n\t\tsStkNN() {}\n\t\tsStkNN(const btDbvtNode* na, const btDbvtNode* nb) : a(na), b(nb) {}\n\t};\n\tstruct sStkNP\n\t{\n\t\tconst btDbvtNode* node;\n\t\tint mask;\n\t\tsStkNP(const btDbvtNode* n, unsigned m) : node(n), mask(m) {}\n\t};\n\tstruct sStkNPS\n\t{\n\t\tconst btDbvtNode* node;\n\t\tint mask;\n\t\tbtScalar value;\n\t\tsStkNPS() {}\n\t\tsStkNPS(const btDbvtNode* n, unsigned m, btScalar v) : node(n), mask(m), value(v) {}\n\t};\n\tstruct sStkCLN\n\t{\n\t\tconst btDbvtNode* node;\n\t\tbtDbvtNode* parent;\n\t\tsStkCLN(const btDbvtNode* n, btDbvtNode* p) : node(n), parent(p) {}\n\t};\n    \n    struct sStknNN\n    {\n        const btDbvntNode* a;\n        const btDbvntNode* b;\n        sStknNN() {}\n        sStknNN(const btDbvntNode* na, const btDbvntNode* nb) : a(na), b(nb) {}\n    };\n\t// Policies/Interfaces\n\n\t/* ICollide\t*/\n\tstruct ICollide\n\t{\n\t\tDBVT_VIRTUAL_DTOR(ICollide)\n\t\tDBVT_VIRTUAL void Process(const btDbvtNode*, const btDbvtNode*) {}\n\t\tDBVT_VIRTUAL void Process(const btDbvtNode*) {}\n\t\tDBVT_VIRTUAL void Process(const btDbvtNode* n, btScalar) { Process(n); }\n        DBVT_VIRTUAL void Process(const btDbvntNode*, const btDbvntNode*) {}\n\t\tDBVT_VIRTUAL bool Descent(const btDbvtNode*) { return (true); }\n\t\tDBVT_VIRTUAL bool AllLeaves(const btDbvtNode*) { return (true); }\n\t};\n\t/* IWriter\t*/\n\tstruct IWriter\n\t{\n\t\tvirtual ~IWriter() {}\n\t\tvirtual void Prepare(const btDbvtNode* root, int numnodes) = 0;\n\t\tvirtual void WriteNode(const btDbvtNode*, int index, int parent, int child0, int child1) = 0;\n\t\tvirtual void WriteLeaf(const btDbvtNode*, int index, int parent) = 0;\n\t};\n\t/* IClone\t*/\n\tstruct IClone\n\t{\n\t\tvirtual ~IClone() {}\n\t\tvirtual void CloneLeaf(btDbvtNode*) {}\n\t};\n\n\t// Constants\n\tenum\n\t{\n\t\tSIMPLE_STACKSIZE = 64,\n\t\tDOUBLE_STACKSIZE = SIMPLE_STACKSIZE * 2\n\t};\n\n\t// Fields\n\tbtDbvtNode* m_root;\n\tbtDbvtNode* m_free;\n\tint m_lkhd;\n\tint m_leaves;\n\tunsigned m_opath;\n\n\tbtAlignedObjectArray<sStkNN> m_stkStack;\n\n\t// Methods\n\tbtDbvt();\n\t~btDbvt();\n\tvoid clear();\n\tbool empty() const { return (0 == m_root); }\n\tvoid optimizeBottomUp();\n\tvoid optimizeTopDown(int bu_treshold = 128);\n\tvoid optimizeIncremental(int passes);\n\tbtDbvtNode* insert(const btDbvtVolume& box, void* data);\n\tvoid update(btDbvtNode* leaf, int lookahead = -1);\n\tvoid update(btDbvtNode* leaf, btDbvtVolume& volume);\n\tbool update(btDbvtNode* leaf, btDbvtVolume& volume, const btVector3& velocity, btScalar margin);\n\tbool update(btDbvtNode* leaf, btDbvtVolume& volume, const btVector3& velocity);\n\tbool update(btDbvtNode* leaf, btDbvtVolume& volume, btScalar margin);\n\tvoid remove(btDbvtNode* leaf);\n\tvoid write(IWriter* iwriter) const;\n\tvoid clone(btDbvt& dest, IClone* iclone = 0) const;\n\tstatic int maxdepth(const btDbvtNode* node);\n\tstatic int countLeaves(const btDbvtNode* node);\n\tstatic void extractLeaves(const btDbvtNode* node, btAlignedObjectArray<const btDbvtNode*>& leaves);\n#if DBVT_ENABLE_BENCHMARK\n\tstatic void benchmark();\n#else\n\tstatic void benchmark()\n\t{\n\t}\n#endif\n\t// DBVT_IPOLICY must support ICollide policy/interface\n\tDBVT_PREFIX\n\tstatic void enumNodes(const btDbvtNode* root,\n\t\t\t\t\t\t  DBVT_IPOLICY);\n\tDBVT_PREFIX\n\tstatic void enumLeaves(const btDbvtNode* root,\n\t\t\t\t\t\t   DBVT_IPOLICY);\n\tDBVT_PREFIX\n\tvoid collideTT(const btDbvtNode* root0,\n\t\t\t\t   const btDbvtNode* root1,\n\t\t\t\t   DBVT_IPOLICY);\n    DBVT_PREFIX\n    void selfCollideT(const btDbvntNode* root,\n                   DBVT_IPOLICY);\n    DBVT_PREFIX\n    void selfCollideTT(const btDbvtNode* root,\n                      DBVT_IPOLICY);\n\n\tDBVT_PREFIX\n\tvoid collideTTpersistentStack(const btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY);\n#if 0\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTT(\tconst btDbvtNode* root0,\n\t\tconst btDbvtNode* root1,\n\t\tconst btTransform& xform,\n\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\t\tvoid\t\tcollideTT(\tconst btDbvtNode* root0,\n\t\tconst btTransform& xform0,\n\t\tconst btDbvtNode* root1,\n\t\tconst btTransform& xform1,\n\t\tDBVT_IPOLICY);\n#endif\n\n\tDBVT_PREFIX\n\tvoid collideTV(const btDbvtNode* root,\n\t\t\t\t   const btDbvtVolume& volume,\n\t\t\t\t   DBVT_IPOLICY) const;\n\n\tDBVT_PREFIX\n\tvoid collideTVNoStackAlloc(const btDbvtNode* root,\n\t\t\t\t\t\t\t   const btDbvtVolume& volume,\n\t\t\t\t\t\t\t   btNodeStack& stack,\n\t\t\t\t\t\t\t   DBVT_IPOLICY) const;\n\n\t///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc)\n\t///rayTest is slower than rayTestInternal, because it builds a local stack, using memory allocations, and it recomputes signs/rayDirectionInverses each time\n\tDBVT_PREFIX\n\tstatic void rayTest(const btDbvtNode* root,\n\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\tDBVT_IPOLICY);\n\t///rayTestInternal is faster than rayTest, because it uses a persistent stack (to reduce dynamic memory allocations to a minimum) and it uses precomputed signs/rayInverseDirections\n\t///rayTestInternal is used by btDbvtBroadphase to accelerate world ray casts\n\tDBVT_PREFIX\n\tvoid rayTestInternal(const btDbvtNode* root,\n\t\t\t\t\t\t const btVector3& rayFrom,\n\t\t\t\t\t\t const btVector3& rayTo,\n\t\t\t\t\t\t const btVector3& rayDirectionInverse,\n\t\t\t\t\t\t unsigned int signs[3],\n\t\t\t\t\t\t btScalar lambda_max,\n\t\t\t\t\t\t const btVector3& aabbMin,\n\t\t\t\t\t\t const btVector3& aabbMax,\n\t\t\t\t\t\t btAlignedObjectArray<const btDbvtNode*>& stack,\n\t\t\t\t\t\t DBVT_IPOLICY) const;\n\n\tDBVT_PREFIX\n\tstatic void collideKDOP(const btDbvtNode* root,\n\t\t\t\t\t\t\tconst btVector3* normals,\n\t\t\t\t\t\t\tconst btScalar* offsets,\n\t\t\t\t\t\t\tint count,\n\t\t\t\t\t\t\tDBVT_IPOLICY);\n\tDBVT_PREFIX\n\tstatic void collideOCL(const btDbvtNode* root,\n\t\t\t\t\t\t   const btVector3* normals,\n\t\t\t\t\t\t   const btScalar* offsets,\n\t\t\t\t\t\t   const btVector3& sortaxis,\n\t\t\t\t\t\t   int count,\n\t\t\t\t\t\t   DBVT_IPOLICY,\n\t\t\t\t\t\t   bool fullsort = true);\n\tDBVT_PREFIX\n\tstatic void collideTU(const btDbvtNode* root,\n\t\t\t\t\t\t  DBVT_IPOLICY);\n\t// Helpers\n\tstatic DBVT_INLINE int nearest(const int* i, const btDbvt::sStkNPS* a, btScalar v, int l, int h)\n\t{\n\t\tint m = 0;\n\t\twhile (l < h)\n\t\t{\n\t\t\tm = (l + h) >> 1;\n\t\t\tif (a[i[m]].value >= v)\n\t\t\t\tl = m + 1;\n\t\t\telse\n\t\t\t\th = m;\n\t\t}\n\t\treturn (h);\n\t}\n\tstatic DBVT_INLINE int allocate(btAlignedObjectArray<int>& ifree,\n\t\t\t\t\t\t\t\t\tbtAlignedObjectArray<sStkNPS>& stock,\n\t\t\t\t\t\t\t\t\tconst sStkNPS& value)\n\t{\n\t\tint i;\n\t\tif (ifree.size() > 0)\n\t\t{\n\t\t\ti = ifree[ifree.size() - 1];\n\t\t\tifree.pop_back();\n\t\t\tstock[i] = value;\n\t\t}\n\t\telse\n\t\t{\n\t\t\ti = stock.size();\n\t\t\tstock.push_back(value);\n\t\t}\n\t\treturn (i);\n\t}\n\t//\nprivate:\n\tbtDbvt(const btDbvt&) {}\n};\n\n//\n// Inline's\n//\n\n//\ninline btDbvtAabbMm btDbvtAabbMm::FromCE(const btVector3& c, const btVector3& e)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi = c - e;\n\tbox.mx = c + e;\n\treturn (box);\n}\n\n//\ninline btDbvtAabbMm btDbvtAabbMm::FromCR(const btVector3& c, btScalar r)\n{\n\treturn (FromCE(c, btVector3(r, r, r)));\n}\n\n//\ninline btDbvtAabbMm btDbvtAabbMm::FromMM(const btVector3& mi, const btVector3& mx)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi = mi;\n\tbox.mx = mx;\n\treturn (box);\n}\n\n//\ninline btDbvtAabbMm btDbvtAabbMm::FromPoints(const btVector3* pts, int n)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi = box.mx = pts[0];\n\tfor (int i = 1; i < n; ++i)\n\t{\n\t\tbox.mi.setMin(pts[i]);\n\t\tbox.mx.setMax(pts[i]);\n\t}\n\treturn (box);\n}\n\n//\ninline btDbvtAabbMm btDbvtAabbMm::FromPoints(const btVector3** ppts, int n)\n{\n\tbtDbvtAabbMm box;\n\tbox.mi = box.mx = *ppts[0];\n\tfor (int i = 1; i < n; ++i)\n\t{\n\t\tbox.mi.setMin(*ppts[i]);\n\t\tbox.mx.setMax(*ppts[i]);\n\t}\n\treturn (box);\n}\n\n//\nDBVT_INLINE void btDbvtAabbMm::Expand(const btVector3& e)\n{\n\tmi -= e;\n\tmx += e;\n}\n\n//\nDBVT_INLINE void btDbvtAabbMm::SignedExpand(const btVector3& e)\n{\n\tif (e.x() > 0)\n\t\tmx.setX(mx.x() + e[0]);\n\telse\n\t\tmi.setX(mi.x() + e[0]);\n\tif (e.y() > 0)\n\t\tmx.setY(mx.y() + e[1]);\n\telse\n\t\tmi.setY(mi.y() + e[1]);\n\tif (e.z() > 0)\n\t\tmx.setZ(mx.z() + e[2]);\n\telse\n\t\tmi.setZ(mi.z() + e[2]);\n}\n\n//\nDBVT_INLINE bool btDbvtAabbMm::Contain(const btDbvtAabbMm& a) const\n{\n\treturn ((mi.x() <= a.mi.x()) &&\n\t\t\t(mi.y() <= a.mi.y()) &&\n\t\t\t(mi.z() <= a.mi.z()) &&\n\t\t\t(mx.x() >= a.mx.x()) &&\n\t\t\t(mx.y() >= a.mx.y()) &&\n\t\t\t(mx.z() >= a.mx.z()));\n}\n\n//\nDBVT_INLINE int btDbvtAabbMm::Classify(const btVector3& n, btScalar o, int s) const\n{\n\tbtVector3 pi, px;\n\tswitch (s)\n\t{\n\t\tcase (0 + 0 + 0):\n\t\t\tpx = btVector3(mi.x(), mi.y(), mi.z());\n\t\t\tpi = btVector3(mx.x(), mx.y(), mx.z());\n\t\t\tbreak;\n\t\tcase (1 + 0 + 0):\n\t\t\tpx = btVector3(mx.x(), mi.y(), mi.z());\n\t\t\tpi = btVector3(mi.x(), mx.y(), mx.z());\n\t\t\tbreak;\n\t\tcase (0 + 2 + 0):\n\t\t\tpx = btVector3(mi.x(), mx.y(), mi.z());\n\t\t\tpi = btVector3(mx.x(), mi.y(), mx.z());\n\t\t\tbreak;\n\t\tcase (1 + 2 + 0):\n\t\t\tpx = btVector3(mx.x(), mx.y(), mi.z());\n\t\t\tpi = btVector3(mi.x(), mi.y(), mx.z());\n\t\t\tbreak;\n\t\tcase (0 + 0 + 4):\n\t\t\tpx = btVector3(mi.x(), mi.y(), mx.z());\n\t\t\tpi = btVector3(mx.x(), mx.y(), mi.z());\n\t\t\tbreak;\n\t\tcase (1 + 0 + 4):\n\t\t\tpx = btVector3(mx.x(), mi.y(), mx.z());\n\t\t\tpi = btVector3(mi.x(), mx.y(), mi.z());\n\t\t\tbreak;\n\t\tcase (0 + 2 + 4):\n\t\t\tpx = btVector3(mi.x(), mx.y(), mx.z());\n\t\t\tpi = btVector3(mx.x(), mi.y(), mi.z());\n\t\t\tbreak;\n\t\tcase (1 + 2 + 4):\n\t\t\tpx = btVector3(mx.x(), mx.y(), mx.z());\n\t\t\tpi = btVector3(mi.x(), mi.y(), mi.z());\n\t\t\tbreak;\n\t}\n\tif ((btDot(n, px) + o) < 0) return (-1);\n\tif ((btDot(n, pi) + o) >= 0) return (+1);\n\treturn (0);\n}\n\n//\nDBVT_INLINE btScalar btDbvtAabbMm::ProjectMinimum(const btVector3& v, unsigned signs) const\n{\n\tconst btVector3* b[] = {&mx, &mi};\n\tconst btVector3 p(b[(signs >> 0) & 1]->x(),\n\t\t\t\t\t  b[(signs >> 1) & 1]->y(),\n\t\t\t\t\t  b[(signs >> 2) & 1]->z());\n\treturn (btDot(p, v));\n}\n\n//\nDBVT_INLINE void btDbvtAabbMm::AddSpan(const btVector3& d, btScalar& smi, btScalar& smx) const\n{\n\tfor (int i = 0; i < 3; ++i)\n\t{\n\t\tif (d[i] < 0)\n\t\t{\n\t\t\tsmi += mx[i] * d[i];\n\t\t\tsmx += mi[i] * d[i];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsmi += mi[i] * d[i];\n\t\t\tsmx += mx[i] * d[i];\n\t\t}\n\t}\n}\n\n//\nDBVT_INLINE bool Intersect(const btDbvtAabbMm& a,\n\t\t\t\t\t\t   const btDbvtAabbMm& b)\n{\n#if DBVT_INT0_IMPL == DBVT_IMPL_SSE\n\tconst __m128 rt(_mm_or_ps(_mm_cmplt_ps(_mm_load_ps(b.mx), _mm_load_ps(a.mi)),\n\t\t\t\t\t\t\t  _mm_cmplt_ps(_mm_load_ps(a.mx), _mm_load_ps(b.mi))));\n#if defined(_WIN32)\n\tconst __int32* pu((const __int32*)&rt);\n#else\n\tconst int* pu((const int*)&rt);\n#endif\n\treturn ((pu[0] | pu[1] | pu[2]) == 0);\n#else\n\treturn ((a.mi.x() <= b.mx.x()) &&\n\t\t\t(a.mx.x() >= b.mi.x()) &&\n\t\t\t(a.mi.y() <= b.mx.y()) &&\n\t\t\t(a.mx.y() >= b.mi.y()) &&\n\t\t\t(a.mi.z() <= b.mx.z()) &&\n\t\t\t(a.mx.z() >= b.mi.z()));\n#endif\n}\n\n//\nDBVT_INLINE bool Intersect(const btDbvtAabbMm& a,\n\t\t\t\t\t\t   const btVector3& b)\n{\n\treturn ((b.x() >= a.mi.x()) &&\n\t\t\t(b.y() >= a.mi.y()) &&\n\t\t\t(b.z() >= a.mi.z()) &&\n\t\t\t(b.x() <= a.mx.x()) &&\n\t\t\t(b.y() <= a.mx.y()) &&\n\t\t\t(b.z() <= a.mx.z()));\n}\n\n//////////////////////////////////////\n\n//\nDBVT_INLINE btScalar Proximity(const btDbvtAabbMm& a,\n\t\t\t\t\t\t\t   const btDbvtAabbMm& b)\n{\n\tconst btVector3 d = (a.mi + a.mx) - (b.mi + b.mx);\n\treturn (btFabs(d.x()) + btFabs(d.y()) + btFabs(d.z()));\n}\n\n//\nDBVT_INLINE int Select(const btDbvtAabbMm& o,\n\t\t\t\t\t   const btDbvtAabbMm& a,\n\t\t\t\t\t   const btDbvtAabbMm& b)\n{\n#if DBVT_SELECT_IMPL == DBVT_IMPL_SSE\n\n#if defined(_WIN32)\n\tstatic ATTRIBUTE_ALIGNED16(const unsigned __int32) mask[] = {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff};\n#else\n\tstatic ATTRIBUTE_ALIGNED16(const unsigned int) mask[] = {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x00000000 /*0x7fffffff*/};\n#endif\n\t///@todo: the intrinsic version is 11% slower\n#if DBVT_USE_INTRINSIC_SSE\n\n\tunion btSSEUnion  ///NOTE: if we use more intrinsics, move btSSEUnion into the LinearMath directory\n\t{\n\t\t__m128 ssereg;\n\t\tfloat floats[4];\n\t\tint ints[4];\n\t};\n\n\t__m128 omi(_mm_load_ps(o.mi));\n\tomi = _mm_add_ps(omi, _mm_load_ps(o.mx));\n\t__m128 ami(_mm_load_ps(a.mi));\n\tami = _mm_add_ps(ami, _mm_load_ps(a.mx));\n\tami = _mm_sub_ps(ami, omi);\n\tami = _mm_and_ps(ami, _mm_load_ps((const float*)mask));\n\t__m128 bmi(_mm_load_ps(b.mi));\n\tbmi = _mm_add_ps(bmi, _mm_load_ps(b.mx));\n\tbmi = _mm_sub_ps(bmi, omi);\n\tbmi = _mm_and_ps(bmi, _mm_load_ps((const float*)mask));\n\t__m128 t0(_mm_movehl_ps(ami, ami));\n\tami = _mm_add_ps(ami, t0);\n\tami = _mm_add_ss(ami, _mm_shuffle_ps(ami, ami, 1));\n\t__m128 t1(_mm_movehl_ps(bmi, bmi));\n\tbmi = _mm_add_ps(bmi, t1);\n\tbmi = _mm_add_ss(bmi, _mm_shuffle_ps(bmi, bmi, 1));\n\n\tbtSSEUnion tmp;\n\ttmp.ssereg = _mm_cmple_ss(bmi, ami);\n\treturn tmp.ints[0] & 1;\n\n#else\n\tATTRIBUTE_ALIGNED16(__int32 r[1]);\n\t__asm\n\t{\n\t\tmov\t\teax,o\n\t\t\tmov\t\tecx,a\n\t\t\tmov\t\tedx,b\n\t\t\tmovaps\txmm0,[eax]\n\t\tmovaps\txmm5,mask\n\t\t\taddps\txmm0,[eax+16]\t\n\t\tmovaps\txmm1,[ecx]\n\t\tmovaps\txmm2,[edx]\n\t\taddps\txmm1,[ecx+16]\n\t\taddps\txmm2,[edx+16]\n\t\tsubps\txmm1,xmm0\n\t\t\tsubps\txmm2,xmm0\n\t\t\tandps\txmm1,xmm5\n\t\t\tandps\txmm2,xmm5\n\t\t\tmovhlps\txmm3,xmm1\n\t\t\tmovhlps\txmm4,xmm2\n\t\t\taddps\txmm1,xmm3\n\t\t\taddps\txmm2,xmm4\n\t\t\tpshufd\txmm3,xmm1,1\n\t\t\tpshufd\txmm4,xmm2,1\n\t\t\taddss\txmm1,xmm3\n\t\t\taddss\txmm2,xmm4\n\t\t\tcmpless\txmm2,xmm1\n\t\t\tmovss\tr,xmm2\n\t}\n\treturn (r[0] & 1);\n#endif\n#else\n\treturn (Proximity(o, a) < Proximity(o, b) ? 0 : 1);\n#endif\n}\n\n//\nDBVT_INLINE void Merge(const btDbvtAabbMm& a,\n\t\t\t\t\t   const btDbvtAabbMm& b,\n\t\t\t\t\t   btDbvtAabbMm& r)\n{\n#if DBVT_MERGE_IMPL == DBVT_IMPL_SSE\n\t__m128 ami(_mm_load_ps(a.mi));\n\t__m128 amx(_mm_load_ps(a.mx));\n\t__m128 bmi(_mm_load_ps(b.mi));\n\t__m128 bmx(_mm_load_ps(b.mx));\n\tami = _mm_min_ps(ami, bmi);\n\tamx = _mm_max_ps(amx, bmx);\n\t_mm_store_ps(r.mi, ami);\n\t_mm_store_ps(r.mx, amx);\n#else\n\tfor (int i = 0; i < 3; ++i)\n\t{\n\t\tif (a.mi[i] < b.mi[i])\n\t\t\tr.mi[i] = a.mi[i];\n\t\telse\n\t\t\tr.mi[i] = b.mi[i];\n\t\tif (a.mx[i] > b.mx[i])\n\t\t\tr.mx[i] = a.mx[i];\n\t\telse\n\t\t\tr.mx[i] = b.mx[i];\n\t}\n#endif\n}\n\n//\nDBVT_INLINE bool NotEqual(const btDbvtAabbMm& a,\n\t\t\t\t\t\t  const btDbvtAabbMm& b)\n{\n\treturn ((a.mi.x() != b.mi.x()) ||\n\t\t\t(a.mi.y() != b.mi.y()) ||\n\t\t\t(a.mi.z() != b.mi.z()) ||\n\t\t\t(a.mx.x() != b.mx.x()) ||\n\t\t\t(a.mx.y() != b.mx.y()) ||\n\t\t\t(a.mx.z() != b.mx.z()));\n}\n\n//\n// Inline's\n//\n\n//\nDBVT_PREFIX\ninline void btDbvt::enumNodes(const btDbvtNode* root,\n\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tpolicy.Process(root);\n\tif (root->isinternal())\n\t{\n\t\tenumNodes(root->childs[0], policy);\n\t\tenumNodes(root->childs[1], policy);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::enumLeaves(const btDbvtNode* root,\n\t\t\t\t\t\t\t   DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root->isinternal())\n\t{\n\t\tenumLeaves(root->childs[0], policy);\n\t\tenumLeaves(root->childs[1], policy);\n\t}\n\telse\n\t{\n\t\tpolicy.Process(root);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::collideTT(const btDbvtNode* root0,\n\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root0 && root1)\n\t{\n\t\tint depth = 1;\n\t\tint treshold = DOUBLE_STACKSIZE - 4;\n\t\tbtAlignedObjectArray<sStkNN> stkStack;\n\t\tstkStack.resize(DOUBLE_STACKSIZE);\n\t\tstkStack[0] = sStkNN(root0, root1);\n\t\tdo\n\t\t{\n\t\t\tsStkNN p = stkStack[--depth];\n\t\t\tif (depth > treshold)\n\t\t\t{\n\t\t\t\tstkStack.resize(stkStack.size() * 2);\n\t\t\t\ttreshold = stkStack.size() - 4;\n\t\t\t}\n\t\t\tif (p.a == p.b)\n\t\t\t{\n\t\t\t\tif (p.a->isinternal())\n\t\t\t\t{\n\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[0]);\n\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[1], p.a->childs[1]);\n\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (Intersect(p.a->volume, p.b->volume))\n\t\t\t{\n\t\t\t\tif (p.a->isinternal())\n\t\t\t\t{\n\t\t\t\t\tif (p.b->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[0]);\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[0]);\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[1]);\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[0], p.b);\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a->childs[1], p.b);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (p.b->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a, p.b->childs[0]);\n\t\t\t\t\t\tstkStack[depth++] = sStkNN(p.a, p.b->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpolicy.Process(p.a, p.b);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} while (depth);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::selfCollideT(const btDbvntNode* root,\n                              DBVT_IPOLICY)\n{\n    DBVT_CHECKTYPE\n    if (root)\n    {\n        int depth = 1;\n        int treshold = DOUBLE_STACKSIZE - 4;\n        btAlignedObjectArray<sStknNN> stkStack;\n        stkStack.resize(DOUBLE_STACKSIZE);\n        stkStack[0] = sStknNN(root, root);\n        do\n        {\n            sStknNN p = stkStack[--depth];\n            if (depth > treshold)\n            {\n                stkStack.resize(stkStack.size() * 2);\n                treshold = stkStack.size() - 4;\n            }\n            if (p.a == p.b)\n            {\n                if (p.a->isinternal() && p.a->angle > SIMD_PI)\n                {\n                    stkStack[depth++] = sStknNN(p.a->childs[0], p.a->childs[0]);\n                    stkStack[depth++] = sStknNN(p.a->childs[1], p.a->childs[1]);\n                    stkStack[depth++] = sStknNN(p.a->childs[0], p.a->childs[1]);\n                }\n            }\n            else if (Intersect(p.a->volume, p.b->volume))\n            {\n                if (p.a->isinternal())\n                {\n                    if (p.b->isinternal())\n                    {\n                        stkStack[depth++] = sStknNN(p.a->childs[0], p.b->childs[0]);\n                        stkStack[depth++] = sStknNN(p.a->childs[1], p.b->childs[0]);\n                        stkStack[depth++] = sStknNN(p.a->childs[0], p.b->childs[1]);\n                        stkStack[depth++] = sStknNN(p.a->childs[1], p.b->childs[1]);\n                    }\n                    else\n                    {\n                        stkStack[depth++] = sStknNN(p.a->childs[0], p.b);\n                        stkStack[depth++] = sStknNN(p.a->childs[1], p.b);\n                    }\n                }\n                else\n                {\n                    if (p.b->isinternal())\n                    {\n                        stkStack[depth++] = sStknNN(p.a, p.b->childs[0]);\n                        stkStack[depth++] = sStknNN(p.a, p.b->childs[1]);\n                    }\n                    else\n                    {\n                        policy.Process(p.a, p.b);\n                    }\n                }\n            }\n        } while (depth);\n    }\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::selfCollideTT(const btDbvtNode* root,\n                                 DBVT_IPOLICY)\n{\n    DBVT_CHECKTYPE\n    if (root)\n    {\n        int depth = 1;\n        int treshold = DOUBLE_STACKSIZE - 4;\n        btAlignedObjectArray<sStkNN> stkStack;\n        stkStack.resize(DOUBLE_STACKSIZE);\n        stkStack[0] = sStkNN(root, root);\n        do\n        {\n            sStkNN p = stkStack[--depth];\n            if (depth > treshold)\n            {\n                stkStack.resize(stkStack.size() * 2);\n                treshold = stkStack.size() - 4;\n            }\n            if (p.a == p.b)\n            {\n                if (p.a->isinternal())\n                {\n                    stkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[0]);\n                    stkStack[depth++] = sStkNN(p.a->childs[1], p.a->childs[1]);\n                    stkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[1]);\n                }\n            }\n            else if (Intersect(p.a->volume, p.b->volume))\n            {\n                if (p.a->isinternal())\n                {\n                    if (p.b->isinternal())\n                    {\n                        stkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[0]);\n                        stkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[0]);\n                        stkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[1]);\n                        stkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[1]);\n                    }\n                    else\n                    {\n                        stkStack[depth++] = sStkNN(p.a->childs[0], p.b);\n                        stkStack[depth++] = sStkNN(p.a->childs[1], p.b);\n                    }\n                }\n                else\n                {\n                    if (p.b->isinternal())\n                    {\n                        stkStack[depth++] = sStkNN(p.a, p.b->childs[0]);\n                        stkStack[depth++] = sStkNN(p.a, p.b->childs[1]);\n                    }\n                    else\n                    {\n                        policy.Process(p.a, p.b);\n                    }\n                }\n            }\n        } while (depth);\n    }\n}\n\n\nDBVT_PREFIX\ninline void btDbvt::collideTTpersistentStack(const btDbvtNode* root0,\n\t\t\t\t\t\t\t\t\t\t\t const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t\t\t\t DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root0 && root1)\n\t{\n\t\tint depth = 1;\n\t\tint treshold = DOUBLE_STACKSIZE - 4;\n\n\t\tm_stkStack.resize(DOUBLE_STACKSIZE);\n\t\tm_stkStack[0] = sStkNN(root0, root1);\n\t\tdo\n\t\t{\n\t\t\tsStkNN p = m_stkStack[--depth];\n\t\t\tif (depth > treshold)\n\t\t\t{\n\t\t\t\tm_stkStack.resize(m_stkStack.size() * 2);\n\t\t\t\ttreshold = m_stkStack.size() - 4;\n\t\t\t}\n\t\t\tif (p.a == p.b)\n\t\t\t{\n\t\t\t\tif (p.a->isinternal())\n\t\t\t\t{\n\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[0]);\n\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[1], p.a->childs[1]);\n\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[0], p.a->childs[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (Intersect(p.a->volume, p.b->volume))\n\t\t\t{\n\t\t\t\tif (p.a->isinternal())\n\t\t\t\t{\n\t\t\t\t\tif (p.b->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[0]);\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[0]);\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[0], p.b->childs[1]);\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[1], p.b->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[0], p.b);\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a->childs[1], p.b);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (p.b->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a, p.b->childs[0]);\n\t\t\t\t\t\tm_stkStack[depth++] = sStkNN(p.a, p.b->childs[1]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpolicy.Process(p.a, p.b);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} while (depth);\n\t}\n}\n\n#if 0\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTT(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  const btTransform& xform,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\t\tif(root0&&root1)\n\t\t{\n\t\t\tint\t\t\t\t\t\t\t\tdepth=1;\n\t\t\tint\t\t\t\t\t\t\t\ttreshold=DOUBLE_STACKSIZE-4;\n\t\t\tbtAlignedObjectArray<sStkNN>\tstkStack;\n\t\t\tstkStack.resize(DOUBLE_STACKSIZE);\n\t\t\tstkStack[0]=sStkNN(root0,root1);\n\t\t\tdo\t{\n\t\t\t\tsStkNN\tp=stkStack[--depth];\n\t\t\t\tif(Intersect(p.a->volume,p.b->volume,xform))\n\t\t\t\t{\n\t\t\t\t\tif(depth>treshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tstkStack.resize(stkStack.size()*2);\n\t\t\t\t\t\ttreshold=stkStack.size()-4;\n\t\t\t\t\t}\n\t\t\t\t\tif(p.a->isinternal())\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\t\t\t\t\t\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[0],p.b);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a->childs[1],p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif(p.b->isinternal())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[0]);\n\t\t\t\t\t\t\tstkStack[depth++]=sStkNN(p.a,p.b->childs[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpolicy.Process(p.a,p.b);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(depth);\n\t\t}\n}\n//\nDBVT_PREFIX\ninline void\t\tbtDbvt::collideTT(\tconst btDbvtNode* root0,\n\t\t\t\t\t\t\t\t  const btTransform& xform0,\n\t\t\t\t\t\t\t\t  const btDbvtNode* root1,\n\t\t\t\t\t\t\t\t  const btTransform& xform1,\n\t\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tconst btTransform\txform=xform0.inverse()*xform1;\n\tcollideTT(root0,root1,xform,policy);\n}\n#endif\n\nDBVT_PREFIX\ninline void btDbvt::collideTV(const btDbvtNode* root,\n\t\t\t\t\t\t\t  const btDbvtVolume& vol,\n\t\t\t\t\t\t\t  DBVT_IPOLICY) const\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tATTRIBUTE_ALIGNED16(btDbvtVolume)\n\t\tvolume(vol);\n\t\tbtAlignedObjectArray<const btDbvtNode*> stack;\n\t\tstack.resize(0);\n#ifndef BT_DISABLE_STACK_TEMP_MEMORY\n\t\tchar tempmemory[SIMPLE_STACKSIZE * sizeof(const btDbvtNode*)];\n\t\tstack.initializeFromBuffer(tempmemory, 0, SIMPLE_STACKSIZE);\n#else\n\t\tstack.reserve(SIMPLE_STACKSIZE);\n#endif  //BT_DISABLE_STACK_TEMP_MEMORY\n\n\t\tstack.push_back(root);\n\t\tdo\n\t\t{\n\t\t\tconst btDbvtNode* n = stack[stack.size() - 1];\n\t\t\tstack.pop_back();\n\t\t\tif (Intersect(n->volume, volume))\n\t\t\t{\n\t\t\t\tif (n->isinternal())\n\t\t\t\t{\n\t\t\t\t\tstack.push_back(n->childs[0]);\n\t\t\t\t\tstack.push_back(n->childs[1]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(n);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (stack.size() > 0);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::collideTVNoStackAlloc(const btDbvtNode* root,\n\t\t\t\t\t\t\t\t\t\t  const btDbvtVolume& vol,\n\t\t\t\t\t\t\t\t\t\t  btNodeStack& stack,\n\t\t\t\t\t\t\t\t\t\t  DBVT_IPOLICY) const\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tATTRIBUTE_ALIGNED16(btDbvtVolume)\n\t\tvolume(vol);\n\t\tstack.resize(0);\n\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\tstack.push_back(root);\n\t\tdo\n\t\t{\n\t\t\tconst btDbvtNode* n = stack[stack.size() - 1];\n\t\t\tstack.pop_back();\n\t\t\tif (Intersect(n->volume, volume))\n\t\t\t{\n\t\t\t\tif (n->isinternal())\n\t\t\t\t{\n\t\t\t\t\tstack.push_back(n->childs[0]);\n\t\t\t\t\tstack.push_back(n->childs[1]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(n);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (stack.size() > 0);\n\t}\n}\n\nDBVT_PREFIX\ninline void btDbvt::rayTestInternal(const btDbvtNode* root,\n\t\t\t\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\t\t\t\tconst btVector3& rayDirectionInverse,\n\t\t\t\t\t\t\t\t\tunsigned int signs[3],\n\t\t\t\t\t\t\t\t\tbtScalar lambda_max,\n\t\t\t\t\t\t\t\t\tconst btVector3& aabbMin,\n\t\t\t\t\t\t\t\t\tconst btVector3& aabbMax,\n\t\t\t\t\t\t\t\t\tbtAlignedObjectArray<const btDbvtNode*>& stack,\n\t\t\t\t\t\t\t\t\tDBVT_IPOLICY) const\n{\n\t(void)rayTo;\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tbtVector3 resultNormal;\n\n\t\tint depth = 1;\n\t\tint treshold = DOUBLE_STACKSIZE - 2;\n\t\tstack.resize(DOUBLE_STACKSIZE);\n\t\tstack[0] = root;\n\t\tbtVector3 bounds[2];\n\t\tdo\n\t\t{\n\t\t\tconst btDbvtNode* node = stack[--depth];\n\t\t\tbounds[0] = node->volume.Mins() - aabbMax;\n\t\t\tbounds[1] = node->volume.Maxs() - aabbMin;\n\t\t\tbtScalar tmin = 1.f, lambda_min = 0.f;\n\t\t\tunsigned int result1 = false;\n\t\t\tresult1 = btRayAabb2(rayFrom, rayDirectionInverse, signs, bounds, tmin, lambda_min, lambda_max);\n\t\t\tif (result1)\n\t\t\t{\n\t\t\t\tif (node->isinternal())\n\t\t\t\t{\n\t\t\t\t\tif (depth > treshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.resize(stack.size() * 2);\n\t\t\t\t\t\ttreshold = stack.size() - 2;\n\t\t\t\t\t}\n\t\t\t\t\tstack[depth++] = node->childs[0];\n\t\t\t\t\tstack[depth++] = node->childs[1];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(node);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (depth);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::rayTest(const btDbvtNode* root,\n\t\t\t\t\t\t\tconst btVector3& rayFrom,\n\t\t\t\t\t\t\tconst btVector3& rayTo,\n\t\t\t\t\t\t\tDBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tbtVector3 rayDir = (rayTo - rayFrom);\n\t\trayDir.normalize();\n\n\t\t///what about division by zero? --> just set rayDirection[i] to INF/BT_LARGE_FLOAT\n\t\tbtVector3 rayDirectionInverse;\n\t\trayDirectionInverse[0] = rayDir[0] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[0];\n\t\trayDirectionInverse[1] = rayDir[1] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[1];\n\t\trayDirectionInverse[2] = rayDir[2] == btScalar(0.0) ? btScalar(BT_LARGE_FLOAT) : btScalar(1.0) / rayDir[2];\n\t\tunsigned int signs[3] = {rayDirectionInverse[0] < 0.0, rayDirectionInverse[1] < 0.0, rayDirectionInverse[2] < 0.0};\n\n\t\tbtScalar lambda_max = rayDir.dot(rayTo - rayFrom);\n\n\t\tbtVector3 resultNormal;\n\n\t\tbtAlignedObjectArray<const btDbvtNode*> stack;\n\n\t\tint depth = 1;\n\t\tint treshold = DOUBLE_STACKSIZE - 2;\n\n\t\tchar tempmemory[DOUBLE_STACKSIZE * sizeof(const btDbvtNode*)];\n#ifndef BT_DISABLE_STACK_TEMP_MEMORY\n\t\tstack.initializeFromBuffer(tempmemory, DOUBLE_STACKSIZE, DOUBLE_STACKSIZE);\n#else   //BT_DISABLE_STACK_TEMP_MEMORY\n\t\tstack.resize(DOUBLE_STACKSIZE);\n#endif  //BT_DISABLE_STACK_TEMP_MEMORY\n\t\tstack[0] = root;\n\t\tbtVector3 bounds[2];\n\t\tdo\n\t\t{\n\t\t\tconst btDbvtNode* node = stack[--depth];\n\n\t\t\tbounds[0] = node->volume.Mins();\n\t\t\tbounds[1] = node->volume.Maxs();\n\n\t\t\tbtScalar tmin = 1.f, lambda_min = 0.f;\n\t\t\tunsigned int result1 = btRayAabb2(rayFrom, rayDirectionInverse, signs, bounds, tmin, lambda_min, lambda_max);\n\n#ifdef COMPARE_BTRAY_AABB2\n\t\t\tbtScalar param = 1.f;\n\t\t\tbool result2 = btRayAabb(rayFrom, rayTo, node->volume.Mins(), node->volume.Maxs(), param, resultNormal);\n\t\t\tbtAssert(result1 == result2);\n#endif  //TEST_BTRAY_AABB2\n\n\t\t\tif (result1)\n\t\t\t{\n\t\t\t\tif (node->isinternal())\n\t\t\t\t{\n\t\t\t\t\tif (depth > treshold)\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.resize(stack.size() * 2);\n\t\t\t\t\t\ttreshold = stack.size() - 2;\n\t\t\t\t\t}\n\t\t\t\t\tstack[depth++] = node->childs[0];\n\t\t\t\t\tstack[depth++] = node->childs[1];\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(node);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (depth);\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::collideKDOP(const btDbvtNode* root,\n\t\t\t\t\t\t\t\tconst btVector3* normals,\n\t\t\t\t\t\t\t\tconst btScalar* offsets,\n\t\t\t\t\t\t\t\tint count,\n\t\t\t\t\t\t\t\tDBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tconst int inside = (1 << count) - 1;\n\t\tbtAlignedObjectArray<sStkNP> stack;\n\t\tint signs[sizeof(unsigned) * 8];\n\t\tbtAssert(count < int(sizeof(signs) / sizeof(signs[0])));\n\t\tfor (int i = 0; i < count; ++i)\n\t\t{\n\t\t\tsigns[i] = ((normals[i].x() >= 0) ? 1 : 0) +\n\t\t\t\t\t   ((normals[i].y() >= 0) ? 2 : 0) +\n\t\t\t\t\t   ((normals[i].z() >= 0) ? 4 : 0);\n\t\t}\n\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\tstack.push_back(sStkNP(root, 0));\n\t\tdo\n\t\t{\n\t\t\tsStkNP se = stack[stack.size() - 1];\n\t\t\tbool out = false;\n\t\t\tstack.pop_back();\n\t\t\tfor (int i = 0, j = 1; (!out) && (i < count); ++i, j <<= 1)\n\t\t\t{\n\t\t\t\tif (0 == (se.mask & j))\n\t\t\t\t{\n\t\t\t\t\tconst int side = se.node->volume.Classify(normals[i], offsets[i], signs[i]);\n\t\t\t\t\tswitch (side)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase -1:\n\t\t\t\t\t\t\tout = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase +1:\n\t\t\t\t\t\t\tse.mask |= j;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!out)\n\t\t\t{\n\t\t\t\tif ((se.mask != inside) && (se.node->isinternal()))\n\t\t\t\t{\n\t\t\t\t\tstack.push_back(sStkNP(se.node->childs[0], se.mask));\n\t\t\t\t\tstack.push_back(sStkNP(se.node->childs[1], se.mask));\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (policy.AllLeaves(se.node)) enumLeaves(se.node, policy);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (stack.size());\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::collideOCL(const btDbvtNode* root,\n\t\t\t\t\t\t\t   const btVector3* normals,\n\t\t\t\t\t\t\t   const btScalar* offsets,\n\t\t\t\t\t\t\t   const btVector3& sortaxis,\n\t\t\t\t\t\t\t   int count,\n\t\t\t\t\t\t\t   DBVT_IPOLICY,\n\t\t\t\t\t\t\t   bool fsort)\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tconst unsigned srtsgns = (sortaxis[0] >= 0 ? 1 : 0) +\n\t\t\t\t\t\t\t\t (sortaxis[1] >= 0 ? 2 : 0) +\n\t\t\t\t\t\t\t\t (sortaxis[2] >= 0 ? 4 : 0);\n\t\tconst int inside = (1 << count) - 1;\n\t\tbtAlignedObjectArray<sStkNPS> stock;\n\t\tbtAlignedObjectArray<int> ifree;\n\t\tbtAlignedObjectArray<int> stack;\n\t\tint signs[sizeof(unsigned) * 8];\n\t\tbtAssert(count < int(sizeof(signs) / sizeof(signs[0])));\n\t\tfor (int i = 0; i < count; ++i)\n\t\t{\n\t\t\tsigns[i] = ((normals[i].x() >= 0) ? 1 : 0) +\n\t\t\t\t\t   ((normals[i].y() >= 0) ? 2 : 0) +\n\t\t\t\t\t   ((normals[i].z() >= 0) ? 4 : 0);\n\t\t}\n\t\tstock.reserve(SIMPLE_STACKSIZE);\n\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\tifree.reserve(SIMPLE_STACKSIZE);\n\t\tstack.push_back(allocate(ifree, stock, sStkNPS(root, 0, root->volume.ProjectMinimum(sortaxis, srtsgns))));\n\t\tdo\n\t\t{\n\t\t\tconst int id = stack[stack.size() - 1];\n\t\t\tsStkNPS se = stock[id];\n\t\t\tstack.pop_back();\n\t\t\tifree.push_back(id);\n\t\t\tif (se.mask != inside)\n\t\t\t{\n\t\t\t\tbool out = false;\n\t\t\t\tfor (int i = 0, j = 1; (!out) && (i < count); ++i, j <<= 1)\n\t\t\t\t{\n\t\t\t\t\tif (0 == (se.mask & j))\n\t\t\t\t\t{\n\t\t\t\t\t\tconst int side = se.node->volume.Classify(normals[i], offsets[i], signs[i]);\n\t\t\t\t\t\tswitch (side)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase -1:\n\t\t\t\t\t\t\t\tout = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase +1:\n\t\t\t\t\t\t\t\tse.mask |= j;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (out) continue;\n\t\t\t}\n\t\t\tif (policy.Descent(se.node))\n\t\t\t{\n\t\t\t\tif (se.node->isinternal())\n\t\t\t\t{\n\t\t\t\t\tconst btDbvtNode* pns[] = {se.node->childs[0], se.node->childs[1]};\n\t\t\t\t\tsStkNPS nes[] = {sStkNPS(pns[0], se.mask, pns[0]->volume.ProjectMinimum(sortaxis, srtsgns)),\n\t\t\t\t\t\t\t\t\t sStkNPS(pns[1], se.mask, pns[1]->volume.ProjectMinimum(sortaxis, srtsgns))};\n\t\t\t\t\tconst int q = nes[0].value < nes[1].value ? 1 : 0;\n\t\t\t\t\tint j = stack.size();\n\t\t\t\t\tif (fsort && (j > 0))\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Insert 0\t*/\n\t\t\t\t\t\tj = nearest(&stack[0], &stock[0], nes[q].value, 0, stack.size());\n\t\t\t\t\t\tstack.push_back(0);\n\n\t\t\t\t\t\t//void * memmove ( void * destination, const void * source, size_t num );\n\n#if DBVT_USE_MEMMOVE\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint num_items_to_move = stack.size() - 1 - j;\n\t\t\t\t\t\t\tif (num_items_to_move > 0)\n\t\t\t\t\t\t\t\tmemmove(&stack[j + 1], &stack[j], sizeof(int) * num_items_to_move);\n\t\t\t\t\t\t}\n#else\n\t\t\t\t\t\tfor (int k = stack.size() - 1; k > j; --k)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstack[k] = stack[k - 1];\n\t\t\t\t\t\t}\n#endif\n\t\t\t\t\t\tstack[j] = allocate(ifree, stock, nes[q]);\n\t\t\t\t\t\t/* Insert 1\t*/\n\t\t\t\t\t\tj = nearest(&stack[0], &stock[0], nes[1 - q].value, j, stack.size());\n\t\t\t\t\t\tstack.push_back(0);\n#if DBVT_USE_MEMMOVE\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint num_items_to_move = stack.size() - 1 - j;\n\t\t\t\t\t\t\tif (num_items_to_move > 0)\n\t\t\t\t\t\t\t\tmemmove(&stack[j + 1], &stack[j], sizeof(int) * num_items_to_move);\n\t\t\t\t\t\t}\n#else\n\t\t\t\t\t\tfor (int k = stack.size() - 1; k > j; --k)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstack[k] = stack[k - 1];\n\t\t\t\t\t\t}\n#endif\n\t\t\t\t\t\tstack[j] = allocate(ifree, stock, nes[1 - q]);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstack.push_back(allocate(ifree, stock, nes[q]));\n\t\t\t\t\t\tstack.push_back(allocate(ifree, stock, nes[1 - q]));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(se.node, se.value);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (stack.size());\n\t}\n}\n\n//\nDBVT_PREFIX\ninline void btDbvt::collideTU(const btDbvtNode* root,\n\t\t\t\t\t\t\t  DBVT_IPOLICY)\n{\n\tDBVT_CHECKTYPE\n\tif (root)\n\t{\n\t\tbtAlignedObjectArray<const btDbvtNode*> stack;\n\t\tstack.reserve(SIMPLE_STACKSIZE);\n\t\tstack.push_back(root);\n\t\tdo\n\t\t{\n\t\t\tconst btDbvtNode* n = stack[stack.size() - 1];\n\t\t\tstack.pop_back();\n\t\t\tif (policy.Descent(n))\n\t\t\t{\n\t\t\t\tif (n->isinternal())\n\t\t\t\t{\n\t\t\t\t\tstack.push_back(n->childs[0]);\n\t\t\t\t\tstack.push_back(n->childs[1]);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpolicy.Process(n);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (stack.size() > 0);\n\t}\n}\n\n//\n// PP Cleanup\n//\n\n#undef DBVT_USE_MEMMOVE\n#undef DBVT_USE_TEMPLATE\n#undef DBVT_VIRTUAL_DTOR\n#undef DBVT_VIRTUAL\n#undef DBVT_PREFIX\n#undef DBVT_IPOLICY\n#undef DBVT_CHECKTYPE\n#undef DBVT_IMPL_GENERIC\n#undef DBVT_IMPL_SSE\n#undef DBVT_USE_INTRINSIC_SSE\n#undef DBVT_SELECT_IMPL\n#undef DBVT_MERGE_IMPL\n#undef DBVT_INT0_IMPL\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///btDbvtBroadphase implementation by Nathanael Presson\n#ifndef BT_DBVT_BROADPHASE_H\n#define BT_DBVT_BROADPHASE_H\n\n#include \"BulletCollision/BroadphaseCollision/btDbvt.h\"\n#include \"BulletCollision/BroadphaseCollision/btOverlappingPairCache.h\"\n\n//\n// Compile time config\n//\n\n#define DBVT_BP_PROFILE 0\n//#define DBVT_BP_SORTPAIRS\t\t\t\t1\n#define DBVT_BP_PREVENTFALSEUPDATE 0\n#define DBVT_BP_ACCURATESLEEPING 0\n#define DBVT_BP_ENABLE_BENCHMARK 0\n//#define DBVT_BP_MARGIN\t\t\t\t\t(btScalar)0.05\nextern btScalar gDbvtMargin;\n\n#if DBVT_BP_PROFILE\n#define DBVT_BP_PROFILING_RATE 256\n#include \"LinearMath/btQuickprof.h\"\n#endif\n\n//\n// btDbvtProxy\n//\nstruct btDbvtProxy : btBroadphaseProxy\n{\n\t/* Fields\t\t*/\n\t//btDbvtAabbMm\taabb;\n\tbtDbvtNode* leaf;\n\tbtDbvtProxy* links[2];\n\tint stage;\n\t/* ctor\t\t\t*/\n\tbtDbvtProxy(const btVector3& aabbMin, const btVector3& aabbMax, void* userPtr, int collisionFilterGroup, int collisionFilterMask) : btBroadphaseProxy(aabbMin, aabbMax, userPtr, collisionFilterGroup, collisionFilterMask)\n\t{\n\t\tlinks[0] = links[1] = 0;\n\t}\n};\n\ntypedef btAlignedObjectArray<btDbvtProxy*> btDbvtProxyArray;\n\n///The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt).\n///One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other.\n///This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3.\nstruct btDbvtBroadphase : btBroadphaseInterface\n{\n\t/* Config\t\t*/\n\tenum\n\t{\n\t\tDYNAMIC_SET = 0, /* Dynamic set index\t*/\n\t\tFIXED_SET = 1,   /* Fixed set index\t\t*/\n\t\tSTAGECOUNT = 2   /* Number of stages\t\t*/\n\t};\n\t/* Fields\t\t*/\n\tbtDbvt m_sets[2];                           // Dbvt sets\n\tbtDbvtProxy* m_stageRoots[STAGECOUNT + 1];  // Stages list\n\tbtOverlappingPairCache* m_paircache;        // Pair cache\n\tbtScalar m_prediction;                      // Velocity prediction\n\tint m_stageCurrent;                         // Current stage\n\tint m_fupdates;                             // % of fixed updates per frame\n\tint m_dupdates;                             // % of dynamic updates per frame\n\tint m_cupdates;                             // % of cleanup updates per frame\n\tint m_newpairs;                             // Number of pairs created\n\tint m_fixedleft;                            // Fixed optimization left\n\tunsigned m_updates_call;                    // Number of updates call\n\tunsigned m_updates_done;                    // Number of updates done\n\tbtScalar m_updates_ratio;                   // m_updates_done/m_updates_call\n\tint m_pid;                                  // Parse id\n\tint m_cid;                                  // Cleanup index\n\tint m_gid;                                  // Gen id\n\tbool m_releasepaircache;                    // Release pair cache on delete\n\tbool m_deferedcollide;                      // Defere dynamic/static collision to collide call\n\tbool m_needcleanup;                         // Need to run cleanup?\n\tbtAlignedObjectArray<btAlignedObjectArray<const btDbvtNode*> > m_rayTestStacks;\n#if DBVT_BP_PROFILE\n\tbtClock m_clock;\n\tstruct\n\t{\n\t\tunsigned long m_total;\n\t\tunsigned long m_ddcollide;\n\t\tunsigned long m_fdcollide;\n\t\tunsigned long m_cleanup;\n\t\tunsigned long m_jobcount;\n\t} m_profiling;\n#endif\n\t/* Methods\t\t*/\n\tbtDbvtBroadphase(btOverlappingPairCache* paircache = 0);\n\t~btDbvtBroadphase();\n\tvoid collide(btDispatcher* dispatcher);\n\tvoid optimize();\n\n\t/* btBroadphaseInterface Implementation\t*/\n\tbtBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher);\n\tvirtual void destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher);\n\tvirtual void setAabb(btBroadphaseProxy* proxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher);\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin = btVector3(0, 0, 0), const btVector3& aabbMax = btVector3(0, 0, 0));\n\tvirtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);\n\n\tvirtual void getAabb(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const;\n\tvirtual void calculateOverlappingPairs(btDispatcher* dispatcher);\n\tvirtual btOverlappingPairCache* getOverlappingPairCache();\n\tvirtual const btOverlappingPairCache* getOverlappingPairCache() const;\n\tvirtual void getBroadphaseAabb(btVector3& aabbMin, btVector3& aabbMax) const;\n\tvirtual void printStats();\n\n\t///reset broadphase internal structures, to ensure determinism/reproducability\n\tvirtual void resetPool(btDispatcher* dispatcher);\n\n\tvoid performDeferredRemoval(btDispatcher* dispatcher);\n\n\tvoid setVelocityPrediction(btScalar prediction)\n\t{\n\t\tm_prediction = prediction;\n\t}\n\tbtScalar getVelocityPrediction() const\n\t{\n\t\treturn m_prediction;\n\t}\n\n\t///this setAabbForceUpdate is similar to setAabb but always forces the aabb update.\n\t///it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase.\n\t///it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see\n\t///http://code.google.com/p/bullet/issues/detail?id=223\n\tvoid setAabbForceUpdate(btBroadphaseProxy* absproxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* /*dispatcher*/);\n\n\tstatic void benchmark(btBroadphaseInterface*);\n};\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DISPATCHER_H\n#define BT_DISPATCHER_H\n#include \"LinearMath/btScalar.h\"\n\nclass btCollisionAlgorithm;\nstruct btBroadphaseProxy;\nclass btRigidBody;\nclass btCollisionObject;\nclass btOverlappingPairCache;\nstruct btCollisionObjectWrapper;\n\nclass btPersistentManifold;\nclass btPoolAllocator;\n\nstruct btDispatcherInfo\n{\n\tenum DispatchFunc\n\t{\n\t\tDISPATCH_DISCRETE = 1,\n\t\tDISPATCH_CONTINUOUS\n\t};\n\tbtDispatcherInfo()\n\t\t: m_timeStep(btScalar(0.)),\n\t\t  m_stepCount(0),\n\t\t  m_dispatchFunc(DISPATCH_DISCRETE),\n\t\t  m_timeOfImpact(btScalar(1.)),\n\t\t  m_useContinuous(true),\n\t\t  m_debugDraw(0),\n\t\t  m_enableSatConvex(false),\n\t\t  m_enableSPU(true),\n\t\t  m_useEpa(true),\n\t\t  m_allowedCcdPenetration(btScalar(0.04)),\n\t\t  m_useConvexConservativeDistanceUtil(false),\n\t\t  m_convexConservativeDistanceThreshold(0.0f),\n\t\t  m_deterministicOverlappingPairs(false)\n\t{\n\t}\n\tbtScalar m_timeStep;\n\tint m_stepCount;\n\tint m_dispatchFunc;\n\tmutable btScalar m_timeOfImpact;\n\tbool m_useContinuous;\n\tclass btIDebugDraw* m_debugDraw;\n\tbool m_enableSatConvex;\n\tbool m_enableSPU;\n\tbool m_useEpa;\n\tbtScalar m_allowedCcdPenetration;\n\tbool m_useConvexConservativeDistanceUtil;\n\tbtScalar m_convexConservativeDistanceThreshold;\n\tbool m_deterministicOverlappingPairs;\n};\n\nenum ebtDispatcherQueryType\n{\n\tBT_CONTACT_POINT_ALGORITHMS = 1,\n\tBT_CLOSEST_POINT_ALGORITHMS = 2\n};\n\n///The btDispatcher interface class can be used in combination with broadphase to dispatch calculations for overlapping pairs.\n///For example for pairwise collision detection, calculating contact points stored in btPersistentManifold or user callbacks (game logic).\nclass btDispatcher\n{\npublic:\n\tvirtual ~btDispatcher();\n\n\tvirtual btCollisionAlgorithm* findAlgorithm(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, btPersistentManifold* sharedManifold, ebtDispatcherQueryType queryType) = 0;\n\n\tvirtual btPersistentManifold* getNewManifold(const btCollisionObject* b0, const btCollisionObject* b1) = 0;\n\n\tvirtual void releaseManifold(btPersistentManifold* manifold) = 0;\n\n\tvirtual void clearManifold(btPersistentManifold* manifold) = 0;\n\n\tvirtual bool needsCollision(const btCollisionObject* body0, const btCollisionObject* body1) = 0;\n\n\tvirtual bool needsResponse(const btCollisionObject* body0, const btCollisionObject* body1) = 0;\n\n\tvirtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache, const btDispatcherInfo& dispatchInfo, btDispatcher* dispatcher) = 0;\n\n\tvirtual int getNumManifolds() const = 0;\n\n\tvirtual btPersistentManifold* getManifoldByIndexInternal(int index) = 0;\n\n\tvirtual btPersistentManifold** getInternalManifoldPointer() = 0;\n\n\tvirtual btPoolAllocator* getInternalManifoldPool() = 0;\n\n\tvirtual const btPoolAllocator* getInternalManifoldPool() const = 0;\n\n\tvirtual void* allocateCollisionAlgorithm(int size) = 0;\n\n\tvirtual void freeCollisionAlgorithm(void* ptr) = 0;\n};\n\n#endif  //BT_DISPATCHER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_OVERLAPPING_PAIR_CACHE_H\n#define BT_OVERLAPPING_PAIR_CACHE_H\n\n#include \"btBroadphaseInterface.h\"\n#include \"btBroadphaseProxy.h\"\n#include \"btOverlappingPairCallback.h\"\n\n#include \"LinearMath/btAlignedObjectArray.h\"\nclass btDispatcher;\n\ntypedef btAlignedObjectArray<btBroadphasePair> btBroadphasePairArray;\n\nstruct btOverlapCallback\n{\n\tvirtual ~btOverlapCallback()\n\t{\n\t}\n\t//return true for deletion of the pair\n\tvirtual bool processOverlap(btBroadphasePair& pair) = 0;\n};\n\nstruct btOverlapFilterCallback\n{\n\tvirtual ~btOverlapFilterCallback()\n\t{\n\t}\n\t// return true when pairs need collision\n\tvirtual bool needBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) const = 0;\n};\n\nconst int BT_NULL_PAIR = 0xffffffff;\n\n///The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases.\n///The btHashedOverlappingPairCache and btSortedOverlappingPairCache classes are two implementations.\nclass btOverlappingPairCache : public btOverlappingPairCallback\n{\npublic:\n\tvirtual ~btOverlappingPairCache() {}  // this is needed so we can get to the derived class destructor\n\n\tvirtual btBroadphasePair* getOverlappingPairArrayPtr() = 0;\n\n\tvirtual const btBroadphasePair* getOverlappingPairArrayPtr() const = 0;\n\n\tvirtual btBroadphasePairArray& getOverlappingPairArray() = 0;\n\n\tvirtual void cleanOverlappingPair(btBroadphasePair& pair, btDispatcher* dispatcher) = 0;\n\n\tvirtual int getNumOverlappingPairs() const = 0;\n\tvirtual bool needsBroadphaseCollision(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1) const = 0;\n\tvirtual btOverlapFilterCallback* getOverlapFilterCallback() = 0;\n\tvirtual void cleanProxyFromPairs(btBroadphaseProxy* proxy, btDispatcher* dispatcher) = 0;\n\n\tvirtual void setOverlapFilterCallback(btOverlapFilterCallback* callback) = 0;\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback*, btDispatcher* dispatcher) = 0;\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback* callback, btDispatcher* dispatcher, const struct btDispatcherInfo& /*dispatchInfo*/)\n\t{\n\t\tprocessAllOverlappingPairs(callback, dispatcher);\n\t}\n\tvirtual btBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) = 0;\n\n\tvirtual bool hasDeferredRemoval() = 0;\n\n\tvirtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback) = 0;\n\n\tvirtual void sortOverlappingPairs(btDispatcher* dispatcher) = 0;\n};\n\n/// Hash-space based Pair Cache, thanks to Erin Catto, Box2D, http://www.box2d.org, and Pierre Terdiman, Codercorner, http://codercorner.com\n\nATTRIBUTE_ALIGNED16(class)\nbtHashedOverlappingPairCache : public btOverlappingPairCache\n{\n\tbtBroadphasePairArray m_overlappingPairArray;\n\tbtOverlapFilterCallback* m_overlapFilterCallback;\n\nprotected:\n\tbtAlignedObjectArray<int> m_hashTable;\n\tbtAlignedObjectArray<int> m_next;\n\tbtOverlappingPairCallback* m_ghostPairCallback;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtHashedOverlappingPairCache();\n\tvirtual ~btHashedOverlappingPairCache();\n\n\tvoid removeOverlappingPairsContainingProxy(btBroadphaseProxy * proxy, btDispatcher * dispatcher);\n\n\tvirtual void* removeOverlappingPair(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1, btDispatcher * dispatcher);\n\n\tSIMD_FORCE_INLINE bool needsBroadphaseCollision(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1) const\n\t{\n\t\tif (m_overlapFilterCallback)\n\t\t\treturn m_overlapFilterCallback->needBroadphaseCollision(proxy0, proxy1);\n\n\t\tbool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;\n\t\tcollides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);\n\n\t\treturn collides;\n\t}\n\n\t// Add a pair and return the new pair. If the pair already exists,\n\t// no new pair is created and the old one is returned.\n\tvirtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1)\n\t{\n\t\tif (!needsBroadphaseCollision(proxy0, proxy1))\n\t\t\treturn 0;\n\n\t\treturn internalAddPair(proxy0, proxy1);\n\t}\n\n\tvoid cleanProxyFromPairs(btBroadphaseProxy * proxy, btDispatcher * dispatcher);\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback*, btDispatcher * dispatcher);\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback * callback, btDispatcher * dispatcher, const struct btDispatcherInfo& dispatchInfo);\n\n\tvirtual btBroadphasePair* getOverlappingPairArrayPtr()\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tconst btBroadphasePair* getOverlappingPairArrayPtr() const\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tbtBroadphasePairArray& getOverlappingPairArray()\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tconst btBroadphasePairArray& getOverlappingPairArray() const\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tvoid cleanOverlappingPair(btBroadphasePair & pair, btDispatcher * dispatcher);\n\n\tbtBroadphasePair* findPair(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1);\n\n\tint GetCount() const { return m_overlappingPairArray.size(); }\n\t//\tbtBroadphasePair* GetPairs() { return m_pairs; }\n\n\tbtOverlapFilterCallback* getOverlapFilterCallback()\n\t{\n\t\treturn m_overlapFilterCallback;\n\t}\n\n\tvoid setOverlapFilterCallback(btOverlapFilterCallback * callback)\n\t{\n\t\tm_overlapFilterCallback = callback;\n\t}\n\n\tint getNumOverlappingPairs() const\n\t{\n\t\treturn m_overlappingPairArray.size();\n\t}\n\nprivate:\n\tbtBroadphasePair* internalAddPair(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1);\n\n\tvoid growTables();\n\n\tSIMD_FORCE_INLINE bool equalsPair(const btBroadphasePair& pair, int proxyId1, int proxyId2)\n\t{\n\t\treturn pair.m_pProxy0->getUid() == proxyId1 && pair.m_pProxy1->getUid() == proxyId2;\n\t}\n\n\t/*\n\t// Thomas Wang's hash, see: http://www.concentric.net/~Ttwang/tech/inthash.htm\n\t// This assumes proxyId1 and proxyId2 are 16-bit.\n\tSIMD_FORCE_INLINE int getHash(int proxyId1, int proxyId2)\n\t{\n\t\tint key = (proxyId2 << 16) | proxyId1;\n\t\tkey = ~key + (key << 15);\n\t\tkey = key ^ (key >> 12);\n\t\tkey = key + (key << 2);\n\t\tkey = key ^ (key >> 4);\n\t\tkey = key * 2057;\n\t\tkey = key ^ (key >> 16);\n\t\treturn key;\n\t}\n\t*/\n\n\tSIMD_FORCE_INLINE unsigned int getHash(unsigned int proxyId1, unsigned int proxyId2)\n\t{\n\t\tunsigned int key = proxyId1 | (proxyId2 << 16);\n\t\t// Thomas Wang's hash\n\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\t\treturn key;\n\t}\n\n\tSIMD_FORCE_INLINE btBroadphasePair* internalFindPair(btBroadphaseProxy * proxy0, btBroadphaseProxy * proxy1, int hash)\n\t{\n\t\tint proxyId1 = proxy0->getUid();\n\t\tint proxyId2 = proxy1->getUid();\n#if 0  // wrong, 'equalsPair' use unsorted uids, copy-past devil striked again. Nat.\n\t\tif (proxyId1 > proxyId2) \n\t\t\tbtSwap(proxyId1, proxyId2);\n#endif\n\n\t\tint index = m_hashTable[hash];\n\n\t\twhile (index != BT_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyId1, proxyId2) == false)\n\t\t{\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (index == BT_NULL_PAIR)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\n\t\tbtAssert(index < m_overlappingPairArray.size());\n\n\t\treturn &m_overlappingPairArray[index];\n\t}\n\n\tvirtual bool hasDeferredRemoval()\n\t{\n\t\treturn false;\n\t}\n\n\tvirtual void setInternalGhostPairCallback(btOverlappingPairCallback * ghostPairCallback)\n\t{\n\t\tm_ghostPairCallback = ghostPairCallback;\n\t}\n\n\tvirtual void sortOverlappingPairs(btDispatcher * dispatcher);\n};\n\n///btSortedOverlappingPairCache maintains the objects with overlapping AABB\n///Typically managed by the Broadphase, Axis3Sweep or btSimpleBroadphase\nclass btSortedOverlappingPairCache : public btOverlappingPairCache\n{\nprotected:\n\t//avoid brute-force finding all the time\n\tbtBroadphasePairArray m_overlappingPairArray;\n\n\t//during the dispatch, check that user doesn't destroy/create proxy\n\tbool m_blockedForChanges;\n\n\t///by default, do the removal during the pair traversal\n\tbool m_hasDeferredRemoval;\n\n\t//if set, use the callback instead of the built in filter in needBroadphaseCollision\n\tbtOverlapFilterCallback* m_overlapFilterCallback;\n\n\tbtOverlappingPairCallback* m_ghostPairCallback;\n\npublic:\n\tbtSortedOverlappingPairCache();\n\tvirtual ~btSortedOverlappingPairCache();\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback*, btDispatcher* dispatcher);\n\n\tvoid* removeOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, btDispatcher* dispatcher);\n\n\tvoid cleanOverlappingPair(btBroadphasePair& pair, btDispatcher* dispatcher);\n\n\tbtBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1);\n\n\tbtBroadphasePair* findPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1);\n\n\tvoid cleanProxyFromPairs(btBroadphaseProxy* proxy, btDispatcher* dispatcher);\n\n\tvoid removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher);\n\n\tinline bool needsBroadphaseCollision(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) const\n\t{\n\t\tif (m_overlapFilterCallback)\n\t\t\treturn m_overlapFilterCallback->needBroadphaseCollision(proxy0, proxy1);\n\n\t\tbool collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0;\n\t\tcollides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask);\n\n\t\treturn collides;\n\t}\n\n\tbtBroadphasePairArray& getOverlappingPairArray()\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tconst btBroadphasePairArray& getOverlappingPairArray() const\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tbtBroadphasePair* getOverlappingPairArrayPtr()\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tconst btBroadphasePair* getOverlappingPairArrayPtr() const\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tint getNumOverlappingPairs() const\n\t{\n\t\treturn m_overlappingPairArray.size();\n\t}\n\n\tbtOverlapFilterCallback* getOverlapFilterCallback()\n\t{\n\t\treturn m_overlapFilterCallback;\n\t}\n\n\tvoid setOverlapFilterCallback(btOverlapFilterCallback* callback)\n\t{\n\t\tm_overlapFilterCallback = callback;\n\t}\n\n\tvirtual bool hasDeferredRemoval()\n\t{\n\t\treturn m_hasDeferredRemoval;\n\t}\n\n\tvirtual void setInternalGhostPairCallback(btOverlappingPairCallback* ghostPairCallback)\n\t{\n\t\tm_ghostPairCallback = ghostPairCallback;\n\t}\n\n\tvirtual void sortOverlappingPairs(btDispatcher* dispatcher);\n};\n\n///btNullPairCache skips add/removal of overlapping pairs. Userful for benchmarking and unit testing.\nclass btNullPairCache : public btOverlappingPairCache\n{\n\tbtBroadphasePairArray m_overlappingPairArray;\n\npublic:\n\tvirtual btBroadphasePair* getOverlappingPairArrayPtr()\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\tconst btBroadphasePair* getOverlappingPairArrayPtr() const\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\tbtBroadphasePairArray& getOverlappingPairArray()\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tvirtual void cleanOverlappingPair(btBroadphasePair& /*pair*/, btDispatcher* /*dispatcher*/)\n\t{\n\t}\n\n\tvirtual int getNumOverlappingPairs() const\n\t{\n\t\treturn 0;\n\t}\n\n\tvirtual void cleanProxyFromPairs(btBroadphaseProxy* /*proxy*/, btDispatcher* /*dispatcher*/)\n\t{\n\t}\n\n\tbool needsBroadphaseCollision(btBroadphaseProxy*, btBroadphaseProxy*) const\n\t{\n\t\treturn true;\n\t}\n\tbtOverlapFilterCallback* getOverlapFilterCallback()\n\t{\n\t\treturn 0;\n\t}\n\tvirtual void setOverlapFilterCallback(btOverlapFilterCallback* /*callback*/)\n\t{\n\t}\n\n\tvirtual void processAllOverlappingPairs(btOverlapCallback*, btDispatcher* /*dispatcher*/)\n\t{\n\t}\n\n\tvirtual btBroadphasePair* findPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/)\n\t{\n\t\treturn 0;\n\t}\n\n\tvirtual bool hasDeferredRemoval()\n\t{\n\t\treturn true;\n\t}\n\n\tvirtual void setInternalGhostPairCallback(btOverlappingPairCallback* /* ghostPairCallback */)\n\t{\n\t}\n\n\tvirtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/)\n\t{\n\t\treturn 0;\n\t}\n\n\tvirtual void* removeOverlappingPair(btBroadphaseProxy* /*proxy0*/, btBroadphaseProxy* /*proxy1*/, btDispatcher* /*dispatcher*/)\n\t{\n\t\treturn 0;\n\t}\n\n\tvirtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/, btDispatcher* /*dispatcher*/)\n\t{\n\t}\n\n\tvirtual void sortOverlappingPairs(btDispatcher* dispatcher)\n\t{\n\t\t(void)dispatcher;\n\t}\n};\n\n#endif  //BT_OVERLAPPING_PAIR_CACHE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h",
    "content": "\n/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef OVERLAPPING_PAIR_CALLBACK_H\n#define OVERLAPPING_PAIR_CALLBACK_H\n\nclass btDispatcher;\nstruct btBroadphasePair;\n\n///The btOverlappingPairCallback class is an additional optional broadphase user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache.\nclass btOverlappingPairCallback\n{\nprotected:\n\tbtOverlappingPairCallback() {}\n\npublic:\n\tvirtual ~btOverlappingPairCallback()\n\t{\n\t}\n\n\tvirtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1) = 0;\n\n\tvirtual void* removeOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, btDispatcher* dispatcher) = 0;\n\n\tvirtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* proxy0, btDispatcher* dispatcher) = 0;\n};\n\n#endif  //OVERLAPPING_PAIR_CALLBACK_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_QUANTIZED_BVH_H\n#define BT_QUANTIZED_BVH_H\n\nclass btSerializer;\n\n//#define DEBUG_CHECK_DEQUANTIZATION 1\n#ifdef DEBUG_CHECK_DEQUANTIZATION\n#ifdef __SPU__\n#define printf spu_printf\n#endif  //__SPU__\n\n#include <stdio.h>\n#include <stdlib.h>\n#endif  //DEBUG_CHECK_DEQUANTIZATION\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btQuantizedBvhData btQuantizedBvhDoubleData\n#define btOptimizedBvhNodeData btOptimizedBvhNodeDoubleData\n#define btQuantizedBvhDataName \"btQuantizedBvhDoubleData\"\n#else\n#define btQuantizedBvhData btQuantizedBvhFloatData\n#define btOptimizedBvhNodeData btOptimizedBvhNodeFloatData\n#define btQuantizedBvhDataName \"btQuantizedBvhFloatData\"\n#endif\n\n//http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang/html/vclrf__m128.asp\n\n//Note: currently we have 16 bytes per quantized node\n#define MAX_SUBTREE_SIZE_IN_BYTES 2048\n\n// 10 gives the potential for 1024 parts, with at most 2^21 (2097152) (minus one\n// actually) triangles each (since the sign bit is reserved\n#define MAX_NUM_PARTS_IN_BITS 10\n\n///btQuantizedBvhNode is a compressed aabb node, 16 bytes.\n///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range).\nATTRIBUTE_ALIGNED16(struct)\nbtQuantizedBvhNode\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t//12 bytes\n\tunsigned short int m_quantizedAabbMin[3];\n\tunsigned short int m_quantizedAabbMax[3];\n\t//4 bytes\n\tint m_escapeIndexOrTriangleIndex;\n\n\tbool isLeafNode() const\n\t{\n\t\t//skipindex is negative (internal node), triangleindex >=0 (leafnode)\n\t\treturn (m_escapeIndexOrTriangleIndex >= 0);\n\t}\n\tint getEscapeIndex() const\n\t{\n\t\tbtAssert(!isLeafNode());\n\t\treturn -m_escapeIndexOrTriangleIndex;\n\t}\n\tint getTriangleIndex() const\n\t{\n\t\tbtAssert(isLeafNode());\n\t\tunsigned int x = 0;\n\t\tunsigned int y = (~(x & 0)) << (31 - MAX_NUM_PARTS_IN_BITS);\n\t\t// Get only the lower bits where the triangle index is stored\n\t\treturn (m_escapeIndexOrTriangleIndex & ~(y));\n\t}\n\tint getPartId() const\n\t{\n\t\tbtAssert(isLeafNode());\n\t\t// Get only the highest bits where the part index is stored\n\t\treturn (m_escapeIndexOrTriangleIndex >> (31 - MAX_NUM_PARTS_IN_BITS));\n\t}\n};\n\n/// btOptimizedBvhNode contains both internal and leaf node information.\n/// Total node size is 44 bytes / node. You can use the compressed version of 16 bytes.\nATTRIBUTE_ALIGNED16(struct)\nbtOptimizedBvhNode\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t//32 bytes\n\tbtVector3 m_aabbMinOrg;\n\tbtVector3 m_aabbMaxOrg;\n\n\t//4\n\tint m_escapeIndex;\n\n\t//8\n\t//for child nodes\n\tint m_subPart;\n\tint m_triangleIndex;\n\n\t//pad the size to 64 bytes\n\tchar m_padding[20];\n};\n\n///btBvhSubtreeInfo provides info to gather a subtree of limited size\nATTRIBUTE_ALIGNED16(class)\nbtBvhSubtreeInfo\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t//12 bytes\n\tunsigned short int m_quantizedAabbMin[3];\n\tunsigned short int m_quantizedAabbMax[3];\n\t//4 bytes, points to the root of the subtree\n\tint m_rootNodeIndex;\n\t//4 bytes\n\tint m_subtreeSize;\n\tint m_padding[3];\n\n\tbtBvhSubtreeInfo()\n\t{\n\t\t//memset(&m_padding[0], 0, sizeof(m_padding));\n\t}\n\n\tvoid setAabbFromQuantizeNode(const btQuantizedBvhNode& quantizedNode)\n\t{\n\t\tm_quantizedAabbMin[0] = quantizedNode.m_quantizedAabbMin[0];\n\t\tm_quantizedAabbMin[1] = quantizedNode.m_quantizedAabbMin[1];\n\t\tm_quantizedAabbMin[2] = quantizedNode.m_quantizedAabbMin[2];\n\t\tm_quantizedAabbMax[0] = quantizedNode.m_quantizedAabbMax[0];\n\t\tm_quantizedAabbMax[1] = quantizedNode.m_quantizedAabbMax[1];\n\t\tm_quantizedAabbMax[2] = quantizedNode.m_quantizedAabbMax[2];\n\t}\n};\n\nclass btNodeOverlapCallback\n{\npublic:\n\tvirtual ~btNodeOverlapCallback(){};\n\n\tvirtual void processNode(int subPart, int triangleIndex) = 0;\n};\n\n#include \"LinearMath/btAlignedAllocator.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///for code readability:\ntypedef btAlignedObjectArray<btOptimizedBvhNode> NodeArray;\ntypedef btAlignedObjectArray<btQuantizedBvhNode> QuantizedNodeArray;\ntypedef btAlignedObjectArray<btBvhSubtreeInfo> BvhSubtreeInfoArray;\n\n///The btQuantizedBvh class stores an AABB tree that can be quickly traversed on CPU and Cell SPU.\n///It is used by the btBvhTriangleMeshShape as midphase.\n///It is recommended to use quantization for better performance and lower memory requirements.\nATTRIBUTE_ALIGNED16(class)\nbtQuantizedBvh\n{\npublic:\n\tenum btTraversalMode\n\t{\n\t\tTRAVERSAL_STACKLESS = 0,\n\t\tTRAVERSAL_STACKLESS_CACHE_FRIENDLY,\n\t\tTRAVERSAL_RECURSIVE\n\t};\n\nprotected:\n\tbtVector3 m_bvhAabbMin;\n\tbtVector3 m_bvhAabbMax;\n\tbtVector3 m_bvhQuantization;\n\n\tint m_bulletVersion;  //for serialization versioning. It could also be used to detect endianess.\n\n\tint m_curNodeIndex;\n\t//quantization data\n\tbool m_useQuantization;\n\n\tNodeArray m_leafNodes;\n\tNodeArray m_contiguousNodes;\n\tQuantizedNodeArray m_quantizedLeafNodes;\n\tQuantizedNodeArray m_quantizedContiguousNodes;\n\n\tbtTraversalMode m_traversalMode;\n\tBvhSubtreeInfoArray m_SubtreeHeaders;\n\n\t//This is only used for serialization so we don't have to add serialization directly to btAlignedObjectArray\n\tmutable int m_subtreeHeaderCount;\n\n\t///two versions, one for quantized and normal nodes. This allows code-reuse while maintaining readability (no template/macro!)\n\t///this might be refactored into a virtual, it is usually not calculated at run-time\n\tvoid setInternalNodeAabbMin(int nodeIndex, const btVector3& aabbMin)\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\tquantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[0], aabbMin, 0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_contiguousNodes[nodeIndex].m_aabbMinOrg = aabbMin;\n\t\t}\n\t}\n\tvoid setInternalNodeAabbMax(int nodeIndex, const btVector3& aabbMax)\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\tquantize(&m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[0], aabbMax, 1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_contiguousNodes[nodeIndex].m_aabbMaxOrg = aabbMax;\n\t\t}\n\t}\n\n\tbtVector3 getAabbMin(int nodeIndex) const\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\treturn unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMin[0]);\n\t\t}\n\t\t//non-quantized\n\t\treturn m_leafNodes[nodeIndex].m_aabbMinOrg;\n\t}\n\tbtVector3 getAabbMax(int nodeIndex) const\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\treturn unQuantize(&m_quantizedLeafNodes[nodeIndex].m_quantizedAabbMax[0]);\n\t\t}\n\t\t//non-quantized\n\t\treturn m_leafNodes[nodeIndex].m_aabbMaxOrg;\n\t}\n\n\tvoid setInternalNodeEscapeIndex(int nodeIndex, int escapeIndex)\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\tm_quantizedContiguousNodes[nodeIndex].m_escapeIndexOrTriangleIndex = -escapeIndex;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_contiguousNodes[nodeIndex].m_escapeIndex = escapeIndex;\n\t\t}\n\t}\n\n\tvoid mergeInternalNodeAabb(int nodeIndex, const btVector3& newAabbMin, const btVector3& newAabbMax)\n\t{\n\t\tif (m_useQuantization)\n\t\t{\n\t\t\tunsigned short int quantizedAabbMin[3];\n\t\t\tunsigned short int quantizedAabbMax[3];\n\t\t\tquantize(quantizedAabbMin, newAabbMin, 0);\n\t\t\tquantize(quantizedAabbMax, newAabbMax, 1);\n\t\t\tfor (int i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tif (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] > quantizedAabbMin[i])\n\t\t\t\t\tm_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMin[i] = quantizedAabbMin[i];\n\n\t\t\t\tif (m_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] < quantizedAabbMax[i])\n\t\t\t\t\tm_quantizedContiguousNodes[nodeIndex].m_quantizedAabbMax[i] = quantizedAabbMax[i];\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t//non-quantized\n\t\t\tm_contiguousNodes[nodeIndex].m_aabbMinOrg.setMin(newAabbMin);\n\t\t\tm_contiguousNodes[nodeIndex].m_aabbMaxOrg.setMax(newAabbMax);\n\t\t}\n\t}\n\n\tvoid swapLeafNodes(int firstIndex, int secondIndex);\n\n\tvoid assignInternalNodeFromLeafNode(int internalNode, int leafNodeIndex);\n\nprotected:\n\tvoid buildTree(int startIndex, int endIndex);\n\n\tint calcSplittingAxis(int startIndex, int endIndex);\n\n\tint sortAndCalcSplittingIndex(int startIndex, int endIndex, int splitAxis);\n\n\tvoid walkStacklessTree(btNodeOverlapCallback * nodeCallback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvoid walkStacklessQuantizedTreeAgainstRay(btNodeOverlapCallback * nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex, int endNodeIndex) const;\n\tvoid walkStacklessQuantizedTree(btNodeOverlapCallback * nodeCallback, unsigned short int* quantizedQueryAabbMin, unsigned short int* quantizedQueryAabbMax, int startNodeIndex, int endNodeIndex) const;\n\tvoid walkStacklessTreeAgainstRay(btNodeOverlapCallback * nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax, int startNodeIndex, int endNodeIndex) const;\n\n\t///tree traversal designed for small-memory processors like PS3 SPU\n\tvoid walkStacklessQuantizedTreeCacheFriendly(btNodeOverlapCallback * nodeCallback, unsigned short int* quantizedQueryAabbMin, unsigned short int* quantizedQueryAabbMax) const;\n\n\t///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal\n\tvoid walkRecursiveQuantizedTreeAgainstQueryAabb(const btQuantizedBvhNode* currentNode, btNodeOverlapCallback* nodeCallback, unsigned short int* quantizedQueryAabbMin, unsigned short int* quantizedQueryAabbMax) const;\n\n\t///use the 16-byte stackless 'skipindex' node tree to do a recursive traversal\n\tvoid walkRecursiveQuantizedTreeAgainstQuantizedTree(const btQuantizedBvhNode* treeNodeA, const btQuantizedBvhNode* treeNodeB, btNodeOverlapCallback* nodeCallback) const;\n\n\tvoid updateSubtreeHeaders(int leftChildNodexIndex, int rightChildNodexIndex);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtQuantizedBvh();\n\n\tvirtual ~btQuantizedBvh();\n\n\t///***************************************** expert/internal use only *************************\n\tvoid setQuantizationValues(const btVector3& bvhAabbMin, const btVector3& bvhAabbMax, btScalar quantizationMargin = btScalar(1.0));\n\tQuantizedNodeArray& getLeafNodeArray() { return m_quantizedLeafNodes; }\n\t///buildInternal is expert use only: assumes that setQuantizationValues and LeafNodeArray are initialized\n\tvoid buildInternal();\n\t///***************************************** expert/internal use only *************************\n\n\tvoid reportAabbOverlappingNodex(btNodeOverlapCallback * nodeCallback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\tvoid reportRayOverlappingNodex(btNodeOverlapCallback * nodeCallback, const btVector3& raySource, const btVector3& rayTarget) const;\n\tvoid reportBoxCastOverlappingNodex(btNodeOverlapCallback * nodeCallback, const btVector3& raySource, const btVector3& rayTarget, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tSIMD_FORCE_INLINE void quantize(unsigned short* out, const btVector3& point, int isMax) const\n\t{\n\t\tbtAssert(m_useQuantization);\n\n\t\tbtAssert(point.getX() <= m_bvhAabbMax.getX());\n\t\tbtAssert(point.getY() <= m_bvhAabbMax.getY());\n\t\tbtAssert(point.getZ() <= m_bvhAabbMax.getZ());\n\n\t\tbtAssert(point.getX() >= m_bvhAabbMin.getX());\n\t\tbtAssert(point.getY() >= m_bvhAabbMin.getY());\n\t\tbtAssert(point.getZ() >= m_bvhAabbMin.getZ());\n\n\t\tbtVector3 v = (point - m_bvhAabbMin) * m_bvhQuantization;\n\t\t///Make sure rounding is done in a way that unQuantize(quantizeWithClamp(...)) is conservative\n\t\t///end-points always set the first bit, so that they are sorted properly (so that neighbouring AABBs overlap properly)\n\t\t///@todo: double-check this\n\t\tif (isMax)\n\t\t{\n\t\t\tout[0] = (unsigned short)(((unsigned short)(v.getX() + btScalar(1.)) | 1));\n\t\t\tout[1] = (unsigned short)(((unsigned short)(v.getY() + btScalar(1.)) | 1));\n\t\t\tout[2] = (unsigned short)(((unsigned short)(v.getZ() + btScalar(1.)) | 1));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tout[0] = (unsigned short)(((unsigned short)(v.getX()) & 0xfffe));\n\t\t\tout[1] = (unsigned short)(((unsigned short)(v.getY()) & 0xfffe));\n\t\t\tout[2] = (unsigned short)(((unsigned short)(v.getZ()) & 0xfffe));\n\t\t}\n\n#ifdef DEBUG_CHECK_DEQUANTIZATION\n\t\tbtVector3 newPoint = unQuantize(out);\n\t\tif (isMax)\n\t\t{\n\t\t\tif (newPoint.getX() < point.getX())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative X, diffX = %f, oldX=%f,newX=%f\\n\", newPoint.getX() - point.getX(), newPoint.getX(), point.getX());\n\t\t\t}\n\t\t\tif (newPoint.getY() < point.getY())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative Y, diffY = %f, oldY=%f,newY=%f\\n\", newPoint.getY() - point.getY(), newPoint.getY(), point.getY());\n\t\t\t}\n\t\t\tif (newPoint.getZ() < point.getZ())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\\n\", newPoint.getZ() - point.getZ(), newPoint.getZ(), point.getZ());\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (newPoint.getX() > point.getX())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative X, diffX = %f, oldX=%f,newX=%f\\n\", newPoint.getX() - point.getX(), newPoint.getX(), point.getX());\n\t\t\t}\n\t\t\tif (newPoint.getY() > point.getY())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative Y, diffY = %f, oldY=%f,newY=%f\\n\", newPoint.getY() - point.getY(), newPoint.getY(), point.getY());\n\t\t\t}\n\t\t\tif (newPoint.getZ() > point.getZ())\n\t\t\t{\n\t\t\t\tprintf(\"unconservative Z, diffZ = %f, oldZ=%f,newZ=%f\\n\", newPoint.getZ() - point.getZ(), newPoint.getZ(), point.getZ());\n\t\t\t}\n\t\t}\n#endif  //DEBUG_CHECK_DEQUANTIZATION\n\t}\n\n\tSIMD_FORCE_INLINE void quantizeWithClamp(unsigned short* out, const btVector3& point2, int isMax) const\n\t{\n\t\tbtAssert(m_useQuantization);\n\n\t\tbtVector3 clampedPoint(point2);\n\t\tclampedPoint.setMax(m_bvhAabbMin);\n\t\tclampedPoint.setMin(m_bvhAabbMax);\n\n\t\tquantize(out, clampedPoint, isMax);\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 unQuantize(const unsigned short* vecIn) const\n\t{\n\t\tbtVector3 vecOut;\n\t\tvecOut.setValue(\n\t\t\t(btScalar)(vecIn[0]) / (m_bvhQuantization.getX()),\n\t\t\t(btScalar)(vecIn[1]) / (m_bvhQuantization.getY()),\n\t\t\t(btScalar)(vecIn[2]) / (m_bvhQuantization.getZ()));\n\t\tvecOut += m_bvhAabbMin;\n\t\treturn vecOut;\n\t}\n\n\t///setTraversalMode let's you choose between stackless, recursive or stackless cache friendly tree traversal. Note this is only implemented for quantized trees.\n\tvoid setTraversalMode(btTraversalMode traversalMode)\n\t{\n\t\tm_traversalMode = traversalMode;\n\t}\n\n\tSIMD_FORCE_INLINE QuantizedNodeArray& getQuantizedNodeArray()\n\t{\n\t\treturn m_quantizedContiguousNodes;\n\t}\n\n\tSIMD_FORCE_INLINE BvhSubtreeInfoArray& getSubtreeInfoArray()\n\t{\n\t\treturn m_SubtreeHeaders;\n\t}\n\n\t////////////////////////////////////////////////////////////////////\n\n\t/////Calculate space needed to store BVH for serialization\n\tunsigned calculateSerializeBufferSize() const;\n\n\t/// Data buffer MUST be 16 byte aligned\n\tvirtual bool serialize(void* o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const;\n\n\t///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'\n\tstatic btQuantizedBvh* deSerializeInPlace(void* i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian);\n\n\tstatic unsigned int getAlignmentSerializationPadding();\n\t//////////////////////////////////////////////////////////////////////\n\n\tvirtual int calculateSerializeBufferSizeNew() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tvirtual void deSerializeFloat(struct btQuantizedBvhFloatData & quantizedBvhFloatData);\n\n\tvirtual void deSerializeDouble(struct btQuantizedBvhDoubleData & quantizedBvhDoubleData);\n\n\t////////////////////////////////////////////////////////////////////\n\n\tSIMD_FORCE_INLINE bool isQuantized()\n\t{\n\t\treturn m_useQuantization;\n\t}\n\nprivate:\n\t// Special \"copy\" constructor that allows for in-place deserialization\n\t// Prevents btVector3's default constructor from being called, but doesn't inialize much else\n\t// ownsMemory should most likely be false if deserializing, and if you are not, don't call this (it also changes the function signature, which we need)\n\tbtQuantizedBvh(btQuantizedBvh & other, bool ownsMemory);\n};\n\n// clang-format off\n// parser needs * with the name\nstruct btBvhSubtreeInfoData\n{\n\tint m_rootNodeIndex;\n\tint m_subtreeSize;\n\tunsigned short m_quantizedAabbMin[3];\n\tunsigned short m_quantizedAabbMax[3];\n};\n\nstruct btOptimizedBvhNodeFloatData\n{\n\tbtVector3FloatData m_aabbMinOrg;\n\tbtVector3FloatData m_aabbMaxOrg;\n\tint m_escapeIndex;\n\tint m_subPart;\n\tint m_triangleIndex;\n\tchar m_pad[4];\n};\n\nstruct btOptimizedBvhNodeDoubleData\n{\n\tbtVector3DoubleData m_aabbMinOrg;\n\tbtVector3DoubleData m_aabbMaxOrg;\n\tint m_escapeIndex;\n\tint m_subPart;\n\tint m_triangleIndex;\n\tchar m_pad[4];\n};\n\n\nstruct btQuantizedBvhNodeData\n{\n\tunsigned short m_quantizedAabbMin[3];\n\tunsigned short m_quantizedAabbMax[3];\n\tint\tm_escapeIndexOrTriangleIndex;\n};\n\nstruct\tbtQuantizedBvhFloatData\n{\n\tbtVector3FloatData\t\t\tm_bvhAabbMin;\n\tbtVector3FloatData\t\t\tm_bvhAabbMax;\n\tbtVector3FloatData\t\t\tm_bvhQuantization;\n\tint\t\t\t\t\tm_curNodeIndex;\n\tint\t\t\t\t\tm_useQuantization;\n\tint\t\t\t\t\tm_numContiguousLeafNodes;\n\tint\t\t\t\t\tm_numQuantizedContiguousNodes;\n\tbtOptimizedBvhNodeFloatData\t*m_contiguousNodesPtr;\n\tbtQuantizedBvhNodeData\t\t*m_quantizedContiguousNodesPtr;\n\tbtBvhSubtreeInfoData\t*m_subTreeInfoPtr;\n\tint\t\t\t\t\tm_traversalMode;\n\tint\t\t\t\t\tm_numSubtreeHeaders;\n\t\n};\n\nstruct\tbtQuantizedBvhDoubleData\n{\n\tbtVector3DoubleData\t\t\tm_bvhAabbMin;\n\tbtVector3DoubleData\t\t\tm_bvhAabbMax;\n\tbtVector3DoubleData\t\t\tm_bvhQuantization;\n\tint\t\t\t\t\t\t\tm_curNodeIndex;\n\tint\t\t\t\t\t\t\tm_useQuantization;\n\tint\t\t\t\t\t\t\tm_numContiguousLeafNodes;\n\tint\t\t\t\t\t\t\tm_numQuantizedContiguousNodes;\n\tbtOptimizedBvhNodeDoubleData\t*m_contiguousNodesPtr;\n\tbtQuantizedBvhNodeData\t\t\t*m_quantizedContiguousNodesPtr;\n\n\tint\t\t\t\t\t\t\tm_traversalMode;\n\tint\t\t\t\t\t\t\tm_numSubtreeHeaders;\n\tbtBvhSubtreeInfoData\t\t*m_subTreeInfoPtr;\n};\n// clang-format on\n\nSIMD_FORCE_INLINE int btQuantizedBvh::calculateSerializeBufferSizeNew() const\n{\n\treturn sizeof(btQuantizedBvhData);\n}\n\n#endif  //BT_QUANTIZED_BVH_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMPLE_BROADPHASE_H\n#define BT_SIMPLE_BROADPHASE_H\n\n#include \"btOverlappingPairCache.h\"\n\nstruct btSimpleBroadphaseProxy : public btBroadphaseProxy\n{\n\tint m_nextFree;\n\n\t//\tint\t\t\tm_handleId;\n\n\tbtSimpleBroadphaseProxy(){};\n\n\tbtSimpleBroadphaseProxy(const btVector3& minpt, const btVector3& maxpt, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask)\n\t\t: btBroadphaseProxy(minpt, maxpt, userPtr, collisionFilterGroup, collisionFilterMask)\n\t{\n\t\t(void)shapeType;\n\t}\n\n\tSIMD_FORCE_INLINE void SetNextFree(int next) { m_nextFree = next; }\n\tSIMD_FORCE_INLINE int GetNextFree() const { return m_nextFree; }\n};\n\n///The SimpleBroadphase is just a unit-test for btAxisSweep3, bt32BitAxisSweep3, or btDbvtBroadphase, so use those classes instead.\n///It is a brute force aabb culling broadphase based on O(n^2) aabb checks\nclass btSimpleBroadphase : public btBroadphaseInterface\n{\nprotected:\n\tint m_numHandles;  // number of active handles\n\tint m_maxHandles;  // max number of handles\n\tint m_LastHandleIndex;\n\n\tbtSimpleBroadphaseProxy* m_pHandles;  // handles pool\n\n\tvoid* m_pHandlesRawPtr;\n\tint m_firstFreeHandle;  // free handles list\n\n\tint allocHandle()\n\t{\n\t\tbtAssert(m_numHandles < m_maxHandles);\n\t\tint freeHandle = m_firstFreeHandle;\n\t\tm_firstFreeHandle = m_pHandles[freeHandle].GetNextFree();\n\t\tm_numHandles++;\n\t\tif (freeHandle > m_LastHandleIndex)\n\t\t{\n\t\t\tm_LastHandleIndex = freeHandle;\n\t\t}\n\t\treturn freeHandle;\n\t}\n\n\tvoid freeHandle(btSimpleBroadphaseProxy* proxy)\n\t{\n\t\tint handle = int(proxy - m_pHandles);\n\t\tbtAssert(handle >= 0 && handle < m_maxHandles);\n\t\tif (handle == m_LastHandleIndex)\n\t\t{\n\t\t\tm_LastHandleIndex--;\n\t\t}\n\t\tproxy->SetNextFree(m_firstFreeHandle);\n\t\tm_firstFreeHandle = handle;\n\n\t\tproxy->m_clientObject = 0;\n\n\t\tm_numHandles--;\n\t}\n\n\tbtOverlappingPairCache* m_pairCache;\n\tbool m_ownsPairCache;\n\n\tint m_invalidPair;\n\n\tinline btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy)\n\t{\n\t\tbtSimpleBroadphaseProxy* proxy0 = static_cast<btSimpleBroadphaseProxy*>(proxy);\n\t\treturn proxy0;\n\t}\n\n\tinline const btSimpleBroadphaseProxy* getSimpleProxyFromProxy(btBroadphaseProxy* proxy) const\n\t{\n\t\tconst btSimpleBroadphaseProxy* proxy0 = static_cast<const btSimpleBroadphaseProxy*>(proxy);\n\t\treturn proxy0;\n\t}\n\n\t///reset broadphase internal structures, to ensure determinism/reproducability\n\tvirtual void resetPool(btDispatcher* dispatcher);\n\n\tvoid validate();\n\nprotected:\npublic:\n\tbtSimpleBroadphase(int maxProxies = 16384, btOverlappingPairCache* overlappingPairCache = 0);\n\tvirtual ~btSimpleBroadphase();\n\n\tstatic bool aabbOverlap(btSimpleBroadphaseProxy* proxy0, btSimpleBroadphaseProxy* proxy1);\n\n\tvirtual btBroadphaseProxy* createProxy(const btVector3& aabbMin, const btVector3& aabbMax, int shapeType, void* userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher* dispatcher);\n\n\tvirtual void calculateOverlappingPairs(btDispatcher* dispatcher);\n\n\tvirtual void destroyProxy(btBroadphaseProxy* proxy, btDispatcher* dispatcher);\n\tvirtual void setAabb(btBroadphaseProxy* proxy, const btVector3& aabbMin, const btVector3& aabbMax, btDispatcher* dispatcher);\n\tvirtual void getAabb(btBroadphaseProxy* proxy, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btBroadphaseRayCallback& rayCallback, const btVector3& aabbMin = btVector3(0, 0, 0), const btVector3& aabbMax = btVector3(0, 0, 0));\n\tvirtual void aabbTest(const btVector3& aabbMin, const btVector3& aabbMax, btBroadphaseAabbCallback& callback);\n\n\tbtOverlappingPairCache* getOverlappingPairCache()\n\t{\n\t\treturn m_pairCache;\n\t}\n\tconst btOverlappingPairCache* getOverlappingPairCache() const\n\t{\n\t\treturn m_pairCache;\n\t}\n\n\tbool testAabbOverlap(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1);\n\n\t///getAabb returns the axis aligned bounding box in the 'global' coordinate frame\n\t///will add some transform later\n\tvirtual void getBroadphaseAabb(btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\taabbMin.setValue(-BT_LARGE_FLOAT, -BT_LARGE_FLOAT, -BT_LARGE_FLOAT);\n\t\taabbMax.setValue(BT_LARGE_FLOAT, BT_LARGE_FLOAT, BT_LARGE_FLOAT);\n\t}\n\n\tvirtual void printStats()\n\t{\n\t\t//\t\tprintf(\"btSimpleBroadphase.h\\n\");\n\t\t//\t\tprintf(\"numHandles = %d, maxHandles = %d\\n\",m_numHandles,m_maxHandles);\n\t}\n};\n\n#endif  //BT_SIMPLE_BROADPHASE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SPHERE_TRIANGLE_DETECTOR_H\n#define BT_SPHERE_TRIANGLE_DETECTOR_H\n\n#include \"BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h\"\n\nclass btSphereShape;\nclass btTriangleShape;\n\n/// sphere-triangle to match the btDiscreteCollisionDetectorInterface\nstruct SphereTriangleDetector : public btDiscreteCollisionDetectorInterface\n{\n\tvirtual void getClosestPoints(const ClosestPointInput& input, Result& output, class btIDebugDraw* debugDraw, bool swapResults = false);\n\n\tSphereTriangleDetector(btSphereShape* sphere, btTriangleShape* triangle, btScalar contactBreakingThreshold);\n\n\tvirtual ~SphereTriangleDetector(){};\n\n\tbool collide(const btVector3& sphereCenter, btVector3& point, btVector3& resultNormal, btScalar& depth, btScalar& timeOfImpact, btScalar contactBreakingThreshold);\n\nprivate:\n\tbool pointInTriangle(const btVector3 vertices[], const btVector3& normal, btVector3* p);\n\tbool facecontains(const btVector3& p, const btVector3* vertices, btVector3& normal);\n\n\tbtSphereShape* m_sphere;\n\tbtTriangleShape* m_triangle;\n\tbtScalar m_contactBreakingThreshold;\n};\n#endif  //BT_SPHERE_TRIANGLE_DETECTOR_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef __BT_ACTIVATING_COLLISION_ALGORITHM_H\n#define __BT_ACTIVATING_COLLISION_ALGORITHM_H\n\n#include \"BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h\"\n\n///This class is not enabled yet (work-in-progress) to more aggressively activate objects.\nclass btActivatingCollisionAlgorithm : public btCollisionAlgorithm\n{\n\t//\tbtCollisionObject* m_colObj0;\n\t//\tbtCollisionObject* m_colObj1;\n\nprotected:\n\tbtActivatingCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci);\n\n\tbtActivatingCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\npublic:\n\tvirtual ~btActivatingCollisionAlgorithm();\n};\n#endif  //__BT_ACTIVATING_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H\n#define BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H\n\n#include \"BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n\nclass btPersistentManifold;\n\n///box-box collision detection\nclass btBox2dBox2dCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\npublic:\n\tbtBox2dBox2dCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)\n\t\t: btActivatingCollisionAlgorithm(ci) {}\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\n\tvirtual ~btBox2dBox2dCollisionAlgorithm();\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tint bbsize = sizeof(btBox2dBox2dCollisionAlgorithm);\n\t\t\tvoid* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);\n\t\t\treturn new (ptr) btBox2dBox2dCollisionAlgorithm(0, ci, body0Wrap, body1Wrap);\n\t\t}\n\t};\n};\n\n#endif  //BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BOX_BOX__COLLISION_ALGORITHM_H\n#define BT_BOX_BOX__COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n\nclass btPersistentManifold;\n\n///box-box collision detection\nclass btBoxBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\npublic:\n\tbtBoxBoxCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)\n\t\t: btActivatingCollisionAlgorithm(ci) {}\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtBoxBoxCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\n\tvirtual ~btBoxBoxCollisionAlgorithm();\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tint bbsize = sizeof(btBoxBoxCollisionAlgorithm);\n\t\t\tvoid* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);\n\t\t\treturn new (ptr) btBoxBoxCollisionAlgorithm(0, ci, body0Wrap, body1Wrap);\n\t\t}\n\t};\n};\n\n#endif  //BT_BOX_BOX__COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h",
    "content": "/*\n * Box-Box collision detection re-distributed under the ZLib license with permission from Russell L. Smith\n * Original version is from Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith.\n * All rights reserved.  Email: russ@q12.org   Web: www.q12.org\n\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n#ifndef BT_BOX_BOX_DETECTOR_H\n#define BT_BOX_BOX_DETECTOR_H\n\nclass btBoxShape;\n#include \"BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h\"\n\n/// btBoxBoxDetector wraps the ODE box-box collision detector\n/// re-distributed under the Zlib license with permission from Russell L. Smith\nstruct btBoxBoxDetector : public btDiscreteCollisionDetectorInterface\n{\n\tconst btBoxShape* m_box1;\n\tconst btBoxShape* m_box2;\n\npublic:\n\tbtBoxBoxDetector(const btBoxShape* box1, const btBoxShape* box2);\n\n\tvirtual ~btBoxBoxDetector(){};\n\n\tvirtual void getClosestPoints(const ClosestPointInput& input, Result& output, class btIDebugDraw* debugDraw, bool swapResults = false);\n};\n\n#endif  //BT_BOX_BOX_DETECTOR_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_CONFIGURATION\n#define BT_COLLISION_CONFIGURATION\n\nstruct btCollisionAlgorithmCreateFunc;\n\nclass btPoolAllocator;\n\n///btCollisionConfiguration allows to configure Bullet collision detection\n///stack allocator size, default collision algorithms and persistent manifold pool size\n///@todo: describe the meaning\nclass btCollisionConfiguration\n{\npublic:\n\tvirtual ~btCollisionConfiguration()\n\t{\n\t}\n\n\t///memory pools\n\tvirtual btPoolAllocator* getPersistentManifoldPool() = 0;\n\n\tvirtual btPoolAllocator* getCollisionAlgorithmPool() = 0;\n\n\tvirtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0, int proxyType1) = 0;\n\n\tvirtual btCollisionAlgorithmCreateFunc* getClosestPointsAlgorithmCreateFunc(int proxyType0, int proxyType1) = 0;\n};\n\n#endif  //BT_COLLISION_CONFIGURATION\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_CREATE_FUNC\n#define BT_COLLISION_CREATE_FUNC\n\n#include \"LinearMath/btAlignedObjectArray.h\"\nclass btCollisionAlgorithm;\nclass btCollisionObject;\nstruct btCollisionObjectWrapper;\nstruct btCollisionAlgorithmConstructionInfo;\n\n///Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm\nstruct btCollisionAlgorithmCreateFunc\n{\n\tbool m_swapped;\n\n\tbtCollisionAlgorithmCreateFunc()\n\t\t: m_swapped(false)\n\t{\n\t}\n\tvirtual ~btCollisionAlgorithmCreateFunc(){};\n\n\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo&, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t{\n\t\t(void)body0Wrap;\n\t\t(void)body1Wrap;\n\t\treturn 0;\n\t}\n};\n#endif  //BT_COLLISION_CREATE_FUNC\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION__DISPATCHER_H\n#define BT_COLLISION__DISPATCHER_H\n\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\n\n#include \"BulletCollision/CollisionDispatch/btManifoldResult.h\"\n\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\nclass btIDebugDraw;\nclass btOverlappingPairCache;\nclass btPoolAllocator;\nclass btCollisionConfiguration;\n\n#include \"btCollisionCreateFunc.h\"\n\n#define USE_DISPATCH_REGISTRY_ARRAY 1\n\nclass btCollisionDispatcher;\n///user can override this nearcallback for collision filtering and more finegrained control over collision detection\ntypedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);\n\n///btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs.\n///Time of Impact, Closest Points and Penetration Depth.\nclass btCollisionDispatcher : public btDispatcher\n{\nprotected:\n\tint m_dispatcherFlags;\n\n\tbtAlignedObjectArray<btPersistentManifold*> m_manifoldsPtr;\n\n\tbtNearCallback m_nearCallback;\n\n\tbtPoolAllocator* m_collisionAlgorithmPoolAllocator;\n\n\tbtPoolAllocator* m_persistentManifoldPoolAllocator;\n\n\tbtCollisionAlgorithmCreateFunc* m_doubleDispatchContactPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];\n\n\tbtCollisionAlgorithmCreateFunc* m_doubleDispatchClosestPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];\n\n\tbtCollisionConfiguration* m_collisionConfiguration;\n\npublic:\n\tenum DispatcherFlags\n\t{\n\t\tCD_STATIC_STATIC_REPORTED = 1,\n\t\tCD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD = 2,\n\t\tCD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION = 4\n\t};\n\n\tint getDispatcherFlags() const\n\t{\n\t\treturn m_dispatcherFlags;\n\t}\n\n\tvoid setDispatcherFlags(int flags)\n\t{\n\t\tm_dispatcherFlags = flags;\n\t}\n\n\t///registerCollisionCreateFunc allows registration of custom/alternative collision create functions\n\tvoid registerCollisionCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);\n\n\tvoid registerClosestPointsCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);\n\n\tint getNumManifolds() const\n\t{\n\t\treturn int(m_manifoldsPtr.size());\n\t}\n\n\tbtPersistentManifold** getInternalManifoldPointer()\n\t{\n\t\treturn m_manifoldsPtr.size() ? &m_manifoldsPtr[0] : 0;\n\t}\n\n\tbtPersistentManifold* getManifoldByIndexInternal(int index)\n\t{\n\t\tbtAssert(index>=0);\n\t\tbtAssert(index<m_manifoldsPtr.size());\n\t\treturn m_manifoldsPtr[index];\n\t}\n\n\tconst btPersistentManifold* getManifoldByIndexInternal(int index) const\n\t{\n\t\tbtAssert(index>=0);\n\t\tbtAssert(index<m_manifoldsPtr.size());\n\t\treturn m_manifoldsPtr[index];\n\t}\n\n\tbtCollisionDispatcher(btCollisionConfiguration* collisionConfiguration);\n\n\tvirtual ~btCollisionDispatcher();\n\n\tvirtual btPersistentManifold* getNewManifold(const btCollisionObject* b0, const btCollisionObject* b1);\n\n\tvirtual void releaseManifold(btPersistentManifold* manifold);\n\n\tvirtual void clearManifold(btPersistentManifold* manifold);\n\n\tbtCollisionAlgorithm* findAlgorithm(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, btPersistentManifold* sharedManifold, ebtDispatcherQueryType queryType);\n\n\tvirtual bool needsCollision(const btCollisionObject* body0, const btCollisionObject* body1);\n\n\tvirtual bool needsResponse(const btCollisionObject* body0, const btCollisionObject* body1);\n\n\tvirtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache, const btDispatcherInfo& dispatchInfo, btDispatcher* dispatcher);\n\n\tvoid setNearCallback(btNearCallback nearCallback)\n\t{\n\t\tm_nearCallback = nearCallback;\n\t}\n\n\tbtNearCallback getNearCallback() const\n\t{\n\t\treturn m_nearCallback;\n\t}\n\n\t//by default, Bullet will use this near callback\n\tstatic void defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);\n\n\tvirtual void* allocateCollisionAlgorithm(int size);\n\n\tvirtual void freeCollisionAlgorithm(void* ptr);\n\n\tbtCollisionConfiguration* getCollisionConfiguration()\n\t{\n\t\treturn m_collisionConfiguration;\n\t}\n\n\tconst btCollisionConfiguration* getCollisionConfiguration() const\n\t{\n\t\treturn m_collisionConfiguration;\n\t}\n\n\tvoid setCollisionConfiguration(btCollisionConfiguration* config)\n\t{\n\t\tm_collisionConfiguration = config;\n\t}\n\n\tvirtual btPoolAllocator* getInternalManifoldPool()\n\t{\n\t\treturn m_persistentManifoldPoolAllocator;\n\t}\n\n\tvirtual const btPoolAllocator* getInternalManifoldPool() const\n\t{\n\t\treturn m_persistentManifoldPoolAllocator;\n\t}\n};\n\n#endif  //BT_COLLISION__DISPATCHER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_DISPATCHER_MT_H\n#define BT_COLLISION_DISPATCHER_MT_H\n\n#include \"BulletCollision/CollisionDispatch/btCollisionDispatcher.h\"\n#include \"LinearMath/btThreads.h\"\n\nclass btCollisionDispatcherMt : public btCollisionDispatcher\n{\npublic:\n\tbtCollisionDispatcherMt(btCollisionConfiguration* config, int grainSize = 40);\n\n\tvirtual btPersistentManifold* getNewManifold(const btCollisionObject* body0, const btCollisionObject* body1) BT_OVERRIDE;\n\tvirtual void releaseManifold(btPersistentManifold* manifold) BT_OVERRIDE;\n\n\tvirtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache, const btDispatcherInfo& info, btDispatcher* dispatcher) BT_OVERRIDE;\n\nprotected:\n\tbtAlignedObjectArray<btAlignedObjectArray<btPersistentManifold*> > m_batchManifoldsPtr;\n\tbool m_batchUpdating;\n\tint m_grainSize;\n};\n\n#endif  //BT_COLLISION_DISPATCHER_MT_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_OBJECT_H\n#define BT_COLLISION_OBJECT_H\n\n#include \"LinearMath/btTransform.h\"\n\n//island management, m_activationState1\n#define ACTIVE_TAG 1\n#define ISLAND_SLEEPING 2\n#define WANTS_DEACTIVATION 3\n#define DISABLE_DEACTIVATION 4\n#define DISABLE_SIMULATION 5\n#define FIXED_BASE_MULTI_BODY 6\n\nstruct btBroadphaseProxy;\nclass btCollisionShape;\nstruct btCollisionShapeData;\n#include \"LinearMath/btMotionState.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\ntypedef btAlignedObjectArray<class btCollisionObject*> btCollisionObjectArray;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btCollisionObjectData btCollisionObjectDoubleData\n#define btCollisionObjectDataName \"btCollisionObjectDoubleData\"\n#else\n#define btCollisionObjectData btCollisionObjectFloatData\n#define btCollisionObjectDataName \"btCollisionObjectFloatData\"\n#endif\n\n/// btCollisionObject can be used to manage collision detection objects.\n/// btCollisionObject maintains all information that is needed for a collision detection: Shape, Transform and AABB proxy.\n/// They can be added to the btCollisionWorld.\nATTRIBUTE_ALIGNED16(class)\nbtCollisionObject\n{\nprotected:\n\tbtTransform m_worldTransform;\n\n\t///m_interpolationWorldTransform is used for CCD and interpolation\n\t///it can be either previous or future (predicted) transform\n\tbtTransform m_interpolationWorldTransform;\n\t//those two are experimental: just added for bullet time effect, so you can still apply impulses (directly modifying velocities)\n\t//without destroying the continuous interpolated motion (which uses this interpolation velocities)\n\tbtVector3 m_interpolationLinearVelocity;\n\tbtVector3 m_interpolationAngularVelocity;\n\n\tbtVector3 m_anisotropicFriction;\n\tint m_hasAnisotropicFriction;\n\tbtScalar m_contactProcessingThreshold;\n\n\tbtBroadphaseProxy* m_broadphaseHandle;\n\tbtCollisionShape* m_collisionShape;\n\t///m_extensionPointer is used by some internal low-level Bullet extensions.\n\tvoid* m_extensionPointer;\n\n\t///m_rootCollisionShape is temporarily used to store the original collision shape\n\t///The m_collisionShape might be temporarily replaced by a child collision shape during collision detection purposes\n\t///If it is NULL, the m_collisionShape is not temporarily replaced.\n\tbtCollisionShape* m_rootCollisionShape;\n\n\tint m_collisionFlags;\n\n\tint m_islandTag1;\n\tint m_companionId;\n\tint m_worldArrayIndex;  // index of object in world's collisionObjects array\n\n\tmutable int m_activationState1;\n\tmutable btScalar m_deactivationTime;\n\n\tbtScalar m_friction;\n\tbtScalar m_restitution;\n\tbtScalar m_rollingFriction;   //torsional friction orthogonal to contact normal (useful to stop spheres rolling forever)\n\tbtScalar m_spinningFriction;  // torsional friction around the contact normal (useful for grasping)\n\tbtScalar m_contactDamping;\n\tbtScalar m_contactStiffness;\n\n\t///m_internalType is reserved to distinguish Bullet's btCollisionObject, btRigidBody, btSoftBody, btGhostObject etc.\n\t///do not assign your own m_internalType unless you write a new dynamics object class.\n\tint m_internalType;\n\n\t///users can point to their objects, m_userPointer is not used by Bullet, see setUserPointer/getUserPointer\n\n\tvoid* m_userObjectPointer;\n\n\tint m_userIndex2;\n\n\tint m_userIndex;\n\n\tint m_userIndex3;\n\n\t///time of impact calculation\n\tbtScalar m_hitFraction;\n\n\t///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::\n\tbtScalar m_ccdSweptSphereRadius;\n\n\t/// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold\n\tbtScalar m_ccdMotionThreshold;\n\n\t/// If some object should have elaborate collision filtering by sub-classes\n\tint m_checkCollideWith;\n\n\tbtAlignedObjectArray<const btCollisionObject*> m_objectsWithoutCollisionCheck;\n\n\t///internal update revision number. It will be increased when the object changes. This allows some subsystems to perform lazy evaluation.\n\tint m_updateRevision;\n\n\tbtVector3 m_customDebugColorRGB;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tenum CollisionFlags\n\t{\n\t\tCF_DYNAMIC_OBJECT = 0,\n\t\tCF_STATIC_OBJECT = 1,\n\t\tCF_KINEMATIC_OBJECT = 2,\n\t\tCF_NO_CONTACT_RESPONSE = 4,\n\t\tCF_CUSTOM_MATERIAL_CALLBACK = 8,  //this allows per-triangle material (friction/restitution)\n\t\tCF_CHARACTER_OBJECT = 16,\n\t\tCF_DISABLE_VISUALIZE_OBJECT = 32,          //disable debug drawing\n\t\tCF_DISABLE_SPU_COLLISION_PROCESSING = 64,  //disable parallel/SPU processing\n\t\tCF_HAS_CONTACT_STIFFNESS_DAMPING = 128,\n\t\tCF_HAS_CUSTOM_DEBUG_RENDERING_COLOR = 256,\n\t\tCF_HAS_FRICTION_ANCHOR = 512,\n\t\tCF_HAS_COLLISION_SOUND_TRIGGER = 1024\n\t};\n\n\tenum CollisionObjectTypes\n\t{\n\t\tCO_COLLISION_OBJECT = 1,\n\t\tCO_RIGID_BODY = 2,\n\t\t///CO_GHOST_OBJECT keeps track of all objects overlapping its AABB and that pass its collision filter\n\t\t///It is useful for collision sensors, explosion objects, character controller etc.\n\t\tCO_GHOST_OBJECT = 4,\n\t\tCO_SOFT_BODY = 8,\n\t\tCO_HF_FLUID = 16,\n\t\tCO_USER_TYPE = 32,\n\t\tCO_FEATHERSTONE_LINK = 64\n\t};\n\n\tenum AnisotropicFrictionFlags\n\t{\n\t\tCF_ANISOTROPIC_FRICTION_DISABLED = 0,\n\t\tCF_ANISOTROPIC_FRICTION = 1,\n\t\tCF_ANISOTROPIC_ROLLING_FRICTION = 2\n\t};\n\n\tSIMD_FORCE_INLINE bool mergesSimulationIslands() const\n\t{\n\t\t///static objects, kinematic and object without contact response don't merge islands\n\t\treturn ((m_collisionFlags & (CF_STATIC_OBJECT | CF_KINEMATIC_OBJECT | CF_NO_CONTACT_RESPONSE)) == 0);\n\t}\n\n\tconst btVector3& getAnisotropicFriction() const\n\t{\n\t\treturn m_anisotropicFriction;\n\t}\n\tvoid setAnisotropicFriction(const btVector3& anisotropicFriction, int frictionMode = CF_ANISOTROPIC_FRICTION)\n\t{\n\t\tm_anisotropicFriction = anisotropicFriction;\n\t\tbool isUnity = (anisotropicFriction[0] != 1.f) || (anisotropicFriction[1] != 1.f) || (anisotropicFriction[2] != 1.f);\n\t\tm_hasAnisotropicFriction = isUnity ? frictionMode : 0;\n\t}\n\tbool hasAnisotropicFriction(int frictionMode = CF_ANISOTROPIC_FRICTION) const\n\t{\n\t\treturn (m_hasAnisotropicFriction & frictionMode) != 0;\n\t}\n\n\t///the constraint solver can discard solving contacts, if the distance is above this threshold. 0 by default.\n\t///Note that using contacts with positive distance can improve stability. It increases, however, the chance of colliding with degerate contacts, such as 'interior' triangle edges\n\tvoid setContactProcessingThreshold(btScalar contactProcessingThreshold)\n\t{\n\t\tm_contactProcessingThreshold = contactProcessingThreshold;\n\t}\n\tbtScalar getContactProcessingThreshold() const\n\t{\n\t\treturn m_contactProcessingThreshold;\n\t}\n\n\tSIMD_FORCE_INLINE bool isStaticObject() const\n\t{\n\t\treturn (m_collisionFlags & CF_STATIC_OBJECT) != 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool isKinematicObject() const\n\t{\n\t\treturn (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool isStaticOrKinematicObject() const\n\t{\n\t\treturn (m_collisionFlags & (CF_KINEMATIC_OBJECT | CF_STATIC_OBJECT)) != 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool hasContactResponse() const\n\t{\n\t\treturn (m_collisionFlags & CF_NO_CONTACT_RESPONSE) == 0;\n\t}\n\n\tbtCollisionObject();\n\n\tvirtual ~btCollisionObject();\n\n\tvirtual void setCollisionShape(btCollisionShape * collisionShape)\n\t{\n\t\tm_updateRevision++;\n\t\tm_collisionShape = collisionShape;\n\t\tm_rootCollisionShape = collisionShape;\n\t}\n\n\tSIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const\n\t{\n\t\treturn m_collisionShape;\n\t}\n\n\tSIMD_FORCE_INLINE btCollisionShape* getCollisionShape()\n\t{\n\t\treturn m_collisionShape;\n\t}\n\n\tvoid setIgnoreCollisionCheck(const btCollisionObject* co, bool ignoreCollisionCheck)\n\t{\n\t\tif (ignoreCollisionCheck)\n\t\t{\n\t\t\t//We don't check for duplicates. Is it ok to leave that up to the user of this API?\n\t\t\t//int index = m_objectsWithoutCollisionCheck.findLinearSearch(co);\n\t\t\t//if (index == m_objectsWithoutCollisionCheck.size())\n\t\t\t//{\n\t\t\tm_objectsWithoutCollisionCheck.push_back(co);\n\t\t\t//}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_objectsWithoutCollisionCheck.remove(co);\n\t\t}\n\t\tm_checkCollideWith = m_objectsWithoutCollisionCheck.size() > 0;\n\t}\n\n        int getNumObjectsWithoutCollision() const\n\t{\n\t\treturn m_objectsWithoutCollisionCheck.size();\n\t}\n\n\tconst btCollisionObject* getObjectWithoutCollision(int index)\n\t{\n\t\treturn m_objectsWithoutCollisionCheck[index];\n\t}\n\n\tvirtual bool checkCollideWithOverride(const btCollisionObject* co) const\n\t{\n\t\tint index = m_objectsWithoutCollisionCheck.findLinearSearch(co);\n\t\tif (index < m_objectsWithoutCollisionCheck.size())\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t///Avoid using this internal API call, the extension pointer is used by some Bullet extensions.\n\t///If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead.\n\tvoid* internalGetExtensionPointer() const\n\t{\n\t\treturn m_extensionPointer;\n\t}\n\t///Avoid using this internal API call, the extension pointer is used by some Bullet extensions\n\t///If you need to store your own user pointer, use 'setUserPointer/getUserPointer' instead.\n\tvoid internalSetExtensionPointer(void* pointer)\n\t{\n\t\tm_extensionPointer = pointer;\n\t}\n\n\tSIMD_FORCE_INLINE int getActivationState() const { return m_activationState1; }\n\n\tvoid setActivationState(int newState) const;\n\n\tvoid setDeactivationTime(btScalar time)\n\t{\n\t\tm_deactivationTime = time;\n\t}\n\tbtScalar getDeactivationTime() const\n\t{\n\t\treturn m_deactivationTime;\n\t}\n\n\tvoid forceActivationState(int newState) const;\n\n\tvoid activate(bool forceActivation = false) const;\n\n\tSIMD_FORCE_INLINE bool isActive() const\n\t{\n\t\treturn ((getActivationState() != FIXED_BASE_MULTI_BODY) && (getActivationState() != ISLAND_SLEEPING) && (getActivationState() != DISABLE_SIMULATION));\n\t}\n\n\tvoid setRestitution(btScalar rest)\n\t{\n\t\tm_updateRevision++;\n\t\tm_restitution = rest;\n\t}\n\tbtScalar getRestitution() const\n\t{\n\t\treturn m_restitution;\n\t}\n\tvoid setFriction(btScalar frict)\n\t{\n\t\tm_updateRevision++;\n\t\tm_friction = frict;\n\t}\n\tbtScalar getFriction() const\n\t{\n\t\treturn m_friction;\n\t}\n\n\tvoid setRollingFriction(btScalar frict)\n\t{\n\t\tm_updateRevision++;\n\t\tm_rollingFriction = frict;\n\t}\n\tbtScalar getRollingFriction() const\n\t{\n\t\treturn m_rollingFriction;\n\t}\n\tvoid setSpinningFriction(btScalar frict)\n\t{\n\t\tm_updateRevision++;\n\t\tm_spinningFriction = frict;\n\t}\n\tbtScalar getSpinningFriction() const\n\t{\n\t\treturn m_spinningFriction;\n\t}\n\tvoid setContactStiffnessAndDamping(btScalar stiffness, btScalar damping)\n\t{\n\t\tm_updateRevision++;\n\t\tm_contactStiffness = stiffness;\n\t\tm_contactDamping = damping;\n\n\t\tm_collisionFlags |= CF_HAS_CONTACT_STIFFNESS_DAMPING;\n\n\t\t//avoid divisions by zero...\n\t\tif (m_contactStiffness < SIMD_EPSILON)\n\t\t{\n\t\t\tm_contactStiffness = SIMD_EPSILON;\n\t\t}\n\t}\n\n\tbtScalar getContactStiffness() const\n\t{\n\t\treturn m_contactStiffness;\n\t}\n\n\tbtScalar getContactDamping() const\n\t{\n\t\treturn m_contactDamping;\n\t}\n\n\t///reserved for Bullet internal usage\n\tint getInternalType() const\n\t{\n\t\treturn m_internalType;\n\t}\n\n\tbtTransform& getWorldTransform()\n\t{\n\t\treturn m_worldTransform;\n\t}\n\n\tconst btTransform& getWorldTransform() const\n\t{\n\t\treturn m_worldTransform;\n\t}\n\n\tvoid setWorldTransform(const btTransform& worldTrans)\n\t{\n\t\tm_updateRevision++;\n\t\tm_worldTransform = worldTrans;\n\t}\n\n\tSIMD_FORCE_INLINE btBroadphaseProxy* getBroadphaseHandle()\n\t{\n\t\treturn m_broadphaseHandle;\n\t}\n\n\tSIMD_FORCE_INLINE const btBroadphaseProxy* getBroadphaseHandle() const\n\t{\n\t\treturn m_broadphaseHandle;\n\t}\n\n\tvoid setBroadphaseHandle(btBroadphaseProxy * handle)\n\t{\n\t\tm_broadphaseHandle = handle;\n\t}\n\n\tconst btTransform& getInterpolationWorldTransform() const\n\t{\n\t\treturn m_interpolationWorldTransform;\n\t}\n\n\tbtTransform& getInterpolationWorldTransform()\n\t{\n\t\treturn m_interpolationWorldTransform;\n\t}\n\n\tvoid setInterpolationWorldTransform(const btTransform& trans)\n\t{\n\t\tm_updateRevision++;\n\t\tm_interpolationWorldTransform = trans;\n\t}\n\n\tvoid setInterpolationLinearVelocity(const btVector3& linvel)\n\t{\n\t\tm_updateRevision++;\n\t\tm_interpolationLinearVelocity = linvel;\n\t}\n\n\tvoid setInterpolationAngularVelocity(const btVector3& angvel)\n\t{\n\t\tm_updateRevision++;\n\t\tm_interpolationAngularVelocity = angvel;\n\t}\n\n\tconst btVector3& getInterpolationLinearVelocity() const\n\t{\n\t\treturn m_interpolationLinearVelocity;\n\t}\n\n\tconst btVector3& getInterpolationAngularVelocity() const\n\t{\n\t\treturn m_interpolationAngularVelocity;\n\t}\n\n\tSIMD_FORCE_INLINE int getIslandTag() const\n\t{\n\t\treturn m_islandTag1;\n\t}\n\n\tvoid setIslandTag(int tag)\n\t{\n\t\tm_islandTag1 = tag;\n\t}\n\n\tSIMD_FORCE_INLINE int getCompanionId() const\n\t{\n\t\treturn m_companionId;\n\t}\n\n\tvoid setCompanionId(int id)\n\t{\n\t\tm_companionId = id;\n\t}\n\n\tSIMD_FORCE_INLINE int getWorldArrayIndex() const\n\t{\n\t\treturn m_worldArrayIndex;\n\t}\n\n\t// only should be called by CollisionWorld\n\tvoid setWorldArrayIndex(int ix)\n\t{\n\t\tm_worldArrayIndex = ix;\n\t}\n\n\tSIMD_FORCE_INLINE btScalar getHitFraction() const\n\t{\n\t\treturn m_hitFraction;\n\t}\n\n\tvoid setHitFraction(btScalar hitFraction)\n\t{\n\t\tm_hitFraction = hitFraction;\n\t}\n\n\tSIMD_FORCE_INLINE int getCollisionFlags() const\n\t{\n\t\treturn m_collisionFlags;\n\t}\n\n\tvoid setCollisionFlags(int flags)\n\t{\n\t\tm_collisionFlags = flags;\n\t}\n\n\t///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::\n\tbtScalar getCcdSweptSphereRadius() const\n\t{\n\t\treturn m_ccdSweptSphereRadius;\n\t}\n\n\t///Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::\n\tvoid setCcdSweptSphereRadius(btScalar radius)\n\t{\n\t\tm_ccdSweptSphereRadius = radius;\n\t}\n\n\tbtScalar getCcdMotionThreshold() const\n\t{\n\t\treturn m_ccdMotionThreshold;\n\t}\n\n\tbtScalar getCcdSquareMotionThreshold() const\n\t{\n\t\treturn m_ccdMotionThreshold * m_ccdMotionThreshold;\n\t}\n\n\t/// Don't do continuous collision detection if the motion (in one step) is less then m_ccdMotionThreshold\n\tvoid setCcdMotionThreshold(btScalar ccdMotionThreshold)\n\t{\n\t\tm_ccdMotionThreshold = ccdMotionThreshold;\n\t}\n\n\t///users can point to their objects, userPointer is not used by Bullet\n\tvoid* getUserPointer() const\n\t{\n\t\treturn m_userObjectPointer;\n\t}\n\n\tint getUserIndex() const\n\t{\n\t\treturn m_userIndex;\n\t}\n\n\tint getUserIndex2() const\n\t{\n\t\treturn m_userIndex2;\n\t}\n\n\tint getUserIndex3() const\n\t{\n\t\treturn m_userIndex3;\n\t}\n\n\t///users can point to their objects, userPointer is not used by Bullet\n\tvoid setUserPointer(void* userPointer)\n\t{\n\t\tm_userObjectPointer = userPointer;\n\t}\n\n\t///users can point to their objects, userPointer is not used by Bullet\n\tvoid setUserIndex(int index)\n\t{\n\t\tm_userIndex = index;\n\t}\n\n\tvoid setUserIndex2(int index)\n\t{\n\t\tm_userIndex2 = index;\n\t}\n\n\tvoid setUserIndex3(int index)\n\t{\n\t\tm_userIndex3 = index;\n\t}\n\n\tint getUpdateRevisionInternal() const\n\t{\n\t\treturn m_updateRevision;\n\t}\n\n\tvoid setCustomDebugColor(const btVector3& colorRGB)\n\t{\n\t\tm_customDebugColorRGB = colorRGB;\n\t\tm_collisionFlags |= CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR;\n\t}\n\n\tvoid removeCustomDebugColor()\n\t{\n\t\tm_collisionFlags &= ~CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR;\n\t}\n\n\tbool getCustomDebugColor(btVector3 & colorRGB) const\n\t{\n\t\tbool hasCustomColor = (0 != (m_collisionFlags & CF_HAS_CUSTOM_DEBUG_RENDERING_COLOR));\n\t\tif (hasCustomColor)\n\t\t{\n\t\t\tcolorRGB = m_customDebugColorRGB;\n\t\t}\n\t\treturn hasCustomColor;\n\t}\n\n\tinline bool checkCollideWith(const btCollisionObject* co) const\n\t{\n\t\tif (m_checkCollideWith)\n\t\t\treturn checkCollideWithOverride(co);\n\n\t\treturn true;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;\n\n\tvirtual void serializeSingleObject(class btSerializer * serializer) const;\n};\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtCollisionObjectDoubleData\n{\n\tvoid\t\t\t\t\t*m_broadphaseHandle;\n\tvoid\t\t\t\t\t*m_collisionShape;\n\tbtCollisionShapeData\t*m_rootCollisionShape;\n\tchar\t\t\t\t\t*m_name;\n\n\tbtTransformDoubleData\tm_worldTransform;\n\tbtTransformDoubleData\tm_interpolationWorldTransform;\n\tbtVector3DoubleData\t\tm_interpolationLinearVelocity;\n\tbtVector3DoubleData\t\tm_interpolationAngularVelocity;\n\tbtVector3DoubleData\t\tm_anisotropicFriction;\n\tdouble\t\t\t\t\tm_contactProcessingThreshold;\t\n\tdouble\t\t\t\t\tm_deactivationTime;\n\tdouble\t\t\t\t\tm_friction;\n\tdouble\t\t\t\t\tm_rollingFriction;\n\tdouble                  m_contactDamping;\n\tdouble                  m_contactStiffness;\n\tdouble\t\t\t\t\tm_restitution;\n\tdouble\t\t\t\t\tm_hitFraction; \n\tdouble\t\t\t\t\tm_ccdSweptSphereRadius;\n\tdouble\t\t\t\t\tm_ccdMotionThreshold;\n\tint\t\t\t\t\t\tm_hasAnisotropicFriction;\n\tint\t\t\t\t\t\tm_collisionFlags;\n\tint\t\t\t\t\t\tm_islandTag1;\n\tint\t\t\t\t\t\tm_companionId;\n\tint\t\t\t\t\t\tm_activationState1;\n\tint\t\t\t\t\t\tm_internalType;\n\tint\t\t\t\t\t\tm_checkCollideWith;\n\tint\t\t\t\t\t\tm_collisionFilterGroup;\n\tint\t\t\t\t\t\tm_collisionFilterMask;\n\tint\t\t\t\t\t\tm_uniqueId;//m_uniqueId is introduced for paircache. could get rid of this, by calculating the address offset etc.\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtCollisionObjectFloatData\n{\n\tvoid\t\t\t\t\t*m_broadphaseHandle;\n\tvoid\t\t\t\t\t*m_collisionShape;\n\tbtCollisionShapeData\t*m_rootCollisionShape;\n\tchar\t\t\t\t\t*m_name;\n\n\tbtTransformFloatData\tm_worldTransform;\n\tbtTransformFloatData\tm_interpolationWorldTransform;\n\tbtVector3FloatData\t\tm_interpolationLinearVelocity;\n\tbtVector3FloatData\t\tm_interpolationAngularVelocity;\n\tbtVector3FloatData\t\tm_anisotropicFriction;\n\tfloat\t\t\t\t\tm_contactProcessingThreshold;\t\n\tfloat\t\t\t\t\tm_deactivationTime;\n\tfloat\t\t\t\t\tm_friction;\n\tfloat\t\t\t\t\tm_rollingFriction;\n\tfloat                   m_contactDamping;\n    float                   m_contactStiffness;\n\tfloat\t\t\t\t\tm_restitution;\n\tfloat\t\t\t\t\tm_hitFraction; \n\tfloat\t\t\t\t\tm_ccdSweptSphereRadius;\n\tfloat\t\t\t\t\tm_ccdMotionThreshold;\n\tint\t\t\t\t\t\tm_hasAnisotropicFriction;\n\tint\t\t\t\t\t\tm_collisionFlags;\n\tint\t\t\t\t\t\tm_islandTag1;\n\tint\t\t\t\t\t\tm_companionId;\n\tint\t\t\t\t\t\tm_activationState1;\n\tint\t\t\t\t\t\tm_internalType;\n\tint\t\t\t\t\t\tm_checkCollideWith;\n\tint\t\t\t\t\t\tm_collisionFilterGroup;\n\tint\t\t\t\t\t\tm_collisionFilterMask;\n\tint\t\t\t\t\t\tm_uniqueId;\n};\n// clang-format on\n\nSIMD_FORCE_INLINE int btCollisionObject::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btCollisionObjectData);\n}\n\n#endif  //BT_COLLISION_OBJECT_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h",
    "content": "#ifndef BT_COLLISION_OBJECT_WRAPPER_H\n#define BT_COLLISION_OBJECT_WRAPPER_H\n\n///btCollisionObjectWrapperis an internal data structure.\n///Most users can ignore this and use btCollisionObject and btCollisionShape instead\nclass btCollisionShape;\nclass btCollisionObject;\nclass btTransform;\n#include \"LinearMath/btScalar.h\"  // for SIMD_FORCE_INLINE definition\n\n#define BT_DECLARE_STACK_ONLY_OBJECT \\\nprivate:                             \\\n\tvoid* operator new(size_t size); \\\n\tvoid operator delete(void*);\n\nstruct btCollisionObjectWrapper;\nstruct btCollisionObjectWrapper\n{\n\tBT_DECLARE_STACK_ONLY_OBJECT\n\nprivate:\n\tbtCollisionObjectWrapper(const btCollisionObjectWrapper&);  // not implemented. Not allowed.\n\tbtCollisionObjectWrapper* operator=(const btCollisionObjectWrapper&);\n\npublic:\n\tconst btCollisionObjectWrapper* m_parent;\n\tconst btCollisionShape* m_shape;\n\tconst btCollisionObject* m_collisionObject;\n\tconst btTransform& m_worldTransform;\n    const btTransform* m_preTransform;\n\tint m_partId;\n\tint m_index;\n\n\tbtCollisionObjectWrapper(const btCollisionObjectWrapper* parent, const btCollisionShape* shape, const btCollisionObject* collisionObject, const btTransform& worldTransform, int partId, int index)\n\t\t: m_parent(parent), m_shape(shape), m_collisionObject(collisionObject), m_worldTransform(worldTransform), m_preTransform(NULL), m_partId(partId), m_index(index)\n\t{\n\t}\n    \n    btCollisionObjectWrapper(const btCollisionObjectWrapper* parent, const btCollisionShape* shape, const btCollisionObject* collisionObject, const btTransform& worldTransform, const btTransform& preTransform, int partId, int index)\n    : m_parent(parent), m_shape(shape), m_collisionObject(collisionObject), m_worldTransform(worldTransform), m_preTransform(&preTransform), m_partId(partId), m_index(index)\n    {\n    }\n\n\tSIMD_FORCE_INLINE const btTransform& getWorldTransform() const { return m_worldTransform; }\n\tSIMD_FORCE_INLINE const btCollisionObject* getCollisionObject() const { return m_collisionObject; }\n\tSIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const { return m_shape; }\n};\n\n#endif  //BT_COLLISION_OBJECT_WRAPPER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2013 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n * @mainpage Bullet Documentation\n *\n * @section intro_sec Introduction\n * Bullet is a Collision Detection and Rigid Body Dynamics Library. The Library is Open Source and free for commercial use, under the ZLib license ( http://opensource.org/licenses/zlib-license.php ).\n *\n * The main documentation is Bullet_User_Manual.pdf, included in the source code distribution.\n * There is the Physics Forum for feedback and general Collision Detection and Physics discussions.\n * Please visit http://www.bulletphysics.org\n *\n * @section install_sec Installation\n *\n * @subsection step1 Step 1: Download\n * You can download the Bullet Physics Library from the github repository: https://github.com/bulletphysics/bullet3/releases \n *\n * @subsection step2 Step 2: Building\n * Bullet has multiple build systems, including premake, cmake and autotools. Premake and cmake support all platforms.\n * Premake is included in the Bullet/build folder for Windows, Mac OSX and Linux. \n * Under Windows you can click on Bullet/build/vs2010.bat to create Microsoft Visual Studio projects. \n * On Mac OSX and Linux you can open a terminal and generate Makefile, codeblocks or Xcode4 projects:\n * cd Bullet/build\n * ./premake4_osx gmake or ./premake4_linux gmake or ./premake4_linux64 gmake or (for Mac) ./premake4_osx xcode4\n * cd Bullet/build/gmake\n * make\n * \n * An alternative to premake is cmake. You can download cmake from http://www.cmake.org\n * cmake can autogenerate projectfiles for Microsoft Visual Studio, Apple Xcode, KDevelop and Unix Makefiles.\n * The easiest is to run the CMake cmake-gui graphical user interface and choose the options and generate projectfiles.\n * You can also use cmake in the command-line. Here are some examples for various platforms:\n * cmake . -G \"Visual Studio 9 2008\"\n * cmake . -G Xcode\n * cmake . -G \"Unix Makefiles\"\n * Although cmake is recommended, you can also use autotools for UNIX: ./autogen.sh ./configure to create a Makefile and then run make.\n * \n * @subsection step3 Step 3: Testing demos\n * Try to run and experiment with BasicDemo executable as a starting point.\n * Bullet can be used in several ways, as Full Rigid Body simulation, as Collision Detector Library or Low Level / Snippets like the GJK Closest Point calculation.\n * The Dependencies can be seen in this documentation under Directories\n * \n * @subsection step4 Step 4: Integrating in your application, full Rigid Body and Soft Body simulation\n * Check out BasicDemo how to create a btDynamicsWorld, btRigidBody and btCollisionShape, Stepping the simulation and synchronizing your graphics object transform.\n * Check out SoftDemo how to use soft body dynamics, using btSoftRigidDynamicsWorld.\n * @subsection step5 Step 5 : Integrate the Collision Detection Library (without Dynamics and other Extras)\n * Bullet Collision Detection can also be used without the Dynamics/Extras.\n * Check out btCollisionWorld and btCollisionObject, and the CollisionInterfaceDemo.\n * @subsection step6 Step 6 : Use Snippets like the GJK Closest Point calculation.\n * Bullet has been designed in a modular way keeping dependencies to a minimum. The ConvexHullDistance demo demonstrates direct use of btGjkPairDetector.\n *\n * @section copyright Copyright\n * For up-to-data information and copyright and contributors list check out the Bullet_User_Manual.pdf\n * \n */\n\n#ifndef BT_COLLISION_WORLD_H\n#define BT_COLLISION_WORLD_H\n\nclass btCollisionShape;\nclass btConvexShape;\nclass btBroadphaseInterface;\nclass btSerializer;\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"btCollisionObject.h\"\n#include \"btCollisionDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btOverlappingPairCache.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///CollisionWorld is interface and container for the collision detection\nclass btCollisionWorld\n{\nprotected:\n\tbtAlignedObjectArray<btCollisionObject*> m_collisionObjects;\n\n\tbtDispatcher* m_dispatcher1;\n\n\tbtDispatcherInfo m_dispatchInfo;\n\n\tbtBroadphaseInterface* m_broadphasePairCache;\n\n\tbtIDebugDraw* m_debugDrawer;\n\n\t///m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs\n\t///it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB)\n\tbool m_forceUpdateAllAabbs;\n\n\tvoid serializeCollisionObjects(btSerializer* serializer);\n\n\tvoid serializeContactManifolds(btSerializer* serializer);\n\npublic:\n\t//this constructor doesn't own the dispatcher and paircache/broadphase\n\tbtCollisionWorld(btDispatcher* dispatcher, btBroadphaseInterface* broadphasePairCache, btCollisionConfiguration* collisionConfiguration);\n\n\tvirtual ~btCollisionWorld();\n\n\tvoid setBroadphase(btBroadphaseInterface* pairCache)\n\t{\n\t\tm_broadphasePairCache = pairCache;\n\t}\n\n\tconst btBroadphaseInterface* getBroadphase() const\n\t{\n\t\treturn m_broadphasePairCache;\n\t}\n\n\tbtBroadphaseInterface* getBroadphase()\n\t{\n\t\treturn m_broadphasePairCache;\n\t}\n\n\tbtOverlappingPairCache* getPairCache()\n\t{\n\t\treturn m_broadphasePairCache->getOverlappingPairCache();\n\t}\n\n\tbtDispatcher* getDispatcher()\n\t{\n\t\treturn m_dispatcher1;\n\t}\n\n\tconst btDispatcher* getDispatcher() const\n\t{\n\t\treturn m_dispatcher1;\n\t}\n\n\tvoid updateSingleAabb(btCollisionObject* colObj);\n\n\tvirtual void updateAabbs();\n\n\t///the computeOverlappingPairs is usually already called by performDiscreteCollisionDetection (or stepSimulation)\n\t///it can be useful to use if you perform ray tests without collision detection/simulation\n\tvirtual void computeOverlappingPairs();\n\n\tvirtual void setDebugDrawer(btIDebugDraw* debugDrawer)\n\t{\n\t\tm_debugDrawer = debugDrawer;\n\t}\n\n\tvirtual btIDebugDraw* getDebugDrawer()\n\t{\n\t\treturn m_debugDrawer;\n\t}\n\n\tvirtual void debugDrawWorld();\n\n\tvirtual void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);\n\n\t///LocalShapeInfo gives extra information for complex shapes\n\t///Currently, only btTriangleMeshShape is available, so it just contains triangleIndex and subpart\n\tstruct LocalShapeInfo\n\t{\n\t\tint m_shapePart;\n\t\tint m_triangleIndex;\n\n\t\t//const btCollisionShape*\tm_shapeTemp;\n\t\t//const btTransform*\tm_shapeLocalTransform;\n\t};\n\n\tstruct LocalRayResult\n\t{\n\t\tLocalRayResult(const btCollisionObject* collisionObject,\n\t\t\t\t\t   LocalShapeInfo* localShapeInfo,\n\t\t\t\t\t   const btVector3& hitNormalLocal,\n\t\t\t\t\t   btScalar hitFraction)\n\t\t\t: m_collisionObject(collisionObject),\n\t\t\t  m_localShapeInfo(localShapeInfo),\n\t\t\t  m_hitNormalLocal(hitNormalLocal),\n\t\t\t  m_hitFraction(hitFraction)\n\t\t{\n\t\t}\n\n\t\tconst btCollisionObject* m_collisionObject;\n\t\tLocalShapeInfo* m_localShapeInfo;\n\t\tbtVector3 m_hitNormalLocal;\n\t\tbtScalar m_hitFraction;\n\t};\n\n\t///RayResultCallback is used to report new raycast results\n\tstruct RayResultCallback\n\t{\n\t\tbtScalar m_closestHitFraction;\n\t\tconst btCollisionObject* m_collisionObject;\n\t\tint m_collisionFilterGroup;\n\t\tint m_collisionFilterMask;\n\t\t//@BP Mod - Custom flags, currently used to enable backface culling on tri-meshes, see btRaycastCallback.h. Apply any of the EFlags defined there on m_flags here to invoke.\n\t\tunsigned int m_flags;\n\n\t\tvirtual ~RayResultCallback()\n\t\t{\n\t\t}\n\t\tbool hasHit() const\n\t\t{\n\t\t\treturn (m_collisionObject != 0);\n\t\t}\n\n\t\tRayResultCallback()\n\t\t\t: m_closestHitFraction(btScalar(1.)),\n\t\t\t  m_collisionObject(0),\n\t\t\t  m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),\n\t\t\t  m_collisionFilterMask(btBroadphaseProxy::AllFilter),\n\t\t\t  //@BP Mod\n\t\t\t  m_flags(0)\n\t\t{\n\t\t}\n\n\t\tvirtual bool needsCollision(btBroadphaseProxy* proxy0) const\n\t\t{\n\t\t\tbool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;\n\t\t\tcollides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);\n\t\t\treturn collides;\n\t\t}\n\n\t\tvirtual btScalar addSingleResult(LocalRayResult& rayResult, bool normalInWorldSpace) = 0;\n\t};\n\n\tstruct ClosestRayResultCallback : public RayResultCallback\n\t{\n\t\tClosestRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld)\n\t\t\t: m_rayFromWorld(rayFromWorld),\n\t\t\t  m_rayToWorld(rayToWorld)\n\t\t{\n\t\t}\n\n\t\tbtVector3 m_rayFromWorld;  //used to calculate hitPointWorld from hitFraction\n\t\tbtVector3 m_rayToWorld;\n\n\t\tbtVector3 m_hitNormalWorld;\n\t\tbtVector3 m_hitPointWorld;\n\n\t\tvirtual btScalar addSingleResult(LocalRayResult& rayResult, bool normalInWorldSpace)\n\t\t{\n\t\t\t//caller already does the filter on the m_closestHitFraction\n\t\t\tbtAssert(rayResult.m_hitFraction <= m_closestHitFraction);\n\n\t\t\tm_closestHitFraction = rayResult.m_hitFraction;\n\t\t\tm_collisionObject = rayResult.m_collisionObject;\n\t\t\tif (normalInWorldSpace)\n\t\t\t{\n\t\t\t\tm_hitNormalWorld = rayResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t///need to transform normal into worldspace\n\t\t\t\tm_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis() * rayResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\tm_hitPointWorld.setInterpolate3(m_rayFromWorld, m_rayToWorld, rayResult.m_hitFraction);\n\t\t\treturn rayResult.m_hitFraction;\n\t\t}\n\t};\n\n\tstruct AllHitsRayResultCallback : public RayResultCallback\n\t{\n\t\tAllHitsRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld)\n\t\t\t: m_rayFromWorld(rayFromWorld),\n\t\t\t  m_rayToWorld(rayToWorld)\n\t\t{\n\t\t}\n\n\t\tbtAlignedObjectArray<const btCollisionObject*> m_collisionObjects;\n\n\t\tbtVector3 m_rayFromWorld;  //used to calculate hitPointWorld from hitFraction\n\t\tbtVector3 m_rayToWorld;\n\n\t\tbtAlignedObjectArray<btVector3> m_hitNormalWorld;\n\t\tbtAlignedObjectArray<btVector3> m_hitPointWorld;\n\t\tbtAlignedObjectArray<btScalar> m_hitFractions;\n\n\t\tvirtual btScalar addSingleResult(LocalRayResult& rayResult, bool normalInWorldSpace)\n\t\t{\n\t\t\tm_collisionObject = rayResult.m_collisionObject;\n\t\t\tm_collisionObjects.push_back(rayResult.m_collisionObject);\n\t\t\tbtVector3 hitNormalWorld;\n\t\t\tif (normalInWorldSpace)\n\t\t\t{\n\t\t\t\thitNormalWorld = rayResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t///need to transform normal into worldspace\n\t\t\t\thitNormalWorld = m_collisionObject->getWorldTransform().getBasis() * rayResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\tm_hitNormalWorld.push_back(hitNormalWorld);\n\t\t\tbtVector3 hitPointWorld;\n\t\t\thitPointWorld.setInterpolate3(m_rayFromWorld, m_rayToWorld, rayResult.m_hitFraction);\n\t\t\tm_hitPointWorld.push_back(hitPointWorld);\n\t\t\tm_hitFractions.push_back(rayResult.m_hitFraction);\n\t\t\treturn m_closestHitFraction;\n\t\t}\n\t};\n\n\tstruct LocalConvexResult\n\t{\n\t\tLocalConvexResult(const btCollisionObject* hitCollisionObject,\n\t\t\t\t\t\t  LocalShapeInfo* localShapeInfo,\n\t\t\t\t\t\t  const btVector3& hitNormalLocal,\n\t\t\t\t\t\t  const btVector3& hitPointLocal,\n\t\t\t\t\t\t  btScalar hitFraction)\n\t\t\t: m_hitCollisionObject(hitCollisionObject),\n\t\t\t  m_localShapeInfo(localShapeInfo),\n\t\t\t  m_hitNormalLocal(hitNormalLocal),\n\t\t\t  m_hitPointLocal(hitPointLocal),\n\t\t\t  m_hitFraction(hitFraction)\n\t\t{\n\t\t}\n\n\t\tconst btCollisionObject* m_hitCollisionObject;\n\t\tLocalShapeInfo* m_localShapeInfo;\n\t\tbtVector3 m_hitNormalLocal;\n\t\tbtVector3 m_hitPointLocal;\n\t\tbtScalar m_hitFraction;\n\t};\n\n\t///RayResultCallback is used to report new raycast results\n\tstruct ConvexResultCallback\n\t{\n\t\tbtScalar m_closestHitFraction;\n\t\tint m_collisionFilterGroup;\n\t\tint m_collisionFilterMask;\n\n\t\tConvexResultCallback()\n\t\t\t: m_closestHitFraction(btScalar(1.)),\n\t\t\t  m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),\n\t\t\t  m_collisionFilterMask(btBroadphaseProxy::AllFilter)\n\t\t{\n\t\t}\n\n\t\tvirtual ~ConvexResultCallback()\n\t\t{\n\t\t}\n\n\t\tbool hasHit() const\n\t\t{\n\t\t\treturn (m_closestHitFraction < btScalar(1.));\n\t\t}\n\n\t\tvirtual bool needsCollision(btBroadphaseProxy* proxy0) const\n\t\t{\n\t\t\tbool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;\n\t\t\tcollides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);\n\t\t\treturn collides;\n\t\t}\n\n\t\tvirtual btScalar addSingleResult(LocalConvexResult& convexResult, bool normalInWorldSpace) = 0;\n\t};\n\n\tstruct ClosestConvexResultCallback : public ConvexResultCallback\n\t{\n\t\tClosestConvexResultCallback(const btVector3& convexFromWorld, const btVector3& convexToWorld)\n\t\t\t: m_convexFromWorld(convexFromWorld),\n\t\t\t  m_convexToWorld(convexToWorld),\n\t\t\t  m_hitCollisionObject(0)\n\t\t{\n\t\t}\n\n\t\tbtVector3 m_convexFromWorld;  //used to calculate hitPointWorld from hitFraction\n\t\tbtVector3 m_convexToWorld;\n\n\t\tbtVector3 m_hitNormalWorld;\n\t\tbtVector3 m_hitPointWorld;\n\t\tconst btCollisionObject* m_hitCollisionObject;\n\n\t\tvirtual btScalar addSingleResult(LocalConvexResult& convexResult, bool normalInWorldSpace)\n\t\t{\n\t\t\t//caller already does the filter on the m_closestHitFraction\n\t\t\tbtAssert(convexResult.m_hitFraction <= m_closestHitFraction);\n\n\t\t\tm_closestHitFraction = convexResult.m_hitFraction;\n\t\t\tm_hitCollisionObject = convexResult.m_hitCollisionObject;\n\t\t\tif (normalInWorldSpace)\n\t\t\t{\n\t\t\t\tm_hitNormalWorld = convexResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t///need to transform normal into worldspace\n\t\t\t\tm_hitNormalWorld = m_hitCollisionObject->getWorldTransform().getBasis() * convexResult.m_hitNormalLocal;\n\t\t\t}\n\t\t\tm_hitPointWorld = convexResult.m_hitPointLocal;\n\t\t\treturn convexResult.m_hitFraction;\n\t\t}\n\t};\n\n\t///ContactResultCallback is used to report contact points\n\tstruct ContactResultCallback\n\t{\n\t\tint m_collisionFilterGroup;\n\t\tint m_collisionFilterMask;\n\t\tbtScalar m_closestDistanceThreshold;\n\n\t\tContactResultCallback()\n\t\t\t: m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),\n\t\t\t  m_collisionFilterMask(btBroadphaseProxy::AllFilter),\n\t\t\t  m_closestDistanceThreshold(0)\n\t\t{\n\t\t}\n\n\t\tvirtual ~ContactResultCallback()\n\t\t{\n\t\t}\n\n\t\tvirtual bool needsCollision(btBroadphaseProxy* proxy0) const\n\t\t{\n\t\t\tbool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;\n\t\t\tcollides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);\n\t\t\treturn collides;\n\t\t}\n\n\t\tvirtual btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper* colObj1Wrap, int partId1, int index1) = 0;\n\t};\n\n\tint getNumCollisionObjects() const\n\t{\n\t\treturn int(m_collisionObjects.size());\n\t}\n\n\t/// rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback\n\t/// This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback.\n\tvirtual void rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, RayResultCallback& resultCallback) const;\n\n\t/// convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback\n\t/// This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback.\n\tvoid convexSweepTest(const btConvexShape* castShape, const btTransform& from, const btTransform& to, ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = btScalar(0.)) const;\n\n\t///contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback.\n\t///it reports one or more contact points for every overlapping object (including the one with deepest penetration)\n\tvoid contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback);\n\n\t///contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected.\n\t///it reports one or more contact points (including the one with deepest penetration)\n\tvoid contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback);\n\n\t/// rayTestSingle performs a raycast call and calls the resultCallback. It is used internally by rayTest.\n\t/// In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape.\n\t/// This allows more customization.\n\tstatic void rayTestSingle(const btTransform& rayFromTrans, const btTransform& rayToTrans,\n\t\t\t\t\t\t\t  btCollisionObject* collisionObject,\n\t\t\t\t\t\t\t  const btCollisionShape* collisionShape,\n\t\t\t\t\t\t\t  const btTransform& colObjWorldTransform,\n\t\t\t\t\t\t\t  RayResultCallback& resultCallback);\n\n\tstatic void rayTestSingleInternal(const btTransform& rayFromTrans, const btTransform& rayToTrans,\n\t\t\t\t\t\t\t\t\t  const btCollisionObjectWrapper* collisionObjectWrap,\n\t\t\t\t\t\t\t\t\t  RayResultCallback& resultCallback);\n\n\t/// objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest.\n\tstatic void objectQuerySingle(const btConvexShape* castShape, const btTransform& rayFromTrans, const btTransform& rayToTrans,\n\t\t\t\t\t\t\t\t  btCollisionObject* collisionObject,\n\t\t\t\t\t\t\t\t  const btCollisionShape* collisionShape,\n\t\t\t\t\t\t\t\t  const btTransform& colObjWorldTransform,\n\t\t\t\t\t\t\t\t  ConvexResultCallback& resultCallback, btScalar allowedPenetration);\n\n\tstatic void objectQuerySingleInternal(const btConvexShape* castShape, const btTransform& convexFromTrans, const btTransform& convexToTrans,\n\t\t\t\t\t\t\t\t\t\t  const btCollisionObjectWrapper* colObjWrap,\n\t\t\t\t\t\t\t\t\t\t  ConvexResultCallback& resultCallback, btScalar allowedPenetration);\n\n\tvirtual void addCollisionObject(btCollisionObject* collisionObject, int collisionFilterGroup = btBroadphaseProxy::DefaultFilter, int collisionFilterMask = btBroadphaseProxy::AllFilter);\n\n\tvirtual void refreshBroadphaseProxy(btCollisionObject* collisionObject);\n\n\tbtCollisionObjectArray& getCollisionObjectArray()\n\t{\n\t\treturn m_collisionObjects;\n\t}\n\n\tconst btCollisionObjectArray& getCollisionObjectArray() const\n\t{\n\t\treturn m_collisionObjects;\n\t}\n\n\tvirtual void removeCollisionObject(btCollisionObject* collisionObject);\n\n\tvirtual void performDiscreteCollisionDetection();\n\n\tbtDispatcherInfo& getDispatchInfo()\n\t{\n\t\treturn m_dispatchInfo;\n\t}\n\n\tconst btDispatcherInfo& getDispatchInfo() const\n\t{\n\t\treturn m_dispatchInfo;\n\t}\n\n\tbool getForceUpdateAllAabbs() const\n\t{\n\t\treturn m_forceUpdateAllAabbs;\n\t}\n\tvoid setForceUpdateAllAabbs(bool forceUpdateAllAabbs)\n\t{\n\t\tm_forceUpdateAllAabbs = forceUpdateAllAabbs;\n\t}\n\n\t///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo)\n\tvirtual void serialize(btSerializer* serializer);\n};\n\n#endif  //BT_COLLISION_WORLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCollisionWorldImporter.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2014 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_WORLD_IMPORTER_H\n#define BT_COLLISION_WORLD_IMPORTER_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btHashMap.h\"\n\nclass btCollisionShape;\nclass btCollisionObject;\nstruct btBulletSerializedArrays;\n\nstruct ConstraintInput;\nclass btCollisionWorld;\nstruct btCollisionShapeData;\nclass btTriangleIndexVertexArray;\nclass btStridingMeshInterface;\nstruct btStridingMeshInterfaceData;\nclass btGImpactMeshShape;\nclass btOptimizedBvh;\nstruct btTriangleInfoMap;\nclass btBvhTriangleMeshShape;\nclass btPoint2PointConstraint;\nclass btHingeConstraint;\nclass btConeTwistConstraint;\nclass btGeneric6DofConstraint;\nclass btGeneric6DofSpringConstraint;\nclass btSliderConstraint;\nclass btGearConstraint;\nstruct btContactSolverInfo;\n\nclass btCollisionWorldImporter\n{\nprotected:\n\tbtCollisionWorld* m_collisionWorld;\n\n\tint m_verboseMode;\n\n\tbtAlignedObjectArray<btCollisionShape*> m_allocatedCollisionShapes;\n\tbtAlignedObjectArray<btCollisionObject*> m_allocatedRigidBodies;\n\n\tbtAlignedObjectArray<btOptimizedBvh*> m_allocatedBvhs;\n\tbtAlignedObjectArray<btTriangleInfoMap*> m_allocatedTriangleInfoMaps;\n\tbtAlignedObjectArray<btTriangleIndexVertexArray*> m_allocatedTriangleIndexArrays;\n\tbtAlignedObjectArray<btStridingMeshInterfaceData*> m_allocatedbtStridingMeshInterfaceDatas;\n\tbtAlignedObjectArray<btCollisionObject*> m_allocatedCollisionObjects;\n\n\tbtAlignedObjectArray<char*> m_allocatedNames;\n\n\tbtAlignedObjectArray<int*> m_indexArrays;\n\tbtAlignedObjectArray<short int*> m_shortIndexArrays;\n\tbtAlignedObjectArray<unsigned char*> m_charIndexArrays;\n\n\tbtAlignedObjectArray<btVector3FloatData*> m_floatVertexArrays;\n\tbtAlignedObjectArray<btVector3DoubleData*> m_doubleVertexArrays;\n\n\tbtHashMap<btHashPtr, btOptimizedBvh*> m_bvhMap;\n\tbtHashMap<btHashPtr, btTriangleInfoMap*> m_timMap;\n\n\tbtHashMap<btHashString, btCollisionShape*> m_nameShapeMap;\n\tbtHashMap<btHashString, btCollisionObject*> m_nameColObjMap;\n\n\tbtHashMap<btHashPtr, const char*> m_objectNameMap;\n\n\tbtHashMap<btHashPtr, btCollisionShape*> m_shapeMap;\n\tbtHashMap<btHashPtr, btCollisionObject*> m_bodyMap;\n\n\t//methods\n\n\tchar* duplicateName(const char* name);\n\n\tbtCollisionShape* convertCollisionShape(btCollisionShapeData* shapeData);\n\npublic:\n\tbtCollisionWorldImporter(btCollisionWorld* world);\n\n\tvirtual ~btCollisionWorldImporter();\n\n\tbool convertAllObjects(btBulletSerializedArrays* arrays);\n\n\t///delete all memory collision shapes, rigid bodies, constraints etc. allocated during the load.\n\t///make sure you don't use the dynamics world containing objects after you call this method\n\tvirtual void deleteAllData();\n\n\tvoid setVerboseMode(int verboseMode)\n\t{\n\t\tm_verboseMode = verboseMode;\n\t}\n\n\tint getVerboseMode() const\n\t{\n\t\treturn m_verboseMode;\n\t}\n\n\t// query for data\n\tint getNumCollisionShapes() const;\n\tbtCollisionShape* getCollisionShapeByIndex(int index);\n\tint getNumRigidBodies() const;\n\tbtCollisionObject* getRigidBodyByIndex(int index) const;\n\n\tint getNumBvhs() const;\n\tbtOptimizedBvh* getBvhByIndex(int index) const;\n\tint getNumTriangleInfoMaps() const;\n\tbtTriangleInfoMap* getTriangleInfoMapByIndex(int index) const;\n\n\t// queris involving named objects\n\tbtCollisionShape* getCollisionShapeByName(const char* name);\n\tbtCollisionObject* getCollisionObjectByName(const char* name);\n\n\tconst char* getNameForPointer(const void* ptr) const;\n\n\t///those virtuals are called by load and can be overridden by the user\n\n\t//bodies\n\n\tvirtual btCollisionObject* createCollisionObject(const btTransform& startTransform, btCollisionShape* shape, const char* bodyName);\n\n\t///shapes\n\n\tvirtual btCollisionShape* createPlaneShape(const btVector3& planeNormal, btScalar planeConstant);\n\tvirtual btCollisionShape* createBoxShape(const btVector3& halfExtents);\n\tvirtual btCollisionShape* createSphereShape(btScalar radius);\n\tvirtual btCollisionShape* createCapsuleShapeX(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createCapsuleShapeY(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createCapsuleShapeZ(btScalar radius, btScalar height);\n\n\tvirtual btCollisionShape* createCylinderShapeX(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createCylinderShapeY(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createCylinderShapeZ(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createConeShapeX(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createConeShapeY(btScalar radius, btScalar height);\n\tvirtual btCollisionShape* createConeShapeZ(btScalar radius, btScalar height);\n\tvirtual class btTriangleIndexVertexArray* createTriangleMeshContainer();\n\tvirtual btBvhTriangleMeshShape* createBvhTriangleMeshShape(btStridingMeshInterface* trimesh, btOptimizedBvh* bvh);\n\tvirtual btCollisionShape* createConvexTriangleMeshShape(btStridingMeshInterface* trimesh);\n#ifdef SUPPORT_GIMPACT_SHAPE_IMPORT\n\tvirtual btGImpactMeshShape* createGimpactShape(btStridingMeshInterface* trimesh);\n#endif  //SUPPORT_GIMPACT_SHAPE_IMPORT\n\tvirtual btStridingMeshInterfaceData* createStridingMeshInterfaceData(btStridingMeshInterfaceData* interfaceData);\n\n\tvirtual class btConvexHullShape* createConvexHullShape();\n\tvirtual class btCompoundShape* createCompoundShape();\n\tvirtual class btScaledBvhTriangleMeshShape* createScaledTrangleMeshShape(btBvhTriangleMeshShape* meshShape, const btVector3& localScalingbtBvhTriangleMeshShape);\n\n\tvirtual class btMultiSphereShape* createMultiSphereShape(const btVector3* positions, const btScalar* radi, int numSpheres);\n\n\tvirtual btTriangleIndexVertexArray* createMeshInterface(btStridingMeshInterfaceData& meshData);\n\n\t///acceleration and connectivity structures\n\tvirtual btOptimizedBvh* createOptimizedBvh();\n\tvirtual btTriangleInfoMap* createTriangleInfoMap();\n};\n\n#endif  //BT_WORLD_IMPORTER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\n*/\n\n#ifndef BT_COMPOUND_COLLISION_ALGORITHM_H\n#define BT_COMPOUND_COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseInterface.h\"\n\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\nclass btDispatcher;\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"btCollisionCreateFunc.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"BulletCollision/BroadphaseCollision/btDbvt.h\"\nclass btDispatcher;\nclass btCollisionObject;\n\nclass btCollisionShape;\ntypedef bool (*btShapePairCallback)(const btCollisionShape* pShape0, const btCollisionShape* pShape1);\nextern btShapePairCallback gCompoundChildShapePairCallback;\n\n/// btCompoundCollisionAlgorithm  supports collision between CompoundCollisionShapes and other collision shapes\nclass btCompoundCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbtNodeStack stack2;\n\tbtManifoldArray manifoldArray;\n\nprotected:\n\tbtAlignedObjectArray<btCollisionAlgorithm*> m_childCollisionAlgorithms;\n\tbool m_isSwapped;\n\n\tclass btPersistentManifold* m_sharedManifold;\n\tbool m_ownsManifold;\n\n\tint m_compoundShapeRevision;  //to keep track of changes, so that childAlgorithm array can be updated\n\n\tvoid removeChildAlgorithms();\n\n\tvoid preallocateChildAlgorithms(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\npublic:\n\tbtCompoundCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped);\n\n\tvirtual ~btCompoundCollisionAlgorithm();\n\n\tbtCollisionAlgorithm* getChildAlgorithm(int n) const\n\t{\n\t\treturn m_childCollisionAlgorithms[n];\n\t}\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tint i;\n\t\tfor (i = 0; i < m_childCollisionAlgorithms.size(); i++)\n\t\t{\n\t\t\tif (m_childCollisionAlgorithms[i])\n\t\t\t\tm_childCollisionAlgorithms[i]->getAllContactManifolds(manifoldArray);\n\t\t}\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm));\n\t\t\treturn new (mem) btCompoundCollisionAlgorithm(ci, body0Wrap, body1Wrap, false);\n\t\t}\n\t};\n\n\tstruct SwappedCreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCollisionAlgorithm));\n\t\t\treturn new (mem) btCompoundCollisionAlgorithm(ci, body0Wrap, body1Wrap, true);\n\t\t}\n\t};\n};\n\n#endif  //BT_COMPOUND_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btCompoundCompoundCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2013 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\n*/\n\n#ifndef BT_COMPOUND_COMPOUND_COLLISION_ALGORITHM_H\n#define BT_COMPOUND_COMPOUND_COLLISION_ALGORITHM_H\n\n#include \"btCompoundCollisionAlgorithm.h\"\n\n#include \"BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseInterface.h\"\n\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\nclass btDispatcher;\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"BulletCollision/CollisionDispatch/btHashedSimplePairCache.h\"\nclass btDispatcher;\nclass btCollisionObject;\n\nclass btCollisionShape;\n\nextern btShapePairCallback gCompoundCompoundChildShapePairCallback;\n\n/// btCompoundCompoundCollisionAlgorithm  supports collision between two btCompoundCollisionShape shapes\nclass btCompoundCompoundCollisionAlgorithm : public btCompoundCollisionAlgorithm\n{\n\tclass btHashedSimplePairCache* m_childCollisionAlgorithmCache;\n\tbtSimplePairArray m_removePairs;\n\n\tint m_compoundShapeRevision0;  //to keep track of changes, so that childAlgorithm array can be updated\n\tint m_compoundShapeRevision1;\n\n\tvoid removeChildAlgorithms();\n\n\t//\tvoid\tpreallocateChildAlgorithms(const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap);\n\npublic:\n\tbtCompoundCompoundCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped);\n\n\tvirtual ~btCompoundCompoundCollisionAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray);\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCompoundCollisionAlgorithm));\n\t\t\treturn new (mem) btCompoundCompoundCollisionAlgorithm(ci, body0Wrap, body1Wrap, false);\n\t\t}\n\t};\n\n\tstruct SwappedCreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btCompoundCompoundCollisionAlgorithm));\n\t\t\treturn new (mem) btCompoundCompoundCollisionAlgorithm(ci, body0Wrap, body1Wrap, true);\n\t\t}\n\t};\n};\n\n#endif  //BT_COMPOUND_COMPOUND_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H\n#define BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H\n\n#include \"BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionDispatcher.h\"\n#include \"LinearMath/btTransformUtil.h\"  //for btConvexSeparatingDistanceUtil\n\nclass btConvexPenetrationDepthSolver;\n\n///The convex2dConvex2dAlgorithm collision algorithm support 2d collision detection for btConvex2dShape\n///Currently it requires the btMinkowskiPenetrationDepthSolver, it has support for 2d penetration depth computation\nclass btConvex2dConvex2dAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbtSimplexSolverInterface* m_simplexSolver;\n\tbtConvexPenetrationDepthSolver* m_pdSolver;\n\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbool m_lowLevelOfDetail;\n\npublic:\n\tbtConvex2dConvex2dAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold);\n\n\tvirtual ~btConvex2dConvex2dAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\t///should we use m_ownManifold to avoid adding duplicates?\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t}\n\n\tvoid setLowLevelOfDetail(bool useLowLevel);\n\n\tconst btPersistentManifold* getManifold()\n\t{\n\t\treturn m_manifoldPtr;\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tbtConvexPenetrationDepthSolver* m_pdSolver;\n\t\tbtSimplexSolverInterface* m_simplexSolver;\n\t\tint m_numPerturbationIterations;\n\t\tint m_minimumPointsPerturbationThreshold;\n\n\t\tCreateFunc(btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* pdSolver);\n\n\t\tvirtual ~CreateFunc();\n\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvex2dConvex2dAlgorithm));\n\t\t\treturn new (mem) btConvex2dConvex2dAlgorithm(ci.m_manifold, ci, body0Wrap, body1Wrap, m_simplexSolver, m_pdSolver, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold);\n\t\t}\n\t};\n};\n\n#endif  //BT_CONVEX_2D_CONVEX_2D_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H\n#define BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseInterface.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleCallback.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\nclass btDispatcher;\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"btCollisionCreateFunc.h\"\n\n///For each triangle in the concave mesh that overlaps with the AABB of a convex (m_convexProxy), processTriangle is called.\nATTRIBUTE_ALIGNED16(class)\nbtConvexTriangleCallback : public btTriangleCallback\n{\n\tbtVector3 m_aabbMin;\n\tbtVector3 m_aabbMax;\n\n\tconst btCollisionObjectWrapper* m_convexBodyWrap;\n\tconst btCollisionObjectWrapper* m_triBodyWrap;\n\n\tbtManifoldResult* m_resultOut;\n\tbtDispatcher* m_dispatcher;\n\tconst btDispatcherInfo* m_dispatchInfoPtr;\n\tbtScalar m_collisionMarginTriangle;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tint m_triangleCount;\n\n\tbtPersistentManifold* m_manifoldPtr;\n\n\tbtConvexTriangleCallback(btDispatcher * dispatcher, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped);\n\n\tvoid setTimeStepAndCounters(btScalar collisionMarginTriangle, const btDispatcherInfo& dispatchInfo, const btCollisionObjectWrapper* convexBodyWrap, const btCollisionObjectWrapper* triBodyWrap, btManifoldResult* resultOut);\n\n\tvoid clearWrapperData()\n\t{\n\t\tm_convexBodyWrap = 0;\n\t\tm_triBodyWrap = 0;\n\t}\n\tvirtual ~btConvexTriangleCallback();\n\n\tvirtual void processTriangle(btVector3 * triangle, int partId, int triangleIndex);\n\n\tvoid clearCache();\n\n\tSIMD_FORCE_INLINE const btVector3& getAabbMin() const\n\t{\n\t\treturn m_aabbMin;\n\t}\n\tSIMD_FORCE_INLINE const btVector3& getAabbMax() const\n\t{\n\t\treturn m_aabbMax;\n\t}\n};\n\n/// btConvexConcaveCollisionAlgorithm  supports collision between convex shapes and (concave) trianges meshes.\nATTRIBUTE_ALIGNED16(class)\nbtConvexConcaveCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbtConvexTriangleCallback m_btConvexTriangleCallback;\n\n\tbool m_isSwapped;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvexConcaveCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped);\n\n\tvirtual ~btConvexConcaveCollisionAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtScalar calculateTimeOfImpact(btCollisionObject * body0, btCollisionObject * body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray & manifoldArray);\n\n\tvoid clearCache();\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm));\n\t\t\treturn new (mem) btConvexConcaveCollisionAlgorithm(ci, body0Wrap, body1Wrap, false);\n\t\t}\n\t};\n\n\tstruct SwappedCreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConcaveCollisionAlgorithm));\n\t\t\treturn new (mem) btConvexConcaveCollisionAlgorithm(ci, body0Wrap, body1Wrap, true);\n\t\t}\n\t};\n};\n\n#endif  //BT_CONVEX_CONCAVE_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_CONVEX_ALGORITHM_H\n#define BT_CONVEX_CONVEX_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h\"\n#include \"btCollisionCreateFunc.h\"\n#include \"btCollisionDispatcher.h\"\n#include \"LinearMath/btTransformUtil.h\"  //for btConvexSeparatingDistanceUtil\n#include \"BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h\"\n\nclass btConvexPenetrationDepthSolver;\n\n///Enabling USE_SEPDISTANCE_UTIL2 requires 100% reliable distance computation. However, when using large size ratios GJK can be imprecise\n///so the distance is not conservative. In that case, enabling this USE_SEPDISTANCE_UTIL2 would result in failing/missing collisions.\n///Either improve GJK for large size ratios (testing a 100 units versus a 0.1 unit object) or only enable the util\n///for certain pairs that have a small size ratio\n\n//#define USE_SEPDISTANCE_UTIL2 1\n\n///The convexConvexAlgorithm collision algorithm implements time of impact, convex closest points and penetration depth calculations between two convex objects.\n///Multiple contact points are calculated by perturbing the orientation of the smallest object orthogonal to the separating normal.\n///This idea was described by Gino van den Bergen in this forum topic http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=4&t=288&p=888#p888\nclass btConvexConvexAlgorithm : public btActivatingCollisionAlgorithm\n{\n#ifdef USE_SEPDISTANCE_UTIL2\n\tbtConvexSeparatingDistanceUtil m_sepDistance;\n#endif\n\tbtConvexPenetrationDepthSolver* m_pdSolver;\n\n\tbtVertexArray worldVertsB1;\n\tbtVertexArray worldVertsB2;\n\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbool m_lowLevelOfDetail;\n\n\tint m_numPerturbationIterations;\n\tint m_minimumPointsPerturbationThreshold;\n\n\t///cache separating vector to speedup collision detection\n\npublic:\n\tbtConvexConvexAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, btConvexPenetrationDepthSolver* pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold);\n\n\tvirtual ~btConvexConvexAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\t///should we use m_ownManifold to avoid adding duplicates?\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t}\n\n\tvoid setLowLevelOfDetail(bool useLowLevel);\n\n\tconst btPersistentManifold* getManifold()\n\t{\n\t\treturn m_manifoldPtr;\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tbtConvexPenetrationDepthSolver* m_pdSolver;\n\t\tint m_numPerturbationIterations;\n\t\tint m_minimumPointsPerturbationThreshold;\n\n\t\tCreateFunc(btConvexPenetrationDepthSolver* pdSolver);\n\n\t\tvirtual ~CreateFunc();\n\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConvexAlgorithm));\n\t\t\treturn new (mem) btConvexConvexAlgorithm(ci.m_manifold, ci, body0Wrap, body1Wrap, m_pdSolver, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold);\n\t\t}\n\t};\n};\n\n#endif  //BT_CONVEX_CONVEX_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_PLANE_COLLISION_ALGORITHM_H\n#define BT_CONVEX_PLANE_COLLISION_ALGORITHM_H\n\n#include \"BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\nclass btPersistentManifold;\n#include \"btCollisionDispatcher.h\"\n\n#include \"LinearMath/btVector3.h\"\n\n/// btSphereBoxCollisionAlgorithm  provides sphere-box collision detection.\n/// Other features are frame-coherency (persistent data) and collision response.\nclass btConvexPlaneCollisionAlgorithm : public btCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbool m_isSwapped;\n\tint m_numPerturbationIterations;\n\tint m_minimumPointsPerturbationThreshold;\n\npublic:\n\tbtConvexPlaneCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped, int numPerturbationIterations, int minimumPointsPerturbationThreshold);\n\n\tvirtual ~btConvexPlaneCollisionAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvoid collideSingleContact(const btQuaternion& perturbeRot, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tint m_numPerturbationIterations;\n\t\tint m_minimumPointsPerturbationThreshold;\n\n\t\tCreateFunc()\n\t\t\t: m_numPerturbationIterations(1),\n\t\t\t  m_minimumPointsPerturbationThreshold(0)\n\t\t{\n\t\t}\n\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexPlaneCollisionAlgorithm));\n\t\t\tif (!m_swapped)\n\t\t\t{\n\t\t\t\treturn new (mem) btConvexPlaneCollisionAlgorithm(0, ci, body0Wrap, body1Wrap, false, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn new (mem) btConvexPlaneCollisionAlgorithm(0, ci, body0Wrap, body1Wrap, true, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold);\n\t\t\t}\n\t\t}\n\t};\n};\n\n#endif  //BT_CONVEX_PLANE_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DEFAULT_COLLISION_CONFIGURATION\n#define BT_DEFAULT_COLLISION_CONFIGURATION\n\n#include \"btCollisionConfiguration.h\"\nclass btVoronoiSimplexSolver;\nclass btConvexPenetrationDepthSolver;\n\nstruct btDefaultCollisionConstructionInfo\n{\n\tbtPoolAllocator* m_persistentManifoldPool;\n\tbtPoolAllocator* m_collisionAlgorithmPool;\n\tint m_defaultMaxPersistentManifoldPoolSize;\n\tint m_defaultMaxCollisionAlgorithmPoolSize;\n\tint m_customCollisionAlgorithmMaxElementSize;\n\tint m_useEpaPenetrationAlgorithm;\n\n\tbtDefaultCollisionConstructionInfo()\n\t\t: m_persistentManifoldPool(0),\n\t\t  m_collisionAlgorithmPool(0),\n\t\t  m_defaultMaxPersistentManifoldPoolSize(4096),\n\t\t  m_defaultMaxCollisionAlgorithmPoolSize(4096),\n\t\t  m_customCollisionAlgorithmMaxElementSize(0),\n\t\t  m_useEpaPenetrationAlgorithm(true)\n\t{\n\t}\n};\n\n///btCollisionConfiguration allows to configure Bullet collision detection\n///stack allocator, pool memory allocators\n///@todo: describe the meaning\nclass btDefaultCollisionConfiguration : public btCollisionConfiguration\n{\nprotected:\n\tint m_persistentManifoldPoolSize;\n\n\tbtPoolAllocator* m_persistentManifoldPool;\n\tbool m_ownsPersistentManifoldPool;\n\n\tbtPoolAllocator* m_collisionAlgorithmPool;\n\tbool m_ownsCollisionAlgorithmPool;\n\n\t//default penetration depth solver\n\tbtConvexPenetrationDepthSolver* m_pdSolver;\n\n\t//default CreationFunctions, filling the m_doubleDispatch table\n\tbtCollisionAlgorithmCreateFunc* m_convexConvexCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_convexConcaveCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_swappedConvexConcaveCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_compoundCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_compoundCompoundCreateFunc;\n\n\tbtCollisionAlgorithmCreateFunc* m_swappedCompoundCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_emptyCreateFunc;\n\tbtCollisionAlgorithmCreateFunc* m_sphereSphereCF;\n\tbtCollisionAlgorithmCreateFunc* m_sphereBoxCF;\n\tbtCollisionAlgorithmCreateFunc* m_boxSphereCF;\n\n\tbtCollisionAlgorithmCreateFunc* m_boxBoxCF;\n\tbtCollisionAlgorithmCreateFunc* m_sphereTriangleCF;\n\tbtCollisionAlgorithmCreateFunc* m_triangleSphereCF;\n\tbtCollisionAlgorithmCreateFunc* m_planeConvexCF;\n\tbtCollisionAlgorithmCreateFunc* m_convexPlaneCF;\n\npublic:\n\tbtDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo());\n\n\tvirtual ~btDefaultCollisionConfiguration();\n\n\t///memory pools\n\tvirtual btPoolAllocator* getPersistentManifoldPool()\n\t{\n\t\treturn m_persistentManifoldPool;\n\t}\n\n\tvirtual btPoolAllocator* getCollisionAlgorithmPool()\n\t{\n\t\treturn m_collisionAlgorithmPool;\n\t}\n\n\tvirtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0, int proxyType1);\n\n\tvirtual btCollisionAlgorithmCreateFunc* getClosestPointsAlgorithmCreateFunc(int proxyType0, int proxyType1);\n\n\t///Use this method to allow to generate multiple contact points between at once, between two objects using the generic convex-convex algorithm.\n\t///By default, this feature is disabled for best performance.\n\t///@param numPerturbationIterations controls the number of collision queries. Set it to zero to disable the feature.\n\t///@param minimumPointsPerturbationThreshold is the minimum number of points in the contact cache, above which the feature is disabled\n\t///3 is a good value for both params, if you want to enable the feature. This is because the default contact cache contains a maximum of 4 points, and one collision query at the unperturbed orientation is performed first.\n\t///See Bullet/Demos/CollisionDemo for an example how this feature gathers multiple points.\n\t///@todo we could add a per-object setting of those parameters, for level-of-detail collision detection.\n\tvoid setConvexConvexMultipointIterations(int numPerturbationIterations = 3, int minimumPointsPerturbationThreshold = 3);\n\n\tvoid setPlaneConvexMultipointIterations(int numPerturbationIterations = 3, int minimumPointsPerturbationThreshold = 3);\n};\n\n#endif  //BT_DEFAULT_COLLISION_CONFIGURATION\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_EMPTY_ALGORITH\n#define BT_EMPTY_ALGORITH\n#include \"BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h\"\n#include \"btCollisionCreateFunc.h\"\n#include \"btCollisionDispatcher.h\"\n\n#define ATTRIBUTE_ALIGNED(a)\n\n///EmptyAlgorithm is a stub for unsupported collision pairs.\n///The dispatcher can dispatch a persistent btEmptyAlgorithm to avoid a search every frame.\nclass btEmptyAlgorithm : public btCollisionAlgorithm\n{\npublic:\n\tbtEmptyAlgorithm(const btCollisionAlgorithmConstructionInfo& ci);\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\t(void)body0Wrap;\n\t\t\t(void)body1Wrap;\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btEmptyAlgorithm));\n\t\t\treturn new (mem) btEmptyAlgorithm(ci);\n\t\t}\n\t};\n\n} ATTRIBUTE_ALIGNED(16);\n\n#endif  //BT_EMPTY_ALGORITH\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btGhostObject.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2008 Erwin Coumans  http://bulletphysics.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GHOST_OBJECT_H\n#define BT_GHOST_OBJECT_H\n\n#include \"btCollisionObject.h\"\n#include \"BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n#include \"BulletCollision/BroadphaseCollision/btOverlappingPairCache.h\"\n#include \"btCollisionWorld.h\"\n\nclass btConvexShape;\n\nclass btDispatcher;\n\n///The btGhostObject can keep track of all objects that are overlapping\n///By default, this overlap is based on the AABB\n///This is useful for creating a character controller, collision sensors/triggers, explosions etc.\n///We plan on adding rayTest and other queries for the btGhostObject\nATTRIBUTE_ALIGNED16(class)\nbtGhostObject : public btCollisionObject\n{\nprotected:\n\tbtAlignedObjectArray<btCollisionObject*> m_overlappingObjects;\n\npublic:\n\tbtGhostObject();\n\n\tvirtual ~btGhostObject();\n\n\tvoid convexSweepTest(const class btConvexShape* castShape, const btTransform& convexFromWorld, const btTransform& convexToWorld, btCollisionWorld::ConvexResultCallback& resultCallback, btScalar allowedCcdPenetration = 0.f) const;\n\n\tvoid rayTest(const btVector3& rayFromWorld, const btVector3& rayToWorld, btCollisionWorld::RayResultCallback& resultCallback) const;\n\n\t///this method is mainly for expert/internal use only.\n\tvirtual void addOverlappingObjectInternal(btBroadphaseProxy * otherProxy, btBroadphaseProxy* thisProxy = 0);\n\t///this method is mainly for expert/internal use only.\n\tvirtual void removeOverlappingObjectInternal(btBroadphaseProxy * otherProxy, btDispatcher * dispatcher, btBroadphaseProxy* thisProxy = 0);\n\n\tint getNumOverlappingObjects() const\n\t{\n\t\treturn m_overlappingObjects.size();\n\t}\n\n\tbtCollisionObject* getOverlappingObject(int index)\n\t{\n\t\treturn m_overlappingObjects[index];\n\t}\n\n\tconst btCollisionObject* getOverlappingObject(int index) const\n\t{\n\t\treturn m_overlappingObjects[index];\n\t}\n\n\tbtAlignedObjectArray<btCollisionObject*>& getOverlappingPairs()\n\t{\n\t\treturn m_overlappingObjects;\n\t}\n\n\tconst btAlignedObjectArray<btCollisionObject*> getOverlappingPairs() const\n\t{\n\t\treturn m_overlappingObjects;\n\t}\n\n\t//\n\t// internal cast\n\t//\n\n\tstatic const btGhostObject* upcast(const btCollisionObject* colObj)\n\t{\n\t\tif (colObj->getInternalType() == CO_GHOST_OBJECT)\n\t\t\treturn (const btGhostObject*)colObj;\n\t\treturn 0;\n\t}\n\tstatic btGhostObject* upcast(btCollisionObject * colObj)\n\t{\n\t\tif (colObj->getInternalType() == CO_GHOST_OBJECT)\n\t\t\treturn (btGhostObject*)colObj;\n\t\treturn 0;\n\t}\n};\n\nclass btPairCachingGhostObject : public btGhostObject\n{\n\tbtHashedOverlappingPairCache* m_hashPairCache;\n\npublic:\n\tbtPairCachingGhostObject();\n\n\tvirtual ~btPairCachingGhostObject();\n\n\t///this method is mainly for expert/internal use only.\n\tvirtual void addOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btBroadphaseProxy* thisProxy = 0);\n\n\tvirtual void removeOverlappingObjectInternal(btBroadphaseProxy* otherProxy, btDispatcher* dispatcher, btBroadphaseProxy* thisProxy = 0);\n\n\tbtHashedOverlappingPairCache* getOverlappingPairCache()\n\t{\n\t\treturn m_hashPairCache;\n\t}\n};\n\n///The btGhostPairCallback interfaces and forwards adding and removal of overlapping pairs from the btBroadphaseInterface to btGhostObject.\nclass btGhostPairCallback : public btOverlappingPairCallback\n{\npublic:\n\tbtGhostPairCallback()\n\t{\n\t}\n\n\tvirtual ~btGhostPairCallback()\n\t{\n\t}\n\n\tvirtual btBroadphasePair* addOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1)\n\t{\n\t\tbtCollisionObject* colObj0 = (btCollisionObject*)proxy0->m_clientObject;\n\t\tbtCollisionObject* colObj1 = (btCollisionObject*)proxy1->m_clientObject;\n\t\tbtGhostObject* ghost0 = btGhostObject::upcast(colObj0);\n\t\tbtGhostObject* ghost1 = btGhostObject::upcast(colObj1);\n\t\tif (ghost0)\n\t\t\tghost0->addOverlappingObjectInternal(proxy1, proxy0);\n\t\tif (ghost1)\n\t\t\tghost1->addOverlappingObjectInternal(proxy0, proxy1);\n\t\treturn 0;\n\t}\n\n\tvirtual void* removeOverlappingPair(btBroadphaseProxy* proxy0, btBroadphaseProxy* proxy1, btDispatcher* dispatcher)\n\t{\n\t\tbtCollisionObject* colObj0 = (btCollisionObject*)proxy0->m_clientObject;\n\t\tbtCollisionObject* colObj1 = (btCollisionObject*)proxy1->m_clientObject;\n\t\tbtGhostObject* ghost0 = btGhostObject::upcast(colObj0);\n\t\tbtGhostObject* ghost1 = btGhostObject::upcast(colObj1);\n\t\tif (ghost0)\n\t\t\tghost0->removeOverlappingObjectInternal(proxy1, dispatcher, proxy0);\n\t\tif (ghost1)\n\t\t\tghost1->removeOverlappingObjectInternal(proxy0, dispatcher, proxy1);\n\t\treturn 0;\n\t}\n\n\tvirtual void removeOverlappingPairsContainingProxy(btBroadphaseProxy* /*proxy0*/, btDispatcher* /*dispatcher*/)\n\t{\n\t\tbtAssert(0);\n\t\t//need to keep track of all ghost objects and call them here\n\t\t//m_hashPairCache->removeOverlappingPairsContainingProxy(proxy0,dispatcher);\n\t}\n};\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btHashedSimplePairCache.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_HASHED_SIMPLE_PAIR_CACHE_H\n#define BT_HASHED_SIMPLE_PAIR_CACHE_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n\nconst int BT_SIMPLE_NULL_PAIR = 0xffffffff;\n\nstruct btSimplePair\n{\n\tbtSimplePair(int indexA, int indexB)\n\t\t: m_indexA(indexA),\n\t\t  m_indexB(indexB),\n\t\t  m_userPointer(0)\n\t{\n\t}\n\n\tint m_indexA;\n\tint m_indexB;\n\tunion {\n\t\tvoid* m_userPointer;\n\t\tint m_userValue;\n\t};\n};\n\ntypedef btAlignedObjectArray<btSimplePair> btSimplePairArray;\n\n#ifdef BT_DEBUG_COLLISION_PAIRS\nextern int gOverlappingSimplePairs;\nextern int gRemoveSimplePairs;\nextern int gAddedSimplePairs;\nextern int gFindSimplePairs;\n#endif  //BT_DEBUG_COLLISION_PAIRS\n\nclass btHashedSimplePairCache\n{\n\tbtSimplePairArray m_overlappingPairArray;\n\nprotected:\n\tbtAlignedObjectArray<int> m_hashTable;\n\tbtAlignedObjectArray<int> m_next;\n\npublic:\n\tbtHashedSimplePairCache();\n\tvirtual ~btHashedSimplePairCache();\n\n\tvoid removeAllPairs();\n\n\tvirtual void* removeOverlappingPair(int indexA, int indexB);\n\n\t// Add a pair and return the new pair. If the pair already exists,\n\t// no new pair is created and the old one is returned.\n\tvirtual btSimplePair* addOverlappingPair(int indexA, int indexB)\n\t{\n#ifdef BT_DEBUG_COLLISION_PAIRS\n\t\tgAddedSimplePairs++;\n#endif\n\n\t\treturn internalAddPair(indexA, indexB);\n\t}\n\n\tvirtual btSimplePair* getOverlappingPairArrayPtr()\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tconst btSimplePair* getOverlappingPairArrayPtr() const\n\t{\n\t\treturn &m_overlappingPairArray[0];\n\t}\n\n\tbtSimplePairArray& getOverlappingPairArray()\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tconst btSimplePairArray& getOverlappingPairArray() const\n\t{\n\t\treturn m_overlappingPairArray;\n\t}\n\n\tbtSimplePair* findPair(int indexA, int indexB);\n\n\tint GetCount() const { return m_overlappingPairArray.size(); }\n\n\tint getNumOverlappingPairs() const\n\t{\n\t\treturn m_overlappingPairArray.size();\n\t}\n\nprivate:\n\tbtSimplePair* internalAddPair(int indexA, int indexB);\n\n\tvoid growTables();\n\n\tSIMD_FORCE_INLINE bool equalsPair(const btSimplePair& pair, int indexA, int indexB)\n\t{\n\t\treturn pair.m_indexA == indexA && pair.m_indexB == indexB;\n\t}\n\n\tSIMD_FORCE_INLINE unsigned int getHash(unsigned int indexA, unsigned int indexB)\n\t{\n\t\tunsigned int key = indexA | (indexB << 16);\n\t\t// Thomas Wang's hash\n\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\t\treturn key;\n\t}\n\n\tSIMD_FORCE_INLINE btSimplePair* internalFindPair(int proxyIdA, int proxyIdB, int hash)\n\t{\n\t\tint index = m_hashTable[hash];\n\n\t\twhile (index != BT_SIMPLE_NULL_PAIR && equalsPair(m_overlappingPairArray[index], proxyIdA, proxyIdB) == false)\n\t\t{\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (index == BT_SIMPLE_NULL_PAIR)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\n\t\tbtAssert(index < m_overlappingPairArray.size());\n\n\t\treturn &m_overlappingPairArray[index];\n\t}\n};\n\n#endif  //BT_HASHED_SIMPLE_PAIR_CACHE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h",
    "content": "\n#ifndef BT_INTERNAL_EDGE_UTILITY_H\n#define BT_INTERNAL_EDGE_UTILITY_H\n\n#include \"LinearMath/btHashMap.h\"\n#include \"LinearMath/btVector3.h\"\n\n#include \"BulletCollision/CollisionShapes/btTriangleInfoMap.h\"\n\n///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges.\n///See also http://code.google.com/p/bullet/issues/detail?id=27\n\nclass btBvhTriangleMeshShape;\nclass btCollisionObject;\nstruct btCollisionObjectWrapper;\nclass btManifoldPoint;\nclass btIDebugDraw;\nclass btHeightfieldTerrainShape;\n\nenum btInternalEdgeAdjustFlags\n{\n\tBT_TRIANGLE_CONVEX_BACKFACE_MODE = 1,\n\tBT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2,  //double sided options are experimental, single sided is recommended\n\tBT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4\n};\n\n///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo'\nvoid btGenerateInternalEdgeInfo(btBvhTriangleMeshShape* trimeshShape, btTriangleInfoMap* triangleInfoMap);\n\nvoid btGenerateInternalEdgeInfo(btHeightfieldTerrainShape* trimeshShape, btTriangleInfoMap* triangleInfoMap);\n\n///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo)\n///If this info map is missing, or the triangle is not store in this map, nothing will be done\nvoid btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObjectWrapper* trimeshColObj0Wrap, const btCollisionObjectWrapper* otherColObj1Wrap, int partId0, int index0, int normalAdjustFlags = 0);\n\n///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly.\n///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap\n//#define BT_INTERNAL_EDGE_DEBUG_DRAW\n\n#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW\nvoid btSetDebugDrawer(btIDebugDraw* debugDrawer);\n#endif  //BT_INTERNAL_EDGE_DEBUG_DRAW\n\n#endif  //BT_INTERNAL_EDGE_UTILITY_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MANIFOLD_RESULT_H\n#define BT_MANIFOLD_RESULT_H\n\nclass btCollisionObject;\nstruct btCollisionObjectWrapper;\n\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\nclass btManifoldPoint;\n\n#include \"BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h\"\n\n#include \"LinearMath/btTransform.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionObject.h\"\n\ntypedef bool (*ContactAddedCallback)(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0Wrap, int partId0, int index0, const btCollisionObjectWrapper* colObj1Wrap, int partId1, int index1);\nextern ContactAddedCallback gContactAddedCallback;\n\n//#define DEBUG_PART_INDEX 1\n\n/// These callbacks are used to customize the algorith that combine restitution, friction, damping, Stiffness\ntypedef btScalar (*CalculateCombinedCallback)(const btCollisionObject* body0, const btCollisionObject* body1);\n\nextern CalculateCombinedCallback gCalculateCombinedRestitutionCallback;\nextern CalculateCombinedCallback gCalculateCombinedFrictionCallback;\nextern CalculateCombinedCallback gCalculateCombinedRollingFrictionCallback;\nextern CalculateCombinedCallback gCalculateCombinedSpinningFrictionCallback;\nextern CalculateCombinedCallback gCalculateCombinedContactDampingCallback;\nextern CalculateCombinedCallback gCalculateCombinedContactStiffnessCallback;\n\n///btManifoldResult is a helper class to manage  contact results.\nclass btManifoldResult : public btDiscreteCollisionDetectorInterface::Result\n{\nprotected:\n\tbtPersistentManifold* m_manifoldPtr;\n\n\tconst btCollisionObjectWrapper* m_body0Wrap;\n\tconst btCollisionObjectWrapper* m_body1Wrap;\n\tint m_partId0;\n\tint m_partId1;\n\tint m_index0;\n\tint m_index1;\n\npublic:\n\tbtManifoldResult()\n\t\t:\n#ifdef DEBUG_PART_INDEX\n\n\t\t  m_partId0(-1),\n\t\t  m_partId1(-1),\n\t\t  m_index0(-1),\n\t\t  m_index1(-1)\n#endif  //DEBUG_PART_INDEX\n\t\t\t  m_closestPointDistanceThreshold(0)\n\t{\n\t}\n\n\tbtManifoldResult(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\n\tvirtual ~btManifoldResult(){};\n\n\tvoid setPersistentManifold(btPersistentManifold* manifoldPtr)\n\t{\n\t\tm_manifoldPtr = manifoldPtr;\n\t}\n\n\tconst btPersistentManifold* getPersistentManifold() const\n\t{\n\t\treturn m_manifoldPtr;\n\t}\n\tbtPersistentManifold* getPersistentManifold()\n\t{\n\t\treturn m_manifoldPtr;\n\t}\n\n\tvirtual void setShapeIdentifiersA(int partId0, int index0)\n\t{\n\t\tm_partId0 = partId0;\n\t\tm_index0 = index0;\n\t}\n\n\tvirtual void setShapeIdentifiersB(int partId1, int index1)\n\t{\n\t\tm_partId1 = partId1;\n\t\tm_index1 = index1;\n\t}\n\n\tvirtual void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth);\n\n\tSIMD_FORCE_INLINE void refreshContactPoints()\n\t{\n\t\tbtAssert(m_manifoldPtr);\n\t\tif (!m_manifoldPtr->getNumContacts())\n\t\t\treturn;\n\n\t\tbool isSwapped = m_manifoldPtr->getBody0() != m_body0Wrap->getCollisionObject();\n\n\t\tif (isSwapped)\n\t\t{\n\t\t\tm_manifoldPtr->refreshContactPoints(m_body1Wrap->getCollisionObject()->getWorldTransform(), m_body0Wrap->getCollisionObject()->getWorldTransform());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_manifoldPtr->refreshContactPoints(m_body0Wrap->getCollisionObject()->getWorldTransform(), m_body1Wrap->getCollisionObject()->getWorldTransform());\n\t\t}\n\t}\n\n\tconst btCollisionObjectWrapper* getBody0Wrap() const\n\t{\n\t\treturn m_body0Wrap;\n\t}\n\tconst btCollisionObjectWrapper* getBody1Wrap() const\n\t{\n\t\treturn m_body1Wrap;\n\t}\n\n\tvoid setBody0Wrap(const btCollisionObjectWrapper* obj0Wrap)\n\t{\n\t\tm_body0Wrap = obj0Wrap;\n\t}\n\n\tvoid setBody1Wrap(const btCollisionObjectWrapper* obj1Wrap)\n\t{\n\t\tm_body1Wrap = obj1Wrap;\n\t}\n\n\tconst btCollisionObject* getBody0Internal() const\n\t{\n\t\treturn m_body0Wrap->getCollisionObject();\n\t}\n\n\tconst btCollisionObject* getBody1Internal() const\n\t{\n\t\treturn m_body1Wrap->getCollisionObject();\n\t}\n\n\tbtScalar m_closestPointDistanceThreshold;\n\n\t/// in the future we can let the user override the methods to combine restitution and friction\n\tstatic btScalar calculateCombinedRestitution(const btCollisionObject* body0, const btCollisionObject* body1);\n\tstatic btScalar calculateCombinedFriction(const btCollisionObject* body0, const btCollisionObject* body1);\n\tstatic btScalar calculateCombinedRollingFriction(const btCollisionObject* body0, const btCollisionObject* body1);\n\tstatic btScalar calculateCombinedSpinningFriction(const btCollisionObject* body0, const btCollisionObject* body1);\n\tstatic btScalar calculateCombinedContactDamping(const btCollisionObject* body0, const btCollisionObject* body1);\n\tstatic btScalar calculateCombinedContactStiffness(const btCollisionObject* body0, const btCollisionObject* body1);\n};\n\n#endif  //BT_MANIFOLD_RESULT_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMULATION_ISLAND_MANAGER_H\n#define BT_SIMULATION_ISLAND_MANAGER_H\n\n#include \"BulletCollision/CollisionDispatch/btUnionFind.h\"\n#include \"btCollisionCreateFunc.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"btCollisionObject.h\"\n\nclass btCollisionObject;\nclass btCollisionWorld;\nclass btDispatcher;\nclass btPersistentManifold;\n\n///SimulationIslandManager creates and handles simulation islands, using btUnionFind\nclass btSimulationIslandManager\n{\n\tbtUnionFind m_unionFind;\n\n\tbtAlignedObjectArray<btPersistentManifold*> m_islandmanifold;\n\tbtAlignedObjectArray<btCollisionObject*> m_islandBodies;\n\n\tbool m_splitIslands;\n\npublic:\n\tbtSimulationIslandManager();\n\tvirtual ~btSimulationIslandManager();\n\n\tvoid initUnionFind(int n);\n\n\tbtUnionFind& getUnionFind() { return m_unionFind; }\n\n\tvirtual void updateActivationState(btCollisionWorld* colWorld, btDispatcher* dispatcher);\n\tvirtual void storeIslandActivationState(btCollisionWorld* world);\n\n\tvoid findUnions(btDispatcher* dispatcher, btCollisionWorld* colWorld);\n\n\tstruct IslandCallback\n\t{\n\t\tvirtual ~IslandCallback(){};\n\n\t\tvirtual void processIsland(btCollisionObject** bodies, int numBodies, class btPersistentManifold** manifolds, int numManifolds, int islandId) = 0;\n\t};\n\n\tvoid buildAndProcessIslands(btDispatcher* dispatcher, btCollisionWorld* collisionWorld, IslandCallback* callback);\n    \n\tvoid buildIslands(btDispatcher* dispatcher, btCollisionWorld* colWorld);\n\n    void processIslands(btDispatcher* dispatcher, btCollisionWorld* collisionWorld, IslandCallback* callback);\n    \n\tbool getSplitIslands()\n\t{\n\t\treturn m_splitIslands;\n\t}\n\tvoid setSplitIslands(bool doSplitIslands)\n\t{\n\t\tm_splitIslands = doSplitIslands;\n\t}\n};\n\n#endif  //BT_SIMULATION_ISLAND_MANAGER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SPHERE_BOX_COLLISION_ALGORITHM_H\n#define BT_SPHERE_BOX_COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\nclass btPersistentManifold;\n#include \"btCollisionDispatcher.h\"\n\n#include \"LinearMath/btVector3.h\"\n\n/// btSphereBoxCollisionAlgorithm  provides sphere-box collision detection.\n/// Other features are frame-coherency (persistent data) and collision response.\nclass btSphereBoxCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbool m_isSwapped;\n\npublic:\n\tbtSphereBoxCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool isSwapped);\n\n\tvirtual ~btSphereBoxCollisionAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tbool getSphereDistance(const btCollisionObjectWrapper* boxObjWrap, btVector3& v3PointOnBox, btVector3& normal, btScalar& penetrationDepth, const btVector3& v3SphereCenter, btScalar fRadius, btScalar maxContactDistance);\n\n\tbtScalar getSpherePenetration(btVector3 const& boxHalfExtent, btVector3 const& sphereRelPos, btVector3& closestPoint, btVector3& normal);\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereBoxCollisionAlgorithm));\n\t\t\tif (!m_swapped)\n\t\t\t{\n\t\t\t\treturn new (mem) btSphereBoxCollisionAlgorithm(0, ci, body0Wrap, body1Wrap, false);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn new (mem) btSphereBoxCollisionAlgorithm(0, ci, body0Wrap, body1Wrap, true);\n\t\t\t}\n\t\t}\n\t};\n};\n\n#endif  //BT_SPHERE_BOX_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H\n#define BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n#include \"btCollisionDispatcher.h\"\n\nclass btPersistentManifold;\n\n/// btSphereSphereCollisionAlgorithm  provides sphere-sphere collision detection.\n/// Other features are frame-coherency (persistent data) and collision response.\n/// Also provides the most basic sample for custom/user btCollisionAlgorithm\nclass btSphereSphereCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\npublic:\n\tbtSphereSphereCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* col0Wrap, const btCollisionObjectWrapper* col1Wrap);\n\n\tbtSphereSphereCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)\n\t\t: btActivatingCollisionAlgorithm(ci) {}\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tvirtual ~btSphereSphereCollisionAlgorithm();\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* col0Wrap, const btCollisionObjectWrapper* col1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereSphereCollisionAlgorithm));\n\t\t\treturn new (mem) btSphereSphereCollisionAlgorithm(0, ci, col0Wrap, col1Wrap);\n\t\t}\n\t};\n};\n\n#endif  //BT_SPHERE_SPHERE_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H\n#define BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H\n\n#include \"btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\nclass btPersistentManifold;\n#include \"btCollisionDispatcher.h\"\n\n/// btSphereSphereCollisionAlgorithm  provides sphere-sphere collision detection.\n/// Other features are frame-coherency (persistent data) and collision response.\n/// Also provides the most basic sample for custom/user btCollisionAlgorithm\nclass btSphereTriangleCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\n\tbool m_ownManifold;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbool m_swapped;\n\npublic:\n\tbtSphereTriangleCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, bool swapped);\n\n\tbtSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)\n\t\t: btActivatingCollisionAlgorithm(ci) {}\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr && m_ownManifold)\n\t\t{\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t\t}\n\t}\n\n\tvirtual ~btSphereTriangleCollisionAlgorithm();\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm));\n\n\t\t\treturn new (mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold, ci, body0Wrap, body1Wrap, m_swapped);\n\t\t}\n\t};\n};\n\n#endif  //BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionDispatch/btUnionFind.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_UNION_FIND_H\n#define BT_UNION_FIND_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#define USE_PATH_COMPRESSION 1\n\n///see for discussion of static island optimizations by Vroonsh here: http://code.google.com/p/bullet/issues/detail?id=406\n#define STATIC_SIMULATION_ISLAND_OPTIMIZATION 1\n\nstruct btElement\n{\n\tint m_id;\n\tint m_sz;\n};\n\n///UnionFind calculates connected subsets\n// Implements weighted Quick Union with path compression\n// optimization: could use short ints instead of ints (halving memory, would limit the number of rigid bodies to 64k, sounds reasonable)\nclass btUnionFind\n{\nprivate:\n\tbtAlignedObjectArray<btElement> m_elements;\n\npublic:\n\tbtUnionFind();\n\t~btUnionFind();\n\n\t//this is a special operation, destroying the content of btUnionFind.\n\t//it sorts the elements, based on island id, in order to make it easy to iterate over islands\n\tvoid sortIslands();\n\n\tvoid reset(int N);\n\n\tSIMD_FORCE_INLINE int getNumElements() const\n\t{\n\t\treturn int(m_elements.size());\n\t}\n\tSIMD_FORCE_INLINE bool isRoot(int x) const\n\t{\n\t\treturn (x == m_elements[x].m_id);\n\t}\n\n\tbtElement& getElement(int index)\n\t{\n\t\treturn m_elements[index];\n\t}\n\tconst btElement& getElement(int index) const\n\t{\n\t\treturn m_elements[index];\n\t}\n\n\tvoid allocate(int N);\n\tvoid Free();\n\n\tint find(int p, int q)\n\t{\n\t\treturn (find(p) == find(q));\n\t}\n\n\tvoid unite(int p, int q)\n\t{\n\t\tint i = find(p), j = find(q);\n\t\tif (i == j)\n\t\t\treturn;\n\n#ifndef USE_PATH_COMPRESSION\n\t\t//weighted quick union, this keeps the 'trees' balanced, and keeps performance of unite O( log(n) )\n\t\tif (m_elements[i].m_sz < m_elements[j].m_sz)\n\t\t{\n\t\t\tm_elements[i].m_id = j;\n\t\t\tm_elements[j].m_sz += m_elements[i].m_sz;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_elements[j].m_id = i;\n\t\t\tm_elements[i].m_sz += m_elements[j].m_sz;\n\t\t}\n#else\n\t\tm_elements[i].m_id = j;\n\t\tm_elements[j].m_sz += m_elements[i].m_sz;\n#endif  //USE_PATH_COMPRESSION\n\t}\n\n\tint find(int x)\n\t{\n\t\t//btAssert(x < m_N);\n\t\t//btAssert(x >= 0);\n\n\t\twhile (x != m_elements[x].m_id)\n\t\t{\n\t\t\t//not really a reason not to use path compression, and it flattens the trees/improves find performance dramatically\n\n#ifdef USE_PATH_COMPRESSION\n\t\t\tconst btElement* elementPtr = &m_elements[m_elements[x].m_id];\n\t\t\tm_elements[x].m_id = elementPtr->m_id;\n\t\t\tx = elementPtr->m_id;\n#else  //\n\t\t\tx = m_elements[x].m_id;\n#endif\n\t\t\t//btAssert(x < m_N);\n\t\t\t//btAssert(x >= 0);\n\t\t}\n\t\treturn x;\n\t}\n};\n\n#endif  //BT_UNION_FIND_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btBox2dShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_OBB_BOX_2D_SHAPE_H\n#define BT_OBB_BOX_2D_SHAPE_H\n\n#include \"BulletCollision/CollisionShapes/btPolyhedralConvexShape.h\"\n#include \"BulletCollision/CollisionShapes/btCollisionMargin.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btMinMax.h\"\n\n///The btBox2dShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space.\nATTRIBUTE_ALIGNED16(class)\nbtBox2dShape : public btPolyhedralConvexShape\n{\n\t//btVector3\tm_boxHalfExtents1; //use m_implicitShapeDimensions instead\n\n\tbtVector3 m_centroid;\n\tbtVector3 m_vertices[4];\n\tbtVector3 m_normals[4];\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtVector3 getHalfExtentsWithMargin() const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\thalfExtents += margin;\n\t\treturn halfExtents;\n\t}\n\n\tconst btVector3& getHalfExtentsWithoutMargin() const\n\t{\n\t\treturn m_implicitShapeDimensions;  //changed in Bullet 2.63: assume the scaling and margin are included\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\thalfExtents += margin;\n\n\t\treturn btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const\n\t{\n\t\tconst btVector3& halfExtents = getHalfExtentsWithoutMargin();\n\n\t\treturn btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t}\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const\n\t{\n\t\tconst btVector3& halfExtents = getHalfExtentsWithoutMargin();\n\n\t\tfor (int i = 0; i < numVectors; i++)\n\t\t{\n\t\t\tconst btVector3& vec = vectors[i];\n\t\t\tsupportVerticesOut[i].setValue(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t\t\t\t\t   btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t\t\t\t\t   btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t\t}\n\t}\n\n\t///a btBox2dShape is a flat 2D box in the X-Y plane (Z extents are zero)\n\tbtBox2dShape(const btVector3& boxHalfExtents)\n\t\t: btPolyhedralConvexShape(),\n\t\t  m_centroid(0, 0, 0)\n\t{\n\t\tm_vertices[0].setValue(-boxHalfExtents.getX(), -boxHalfExtents.getY(), 0);\n\t\tm_vertices[1].setValue(boxHalfExtents.getX(), -boxHalfExtents.getY(), 0);\n\t\tm_vertices[2].setValue(boxHalfExtents.getX(), boxHalfExtents.getY(), 0);\n\t\tm_vertices[3].setValue(-boxHalfExtents.getX(), boxHalfExtents.getY(), 0);\n\n\t\tm_normals[0].setValue(0, -1, 0);\n\t\tm_normals[1].setValue(1, 0, 0);\n\t\tm_normals[2].setValue(0, 1, 0);\n\t\tm_normals[3].setValue(-1, 0, 0);\n\n\t\tbtScalar minDimension = boxHalfExtents.getX();\n\t\tif (minDimension > boxHalfExtents.getY())\n\t\t\tminDimension = boxHalfExtents.getY();\n\n\t\tm_shapeType = BOX_2D_SHAPE_PROXYTYPE;\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\tm_implicitShapeDimensions = (boxHalfExtents * m_localScaling) - margin;\n\n\t\tsetSafeMargin(minDimension);\n\t};\n\n\tvirtual void setMargin(btScalar collisionMargin)\n\t{\n\t\t//correct the m_implicitShapeDimensions for the margin\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\n\t\tbtConvexInternalShape::setMargin(collisionMargin);\n\t\tbtVector3 newMargin(getMargin(), getMargin(), getMargin());\n\t\tm_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;\n\t}\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\t\tbtVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;\n\n\t\tbtConvexInternalShape::setLocalScaling(scaling);\n\n\t\tm_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tint getVertexCount() const\n\t{\n\t\treturn 4;\n\t}\n\n\tvirtual int getNumVertices() const\n\t{\n\t\treturn 4;\n\t}\n\n\tconst btVector3* getVertices() const\n\t{\n\t\treturn &m_vertices[0];\n\t}\n\n\tconst btVector3* getNormals() const\n\t{\n\t\treturn &m_normals[0];\n\t}\n\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const\n\t{\n\t\t//this plane might not be aligned...\n\t\tbtVector4 plane;\n\t\tgetPlaneEquation(plane, i);\n\t\tplaneNormal = btVector3(plane.getX(), plane.getY(), plane.getZ());\n\t\tplaneSupport = localGetSupportingVertex(-planeNormal);\n\t}\n\n\tconst btVector3& getCentroid() const\n\t{\n\t\treturn m_centroid;\n\t}\n\n\tvirtual int getNumPlanes() const\n\t{\n\t\treturn 6;\n\t}\n\n\tvirtual int getNumEdges() const\n\t{\n\t\treturn 12;\n\t}\n\n\tvirtual void getVertex(int i, btVector3& vtx) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\n\t\tvtx = btVector3(\n\t\t\thalfExtents.x() * (1 - (i & 1)) - halfExtents.x() * (i & 1),\n\t\t\thalfExtents.y() * (1 - ((i & 2) >> 1)) - halfExtents.y() * ((i & 2) >> 1),\n\t\t\thalfExtents.z() * (1 - ((i & 4) >> 2)) - halfExtents.z() * ((i & 4) >> 2));\n\t}\n\n\tvirtual void getPlaneEquation(btVector4 & plane, int i) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\n\t\tswitch (i)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tplane.setValue(btScalar(1.), btScalar(0.), btScalar(0.), -halfExtents.x());\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tplane.setValue(btScalar(-1.), btScalar(0.), btScalar(0.), -halfExtents.x());\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(1.), btScalar(0.), -halfExtents.y());\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(-1.), btScalar(0.), -halfExtents.y());\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(0.), btScalar(1.), -halfExtents.z());\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(0.), btScalar(-1.), -halfExtents.z());\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\t}\n\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const\n\t//virtual void getEdge(int i,Edge& edge) const\n\t{\n\t\tint edgeVert0 = 0;\n\t\tint edgeVert1 = 0;\n\n\t\tswitch (i)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 1;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 2;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tedgeVert0 = 1;\n\t\t\t\tedgeVert1 = 3;\n\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tedgeVert0 = 2;\n\t\t\t\tedgeVert1 = 3;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 4;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tedgeVert0 = 1;\n\t\t\t\tedgeVert1 = 5;\n\n\t\t\t\tbreak;\n\t\t\tcase 6:\n\t\t\t\tedgeVert0 = 2;\n\t\t\t\tedgeVert1 = 6;\n\t\t\t\tbreak;\n\t\t\tcase 7:\n\t\t\t\tedgeVert0 = 3;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\tedgeVert0 = 4;\n\t\t\t\tedgeVert1 = 5;\n\t\t\t\tbreak;\n\t\t\tcase 9:\n\t\t\t\tedgeVert0 = 4;\n\t\t\t\tedgeVert1 = 6;\n\t\t\t\tbreak;\n\t\t\tcase 10:\n\t\t\t\tedgeVert0 = 5;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tcase 11:\n\t\t\t\tedgeVert0 = 6;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\n\t\tgetVertex(edgeVert0, pa);\n\t\tgetVertex(edgeVert1, pb);\n\t}\n\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\n\t\t//btScalar minDist = 2*tolerance;\n\n\t\tbool result = (pt.x() <= (halfExtents.x() + tolerance)) &&\n\t\t\t\t\t  (pt.x() >= (-halfExtents.x() - tolerance)) &&\n\t\t\t\t\t  (pt.y() <= (halfExtents.y() + tolerance)) &&\n\t\t\t\t\t  (pt.y() >= (-halfExtents.y() - tolerance)) &&\n\t\t\t\t\t  (pt.z() <= (halfExtents.z() + tolerance)) &&\n\t\t\t\t\t  (pt.z() >= (-halfExtents.z() - tolerance));\n\n\t\treturn result;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Box2d\";\n\t}\n\n\tvirtual int getNumPreferredPenetrationDirections() const\n\t{\n\t\treturn 6;\n\t}\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const\n\t{\n\t\tswitch (index)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tpenetrationVector.setValue(btScalar(1.), btScalar(0.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tpenetrationVector.setValue(btScalar(-1.), btScalar(0.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(1.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(-1.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(0.), btScalar(1.));\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(0.), btScalar(-1.));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\t}\n};\n\n#endif  //BT_OBB_BOX_2D_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btBoxShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_OBB_BOX_MINKOWSKI_H\n#define BT_OBB_BOX_MINKOWSKI_H\n\n#include \"btPolyhedralConvexShape.h\"\n#include \"btCollisionMargin.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btMinMax.h\"\n\n///The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by half extents, in local shape coordinates. When used as part of a btCollisionObject or btRigidBody it will be an oriented box in world space.\nATTRIBUTE_ALIGNED16(class)\nbtBoxShape : public btPolyhedralConvexShape\n{\n\t//btVector3\tm_boxHalfExtents1; //use m_implicitShapeDimensions instead\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtVector3 getHalfExtentsWithMargin() const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\thalfExtents += margin;\n\t\treturn halfExtents;\n\t}\n\n\tconst btVector3& getHalfExtentsWithoutMargin() const\n\t{\n\t\treturn m_implicitShapeDimensions;  //scaling is included, margin is not\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\thalfExtents += margin;\n\n\t\treturn btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const\n\t{\n\t\tconst btVector3& halfExtents = getHalfExtentsWithoutMargin();\n\n\t\treturn btVector3(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t}\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const\n\t{\n\t\tconst btVector3& halfExtents = getHalfExtentsWithoutMargin();\n\n\t\tfor (int i = 0; i < numVectors; i++)\n\t\t{\n\t\t\tconst btVector3& vec = vectors[i];\n\t\t\tsupportVerticesOut[i].setValue(btFsels(vec.x(), halfExtents.x(), -halfExtents.x()),\n\t\t\t\t\t\t\t\t\t\t   btFsels(vec.y(), halfExtents.y(), -halfExtents.y()),\n\t\t\t\t\t\t\t\t\t\t   btFsels(vec.z(), halfExtents.z(), -halfExtents.z()));\n\t\t}\n\t}\n\n\tbtBoxShape(const btVector3& boxHalfExtents);\n\n\tvirtual void setMargin(btScalar collisionMargin)\n\t{\n\t\t//correct the m_implicitShapeDimensions for the margin\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\n\t\tbtConvexInternalShape::setMargin(collisionMargin);\n\t\tbtVector3 newMargin(getMargin(), getMargin(), getMargin());\n\t\tm_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;\n\t}\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\t\tbtVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;\n\n\t\tbtConvexInternalShape::setLocalScaling(scaling);\n\n\t\tm_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const\n\t{\n\t\t//this plane might not be aligned...\n\t\tbtVector4 plane;\n\t\tgetPlaneEquation(plane, i);\n\t\tplaneNormal = btVector3(plane.getX(), plane.getY(), plane.getZ());\n\t\tplaneSupport = localGetSupportingVertex(-planeNormal);\n\t}\n\n\tvirtual int getNumPlanes() const\n\t{\n\t\treturn 6;\n\t}\n\n\tvirtual int getNumVertices() const\n\t{\n\t\treturn 8;\n\t}\n\n\tvirtual int getNumEdges() const\n\t{\n\t\treturn 12;\n\t}\n\n\tvirtual void getVertex(int i, btVector3& vtx) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithMargin();\n\n\t\tvtx = btVector3(\n\t\t\thalfExtents.x() * (1 - (i & 1)) - halfExtents.x() * (i & 1),\n\t\t\thalfExtents.y() * (1 - ((i & 2) >> 1)) - halfExtents.y() * ((i & 2) >> 1),\n\t\t\thalfExtents.z() * (1 - ((i & 4) >> 2)) - halfExtents.z() * ((i & 4) >> 2));\n\t}\n\n\tvirtual void getPlaneEquation(btVector4 & plane, int i) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\n\t\tswitch (i)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tplane.setValue(btScalar(1.), btScalar(0.), btScalar(0.), -halfExtents.x());\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tplane.setValue(btScalar(-1.), btScalar(0.), btScalar(0.), -halfExtents.x());\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(1.), btScalar(0.), -halfExtents.y());\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(-1.), btScalar(0.), -halfExtents.y());\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(0.), btScalar(1.), -halfExtents.z());\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tplane.setValue(btScalar(0.), btScalar(0.), btScalar(-1.), -halfExtents.z());\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\t}\n\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const\n\t//virtual void getEdge(int i,Edge& edge) const\n\t{\n\t\tint edgeVert0 = 0;\n\t\tint edgeVert1 = 0;\n\n\t\tswitch (i)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 1;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 2;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tedgeVert0 = 1;\n\t\t\t\tedgeVert1 = 3;\n\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tedgeVert0 = 2;\n\t\t\t\tedgeVert1 = 3;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tedgeVert0 = 0;\n\t\t\t\tedgeVert1 = 4;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tedgeVert0 = 1;\n\t\t\t\tedgeVert1 = 5;\n\n\t\t\t\tbreak;\n\t\t\tcase 6:\n\t\t\t\tedgeVert0 = 2;\n\t\t\t\tedgeVert1 = 6;\n\t\t\t\tbreak;\n\t\t\tcase 7:\n\t\t\t\tedgeVert0 = 3;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tcase 8:\n\t\t\t\tedgeVert0 = 4;\n\t\t\t\tedgeVert1 = 5;\n\t\t\t\tbreak;\n\t\t\tcase 9:\n\t\t\t\tedgeVert0 = 4;\n\t\t\t\tedgeVert1 = 6;\n\t\t\t\tbreak;\n\t\t\tcase 10:\n\t\t\t\tedgeVert0 = 5;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tcase 11:\n\t\t\t\tedgeVert0 = 6;\n\t\t\t\tedgeVert1 = 7;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\n\t\tgetVertex(edgeVert0, pa);\n\t\tgetVertex(edgeVert1, pb);\n\t}\n\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\n\t\t//btScalar minDist = 2*tolerance;\n\n\t\tbool result = (pt.x() <= (halfExtents.x() + tolerance)) &&\n\t\t\t\t\t  (pt.x() >= (-halfExtents.x() - tolerance)) &&\n\t\t\t\t\t  (pt.y() <= (halfExtents.y() + tolerance)) &&\n\t\t\t\t\t  (pt.y() >= (-halfExtents.y() - tolerance)) &&\n\t\t\t\t\t  (pt.z() <= (halfExtents.z() + tolerance)) &&\n\t\t\t\t\t  (pt.z() >= (-halfExtents.z() - tolerance));\n\n\t\treturn result;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Box\";\n\t}\n\n\tvirtual int getNumPreferredPenetrationDirections() const\n\t{\n\t\treturn 6;\n\t}\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const\n\t{\n\t\tswitch (index)\n\t\t{\n\t\t\tcase 0:\n\t\t\t\tpenetrationVector.setValue(btScalar(1.), btScalar(0.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tpenetrationVector.setValue(btScalar(-1.), btScalar(0.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(1.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(-1.), btScalar(0.));\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(0.), btScalar(1.));\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\tpenetrationVector.setValue(btScalar(0.), btScalar(0.), btScalar(-1.));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbtAssert(0);\n\t\t}\n\t}\n};\n\n#endif  //BT_OBB_BOX_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BVH_TRIANGLE_MESH_SHAPE_H\n#define BT_BVH_TRIANGLE_MESH_SHAPE_H\n\n#include \"btTriangleMeshShape.h\"\n#include \"btOptimizedBvh.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n#include \"btTriangleInfoMap.h\"\n\n///The btBvhTriangleMeshShape is a static-triangle mesh shape, it can only be used for fixed/non-moving objects.\n///If you required moving concave triangle meshes, it is recommended to perform convex decomposition\n///using HACD, see Bullet/Demos/ConvexDecompositionDemo.\n///Alternatively, you can use btGimpactMeshShape for moving concave triangle meshes.\n///btBvhTriangleMeshShape has several optimizations, such as bounding volume hierarchy and\n///cache friendly traversal for PlayStation 3 Cell SPU.\n///It is recommended to enable useQuantizedAabbCompression for better memory usage.\n///It takes a triangle mesh as input, for example a btTriangleMesh or btTriangleIndexVertexArray. The btBvhTriangleMeshShape class allows for triangle mesh deformations by a refit or partialRefit method.\n///Instead of building the bounding volume hierarchy acceleration structure, it is also possible to serialize (save) and deserialize (load) the structure from disk.\n///See Demos\\ConcaveDemo\\ConcavePhysicsDemo.cpp for an example.\nATTRIBUTE_ALIGNED16(class)\nbtBvhTriangleMeshShape : public btTriangleMeshShape\n{\n\tbtOptimizedBvh* m_bvh;\n\tbtTriangleInfoMap* m_triangleInfoMap;\n\n\tbool m_useQuantizedAabbCompression;\n\tbool m_ownsBvh;\n#ifdef __clang__\n\tbool m_pad[11] __attribute__((unused));  ////need padding due to alignment\n#else\n\tbool m_pad[11];  ////need padding due to alignment\n#endif\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtBvhTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true);\n\n\t///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb\n\tbtBvhTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax, bool buildBvh = true);\n\n\tvirtual ~btBvhTriangleMeshShape();\n\n\tbool getOwnsBvh() const\n\t{\n\t\treturn m_ownsBvh;\n\t}\n\n\tvoid performRaycast(btTriangleCallback * callback, const btVector3& raySource, const btVector3& rayTarget);\n\tvoid performConvexcast(btTriangleCallback * callback, const btVector3& boxSource, const btVector3& boxTarget, const btVector3& boxMin, const btVector3& boxMax);\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvoid refitTree(const btVector3& aabbMin, const btVector3& aabbMax);\n\n\t///for a fast incremental refit of parts of the tree. Note: the entire AABB of the tree will become more conservative, it never shrinks\n\tvoid partialRefitTree(const btVector3& aabbMin, const btVector3& aabbMax);\n\n\t//debugging\n\tvirtual const char* getName() const { return \"BVHTRIANGLEMESH\"; }\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tbtOptimizedBvh* getOptimizedBvh()\n\t{\n\t\treturn m_bvh;\n\t}\n\n\tvoid setOptimizedBvh(btOptimizedBvh * bvh, const btVector3& localScaling = btVector3(1, 1, 1));\n\n\tvoid buildOptimizedBvh();\n\n\tbool usesQuantizedAabbCompression() const\n\t{\n\t\treturn m_useQuantizedAabbCompression;\n\t}\n\n\tvoid setTriangleInfoMap(btTriangleInfoMap * triangleInfoMap)\n\t{\n\t\tm_triangleInfoMap = triangleInfoMap;\n\t}\n\n\tconst btTriangleInfoMap* getTriangleInfoMap() const\n\t{\n\t\treturn m_triangleInfoMap;\n\t}\n\n\tbtTriangleInfoMap* getTriangleInfoMap()\n\t{\n\t\treturn m_triangleInfoMap;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tvirtual void serializeSingleBvh(btSerializer * serializer) const;\n\n\tvirtual void serializeSingleTriangleInfoMap(btSerializer * serializer) const;\n};\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtTriangleMeshShapeData\n{\n\tbtCollisionShapeData\tm_collisionShapeData;\n\n\tbtStridingMeshInterfaceData m_meshInterface;\n\n\tbtQuantizedBvhFloatData\t\t*m_quantizedFloatBvh;\n\tbtQuantizedBvhDoubleData\t*m_quantizedDoubleBvh;\n\n\tbtTriangleInfoMapData\t*m_triangleInfoMap;\n\t\n\tfloat\tm_collisionMargin;\n\n\tchar m_pad3[4];\n\t\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btBvhTriangleMeshShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btTriangleMeshShapeData);\n}\n\n#endif  //BT_BVH_TRIANGLE_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CAPSULE_SHAPE_H\n#define BT_CAPSULE_SHAPE_H\n\n#include \"btConvexInternalShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n///The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned around the X axis and btCapsuleShapeZ around the Z axis.\n///The total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.\n///The btCapsuleShape is a convex hull of two spheres. The btMultiSphereShape is a more general collision shape that takes the convex hull of multiple sphere, so it can also represent a capsule when just using two spheres.\nATTRIBUTE_ALIGNED16(class)\nbtCapsuleShape : public btConvexInternalShape\n{\nprotected:\n\tint m_upAxis;\n\nprotected:\n\t///only used for btCapsuleShapeZ and btCapsuleShapeX subclasses.\n\tbtCapsuleShape() : btConvexInternalShape() { m_shapeType = CAPSULE_SHAPE_PROXYTYPE; };\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtCapsuleShape(btScalar radius, btScalar height);\n\n\t///CollisionShape Interface\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\t/// btConvexShape Interface\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void setMargin(btScalar collisionMargin)\n\t{\n\t\t//don't override the margin for capsules, their entire radius == margin\n\t\t(void)collisionMargin;\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtVector3 halfExtents(getRadius(), getRadius(), getRadius());\n\t\thalfExtents[m_upAxis] = getRadius() + getHalfHeight();\n\t\tbtMatrix3x3 abs_b = t.getBasis().absolute();\n\t\tbtVector3 center = t.getOrigin();\n\t\tbtVector3 extent = halfExtents.dot3(abs_b[0], abs_b[1], abs_b[2]);\n\n\t\taabbMin = center - extent;\n\t\taabbMax = center + extent;\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CapsuleShape\";\n\t}\n\n\tint getUpAxis() const\n\t{\n\t\treturn m_upAxis;\n\t}\n\n\tbtScalar getRadius() const\n\t{\n\t\tint radiusAxis = (m_upAxis + 2) % 3;\n\t\treturn m_implicitShapeDimensions[radiusAxis];\n\t}\n\n\tbtScalar getHalfHeight() const\n\t{\n\t\treturn m_implicitShapeDimensions[m_upAxis];\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tbtVector3 unScaledImplicitShapeDimensions = m_implicitShapeDimensions / m_localScaling;\n\t\tbtConvexInternalShape::setLocalScaling(scaling);\n\t\tm_implicitShapeDimensions = (unScaledImplicitShapeDimensions * scaling);\n\t\t//update m_collisionMargin, since entire radius==margin\n\t\tint radiusAxis = (m_upAxis + 2) % 3;\n\t\tm_collisionMargin = m_implicitShapeDimensions[radiusAxis];\n\t}\n\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\tbtVector3 aniDir(0, 0, 0);\n\t\taniDir[getUpAxis()] = 1;\n\t\treturn aniDir;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tSIMD_FORCE_INLINE void deSerializeFloat(struct btCapsuleShapeData * dataBuffer);\n};\n\n///btCapsuleShapeX represents a capsule around the Z axis\n///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.\nclass btCapsuleShapeX : public btCapsuleShape\n{\npublic:\n\tbtCapsuleShapeX(btScalar radius, btScalar height);\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CapsuleX\";\n\t}\n};\n\n///btCapsuleShapeZ represents a capsule around the Z axis\n///the total height is height+2*radius, so the height is just the height between the center of each 'sphere' of the capsule caps.\nclass btCapsuleShapeZ : public btCapsuleShape\n{\npublic:\n\tbtCapsuleShapeZ(btScalar radius, btScalar height);\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CapsuleZ\";\n\t}\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btCapsuleShapeData\n{\n\tbtConvexInternalShapeData m_convexInternalShapeData;\n\n\tint m_upAxis;\n\n\tchar m_padding[4];\n};\n\nSIMD_FORCE_INLINE int btCapsuleShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btCapsuleShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btCapsuleShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtCapsuleShapeData* shapeData = (btCapsuleShapeData*)dataBuffer;\n\n\tbtConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer);\n\n\tshapeData->m_upAxis = m_upAxis;\n\n\t// Fill padding with zeros to appease msan.\n\tshapeData->m_padding[0] = 0;\n\tshapeData->m_padding[1] = 0;\n\tshapeData->m_padding[2] = 0;\n\tshapeData->m_padding[3] = 0;\n\n\treturn \"btCapsuleShapeData\";\n}\n\nSIMD_FORCE_INLINE void btCapsuleShape::deSerializeFloat(btCapsuleShapeData* dataBuffer)\n{\n\tm_implicitShapeDimensions.deSerializeFloat(dataBuffer->m_convexInternalShapeData.m_implicitShapeDimensions);\n\tm_collisionMargin = dataBuffer->m_convexInternalShapeData.m_collisionMargin;\n\tm_localScaling.deSerializeFloat(dataBuffer->m_convexInternalShapeData.m_localScaling);\n\t//it is best to already pre-allocate the matching btCapsuleShape*(X/Z) version to match m_upAxis\n\tm_upAxis = dataBuffer->m_upAxis;\n}\n\n#endif  //BT_CAPSULE_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_MARGIN_H\n#define BT_COLLISION_MARGIN_H\n\n///The CONVEX_DISTANCE_MARGIN is a default collision margin for convex collision shapes derived from btConvexInternalShape.\n///This collision margin is used by Gjk and some other algorithms\n///Note that when creating small objects, you need to make sure to set a smaller collision margin, using the 'setMargin' API\n#define CONVEX_DISTANCE_MARGIN btScalar(0.04)  // btScalar(0.1)//;//btScalar(0.01)\n\n#endif  //BT_COLLISION_MARGIN_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btCollisionShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COLLISION_SHAPE_H\n#define BT_COLLISION_SHAPE_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  //for the shape types\nclass btSerializer;\n\n///The btCollisionShape class provides an interface for collision shapes that can be shared among btCollisionObjects.\nATTRIBUTE_ALIGNED16(class)\nbtCollisionShape\n{\nprotected:\n\tint m_shapeType;\n\tvoid* m_userPointer;\n\tint m_userIndex;\n\tint m_userIndex2;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtCollisionShape() : m_shapeType(INVALID_SHAPE_PROXYTYPE), m_userPointer(0), m_userIndex(-1), m_userIndex2(-1)\n\t{\n\t}\n\n\tvirtual ~btCollisionShape()\n\t{\n\t}\n\n\t///getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const = 0;\n\n\tvirtual void getBoundingSphere(btVector3 & center, btScalar & radius) const;\n\n\t///getAngularMotionDisc returns the maximum radius needed for Conservative Advancement to handle time-of-impact with rotations.\n\tvirtual btScalar getAngularMotionDisc() const;\n\n\tvirtual btScalar getContactBreakingThreshold(btScalar defaultContactThresholdFactor) const;\n\n\t///calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0..timeStep)\n\t///result is conservative\n\tvoid calculateTemporalAabb(const btTransform& curTrans, const btVector3& linvel, const btVector3& angvel, btScalar timeStep, btVector3& temporalAabbMin, btVector3& temporalAabbMax) const;\n\n\tSIMD_FORCE_INLINE bool isPolyhedral() const\n\t{\n\t\treturn btBroadphaseProxy::isPolyhedral(getShapeType());\n\t}\n\n\tSIMD_FORCE_INLINE bool isConvex2d() const\n\t{\n\t\treturn btBroadphaseProxy::isConvex2d(getShapeType());\n\t}\n\n\tSIMD_FORCE_INLINE bool isConvex() const\n\t{\n\t\treturn btBroadphaseProxy::isConvex(getShapeType());\n\t}\n\tSIMD_FORCE_INLINE bool isNonMoving() const\n\t{\n\t\treturn btBroadphaseProxy::isNonMoving(getShapeType());\n\t}\n\tSIMD_FORCE_INLINE bool isConcave() const\n\t{\n\t\treturn btBroadphaseProxy::isConcave(getShapeType());\n\t}\n\tSIMD_FORCE_INLINE bool isCompound() const\n\t{\n\t\treturn btBroadphaseProxy::isCompound(getShapeType());\n\t}\n\n\tSIMD_FORCE_INLINE bool isSoftBody() const\n\t{\n\t\treturn btBroadphaseProxy::isSoftBody(getShapeType());\n\t}\n\n\t///isInfinite is used to catch simulation error (aabb check)\n\tSIMD_FORCE_INLINE bool isInfinite() const\n\t{\n\t\treturn btBroadphaseProxy::isInfinite(getShapeType());\n\t}\n\n#ifndef __SPU__\n\tvirtual void setLocalScaling(const btVector3& scaling) = 0;\n\tvirtual const btVector3& getLocalScaling() const = 0;\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const = 0;\n\n\t//debugging support\n\tvirtual const char* getName() const = 0;\n#endif  //__SPU__\n\n\tint getShapeType() const\n\t{\n\t\treturn m_shapeType;\n\t}\n\n\t///the getAnisotropicRollingFrictionDirection can be used in combination with setAnisotropicFriction\n\t///See Bullet/Demos/RollingFrictionDemo for an example\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\treturn btVector3(1, 1, 1);\n\t}\n\tvirtual void setMargin(btScalar margin) = 0;\n\tvirtual btScalar getMargin() const = 0;\n\n\t///optional user data pointer\n\tvoid setUserPointer(void* userPtr)\n\t{\n\t\tm_userPointer = userPtr;\n\t}\n\n\tvoid* getUserPointer() const\n\t{\n\t\treturn m_userPointer;\n\t}\n\tvoid setUserIndex(int index)\n\t{\n\t\tm_userIndex = index;\n\t}\n\n\tint getUserIndex() const\n\t{\n\t\treturn m_userIndex;\n\t}\n\n\tvoid setUserIndex2(int index)\n\t{\n\t\tm_userIndex2 = index;\n\t}\n\n\tint getUserIndex2() const\n\t{\n\t\treturn m_userIndex2;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tvirtual void serializeSingleShape(btSerializer * serializer) const;\n};\n\n// clang-format off\n// parser needs * with the name\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtCollisionShapeData\n{\n\tchar\t*m_name;\n\tint\t\tm_shapeType;\n\tchar\tm_padding[4];\n};\n// clang-format on\nSIMD_FORCE_INLINE int btCollisionShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btCollisionShapeData);\n}\n\n#endif  //BT_COLLISION_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btCompoundShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_COMPOUND_SHAPE_H\n#define BT_COMPOUND_SHAPE_H\n\n#include \"btCollisionShape.h\"\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"btCollisionMargin.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n//class btOptimizedBvh;\nstruct btDbvt;\n\nATTRIBUTE_ALIGNED16(struct)\nbtCompoundShapeChild\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtTransform m_transform;\n\tbtCollisionShape* m_childShape;\n\tint m_childShapeType;\n\tbtScalar m_childMargin;\n\tstruct btDbvtNode* m_node;\n};\n\nSIMD_FORCE_INLINE bool operator==(const btCompoundShapeChild& c1, const btCompoundShapeChild& c2)\n{\n\treturn (c1.m_transform == c2.m_transform &&\n\t\t\tc1.m_childShape == c2.m_childShape &&\n\t\t\tc1.m_childShapeType == c2.m_childShapeType &&\n\t\t\tc1.m_childMargin == c2.m_childMargin);\n}\n\n/// The btCompoundShape allows to store multiple other btCollisionShapes\n/// This allows for moving concave collision objects. This is more general then the static concave btBvhTriangleMeshShape.\n/// It has an (optional) dynamic aabb tree to accelerate early rejection tests.\n/// @todo: This aabb tree can also be use to speed up ray tests on btCompoundShape, see http://code.google.com/p/bullet/issues/detail?id=25\n/// Currently, removal of child shapes is only supported when disabling the aabb tree (pass 'false' in the constructor of btCompoundShape)\nATTRIBUTE_ALIGNED16(class)\nbtCompoundShape : public btCollisionShape\n{\nprotected:\n\tbtAlignedObjectArray<btCompoundShapeChild> m_children;\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\n\tbtDbvt* m_dynamicAabbTree;\n\n\t///increment m_updateRevision when adding/removing/replacing child shapes, so that some caches can be updated\n\tint m_updateRevision;\n\n\tbtScalar m_collisionMargin;\n\n\tbtVector3 m_localScaling;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\texplicit btCompoundShape(bool enableDynamicAabbTree = true, const int initialChildCapacity = 0);\n\n\tvirtual ~btCompoundShape();\n\n\tvoid addChildShape(const btTransform& localTransform, btCollisionShape* shape);\n\n\t/// Remove all children shapes that contain the specified shape\n\tvirtual void removeChildShape(btCollisionShape * shape);\n\n\tvoid removeChildShapeByIndex(int childShapeindex);\n\n\tint getNumChildShapes() const\n\t{\n\t\treturn int(m_children.size());\n\t}\n\n\tbtCollisionShape* getChildShape(int index)\n\t{\n\t\treturn m_children[index].m_childShape;\n\t}\n\tconst btCollisionShape* getChildShape(int index) const\n\t{\n\t\treturn m_children[index].m_childShape;\n\t}\n\n\tbtTransform& getChildTransform(int index)\n\t{\n\t\treturn m_children[index].m_transform;\n\t}\n\tconst btTransform& getChildTransform(int index) const\n\t{\n\t\treturn m_children[index].m_transform;\n\t}\n\n\t///set a new transform for a child, and update internal data structures (local aabb and dynamic tree)\n\tvoid updateChildTransform(int childIndex, const btTransform& newChildTransform, bool shouldRecalculateLocalAabb = true);\n\n\tbtCompoundShapeChild* getChildList()\n\t{\n\t\treturn &m_children[0];\n\t}\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\t/** Re-calculate the local Aabb. Is called at the end of removeChildShapes. \n\tUse this yourself if you modify the children or their transforms. */\n\tvirtual void recalculateLocalAabb();\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual const btVector3& getLocalScaling() const\n\t{\n\t\treturn m_localScaling;\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void setMargin(btScalar margin)\n\t{\n\t\tm_collisionMargin = margin;\n\t}\n\tvirtual btScalar getMargin() const\n\t{\n\t\treturn m_collisionMargin;\n\t}\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Compound\";\n\t}\n\n\tconst btDbvt* getDynamicAabbTree() const\n\t{\n\t\treturn m_dynamicAabbTree;\n\t}\n\n\tbtDbvt* getDynamicAabbTree()\n\t{\n\t\treturn m_dynamicAabbTree;\n\t}\n\n\tvoid createAabbTreeFromChildren();\n\n\t///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia\n\t///and the center of mass to the current coordinate system. \"masses\" points to an array of masses of the children. The resulting transform\n\t///\"principal\" has to be applied inversely to all children transforms in order for the local coordinate system of the compound\n\t///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform\n\t///of the collision object by the principal transform.\n\tvoid calculatePrincipalAxisTransform(const btScalar* masses, btTransform& principal, btVector3& inertia) const;\n\n\tint getUpdateRevision() const\n\t{\n\t\treturn m_updateRevision;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btCompoundShapeChildData\n{\n\tbtTransformFloatData\tm_transform;\n\tbtCollisionShapeData\t*m_childShape;\n\tint\t\t\t\t\t\tm_childShapeType;\n\tfloat\t\t\t\t\tm_childMargin;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtCompoundShapeData\n{\n\tbtCollisionShapeData\t\tm_collisionShapeData;\n\n\tbtCompoundShapeChildData\t*m_childShapePtr;\n\n\tint\t\t\t\t\t\t\tm_numChildShapes;\n\n\tfloat\tm_collisionMargin;\n\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btCompoundShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btCompoundShapeData);\n}\n\n#endif  //BT_COMPOUND_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConcaveShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONCAVE_SHAPE_H\n#define BT_CONCAVE_SHAPE_H\n\n#include \"btCollisionShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n#include \"btTriangleCallback.h\"\n\n/// PHY_ScalarType enumerates possible scalar types.\n/// See the btStridingMeshInterface or btHeightfieldTerrainShape for its use\ntypedef enum PHY_ScalarType\n{\n\tPHY_FLOAT,\n\tPHY_DOUBLE,\n\tPHY_INTEGER,\n\tPHY_SHORT,\n\tPHY_FIXEDPOINT88,\n\tPHY_UCHAR\n} PHY_ScalarType;\n\n///The btConcaveShape class provides an interface for non-moving (static) concave shapes.\n///It has been implemented by the btStaticPlaneShape, btBvhTriangleMeshShape and btHeightfieldTerrainShape.\nATTRIBUTE_ALIGNED16(class)\nbtConcaveShape : public btCollisionShape\n{\nprotected:\n\tbtScalar m_collisionMargin;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConcaveShape();\n\n\tvirtual ~btConcaveShape();\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const = 0;\n\n\tvirtual btScalar getMargin() const\n\t{\n\t\treturn m_collisionMargin;\n\t}\n\tvirtual void setMargin(btScalar collisionMargin)\n\t{\n\t\tm_collisionMargin = collisionMargin;\n\t}\n};\n\n#endif  //BT_CONCAVE_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConeShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONE_MINKOWSKI_H\n#define BT_CONE_MINKOWSKI_H\n\n#include \"btConvexInternalShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n///The btConeShape implements a cone shape primitive, centered around the origin and aligned with the Y axis. The btConeShapeX is aligned around the X axis and btConeShapeZ around the Z axis.\nATTRIBUTE_ALIGNED16(class)\nbtConeShape : public btConvexInternalShape\n\n{\n\tbtScalar m_sinAngle;\n\tbtScalar m_radius;\n\tbtScalar m_height;\n\tint m_coneIndices[3];\n\tbtVector3 coneLocalSupport(const btVector3& v) const;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConeShape(btScalar radius, btScalar height);\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tbtScalar getRadius() const { return m_radius; }\n\tbtScalar getHeight() const { return m_height; }\n\n\tvoid setRadius(const btScalar radius)\n\t{\n\t\tm_radius = radius;\n\t}\n\tvoid setHeight(const btScalar height)\n\t{\n\t\tm_height = height;\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const\n\t{\n\t\tbtTransform identity;\n\t\tidentity.setIdentity();\n\t\tbtVector3 aabbMin, aabbMax;\n\t\tgetAabb(identity, aabbMin, aabbMax);\n\n\t\tbtVector3 halfExtents = (aabbMax - aabbMin) * btScalar(0.5);\n\n\t\tbtScalar margin = getMargin();\n\n\t\tbtScalar lx = btScalar(2.) * (halfExtents.x() + margin);\n\t\tbtScalar ly = btScalar(2.) * (halfExtents.y() + margin);\n\t\tbtScalar lz = btScalar(2.) * (halfExtents.z() + margin);\n\t\tconst btScalar x2 = lx * lx;\n\t\tconst btScalar y2 = ly * ly;\n\t\tconst btScalar z2 = lz * lz;\n\t\tconst btScalar scaledmass = mass * btScalar(0.08333333);\n\n\t\tinertia = scaledmass * (btVector3(y2 + z2, x2 + z2, x2 + y2));\n\n\t\t//\t\tinertia.x() = scaledmass * (y2+z2);\n\t\t//\t\tinertia.y() = scaledmass * (x2+z2);\n\t\t//\t\tinertia.z() = scaledmass * (x2+y2);\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Cone\";\n\t}\n\n\t///choose upAxis index\n\tvoid setConeUpIndex(int upIndex);\n\n\tint getConeUpIndex() const\n\t{\n\t\treturn m_coneIndices[1];\n\t}\n\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\treturn btVector3(0, 1, 0);\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///btConeShape implements a Cone shape, around the X axis\nclass btConeShapeX : public btConeShape\n{\npublic:\n\tbtConeShapeX(btScalar radius, btScalar height);\n\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\treturn btVector3(1, 0, 0);\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"ConeX\";\n\t}\n};\n\n///btConeShapeZ implements a Cone shape, around the Z axis\nclass btConeShapeZ : public btConeShape\n{\npublic:\n\tbtConeShapeZ(btScalar radius, btScalar height);\n\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\treturn btVector3(0, 0, 1);\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"ConeZ\";\n\t}\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btConeShapeData\n{\n\tbtConvexInternalShapeData m_convexInternalShapeData;\n\n\tint m_upIndex;\n\n\tchar m_padding[4];\n};\n\nSIMD_FORCE_INLINE int btConeShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btConeShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btConeShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtConeShapeData* shapeData = (btConeShapeData*)dataBuffer;\n\n\tbtConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer);\n\n\tshapeData->m_upIndex = m_coneIndices[1];\n\n\t// Fill padding with zeros to appease msan.\n\tshapeData->m_padding[0] = 0;\n\tshapeData->m_padding[1] = 0;\n\tshapeData->m_padding[2] = 0;\n\tshapeData->m_padding[3] = 0;\n\n\treturn \"btConeShapeData\";\n}\n\n#endif  //BT_CONE_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_2D_SHAPE_H\n#define BT_CONVEX_2D_SHAPE_H\n\n#include \"BulletCollision/CollisionShapes/btConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n///The btConvex2dShape allows to use arbitrary convex shapes as 2d convex shapes, with the Z component assumed to be 0.\n///For 2d boxes, the btBox2dShape is recommended.\nATTRIBUTE_ALIGNED16(class)\nbtConvex2dShape : public btConvexShape\n{\n\tbtConvexShape* m_childConvexShape;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvex2dShape(btConvexShape * convexChildShape);\n\n\tvirtual ~btConvex2dShape();\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tbtConvexShape* getChildShape()\n\t{\n\t\treturn m_childConvexShape;\n\t}\n\n\tconst btConvexShape* getChildShape() const\n\t{\n\t\treturn m_childConvexShape;\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Convex2dShape\";\n\t}\n\n\t///////////////////////////\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\n\tvirtual void setMargin(btScalar margin);\n\tvirtual btScalar getMargin() const;\n\n\tvirtual int getNumPreferredPenetrationDirections() const;\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const;\n};\n\n#endif  //BT_CONVEX_2D_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_HULL_SHAPE_H\n#define BT_CONVEX_HULL_SHAPE_H\n\n#include \"btPolyhedralConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///The btConvexHullShape implements an implicit convex hull of an array of vertices.\n///Bullet provides a general and fast collision detector for convex shapes based on GJK and EPA using localGetSupportingVertex.\nATTRIBUTE_ALIGNED16(class)\nbtConvexHullShape : public btPolyhedralConvexAabbCachingShape\n{\n\tbtAlignedObjectArray<btVector3> m_unscaledPoints;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t///this constructor optionally takes in a pointer to points. Each point is assumed to be 3 consecutive btScalar (x,y,z), the striding defines the number of bytes between each point, in memory.\n\t///It is easier to not pass any points in the constructor, and just add one point at a time, using addPoint.\n\t///btConvexHullShape make an internal copy of the points.\n\tbtConvexHullShape(const btScalar* points = 0, int numPoints = 0, int stride = sizeof(btVector3));\n\n\tvoid addPoint(const btVector3& point, bool recalculateLocalAabb = true);\n\n\tbtVector3* getUnscaledPoints()\n\t{\n\t\treturn &m_unscaledPoints[0];\n\t}\n\n\tconst btVector3* getUnscaledPoints() const\n\t{\n\t\treturn &m_unscaledPoints[0];\n\t}\n\n\t///getPoints is obsolete, please use getUnscaledPoints\n\tconst btVector3* getPoints() const\n\t{\n\t\treturn getUnscaledPoints();\n\t}\n\n\tvoid optimizeConvexHull();\n\n\tSIMD_FORCE_INLINE btVector3 getScaledPoint(int i) const\n\t{\n\t\treturn m_unscaledPoints[i] * m_localScaling;\n\t}\n\n\tSIMD_FORCE_INLINE int getNumPoints() const\n\t{\n\t\treturn m_unscaledPoints.size();\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void project(const btTransform& trans, const btVector3& dir, btScalar& minProj, btScalar& maxProj, btVector3& witnesPtMin, btVector3& witnesPtMax) const;\n\n\t//debugging\n\tvirtual const char* getName() const { return \"Convex\"; }\n\n\tvirtual int getNumVertices() const;\n\tvirtual int getNumEdges() const;\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const;\n\tvirtual void getVertex(int i, btVector3& vtx) const;\n\tvirtual int getNumPlanes() const;\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const;\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const;\n\n\t///in case we receive negative scaling\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtConvexHullShapeData\n{\n\tbtConvexInternalShapeData\tm_convexInternalShapeData;\n\n\tbtVector3FloatData\t*m_unscaledPointsFloatPtr;\n\tbtVector3DoubleData\t*m_unscaledPointsDoublePtr;\n\n\tint\t\tm_numUnscaledPoints;\n\tchar m_padding3[4];\n\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btConvexHullShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btConvexHullShapeData);\n}\n\n#endif  //BT_CONVEX_HULL_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_INTERNAL_SHAPE_H\n#define BT_CONVEX_INTERNAL_SHAPE_H\n\n#include \"btConvexShape.h\"\n#include \"LinearMath/btAabbUtil2.h\"\n\n///The btConvexInternalShape is an internal base class, shared by most convex shape implementations.\n///The btConvexInternalShape uses a default collision margin set to CONVEX_DISTANCE_MARGIN.\n///This collision margin used by Gjk and some other algorithms, see also btCollisionMargin.h\n///Note that when creating small shapes (derived from btConvexInternalShape),\n///you need to make sure to set a smaller collision margin, using the 'setMargin' API\n///There is a automatic mechanism 'setSafeMargin' used by btBoxShape and btCylinderShape\nATTRIBUTE_ALIGNED16(class)\nbtConvexInternalShape : public btConvexShape\n{\nprotected:\n\t//local scaling. collisionMargin is not scaled !\n\tbtVector3 m_localScaling;\n\n\tbtVector3 m_implicitShapeDimensions;\n\n\tbtScalar m_collisionMargin;\n\n\tbtScalar m_padding;\n\n\tbtConvexInternalShape();\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tvirtual ~btConvexInternalShape()\n\t{\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\n\tconst btVector3& getImplicitShapeDimensions() const\n\t{\n\t\treturn m_implicitShapeDimensions;\n\t}\n\n\t///warning: use setImplicitShapeDimensions with care\n\t///changing a collision shape while the body is in the world is not recommended,\n\t///it is best to remove the body from the world, then make the change, and re-add it\n\t///alternatively flush the contact points, see documentation for 'cleanProxyFromPairs'\n\tvoid setImplicitShapeDimensions(const btVector3& dimensions)\n\t{\n\t\tm_implicitShapeDimensions = dimensions;\n\t}\n\n\tvoid setSafeMargin(btScalar minDimension, btScalar defaultMarginMultiplier = 0.1f)\n\t{\n\t\tbtScalar safeMargin = defaultMarginMultiplier * minDimension;\n\t\tif (safeMargin < getMargin())\n\t\t{\n\t\t\tsetMargin(safeMargin);\n\t\t}\n\t}\n\tvoid setSafeMargin(const btVector3& halfExtents, btScalar defaultMarginMultiplier = 0.1f)\n\t{\n\t\t//see http://code.google.com/p/bullet/issues/detail?id=349\n\t\t//this margin check could could be added to other collision shapes too,\n\t\t//or add some assert/warning somewhere\n\t\tbtScalar minDimension = halfExtents[halfExtents.minAxis()];\n\t\tsetSafeMargin(minDimension, defaultMarginMultiplier);\n\t}\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tgetAabbSlow(t, aabbMin, aabbMax);\n\t}\n\n\tvirtual void getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const\n\t{\n\t\treturn m_localScaling;\n\t}\n\n\tconst btVector3& getLocalScalingNV() const\n\t{\n\t\treturn m_localScaling;\n\t}\n\n\tvirtual void setMargin(btScalar margin)\n\t{\n\t\tm_collisionMargin = margin;\n\t}\n\tvirtual btScalar getMargin() const\n\t{\n\t\treturn m_collisionMargin;\n\t}\n\n\tbtScalar getMarginNV() const\n\t{\n\t\treturn m_collisionMargin;\n\t}\n\n\tvirtual int getNumPreferredPenetrationDirections() const\n\t{\n\t\treturn 0;\n\t}\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const\n\t{\n\t\t(void)penetrationVector;\n\t\t(void)index;\n\t\tbtAssert(0);\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btConvexInternalShapeData\n{\n\tbtCollisionShapeData m_collisionShapeData;\n\n\tbtVector3FloatData m_localScaling;\n\n\tbtVector3FloatData m_implicitShapeDimensions;\n\n\tfloat m_collisionMargin;\n\n\tint m_padding;\n};\n\nSIMD_FORCE_INLINE int btConvexInternalShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btConvexInternalShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btConvexInternalShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtConvexInternalShapeData* shapeData = (btConvexInternalShapeData*)dataBuffer;\n\tbtCollisionShape::serialize(&shapeData->m_collisionShapeData, serializer);\n\n\tm_implicitShapeDimensions.serializeFloat(shapeData->m_implicitShapeDimensions);\n\tm_localScaling.serializeFloat(shapeData->m_localScaling);\n\tshapeData->m_collisionMargin = float(m_collisionMargin);\n\n\t// Fill padding with zeros to appease msan.\n\tshapeData->m_padding = 0;\n\n\treturn \"btConvexInternalShapeData\";\n}\n\n///btConvexInternalAabbCachingShape adds local aabb caching for convex shapes, to avoid expensive bounding box calculations\nclass btConvexInternalAabbCachingShape : public btConvexInternalShape\n{\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\tbool m_isLocalAabbValid;\n\nprotected:\n\tbtConvexInternalAabbCachingShape();\n\n\tvoid setCachedLocalAabb(const btVector3& aabbMin, const btVector3& aabbMax)\n\t{\n\t\tm_isLocalAabbValid = true;\n\t\tm_localAabbMin = aabbMin;\n\t\tm_localAabbMax = aabbMax;\n\t}\n\n\tinline void getCachedLocalAabb(btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtAssert(m_isLocalAabbValid);\n\t\taabbMin = m_localAabbMin;\n\t\taabbMax = m_localAabbMax;\n\t}\n\n\tinline void getNonvirtualAabb(const btTransform& trans, btVector3& aabbMin, btVector3& aabbMax, btScalar margin) const\n\t{\n\t\t//lazy evaluation of local aabb\n\t\tbtAssert(m_isLocalAabbValid);\n\t\tbtTransformAabb(m_localAabbMin, m_localAabbMax, margin, trans, aabbMin, aabbMax);\n\t}\n\npublic:\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvoid recalcLocalAabb();\n};\n\n#endif  //BT_CONVEX_INTERNAL_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_POINT_CLOUD_SHAPE_H\n#define BT_CONVEX_POINT_CLOUD_SHAPE_H\n\n#include \"btPolyhedralConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///The btConvexPointCloudShape implements an implicit convex hull of an array of vertices.\nATTRIBUTE_ALIGNED16(class)\nbtConvexPointCloudShape : public btPolyhedralConvexAabbCachingShape\n{\n\tbtVector3* m_unscaledPoints;\n\tint m_numPoints;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvexPointCloudShape()\n\t{\n\t\tm_localScaling.setValue(1.f, 1.f, 1.f);\n\t\tm_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE;\n\t\tm_unscaledPoints = 0;\n\t\tm_numPoints = 0;\n\t}\n\n\tbtConvexPointCloudShape(btVector3 * points, int numPoints, const btVector3& localScaling, bool computeAabb = true)\n\t{\n\t\tm_localScaling = localScaling;\n\t\tm_shapeType = CONVEX_POINT_CLOUD_SHAPE_PROXYTYPE;\n\t\tm_unscaledPoints = points;\n\t\tm_numPoints = numPoints;\n\n\t\tif (computeAabb)\n\t\t\trecalcLocalAabb();\n\t}\n\n\tvoid setPoints(btVector3 * points, int numPoints, bool computeAabb = true, const btVector3& localScaling = btVector3(1.f, 1.f, 1.f))\n\t{\n\t\tm_unscaledPoints = points;\n\t\tm_numPoints = numPoints;\n\t\tm_localScaling = localScaling;\n\n\t\tif (computeAabb)\n\t\t\trecalcLocalAabb();\n\t}\n\n\tSIMD_FORCE_INLINE btVector3* getUnscaledPoints()\n\t{\n\t\treturn m_unscaledPoints;\n\t}\n\n\tSIMD_FORCE_INLINE const btVector3* getUnscaledPoints() const\n\t{\n\t\treturn m_unscaledPoints;\n\t}\n\n\tSIMD_FORCE_INLINE int getNumPoints() const\n\t{\n\t\treturn m_numPoints;\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 getScaledPoint(int index) const\n\t{\n\t\treturn m_unscaledPoints[index] * m_localScaling;\n\t}\n\n#ifndef __SPU__\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n#endif\n\n\t//debugging\n\tvirtual const char* getName() const { return \"ConvexPointCloud\"; }\n\n\tvirtual int getNumVertices() const;\n\tvirtual int getNumEdges() const;\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const;\n\tvirtual void getVertex(int i, btVector3& vtx) const;\n\tvirtual int getNumPlanes() const;\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const;\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const;\n\n\t///in case we receive negative scaling\n\tvirtual void setLocalScaling(const btVector3& scaling);\n};\n\n#endif  //BT_CONVEX_POINT_CLOUD_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///This file was written by Erwin Coumans\n\n#ifndef _BT_POLYHEDRAL_FEATURES_H\n#define _BT_POLYHEDRAL_FEATURES_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#define TEST_INTERNAL_OBJECTS 1\n\nstruct btFace\n{\n\tbtAlignedObjectArray<int> m_indices;\n\t//\tbtAlignedObjectArray<int>\tm_connectedFaces;\n\tbtScalar m_plane[4];\n};\n\nATTRIBUTE_ALIGNED16(class)\nbtConvexPolyhedron\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvexPolyhedron();\n\tvirtual ~btConvexPolyhedron();\n\n\tbtAlignedObjectArray<btVector3> m_vertices;\n\tbtAlignedObjectArray<btFace> m_faces;\n\tbtAlignedObjectArray<btVector3> m_uniqueEdges;\n\n\tbtVector3 m_localCenter;\n\tbtVector3 m_extents;\n\tbtScalar m_radius;\n\tbtVector3 mC;\n\tbtVector3 mE;\n\n\tvoid initialize();\n\tvoid initialize2();\n\tbool testContainment() const;\n\n\tvoid project(const btTransform& trans, const btVector3& dir, btScalar& minProj, btScalar& maxProj, btVector3& witnesPtMin, btVector3& witnesPtMax) const;\n};\n\n#endif  //_BT_POLYHEDRAL_FEATURES_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_SHAPE_INTERFACE1\n#define BT_CONVEX_SHAPE_INTERFACE1\n\n#include \"btCollisionShape.h\"\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"btCollisionMargin.h\"\n#include \"LinearMath/btAlignedAllocator.h\"\n\n#define MAX_PREFERRED_PENETRATION_DIRECTIONS 10\n\n/// The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape, btConvexHullShape etc.\n/// It describes general convex shapes using the localGetSupportingVertex interface, used by collision detectors such as btGjkPairDetector.\nATTRIBUTE_ALIGNED16(class)\nbtConvexShape : public btCollisionShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvexShape();\n\n\tvirtual ~btConvexShape();\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const = 0;\n\n////////\n#ifndef __SPU__\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const = 0;\n#endif  //#ifndef __SPU__\n\n\tbtVector3 localGetSupportVertexWithoutMarginNonVirtual(const btVector3& vec) const;\n\tbtVector3 localGetSupportVertexNonVirtual(const btVector3& vec) const;\n\tbtScalar getMarginNonVirtual() const;\n\tvoid getAabbNonVirtual(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void project(const btTransform& trans, const btVector3& dir, btScalar& minProj, btScalar& maxProj, btVector3& witnesPtMin, btVector3& witnesPtMax) const;\n\n\t//notice that the vectors should be unit length\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const = 0;\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const = 0;\n\n\tvirtual void getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const = 0;\n\n\tvirtual void setLocalScaling(const btVector3& scaling) = 0;\n\tvirtual const btVector3& getLocalScaling() const = 0;\n\n\tvirtual void setMargin(btScalar margin) = 0;\n\n\tvirtual btScalar getMargin() const = 0;\n\n\tvirtual int getNumPreferredPenetrationDirections() const = 0;\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const = 0;\n};\n\n#endif  //BT_CONVEX_SHAPE_INTERFACE1\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n#ifndef BT_CONVEX_TRIANGLEMESH_SHAPE_H\n#define BT_CONVEX_TRIANGLEMESH_SHAPE_H\n\n#include \"btPolyhedralConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n/// The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good as btConvexHullShape.\n/// A small benefit of this class is that it uses the btStridingMeshInterface, so you can avoid the duplication of the triangle mesh data. Nevertheless, most users should use the much better performing btConvexHullShape instead.\nATTRIBUTE_ALIGNED16(class)\nbtConvexTriangleMeshShape : public btPolyhedralConvexAabbCachingShape\n{\n\tclass btStridingMeshInterface* m_stridingMesh;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConvexTriangleMeshShape(btStridingMeshInterface * meshInterface, bool calcAabb = true);\n\n\tclass btStridingMeshInterface* getMeshInterface()\n\t{\n\t\treturn m_stridingMesh;\n\t}\n\tconst class btStridingMeshInterface* getMeshInterface() const\n\t{\n\t\treturn m_stridingMesh;\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\t//debugging\n\tvirtual const char* getName() const { return \"ConvexTrimesh\"; }\n\n\tvirtual int getNumVertices() const;\n\tvirtual int getNumEdges() const;\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const;\n\tvirtual void getVertex(int i, btVector3& vtx) const;\n\tvirtual int getNumPlanes() const;\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const;\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\n\t///computes the exact moment of inertia and the transform from the coordinate system defined by the principal axes of the moment of inertia\n\t///and the center of mass to the current coordinate system. A mass of 1 is assumed, for other masses just multiply the computed \"inertia\"\n\t///by the mass. The resulting transform \"principal\" has to be applied inversely to the mesh in order for the local coordinate system of the\n\t///shape to be centered at the center of mass and to coincide with the principal axes. This also necessitates a correction of the world transform\n\t///of the collision object by the principal transform. This method also computes the volume of the convex mesh.\n\tvoid calculatePrincipalAxisTransform(btTransform & principal, btVector3 & inertia, btScalar & volume) const;\n};\n\n#endif  //BT_CONVEX_TRIANGLEMESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btCylinderShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CYLINDER_MINKOWSKI_H\n#define BT_CYLINDER_MINKOWSKI_H\n\n#include \"btBoxShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n#include \"LinearMath/btVector3.h\"\n\n/// The btCylinderShape class implements a cylinder shape primitive, centered around the origin. Its central axis aligned with the Y axis. btCylinderShapeX is aligned with the X axis and btCylinderShapeZ around the Z axis.\nATTRIBUTE_ALIGNED16(class)\nbtCylinderShape : public btConvexInternalShape\n\n{\nprotected:\n\tint m_upAxis;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtVector3 getHalfExtentsWithMargin() const\n\t{\n\t\tbtVector3 halfExtents = getHalfExtentsWithoutMargin();\n\t\tbtVector3 margin(getMargin(), getMargin(), getMargin());\n\t\thalfExtents += margin;\n\t\treturn halfExtents;\n\t}\n\n\tconst btVector3& getHalfExtentsWithoutMargin() const\n\t{\n\t\treturn m_implicitShapeDimensions;  //changed in Bullet 2.63: assume the scaling and margin are included\n\t}\n\n\tbtCylinderShape(const btVector3& halfExtents);\n\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void setMargin(btScalar collisionMargin)\n\t{\n\t\t//correct the m_implicitShapeDimensions for the margin\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\n\t\tbtConvexInternalShape::setMargin(collisionMargin);\n\t\tbtVector3 newMargin(getMargin(), getMargin(), getMargin());\n\t\tm_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin;\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const\n\t{\n\t\tbtVector3 supVertex;\n\t\tsupVertex = localGetSupportingVertexWithoutMargin(vec);\n\n\t\tif (getMargin() != btScalar(0.))\n\t\t{\n\t\t\tbtVector3 vecnorm = vec;\n\t\t\tif (vecnorm.length2() < (SIMD_EPSILON * SIMD_EPSILON))\n\t\t\t{\n\t\t\t\tvecnorm.setValue(btScalar(-1.), btScalar(-1.), btScalar(-1.));\n\t\t\t}\n\t\t\tvecnorm.normalize();\n\t\t\tsupVertex += getMargin() * vecnorm;\n\t\t}\n\t\treturn supVertex;\n\t}\n\n\t//use box inertia\n\t//\tvirtual void\tcalculateLocalInertia(btScalar mass,btVector3& inertia) const;\n\n\tint getUpAxis() const\n\t{\n\t\treturn m_upAxis;\n\t}\n\n\tvirtual btVector3 getAnisotropicRollingFrictionDirection() const\n\t{\n\t\tbtVector3 aniDir(0, 0, 0);\n\t\taniDir[getUpAxis()] = 1;\n\t\treturn aniDir;\n\t}\n\n\tvirtual btScalar getRadius() const\n\t{\n\t\treturn getHalfExtentsWithMargin().getX();\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tbtVector3 oldMargin(getMargin(), getMargin(), getMargin());\n\t\tbtVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions + oldMargin;\n\t\tbtVector3 unScaledImplicitShapeDimensionsWithMargin = implicitShapeDimensionsWithMargin / m_localScaling;\n\n\t\tbtConvexInternalShape::setLocalScaling(scaling);\n\n\t\tm_implicitShapeDimensions = (unScaledImplicitShapeDimensionsWithMargin * m_localScaling) - oldMargin;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CylinderY\";\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nclass btCylinderShapeX : public btCylinderShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtCylinderShapeX(const btVector3& halfExtents);\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CylinderX\";\n\t}\n\n\tvirtual btScalar getRadius() const\n\t{\n\t\treturn getHalfExtentsWithMargin().getY();\n\t}\n};\n\nclass btCylinderShapeZ : public btCylinderShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtCylinderShapeZ(const btVector3& halfExtents);\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"CylinderZ\";\n\t}\n\n\tvirtual btScalar getRadius() const\n\t{\n\t\treturn getHalfExtentsWithMargin().getX();\n\t}\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btCylinderShapeData\n{\n\tbtConvexInternalShapeData m_convexInternalShapeData;\n\n\tint m_upAxis;\n\n\tchar m_padding[4];\n};\n\nSIMD_FORCE_INLINE int btCylinderShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btCylinderShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btCylinderShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtCylinderShapeData* shapeData = (btCylinderShapeData*)dataBuffer;\n\n\tbtConvexInternalShape::serialize(&shapeData->m_convexInternalShapeData, serializer);\n\n\tshapeData->m_upAxis = m_upAxis;\n\n\t// Fill padding with zeros to appease msan.\n\tshapeData->m_padding[0] = 0;\n\tshapeData->m_padding[1] = 0;\n\tshapeData->m_padding[2] = 0;\n\tshapeData->m_padding[3] = 0;\n\n\treturn \"btCylinderShapeData\";\n}\n\n#endif  //BT_CYLINDER_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btEmptyShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_EMPTY_SHAPE_H\n#define BT_EMPTY_SHAPE_H\n\n#include \"btConcaveShape.h\"\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"btCollisionMargin.h\"\n\n/// The btEmptyShape is a collision shape without actual collision detection shape, so most users should ignore this class.\n/// It can be replaced by another shape during runtime, but the inertia tensor should be recomputed.\nATTRIBUTE_ALIGNED16(class)\nbtEmptyShape : public btConcaveShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtEmptyShape();\n\n\tvirtual ~btEmptyShape();\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tm_localScaling = scaling;\n\t}\n\tvirtual const btVector3& getLocalScaling() const\n\t{\n\t\treturn m_localScaling;\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Empty\";\n\t}\n\n\tvirtual void processAllTriangles(btTriangleCallback*, const btVector3&, const btVector3&) const\n\t{\n\t}\n\nprotected:\n\tbtVector3 m_localScaling;\n};\n\n#endif  //BT_EMPTY_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_HEIGHTFIELD_TERRAIN_SHAPE_H\n#define BT_HEIGHTFIELD_TERRAIN_SHAPE_H\n\n#include \"btConcaveShape.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///btHeightfieldTerrainShape simulates a 2D heightfield terrain\n/**\n  The caller is responsible for maintaining the heightfield array; this\n  class does not make a copy.\n\n  The heightfield can be dynamic so long as the min/max height values\n  capture the extremes (heights must always be in that range).\n\n  The local origin of the heightfield is assumed to be the exact\n  center (as determined by width and length and height, with each\n  axis multiplied by the localScaling).\n\n  \\b NOTE: be careful with coordinates.  If you have a heightfield with a local\n  min height of -100m, and a max height of +500m, you may be tempted to place it\n  at the origin (0,0) and expect the heights in world coordinates to be\n  -100 to +500 meters.\n  Actually, the heights will be -300 to +300m, because bullet will re-center\n  the heightfield based on its AABB (which is determined by the min/max\n  heights).  So keep in mind that once you create a btHeightfieldTerrainShape\n  object, the heights will be adjusted relative to the center of the AABB.  This\n  is different to the behavior of many rendering engines, but is useful for\n  physics engines.\n\n  Most (but not all) rendering and heightfield libraries assume upAxis = 1\n  (that is, the y-axis is \"up\").  This class allows any of the 3 coordinates\n  to be \"up\".  Make sure your choice of axis is consistent with your rendering\n  system.\n\n  The heightfield heights are determined from the data type used for the\n  heightfieldData array.  \n\n   - unsigned char: height at a point is the uchar value at the\n       grid point, multipled by heightScale.  uchar isn't recommended\n       because of its inability to deal with negative values, and\n       low resolution (8-bit).\n\n   - short: height at a point is the short int value at that grid\n       point, multipled by heightScale.\n\n   - float or dobule: height at a point is the value at that grid point.\n\n  Whatever the caller specifies as minHeight and maxHeight will be honored.\n  The class will not inspect the heightfield to discover the actual minimum\n  or maximum heights.  These values are used to determine the heightfield's\n  axis-aligned bounding box, multiplied by localScaling.\n\n  For usage and testing see the TerrainDemo.\n */\nATTRIBUTE_ALIGNED16(class)\nbtHeightfieldTerrainShape : public btConcaveShape\n{\npublic:\n\tstruct Range\n\t{\n\t\tRange() {}\n\t\tRange(btScalar min, btScalar max) : min(min), max(max) {}\n\n\t\tbool overlaps(const Range& other) const\n\t\t{\n\t\t\treturn !(min > other.max || max < other.min);\n\t\t}\n\n\t\tbtScalar min;\n\t\tbtScalar max;\n\t};\n\nprotected:\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\tbtVector3 m_localOrigin;\n\n\t///terrain data\n\tint m_heightStickWidth;\n\tint m_heightStickLength;\n\tbtScalar m_minHeight;\n\tbtScalar m_maxHeight;\n\tbtScalar m_width;\n\tbtScalar m_length;\n\tbtScalar m_heightScale;\n\tunion {\n\t\tconst unsigned char* m_heightfieldDataUnsignedChar;\n\t\tconst short* m_heightfieldDataShort;\n\t\tconst float* m_heightfieldDataFloat;\n\t\tconst double* m_heightfieldDataDouble;\n\t\tconst void* m_heightfieldDataUnknown;\n\t};\n\n\tPHY_ScalarType m_heightDataType;\n\tbool m_flipQuadEdges;\n\tbool m_useDiamondSubdivision;\n\tbool m_useZigzagSubdivision;\n\tbool m_flipTriangleWinding;\n\tint m_upAxis;\n\n\tbtVector3 m_localScaling;\n\n\t// Accelerator\n\tbtAlignedObjectArray<Range> m_vboundsGrid;\n\tint m_vboundsGridWidth;\n\tint m_vboundsGridLength;\n\tint m_vboundsChunkSize;\n\n\t\n\tbtScalar m_userValue3;\n\n\tstruct btTriangleInfoMap* m_triangleInfoMap;\n\n\tvirtual btScalar getRawHeightFieldValue(int x, int y) const;\n\tvoid quantizeWithClamp(int* out, const btVector3& point, int isMax) const;\n\n\t/// protected initialization\n\t/**\n\t  Handles the work of constructors so that public constructors can be\n\t  backwards-compatible without a lot of copy/paste.\n\t */\n\tvoid initialize(int heightStickWidth, int heightStickLength,\n\t\t\t\t\tconst void* heightfieldData, btScalar heightScale,\n\t\t\t\t\tbtScalar minHeight, btScalar maxHeight, int upAxis,\n\t\t\t\t\tPHY_ScalarType heightDataType, bool flipQuadEdges);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t/// preferred constructors\n\tbtHeightfieldTerrainShape(\n\t\tint heightStickWidth, int heightStickLength,\n\t\tconst float* heightfieldData, btScalar minHeight, btScalar maxHeight,\n\t\tint upAxis, bool flipQuadEdges);\n\tbtHeightfieldTerrainShape(\n\t\tint heightStickWidth, int heightStickLength,\n\t\tconst double* heightfieldData, btScalar minHeight, btScalar maxHeight,\n\t\tint upAxis, bool flipQuadEdges);\n\tbtHeightfieldTerrainShape(\n\t\tint heightStickWidth, int heightStickLength,\n\t\tconst short* heightfieldData, btScalar heightScale, btScalar minHeight, btScalar maxHeight,\n\t\tint upAxis, bool flipQuadEdges);\n\tbtHeightfieldTerrainShape(\n\t\tint heightStickWidth, int heightStickLength,\n\t\tconst unsigned char* heightfieldData, btScalar heightScale, btScalar minHeight, btScalar maxHeight,\n\t\tint upAxis, bool flipQuadEdges);\n\n\t/// legacy constructor\n\t/**\n\t  This constructor supports a range of heightfield\n\t  data types, and allows for a non-zero minimum height value.\n\t  heightScale is needed for any integer-based heightfield data types.\n\n\t  This legacy constructor considers `PHY_FLOAT` to mean `btScalar`.\n\t  With `BT_USE_DOUBLE_PRECISION`, it will expect `heightfieldData`\n\t  to be double-precision.\n\t */\n\tbtHeightfieldTerrainShape(int heightStickWidth, int heightStickLength,\n\t\t\t\t\t\t\t  const void* heightfieldData, btScalar heightScale,\n\t\t\t\t\t\t\t  btScalar minHeight, btScalar maxHeight,\n\t\t\t\t\t\t\t  int upAxis, PHY_ScalarType heightDataType,\n\t\t\t\t\t\t\t  bool flipQuadEdges);\n\n\t/// legacy constructor\n\t/**\n\t  The legacy constructor assumes the heightfield has a minimum height\n\t  of zero.  Only unsigned char or btScalar data are supported.  For legacy\n\t  compatibility reasons, heightScale is calculated as maxHeight / 65535 \n\t  (and is only used when useFloatData = false).\n \t */\n\tbtHeightfieldTerrainShape(int heightStickWidth, int heightStickLength, const void* heightfieldData, btScalar maxHeight, int upAxis, bool useFloatData, bool flipQuadEdges);\n\n\tvirtual ~btHeightfieldTerrainShape();\n\n\tvoid setUseDiamondSubdivision(bool useDiamondSubdivision = true) { m_useDiamondSubdivision = useDiamondSubdivision; }\n\n\t///could help compatibility with Ogre heightfields. See https://code.google.com/p/bullet/issues/detail?id=625\n\tvoid setUseZigzagSubdivision(bool useZigzagSubdivision = true) { m_useZigzagSubdivision = useZigzagSubdivision; }\n\n\tvoid setFlipTriangleWinding(bool flipTriangleWinding)\n\t{\n\t\tm_flipTriangleWinding = flipTriangleWinding;\n\t}\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual const btVector3& getLocalScaling() const;\n\n\tvoid getVertex(int x, int y, btVector3& vertex) const;\n\n\tvoid performRaycast(btTriangleCallback * callback, const btVector3& raySource, const btVector3& rayTarget) const;\n\n\tvoid buildAccelerator(int chunkSize = 16);\n\tvoid clearAccelerator();\n\n\tint getUpAxis() const\n\t{\n\t\treturn m_upAxis;\n\t}\n\t//debugging\n\tvirtual const char* getName() const { return \"HEIGHTFIELD\"; }\n\n\t\n\tvoid setUserValue3(btScalar value)\n\t{\n\t\tm_userValue3 = value;\n\t}\n\tbtScalar getUserValue3() const\n\t{\n\t\treturn m_userValue3;\n\t}\n\tconst struct btTriangleInfoMap* getTriangleInfoMap() const\n\t{\n\t\treturn m_triangleInfoMap;\n\t}\n\tstruct btTriangleInfoMap* getTriangleInfoMap()\n\t{\n\t\treturn m_triangleInfoMap;\n\t}\n\tvoid setTriangleInfoMap(btTriangleInfoMap* map)\n\t{\n\t\tm_triangleInfoMap = map;\n\t}\n\tconst unsigned char* getHeightfieldRawData() const\n\t{\n\t\treturn m_heightfieldDataUnsignedChar;\n\t}\n};\n\n#endif  //BT_HEIGHTFIELD_TERRAIN_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btMaterial.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/// This file was created by Alex Silverman\n\n#ifndef BT_MATERIAL_H\n#define BT_MATERIAL_H\n\n// Material class to be used by btMultimaterialTriangleMeshShape to store triangle properties\nclass btMaterial\n{\n\t// public members so that materials can change due to world events\npublic:\n\tbtScalar m_friction;\n\tbtScalar m_restitution;\n\tint pad[2];\n\n\tbtMaterial() {}\n\tbtMaterial(btScalar fric, btScalar rest)\n\t{\n\t\tm_friction = fric;\n\t\tm_restitution = rest;\n\t}\n};\n\n#endif  // BT_MATERIAL_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btMiniSDF.h",
    "content": "#ifndef MINISDF_H\n#define MINISDF_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btAabbUtil2.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\nstruct btMultiIndex\n{\n\tunsigned int ijk[3];\n};\n\nstruct btAlignedBox3d\n{\n\tbtVector3 m_min;\n\tbtVector3 m_max;\n\n\tconst btVector3& min() const\n\t{\n\t\treturn m_min;\n\t}\n\n\tconst btVector3& max() const\n\t{\n\t\treturn m_max;\n\t}\n\n\tbool contains(const btVector3& x) const\n\t{\n\t\treturn TestPointAgainstAabb2(m_min, m_max, x);\n\t}\n\n\tbtAlignedBox3d(const btVector3& mn, const btVector3& mx)\n\t\t: m_min(mn),\n\t\t  m_max(mx)\n\t{\n\t}\n\n\tbtAlignedBox3d()\n\t{\n\t}\n};\n\nstruct btShapeMatrix\n{\n\tdouble m_vec[32];\n\n\tinline double& operator[](int i)\n\t{\n\t\treturn m_vec[i];\n\t}\n\n\tinline const double& operator[](int i) const\n\t{\n\t\treturn m_vec[i];\n\t}\n};\n\nstruct btShapeGradients\n{\n\tbtVector3 m_vec[32];\n\n\tvoid topRowsDivide(int row, double denom)\n\t{\n\t\tfor (int i = 0; i < row; i++)\n\t\t{\n\t\t\tm_vec[i] /= denom;\n\t\t}\n\t}\n\n\tvoid bottomRowsMul(int row, double val)\n\t{\n\t\tfor (int i = 32 - row; i < 32; i++)\n\t\t{\n\t\t\tm_vec[i] *= val;\n\t\t}\n\t}\n\n\tinline btScalar& operator()(int i, int j)\n\t{\n\t\treturn m_vec[i][j];\n\t}\n};\n\nstruct btCell32\n{\n\tunsigned int m_cells[32];\n};\n\nstruct btMiniSDF\n{\n\tbtAlignedBox3d m_domain;\n\tunsigned int m_resolution[3];\n\tbtVector3 m_cell_size;\n\tbtVector3 m_inv_cell_size;\n\tstd::size_t m_n_cells;\n\tstd::size_t m_n_fields;\n\tbool m_isValid;\n\n\tbtAlignedObjectArray<btAlignedObjectArray<double> > m_nodes;\n\tbtAlignedObjectArray<btAlignedObjectArray<btCell32> > m_cells;\n\tbtAlignedObjectArray<btAlignedObjectArray<unsigned int> > m_cell_map;\n\n\tbtMiniSDF()\n\t\t: m_isValid(false)\n\t{\n\t}\n\tbool load(const char* data, int size);\n\tbool isValid() const\n\t{\n\t\treturn m_isValid;\n\t}\n\tunsigned int multiToSingleIndex(btMultiIndex const& ijk) const;\n\n\tbtAlignedBox3d subdomain(btMultiIndex const& ijk) const;\n\n\tbtMultiIndex singleToMultiIndex(unsigned int l) const;\n\n\tbtAlignedBox3d subdomain(unsigned int l) const;\n\n\tbtShapeMatrix\n\tshape_function_(btVector3 const& xi, btShapeGradients* gradient = 0) const;\n\n\tbool interpolate(unsigned int field_id, double& dist, btVector3 const& x, btVector3* gradient) const;\n};\n\n#endif  //MINISDF_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MINKOWSKI_SUM_SHAPE_H\n#define BT_MINKOWSKI_SUM_SHAPE_H\n\n#include \"btConvexInternalShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n/// The btMinkowskiSumShape is only for advanced users. This shape represents implicit based minkowski sum of two convex implicit shapes.\nATTRIBUTE_ALIGNED16(class)\nbtMinkowskiSumShape : public btConvexInternalShape\n{\n\tbtTransform m_transA;\n\tbtTransform m_transB;\n\tconst btConvexShape* m_shapeA;\n\tconst btConvexShape* m_shapeB;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtMinkowskiSumShape(const btConvexShape* shapeA, const btConvexShape* shapeB);\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvoid setTransformA(const btTransform& transA) { m_transA = transA; }\n\tvoid setTransformB(const btTransform& transB) { m_transB = transB; }\n\n\tconst btTransform& getTransformA() const { return m_transA; }\n\tconst btTransform& GetTransformB() const { return m_transB; }\n\n\tvirtual btScalar getMargin() const;\n\n\tconst btConvexShape* getShapeA() const { return m_shapeA; }\n\tconst btConvexShape* getShapeB() const { return m_shapeB; }\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"MinkowskiSum\";\n\t}\n};\n\n#endif  //BT_MINKOWSKI_SUM_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MULTI_SPHERE_MINKOWSKI_H\n#define BT_MULTI_SPHERE_MINKOWSKI_H\n\n#include \"btConvexInternalShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btAabbUtil2.h\"\n\n///The btMultiSphereShape represents the convex hull of a collection of spheres. You can create special capsules or other smooth volumes.\n///It is possible to animate the spheres for deformation, but call 'recalcLocalAabb' after changing any sphere position/radius\nATTRIBUTE_ALIGNED16(class)\nbtMultiSphereShape : public btConvexInternalAabbCachingShape\n{\n\tbtAlignedObjectArray<btVector3> m_localPositionArray;\n\tbtAlignedObjectArray<btScalar> m_radiArray;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtMultiSphereShape(const btVector3* positions, const btScalar* radi, int numSpheres);\n\n\t///CollisionShape Interface\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\t/// btConvexShape Interface\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tint getSphereCount() const\n\t{\n\t\treturn m_localPositionArray.size();\n\t}\n\n\tconst btVector3& getSpherePosition(int index) const\n\t{\n\t\treturn m_localPositionArray[index];\n\t}\n\n\tbtScalar getSphereRadius(int index) const\n\t{\n\t\treturn m_radiArray[index];\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"MultiSphere\";\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nstruct btPositionAndRadius\n{\n\tbtVector3FloatData m_pos;\n\tfloat m_radius;\n};\n\n// clang-format off\n\nstruct\tbtMultiSphereShapeData\n{\n\tbtConvexInternalShapeData\tm_convexInternalShapeData;\n\n\tbtPositionAndRadius\t*m_localPositionArrayPtr;\n\tint\t\t\t\tm_localPositionArraySize;\n\tchar\tm_padding[4];\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btMultiSphereShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btMultiSphereShapeData);\n}\n\n#endif  //BT_MULTI_SPHERE_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/// This file was created by Alex Silverman\n\n#ifndef BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H\n#define BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H\n\n#include \"btBvhTriangleMeshShape.h\"\n#include \"btMaterial.h\"\n\n///The BvhTriangleMaterialMeshShape extends the btBvhTriangleMeshShape. Its main contribution is the interface into a material array, which allows per-triangle friction and restitution.\nATTRIBUTE_ALIGNED16(class)\nbtMultimaterialTriangleMeshShape : public btBvhTriangleMeshShape\n{\n\tbtAlignedObjectArray<btMaterial *> m_materialList;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtMultimaterialTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, bool buildBvh = true) : btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, buildBvh)\n\t{\n\t\tm_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;\n\n\t\tconst unsigned char *vertexbase;\n\t\tint numverts;\n\t\tPHY_ScalarType type;\n\t\tint stride;\n\t\tconst unsigned char *indexbase;\n\t\tint indexstride;\n\t\tint numfaces;\n\t\tPHY_ScalarType indicestype;\n\n\t\t//m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16));\n\n\t\tfor (int i = 0; i < meshInterface->getNumSubParts(); i++)\n\t\t{\n\t\t\tm_meshInterface->getLockedReadOnlyVertexIndexBase(\n\t\t\t\t&vertexbase,\n\t\t\t\tnumverts,\n\t\t\t\ttype,\n\t\t\t\tstride,\n\t\t\t\t&indexbase,\n\t\t\t\tindexstride,\n\t\t\t\tnumfaces,\n\t\t\t\tindicestype,\n\t\t\t\ti);\n\t\t\t//m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces, 16));\n\t\t}\n\t}\n\n\t///optionally pass in a larger bvh aabb, used for quantization. This allows for deformations within this aabb\n\tbtMultimaterialTriangleMeshShape(btStridingMeshInterface * meshInterface, bool useQuantizedAabbCompression, const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax, bool buildBvh = true) : btBvhTriangleMeshShape(meshInterface, useQuantizedAabbCompression, bvhAabbMin, bvhAabbMax, buildBvh)\n\t{\n\t\tm_shapeType = MULTIMATERIAL_TRIANGLE_MESH_PROXYTYPE;\n\n\t\tconst unsigned char *vertexbase;\n\t\tint numverts;\n\t\tPHY_ScalarType type;\n\t\tint stride;\n\t\tconst unsigned char *indexbase;\n\t\tint indexstride;\n\t\tint numfaces;\n\t\tPHY_ScalarType indicestype;\n\n\t\t//m_materialLookup = (int**)(btAlignedAlloc(sizeof(int*) * meshInterface->getNumSubParts(), 16));\n\n\t\tfor (int i = 0; i < meshInterface->getNumSubParts(); i++)\n\t\t{\n\t\t\tm_meshInterface->getLockedReadOnlyVertexIndexBase(\n\t\t\t\t&vertexbase,\n\t\t\t\tnumverts,\n\t\t\t\ttype,\n\t\t\t\tstride,\n\t\t\t\t&indexbase,\n\t\t\t\tindexstride,\n\t\t\t\tnumfaces,\n\t\t\t\tindicestype,\n\t\t\t\ti);\n\t\t\t//m_materialLookup[i] = (int*)(btAlignedAlloc(sizeof(int) * numfaces * 2, 16));\n\t\t}\n\t}\n\n\tvirtual ~btMultimaterialTriangleMeshShape()\n\t{\n\t\t/*\n        for(int i = 0; i < m_meshInterface->getNumSubParts(); i++)\n        {\n            btAlignedFree(m_materialValues[i]);\n            m_materialLookup[i] = NULL;\n        }\n        btAlignedFree(m_materialValues);\n        m_materialLookup = NULL;\n*/\n\t}\n\t//debugging\n\tvirtual const char *getName() const { return \"MULTIMATERIALTRIANGLEMESH\"; }\n\n\t///Obtains the material for a specific triangle\n\tconst btMaterial *getMaterialProperties(int partID, int triIndex);\n};\n\n#endif  //BT_BVH_TRIANGLE_MATERIAL_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///Contains contributions from Disney Studio's\n\n#ifndef BT_OPTIMIZED_BVH_H\n#define BT_OPTIMIZED_BVH_H\n\n#include \"BulletCollision/BroadphaseCollision/btQuantizedBvh.h\"\n\nclass btStridingMeshInterface;\n\n///The btOptimizedBvh extends the btQuantizedBvh to create AABB tree for triangle meshes, through the btStridingMeshInterface.\nATTRIBUTE_ALIGNED16(class)\nbtOptimizedBvh : public btQuantizedBvh\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\nprotected:\npublic:\n\tbtOptimizedBvh();\n\n\tvirtual ~btOptimizedBvh();\n\n\tvoid build(btStridingMeshInterface * triangles, bool useQuantizedAabbCompression, const btVector3& bvhAabbMin, const btVector3& bvhAabbMax);\n\n\tvoid refit(btStridingMeshInterface * triangles, const btVector3& aabbMin, const btVector3& aabbMax);\n\n\tvoid refitPartial(btStridingMeshInterface * triangles, const btVector3& aabbMin, const btVector3& aabbMax);\n\n\tvoid updateBvhNodes(btStridingMeshInterface * meshInterface, int firstNode, int endNode, int index);\n\n\t/// Data buffer MUST be 16 byte aligned\n\tvirtual bool serializeInPlace(void* o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const\n\t{\n\t\treturn btQuantizedBvh::serialize(o_alignedDataBuffer, i_dataBufferSize, i_swapEndian);\n\t}\n\n\t///deSerializeInPlace loads and initializes a BVH from a buffer in memory 'in place'\n\tstatic btOptimizedBvh* deSerializeInPlace(void* i_alignedDataBuffer, unsigned int i_dataBufferSize, bool i_swapEndian);\n};\n\n#endif  //BT_OPTIMIZED_BVH_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_POLYHEDRAL_CONVEX_SHAPE_H\n#define BT_POLYHEDRAL_CONVEX_SHAPE_H\n\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"btConvexInternalShape.h\"\nclass btConvexPolyhedron;\n\n///The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes.\nATTRIBUTE_ALIGNED16(class)\nbtPolyhedralConvexShape : public btConvexInternalShape\n{\nprotected:\n\tbtConvexPolyhedron* m_polyhedron;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtPolyhedralConvexShape();\n\n\tvirtual ~btPolyhedralConvexShape();\n\n\t///optional method mainly used to generate multiple contact points by clipping polyhedral features (faces/edges)\n\t///experimental/work-in-progress\n\tvirtual bool initializePolyhedralFeatures(int shiftVerticesByMargin = 0);\n\n\tvirtual void setPolyhedralFeatures(btConvexPolyhedron & polyhedron);\n\n\tconst btConvexPolyhedron* getConvexPolyhedron() const\n\t{\n\t\treturn m_polyhedron;\n\t}\n\n\t//brute force implementations\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual int getNumVertices() const = 0;\n\tvirtual int getNumEdges() const = 0;\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const = 0;\n\tvirtual void getVertex(int i, btVector3& vtx) const = 0;\n\tvirtual int getNumPlanes() const = 0;\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const = 0;\n\t//\tvirtual int getIndex(int i) const = 0 ;\n\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const = 0;\n};\n\n///The btPolyhedralConvexAabbCachingShape adds aabb caching to the btPolyhedralConvexShape\nclass btPolyhedralConvexAabbCachingShape : public btPolyhedralConvexShape\n{\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\tbool m_isLocalAabbValid;\n\nprotected:\n\tvoid setCachedLocalAabb(const btVector3& aabbMin, const btVector3& aabbMax)\n\t{\n\t\tm_isLocalAabbValid = true;\n\t\tm_localAabbMin = aabbMin;\n\t\tm_localAabbMax = aabbMax;\n\t}\n\n\tinline void getCachedLocalAabb(btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtAssert(m_isLocalAabbValid);\n\t\taabbMin = m_localAabbMin;\n\t\taabbMax = m_localAabbMax;\n\t}\n\nprotected:\n\tbtPolyhedralConvexAabbCachingShape();\n\npublic:\n\tinline void getNonvirtualAabb(const btTransform& trans, btVector3& aabbMin, btVector3& aabbMax, btScalar margin) const\n\t{\n\t\t//lazy evaluation of local aabb\n\t\tbtAssert(m_isLocalAabbValid);\n\t\tbtTransformAabb(m_localAabbMin, m_localAabbMax, margin, trans, aabbMin, aabbMax);\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvoid recalcLocalAabb();\n};\n\n#endif  //BT_POLYHEDRAL_CONVEX_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H\n#define BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H\n\n#include \"BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h\"\n\n///The btScaledBvhTriangleMeshShape allows to instance a scaled version of an existing btBvhTriangleMeshShape.\n///Note that each btBvhTriangleMeshShape still can have its own local scaling, independent from this btScaledBvhTriangleMeshShape 'localScaling'\nATTRIBUTE_ALIGNED16(class)\nbtScaledBvhTriangleMeshShape : public btConcaveShape\n{\n\tbtVector3 m_localScaling;\n\n\tbtBvhTriangleMeshShape* m_bvhTriMeshShape;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtScaledBvhTriangleMeshShape(btBvhTriangleMeshShape * childShape, const btVector3& localScaling);\n\n\tvirtual ~btScaledBvhTriangleMeshShape();\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tbtBvhTriangleMeshShape* getChildShape()\n\t{\n\t\treturn m_bvhTriMeshShape;\n\t}\n\n\tconst btBvhTriangleMeshShape* getChildShape() const\n\t{\n\t\treturn m_bvhTriMeshShape;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const { return \"SCALEDBVHTRIANGLEMESH\"; }\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btScaledTriangleMeshShapeData\n{\n\tbtTriangleMeshShapeData m_trimeshShapeData;\n\n\tbtVector3FloatData m_localScaling;\n};\n\nSIMD_FORCE_INLINE int btScaledBvhTriangleMeshShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btScaledTriangleMeshShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btScaledBvhTriangleMeshShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtScaledTriangleMeshShapeData* scaledMeshData = (btScaledTriangleMeshShapeData*)dataBuffer;\n\tm_bvhTriMeshShape->serialize(&scaledMeshData->m_trimeshShapeData, serializer);\n\tscaledMeshData->m_trimeshShapeData.m_collisionShapeData.m_shapeType = SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE;\n\tm_localScaling.serializeFloat(scaledMeshData->m_localScaling);\n\treturn \"btScaledTriangleMeshShapeData\";\n}\n\n#endif  //BT_SCALED_BVH_TRIANGLE_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btSdfCollisionShape.h",
    "content": "#ifndef BT_SDF_COLLISION_SHAPE_H\n#define BT_SDF_COLLISION_SHAPE_H\n\n#include \"btConcaveShape.h\"\n\nclass btSdfCollisionShape : public btConcaveShape\n{\n\tstruct btSdfCollisionShapeInternalData* m_data;\n\npublic:\n\tbtSdfCollisionShape();\n\tvirtual ~btSdfCollisionShape();\n\n\tbool initializeSDF(const char* sdfData, int sizeInBytes);\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3& inertia) const;\n\tvirtual const char* getName() const;\n\tvirtual void setMargin(btScalar margin);\n\tvirtual btScalar getMargin() const;\n\n\tvirtual void processAllTriangles(btTriangleCallback* callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tbool queryPoint(const btVector3& ptInSDF, btScalar& distOut, btVector3& normal);\n};\n\n#endif  //BT_SDF_COLLISION_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btShapeHull.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///btShapeHull implemented by John McCutchan.\n\n#ifndef BT_SHAPE_HULL_H\n#define BT_SHAPE_HULL_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"BulletCollision/CollisionShapes/btConvexShape.h\"\n\n///The btShapeHull class takes a btConvexShape, builds a simplified convex hull using btConvexHull and provides triangle indices and vertices.\n///It can be useful for to simplify a complex convex object and for visualization of a non-polyhedral convex object.\n///It approximates the convex hull using the supporting vertex of 42 directions.\nATTRIBUTE_ALIGNED16(class)\nbtShapeHull\n{\nprotected:\n\tbtAlignedObjectArray<btVector3> m_vertices;\n\tbtAlignedObjectArray<unsigned int> m_indices;\n\tunsigned int m_numIndices;\n\tconst btConvexShape* m_shape;\n\n\tstatic btVector3* getUnitSpherePoints(int highres = 0);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtShapeHull(const btConvexShape* shape);\n\t~btShapeHull();\n\n\tbool buildHull(btScalar margin, int highres = 0);\n\n\tint numTriangles() const;\n\tint numVertices() const;\n\tint numIndices() const;\n\n\tconst btVector3* getVertexPointer() const\n\t{\n\t\treturn &m_vertices[0];\n\t}\n\tconst unsigned int* getIndexPointer() const\n\t{\n\t\treturn &m_indices[0];\n\t}\n};\n\n#endif  //BT_SHAPE_HULL_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btSphereShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n#ifndef BT_SPHERE_MINKOWSKI_H\n#define BT_SPHERE_MINKOWSKI_H\n\n#include \"btConvexInternalShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n///The btSphereShape implements an implicit sphere, centered around a local origin with radius.\nATTRIBUTE_ALIGNED16(class)\nbtSphereShape : public btConvexInternalShape\n\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtSphereShape(btScalar radius) : btConvexInternalShape()\n\t{\n\t\tm_shapeType = SPHERE_SHAPE_PROXYTYPE;\n\t\tm_localScaling.setValue(1.0, 1.0, 1.0);\n\t\tm_implicitShapeDimensions.setZero();\n\t\tm_implicitShapeDimensions.setX(radius);\n\t\tm_collisionMargin = radius;\n\t\tm_padding = 0;\n\t}\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\t//notice that the vectors should be unit length\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tbtScalar getRadius() const { return m_implicitShapeDimensions.getX() * m_localScaling.getX(); }\n\n\tvoid setUnscaledRadius(btScalar radius)\n\t{\n\t\tm_implicitShapeDimensions.setX(radius);\n\t\tbtConvexInternalShape::setMargin(radius);\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const { return \"SPHERE\"; }\n\n\tvirtual void setMargin(btScalar margin)\n\t{\n\t\tbtConvexInternalShape::setMargin(margin);\n\t}\n\tvirtual btScalar getMargin() const\n\t{\n\t\t//to improve gjk behaviour, use radius+margin as the full margin, so never get into the penetration case\n\t\t//this means, non-uniform scaling is not supported anymore\n\t\treturn getRadius();\n\t}\n};\n\n#endif  //BT_SPHERE_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_STATIC_PLANE_SHAPE_H\n#define BT_STATIC_PLANE_SHAPE_H\n\n#include \"btConcaveShape.h\"\n\n///The btStaticPlaneShape simulates an infinite non-moving (static) collision plane.\nATTRIBUTE_ALIGNED16(class)\nbtStaticPlaneShape : public btConcaveShape\n{\nprotected:\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\n\tbtVector3 m_planeNormal;\n\tbtScalar m_planeConstant;\n\tbtVector3 m_localScaling;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtStaticPlaneShape(const btVector3& planeNormal, btScalar planeConstant);\n\n\tvirtual ~btStaticPlaneShape();\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\n\tconst btVector3& getPlaneNormal() const\n\t{\n\t\treturn m_planeNormal;\n\t}\n\n\tconst btScalar& getPlaneConstant() const\n\t{\n\t\treturn m_planeConstant;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const { return \"STATICPLANE\"; }\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btStaticPlaneShapeData\n{\n\tbtCollisionShapeData m_collisionShapeData;\n\n\tbtVector3FloatData m_localScaling;\n\tbtVector3FloatData m_planeNormal;\n\tfloat m_planeConstant;\n\tchar m_pad[4];\n};\n\nSIMD_FORCE_INLINE int btStaticPlaneShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btStaticPlaneShapeData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btStaticPlaneShape::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtStaticPlaneShapeData* planeData = (btStaticPlaneShapeData*)dataBuffer;\n\tbtCollisionShape::serialize(&planeData->m_collisionShapeData, serializer);\n\n\tm_localScaling.serializeFloat(planeData->m_localScaling);\n\tm_planeNormal.serializeFloat(planeData->m_planeNormal);\n\tplaneData->m_planeConstant = float(m_planeConstant);\n\n\t// Fill padding with zeros to appease msan.\n\tplaneData->m_pad[0] = 0;\n\tplaneData->m_pad[1] = 0;\n\tplaneData->m_pad[2] = 0;\n\tplaneData->m_pad[3] = 0;\n\n\treturn \"btStaticPlaneShapeData\";\n}\n\n#endif  //BT_STATIC_PLANE_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_STRIDING_MESHINTERFACE_H\n#define BT_STRIDING_MESHINTERFACE_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btTriangleCallback.h\"\n#include \"btConcaveShape.h\"\n\n///\tThe btStridingMeshInterface is the interface class for high performance generic access to triangle meshes, used in combination with btBvhTriangleMeshShape and some other collision shapes.\n/// Using index striding of 3*sizeof(integer) it can use triangle arrays, using index striding of 1*sizeof(integer) it can handle triangle strips.\n/// It allows for sharing graphics and collision meshes. Also it provides locking/unlocking of graphics meshes that are in gpu memory.\nATTRIBUTE_ALIGNED16(class)\nbtStridingMeshInterface\n{\nprotected:\n\tbtVector3 m_scaling;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtStridingMeshInterface() : m_scaling(btScalar(1.), btScalar(1.), btScalar(1.))\n\t{\n\t}\n\n\tvirtual ~btStridingMeshInterface();\n\n\tvirtual void InternalProcessAllTriangles(btInternalTriangleIndexCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\t///brute force method to calculate aabb\n\tvoid calculateAabbBruteForce(btVector3 & aabbMin, btVector3 & aabbMax);\n\n\t/// get read and write access to a subpart of a triangle mesh\n\t/// this subpart has a continuous array of vertices and indices\n\t/// in this way the mesh can be handled as chunks of memory with striding\n\t/// very similar to OpenGL vertexarray support\n\t/// make a call to unLockVertexBase when the read and write access is finished\n\tvirtual void getLockedVertexIndexBase(unsigned char** vertexbase, int& numverts, PHY_ScalarType& type, int& stride, unsigned char** indexbase, int& indexstride, int& numfaces, PHY_ScalarType& indicestype, int subpart = 0) = 0;\n\n\tvirtual void getLockedReadOnlyVertexIndexBase(const unsigned char** vertexbase, int& numverts, PHY_ScalarType& type, int& stride, const unsigned char** indexbase, int& indexstride, int& numfaces, PHY_ScalarType& indicestype, int subpart = 0) const = 0;\n\n\t/// unLockVertexBase finishes the access to a subpart of the triangle mesh\n\t/// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished\n\tvirtual void unLockVertexBase(int subpart) = 0;\n\n\tvirtual void unLockReadOnlyVertexBase(int subpart) const = 0;\n\n\t/// getNumSubParts returns the number of separate subparts\n\t/// each subpart has a continuous array of vertices and indices\n\tvirtual int getNumSubParts() const = 0;\n\n\tvirtual void preallocateVertices(int numverts) = 0;\n\tvirtual void preallocateIndices(int numindices) = 0;\n\n\tvirtual bool hasPremadeAabb() const { return false; }\n\tvirtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax) const\n\t{\n\t\t(void)aabbMin;\n\t\t(void)aabbMax;\n\t}\n\tvirtual void getPremadeAabb(btVector3 * aabbMin, btVector3 * aabbMax) const\n\t{\n\t\t(void)aabbMin;\n\t\t(void)aabbMax;\n\t}\n\n\tconst btVector3& getScaling() const\n\t{\n\t\treturn m_scaling;\n\t}\n\tvoid setScaling(const btVector3& scaling)\n\t{\n\t\tm_scaling = scaling;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nstruct btIntIndexData\n{\n\tint m_value;\n};\n\nstruct btShortIntIndexData\n{\n\tshort m_value;\n\tchar m_pad[2];\n};\n\nstruct btShortIntIndexTripletData\n{\n\tshort m_values[3];\n\tchar m_pad[2];\n};\n\nstruct btCharIndexTripletData\n{\n\tunsigned char m_values[3];\n\tchar m_pad;\n};\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtMeshPartData\n{\n\tbtVector3FloatData\t\t\t*m_vertices3f;\n\tbtVector3DoubleData\t\t\t*m_vertices3d;\n\n\tbtIntIndexData\t\t\t\t*m_indices32;\n\tbtShortIntIndexTripletData\t*m_3indices16;\n\tbtCharIndexTripletData\t\t*m_3indices8;\n\n\tbtShortIntIndexData\t\t\t*m_indices16;//backwards compatibility\n\n\tint                     m_numTriangles;//length of m_indices = m_numTriangles\n\tint                     m_numVertices;\n};\n\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtStridingMeshInterfaceData\n{\n\tbtMeshPartData\t*m_meshPartsPtr;\n\tbtVector3FloatData\tm_scaling;\n\tint\tm_numMeshParts;\n\tchar m_padding[4];\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btStridingMeshInterface::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btStridingMeshInterfaceData);\n}\n\n#endif  //BT_STRIDING_MESHINTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMPLEX_1TO4_SHAPE\n#define BT_SIMPLEX_1TO4_SHAPE\n\n#include \"btPolyhedralConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n\n///The btBU_Simplex1to4 implements tetrahedron, triangle, line, vertex collision shapes. In most cases it is better to use btConvexHullShape instead.\nATTRIBUTE_ALIGNED16(class)\nbtBU_Simplex1to4 : public btPolyhedralConvexAabbCachingShape\n{\nprotected:\n\tint m_numVertices;\n\tbtVector3 m_vertices[4];\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtBU_Simplex1to4();\n\n\tbtBU_Simplex1to4(const btVector3& pt0);\n\tbtBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1);\n\tbtBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1, const btVector3& pt2);\n\tbtBU_Simplex1to4(const btVector3& pt0, const btVector3& pt1, const btVector3& pt2, const btVector3& pt3);\n\n\tvoid reset()\n\t{\n\t\tm_numVertices = 0;\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvoid addVertex(const btVector3& pt);\n\n\t//PolyhedralConvexShape interface\n\n\tvirtual int getNumVertices() const;\n\n\tvirtual int getNumEdges() const;\n\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const;\n\n\tvirtual void getVertex(int i, btVector3& vtx) const;\n\n\tvirtual int getNumPlanes() const;\n\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const;\n\n\tvirtual int getIndex(int i) const;\n\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const;\n\n\t///getName is for debugging\n\tvirtual const char* getName() const { return \"btBU_Simplex1to4\"; }\n};\n\n#endif  //BT_SIMPLEX_1TO4_SHAPE\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRIANGLE_BUFFER_H\n#define BT_TRIANGLE_BUFFER_H\n\n#include \"btTriangleCallback.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\nstruct btTriangle\n{\n\tbtVector3 m_vertex0;\n\tbtVector3 m_vertex1;\n\tbtVector3 m_vertex2;\n\tint m_partId;\n\tint m_triangleIndex;\n};\n\n///The btTriangleBuffer callback can be useful to collect and store overlapping triangles between AABB and concave objects that support 'processAllTriangles'\n///Example usage of this class:\n///\t\t\tbtTriangleBuffer\ttriBuf;\n///\t\t\tconcaveShape->processAllTriangles(&triBuf,aabbMin, aabbMax);\n///\t\t\tfor (int i=0;i<triBuf.getNumTriangles();i++)\n///\t\t\t{\n///\t\t\t\tconst btTriangle& tri = triBuf.getTriangle(i);\n///\t\t\t\t//do something useful here with the triangle\n///\t\t\t}\nclass btTriangleBuffer : public btTriangleCallback\n{\n\tbtAlignedObjectArray<btTriangle> m_triangleBuffer;\n\npublic:\n\tvirtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);\n\n\tint getNumTriangles() const\n\t{\n\t\treturn int(m_triangleBuffer.size());\n\t}\n\n\tconst btTriangle& getTriangle(int index) const\n\t{\n\t\treturn m_triangleBuffer[index];\n\t}\n\n\tvoid clearBuffer()\n\t{\n\t\tm_triangleBuffer.clear();\n\t}\n};\n\n#endif  //BT_TRIANGLE_BUFFER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRIANGLE_CALLBACK_H\n#define BT_TRIANGLE_CALLBACK_H\n\n#include \"LinearMath/btVector3.h\"\n\n///The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTriangles.\n///This callback is called by processAllTriangles for all btConcaveShape derived class, such as  btBvhTriangleMeshShape, btStaticPlaneShape and btHeightfieldTerrainShape.\nclass btTriangleCallback\n{\npublic:\n\tvirtual ~btTriangleCallback();\n\tvirtual void processTriangle(btVector3* triangle, int partId, int triangleIndex) = 0;\n};\n\nclass btInternalTriangleIndexCallback\n{\npublic:\n\tvirtual ~btInternalTriangleIndexCallback();\n\tvirtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex) = 0;\n};\n\n#endif  //BT_TRIANGLE_CALLBACK_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRIANGLE_INDEX_VERTEX_ARRAY_H\n#define BT_TRIANGLE_INDEX_VERTEX_ARRAY_H\n\n#include \"btStridingMeshInterface.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btScalar.h\"\n\n///The btIndexedMesh indexes a single vertex and index array. Multiple btIndexedMesh objects can be passed into a btTriangleIndexVertexArray using addIndexedMesh.\n///Instead of the number of indices, we pass the number of triangles.\nATTRIBUTE_ALIGNED16(struct)\nbtIndexedMesh\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tint m_numTriangles;\n\tconst unsigned char* m_triangleIndexBase;\n\t// Size in byte of the indices for one triangle (3*sizeof(index_type) if the indices are tightly packed)\n\tint m_triangleIndexStride;\n\tint m_numVertices;\n\tconst unsigned char* m_vertexBase;\n\t// Size of a vertex, in bytes\n\tint m_vertexStride;\n\n\t// The index type is set when adding an indexed mesh to the\n\t// btTriangleIndexVertexArray, do not set it manually\n\tPHY_ScalarType m_indexType;\n\n\t// The vertex type has a default type similar to Bullet's precision mode (float or double)\n\t// but can be set manually if you for example run Bullet with double precision but have\n\t// mesh data in single precision..\n\tPHY_ScalarType m_vertexType;\n\n\tbtIndexedMesh()\n\t\t: m_indexType(PHY_INTEGER),\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t  m_vertexType(PHY_DOUBLE)\n#else   // BT_USE_DOUBLE_PRECISION\n\t\t  m_vertexType(PHY_FLOAT)\n#endif  // BT_USE_DOUBLE_PRECISION\n\t{\n\t}\n};\n\ntypedef btAlignedObjectArray<btIndexedMesh> IndexedMeshArray;\n\n///The btTriangleIndexVertexArray allows to access multiple triangle meshes, by indexing into existing triangle/index arrays.\n///Additional meshes can be added using addIndexedMesh\n///No duplicate is made of the vertex/index data, it only indexes into external vertex/index arrays.\n///So keep those arrays around during the lifetime of this btTriangleIndexVertexArray.\nATTRIBUTE_ALIGNED16(class)\nbtTriangleIndexVertexArray : public btStridingMeshInterface\n{\nprotected:\n\tIndexedMeshArray m_indexedMeshes;\n\tint m_pad[2];\n\tmutable int m_hasAabb;  // using int instead of bool to maintain alignment\n\tmutable btVector3 m_aabbMin;\n\tmutable btVector3 m_aabbMax;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtTriangleIndexVertexArray() : m_hasAabb(0)\n\t{\n\t}\n\n\tvirtual ~btTriangleIndexVertexArray();\n\n\t//just to be backwards compatible\n\tbtTriangleIndexVertexArray(int numTriangles, int* triangleIndexBase, int triangleIndexStride, int numVertices, btScalar* vertexBase, int vertexStride);\n\n\tvoid addIndexedMesh(const btIndexedMesh& mesh, PHY_ScalarType indexType = PHY_INTEGER)\n\t{\n\t\tm_indexedMeshes.push_back(mesh);\n\t\tm_indexedMeshes[m_indexedMeshes.size() - 1].m_indexType = indexType;\n\t}\n\n\tvirtual void getLockedVertexIndexBase(unsigned char** vertexbase, int& numverts, PHY_ScalarType& type, int& vertexStride, unsigned char** indexbase, int& indexstride, int& numfaces, PHY_ScalarType& indicestype, int subpart = 0);\n\n\tvirtual void getLockedReadOnlyVertexIndexBase(const unsigned char** vertexbase, int& numverts, PHY_ScalarType& type, int& vertexStride, const unsigned char** indexbase, int& indexstride, int& numfaces, PHY_ScalarType& indicestype, int subpart = 0) const;\n\n\t/// unLockVertexBase finishes the access to a subpart of the triangle mesh\n\t/// make a call to unLockVertexBase when the read and write access (using getLockedVertexIndexBase) is finished\n\tvirtual void unLockVertexBase(int subpart) { (void)subpart; }\n\n\tvirtual void unLockReadOnlyVertexBase(int subpart) const { (void)subpart; }\n\n\t/// getNumSubParts returns the number of separate subparts\n\t/// each subpart has a continuous array of vertices and indices\n\tvirtual int getNumSubParts() const\n\t{\n\t\treturn (int)m_indexedMeshes.size();\n\t}\n\n\tIndexedMeshArray& getIndexedMeshArray()\n\t{\n\t\treturn m_indexedMeshes;\n\t}\n\n\tconst IndexedMeshArray& getIndexedMeshArray() const\n\t{\n\t\treturn m_indexedMeshes;\n\t}\n\n\tvirtual void preallocateVertices(int numverts) { (void)numverts; }\n\tvirtual void preallocateIndices(int numindices) { (void)numindices; }\n\n\tvirtual bool hasPremadeAabb() const;\n\tvirtual void setPremadeAabb(const btVector3& aabbMin, const btVector3& aabbMax) const;\n\tvirtual void getPremadeAabb(btVector3 * aabbMin, btVector3 * aabbMax) const;\n};\n\n#endif  //BT_TRIANGLE_INDEX_VERTEX_ARRAY_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///This file was created by Alex Silverman\n\n#ifndef BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H\n#define BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H\n\n#include \"btTriangleIndexVertexArray.h\"\n\nATTRIBUTE_ALIGNED16(struct)\nbtMaterialProperties\n{\n\t///m_materialBase ==========> 2 btScalar values make up one material, friction then restitution\n\tint m_numMaterials;\n\tconst unsigned char* m_materialBase;\n\tint m_materialStride;\n\tPHY_ScalarType m_materialType;\n\t///m_numTriangles <=========== This exists in the btIndexedMesh object for the same subpart, but since we're\n\t///                           padding the structure, it can be reproduced at no real cost\n\t///m_triangleMaterials =====> 1 integer value makes up one entry\n\t///                           eg: m_triangleMaterials[1] = 5; // This will set triangle 2 to use material 5\n\tint m_numTriangles;\n\tconst unsigned char* m_triangleMaterialsBase;\n\tint m_triangleMaterialStride;\n\t///m_triangleType <========== Automatically set in addMaterialProperties\n\tPHY_ScalarType m_triangleType;\n};\n\ntypedef btAlignedObjectArray<btMaterialProperties> MaterialArray;\n\n///Teh btTriangleIndexVertexMaterialArray is built on TriangleIndexVertexArray\n///The addition of a material array allows for the utilization of the partID and\n///triangleIndex that are returned in the ContactAddedCallback.  As with\n///TriangleIndexVertexArray, no duplicate is made of the material data, so it\n///is the users responsibility to maintain the array during the lifetime of the\n///TriangleIndexVertexMaterialArray.\nATTRIBUTE_ALIGNED16(class)\nbtTriangleIndexVertexMaterialArray : public btTriangleIndexVertexArray\n{\nprotected:\n\tMaterialArray m_materials;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtTriangleIndexVertexMaterialArray()\n\t{\n\t}\n\n\tbtTriangleIndexVertexMaterialArray(int numTriangles, int* triangleIndexBase, int triangleIndexStride,\n\t\t\t\t\t\t\t\t\t   int numVertices, btScalar* vertexBase, int vertexStride,\n\t\t\t\t\t\t\t\t\t   int numMaterials, unsigned char* materialBase, int materialStride,\n\t\t\t\t\t\t\t\t\t   int* triangleMaterialsBase, int materialIndexStride);\n\n\tvirtual ~btTriangleIndexVertexMaterialArray() {}\n\n\tvoid addMaterialProperties(const btMaterialProperties& mat, PHY_ScalarType triangleType = PHY_INTEGER)\n\t{\n\t\tm_materials.push_back(mat);\n\t\tm_materials[m_materials.size() - 1].m_triangleType = triangleType;\n\t}\n\n\tvirtual void getLockedMaterialBase(unsigned char** materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride,\n\t\t\t\t\t\t\t\t\t   unsigned char** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart = 0);\n\n\tvirtual void getLockedReadOnlyMaterialBase(const unsigned char** materialBase, int& numMaterials, PHY_ScalarType& materialType, int& materialStride,\n\t\t\t\t\t\t\t\t\t\t\t   const unsigned char** triangleMaterialBase, int& numTriangles, int& triangleMaterialStride, PHY_ScalarType& triangleType, int subpart = 0);\n};\n\n#endif  //BT_MULTIMATERIAL_TRIANGLE_INDEX_VERTEX_ARRAY_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2010 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef _BT_TRIANGLE_INFO_MAP_H\n#define _BT_TRIANGLE_INFO_MAP_H\n\n#include \"LinearMath/btHashMap.h\"\n#include \"LinearMath/btSerializer.h\"\n\n///for btTriangleInfo m_flags\n#define TRI_INFO_V0V1_CONVEX 1\n#define TRI_INFO_V1V2_CONVEX 2\n#define TRI_INFO_V2V0_CONVEX 4\n\n#define TRI_INFO_V0V1_SWAP_NORMALB 8\n#define TRI_INFO_V1V2_SWAP_NORMALB 16\n#define TRI_INFO_V2V0_SWAP_NORMALB 32\n\n///The btTriangleInfo structure stores information to adjust collision normals to avoid collisions against internal edges\n///it can be generated using\nstruct btTriangleInfo\n{\n\tbtTriangleInfo()\n\t{\n\t\tm_edgeV0V1Angle = SIMD_2_PI;\n\t\tm_edgeV1V2Angle = SIMD_2_PI;\n\t\tm_edgeV2V0Angle = SIMD_2_PI;\n\t\tm_flags = 0;\n\t}\n\n\tint m_flags;\n\n\tbtScalar m_edgeV0V1Angle;\n\tbtScalar m_edgeV1V2Angle;\n\tbtScalar m_edgeV2V0Angle;\n};\n\ntypedef btHashMap<btHashInt, btTriangleInfo> btInternalTriangleInfoMap;\n\n///The btTriangleInfoMap stores edge angle information for some triangles. You can compute this information yourself or using btGenerateInternalEdgeInfo.\nstruct btTriangleInfoMap : public btInternalTriangleInfoMap\n{\n\tbtScalar m_convexEpsilon;          ///used to determine if an edge or contact normal is convex, using the dot product\n\tbtScalar m_planarEpsilon;          ///used to determine if a triangle edge is planar with zero angle\n\tbtScalar m_equalVertexThreshold;   ///used to compute connectivity: if the distance between two vertices is smaller than m_equalVertexThreshold, they are considered to be 'shared'\n\tbtScalar m_edgeDistanceThreshold;  ///used to determine edge contacts: if the closest distance between a contact point and an edge is smaller than this distance threshold it is considered to \"hit the edge\"\n\tbtScalar m_maxEdgeAngleThreshold;  //ignore edges that connect triangles at an angle larger than this m_maxEdgeAngleThreshold\n\tbtScalar m_zeroAreaThreshold;      ///used to determine if a triangle is degenerate (length squared of cross product of 2 triangle edges < threshold)\n\n\tbtTriangleInfoMap()\n\t{\n\t\tm_convexEpsilon = 0.00f;\n\t\tm_planarEpsilon = 0.0001f;\n\t\tm_equalVertexThreshold = btScalar(0.0001) * btScalar(0.0001);\n\t\tm_edgeDistanceThreshold = btScalar(0.1);\n\t\tm_zeroAreaThreshold = btScalar(0.0001) * btScalar(0.0001);\n\t\tm_maxEdgeAngleThreshold = SIMD_2_PI;\n\t}\n\tvirtual ~btTriangleInfoMap() {}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tvoid deSerialize(struct btTriangleInfoMapData& data);\n};\n\n// clang-format off\n\n///those fields have to be float and not btScalar for the serialization to work properly\nstruct\tbtTriangleInfoData\n{\n\tint\t\t\tm_flags;\n\tfloat\tm_edgeV0V1Angle;\n\tfloat\tm_edgeV1V2Angle;\n\tfloat\tm_edgeV2V0Angle;\n};\n\nstruct\tbtTriangleInfoMapData\n{\n\tint\t\t\t\t\t*m_hashTablePtr;\n\tint\t\t\t\t\t*m_nextPtr;\n\tbtTriangleInfoData\t*m_valueArrayPtr;\n\tint\t\t\t\t\t*m_keyArrayPtr;\n\n\tfloat\tm_convexEpsilon;\n\tfloat\tm_planarEpsilon;\n\tfloat\tm_equalVertexThreshold; \n\tfloat\tm_edgeDistanceThreshold;\n\tfloat\tm_zeroAreaThreshold;\n\n\tint\t\tm_nextSize;\n\tint\t\tm_hashTableSize;\n\tint\t\tm_numValues;\n\tint\t\tm_numKeys;\n\tchar\tm_padding[4];\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btTriangleInfoMap::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btTriangleInfoMapData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btTriangleInfoMap::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtTriangleInfoMapData* tmapData = (btTriangleInfoMapData*)dataBuffer;\n\ttmapData->m_convexEpsilon = (float)m_convexEpsilon;\n\ttmapData->m_planarEpsilon = (float)m_planarEpsilon;\n\ttmapData->m_equalVertexThreshold = (float)m_equalVertexThreshold;\n\ttmapData->m_edgeDistanceThreshold = (float)m_edgeDistanceThreshold;\n\ttmapData->m_zeroAreaThreshold = (float)m_zeroAreaThreshold;\n\n\ttmapData->m_hashTableSize = m_hashTable.size();\n\n\ttmapData->m_hashTablePtr = tmapData->m_hashTableSize ? (int*)serializer->getUniquePointer((void*)&m_hashTable[0]) : 0;\n\tif (tmapData->m_hashTablePtr)\n\t{\n\t\t//serialize an int buffer\n\t\tint sz = sizeof(int);\n\t\tint numElem = tmapData->m_hashTableSize;\n\t\tbtChunk* chunk = serializer->allocate(sz, numElem);\n\t\tint* memPtr = (int*)chunk->m_oldPtr;\n\t\tfor (int i = 0; i < numElem; i++, memPtr++)\n\t\t{\n\t\t\t*memPtr = m_hashTable[i];\n\t\t}\n\t\tserializer->finalizeChunk(chunk, \"int\", BT_ARRAY_CODE, (void*)&m_hashTable[0]);\n\t}\n\n\ttmapData->m_nextSize = m_next.size();\n\ttmapData->m_nextPtr = tmapData->m_nextSize ? (int*)serializer->getUniquePointer((void*)&m_next[0]) : 0;\n\tif (tmapData->m_nextPtr)\n\t{\n\t\tint sz = sizeof(int);\n\t\tint numElem = tmapData->m_nextSize;\n\t\tbtChunk* chunk = serializer->allocate(sz, numElem);\n\t\tint* memPtr = (int*)chunk->m_oldPtr;\n\t\tfor (int i = 0; i < numElem; i++, memPtr++)\n\t\t{\n\t\t\t*memPtr = m_next[i];\n\t\t}\n\t\tserializer->finalizeChunk(chunk, \"int\", BT_ARRAY_CODE, (void*)&m_next[0]);\n\t}\n\n\ttmapData->m_numValues = m_valueArray.size();\n\ttmapData->m_valueArrayPtr = tmapData->m_numValues ? (btTriangleInfoData*)serializer->getUniquePointer((void*)&m_valueArray[0]) : 0;\n\tif (tmapData->m_valueArrayPtr)\n\t{\n\t\tint sz = sizeof(btTriangleInfoData);\n\t\tint numElem = tmapData->m_numValues;\n\t\tbtChunk* chunk = serializer->allocate(sz, numElem);\n\t\tbtTriangleInfoData* memPtr = (btTriangleInfoData*)chunk->m_oldPtr;\n\t\tfor (int i = 0; i < numElem; i++, memPtr++)\n\t\t{\n\t\t\tmemPtr->m_edgeV0V1Angle = (float)m_valueArray[i].m_edgeV0V1Angle;\n\t\t\tmemPtr->m_edgeV1V2Angle = (float)m_valueArray[i].m_edgeV1V2Angle;\n\t\t\tmemPtr->m_edgeV2V0Angle = (float)m_valueArray[i].m_edgeV2V0Angle;\n\t\t\tmemPtr->m_flags = m_valueArray[i].m_flags;\n\t\t}\n\t\tserializer->finalizeChunk(chunk, \"btTriangleInfoData\", BT_ARRAY_CODE, (void*)&m_valueArray[0]);\n\t}\n\n\ttmapData->m_numKeys = m_keyArray.size();\n\ttmapData->m_keyArrayPtr = tmapData->m_numKeys ? (int*)serializer->getUniquePointer((void*)&m_keyArray[0]) : 0;\n\tif (tmapData->m_keyArrayPtr)\n\t{\n\t\tint sz = sizeof(int);\n\t\tint numElem = tmapData->m_numValues;\n\t\tbtChunk* chunk = serializer->allocate(sz, numElem);\n\t\tint* memPtr = (int*)chunk->m_oldPtr;\n\t\tfor (int i = 0; i < numElem; i++, memPtr++)\n\t\t{\n\t\t\t*memPtr = m_keyArray[i].getUid1();\n\t\t}\n\t\tserializer->finalizeChunk(chunk, \"int\", BT_ARRAY_CODE, (void*)&m_keyArray[0]);\n\t}\n\n\t// Fill padding with zeros to appease msan.\n\ttmapData->m_padding[0] = 0;\n\ttmapData->m_padding[1] = 0;\n\ttmapData->m_padding[2] = 0;\n\ttmapData->m_padding[3] = 0;\n\n\treturn \"btTriangleInfoMapData\";\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE void btTriangleInfoMap::deSerialize(btTriangleInfoMapData& tmapData)\n{\n\tm_convexEpsilon = tmapData.m_convexEpsilon;\n\tm_planarEpsilon = tmapData.m_planarEpsilon;\n\tm_equalVertexThreshold = tmapData.m_equalVertexThreshold;\n\tm_edgeDistanceThreshold = tmapData.m_edgeDistanceThreshold;\n\tm_zeroAreaThreshold = tmapData.m_zeroAreaThreshold;\n\tm_hashTable.resize(tmapData.m_hashTableSize);\n\tint i = 0;\n\tfor (i = 0; i < tmapData.m_hashTableSize; i++)\n\t{\n\t\tm_hashTable[i] = tmapData.m_hashTablePtr[i];\n\t}\n\tm_next.resize(tmapData.m_nextSize);\n\tfor (i = 0; i < tmapData.m_nextSize; i++)\n\t{\n\t\tm_next[i] = tmapData.m_nextPtr[i];\n\t}\n\tm_valueArray.resize(tmapData.m_numValues);\n\tfor (i = 0; i < tmapData.m_numValues; i++)\n\t{\n\t\tm_valueArray[i].m_edgeV0V1Angle = tmapData.m_valueArrayPtr[i].m_edgeV0V1Angle;\n\t\tm_valueArray[i].m_edgeV1V2Angle = tmapData.m_valueArrayPtr[i].m_edgeV1V2Angle;\n\t\tm_valueArray[i].m_edgeV2V0Angle = tmapData.m_valueArrayPtr[i].m_edgeV2V0Angle;\n\t\tm_valueArray[i].m_flags = tmapData.m_valueArrayPtr[i].m_flags;\n\t}\n\n\tm_keyArray.resize(tmapData.m_numKeys, btHashInt(0));\n\tfor (i = 0; i < tmapData.m_numKeys; i++)\n\t{\n\t\tm_keyArray[i].setUid1(tmapData.m_keyArrayPtr[i]);\n\t}\n}\n\n#endif  //_BT_TRIANGLE_INFO_MAP_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRIANGLE_MESH_H\n#define BT_TRIANGLE_MESH_H\n\n#include \"btTriangleIndexVertexArray.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n///The btTriangleMesh class is a convenience class derived from btTriangleIndexVertexArray, that provides storage for a concave triangle mesh. It can be used as data for the btBvhTriangleMeshShape.\n///It allows either 32bit or 16bit indices, and 4 (x-y-z-w) or 3 (x-y-z) component vertices.\n///If you want to share triangle/index data between graphics mesh and collision mesh (btBvhTriangleMeshShape), you can directly use btTriangleIndexVertexArray or derive your own class from btStridingMeshInterface.\n///Performance of btTriangleMesh and btTriangleIndexVertexArray used in a btBvhTriangleMeshShape is the same.\nclass btTriangleMesh : public btTriangleIndexVertexArray\n{\n\tbtAlignedObjectArray<btVector3> m_4componentVertices;\n\tbtAlignedObjectArray<btScalar> m_3componentVertices;\n\n\tbtAlignedObjectArray<unsigned int> m_32bitIndices;\n\tbtAlignedObjectArray<unsigned short int> m_16bitIndices;\n\tbool m_use32bitIndices;\n\tbool m_use4componentVertices;\n\npublic:\n\tbtScalar m_weldingThreshold;\n\n\tbtTriangleMesh(bool use32bitIndices = true, bool use4componentVertices = true);\n\n\tbool getUse32bitIndices() const\n\t{\n\t\treturn m_use32bitIndices;\n\t}\n\n\tbool getUse4componentVertices() const\n\t{\n\t\treturn m_use4componentVertices;\n\t}\n\t///By default addTriangle won't search for duplicate vertices, because the search is very slow for large triangle meshes.\n\t///In general it is better to directly use btTriangleIndexVertexArray instead.\n\tvoid addTriangle(const btVector3& vertex0, const btVector3& vertex1, const btVector3& vertex2, bool removeDuplicateVertices = false);\n\n\t///Add a triangle using its indices. Make sure the indices are pointing within the vertices array, so add the vertices first (and to be sure, avoid removal of duplicate vertices)\n\tvoid addTriangleIndices(int index1, int index2, int index3);\n\n\tint getNumTriangles() const;\n\n\tvirtual void preallocateVertices(int numverts);\n\tvirtual void preallocateIndices(int numindices);\n\n\t///findOrAddVertex is an internal method, use addTriangle instead\n\tint findOrAddVertex(const btVector3& vertex, bool removeDuplicateVertices);\n\t///addIndex is an internal method, use addTriangle instead\n\tvoid addIndex(int index);\n};\n\n#endif  //BT_TRIANGLE_MESH_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRIANGLE_MESH_SHAPE_H\n#define BT_TRIANGLE_MESH_SHAPE_H\n\n#include \"btConcaveShape.h\"\n#include \"btStridingMeshInterface.h\"\n\n///The btTriangleMeshShape is an internal concave triangle mesh interface. Don't use this class directly, use btBvhTriangleMeshShape instead.\nATTRIBUTE_ALIGNED16(class)\nbtTriangleMeshShape : public btConcaveShape\n{\nprotected:\n\tbtVector3 m_localAabbMin;\n\tbtVector3 m_localAabbMax;\n\tbtStridingMeshInterface* m_meshInterface;\n\n\t///btTriangleMeshShape constructor has been disabled/protected, so that users will not mistakenly use this class.\n\t///Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead!\n\tbtTriangleMeshShape(btStridingMeshInterface * meshInterface);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tvirtual ~btTriangleMeshShape();\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const\n\t{\n\t\tbtAssert(0);\n\t\treturn localGetSupportingVertex(vec);\n\t}\n\n\tvoid recalcLocalAabb();\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void processAllTriangles(btTriangleCallback * callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\n\tbtStridingMeshInterface* getMeshInterface()\n\t{\n\t\treturn m_meshInterface;\n\t}\n\n\tconst btStridingMeshInterface* getMeshInterface() const\n\t{\n\t\treturn m_meshInterface;\n\t}\n\n\tconst btVector3& getLocalAabbMin() const\n\t{\n\t\treturn m_localAabbMin;\n\t}\n\tconst btVector3& getLocalAabbMax() const\n\t{\n\t\treturn m_localAabbMax;\n\t}\n\n\t//debugging\n\tvirtual const char* getName() const { return \"TRIANGLEMESH\"; }\n};\n\n#endif  //BT_TRIANGLE_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btTriangleShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_OBB_TRIANGLE_MINKOWSKI_H\n#define BT_OBB_TRIANGLE_MINKOWSKI_H\n\n#include \"btConvexShape.h\"\n#include \"btBoxShape.h\"\n\nATTRIBUTE_ALIGNED16(class)\nbtTriangleShape : public btPolyhedralConvexShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtVector3 m_vertices1[3];\n\n\tvirtual int getNumVertices() const\n\t{\n\t\treturn 3;\n\t}\n\n\tbtVector3& getVertexPtr(int index)\n\t{\n\t\treturn m_vertices1[index];\n\t}\n\n\tconst btVector3& getVertexPtr(int index) const\n\t{\n\t\treturn m_vertices1[index];\n\t}\n\tvirtual void getVertex(int index, btVector3& vert) const\n\t{\n\t\tvert = m_vertices1[index];\n\t}\n\n\tvirtual int getNumEdges() const\n\t{\n\t\treturn 3;\n\t}\n\n\tvirtual void getEdge(int i, btVector3& pa, btVector3& pb) const\n\t{\n\t\tgetVertex(i, pa);\n\t\tgetVertex((i + 1) % 3, pb);\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\t//\t\tbtAssert(0);\n\t\tgetAabbSlow(t, aabbMin, aabbMax);\n\t}\n\n\tbtVector3 localGetSupportingVertexWithoutMargin(const btVector3& dir) const\n\t{\n\t\tbtVector3 dots = dir.dot3(m_vertices1[0], m_vertices1[1], m_vertices1[2]);\n\t\treturn m_vertices1[dots.maxAxis()];\n\t}\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const\n\t{\n\t\tfor (int i = 0; i < numVectors; i++)\n\t\t{\n\t\t\tconst btVector3& dir = vectors[i];\n\t\t\tbtVector3 dots = dir.dot3(m_vertices1[0], m_vertices1[1], m_vertices1[2]);\n\t\t\tsupportVerticesOut[i] = m_vertices1[dots.maxAxis()];\n\t\t}\n\t}\n\n\tbtTriangleShape() : btPolyhedralConvexShape()\n\t{\n\t\tm_shapeType = TRIANGLE_SHAPE_PROXYTYPE;\n\t}\n\n\tbtTriangleShape(const btVector3& p0, const btVector3& p1, const btVector3& p2) : btPolyhedralConvexShape()\n\t{\n\t\tm_shapeType = TRIANGLE_SHAPE_PROXYTYPE;\n\t\tm_vertices1[0] = p0;\n\t\tm_vertices1[1] = p1;\n\t\tm_vertices1[2] = p2;\n\t}\n\n\tvirtual void getPlane(btVector3 & planeNormal, btVector3 & planeSupport, int i) const\n\t{\n\t\tgetPlaneEquation(i, planeNormal, planeSupport);\n\t}\n\n\tvirtual int getNumPlanes() const\n\t{\n\t\treturn 1;\n\t}\n\n\tvoid calcNormal(btVector3 & normal) const\n\t{\n\t\tnormal = (m_vertices1[1] - m_vertices1[0]).cross(m_vertices1[2] - m_vertices1[0]);\n\t\tnormal.normalize();\n\t}\n\n\tvirtual void getPlaneEquation(int i, btVector3& planeNormal, btVector3& planeSupport) const\n\t{\n\t\t(void)i;\n\t\tcalcNormal(planeNormal);\n\t\tplaneSupport = m_vertices1[0];\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const\n\t{\n\t\t(void)mass;\n\t\tbtAssert(0);\n\t\tinertia.setValue(btScalar(0.), btScalar(0.), btScalar(0.));\n\t}\n\n\tvirtual bool isInside(const btVector3& pt, btScalar tolerance) const\n\t{\n\t\tbtVector3 normal;\n\t\tcalcNormal(normal);\n\t\t//distance to plane\n\t\tbtScalar dist = pt.dot(normal);\n\t\tbtScalar planeconst = m_vertices1[0].dot(normal);\n\t\tdist -= planeconst;\n\t\tif (dist >= -tolerance && dist <= tolerance)\n\t\t{\n\t\t\t//inside check on edge-planes\n\t\t\tint i;\n\t\t\tfor (i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tbtVector3 pa, pb;\n\t\t\t\tgetEdge(i, pa, pb);\n\t\t\t\tbtVector3 edge = pb - pa;\n\t\t\t\tbtVector3 edgeNormal = edge.cross(normal);\n\t\t\t\tedgeNormal.normalize();\n\t\t\t\tbtScalar dist = pt.dot(edgeNormal);\n\t\t\t\tbtScalar edgeConst = pa.dot(edgeNormal);\n\t\t\t\tdist -= edgeConst;\n\t\t\t\tif (dist < -tolerance)\n\t\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\t//debugging\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"Triangle\";\n\t}\n\n\tvirtual int getNumPreferredPenetrationDirections() const\n\t{\n\t\treturn 2;\n\t}\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const\n\t{\n\t\tcalcNormal(penetrationVector);\n\t\tif (index)\n\t\t\tpenetrationVector *= btScalar(-1.);\n\t}\n};\n\n#endif  //BT_OBB_TRIANGLE_MINKOWSKI_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_UNIFORM_SCALING_SHAPE_H\n#define BT_UNIFORM_SCALING_SHAPE_H\n\n#include \"btConvexShape.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"  // for the types\n\n///The btUniformScalingShape allows to re-use uniform scaled instances of btConvexShape in a memory efficient way.\n///Istead of using btUniformScalingShape, it is better to use the non-uniform setLocalScaling method on convex shapes that implement it.\nATTRIBUTE_ALIGNED16(class)\nbtUniformScalingShape : public btConvexShape\n{\n\tbtConvexShape* m_childConvexShape;\n\n\tbtScalar m_uniformScalingFactor;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtUniformScalingShape(btConvexShape * convexChildShape, btScalar uniformScalingFactor);\n\n\tvirtual ~btUniformScalingShape();\n\n\tvirtual btVector3 localGetSupportingVertexWithoutMargin(const btVector3& vec) const;\n\n\tvirtual btVector3 localGetSupportingVertex(const btVector3& vec) const;\n\n\tvirtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors, btVector3* supportVerticesOut, int numVectors) const;\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3 & inertia) const;\n\n\tbtScalar getUniformScalingFactor() const\n\t{\n\t\treturn m_uniformScalingFactor;\n\t}\n\n\tbtConvexShape* getChildShape()\n\t{\n\t\treturn m_childConvexShape;\n\t}\n\n\tconst btConvexShape* getChildShape() const\n\t{\n\t\treturn m_childConvexShape;\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"UniformScalingShape\";\n\t}\n\n\t///////////////////////////\n\n\t///getAabb's default implementation is brute force, expected derived classes to implement a fast dedicated version\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void getAabbSlow(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tvirtual void setLocalScaling(const btVector3& scaling);\n\tvirtual const btVector3& getLocalScaling() const;\n\n\tvirtual void setMargin(btScalar margin);\n\tvirtual btScalar getMargin() const;\n\n\tvirtual int getNumPreferredPenetrationDirections() const;\n\n\tvirtual void getPreferredPenetrationDirection(int index, btVector3& penetrationVector) const;\n};\n\n#endif  //BT_UNIFORM_SCALING_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btBoxCollision.h",
    "content": "#ifndef BT_BOX_COLLISION_H_INCLUDED\n#define BT_BOX_COLLISION_H_INCLUDED\n\n/*! \\file gim_box_collision.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btTransform.h\"\n\n///Swap numbers\n#define BT_SWAP_NUMBERS(a, b) \\\n\t{                         \\\n\t\ta = a + b;            \\\n\t\tb = a - b;            \\\n\t\ta = a - b;            \\\n\t}\n\n#define BT_MAX(a, b) (a < b ? b : a)\n#define BT_MIN(a, b) (a > b ? b : a)\n\n#define BT_GREATER(x, y) btFabs(x) > (y)\n\n#define BT_MAX3(a, b, c) BT_MAX(a, BT_MAX(b, c))\n#define BT_MIN3(a, b, c) BT_MIN(a, BT_MIN(b, c))\n\nenum eBT_PLANE_INTERSECTION_TYPE\n{\n\tBT_CONST_BACK_PLANE = 0,\n\tBT_CONST_COLLIDE_PLANE,\n\tBT_CONST_FRONT_PLANE\n};\n\n//SIMD_FORCE_INLINE bool test_cross_edge_box(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, const btVector3 & extend,\n//\tint dir_index0,\n//\tint dir_index1\n//\tint component_index0,\n//\tint component_index1)\n//{\n//\t// dir coords are -z and y\n//\n//\tconst btScalar dir0 = -edge[dir_index0];\n//\tconst btScalar dir1 = edge[dir_index1];\n//\tbtScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1;\n//\tbtScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1;\n//\t//find minmax\n//\tif(pmin>pmax)\n//\t{\n//\t\tBT_SWAP_NUMBERS(pmin,pmax);\n//\t}\n//\t//find extends\n//\tconst btScalar rad = extend[component_index0] * absolute_edge[dir_index0] +\n//\t\t\t\t\textend[component_index1] * absolute_edge[dir_index1];\n//\n//\tif(pmin>rad || -rad>pmax) return false;\n//\treturn true;\n//}\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2);\n//}\n//\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0);\n//}\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1);\n//}\n\n#define TEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, i_dir_0, i_dir_1, i_comp_0, i_comp_1) \\\n\t{                                                                                                               \\\n\t\tconst btScalar dir0 = -edge[i_dir_0];                                                                       \\\n\t\tconst btScalar dir1 = edge[i_dir_1];                                                                        \\\n\t\tbtScalar pmin = pointa[i_comp_0] * dir0 + pointa[i_comp_1] * dir1;                                          \\\n\t\tbtScalar pmax = pointb[i_comp_0] * dir0 + pointb[i_comp_1] * dir1;                                          \\\n\t\tif (pmin > pmax)                                                                                            \\\n\t\t{                                                                                                           \\\n\t\t\tBT_SWAP_NUMBERS(pmin, pmax);                                                                            \\\n\t\t}                                                                                                           \\\n\t\tconst btScalar abs_dir0 = absolute_edge[i_dir_0];                                                           \\\n\t\tconst btScalar abs_dir1 = absolute_edge[i_dir_1];                                                           \\\n\t\tconst btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;                           \\\n\t\tif (pmin > rad || -rad > pmax) return false;                                                                \\\n\t}\n\n#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 2, 1, 1, 2); \\\n\t}\n\n#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 0, 2, 2, 0); \\\n\t}\n\n#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 1, 0, 0, 1); \\\n\t}\n\n//! Returns the dot product between a vec3f and the col of a matrix\nSIMD_FORCE_INLINE btScalar bt_mat3_dot_col(\n\tconst btMatrix3x3 &mat, const btVector3 &vec3, int colindex)\n{\n\treturn vec3[0] * mat[0][colindex] + vec3[1] * mat[1][colindex] + vec3[2] * mat[2][colindex];\n}\n\n//!  Class for transforming a model1 to the space of model0\nATTRIBUTE_ALIGNED16(class)\nBT_BOX_BOX_TRANSFORM_CACHE\n{\npublic:\n\tbtVector3 m_T1to0;    //!< Transforms translation of model1 to model 0\n\tbtMatrix3x3 m_R1to0;  //!< Transforms Rotation of model1 to model 0, equal  to R0' * R1\n\tbtMatrix3x3 m_AR;     //!< Absolute value of m_R1to0\n\n\tSIMD_FORCE_INLINE void calc_absolute_matrix()\n\t{\n\t\t//\t\tstatic const btVector3 vepsi(1e-6f,1e-6f,1e-6f);\n\t\t//\t\tm_AR[0] = vepsi + m_R1to0[0].absolute();\n\t\t//\t\tm_AR[1] = vepsi + m_R1to0[1].absolute();\n\t\t//\t\tm_AR[2] = vepsi + m_R1to0[2].absolute();\n\n\t\tint i, j;\n\n\t\tfor (i = 0; i < 3; i++)\n\t\t{\n\t\t\tfor (j = 0; j < 3; j++)\n\t\t\t{\n\t\t\t\tm_AR[i][j] = 1e-6f + btFabs(m_R1to0[i][j]);\n\t\t\t}\n\t\t}\n\t}\n\n\tBT_BOX_BOX_TRANSFORM_CACHE()\n\t{\n\t}\n\n\t//! Calc the transformation relative  1 to 0. Inverts matrics by transposing\n\tSIMD_FORCE_INLINE void calc_from_homogenic(const btTransform &trans0, const btTransform &trans1)\n\t{\n\t\tbtTransform temp_trans = trans0.inverse();\n\t\ttemp_trans = temp_trans * trans1;\n\n\t\tm_T1to0 = temp_trans.getOrigin();\n\t\tm_R1to0 = temp_trans.getBasis();\n\n\t\tcalc_absolute_matrix();\n\t}\n\n\t//! Calcs the full invertion of the matrices. Useful for scaling matrices\n\tSIMD_FORCE_INLINE void calc_from_full_invert(const btTransform &trans0, const btTransform &trans1)\n\t{\n\t\tm_R1to0 = trans0.getBasis().inverse();\n\t\tm_T1to0 = m_R1to0 * (-trans0.getOrigin());\n\n\t\tm_T1to0 += m_R1to0 * trans1.getOrigin();\n\t\tm_R1to0 *= trans1.getBasis();\n\n\t\tcalc_absolute_matrix();\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const\n\t{\n\t\treturn point.dot3(m_R1to0[0], m_R1to0[1], m_R1to0[2]) + m_T1to0;\n\t}\n};\n\n#define BOX_PLANE_EPSILON 0.000001f\n\n//! Axis aligned box\nATTRIBUTE_ALIGNED16(class)\nbtAABB\n{\npublic:\n\tbtVector3 m_min;\n\tbtVector3 m_max;\n\n\tbtAABB()\n\t{\n\t}\n\n\tbtAABB(const btVector3 &V1,\n\t\t   const btVector3 &V2,\n\t\t   const btVector3 &V3)\n\t{\n\t\tm_min[0] = BT_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = BT_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = BT_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = BT_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = BT_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = BT_MAX3(V1[2], V2[2], V3[2]);\n\t}\n\n\tbtAABB(const btVector3 &V1,\n\t\t   const btVector3 &V2,\n\t\t   const btVector3 &V3,\n\t\t   btScalar margin)\n\t{\n\t\tm_min[0] = BT_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = BT_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = BT_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = BT_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = BT_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = BT_MAX3(V1[2], V2[2], V3[2]);\n\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tbtAABB(const btAABB &other) : m_min(other.m_min), m_max(other.m_max)\n\t{\n\t}\n\n\tbtAABB(const btAABB &other, btScalar margin) : m_min(other.m_min), m_max(other.m_max)\n\t{\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tSIMD_FORCE_INLINE void invalidate()\n\t{\n\t\tm_min[0] = SIMD_INFINITY;\n\t\tm_min[1] = SIMD_INFINITY;\n\t\tm_min[2] = SIMD_INFINITY;\n\t\tm_max[0] = -SIMD_INFINITY;\n\t\tm_max[1] = -SIMD_INFINITY;\n\t\tm_max[2] = -SIMD_INFINITY;\n\t}\n\n\tSIMD_FORCE_INLINE void increment_margin(btScalar margin)\n\t{\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tSIMD_FORCE_INLINE void copy_with_margin(const btAABB &other, btScalar margin)\n\t{\n\t\tm_min[0] = other.m_min[0] - margin;\n\t\tm_min[1] = other.m_min[1] - margin;\n\t\tm_min[2] = other.m_min[2] - margin;\n\n\t\tm_max[0] = other.m_max[0] + margin;\n\t\tm_max[1] = other.m_max[1] + margin;\n\t\tm_max[2] = other.m_max[2] + margin;\n\t}\n\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void calc_from_triangle(\n\t\tconst CLASS_POINT &V1,\n\t\tconst CLASS_POINT &V2,\n\t\tconst CLASS_POINT &V3)\n\t{\n\t\tm_min[0] = BT_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = BT_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = BT_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = BT_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = BT_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = BT_MAX3(V1[2], V2[2], V3[2]);\n\t}\n\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void calc_from_triangle_margin(\n\t\tconst CLASS_POINT &V1,\n\t\tconst CLASS_POINT &V2,\n\t\tconst CLASS_POINT &V3, btScalar margin)\n\t{\n\t\tm_min[0] = BT_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = BT_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = BT_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = BT_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = BT_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = BT_MAX3(V1[2], V2[2], V3[2]);\n\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\t//! Apply a transform to an AABB\n\tSIMD_FORCE_INLINE void appy_transform(const btTransform &trans)\n\t{\n\t\tbtVector3 center = (m_max + m_min) * 0.5f;\n\t\tbtVector3 extends = m_max - center;\n\t\t// Compute new center\n\t\tcenter = trans(center);\n\n\t\tbtVector3 textends = extends.dot3(trans.getBasis().getRow(0).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.getBasis().getRow(1).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.getBasis().getRow(2).absolute());\n\n\t\tm_min = center - textends;\n\t\tm_max = center + textends;\n\t}\n\n\t//! Apply a transform to an AABB\n\tSIMD_FORCE_INLINE void appy_transform_trans_cache(const BT_BOX_BOX_TRANSFORM_CACHE &trans)\n\t{\n\t\tbtVector3 center = (m_max + m_min) * 0.5f;\n\t\tbtVector3 extends = m_max - center;\n\t\t// Compute new center\n\t\tcenter = trans.transform(center);\n\n\t\tbtVector3 textends = extends.dot3(trans.m_R1to0.getRow(0).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.m_R1to0.getRow(1).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.m_R1to0.getRow(2).absolute());\n\n\t\tm_min = center - textends;\n\t\tm_max = center + textends;\n\t}\n\n\t//! Merges a Box\n\tSIMD_FORCE_INLINE void merge(const btAABB &box)\n\t{\n\t\tm_min[0] = BT_MIN(m_min[0], box.m_min[0]);\n\t\tm_min[1] = BT_MIN(m_min[1], box.m_min[1]);\n\t\tm_min[2] = BT_MIN(m_min[2], box.m_min[2]);\n\n\t\tm_max[0] = BT_MAX(m_max[0], box.m_max[0]);\n\t\tm_max[1] = BT_MAX(m_max[1], box.m_max[1]);\n\t\tm_max[2] = BT_MAX(m_max[2], box.m_max[2]);\n\t}\n\n\t//! Merges a point\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void merge_point(const CLASS_POINT &point)\n\t{\n\t\tm_min[0] = BT_MIN(m_min[0], point[0]);\n\t\tm_min[1] = BT_MIN(m_min[1], point[1]);\n\t\tm_min[2] = BT_MIN(m_min[2], point[2]);\n\n\t\tm_max[0] = BT_MAX(m_max[0], point[0]);\n\t\tm_max[1] = BT_MAX(m_max[1], point[1]);\n\t\tm_max[2] = BT_MAX(m_max[2], point[2]);\n\t}\n\n\t//! Gets the extend and center\n\tSIMD_FORCE_INLINE void get_center_extend(btVector3 & center, btVector3 & extend) const\n\t{\n\t\tcenter = (m_max + m_min) * 0.5f;\n\t\textend = m_max - center;\n\t}\n\n\t//! Finds the intersecting box between this box and the other.\n\tSIMD_FORCE_INLINE void find_intersection(const btAABB &other, btAABB &intersection) const\n\t{\n\t\tintersection.m_min[0] = BT_MAX(other.m_min[0], m_min[0]);\n\t\tintersection.m_min[1] = BT_MAX(other.m_min[1], m_min[1]);\n\t\tintersection.m_min[2] = BT_MAX(other.m_min[2], m_min[2]);\n\n\t\tintersection.m_max[0] = BT_MIN(other.m_max[0], m_max[0]);\n\t\tintersection.m_max[1] = BT_MIN(other.m_max[1], m_max[1]);\n\t\tintersection.m_max[2] = BT_MIN(other.m_max[2], m_max[2]);\n\t}\n\n\tSIMD_FORCE_INLINE bool has_collision(const btAABB &other) const\n\t{\n\t\tif (m_min[0] > other.m_max[0] ||\n\t\t\tm_max[0] < other.m_min[0] ||\n\t\t\tm_min[1] > other.m_max[1] ||\n\t\t\tm_max[1] < other.m_min[1] ||\n\t\t\tm_min[2] > other.m_max[2] ||\n\t\t\tm_max[2] < other.m_min[2])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/*! \\brief Finds the Ray intersection parameter.\n\t\\param aabb Aligned box\n\t\\param vorigin A vec3f with the origin of the ray\n\t\\param vdir A vec3f with the direction of the ray\n\t*/\n\tSIMD_FORCE_INLINE bool collide_ray(const btVector3 &vorigin, const btVector3 &vdir) const\n\t{\n\t\tbtVector3 extents, center;\n\t\tthis->get_center_extend(center, extents);\n\t\t;\n\n\t\tbtScalar Dx = vorigin[0] - center[0];\n\t\tif (BT_GREATER(Dx, extents[0]) && Dx * vdir[0] >= 0.0f) return false;\n\t\tbtScalar Dy = vorigin[1] - center[1];\n\t\tif (BT_GREATER(Dy, extents[1]) && Dy * vdir[1] >= 0.0f) return false;\n\t\tbtScalar Dz = vorigin[2] - center[2];\n\t\tif (BT_GREATER(Dz, extents[2]) && Dz * vdir[2] >= 0.0f) return false;\n\n\t\tbtScalar f = vdir[1] * Dz - vdir[2] * Dy;\n\t\tif (btFabs(f) > extents[1] * btFabs(vdir[2]) + extents[2] * btFabs(vdir[1])) return false;\n\t\tf = vdir[2] * Dx - vdir[0] * Dz;\n\t\tif (btFabs(f) > extents[0] * btFabs(vdir[2]) + extents[2] * btFabs(vdir[0])) return false;\n\t\tf = vdir[0] * Dy - vdir[1] * Dx;\n\t\tif (btFabs(f) > extents[0] * btFabs(vdir[1]) + extents[1] * btFabs(vdir[0])) return false;\n\t\treturn true;\n\t}\n\n\tSIMD_FORCE_INLINE void projection_interval(const btVector3 &direction, btScalar &vmin, btScalar &vmax) const\n\t{\n\t\tbtVector3 center = (m_max + m_min) * 0.5f;\n\t\tbtVector3 extend = m_max - center;\n\n\t\tbtScalar _fOrigin = direction.dot(center);\n\t\tbtScalar _fMaximumExtent = extend.dot(direction.absolute());\n\t\tvmin = _fOrigin - _fMaximumExtent;\n\t\tvmax = _fOrigin + _fMaximumExtent;\n\t}\n\n\tSIMD_FORCE_INLINE eBT_PLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const\n\t{\n\t\tbtScalar _fmin, _fmax;\n\t\tthis->projection_interval(plane, _fmin, _fmax);\n\n\t\tif (plane[3] > _fmax + BOX_PLANE_EPSILON)\n\t\t{\n\t\t\treturn BT_CONST_BACK_PLANE;  // 0\n\t\t}\n\n\t\tif (plane[3] + BOX_PLANE_EPSILON >= _fmin)\n\t\t{\n\t\t\treturn BT_CONST_COLLIDE_PLANE;  //1\n\t\t}\n\t\treturn BT_CONST_FRONT_PLANE;  //2\n\t}\n\n\tSIMD_FORCE_INLINE bool overlapping_trans_conservative(const btAABB &box, btTransform &trans1_to_0) const\n\t{\n\t\tbtAABB tbox = box;\n\t\ttbox.appy_transform(trans1_to_0);\n\t\treturn has_collision(tbox);\n\t}\n\n\tSIMD_FORCE_INLINE bool overlapping_trans_conservative2(const btAABB &box,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t   const BT_BOX_BOX_TRANSFORM_CACHE &trans1_to_0) const\n\t{\n\t\tbtAABB tbox = box;\n\t\ttbox.appy_transform_trans_cache(trans1_to_0);\n\t\treturn has_collision(tbox);\n\t}\n\n\t//! transcache is the transformation cache from box to this AABB\n\tSIMD_FORCE_INLINE bool overlapping_trans_cache(\n\t\tconst btAABB &box, const BT_BOX_BOX_TRANSFORM_CACHE &transcache, bool fulltest) const\n\t{\n\t\t//Taken from OPCODE\n\t\tbtVector3 ea, eb;  //extends\n\t\tbtVector3 ca, cb;  //extends\n\t\tget_center_extend(ca, ea);\n\t\tbox.get_center_extend(cb, eb);\n\n\t\tbtVector3 T;\n\t\tbtScalar t, t2;\n\t\tint i;\n\n\t\t// Class I : A's basis vectors\n\t\tfor (i = 0; i < 3; i++)\n\t\t{\n\t\t\tT[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i];\n\t\t\tt = transcache.m_AR[i].dot(eb) + ea[i];\n\t\t\tif (BT_GREATER(T[i], t)) return false;\n\t\t}\n\t\t// Class II : B's basis vectors\n\t\tfor (i = 0; i < 3; i++)\n\t\t{\n\t\t\tt = bt_mat3_dot_col(transcache.m_R1to0, T, i);\n\t\t\tt2 = bt_mat3_dot_col(transcache.m_AR, ea, i) + eb[i];\n\t\t\tif (BT_GREATER(t, t2)) return false;\n\t\t}\n\t\t// Class III : 9 cross products\n\t\tif (fulltest)\n\t\t{\n\t\t\tint j, m, n, o, p, q, r;\n\t\t\tfor (i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tm = (i + 1) % 3;\n\t\t\t\tn = (i + 2) % 3;\n\t\t\t\to = i == 0 ? 1 : 0;\n\t\t\t\tp = i == 2 ? 1 : 2;\n\t\t\t\tfor (j = 0; j < 3; j++)\n\t\t\t\t{\n\t\t\t\t\tq = j == 2 ? 1 : 2;\n\t\t\t\t\tr = j == 0 ? 1 : 0;\n\t\t\t\t\tt = T[n] * transcache.m_R1to0[m][j] - T[m] * transcache.m_R1to0[n][j];\n\t\t\t\t\tt2 = ea[o] * transcache.m_AR[p][j] + ea[p] * transcache.m_AR[o][j] +\n\t\t\t\t\t\t eb[r] * transcache.m_AR[i][q] + eb[q] * transcache.m_AR[i][r];\n\t\t\t\t\tif (BT_GREATER(t, t2)) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t//! Simple test for planes.\n\tSIMD_FORCE_INLINE bool collide_plane(\n\t\tconst btVector4 &plane) const\n\t{\n\t\teBT_PLANE_INTERSECTION_TYPE classify = plane_classify(plane);\n\t\treturn (classify == BT_CONST_COLLIDE_PLANE);\n\t}\n\n\t//! test for a triangle, with edges\n\tSIMD_FORCE_INLINE bool collide_triangle_exact(\n\t\tconst btVector3 &p1,\n\t\tconst btVector3 &p2,\n\t\tconst btVector3 &p3,\n\t\tconst btVector4 &triangle_plane) const\n\t{\n\t\tif (!collide_plane(triangle_plane)) return false;\n\n\t\tbtVector3 center, extends;\n\t\tthis->get_center_extend(center, extends);\n\n\t\tconst btVector3 v1(p1 - center);\n\t\tconst btVector3 v2(p2 - center);\n\t\tconst btVector3 v3(p3 - center);\n\n\t\t//First axis\n\t\tbtVector3 diff(v2 - v1);\n\t\tbtVector3 abs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\n\t\tdiff = v3 - v2;\n\t\tabs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\n\t\tdiff = v1 - v3;\n\t\tabs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\n\t\treturn true;\n\t}\n};\n\n//! Compairison of transformation objects\nSIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform &t1, const btTransform &t2)\n{\n\tif (!(t1.getOrigin() == t2.getOrigin())) return false;\n\n\tif (!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0))) return false;\n\tif (!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1))) return false;\n\tif (!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2))) return false;\n\treturn true;\n}\n\n#endif  // GIM_BOX_COLLISION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btClipPolygon.h",
    "content": "#ifndef BT_CLIP_POLYGON_H_INCLUDED\n#define BT_CLIP_POLYGON_H_INCLUDED\n\n/*! \\file btClipPolygon.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btGeometryUtil.h\"\n\nSIMD_FORCE_INLINE btScalar bt_distance_point_plane(const btVector4 &plane, const btVector3 &point)\n{\n\treturn point.dot(plane) - plane[3];\n}\n\n/*! Vector blending\nTakes two vectors a, b, blends them together*/\nSIMD_FORCE_INLINE void bt_vec_blend(btVector3 &vr, const btVector3 &va, const btVector3 &vb, btScalar blend_factor)\n{\n\tvr = (1 - blend_factor) * va + blend_factor * vb;\n}\n\n//! This function calcs the distance from a 3D plane\nSIMD_FORCE_INLINE void bt_plane_clip_polygon_collect(\n\tconst btVector3 &point0,\n\tconst btVector3 &point1,\n\tbtScalar dist0,\n\tbtScalar dist1,\n\tbtVector3 *clipped,\n\tint &clipped_count)\n{\n\tbool _prevclassif = (dist0 > SIMD_EPSILON);\n\tbool _classif = (dist1 > SIMD_EPSILON);\n\tif (_classif != _prevclassif)\n\t{\n\t\tbtScalar blendfactor = -dist0 / (dist1 - dist0);\n\t\tbt_vec_blend(clipped[clipped_count], point0, point1, blendfactor);\n\t\tclipped_count++;\n\t}\n\tif (!_classif)\n\t{\n\t\tclipped[clipped_count] = point1;\n\t\tclipped_count++;\n\t}\n}\n\n//! Clips a polygon by a plane\n/*!\n*\\return The count of the clipped counts\n*/\nSIMD_FORCE_INLINE int bt_plane_clip_polygon(\n\tconst btVector4 &plane,\n\tconst btVector3 *polygon_points,\n\tint polygon_point_count,\n\tbtVector3 *clipped)\n{\n\tint clipped_count = 0;\n\n\t//clip first point\n\tbtScalar firstdist = bt_distance_point_plane(plane, polygon_points[0]);\n\t;\n\tif (!(firstdist > SIMD_EPSILON))\n\t{\n\t\tclipped[clipped_count] = polygon_points[0];\n\t\tclipped_count++;\n\t}\n\n\tbtScalar olddist = firstdist;\n\tfor (int i = 1; i < polygon_point_count; i++)\n\t{\n\t\tbtScalar dist = bt_distance_point_plane(plane, polygon_points[i]);\n\n\t\tbt_plane_clip_polygon_collect(\n\t\t\tpolygon_points[i - 1], polygon_points[i],\n\t\t\tolddist,\n\t\t\tdist,\n\t\t\tclipped,\n\t\t\tclipped_count);\n\n\t\tolddist = dist;\n\t}\n\n\t//RETURN TO FIRST  point\n\n\tbt_plane_clip_polygon_collect(\n\t\tpolygon_points[polygon_point_count - 1], polygon_points[0],\n\t\tolddist,\n\t\tfirstdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\treturn clipped_count;\n}\n\n//! Clips a polygon by a plane\n/*!\n*\\param clipped must be an array of 16 points.\n*\\return The count of the clipped counts\n*/\nSIMD_FORCE_INLINE int bt_plane_clip_triangle(\n\tconst btVector4 &plane,\n\tconst btVector3 &point0,\n\tconst btVector3 &point1,\n\tconst btVector3 &point2,\n\tbtVector3 *clipped  // an allocated array of 16 points at least\n)\n{\n\tint clipped_count = 0;\n\n\t//clip first point0\n\tbtScalar firstdist = bt_distance_point_plane(plane, point0);\n\t;\n\tif (!(firstdist > SIMD_EPSILON))\n\t{\n\t\tclipped[clipped_count] = point0;\n\t\tclipped_count++;\n\t}\n\n\t// point 1\n\tbtScalar olddist = firstdist;\n\tbtScalar dist = bt_distance_point_plane(plane, point1);\n\n\tbt_plane_clip_polygon_collect(\n\t\tpoint0, point1,\n\t\tolddist,\n\t\tdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\tolddist = dist;\n\n\t// point 2\n\tdist = bt_distance_point_plane(plane, point2);\n\n\tbt_plane_clip_polygon_collect(\n\t\tpoint1, point2,\n\t\tolddist,\n\t\tdist,\n\t\tclipped,\n\t\tclipped_count);\n\tolddist = dist;\n\n\t//RETURN TO FIRST  point0\n\tbt_plane_clip_polygon_collect(\n\t\tpoint2, point0,\n\t\tolddist,\n\t\tfirstdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\treturn clipped_count;\n}\n\n#endif  // GIM_TRI_COLLISION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btCompoundFromGimpact.h",
    "content": "#ifndef BT_COMPOUND_FROM_GIMPACT\n#define BT_COMPOUND_FROM_GIMPACT\n\n#include \"BulletCollision/CollisionShapes/btCompoundShape.h\"\n#include \"btGImpactShape.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btRaycastCallback.h\"\n\nATTRIBUTE_ALIGNED16(class)\nbtCompoundFromGimpactShape : public btCompoundShape\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tvirtual ~btCompoundFromGimpactShape()\n\t{\n\t\t/*delete all the btBU_Simplex1to4 ChildShapes*/\n\t\tfor (int i = 0; i < m_children.size(); i++)\n\t\t{\n\t\t\tdelete m_children[i].m_childShape;\n\t\t}\n\t}\n};\n\nstruct MyCallback : public btTriangleRaycastCallback\n{\n\tint m_ignorePart;\n\tint m_ignoreTriangleIndex;\n\n\tMyCallback(const btVector3& from, const btVector3& to, int ignorePart, int ignoreTriangleIndex)\n\t\t: btTriangleRaycastCallback(from, to),\n\t\t  m_ignorePart(ignorePart),\n\t\t  m_ignoreTriangleIndex(ignoreTriangleIndex)\n\t{\n\t}\n\tvirtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex)\n\t{\n\t\tif (partId != m_ignorePart || triangleIndex != m_ignoreTriangleIndex)\n\t\t{\n\t\t\tif (hitFraction < m_hitFraction)\n\t\t\t\treturn hitFraction;\n\t\t}\n\n\t\treturn m_hitFraction;\n\t}\n};\nstruct MyInternalTriangleIndexCallback : public btInternalTriangleIndexCallback\n{\n\tconst btGImpactMeshShape* m_gimpactShape;\n\tbtCompoundShape* m_colShape;\n\tbtScalar m_depth;\n\n\tMyInternalTriangleIndexCallback(btCompoundShape* colShape, const btGImpactMeshShape* meshShape, btScalar depth)\n\t\t: m_colShape(colShape),\n\t\t  m_gimpactShape(meshShape),\n\t\t  m_depth(depth)\n\t{\n\t}\n\n\tvirtual void internalProcessTriangleIndex(btVector3* triangle, int partId, int triangleIndex)\n\t{\n\t\tbtVector3 scale = m_gimpactShape->getLocalScaling();\n\t\tbtVector3 v0 = triangle[0] * scale;\n\t\tbtVector3 v1 = triangle[1] * scale;\n\t\tbtVector3 v2 = triangle[2] * scale;\n\n\t\tbtVector3 centroid = (v0 + v1 + v2) / 3;\n\t\tbtVector3 normal = (v1 - v0).cross(v2 - v0);\n\t\tnormal.normalize();\n\t\tbtVector3 rayFrom = centroid;\n\t\tbtVector3 rayTo = centroid - normal * m_depth;\n\n\t\tMyCallback cb(rayFrom, rayTo, partId, triangleIndex);\n\n\t\tm_gimpactShape->processAllTrianglesRay(&cb, rayFrom, rayTo);\n\t\tif (cb.m_hitFraction < 1)\n\t\t{\n\t\t\trayTo.setInterpolate3(cb.m_from, cb.m_to, cb.m_hitFraction);\n\t\t\t//rayTo = cb.m_from;\n\t\t\t//rayTo = rayTo.lerp(cb.m_to,cb.m_hitFraction);\n\t\t\t//gDebugDraw.drawLine(tr(centroid),tr(centroid+normal),btVector3(1,0,0));\n\t\t}\n\n\t\tbtBU_Simplex1to4* tet = new btBU_Simplex1to4(v0, v1, v2, rayTo);\n\t\tbtTransform ident;\n\t\tident.setIdentity();\n\t\tm_colShape->addChildShape(ident, tet);\n\t}\n};\n\nbtCompoundShape* btCreateCompoundFromGimpactShape(const btGImpactMeshShape* gimpactMesh, btScalar depth)\n{\n\tbtCompoundShape* colShape = new btCompoundFromGimpactShape();\n\n\tbtTransform tr;\n\ttr.setIdentity();\n\n\tMyInternalTriangleIndexCallback cb(colShape, gimpactMesh, depth);\n\tbtVector3 aabbMin, aabbMax;\n\tgimpactMesh->getAabb(tr, aabbMin, aabbMax);\n\tgimpactMesh->getMeshInterface()->InternalProcessAllTriangles(&cb, aabbMin, aabbMax);\n\n\treturn colShape;\n}\n\n#endif  //BT_COMPOUND_FROM_GIMPACT\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btContactProcessing.h",
    "content": "#ifndef BT_CONTACT_H_INCLUDED\n#define BT_CONTACT_H_INCLUDED\n\n/*! \\file gim_contact.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"btTriangleShapeEx.h\"\n#include \"btContactProcessingStructs.h\"\n\nclass btContactArray : public btAlignedObjectArray<GIM_CONTACT>\n{\npublic:\n\tbtContactArray()\n\t{\n\t\treserve(64);\n\t}\n\n\tSIMD_FORCE_INLINE void push_contact(\n\t\tconst btVector3 &point, const btVector3 &normal,\n\t\tbtScalar depth, int feature1, int feature2)\n\t{\n\t\tpush_back(GIM_CONTACT(point, normal, depth, feature1, feature2));\n\t}\n\n\tSIMD_FORCE_INLINE void push_triangle_contacts(\n\t\tconst GIM_TRIANGLE_CONTACT &tricontact,\n\t\tint feature1, int feature2)\n\t{\n\t\tfor (int i = 0; i < tricontact.m_point_count; i++)\n\t\t{\n\t\t\tpush_contact(\n\t\t\t\ttricontact.m_points[i],\n\t\t\t\ttricontact.m_separating_normal,\n\t\t\t\ttricontact.m_penetration_depth, feature1, feature2);\n\t\t}\n\t}\n\n\tvoid merge_contacts(const btContactArray &contacts, bool normal_contact_average = true);\n\n\tvoid merge_contacts_unique(const btContactArray &contacts);\n};\n\n#endif  // GIM_CONTACT_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btContactProcessingStructs.h",
    "content": "#ifndef BT_CONTACT_H_STRUCTS_INCLUDED\n#define BT_CONTACT_H_STRUCTS_INCLUDED\n\n/*! \\file gim_contact.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"btTriangleShapeEx.h\"\n\n/**\nConfiguration var for applying interpolation of  contact normals\n*/\n#define NORMAL_CONTACT_AVERAGE 1\n\n#define CONTACT_DIFF_EPSILON 0.00001f\n\n///The GIM_CONTACT is an internal GIMPACT structure, similar to btManifoldPoint.\n///@todo: remove and replace GIM_CONTACT by btManifoldPoint.\nclass GIM_CONTACT\n{\npublic:\n\tbtVector3 m_point;\n\tbtVector3 m_normal;\n\tbtScalar m_depth;     //Positive value indicates interpenetration\n\tbtScalar m_distance;  //Padding not for use\n\tint m_feature1;       //Face number\n\tint m_feature2;       //Face number\npublic:\n\tGIM_CONTACT()\n\t{\n\t}\n\n\tGIM_CONTACT(const GIM_CONTACT &contact) : m_point(contact.m_point),\n\t\t\t\t\t\t\t\t\t\t\t  m_normal(contact.m_normal),\n\t\t\t\t\t\t\t\t\t\t\t  m_depth(contact.m_depth),\n\t\t\t\t\t\t\t\t\t\t\t  m_feature1(contact.m_feature1),\n\t\t\t\t\t\t\t\t\t\t\t  m_feature2(contact.m_feature2)\n\t{\n\t}\n\n\tGIM_CONTACT(const btVector3 &point, const btVector3 &normal,\n\t\t\t\tbtScalar depth, int feature1, int feature2) : m_point(point),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  m_normal(normal),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  m_depth(depth),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  m_feature1(feature1),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  m_feature2(feature2)\n\t{\n\t}\n\n\t//! Calcs key for coord classification\n\tSIMD_FORCE_INLINE unsigned int calc_key_contact() const\n\t{\n\t\tint _coords[] = {\n\t\t\t(int)(m_point[0] * 1000.0f + 1.0f),\n\t\t\t(int)(m_point[1] * 1333.0f),\n\t\t\t(int)(m_point[2] * 2133.0f + 3.0f)};\n\t\tunsigned int _hash = 0;\n\t\tunsigned int *_uitmp = (unsigned int *)(&_coords[0]);\n\t\t_hash = *_uitmp;\n\t\t_uitmp++;\n\t\t_hash += (*_uitmp) << 4;\n\t\t_uitmp++;\n\t\t_hash += (*_uitmp) << 8;\n\t\treturn _hash;\n\t}\n\n\tSIMD_FORCE_INLINE void interpolate_normals(btVector3 *normals, int normal_count)\n\t{\n\t\tbtVector3 vec_sum(m_normal);\n\t\tfor (int i = 0; i < normal_count; i++)\n\t\t{\n\t\t\tvec_sum += normals[i];\n\t\t}\n\n\t\tbtScalar vec_sum_len = vec_sum.length2();\n\t\tif (vec_sum_len < CONTACT_DIFF_EPSILON) return;\n\n\t\t//GIM_INV_SQRT(vec_sum_len,vec_sum_len); // 1/sqrt(vec_sum_len)\n\n\t\tm_normal = vec_sum / btSqrt(vec_sum_len);\n\t}\n};\n\n#endif  // BT_CONTACT_H_STRUCTS_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactBvh.h",
    "content": "#ifndef BT_GIMPACT_BVH_H_INCLUDED\n#define BT_GIMPACT_BVH_H_INCLUDED\n\n/*! \\file gim_box_set.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#include \"btBoxCollision.h\"\n#include \"btTriangleShapeEx.h\"\n#include \"btGImpactBvhStructs.h\"\n\n//! A pairset array\nclass btPairSet : public btAlignedObjectArray<GIM_PAIR>\n{\npublic:\n\tbtPairSet()\n\t{\n\t\treserve(32);\n\t}\n\tinline void push_pair(int index1, int index2)\n\t{\n\t\tpush_back(GIM_PAIR(index1, index2));\n\t}\n\n\tinline void push_pair_inv(int index1, int index2)\n\t{\n\t\tpush_back(GIM_PAIR(index2, index1));\n\t}\n};\n\nclass GIM_BVH_DATA_ARRAY : public btAlignedObjectArray<GIM_BVH_DATA>\n{\n};\n\nclass GIM_BVH_TREE_NODE_ARRAY : public btAlignedObjectArray<GIM_BVH_TREE_NODE>\n{\n};\n\n//! Basic Box tree structure\nclass btBvhTree\n{\nprotected:\n\tint m_num_nodes;\n\tGIM_BVH_TREE_NODE_ARRAY m_node_array;\n\nprotected:\n\tint _sort_and_calc_splitting_index(\n\t\tGIM_BVH_DATA_ARRAY& primitive_boxes,\n\t\tint startIndex, int endIndex, int splitAxis);\n\n\tint _calc_splitting_axis(GIM_BVH_DATA_ARRAY& primitive_boxes, int startIndex, int endIndex);\n\n\tvoid _build_sub_tree(GIM_BVH_DATA_ARRAY& primitive_boxes, int startIndex, int endIndex);\n\npublic:\n\tbtBvhTree()\n\t{\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! prototype functions for box tree management\n\t//!@{\n\tvoid build_tree(GIM_BVH_DATA_ARRAY& primitive_boxes);\n\n\tSIMD_FORCE_INLINE void clearNodes()\n\t{\n\t\tm_node_array.clear();\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE int getNodeCount() const\n\t{\n\t\treturn m_num_nodes;\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].isLeafNode();\n\t}\n\n\tSIMD_FORCE_INLINE int getNodeData(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].getDataIndex();\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB& bound) const\n\t{\n\t\tbound = m_node_array[nodeindex].m_bound;\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB& bound)\n\t{\n\t\tm_node_array[nodeindex].m_bound = bound;\n\t}\n\n\tSIMD_FORCE_INLINE int getLeftNode(int nodeindex) const\n\t{\n\t\treturn nodeindex + 1;\n\t}\n\n\tSIMD_FORCE_INLINE int getRightNode(int nodeindex) const\n\t{\n\t\tif (m_node_array[nodeindex + 1].isLeafNode()) return nodeindex + 2;\n\t\treturn nodeindex + 1 + m_node_array[nodeindex + 1].getEscapeIndex();\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].getEscapeIndex();\n\t}\n\n\tSIMD_FORCE_INLINE const GIM_BVH_TREE_NODE* get_node_pointer(int index = 0) const\n\t{\n\t\treturn &m_node_array[index];\n\t}\n\n\t//!@}\n};\n\n//! Prototype Base class for primitive classification\n/*!\nThis class is a wrapper for primitive collections.\nThis tells relevant info for the Bounding Box set classes, which take care of space classification.\nThis class can manage Compound shapes and trimeshes, and if it is managing trimesh then the  Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons.\n*/\nclass btPrimitiveManagerBase\n{\npublic:\n\tvirtual ~btPrimitiveManagerBase() {}\n\n\t//! determines if this manager consist on only triangles, which special case will be optimized\n\tvirtual bool is_trimesh() const = 0;\n\tvirtual int get_primitive_count() const = 0;\n\tvirtual void get_primitive_box(int prim_index, btAABB& primbox) const = 0;\n\t//! retrieves only the points of the triangle, and the collision margin\n\tvirtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle& triangle) const = 0;\n};\n\n//! Structure for containing Boxes\n/*!\nThis class offers an structure for managing a box tree of primitives.\nRequires a Primitive prototype (like btPrimitiveManagerBase )\n*/\nclass btGImpactBvh\n{\nprotected:\n\tbtBvhTree m_box_tree;\n\tbtPrimitiveManagerBase* m_primitive_manager;\n\nprotected:\n\t//stackless refit\n\tvoid refit();\n\npublic:\n\t//! this constructor doesn't build the tree. you must call\tbuildSet\n\tbtGImpactBvh()\n\t{\n\t\tm_primitive_manager = NULL;\n\t}\n\n\t//! this constructor doesn't build the tree. you must call\tbuildSet\n\tbtGImpactBvh(btPrimitiveManagerBase* primitive_manager)\n\t{\n\t\tm_primitive_manager = primitive_manager;\n\t}\n\n\tSIMD_FORCE_INLINE btAABB getGlobalBox() const\n\t{\n\t\tbtAABB totalbox;\n\t\tgetNodeBound(0, totalbox);\n\t\treturn totalbox;\n\t}\n\n\tSIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase* primitive_manager)\n\t{\n\t\tm_primitive_manager = primitive_manager;\n\t}\n\n\tSIMD_FORCE_INLINE btPrimitiveManagerBase* getPrimitiveManager() const\n\t{\n\t\treturn m_primitive_manager;\n\t}\n\n\t//! node manager prototype functions\n\t///@{\n\n\t//! this attemps to refit the box set.\n\tSIMD_FORCE_INLINE void update()\n\t{\n\t\trefit();\n\t}\n\n\t//! this rebuild the entire set\n\tvoid buildSet();\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tbool boxQuery(const btAABB& box, btAlignedObjectArray<int>& collided_results) const;\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tSIMD_FORCE_INLINE bool boxQueryTrans(const btAABB& box,\n\t\t\t\t\t\t\t\t\t\t const btTransform& transform, btAlignedObjectArray<int>& collided_results) const\n\t{\n\t\tbtAABB transbox = box;\n\t\ttransbox.appy_transform(transform);\n\t\treturn boxQuery(transbox, collided_results);\n\t}\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tbool rayQuery(\n\t\tconst btVector3& ray_dir, const btVector3& ray_origin,\n\t\tbtAlignedObjectArray<int>& collided_results) const;\n\n\t//! tells if this set has hierarcht\n\tSIMD_FORCE_INLINE bool hasHierarchy() const\n\t{\n\t\treturn true;\n\t}\n\n\t//! tells if this set is a trimesh\n\tSIMD_FORCE_INLINE bool isTrimesh() const\n\t{\n\t\treturn m_primitive_manager->is_trimesh();\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE int getNodeCount() const\n\t{\n\t\treturn m_box_tree.getNodeCount();\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.isLeafNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getNodeData(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getNodeData(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB& bound) const\n\t{\n\t\tm_box_tree.getNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB& bound)\n\t{\n\t\tm_box_tree.setNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE int getLeftNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getLeftNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getRightNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getRightNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getEscapeNodeIndex(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeTriangle(int nodeindex, btPrimitiveTriangle& triangle) const\n\t{\n\t\tm_primitive_manager->get_primitive_triangle(getNodeData(nodeindex), triangle);\n\t}\n\n\tSIMD_FORCE_INLINE const GIM_BVH_TREE_NODE* get_node_pointer(int index = 0) const\n\t{\n\t\treturn m_box_tree.get_node_pointer(index);\n\t}\n\n#ifdef TRI_COLLISION_PROFILING\n\tstatic float getAverageTreeCollisionTime();\n#endif  //TRI_COLLISION_PROFILING\n\n\tstatic void find_collision(btGImpactBvh* boxset1, const btTransform& trans1,\n\t\t\t\t\t\t\t   btGImpactBvh* boxset2, const btTransform& trans2,\n\t\t\t\t\t\t\t   btPairSet& collision_pairs);\n};\n\n#endif  // BT_GIMPACT_BVH_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactBvhStructs.h",
    "content": "#ifndef GIM_BOX_SET_STRUCT_H_INCLUDED\n#define GIM_BOX_SET_STRUCT_H_INCLUDED\n\n/*! \\file gim_box_set.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#include \"btBoxCollision.h\"\n#include \"btTriangleShapeEx.h\"\n#include \"gim_pair.h\" //for GIM_PAIR\n\n///GIM_BVH_DATA is an internal GIMPACT collision structure to contain axis aligned bounding box\nstruct GIM_BVH_DATA\n{\n\tbtAABB m_bound;\n\tint m_data;\n};\n\n//! Node Structure for trees\nclass GIM_BVH_TREE_NODE\n{\npublic:\n\tbtAABB m_bound;\n\nprotected:\n\tint m_escapeIndexOrDataIndex;\n\npublic:\n\tGIM_BVH_TREE_NODE()\n\t{\n\t\tm_escapeIndexOrDataIndex = 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool isLeafNode() const\n\t{\n\t\t//skipindex is negative (internal node), triangleindex >=0 (leafnode)\n\t\treturn (m_escapeIndexOrDataIndex >= 0);\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeIndex() const\n\t{\n\t\t//btAssert(m_escapeIndexOrDataIndex < 0);\n\t\treturn -m_escapeIndexOrDataIndex;\n\t}\n\n\tSIMD_FORCE_INLINE void setEscapeIndex(int index)\n\t{\n\t\tm_escapeIndexOrDataIndex = -index;\n\t}\n\n\tSIMD_FORCE_INLINE int getDataIndex() const\n\t{\n\t\t//btAssert(m_escapeIndexOrDataIndex >= 0);\n\n\t\treturn m_escapeIndexOrDataIndex;\n\t}\n\n\tSIMD_FORCE_INLINE void setDataIndex(int index)\n\t{\n\t\tm_escapeIndexOrDataIndex = index;\n\t}\n};\n\n#endif  // GIM_BOXPRUNING_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h",
    "content": "/*! \\file btGImpactShape.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H\n#define BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H\n\n#include \"BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h\"\n#include \"BulletCollision/BroadphaseCollision/btDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseInterface.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\nclass btDispatcher;\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionCreateFunc.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionDispatcher.h\"\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#include \"btGImpactShape.h\"\n#include \"BulletCollision/CollisionShapes/btStaticPlaneShape.h\"\n#include \"BulletCollision/CollisionShapes/btCompoundShape.h\"\n#include \"BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h\"\n#include \"LinearMath/btIDebugDraw.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h\"\n\n//! Collision Algorithm for GImpact Shapes\n/*!\nFor register this algorithm in Bullet, proceed as following:\n \\code\nbtCollisionDispatcher * dispatcher = static_cast<btCollisionDispatcher *>(m_dynamicsWorld ->getDispatcher());\nbtGImpactCollisionAlgorithm::registerAlgorithm(dispatcher);\n \\endcode\n*/\nclass btGImpactCollisionAlgorithm : public btActivatingCollisionAlgorithm\n{\nprotected:\n\tbtCollisionAlgorithm* m_convex_algorithm;\n\tbtPersistentManifold* m_manifoldPtr;\n\tbtManifoldResult* m_resultOut;\n\tconst btDispatcherInfo* m_dispatchInfo;\n\tint m_triface0;\n\tint m_part0;\n\tint m_triface1;\n\tint m_part1;\n\n\t//! Creates a new contact point\n\tSIMD_FORCE_INLINE btPersistentManifold* newContactManifold(const btCollisionObject* body0, const btCollisionObject* body1)\n\t{\n\t\tm_manifoldPtr = m_dispatcher->getNewManifold(body0, body1);\n\t\treturn m_manifoldPtr;\n\t}\n\n\tSIMD_FORCE_INLINE void destroyConvexAlgorithm()\n\t{\n\t\tif (m_convex_algorithm)\n\t\t{\n\t\t\tm_convex_algorithm->~btCollisionAlgorithm();\n\t\t\tm_dispatcher->freeCollisionAlgorithm(m_convex_algorithm);\n\t\t\tm_convex_algorithm = NULL;\n\t\t}\n\t}\n\n\tSIMD_FORCE_INLINE void destroyContactManifolds()\n\t{\n\t\tif (m_manifoldPtr == NULL) return;\n\t\tm_dispatcher->releaseManifold(m_manifoldPtr);\n\t\tm_manifoldPtr = NULL;\n\t}\n\n\tSIMD_FORCE_INLINE void clearCache()\n\t{\n\t\tdestroyContactManifolds();\n\t\tdestroyConvexAlgorithm();\n\n\t\tm_triface0 = -1;\n\t\tm_part0 = -1;\n\t\tm_triface1 = -1;\n\t\tm_part1 = -1;\n\t}\n\n\tSIMD_FORCE_INLINE btPersistentManifold* getLastManifold()\n\t{\n\t\treturn m_manifoldPtr;\n\t}\n\n\t// Call before process collision\n\tSIMD_FORCE_INLINE void checkManifold(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t{\n\t\tif (getLastManifold() == 0)\n\t\t{\n\t\t\tnewContactManifold(body0Wrap->getCollisionObject(), body1Wrap->getCollisionObject());\n\t\t}\n\n\t\tm_resultOut->setPersistentManifold(getLastManifold());\n\t}\n\n\t// Call before process collision\n\tSIMD_FORCE_INLINE btCollisionAlgorithm* newAlgorithm(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t{\n\t\tcheckManifold(body0Wrap, body1Wrap);\n\n\t\tbtCollisionAlgorithm* convex_algorithm = m_dispatcher->findAlgorithm(\n\t\t\tbody0Wrap, body1Wrap, getLastManifold(), BT_CONTACT_POINT_ALGORITHMS);\n\t\treturn convex_algorithm;\n\t}\n\n\t// Call before process collision\n\tSIMD_FORCE_INLINE void checkConvexAlgorithm(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t{\n\t\tif (m_convex_algorithm) return;\n\t\tm_convex_algorithm = newAlgorithm(body0Wrap, body1Wrap);\n\t}\n\n\tvoid addContactPoint(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t const btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t const btVector3& point,\n\t\t\t\t\t\t const btVector3& normal,\n\t\t\t\t\t\t btScalar distance);\n\n\t//! Collision routines\n\t//!@{\n\n\tvoid collide_gjk_triangles(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t\t   const btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t\t   const btGImpactMeshShapePart* shape0,\n\t\t\t\t\t\t\t   const btGImpactMeshShapePart* shape1,\n\t\t\t\t\t\t\t   const int* pairs, int pair_count);\n\n\tvoid collide_sat_triangles(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t\t   const btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t\t   const btGImpactMeshShapePart* shape0,\n\t\t\t\t\t\t\t   const btGImpactMeshShapePart* shape1,\n\t\t\t\t\t\t\t   const int* pairs, int pair_count);\n\n\tvoid shape_vs_shape_collision(\n\t\tconst btCollisionObjectWrapper* body0,\n\t\tconst btCollisionObjectWrapper* body1,\n\t\tconst btCollisionShape* shape0,\n\t\tconst btCollisionShape* shape1);\n\n\tvoid convex_vs_convex_collision(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t\t\t\tconst btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t\t\t\tconst btCollisionShape* shape0,\n\t\t\t\t\t\t\t\t\tconst btCollisionShape* shape1);\n\n\tvoid gimpact_vs_gimpact_find_pairs(\n\t\tconst btTransform& trans0,\n\t\tconst btTransform& trans1,\n\t\tconst btGImpactShapeInterface* shape0,\n\t\tconst btGImpactShapeInterface* shape1, btPairSet& pairset);\n\n\tvoid gimpact_vs_shape_find_pairs(\n\t\tconst btTransform& trans0,\n\t\tconst btTransform& trans1,\n\t\tconst btGImpactShapeInterface* shape0,\n\t\tconst btCollisionShape* shape1,\n\t\tbtAlignedObjectArray<int>& collided_primitives);\n\n\tvoid gimpacttrimeshpart_vs_plane_collision(\n\t\tconst btCollisionObjectWrapper* body0Wrap,\n\t\tconst btCollisionObjectWrapper* body1Wrap,\n\t\tconst btGImpactMeshShapePart* shape0,\n\t\tconst btStaticPlaneShape* shape1, bool swapped);\n\npublic:\n\tbtGImpactCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap);\n\n\tvirtual ~btGImpactCollisionAlgorithm();\n\n\tvirtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tbtScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut);\n\n\tvirtual void getAllContactManifolds(btManifoldArray& manifoldArray)\n\t{\n\t\tif (m_manifoldPtr)\n\t\t\tmanifoldArray.push_back(m_manifoldPtr);\n\t}\n\n\tbtManifoldResult* internalGetResultOut()\n\t{\n\t\treturn m_resultOut;\n\t}\n\n\tstruct CreateFunc : public btCollisionAlgorithmCreateFunc\n\t{\n\t\tvirtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap)\n\t\t{\n\t\t\tvoid* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btGImpactCollisionAlgorithm));\n\t\t\treturn new (mem) btGImpactCollisionAlgorithm(ci, body0Wrap, body1Wrap);\n\t\t}\n\t};\n\n\t//! Use this function for register the algorithm externally\n\tstatic void registerAlgorithm(btCollisionDispatcher* dispatcher);\n#ifdef TRI_COLLISION_PROFILING\n\t//! Gets the average time in miliseconds of tree collisions\n\tstatic float getAverageTreeCollisionTime();\n\n\t//! Gets the average time in miliseconds of triangle collisions\n\tstatic float getAverageTriangleCollisionTime();\n#endif  //TRI_COLLISION_PROFILING\n\n\t//! Collides two gimpact shapes\n\t/*!\n\t\\pre shape0 and shape1 couldn't be btGImpactMeshShape objects\n\t*/\n\n\tvoid gimpact_vs_gimpact(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t\tconst btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t\tconst btGImpactShapeInterface* shape0,\n\t\t\t\t\t\t\tconst btGImpactShapeInterface* shape1);\n\n\tvoid gimpact_vs_shape(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t  const btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t  const btGImpactShapeInterface* shape0,\n\t\t\t\t\t\t  const btCollisionShape* shape1, bool swapped);\n\n\tvoid gimpact_vs_compoundshape(const btCollisionObjectWrapper* body0Wrap,\n\t\t\t\t\t\t\t\t  const btCollisionObjectWrapper* body1Wrap,\n\t\t\t\t\t\t\t\t  const btGImpactShapeInterface* shape0,\n\t\t\t\t\t\t\t\t  const btCompoundShape* shape1, bool swapped);\n\n\tvoid gimpact_vs_concave(\n\t\tconst btCollisionObjectWrapper* body0Wrap,\n\t\tconst btCollisionObjectWrapper* body1Wrap,\n\t\tconst btGImpactShapeInterface* shape0,\n\t\tconst btConcaveShape* shape1, bool swapped);\n\n\t/// Accessor/Mutator pairs for Part and triangleID\n\tvoid setFace0(int value)\n\t{\n\t\tm_triface0 = value;\n\t}\n\tint getFace0()\n\t{\n\t\treturn m_triface0;\n\t}\n\tvoid setFace1(int value)\n\t{\n\t\tm_triface1 = value;\n\t}\n\tint getFace1()\n\t{\n\t\treturn m_triface1;\n\t}\n\tvoid setPart0(int value)\n\t{\n\t\tm_part0 = value;\n\t}\n\tint getPart0()\n\t{\n\t\treturn m_part0;\n\t}\n\tvoid setPart1(int value)\n\t{\n\t\tm_part1 = value;\n\t}\n\tint getPart1()\n\t{\n\t\treturn m_part1;\n\t}\n};\n\n//algorithm details\n//#define BULLET_TRIANGLE_COLLISION 1\n#define GIMPACT_VS_PLANE_COLLISION 1\n\n#endif  //BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h",
    "content": "/*! \\file btGImpactMassUtil.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef GIMPACT_MASS_UTIL_H\n#define GIMPACT_MASS_UTIL_H\n\n#include \"LinearMath/btTransform.h\"\n\nSIMD_FORCE_INLINE btVector3 gim_inertia_add_transformed(\n\tconst btVector3& source_inertia, const btVector3& added_inertia, const btTransform& transform)\n{\n\tbtMatrix3x3 rotatedTensor = transform.getBasis().scaled(added_inertia) * transform.getBasis().transpose();\n\n\tbtScalar x2 = transform.getOrigin()[0];\n\tx2 *= x2;\n\tbtScalar y2 = transform.getOrigin()[1];\n\ty2 *= y2;\n\tbtScalar z2 = transform.getOrigin()[2];\n\tz2 *= z2;\n\n\tbtScalar ix = rotatedTensor[0][0] * (y2 + z2);\n\tbtScalar iy = rotatedTensor[1][1] * (x2 + z2);\n\tbtScalar iz = rotatedTensor[2][2] * (x2 + y2);\n\n\treturn btVector3(source_inertia[0] + ix, source_inertia[1] + iy, source_inertia[2] + iz);\n}\n\nSIMD_FORCE_INLINE btVector3 gim_get_point_inertia(const btVector3& point, btScalar mass)\n{\n\tbtScalar x2 = point[0] * point[0];\n\tbtScalar y2 = point[1] * point[1];\n\tbtScalar z2 = point[2] * point[2];\n\treturn btVector3(mass * (y2 + z2), mass * (x2 + z2), mass * (x2 + y2));\n}\n\n#endif  //GIMPACT_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h",
    "content": "#ifndef GIM_QUANTIZED_SET_H_INCLUDED\n#define GIM_QUANTIZED_SET_H_INCLUDED\n\n/*! \\file btGImpactQuantizedBvh.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"btGImpactBvh.h\"\n#include \"btQuantization.h\"\n#include \"btGImpactQuantizedBvhStructs.h\"\n\nclass GIM_QUANTIZED_BVH_NODE_ARRAY : public btAlignedObjectArray<BT_QUANTIZED_BVH_NODE>\n{\n};\n\n//! Basic Box tree structure\nclass btQuantizedBvhTree\n{\nprotected:\n\tint m_num_nodes;\n\tGIM_QUANTIZED_BVH_NODE_ARRAY m_node_array;\n\tbtAABB m_global_bound;\n\tbtVector3 m_bvhQuantization;\n\nprotected:\n\tvoid calc_quantization(GIM_BVH_DATA_ARRAY& primitive_boxes, btScalar boundMargin = btScalar(1.0));\n\n\tint _sort_and_calc_splitting_index(\n\t\tGIM_BVH_DATA_ARRAY& primitive_boxes,\n\t\tint startIndex, int endIndex, int splitAxis);\n\n\tint _calc_splitting_axis(GIM_BVH_DATA_ARRAY& primitive_boxes, int startIndex, int endIndex);\n\n\tvoid _build_sub_tree(GIM_BVH_DATA_ARRAY& primitive_boxes, int startIndex, int endIndex);\n\npublic:\n\tbtQuantizedBvhTree()\n\t{\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! prototype functions for box tree management\n\t//!@{\n\tvoid build_tree(GIM_BVH_DATA_ARRAY& primitive_boxes);\n\n\tSIMD_FORCE_INLINE void quantizePoint(\n\t\tunsigned short* quantizedpoint, const btVector3& point) const\n\t{\n\t\tbt_quantize_clamp(quantizedpoint, point, m_global_bound.m_min, m_global_bound.m_max, m_bvhQuantization);\n\t}\n\n\tSIMD_FORCE_INLINE bool testQuantizedBoxOverlapp(\n\t\tint node_index,\n\t\tunsigned short* quantizedMin, unsigned short* quantizedMax) const\n\t{\n\t\treturn m_node_array[node_index].testQuantizedBoxOverlapp(quantizedMin, quantizedMax);\n\t}\n\n\tSIMD_FORCE_INLINE void clearNodes()\n\t{\n\t\tm_node_array.clear();\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE int getNodeCount() const\n\t{\n\t\treturn m_num_nodes;\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].isLeafNode();\n\t}\n\n\tSIMD_FORCE_INLINE int getNodeData(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].getDataIndex();\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB& bound) const\n\t{\n\t\tbound.m_min = bt_unquantize(\n\t\t\tm_node_array[nodeindex].m_quantizedAabbMin,\n\t\t\tm_global_bound.m_min, m_bvhQuantization);\n\n\t\tbound.m_max = bt_unquantize(\n\t\t\tm_node_array[nodeindex].m_quantizedAabbMax,\n\t\t\tm_global_bound.m_min, m_bvhQuantization);\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB& bound)\n\t{\n\t\tbt_quantize_clamp(m_node_array[nodeindex].m_quantizedAabbMin,\n\t\t\t\t\t\t  bound.m_min,\n\t\t\t\t\t\t  m_global_bound.m_min,\n\t\t\t\t\t\t  m_global_bound.m_max,\n\t\t\t\t\t\t  m_bvhQuantization);\n\n\t\tbt_quantize_clamp(m_node_array[nodeindex].m_quantizedAabbMax,\n\t\t\t\t\t\t  bound.m_max,\n\t\t\t\t\t\t  m_global_bound.m_min,\n\t\t\t\t\t\t  m_global_bound.m_max,\n\t\t\t\t\t\t  m_bvhQuantization);\n\t}\n\n\tSIMD_FORCE_INLINE int getLeftNode(int nodeindex) const\n\t{\n\t\treturn nodeindex + 1;\n\t}\n\n\tSIMD_FORCE_INLINE int getRightNode(int nodeindex) const\n\t{\n\t\tif (m_node_array[nodeindex + 1].isLeafNode()) return nodeindex + 2;\n\t\treturn nodeindex + 1 + m_node_array[nodeindex + 1].getEscapeIndex();\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].getEscapeIndex();\n\t}\n\n\tSIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE* get_node_pointer(int index = 0) const\n\t{\n\t\treturn &m_node_array[index];\n\t}\n\n\t//!@}\n};\n\n//! Structure for containing Boxes\n/*!\nThis class offers an structure for managing a box tree of primitives.\nRequires a Primitive prototype (like btPrimitiveManagerBase )\n*/\nclass btGImpactQuantizedBvh\n{\nprotected:\n\tbtQuantizedBvhTree m_box_tree;\n\tbtPrimitiveManagerBase* m_primitive_manager;\n\nprotected:\n\t//stackless refit\n\tvoid refit();\n\npublic:\n\t//! this constructor doesn't build the tree. you must call\tbuildSet\n\tbtGImpactQuantizedBvh()\n\t{\n\t\tm_primitive_manager = NULL;\n\t}\n\n\t//! this constructor doesn't build the tree. you must call\tbuildSet\n\tbtGImpactQuantizedBvh(btPrimitiveManagerBase* primitive_manager)\n\t{\n\t\tm_primitive_manager = primitive_manager;\n\t}\n\n\tSIMD_FORCE_INLINE btAABB getGlobalBox() const\n\t{\n\t\tbtAABB totalbox;\n\t\tgetNodeBound(0, totalbox);\n\t\treturn totalbox;\n\t}\n\n\tSIMD_FORCE_INLINE void setPrimitiveManager(btPrimitiveManagerBase* primitive_manager)\n\t{\n\t\tm_primitive_manager = primitive_manager;\n\t}\n\n\tSIMD_FORCE_INLINE btPrimitiveManagerBase* getPrimitiveManager() const\n\t{\n\t\treturn m_primitive_manager;\n\t}\n\n\t//! node manager prototype functions\n\t///@{\n\n\t//! this attemps to refit the box set.\n\tSIMD_FORCE_INLINE void update()\n\t{\n\t\trefit();\n\t}\n\n\t//! this rebuild the entire set\n\tvoid buildSet();\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tbool boxQuery(const btAABB& box, btAlignedObjectArray<int>& collided_results) const;\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tSIMD_FORCE_INLINE bool boxQueryTrans(const btAABB& box,\n\t\t\t\t\t\t\t\t\t\t const btTransform& transform, btAlignedObjectArray<int>& collided_results) const\n\t{\n\t\tbtAABB transbox = box;\n\t\ttransbox.appy_transform(transform);\n\t\treturn boxQuery(transbox, collided_results);\n\t}\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tbool rayQuery(\n\t\tconst btVector3& ray_dir, const btVector3& ray_origin,\n\t\tbtAlignedObjectArray<int>& collided_results) const;\n\n\t//! tells if this set has hierarcht\n\tSIMD_FORCE_INLINE bool hasHierarchy() const\n\t{\n\t\treturn true;\n\t}\n\n\t//! tells if this set is a trimesh\n\tSIMD_FORCE_INLINE bool isTrimesh() const\n\t{\n\t\treturn m_primitive_manager->is_trimesh();\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE int getNodeCount() const\n\t{\n\t\treturn m_box_tree.getNodeCount();\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.isLeafNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getNodeData(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getNodeData(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(int nodeindex, btAABB& bound) const\n\t{\n\t\tm_box_tree.getNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(int nodeindex, const btAABB& bound)\n\t{\n\t\tm_box_tree.setNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE int getLeftNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getLeftNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getRightNode(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getRightNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeNodeIndex(int nodeindex) const\n\t{\n\t\treturn m_box_tree.getEscapeNodeIndex(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeTriangle(int nodeindex, btPrimitiveTriangle& triangle) const\n\t{\n\t\tm_primitive_manager->get_primitive_triangle(getNodeData(nodeindex), triangle);\n\t}\n\n\tSIMD_FORCE_INLINE const BT_QUANTIZED_BVH_NODE* get_node_pointer(int index = 0) const\n\t{\n\t\treturn m_box_tree.get_node_pointer(index);\n\t}\n\n#ifdef TRI_COLLISION_PROFILING\n\tstatic float getAverageTreeCollisionTime();\n#endif  //TRI_COLLISION_PROFILING\n\n\tstatic void find_collision(const btGImpactQuantizedBvh* boxset1, const btTransform& trans1,\n\t\t\t\t\t\t\t   const btGImpactQuantizedBvh* boxset2, const btTransform& trans2,\n\t\t\t\t\t\t\t   btPairSet& collision_pairs);\n};\n\n#endif  // GIM_BOXPRUNING_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvhStructs.h",
    "content": "#ifndef GIM_QUANTIZED_SET_STRUCTS_H_INCLUDED\n#define GIM_QUANTIZED_SET_STRUCTS_H_INCLUDED\n\n/*! \\file btGImpactQuantizedBvh.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"btGImpactBvh.h\"\n#include \"btQuantization.h\"\n\n///btQuantizedBvhNode is a compressed aabb node, 16 bytes.\n///Node can be used for leafnode or internal node. Leafnodes can point to 32-bit triangle index (non-negative range).\nATTRIBUTE_ALIGNED16(struct)\nBT_QUANTIZED_BVH_NODE\n{\n\t//12 bytes\n\tunsigned short int m_quantizedAabbMin[3];\n\tunsigned short int m_quantizedAabbMax[3];\n\t//4 bytes\n\tint m_escapeIndexOrDataIndex;\n\n\tBT_QUANTIZED_BVH_NODE()\n\t{\n\t\tm_escapeIndexOrDataIndex = 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool isLeafNode() const\n\t{\n\t\t//skipindex is negative (internal node), triangleindex >=0 (leafnode)\n\t\treturn (m_escapeIndexOrDataIndex >= 0);\n\t}\n\n\tSIMD_FORCE_INLINE int getEscapeIndex() const\n\t{\n\t\t//btAssert(m_escapeIndexOrDataIndex < 0);\n\t\treturn -m_escapeIndexOrDataIndex;\n\t}\n\n\tSIMD_FORCE_INLINE void setEscapeIndex(int index)\n\t{\n\t\tm_escapeIndexOrDataIndex = -index;\n\t}\n\n\tSIMD_FORCE_INLINE int getDataIndex() const\n\t{\n\t\t//btAssert(m_escapeIndexOrDataIndex >= 0);\n\n\t\treturn m_escapeIndexOrDataIndex;\n\t}\n\n\tSIMD_FORCE_INLINE void setDataIndex(int index)\n\t{\n\t\tm_escapeIndexOrDataIndex = index;\n\t}\n\n\tSIMD_FORCE_INLINE bool testQuantizedBoxOverlapp(\n\t\tunsigned short* quantizedMin, unsigned short* quantizedMax) const\n\t{\n\t\tif (m_quantizedAabbMin[0] > quantizedMax[0] ||\n\t\t\tm_quantizedAabbMax[0] < quantizedMin[0] ||\n\t\t\tm_quantizedAabbMin[1] > quantizedMax[1] ||\n\t\t\tm_quantizedAabbMax[1] < quantizedMin[1] ||\n\t\t\tm_quantizedAabbMin[2] > quantizedMax[2] ||\n\t\t\tm_quantizedAabbMax[2] < quantizedMin[2])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n};\n\n#endif  // GIM_QUANTIZED_SET_STRUCTS_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGImpactShape.h",
    "content": "/*! \\file btGImpactShape.h\n\\author Francisco Len Njera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef GIMPACT_SHAPE_H\n#define GIMPACT_SHAPE_H\n\n#include \"BulletCollision/CollisionShapes/btCollisionShape.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleShape.h\"\n#include \"BulletCollision/CollisionShapes/btStridingMeshInterface.h\"\n#include \"BulletCollision/CollisionShapes/btCollisionMargin.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionWorld.h\"\n#include \"BulletCollision/CollisionShapes/btConcaveShape.h\"\n#include \"BulletCollision/CollisionShapes/btTetrahedronShape.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n#include \"btGImpactQuantizedBvh.h\"  // box tree class\n\n//! declare Quantized trees, (you can change to float based trees)\ntypedef btGImpactQuantizedBvh btGImpactBoxSet;\n\nenum eGIMPACT_SHAPE_TYPE\n{\n\tCONST_GIMPACT_COMPOUND_SHAPE = 0,\n\tCONST_GIMPACT_TRIMESH_SHAPE_PART,\n\tCONST_GIMPACT_TRIMESH_SHAPE\n};\n\n//! Helper class for tetrahedrons\nclass btTetrahedronShapeEx : public btBU_Simplex1to4\n{\npublic:\n\tbtTetrahedronShapeEx()\n\t{\n\t\tm_numVertices = 4;\n\t}\n\n\tSIMD_FORCE_INLINE void setVertices(\n\t\tconst btVector3& v0, const btVector3& v1,\n\t\tconst btVector3& v2, const btVector3& v3)\n\t{\n\t\tm_vertices[0] = v0;\n\t\tm_vertices[1] = v1;\n\t\tm_vertices[2] = v2;\n\t\tm_vertices[3] = v3;\n\t\trecalcLocalAabb();\n\t}\n};\n\n//! Base class for gimpact shapes\nclass btGImpactShapeInterface : public btConcaveShape\n{\nprotected:\n\tbtAABB m_localAABB;\n\tbool m_needs_update;\n\tbtVector3 localScaling;\n\tbtGImpactBoxSet m_box_set;  // optionally boxset\n\n\t//! use this function for perfofm refit in bounding boxes\n\t//! use this function for perfofm refit in bounding boxes\n\tvirtual void calcLocalAABB()\n\t{\n\t\tlockChildShapes();\n\t\tif (m_box_set.getNodeCount() == 0)\n\t\t{\n\t\t\tm_box_set.buildSet();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_box_set.update();\n\t\t}\n\t\tunlockChildShapes();\n\n\t\tm_localAABB = m_box_set.getGlobalBox();\n\t}\n\npublic:\n\tbtGImpactShapeInterface()\n\t{\n\t\tm_shapeType = GIMPACT_SHAPE_PROXYTYPE;\n\t\tm_localAABB.invalidate();\n\t\tm_needs_update = true;\n\t\tlocalScaling.setValue(1.f, 1.f, 1.f);\n\t}\n\n\t//! performs refit operation\n\t/*!\n\tUpdates the entire Box set of this shape.\n\t\\pre postUpdate() must be called for attemps to calculating the box set, else this function\n\t\twill does nothing.\n\t\\post if m_needs_update == true, then it calls calcLocalAABB();\n\t*/\n\tSIMD_FORCE_INLINE void updateBound()\n\t{\n\t\tif (!m_needs_update) return;\n\t\tcalcLocalAABB();\n\t\tm_needs_update = false;\n\t}\n\n\t//! If the Bounding box is not updated, then this class attemps to calculate it.\n\t/*!\n    \\post Calls updateBound() for update the box set.\n    */\n\tvoid getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtAABB transformedbox = m_localAABB;\n\t\ttransformedbox.appy_transform(t);\n\t\taabbMin = transformedbox.m_min;\n\t\taabbMax = transformedbox.m_max;\n\t}\n\n\t//! Tells to this object that is needed to refit the box set\n\tvirtual void postUpdate()\n\t{\n\t\tm_needs_update = true;\n\t}\n\n\t//! Obtains the local box, which is the global calculated box of the total of subshapes\n\tSIMD_FORCE_INLINE const btAABB& getLocalBox()\n\t{\n\t\treturn m_localAABB;\n\t}\n\n\tvirtual int getShapeType() const\n\t{\n\t\treturn GIMPACT_SHAPE_PROXYTYPE;\n\t}\n\n\t/*!\n\t\\post You must call updateBound() for update the box set.\n\t*/\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tlocalScaling = scaling;\n\t\tpostUpdate();\n\t}\n\n\tvirtual const btVector3& getLocalScaling() const\n\t{\n\t\treturn localScaling;\n\t}\n\n\tvirtual void setMargin(btScalar margin)\n\t{\n\t\tm_collisionMargin = margin;\n\t\tint i = getNumChildShapes();\n\t\twhile (i--)\n\t\t{\n\t\t\tbtCollisionShape* child = getChildShape(i);\n\t\t\tchild->setMargin(margin);\n\t\t}\n\n\t\tm_needs_update = true;\n\t}\n\n\t//! Subshape member functions\n\t//!@{\n\n\t//! Base method for determinig which kind of GIMPACT shape we get\n\tvirtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const = 0;\n\n\t//! gets boxset\n\tSIMD_FORCE_INLINE const btGImpactBoxSet* getBoxSet() const\n\t{\n\t\treturn &m_box_set;\n\t}\n\n\t//! Determines if this class has a hierarchy structure for sorting its primitives\n\tSIMD_FORCE_INLINE bool hasBoxSet() const\n\t{\n\t\tif (m_box_set.getNodeCount() == 0) return false;\n\t\treturn true;\n\t}\n\n\t//! Obtains the primitive manager\n\tvirtual const btPrimitiveManagerBase* getPrimitiveManager() const = 0;\n\n\t//! Gets the number of children\n\tvirtual int getNumChildShapes() const = 0;\n\n\t//! if true, then its children must get transforms.\n\tvirtual bool childrenHasTransform() const = 0;\n\n\t//! Determines if this shape has triangles\n\tvirtual bool needsRetrieveTriangles() const = 0;\n\n\t//! Determines if this shape has tetrahedrons\n\tvirtual bool needsRetrieveTetrahedrons() const = 0;\n\n\tvirtual void getBulletTriangle(int prim_index, btTriangleShapeEx& triangle) const = 0;\n\n\tvirtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx& tetrahedron) const = 0;\n\n\t//! call when reading child shapes\n\tvirtual void lockChildShapes() const\n\t{\n\t}\n\n\tvirtual void unlockChildShapes() const\n\t{\n\t}\n\n\t//! if this trimesh\n\tSIMD_FORCE_INLINE void getPrimitiveTriangle(int index, btPrimitiveTriangle& triangle) const\n\t{\n\t\tgetPrimitiveManager()->get_primitive_triangle(index, triangle);\n\t}\n\n\t//! Retrieves the bound from a child\n\t/*!\n    */\n\tvirtual void getChildAabb(int child_index, const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtAABB child_aabb;\n\t\tgetPrimitiveManager()->get_primitive_box(child_index, child_aabb);\n\t\tchild_aabb.appy_transform(t);\n\t\taabbMin = child_aabb.m_min;\n\t\taabbMax = child_aabb.m_max;\n\t}\n\n\t//! Gets the children\n\tvirtual btCollisionShape* getChildShape(int index) = 0;\n\n\t//! Gets the child\n\tvirtual const btCollisionShape* getChildShape(int index) const = 0;\n\n\t//! Gets the children transform\n\tvirtual btTransform getChildTransform(int index) const = 0;\n\n\t//! Sets the children transform\n\t/*!\n\t\\post You must call updateBound() for update the box set.\n\t*/\n\tvirtual void setChildTransform(int index, const btTransform& transform) = 0;\n\n\t//!@}\n\n\t//! virtual method for ray collision\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const\n\t{\n\t\t(void)rayFrom;\n\t\t(void)rayTo;\n\t\t(void)resultCallback;\n\t}\n\n\t//! Function for retrieve triangles.\n\t/*!\n\tIt gives the triangles in local space\n\t*/\n\tvirtual void processAllTriangles(btTriangleCallback* callback, const btVector3& aabbMin, const btVector3& aabbMax) const\n\t{\n\t\t(void)callback;\n\t\t(void)aabbMin;\n\t\t(void)aabbMax;\n\t}\n\n\t//! Function for retrieve triangles.\n\t/*!\n\tIt gives the triangles in local space\n\t*/\n\tvirtual void processAllTrianglesRay(btTriangleCallback* /*callback*/, const btVector3& /*rayFrom*/, const btVector3& /*rayTo*/) const\n\t{\n\t}\n\n\t//!@}\n};\n\n//! btGImpactCompoundShape allows to handle multiple btCollisionShape objects at once\n/*!\nThis class only can manage Convex subshapes\n*/\nclass btGImpactCompoundShape : public btGImpactShapeInterface\n{\npublic:\n\t//! compound primitive manager\n\tclass CompoundPrimitiveManager : public btPrimitiveManagerBase\n\t{\n\tpublic:\n\t\tvirtual ~CompoundPrimitiveManager() {}\n\t\tbtGImpactCompoundShape* m_compoundShape;\n\n\t\tCompoundPrimitiveManager(const CompoundPrimitiveManager& compound)\n\t\t\t: btPrimitiveManagerBase()\n\t\t{\n\t\t\tm_compoundShape = compound.m_compoundShape;\n\t\t}\n\n\t\tCompoundPrimitiveManager(btGImpactCompoundShape* compoundShape)\n\t\t{\n\t\t\tm_compoundShape = compoundShape;\n\t\t}\n\n\t\tCompoundPrimitiveManager()\n\t\t{\n\t\t\tm_compoundShape = NULL;\n\t\t}\n\n\t\tvirtual bool is_trimesh() const\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tvirtual int get_primitive_count() const\n\t\t{\n\t\t\treturn (int)m_compoundShape->getNumChildShapes();\n\t\t}\n\n\t\tvirtual void get_primitive_box(int prim_index, btAABB& primbox) const\n\t\t{\n\t\t\tbtTransform prim_trans;\n\t\t\tif (m_compoundShape->childrenHasTransform())\n\t\t\t{\n\t\t\t\tprim_trans = m_compoundShape->getChildTransform(prim_index);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tprim_trans.setIdentity();\n\t\t\t}\n\t\t\tconst btCollisionShape* shape = m_compoundShape->getChildShape(prim_index);\n\t\t\tshape->getAabb(prim_trans, primbox.m_min, primbox.m_max);\n\t\t}\n\n\t\tvirtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle& triangle) const\n\t\t{\n\t\t\tbtAssert(0);\n\t\t\t(void)prim_index;\n\t\t\t(void)triangle;\n\t\t}\n\t};\n\nprotected:\n\tCompoundPrimitiveManager m_primitive_manager;\n\tbtAlignedObjectArray<btTransform> m_childTransforms;\n\tbtAlignedObjectArray<btCollisionShape*> m_childShapes;\n\npublic:\n\tbtGImpactCompoundShape(bool children_has_transform = true)\n\t{\n\t\t(void)children_has_transform;\n\t\tm_primitive_manager.m_compoundShape = this;\n\t\tm_box_set.setPrimitiveManager(&m_primitive_manager);\n\t}\n\n\tvirtual ~btGImpactCompoundShape()\n\t{\n\t}\n\n\t//! if true, then its children must get transforms.\n\tvirtual bool childrenHasTransform() const\n\t{\n\t\tif (m_childTransforms.size() == 0) return false;\n\t\treturn true;\n\t}\n\n\t//! Obtains the primitive manager\n\tvirtual const btPrimitiveManagerBase* getPrimitiveManager() const\n\t{\n\t\treturn &m_primitive_manager;\n\t}\n\n\t//! Obtains the compopund primitive manager\n\tSIMD_FORCE_INLINE CompoundPrimitiveManager* getCompoundPrimitiveManager()\n\t{\n\t\treturn &m_primitive_manager;\n\t}\n\n\t//! Gets the number of children\n\tvirtual int getNumChildShapes() const\n\t{\n\t\treturn m_childShapes.size();\n\t}\n\n\t//! Use this method for adding children. Only Convex shapes are allowed.\n\tvoid addChildShape(const btTransform& localTransform, btCollisionShape* shape)\n\t{\n\t\tbtAssert(shape->isConvex());\n\t\tm_childTransforms.push_back(localTransform);\n\t\tm_childShapes.push_back(shape);\n\t}\n\n\t//! Use this method for adding children. Only Convex shapes are allowed.\n\tvoid addChildShape(btCollisionShape* shape)\n\t{\n\t\tbtAssert(shape->isConvex());\n\t\tm_childShapes.push_back(shape);\n\t}\n\n\t//! Gets the children\n\tvirtual btCollisionShape* getChildShape(int index)\n\t{\n\t\treturn m_childShapes[index];\n\t}\n\n\t//! Gets the children\n\tvirtual const btCollisionShape* getChildShape(int index) const\n\t{\n\t\treturn m_childShapes[index];\n\t}\n\n\t//! Retrieves the bound from a child\n\t/*!\n    */\n\tvirtual void getChildAabb(int child_index, const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tif (childrenHasTransform())\n\t\t{\n\t\t\tm_childShapes[child_index]->getAabb(t * m_childTransforms[child_index], aabbMin, aabbMax);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_childShapes[child_index]->getAabb(t, aabbMin, aabbMax);\n\t\t}\n\t}\n\n\t//! Gets the children transform\n\tvirtual btTransform getChildTransform(int index) const\n\t{\n\t\tbtAssert(m_childTransforms.size() == m_childShapes.size());\n\t\treturn m_childTransforms[index];\n\t}\n\n\t//! Sets the children transform\n\t/*!\n\t\\post You must call updateBound() for update the box set.\n\t*/\n\tvirtual void setChildTransform(int index, const btTransform& transform)\n\t{\n\t\tbtAssert(m_childTransforms.size() == m_childShapes.size());\n\t\tm_childTransforms[index] = transform;\n\t\tpostUpdate();\n\t}\n\n\t//! Determines if this shape has triangles\n\tvirtual bool needsRetrieveTriangles() const\n\t{\n\t\treturn false;\n\t}\n\n\t//! Determines if this shape has tetrahedrons\n\tvirtual bool needsRetrieveTetrahedrons() const\n\t{\n\t\treturn false;\n\t}\n\n\tvirtual void getBulletTriangle(int prim_index, btTriangleShapeEx& triangle) const\n\t{\n\t\t(void)prim_index;\n\t\t(void)triangle;\n\t\tbtAssert(0);\n\t}\n\n\tvirtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx& tetrahedron) const\n\t{\n\t\t(void)prim_index;\n\t\t(void)tetrahedron;\n\t\tbtAssert(0);\n\t}\n\n\t//! Calculates the exact inertia tensor for this shape\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3& inertia) const;\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"GImpactCompound\";\n\t}\n\n\tvirtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const\n\t{\n\t\treturn CONST_GIMPACT_COMPOUND_SHAPE;\n\t}\n};\n\n//! This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.\n/*!\n- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShapePart, then you must call updateBound() after creating the mesh\n- When making operations with this shape, you must call <b>lock</b> before accessing to the trimesh primitives, and then call <b>unlock</b>\n- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices.\n\n*/\nclass btGImpactMeshShapePart : public btGImpactShapeInterface\n{\npublic:\n\t//! Trimesh primitive manager\n\t/*!\n\tManages the info from btStridingMeshInterface object and controls the Lock/Unlock mechanism\n\t*/\n\tclass TrimeshPrimitiveManager : public btPrimitiveManagerBase\n\t{\n\tpublic:\n\t\tbtScalar m_margin;\n\t\tbtStridingMeshInterface* m_meshInterface;\n\t\tbtVector3 m_scale;\n\t\tint m_part;\n\t\tint m_lock_count;\n\t\tconst unsigned char* vertexbase;\n\t\tint numverts;\n\t\tPHY_ScalarType type;\n\t\tint stride;\n\t\tconst unsigned char* indexbase;\n\t\tint indexstride;\n\t\tint numfaces;\n\t\tPHY_ScalarType indicestype;\n\n\t\tTrimeshPrimitiveManager()\n\t\t{\n\t\t\tm_meshInterface = NULL;\n\t\t\tm_part = 0;\n\t\t\tm_margin = 0.01f;\n\t\t\tm_scale = btVector3(1.f, 1.f, 1.f);\n\t\t\tm_lock_count = 0;\n\t\t\tvertexbase = 0;\n\t\t\tnumverts = 0;\n\t\t\tstride = 0;\n\t\t\tindexbase = 0;\n\t\t\tindexstride = 0;\n\t\t\tnumfaces = 0;\n\t\t}\n\n\t\tTrimeshPrimitiveManager(const TrimeshPrimitiveManager& manager)\n\t\t\t: btPrimitiveManagerBase()\n\t\t{\n\t\t\tm_meshInterface = manager.m_meshInterface;\n\t\t\tm_part = manager.m_part;\n\t\t\tm_margin = manager.m_margin;\n\t\t\tm_scale = manager.m_scale;\n\t\t\tm_lock_count = 0;\n\t\t\tvertexbase = 0;\n\t\t\tnumverts = 0;\n\t\t\tstride = 0;\n\t\t\tindexbase = 0;\n\t\t\tindexstride = 0;\n\t\t\tnumfaces = 0;\n\t\t}\n\n\t\tTrimeshPrimitiveManager(\n\t\t\tbtStridingMeshInterface* meshInterface, int part)\n\t\t{\n\t\t\tm_meshInterface = meshInterface;\n\t\t\tm_part = part;\n\t\t\tm_scale = m_meshInterface->getScaling();\n\t\t\tm_margin = 0.1f;\n\t\t\tm_lock_count = 0;\n\t\t\tvertexbase = 0;\n\t\t\tnumverts = 0;\n\t\t\tstride = 0;\n\t\t\tindexbase = 0;\n\t\t\tindexstride = 0;\n\t\t\tnumfaces = 0;\n\t\t}\n\n\t\tvirtual ~TrimeshPrimitiveManager() {}\n\n\t\tvoid lock()\n\t\t{\n\t\t\tif (m_lock_count > 0)\n\t\t\t{\n\t\t\t\tm_lock_count++;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tm_meshInterface->getLockedReadOnlyVertexIndexBase(\n\t\t\t\t&vertexbase, numverts,\n\t\t\t\ttype, stride, &indexbase, indexstride, numfaces, indicestype, m_part);\n\n\t\t\tm_lock_count = 1;\n\t\t}\n\n\t\tvoid unlock()\n\t\t{\n\t\t\tif (m_lock_count == 0) return;\n\t\t\tif (m_lock_count > 1)\n\t\t\t{\n\t\t\t\t--m_lock_count;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tm_meshInterface->unLockReadOnlyVertexBase(m_part);\n\t\t\tvertexbase = NULL;\n\t\t\tm_lock_count = 0;\n\t\t}\n\n\t\tvirtual bool is_trimesh() const\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\tvirtual int get_primitive_count() const\n\t\t{\n\t\t\treturn (int)numfaces;\n\t\t}\n\n\t\tSIMD_FORCE_INLINE int get_vertex_count() const\n\t\t{\n\t\t\treturn (int)numverts;\n\t\t}\n\n\t\tSIMD_FORCE_INLINE void get_indices(int face_index, unsigned int& i0, unsigned int& i1, unsigned int& i2) const\n\t\t{\n\t\t\tif (indicestype == PHY_SHORT)\n\t\t\t{\n\t\t\t\tunsigned short* s_indices = (unsigned short*)(indexbase + face_index * indexstride);\n\t\t\t\ti0 = s_indices[0];\n\t\t\t\ti1 = s_indices[1];\n\t\t\t\ti2 = s_indices[2];\n\t\t\t}\n\t\t\telse if (indicestype == PHY_INTEGER)\n\t\t\t{\n\t\t\t\tunsigned int* i_indices = (unsigned int*)(indexbase + face_index * indexstride);\n\t\t\t\ti0 = i_indices[0];\n\t\t\t\ti1 = i_indices[1];\n\t\t\t\ti2 = i_indices[2];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbtAssert(indicestype == PHY_UCHAR);\n\t\t\t\tunsigned char* i_indices = (unsigned char*)(indexbase + face_index * indexstride);\n\t\t\t\ti0 = i_indices[0];\n\t\t\t\ti1 = i_indices[1];\n\t\t\t\ti2 = i_indices[2];\n\t\t\t}\n\t\t}\n\n\t\tSIMD_FORCE_INLINE void get_vertex(unsigned int vertex_index, btVector3& vertex) const\n\t\t{\n\t\t\tif (type == PHY_DOUBLE)\n\t\t\t{\n\t\t\t\tdouble* dvertices = (double*)(vertexbase + vertex_index * stride);\n\t\t\t\tvertex[0] = btScalar(dvertices[0] * m_scale[0]);\n\t\t\t\tvertex[1] = btScalar(dvertices[1] * m_scale[1]);\n\t\t\t\tvertex[2] = btScalar(dvertices[2] * m_scale[2]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfloat* svertices = (float*)(vertexbase + vertex_index * stride);\n\t\t\t\tvertex[0] = svertices[0] * m_scale[0];\n\t\t\t\tvertex[1] = svertices[1] * m_scale[1];\n\t\t\t\tvertex[2] = svertices[2] * m_scale[2];\n\t\t\t}\n\t\t}\n\n\t\tvirtual void get_primitive_box(int prim_index, btAABB& primbox) const\n\t\t{\n\t\t\tbtPrimitiveTriangle triangle;\n\t\t\tget_primitive_triangle(prim_index, triangle);\n\t\t\tprimbox.calc_from_triangle_margin(\n\t\t\t\ttriangle.m_vertices[0],\n\t\t\t\ttriangle.m_vertices[1], triangle.m_vertices[2], triangle.m_margin);\n\t\t}\n\n\t\tvirtual void get_primitive_triangle(int prim_index, btPrimitiveTriangle& triangle) const\n\t\t{\n\t\t\tunsigned int indices[3];\n\t\t\tget_indices(prim_index, indices[0], indices[1], indices[2]);\n\t\t\tget_vertex(indices[0], triangle.m_vertices[0]);\n\t\t\tget_vertex(indices[1], triangle.m_vertices[1]);\n\t\t\tget_vertex(indices[2], triangle.m_vertices[2]);\n\t\t\ttriangle.m_margin = m_margin;\n\t\t}\n\n\t\tSIMD_FORCE_INLINE void get_bullet_triangle(int prim_index, btTriangleShapeEx& triangle) const\n\t\t{\n\t\t\tunsigned int indices[3];\n\t\t\tget_indices(prim_index, indices[0], indices[1], indices[2]);\n\t\t\tget_vertex(indices[0], triangle.m_vertices1[0]);\n\t\t\tget_vertex(indices[1], triangle.m_vertices1[1]);\n\t\t\tget_vertex(indices[2], triangle.m_vertices1[2]);\n\t\t\ttriangle.setMargin(m_margin);\n\t\t}\n\t};\n\nprotected:\n\tTrimeshPrimitiveManager m_primitive_manager;\n\npublic:\n\tbtGImpactMeshShapePart()\n\t{\n\t\tm_box_set.setPrimitiveManager(&m_primitive_manager);\n\t}\n\n\tbtGImpactMeshShapePart(btStridingMeshInterface* meshInterface, int part);\n\tvirtual ~btGImpactMeshShapePart();\n\n\t//! if true, then its children must get transforms.\n\tvirtual bool childrenHasTransform() const\n\t{\n\t\treturn false;\n\t}\n\n\t//! call when reading child shapes\n\tvirtual void lockChildShapes() const;\n\tvirtual void unlockChildShapes() const;\n\n\t//! Gets the number of children\n\tvirtual int getNumChildShapes() const\n\t{\n\t\treturn m_primitive_manager.get_primitive_count();\n\t}\n\n\t//! Gets the children\n\tvirtual btCollisionShape* getChildShape(int index)\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn NULL;\n\t}\n\n\t//! Gets the child\n\tvirtual const btCollisionShape* getChildShape(int index) const\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn NULL;\n\t}\n\n\t//! Gets the children transform\n\tvirtual btTransform getChildTransform(int index) const\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn btTransform();\n\t}\n\n\t//! Sets the children transform\n\t/*!\n\t\\post You must call updateBound() for update the box set.\n\t*/\n\tvirtual void setChildTransform(int index, const btTransform& transform)\n\t{\n\t\t(void)index;\n\t\t(void)transform;\n\t\tbtAssert(0);\n\t}\n\n\t//! Obtains the primitive manager\n\tvirtual const btPrimitiveManagerBase* getPrimitiveManager() const\n\t{\n\t\treturn &m_primitive_manager;\n\t}\n\n\tSIMD_FORCE_INLINE TrimeshPrimitiveManager* getTrimeshPrimitiveManager()\n\t{\n\t\treturn &m_primitive_manager;\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3& inertia) const;\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"GImpactMeshShapePart\";\n\t}\n\n\tvirtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const\n\t{\n\t\treturn CONST_GIMPACT_TRIMESH_SHAPE_PART;\n\t}\n\n\t//! Determines if this shape has triangles\n\tvirtual bool needsRetrieveTriangles() const\n\t{\n\t\treturn true;\n\t}\n\n\t//! Determines if this shape has tetrahedrons\n\tvirtual bool needsRetrieveTetrahedrons() const\n\t{\n\t\treturn false;\n\t}\n\n\tvirtual void getBulletTriangle(int prim_index, btTriangleShapeEx& triangle) const\n\t{\n\t\tm_primitive_manager.get_bullet_triangle(prim_index, triangle);\n\t}\n\n\tvirtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx& tetrahedron) const\n\t{\n\t\t(void)prim_index;\n\t\t(void)tetrahedron;\n\t\tbtAssert(0);\n\t}\n\n\tSIMD_FORCE_INLINE int getVertexCount() const\n\t{\n\t\treturn m_primitive_manager.get_vertex_count();\n\t}\n\n\tSIMD_FORCE_INLINE void getVertex(int vertex_index, btVector3& vertex) const\n\t{\n\t\tm_primitive_manager.get_vertex(vertex_index, vertex);\n\t}\n\n\tSIMD_FORCE_INLINE void setMargin(btScalar margin)\n\t{\n\t\tm_primitive_manager.m_margin = margin;\n\t\tpostUpdate();\n\t}\n\n\tSIMD_FORCE_INLINE btScalar getMargin() const\n\t{\n\t\treturn m_primitive_manager.m_margin;\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tm_primitive_manager.m_scale = scaling;\n\t\tpostUpdate();\n\t}\n\n\tvirtual const btVector3& getLocalScaling() const\n\t{\n\t\treturn m_primitive_manager.m_scale;\n\t}\n\n\tSIMD_FORCE_INLINE int getPart() const\n\t{\n\t\treturn (int)m_primitive_manager.m_part;\n\t}\n\n\tvirtual void processAllTriangles(btTriangleCallback* callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\tvirtual void processAllTrianglesRay(btTriangleCallback* callback, const btVector3& rayFrom, const btVector3& rayTo) const;\n};\n\n//! This class manages a mesh supplied by the btStridingMeshInterface interface.\n/*!\nSet of btGImpactMeshShapePart parts\n- Simply create this shape by passing the btStridingMeshInterface to the constructor btGImpactMeshShape, then you must call updateBound() after creating the mesh\n\n- You can handle deformable meshes with this shape, by calling postUpdate() every time when changing the mesh vertices.\n\n*/\nclass btGImpactMeshShape : public btGImpactShapeInterface\n{\n\tbtStridingMeshInterface* m_meshInterface;\n\nprotected:\n\tbtAlignedObjectArray<btGImpactMeshShapePart*> m_mesh_parts;\n\tvoid buildMeshParts(btStridingMeshInterface* meshInterface)\n\t{\n\t\tfor (int i = 0; i < meshInterface->getNumSubParts(); ++i)\n\t\t{\n\t\t\tbtGImpactMeshShapePart* newpart = new btGImpactMeshShapePart(meshInterface, i);\n\t\t\tm_mesh_parts.push_back(newpart);\n\t\t}\n\t}\n\n\t//! use this function for perfofm refit in bounding boxes\n\tvirtual void calcLocalAABB()\n\t{\n\t\tm_localAABB.invalidate();\n\t\tint i = m_mesh_parts.size();\n\t\twhile (i--)\n\t\t{\n\t\t\tm_mesh_parts[i]->updateBound();\n\t\t\tm_localAABB.merge(m_mesh_parts[i]->getLocalBox());\n\t\t}\n\t}\n\npublic:\n\tbtGImpactMeshShape(btStridingMeshInterface* meshInterface)\n\t{\n\t\tm_meshInterface = meshInterface;\n\t\tbuildMeshParts(meshInterface);\n\t}\n\n\tvirtual ~btGImpactMeshShape()\n\t{\n\t\tint i = m_mesh_parts.size();\n\t\twhile (i--)\n\t\t{\n\t\t\tbtGImpactMeshShapePart* part = m_mesh_parts[i];\n\t\t\tdelete part;\n\t\t}\n\t\tm_mesh_parts.clear();\n\t}\n\n\tbtStridingMeshInterface* getMeshInterface()\n\t{\n\t\treturn m_meshInterface;\n\t}\n\n\tconst btStridingMeshInterface* getMeshInterface() const\n\t{\n\t\treturn m_meshInterface;\n\t}\n\n\tint getMeshPartCount() const\n\t{\n\t\treturn m_mesh_parts.size();\n\t}\n\n\tbtGImpactMeshShapePart* getMeshPart(int index)\n\t{\n\t\treturn m_mesh_parts[index];\n\t}\n\n\tconst btGImpactMeshShapePart* getMeshPart(int index) const\n\t{\n\t\treturn m_mesh_parts[index];\n\t}\n\n\tvirtual void setLocalScaling(const btVector3& scaling)\n\t{\n\t\tlocalScaling = scaling;\n\n\t\tint i = m_mesh_parts.size();\n\t\twhile (i--)\n\t\t{\n\t\t\tbtGImpactMeshShapePart* part = m_mesh_parts[i];\n\t\t\tpart->setLocalScaling(scaling);\n\t\t}\n\n\t\tm_needs_update = true;\n\t}\n\n\tvirtual void setMargin(btScalar margin)\n\t{\n\t\tm_collisionMargin = margin;\n\n\t\tint i = m_mesh_parts.size();\n\t\twhile (i--)\n\t\t{\n\t\t\tbtGImpactMeshShapePart* part = m_mesh_parts[i];\n\t\t\tpart->setMargin(margin);\n\t\t}\n\n\t\tm_needs_update = true;\n\t}\n\n\t//! Tells to this object that is needed to refit all the meshes\n\tvirtual void postUpdate()\n\t{\n\t\tint i = m_mesh_parts.size();\n\t\twhile (i--)\n\t\t{\n\t\t\tbtGImpactMeshShapePart* part = m_mesh_parts[i];\n\t\t\tpart->postUpdate();\n\t\t}\n\n\t\tm_needs_update = true;\n\t}\n\n\tvirtual void calculateLocalInertia(btScalar mass, btVector3& inertia) const;\n\n\t//! Obtains the primitive manager\n\tvirtual const btPrimitiveManagerBase* getPrimitiveManager() const\n\t{\n\t\tbtAssert(0);\n\t\treturn NULL;\n\t}\n\n\t//! Gets the number of children\n\tvirtual int getNumChildShapes() const\n\t{\n\t\tbtAssert(0);\n\t\treturn 0;\n\t}\n\n\t//! if true, then its children must get transforms.\n\tvirtual bool childrenHasTransform() const\n\t{\n\t\tbtAssert(0);\n\t\treturn false;\n\t}\n\n\t//! Determines if this shape has triangles\n\tvirtual bool needsRetrieveTriangles() const\n\t{\n\t\tbtAssert(0);\n\t\treturn false;\n\t}\n\n\t//! Determines if this shape has tetrahedrons\n\tvirtual bool needsRetrieveTetrahedrons() const\n\t{\n\t\tbtAssert(0);\n\t\treturn false;\n\t}\n\n\tvirtual void getBulletTriangle(int prim_index, btTriangleShapeEx& triangle) const\n\t{\n\t\t(void)prim_index;\n\t\t(void)triangle;\n\t\tbtAssert(0);\n\t}\n\n\tvirtual void getBulletTetrahedron(int prim_index, btTetrahedronShapeEx& tetrahedron) const\n\t{\n\t\t(void)prim_index;\n\t\t(void)tetrahedron;\n\t\tbtAssert(0);\n\t}\n\n\t//! call when reading child shapes\n\tvirtual void lockChildShapes() const\n\t{\n\t\tbtAssert(0);\n\t}\n\n\tvirtual void unlockChildShapes() const\n\t{\n\t\tbtAssert(0);\n\t}\n\n\t//! Retrieves the bound from a child\n\t/*!\n    */\n\tvirtual void getChildAabb(int child_index, const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\t(void)child_index;\n\t\t(void)t;\n\t\t(void)aabbMin;\n\t\t(void)aabbMax;\n\t\tbtAssert(0);\n\t}\n\n\t//! Gets the children\n\tvirtual btCollisionShape* getChildShape(int index)\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn NULL;\n\t}\n\n\t//! Gets the child\n\tvirtual const btCollisionShape* getChildShape(int index) const\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn NULL;\n\t}\n\n\t//! Gets the children transform\n\tvirtual btTransform getChildTransform(int index) const\n\t{\n\t\t(void)index;\n\t\tbtAssert(0);\n\t\treturn btTransform();\n\t}\n\n\t//! Sets the children transform\n\t/*!\n\t\\post You must call updateBound() for update the box set.\n\t*/\n\tvirtual void setChildTransform(int index, const btTransform& transform)\n\t{\n\t\t(void)index;\n\t\t(void)transform;\n\t\tbtAssert(0);\n\t}\n\n\tvirtual eGIMPACT_SHAPE_TYPE getGImpactShapeType() const\n\t{\n\t\treturn CONST_GIMPACT_TRIMESH_SHAPE;\n\t}\n\n\tvirtual const char* getName() const\n\t{\n\t\treturn \"GImpactMesh\";\n\t}\n\n\tvirtual void rayTest(const btVector3& rayFrom, const btVector3& rayTo, btCollisionWorld::RayResultCallback& resultCallback) const;\n\n\t//! Function for retrieve triangles.\n\t/*!\n\tIt gives the triangles in local space\n\t*/\n\tvirtual void processAllTriangles(btTriangleCallback* callback, const btVector3& aabbMin, const btVector3& aabbMax) const;\n\n\tvirtual void processAllTrianglesRay(btTriangleCallback* callback, const btVector3& rayFrom, const btVector3& rayTo) const;\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btGImpactMeshShapeData\n{\n\tbtCollisionShapeData m_collisionShapeData;\n\n\tbtStridingMeshInterfaceData m_meshInterface;\n\n\tbtVector3FloatData m_localScaling;\n\n\tfloat m_collisionMargin;\n\n\tint m_gimpactSubType;\n};\n\nSIMD_FORCE_INLINE int btGImpactMeshShape::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btGImpactMeshShapeData);\n}\n\n#endif  //GIMPACT_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h",
    "content": "/*! \\file btGenericPoolAllocator.h\n\\author Francisco Leon Najera. email projectileman@yahoo.com\n\nGeneral purpose allocator class\n*/\n/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GENERIC_POOL_ALLOCATOR_H\n#define BT_GENERIC_POOL_ALLOCATOR_H\n\n#include <limits.h>\n#include <stdio.h>\n#include <string.h>\n#include \"LinearMath/btAlignedAllocator.h\"\n\n#define BT_UINT_MAX UINT_MAX\n#define BT_DEFAULT_MAX_POOLS 16\n\n//! Generic Pool class\nclass btGenericMemoryPool\n{\npublic:\n\tunsigned char *m_pool;      //[m_element_size*m_max_element_count];\n\tsize_t *m_free_nodes;       //[m_max_element_count];//! free nodes\n\tsize_t *m_allocated_sizes;  //[m_max_element_count];//! Number of elements allocated per node\n\tsize_t m_allocated_count;\n\tsize_t m_free_nodes_count;\n\nprotected:\n\tsize_t m_element_size;\n\tsize_t m_max_element_count;\n\n\tsize_t allocate_from_free_nodes(size_t num_elements);\n\tsize_t allocate_from_pool(size_t num_elements);\n\npublic:\n\tvoid init_pool(size_t element_size, size_t element_count);\n\n\tvoid end_pool();\n\n\tbtGenericMemoryPool(size_t element_size, size_t element_count)\n\t{\n\t\tinit_pool(element_size, element_count);\n\t}\n\n\t~btGenericMemoryPool()\n\t{\n\t\tend_pool();\n\t}\n\n\tinline size_t get_pool_capacity()\n\t{\n\t\treturn m_element_size * m_max_element_count;\n\t}\n\n\tinline size_t gem_element_size()\n\t{\n\t\treturn m_element_size;\n\t}\n\n\tinline size_t get_max_element_count()\n\t{\n\t\treturn m_max_element_count;\n\t}\n\n\tinline size_t get_allocated_count()\n\t{\n\t\treturn m_allocated_count;\n\t}\n\n\tinline size_t get_free_positions_count()\n\t{\n\t\treturn m_free_nodes_count;\n\t}\n\n\tinline void *get_element_data(size_t element_index)\n\t{\n\t\treturn &m_pool[element_index * m_element_size];\n\t}\n\n\t//! Allocates memory in pool\n\t/*!\n\t\\param size_bytes size in bytes of the buffer\n\t*/\n\tvoid *allocate(size_t size_bytes);\n\n\tbool freeMemory(void *pointer);\n};\n\n//! Generic Allocator with pools\n/*!\nGeneral purpose Allocator which can create Memory Pools dynamiacally as needed.\n*/\nclass btGenericPoolAllocator\n{\nprotected:\n\tsize_t m_pool_element_size;\n\tsize_t m_pool_element_count;\n\npublic:\n\tbtGenericMemoryPool *m_pools[BT_DEFAULT_MAX_POOLS];\n\tsize_t m_pool_count;\n\n\tinline size_t get_pool_capacity()\n\t{\n\t\treturn m_pool_element_size * m_pool_element_count;\n\t}\n\nprotected:\n\t// creates a pool\n\tbtGenericMemoryPool *push_new_pool();\n\n\tvoid *failback_alloc(size_t size_bytes);\n\n\tbool failback_free(void *pointer);\n\npublic:\n\tbtGenericPoolAllocator(size_t pool_element_size, size_t pool_element_count)\n\t{\n\t\tm_pool_count = 0;\n\t\tm_pool_element_size = pool_element_size;\n\t\tm_pool_element_count = pool_element_count;\n\t}\n\n\tvirtual ~btGenericPoolAllocator();\n\n\t//! Allocates memory in pool\n\t/*!\n\t\\param size_bytes size in bytes of the buffer\n\t*/\n\tvoid *allocate(size_t size_bytes);\n\n\tbool freeMemory(void *pointer);\n};\n\nvoid *btPoolAlloc(size_t size);\nvoid *btPoolRealloc(void *ptr, size_t oldsize, size_t newsize);\nvoid btPoolFree(void *ptr);\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btGeometryOperations.h",
    "content": "#ifndef BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED\n#define BT_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED\n\n/*! \\file btGeometryOperations.h\n*\\author Francisco Leon Najera\n\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"btBoxCollision.h\"\n\n#define PLANEDIREPSILON 0.0000001f\n#define PARALELENORMALS 0.000001f\n\n#define BT_CLAMP(number, minval, maxval) (number < minval ? minval : (number > maxval ? maxval : number))\n\n/// Calc a plane from a triangle edge an a normal. plane is a vec4f\nSIMD_FORCE_INLINE void bt_edge_plane(const btVector3 &e1, const btVector3 &e2, const btVector3 &normal, btVector4 &plane)\n{\n\tbtVector3 planenormal = (e2 - e1).cross(normal);\n\tplanenormal.normalize();\n\tplane.setValue(planenormal[0], planenormal[1], planenormal[2], e2.dot(planenormal));\n}\n\n//***************** SEGMENT and LINE FUNCTIONS **********************************///\n\n/*! Finds the closest point(cp) to (v) on a segment (e1,e2)\n */\nSIMD_FORCE_INLINE void bt_closest_point_on_segment(\n\tbtVector3 &cp, const btVector3 &v,\n\tconst btVector3 &e1, const btVector3 &e2)\n{\n\tbtVector3 n = e2 - e1;\n\tcp = v - e1;\n\tbtScalar _scalar = cp.dot(n) / n.dot(n);\n\tif (_scalar < 0.0f)\n\t{\n\t\tcp = e1;\n\t}\n\telse if (_scalar > 1.0f)\n\t{\n\t\tcp = e2;\n\t}\n\telse\n\t{\n\t\tcp = _scalar * n + e1;\n\t}\n}\n\n//! line plane collision\n/*!\n*\\return\n\t-0  if the ray never intersects\n\t-1 if the ray collides in front\n\t-2 if the ray collides in back\n*/\n\nSIMD_FORCE_INLINE int bt_line_plane_collision(\n\tconst btVector4 &plane,\n\tconst btVector3 &vDir,\n\tconst btVector3 &vPoint,\n\tbtVector3 &pout,\n\tbtScalar &tparam,\n\tbtScalar tmin, btScalar tmax)\n{\n\tbtScalar _dotdir = vDir.dot(plane);\n\n\tif (btFabs(_dotdir) < PLANEDIREPSILON)\n\t{\n\t\ttparam = tmax;\n\t\treturn 0;\n\t}\n\n\tbtScalar _dis = bt_distance_point_plane(plane, vPoint);\n\tchar returnvalue = _dis < 0.0f ? 2 : 1;\n\ttparam = -_dis / _dotdir;\n\n\tif (tparam < tmin)\n\t{\n\t\treturnvalue = 0;\n\t\ttparam = tmin;\n\t}\n\telse if (tparam > tmax)\n\t{\n\t\treturnvalue = 0;\n\t\ttparam = tmax;\n\t}\n\tpout = tparam * vDir + vPoint;\n\treturn returnvalue;\n}\n\n//! Find closest points on segments\nSIMD_FORCE_INLINE void bt_segment_collision(\n\tconst btVector3 &vA1,\n\tconst btVector3 &vA2,\n\tconst btVector3 &vB1,\n\tconst btVector3 &vB2,\n\tbtVector3 &vPointA,\n\tbtVector3 &vPointB)\n{\n\tbtVector3 AD = vA2 - vA1;\n\tbtVector3 BD = vB2 - vB1;\n\tbtVector3 N = AD.cross(BD);\n\tbtScalar tp = N.length2();\n\n\tbtVector4 _M;  //plane\n\n\tif (tp < SIMD_EPSILON)  //ARE PARALELE\n\t{\n\t\t//project B over A\n\t\tbool invert_b_order = false;\n\t\t_M[0] = vB1.dot(AD);\n\t\t_M[1] = vB2.dot(AD);\n\n\t\tif (_M[0] > _M[1])\n\t\t{\n\t\t\tinvert_b_order = true;\n\t\t\tBT_SWAP_NUMBERS(_M[0], _M[1]);\n\t\t}\n\t\t_M[2] = vA1.dot(AD);\n\t\t_M[3] = vA2.dot(AD);\n\t\t//mid points\n\t\tN[0] = (_M[0] + _M[1]) * 0.5f;\n\t\tN[1] = (_M[2] + _M[3]) * 0.5f;\n\n\t\tif (N[0] < N[1])\n\t\t{\n\t\t\tif (_M[1] < _M[2])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tvPointA = vA1;\n\t\t\t}\n\t\t\telse if (_M[1] < _M[3])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tbt_closest_point_on_segment(vPointA, vPointB, vA1, vA2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvPointA = vA2;\n\t\t\t\tbt_closest_point_on_segment(vPointB, vPointA, vB1, vB2);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (_M[3] < _M[0])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB2 : vB1;\n\t\t\t\tvPointA = vA2;\n\t\t\t}\n\t\t\telse if (_M[3] < _M[1])\n\t\t\t{\n\t\t\t\tvPointA = vA2;\n\t\t\t\tbt_closest_point_on_segment(vPointB, vPointA, vB1, vB2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tbt_closest_point_on_segment(vPointA, vPointB, vA1, vA2);\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tN = N.cross(BD);\n\t_M.setValue(N[0], N[1], N[2], vB1.dot(N));\n\n\t// get point A as the plane collision point\n\tbt_line_plane_collision(_M, AD, vA1, vPointA, tp, btScalar(0), btScalar(1));\n\n\t/*Closest point on segment*/\n\tvPointB = vPointA - vB1;\n\ttp = vPointB.dot(BD);\n\ttp /= BD.dot(BD);\n\ttp = BT_CLAMP(tp, 0.0f, 1.0f);\n\n\tvPointB = tp * BD + vB1;\n}\n\n#endif  // GIM_VECTOR_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btQuantization.h",
    "content": "#ifndef BT_GIMPACT_QUANTIZATION_H_INCLUDED\n#define BT_GIMPACT_QUANTIZATION_H_INCLUDED\n\n/*! \\file btQuantization.h\n*\\author Francisco Leon Najera\n\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#include \"LinearMath/btTransform.h\"\n\nSIMD_FORCE_INLINE void bt_calc_quantization_parameters(\n\tbtVector3& outMinBound,\n\tbtVector3& outMaxBound,\n\tbtVector3& bvhQuantization,\n\tconst btVector3& srcMinBound, const btVector3& srcMaxBound,\n\tbtScalar quantizationMargin)\n{\n\t//enlarge the AABB to avoid division by zero when initializing the quantization values\n\tbtVector3 clampValue(quantizationMargin, quantizationMargin, quantizationMargin);\n\toutMinBound = srcMinBound - clampValue;\n\toutMaxBound = srcMaxBound + clampValue;\n\tbtVector3 aabbSize = outMaxBound - outMinBound;\n\tbvhQuantization = btVector3(btScalar(65535.0),\n\t\t\t\t\t\t\t\tbtScalar(65535.0),\n\t\t\t\t\t\t\t\tbtScalar(65535.0)) /\n\t\t\t\t\t  aabbSize;\n}\n\nSIMD_FORCE_INLINE void bt_quantize_clamp(\n\tunsigned short* out,\n\tconst btVector3& point,\n\tconst btVector3& min_bound,\n\tconst btVector3& max_bound,\n\tconst btVector3& bvhQuantization)\n{\n\tbtVector3 clampedPoint(point);\n\tclampedPoint.setMax(min_bound);\n\tclampedPoint.setMin(max_bound);\n\n\tbtVector3 v = (clampedPoint - min_bound) * bvhQuantization;\n\tout[0] = (unsigned short)(v.getX() + 0.5f);\n\tout[1] = (unsigned short)(v.getY() + 0.5f);\n\tout[2] = (unsigned short)(v.getZ() + 0.5f);\n}\n\nSIMD_FORCE_INLINE btVector3 bt_unquantize(\n\tconst unsigned short* vecIn,\n\tconst btVector3& offset,\n\tconst btVector3& bvhQuantization)\n{\n\tbtVector3 vecOut;\n\tvecOut.setValue(\n\t\t(btScalar)(vecIn[0]) / (bvhQuantization.getX()),\n\t\t(btScalar)(vecIn[1]) / (bvhQuantization.getY()),\n\t\t(btScalar)(vecIn[2]) / (bvhQuantization.getZ()));\n\tvecOut += offset;\n\treturn vecOut;\n}\n\n#endif  // BT_GIMPACT_QUANTIZATION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h",
    "content": "/*! \\file btGImpactShape.h\n\\author Francisco Leon Najera\n*/\n/*\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2007 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef GIMPACT_TRIANGLE_SHAPE_EX_H\n#define GIMPACT_TRIANGLE_SHAPE_EX_H\n\n#include \"BulletCollision/CollisionShapes/btCollisionShape.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleShape.h\"\n#include \"btBoxCollision.h\"\n#include \"btClipPolygon.h\"\n#include \"btGeometryOperations.h\"\n\n#define MAX_TRI_CLIPPING 16\n\n//! Structure for collision\nstruct GIM_TRIANGLE_CONTACT\n{\n\tbtScalar m_penetration_depth;\n\tint m_point_count;\n\tbtVector4 m_separating_normal;\n\tbtVector3 m_points[MAX_TRI_CLIPPING];\n\n\tSIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT& other)\n\t{\n\t\tm_penetration_depth = other.m_penetration_depth;\n\t\tm_separating_normal = other.m_separating_normal;\n\t\tm_point_count = other.m_point_count;\n\t\tint i = m_point_count;\n\t\twhile (i--)\n\t\t{\n\t\t\tm_points[i] = other.m_points[i];\n\t\t}\n\t}\n\n\tGIM_TRIANGLE_CONTACT()\n\t{\n\t}\n\n\tGIM_TRIANGLE_CONTACT(const GIM_TRIANGLE_CONTACT& other)\n\t{\n\t\tcopy_from(other);\n\t}\n\n\t//! classify points that are closer\n\tvoid merge_points(const btVector4& plane,\n\t\t\t\t\t  btScalar margin, const btVector3* points, int point_count);\n};\n\nclass btPrimitiveTriangle\n{\npublic:\n\tbtVector3 m_vertices[3];\n\tbtVector4 m_plane;\n\tbtScalar m_margin;\n\tbtScalar m_dummy;\n\tbtPrimitiveTriangle() : m_margin(0.01f)\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE void buildTriPlane()\n\t{\n\t\tbtVector3 normal = (m_vertices[1] - m_vertices[0]).cross(m_vertices[2] - m_vertices[0]);\n\t\tnormal.normalize();\n\t\tm_plane.setValue(normal[0], normal[1], normal[2], m_vertices[0].dot(normal));\n\t}\n\n\t//! Test if triangles could collide\n\tbool overlap_test_conservative(const btPrimitiveTriangle& other);\n\n\t//! Calcs the plane which is paralele to the edge and perpendicular to the triangle plane\n\t/*!\n\t\\pre this triangle must have its plane calculated.\n\t*/\n\tSIMD_FORCE_INLINE void get_edge_plane(int edge_index, btVector4& plane) const\n\t{\n\t\tconst btVector3& e0 = m_vertices[edge_index];\n\t\tconst btVector3& e1 = m_vertices[(edge_index + 1) % 3];\n\t\tbt_edge_plane(e0, e1, m_plane, plane);\n\t}\n\n\tvoid applyTransform(const btTransform& t)\n\t{\n\t\tm_vertices[0] = t(m_vertices[0]);\n\t\tm_vertices[1] = t(m_vertices[1]);\n\t\tm_vertices[2] = t(m_vertices[2]);\n\t}\n\n\t//! Clips the triangle against this\n\t/*!\n\t\\pre clipped_points must have MAX_TRI_CLIPPING size, and this triangle must have its plane calculated.\n\t\\return the number of clipped points\n\t*/\n\tint clip_triangle(btPrimitiveTriangle& other, btVector3* clipped_points);\n\n\t//! Find collision using the clipping method\n\t/*!\n\t\\pre this triangle and other must have their triangles calculated\n\t*/\n\tbool find_triangle_collision_clip_method(btPrimitiveTriangle& other, GIM_TRIANGLE_CONTACT& contacts);\n};\n\n//! Helper class for colliding Bullet Triangle Shapes\n/*!\nThis class implements a better getAabb method than the previous btTriangleShape class\n*/\nclass btTriangleShapeEx : public btTriangleShape\n{\npublic:\n\tbtTriangleShapeEx() : btTriangleShape(btVector3(0, 0, 0), btVector3(0, 0, 0), btVector3(0, 0, 0))\n\t{\n\t}\n\n\tbtTriangleShapeEx(const btVector3& p0, const btVector3& p1, const btVector3& p2) : btTriangleShape(p0, p1, p2)\n\t{\n\t}\n\n\tbtTriangleShapeEx(const btTriangleShapeEx& other) : btTriangleShape(other.m_vertices1[0], other.m_vertices1[1], other.m_vertices1[2])\n\t{\n\t}\n\n\tvirtual void getAabb(const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const\n\t{\n\t\tbtVector3 tv0 = t(m_vertices1[0]);\n\t\tbtVector3 tv1 = t(m_vertices1[1]);\n\t\tbtVector3 tv2 = t(m_vertices1[2]);\n\n\t\tbtAABB trianglebox(tv0, tv1, tv2, m_collisionMargin);\n\t\taabbMin = trianglebox.m_min;\n\t\taabbMax = trianglebox.m_max;\n\t}\n\n\tvoid applyTransform(const btTransform& t)\n\t{\n\t\tm_vertices1[0] = t(m_vertices1[0]);\n\t\tm_vertices1[1] = t(m_vertices1[1]);\n\t\tm_vertices1[2] = t(m_vertices1[2]);\n\t}\n\n\tSIMD_FORCE_INLINE void buildTriPlane(btVector4& plane) const\n\t{\n\t\tbtVector3 normal = (m_vertices1[1] - m_vertices1[0]).cross(m_vertices1[2] - m_vertices1[0]);\n\t\tnormal.normalize();\n\t\tplane.setValue(normal[0], normal[1], normal[2], m_vertices1[0].dot(normal));\n\t}\n\n\tbool overlap_test_conservative(const btTriangleShapeEx& other);\n};\n\n#endif  //GIMPACT_TRIANGLE_MESH_SHAPE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_array.h",
    "content": "#ifndef GIM_ARRAY_H_INCLUDED\n#define GIM_ARRAY_H_INCLUDED\n/*! \\file gim_array.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_memory.h\"\n\n#define GIM_ARRAY_GROW_INCREMENT 2\n#define GIM_ARRAY_GROW_FACTOR 2\n\n//!\tVery simple array container with fast access and simd memory\ntemplate <typename T>\nclass gim_array\n{\npublic:\n\t//! properties\n\t//!@{\n\tT* m_data;\n\tGUINT m_size;\n\tGUINT m_allocated_size;\n\t//!@}\n\t//! protected operations\n\t//!@{\n\n\tinline void destroyData()\n\t{\n\t\tm_allocated_size = 0;\n\t\tif (m_data == NULL) return;\n\t\tgim_free(m_data);\n\t\tm_data = NULL;\n\t}\n\n\tinline bool resizeData(GUINT newsize)\n\t{\n\t\tif (newsize == 0)\n\t\t{\n\t\t\tdestroyData();\n\t\t\treturn true;\n\t\t}\n\n\t\tif (m_size > 0)\n\t\t{\n\t\t\tm_data = (T*)gim_realloc(m_data, m_size * sizeof(T), newsize * sizeof(T));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_data = (T*)gim_alloc(newsize * sizeof(T));\n\t\t}\n\t\tm_allocated_size = newsize;\n\t\treturn true;\n\t}\n\n\tinline bool growingCheck()\n\t{\n\t\tif (m_allocated_size <= m_size)\n\t\t{\n\t\t\tGUINT requestsize = m_size;\n\t\t\tm_size = m_allocated_size;\n\t\t\tif (resizeData((requestsize + GIM_ARRAY_GROW_INCREMENT) * GIM_ARRAY_GROW_FACTOR) == false) return false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t//!@}\n\t//! public operations\n\t//!@{\n\tinline bool reserve(GUINT size)\n\t{\n\t\tif (m_allocated_size >= size) return false;\n\t\treturn resizeData(size);\n\t}\n\n\tinline void clear_range(GUINT start_range)\n\t{\n\t\twhile (m_size > start_range)\n\t\t{\n\t\t\tm_data[--m_size].~T();\n\t\t}\n\t}\n\n\tinline void clear()\n\t{\n\t\tif (m_size == 0) return;\n\t\tclear_range(0);\n\t}\n\n\tinline void clear_memory()\n\t{\n\t\tclear();\n\t\tdestroyData();\n\t}\n\n\tgim_array()\n\t{\n\t\tm_data = 0;\n\t\tm_size = 0;\n\t\tm_allocated_size = 0;\n\t}\n\n\tgim_array(GUINT reservesize)\n\t{\n\t\tm_data = 0;\n\t\tm_size = 0;\n\n\t\tm_allocated_size = 0;\n\t\treserve(reservesize);\n\t}\n\n\t~gim_array()\n\t{\n\t\tclear_memory();\n\t}\n\n\tinline GUINT size() const\n\t{\n\t\treturn m_size;\n\t}\n\n\tinline GUINT max_size() const\n\t{\n\t\treturn m_allocated_size;\n\t}\n\n\tinline T& operator[](size_t i)\n\t{\n\t\treturn m_data[i];\n\t}\n\tinline const T& operator[](size_t i) const\n\t{\n\t\treturn m_data[i];\n\t}\n\n\tinline T* pointer() { return m_data; }\n\tinline const T* pointer() const\n\t{\n\t\treturn m_data;\n\t}\n\n\tinline T* get_pointer_at(GUINT i)\n\t{\n\t\treturn m_data + i;\n\t}\n\n\tinline const T* get_pointer_at(GUINT i) const\n\t{\n\t\treturn m_data + i;\n\t}\n\n\tinline T& at(GUINT i)\n\t{\n\t\treturn m_data[i];\n\t}\n\n\tinline const T& at(GUINT i) const\n\t{\n\t\treturn m_data[i];\n\t}\n\n\tinline T& front()\n\t{\n\t\treturn *m_data;\n\t}\n\n\tinline const T& front() const\n\t{\n\t\treturn *m_data;\n\t}\n\n\tinline T& back()\n\t{\n\t\treturn m_data[m_size - 1];\n\t}\n\n\tinline const T& back() const\n\t{\n\t\treturn m_data[m_size - 1];\n\t}\n\n\tinline void swap(GUINT i, GUINT j)\n\t{\n\t\tgim_swap_elements(m_data, i, j);\n\t}\n\n\tinline void push_back(const T& obj)\n\t{\n\t\tthis->growingCheck();\n\t\tm_data[m_size] = obj;\n\t\tm_size++;\n\t}\n\n\t//!Simply increase the m_size, doesn't call the new element constructor\n\tinline void push_back_mem()\n\t{\n\t\tthis->growingCheck();\n\t\tm_size++;\n\t}\n\n\tinline void push_back_memcpy(const T& obj)\n\t{\n\t\tthis->growingCheck();\n\t\tgim_simd_memcpy(&m_data[m_size], &obj, sizeof(T));\n\t\tm_size++;\n\t}\n\n\tinline void pop_back()\n\t{\n\t\tm_size--;\n\t\tm_data[m_size].~T();\n\t}\n\n\t//!Simply decrease the m_size, doesn't call the deleted element destructor\n\tinline void pop_back_mem()\n\t{\n\t\tm_size--;\n\t}\n\n\t//! fast erase\n\tinline void erase(GUINT index)\n\t{\n\t\tif (index < m_size - 1)\n\t\t{\n\t\t\tswap(index, m_size - 1);\n\t\t}\n\t\tpop_back();\n\t}\n\n\tinline void erase_sorted_mem(GUINT index)\n\t{\n\t\tm_size--;\n\t\tfor (GUINT i = index; i < m_size; i++)\n\t\t{\n\t\t\tgim_simd_memcpy(m_data + i, m_data + i + 1, sizeof(T));\n\t\t}\n\t}\n\n\tinline void erase_sorted(GUINT index)\n\t{\n\t\tm_data[index].~T();\n\t\terase_sorted_mem(index);\n\t}\n\n\tinline void insert_mem(GUINT index)\n\t{\n\t\tthis->growingCheck();\n\t\tfor (GUINT i = m_size; i > index; i--)\n\t\t{\n\t\t\tgim_simd_memcpy(m_data + i, m_data + i - 1, sizeof(T));\n\t\t}\n\t\tm_size++;\n\t}\n\n\tinline void insert(const T& obj, GUINT index)\n\t{\n\t\tinsert_mem(index);\n\t\tm_data[index] = obj;\n\t}\n\n\tinline void resize(GUINT size, bool call_constructor = true, const T& fillData = T())\n\t{\n\t\tif (size > m_size)\n\t\t{\n\t\t\treserve(size);\n\t\t\tif (call_constructor)\n\t\t\t{\n\t\t\t\twhile (m_size < size)\n\t\t\t\t{\n\t\t\t\t\tm_data[m_size] = fillData;\n\t\t\t\t\tm_size++;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_size = size;\n\t\t\t}\n\t\t}\n\t\telse if (size < m_size)\n\t\t{\n\t\t\tif (call_constructor) clear_range(size);\n\t\t\tm_size = size;\n\t\t}\n\t}\n\n\tinline void refit()\n\t{\n\t\tresizeData(m_size);\n\t}\n};\n\n#endif  // GIM_CONTAINERS_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h",
    "content": "#ifndef GIM_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED\n#define GIM_BASIC_GEOMETRY_OPERATIONS_H_INCLUDED\n\n/*! \\file gim_basic_geometry_operations.h\n*\\author Francisco Leon Najera\ntype independant geometry routines\n\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_linear_math.h\"\n\n#ifndef PLANEDIREPSILON\n#define PLANEDIREPSILON 0.0000001f\n#endif\n\n#ifndef PARALELENORMALS\n#define PARALELENORMALS 0.000001f\n#endif\n\n#define TRIANGLE_NORMAL(v1, v2, v3, n) \\\n\t{                                  \\\n\t\tvec3f _dif1, _dif2;            \\\n\t\tVEC_DIFF(_dif1, v2, v1);       \\\n\t\tVEC_DIFF(_dif2, v3, v1);       \\\n\t\tVEC_CROSS(n, _dif1, _dif2);    \\\n\t\tVEC_NORMALIZE(n);              \\\n\t}\n\n#define TRIANGLE_NORMAL_FAST(v1, v2, v3, n) \\\n\t{                                       \\\n\t\tvec3f _dif1, _dif2;                 \\\n\t\tVEC_DIFF(_dif1, v2, v1);            \\\n\t\tVEC_DIFF(_dif2, v3, v1);            \\\n\t\tVEC_CROSS(n, _dif1, _dif2);         \\\n\t}\n\n/// plane is a vec4f\n#define TRIANGLE_PLANE(v1, v2, v3, plane)   \\\n\t{                                       \\\n\t\tTRIANGLE_NORMAL(v1, v2, v3, plane); \\\n\t\tplane[3] = VEC_DOT(v1, plane);      \\\n\t}\n\n/// plane is a vec4f\n#define TRIANGLE_PLANE_FAST(v1, v2, v3, plane)   \\\n\t{                                            \\\n\t\tTRIANGLE_NORMAL_FAST(v1, v2, v3, plane); \\\n\t\tplane[3] = VEC_DOT(v1, plane);           \\\n\t}\n\n/// Calc a plane from an edge an a normal. plane is a vec4f\n#define EDGE_PLANE(e1, e2, n, plane)   \\\n\t{                                  \\\n\t\tvec3f _dif;                    \\\n\t\tVEC_DIFF(_dif, e2, e1);        \\\n\t\tVEC_CROSS(plane, _dif, n);     \\\n\t\tVEC_NORMALIZE(plane);          \\\n\t\tplane[3] = VEC_DOT(e1, plane); \\\n\t}\n\n#define DISTANCE_PLANE_POINT(plane, point) (VEC_DOT(plane, point) - plane[3])\n\n#define PROJECT_POINT_PLANE(point, plane, projected) \\\n\t{                                                \\\n\t\tGREAL _dis;                                  \\\n\t\t_dis = DISTANCE_PLANE_POINT(plane, point);   \\\n\t\tVEC_SCALE(projected, -_dis, plane);          \\\n\t\tVEC_SUM(projected, projected, point);        \\\n\t}\n\n//! Verifies if a point is in the plane hull\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE bool POINT_IN_HULL(\n\tconst CLASS_POINT &point, const CLASS_PLANE *planes, GUINT plane_count)\n{\n\tGREAL _dis;\n\tfor (GUINT _i = 0; _i < plane_count; ++_i)\n\t{\n\t\t_dis = DISTANCE_PLANE_POINT(planes[_i], point);\n\t\tif (_dis > 0.0f) return false;\n\t}\n\treturn true;\n}\n\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE void PLANE_CLIP_SEGMENT(\n\tconst CLASS_POINT &s1,\n\tconst CLASS_POINT &s2, const CLASS_PLANE &plane, CLASS_POINT &clipped)\n{\n\tGREAL _dis1, _dis2;\n\t_dis1 = DISTANCE_PLANE_POINT(plane, s1);\n\tVEC_DIFF(clipped, s2, s1);\n\t_dis2 = VEC_DOT(clipped, plane);\n\tVEC_SCALE(clipped, -_dis1 / _dis2, clipped);\n\tVEC_SUM(clipped, clipped, s1);\n}\n\nenum ePLANE_INTERSECTION_TYPE\n{\n\tG_BACK_PLANE = 0,\n\tG_COLLIDE_PLANE,\n\tG_FRONT_PLANE\n};\n\nenum eLINE_PLANE_INTERSECTION_TYPE\n{\n\tG_FRONT_PLANE_S1 = 0,\n\tG_FRONT_PLANE_S2,\n\tG_BACK_PLANE_S1,\n\tG_BACK_PLANE_S2,\n\tG_COLLIDE_PLANE_S1,\n\tG_COLLIDE_PLANE_S2\n};\n\n//! Confirms if the plane intersect the edge or nor\n/*!\nintersection type must have the following values\n<ul>\n<li> 0 : Segment in front of plane, s1 closest\n<li> 1 : Segment in front of plane, s2 closest\n<li> 2 : Segment in back of plane, s1 closest\n<li> 3 : Segment in back of plane, s2 closest\n<li> 4 : Segment collides plane, s1 in back\n<li> 5 : Segment collides plane, s2 in back\n</ul>\n*/\n\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT2(\n\tconst CLASS_POINT &s1,\n\tconst CLASS_POINT &s2,\n\tconst CLASS_PLANE &plane, CLASS_POINT &clipped)\n{\n\tGREAL _dis1 = DISTANCE_PLANE_POINT(plane, s1);\n\tGREAL _dis2 = DISTANCE_PLANE_POINT(plane, s2);\n\tif (_dis1 > -G_EPSILON && _dis2 > -G_EPSILON)\n\t{\n\t\tif (_dis1 < _dis2) return G_FRONT_PLANE_S1;\n\t\treturn G_FRONT_PLANE_S2;\n\t}\n\telse if (_dis1 < G_EPSILON && _dis2 < G_EPSILON)\n\t{\n\t\tif (_dis1 > _dis2) return G_BACK_PLANE_S1;\n\t\treturn G_BACK_PLANE_S2;\n\t}\n\n\tVEC_DIFF(clipped, s2, s1);\n\t_dis2 = VEC_DOT(clipped, plane);\n\tVEC_SCALE(clipped, -_dis1 / _dis2, clipped);\n\tVEC_SUM(clipped, clipped, s1);\n\tif (_dis1 < _dis2) return G_COLLIDE_PLANE_S1;\n\treturn G_COLLIDE_PLANE_S2;\n}\n\n//! Confirms if the plane intersect the edge or not\n/*!\nclipped1 and clipped2 are the vertices behind the plane.\nclipped1 is the closest\n\nintersection_type must have the following values\n<ul>\n<li> 0 : Segment in front of plane, s1 closest\n<li> 1 : Segment in front of plane, s2 closest\n<li> 2 : Segment in back of plane, s1 closest\n<li> 3 : Segment in back of plane, s2 closest\n<li> 4 : Segment collides plane, s1 in back\n<li> 5 : Segment collides plane, s2 in back\n</ul>\n*/\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE eLINE_PLANE_INTERSECTION_TYPE PLANE_CLIP_SEGMENT_CLOSEST(\n\tconst CLASS_POINT &s1,\n\tconst CLASS_POINT &s2,\n\tconst CLASS_PLANE &plane,\n\tCLASS_POINT &clipped1, CLASS_POINT &clipped2)\n{\n\teLINE_PLANE_INTERSECTION_TYPE intersection_type = PLANE_CLIP_SEGMENT2(s1, s2, plane, clipped1);\n\tswitch (intersection_type)\n\t{\n\t\tcase G_FRONT_PLANE_S1:\n\t\t\tVEC_COPY(clipped1, s1);\n\t\t\tVEC_COPY(clipped2, s2);\n\t\t\tbreak;\n\t\tcase G_FRONT_PLANE_S2:\n\t\t\tVEC_COPY(clipped1, s2);\n\t\t\tVEC_COPY(clipped2, s1);\n\t\t\tbreak;\n\t\tcase G_BACK_PLANE_S1:\n\t\t\tVEC_COPY(clipped1, s1);\n\t\t\tVEC_COPY(clipped2, s2);\n\t\t\tbreak;\n\t\tcase G_BACK_PLANE_S2:\n\t\t\tVEC_COPY(clipped1, s2);\n\t\t\tVEC_COPY(clipped2, s1);\n\t\t\tbreak;\n\t\tcase G_COLLIDE_PLANE_S1:\n\t\t\tVEC_COPY(clipped2, s1);\n\t\t\tbreak;\n\t\tcase G_COLLIDE_PLANE_S2:\n\t\t\tVEC_COPY(clipped2, s2);\n\t\t\tbreak;\n\t}\n\treturn intersection_type;\n}\n\n//! Finds the 2 smallest cartesian coordinates of a plane normal\n#define PLANE_MINOR_AXES(plane, i0, i1) VEC_MINOR_AXES(plane, i0, i1)\n\n//! Ray plane collision in one way\n/*!\nIntersects plane in one way only. The ray must face the plane (normals must be in opossite directions).<br/>\nIt uses the PLANEDIREPSILON constant.\n*/\ntemplate <typename T, typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE bool RAY_PLANE_COLLISION(\n\tconst CLASS_PLANE &plane,\n\tconst CLASS_POINT &vDir,\n\tconst CLASS_POINT &vPoint,\n\tCLASS_POINT &pout, T &tparam)\n{\n\tGREAL _dis, _dotdir;\n\t_dotdir = VEC_DOT(plane, vDir);\n\tif (_dotdir < PLANEDIREPSILON)\n\t{\n\t\treturn false;\n\t}\n\t_dis = DISTANCE_PLANE_POINT(plane, vPoint);\n\ttparam = -_dis / _dotdir;\n\tVEC_SCALE(pout, tparam, vDir);\n\tVEC_SUM(pout, vPoint, pout);\n\treturn true;\n}\n\n//! line collision\n/*!\n*\\return\n\t-0  if the ray never intersects\n\t-1 if the ray collides in front\n\t-2 if the ray collides in back\n*/\ntemplate <typename T, typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE GUINT LINE_PLANE_COLLISION(\n\tconst CLASS_PLANE &plane,\n\tconst CLASS_POINT &vDir,\n\tconst CLASS_POINT &vPoint,\n\tCLASS_POINT &pout,\n\tT &tparam,\n\tT tmin, T tmax)\n{\n\tGREAL _dis, _dotdir;\n\t_dotdir = VEC_DOT(plane, vDir);\n\tif (btFabs(_dotdir) < PLANEDIREPSILON)\n\t{\n\t\ttparam = tmax;\n\t\treturn 0;\n\t}\n\t_dis = DISTANCE_PLANE_POINT(plane, vPoint);\n\tchar returnvalue = _dis < 0.0f ? 2 : 1;\n\ttparam = -_dis / _dotdir;\n\n\tif (tparam < tmin)\n\t{\n\t\treturnvalue = 0;\n\t\ttparam = tmin;\n\t}\n\telse if (tparam > tmax)\n\t{\n\t\treturnvalue = 0;\n\t\ttparam = tmax;\n\t}\n\n\tVEC_SCALE(pout, tparam, vDir);\n\tVEC_SUM(pout, vPoint, pout);\n\treturn returnvalue;\n}\n\n/*! \\brief Returns the Ray on which 2 planes intersect if they do.\n    Written by Rodrigo Hernandez on ODE convex collision\n\n  \\param p1 Plane 1\n  \\param p2 Plane 2\n  \\param p Contains the origin of the ray upon returning if planes intersect\n  \\param d Contains the direction of the ray upon returning if planes intersect\n  \\return true if the planes intersect, 0 if paralell.\n\n*/\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE bool INTERSECT_PLANES(\n\tconst CLASS_PLANE &p1,\n\tconst CLASS_PLANE &p2,\n\tCLASS_POINT &p,\n\tCLASS_POINT &d)\n{\n\tVEC_CROSS(d, p1, p2);\n\tGREAL denom = VEC_DOT(d, d);\n\tif (GIM_IS_ZERO(denom)) return false;\n\tvec3f _n;\n\t_n[0] = p1[3] * p2[0] - p2[3] * p1[0];\n\t_n[1] = p1[3] * p2[1] - p2[3] * p1[1];\n\t_n[2] = p1[3] * p2[2] - p2[3] * p1[2];\n\tVEC_CROSS(p, _n, d);\n\tp[0] /= denom;\n\tp[1] /= denom;\n\tp[2] /= denom;\n\treturn true;\n}\n\n//***************** SEGMENT and LINE FUNCTIONS **********************************///\n\n/*! Finds the closest point(cp) to (v) on a segment (e1,e2)\n */\ntemplate <typename CLASS_POINT>\nSIMD_FORCE_INLINE void CLOSEST_POINT_ON_SEGMENT(\n\tCLASS_POINT &cp, const CLASS_POINT &v,\n\tconst CLASS_POINT &e1, const CLASS_POINT &e2)\n{\n\tvec3f _n;\n\tVEC_DIFF(_n, e2, e1);\n\tVEC_DIFF(cp, v, e1);\n\tGREAL _scalar = VEC_DOT(cp, _n);\n\t_scalar /= VEC_DOT(_n, _n);\n\tif (_scalar < 0.0f)\n\t{\n\t\tVEC_COPY(cp, e1);\n\t}\n\telse if (_scalar > 1.0f)\n\t{\n\t\tVEC_COPY(cp, e2);\n\t}\n\telse\n\t{\n\t\tVEC_SCALE(cp, _scalar, _n);\n\t\tVEC_SUM(cp, cp, e1);\n\t}\n}\n\n/*! \\brief Finds the line params where these lines intersect.\n\n\\param dir1 Direction of line 1\n\\param point1 Point of line 1\n\\param dir2 Direction of line 2\n\\param point2 Point of line 2\n\\param t1 Result Parameter for line 1\n\\param t2 Result Parameter for line 2\n\\param dointersect  0  if the lines won't intersect, else 1\n\n*/\ntemplate <typename T, typename CLASS_POINT>\nSIMD_FORCE_INLINE bool LINE_INTERSECTION_PARAMS(\n\tconst CLASS_POINT &dir1,\n\tCLASS_POINT &point1,\n\tconst CLASS_POINT &dir2,\n\tCLASS_POINT &point2,\n\tT &t1, T &t2)\n{\n\tGREAL det;\n\tGREAL e1e1 = VEC_DOT(dir1, dir1);\n\tGREAL e1e2 = VEC_DOT(dir1, dir2);\n\tGREAL e2e2 = VEC_DOT(dir2, dir2);\n\tvec3f p1p2;\n\tVEC_DIFF(p1p2, point1, point2);\n\tGREAL p1p2e1 = VEC_DOT(p1p2, dir1);\n\tGREAL p1p2e2 = VEC_DOT(p1p2, dir2);\n\tdet = e1e2 * e1e2 - e1e1 * e2e2;\n\tif (GIM_IS_ZERO(det)) return false;\n\tt1 = (e1e2 * p1p2e2 - e2e2 * p1p2e1) / det;\n\tt2 = (e1e1 * p1p2e2 - e1e2 * p1p2e1) / det;\n\treturn true;\n}\n\n//! Find closest points on segments\ntemplate <typename CLASS_POINT>\nSIMD_FORCE_INLINE void SEGMENT_COLLISION(\n\tconst CLASS_POINT &vA1,\n\tconst CLASS_POINT &vA2,\n\tconst CLASS_POINT &vB1,\n\tconst CLASS_POINT &vB2,\n\tCLASS_POINT &vPointA,\n\tCLASS_POINT &vPointB)\n{\n\tCLASS_POINT _AD, _BD, n;\n\tvec4f _M;  //plane\n\tVEC_DIFF(_AD, vA2, vA1);\n\tVEC_DIFF(_BD, vB2, vB1);\n\tVEC_CROSS(n, _AD, _BD);\n\tGREAL _tp = VEC_DOT(n, n);\n\tif (_tp < G_EPSILON)  //ARE PARALELE\n\t{\n\t\t//project B over A\n\t\tbool invert_b_order = false;\n\t\t_M[0] = VEC_DOT(vB1, _AD);\n\t\t_M[1] = VEC_DOT(vB2, _AD);\n\t\tif (_M[0] > _M[1])\n\t\t{\n\t\t\tinvert_b_order = true;\n\t\t\tGIM_SWAP_NUMBERS(_M[0], _M[1]);\n\t\t}\n\t\t_M[2] = VEC_DOT(vA1, _AD);\n\t\t_M[3] = VEC_DOT(vA2, _AD);\n\t\t//mid points\n\t\tn[0] = (_M[0] + _M[1]) * 0.5f;\n\t\tn[1] = (_M[2] + _M[3]) * 0.5f;\n\n\t\tif (n[0] < n[1])\n\t\t{\n\t\t\tif (_M[1] < _M[2])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tvPointA = vA1;\n\t\t\t}\n\t\t\telse if (_M[1] < _M[3])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tCLOSEST_POINT_ON_SEGMENT(vPointA, vPointB, vA1, vA2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvPointA = vA2;\n\t\t\t\tCLOSEST_POINT_ON_SEGMENT(vPointB, vPointA, vB1, vB2);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (_M[3] < _M[0])\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB2 : vB1;\n\t\t\t\tvPointA = vA2;\n\t\t\t}\n\t\t\telse if (_M[3] < _M[1])\n\t\t\t{\n\t\t\t\tvPointA = vA2;\n\t\t\t\tCLOSEST_POINT_ON_SEGMENT(vPointB, vPointA, vB1, vB2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvPointB = invert_b_order ? vB1 : vB2;\n\t\t\t\tCLOSEST_POINT_ON_SEGMENT(vPointA, vPointB, vA1, vA2);\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tVEC_CROSS(_M, n, _BD);\n\t_M[3] = VEC_DOT(_M, vB1);\n\n\tLINE_PLANE_COLLISION(_M, _AD, vA1, vPointA, _tp, btScalar(0), btScalar(1));\n\t/*Closest point on segment*/\n\tVEC_DIFF(vPointB, vPointA, vB1);\n\t_tp = VEC_DOT(vPointB, _BD);\n\t_tp /= VEC_DOT(_BD, _BD);\n\t_tp = GIM_CLAMP(_tp, 0.0f, 1.0f);\n\tVEC_SCALE(vPointB, _tp, _BD);\n\tVEC_SUM(vPointB, vPointB, vB1);\n}\n\n//! Line box intersection in one dimension\n/*!\n\n*\\param pos Position of the ray\n*\\param dir Projection of the Direction of the ray\n*\\param bmin Minimum bound of the box\n*\\param bmax Maximum bound of the box\n*\\param tfirst the minimum projection. Assign to 0 at first.\n*\\param tlast the maximum projection. Assign to INFINITY at first.\n*\\return true if there is an intersection.\n*/\ntemplate <typename T>\nSIMD_FORCE_INLINE bool BOX_AXIS_INTERSECT(T pos, T dir, T bmin, T bmax, T &tfirst, T &tlast)\n{\n\tif (GIM_IS_ZERO(dir))\n\t{\n\t\treturn !(pos < bmin || pos > bmax);\n\t}\n\tGREAL a0 = (bmin - pos) / dir;\n\tGREAL a1 = (bmax - pos) / dir;\n\tif (a0 > a1) GIM_SWAP_NUMBERS(a0, a1);\n\ttfirst = GIM_MAX(a0, tfirst);\n\ttlast = GIM_MIN(a1, tlast);\n\tif (tlast < tfirst) return false;\n\treturn true;\n}\n\n//! Sorts 3 componets\ntemplate <typename T>\nSIMD_FORCE_INLINE void SORT_3_INDICES(\n\tconst T *values,\n\tGUINT *order_indices)\n{\n\t//get minimum\n\torder_indices[0] = values[0] < values[1] ? (values[0] < values[2] ? 0 : 2) : (values[1] < values[2] ? 1 : 2);\n\n\t//get second and third\n\tGUINT i0 = (order_indices[0] + 1) % 3;\n\tGUINT i1 = (i0 + 1) % 3;\n\n\tif (values[i0] < values[i1])\n\t{\n\t\torder_indices[1] = i0;\n\t\torder_indices[2] = i1;\n\t}\n\telse\n\t{\n\t\torder_indices[1] = i1;\n\t\torder_indices[2] = i0;\n\t}\n}\n\n#endif  // GIM_VECTOR_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_bitset.h",
    "content": "#ifndef GIM_BITSET_H_INCLUDED\n#define GIM_BITSET_H_INCLUDED\n/*! \\file gim_bitset.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_array.h\"\n\n#define GUINT_BIT_COUNT 32\n#define GUINT_EXPONENT 5\n\nclass gim_bitset\n{\npublic:\n\tgim_array<GUINT> m_container;\n\n\tgim_bitset()\n\t{\n\t}\n\n\tgim_bitset(GUINT bits_count)\n\t{\n\t\tresize(bits_count);\n\t}\n\n\t~gim_bitset()\n\t{\n\t}\n\n\tinline bool resize(GUINT newsize)\n\t{\n\t\tGUINT oldsize = m_container.size();\n\t\tm_container.resize(newsize / GUINT_BIT_COUNT + 1, false);\n\t\twhile (oldsize < m_container.size())\n\t\t{\n\t\t\tm_container[oldsize] = 0;\n\t\t}\n\t\treturn true;\n\t}\n\n\tinline GUINT size()\n\t{\n\t\treturn m_container.size() * GUINT_BIT_COUNT;\n\t}\n\n\tinline void set_all()\n\t{\n\t\tfor (GUINT i = 0; i < m_container.size(); ++i)\n\t\t{\n\t\t\tm_container[i] = 0xffffffff;\n\t\t}\n\t}\n\n\tinline void clear_all()\n\t{\n\t\tfor (GUINT i = 0; i < m_container.size(); ++i)\n\t\t{\n\t\t\tm_container[i] = 0;\n\t\t}\n\t}\n\n\tinline void set(GUINT bit_index)\n\t{\n\t\tif (bit_index >= size())\n\t\t{\n\t\t\tresize(bit_index);\n\t\t}\n\t\tm_container[bit_index >> GUINT_EXPONENT] |= (1 << (bit_index & (GUINT_BIT_COUNT - 1)));\n\t}\n\n\t///Return 0 or 1\n\tinline char get(GUINT bit_index)\n\t{\n\t\tif (bit_index >= size())\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\tchar value = m_container[bit_index >> GUINT_EXPONENT] &\n\t\t\t\t\t (1 << (bit_index & (GUINT_BIT_COUNT - 1)));\n\t\treturn value;\n\t}\n\n\tinline void clear(GUINT bit_index)\n\t{\n\t\tm_container[bit_index >> GUINT_EXPONENT] &= ~(1 << (bit_index & (GUINT_BIT_COUNT - 1)));\n\t}\n};\n\n#endif  // GIM_CONTAINERS_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_box_collision.h",
    "content": "#ifndef GIM_BOX_COLLISION_H_INCLUDED\n#define GIM_BOX_COLLISION_H_INCLUDED\n\n/*! \\file gim_box_collision.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n#include \"gim_basic_geometry_operations.h\"\n#include \"LinearMath/btTransform.h\"\n\n//SIMD_FORCE_INLINE bool test_cross_edge_box(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, const btVector3 & extend,\n//\tint dir_index0,\n//\tint dir_index1\n//\tint component_index0,\n//\tint component_index1)\n//{\n//\t// dir coords are -z and y\n//\n//\tconst btScalar dir0 = -edge[dir_index0];\n//\tconst btScalar dir1 = edge[dir_index1];\n//\tbtScalar pmin = pointa[component_index0]*dir0 + pointa[component_index1]*dir1;\n//\tbtScalar pmax = pointb[component_index0]*dir0 + pointb[component_index1]*dir1;\n//\t//find minmax\n//\tif(pmin>pmax)\n//\t{\n//\t\tGIM_SWAP_NUMBERS(pmin,pmax);\n//\t}\n//\t//find extends\n//\tconst btScalar rad = extend[component_index0] * absolute_edge[dir_index0] +\n//\t\t\t\t\textend[component_index1] * absolute_edge[dir_index1];\n//\n//\tif(pmin>rad || -rad>pmax) return false;\n//\treturn true;\n//}\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_X_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,2,1,1,2);\n//}\n//\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_Y_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,0,2,2,0);\n//}\n//\n//SIMD_FORCE_INLINE bool test_cross_edge_box_Z_axis(\n//\tconst btVector3 & edge,\n//\tconst btVector3 & absolute_edge,\n//\tconst btVector3 & pointa,\n//\tconst btVector3 & pointb, btVector3 & extend)\n//{\n//\n//\treturn test_cross_edge_box(edge,absolute_edge,pointa,pointb,extend,1,0,0,1);\n//}\n\n#ifndef TEST_CROSS_EDGE_BOX_MCR\n\n#define TEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, i_dir_0, i_dir_1, i_comp_0, i_comp_1) \\\n\t{                                                                                                               \\\n\t\tconst btScalar dir0 = -edge[i_dir_0];                                                                       \\\n\t\tconst btScalar dir1 = edge[i_dir_1];                                                                        \\\n\t\tbtScalar pmin = pointa[i_comp_0] * dir0 + pointa[i_comp_1] * dir1;                                          \\\n\t\tbtScalar pmax = pointb[i_comp_0] * dir0 + pointb[i_comp_1] * dir1;                                          \\\n\t\tif (pmin > pmax)                                                                                            \\\n\t\t{                                                                                                           \\\n\t\t\tGIM_SWAP_NUMBERS(pmin, pmax);                                                                           \\\n\t\t}                                                                                                           \\\n\t\tconst btScalar abs_dir0 = absolute_edge[i_dir_0];                                                           \\\n\t\tconst btScalar abs_dir1 = absolute_edge[i_dir_1];                                                           \\\n\t\tconst btScalar rad = _extend[i_comp_0] * abs_dir0 + _extend[i_comp_1] * abs_dir1;                           \\\n\t\tif (pmin > rad || -rad > pmax) return false;                                                                \\\n\t}\n\n#endif\n\n#define TEST_CROSS_EDGE_BOX_X_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 2, 1, 1, 2); \\\n\t}\n\n#define TEST_CROSS_EDGE_BOX_Y_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 0, 2, 2, 0); \\\n\t}\n\n#define TEST_CROSS_EDGE_BOX_Z_AXIS_MCR(edge, absolute_edge, pointa, pointb, _extend)       \\\n\t{                                                                                      \\\n\t\tTEST_CROSS_EDGE_BOX_MCR(edge, absolute_edge, pointa, pointb, _extend, 1, 0, 0, 1); \\\n\t}\n\n//!  Class for transforming a model1 to the space of model0\nclass GIM_BOX_BOX_TRANSFORM_CACHE\n{\npublic:\n\tbtVector3 m_T1to0;    //!< Transforms translation of model1 to model 0\n\tbtMatrix3x3 m_R1to0;  //!< Transforms Rotation of model1 to model 0, equal  to R0' * R1\n\tbtMatrix3x3 m_AR;     //!< Absolute value of m_R1to0\n\n\tSIMD_FORCE_INLINE void calc_absolute_matrix()\n\t{\n\t\tstatic const btVector3 vepsi(1e-6f, 1e-6f, 1e-6f);\n\t\tm_AR[0] = vepsi + m_R1to0[0].absolute();\n\t\tm_AR[1] = vepsi + m_R1to0[1].absolute();\n\t\tm_AR[2] = vepsi + m_R1to0[2].absolute();\n\t}\n\n\tGIM_BOX_BOX_TRANSFORM_CACHE()\n\t{\n\t}\n\n\tGIM_BOX_BOX_TRANSFORM_CACHE(mat4f trans1_to_0)\n\t{\n\t\tCOPY_MATRIX_3X3(m_R1to0, trans1_to_0)\n\t\tMAT_GET_TRANSLATION(trans1_to_0, m_T1to0)\n\t\tcalc_absolute_matrix();\n\t}\n\n\t//! Calc the transformation relative  1 to 0. Inverts matrics by transposing\n\tSIMD_FORCE_INLINE void calc_from_homogenic(const btTransform &trans0, const btTransform &trans1)\n\t{\n\t\tm_R1to0 = trans0.getBasis().transpose();\n\t\tm_T1to0 = m_R1to0 * (-trans0.getOrigin());\n\n\t\tm_T1to0 += m_R1to0 * trans1.getOrigin();\n\t\tm_R1to0 *= trans1.getBasis();\n\n\t\tcalc_absolute_matrix();\n\t}\n\n\t//! Calcs the full invertion of the matrices. Useful for scaling matrices\n\tSIMD_FORCE_INLINE void calc_from_full_invert(const btTransform &trans0, const btTransform &trans1)\n\t{\n\t\tm_R1to0 = trans0.getBasis().inverse();\n\t\tm_T1to0 = m_R1to0 * (-trans0.getOrigin());\n\n\t\tm_T1to0 += m_R1to0 * trans1.getOrigin();\n\t\tm_R1to0 *= trans1.getBasis();\n\n\t\tcalc_absolute_matrix();\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 transform(const btVector3 &point)\n\t{\n\t\treturn point.dot3(m_R1to0[0], m_R1to0[1], m_R1to0[2]) + m_T1to0;\n\t}\n};\n\n#ifndef BOX_PLANE_EPSILON\n#define BOX_PLANE_EPSILON 0.000001f\n#endif\n\n//! Axis aligned box\nclass GIM_AABB\n{\npublic:\n\tbtVector3 m_min;\n\tbtVector3 m_max;\n\n\tGIM_AABB()\n\t{\n\t}\n\n\tGIM_AABB(const btVector3 &V1,\n\t\t\t const btVector3 &V2,\n\t\t\t const btVector3 &V3)\n\t{\n\t\tm_min[0] = GIM_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = GIM_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = GIM_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = GIM_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = GIM_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = GIM_MAX3(V1[2], V2[2], V3[2]);\n\t}\n\n\tGIM_AABB(const btVector3 &V1,\n\t\t\t const btVector3 &V2,\n\t\t\t const btVector3 &V3,\n\t\t\t GREAL margin)\n\t{\n\t\tm_min[0] = GIM_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = GIM_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = GIM_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = GIM_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = GIM_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = GIM_MAX3(V1[2], V2[2], V3[2]);\n\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tGIM_AABB(const GIM_AABB &other) : m_min(other.m_min), m_max(other.m_max)\n\t{\n\t}\n\n\tGIM_AABB(const GIM_AABB &other, btScalar margin) : m_min(other.m_min), m_max(other.m_max)\n\t{\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tSIMD_FORCE_INLINE void invalidate()\n\t{\n\t\tm_min[0] = G_REAL_INFINITY;\n\t\tm_min[1] = G_REAL_INFINITY;\n\t\tm_min[2] = G_REAL_INFINITY;\n\t\tm_max[0] = -G_REAL_INFINITY;\n\t\tm_max[1] = -G_REAL_INFINITY;\n\t\tm_max[2] = -G_REAL_INFINITY;\n\t}\n\n\tSIMD_FORCE_INLINE void increment_margin(btScalar margin)\n\t{\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\tSIMD_FORCE_INLINE void copy_with_margin(const GIM_AABB &other, btScalar margin)\n\t{\n\t\tm_min[0] = other.m_min[0] - margin;\n\t\tm_min[1] = other.m_min[1] - margin;\n\t\tm_min[2] = other.m_min[2] - margin;\n\n\t\tm_max[0] = other.m_max[0] + margin;\n\t\tm_max[1] = other.m_max[1] + margin;\n\t\tm_max[2] = other.m_max[2] + margin;\n\t}\n\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void calc_from_triangle(\n\t\tconst CLASS_POINT &V1,\n\t\tconst CLASS_POINT &V2,\n\t\tconst CLASS_POINT &V3)\n\t{\n\t\tm_min[0] = GIM_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = GIM_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = GIM_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = GIM_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = GIM_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = GIM_MAX3(V1[2], V2[2], V3[2]);\n\t}\n\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void calc_from_triangle_margin(\n\t\tconst CLASS_POINT &V1,\n\t\tconst CLASS_POINT &V2,\n\t\tconst CLASS_POINT &V3, btScalar margin)\n\t{\n\t\tm_min[0] = GIM_MIN3(V1[0], V2[0], V3[0]);\n\t\tm_min[1] = GIM_MIN3(V1[1], V2[1], V3[1]);\n\t\tm_min[2] = GIM_MIN3(V1[2], V2[2], V3[2]);\n\n\t\tm_max[0] = GIM_MAX3(V1[0], V2[0], V3[0]);\n\t\tm_max[1] = GIM_MAX3(V1[1], V2[1], V3[1]);\n\t\tm_max[2] = GIM_MAX3(V1[2], V2[2], V3[2]);\n\n\t\tm_min[0] -= margin;\n\t\tm_min[1] -= margin;\n\t\tm_min[2] -= margin;\n\t\tm_max[0] += margin;\n\t\tm_max[1] += margin;\n\t\tm_max[2] += margin;\n\t}\n\n\t//! Apply a transform to an AABB\n\tSIMD_FORCE_INLINE void appy_transform(const btTransform &trans)\n\t{\n\t\tbtVector3 center = (m_max + m_min) * 0.5f;\n\t\tbtVector3 extends = m_max - center;\n\t\t// Compute new center\n\t\tcenter = trans(center);\n\n\t\tbtVector3 textends = extends.dot3(trans.getBasis().getRow(0).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.getBasis().getRow(1).absolute(),\n\t\t\t\t\t\t\t\t\t\t  trans.getBasis().getRow(2).absolute());\n\n\t\tm_min = center - textends;\n\t\tm_max = center + textends;\n\t}\n\n\t//! Merges a Box\n\tSIMD_FORCE_INLINE void merge(const GIM_AABB &box)\n\t{\n\t\tm_min[0] = GIM_MIN(m_min[0], box.m_min[0]);\n\t\tm_min[1] = GIM_MIN(m_min[1], box.m_min[1]);\n\t\tm_min[2] = GIM_MIN(m_min[2], box.m_min[2]);\n\n\t\tm_max[0] = GIM_MAX(m_max[0], box.m_max[0]);\n\t\tm_max[1] = GIM_MAX(m_max[1], box.m_max[1]);\n\t\tm_max[2] = GIM_MAX(m_max[2], box.m_max[2]);\n\t}\n\n\t//! Merges a point\n\ttemplate <typename CLASS_POINT>\n\tSIMD_FORCE_INLINE void merge_point(const CLASS_POINT &point)\n\t{\n\t\tm_min[0] = GIM_MIN(m_min[0], point[0]);\n\t\tm_min[1] = GIM_MIN(m_min[1], point[1]);\n\t\tm_min[2] = GIM_MIN(m_min[2], point[2]);\n\n\t\tm_max[0] = GIM_MAX(m_max[0], point[0]);\n\t\tm_max[1] = GIM_MAX(m_max[1], point[1]);\n\t\tm_max[2] = GIM_MAX(m_max[2], point[2]);\n\t}\n\n\t//! Gets the extend and center\n\tSIMD_FORCE_INLINE void get_center_extend(btVector3 &center, btVector3 &extend) const\n\t{\n\t\tcenter = (m_max + m_min) * 0.5f;\n\t\textend = m_max - center;\n\t}\n\n\t//! Finds the intersecting box between this box and the other.\n\tSIMD_FORCE_INLINE void find_intersection(const GIM_AABB &other, GIM_AABB &intersection) const\n\t{\n\t\tintersection.m_min[0] = GIM_MAX(other.m_min[0], m_min[0]);\n\t\tintersection.m_min[1] = GIM_MAX(other.m_min[1], m_min[1]);\n\t\tintersection.m_min[2] = GIM_MAX(other.m_min[2], m_min[2]);\n\n\t\tintersection.m_max[0] = GIM_MIN(other.m_max[0], m_max[0]);\n\t\tintersection.m_max[1] = GIM_MIN(other.m_max[1], m_max[1]);\n\t\tintersection.m_max[2] = GIM_MIN(other.m_max[2], m_max[2]);\n\t}\n\n\tSIMD_FORCE_INLINE bool has_collision(const GIM_AABB &other) const\n\t{\n\t\tif (m_min[0] > other.m_max[0] ||\n\t\t\tm_max[0] < other.m_min[0] ||\n\t\t\tm_min[1] > other.m_max[1] ||\n\t\t\tm_max[1] < other.m_min[1] ||\n\t\t\tm_min[2] > other.m_max[2] ||\n\t\t\tm_max[2] < other.m_min[2])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\t/*! \\brief Finds the Ray intersection parameter.\n\t\\param aabb Aligned box\n\t\\param vorigin A vec3f with the origin of the ray\n\t\\param vdir A vec3f with the direction of the ray\n\t*/\n\tSIMD_FORCE_INLINE bool collide_ray(const btVector3 &vorigin, const btVector3 &vdir)\n\t{\n\t\tbtVector3 extents, center;\n\t\tthis->get_center_extend(center, extents);\n\t\t;\n\n\t\tbtScalar Dx = vorigin[0] - center[0];\n\t\tif (GIM_GREATER(Dx, extents[0]) && Dx * vdir[0] >= 0.0f) return false;\n\t\tbtScalar Dy = vorigin[1] - center[1];\n\t\tif (GIM_GREATER(Dy, extents[1]) && Dy * vdir[1] >= 0.0f) return false;\n\t\tbtScalar Dz = vorigin[2] - center[2];\n\t\tif (GIM_GREATER(Dz, extents[2]) && Dz * vdir[2] >= 0.0f) return false;\n\n\t\tbtScalar f = vdir[1] * Dz - vdir[2] * Dy;\n\t\tif (btFabs(f) > extents[1] * btFabs(vdir[2]) + extents[2] * btFabs(vdir[1])) return false;\n\t\tf = vdir[2] * Dx - vdir[0] * Dz;\n\t\tif (btFabs(f) > extents[0] * btFabs(vdir[2]) + extents[2] * btFabs(vdir[0])) return false;\n\t\tf = vdir[0] * Dy - vdir[1] * Dx;\n\t\tif (btFabs(f) > extents[0] * btFabs(vdir[1]) + extents[1] * btFabs(vdir[0])) return false;\n\t\treturn true;\n\t}\n\n\tSIMD_FORCE_INLINE void projection_interval(const btVector3 &direction, btScalar &vmin, btScalar &vmax) const\n\t{\n\t\tbtVector3 center = (m_max + m_min) * 0.5f;\n\t\tbtVector3 extend = m_max - center;\n\n\t\tbtScalar _fOrigin = direction.dot(center);\n\t\tbtScalar _fMaximumExtent = extend.dot(direction.absolute());\n\t\tvmin = _fOrigin - _fMaximumExtent;\n\t\tvmax = _fOrigin + _fMaximumExtent;\n\t}\n\n\tSIMD_FORCE_INLINE ePLANE_INTERSECTION_TYPE plane_classify(const btVector4 &plane) const\n\t{\n\t\tbtScalar _fmin, _fmax;\n\t\tthis->projection_interval(plane, _fmin, _fmax);\n\n\t\tif (plane[3] > _fmax + BOX_PLANE_EPSILON)\n\t\t{\n\t\t\treturn G_BACK_PLANE;  // 0\n\t\t}\n\n\t\tif (plane[3] + BOX_PLANE_EPSILON >= _fmin)\n\t\t{\n\t\t\treturn G_COLLIDE_PLANE;  //1\n\t\t}\n\t\treturn G_FRONT_PLANE;  //2\n\t}\n\n\tSIMD_FORCE_INLINE bool overlapping_trans_conservative(const GIM_AABB &box, btTransform &trans1_to_0)\n\t{\n\t\tGIM_AABB tbox = box;\n\t\ttbox.appy_transform(trans1_to_0);\n\t\treturn has_collision(tbox);\n\t}\n\n\t//! transcache is the transformation cache from box to this AABB\n\tSIMD_FORCE_INLINE bool overlapping_trans_cache(\n\t\tconst GIM_AABB &box, const GIM_BOX_BOX_TRANSFORM_CACHE &transcache, bool fulltest)\n\t{\n\t\t//Taken from OPCODE\n\t\tbtVector3 ea, eb;  //extends\n\t\tbtVector3 ca, cb;  //extends\n\t\tget_center_extend(ca, ea);\n\t\tbox.get_center_extend(cb, eb);\n\n\t\tbtVector3 T;\n\t\tbtScalar t, t2;\n\t\tint i;\n\n\t\t// Class I : A's basis vectors\n\t\tfor (i = 0; i < 3; i++)\n\t\t{\n\t\t\tT[i] = transcache.m_R1to0[i].dot(cb) + transcache.m_T1to0[i] - ca[i];\n\t\t\tt = transcache.m_AR[i].dot(eb) + ea[i];\n\t\t\tif (GIM_GREATER(T[i], t)) return false;\n\t\t}\n\t\t// Class II : B's basis vectors\n\t\tfor (i = 0; i < 3; i++)\n\t\t{\n\t\t\tt = MAT_DOT_COL(transcache.m_R1to0, T, i);\n\t\t\tt2 = MAT_DOT_COL(transcache.m_AR, ea, i) + eb[i];\n\t\t\tif (GIM_GREATER(t, t2)) return false;\n\t\t}\n\t\t// Class III : 9 cross products\n\t\tif (fulltest)\n\t\t{\n\t\t\tint j, m, n, o, p, q, r;\n\t\t\tfor (i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tm = (i + 1) % 3;\n\t\t\t\tn = (i + 2) % 3;\n\t\t\t\to = i == 0 ? 1 : 0;\n\t\t\t\tp = i == 2 ? 1 : 2;\n\t\t\t\tfor (j = 0; j < 3; j++)\n\t\t\t\t{\n\t\t\t\t\tq = j == 2 ? 1 : 2;\n\t\t\t\t\tr = j == 0 ? 1 : 0;\n\t\t\t\t\tt = T[n] * transcache.m_R1to0[m][j] - T[m] * transcache.m_R1to0[n][j];\n\t\t\t\t\tt2 = ea[o] * transcache.m_AR[p][j] + ea[p] * transcache.m_AR[o][j] +\n\t\t\t\t\t\t eb[r] * transcache.m_AR[i][q] + eb[q] * transcache.m_AR[i][r];\n\t\t\t\t\tif (GIM_GREATER(t, t2)) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t//! Simple test for planes.\n\tSIMD_FORCE_INLINE bool collide_plane(\n\t\tconst btVector4 &plane)\n\t{\n\t\tePLANE_INTERSECTION_TYPE classify = plane_classify(plane);\n\t\treturn (classify == G_COLLIDE_PLANE);\n\t}\n\n\t//! test for a triangle, with edges\n\tSIMD_FORCE_INLINE bool collide_triangle_exact(\n\t\tconst btVector3 &p1,\n\t\tconst btVector3 &p2,\n\t\tconst btVector3 &p3,\n\t\tconst btVector4 &triangle_plane)\n\t{\n\t\tif (!collide_plane(triangle_plane)) return false;\n\n\t\tbtVector3 center, extends;\n\t\tthis->get_center_extend(center, extends);\n\n\t\tconst btVector3 v1(p1 - center);\n\t\tconst btVector3 v2(p2 - center);\n\t\tconst btVector3 v3(p3 - center);\n\n\t\t//First axis\n\t\tbtVector3 diff(v2 - v1);\n\t\tbtVector3 abs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v1, v3, extends);\n\n\t\tdiff = v3 - v2;\n\t\tabs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v2, v1, extends);\n\n\t\tdiff = v1 - v3;\n\t\tabs_diff = diff.absolute();\n\t\t//Test With X axis\n\t\tTEST_CROSS_EDGE_BOX_X_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\t\t//Test With Y axis\n\t\tTEST_CROSS_EDGE_BOX_Y_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\t\t//Test With Z axis\n\t\tTEST_CROSS_EDGE_BOX_Z_AXIS_MCR(diff, abs_diff, v3, v2, extends);\n\n\t\treturn true;\n\t}\n};\n\n#ifndef BT_BOX_COLLISION_H_INCLUDED\n//! Compairison of transformation objects\nSIMD_FORCE_INLINE bool btCompareTransformsEqual(const btTransform &t1, const btTransform &t2)\n{\n\tif (!(t1.getOrigin() == t2.getOrigin())) return false;\n\n\tif (!(t1.getBasis().getRow(0) == t2.getBasis().getRow(0))) return false;\n\tif (!(t1.getBasis().getRow(1) == t2.getBasis().getRow(1))) return false;\n\tif (!(t1.getBasis().getRow(2) == t2.getBasis().getRow(2))) return false;\n\treturn true;\n}\n#endif\n\n#endif  // GIM_BOX_COLLISION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_box_set.h",
    "content": "#ifndef GIM_BOX_SET_H_INCLUDED\n#define GIM_BOX_SET_H_INCLUDED\n\n/*! \\file gim_box_set.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_array.h\"\n#include \"gim_radixsort.h\"\n#include \"gim_box_collision.h\"\n#include \"gim_tri_collision.h\"\n#include \"gim_pair.h\"\n\n//! A pairset array\nclass gim_pair_set : public gim_array<GIM_PAIR>\n{\npublic:\n\tgim_pair_set() : gim_array<GIM_PAIR>(32)\n\t{\n\t}\n\tinline void push_pair(GUINT index1, GUINT index2)\n\t{\n\t\tpush_back(GIM_PAIR(index1, index2));\n\t}\n\n\tinline void push_pair_inv(GUINT index1, GUINT index2)\n\t{\n\t\tpush_back(GIM_PAIR(index2, index1));\n\t}\n};\n\n//! Prototype Base class for primitive classification\n/*!\nThis class is a wrapper for primitive collections.\nThis tells relevant info for the Bounding Box set classes, which take care of space classification.\nThis class can manage Compound shapes and trimeshes, and if it is managing trimesh then the  Hierarchy Bounding Box classes will take advantage of primitive Vs Box overlapping tests for getting optimal results and less Per Box compairisons.\n*/\nclass GIM_PRIMITIVE_MANAGER_PROTOTYPE\n{\npublic:\n\tvirtual ~GIM_PRIMITIVE_MANAGER_PROTOTYPE() {}\n\t//! determines if this manager consist on only triangles, which special case will be optimized\n\tvirtual bool is_trimesh() = 0;\n\tvirtual GUINT get_primitive_count() = 0;\n\tvirtual void get_primitive_box(GUINT prim_index, GIM_AABB& primbox) = 0;\n\tvirtual void get_primitive_triangle(GUINT prim_index, GIM_TRIANGLE& triangle) = 0;\n};\n\nstruct GIM_AABB_DATA\n{\n\tGIM_AABB m_bound;\n\tGUINT m_data;\n};\n\n//! Node Structure for trees\nstruct GIM_BOX_TREE_NODE\n{\n\tGIM_AABB m_bound;\n\tGUINT m_left;         //!< Left subtree\n\tGUINT m_right;        //!< Right subtree\n\tGUINT m_escapeIndex;  //!< Scape index for traversing\n\tGUINT m_data;         //!< primitive index if apply\n\n\tGIM_BOX_TREE_NODE()\n\t{\n\t\tm_left = 0;\n\t\tm_right = 0;\n\t\tm_escapeIndex = 0;\n\t\tm_data = 0;\n\t}\n\n\tSIMD_FORCE_INLINE bool is_leaf_node() const\n\t{\n\t\treturn (!m_left && !m_right);\n\t}\n};\n\n//! Basic Box tree structure\nclass GIM_BOX_TREE\n{\nprotected:\n\tGUINT m_num_nodes;\n\tgim_array<GIM_BOX_TREE_NODE> m_node_array;\n\nprotected:\n\tGUINT _sort_and_calc_splitting_index(\n\t\tgim_array<GIM_AABB_DATA>& primitive_boxes,\n\t\tGUINT startIndex, GUINT endIndex, GUINT splitAxis);\n\n\tGUINT _calc_splitting_axis(gim_array<GIM_AABB_DATA>& primitive_boxes, GUINT startIndex, GUINT endIndex);\n\n\tvoid _build_sub_tree(gim_array<GIM_AABB_DATA>& primitive_boxes, GUINT startIndex, GUINT endIndex);\n\npublic:\n\tGIM_BOX_TREE()\n\t{\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! prototype functions for box tree management\n\t//!@{\n\tvoid build_tree(gim_array<GIM_AABB_DATA>& primitive_boxes);\n\n\tSIMD_FORCE_INLINE void clearNodes()\n\t{\n\t\tm_node_array.clear();\n\t\tm_num_nodes = 0;\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE GUINT getNodeCount() const\n\t{\n\t\treturn m_num_nodes;\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].is_leaf_node();\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].m_data;\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB& bound) const\n\t{\n\t\tbound = m_node_array[nodeindex].m_bound;\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB& bound)\n\t{\n\t\tm_node_array[nodeindex].m_bound = bound;\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].m_left;\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].m_right;\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_node_array[nodeindex].m_escapeIndex;\n\t}\n\n\t//!@}\n};\n\n//! Generic Box Tree Template\n/*!\nThis class offers an structure for managing a box tree of primitives.\nRequires a Primitive prototype (like GIM_PRIMITIVE_MANAGER_PROTOTYPE ) and\na Box tree structure ( like GIM_BOX_TREE).\n*/\ntemplate <typename _GIM_PRIMITIVE_MANAGER_PROTOTYPE, typename _GIM_BOX_TREE_PROTOTYPE>\nclass GIM_BOX_TREE_TEMPLATE_SET\n{\nprotected:\n\t_GIM_PRIMITIVE_MANAGER_PROTOTYPE m_primitive_manager;\n\t_GIM_BOX_TREE_PROTOTYPE m_box_tree;\n\nprotected:\n\t//stackless refit\n\tSIMD_FORCE_INLINE void refit()\n\t{\n\t\tGUINT nodecount = getNodeCount();\n\t\twhile (nodecount--)\n\t\t{\n\t\t\tif (isLeafNode(nodecount))\n\t\t\t{\n\t\t\t\tGIM_AABB leafbox;\n\t\t\t\tm_primitive_manager.get_primitive_box(getNodeData(nodecount), leafbox);\n\t\t\t\tsetNodeBound(nodecount, leafbox);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//get left bound\n\t\t\t\tGUINT childindex = getLeftNodeIndex(nodecount);\n\t\t\t\tGIM_AABB bound;\n\t\t\t\tgetNodeBound(childindex, bound);\n\t\t\t\t//get right bound\n\t\t\t\tchildindex = getRightNodeIndex(nodecount);\n\t\t\t\tGIM_AABB bound2;\n\t\t\t\tgetNodeBound(childindex, bound2);\n\t\t\t\tbound.merge(bound2);\n\n\t\t\t\tsetNodeBound(nodecount, bound);\n\t\t\t}\n\t\t}\n\t}\n\npublic:\n\tGIM_BOX_TREE_TEMPLATE_SET()\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE GIM_AABB getGlobalBox() const\n\t{\n\t\tGIM_AABB totalbox;\n\t\tgetNodeBound(0, totalbox);\n\t\treturn totalbox;\n\t}\n\n\tSIMD_FORCE_INLINE void setPrimitiveManager(const _GIM_PRIMITIVE_MANAGER_PROTOTYPE& primitive_manager)\n\t{\n\t\tm_primitive_manager = primitive_manager;\n\t}\n\n\tconst _GIM_PRIMITIVE_MANAGER_PROTOTYPE& getPrimitiveManager() const\n\t{\n\t\treturn m_primitive_manager;\n\t}\n\n\t_GIM_PRIMITIVE_MANAGER_PROTOTYPE& getPrimitiveManager()\n\t{\n\t\treturn m_primitive_manager;\n\t}\n\n\t//! node manager prototype functions\n\t///@{\n\n\t//! this attemps to refit the box set.\n\tSIMD_FORCE_INLINE void update()\n\t{\n\t\trefit();\n\t}\n\n\t//! this rebuild the entire set\n\tSIMD_FORCE_INLINE void buildSet()\n\t{\n\t\t//obtain primitive boxes\n\t\tgim_array<GIM_AABB_DATA> primitive_boxes;\n\t\tprimitive_boxes.resize(m_primitive_manager.get_primitive_count(), false);\n\n\t\tfor (GUINT i = 0; i < primitive_boxes.size(); i++)\n\t\t{\n\t\t\tm_primitive_manager.get_primitive_box(i, primitive_boxes[i].m_bound);\n\t\t\tprimitive_boxes[i].m_data = i;\n\t\t}\n\n\t\tm_box_tree.build_tree(primitive_boxes);\n\t}\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tSIMD_FORCE_INLINE bool boxQuery(const GIM_AABB& box, gim_array<GUINT>& collided_results) const\n\t{\n\t\tGUINT curIndex = 0;\n\t\tGUINT numNodes = getNodeCount();\n\n\t\twhile (curIndex < numNodes)\n\t\t{\n\t\t\tGIM_AABB bound;\n\t\t\tgetNodeBound(curIndex, bound);\n\n\t\t\t//catch bugs in tree data\n\n\t\t\tbool aabbOverlap = bound.has_collision(box);\n\t\t\tbool isleafnode = isLeafNode(curIndex);\n\n\t\t\tif (isleafnode && aabbOverlap)\n\t\t\t{\n\t\t\t\tcollided_results.push_back(getNodeData(curIndex));\n\t\t\t}\n\n\t\t\tif (aabbOverlap || isleafnode)\n\t\t\t{\n\t\t\t\t//next subnode\n\t\t\t\tcurIndex++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//skip node\n\t\t\t\tcurIndex += getScapeNodeIndex(curIndex);\n\t\t\t}\n\t\t}\n\t\tif (collided_results.size() > 0) return true;\n\t\treturn false;\n\t}\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tSIMD_FORCE_INLINE bool boxQueryTrans(const GIM_AABB& box,\n\t\t\t\t\t\t\t\t\t\t const btTransform& transform, gim_array<GUINT>& collided_results) const\n\t{\n\t\tGIM_AABB transbox = box;\n\t\ttransbox.appy_transform(transform);\n\t\treturn boxQuery(transbox, collided_results);\n\t}\n\n\t//! returns the indices of the primitives in the m_primitive_manager\n\tSIMD_FORCE_INLINE bool rayQuery(\n\t\tconst btVector3& ray_dir, const btVector3& ray_origin,\n\t\tgim_array<GUINT>& collided_results) const\n\t{\n\t\tGUINT curIndex = 0;\n\t\tGUINT numNodes = getNodeCount();\n\n\t\twhile (curIndex < numNodes)\n\t\t{\n\t\t\tGIM_AABB bound;\n\t\t\tgetNodeBound(curIndex, bound);\n\n\t\t\t//catch bugs in tree data\n\n\t\t\tbool aabbOverlap = bound.collide_ray(ray_origin, ray_dir);\n\t\t\tbool isleafnode = isLeafNode(curIndex);\n\n\t\t\tif (isleafnode && aabbOverlap)\n\t\t\t{\n\t\t\t\tcollided_results.push_back(getNodeData(curIndex));\n\t\t\t}\n\n\t\t\tif (aabbOverlap || isleafnode)\n\t\t\t{\n\t\t\t\t//next subnode\n\t\t\t\tcurIndex++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//skip node\n\t\t\t\tcurIndex += getScapeNodeIndex(curIndex);\n\t\t\t}\n\t\t}\n\t\tif (collided_results.size() > 0) return true;\n\t\treturn false;\n\t}\n\n\t//! tells if this set has hierarcht\n\tSIMD_FORCE_INLINE bool hasHierarchy() const\n\t{\n\t\treturn true;\n\t}\n\n\t//! tells if this set is a trimesh\n\tSIMD_FORCE_INLINE bool isTrimesh() const\n\t{\n\t\treturn m_primitive_manager.is_trimesh();\n\t}\n\n\t//! node count\n\tSIMD_FORCE_INLINE GUINT getNodeCount() const\n\t{\n\t\treturn m_box_tree.getNodeCount();\n\t}\n\n\t//! tells if the node is a leaf\n\tSIMD_FORCE_INLINE bool isLeafNode(GUINT nodeindex) const\n\t{\n\t\treturn m_box_tree.isLeafNode(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getNodeData(GUINT nodeindex) const\n\t{\n\t\treturn m_box_tree.getNodeData(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeBound(GUINT nodeindex, GIM_AABB& bound) const\n\t{\n\t\tm_box_tree.getNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE void setNodeBound(GUINT nodeindex, const GIM_AABB& bound)\n\t{\n\t\tm_box_tree.setNodeBound(nodeindex, bound);\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getLeftNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_box_tree.getLeftNodeIndex(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getRightNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_box_tree.getRightNodeIndex(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE GUINT getScapeNodeIndex(GUINT nodeindex) const\n\t{\n\t\treturn m_box_tree.getScapeNodeIndex(nodeindex);\n\t}\n\n\tSIMD_FORCE_INLINE void getNodeTriangle(GUINT nodeindex, GIM_TRIANGLE& triangle) const\n\t{\n\t\tm_primitive_manager.get_primitive_triangle(getNodeData(nodeindex), triangle);\n\t}\n};\n\n//! Class for Box Tree Sets\n/*!\nthis has the GIM_BOX_TREE implementation for bounding boxes.\n*/\ntemplate <typename _GIM_PRIMITIVE_MANAGER_PROTOTYPE>\nclass GIM_BOX_TREE_SET : public GIM_BOX_TREE_TEMPLATE_SET<_GIM_PRIMITIVE_MANAGER_PROTOTYPE, GIM_BOX_TREE>\n{\npublic:\n};\n\n/// GIM_BOX_SET collision methods\ntemplate <typename BOX_SET_CLASS0, typename BOX_SET_CLASS1>\nclass GIM_TREE_TREE_COLLIDER\n{\npublic:\n\tgim_pair_set* m_collision_pairs;\n\tBOX_SET_CLASS0* m_boxset0;\n\tBOX_SET_CLASS1* m_boxset1;\n\tGUINT current_node0;\n\tGUINT current_node1;\n\tbool node0_is_leaf;\n\tbool node1_is_leaf;\n\tbool t0_is_trimesh;\n\tbool t1_is_trimesh;\n\tbool node0_has_triangle;\n\tbool node1_has_triangle;\n\tGIM_AABB m_box0;\n\tGIM_AABB m_box1;\n\tGIM_BOX_BOX_TRANSFORM_CACHE trans_cache_1to0;\n\tbtTransform trans_cache_0to1;\n\tGIM_TRIANGLE m_tri0;\n\tbtVector4 m_tri0_plane;\n\tGIM_TRIANGLE m_tri1;\n\tbtVector4 m_tri1_plane;\n\npublic:\n\tGIM_TREE_TREE_COLLIDER()\n\t{\n\t\tcurrent_node0 = G_UINT_INFINITY;\n\t\tcurrent_node1 = G_UINT_INFINITY;\n\t}\n\nprotected:\n\tSIMD_FORCE_INLINE void retrieve_node0_triangle(GUINT node0)\n\t{\n\t\tif (node0_has_triangle) return;\n\t\tm_boxset0->getNodeTriangle(node0, m_tri0);\n\t\t//transform triangle\n\t\tm_tri0.m_vertices[0] = trans_cache_0to1(m_tri0.m_vertices[0]);\n\t\tm_tri0.m_vertices[1] = trans_cache_0to1(m_tri0.m_vertices[1]);\n\t\tm_tri0.m_vertices[2] = trans_cache_0to1(m_tri0.m_vertices[2]);\n\t\tm_tri0.get_plane(m_tri0_plane);\n\n\t\tnode0_has_triangle = true;\n\t}\n\n\tSIMD_FORCE_INLINE void retrieve_node1_triangle(GUINT node1)\n\t{\n\t\tif (node1_has_triangle) return;\n\t\tm_boxset1->getNodeTriangle(node1, m_tri1);\n\t\t//transform triangle\n\t\tm_tri1.m_vertices[0] = trans_cache_1to0.transform(m_tri1.m_vertices[0]);\n\t\tm_tri1.m_vertices[1] = trans_cache_1to0.transform(m_tri1.m_vertices[1]);\n\t\tm_tri1.m_vertices[2] = trans_cache_1to0.transform(m_tri1.m_vertices[2]);\n\t\tm_tri1.get_plane(m_tri1_plane);\n\n\t\tnode1_has_triangle = true;\n\t}\n\n\tSIMD_FORCE_INLINE void retrieve_node0_info(GUINT node0)\n\t{\n\t\tif (node0 == current_node0) return;\n\t\tm_boxset0->getNodeBound(node0, m_box0);\n\t\tnode0_is_leaf = m_boxset0->isLeafNode(node0);\n\t\tnode0_has_triangle = false;\n\t\tcurrent_node0 = node0;\n\t}\n\n\tSIMD_FORCE_INLINE void retrieve_node1_info(GUINT node1)\n\t{\n\t\tif (node1 == current_node1) return;\n\t\tm_boxset1->getNodeBound(node1, m_box1);\n\t\tnode1_is_leaf = m_boxset1->isLeafNode(node1);\n\t\tnode1_has_triangle = false;\n\t\tcurrent_node1 = node1;\n\t}\n\n\tSIMD_FORCE_INLINE bool node_collision(GUINT node0, GUINT node1)\n\t{\n\t\tretrieve_node0_info(node0);\n\t\tretrieve_node1_info(node1);\n\t\tbool result = m_box0.overlapping_trans_cache(m_box1, trans_cache_1to0, true);\n\t\tif (!result) return false;\n\n\t\tif (t0_is_trimesh && node0_is_leaf)\n\t\t{\n\t\t\t//perform primitive vs box collision\n\t\t\tretrieve_node0_triangle(node0);\n\t\t\t//do triangle vs box collision\n\t\t\tm_box1.increment_margin(m_tri0.m_margin);\n\n\t\t\tresult = m_box1.collide_triangle_exact(\n\t\t\t\tm_tri0.m_vertices[0], m_tri0.m_vertices[1], m_tri0.m_vertices[2], m_tri0_plane);\n\n\t\t\tm_box1.increment_margin(-m_tri0.m_margin);\n\n\t\t\tif (!result) return false;\n\t\t\treturn true;\n\t\t}\n\t\telse if (t1_is_trimesh && node1_is_leaf)\n\t\t{\n\t\t\t//perform primitive vs box collision\n\t\t\tretrieve_node1_triangle(node1);\n\t\t\t//do triangle vs box collision\n\t\t\tm_box0.increment_margin(m_tri1.m_margin);\n\n\t\t\tresult = m_box0.collide_triangle_exact(\n\t\t\t\tm_tri1.m_vertices[0], m_tri1.m_vertices[1], m_tri1.m_vertices[2], m_tri1_plane);\n\n\t\t\tm_box0.increment_margin(-m_tri1.m_margin);\n\n\t\t\tif (!result) return false;\n\t\t\treturn true;\n\t\t}\n\t\treturn true;\n\t}\n\n\t//stackless collision routine\n\tvoid find_collision_pairs()\n\t{\n\t\tgim_pair_set stack_collisions;\n\t\tstack_collisions.reserve(32);\n\n\t\t//add the first pair\n\t\tstack_collisions.push_pair(0, 0);\n\n\t\twhile (stack_collisions.size())\n\t\t{\n\t\t\t//retrieve the last pair and pop\n\t\t\tGUINT node0 = stack_collisions.back().m_index1;\n\t\t\tGUINT node1 = stack_collisions.back().m_index2;\n\t\t\tstack_collisions.pop_back();\n\t\t\tif (node_collision(node0, node1))  // a collision is found\n\t\t\t{\n\t\t\t\tif (node0_is_leaf)\n\t\t\t\t{\n\t\t\t\t\tif (node1_is_leaf)\n\t\t\t\t\t{\n\t\t\t\t\t\tm_collision_pairs->push_pair(m_boxset0->getNodeData(node0), m_boxset1->getNodeData(node1));\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t//collide left\n\t\t\t\t\t\tstack_collisions.push_pair(node0, m_boxset1->getLeftNodeIndex(node1));\n\n\t\t\t\t\t\t//collide right\n\t\t\t\t\t\tstack_collisions.push_pair(node0, m_boxset1->getRightNodeIndex(node1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (node1_is_leaf)\n\t\t\t\t\t{\n\t\t\t\t\t\t//collide left\n\t\t\t\t\t\tstack_collisions.push_pair(m_boxset0->getLeftNodeIndex(node0), node1);\n\t\t\t\t\t\t//collide right\n\t\t\t\t\t\tstack_collisions.push_pair(m_boxset0->getRightNodeIndex(node0), node1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tGUINT left0 = m_boxset0->getLeftNodeIndex(node0);\n\t\t\t\t\t\tGUINT right0 = m_boxset0->getRightNodeIndex(node0);\n\t\t\t\t\t\tGUINT left1 = m_boxset1->getLeftNodeIndex(node1);\n\t\t\t\t\t\tGUINT right1 = m_boxset1->getRightNodeIndex(node1);\n\t\t\t\t\t\t//collide left\n\t\t\t\t\t\tstack_collisions.push_pair(left0, left1);\n\t\t\t\t\t\t//collide right\n\t\t\t\t\t\tstack_collisions.push_pair(left0, right1);\n\t\t\t\t\t\t//collide left\n\t\t\t\t\t\tstack_collisions.push_pair(right0, left1);\n\t\t\t\t\t\t//collide right\n\t\t\t\t\t\tstack_collisions.push_pair(right0, right1);\n\n\t\t\t\t\t}  // else if node1 is not a leaf\n\t\t\t\t}      // else if node0 is not a leaf\n\n\t\t\t}  // if(node_collision(node0,node1))\n\t\t}      //while(stack_collisions.size())\n\t}\n\npublic:\n\tvoid find_collision(BOX_SET_CLASS0* boxset1, const btTransform& trans1,\n\t\t\t\t\t\tBOX_SET_CLASS1* boxset2, const btTransform& trans2,\n\t\t\t\t\t\tgim_pair_set& collision_pairs, bool complete_primitive_tests = true)\n\t{\n\t\tm_collision_pairs = &collision_pairs;\n\t\tm_boxset0 = boxset1;\n\t\tm_boxset1 = boxset2;\n\n\t\ttrans_cache_1to0.calc_from_homogenic(trans1, trans2);\n\n\t\ttrans_cache_0to1 = trans2.inverse();\n\t\ttrans_cache_0to1 *= trans1;\n\n\t\tif (complete_primitive_tests)\n\t\t{\n\t\t\tt0_is_trimesh = boxset1->getPrimitiveManager().is_trimesh();\n\t\t\tt1_is_trimesh = boxset2->getPrimitiveManager().is_trimesh();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tt0_is_trimesh = false;\n\t\t\tt1_is_trimesh = false;\n\t\t}\n\n\t\tfind_collision_pairs();\n\t}\n};\n\n#endif  // GIM_BOXPRUNING_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_clip_polygon.h",
    "content": "#ifndef GIM_CLIP_POLYGON_H_INCLUDED\n#define GIM_CLIP_POLYGON_H_INCLUDED\n\n/*! \\file gim_tri_collision.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n//! This function calcs the distance from a 3D plane\nclass DISTANCE_PLANE_3D_FUNC\n{\npublic:\n\ttemplate <typename CLASS_POINT, typename CLASS_PLANE>\n\tinline GREAL operator()(const CLASS_PLANE& plane, const CLASS_POINT& point)\n\t{\n\t\treturn DISTANCE_PLANE_POINT(plane, point);\n\t}\n};\n\ntemplate <typename CLASS_POINT>\nSIMD_FORCE_INLINE void PLANE_CLIP_POLYGON_COLLECT(\n\tconst CLASS_POINT& point0,\n\tconst CLASS_POINT& point1,\n\tGREAL dist0,\n\tGREAL dist1,\n\tCLASS_POINT* clipped,\n\tGUINT& clipped_count)\n{\n\tGUINT _prevclassif = (dist0 > G_EPSILON);\n\tGUINT _classif = (dist1 > G_EPSILON);\n\tif (_classif != _prevclassif)\n\t{\n\t\tGREAL blendfactor = -dist0 / (dist1 - dist0);\n\t\tVEC_BLEND(clipped[clipped_count], point0, point1, blendfactor);\n\t\tclipped_count++;\n\t}\n\tif (!_classif)\n\t{\n\t\tVEC_COPY(clipped[clipped_count], point1);\n\t\tclipped_count++;\n\t}\n}\n\n//! Clips a polygon by a plane\n/*!\n*\\return The count of the clipped counts\n*/\ntemplate <typename CLASS_POINT, typename CLASS_PLANE, typename DISTANCE_PLANE_FUNC>\nSIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON_GENERIC(\n\tconst CLASS_PLANE& plane,\n\tconst CLASS_POINT* polygon_points,\n\tGUINT polygon_point_count,\n\tCLASS_POINT* clipped, DISTANCE_PLANE_FUNC distance_func)\n{\n\tGUINT clipped_count = 0;\n\n\t//clip first point\n\tGREAL firstdist = distance_func(plane, polygon_points[0]);\n\t;\n\tif (!(firstdist > G_EPSILON))\n\t{\n\t\tVEC_COPY(clipped[clipped_count], polygon_points[0]);\n\t\tclipped_count++;\n\t}\n\n\tGREAL olddist = firstdist;\n\tfor (GUINT _i = 1; _i < polygon_point_count; _i++)\n\t{\n\t\tGREAL dist = distance_func(plane, polygon_points[_i]);\n\n\t\tPLANE_CLIP_POLYGON_COLLECT(\n\t\t\tpolygon_points[_i - 1], polygon_points[_i],\n\t\t\tolddist,\n\t\t\tdist,\n\t\t\tclipped,\n\t\t\tclipped_count);\n\n\t\tolddist = dist;\n\t}\n\n\t//RETURN TO FIRST  point\n\n\tPLANE_CLIP_POLYGON_COLLECT(\n\t\tpolygon_points[polygon_point_count - 1], polygon_points[0],\n\t\tolddist,\n\t\tfirstdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\treturn clipped_count;\n}\n\n//! Clips a polygon by a plane\n/*!\n*\\return The count of the clipped counts\n*/\ntemplate <typename CLASS_POINT, typename CLASS_PLANE, typename DISTANCE_PLANE_FUNC>\nSIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE_GENERIC(\n\tconst CLASS_PLANE& plane,\n\tconst CLASS_POINT& point0,\n\tconst CLASS_POINT& point1,\n\tconst CLASS_POINT& point2,\n\tCLASS_POINT* clipped, DISTANCE_PLANE_FUNC distance_func)\n{\n\tGUINT clipped_count = 0;\n\n\t//clip first point\n\tGREAL firstdist = distance_func(plane, point0);\n\t;\n\tif (!(firstdist > G_EPSILON))\n\t{\n\t\tVEC_COPY(clipped[clipped_count], point0);\n\t\tclipped_count++;\n\t}\n\n\t// point 1\n\tGREAL olddist = firstdist;\n\tGREAL dist = distance_func(plane, point1);\n\n\tPLANE_CLIP_POLYGON_COLLECT(\n\t\tpoint0, point1,\n\t\tolddist,\n\t\tdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\tolddist = dist;\n\n\t// point 2\n\tdist = distance_func(plane, point2);\n\n\tPLANE_CLIP_POLYGON_COLLECT(\n\t\tpoint1, point2,\n\t\tolddist,\n\t\tdist,\n\t\tclipped,\n\t\tclipped_count);\n\tolddist = dist;\n\n\t//RETURN TO FIRST  point\n\tPLANE_CLIP_POLYGON_COLLECT(\n\t\tpoint2, point0,\n\t\tolddist,\n\t\tfirstdist,\n\t\tclipped,\n\t\tclipped_count);\n\n\treturn clipped_count;\n}\n\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE GUINT PLANE_CLIP_POLYGON3D(\n\tconst CLASS_PLANE& plane,\n\tconst CLASS_POINT* polygon_points,\n\tGUINT polygon_point_count,\n\tCLASS_POINT* clipped)\n{\n\treturn PLANE_CLIP_POLYGON_GENERIC<CLASS_POINT, CLASS_PLANE>(plane, polygon_points, polygon_point_count, clipped, DISTANCE_PLANE_3D_FUNC());\n}\n\ntemplate <typename CLASS_POINT, typename CLASS_PLANE>\nSIMD_FORCE_INLINE GUINT PLANE_CLIP_TRIANGLE3D(\n\tconst CLASS_PLANE& plane,\n\tconst CLASS_POINT& point0,\n\tconst CLASS_POINT& point1,\n\tconst CLASS_POINT& point2,\n\tCLASS_POINT* clipped)\n{\n\treturn PLANE_CLIP_TRIANGLE_GENERIC<CLASS_POINT, CLASS_PLANE>(plane, point0, point1, point2, clipped, DISTANCE_PLANE_3D_FUNC());\n}\n\n#endif  // GIM_TRI_COLLISION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_contact.h",
    "content": "#ifndef GIM_CONTACT_H_INCLUDED\n#define GIM_CONTACT_H_INCLUDED\n\n/*! \\file gim_contact.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n#include \"gim_geometry.h\"\n#include \"gim_radixsort.h\"\n#include \"gim_array.h\"\n\n/**\nConfiguration var for applying interpolation of  contact normals\n*/\n#ifndef NORMAL_CONTACT_AVERAGE\n#define NORMAL_CONTACT_AVERAGE 1\n#endif\n\n#ifndef CONTACT_DIFF_EPSILON\n#define CONTACT_DIFF_EPSILON 0.00001f\n#endif\n\n#ifndef BT_CONTACT_H_STRUCTS_INCLUDED\n\n/// Structure for collision results\n///Functions for managing and sorting contacts resulting from a collision query.\n///Contact lists must be create by calling \\ref GIM_CREATE_CONTACT_LIST\n///After querys, contact lists must be destroy by calling \\ref GIM_DYNARRAY_DESTROY\n///Contacts can be merge for avoid duplicate results by calling \\ref gim_merge_contacts\nclass GIM_CONTACT\n{\npublic:\n\tbtVector3 m_point;\n\tbtVector3 m_normal;\n\tGREAL m_depth;     //Positive value indicates interpenetration\n\tGREAL m_distance;  //Padding not for use\n\tGUINT m_feature1;  //Face number\n\tGUINT m_feature2;  //Face number\npublic:\n\tGIM_CONTACT()\n\t{\n\t}\n\n\tGIM_CONTACT(const GIM_CONTACT &contact) : m_point(contact.m_point),\n\t\t\t\t\t\t\t\t\t\t\t  m_normal(contact.m_normal),\n\t\t\t\t\t\t\t\t\t\t\t  m_depth(contact.m_depth),\n\t\t\t\t\t\t\t\t\t\t\t  m_feature1(contact.m_feature1),\n\t\t\t\t\t\t\t\t\t\t\t  m_feature2(contact.m_feature2)\n\t{\n\t\tm_point = contact.m_point;\n\t\tm_normal = contact.m_normal;\n\t\tm_depth = contact.m_depth;\n\t\tm_feature1 = contact.m_feature1;\n\t\tm_feature2 = contact.m_feature2;\n\t}\n\n\tGIM_CONTACT(const btVector3 &point, const btVector3 &normal,\n\t\t\t\tGREAL depth, GUINT feature1, GUINT feature2) : m_point(point),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_normal(normal),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_depth(depth),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_feature1(feature1),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_feature2(feature2)\n\t{\n\t}\n\n\t//! Calcs key for coord classification\n\tSIMD_FORCE_INLINE GUINT calc_key_contact() const\n\t{\n\t\tGINT _coords[] = {\n\t\t\t(GINT)(m_point[0] * 1000.0f + 1.0f),\n\t\t\t(GINT)(m_point[1] * 1333.0f),\n\t\t\t(GINT)(m_point[2] * 2133.0f + 3.0f)};\n\t\tGUINT _hash = 0;\n\t\tGUINT *_uitmp = (GUINT *)(&_coords[0]);\n\t\t_hash = *_uitmp;\n\t\t_uitmp++;\n\t\t_hash += (*_uitmp) << 4;\n\t\t_uitmp++;\n\t\t_hash += (*_uitmp) << 8;\n\t\treturn _hash;\n\t}\n\n\tSIMD_FORCE_INLINE void interpolate_normals(btVector3 *normals, GUINT normal_count)\n\t{\n\t\tbtVector3 vec_sum(m_normal);\n\t\tfor (GUINT i = 0; i < normal_count; i++)\n\t\t{\n\t\t\tvec_sum += normals[i];\n\t\t}\n\n\t\tGREAL vec_sum_len = vec_sum.length2();\n\t\tif (vec_sum_len < CONTACT_DIFF_EPSILON) return;\n\n\t\tGIM_INV_SQRT(vec_sum_len, vec_sum_len);  // 1/sqrt(vec_sum_len)\n\n\t\tm_normal = vec_sum * vec_sum_len;\n\t}\n};\n\n#endif\n\nclass gim_contact_array : public gim_array<GIM_CONTACT>\n{\npublic:\n\tgim_contact_array() : gim_array<GIM_CONTACT>(64)\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE void push_contact(const btVector3 &point, const btVector3 &normal,\n\t\t\t\t\t\t\t\t\t\tGREAL depth, GUINT feature1, GUINT feature2)\n\t{\n\t\tpush_back_mem();\n\t\tGIM_CONTACT &newele = back();\n\t\tnewele.m_point = point;\n\t\tnewele.m_normal = normal;\n\t\tnewele.m_depth = depth;\n\t\tnewele.m_feature1 = feature1;\n\t\tnewele.m_feature2 = feature2;\n\t}\n\n\tSIMD_FORCE_INLINE void push_triangle_contacts(\n\t\tconst GIM_TRIANGLE_CONTACT_DATA &tricontact,\n\t\tGUINT feature1, GUINT feature2)\n\t{\n\t\tfor (GUINT i = 0; i < tricontact.m_point_count; i++)\n\t\t{\n\t\t\tpush_back_mem();\n\t\t\tGIM_CONTACT &newele = back();\n\t\t\tnewele.m_point = tricontact.m_points[i];\n\t\t\tnewele.m_normal = tricontact.m_separating_normal;\n\t\t\tnewele.m_depth = tricontact.m_penetration_depth;\n\t\t\tnewele.m_feature1 = feature1;\n\t\t\tnewele.m_feature2 = feature2;\n\t\t}\n\t}\n\n\tvoid merge_contacts(const gim_contact_array &contacts, bool normal_contact_average = true);\n\tvoid merge_contacts_unique(const gim_contact_array &contacts);\n};\n\n#endif  // GIM_CONTACT_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_geom_types.h",
    "content": "#ifndef GIM_GEOM_TYPES_H_INCLUDED\n#define GIM_GEOM_TYPES_H_INCLUDED\n\n/*! \\file gim_geom_types.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_math.h\"\n\n//! Short Integer vector 2D\ntypedef GSHORT vec2s[2];\n//! Integer vector 3D\ntypedef GSHORT vec3s[3];\n//! Integer vector 4D\ntypedef GSHORT vec4s[4];\n\n//! Short Integer vector 2D\ntypedef GUSHORT vec2us[2];\n//! Integer vector 3D\ntypedef GUSHORT vec3us[3];\n//! Integer vector 4D\ntypedef GUSHORT vec4us[4];\n\n//! Integer vector 2D\ntypedef GINT vec2i[2];\n//! Integer vector 3D\ntypedef GINT vec3i[3];\n//! Integer vector 4D\ntypedef GINT vec4i[4];\n\n//! Unsigned Integer vector 2D\ntypedef GUINT vec2ui[2];\n//! Unsigned Integer vector 3D\ntypedef GUINT vec3ui[3];\n//! Unsigned Integer vector 4D\ntypedef GUINT vec4ui[4];\n\n//! Float vector 2D\ntypedef GREAL vec2f[2];\n//! Float vector 3D\ntypedef GREAL vec3f[3];\n//! Float vector 4D\ntypedef GREAL vec4f[4];\n\n//! Double vector 2D\ntypedef GREAL2 vec2d[2];\n//! Float vector 3D\ntypedef GREAL2 vec3d[3];\n//! Float vector 4D\ntypedef GREAL2 vec4d[4];\n\n//! Matrix 2D, row ordered\ntypedef GREAL mat2f[2][2];\n//! Matrix 3D, row ordered\ntypedef GREAL mat3f[3][3];\n//! Matrix 4D, row ordered\ntypedef GREAL mat4f[4][4];\n\n//! Quaternion\ntypedef GREAL quatf[4];\n\n//typedef struct _aabb3f aabb3f;\n\n#endif  // GIM_GEOM_TYPES_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_geometry.h",
    "content": "#ifndef GIM_GEOMETRY_H_INCLUDED\n#define GIM_GEOMETRY_H_INCLUDED\n\n/*! \\file gim_geometry.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n///Additional Headers for Collision\n#include \"gim_basic_geometry_operations.h\"\n#include \"gim_clip_polygon.h\"\n#include \"gim_box_collision.h\"\n#include \"gim_tri_collision.h\"\n\n#endif  // GIM_VECTOR_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_hash_table.h",
    "content": "#ifndef GIM_HASH_TABLE_H_INCLUDED\n#define GIM_HASH_TABLE_H_INCLUDED\n/*! \\file gim_trimesh_data.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_radixsort.h\"\n\n#define GIM_INVALID_HASH 0xffffffff  //!< A very very high value\n#define GIM_DEFAULT_HASH_TABLE_SIZE 380\n#define GIM_DEFAULT_HASH_TABLE_NODE_SIZE 4\n#define GIM_HASH_TABLE_GROW_FACTOR 2\n\n#define GIM_MIN_RADIX_SORT_SIZE 860  //!< calibrated on a PIII\n\ntemplate <typename T>\nstruct GIM_HASH_TABLE_NODE\n{\n\tGUINT m_key;\n\tT m_data;\n\tGIM_HASH_TABLE_NODE()\n\t{\n\t}\n\n\tGIM_HASH_TABLE_NODE(const GIM_HASH_TABLE_NODE& value)\n\t{\n\t\tm_key = value.m_key;\n\t\tm_data = value.m_data;\n\t}\n\n\tGIM_HASH_TABLE_NODE(GUINT key, const T& data)\n\t{\n\t\tm_key = key;\n\t\tm_data = data;\n\t}\n\n\tbool operator<(const GIM_HASH_TABLE_NODE<T>& other) const\n\t{\n\t\t///inverse order, further objects are first\n\t\tif (m_key < other.m_key) return true;\n\t\treturn false;\n\t}\n\n\tbool operator>(const GIM_HASH_TABLE_NODE<T>& other) const\n\t{\n\t\t///inverse order, further objects are first\n\t\tif (m_key > other.m_key) return true;\n\t\treturn false;\n\t}\n\n\tbool operator==(const GIM_HASH_TABLE_NODE<T>& other) const\n\t{\n\t\t///inverse order, further objects are first\n\t\tif (m_key == other.m_key) return true;\n\t\treturn false;\n\t}\n};\n\n///Macro for getting the key\nclass GIM_HASH_NODE_GET_KEY\n{\npublic:\n\ttemplate <class T>\n\tinline GUINT operator()(const T& a)\n\t{\n\t\treturn a.m_key;\n\t}\n};\n\n///Macro for comparing the key and the element\nclass GIM_HASH_NODE_CMP_KEY_MACRO\n{\npublic:\n\ttemplate <class T>\n\tinline int operator()(const T& a, GUINT key)\n\t{\n\t\treturn ((int)(a.m_key - key));\n\t}\n};\n\n///Macro for comparing Hash nodes\nclass GIM_HASH_NODE_CMP_MACRO\n{\npublic:\n\ttemplate <class T>\n\tinline int operator()(const T& a, const T& b)\n\t{\n\t\treturn ((int)(a.m_key - b.m_key));\n\t}\n};\n\n//! Sorting for hash table\n/*!\nswitch automatically between quicksort and radixsort\n*/\ntemplate <typename T>\nvoid gim_sort_hash_node_array(T* array, GUINT array_count)\n{\n\tif (array_count < GIM_MIN_RADIX_SORT_SIZE)\n\t{\n\t\tgim_heap_sort(array, array_count, GIM_HASH_NODE_CMP_MACRO());\n\t}\n\telse\n\t{\n\t\tmemcopy_elements_func cmpfunc;\n\t\tgim_radix_sort(array, array_count, GIM_HASH_NODE_GET_KEY(), cmpfunc);\n\t}\n}\n\n// Note: assumes long is at least 32 bits.\n#define GIM_NUM_PRIME 28\n\nstatic const GUINT gim_prime_list[GIM_NUM_PRIME] =\n\t{\n\t\t53ul, 97ul, 193ul, 389ul, 769ul,\n\t\t1543ul, 3079ul, 6151ul, 12289ul, 24593ul,\n\t\t49157ul, 98317ul, 196613ul, 393241ul, 786433ul,\n\t\t1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul,\n\t\t50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,\n\t\t1610612741ul, 3221225473ul, 4294967291ul};\n\ninline GUINT gim_next_prime(GUINT number)\n{\n\t//Find nearest upper prime\n\tGUINT result_ind = 0;\n\tgim_binary_search(gim_prime_list, 0, (GIM_NUM_PRIME - 2), number, result_ind);\n\n\t// inv: result_ind < 28\n\treturn gim_prime_list[result_ind];\n}\n\n//! A compact hash table implementation\n/*!\nA memory aligned compact hash table that coud be treated as an array.\nIt could be a simple sorted array without the overhead of the hash key bucked, or could\nbe a formely hash table with an array of keys.\nYou can use switch_to_hashtable() and switch_to_sorted_array for saving space or increase speed.\n</br>\n\n<ul>\n<li> if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes.\nWhen the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable.\n<li> If node_size != 0, then this container becomes a hash table for ever\n</ul>\n\n*/\ntemplate <class T>\nclass gim_hash_table\n{\nprotected:\n\ttypedef GIM_HASH_TABLE_NODE<T> _node_type;\n\n\t//!The nodes\n\t//array< _node_type, SuperAllocator<_node_type> > m_nodes;\n\tgim_array<_node_type> m_nodes;\n\t//SuperBufferedArray< _node_type > m_nodes;\n\tbool m_sorted;\n\n\t///Hash table data management. The hash table has the indices to the corresponding m_nodes array\n\tGUINT* m_hash_table;  //!<\n\tGUINT m_table_size;   //!<\n\tGUINT m_node_size;    //!<\n\tGUINT m_min_hash_table_size;\n\n\t//! Returns the cell index\n\tinline GUINT _find_cell(GUINT hashkey)\n\t{\n\t\t_node_type* nodesptr = m_nodes.pointer();\n\t\tGUINT start_index = (hashkey % m_table_size) * m_node_size;\n\t\tGUINT end_index = start_index + m_node_size;\n\n\t\twhile (start_index < end_index)\n\t\t{\n\t\t\tGUINT value = m_hash_table[start_index];\n\t\t\tif (value != GIM_INVALID_HASH)\n\t\t\t{\n\t\t\t\tif (nodesptr[value].m_key == hashkey) return start_index;\n\t\t\t}\n\t\t\tstart_index++;\n\t\t}\n\t\treturn GIM_INVALID_HASH;\n\t}\n\n\t//! Find the avaliable cell for the hashkey, and return an existing cell if it has the same hash key\n\tinline GUINT _find_avaliable_cell(GUINT hashkey)\n\t{\n\t\t_node_type* nodesptr = m_nodes.pointer();\n\t\tGUINT avaliable_index = GIM_INVALID_HASH;\n\t\tGUINT start_index = (hashkey % m_table_size) * m_node_size;\n\t\tGUINT end_index = start_index + m_node_size;\n\n\t\twhile (start_index < end_index)\n\t\t{\n\t\t\tGUINT value = m_hash_table[start_index];\n\t\t\tif (value == GIM_INVALID_HASH)\n\t\t\t{\n\t\t\t\tif (avaliable_index == GIM_INVALID_HASH)\n\t\t\t\t{\n\t\t\t\t\tavaliable_index = start_index;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (nodesptr[value].m_key == hashkey)\n\t\t\t{\n\t\t\t\treturn start_index;\n\t\t\t}\n\t\t\tstart_index++;\n\t\t}\n\t\treturn avaliable_index;\n\t}\n\n\t//! reserves the memory for the hash table.\n\t/*!\n    \\pre hash table must be empty\n    \\post reserves the memory for the hash table, an initializes all elements to GIM_INVALID_HASH.\n    */\n\tinline void _reserve_table_memory(GUINT newtablesize)\n\t{\n\t\tif (newtablesize == 0) return;\n\t\tif (m_node_size == 0) return;\n\n\t\t//Get a Prime size\n\n\t\tm_table_size = gim_next_prime(newtablesize);\n\n\t\tGUINT datasize = m_table_size * m_node_size;\n\t\t//Alloc the data buffer\n\t\tm_hash_table = (GUINT*)gim_alloc(datasize * sizeof(GUINT));\n\t}\n\n\tinline void _invalidate_keys()\n\t{\n\t\tGUINT datasize = m_table_size * m_node_size;\n\t\tfor (GUINT i = 0; i < datasize; i++)\n\t\t{\n\t\t\tm_hash_table[i] = GIM_INVALID_HASH;  // invalidate keys\n\t\t}\n\t}\n\n\t//! Clear all memory for the hash table\n\tinline void _clear_table_memory()\n\t{\n\t\tif (m_hash_table == NULL) return;\n\t\tgim_free(m_hash_table);\n\t\tm_hash_table = NULL;\n\t\tm_table_size = 0;\n\t}\n\n\t//! Invalidates the keys (Assigning GIM_INVALID_HASH to all) Reorders the hash keys\n\tinline void _rehash()\n\t{\n\t\t_invalidate_keys();\n\n\t\t_node_type* nodesptr = m_nodes.pointer();\n\t\tfor (GUINT i = 0; i < (GUINT)m_nodes.size(); i++)\n\t\t{\n\t\t\tGUINT nodekey = nodesptr[i].m_key;\n\t\t\tif (nodekey != GIM_INVALID_HASH)\n\t\t\t{\n\t\t\t\t//Search for the avaliable cell in buffer\n\t\t\t\tGUINT index = _find_avaliable_cell(nodekey);\n\n\t\t\t\tif (m_hash_table[index] != GIM_INVALID_HASH)\n\t\t\t\t{  //The new index is alreade used... discard this new incomming object, repeated key\n\t\t\t\t\tbtAssert(m_hash_table[index] == nodekey);\n\t\t\t\t\tnodesptr[i].m_key = GIM_INVALID_HASH;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t//;\n\t\t\t\t\t//Assign the value for alloc\n\t\t\t\t\tm_hash_table[index] = i;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//! Resize hash table indices\n\tinline void _resize_table(GUINT newsize)\n\t{\n\t\t//Clear memory\n\t\t_clear_table_memory();\n\t\t//Alloc the data\n\t\t_reserve_table_memory(newsize);\n\t\t//Invalidate keys and rehash\n\t\t_rehash();\n\t}\n\n\t//! Destroy hash table memory\n\tinline void _destroy()\n\t{\n\t\tif (m_hash_table == NULL) return;\n\t\t_clear_table_memory();\n\t}\n\n\t//! Finds an avaliable hash table cell, and resizes the table if there isn't space\n\tinline GUINT _assign_hash_table_cell(GUINT hashkey)\n\t{\n\t\tGUINT cell_index = _find_avaliable_cell(hashkey);\n\n\t\tif (cell_index == GIM_INVALID_HASH)\n\t\t{\n\t\t\t//rehashing\n\t\t\t_resize_table(m_table_size + 1);\n\t\t\tGUINT cell_index = _find_avaliable_cell(hashkey);\n\t\t\tbtAssert(cell_index != GIM_INVALID_HASH);\n\t\t}\n\t\treturn cell_index;\n\t}\n\n\t//! erase by index in hash table\n\tinline bool _erase_by_index_hash_table(GUINT index)\n\t{\n\t\tif (index >= m_nodes.size()) return false;\n\t\tif (m_nodes[index].m_key != GIM_INVALID_HASH)\n\t\t{\n\t\t\t//Search for the avaliable cell in buffer\n\t\t\tGUINT cell_index = _find_cell(m_nodes[index].m_key);\n\n\t\t\tbtAssert(cell_index != GIM_INVALID_HASH);\n\t\t\tbtAssert(m_hash_table[cell_index] == index);\n\n\t\t\tm_hash_table[cell_index] = GIM_INVALID_HASH;\n\t\t}\n\n\t\treturn this->_erase_unsorted(index);\n\t}\n\n\t//! erase by key in hash table\n\tinline bool _erase_hash_table(GUINT hashkey)\n\t{\n\t\tif (hashkey == GIM_INVALID_HASH) return false;\n\n\t\t//Search for the avaliable cell in buffer\n\t\tGUINT cell_index = _find_cell(hashkey);\n\t\tif (cell_index == GIM_INVALID_HASH) return false;\n\n\t\tGUINT index = m_hash_table[cell_index];\n\t\tm_hash_table[cell_index] = GIM_INVALID_HASH;\n\n\t\treturn this->_erase_unsorted(index);\n\t}\n\n\t//! insert an element in hash table\n\t/*!\n    If the element exists, this won't insert the element\n    \\return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted\n    If so, the element has been inserted at the last position of the array.\n    */\n\tinline GUINT _insert_hash_table(GUINT hashkey, const T& value)\n\t{\n\t\tif (hashkey == GIM_INVALID_HASH)\n\t\t{\n\t\t\t//Insert anyway\n\t\t\t_insert_unsorted(hashkey, value);\n\t\t\treturn GIM_INVALID_HASH;\n\t\t}\n\n\t\tGUINT cell_index = _assign_hash_table_cell(hashkey);\n\n\t\tGUINT value_key = m_hash_table[cell_index];\n\n\t\tif (value_key != GIM_INVALID_HASH) return value_key;  // Not overrited\n\n\t\tm_hash_table[cell_index] = m_nodes.size();\n\n\t\t_insert_unsorted(hashkey, value);\n\t\treturn GIM_INVALID_HASH;\n\t}\n\n\t//! insert an element in hash table.\n\t/*!\n    If the element exists, this replaces the element.\n    \\return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted\n    If so, the element has been inserted at the last position of the array.\n    */\n\tinline GUINT _insert_hash_table_replace(GUINT hashkey, const T& value)\n\t{\n\t\tif (hashkey == GIM_INVALID_HASH)\n\t\t{\n\t\t\t//Insert anyway\n\t\t\t_insert_unsorted(hashkey, value);\n\t\t\treturn GIM_INVALID_HASH;\n\t\t}\n\n\t\tGUINT cell_index = _assign_hash_table_cell(hashkey);\n\n\t\tGUINT value_key = m_hash_table[cell_index];\n\n\t\tif (value_key != GIM_INVALID_HASH)\n\t\t{  //replaces the existing\n\t\t\tm_nodes[value_key] = _node_type(hashkey, value);\n\t\t\treturn value_key;  // index of the replaced element\n\t\t}\n\n\t\tm_hash_table[cell_index] = m_nodes.size();\n\n\t\t_insert_unsorted(hashkey, value);\n\t\treturn GIM_INVALID_HASH;\n\t}\n\n\t///Sorted array data management. The hash table has the indices to the corresponding m_nodes array\n\tinline bool _erase_sorted(GUINT index)\n\t{\n\t\tif (index >= (GUINT)m_nodes.size()) return false;\n\t\tm_nodes.erase_sorted(index);\n\t\tif (m_nodes.size() < 2) m_sorted = false;\n\t\treturn true;\n\t}\n\n\t//! faster, but unsorted\n\tinline bool _erase_unsorted(GUINT index)\n\t{\n\t\tif (index >= m_nodes.size()) return false;\n\n\t\tGUINT lastindex = m_nodes.size() - 1;\n\t\tif (index < lastindex && m_hash_table != 0)\n\t\t{\n\t\t\tGUINT hashkey = m_nodes[lastindex].m_key;\n\t\t\tif (hashkey != GIM_INVALID_HASH)\n\t\t\t{\n\t\t\t\t//update the new position of the last element\n\t\t\t\tGUINT cell_index = _find_cell(hashkey);\n\t\t\t\tbtAssert(cell_index != GIM_INVALID_HASH);\n\t\t\t\t//new position of the last element which will be swaped\n\t\t\t\tm_hash_table[cell_index] = index;\n\t\t\t}\n\t\t}\n\t\tm_nodes.erase(index);\n\t\tm_sorted = false;\n\t\treturn true;\n\t}\n\n\t//! Insert in position ordered\n\t/*!\n    Also checks if it is needed to transform this container to a hash table, by calling check_for_switching_to_hashtable\n    */\n\tinline void _insert_in_pos(GUINT hashkey, const T& value, GUINT pos)\n\t{\n\t\tm_nodes.insert(_node_type(hashkey, value), pos);\n\t\tthis->check_for_switching_to_hashtable();\n\t}\n\n\t//! Insert an element in an ordered array\n\tinline GUINT _insert_sorted(GUINT hashkey, const T& value)\n\t{\n\t\tif (hashkey == GIM_INVALID_HASH || size() == 0)\n\t\t{\n\t\t\tm_nodes.push_back(_node_type(hashkey, value));\n\t\t\treturn GIM_INVALID_HASH;\n\t\t}\n\t\t//Insert at last position\n\t\t//Sort element\n\n\t\tGUINT result_ind = 0;\n\t\tGUINT last_index = m_nodes.size() - 1;\n\t\t_node_type* ptr = m_nodes.pointer();\n\n\t\tbool found = gim_binary_search_ex(\n\t\t\tptr, 0, last_index, result_ind, hashkey, GIM_HASH_NODE_CMP_KEY_MACRO());\n\n\t\t//Insert before found index\n\t\tif (found)\n\t\t{\n\t\t\treturn result_ind;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_insert_in_pos(hashkey, value, result_ind);\n\t\t}\n\t\treturn GIM_INVALID_HASH;\n\t}\n\n\tinline GUINT _insert_sorted_replace(GUINT hashkey, const T& value)\n\t{\n\t\tif (hashkey == GIM_INVALID_HASH || size() == 0)\n\t\t{\n\t\t\tm_nodes.push_back(_node_type(hashkey, value));\n\t\t\treturn GIM_INVALID_HASH;\n\t\t}\n\t\t//Insert at last position\n\t\t//Sort element\n\t\tGUINT result_ind;\n\t\tGUINT last_index = m_nodes.size() - 1;\n\t\t_node_type* ptr = m_nodes.pointer();\n\n\t\tbool found = gim_binary_search_ex(\n\t\t\tptr, 0, last_index, result_ind, hashkey, GIM_HASH_NODE_CMP_KEY_MACRO());\n\n\t\t//Insert before found index\n\t\tif (found)\n\t\t{\n\t\t\tm_nodes[result_ind] = _node_type(hashkey, value);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_insert_in_pos(hashkey, value, result_ind);\n\t\t}\n\t\treturn result_ind;\n\t}\n\n\t//! Fast insertion in m_nodes array\n\tinline GUINT _insert_unsorted(GUINT hashkey, const T& value)\n\t{\n\t\tm_nodes.push_back(_node_type(hashkey, value));\n\t\tm_sorted = false;\n\t\treturn GIM_INVALID_HASH;\n\t}\n\npublic:\n\t/*!\n        <li> if node_size = 0, then this container becomes a simple sorted array allocator. reserve_size is used for reserve memory in m_nodes.\n        When the array size reaches the size equivalent to 'min_hash_table_size', then it becomes a hash table by calling check_for_switching_to_hashtable.\n        <li> If node_size != 0, then this container becomes a hash table for ever\n        </ul>\n    */\n\tgim_hash_table(GUINT reserve_size = GIM_DEFAULT_HASH_TABLE_SIZE,\n\t\t\t\t   GUINT node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE,\n\t\t\t\t   GUINT min_hash_table_size = GIM_INVALID_HASH)\n\t{\n\t\tm_hash_table = NULL;\n\t\tm_table_size = 0;\n\t\tm_sorted = false;\n\t\tm_node_size = node_size;\n\t\tm_min_hash_table_size = min_hash_table_size;\n\n\t\tif (m_node_size != 0)\n\t\t{\n\t\t\tif (reserve_size != 0)\n\t\t\t{\n\t\t\t\tm_nodes.reserve(reserve_size);\n\t\t\t\t_reserve_table_memory(reserve_size);\n\t\t\t\t_invalidate_keys();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_nodes.reserve(GIM_DEFAULT_HASH_TABLE_SIZE);\n\t\t\t\t_reserve_table_memory(GIM_DEFAULT_HASH_TABLE_SIZE);\n\t\t\t\t_invalidate_keys();\n\t\t\t}\n\t\t}\n\t\telse if (reserve_size != 0)\n\t\t{\n\t\t\tm_nodes.reserve(reserve_size);\n\t\t}\n\t}\n\n\t~gim_hash_table()\n\t{\n\t\t_destroy();\n\t}\n\n\tinline bool is_hash_table()\n\t{\n\t\tif (m_hash_table) return true;\n\t\treturn false;\n\t}\n\n\tinline bool is_sorted()\n\t{\n\t\tif (size() < 2) return true;\n\t\treturn m_sorted;\n\t}\n\n\tbool sort()\n\t{\n\t\tif (is_sorted()) return true;\n\t\tif (m_nodes.size() < 2) return false;\n\n\t\t_node_type* ptr = m_nodes.pointer();\n\t\tGUINT siz = m_nodes.size();\n\t\tgim_sort_hash_node_array(ptr, siz);\n\t\tm_sorted = true;\n\n\t\tif (m_hash_table)\n\t\t{\n\t\t\t_rehash();\n\t\t}\n\t\treturn true;\n\t}\n\n\tbool switch_to_hashtable()\n\t{\n\t\tif (m_hash_table) return false;\n\t\tif (m_node_size == 0) m_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE;\n\t\tif (m_nodes.size() < GIM_DEFAULT_HASH_TABLE_SIZE)\n\t\t{\n\t\t\t_resize_table(GIM_DEFAULT_HASH_TABLE_SIZE);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_resize_table(m_nodes.size() + 1);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tbool switch_to_sorted_array()\n\t{\n\t\tif (m_hash_table == NULL) return true;\n\t\t_clear_table_memory();\n\t\treturn sort();\n\t}\n\n\t//!If the container reaches the\n\tbool check_for_switching_to_hashtable()\n\t{\n\t\tif (this->m_hash_table) return true;\n\n\t\tif (!(m_nodes.size() < m_min_hash_table_size))\n\t\t{\n\t\t\tif (m_node_size == 0)\n\t\t\t{\n\t\t\t\tm_node_size = GIM_DEFAULT_HASH_TABLE_NODE_SIZE;\n\t\t\t}\n\n\t\t\t_resize_table(m_nodes.size() + 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tinline void set_sorted(bool value)\n\t{\n\t\tm_sorted = value;\n\t}\n\n\t//! Retrieves the amount of keys.\n\tinline GUINT size() const\n\t{\n\t\treturn m_nodes.size();\n\t}\n\n\t//! Retrieves the hash key.\n\tinline GUINT get_key(GUINT index) const\n\t{\n\t\treturn m_nodes[index].m_key;\n\t}\n\n\t//! Retrieves the value by index\n\t/*!\n    */\n\tinline T* get_value_by_index(GUINT index)\n\t{\n\t\treturn &m_nodes[index].m_data;\n\t}\n\n\tinline const T& operator[](GUINT index) const\n\t{\n\t\treturn m_nodes[index].m_data;\n\t}\n\n\tinline T& operator[](GUINT index)\n\t{\n\t\treturn m_nodes[index].m_data;\n\t}\n\n\t//! Finds the index of the element with the key\n\t/*!\n    \\return the index in the array of the existing element,or GIM_INVALID_HASH if the element has been inserted\n    If so, the element has been inserted at the last position of the array.\n    */\n\tinline GUINT find(GUINT hashkey)\n\t{\n\t\tif (m_hash_table)\n\t\t{\n\t\t\tGUINT cell_index = _find_cell(hashkey);\n\t\t\tif (cell_index == GIM_INVALID_HASH) return GIM_INVALID_HASH;\n\t\t\treturn m_hash_table[cell_index];\n\t\t}\n\t\tGUINT last_index = m_nodes.size();\n\t\tif (last_index < 2)\n\t\t{\n\t\t\tif (last_index == 0) return GIM_INVALID_HASH;\n\t\t\tif (m_nodes[0].m_key == hashkey) return 0;\n\t\t\treturn GIM_INVALID_HASH;\n\t\t}\n\t\telse if (m_sorted)\n\t\t{\n\t\t\t//Binary search\n\t\t\tGUINT result_ind = 0;\n\t\t\tlast_index--;\n\t\t\t_node_type* ptr = m_nodes.pointer();\n\n\t\t\tbool found = gim_binary_search_ex(ptr, 0, last_index, result_ind, hashkey, GIM_HASH_NODE_CMP_KEY_MACRO());\n\n\t\t\tif (found) return result_ind;\n\t\t}\n\t\treturn GIM_INVALID_HASH;\n\t}\n\n\t//! Retrieves the value associated with the index\n\t/*!\n    \\return the found element, or null\n    */\n\tinline T* get_value(GUINT hashkey)\n\t{\n\t\tGUINT index = find(hashkey);\n\t\tif (index == GIM_INVALID_HASH) return NULL;\n\t\treturn &m_nodes[index].m_data;\n\t}\n\n\t/*!\n    */\n\tinline bool erase_by_index(GUINT index)\n\t{\n\t\tif (index > m_nodes.size()) return false;\n\n\t\tif (m_hash_table == NULL)\n\t\t{\n\t\t\tif (is_sorted())\n\t\t\t{\n\t\t\t\treturn this->_erase_sorted(index);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn this->_erase_unsorted(index);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this->_erase_by_index_hash_table(index);\n\t\t}\n\t\treturn false;\n\t}\n\n\tinline bool erase_by_index_unsorted(GUINT index)\n\t{\n\t\tif (index > m_nodes.size()) return false;\n\n\t\tif (m_hash_table == NULL)\n\t\t{\n\t\t\treturn this->_erase_unsorted(index);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this->_erase_by_index_hash_table(index);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/*!\n\n    */\n\tinline bool erase_by_key(GUINT hashkey)\n\t{\n\t\tif (size() == 0) return false;\n\n\t\tif (m_hash_table)\n\t\t{\n\t\t\treturn this->_erase_hash_table(hashkey);\n\t\t}\n\t\t//Binary search\n\n\t\tif (is_sorted() == false) return false;\n\n\t\tGUINT result_ind = find(hashkey);\n\t\tif (result_ind != GIM_INVALID_HASH)\n\t\t{\n\t\t\treturn this->_erase_sorted(result_ind);\n\t\t}\n\t\treturn false;\n\t}\n\n\tvoid clear()\n\t{\n\t\tm_nodes.clear();\n\n\t\tif (m_hash_table == NULL) return;\n\t\tGUINT datasize = m_table_size * m_node_size;\n\t\t//Initialize the hashkeys.\n\t\tGUINT i;\n\t\tfor (i = 0; i < datasize; i++)\n\t\t{\n\t\t\tm_hash_table[i] = GIM_INVALID_HASH;  // invalidate keys\n\t\t}\n\t\tm_sorted = false;\n\t}\n\n\t//! Insert an element into the hash\n\t/*!\n    \\return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position\n    of the existing element.\n    */\n\tinline GUINT insert(GUINT hashkey, const T& element)\n\t{\n\t\tif (m_hash_table)\n\t\t{\n\t\t\treturn this->_insert_hash_table(hashkey, element);\n\t\t}\n\t\tif (this->is_sorted())\n\t\t{\n\t\t\treturn this->_insert_sorted(hashkey, element);\n\t\t}\n\t\treturn this->_insert_unsorted(hashkey, element);\n\t}\n\n\t//! Insert an element into the hash, and could overrite an existing object with the same hash.\n\t/*!\n    \\return If GIM_INVALID_HASH, the object has been inserted succesfully. Else it returns the position\n    of the replaced element.\n    */\n\tinline GUINT insert_override(GUINT hashkey, const T& element)\n\t{\n\t\tif (m_hash_table)\n\t\t{\n\t\t\treturn this->_insert_hash_table_replace(hashkey, element);\n\t\t}\n\t\tif (this->is_sorted())\n\t\t{\n\t\t\treturn this->_insert_sorted_replace(hashkey, element);\n\t\t}\n\t\tthis->_insert_unsorted(hashkey, element);\n\t\treturn m_nodes.size();\n\t}\n\n\t//! Insert an element into the hash,But if this container is a sorted array, this inserts it unsorted\n\t/*!\n    */\n\tinline GUINT insert_unsorted(GUINT hashkey, const T& element)\n\t{\n\t\tif (m_hash_table)\n\t\t{\n\t\t\treturn this->_insert_hash_table(hashkey, element);\n\t\t}\n\t\treturn this->_insert_unsorted(hashkey, element);\n\t}\n};\n\n#endif  // GIM_CONTAINERS_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_linear_math.h",
    "content": "#ifndef GIM_LINEAR_H_INCLUDED\n#define GIM_LINEAR_H_INCLUDED\n\n/*! \\file gim_linear_math.h\n*\\author Francisco Leon Najera\nType Independant Vector and matrix operations.\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_math.h\"\n#include \"gim_geom_types.h\"\n\n//! Zero out a 2D vector\n#define VEC_ZERO_2(a)           \\\n\t{                           \\\n\t\t(a)[0] = (a)[1] = 0.0f; \\\n\t}\n\n//! Zero out a 3D vector\n#define VEC_ZERO(a)                      \\\n\t{                                    \\\n\t\t(a)[0] = (a)[1] = (a)[2] = 0.0f; \\\n\t}\n\n/// Zero out a 4D vector\n#define VEC_ZERO_4(a)                             \\\n\t{                                             \\\n\t\t(a)[0] = (a)[1] = (a)[2] = (a)[3] = 0.0f; \\\n\t}\n\n/// Vector copy\n#define VEC_COPY_2(b, a) \\\n\t{                    \\\n\t\t(b)[0] = (a)[0]; \\\n\t\t(b)[1] = (a)[1]; \\\n\t}\n\n/// Copy 3D vector\n#define VEC_COPY(b, a)   \\\n\t{                    \\\n\t\t(b)[0] = (a)[0]; \\\n\t\t(b)[1] = (a)[1]; \\\n\t\t(b)[2] = (a)[2]; \\\n\t}\n\n/// Copy 4D vector\n#define VEC_COPY_4(b, a) \\\n\t{                    \\\n\t\t(b)[0] = (a)[0]; \\\n\t\t(b)[1] = (a)[1]; \\\n\t\t(b)[2] = (a)[2]; \\\n\t\t(b)[3] = (a)[3]; \\\n\t}\n\n/// VECTOR SWAP\n#define VEC_SWAP(b, a)                    \\\n\t{                                     \\\n\t\tGIM_SWAP_NUMBERS((b)[0], (a)[0]); \\\n\t\tGIM_SWAP_NUMBERS((b)[1], (a)[1]); \\\n\t\tGIM_SWAP_NUMBERS((b)[2], (a)[2]); \\\n\t}\n\n/// Vector difference\n#define VEC_DIFF_2(v21, v2, v1)       \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] - (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] - (v1)[1]; \\\n\t}\n\n/// Vector difference\n#define VEC_DIFF(v21, v2, v1)         \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] - (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] - (v1)[1]; \\\n\t\t(v21)[2] = (v2)[2] - (v1)[2]; \\\n\t}\n\n/// Vector difference\n#define VEC_DIFF_4(v21, v2, v1)       \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] - (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] - (v1)[1]; \\\n\t\t(v21)[2] = (v2)[2] - (v1)[2]; \\\n\t\t(v21)[3] = (v2)[3] - (v1)[3]; \\\n\t}\n\n/// Vector sum\n#define VEC_SUM_2(v21, v2, v1)        \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] + (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] + (v1)[1]; \\\n\t}\n\n/// Vector sum\n#define VEC_SUM(v21, v2, v1)          \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] + (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] + (v1)[1]; \\\n\t\t(v21)[2] = (v2)[2] + (v1)[2]; \\\n\t}\n\n/// Vector sum\n#define VEC_SUM_4(v21, v2, v1)        \\\n\t{                                 \\\n\t\t(v21)[0] = (v2)[0] + (v1)[0]; \\\n\t\t(v21)[1] = (v2)[1] + (v1)[1]; \\\n\t\t(v21)[2] = (v2)[2] + (v1)[2]; \\\n\t\t(v21)[3] = (v2)[3] + (v1)[3]; \\\n\t}\n\n/// scalar times vector\n#define VEC_SCALE_2(c, a, b)   \\\n\t{                          \\\n\t\t(c)[0] = (a) * (b)[0]; \\\n\t\t(c)[1] = (a) * (b)[1]; \\\n\t}\n\n/// scalar times vector\n#define VEC_SCALE(c, a, b)     \\\n\t{                          \\\n\t\t(c)[0] = (a) * (b)[0]; \\\n\t\t(c)[1] = (a) * (b)[1]; \\\n\t\t(c)[2] = (a) * (b)[2]; \\\n\t}\n\n/// scalar times vector\n#define VEC_SCALE_4(c, a, b)   \\\n\t{                          \\\n\t\t(c)[0] = (a) * (b)[0]; \\\n\t\t(c)[1] = (a) * (b)[1]; \\\n\t\t(c)[2] = (a) * (b)[2]; \\\n\t\t(c)[3] = (a) * (b)[3]; \\\n\t}\n\n/// accumulate scaled vector\n#define VEC_ACCUM_2(c, a, b)    \\\n\t{                           \\\n\t\t(c)[0] += (a) * (b)[0]; \\\n\t\t(c)[1] += (a) * (b)[1]; \\\n\t}\n\n/// accumulate scaled vector\n#define VEC_ACCUM(c, a, b)      \\\n\t{                           \\\n\t\t(c)[0] += (a) * (b)[0]; \\\n\t\t(c)[1] += (a) * (b)[1]; \\\n\t\t(c)[2] += (a) * (b)[2]; \\\n\t}\n\n/// accumulate scaled vector\n#define VEC_ACCUM_4(c, a, b)    \\\n\t{                           \\\n\t\t(c)[0] += (a) * (b)[0]; \\\n\t\t(c)[1] += (a) * (b)[1]; \\\n\t\t(c)[2] += (a) * (b)[2]; \\\n\t\t(c)[3] += (a) * (b)[3]; \\\n\t}\n\n/// Vector dot product\n#define VEC_DOT_2(a, b) ((a)[0] * (b)[0] + (a)[1] * (b)[1])\n\n/// Vector dot product\n#define VEC_DOT(a, b) ((a)[0] * (b)[0] + (a)[1] * (b)[1] + (a)[2] * (b)[2])\n\n/// Vector dot product\n#define VEC_DOT_4(a, b) ((a)[0] * (b)[0] + (a)[1] * (b)[1] + (a)[2] * (b)[2] + (a)[3] * (b)[3])\n\n/// vector impact parameter (squared)\n#define VEC_IMPACT_SQ(bsq, direction, position)              \\\n\t{                                                        \\\n\t\tGREAL _llel_ = VEC_DOT(direction, position);         \\\n\t\tbsq = VEC_DOT(position, position) - _llel_ * _llel_; \\\n\t}\n\n/// vector impact parameter\n#define VEC_IMPACT(bsq, direction, position)     \\\n\t{                                            \\\n\t\tVEC_IMPACT_SQ(bsq, direction, position); \\\n\t\tGIM_SQRT(bsq, bsq);                      \\\n\t}\n\n/// Vector length\n#define VEC_LENGTH_2(a, l)           \\\n\t{                                \\\n\t\tGREAL _pp = VEC_DOT_2(a, a); \\\n\t\tGIM_SQRT(_pp, l);            \\\n\t}\n\n/// Vector length\n#define VEC_LENGTH(a, l)           \\\n\t{                              \\\n\t\tGREAL _pp = VEC_DOT(a, a); \\\n\t\tGIM_SQRT(_pp, l);          \\\n\t}\n\n/// Vector length\n#define VEC_LENGTH_4(a, l)           \\\n\t{                                \\\n\t\tGREAL _pp = VEC_DOT_4(a, a); \\\n\t\tGIM_SQRT(_pp, l);            \\\n\t}\n\n/// Vector inv length\n#define VEC_INV_LENGTH_2(a, l)       \\\n\t{                                \\\n\t\tGREAL _pp = VEC_DOT_2(a, a); \\\n\t\tGIM_INV_SQRT(_pp, l);        \\\n\t}\n\n/// Vector inv length\n#define VEC_INV_LENGTH(a, l)       \\\n\t{                              \\\n\t\tGREAL _pp = VEC_DOT(a, a); \\\n\t\tGIM_INV_SQRT(_pp, l);      \\\n\t}\n\n/// Vector inv length\n#define VEC_INV_LENGTH_4(a, l)       \\\n\t{                                \\\n\t\tGREAL _pp = VEC_DOT_4(a, a); \\\n\t\tGIM_INV_SQRT(_pp, l);        \\\n\t}\n\n/// distance between two points\n#define VEC_DISTANCE(_len, _va, _vb) \\\n\t{                                \\\n\t\tvec3f _tmp_;                 \\\n\t\tVEC_DIFF(_tmp_, _vb, _va);   \\\n\t\tVEC_LENGTH(_tmp_, _len);     \\\n\t}\n\n/// Vector length\n#define VEC_CONJUGATE_LENGTH(a, l)                                 \\\n\t{                                                              \\\n\t\tGREAL _pp = 1.0 - a[0] * a[0] - a[1] * a[1] - a[2] * a[2]; \\\n\t\tGIM_SQRT(_pp, l);                                          \\\n\t}\n\n/// Vector length\n#define VEC_NORMALIZE(a)           \\\n\t{                              \\\n\t\tGREAL len;                 \\\n\t\tVEC_INV_LENGTH(a, len);    \\\n\t\tif (len < G_REAL_INFINITY) \\\n\t\t{                          \\\n\t\t\ta[0] *= len;           \\\n\t\t\ta[1] *= len;           \\\n\t\t\ta[2] *= len;           \\\n\t\t}                          \\\n\t}\n\n/// Set Vector size\n#define VEC_RENORMALIZE(a, newlen) \\\n\t{                              \\\n\t\tGREAL len;                 \\\n\t\tVEC_INV_LENGTH(a, len);    \\\n\t\tif (len < G_REAL_INFINITY) \\\n\t\t{                          \\\n\t\t\tlen *= newlen;         \\\n\t\t\ta[0] *= len;           \\\n\t\t\ta[1] *= len;           \\\n\t\t\ta[2] *= len;           \\\n\t\t}                          \\\n\t}\n\n/// Vector cross\n#define VEC_CROSS(c, a, b)                        \\\n\t{                                             \\\n\t\tc[0] = (a)[1] * (b)[2] - (a)[2] * (b)[1]; \\\n\t\tc[1] = (a)[2] * (b)[0] - (a)[0] * (b)[2]; \\\n\t\tc[2] = (a)[0] * (b)[1] - (a)[1] * (b)[0]; \\\n\t}\n\n/*! Vector perp -- assumes that n is of unit length\n * accepts vector v, subtracts out any component parallel to n */\n#define VEC_PERPENDICULAR(vp, v, n)    \\\n\t{                                  \\\n\t\tGREAL dot = VEC_DOT(v, n);     \\\n\t\tvp[0] = (v)[0] - dot * (n)[0]; \\\n\t\tvp[1] = (v)[1] - dot * (n)[1]; \\\n\t\tvp[2] = (v)[2] - dot * (n)[2]; \\\n\t}\n\n/*! Vector parallel -- assumes that n is of unit length */\n#define VEC_PARALLEL(vp, v, n)     \\\n\t{                              \\\n\t\tGREAL dot = VEC_DOT(v, n); \\\n\t\tvp[0] = (dot) * (n)[0];    \\\n\t\tvp[1] = (dot) * (n)[1];    \\\n\t\tvp[2] = (dot) * (n)[2];    \\\n\t}\n\n/*! Same as Vector parallel --  n can have any length\n * accepts vector v, subtracts out any component perpendicular to n */\n#define VEC_PROJECT(vp, v, n)         \\\n\t{                                 \\\n\t\tGREAL scalar = VEC_DOT(v, n); \\\n\t\tscalar /= VEC_DOT(n, n);      \\\n\t\tvp[0] = (scalar) * (n)[0];    \\\n\t\tvp[1] = (scalar) * (n)[1];    \\\n\t\tvp[2] = (scalar) * (n)[2];    \\\n\t}\n\n/*! accepts vector v*/\n#define VEC_UNPROJECT(vp, v, n)          \\\n\t{                                    \\\n\t\tGREAL scalar = VEC_DOT(v, n);    \\\n\t\tscalar = VEC_DOT(n, n) / scalar; \\\n\t\tvp[0] = (scalar) * (n)[0];       \\\n\t\tvp[1] = (scalar) * (n)[1];       \\\n\t\tvp[2] = (scalar) * (n)[2];       \\\n\t}\n\n/*! Vector reflection -- assumes n is of unit length\n Takes vector v, reflects it against reflector n, and returns vr */\n#define VEC_REFLECT(vr, v, n)                  \\\n\t{                                          \\\n\t\tGREAL dot = VEC_DOT(v, n);             \\\n\t\tvr[0] = (v)[0] - 2.0 * (dot) * (n)[0]; \\\n\t\tvr[1] = (v)[1] - 2.0 * (dot) * (n)[1]; \\\n\t\tvr[2] = (v)[2] - 2.0 * (dot) * (n)[2]; \\\n\t}\n\n/*! Vector blending\nTakes two vectors a, b, blends them together with two scalars */\n#define VEC_BLEND_AB(vr, sa, a, sb, b)         \\\n\t{                                          \\\n\t\tvr[0] = (sa) * (a)[0] + (sb) * (b)[0]; \\\n\t\tvr[1] = (sa) * (a)[1] + (sb) * (b)[1]; \\\n\t\tvr[2] = (sa) * (a)[2] + (sb) * (b)[2]; \\\n\t}\n\n/*! Vector blending\nTakes two vectors a, b, blends them together with s <=1 */\n#define VEC_BLEND(vr, a, b, s) VEC_BLEND_AB(vr, (1 - s), a, s, b)\n\n#define VEC_SET3(a, b, op, c) \\\n\ta[0] = b[0] op c[0];      \\\n\ta[1] = b[1] op c[1];      \\\n\ta[2] = b[2] op c[2];\n\n//! Finds the bigger cartesian coordinate from a vector\n#define VEC_MAYOR_COORD(vec, maxc)                                          \\\n\t{                                                                       \\\n\t\tGREAL A[] = {fabs(vec[0]), fabs(vec[1]), fabs(vec[2])};             \\\n\t\tmaxc = A[0] > A[1] ? (A[0] > A[2] ? 0 : 2) : (A[1] > A[2] ? 1 : 2); \\\n\t}\n\n//! Finds the 2 smallest cartesian coordinates from a vector\n#define VEC_MINOR_AXES(vec, i0, i1) \\\n\t{                               \\\n\t\tVEC_MAYOR_COORD(vec, i0);   \\\n\t\ti0 = (i0 + 1) % 3;          \\\n\t\ti1 = (i0 + 1) % 3;          \\\n\t}\n\n#define VEC_EQUAL(v1, v2) (v1[0] == v2[0] && v1[1] == v2[1] && v1[2] == v2[2])\n\n#define VEC_NEAR_EQUAL(v1, v2) (GIM_NEAR_EQUAL(v1[0], v2[0]) && GIM_NEAR_EQUAL(v1[1], v2[1]) && GIM_NEAR_EQUAL(v1[2], v2[2]))\n\n/// Vector cross\n#define X_AXIS_CROSS_VEC(dst, src) \\\n\t{                              \\\n\t\tdst[0] = 0.0f;             \\\n\t\tdst[1] = -src[2];          \\\n\t\tdst[2] = src[1];           \\\n\t}\n\n#define Y_AXIS_CROSS_VEC(dst, src) \\\n\t{                              \\\n\t\tdst[0] = src[2];           \\\n\t\tdst[1] = 0.0f;             \\\n\t\tdst[2] = -src[0];          \\\n\t}\n\n#define Z_AXIS_CROSS_VEC(dst, src) \\\n\t{                              \\\n\t\tdst[0] = -src[1];          \\\n\t\tdst[1] = src[0];           \\\n\t\tdst[2] = 0.0f;             \\\n\t}\n\n/// initialize matrix\n#define IDENTIFY_MATRIX_3X3(m) \\\n\t{                          \\\n\t\tm[0][0] = 1.0;         \\\n\t\tm[0][1] = 0.0;         \\\n\t\tm[0][2] = 0.0;         \\\n                               \\\n\t\tm[1][0] = 0.0;         \\\n\t\tm[1][1] = 1.0;         \\\n\t\tm[1][2] = 0.0;         \\\n                               \\\n\t\tm[2][0] = 0.0;         \\\n\t\tm[2][1] = 0.0;         \\\n\t\tm[2][2] = 1.0;         \\\n\t}\n\n/*! initialize matrix */\n#define IDENTIFY_MATRIX_4X4(m) \\\n\t{                          \\\n\t\tm[0][0] = 1.0;         \\\n\t\tm[0][1] = 0.0;         \\\n\t\tm[0][2] = 0.0;         \\\n\t\tm[0][3] = 0.0;         \\\n                               \\\n\t\tm[1][0] = 0.0;         \\\n\t\tm[1][1] = 1.0;         \\\n\t\tm[1][2] = 0.0;         \\\n\t\tm[1][3] = 0.0;         \\\n                               \\\n\t\tm[2][0] = 0.0;         \\\n\t\tm[2][1] = 0.0;         \\\n\t\tm[2][2] = 1.0;         \\\n\t\tm[2][3] = 0.0;         \\\n                               \\\n\t\tm[3][0] = 0.0;         \\\n\t\tm[3][1] = 0.0;         \\\n\t\tm[3][2] = 0.0;         \\\n\t\tm[3][3] = 1.0;         \\\n\t}\n\n/*! initialize matrix */\n#define ZERO_MATRIX_4X4(m) \\\n\t{                      \\\n\t\tm[0][0] = 0.0;     \\\n\t\tm[0][1] = 0.0;     \\\n\t\tm[0][2] = 0.0;     \\\n\t\tm[0][3] = 0.0;     \\\n                           \\\n\t\tm[1][0] = 0.0;     \\\n\t\tm[1][1] = 0.0;     \\\n\t\tm[1][2] = 0.0;     \\\n\t\tm[1][3] = 0.0;     \\\n                           \\\n\t\tm[2][0] = 0.0;     \\\n\t\tm[2][1] = 0.0;     \\\n\t\tm[2][2] = 0.0;     \\\n\t\tm[2][3] = 0.0;     \\\n                           \\\n\t\tm[3][0] = 0.0;     \\\n\t\tm[3][1] = 0.0;     \\\n\t\tm[3][2] = 0.0;     \\\n\t\tm[3][3] = 0.0;     \\\n\t}\n\n/*! matrix rotation  X */\n#define ROTX_CS(m, cosine, sine)        \\\n\t{                                   \\\n\t\t/* rotation about the x-axis */ \\\n                                        \\\n\t\tm[0][0] = 1.0;                  \\\n\t\tm[0][1] = 0.0;                  \\\n\t\tm[0][2] = 0.0;                  \\\n\t\tm[0][3] = 0.0;                  \\\n                                        \\\n\t\tm[1][0] = 0.0;                  \\\n\t\tm[1][1] = (cosine);             \\\n\t\tm[1][2] = (sine);               \\\n\t\tm[1][3] = 0.0;                  \\\n                                        \\\n\t\tm[2][0] = 0.0;                  \\\n\t\tm[2][1] = -(sine);              \\\n\t\tm[2][2] = (cosine);             \\\n\t\tm[2][3] = 0.0;                  \\\n                                        \\\n\t\tm[3][0] = 0.0;                  \\\n\t\tm[3][1] = 0.0;                  \\\n\t\tm[3][2] = 0.0;                  \\\n\t\tm[3][3] = 1.0;                  \\\n\t}\n\n/*! matrix rotation  Y */\n#define ROTY_CS(m, cosine, sine)        \\\n\t{                                   \\\n\t\t/* rotation about the y-axis */ \\\n                                        \\\n\t\tm[0][0] = (cosine);             \\\n\t\tm[0][1] = 0.0;                  \\\n\t\tm[0][2] = -(sine);              \\\n\t\tm[0][3] = 0.0;                  \\\n                                        \\\n\t\tm[1][0] = 0.0;                  \\\n\t\tm[1][1] = 1.0;                  \\\n\t\tm[1][2] = 0.0;                  \\\n\t\tm[1][3] = 0.0;                  \\\n                                        \\\n\t\tm[2][0] = (sine);               \\\n\t\tm[2][1] = 0.0;                  \\\n\t\tm[2][2] = (cosine);             \\\n\t\tm[2][3] = 0.0;                  \\\n                                        \\\n\t\tm[3][0] = 0.0;                  \\\n\t\tm[3][1] = 0.0;                  \\\n\t\tm[3][2] = 0.0;                  \\\n\t\tm[3][3] = 1.0;                  \\\n\t}\n\n/*! matrix rotation  Z */\n#define ROTZ_CS(m, cosine, sine)        \\\n\t{                                   \\\n\t\t/* rotation about the z-axis */ \\\n                                        \\\n\t\tm[0][0] = (cosine);             \\\n\t\tm[0][1] = (sine);               \\\n\t\tm[0][2] = 0.0;                  \\\n\t\tm[0][3] = 0.0;                  \\\n                                        \\\n\t\tm[1][0] = -(sine);              \\\n\t\tm[1][1] = (cosine);             \\\n\t\tm[1][2] = 0.0;                  \\\n\t\tm[1][3] = 0.0;                  \\\n                                        \\\n\t\tm[2][0] = 0.0;                  \\\n\t\tm[2][1] = 0.0;                  \\\n\t\tm[2][2] = 1.0;                  \\\n\t\tm[2][3] = 0.0;                  \\\n                                        \\\n\t\tm[3][0] = 0.0;                  \\\n\t\tm[3][1] = 0.0;                  \\\n\t\tm[3][2] = 0.0;                  \\\n\t\tm[3][3] = 1.0;                  \\\n\t}\n\n/*! matrix copy */\n#define COPY_MATRIX_2X2(b, a) \\\n\t{                         \\\n\t\tb[0][0] = a[0][0];    \\\n\t\tb[0][1] = a[0][1];    \\\n                              \\\n\t\tb[1][0] = a[1][0];    \\\n\t\tb[1][1] = a[1][1];    \\\n\t}\n\n/*! matrix copy */\n#define COPY_MATRIX_2X3(b, a) \\\n\t{                         \\\n\t\tb[0][0] = a[0][0];    \\\n\t\tb[0][1] = a[0][1];    \\\n\t\tb[0][2] = a[0][2];    \\\n                              \\\n\t\tb[1][0] = a[1][0];    \\\n\t\tb[1][1] = a[1][1];    \\\n\t\tb[1][2] = a[1][2];    \\\n\t}\n\n/*! matrix copy */\n#define COPY_MATRIX_3X3(b, a) \\\n\t{                         \\\n\t\tb[0][0] = a[0][0];    \\\n\t\tb[0][1] = a[0][1];    \\\n\t\tb[0][2] = a[0][2];    \\\n                              \\\n\t\tb[1][0] = a[1][0];    \\\n\t\tb[1][1] = a[1][1];    \\\n\t\tb[1][2] = a[1][2];    \\\n                              \\\n\t\tb[2][0] = a[2][0];    \\\n\t\tb[2][1] = a[2][1];    \\\n\t\tb[2][2] = a[2][2];    \\\n\t}\n\n/*! matrix copy */\n#define COPY_MATRIX_4X4(b, a) \\\n\t{                         \\\n\t\tb[0][0] = a[0][0];    \\\n\t\tb[0][1] = a[0][1];    \\\n\t\tb[0][2] = a[0][2];    \\\n\t\tb[0][3] = a[0][3];    \\\n                              \\\n\t\tb[1][0] = a[1][0];    \\\n\t\tb[1][1] = a[1][1];    \\\n\t\tb[1][2] = a[1][2];    \\\n\t\tb[1][3] = a[1][3];    \\\n                              \\\n\t\tb[2][0] = a[2][0];    \\\n\t\tb[2][1] = a[2][1];    \\\n\t\tb[2][2] = a[2][2];    \\\n\t\tb[2][3] = a[2][3];    \\\n                              \\\n\t\tb[3][0] = a[3][0];    \\\n\t\tb[3][1] = a[3][1];    \\\n\t\tb[3][2] = a[3][2];    \\\n\t\tb[3][3] = a[3][3];    \\\n\t}\n\n/*! matrix transpose */\n#define TRANSPOSE_MATRIX_2X2(b, a) \\\n\t{                              \\\n\t\tb[0][0] = a[0][0];         \\\n\t\tb[0][1] = a[1][0];         \\\n                                   \\\n\t\tb[1][0] = a[0][1];         \\\n\t\tb[1][1] = a[1][1];         \\\n\t}\n\n/*! matrix transpose */\n#define TRANSPOSE_MATRIX_3X3(b, a) \\\n\t{                              \\\n\t\tb[0][0] = a[0][0];         \\\n\t\tb[0][1] = a[1][0];         \\\n\t\tb[0][2] = a[2][0];         \\\n                                   \\\n\t\tb[1][0] = a[0][1];         \\\n\t\tb[1][1] = a[1][1];         \\\n\t\tb[1][2] = a[2][1];         \\\n                                   \\\n\t\tb[2][0] = a[0][2];         \\\n\t\tb[2][1] = a[1][2];         \\\n\t\tb[2][2] = a[2][2];         \\\n\t}\n\n/*! matrix transpose */\n#define TRANSPOSE_MATRIX_4X4(b, a) \\\n\t{                              \\\n\t\tb[0][0] = a[0][0];         \\\n\t\tb[0][1] = a[1][0];         \\\n\t\tb[0][2] = a[2][0];         \\\n\t\tb[0][3] = a[3][0];         \\\n                                   \\\n\t\tb[1][0] = a[0][1];         \\\n\t\tb[1][1] = a[1][1];         \\\n\t\tb[1][2] = a[2][1];         \\\n\t\tb[1][3] = a[3][1];         \\\n                                   \\\n\t\tb[2][0] = a[0][2];         \\\n\t\tb[2][1] = a[1][2];         \\\n\t\tb[2][2] = a[2][2];         \\\n\t\tb[2][3] = a[3][2];         \\\n                                   \\\n\t\tb[3][0] = a[0][3];         \\\n\t\tb[3][1] = a[1][3];         \\\n\t\tb[3][2] = a[2][3];         \\\n\t\tb[3][3] = a[3][3];         \\\n\t}\n\n/*! multiply matrix by scalar */\n#define SCALE_MATRIX_2X2(b, s, a) \\\n\t{                             \\\n\t\tb[0][0] = (s)*a[0][0];    \\\n\t\tb[0][1] = (s)*a[0][1];    \\\n                                  \\\n\t\tb[1][0] = (s)*a[1][0];    \\\n\t\tb[1][1] = (s)*a[1][1];    \\\n\t}\n\n/*! multiply matrix by scalar */\n#define SCALE_MATRIX_3X3(b, s, a) \\\n\t{                             \\\n\t\tb[0][0] = (s)*a[0][0];    \\\n\t\tb[0][1] = (s)*a[0][1];    \\\n\t\tb[0][2] = (s)*a[0][2];    \\\n                                  \\\n\t\tb[1][0] = (s)*a[1][0];    \\\n\t\tb[1][1] = (s)*a[1][1];    \\\n\t\tb[1][2] = (s)*a[1][2];    \\\n                                  \\\n\t\tb[2][0] = (s)*a[2][0];    \\\n\t\tb[2][1] = (s)*a[2][1];    \\\n\t\tb[2][2] = (s)*a[2][2];    \\\n\t}\n\n/*! multiply matrix by scalar */\n#define SCALE_MATRIX_4X4(b, s, a) \\\n\t{                             \\\n\t\tb[0][0] = (s)*a[0][0];    \\\n\t\tb[0][1] = (s)*a[0][1];    \\\n\t\tb[0][2] = (s)*a[0][2];    \\\n\t\tb[0][3] = (s)*a[0][3];    \\\n                                  \\\n\t\tb[1][0] = (s)*a[1][0];    \\\n\t\tb[1][1] = (s)*a[1][1];    \\\n\t\tb[1][2] = (s)*a[1][2];    \\\n\t\tb[1][3] = (s)*a[1][3];    \\\n                                  \\\n\t\tb[2][0] = (s)*a[2][0];    \\\n\t\tb[2][1] = (s)*a[2][1];    \\\n\t\tb[2][2] = (s)*a[2][2];    \\\n\t\tb[2][3] = (s)*a[2][3];    \\\n                                  \\\n\t\tb[3][0] = s * a[3][0];    \\\n\t\tb[3][1] = s * a[3][1];    \\\n\t\tb[3][2] = s * a[3][2];    \\\n\t\tb[3][3] = s * a[3][3];    \\\n\t}\n\n/*! multiply matrix by scalar */\n#define SCALE_VEC_MATRIX_2X2(b, svec, a) \\\n\t{                                    \\\n\t\tb[0][0] = svec[0] * a[0][0];     \\\n\t\tb[1][0] = svec[0] * a[1][0];     \\\n                                         \\\n\t\tb[0][1] = svec[1] * a[0][1];     \\\n\t\tb[1][1] = svec[1] * a[1][1];     \\\n\t}\n\n/*! multiply matrix by scalar. Each columns is scaled by each scalar vector component */\n#define SCALE_VEC_MATRIX_3X3(b, svec, a) \\\n\t{                                    \\\n\t\tb[0][0] = svec[0] * a[0][0];     \\\n\t\tb[1][0] = svec[0] * a[1][0];     \\\n\t\tb[2][0] = svec[0] * a[2][0];     \\\n                                         \\\n\t\tb[0][1] = svec[1] * a[0][1];     \\\n\t\tb[1][1] = svec[1] * a[1][1];     \\\n\t\tb[2][1] = svec[1] * a[2][1];     \\\n                                         \\\n\t\tb[0][2] = svec[2] * a[0][2];     \\\n\t\tb[1][2] = svec[2] * a[1][2];     \\\n\t\tb[2][2] = svec[2] * a[2][2];     \\\n\t}\n\n/*! multiply matrix by scalar */\n#define SCALE_VEC_MATRIX_4X4(b, svec, a) \\\n\t{                                    \\\n\t\tb[0][0] = svec[0] * a[0][0];     \\\n\t\tb[1][0] = svec[0] * a[1][0];     \\\n\t\tb[2][0] = svec[0] * a[2][0];     \\\n\t\tb[3][0] = svec[0] * a[3][0];     \\\n                                         \\\n\t\tb[0][1] = svec[1] * a[0][1];     \\\n\t\tb[1][1] = svec[1] * a[1][1];     \\\n\t\tb[2][1] = svec[1] * a[2][1];     \\\n\t\tb[3][1] = svec[1] * a[3][1];     \\\n                                         \\\n\t\tb[0][2] = svec[2] * a[0][2];     \\\n\t\tb[1][2] = svec[2] * a[1][2];     \\\n\t\tb[2][2] = svec[2] * a[2][2];     \\\n\t\tb[3][2] = svec[2] * a[3][2];     \\\n                                         \\\n\t\tb[0][3] = svec[3] * a[0][3];     \\\n\t\tb[1][3] = svec[3] * a[1][3];     \\\n\t\tb[2][3] = svec[3] * a[2][3];     \\\n\t\tb[3][3] = svec[3] * a[3][3];     \\\n\t}\n\n/*! multiply matrix by scalar */\n#define ACCUM_SCALE_MATRIX_2X2(b, s, a) \\\n\t{                                   \\\n\t\tb[0][0] += (s)*a[0][0];         \\\n\t\tb[0][1] += (s)*a[0][1];         \\\n                                        \\\n\t\tb[1][0] += (s)*a[1][0];         \\\n\t\tb[1][1] += (s)*a[1][1];         \\\n\t}\n\n/*! multiply matrix by scalar */\n#define ACCUM_SCALE_MATRIX_3X3(b, s, a) \\\n\t{                                   \\\n\t\tb[0][0] += (s)*a[0][0];         \\\n\t\tb[0][1] += (s)*a[0][1];         \\\n\t\tb[0][2] += (s)*a[0][2];         \\\n                                        \\\n\t\tb[1][0] += (s)*a[1][0];         \\\n\t\tb[1][1] += (s)*a[1][1];         \\\n\t\tb[1][2] += (s)*a[1][2];         \\\n                                        \\\n\t\tb[2][0] += (s)*a[2][0];         \\\n\t\tb[2][1] += (s)*a[2][1];         \\\n\t\tb[2][2] += (s)*a[2][2];         \\\n\t}\n\n/*! multiply matrix by scalar */\n#define ACCUM_SCALE_MATRIX_4X4(b, s, a) \\\n\t{                                   \\\n\t\tb[0][0] += (s)*a[0][0];         \\\n\t\tb[0][1] += (s)*a[0][1];         \\\n\t\tb[0][2] += (s)*a[0][2];         \\\n\t\tb[0][3] += (s)*a[0][3];         \\\n                                        \\\n\t\tb[1][0] += (s)*a[1][0];         \\\n\t\tb[1][1] += (s)*a[1][1];         \\\n\t\tb[1][2] += (s)*a[1][2];         \\\n\t\tb[1][3] += (s)*a[1][3];         \\\n                                        \\\n\t\tb[2][0] += (s)*a[2][0];         \\\n\t\tb[2][1] += (s)*a[2][1];         \\\n\t\tb[2][2] += (s)*a[2][2];         \\\n\t\tb[2][3] += (s)*a[2][3];         \\\n                                        \\\n\t\tb[3][0] += (s)*a[3][0];         \\\n\t\tb[3][1] += (s)*a[3][1];         \\\n\t\tb[3][2] += (s)*a[3][2];         \\\n\t\tb[3][3] += (s)*a[3][3];         \\\n\t}\n\n/*! matrix product */\n/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/\n#define MATRIX_PRODUCT_2X2(c, a, b)                      \\\n\t{                                                    \\\n\t\tc[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0]; \\\n\t\tc[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1]; \\\n                                                         \\\n\t\tc[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0]; \\\n\t\tc[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1]; \\\n\t}\n\n/*! matrix product */\n/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/\n#define MATRIX_PRODUCT_3X3(c, a, b)                                          \\\n\t{                                                                        \\\n\t\tc[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0]; \\\n\t\tc[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1]; \\\n\t\tc[0][2] = a[0][0] * b[0][2] + a[0][1] * b[1][2] + a[0][2] * b[2][2]; \\\n                                                                             \\\n\t\tc[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0]; \\\n\t\tc[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1]; \\\n\t\tc[1][2] = a[1][0] * b[0][2] + a[1][1] * b[1][2] + a[1][2] * b[2][2]; \\\n                                                                             \\\n\t\tc[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0]; \\\n\t\tc[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1]; \\\n\t\tc[2][2] = a[2][0] * b[0][2] + a[2][1] * b[1][2] + a[2][2] * b[2][2]; \\\n\t}\n\n/*! matrix product */\n/*! c[x][y] = a[x][0]*b[0][y]+a[x][1]*b[1][y]+a[x][2]*b[2][y]+a[x][3]*b[3][y];*/\n#define MATRIX_PRODUCT_4X4(c, a, b)                                                              \\\n\t{                                                                                            \\\n\t\tc[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0] + a[0][3] * b[3][0]; \\\n\t\tc[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1] + a[0][2] * b[2][1] + a[0][3] * b[3][1]; \\\n\t\tc[0][2] = a[0][0] * b[0][2] + a[0][1] * b[1][2] + a[0][2] * b[2][2] + a[0][3] * b[3][2]; \\\n\t\tc[0][3] = a[0][0] * b[0][3] + a[0][1] * b[1][3] + a[0][2] * b[2][3] + a[0][3] * b[3][3]; \\\n                                                                                                 \\\n\t\tc[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0] + a[1][2] * b[2][0] + a[1][3] * b[3][0]; \\\n\t\tc[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1] + a[1][2] * b[2][1] + a[1][3] * b[3][1]; \\\n\t\tc[1][2] = a[1][0] * b[0][2] + a[1][1] * b[1][2] + a[1][2] * b[2][2] + a[1][3] * b[3][2]; \\\n\t\tc[1][3] = a[1][0] * b[0][3] + a[1][1] * b[1][3] + a[1][2] * b[2][3] + a[1][3] * b[3][3]; \\\n                                                                                                 \\\n\t\tc[2][0] = a[2][0] * b[0][0] + a[2][1] * b[1][0] + a[2][2] * b[2][0] + a[2][3] * b[3][0]; \\\n\t\tc[2][1] = a[2][0] * b[0][1] + a[2][1] * b[1][1] + a[2][2] * b[2][1] + a[2][3] * b[3][1]; \\\n\t\tc[2][2] = a[2][0] * b[0][2] + a[2][1] * b[1][2] + a[2][2] * b[2][2] + a[2][3] * b[3][2]; \\\n\t\tc[2][3] = a[2][0] * b[0][3] + a[2][1] * b[1][3] + a[2][2] * b[2][3] + a[2][3] * b[3][3]; \\\n                                                                                                 \\\n\t\tc[3][0] = a[3][0] * b[0][0] + a[3][1] * b[1][0] + a[3][2] * b[2][0] + a[3][3] * b[3][0]; \\\n\t\tc[3][1] = a[3][0] * b[0][1] + a[3][1] * b[1][1] + a[3][2] * b[2][1] + a[3][3] * b[3][1]; \\\n\t\tc[3][2] = a[3][0] * b[0][2] + a[3][1] * b[1][2] + a[3][2] * b[2][2] + a[3][3] * b[3][2]; \\\n\t\tc[3][3] = a[3][0] * b[0][3] + a[3][1] * b[1][3] + a[3][2] * b[2][3] + a[3][3] * b[3][3]; \\\n\t}\n\n/*! matrix times vector */\n#define MAT_DOT_VEC_2X2(p, m, v)                \\\n\t{                                           \\\n\t\tp[0] = m[0][0] * v[0] + m[0][1] * v[1]; \\\n\t\tp[1] = m[1][0] * v[0] + m[1][1] * v[1]; \\\n\t}\n\n/*! matrix times vector */\n#define MAT_DOT_VEC_3X3(p, m, v)                                 \\\n\t{                                                            \\\n\t\tp[0] = m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2]; \\\n\t\tp[1] = m[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2]; \\\n\t\tp[2] = m[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2]; \\\n\t}\n\n/*! matrix times vector\nv is a vec4f\n*/\n#define MAT_DOT_VEC_4X4(p, m, v)                                                  \\\n\t{                                                                             \\\n\t\tp[0] = m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2] + m[0][3] * v[3]; \\\n\t\tp[1] = m[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2] + m[1][3] * v[3]; \\\n\t\tp[2] = m[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2] + m[2][3] * v[3]; \\\n\t\tp[3] = m[3][0] * v[0] + m[3][1] * v[1] + m[3][2] * v[2] + m[3][3] * v[3]; \\\n\t}\n\n/*! matrix times vector\nv is a vec3f\nand m is a mat4f<br>\nLast column is added as the position\n*/\n#define MAT_DOT_VEC_3X4(p, m, v)                                           \\\n\t{                                                                      \\\n\t\tp[0] = m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2] + m[0][3]; \\\n\t\tp[1] = m[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2] + m[1][3]; \\\n\t\tp[2] = m[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2] + m[2][3]; \\\n\t}\n\n/*! vector transpose times matrix */\n/*! p[j] = v[0]*m[0][j] + v[1]*m[1][j] + v[2]*m[2][j]; */\n#define VEC_DOT_MAT_3X3(p, v, m)                                 \\\n\t{                                                            \\\n\t\tp[0] = v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0]; \\\n\t\tp[1] = v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1]; \\\n\t\tp[2] = v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2]; \\\n\t}\n\n/*! affine matrix times vector */\n/** The matrix is assumed to be an affine matrix, with last two\n * entries representing a translation */\n#define MAT_DOT_VEC_2X3(p, m, v)                          \\\n\t{                                                     \\\n\t\tp[0] = m[0][0] * v[0] + m[0][1] * v[1] + m[0][2]; \\\n\t\tp[1] = m[1][0] * v[0] + m[1][1] * v[1] + m[1][2]; \\\n\t}\n\n//! Transform a plane\n#define MAT_TRANSFORM_PLANE_4X4(pout, m, plane)                                         \\\n\t{                                                                                   \\\n\t\tpout[0] = m[0][0] * plane[0] + m[0][1] * plane[1] + m[0][2] * plane[2];         \\\n\t\tpout[1] = m[1][0] * plane[0] + m[1][1] * plane[1] + m[1][2] * plane[2];         \\\n\t\tpout[2] = m[2][0] * plane[0] + m[2][1] * plane[1] + m[2][2] * plane[2];         \\\n\t\tpout[3] = m[0][3] * pout[0] + m[1][3] * pout[1] + m[2][3] * pout[2] + plane[3]; \\\n\t}\n\n/** inverse transpose of matrix times vector\n *\n * This macro computes inverse transpose of matrix m,\n * and multiplies vector v into it, to yeild vector p\n *\n * DANGER !!! Do Not use this on normal vectors!!!\n * It will leave normals the wrong length !!!\n * See macro below for use on normals.\n */\n#define INV_TRANSP_MAT_DOT_VEC_2X2(p, m, v)                                 \\\n\t{                                                                       \\\n\t\tGREAL det;                                                          \\\n                                                                            \\\n\t\tdet = m[0][0] * m[1][1] - m[0][1] * m[1][0];                        \\\n\t\tp[0] = m[1][1] * v[0] - m[1][0] * v[1];                             \\\n\t\tp[1] = -m[0][1] * v[0] + m[0][0] * v[1];                            \\\n                                                                            \\\n\t\t/* if matrix not singular, and not orthonormal, then renormalize */ \\\n\t\tif ((det != 1.0f) && (det != 0.0f))                                 \\\n\t\t{                                                                   \\\n\t\t\tdet = 1.0f / det;                                               \\\n\t\t\tp[0] *= det;                                                    \\\n\t\t\tp[1] *= det;                                                    \\\n\t\t}                                                                   \\\n\t}\n\n/** transform normal vector by inverse transpose of matrix\n * and then renormalize the vector\n *\n * This macro computes inverse transpose of matrix m,\n * and multiplies vector v into it, to yeild vector p\n * Vector p is then normalized.\n */\n#define NORM_XFORM_2X2(p, m, v)                                           \\\n\t{                                                                     \\\n\t\tGREAL len;                                                        \\\n                                                                          \\\n\t\t/* do nothing if off-diagonals are zero and diagonals are \t\\\n    * equal */      \\\n\t\tif ((m[0][1] != 0.0) || (m[1][0] != 0.0) || (m[0][0] != m[1][1])) \\\n\t\t{                                                                 \\\n\t\t\tp[0] = m[1][1] * v[0] - m[1][0] * v[1];                       \\\n\t\t\tp[1] = -m[0][1] * v[0] + m[0][0] * v[1];                      \\\n                                                                          \\\n\t\t\tlen = p[0] * p[0] + p[1] * p[1];                              \\\n\t\t\tGIM_INV_SQRT(len, len);                                       \\\n\t\t\tp[0] *= len;                                                  \\\n\t\t\tp[1] *= len;                                                  \\\n\t\t}                                                                 \\\n\t\telse                                                              \\\n\t\t{                                                                 \\\n\t\t\tVEC_COPY_2(p, v);                                             \\\n\t\t}                                                                 \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define OUTER_PRODUCT_2X2(m, v, t) \\\n\t{                              \\\n\t\tm[0][0] = v[0] * t[0];     \\\n\t\tm[0][1] = v[0] * t[1];     \\\n                                   \\\n\t\tm[1][0] = v[1] * t[0];     \\\n\t\tm[1][1] = v[1] * t[1];     \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define OUTER_PRODUCT_3X3(m, v, t) \\\n\t{                              \\\n\t\tm[0][0] = v[0] * t[0];     \\\n\t\tm[0][1] = v[0] * t[1];     \\\n\t\tm[0][2] = v[0] * t[2];     \\\n                                   \\\n\t\tm[1][0] = v[1] * t[0];     \\\n\t\tm[1][1] = v[1] * t[1];     \\\n\t\tm[1][2] = v[1] * t[2];     \\\n                                   \\\n\t\tm[2][0] = v[2] * t[0];     \\\n\t\tm[2][1] = v[2] * t[1];     \\\n\t\tm[2][2] = v[2] * t[2];     \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define OUTER_PRODUCT_4X4(m, v, t) \\\n\t{                              \\\n\t\tm[0][0] = v[0] * t[0];     \\\n\t\tm[0][1] = v[0] * t[1];     \\\n\t\tm[0][2] = v[0] * t[2];     \\\n\t\tm[0][3] = v[0] * t[3];     \\\n                                   \\\n\t\tm[1][0] = v[1] * t[0];     \\\n\t\tm[1][1] = v[1] * t[1];     \\\n\t\tm[1][2] = v[1] * t[2];     \\\n\t\tm[1][3] = v[1] * t[3];     \\\n                                   \\\n\t\tm[2][0] = v[2] * t[0];     \\\n\t\tm[2][1] = v[2] * t[1];     \\\n\t\tm[2][2] = v[2] * t[2];     \\\n\t\tm[2][3] = v[2] * t[3];     \\\n                                   \\\n\t\tm[3][0] = v[3] * t[0];     \\\n\t\tm[3][1] = v[3] * t[1];     \\\n\t\tm[3][2] = v[3] * t[2];     \\\n\t\tm[3][3] = v[3] * t[3];     \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define ACCUM_OUTER_PRODUCT_2X2(m, v, t) \\\n\t{                                    \\\n\t\tm[0][0] += v[0] * t[0];          \\\n\t\tm[0][1] += v[0] * t[1];          \\\n                                         \\\n\t\tm[1][0] += v[1] * t[0];          \\\n\t\tm[1][1] += v[1] * t[1];          \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define ACCUM_OUTER_PRODUCT_3X3(m, v, t) \\\n\t{                                    \\\n\t\tm[0][0] += v[0] * t[0];          \\\n\t\tm[0][1] += v[0] * t[1];          \\\n\t\tm[0][2] += v[0] * t[2];          \\\n                                         \\\n\t\tm[1][0] += v[1] * t[0];          \\\n\t\tm[1][1] += v[1] * t[1];          \\\n\t\tm[1][2] += v[1] * t[2];          \\\n                                         \\\n\t\tm[2][0] += v[2] * t[0];          \\\n\t\tm[2][1] += v[2] * t[1];          \\\n\t\tm[2][2] += v[2] * t[2];          \\\n\t}\n\n/** outer product of vector times vector transpose\n *\n * The outer product of vector v and vector transpose t yeilds\n * dyadic matrix m.\n */\n#define ACCUM_OUTER_PRODUCT_4X4(m, v, t) \\\n\t{                                    \\\n\t\tm[0][0] += v[0] * t[0];          \\\n\t\tm[0][1] += v[0] * t[1];          \\\n\t\tm[0][2] += v[0] * t[2];          \\\n\t\tm[0][3] += v[0] * t[3];          \\\n                                         \\\n\t\tm[1][0] += v[1] * t[0];          \\\n\t\tm[1][1] += v[1] * t[1];          \\\n\t\tm[1][2] += v[1] * t[2];          \\\n\t\tm[1][3] += v[1] * t[3];          \\\n                                         \\\n\t\tm[2][0] += v[2] * t[0];          \\\n\t\tm[2][1] += v[2] * t[1];          \\\n\t\tm[2][2] += v[2] * t[2];          \\\n\t\tm[2][3] += v[2] * t[3];          \\\n                                         \\\n\t\tm[3][0] += v[3] * t[0];          \\\n\t\tm[3][1] += v[3] * t[1];          \\\n\t\tm[3][2] += v[3] * t[2];          \\\n\t\tm[3][3] += v[3] * t[3];          \\\n\t}\n\n/** determinant of matrix\n *\n * Computes determinant of matrix m, returning d\n */\n#define DETERMINANT_2X2(d, m)                      \\\n\t{                                              \\\n\t\td = m[0][0] * m[1][1] - m[0][1] * m[1][0]; \\\n\t}\n\n/** determinant of matrix\n *\n * Computes determinant of matrix m, returning d\n */\n#define DETERMINANT_3X3(d, m)                                   \\\n\t{                                                           \\\n\t\td = m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]);  \\\n\t\td -= m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]); \\\n\t\td += m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]); \\\n\t}\n\n/** i,j,th cofactor of a 4x4 matrix\n *\n */\n#define COFACTOR_4X4_IJ(fac, m, i, j)                                                                                           \\\n\t{                                                                                                                           \\\n\t\tGUINT __ii[4], __jj[4], __k;                                                                                            \\\n                                                                                                                                \\\n\t\tfor (__k = 0; __k < i; __k++) __ii[__k] = __k;                                                                          \\\n\t\tfor (__k = i; __k < 3; __k++) __ii[__k] = __k + 1;                                                                      \\\n\t\tfor (__k = 0; __k < j; __k++) __jj[__k] = __k;                                                                          \\\n\t\tfor (__k = j; __k < 3; __k++) __jj[__k] = __k + 1;                                                                      \\\n                                                                                                                                \\\n\t\t(fac) = m[__ii[0]][__jj[0]] * (m[__ii[1]][__jj[1]] * m[__ii[2]][__jj[2]] - m[__ii[1]][__jj[2]] * m[__ii[2]][__jj[1]]);  \\\n\t\t(fac) -= m[__ii[0]][__jj[1]] * (m[__ii[1]][__jj[0]] * m[__ii[2]][__jj[2]] - m[__ii[1]][__jj[2]] * m[__ii[2]][__jj[0]]); \\\n\t\t(fac) += m[__ii[0]][__jj[2]] * (m[__ii[1]][__jj[0]] * m[__ii[2]][__jj[1]] - m[__ii[1]][__jj[1]] * m[__ii[2]][__jj[0]]); \\\n                                                                                                                                \\\n\t\t__k = i + j;                                                                                                            \\\n\t\tif (__k != (__k / 2) * 2)                                                                                               \\\n\t\t{                                                                                                                       \\\n\t\t\t(fac) = -(fac);                                                                                                     \\\n\t\t}                                                                                                                       \\\n\t}\n\n/** determinant of matrix\n *\n * Computes determinant of matrix m, returning d\n */\n#define DETERMINANT_4X4(d, m)            \\\n\t{                                    \\\n\t\tGREAL cofac;                     \\\n\t\tCOFACTOR_4X4_IJ(cofac, m, 0, 0); \\\n\t\td = m[0][0] * cofac;             \\\n\t\tCOFACTOR_4X4_IJ(cofac, m, 0, 1); \\\n\t\td += m[0][1] * cofac;            \\\n\t\tCOFACTOR_4X4_IJ(cofac, m, 0, 2); \\\n\t\td += m[0][2] * cofac;            \\\n\t\tCOFACTOR_4X4_IJ(cofac, m, 0, 3); \\\n\t\td += m[0][3] * cofac;            \\\n\t}\n\n/** cofactor of matrix\n *\n * Computes cofactor of matrix m, returning a\n */\n#define COFACTOR_2X2(a, m)    \\\n\t{                         \\\n\t\ta[0][0] = (m)[1][1];  \\\n\t\ta[0][1] = -(m)[1][0]; \\\n\t\ta[1][0] = -(m)[0][1]; \\\n\t\ta[1][1] = (m)[0][0];  \\\n\t}\n\n/** cofactor of matrix\n *\n * Computes cofactor of matrix m, returning a\n */\n#define COFACTOR_3X3(a, m)                                  \\\n\t{                                                       \\\n\t\ta[0][0] = m[1][1] * m[2][2] - m[1][2] * m[2][1];    \\\n\t\ta[0][1] = -(m[1][0] * m[2][2] - m[2][0] * m[1][2]); \\\n\t\ta[0][2] = m[1][0] * m[2][1] - m[1][1] * m[2][0];    \\\n\t\ta[1][0] = -(m[0][1] * m[2][2] - m[0][2] * m[2][1]); \\\n\t\ta[1][1] = m[0][0] * m[2][2] - m[0][2] * m[2][0];    \\\n\t\ta[1][2] = -(m[0][0] * m[2][1] - m[0][1] * m[2][0]); \\\n\t\ta[2][0] = m[0][1] * m[1][2] - m[0][2] * m[1][1];    \\\n\t\ta[2][1] = -(m[0][0] * m[1][2] - m[0][2] * m[1][0]); \\\n   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);            \\\n\t}\n\n/** cofactor of matrix\n *\n * Computes cofactor of matrix m, returning a\n */\n#define COFACTOR_4X4(a, m)                         \\\n\t{                                              \\\n\t\tint i, j;                                  \\\n                                                   \\\n\t\tfor (i = 0; i < 4; i++)                    \\\n\t\t{                                          \\\n\t\t\tfor (j = 0; j < 4; j++)                \\\n\t\t\t{                                      \\\n\t\t\t\tCOFACTOR_4X4_IJ(a[i][j], m, i, j); \\\n\t\t\t}                                      \\\n\t\t}                                          \\\n\t}\n\n/** adjoint of matrix\n *\n * Computes adjoint of matrix m, returning a\n * (Note that adjoint is just the transpose of the cofactor matrix)\n */\n#define ADJOINT_2X2(a, m)     \\\n\t{                         \\\n\t\ta[0][0] = (m)[1][1];  \\\n\t\ta[1][0] = -(m)[1][0]; \\\n\t\ta[0][1] = -(m)[0][1]; \\\n\t\ta[1][1] = (m)[0][0];  \\\n\t}\n\n/** adjoint of matrix\n *\n * Computes adjoint of matrix m, returning a\n * (Note that adjoint is just the transpose of the cofactor matrix)\n */\n#define ADJOINT_3X3(a, m)                                   \\\n\t{                                                       \\\n\t\ta[0][0] = m[1][1] * m[2][2] - m[1][2] * m[2][1];    \\\n\t\ta[1][0] = -(m[1][0] * m[2][2] - m[2][0] * m[1][2]); \\\n\t\ta[2][0] = m[1][0] * m[2][1] - m[1][1] * m[2][0];    \\\n\t\ta[0][1] = -(m[0][1] * m[2][2] - m[0][2] * m[2][1]); \\\n\t\ta[1][1] = m[0][0] * m[2][2] - m[0][2] * m[2][0];    \\\n\t\ta[2][1] = -(m[0][0] * m[2][1] - m[0][1] * m[2][0]); \\\n\t\ta[0][2] = m[0][1] * m[1][2] - m[0][2] * m[1][1];    \\\n\t\ta[1][2] = -(m[0][0] * m[1][2] - m[0][2] * m[1][0]); \\\n   a[2][2] = m[0][0]*m[1][1] - m[0][1]*m[1][0]);            \\\n\t}\n\n/** adjoint of matrix\n *\n * Computes adjoint of matrix m, returning a\n * (Note that adjoint is just the transpose of the cofactor matrix)\n */\n#define ADJOINT_4X4(a, m)                                  \\\n\t{                                                      \\\n\t\tchar _i_, _j_;                                     \\\n                                                           \\\n\t\tfor (_i_ = 0; _i_ < 4; _i_++)                      \\\n\t\t{                                                  \\\n\t\t\tfor (_j_ = 0; _j_ < 4; _j_++)                  \\\n\t\t\t{                                              \\\n\t\t\t\tCOFACTOR_4X4_IJ(a[_j_][_i_], m, _i_, _j_); \\\n\t\t\t}                                              \\\n\t\t}                                                  \\\n\t}\n\n/** compute adjoint of matrix and scale\n *\n * Computes adjoint of matrix m, scales it by s, returning a\n */\n#define SCALE_ADJOINT_2X2(a, s, m) \\\n\t{                              \\\n\t\ta[0][0] = (s)*m[1][1];     \\\n\t\ta[1][0] = -(s)*m[1][0];    \\\n\t\ta[0][1] = -(s)*m[0][1];    \\\n\t\ta[1][1] = (s)*m[0][0];     \\\n\t}\n\n/** compute adjoint of matrix and scale\n *\n * Computes adjoint of matrix m, scales it by s, returning a\n */\n#define SCALE_ADJOINT_3X3(a, s, m)                               \\\n\t{                                                            \\\n\t\ta[0][0] = (s) * (m[1][1] * m[2][2] - m[1][2] * m[2][1]); \\\n\t\ta[1][0] = (s) * (m[1][2] * m[2][0] - m[1][0] * m[2][2]); \\\n\t\ta[2][0] = (s) * (m[1][0] * m[2][1] - m[1][1] * m[2][0]); \\\n                                                                 \\\n\t\ta[0][1] = (s) * (m[0][2] * m[2][1] - m[0][1] * m[2][2]); \\\n\t\ta[1][1] = (s) * (m[0][0] * m[2][2] - m[0][2] * m[2][0]); \\\n\t\ta[2][1] = (s) * (m[0][1] * m[2][0] - m[0][0] * m[2][1]); \\\n                                                                 \\\n\t\ta[0][2] = (s) * (m[0][1] * m[1][2] - m[0][2] * m[1][1]); \\\n\t\ta[1][2] = (s) * (m[0][2] * m[1][0] - m[0][0] * m[1][2]); \\\n\t\ta[2][2] = (s) * (m[0][0] * m[1][1] - m[0][1] * m[1][0]); \\\n\t}\n\n/** compute adjoint of matrix and scale\n *\n * Computes adjoint of matrix m, scales it by s, returning a\n */\n#define SCALE_ADJOINT_4X4(a, s, m)                         \\\n\t{                                                      \\\n\t\tchar _i_, _j_;                                     \\\n\t\tfor (_i_ = 0; _i_ < 4; _i_++)                      \\\n\t\t{                                                  \\\n\t\t\tfor (_j_ = 0; _j_ < 4; _j_++)                  \\\n\t\t\t{                                              \\\n\t\t\t\tCOFACTOR_4X4_IJ(a[_j_][_i_], m, _i_, _j_); \\\n\t\t\t\ta[_j_][_i_] *= s;                          \\\n\t\t\t}                                              \\\n\t\t}                                                  \\\n\t}\n\n/** inverse of matrix\n *\n * Compute inverse of matrix a, returning determinant m and\n * inverse b\n */\n#define INVERT_2X2(b, det, a)           \\\n\t{                                   \\\n\t\tGREAL _tmp_;                    \\\n\t\tDETERMINANT_2X2(det, a);        \\\n\t\t_tmp_ = 1.0 / (det);            \\\n\t\tSCALE_ADJOINT_2X2(b, _tmp_, a); \\\n\t}\n\n/** inverse of matrix\n *\n * Compute inverse of matrix a, returning determinant m and\n * inverse b\n */\n#define INVERT_3X3(b, det, a)           \\\n\t{                                   \\\n\t\tGREAL _tmp_;                    \\\n\t\tDETERMINANT_3X3(det, a);        \\\n\t\t_tmp_ = 1.0 / (det);            \\\n\t\tSCALE_ADJOINT_3X3(b, _tmp_, a); \\\n\t}\n\n/** inverse of matrix\n *\n * Compute inverse of matrix a, returning determinant m and\n * inverse b\n */\n#define INVERT_4X4(b, det, a)           \\\n\t{                                   \\\n\t\tGREAL _tmp_;                    \\\n\t\tDETERMINANT_4X4(det, a);        \\\n\t\t_tmp_ = 1.0 / (det);            \\\n\t\tSCALE_ADJOINT_4X4(b, _tmp_, a); \\\n\t}\n\n//! Get the triple(3) row of a transform matrix\n#define MAT_GET_ROW(mat, vec3, rowindex) \\\n\t{                                    \\\n\t\tvec3[0] = mat[rowindex][0];      \\\n\t\tvec3[1] = mat[rowindex][1];      \\\n\t\tvec3[2] = mat[rowindex][2];      \\\n\t}\n\n//! Get the tuple(2) row of a transform matrix\n#define MAT_GET_ROW2(mat, vec2, rowindex) \\\n\t{                                     \\\n\t\tvec2[0] = mat[rowindex][0];       \\\n\t\tvec2[1] = mat[rowindex][1];       \\\n\t}\n\n//! Get the quad (4) row of a transform matrix\n#define MAT_GET_ROW4(mat, vec4, rowindex) \\\n\t{                                     \\\n\t\tvec4[0] = mat[rowindex][0];       \\\n\t\tvec4[1] = mat[rowindex][1];       \\\n\t\tvec4[2] = mat[rowindex][2];       \\\n\t\tvec4[3] = mat[rowindex][3];       \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_GET_COL(mat, vec3, colindex) \\\n\t{                                    \\\n\t\tvec3[0] = mat[0][colindex];      \\\n\t\tvec3[1] = mat[1][colindex];      \\\n\t\tvec3[2] = mat[2][colindex];      \\\n\t}\n\n//! Get the tuple(2) col of a transform matrix\n#define MAT_GET_COL2(mat, vec2, colindex) \\\n\t{                                     \\\n\t\tvec2[0] = mat[0][colindex];       \\\n\t\tvec2[1] = mat[1][colindex];       \\\n\t}\n\n//! Get the quad (4) col of a transform matrix\n#define MAT_GET_COL4(mat, vec4, colindex) \\\n\t{                                     \\\n\t\tvec4[0] = mat[0][colindex];       \\\n\t\tvec4[1] = mat[1][colindex];       \\\n\t\tvec4[2] = mat[2][colindex];       \\\n\t\tvec4[3] = mat[3][colindex];       \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_GET_X(mat, vec3)       \\\n\t{                              \\\n\t\tMAT_GET_COL(mat, vec3, 0); \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_GET_Y(mat, vec3)       \\\n\t{                              \\\n\t\tMAT_GET_COL(mat, vec3, 1); \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_GET_Z(mat, vec3)       \\\n\t{                              \\\n\t\tMAT_GET_COL(mat, vec3, 2); \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_SET_X(mat, vec3) \\\n\t{                        \\\n\t\tmat[0][0] = vec3[0]; \\\n\t\tmat[1][0] = vec3[1]; \\\n\t\tmat[2][0] = vec3[2]; \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_SET_Y(mat, vec3) \\\n\t{                        \\\n\t\tmat[0][1] = vec3[0]; \\\n\t\tmat[1][1] = vec3[1]; \\\n\t\tmat[2][1] = vec3[2]; \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_SET_Z(mat, vec3) \\\n\t{                        \\\n\t\tmat[0][2] = vec3[0]; \\\n\t\tmat[1][2] = vec3[1]; \\\n\t\tmat[2][2] = vec3[2]; \\\n\t}\n\n//! Get the triple(3) col of a transform matrix\n#define MAT_GET_TRANSLATION(mat, vec3) \\\n\t{                                  \\\n\t\tvec3[0] = mat[0][3];           \\\n\t\tvec3[1] = mat[1][3];           \\\n\t\tvec3[2] = mat[2][3];           \\\n\t}\n\n//! Set the triple(3) col of a transform matrix\n#define MAT_SET_TRANSLATION(mat, vec3) \\\n\t{                                  \\\n\t\tmat[0][3] = vec3[0];           \\\n\t\tmat[1][3] = vec3[1];           \\\n\t\tmat[2][3] = vec3[2];           \\\n\t}\n\n//! Returns the dot product between a vec3f and the row of a matrix\n#define MAT_DOT_ROW(mat, vec3, rowindex) (vec3[0] * mat[rowindex][0] + vec3[1] * mat[rowindex][1] + vec3[2] * mat[rowindex][2])\n\n//! Returns the dot product between a vec2f and the row of a matrix\n#define MAT_DOT_ROW2(mat, vec2, rowindex) (vec2[0] * mat[rowindex][0] + vec2[1] * mat[rowindex][1])\n\n//! Returns the dot product between a vec4f and the row of a matrix\n#define MAT_DOT_ROW4(mat, vec4, rowindex) (vec4[0] * mat[rowindex][0] + vec4[1] * mat[rowindex][1] + vec4[2] * mat[rowindex][2] + vec4[3] * mat[rowindex][3])\n\n//! Returns the dot product between a vec3f and the col of a matrix\n#define MAT_DOT_COL(mat, vec3, colindex) (vec3[0] * mat[0][colindex] + vec3[1] * mat[1][colindex] + vec3[2] * mat[2][colindex])\n\n//! Returns the dot product between a vec2f and the col of a matrix\n#define MAT_DOT_COL2(mat, vec2, colindex) (vec2[0] * mat[0][colindex] + vec2[1] * mat[1][colindex])\n\n//! Returns the dot product between a vec4f and the col of a matrix\n#define MAT_DOT_COL4(mat, vec4, colindex) (vec4[0] * mat[0][colindex] + vec4[1] * mat[1][colindex] + vec4[2] * mat[2][colindex] + vec4[3] * mat[3][colindex])\n\n/*!Transpose matrix times vector\nv is a vec3f\nand m is a mat4f<br>\n*/\n#define INV_MAT_DOT_VEC_3X3(p, m, v) \\\n\t{                                \\\n\t\tp[0] = MAT_DOT_COL(m, v, 0); \\\n\t\tp[1] = MAT_DOT_COL(m, v, 1); \\\n\t\tp[2] = MAT_DOT_COL(m, v, 2); \\\n\t}\n\n#endif  // GIM_VECTOR_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_math.h",
    "content": "#ifndef GIM_MATH_H_INCLUDED\n#define GIM_MATH_H_INCLUDED\n/*! \\file gim_math.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"LinearMath/btScalar.h\"\n\n#define GREAL btScalar\n#define GREAL2 double\n#define GINT int\n#define GUINT unsigned int\n#define GSHORT short\n#define GUSHORT unsigned short\n#define GINT64 long long\n#define GUINT64 unsigned long long\n\n#define G_PI 3.14159265358979f\n#define G_HALF_PI 1.5707963f\n//267948966\n#define G_TWO_PI 6.28318530f\n//71795864\n#define G_ROOT3 1.73205f\n#define G_ROOT2 1.41421f\n#define G_UINT_INFINITY 0xffffffff  //!< A very very high value\n#define G_REAL_INFINITY FLT_MAX\n#define G_SIGN_BITMASK 0x80000000\n#define G_EPSILON SIMD_EPSILON\n\nenum GIM_SCALAR_TYPES\n{\n\tG_STYPE_REAL = 0,\n\tG_STYPE_REAL2,\n\tG_STYPE_SHORT,\n\tG_STYPE_USHORT,\n\tG_STYPE_INT,\n\tG_STYPE_UINT,\n\tG_STYPE_INT64,\n\tG_STYPE_UINT64\n};\n\n#define G_DEGTORAD(X) ((X)*3.1415926f / 180.0f)\n#define G_RADTODEG(X) ((X)*180.0f / 3.1415926f)\n\n//! Integer representation of a floating-point value.\n#define GIM_IR(x) ((GUINT&)(x))\n\n//! Signed integer representation of a floating-point value.\n#define GIM_SIR(x) ((GINT&)(x))\n\n//! Absolute integer representation of a floating-point value\n#define GIM_AIR(x) (GIM_IR(x) & 0x7fffffff)\n\n//! Floating-point representation of an integer value.\n#define GIM_FR(x) ((GREAL&)(x))\n\n#define GIM_MAX(a, b) (a < b ? b : a)\n#define GIM_MIN(a, b) (a > b ? b : a)\n\n#define GIM_MAX3(a, b, c) GIM_MAX(a, GIM_MAX(b, c))\n#define GIM_MIN3(a, b, c) GIM_MIN(a, GIM_MIN(b, c))\n\n#define GIM_IS_ZERO(value) (value < G_EPSILON && value > -G_EPSILON)\n\n#define GIM_IS_NEGATIVE(value) (value <= -G_EPSILON)\n\n#define GIM_IS_POSISITVE(value) (value >= G_EPSILON)\n\n#define GIM_NEAR_EQUAL(v1, v2) GIM_IS_ZERO((v1 - v2))\n\n///returns a clamped number\n#define GIM_CLAMP(number, minval, maxval) (number < minval ? minval : (number > maxval ? maxval : number))\n\n#define GIM_GREATER(x, y) btFabs(x) > (y)\n\n///Swap numbers\n#define GIM_SWAP_NUMBERS(a, b) \\\n\t{                          \\\n\t\ta = a + b;             \\\n\t\tb = a - b;             \\\n\t\ta = a - b;             \\\n\t}\n\n#define GIM_INV_SQRT(va, isva)                         \\\n\t{                                                  \\\n\t\tif (va <= 0.0000001f)                          \\\n\t\t{                                              \\\n\t\t\tisva = G_REAL_INFINITY;                    \\\n\t\t}                                              \\\n\t\telse                                           \\\n\t\t{                                              \\\n\t\t\tGREAL _x = va * 0.5f;                      \\\n\t\t\tGUINT _y = 0x5f3759df - (GIM_IR(va) >> 1); \\\n\t\t\tisva = GIM_FR(_y);                         \\\n\t\t\tisva = isva * (1.5f - (_x * isva * isva)); \\\n\t\t}                                              \\\n\t}\n\n#define GIM_SQRT(va, sva)      \\\n\t{                          \\\n\t\tGIM_INV_SQRT(va, sva); \\\n\t\tsva = 1.0f / sva;      \\\n\t}\n\n//! Computes 1.0f / sqrtf(x). Comes from Quake3. See http://www.magic-software.com/3DGEDInvSqrt.html\ninline GREAL gim_inv_sqrt(GREAL f)\n{\n\tGREAL r;\n\tGIM_INV_SQRT(f, r);\n\treturn r;\n}\n\ninline GREAL gim_sqrt(GREAL f)\n{\n\tGREAL r;\n\tGIM_SQRT(f, r);\n\treturn r;\n}\n\n#endif  // GIM_MATH_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_memory.h",
    "content": "#ifndef GIM_MEMORY_H_INCLUDED\n#define GIM_MEMORY_H_INCLUDED\n/*! \\file gim_memory.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_math.h\"\n#include <string.h>\n\n#ifdef PREFETCH\n#include <xmmintrin.h>  // for prefetch\n#define pfval 64\n#define pfval2 128\n//! Prefetch 64\n#define pf(_x, _i) _mm_prefetch((void *)(_x + _i + pfval), 0)\n//! Prefetch 128\n#define pf2(_x, _i) _mm_prefetch((void *)(_x + _i + pfval2), 0)\n#else\n//! Prefetch 64\n#define pf(_x, _i)\n//! Prefetch 128\n#define pf2(_x, _i)\n#endif\n\n///Functions for manip packed arrays of numbers\n#define GIM_COPY_ARRAYS(dest_array, source_array, element_count) \\\n\t{                                                            \\\n\t\tfor (GUINT _i_ = 0; _i_ < element_count; ++_i_)          \\\n\t\t{                                                        \\\n\t\t\tdest_array[_i_] = source_array[_i_];                 \\\n\t\t}                                                        \\\n\t}\n\n#define GIM_COPY_ARRAYS_1(dest_array, source_array, element_count, copy_macro) \\\n\t{                                                                          \\\n\t\tfor (GUINT _i_ = 0; _i_ < element_count; ++_i_)                        \\\n\t\t{                                                                      \\\n\t\t\tcopy_macro(dest_array[_i_], source_array[_i_]);                    \\\n\t\t}                                                                      \\\n\t}\n\n#define GIM_ZERO_ARRAY(array, element_count)            \\\n\t{                                                   \\\n\t\tfor (GUINT _i_ = 0; _i_ < element_count; ++_i_) \\\n\t\t{                                               \\\n\t\t\tarray[_i_] = 0;                             \\\n\t\t}                                               \\\n\t}\n\n#define GIM_CONSTANT_ARRAY(array, element_count, constant) \\\n\t{                                                      \\\n\t\tfor (GUINT _i_ = 0; _i_ < element_count; ++_i_)    \\\n\t\t{                                                  \\\n\t\t\tarray[_i_] = constant;                         \\\n\t\t}                                                  \\\n\t}\n\n///Function prototypes to allocate and free memory.\ntypedef void *gim_alloc_function(size_t size);\ntypedef void *gim_alloca_function(size_t size);  //Allocs on the heap\ntypedef void *gim_realloc_function(void *ptr, size_t oldsize, size_t newsize);\ntypedef void gim_free_function(void *ptr);\n\n///Memory Function Handlers\n///set new memory management functions. if fn is 0, the default handlers are used.\nvoid gim_set_alloc_handler(gim_alloc_function *fn);\nvoid gim_set_alloca_handler(gim_alloca_function *fn);\nvoid gim_set_realloc_handler(gim_realloc_function *fn);\nvoid gim_set_free_handler(gim_free_function *fn);\n\n///get current memory management functions.\ngim_alloc_function *gim_get_alloc_handler(void);\ngim_alloca_function *gim_get_alloca_handler(void);\ngim_realloc_function *gim_get_realloc_handler(void);\ngim_free_function *gim_get_free_handler(void);\n\n///Standar Memory functions\nvoid *gim_alloc(size_t size);\nvoid *gim_alloca(size_t size);\nvoid *gim_realloc(void *ptr, size_t oldsize, size_t newsize);\nvoid gim_free(void *ptr);\n\n#if defined(_WIN32) && !defined(__MINGW32__) && !defined(__CYGWIN__)\n#define GIM_SIMD_MEMORY 1\n#endif\n\n//! SIMD POINTER INTEGER\n#define SIMD_T GUINT64\n//! SIMD INTEGER SIZE\n#define SIMD_T_SIZE sizeof(SIMD_T)\n\ninline void gim_simd_memcpy(void *dst, const void *src, size_t copysize)\n{\n#ifdef GIM_SIMD_MEMORY\n\t/*\n//'long long int' is incompatible with visual studio 6...\n    //copy words\n    SIMD_T * ui_src_ptr = (SIMD_T *)src;\n    SIMD_T * ui_dst_ptr = (SIMD_T *)dst;\n    while(copysize>=SIMD_T_SIZE)\n    {\n        *(ui_dst_ptr++) = *(ui_src_ptr++);\n        copysize-=SIMD_T_SIZE;\n    }\n    if(copysize==0) return;\n*/\n\n\tchar *c_src_ptr = (char *)src;\n\tchar *c_dst_ptr = (char *)dst;\n\twhile (copysize > 0)\n\t{\n\t\t*(c_dst_ptr++) = *(c_src_ptr++);\n\t\tcopysize--;\n\t}\n\treturn;\n#else\n\tmemcpy(dst, src, copysize);\n#endif\n}\n\ntemplate <class T>\ninline void gim_swap_elements(T *_array, size_t _i, size_t _j)\n{\n\tT _e_tmp_ = _array[_i];\n\t_array[_i] = _array[_j];\n\t_array[_j] = _e_tmp_;\n}\n\ntemplate <class T>\ninline void gim_swap_elements_memcpy(T *_array, size_t _i, size_t _j)\n{\n\tchar _e_tmp_[sizeof(T)];\n\tgim_simd_memcpy(_e_tmp_, &_array[_i], sizeof(T));\n\tgim_simd_memcpy(&_array[_i], &_array[_j], sizeof(T));\n\tgim_simd_memcpy(&_array[_j], _e_tmp_, sizeof(T));\n}\n\ntemplate <int SIZE>\ninline void gim_swap_elements_ptr(char *_array, size_t _i, size_t _j)\n{\n\tchar _e_tmp_[SIZE];\n\t_i *= SIZE;\n\t_j *= SIZE;\n\tgim_simd_memcpy(_e_tmp_, _array + _i, SIZE);\n\tgim_simd_memcpy(_array + _i, _array + _j, SIZE);\n\tgim_simd_memcpy(_array + _j, _e_tmp_, SIZE);\n}\n\n#endif  // GIM_MEMORY_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_pair.h",
    "content": "#ifndef GIM_PAIR_H\n#define GIM_PAIR_H\n\n\n//! Overlapping pair\nstruct GIM_PAIR\n{\n        int m_index1;\n        int m_index2;\n        GIM_PAIR()\n        {\n        }\n\n        GIM_PAIR(const GIM_PAIR& p)\n        {\n                m_index1 = p.m_index1;\n                m_index2 = p.m_index2;\n        }\n\n        GIM_PAIR(int index1, int index2)\n        {\n                m_index1 = index1;\n                m_index2 = index2;\n        }\n};\n\n#endif //GIM_PAIR_H\n\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_radixsort.h",
    "content": "#ifndef GIM_RADIXSORT_H_INCLUDED\n#define GIM_RADIXSORT_H_INCLUDED\n/*! \\file gim_radixsort.h\n\\author Francisco Leon Najera.\nBased on the work of Michael Herf : \"fast floating-point radix sort\"\nAvaliable on http://www.stereopsis.com/radix.html\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_memory.h\"\n\n///Macros for sorting.\n//! Prototype for comparators\nclass less_comparator\n{\npublic:\n\ttemplate <class T, class Z>\n\tinline int operator()(const T& a, const Z& b)\n\t{\n\t\treturn (a < b ? -1 : (a > b ? 1 : 0));\n\t}\n};\n\n//! Prototype for comparators\nclass integer_comparator\n{\npublic:\n\ttemplate <class T>\n\tinline int operator()(const T& a, const T& b)\n\t{\n\t\treturn (int)(a - b);\n\t}\n};\n\n//!Prototype for getting the integer representation of an object\nclass uint_key_func\n{\npublic:\n\ttemplate <class T>\n\tinline GUINT operator()(const T& a)\n\t{\n\t\treturn (GUINT)a;\n\t}\n};\n\n//!Prototype for copying elements\nclass copy_elements_func\n{\npublic:\n\ttemplate <class T>\n\tinline void operator()(T& a, T& b)\n\t{\n\t\ta = b;\n\t}\n};\n\n//!Prototype for copying elements\nclass memcopy_elements_func\n{\npublic:\n\ttemplate <class T>\n\tinline void operator()(T& a, T& b)\n\t{\n\t\tgim_simd_memcpy(&a, &b, sizeof(T));\n\t}\n};\n\n//! @{\nstruct GIM_RSORT_TOKEN\n{\n\tGUINT m_key;\n\tGUINT m_value;\n\tGIM_RSORT_TOKEN()\n\t{\n\t}\n\tGIM_RSORT_TOKEN(const GIM_RSORT_TOKEN& rtoken)\n\t{\n\t\tm_key = rtoken.m_key;\n\t\tm_value = rtoken.m_value;\n\t}\n\n\tinline bool operator<(const GIM_RSORT_TOKEN& other) const\n\t{\n\t\treturn (m_key < other.m_key);\n\t}\n\n\tinline bool operator>(const GIM_RSORT_TOKEN& other) const\n\t{\n\t\treturn (m_key > other.m_key);\n\t}\n};\n\n//! Prototype for comparators\nclass GIM_RSORT_TOKEN_COMPARATOR\n{\npublic:\n\tinline int operator()(const GIM_RSORT_TOKEN& a, const GIM_RSORT_TOKEN& b)\n\t{\n\t\treturn (int)((a.m_key) - (b.m_key));\n\t}\n};\n\n#define kHist 2048\n// ---- utils for accessing 11-bit quantities\n#define D11_0(x) (x & 0x7FF)\n#define D11_1(x) (x >> 11 & 0x7FF)\n#define D11_2(x) (x >> 22)\n\n///Radix sort for unsigned integer keys\ninline void gim_radix_sort_rtokens(\n\tGIM_RSORT_TOKEN* array,\n\tGIM_RSORT_TOKEN* sorted, GUINT element_count)\n{\n\tGUINT i;\n\tGUINT b0[kHist * 3];\n\tGUINT* b1 = b0 + kHist;\n\tGUINT* b2 = b1 + kHist;\n\tfor (i = 0; i < kHist * 3; ++i)\n\t{\n\t\tb0[i] = 0;\n\t}\n\tGUINT fi;\n\tGUINT pos;\n\tfor (i = 0; i < element_count; ++i)\n\t{\n\t\tfi = array[i].m_key;\n\t\tb0[D11_0(fi)]++;\n\t\tb1[D11_1(fi)]++;\n\t\tb2[D11_2(fi)]++;\n\t}\n\t{\n\t\tGUINT sum0 = 0, sum1 = 0, sum2 = 0;\n\t\tGUINT tsum;\n\t\tfor (i = 0; i < kHist; ++i)\n\t\t{\n\t\t\ttsum = b0[i] + sum0;\n\t\t\tb0[i] = sum0 - 1;\n\t\t\tsum0 = tsum;\n\t\t\ttsum = b1[i] + sum1;\n\t\t\tb1[i] = sum1 - 1;\n\t\t\tsum1 = tsum;\n\t\t\ttsum = b2[i] + sum2;\n\t\t\tb2[i] = sum2 - 1;\n\t\t\tsum2 = tsum;\n\t\t}\n\t}\n\tfor (i = 0; i < element_count; ++i)\n\t{\n\t\tfi = array[i].m_key;\n\t\tpos = D11_0(fi);\n\t\tpos = ++b0[pos];\n\t\tsorted[pos].m_key = array[i].m_key;\n\t\tsorted[pos].m_value = array[i].m_value;\n\t}\n\tfor (i = 0; i < element_count; ++i)\n\t{\n\t\tfi = sorted[i].m_key;\n\t\tpos = D11_1(fi);\n\t\tpos = ++b1[pos];\n\t\tarray[pos].m_key = sorted[i].m_key;\n\t\tarray[pos].m_value = sorted[i].m_value;\n\t}\n\tfor (i = 0; i < element_count; ++i)\n\t{\n\t\tfi = array[i].m_key;\n\t\tpos = D11_2(fi);\n\t\tpos = ++b2[pos];\n\t\tsorted[pos].m_key = array[i].m_key;\n\t\tsorted[pos].m_value = array[i].m_value;\n\t}\n}\n\n/// Get the sorted tokens from an array. For generic use. Tokens are IRR_RSORT_TOKEN\n/*!\n*\\param array Array of elements to sort\n*\\param sorted_tokens Tokens of sorted elements\n*\\param element_count element count\n*\\param uintkey_macro Functor which retrieves the integer representation of an array element\n*/\ntemplate <typename T, class GETKEY_CLASS>\nvoid gim_radix_sort_array_tokens(\n\tT* array,\n\tGIM_RSORT_TOKEN* sorted_tokens,\n\tGUINT element_count, GETKEY_CLASS uintkey_macro)\n{\n\tGIM_RSORT_TOKEN* _unsorted = (GIM_RSORT_TOKEN*)gim_alloc(sizeof(GIM_RSORT_TOKEN) * element_count);\n\tfor (GUINT _i = 0; _i < element_count; ++_i)\n\t{\n\t\t_unsorted[_i].m_key = uintkey_macro(array[_i]);\n\t\t_unsorted[_i].m_value = _i;\n\t}\n\tgim_radix_sort_rtokens(_unsorted, sorted_tokens, element_count);\n\tgim_free(_unsorted);\n\tgim_free(_unsorted);\n}\n\n/// Sorts array in place. For generic use\n/*!\n\\param type Type of the array\n\\param array\n\\param element_count\n\\param get_uintkey_macro Macro for extract the Integer value of the element. Similar to SIMPLE_GET_UINTKEY\n\\param copy_elements_macro Macro for copy elements, similar to SIMPLE_COPY_ELEMENTS\n*/\ntemplate <typename T, class GETKEY_CLASS, class COPY_CLASS>\nvoid gim_radix_sort(\n\tT* array, GUINT element_count,\n\tGETKEY_CLASS get_uintkey_macro, COPY_CLASS copy_elements_macro)\n{\n\tGIM_RSORT_TOKEN* _sorted = (GIM_RSORT_TOKEN*)gim_alloc(sizeof(GIM_RSORT_TOKEN) * element_count);\n\tgim_radix_sort_array_tokens(array, _sorted, element_count, get_uintkey_macro);\n\tT* _original_array = (T*)gim_alloc(sizeof(T) * element_count);\n\tgim_simd_memcpy(_original_array, array, sizeof(T) * element_count);\n\tfor (GUINT _i = 0; _i < element_count; ++_i)\n\t{\n\t\tcopy_elements_macro(array[_i], _original_array[_sorted[_i].m_value]);\n\t}\n\tgim_free(_original_array);\n\tgim_free(_sorted);\n}\n\n//! Failsafe Iterative binary search,\n/*!\nIf the element is not found, it returns the nearest upper element position, may be the further position after the last element.\n\\param _array\n\\param _start_i the beginning of the array\n\\param _end_i the ending  index of the array\n\\param _search_key Value to find\n\\param _comp_macro macro for comparing elements\n\\param _found If true the value has found. Boolean\n\\param _result_index the index of the found element, or if not found then it will get the index of the  closest bigger value\n*/\ntemplate <class T, typename KEYCLASS, typename COMP_CLASS>\nbool gim_binary_search_ex(\n\tconst T* _array, GUINT _start_i,\n\tGUINT _end_i, GUINT& _result_index,\n\tconst KEYCLASS& _search_key,\n\tCOMP_CLASS _comp_macro)\n{\n\tGUINT _k;\n\tint _comp_result;\n\tGUINT _i = _start_i;\n\tGUINT _j = _end_i + 1;\n\twhile (_i < _j)\n\t{\n\t\t_k = (_j + _i - 1) / 2;\n\t\t_comp_result = _comp_macro(_array[_k], _search_key);\n\t\tif (_comp_result == 0)\n\t\t{\n\t\t\t_result_index = _k;\n\t\t\treturn true;\n\t\t}\n\t\telse if (_comp_result < 0)\n\t\t{\n\t\t\t_i = _k + 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_j = _k;\n\t\t}\n\t}\n\t_result_index = _i;\n\treturn false;\n}\n\n//! Failsafe Iterative binary search,Template version\n/*!\nIf the element is not found, it returns the nearest upper element position, may be the further position after the last element.\n\\param _array\n\\param _start_i the beginning of the array\n\\param _end_i the ending  index of the array\n\\param _search_key Value to find\n\\param _result_index the index of the found element, or if not found then it will get the index of the  closest bigger value\n\\return true if found, else false\n*/\ntemplate <class T>\nbool gim_binary_search(\n\tconst T* _array, GUINT _start_i,\n\tGUINT _end_i, const T& _search_key,\n\tGUINT& _result_index)\n{\n\tGUINT _i = _start_i;\n\tGUINT _j = _end_i + 1;\n\tGUINT _k;\n\twhile (_i < _j)\n\t{\n\t\t_k = (_j + _i - 1) / 2;\n\t\tif (_array[_k] == _search_key)\n\t\t{\n\t\t\t_result_index = _k;\n\t\t\treturn true;\n\t\t}\n\t\telse if (_array[_k] < _search_key)\n\t\t{\n\t\t\t_i = _k + 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_j = _k;\n\t\t}\n\t}\n\t_result_index = _i;\n\treturn false;\n}\n\n///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/\ntemplate <typename T, typename COMP_CLASS>\nvoid gim_down_heap(T* pArr, GUINT k, GUINT n, COMP_CLASS CompareFunc)\n{\n\t/*  PRE: a[k+1..N] is a heap */\n\t/* POST:  a[k..N]  is a heap */\n\n\tT temp = pArr[k - 1];\n\t/* k has child(s) */\n\twhile (k <= n / 2)\n\t{\n\t\tint child = 2 * k;\n\n\t\tif ((child < (int)n) && CompareFunc(pArr[child - 1], pArr[child]) < 0)\n\t\t{\n\t\t\tchild++;\n\t\t}\n\t\t/* pick larger child */\n\t\tif (CompareFunc(temp, pArr[child - 1]) < 0)\n\t\t{\n\t\t\t/* move child up */\n\t\t\tpArr[k - 1] = pArr[child - 1];\n\t\t\tk = child;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\tpArr[k - 1] = temp;\n} /*downHeap*/\n\ntemplate <typename T, typename COMP_CLASS>\nvoid gim_heap_sort(T* pArr, GUINT element_count, COMP_CLASS CompareFunc)\n{\n\t/* sort a[0..N-1],  N.B. 0 to N-1 */\n\tGUINT k;\n\tGUINT n = element_count;\n\tfor (k = n / 2; k > 0; k--)\n\t{\n\t\tgim_down_heap(pArr, k, n, CompareFunc);\n\t}\n\n\t/* a[1..N] is now a heap */\n\twhile (n >= 2)\n\t{\n\t\tgim_swap_elements(pArr, 0, n - 1); /* largest of a[0..n-1] */\n\t\t--n;\n\t\t/* restore a[1..i-1] heap */\n\t\tgim_down_heap(pArr, 1, n, CompareFunc);\n\t}\n}\n\n#endif  // GIM_RADIXSORT_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/Gimpact/gim_tri_collision.h",
    "content": "#ifndef GIM_TRI_COLLISION_H_INCLUDED\n#define GIM_TRI_COLLISION_H_INCLUDED\n\n/*! \\file gim_tri_collision.h\n\\author Francisco Leon Najera\n*/\n/*\n-----------------------------------------------------------------------------\nThis source file is part of GIMPACT Library.\n\nFor the latest info, see http://gimpact.sourceforge.net/\n\nCopyright (c) 2006 Francisco Leon Najera. C.C. 80087371.\nemail: projectileman@yahoo.com\n\n This library is free software; you can redistribute it and/or\n modify it under the terms of EITHER:\n   (1) The GNU Lesser General Public License as published by the Free\n       Software Foundation; either version 2.1 of the License, or (at\n       your option) any later version. The text of the GNU Lesser\n       General Public License is included with this library in the\n       file GIMPACT-LICENSE-LGPL.TXT.\n   (2) The BSD-style license that is included with this library in\n       the file GIMPACT-LICENSE-BSD.TXT.\n   (3) The zlib/libpng license that is included with this library in\n       the file GIMPACT-LICENSE-ZLIB.TXT.\n\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files\n GIMPACT-LICENSE-LGPL.TXT, GIMPACT-LICENSE-ZLIB.TXT and GIMPACT-LICENSE-BSD.TXT for more details.\n\n-----------------------------------------------------------------------------\n*/\n\n#include \"gim_box_collision.h\"\n#include \"gim_clip_polygon.h\"\n\n#ifndef MAX_TRI_CLIPPING\n#define MAX_TRI_CLIPPING 16\n#endif\n\n//! Structure for collision\nstruct GIM_TRIANGLE_CONTACT_DATA\n{\n\tGREAL m_penetration_depth;\n\tGUINT m_point_count;\n\tbtVector4 m_separating_normal;\n\tbtVector3 m_points[MAX_TRI_CLIPPING];\n\n\tSIMD_FORCE_INLINE void copy_from(const GIM_TRIANGLE_CONTACT_DATA &other)\n\t{\n\t\tm_penetration_depth = other.m_penetration_depth;\n\t\tm_separating_normal = other.m_separating_normal;\n\t\tm_point_count = other.m_point_count;\n\t\tGUINT i = m_point_count;\n\t\twhile (i--)\n\t\t{\n\t\t\tm_points[i] = other.m_points[i];\n\t\t}\n\t}\n\n\tGIM_TRIANGLE_CONTACT_DATA()\n\t{\n\t}\n\n\tGIM_TRIANGLE_CONTACT_DATA(const GIM_TRIANGLE_CONTACT_DATA &other)\n\t{\n\t\tcopy_from(other);\n\t}\n\n\t//! classify points that are closer\n\ttemplate <typename DISTANCE_FUNC, typename CLASS_PLANE>\n\tSIMD_FORCE_INLINE void mergepoints_generic(const CLASS_PLANE &plane,\n\t\t\t\t\t\t\t\t\t\t\t   GREAL margin, const btVector3 *points, GUINT point_count, DISTANCE_FUNC distance_func)\n\t{\n\t\tm_point_count = 0;\n\t\tm_penetration_depth = -1000.0f;\n\n\t\tGUINT point_indices[MAX_TRI_CLIPPING];\n\n\t\tGUINT _k;\n\n\t\tfor (_k = 0; _k < point_count; _k++)\n\t\t{\n\t\t\tGREAL _dist = -distance_func(plane, points[_k]) + margin;\n\n\t\t\tif (_dist >= 0.0f)\n\t\t\t{\n\t\t\t\tif (_dist > m_penetration_depth)\n\t\t\t\t{\n\t\t\t\t\tm_penetration_depth = _dist;\n\t\t\t\t\tpoint_indices[0] = _k;\n\t\t\t\t\tm_point_count = 1;\n\t\t\t\t}\n\t\t\t\telse if ((_dist + G_EPSILON) >= m_penetration_depth)\n\t\t\t\t{\n\t\t\t\t\tpoint_indices[m_point_count] = _k;\n\t\t\t\t\tm_point_count++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (_k = 0; _k < m_point_count; _k++)\n\t\t{\n\t\t\tm_points[_k] = points[point_indices[_k]];\n\t\t}\n\t}\n\n\t//! classify points that are closer\n\tSIMD_FORCE_INLINE void merge_points(const btVector4 &plane, GREAL margin,\n\t\t\t\t\t\t\t\t\t\tconst btVector3 *points, GUINT point_count)\n\t{\n\t\tm_separating_normal = plane;\n\t\tmergepoints_generic(plane, margin, points, point_count, DISTANCE_PLANE_3D_FUNC());\n\t}\n};\n\n//! Class for colliding triangles\nclass GIM_TRIANGLE\n{\npublic:\n\tbtScalar m_margin;\n\tbtVector3 m_vertices[3];\n\n\tGIM_TRIANGLE() : m_margin(0.1f)\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE GIM_AABB get_box() const\n\t{\n\t\treturn GIM_AABB(m_vertices[0], m_vertices[1], m_vertices[2], m_margin);\n\t}\n\n\tSIMD_FORCE_INLINE void get_normal(btVector3 &normal) const\n\t{\n\t\tTRIANGLE_NORMAL(m_vertices[0], m_vertices[1], m_vertices[2], normal);\n\t}\n\n\tSIMD_FORCE_INLINE void get_plane(btVector4 &plane) const\n\t{\n\t\tTRIANGLE_PLANE(m_vertices[0], m_vertices[1], m_vertices[2], plane);\n\t\t;\n\t}\n\n\tSIMD_FORCE_INLINE void apply_transform(const btTransform &trans)\n\t{\n\t\tm_vertices[0] = trans(m_vertices[0]);\n\t\tm_vertices[1] = trans(m_vertices[1]);\n\t\tm_vertices[2] = trans(m_vertices[2]);\n\t}\n\n\tSIMD_FORCE_INLINE void get_edge_plane(GUINT edge_index, const btVector3 &triangle_normal, btVector4 &plane) const\n\t{\n\t\tconst btVector3 &e0 = m_vertices[edge_index];\n\t\tconst btVector3 &e1 = m_vertices[(edge_index + 1) % 3];\n\t\tEDGE_PLANE(e0, e1, triangle_normal, plane);\n\t}\n\n\t//! Gets the relative transformation of this triangle\n\t/*!\n    The transformation is oriented to the triangle normal , and aligned to the 1st edge of this triangle. The position corresponds to vertice 0:\n    - triangle normal corresponds to Z axis.\n    - 1st normalized edge corresponds to X axis,\n\n    */\n\tSIMD_FORCE_INLINE void get_triangle_transform(btTransform &triangle_transform) const\n\t{\n\t\tbtMatrix3x3 &matrix = triangle_transform.getBasis();\n\n\t\tbtVector3 zaxis;\n\t\tget_normal(zaxis);\n\t\tMAT_SET_Z(matrix, zaxis);\n\n\t\tbtVector3 xaxis = m_vertices[1] - m_vertices[0];\n\t\tVEC_NORMALIZE(xaxis);\n\t\tMAT_SET_X(matrix, xaxis);\n\n\t\t//y axis\n\t\txaxis = zaxis.cross(xaxis);\n\t\tMAT_SET_Y(matrix, xaxis);\n\n\t\ttriangle_transform.setOrigin(m_vertices[0]);\n\t}\n\n\t//! Test triangles by finding separating axis\n\t/*!\n\t\\param other Triangle for collide\n\t\\param contact_data Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle\n\t*/\n\tbool collide_triangle_hard_test(\n\t\tconst GIM_TRIANGLE &other,\n\t\tGIM_TRIANGLE_CONTACT_DATA &contact_data) const;\n\n\t//! Test boxes before doing hard test\n\t/*!\n\t\\param other Triangle for collide\n\t\\param contact_data Structure for holding contact points, normal and penetration depth; The normal is pointing toward this triangle from the other triangle\n\t\\\n\t*/\n\tSIMD_FORCE_INLINE bool collide_triangle(\n\t\tconst GIM_TRIANGLE &other,\n\t\tGIM_TRIANGLE_CONTACT_DATA &contact_data) const\n\t{\n\t\t//test box collisioin\n\t\tGIM_AABB boxu(m_vertices[0], m_vertices[1], m_vertices[2], m_margin);\n\t\tGIM_AABB boxv(other.m_vertices[0], other.m_vertices[1], other.m_vertices[2], other.m_margin);\n\t\tif (!boxu.has_collision(boxv)) return false;\n\n\t\t//do hard test\n\t\treturn collide_triangle_hard_test(other, contact_data);\n\t}\n\n\t/*!\n\n\tSolve the System for u,v parameters:\n\n\tu*axe1[i1] + v*axe2[i1] = vecproj[i1]\n\tu*axe1[i2] + v*axe2[i2] = vecproj[i2]\n\n\tsustitute:\n\tv = (vecproj[i2] - u*axe1[i2])/axe2[i2]\n\n\tthen the first equation in terms of 'u':\n\n\t--> u*axe1[i1] + ((vecproj[i2] - u*axe1[i2])/axe2[i2])*axe2[i1] = vecproj[i1]\n\n\t--> u*axe1[i1] + vecproj[i2]*axe2[i1]/axe2[i2] - u*axe1[i2]*axe2[i1]/axe2[i2] = vecproj[i1]\n\n\t--> u*(axe1[i1]  - axe1[i2]*axe2[i1]/axe2[i2]) = vecproj[i1] - vecproj[i2]*axe2[i1]/axe2[i2]\n\n\t--> u*((axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1])/axe2[i2]) = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1])/axe2[i2]\n\n\t--> u*(axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1]) = vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]\n\n\t--> u = (vecproj[i1]*axe2[i2] - vecproj[i2]*axe2[i1]) /(axe1[i1]*axe2[i2]  - axe1[i2]*axe2[i1])\n\nif 0.0<= u+v <=1.0 then they are inside of triangle\n\n\t\\return false if the point is outside of triangle.This function  doesn't take the margin\n\t*/\n\tSIMD_FORCE_INLINE bool get_uv_parameters(\n\t\tconst btVector3 &point,\n\t\tconst btVector3 &tri_plane,\n\t\tGREAL &u, GREAL &v) const\n\t{\n\t\tbtVector3 _axe1 = m_vertices[1] - m_vertices[0];\n\t\tbtVector3 _axe2 = m_vertices[2] - m_vertices[0];\n\t\tbtVector3 _vecproj = point - m_vertices[0];\n\t\tGUINT _i1 = (tri_plane.closestAxis() + 1) % 3;\n\t\tGUINT _i2 = (_i1 + 1) % 3;\n\t\tif (btFabs(_axe2[_i2]) < G_EPSILON)\n\t\t{\n\t\t\tu = (_vecproj[_i2] * _axe2[_i1] - _vecproj[_i1] * _axe2[_i2]) / (_axe1[_i2] * _axe2[_i1] - _axe1[_i1] * _axe2[_i2]);\n\t\t\tv = (_vecproj[_i1] - u * _axe1[_i1]) / _axe2[_i1];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tu = (_vecproj[_i1] * _axe2[_i2] - _vecproj[_i2] * _axe2[_i1]) / (_axe1[_i1] * _axe2[_i2] - _axe1[_i2] * _axe2[_i1]);\n\t\t\tv = (_vecproj[_i2] - u * _axe1[_i2]) / _axe2[_i2];\n\t\t}\n\n\t\tif (u < -G_EPSILON)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\telse if (v < -G_EPSILON)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbtScalar sumuv;\n\t\t\tsumuv = u + v;\n\t\t\tif (sumuv < -G_EPSILON)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse if (sumuv - 1.0f > G_EPSILON)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t//! is point in triangle beam?\n\t/*!\n\tTest if point is in triangle, with m_margin tolerance\n\t*/\n\tSIMD_FORCE_INLINE bool is_point_inside(const btVector3 &point, const btVector3 &tri_normal) const\n\t{\n\t\t//Test with edge 0\n\t\tbtVector4 edge_plane;\n\t\tthis->get_edge_plane(0, tri_normal, edge_plane);\n\t\tGREAL dist = DISTANCE_PLANE_POINT(edge_plane, point);\n\t\tif (dist - m_margin > 0.0f) return false;  // outside plane\n\n\t\tthis->get_edge_plane(1, tri_normal, edge_plane);\n\t\tdist = DISTANCE_PLANE_POINT(edge_plane, point);\n\t\tif (dist - m_margin > 0.0f) return false;  // outside plane\n\n\t\tthis->get_edge_plane(2, tri_normal, edge_plane);\n\t\tdist = DISTANCE_PLANE_POINT(edge_plane, point);\n\t\tif (dist - m_margin > 0.0f) return false;  // outside plane\n\t\treturn true;\n\t}\n\n\t//! Bidireccional ray collision\n\tSIMD_FORCE_INLINE bool ray_collision(\n\t\tconst btVector3 &vPoint,\n\t\tconst btVector3 &vDir, btVector3 &pout, btVector3 &triangle_normal,\n\t\tGREAL &tparam, GREAL tmax = G_REAL_INFINITY)\n\t{\n\t\tbtVector4 faceplane;\n\t\t{\n\t\t\tbtVector3 dif1 = m_vertices[1] - m_vertices[0];\n\t\t\tbtVector3 dif2 = m_vertices[2] - m_vertices[0];\n\t\t\tVEC_CROSS(faceplane, dif1, dif2);\n\t\t\tfaceplane[3] = m_vertices[0].dot(faceplane);\n\t\t}\n\n\t\tGUINT res = LINE_PLANE_COLLISION(faceplane, vDir, vPoint, pout, tparam, btScalar(0), tmax);\n\t\tif (res == 0) return false;\n\t\tif (!is_point_inside(pout, faceplane)) return false;\n\n\t\tif (res == 2)  //invert normal\n\t\t{\n\t\t\ttriangle_normal.setValue(-faceplane[0], -faceplane[1], -faceplane[2]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\ttriangle_normal.setValue(faceplane[0], faceplane[1], faceplane[2]);\n\t\t}\n\n\t\tVEC_NORMALIZE(triangle_normal);\n\n\t\treturn true;\n\t}\n\n\t//! one direccion ray collision\n\tSIMD_FORCE_INLINE bool ray_collision_front_side(\n\t\tconst btVector3 &vPoint,\n\t\tconst btVector3 &vDir, btVector3 &pout, btVector3 &triangle_normal,\n\t\tGREAL &tparam, GREAL tmax = G_REAL_INFINITY)\n\t{\n\t\tbtVector4 faceplane;\n\t\t{\n\t\t\tbtVector3 dif1 = m_vertices[1] - m_vertices[0];\n\t\t\tbtVector3 dif2 = m_vertices[2] - m_vertices[0];\n\t\t\tVEC_CROSS(faceplane, dif1, dif2);\n\t\t\tfaceplane[3] = m_vertices[0].dot(faceplane);\n\t\t}\n\n\t\tGUINT res = LINE_PLANE_COLLISION(faceplane, vDir, vPoint, pout, tparam, btScalar(0), tmax);\n\t\tif (res != 1) return false;\n\n\t\tif (!is_point_inside(pout, faceplane)) return false;\n\n\t\ttriangle_normal.setValue(faceplane[0], faceplane[1], faceplane[2]);\n\n\t\tVEC_NORMALIZE(triangle_normal);\n\n\t\treturn true;\n\t}\n};\n\n#endif  // GIM_TRI_COLLISION_H_INCLUDED\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btComputeGjkEpaPenetration.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2014 Erwin Coumans http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GJK_EPA_PENETATION_CONVEX_COLLISION_H\n#define BT_GJK_EPA_PENETATION_CONVEX_COLLISION_H\n\n#include \"LinearMath/btTransform.h\"  // Note that btVector3 might be double precision...\n#include \"btGjkEpa3.h\"\n#include \"btGjkCollisionDescription.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h\"\n\ntemplate <typename btConvexTemplate>\nbool btGjkEpaCalcPenDepth(const btConvexTemplate& a, const btConvexTemplate& b,\n\t\t\t\t\t\t  const btGjkCollisionDescription& colDesc,\n\t\t\t\t\t\t  btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB)\n{\n\t(void)v;\n\n\t//\tconst btScalar\t\t\t\tradialmargin(btScalar(0.));\n\n\tbtVector3 guessVector(b.getWorldTransform().getOrigin() - a.getWorldTransform().getOrigin());  //?? why not use the GJK input?\n\n\tbtGjkEpaSolver3::sResults results;\n\n\tif (btGjkEpaSolver3_Penetration(a, b, guessVector, results))\n\n\t{\n\t\t//\tdebugDraw->drawLine(results.witnesses[1],results.witnesses[1]+results.normal,btVector3(255,0,0));\n\t\t//resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth);\n\t\twWitnessOnA = results.witnesses[0];\n\t\twWitnessOnB = results.witnesses[1];\n\t\tv = results.normal;\n\t\treturn true;\n\t}\n\telse\n\t{\n\t\tif (btGjkEpaSolver3_Distance(a, b, guessVector, results))\n\t\t{\n\t\t\twWitnessOnA = results.witnesses[0];\n\t\t\twWitnessOnB = results.witnesses[1];\n\t\t\tv = results.normal;\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\ntemplate <typename btConvexTemplate, typename btGjkDistanceTemplate>\nint btComputeGjkEpaPenetration(const btConvexTemplate& a, const btConvexTemplate& b, const btGjkCollisionDescription& colDesc, btVoronoiSimplexSolver& simplexSolver, btGjkDistanceTemplate* distInfo)\n{\n\tbool m_catchDegeneracies = true;\n\tbtScalar m_cachedSeparatingDistance = 0.f;\n\n\tbtScalar distance = btScalar(0.);\n\tbtVector3 normalInB(btScalar(0.), btScalar(0.), btScalar(0.));\n\n\tbtVector3 pointOnA, pointOnB;\n\tbtTransform localTransA = a.getWorldTransform();\n\tbtTransform localTransB = b.getWorldTransform();\n\n\tbtScalar marginA = a.getMargin();\n\tbtScalar marginB = b.getMargin();\n\n\tint m_curIter = 0;\n\tint gGjkMaxIter = colDesc.m_maxGjkIterations;  //this is to catch invalid input, perhaps check for #NaN?\n\tbtVector3 m_cachedSeparatingAxis = colDesc.m_firstDir;\n\n\tbool isValid = false;\n\tbool checkSimplex = false;\n\tbool checkPenetration = true;\n\tint m_degenerateSimplex = 0;\n\n\tint m_lastUsedMethod = -1;\n\n\t{\n\t\tbtScalar squaredDistance = BT_LARGE_FLOAT;\n\t\tbtScalar delta = btScalar(0.);\n\n\t\tbtScalar margin = marginA + marginB;\n\n\t\tsimplexSolver.reset();\n\n\t\tfor (;;)\n\t\t//while (true)\n\t\t{\n\t\t\tbtVector3 separatingAxisInA = (-m_cachedSeparatingAxis) * localTransA.getBasis();\n\t\t\tbtVector3 separatingAxisInB = m_cachedSeparatingAxis * localTransB.getBasis();\n\n\t\t\tbtVector3 pInA = a.getLocalSupportWithoutMargin(separatingAxisInA);\n\t\t\tbtVector3 qInB = b.getLocalSupportWithoutMargin(separatingAxisInB);\n\n\t\t\tbtVector3 pWorld = localTransA(pInA);\n\t\t\tbtVector3 qWorld = localTransB(qInB);\n\n\t\t\tbtVector3 w = pWorld - qWorld;\n\t\t\tdelta = m_cachedSeparatingAxis.dot(w);\n\n\t\t\t// potential exit, they don't overlap\n\t\t\tif ((delta > btScalar(0.0)) && (delta * delta > squaredDistance * colDesc.m_maximumDistanceSquared))\n\t\t\t{\n\t\t\t\tm_degenerateSimplex = 10;\n\t\t\t\tcheckSimplex = true;\n\t\t\t\t//checkPenetration = false;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t//exit 0: the new point is already in the simplex, or we didn't come any closer\n\t\t\tif (simplexSolver.inSimplex(w))\n\t\t\t{\n\t\t\t\tm_degenerateSimplex = 1;\n\t\t\t\tcheckSimplex = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// are we getting any closer ?\n\t\t\tbtScalar f0 = squaredDistance - delta;\n\t\t\tbtScalar f1 = squaredDistance * colDesc.m_gjkRelError2;\n\n\t\t\tif (f0 <= f1)\n\t\t\t{\n\t\t\t\tif (f0 <= btScalar(0.))\n\t\t\t\t{\n\t\t\t\t\tm_degenerateSimplex = 2;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tm_degenerateSimplex = 11;\n\t\t\t\t}\n\t\t\t\tcheckSimplex = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t//add current vertex to simplex\n\t\t\tsimplexSolver.addVertex(w, pWorld, qWorld);\n\t\t\tbtVector3 newCachedSeparatingAxis;\n\n\t\t\t//calculate the closest point to the origin (update vector v)\n\t\t\tif (!simplexSolver.closest(newCachedSeparatingAxis))\n\t\t\t{\n\t\t\t\tm_degenerateSimplex = 3;\n\t\t\t\tcheckSimplex = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (newCachedSeparatingAxis.length2() < colDesc.m_gjkRelError2)\n\t\t\t{\n\t\t\t\tm_cachedSeparatingAxis = newCachedSeparatingAxis;\n\t\t\t\tm_degenerateSimplex = 6;\n\t\t\t\tcheckSimplex = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbtScalar previousSquaredDistance = squaredDistance;\n\t\t\tsquaredDistance = newCachedSeparatingAxis.length2();\n#if 0\n            ///warning: this termination condition leads to some problems in 2d test case see Bullet/Demos/Box2dDemo\n            if (squaredDistance>previousSquaredDistance)\n            {\n                m_degenerateSimplex = 7;\n                squaredDistance = previousSquaredDistance;\n                checkSimplex = false;\n                break;\n            }\n#endif  //\n\n\t\t\t//redundant m_simplexSolver->compute_points(pointOnA, pointOnB);\n\n\t\t\t//are we getting any closer ?\n\t\t\tif (previousSquaredDistance - squaredDistance <= SIMD_EPSILON * previousSquaredDistance)\n\t\t\t{\n\t\t\t\t//\t\t\t\tm_simplexSolver->backup_closest(m_cachedSeparatingAxis);\n\t\t\t\tcheckSimplex = true;\n\t\t\t\tm_degenerateSimplex = 12;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tm_cachedSeparatingAxis = newCachedSeparatingAxis;\n\n\t\t\t//degeneracy, this is typically due to invalid/uninitialized worldtransforms for a btCollisionObject\n\t\t\tif (m_curIter++ > gGjkMaxIter)\n\t\t\t{\n#if defined(DEBUG) || defined(_DEBUG)\n\n\t\t\t\tprintf(\"btGjkPairDetector maxIter exceeded:%i\\n\", m_curIter);\n\t\t\t\tprintf(\"sepAxis=(%f,%f,%f), squaredDistance = %f\\n\",\n\t\t\t\t\t   m_cachedSeparatingAxis.getX(),\n\t\t\t\t\t   m_cachedSeparatingAxis.getY(),\n\t\t\t\t\t   m_cachedSeparatingAxis.getZ(),\n\t\t\t\t\t   squaredDistance);\n#endif\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbool check = (!simplexSolver.fullSimplex());\n\t\t\t//bool check = (!m_simplexSolver->fullSimplex() && squaredDistance > SIMD_EPSILON * m_simplexSolver->maxVertex());\n\n\t\t\tif (!check)\n\t\t\t{\n\t\t\t\t//do we need this backup_closest here ?\n\t\t\t\t//\t\t\t\tm_simplexSolver->backup_closest(m_cachedSeparatingAxis);\n\t\t\t\tm_degenerateSimplex = 13;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (checkSimplex)\n\t\t{\n\t\t\tsimplexSolver.compute_points(pointOnA, pointOnB);\n\t\t\tnormalInB = m_cachedSeparatingAxis;\n\n\t\t\tbtScalar lenSqr = m_cachedSeparatingAxis.length2();\n\n\t\t\t//valid normal\n\t\t\tif (lenSqr < 0.0001)\n\t\t\t{\n\t\t\t\tm_degenerateSimplex = 5;\n\t\t\t}\n\t\t\tif (lenSqr > SIMD_EPSILON * SIMD_EPSILON)\n\t\t\t{\n\t\t\t\tbtScalar rlen = btScalar(1.) / btSqrt(lenSqr);\n\t\t\t\tnormalInB *= rlen;  //normalize\n\n\t\t\t\tbtScalar s = btSqrt(squaredDistance);\n\n\t\t\t\tbtAssert(s > btScalar(0.0));\n\t\t\t\tpointOnA -= m_cachedSeparatingAxis * (marginA / s);\n\t\t\t\tpointOnB += m_cachedSeparatingAxis * (marginB / s);\n\t\t\t\tdistance = ((btScalar(1.) / rlen) - margin);\n\t\t\t\tisValid = true;\n\n\t\t\t\tm_lastUsedMethod = 1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_lastUsedMethod = 2;\n\t\t\t}\n\t\t}\n\n\t\tbool catchDegeneratePenetrationCase =\n\t\t\t(m_catchDegeneracies && m_degenerateSimplex && ((distance + margin) < 0.01));\n\n\t\t//if (checkPenetration && !isValid)\n\t\tif (checkPenetration && (!isValid || catchDegeneratePenetrationCase))\n\t\t{\n\t\t\t//penetration case\n\n\t\t\t//if there is no way to handle penetrations, bail out\n\n\t\t\t// Penetration depth case.\n\t\t\tbtVector3 tmpPointOnA, tmpPointOnB;\n\n\t\t\tm_cachedSeparatingAxis.setZero();\n\n\t\t\tbool isValid2 = btGjkEpaCalcPenDepth(a, b,\n\t\t\t\t\t\t\t\t\t\t\t\t colDesc,\n\t\t\t\t\t\t\t\t\t\t\t\t m_cachedSeparatingAxis, tmpPointOnA, tmpPointOnB);\n\n\t\t\tif (isValid2)\n\t\t\t{\n\t\t\t\tbtVector3 tmpNormalInB = tmpPointOnB - tmpPointOnA;\n\t\t\t\tbtScalar lenSqr = tmpNormalInB.length2();\n\t\t\t\tif (lenSqr <= (SIMD_EPSILON * SIMD_EPSILON))\n\t\t\t\t{\n\t\t\t\t\ttmpNormalInB = m_cachedSeparatingAxis;\n\t\t\t\t\tlenSqr = m_cachedSeparatingAxis.length2();\n\t\t\t\t}\n\n\t\t\t\tif (lenSqr > (SIMD_EPSILON * SIMD_EPSILON))\n\t\t\t\t{\n\t\t\t\t\ttmpNormalInB /= btSqrt(lenSqr);\n\t\t\t\t\tbtScalar distance2 = -(tmpPointOnA - tmpPointOnB).length();\n\t\t\t\t\t//only replace valid penetrations when the result is deeper (check)\n\t\t\t\t\tif (!isValid || (distance2 < distance))\n\t\t\t\t\t{\n\t\t\t\t\t\tdistance = distance2;\n\t\t\t\t\t\tpointOnA = tmpPointOnA;\n\t\t\t\t\t\tpointOnB = tmpPointOnB;\n\t\t\t\t\t\tnormalInB = tmpNormalInB;\n\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t\tm_lastUsedMethod = 3;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_lastUsedMethod = 8;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tm_lastUsedMethod = 9;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\n\t\t\t{\n\t\t\t\t///this is another degenerate case, where the initial GJK calculation reports a degenerate case\n\t\t\t\t///EPA reports no penetration, and the second GJK (using the supporting vector without margin)\n\t\t\t\t///reports a valid positive distance. Use the results of the second GJK instead of failing.\n\t\t\t\t///thanks to Jacob.Langford for the reproduction case\n\t\t\t\t///http://code.google.com/p/bullet/issues/detail?id=250\n\n\t\t\t\tif (m_cachedSeparatingAxis.length2() > btScalar(0.))\n\t\t\t\t{\n\t\t\t\t\tbtScalar distance2 = (tmpPointOnA - tmpPointOnB).length() - margin;\n\t\t\t\t\t//only replace valid distances when the distance is less\n\t\t\t\t\tif (!isValid || (distance2 < distance))\n\t\t\t\t\t{\n\t\t\t\t\t\tdistance = distance2;\n\t\t\t\t\t\tpointOnA = tmpPointOnA;\n\t\t\t\t\t\tpointOnB = tmpPointOnB;\n\t\t\t\t\t\tpointOnA -= m_cachedSeparatingAxis * marginA;\n\t\t\t\t\t\tpointOnB += m_cachedSeparatingAxis * marginB;\n\t\t\t\t\t\tnormalInB = m_cachedSeparatingAxis;\n\t\t\t\t\t\tnormalInB.normalize();\n\n\t\t\t\t\t\tisValid = true;\n\t\t\t\t\t\tm_lastUsedMethod = 6;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_lastUsedMethod = 5;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isValid && ((distance < 0) || (distance * distance < colDesc.m_maximumDistanceSquared)))\n\t{\n\t\tm_cachedSeparatingAxis = normalInB;\n\t\tm_cachedSeparatingDistance = distance;\n\t\tdistInfo->m_distance = distance;\n\t\tdistInfo->m_normalBtoA = normalInB;\n\t\tdistInfo->m_pointOnB = pointOnB;\n\t\tdistInfo->m_pointOnA = pointOnB + normalInB * distance;\n\t\treturn 0;\n\t}\n\treturn -m_lastUsedMethod;\n}\n\n#endif  //BT_GJK_EPA_PENETATION_CONVEX_COLLISION_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONTINUOUS_COLLISION_CONVEX_CAST_H\n#define BT_CONTINUOUS_COLLISION_CONVEX_CAST_H\n\n#include \"btConvexCast.h\"\n#include \"btSimplexSolverInterface.h\"\nclass btConvexPenetrationDepthSolver;\nclass btConvexShape;\nclass btStaticPlaneShape;\n\n/// btContinuousConvexCollision implements angular and linear time of impact for convex objects.\n/// Based on Brian Mirtich's Conservative Advancement idea (PhD thesis).\n/// Algorithm operates in worldspace, in order to keep in between motion globally consistent.\n/// It uses GJK at the moment. Future improvement would use minkowski sum / supporting vertex, merging innerloops\nclass btContinuousConvexCollision : public btConvexCast\n{\n\tbtSimplexSolverInterface* m_simplexSolver;\n\tbtConvexPenetrationDepthSolver* m_penetrationDepthSolver;\n\tconst btConvexShape* m_convexA;\n\t//second object is either a convex or a plane (code sharing)\n\tconst btConvexShape* m_convexB1;\n\tconst btStaticPlaneShape* m_planeShape;\n\n\tvoid computeClosestPoints(const btTransform& transA, const btTransform& transB, struct btPointCollector& pointCollector);\n\npublic:\n\tbtContinuousConvexCollision(const btConvexShape* shapeA, const btConvexShape* shapeB, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* penetrationDepthSolver);\n\n\tbtContinuousConvexCollision(const btConvexShape* shapeA, const btStaticPlaneShape* plane);\n\n\tvirtual bool calcTimeOfImpact(\n\t\tconst btTransform& fromA,\n\t\tconst btTransform& toA,\n\t\tconst btTransform& fromB,\n\t\tconst btTransform& toB,\n\t\tCastResult& result);\n};\n\n#endif  //BT_CONTINUOUS_COLLISION_CONVEX_CAST_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_CAST_H\n#define BT_CONVEX_CAST_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btScalar.h\"\nclass btMinkowskiSumShape;\n#include \"LinearMath/btIDebugDraw.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define MAX_CONVEX_CAST_ITERATIONS 64\n#define MAX_CONVEX_CAST_EPSILON (SIMD_EPSILON * 10)\n#else\n#define MAX_CONVEX_CAST_ITERATIONS 32\n#define MAX_CONVEX_CAST_EPSILON btScalar(0.0001)\n#endif\n///Typically the conservative advancement reaches solution in a few iterations, clip it to 32 for degenerate cases.\n///See discussion about this here http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=565\n//will need to digg deeper to make the algorithm more robust\n//since, a large epsilon can cause an early termination with false\n//positive results (ray intersections that shouldn't be there)\n\n/// btConvexCast is an interface for Casting\nclass btConvexCast\n{\npublic:\n\tvirtual ~btConvexCast();\n\n\t///RayResult stores the closest result\n\t/// alternatively, add a callback method to decide about closest/all results\n\tstruct CastResult\n\t{\n\t\t//virtual bool\taddRayResult(const btVector3& normal,btScalar\tfraction) = 0;\n\n\t\tvirtual void DebugDraw(btScalar fraction) { (void)fraction; }\n\t\tvirtual void drawCoordSystem(const btTransform& trans) { (void)trans; }\n\t\tvirtual void reportFailure(int errNo, int numIterations)\n\t\t{\n\t\t\t(void)errNo;\n\t\t\t(void)numIterations;\n\t\t}\n\t\tCastResult()\n\t\t\t: m_fraction(btScalar(BT_LARGE_FLOAT)),\n\t\t\t  m_debugDrawer(0),\n\t\t\t  m_allowedPenetration(btScalar(0)),\n\t\t\t  m_subSimplexCastMaxIterations(MAX_CONVEX_CAST_ITERATIONS),\n\t\t\t  m_subSimplexCastEpsilon(MAX_CONVEX_CAST_EPSILON)\n\t\t{\n\t\t}\n\n\t\tvirtual ~CastResult(){};\n\n\t\tbtTransform m_hitTransformA;\n\t\tbtTransform m_hitTransformB;\n\t\tbtVector3 m_normal;\n\t\tbtVector3 m_hitPoint;\n\t\tbtScalar m_fraction;  //input and output\n\t\tbtIDebugDraw* m_debugDrawer;\n\t\tbtScalar m_allowedPenetration;\n\t\t\n\t\tint m_subSimplexCastMaxIterations;\n\t\tbtScalar m_subSimplexCastEpsilon;\n\n\t};\n\n\t/// cast a convex against another convex object\n\tvirtual bool calcTimeOfImpact(\n\t\tconst btTransform& fromA,\n\t\tconst btTransform& toA,\n\t\tconst btTransform& fromB,\n\t\tconst btTransform& toB,\n\t\tCastResult& result) = 0;\n};\n\n#endif  //BT_CONVEX_CAST_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_PENETRATION_DEPTH_H\n#define BT_CONVEX_PENETRATION_DEPTH_H\n\nclass btVector3;\n#include \"btSimplexSolverInterface.h\"\nclass btConvexShape;\nclass btTransform;\n\n///ConvexPenetrationDepthSolver provides an interface for penetration depth calculation.\nclass btConvexPenetrationDepthSolver\n{\npublic:\n\tvirtual ~btConvexPenetrationDepthSolver(){};\n\tvirtual bool calcPenDepth(btSimplexSolverInterface& simplexSolver,\n\t\t\t\t\t\t\t  const btConvexShape* convexA, const btConvexShape* convexB,\n\t\t\t\t\t\t\t  const btTransform& transA, const btTransform& transB,\n\t\t\t\t\t\t\t  btVector3& v, btVector3& pa, btVector3& pb,\n\t\t\t\t\t\t\t  class btIDebugDraw* debugDraw) = 0;\n};\n#endif  //BT_CONVEX_PENETRATION_DEPTH_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H\n#define BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btVector3.h\"\n\n/// This interface is made to be used by an iterative approach to do TimeOfImpact calculations\n/// This interface allows to query for closest points and penetration depth between two (convex) objects\n/// the closest point is on the second object (B), and the normal points from the surface on B towards A.\n/// distance is between closest points on B and closest point on A. So you can calculate closest point on A\n/// by taking closestPointInA = closestPointInB + m_distance * m_normalOnSurfaceB\nstruct btDiscreteCollisionDetectorInterface\n{\n\tstruct Result\n\t{\n\t\tvirtual ~Result() {}\n\n\t\t///setShapeIdentifiersA/B provides experimental support for per-triangle material / custom material combiner\n\t\tvirtual void setShapeIdentifiersA(int partId0, int index0) = 0;\n\t\tvirtual void setShapeIdentifiersB(int partId1, int index1) = 0;\n\t\tvirtual void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth) = 0;\n\t};\n\n\tstruct ClosestPointInput\n\t{\n\t\tClosestPointInput()\n\t\t\t: m_maximumDistanceSquared(btScalar(BT_LARGE_FLOAT))\n\t\t{\n\t\t}\n\n\t\tbtTransform m_transformA;\n\t\tbtTransform m_transformB;\n\t\tbtScalar m_maximumDistanceSquared;\n\t};\n\n\tvirtual ~btDiscreteCollisionDetectorInterface(){};\n\n\t//\n\t// give either closest points (distance > 0) or penetration (distance)\n\t// the normal always points from B towards A\n\t//\n\tvirtual void getClosestPoints(const ClosestPointInput& input, Result& output, class btIDebugDraw* debugDraw, bool swapResults = false) = 0;\n};\n\nstruct btStorageResult : public btDiscreteCollisionDetectorInterface::Result\n{\n\tbtVector3 m_normalOnSurfaceB;\n\tbtVector3 m_closestPointInB;\n\tbtScalar m_distance;  //negative means penetration !\n\nprotected:\n\tbtStorageResult() : m_distance(btScalar(BT_LARGE_FLOAT))\n\t{\n\t}\n\npublic:\n\tvirtual ~btStorageResult(){};\n\n\tvirtual void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth)\n\t{\n\t\tif (depth < m_distance)\n\t\t{\n\t\t\tm_normalOnSurfaceB = normalOnBInWorld;\n\t\t\tm_closestPointInB = pointInWorld;\n\t\t\tm_distance = depth;\n\t\t}\n\t}\n};\n\n#endif  //BT_DISCRETE_COLLISION_DETECTOR1_INTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkCollisionDescription.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2014 Erwin Coumans http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef GJK_COLLISION_DESCRIPTION_H\n#define GJK_COLLISION_DESCRIPTION_H\n\n#include \"LinearMath/btVector3.h\"\n\nstruct btGjkCollisionDescription\n{\n\tbtVector3 m_firstDir;\n\tint m_maxGjkIterations;\n\tbtScalar m_maximumDistanceSquared;\n\tbtScalar m_gjkRelError2;\n\tbtGjkCollisionDescription()\n\t\t: m_firstDir(0, 1, 0),\n\t\t  m_maxGjkIterations(1000),\n\t\t  m_maximumDistanceSquared(1e30f),\n\t\t  m_gjkRelError2(1.0e-6)\n\t{\n\t}\n\tvirtual ~btGjkCollisionDescription()\n\t{\n\t}\n};\n\n#endif  //GJK_COLLISION_DESCRIPTION_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GJK_CONVEX_CAST_H\n#define BT_GJK_CONVEX_CAST_H\n\n#include \"BulletCollision/CollisionShapes/btCollisionMargin.h\"\n\n#include \"LinearMath/btVector3.h\"\n#include \"btConvexCast.h\"\nclass btConvexShape;\nclass btMinkowskiSumShape;\n#include \"btSimplexSolverInterface.h\"\n\n///GjkConvexCast performs a raycast on a convex object using support mapping.\nclass btGjkConvexCast : public btConvexCast\n{\n\tbtSimplexSolverInterface* m_simplexSolver;\n\tconst btConvexShape* m_convexA;\n\tconst btConvexShape* m_convexB;\n\npublic:\n\tbtGjkConvexCast(const btConvexShape* convexA, const btConvexShape* convexB, btSimplexSolverInterface* simplexSolver);\n\n\t/// cast a convex against another convex object\n\tvirtual bool calcTimeOfImpact(\n\t\tconst btTransform& fromA,\n\t\tconst btTransform& toA,\n\t\tconst btTransform& fromB,\n\t\tconst btTransform& toB,\n\t\tCastResult& result);\n};\n\n#endif  //BT_GJK_CONVEX_CAST_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2008 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the\nuse of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\nclaim that you wrote the original software. If you use this software in a\nproduct, an acknowledgment in the product documentation would be appreciated\nbut is not required.\n2. Altered source versions must be plainly marked as such, and must not be\nmisrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\nGJK-EPA collision solver by Nathanael Presson, 2008\n*/\n#ifndef BT_GJK_EPA2_H\n#define BT_GJK_EPA2_H\n\n#include \"BulletCollision/CollisionShapes/btConvexShape.h\"\n\n///btGjkEpaSolver contributed under zlib by Nathanael Presson\nstruct btGjkEpaSolver2\n{\n\tstruct sResults\n\t{\n\t\tenum eStatus\n\t\t{\n\t\t\tSeparated,   /* Shapes doesnt penetrate\t\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\tPenetrating, /* Shapes are penetrating\t\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\tGJK_Failed,  /* GJK phase fail, no big issue, shapes are probably just 'touching'\t*/\n\t\t\tEPA_Failed   /* EPA phase fail, bigger problem, need to save parameters, and debug\t*/\n\t\t} status;\n\t\tbtVector3 witnesses[2];\n\t\tbtVector3 normal;\n\t\tbtScalar distance;\n\t};\n\n\tstatic int StackSizeRequirement();\n\n\tstatic bool Distance(const btConvexShape* shape0, const btTransform& wtrs0,\n\t\t\t\t\t\t const btConvexShape* shape1, const btTransform& wtrs1,\n\t\t\t\t\t\t const btVector3& guess,\n\t\t\t\t\t\t sResults& results);\n\n\tstatic bool Penetration(const btConvexShape* shape0, const btTransform& wtrs0,\n\t\t\t\t\t\t\tconst btConvexShape* shape1, const btTransform& wtrs1,\n\t\t\t\t\t\t\tconst btVector3& guess,\n\t\t\t\t\t\t\tsResults& results,\n\t\t\t\t\t\t\tbool usemargins = true);\n#ifndef __SPU__\n\tstatic btScalar SignedDistance(const btVector3& position,\n\t\t\t\t\t\t\t\t   btScalar margin,\n\t\t\t\t\t\t\t\t   const btConvexShape* shape,\n\t\t\t\t\t\t\t\t   const btTransform& wtrs,\n\t\t\t\t\t\t\t\t   sResults& results);\n\n\tstatic bool SignedDistance(const btConvexShape* shape0, const btTransform& wtrs0,\n\t\t\t\t\t\t\t   const btConvexShape* shape1, const btTransform& wtrs1,\n\t\t\t\t\t\t\t   const btVector3& guess,\n\t\t\t\t\t\t\t   sResults& results);\n#endif  //__SPU__\n};\n\n#endif  //BT_GJK_EPA2_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa3.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2014 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the\nuse of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it\nfreely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not\nclaim that you wrote the original software. If you use this software in a\nproduct, an acknowledgment in the product documentation would be appreciated\nbut is not required.\n2. Altered source versions must be plainly marked as such, and must not be\nmisrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\nInitial GJK-EPA collision solver by Nathanael Presson, 2008\nImprovements and refactoring by Erwin Coumans, 2008-2014\n*/\n#ifndef BT_GJK_EPA3_H\n#define BT_GJK_EPA3_H\n\n#include \"LinearMath/btTransform.h\"\n#include \"btGjkCollisionDescription.h\"\n\nstruct btGjkEpaSolver3\n{\n\tstruct sResults\n\t{\n\t\tenum eStatus\n\t\t{\n\t\t\tSeparated,   /* Shapes doesnt penetrate\t\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\tPenetrating, /* Shapes are penetrating\t\t\t\t\t\t\t\t\t\t\t\t*/\n\t\t\tGJK_Failed,  /* GJK phase fail, no big issue, shapes are probably just 'touching'\t*/\n\t\t\tEPA_Failed   /* EPA phase fail, bigger problem, need to save parameters, and debug\t*/\n\t\t} status;\n\t\tbtVector3 witnesses[2];\n\t\tbtVector3 normal;\n\t\tbtScalar distance;\n\t};\n};\n\n#if defined(DEBUG) || defined(_DEBUG)\n#include <stdio.h>  //for debug printf\n#ifdef __SPU__\n#include <spu_printf.h>\n#define printf spu_printf\n#endif  //__SPU__\n#endif\n\n// Config\n\n/* GJK\t*/\n#define GJK_MAX_ITERATIONS 128\n#define GJK_ACCURARY ((btScalar)0.0001)\n#define GJK_MIN_DISTANCE ((btScalar)0.0001)\n#define GJK_DUPLICATED_EPS ((btScalar)0.0001)\n#define GJK_SIMPLEX2_EPS ((btScalar)0.0)\n#define GJK_SIMPLEX3_EPS ((btScalar)0.0)\n#define GJK_SIMPLEX4_EPS ((btScalar)0.0)\n\n/* EPA\t*/\n#define EPA_MAX_VERTICES 64\n#define EPA_MAX_FACES (EPA_MAX_VERTICES * 2)\n#define EPA_MAX_ITERATIONS 255\n#define EPA_ACCURACY ((btScalar)0.0001)\n#define EPA_FALLBACK (10 * EPA_ACCURACY)\n#define EPA_PLANE_EPS ((btScalar)0.00001)\n#define EPA_INSIDE_EPS ((btScalar)0.01)\n\n// Shorthands\ntypedef unsigned int U;\ntypedef unsigned char U1;\n\n// MinkowskiDiff\ntemplate <typename btConvexTemplate>\nstruct MinkowskiDiff\n{\n\tconst btConvexTemplate* m_convexAPtr;\n\tconst btConvexTemplate* m_convexBPtr;\n\n\tbtMatrix3x3 m_toshape1;\n\tbtTransform m_toshape0;\n\n\tbool m_enableMargin;\n\n\tMinkowskiDiff(const btConvexTemplate& a, const btConvexTemplate& b)\n\t\t: m_convexAPtr(&a),\n\t\t  m_convexBPtr(&b)\n\t{\n\t}\n\n\tvoid EnableMargin(bool enable)\n\t{\n\t\tm_enableMargin = enable;\n\t}\n\tinline btVector3 Support0(const btVector3& d) const\n\t{\n\t\treturn m_convexAPtr->getLocalSupportWithMargin(d);\n\t}\n\tinline btVector3 Support1(const btVector3& d) const\n\t{\n\t\treturn m_toshape0 * m_convexBPtr->getLocalSupportWithMargin(m_toshape1 * d);\n\t}\n\n\tinline btVector3 Support(const btVector3& d) const\n\t{\n\t\treturn (Support0(d) - Support1(-d));\n\t}\n\tbtVector3 Support(const btVector3& d, U index) const\n\t{\n\t\tif (index)\n\t\t\treturn (Support1(d));\n\t\telse\n\t\t\treturn (Support0(d));\n\t}\n};\n\nenum eGjkStatus\n{\n\teGjkValid,\n\teGjkInside,\n\teGjkFailed\n};\n\n// GJK\ntemplate <typename btConvexTemplate>\nstruct GJK\n{\n\t/* Types\t\t*/\n\tstruct sSV\n\t{\n\t\tbtVector3 d, w;\n\t};\n\tstruct sSimplex\n\t{\n\t\tsSV* c[4];\n\t\tbtScalar p[4];\n\t\tU rank;\n\t};\n\n\t/* Fields\t\t*/\n\n\tMinkowskiDiff<btConvexTemplate> m_shape;\n\tbtVector3 m_ray;\n\tbtScalar m_distance;\n\tsSimplex m_simplices[2];\n\tsSV m_store[4];\n\tsSV* m_free[4];\n\tU m_nfree;\n\tU m_current;\n\tsSimplex* m_simplex;\n\teGjkStatus m_status;\n\t/* Methods\t\t*/\n\n\tGJK(const btConvexTemplate& a, const btConvexTemplate& b)\n\t\t: m_shape(a, b)\n\t{\n\t\tInitialize();\n\t}\n\tvoid Initialize()\n\t{\n\t\tm_ray = btVector3(0, 0, 0);\n\t\tm_nfree = 0;\n\t\tm_status = eGjkFailed;\n\t\tm_current = 0;\n\t\tm_distance = 0;\n\t}\n\teGjkStatus Evaluate(const MinkowskiDiff<btConvexTemplate>& shapearg, const btVector3& guess)\n\t{\n\t\tU iterations = 0;\n\t\tbtScalar sqdist = 0;\n\t\tbtScalar alpha = 0;\n\t\tbtVector3 lastw[4];\n\t\tU clastw = 0;\n\t\t/* Initialize solver\t\t*/\n\t\tm_free[0] = &m_store[0];\n\t\tm_free[1] = &m_store[1];\n\t\tm_free[2] = &m_store[2];\n\t\tm_free[3] = &m_store[3];\n\t\tm_nfree = 4;\n\t\tm_current = 0;\n\t\tm_status = eGjkValid;\n\t\tm_shape = shapearg;\n\t\tm_distance = 0;\n\t\t/* Initialize simplex\t\t*/\n\t\tm_simplices[0].rank = 0;\n\t\tm_ray = guess;\n\t\tconst btScalar sqrl = m_ray.length2();\n\t\tappendvertice(m_simplices[0], sqrl > 0 ? -m_ray : btVector3(1, 0, 0));\n\t\tm_simplices[0].p[0] = 1;\n\t\tm_ray = m_simplices[0].c[0]->w;\n\t\tsqdist = sqrl;\n\t\tlastw[0] =\n\t\t\tlastw[1] =\n\t\t\t\tlastw[2] =\n\t\t\t\t\tlastw[3] = m_ray;\n\t\t/* Loop\t\t\t\t\t\t*/\n\t\tdo\n\t\t{\n\t\t\tconst U next = 1 - m_current;\n\t\t\tsSimplex& cs = m_simplices[m_current];\n\t\t\tsSimplex& ns = m_simplices[next];\n\t\t\t/* Check zero\t\t\t\t\t\t\t*/\n\t\t\tconst btScalar rl = m_ray.length();\n\t\t\tif (rl < GJK_MIN_DISTANCE)\n\t\t\t{ /* Touching or inside\t\t\t\t*/\n\t\t\t\tm_status = eGjkInside;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* Append new vertice in -'v' direction\t*/\n\t\t\tappendvertice(cs, -m_ray);\n\t\t\tconst btVector3& w = cs.c[cs.rank - 1]->w;\n\t\t\tbool found = false;\n\t\t\tfor (U i = 0; i < 4; ++i)\n\t\t\t{\n\t\t\t\tif ((w - lastw[i]).length2() < GJK_DUPLICATED_EPS)\n\t\t\t\t{\n\t\t\t\t\tfound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (found)\n\t\t\t{ /* Return old simplex\t\t\t\t*/\n\t\t\t\tremovevertice(m_simplices[m_current]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse\n\t\t\t{ /* Update lastw\t\t\t\t\t*/\n\t\t\t\tlastw[clastw = (clastw + 1) & 3] = w;\n\t\t\t}\n\t\t\t/* Check for termination\t\t\t\t*/\n\t\t\tconst btScalar omega = btDot(m_ray, w) / rl;\n\t\t\talpha = btMax(omega, alpha);\n\t\t\tif (((rl - alpha) - (GJK_ACCURARY * rl)) <= 0)\n\t\t\t{ /* Return old simplex\t\t\t\t*/\n\t\t\t\tremovevertice(m_simplices[m_current]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t/* Reduce simplex\t\t\t\t\t\t*/\n\t\t\tbtScalar weights[4];\n\t\t\tU mask = 0;\n\t\t\tswitch (cs.rank)\n\t\t\t{\n\t\t\t\tcase 2:\n\t\t\t\t\tsqdist = projectorigin(cs.c[0]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[1]->w,\n\t\t\t\t\t\t\t\t\t\t   weights, mask);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tsqdist = projectorigin(cs.c[0]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[1]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[2]->w,\n\t\t\t\t\t\t\t\t\t\t   weights, mask);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tsqdist = projectorigin(cs.c[0]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[1]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[2]->w,\n\t\t\t\t\t\t\t\t\t\t   cs.c[3]->w,\n\t\t\t\t\t\t\t\t\t\t   weights, mask);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (sqdist >= 0)\n\t\t\t{ /* Valid\t*/\n\t\t\t\tns.rank = 0;\n\t\t\t\tm_ray = btVector3(0, 0, 0);\n\t\t\t\tm_current = next;\n\t\t\t\tfor (U i = 0, ni = cs.rank; i < ni; ++i)\n\t\t\t\t{\n\t\t\t\t\tif (mask & (1 << i))\n\t\t\t\t\t{\n\t\t\t\t\t\tns.c[ns.rank] = cs.c[i];\n\t\t\t\t\t\tns.p[ns.rank++] = weights[i];\n\t\t\t\t\t\tm_ray += cs.c[i]->w * weights[i];\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_free[m_nfree++] = cs.c[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (mask == 15) m_status = eGjkInside;\n\t\t\t}\n\t\t\telse\n\t\t\t{ /* Return old simplex\t\t\t\t*/\n\t\t\t\tremovevertice(m_simplices[m_current]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tm_status = ((++iterations) < GJK_MAX_ITERATIONS) ? m_status : eGjkFailed;\n\t\t} while (m_status == eGjkValid);\n\t\tm_simplex = &m_simplices[m_current];\n\t\tswitch (m_status)\n\t\t{\n\t\t\tcase eGjkValid:\n\t\t\t\tm_distance = m_ray.length();\n\t\t\t\tbreak;\n\t\t\tcase eGjkInside:\n\t\t\t\tm_distance = 0;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\treturn (m_status);\n\t}\n\tbool EncloseOrigin()\n\t{\n\t\tswitch (m_simplex->rank)\n\t\t{\n\t\t\tcase 1:\n\t\t\t{\n\t\t\t\tfor (U i = 0; i < 3; ++i)\n\t\t\t\t{\n\t\t\t\t\tbtVector3 axis = btVector3(0, 0, 0);\n\t\t\t\t\taxis[i] = 1;\n\t\t\t\t\tappendvertice(*m_simplex, axis);\n\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t\tappendvertice(*m_simplex, -axis);\n\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t{\n\t\t\t\tconst btVector3 d = m_simplex->c[1]->w - m_simplex->c[0]->w;\n\t\t\t\tfor (U i = 0; i < 3; ++i)\n\t\t\t\t{\n\t\t\t\t\tbtVector3 axis = btVector3(0, 0, 0);\n\t\t\t\t\taxis[i] = 1;\n\t\t\t\t\tconst btVector3 p = btCross(d, axis);\n\t\t\t\t\tif (p.length2() > 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tappendvertice(*m_simplex, p);\n\t\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t\t\tappendvertice(*m_simplex, -p);\n\t\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t{\n\t\t\t\tconst btVector3 n = btCross(m_simplex->c[1]->w - m_simplex->c[0]->w,\n\t\t\t\t\t\t\t\t\t\t\tm_simplex->c[2]->w - m_simplex->c[0]->w);\n\t\t\t\tif (n.length2() > 0)\n\t\t\t\t{\n\t\t\t\t\tappendvertice(*m_simplex, n);\n\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t\tappendvertice(*m_simplex, -n);\n\t\t\t\t\tif (EncloseOrigin()) return (true);\n\t\t\t\t\tremovevertice(*m_simplex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t{\n\t\t\t\tif (btFabs(det(m_simplex->c[0]->w - m_simplex->c[3]->w,\n\t\t\t\t\t\t\t   m_simplex->c[1]->w - m_simplex->c[3]->w,\n\t\t\t\t\t\t\t   m_simplex->c[2]->w - m_simplex->c[3]->w)) > 0)\n\t\t\t\t\treturn (true);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\treturn (false);\n\t}\n\t/* Internals\t*/\n\tvoid getsupport(const btVector3& d, sSV& sv) const\n\t{\n\t\tsv.d = d / d.length();\n\t\tsv.w = m_shape.Support(sv.d);\n\t}\n\tvoid removevertice(sSimplex& simplex)\n\t{\n\t\tm_free[m_nfree++] = simplex.c[--simplex.rank];\n\t}\n\tvoid appendvertice(sSimplex& simplex, const btVector3& v)\n\t{\n\t\tsimplex.p[simplex.rank] = 0;\n\t\tsimplex.c[simplex.rank] = m_free[--m_nfree];\n\t\tgetsupport(v, *simplex.c[simplex.rank++]);\n\t}\n\tstatic btScalar det(const btVector3& a, const btVector3& b, const btVector3& c)\n\t{\n\t\treturn (a.y() * b.z() * c.x() + a.z() * b.x() * c.y() -\n\t\t\t\ta.x() * b.z() * c.y() - a.y() * b.x() * c.z() +\n\t\t\t\ta.x() * b.y() * c.z() - a.z() * b.y() * c.x());\n\t}\n\tstatic btScalar projectorigin(const btVector3& a,\n\t\t\t\t\t\t\t\t  const btVector3& b,\n\t\t\t\t\t\t\t\t  btScalar* w, U& m)\n\t{\n\t\tconst btVector3 d = b - a;\n\t\tconst btScalar l = d.length2();\n\t\tif (l > GJK_SIMPLEX2_EPS)\n\t\t{\n\t\t\tconst btScalar t(l > 0 ? -btDot(a, d) / l : 0);\n\t\t\tif (t >= 1)\n\t\t\t{\n\t\t\t\tw[0] = 0;\n\t\t\t\tw[1] = 1;\n\t\t\t\tm = 2;\n\t\t\t\treturn (b.length2());\n\t\t\t}\n\t\t\telse if (t <= 0)\n\t\t\t{\n\t\t\t\tw[0] = 1;\n\t\t\t\tw[1] = 0;\n\t\t\t\tm = 1;\n\t\t\t\treturn (a.length2());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tw[0] = 1 - (w[1] = t);\n\t\t\t\tm = 3;\n\t\t\t\treturn ((a + d * t).length2());\n\t\t\t}\n\t\t}\n\t\treturn (-1);\n\t}\n\tstatic btScalar projectorigin(const btVector3& a,\n\t\t\t\t\t\t\t\t  const btVector3& b,\n\t\t\t\t\t\t\t\t  const btVector3& c,\n\t\t\t\t\t\t\t\t  btScalar* w, U& m)\n\t{\n\t\tstatic const U imd3[] = {1, 2, 0};\n\t\tconst btVector3* vt[] = {&a, &b, &c};\n\t\tconst btVector3 dl[] = {a - b, b - c, c - a};\n\t\tconst btVector3 n = btCross(dl[0], dl[1]);\n\t\tconst btScalar l = n.length2();\n\t\tif (l > GJK_SIMPLEX3_EPS)\n\t\t{\n\t\t\tbtScalar mindist = -1;\n\t\t\tbtScalar subw[2] = {0.f, 0.f};\n\t\t\tU subm(0);\n\t\t\tfor (U i = 0; i < 3; ++i)\n\t\t\t{\n\t\t\t\tif (btDot(*vt[i], btCross(dl[i], n)) > 0)\n\t\t\t\t{\n\t\t\t\t\tconst U j = imd3[i];\n\t\t\t\t\tconst btScalar subd(projectorigin(*vt[i], *vt[j], subw, subm));\n\t\t\t\t\tif ((mindist < 0) || (subd < mindist))\n\t\t\t\t\t{\n\t\t\t\t\t\tmindist = subd;\n\t\t\t\t\t\tm = static_cast<U>(((subm & 1) ? 1 << i : 0) + ((subm & 2) ? 1 << j : 0));\n\t\t\t\t\t\tw[i] = subw[0];\n\t\t\t\t\t\tw[j] = subw[1];\n\t\t\t\t\t\tw[imd3[j]] = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (mindist < 0)\n\t\t\t{\n\t\t\t\tconst btScalar d = btDot(a, n);\n\t\t\t\tconst btScalar s = btSqrt(l);\n\t\t\t\tconst btVector3 p = n * (d / l);\n\t\t\t\tmindist = p.length2();\n\t\t\t\tm = 7;\n\t\t\t\tw[0] = (btCross(dl[1], b - p)).length() / s;\n\t\t\t\tw[1] = (btCross(dl[2], c - p)).length() / s;\n\t\t\t\tw[2] = 1 - (w[0] + w[1]);\n\t\t\t}\n\t\t\treturn (mindist);\n\t\t}\n\t\treturn (-1);\n\t}\n\tstatic btScalar projectorigin(const btVector3& a,\n\t\t\t\t\t\t\t\t  const btVector3& b,\n\t\t\t\t\t\t\t\t  const btVector3& c,\n\t\t\t\t\t\t\t\t  const btVector3& d,\n\t\t\t\t\t\t\t\t  btScalar* w, U& m)\n\t{\n\t\tstatic const U imd3[] = {1, 2, 0};\n\t\tconst btVector3* vt[] = {&a, &b, &c, &d};\n\t\tconst btVector3 dl[] = {a - d, b - d, c - d};\n\t\tconst btScalar vl = det(dl[0], dl[1], dl[2]);\n\t\tconst bool ng = (vl * btDot(a, btCross(b - c, a - b))) <= 0;\n\t\tif (ng && (btFabs(vl) > GJK_SIMPLEX4_EPS))\n\t\t{\n\t\t\tbtScalar mindist = -1;\n\t\t\tbtScalar subw[3] = {0.f, 0.f, 0.f};\n\t\t\tU subm(0);\n\t\t\tfor (U i = 0; i < 3; ++i)\n\t\t\t{\n\t\t\t\tconst U j = imd3[i];\n\t\t\t\tconst btScalar s = vl * btDot(d, btCross(dl[i], dl[j]));\n\t\t\t\tif (s > 0)\n\t\t\t\t{\n\t\t\t\t\tconst btScalar subd = projectorigin(*vt[i], *vt[j], d, subw, subm);\n\t\t\t\t\tif ((mindist < 0) || (subd < mindist))\n\t\t\t\t\t{\n\t\t\t\t\t\tmindist = subd;\n\t\t\t\t\t\tm = static_cast<U>((subm & 1 ? 1 << i : 0) +\n\t\t\t\t\t\t\t\t\t\t   (subm & 2 ? 1 << j : 0) +\n\t\t\t\t\t\t\t\t\t\t   (subm & 4 ? 8 : 0));\n\t\t\t\t\t\tw[i] = subw[0];\n\t\t\t\t\t\tw[j] = subw[1];\n\t\t\t\t\t\tw[imd3[j]] = 0;\n\t\t\t\t\t\tw[3] = subw[2];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (mindist < 0)\n\t\t\t{\n\t\t\t\tmindist = 0;\n\t\t\t\tm = 15;\n\t\t\t\tw[0] = det(c, b, d) / vl;\n\t\t\t\tw[1] = det(a, c, d) / vl;\n\t\t\t\tw[2] = det(b, a, d) / vl;\n\t\t\t\tw[3] = 1 - (w[0] + w[1] + w[2]);\n\t\t\t}\n\t\t\treturn (mindist);\n\t\t}\n\t\treturn (-1);\n\t}\n};\n\nenum eEpaStatus\n{\n\teEpaValid,\n\teEpaTouching,\n\teEpaDegenerated,\n\teEpaNonConvex,\n\teEpaInvalidHull,\n\teEpaOutOfFaces,\n\teEpaOutOfVertices,\n\teEpaAccuraryReached,\n\teEpaFallBack,\n\teEpaFailed\n};\n\n// EPA\ntemplate <typename btConvexTemplate>\nstruct EPA\n{\n\t/* Types\t\t*/\n\n\tstruct sFace\n\t{\n\t\tbtVector3 n;\n\t\tbtScalar d;\n\t\ttypename GJK<btConvexTemplate>::sSV* c[3];\n\t\tsFace* f[3];\n\t\tsFace* l[2];\n\t\tU1 e[3];\n\t\tU1 pass;\n\t};\n\tstruct sList\n\t{\n\t\tsFace* root;\n\t\tU count;\n\t\tsList() : root(0), count(0) {}\n\t};\n\tstruct sHorizon\n\t{\n\t\tsFace* cf;\n\t\tsFace* ff;\n\t\tU nf;\n\t\tsHorizon() : cf(0), ff(0), nf(0) {}\n\t};\n\n\t/* Fields\t\t*/\n\teEpaStatus m_status;\n\ttypename GJK<btConvexTemplate>::sSimplex m_result;\n\tbtVector3 m_normal;\n\tbtScalar m_depth;\n\ttypename GJK<btConvexTemplate>::sSV m_sv_store[EPA_MAX_VERTICES];\n\tsFace m_fc_store[EPA_MAX_FACES];\n\tU m_nextsv;\n\tsList m_hull;\n\tsList m_stock;\n\t/* Methods\t\t*/\n\tEPA()\n\t{\n\t\tInitialize();\n\t}\n\n\tstatic inline void bind(sFace* fa, U ea, sFace* fb, U eb)\n\t{\n\t\tfa->e[ea] = (U1)eb;\n\t\tfa->f[ea] = fb;\n\t\tfb->e[eb] = (U1)ea;\n\t\tfb->f[eb] = fa;\n\t}\n\tstatic inline void append(sList& list, sFace* face)\n\t{\n\t\tface->l[0] = 0;\n\t\tface->l[1] = list.root;\n\t\tif (list.root) list.root->l[0] = face;\n\t\tlist.root = face;\n\t\t++list.count;\n\t}\n\tstatic inline void remove(sList& list, sFace* face)\n\t{\n\t\tif (face->l[1]) face->l[1]->l[0] = face->l[0];\n\t\tif (face->l[0]) face->l[0]->l[1] = face->l[1];\n\t\tif (face == list.root) list.root = face->l[1];\n\t\t--list.count;\n\t}\n\n\tvoid Initialize()\n\t{\n\t\tm_status = eEpaFailed;\n\t\tm_normal = btVector3(0, 0, 0);\n\t\tm_depth = 0;\n\t\tm_nextsv = 0;\n\t\tfor (U i = 0; i < EPA_MAX_FACES; ++i)\n\t\t{\n\t\t\tappend(m_stock, &m_fc_store[EPA_MAX_FACES - i - 1]);\n\t\t}\n\t}\n\teEpaStatus Evaluate(GJK<btConvexTemplate>& gjk, const btVector3& guess)\n\t{\n\t\ttypename GJK<btConvexTemplate>::sSimplex& simplex = *gjk.m_simplex;\n\t\tif ((simplex.rank > 1) && gjk.EncloseOrigin())\n\t\t{\n\t\t\t/* Clean up\t\t\t\t*/\n\t\t\twhile (m_hull.root)\n\t\t\t{\n\t\t\t\tsFace* f = m_hull.root;\n\t\t\t\tremove(m_hull, f);\n\t\t\t\tappend(m_stock, f);\n\t\t\t}\n\t\t\tm_status = eEpaValid;\n\t\t\tm_nextsv = 0;\n\t\t\t/* Orient simplex\t\t*/\n\t\t\tif (gjk.det(simplex.c[0]->w - simplex.c[3]->w,\n\t\t\t\t\t\tsimplex.c[1]->w - simplex.c[3]->w,\n\t\t\t\t\t\tsimplex.c[2]->w - simplex.c[3]->w) < 0)\n\t\t\t{\n\t\t\t\tbtSwap(simplex.c[0], simplex.c[1]);\n\t\t\t\tbtSwap(simplex.p[0], simplex.p[1]);\n\t\t\t}\n\t\t\t/* Build initial hull\t*/\n\t\t\tsFace* tetra[] = {newface(simplex.c[0], simplex.c[1], simplex.c[2], true),\n\t\t\t\t\t\t\t  newface(simplex.c[1], simplex.c[0], simplex.c[3], true),\n\t\t\t\t\t\t\t  newface(simplex.c[2], simplex.c[1], simplex.c[3], true),\n\t\t\t\t\t\t\t  newface(simplex.c[0], simplex.c[2], simplex.c[3], true)};\n\t\t\tif (m_hull.count == 4)\n\t\t\t{\n\t\t\t\tsFace* best = findbest();\n\t\t\t\tsFace outer = *best;\n\t\t\t\tU pass = 0;\n\t\t\t\tU iterations = 0;\n\t\t\t\tbind(tetra[0], 0, tetra[1], 0);\n\t\t\t\tbind(tetra[0], 1, tetra[2], 0);\n\t\t\t\tbind(tetra[0], 2, tetra[3], 0);\n\t\t\t\tbind(tetra[1], 1, tetra[3], 2);\n\t\t\t\tbind(tetra[1], 2, tetra[2], 1);\n\t\t\t\tbind(tetra[2], 2, tetra[3], 1);\n\t\t\t\tm_status = eEpaValid;\n\t\t\t\tfor (; iterations < EPA_MAX_ITERATIONS; ++iterations)\n\t\t\t\t{\n\t\t\t\t\tif (m_nextsv < EPA_MAX_VERTICES)\n\t\t\t\t\t{\n\t\t\t\t\t\tsHorizon horizon;\n\t\t\t\t\t\ttypename GJK<btConvexTemplate>::sSV* w = &m_sv_store[m_nextsv++];\n\t\t\t\t\t\tbool valid = true;\n\t\t\t\t\t\tbest->pass = (U1)(++pass);\n\t\t\t\t\t\tgjk.getsupport(best->n, *w);\n\t\t\t\t\t\tconst btScalar wdist = btDot(best->n, w->w) - best->d;\n\t\t\t\t\t\tif (wdist > EPA_ACCURACY)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfor (U j = 0; (j < 3) && valid; ++j)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvalid &= expand(pass, w,\n\t\t\t\t\t\t\t\t\t\t\t\tbest->f[j], best->e[j],\n\t\t\t\t\t\t\t\t\t\t\t\thorizon);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (valid && (horizon.nf >= 3))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tbind(horizon.cf, 1, horizon.ff, 2);\n\t\t\t\t\t\t\t\tremove(m_hull, best);\n\t\t\t\t\t\t\t\tappend(m_stock, best);\n\t\t\t\t\t\t\t\tbest = findbest();\n\t\t\t\t\t\t\t\touter = *best;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tm_status = eEpaInvalidHull;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tm_status = eEpaAccuraryReached;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tm_status = eEpaOutOfVertices;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst btVector3 projection = outer.n * outer.d;\n\t\t\t\tm_normal = outer.n;\n\t\t\t\tm_depth = outer.d;\n\t\t\t\tm_result.rank = 3;\n\t\t\t\tm_result.c[0] = outer.c[0];\n\t\t\t\tm_result.c[1] = outer.c[1];\n\t\t\t\tm_result.c[2] = outer.c[2];\n\t\t\t\tm_result.p[0] = btCross(outer.c[1]->w - projection,\n\t\t\t\t\t\t\t\t\t\touter.c[2]->w - projection)\n\t\t\t\t\t\t\t\t\t.length();\n\t\t\t\tm_result.p[1] = btCross(outer.c[2]->w - projection,\n\t\t\t\t\t\t\t\t\t\touter.c[0]->w - projection)\n\t\t\t\t\t\t\t\t\t.length();\n\t\t\t\tm_result.p[2] = btCross(outer.c[0]->w - projection,\n\t\t\t\t\t\t\t\t\t\touter.c[1]->w - projection)\n\t\t\t\t\t\t\t\t\t.length();\n\t\t\t\tconst btScalar sum = m_result.p[0] + m_result.p[1] + m_result.p[2];\n\t\t\t\tm_result.p[0] /= sum;\n\t\t\t\tm_result.p[1] /= sum;\n\t\t\t\tm_result.p[2] /= sum;\n\t\t\t\treturn (m_status);\n\t\t\t}\n\t\t}\n\t\t/* Fallback\t\t*/\n\t\tm_status = eEpaFallBack;\n\t\tm_normal = -guess;\n\t\tconst btScalar nl = m_normal.length();\n\t\tif (nl > 0)\n\t\t\tm_normal = m_normal / nl;\n\t\telse\n\t\t\tm_normal = btVector3(1, 0, 0);\n\t\tm_depth = 0;\n\t\tm_result.rank = 1;\n\t\tm_result.c[0] = simplex.c[0];\n\t\tm_result.p[0] = 1;\n\t\treturn (m_status);\n\t}\n\tbool getedgedist(sFace* face, typename GJK<btConvexTemplate>::sSV* a, typename GJK<btConvexTemplate>::sSV* b, btScalar& dist)\n\t{\n\t\tconst btVector3 ba = b->w - a->w;\n\t\tconst btVector3 n_ab = btCross(ba, face->n);   // Outward facing edge normal direction, on triangle plane\n\t\tconst btScalar a_dot_nab = btDot(a->w, n_ab);  // Only care about the sign to determine inside/outside, so not normalization required\n\n\t\tif (a_dot_nab < 0)\n\t\t{\n\t\t\t// Outside of edge a->b\n\n\t\t\tconst btScalar ba_l2 = ba.length2();\n\t\t\tconst btScalar a_dot_ba = btDot(a->w, ba);\n\t\t\tconst btScalar b_dot_ba = btDot(b->w, ba);\n\n\t\t\tif (a_dot_ba > 0)\n\t\t\t{\n\t\t\t\t// Pick distance vertex a\n\t\t\t\tdist = a->w.length();\n\t\t\t}\n\t\t\telse if (b_dot_ba < 0)\n\t\t\t{\n\t\t\t\t// Pick distance vertex b\n\t\t\t\tdist = b->w.length();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Pick distance to edge a->b\n\t\t\t\tconst btScalar a_dot_b = btDot(a->w, b->w);\n\t\t\t\tdist = btSqrt(btMax((a->w.length2() * b->w.length2() - a_dot_b * a_dot_b) / ba_l2, (btScalar)0));\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\tsFace* newface(typename GJK<btConvexTemplate>::sSV* a, typename GJK<btConvexTemplate>::sSV* b, typename GJK<btConvexTemplate>::sSV* c, bool forced)\n\t{\n\t\tif (m_stock.root)\n\t\t{\n\t\t\tsFace* face = m_stock.root;\n\t\t\tremove(m_stock, face);\n\t\t\tappend(m_hull, face);\n\t\t\tface->pass = 0;\n\t\t\tface->c[0] = a;\n\t\t\tface->c[1] = b;\n\t\t\tface->c[2] = c;\n\t\t\tface->n = btCross(b->w - a->w, c->w - a->w);\n\t\t\tconst btScalar l = face->n.length();\n\t\t\tconst bool v = l > EPA_ACCURACY;\n\n\t\t\tif (v)\n\t\t\t{\n\t\t\t\tif (!(getedgedist(face, a, b, face->d) ||\n\t\t\t\t\t  getedgedist(face, b, c, face->d) ||\n\t\t\t\t\t  getedgedist(face, c, a, face->d)))\n\t\t\t\t{\n\t\t\t\t\t// Origin projects to the interior of the triangle\n\t\t\t\t\t// Use distance to triangle plane\n\t\t\t\t\tface->d = btDot(a->w, face->n) / l;\n\t\t\t\t}\n\n\t\t\t\tface->n /= l;\n\t\t\t\tif (forced || (face->d >= -EPA_PLANE_EPS))\n\t\t\t\t{\n\t\t\t\t\treturn face;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tm_status = eEpaNonConvex;\n\t\t\t}\n\t\t\telse\n\t\t\t\tm_status = eEpaDegenerated;\n\n\t\t\tremove(m_hull, face);\n\t\t\tappend(m_stock, face);\n\t\t\treturn 0;\n\t\t}\n\t\tm_status = m_stock.root ? eEpaOutOfVertices : eEpaOutOfFaces;\n\t\treturn 0;\n\t}\n\tsFace* findbest()\n\t{\n\t\tsFace* minf = m_hull.root;\n\t\tbtScalar mind = minf->d * minf->d;\n\t\tfor (sFace* f = minf->l[1]; f; f = f->l[1])\n\t\t{\n\t\t\tconst btScalar sqd = f->d * f->d;\n\t\t\tif (sqd < mind)\n\t\t\t{\n\t\t\t\tminf = f;\n\t\t\t\tmind = sqd;\n\t\t\t}\n\t\t}\n\t\treturn (minf);\n\t}\n\tbool expand(U pass, typename GJK<btConvexTemplate>::sSV* w, sFace* f, U e, sHorizon& horizon)\n\t{\n\t\tstatic const U i1m3[] = {1, 2, 0};\n\t\tstatic const U i2m3[] = {2, 0, 1};\n\t\tif (f->pass != pass)\n\t\t{\n\t\t\tconst U e1 = i1m3[e];\n\t\t\tif ((btDot(f->n, w->w) - f->d) < -EPA_PLANE_EPS)\n\t\t\t{\n\t\t\t\tsFace* nf = newface(f->c[e1], f->c[e], w, false);\n\t\t\t\tif (nf)\n\t\t\t\t{\n\t\t\t\t\tbind(nf, 0, f, e);\n\t\t\t\t\tif (horizon.cf)\n\t\t\t\t\t\tbind(horizon.cf, 1, nf, 2);\n\t\t\t\t\telse\n\t\t\t\t\t\thorizon.ff = nf;\n\t\t\t\t\thorizon.cf = nf;\n\t\t\t\t\t++horizon.nf;\n\t\t\t\t\treturn (true);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst U e2 = i2m3[e];\n\t\t\t\tf->pass = (U1)pass;\n\t\t\t\tif (expand(pass, w, f->f[e1], f->e[e1], horizon) &&\n\t\t\t\t\texpand(pass, w, f->f[e2], f->e[e2], horizon))\n\t\t\t\t{\n\t\t\t\t\tremove(m_hull, f);\n\t\t\t\t\tappend(m_stock, f);\n\t\t\t\t\treturn (true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn (false);\n\t}\n};\n\ntemplate <typename btConvexTemplate>\nstatic void Initialize(const btConvexTemplate& a, const btConvexTemplate& b,\n\t\t\t\t\t   btGjkEpaSolver3::sResults& results,\n\t\t\t\t\t   MinkowskiDiff<btConvexTemplate>& shape)\n{\n\t/* Results\t\t*/\n\tresults.witnesses[0] =\n\t\tresults.witnesses[1] = btVector3(0, 0, 0);\n\tresults.status = btGjkEpaSolver3::sResults::Separated;\n\t/* Shape\t\t*/\n\n\tshape.m_toshape1 = b.getWorldTransform().getBasis().transposeTimes(a.getWorldTransform().getBasis());\n\tshape.m_toshape0 = a.getWorldTransform().inverseTimes(b.getWorldTransform());\n}\n\n//\n// Api\n//\n\n//\ntemplate <typename btConvexTemplate>\nbool btGjkEpaSolver3_Distance(const btConvexTemplate& a, const btConvexTemplate& b,\n\t\t\t\t\t\t\t  const btVector3& guess,\n\t\t\t\t\t\t\t  btGjkEpaSolver3::sResults& results)\n{\n\tMinkowskiDiff<btConvexTemplate> shape(a, b);\n\tInitialize(a, b, results, shape);\n\tGJK<btConvexTemplate> gjk(a, b);\n\teGjkStatus gjk_status = gjk.Evaluate(shape, guess);\n\tif (gjk_status == eGjkValid)\n\t{\n\t\tbtVector3 w0 = btVector3(0, 0, 0);\n\t\tbtVector3 w1 = btVector3(0, 0, 0);\n\t\tfor (U i = 0; i < gjk.m_simplex->rank; ++i)\n\t\t{\n\t\t\tconst btScalar p = gjk.m_simplex->p[i];\n\t\t\tw0 += shape.Support(gjk.m_simplex->c[i]->d, 0) * p;\n\t\t\tw1 += shape.Support(-gjk.m_simplex->c[i]->d, 1) * p;\n\t\t}\n\t\tresults.witnesses[0] = a.getWorldTransform() * w0;\n\t\tresults.witnesses[1] = a.getWorldTransform() * w1;\n\t\tresults.normal = w0 - w1;\n\t\tresults.distance = results.normal.length();\n\t\tresults.normal /= results.distance > GJK_MIN_DISTANCE ? results.distance : 1;\n\t\treturn (true);\n\t}\n\telse\n\t{\n\t\tresults.status = gjk_status == eGjkInside ? btGjkEpaSolver3::sResults::Penetrating : btGjkEpaSolver3::sResults::GJK_Failed;\n\t\treturn (false);\n\t}\n}\n\ntemplate <typename btConvexTemplate>\nbool btGjkEpaSolver3_Penetration(const btConvexTemplate& a,\n\t\t\t\t\t\t\t\t const btConvexTemplate& b,\n\t\t\t\t\t\t\t\t const btVector3& guess,\n\t\t\t\t\t\t\t\t btGjkEpaSolver3::sResults& results)\n{\n\tMinkowskiDiff<btConvexTemplate> shape(a, b);\n\tInitialize(a, b, results, shape);\n\tGJK<btConvexTemplate> gjk(a, b);\n\teGjkStatus gjk_status = gjk.Evaluate(shape, -guess);\n\tswitch (gjk_status)\n\t{\n\t\tcase eGjkInside:\n\t\t{\n\t\t\tEPA<btConvexTemplate> epa;\n\t\t\teEpaStatus epa_status = epa.Evaluate(gjk, -guess);\n\t\t\tif (epa_status != eEpaFailed)\n\t\t\t{\n\t\t\t\tbtVector3 w0 = btVector3(0, 0, 0);\n\t\t\t\tfor (U i = 0; i < epa.m_result.rank; ++i)\n\t\t\t\t{\n\t\t\t\t\tw0 += shape.Support(epa.m_result.c[i]->d, 0) * epa.m_result.p[i];\n\t\t\t\t}\n\t\t\t\tresults.status = btGjkEpaSolver3::sResults::Penetrating;\n\t\t\t\tresults.witnesses[0] = a.getWorldTransform() * w0;\n\t\t\t\tresults.witnesses[1] = a.getWorldTransform() * (w0 - epa.m_normal * epa.m_depth);\n\t\t\t\tresults.normal = -epa.m_normal;\n\t\t\t\tresults.distance = -epa.m_depth;\n\t\t\t\treturn (true);\n\t\t\t}\n\t\t\telse\n\t\t\t\tresults.status = btGjkEpaSolver3::sResults::EPA_Failed;\n\t\t}\n\t\tbreak;\n\t\tcase eGjkFailed:\n\t\t\tresults.status = btGjkEpaSolver3::sResults::GJK_Failed;\n\t\t\tbreak;\n\t\tdefault:\n\t\t{\n\t\t}\n\t}\n\treturn (false);\n}\n\n#if 0\nint\tbtComputeGjkEpaPenetration2(const btCollisionDescription& colDesc, btDistanceInfo* distInfo)\n{\n    btGjkEpaSolver3::sResults results;\n    btVector3 guess = colDesc.m_firstDir;\n    \n    bool res = btGjkEpaSolver3::Penetration(colDesc.m_objA,colDesc.m_objB,\n                                            colDesc.m_transformA,colDesc.m_transformB,\n                                            colDesc.m_localSupportFuncA,colDesc.m_localSupportFuncB,\n                                            guess,\n                                            results);\n    if (res)\n    {\n        if ((results.status==btGjkEpaSolver3::sResults::Penetrating) || results.status==GJK::eStatus::Inside)\n        {\n            //normal could be 'swapped'\n            \n            distInfo->m_distance = results.distance;\n            distInfo->m_normalBtoA = results.normal;\n            btVector3 tmpNormalInB = results.witnesses[1]-results.witnesses[0];\n            btScalar lenSqr = tmpNormalInB.length2();\n            if (lenSqr <= (SIMD_EPSILON*SIMD_EPSILON))\n            {\n                tmpNormalInB = results.normal;\n                lenSqr = results.normal.length2();\n            }\n            \n            if (lenSqr > (SIMD_EPSILON*SIMD_EPSILON))\n            {\n                tmpNormalInB /= btSqrt(lenSqr);\n                btScalar distance2 = -(results.witnesses[0]-results.witnesses[1]).length();\n                //only replace valid penetrations when the result is deeper (check)\n                //if ((distance2 < results.distance))\n                {\n                    distInfo->m_distance = distance2;\n                    distInfo->m_pointOnA= results.witnesses[0];\n                    distInfo->m_pointOnB= results.witnesses[1];\n                    distInfo->m_normalBtoA= tmpNormalInB;\n                    return 0;\n                }\n            }\n        }\n        \n    }\n    \n    return -1;\n}\n#endif\n\ntemplate <typename btConvexTemplate, typename btDistanceInfoTemplate>\nint btComputeGjkDistance(const btConvexTemplate& a, const btConvexTemplate& b,\n\t\t\t\t\t\t const btGjkCollisionDescription& colDesc, btDistanceInfoTemplate* distInfo)\n{\n\tbtGjkEpaSolver3::sResults results;\n\tbtVector3 guess = colDesc.m_firstDir;\n\n\tbool isSeparated = btGjkEpaSolver3_Distance(a, b,\n\t\t\t\t\t\t\t\t\t\t\t\tguess,\n\t\t\t\t\t\t\t\t\t\t\t\tresults);\n\tif (isSeparated)\n\t{\n\t\tdistInfo->m_distance = results.distance;\n\t\tdistInfo->m_pointOnA = results.witnesses[0];\n\t\tdistInfo->m_pointOnB = results.witnesses[1];\n\t\tdistInfo->m_normalBtoA = results.normal;\n\t\treturn 0;\n\t}\n\n\treturn -1;\n}\n\n/* Symbols cleanup\t\t*/\n\n#undef GJK_MAX_ITERATIONS\n#undef GJK_ACCURARY\n#undef GJK_MIN_DISTANCE\n#undef GJK_DUPLICATED_EPS\n#undef GJK_SIMPLEX2_EPS\n#undef GJK_SIMPLEX3_EPS\n#undef GJK_SIMPLEX4_EPS\n\n#undef EPA_MAX_VERTICES\n#undef EPA_MAX_FACES\n#undef EPA_MAX_ITERATIONS\n#undef EPA_ACCURACY\n#undef EPA_FALLBACK\n#undef EPA_PLANE_EPS\n#undef EPA_INSIDE_EPS\n\n#endif  //BT_GJK_EPA3_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nEPA Copyright (c) Ricardo Padrela 2006 \n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n#ifndef BT_GJP_EPA_PENETRATION_DEPTH_H\n#define BT_GJP_EPA_PENETRATION_DEPTH_H\n\n#include \"btConvexPenetrationDepthSolver.h\"\n\n///EpaPenetrationDepthSolver uses the Expanding Polytope Algorithm to\n///calculate the penetration depth between two convex shapes.\nclass btGjkEpaPenetrationDepthSolver : public btConvexPenetrationDepthSolver\n{\npublic:\n\tbtGjkEpaPenetrationDepthSolver()\n\t{\n\t}\n\n\tbool calcPenDepth(btSimplexSolverInterface& simplexSolver,\n\t\t\t\t\t  const btConvexShape* pConvexA, const btConvexShape* pConvexB,\n\t\t\t\t\t  const btTransform& transformA, const btTransform& transformB,\n\t\t\t\t\t  btVector3& v, btVector3& wWitnessOnA, btVector3& wWitnessOnB,\n\t\t\t\t\t  class btIDebugDraw* debugDraw);\n\nprivate:\n};\n\n#endif  // BT_GJP_EPA_PENETRATION_DEPTH_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GJK_PAIR_DETECTOR_H\n#define BT_GJK_PAIR_DETECTOR_H\n\n#include \"btDiscreteCollisionDetectorInterface.h\"\n#include \"BulletCollision/CollisionShapes/btCollisionMargin.h\"\n\nclass btConvexShape;\n#include \"btSimplexSolverInterface.h\"\nclass btConvexPenetrationDepthSolver;\n\n/// btGjkPairDetector uses GJK to implement the btDiscreteCollisionDetectorInterface\nclass btGjkPairDetector : public btDiscreteCollisionDetectorInterface\n{\n\tbtVector3 m_cachedSeparatingAxis;\n\tbtConvexPenetrationDepthSolver* m_penetrationDepthSolver;\n\tbtSimplexSolverInterface* m_simplexSolver;\n\tconst btConvexShape* m_minkowskiA;\n\tconst btConvexShape* m_minkowskiB;\n\tint m_shapeTypeA;\n\tint m_shapeTypeB;\n\tbtScalar m_marginA;\n\tbtScalar m_marginB;\n\n\tbool m_ignoreMargin;\n\tbtScalar m_cachedSeparatingDistance;\n\npublic:\n\t//some debugging to fix degeneracy problems\n\tint m_lastUsedMethod;\n\tint m_curIter;\n\tint m_degenerateSimplex;\n\tint m_catchDegeneracies;\n\tint m_fixContactNormalDirection;\n\n\tbtGjkPairDetector(const btConvexShape* objectA, const btConvexShape* objectB, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* penetrationDepthSolver);\n\tbtGjkPairDetector(const btConvexShape* objectA, const btConvexShape* objectB, int shapeTypeA, int shapeTypeB, btScalar marginA, btScalar marginB, btSimplexSolverInterface* simplexSolver, btConvexPenetrationDepthSolver* penetrationDepthSolver);\n\tvirtual ~btGjkPairDetector(){};\n\n\tvirtual void getClosestPoints(const ClosestPointInput& input, Result& output, class btIDebugDraw* debugDraw, bool swapResults = false);\n\n\tvoid getClosestPointsNonVirtual(const ClosestPointInput& input, Result& output, class btIDebugDraw* debugDraw);\n\n\tvoid setMinkowskiA(const btConvexShape* minkA)\n\t{\n\t\tm_minkowskiA = minkA;\n\t}\n\n\tvoid setMinkowskiB(const btConvexShape* minkB)\n\t{\n\t\tm_minkowskiB = minkB;\n\t}\n\tvoid setCachedSeparatingAxis(const btVector3& separatingAxis)\n\t{\n\t\tm_cachedSeparatingAxis = separatingAxis;\n\t}\n\n\tconst btVector3& getCachedSeparatingAxis() const\n\t{\n\t\treturn m_cachedSeparatingAxis;\n\t}\n\tbtScalar getCachedSeparatingDistance() const\n\t{\n\t\treturn m_cachedSeparatingDistance;\n\t}\n\n\tvoid setPenetrationDepthSolver(btConvexPenetrationDepthSolver* penetrationDepthSolver)\n\t{\n\t\tm_penetrationDepthSolver = penetrationDepthSolver;\n\t}\n\n\t///don't use setIgnoreMargin, it's for Bullet's internal use\n\tvoid setIgnoreMargin(bool ignoreMargin)\n\t{\n\t\tm_ignoreMargin = ignoreMargin;\n\t}\n};\n\n#endif  //BT_GJK_PAIR_DETECTOR_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MANIFOLD_CONTACT_POINT_H\n#define BT_MANIFOLD_CONTACT_POINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransformUtil.h\"\n\n#ifdef PFX_USE_FREE_VECTORMATH\n#include \"physics_effects/base_level/solver/pfx_constraint_row.h\"\ntypedef sce::PhysicsEffects::PfxConstraintRow btConstraintRow;\n#else\n// Don't change following order of parameters\nATTRIBUTE_ALIGNED16(struct)\nbtConstraintRow\n{\n\tbtScalar m_normal[3];\n\tbtScalar m_rhs;\n\tbtScalar m_jacDiagInv;\n\tbtScalar m_lowerLimit;\n\tbtScalar m_upperLimit;\n\tbtScalar m_accumImpulse;\n};\ntypedef btConstraintRow PfxConstraintRow;\n#endif  //PFX_USE_FREE_VECTORMATH\n\nenum btContactPointFlags\n{\n\tBT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED = 1,\n\tBT_CONTACT_FLAG_HAS_CONTACT_CFM = 2,\n\tBT_CONTACT_FLAG_HAS_CONTACT_ERP = 4,\n\tBT_CONTACT_FLAG_CONTACT_STIFFNESS_DAMPING = 8,\n\tBT_CONTACT_FLAG_FRICTION_ANCHOR = 16,\n};\n\n/// ManifoldContactPoint collects and maintains persistent contactpoints.\n/// used to improve stability and performance of rigidbody dynamics response.\nclass btManifoldPoint\n{\npublic:\n\tbtManifoldPoint()\n\t\t: m_userPersistentData(0),\n\t\t  m_contactPointFlags(0),\n\t\t  m_appliedImpulse(0.f),\n\t\t  m_prevRHS(0.f),\n\t\t  m_appliedImpulseLateral1(0.f),\n\t\t  m_appliedImpulseLateral2(0.f),\n\t\t  m_contactMotion1(0.f),\n\t\t  m_contactMotion2(0.f),\n\t\t  m_contactCFM(0.f),\n\t\t  m_contactERP(0.f),\n\t\t  m_frictionCFM(0.f),\n\t\t  m_lifeTime(0)\n\t{\n\t}\n\n\tbtManifoldPoint(const btVector3& pointA, const btVector3& pointB,\n\t\t\t\t\tconst btVector3& normal,\n\t\t\t\t\tbtScalar distance) : m_localPointA(pointA),\n\t\t\t\t\t\t\t\t\t\t m_localPointB(pointB),\n\t\t\t\t\t\t\t\t\t\t m_normalWorldOnB(normal),\n\t\t\t\t\t\t\t\t\t\t m_distance1(distance),\n\t\t\t\t\t\t\t\t\t\t m_combinedFriction(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t m_combinedRollingFriction(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t m_combinedSpinningFriction(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t m_combinedRestitution(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t m_userPersistentData(0),\n\t\t\t\t\t\t\t\t\t\t m_contactPointFlags(0),\n\t\t\t\t\t\t\t\t\t\t m_appliedImpulse(0.f),\n\t\t\t\t\t\t\t\t\t\t m_prevRHS(0.f),\n\t\t\t\t\t\t\t\t\t\t m_appliedImpulseLateral1(0.f),\n\t\t\t\t\t\t\t\t\t\t m_appliedImpulseLateral2(0.f),\n\t\t\t\t\t\t\t\t\t\t m_contactMotion1(0.f),\n\t\t\t\t\t\t\t\t\t\t m_contactMotion2(0.f),\n\t\t\t\t\t\t\t\t\t\t m_contactCFM(0.f),\n\t\t\t\t\t\t\t\t\t\t m_contactERP(0.f),\n\t\t\t\t\t\t\t\t\t\t m_frictionCFM(0.f),\n\t\t\t\t\t\t\t\t\t\t m_lifeTime(0)\n\t{\n\t}\n\n\tbtVector3 m_localPointA;\n\tbtVector3 m_localPointB;\n\tbtVector3 m_positionWorldOnB;\n\t///m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity\n\tbtVector3 m_positionWorldOnA;\n\tbtVector3 m_normalWorldOnB;\n\n\tbtScalar m_distance1;\n\tbtScalar m_combinedFriction;\n\tbtScalar m_combinedRollingFriction;   //torsional friction orthogonal to contact normal, useful to make spheres stop rolling forever\n\tbtScalar m_combinedSpinningFriction;  //torsional friction around contact normal, useful for grasping objects\n\tbtScalar m_combinedRestitution;\n\n\t//BP mod, store contact triangles.\n\tint m_partId0;\n\tint m_partId1;\n\tint m_index0;\n\tint m_index1;\n\n\tmutable void* m_userPersistentData;\n\t//bool\t\t\tm_lateralFrictionInitialized;\n\tint m_contactPointFlags;\n\n\tbtScalar m_appliedImpulse;\n\tbtScalar m_prevRHS;\n\tbtScalar m_appliedImpulseLateral1;\n\tbtScalar m_appliedImpulseLateral2;\n\tbtScalar m_contactMotion1;\n\tbtScalar m_contactMotion2;\n\n\tunion {\n\t\tbtScalar m_contactCFM;\n\t\tbtScalar m_combinedContactStiffness1;\n\t};\n\n\tunion {\n\t\tbtScalar m_contactERP;\n\t\tbtScalar m_combinedContactDamping1;\n\t};\n\n\tbtScalar m_frictionCFM;\n\n\tint m_lifeTime;  //lifetime of the contactpoint in frames\n\n\tbtVector3 m_lateralFrictionDir1;\n\tbtVector3 m_lateralFrictionDir2;\n\n\tbtScalar getDistance() const\n\t{\n\t\treturn m_distance1;\n\t}\n\tint getLifeTime() const\n\t{\n\t\treturn m_lifeTime;\n\t}\n\n\tconst btVector3& getPositionWorldOnA() const\n\t{\n\t\treturn m_positionWorldOnA;\n\t\t//\t\t\t\treturn m_positionWorldOnB + m_normalWorldOnB * m_distance1;\n\t}\n\n\tconst btVector3& getPositionWorldOnB() const\n\t{\n\t\treturn m_positionWorldOnB;\n\t}\n\n\tvoid setDistance(btScalar dist)\n\t{\n\t\tm_distance1 = dist;\n\t}\n\n\t///this returns the most recent applied impulse, to satisfy contact constraints by the constraint solver\n\tbtScalar getAppliedImpulse() const\n\t{\n\t\treturn m_appliedImpulse;\n\t}\n};\n\n#endif  //BT_MANIFOLD_CONTACT_POINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H\n#define BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H\n\n#include \"btConvexPenetrationDepthSolver.h\"\n\n///MinkowskiPenetrationDepthSolver implements bruteforce penetration depth estimation.\n///Implementation is based on sampling the depth using support mapping, and using GJK step to get the witness points.\nclass btMinkowskiPenetrationDepthSolver : public btConvexPenetrationDepthSolver\n{\nprotected:\n\tstatic btVector3* getPenetrationDirections();\n\npublic:\n\tvirtual bool calcPenDepth(btSimplexSolverInterface& simplexSolver,\n\t\t\t\t\t\t\t  const btConvexShape* convexA, const btConvexShape* convexB,\n\t\t\t\t\t\t\t  const btTransform& transA, const btTransform& transB,\n\t\t\t\t\t\t\t  btVector3& v, btVector3& pa, btVector3& pb,\n\t\t\t\t\t\t\t  class btIDebugDraw* debugDraw);\n};\n\n#endif  //BT_MINKOWSKI_PENETRATION_DEPTH_SOLVER_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btMprPenetration.h",
    "content": "\n/***\n * ---------------------------------\n * Copyright (c)2012 Daniel Fiser <danfis@danfis.cz>\n *\n *  This file was ported from mpr.c file, part of libccd.\n *  The Minkoski Portal Refinement implementation was ported \n *  to OpenCL by Erwin Coumans for the Bullet 3 Physics library.\n *  The original MPR idea and implementation is by Gary Snethen\n *  in XenoCollide, see http://github.com/erwincoumans/xenocollide\n *\n *  Distributed under the OSI-approved BSD License (the \"License\");\n *  see <http://www.opensource.org/licenses/bsd-license.php>.\n *  This software is distributed WITHOUT ANY WARRANTY; without even the\n *  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n *  See the License for more information.\n */\n\n///2014 Oct, Erwin Coumans, Use templates to avoid void* casts\n\n#ifndef BT_MPR_PENETRATION_H\n#define BT_MPR_PENETRATION_H\n\n#define BT_DEBUG_MPR1\n\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n//#define MPR_AVERAGE_CONTACT_POSITIONS\n\nstruct btMprCollisionDescription\n{\n\tbtVector3 m_firstDir;\n\tint m_maxGjkIterations;\n\tbtScalar m_maximumDistanceSquared;\n\tbtScalar m_gjkRelError2;\n\n\tbtMprCollisionDescription()\n\t\t: m_firstDir(0, 1, 0),\n\t\t  m_maxGjkIterations(1000),\n\t\t  m_maximumDistanceSquared(1e30f),\n\t\t  m_gjkRelError2(1.0e-6)\n\t{\n\t}\n\tvirtual ~btMprCollisionDescription()\n\t{\n\t}\n};\n\nstruct btMprDistanceInfo\n{\n\tbtVector3 m_pointOnA;\n\tbtVector3 m_pointOnB;\n\tbtVector3 m_normalBtoA;\n\tbtScalar m_distance;\n};\n\n#ifdef __cplusplus\n#define BT_MPR_SQRT sqrtf\n#else\n#define BT_MPR_SQRT sqrt\n#endif\n#define BT_MPR_FMIN(x, y) ((x) < (y) ? (x) : (y))\n#define BT_MPR_FABS fabs\n\n#define BT_MPR_TOLERANCE 1E-6f\n#define BT_MPR_MAX_ITERATIONS 1000\n\nstruct _btMprSupport_t\n{\n\tbtVector3 v;   //!< Support point in minkowski sum\n\tbtVector3 v1;  //!< Support point in obj1\n\tbtVector3 v2;  //!< Support point in obj2\n};\ntypedef struct _btMprSupport_t btMprSupport_t;\n\nstruct _btMprSimplex_t\n{\n\tbtMprSupport_t ps[4];\n\tint last;  //!< index of last added point\n};\ntypedef struct _btMprSimplex_t btMprSimplex_t;\n\ninline btMprSupport_t *btMprSimplexPointW(btMprSimplex_t *s, int idx)\n{\n\treturn &s->ps[idx];\n}\n\ninline void btMprSimplexSetSize(btMprSimplex_t *s, int size)\n{\n\ts->last = size - 1;\n}\n\n#ifdef DEBUG_MPR\ninline void btPrintPortalVertex(_btMprSimplex_t *portal, int index)\n{\n\tprintf(\"portal[%d].v = %f,%f,%f, v1=%f,%f,%f, v2=%f,%f,%f\\n\", index, portal->ps[index].v.x(), portal->ps[index].v.y(), portal->ps[index].v.z(),\n\t\t   portal->ps[index].v1.x(), portal->ps[index].v1.y(), portal->ps[index].v1.z(),\n\t\t   portal->ps[index].v2.x(), portal->ps[index].v2.y(), portal->ps[index].v2.z());\n}\n#endif  //DEBUG_MPR\n\ninline int btMprSimplexSize(const btMprSimplex_t *s)\n{\n\treturn s->last + 1;\n}\n\ninline const btMprSupport_t *btMprSimplexPoint(const btMprSimplex_t *s, int idx)\n{\n\t// here is no check on boundaries\n\treturn &s->ps[idx];\n}\n\ninline void btMprSupportCopy(btMprSupport_t *d, const btMprSupport_t *s)\n{\n\t*d = *s;\n}\n\ninline void btMprSimplexSet(btMprSimplex_t *s, size_t pos, const btMprSupport_t *a)\n{\n\tbtMprSupportCopy(s->ps + pos, a);\n}\n\ninline void btMprSimplexSwap(btMprSimplex_t *s, size_t pos1, size_t pos2)\n{\n\tbtMprSupport_t supp;\n\n\tbtMprSupportCopy(&supp, &s->ps[pos1]);\n\tbtMprSupportCopy(&s->ps[pos1], &s->ps[pos2]);\n\tbtMprSupportCopy(&s->ps[pos2], &supp);\n}\n\ninline int btMprIsZero(float val)\n{\n\treturn BT_MPR_FABS(val) < FLT_EPSILON;\n}\n\ninline int btMprEq(float _a, float _b)\n{\n\tfloat ab;\n\tfloat a, b;\n\n\tab = BT_MPR_FABS(_a - _b);\n\tif (BT_MPR_FABS(ab) < FLT_EPSILON)\n\t\treturn 1;\n\n\ta = BT_MPR_FABS(_a);\n\tb = BT_MPR_FABS(_b);\n\tif (b > a)\n\t{\n\t\treturn ab < FLT_EPSILON * b;\n\t}\n\telse\n\t{\n\t\treturn ab < FLT_EPSILON * a;\n\t}\n}\n\ninline int btMprVec3Eq(const btVector3 *a, const btVector3 *b)\n{\n\treturn btMprEq((*a).x(), (*b).x()) && btMprEq((*a).y(), (*b).y()) && btMprEq((*a).z(), (*b).z());\n}\n\ntemplate <typename btConvexTemplate>\ninline void btFindOrigin(const btConvexTemplate &a, const btConvexTemplate &b, const btMprCollisionDescription &colDesc, btMprSupport_t *center)\n{\n\tcenter->v1 = a.getObjectCenterInWorld();\n\tcenter->v2 = b.getObjectCenterInWorld();\n\tcenter->v = center->v1 - center->v2;\n}\n\ninline void btMprVec3Set(btVector3 *v, float x, float y, float z)\n{\n\tv->setValue(x, y, z);\n}\n\ninline void btMprVec3Add(btVector3 *v, const btVector3 *w)\n{\n\t*v += *w;\n}\n\ninline void btMprVec3Copy(btVector3 *v, const btVector3 *w)\n{\n\t*v = *w;\n}\n\ninline void btMprVec3Scale(btVector3 *d, float k)\n{\n\t*d *= k;\n}\n\ninline float btMprVec3Dot(const btVector3 *a, const btVector3 *b)\n{\n\tfloat dot;\n\n\tdot = btDot(*a, *b);\n\treturn dot;\n}\n\ninline float btMprVec3Len2(const btVector3 *v)\n{\n\treturn btMprVec3Dot(v, v);\n}\n\ninline void btMprVec3Normalize(btVector3 *d)\n{\n\tfloat k = 1.f / BT_MPR_SQRT(btMprVec3Len2(d));\n\tbtMprVec3Scale(d, k);\n}\n\ninline void btMprVec3Cross(btVector3 *d, const btVector3 *a, const btVector3 *b)\n{\n\t*d = btCross(*a, *b);\n}\n\ninline void btMprVec3Sub2(btVector3 *d, const btVector3 *v, const btVector3 *w)\n{\n\t*d = *v - *w;\n}\n\ninline void btPortalDir(const btMprSimplex_t *portal, btVector3 *dir)\n{\n\tbtVector3 v2v1, v3v1;\n\n\tbtMprVec3Sub2(&v2v1, &btMprSimplexPoint(portal, 2)->v,\n\t\t\t\t  &btMprSimplexPoint(portal, 1)->v);\n\tbtMprVec3Sub2(&v3v1, &btMprSimplexPoint(portal, 3)->v,\n\t\t\t\t  &btMprSimplexPoint(portal, 1)->v);\n\tbtMprVec3Cross(dir, &v2v1, &v3v1);\n\tbtMprVec3Normalize(dir);\n}\n\ninline int portalEncapsulesOrigin(const btMprSimplex_t *portal,\n\t\t\t\t\t\t\t\t  const btVector3 *dir)\n{\n\tfloat dot;\n\tdot = btMprVec3Dot(dir, &btMprSimplexPoint(portal, 1)->v);\n\treturn btMprIsZero(dot) || dot > 0.f;\n}\n\ninline int portalReachTolerance(const btMprSimplex_t *portal,\n\t\t\t\t\t\t\t\tconst btMprSupport_t *v4,\n\t\t\t\t\t\t\t\tconst btVector3 *dir)\n{\n\tfloat dv1, dv2, dv3, dv4;\n\tfloat dot1, dot2, dot3;\n\n\t// find the smallest dot product of dir and {v1-v4, v2-v4, v3-v4}\n\n\tdv1 = btMprVec3Dot(&btMprSimplexPoint(portal, 1)->v, dir);\n\tdv2 = btMprVec3Dot(&btMprSimplexPoint(portal, 2)->v, dir);\n\tdv3 = btMprVec3Dot(&btMprSimplexPoint(portal, 3)->v, dir);\n\tdv4 = btMprVec3Dot(&v4->v, dir);\n\n\tdot1 = dv4 - dv1;\n\tdot2 = dv4 - dv2;\n\tdot3 = dv4 - dv3;\n\n\tdot1 = BT_MPR_FMIN(dot1, dot2);\n\tdot1 = BT_MPR_FMIN(dot1, dot3);\n\n\treturn btMprEq(dot1, BT_MPR_TOLERANCE) || dot1 < BT_MPR_TOLERANCE;\n}\n\ninline int portalCanEncapsuleOrigin(const btMprSimplex_t *portal,\n\t\t\t\t\t\t\t\t\tconst btMprSupport_t *v4,\n\t\t\t\t\t\t\t\t\tconst btVector3 *dir)\n{\n\tfloat dot;\n\tdot = btMprVec3Dot(&v4->v, dir);\n\treturn btMprIsZero(dot) || dot > 0.f;\n}\n\ninline void btExpandPortal(btMprSimplex_t *portal,\n\t\t\t\t\t\t   const btMprSupport_t *v4)\n{\n\tfloat dot;\n\tbtVector3 v4v0;\n\n\tbtMprVec3Cross(&v4v0, &v4->v, &btMprSimplexPoint(portal, 0)->v);\n\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 1)->v, &v4v0);\n\tif (dot > 0.f)\n\t{\n\t\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 2)->v, &v4v0);\n\t\tif (dot > 0.f)\n\t\t{\n\t\t\tbtMprSimplexSet(portal, 1, v4);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbtMprSimplexSet(portal, 3, v4);\n\t\t}\n\t}\n\telse\n\t{\n\t\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 3)->v, &v4v0);\n\t\tif (dot > 0.f)\n\t\t{\n\t\t\tbtMprSimplexSet(portal, 2, v4);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbtMprSimplexSet(portal, 1, v4);\n\t\t}\n\t}\n}\ntemplate <typename btConvexTemplate>\ninline void btMprSupport(const btConvexTemplate &a, const btConvexTemplate &b,\n\t\t\t\t\t\t const btMprCollisionDescription &colDesc,\n\t\t\t\t\t\t const btVector3 &dir, btMprSupport_t *supp)\n{\n\tbtVector3 separatingAxisInA = dir * a.getWorldTransform().getBasis();\n\tbtVector3 separatingAxisInB = -dir * b.getWorldTransform().getBasis();\n\n\tbtVector3 pInA = a.getLocalSupportWithMargin(separatingAxisInA);\n\tbtVector3 qInB = b.getLocalSupportWithMargin(separatingAxisInB);\n\n\tsupp->v1 = a.getWorldTransform()(pInA);\n\tsupp->v2 = b.getWorldTransform()(qInB);\n\tsupp->v = supp->v1 - supp->v2;\n}\n\ntemplate <typename btConvexTemplate>\nstatic int btDiscoverPortal(const btConvexTemplate &a, const btConvexTemplate &b,\n\t\t\t\t\t\t\tconst btMprCollisionDescription &colDesc,\n\t\t\t\t\t\t\tbtMprSimplex_t *portal)\n{\n\tbtVector3 dir, va, vb;\n\tfloat dot;\n\tint cont;\n\n\t// vertex 0 is center of portal\n\tbtFindOrigin(a, b, colDesc, btMprSimplexPointW(portal, 0));\n\n\t// vertex 0 is center of portal\n\tbtMprSimplexSetSize(portal, 1);\n\n\tbtVector3 zero = btVector3(0, 0, 0);\n\tbtVector3 *org = &zero;\n\n\tif (btMprVec3Eq(&btMprSimplexPoint(portal, 0)->v, org))\n\t{\n\t\t// Portal's center lies on origin (0,0,0) => we know that objects\n\t\t// intersect but we would need to know penetration info.\n\t\t// So move center little bit...\n\t\tbtMprVec3Set(&va, FLT_EPSILON * 10.f, 0.f, 0.f);\n\t\tbtMprVec3Add(&btMprSimplexPointW(portal, 0)->v, &va);\n\t}\n\n\t// vertex 1 = support in direction of origin\n\tbtMprVec3Copy(&dir, &btMprSimplexPoint(portal, 0)->v);\n\tbtMprVec3Scale(&dir, -1.f);\n\tbtMprVec3Normalize(&dir);\n\n\tbtMprSupport(a, b, colDesc, dir, btMprSimplexPointW(portal, 1));\n\n\tbtMprSimplexSetSize(portal, 2);\n\n\t// test if origin isn't outside of v1\n\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 1)->v, &dir);\n\n\tif (btMprIsZero(dot) || dot < 0.f)\n\t\treturn -1;\n\n\t// vertex 2\n\tbtMprVec3Cross(&dir, &btMprSimplexPoint(portal, 0)->v,\n\t\t\t\t   &btMprSimplexPoint(portal, 1)->v);\n\tif (btMprIsZero(btMprVec3Len2(&dir)))\n\t{\n\t\tif (btMprVec3Eq(&btMprSimplexPoint(portal, 1)->v, org))\n\t\t{\n\t\t\t// origin lies on v1\n\t\t\treturn 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// origin lies on v0-v1 segment\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tbtMprVec3Normalize(&dir);\n\tbtMprSupport(a, b, colDesc, dir, btMprSimplexPointW(portal, 2));\n\n\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 2)->v, &dir);\n\tif (btMprIsZero(dot) || dot < 0.f)\n\t\treturn -1;\n\n\tbtMprSimplexSetSize(portal, 3);\n\n\t// vertex 3 direction\n\tbtMprVec3Sub2(&va, &btMprSimplexPoint(portal, 1)->v,\n\t\t\t\t  &btMprSimplexPoint(portal, 0)->v);\n\tbtMprVec3Sub2(&vb, &btMprSimplexPoint(portal, 2)->v,\n\t\t\t\t  &btMprSimplexPoint(portal, 0)->v);\n\tbtMprVec3Cross(&dir, &va, &vb);\n\tbtMprVec3Normalize(&dir);\n\n\t// it is better to form portal faces to be oriented \"outside\" origin\n\tdot = btMprVec3Dot(&dir, &btMprSimplexPoint(portal, 0)->v);\n\tif (dot > 0.f)\n\t{\n\t\tbtMprSimplexSwap(portal, 1, 2);\n\t\tbtMprVec3Scale(&dir, -1.f);\n\t}\n\n\twhile (btMprSimplexSize(portal) < 4)\n\t{\n\t\tbtMprSupport(a, b, colDesc, dir, btMprSimplexPointW(portal, 3));\n\n\t\tdot = btMprVec3Dot(&btMprSimplexPoint(portal, 3)->v, &dir);\n\t\tif (btMprIsZero(dot) || dot < 0.f)\n\t\t\treturn -1;\n\n\t\tcont = 0;\n\n\t\t// test if origin is outside (v1, v0, v3) - set v2 as v3 and\n\t\t// continue\n\t\tbtMprVec3Cross(&va, &btMprSimplexPoint(portal, 1)->v,\n\t\t\t\t\t   &btMprSimplexPoint(portal, 3)->v);\n\t\tdot = btMprVec3Dot(&va, &btMprSimplexPoint(portal, 0)->v);\n\t\tif (dot < 0.f && !btMprIsZero(dot))\n\t\t{\n\t\t\tbtMprSimplexSet(portal, 2, btMprSimplexPoint(portal, 3));\n\t\t\tcont = 1;\n\t\t}\n\n\t\tif (!cont)\n\t\t{\n\t\t\t// test if origin is outside (v3, v0, v2) - set v1 as v3 and\n\t\t\t// continue\n\t\t\tbtMprVec3Cross(&va, &btMprSimplexPoint(portal, 3)->v,\n\t\t\t\t\t\t   &btMprSimplexPoint(portal, 2)->v);\n\t\t\tdot = btMprVec3Dot(&va, &btMprSimplexPoint(portal, 0)->v);\n\t\t\tif (dot < 0.f && !btMprIsZero(dot))\n\t\t\t{\n\t\t\t\tbtMprSimplexSet(portal, 1, btMprSimplexPoint(portal, 3));\n\t\t\t\tcont = 1;\n\t\t\t}\n\t\t}\n\n\t\tif (cont)\n\t\t{\n\t\t\tbtMprVec3Sub2(&va, &btMprSimplexPoint(portal, 1)->v,\n\t\t\t\t\t\t  &btMprSimplexPoint(portal, 0)->v);\n\t\t\tbtMprVec3Sub2(&vb, &btMprSimplexPoint(portal, 2)->v,\n\t\t\t\t\t\t  &btMprSimplexPoint(portal, 0)->v);\n\t\t\tbtMprVec3Cross(&dir, &va, &vb);\n\t\t\tbtMprVec3Normalize(&dir);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbtMprSimplexSetSize(portal, 4);\n\t\t}\n\t}\n\n\treturn 0;\n}\n\ntemplate <typename btConvexTemplate>\nstatic int btRefinePortal(const btConvexTemplate &a, const btConvexTemplate &b, const btMprCollisionDescription &colDesc,\n\t\t\t\t\t\t  btMprSimplex_t *portal)\n{\n\tbtVector3 dir;\n\tbtMprSupport_t v4;\n\n\tfor (int i = 0; i < BT_MPR_MAX_ITERATIONS; i++)\n\t//while (1)\n\t{\n\t\t// compute direction outside the portal (from v0 through v1,v2,v3\n\t\t// face)\n\t\tbtPortalDir(portal, &dir);\n\n\t\t// test if origin is inside the portal\n\t\tif (portalEncapsulesOrigin(portal, &dir))\n\t\t\treturn 0;\n\n\t\t// get next support point\n\n\t\tbtMprSupport(a, b, colDesc, dir, &v4);\n\n\t\t// test if v4 can expand portal to contain origin and if portal\n\t\t// expanding doesn't reach given tolerance\n\t\tif (!portalCanEncapsuleOrigin(portal, &v4, &dir) || portalReachTolerance(portal, &v4, &dir))\n\t\t{\n\t\t\treturn -1;\n\t\t}\n\n\t\t// v1-v2-v3 triangle must be rearranged to face outside Minkowski\n\t\t// difference (direction from v0).\n\t\tbtExpandPortal(portal, &v4);\n\t}\n\n\treturn -1;\n}\n\nstatic void btFindPos(const btMprSimplex_t *portal, btVector3 *pos)\n{\n\tbtVector3 zero = btVector3(0, 0, 0);\n\tbtVector3 *origin = &zero;\n\n\tbtVector3 dir;\n\tsize_t i;\n\tfloat b[4], sum, inv;\n\tbtVector3 vec, p1, p2;\n\n\tbtPortalDir(portal, &dir);\n\n\t// use barycentric coordinates of tetrahedron to find origin\n\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 1)->v,\n\t\t\t\t   &btMprSimplexPoint(portal, 2)->v);\n\tb[0] = btMprVec3Dot(&vec, &btMprSimplexPoint(portal, 3)->v);\n\n\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 3)->v,\n\t\t\t\t   &btMprSimplexPoint(portal, 2)->v);\n\tb[1] = btMprVec3Dot(&vec, &btMprSimplexPoint(portal, 0)->v);\n\n\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 0)->v,\n\t\t\t\t   &btMprSimplexPoint(portal, 1)->v);\n\tb[2] = btMprVec3Dot(&vec, &btMprSimplexPoint(portal, 3)->v);\n\n\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 2)->v,\n\t\t\t\t   &btMprSimplexPoint(portal, 1)->v);\n\tb[3] = btMprVec3Dot(&vec, &btMprSimplexPoint(portal, 0)->v);\n\n\tsum = b[0] + b[1] + b[2] + b[3];\n\n\tif (btMprIsZero(sum) || sum < 0.f)\n\t{\n\t\tb[0] = 0.f;\n\n\t\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 2)->v,\n\t\t\t\t\t   &btMprSimplexPoint(portal, 3)->v);\n\t\tb[1] = btMprVec3Dot(&vec, &dir);\n\t\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 3)->v,\n\t\t\t\t\t   &btMprSimplexPoint(portal, 1)->v);\n\t\tb[2] = btMprVec3Dot(&vec, &dir);\n\t\tbtMprVec3Cross(&vec, &btMprSimplexPoint(portal, 1)->v,\n\t\t\t\t\t   &btMprSimplexPoint(portal, 2)->v);\n\t\tb[3] = btMprVec3Dot(&vec, &dir);\n\n\t\tsum = b[1] + b[2] + b[3];\n\t}\n\n\tinv = 1.f / sum;\n\n\tbtMprVec3Copy(&p1, origin);\n\tbtMprVec3Copy(&p2, origin);\n\tfor (i = 0; i < 4; i++)\n\t{\n\t\tbtMprVec3Copy(&vec, &btMprSimplexPoint(portal, i)->v1);\n\t\tbtMprVec3Scale(&vec, b[i]);\n\t\tbtMprVec3Add(&p1, &vec);\n\n\t\tbtMprVec3Copy(&vec, &btMprSimplexPoint(portal, i)->v2);\n\t\tbtMprVec3Scale(&vec, b[i]);\n\t\tbtMprVec3Add(&p2, &vec);\n\t}\n\tbtMprVec3Scale(&p1, inv);\n\tbtMprVec3Scale(&p2, inv);\n#ifdef MPR_AVERAGE_CONTACT_POSITIONS\n\tbtMprVec3Copy(pos, &p1);\n\tbtMprVec3Add(pos, &p2);\n\tbtMprVec3Scale(pos, 0.5);\n#else\n\tbtMprVec3Copy(pos, &p2);\n#endif  //MPR_AVERAGE_CONTACT_POSITIONS\n}\n\ninline float btMprVec3Dist2(const btVector3 *a, const btVector3 *b)\n{\n\tbtVector3 ab;\n\tbtMprVec3Sub2(&ab, a, b);\n\treturn btMprVec3Len2(&ab);\n}\n\ninline float _btMprVec3PointSegmentDist2(const btVector3 *P,\n\t\t\t\t\t\t\t\t\t\t const btVector3 *x0,\n\t\t\t\t\t\t\t\t\t\t const btVector3 *b,\n\t\t\t\t\t\t\t\t\t\t btVector3 *witness)\n{\n\t// The computation comes from solving equation of segment:\n\t//      S(t) = x0 + t.d\n\t//          where - x0 is initial point of segment\n\t//                - d is direction of segment from x0 (|d| > 0)\n\t//                - t belongs to <0, 1> interval\n\t//\n\t// Than, distance from a segment to some point P can be expressed:\n\t//      D(t) = |x0 + t.d - P|^2\n\t//          which is distance from any point on segment. Minimization\n\t//          of this function brings distance from P to segment.\n\t// Minimization of D(t) leads to simple quadratic equation that's\n\t// solving is straightforward.\n\t//\n\t// Bonus of this method is witness point for free.\n\n\tfloat dist, t;\n\tbtVector3 d, a;\n\n\t// direction of segment\n\tbtMprVec3Sub2(&d, b, x0);\n\n\t// precompute vector from P to x0\n\tbtMprVec3Sub2(&a, x0, P);\n\n\tt = -1.f * btMprVec3Dot(&a, &d);\n\tt /= btMprVec3Len2(&d);\n\n\tif (t < 0.f || btMprIsZero(t))\n\t{\n\t\tdist = btMprVec3Dist2(x0, P);\n\t\tif (witness)\n\t\t\tbtMprVec3Copy(witness, x0);\n\t}\n\telse if (t > 1.f || btMprEq(t, 1.f))\n\t{\n\t\tdist = btMprVec3Dist2(b, P);\n\t\tif (witness)\n\t\t\tbtMprVec3Copy(witness, b);\n\t}\n\telse\n\t{\n\t\tif (witness)\n\t\t{\n\t\t\tbtMprVec3Copy(witness, &d);\n\t\t\tbtMprVec3Scale(witness, t);\n\t\t\tbtMprVec3Add(witness, x0);\n\t\t\tdist = btMprVec3Dist2(witness, P);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// recycling variables\n\t\t\tbtMprVec3Scale(&d, t);\n\t\t\tbtMprVec3Add(&d, &a);\n\t\t\tdist = btMprVec3Len2(&d);\n\t\t}\n\t}\n\n\treturn dist;\n}\n\ninline float btMprVec3PointTriDist2(const btVector3 *P,\n\t\t\t\t\t\t\t\t\tconst btVector3 *x0, const btVector3 *B,\n\t\t\t\t\t\t\t\t\tconst btVector3 *C,\n\t\t\t\t\t\t\t\t\tbtVector3 *witness)\n{\n\t// Computation comes from analytic expression for triangle (x0, B, C)\n\t//      T(s, t) = x0 + s.d1 + t.d2, where d1 = B - x0 and d2 = C - x0 and\n\t// Then equation for distance is:\n\t//      D(s, t) = | T(s, t) - P |^2\n\t// This leads to minimization of quadratic function of two variables.\n\t// The solution from is taken only if s is between 0 and 1, t is\n\t// between 0 and 1 and t + s < 1, otherwise distance from segment is\n\t// computed.\n\n\tbtVector3 d1, d2, a;\n\tfloat u, v, w, p, q, r;\n\tfloat s, t, dist, dist2;\n\tbtVector3 witness2;\n\n\tbtMprVec3Sub2(&d1, B, x0);\n\tbtMprVec3Sub2(&d2, C, x0);\n\tbtMprVec3Sub2(&a, x0, P);\n\n\tu = btMprVec3Dot(&a, &a);\n\tv = btMprVec3Dot(&d1, &d1);\n\tw = btMprVec3Dot(&d2, &d2);\n\tp = btMprVec3Dot(&a, &d1);\n\tq = btMprVec3Dot(&a, &d2);\n\tr = btMprVec3Dot(&d1, &d2);\n\n\tbtScalar div = (w * v - r * r);\n\tif (btMprIsZero(div))\n\t{\n\t\ts = -1;\n\t}\n\telse\n\t{\n\t\ts = (q * r - w * p) / div;\n\t\tt = (-s * r - q) / w;\n\t}\n\n\tif ((btMprIsZero(s) || s > 0.f) && (btMprEq(s, 1.f) || s < 1.f) && (btMprIsZero(t) || t > 0.f) && (btMprEq(t, 1.f) || t < 1.f) && (btMprEq(t + s, 1.f) || t + s < 1.f))\n\t{\n\t\tif (witness)\n\t\t{\n\t\t\tbtMprVec3Scale(&d1, s);\n\t\t\tbtMprVec3Scale(&d2, t);\n\t\t\tbtMprVec3Copy(witness, x0);\n\t\t\tbtMprVec3Add(witness, &d1);\n\t\t\tbtMprVec3Add(witness, &d2);\n\n\t\t\tdist = btMprVec3Dist2(witness, P);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tdist = s * s * v;\n\t\t\tdist += t * t * w;\n\t\t\tdist += 2.f * s * t * r;\n\t\t\tdist += 2.f * s * p;\n\t\t\tdist += 2.f * t * q;\n\t\t\tdist += u;\n\t\t}\n\t}\n\telse\n\t{\n\t\tdist = _btMprVec3PointSegmentDist2(P, x0, B, witness);\n\n\t\tdist2 = _btMprVec3PointSegmentDist2(P, x0, C, &witness2);\n\t\tif (dist2 < dist)\n\t\t{\n\t\t\tdist = dist2;\n\t\t\tif (witness)\n\t\t\t\tbtMprVec3Copy(witness, &witness2);\n\t\t}\n\n\t\tdist2 = _btMprVec3PointSegmentDist2(P, B, C, &witness2);\n\t\tif (dist2 < dist)\n\t\t{\n\t\t\tdist = dist2;\n\t\t\tif (witness)\n\t\t\t\tbtMprVec3Copy(witness, &witness2);\n\t\t}\n\t}\n\n\treturn dist;\n}\n\ntemplate <typename btConvexTemplate>\nstatic void btFindPenetr(const btConvexTemplate &a, const btConvexTemplate &b,\n\t\t\t\t\t\t const btMprCollisionDescription &colDesc,\n\t\t\t\t\t\t btMprSimplex_t *portal,\n\t\t\t\t\t\t float *depth, btVector3 *pdir, btVector3 *pos)\n{\n\tbtVector3 dir;\n\tbtMprSupport_t v4;\n\tunsigned long iterations;\n\n\tbtVector3 zero = btVector3(0, 0, 0);\n\tbtVector3 *origin = &zero;\n\n\titerations = 1UL;\n\tfor (int i = 0; i < BT_MPR_MAX_ITERATIONS; i++)\n\t//while (1)\n\t{\n\t\t// compute portal direction and obtain next support point\n\t\tbtPortalDir(portal, &dir);\n\n\t\tbtMprSupport(a, b, colDesc, dir, &v4);\n\n\t\t// reached tolerance -> find penetration info\n\t\tif (portalReachTolerance(portal, &v4, &dir) || iterations == BT_MPR_MAX_ITERATIONS)\n\t\t{\n\t\t\t*depth = btMprVec3PointTriDist2(origin, &btMprSimplexPoint(portal, 1)->v, &btMprSimplexPoint(portal, 2)->v, &btMprSimplexPoint(portal, 3)->v, pdir);\n\t\t\t*depth = BT_MPR_SQRT(*depth);\n\n\t\t\tif (btMprIsZero((*pdir).x()) && btMprIsZero((*pdir).y()) && btMprIsZero((*pdir).z()))\n\t\t\t{\n\t\t\t\t*pdir = dir;\n\t\t\t}\n\t\t\tbtMprVec3Normalize(pdir);\n\n\t\t\t// barycentric coordinates:\n\t\t\tbtFindPos(portal, pos);\n\n\t\t\treturn;\n\t\t}\n\n\t\tbtExpandPortal(portal, &v4);\n\n\t\titerations++;\n\t}\n}\n\nstatic void btFindPenetrTouch(btMprSimplex_t *portal, float *depth, btVector3 *dir, btVector3 *pos)\n{\n\t// Touching contact on portal's v1 - so depth is zero and direction\n\t// is unimportant and pos can be guessed\n\t*depth = 0.f;\n\tbtVector3 zero = btVector3(0, 0, 0);\n\tbtVector3 *origin = &zero;\n\n\tbtMprVec3Copy(dir, origin);\n#ifdef MPR_AVERAGE_CONTACT_POSITIONS\n\tbtMprVec3Copy(pos, &btMprSimplexPoint(portal, 1)->v1);\n\tbtMprVec3Add(pos, &btMprSimplexPoint(portal, 1)->v2);\n\tbtMprVec3Scale(pos, 0.5);\n#else\n\tbtMprVec3Copy(pos, &btMprSimplexPoint(portal, 1)->v2);\n#endif\n}\n\nstatic void btFindPenetrSegment(btMprSimplex_t *portal,\n\t\t\t\t\t\t\t\tfloat *depth, btVector3 *dir, btVector3 *pos)\n{\n\t// Origin lies on v0-v1 segment.\n\t// Depth is distance to v1, direction also and position must be\n\t// computed\n#ifdef MPR_AVERAGE_CONTACT_POSITIONS\n\tbtMprVec3Copy(pos, &btMprSimplexPoint(portal, 1)->v1);\n\tbtMprVec3Add(pos, &btMprSimplexPoint(portal, 1)->v2);\n\tbtMprVec3Scale(pos, 0.5f);\n#else\n\tbtMprVec3Copy(pos, &btMprSimplexPoint(portal, 1)->v2);\n#endif  //MPR_AVERAGE_CONTACT_POSITIONS\n\n\tbtMprVec3Copy(dir, &btMprSimplexPoint(portal, 1)->v);\n\t*depth = BT_MPR_SQRT(btMprVec3Len2(dir));\n\tbtMprVec3Normalize(dir);\n}\n\ntemplate <typename btConvexTemplate>\ninline int btMprPenetration(const btConvexTemplate &a, const btConvexTemplate &b,\n\t\t\t\t\t\t\tconst btMprCollisionDescription &colDesc,\n\t\t\t\t\t\t\tfloat *depthOut, btVector3 *dirOut, btVector3 *posOut)\n{\n\tbtMprSimplex_t portal;\n\n\t// Phase 1: Portal discovery\n\tint result = btDiscoverPortal(a, b, colDesc, &portal);\n\n\t//sepAxis[pairIndex] = *pdir;//or -dir?\n\n\tswitch (result)\n\t{\n\t\tcase 0:\n\t\t{\n\t\t\t// Phase 2: Portal refinement\n\n\t\t\tresult = btRefinePortal(a, b, colDesc, &portal);\n\t\t\tif (result < 0)\n\t\t\t\treturn -1;\n\n\t\t\t// Phase 3. Penetration info\n\t\t\tbtFindPenetr(a, b, colDesc, &portal, depthOut, dirOut, posOut);\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 1:\n\t\t{\n\t\t\t// Touching contact on portal's v1.\n\t\t\tbtFindPenetrTouch(&portal, depthOut, dirOut, posOut);\n\t\t\tresult = 0;\n\t\t\tbreak;\n\t\t}\n\t\tcase 2:\n\t\t{\n\t\t\tbtFindPenetrSegment(&portal, depthOut, dirOut, posOut);\n\t\t\tresult = 0;\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t{\n\t\t\t//if (res < 0)\n\t\t\t//{\n\t\t\t// Origin isn't inside portal - no collision.\n\t\t\tresult = -1;\n\t\t\t//}\n\t\t}\n\t};\n\n\treturn result;\n};\n\ntemplate <typename btConvexTemplate, typename btMprDistanceTemplate>\ninline int btComputeMprPenetration(const btConvexTemplate &a, const btConvexTemplate &b, const btMprCollisionDescription &colDesc, btMprDistanceTemplate *distInfo)\n{\n\tbtVector3 dir, pos;\n\tfloat depth;\n\n\tint res = btMprPenetration(a, b, colDesc, &depth, &dir, &pos);\n\tif (res == 0)\n\t{\n\t\tdistInfo->m_distance = -depth;\n\t\tdistInfo->m_pointOnB = pos;\n\t\tdistInfo->m_normalBtoA = -dir;\n\t\tdistInfo->m_pointOnA = pos - distInfo->m_distance * dir;\n\t\treturn 0;\n\t}\n\n\treturn -1;\n}\n\n#endif  //BT_MPR_PENETRATION_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_PERSISTENT_MANIFOLD_H\n#define BT_PERSISTENT_MANIFOLD_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"btManifoldPoint.h\"\nclass btCollisionObject;\n#include \"LinearMath/btAlignedAllocator.h\"\n\nstruct btCollisionResult;\nstruct btCollisionObjectDoubleData;\nstruct btCollisionObjectFloatData;\n\n///maximum contact breaking and merging threshold\nextern btScalar gContactBreakingThreshold;\n\n#ifndef SWIG\nclass btPersistentManifold;\n\ntypedef bool (*ContactDestroyedCallback)(void* userPersistentData);\ntypedef bool (*ContactProcessedCallback)(btManifoldPoint& cp, void* body0, void* body1);\ntypedef void (*ContactStartedCallback)(btPersistentManifold* const& manifold);\ntypedef void (*ContactEndedCallback)(btPersistentManifold* const& manifold);\nextern ContactDestroyedCallback gContactDestroyedCallback;\nextern ContactProcessedCallback gContactProcessedCallback;\nextern ContactStartedCallback gContactStartedCallback;\nextern ContactEndedCallback gContactEndedCallback;\n#endif  //SWIG\n\n//the enum starts at 1024 to avoid type conflicts with btTypedConstraint\nenum btContactManifoldTypes\n{\n\tMIN_CONTACT_MANIFOLD_TYPE = 1024,\n\tBT_PERSISTENT_MANIFOLD_TYPE\n};\n\n#define MANIFOLD_CACHE_SIZE 4\n\n///btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping in the broadphase.\n///Those contact points are created by the collision narrow phase.\n///The cache can be empty, or hold 1,2,3 or 4 points. Some collision algorithms (GJK) might only add one point at a time.\n///updates/refreshes old contact points, and throw them away if necessary (distance becomes too large)\n///reduces the cache to 4 points, when more then 4 points are added, using following rules:\n///the contact point with deepest penetration is always kept, and it tries to maximuze the area covered by the points\n///note that some pairs of objects might have more then one contact manifold.\n\n//ATTRIBUTE_ALIGNED128( class) btPersistentManifold : public btTypedObject\nATTRIBUTE_ALIGNED16(class)\nbtPersistentManifold : public btTypedObject\n{\n\tbtManifoldPoint m_pointCache[MANIFOLD_CACHE_SIZE];\n\n\t/// this two body pointers can point to the physics rigidbody class.\n\tconst btCollisionObject* m_body0;\n\tconst btCollisionObject* m_body1;\n\n\tint m_cachedPoints;\n\n\tbtScalar m_contactBreakingThreshold;\n\tbtScalar m_contactProcessingThreshold;\n\n\t/// sort cached points so most isolated points come first\n\tint sortCachedPoints(const btManifoldPoint& pt);\n\n\tint findContactPoint(const btManifoldPoint* unUsed, int numUnused, const btManifoldPoint& pt);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tint m_companionIdA;\n\tint m_companionIdB;\n\n\tint m_index1a;\n\n\tbtPersistentManifold();\n\n\tbtPersistentManifold(const btCollisionObject* body0, const btCollisionObject* body1, int, btScalar contactBreakingThreshold, btScalar contactProcessingThreshold)\n\t\t: btTypedObject(BT_PERSISTENT_MANIFOLD_TYPE),\n\t\t  m_body0(body0),\n\t\t  m_body1(body1),\n\t\t  m_cachedPoints(0),\n\t\t  m_contactBreakingThreshold(contactBreakingThreshold),\n\t\t  m_contactProcessingThreshold(contactProcessingThreshold),\n\t\t  m_companionIdA(0),\n\t\t  m_companionIdB(0),\n\t\t  m_index1a(0)\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE const btCollisionObject* getBody0() const { return m_body0; }\n\tSIMD_FORCE_INLINE const btCollisionObject* getBody1() const { return m_body1; }\n\n\tvoid setBodies(const btCollisionObject* body0, const btCollisionObject* body1)\n\t{\n\t\tm_body0 = body0;\n\t\tm_body1 = body1;\n\t}\n\n\tvoid clearUserCache(btManifoldPoint & pt);\n\n#ifdef DEBUG_PERSISTENCY\n\tvoid DebugPersistency();\n#endif  //\n\n\tSIMD_FORCE_INLINE int getNumContacts() const\n\t{\n\t\treturn m_cachedPoints;\n\t}\n\t/// the setNumContacts API is usually not used, except when you gather/fill all contacts manually\n\tvoid setNumContacts(int cachedPoints)\n\t{\n\t\tm_cachedPoints = cachedPoints;\n\t}\n\n\tSIMD_FORCE_INLINE const btManifoldPoint& getContactPoint(int index) const\n\t{\n\t\tbtAssert(index < m_cachedPoints);\n\t\treturn m_pointCache[index];\n\t}\n\n\tSIMD_FORCE_INLINE btManifoldPoint& getContactPoint(int index)\n\t{\n\t\tbtAssert(index < m_cachedPoints);\n\t\treturn m_pointCache[index];\n\t}\n\n\t///@todo: get this margin from the current physics / collision environment\n\tbtScalar getContactBreakingThreshold() const;\n\n\tbtScalar getContactProcessingThreshold() const\n\t{\n\t\treturn m_contactProcessingThreshold;\n\t}\n\n\tvoid setContactBreakingThreshold(btScalar contactBreakingThreshold)\n\t{\n\t\tm_contactBreakingThreshold = contactBreakingThreshold;\n\t}\n\n\tvoid setContactProcessingThreshold(btScalar contactProcessingThreshold)\n\t{\n\t\tm_contactProcessingThreshold = contactProcessingThreshold;\n\t}\n\n\tint getCacheEntry(const btManifoldPoint& newPoint) const;\n\n\tint addManifoldPoint(const btManifoldPoint& newPoint, bool isPredictive = false);\n\n\tvoid removeContactPoint(int index)\n\t{\n\t\tclearUserCache(m_pointCache[index]);\n\n\t\tint lastUsedIndex = getNumContacts() - 1;\n\t\t//\t\tm_pointCache[index] = m_pointCache[lastUsedIndex];\n\t\tif (index != lastUsedIndex)\n\t\t{\n\t\t\tm_pointCache[index] = m_pointCache[lastUsedIndex];\n\t\t\t//get rid of duplicated userPersistentData pointer\n\t\t\tm_pointCache[lastUsedIndex].m_userPersistentData = 0;\n\t\t\tm_pointCache[lastUsedIndex].m_appliedImpulse = 0.f;\n\t\t\tm_pointCache[lastUsedIndex].m_prevRHS = 0.f;\n\t\t\tm_pointCache[lastUsedIndex].m_contactPointFlags = 0;\n\t\t\tm_pointCache[lastUsedIndex].m_appliedImpulseLateral1 = 0.f;\n\t\t\tm_pointCache[lastUsedIndex].m_appliedImpulseLateral2 = 0.f;\n\t\t\tm_pointCache[lastUsedIndex].m_lifeTime = 0;\n\t\t}\n\n\t\tbtAssert(m_pointCache[lastUsedIndex].m_userPersistentData == 0);\n\t\tm_cachedPoints--;\n\n\t\tif (gContactEndedCallback && m_cachedPoints == 0)\n\t\t{\n\t\t\tgContactEndedCallback(this);\n\t\t}\n\t}\n\tvoid replaceContactPoint(const btManifoldPoint& newPoint, int insertIndex)\n\t{\n\t\tbtAssert(validContactDistance(newPoint));\n\n#define MAINTAIN_PERSISTENCY 1\n#ifdef MAINTAIN_PERSISTENCY\n\t\tint lifeTime = m_pointCache[insertIndex].getLifeTime();\n\t\tbtScalar appliedImpulse = m_pointCache[insertIndex].m_appliedImpulse;\n\t\tbtScalar prevRHS = m_pointCache[insertIndex].m_prevRHS;\n\t\tbtScalar appliedLateralImpulse1 = m_pointCache[insertIndex].m_appliedImpulseLateral1;\n\t\tbtScalar appliedLateralImpulse2 = m_pointCache[insertIndex].m_appliedImpulseLateral2;\n\n\t\tbool replacePoint = true;\n\t\t///we keep existing contact points for friction anchors\n\t\t///if the friction force is within the Coulomb friction cone\n\t\tif (newPoint.m_contactPointFlags & BT_CONTACT_FLAG_FRICTION_ANCHOR)\n\t\t{\n\t\t\t//   printf(\"appliedImpulse=%f\\n\", appliedImpulse);\n\t\t\t//   printf(\"appliedLateralImpulse1=%f\\n\", appliedLateralImpulse1);\n\t\t\t//   printf(\"appliedLateralImpulse2=%f\\n\", appliedLateralImpulse2);\n\t\t\t//   printf(\"mu = %f\\n\", m_pointCache[insertIndex].m_combinedFriction);\n\t\t\tbtScalar mu = m_pointCache[insertIndex].m_combinedFriction;\n\t\t\tbtScalar eps = 0;  //we could allow to enlarge or shrink the tolerance to check against the friction cone a bit, say 1e-7\n\t\t\tbtScalar a = appliedLateralImpulse1 * appliedLateralImpulse1 + appliedLateralImpulse2 * appliedLateralImpulse2;\n\t\t\tbtScalar b = eps + mu * appliedImpulse;\n\t\t\tb = b * b;\n\t\t\treplacePoint = (a) > (b);\n\t\t}\n\n\t\tif (replacePoint)\n\t\t{\n\t\t\tbtAssert(lifeTime >= 0);\n\t\t\tvoid* cache = m_pointCache[insertIndex].m_userPersistentData;\n\n\t\t\tm_pointCache[insertIndex] = newPoint;\n\t\t\tm_pointCache[insertIndex].m_userPersistentData = cache;\n\t\t\tm_pointCache[insertIndex].m_appliedImpulse = appliedImpulse;\n\t\t\tm_pointCache[insertIndex].m_prevRHS = prevRHS;\n\t\t\tm_pointCache[insertIndex].m_appliedImpulseLateral1 = appliedLateralImpulse1;\n\t\t\tm_pointCache[insertIndex].m_appliedImpulseLateral2 = appliedLateralImpulse2;\n\t\t}\n\n\t\tm_pointCache[insertIndex].m_lifeTime = lifeTime;\n#else\n\t\tclearUserCache(m_pointCache[insertIndex]);\n\t\tm_pointCache[insertIndex] = newPoint;\n\n#endif\n\t}\n\n\tbool validContactDistance(const btManifoldPoint& pt) const\n\t{\n\t\treturn pt.m_distance1 <= getContactBreakingThreshold();\n\t}\n\t/// calculated new worldspace coordinates and depth, and reject points that exceed the collision margin\n\tvoid refreshContactPoints(const btTransform& trA, const btTransform& trB);\n\n\tSIMD_FORCE_INLINE void clearManifold()\n\t{\n\t\tint i;\n\t\tfor (i = 0; i < m_cachedPoints; i++)\n\t\t{\n\t\t\tclearUserCache(m_pointCache[i]);\n\t\t}\n\n\t\tif (gContactEndedCallback && m_cachedPoints)\n\t\t{\n\t\t\tgContactEndedCallback(this);\n\t\t}\n\t\tm_cachedPoints = 0;\n\t}\n\n\tint calculateSerializeBufferSize() const;\n\tconst char* serialize(const class btPersistentManifold* manifold, void* dataBuffer, class btSerializer* serializer) const;\n\tvoid deSerialize(const struct btPersistentManifoldDoubleData* manifoldDataPtr);\n\tvoid deSerialize(const struct btPersistentManifoldFloatData* manifoldDataPtr);\n};\n\n// clang-format off\n\nstruct btPersistentManifoldDoubleData\n{\n\tbtVector3DoubleData m_pointCacheLocalPointA[4];\n\tbtVector3DoubleData m_pointCacheLocalPointB[4];\n\tbtVector3DoubleData m_pointCachePositionWorldOnA[4];\n\tbtVector3DoubleData m_pointCachePositionWorldOnB[4];\n\tbtVector3DoubleData m_pointCacheNormalWorldOnB[4];\n\tbtVector3DoubleData\tm_pointCacheLateralFrictionDir1[4];\n\tbtVector3DoubleData\tm_pointCacheLateralFrictionDir2[4];\n\tdouble m_pointCacheDistance[4];\n\tdouble m_pointCacheAppliedImpulse[4];\n\tdouble m_pointCachePrevRHS[4];\n\t double m_pointCacheCombinedFriction[4];\n\tdouble m_pointCacheCombinedRollingFriction[4];\n\tdouble m_pointCacheCombinedSpinningFriction[4];\n\tdouble m_pointCacheCombinedRestitution[4];\n\tint\tm_pointCachePartId0[4];\n\tint\tm_pointCachePartId1[4];\n\tint\tm_pointCacheIndex0[4];\n\tint\tm_pointCacheIndex1[4];\n\tint m_pointCacheContactPointFlags[4];\n\tdouble m_pointCacheAppliedImpulseLateral1[4];\n\tdouble m_pointCacheAppliedImpulseLateral2[4];\n\tdouble m_pointCacheContactMotion1[4];\n\tdouble m_pointCacheContactMotion2[4];\n\tdouble m_pointCacheContactCFM[4];\n\tdouble m_pointCacheCombinedContactStiffness1[4];\n\tdouble m_pointCacheContactERP[4];\n\tdouble m_pointCacheCombinedContactDamping1[4];\n\tdouble m_pointCacheFrictionCFM[4];\n\tint m_pointCacheLifeTime[4];\n\n\tint m_numCachedPoints;\n\tint m_companionIdA;\n\tint m_companionIdB;\n\tint m_index1a;\n\n\tint m_objectType;\n\tdouble\tm_contactBreakingThreshold;\n\tdouble\tm_contactProcessingThreshold;\n\tint m_padding;\n\n\tbtCollisionObjectDoubleData *m_body0;\n\tbtCollisionObjectDoubleData *m_body1;\n};\n\n\nstruct btPersistentManifoldFloatData\n{\n\tbtVector3FloatData m_pointCacheLocalPointA[4];\n\tbtVector3FloatData m_pointCacheLocalPointB[4];\n\tbtVector3FloatData m_pointCachePositionWorldOnA[4];\n\tbtVector3FloatData m_pointCachePositionWorldOnB[4];\n\tbtVector3FloatData m_pointCacheNormalWorldOnB[4];\n\tbtVector3FloatData\tm_pointCacheLateralFrictionDir1[4];\n\tbtVector3FloatData\tm_pointCacheLateralFrictionDir2[4];\n\tfloat m_pointCacheDistance[4];\n\tfloat m_pointCacheAppliedImpulse[4];\n\tfloat m_pointCachePrevRHS[4];\n\tfloat m_pointCacheCombinedFriction[4];\n\tfloat m_pointCacheCombinedRollingFriction[4];\n\tfloat m_pointCacheCombinedSpinningFriction[4];\n\tfloat m_pointCacheCombinedRestitution[4];\n\tint\tm_pointCachePartId0[4];\n\tint\tm_pointCachePartId1[4];\n\tint\tm_pointCacheIndex0[4];\n\tint\tm_pointCacheIndex1[4];\n\tint m_pointCacheContactPointFlags[4];\n\tfloat m_pointCacheAppliedImpulseLateral1[4];\n\tfloat m_pointCacheAppliedImpulseLateral2[4];\n\tfloat m_pointCacheContactMotion1[4];\n\tfloat m_pointCacheContactMotion2[4];\n\tfloat m_pointCacheContactCFM[4];\n\tfloat m_pointCacheCombinedContactStiffness1[4];\n\tfloat m_pointCacheContactERP[4];\n\tfloat m_pointCacheCombinedContactDamping1[4];\n\tfloat m_pointCacheFrictionCFM[4];\n\tint m_pointCacheLifeTime[4];\n\n\tint m_numCachedPoints;\n\tint m_companionIdA;\n\tint m_companionIdB;\n\tint m_index1a;\n\n\tint m_objectType;\n\tfloat\tm_contactBreakingThreshold;\n\tfloat\tm_contactProcessingThreshold;\n\tint m_padding;\n\n\tbtCollisionObjectFloatData *m_body0;\n\tbtCollisionObjectFloatData *m_body1;\n};\n\n// clang-format on\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btPersistentManifoldData btPersistentManifoldDoubleData\n#define btPersistentManifoldDataName \"btPersistentManifoldDoubleData\"\n#else\n#define btPersistentManifoldData btPersistentManifoldFloatData\n#define btPersistentManifoldDataName \"btPersistentManifoldFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n#endif  //BT_PERSISTENT_MANIFOLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_POINT_COLLECTOR_H\n#define BT_POINT_COLLECTOR_H\n\n#include \"btDiscreteCollisionDetectorInterface.h\"\n\nstruct btPointCollector : public btDiscreteCollisionDetectorInterface::Result\n{\n\tbtVector3 m_normalOnBInWorld;\n\tbtVector3 m_pointInWorld;\n\tbtScalar m_distance;  //negative means penetration\n\n\tbool m_hasResult;\n\n\tbtPointCollector()\n\t\t: m_distance(btScalar(BT_LARGE_FLOAT)), m_hasResult(false)\n\t{\n\t}\n\n\tvirtual void setShapeIdentifiersA(int partId0, int index0)\n\t{\n\t\t(void)partId0;\n\t\t(void)index0;\n\t}\n\tvirtual void setShapeIdentifiersB(int partId1, int index1)\n\t{\n\t\t(void)partId1;\n\t\t(void)index1;\n\t}\n\n\tvirtual void addContactPoint(const btVector3& normalOnBInWorld, const btVector3& pointInWorld, btScalar depth)\n\t{\n\t\tif (depth < m_distance)\n\t\t{\n\t\t\tm_hasResult = true;\n\t\t\tm_normalOnBInWorld = normalOnBInWorld;\n\t\t\tm_pointInWorld = pointInWorld;\n\t\t\t//negative means penetration\n\t\t\tm_distance = depth;\n\t\t}\n\t}\n};\n\n#endif  //BT_POINT_COLLECTOR_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///This file was written by Erwin Coumans\n\n#ifndef BT_POLYHEDRAL_CONTACT_CLIPPING_H\n#define BT_POLYHEDRAL_CONTACT_CLIPPING_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"btDiscreteCollisionDetectorInterface.h\"\n\nclass btConvexPolyhedron;\n\ntypedef btAlignedObjectArray<btVector3> btVertexArray;\n\n// Clips a face to the back of a plane\nstruct btPolyhedralContactClipping\n{\n\tstatic void clipHullAgainstHull(const btVector3& separatingNormal1, const btConvexPolyhedron& hullA, const btConvexPolyhedron& hullB, const btTransform& transA, const btTransform& transB, const btScalar minDist, btScalar maxDist, btVertexArray& worldVertsB1, btVertexArray& worldVertsB2, btDiscreteCollisionDetectorInterface::Result& resultOut);\n\n\tstatic void clipFaceAgainstHull(const btVector3& separatingNormal, const btConvexPolyhedron& hullA, const btTransform& transA, btVertexArray& worldVertsB1, btVertexArray& worldVertsB2, const btScalar minDist, btScalar maxDist, btDiscreteCollisionDetectorInterface::Result& resultOut);\n\n\tstatic bool findSeparatingAxis(const btConvexPolyhedron& hullA, const btConvexPolyhedron& hullB, const btTransform& transA, const btTransform& transB, btVector3& sep, btDiscreteCollisionDetectorInterface::Result& resultOut);\n\n\t///the clipFace method is used internally\n\tstatic void clipFace(const btVertexArray& pVtxIn, btVertexArray& ppVtxOut, const btVector3& planeNormalWS, btScalar planeEqWS);\n};\n\n#endif  // BT_POLYHEDRAL_CONTACT_CLIPPING_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_RAYCAST_TRI_CALLBACK_H\n#define BT_RAYCAST_TRI_CALLBACK_H\n\n#include \"BulletCollision/CollisionShapes/btTriangleCallback.h\"\n#include \"LinearMath/btTransform.h\"\nstruct btBroadphaseProxy;\nclass btConvexShape;\n\nclass btTriangleRaycastCallback : public btTriangleCallback\n{\npublic:\n\t//input\n\tbtVector3 m_from;\n\tbtVector3 m_to;\n\n\t//@BP Mod - allow backface filtering and unflipped normals\n\tenum EFlags\n\t{\n\t\tkF_None = 0,\n\t\tkF_FilterBackfaces = 1 << 0,\n\t\tkF_KeepUnflippedNormal = 1 << 1,             // Prevents returned face normal getting flipped when a ray hits a back-facing triangle\n\t\t\t\t\t\t\t\t\t\t\t\t\t ///SubSimplexConvexCastRaytest is the default, even if kF_None is set.\n\t\tkF_UseSubSimplexConvexCastRaytest = 1 << 2,  // Uses an approximate but faster ray versus convex intersection algorithm\n\t\tkF_UseGjkConvexCastRaytest = 1 << 3,\n\t\tkF_DisableHeightfieldAccelerator  = 1 << 4, //don't use the heightfield raycast accelerator. See https://github.com/bulletphysics/bullet3/pull/2062\n\t\tkF_Terminator = 0xFFFFFFFF\n\t};\n\tunsigned int m_flags;\n\n\tbtScalar m_hitFraction;\n\n\tbtTriangleRaycastCallback(const btVector3& from, const btVector3& to, unsigned int flags = 0);\n\n\tvirtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);\n\n\tvirtual btScalar reportHit(const btVector3& hitNormalLocal, btScalar hitFraction, int partId, int triangleIndex) = 0;\n};\n\nclass btTriangleConvexcastCallback : public btTriangleCallback\n{\npublic:\n\tconst btConvexShape* m_convexShape;\n\tbtTransform m_convexShapeFrom;\n\tbtTransform m_convexShapeTo;\n\tbtTransform m_triangleToWorld;\n\tbtScalar m_hitFraction;\n\tbtScalar m_triangleCollisionMargin;\n\tbtScalar m_allowedPenetration;\n\n\tbtTriangleConvexcastCallback(const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin);\n\n\tvirtual void processTriangle(btVector3* triangle, int partId, int triangleIndex);\n\n\tvirtual btScalar reportHit(const btVector3& hitNormalLocal, const btVector3& hitPointLocal, btScalar hitFraction, int partId, int triangleIndex) = 0;\n};\n\n#endif  //BT_RAYCAST_TRI_CALLBACK_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMPLEX_SOLVER_INTERFACE_H\n#define BT_SIMPLEX_SOLVER_INTERFACE_H\n\n#include \"LinearMath/btVector3.h\"\n\n#define NO_VIRTUAL_INTERFACE 1\n#ifdef NO_VIRTUAL_INTERFACE\n#include \"btVoronoiSimplexSolver.h\"\n#define btSimplexSolverInterface btVoronoiSimplexSolver\n#else\n\n/// btSimplexSolverInterface can incrementally calculate distance between origin and up to 4 vertices\n/// Used by GJK or Linear Casting. Can be implemented by the Johnson-algorithm or alternative approaches based on\n/// voronoi regions or barycentric coordinates\nclass btSimplexSolverInterface\n{\npublic:\n\tvirtual ~btSimplexSolverInterface(){};\n\n\tvirtual void reset() = 0;\n\n\tvirtual void addVertex(const btVector3& w, const btVector3& p, const btVector3& q) = 0;\n\n\tvirtual bool closest(btVector3& v) = 0;\n\n\tvirtual btScalar maxVertex() = 0;\n\n\tvirtual bool fullSimplex() const = 0;\n\n\tvirtual int getSimplex(btVector3* pBuf, btVector3* qBuf, btVector3* yBuf) const = 0;\n\n\tvirtual bool inSimplex(const btVector3& w) = 0;\n\n\tvirtual void backup_closest(btVector3& v) = 0;\n\n\tvirtual bool emptySimplex() const = 0;\n\n\tvirtual void compute_points(btVector3& p1, btVector3& p2) = 0;\n\n\tvirtual int numVertices() const = 0;\n};\n#endif\n#endif  //BT_SIMPLEX_SOLVER_INTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SUBSIMPLEX_CONVEX_CAST_H\n#define BT_SUBSIMPLEX_CONVEX_CAST_H\n\n#include \"btConvexCast.h\"\n#include \"btSimplexSolverInterface.h\"\nclass btConvexShape;\n\n/// btSubsimplexConvexCast implements Gino van den Bergens' paper\n///\"Ray Casting against bteral Convex Objects with Application to Continuous Collision Detection\"\n/// GJK based Ray Cast, optimized version\n/// Objects should not start in overlap, otherwise results are not defined.\nclass btSubsimplexConvexCast : public btConvexCast\n{\n\tbtSimplexSolverInterface* m_simplexSolver;\n\tconst btConvexShape* m_convexA;\n\tconst btConvexShape* m_convexB;\n\npublic:\n\tbtSubsimplexConvexCast(const btConvexShape* shapeA, const btConvexShape* shapeB, btSimplexSolverInterface* simplexSolver);\n\n\t//virtual ~btSubsimplexConvexCast();\n\t///SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (sweep) between two moving objects.\n\t///Precondition is that objects should not penetration/overlap at the start from the interval. Overlap can be tested using btGjkPairDetector.\n\tvirtual bool calcTimeOfImpact(\n\t\tconst btTransform& fromA,\n\t\tconst btTransform& toA,\n\t\tconst btTransform& fromB,\n\t\tconst btTransform& toB,\n\t\tCastResult& result);\n};\n\n#endif  //BT_SUBSIMPLEX_CONVEX_CAST_H\n"
  },
  {
    "path": "libraries/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_VORONOI_SIMPLEX_SOLVER_H\n#define BT_VORONOI_SIMPLEX_SOLVER_H\n\n#include \"btSimplexSolverInterface.h\"\n\n#define VORONOI_SIMPLEX_MAX_VERTS 5\n\n///disable next define, or use defaultCollisionConfiguration->getSimplexSolver()->setEqualVertexThreshold(0.f) to disable/configure\n#define BT_USE_EQUAL_VERTEX_THRESHOLD\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD 1e-12f\n#else\n#define VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD 0.0001f\n#endif  //BT_USE_DOUBLE_PRECISION\n\nstruct btUsageBitfield\n{\n\tbtUsageBitfield()\n\t{\n\t\treset();\n\t}\n\n\tvoid reset()\n\t{\n\t\tusedVertexA = false;\n\t\tusedVertexB = false;\n\t\tusedVertexC = false;\n\t\tusedVertexD = false;\n\t}\n\tunsigned short usedVertexA : 1;\n\tunsigned short usedVertexB : 1;\n\tunsigned short usedVertexC : 1;\n\tunsigned short usedVertexD : 1;\n\tunsigned short unused1 : 1;\n\tunsigned short unused2 : 1;\n\tunsigned short unused3 : 1;\n\tunsigned short unused4 : 1;\n};\n\nstruct btSubSimplexClosestResult\n{\n\tbtVector3 m_closestPointOnSimplex;\n\t//MASK for m_usedVertices\n\t//stores the simplex vertex-usage, using the MASK,\n\t// if m_usedVertices & MASK then the related vertex is used\n\tbtUsageBitfield m_usedVertices;\n\tbtScalar m_barycentricCoords[4];\n\tbool m_degenerate;\n\n\tvoid reset()\n\t{\n\t\tm_degenerate = false;\n\t\tsetBarycentricCoordinates();\n\t\tm_usedVertices.reset();\n\t}\n\tbool isValid()\n\t{\n\t\tbool valid = (m_barycentricCoords[0] >= btScalar(0.)) &&\n\t\t\t\t\t (m_barycentricCoords[1] >= btScalar(0.)) &&\n\t\t\t\t\t (m_barycentricCoords[2] >= btScalar(0.)) &&\n\t\t\t\t\t (m_barycentricCoords[3] >= btScalar(0.));\n\n\t\treturn valid;\n\t}\n\tvoid setBarycentricCoordinates(btScalar a = btScalar(0.), btScalar b = btScalar(0.), btScalar c = btScalar(0.), btScalar d = btScalar(0.))\n\t{\n\t\tm_barycentricCoords[0] = a;\n\t\tm_barycentricCoords[1] = b;\n\t\tm_barycentricCoords[2] = c;\n\t\tm_barycentricCoords[3] = d;\n\t}\n};\n\n/// btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points simplex to the origin.\n/// Can be used with GJK, as an alternative to Johnson distance algorithm.\n#ifdef NO_VIRTUAL_INTERFACE\nATTRIBUTE_ALIGNED16(class)\nbtVoronoiSimplexSolver\n#else\nATTRIBUTE_ALIGNED16(class)\nbtVoronoiSimplexSolver : public btSimplexSolverInterface\n#endif\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tint m_numVertices;\n\n\tbtVector3 m_simplexVectorW[VORONOI_SIMPLEX_MAX_VERTS];\n\tbtVector3 m_simplexPointsP[VORONOI_SIMPLEX_MAX_VERTS];\n\tbtVector3 m_simplexPointsQ[VORONOI_SIMPLEX_MAX_VERTS];\n\n\tbtVector3 m_cachedP1;\n\tbtVector3 m_cachedP2;\n\tbtVector3 m_cachedV;\n\tbtVector3 m_lastW;\n\n\tbtScalar m_equalVertexThreshold;\n\tbool m_cachedValidClosest;\n\n\tbtSubSimplexClosestResult m_cachedBC;\n\n\tbool m_needsUpdate;\n\n\tvoid removeVertex(int index);\n\tvoid reduceVertices(const btUsageBitfield& usedVerts);\n\tbool updateClosestVectorAndPoints();\n\n\tbool closestPtPointTetrahedron(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d, btSubSimplexClosestResult& finalResult);\n\tint pointOutsideOfPlane(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, const btVector3& d);\n\tbool closestPtPointTriangle(const btVector3& p, const btVector3& a, const btVector3& b, const btVector3& c, btSubSimplexClosestResult& result);\n\npublic:\n\tbtVoronoiSimplexSolver()\n\t\t: m_equalVertexThreshold(VORONOI_DEFAULT_EQUAL_VERTEX_THRESHOLD)\n\t{\n\t}\n\tvoid reset();\n\n\tvoid addVertex(const btVector3& w, const btVector3& p, const btVector3& q);\n\n\tvoid setEqualVertexThreshold(btScalar threshold)\n\t{\n\t\tm_equalVertexThreshold = threshold;\n\t}\n\n\tbtScalar getEqualVertexThreshold() const\n\t{\n\t\treturn m_equalVertexThreshold;\n\t}\n\n\tbool closest(btVector3 & v);\n\n\tbtScalar maxVertex();\n\n\tbool fullSimplex() const\n\t{\n\t\treturn (m_numVertices == 4);\n\t}\n\n\tint getSimplex(btVector3 * pBuf, btVector3 * qBuf, btVector3 * yBuf) const;\n\n\tbool inSimplex(const btVector3& w);\n\n\tvoid backup_closest(btVector3 & v);\n\n\tbool emptySimplex() const;\n\n\tvoid compute_points(btVector3 & p1, btVector3 & p2);\n\n\tint numVertices() const\n\t{\n\t\treturn m_numVertices;\n\t}\n};\n\n#endif  //BT_VORONOI_SIMPLEX_SOLVER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btBatchedConstraints.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_BATCHED_CONSTRAINTS_H\n#define BT_BATCHED_CONSTRAINTS_H\n\n#include \"LinearMath/btThreads.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"BulletDynamics/ConstraintSolver/btSolverBody.h\"\n#include \"BulletDynamics/ConstraintSolver/btSolverConstraint.h\"\n\nclass btIDebugDraw;\n\nstruct btBatchedConstraints\n{\n\tenum BatchingMethod\n\t{\n\t\tBATCHING_METHOD_SPATIAL_GRID_2D,\n\t\tBATCHING_METHOD_SPATIAL_GRID_3D,\n\t\tBATCHING_METHOD_COUNT\n\t};\n\tstruct Range\n\t{\n\t\tint begin;\n\t\tint end;\n\n\t\tRange() : begin(0), end(0) {}\n\t\tRange(int _beg, int _end) : begin(_beg), end(_end) {}\n\t};\n\n\tbtAlignedObjectArray<int> m_constraintIndices;\n\tbtAlignedObjectArray<Range> m_batches;        // each batch is a range of indices in the m_constraintIndices array\n\tbtAlignedObjectArray<Range> m_phases;         // each phase is range of indices in the m_batches array\n\tbtAlignedObjectArray<char> m_phaseGrainSize;  // max grain size for each phase\n\tbtAlignedObjectArray<int> m_phaseOrder;       // phases can be done in any order, so we can randomize the order here\n\tbtIDebugDraw* m_debugDrawer;\n\n\tstatic bool s_debugDrawBatches;\n\n\tbtBatchedConstraints() { m_debugDrawer = NULL; }\n\tvoid setup(btConstraintArray* constraints,\n\t\t\t   const btAlignedObjectArray<btSolverBody>& bodies,\n\t\t\t   BatchingMethod batchingMethod,\n\t\t\t   int minBatchSize,\n\t\t\t   int maxBatchSize,\n\t\t\t   btAlignedObjectArray<char>* scratchMemory);\n\tbool validate(btConstraintArray* constraints, const btAlignedObjectArray<btSolverBody>& bodies) const;\n};\n\n#endif  // BT_BATCHED_CONSTRAINTS_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nbtConeTwistConstraint is Copyright (c) 2007 Starbreeze Studios\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n\nWritten by: Marcus Hennix\n*/\n\n/*\nOverview:\n\nbtConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc).\nIt is a fixed translation, 3 degree-of-freedom (DOF) rotational \"joint\".\nIt divides the 3 rotational DOFs into swing (movement within a cone) and twist.\nSwing is divided into swing1 and swing2 which can have different limits, giving an elliptical shape.\n(Note: the cone's base isn't flat, so this ellipse is \"embedded\" on the surface of a sphere.)\n\nIn the contraint's frame of reference:\ntwist is along the x-axis,\nand swing 1 and 2 are along the z and y axes respectively.\n*/\n\n#ifndef BT_CONETWISTCONSTRAINT_H\n#define BT_CONETWISTCONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btConeTwistConstraintData2 btConeTwistConstraintDoubleData\n#define btConeTwistConstraintDataName \"btConeTwistConstraintDoubleData\"\n#else\n#define btConeTwistConstraintData2 btConeTwistConstraintData\n#define btConeTwistConstraintDataName \"btConeTwistConstraintData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nclass btRigidBody;\n\nenum btConeTwistFlags\n{\n\tBT_CONETWIST_FLAGS_LIN_CFM = 1,\n\tBT_CONETWIST_FLAGS_LIN_ERP = 2,\n\tBT_CONETWIST_FLAGS_ANG_CFM = 4\n};\n\n///btConeTwistConstraint can be used to simulate ragdoll joints (upper arm, leg etc)\nATTRIBUTE_ALIGNED16(class)\nbtConeTwistConstraint : public btTypedConstraint\n{\n#ifdef IN_PARALLELL_SOLVER\npublic:\n#endif\n\tbtJacobianEntry m_jac[3];  //3 orthogonal linear constraints\n\n\tbtTransform m_rbAFrame;\n\tbtTransform m_rbBFrame;\n\n\tbtScalar m_limitSoftness;\n\tbtScalar m_biasFactor;\n\tbtScalar m_relaxationFactor;\n\n\tbtScalar m_damping;\n\n\tbtScalar m_swingSpan1;\n\tbtScalar m_swingSpan2;\n\tbtScalar m_twistSpan;\n\n\tbtScalar m_fixThresh;\n\n\tbtVector3 m_swingAxis;\n\tbtVector3 m_twistAxis;\n\n\tbtScalar m_kSwing;\n\tbtScalar m_kTwist;\n\n\tbtScalar m_twistLimitSign;\n\tbtScalar m_swingCorrection;\n\tbtScalar m_twistCorrection;\n\n\tbtScalar m_twistAngle;\n\n\tbtScalar m_accSwingLimitImpulse;\n\tbtScalar m_accTwistLimitImpulse;\n\n\tbool m_angularOnly;\n\tbool m_solveTwistLimit;\n\tbool m_solveSwingLimit;\n\n\tbool m_useSolveConstraintObsolete;\n\n\t// not yet used...\n\tbtScalar m_swingLimitRatio;\n\tbtScalar m_twistLimitRatio;\n\tbtVector3 m_twistAxisA;\n\n\t// motor\n\tbool m_bMotorEnabled;\n\tbool m_bNormalizedMotorStrength;\n\tbtQuaternion m_qTarget;\n\tbtScalar m_maxMotorImpulse;\n\tbtVector3 m_accMotorImpulse;\n\n\t// parameters\n\tint m_flags;\n\tbtScalar m_linCFM;\n\tbtScalar m_linERP;\n\tbtScalar m_angCFM;\n\nprotected:\n\tvoid init();\n\n\tvoid computeConeLimitInfo(const btQuaternion& qCone,                                           // in\n\t\t\t\t\t\t\t  btScalar& swingAngle, btVector3& vSwingAxis, btScalar& swingLimit);  // all outs\n\n\tvoid computeTwistLimitInfo(const btQuaternion& qTwist,                    // in\n\t\t\t\t\t\t\t   btScalar& twistAngle, btVector3& vTwistAxis);  // all outs\n\n\tvoid adjustSwingAxisToUseEllipseNormal(btVector3 & vSwingAxis) const;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtConeTwistConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& rbAFrame, const btTransform& rbBFrame);\n\n\tbtConeTwistConstraint(btRigidBody & rbA, const btTransform& rbAFrame);\n\n\tvirtual void buildJacobian();\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvoid getInfo1NonVirtual(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvoid getInfo2NonVirtual(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btMatrix3x3& invInertiaWorldA, const btMatrix3x3& invInertiaWorldB);\n\n\tvirtual void solveConstraintObsolete(btSolverBody & bodyA, btSolverBody & bodyB, btScalar timeStep);\n\n\tvoid updateRHS(btScalar timeStep);\n\n\tconst btRigidBody& getRigidBodyA() const\n\t{\n\t\treturn m_rbA;\n\t}\n\tconst btRigidBody& getRigidBodyB() const\n\t{\n\t\treturn m_rbB;\n\t}\n\n\tvoid setAngularOnly(bool angularOnly)\n\t{\n\t\tm_angularOnly = angularOnly;\n\t}\n\n\tbool getAngularOnly() const\n\t{\n\t\treturn m_angularOnly;\n\t}\n\n\tvoid setLimit(int limitIndex, btScalar limitValue)\n\t{\n\t\tswitch (limitIndex)\n\t\t{\n\t\t\tcase 3:\n\t\t\t{\n\t\t\t\tm_twistSpan = limitValue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 4:\n\t\t\t{\n\t\t\t\tm_swingSpan2 = limitValue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 5:\n\t\t\t{\n\t\t\t\tm_swingSpan1 = limitValue;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t{\n\t\t\t}\n\t\t};\n\t}\n\n\tbtScalar getLimit(int limitIndex) const\n\t{\n\t\tswitch (limitIndex)\n\t\t{\n\t\t\tcase 3:\n\t\t\t{\n\t\t\t\treturn m_twistSpan;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 4:\n\t\t\t{\n\t\t\t\treturn m_swingSpan2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 5:\n\t\t\t{\n\t\t\t\treturn m_swingSpan1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t{\n\t\t\t\tbtAssert(0 && \"Invalid limitIndex specified for btConeTwistConstraint\");\n\t\t\t\treturn 0.0;\n\t\t\t}\n\t\t};\n\t}\n\n\t// setLimit(), a few notes:\n\t// _softness:\n\t//\t\t0->1, recommend ~0.8->1.\n\t//\t\tdescribes % of limits where movement is free.\n\t//\t\tbeyond this softness %, the limit is gradually enforced until the \"hard\" (1.0) limit is reached.\n\t// _biasFactor:\n\t//\t\t0->1?, recommend 0.3 +/-0.3 or so.\n\t//\t\tstrength with which constraint resists zeroth order (angular, not angular velocity) limit violation.\n\t// __relaxationFactor:\n\t//\t\t0->1, recommend to stay near 1.\n\t//\t\tthe lower the value, the less the constraint will fight velocities which violate the angular limits.\n\tvoid setLimit(btScalar _swingSpan1, btScalar _swingSpan2, btScalar _twistSpan, btScalar _softness = 1.f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)\n\t{\n\t\tm_swingSpan1 = _swingSpan1;\n\t\tm_swingSpan2 = _swingSpan2;\n\t\tm_twistSpan = _twistSpan;\n\n\t\tm_limitSoftness = _softness;\n\t\tm_biasFactor = _biasFactor;\n\t\tm_relaxationFactor = _relaxationFactor;\n\t}\n\n\tconst btTransform& getAFrame() const { return m_rbAFrame; };\n\tconst btTransform& getBFrame() const { return m_rbBFrame; };\n\n\tinline int getSolveTwistLimit()\n\t{\n\t\treturn m_solveTwistLimit;\n\t}\n\n\tinline int getSolveSwingLimit()\n\t{\n\t\treturn m_solveSwingLimit;\n\t}\n\n\tinline btScalar getTwistLimitSign()\n\t{\n\t\treturn m_twistLimitSign;\n\t}\n\n\tvoid calcAngleInfo();\n\tvoid calcAngleInfo2(const btTransform& transA, const btTransform& transB, const btMatrix3x3& invInertiaWorldA, const btMatrix3x3& invInertiaWorldB);\n\n\tinline btScalar getSwingSpan1() const\n\t{\n\t\treturn m_swingSpan1;\n\t}\n\tinline btScalar getSwingSpan2() const\n\t{\n\t\treturn m_swingSpan2;\n\t}\n\tinline btScalar getTwistSpan() const\n\t{\n\t\treturn m_twistSpan;\n\t}\n\tinline btScalar getLimitSoftness() const\n\t{\n\t\treturn m_limitSoftness;\n\t}\n\tinline btScalar getBiasFactor() const\n\t{\n\t\treturn m_biasFactor;\n\t}\n\tinline btScalar getRelaxationFactor() const\n\t{\n\t\treturn m_relaxationFactor;\n\t}\n\tinline btScalar getTwistAngle() const\n\t{\n\t\treturn m_twistAngle;\n\t}\n\tbool isPastSwingLimit() { return m_solveSwingLimit; }\n\n\tbtScalar getDamping() const { return m_damping; }\n\tvoid setDamping(btScalar damping) { m_damping = damping; }\n\n\tvoid enableMotor(bool b) { m_bMotorEnabled = b; }\n\tbool isMotorEnabled() const { return m_bMotorEnabled; }\n\tbtScalar getMaxMotorImpulse() const { return m_maxMotorImpulse; }\n\tbool isMaxMotorImpulseNormalized() const { return m_bNormalizedMotorStrength; }\n\tvoid setMaxMotorImpulse(btScalar maxMotorImpulse)\n\t{\n\t\tm_maxMotorImpulse = maxMotorImpulse;\n\t\tm_bNormalizedMotorStrength = false;\n\t}\n\tvoid setMaxMotorImpulseNormalized(btScalar maxMotorImpulse)\n\t{\n\t\tm_maxMotorImpulse = maxMotorImpulse;\n\t\tm_bNormalizedMotorStrength = true;\n\t}\n\n\tbtScalar getFixThresh() { return m_fixThresh; }\n\tvoid setFixThresh(btScalar fixThresh) { m_fixThresh = fixThresh; }\n\n\t// setMotorTarget:\n\t// q: the desired rotation of bodyA wrt bodyB.\n\t// note: if q violates the joint limits, the internal target is clamped to avoid conflicting impulses (very bad for stability)\n\t// note: don't forget to enableMotor()\n\tvoid setMotorTarget(const btQuaternion& q);\n\tconst btQuaternion& getMotorTarget() const { return m_qTarget; }\n\n\t// same as above, but q is the desired rotation of frameA wrt frameB in constraint space\n\tvoid setMotorTargetInConstraintSpace(const btQuaternion& q);\n\n\tbtVector3 GetPointForAngle(btScalar fAngleInRadians, btScalar fLength) const;\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\n\tvirtual void setFrames(const btTransform& frameA, const btTransform& frameB);\n\n\tconst btTransform& getFrameOffsetA() const\n\t{\n\t\treturn m_rbAFrame;\n\t}\n\n\tconst btTransform& getFrameOffsetB() const\n\t{\n\t\treturn m_rbBFrame;\n\t}\n\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tint getFlags() const\n\t{\n\t\treturn m_flags;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nstruct btConeTwistConstraintDoubleData\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;\n\tbtTransformDoubleData m_rbBFrame;\n\n\t//limits\n\tdouble m_swingSpan1;\n\tdouble m_swingSpan2;\n\tdouble m_twistSpan;\n\tdouble m_limitSoftness;\n\tdouble m_biasFactor;\n\tdouble m_relaxationFactor;\n\n\tdouble m_damping;\n};\n\n#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n///this structure is not used, except for loading pre-2.82 .bullet files\nstruct btConeTwistConstraintData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformFloatData m_rbAFrame;\n\tbtTransformFloatData m_rbBFrame;\n\n\t//limits\n\tfloat m_swingSpan1;\n\tfloat m_swingSpan2;\n\tfloat m_twistSpan;\n\tfloat m_limitSoftness;\n\tfloat m_biasFactor;\n\tfloat m_relaxationFactor;\n\n\tfloat m_damping;\n\n\tchar m_pad[4];\n};\n#endif  //BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n//\n\nSIMD_FORCE_INLINE int btConeTwistConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btConeTwistConstraintData2);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btConeTwistConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtConeTwistConstraintData2* cone = (btConeTwistConstraintData2*)dataBuffer;\n\tbtTypedConstraint::serialize(&cone->m_typeConstraintData, serializer);\n\n\tm_rbAFrame.serialize(cone->m_rbAFrame);\n\tm_rbBFrame.serialize(cone->m_rbBFrame);\n\n\tcone->m_swingSpan1 = m_swingSpan1;\n\tcone->m_swingSpan2 = m_swingSpan2;\n\tcone->m_twistSpan = m_twistSpan;\n\tcone->m_limitSoftness = m_limitSoftness;\n\tcone->m_biasFactor = m_biasFactor;\n\tcone->m_relaxationFactor = m_relaxationFactor;\n\tcone->m_damping = m_damping;\n\n\treturn btConeTwistConstraintDataName;\n}\n\n#endif  //BT_CONETWISTCONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONSTRAINT_SOLVER_H\n#define BT_CONSTRAINT_SOLVER_H\n\n#include \"LinearMath/btScalar.h\"\n\nclass btPersistentManifold;\nclass btRigidBody;\nclass btCollisionObject;\nclass btTypedConstraint;\nstruct btContactSolverInfo;\nstruct btBroadphaseProxy;\nclass btIDebugDraw;\nclass btStackAlloc;\nclass btDispatcher;\n/// btConstraintSolver provides solver interface\n\nenum btConstraintSolverType\n{\n\tBT_SEQUENTIAL_IMPULSE_SOLVER = 1,\n\tBT_MLCP_SOLVER = 2,\n\tBT_NNCG_SOLVER = 4,\n\tBT_MULTIBODY_SOLVER = 8,\n\tBT_BLOCK_SOLVER = 16,\n};\n\nclass btConstraintSolver\n{\npublic:\n\tvirtual ~btConstraintSolver() {}\n\n\tvirtual void prepareSolve(int /* numBodies */, int /* numManifolds */) { ; }\n\n\t///solve a group of constraints\n\tvirtual btScalar solveGroup(btCollisionObject** bodies, int numBodies, btPersistentManifold** manifold, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& info, class btIDebugDraw* debugDrawer, btDispatcher* dispatcher) = 0;\n\n\tvirtual void allSolved(const btContactSolverInfo& /* info */, class btIDebugDraw* /* debugDrawer */) { ; }\n\n\t///clear internal cached data and reset random seed\n\tvirtual void reset() = 0;\n\n\tvirtual btConstraintSolverType getSolverType() const = 0;\n};\n\n#endif  //BT_CONSTRAINT_SOLVER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONTACT_CONSTRAINT_H\n#define BT_CONTACT_CONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btPersistentManifold.h\"\n\n///btContactConstraint can be automatically created to solve contact constraints using the unified btTypedConstraint interface\nATTRIBUTE_ALIGNED16(class)\nbtContactConstraint : public btTypedConstraint\n{\nprotected:\n\tbtPersistentManifold m_contactManifold;\n\nprotected:\n\tbtContactConstraint(btPersistentManifold * contactManifold, btRigidBody & rbA, btRigidBody & rbB);\n\npublic:\n\tvoid setContactManifold(btPersistentManifold * contactManifold);\n\n\tbtPersistentManifold* getContactManifold()\n\t{\n\t\treturn &m_contactManifold;\n\t}\n\n\tconst btPersistentManifold* getContactManifold() const\n\t{\n\t\treturn &m_contactManifold;\n\t}\n\n\tvirtual ~btContactConstraint();\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\t///obsolete methods\n\tvirtual void buildJacobian();\n};\n\n///very basic collision resolution without friction\nbtScalar resolveSingleCollision(btRigidBody* body1, class btCollisionObject* colObj2, const btVector3& contactPositionWorld, const btVector3& contactNormalOnB, const struct btContactSolverInfo& solverInfo, btScalar distance);\n\n///resolveSingleBilateral is an obsolete methods used for vehicle friction between two dynamic objects\nvoid resolveSingleBilateral(btRigidBody& body1, const btVector3& pos1,\n\t\t\t\t\t\t\tbtRigidBody& body2, const btVector3& pos2,\n\t\t\t\t\t\t\tbtScalar distance, const btVector3& normal, btScalar& impulse, btScalar timeStep);\n\n#endif  //BT_CONTACT_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONTACT_SOLVER_INFO\n#define BT_CONTACT_SOLVER_INFO\n\n#include \"LinearMath/btScalar.h\"\n\nenum btSolverMode\n{\n\tSOLVER_RANDMIZE_ORDER = 1,\n\tSOLVER_FRICTION_SEPARATE = 2,\n\tSOLVER_USE_WARMSTARTING = 4,\n\tSOLVER_USE_2_FRICTION_DIRECTIONS = 16,\n\tSOLVER_ENABLE_FRICTION_DIRECTION_CACHING = 32,\n\tSOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION = 64,\n\tSOLVER_CACHE_FRIENDLY = 128,\n\tSOLVER_SIMD = 256,\n\tSOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS = 512,\n\tSOLVER_ALLOW_ZERO_LENGTH_FRICTION_DIRECTIONS = 1024,\n\tSOLVER_DISABLE_IMPLICIT_CONE_FRICTION = 2048,\n\tSOLVER_USE_ARTICULATED_WARMSTARTING = 4096,\n};\n\nstruct btContactSolverInfoData\n{\n\tbtScalar m_tau;\n\tbtScalar m_damping;  //global non-contact constraint damping, can be locally overridden by constraints during 'getInfo2'.\n\tbtScalar m_friction;\n\tbtScalar m_timeStep;\n\tbtScalar m_restitution;\n\tint m_numIterations;\n\tbtScalar m_maxErrorReduction;\n\tbtScalar m_sor;          //successive over-relaxation term\n\tbtScalar m_erp;          //error reduction for non-contact constraints\n\tbtScalar m_erp2;         //error reduction for contact constraints\n\tbtScalar m_deformable_erp;          //error reduction for deformable constraints\n\tbtScalar m_deformable_cfm;          //constraint force mixing for deformable constraints\n\tbtScalar m_deformable_maxErrorReduction; // maxErrorReduction for deformable contact\n\tbtScalar m_globalCfm;    //constraint force mixing for contacts and non-contacts\n\tbtScalar m_frictionERP;  //error reduction for friction constraints\n\tbtScalar m_frictionCFM;  //constraint force mixing for friction constraints\n\n\tint m_splitImpulse;\n\tbtScalar m_splitImpulsePenetrationThreshold;\n\tbtScalar m_splitImpulseTurnErp;\n\tbtScalar m_linearSlop;\n\tbtScalar m_warmstartingFactor;\n\tbtScalar m_articulatedWarmstartingFactor;\n\tint m_solverMode;\n\tint m_restingContactRestitutionThreshold;\n\tint m_minimumSolverBatchSize;\n\tbtScalar m_maxGyroscopicForce;\n\tbtScalar m_singleAxisRollingFrictionThreshold;\n\tbtScalar m_leastSquaresResidualThreshold;\n\tbtScalar m_restitutionVelocityThreshold;\n\tbool m_jointFeedbackInWorldSpace;\n\tbool m_jointFeedbackInJointFrame;\n\tint m_reportSolverAnalytics;\n\tint m_numNonContactInnerIterations;\n};\n\nstruct btContactSolverInfo : public btContactSolverInfoData\n{\n\tinline btContactSolverInfo()\n\t{\n\t\tm_tau = btScalar(0.6);\n\t\tm_damping = btScalar(1.0);\n\t\tm_friction = btScalar(0.3);\n\t\tm_timeStep = btScalar(1.f / 60.f);\n\t\tm_restitution = btScalar(0.);\n\t\tm_maxErrorReduction = btScalar(20.);\n\t\tm_numIterations = 10;\n\t\tm_erp = btScalar(0.2);\n\t\tm_erp2 = btScalar(0.2);\n\t\tm_deformable_erp = btScalar(0.06);\n\t\tm_deformable_cfm = btScalar(0.01);\n\t\tm_deformable_maxErrorReduction = btScalar(0.1);\n\t\tm_globalCfm = btScalar(0.);\n\t\tm_frictionERP = btScalar(0.2);  //positional friction 'anchors' are disabled by default\n\t\tm_frictionCFM = btScalar(0.);\n\t\tm_sor = btScalar(1.);\n\t\tm_splitImpulse = true;\n\t\tm_splitImpulsePenetrationThreshold = -.04f;\n\t\tm_splitImpulseTurnErp = 0.1f;\n\t\tm_linearSlop = btScalar(0.0);\n\t\tm_warmstartingFactor = btScalar(0.85);\n\t\tm_articulatedWarmstartingFactor = btScalar(0.85);\n\t\t//m_solverMode =  SOLVER_USE_WARMSTARTING |  SOLVER_SIMD | SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION|SOLVER_USE_2_FRICTION_DIRECTIONS|SOLVER_ENABLE_FRICTION_DIRECTION_CACHING;// | SOLVER_RANDMIZE_ORDER;\n\t\tm_solverMode = SOLVER_USE_WARMSTARTING | SOLVER_SIMD;  // | SOLVER_RANDMIZE_ORDER;\n\t\tm_restingContactRestitutionThreshold = 2;              //unused as of 2.81\n\t\tm_minimumSolverBatchSize = 128;                        //try to combine islands until the amount of constraints reaches this limit\n\t\tm_maxGyroscopicForce = 100.f;                          ///it is only used for 'explicit' version of gyroscopic force\n\t\tm_singleAxisRollingFrictionThreshold = 1e30f;          ///if the velocity is above this threshold, it will use a single constraint row (axis), otherwise 3 rows.\n\t\tm_leastSquaresResidualThreshold = 0.f;\n\t\tm_restitutionVelocityThreshold = 0.2f;  //if the relative velocity is below this threshold, there is zero restitution\n\t\tm_jointFeedbackInWorldSpace = false;\n\t\tm_jointFeedbackInJointFrame = false;\n\t\tm_reportSolverAnalytics = 0;\n\t\tm_numNonContactInnerIterations = 1;   // the number of inner iterations for solving motor constraint in a single iteration of the constraint solve\n\t}\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btContactSolverInfoDoubleData\n{\n\tdouble m_tau;\n\tdouble m_damping;  //global non-contact constraint damping, can be locally overridden by constraints during 'getInfo2'.\n\tdouble m_friction;\n\tdouble m_timeStep;\n\tdouble m_restitution;\n\tdouble m_maxErrorReduction;\n\tdouble m_sor;\n\tdouble m_erp;        //used as Baumgarte factor\n\tdouble m_erp2;       //used in Split Impulse\n\tdouble m_globalCfm;  //constraint force mixing\n\tdouble m_splitImpulsePenetrationThreshold;\n\tdouble m_splitImpulseTurnErp;\n\tdouble m_linearSlop;\n\tdouble m_warmstartingFactor;\n\tdouble m_articulatedWarmstartingFactor;\n\tdouble m_maxGyroscopicForce;  ///it is only used for 'explicit' version of gyroscopic force\n\tdouble m_singleAxisRollingFrictionThreshold;\n\n\tint m_numIterations;\n\tint m_solverMode;\n\tint m_restingContactRestitutionThreshold;\n\tint m_minimumSolverBatchSize;\n\tint m_splitImpulse;\n\tchar m_padding[4];\n};\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btContactSolverInfoFloatData\n{\n\tfloat m_tau;\n\tfloat m_damping;  //global non-contact constraint damping, can be locally overridden by constraints during 'getInfo2'.\n\tfloat m_friction;\n\tfloat m_timeStep;\n\n\tfloat m_restitution;\n\tfloat m_maxErrorReduction;\n\tfloat m_sor;\n\tfloat m_erp;  //used as Baumgarte factor\n\n\tfloat m_erp2;       //used in Split Impulse\n\tfloat m_globalCfm;  //constraint force mixing\n\tfloat m_splitImpulsePenetrationThreshold;\n\tfloat m_splitImpulseTurnErp;\n\n\tfloat m_linearSlop;\n\tfloat m_warmstartingFactor;\n\tfloat m_articulatedWarmstartingFactor;\n\tfloat m_maxGyroscopicForce;\n\n\tfloat m_singleAxisRollingFrictionThreshold;\n\tint m_numIterations;\n\tint m_solverMode;\n\tint m_restingContactRestitutionThreshold;\n\n\tint m_minimumSolverBatchSize;\n\tint m_splitImpulse;\n\t\n};\n\n#endif  //BT_CONTACT_SOLVER_INFO\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btFixedConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2013 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_FIXED_CONSTRAINT_H\n#define BT_FIXED_CONSTRAINT_H\n\n#include \"btGeneric6DofSpring2Constraint.h\"\n\nATTRIBUTE_ALIGNED16(class)\nbtFixedConstraint : public btGeneric6DofSpring2Constraint\n{\npublic:\n\tbtFixedConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& frameInA, const btTransform& frameInB);\n\n\tvirtual ~btFixedConstraint();\n};\n\n#endif  //BT_FIXED_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btGearConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2012 Advanced Micro Devices, Inc.  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GEAR_CONSTRAINT_H\n#define BT_GEAR_CONSTRAINT_H\n\n#include \"BulletDynamics/ConstraintSolver/btTypedConstraint.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btGearConstraintData btGearConstraintDoubleData\n#define btGearConstraintDataName \"btGearConstraintDoubleData\"\n#else\n#define btGearConstraintData btGearConstraintFloatData\n#define btGearConstraintDataName \"btGearConstraintFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n///The btGeatConstraint will couple the angular velocity for two bodies around given local axis and ratio.\n///See Bullet/Demos/ConstraintDemo for an example use.\nclass btGearConstraint : public btTypedConstraint\n{\nprotected:\n\tbtVector3 m_axisInA;\n\tbtVector3 m_axisInB;\n\tbool m_useFrameA;\n\tbtScalar m_ratio;\n\npublic:\n\tbtGearConstraint(btRigidBody& rbA, btRigidBody& rbB, const btVector3& axisInA, const btVector3& axisInB, btScalar ratio = 1.f);\n\tvirtual ~btGearConstraint();\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void getInfo1(btConstraintInfo1* info);\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void getInfo2(btConstraintInfo2* info);\n\n\tvoid setAxisA(btVector3& axisA)\n\t{\n\t\tm_axisInA = axisA;\n\t}\n\tvoid setAxisB(btVector3& axisB)\n\t{\n\t\tm_axisInB = axisB;\n\t}\n\tvoid setRatio(btScalar ratio)\n\t{\n\t\tm_ratio = ratio;\n\t}\n\tconst btVector3& getAxisA() const\n\t{\n\t\treturn m_axisInA;\n\t}\n\tconst btVector3& getAxisB() const\n\t{\n\t\treturn m_axisInB;\n\t}\n\tbtScalar getRatio() const\n\t{\n\t\treturn m_ratio;\n\t}\n\n\tvirtual void setParam(int num, btScalar value, int axis = -1)\n\t{\n\t\t(void)num;\n\t\t(void)value;\n\t\t(void)axis;\n\t\tbtAssert(0);\n\t}\n\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const\n\t{\n\t\t(void)num;\n\t\t(void)axis;\n\t\tbtAssert(0);\n\t\treturn 0.f;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btGearConstraintFloatData\n{\n\tbtTypedConstraintFloatData m_typeConstraintData;\n\n\tbtVector3FloatData m_axisInA;\n\tbtVector3FloatData m_axisInB;\n\n\tfloat m_ratio;\n\tchar m_padding[4];\n};\n\nstruct btGearConstraintDoubleData\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\n\tbtVector3DoubleData m_axisInA;\n\tbtVector3DoubleData m_axisInB;\n\n\tdouble m_ratio;\n};\n\nSIMD_FORCE_INLINE int btGearConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btGearConstraintData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btGearConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtGearConstraintData* gear = (btGearConstraintData*)dataBuffer;\n\tbtTypedConstraint::serialize(&gear->m_typeConstraintData, serializer);\n\n\tm_axisInA.serialize(gear->m_axisInA);\n\tm_axisInB.serialize(gear->m_axisInB);\n\n\tgear->m_ratio = m_ratio;\n\n\t// Fill padding with zeros to appease msan.\n#ifndef BT_USE_DOUBLE_PRECISION\n\tgear->m_padding[0] = 0;\n\tgear->m_padding[1] = 0;\n\tgear->m_padding[2] = 0;\n\tgear->m_padding[3] = 0;\n#endif\n\n\treturn btGearConstraintDataName;\n}\n\n#endif  //BT_GEAR_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/// 2009 March: btGeneric6DofConstraint refactored by Roman Ponomarev\n/// Added support for generic constraint solver through getInfo1/getInfo2 methods\n\n/*\n2007-09-09\nbtGeneric6DofConstraint Refactored by Francisco Le?n\nemail: projectileman@yahoo.com\nhttp://gimpact.sf.net\n*/\n\n#ifndef BT_GENERIC_6DOF_CONSTRAINT_H\n#define BT_GENERIC_6DOF_CONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\nclass btRigidBody;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btGeneric6DofConstraintData2 btGeneric6DofConstraintDoubleData2\n#define btGeneric6DofConstraintDataName \"btGeneric6DofConstraintDoubleData2\"\n#else\n#define btGeneric6DofConstraintData2 btGeneric6DofConstraintData\n#define btGeneric6DofConstraintDataName \"btGeneric6DofConstraintData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n//! Rotation Limit structure for generic joints\nclass btRotationalLimitMotor\n{\npublic:\n\t//! limit_parameters\n\t//!@{\n\tbtScalar m_loLimit;         //!< joint limit\n\tbtScalar m_hiLimit;         //!< joint limit\n\tbtScalar m_targetVelocity;  //!< target motor velocity\n\tbtScalar m_maxMotorForce;   //!< max force on motor\n\tbtScalar m_maxLimitForce;   //!< max force on limit\n\tbtScalar m_damping;         //!< Damping.\n\tbtScalar m_limitSoftness;   //! Relaxation factor\n\tbtScalar m_normalCFM;       //!< Constraint force mixing factor\n\tbtScalar m_stopERP;         //!< Error tolerance factor when joint is at limit\n\tbtScalar m_stopCFM;         //!< Constraint force mixing factor when joint is at limit\n\tbtScalar m_bounce;          //!< restitution factor\n\tbool m_enableMotor;\n\n\t//!@}\n\n\t//! temp_variables\n\t//!@{\n\tbtScalar m_currentLimitError;  //!  How much is violated this limit\n\tbtScalar m_currentPosition;    //!  current value of angle\n\tint m_currentLimit;            //!< 0=free, 1=at lo limit, 2=at hi limit\n\tbtScalar m_accumulatedImpulse;\n\t//!@}\n\n\tbtRotationalLimitMotor()\n\t{\n\t\tm_accumulatedImpulse = 0.f;\n\t\tm_targetVelocity = 0;\n\t\tm_maxMotorForce = 6.0f;\n\t\tm_maxLimitForce = 300.0f;\n\t\tm_loLimit = 1.0f;\n\t\tm_hiLimit = -1.0f;\n\t\tm_normalCFM = 0.f;\n\t\tm_stopERP = 0.2f;\n\t\tm_stopCFM = 0.f;\n\t\tm_bounce = 0.0f;\n\t\tm_damping = 1.0f;\n\t\tm_limitSoftness = 0.5f;\n\t\tm_currentLimit = 0;\n\t\tm_currentLimitError = 0;\n\t\tm_enableMotor = false;\n\t}\n\n\tbtRotationalLimitMotor(const btRotationalLimitMotor& limot)\n\t{\n\t\tm_targetVelocity = limot.m_targetVelocity;\n\t\tm_maxMotorForce = limot.m_maxMotorForce;\n\t\tm_limitSoftness = limot.m_limitSoftness;\n\t\tm_loLimit = limot.m_loLimit;\n\t\tm_hiLimit = limot.m_hiLimit;\n\t\tm_normalCFM = limot.m_normalCFM;\n\t\tm_stopERP = limot.m_stopERP;\n\t\tm_stopCFM = limot.m_stopCFM;\n\t\tm_bounce = limot.m_bounce;\n\t\tm_currentLimit = limot.m_currentLimit;\n\t\tm_currentLimitError = limot.m_currentLimitError;\n\t\tm_enableMotor = limot.m_enableMotor;\n\t}\n\n\t//! Is limited\n\tbool isLimited() const\n\t{\n\t\tif (m_loLimit > m_hiLimit) return false;\n\t\treturn true;\n\t}\n\n\t//! Need apply correction\n\tbool needApplyTorques() const\n\t{\n\t\tif (m_currentLimit == 0 && m_enableMotor == false) return false;\n\t\treturn true;\n\t}\n\n\t//! calculates  error\n\t/*!\n\tcalculates m_currentLimit and m_currentLimitError.\n\t*/\n\tint testLimitValue(btScalar test_value);\n\n\t//! apply the correction impulses for two bodies\n\tbtScalar solveAngularLimits(btScalar timeStep, btVector3& axis, btScalar jacDiagABInv, btRigidBody* body0, btRigidBody* body1);\n};\n\nclass btTranslationalLimitMotor\n{\npublic:\n\tbtVector3 m_lowerLimit;  //!< the constraint lower limits\n\tbtVector3 m_upperLimit;  //!< the constraint upper limits\n\tbtVector3 m_accumulatedImpulse;\n\t//! Linear_Limit_parameters\n\t//!@{\n\tbtScalar m_limitSoftness;  //!< Softness for linear limit\n\tbtScalar m_damping;        //!< Damping for linear limit\n\tbtScalar m_restitution;    //! Bounce parameter for linear limit\n\tbtVector3 m_normalCFM;     //!< Constraint force mixing factor\n\tbtVector3 m_stopERP;       //!< Error tolerance factor when joint is at limit\n\tbtVector3 m_stopCFM;       //!< Constraint force mixing factor when joint is at limit\n\t\t\t\t\t\t\t   //!@}\n\tbool m_enableMotor[3];\n\tbtVector3 m_targetVelocity;     //!< target motor velocity\n\tbtVector3 m_maxMotorForce;      //!< max force on motor\n\tbtVector3 m_currentLimitError;  //!  How much is violated this limit\n\tbtVector3 m_currentLinearDiff;  //!  Current relative offset of constraint frames\n\tint m_currentLimit[3];          //!< 0=free, 1=at lower limit, 2=at upper limit\n\n\tbtTranslationalLimitMotor()\n\t{\n\t\tm_lowerLimit.setValue(0.f, 0.f, 0.f);\n\t\tm_upperLimit.setValue(0.f, 0.f, 0.f);\n\t\tm_accumulatedImpulse.setValue(0.f, 0.f, 0.f);\n\t\tm_normalCFM.setValue(0.f, 0.f, 0.f);\n\t\tm_stopERP.setValue(0.2f, 0.2f, 0.2f);\n\t\tm_stopCFM.setValue(0.f, 0.f, 0.f);\n\n\t\tm_limitSoftness = 0.7f;\n\t\tm_damping = btScalar(1.0f);\n\t\tm_restitution = btScalar(0.5f);\n\t\tfor (int i = 0; i < 3; i++)\n\t\t{\n\t\t\tm_enableMotor[i] = false;\n\t\t\tm_targetVelocity[i] = btScalar(0.f);\n\t\t\tm_maxMotorForce[i] = btScalar(0.f);\n\t\t}\n\t}\n\n\tbtTranslationalLimitMotor(const btTranslationalLimitMotor& other)\n\t{\n\t\tm_lowerLimit = other.m_lowerLimit;\n\t\tm_upperLimit = other.m_upperLimit;\n\t\tm_accumulatedImpulse = other.m_accumulatedImpulse;\n\n\t\tm_limitSoftness = other.m_limitSoftness;\n\t\tm_damping = other.m_damping;\n\t\tm_restitution = other.m_restitution;\n\t\tm_normalCFM = other.m_normalCFM;\n\t\tm_stopERP = other.m_stopERP;\n\t\tm_stopCFM = other.m_stopCFM;\n\n\t\tfor (int i = 0; i < 3; i++)\n\t\t{\n\t\t\tm_enableMotor[i] = other.m_enableMotor[i];\n\t\t\tm_targetVelocity[i] = other.m_targetVelocity[i];\n\t\t\tm_maxMotorForce[i] = other.m_maxMotorForce[i];\n\t\t}\n\t}\n\n\t//! Test limit\n\t/*!\n    - free means upper < lower,\n    - locked means upper == lower\n    - limited means upper > lower\n    - limitIndex: first 3 are linear, next 3 are angular\n    */\n\tinline bool isLimited(int limitIndex) const\n\t{\n\t\treturn (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]);\n\t}\n\tinline bool needApplyForce(int limitIndex) const\n\t{\n\t\tif (m_currentLimit[limitIndex] == 0 && m_enableMotor[limitIndex] == false) return false;\n\t\treturn true;\n\t}\n\tint testLimitValue(int limitIndex, btScalar test_value);\n\n\tbtScalar solveLinearAxis(\n\t\tbtScalar timeStep,\n\t\tbtScalar jacDiagABInv,\n\t\tbtRigidBody& body1, const btVector3& pointInA,\n\t\tbtRigidBody& body2, const btVector3& pointInB,\n\t\tint limit_index,\n\t\tconst btVector3& axis_normal_on_a,\n\t\tconst btVector3& anchorPos);\n};\n\nenum bt6DofFlags\n{\n\tBT_6DOF_FLAGS_CFM_NORM = 1,\n\tBT_6DOF_FLAGS_CFM_STOP = 2,\n\tBT_6DOF_FLAGS_ERP_STOP = 4\n};\n#define BT_6DOF_FLAGS_AXIS_SHIFT 3  // bits per axis\n\n/// btGeneric6DofConstraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space\n/*!\nbtGeneric6DofConstraint can leave any of the 6 degree of freedom 'free' or 'locked'.\ncurrently this limit supports rotational motors<br>\n<ul>\n<li> For Linear limits, use btGeneric6DofConstraint.setLinearUpperLimit, btGeneric6DofConstraint.setLinearLowerLimit. You can set the parameters with the btTranslationalLimitMotor structure accsesible through the btGeneric6DofConstraint.getTranslationalLimitMotor method.\nAt this moment translational motors are not supported. May be in the future. </li>\n\n<li> For Angular limits, use the btRotationalLimitMotor structure for configuring the limit.\nThis is accessible through btGeneric6DofConstraint.getLimitMotor method,\nThis brings support for limit parameters and motors. </li>\n\n<li> Angulars limits have these possible ranges:\n<table border=1 >\n<tr>\n\t<td><b>AXIS</b></td>\n\t<td><b>MIN ANGLE</b></td>\n\t<td><b>MAX ANGLE</b></td>\n</tr><tr>\n\t<td>X</td>\n\t<td>-PI</td>\n\t<td>PI</td>\n</tr><tr>\n\t<td>Y</td>\n\t<td>-PI/2</td>\n\t<td>PI/2</td>\n</tr><tr>\n\t<td>Z</td>\n\t<td>-PI</td>\n\t<td>PI</td>\n</tr>\n</table>\n</li>\n</ul>\n\n*/\nATTRIBUTE_ALIGNED16(class)\nbtGeneric6DofConstraint : public btTypedConstraint\n{\nprotected:\n\t//! relative_frames\n\t//!@{\n\tbtTransform m_frameInA;  //!< the constraint space w.r.t body A\n\tbtTransform m_frameInB;  //!< the constraint space w.r.t body B\n\t//!@}\n\n\t//! Jacobians\n\t//!@{\n\tbtJacobianEntry m_jacLinear[3];  //!< 3 orthogonal linear constraints\n\tbtJacobianEntry m_jacAng[3];     //!< 3 orthogonal angular constraints\n\t//!@}\n\n\t//! Linear_Limit_parameters\n\t//!@{\n\tbtTranslationalLimitMotor m_linearLimits;\n\t//!@}\n\n\t//! hinge_parameters\n\t//!@{\n\tbtRotationalLimitMotor m_angularLimits[3];\n\t//!@}\n\nprotected:\n\t//! temporal variables\n\t//!@{\n\tbtScalar m_timeStep;\n\tbtTransform m_calculatedTransformA;\n\tbtTransform m_calculatedTransformB;\n\tbtVector3 m_calculatedAxisAngleDiff;\n\tbtVector3 m_calculatedAxis[3];\n\tbtVector3 m_calculatedLinearDiff;\n\tbtScalar m_factA;\n\tbtScalar m_factB;\n\tbool m_hasStaticBody;\n\n\tbtVector3 m_AnchorPos;  // point betwen pivots of bodies A and B to solve linear axes\n\n\tbool m_useLinearReferenceFrameA;\n\tbool m_useOffsetForConstraintFrame;\n\n\tint m_flags;\n\n\t//!@}\n\n\tbtGeneric6DofConstraint& operator=(btGeneric6DofConstraint& other)\n\t{\n\t\tbtAssert(0);\n\t\t(void)other;\n\t\treturn *this;\n\t}\n\n\tint setAngularLimits(btConstraintInfo2 * info, int row_offset, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tint setLinearLimits(btConstraintInfo2 * info, int row, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tvoid buildLinearJacobian(\n\t\tbtJacobianEntry & jacLinear, const btVector3& normalWorld,\n\t\tconst btVector3& pivotAInW, const btVector3& pivotBInW);\n\n\tvoid buildAngularJacobian(btJacobianEntry & jacAngular, const btVector3& jointAxisW);\n\n\t// tests linear limits\n\tvoid calculateLinearInfo();\n\n\t//! calcs the euler angles between the two bodies.\n\tvoid calculateAngleInfo();\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t///for backwards compatibility during the transition to 'getInfo/getInfo2'\n\tbool m_useSolveConstraintObsolete;\n\n\tbtGeneric6DofConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA);\n\tbtGeneric6DofConstraint(btRigidBody & rbB, const btTransform& frameInB, bool useLinearReferenceFrameB);\n\n\t//! Calcs global transform of the offsets\n\t/*!\n\tCalcs the global transform for the joint offset for body A an B, and also calcs the agle differences between the bodies.\n\t\\sa btGeneric6DofConstraint.getCalculatedTransformA , btGeneric6DofConstraint.getCalculatedTransformB, btGeneric6DofConstraint.calculateAngleInfo\n\t*/\n\tvoid calculateTransforms(const btTransform& transA, const btTransform& transB);\n\n\tvoid calculateTransforms();\n\n\t//! Gets the global transform of the offset for body A\n\t/*!\n    \\sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo.\n    */\n\tconst btTransform& getCalculatedTransformA() const\n\t{\n\t\treturn m_calculatedTransformA;\n\t}\n\n\t//! Gets the global transform of the offset for body B\n\t/*!\n    \\sa btGeneric6DofConstraint.getFrameOffsetA, btGeneric6DofConstraint.getFrameOffsetB, btGeneric6DofConstraint.calculateAngleInfo.\n    */\n\tconst btTransform& getCalculatedTransformB() const\n\t{\n\t\treturn m_calculatedTransformB;\n\t}\n\n\tconst btTransform& getFrameOffsetA() const\n\t{\n\t\treturn m_frameInA;\n\t}\n\n\tconst btTransform& getFrameOffsetB() const\n\t{\n\t\treturn m_frameInB;\n\t}\n\n\tbtTransform& getFrameOffsetA()\n\t{\n\t\treturn m_frameInA;\n\t}\n\n\tbtTransform& getFrameOffsetB()\n\t{\n\t\treturn m_frameInB;\n\t}\n\n\t//! performs Jacobian calculation, and also calculates angle differences and axis\n\tvirtual void buildJacobian();\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvoid getInfo1NonVirtual(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvoid getInfo2NonVirtual(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tvoid updateRHS(btScalar timeStep);\n\n\t//! Get the rotation axis in global coordinates\n\t/*!\n\t\\pre btGeneric6DofConstraint.buildJacobian must be called previously.\n\t*/\n\tbtVector3 getAxis(int axis_index) const;\n\n\t//! Get the relative Euler angle\n\t/*!\n\t\\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.\n\t*/\n\tbtScalar getAngle(int axis_index) const;\n\n\t//! Get the relative position of the constraint pivot\n\t/*!\n\t\\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.\n\t*/\n\tbtScalar getRelativePivotPosition(int axis_index) const;\n\n\tvoid setFrames(const btTransform& frameA, const btTransform& frameB);\n\n\t//! Test angular limit.\n\t/*!\n\tCalculates angular correction and returns true if limit needs to be corrected.\n\t\\pre btGeneric6DofConstraint::calculateTransforms() must be called previously.\n\t*/\n\tbool testAngularLimitMotor(int axis_index);\n\n\tvoid setLinearLowerLimit(const btVector3& linearLower)\n\t{\n\t\tm_linearLimits.m_lowerLimit = linearLower;\n\t}\n\n\tvoid getLinearLowerLimit(btVector3 & linearLower) const\n\t{\n\t\tlinearLower = m_linearLimits.m_lowerLimit;\n\t}\n\n\tvoid setLinearUpperLimit(const btVector3& linearUpper)\n\t{\n\t\tm_linearLimits.m_upperLimit = linearUpper;\n\t}\n\n\tvoid getLinearUpperLimit(btVector3 & linearUpper) const\n\t{\n\t\tlinearUpper = m_linearLimits.m_upperLimit;\n\t}\n\n\tvoid setAngularLowerLimit(const btVector3& angularLower)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]);\n\t}\n\n\tvoid getAngularLowerLimit(btVector3 & angularLower) const\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularLower[i] = m_angularLimits[i].m_loLimit;\n\t}\n\n\tvoid setAngularUpperLimit(const btVector3& angularUpper)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]);\n\t}\n\n\tvoid getAngularUpperLimit(btVector3 & angularUpper) const\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularUpper[i] = m_angularLimits[i].m_hiLimit;\n\t}\n\n\t//! Retrieves the angular limit informacion\n\tbtRotationalLimitMotor* getRotationalLimitMotor(int index)\n\t{\n\t\treturn &m_angularLimits[index];\n\t}\n\n\t//! Retrieves the  limit informacion\n\tbtTranslationalLimitMotor* getTranslationalLimitMotor()\n\t{\n\t\treturn &m_linearLimits;\n\t}\n\n\t//first 3 are linear, next 3 are angular\n\tvoid setLimit(int axis, btScalar lo, btScalar hi)\n\t{\n\t\tif (axis < 3)\n\t\t{\n\t\t\tm_linearLimits.m_lowerLimit[axis] = lo;\n\t\t\tm_linearLimits.m_upperLimit[axis] = hi;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlo = btNormalizeAngle(lo);\n\t\t\thi = btNormalizeAngle(hi);\n\t\t\tm_angularLimits[axis - 3].m_loLimit = lo;\n\t\t\tm_angularLimits[axis - 3].m_hiLimit = hi;\n\t\t}\n\t}\n\n\t//! Test limit\n\t/*!\n    - free means upper < lower,\n    - locked means upper == lower\n    - limited means upper > lower\n    - limitIndex: first 3 are linear, next 3 are angular\n    */\n\tbool isLimited(int limitIndex) const\n\t{\n\t\tif (limitIndex < 3)\n\t\t{\n\t\t\treturn m_linearLimits.isLimited(limitIndex);\n\t\t}\n\t\treturn m_angularLimits[limitIndex - 3].isLimited();\n\t}\n\n\tvirtual void calcAnchorPos(void);  // overridable\n\n\tint get_limit_motor_info2(btRotationalLimitMotor * limot,\n\t\t\t\t\t\t\t  const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB,\n\t\t\t\t\t\t\t  btConstraintInfo2* info, int row, btVector3& ax1, int rotational, int rotAllowed = false);\n\n\t// access for UseFrameOffset\n\tbool getUseFrameOffset() const { return m_useOffsetForConstraintFrame; }\n\tvoid setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }\n\n\tbool getUseLinearReferenceFrameA() const { return m_useLinearReferenceFrameA; }\n\tvoid setUseLinearReferenceFrameA(bool linearReferenceFrameA) { m_useLinearReferenceFrameA = linearReferenceFrameA; }\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tvoid setAxis(const btVector3& axis1, const btVector3& axis2);\n\n\tvirtual int getFlags() const\n\t{\n\t\treturn m_flags;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nstruct btGeneric6DofConstraintData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformFloatData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformFloatData m_rbBFrame;\n\n\tbtVector3FloatData m_linearUpperLimit;\n\tbtVector3FloatData m_linearLowerLimit;\n\n\tbtVector3FloatData m_angularUpperLimit;\n\tbtVector3FloatData m_angularLowerLimit;\n\n\tint m_useLinearReferenceFrameA;\n\tint m_useOffsetForConstraintFrame;\n};\n\nstruct btGeneric6DofConstraintDoubleData2\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformDoubleData m_rbBFrame;\n\n\tbtVector3DoubleData m_linearUpperLimit;\n\tbtVector3DoubleData m_linearLowerLimit;\n\n\tbtVector3DoubleData m_angularUpperLimit;\n\tbtVector3DoubleData m_angularLowerLimit;\n\n\tint m_useLinearReferenceFrameA;\n\tint m_useOffsetForConstraintFrame;\n};\n\nSIMD_FORCE_INLINE int btGeneric6DofConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btGeneric6DofConstraintData2);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btGeneric6DofConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtGeneric6DofConstraintData2* dof = (btGeneric6DofConstraintData2*)dataBuffer;\n\tbtTypedConstraint::serialize(&dof->m_typeConstraintData, serializer);\n\n\tm_frameInA.serialize(dof->m_rbAFrame);\n\tm_frameInB.serialize(dof->m_rbBFrame);\n\n\tint i;\n\tfor (i = 0; i < 3; i++)\n\t{\n\t\tdof->m_angularLowerLimit.m_floats[i] = m_angularLimits[i].m_loLimit;\n\t\tdof->m_angularUpperLimit.m_floats[i] = m_angularLimits[i].m_hiLimit;\n\t\tdof->m_linearLowerLimit.m_floats[i] = m_linearLimits.m_lowerLimit[i];\n\t\tdof->m_linearUpperLimit.m_floats[i] = m_linearLimits.m_upperLimit[i];\n\t}\n\n\tdof->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA ? 1 : 0;\n\tdof->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame ? 1 : 0;\n\n\treturn btGeneric6DofConstraintDataName;\n}\n\n#endif  //BT_GENERIC_6DOF_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\n2014 May: btGeneric6DofSpring2Constraint is created from the original (2.82.2712) btGeneric6DofConstraint by Gabor Puhr and Tamas Umenhoffer\nPros:\n- Much more accurate and stable in a lot of situation. (Especially when a sleeping chain of RBs connected with 6dof2 is pulled)\n- Stable and accurate spring with minimal energy loss that works with all of the solvers. (latter is not true for the original 6dof spring)\n- Servo motor functionality\n- Much more accurate bouncing. 0 really means zero bouncing (not true for the original 6odf) and there is only a minimal energy loss when the value is 1 (because of the solvers' precision)\n- Rotation order for the Euler system can be set. (One axis' freedom is still limited to pi/2)\n\nCons:\n- It is slower than the original 6dof. There is no exact ratio, but half speed is a good estimation.\n- At bouncing the correct velocity is calculated, but not the correct position. (it is because of the solver can correct position or velocity, but not both.)\n*/\n\n/// 2009 March: btGeneric6DofConstraint refactored by Roman Ponomarev\n/// Added support for generic constraint solver through getInfo1/getInfo2 methods\n\n/*\n2007-09-09\nbtGeneric6DofConstraint Refactored by Francisco Le?n\nemail: projectileman@yahoo.com\nhttp://gimpact.sf.net\n*/\n\n#ifndef BT_GENERIC_6DOF_CONSTRAINT2_H\n#define BT_GENERIC_6DOF_CONSTRAINT2_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\nclass btRigidBody;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btGeneric6DofSpring2ConstraintData2 btGeneric6DofSpring2ConstraintDoubleData2\n#define btGeneric6DofSpring2ConstraintDataName \"btGeneric6DofSpring2ConstraintDoubleData2\"\n#else\n#define btGeneric6DofSpring2ConstraintData2 btGeneric6DofSpring2ConstraintData\n#define btGeneric6DofSpring2ConstraintDataName \"btGeneric6DofSpring2ConstraintData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nenum RotateOrder\n{\n\tRO_XYZ = 0,\n\tRO_XZY,\n\tRO_YXZ,\n\tRO_YZX,\n\tRO_ZXY,\n\tRO_ZYX\n};\n\nclass btRotationalLimitMotor2\n{\npublic:\n\t// upper < lower means free\n\t// upper == lower means locked\n\t// upper > lower means limited\n\tbtScalar m_loLimit;\n\tbtScalar m_hiLimit;\n\tbtScalar m_bounce;\n\tbtScalar m_stopERP;\n\tbtScalar m_stopCFM;\n\tbtScalar m_motorERP;\n\tbtScalar m_motorCFM;\n\tbool m_enableMotor;\n\tbtScalar m_targetVelocity;\n\tbtScalar m_maxMotorForce;\n\tbool m_servoMotor;\n\tbtScalar m_servoTarget;\n\tbool m_enableSpring;\n\tbtScalar m_springStiffness;\n\tbool m_springStiffnessLimited;\n\tbtScalar m_springDamping;\n\tbool m_springDampingLimited;\n\tbtScalar m_equilibriumPoint;\n\n\tbtScalar m_currentLimitError;\n\tbtScalar m_currentLimitErrorHi;\n\tbtScalar m_currentPosition;\n\tint m_currentLimit;\n\n\tbtRotationalLimitMotor2()\n\t{\n\t\tm_loLimit = 1.0f;\n\t\tm_hiLimit = -1.0f;\n\t\tm_bounce = 0.0f;\n\t\tm_stopERP = 0.2f;\n\t\tm_stopCFM = 0.f;\n\t\tm_motorERP = 0.9f;\n\t\tm_motorCFM = 0.f;\n\t\tm_enableMotor = false;\n\t\tm_targetVelocity = 0;\n\t\tm_maxMotorForce = 6.0f;\n\t\tm_servoMotor = false;\n\t\tm_servoTarget = 0;\n\t\tm_enableSpring = false;\n\t\tm_springStiffness = 0;\n\t\tm_springStiffnessLimited = false;\n\t\tm_springDamping = 0;\n\t\tm_springDampingLimited = false;\n\t\tm_equilibriumPoint = 0;\n\n\t\tm_currentLimitError = 0;\n\t\tm_currentLimitErrorHi = 0;\n\t\tm_currentPosition = 0;\n\t\tm_currentLimit = 0;\n\t}\n\n\tbtRotationalLimitMotor2(const btRotationalLimitMotor2& limot)\n\t{\n\t\tm_loLimit = limot.m_loLimit;\n\t\tm_hiLimit = limot.m_hiLimit;\n\t\tm_bounce = limot.m_bounce;\n\t\tm_stopERP = limot.m_stopERP;\n\t\tm_stopCFM = limot.m_stopCFM;\n\t\tm_motorERP = limot.m_motorERP;\n\t\tm_motorCFM = limot.m_motorCFM;\n\t\tm_enableMotor = limot.m_enableMotor;\n\t\tm_targetVelocity = limot.m_targetVelocity;\n\t\tm_maxMotorForce = limot.m_maxMotorForce;\n\t\tm_servoMotor = limot.m_servoMotor;\n\t\tm_servoTarget = limot.m_servoTarget;\n\t\tm_enableSpring = limot.m_enableSpring;\n\t\tm_springStiffness = limot.m_springStiffness;\n\t\tm_springStiffnessLimited = limot.m_springStiffnessLimited;\n\t\tm_springDamping = limot.m_springDamping;\n\t\tm_springDampingLimited = limot.m_springDampingLimited;\n\t\tm_equilibriumPoint = limot.m_equilibriumPoint;\n\n\t\tm_currentLimitError = limot.m_currentLimitError;\n\t\tm_currentLimitErrorHi = limot.m_currentLimitErrorHi;\n\t\tm_currentPosition = limot.m_currentPosition;\n\t\tm_currentLimit = limot.m_currentLimit;\n\t}\n\n\tbool isLimited()\n\t{\n\t\tif (m_loLimit > m_hiLimit) return false;\n\t\treturn true;\n\t}\n\n\tvoid testLimitValue(btScalar test_value);\n};\n\nclass btTranslationalLimitMotor2\n{\npublic:\n\t// upper < lower means free\n\t// upper == lower means locked\n\t// upper > lower means limited\n\tbtVector3 m_lowerLimit;\n\tbtVector3 m_upperLimit;\n\tbtVector3 m_bounce;\n\tbtVector3 m_stopERP;\n\tbtVector3 m_stopCFM;\n\tbtVector3 m_motorERP;\n\tbtVector3 m_motorCFM;\n\tbool m_enableMotor[3];\n\tbool m_servoMotor[3];\n\tbool m_enableSpring[3];\n\tbtVector3 m_servoTarget;\n\tbtVector3 m_springStiffness;\n\tbool m_springStiffnessLimited[3];\n\tbtVector3 m_springDamping;\n\tbool m_springDampingLimited[3];\n\tbtVector3 m_equilibriumPoint;\n\tbtVector3 m_targetVelocity;\n\tbtVector3 m_maxMotorForce;\n\n\tbtVector3 m_currentLimitError;\n\tbtVector3 m_currentLimitErrorHi;\n\tbtVector3 m_currentLinearDiff;\n\tint m_currentLimit[3];\n\n\tbtTranslationalLimitMotor2()\n\t{\n\t\tm_lowerLimit.setValue(0.f, 0.f, 0.f);\n\t\tm_upperLimit.setValue(0.f, 0.f, 0.f);\n\t\tm_bounce.setValue(0.f, 0.f, 0.f);\n\t\tm_stopERP.setValue(0.2f, 0.2f, 0.2f);\n\t\tm_stopCFM.setValue(0.f, 0.f, 0.f);\n\t\tm_motorERP.setValue(0.9f, 0.9f, 0.9f);\n\t\tm_motorCFM.setValue(0.f, 0.f, 0.f);\n\n\t\tm_currentLimitError.setValue(0.f, 0.f, 0.f);\n\t\tm_currentLimitErrorHi.setValue(0.f, 0.f, 0.f);\n\t\tm_currentLinearDiff.setValue(0.f, 0.f, 0.f);\n\n\t\tfor (int i = 0; i < 3; i++)\n\t\t{\n\t\t\tm_enableMotor[i] = false;\n\t\t\tm_servoMotor[i] = false;\n\t\t\tm_enableSpring[i] = false;\n\t\t\tm_servoTarget[i] = btScalar(0.f);\n\t\t\tm_springStiffness[i] = btScalar(0.f);\n\t\t\tm_springStiffnessLimited[i] = false;\n\t\t\tm_springDamping[i] = btScalar(0.f);\n\t\t\tm_springDampingLimited[i] = false;\n\t\t\tm_equilibriumPoint[i] = btScalar(0.f);\n\t\t\tm_targetVelocity[i] = btScalar(0.f);\n\t\t\tm_maxMotorForce[i] = btScalar(0.f);\n\n\t\t\tm_currentLimit[i] = 0;\n\t\t}\n\t}\n\n\tbtTranslationalLimitMotor2(const btTranslationalLimitMotor2& other)\n\t{\n\t\tm_lowerLimit = other.m_lowerLimit;\n\t\tm_upperLimit = other.m_upperLimit;\n\t\tm_bounce = other.m_bounce;\n\t\tm_stopERP = other.m_stopERP;\n\t\tm_stopCFM = other.m_stopCFM;\n\t\tm_motorERP = other.m_motorERP;\n\t\tm_motorCFM = other.m_motorCFM;\n\n\t\tm_currentLimitError = other.m_currentLimitError;\n\t\tm_currentLimitErrorHi = other.m_currentLimitErrorHi;\n\t\tm_currentLinearDiff = other.m_currentLinearDiff;\n\n\t\tfor (int i = 0; i < 3; i++)\n\t\t{\n\t\t\tm_enableMotor[i] = other.m_enableMotor[i];\n\t\t\tm_servoMotor[i] = other.m_servoMotor[i];\n\t\t\tm_enableSpring[i] = other.m_enableSpring[i];\n\t\t\tm_servoTarget[i] = other.m_servoTarget[i];\n\t\t\tm_springStiffness[i] = other.m_springStiffness[i];\n\t\t\tm_springStiffnessLimited[i] = other.m_springStiffnessLimited[i];\n\t\t\tm_springDamping[i] = other.m_springDamping[i];\n\t\t\tm_springDampingLimited[i] = other.m_springDampingLimited[i];\n\t\t\tm_equilibriumPoint[i] = other.m_equilibriumPoint[i];\n\t\t\tm_targetVelocity[i] = other.m_targetVelocity[i];\n\t\t\tm_maxMotorForce[i] = other.m_maxMotorForce[i];\n\n\t\t\tm_currentLimit[i] = other.m_currentLimit[i];\n\t\t}\n\t}\n\n\tinline bool isLimited(int limitIndex)\n\t{\n\t\treturn (m_upperLimit[limitIndex] >= m_lowerLimit[limitIndex]);\n\t}\n\n\tvoid testLimitValue(int limitIndex, btScalar test_value);\n};\n\nenum bt6DofFlags2\n{\n\tBT_6DOF_FLAGS_CFM_STOP2 = 1,\n\tBT_6DOF_FLAGS_ERP_STOP2 = 2,\n\tBT_6DOF_FLAGS_CFM_MOTO2 = 4,\n\tBT_6DOF_FLAGS_ERP_MOTO2 = 8,\n\tBT_6DOF_FLAGS_USE_INFINITE_ERROR = (1<<16)\n};\n#define BT_6DOF_FLAGS_AXIS_SHIFT2 4  // bits per axis\n\nATTRIBUTE_ALIGNED16(class)\nbtGeneric6DofSpring2Constraint : public btTypedConstraint\n{\nprotected:\n\tbtTransform m_frameInA;\n\tbtTransform m_frameInB;\n\n\tbtJacobianEntry m_jacLinear[3];\n\tbtJacobianEntry m_jacAng[3];\n\n\tbtTranslationalLimitMotor2 m_linearLimits;\n\tbtRotationalLimitMotor2 m_angularLimits[3];\n\n\tRotateOrder m_rotateOrder;\n\nprotected:\n\tbtTransform m_calculatedTransformA;\n\tbtTransform m_calculatedTransformB;\n\tbtVector3 m_calculatedAxisAngleDiff;\n\tbtVector3 m_calculatedAxis[3];\n\tbtVector3 m_calculatedLinearDiff;\n\tbtScalar m_factA;\n\tbtScalar m_factB;\n\tbool m_hasStaticBody;\n\tint m_flags;\n\n\tbtGeneric6DofSpring2Constraint& operator=(const btGeneric6DofSpring2Constraint&)\n\t{\n\t\tbtAssert(0);\n\t\treturn *this;\n\t}\n\n\tint setAngularLimits(btConstraintInfo2 * info, int row_offset, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB);\n\tint setLinearLimits(btConstraintInfo2 * info, int row, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tvoid calculateLinearInfo();\n\tvoid calculateAngleInfo();\n\tvoid testAngularLimitMotor(int axis_index);\n\n\tvoid calculateJacobi(btRotationalLimitMotor2 * limot, const btTransform& transA, const btTransform& transB, btConstraintInfo2* info, int srow, btVector3& ax1, int rotational, int rotAllowed);\n\tint get_limit_motor_info2(btRotationalLimitMotor2 * limot,\n\t\t\t\t\t\t\t  const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, const btVector3& angVelA, const btVector3& angVelB,\n\t\t\t\t\t\t\t  btConstraintInfo2* info, int row, btVector3& ax1, int rotational, int rotAllowed = false);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtGeneric6DofSpring2Constraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& frameInA, const btTransform& frameInB, RotateOrder rotOrder = RO_XYZ);\n\tbtGeneric6DofSpring2Constraint(btRigidBody & rbB, const btTransform& frameInB, RotateOrder rotOrder = RO_XYZ);\n\n\tvirtual void buildJacobian() {}\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\tvirtual int calculateSerializeBufferSize() const;\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n\n\tbtRotationalLimitMotor2* getRotationalLimitMotor(int index) { return &m_angularLimits[index]; }\n\tbtTranslationalLimitMotor2* getTranslationalLimitMotor() { return &m_linearLimits; }\n\n\t// Calculates the global transform for the joint offset for body A an B, and also calculates the angle differences between the bodies.\n\tvoid calculateTransforms(const btTransform& transA, const btTransform& transB);\n\tvoid calculateTransforms();\n\n\t// Gets the global transform of the offset for body A\n\tconst btTransform& getCalculatedTransformA() const { return m_calculatedTransformA; }\n\t// Gets the global transform of the offset for body B\n\tconst btTransform& getCalculatedTransformB() const { return m_calculatedTransformB; }\n\n\tconst btTransform& getFrameOffsetA() const { return m_frameInA; }\n\tconst btTransform& getFrameOffsetB() const { return m_frameInB; }\n\n\tbtTransform& getFrameOffsetA() { return m_frameInA; }\n\tbtTransform& getFrameOffsetB() { return m_frameInB; }\n\n\t// Get the rotation axis in global coordinates ( btGeneric6DofSpring2Constraint::calculateTransforms() must be called previously )\n\tbtVector3 getAxis(int axis_index) const { return m_calculatedAxis[axis_index]; }\n\n\t// Get the relative Euler angle ( btGeneric6DofSpring2Constraint::calculateTransforms() must be called previously )\n\tbtScalar getAngle(int axis_index) const { return m_calculatedAxisAngleDiff[axis_index]; }\n\n\t// Get the relative position of the constraint pivot ( btGeneric6DofSpring2Constraint::calculateTransforms() must be called previously )\n\tbtScalar getRelativePivotPosition(int axis_index) const { return m_calculatedLinearDiff[axis_index]; }\n\n\tvoid setFrames(const btTransform& frameA, const btTransform& frameB);\n\n\tvoid setLinearLowerLimit(const btVector3& linearLower) { m_linearLimits.m_lowerLimit = linearLower; }\n\tvoid getLinearLowerLimit(btVector3 & linearLower) { linearLower = m_linearLimits.m_lowerLimit; }\n\tvoid setLinearUpperLimit(const btVector3& linearUpper) { m_linearLimits.m_upperLimit = linearUpper; }\n\tvoid getLinearUpperLimit(btVector3 & linearUpper) { linearUpper = m_linearLimits.m_upperLimit; }\n\n\tvoid setAngularLowerLimit(const btVector3& angularLower)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_loLimit = btNormalizeAngle(angularLower[i]);\n\t}\n\n\tvoid setAngularLowerLimitReversed(const btVector3& angularLower)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_hiLimit = btNormalizeAngle(-angularLower[i]);\n\t}\n\n\tvoid getAngularLowerLimit(btVector3 & angularLower)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularLower[i] = m_angularLimits[i].m_loLimit;\n\t}\n\n\tvoid getAngularLowerLimitReversed(btVector3 & angularLower)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularLower[i] = -m_angularLimits[i].m_hiLimit;\n\t}\n\n\tvoid setAngularUpperLimit(const btVector3& angularUpper)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_hiLimit = btNormalizeAngle(angularUpper[i]);\n\t}\n\n\tvoid setAngularUpperLimitReversed(const btVector3& angularUpper)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tm_angularLimits[i].m_loLimit = btNormalizeAngle(-angularUpper[i]);\n\t}\n\n\tvoid getAngularUpperLimit(btVector3 & angularUpper)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularUpper[i] = m_angularLimits[i].m_hiLimit;\n\t}\n\n\tvoid getAngularUpperLimitReversed(btVector3 & angularUpper)\n\t{\n\t\tfor (int i = 0; i < 3; i++)\n\t\t\tangularUpper[i] = -m_angularLimits[i].m_loLimit;\n\t}\n\n\t//first 3 are linear, next 3 are angular\n\n\tvoid setLimit(int axis, btScalar lo, btScalar hi)\n\t{\n\t\tif (axis < 3)\n\t\t{\n\t\t\tm_linearLimits.m_lowerLimit[axis] = lo;\n\t\t\tm_linearLimits.m_upperLimit[axis] = hi;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlo = btNormalizeAngle(lo);\n\t\t\thi = btNormalizeAngle(hi);\n\t\t\tm_angularLimits[axis - 3].m_loLimit = lo;\n\t\t\tm_angularLimits[axis - 3].m_hiLimit = hi;\n\t\t}\n\t}\n\n\tvoid setLimitReversed(int axis, btScalar lo, btScalar hi)\n\t{\n\t\tif (axis < 3)\n\t\t{\n\t\t\tm_linearLimits.m_lowerLimit[axis] = lo;\n\t\t\tm_linearLimits.m_upperLimit[axis] = hi;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlo = btNormalizeAngle(lo);\n\t\t\thi = btNormalizeAngle(hi);\n\t\t\tm_angularLimits[axis - 3].m_hiLimit = -lo;\n\t\t\tm_angularLimits[axis - 3].m_loLimit = -hi;\n\t\t}\n\t}\n\n\tbool isLimited(int limitIndex)\n\t{\n\t\tif (limitIndex < 3)\n\t\t{\n\t\t\treturn m_linearLimits.isLimited(limitIndex);\n\t\t}\n\t\treturn m_angularLimits[limitIndex - 3].isLimited();\n\t}\n\n\tvoid setRotationOrder(RotateOrder order) { m_rotateOrder = order; }\n\tRotateOrder getRotationOrder() { return m_rotateOrder; }\n\n\tvoid setAxis(const btVector3& axis1, const btVector3& axis2);\n\n\tvoid setBounce(int index, btScalar bounce);\n\n\tvoid enableMotor(int index, bool onOff);\n\tvoid setServo(int index, bool onOff);  // set the type of the motor (servo or not) (the motor has to be turned on for servo also)\n\tvoid setTargetVelocity(int index, btScalar velocity);\n\tvoid setServoTarget(int index, btScalar target);\n\tvoid setMaxMotorForce(int index, btScalar force);\n\n\tvoid enableSpring(int index, bool onOff);\n\tvoid setStiffness(int index, btScalar stiffness, bool limitIfNeeded = true);  // if limitIfNeeded is true the system will automatically limit the stiffness in necessary situations where otherwise the spring would move unrealistically too widely\n\tvoid setDamping(int index, btScalar damping, bool limitIfNeeded = true);      // if limitIfNeeded is true the system will automatically limit the damping in necessary situations where otherwise the spring would blow up\n\tvoid setEquilibriumPoint();                                                   // set the current constraint position/orientation as an equilibrium point for all DOF\n\tvoid setEquilibriumPoint(int index);                                          // set the current constraint position/orientation as an equilibrium point for given DOF\n\tvoid setEquilibriumPoint(int index, btScalar val);\n\n\t//override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t//If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tstatic btScalar btGetMatrixElem(const btMatrix3x3& mat, int index);\n\tstatic bool matrixToEulerXYZ(const btMatrix3x3& mat, btVector3& xyz);\n\tstatic bool matrixToEulerXZY(const btMatrix3x3& mat, btVector3& xyz);\n\tstatic bool matrixToEulerYXZ(const btMatrix3x3& mat, btVector3& xyz);\n\tstatic bool matrixToEulerYZX(const btMatrix3x3& mat, btVector3& xyz);\n\tstatic bool matrixToEulerZXY(const btMatrix3x3& mat, btVector3& xyz);\n\tstatic bool matrixToEulerZYX(const btMatrix3x3& mat, btVector3& xyz);\n};\n\nstruct btGeneric6DofSpring2ConstraintData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformFloatData m_rbAFrame;\n\tbtTransformFloatData m_rbBFrame;\n\n\tbtVector3FloatData m_linearUpperLimit;\n\tbtVector3FloatData m_linearLowerLimit;\n\tbtVector3FloatData m_linearBounce;\n\tbtVector3FloatData m_linearStopERP;\n\tbtVector3FloatData m_linearStopCFM;\n\tbtVector3FloatData m_linearMotorERP;\n\tbtVector3FloatData m_linearMotorCFM;\n\tbtVector3FloatData m_linearTargetVelocity;\n\tbtVector3FloatData m_linearMaxMotorForce;\n\tbtVector3FloatData m_linearServoTarget;\n\tbtVector3FloatData m_linearSpringStiffness;\n\tbtVector3FloatData m_linearSpringDamping;\n\tbtVector3FloatData m_linearEquilibriumPoint;\n\tchar m_linearEnableMotor[4];\n\tchar m_linearServoMotor[4];\n\tchar m_linearEnableSpring[4];\n\tchar m_linearSpringStiffnessLimited[4];\n\tchar m_linearSpringDampingLimited[4];\n\tchar m_padding1[4];\n\n\tbtVector3FloatData m_angularUpperLimit;\n\tbtVector3FloatData m_angularLowerLimit;\n\tbtVector3FloatData m_angularBounce;\n\tbtVector3FloatData m_angularStopERP;\n\tbtVector3FloatData m_angularStopCFM;\n\tbtVector3FloatData m_angularMotorERP;\n\tbtVector3FloatData m_angularMotorCFM;\n\tbtVector3FloatData m_angularTargetVelocity;\n\tbtVector3FloatData m_angularMaxMotorForce;\n\tbtVector3FloatData m_angularServoTarget;\n\tbtVector3FloatData m_angularSpringStiffness;\n\tbtVector3FloatData m_angularSpringDamping;\n\tbtVector3FloatData m_angularEquilibriumPoint;\n\tchar m_angularEnableMotor[4];\n\tchar m_angularServoMotor[4];\n\tchar m_angularEnableSpring[4];\n\tchar m_angularSpringStiffnessLimited[4];\n\tchar m_angularSpringDampingLimited[4];\n\n\tint m_rotateOrder;\n};\n\nstruct btGeneric6DofSpring2ConstraintDoubleData2\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;\n\tbtTransformDoubleData m_rbBFrame;\n\n\tbtVector3DoubleData m_linearUpperLimit;\n\tbtVector3DoubleData m_linearLowerLimit;\n\tbtVector3DoubleData m_linearBounce;\n\tbtVector3DoubleData m_linearStopERP;\n\tbtVector3DoubleData m_linearStopCFM;\n\tbtVector3DoubleData m_linearMotorERP;\n\tbtVector3DoubleData m_linearMotorCFM;\n\tbtVector3DoubleData m_linearTargetVelocity;\n\tbtVector3DoubleData m_linearMaxMotorForce;\n\tbtVector3DoubleData m_linearServoTarget;\n\tbtVector3DoubleData m_linearSpringStiffness;\n\tbtVector3DoubleData m_linearSpringDamping;\n\tbtVector3DoubleData m_linearEquilibriumPoint;\n\tchar m_linearEnableMotor[4];\n\tchar m_linearServoMotor[4];\n\tchar m_linearEnableSpring[4];\n\tchar m_linearSpringStiffnessLimited[4];\n\tchar m_linearSpringDampingLimited[4];\n\tchar m_padding1[4];\n\n\tbtVector3DoubleData m_angularUpperLimit;\n\tbtVector3DoubleData m_angularLowerLimit;\n\tbtVector3DoubleData m_angularBounce;\n\tbtVector3DoubleData m_angularStopERP;\n\tbtVector3DoubleData m_angularStopCFM;\n\tbtVector3DoubleData m_angularMotorERP;\n\tbtVector3DoubleData m_angularMotorCFM;\n\tbtVector3DoubleData m_angularTargetVelocity;\n\tbtVector3DoubleData m_angularMaxMotorForce;\n\tbtVector3DoubleData m_angularServoTarget;\n\tbtVector3DoubleData m_angularSpringStiffness;\n\tbtVector3DoubleData m_angularSpringDamping;\n\tbtVector3DoubleData m_angularEquilibriumPoint;\n\tchar m_angularEnableMotor[4];\n\tchar m_angularServoMotor[4];\n\tchar m_angularEnableSpring[4];\n\tchar m_angularSpringStiffnessLimited[4];\n\tchar m_angularSpringDampingLimited[4];\n\n\tint m_rotateOrder;\n};\n\nSIMD_FORCE_INLINE int btGeneric6DofSpring2Constraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btGeneric6DofSpring2ConstraintData2);\n}\n\nSIMD_FORCE_INLINE const char* btGeneric6DofSpring2Constraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtGeneric6DofSpring2ConstraintData2* dof = (btGeneric6DofSpring2ConstraintData2*)dataBuffer;\n\tbtTypedConstraint::serialize(&dof->m_typeConstraintData, serializer);\n\n\tm_frameInA.serialize(dof->m_rbAFrame);\n\tm_frameInB.serialize(dof->m_rbBFrame);\n\n\tint i;\n\tfor (i = 0; i < 3; i++)\n\t{\n\t\tdof->m_angularLowerLimit.m_floats[i] = m_angularLimits[i].m_loLimit;\n\t\tdof->m_angularUpperLimit.m_floats[i] = m_angularLimits[i].m_hiLimit;\n\t\tdof->m_angularBounce.m_floats[i] = m_angularLimits[i].m_bounce;\n\t\tdof->m_angularStopERP.m_floats[i] = m_angularLimits[i].m_stopERP;\n\t\tdof->m_angularStopCFM.m_floats[i] = m_angularLimits[i].m_stopCFM;\n\t\tdof->m_angularMotorERP.m_floats[i] = m_angularLimits[i].m_motorERP;\n\t\tdof->m_angularMotorCFM.m_floats[i] = m_angularLimits[i].m_motorCFM;\n\t\tdof->m_angularTargetVelocity.m_floats[i] = m_angularLimits[i].m_targetVelocity;\n\t\tdof->m_angularMaxMotorForce.m_floats[i] = m_angularLimits[i].m_maxMotorForce;\n\t\tdof->m_angularServoTarget.m_floats[i] = m_angularLimits[i].m_servoTarget;\n\t\tdof->m_angularSpringStiffness.m_floats[i] = m_angularLimits[i].m_springStiffness;\n\t\tdof->m_angularSpringDamping.m_floats[i] = m_angularLimits[i].m_springDamping;\n\t\tdof->m_angularEquilibriumPoint.m_floats[i] = m_angularLimits[i].m_equilibriumPoint;\n\t}\n\tdof->m_angularLowerLimit.m_floats[3] = 0;\n\tdof->m_angularUpperLimit.m_floats[3] = 0;\n\tdof->m_angularBounce.m_floats[3] = 0;\n\tdof->m_angularStopERP.m_floats[3] = 0;\n\tdof->m_angularStopCFM.m_floats[3] = 0;\n\tdof->m_angularMotorERP.m_floats[3] = 0;\n\tdof->m_angularMotorCFM.m_floats[3] = 0;\n\tdof->m_angularTargetVelocity.m_floats[3] = 0;\n\tdof->m_angularMaxMotorForce.m_floats[3] = 0;\n\tdof->m_angularServoTarget.m_floats[3] = 0;\n\tdof->m_angularSpringStiffness.m_floats[3] = 0;\n\tdof->m_angularSpringDamping.m_floats[3] = 0;\n\tdof->m_angularEquilibriumPoint.m_floats[3] = 0;\n\tfor (i = 0; i < 4; i++)\n\t{\n\t\tdof->m_angularEnableMotor[i] = i < 3 ? (m_angularLimits[i].m_enableMotor ? 1 : 0) : 0;\n\t\tdof->m_angularServoMotor[i] = i < 3 ? (m_angularLimits[i].m_servoMotor ? 1 : 0) : 0;\n\t\tdof->m_angularEnableSpring[i] = i < 3 ? (m_angularLimits[i].m_enableSpring ? 1 : 0) : 0;\n\t\tdof->m_angularSpringStiffnessLimited[i] = i < 3 ? (m_angularLimits[i].m_springStiffnessLimited ? 1 : 0) : 0;\n\t\tdof->m_angularSpringDampingLimited[i] = i < 3 ? (m_angularLimits[i].m_springDampingLimited ? 1 : 0) : 0;\n\t}\n\n\tm_linearLimits.m_lowerLimit.serialize(dof->m_linearLowerLimit);\n\tm_linearLimits.m_upperLimit.serialize(dof->m_linearUpperLimit);\n\tm_linearLimits.m_bounce.serialize(dof->m_linearBounce);\n\tm_linearLimits.m_stopERP.serialize(dof->m_linearStopERP);\n\tm_linearLimits.m_stopCFM.serialize(dof->m_linearStopCFM);\n\tm_linearLimits.m_motorERP.serialize(dof->m_linearMotorERP);\n\tm_linearLimits.m_motorCFM.serialize(dof->m_linearMotorCFM);\n\tm_linearLimits.m_targetVelocity.serialize(dof->m_linearTargetVelocity);\n\tm_linearLimits.m_maxMotorForce.serialize(dof->m_linearMaxMotorForce);\n\tm_linearLimits.m_servoTarget.serialize(dof->m_linearServoTarget);\n\tm_linearLimits.m_springStiffness.serialize(dof->m_linearSpringStiffness);\n\tm_linearLimits.m_springDamping.serialize(dof->m_linearSpringDamping);\n\tm_linearLimits.m_equilibriumPoint.serialize(dof->m_linearEquilibriumPoint);\n\tfor (i = 0; i < 4; i++)\n\t{\n\t\tdof->m_linearEnableMotor[i] = i < 3 ? (m_linearLimits.m_enableMotor[i] ? 1 : 0) : 0;\n\t\tdof->m_linearServoMotor[i] = i < 3 ? (m_linearLimits.m_servoMotor[i] ? 1 : 0) : 0;\n\t\tdof->m_linearEnableSpring[i] = i < 3 ? (m_linearLimits.m_enableSpring[i] ? 1 : 0) : 0;\n\t\tdof->m_linearSpringStiffnessLimited[i] = i < 3 ? (m_linearLimits.m_springStiffnessLimited[i] ? 1 : 0) : 0;\n\t\tdof->m_linearSpringDampingLimited[i] = i < 3 ? (m_linearLimits.m_springDampingLimited[i] ? 1 : 0) : 0;\n\t}\n\n\tdof->m_rotateOrder = m_rotateOrder;\n\n\tdof->m_padding1[0] = 0;\n\tdof->m_padding1[1] = 0;\n\tdof->m_padding1[2] = 0;\n\tdof->m_padding1[3] = 0;\n\n\treturn btGeneric6DofSpring2ConstraintDataName;\n}\n\n#endif  //BT_GENERIC_6DOF_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library, http://bulletphysics.org\nCopyright (C) 2006, 2007 Sony Computer Entertainment Inc. \n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GENERIC_6DOF_SPRING_CONSTRAINT_H\n#define BT_GENERIC_6DOF_SPRING_CONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btTypedConstraint.h\"\n#include \"btGeneric6DofConstraint.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btGeneric6DofSpringConstraintData2 btGeneric6DofSpringConstraintDoubleData2\n#define btGeneric6DofSpringConstraintDataName \"btGeneric6DofSpringConstraintDoubleData2\"\n#else\n#define btGeneric6DofSpringConstraintData2 btGeneric6DofSpringConstraintData\n#define btGeneric6DofSpringConstraintDataName \"btGeneric6DofSpringConstraintData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n/// Generic 6 DOF constraint that allows to set spring motors to any translational and rotational DOF\n\n/// DOF index used in enableSpring() and setStiffness() means:\n/// 0 : translation X\n/// 1 : translation Y\n/// 2 : translation Z\n/// 3 : rotation X (3rd Euler rotational around new position of X axis, range [-PI+epsilon, PI-epsilon] )\n/// 4 : rotation Y (2nd Euler rotational around new position of Y axis, range [-PI/2+epsilon, PI/2-epsilon] )\n/// 5 : rotation Z (1st Euler rotational around Z axis, range [-PI+epsilon, PI-epsilon] )\n\nATTRIBUTE_ALIGNED16(class)\nbtGeneric6DofSpringConstraint : public btGeneric6DofConstraint\n{\nprotected:\n\tbool m_springEnabled[6];\n\tbtScalar m_equilibriumPoint[6];\n\tbtScalar m_springStiffness[6];\n\tbtScalar m_springDamping[6];  // between 0 and 1 (1 == no damping)\n\tvoid init();\n\tvoid internalUpdateSprings(btConstraintInfo2 * info);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtGeneric6DofSpringConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA);\n\tbtGeneric6DofSpringConstraint(btRigidBody & rbB, const btTransform& frameInB, bool useLinearReferenceFrameB);\n\tvoid enableSpring(int index, bool onOff);\n\tvoid setStiffness(int index, btScalar stiffness);\n\tvoid setDamping(int index, btScalar damping);\n\tvoid setEquilibriumPoint();           // set the current constraint position/orientation as an equilibrium point for all DOF\n\tvoid setEquilibriumPoint(int index);  // set the current constraint position/orientation as an equilibrium point for given DOF\n\tvoid setEquilibriumPoint(int index, btScalar val);\n\n\tbool isSpringEnabled(int index) const\n\t{\n\t\treturn m_springEnabled[index];\n\t}\n\n\tbtScalar getStiffness(int index) const\n\t{\n\t\treturn m_springStiffness[index];\n\t}\n\n\tbtScalar getDamping(int index) const\n\t{\n\t\treturn m_springDamping[index];\n\t}\n\n\tbtScalar getEquilibriumPoint(int index) const\n\t{\n\t\treturn m_equilibriumPoint[index];\n\t}\n\n\tvirtual void setAxis(const btVector3& axis1, const btVector3& axis2);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvirtual int calculateSerializeBufferSize() const;\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\nstruct btGeneric6DofSpringConstraintData\n{\n\tbtGeneric6DofConstraintData m_6dofData;\n\n\tint m_springEnabled[6];\n\tfloat m_equilibriumPoint[6];\n\tfloat m_springStiffness[6];\n\tfloat m_springDamping[6];\n};\n\nstruct btGeneric6DofSpringConstraintDoubleData2\n{\n\tbtGeneric6DofConstraintDoubleData2 m_6dofData;\n\n\tint m_springEnabled[6];\n\tdouble m_equilibriumPoint[6];\n\tdouble m_springStiffness[6];\n\tdouble m_springDamping[6];\n};\n\nSIMD_FORCE_INLINE int btGeneric6DofSpringConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btGeneric6DofSpringConstraintData2);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btGeneric6DofSpringConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtGeneric6DofSpringConstraintData2* dof = (btGeneric6DofSpringConstraintData2*)dataBuffer;\n\tbtGeneric6DofConstraint::serialize(&dof->m_6dofData, serializer);\n\n\tint i;\n\tfor (i = 0; i < 6; i++)\n\t{\n\t\tdof->m_equilibriumPoint[i] = m_equilibriumPoint[i];\n\t\tdof->m_springDamping[i] = m_springDamping[i];\n\t\tdof->m_springEnabled[i] = m_springEnabled[i] ? 1 : 0;\n\t\tdof->m_springStiffness[i] = m_springStiffness[i];\n\t}\n\treturn btGeneric6DofSpringConstraintDataName;\n}\n\n#endif  // BT_GENERIC_6DOF_SPRING_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library, http://bulletphysics.org\nCopyright (C) 2006, 2007 Sony Computer Entertainment Inc. \n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_HINGE2_CONSTRAINT_H\n#define BT_HINGE2_CONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btTypedConstraint.h\"\n#include \"btGeneric6DofSpring2Constraint.h\"\n\n// Constraint similar to ODE Hinge2 Joint\n// has 3 degrees of frredom:\n// 2 rotational degrees of freedom, similar to Euler rotations around Z (axis 1) and X (axis 2)\n// 1 translational (along axis Z) with suspension spring\n\nATTRIBUTE_ALIGNED16(class)\nbtHinge2Constraint : public btGeneric6DofSpring2Constraint\n{\nprotected:\n\tbtVector3 m_anchor;\n\tbtVector3 m_axis1;\n\tbtVector3 m_axis2;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t// constructor\n\t// anchor, axis1 and axis2 are in world coordinate system\n\t// axis1 must be orthogonal to axis2\n\tbtHinge2Constraint(btRigidBody & rbA, btRigidBody & rbB, btVector3 & anchor, btVector3 & axis1, btVector3 & axis2);\n\t// access\n\tconst btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); }\n\tconst btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); }\n\tconst btVector3& getAxis1() { return m_axis1; }\n\tconst btVector3& getAxis2() { return m_axis2; }\n\tbtScalar getAngle1() { return getAngle(2); }\n\tbtScalar getAngle2() { return getAngle(0); }\n\t// limits\n\tvoid setUpperLimit(btScalar ang1max) { setAngularUpperLimit(btVector3(-1.f, 0.f, ang1max)); }\n\tvoid setLowerLimit(btScalar ang1min) { setAngularLowerLimit(btVector3(1.f, 0.f, ang1min)); }\n};\n\n#endif  // BT_HINGE2_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/* Hinge Constraint by Dirk Gregorius. Limits added by Marcus Hennix at Starbreeze Studios */\n\n#ifndef BT_HINGECONSTRAINT_H\n#define BT_HINGECONSTRAINT_H\n\n#define _BT_USE_CENTER_LIMIT_ 1\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\nclass btRigidBody;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btHingeConstraintData btHingeConstraintDoubleData2  //rename to 2 for backwards compatibility, so we can still load the 'btHingeConstraintDoubleData' version\n#define btHingeConstraintDataName \"btHingeConstraintDoubleData2\"\n#else\n#define btHingeConstraintData btHingeConstraintFloatData\n#define btHingeConstraintDataName \"btHingeConstraintFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nenum btHingeFlags\n{\n\tBT_HINGE_FLAGS_CFM_STOP = 1,\n\tBT_HINGE_FLAGS_ERP_STOP = 2,\n\tBT_HINGE_FLAGS_CFM_NORM = 4,\n\tBT_HINGE_FLAGS_ERP_NORM = 8\n};\n\n/// hinge constraint between two rigidbodies each with a pivotpoint that descibes the axis location in local space\n/// axis defines the orientation of the hinge axis\nATTRIBUTE_ALIGNED16(class)\nbtHingeConstraint : public btTypedConstraint\n{\n#ifdef IN_PARALLELL_SOLVER\npublic:\n#endif\n\tbtJacobianEntry m_jac[3];     //3 orthogonal linear constraints\n\tbtJacobianEntry m_jacAng[3];  //2 orthogonal angular constraints+ 1 for limit/motor\n\n\tbtTransform m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransform m_rbBFrame;\n\n\tbtScalar m_motorTargetVelocity;\n\tbtScalar m_maxMotorImpulse;\n\n#ifdef _BT_USE_CENTER_LIMIT_\n\tbtAngularLimit m_limit;\n#else\n\tbtScalar m_lowerLimit;\n\tbtScalar m_upperLimit;\n\tbtScalar m_limitSign;\n\tbtScalar m_correction;\n\n\tbtScalar m_limitSoftness;\n\tbtScalar m_biasFactor;\n\tbtScalar m_relaxationFactor;\n\n\tbool m_solveLimit;\n#endif\n\n\tbtScalar m_kHinge;\n\n\tbtScalar m_accLimitImpulse;\n\tbtScalar m_hingeAngle;\n\tbtScalar m_referenceSign;\n\n\tbool m_angularOnly;\n\tbool m_enableAngularMotor;\n\tbool m_useSolveConstraintObsolete;\n\tbool m_useOffsetForConstraintFrame;\n\tbool m_useReferenceFrameA;\n\n\tbtScalar m_accMotorImpulse;\n\n\tint m_flags;\n\tbtScalar m_normalCFM;\n\tbtScalar m_normalERP;\n\tbtScalar m_stopCFM;\n\tbtScalar m_stopERP;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtHingeConstraint(btRigidBody & rbA, btRigidBody & rbB, const btVector3& pivotInA, const btVector3& pivotInB, const btVector3& axisInA, const btVector3& axisInB, bool useReferenceFrameA = false);\n\n\tbtHingeConstraint(btRigidBody & rbA, const btVector3& pivotInA, const btVector3& axisInA, bool useReferenceFrameA = false);\n\n\tbtHingeConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA = false);\n\n\tbtHingeConstraint(btRigidBody & rbA, const btTransform& rbAFrame, bool useReferenceFrameA = false);\n\n\tvirtual void buildJacobian();\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvoid getInfo1NonVirtual(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvoid getInfo2NonVirtual(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tvoid getInfo2Internal(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btVector3& angVelA, const btVector3& angVelB);\n\tvoid getInfo2InternalUsingFrameOffset(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btVector3& angVelA, const btVector3& angVelB);\n\n\tvoid updateRHS(btScalar timeStep);\n\n\tconst btRigidBody& getRigidBodyA() const\n\t{\n\t\treturn m_rbA;\n\t}\n\tconst btRigidBody& getRigidBodyB() const\n\t{\n\t\treturn m_rbB;\n\t}\n\n\tbtRigidBody& getRigidBodyA()\n\t{\n\t\treturn m_rbA;\n\t}\n\n\tbtRigidBody& getRigidBodyB()\n\t{\n\t\treturn m_rbB;\n\t}\n\n\tbtTransform& getFrameOffsetA()\n\t{\n\t\treturn m_rbAFrame;\n\t}\n\n\tbtTransform& getFrameOffsetB()\n\t{\n\t\treturn m_rbBFrame;\n\t}\n\n\tvoid setFrames(const btTransform& frameA, const btTransform& frameB);\n\n\tvoid setAngularOnly(bool angularOnly)\n\t{\n\t\tm_angularOnly = angularOnly;\n\t}\n\n\tvoid enableAngularMotor(bool enableMotor, btScalar targetVelocity, btScalar maxMotorImpulse)\n\t{\n\t\tm_enableAngularMotor = enableMotor;\n\t\tm_motorTargetVelocity = targetVelocity;\n\t\tm_maxMotorImpulse = maxMotorImpulse;\n\t}\n\n\t// extra motor API, including ability to set a target rotation (as opposed to angular velocity)\n\t// note: setMotorTarget sets angular velocity under the hood, so you must call it every tick to\n\t//       maintain a given angular target.\n\tvoid enableMotor(bool enableMotor) { m_enableAngularMotor = enableMotor; }\n\tvoid setMaxMotorImpulse(btScalar maxMotorImpulse) { m_maxMotorImpulse = maxMotorImpulse; }\n\tvoid setMotorTargetVelocity(btScalar motorTargetVelocity) { m_motorTargetVelocity = motorTargetVelocity; }\n\tvoid setMotorTarget(const btQuaternion& qAinB, btScalar dt);  // qAinB is rotation of body A wrt body B.\n\tvoid setMotorTarget(btScalar targetAngle, btScalar dt);\n\n\tvoid setLimit(btScalar low, btScalar high, btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f)\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\tm_limit.set(low, high, _softness, _biasFactor, _relaxationFactor);\n#else\n\t\tm_lowerLimit = btNormalizeAngle(low);\n\t\tm_upperLimit = btNormalizeAngle(high);\n\t\tm_limitSoftness = _softness;\n\t\tm_biasFactor = _biasFactor;\n\t\tm_relaxationFactor = _relaxationFactor;\n#endif\n\t}\n\n\tbtScalar getLimitSoftness() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getSoftness();\n#else\n\t\treturn m_limitSoftness;\n#endif\n\t}\n\n\tbtScalar getLimitBiasFactor() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getBiasFactor();\n#else\n\t\treturn m_biasFactor;\n#endif\n\t}\n\n\tbtScalar getLimitRelaxationFactor() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getRelaxationFactor();\n#else\n\t\treturn m_relaxationFactor;\n#endif\n\t}\n\n\tvoid setAxis(btVector3 & axisInA)\n\t{\n\t\tbtVector3 rbAxisA1, rbAxisA2;\n\t\tbtPlaneSpace1(axisInA, rbAxisA1, rbAxisA2);\n\t\tbtVector3 pivotInA = m_rbAFrame.getOrigin();\n\t\t//\t\tm_rbAFrame.getOrigin() = pivotInA;\n\t\tm_rbAFrame.getBasis().setValue(rbAxisA1.getX(), rbAxisA2.getX(), axisInA.getX(),\n\t\t\t\t\t\t\t\t\t   rbAxisA1.getY(), rbAxisA2.getY(), axisInA.getY(),\n\t\t\t\t\t\t\t\t\t   rbAxisA1.getZ(), rbAxisA2.getZ(), axisInA.getZ());\n\n\t\tbtVector3 axisInB = m_rbA.getCenterOfMassTransform().getBasis() * axisInA;\n\n\t\tbtQuaternion rotationArc = shortestArcQuat(axisInA, axisInB);\n\t\tbtVector3 rbAxisB1 = quatRotate(rotationArc, rbAxisA1);\n\t\tbtVector3 rbAxisB2 = axisInB.cross(rbAxisB1);\n\n\t\tm_rbBFrame.getOrigin() = m_rbB.getCenterOfMassTransform().inverse()(m_rbA.getCenterOfMassTransform()(pivotInA));\n\n\t\tm_rbBFrame.getBasis().setValue(rbAxisB1.getX(), rbAxisB2.getX(), axisInB.getX(),\n\t\t\t\t\t\t\t\t\t   rbAxisB1.getY(), rbAxisB2.getY(), axisInB.getY(),\n\t\t\t\t\t\t\t\t\t   rbAxisB1.getZ(), rbAxisB2.getZ(), axisInB.getZ());\n\t\tm_rbBFrame.getBasis() = m_rbB.getCenterOfMassTransform().getBasis().inverse() * m_rbBFrame.getBasis();\n\t}\n\n\tbool hasLimit() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getHalfRange() > 0;\n#else\n\t\treturn m_lowerLimit <= m_upperLimit;\n#endif\n\t}\n\n\tbtScalar getLowerLimit() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getLow();\n#else\n\t\treturn m_lowerLimit;\n#endif\n\t}\n\n\tbtScalar getUpperLimit() const\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getHigh();\n#else\n\t\treturn m_upperLimit;\n#endif\n\t}\n\n\t///The getHingeAngle gives the hinge angle in range [-PI,PI]\n\tbtScalar getHingeAngle();\n\n\tbtScalar getHingeAngle(const btTransform& transA, const btTransform& transB);\n\n\tvoid testLimit(const btTransform& transA, const btTransform& transB);\n\n\tconst btTransform& getAFrame() const { return m_rbAFrame; };\n\tconst btTransform& getBFrame() const { return m_rbBFrame; };\n\n\tbtTransform& getAFrame() { return m_rbAFrame; };\n\tbtTransform& getBFrame() { return m_rbBFrame; };\n\n\tinline int getSolveLimit()\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.isLimit();\n#else\n\t\treturn m_solveLimit;\n#endif\n\t}\n\n\tinline btScalar getLimitSign()\n\t{\n#ifdef _BT_USE_CENTER_LIMIT_\n\t\treturn m_limit.getSign();\n#else\n\t\treturn m_limitSign;\n#endif\n\t}\n\n\tinline bool getAngularOnly()\n\t{\n\t\treturn m_angularOnly;\n\t}\n\tinline bool getEnableAngularMotor()\n\t{\n\t\treturn m_enableAngularMotor;\n\t}\n\tinline btScalar getMotorTargetVelocity()\n\t{\n\t\treturn m_motorTargetVelocity;\n\t}\n\tinline btScalar getMaxMotorImpulse()\n\t{\n\t\treturn m_maxMotorImpulse;\n\t}\n\t// access for UseFrameOffset\n\tbool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }\n\tvoid setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }\n\t// access for UseReferenceFrameA\n\tbool getUseReferenceFrameA() const { return m_useReferenceFrameA; }\n\tvoid setUseReferenceFrameA(bool useReferenceFrameA) { m_useReferenceFrameA = useReferenceFrameA; }\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tvirtual int getFlags() const\n\t{\n\t\treturn m_flags;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n//only for backward compatibility\n#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n///this structure is not used, except for loading pre-2.82 .bullet files\nstruct btHingeConstraintDoubleData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformDoubleData m_rbBFrame;\n\tint m_useReferenceFrameA;\n\tint m_angularOnly;\n\tint m_enableAngularMotor;\n\tfloat m_motorTargetVelocity;\n\tfloat m_maxMotorImpulse;\n\n\tfloat m_lowerLimit;\n\tfloat m_upperLimit;\n\tfloat m_limitSoftness;\n\tfloat m_biasFactor;\n\tfloat m_relaxationFactor;\n};\n#endif  //BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n\n///The getAccumulatedHingeAngle returns the accumulated hinge angle, taking rotation across the -PI/PI boundary into account\nATTRIBUTE_ALIGNED16(class)\nbtHingeAccumulatedAngleConstraint : public btHingeConstraint\n{\nprotected:\n\tbtScalar m_accumulatedAngle;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtHingeAccumulatedAngleConstraint(btRigidBody & rbA, btRigidBody & rbB, const btVector3& pivotInA, const btVector3& pivotInB, const btVector3& axisInA, const btVector3& axisInB, bool useReferenceFrameA = false)\n\t\t: btHingeConstraint(rbA, rbB, pivotInA, pivotInB, axisInA, axisInB, useReferenceFrameA)\n\t{\n\t\tm_accumulatedAngle = getHingeAngle();\n\t}\n\n\tbtHingeAccumulatedAngleConstraint(btRigidBody & rbA, const btVector3& pivotInA, const btVector3& axisInA, bool useReferenceFrameA = false)\n\t\t: btHingeConstraint(rbA, pivotInA, axisInA, useReferenceFrameA)\n\t{\n\t\tm_accumulatedAngle = getHingeAngle();\n\t}\n\n\tbtHingeAccumulatedAngleConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& rbAFrame, const btTransform& rbBFrame, bool useReferenceFrameA = false)\n\t\t: btHingeConstraint(rbA, rbB, rbAFrame, rbBFrame, useReferenceFrameA)\n\t{\n\t\tm_accumulatedAngle = getHingeAngle();\n\t}\n\n\tbtHingeAccumulatedAngleConstraint(btRigidBody & rbA, const btTransform& rbAFrame, bool useReferenceFrameA = false)\n\t\t: btHingeConstraint(rbA, rbAFrame, useReferenceFrameA)\n\t{\n\t\tm_accumulatedAngle = getHingeAngle();\n\t}\n\tbtScalar getAccumulatedHingeAngle();\n\tvoid setAccumulatedHingeAngle(btScalar accAngle);\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n};\n\nstruct btHingeConstraintFloatData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformFloatData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformFloatData m_rbBFrame;\n\tint m_useReferenceFrameA;\n\tint m_angularOnly;\n\n\tint m_enableAngularMotor;\n\tfloat m_motorTargetVelocity;\n\tfloat m_maxMotorImpulse;\n\n\tfloat m_lowerLimit;\n\tfloat m_upperLimit;\n\tfloat m_limitSoftness;\n\tfloat m_biasFactor;\n\tfloat m_relaxationFactor;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btHingeConstraintDoubleData2\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformDoubleData m_rbBFrame;\n\tint m_useReferenceFrameA;\n\tint m_angularOnly;\n\tint m_enableAngularMotor;\n\tdouble m_motorTargetVelocity;\n\tdouble m_maxMotorImpulse;\n\n\tdouble m_lowerLimit;\n\tdouble m_upperLimit;\n\tdouble m_limitSoftness;\n\tdouble m_biasFactor;\n\tdouble m_relaxationFactor;\n\tchar m_padding1[4];\n};\n\nSIMD_FORCE_INLINE int btHingeConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btHingeConstraintData);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btHingeConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtHingeConstraintData* hingeData = (btHingeConstraintData*)dataBuffer;\n\tbtTypedConstraint::serialize(&hingeData->m_typeConstraintData, serializer);\n\n\tm_rbAFrame.serialize(hingeData->m_rbAFrame);\n\tm_rbBFrame.serialize(hingeData->m_rbBFrame);\n\n\thingeData->m_angularOnly = m_angularOnly;\n\thingeData->m_enableAngularMotor = m_enableAngularMotor;\n\thingeData->m_maxMotorImpulse = float(m_maxMotorImpulse);\n\thingeData->m_motorTargetVelocity = float(m_motorTargetVelocity);\n\thingeData->m_useReferenceFrameA = m_useReferenceFrameA;\n#ifdef _BT_USE_CENTER_LIMIT_\n\thingeData->m_lowerLimit = float(m_limit.getLow());\n\thingeData->m_upperLimit = float(m_limit.getHigh());\n\thingeData->m_limitSoftness = float(m_limit.getSoftness());\n\thingeData->m_biasFactor = float(m_limit.getBiasFactor());\n\thingeData->m_relaxationFactor = float(m_limit.getRelaxationFactor());\n#else\n\thingeData->m_lowerLimit = float(m_lowerLimit);\n\thingeData->m_upperLimit = float(m_upperLimit);\n\thingeData->m_limitSoftness = float(m_limitSoftness);\n\thingeData->m_biasFactor = float(m_biasFactor);\n\thingeData->m_relaxationFactor = float(m_relaxationFactor);\n#endif\n\n\t// Fill padding with zeros to appease msan.\n#ifdef BT_USE_DOUBLE_PRECISION\n\thingeData->m_padding1[0] = 0;\n\thingeData->m_padding1[1] = 0;\n\thingeData->m_padding1[2] = 0;\n\thingeData->m_padding1[3] = 0;\n#endif\n\n\treturn btHingeConstraintDataName;\n}\n\n#endif  //BT_HINGECONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_JACOBIAN_ENTRY_H\n#define BT_JACOBIAN_ENTRY_H\n\n#include \"LinearMath/btMatrix3x3.h\"\n\n//notes:\n// Another memory optimization would be to store m_1MinvJt in the remaining 3 w components\n// which makes the btJacobianEntry memory layout 16 bytes\n// if you only are interested in angular part, just feed massInvA and massInvB zero\n\n/// Jacobian entry is an abstraction that allows to describe constraints\n/// it can be used in combination with a constraint solver\n/// Can be used to relate the effect of an impulse to the constraint error\nATTRIBUTE_ALIGNED16(class)\nbtJacobianEntry\n{\npublic:\n\tbtJacobianEntry(){};\n\t//constraint between two different rigidbodies\n\tbtJacobianEntry(\n\t\tconst btMatrix3x3& world2A,\n\t\tconst btMatrix3x3& world2B,\n\t\tconst btVector3& rel_pos1, const btVector3& rel_pos2,\n\t\tconst btVector3& jointAxis,\n\t\tconst btVector3& inertiaInvA,\n\t\tconst btScalar massInvA,\n\t\tconst btVector3& inertiaInvB,\n\t\tconst btScalar massInvB)\n\t\t: m_linearJointAxis(jointAxis)\n\t{\n\t\tm_aJ = world2A * (rel_pos1.cross(m_linearJointAxis));\n\t\tm_bJ = world2B * (rel_pos2.cross(-m_linearJointAxis));\n\t\tm_0MinvJt = inertiaInvA * m_aJ;\n\t\tm_1MinvJt = inertiaInvB * m_bJ;\n\t\tm_Adiag = massInvA + m_0MinvJt.dot(m_aJ) + massInvB + m_1MinvJt.dot(m_bJ);\n\n\t\tbtAssert(m_Adiag > btScalar(0.0));\n\t}\n\n\t//angular constraint between two different rigidbodies\n\tbtJacobianEntry(const btVector3& jointAxis,\n\t\t\t\t\tconst btMatrix3x3& world2A,\n\t\t\t\t\tconst btMatrix3x3& world2B,\n\t\t\t\t\tconst btVector3& inertiaInvA,\n\t\t\t\t\tconst btVector3& inertiaInvB)\n\t\t: m_linearJointAxis(btVector3(btScalar(0.), btScalar(0.), btScalar(0.)))\n\t{\n\t\tm_aJ = world2A * jointAxis;\n\t\tm_bJ = world2B * -jointAxis;\n\t\tm_0MinvJt = inertiaInvA * m_aJ;\n\t\tm_1MinvJt = inertiaInvB * m_bJ;\n\t\tm_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);\n\n\t\tbtAssert(m_Adiag > btScalar(0.0));\n\t}\n\n\t//angular constraint between two different rigidbodies\n\tbtJacobianEntry(const btVector3& axisInA,\n\t\t\t\t\tconst btVector3& axisInB,\n\t\t\t\t\tconst btVector3& inertiaInvA,\n\t\t\t\t\tconst btVector3& inertiaInvB)\n\t\t: m_linearJointAxis(btVector3(btScalar(0.), btScalar(0.), btScalar(0.))), m_aJ(axisInA), m_bJ(-axisInB)\n\t{\n\t\tm_0MinvJt = inertiaInvA * m_aJ;\n\t\tm_1MinvJt = inertiaInvB * m_bJ;\n\t\tm_Adiag = m_0MinvJt.dot(m_aJ) + m_1MinvJt.dot(m_bJ);\n\n\t\tbtAssert(m_Adiag > btScalar(0.0));\n\t}\n\n\t//constraint on one rigidbody\n\tbtJacobianEntry(\n\t\tconst btMatrix3x3& world2A,\n\t\tconst btVector3& rel_pos1, const btVector3& rel_pos2,\n\t\tconst btVector3& jointAxis,\n\t\tconst btVector3& inertiaInvA,\n\t\tconst btScalar massInvA)\n\t\t: m_linearJointAxis(jointAxis)\n\t{\n\t\tm_aJ = world2A * (rel_pos1.cross(jointAxis));\n\t\tm_bJ = world2A * (rel_pos2.cross(-jointAxis));\n\t\tm_0MinvJt = inertiaInvA * m_aJ;\n\t\tm_1MinvJt = btVector3(btScalar(0.), btScalar(0.), btScalar(0.));\n\t\tm_Adiag = massInvA + m_0MinvJt.dot(m_aJ);\n\n\t\tbtAssert(m_Adiag > btScalar(0.0));\n\t}\n\n\tbtScalar getDiagonal() const { return m_Adiag; }\n\n\t// for two constraints on the same rigidbody (for example vehicle friction)\n\tbtScalar getNonDiagonal(const btJacobianEntry& jacB, const btScalar massInvA) const\n\t{\n\t\tconst btJacobianEntry& jacA = *this;\n\t\tbtScalar lin = massInvA * jacA.m_linearJointAxis.dot(jacB.m_linearJointAxis);\n\t\tbtScalar ang = jacA.m_0MinvJt.dot(jacB.m_aJ);\n\t\treturn lin + ang;\n\t}\n\n\t// for two constraints on sharing two same rigidbodies (for example two contact points between two rigidbodies)\n\tbtScalar getNonDiagonal(const btJacobianEntry& jacB, const btScalar massInvA, const btScalar massInvB) const\n\t{\n\t\tconst btJacobianEntry& jacA = *this;\n\t\tbtVector3 lin = jacA.m_linearJointAxis * jacB.m_linearJointAxis;\n\t\tbtVector3 ang0 = jacA.m_0MinvJt * jacB.m_aJ;\n\t\tbtVector3 ang1 = jacA.m_1MinvJt * jacB.m_bJ;\n\t\tbtVector3 lin0 = massInvA * lin;\n\t\tbtVector3 lin1 = massInvB * lin;\n\t\tbtVector3 sum = ang0 + ang1 + lin0 + lin1;\n\t\treturn sum[0] + sum[1] + sum[2];\n\t}\n\n\tbtScalar getRelativeVelocity(const btVector3& linvelA, const btVector3& angvelA, const btVector3& linvelB, const btVector3& angvelB)\n\t{\n\t\tbtVector3 linrel = linvelA - linvelB;\n\t\tbtVector3 angvela = angvelA * m_aJ;\n\t\tbtVector3 angvelb = angvelB * m_bJ;\n\t\tlinrel *= m_linearJointAxis;\n\t\tangvela += angvelb;\n\t\tangvela += linrel;\n\t\tbtScalar rel_vel2 = angvela[0] + angvela[1] + angvela[2];\n\t\treturn rel_vel2 + SIMD_EPSILON;\n\t}\n\t//private:\n\n\tbtVector3 m_linearJointAxis;\n\tbtVector3 m_aJ;\n\tbtVector3 m_bJ;\n\tbtVector3 m_0MinvJt;\n\tbtVector3 m_1MinvJt;\n\t//Optimization: can be stored in the w/last component of one of the vectors\n\tbtScalar m_Adiag;\n};\n\n#endif  //BT_JACOBIAN_ENTRY_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_NNCG_CONSTRAINT_SOLVER_H\n#define BT_NNCG_CONSTRAINT_SOLVER_H\n\n#include \"btSequentialImpulseConstraintSolver.h\"\n\nATTRIBUTE_ALIGNED16(class)\nbtNNCGConstraintSolver : public btSequentialImpulseConstraintSolver\n{\nprotected:\n\tbtScalar m_deltafLengthSqrPrev;\n\n\tbtAlignedObjectArray<btScalar> m_pNC;   // p for None Contact constraints\n\tbtAlignedObjectArray<btScalar> m_pC;    // p for Contact constraints\n\tbtAlignedObjectArray<btScalar> m_pCF;   // p for ContactFriction constraints\n\tbtAlignedObjectArray<btScalar> m_pCRF;  // p for ContactRollingFriction constraints\n\n\t//These are recalculated in every iterations. We just keep these to prevent reallocation in each iteration.\n\tbtAlignedObjectArray<btScalar> m_deltafNC;   // deltaf for NoneContact constraints\n\tbtAlignedObjectArray<btScalar> m_deltafC;    // deltaf for Contact constraints\n\tbtAlignedObjectArray<btScalar> m_deltafCF;   // deltaf for ContactFriction constraints\n\tbtAlignedObjectArray<btScalar> m_deltafCRF;  // deltaf for ContactRollingFriction constraints\n\nprotected:\n\tvirtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject * *bodies, int numBodies, const btContactSolverInfo& infoGlobal);\n\tvirtual btScalar solveSingleIteration(int iteration, btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\n\tvirtual btScalar solveGroupCacheFriendlySetup(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtNNCGConstraintSolver() : btSequentialImpulseConstraintSolver(), m_onlyForNoneContact(false) {}\n\n\tvirtual btConstraintSolverType getSolverType() const\n\t{\n\t\treturn BT_NNCG_SOLVER;\n\t}\n\n\tbool m_onlyForNoneContact;\n};\n\n#endif  //BT_NNCG_CONSTRAINT_SOLVER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_POINT2POINTCONSTRAINT_H\n#define BT_POINT2POINTCONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\nclass btRigidBody;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btPoint2PointConstraintData2 btPoint2PointConstraintDoubleData2\n#define btPoint2PointConstraintDataName \"btPoint2PointConstraintDoubleData2\"\n#else\n#define btPoint2PointConstraintData2 btPoint2PointConstraintFloatData\n#define btPoint2PointConstraintDataName \"btPoint2PointConstraintFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nstruct btConstraintSetting\n{\n\tbtConstraintSetting() : m_tau(btScalar(0.3)),\n\t\t\t\t\t\t\tm_damping(btScalar(1.)),\n\t\t\t\t\t\t\tm_impulseClamp(btScalar(0.))\n\t{\n\t}\n\tbtScalar m_tau;\n\tbtScalar m_damping;\n\tbtScalar m_impulseClamp;\n};\n\nenum btPoint2PointFlags\n{\n\tBT_P2P_FLAGS_ERP = 1,\n\tBT_P2P_FLAGS_CFM = 2\n};\n\n/// point to point constraint between two rigidbodies each with a pivotpoint that descibes the 'ballsocket' location in local space\nATTRIBUTE_ALIGNED16(class)\nbtPoint2PointConstraint : public btTypedConstraint\n{\n#ifdef IN_PARALLELL_SOLVER\npublic:\n#endif\n\tbtJacobianEntry m_jac[3];  //3 orthogonal linear constraints\n\n\tbtVector3 m_pivotInA;\n\tbtVector3 m_pivotInB;\n\n\tint m_flags;\n\tbtScalar m_erp;\n\tbtScalar m_cfm;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t///for backwards compatibility during the transition to 'getInfo/getInfo2'\n\tbool m_useSolveConstraintObsolete;\n\n\tbtConstraintSetting m_setting;\n\n\tbtPoint2PointConstraint(btRigidBody & rbA, btRigidBody & rbB, const btVector3& pivotInA, const btVector3& pivotInB);\n\n\tbtPoint2PointConstraint(btRigidBody & rbA, const btVector3& pivotInA);\n\n\tvirtual void buildJacobian();\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvoid getInfo1NonVirtual(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvoid getInfo2NonVirtual(btConstraintInfo2 * info, const btTransform& body0_trans, const btTransform& body1_trans);\n\n\tvoid updateRHS(btScalar timeStep);\n\n\tvoid setPivotA(const btVector3& pivotA)\n\t{\n\t\tm_pivotInA = pivotA;\n\t}\n\n\tvoid setPivotB(const btVector3& pivotB)\n\t{\n\t\tm_pivotInB = pivotB;\n\t}\n\n\tconst btVector3& getPivotInA() const\n\t{\n\t\treturn m_pivotInA;\n\t}\n\n\tconst btVector3& getPivotInB() const\n\t{\n\t\treturn m_pivotInB;\n\t}\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tvirtual int getFlags() const\n\t{\n\t\treturn m_flags;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btPoint2PointConstraintFloatData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtVector3FloatData m_pivotInA;\n\tbtVector3FloatData m_pivotInB;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btPoint2PointConstraintDoubleData2\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtVector3DoubleData m_pivotInA;\n\tbtVector3DoubleData m_pivotInB;\n};\n\n#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\n///this structure is not used, except for loading pre-2.82 .bullet files\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btPoint2PointConstraintDoubleData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtVector3DoubleData m_pivotInA;\n\tbtVector3DoubleData m_pivotInB;\n};\n#endif  //BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n\nSIMD_FORCE_INLINE int btPoint2PointConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btPoint2PointConstraintData2);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btPoint2PointConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtPoint2PointConstraintData2* p2pData = (btPoint2PointConstraintData2*)dataBuffer;\n\n\tbtTypedConstraint::serialize(&p2pData->m_typeConstraintData, serializer);\n\tm_pivotInA.serialize(p2pData->m_pivotInA);\n\tm_pivotInB.serialize(p2pData->m_pivotInB);\n\n\treturn btPoint2PointConstraintDataName;\n}\n\n#endif  //BT_POINT2POINTCONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H\n#define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H\n\nclass btIDebugDraw;\nclass btPersistentManifold;\nclass btDispatcher;\nclass btCollisionObject;\n#include \"BulletDynamics/ConstraintSolver/btTypedConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btContactSolverInfo.h\"\n#include \"BulletDynamics/ConstraintSolver/btSolverBody.h\"\n#include \"BulletDynamics/ConstraintSolver/btSolverConstraint.h\"\n#include \"BulletCollision/NarrowPhaseCollision/btManifoldPoint.h\"\n#include \"BulletDynamics/ConstraintSolver/btConstraintSolver.h\"\n\ntypedef btScalar (*btSingleConstraintRowSolver)(btSolverBody&, btSolverBody&, const btSolverConstraint&);\n\nstruct btSolverAnalyticsData\n{\n\tbtSolverAnalyticsData()\n\t{\n\t\tm_numSolverCalls = 0;\n\t\tm_numIterationsUsed = -1;\n\t\tm_remainingLeastSquaresResidual = -1;\n\t\tm_islandId = -2;\n\t}\n\tint m_islandId;\n\tint m_numBodies;\n\tint m_numContactManifolds;\n\tint m_numSolverCalls;\n\tint m_numIterationsUsed;\n\tdouble m_remainingLeastSquaresResidual;\n};\n\n///The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (iterative LCP) method.\nATTRIBUTE_ALIGNED16(class)\nbtSequentialImpulseConstraintSolver : public btConstraintSolver\n{\n\t\n\nprotected:\n\tbtAlignedObjectArray<btSolverBody> m_tmpSolverBodyPool;\n\tbtConstraintArray m_tmpSolverContactConstraintPool;\n\tbtConstraintArray m_tmpSolverNonContactConstraintPool;\n\tbtConstraintArray m_tmpSolverContactFrictionConstraintPool;\n\tbtConstraintArray m_tmpSolverContactRollingFrictionConstraintPool;\n\n\tbtAlignedObjectArray<int> m_orderTmpConstraintPool;\n\tbtAlignedObjectArray<int> m_orderNonContactConstraintPool;\n\tbtAlignedObjectArray<int> m_orderFrictionConstraintPool;\n\tbtAlignedObjectArray<btTypedConstraint::btConstraintInfo1> m_tmpConstraintSizesPool;\n\tint m_maxOverrideNumSolverIterations;\n\tint m_fixedBodyId;\n\t// When running solvers on multiple threads, a race condition exists for Kinematic objects that\n\t// participate in more than one solver.\n\t// The getOrInitSolverBody() function writes the companionId of each body (storing the index of the solver body\n\t// for the current solver). For normal dynamic bodies it isn't an issue because they can only be in one island\n\t// (and therefore one thread) at a time. But kinematic bodies can be in multiple islands at once.\n\t// To avoid this race condition, this solver does not write the companionId, instead it stores the solver body\n\t// index in this solver-local table, indexed by the uniqueId of the body.\n\tbtAlignedObjectArray<int> m_kinematicBodyUniqueIdToSolverBodyTable;  // only used for multithreading\n\n\tbtSingleConstraintRowSolver m_resolveSingleConstraintRowGeneric;\n\tbtSingleConstraintRowSolver m_resolveSingleConstraintRowLowerLimit;\n\tbtSingleConstraintRowSolver m_resolveSplitPenetrationImpulse;\n\tint m_cachedSolverMode;  // used to check if SOLVER_SIMD flag has been changed\n\tvoid setupSolverFunctions(bool useSimd);\n\n\tbtScalar m_leastSquaresResidual;\n\n\tvoid setupFrictionConstraint(btSolverConstraint & solverConstraint, const btVector3& normalAxis, int solverBodyIdA, int solverBodyIdB,\n\t\tbtManifoldPoint& cp, const btVector3& rel_pos1, const btVector3& rel_pos2,\n\t\tbtCollisionObject* colObj0, btCollisionObject* colObj1, btScalar relaxation,\n\t\tconst btContactSolverInfo& infoGlobal,\n\t\tbtScalar desiredVelocity = 0., btScalar cfmSlip = 0.);\n\n\tvoid setupTorsionalFrictionConstraint(btSolverConstraint & solverConstraint, const btVector3& normalAxis, int solverBodyIdA, int solverBodyIdB,\n\t\tbtManifoldPoint& cp, btScalar combinedTorsionalFriction, const btVector3& rel_pos1, const btVector3& rel_pos2,\n\t\tbtCollisionObject* colObj0, btCollisionObject* colObj1, btScalar relaxation,\n\t\tbtScalar desiredVelocity = 0., btScalar cfmSlip = 0.);\n\n\tbtSolverConstraint& addFrictionConstraint(const btVector3& normalAxis, int solverBodyIdA, int solverBodyIdB, int frictionIndex, btManifoldPoint& cp, const btVector3& rel_pos1, const btVector3& rel_pos2, btCollisionObject* colObj0, btCollisionObject* colObj1, btScalar relaxation, const btContactSolverInfo& infoGlobal, btScalar desiredVelocity = 0., btScalar cfmSlip = 0.);\n\tbtSolverConstraint& addTorsionalFrictionConstraint(const btVector3& normalAxis, int solverBodyIdA, int solverBodyIdB, int frictionIndex, btManifoldPoint& cp, btScalar torsionalFriction, const btVector3& rel_pos1, const btVector3& rel_pos2, btCollisionObject* colObj0, btCollisionObject* colObj1, btScalar relaxation, btScalar desiredVelocity = 0, btScalar cfmSlip = 0.f);\n\n\tvoid setupContactConstraint(btSolverConstraint & solverConstraint, int solverBodyIdA, int solverBodyIdB, btManifoldPoint& cp,\n\t\tconst btContactSolverInfo& infoGlobal, btScalar& relaxation, const btVector3& rel_pos1, const btVector3& rel_pos2);\n\n\tstatic void applyAnisotropicFriction(btCollisionObject * colObj, btVector3 & frictionDirection, int frictionMode);\n\n\tvoid setFrictionConstraintImpulse(btSolverConstraint & solverConstraint, int solverBodyIdA, int solverBodyIdB,\n\t\tbtManifoldPoint& cp, const btContactSolverInfo& infoGlobal);\n\n\t///m_btSeed2 is used for re-arranging the constraint rows. improves convergence/quality of friction\n\tunsigned long m_btSeed2;\n\n\tbtScalar restitutionCurve(btScalar rel_vel, btScalar restitution, btScalar velocityThreshold);\n\n\tvirtual void convertContacts(btPersistentManifold * *manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal);\n\n\tvoid convertContact(btPersistentManifold * manifold, const btContactSolverInfo& infoGlobal);\n\n\tvirtual void convertJoints(btTypedConstraint * *constraints, int numConstraints, const btContactSolverInfo& infoGlobal);\n\tvoid convertJoint(btSolverConstraint * currentConstraintRow, btTypedConstraint * constraint, const btTypedConstraint::btConstraintInfo1& info1, int solverBodyIdA, int solverBodyIdB, const btContactSolverInfo& infoGlobal);\n\n\tvirtual void convertBodies(btCollisionObject * *bodies, int numBodies, const btContactSolverInfo& infoGlobal);\n\n\tbtScalar resolveSplitPenetrationSIMD(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint)\n\t{\n\t\treturn m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);\n\t}\n\n\tbtScalar resolveSplitPenetrationImpulseCacheFriendly(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint)\n\t{\n\t\treturn m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);\n\t}\n\n\t//internal method\n\tint getOrInitSolverBody(btCollisionObject & body, btScalar timeStep);\n\tvoid initSolverBody(btSolverBody * solverBody, btCollisionObject * collisionObject, btScalar timeStep);\n\n\tbtScalar resolveSingleConstraintRowGeneric(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint);\n\tbtScalar resolveSingleConstraintRowGenericSIMD(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint);\n\tbtScalar resolveSingleConstraintRowLowerLimit(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint);\n\tbtScalar resolveSingleConstraintRowLowerLimitSIMD(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint);\n\tbtScalar resolveSplitPenetrationImpulse(btSolverBody & bodyA, btSolverBody & bodyB, const btSolverConstraint& contactConstraint)\n\t{\n\t\treturn m_resolveSplitPenetrationImpulse(bodyA, bodyB, contactConstraint);\n\t}\n\nprotected:\n\tvoid writeBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvoid writeBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvoid writeBackBodies(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvirtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\tvirtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject * *bodies, int numBodies, const btContactSolverInfo& infoGlobal);\n\tvirtual btScalar solveSingleIteration(int iteration, btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\n\tvirtual btScalar solveGroupCacheFriendlySetup(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\tvirtual btScalar solveGroupCacheFriendlyIterations(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtSequentialImpulseConstraintSolver();\n\tvirtual ~btSequentialImpulseConstraintSolver();\n\n\tvirtual btScalar solveGroup(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifold, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& info, btIDebugDraw* debugDrawer, btDispatcher* dispatcher);\n\n\t///clear internal cached data and reset random seed\n\tvirtual void reset();\n\n\tunsigned long btRand2();\n\n\tint btRandInt2(int n);\n\n\tvoid setRandSeed(unsigned long seed)\n\t{\n\t\tm_btSeed2 = seed;\n\t}\n\tunsigned long getRandSeed() const\n\t{\n\t\treturn m_btSeed2;\n\t}\n\n\tvirtual btConstraintSolverType getSolverType() const\n\t{\n\t\treturn BT_SEQUENTIAL_IMPULSE_SOLVER;\n\t}\n\n\tbtSingleConstraintRowSolver getActiveConstraintRowSolverGeneric()\n\t{\n\t\treturn m_resolveSingleConstraintRowGeneric;\n\t}\n\tvoid setConstraintRowSolverGeneric(btSingleConstraintRowSolver rowSolver)\n\t{\n\t\tm_resolveSingleConstraintRowGeneric = rowSolver;\n\t}\n\tbtSingleConstraintRowSolver getActiveConstraintRowSolverLowerLimit()\n\t{\n\t\treturn m_resolveSingleConstraintRowLowerLimit;\n\t}\n\tvoid setConstraintRowSolverLowerLimit(btSingleConstraintRowSolver rowSolver)\n\t{\n\t\tm_resolveSingleConstraintRowLowerLimit = rowSolver;\n\t}\n\n\n\n\t///Various implementations of solving a single constraint row using a generic equality constraint, using scalar reference, SSE2 or SSE4\n\tbtSingleConstraintRowSolver getScalarConstraintRowSolverGeneric();\n\tbtSingleConstraintRowSolver getSSE2ConstraintRowSolverGeneric();\n\tbtSingleConstraintRowSolver getSSE4_1ConstraintRowSolverGeneric();\n\n\t///Various implementations of solving a single constraint row using an inequality (lower limit) constraint, using scalar reference, SSE2 or SSE4\n\tbtSingleConstraintRowSolver getScalarConstraintRowSolverLowerLimit();\n\tbtSingleConstraintRowSolver getSSE2ConstraintRowSolverLowerLimit();\n\tbtSingleConstraintRowSolver getSSE4_1ConstraintRowSolverLowerLimit();\n\tbtSolverAnalyticsData m_analyticsData;\n};\n\n#endif  //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H\n#define BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H\n\n#include \"btSequentialImpulseConstraintSolver.h\"\n#include \"btBatchedConstraints.h\"\n#include \"LinearMath/btThreads.h\"\n\n///\n/// btSequentialImpulseConstraintSolverMt\n///\n///  A multithreaded variant of the sequential impulse constraint solver. The constraints to be solved are grouped into\n///  batches and phases where each batch of constraints within a given phase can be solved in parallel with the rest.\n///  Ideally we want as few phases as possible, and each phase should have many batches, and all of the batches should\n///  have about the same number of constraints.\n///  This method works best on a large island of many constraints.\n///\n///  Supports all of the features of the normal sequential impulse solver such as:\n///    - split penetration impulse\n///    - rolling friction\n///    - interleaving constraints\n///    - warmstarting\n///    - 2 friction directions\n///    - randomized constraint ordering\n///    - early termination when leastSquaresResidualThreshold is satisfied\n///\n///  When the SOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS flag is enabled, unlike the normal SequentialImpulse solver,\n///  the rolling friction is interleaved as well.\n///  Interleaving the contact penetration constraints with friction reduces the number of parallel loops that need to be done,\n///  which reduces threading overhead so it can be a performance win, however, it does seem to produce a less stable simulation,\n///  at least on stacks of blocks.\n///\n///  When the SOLVER_RANDMIZE_ORDER flag is enabled, the ordering of phases, and the ordering of constraints within each batch\n///  is randomized, however it does not swap constraints between batches.\n///  This is to avoid regenerating the batches for each solver iteration which would be quite costly in performance.\n///\n///  Note that a non-zero leastSquaresResidualThreshold could possibly affect the determinism of the simulation\n///  if the task scheduler's parallelSum operation is non-deterministic. The parallelSum operation can be non-deterministic\n///  because floating point addition is not associative due to rounding errors.\n///  The task scheduler can and should ensure that the result of any parallelSum operation is deterministic.\n///\nATTRIBUTE_ALIGNED16(class)\nbtSequentialImpulseConstraintSolverMt : public btSequentialImpulseConstraintSolver\n{\npublic:\n\tvirtual void solveGroupCacheFriendlySplitImpulseIterations(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer) BT_OVERRIDE;\n\tvirtual btScalar solveSingleIteration(int iteration, btCollisionObject** bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer) BT_OVERRIDE;\n\tvirtual btScalar solveGroupCacheFriendlySetup(btCollisionObject * *bodies, int numBodies, btPersistentManifold** manifoldPtr, int numManifolds, btTypedConstraint** constraints, int numConstraints, const btContactSolverInfo& infoGlobal, btIDebugDraw* debugDrawer) BT_OVERRIDE;\n\tvirtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject * *bodies, int numBodies, const btContactSolverInfo& infoGlobal) BT_OVERRIDE;\n\n\t// temp struct used to collect info from persistent manifolds into a cache-friendly struct using multiple threads\n\tstruct btContactManifoldCachedInfo\n\t{\n\t\tstatic const int MAX_NUM_CONTACT_POINTS = 4;\n\n\t\tint numTouchingContacts;\n\t\tint solverBodyIds[2];\n\t\tint contactIndex;\n\t\tint rollingFrictionIndex;\n\t\tbool contactHasRollingFriction[MAX_NUM_CONTACT_POINTS];\n\t\tbtManifoldPoint* contactPoints[MAX_NUM_CONTACT_POINTS];\n\t};\n\t// temp struct used for setting up joint constraints in parallel\n\tstruct JointParams\n\t{\n\t\tint m_solverConstraint;\n\t\tint m_solverBodyA;\n\t\tint m_solverBodyB;\n\t};\n\tvoid internalInitMultipleJoints(btTypedConstraint * *constraints, int iBegin, int iEnd);\n\tvoid internalConvertMultipleJoints(const btAlignedObjectArray<JointParams>& jointParamsArray, btTypedConstraint** constraints, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\n\t// parameters to control batching\n\tstatic bool s_allowNestedParallelForLoops;        // whether to allow nested parallel operations\n\tstatic int s_minimumContactManifoldsForBatching;  // don't even try to batch if fewer manifolds than this\n\tstatic btBatchedConstraints::BatchingMethod s_contactBatchingMethod;\n\tstatic btBatchedConstraints::BatchingMethod s_jointBatchingMethod;\n\tstatic int s_minBatchSize;  // desired number of constraints per batch\n\tstatic int s_maxBatchSize;\n\nprotected:\n\tstatic const int CACHE_LINE_SIZE = 64;\n\n\tbtBatchedConstraints m_batchedContactConstraints;\n\tbtBatchedConstraints m_batchedJointConstraints;\n\tint m_numFrictionDirections;\n\tbool m_useBatching;\n\tbool m_useObsoleteJointConstraints;\n\tbtAlignedObjectArray<btContactManifoldCachedInfo> m_manifoldCachedInfoArray;\n\tbtAlignedObjectArray<int> m_rollingFrictionIndexTable;  // lookup table mapping contact index to rolling friction index\n\tbtSpinMutex m_bodySolverArrayMutex;\n\tchar m_antiFalseSharingPadding[CACHE_LINE_SIZE];  // padding to keep mutexes in separate cachelines\n\tbtSpinMutex m_kinematicBodyUniqueIdToSolverBodyTableMutex;\n\tbtAlignedObjectArray<char> m_scratchMemory;\n\n\tvirtual void randomizeConstraintOrdering(int iteration, int numIterations);\n\tvirtual btScalar resolveAllJointConstraints(int iteration);\n\tvirtual btScalar resolveAllContactConstraints();\n\tvirtual btScalar resolveAllContactFrictionConstraints();\n\tvirtual btScalar resolveAllContactConstraintsInterleaved();\n\tvirtual btScalar resolveAllRollingFrictionConstraints();\n\n\tvirtual void setupBatchedContactConstraints();\n\tvirtual void setupBatchedJointConstraints();\n\tvirtual void convertJoints(btTypedConstraint * *constraints, int numConstraints, const btContactSolverInfo& infoGlobal) BT_OVERRIDE;\n\tvirtual void convertContacts(btPersistentManifold * *manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal) BT_OVERRIDE;\n\tvirtual void convertBodies(btCollisionObject * *bodies, int numBodies, const btContactSolverInfo& infoGlobal) BT_OVERRIDE;\n\n\tint getOrInitSolverBodyThreadsafe(btCollisionObject & body, btScalar timeStep);\n\tvoid allocAllContactConstraints(btPersistentManifold * *manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal);\n\tvoid setupAllContactConstraints(const btContactSolverInfo& infoGlobal);\n\tvoid randomizeBatchedConstraintOrdering(btBatchedConstraints * batchedConstraints);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtSequentialImpulseConstraintSolverMt();\n\tvirtual ~btSequentialImpulseConstraintSolverMt();\n\n\tbtScalar resolveMultipleJointConstraints(const btAlignedObjectArray<int>& consIndices, int batchBegin, int batchEnd, int iteration);\n\tbtScalar resolveMultipleContactConstraints(const btAlignedObjectArray<int>& consIndices, int batchBegin, int batchEnd);\n\tbtScalar resolveMultipleContactSplitPenetrationImpulseConstraints(const btAlignedObjectArray<int>& consIndices, int batchBegin, int batchEnd);\n\tbtScalar resolveMultipleContactFrictionConstraints(const btAlignedObjectArray<int>& consIndices, int batchBegin, int batchEnd);\n\tbtScalar resolveMultipleContactRollingFrictionConstraints(const btAlignedObjectArray<int>& consIndices, int batchBegin, int batchEnd);\n\tbtScalar resolveMultipleContactConstraintsInterleaved(const btAlignedObjectArray<int>& contactIndices, int batchBegin, int batchEnd);\n\n\tvoid internalCollectContactManifoldCachedInfo(btContactManifoldCachedInfo * cachedInfoArray, btPersistentManifold * *manifoldPtr, int numManifolds, const btContactSolverInfo& infoGlobal);\n\tvoid internalAllocContactConstraints(const btContactManifoldCachedInfo* cachedInfoArray, int numManifolds);\n\tvoid internalSetupContactConstraints(int iContactConstraint, const btContactSolverInfo& infoGlobal);\n\tvoid internalConvertBodies(btCollisionObject * *bodies, int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvoid internalWriteBackContacts(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvoid internalWriteBackJoints(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n\tvoid internalWriteBackBodies(int iBegin, int iEnd, const btContactSolverInfo& infoGlobal);\n};\n\n#endif  //BT_SEQUENTIAL_IMPULSE_CONSTRAINT_SOLVER_MT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\nAdded by Roman Ponomarev (rponom@gmail.com)\nApril 04, 2008\n\nTODO:\n - add clamping od accumulated impulse to improve stability\n - add conversion for ODE constraint solver\n*/\n\n#ifndef BT_SLIDER_CONSTRAINT_H\n#define BT_SLIDER_CONSTRAINT_H\n\n#include \"LinearMath/btScalar.h\"  //for BT_USE_DOUBLE_PRECISION\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btSliderConstraintData2 btSliderConstraintDoubleData\n#define btSliderConstraintDataName \"btSliderConstraintDoubleData\"\n#else\n#define btSliderConstraintData2 btSliderConstraintData\n#define btSliderConstraintDataName \"btSliderConstraintData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n#include \"LinearMath/btVector3.h\"\n#include \"btJacobianEntry.h\"\n#include \"btTypedConstraint.h\"\n\nclass btRigidBody;\n\n#define SLIDER_CONSTRAINT_DEF_SOFTNESS (btScalar(1.0))\n#define SLIDER_CONSTRAINT_DEF_DAMPING (btScalar(1.0))\n#define SLIDER_CONSTRAINT_DEF_RESTITUTION (btScalar(0.7))\n#define SLIDER_CONSTRAINT_DEF_CFM (btScalar(0.f))\n\nenum btSliderFlags\n{\n\tBT_SLIDER_FLAGS_CFM_DIRLIN = (1 << 0),\n\tBT_SLIDER_FLAGS_ERP_DIRLIN = (1 << 1),\n\tBT_SLIDER_FLAGS_CFM_DIRANG = (1 << 2),\n\tBT_SLIDER_FLAGS_ERP_DIRANG = (1 << 3),\n\tBT_SLIDER_FLAGS_CFM_ORTLIN = (1 << 4),\n\tBT_SLIDER_FLAGS_ERP_ORTLIN = (1 << 5),\n\tBT_SLIDER_FLAGS_CFM_ORTANG = (1 << 6),\n\tBT_SLIDER_FLAGS_ERP_ORTANG = (1 << 7),\n\tBT_SLIDER_FLAGS_CFM_LIMLIN = (1 << 8),\n\tBT_SLIDER_FLAGS_ERP_LIMLIN = (1 << 9),\n\tBT_SLIDER_FLAGS_CFM_LIMANG = (1 << 10),\n\tBT_SLIDER_FLAGS_ERP_LIMANG = (1 << 11)\n};\n\nATTRIBUTE_ALIGNED16(class)\nbtSliderConstraint : public btTypedConstraint\n{\nprotected:\n\t///for backwards compatibility during the transition to 'getInfo/getInfo2'\n\tbool m_useSolveConstraintObsolete;\n\tbool m_useOffsetForConstraintFrame;\n\tbtTransform m_frameInA;\n\tbtTransform m_frameInB;\n\t// use frameA fo define limits, if true\n\tbool m_useLinearReferenceFrameA;\n\t// linear limits\n\tbtScalar m_lowerLinLimit;\n\tbtScalar m_upperLinLimit;\n\t// angular limits\n\tbtScalar m_lowerAngLimit;\n\tbtScalar m_upperAngLimit;\n\t// softness, restitution and damping for different cases\n\t// DirLin - moving inside linear limits\n\t// LimLin - hitting linear limit\n\t// DirAng - moving inside angular limits\n\t// LimAng - hitting angular limit\n\t// OrthoLin, OrthoAng - against constraint axis\n\tbtScalar m_softnessDirLin;\n\tbtScalar m_restitutionDirLin;\n\tbtScalar m_dampingDirLin;\n\tbtScalar m_cfmDirLin;\n\n\tbtScalar m_softnessDirAng;\n\tbtScalar m_restitutionDirAng;\n\tbtScalar m_dampingDirAng;\n\tbtScalar m_cfmDirAng;\n\n\tbtScalar m_softnessLimLin;\n\tbtScalar m_restitutionLimLin;\n\tbtScalar m_dampingLimLin;\n\tbtScalar m_cfmLimLin;\n\n\tbtScalar m_softnessLimAng;\n\tbtScalar m_restitutionLimAng;\n\tbtScalar m_dampingLimAng;\n\tbtScalar m_cfmLimAng;\n\n\tbtScalar m_softnessOrthoLin;\n\tbtScalar m_restitutionOrthoLin;\n\tbtScalar m_dampingOrthoLin;\n\tbtScalar m_cfmOrthoLin;\n\n\tbtScalar m_softnessOrthoAng;\n\tbtScalar m_restitutionOrthoAng;\n\tbtScalar m_dampingOrthoAng;\n\tbtScalar m_cfmOrthoAng;\n\n\t// for interlal use\n\tbool m_solveLinLim;\n\tbool m_solveAngLim;\n\n\tint m_flags;\n\n\tbtJacobianEntry m_jacLin[3];\n\tbtScalar m_jacLinDiagABInv[3];\n\n\tbtJacobianEntry m_jacAng[3];\n\n\tbtScalar m_timeStep;\n\tbtTransform m_calculatedTransformA;\n\tbtTransform m_calculatedTransformB;\n\n\tbtVector3 m_sliderAxis;\n\tbtVector3 m_realPivotAInW;\n\tbtVector3 m_realPivotBInW;\n\tbtVector3 m_projPivotInW;\n\tbtVector3 m_delta;\n\tbtVector3 m_depth;\n\tbtVector3 m_relPosA;\n\tbtVector3 m_relPosB;\n\n\tbtScalar m_linPos;\n\tbtScalar m_angPos;\n\n\tbtScalar m_angDepth;\n\tbtScalar m_kAngle;\n\n\tbool m_poweredLinMotor;\n\tbtScalar m_targetLinMotorVelocity;\n\tbtScalar m_maxLinMotorForce;\n\tbtScalar m_accumulatedLinMotorImpulse;\n\n\tbool m_poweredAngMotor;\n\tbtScalar m_targetAngMotorVelocity;\n\tbtScalar m_maxAngMotorForce;\n\tbtScalar m_accumulatedAngMotorImpulse;\n\n\t//------------------------\n\tvoid initParams();\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t// constructors\n\tbtSliderConstraint(btRigidBody & rbA, btRigidBody & rbB, const btTransform& frameInA, const btTransform& frameInB, bool useLinearReferenceFrameA);\n\tbtSliderConstraint(btRigidBody & rbB, const btTransform& frameInB, bool useLinearReferenceFrameA);\n\n\t// overrides\n\n\tvirtual void getInfo1(btConstraintInfo1 * info);\n\n\tvoid getInfo1NonVirtual(btConstraintInfo1 * info);\n\n\tvirtual void getInfo2(btConstraintInfo2 * info);\n\n\tvoid getInfo2NonVirtual(btConstraintInfo2 * info, const btTransform& transA, const btTransform& transB, const btVector3& linVelA, const btVector3& linVelB, btScalar rbAinvMass, btScalar rbBinvMass);\n\n\t// access\n\tconst btRigidBody& getRigidBodyA() const { return m_rbA; }\n\tconst btRigidBody& getRigidBodyB() const { return m_rbB; }\n\tconst btTransform& getCalculatedTransformA() const { return m_calculatedTransformA; }\n\tconst btTransform& getCalculatedTransformB() const { return m_calculatedTransformB; }\n\tconst btTransform& getFrameOffsetA() const { return m_frameInA; }\n\tconst btTransform& getFrameOffsetB() const { return m_frameInB; }\n\tbtTransform& getFrameOffsetA() { return m_frameInA; }\n\tbtTransform& getFrameOffsetB() { return m_frameInB; }\n\tbtScalar getLowerLinLimit() { return m_lowerLinLimit; }\n\tvoid setLowerLinLimit(btScalar lowerLimit) { m_lowerLinLimit = lowerLimit; }\n\tbtScalar getUpperLinLimit() { return m_upperLinLimit; }\n\tvoid setUpperLinLimit(btScalar upperLimit) { m_upperLinLimit = upperLimit; }\n\tbtScalar getLowerAngLimit() { return m_lowerAngLimit; }\n\tvoid setLowerAngLimit(btScalar lowerLimit) { m_lowerAngLimit = btNormalizeAngle(lowerLimit); }\n\tbtScalar getUpperAngLimit() { return m_upperAngLimit; }\n\tvoid setUpperAngLimit(btScalar upperLimit) { m_upperAngLimit = btNormalizeAngle(upperLimit); }\n\tbool getUseLinearReferenceFrameA() { return m_useLinearReferenceFrameA; }\n\tbtScalar getSoftnessDirLin() { return m_softnessDirLin; }\n\tbtScalar getRestitutionDirLin() { return m_restitutionDirLin; }\n\tbtScalar getDampingDirLin() { return m_dampingDirLin; }\n\tbtScalar getSoftnessDirAng() { return m_softnessDirAng; }\n\tbtScalar getRestitutionDirAng() { return m_restitutionDirAng; }\n\tbtScalar getDampingDirAng() { return m_dampingDirAng; }\n\tbtScalar getSoftnessLimLin() { return m_softnessLimLin; }\n\tbtScalar getRestitutionLimLin() { return m_restitutionLimLin; }\n\tbtScalar getDampingLimLin() { return m_dampingLimLin; }\n\tbtScalar getSoftnessLimAng() { return m_softnessLimAng; }\n\tbtScalar getRestitutionLimAng() { return m_restitutionLimAng; }\n\tbtScalar getDampingLimAng() { return m_dampingLimAng; }\n\tbtScalar getSoftnessOrthoLin() { return m_softnessOrthoLin; }\n\tbtScalar getRestitutionOrthoLin() { return m_restitutionOrthoLin; }\n\tbtScalar getDampingOrthoLin() { return m_dampingOrthoLin; }\n\tbtScalar getSoftnessOrthoAng() { return m_softnessOrthoAng; }\n\tbtScalar getRestitutionOrthoAng() { return m_restitutionOrthoAng; }\n\tbtScalar getDampingOrthoAng() { return m_dampingOrthoAng; }\n\tvoid setSoftnessDirLin(btScalar softnessDirLin) { m_softnessDirLin = softnessDirLin; }\n\tvoid setRestitutionDirLin(btScalar restitutionDirLin) { m_restitutionDirLin = restitutionDirLin; }\n\tvoid setDampingDirLin(btScalar dampingDirLin) { m_dampingDirLin = dampingDirLin; }\n\tvoid setSoftnessDirAng(btScalar softnessDirAng) { m_softnessDirAng = softnessDirAng; }\n\tvoid setRestitutionDirAng(btScalar restitutionDirAng) { m_restitutionDirAng = restitutionDirAng; }\n\tvoid setDampingDirAng(btScalar dampingDirAng) { m_dampingDirAng = dampingDirAng; }\n\tvoid setSoftnessLimLin(btScalar softnessLimLin) { m_softnessLimLin = softnessLimLin; }\n\tvoid setRestitutionLimLin(btScalar restitutionLimLin) { m_restitutionLimLin = restitutionLimLin; }\n\tvoid setDampingLimLin(btScalar dampingLimLin) { m_dampingLimLin = dampingLimLin; }\n\tvoid setSoftnessLimAng(btScalar softnessLimAng) { m_softnessLimAng = softnessLimAng; }\n\tvoid setRestitutionLimAng(btScalar restitutionLimAng) { m_restitutionLimAng = restitutionLimAng; }\n\tvoid setDampingLimAng(btScalar dampingLimAng) { m_dampingLimAng = dampingLimAng; }\n\tvoid setSoftnessOrthoLin(btScalar softnessOrthoLin) { m_softnessOrthoLin = softnessOrthoLin; }\n\tvoid setRestitutionOrthoLin(btScalar restitutionOrthoLin) { m_restitutionOrthoLin = restitutionOrthoLin; }\n\tvoid setDampingOrthoLin(btScalar dampingOrthoLin) { m_dampingOrthoLin = dampingOrthoLin; }\n\tvoid setSoftnessOrthoAng(btScalar softnessOrthoAng) { m_softnessOrthoAng = softnessOrthoAng; }\n\tvoid setRestitutionOrthoAng(btScalar restitutionOrthoAng) { m_restitutionOrthoAng = restitutionOrthoAng; }\n\tvoid setDampingOrthoAng(btScalar dampingOrthoAng) { m_dampingOrthoAng = dampingOrthoAng; }\n\tvoid setPoweredLinMotor(bool onOff) { m_poweredLinMotor = onOff; }\n\tbool getPoweredLinMotor() { return m_poweredLinMotor; }\n\tvoid setTargetLinMotorVelocity(btScalar targetLinMotorVelocity) { m_targetLinMotorVelocity = targetLinMotorVelocity; }\n\tbtScalar getTargetLinMotorVelocity() { return m_targetLinMotorVelocity; }\n\tvoid setMaxLinMotorForce(btScalar maxLinMotorForce) { m_maxLinMotorForce = maxLinMotorForce; }\n\tbtScalar getMaxLinMotorForce() { return m_maxLinMotorForce; }\n\tvoid setPoweredAngMotor(bool onOff) { m_poweredAngMotor = onOff; }\n\tbool getPoweredAngMotor() { return m_poweredAngMotor; }\n\tvoid setTargetAngMotorVelocity(btScalar targetAngMotorVelocity) { m_targetAngMotorVelocity = targetAngMotorVelocity; }\n\tbtScalar getTargetAngMotorVelocity() { return m_targetAngMotorVelocity; }\n\tvoid setMaxAngMotorForce(btScalar maxAngMotorForce) { m_maxAngMotorForce = maxAngMotorForce; }\n\tbtScalar getMaxAngMotorForce() { return m_maxAngMotorForce; }\n\n\tbtScalar getLinearPos() const { return m_linPos; }\n\tbtScalar getAngularPos() const { return m_angPos; }\n\n\t// access for ODE solver\n\tbool getSolveLinLimit() { return m_solveLinLim; }\n\tbtScalar getLinDepth() { return m_depth[0]; }\n\tbool getSolveAngLimit() { return m_solveAngLim; }\n\tbtScalar getAngDepth() { return m_angDepth; }\n\t// shared code used by ODE solver\n\tvoid calculateTransforms(const btTransform& transA, const btTransform& transB);\n\tvoid testLinLimits();\n\tvoid testAngLimits();\n\t// access for PE Solver\n\tbtVector3 getAncorInA();\n\tbtVector3 getAncorInB();\n\t// access for UseFrameOffset\n\tbool getUseFrameOffset() { return m_useOffsetForConstraintFrame; }\n\tvoid setUseFrameOffset(bool frameOffsetOnOff) { m_useOffsetForConstraintFrame = frameOffsetOnOff; }\n\n\tvoid setFrames(const btTransform& frameA, const btTransform& frameB)\n\t{\n\t\tm_frameInA = frameA;\n\t\tm_frameInB = frameB;\n\t\tcalculateTransforms(m_rbA.getCenterOfMassTransform(), m_rbB.getCenterOfMassTransform());\n\t\tbuildJacobian();\n\t}\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1);\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const;\n\n\tvirtual int getFlags() const\n\t{\n\t\treturn m_flags;\n\t}\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\n\nstruct btSliderConstraintData\n{\n\tbtTypedConstraintData m_typeConstraintData;\n\tbtTransformFloatData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformFloatData m_rbBFrame;\n\n\tfloat m_linearUpperLimit;\n\tfloat m_linearLowerLimit;\n\n\tfloat m_angularUpperLimit;\n\tfloat m_angularLowerLimit;\n\n\tint m_useLinearReferenceFrameA;\n\tint m_useOffsetForConstraintFrame;\n};\n\nstruct btSliderConstraintDoubleData\n{\n\tbtTypedConstraintDoubleData m_typeConstraintData;\n\tbtTransformDoubleData m_rbAFrame;  // constraint axii. Assumes z is hinge axis.\n\tbtTransformDoubleData m_rbBFrame;\n\n\tdouble m_linearUpperLimit;\n\tdouble m_linearLowerLimit;\n\n\tdouble m_angularUpperLimit;\n\tdouble m_angularLowerLimit;\n\n\tint m_useLinearReferenceFrameA;\n\tint m_useOffsetForConstraintFrame;\n};\n\nSIMD_FORCE_INLINE int btSliderConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btSliderConstraintData2);\n}\n\n///fills the dataBuffer and returns the struct name (and 0 on failure)\nSIMD_FORCE_INLINE const char* btSliderConstraint::serialize(void* dataBuffer, btSerializer* serializer) const\n{\n\tbtSliderConstraintData2* sliderData = (btSliderConstraintData2*)dataBuffer;\n\tbtTypedConstraint::serialize(&sliderData->m_typeConstraintData, serializer);\n\n\tm_frameInA.serialize(sliderData->m_rbAFrame);\n\tm_frameInB.serialize(sliderData->m_rbBFrame);\n\n\tsliderData->m_linearUpperLimit = m_upperLinLimit;\n\tsliderData->m_linearLowerLimit = m_lowerLinLimit;\n\n\tsliderData->m_angularUpperLimit = m_upperAngLimit;\n\tsliderData->m_angularLowerLimit = m_lowerAngLimit;\n\n\tsliderData->m_useLinearReferenceFrameA = m_useLinearReferenceFrameA;\n\tsliderData->m_useOffsetForConstraintFrame = m_useOffsetForConstraintFrame;\n\n\treturn btSliderConstraintDataName;\n}\n\n#endif  //BT_SLIDER_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SOLVE_2LINEAR_CONSTRAINT_H\n#define BT_SOLVE_2LINEAR_CONSTRAINT_H\n\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"LinearMath/btVector3.h\"\n\nclass btRigidBody;\n\n/// constraint class used for lateral tyre friction.\nclass btSolve2LinearConstraint\n{\n\tbtScalar m_tau;\n\tbtScalar m_damping;\n\npublic:\n\tbtSolve2LinearConstraint(btScalar tau, btScalar damping)\n\t{\n\t\tm_tau = tau;\n\t\tm_damping = damping;\n\t}\n\t//\n\t// solve unilateral constraint (equality, direct method)\n\t//\n\tvoid resolveUnilateralPairConstraint(\n\t\tbtRigidBody* body0,\n\t\tbtRigidBody* body1,\n\n\t\tconst btMatrix3x3& world2A,\n\t\tconst btMatrix3x3& world2B,\n\n\t\tconst btVector3& invInertiaADiag,\n\t\tconst btScalar invMassA,\n\t\tconst btVector3& linvelA, const btVector3& angvelA,\n\t\tconst btVector3& rel_posA1,\n\t\tconst btVector3& invInertiaBDiag,\n\t\tconst btScalar invMassB,\n\t\tconst btVector3& linvelB, const btVector3& angvelB,\n\t\tconst btVector3& rel_posA2,\n\n\t\tbtScalar depthA, const btVector3& normalA,\n\t\tconst btVector3& rel_posB1, const btVector3& rel_posB2,\n\t\tbtScalar depthB, const btVector3& normalB,\n\t\tbtScalar& imp0, btScalar& imp1);\n\n\t//\n\t// solving 2x2 lcp problem (inequality, direct solution )\n\t//\n\tvoid resolveBilateralPairConstraint(\n\t\tbtRigidBody* body0,\n\t\tbtRigidBody* body1,\n\t\tconst btMatrix3x3& world2A,\n\t\tconst btMatrix3x3& world2B,\n\n\t\tconst btVector3& invInertiaADiag,\n\t\tconst btScalar invMassA,\n\t\tconst btVector3& linvelA, const btVector3& angvelA,\n\t\tconst btVector3& rel_posA1,\n\t\tconst btVector3& invInertiaBDiag,\n\t\tconst btScalar invMassB,\n\t\tconst btVector3& linvelB, const btVector3& angvelB,\n\t\tconst btVector3& rel_posA2,\n\n\t\tbtScalar depthA, const btVector3& normalA,\n\t\tconst btVector3& rel_posB1, const btVector3& rel_posB2,\n\t\tbtScalar depthB, const btVector3& normalB,\n\t\tbtScalar& imp0, btScalar& imp1);\n\n\t/*\n\tvoid resolveAngularConstraint(\tconst btMatrix3x3& invInertiaAWS,\n\t\t\t\t\t\tconst btScalar invMassA,\n\t\t\t\t\t\tconst btVector3& linvelA,const btVector3& angvelA,\n\t\t\t\t\t\tconst btVector3& rel_posA1,\n\t\t\t\t\t\tconst btMatrix3x3& invInertiaBWS,\n\t\t\t\t\t\tconst btScalar invMassB,\n\t\t\t\t\t\tconst btVector3& linvelB,const btVector3& angvelB,\n\t\t\t\t\t\tconst btVector3& rel_posA2,\n\n\t\t\t\t\t  btScalar depthA, const btVector3& normalA, \n\t\t\t\t\t  const btVector3& rel_posB1,const btVector3& rel_posB2,\n\t\t\t\t\t  btScalar depthB, const btVector3& normalB, \n\t\t\t\t\t  btScalar& imp0,btScalar& imp1);\n\n*/\n};\n\n#endif  //BT_SOLVE_2LINEAR_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SOLVER_BODY_H\n#define BT_SOLVER_BODY_H\n\nclass btRigidBody;\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n\n#include \"LinearMath/btAlignedAllocator.h\"\n#include \"LinearMath/btTransformUtil.h\"\n\n///Until we get other contributions, only use SIMD on Windows, when using Visual Studio 2008 or later, and not double precision\n#ifdef BT_USE_SSE\n#define USE_SIMD 1\n#endif  //\n\n#ifdef USE_SIMD\n\nstruct btSimdScalar\n{\n\tSIMD_FORCE_INLINE btSimdScalar()\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE btSimdScalar(float fl)\n\t\t: m_vec128(_mm_set1_ps(fl))\n\t{\n\t}\n\n\tSIMD_FORCE_INLINE btSimdScalar(__m128 v128)\n\t\t: m_vec128(v128)\n\t{\n\t}\n\tunion {\n\t\t__m128 m_vec128;\n\t\tfloat m_floats[4];\n\t\tint m_ints[4];\n\t\tbtScalar m_unusedPadding;\n\t};\n\tSIMD_FORCE_INLINE __m128 get128()\n\t{\n\t\treturn m_vec128;\n\t}\n\n\tSIMD_FORCE_INLINE const __m128 get128() const\n\t{\n\t\treturn m_vec128;\n\t}\n\n\tSIMD_FORCE_INLINE void set128(__m128 v128)\n\t{\n\t\tm_vec128 = v128;\n\t}\n\n\tSIMD_FORCE_INLINE operator __m128()\n\t{\n\t\treturn m_vec128;\n\t}\n\tSIMD_FORCE_INLINE operator const __m128() const\n\t{\n\t\treturn m_vec128;\n\t}\n\n\tSIMD_FORCE_INLINE operator float() const\n\t{\n\t\treturn m_floats[0];\n\t}\n};\n\n///@brief Return the elementwise product of two btSimdScalar\nSIMD_FORCE_INLINE btSimdScalar\noperator*(const btSimdScalar& v1, const btSimdScalar& v2)\n{\n\treturn btSimdScalar(_mm_mul_ps(v1.get128(), v2.get128()));\n}\n\n///@brief Return the elementwise product of two btSimdScalar\nSIMD_FORCE_INLINE btSimdScalar\noperator+(const btSimdScalar& v1, const btSimdScalar& v2)\n{\n\treturn btSimdScalar(_mm_add_ps(v1.get128(), v2.get128()));\n}\n\n#else\n#define btSimdScalar btScalar\n#endif\n\n///The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packed to increase cache coherence/performance.\nATTRIBUTE_ALIGNED16(struct)\nbtSolverBody\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\tbtTransform m_worldTransform;\n\tbtVector3 m_deltaLinearVelocity;\n\tbtVector3 m_deltaAngularVelocity;\n\tbtVector3 m_angularFactor;\n\tbtVector3 m_linearFactor;\n\tbtVector3 m_invMass;\n\tbtVector3 m_pushVelocity;\n\tbtVector3 m_turnVelocity;\n\tbtVector3 m_linearVelocity;\n\tbtVector3 m_angularVelocity;\n\tbtVector3 m_externalForceImpulse;\n\tbtVector3 m_externalTorqueImpulse;\n\n\tbtRigidBody* m_originalBody;\n\tvoid setWorldTransform(const btTransform& worldTransform)\n\t{\n\t\tm_worldTransform = worldTransform;\n\t}\n\n\tconst btTransform& getWorldTransform() const\n\t{\n\t\treturn m_worldTransform;\n\t}\n\n\tSIMD_FORCE_INLINE void getVelocityInLocalPointNoDelta(const btVector3& rel_pos, btVector3& velocity) const\n\t{\n\t\tif (m_originalBody)\n\t\t\tvelocity = m_linearVelocity + m_externalForceImpulse + (m_angularVelocity + m_externalTorqueImpulse).cross(rel_pos);\n\t\telse\n\t\t\tvelocity.setValue(0, 0, 0);\n\t}\n\n\tSIMD_FORCE_INLINE void getVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity) const\n\t{\n\t\tif (m_originalBody)\n\t\t\tvelocity = m_linearVelocity + m_deltaLinearVelocity + (m_angularVelocity + m_deltaAngularVelocity).cross(rel_pos);\n\t\telse\n\t\t\tvelocity.setValue(0, 0, 0);\n\t}\n\n\tSIMD_FORCE_INLINE void getAngularVelocity(btVector3 & angVel) const\n\t{\n\t\tif (m_originalBody)\n\t\t\tangVel = m_angularVelocity + m_deltaAngularVelocity;\n\t\telse\n\t\t\tangVel.setValue(0, 0, 0);\n\t}\n\n\t//Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position\n\tSIMD_FORCE_INLINE void applyImpulse(const btVector3& linearComponent, const btVector3& angularComponent, const btScalar impulseMagnitude)\n\t{\n\t\tif (m_originalBody)\n\t\t{\n\t\t\tm_deltaLinearVelocity += linearComponent * impulseMagnitude * m_linearFactor;\n\t\t\tm_deltaAngularVelocity += angularComponent * (impulseMagnitude * m_angularFactor);\n\t\t}\n\t}\n\n\tSIMD_FORCE_INLINE void internalApplyPushImpulse(const btVector3& linearComponent, const btVector3& angularComponent, btScalar impulseMagnitude)\n\t{\n\t\tif (m_originalBody)\n\t\t{\n\t\t\tm_pushVelocity += linearComponent * impulseMagnitude * m_linearFactor;\n\t\t\tm_turnVelocity += angularComponent * (impulseMagnitude * m_angularFactor);\n\t\t}\n\t}\n\n\tconst btVector3& getDeltaLinearVelocity() const\n\t{\n\t\treturn m_deltaLinearVelocity;\n\t}\n\n\tconst btVector3& getDeltaAngularVelocity() const\n\t{\n\t\treturn m_deltaAngularVelocity;\n\t}\n\n\tconst btVector3& getPushVelocity() const\n\t{\n\t\treturn m_pushVelocity;\n\t}\n\n\tconst btVector3& getTurnVelocity() const\n\t{\n\t\treturn m_turnVelocity;\n\t}\n\n\t////////////////////////////////////////////////\n\t///some internal methods, don't use them\n\n\tbtVector3& internalGetDeltaLinearVelocity()\n\t{\n\t\treturn m_deltaLinearVelocity;\n\t}\n\n\tbtVector3& internalGetDeltaAngularVelocity()\n\t{\n\t\treturn m_deltaAngularVelocity;\n\t}\n\n\tconst btVector3& internalGetAngularFactor() const\n\t{\n\t\treturn m_angularFactor;\n\t}\n\n\tconst btVector3& internalGetInvMass() const\n\t{\n\t\treturn m_invMass;\n\t}\n\n\tvoid internalSetInvMass(const btVector3& invMass)\n\t{\n\t\tm_invMass = invMass;\n\t}\n\n\tbtVector3& internalGetPushVelocity()\n\t{\n\t\treturn m_pushVelocity;\n\t}\n\n\tbtVector3& internalGetTurnVelocity()\n\t{\n\t\treturn m_turnVelocity;\n\t}\n\n\tSIMD_FORCE_INLINE void internalGetVelocityInLocalPointObsolete(const btVector3& rel_pos, btVector3& velocity) const\n\t{\n\t\tvelocity = m_linearVelocity + m_deltaLinearVelocity + (m_angularVelocity + m_deltaAngularVelocity).cross(rel_pos);\n\t}\n\n\tSIMD_FORCE_INLINE void internalGetAngularVelocity(btVector3 & angVel) const\n\t{\n\t\tangVel = m_angularVelocity + m_deltaAngularVelocity;\n\t}\n\n\t//Optimization for the iterative solver: avoid calculating constant terms involving inertia, normal, relative position\n\tSIMD_FORCE_INLINE void internalApplyImpulse(const btVector3& linearComponent, const btVector3& angularComponent, const btScalar impulseMagnitude)\n\t{\n\t\tif (m_originalBody)\n\t\t{\n\t\t\tm_deltaLinearVelocity += linearComponent * impulseMagnitude * m_linearFactor;\n\t\t\tm_deltaAngularVelocity += angularComponent * (impulseMagnitude * m_angularFactor);\n\t\t}\n\t}\n\n\tvoid writebackVelocity()\n\t{\n\t\tif (m_originalBody)\n\t\t{\n\t\t\tm_linearVelocity += m_deltaLinearVelocity;\n\t\t\tm_angularVelocity += m_deltaAngularVelocity;\n\n\t\t\t//m_originalBody->setCompanionId(-1);\n\t\t}\n\t}\n\n\tvoid writebackVelocityAndTransform(btScalar timeStep, btScalar splitImpulseTurnErp)\n\t{\n\t\t(void)timeStep;\n\t\tif (m_originalBody)\n\t\t{\n\t\t\tm_linearVelocity += m_deltaLinearVelocity;\n\t\t\tm_angularVelocity += m_deltaAngularVelocity;\n\n\t\t\t//correct the position/orientation based on push/turn recovery\n\t\t\tbtTransform newTransform;\n\t\t\tif (m_pushVelocity[0] != 0.f || m_pushVelocity[1] != 0 || m_pushVelocity[2] != 0 || m_turnVelocity[0] != 0.f || m_turnVelocity[1] != 0 || m_turnVelocity[2] != 0)\n\t\t\t{\n\t\t\t\t//\tbtQuaternion orn = m_worldTransform.getRotation();\n\t\t\t\tbtTransformUtil::integrateTransform(m_worldTransform, m_pushVelocity, m_turnVelocity * splitImpulseTurnErp, timeStep, newTransform);\n\t\t\t\tm_worldTransform = newTransform;\n\t\t\t}\n\t\t\t//m_worldTransform.setRotation(orn);\n\t\t\t//m_originalBody->setCompanionId(-1);\n\t\t}\n\t}\n};\n\n#endif  //BT_SOLVER_BODY_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SOLVER_CONSTRAINT_H\n#define BT_SOLVER_CONSTRAINT_H\n\nclass btRigidBody;\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btMatrix3x3.h\"\n#include \"btJacobianEntry.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n\n//#define NO_FRICTION_TANGENTIALS 1\n#include \"btSolverBody.h\"\n\n///1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and friction constraints.\nATTRIBUTE_ALIGNED16(struct)\nbtSolverConstraint\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtVector3 m_relpos1CrossNormal;\n\tbtVector3 m_contactNormal1;\n\n\tbtVector3 m_relpos2CrossNormal;\n\tbtVector3 m_contactNormal2;  //usually m_contactNormal2 == -m_contactNormal1, but not always\n\n\tbtVector3 m_angularComponentA;\n\tbtVector3 m_angularComponentB;\n\n\tmutable btSimdScalar m_appliedPushImpulse;\n\tmutable btSimdScalar m_appliedImpulse;\n\n\tbtScalar m_friction;\n\tbtScalar m_jacDiagABInv;\n\tbtScalar m_rhs;\n\tbtScalar m_cfm;\n\n\tbtScalar m_lowerLimit;\n\tbtScalar m_upperLimit;\n\tbtScalar m_rhsPenetration;\n\tunion {\n\t\tvoid* m_originalContactPoint;\n\t\tbtScalar m_unusedPadding4;\n\t\tint m_numRowsForNonContactConstraint;\n\t};\n\n\tint m_overrideNumSolverIterations;\n\tint m_frictionIndex;\n\tint m_solverBodyIdA;\n\tint m_solverBodyIdB;\n\n\tenum btSolverConstraintType\n\t{\n\t\tBT_SOLVER_CONTACT_1D = 0,\n\t\tBT_SOLVER_FRICTION_1D\n\t};\n};\n\ntypedef btAlignedObjectArray<btSolverConstraint> btConstraintArray;\n\n#endif  //BT_SOLVER_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2010 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TYPED_CONSTRAINT_H\n#define BT_TYPED_CONSTRAINT_H\n\n#include \"LinearMath/btScalar.h\"\n#include \"btSolverConstraint.h\"\n#include \"BulletDynamics/Dynamics/btRigidBody.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btTypedConstraintData2 btTypedConstraintDoubleData\n#define btTypedConstraintDataName \"btTypedConstraintDoubleData\"\n#else\n#define btTypedConstraintData2 btTypedConstraintFloatData\n#define btTypedConstraintDataName \"btTypedConstraintFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nclass btSerializer;\n\n//Don't change any of the existing enum values, so add enum types at the end for serialization compatibility\nenum btTypedConstraintType\n{\n\tPOINT2POINT_CONSTRAINT_TYPE = 3,\n\tHINGE_CONSTRAINT_TYPE,\n\tCONETWIST_CONSTRAINT_TYPE,\n\tD6_CONSTRAINT_TYPE,\n\tSLIDER_CONSTRAINT_TYPE,\n\tCONTACT_CONSTRAINT_TYPE,\n\tD6_SPRING_CONSTRAINT_TYPE,\n\tGEAR_CONSTRAINT_TYPE,\n\tFIXED_CONSTRAINT_TYPE,\n\tD6_SPRING_2_CONSTRAINT_TYPE,\n\tMAX_CONSTRAINT_TYPE\n};\n\nenum btConstraintParams\n{\n\tBT_CONSTRAINT_ERP = 1,\n\tBT_CONSTRAINT_STOP_ERP,\n\tBT_CONSTRAINT_CFM,\n\tBT_CONSTRAINT_STOP_CFM\n};\n\n#if 1\n#define btAssertConstrParams(_par) btAssert(_par)\n#else\n#define btAssertConstrParams(_par)\n#endif\n\nATTRIBUTE_ALIGNED16(struct)\nbtJointFeedback\n{\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\tbtVector3 m_appliedForceBodyA;\n\tbtVector3 m_appliedTorqueBodyA;\n\tbtVector3 m_appliedForceBodyB;\n\tbtVector3 m_appliedTorqueBodyB;\n};\n\n///TypedConstraint is the baseclass for Bullet constraints and vehicles\nATTRIBUTE_ALIGNED16(class)\nbtTypedConstraint : public btTypedObject\n{\n\tint m_userConstraintType;\n\n\tunion {\n\t\tint m_userConstraintId;\n\t\tvoid* m_userConstraintPtr;\n\t};\n\n\tbtScalar m_breakingImpulseThreshold;\n\tbool m_isEnabled;\n\tbool m_needsFeedback;\n\tint m_overrideNumSolverIterations;\n\n\tbtTypedConstraint& operator=(btTypedConstraint& other)\n\t{\n\t\tbtAssert(0);\n\t\t(void)other;\n\t\treturn *this;\n\t}\n\nprotected:\n\tbtRigidBody& m_rbA;\n\tbtRigidBody& m_rbB;\n\tbtScalar m_appliedImpulse;\n\tbtScalar m_dbgDrawSize;\n\tbtJointFeedback* m_jointFeedback;\n\n\t///internal method used by the constraint solver, don't use them directly\n\tbtScalar getMotorFactor(btScalar pos, btScalar lowLim, btScalar uppLim, btScalar vel, btScalar timeFact);\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tvirtual ~btTypedConstraint(){};\n\tbtTypedConstraint(btTypedConstraintType type, btRigidBody & rbA);\n\tbtTypedConstraint(btTypedConstraintType type, btRigidBody & rbA, btRigidBody & rbB);\n\n\tstruct btConstraintInfo1\n\t{\n\t\tint m_numConstraintRows, nub;\n\t};\n\n\tstatic btRigidBody& getFixedBody();\n\n\tstruct btConstraintInfo2\n\t{\n\t\t// integrator parameters: frames per second (1/stepsize), default error\n\t\t// reduction parameter (0..1).\n\t\tbtScalar fps, erp;\n\n\t\t// for the first and second body, pointers to two (linear and angular)\n\t\t// n*3 jacobian sub matrices, stored by rows. these matrices will have\n\t\t// been initialized to 0 on entry. if the second body is zero then the\n\t\t// J2xx pointers may be 0.\n\t\tbtScalar *m_J1linearAxis, *m_J1angularAxis, *m_J2linearAxis, *m_J2angularAxis;\n\n\t\t// elements to jump from one row to the next in J's\n\t\tint rowskip;\n\n\t\t// right hand sides of the equation J*v = c + cfm * lambda. cfm is the\n\t\t// \"constraint force mixing\" vector. c is set to zero on entry, cfm is\n\t\t// set to a constant value (typically very small or zero) value on entry.\n\t\tbtScalar *m_constraintError, *cfm;\n\n\t\t// lo and hi limits for variables (set to -/+ infinity on entry).\n\t\tbtScalar *m_lowerLimit, *m_upperLimit;\n\n\t\t// number of solver iterations\n\t\tint m_numIterations;\n\n\t\t//damping of the velocity\n\t\tbtScalar m_damping;\n\t};\n\n\tint getOverrideNumSolverIterations() const\n\t{\n\t\treturn m_overrideNumSolverIterations;\n\t}\n\n\t///override the number of constraint solver iterations used to solve this constraint\n\t///-1 will use the default number of iterations, as specified in SolverInfo.m_numIterations\n\tvoid setOverrideNumSolverIterations(int overideNumIterations)\n\t{\n\t\tm_overrideNumSolverIterations = overideNumIterations;\n\t}\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void buildJacobian(){};\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void setupSolverConstraint(btConstraintArray & ca, int solverBodyA, int solverBodyB, btScalar timeStep)\n\t{\n\t\t(void)ca;\n\t\t(void)solverBodyA;\n\t\t(void)solverBodyB;\n\t\t(void)timeStep;\n\t}\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void getInfo1(btConstraintInfo1 * info) = 0;\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void getInfo2(btConstraintInfo2 * info) = 0;\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvoid internalSetAppliedImpulse(btScalar appliedImpulse)\n\t{\n\t\tm_appliedImpulse = appliedImpulse;\n\t}\n\t///internal method used by the constraint solver, don't use them directly\n\tbtScalar internalGetAppliedImpulse()\n\t{\n\t\treturn m_appliedImpulse;\n\t}\n\n\tbtScalar getBreakingImpulseThreshold() const\n\t{\n\t\treturn m_breakingImpulseThreshold;\n\t}\n\n\tvoid setBreakingImpulseThreshold(btScalar threshold)\n\t{\n\t\tm_breakingImpulseThreshold = threshold;\n\t}\n\n\tbool isEnabled() const\n\t{\n\t\treturn m_isEnabled;\n\t}\n\n\tvoid setEnabled(bool enabled)\n\t{\n\t\tm_isEnabled = enabled;\n\t}\n\n\t///internal method used by the constraint solver, don't use them directly\n\tvirtual void solveConstraintObsolete(btSolverBody& /*bodyA*/, btSolverBody& /*bodyB*/, btScalar /*timeStep*/){};\n\n\tconst btRigidBody& getRigidBodyA() const\n\t{\n\t\treturn m_rbA;\n\t}\n\tconst btRigidBody& getRigidBodyB() const\n\t{\n\t\treturn m_rbB;\n\t}\n\n\tbtRigidBody& getRigidBodyA()\n\t{\n\t\treturn m_rbA;\n\t}\n\tbtRigidBody& getRigidBodyB()\n\t{\n\t\treturn m_rbB;\n\t}\n\n\tint getUserConstraintType() const\n\t{\n\t\treturn m_userConstraintType;\n\t}\n\n\tvoid setUserConstraintType(int userConstraintType)\n\t{\n\t\tm_userConstraintType = userConstraintType;\n\t};\n\n\tvoid setUserConstraintId(int uid)\n\t{\n\t\tm_userConstraintId = uid;\n\t}\n\n\tint getUserConstraintId() const\n\t{\n\t\treturn m_userConstraintId;\n\t}\n\n\tvoid setUserConstraintPtr(void* ptr)\n\t{\n\t\tm_userConstraintPtr = ptr;\n\t}\n\n\tvoid* getUserConstraintPtr()\n\t{\n\t\treturn m_userConstraintPtr;\n\t}\n\n\tvoid setJointFeedback(btJointFeedback * jointFeedback)\n\t{\n\t\tm_jointFeedback = jointFeedback;\n\t}\n\n\tconst btJointFeedback* getJointFeedback() const\n\t{\n\t\treturn m_jointFeedback;\n\t}\n\n\tbtJointFeedback* getJointFeedback()\n\t{\n\t\treturn m_jointFeedback;\n\t}\n\n\tint getUid() const\n\t{\n\t\treturn m_userConstraintId;\n\t}\n\n\tbool needsFeedback() const\n\t{\n\t\treturn m_needsFeedback;\n\t}\n\n\t///enableFeedback will allow to read the applied linear and angular impulse\n\t///use getAppliedImpulse, getAppliedLinearImpulse and getAppliedAngularImpulse to read feedback information\n\tvoid enableFeedback(bool needsFeedback)\n\t{\n\t\tm_needsFeedback = needsFeedback;\n\t}\n\n\t///getAppliedImpulse is an estimated total applied impulse.\n\t///This feedback could be used to determine breaking constraints or playing sounds.\n\tbtScalar getAppliedImpulse() const\n\t{\n\t\tbtAssert(m_needsFeedback);\n\t\treturn m_appliedImpulse;\n\t}\n\n\tbtTypedConstraintType getConstraintType() const\n\t{\n\t\treturn btTypedConstraintType(m_objectType);\n\t}\n\n\tvoid setDbgDrawSize(btScalar dbgDrawSize)\n\t{\n\t\tm_dbgDrawSize = dbgDrawSize;\n\t}\n\tbtScalar getDbgDrawSize()\n\t{\n\t\treturn m_dbgDrawSize;\n\t}\n\n\t///override the default global value of a parameter (such as ERP or CFM), optionally provide the axis (0..5).\n\t///If no axis is provided, it uses the default axis for this constraint.\n\tvirtual void setParam(int num, btScalar value, int axis = -1) = 0;\n\n\t///return the local value of parameter\n\tvirtual btScalar getParam(int num, int axis = -1) const = 0;\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, btSerializer* serializer) const;\n};\n\n// returns angle in range [-SIMD_2_PI, SIMD_2_PI], closest to one of the limits\n// all arguments should be normalized angles (i.e. in range [-SIMD_PI, SIMD_PI])\nSIMD_FORCE_INLINE btScalar btAdjustAngleToLimits(btScalar angleInRadians, btScalar angleLowerLimitInRadians, btScalar angleUpperLimitInRadians)\n{\n\tif (angleLowerLimitInRadians >= angleUpperLimitInRadians)\n\t{\n\t\treturn angleInRadians;\n\t}\n\telse if (angleInRadians < angleLowerLimitInRadians)\n\t{\n\t\tbtScalar diffLo = btFabs(btNormalizeAngle(angleLowerLimitInRadians - angleInRadians));\n\t\tbtScalar diffHi = btFabs(btNormalizeAngle(angleUpperLimitInRadians - angleInRadians));\n\t\treturn (diffLo < diffHi) ? angleInRadians : (angleInRadians + SIMD_2_PI);\n\t}\n\telse if (angleInRadians > angleUpperLimitInRadians)\n\t{\n\t\tbtScalar diffHi = btFabs(btNormalizeAngle(angleInRadians - angleUpperLimitInRadians));\n\t\tbtScalar diffLo = btFabs(btNormalizeAngle(angleInRadians - angleLowerLimitInRadians));\n\t\treturn (diffLo < diffHi) ? (angleInRadians - SIMD_2_PI) : angleInRadians;\n\t}\n\telse\n\t{\n\t\treturn angleInRadians;\n\t}\n}\n\n// clang-format off\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct\tbtTypedConstraintFloatData\n{\n\tbtRigidBodyFloatData\t\t*m_rbA;\n\tbtRigidBodyFloatData\t\t*m_rbB;\n\tchar\t*m_name;\n\n\tint\tm_objectType;\n\tint\tm_userConstraintType;\n\tint\tm_userConstraintId;\n\tint\tm_needsFeedback;\n\n\tfloat\tm_appliedImpulse;\n\tfloat\tm_dbgDrawSize;\n\n\tint\tm_disableCollisionsBetweenLinkedBodies;\n\tint\tm_overrideNumSolverIterations;\n\n\tfloat\tm_breakingImpulseThreshold;\n\tint\t\tm_isEnabled;\n\t\n};\n\n\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\n\n#define BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n#ifdef BT_BACKWARDS_COMPATIBLE_SERIALIZATION\n///this structure is not used, except for loading pre-2.82 .bullet files\nstruct\tbtTypedConstraintData\n{\n\tbtRigidBodyData\t\t*m_rbA;\n\tbtRigidBodyData\t\t*m_rbB;\n\tchar\t*m_name;\n\n\tint\tm_objectType;\n\tint\tm_userConstraintType;\n\tint\tm_userConstraintId;\n\tint\tm_needsFeedback;\n\n\tfloat\tm_appliedImpulse;\n\tfloat\tm_dbgDrawSize;\n\n\tint\tm_disableCollisionsBetweenLinkedBodies;\n\tint\tm_overrideNumSolverIterations;\n\n\tfloat\tm_breakingImpulseThreshold;\n\tint\t\tm_isEnabled;\n\t\n};\n#endif //BACKWARDS_COMPATIBLE\n\nstruct\tbtTypedConstraintDoubleData\n{\n\tbtRigidBodyDoubleData\t\t*m_rbA;\n\tbtRigidBodyDoubleData\t\t*m_rbB;\n\tchar\t*m_name;\n\n\tint\tm_objectType;\n\tint\tm_userConstraintType;\n\tint\tm_userConstraintId;\n\tint\tm_needsFeedback;\n\n\tdouble\tm_appliedImpulse;\n\tdouble\tm_dbgDrawSize;\n\n\tint\tm_disableCollisionsBetweenLinkedBodies;\n\tint\tm_overrideNumSolverIterations;\n\n\tdouble\tm_breakingImpulseThreshold;\n\tint\t\tm_isEnabled;\n\tchar\tpadding[4];\n\t\n};\n\n// clang-format on\n\nSIMD_FORCE_INLINE int btTypedConstraint::calculateSerializeBufferSize() const\n{\n\treturn sizeof(btTypedConstraintData2);\n}\n\nclass btAngularLimit\n{\nprivate:\n\tbtScalar\n\t\tm_center,\n\t\tm_halfRange,\n\t\tm_softness,\n\t\tm_biasFactor,\n\t\tm_relaxationFactor,\n\t\tm_correction,\n\t\tm_sign;\n\n\tbool\n\t\tm_solveLimit;\n\npublic:\n\t/// Default constructor initializes limit as inactive, allowing free constraint movement\n\tbtAngularLimit()\n\t\t: m_center(0.0f),\n\t\t  m_halfRange(-1.0f),\n\t\t  m_softness(0.9f),\n\t\t  m_biasFactor(0.3f),\n\t\t  m_relaxationFactor(1.0f),\n\t\t  m_correction(0.0f),\n\t\t  m_sign(0.0f),\n\t\t  m_solveLimit(false)\n\t{\n\t}\n\n\t/// Sets all limit's parameters.\n\t/// When low > high limit becomes inactive.\n\t/// When high - low > 2PI limit is ineffective too becouse no angle can exceed the limit\n\tvoid set(btScalar low, btScalar high, btScalar _softness = 0.9f, btScalar _biasFactor = 0.3f, btScalar _relaxationFactor = 1.0f);\n\n\t/// Checks conastaint angle against limit. If limit is active and the angle violates the limit\n\t/// correction is calculated.\n\tvoid test(const btScalar angle);\n\n\t/// Returns limit's softness\n\tinline btScalar getSoftness() const\n\t{\n\t\treturn m_softness;\n\t}\n\n\t/// Returns limit's bias factor\n\tinline btScalar getBiasFactor() const\n\t{\n\t\treturn m_biasFactor;\n\t}\n\n\t/// Returns limit's relaxation factor\n\tinline btScalar getRelaxationFactor() const\n\t{\n\t\treturn m_relaxationFactor;\n\t}\n\n\t/// Returns correction value evaluated when test() was invoked\n\tinline btScalar getCorrection() const\n\t{\n\t\treturn m_correction;\n\t}\n\n\t/// Returns sign value evaluated when test() was invoked\n\tinline btScalar getSign() const\n\t{\n\t\treturn m_sign;\n\t}\n\n\t/// Gives half of the distance between min and max limit angle\n\tinline btScalar getHalfRange() const\n\t{\n\t\treturn m_halfRange;\n\t}\n\n\t/// Returns true when the last test() invocation recognized limit violation\n\tinline bool isLimit() const\n\t{\n\t\treturn m_solveLimit;\n\t}\n\n\t/// Checks given angle against limit. If limit is active and angle doesn't fit it, the angle\n\t/// returned is modified so it equals to the limit closest to given angle.\n\tvoid fit(btScalar& angle) const;\n\n\t/// Returns correction value multiplied by sign value\n\tbtScalar getError() const;\n\n\tbtScalar getLow() const;\n\n\tbtScalar getHigh() const;\n};\n\n#endif  //BT_TYPED_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library, http://bulletphysics.org\nCopyright (C) 2006, 2007 Sony Computer Entertainment Inc. \n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_UNIVERSAL_CONSTRAINT_H\n#define BT_UNIVERSAL_CONSTRAINT_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"btTypedConstraint.h\"\n#include \"btGeneric6DofConstraint.h\"\n\n/// Constraint similar to ODE Universal Joint\n/// has 2 rotatioonal degrees of freedom, similar to Euler rotations around Z (axis 1)\n/// and Y (axis 2)\n/// Description from ODE manual :\n/// \"Given axis 1 on body 1, and axis 2 on body 2 that is perpendicular to axis 1, it keeps them perpendicular.\n/// In other words, rotation of the two bodies about the direction perpendicular to the two axes will be equal.\"\n\nATTRIBUTE_ALIGNED16(class)\nbtUniversalConstraint : public btGeneric6DofConstraint\n{\nprotected:\n\tbtVector3 m_anchor;\n\tbtVector3 m_axis1;\n\tbtVector3 m_axis2;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t// constructor\n\t// anchor, axis1 and axis2 are in world coordinate system\n\t// axis1 must be orthogonal to axis2\n\tbtUniversalConstraint(btRigidBody & rbA, btRigidBody & rbB, const btVector3& anchor, const btVector3& axis1, const btVector3& axis2);\n\t// access\n\tconst btVector3& getAnchor() { return m_calculatedTransformA.getOrigin(); }\n\tconst btVector3& getAnchor2() { return m_calculatedTransformB.getOrigin(); }\n\tconst btVector3& getAxis1() { return m_axis1; }\n\tconst btVector3& getAxis2() { return m_axis2; }\n\tbtScalar getAngle1() { return getAngle(2); }\n\tbtScalar getAngle2() { return getAngle(1); }\n\t// limits\n\tvoid setUpperLimit(btScalar ang1max, btScalar ang2max) { setAngularUpperLimit(btVector3(0.f, ang1max, ang2max)); }\n\tvoid setLowerLimit(btScalar ang1min, btScalar ang2min) { setAngularLowerLimit(btVector3(0.f, ang1min, ang2min)); }\n\n\tvoid setAxis(const btVector3& axis1, const btVector3& axis2);\n};\n\n#endif  // BT_UNIVERSAL_CONSTRAINT_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btActionInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef _BT_ACTION_INTERFACE_H\n#define _BT_ACTION_INTERFACE_H\n\nclass btIDebugDraw;\nclass btCollisionWorld;\n\n#include \"LinearMath/btScalar.h\"\n#include \"btRigidBody.h\"\n\n///Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWorld\nclass btActionInterface\n{\nprotected:\n\tstatic btRigidBody& getFixedBody();\n\npublic:\n\tvirtual ~btActionInterface()\n\t{\n\t}\n\n\tvirtual void updateAction(btCollisionWorld* collisionWorld, btScalar deltaTimeStep) = 0;\n\n\tvirtual void debugDraw(btIDebugDraw* debugDrawer) = 0;\n};\n\n#endif  //_BT_ACTION_INTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DISCRETE_DYNAMICS_WORLD_H\n#define BT_DISCRETE_DYNAMICS_WORLD_H\n\n#include \"btDynamicsWorld.h\"\nclass btDispatcher;\nclass btOverlappingPairCache;\nclass btConstraintSolver;\nclass btSimulationIslandManager;\nclass btTypedConstraint;\nclass btActionInterface;\nclass btPersistentManifold;\nclass btIDebugDraw;\n\nstruct InplaceSolverIslandCallback;\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btThreads.h\"\n\n///btDiscreteDynamicsWorld provides discrete rigid body simulation\n///those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController\nATTRIBUTE_ALIGNED16(class)\nbtDiscreteDynamicsWorld : public btDynamicsWorld\n{\nprotected:\n\tbtAlignedObjectArray<btTypedConstraint*> m_sortedConstraints;\n\tInplaceSolverIslandCallback* m_solverIslandCallback;\n\n\tbtConstraintSolver* m_constraintSolver;\n\n\tbtSimulationIslandManager* m_islandManager;\n\n\tbtAlignedObjectArray<btTypedConstraint*> m_constraints;\n\n\tbtAlignedObjectArray<btRigidBody*> m_nonStaticRigidBodies;\n\n\tbtVector3 m_gravity;\n\n\t//for variable timesteps\n\tbtScalar m_localTime;\n\tbtScalar m_fixedTimeStep;\n\t//for variable timesteps\n\n\tbool m_ownsIslandManager;\n\tbool m_ownsConstraintSolver;\n\tbool m_synchronizeAllMotionStates;\n\tbool m_applySpeculativeContactRestitution;\n\n\tbtAlignedObjectArray<btActionInterface*> m_actions;\n\n\tint m_profileTimings;\n\n\tbool m_latencyMotionStateInterpolation;\n\n\tbtAlignedObjectArray<btPersistentManifold*> m_predictiveManifolds;\n\tbtSpinMutex m_predictiveManifoldsMutex;  // used to synchronize threads creating predictive contacts\n\n\tvirtual void predictUnconstraintMotion(btScalar timeStep);\n\n\tvoid integrateTransformsInternal(btRigidBody * *bodies, int numBodies, btScalar timeStep);  // can be called in parallel\n\tvirtual void integrateTransforms(btScalar timeStep);\n\n\tvirtual void calculateSimulationIslands();\n\n\t\n\n\tvirtual void updateActivationState(btScalar timeStep);\n\n\tvoid updateActions(btScalar timeStep);\n\n\tvoid startProfiling(btScalar timeStep);\n\n\tvirtual void internalSingleStepSimulation(btScalar timeStep);\n\n\tvoid releasePredictiveContacts();\n\tvoid createPredictiveContactsInternal(btRigidBody * *bodies, int numBodies, btScalar timeStep);  // can be called in parallel\n\tvirtual void createPredictiveContacts(btScalar timeStep);\n\n\tvirtual void saveKinematicState(btScalar timeStep);\n\n\tvoid serializeRigidBodies(btSerializer * serializer);\n\n\tvoid serializeDynamicsWorldInfo(btSerializer * serializer);\n    \npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\t///this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those\n\tbtDiscreteDynamicsWorld(btDispatcher * dispatcher, btBroadphaseInterface * pairCache, btConstraintSolver * constraintSolver, btCollisionConfiguration * collisionConfiguration);\n\n\tvirtual ~btDiscreteDynamicsWorld();\n\n\t///if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's\n\tvirtual int stepSimulation(btScalar timeStep, int maxSubSteps = 1, btScalar fixedTimeStep = btScalar(1.) / btScalar(60.));\n\n    virtual void solveConstraints(btContactSolverInfo & solverInfo);\n    \n\tvirtual void synchronizeMotionStates();\n\n\t///this can be useful to synchronize a single rigid body -> graphics object\n\tvoid synchronizeSingleMotionState(btRigidBody * body);\n\n\tvirtual void addConstraint(btTypedConstraint * constraint, bool disableCollisionsBetweenLinkedBodies = false);\n\n\tvirtual void removeConstraint(btTypedConstraint * constraint);\n\n\tvirtual void addAction(btActionInterface*);\n\n\tvirtual void removeAction(btActionInterface*);\n\n\tbtSimulationIslandManager* getSimulationIslandManager()\n\t{\n\t\treturn m_islandManager;\n\t}\n\n\tconst btSimulationIslandManager* getSimulationIslandManager() const\n\t{\n\t\treturn m_islandManager;\n\t}\n\n\tbtCollisionWorld* getCollisionWorld()\n\t{\n\t\treturn this;\n\t}\n\n\tvirtual void setGravity(const btVector3& gravity);\n\n\tvirtual btVector3 getGravity() const;\n\n\tvirtual void addCollisionObject(btCollisionObject * collisionObject, int collisionFilterGroup = btBroadphaseProxy::StaticFilter, int collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);\n\n\tvirtual void addRigidBody(btRigidBody * body);\n\n\tvirtual void addRigidBody(btRigidBody * body, int group, int mask);\n\n\tvirtual void removeRigidBody(btRigidBody * body);\n\n\t///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject\n\tvirtual void removeCollisionObject(btCollisionObject * collisionObject);\n\n\tvirtual void debugDrawConstraint(btTypedConstraint * constraint);\n\n\tvirtual void debugDrawWorld();\n\n\tvirtual void setConstraintSolver(btConstraintSolver * solver);\n\n\tvirtual btConstraintSolver* getConstraintSolver();\n\n\tvirtual int getNumConstraints() const;\n\n\tvirtual btTypedConstraint* getConstraint(int index);\n\n\tvirtual const btTypedConstraint* getConstraint(int index) const;\n\n\tvirtual btDynamicsWorldType getWorldType() const\n\t{\n\t\treturn BT_DISCRETE_DYNAMICS_WORLD;\n\t}\n\n\t///the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.\n\tvirtual void clearForces();\n\n\t///apply gravity, call this once per timestep\n\tvirtual void applyGravity();\n\n\tvirtual void setNumTasks(int numTasks)\n\t{\n\t\t(void)numTasks;\n\t}\n\n\t///obsolete, use updateActions instead\n\tvirtual void updateVehicles(btScalar timeStep)\n\t{\n\t\tupdateActions(timeStep);\n\t}\n\n\t///obsolete, use addAction instead\n\tvirtual void addVehicle(btActionInterface * vehicle);\n\t///obsolete, use removeAction instead\n\tvirtual void removeVehicle(btActionInterface * vehicle);\n\t///obsolete, use addAction instead\n\tvirtual void addCharacter(btActionInterface * character);\n\t///obsolete, use removeAction instead\n\tvirtual void removeCharacter(btActionInterface * character);\n\n\tvoid setSynchronizeAllMotionStates(bool synchronizeAll)\n\t{\n\t\tm_synchronizeAllMotionStates = synchronizeAll;\n\t}\n\tbool getSynchronizeAllMotionStates() const\n\t{\n\t\treturn m_synchronizeAllMotionStates;\n\t}\n\n\tvoid setApplySpeculativeContactRestitution(bool enable)\n\t{\n\t\tm_applySpeculativeContactRestitution = enable;\n\t}\n\n\tbool getApplySpeculativeContactRestitution() const\n\t{\n\t\treturn m_applySpeculativeContactRestitution;\n\t}\n\n\t///Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo)\n\tvirtual void serialize(btSerializer * serializer);\n\n\t///Interpolate motion state between previous and current transform, instead of current and next transform.\n\t///This can relieve discontinuities in the rendering, due to penetrations\n\tvoid setLatencyMotionStateInterpolation(bool latencyInterpolation)\n\t{\n\t\tm_latencyMotionStateInterpolation = latencyInterpolation;\n\t}\n\tbool getLatencyMotionStateInterpolation() const\n\t{\n\t\treturn m_latencyMotionStateInterpolation;\n\t}\n    \n    btAlignedObjectArray<btRigidBody*>& getNonStaticRigidBodies()\n    {\n        return m_nonStaticRigidBodies;\n    }\n    \n    const btAlignedObjectArray<btRigidBody*>& getNonStaticRigidBodies() const\n    {\n        return m_nonStaticRigidBodies;\n    }\n};\n\n#endif  //BT_DISCRETE_DYNAMICS_WORLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DISCRETE_DYNAMICS_WORLD_MT_H\n#define BT_DISCRETE_DYNAMICS_WORLD_MT_H\n\n#include \"btDiscreteDynamicsWorld.h\"\n#include \"btSimulationIslandManagerMt.h\"\n#include \"BulletDynamics/ConstraintSolver/btConstraintSolver.h\"\n\n///\n/// btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of them.\n///\n///  Each solver in the pool is protected by a mutex.  When solveGroup is called from a thread,\n///  the pool looks for a solver that isn't being used by another thread, locks it, and dispatches the\n///  call to the solver.\n///  So long as there are at least as many solvers as there are hardware threads, it should never need to\n///  spin wait.\n///\nclass btConstraintSolverPoolMt : public btConstraintSolver\n{\npublic:\n\t// create the solvers for me\n\texplicit btConstraintSolverPoolMt(int numSolvers);\n\n\t// pass in fully constructed solvers (destructor will delete them)\n\tbtConstraintSolverPoolMt(btConstraintSolver** solvers, int numSolvers);\n\n\tvirtual ~btConstraintSolverPoolMt();\n\n\t///solve a group of constraints\n\tvirtual btScalar solveGroup(btCollisionObject** bodies,\n\t\t\t\t\t\t\t\tint numBodies,\n\t\t\t\t\t\t\t\tbtPersistentManifold** manifolds,\n\t\t\t\t\t\t\t\tint numManifolds,\n\t\t\t\t\t\t\t\tbtTypedConstraint** constraints,\n\t\t\t\t\t\t\t\tint numConstraints,\n\t\t\t\t\t\t\t\tconst btContactSolverInfo& info,\n\t\t\t\t\t\t\t\tbtIDebugDraw* debugDrawer,\n\t\t\t\t\t\t\t\tbtDispatcher* dispatcher) BT_OVERRIDE;\n\n\tvirtual void reset() BT_OVERRIDE;\n\tvirtual btConstraintSolverType getSolverType() const BT_OVERRIDE { return m_solverType; }\n\nprivate:\n\tconst static size_t kCacheLineSize = 128;\n\tstruct ThreadSolver\n\t{\n\t\tbtConstraintSolver* solver;\n\t\tbtSpinMutex mutex;\n\t\tchar _cachelinePadding[kCacheLineSize - sizeof(btSpinMutex) - sizeof(void*)];  // keep mutexes from sharing a cache line\n\t};\n\tbtAlignedObjectArray<ThreadSolver> m_solvers;\n\tbtConstraintSolverType m_solverType;\n\n\tThreadSolver* getAndLockThreadSolver();\n\tvoid init(btConstraintSolver** solvers, int numSolvers);\n};\n\n///\n/// btDiscreteDynamicsWorldMt -- a version of DiscreteDynamicsWorld with some minor changes to support\n///                              solving simulation islands on multiple threads.\n///\n///  Should function exactly like btDiscreteDynamicsWorld.\n///  Also 3 methods that iterate over all of the rigidbodies can run in parallel:\n///     - predictUnconstraintMotion\n///     - integrateTransforms\n///     - createPredictiveContacts\n///\nATTRIBUTE_ALIGNED16(class)\nbtDiscreteDynamicsWorldMt : public btDiscreteDynamicsWorld\n{\nprotected:\n\tbtConstraintSolver* m_constraintSolverMt;\n\n\tvirtual void solveConstraints(btContactSolverInfo & solverInfo) BT_OVERRIDE;\n\n\tvirtual void predictUnconstraintMotion(btScalar timeStep) BT_OVERRIDE;\n\n\tstruct UpdaterCreatePredictiveContacts : public btIParallelForBody\n\t{\n\t\tbtScalar timeStep;\n\t\tbtRigidBody** rigidBodies;\n\t\tbtDiscreteDynamicsWorldMt* world;\n\n\t\tvoid forLoop(int iBegin, int iEnd) const BT_OVERRIDE\n\t\t{\n\t\t\tworld->createPredictiveContactsInternal(&rigidBodies[iBegin], iEnd - iBegin, timeStep);\n\t\t}\n\t};\n\tvirtual void createPredictiveContacts(btScalar timeStep) BT_OVERRIDE;\n\n\tstruct UpdaterIntegrateTransforms : public btIParallelForBody\n\t{\n\t\tbtScalar timeStep;\n\t\tbtRigidBody** rigidBodies;\n\t\tbtDiscreteDynamicsWorldMt* world;\n\n\t\tvoid forLoop(int iBegin, int iEnd) const BT_OVERRIDE\n\t\t{\n\t\t\tworld->integrateTransformsInternal(&rigidBodies[iBegin], iEnd - iBegin, timeStep);\n\t\t}\n\t};\n\tvirtual void integrateTransforms(btScalar timeStep) BT_OVERRIDE;\n\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtDiscreteDynamicsWorldMt(btDispatcher * dispatcher,\n\t\t\t\t\t\t\t  btBroadphaseInterface * pairCache,\n\t\t\t\t\t\t\t  btConstraintSolverPoolMt * solverPool,        // Note this should be a solver-pool for multi-threading\n\t\t\t\t\t\t\t  btConstraintSolver * constraintSolverMt,      // single multi-threaded solver for large islands (or NULL)\n\t\t\t\t\t\t\t  btCollisionConfiguration * collisionConfiguration);\n\tvirtual ~btDiscreteDynamicsWorldMt();\n\n\tvirtual int stepSimulation(btScalar timeStep, int maxSubSteps, btScalar fixedTimeStep) BT_OVERRIDE;\n};\n\n#endif  //BT_DISCRETE_DYNAMICS_WORLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_DYNAMICS_WORLD_H\n#define BT_DYNAMICS_WORLD_H\n\n#include \"BulletCollision/CollisionDispatch/btCollisionWorld.h\"\n#include \"BulletDynamics/ConstraintSolver/btContactSolverInfo.h\"\n\nclass btTypedConstraint;\nclass btActionInterface;\nclass btConstraintSolver;\nclass btDynamicsWorld;\n\n/// Type for the callback for each tick\ntypedef void (*btInternalTickCallback)(btDynamicsWorld* world, btScalar timeStep);\n\nenum btDynamicsWorldType\n{\n\tBT_SIMPLE_DYNAMICS_WORLD = 1,\n\tBT_DISCRETE_DYNAMICS_WORLD = 2,\n\tBT_CONTINUOUS_DYNAMICS_WORLD = 3,\n\tBT_SOFT_RIGID_DYNAMICS_WORLD = 4,\n\tBT_GPU_DYNAMICS_WORLD = 5,\n\tBT_SOFT_MULTIBODY_DYNAMICS_WORLD = 6,\n    BT_DEFORMABLE_MULTIBODY_DYNAMICS_WORLD = 7\n};\n\n///The btDynamicsWorld is the interface class for several dynamics implementation, basic, discrete, parallel, and continuous etc.\nclass btDynamicsWorld : public btCollisionWorld\n{\nprotected:\n\tbtInternalTickCallback m_internalTickCallback;\n\tbtInternalTickCallback m_internalPreTickCallback;\n\tvoid* m_worldUserInfo;\n\n\tbtContactSolverInfo m_solverInfo;\n\npublic:\n\tbtDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* broadphase, btCollisionConfiguration* collisionConfiguration)\n\t\t: btCollisionWorld(dispatcher, broadphase, collisionConfiguration), m_internalTickCallback(0), m_internalPreTickCallback(0), m_worldUserInfo(0)\n\t{\n\t}\n\n\tvirtual ~btDynamicsWorld()\n\t{\n\t}\n\n\t///stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds.\n\t///By default, Bullet will subdivide the timestep in constant substeps of each 'fixedTimeStep'.\n\t///in order to keep the simulation real-time, the maximum number of substeps can be clamped to 'maxSubSteps'.\n\t///You can disable subdividing the timestep/substepping by passing maxSubSteps=0 as second argument to stepSimulation, but in that case you have to keep the timeStep constant.\n\tvirtual int stepSimulation(btScalar timeStep, int maxSubSteps = 1, btScalar fixedTimeStep = btScalar(1.) / btScalar(60.)) = 0;\n\n\tvirtual void debugDrawWorld() = 0;\n\n\tvirtual void addConstraint(btTypedConstraint* constraint, bool disableCollisionsBetweenLinkedBodies = false)\n\t{\n\t\t(void)constraint;\n\t\t(void)disableCollisionsBetweenLinkedBodies;\n\t}\n\n\tvirtual void removeConstraint(btTypedConstraint* constraint) { (void)constraint; }\n\n\tvirtual void addAction(btActionInterface* action) = 0;\n\n\tvirtual void removeAction(btActionInterface* action) = 0;\n\n\t//once a rigidbody is added to the dynamics world, it will get this gravity assigned\n\t//existing rigidbodies in the world get gravity assigned too, during this method\n\tvirtual void setGravity(const btVector3& gravity) = 0;\n\tvirtual btVector3 getGravity() const = 0;\n\n\tvirtual void synchronizeMotionStates() = 0;\n\n\tvirtual void addRigidBody(btRigidBody* body) = 0;\n\n\tvirtual void addRigidBody(btRigidBody* body, int group, int mask) = 0;\n\n\tvirtual void removeRigidBody(btRigidBody* body) = 0;\n\n\tvirtual void setConstraintSolver(btConstraintSolver* solver) = 0;\n\n\tvirtual btConstraintSolver* getConstraintSolver() = 0;\n\n\tvirtual int getNumConstraints() const { return 0; }\n\n\tvirtual btTypedConstraint* getConstraint(int index)\n\t{\n\t\t(void)index;\n\t\treturn 0;\n\t}\n\n\tvirtual const btTypedConstraint* getConstraint(int index) const\n\t{\n\t\t(void)index;\n\t\treturn 0;\n\t}\n\n\tvirtual btDynamicsWorldType getWorldType() const = 0;\n\n\tvirtual void clearForces() = 0;\n\n\t/// Set the callback for when an internal tick (simulation substep) happens, optional user info\n\tvoid setInternalTickCallback(btInternalTickCallback cb, void* worldUserInfo = 0, bool isPreTick = false)\n\t{\n\t\tif (isPreTick)\n\t\t{\n\t\t\tm_internalPreTickCallback = cb;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_internalTickCallback = cb;\n\t\t}\n\t\tm_worldUserInfo = worldUserInfo;\n\t}\n\n\tvoid setWorldUserInfo(void* worldUserInfo)\n\t{\n\t\tm_worldUserInfo = worldUserInfo;\n\t}\n\n\tvoid* getWorldUserInfo() const\n\t{\n\t\treturn m_worldUserInfo;\n\t}\n\n\tbtContactSolverInfo& getSolverInfo()\n\t{\n\t\treturn m_solverInfo;\n\t}\n\n\tconst btContactSolverInfo& getSolverInfo() const\n\t{\n\t\treturn m_solverInfo;\n\t}\n\n\t///obsolete, use addAction instead.\n\tvirtual void addVehicle(btActionInterface* vehicle) { (void)vehicle; }\n\t///obsolete, use removeAction instead\n\tvirtual void removeVehicle(btActionInterface* vehicle) { (void)vehicle; }\n\t///obsolete, use addAction instead.\n\tvirtual void addCharacter(btActionInterface* character) { (void)character; }\n\t///obsolete, use removeAction instead\n\tvirtual void removeCharacter(btActionInterface* character) { (void)character; }\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btDynamicsWorldDoubleData\n{\n\tbtContactSolverInfoDoubleData m_solverInfo;\n\tbtVector3DoubleData m_gravity;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btDynamicsWorldFloatData\n{\n\tbtContactSolverInfoFloatData m_solverInfo;\n\tbtVector3FloatData m_gravity;\n};\n\n#endif  //BT_DYNAMICS_WORLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btRigidBody.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_RIGIDBODY_H\n#define BT_RIGIDBODY_H\n\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"BulletCollision/BroadphaseCollision/btBroadphaseProxy.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionObject.h\"\n\nclass btCollisionShape;\nclass btMotionState;\nclass btTypedConstraint;\n\nextern btScalar gDeactivationTime;\nextern bool gDisableDeactivation;\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btRigidBodyData btRigidBodyDoubleData\n#define btRigidBodyDataName \"btRigidBodyDoubleData\"\n#else\n#define btRigidBodyData btRigidBodyFloatData\n#define btRigidBodyDataName \"btRigidBodyFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\nenum btRigidBodyFlags\n{\n\tBT_DISABLE_WORLD_GRAVITY = 1,\n\t///BT_ENABLE_GYROPSCOPIC_FORCE flags is enabled by default in Bullet 2.83 and onwards.\n\t///and it BT_ENABLE_GYROPSCOPIC_FORCE becomes equivalent to BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY\n\t///See Demos/GyroscopicDemo and computeGyroscopicImpulseImplicit\n\tBT_ENABLE_GYROSCOPIC_FORCE_EXPLICIT = 2,\n\tBT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_WORLD = 4,\n\tBT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY = 8,\n\tBT_ENABLE_GYROPSCOPIC_FORCE = BT_ENABLE_GYROSCOPIC_FORCE_IMPLICIT_BODY,\n};\n\n///The btRigidBody is the main class for rigid body objects. It is derived from btCollisionObject, so it keeps a pointer to a btCollisionShape.\n///It is recommended for performance and memory use to share btCollisionShape objects whenever possible.\n///There are 3 types of rigid bodies:\n///- A) Dynamic rigid bodies, with positive mass. Motion is controlled by rigid body dynamics.\n///- B) Fixed objects with zero mass. They are not moving (basically collision objects)\n///- C) Kinematic objects, which are objects without mass, but the user can move them. There is one-way interaction, and Bullet calculates a velocity based on the timestep and previous and current world transform.\n///Bullet automatically deactivates dynamic rigid bodies, when the velocity is below a threshold for a given time.\n///Deactivated (sleeping) rigid bodies don't take any processing time, except a minor broadphase collision detection impact (to allow active objects to activate/wake up sleeping objects)\nclass btRigidBody : public btCollisionObject\n{\n\tbtMatrix3x3 m_invInertiaTensorWorld;\n\tbtVector3 m_linearVelocity;\n\tbtVector3 m_angularVelocity;\n\tbtScalar m_inverseMass;\n\tbtVector3 m_linearFactor;\n\n\tbtVector3 m_gravity;\n\tbtVector3 m_gravity_acceleration;\n\tbtVector3 m_invInertiaLocal;\n\tbtVector3 m_totalForce;\n\tbtVector3 m_totalTorque;\n\n\tbtScalar m_linearDamping;\n\tbtScalar m_angularDamping;\n\n\tbool m_additionalDamping;\n\tbtScalar m_additionalDampingFactor;\n\tbtScalar m_additionalLinearDampingThresholdSqr;\n\tbtScalar m_additionalAngularDampingThresholdSqr;\n\tbtScalar m_additionalAngularDampingFactor;\n\n\tbtScalar m_linearSleepingThreshold;\n\tbtScalar m_angularSleepingThreshold;\n\n\t//m_optionalMotionState allows to automatic synchronize the world transform for active objects\n\tbtMotionState* m_optionalMotionState;\n\n\t//keep track of typed constraints referencing this rigid body, to disable collision between linked bodies\n\tbtAlignedObjectArray<btTypedConstraint*> m_constraintRefs;\n\n\tint m_rigidbodyFlags;\n\n\tint m_debugBodyId;\n\nprotected:\n\tATTRIBUTE_ALIGNED16(btVector3 m_deltaLinearVelocity);\n\tbtVector3 m_deltaAngularVelocity;\n\tbtVector3 m_angularFactor;\n\tbtVector3 m_invMass;\n\tbtVector3 m_pushVelocity;\n\tbtVector3 m_turnVelocity;\n\npublic:\n\t///The btRigidBodyConstructionInfo structure provides information to create a rigid body. Setting mass to zero creates a fixed (non-dynamic) rigid body.\n\t///For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument)\n\t///You can use the motion state to synchronize the world transform between physics and graphics objects.\n\t///And if the motion state is provided, the rigid body will initialize its initial world transform from the motion state,\n\t///m_startWorldTransform is only used when you don't provide a motion state.\n\tstruct btRigidBodyConstructionInfo\n\t{\n\t\tbtScalar m_mass;\n\n\t\t///When a motionState is provided, the rigid body will initialize its world transform from the motion state\n\t\t///In this case, m_startWorldTransform is ignored.\n\t\tbtMotionState* m_motionState;\n\t\tbtTransform m_startWorldTransform;\n\n\t\tbtCollisionShape* m_collisionShape;\n\t\tbtVector3 m_localInertia;\n\t\tbtScalar m_linearDamping;\n\t\tbtScalar m_angularDamping;\n\n\t\t///best simulation results when friction is non-zero\n\t\tbtScalar m_friction;\n\t\t///the m_rollingFriction prevents rounded shapes, such as spheres, cylinders and capsules from rolling forever.\n\t\t///See Bullet/Demos/RollingFrictionDemo for usage\n\t\tbtScalar m_rollingFriction;\n\t\tbtScalar m_spinningFriction;  //torsional friction around contact normal\n\n\t\t///best simulation results using zero restitution.\n\t\tbtScalar m_restitution;\n\n\t\tbtScalar m_linearSleepingThreshold;\n\t\tbtScalar m_angularSleepingThreshold;\n\n\t\t//Additional damping can help avoiding lowpass jitter motion, help stability for ragdolls etc.\n\t\t//Such damping is undesirable, so once the overall simulation quality of the rigid body dynamics system has improved, this should become obsolete\n\t\tbool m_additionalDamping;\n\t\tbtScalar m_additionalDampingFactor;\n\t\tbtScalar m_additionalLinearDampingThresholdSqr;\n\t\tbtScalar m_additionalAngularDampingThresholdSqr;\n\t\tbtScalar m_additionalAngularDampingFactor;\n\n\t\tbtRigidBodyConstructionInfo(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia = btVector3(0, 0, 0)) : m_mass(mass),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_motionState(motionState),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_collisionShape(collisionShape),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_localInertia(localInertia),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_linearDamping(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_angularDamping(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_friction(btScalar(0.5)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_rollingFriction(btScalar(0)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_spinningFriction(btScalar(0)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_restitution(btScalar(0.)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_linearSleepingThreshold(btScalar(0.8)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_angularSleepingThreshold(btScalar(1.f)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_additionalDamping(false),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_additionalDampingFactor(btScalar(0.005)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_additionalLinearDampingThresholdSqr(btScalar(0.01)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_additionalAngularDampingThresholdSqr(btScalar(0.01)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   m_additionalAngularDampingFactor(btScalar(0.01))\n\t\t{\n\t\t\tm_startWorldTransform.setIdentity();\n\t\t}\n\t};\n\n\t///btRigidBody constructor using construction info\n\tbtRigidBody(const btRigidBodyConstructionInfo& constructionInfo);\n\n\t///btRigidBody constructor for backwards compatibility.\n\t///To specify friction (etc) during rigid body construction, please use the other constructor (using btRigidBodyConstructionInfo)\n\tbtRigidBody(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia = btVector3(0, 0, 0));\n\n\tvirtual ~btRigidBody()\n\t{\n\t\t//No constraints should point to this rigidbody\n\t\t//Remove constraints from the dynamics world before you delete the related rigidbodies.\n\t\tbtAssert(m_constraintRefs.size() == 0);\n\t}\n\nprotected:\n\t///setupRigidBody is only used internally by the constructor\n\tvoid setupRigidBody(const btRigidBodyConstructionInfo& constructionInfo);\n\npublic:\n\tvoid proceedToTransform(const btTransform& newTrans);\n\n\t///to keep collision detection and dynamics separate we don't store a rigidbody pointer\n\t///but a rigidbody is derived from btCollisionObject, so we can safely perform an upcast\n\tstatic const btRigidBody* upcast(const btCollisionObject* colObj)\n\t{\n\t\tif (colObj->getInternalType() & btCollisionObject::CO_RIGID_BODY)\n\t\t\treturn (const btRigidBody*)colObj;\n\t\treturn 0;\n\t}\n\tstatic btRigidBody* upcast(btCollisionObject* colObj)\n\t{\n\t\tif (colObj->getInternalType() & btCollisionObject::CO_RIGID_BODY)\n\t\t\treturn (btRigidBody*)colObj;\n\t\treturn 0;\n\t}\n\n\t/// continuous collision detection needs prediction\n\tvoid predictIntegratedTransform(btScalar step, btTransform& predictedTransform);\n\n\tvoid saveKinematicState(btScalar step);\n\n\tvoid applyGravity();\n    \n    void clearGravity();\n\n\tvoid setGravity(const btVector3& acceleration);\n\n\tconst btVector3& getGravity() const\n\t{\n\t\treturn m_gravity_acceleration;\n\t}\n\n\tvoid setDamping(btScalar lin_damping, btScalar ang_damping);\n\n\tbtScalar getLinearDamping() const\n\t{\n\t\treturn m_linearDamping;\n\t}\n\n\tbtScalar getAngularDamping() const\n\t{\n\t\treturn m_angularDamping;\n\t}\n\n\tbtScalar getLinearSleepingThreshold() const\n\t{\n\t\treturn m_linearSleepingThreshold;\n\t}\n\n\tbtScalar getAngularSleepingThreshold() const\n\t{\n\t\treturn m_angularSleepingThreshold;\n\t}\n\n\tvoid applyDamping(btScalar timeStep);\n\n\tSIMD_FORCE_INLINE const btCollisionShape* getCollisionShape() const\n\t{\n\t\treturn m_collisionShape;\n\t}\n\n\tSIMD_FORCE_INLINE btCollisionShape* getCollisionShape()\n\t{\n\t\treturn m_collisionShape;\n\t}\n\n\tvoid setMassProps(btScalar mass, const btVector3& inertia);\n\n\tconst btVector3& getLinearFactor() const\n\t{\n\t\treturn m_linearFactor;\n\t}\n\tvoid setLinearFactor(const btVector3& linearFactor)\n\t{\n\t\tm_linearFactor = linearFactor;\n\t\tm_invMass = m_linearFactor * m_inverseMass;\n\t}\n\tbtScalar getInvMass() const { return m_inverseMass; }\n\tbtScalar getMass() const { return m_inverseMass == btScalar(0.) ? btScalar(0.) : btScalar(1.0) / m_inverseMass; }\n\tconst btMatrix3x3& getInvInertiaTensorWorld() const\n\t{\n\t\treturn m_invInertiaTensorWorld;\n\t}\n\n\tvoid integrateVelocities(btScalar step);\n\n\tvoid setCenterOfMassTransform(const btTransform& xform);\n\n\tvoid applyCentralForce(const btVector3& force)\n\t{\n\t\tm_totalForce += force * m_linearFactor;\n\t}\n\n\tconst btVector3& getTotalForce() const\n\t{\n\t\treturn m_totalForce;\n\t};\n\n\tconst btVector3& getTotalTorque() const\n\t{\n\t\treturn m_totalTorque;\n\t};\n\n\tconst btVector3& getInvInertiaDiagLocal() const\n\t{\n\t\treturn m_invInertiaLocal;\n\t};\n\n\tvoid setInvInertiaDiagLocal(const btVector3& diagInvInertia)\n\t{\n\t\tm_invInertiaLocal = diagInvInertia;\n\t}\n\n\tvoid setSleepingThresholds(btScalar linear, btScalar angular)\n\t{\n\t\tm_linearSleepingThreshold = linear;\n\t\tm_angularSleepingThreshold = angular;\n\t}\n\n\tvoid applyTorque(const btVector3& torque)\n\t{\n\t\tm_totalTorque += torque * m_angularFactor;\n\t\t#if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n\t\tclampVelocity(m_totalTorque);\n\t\t#endif\n\t}\n\n\tvoid applyForce(const btVector3& force, const btVector3& rel_pos)\n\t{\n\t\tapplyCentralForce(force);\n\t\tapplyTorque(rel_pos.cross(force * m_linearFactor));\n\t}\n\n\tvoid applyCentralImpulse(const btVector3& impulse)\n\t{\n\t\tm_linearVelocity += impulse * m_linearFactor * m_inverseMass;\n\t\t#if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n\t\tclampVelocity(m_linearVelocity);\n\t\t#endif\n\t}\n\n\tvoid applyTorqueImpulse(const btVector3& torque)\n\t{\n\t\tm_angularVelocity += m_invInertiaTensorWorld * torque * m_angularFactor;\n\t\t#if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n\t\tclampVelocity(m_angularVelocity);\n\t\t#endif\n\t}\n\n\tvoid applyImpulse(const btVector3& impulse, const btVector3& rel_pos)\n\t{\n\t\tif (m_inverseMass != btScalar(0.))\n\t\t{\n\t\t\tapplyCentralImpulse(impulse);\n\t\t\tif (m_angularFactor)\n\t\t\t{\n\t\t\t\tapplyTorqueImpulse(rel_pos.cross(impulse * m_linearFactor));\n\t\t\t}\n\t\t}\n\t}\n    \n    void applyPushImpulse(const btVector3& impulse, const btVector3& rel_pos)\n    {\n        if (m_inverseMass != btScalar(0.))\n        {\n            applyCentralPushImpulse(impulse);\n            if (m_angularFactor)\n            {\n                applyTorqueTurnImpulse(rel_pos.cross(impulse * m_linearFactor));\n            }\n        }\n    }\n    \n    btVector3 getPushVelocity() const\n    {\n        return m_pushVelocity;\n    }\n    \n    btVector3 getTurnVelocity() const\n    {\n        return m_turnVelocity;\n    }\n    \n    void setPushVelocity(const btVector3& v)\n    {\n        m_pushVelocity = v;\n    }\n\n    #if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n    void clampVelocity(btVector3& v) const {\n        v.setX(\n            fmax(-BT_CLAMP_VELOCITY_TO,\n                 fmin(BT_CLAMP_VELOCITY_TO, v.getX()))\n        );\n        v.setY(\n            fmax(-BT_CLAMP_VELOCITY_TO,\n                 fmin(BT_CLAMP_VELOCITY_TO, v.getY()))\n        );\n        v.setZ(\n            fmax(-BT_CLAMP_VELOCITY_TO,\n                 fmin(BT_CLAMP_VELOCITY_TO, v.getZ()))\n        );\n    }\n    #endif\n\n    void setTurnVelocity(const btVector3& v)\n    {\n        m_turnVelocity = v;\n        #if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n        clampVelocity(m_turnVelocity);\n        #endif\n    }\n    \n    void applyCentralPushImpulse(const btVector3& impulse)\n    {\n        m_pushVelocity += impulse * m_linearFactor * m_inverseMass;\n        #if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n        clampVelocity(m_pushVelocity);\n        #endif\n    }\n    \n    void applyTorqueTurnImpulse(const btVector3& torque)\n    {\n        m_turnVelocity += m_invInertiaTensorWorld * torque * m_angularFactor;\n        #if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n        clampVelocity(m_turnVelocity);\n        #endif\n    }\n\n\tvoid clearForces()\n\t{\n\t\tm_totalForce.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));\n\t\tm_totalTorque.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));\n\t}\n\n\tvoid updateInertiaTensor();\n\n\tconst btVector3& getCenterOfMassPosition() const\n\t{\n\t\treturn m_worldTransform.getOrigin();\n\t}\n\tbtQuaternion getOrientation() const;\n\n\tconst btTransform& getCenterOfMassTransform() const\n\t{\n\t\treturn m_worldTransform;\n\t}\n\tconst btVector3& getLinearVelocity() const\n\t{\n\t\treturn m_linearVelocity;\n\t}\n\tconst btVector3& getAngularVelocity() const\n\t{\n\t\treturn m_angularVelocity;\n\t}\n\n\tinline void setLinearVelocity(const btVector3& lin_vel)\n\t{\n\t\tm_updateRevision++;\n\t\tm_linearVelocity = lin_vel;\n\t\t#if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n\t\tclampVelocity(m_linearVelocity);\n\t\t#endif\n\t}\n\n\tinline void setAngularVelocity(const btVector3& ang_vel)\n\t{\n\t\tm_updateRevision++;\n\t\tm_angularVelocity = ang_vel;\n\t\t#if defined(BT_CLAMP_VELOCITY_TO) && BT_CLAMP_VELOCITY_TO > 0\n\t\tclampVelocity(m_angularVelocity);\n\t\t#endif\n\t}\n\n\tbtVector3 getVelocityInLocalPoint(const btVector3& rel_pos) const\n\t{\n\t\t//we also calculate lin/ang velocity for kinematic objects\n\t\treturn m_linearVelocity + m_angularVelocity.cross(rel_pos);\n\n\t\t//for kinematic objects, we could also use use:\n\t\t//\t\treturn \t(m_worldTransform(rel_pos) - m_interpolationWorldTransform(rel_pos)) / m_kinematicTimeStep;\n\t}\n    \n    btVector3 getPushVelocityInLocalPoint(const btVector3& rel_pos) const\n    {\n        //we also calculate lin/ang velocity for kinematic objects\n        return m_pushVelocity + m_turnVelocity.cross(rel_pos);\n    }\n\n\tvoid translate(const btVector3& v)\n\t{\n\t\tm_worldTransform.getOrigin() += v;\n\t}\n\n\tvoid getAabb(btVector3& aabbMin, btVector3& aabbMax) const;\n\n\tSIMD_FORCE_INLINE btScalar computeImpulseDenominator(const btVector3& pos, const btVector3& normal) const\n\t{\n\t\tbtVector3 r0 = pos - getCenterOfMassPosition();\n\n\t\tbtVector3 c0 = (r0).cross(normal);\n\n\t\tbtVector3 vec = (c0 * getInvInertiaTensorWorld()).cross(r0);\n\n\t\treturn m_inverseMass + normal.dot(vec);\n\t}\n\n\tSIMD_FORCE_INLINE btScalar computeAngularImpulseDenominator(const btVector3& axis) const\n\t{\n\t\tbtVector3 vec = axis * getInvInertiaTensorWorld();\n\t\treturn axis.dot(vec);\n\t}\n\n\tSIMD_FORCE_INLINE void updateDeactivation(btScalar timeStep)\n\t{\n\t\tif ((getActivationState() == ISLAND_SLEEPING) || (getActivationState() == DISABLE_DEACTIVATION))\n\t\t\treturn;\n\n\t\tif ((getLinearVelocity().length2() < m_linearSleepingThreshold * m_linearSleepingThreshold) &&\n\t\t\t(getAngularVelocity().length2() < m_angularSleepingThreshold * m_angularSleepingThreshold))\n\t\t{\n\t\t\tm_deactivationTime += timeStep;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_deactivationTime = btScalar(0.);\n\t\t\tsetActivationState(0);\n\t\t}\n\t}\n\n\tSIMD_FORCE_INLINE bool wantsSleeping()\n\t{\n\t\tif (getActivationState() == DISABLE_DEACTIVATION)\n\t\t\treturn false;\n\n\t\t//disable deactivation\n\t\tif (gDisableDeactivation || (gDeactivationTime == btScalar(0.)))\n\t\t\treturn false;\n\n\t\tif ((getActivationState() == ISLAND_SLEEPING) || (getActivationState() == WANTS_DEACTIVATION))\n\t\t\treturn true;\n\n\t\tif (m_deactivationTime > gDeactivationTime)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tconst btBroadphaseProxy* getBroadphaseProxy() const\n\t{\n\t\treturn m_broadphaseHandle;\n\t}\n\tbtBroadphaseProxy* getBroadphaseProxy()\n\t{\n\t\treturn m_broadphaseHandle;\n\t}\n\tvoid setNewBroadphaseProxy(btBroadphaseProxy* broadphaseProxy)\n\t{\n\t\tm_broadphaseHandle = broadphaseProxy;\n\t}\n\n\t//btMotionState allows to automatic synchronize the world transform for active objects\n\tbtMotionState* getMotionState()\n\t{\n\t\treturn m_optionalMotionState;\n\t}\n\tconst btMotionState* getMotionState() const\n\t{\n\t\treturn m_optionalMotionState;\n\t}\n\tvoid setMotionState(btMotionState* motionState)\n\t{\n\t\tm_optionalMotionState = motionState;\n\t\tif (m_optionalMotionState)\n\t\t\tmotionState->getWorldTransform(m_worldTransform);\n\t}\n\n\t//for experimental overriding of friction/contact solver func\n\tint m_contactSolverType;\n\tint m_frictionSolverType;\n\n\tvoid setAngularFactor(const btVector3& angFac)\n\t{\n\t\tm_updateRevision++;\n\t\tm_angularFactor = angFac;\n\t}\n\n\tvoid setAngularFactor(btScalar angFac)\n\t{\n\t\tm_updateRevision++;\n\t\tm_angularFactor.setValue(angFac, angFac, angFac);\n\t}\n\tconst btVector3& getAngularFactor() const\n\t{\n\t\treturn m_angularFactor;\n\t}\n\n\t//is this rigidbody added to a btCollisionWorld/btDynamicsWorld/btBroadphase?\n\tbool isInWorld() const\n\t{\n\t\treturn (getBroadphaseProxy() != 0);\n\t}\n\n\tvoid addConstraintRef(btTypedConstraint* c);\n\tvoid removeConstraintRef(btTypedConstraint* c);\n\n\tbtTypedConstraint* getConstraintRef(int index)\n\t{\n\t\treturn m_constraintRefs[index];\n\t}\n\n\tint getNumConstraintRefs() const\n\t{\n\t\treturn m_constraintRefs.size();\n\t}\n\n\tvoid setFlags(int flags)\n\t{\n\t\tm_rigidbodyFlags = flags;\n\t}\n\n\tint getFlags() const\n\t{\n\t\treturn m_rigidbodyFlags;\n\t}\n\n\t///perform implicit force computation in world space\n\tbtVector3 computeGyroscopicImpulseImplicit_World(btScalar dt) const;\n\n\t///perform implicit force computation in body space (inertial frame)\n\tbtVector3 computeGyroscopicImpulseImplicit_Body(btScalar step) const;\n\n\t///explicit version is best avoided, it gains energy\n\tbtVector3 computeGyroscopicForceExplicit(btScalar maxGyroscopicForce) const;\n\tbtVector3 getLocalInertia() const;\n\n\t///////////////////////////////////////////////\n\n\tvirtual int calculateSerializeBufferSize() const;\n\n\t///fills the dataBuffer and returns the struct name (and 0 on failure)\n\tvirtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;\n\n\tvirtual void serializeSingleObject(class btSerializer* serializer) const;\n};\n\n//@todo add m_optionalMotionState and m_constraintRefs to btRigidBodyData\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btRigidBodyFloatData\n{\n\tbtCollisionObjectFloatData m_collisionObjectData;\n\tbtMatrix3x3FloatData m_invInertiaTensorWorld;\n\tbtVector3FloatData m_linearVelocity;\n\tbtVector3FloatData m_angularVelocity;\n\tbtVector3FloatData m_angularFactor;\n\tbtVector3FloatData m_linearFactor;\n\tbtVector3FloatData m_gravity;\n\tbtVector3FloatData m_gravity_acceleration;\n\tbtVector3FloatData m_invInertiaLocal;\n\tbtVector3FloatData m_totalForce;\n\tbtVector3FloatData m_totalTorque;\n\tfloat m_inverseMass;\n\tfloat m_linearDamping;\n\tfloat m_angularDamping;\n\tfloat m_additionalDampingFactor;\n\tfloat m_additionalLinearDampingThresholdSqr;\n\tfloat m_additionalAngularDampingThresholdSqr;\n\tfloat m_additionalAngularDampingFactor;\n\tfloat m_linearSleepingThreshold;\n\tfloat m_angularSleepingThreshold;\n\tint m_additionalDamping;\n};\n\n///do not change those serialization structures, it requires an updated sBulletDNAstr/sBulletDNAstr64\nstruct btRigidBodyDoubleData\n{\n\tbtCollisionObjectDoubleData m_collisionObjectData;\n\tbtMatrix3x3DoubleData m_invInertiaTensorWorld;\n\tbtVector3DoubleData m_linearVelocity;\n\tbtVector3DoubleData m_angularVelocity;\n\tbtVector3DoubleData m_angularFactor;\n\tbtVector3DoubleData m_linearFactor;\n\tbtVector3DoubleData m_gravity;\n\tbtVector3DoubleData m_gravity_acceleration;\n\tbtVector3DoubleData m_invInertiaLocal;\n\tbtVector3DoubleData m_totalForce;\n\tbtVector3DoubleData m_totalTorque;\n\tdouble m_inverseMass;\n\tdouble m_linearDamping;\n\tdouble m_angularDamping;\n\tdouble m_additionalDampingFactor;\n\tdouble m_additionalLinearDampingThresholdSqr;\n\tdouble m_additionalAngularDampingThresholdSqr;\n\tdouble m_additionalAngularDampingFactor;\n\tdouble m_linearSleepingThreshold;\n\tdouble m_angularSleepingThreshold;\n\tint m_additionalDamping;\n\tchar m_padding[4];\n};\n\n#endif  //BT_RIGIDBODY_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMPLE_DYNAMICS_WORLD_H\n#define BT_SIMPLE_DYNAMICS_WORLD_H\n\n#include \"btDynamicsWorld.h\"\n\nclass btDispatcher;\nclass btOverlappingPairCache;\nclass btConstraintSolver;\n\n///The btSimpleDynamicsWorld serves as unit-test and to verify more complicated and optimized dynamics worlds.\n///Please use btDiscreteDynamicsWorld instead\nclass btSimpleDynamicsWorld : public btDynamicsWorld\n{\nprotected:\n\tbtConstraintSolver* m_constraintSolver;\n\n\tbool m_ownsConstraintSolver;\n\n\tvoid predictUnconstraintMotion(btScalar timeStep);\n\n\tvoid integrateTransforms(btScalar timeStep);\n\n\tbtVector3 m_gravity;\n\npublic:\n\t///this btSimpleDynamicsWorld constructor creates dispatcher, broadphase pairCache and constraintSolver\n\tbtSimpleDynamicsWorld(btDispatcher* dispatcher, btBroadphaseInterface* pairCache, btConstraintSolver* constraintSolver, btCollisionConfiguration* collisionConfiguration);\n\n\tvirtual ~btSimpleDynamicsWorld();\n\n\t///maxSubSteps/fixedTimeStep for interpolation is currently ignored for btSimpleDynamicsWorld, use btDiscreteDynamicsWorld instead\n\tvirtual int stepSimulation(btScalar timeStep, int maxSubSteps = 1, btScalar fixedTimeStep = btScalar(1.) / btScalar(60.));\n\n\tvirtual void setGravity(const btVector3& gravity);\n\n\tvirtual btVector3 getGravity() const;\n\n\tvirtual void addRigidBody(btRigidBody* body);\n\n\tvirtual void addRigidBody(btRigidBody* body, int group, int mask);\n\n\tvirtual void removeRigidBody(btRigidBody* body);\n\n\tvirtual void debugDrawWorld();\n\n\tvirtual void addAction(btActionInterface* action);\n\n\tvirtual void removeAction(btActionInterface* action);\n\n\t///removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject\n\tvirtual void removeCollisionObject(btCollisionObject* collisionObject);\n\n\tvirtual void updateAabbs();\n\n\tvirtual void synchronizeMotionStates();\n\n\tvirtual void setConstraintSolver(btConstraintSolver* solver);\n\n\tvirtual btConstraintSolver* getConstraintSolver();\n\n\tvirtual btDynamicsWorldType getWorldType() const\n\t{\n\t\treturn BT_SIMPLE_DYNAMICS_WORLD;\n\t}\n\n\tvirtual void clearForces();\n};\n\n#endif  //BT_SIMPLE_DYNAMICS_WORLD_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Dynamics/btSimulationIslandManagerMt.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMULATION_ISLAND_MANAGER_MT_H\n#define BT_SIMULATION_ISLAND_MANAGER_MT_H\n\n#include \"BulletCollision/CollisionDispatch/btSimulationIslandManager.h\"\n\nclass btTypedConstraint;\nclass btConstraintSolver;\nstruct btContactSolverInfo;\nclass btIDebugDraw;\n\n///\n/// SimulationIslandManagerMt -- Multithread capable version of SimulationIslandManager\n///                       Splits the world up into islands which can be solved in parallel.\n///                       In order to solve islands in parallel, an IslandDispatch function\n///                       must be provided which will dispatch calls to multiple threads.\n///                       The amount of parallelism that can be achieved depends on the number\n///                       of islands. If only a single island exists, then no parallelism is\n///                       possible.\n///\nclass btSimulationIslandManagerMt : public btSimulationIslandManager\n{\npublic:\n\tstruct Island\n\t{\n\t\t// a simulation island consisting of bodies, manifolds and constraints,\n\t\t// to be passed into a constraint solver.\n\t\tbtAlignedObjectArray<btCollisionObject*> bodyArray;\n\t\tbtAlignedObjectArray<btPersistentManifold*> manifoldArray;\n\t\tbtAlignedObjectArray<btTypedConstraint*> constraintArray;\n\t\tint id;  // island id\n\t\tbool isSleeping;\n\n\t\tvoid append(const Island& other);  // add bodies, manifolds, constraints to my own\n\t};\n\tstruct SolverParams\n\t{\n\t\tbtConstraintSolver* m_solverPool;\n\t\tbtConstraintSolver* m_solverMt;\n\t\tbtContactSolverInfo* m_solverInfo;\n\t\tbtIDebugDraw* m_debugDrawer;\n\t\tbtDispatcher* m_dispatcher;\n\t};\n\tstatic void solveIsland(btConstraintSolver* solver, Island& island, const SolverParams& solverParams);\n\n\ttypedef void (*IslandDispatchFunc)(btAlignedObjectArray<Island*>* islands, const SolverParams& solverParams);\n\tstatic void serialIslandDispatch(btAlignedObjectArray<Island*>* islandsPtr, const SolverParams& solverParams);\n\tstatic void parallelIslandDispatch(btAlignedObjectArray<Island*>* islandsPtr, const SolverParams& solverParams);\n\nprotected:\n\tbtAlignedObjectArray<Island*> m_allocatedIslands;    // owner of all Islands\n\tbtAlignedObjectArray<Island*> m_activeIslands;       // islands actively in use\n\tbtAlignedObjectArray<Island*> m_freeIslands;         // islands ready to be reused\n\tbtAlignedObjectArray<Island*> m_lookupIslandFromId;  // big lookup table to map islandId to Island pointer\n\tIsland* m_batchIsland;\n\tint m_minimumSolverBatchSize;\n\tint m_batchIslandMinBodyCount;\n\tIslandDispatchFunc m_islandDispatch;\n\n\tIsland* getIsland(int id);\n\tvirtual Island* allocateIsland(int id, int numBodies);\n\tvirtual void initIslandPools();\n\tvirtual void addBodiesToIslands(btCollisionWorld* collisionWorld);\n\tvirtual void addManifoldsToIslands(btDispatcher* dispatcher);\n\tvirtual void addConstraintsToIslands(btAlignedObjectArray<btTypedConstraint*>& constraints);\n\tvirtual void mergeIslands();\n\npublic:\n\tbtSimulationIslandManagerMt();\n\tvirtual ~btSimulationIslandManagerMt();\n\n\tvirtual void buildAndProcessIslands(btDispatcher* dispatcher,\n\t\t\t\t\t\t\t\t\t\tbtCollisionWorld* collisionWorld,\n\t\t\t\t\t\t\t\t\t\tbtAlignedObjectArray<btTypedConstraint*>& constraints,\n\t\t\t\t\t\t\t\t\t\tconst SolverParams& solverParams);\n\n\tvirtual void buildIslands(btDispatcher* dispatcher, btCollisionWorld* colWorld);\n\n\tint getMinimumSolverBatchSize() const\n\t{\n\t\treturn m_minimumSolverBatchSize;\n\t}\n\tvoid setMinimumSolverBatchSize(int sz)\n\t{\n\t\tm_minimumSolverBatchSize = sz;\n\t}\n\tIslandDispatchFunc getIslandDispatchFunction() const\n\t{\n\t\treturn m_islandDispatch;\n\t}\n\t// allow users to set their own dispatch function for multithreaded dispatch\n\tvoid setIslandDispatchFunction(IslandDispatchFunc func)\n\t{\n\t\tm_islandDispatch = func;\n\t}\n};\n\n#endif  //BT_SIMULATION_ISLAND_MANAGER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h",
    "content": "/*\n * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/\n *\n * Permission to use, copy, modify, distribute and sell this software\n * and its documentation for any purpose is hereby granted without fee,\n * provided that the above copyright notice appear in all copies.\n * Erwin Coumans makes no representations about the suitability \n * of this software for any purpose.  \n * It is provided \"as is\" without express or implied warranty.\n*/\n#ifndef BT_RAYCASTVEHICLE_H\n#define BT_RAYCASTVEHICLE_H\n\n#include \"BulletDynamics/Dynamics/btRigidBody.h\"\n#include \"BulletDynamics/ConstraintSolver/btTypedConstraint.h\"\n#include \"btVehicleRaycaster.h\"\nclass btDynamicsWorld;\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include \"btWheelInfo.h\"\n#include \"BulletDynamics/Dynamics/btActionInterface.h\"\n\n//class btVehicleTuning;\n\n///rayCast vehicle, very special constraint that turn a rigidbody into a vehicle.\nclass btRaycastVehicle : public btActionInterface\n{\n\tbtAlignedObjectArray<btVector3> m_forwardWS;\n\tbtAlignedObjectArray<btVector3> m_axle;\n\tbtAlignedObjectArray<btScalar> m_forwardImpulse;\n\tbtAlignedObjectArray<btScalar> m_sideImpulse;\n\n\t///backwards compatibility\n\tint m_userConstraintType;\n\tint m_userConstraintId;\n\npublic:\n\tclass btVehicleTuning\n\t{\n\tpublic:\n\t\tbtVehicleTuning()\n\t\t\t: m_suspensionStiffness(btScalar(5.88)),\n\t\t\t  m_suspensionCompression(btScalar(0.83)),\n\t\t\t  m_suspensionDamping(btScalar(0.88)),\n\t\t\t  m_maxSuspensionTravelCm(btScalar(500.)),\n\t\t\t  m_frictionSlip(btScalar(10.5)),\n\t\t\t  m_maxSuspensionForce(btScalar(6000.))\n\t\t{\n\t\t}\n\t\tbtScalar m_suspensionStiffness;\n\t\tbtScalar m_suspensionCompression;\n\t\tbtScalar m_suspensionDamping;\n\t\tbtScalar m_maxSuspensionTravelCm;\n\t\tbtScalar m_frictionSlip;\n\t\tbtScalar m_maxSuspensionForce;\n\t};\n\nprivate:\n\tbtVehicleRaycaster* m_vehicleRaycaster;\n\tbtScalar m_pitchControl;\n\tbtScalar m_steeringValue;\n\tbtScalar m_currentVehicleSpeedKmHour;\n\n\tbtRigidBody* m_chassisBody;\n\n\tint m_indexRightAxis;\n\tint m_indexUpAxis;\n\tint m_indexForwardAxis;\n\n\tvoid defaultInit(const btVehicleTuning& tuning);\n\npublic:\n\t//constructor to create a car from an existing rigidbody\n\tbtRaycastVehicle(const btVehicleTuning& tuning, btRigidBody* chassis, btVehicleRaycaster* raycaster);\n\n\tvirtual ~btRaycastVehicle();\n\n\t///btActionInterface interface\n\tvirtual void updateAction(btCollisionWorld* collisionWorld, btScalar step)\n\t{\n\t\t(void)collisionWorld;\n\t\tupdateVehicle(step);\n\t}\n\n\t///btActionInterface interface\n\tvoid debugDraw(btIDebugDraw* debugDrawer);\n\n\tconst btTransform& getChassisWorldTransform() const;\n\n\tbtScalar rayCast(btWheelInfo& wheel);\n\n\tvirtual void updateVehicle(btScalar step);\n\n\tvoid resetSuspension();\n\n\tbtScalar getSteeringValue(int wheel) const;\n\n\tvoid setSteeringValue(btScalar steering, int wheel);\n\n\tvoid applyEngineForce(btScalar force, int wheel);\n\n\tconst btTransform& getWheelTransformWS(int wheelIndex) const;\n\n\tvoid updateWheelTransform(int wheelIndex, bool interpolatedTransform = true);\n\n\t//\tvoid\tsetRaycastWheelInfo( int wheelIndex , bool isInContact, const btVector3& hitPoint, const btVector3& hitNormal,btScalar depth);\n\n\tbtWheelInfo& addWheel(const btVector3& connectionPointCS0, const btVector3& wheelDirectionCS0, const btVector3& wheelAxleCS, btScalar suspensionRestLength, btScalar wheelRadius, const btVehicleTuning& tuning, bool isFrontWheel);\n\n\tinline int getNumWheels() const\n\t{\n\t\treturn int(m_wheelInfo.size());\n\t}\n\n\tbtAlignedObjectArray<btWheelInfo> m_wheelInfo;\n\n\tconst btWheelInfo& getWheelInfo(int index) const;\n\n\tbtWheelInfo& getWheelInfo(int index);\n\n\tvoid updateWheelTransformsWS(btWheelInfo& wheel, bool interpolatedTransform = true);\n\n\tvoid setBrake(btScalar brake, int wheelIndex);\n\n\tvoid setPitchControl(btScalar pitch)\n\t{\n\t\tm_pitchControl = pitch;\n\t}\n\n\tvoid updateSuspension(btScalar deltaTime);\n\n\tvirtual void updateFriction(btScalar timeStep);\n\n\tinline btRigidBody* getRigidBody()\n\t{\n\t\treturn m_chassisBody;\n\t}\n\n\tconst btRigidBody* getRigidBody() const\n\t{\n\t\treturn m_chassisBody;\n\t}\n\n\tinline int getRightAxis() const\n\t{\n\t\treturn m_indexRightAxis;\n\t}\n\tinline int getUpAxis() const\n\t{\n\t\treturn m_indexUpAxis;\n\t}\n\n\tinline int getForwardAxis() const\n\t{\n\t\treturn m_indexForwardAxis;\n\t}\n\n\t///Worldspace forward vector\n\tbtVector3 getForwardVector() const\n\t{\n\t\tconst btTransform& chassisTrans = getChassisWorldTransform();\n\n\t\tbtVector3 forwardW(\n\t\t\tchassisTrans.getBasis()[0][m_indexForwardAxis],\n\t\t\tchassisTrans.getBasis()[1][m_indexForwardAxis],\n\t\t\tchassisTrans.getBasis()[2][m_indexForwardAxis]);\n\n\t\treturn forwardW;\n\t}\n\n\t///Velocity of vehicle (positive if velocity vector has same direction as foward vector)\n\tbtScalar getCurrentSpeedKmHour() const\n\t{\n\t\treturn m_currentVehicleSpeedKmHour;\n\t}\n\n\tvirtual void setCoordinateSystem(int rightIndex, int upIndex, int forwardIndex)\n\t{\n\t\tm_indexRightAxis = rightIndex;\n\t\tm_indexUpAxis = upIndex;\n\t\tm_indexForwardAxis = forwardIndex;\n\t}\n\n\t///backwards compatibility\n\tint getUserConstraintType() const\n\t{\n\t\treturn m_userConstraintType;\n\t}\n\n\tvoid setUserConstraintType(int userConstraintType)\n\t{\n\t\tm_userConstraintType = userConstraintType;\n\t};\n\n\tvoid setUserConstraintId(int uid)\n\t{\n\t\tm_userConstraintId = uid;\n\t}\n\n\tint getUserConstraintId() const\n\t{\n\t\treturn m_userConstraintId;\n\t}\n};\n\nclass btDefaultVehicleRaycaster : public btVehicleRaycaster\n{\n\tbtDynamicsWorld* m_dynamicsWorld;\n\npublic:\n\tbtDefaultVehicleRaycaster(btDynamicsWorld* world)\n\t\t: m_dynamicsWorld(world)\n\t{\n\t}\n\n\tvirtual void* castRay(const btVector3& from, const btVector3& to, btVehicleRaycasterResult& result);\n};\n\n#endif  //BT_RAYCASTVEHICLE_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h",
    "content": "/*\n * Copyright (c) 2005 Erwin Coumans http://bulletphysics.org\n *\n * Permission to use, copy, modify, distribute and sell this software\n * and its documentation for any purpose is hereby granted without fee,\n * provided that the above copyright notice appear in all copies.\n * Erwin Coumans makes no representations about the suitability \n * of this software for any purpose.  \n * It is provided \"as is\" without express or implied warranty.\n*/\n#ifndef BT_VEHICLE_RAYCASTER_H\n#define BT_VEHICLE_RAYCASTER_H\n\n#include \"LinearMath/btVector3.h\"\n\n/// btVehicleRaycaster is provides interface for between vehicle simulation and raycasting\nstruct btVehicleRaycaster\n{\n\tvirtual ~btVehicleRaycaster()\n\t{\n\t}\n\tstruct btVehicleRaycasterResult\n\t{\n\t\tbtVehicleRaycasterResult() : m_distFraction(btScalar(-1.)){};\n\t\tbtVector3 m_hitPointInWorld;\n\t\tbtVector3 m_hitNormalInWorld;\n\t\tbtScalar m_distFraction;\n\t};\n\n\tvirtual void* castRay(const btVector3& from, const btVector3& to, btVehicleRaycasterResult& result) = 0;\n};\n\n#endif  //BT_VEHICLE_RAYCASTER_H\n"
  },
  {
    "path": "libraries/bullet/BulletDynamics/Vehicle/btWheelInfo.h",
    "content": "/*\n * Copyright (c) 2005 Erwin Coumans http://continuousphysics.com/Bullet/\n *\n * Permission to use, copy, modify, distribute and sell this software\n * and its documentation for any purpose is hereby granted without fee,\n * provided that the above copyright notice appear in all copies.\n * Erwin Coumans makes no representations about the suitability \n * of this software for any purpose.  \n * It is provided \"as is\" without express or implied warranty.\n*/\n#ifndef BT_WHEEL_INFO_H\n#define BT_WHEEL_INFO_H\n\n#include \"LinearMath/btVector3.h\"\n#include \"LinearMath/btTransform.h\"\n\nclass btRigidBody;\n\nstruct btWheelInfoConstructionInfo\n{\n\tbtVector3 m_chassisConnectionCS;\n\tbtVector3 m_wheelDirectionCS;\n\tbtVector3 m_wheelAxleCS;\n\tbtScalar m_suspensionRestLength;\n\tbtScalar m_maxSuspensionTravelCm;\n\tbtScalar m_wheelRadius;\n\n\tbtScalar m_suspensionStiffness;\n\tbtScalar m_wheelsDampingCompression;\n\tbtScalar m_wheelsDampingRelaxation;\n\tbtScalar m_frictionSlip;\n\tbtScalar m_maxSuspensionForce;\n\tbool m_bIsFrontWheel;\n};\n\n/// btWheelInfo contains information per wheel about friction and suspension.\nstruct btWheelInfo\n{\n\tstruct RaycastInfo\n\t{\n\t\t//set by raycaster\n\t\tbtVector3 m_contactNormalWS;  //contactnormal\n\t\tbtVector3 m_contactPointWS;   //raycast hitpoint\n\t\tbtScalar m_suspensionLength;\n\t\tbtVector3 m_hardPointWS;       //raycast starting point\n\t\tbtVector3 m_wheelDirectionWS;  //direction in worldspace\n\t\tbtVector3 m_wheelAxleWS;       // axle in worldspace\n\t\tbool m_isInContact;\n\t\tvoid* m_groundObject;  //could be general void* ptr\n\t};\n\n\tRaycastInfo m_raycastInfo;\n\n\tbtTransform m_worldTransform;\n\n\tbtVector3 m_chassisConnectionPointCS;  //const\n\tbtVector3 m_wheelDirectionCS;          //const\n\tbtVector3 m_wheelAxleCS;               // const or modified by steering\n\tbtScalar m_suspensionRestLength1;      //const\n\tbtScalar m_maxSuspensionTravelCm;\n\tbtScalar getSuspensionRestLength() const;\n\tbtScalar m_wheelsRadius;              //const\n\tbtScalar m_suspensionStiffness;       //const\n\tbtScalar m_wheelsDampingCompression;  //const\n\tbtScalar m_wheelsDampingRelaxation;   //const\n\tbtScalar m_frictionSlip;\n\tbtScalar m_steering;\n\tbtScalar m_rotation;\n\tbtScalar m_deltaRotation;\n\tbtScalar m_rollInfluence;\n\tbtScalar m_maxSuspensionForce;\n\n\tbtScalar m_engineForce;\n\n\tbtScalar m_brake;\n\n\tbool m_bIsFrontWheel;\n\n\tvoid* m_clientInfo;  //can be used to store pointer to sync transforms...\n\n\tbtWheelInfo() {}\n\n\tbtWheelInfo(btWheelInfoConstructionInfo& ci)\n\n\t{\n\t\tm_suspensionRestLength1 = ci.m_suspensionRestLength;\n\t\tm_maxSuspensionTravelCm = ci.m_maxSuspensionTravelCm;\n\n\t\tm_wheelsRadius = ci.m_wheelRadius;\n\t\tm_suspensionStiffness = ci.m_suspensionStiffness;\n\t\tm_wheelsDampingCompression = ci.m_wheelsDampingCompression;\n\t\tm_wheelsDampingRelaxation = ci.m_wheelsDampingRelaxation;\n\t\tm_chassisConnectionPointCS = ci.m_chassisConnectionCS;\n\t\tm_wheelDirectionCS = ci.m_wheelDirectionCS;\n\t\tm_wheelAxleCS = ci.m_wheelAxleCS;\n\t\tm_frictionSlip = ci.m_frictionSlip;\n\t\tm_steering = btScalar(0.);\n\t\tm_engineForce = btScalar(0.);\n\t\tm_rotation = btScalar(0.);\n\t\tm_deltaRotation = btScalar(0.);\n\t\tm_brake = btScalar(0.);\n\t\tm_rollInfluence = btScalar(0.1);\n\t\tm_bIsFrontWheel = ci.m_bIsFrontWheel;\n\t\tm_maxSuspensionForce = ci.m_maxSuspensionForce;\n\t}\n\n\tvoid updateWheel(const btRigidBody& chassis, RaycastInfo& raycastInfo);\n\n\tbtScalar m_clippedInvContactDotSuspension;\n\tbtScalar m_suspensionRelativeVelocity;\n\t//calculated by suspension\n\tbtScalar m_wheelsSuspensionForce;\n\tbtScalar m_skidInfo;\n};\n\n#endif  //BT_WHEEL_INFO_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/TaskScheduler/btThreadSupportInterface.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2018 Erwin Coumans  http://bulletphysics.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_THREAD_SUPPORT_INTERFACE_H\n#define BT_THREAD_SUPPORT_INTERFACE_H\n\nclass btCriticalSection\n{\npublic:\n\tbtCriticalSection() {}\n\tvirtual ~btCriticalSection() {}\n\n\tvirtual void lock() = 0;\n\tvirtual void unlock() = 0;\n};\n\nclass btThreadSupportInterface\n{\npublic:\n\tvirtual ~btThreadSupportInterface() {}\n\n\tvirtual int getNumWorkerThreads() const = 0;            // number of worker threads (total number of logical processors - 1)\n\tvirtual int getCacheFriendlyNumThreads() const = 0;     // the number of logical processors sharing a single L3 cache\n\tvirtual int getLogicalToPhysicalCoreRatio() const = 0;  // the number of logical processors per physical processor (usually 1 or 2)\n\tvirtual void runTask(int threadIndex, void* userData) = 0;\n\tvirtual void waitForAllTasks() = 0;\n\n\tvirtual btCriticalSection* createCriticalSection() = 0;\n\tvirtual void deleteCriticalSection(btCriticalSection* criticalSection) = 0;\n\n\ttypedef void (*ThreadFunc)(void* userPtr);\n\n\tstruct ConstructionInfo\n\t{\n\t\tConstructionInfo(const char* uniqueName,\n\t\t\t\t\t\t ThreadFunc userThreadFunc,\n\t\t\t\t\t\t int threadStackSize = 65535)\n\t\t\t: m_uniqueName(uniqueName),\n\t\t\t  m_userThreadFunc(userThreadFunc),\n\t\t\t  m_threadStackSize(threadStackSize)\n\t\t{\n\t\t}\n\n\t\tconst char* m_uniqueName;\n\t\tThreadFunc m_userThreadFunc;\n\t\tint m_threadStackSize;\n\t};\n\n\tstatic btThreadSupportInterface* create(const ConstructionInfo& info);\n};\n\n#endif  //BT_THREAD_SUPPORT_INTERFACE_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btAabbUtil2.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_AABB_UTIL2\n#define BT_AABB_UTIL2\n\n#include \"btTransform.h\"\n#include \"btVector3.h\"\n#include \"btMinMax.h\"\n\nSIMD_FORCE_INLINE void AabbExpand(btVector3& aabbMin,\n\t\t\t\t\t\t\t\t  btVector3& aabbMax,\n\t\t\t\t\t\t\t\t  const btVector3& expansionMin,\n\t\t\t\t\t\t\t\t  const btVector3& expansionMax)\n{\n\taabbMin = aabbMin + expansionMin;\n\taabbMax = aabbMax + expansionMax;\n}\n\n/// conservative test for overlap between two aabbs\nSIMD_FORCE_INLINE bool TestPointAgainstAabb2(const btVector3& aabbMin1, const btVector3& aabbMax1,\n\t\t\t\t\t\t\t\t\t\t\t const btVector3& point)\n{\n\tbool overlap = true;\n\toverlap = (aabbMin1.getX() > point.getX() || aabbMax1.getX() < point.getX()) ? false : overlap;\n\toverlap = (aabbMin1.getZ() > point.getZ() || aabbMax1.getZ() < point.getZ()) ? false : overlap;\n\toverlap = (aabbMin1.getY() > point.getY() || aabbMax1.getY() < point.getY()) ? false : overlap;\n\treturn overlap;\n}\n\n/// conservative test for overlap between two aabbs\nSIMD_FORCE_INLINE bool TestAabbAgainstAabb2(const btVector3& aabbMin1, const btVector3& aabbMax1,\n\t\t\t\t\t\t\t\t\t\t\tconst btVector3& aabbMin2, const btVector3& aabbMax2)\n{\n\tbool overlap = true;\n\toverlap = (aabbMin1.getX() > aabbMax2.getX() || aabbMax1.getX() < aabbMin2.getX()) ? false : overlap;\n\toverlap = (aabbMin1.getZ() > aabbMax2.getZ() || aabbMax1.getZ() < aabbMin2.getZ()) ? false : overlap;\n\toverlap = (aabbMin1.getY() > aabbMax2.getY() || aabbMax1.getY() < aabbMin2.getY()) ? false : overlap;\n\treturn overlap;\n}\n\n/// conservative test for overlap between triangle and aabb\nSIMD_FORCE_INLINE bool TestTriangleAgainstAabb2(const btVector3* vertices,\n\t\t\t\t\t\t\t\t\t\t\t\tconst btVector3& aabbMin, const btVector3& aabbMax)\n{\n\tconst btVector3& p1 = vertices[0];\n\tconst btVector3& p2 = vertices[1];\n\tconst btVector3& p3 = vertices[2];\n\n\tif (btMin(btMin(p1[0], p2[0]), p3[0]) > aabbMax[0]) return false;\n\tif (btMax(btMax(p1[0], p2[0]), p3[0]) < aabbMin[0]) return false;\n\n\tif (btMin(btMin(p1[2], p2[2]), p3[2]) > aabbMax[2]) return false;\n\tif (btMax(btMax(p1[2], p2[2]), p3[2]) < aabbMin[2]) return false;\n\n\tif (btMin(btMin(p1[1], p2[1]), p3[1]) > aabbMax[1]) return false;\n\tif (btMax(btMax(p1[1], p2[1]), p3[1]) < aabbMin[1]) return false;\n\treturn true;\n}\n\nSIMD_FORCE_INLINE int btOutcode(const btVector3& p, const btVector3& halfExtent)\n{\n\treturn (p.getX() < -halfExtent.getX() ? 0x01 : 0x0) |\n\t\t   (p.getX() > halfExtent.getX() ? 0x08 : 0x0) |\n\t\t   (p.getY() < -halfExtent.getY() ? 0x02 : 0x0) |\n\t\t   (p.getY() > halfExtent.getY() ? 0x10 : 0x0) |\n\t\t   (p.getZ() < -halfExtent.getZ() ? 0x4 : 0x0) |\n\t\t   (p.getZ() > halfExtent.getZ() ? 0x20 : 0x0);\n}\n\nSIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom,\n\t\t\t\t\t\t\t\t  const btVector3& rayInvDirection,\n\t\t\t\t\t\t\t\t  const unsigned int raySign[3],\n\t\t\t\t\t\t\t\t  const btVector3 bounds[2],\n\t\t\t\t\t\t\t\t  btScalar& tmin,\n\t\t\t\t\t\t\t\t  btScalar lambda_min,\n\t\t\t\t\t\t\t\t  btScalar lambda_max)\n{\n\tbtScalar tmax, tymin, tymax, tzmin, tzmax;\n\ttmin = (bounds[raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();\n\ttmax = (bounds[1 - raySign[0]].getX() - rayFrom.getX()) * rayInvDirection.getX();\n\ttymin = (bounds[raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();\n\ttymax = (bounds[1 - raySign[1]].getY() - rayFrom.getY()) * rayInvDirection.getY();\n\n\tif ((tmin > tymax) || (tymin > tmax))\n\t\treturn false;\n\n\tif (tymin > tmin)\n\t\ttmin = tymin;\n\n\tif (tymax < tmax)\n\t\ttmax = tymax;\n\n\ttzmin = (bounds[raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();\n\ttzmax = (bounds[1 - raySign[2]].getZ() - rayFrom.getZ()) * rayInvDirection.getZ();\n\n\tif ((tmin > tzmax) || (tzmin > tmax))\n\t\treturn false;\n\tif (tzmin > tmin)\n\t\ttmin = tzmin;\n\tif (tzmax < tmax)\n\t\ttmax = tzmax;\n\treturn ((tmin < lambda_max) && (tmax > lambda_min));\n}\n\nSIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom,\n\t\t\t\t\t\t\t\t const btVector3& rayTo,\n\t\t\t\t\t\t\t\t const btVector3& aabbMin,\n\t\t\t\t\t\t\t\t const btVector3& aabbMax,\n\t\t\t\t\t\t\t\t btScalar& param, btVector3& normal)\n{\n\tbtVector3 aabbHalfExtent = (aabbMax - aabbMin) * btScalar(0.5);\n\tbtVector3 aabbCenter = (aabbMax + aabbMin) * btScalar(0.5);\n\tbtVector3 source = rayFrom - aabbCenter;\n\tbtVector3 target = rayTo - aabbCenter;\n\tint sourceOutcode = btOutcode(source, aabbHalfExtent);\n\tint targetOutcode = btOutcode(target, aabbHalfExtent);\n\tif ((sourceOutcode & targetOutcode) == 0x0)\n\t{\n\t\tbtScalar lambda_enter = btScalar(0.0);\n\t\tbtScalar lambda_exit = param;\n\t\tbtVector3 r = target - source;\n\t\tint i;\n\t\tbtScalar normSign = 1;\n\t\tbtVector3 hitNormal(0, 0, 0);\n\t\tint bit = 1;\n\n\t\tfor (int j = 0; j < 2; j++)\n\t\t{\n\t\t\tfor (i = 0; i != 3; ++i)\n\t\t\t{\n\t\t\t\tif (sourceOutcode & bit)\n\t\t\t\t{\n\t\t\t\t\tbtScalar lambda = (-source[i] - aabbHalfExtent[i] * normSign) / r[i];\n\t\t\t\t\tif (lambda_enter <= lambda)\n\t\t\t\t\t{\n\t\t\t\t\t\tlambda_enter = lambda;\n\t\t\t\t\t\thitNormal.setValue(0, 0, 0);\n\t\t\t\t\t\thitNormal[i] = normSign;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (targetOutcode & bit)\n\t\t\t\t{\n\t\t\t\t\tbtScalar lambda = (-source[i] - aabbHalfExtent[i] * normSign) / r[i];\n\t\t\t\t\tbtSetMin(lambda_exit, lambda);\n\t\t\t\t}\n\t\t\t\tbit <<= 1;\n\t\t\t}\n\t\t\tnormSign = btScalar(-1.);\n\t\t}\n\t\tif (lambda_enter <= lambda_exit)\n\t\t{\n\t\t\tparam = lambda_enter;\n\t\t\tnormal = hitNormal;\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nSIMD_FORCE_INLINE void btTransformAabb(const btVector3& halfExtents, btScalar margin, const btTransform& t, btVector3& aabbMinOut, btVector3& aabbMaxOut)\n{\n\tbtVector3 halfExtentsWithMargin = halfExtents + btVector3(margin, margin, margin);\n\tbtMatrix3x3 abs_b = t.getBasis().absolute();\n\tbtVector3 center = t.getOrigin();\n\tbtVector3 extent = halfExtentsWithMargin.dot3(abs_b[0], abs_b[1], abs_b[2]);\n\taabbMinOut = center - extent;\n\taabbMaxOut = center + extent;\n}\n\nSIMD_FORCE_INLINE void btTransformAabb(const btVector3& localAabbMin, const btVector3& localAabbMax, btScalar margin, const btTransform& trans, btVector3& aabbMinOut, btVector3& aabbMaxOut)\n{\n\tbtAssert(localAabbMin.getX() <= localAabbMax.getX());\n\tbtAssert(localAabbMin.getY() <= localAabbMax.getY());\n\tbtAssert(localAabbMin.getZ() <= localAabbMax.getZ());\n\tbtVector3 localHalfExtents = btScalar(0.5) * (localAabbMax - localAabbMin);\n\tlocalHalfExtents += btVector3(margin, margin, margin);\n\n\tbtVector3 localCenter = btScalar(0.5) * (localAabbMax + localAabbMin);\n\tbtMatrix3x3 abs_b = trans.getBasis().absolute();\n\tbtVector3 center = trans(localCenter);\n\tbtVector3 extent = localHalfExtents.dot3(abs_b[0], abs_b[1], abs_b[2]);\n\taabbMinOut = center - extent;\n\taabbMaxOut = center + extent;\n}\n\n#define USE_BANCHLESS 1\n#ifdef USE_BANCHLESS\n//This block replaces the block below and uses no branches, and replaces the 8 bit return with a 32 bit return for improved performance (~3x on XBox 360)\nSIMD_FORCE_INLINE unsigned testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1, const unsigned short int* aabbMax1, const unsigned short int* aabbMin2, const unsigned short int* aabbMax2)\n{\n\treturn static_cast<unsigned int>(btSelect((unsigned)((aabbMin1[0] <= aabbMax2[0]) & (aabbMax1[0] >= aabbMin2[0]) & (aabbMin1[2] <= aabbMax2[2]) & (aabbMax1[2] >= aabbMin2[2]) & (aabbMin1[1] <= aabbMax2[1]) & (aabbMax1[1] >= aabbMin2[1])),\n\t\t\t\t\t\t\t\t\t\t\t  1, 0));\n}\n#else\nSIMD_FORCE_INLINE bool testQuantizedAabbAgainstQuantizedAabb(const unsigned short int* aabbMin1, const unsigned short int* aabbMax1, const unsigned short int* aabbMin2, const unsigned short int* aabbMax2)\n{\n\tbool overlap = true;\n\toverlap = (aabbMin1[0] > aabbMax2[0] || aabbMax1[0] < aabbMin2[0]) ? false : overlap;\n\toverlap = (aabbMin1[2] > aabbMax2[2] || aabbMax1[2] < aabbMin2[2]) ? false : overlap;\n\toverlap = (aabbMin1[1] > aabbMax2[1] || aabbMax1[1] < aabbMin2[1]) ? false : overlap;\n\treturn overlap;\n}\n#endif  //USE_BANCHLESS\n\n#endif  //BT_AABB_UTIL2\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btAlignedAllocator.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_ALIGNED_ALLOCATOR\n#define BT_ALIGNED_ALLOCATOR\n\n///we probably replace this with our own aligned memory allocator\n///so we replace _aligned_malloc and _aligned_free with our own\n///that is better portable and more predictable\n\n#include \"btScalar.h\"\n\n///BT_DEBUG_MEMORY_ALLOCATIONS preprocessor can be set in build system\n///for regression tests to detect memory leaks\n///#define BT_DEBUG_MEMORY_ALLOCATIONS 1\n#ifdef BT_DEBUG_MEMORY_ALLOCATIONS\n\nint btDumpMemoryLeaks();\n\n#define btAlignedAlloc(a, b) \\\n\tbtAlignedAllocInternal(a, b, __LINE__, __FILE__)\n\n#define btAlignedFree(ptr) \\\n\tbtAlignedFreeInternal(ptr, __LINE__, __FILE__)\n\nvoid* btAlignedAllocInternal(size_t size, int alignment, int line, const char* filename);\n\nvoid btAlignedFreeInternal(void* ptr, int line, const char* filename);\n\n#else\nvoid* btAlignedAllocInternal(size_t size, int alignment);\nvoid btAlignedFreeInternal(void* ptr);\n\n#define btAlignedAlloc(size, alignment) btAlignedAllocInternal(size, alignment)\n#define btAlignedFree(ptr) btAlignedFreeInternal(ptr)\n\n#endif\ntypedef int size_type;\n\ntypedef void*(btAlignedAllocFunc)(size_t size, int alignment);\ntypedef void(btAlignedFreeFunc)(void* memblock);\ntypedef void*(btAllocFunc)(size_t size);\ntypedef void(btFreeFunc)(void* memblock);\n\n///The developer can let all Bullet memory allocations go through a custom memory allocator, using btAlignedAllocSetCustom\nvoid btAlignedAllocSetCustom(btAllocFunc* allocFunc, btFreeFunc* freeFunc);\n///If the developer has already an custom aligned allocator, then btAlignedAllocSetCustomAligned can be used. The default aligned allocator pre-allocates extra memory using the non-aligned allocator, and instruments it.\nvoid btAlignedAllocSetCustomAligned(btAlignedAllocFunc* allocFunc, btAlignedFreeFunc* freeFunc);\n\n///The btAlignedAllocator is a portable class for aligned memory allocations.\n///Default implementations for unaligned and aligned allocations can be overridden by a custom allocator using btAlignedAllocSetCustom and btAlignedAllocSetCustomAligned.\ntemplate <typename T, unsigned Alignment>\nclass btAlignedAllocator\n{\n\ttypedef btAlignedAllocator<T, Alignment> self_type;\n\npublic:\n\t//just going down a list:\n\tbtAlignedAllocator() {}\n\t/*\n\tbtAlignedAllocator( const self_type & ) {}\n\t*/\n\n\ttemplate <typename Other>\n\tbtAlignedAllocator(const btAlignedAllocator<Other, Alignment>&)\n\t{\n\t}\n\n\ttypedef const T* const_pointer;\n\ttypedef const T& const_reference;\n\ttypedef T* pointer;\n\ttypedef T& reference;\n\ttypedef T value_type;\n\n\tpointer address(reference ref) const { return &ref; }\n\tconst_pointer address(const_reference ref) const { return &ref; }\n\tpointer allocate(size_type n, const_pointer* hint = 0)\n\t{\n\t\t(void)hint;\n\t\treturn reinterpret_cast<pointer>(btAlignedAlloc(sizeof(value_type) * n, Alignment));\n\t}\n\tvoid construct(pointer ptr, const value_type& value) { new (ptr) value_type(value); }\n\tvoid deallocate(pointer ptr)\n\t{\n\t\tbtAlignedFree(reinterpret_cast<void*>(ptr));\n\t}\n\tvoid destroy(pointer ptr) { ptr->~value_type(); }\n\n\ttemplate <typename O>\n\tstruct rebind\n\t{\n\t\ttypedef btAlignedAllocator<O, Alignment> other;\n\t};\n\ttemplate <typename O>\n\tself_type& operator=(const btAlignedAllocator<O, Alignment>&)\n\t{\n\t\treturn *this;\n\t}\n\n\tfriend bool operator==(const self_type&, const self_type&) { return true; }\n};\n\n#endif  //BT_ALIGNED_ALLOCATOR\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btAlignedObjectArray.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_OBJECT_ARRAY__\n#define BT_OBJECT_ARRAY__\n\n#include \"btScalar.h\"  // has definitions like SIMD_FORCE_INLINE\n#include \"btAlignedAllocator.h\"\n\n///If the platform doesn't support placement new, you can disable BT_USE_PLACEMENT_NEW\n///then the btAlignedObjectArray doesn't support objects with virtual methods, and non-trivial constructors/destructors\n///You can enable BT_USE_MEMCPY, then swapping elements in the array will use memcpy instead of operator=\n///see discussion here: http://continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1231 and\n///http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1240\n\n#define BT_USE_PLACEMENT_NEW 1\n//#define BT_USE_MEMCPY 1 //disable, because it is cumbersome to find out for each platform where memcpy is defined. It can be in <memory.h> or <string.h> or otherwise...\n#define BT_ALLOW_ARRAY_COPY_OPERATOR  // enabling this can accidently perform deep copies of data if you are not careful\n\n#ifdef BT_USE_MEMCPY\n#include <memory.h>\n#include <string.h>\n#endif  //BT_USE_MEMCPY\n\n#ifdef BT_USE_PLACEMENT_NEW\n#include <new>  //for placement new\n#endif          //BT_USE_PLACEMENT_NEW\n\n///The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods\n///It is developed to replace stl::vector to avoid portability issues, including STL alignment issues to add SIMD/SSE data\ntemplate <typename T>\n//template <class T>\nclass btAlignedObjectArray\n{\n\tbtAlignedAllocator<T, 16> m_allocator;\n\n\tint m_size;\n\tint m_capacity;\n\tT* m_data;\n\t//PCK: added this line\n\tbool m_ownsMemory;\n\n#ifdef BT_ALLOW_ARRAY_COPY_OPERATOR\npublic:\n\tSIMD_FORCE_INLINE btAlignedObjectArray<T>& operator=(const btAlignedObjectArray<T>& other)\n\t{\n\t\tcopyFromArray(other);\n\t\treturn *this;\n\t}\n#else   //BT_ALLOW_ARRAY_COPY_OPERATOR\nprivate:\n\tSIMD_FORCE_INLINE btAlignedObjectArray<T>& operator=(const btAlignedObjectArray<T>& other);\n#endif  //BT_ALLOW_ARRAY_COPY_OPERATOR\n\nprotected:\n\tSIMD_FORCE_INLINE int allocSize(int size)\n\t{\n\t\treturn (size ? size * 2 : 1);\n\t}\n\tSIMD_FORCE_INLINE void copy(int start, int end, T* dest) const\n\t{\n\t\tint i;\n\t\tfor (i = start; i < end; ++i)\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\tnew (&dest[i]) T(m_data[i]);\n#else\n\t\t\tdest[i] = m_data[i];\n#endif  //BT_USE_PLACEMENT_NEW\n\t}\n\n\tSIMD_FORCE_INLINE void init()\n\t{\n\t\t//PCK: added this line\n\t\tm_ownsMemory = true;\n\t\tm_data = 0;\n\t\tm_size = 0;\n\t\tm_capacity = 0;\n\t}\n\tSIMD_FORCE_INLINE void destroy(int first, int last)\n\t{\n\t\tint i;\n\t\tfor (i = first; i < last; i++)\n\t\t{\n\t\t\tm_data[i].~T();\n\t\t}\n\t}\n\n\tSIMD_FORCE_INLINE void* allocate(int size)\n\t{\n\t\tif (size)\n\t\t\treturn m_allocator.allocate(size);\n\t\treturn 0;\n\t}\n\n\tSIMD_FORCE_INLINE void deallocate()\n\t{\n\t\tif (m_data)\n\t\t{\n\t\t\t//PCK: enclosed the deallocation in this block\n\t\t\tif (m_ownsMemory)\n\t\t\t{\n\t\t\t\tm_allocator.deallocate(m_data);\n\t\t\t}\n\t\t\tm_data = 0;\n\t\t}\n\t}\n\npublic:\n\tbtAlignedObjectArray()\n\t{\n\t\tinit();\n\t}\n\n\t~btAlignedObjectArray()\n\t{\n\t\tclear();\n\t}\n\n\t///Generally it is best to avoid using the copy constructor of an btAlignedObjectArray, and use a (const) reference to the array instead.\n\tbtAlignedObjectArray(const btAlignedObjectArray& otherArray)\n\t{\n\t\tinit();\n\n\t\tint otherSize = otherArray.size();\n\t\tresize(otherSize);\n\t\totherArray.copy(0, otherSize, m_data);\n\t}\n\n\t/// return the number of elements in the array\n\tSIMD_FORCE_INLINE int size() const\n\t{\n\t\treturn m_size;\n\t}\n\n\tSIMD_FORCE_INLINE const T& at(int n) const\n\t{\n\t\tbtAssert(n >= 0);\n\t\tbtAssert(n < size());\n\t\treturn m_data[n];\n\t}\n\n\tSIMD_FORCE_INLINE T& at(int n)\n\t{\n\t\tbtAssert(n >= 0);\n\t\tbtAssert(n < size());\n\t\treturn m_data[n];\n\t}\n\n\tSIMD_FORCE_INLINE const T& operator[](int n) const\n\t{\n\t\tbtAssert(n >= 0);\n\t\tbtAssert(n < size());\n\t\treturn m_data[n];\n\t}\n\n\tSIMD_FORCE_INLINE T& operator[](int n)\n\t{\n\t\tbtAssert(n >= 0);\n\t\tbtAssert(n < size());\n\t\treturn m_data[n];\n\t}\n\n\t///clear the array, deallocated memory. Generally it is better to use array.resize(0), to reduce performance overhead of run-time memory (de)allocations.\n\tSIMD_FORCE_INLINE void clear()\n\t{\n\t\tdestroy(0, size());\n\n\t\tdeallocate();\n\n\t\tinit();\n\t}\n\n\tSIMD_FORCE_INLINE void pop_back()\n\t{\n\t\tbtAssert(m_size > 0);\n\t\tm_size--;\n\t\tm_data[m_size].~T();\n\t}\n\n\t///resize changes the number of elements in the array. If the new size is larger, the new elements will be constructed using the optional second argument.\n\t///when the new number of elements is smaller, the destructor will be called, but memory will not be freed, to reduce performance overhead of run-time memory (de)allocations.\n\tSIMD_FORCE_INLINE void resizeNoInitialize(int newsize)\n\t{\n\t\tif (newsize > size())\n\t\t{\n\t\t\treserve(newsize);\n\t\t}\n\t\tm_size = newsize;\n\t}\n\n\tSIMD_FORCE_INLINE void resize(int newsize, const T& fillData = T())\n\t{\n\t\tconst int curSize = size();\n\n\t\tif (newsize < curSize)\n\t\t{\n\t\t\tfor (int i = newsize; i < curSize; i++)\n\t\t\t{\n\t\t\t\tm_data[i].~T();\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (newsize > curSize)\n\t\t\t{\n\t\t\t\treserve(newsize);\n\t\t\t}\n#ifdef BT_USE_PLACEMENT_NEW\n\t\t\tfor (int i = curSize; i < newsize; i++)\n\t\t\t{\n\t\t\t\tnew (&m_data[i]) T(fillData);\n\t\t\t}\n#endif  //BT_USE_PLACEMENT_NEW\n\t\t}\n\n\t\tm_size = newsize;\n\t}\n\tSIMD_FORCE_INLINE T& expandNonInitializing()\n\t{\n\t\tconst int sz = size();\n\t\tif (sz == capacity())\n\t\t{\n\t\t\treserve(allocSize(size()));\n\t\t}\n\t\tm_size++;\n\n\t\treturn m_data[sz];\n\t}\n\n\tSIMD_FORCE_INLINE T& expand(const T& fillValue = T())\n\t{\n\t\tconst int sz = size();\n\t\tif (sz == capacity())\n\t\t{\n\t\t\treserve(allocSize(size()));\n\t\t}\n\t\tm_size++;\n#ifdef BT_USE_PLACEMENT_NEW\n\t\tnew (&m_data[sz]) T(fillValue);  //use the in-place new (not really allocating heap memory)\n#endif\n\n\t\treturn m_data[sz];\n\t}\n\n\tSIMD_FORCE_INLINE void push_back(const T& _Val)\n\t{\n\t\tconst int sz = size();\n\t\tif (sz == capacity())\n\t\t{\n\t\t\treserve(allocSize(size()));\n\t\t}\n\n#ifdef BT_USE_PLACEMENT_NEW\n\t\tnew (&m_data[m_size]) T(_Val);\n#else\n\t\tm_data[size()] = _Val;\n#endif  //BT_USE_PLACEMENT_NEW\n\n\t\tm_size++;\n\t}\n\n\t/// return the pre-allocated (reserved) elements, this is at least as large as the total number of elements,see size() and reserve()\n\tSIMD_FORCE_INLINE int capacity() const\n\t{\n\t\treturn m_capacity;\n\t}\n\n\tSIMD_FORCE_INLINE void reserve(int _Count)\n\t{  // determine new minimum length of allocated storage\n\t\tif (capacity() < _Count)\n\t\t{  // not enough room, reallocate\n\t\t\tT* s = (T*)allocate(_Count);\n\n\t\t\tcopy(0, size(), s);\n\n\t\t\tdestroy(0, size());\n\n\t\t\tdeallocate();\n\n\t\t\t//PCK: added this line\n\t\t\tm_ownsMemory = true;\n\n\t\t\tm_data = s;\n\n\t\t\tm_capacity = _Count;\n\t\t}\n\t}\n\n\tclass less\n\t{\n\tpublic:\n\t\tbool operator()(const T& a, const T& b) const\n\t\t{\n\t\t\treturn (a < b);\n\t\t}\n\t};\n\n\ttemplate <typename L>\n\tvoid quickSortInternal(const L& CompareFunc, int lo, int hi)\n\t{\n\t\t//  lo is the lower index, hi is the upper index\n\t\t//  of the region of array a that is to be sorted\n\t\tint i = lo, j = hi;\n\t\tT x = m_data[(lo + hi) / 2];\n\n\t\t//  partition\n\t\tdo\n\t\t{\n\t\t\twhile (CompareFunc(m_data[i], x))\n\t\t\t\ti++;\n\t\t\twhile (CompareFunc(x, m_data[j]))\n\t\t\t\tj--;\n\t\t\tif (i <= j)\n\t\t\t{\n\t\t\t\tswap(i, j);\n\t\t\t\ti++;\n\t\t\t\tj--;\n\t\t\t}\n\t\t} while (i <= j);\n\n\t\t//  recursion\n\t\tif (lo < j)\n\t\t\tquickSortInternal(CompareFunc, lo, j);\n\t\tif (i < hi)\n\t\t\tquickSortInternal(CompareFunc, i, hi);\n\t}\n\n\ttemplate <typename L>\n\tvoid quickSort(const L& CompareFunc)\n\t{\n\t\t//don't sort 0 or 1 elements\n\t\tif (size() > 1)\n\t\t{\n\t\t\tquickSortInternal(CompareFunc, 0, size() - 1);\n\t\t}\n\t}\n\n\t///heap sort from http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Sort/Heap/\n\ttemplate <typename L>\n\tvoid downHeap(T* pArr, int k, int n, const L& CompareFunc)\n\t{\n\t\t/*  PRE: a[k+1..N] is a heap */\n\t\t/* POST:  a[k..N]  is a heap */\n\n\t\tT temp = pArr[k - 1];\n\t\t/* k has child(s) */\n\t\twhile (k <= n / 2)\n\t\t{\n\t\t\tint child = 2 * k;\n\n\t\t\tif ((child < n) && CompareFunc(pArr[child - 1], pArr[child]))\n\t\t\t{\n\t\t\t\tchild++;\n\t\t\t}\n\t\t\t/* pick larger child */\n\t\t\tif (CompareFunc(temp, pArr[child - 1]))\n\t\t\t{\n\t\t\t\t/* move child up */\n\t\t\t\tpArr[k - 1] = pArr[child - 1];\n\t\t\t\tk = child;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tpArr[k - 1] = temp;\n\t} /*downHeap*/\n\n\tvoid swap(int index0, int index1)\n\t{\n#ifdef BT_USE_MEMCPY\n\t\tchar temp[sizeof(T)];\n\t\tmemcpy(temp, &m_data[index0], sizeof(T));\n\t\tmemcpy(&m_data[index0], &m_data[index1], sizeof(T));\n\t\tmemcpy(&m_data[index1], temp, sizeof(T));\n#else\n\t\tT temp = m_data[index0];\n\t\tm_data[index0] = m_data[index1];\n\t\tm_data[index1] = temp;\n#endif  //BT_USE_PLACEMENT_NEW\n\t}\n\n\ttemplate <typename L>\n\tvoid heapSort(const L& CompareFunc)\n\t{\n\t\t/* sort a[0..N-1],  N.B. 0 to N-1 */\n\t\tint k;\n\t\tint n = m_size;\n\t\tfor (k = n / 2; k > 0; k--)\n\t\t{\n\t\t\tdownHeap(m_data, k, n, CompareFunc);\n\t\t}\n\n\t\t/* a[1..N] is now a heap */\n\t\twhile (n >= 1)\n\t\t{\n\t\t\tswap(0, n - 1); /* largest of a[0..n-1] */\n\n\t\t\tn = n - 1;\n\t\t\t/* restore a[1..i-1] heap */\n\t\t\tdownHeap(m_data, 1, n, CompareFunc);\n\t\t}\n\t}\n\n\t///non-recursive binary search, assumes sorted array\n\tint findBinarySearch(const T& key) const\n\t{\n\t\tint first = 0;\n\t\tint last = size() - 1;\n\n\t\t//assume sorted array\n\t\twhile (first <= last)\n\t\t{\n\t\t\tint mid = (first + last) / 2;  // compute mid point.\n\t\t\tif (key > m_data[mid])\n\t\t\t\tfirst = mid + 1;  // repeat search in top half.\n\t\t\telse if (key < m_data[mid])\n\t\t\t\tlast = mid - 1;  // repeat search in bottom half.\n\t\t\telse\n\t\t\t\treturn mid;  // found it. return position /////\n\t\t}\n\t\treturn size();  // failed to find key\n\t}\n\n\tint findLinearSearch(const T& key) const\n\t{\n\t\tint index = size();\n\t\tint i;\n\n\t\tfor (i = 0; i < size(); i++)\n\t\t{\n\t\t\tif (m_data[i] == key)\n\t\t\t{\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\t// If the key is not in the array, return -1 instead of 0,\n\t// since 0 also means the first element in the array.\n\tint findLinearSearch2(const T& key) const\n\t{\n\t\tint index = -1;\n\t\tint i;\n\n\t\tfor (i = 0; i < size(); i++)\n\t\t{\n\t\t\tif (m_data[i] == key)\n\t\t\t{\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\tvoid removeAtIndex(int index)\n\t{\n\t\tif (index < size())\n\t\t{\n\t\t\tswap(index, size() - 1);\n\t\t\tpop_back();\n\t\t}\n\t}\n\tvoid remove(const T& key)\n\t{\n\t\tint findIndex = findLinearSearch(key);\n\t\tremoveAtIndex(findIndex);\n\t}\n\n\t//PCK: whole function\n\tvoid initializeFromBuffer(void* buffer, int size, int capacity)\n\t{\n\t\tclear();\n\t\tm_ownsMemory = false;\n\t\tm_data = (T*)buffer;\n\t\tm_size = size;\n\t\tm_capacity = capacity;\n\t}\n\n\tvoid copyFromArray(const btAlignedObjectArray& otherArray)\n\t{\n\t\tint otherSize = otherArray.size();\n\t\tresize(otherSize);\n\t\totherArray.copy(0, otherSize, m_data);\n\t}\n};\n\n#endif  //BT_OBJECT_ARRAY__\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btConvexHull.h",
    "content": "\n/*\nStan Melax Convex Hull Computation\nCopyright (c) 2008 Stan Melax http://www.melax.com/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///includes modifications/improvements by John Ratcliff, see BringOutYourDead below.\n\n#ifndef BT_CD_HULL_H\n#define BT_CD_HULL_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\ntypedef btAlignedObjectArray<unsigned int> TUIntArray;\n\nclass HullResult\n{\npublic:\n\tHullResult(void)\n\t{\n\t\tmPolygons = true;\n\t\tmNumOutputVertices = 0;\n\t\tmNumFaces = 0;\n\t\tmNumIndices = 0;\n\t}\n\tbool mPolygons;                                    // true if indices represents polygons, false indices are triangles\n\tunsigned int mNumOutputVertices;                   // number of vertices in the output hull\n\tbtAlignedObjectArray<btVector3> m_OutputVertices;  // array of vertices\n\tunsigned int mNumFaces;                            // the number of faces produced\n\tunsigned int mNumIndices;                          // the total number of indices\n\tbtAlignedObjectArray<unsigned int> m_Indices;      // pointer to indices.\n\n\t// If triangles, then indices are array indexes into the vertex list.\n\t// If polygons, indices are in the form (number of points in face) (p1, p2, p3, ..) etc..\n};\n\nenum HullFlag\n{\n\tQF_TRIANGLES = (1 << 0),      // report results as triangles, not polygons.\n\tQF_REVERSE_ORDER = (1 << 1),  // reverse order of the triangle indices.\n\tQF_DEFAULT = QF_TRIANGLES\n};\n\nclass HullDesc\n{\npublic:\n\tHullDesc(void)\n\t{\n\t\tmFlags = QF_DEFAULT;\n\t\tmVcount = 0;\n\t\tmVertices = 0;\n\t\tmVertexStride = sizeof(btVector3);\n\t\tmNormalEpsilon = 0.001f;\n\t\tmMaxVertices = 4096;  // maximum number of points to be considered for a convex hull.\n\t\tmMaxFaces = 4096;\n\t};\n\n\tHullDesc(HullFlag flag,\n\t\t\t unsigned int vcount,\n\t\t\t const btVector3* vertices,\n\t\t\t unsigned int stride = sizeof(btVector3))\n\t{\n\t\tmFlags = flag;\n\t\tmVcount = vcount;\n\t\tmVertices = vertices;\n\t\tmVertexStride = stride;\n\t\tmNormalEpsilon = btScalar(0.001);\n\t\tmMaxVertices = 4096;\n\t}\n\n\tbool HasHullFlag(HullFlag flag) const\n\t{\n\t\tif (mFlags & flag) return true;\n\t\treturn false;\n\t}\n\n\tvoid SetHullFlag(HullFlag flag)\n\t{\n\t\tmFlags |= flag;\n\t}\n\n\tvoid ClearHullFlag(HullFlag flag)\n\t{\n\t\tmFlags &= ~flag;\n\t}\n\n\tunsigned int mFlags;         // flags to use when generating the convex hull.\n\tunsigned int mVcount;        // number of vertices in the input point cloud\n\tconst btVector3* mVertices;  // the array of vertices.\n\tunsigned int mVertexStride;  // the stride of each vertex, in bytes.\n\tbtScalar mNormalEpsilon;     // the epsilon for removing duplicates.  This is a normalized value, if normalized bit is on.\n\tunsigned int mMaxVertices;   // maximum number of vertices to be considered for the hull!\n\tunsigned int mMaxFaces;\n};\n\nenum HullError\n{\n\tQE_OK,   // success!\n\tQE_FAIL  // failed.\n};\n\nclass btPlane\n{\npublic:\n\tbtVector3 normal;\n\tbtScalar dist;  // distance below origin - the D from plane equasion Ax+By+Cz+D=0\n\tbtPlane(const btVector3& n, btScalar d) : normal(n), dist(d) {}\n\tbtPlane() : normal(), dist(0) {}\n};\n\nclass ConvexH\n{\npublic:\n\tclass HalfEdge\n\t{\n\tpublic:\n\t\tshort ea;         // the other half of the edge (index into edges list)\n\t\tunsigned char v;  // the vertex at the start of this edge (index into vertices list)\n\t\tunsigned char p;  // the facet on which this edge lies (index into facets list)\n\t\tHalfEdge() {}\n\t\tHalfEdge(short _ea, unsigned char _v, unsigned char _p) : ea(_ea), v(_v), p(_p) {}\n\t};\n\tConvexH()\n\t{\n\t}\n\t~ConvexH()\n\t{\n\t}\n\tbtAlignedObjectArray<btVector3> vertices;\n\tbtAlignedObjectArray<HalfEdge> edges;\n\tbtAlignedObjectArray<btPlane> facets;\n\tConvexH(int vertices_size, int edges_size, int facets_size);\n};\n\nclass int4\n{\npublic:\n\tint x, y, z, w;\n\tint4(){};\n\tint4(int _x, int _y, int _z, int _w)\n\t{\n\t\tx = _x;\n\t\ty = _y;\n\t\tz = _z;\n\t\tw = _w;\n\t}\n\tconst int& operator[](int i) const { return (&x)[i]; }\n\tint& operator[](int i) { return (&x)[i]; }\n};\n\nclass PHullResult\n{\npublic:\n\tPHullResult(void)\n\t{\n\t\tmVcount = 0;\n\t\tmIndexCount = 0;\n\t\tmFaceCount = 0;\n\t\tmVertices = 0;\n\t}\n\n\tunsigned int mVcount;\n\tunsigned int mIndexCount;\n\tunsigned int mFaceCount;\n\tbtVector3* mVertices;\n\tTUIntArray m_Indices;\n};\n\n///The HullLibrary class can create a convex hull from a collection of vertices, using the ComputeHull method.\n///The btShapeHull class uses this HullLibrary to create a approximate convex mesh given a general (non-polyhedral) convex shape.\nclass HullLibrary\n{\n\tbtAlignedObjectArray<class btHullTriangle*> m_tris;\n\npublic:\n\tbtAlignedObjectArray<int> m_vertexIndexMapping;\n\n\tHullError CreateConvexHull(const HullDesc& desc,  // describes the input request\n\t\t\t\t\t\t\t   HullResult& result);   // contains the resulst\n\tHullError ReleaseResult(HullResult& result);      // release memory allocated for this result, we are done with it.\n\nprivate:\n\tbool ComputeHull(unsigned int vcount, const btVector3* vertices, PHullResult& result, unsigned int vlimit);\n\n\tclass btHullTriangle* allocateTriangle(int a, int b, int c);\n\tvoid deAllocateTriangle(btHullTriangle*);\n\tvoid b2bfix(btHullTriangle* s, btHullTriangle* t);\n\n\tvoid removeb2b(btHullTriangle* s, btHullTriangle* t);\n\n\tvoid checkit(btHullTriangle* t);\n\n\tbtHullTriangle* extrudable(btScalar epsilon);\n\n\tint calchull(btVector3* verts, int verts_count, TUIntArray& tris_out, int& tris_count, int vlimit);\n\n\tint calchullgen(btVector3* verts, int verts_count, int vlimit);\n\n\tint4 FindSimplex(btVector3* verts, int verts_count, btAlignedObjectArray<int>& allow);\n\n\tclass ConvexH* ConvexHCrop(ConvexH& convex, const btPlane& slice);\n\n\tvoid extrude(class btHullTriangle* t0, int v);\n\n\tConvexH* test_cube();\n\n\t//BringOutYourDead (John Ratcliff): When you create a convex hull you hand it a large input set of vertices forming a 'point cloud'.\n\t//After the hull is generated it give you back a set of polygon faces which index the *original* point cloud.\n\t//The thing is, often times, there are many 'dead vertices' in the point cloud that are on longer referenced by the hull.\n\t//The routine 'BringOutYourDead' find only the referenced vertices, copies them to an new buffer, and re-indexes the hull so that it is a minimal representation.\n\tvoid BringOutYourDead(const btVector3* verts, unsigned int vcount, btVector3* overts, unsigned int& ocount, unsigned int* indices, unsigned indexcount);\n\n\tbool CleanupVertices(unsigned int svcount,\n\t\t\t\t\t\t const btVector3* svertices,\n\t\t\t\t\t\t unsigned int stride,\n\t\t\t\t\t\t unsigned int& vcount,  // output number of vertices\n\t\t\t\t\t\t btVector3* vertices,   // location to store the results.\n\t\t\t\t\t\t btScalar normalepsilon,\n\t\t\t\t\t\t btVector3& scale);\n};\n\n#endif  //BT_CD_HULL_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btConvexHullComputer.h",
    "content": "/*\nCopyright (c) 2011 Ole Kniemeyer, MAXON, www.maxon.net\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_CONVEX_HULL_COMPUTER_H\n#define BT_CONVEX_HULL_COMPUTER_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\n/// Convex hull implementation based on Preparata and Hong\n/// See http://code.google.com/p/bullet/issues/detail?id=275\n/// Ole Kniemeyer, MAXON Computer GmbH\nclass btConvexHullComputer\n{\nprivate:\n\tbtScalar compute(const void* coords, bool doubleCoords, int stride, int count, btScalar shrink, btScalar shrinkClamp);\n\npublic:\n\tclass Edge\n\t{\n\tprivate:\n\t\tint next;\n\t\tint reverse;\n\t\tint targetVertex;\n\n\t\tfriend class btConvexHullComputer;\n\n\tpublic:\n\t\tint getSourceVertex() const\n\t\t{\n\t\t\treturn (this + reverse)->targetVertex;\n\t\t}\n\n\t\tint getTargetVertex() const\n\t\t{\n\t\t\treturn targetVertex;\n\t\t}\n\n\t\tconst Edge* getNextEdgeOfVertex() const  // clockwise list of all edges of a vertex\n\t\t{\n\t\t\treturn this + next;\n\t\t}\n\n\t\tconst Edge* getNextEdgeOfFace() const  // counter-clockwise list of all edges of a face\n\t\t{\n\t\t\treturn (this + reverse)->getNextEdgeOfVertex();\n\t\t}\n\n\t\tconst Edge* getReverseEdge() const\n\t\t{\n\t\t\treturn this + reverse;\n\t\t}\n\t};\n\n\t// Vertices of the output hull\n\tbtAlignedObjectArray<btVector3> vertices;\n\n\t// The original vertex index in the input coords array\n\tbtAlignedObjectArray<int> original_vertex_index;\n\n\t// Edges of the output hull\n\tbtAlignedObjectArray<Edge> edges;\n\n\t// Faces of the convex hull. Each entry is an index into the \"edges\" array pointing to an edge of the face. Faces are planar n-gons\n\tbtAlignedObjectArray<int> faces;\n\n\t/*\n\t\tCompute convex hull of \"count\" vertices stored in \"coords\". \"stride\" is the difference in bytes\n\t\tbetween the addresses of consecutive vertices. If \"shrink\" is positive, the convex hull is shrunken\n\t\tby that amount (each face is moved by \"shrink\" length units towards the center along its normal).\n\t\tIf \"shrinkClamp\" is positive, \"shrink\" is clamped to not exceed \"shrinkClamp * innerRadius\", where \"innerRadius\"\n\t\tis the minimum distance of a face to the center of the convex hull.\n\n\t\tThe returned value is the amount by which the hull has been shrunken. If it is negative, the amount was so large\n\t\tthat the resulting convex hull is empty.\n\n\t\tThe output convex hull can be found in the member variables \"vertices\", \"edges\", \"faces\".\n\t\t*/\n\tbtScalar compute(const float* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)\n\t{\n\t\treturn compute(coords, false, stride, count, shrink, shrinkClamp);\n\t}\n\n\t// same as above, but double precision\n\tbtScalar compute(const double* coords, int stride, int count, btScalar shrink, btScalar shrinkClamp)\n\t{\n\t\treturn compute(coords, true, stride, count, shrink, shrinkClamp);\n\t}\n};\n\n#endif  //BT_CONVEX_HULL_COMPUTER_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btCpuFeatureUtility.h",
    "content": "\n#ifndef BT_CPU_UTILITY_H\n#define BT_CPU_UTILITY_H\n\n#include \"LinearMath/btScalar.h\"\n\n#include <string.h>  //memset\n#ifdef USE_SIMD\n#include <emmintrin.h>\n#ifdef BT_ALLOW_SSE4\n#include <intrin.h>\n#endif  //BT_ALLOW_SSE4\n#endif  //USE_SIMD\n\n#if defined BT_USE_NEON\n#define ARM_NEON_GCC_COMPATIBILITY 1\n#include <arm_neon.h>\n#include <sys/types.h>\n#include <sys/sysctl.h>  //for sysctlbyname\n#endif                   //BT_USE_NEON\n\n///Rudimentary btCpuFeatureUtility for CPU features: only report the features that Bullet actually uses (SSE4/FMA3, NEON_HPFP)\n///We assume SSE2 in case BT_USE_SSE2 is defined in LinearMath/btScalar.h\nclass btCpuFeatureUtility\n{\npublic:\n\tenum btCpuFeature\n\t{\n\t\tCPU_FEATURE_FMA3 = 1,\n\t\tCPU_FEATURE_SSE4_1 = 2,\n\t\tCPU_FEATURE_NEON_HPFP = 4\n\t};\n\n\tstatic int getCpuFeatures()\n\t{\n\t\tstatic int capabilities = 0;\n\t\tstatic bool testedCapabilities = false;\n\t\tif (0 != testedCapabilities)\n\t\t{\n\t\t\treturn capabilities;\n\t\t}\n\n#ifdef BT_USE_NEON\n\t\t{\n\t\t\tuint32_t hasFeature = 0;\n\t\t\tsize_t featureSize = sizeof(hasFeature);\n\t\t\tint err = sysctlbyname(\"hw.optional.neon_hpfp\", &hasFeature, &featureSize, NULL, 0);\n\t\t\tif (0 == err && hasFeature)\n\t\t\t\tcapabilities |= CPU_FEATURE_NEON_HPFP;\n\t\t}\n#endif  //BT_USE_NEON\n\n#ifdef BT_ALLOW_SSE4\n\t\t{\n\t\t\tint cpuInfo[4];\n\t\t\tmemset(cpuInfo, 0, sizeof(cpuInfo));\n\t\t\tunsigned long long sseExt = 0;\n\t\t\t__cpuid(cpuInfo, 1);\n\n\t\t\tbool osUsesXSAVE_XRSTORE = cpuInfo[2] & (1 << 27) || false;\n\t\t\tbool cpuAVXSuport = cpuInfo[2] & (1 << 28) || false;\n\n\t\t\tif (osUsesXSAVE_XRSTORE && cpuAVXSuport)\n\t\t\t{\n\t\t\t\tsseExt = _xgetbv(0);\n\t\t\t}\n\t\t\tconst int OSXSAVEFlag = (1UL << 27);\n\t\t\tconst int AVXFlag = ((1UL << 28) | OSXSAVEFlag);\n\t\t\tconst int FMAFlag = ((1UL << 12) | AVXFlag | OSXSAVEFlag);\n\t\t\tif ((cpuInfo[2] & FMAFlag) == FMAFlag && (sseExt & 6) == 6)\n\t\t\t{\n\t\t\t\tcapabilities |= btCpuFeatureUtility::CPU_FEATURE_FMA3;\n\t\t\t}\n\n\t\t\tconst int SSE41Flag = (1 << 19);\n\t\t\tif (cpuInfo[2] & SSE41Flag)\n\t\t\t{\n\t\t\t\tcapabilities |= btCpuFeatureUtility::CPU_FEATURE_SSE4_1;\n\t\t\t}\n\t\t}\n#endif  //BT_ALLOW_SSE4\n\n\t\ttestedCapabilities = true;\n\t\treturn capabilities;\n\t}\n};\n\n#endif  //BT_CPU_UTILITY_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btDefaultMotionState.h",
    "content": "#ifndef BT_DEFAULT_MOTION_STATE_H\n#define BT_DEFAULT_MOTION_STATE_H\n\n#include \"btMotionState.h\"\n\n///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets.\nATTRIBUTE_ALIGNED16(struct)\nbtDefaultMotionState : public btMotionState\n{\n\tbtTransform m_graphicsWorldTrans;\n\tbtTransform m_centerOfMassOffset;\n\tbtTransform m_startWorldTrans;\n\tvoid* m_userPointer;\n\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n\tbtDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(), const btTransform& centerOfMassOffset = btTransform::getIdentity())\n\t\t: m_graphicsWorldTrans(startTrans),\n\t\t  m_centerOfMassOffset(centerOfMassOffset),\n\t\t  m_startWorldTrans(startTrans),\n\t\t  m_userPointer(0)\n\n\t{\n\t}\n\n\t///synchronizes world transform from user to physics\n\tvirtual void getWorldTransform(btTransform & centerOfMassWorldTrans) const\n\t{\n\t\tcenterOfMassWorldTrans = m_graphicsWorldTrans * m_centerOfMassOffset.inverse();\n\t}\n\n\t///synchronizes world transform from physics to user\n\t///Bullet only calls the update of worldtransform for active objects\n\tvirtual void setWorldTransform(const btTransform& centerOfMassWorldTrans)\n\t{\n\t\tm_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset;\n\t}\n};\n\n#endif  //BT_DEFAULT_MOTION_STATE_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btGeometryUtil.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GEOMETRY_UTIL_H\n#define BT_GEOMETRY_UTIL_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\n///The btGeometryUtil helper class provides a few methods to convert between plane equations and vertices.\nclass btGeometryUtil\n{\npublic:\n\tstatic void getPlaneEquationsFromVertices(btAlignedObjectArray<btVector3>& vertices, btAlignedObjectArray<btVector3>& planeEquationsOut);\n\n\tstatic void getVerticesFromPlaneEquations(const btAlignedObjectArray<btVector3>& planeEquations, btAlignedObjectArray<btVector3>& verticesOut);\n\n\tstatic bool isInside(const btAlignedObjectArray<btVector3>& vertices, const btVector3& planeNormal, btScalar margin);\n\n\tstatic bool isPointInsidePlanes(const btAlignedObjectArray<btVector3>& planeEquations, const btVector3& point, btScalar margin);\n\n\tstatic bool areVerticesBehindPlane(const btVector3& planeNormal, const btAlignedObjectArray<btVector3>& vertices, btScalar margin);\n};\n\n#endif  //BT_GEOMETRY_UTIL_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btGrahamScan2dConvexHull.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2011 Advanced Micro Devices, Inc.  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef GRAHAM_SCAN_2D_CONVEX_HULL_H\n#define GRAHAM_SCAN_2D_CONVEX_HULL_H\n\n#include \"btVector3.h\"\n#include \"btAlignedObjectArray.h\"\n\nstruct GrahamVector3 : public btVector3\n{\n\tGrahamVector3(const btVector3& org, int orgIndex)\n\t\t: btVector3(org),\n\t\t  m_orgIndex(orgIndex)\n\t{\n\t}\n\tbtScalar m_angle;\n\tint m_orgIndex;\n};\n\nstruct btAngleCompareFunc\n{\n\tbtVector3 m_anchor;\n\tbtAngleCompareFunc(const btVector3& anchor)\n\t\t: m_anchor(anchor)\n\t{\n\t}\n\tbool operator()(const GrahamVector3& a, const GrahamVector3& b) const\n\t{\n\t\tif (a.m_angle != b.m_angle)\n\t\t\treturn a.m_angle < b.m_angle;\n\t\telse\n\t\t{\n\t\t\tbtScalar al = (a - m_anchor).length2();\n\t\t\tbtScalar bl = (b - m_anchor).length2();\n\t\t\tif (al != bl)\n\t\t\t\treturn al < bl;\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn a.m_orgIndex < b.m_orgIndex;\n\t\t\t}\n\t\t}\n\t}\n};\n\ninline void GrahamScanConvexHull2D(btAlignedObjectArray<GrahamVector3>& originalPoints, btAlignedObjectArray<GrahamVector3>& hull, const btVector3& normalAxis)\n{\n\tbtVector3 axis0, axis1;\n\tbtPlaneSpace1(normalAxis, axis0, axis1);\n\n\tif (originalPoints.size() <= 1)\n\t{\n\t\tfor (int i = 0; i < originalPoints.size(); i++)\n\t\t\thull.push_back(originalPoints[0]);\n\t\treturn;\n\t}\n\t//step1 : find anchor point with smallest projection on axis0 and move it to first location\n\tfor (int i = 0; i < originalPoints.size(); i++)\n\t{\n\t\t//\t\tconst btVector3& left = originalPoints[i];\n\t\t//\t\tconst btVector3& right = originalPoints[0];\n\t\tbtScalar projL = originalPoints[i].dot(axis0);\n\t\tbtScalar projR = originalPoints[0].dot(axis0);\n\t\tif (projL < projR)\n\t\t{\n\t\t\toriginalPoints.swap(0, i);\n\t\t}\n\t}\n\n\t//also precompute angles\n\toriginalPoints[0].m_angle = -1e30f;\n\tfor (int i = 1; i < originalPoints.size(); i++)\n\t{\n\t\tbtVector3 ar = originalPoints[i] - originalPoints[0];\n\t\tbtScalar ar1 = axis1.dot(ar);\n\t\tbtScalar ar0 = axis0.dot(ar);\n\t\tif (ar1 * ar1 + ar0 * ar0 < FLT_EPSILON)\n\t\t{\n\t\t\toriginalPoints[i].m_angle = 0.0f;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toriginalPoints[i].m_angle = btAtan2Fast(ar1, ar0);\n\t\t}\n\t}\n\n\t//step 2: sort all points, based on 'angle' with this anchor\n\tbtAngleCompareFunc comp(originalPoints[0]);\n\toriginalPoints.quickSortInternal(comp, 1, originalPoints.size() - 1);\n\n\tint i;\n\tfor (i = 0; i < 2; i++)\n\t\thull.push_back(originalPoints[i]);\n\n\t//step 3: keep all 'convex' points and discard concave points (using back tracking)\n\tfor (; i != originalPoints.size(); i++)\n\t{\n\t\tbool isConvex = false;\n\t\twhile (!isConvex && hull.size() > 1)\n\t\t{\n\t\t\tbtVector3& a = hull[hull.size() - 2];\n\t\t\tbtVector3& b = hull[hull.size() - 1];\n\t\t\tisConvex = btCross(a - b, a - originalPoints[i]).dot(normalAxis) > 0;\n\t\t\tif (!isConvex)\n\t\t\t\thull.pop_back();\n\t\t\telse\n\t\t\t\thull.push_back(originalPoints[i]);\n\t\t}\n\n\t\tif (hull.size() == 1)\n\t\t{\n\t\t\thull.push_back(originalPoints[i]);\n\t\t}\n\t}\n}\n\n#endif  //GRAHAM_SCAN_2D_CONVEX_HULL_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btHashMap.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_HASH_MAP_H\n#define BT_HASH_MAP_H\n\n#include <string>\n#include \"btAlignedObjectArray.h\"\n\n///very basic hashable string implementation, compatible with btHashMap\nstruct btHashString\n{\n\tstd::string m_string1;\n\tunsigned int m_hash;\n\n\tSIMD_FORCE_INLINE unsigned int getHash() const\n\t{\n\t\treturn m_hash;\n\t}\n\n\tbtHashString()\n\t{\n\t\tm_string1 = \"\";\n\t\tm_hash = 0;\n\t}\n\tbtHashString(const char* name)\n\t\t: m_string1(name)\n\t{\n\t\t/* magic numbers from http://www.isthe.com/chongo/tech/comp/fnv/ */\n\t\tstatic const unsigned int InitialFNV = 2166136261u;\n\t\tstatic const unsigned int FNVMultiple = 16777619u;\n\n\t\t/* Fowler / Noll / Vo (FNV) Hash */\n\t\tunsigned int hash = InitialFNV;\n\n\t\tfor (int i = 0; m_string1.c_str()[i]; i++)\n\t\t{\n\t\t\thash = hash ^ (m_string1.c_str()[i]); /* xor  the low 8 bits */\n\t\t\thash = hash * FNVMultiple;            /* multiply by the magic number */\n\t\t}\n\t\tm_hash = hash;\n\t}\n\n\tbool equals(const btHashString& other) const\n\t{\n\t\treturn (m_string1 == other.m_string1);\n\t}\n};\n\nconst int BT_HASH_NULL = 0xffffffff;\n\nclass btHashInt\n{\n\tint m_uid;\n\npublic:\n\tbtHashInt()\n\t{\n\t}\n\n\tbtHashInt(int uid) : m_uid(uid)\n\t{\n\t}\n\n\tint getUid1() const\n\t{\n\t\treturn m_uid;\n\t}\n\n\tvoid setUid1(int uid)\n\t{\n\t\tm_uid = uid;\n\t}\n\n\tbool equals(const btHashInt& other) const\n\t{\n\t\treturn getUid1() == other.getUid1();\n\t}\n\t//to our success\n\tSIMD_FORCE_INLINE unsigned int getHash() const\n\t{\n\t\tunsigned int key = m_uid;\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\n\t\treturn key;\n\t}\n};\n\nclass btHashPtr\n{\n\tunion {\n\t\tconst void* m_pointer;\n\t\tunsigned int m_hashValues[2];\n\t};\n\npublic:\n\tbtHashPtr(const void* ptr)\n\t\t: m_pointer(ptr)\n\t{\n\t}\n\n\tconst void* getPointer() const\n\t{\n\t\treturn m_pointer;\n\t}\n\n\tbool equals(const btHashPtr& other) const\n\t{\n\t\treturn getPointer() == other.getPointer();\n\t}\n\n\t//to our success\n\tSIMD_FORCE_INLINE unsigned int getHash() const\n\t{\n\t\tconst bool VOID_IS_8 = ((sizeof(void*) == 8));\n\n\t\tunsigned int key = VOID_IS_8 ? m_hashValues[0] + m_hashValues[1] : m_hashValues[0];\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\t\treturn key;\n\t}\n};\n\ntemplate <class Value>\nclass btHashKeyPtr\n{\n\tint m_uid;\n\npublic:\n\tbtHashKeyPtr(int uid) : m_uid(uid)\n\t{\n\t}\n\n\tint getUid1() const\n\t{\n\t\treturn m_uid;\n\t}\n\n\tbool equals(const btHashKeyPtr<Value>& other) const\n\t{\n\t\treturn getUid1() == other.getUid1();\n\t}\n\n\t//to our success\n\tSIMD_FORCE_INLINE unsigned int getHash() const\n\t{\n\t\tunsigned int key = m_uid;\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\t\treturn key;\n\t}\n};\n\ntemplate <class Value>\nclass btHashKey\n{\n\tint m_uid;\n\npublic:\n\tbtHashKey(int uid) : m_uid(uid)\n\t{\n\t}\n\n\tint getUid1() const\n\t{\n\t\treturn m_uid;\n\t}\n\n\tbool equals(const btHashKey<Value>& other) const\n\t{\n\t\treturn getUid1() == other.getUid1();\n\t}\n\t//to our success\n\tSIMD_FORCE_INLINE unsigned int getHash() const\n\t{\n\t\tunsigned int key = m_uid;\n\t\t// Thomas Wang's hash\n\t\tkey += ~(key << 15);\n\t\tkey ^= (key >> 10);\n\t\tkey += (key << 3);\n\t\tkey ^= (key >> 6);\n\t\tkey += ~(key << 11);\n\t\tkey ^= (key >> 16);\n\t\treturn key;\n\t}\n};\n\n///The btHashMap template class implements a generic and lightweight hashmap.\n///A basic sample of how to use btHashMap is located in Demos\\BasicDemo\\main.cpp\ntemplate <class Key, class Value>\nclass btHashMap\n{\nprotected:\n\tbtAlignedObjectArray<int> m_hashTable;\n\tbtAlignedObjectArray<int> m_next;\n\n\tbtAlignedObjectArray<Value> m_valueArray;\n\tbtAlignedObjectArray<Key> m_keyArray;\n\n\tvoid growTables(const Key& /*key*/)\n\t{\n\t\tint newCapacity = m_valueArray.capacity();\n\n\t\tif (m_hashTable.size() < newCapacity)\n\t\t{\n\t\t\t//grow hashtable and next table\n\t\t\tint curHashtableSize = m_hashTable.size();\n\n\t\t\tm_hashTable.resize(newCapacity);\n\t\t\tm_next.resize(newCapacity);\n\n\t\t\tint i;\n\n\t\t\tfor (i = 0; i < newCapacity; ++i)\n\t\t\t{\n\t\t\t\tm_hashTable[i] = BT_HASH_NULL;\n\t\t\t}\n\t\t\tfor (i = 0; i < newCapacity; ++i)\n\t\t\t{\n\t\t\t\tm_next[i] = BT_HASH_NULL;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < curHashtableSize; i++)\n\t\t\t{\n\t\t\t\t//const Value& value = m_valueArray[i];\n\t\t\t\t//const Key& key = m_keyArray[i];\n\n\t\t\t\tint hashValue = m_keyArray[i].getHash() & (m_valueArray.capacity() - 1);  // New hash value with new mask\n\t\t\t\tm_next[i] = m_hashTable[hashValue];\n\t\t\t\tm_hashTable[hashValue] = i;\n\t\t\t}\n\t\t}\n\t}\n\npublic:\n\tvoid insert(const Key& key, const Value& value)\n\t{\n\t\tint hash = key.getHash() & (m_valueArray.capacity() - 1);\n\n\t\t//replace value if the key is already there\n\t\tint index = findIndex(key);\n\t\tif (index != BT_HASH_NULL)\n\t\t{\n\t\t\tm_valueArray[index] = value;\n\t\t\treturn;\n\t\t}\n\n\t\tint count = m_valueArray.size();\n\t\tint oldCapacity = m_valueArray.capacity();\n\t\tm_valueArray.push_back(value);\n\t\tm_keyArray.push_back(key);\n\n\t\tint newCapacity = m_valueArray.capacity();\n\t\tif (oldCapacity < newCapacity)\n\t\t{\n\t\t\tgrowTables(key);\n\t\t\t//hash with new capacity\n\t\t\thash = key.getHash() & (m_valueArray.capacity() - 1);\n\t\t}\n\t\tm_next[count] = m_hashTable[hash];\n\t\tm_hashTable[hash] = count;\n\t}\n\n\tvoid remove(const Key& key)\n\t{\n\t\tint hash = key.getHash() & (m_valueArray.capacity() - 1);\n\n\t\tint pairIndex = findIndex(key);\n\n\t\tif (pairIndex == BT_HASH_NULL)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the pair from the hash table.\n\t\tint index = m_hashTable[hash];\n\t\tbtAssert(index != BT_HASH_NULL);\n\n\t\tint previous = BT_HASH_NULL;\n\t\twhile (index != pairIndex)\n\t\t{\n\t\t\tprevious = index;\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (previous != BT_HASH_NULL)\n\t\t{\n\t\t\tbtAssert(m_next[previous] == pairIndex);\n\t\t\tm_next[previous] = m_next[pairIndex];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_hashTable[hash] = m_next[pairIndex];\n\t\t}\n\n\t\t// We now move the last pair into spot of the\n\t\t// pair being removed. We need to fix the hash\n\t\t// table indices to support the move.\n\n\t\tint lastPairIndex = m_valueArray.size() - 1;\n\n\t\t// If the removed pair is the last pair, we are done.\n\t\tif (lastPairIndex == pairIndex)\n\t\t{\n\t\t\tm_valueArray.pop_back();\n\t\t\tm_keyArray.pop_back();\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the last pair from the hash table.\n\t\tint lastHash = m_keyArray[lastPairIndex].getHash() & (m_valueArray.capacity() - 1);\n\n\t\tindex = m_hashTable[lastHash];\n\t\tbtAssert(index != BT_HASH_NULL);\n\n\t\tprevious = BT_HASH_NULL;\n\t\twhile (index != lastPairIndex)\n\t\t{\n\t\t\tprevious = index;\n\t\t\tindex = m_next[index];\n\t\t}\n\n\t\tif (previous != BT_HASH_NULL)\n\t\t{\n\t\t\tbtAssert(m_next[previous] == lastPairIndex);\n\t\t\tm_next[previous] = m_next[lastPairIndex];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_hashTable[lastHash] = m_next[lastPairIndex];\n\t\t}\n\n\t\t// Copy the last pair into the remove pair's spot.\n\t\tm_valueArray[pairIndex] = m_valueArray[lastPairIndex];\n\t\tm_keyArray[pairIndex] = m_keyArray[lastPairIndex];\n\n\t\t// Insert the last pair into the hash table\n\t\tm_next[pairIndex] = m_hashTable[lastHash];\n\t\tm_hashTable[lastHash] = pairIndex;\n\n\t\tm_valueArray.pop_back();\n\t\tm_keyArray.pop_back();\n\t}\n\n\tint size() const\n\t{\n\t\treturn m_valueArray.size();\n\t}\n\n\tconst Value* getAtIndex(int index) const\n\t{\n\t\tbtAssert(index < m_valueArray.size());\n\t\tbtAssert(index >= 0);\n\t\tif (index >= 0 && index < m_valueArray.size())\n\t\t{\n\t\t\treturn &m_valueArray[index];\n\t\t}\n\t\treturn 0;\n\t}\n\n\tValue* getAtIndex(int index)\n\t{\n\t\tbtAssert(index < m_valueArray.size());\n\t\tbtAssert(index >= 0);\n\t\tif (index >= 0 && index < m_valueArray.size())\n\t\t{\n\t\t\treturn &m_valueArray[index];\n\t\t}\n\t\treturn 0;\n\t}\n\n\tKey getKeyAtIndex(int index)\n\t{\n\t\tbtAssert(index < m_keyArray.size());\n\t\tbtAssert(index >= 0);\n\t\treturn m_keyArray[index];\n\t}\n\n\tconst Key getKeyAtIndex(int index) const\n\t{\n\t\tbtAssert(index < m_keyArray.size());\n\t\tbtAssert(index >= 0);\n\t\treturn m_keyArray[index];\n\t}\n\n\tValue* operator[](const Key& key)\n\t{\n\t\treturn find(key);\n\t}\n\n\tconst Value* operator[](const Key& key) const\n\t{\n\t\treturn find(key);\n\t}\n\n\tconst Value* find(const Key& key) const\n\t{\n\t\tint index = findIndex(key);\n\t\tif (index == BT_HASH_NULL)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\t\treturn &m_valueArray[index];\n\t}\n\n\tValue* find(const Key& key)\n\t{\n\t\tint index = findIndex(key);\n\t\tif (index == BT_HASH_NULL)\n\t\t{\n\t\t\treturn NULL;\n\t\t}\n\t\treturn &m_valueArray[index];\n\t}\n\n\tint findIndex(const Key& key) const\n\t{\n\t\tunsigned int hash = key.getHash() & (m_valueArray.capacity() - 1);\n\n\t\tif (hash >= (unsigned int)m_hashTable.size())\n\t\t{\n\t\t\treturn BT_HASH_NULL;\n\t\t}\n\n\t\tint index = m_hashTable[hash];\n\t\twhile ((index != BT_HASH_NULL) && key.equals(m_keyArray[index]) == false)\n\t\t{\n\t\t\tindex = m_next[index];\n\t\t}\n\t\treturn index;\n\t}\n\n\tvoid clear()\n\t{\n\t\tm_hashTable.clear();\n\t\tm_next.clear();\n\t\tm_valueArray.clear();\n\t\tm_keyArray.clear();\n\t}\n};\n\n#endif  //BT_HASH_MAP_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btIDebugDraw.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_IDEBUG_DRAW__H\n#define BT_IDEBUG_DRAW__H\n\n#include \"btVector3.h\"\n#include \"btTransform.h\"\n\n///The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.\n///Typical use case: create a debug drawer object, and assign it to a btCollisionWorld or btDynamicsWorld using setDebugDrawer and call debugDrawWorld.\n///A class that implements the btIDebugDraw interface will need to provide non-empty implementations of the the drawLine and getDebugMode methods at a minimum.\n///For color arguments the X,Y,Z components refer to Red, Green and Blue each in the range [0..1]\nclass btIDebugDraw\n{\npublic:\n\tATTRIBUTE_ALIGNED16(struct)\n\tDefaultColors\n\t{\n\t\tbtVector3 m_activeObject;\n\t\tbtVector3 m_deactivatedObject;\n\t\tbtVector3 m_wantsDeactivationObject;\n\t\tbtVector3 m_disabledDeactivationObject;\n\t\tbtVector3 m_disabledSimulationObject;\n\t\tbtVector3 m_aabb;\n\t\tbtVector3 m_contactPoint;\n\n\t\tDefaultColors()\n\t\t\t: m_activeObject(1, 1, 1),\n\t\t\t  m_deactivatedObject(0, 1, 0),\n\t\t\t  m_wantsDeactivationObject(0, 1, 1),\n\t\t\t  m_disabledDeactivationObject(1, 0, 0),\n\t\t\t  m_disabledSimulationObject(1, 1, 0),\n\t\t\t  m_aabb(1, 0, 0),\n\t\t\t  m_contactPoint(1, 1, 0)\n\t\t{\n\t\t}\n\t};\n\n\tenum DebugDrawModes\n\t{\n\t\tDBG_NoDebug = 0,\n\t\tDBG_DrawWireframe = 1,\n\t\tDBG_DrawAabb = 2,\n\t\tDBG_DrawFeaturesText = 4,\n\t\tDBG_DrawContactPoints = 8,\n\t\tDBG_NoDeactivation = 16,\n\t\tDBG_NoHelpText = 32,\n\t\tDBG_DrawText = 64,\n\t\tDBG_ProfileTimings = 128,\n\t\tDBG_EnableSatComparison = 256,\n\t\tDBG_DisableBulletLCP = 512,\n\t\tDBG_EnableCCD = 1024,\n\t\tDBG_DrawConstraints = (1 << 11),\n\t\tDBG_DrawConstraintLimits = (1 << 12),\n\t\tDBG_FastWireframe = (1 << 13),\n\t\tDBG_DrawNormals = (1 << 14),\n\t\tDBG_DrawFrames = (1 << 15),\n\t\tDBG_MAX_DEBUG_DRAW_MODE\n\t};\n\n\tvirtual ~btIDebugDraw(){};\n\n\tvirtual DefaultColors getDefaultColors() const\n\t{\n\t\tDefaultColors colors;\n\t\treturn colors;\n\t}\n\t///the default implementation for setDefaultColors has no effect. A derived class can implement it and store the colors.\n\tvirtual void setDefaultColors(const DefaultColors& /*colors*/) {}\n\n\tvirtual void drawLine(const btVector3& from, const btVector3& to, const btVector3& color) = 0;\n\n\tvirtual void drawLine(const btVector3& from, const btVector3& to, const btVector3& fromColor, const btVector3& toColor)\n\t{\n\t\t(void)toColor;\n\t\tdrawLine(from, to, fromColor);\n\t}\n\n\tvirtual void drawSphere(btScalar radius, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 center = transform.getOrigin();\n\t\tbtVector3 up = transform.getBasis().getColumn(1);\n\t\tbtVector3 axis = transform.getBasis().getColumn(0);\n\t\tbtScalar minTh = -SIMD_HALF_PI;\n\t\tbtScalar maxTh = SIMD_HALF_PI;\n\t\tbtScalar minPs = -SIMD_HALF_PI;\n\t\tbtScalar maxPs = SIMD_HALF_PI;\n\t\tbtScalar stepDegrees = 30.f;\n\t\tdrawSpherePatch(center, up, axis, radius, minTh, maxTh, minPs, maxPs, color, stepDegrees, false);\n\t\tdrawSpherePatch(center, up, -axis, radius, minTh, maxTh, minPs, maxPs, color, stepDegrees, false);\n\t}\n\n\tvirtual void drawSphere(const btVector3& p, btScalar radius, const btVector3& color)\n\t{\n\t\tbtTransform tr;\n\t\ttr.setIdentity();\n\t\ttr.setOrigin(p);\n\t\tdrawSphere(radius, tr, color);\n\t}\n\n\tvirtual void drawTriangle(const btVector3& v0, const btVector3& v1, const btVector3& v2, const btVector3& /*n0*/, const btVector3& /*n1*/, const btVector3& /*n2*/, const btVector3& color, btScalar alpha)\n\t{\n\t\tdrawTriangle(v0, v1, v2, color, alpha);\n\t}\n\tvirtual void drawTriangle(const btVector3& v0, const btVector3& v1, const btVector3& v2, const btVector3& color, btScalar /*alpha*/)\n\t{\n\t\tdrawLine(v0, v1, color);\n\t\tdrawLine(v1, v2, color);\n\t\tdrawLine(v2, v0, color);\n\t}\n\n\tvirtual void drawContactPoint(const btVector3& PointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime, const btVector3& color) = 0;\n\n\tvirtual void reportErrorWarning(const char* warningString) = 0;\n\n\tvirtual void draw3dText(const btVector3& location, const char* textString) = 0;\n\n\tvirtual void setDebugMode(int debugMode) = 0;\n\n\tvirtual int getDebugMode() const = 0;\n\n\tvirtual void drawAabb(const btVector3& from, const btVector3& to, const btVector3& color)\n\t{\n\t\tbtVector3 halfExtents = (to - from) * 0.5f;\n\t\tbtVector3 center = (to + from) * 0.5f;\n\t\tint i, j;\n\n\t\tbtVector3 edgecoord(1.f, 1.f, 1.f), pa, pb;\n\t\tfor (i = 0; i < 4; i++)\n\t\t{\n\t\t\tfor (j = 0; j < 3; j++)\n\t\t\t{\n\t\t\t\tpa = btVector3(edgecoord[0] * halfExtents[0], edgecoord[1] * halfExtents[1],\n\t\t\t\t\t\t\t   edgecoord[2] * halfExtents[2]);\n\t\t\t\tpa += center;\n\n\t\t\t\tint othercoord = j % 3;\n\t\t\t\tedgecoord[othercoord] *= -1.f;\n\t\t\t\tpb = btVector3(edgecoord[0] * halfExtents[0], edgecoord[1] * halfExtents[1],\n\t\t\t\t\t\t\t   edgecoord[2] * halfExtents[2]);\n\t\t\t\tpb += center;\n\n\t\t\t\tdrawLine(pa, pb, color);\n\t\t\t}\n\t\t\tedgecoord = btVector3(-1.f, -1.f, -1.f);\n\t\t\tif (i < 3)\n\t\t\t\tedgecoord[i] *= -1.f;\n\t\t}\n\t}\n\tvirtual void drawTransform(const btTransform& transform, btScalar orthoLen)\n\t{\n\t\tbtVector3 start = transform.getOrigin();\n\t\tdrawLine(start, start + transform.getBasis() * btVector3(orthoLen, 0, 0), btVector3(btScalar(1.), btScalar(0.3), btScalar(0.3)));\n\t\tdrawLine(start, start + transform.getBasis() * btVector3(0, orthoLen, 0), btVector3(btScalar(0.3), btScalar(1.), btScalar(0.3)));\n\t\tdrawLine(start, start + transform.getBasis() * btVector3(0, 0, orthoLen), btVector3(btScalar(0.3), btScalar(0.3), btScalar(1.)));\n\t}\n\n\tvirtual void drawArc(const btVector3& center, const btVector3& normal, const btVector3& axis, btScalar radiusA, btScalar radiusB, btScalar minAngle, btScalar maxAngle,\n\t\t\t\t\t\t const btVector3& color, bool drawSect, btScalar stepDegrees = btScalar(10.f))\n\t{\n\t\tconst btVector3& vx = axis;\n\t\tbtVector3 vy = normal.cross(axis);\n\t\tbtScalar step = stepDegrees * SIMD_RADS_PER_DEG;\n\t\tint nSteps = (int)btFabs((maxAngle - minAngle) / step);\n\t\tif (!nSteps) nSteps = 1;\n\t\tbtVector3 prev = center + radiusA * vx * btCos(minAngle) + radiusB * vy * btSin(minAngle);\n\t\tif (drawSect)\n\t\t{\n\t\t\tdrawLine(center, prev, color);\n\t\t}\n\t\tfor (int i = 1; i <= nSteps; i++)\n\t\t{\n\t\t\tbtScalar angle = minAngle + (maxAngle - minAngle) * btScalar(i) / btScalar(nSteps);\n\t\t\tbtVector3 next = center + radiusA * vx * btCos(angle) + radiusB * vy * btSin(angle);\n\t\t\tdrawLine(prev, next, color);\n\t\t\tprev = next;\n\t\t}\n\t\tif (drawSect)\n\t\t{\n\t\t\tdrawLine(center, prev, color);\n\t\t}\n\t}\n\tvirtual void drawSpherePatch(const btVector3& center, const btVector3& up, const btVector3& axis, btScalar radius,\n\t\t\t\t\t\t\t\t btScalar minTh, btScalar maxTh, btScalar minPs, btScalar maxPs, const btVector3& color, btScalar stepDegrees = btScalar(10.f), bool drawCenter = true)\n\t{\n\t\tbtVector3 vA[74];\n\t\tbtVector3 vB[74];\n\t\tbtVector3 *pvA = vA, *pvB = vB, *pT;\n\t\tbtVector3 npole = center + up * radius;\n\t\tbtVector3 spole = center - up * radius;\n\t\tbtVector3 arcStart;\n\t\tbtScalar step = stepDegrees * SIMD_RADS_PER_DEG;\n\t\tconst btVector3& kv = up;\n\t\tconst btVector3& iv = axis;\n\t\tbtVector3 jv = kv.cross(iv);\n\t\tbool drawN = false;\n\t\tbool drawS = false;\n\t\tif (minTh <= -SIMD_HALF_PI)\n\t\t{\n\t\t\tminTh = -SIMD_HALF_PI + step;\n\t\t\tdrawN = true;\n\t\t}\n\t\tif (maxTh >= SIMD_HALF_PI)\n\t\t{\n\t\t\tmaxTh = SIMD_HALF_PI - step;\n\t\t\tdrawS = true;\n\t\t}\n\t\tif (minTh > maxTh)\n\t\t{\n\t\t\tminTh = -SIMD_HALF_PI + step;\n\t\t\tmaxTh = SIMD_HALF_PI - step;\n\t\t\tdrawN = drawS = true;\n\t\t}\n\t\tint n_hor = (int)((maxTh - minTh) / step) + 1;\n\t\tif (n_hor < 2) n_hor = 2;\n\t\tbtScalar step_h = (maxTh - minTh) / btScalar(n_hor - 1);\n\t\tbool isClosed = false;\n\t\tif (minPs > maxPs)\n\t\t{\n\t\t\tminPs = -SIMD_PI + step;\n\t\t\tmaxPs = SIMD_PI;\n\t\t\tisClosed = true;\n\t\t}\n\t\telse if ((maxPs - minPs) >= SIMD_PI * btScalar(2.f))\n\t\t{\n\t\t\tisClosed = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tisClosed = false;\n\t\t}\n\t\tint n_vert = (int)((maxPs - minPs) / step) + 1;\n\t\tif (n_vert < 2) n_vert = 2;\n\t\tbtScalar step_v = (maxPs - minPs) / btScalar(n_vert - 1);\n\t\tfor (int i = 0; i < n_hor; i++)\n\t\t{\n\t\t\tbtScalar th = minTh + btScalar(i) * step_h;\n\t\t\tbtScalar sth = radius * btSin(th);\n\t\t\tbtScalar cth = radius * btCos(th);\n\t\t\tfor (int j = 0; j < n_vert; j++)\n\t\t\t{\n\t\t\t\tbtScalar psi = minPs + btScalar(j) * step_v;\n\t\t\t\tbtScalar sps = btSin(psi);\n\t\t\t\tbtScalar cps = btCos(psi);\n\t\t\t\tpvB[j] = center + cth * cps * iv + cth * sps * jv + sth * kv;\n\t\t\t\tif (i)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(pvA[j], pvB[j], color);\n\t\t\t\t}\n\t\t\t\telse if (drawS)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(spole, pvB[j], color);\n\t\t\t\t}\n\t\t\t\tif (j)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(pvB[j - 1], pvB[j], color);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tarcStart = pvB[j];\n\t\t\t\t}\n\t\t\t\tif ((i == (n_hor - 1)) && drawN)\n\t\t\t\t{\n\t\t\t\t\tdrawLine(npole, pvB[j], color);\n\t\t\t\t}\n\n\t\t\t\tif (drawCenter)\n\t\t\t\t{\n\t\t\t\t\tif (isClosed)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (j == (n_vert - 1))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdrawLine(arcStart, pvB[j], color);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (((!i) || (i == (n_hor - 1))) && ((!j) || (j == (n_vert - 1))))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdrawLine(center, pvB[j], color);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpT = pvA;\n\t\t\tpvA = pvB;\n\t\t\tpvB = pT;\n\t\t}\n\t}\n\n\tvirtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btVector3& color)\n\t{\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMin[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMin[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMin[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMin[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMin[1], bbMax[2]), btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMax[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(btVector3(bbMin[0], bbMax[1], bbMax[2]), btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t}\n\tvirtual void drawBox(const btVector3& bbMin, const btVector3& bbMax, const btTransform& trans, const btVector3& color)\n\t{\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMin[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMin[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMin[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMin[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMin[1], bbMax[2]), trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMax[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), color);\n\t\tdrawLine(trans * btVector3(bbMin[0], bbMax[1], bbMax[2]), trans * btVector3(bbMin[0], bbMin[1], bbMax[2]), color);\n\t}\n\n\tvirtual void drawCapsule(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\t\tint stepDegrees = 30;\n\n\t\tbtVector3 capStart(0.f, 0.f, 0.f);\n\t\tcapStart[upAxis] = -halfHeight;\n\n\t\tbtVector3 capEnd(0.f, 0.f, 0.f);\n\t\tcapEnd[upAxis] = halfHeight;\n\n\t\t// Draw the ends\n\t\t{\n\t\t\tbtTransform childTransform = transform;\n\t\t\tchildTransform.getOrigin() = transform * capStart;\n\t\t\t{\n\t\t\t\tbtVector3 center = childTransform.getOrigin();\n\t\t\t\tbtVector3 up = childTransform.getBasis().getColumn((upAxis + 1) % 3);\n\t\t\t\tbtVector3 axis = -childTransform.getBasis().getColumn(upAxis);\n\t\t\t\tbtScalar minTh = -SIMD_HALF_PI;\n\t\t\t\tbtScalar maxTh = SIMD_HALF_PI;\n\t\t\t\tbtScalar minPs = -SIMD_HALF_PI;\n\t\t\t\tbtScalar maxPs = SIMD_HALF_PI;\n\n\t\t\t\tdrawSpherePatch(center, up, axis, radius, minTh, maxTh, minPs, maxPs, color, btScalar(stepDegrees), false);\n\t\t\t}\n\t\t}\n\n\t\t{\n\t\t\tbtTransform childTransform = transform;\n\t\t\tchildTransform.getOrigin() = transform * capEnd;\n\t\t\t{\n\t\t\t\tbtVector3 center = childTransform.getOrigin();\n\t\t\t\tbtVector3 up = childTransform.getBasis().getColumn((upAxis + 1) % 3);\n\t\t\t\tbtVector3 axis = childTransform.getBasis().getColumn(upAxis);\n\t\t\t\tbtScalar minTh = -SIMD_HALF_PI;\n\t\t\t\tbtScalar maxTh = SIMD_HALF_PI;\n\t\t\t\tbtScalar minPs = -SIMD_HALF_PI;\n\t\t\t\tbtScalar maxPs = SIMD_HALF_PI;\n\t\t\t\tdrawSpherePatch(center, up, axis, radius, minTh, maxTh, minPs, maxPs, color, btScalar(stepDegrees), false);\n\t\t\t}\n\t\t}\n\n\t\t// Draw some additional lines\n\t\tbtVector3 start = transform.getOrigin();\n\n\t\tfor (int i = 0; i < 360; i += stepDegrees)\n\t\t{\n\t\t\tcapEnd[(upAxis + 1) % 3] = capStart[(upAxis + 1) % 3] = btSin(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tcapEnd[(upAxis + 2) % 3] = capStart[(upAxis + 2) % 3] = btCos(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tdrawLine(start + transform.getBasis() * capStart, start + transform.getBasis() * capEnd, color);\n\t\t}\n\t}\n\n\tvirtual void drawCylinder(btScalar radius, btScalar halfHeight, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 start = transform.getOrigin();\n\t\tbtVector3 offsetHeight(0, 0, 0);\n\t\toffsetHeight[upAxis] = halfHeight;\n\t\tint stepDegrees = 30;\n\t\tbtVector3 capStart(0.f, 0.f, 0.f);\n\t\tcapStart[upAxis] = -halfHeight;\n\t\tbtVector3 capEnd(0.f, 0.f, 0.f);\n\t\tcapEnd[upAxis] = halfHeight;\n\n\t\tfor (int i = 0; i < 360; i += stepDegrees)\n\t\t{\n\t\t\tcapEnd[(upAxis + 1) % 3] = capStart[(upAxis + 1) % 3] = btSin(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tcapEnd[(upAxis + 2) % 3] = capStart[(upAxis + 2) % 3] = btCos(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tdrawLine(start + transform.getBasis() * capStart, start + transform.getBasis() * capEnd, color);\n\t\t}\n\t\t// Drawing top and bottom caps of the cylinder\n\t\tbtVector3 yaxis(0, 0, 0);\n\t\tyaxis[upAxis] = btScalar(1.0);\n\t\tbtVector3 xaxis(0, 0, 0);\n\t\txaxis[(upAxis + 1) % 3] = btScalar(1.0);\n\t\tdrawArc(start - transform.getBasis() * (offsetHeight), transform.getBasis() * yaxis, transform.getBasis() * xaxis, radius, radius, 0, SIMD_2_PI, color, false, btScalar(10.0));\n\t\tdrawArc(start + transform.getBasis() * (offsetHeight), transform.getBasis() * yaxis, transform.getBasis() * xaxis, radius, radius, 0, SIMD_2_PI, color, false, btScalar(10.0));\n\t}\n\n\tvirtual void drawCone(btScalar radius, btScalar height, int upAxis, const btTransform& transform, const btVector3& color)\n\t{\n\t\tint stepDegrees = 30;\n\t\tbtVector3 start = transform.getOrigin();\n\n\t\tbtVector3 offsetHeight(0, 0, 0);\n\t\tbtScalar halfHeight = height * btScalar(0.5);\n\t\toffsetHeight[upAxis] = halfHeight;\n\t\tbtVector3 offsetRadius(0, 0, 0);\n\t\toffsetRadius[(upAxis + 1) % 3] = radius;\n\t\tbtVector3 offset2Radius(0, 0, 0);\n\t\toffset2Radius[(upAxis + 2) % 3] = radius;\n\n\t\tbtVector3 capEnd(0.f, 0.f, 0.f);\n\t\tcapEnd[upAxis] = -halfHeight;\n\n\t\tfor (int i = 0; i < 360; i += stepDegrees)\n\t\t{\n\t\t\tcapEnd[(upAxis + 1) % 3] = btSin(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tcapEnd[(upAxis + 2) % 3] = btCos(btScalar(i) * SIMD_RADS_PER_DEG) * radius;\n\t\t\tdrawLine(start + transform.getBasis() * (offsetHeight), start + transform.getBasis() * capEnd, color);\n\t\t}\n\n\t\tdrawLine(start + transform.getBasis() * (offsetHeight), start + transform.getBasis() * (-offsetHeight + offsetRadius), color);\n\t\tdrawLine(start + transform.getBasis() * (offsetHeight), start + transform.getBasis() * (-offsetHeight - offsetRadius), color);\n\t\tdrawLine(start + transform.getBasis() * (offsetHeight), start + transform.getBasis() * (-offsetHeight + offset2Radius), color);\n\t\tdrawLine(start + transform.getBasis() * (offsetHeight), start + transform.getBasis() * (-offsetHeight - offset2Radius), color);\n\n\t\t// Drawing the base of the cone\n\t\tbtVector3 yaxis(0, 0, 0);\n\t\tyaxis[upAxis] = btScalar(1.0);\n\t\tbtVector3 xaxis(0, 0, 0);\n\t\txaxis[(upAxis + 1) % 3] = btScalar(1.0);\n\t\tdrawArc(start - transform.getBasis() * (offsetHeight), transform.getBasis() * yaxis, transform.getBasis() * xaxis, radius, radius, 0, SIMD_2_PI, color, false, 10.0);\n\t}\n\n\tvirtual void drawPlane(const btVector3& planeNormal, btScalar planeConst, const btTransform& transform, const btVector3& color)\n\t{\n\t\tbtVector3 planeOrigin = planeNormal * planeConst;\n\t\tbtVector3 vec0, vec1;\n\t\tbtPlaneSpace1(planeNormal, vec0, vec1);\n\t\tbtScalar vecLen = 100.f;\n\t\tbtVector3 pt0 = planeOrigin + vec0 * vecLen;\n\t\tbtVector3 pt1 = planeOrigin - vec0 * vecLen;\n\t\tbtVector3 pt2 = planeOrigin + vec1 * vecLen;\n\t\tbtVector3 pt3 = planeOrigin - vec1 * vecLen;\n\t\tdrawLine(transform * pt0, transform * pt1, color);\n\t\tdrawLine(transform * pt2, transform * pt3, color);\n\t}\n\n\tvirtual void clearLines()\n\t{\n\t}\n\n\tvirtual void flushLines()\n\t{\n\t}\n};\n\n#endif  //BT_IDEBUG_DRAW__H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btImplicitQRSVD.h",
    "content": "/**\n Bullet Continuous Collision Detection and Physics Library\n Copyright (c) 2019 Google Inc. http://bulletphysics.org\n This software is provided 'as-is', without any express or implied warranty.\n In no event will the authors be held liable for any damages arising from the use of this software.\n Permission is granted to anyone to use this software for any purpose,\n including commercial applications, and to alter it and redistribute it freely,\n subject to the following restrictions:\n 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n 3. This notice may not be removed or altered from any source distribution.\n \n Copyright (c) 2016 Theodore Gast, Chuyuan Fu, Chenfanfu Jiang, Joseph Teran\n \n Permission is hereby granted, free of charge, to any person obtaining a copy of\n this software and associated documentation files (the \"Software\"), to deal in\n the Software without restriction, including without limitation the rights to\n use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n of the Software, and to permit persons to whom the Software is furnished to do\n so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n \n If the code is used in an article, the following paper shall be cited:\n @techreport{qrsvd:2016,\n title={Implicit-shifted Symmetric QR Singular Value Decomposition of 3x3 Matrices},\n author={Gast, Theodore and Fu, Chuyuan and Jiang, Chenfanfu and Teran, Joseph},\n year={2016},\n institution={University of California Los Angeles}\n }\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n**/\n\n#ifndef btImplicitQRSVD_h\n#define btImplicitQRSVD_h\n#include <limits>\n#include \"btMatrix3x3.h\"\nclass btMatrix2x2\n{\npublic:\n    btScalar m_00, m_01, m_10, m_11;\n    btMatrix2x2(): m_00(0), m_10(0), m_01(0), m_11(0)\n    {\n    }\n    btMatrix2x2(const btMatrix2x2& other): m_00(other.m_00),m_01(other.m_01),m_10(other.m_10),m_11(other.m_11)\n    {}\n    btScalar& operator()(int i, int j)\n    {\n        if (i == 0 && j == 0)\n            return m_00;\n        if (i == 1 && j == 0)\n            return m_10;\n        if (i == 0 && j == 1)\n            return m_01;\n        if (i == 1 && j == 1)\n            return m_11;\n        btAssert(false);\n        return m_00;\n    }\n    const btScalar& operator()(int i, int j) const\n    {\n        if (i == 0 && j == 0)\n            return m_00;\n        if (i == 1 && j == 0)\n            return m_10;\n        if (i == 0 && j == 1)\n            return m_01;\n        if (i == 1 && j == 1)\n            return m_11;\n        btAssert(false);\n        return m_00;\n    }\n    void setIdentity()\n    {\n        m_00 = 1;\n        m_11 = 1;\n        m_01 = 0;\n        m_10 = 0;\n    }\n};\n\nstatic inline btScalar copySign(btScalar x, btScalar y) {\n    if ((x < 0 && y > 0) || (x > 0 && y < 0))\n        return -x;\n    return x;\n}\n\n/**\n Class for givens rotation.\n Row rotation G*A corresponds to something like\n c -s  0\n ( s  c  0 ) A\n 0  0  1\n Column rotation A G' corresponds to something like\n c -s  0\n A ( s  c  0 )\n 0  0  1\n \n c and s are always computed so that\n ( c -s ) ( a )  =  ( * )\n s  c     b       ( 0 )\n \n Assume rowi<rowk.\n */\n\nclass GivensRotation {\npublic:\n    int rowi;\n    int rowk;\n    btScalar c;\n    btScalar s;\n    \n    inline GivensRotation(int rowi_in, int rowk_in)\n    : rowi(rowi_in)\n    , rowk(rowk_in)\n    , c(1)\n    , s(0)\n    {\n    }\n    \n    inline GivensRotation(btScalar a, btScalar b, int rowi_in, int rowk_in)\n    : rowi(rowi_in)\n    , rowk(rowk_in)\n    {\n        compute(a, b);\n    }\n    \n    ~GivensRotation() {}\n    \n    inline void transposeInPlace()\n    {\n        s = -s;\n    }\n    \n    /**\n     Compute c and s from a and b so that\n     ( c -s ) ( a )  =  ( * )\n     s  c     b       ( 0 )\n     */\n    inline void compute(const btScalar a, const btScalar b)\n    {\n        btScalar d = a * a + b * b;\n        c = 1;\n        s = 0;\n        if (d > SIMD_EPSILON) {\n            btScalar sqrtd = btSqrt(d);\n            if (sqrtd>SIMD_EPSILON)\n            {\n              btScalar t = btScalar(1.0)/sqrtd;\n              c = a * t;\n              s = -b * t;\n            }\n        }\n    }\n    \n    /**\n     This function computes c and s so that\n     ( c -s ) ( a )  =  ( 0 )\n     s  c     b       ( * )\n     */\n    inline void computeUnconventional(const btScalar a, const btScalar b)\n    {\n        btScalar d = a * a + b * b;\n        c = 0;\n        s = 1;\n        if (d > SIMD_EPSILON) {\n            btScalar t = btScalar(1.0)/btSqrt(d);\n            s = a * t;\n            c = b * t;\n        }\n    }\n    /**\n     Fill the R with the entries of this rotation\n     */\n    inline void fill(const btMatrix3x3& R) const\n    {\n        btMatrix3x3& A = const_cast<btMatrix3x3&>(R);\n        A.setIdentity();\n        A[rowi][rowi] = c;\n        A[rowk][rowi] = -s;\n        A[rowi][rowk] = s;\n        A[rowk][rowk] = c;\n    }\n    \n    inline void fill(const btMatrix2x2& R) const\n    {\n        btMatrix2x2& A = const_cast<btMatrix2x2&>(R);\n        A(rowi,rowi) = c;\n        A(rowk,rowi) = -s;\n        A(rowi,rowk) = s;\n        A(rowk,rowk) = c;\n    }\n    \n    /**\n     This function does something like\n     c -s  0\n     ( s  c  0 ) A -> A\n     0  0  1\n     It only affects row i and row k of A.\n     */\n    inline void rowRotation(btMatrix3x3& A) const\n    {\n        for (int j = 0; j < 3; j++) {\n            btScalar tau1 = A[rowi][j];\n            btScalar tau2 = A[rowk][j];\n            A[rowi][j] = c * tau1 - s * tau2;\n            A[rowk][j] = s * tau1 + c * tau2;\n        }\n    }\n    inline void rowRotation(btMatrix2x2& A) const\n    {\n        for (int j = 0; j < 2; j++) {\n            btScalar tau1 = A(rowi,j);\n            btScalar tau2 = A(rowk,j);\n            A(rowi,j) = c * tau1 - s * tau2;\n            A(rowk,j) = s * tau1 + c * tau2;\n        }\n    }\n    \n    /**\n     This function does something like\n     c  s  0\n     A ( -s  c  0 )  -> A\n     0  0  1\n     It only affects column i and column k of A.\n     */\n    inline void columnRotation(btMatrix3x3& A) const\n    {\n        for (int j = 0; j < 3; j++) {\n            btScalar tau1 = A[j][rowi];\n            btScalar tau2 = A[j][rowk];\n            A[j][rowi] = c * tau1 - s * tau2;\n            A[j][rowk] = s * tau1 + c * tau2;\n        }\n    }\n    inline void columnRotation(btMatrix2x2& A) const\n    {\n        for (int j = 0; j < 2; j++) {\n            btScalar tau1 = A(j,rowi);\n            btScalar tau2 = A(j,rowk);\n            A(j,rowi) = c * tau1 - s * tau2;\n            A(j,rowk) = s * tau1 + c * tau2;\n        }\n    }\n    \n    /**\n     Multiply givens must be for same row and column\n     **/\n    inline void operator*=(const GivensRotation& A)\n    {\n        btScalar new_c = c * A.c - s * A.s;\n        btScalar new_s = s * A.c + c * A.s;\n        c = new_c;\n        s = new_s;\n    }\n    \n    /**\n     Multiply givens must be for same row and column\n     **/\n    inline GivensRotation operator*(const GivensRotation& A) const\n    {\n        GivensRotation r(*this);\n        r *= A;\n        return r;\n    }\n};\n\n/**\n \\brief zero chasing the 3X3 matrix to bidiagonal form\n original form of H:   x x 0\n x x x\n 0 0 x\n after zero chase:\n x x 0\n 0 x x\n 0 0 x\n */\ninline void zeroChase(btMatrix3x3& H, btMatrix3x3& U, btMatrix3x3& V)\n{\n    \n    /**\n     Reduce H to of form\n     x x +\n     0 x x\n     0 0 x\n     */\n    GivensRotation r1(H[0][0], H[1][0], 0, 1);\n    /**\n     Reduce H to of form\n     x x 0\n     0 x x\n     0 + x\n     Can calculate r2 without multiplying by r1 since both entries are in first two\n     rows thus no need to divide by sqrt(a^2+b^2)\n     */\n    GivensRotation r2(1, 2);\n    if (H[1][0] != 0)\n        r2.compute(H[0][0] * H[0][1] + H[1][0] * H[1][1], H[0][0] * H[0][2] + H[1][0] * H[1][2]);\n    else\n        r2.compute(H[0][1], H[0][2]);\n    \n    r1.rowRotation(H);\n    \n    /* GivensRotation<T> r2(H(0, 1), H(0, 2), 1, 2); */\n    r2.columnRotation(H);\n    r2.columnRotation(V);\n    \n    /**\n     Reduce H to of form\n     x x 0\n     0 x x\n     0 0 x\n     */\n    GivensRotation r3(H[1][1], H[2][1], 1, 2);\n    r3.rowRotation(H);\n    \n    // Save this till end for better cache coherency\n    // r1.rowRotation(u_transpose);\n    // r3.rowRotation(u_transpose);\n    r1.columnRotation(U);\n    r3.columnRotation(U);\n}\n\n/**\n \\brief make a 3X3 matrix to upper bidiagonal form\n original form of H:   x x x\n x x x\n x x x\n after zero chase:\n x x 0\n 0 x x\n 0 0 x\n */\ninline void makeUpperBidiag(btMatrix3x3& H, btMatrix3x3& U, btMatrix3x3& V)\n{\n    U.setIdentity();\n    V.setIdentity();\n    \n    /**\n     Reduce H to of form\n     x x x\n     x x x\n     0 x x\n     */\n    \n    GivensRotation r(H[1][0], H[2][0], 1, 2);\n    r.rowRotation(H);\n    // r.rowRotation(u_transpose);\n    r.columnRotation(U);\n    // zeroChase(H, u_transpose, V);\n    zeroChase(H, U, V);\n}\n\n/**\n \\brief make a 3X3 matrix to lambda shape\n original form of H:   x x x\n *                     x x x\n *                     x x x\n after :\n *                     x 0 0\n *                     x x 0\n *                     x 0 x\n */\ninline void makeLambdaShape(btMatrix3x3& H, btMatrix3x3& U, btMatrix3x3& V)\n{\n    U.setIdentity();\n    V.setIdentity();\n    \n    /**\n     Reduce H to of form\n     *                    x x 0\n     *                    x x x\n     *                    x x x\n     */\n    \n    GivensRotation r1(H[0][1], H[0][2], 1, 2);\n    r1.columnRotation(H);\n    r1.columnRotation(V);\n    \n    /**\n     Reduce H to of form\n     *                    x x 0\n     *                    x x 0\n     *                    x x x\n     */\n    \n    r1.computeUnconventional(H[1][2], H[2][2]);\n    r1.rowRotation(H);\n    r1.columnRotation(U);\n    \n    /**\n     Reduce H to of form\n     *                    x x 0\n     *                    x x 0\n     *                    x 0 x\n     */\n    \n    GivensRotation r2(H[2][0], H[2][1], 0, 1);\n    r2.columnRotation(H);\n    r2.columnRotation(V);\n    \n    /**\n     Reduce H to of form\n     *                    x 0 0\n     *                    x x 0\n     *                    x 0 x\n     */\n    r2.computeUnconventional(H[0][1], H[1][1]);\n    r2.rowRotation(H);\n    r2.columnRotation(U);\n}\n\n/**\n \\brief 2x2 polar decomposition.\n \\param[in] A matrix.\n \\param[out] R Robustly a rotation matrix.\n \\param[out] S_Sym Symmetric. Whole matrix is stored\n \n Polar guarantees negative sign is on the small magnitude singular value.\n S is guaranteed to be the closest one to identity.\n R is guaranteed to be the closest rotation to A.\n */\ninline void polarDecomposition(const btMatrix2x2& A,\n                   GivensRotation& R,\n                   const btMatrix2x2& S_Sym)\n{\n    btScalar a = (A(0, 0) + A(1, 1)),  b = (A(1, 0) - A(0, 1));\n    btScalar denominator = btSqrt(a*a+b*b);\n    R.c = (btScalar)1;\n    R.s = (btScalar)0;\n    if (denominator > SIMD_EPSILON) { \n        /*\n         No need to use a tolerance here because x(0) and x(1) always have\n         smaller magnitude then denominator, therefore overflow never happens.\n         In Bullet, we use a tolerance anyway.\n         */\n        R.c = a / denominator;\n        R.s = -b / denominator;\n    }\n    btMatrix2x2& S = const_cast<btMatrix2x2&>(S_Sym);\n    S = A;\n    R.rowRotation(S);\n}\n\ninline void polarDecomposition(const btMatrix2x2& A,\n                   const btMatrix2x2& R,\n                   const btMatrix2x2& S_Sym)\n{\n    GivensRotation r(0, 1);\n    polarDecomposition(A, r, S_Sym);\n    r.fill(R);\n}\n\n/**\n \\brief 2x2 SVD (singular value decomposition) A=USV'\n \\param[in] A Input matrix.\n \\param[out] U Robustly a rotation matrix in Givens form\n \\param[out] Sigma matrix of singular values sorted with decreasing magnitude. The second one can be negative.\n \\param[out] V Robustly a rotation matrix in Givens form\n */\ninline void singularValueDecomposition(\n                           const btMatrix2x2& A,\n                           GivensRotation& U,\n                           const btMatrix2x2& Sigma,\n                           GivensRotation& V,\n                           const btScalar tol = 64 * std::numeric_limits<btScalar>::epsilon())\n{\n    btMatrix2x2& sigma = const_cast<btMatrix2x2&>(Sigma);\n    sigma.setIdentity();\n    btMatrix2x2 S_Sym;\n    polarDecomposition(A, U, S_Sym);\n    btScalar cosine, sine;\n    btScalar x = S_Sym(0, 0);\n    btScalar y = S_Sym(0, 1);\n    btScalar z = S_Sym(1, 1);\n    if (y == 0) {\n        // S is already diagonal\n        cosine = 1;\n        sine = 0;\n        sigma(0,0) = x;\n        sigma(1,1) = z;\n    }\n    else {\n        btScalar tau = 0.5 * (x - z);\n        btScalar val = tau * tau + y * y;\n        if (val > SIMD_EPSILON)\n        {\n        btScalar w = btSqrt(val);\n        // w > y > 0\n        btScalar t;\n        if (tau > 0) {\n            // tau + w > w > y > 0 ==> division is safe\n            t = y / (tau + w);\n        }\n        else {\n            // tau - w < -w < -y < 0 ==> division is safe\n            t = y / (tau - w);\n        }\n        cosine = btScalar(1) / btSqrt(t * t + btScalar(1));\n        sine = -t * cosine;\n        /*\n         V = [cosine -sine; sine cosine]\n         Sigma = V'SV. Only compute the diagonals for efficiency.\n         Also utilize symmetry of S and don't form V yet.\n         */\n        btScalar c2 = cosine * cosine;\n        btScalar csy = 2 * cosine * sine * y;\n        btScalar s2 = sine * sine;\n        sigma(0,0) = c2 * x - csy + s2 * z;\n        sigma(1,1) = s2 * x + csy + c2 * z;\n      } else\n      \t{\n      \t\tcosine = 1;\n        sine = 0;\n        sigma(0,0) = x;\n        sigma(1,1) = z;\n      \t}\n    }\n    \n    // Sorting\n    // Polar already guarantees negative sign is on the small magnitude singular value.\n    if (sigma(0,0) < sigma(1,1)) {\n        std::swap(sigma(0,0), sigma(1,1));\n        V.c = -sine;\n        V.s = cosine;\n    }\n    else {\n        V.c = cosine;\n        V.s = sine;\n    }\n    U *= V;\n}\n\n/**\n \\brief 2x2 SVD (singular value decomposition) A=USV'\n \\param[in] A Input matrix.\n \\param[out] U Robustly a rotation matrix.\n \\param[out] Sigma Vector of singular values sorted with decreasing magnitude. The second one can be negative.\n \\param[out] V Robustly a rotation matrix.\n */\ninline void singularValueDecomposition(\n                           const btMatrix2x2& A,\n                           const btMatrix2x2& U,\n                           const btMatrix2x2& Sigma,\n                           const btMatrix2x2& V,\n                           const btScalar tol = 64 * std::numeric_limits<btScalar>::epsilon())\n{\n    GivensRotation gv(0, 1);\n    GivensRotation gu(0, 1);\n    singularValueDecomposition(A, gu, Sigma, gv);\n    \n    gu.fill(U);\n    gv.fill(V);\n}\n\n/**\n \\brief compute wilkinsonShift of the block\n a1     b1\n b1     a2\n based on the wilkinsonShift formula\n mu = c + d - sign (d) \\ sqrt (d*d + b*b), where d = (a-c)/2\n \n */\ninline btScalar wilkinsonShift(const btScalar a1, const btScalar b1, const btScalar a2)\n{\n\tbtScalar d = (btScalar)0.5 * (a1 - a2);\n\tbtScalar bs = b1 * b1;\n\tbtScalar val = d * d + bs;\n\tif (val>SIMD_EPSILON)\n\t{\n\t\tbtScalar denom = btFabs(d) + btSqrt(val);\n\n\t\tbtScalar mu = a2 - copySign(bs / (denom), d);\n\t\t// T mu = a2 - bs / ( d + sign_d*sqrt (d*d + bs));\n\t\treturn mu;\n\t}\n\treturn a2;\n}\n\n/**\n \\brief Helper function of 3X3 SVD for processing 2X2 SVD\n */\ntemplate <int t>\ninline void process(btMatrix3x3& B, btMatrix3x3& U, btVector3& sigma, btMatrix3x3& V)\n{\n    int other = (t == 1) ? 0 : 2;\n    GivensRotation u(0, 1);\n    GivensRotation v(0, 1);\n    sigma[other] = B[other][other];\n    \n    btMatrix2x2 B_sub, sigma_sub;\n    if (t == 0)\n    {\n        B_sub.m_00 = B[0][0];\n        B_sub.m_10 = B[1][0];\n        B_sub.m_01 = B[0][1];\n        B_sub.m_11 = B[1][1];\n        sigma_sub.m_00 = sigma[0];\n        sigma_sub.m_11 = sigma[1];\n//        singularValueDecomposition(B.template block<2, 2>(t, t), u, sigma.template block<2, 1>(t, 0), v);\n        singularValueDecomposition(B_sub, u, sigma_sub, v);\n        B[0][0] = B_sub.m_00;\n        B[1][0] = B_sub.m_10;\n        B[0][1] = B_sub.m_01;\n        B[1][1] = B_sub.m_11;\n        sigma[0] = sigma_sub.m_00;\n        sigma[1] = sigma_sub.m_11;\n    }\n    else\n    {\n        B_sub.m_00 = B[1][1];\n        B_sub.m_10 = B[2][1];\n        B_sub.m_01 = B[1][2];\n        B_sub.m_11 = B[2][2];\n        sigma_sub.m_00 = sigma[1];\n        sigma_sub.m_11 = sigma[2];\n        //        singularValueDecomposition(B.template block<2, 2>(t, t), u, sigma.template block<2, 1>(t, 0), v);\n        singularValueDecomposition(B_sub, u, sigma_sub, v);\n        B[1][1] = B_sub.m_00;\n        B[2][1] = B_sub.m_10;\n        B[1][2] = B_sub.m_01;\n        B[2][2] = B_sub.m_11;\n        sigma[1] = sigma_sub.m_00;\n        sigma[2] = sigma_sub.m_11;\n    }\n    u.rowi += t;\n    u.rowk += t;\n    v.rowi += t;\n    v.rowk += t;\n    u.columnRotation(U);\n    v.columnRotation(V);\n}\n\n/**\n \\brief Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma\n */\ninline void flipSign(int i, btMatrix3x3& U, btVector3& sigma)\n{\n    sigma[i] = -sigma[i];\n    U[0][i] = -U[0][i];\n    U[1][i] = -U[1][i];\n    U[2][i] = -U[2][i];\n}\n\ninline void flipSign(int i, btMatrix3x3& U)\n{\n    U[0][i] = -U[0][i];\n    U[1][i] = -U[1][i];\n    U[2][i] = -U[2][i];\n}\n\ninline void swapCol(btMatrix3x3& A, int i, int j)\n{\n    for (int d = 0; d < 3; ++d)\n        std::swap(A[d][i], A[d][j]);\n}\n/**\n \\brief Helper function of 3X3 SVD for sorting singular values\n */\ninline void sort(btMatrix3x3& U, btVector3& sigma, btMatrix3x3& V, int t)\n{\n    if (t == 0)\n    {\n        // Case: sigma(0) > |sigma(1)| >= |sigma(2)|\n        if (btFabs(sigma[1]) >= btFabs(sigma[2])) {\n            if (sigma[1] < 0) {\n                flipSign(1, U, sigma);\n                flipSign(2, U, sigma);\n            }\n            return;\n        }\n        \n        //fix sign of sigma for both cases\n        if (sigma[2] < 0) {\n            flipSign(1, U, sigma);\n            flipSign(2, U, sigma);\n        }\n        \n        //swap sigma(1) and sigma(2) for both cases\n        std::swap(sigma[1], sigma[2]);\n        // swap the col 1 and col 2 for U,V\n        swapCol(U,1,2);\n        swapCol(V,1,2);\n        \n        // Case: |sigma(2)| >= sigma(0) > |simga(1)|\n        if (sigma[1] > sigma[0]) {\n            std::swap(sigma[0], sigma[1]);\n            swapCol(U,0,1);\n            swapCol(V,0,1);\n        }\n        \n        // Case: sigma(0) >= |sigma(2)| > |simga(1)|\n        else {\n            flipSign(2, U);\n            flipSign(2, V);\n        }\n    }\n    else if (t == 1)\n    {\n        // Case: |sigma(0)| >= sigma(1) > |sigma(2)|\n        if (btFabs(sigma[0]) >= sigma[1]) {\n            if (sigma[0] < 0) {\n                flipSign(0, U, sigma);\n                flipSign(2, U, sigma);\n            }\n            return;\n        }\n        \n        //swap sigma(0) and sigma(1) for both cases\n        std::swap(sigma[0], sigma[1]);\n        swapCol(U, 0, 1);\n        swapCol(V, 0, 1);\n        \n        // Case: sigma(1) > |sigma(2)| >= |sigma(0)|\n        if (btFabs(sigma[1]) < btFabs(sigma[2])) {\n            std::swap(sigma[1], sigma[2]);\n            swapCol(U, 1, 2);\n            swapCol(V, 1, 2);\n        }\n        \n        // Case: sigma(1) >= |sigma(0)| > |sigma(2)|\n        else {\n            flipSign(1, U);\n            flipSign(1, V);\n        }\n        \n        // fix sign for both cases\n        if (sigma[1] < 0) {\n            flipSign(1, U, sigma);\n            flipSign(2, U, sigma);\n        }\n    }\n}\n\n/**\n \\brief 3X3 SVD (singular value decomposition) A=USV'\n \\param[in] A Input matrix.\n \\param[out] U is a rotation matrix.\n \\param[out] sigma Diagonal matrix, sorted with decreasing magnitude. The third one can be negative.\n \\param[out] V is a rotation matrix.\n */\ninline int singularValueDecomposition(const btMatrix3x3& A,\n                                     btMatrix3x3& U,\n                                     btVector3& sigma,\n                                     btMatrix3x3& V,\n                                     btScalar tol = 128*std::numeric_limits<btScalar>::epsilon())\n{\n//    using std::fabs;\n    btMatrix3x3 B = A;\n    U.setIdentity();\n    V.setIdentity();\n    \n    makeUpperBidiag(B, U, V);\n    \n    int count = 0;\n    btScalar mu = (btScalar)0;\n    GivensRotation r(0, 1);\n    \n    btScalar alpha_1 = B[0][0];\n    btScalar beta_1 = B[0][1];\n    btScalar alpha_2 = B[1][1];\n    btScalar alpha_3 = B[2][2];\n    btScalar beta_2 = B[1][2];\n    btScalar gamma_1 = alpha_1 * beta_1;\n    btScalar gamma_2 = alpha_2 * beta_2;\n    btScalar val = alpha_1 * alpha_1 + alpha_2 * alpha_2 + alpha_3 * alpha_3 + beta_1 * beta_1 + beta_2 * beta_2;\n    if (val > SIMD_EPSILON)\n    {\n\t    tol *= btMax((btScalar)0.5 * btSqrt(val), (btScalar)1);\n\t\t}    \n    /**\n     Do implicit shift QR until A^T A is block diagonal\n     */\n    int max_count = 100;\n    \n    while (btFabs(beta_2) > tol && btFabs(beta_1) > tol\n           && btFabs(alpha_1) > tol && btFabs(alpha_2) > tol\n           && btFabs(alpha_3) > tol\n           && count < max_count) {\n        mu = wilkinsonShift(alpha_2 * alpha_2 + beta_1 * beta_1, gamma_2, alpha_3 * alpha_3 + beta_2 * beta_2);\n        \n        r.compute(alpha_1 * alpha_1 - mu, gamma_1);\n        r.columnRotation(B);\n        \n        r.columnRotation(V);\n        zeroChase(B, U, V);\n        \n        alpha_1 = B[0][0];\n        beta_1 = B[0][1];\n        alpha_2 = B[1][1];\n        alpha_3 = B[2][2];\n        beta_2 = B[1][2];\n        gamma_1 = alpha_1 * beta_1;\n        gamma_2 = alpha_2 * beta_2;\n        count++;\n    }\n    /**\n     Handle the cases of one of the alphas and betas being 0\n     Sorted by ease of handling and then frequency\n     of occurrence\n     \n     If B is of form\n     x x 0\n     0 x 0\n     0 0 x\n     */\n    if (btFabs(beta_2) <= tol) {\n        process<0>(B, U, sigma, V);\n        sort(U, sigma, V,0);\n    }\n    /**\n     If B is of form\n     x 0 0\n     0 x x\n     0 0 x\n     */\n    else if (btFabs(beta_1) <= tol) {\n        process<1>(B, U, sigma, V);\n        sort(U, sigma, V,1);\n    }\n    /**\n     If B is of form\n     x x 0\n     0 0 x\n     0 0 x\n     */\n    else if (btFabs(alpha_2) <= tol) {\n        /**\n         Reduce B to\n         x x 0\n         0 0 0\n         0 0 x\n         */\n        GivensRotation r1(1, 2);\n        r1.computeUnconventional(B[1][2], B[2][2]);\n        r1.rowRotation(B);\n        r1.columnRotation(U);\n        \n        process<0>(B, U, sigma, V);\n        sort(U, sigma, V, 0);\n    }\n    /**\n     If B is of form\n     x x 0\n     0 x x\n     0 0 0\n     */\n    else if (btFabs(alpha_3) <= tol) {\n        /**\n         Reduce B to\n         x x +\n         0 x 0\n         0 0 0\n         */\n        GivensRotation r1(1, 2);\n        r1.compute(B[1][1], B[1][2]);\n        r1.columnRotation(B);\n        r1.columnRotation(V);\n        /**\n         Reduce B to\n         x x 0\n         + x 0\n         0 0 0\n         */\n        GivensRotation r2(0, 2);\n        r2.compute(B[0][0], B[0][2]);\n        r2.columnRotation(B);\n        r2.columnRotation(V);\n        \n        process<0>(B, U, sigma, V);\n        sort(U, sigma, V, 0);\n    }\n    /**\n     If B is of form\n     0 x 0\n     0 x x\n     0 0 x\n     */\n    else if (btFabs(alpha_1) <= tol) {\n        /**\n         Reduce B to\n         0 0 +\n         0 x x\n         0 0 x\n         */\n        GivensRotation r1(0, 1);\n        r1.computeUnconventional(B[0][1], B[1][1]);\n        r1.rowRotation(B);\n        r1.columnRotation(U);\n        \n        /**\n         Reduce B to\n         0 0 0\n         0 x x\n         0 + x\n         */\n        GivensRotation r2(0, 2);\n        r2.computeUnconventional(B[0][2], B[2][2]);\n        r2.rowRotation(B);\n        r2.columnRotation(U);\n        \n        process<1>(B, U, sigma, V);\n        sort(U, sigma, V, 1);\n    }\n    \n    return count;\n}\n#endif /* btImplicitQRSVD_h */\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btList.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GEN_LIST_H\n#define BT_GEN_LIST_H\n\nclass btGEN_Link\n{\npublic:\n\tbtGEN_Link() : m_next(0), m_prev(0) {}\n\tbtGEN_Link(btGEN_Link *next, btGEN_Link *prev) : m_next(next), m_prev(prev) {}\n\n\tbtGEN_Link *getNext() const { return m_next; }\n\tbtGEN_Link *getPrev() const { return m_prev; }\n\n\tbool isHead() const { return m_prev == 0; }\n\tbool isTail() const { return m_next == 0; }\n\n\tvoid insertBefore(btGEN_Link *link)\n\t{\n\t\tm_next = link;\n\t\tm_prev = link->m_prev;\n\t\tm_next->m_prev = this;\n\t\tm_prev->m_next = this;\n\t}\n\n\tvoid insertAfter(btGEN_Link *link)\n\t{\n\t\tm_next = link->m_next;\n\t\tm_prev = link;\n\t\tm_next->m_prev = this;\n\t\tm_prev->m_next = this;\n\t}\n\n\tvoid remove()\n\t{\n\t\tm_next->m_prev = m_prev;\n\t\tm_prev->m_next = m_next;\n\t}\n\nprivate:\n\tbtGEN_Link *m_next;\n\tbtGEN_Link *m_prev;\n};\n\nclass btGEN_List\n{\npublic:\n\tbtGEN_List() : m_head(&m_tail, 0), m_tail(0, &m_head) {}\n\n\tbtGEN_Link *getHead() const { return m_head.getNext(); }\n\tbtGEN_Link *getTail() const { return m_tail.getPrev(); }\n\n\tvoid addHead(btGEN_Link *link) { link->insertAfter(&m_head); }\n\tvoid addTail(btGEN_Link *link) { link->insertBefore(&m_tail); }\n\nprivate:\n\tbtGEN_Link m_head;\n\tbtGEN_Link m_tail;\n};\n\n#endif  //BT_GEN_LIST_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btMatrix3x3.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MATRIX3x3_H\n#define BT_MATRIX3x3_H\n\n#include \"btVector3.h\"\n#include \"btQuaternion.h\"\n#include <stdio.h>\n\n#ifdef BT_USE_SSE\n//const __m128 ATTRIBUTE_ALIGNED16(v2220) = {2.0f, 2.0f, 2.0f, 0.0f};\n//const __m128 ATTRIBUTE_ALIGNED16(vMPPP) = {-0.0f, +0.0f, +0.0f, +0.0f};\n#define vMPPP (_mm_set_ps(+0.0f, +0.0f, +0.0f, -0.0f))\n#endif\n\n#if defined(BT_USE_SSE)\n#define v0000 (_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f))\n#define v1000 (_mm_set_ps(0.0f, 0.0f, 0.0f, 1.0f))\n#define v0100 (_mm_set_ps(0.0f, 0.0f, 1.0f, 0.0f))\n#define v0010 (_mm_set_ps(0.0f, 1.0f, 0.0f, 0.0f))\n#elif defined(BT_USE_NEON)\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v0000) = {0.0f, 0.0f, 0.0f, 0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v1000) = {1.0f, 0.0f, 0.0f, 0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v0100) = {0.0f, 1.0f, 0.0f, 0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(v0010) = {0.0f, 0.0f, 1.0f, 0.0f};\n#endif\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btMatrix3x3Data btMatrix3x3DoubleData\n#else\n#define btMatrix3x3Data btMatrix3x3FloatData\n#endif  //BT_USE_DOUBLE_PRECISION\n\n/**@brief The btMatrix3x3 class implements a 3x3 rotation matrix, to perform linear algebra in combination with btQuaternion, btTransform and btVector3.\n* Make sure to only include a pure orthogonal matrix without scaling. */\nATTRIBUTE_ALIGNED16(class)\nbtMatrix3x3\n{\n\t///Data storage for the matrix, each vector is a row of the matrix\n\tbtVector3 m_el[3];\n\npublic:\n\t/** @brief No initializaion constructor */\n\tbtMatrix3x3() {}\n\n\t//\t\texplicit btMatrix3x3(const btScalar *m) { setFromOpenGLSubMatrix(m); }\n\n\t/**@brief Constructor from Quaternion */\n\texplicit btMatrix3x3(const btQuaternion& q) { setRotation(q); }\n\t/*\n\ttemplate <typename btScalar>\n\tMatrix3x3(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{ \n\tsetEulerYPR(yaw, pitch, roll);\n\t}\n\t*/\n\t/** @brief Constructor with row major formatting */\n\tbtMatrix3x3(const btScalar& xx, const btScalar& xy, const btScalar& xz,\n\t\t\t\tconst btScalar& yx, const btScalar& yy, const btScalar& yz,\n\t\t\t\tconst btScalar& zx, const btScalar& zy, const btScalar& zz)\n\t{\n\t\tsetValue(xx, xy, xz,\n\t\t\t\t yx, yy, yz,\n\t\t\t\t zx, zy, zz);\n\t}\n\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\tSIMD_FORCE_INLINE btMatrix3x3(const btSimdFloat4 v0, const btSimdFloat4 v1, const btSimdFloat4 v2)\n\t{\n\t\tm_el[0].mVec128 = v0;\n\t\tm_el[1].mVec128 = v1;\n\t\tm_el[2].mVec128 = v2;\n\t}\n\n\tSIMD_FORCE_INLINE btMatrix3x3(const btVector3& v0, const btVector3& v1, const btVector3& v2)\n\t{\n\t\tm_el[0] = v0;\n\t\tm_el[1] = v1;\n\t\tm_el[2] = v2;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btMatrix3x3(const btMatrix3x3& rhs)\n\t{\n\t\tm_el[0].mVec128 = rhs.m_el[0].mVec128;\n\t\tm_el[1].mVec128 = rhs.m_el[1].mVec128;\n\t\tm_el[2].mVec128 = rhs.m_el[2].mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& m)\n\t{\n\t\tm_el[0].mVec128 = m.m_el[0].mVec128;\n\t\tm_el[1].mVec128 = m.m_el[1].mVec128;\n\t\tm_el[2].mVec128 = m.m_el[2].mVec128;\n\n\t\treturn *this;\n\t}\n\n#else\n\n\t/** @brief Copy constructor */\n\tSIMD_FORCE_INLINE btMatrix3x3(const btMatrix3x3& other)\n\t{\n\t\tm_el[0] = other.m_el[0];\n\t\tm_el[1] = other.m_el[1];\n\t\tm_el[2] = other.m_el[2];\n\t}\n\n\t/** @brief Assignment Operator */\n\tSIMD_FORCE_INLINE btMatrix3x3& operator=(const btMatrix3x3& other)\n\t{\n\t\tm_el[0] = other.m_el[0];\n\t\tm_el[1] = other.m_el[1];\n\t\tm_el[2] = other.m_el[2];\n\t\treturn *this;\n\t}\n    \n    SIMD_FORCE_INLINE btMatrix3x3(const btVector3& v0, const btVector3& v1, const btVector3& v2)\n    {\n        m_el[0] = v0;\n        m_el[1] = v1;\n        m_el[2] = v2;\n    }\n\n#endif\n\n\t/** @brief Get a column of the matrix as a vector \n\t*  @param i Column number 0 indexed */\n\tSIMD_FORCE_INLINE btVector3 getColumn(int i) const\n\t{\n\t\treturn btVector3(m_el[0][i], m_el[1][i], m_el[2][i]);\n\t}\n\n\t/** @brief Get a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE const btVector3& getRow(int i) const\n\t{\n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i];\n\t}\n\n\t/** @brief Get a mutable reference to a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE btVector3& operator[](int i)\n\t{\n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i];\n\t}\n\n\t/** @brief Get a const reference to a row of the matrix as a vector \n\t*  @param i Row number 0 indexed */\n\tSIMD_FORCE_INLINE const btVector3& operator[](int i) const\n\t{\n\t\tbtFullAssert(0 <= i && i < 3);\n\t\treturn m_el[i];\n\t}\n\n\t/** @brief Multiply by the target matrix on the right\n\t*  @param m Rotation matrix to be applied \n\t* Equivilant to this = this * m */\n\tbtMatrix3x3& operator*=(const btMatrix3x3& m);\n\n\t/** @brief Adds by the target matrix on the right\n\t*  @param m matrix to be applied \n\t* Equivilant to this = this + m */\n\tbtMatrix3x3& operator+=(const btMatrix3x3& m);\n\n\t/** @brief Substractss by the target matrix on the right\n\t*  @param m matrix to be applied \n\t* Equivilant to this = this - m */\n\tbtMatrix3x3& operator-=(const btMatrix3x3& m);\n\n\t/** @brief Set from the rotational part of a 4x4 OpenGL matrix\n\t*  @param m A pointer to the beginning of the array of scalars*/\n\tvoid setFromOpenGLSubMatrix(const btScalar* m)\n\t{\n\t\tm_el[0].setValue(m[0], m[4], m[8]);\n\t\tm_el[1].setValue(m[1], m[5], m[9]);\n\t\tm_el[2].setValue(m[2], m[6], m[10]);\n\t}\n\t/** @brief Set the values of the matrix explicitly (row major)\n\t*  @param xx Top left\n\t*  @param xy Top Middle\n\t*  @param xz Top Right\n\t*  @param yx Middle Left\n\t*  @param yy Middle Middle\n\t*  @param yz Middle Right\n\t*  @param zx Bottom Left\n\t*  @param zy Bottom Middle\n\t*  @param zz Bottom Right*/\n\tvoid setValue(const btScalar& xx, const btScalar& xy, const btScalar& xz,\n\t\t\t\t  const btScalar& yx, const btScalar& yy, const btScalar& yz,\n\t\t\t\t  const btScalar& zx, const btScalar& zy, const btScalar& zz)\n\t{\n\t\tm_el[0].setValue(xx, xy, xz);\n\t\tm_el[1].setValue(yx, yy, yz);\n\t\tm_el[2].setValue(zx, zy, zz);\n\t}\n\n\t/** @brief Set the matrix from a quaternion\n\t*  @param q The Quaternion to match */\n\tvoid setRotation(const btQuaternion& q)\n\t{\n\t\tbtScalar d = q.length2();\n\t\tbtFullAssert(d != btScalar(0.0));\n\t\tbtScalar s = btScalar(2.0) / d;\n\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vs, Q = q.get128();\n\t\t__m128i Qi = btCastfTo128i(Q);\n\t\t__m128 Y, Z;\n\t\t__m128 V1, V2, V3;\n\t\t__m128 V11, V21, V31;\n\t\t__m128 NQ = _mm_xor_ps(Q, btvMzeroMask);\n\t\t__m128i NQi = btCastfTo128i(NQ);\n\n\t\tV1 = btCastiTo128f(_mm_shuffle_epi32(Qi, BT_SHUFFLE(1, 0, 2, 3)));  // Y X Z W\n\t\tV2 = _mm_shuffle_ps(NQ, Q, BT_SHUFFLE(0, 0, 1, 3));                 // -X -X  Y  W\n\t\tV3 = btCastiTo128f(_mm_shuffle_epi32(Qi, BT_SHUFFLE(2, 1, 0, 3)));  // Z Y X W\n\t\tV1 = _mm_xor_ps(V1, vMPPP);                                         //\tchange the sign of the first element\n\n\t\tV11 = btCastiTo128f(_mm_shuffle_epi32(Qi, BT_SHUFFLE(1, 1, 0, 3)));  // Y Y X W\n\t\tV21 = _mm_unpackhi_ps(Q, Q);                                         //  Z  Z  W  W\n\t\tV31 = _mm_shuffle_ps(Q, NQ, BT_SHUFFLE(0, 2, 0, 3));                 //  X  Z -X -W\n\n\t\tV2 = V2 * V1;   //\n\t\tV1 = V1 * V11;  //\n\t\tV3 = V3 * V31;  //\n\n\t\tV11 = _mm_shuffle_ps(NQ, Q, BT_SHUFFLE(2, 3, 1, 3));                //\t-Z -W  Y  W\n\t\tV11 = V11 * V21;                                                    //\n\t\tV21 = _mm_xor_ps(V21, vMPPP);                                       //\tchange the sign of the first element\n\t\tV31 = _mm_shuffle_ps(Q, NQ, BT_SHUFFLE(3, 3, 1, 3));                //\t W  W -Y -W\n\t\tV31 = _mm_xor_ps(V31, vMPPP);                                       //\tchange the sign of the first element\n\t\tY = btCastiTo128f(_mm_shuffle_epi32(NQi, BT_SHUFFLE(3, 2, 0, 3)));  // -W -Z -X -W\n\t\tZ = btCastiTo128f(_mm_shuffle_epi32(Qi, BT_SHUFFLE(1, 0, 1, 3)));   //  Y  X  Y  W\n\n\t\tvs = _mm_load_ss(&s);\n\t\tV21 = V21 * Y;\n\t\tV31 = V31 * Z;\n\n\t\tV1 = V1 + V11;\n\t\tV2 = V2 + V21;\n\t\tV3 = V3 + V31;\n\n\t\tvs = bt_splat3_ps(vs, 0);\n\t\t//\ts ready\n\t\tV1 = V1 * vs;\n\t\tV2 = V2 * vs;\n\t\tV3 = V3 * vs;\n\n\t\tV1 = V1 + v1000;\n\t\tV2 = V2 + v0100;\n\t\tV3 = V3 + v0010;\n\n\t\tm_el[0] = V1;\n\t\tm_el[1] = V2;\n\t\tm_el[2] = V3;\n#else\n\t\tbtScalar xs = q.x() * s, ys = q.y() * s, zs = q.z() * s;\n\t\tbtScalar wx = q.w() * xs, wy = q.w() * ys, wz = q.w() * zs;\n\t\tbtScalar xx = q.x() * xs, xy = q.x() * ys, xz = q.x() * zs;\n\t\tbtScalar yy = q.y() * ys, yz = q.y() * zs, zz = q.z() * zs;\n\t\tsetValue(\n\t\t\tbtScalar(1.0) - (yy + zz), xy - wz, xz + wy,\n\t\t\txy + wz, btScalar(1.0) - (xx + zz), yz - wx,\n\t\t\txz - wy, yz + wx, btScalar(1.0) - (xx + yy));\n#endif\n\t}\n\n\t/** @brief Set the matrix from euler angles using YPR around YXZ respectively\n\t*  @param yaw Yaw about Y axis\n\t*  @param pitch Pitch about X axis\n\t*  @param roll Roll about Z axis \n\t*/\n\tvoid setEulerYPR(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{\n\t\tsetEulerZYX(roll, pitch, yaw);\n\t}\n\n\t/** @brief Set the matrix from euler angles YPR around ZYX axes\n\t* @param eulerX Roll about X axis\n\t* @param eulerY Pitch around Y axis\n\t* @param eulerZ Yaw about Z axis\n\t* \n\t* These angles are used to produce a rotation matrix. The euler\n\t* angles are applied in ZYX order. I.e a vector is first rotated \n\t* about X then Y and then Z\n\t**/\n\tvoid setEulerZYX(btScalar eulerX, btScalar eulerY, btScalar eulerZ)\n\t{\n\t\t///@todo proposed to reverse this since it's labeled zyx but takes arguments xyz and it will match all other parts of the code\n\t\tbtScalar ci(btCos(eulerX));\n\t\tbtScalar cj(btCos(eulerY));\n\t\tbtScalar ch(btCos(eulerZ));\n\t\tbtScalar si(btSin(eulerX));\n\t\tbtScalar sj(btSin(eulerY));\n\t\tbtScalar sh(btSin(eulerZ));\n\t\tbtScalar cc = ci * ch;\n\t\tbtScalar cs = ci * sh;\n\t\tbtScalar sc = si * ch;\n\t\tbtScalar ss = si * sh;\n\n\t\tsetValue(cj * ch, sj * sc - cs, sj * cc + ss,\n\t\t\t\t cj * sh, sj * ss + cc, sj * cs - sc,\n\t\t\t\t -sj, cj * si, cj * ci);\n\t}\n\n\t/**@brief Set the matrix to the identity */\n\tvoid setIdentity()\n\t{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t\tm_el[0] = v1000;\n\t\tm_el[1] = v0100;\n\t\tm_el[2] = v0010;\n#else\n\t\tsetValue(btScalar(1.0), btScalar(0.0), btScalar(0.0),\n\t\t\t\t btScalar(0.0), btScalar(1.0), btScalar(0.0),\n\t\t\t\t btScalar(0.0), btScalar(0.0), btScalar(1.0));\n#endif\n\t}\n    \n    /**@brief Set the matrix to the identity */\n    void setZero()\n    {\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n        m_el[0] = v0000;\n        m_el[1] = v0000;\n        m_el[2] = v0000;\n#else\n        setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0),\n                 btScalar(0.0), btScalar(0.0), btScalar(0.0),\n                 btScalar(0.0), btScalar(0.0), btScalar(0.0));\n#endif\n    }\n\n\tstatic const btMatrix3x3& getIdentity()\n\t{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t\tstatic const btMatrix3x3\n\t\t\tidentityMatrix(v1000, v0100, v0010);\n#else\n\t\tstatic const btMatrix3x3\n\t\t\tidentityMatrix(\n\t\t\t\tbtScalar(1.0), btScalar(0.0), btScalar(0.0),\n\t\t\t\tbtScalar(0.0), btScalar(1.0), btScalar(0.0),\n\t\t\t\tbtScalar(0.0), btScalar(0.0), btScalar(1.0));\n#endif\n\t\treturn identityMatrix;\n\t}\n\n\t/**@brief Fill the rotational part of an OpenGL matrix and clear the shear/perspective\n\t* @param m The array to be filled */\n\tvoid getOpenGLSubMatrix(btScalar * m) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 v0 = m_el[0].mVec128;\n\t\t__m128 v1 = m_el[1].mVec128;\n\t\t__m128 v2 = m_el[2].mVec128;  //  x2 y2 z2 w2\n\t\t__m128* vm = (__m128*)m;\n\t\t__m128 vT;\n\n\t\tv2 = _mm_and_ps(v2, btvFFF0fMask);  //  x2 y2 z2 0\n\n\t\tvT = _mm_unpackhi_ps(v0, v1);  //\tz0 z1 * *\n\t\tv0 = _mm_unpacklo_ps(v0, v1);  //\tx0 x1 y0 y1\n\n\t\tv1 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(2, 3, 1, 3));                    // y0 y1 y2 0\n\t\tv0 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(0, 1, 0, 3));                    // x0 x1 x2 0\n\t\tv2 = btCastdTo128f(_mm_move_sd(btCastfTo128d(v2), btCastfTo128d(vT)));  // z0 z1 z2 0\n\n\t\tvm[0] = v0;\n\t\tvm[1] = v1;\n\t\tvm[2] = v2;\n#elif defined(BT_USE_NEON)\n\t\t// note: zeros the w channel. We can preserve it at the cost of two more vtrn instructions.\n\t\tstatic const uint32x2_t zMask = (const uint32x2_t){static_cast<uint32_t>(-1), 0};\n\t\tfloat32x4_t* vm = (float32x4_t*)m;\n\t\tfloat32x4x2_t top = vtrnq_f32(m_el[0].mVec128, m_el[1].mVec128);               // {x0 x1 z0 z1}, {y0 y1 w0 w1}\n\t\tfloat32x2x2_t bl = vtrn_f32(vget_low_f32(m_el[2].mVec128), vdup_n_f32(0.0f));  // {x2  0 }, {y2 0}\n\t\tfloat32x4_t v0 = vcombine_f32(vget_low_f32(top.val[0]), bl.val[0]);\n\t\tfloat32x4_t v1 = vcombine_f32(vget_low_f32(top.val[1]), bl.val[1]);\n\t\tfloat32x2_t q = (float32x2_t)vand_u32((uint32x2_t)vget_high_f32(m_el[2].mVec128), zMask);\n\t\tfloat32x4_t v2 = vcombine_f32(vget_high_f32(top.val[0]), q);  // z0 z1 z2  0\n\n\t\tvm[0] = v0;\n\t\tvm[1] = v1;\n\t\tvm[2] = v2;\n#else\n\t\tm[0] = btScalar(m_el[0].x());\n\t\tm[1] = btScalar(m_el[1].x());\n\t\tm[2] = btScalar(m_el[2].x());\n\t\tm[3] = btScalar(0.0);\n\t\tm[4] = btScalar(m_el[0].y());\n\t\tm[5] = btScalar(m_el[1].y());\n\t\tm[6] = btScalar(m_el[2].y());\n\t\tm[7] = btScalar(0.0);\n\t\tm[8] = btScalar(m_el[0].z());\n\t\tm[9] = btScalar(m_el[1].z());\n\t\tm[10] = btScalar(m_el[2].z());\n\t\tm[11] = btScalar(0.0);\n#endif\n\t}\n\n\t/**@brief Get the matrix represented as a quaternion \n\t* @param q The quaternion which will be set */\n\tvoid getRotation(btQuaternion & q) const\n\t{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t\tbtScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();\n\t\tbtScalar s, x;\n\n\t\tunion {\n\t\t\tbtSimdFloat4 vec;\n\t\t\tbtScalar f[4];\n\t\t} temp;\n\n\t\tif (trace > btScalar(0.0))\n\t\t{\n\t\t\tx = trace + btScalar(1.0);\n\n\t\t\ttemp.f[0] = m_el[2].y() - m_el[1].z();\n\t\t\ttemp.f[1] = m_el[0].z() - m_el[2].x();\n\t\t\ttemp.f[2] = m_el[1].x() - m_el[0].y();\n\t\t\ttemp.f[3] = x;\n\t\t\t//temp.f[3]= s * btScalar(0.5);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tint i, j, k;\n\t\t\tif (m_el[0].x() < m_el[1].y())\n\t\t\t{\n\t\t\t\tif (m_el[1].y() < m_el[2].z())\n\t\t\t\t{\n\t\t\t\t\ti = 2;\n\t\t\t\t\tj = 0;\n\t\t\t\t\tk = 1;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ti = 1;\n\t\t\t\t\tj = 2;\n\t\t\t\t\tk = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (m_el[0].x() < m_el[2].z())\n\t\t\t\t{\n\t\t\t\t\ti = 2;\n\t\t\t\t\tj = 0;\n\t\t\t\t\tk = 1;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ti = 0;\n\t\t\t\t\tj = 1;\n\t\t\t\t\tk = 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tx = m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0);\n\n\t\t\ttemp.f[3] = (m_el[k][j] - m_el[j][k]);\n\t\t\ttemp.f[j] = (m_el[j][i] + m_el[i][j]);\n\t\t\ttemp.f[k] = (m_el[k][i] + m_el[i][k]);\n\t\t\ttemp.f[i] = x;\n\t\t\t//temp.f[i] = s * btScalar(0.5);\n\t\t}\n\n\t\ts = btSqrt(x);\n\t\tq.set128(temp.vec);\n\t\ts = btScalar(0.5) / s;\n\n\t\tq *= s;\n#else\n\t\tbtScalar trace = m_el[0].x() + m_el[1].y() + m_el[2].z();\n\n\t\tbtScalar temp[4];\n\n\t\tif (trace > btScalar(0.0))\n\t\t{\n\t\t\tbtScalar s = btSqrt(trace + btScalar(1.0));\n\t\t\ttemp[3] = (s * btScalar(0.5));\n\t\t\ts = btScalar(0.5) / s;\n\n\t\t\ttemp[0] = ((m_el[2].y() - m_el[1].z()) * s);\n\t\t\ttemp[1] = ((m_el[0].z() - m_el[2].x()) * s);\n\t\t\ttemp[2] = ((m_el[1].x() - m_el[0].y()) * s);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tint i = m_el[0].x() < m_el[1].y() ? (m_el[1].y() < m_el[2].z() ? 2 : 1) : (m_el[0].x() < m_el[2].z() ? 2 : 0);\n\t\t\tint j = (i + 1) % 3;\n\t\t\tint k = (i + 2) % 3;\n\n\t\t\tbtScalar s = btSqrt(m_el[i][i] - m_el[j][j] - m_el[k][k] + btScalar(1.0));\n\t\t\ttemp[i] = s * btScalar(0.5);\n\t\t\ts = btScalar(0.5) / s;\n\n\t\t\ttemp[3] = (m_el[k][j] - m_el[j][k]) * s;\n\t\t\ttemp[j] = (m_el[j][i] + m_el[i][j]) * s;\n\t\t\ttemp[k] = (m_el[k][i] + m_el[i][k]) * s;\n\t\t}\n\t\tq.setValue(temp[0], temp[1], temp[2], temp[3]);\n#endif\n\t}\n\n\t/**@brief Get the matrix represented as euler angles around YXZ, roundtrip with setEulerYPR\n\t* @param yaw Yaw around Y axis\n\t* @param pitch Pitch around X axis\n\t* @param roll around Z axis */\n\tvoid getEulerYPR(btScalar & yaw, btScalar & pitch, btScalar & roll) const\n\t{\n\t\t// first use the normal calculus\n\t\tyaw = btScalar(btAtan2(m_el[1].x(), m_el[0].x()));\n\t\tpitch = btScalar(btAsin(-m_el[2].x()));\n\t\troll = btScalar(btAtan2(m_el[2].y(), m_el[2].z()));\n\n\t\t// on pitch = +/-HalfPI\n\t\tif (btFabs(pitch) == SIMD_HALF_PI)\n\t\t{\n\t\t\tif (yaw > 0)\n\t\t\t\tyaw -= SIMD_PI;\n\t\t\telse\n\t\t\t\tyaw += SIMD_PI;\n\n\t\t\tif (roll > 0)\n\t\t\t\troll -= SIMD_PI;\n\t\t\telse\n\t\t\t\troll += SIMD_PI;\n\t\t}\n\t};\n\n\t/**@brief Get the matrix represented as euler angles around ZYX\n\t* @param yaw Yaw around Z axis\n\t* @param pitch Pitch around Y axis\n\t* @param roll around X axis \n\t* @param solution_number Which solution of two possible solutions ( 1 or 2) are possible values*/\n\tvoid getEulerZYX(btScalar & yaw, btScalar & pitch, btScalar & roll, unsigned int solution_number = 1) const\n\t{\n\t\tstruct Euler\n\t\t{\n\t\t\tbtScalar yaw;\n\t\t\tbtScalar pitch;\n\t\t\tbtScalar roll;\n\t\t};\n\n\t\tEuler euler_out;\n\t\tEuler euler_out2;  //second solution\n\t\t//get the pointer to the raw data\n\n\t\t// Check that pitch is not at a singularity\n\t\tif (btFabs(m_el[2].x()) >= 1)\n\t\t{\n\t\t\teuler_out.yaw = 0;\n\t\t\teuler_out2.yaw = 0;\n\n\t\t\t// From difference of angles formula\n\t\t\tbtScalar delta = btAtan2(m_el[0].x(), m_el[0].z());\n\t\t\tif (m_el[2].x() > 0)  //gimbal locked up\n\t\t\t{\n\t\t\t\teuler_out.pitch = SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out2.pitch = SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out.roll = euler_out.pitch + delta;\n\t\t\t\teuler_out2.roll = euler_out.pitch + delta;\n\t\t\t}\n\t\t\telse  // gimbal locked down\n\t\t\t{\n\t\t\t\teuler_out.pitch = -SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out2.pitch = -SIMD_PI / btScalar(2.0);\n\t\t\t\teuler_out.roll = -euler_out.pitch + delta;\n\t\t\t\teuler_out2.roll = -euler_out.pitch + delta;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\teuler_out.pitch = -btAsin(m_el[2].x());\n\t\t\teuler_out2.pitch = SIMD_PI - euler_out.pitch;\n\n\t\t\teuler_out.roll = btAtan2(m_el[2].y() / btCos(euler_out.pitch),\n\t\t\t\t\t\t\t\t\t m_el[2].z() / btCos(euler_out.pitch));\n\t\t\teuler_out2.roll = btAtan2(m_el[2].y() / btCos(euler_out2.pitch),\n\t\t\t\t\t\t\t\t\t  m_el[2].z() / btCos(euler_out2.pitch));\n\n\t\t\teuler_out.yaw = btAtan2(m_el[1].x() / btCos(euler_out.pitch),\n\t\t\t\t\t\t\t\t\tm_el[0].x() / btCos(euler_out.pitch));\n\t\t\teuler_out2.yaw = btAtan2(m_el[1].x() / btCos(euler_out2.pitch),\n\t\t\t\t\t\t\t\t\t m_el[0].x() / btCos(euler_out2.pitch));\n\t\t}\n\n\t\tif (solution_number == 1)\n\t\t{\n\t\t\tyaw = euler_out.yaw;\n\t\t\tpitch = euler_out.pitch;\n\t\t\troll = euler_out.roll;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tyaw = euler_out2.yaw;\n\t\t\tpitch = euler_out2.pitch;\n\t\t\troll = euler_out2.roll;\n\t\t}\n\t}\n\n\t/**@brief Create a scaled copy of the matrix \n\t* @param s Scaling vector The elements of the vector will scale each column */\n\n\tbtMatrix3x3 scaled(const btVector3& s) const\n\t{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t\treturn btMatrix3x3(m_el[0] * s, m_el[1] * s, m_el[2] * s);\n#else\n\t\treturn btMatrix3x3(\n\t\t\tm_el[0].x() * s.x(), m_el[0].y() * s.y(), m_el[0].z() * s.z(),\n\t\t\tm_el[1].x() * s.x(), m_el[1].y() * s.y(), m_el[1].z() * s.z(),\n\t\t\tm_el[2].x() * s.x(), m_el[2].y() * s.y(), m_el[2].z() * s.z());\n#endif\n\t}\n\n\t/**@brief Return the determinant of the matrix */\n\tbtScalar determinant() const;\n\t/**@brief Return the adjoint of the matrix */\n\tbtMatrix3x3 adjoint() const;\n\t/**@brief Return the matrix with all values non negative */\n\tbtMatrix3x3 absolute() const;\n\t/**@brief Return the transpose of the matrix */\n\tbtMatrix3x3 transpose() const;\n\t/**@brief Return the inverse of the matrix */\n\tbtMatrix3x3 inverse() const;\n\n\t/// Solve A * x = b, where b is a column vector. This is more efficient\n\t/// than computing the inverse in one-shot cases.\n\t///Solve33 is from Box2d, thanks to Erin Catto,\n\tbtVector3 solve33(const btVector3& b) const\n\t{\n\t\tbtVector3 col1 = getColumn(0);\n\t\tbtVector3 col2 = getColumn(1);\n\t\tbtVector3 col3 = getColumn(2);\n\n\t\tbtScalar det = btDot(col1, btCross(col2, col3));\n\t\tif (btFabs(det) > SIMD_EPSILON)\n\t\t{\n\t\t\tdet = 1.0f / det;\n\t\t}\n\t\tbtVector3 x;\n\t\tx[0] = det * btDot(b, btCross(col2, col3));\n\t\tx[1] = det * btDot(col1, btCross(b, col3));\n\t\tx[2] = det * btDot(col1, btCross(col2, b));\n\t\treturn x;\n\t}\n\n\tbtMatrix3x3 transposeTimes(const btMatrix3x3& m) const;\n\tbtMatrix3x3 timesTranspose(const btMatrix3x3& m) const;\n\n\tSIMD_FORCE_INLINE btScalar tdotx(const btVector3& v) const\n\t{\n\t\treturn m_el[0].x() * v.x() + m_el[1].x() * v.y() + m_el[2].x() * v.z();\n\t}\n\tSIMD_FORCE_INLINE btScalar tdoty(const btVector3& v) const\n\t{\n\t\treturn m_el[0].y() * v.x() + m_el[1].y() * v.y() + m_el[2].y() * v.z();\n\t}\n\tSIMD_FORCE_INLINE btScalar tdotz(const btVector3& v) const\n\t{\n\t\treturn m_el[0].z() * v.x() + m_el[1].z() * v.y() + m_el[2].z() * v.z();\n\t}\n\n\t///extractRotation is from \"A robust method to extract the rotational part of deformations\"\n\t///See http://dl.acm.org/citation.cfm?doid=2994258.2994269\n\t///decomposes a matrix A in a orthogonal matrix R and a\n\t///symmetric matrix S:\n\t///A = R*S.\n\t///note that R can include both rotation and scaling.\n\tSIMD_FORCE_INLINE void extractRotation(btQuaternion & q, btScalar tolerance = 1.0e-9, int maxIter = 100)\n\t{\n\t\tint iter = 0;\n\t\tbtScalar w;\n\t\tconst btMatrix3x3& A = *this;\n\t\tfor (iter = 0; iter < maxIter; iter++)\n\t\t{\n\t\t\tbtMatrix3x3 R(q);\n\t\t\tbtVector3 omega = (R.getColumn(0).cross(A.getColumn(0)) + R.getColumn(1).cross(A.getColumn(1)) + R.getColumn(2).cross(A.getColumn(2))) * (btScalar(1.0) / btFabs(R.getColumn(0).dot(A.getColumn(0)) + R.getColumn(1).dot(A.getColumn(1)) + R.getColumn(2).dot(A.getColumn(2))) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  tolerance);\n\t\t\tw = omega.norm();\n\t\t\tif (w < tolerance)\n\t\t\t\tbreak;\n\t\t\tq = btQuaternion(btVector3((btScalar(1.0) / w) * omega), w) *\n\t\t\t\tq;\n\t\t\tq.normalize();\n\t\t}\n\t}\n\n\t/**@brief diagonalizes this matrix by the Jacobi method.\n\t* @param rot stores the rotation from the coordinate system in which the matrix is diagonal to the original\n\t* coordinate system, i.e., old_this = rot * new_this * rot^T.\n\t* @param threshold See iteration\n\t* @param iteration The iteration stops when all off-diagonal elements are less than the threshold multiplied\n\t* by the sum of the absolute values of the diagonal, or when maxSteps have been executed.\n\t*\n\t* Note that this matrix is assumed to be symmetric.\n\t*/\n\tvoid diagonalize(btMatrix3x3 & rot, btScalar threshold, int maxSteps)\n\t{\n\t\trot.setIdentity();\n\t\tfor (int step = maxSteps; step > 0; step--)\n\t\t{\n\t\t\t// find off-diagonal element [p][q] with largest magnitude\n\t\t\tint p = 0;\n\t\t\tint q = 1;\n\t\t\tint r = 2;\n\t\t\tbtScalar max = btFabs(m_el[0][1]);\n\t\t\tbtScalar v = btFabs(m_el[0][2]);\n\t\t\tif (v > max)\n\t\t\t{\n\t\t\t\tq = 2;\n\t\t\t\tr = 1;\n\t\t\t\tmax = v;\n\t\t\t}\n\t\t\tv = btFabs(m_el[1][2]);\n\t\t\tif (v > max)\n\t\t\t{\n\t\t\t\tp = 1;\n\t\t\t\tq = 2;\n\t\t\t\tr = 0;\n\t\t\t\tmax = v;\n\t\t\t}\n\n\t\t\tbtScalar t = threshold * (btFabs(m_el[0][0]) + btFabs(m_el[1][1]) + btFabs(m_el[2][2]));\n\t\t\tif (max <= t)\n\t\t\t{\n\t\t\t\tif (max <= SIMD_EPSILON * t)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstep = 1;\n\t\t\t}\n\n\t\t\t// compute Jacobi rotation J which leads to a zero for element [p][q]\n\t\t\tbtScalar mpq = m_el[p][q];\n\t\t\tbtScalar theta = (m_el[q][q] - m_el[p][p]) / (2 * mpq);\n\t\t\tbtScalar theta2 = theta * theta;\n\t\t\tbtScalar cos;\n\t\t\tbtScalar sin;\n\t\t\tif (theta2 * theta2 < btScalar(10 / SIMD_EPSILON))\n\t\t\t{\n\t\t\t\tt = (theta >= 0) ? 1 / (theta + btSqrt(1 + theta2))\n\t\t\t\t\t\t\t\t : 1 / (theta - btSqrt(1 + theta2));\n\t\t\t\tcos = 1 / btSqrt(1 + t * t);\n\t\t\t\tsin = cos * t;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// approximation for large theta-value, i.e., a nearly diagonal matrix\n\t\t\t\tt = 1 / (theta * (2 + btScalar(0.5) / theta2));\n\t\t\t\tcos = 1 - btScalar(0.5) * t * t;\n\t\t\t\tsin = cos * t;\n\t\t\t}\n\n\t\t\t// apply rotation to matrix (this = J^T * this * J)\n\t\t\tm_el[p][q] = m_el[q][p] = 0;\n\t\t\tm_el[p][p] -= t * mpq;\n\t\t\tm_el[q][q] += t * mpq;\n\t\t\tbtScalar mrp = m_el[r][p];\n\t\t\tbtScalar mrq = m_el[r][q];\n\t\t\tm_el[r][p] = m_el[p][r] = cos * mrp - sin * mrq;\n\t\t\tm_el[r][q] = m_el[q][r] = cos * mrq + sin * mrp;\n\n\t\t\t// apply rotation to rot (rot = rot * J)\n\t\t\tfor (int i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tbtVector3& row = rot[i];\n\t\t\t\tmrp = row[p];\n\t\t\t\tmrq = row[q];\n\t\t\t\trow[p] = cos * mrp - sin * mrq;\n\t\t\t\trow[q] = cos * mrq + sin * mrp;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**@brief Calculate the matrix cofactor \n\t* @param r1 The first row to use for calculating the cofactor\n\t* @param c1 The first column to use for calculating the cofactor\n\t* @param r1 The second row to use for calculating the cofactor\n\t* @param c1 The second column to use for calculating the cofactor\n\t* See http://en.wikipedia.org/wiki/Cofactor_(linear_algebra) for more details\n\t*/\n\tbtScalar cofac(int r1, int c1, int r2, int c2) const\n\t{\n\t\treturn m_el[r1][c1] * m_el[r2][c2] - m_el[r1][c2] * m_el[r2][c1];\n\t}\n\n\tvoid serialize(struct btMatrix3x3Data & dataOut) const;\n\n\tvoid serializeFloat(struct btMatrix3x3FloatData & dataOut) const;\n\n\tvoid deSerialize(const struct btMatrix3x3Data& dataIn);\n\n\tvoid deSerializeFloat(const struct btMatrix3x3FloatData& dataIn);\n\n\tvoid deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn);\n};\n\nSIMD_FORCE_INLINE btMatrix3x3&\nbtMatrix3x3::operator*=(const btMatrix3x3& m)\n{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t__m128 rv00, rv01, rv02;\n\t__m128 rv10, rv11, rv12;\n\t__m128 rv20, rv21, rv22;\n\t__m128 mv0, mv1, mv2;\n\n\trv02 = m_el[0].mVec128;\n\trv12 = m_el[1].mVec128;\n\trv22 = m_el[2].mVec128;\n\n\tmv0 = _mm_and_ps(m[0].mVec128, btvFFF0fMask);\n\tmv1 = _mm_and_ps(m[1].mVec128, btvFFF0fMask);\n\tmv2 = _mm_and_ps(m[2].mVec128, btvFFF0fMask);\n\n\t// rv0\n\trv00 = bt_splat_ps(rv02, 0);\n\trv01 = bt_splat_ps(rv02, 1);\n\trv02 = bt_splat_ps(rv02, 2);\n\n\trv00 = _mm_mul_ps(rv00, mv0);\n\trv01 = _mm_mul_ps(rv01, mv1);\n\trv02 = _mm_mul_ps(rv02, mv2);\n\n\t// rv1\n\trv10 = bt_splat_ps(rv12, 0);\n\trv11 = bt_splat_ps(rv12, 1);\n\trv12 = bt_splat_ps(rv12, 2);\n\n\trv10 = _mm_mul_ps(rv10, mv0);\n\trv11 = _mm_mul_ps(rv11, mv1);\n\trv12 = _mm_mul_ps(rv12, mv2);\n\n\t// rv2\n\trv20 = bt_splat_ps(rv22, 0);\n\trv21 = bt_splat_ps(rv22, 1);\n\trv22 = bt_splat_ps(rv22, 2);\n\n\trv20 = _mm_mul_ps(rv20, mv0);\n\trv21 = _mm_mul_ps(rv21, mv1);\n\trv22 = _mm_mul_ps(rv22, mv2);\n\n\trv00 = _mm_add_ps(rv00, rv01);\n\trv10 = _mm_add_ps(rv10, rv11);\n\trv20 = _mm_add_ps(rv20, rv21);\n\n\tm_el[0].mVec128 = _mm_add_ps(rv00, rv02);\n\tm_el[1].mVec128 = _mm_add_ps(rv10, rv12);\n\tm_el[2].mVec128 = _mm_add_ps(rv20, rv22);\n\n#elif defined(BT_USE_NEON)\n\n\tfloat32x4_t rv0, rv1, rv2;\n\tfloat32x4_t v0, v1, v2;\n\tfloat32x4_t mv0, mv1, mv2;\n\n\tv0 = m_el[0].mVec128;\n\tv1 = m_el[1].mVec128;\n\tv2 = m_el[2].mVec128;\n\n\tmv0 = (float32x4_t)vandq_s32((int32x4_t)m[0].mVec128, btvFFF0Mask);\n\tmv1 = (float32x4_t)vandq_s32((int32x4_t)m[1].mVec128, btvFFF0Mask);\n\tmv2 = (float32x4_t)vandq_s32((int32x4_t)m[2].mVec128, btvFFF0Mask);\n\n\trv0 = vmulq_lane_f32(mv0, vget_low_f32(v0), 0);\n\trv1 = vmulq_lane_f32(mv0, vget_low_f32(v1), 0);\n\trv2 = vmulq_lane_f32(mv0, vget_low_f32(v2), 0);\n\n\trv0 = vmlaq_lane_f32(rv0, mv1, vget_low_f32(v0), 1);\n\trv1 = vmlaq_lane_f32(rv1, mv1, vget_low_f32(v1), 1);\n\trv2 = vmlaq_lane_f32(rv2, mv1, vget_low_f32(v2), 1);\n\n\trv0 = vmlaq_lane_f32(rv0, mv2, vget_high_f32(v0), 0);\n\trv1 = vmlaq_lane_f32(rv1, mv2, vget_high_f32(v1), 0);\n\trv2 = vmlaq_lane_f32(rv2, mv2, vget_high_f32(v2), 0);\n\n\tm_el[0].mVec128 = rv0;\n\tm_el[1].mVec128 = rv1;\n\tm_el[2].mVec128 = rv2;\n#else\n\tsetValue(\n\t\tm.tdotx(m_el[0]), m.tdoty(m_el[0]), m.tdotz(m_el[0]),\n\t\tm.tdotx(m_el[1]), m.tdoty(m_el[1]), m.tdotz(m_el[1]),\n\t\tm.tdotx(m_el[2]), m.tdoty(m_el[2]), m.tdotz(m_el[2]));\n#endif\n\treturn *this;\n}\n\nSIMD_FORCE_INLINE btMatrix3x3&\nbtMatrix3x3::operator+=(const btMatrix3x3& m)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\tm_el[0].mVec128 = m_el[0].mVec128 + m.m_el[0].mVec128;\n\tm_el[1].mVec128 = m_el[1].mVec128 + m.m_el[1].mVec128;\n\tm_el[2].mVec128 = m_el[2].mVec128 + m.m_el[2].mVec128;\n#else\n\tsetValue(\n\t\tm_el[0][0] + m.m_el[0][0],\n\t\tm_el[0][1] + m.m_el[0][1],\n\t\tm_el[0][2] + m.m_el[0][2],\n\t\tm_el[1][0] + m.m_el[1][0],\n\t\tm_el[1][1] + m.m_el[1][1],\n\t\tm_el[1][2] + m.m_el[1][2],\n\t\tm_el[2][0] + m.m_el[2][0],\n\t\tm_el[2][1] + m.m_el[2][1],\n\t\tm_el[2][2] + m.m_el[2][2]);\n#endif\n\treturn *this;\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\noperator*(const btMatrix3x3& m, const btScalar& k)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t__m128 vk = bt_splat_ps(_mm_load_ss((float*)&k), 0x80);\n\treturn btMatrix3x3(\n\t\t_mm_mul_ps(m[0].mVec128, vk),\n\t\t_mm_mul_ps(m[1].mVec128, vk),\n\t\t_mm_mul_ps(m[2].mVec128, vk));\n#elif defined(BT_USE_NEON)\n\treturn btMatrix3x3(\n\t\tvmulq_n_f32(m[0].mVec128, k),\n\t\tvmulq_n_f32(m[1].mVec128, k),\n\t\tvmulq_n_f32(m[2].mVec128, k));\n#else\n\treturn btMatrix3x3(\n\t\tm[0].x() * k, m[0].y() * k, m[0].z() * k,\n\t\tm[1].x() * k, m[1].y() * k, m[1].z() * k,\n\t\tm[2].x() * k, m[2].y() * k, m[2].z() * k);\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\noperator+(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\treturn btMatrix3x3(\n\t\tm1[0].mVec128 + m2[0].mVec128,\n\t\tm1[1].mVec128 + m2[1].mVec128,\n\t\tm1[2].mVec128 + m2[2].mVec128);\n#else\n\treturn btMatrix3x3(\n\t\tm1[0][0] + m2[0][0],\n\t\tm1[0][1] + m2[0][1],\n\t\tm1[0][2] + m2[0][2],\n\n\t\tm1[1][0] + m2[1][0],\n\t\tm1[1][1] + m2[1][1],\n\t\tm1[1][2] + m2[1][2],\n\n\t\tm1[2][0] + m2[2][0],\n\t\tm1[2][1] + m2[2][1],\n\t\tm1[2][2] + m2[2][2]);\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\noperator-(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\treturn btMatrix3x3(\n\t\tm1[0].mVec128 - m2[0].mVec128,\n\t\tm1[1].mVec128 - m2[1].mVec128,\n\t\tm1[2].mVec128 - m2[2].mVec128);\n#else\n\treturn btMatrix3x3(\n\t\tm1[0][0] - m2[0][0],\n\t\tm1[0][1] - m2[0][1],\n\t\tm1[0][2] - m2[0][2],\n\n\t\tm1[1][0] - m2[1][0],\n\t\tm1[1][1] - m2[1][1],\n\t\tm1[1][2] - m2[1][2],\n\n\t\tm1[2][0] - m2[2][0],\n\t\tm1[2][1] - m2[2][1],\n\t\tm1[2][2] - m2[2][2]);\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3&\nbtMatrix3x3::operator-=(const btMatrix3x3& m)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\tm_el[0].mVec128 = m_el[0].mVec128 - m.m_el[0].mVec128;\n\tm_el[1].mVec128 = m_el[1].mVec128 - m.m_el[1].mVec128;\n\tm_el[2].mVec128 = m_el[2].mVec128 - m.m_el[2].mVec128;\n#else\n\tsetValue(\n\t\tm_el[0][0] - m.m_el[0][0],\n\t\tm_el[0][1] - m.m_el[0][1],\n\t\tm_el[0][2] - m.m_el[0][2],\n\t\tm_el[1][0] - m.m_el[1][0],\n\t\tm_el[1][1] - m.m_el[1][1],\n\t\tm_el[1][2] - m.m_el[1][2],\n\t\tm_el[2][0] - m.m_el[2][0],\n\t\tm_el[2][1] - m.m_el[2][1],\n\t\tm_el[2][2] - m.m_el[2][2]);\n#endif\n\treturn *this;\n}\n\nSIMD_FORCE_INLINE btScalar\nbtMatrix3x3::determinant() const\n{\n\treturn btTriple((*this)[0], (*this)[1], (*this)[2]);\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::absolute() const\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\treturn btMatrix3x3(\n\t\t_mm_and_ps(m_el[0].mVec128, btvAbsfMask),\n\t\t_mm_and_ps(m_el[1].mVec128, btvAbsfMask),\n\t\t_mm_and_ps(m_el[2].mVec128, btvAbsfMask));\n#elif defined(BT_USE_NEON)\n\treturn btMatrix3x3(\n\t\t(float32x4_t)vandq_s32((int32x4_t)m_el[0].mVec128, btv3AbsMask),\n\t\t(float32x4_t)vandq_s32((int32x4_t)m_el[1].mVec128, btv3AbsMask),\n\t\t(float32x4_t)vandq_s32((int32x4_t)m_el[2].mVec128, btv3AbsMask));\n#else\n\treturn btMatrix3x3(\n\t\tbtFabs(m_el[0].x()), btFabs(m_el[0].y()), btFabs(m_el[0].z()),\n\t\tbtFabs(m_el[1].x()), btFabs(m_el[1].y()), btFabs(m_el[1].z()),\n\t\tbtFabs(m_el[2].x()), btFabs(m_el[2].y()), btFabs(m_el[2].z()));\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::transpose() const\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t__m128 v0 = m_el[0].mVec128;\n\t__m128 v1 = m_el[1].mVec128;\n\t__m128 v2 = m_el[2].mVec128;  //  x2 y2 z2 w2\n\t__m128 vT;\n\n\tv2 = _mm_and_ps(v2, btvFFF0fMask);  //  x2 y2 z2 0\n\n\tvT = _mm_unpackhi_ps(v0, v1);  //\tz0 z1 * *\n\tv0 = _mm_unpacklo_ps(v0, v1);  //\tx0 x1 y0 y1\n\n\tv1 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(2, 3, 1, 3));                    // y0 y1 y2 0\n\tv0 = _mm_shuffle_ps(v0, v2, BT_SHUFFLE(0, 1, 0, 3));                    // x0 x1 x2 0\n\tv2 = btCastdTo128f(_mm_move_sd(btCastfTo128d(v2), btCastfTo128d(vT)));  // z0 z1 z2 0\n\n\treturn btMatrix3x3(v0, v1, v2);\n#elif defined(BT_USE_NEON)\n\t// note: zeros the w channel. We can preserve it at the cost of two more vtrn instructions.\n\tstatic const uint32x2_t zMask = (const uint32x2_t){static_cast<uint32_t>(-1), 0};\n\tfloat32x4x2_t top = vtrnq_f32(m_el[0].mVec128, m_el[1].mVec128);               // {x0 x1 z0 z1}, {y0 y1 w0 w1}\n\tfloat32x2x2_t bl = vtrn_f32(vget_low_f32(m_el[2].mVec128), vdup_n_f32(0.0f));  // {x2  0 }, {y2 0}\n\tfloat32x4_t v0 = vcombine_f32(vget_low_f32(top.val[0]), bl.val[0]);\n\tfloat32x4_t v1 = vcombine_f32(vget_low_f32(top.val[1]), bl.val[1]);\n\tfloat32x2_t q = (float32x2_t)vand_u32((uint32x2_t)vget_high_f32(m_el[2].mVec128), zMask);\n\tfloat32x4_t v2 = vcombine_f32(vget_high_f32(top.val[0]), q);  // z0 z1 z2  0\n\treturn btMatrix3x3(v0, v1, v2);\n#else\n\treturn btMatrix3x3(m_el[0].x(), m_el[1].x(), m_el[2].x(),\n\t\t\t\t\t   m_el[0].y(), m_el[1].y(), m_el[2].y(),\n\t\t\t\t\t   m_el[0].z(), m_el[1].z(), m_el[2].z());\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::adjoint() const\n{\n\treturn btMatrix3x3(cofac(1, 1, 2, 2), cofac(0, 2, 2, 1), cofac(0, 1, 1, 2),\n\t\t\t\t\t   cofac(1, 2, 2, 0), cofac(0, 0, 2, 2), cofac(0, 2, 1, 0),\n\t\t\t\t\t   cofac(1, 0, 2, 1), cofac(0, 1, 2, 0), cofac(0, 0, 1, 1));\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::inverse() const\n{\n\tbtVector3 co(cofac(1, 1, 2, 2), cofac(1, 2, 2, 0), cofac(1, 0, 2, 1));\n\tbtScalar det = (*this)[0].dot(co);\n\t//btFullAssert(det != btScalar(0.0));\n\tbtAssert(det != btScalar(0.0));\n\tbtScalar s = btScalar(1.0) / det;\n\treturn btMatrix3x3(co.x() * s, cofac(0, 2, 2, 1) * s, cofac(0, 1, 1, 2) * s,\n\t\t\t\t\t   co.y() * s, cofac(0, 0, 2, 2) * s, cofac(0, 2, 1, 0) * s,\n\t\t\t\t\t   co.z() * s, cofac(0, 1, 2, 0) * s, cofac(0, 0, 1, 1) * s);\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::transposeTimes(const btMatrix3x3& m) const\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t// zeros w\n\t//    static const __m128i xyzMask = (const __m128i){ -1ULL, 0xffffffffULL };\n\t__m128 row = m_el[0].mVec128;\n\t__m128 m0 = _mm_and_ps(m.getRow(0).mVec128, btvFFF0fMask);\n\t__m128 m1 = _mm_and_ps(m.getRow(1).mVec128, btvFFF0fMask);\n\t__m128 m2 = _mm_and_ps(m.getRow(2).mVec128, btvFFF0fMask);\n\t__m128 r0 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0));\n\t__m128 r1 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0x55));\n\t__m128 r2 = _mm_mul_ps(m0, _mm_shuffle_ps(row, row, 0xaa));\n\trow = m_el[1].mVec128;\n\tr0 = _mm_add_ps(r0, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0)));\n\tr1 = _mm_add_ps(r1, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0x55)));\n\tr2 = _mm_add_ps(r2, _mm_mul_ps(m1, _mm_shuffle_ps(row, row, 0xaa)));\n\trow = m_el[2].mVec128;\n\tr0 = _mm_add_ps(r0, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0)));\n\tr1 = _mm_add_ps(r1, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0x55)));\n\tr2 = _mm_add_ps(r2, _mm_mul_ps(m2, _mm_shuffle_ps(row, row, 0xaa)));\n\treturn btMatrix3x3(r0, r1, r2);\n\n#elif defined BT_USE_NEON\n\t// zeros w\n\tstatic const uint32x4_t xyzMask = (const uint32x4_t){static_cast<uint32_t>(-1), static_cast<uint32_t>(-1), static_cast<uint32_t>(-1), 0};\n\tfloat32x4_t m0 = (float32x4_t)vandq_u32((uint32x4_t)m.getRow(0).mVec128, xyzMask);\n\tfloat32x4_t m1 = (float32x4_t)vandq_u32((uint32x4_t)m.getRow(1).mVec128, xyzMask);\n\tfloat32x4_t m2 = (float32x4_t)vandq_u32((uint32x4_t)m.getRow(2).mVec128, xyzMask);\n\tfloat32x4_t row = m_el[0].mVec128;\n\tfloat32x4_t r0 = vmulq_lane_f32(m0, vget_low_f32(row), 0);\n\tfloat32x4_t r1 = vmulq_lane_f32(m0, vget_low_f32(row), 1);\n\tfloat32x4_t r2 = vmulq_lane_f32(m0, vget_high_f32(row), 0);\n\trow = m_el[1].mVec128;\n\tr0 = vmlaq_lane_f32(r0, m1, vget_low_f32(row), 0);\n\tr1 = vmlaq_lane_f32(r1, m1, vget_low_f32(row), 1);\n\tr2 = vmlaq_lane_f32(r2, m1, vget_high_f32(row), 0);\n\trow = m_el[2].mVec128;\n\tr0 = vmlaq_lane_f32(r0, m2, vget_low_f32(row), 0);\n\tr1 = vmlaq_lane_f32(r1, m2, vget_low_f32(row), 1);\n\tr2 = vmlaq_lane_f32(r2, m2, vget_high_f32(row), 0);\n\treturn btMatrix3x3(r0, r1, r2);\n#else\n\treturn btMatrix3x3(\n\t\tm_el[0].x() * m[0].x() + m_el[1].x() * m[1].x() + m_el[2].x() * m[2].x(),\n\t\tm_el[0].x() * m[0].y() + m_el[1].x() * m[1].y() + m_el[2].x() * m[2].y(),\n\t\tm_el[0].x() * m[0].z() + m_el[1].x() * m[1].z() + m_el[2].x() * m[2].z(),\n\t\tm_el[0].y() * m[0].x() + m_el[1].y() * m[1].x() + m_el[2].y() * m[2].x(),\n\t\tm_el[0].y() * m[0].y() + m_el[1].y() * m[1].y() + m_el[2].y() * m[2].y(),\n\t\tm_el[0].y() * m[0].z() + m_el[1].y() * m[1].z() + m_el[2].y() * m[2].z(),\n\t\tm_el[0].z() * m[0].x() + m_el[1].z() * m[1].x() + m_el[2].z() * m[2].x(),\n\t\tm_el[0].z() * m[0].y() + m_el[1].z() * m[1].y() + m_el[2].z() * m[2].y(),\n\t\tm_el[0].z() * m[0].z() + m_el[1].z() * m[1].z() + m_el[2].z() * m[2].z());\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\nbtMatrix3x3::timesTranspose(const btMatrix3x3& m) const\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t__m128 a0 = m_el[0].mVec128;\n\t__m128 a1 = m_el[1].mVec128;\n\t__m128 a2 = m_el[2].mVec128;\n\n\tbtMatrix3x3 mT = m.transpose();  // we rely on transpose() zeroing w channel so that we don't have to do it here\n\t__m128 mx = mT[0].mVec128;\n\t__m128 my = mT[1].mVec128;\n\t__m128 mz = mT[2].mVec128;\n\n\t__m128 r0 = _mm_mul_ps(mx, _mm_shuffle_ps(a0, a0, 0x00));\n\t__m128 r1 = _mm_mul_ps(mx, _mm_shuffle_ps(a1, a1, 0x00));\n\t__m128 r2 = _mm_mul_ps(mx, _mm_shuffle_ps(a2, a2, 0x00));\n\tr0 = _mm_add_ps(r0, _mm_mul_ps(my, _mm_shuffle_ps(a0, a0, 0x55)));\n\tr1 = _mm_add_ps(r1, _mm_mul_ps(my, _mm_shuffle_ps(a1, a1, 0x55)));\n\tr2 = _mm_add_ps(r2, _mm_mul_ps(my, _mm_shuffle_ps(a2, a2, 0x55)));\n\tr0 = _mm_add_ps(r0, _mm_mul_ps(mz, _mm_shuffle_ps(a0, a0, 0xaa)));\n\tr1 = _mm_add_ps(r1, _mm_mul_ps(mz, _mm_shuffle_ps(a1, a1, 0xaa)));\n\tr2 = _mm_add_ps(r2, _mm_mul_ps(mz, _mm_shuffle_ps(a2, a2, 0xaa)));\n\treturn btMatrix3x3(r0, r1, r2);\n\n#elif defined BT_USE_NEON\n\tfloat32x4_t a0 = m_el[0].mVec128;\n\tfloat32x4_t a1 = m_el[1].mVec128;\n\tfloat32x4_t a2 = m_el[2].mVec128;\n\n\tbtMatrix3x3 mT = m.transpose();  // we rely on transpose() zeroing w channel so that we don't have to do it here\n\tfloat32x4_t mx = mT[0].mVec128;\n\tfloat32x4_t my = mT[1].mVec128;\n\tfloat32x4_t mz = mT[2].mVec128;\n\n\tfloat32x4_t r0 = vmulq_lane_f32(mx, vget_low_f32(a0), 0);\n\tfloat32x4_t r1 = vmulq_lane_f32(mx, vget_low_f32(a1), 0);\n\tfloat32x4_t r2 = vmulq_lane_f32(mx, vget_low_f32(a2), 0);\n\tr0 = vmlaq_lane_f32(r0, my, vget_low_f32(a0), 1);\n\tr1 = vmlaq_lane_f32(r1, my, vget_low_f32(a1), 1);\n\tr2 = vmlaq_lane_f32(r2, my, vget_low_f32(a2), 1);\n\tr0 = vmlaq_lane_f32(r0, mz, vget_high_f32(a0), 0);\n\tr1 = vmlaq_lane_f32(r1, mz, vget_high_f32(a1), 0);\n\tr2 = vmlaq_lane_f32(r2, mz, vget_high_f32(a2), 0);\n\treturn btMatrix3x3(r0, r1, r2);\n\n#else\n\treturn btMatrix3x3(\n\t\tm_el[0].dot(m[0]), m_el[0].dot(m[1]), m_el[0].dot(m[2]),\n\t\tm_el[1].dot(m[0]), m_el[1].dot(m[1]), m_el[1].dot(m[2]),\n\t\tm_el[2].dot(m[0]), m_el[2].dot(m[1]), m_el[2].dot(m[2]));\n#endif\n}\n\nSIMD_FORCE_INLINE btVector3\noperator*(const btMatrix3x3& m, const btVector3& v)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\treturn v.dot3(m[0], m[1], m[2]);\n#else\n\treturn btVector3(m[0].dot(v), m[1].dot(v), m[2].dot(v));\n#endif\n}\n\nSIMD_FORCE_INLINE btVector3\noperator*(const btVector3& v, const btMatrix3x3& m)\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\n\tconst __m128 vv = v.mVec128;\n\n\t__m128 c0 = bt_splat_ps(vv, 0);\n\t__m128 c1 = bt_splat_ps(vv, 1);\n\t__m128 c2 = bt_splat_ps(vv, 2);\n\n\tc0 = _mm_mul_ps(c0, _mm_and_ps(m[0].mVec128, btvFFF0fMask));\n\tc1 = _mm_mul_ps(c1, _mm_and_ps(m[1].mVec128, btvFFF0fMask));\n\tc0 = _mm_add_ps(c0, c1);\n\tc2 = _mm_mul_ps(c2, _mm_and_ps(m[2].mVec128, btvFFF0fMask));\n\n\treturn btVector3(_mm_add_ps(c0, c2));\n#elif defined(BT_USE_NEON)\n\tconst float32x4_t vv = v.mVec128;\n\tconst float32x2_t vlo = vget_low_f32(vv);\n\tconst float32x2_t vhi = vget_high_f32(vv);\n\n\tfloat32x4_t c0, c1, c2;\n\n\tc0 = (float32x4_t)vandq_s32((int32x4_t)m[0].mVec128, btvFFF0Mask);\n\tc1 = (float32x4_t)vandq_s32((int32x4_t)m[1].mVec128, btvFFF0Mask);\n\tc2 = (float32x4_t)vandq_s32((int32x4_t)m[2].mVec128, btvFFF0Mask);\n\n\tc0 = vmulq_lane_f32(c0, vlo, 0);\n\tc1 = vmulq_lane_f32(c1, vlo, 1);\n\tc2 = vmulq_lane_f32(c2, vhi, 0);\n\tc0 = vaddq_f32(c0, c1);\n\tc0 = vaddq_f32(c0, c2);\n\n\treturn btVector3(c0);\n#else\n\treturn btVector3(m.tdotx(v), m.tdoty(v), m.tdotz(v));\n#endif\n}\n\nSIMD_FORCE_INLINE btMatrix3x3\noperator*(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\n\t__m128 m10 = m1[0].mVec128;\n\t__m128 m11 = m1[1].mVec128;\n\t__m128 m12 = m1[2].mVec128;\n\n\t__m128 m2v = _mm_and_ps(m2[0].mVec128, btvFFF0fMask);\n\n\t__m128 c0 = bt_splat_ps(m10, 0);\n\t__m128 c1 = bt_splat_ps(m11, 0);\n\t__m128 c2 = bt_splat_ps(m12, 0);\n\n\tc0 = _mm_mul_ps(c0, m2v);\n\tc1 = _mm_mul_ps(c1, m2v);\n\tc2 = _mm_mul_ps(c2, m2v);\n\n\tm2v = _mm_and_ps(m2[1].mVec128, btvFFF0fMask);\n\n\t__m128 c0_1 = bt_splat_ps(m10, 1);\n\t__m128 c1_1 = bt_splat_ps(m11, 1);\n\t__m128 c2_1 = bt_splat_ps(m12, 1);\n\n\tc0_1 = _mm_mul_ps(c0_1, m2v);\n\tc1_1 = _mm_mul_ps(c1_1, m2v);\n\tc2_1 = _mm_mul_ps(c2_1, m2v);\n\n\tm2v = _mm_and_ps(m2[2].mVec128, btvFFF0fMask);\n\n\tc0 = _mm_add_ps(c0, c0_1);\n\tc1 = _mm_add_ps(c1, c1_1);\n\tc2 = _mm_add_ps(c2, c2_1);\n\n\tm10 = bt_splat_ps(m10, 2);\n\tm11 = bt_splat_ps(m11, 2);\n\tm12 = bt_splat_ps(m12, 2);\n\n\tm10 = _mm_mul_ps(m10, m2v);\n\tm11 = _mm_mul_ps(m11, m2v);\n\tm12 = _mm_mul_ps(m12, m2v);\n\n\tc0 = _mm_add_ps(c0, m10);\n\tc1 = _mm_add_ps(c1, m11);\n\tc2 = _mm_add_ps(c2, m12);\n\n\treturn btMatrix3x3(c0, c1, c2);\n\n#elif defined(BT_USE_NEON)\n\n\tfloat32x4_t rv0, rv1, rv2;\n\tfloat32x4_t v0, v1, v2;\n\tfloat32x4_t mv0, mv1, mv2;\n\n\tv0 = m1[0].mVec128;\n\tv1 = m1[1].mVec128;\n\tv2 = m1[2].mVec128;\n\n\tmv0 = (float32x4_t)vandq_s32((int32x4_t)m2[0].mVec128, btvFFF0Mask);\n\tmv1 = (float32x4_t)vandq_s32((int32x4_t)m2[1].mVec128, btvFFF0Mask);\n\tmv2 = (float32x4_t)vandq_s32((int32x4_t)m2[2].mVec128, btvFFF0Mask);\n\n\trv0 = vmulq_lane_f32(mv0, vget_low_f32(v0), 0);\n\trv1 = vmulq_lane_f32(mv0, vget_low_f32(v1), 0);\n\trv2 = vmulq_lane_f32(mv0, vget_low_f32(v2), 0);\n\n\trv0 = vmlaq_lane_f32(rv0, mv1, vget_low_f32(v0), 1);\n\trv1 = vmlaq_lane_f32(rv1, mv1, vget_low_f32(v1), 1);\n\trv2 = vmlaq_lane_f32(rv2, mv1, vget_low_f32(v2), 1);\n\n\trv0 = vmlaq_lane_f32(rv0, mv2, vget_high_f32(v0), 0);\n\trv1 = vmlaq_lane_f32(rv1, mv2, vget_high_f32(v1), 0);\n\trv2 = vmlaq_lane_f32(rv2, mv2, vget_high_f32(v2), 0);\n\n\treturn btMatrix3x3(rv0, rv1, rv2);\n\n#else\n\treturn btMatrix3x3(\n\t\tm2.tdotx(m1[0]), m2.tdoty(m1[0]), m2.tdotz(m1[0]),\n\t\tm2.tdotx(m1[1]), m2.tdoty(m1[1]), m2.tdotz(m1[1]),\n\t\tm2.tdotx(m1[2]), m2.tdoty(m1[2]), m2.tdotz(m1[2]));\n#endif\n}\n\n/*\nSIMD_FORCE_INLINE btMatrix3x3 btMultTransposeLeft(const btMatrix3x3& m1, const btMatrix3x3& m2) {\nreturn btMatrix3x3(\nm1[0][0] * m2[0][0] + m1[1][0] * m2[1][0] + m1[2][0] * m2[2][0],\nm1[0][0] * m2[0][1] + m1[1][0] * m2[1][1] + m1[2][0] * m2[2][1],\nm1[0][0] * m2[0][2] + m1[1][0] * m2[1][2] + m1[2][0] * m2[2][2],\nm1[0][1] * m2[0][0] + m1[1][1] * m2[1][0] + m1[2][1] * m2[2][0],\nm1[0][1] * m2[0][1] + m1[1][1] * m2[1][1] + m1[2][1] * m2[2][1],\nm1[0][1] * m2[0][2] + m1[1][1] * m2[1][2] + m1[2][1] * m2[2][2],\nm1[0][2] * m2[0][0] + m1[1][2] * m2[1][0] + m1[2][2] * m2[2][0],\nm1[0][2] * m2[0][1] + m1[1][2] * m2[1][1] + m1[2][2] * m2[2][1],\nm1[0][2] * m2[0][2] + m1[1][2] * m2[1][2] + m1[2][2] * m2[2][2]);\n}\n*/\n\n/**@brief Equality operator between two matrices\n* It will test all elements are equal.  */\nSIMD_FORCE_INLINE bool operator==(const btMatrix3x3& m1, const btMatrix3x3& m2)\n{\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\n\t__m128 c0, c1, c2;\n\n\tc0 = _mm_cmpeq_ps(m1[0].mVec128, m2[0].mVec128);\n\tc1 = _mm_cmpeq_ps(m1[1].mVec128, m2[1].mVec128);\n\tc2 = _mm_cmpeq_ps(m1[2].mVec128, m2[2].mVec128);\n\n\tc0 = _mm_and_ps(c0, c1);\n\tc0 = _mm_and_ps(c0, c2);\n\n\tint m = _mm_movemask_ps((__m128)c0);\n\treturn (0x7 == (m & 0x7));\n\n#else\n\treturn (m1[0][0] == m2[0][0] && m1[1][0] == m2[1][0] && m1[2][0] == m2[2][0] &&\n\t\t\tm1[0][1] == m2[0][1] && m1[1][1] == m2[1][1] && m1[2][1] == m2[2][1] &&\n\t\t\tm1[0][2] == m2[0][2] && m1[1][2] == m2[1][2] && m1[2][2] == m2[2][2]);\n#endif\n}\n\n///for serialization\nstruct btMatrix3x3FloatData\n{\n\tbtVector3FloatData m_el[3];\n};\n\n///for serialization\nstruct btMatrix3x3DoubleData\n{\n\tbtVector3DoubleData m_el[3];\n};\n\nSIMD_FORCE_INLINE void btMatrix3x3::serialize(struct btMatrix3x3Data& dataOut) const\n{\n\tfor (int i = 0; i < 3; i++)\n\t\tm_el[i].serialize(dataOut.m_el[i]);\n}\n\nSIMD_FORCE_INLINE void btMatrix3x3::serializeFloat(struct btMatrix3x3FloatData& dataOut) const\n{\n\tfor (int i = 0; i < 3; i++)\n\t\tm_el[i].serializeFloat(dataOut.m_el[i]);\n}\n\nSIMD_FORCE_INLINE void btMatrix3x3::deSerialize(const struct btMatrix3x3Data& dataIn)\n{\n\tfor (int i = 0; i < 3; i++)\n\t\tm_el[i].deSerialize(dataIn.m_el[i]);\n}\n\nSIMD_FORCE_INLINE void btMatrix3x3::deSerializeFloat(const struct btMatrix3x3FloatData& dataIn)\n{\n\tfor (int i = 0; i < 3; i++)\n\t\tm_el[i].deSerializeFloat(dataIn.m_el[i]);\n}\n\nSIMD_FORCE_INLINE void btMatrix3x3::deSerializeDouble(const struct btMatrix3x3DoubleData& dataIn)\n{\n\tfor (int i = 0; i < 3; i++)\n\t\tm_el[i].deSerializeDouble(dataIn.m_el[i]);\n}\n\n#endif  //BT_MATRIX3x3_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btMatrixX.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2013 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n///original version written by Erwin Coumans, October 2013\n\n#ifndef BT_MATRIX_X_H\n#define BT_MATRIX_X_H\n\n#include \"LinearMath/btQuickprof.h\"\n#include \"LinearMath/btAlignedObjectArray.h\"\n#include <stdio.h>\n\n//#define BT_DEBUG_OSTREAM\n#ifdef BT_DEBUG_OSTREAM\n#include <iostream>\n#include <iomanip>  // std::setw\n#endif              //BT_DEBUG_OSTREAM\n\nclass btIntSortPredicate\n{\npublic:\n\tbool operator()(const int& a, const int& b) const\n\t{\n\t\treturn a < b;\n\t}\n};\n\ntemplate <typename T>\nstruct btVectorX\n{\n\tbtAlignedObjectArray<T> m_storage;\n\n\tbtVectorX()\n\t{\n\t}\n\tbtVectorX(int numRows)\n\t{\n\t\tm_storage.resize(numRows);\n\t}\n\n\tvoid resize(int rows)\n\t{\n\t\tm_storage.resize(rows);\n\t}\n\tint cols() const\n\t{\n\t\treturn 1;\n\t}\n\tint rows() const\n\t{\n\t\treturn m_storage.size();\n\t}\n\tint size() const\n\t{\n\t\treturn rows();\n\t}\n\n\tT nrm2() const\n\t{\n\t\tT norm = T(0);\n\n\t\tint nn = rows();\n\n\t\t{\n\t\t\tif (nn == 1)\n\t\t\t{\n\t\t\t\tnorm = btFabs((*this)[0]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tT scale = 0.0;\n\t\t\t\tT ssq = 1.0;\n\n\t\t\t\t/* The following loop is equivalent to this call to the LAPACK\n\t\t\t\t auxiliary routine:   CALL SLASSQ( N, X, INCX, SCALE, SSQ ) */\n\n\t\t\t\tfor (int ix = 0; ix < nn; ix++)\n\t\t\t\t{\n\t\t\t\t\tif ((*this)[ix] != 0.0)\n\t\t\t\t\t{\n\t\t\t\t\t\tT absxi = btFabs((*this)[ix]);\n\t\t\t\t\t\tif (scale < absxi)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tT temp;\n\t\t\t\t\t\t\ttemp = scale / absxi;\n\t\t\t\t\t\t\tssq = ssq * (temp * temp) + BT_ONE;\n\t\t\t\t\t\t\tscale = absxi;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tT temp;\n\t\t\t\t\t\t\ttemp = absxi / scale;\n\t\t\t\t\t\t\tssq += temp * temp;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnorm = scale * sqrt(ssq);\n\t\t\t}\n\t\t}\n\t\treturn norm;\n\t}\n\tvoid setZero()\n\t{\n\t\tif (m_storage.size())\n\t\t{\n\t\t\t//\tfor (int i=0;i<m_storage.size();i++)\n\t\t\t//\t\tm_storage[i]=0;\n\t\t\t//memset(&m_storage[0],0,sizeof(T)*m_storage.size());\n\t\t\tbtSetZero(&m_storage[0], m_storage.size());\n\t\t}\n\t}\n\tconst T& operator[](int index) const\n\t{\n\t\treturn m_storage[index];\n\t}\n\n\tT& operator[](int index)\n\t{\n\t\treturn m_storage[index];\n\t}\n\n\tT* getBufferPointerWritable()\n\t{\n\t\treturn m_storage.size() ? &m_storage[0] : 0;\n\t}\n\n\tconst T* getBufferPointer() const\n\t{\n\t\treturn m_storage.size() ? &m_storage[0] : 0;\n\t}\n};\n/*\n template <typename T>\n void setElem(btMatrixX<T>& mat, int row, int col, T val)\n {\n mat.setElem(row,col,val);\n }\n */\n\ntemplate <typename T>\nstruct btMatrixX\n{\n\tint m_rows;\n\tint m_cols;\n\tint m_operations;\n\tint m_resizeOperations;\n\tint m_setElemOperations;\n\n\tbtAlignedObjectArray<T> m_storage;\n\tmutable btAlignedObjectArray<btAlignedObjectArray<int> > m_rowNonZeroElements1;\n\n\tT* getBufferPointerWritable()\n\t{\n\t\treturn m_storage.size() ? &m_storage[0] : 0;\n\t}\n\n\tconst T* getBufferPointer() const\n\t{\n\t\treturn m_storage.size() ? &m_storage[0] : 0;\n\t}\n\tbtMatrixX()\n\t\t: m_rows(0),\n\t\t  m_cols(0),\n\t\t  m_operations(0),\n\t\t  m_resizeOperations(0),\n\t\t  m_setElemOperations(0)\n\t{\n\t}\n\tbtMatrixX(int rows, int cols)\n\t\t: m_rows(rows),\n\t\t  m_cols(cols),\n\t\t  m_operations(0),\n\t\t  m_resizeOperations(0),\n\t\t  m_setElemOperations(0)\n\t{\n\t\tresize(rows, cols);\n\t}\n\tvoid resize(int rows, int cols)\n\t{\n\t\tm_resizeOperations++;\n\t\tm_rows = rows;\n\t\tm_cols = cols;\n\t\t{\n\t\t\tBT_PROFILE(\"m_storage.resize\");\n\t\t\tm_storage.resize(rows * cols);\n\t\t}\n\t}\n\tint cols() const\n\t{\n\t\treturn m_cols;\n\t}\n\tint rows() const\n\t{\n\t\treturn m_rows;\n\t}\n\t///we don't want this read/write operator(), because we cannot keep track of non-zero elements, use setElem instead\n\t/*T& operator() (int row,int col)\n\t{\n\t\treturn m_storage[col*m_rows+row];\n\t}\n\t*/\n\n\tvoid addElem(int row, int col, T val)\n\t{\n\t\tif (val)\n\t\t{\n\t\t\tif (m_storage[col + row * m_cols] == 0.f)\n\t\t\t{\n\t\t\t\tsetElem(row, col, val);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tm_storage[row * m_cols + col] += val;\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid setElem(int row, int col, T val)\n\t{\n\t\tm_setElemOperations++;\n\t\tm_storage[row * m_cols + col] = val;\n\t}\n\n\tvoid mulElem(int row, int col, T val)\n\t{\n\t\tm_setElemOperations++;\n\t\t//mul doesn't change sparsity info\n\n\t\tm_storage[row * m_cols + col] *= val;\n\t}\n\n\tvoid copyLowerToUpperTriangle()\n\t{\n\t\tint count = 0;\n\t\tfor (int row = 0; row < rows(); row++)\n\t\t{\n\t\t\tfor (int col = 0; col < row; col++)\n\t\t\t{\n\t\t\t\tsetElem(col, row, (*this)(row, col));\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t\t//printf(\"copyLowerToUpperTriangle copied %d elements out of %dx%d=%d\\n\", count,rows(),cols(),cols()*rows());\n\t}\n\n\tconst T& operator()(int row, int col) const\n\t{\n\t\treturn m_storage[col + row * m_cols];\n\t}\n\n\tvoid setZero()\n\t{\n\t\t{\n\t\t\tBT_PROFILE(\"storage=0\");\n\t\t\tif (m_storage.size())\n\t\t\t{\n\t\t\t\tbtSetZero(&m_storage[0], m_storage.size());\n\t\t\t}\n\t\t\t//memset(&m_storage[0],0,sizeof(T)*m_storage.size());\n\t\t\t//for (int i=0;i<m_storage.size();i++)\n\t\t\t//\t\t\tm_storage[i]=0;\n\t\t}\n\t}\n\n\tvoid setIdentity()\n\t{\n\t\tbtAssert(rows() == cols());\n\n\t\tsetZero();\n\t\tfor (int row = 0; row < rows(); row++)\n\t\t{\n\t\t\tsetElem(row, row, 1);\n\t\t}\n\t}\n\n\tvoid printMatrix(const char* msg) const\n\t{\n\t\tprintf(\"%s ---------------------\\n\", msg);\n\t\tfor (int i = 0; i < rows(); i++)\n\t\t{\n\t\t\tprintf(\"\\n\");\n\t\t\tfor (int j = 0; j < cols(); j++)\n\t\t\t{\n\t\t\t\tprintf(\"%2.1f\\t\", (*this)(i, j));\n\t\t\t}\n\t\t}\n\t\tprintf(\"\\n---------------------\\n\");\n\t}\n\n\tvoid rowComputeNonZeroElements() const\n\t{\n\t\tm_rowNonZeroElements1.resize(rows());\n\t\tfor (int i = 0; i < rows(); i++)\n\t\t{\n\t\t\tm_rowNonZeroElements1[i].resize(0);\n\t\t\tfor (int j = 0; j < cols(); j++)\n\t\t\t{\n\t\t\t\tif ((*this)(i, j) != 0.f)\n\t\t\t\t{\n\t\t\t\t\tm_rowNonZeroElements1[i].push_back(j);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tbtMatrixX transpose() const\n\t{\n\t\t//transpose is optimized for sparse matrices\n\t\tbtMatrixX tr(m_cols, m_rows);\n\t\ttr.setZero();\n\t\tfor (int i = 0; i < m_cols; i++)\n\t\t\tfor (int j = 0; j < m_rows; j++)\n\t\t\t{\n\t\t\t\tT v = (*this)(j, i);\n\t\t\t\tif (v)\n\t\t\t\t{\n\t\t\t\t\ttr.setElem(i, j, v);\n\t\t\t\t}\n\t\t\t}\n\t\treturn tr;\n\t}\n\n\tbtMatrixX operator*(const btMatrixX& other)\n\t{\n\t\t//btMatrixX*btMatrixX implementation, brute force\n\t\tbtAssert(cols() == other.rows());\n\n\t\tbtMatrixX res(rows(), other.cols());\n\t\tres.setZero();\n\t\t//\t\tBT_PROFILE(\"btMatrixX mul\");\n\t\tfor (int i = 0; i < rows(); ++i)\n\t\t{\n\t\t\t{\n\t\t\t\tfor (int j = 0; j < other.cols(); ++j)\n\t\t\t\t{\n\t\t\t\t\tT dotProd = 0;\n\t\t\t\t\t{\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tint c = cols();\n\n\t\t\t\t\t\t\tfor (int k = 0; k < c; k++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tT w = (*this)(i, k);\n\t\t\t\t\t\t\t\tif (other(k, j) != 0.f)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tdotProd += w * other(k, j);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (dotProd)\n\t\t\t\t\t\tres.setElem(i, j, dotProd);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t}\n\n\t// this assumes the 4th and 8th rows of B and C are zero.\n\tvoid multiplyAdd2_p8r(const btScalar* B, const btScalar* C, int numRows, int numRowsOther, int row, int col)\n\t{\n\t\tconst btScalar* bb = B;\n\t\tfor (int i = 0; i < numRows; i++)\n\t\t{\n\t\t\tconst btScalar* cc = C;\n\t\t\tfor (int j = 0; j < numRowsOther; j++)\n\t\t\t{\n\t\t\t\tbtScalar sum;\n\t\t\t\tsum = bb[0] * cc[0];\n\t\t\t\tsum += bb[1] * cc[1];\n\t\t\t\tsum += bb[2] * cc[2];\n\t\t\t\tsum += bb[4] * cc[4];\n\t\t\t\tsum += bb[5] * cc[5];\n\t\t\t\tsum += bb[6] * cc[6];\n\t\t\t\taddElem(row + i, col + j, sum);\n\t\t\t\tcc += 8;\n\t\t\t}\n\t\t\tbb += 8;\n\t\t}\n\t}\n\n\tvoid multiply2_p8r(const btScalar* B, const btScalar* C, int numRows, int numRowsOther, int row, int col)\n\t{\n\t\tbtAssert(numRows > 0 && numRowsOther > 0 && B && C);\n\t\tconst btScalar* bb = B;\n\t\tfor (int i = 0; i < numRows; i++)\n\t\t{\n\t\t\tconst btScalar* cc = C;\n\t\t\tfor (int j = 0; j < numRowsOther; j++)\n\t\t\t{\n\t\t\t\tbtScalar sum;\n\t\t\t\tsum = bb[0] * cc[0];\n\t\t\t\tsum += bb[1] * cc[1];\n\t\t\t\tsum += bb[2] * cc[2];\n\t\t\t\tsum += bb[4] * cc[4];\n\t\t\t\tsum += bb[5] * cc[5];\n\t\t\t\tsum += bb[6] * cc[6];\n\t\t\t\tsetElem(row + i, col + j, sum);\n\t\t\t\tcc += 8;\n\t\t\t}\n\t\t\tbb += 8;\n\t\t}\n\t}\n\n\tvoid setSubMatrix(int rowstart, int colstart, int rowend, int colend, const T value)\n\t{\n\t\tint numRows = rowend + 1 - rowstart;\n\t\tint numCols = colend + 1 - colstart;\n\n\t\tfor (int row = 0; row < numRows; row++)\n\t\t{\n\t\t\tfor (int col = 0; col < numCols; col++)\n\t\t\t{\n\t\t\t\tsetElem(rowstart + row, colstart + col, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid setSubMatrix(int rowstart, int colstart, int rowend, int colend, const btMatrixX& block)\n\t{\n\t\tbtAssert(rowend + 1 - rowstart == block.rows());\n\t\tbtAssert(colend + 1 - colstart == block.cols());\n\t\tfor (int row = 0; row < block.rows(); row++)\n\t\t{\n\t\t\tfor (int col = 0; col < block.cols(); col++)\n\t\t\t{\n\t\t\t\tsetElem(rowstart + row, colstart + col, block(row, col));\n\t\t\t}\n\t\t}\n\t}\n\tvoid setSubMatrix(int rowstart, int colstart, int rowend, int colend, const btVectorX<T>& block)\n\t{\n\t\tbtAssert(rowend + 1 - rowstart == block.rows());\n\t\tbtAssert(colend + 1 - colstart == block.cols());\n\t\tfor (int row = 0; row < block.rows(); row++)\n\t\t{\n\t\t\tfor (int col = 0; col < block.cols(); col++)\n\t\t\t{\n\t\t\t\tsetElem(rowstart + row, colstart + col, block[row]);\n\t\t\t}\n\t\t}\n\t}\n\n\tbtMatrixX negative()\n\t{\n\t\tbtMatrixX neg(rows(), cols());\n\t\tfor (int i = 0; i < rows(); i++)\n\t\t\tfor (int j = 0; j < cols(); j++)\n\t\t\t{\n\t\t\t\tT v = (*this)(i, j);\n\t\t\t\tneg.setElem(i, j, -v);\n\t\t\t}\n\t\treturn neg;\n\t}\n};\n\ntypedef btMatrixX<float> btMatrixXf;\ntypedef btVectorX<float> btVectorXf;\n\ntypedef btMatrixX<double> btMatrixXd;\ntypedef btVectorX<double> btVectorXd;\n\n#ifdef BT_DEBUG_OSTREAM\ntemplate <typename T>\nstd::ostream& operator<<(std::ostream& os, const btMatrixX<T>& mat)\n{\n\tos << \" [\";\n\t//printf(\"%s ---------------------\\n\",msg);\n\tfor (int i = 0; i < mat.rows(); i++)\n\t{\n\t\tfor (int j = 0; j < mat.cols(); j++)\n\t\t{\n\t\t\tos << std::setw(12) << mat(i, j);\n\t\t}\n\t\tif (i != mat.rows() - 1)\n\t\t\tos << std::endl\n\t\t\t   << \"  \";\n\t}\n\tos << \" ]\";\n\t//printf(\"\\n---------------------\\n\");\n\n\treturn os;\n}\ntemplate <typename T>\nstd::ostream& operator<<(std::ostream& os, const btVectorX<T>& mat)\n{\n\tos << \" [\";\n\t//printf(\"%s ---------------------\\n\",msg);\n\tfor (int i = 0; i < mat.rows(); i++)\n\t{\n\t\tos << std::setw(12) << mat[i];\n\t\tif (i != mat.rows() - 1)\n\t\t\tos << std::endl\n\t\t\t   << \"  \";\n\t}\n\tos << \" ]\";\n\t//printf(\"\\n---------------------\\n\");\n\n\treturn os;\n}\n\n#endif  //BT_DEBUG_OSTREAM\n\ninline void setElem(btMatrixXd& mat, int row, int col, double val)\n{\n\tmat.setElem(row, col, val);\n}\n\ninline void setElem(btMatrixXf& mat, int row, int col, float val)\n{\n\tmat.setElem(row, col, val);\n}\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btVectorXu btVectorXd\n#define btMatrixXu btMatrixXd\n#else\n#define btVectorXu btVectorXf\n#define btMatrixXu btMatrixXf\n#endif  //BT_USE_DOUBLE_PRECISION\n\n#endif  //BT_MATRIX_H_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btMinMax.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GEN_MINMAX_H\n#define BT_GEN_MINMAX_H\n\n#include \"btScalar.h\"\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btMin(const T& a, const T& b)\n{\n\treturn a < b ? a : b;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btMax(const T& a, const T& b)\n{\n\treturn a > b ? a : b;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE const T& btClamped(const T& a, const T& lb, const T& ub)\n{\n\treturn a < lb ? lb : (ub < a ? ub : a);\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btSetMin(T& a, const T& b)\n{\n\tif (b < a)\n\t{\n\t\ta = b;\n\t}\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btSetMax(T& a, const T& b)\n{\n\tif (a < b)\n\t{\n\t\ta = b;\n\t}\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btClamp(T& a, const T& lb, const T& ub)\n{\n\tif (a < lb)\n\t{\n\t\ta = lb;\n\t}\n\telse if (ub < a)\n\t{\n\t\ta = ub;\n\t}\n}\n\n#endif  //BT_GEN_MINMAX_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btModifiedGramSchmidt.h",
    "content": "//\n//  btModifiedGramSchmidt.h\n//  LinearMath\n//\n//  Created by Xuchen Han on 4/4/20.\n//\n\n#ifndef btModifiedGramSchmidt_h\n#define btModifiedGramSchmidt_h\n\n#include \"btReducedVector.h\"\n#include \"btAlignedObjectArray.h\"\n#include <iostream>\n#include <cmath>\ntemplate<class TV>\nclass btModifiedGramSchmidt\n{\npublic:\n    btAlignedObjectArray<TV> m_in;\n    btAlignedObjectArray<TV> m_out;\n    \n    btModifiedGramSchmidt(const btAlignedObjectArray<TV>& vecs): m_in(vecs)\n    {\n        m_out.resize(0);\n    }\n    \n    void solve()\n    {\n        m_out.resize(m_in.size());\n        for (int i = 0; i < m_in.size(); ++i)\n        {\n//            printf(\"========= starting %d ==========\\n\", i);\n            TV v(m_in[i]);\n//            v.print();\n            for (int j = 0; j < i; ++j)\n            {\n                v = v - v.proj(m_out[j]);\n//                v.print();\n            }\n            v.normalize();\n            m_out[i] = v;\n//            v.print();\n        }\n    }\n    \n    void test()\n    {\n        std::cout << SIMD_EPSILON << std::endl;\n        printf(\"=======inputs=========\\n\");\n        for (int i = 0; i < m_out.size(); ++i)\n        {\n            m_in[i].print();\n        }\n        printf(\"=======output=========\\n\");\n        for (int i = 0; i < m_out.size(); ++i)\n        {\n            m_out[i].print();\n        }\n        btScalar eps = SIMD_EPSILON;\n        for (int i = 0; i < m_out.size(); ++i)\n        {\n            for (int j = 0; j < m_out.size(); ++j)\n            {\n                if (i == j)\n                {\n                    if (std::abs(1.0-m_out[i].dot(m_out[j])) > eps)// && std::abs(m_out[i].dot(m_out[j])) > eps)\n                    {\n                        printf(\"vec[%d] is not unit, norm squared = %f\\n\", i,m_out[i].dot(m_out[j]));\n                    }\n                }\n                else\n                {\n                    if (std::abs(m_out[i].dot(m_out[j])) > eps)\n                    {\n                        printf(\"vec[%d] and vec[%d] is not orthogonal, dot product = %f\\n\", i, j, m_out[i].dot(m_out[j]));\n                    }\n                }\n            }\n        }\n    }\n};\ntemplate class btModifiedGramSchmidt<btReducedVector>;\n#endif /* btModifiedGramSchmidt_h */\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btMotionState.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_MOTIONSTATE_H\n#define BT_MOTIONSTATE_H\n\n#include \"btTransform.h\"\n\n///The btMotionState interface class allows the dynamics world to synchronize and interpolate the updated world transforms with graphics\n///For optimizations, potentially only moving objects get synchronized (using setWorldPosition/setWorldOrientation)\nclass btMotionState\n{\npublic:\n\tvirtual ~btMotionState()\n\t{\n\t}\n\n\tvirtual void getWorldTransform(btTransform& worldTrans) const = 0;\n\n\t//Bullet only calls the update of worldtransform for active objects\n\tvirtual void setWorldTransform(const btTransform& worldTrans) = 0;\n};\n\n#endif  //BT_MOTIONSTATE_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btPolarDecomposition.h",
    "content": "#ifndef POLARDECOMPOSITION_H\n#define POLARDECOMPOSITION_H\n\n#include \"btMatrix3x3.h\"\n\n/**\n * This class is used to compute the polar decomposition of a matrix. In\n * general, the polar decomposition factorizes a matrix, A, into two parts: a\n * unitary matrix (U) and a positive, semi-definite Hermitian matrix (H).\n * However, in this particular implementation the original matrix, A, is\n * required to be a square 3x3 matrix with real elements. This means that U will\n * be an orthogonal matrix and H with be a positive-definite, symmetric matrix.\n */\nclass btPolarDecomposition\n{\npublic:\n\t/**\n     * Creates an instance with optional parameters.\n     *\n     * @param tolerance     - the tolerance used to determine convergence of the\n     *                        algorithm\n     * @param maxIterations - the maximum number of iterations used to achieve\n     *                        convergence\n     */\n\tbtPolarDecomposition(btScalar tolerance = btScalar(0.0001),\n\t\t\t\t\t\t unsigned int maxIterations = 16);\n\n\t/**\n     * Decomposes a matrix into orthogonal and symmetric, positive-definite\n     * parts. If the number of iterations returned by this function is equal to\n     * the maximum number of iterations, the algorithm has failed to converge.\n     *\n     * @param a - the original matrix\n     * @param u - the resulting orthogonal matrix\n     * @param h - the resulting symmetric matrix\n     *\n     * @return the number of iterations performed by the algorithm.\n     */\n\tunsigned int decompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h) const;\n\n\t/**\n     * Returns the maximum number of iterations that this algorithm will perform\n     * to achieve convergence.\n     *\n     * @return maximum number of iterations\n     */\n\tunsigned int maxIterations() const;\n\nprivate:\n\tbtScalar m_tolerance;\n\tunsigned int m_maxIterations;\n};\n\n/**\n * This functions decomposes the matrix 'a' into two parts: an orthogonal matrix\n * 'u' and a symmetric, positive-definite matrix 'h'. If the number of\n * iterations returned by this function is equal to\n * btPolarDecomposition::DEFAULT_MAX_ITERATIONS, the algorithm has failed to\n * converge.\n *\n * @param a - the original matrix\n * @param u - the resulting orthogonal matrix\n * @param h - the resulting symmetric matrix\n *\n * @return the number of iterations performed by the algorithm.\n */\nunsigned int polarDecompose(const btMatrix3x3& a, btMatrix3x3& u, btMatrix3x3& h);\n\n#endif  // POLARDECOMPOSITION_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btPoolAllocator.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef _BT_POOL_ALLOCATOR_H\n#define _BT_POOL_ALLOCATOR_H\n\n#include \"btScalar.h\"\n#include \"btAlignedAllocator.h\"\n#include \"btThreads.h\"\n\n///The btPoolAllocator class allows to efficiently allocate a large pool of objects, instead of dynamically allocating them separately.\nclass btPoolAllocator\n{\n\tint m_elemSize;\n\tint m_maxElements;\n\tint m_freeCount;\n\tvoid* m_firstFree;\n\tunsigned char* m_pool;\n\tbtSpinMutex m_mutex;  // only used if BT_THREADSAFE\n\npublic:\n\tbtPoolAllocator(int elemSize, int maxElements)\n\t\t: m_elemSize(elemSize),\n\t\t  m_maxElements(maxElements)\n\t{\n\t\tm_pool = (unsigned char*)btAlignedAlloc(static_cast<unsigned int>(m_elemSize * m_maxElements), 16);\n\n\t\tunsigned char* p = m_pool;\n\t\tm_firstFree = p;\n\t\tm_freeCount = m_maxElements;\n\t\tint count = m_maxElements;\n\t\twhile (--count)\n\t\t{\n\t\t\t*(void**)p = (p + m_elemSize);\n\t\t\tp += m_elemSize;\n\t\t}\n\t\t*(void**)p = 0;\n\t}\n\n\t~btPoolAllocator()\n\t{\n\t\tbtAlignedFree(m_pool);\n\t}\n\n\tint getFreeCount() const\n\t{\n\t\treturn m_freeCount;\n\t}\n\n\tint getUsedCount() const\n\t{\n\t\treturn m_maxElements - m_freeCount;\n\t}\n\n\tint getMaxCount() const\n\t{\n\t\treturn m_maxElements;\n\t}\n\n\tvoid* allocate(int size)\n\t{\n\t\t// release mode fix\n\t\t(void)size;\n\t\tbtMutexLock(&m_mutex);\n\t\tbtAssert(!size || size <= m_elemSize);\n\t\t//btAssert(m_freeCount>0);  // should return null if all full\n\t\tvoid* result = m_firstFree;\n\t\tif (NULL != m_firstFree)\n\t\t{\n\t\t\tm_firstFree = *(void**)m_firstFree;\n\t\t\t--m_freeCount;\n\t\t}\n\t\tbtMutexUnlock(&m_mutex);\n\t\treturn result;\n\t}\n\n\tbool validPtr(void* ptr)\n\t{\n\t\tif (ptr)\n\t\t{\n\t\t\tif (((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize))\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tvoid freeMemory(void* ptr)\n\t{\n\t\tif (ptr)\n\t\t{\n\t\t\tbtAssert((unsigned char*)ptr >= m_pool && (unsigned char*)ptr < m_pool + m_maxElements * m_elemSize);\n\n\t\t\tbtMutexLock(&m_mutex);\n\t\t\t*(void**)ptr = m_firstFree;\n\t\t\tm_firstFree = ptr;\n\t\t\t++m_freeCount;\n\t\t\tbtMutexUnlock(&m_mutex);\n\t\t}\n\t}\n\n\tint getElementSize() const\n\t{\n\t\treturn m_elemSize;\n\t}\n\n\tunsigned char* getPoolAddress()\n\t{\n\t\treturn m_pool;\n\t}\n\n\tconst unsigned char* getPoolAddress() const\n\t{\n\t\treturn m_pool;\n\t}\n};\n\n#endif  //_BT_POOL_ALLOCATOR_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btQuadWord.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMD_QUADWORD_H\n#define BT_SIMD_QUADWORD_H\n\n#include \"btScalar.h\"\n#include \"btMinMax.h\"\n\n#if defined(__CELLOS_LV2) && defined(__SPU__)\n#include <altivec.h>\n#endif\n\n/**@brief The btQuadWord class is base class for btVector3 and btQuaternion. \n * Some issues under PS3 Linux with IBM 2.1 SDK, gcc compiler prevent from using aligned quadword.\n */\n#ifndef USE_LIBSPE2\nATTRIBUTE_ALIGNED16(class)\nbtQuadWord\n#else\nclass btQuadWord\n#endif\n{\nprotected:\n#if defined(__SPU__) && defined(__CELLOS_LV2__)\n\tunion {\n\t\tvec_float4 mVec128;\n\t\tbtScalar m_floats[4];\n\t};\n\npublic:\n\tvec_float4 get128() const\n\t{\n\t\treturn mVec128;\n\t}\n\nprotected:\n#else  //__CELLOS_LV2__ __SPU__\n\n#if defined(BT_USE_SSE) || defined(BT_USE_NEON)\n\tunion {\n\t\tbtSimdFloat4 mVec128;\n\t\tbtScalar m_floats[4];\n\t};\n\npublic:\n\tSIMD_FORCE_INLINE btSimdFloat4 get128() const\n\t{\n\t\treturn mVec128;\n\t}\n\tSIMD_FORCE_INLINE void set128(btSimdFloat4 v128)\n\t{\n\t\tmVec128 = v128;\n\t}\n#else\n\tbtScalar m_floats[4];\n#endif  // BT_USE_SSE\n\n#endif  //__CELLOS_LV2__ __SPU__\n\npublic:\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\n\t// Set Vector\n\tSIMD_FORCE_INLINE btQuadWord(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btQuadWord(const btQuadWord& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btQuadWord&\n\toperator=(const btQuadWord& v)\n\t{\n\t\tmVec128 = v.mVec128;\n\n\t\treturn *this;\n\t}\n\n#endif\n\n\t/**@brief Return the x value */\n\tSIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }\n\t/**@brief Return the y value */\n\tSIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }\n\t/**@brief Return the z value */\n\tSIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }\n\t/**@brief Set the x value */\n\tSIMD_FORCE_INLINE void setX(btScalar _x) { m_floats[0] = _x; };\n\t/**@brief Set the y value */\n\tSIMD_FORCE_INLINE void setY(btScalar _y) { m_floats[1] = _y; };\n\t/**@brief Set the z value */\n\tSIMD_FORCE_INLINE void setZ(btScalar _z) { m_floats[2] = _z; };\n\t/**@brief Set the w value */\n\tSIMD_FORCE_INLINE void setW(btScalar _w) { m_floats[3] = _w; };\n\t/**@brief Return the x value */\n\tSIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }\n\t/**@brief Return the y value */\n\tSIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }\n\t/**@brief Return the z value */\n\tSIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }\n\t/**@brief Return the w value */\n\tSIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }\n\n\t//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];\t}\n\t//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }\n\t///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.\n\tSIMD_FORCE_INLINE operator btScalar*() { return &m_floats[0]; }\n\tSIMD_FORCE_INLINE operator const btScalar*() const { return &m_floats[0]; }\n\n\tSIMD_FORCE_INLINE bool operator==(const btQuadWord& other) const\n\t{\n#ifdef BT_USE_SSE\n\t\treturn (0xf == _mm_movemask_ps((__m128)_mm_cmpeq_ps(mVec128, other.mVec128)));\n#else\n\t\treturn ((m_floats[3] == other.m_floats[3]) &&\n\t\t\t\t(m_floats[2] == other.m_floats[2]) &&\n\t\t\t\t(m_floats[1] == other.m_floats[1]) &&\n\t\t\t\t(m_floats[0] == other.m_floats[0]));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE bool operator!=(const btQuadWord& other) const\n\t{\n\t\treturn !(*this == other);\n\t}\n\n\t/**@brief Set x,y,z and zero w \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\tSIMD_FORCE_INLINE void setValue(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = 0.f;\n\t}\n\n\t/*\t\tvoid getValue(btScalar *m) const \n\t\t{\n\t\t\tm[0] = m_floats[0];\n\t\t\tm[1] = m_floats[1];\n\t\t\tm[2] = m_floats[2];\n\t\t}\n*/\n\t/**@brief Set the values \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\tSIMD_FORCE_INLINE void setValue(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = _w;\n\t}\n\t/**@brief No initialization constructor */\n\tSIMD_FORCE_INLINE btQuadWord()\n\t//\t:m_floats[0](btScalar(0.)),m_floats[1](btScalar(0.)),m_floats[2](btScalar(0.)),m_floats[3](btScalar(0.))\n\t{\n\t}\n\n\t/**@brief Three argument constructor (zeros w)\n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\tSIMD_FORCE_INLINE btQuadWord(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0] = _x, m_floats[1] = _y, m_floats[2] = _z, m_floats[3] = 0.0f;\n\t}\n\n\t/**@brief Initializing constructor\n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\tSIMD_FORCE_INLINE btQuadWord(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w)\n\t{\n\t\tm_floats[0] = _x, m_floats[1] = _y, m_floats[2] = _z, m_floats[3] = _w;\n\t}\n\n\t/**@brief Set each element to the max of the current values and the values of another btQuadWord\n   * @param other The other btQuadWord to compare with \n   */\n\tSIMD_FORCE_INLINE void setMax(const btQuadWord& other)\n\t{\n#ifdef BT_USE_SSE\n\t\tmVec128 = _mm_max_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmaxq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMax(m_floats[0], other.m_floats[0]);\n\t\tbtSetMax(m_floats[1], other.m_floats[1]);\n\t\tbtSetMax(m_floats[2], other.m_floats[2]);\n\t\tbtSetMax(m_floats[3], other.m_floats[3]);\n#endif\n\t}\n\t/**@brief Set each element to the min of the current values and the values of another btQuadWord\n   * @param other The other btQuadWord to compare with \n   */\n\tSIMD_FORCE_INLINE void setMin(const btQuadWord& other)\n\t{\n#ifdef BT_USE_SSE\n\t\tmVec128 = _mm_min_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vminq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMin(m_floats[0], other.m_floats[0]);\n\t\tbtSetMin(m_floats[1], other.m_floats[1]);\n\t\tbtSetMin(m_floats[2], other.m_floats[2]);\n\t\tbtSetMin(m_floats[3], other.m_floats[3]);\n#endif\n\t}\n};\n\n#endif  //BT_SIMD_QUADWORD_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btQuaternion.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SIMD__QUATERNION_H_\n#define BT_SIMD__QUATERNION_H_\n\n#include \"btVector3.h\"\n#include \"btQuadWord.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btQuaternionData btQuaternionDoubleData\n#define btQuaternionDataName \"btQuaternionDoubleData\"\n#else\n#define btQuaternionData btQuaternionFloatData\n#define btQuaternionDataName \"btQuaternionFloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n#ifdef BT_USE_SSE\n\n//const __m128 ATTRIBUTE_ALIGNED16(vOnes) = {1.0f, 1.0f, 1.0f, 1.0f};\n#define vOnes (_mm_set_ps(1.0f, 1.0f, 1.0f, 1.0f))\n\n#endif\n\n#if defined(BT_USE_SSE)\n\n#define vQInv (_mm_set_ps(+0.0f, -0.0f, -0.0f, -0.0f))\n#define vPPPM (_mm_set_ps(-0.0f, +0.0f, +0.0f, +0.0f))\n\n#elif defined(BT_USE_NEON)\n\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(vQInv) = {-0.0f, -0.0f, -0.0f, +0.0f};\nconst btSimdFloat4 ATTRIBUTE_ALIGNED16(vPPPM) = {+0.0f, +0.0f, +0.0f, -0.0f};\n\n#endif\n\n/**@brief The btQuaternion implements quaternion to perform linear algebra rotations in combination with btMatrix3x3, btVector3 and btTransform. */\nclass btQuaternion : public btQuadWord\n{\npublic:\n\t/**@brief No initialization constructor */\n\tbtQuaternion() {}\n\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t// Set Vector\n\tSIMD_FORCE_INLINE btQuaternion(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btQuaternion(const btQuaternion& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btQuaternion&\n\toperator=(const btQuaternion& v)\n\t{\n\t\tmVec128 = v.mVec128;\n\n\t\treturn *this;\n\t}\n\n#endif\n\n\t//\t\ttemplate <typename btScalar>\n\t//\t\texplicit Quaternion(const btScalar *v) : Tuple4<btScalar>(v) {}\n\t/**@brief Constructor from scalars */\n\tbtQuaternion(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w)\n\t\t: btQuadWord(_x, _y, _z, _w)\n\t{\n\t}\n\t/**@brief Axis angle Constructor\n   * @param axis The axis which the rotation is around\n   * @param angle The magnitude of the rotation around the angle (Radians) */\n\tbtQuaternion(const btVector3& _axis, const btScalar& _angle)\n\t{\n\t\tsetRotation(_axis, _angle);\n\t}\n\t/**@brief Constructor from Euler angles\n   * @param yaw Angle around Y unless BT_EULER_DEFAULT_ZYX defined then Z\n   * @param pitch Angle around X unless BT_EULER_DEFAULT_ZYX defined then Y\n   * @param roll Angle around Z unless BT_EULER_DEFAULT_ZYX defined then X */\n\tbtQuaternion(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{\n#ifndef BT_EULER_DEFAULT_ZYX\n\t\tsetEuler(yaw, pitch, roll);\n#else\n\t\tsetEulerZYX(yaw, pitch, roll);\n#endif\n\t}\n\t/**@brief Set the rotation using axis angle notation \n   * @param axis The axis around which to rotate\n   * @param angle The magnitude of the rotation in Radians */\n\tvoid setRotation(const btVector3& axis, const btScalar& _angle)\n\t{\n\t\tbtScalar d = axis.length();\n\t\tbtAssert(d != btScalar(0.0));\n\t\tbtScalar s = btSin(_angle * btScalar(0.5)) / d;\n\t\tsetValue(axis.x() * s, axis.y() * s, axis.z() * s,\n\t\t\t\t btCos(_angle * btScalar(0.5)));\n\t}\n\t/**@brief Set the quaternion using Euler angles\n   * @param yaw Angle around Y\n   * @param pitch Angle around X\n   * @param roll Angle around Z */\n\tvoid setEuler(const btScalar& yaw, const btScalar& pitch, const btScalar& roll)\n\t{\n\t\tbtScalar halfYaw = btScalar(yaw) * btScalar(0.5);\n\t\tbtScalar halfPitch = btScalar(pitch) * btScalar(0.5);\n\t\tbtScalar halfRoll = btScalar(roll) * btScalar(0.5);\n\t\tbtScalar cosYaw = btCos(halfYaw);\n\t\tbtScalar sinYaw = btSin(halfYaw);\n\t\tbtScalar cosPitch = btCos(halfPitch);\n\t\tbtScalar sinPitch = btSin(halfPitch);\n\t\tbtScalar cosRoll = btCos(halfRoll);\n\t\tbtScalar sinRoll = btSin(halfRoll);\n\t\tsetValue(cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw,\n\t\t\t\t cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw,\n\t\t\t\t sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw,\n\t\t\t\t cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw);\n\t}\n\t/**@brief Set the quaternion using euler angles \n   * @param yaw Angle around Z\n   * @param pitch Angle around Y\n   * @param roll Angle around X */\n\tvoid setEulerZYX(const btScalar& yawZ, const btScalar& pitchY, const btScalar& rollX)\n\t{\n\t\tbtScalar halfYaw = btScalar(yawZ) * btScalar(0.5);\n\t\tbtScalar halfPitch = btScalar(pitchY) * btScalar(0.5);\n\t\tbtScalar halfRoll = btScalar(rollX) * btScalar(0.5);\n\t\tbtScalar cosYaw = btCos(halfYaw);\n\t\tbtScalar sinYaw = btSin(halfYaw);\n\t\tbtScalar cosPitch = btCos(halfPitch);\n\t\tbtScalar sinPitch = btSin(halfPitch);\n\t\tbtScalar cosRoll = btCos(halfRoll);\n\t\tbtScalar sinRoll = btSin(halfRoll);\n\t\tsetValue(sinRoll * cosPitch * cosYaw - cosRoll * sinPitch * sinYaw,   //x\n\t\t\t\t cosRoll * sinPitch * cosYaw + sinRoll * cosPitch * sinYaw,   //y\n\t\t\t\t cosRoll * cosPitch * sinYaw - sinRoll * sinPitch * cosYaw,   //z\n\t\t\t\t cosRoll * cosPitch * cosYaw + sinRoll * sinPitch * sinYaw);  //formerly yzx\n\t}\n\n\t/**@brief Get the euler angles from this quaternion\n\t   * @param yaw Angle around Z\n\t   * @param pitch Angle around Y\n\t   * @param roll Angle around X */\n\tvoid getEulerZYX(btScalar& yawZ, btScalar& pitchY, btScalar& rollX) const\n\t{\n\t\tbtScalar squ;\n\t\tbtScalar sqx;\n\t\tbtScalar sqy;\n\t\tbtScalar sqz;\n\t\tbtScalar sarg;\n\t\tsqx = m_floats[0] * m_floats[0];\n\t\tsqy = m_floats[1] * m_floats[1];\n\t\tsqz = m_floats[2] * m_floats[2];\n\t\tsqu = m_floats[3] * m_floats[3];\n\t\tsarg = btScalar(-2.) * (m_floats[0] * m_floats[2] - m_floats[3] * m_floats[1]);\n\n\t\t// If the pitch angle is PI/2 or -PI/2, we can only compute\n\t\t// the sum roll + yaw.  However, any combination that gives\n\t\t// the right sum will produce the correct orientation, so we\n\t\t// set rollX = 0 and compute yawZ.\n\t\tif (sarg <= -btScalar(0.99999))\n\t\t{\n\t\t\tpitchY = btScalar(-0.5) * SIMD_PI;\n\t\t\trollX = 0;\n\t\t\tyawZ = btScalar(2) * btAtan2(m_floats[0], -m_floats[1]);\n\t\t}\n\t\telse if (sarg >= btScalar(0.99999))\n\t\t{\n\t\t\tpitchY = btScalar(0.5) * SIMD_PI;\n\t\t\trollX = 0;\n\t\t\tyawZ = btScalar(2) * btAtan2(-m_floats[0], m_floats[1]);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpitchY = btAsin(sarg);\n\t\t\trollX = btAtan2(2 * (m_floats[1] * m_floats[2] + m_floats[3] * m_floats[0]), squ - sqx - sqy + sqz);\n\t\t\tyawZ = btAtan2(2 * (m_floats[0] * m_floats[1] + m_floats[3] * m_floats[2]), squ + sqx - sqy - sqz);\n\t\t}\n\t}\n\n\t/**@brief Add two quaternions\n   * @param q The quaternion to add to this one */\n\tSIMD_FORCE_INLINE btQuaternion& operator+=(const btQuaternion& q)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_add_ps(mVec128, q.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vaddq_f32(mVec128, q.mVec128);\n#else\n\t\tm_floats[0] += q.x();\n\t\tm_floats[1] += q.y();\n\t\tm_floats[2] += q.z();\n\t\tm_floats[3] += q.m_floats[3];\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Subtract out a quaternion\n   * @param q The quaternion to subtract from this one */\n\tbtQuaternion& operator-=(const btQuaternion& q)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_sub_ps(mVec128, q.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vsubq_f32(mVec128, q.mVec128);\n#else\n\t\tm_floats[0] -= q.x();\n\t\tm_floats[1] -= q.y();\n\t\tm_floats[2] -= q.z();\n\t\tm_floats[3] -= q.m_floats[3];\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Scale this quaternion\n   * @param s The scalar to scale by */\n\tbtQuaternion& operator*=(const btScalar& s)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vs = _mm_load_ss(&s);  //\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0);     //\t(S S S S)\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_n_f32(mVec128, s);\n#else\n\t\tm_floats[0] *= s;\n\t\tm_floats[1] *= s;\n\t\tm_floats[2] *= s;\n\t\tm_floats[3] *= s;\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Multiply this quaternion by q on the right\n   * @param q The other quaternion \n   * Equivilant to this = this * q */\n\tbtQuaternion& operator*=(const btQuaternion& q)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vQ2 = q.get128();\n\n\t\t__m128 A1 = bt_pshufd_ps(mVec128, BT_SHUFFLE(0, 1, 2, 0));\n\t\t__m128 B1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3, 3, 3, 0));\n\n\t\tA1 = A1 * B1;\n\n\t\t__m128 A2 = bt_pshufd_ps(mVec128, BT_SHUFFLE(1, 2, 0, 1));\n\t\t__m128 B2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2, 0, 1, 1));\n\n\t\tA2 = A2 * B2;\n\n\t\tB1 = bt_pshufd_ps(mVec128, BT_SHUFFLE(2, 0, 1, 2));\n\t\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1, 2, 0, 2));\n\n\t\tB1 = B1 * B2;  //\tA3 *= B3\n\n\t\tmVec128 = bt_splat_ps(mVec128, 3);  //\tA0\n\t\tmVec128 = mVec128 * vQ2;            //\tA0 * B0\n\n\t\tA1 = A1 + A2;                //\tAB12\n\t\tmVec128 = mVec128 - B1;      //\tAB03 = AB0 - AB3\n\t\tA1 = _mm_xor_ps(A1, vPPPM);  //\tchange sign of the last element\n\t\tmVec128 = mVec128 + A1;      //\tAB03 + AB12\n\n#elif defined(BT_USE_NEON)\n\n\t\tfloat32x4_t vQ1 = mVec128;\n\t\tfloat32x4_t vQ2 = q.get128();\n\t\tfloat32x4_t A0, A1, B1, A2, B2, A3, B3;\n\t\tfloat32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n\n\t\t{\n\t\t\tfloat32x2x2_t tmp;\n\t\t\ttmp = vtrn_f32(vget_high_f32(vQ1), vget_low_f32(vQ1));  // {z x}, {w y}\n\t\t\tvQ1zx = tmp.val[0];\n\n\t\t\ttmp = vtrn_f32(vget_high_f32(vQ2), vget_low_f32(vQ2));  // {z x}, {w y}\n\t\t\tvQ2zx = tmp.val[0];\n\t\t}\n\t\tvQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1);\n\n\t\tvQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n\t\tvQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n\t\tvQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n\t\tA1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                     // X Y  z x\n\t\tB1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx);  // W W  W X\n\n\t\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n\t\tB2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n\t\tA3 = vcombine_f32(vQ1zx, vQ1yz);  // Z X Y Z\n\t\tB3 = vcombine_f32(vQ2yz, vQ2xz);  // Y Z x z\n\n\t\tA1 = vmulq_f32(A1, B1);\n\t\tA2 = vmulq_f32(A2, B2);\n\t\tA3 = vmulq_f32(A3, B3);                           //\tA3 *= B3\n\t\tA0 = vmulq_lane_f32(vQ2, vget_high_f32(vQ1), 1);  //\tA0 * B0\n\n\t\tA1 = vaddq_f32(A1, A2);  //\tAB12 = AB1 + AB2\n\t\tA0 = vsubq_f32(A0, A3);  //\tAB03 = AB0 - AB3\n\n\t\t//\tchange the sign of the last element\n\t\tA1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\n\t\tA0 = vaddq_f32(A0, A1);  //\tAB03 + AB12\n\n\t\tmVec128 = A0;\n#else\n\t\tsetValue(\n\t\t\tm_floats[3] * q.x() + m_floats[0] * q.m_floats[3] + m_floats[1] * q.z() - m_floats[2] * q.y(),\n\t\t\tm_floats[3] * q.y() + m_floats[1] * q.m_floats[3] + m_floats[2] * q.x() - m_floats[0] * q.z(),\n\t\t\tm_floats[3] * q.z() + m_floats[2] * q.m_floats[3] + m_floats[0] * q.y() - m_floats[1] * q.x(),\n\t\t\tm_floats[3] * q.m_floats[3] - m_floats[0] * q.x() - m_floats[1] * q.y() - m_floats[2] * q.z());\n#endif\n\t\treturn *this;\n\t}\n\t/**@brief Return the dot product between this quaternion and another\n   * @param q The other quaternion */\n\tbtScalar dot(const btQuaternion& q) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vd;\n\n\t\tvd = _mm_mul_ps(mVec128, q.mVec128);\n\n\t\t__m128 t = _mm_movehl_ps(vd, vd);\n\t\tvd = _mm_add_ps(vd, t);\n\t\tt = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, t);\n\n\t\treturn _mm_cvtss_f32(vd);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vd = vmulq_f32(mVec128, q.mVec128);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(vd), vget_high_f32(vd));\n\t\tx = vpadd_f32(x, x);\n\t\treturn vget_lane_f32(x, 0);\n#else\n\t\treturn m_floats[0] * q.x() +\n\t\t\t   m_floats[1] * q.y() +\n\t\t\t   m_floats[2] * q.z() +\n\t\t\t   m_floats[3] * q.m_floats[3];\n#endif\n\t}\n\n\t/**@brief Return the length squared of the quaternion */\n\tbtScalar length2() const\n\t{\n\t\treturn dot(*this);\n\t}\n\n\t/**@brief Return the length of the quaternion */\n\tbtScalar length() const\n\t{\n\t\treturn btSqrt(length2());\n\t}\n\tbtQuaternion& safeNormalize()\n\t{\n\t\tbtScalar l2 = length2();\n\t\tif (l2 > SIMD_EPSILON)\n\t\t{\n\t\t\tnormalize();\n\t\t}\n\t\treturn *this;\n\t}\n\t/**@brief Normalize the quaternion \n   * Such that x^2 + y^2 + z^2 +w^2 = 1 */\n\tbtQuaternion& normalize()\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vd;\n\n\t\tvd = _mm_mul_ps(mVec128, mVec128);\n\n\t\t__m128 t = _mm_movehl_ps(vd, vd);\n\t\tvd = _mm_add_ps(vd, t);\n\t\tt = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, t);\n\n\t\tvd = _mm_sqrt_ss(vd);\n\t\tvd = _mm_div_ss(vOnes, vd);\n\t\tvd = bt_pshufd_ps(vd, 0);  // splat\n\t\tmVec128 = _mm_mul_ps(mVec128, vd);\n\n\t\treturn *this;\n#else\n\t\treturn *this /= length();\n#endif\n\t}\n\n\t/**@brief Return a scaled version of this quaternion\n   * @param s The scale factor */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator*(const btScalar& s) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vs = _mm_load_ss(&s);  //\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x00);  //\t(S S S S)\n\n\t\treturn btQuaternion(_mm_mul_ps(mVec128, vs));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion(vmulq_n_f32(mVec128, s));\n#else\n\t\treturn btQuaternion(x() * s, y() * s, z() * s, m_floats[3] * s);\n#endif\n\t}\n\n\t/**@brief Return an inversely scaled versionof this quaternion\n   * @param s The inverse scale factor */\n\tbtQuaternion operator/(const btScalar& s) const\n\t{\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn *this * (btScalar(1.0) / s);\n\t}\n\n\t/**@brief Inversely scale this quaternion\n   * @param s The scale factor */\n\tbtQuaternion& operator/=(const btScalar& s)\n\t{\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn *this *= btScalar(1.0) / s;\n\t}\n\n\t/**@brief Return a normalized version of this quaternion */\n\tbtQuaternion normalized() const\n\t{\n\t\treturn *this / length();\n\t}\n\t/**@brief Return the ***half*** angle between this quaternion and the other\n   * @param q The other quaternion */\n\tbtScalar angle(const btQuaternion& q) const\n\t{\n\t\tbtScalar s = btSqrt(length2() * q.length2());\n\t\tbtAssert(s != btScalar(0.0));\n\t\treturn btAcos(dot(q) / s);\n\t}\n\n\t/**@brief Return the angle between this quaternion and the other along the shortest path\n\t* @param q The other quaternion */\n\tbtScalar angleShortestPath(const btQuaternion& q) const\n\t{\n\t\tbtScalar s = btSqrt(length2() * q.length2());\n\t\tbtAssert(s != btScalar(0.0));\n\t\tif (dot(q) < 0)  // Take care of long angle case see http://en.wikipedia.org/wiki/Slerp\n\t\t\treturn btAcos(dot(-q) / s) * btScalar(2.0);\n\t\telse\n\t\t\treturn btAcos(dot(q) / s) * btScalar(2.0);\n\t}\n\n\t/**@brief Return the angle [0, 2Pi] of rotation represented by this quaternion */\n\tbtScalar getAngle() const\n\t{\n\t\tbtScalar s = btScalar(2.) * btAcos(m_floats[3]);\n\t\treturn s;\n\t}\n\n\t/**@brief Return the angle [0, Pi] of rotation represented by this quaternion along the shortest path */\n\tbtScalar getAngleShortestPath() const\n\t{\n\t\tbtScalar s;\n\t\tif (m_floats[3] >= 0)\n\t\t\ts = btScalar(2.) * btAcos(m_floats[3]);\n\t\telse\n\t\t\ts = btScalar(2.) * btAcos(-m_floats[3]);\n\t\treturn s;\n\t}\n\n\t/**@brief Return the axis of the rotation represented by this quaternion */\n\tbtVector3 getAxis() const\n\t{\n\t\tbtScalar s_squared = 1.f - m_floats[3] * m_floats[3];\n\n\t\tif (s_squared < btScalar(10.) * SIMD_EPSILON)  //Check for divide by zero\n\t\t\treturn btVector3(1.0, 0.0, 0.0);           // Arbitrary\n\t\tbtScalar s = 1.f / btSqrt(s_squared);\n\t\treturn btVector3(m_floats[0] * s, m_floats[1] * s, m_floats[2] * s);\n\t}\n\n\t/**@brief Return the inverse of this quaternion */\n\tbtQuaternion inverse() const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btQuaternion(_mm_xor_ps(mVec128, vQInv));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion((btSimdFloat4)veorq_s32((int32x4_t)mVec128, (int32x4_t)vQInv));\n#else\n\t\treturn btQuaternion(-m_floats[0], -m_floats[1], -m_floats[2], m_floats[3]);\n#endif\n\t}\n\n\t/**@brief Return the sum of this quaternion and the other \n   * @param q2 The other quaternion */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator+(const btQuaternion& q2) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btQuaternion(_mm_add_ps(mVec128, q2.mVec128));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion(vaddq_f32(mVec128, q2.mVec128));\n#else\n\t\tconst btQuaternion& q1 = *this;\n\t\treturn btQuaternion(q1.x() + q2.x(), q1.y() + q2.y(), q1.z() + q2.z(), q1.m_floats[3] + q2.m_floats[3]);\n#endif\n\t}\n\n\t/**@brief Return the difference between this quaternion and the other \n   * @param q2 The other quaternion */\n\tSIMD_FORCE_INLINE btQuaternion\n\toperator-(const btQuaternion& q2) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btQuaternion(_mm_sub_ps(mVec128, q2.mVec128));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion(vsubq_f32(mVec128, q2.mVec128));\n#else\n\t\tconst btQuaternion& q1 = *this;\n\t\treturn btQuaternion(q1.x() - q2.x(), q1.y() - q2.y(), q1.z() - q2.z(), q1.m_floats[3] - q2.m_floats[3]);\n#endif\n\t}\n\n\t/**@brief Return the negative of this quaternion \n   * This simply negates each element */\n\tSIMD_FORCE_INLINE btQuaternion operator-() const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btQuaternion(_mm_xor_ps(mVec128, btvMzeroMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btQuaternion((btSimdFloat4)veorq_s32((int32x4_t)mVec128, (int32x4_t)btvMzeroMask));\n#else\n\t\tconst btQuaternion& q2 = *this;\n\t\treturn btQuaternion(-q2.x(), -q2.y(), -q2.z(), -q2.m_floats[3]);\n#endif\n\t}\n\t/**@todo document this and it's use */\n\tSIMD_FORCE_INLINE btQuaternion farthest(const btQuaternion& qd) const\n\t{\n\t\tbtQuaternion diff, sum;\n\t\tdiff = *this - qd;\n\t\tsum = *this + qd;\n\t\tif (diff.dot(diff) > sum.dot(sum))\n\t\t\treturn qd;\n\t\treturn (-qd);\n\t}\n\n\t/**@todo document this and it's use */\n\tSIMD_FORCE_INLINE btQuaternion nearest(const btQuaternion& qd) const\n\t{\n\t\tbtQuaternion diff, sum;\n\t\tdiff = *this - qd;\n\t\tsum = *this + qd;\n\t\tif (diff.dot(diff) < sum.dot(sum))\n\t\t\treturn qd;\n\t\treturn (-qd);\n\t}\n\n\t/**@brief Return the quaternion which is the result of Spherical Linear Interpolation between this and the other quaternion\n   * @param q The other quaternion to interpolate with \n   * @param t The ratio between this and q to interpolate.  If t = 0 the result is this, if t=1 the result is q.\n   * Slerp interpolates assuming constant velocity.  */\n\tbtQuaternion slerp(const btQuaternion& q, const btScalar& t) const\n\t{\n\t\tconst btScalar magnitude = btSqrt(length2() * q.length2());\n\t\tbtAssert(magnitude > btScalar(0));\n\n\t\tconst btScalar product = dot(q) / magnitude;\n\t\tconst btScalar absproduct = btFabs(product);\n\n\t\tif (absproduct < btScalar(1.0 - SIMD_EPSILON))\n\t\t{\n\t\t\t// Take care of long angle case see http://en.wikipedia.org/wiki/Slerp\n\t\t\tconst btScalar theta = btAcos(absproduct);\n\t\t\tconst btScalar d = btSin(theta);\n\t\t\tbtAssert(d > btScalar(0));\n\n\t\t\tconst btScalar sign = (product < 0) ? btScalar(-1) : btScalar(1);\n\t\t\tconst btScalar s0 = btSin((btScalar(1.0) - t) * theta) / d;\n\t\t\tconst btScalar s1 = btSin(sign * t * theta) / d;\n\n\t\t\treturn btQuaternion(\n\t\t\t\t(m_floats[0] * s0 + q.x() * s1),\n\t\t\t\t(m_floats[1] * s0 + q.y() * s1),\n\t\t\t\t(m_floats[2] * s0 + q.z() * s1),\n\t\t\t\t(m_floats[3] * s0 + q.w() * s1));\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn *this;\n\t\t}\n\t}\n\n\tstatic const btQuaternion& getIdentity()\n\t{\n\t\tstatic const btQuaternion identityQuat(btScalar(0.), btScalar(0.), btScalar(0.), btScalar(1.));\n\t\treturn identityQuat;\n\t}\n\n\tSIMD_FORCE_INLINE const btScalar& getW() const { return m_floats[3]; }\n\n\tSIMD_FORCE_INLINE void serialize(struct btQuaternionData& dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerialize(const struct btQuaternionFloatData& dataIn);\n\n\tSIMD_FORCE_INLINE void deSerialize(const struct btQuaternionDoubleData& dataIn);\n\n\tSIMD_FORCE_INLINE void serializeFloat(struct btQuaternionFloatData& dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerializeFloat(const struct btQuaternionFloatData& dataIn);\n\n\tSIMD_FORCE_INLINE void serializeDouble(struct btQuaternionDoubleData& dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerializeDouble(const struct btQuaternionDoubleData& dataIn);\n};\n\n/**@brief Return the product of two quaternions */\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btQuaternion& q1, const btQuaternion& q2)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t__m128 vQ1 = q1.get128();\n\t__m128 vQ2 = q2.get128();\n\t__m128 A0, A1, B1, A2, B2;\n\n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(0, 1, 2, 0));  // X Y  z x     //      vtrn\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3, 3, 3, 0));  // W W  W X     // vdup vext\n\n\tA1 = A1 * B1;\n\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1, 2, 0, 1));  // Y Z  X Y     // vext\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2, 0, 1, 1));  // z x  Y Y     // vtrn vdup\n\n\tA2 = A2 * B2;\n\n\tB1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2, 0, 1, 2));  // z x Y Z      // vtrn vext\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1, 2, 0, 2));  // Y Z x z      // vext vtrn\n\n\tB1 = B1 * B2;  //\tA3 *= B3\n\n\tA0 = bt_splat_ps(vQ1, 3);  //\tA0\n\tA0 = A0 * vQ2;             //\tA0 * B0\n\n\tA1 = A1 + A2;  //\tAB12\n\tA0 = A0 - B1;  //\tAB03 = AB0 - AB3\n\n\tA1 = _mm_xor_ps(A1, vPPPM);  //\tchange sign of the last element\n\tA0 = A0 + A1;                //\tAB03 + AB12\n\n\treturn btQuaternion(A0);\n\n#elif defined(BT_USE_NEON)\n\n\tfloat32x4_t vQ1 = q1.get128();\n\tfloat32x4_t vQ2 = q2.get128();\n\tfloat32x4_t A0, A1, B1, A2, B2, A3, B3;\n\tfloat32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n\n\t{\n\t\tfloat32x2x2_t tmp;\n\t\ttmp = vtrn_f32(vget_high_f32(vQ1), vget_low_f32(vQ1));  // {z x}, {w y}\n\t\tvQ1zx = tmp.val[0];\n\n\t\ttmp = vtrn_f32(vget_high_f32(vQ2), vget_low_f32(vQ2));  // {z x}, {w y}\n\t\tvQ2zx = tmp.val[0];\n\t}\n\tvQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1);\n\n\tvQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n\tvQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n\tvQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n\tA1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                     // X Y  z x\n\tB1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx);  // W W  W X\n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n\tB2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n\tA3 = vcombine_f32(vQ1zx, vQ1yz);  // Z X Y Z\n\tB3 = vcombine_f32(vQ2yz, vQ2xz);  // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);                           //\tA3 *= B3\n\tA0 = vmulq_lane_f32(vQ2, vget_high_f32(vQ1), 1);  //\tA0 * B0\n\n\tA1 = vaddq_f32(A1, A2);  //\tAB12 = AB1 + AB2\n\tA0 = vsubq_f32(A0, A3);  //\tAB03 = AB0 - AB3\n\n\t//\tchange the sign of the last element\n\tA1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\n\tA0 = vaddq_f32(A0, A1);  //\tAB03 + AB12\n\n\treturn btQuaternion(A0);\n\n#else\n\treturn btQuaternion(\n\t\tq1.w() * q2.x() + q1.x() * q2.w() + q1.y() * q2.z() - q1.z() * q2.y(),\n\t\tq1.w() * q2.y() + q1.y() * q2.w() + q1.z() * q2.x() - q1.x() * q2.z(),\n\t\tq1.w() * q2.z() + q1.z() * q2.w() + q1.x() * q2.y() - q1.y() * q2.x(),\n\t\tq1.w() * q2.w() - q1.x() * q2.x() - q1.y() * q2.y() - q1.z() * q2.z());\n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btQuaternion& q, const btVector3& w)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t__m128 vQ1 = q.get128();\n\t__m128 vQ2 = w.get128();\n\t__m128 A1, B1, A2, B2, A3, B3;\n\n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(3, 3, 3, 0));\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(0, 1, 2, 0));\n\n\tA1 = A1 * B1;\n\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1, 2, 0, 1));\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2, 0, 1, 1));\n\n\tA2 = A2 * B2;\n\n\tA3 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2, 0, 1, 2));\n\tB3 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1, 2, 0, 2));\n\n\tA3 = A3 * B3;  //\tA3 *= B3\n\n\tA1 = A1 + A2;                //\tAB12\n\tA1 = _mm_xor_ps(A1, vPPPM);  //\tchange sign of the last element\n\tA1 = A1 - A3;                //\tAB123 = AB12 - AB3\n\n\treturn btQuaternion(A1);\n\n#elif defined(BT_USE_NEON)\n\n\tfloat32x4_t vQ1 = q.get128();\n\tfloat32x4_t vQ2 = w.get128();\n\tfloat32x4_t A1, B1, A2, B2, A3, B3;\n\tfloat32x2_t vQ1wx, vQ2zx, vQ1yz, vQ2yz, vQ1zx, vQ2xz;\n\n\tvQ1wx = vext_f32(vget_high_f32(vQ1), vget_low_f32(vQ1), 1);\n\t{\n\t\tfloat32x2x2_t tmp;\n\n\t\ttmp = vtrn_f32(vget_high_f32(vQ2), vget_low_f32(vQ2));  // {z x}, {w y}\n\t\tvQ2zx = tmp.val[0];\n\n\t\ttmp = vtrn_f32(vget_high_f32(vQ1), vget_low_f32(vQ1));  // {z x}, {w y}\n\t\tvQ1zx = tmp.val[0];\n\t}\n\n\tvQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n\tvQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n\tvQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n\tA1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ1), 1), vQ1wx);  // W W  W X\n\tB1 = vcombine_f32(vget_low_f32(vQ2), vQ2zx);                     // X Y  z x\n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n\tB2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n\tA3 = vcombine_f32(vQ1zx, vQ1yz);  // Z X Y Z\n\tB3 = vcombine_f32(vQ2yz, vQ2xz);  // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);  //\tA3 *= B3\n\n\tA1 = vaddq_f32(A1, A2);  //\tAB12 = AB1 + AB2\n\n\t//\tchange the sign of the last element\n\tA1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\n\n\tA1 = vsubq_f32(A1, A3);  //\tAB123 = AB12 - AB3\n\n\treturn btQuaternion(A1);\n\n#else\n\treturn btQuaternion(\n\t\tq.w() * w.x() + q.y() * w.z() - q.z() * w.y(),\n\t\tq.w() * w.y() + q.z() * w.x() - q.x() * w.z(),\n\t\tq.w() * w.z() + q.x() * w.y() - q.y() * w.x(),\n\t\t-q.x() * w.x() - q.y() * w.y() - q.z() * w.z());\n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion\noperator*(const btVector3& w, const btQuaternion& q)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t__m128 vQ1 = w.get128();\n\t__m128 vQ2 = q.get128();\n\t__m128 A1, B1, A2, B2, A3, B3;\n\n\tA1 = bt_pshufd_ps(vQ1, BT_SHUFFLE(0, 1, 2, 0));  // X Y  z x\n\tB1 = bt_pshufd_ps(vQ2, BT_SHUFFLE(3, 3, 3, 0));  // W W  W X\n\n\tA1 = A1 * B1;\n\n\tA2 = bt_pshufd_ps(vQ1, BT_SHUFFLE(1, 2, 0, 1));\n\tB2 = bt_pshufd_ps(vQ2, BT_SHUFFLE(2, 0, 1, 1));\n\n\tA2 = A2 * B2;\n\n\tA3 = bt_pshufd_ps(vQ1, BT_SHUFFLE(2, 0, 1, 2));\n\tB3 = bt_pshufd_ps(vQ2, BT_SHUFFLE(1, 2, 0, 2));\n\n\tA3 = A3 * B3;  //\tA3 *= B3\n\n\tA1 = A1 + A2;                //\tAB12\n\tA1 = _mm_xor_ps(A1, vPPPM);  //\tchange sign of the last element\n\tA1 = A1 - A3;                //\tAB123 = AB12 - AB3\n\n\treturn btQuaternion(A1);\n\n#elif defined(BT_USE_NEON)\n\n\tfloat32x4_t vQ1 = w.get128();\n\tfloat32x4_t vQ2 = q.get128();\n\tfloat32x4_t A1, B1, A2, B2, A3, B3;\n\tfloat32x2_t vQ1zx, vQ2wx, vQ1yz, vQ2zx, vQ2yz, vQ2xz;\n\n\t{\n\t\tfloat32x2x2_t tmp;\n\n\t\ttmp = vtrn_f32(vget_high_f32(vQ1), vget_low_f32(vQ1));  // {z x}, {w y}\n\t\tvQ1zx = tmp.val[0];\n\n\t\ttmp = vtrn_f32(vget_high_f32(vQ2), vget_low_f32(vQ2));  // {z x}, {w y}\n\t\tvQ2zx = tmp.val[0];\n\t}\n\tvQ2wx = vext_f32(vget_high_f32(vQ2), vget_low_f32(vQ2), 1);\n\n\tvQ1yz = vext_f32(vget_low_f32(vQ1), vget_high_f32(vQ1), 1);\n\n\tvQ2yz = vext_f32(vget_low_f32(vQ2), vget_high_f32(vQ2), 1);\n\tvQ2xz = vext_f32(vQ2zx, vQ2zx, 1);\n\n\tA1 = vcombine_f32(vget_low_f32(vQ1), vQ1zx);                     // X Y  z x\n\tB1 = vcombine_f32(vdup_lane_f32(vget_high_f32(vQ2), 1), vQ2wx);  // W W  W X\n\n\tA2 = vcombine_f32(vQ1yz, vget_low_f32(vQ1));\n\tB2 = vcombine_f32(vQ2zx, vdup_lane_f32(vget_low_f32(vQ2), 1));\n\n\tA3 = vcombine_f32(vQ1zx, vQ1yz);  // Z X Y Z\n\tB3 = vcombine_f32(vQ2yz, vQ2xz);  // Y Z x z\n\n\tA1 = vmulq_f32(A1, B1);\n\tA2 = vmulq_f32(A2, B2);\n\tA3 = vmulq_f32(A3, B3);  //\tA3 *= B3\n\n\tA1 = vaddq_f32(A1, A2);  //\tAB12 = AB1 + AB2\n\n\t//\tchange the sign of the last element\n\tA1 = (btSimdFloat4)veorq_s32((int32x4_t)A1, (int32x4_t)vPPPM);\n\n\tA1 = vsubq_f32(A1, A3);  //\tAB123 = AB12 - AB3\n\n\treturn btQuaternion(A1);\n\n#else\n\treturn btQuaternion(\n\t\t+w.x() * q.w() + w.y() * q.z() - w.z() * q.y(),\n\t\t+w.y() * q.w() + w.z() * q.x() - w.x() * q.z(),\n\t\t+w.z() * q.w() + w.x() * q.y() - w.y() * q.x(),\n\t\t-w.x() * q.x() - w.y() * q.y() - w.z() * q.z());\n#endif\n}\n\n/**@brief Calculate the dot product between two quaternions */\nSIMD_FORCE_INLINE btScalar\ndot(const btQuaternion& q1, const btQuaternion& q2)\n{\n\treturn q1.dot(q2);\n}\n\n/**@brief Return the length of a quaternion */\nSIMD_FORCE_INLINE btScalar\nlength(const btQuaternion& q)\n{\n\treturn q.length();\n}\n\n/**@brief Return the angle between two quaternions*/\nSIMD_FORCE_INLINE btScalar\nbtAngle(const btQuaternion& q1, const btQuaternion& q2)\n{\n\treturn q1.angle(q2);\n}\n\n/**@brief Return the inverse of a quaternion*/\nSIMD_FORCE_INLINE btQuaternion\ninverse(const btQuaternion& q)\n{\n\treturn q.inverse();\n}\n\n/**@brief Return the result of spherical linear interpolation betwen two quaternions \n * @param q1 The first quaternion\n * @param q2 The second quaternion \n * @param t The ration between q1 and q2.  t = 0 return q1, t=1 returns q2 \n * Slerp assumes constant velocity between positions. */\nSIMD_FORCE_INLINE btQuaternion\nslerp(const btQuaternion& q1, const btQuaternion& q2, const btScalar& t)\n{\n\treturn q1.slerp(q2, t);\n}\n\nSIMD_FORCE_INLINE btVector3\nquatRotate(const btQuaternion& rotation, const btVector3& v)\n{\n\tbtQuaternion q = rotation * v;\n\tq *= rotation.inverse();\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\treturn btVector3(_mm_and_ps(q.get128(), btvFFF0fMask));\n#elif defined(BT_USE_NEON)\n\treturn btVector3((float32x4_t)vandq_s32((int32x4_t)q.get128(), btvFFF0Mask));\n#else\n\treturn btVector3(q.getX(), q.getY(), q.getZ());\n#endif\n}\n\nSIMD_FORCE_INLINE btQuaternion\nshortestArcQuat(const btVector3& v0, const btVector3& v1)  // Game Programming Gems 2.10. make sure v0,v1 are normalized\n{\n\tbtVector3 c = v0.cross(v1);\n\tbtScalar d = v0.dot(v1);\n\n\tif (d < -1.0 + SIMD_EPSILON)\n\t{\n\t\tbtVector3 n, unused;\n\t\tbtPlaneSpace1(v0, n, unused);\n\t\treturn btQuaternion(n.x(), n.y(), n.z(), 0.0f);  // just pick any vector that is orthogonal to v0\n\t}\n\n\tbtScalar s = btSqrt((1.0f + d) * 2.0f);\n\tbtScalar rs = 1.0f / s;\n\n\treturn btQuaternion(c.getX() * rs, c.getY() * rs, c.getZ() * rs, s * 0.5f);\n}\n\nSIMD_FORCE_INLINE btQuaternion\nshortestArcQuatNormalize2(btVector3& v0, btVector3& v1)\n{\n\tv0.normalize();\n\tv1.normalize();\n\treturn shortestArcQuat(v0, v1);\n}\n\nstruct btQuaternionFloatData\n{\n\tfloat m_floats[4];\n};\n\nstruct btQuaternionDoubleData\n{\n\tdouble m_floats[4];\n};\n\nSIMD_FORCE_INLINE void btQuaternion::serializeFloat(struct btQuaternionFloatData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = float(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btQuaternion::deSerializeFloat(const struct btQuaternionFloatData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btQuaternion::serializeDouble(struct btQuaternionDoubleData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = double(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btQuaternion::deSerializeDouble(const struct btQuaternionDoubleData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btQuaternion::serialize(struct btQuaternionData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = m_floats[i];\n}\n\nSIMD_FORCE_INLINE void btQuaternion::deSerialize(const struct btQuaternionFloatData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = (btScalar)dataIn.m_floats[i];\n}\n\nSIMD_FORCE_INLINE void btQuaternion::deSerialize(const struct btQuaternionDoubleData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = (btScalar)dataIn.m_floats[i];\n}\n\n#endif  //BT_SIMD__QUATERNION_H_\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btQuickprof.h",
    "content": "\n/***************************************************************************************************\n**\n** Real-Time Hierarchical Profiling for Game Programming Gems 3\n**\n** by Greg Hjelstrom & Byon Garrabrant\n**\n***************************************************************************************************/\n\n// Credits: The Clock class was inspired by the Timer classes in\n// Ogre (www.ogre3d.org).\n\n#ifndef BT_QUICK_PROF_H\n#define BT_QUICK_PROF_H\n\n#include \"btScalar.h\"\n#define USE_BT_CLOCK 1\n\n#ifdef USE_BT_CLOCK\n\n///The btClock is a portable basic clock that measures accurate time in seconds, use for profiling.\nclass btClock\n{\npublic:\n\tbtClock();\n\n\tbtClock(const btClock& other);\n\tbtClock& operator=(const btClock& other);\n\n\t~btClock();\n\n\t/// Resets the initial reference time.\n\tvoid reset();\n\n\t/// Returns the time in ms since the last call to reset or since\n\t/// the btClock was created.\n\tunsigned long long int getTimeMilliseconds();\n\n\t/// Returns the time in us since the last call to reset or since\n\t/// the Clock was created.\n\tunsigned long long int getTimeMicroseconds();\n\n\tunsigned long long int getTimeNanoseconds();\n\n\t/// Returns the time in s since the last call to reset or since\n\t/// the Clock was created.\n\tbtScalar getTimeSeconds();\n\nprivate:\n\tstruct btClockData* m_data;\n};\n\n#endif  //USE_BT_CLOCK\n\ntypedef void(btEnterProfileZoneFunc)(const char* msg);\ntypedef void(btLeaveProfileZoneFunc)();\n\nbtEnterProfileZoneFunc* btGetCurrentEnterProfileZoneFunc();\nbtLeaveProfileZoneFunc* btGetCurrentLeaveProfileZoneFunc();\n\nvoid btSetCustomEnterProfileZoneFunc(btEnterProfileZoneFunc* enterFunc);\nvoid btSetCustomLeaveProfileZoneFunc(btLeaveProfileZoneFunc* leaveFunc);\n\n#ifndef BT_ENABLE_PROFILE\n#define BT_NO_PROFILE 1\n#endif  //BT_NO_PROFILE\n\nconst unsigned int BT_QUICKPROF_MAX_THREAD_COUNT = 64;\n\n//btQuickprofGetCurrentThreadIndex will return -1 if thread index cannot be determined,\n//otherwise returns thread index in range [0..maxThreads]\nunsigned int btQuickprofGetCurrentThreadIndex2();\n\n#ifndef BT_NO_PROFILE\n\n\n#include <stdio.h>  //@todo remove this, backwards compatibility\n\n#include \"btAlignedAllocator.h\"\n#include <new>\n\n///A node in the Profile Hierarchy Tree\nclass CProfileNode\n{\npublic:\n\tCProfileNode(const char* name, CProfileNode* parent);\n\t~CProfileNode(void);\n\n\tCProfileNode* Get_Sub_Node(const char* name);\n\n\tCProfileNode* Get_Parent(void) { return Parent; }\n\tCProfileNode* Get_Sibling(void) { return Sibling; }\n\tCProfileNode* Get_Child(void) { return Child; }\n\n\tvoid CleanupMemory();\n\tvoid Reset(void);\n\tvoid Call(void);\n\tbool Return(void);\n\n\tconst char* Get_Name(void) { return Name; }\n\tint Get_Total_Calls(void) { return TotalCalls; }\n\tfloat Get_Total_Time(void) { return TotalTime; }\n\tvoid* GetUserPointer() const { return m_userPtr; }\n\tvoid SetUserPointer(void* ptr) { m_userPtr = ptr; }\n\nprotected:\n\tconst char* Name;\n\tint TotalCalls;\n\tfloat TotalTime;\n\tunsigned long int StartTime;\n\tint RecursionCounter;\n\n\tCProfileNode* Parent;\n\tCProfileNode* Child;\n\tCProfileNode* Sibling;\n\tvoid* m_userPtr;\n};\n\n///An iterator to navigate through the tree\nclass CProfileIterator\n{\npublic:\n\t// Access all the children of the current parent\n\tvoid First(void);\n\tvoid Next(void);\n\tbool Is_Done(void);\n\tbool Is_Root(void) { return (CurrentParent->Get_Parent() == 0); }\n\n\tvoid Enter_Child(int index);     // Make the given child the new parent\n\tvoid Enter_Largest_Child(void);  // Make the largest child the new parent\n\tvoid Enter_Parent(void);         // Make the current parent's parent the new parent\n\n\t// Access the current child\n\tconst char* Get_Current_Name(void) { return CurrentChild->Get_Name(); }\n\tint Get_Current_Total_Calls(void) { return CurrentChild->Get_Total_Calls(); }\n\tfloat Get_Current_Total_Time(void) { return CurrentChild->Get_Total_Time(); }\n\n\tvoid* Get_Current_UserPointer(void) { return CurrentChild->GetUserPointer(); }\n\tvoid Set_Current_UserPointer(void* ptr) { CurrentChild->SetUserPointer(ptr); }\n\t// Access the current parent\n\tconst char* Get_Current_Parent_Name(void) { return CurrentParent->Get_Name(); }\n\tint Get_Current_Parent_Total_Calls(void) { return CurrentParent->Get_Total_Calls(); }\n\tfloat Get_Current_Parent_Total_Time(void) { return CurrentParent->Get_Total_Time(); }\n\nprotected:\n\tCProfileNode* CurrentParent;\n\tCProfileNode* CurrentChild;\n\n\tCProfileIterator(CProfileNode* start);\n\tfriend class CProfileManager;\n};\n\n///The Manager for the Profile system\nclass CProfileManager\n{\npublic:\n\tstatic void Start_Profile(const char* name);\n\tstatic void Stop_Profile(void);\n\n\tstatic void CleanupMemory(void);\n\t//\t{\n\t//\t\tRoot.CleanupMemory();\n\t//\t}\n\n\tstatic void Reset(void);\n\tstatic void Increment_Frame_Counter(void);\n\tstatic int Get_Frame_Count_Since_Reset(void) { return FrameCounter; }\n\tstatic float Get_Time_Since_Reset(void);\n\n\tstatic CProfileIterator* Get_Iterator(void);\n\t//\t{\n\t//\n\t//\t\treturn new CProfileIterator( &Root );\n\t//\t}\n\tstatic void Release_Iterator(CProfileIterator* iterator) { delete (iterator); }\n\n\tstatic void dumpRecursive(CProfileIterator* profileIterator, int spacing);\n\n\tstatic void dumpAll();\n\nprivate:\n\tstatic int FrameCounter;\n\tstatic unsigned long int ResetTime;\n};\n\n#endif  //#ifndef BT_NO_PROFILE\n\n///ProfileSampleClass is a simple way to profile a function's scope\n///Use the BT_PROFILE macro at the start of scope to time\nclass CProfileSample\n{\npublic:\n\tCProfileSample(const char* name);\n\n\t~CProfileSample(void);\n};\n\n#define BT_PROFILE(name) CProfileSample __profile(name)\n\n#endif  //BT_QUICK_PROF_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btRandom.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_GEN_RANDOM_H\n#define BT_GEN_RANDOM_H\n\n#ifdef MT19937\n\n#include <limits.h>\n#include <mt19937.h>\n\n#define GEN_RAND_MAX UINT_MAX\n\nSIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { init_genrand(seed); }\nSIMD_FORCE_INLINE unsigned int GEN_rand() { return genrand_int32(); }\n\n#else\n\n#include <stdlib.h>\n\n#define GEN_RAND_MAX RAND_MAX\n\nSIMD_FORCE_INLINE void GEN_srand(unsigned int seed) { srand(seed); }\nSIMD_FORCE_INLINE unsigned int GEN_rand() { return rand(); }\n\n#endif\n\n#endif  //BT_GEN_RANDOM_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btReducedVector.h",
    "content": "//\n//  btReducedVectors.h\n//  BulletLinearMath\n//\n//  Created by Xuchen Han on 4/4/20.\n//\n#ifndef btReducedVectors_h\n#define btReducedVectors_h\n#include \"btVector3.h\"\n#include \"btMatrix3x3.h\"\n#include \"btAlignedObjectArray.h\"\n#include <stdio.h>\n#include <vector>\n#include <algorithm>\nstruct TwoInts\n{\n    int a,b;\n};\ninline bool operator<(const TwoInts& A, const TwoInts& B)\n{\n    return A.b < B.b;\n}\n\n\n// A helper vector type used for CG projections\nclass btReducedVector\n{\npublic:\n    btAlignedObjectArray<int> m_indices;\n    btAlignedObjectArray<btVector3> m_vecs;\n    int m_sz; // all m_indices value < m_sz\npublic:\n\tbtReducedVector():m_sz(0)\n\t{\n\t\tm_indices.resize(0);\n\t\tm_vecs.resize(0);\n        m_indices.clear();\n        m_vecs.clear();\n\t}\n\t\n    btReducedVector(int sz): m_sz(sz)\n    {\n        m_indices.resize(0);\n        m_vecs.resize(0);\n        m_indices.clear();\n        m_vecs.clear();\n    }\n    \n    btReducedVector(int sz, const btAlignedObjectArray<int>& indices, const btAlignedObjectArray<btVector3>& vecs): m_sz(sz), m_indices(indices), m_vecs(vecs)\n    {\n    }\n    \n    void simplify()\n    {\n        btAlignedObjectArray<int> old_indices(m_indices);\n        btAlignedObjectArray<btVector3> old_vecs(m_vecs);\n        m_indices.resize(0);\n        m_vecs.resize(0);\n        m_indices.clear();\n        m_vecs.clear();\n        for (int i = 0; i < old_indices.size(); ++i)\n        {\n            if (old_vecs[i].length2() > SIMD_EPSILON)\n            {\n                m_indices.push_back(old_indices[i]);\n                m_vecs.push_back(old_vecs[i]);\n            }\n        }\n    }\n    \n    btReducedVector operator+(const btReducedVector& other)\n    {\n\t\tbtReducedVector ret(m_sz);\n\t\tint i=0, j=0;\n\t\twhile (i < m_indices.size() && j < other.m_indices.size())\n\t\t{\n\t\t\tif (m_indices[i] < other.m_indices[j])\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(m_indices[i]);\n\t\t\t\tret.m_vecs.push_back(m_vecs[i]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse if (m_indices[i] > other.m_indices[j])\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\t\tret.m_vecs.push_back(other.m_vecs[j]);\n\t\t\t\t++j;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\t\tret.m_vecs.push_back(m_vecs[i] + other.m_vecs[j]);\n\t\t\t\t++i; ++j;\n\t\t\t}\n\t\t}\n\t\twhile (i < m_indices.size())\n\t\t{\n\t\t\tret.m_indices.push_back(m_indices[i]);\n\t\t\tret.m_vecs.push_back(m_vecs[i]);\n\t\t\t++i;\n\t\t}\n\t\twhile (j < other.m_indices.size())\n\t\t{\n\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\tret.m_vecs.push_back(other.m_vecs[j]);\n\t\t\t++j;\n\t\t}\n        ret.simplify();\n        return ret;\n    }\n\n    btReducedVector operator-()\n    {\n        btReducedVector ret(m_sz);\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            ret.m_indices.push_back(m_indices[i]);\n            ret.m_vecs.push_back(-m_vecs[i]);\n        }\n        ret.simplify();\n        return ret;\n    }\n    \n    btReducedVector operator-(const btReducedVector& other)\n    {\n\t\tbtReducedVector ret(m_sz);\n\t\tint i=0, j=0;\n\t\twhile (i < m_indices.size() && j < other.m_indices.size())\n\t\t{\n\t\t\tif (m_indices[i] < other.m_indices[j])\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(m_indices[i]);\n\t\t\t\tret.m_vecs.push_back(m_vecs[i]);\n\t\t\t\t++i;\n\t\t\t}\n\t\t\telse if (m_indices[i] > other.m_indices[j])\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\t\tret.m_vecs.push_back(-other.m_vecs[j]);\n\t\t\t\t++j;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\t\tret.m_vecs.push_back(m_vecs[i] - other.m_vecs[j]);\n\t\t\t\t++i; ++j;\n\t\t\t}\n\t\t}\n\t\twhile (i < m_indices.size())\n\t\t{\n\t\t\tret.m_indices.push_back(m_indices[i]);\n\t\t\tret.m_vecs.push_back(m_vecs[i]);\n\t\t\t++i;\n\t\t}\n\t\twhile (j < other.m_indices.size())\n\t\t{\n\t\t\tret.m_indices.push_back(other.m_indices[j]);\n\t\t\tret.m_vecs.push_back(-other.m_vecs[j]);\n\t\t\t++j;\n\t\t}\n        ret.simplify();\n\t\treturn ret;\n    }\n    \n    bool operator==(const btReducedVector& other) const\n    {\n        if (m_sz != other.m_sz)\n            return false;\n        if (m_indices.size() != other.m_indices.size())\n            return false;\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            if (m_indices[i] != other.m_indices[i] || m_vecs[i] != other.m_vecs[i])\n            {\n                return false;\n            }\n        }\n        return true;\n    }\n    \n    bool operator!=(const btReducedVector& other) const\n    {\n        return !(*this == other);\n    }\n\t\n\tbtReducedVector& operator=(const btReducedVector& other)\n\t{\n\t\tif (this == &other)\n\t\t{\n\t\t\treturn *this;\n\t\t}\n        m_sz = other.m_sz;\n\t\tm_indices.copyFromArray(other.m_indices);\n\t\tm_vecs.copyFromArray(other.m_vecs);\n\t\treturn *this;\n\t}\n    \n    btScalar dot(const btReducedVector& other) const\n    {\n        btScalar ret = 0;\n        int j = 0;\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            while (j < other.m_indices.size() && other.m_indices[j] < m_indices[i])\n            {\n                ++j;\n            }\n            if (j < other.m_indices.size() && other.m_indices[j] == m_indices[i])\n            {\n                ret += m_vecs[i].dot(other.m_vecs[j]);\n//                ++j;\n            }\n        }\n        return ret;\n    }\n    \n    btScalar dot(const btAlignedObjectArray<btVector3>& other) const\n    {\n        btScalar ret = 0;\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            ret += m_vecs[i].dot(other[m_indices[i]]);\n        }\n        return ret;\n    }\n    \n    btScalar length2() const\n    {\n        return this->dot(*this);\n    }\n\t\n\tvoid normalize();\n    \n    // returns the projection of this onto other\n    btReducedVector proj(const btReducedVector& other) const;\n    \n    bool testAdd() const;\n    \n    bool testMinus() const;\n    \n    bool testDot() const;\n    \n    bool testMultiply() const;\n    \n    void test() const;\n    \n    void print() const\n    {\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            printf(\"%d: (%f, %f, %f)/\", m_indices[i], m_vecs[i][0],m_vecs[i][1],m_vecs[i][2]);\n        }\n        printf(\"\\n\");\n    }\n    \n    \n    void sort()\n    {\n        std::vector<TwoInts> tuples;\n        for (int i = 0; i < m_indices.size(); ++i)\n        {\n            TwoInts ti;\n            ti.a = i;\n            ti.b = m_indices[i];\n            tuples.push_back(ti);\n        }\n        std::sort(tuples.begin(), tuples.end());\n        btAlignedObjectArray<int> new_indices;\n        btAlignedObjectArray<btVector3> new_vecs;\n        for (size_t i = 0; i < tuples.size(); ++i)\n        {\n            new_indices.push_back(tuples[i].b);\n            new_vecs.push_back(m_vecs[tuples[i].a]);\n        }\n        m_indices = new_indices;\n        m_vecs = new_vecs;\n    }\n};\n\nSIMD_FORCE_INLINE btReducedVector operator*(const btReducedVector& v, btScalar s)\n{\n    btReducedVector ret(v.m_sz);\n    for (int i = 0; i < v.m_indices.size(); ++i)\n    {\n        ret.m_indices.push_back(v.m_indices[i]);\n        ret.m_vecs.push_back(s*v.m_vecs[i]);\n    }\n    ret.simplify();\n    return ret;\n}\n\nSIMD_FORCE_INLINE btReducedVector operator*(btScalar s, const btReducedVector& v)\n{\n    return v*s;\n}\n\nSIMD_FORCE_INLINE btReducedVector operator/(const btReducedVector& v, btScalar s)\n{\n\treturn v * (1.0/s);\n}\n\nSIMD_FORCE_INLINE btReducedVector& operator/=(btReducedVector& v, btScalar s)\n{\n\tv = v/s;\n\treturn v;\n}\n\nSIMD_FORCE_INLINE btReducedVector& operator+=(btReducedVector& v1, const btReducedVector& v2)\n{\n\tv1 = v1+v2;\n\treturn v1;\n}\n\nSIMD_FORCE_INLINE btReducedVector& operator-=(btReducedVector& v1, const btReducedVector& v2)\n{\n\tv1 = v1-v2;\n\treturn v1;\n}\n\n#endif /* btReducedVectors_h */\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btScalar.h",
    "content": "/*\nCopyright (c) 2003-2009 Erwin Coumans  http://bullet.googlecode.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SCALAR_H\n#define BT_SCALAR_H\n\n#ifdef BT_MANAGED_CODE\n//Aligned data types not supported in managed code\n#pragma unmanaged\n#endif\n\n#include <math.h>\n#include <stdlib.h>  //size_t for MSVC 6.0\n#include <float.h>\n\n/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/\n#define BT_BULLET_VERSION 317\n\ninline int btGetVersion()\n{\n\treturn BT_BULLET_VERSION;\n}\n\ninline int btIsDoublePrecision()\n{\n  #ifdef BT_USE_DOUBLE_PRECISION\n  return true;\n  #else\n  return false;\n  #endif\n}\n\n\n// The following macro \"BT_NOT_EMPTY_FILE\" can be put into a file\n// in order suppress the MS Visual C++ Linker warning 4221\n//\n// warning LNK4221: no public symbols found; archive member will be inaccessible\n//\n// This warning occurs on PC and XBOX when a file compiles out completely\n// has no externally visible symbols which may be dependant on configuration\n// #defines and options.\n//\n// see more https://stackoverflow.com/questions/1822887/what-is-the-best-way-to-eliminate-ms-visual-c-linker-warning-warning-lnk422\n\n#if defined(_MSC_VER)\n#define BT_NOT_EMPTY_FILE_CAT_II(p, res) res\n#define BT_NOT_EMPTY_FILE_CAT_I(a, b) BT_NOT_EMPTY_FILE_CAT_II(~, a##b)\n#define BT_NOT_EMPTY_FILE_CAT(a, b) BT_NOT_EMPTY_FILE_CAT_I(a, b)\n#define BT_NOT_EMPTY_FILE                                      \\\n\tnamespace                                                  \\\n\t{                                                          \\\n\tchar BT_NOT_EMPTY_FILE_CAT(NoEmptyFileDummy, __COUNTER__); \\\n\t}\n#else\n#define BT_NOT_EMPTY_FILE\n#endif\n\n// clang and most formatting tools don't support indentation of preprocessor guards, so turn it off\n// clang-format off\n#if defined(DEBUG) || defined (_DEBUG)\n\t#define BT_DEBUG\n#endif\n\n#ifdef _WIN32\n\t#if  defined(__GNUC__)\t// it should handle both MINGW and CYGWIN\n        \t#define SIMD_FORCE_INLINE        __inline__ __attribute__((always_inline))\n        \t#define ATTRIBUTE_ALIGNED16(a)   a __attribute__((aligned(16)))\n        \t#define ATTRIBUTE_ALIGNED64(a)   a __attribute__((aligned(64)))\n        \t#define ATTRIBUTE_ALIGNED128(a)  a __attribute__((aligned(128)))\n    \t#elif ( defined(_MSC_VER) && _MSC_VER < 1300 )\n\t\t#define SIMD_FORCE_INLINE inline\n\t\t#define ATTRIBUTE_ALIGNED16(a) a\n\t\t#define ATTRIBUTE_ALIGNED64(a) a\n\t\t#define ATTRIBUTE_ALIGNED128(a) a\n\t#elif defined(_M_ARM)\n\t\t#define SIMD_FORCE_INLINE __forceinline\n\t\t#define ATTRIBUTE_ALIGNED16(a) __declspec() a\n\t\t#define ATTRIBUTE_ALIGNED64(a) __declspec() a\n\t\t#define ATTRIBUTE_ALIGNED128(a) __declspec () a\n\t#else//__MINGW32__\n\t\t//#define BT_HAS_ALIGNED_ALLOCATOR\n\t\t#pragma warning(disable : 4324) // disable padding warning\n//\t\t\t#pragma warning(disable:4530) // Disable the exception disable but used in MSCV Stl warning.\n\t\t#pragma warning(disable:4996) //Turn off warnings about deprecated C routines\n//\t\t\t#pragma warning(disable:4786) // Disable the \"debug name too long\" warning\n\n\t\t#define SIMD_FORCE_INLINE __forceinline\n\t\t#define ATTRIBUTE_ALIGNED16(a) __declspec(align(16)) a\n\t\t#define ATTRIBUTE_ALIGNED64(a) __declspec(align(64)) a\n\t\t#define ATTRIBUTE_ALIGNED128(a) __declspec (align(128)) a\n\t\t#ifdef _XBOX\n\t\t\t#define BT_USE_VMX128\n\n\t\t\t#include <ppcintrinsics.h>\n \t\t\t#define BT_HAVE_NATIVE_FSEL\n \t\t\t#define btFsel(a,b,c) __fsel((a),(b),(c))\n\t\t#else\n\n#if defined (_M_ARM)\n            //Do not turn SSE on for ARM (may want to turn on BT_USE_NEON however)\n#elif (defined (_WIN32) && (_MSC_VER) && _MSC_VER >= 1400) && (!defined (BT_USE_DOUBLE_PRECISION))\n\n#ifdef __clang__\n#define __BT_DISABLE_SSE__\n#endif\n#ifndef __BT_DISABLE_SSE__\n\t\t\t#if _MSC_VER>1400\n\t\t\t\t#define BT_USE_SIMD_VECTOR3\n\t\t\t#endif\n\t\t\t#define BT_USE_SSE\n#endif//__BT_DISABLE_SSE__\n\t\t\t#ifdef BT_USE_SSE\n\n#if (_MSC_FULL_VER >= 170050727)//Visual Studio 2012 can compile SSE4/FMA3 (but SSE4/FMA3 is not enabled by default)\n\t\t\t#define BT_ALLOW_SSE4\n#endif //(_MSC_FULL_VER >= 160040219)\n\n\t\t\t//BT_USE_SSE_IN_API is disabled under Windows by default, because \n\t\t\t//it makes it harder to integrate Bullet into your application under Windows \n\t\t\t//(structured embedding Bullet structs/classes need to be 16-byte aligned)\n\t\t\t//with relatively little performance gain\n\t\t\t//If you are not embedded Bullet data in your classes, or make sure that you align those classes on 16-byte boundaries\n\t\t\t//you can manually enable this line or set it in the build system for a bit of performance gain (a few percent, dependent on usage)\n\t\t\t//#define BT_USE_SSE_IN_API\n\t\t\t#endif //BT_USE_SSE\n\t\t\t#include <emmintrin.h>\n#endif\n\n\t\t#endif//_XBOX\n\n\t#endif //__MINGW32__\n\n\t#ifdef BT_DEBUG\n\t\t#ifdef _MSC_VER\n\t\t\t#include <stdio.h>\n\t\t\t#define btAssert(x) { if(!(x)){printf(\"Assert \" __FILE__ \":%u (%s)\\n\", __LINE__, #x);__debugbreak();\t}}\n\t\t#else//_MSC_VER\n\t\t\t#include <assert.h>\n\t\t\t#define btAssert assert\n\t\t#endif//_MSC_VER\n\t#else\n\t\t#define btAssert(x)\n\t#endif\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\n\t\t#define btLikely(_c)  _c\n\t\t#define btUnlikely(_c) _c\n\n#else//_WIN32\n\t\n\t#if defined\t(__CELLOS_LV2__)\n\t\t#define SIMD_FORCE_INLINE inline __attribute__((always_inline))\n\t\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t#ifndef assert\n\t\t#include <assert.h>\n\t\t#endif\n\t\t#ifdef BT_DEBUG\n\t\t\t#ifdef __SPU__\n\t\t\t\t#include <spu_printf.h>\n\t\t\t\t#define printf spu_printf\n\t\t\t\t#define btAssert(x) {if(!(x)){printf(\"Assert \" __FILE__ \":%u (\"#x\")\\n\", __LINE__);spu_hcmpeq(0,0);}}\n\t\t\t#else\n\t\t\t\t#define btAssert assert\n\t\t\t#endif\n\t\n\t\t#else//BT_DEBUG\n\t\t\t\t#define btAssert(x)\n\t\t#endif//BT_DEBUG\n\t\t//btFullAssert is optional, slows down a lot\n\t\t#define btFullAssert(x)\n\n\t\t#define btLikely(_c)  _c\n\t\t#define btUnlikely(_c) _c\n\n\t#else//defined\t(__CELLOS_LV2__)\n\n\t\t#ifdef USE_LIBSPE2\n\n\t\t\t#define SIMD_FORCE_INLINE __inline\n\t\t\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t\t#ifndef assert\n\t\t\t#include <assert.h>\n\t\t\t#endif\n\t#ifdef BT_DEBUG\n\t\t\t#define btAssert assert\n\t#else\n\t\t\t#define btAssert(x)\n\t#endif\n\t\t\t//btFullAssert is optional, slows down a lot\n\t\t\t#define btFullAssert(x)\n\n\n\t\t\t#define btLikely(_c)   __builtin_expect((_c), 1)\n\t\t\t#define btUnlikely(_c) __builtin_expect((_c), 0)\n\t\t\n\n\t\t#else//USE_LIBSPE2\n\t//non-windows systems\n\n\t\t\t#if (defined (__APPLE__) && (!defined (BT_USE_DOUBLE_PRECISION)))\n\t\t\t\t#if defined (__i386__) || defined (__x86_64__)\n\t\t\t\t\t#define BT_USE_SIMD_VECTOR3\n\t\t\t\t\t#define BT_USE_SSE\n\t\t\t\t\t//BT_USE_SSE_IN_API is enabled on Mac OSX by default, because memory is automatically aligned on 16-byte boundaries\n\t\t\t\t\t//if apps run into issues, we will disable the next line\n\t\t\t\t\t#define BT_USE_SSE_IN_API\n\t\t\t\t\t#ifdef BT_USE_SSE\n\t\t\t\t\t\t// include appropriate SSE level\n\t\t\t\t\t\t#if defined (__SSE4_1__)\n\t\t\t\t\t\t\t#include <smmintrin.h>\n\t\t\t\t\t\t#elif defined (__SSSE3__)\n\t\t\t\t\t\t\t#include <tmmintrin.h>\n\t\t\t\t\t\t#elif defined (__SSE3__)\n\t\t\t\t\t\t\t#include <pmmintrin.h>\n\t\t\t\t\t\t#else\n\t\t\t\t\t\t\t#include <emmintrin.h>\n\t\t\t\t\t\t#endif\n\t\t\t\t\t#endif //BT_USE_SSE\n\t\t\t\t#elif defined( __ARM_NEON__ )\n\t\t\t\t\t#ifdef __clang__\n\t\t\t\t\t\t#define BT_USE_NEON 1\n\t\t\t\t\t\t#define BT_USE_SIMD_VECTOR3\n\t\t\n\t\t\t\t\t\t#if defined BT_USE_NEON && defined (__clang__)\n\t\t\t\t\t\t\t#include <arm_neon.h>\n\t\t\t\t\t\t#endif//BT_USE_NEON\n\t\t\t\t   #endif //__clang__\n\t\t\t\t#endif//__arm__\n\n\t\t\t\t#define SIMD_FORCE_INLINE inline __attribute__ ((always_inline))\n\t\t\t///@todo: check out alignment methods for other platforms/compilers\n\t\t\t\t#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t\t\t#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t\t\t#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t\t\t#ifndef assert\n\t\t\t\t#include <assert.h>\n\t\t\t\t#endif\n\n\t\t\t\t#if defined(DEBUG) || defined (_DEBUG)\n\t\t\t\t #if defined (__i386__) || defined (__x86_64__)\n\t\t\t\t#include <stdio.h>\n\t\t\t\t #define btAssert(x)\\\n\t\t\t\t{\\\n\t\t\t\tif(!(x))\\\n\t\t\t\t{\\\n\t\t\t\t\tprintf(\"Assert %s in line %d, file %s\\n\",#x, __LINE__, __FILE__);\\\n\t\t\t\t\tasm volatile (\"int3\");\\\n\t\t\t\t}\\\n\t\t\t\t}\n\t\t\t\t#else//defined (__i386__) || defined (__x86_64__)\n\t\t\t\t\t#define btAssert assert\n\t\t\t\t#endif//defined (__i386__) || defined (__x86_64__)\n\t\t\t\t#else//defined(DEBUG) || defined (_DEBUG)\n\t\t\t\t\t#define btAssert(x)\n\t\t\t\t#endif//defined(DEBUG) || defined (_DEBUG)\n\n\t\t\t\t//btFullAssert is optional, slows down a lot\n\t\t\t\t#define btFullAssert(x)\n\t\t\t\t#define btLikely(_c)  _c\n\t\t\t\t#define btUnlikely(_c) _c\n\n\t\t\t#else//__APPLE__\n\n\t\t\t\t#define SIMD_FORCE_INLINE inline\n\t\t\t\t///@todo: check out alignment methods for other platforms/compilers\n\t\t\t\t///#define ATTRIBUTE_ALIGNED16(a) a __attribute__ ((aligned (16)))\n\t\t\t\t///#define ATTRIBUTE_ALIGNED64(a) a __attribute__ ((aligned (64)))\n\t\t\t\t///#define ATTRIBUTE_ALIGNED128(a) a __attribute__ ((aligned (128)))\n\t\t\t\t#define ATTRIBUTE_ALIGNED16(a) a\n\t\t\t\t#define ATTRIBUTE_ALIGNED64(a) a\n\t\t\t\t#define ATTRIBUTE_ALIGNED128(a) a\n\t\t\t\t#ifndef assert\n\t\t\t\t#include <assert.h>\n\t\t\t\t#endif\n\n\t\t\t\t#if defined(DEBUG) || defined (_DEBUG)\n\t\t\t\t\t#define btAssert assert\n\t\t\t\t#else\n\t\t\t\t\t#define btAssert(x)\n\t\t\t\t#endif\n\n\t\t\t\t//btFullAssert is optional, slows down a lot\n\t\t\t\t#define btFullAssert(x)\n\t\t\t\t#define btLikely(_c)  _c\n\t\t\t\t#define btUnlikely(_c) _c\n\t\t\t#endif //__APPLE__ \n\t\t#endif // LIBSPE2\n\t#endif\t//__CELLOS_LV2__\n#endif//_WIN32\n\n\n///The btScalar type abstracts floating point numbers, to easily switch between double and single floating point precision.\n#if defined(BT_USE_DOUBLE_PRECISION)\n\ttypedef double btScalar;\n\t//this number could be bigger in double precision\n\t#define BT_LARGE_FLOAT 1e30\n#else\n\ttypedef float btScalar;\n\t//keep BT_LARGE_FLOAT*BT_LARGE_FLOAT < FLT_MAX\n\t#define BT_LARGE_FLOAT 1e18f\n#endif\n\n#ifdef BT_USE_SSE\n\ttypedef __m128 btSimdFloat4;\n#endif  //BT_USE_SSE\n\n#if defined(BT_USE_SSE)\n\t//#if defined BT_USE_SSE_IN_API && defined (BT_USE_SSE)\n\t#ifdef _WIN32\n\n\t\t#ifndef BT_NAN\n\t\t\tstatic int btNanMask = 0x7F800001;\n\t\t\t#define BT_NAN (*(float *)&btNanMask)\n\t\t#endif\n\n\t\t#ifndef BT_INFINITY\n\t\t\tstatic int btInfinityMask = 0x7F800000;\n\t\t\t#define BT_INFINITY (*(float *)&btInfinityMask)\n\t\t\tinline int btGetInfinityMask()  //suppress stupid compiler warning\n\t\t\t{\n\t\t\t\treturn btInfinityMask;\n\t\t\t}\n\t\t#endif\n\n\n\n\t//use this, in case there are clashes (such as xnamath.h)\n\t#ifndef BT_NO_SIMD_OPERATOR_OVERLOADS\n\tinline __m128 operator+(const __m128 A, const __m128 B)\n\t{\n\t\treturn _mm_add_ps(A, B);\n\t}\n\n\tinline __m128 operator-(const __m128 A, const __m128 B)\n\t{\n\t\treturn _mm_sub_ps(A, B);\n\t}\n\n\tinline __m128 operator*(const __m128 A, const __m128 B)\n\t{\n\t\treturn _mm_mul_ps(A, B);\n\t}\n\t#endif  //BT_NO_SIMD_OPERATOR_OVERLOADS\n\n\t#define btCastfTo128i(a) (_mm_castps_si128(a))\n\t#define btCastfTo128d(a) (_mm_castps_pd(a))\n\t#define btCastiTo128f(a) (_mm_castsi128_ps(a))\n\t#define btCastdTo128f(a) (_mm_castpd_ps(a))\n\t#define btCastdTo128i(a) (_mm_castpd_si128(a))\n\t#define btAssign128(r0, r1, r2, r3) _mm_setr_ps(r0, r1, r2, r3)\n\n\t#else  //_WIN32\n\n\t\t#define btCastfTo128i(a) ((__m128i)(a))\n\t\t#define btCastfTo128d(a) ((__m128d)(a))\n\t\t#define btCastiTo128f(a) ((__m128)(a))\n\t\t#define btCastdTo128f(a) ((__m128)(a))\n\t\t#define btCastdTo128i(a) ((__m128i)(a))\n\t\t#define btAssign128(r0, r1, r2, r3) \\\n\t\t\t(__m128) { r0, r1, r2, r3 }\n\t\t#define BT_INFINITY INFINITY\n\t\t#define BT_NAN NAN\n\t#endif  //_WIN32\n#else//BT_USE_SSE\n\n\t#ifdef BT_USE_NEON\n\t#include <arm_neon.h>\n\n\ttypedef float32x4_t btSimdFloat4;\n\t#define BT_INFINITY INFINITY\n\t#define BT_NAN NAN\n\t#define btAssign128(r0, r1, r2, r3) \\\n\t\t(float32x4_t) { r0, r1, r2, r3 }\n\t#else  //BT_USE_NEON\n\n\t#ifndef BT_INFINITY\n\tstruct btInfMaskConverter\n\t{\n\t\tunion {\n\t\t\tfloat mask;\n\t\t\tint intmask;\n\t\t};\n\t\tbtInfMaskConverter(int _mask = 0x7F800000)\n\t\t\t: intmask(_mask)\n\t\t{\n\t\t}\n\t};\n\tstatic btInfMaskConverter btInfinityMask = 0x7F800000;\n\t#define BT_INFINITY (btInfinityMask.mask)\n\tinline int btGetInfinityMask()  //suppress stupid compiler warning\n\t{\n\t\treturn btInfinityMask.intmask;\n\t}\n\t#endif\n\t#endif  //BT_USE_NEON\n\n#endif  //BT_USE_SSE\n\n#ifdef BT_USE_NEON\n\t#include <arm_neon.h>\n\n\ttypedef float32x4_t btSimdFloat4;\n\t#define BT_INFINITY INFINITY\n\t#define BT_NAN NAN\n\t#define btAssign128(r0, r1, r2, r3) \\\n\t\t(float32x4_t) { r0, r1, r2, r3 }\n#endif//BT_USE_NEON\n\n#define BT_DECLARE_ALIGNED_ALLOCATOR()                                                                     \\\n\tSIMD_FORCE_INLINE void *operator new(size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes, 16); }   \\\n\tSIMD_FORCE_INLINE void operator delete(void *ptr) { btAlignedFree(ptr); }                              \\\n\tSIMD_FORCE_INLINE void *operator new(size_t, void *ptr) { return ptr; }                                \\\n\tSIMD_FORCE_INLINE void operator delete(void *, void *) {}                                              \\\n\tSIMD_FORCE_INLINE void *operator new[](size_t sizeInBytes) { return btAlignedAlloc(sizeInBytes, 16); } \\\n\tSIMD_FORCE_INLINE void operator delete[](void *ptr) { btAlignedFree(ptr); }                            \\\n\tSIMD_FORCE_INLINE void *operator new[](size_t, void *ptr) { return ptr; }                              \\\n\tSIMD_FORCE_INLINE void operator delete[](void *, void *) {}\n\n#if defined(BT_USE_DOUBLE_PRECISION) || defined(BT_FORCE_DOUBLE_FUNCTIONS)\n\n\tSIMD_FORCE_INLINE btScalar btSqrt(btScalar x)\n\t{\n\t\treturn sqrt(x);\n\t}\n\tSIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabs(x); }\n\tSIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cos(x); }\n\tSIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sin(x); }\n\tSIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tan(x); }\n\tSIMD_FORCE_INLINE btScalar btAcos(btScalar x)\n\t{\n\t\tif (x < btScalar(-1)) x = btScalar(-1);\n\t\tif (x > btScalar(1)) x = btScalar(1);\n\t\treturn acos(x);\n\t}\n\tSIMD_FORCE_INLINE btScalar btAsin(btScalar x)\n\t{\n\t\tif (x < btScalar(-1)) x = btScalar(-1);\n\t\tif (x > btScalar(1)) x = btScalar(1);\n\t\treturn asin(x);\n\t}\n\tSIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atan(x); }\n\tSIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2(x, y); }\n\tSIMD_FORCE_INLINE btScalar btExp(btScalar x) { return exp(x); }\n\tSIMD_FORCE_INLINE btScalar btLog(btScalar x) { return log(x); }\n\tSIMD_FORCE_INLINE btScalar btPow(btScalar x, btScalar y) { return pow(x, y); }\n\tSIMD_FORCE_INLINE btScalar btFmod(btScalar x, btScalar y) { return fmod(x, y); }\n\n#else//BT_USE_DOUBLE_PRECISION\n\n\tSIMD_FORCE_INLINE btScalar btSqrt(btScalar y)\n\t{\n\t#ifdef USE_APPROXIMATION\n\t#ifdef __LP64__\n\t\tfloat xhalf = 0.5f * y;\n\t\tint i = *(int *)&y;\n\t\ti = 0x5f375a86 - (i >> 1);\n\t\ty = *(float *)&i;\n\t\ty = y * (1.5f - xhalf * y * y);\n\t\ty = y * (1.5f - xhalf * y * y);\n\t\ty = y * (1.5f - xhalf * y * y);\n\t\ty = 1 / y;\n\t\treturn y;\n\t#else\n\t\tdouble x, z, tempf;\n\t\tunsigned long *tfptr = ((unsigned long *)&tempf) + 1;\n\t\ttempf = y;\n\t\t*tfptr = (0xbfcdd90a - *tfptr) >> 1; /* estimate of 1/sqrt(y) */\n\t\tx = tempf;\n\t\tz = y * btScalar(0.5);\n\t\tx = (btScalar(1.5) * x) - (x * x) * (x * z); /* iteration formula     */\n\t\tx = (btScalar(1.5) * x) - (x * x) * (x * z);\n\t\tx = (btScalar(1.5) * x) - (x * x) * (x * z);\n\t\tx = (btScalar(1.5) * x) - (x * x) * (x * z);\n\t\tx = (btScalar(1.5) * x) - (x * x) * (x * z);\n\t\treturn x * y;\n\t#endif\n\t#else\n\t\treturn sqrtf(y);\n\t#endif\n\t}\n\tSIMD_FORCE_INLINE btScalar btFabs(btScalar x) { return fabsf(x); }\n\tSIMD_FORCE_INLINE btScalar btCos(btScalar x) { return cosf(x); }\n\tSIMD_FORCE_INLINE btScalar btSin(btScalar x) { return sinf(x); }\n\tSIMD_FORCE_INLINE btScalar btTan(btScalar x) { return tanf(x); }\n\tSIMD_FORCE_INLINE btScalar btAcos(btScalar x)\n\t{\n\t\tif (x < btScalar(-1))\n\t\t\tx = btScalar(-1);\n\t\tif (x > btScalar(1))\n\t\t\tx = btScalar(1);\n\t\treturn acosf(x);\n\t}\n\tSIMD_FORCE_INLINE btScalar btAsin(btScalar x)\n\t{\n\t\tif (x < btScalar(-1))\n\t\t\tx = btScalar(-1);\n\t\tif (x > btScalar(1))\n\t\t\tx = btScalar(1);\n\t\treturn asinf(x);\n\t}\n\tSIMD_FORCE_INLINE btScalar btAtan(btScalar x) { return atanf(x); }\n\tSIMD_FORCE_INLINE btScalar btAtan2(btScalar x, btScalar y) { return atan2f(x, y); }\n\tSIMD_FORCE_INLINE btScalar btExp(btScalar x) { return expf(x); }\n\tSIMD_FORCE_INLINE btScalar btLog(btScalar x) { return logf(x); }\n\tSIMD_FORCE_INLINE btScalar btPow(btScalar x, btScalar y) { return powf(x, y); }\n\tSIMD_FORCE_INLINE btScalar btFmod(btScalar x, btScalar y) { return fmodf(x, y); }\n\n#endif//BT_USE_DOUBLE_PRECISION\n\n#define SIMD_PI btScalar(3.1415926535897932384626433832795029)\n#define SIMD_2_PI (btScalar(2.0) * SIMD_PI)\n#define SIMD_HALF_PI (SIMD_PI * btScalar(0.5))\n#define SIMD_RADS_PER_DEG (SIMD_2_PI / btScalar(360.0))\n#define SIMD_DEGS_PER_RAD (btScalar(360.0) / SIMD_2_PI)\n#define SIMDSQRT12 btScalar(0.7071067811865475244008443621048490)\n#define btRecipSqrt(x) ((btScalar)(btScalar(1.0) / btSqrt(btScalar(x)))) /* reciprocal square root */\n#define btRecip(x) (btScalar(1.0) / btScalar(x))\n\n#ifdef BT_USE_DOUBLE_PRECISION\n\t#define SIMD_EPSILON DBL_EPSILON\n\t#define SIMD_INFINITY DBL_MAX\n\t#define BT_ONE 1.0\n\t#define BT_ZERO 0.0\n\t#define BT_TWO 2.0\n\t#define BT_HALF 0.5\n#else\n\t#define SIMD_EPSILON FLT_EPSILON\n\t#define SIMD_INFINITY FLT_MAX\n\t#define BT_ONE 1.0f\n\t#define BT_ZERO 0.0f\n\t#define BT_TWO 2.0f\n\t#define BT_HALF 0.5f\n#endif\n\n// clang-format on\n\nSIMD_FORCE_INLINE btScalar btAtan2Fast(btScalar y, btScalar x)\n{\n\tbtScalar coeff_1 = SIMD_PI / 4.0f;\n\tbtScalar coeff_2 = 3.0f * coeff_1;\n\tbtScalar abs_y = btFabs(y);\n\tbtScalar angle;\n\tif (x >= 0.0f)\n\t{\n\t\tbtScalar r = (x - abs_y) / (x + abs_y);\n\t\tangle = coeff_1 - coeff_1 * r;\n\t}\n\telse\n\t{\n\t\tbtScalar r = (x + abs_y) / (abs_y - x);\n\t\tangle = coeff_2 - coeff_1 * r;\n\t}\n\treturn (y < 0.0f) ? -angle : angle;\n}\n\nSIMD_FORCE_INLINE bool btFuzzyZero(btScalar x) { return btFabs(x) < SIMD_EPSILON; }\n\nSIMD_FORCE_INLINE bool btEqual(btScalar a, btScalar eps)\n{\n\treturn (((a) <= eps) && !((a) < -eps));\n}\nSIMD_FORCE_INLINE bool btGreaterEqual(btScalar a, btScalar eps)\n{\n\treturn (!((a) <= eps));\n}\n\nSIMD_FORCE_INLINE int btIsNegative(btScalar x)\n{\n\treturn x < btScalar(0.0) ? 1 : 0;\n}\n\nSIMD_FORCE_INLINE btScalar btRadians(btScalar x) { return x * SIMD_RADS_PER_DEG; }\nSIMD_FORCE_INLINE btScalar btDegrees(btScalar x) { return x * SIMD_DEGS_PER_RAD; }\n\n#define BT_DECLARE_HANDLE(name) \\\n\ttypedef struct name##__     \\\n\t{                           \\\n\t\tint unused;             \\\n\t} * name\n\n#ifndef btFsel\nSIMD_FORCE_INLINE btScalar btFsel(btScalar a, btScalar b, btScalar c)\n{\n\treturn a >= 0 ? b : c;\n}\n#endif\n#define btFsels(a, b, c) (btScalar) btFsel(a, b, c)\n\nSIMD_FORCE_INLINE bool btMachineIsLittleEndian()\n{\n\tlong int i = 1;\n\tconst char *p = (const char *)&i;\n\tif (p[0] == 1)  // Lowest address contains the least significant byte\n\t\treturn true;\n\telse\n\t\treturn false;\n}\n\n///btSelect avoids branches, which makes performance much better for consoles like Playstation 3 and XBox 360\n///Thanks Phil Knight. See also http://www.cellperformance.com/articles/2006/04/more_techniques_for_eliminatin_1.html\nSIMD_FORCE_INLINE unsigned btSelect(unsigned condition, unsigned valueIfConditionNonZero, unsigned valueIfConditionZero)\n{\n\t// Set testNz to 0xFFFFFFFF if condition is nonzero, 0x00000000 if condition is zero\n\t// Rely on positive value or'ed with its negative having sign bit on\n\t// and zero value or'ed with its negative (which is still zero) having sign bit off\n\t// Use arithmetic shift right, shifting the sign bit through all 32 bits\n\tunsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);\n\tunsigned testEqz = ~testNz;\n\treturn ((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz));\n}\nSIMD_FORCE_INLINE int btSelect(unsigned condition, int valueIfConditionNonZero, int valueIfConditionZero)\n{\n\tunsigned testNz = (unsigned)(((int)condition | -(int)condition) >> 31);\n\tunsigned testEqz = ~testNz;\n\treturn static_cast<int>((valueIfConditionNonZero & testNz) | (valueIfConditionZero & testEqz));\n}\nSIMD_FORCE_INLINE float btSelect(unsigned condition, float valueIfConditionNonZero, float valueIfConditionZero)\n{\n#ifdef BT_HAVE_NATIVE_FSEL\n\treturn (float)btFsel((btScalar)condition - btScalar(1.0f), valueIfConditionNonZero, valueIfConditionZero);\n#else\n\treturn (condition != 0) ? valueIfConditionNonZero : valueIfConditionZero;\n#endif\n}\n\ntemplate <typename T>\nSIMD_FORCE_INLINE void btSwap(T &a, T &b)\n{\n\tT tmp = a;\n\ta = b;\n\tb = tmp;\n}\n\n//PCK: endian swapping functions\nSIMD_FORCE_INLINE unsigned btSwapEndian(unsigned val)\n{\n\treturn (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | ((val & 0x0000ff00) << 8) | ((val & 0x000000ff) << 24));\n}\n\nSIMD_FORCE_INLINE unsigned short btSwapEndian(unsigned short val)\n{\n\treturn static_cast<unsigned short>(((val & 0xff00) >> 8) | ((val & 0x00ff) << 8));\n}\n\nSIMD_FORCE_INLINE unsigned btSwapEndian(int val)\n{\n\treturn btSwapEndian((unsigned)val);\n}\n\nSIMD_FORCE_INLINE unsigned short btSwapEndian(short val)\n{\n\treturn btSwapEndian((unsigned short)val);\n}\n\n///btSwapFloat uses using char pointers to swap the endianness\n////btSwapFloat/btSwapDouble will NOT return a float, because the machine might 'correct' invalid floating point values\n///Not all values of sign/exponent/mantissa are valid floating point numbers according to IEEE 754.\n///When a floating point unit is faced with an invalid value, it may actually change the value, or worse, throw an exception.\n///In most systems, running user mode code, you wouldn't get an exception, but instead the hardware/os/runtime will 'fix' the number for you.\n///so instead of returning a float/double, we return integer/long long integer\nSIMD_FORCE_INLINE unsigned int btSwapEndianFloat(float d)\n{\n\tunsigned int a = 0;\n\tunsigned char *dst = (unsigned char *)&a;\n\tunsigned char *src = (unsigned char *)&d;\n\n\tdst[0] = src[3];\n\tdst[1] = src[2];\n\tdst[2] = src[1];\n\tdst[3] = src[0];\n\treturn a;\n}\n\n// unswap using char pointers\nSIMD_FORCE_INLINE float btUnswapEndianFloat(unsigned int a)\n{\n\tfloat d = 0.0f;\n\tunsigned char *src = (unsigned char *)&a;\n\tunsigned char *dst = (unsigned char *)&d;\n\n\tdst[0] = src[3];\n\tdst[1] = src[2];\n\tdst[2] = src[1];\n\tdst[3] = src[0];\n\n\treturn d;\n}\n\n// swap using char pointers\nSIMD_FORCE_INLINE void btSwapEndianDouble(double d, unsigned char *dst)\n{\n\tunsigned char *src = (unsigned char *)&d;\n\n\tdst[0] = src[7];\n\tdst[1] = src[6];\n\tdst[2] = src[5];\n\tdst[3] = src[4];\n\tdst[4] = src[3];\n\tdst[5] = src[2];\n\tdst[6] = src[1];\n\tdst[7] = src[0];\n}\n\n// unswap using char pointers\nSIMD_FORCE_INLINE double btUnswapEndianDouble(const unsigned char *src)\n{\n\tdouble d = 0.0;\n\tunsigned char *dst = (unsigned char *)&d;\n\n\tdst[0] = src[7];\n\tdst[1] = src[6];\n\tdst[2] = src[5];\n\tdst[3] = src[4];\n\tdst[4] = src[3];\n\tdst[5] = src[2];\n\tdst[6] = src[1];\n\tdst[7] = src[0];\n\n\treturn d;\n}\n\ntemplate <typename T>\nSIMD_FORCE_INLINE void btSetZero(T *a, int n)\n{\n\tT *acurr = a;\n\tsize_t ncurr = n;\n\twhile (ncurr > 0)\n\t{\n\t\t*(acurr++) = 0;\n\t\t--ncurr;\n\t}\n}\n\nSIMD_FORCE_INLINE btScalar btLargeDot(const btScalar *a, const btScalar *b, int n)\n{\n\tbtScalar p0, q0, m0, p1, q1, m1, sum;\n\tsum = 0;\n\tn -= 2;\n\twhile (n >= 0)\n\t{\n\t\tp0 = a[0];\n\t\tq0 = b[0];\n\t\tm0 = p0 * q0;\n\t\tp1 = a[1];\n\t\tq1 = b[1];\n\t\tm1 = p1 * q1;\n\t\tsum += m0;\n\t\tsum += m1;\n\t\ta += 2;\n\t\tb += 2;\n\t\tn -= 2;\n\t}\n\tn += 2;\n\twhile (n > 0)\n\t{\n\t\tsum += (*a) * (*b);\n\t\ta++;\n\t\tb++;\n\t\tn--;\n\t}\n\treturn sum;\n}\n\n// returns normalized value in range [-SIMD_PI, SIMD_PI]\nSIMD_FORCE_INLINE btScalar btNormalizeAngle(btScalar angleInRadians)\n{\n\tangleInRadians = btFmod(angleInRadians, SIMD_2_PI);\n\tif (angleInRadians < -SIMD_PI)\n\t{\n\t\treturn angleInRadians + SIMD_2_PI;\n\t}\n\telse if (angleInRadians > SIMD_PI)\n\t{\n\t\treturn angleInRadians - SIMD_2_PI;\n\t}\n\telse\n\t{\n\t\treturn angleInRadians;\n\t}\n}\n\n///rudimentary class to provide type info\nstruct btTypedObject\n{\n\tbtTypedObject(int objectType)\n\t\t: m_objectType(objectType)\n\t{\n\t}\n\tint m_objectType;\n\tinline int getObjectType() const\n\t{\n\t\treturn m_objectType;\n\t}\n};\n\n///align a pointer to the provided alignment, upwards\ntemplate <typename T>\nT *btAlignPointer(T *unalignedPtr, size_t alignment)\n{\n\tstruct btConvertPointerSizeT\n\t{\n\t\tunion {\n\t\t\tT *ptr;\n\t\t\tsize_t integer;\n\t\t};\n\t};\n\tbtConvertPointerSizeT converter;\n\n\tconst size_t bit_mask = ~(alignment - 1);\n\tconverter.ptr = unalignedPtr;\n\tconverter.integer += alignment - 1;\n\tconverter.integer &= bit_mask;\n\treturn converter.ptr;\n}\n\n#endif  //BT_SCALAR_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btSerializer.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2009 Erwin Coumans  http://bulletphysics.org\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose,\nincluding commercial applications, and to alter it and redistribute it freely,\nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_SERIALIZER_H\n#define BT_SERIALIZER_H\n\n#include \"btScalar.h\"  // has definitions like SIMD_FORCE_INLINE\n#include \"btHashMap.h\"\n\n#if !defined(__CELLOS_LV2__) && !defined(__MWERKS__)\n#include <memory.h>\n#endif\n#include <string.h>\n\nextern char sBulletDNAstr[];\nextern int sBulletDNAlen;\nextern char sBulletDNAstr64[];\nextern int sBulletDNAlen64;\n\nSIMD_FORCE_INLINE int btStrLen(const char* str)\n{\n\tif (!str)\n\t\treturn (0);\n\tint len = 0;\n\n\twhile (*str != 0)\n\t{\n\t\tstr++;\n\t\tlen++;\n\t}\n\n\treturn len;\n}\n\nclass btChunk\n{\npublic:\n\tint m_chunkCode;\n\tint m_length;\n\tvoid* m_oldPtr;\n\tint m_dna_nr;\n\tint m_number;\n};\n\nenum btSerializationFlags\n{\n\tBT_SERIALIZE_NO_BVH = 1,\n\tBT_SERIALIZE_NO_TRIANGLEINFOMAP = 2,\n\tBT_SERIALIZE_NO_DUPLICATE_ASSERT = 4,\n\tBT_SERIALIZE_CONTACT_MANIFOLDS = 8,\n};\n\nclass btSerializer\n{\npublic:\n\tvirtual ~btSerializer() {}\n\n\tvirtual const unsigned char* getBufferPointer() const = 0;\n\n\tvirtual int getCurrentBufferSize() const = 0;\n\n\tvirtual btChunk* allocate(size_t size, int numElements) = 0;\n\n\tvirtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode, void* oldPtr) = 0;\n\n\tvirtual void* findPointer(void* oldPtr) = 0;\n\n\tvirtual void* getUniquePointer(void* oldPtr) = 0;\n\n\tvirtual void startSerialization() = 0;\n\n\tvirtual void finishSerialization() = 0;\n\n\tvirtual const char* findNameForPointer(const void* ptr) const = 0;\n\n\tvirtual void registerNameForPointer(const void* ptr, const char* name) = 0;\n\n\tvirtual void serializeName(const char* ptr) = 0;\n\n\tvirtual int getSerializationFlags() const = 0;\n\n\tvirtual void setSerializationFlags(int flags) = 0;\n\n\tvirtual int getNumChunks() const = 0;\n\n\tvirtual const btChunk* getChunk(int chunkIndex) const = 0;\n};\n\n#define BT_HEADER_LENGTH 12\n#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined(__PPC__) || defined(__ppc__) || defined(__BIG_ENDIAN__)\n#define BT_MAKE_ID(a, b, c, d) ((int)(a) << 24 | (int)(b) << 16 | (c) << 8 | (d))\n#else\n#define BT_MAKE_ID(a, b, c, d) ((int)(d) << 24 | (int)(c) << 16 | (b) << 8 | (a))\n#endif\n\n#define BT_MULTIBODY_CODE BT_MAKE_ID('M', 'B', 'D', 'Y')\n#define BT_MB_LINKCOLLIDER_CODE BT_MAKE_ID('M', 'B', 'L', 'C')\n#define BT_SOFTBODY_CODE BT_MAKE_ID('S', 'B', 'D', 'Y')\n#define BT_COLLISIONOBJECT_CODE BT_MAKE_ID('C', 'O', 'B', 'J')\n#define BT_RIGIDBODY_CODE BT_MAKE_ID('R', 'B', 'D', 'Y')\n#define BT_CONSTRAINT_CODE BT_MAKE_ID('C', 'O', 'N', 'S')\n#define BT_BOXSHAPE_CODE BT_MAKE_ID('B', 'O', 'X', 'S')\n#define BT_QUANTIZED_BVH_CODE BT_MAKE_ID('Q', 'B', 'V', 'H')\n#define BT_TRIANLGE_INFO_MAP BT_MAKE_ID('T', 'M', 'A', 'P')\n#define BT_SHAPE_CODE BT_MAKE_ID('S', 'H', 'A', 'P')\n#define BT_ARRAY_CODE BT_MAKE_ID('A', 'R', 'A', 'Y')\n#define BT_SBMATERIAL_CODE BT_MAKE_ID('S', 'B', 'M', 'T')\n#define BT_SBNODE_CODE BT_MAKE_ID('S', 'B', 'N', 'D')\n#define BT_DYNAMICSWORLD_CODE BT_MAKE_ID('D', 'W', 'L', 'D')\n#define BT_CONTACTMANIFOLD_CODE BT_MAKE_ID('C', 'O', 'N', 'T')\n#define BT_DNA_CODE BT_MAKE_ID('D', 'N', 'A', '1')\n\nstruct btPointerUid\n{\n\tunion {\n\t\tvoid* m_ptr;\n\t\tint m_uniqueIds[2];\n\t};\n};\n\nstruct btBulletSerializedArrays\n{\n\tbtBulletSerializedArrays()\n\t{\n\t}\n\tbtAlignedObjectArray<struct btQuantizedBvhDoubleData*> m_bvhsDouble;\n\tbtAlignedObjectArray<struct btQuantizedBvhFloatData*> m_bvhsFloat;\n\tbtAlignedObjectArray<struct btCollisionShapeData*> m_colShapeData;\n\tbtAlignedObjectArray<struct btDynamicsWorldDoubleData*> m_dynamicWorldInfoDataDouble;\n\tbtAlignedObjectArray<struct btDynamicsWorldFloatData*> m_dynamicWorldInfoDataFloat;\n\tbtAlignedObjectArray<struct btRigidBodyDoubleData*> m_rigidBodyDataDouble;\n\tbtAlignedObjectArray<struct btRigidBodyFloatData*> m_rigidBodyDataFloat;\n\tbtAlignedObjectArray<struct btCollisionObjectDoubleData*> m_collisionObjectDataDouble;\n\tbtAlignedObjectArray<struct btCollisionObjectFloatData*> m_collisionObjectDataFloat;\n\tbtAlignedObjectArray<struct btTypedConstraintFloatData*> m_constraintDataFloat;\n\tbtAlignedObjectArray<struct btTypedConstraintDoubleData*> m_constraintDataDouble;\n\tbtAlignedObjectArray<struct btTypedConstraintData*> m_constraintData;  //for backwards compatibility\n\tbtAlignedObjectArray<struct btSoftBodyFloatData*> m_softBodyFloatData;\n\tbtAlignedObjectArray<struct btSoftBodyDoubleData*> m_softBodyDoubleData;\n};\n\n///The btDefaultSerializer is the main Bullet serialization class.\n///The constructor takes an optional argument for backwards compatibility, it is recommended to leave this empty/zero.\nclass btDefaultSerializer : public btSerializer\n{\nprotected:\n\tbtAlignedObjectArray<char*> mTypes;\n\tbtAlignedObjectArray<short*> mStructs;\n\tbtAlignedObjectArray<short> mTlens;\n\tbtHashMap<btHashInt, int> mStructReverse;\n\tbtHashMap<btHashString, int> mTypeLookup;\n\n\tbtHashMap<btHashPtr, void*> m_chunkP;\n\n\tbtHashMap<btHashPtr, const char*> m_nameMap;\n\n\tbtHashMap<btHashPtr, btPointerUid> m_uniquePointers;\n\tint m_uniqueIdGenerator;\n\n\tint m_totalSize;\n\tunsigned char* m_buffer;\n\tbool m_ownsBuffer;\n\tint m_currentSize;\n\tvoid* m_dna;\n\tint m_dnaLength;\n\n\tint m_serializationFlags;\n\n\tbtAlignedObjectArray<btChunk*> m_chunkPtrs;\n\nprotected:\n\tvirtual void* findPointer(void* oldPtr)\n\t{\n\t\tvoid** ptr = m_chunkP.find(oldPtr);\n\t\tif (ptr && *ptr)\n\t\t\treturn *ptr;\n\t\treturn 0;\n\t}\n\n\tvirtual void writeDNA()\n\t{\n\t\tbtChunk* dnaChunk = allocate(m_dnaLength, 1);\n\t\tmemcpy(dnaChunk->m_oldPtr, m_dna, m_dnaLength);\n\t\tfinalizeChunk(dnaChunk, \"DNA1\", BT_DNA_CODE, m_dna);\n\t}\n\n\tint getReverseType(const char* type) const\n\t{\n\t\tbtHashString key(type);\n\t\tconst int* valuePtr = mTypeLookup.find(key);\n\t\tif (valuePtr)\n\t\t\treturn *valuePtr;\n\n\t\treturn -1;\n\t}\n\n\tvoid initDNA(const char* bdnaOrg, int dnalen)\n\t{\n\t\t///was already initialized\n\t\tif (m_dna)\n\t\t\treturn;\n\n\t\tint littleEndian = 1;\n\t\tlittleEndian = ((char*)&littleEndian)[0];\n\n\t\tm_dna = btAlignedAlloc(dnalen, 16);\n\t\tmemcpy(m_dna, bdnaOrg, dnalen);\n\t\tm_dnaLength = dnalen;\n\n\t\tint* intPtr = 0;\n\t\tshort* shtPtr = 0;\n\t\tchar* cp = 0;\n\t\tint dataLen = 0;\n\t\tintPtr = (int*)m_dna;\n\n\t\t/*\n\t\t\t\tSDNA (4 bytes) (magic number)\n\t\t\t\tNAME (4 bytes)\n\t\t\t\t<nr> (4 bytes) amount of names (int)\n\t\t\t\t<string>\n\t\t\t\t<string>\n\t\t\t*/\n\n\t\tif (strncmp((const char*)m_dna, \"SDNA\", 4) == 0)\n\t\t{\n\t\t\t// skip ++ NAME\n\t\t\tintPtr++;\n\t\t\tintPtr++;\n\t\t}\n\n\t\t// Parse names\n\t\tif (!littleEndian)\n\t\t\t*intPtr = btSwapEndian(*intPtr);\n\n\t\tdataLen = *intPtr;\n\n\t\tintPtr++;\n\n\t\tcp = (char*)intPtr;\n\t\tint i;\n\t\tfor (i = 0; i < dataLen; i++)\n\t\t{\n\t\t\twhile (*cp) cp++;\n\t\t\tcp++;\n\t\t}\n\t\tcp = btAlignPointer(cp, 4);\n\n\t\t/*\n\t\t\t\tTYPE (4 bytes)\n\t\t\t\t<nr> amount of types (int)\n\t\t\t\t<string>\n\t\t\t\t<string>\n\t\t\t*/\n\n\t\tintPtr = (int*)cp;\n\t\tbtAssert(strncmp(cp, \"TYPE\", 4) == 0);\n\t\tintPtr++;\n\n\t\tif (!littleEndian)\n\t\t\t*intPtr = btSwapEndian(*intPtr);\n\n\t\tdataLen = *intPtr;\n\t\tintPtr++;\n\n\t\tcp = (char*)intPtr;\n\t\tfor (i = 0; i < dataLen; i++)\n\t\t{\n\t\t\tmTypes.push_back(cp);\n\t\t\twhile (*cp) cp++;\n\t\t\tcp++;\n\t\t}\n\n\t\tcp = btAlignPointer(cp, 4);\n\n\t\t/*\n\t\t\t\tTLEN (4 bytes)\n\t\t\t\t<len> (short) the lengths of types\n\t\t\t\t<len>\n\t\t\t*/\n\n\t\t// Parse type lens\n\t\tintPtr = (int*)cp;\n\t\tbtAssert(strncmp(cp, \"TLEN\", 4) == 0);\n\t\tintPtr++;\n\n\t\tdataLen = (int)mTypes.size();\n\n\t\tshtPtr = (short*)intPtr;\n\t\tfor (i = 0; i < dataLen; i++, shtPtr++)\n\t\t{\n\t\t\tif (!littleEndian)\n\t\t\t\tshtPtr[0] = btSwapEndian(shtPtr[0]);\n\t\t\tmTlens.push_back(shtPtr[0]);\n\t\t}\n\n\t\tif (dataLen & 1) shtPtr++;\n\n\t\t/*\n\t\t\t\tSTRC (4 bytes)\n\t\t\t\t<nr> amount of structs (int)\n\t\t\t\t<typenr>\n\t\t\t\t<nr_of_elems>\n\t\t\t\t<typenr>\n\t\t\t\t<namenr>\n\t\t\t\t<typenr>\n\t\t\t\t<namenr>\n\t\t\t*/\n\n\t\tintPtr = (int*)shtPtr;\n\t\tcp = (char*)intPtr;\n\t\tbtAssert(strncmp(cp, \"STRC\", 4) == 0);\n\t\tintPtr++;\n\n\t\tif (!littleEndian)\n\t\t\t*intPtr = btSwapEndian(*intPtr);\n\t\tdataLen = *intPtr;\n\t\tintPtr++;\n\n\t\tshtPtr = (short*)intPtr;\n\t\tfor (i = 0; i < dataLen; i++)\n\t\t{\n\t\t\tmStructs.push_back(shtPtr);\n\n\t\t\tif (!littleEndian)\n\t\t\t{\n\t\t\t\tshtPtr[0] = btSwapEndian(shtPtr[0]);\n\t\t\t\tshtPtr[1] = btSwapEndian(shtPtr[1]);\n\n\t\t\t\tint len = shtPtr[1];\n\t\t\t\tshtPtr += 2;\n\n\t\t\t\tfor (int a = 0; a < len; a++, shtPtr += 2)\n\t\t\t\t{\n\t\t\t\t\tshtPtr[0] = btSwapEndian(shtPtr[0]);\n\t\t\t\t\tshtPtr[1] = btSwapEndian(shtPtr[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tshtPtr += (2 * shtPtr[1]) + 2;\n\t\t\t}\n\t\t}\n\n\t\t// build reverse lookups\n\t\tfor (i = 0; i < (int)mStructs.size(); i++)\n\t\t{\n\t\t\tshort* strc = mStructs.at(i);\n\t\t\tmStructReverse.insert(strc[0], i);\n\t\t\tmTypeLookup.insert(btHashString(mTypes[strc[0]]), i);\n\t\t}\n\t}\n\npublic:\n\tbtHashMap<btHashPtr, void*> m_skipPointers;\n\n\tbtDefaultSerializer(int totalSize = 0, unsigned char* buffer = 0)\n\t\t: m_uniqueIdGenerator(0),\n\t\t  m_totalSize(totalSize),\n\t\t  m_currentSize(0),\n\t\t  m_dna(0),\n\t\t  m_dnaLength(0),\n\t\t  m_serializationFlags(0)\n\t{\n\t\tif (buffer == 0)\n\t\t{\n\t\t\tm_buffer = m_totalSize ? (unsigned char*)btAlignedAlloc(totalSize, 16) : 0;\n\t\t\tm_ownsBuffer = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tm_buffer = buffer;\n\t\t\tm_ownsBuffer = false;\n\t\t}\n\n\t\tconst bool VOID_IS_8 = ((sizeof(void*) == 8));\n\n#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t\tif (VOID_IS_8)\n\t\t{\n#if _WIN64\n\t\t\tinitDNA((const char*)sBulletDNAstr64, sBulletDNAlen64);\n#else\n\t\t\tbtAssert(0);\n#endif\n\t\t}\n\t\telse\n\t\t{\n#ifndef _WIN64\n\t\t\tinitDNA((const char*)sBulletDNAstr, sBulletDNAlen);\n#else\n\t\t\tbtAssert(0);\n#endif\n\t\t}\n\n#else   //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t\tif (VOID_IS_8)\n\t\t{\n\t\t\tinitDNA((const char*)sBulletDNAstr64, sBulletDNAlen64);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tinitDNA((const char*)sBulletDNAstr, sBulletDNAlen);\n\t\t}\n#endif  //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES\n\t}\n\n\tvirtual ~btDefaultSerializer()\n\t{\n\t\tif (m_buffer && m_ownsBuffer)\n\t\t\tbtAlignedFree(m_buffer);\n\t\tif (m_dna)\n\t\t\tbtAlignedFree(m_dna);\n\t}\n\n\tstatic int getMemoryDnaSizeInBytes()\n\t{\n\t\tconst bool VOID_IS_8 = ((sizeof(void*) == 8));\n\n\t\tif (VOID_IS_8)\n\t\t{\n\t\t\treturn sBulletDNAlen64;\n\t\t}\n\t\treturn sBulletDNAlen;\n\t}\n\tstatic const char* getMemoryDna()\n\t{\n\t\tconst bool VOID_IS_8 = ((sizeof(void*) == 8));\n\t\tif (VOID_IS_8)\n\t\t{\n\t\t\treturn (const char*)sBulletDNAstr64;\n\t\t}\n\t\treturn (const char*)sBulletDNAstr;\n\t}\n\n\tvoid insertHeader()\n\t{\n\t\twriteHeader(m_buffer);\n\t\tm_currentSize += BT_HEADER_LENGTH;\n\t}\n\n\tvoid writeHeader(unsigned char* buffer) const\n\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\tmemcpy(buffer, \"BULLETd\", 7);\n#else\n\t\tmemcpy(buffer, \"BULLETf\", 7);\n#endif  //BT_USE_DOUBLE_PRECISION\n\n\t\tint littleEndian = 1;\n\t\tlittleEndian = ((char*)&littleEndian)[0];\n\n\t\tif (sizeof(void*) == 8)\n\t\t{\n\t\t\tbuffer[7] = '-';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbuffer[7] = '_';\n\t\t}\n\n\t\tif (littleEndian)\n\t\t{\n\t\t\tbuffer[8] = 'v';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tbuffer[8] = 'V';\n\t\t}\n\n\t\tbuffer[9] = '3';\n\t\tbuffer[10] = '1';\n\t\tbuffer[11] = '7';\n\t}\n\n\tvirtual void startSerialization()\n\t{\n\t\tm_uniqueIdGenerator = 1;\n\t\tif (m_totalSize)\n\t\t{\n\t\t\tunsigned char* buffer = internalAlloc(BT_HEADER_LENGTH);\n\t\t\twriteHeader(buffer);\n\t\t}\n\t}\n\n\tvirtual void finishSerialization()\n\t{\n\t\twriteDNA();\n\n\t\t//if we didn't pre-allocate a buffer, we need to create a contiguous buffer now\n\t\tint mysize = 0;\n\t\tif (!m_totalSize)\n\t\t{\n\t\t\tif (m_buffer)\n\t\t\t\tbtAlignedFree(m_buffer);\n\n\t\t\tm_currentSize += BT_HEADER_LENGTH;\n\t\t\tm_buffer = (unsigned char*)btAlignedAlloc(m_currentSize, 16);\n\n\t\t\tunsigned char* currentPtr = m_buffer;\n\t\t\twriteHeader(m_buffer);\n\t\t\tcurrentPtr += BT_HEADER_LENGTH;\n\t\t\tmysize += BT_HEADER_LENGTH;\n\t\t\tfor (int i = 0; i < m_chunkPtrs.size(); i++)\n\t\t\t{\n\t\t\t\tint curLength = sizeof(btChunk) + m_chunkPtrs[i]->m_length;\n\t\t\t\tmemcpy(currentPtr, m_chunkPtrs[i], curLength);\n\t\t\t\tbtAlignedFree(m_chunkPtrs[i]);\n\t\t\t\tcurrentPtr += curLength;\n\t\t\t\tmysize += curLength;\n\t\t\t}\n\t\t}\n\n\t\tmTypes.clear();\n\t\tmStructs.clear();\n\t\tmTlens.clear();\n\t\tmStructReverse.clear();\n\t\tmTypeLookup.clear();\n\t\tm_skipPointers.clear();\n\t\tm_chunkP.clear();\n\t\tm_nameMap.clear();\n\t\tm_uniquePointers.clear();\n\t\tm_chunkPtrs.clear();\n\t}\n\n\tvirtual void* getUniquePointer(void* oldPtr)\n\t{\n\t\tbtAssert(m_uniqueIdGenerator >= 0);\n\t\tif (!oldPtr)\n\t\t\treturn 0;\n\n\t\tbtPointerUid* uptr = (btPointerUid*)m_uniquePointers.find(oldPtr);\n\t\tif (uptr)\n\t\t{\n\t\t\treturn uptr->m_ptr;\n\t\t}\n\n\t\tvoid** ptr2 = m_skipPointers[oldPtr];\n\t\tif (ptr2)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\n\t\tm_uniqueIdGenerator++;\n\n\t\tbtPointerUid uid;\n\t\tuid.m_uniqueIds[0] = m_uniqueIdGenerator;\n\t\tuid.m_uniqueIds[1] = m_uniqueIdGenerator;\n\t\tm_uniquePointers.insert(oldPtr, uid);\n\t\treturn uid.m_ptr;\n\t}\n\n\tvirtual const unsigned char* getBufferPointer() const\n\t{\n\t\treturn m_buffer;\n\t}\n\n\tvirtual int getCurrentBufferSize() const\n\t{\n\t\treturn m_currentSize;\n\t}\n\n\tvirtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode, void* oldPtr)\n\t{\n\t\tif (!(m_serializationFlags & BT_SERIALIZE_NO_DUPLICATE_ASSERT))\n\t\t{\n\t\t\tbtAssert(!findPointer(oldPtr));\n\t\t}\n\n\t\tchunk->m_dna_nr = getReverseType(structType);\n\n\t\tchunk->m_chunkCode = chunkCode;\n\n\t\tvoid* uniquePtr = getUniquePointer(oldPtr);\n\n\t\tm_chunkP.insert(oldPtr, uniquePtr);  //chunk->m_oldPtr);\n\t\tchunk->m_oldPtr = uniquePtr;         //oldPtr;\n\t}\n\n\tvirtual unsigned char* internalAlloc(size_t size)\n\t{\n\t\tunsigned char* ptr = 0;\n\n\t\tif (m_totalSize)\n\t\t{\n\t\t\tptr = m_buffer + m_currentSize;\n\t\t\tm_currentSize += int(size);\n\t\t\tbtAssert(m_currentSize < m_totalSize);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tptr = (unsigned char*)btAlignedAlloc(size, 16);\n\t\t\tm_currentSize += int(size);\n\t\t}\n\t\treturn ptr;\n\t}\n\n\tvirtual btChunk* allocate(size_t size, int numElements)\n\t{\n\t\tunsigned char* ptr = internalAlloc(int(size) * numElements + sizeof(btChunk));\n\n\t\tunsigned char* data = ptr + sizeof(btChunk);\n\n\t\tbtChunk* chunk = (btChunk*)ptr;\n\t\tchunk->m_chunkCode = 0;\n\t\tchunk->m_oldPtr = data;\n\t\tchunk->m_length = int(size) * numElements;\n\t\tchunk->m_number = numElements;\n\n\t\tm_chunkPtrs.push_back(chunk);\n\n\t\treturn chunk;\n\t}\n\n\tvirtual const char* findNameForPointer(const void* ptr) const\n\t{\n\t\tconst char* const* namePtr = m_nameMap.find(ptr);\n\t\tif (namePtr && *namePtr)\n\t\t\treturn *namePtr;\n\t\treturn 0;\n\t}\n\n\tvirtual void registerNameForPointer(const void* ptr, const char* name)\n\t{\n\t\tm_nameMap.insert(ptr, name);\n\t}\n\n\tvirtual void serializeName(const char* name)\n\t{\n\t\tif (name)\n\t\t{\n\t\t\t//don't serialize name twice\n\t\t\tif (findPointer((void*)name))\n\t\t\t\treturn;\n\n\t\t\tint len = btStrLen(name);\n\t\t\tif (len)\n\t\t\t{\n\t\t\t\tint newLen = len + 1;\n\t\t\t\tint padding = ((newLen + 3) & ~3) - newLen;\n\t\t\t\tnewLen += padding;\n\n\t\t\t\t//serialize name string now\n\t\t\t\tbtChunk* chunk = allocate(sizeof(char), newLen);\n\t\t\t\tchar* destinationName = (char*)chunk->m_oldPtr;\n\t\t\t\tfor (int i = 0; i < len; i++)\n\t\t\t\t{\n\t\t\t\t\tdestinationName[i] = name[i];\n\t\t\t\t}\n\t\t\t\tdestinationName[len] = 0;\n\t\t\t\tfinalizeChunk(chunk, \"char\", BT_ARRAY_CODE, (void*)name);\n\t\t\t}\n\t\t}\n\t}\n\n\tvirtual int getSerializationFlags() const\n\t{\n\t\treturn m_serializationFlags;\n\t}\n\n\tvirtual void setSerializationFlags(int flags)\n\t{\n\t\tm_serializationFlags = flags;\n\t}\n\tint getNumChunks() const\n\t{\n\t\treturn m_chunkPtrs.size();\n\t}\n\n\tconst btChunk* getChunk(int chunkIndex) const\n\t{\n\t\treturn m_chunkPtrs[chunkIndex];\n\t}\n};\n\n///In general it is best to use btDefaultSerializer,\n///in particular when writing the data to disk or sending it over the network.\n///The btInMemorySerializer is experimental and only suitable in a few cases.\n///The btInMemorySerializer takes a shortcut and can be useful to create a deep-copy\n///of objects. There will be a demo on how to use the btInMemorySerializer.\n#ifdef ENABLE_INMEMORY_SERIALIZER\n\nstruct btInMemorySerializer : public btDefaultSerializer\n{\n\tbtHashMap<btHashPtr, btChunk*> m_uid2ChunkPtr;\n\tbtHashMap<btHashPtr, void*> m_orgPtr2UniqueDataPtr;\n\tbtHashMap<btHashString, const void*> m_names2Ptr;\n\n\tbtBulletSerializedArrays m_arrays;\n\n\tbtInMemorySerializer(int totalSize = 0, unsigned char* buffer = 0)\n\t\t: btDefaultSerializer(totalSize, buffer)\n\t{\n\t}\n\n\tvirtual void startSerialization()\n\t{\n\t\tm_uid2ChunkPtr.clear();\n\t\t//todo: m_arrays.clear();\n\t\tbtDefaultSerializer::startSerialization();\n\t}\n\n\tbtChunk* findChunkFromUniquePointer(void* uniquePointer)\n\t{\n\t\tbtChunk** chkPtr = m_uid2ChunkPtr[uniquePointer];\n\t\tif (chkPtr)\n\t\t{\n\t\t\treturn *chkPtr;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tvirtual void registerNameForPointer(const void* ptr, const char* name)\n\t{\n\t\tbtDefaultSerializer::registerNameForPointer(ptr, name);\n\t\tm_names2Ptr.insert(name, ptr);\n\t}\n\n\tvirtual void finishSerialization()\n\t{\n\t}\n\n\tvirtual void* getUniquePointer(void* oldPtr)\n\t{\n\t\tif (oldPtr == 0)\n\t\t\treturn 0;\n\n\t\t// void* uniquePtr = getUniquePointer(oldPtr);\n\t\tbtChunk* chunk = findChunkFromUniquePointer(oldPtr);\n\t\tif (chunk)\n\t\t{\n\t\t\treturn chunk->m_oldPtr;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst char* n = (const char*)oldPtr;\n\t\t\tconst void** ptr = m_names2Ptr[n];\n\t\t\tif (ptr)\n\t\t\t{\n\t\t\t\treturn oldPtr;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvoid** ptr2 = m_skipPointers[oldPtr];\n\t\t\t\tif (ptr2)\n\t\t\t\t{\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t//If this assert hit, serialization happened in the wrong order\n\t\t\t\t\t// 'getUniquePointer'\n\t\t\t\t\tbtAssert(0);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\t\treturn oldPtr;\n\t}\n\n\tvirtual void finalizeChunk(btChunk* chunk, const char* structType, int chunkCode, void* oldPtr)\n\t{\n\t\tif (!(m_serializationFlags & BT_SERIALIZE_NO_DUPLICATE_ASSERT))\n\t\t{\n\t\t\tbtAssert(!findPointer(oldPtr));\n\t\t}\n\n\t\tchunk->m_dna_nr = getReverseType(structType);\n\t\tchunk->m_chunkCode = chunkCode;\n\t\t//void* uniquePtr = getUniquePointer(oldPtr);\n\t\tm_chunkP.insert(oldPtr, oldPtr);  //chunk->m_oldPtr);\n\t\t// chunk->m_oldPtr = uniquePtr;//oldPtr;\n\n\t\tvoid* uid = findPointer(oldPtr);\n\t\tm_uid2ChunkPtr.insert(uid, chunk);\n\n\t\tswitch (chunk->m_chunkCode)\n\t\t{\n\t\t\tcase BT_SOFTBODY_CODE:\n\t\t\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_softBodyDoubleData.push_back((btSoftBodyDoubleData*)chunk->m_oldPtr);\n#else\n\t\t\t\tm_arrays.m_softBodyFloatData.push_back((btSoftBodyFloatData*)chunk->m_oldPtr);\n#endif\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase BT_COLLISIONOBJECT_CODE:\n\t\t\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_collisionObjectDataDouble.push_back((btCollisionObjectDoubleData*)chunk->m_oldPtr);\n#else   //BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_collisionObjectDataFloat.push_back((btCollisionObjectFloatData*)chunk->m_oldPtr);\n#endif  //BT_USE_DOUBLE_PRECISION\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase BT_RIGIDBODY_CODE:\n\t\t\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_rigidBodyDataDouble.push_back((btRigidBodyDoubleData*)chunk->m_oldPtr);\n#else\n\t\t\t\tm_arrays.m_rigidBodyDataFloat.push_back((btRigidBodyFloatData*)chunk->m_oldPtr);\n#endif  //BT_USE_DOUBLE_PRECISION\n\t\t\t\tbreak;\n\t\t\t};\n\t\t\tcase BT_CONSTRAINT_CODE:\n\t\t\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_constraintDataDouble.push_back((btTypedConstraintDoubleData*)chunk->m_oldPtr);\n#else\n\t\t\t\tm_arrays.m_constraintDataFloat.push_back((btTypedConstraintFloatData*)chunk->m_oldPtr);\n#endif\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase BT_QUANTIZED_BVH_CODE:\n\t\t\t{\n#ifdef BT_USE_DOUBLE_PRECISION\n\t\t\t\tm_arrays.m_bvhsDouble.push_back((btQuantizedBvhDoubleData*)chunk->m_oldPtr);\n#else\n\t\t\t\tm_arrays.m_bvhsFloat.push_back((btQuantizedBvhFloatData*)chunk->m_oldPtr);\n#endif\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase BT_SHAPE_CODE:\n\t\t\t{\n\t\t\t\tbtCollisionShapeData* shapeData = (btCollisionShapeData*)chunk->m_oldPtr;\n\t\t\t\tm_arrays.m_colShapeData.push_back(shapeData);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase BT_TRIANLGE_INFO_MAP:\n\t\t\tcase BT_ARRAY_CODE:\n\t\t\tcase BT_SBMATERIAL_CODE:\n\t\t\tcase BT_SBNODE_CODE:\n\t\t\tcase BT_DYNAMICSWORLD_CODE:\n\t\t\tcase BT_DNA_CODE:\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t{\n\t\t\t}\n\t\t};\n\t}\n\n\tint getNumChunks() const\n\t{\n\t\treturn m_uid2ChunkPtr.size();\n\t}\n\n\tconst btChunk* getChunk(int chunkIndex) const\n\t{\n\t\treturn *m_uid2ChunkPtr.getAtIndex(chunkIndex);\n\t}\n};\n#endif  //ENABLE_INMEMORY_SERIALIZER\n\n#endif  //BT_SERIALIZER_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btSpatialAlgebra.h",
    "content": "/*\nCopyright (c) 2003-2015 Erwin Coumans, Jakub Stepien\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n///These spatial algebra classes are used for btMultiBody,\n///see BulletDynamics/Featherstone\n\n#ifndef BT_SPATIAL_ALGEBRA_H\n#define BT_SPATIAL_ALGEBRA_H\n\n#include \"btMatrix3x3.h\"\n\nstruct btSpatialForceVector\n{\n\tbtVector3 m_topVec, m_bottomVec;\n\t//\n\tbtSpatialForceVector() { setZero(); }\n\tbtSpatialForceVector(const btVector3 &angular, const btVector3 &linear) : m_topVec(linear), m_bottomVec(angular) {}\n\tbtSpatialForceVector(const btScalar &ax, const btScalar &ay, const btScalar &az, const btScalar &lx, const btScalar &ly, const btScalar &lz)\n\t{\n\t\tsetValue(ax, ay, az, lx, ly, lz);\n\t}\n\t//\n\tvoid setVector(const btVector3 &angular, const btVector3 &linear)\n\t{\n\t\tm_topVec = linear;\n\t\tm_bottomVec = angular;\n\t}\n\tvoid setValue(const btScalar &ax, const btScalar &ay, const btScalar &az, const btScalar &lx, const btScalar &ly, const btScalar &lz)\n\t{\n\t\tm_bottomVec.setValue(ax, ay, az);\n\t\tm_topVec.setValue(lx, ly, lz);\n\t}\n\t//\n\tvoid addVector(const btVector3 &angular, const btVector3 &linear)\n\t{\n\t\tm_topVec += linear;\n\t\tm_bottomVec += angular;\n\t}\n\tvoid addValue(const btScalar &ax, const btScalar &ay, const btScalar &az, const btScalar &lx, const btScalar &ly, const btScalar &lz)\n\t{\n\t\tm_bottomVec[0] += ax;\n\t\tm_bottomVec[1] += ay;\n\t\tm_bottomVec[2] += az;\n\t\tm_topVec[0] += lx;\n\t\tm_topVec[1] += ly;\n\t\tm_topVec[2] += lz;\n\t}\n\t//\n\tconst btVector3 &getLinear() const { return m_topVec; }\n\tconst btVector3 &getAngular() const { return m_bottomVec; }\n\t//\n\tvoid setLinear(const btVector3 &linear) { m_topVec = linear; }\n\tvoid setAngular(const btVector3 &angular) { m_bottomVec = angular; }\n\t//\n\tvoid addAngular(const btVector3 &angular) { m_bottomVec += angular; }\n\tvoid addLinear(const btVector3 &linear) { m_topVec += linear; }\n\t//\n\tvoid setZero()\n\t{\n\t\tm_topVec.setZero();\n\t\tm_bottomVec.setZero();\n\t}\n\t//\n\tbtSpatialForceVector &operator+=(const btSpatialForceVector &vec)\n\t{\n\t\tm_topVec += vec.m_topVec;\n\t\tm_bottomVec += vec.m_bottomVec;\n\t\treturn *this;\n\t}\n\tbtSpatialForceVector &operator-=(const btSpatialForceVector &vec)\n\t{\n\t\tm_topVec -= vec.m_topVec;\n\t\tm_bottomVec -= vec.m_bottomVec;\n\t\treturn *this;\n\t}\n\tbtSpatialForceVector operator-(const btSpatialForceVector &vec) const { return btSpatialForceVector(m_bottomVec - vec.m_bottomVec, m_topVec - vec.m_topVec); }\n\tbtSpatialForceVector operator+(const btSpatialForceVector &vec) const { return btSpatialForceVector(m_bottomVec + vec.m_bottomVec, m_topVec + vec.m_topVec); }\n\tbtSpatialForceVector operator-() const { return btSpatialForceVector(-m_bottomVec, -m_topVec); }\n\tbtSpatialForceVector operator*(const btScalar &s) const { return btSpatialForceVector(s * m_bottomVec, s * m_topVec); }\n\t//btSpatialForceVector & operator = (const btSpatialForceVector &vec) { m_topVec = vec.m_topVec; m_bottomVec = vec.m_bottomVec; return *this; }\n};\n\nstruct btSpatialMotionVector\n{\n\tbtVector3 m_topVec, m_bottomVec;\n\t//\n\tbtSpatialMotionVector() { setZero(); }\n\tbtSpatialMotionVector(const btVector3 &angular, const btVector3 &linear) : m_topVec(angular), m_bottomVec(linear) {}\n\t//\n\tvoid setVector(const btVector3 &angular, const btVector3 &linear)\n\t{\n\t\tm_topVec = angular;\n\t\tm_bottomVec = linear;\n\t}\n\tvoid setValue(const btScalar &ax, const btScalar &ay, const btScalar &az, const btScalar &lx, const btScalar &ly, const btScalar &lz)\n\t{\n\t\tm_topVec.setValue(ax, ay, az);\n\t\tm_bottomVec.setValue(lx, ly, lz);\n\t}\n\t//\n\tvoid addVector(const btVector3 &angular, const btVector3 &linear)\n\t{\n\t\tm_topVec += linear;\n\t\tm_bottomVec += angular;\n\t}\n\tvoid addValue(const btScalar &ax, const btScalar &ay, const btScalar &az, const btScalar &lx, const btScalar &ly, const btScalar &lz)\n\t{\n\t\tm_topVec[0] += ax;\n\t\tm_topVec[1] += ay;\n\t\tm_topVec[2] += az;\n\t\tm_bottomVec[0] += lx;\n\t\tm_bottomVec[1] += ly;\n\t\tm_bottomVec[2] += lz;\n\t}\n\t//\n\tconst btVector3 &getAngular() const { return m_topVec; }\n\tconst btVector3 &getLinear() const { return m_bottomVec; }\n\t//\n\tvoid setAngular(const btVector3 &angular) { m_topVec = angular; }\n\tvoid setLinear(const btVector3 &linear) { m_bottomVec = linear; }\n\t//\n\tvoid addAngular(const btVector3 &angular) { m_topVec += angular; }\n\tvoid addLinear(const btVector3 &linear) { m_bottomVec += linear; }\n\t//\n\tvoid setZero()\n\t{\n\t\tm_topVec.setZero();\n\t\tm_bottomVec.setZero();\n\t}\n\t//\n\tbtScalar dot(const btSpatialForceVector &b) const\n\t{\n\t\treturn m_bottomVec.dot(b.m_topVec) + m_topVec.dot(b.m_bottomVec);\n\t}\n\t//\n\ttemplate <typename SpatialVectorType>\n\tvoid cross(const SpatialVectorType &b, SpatialVectorType &out) const\n\t{\n\t\tout.m_topVec = m_topVec.cross(b.m_topVec);\n\t\tout.m_bottomVec = m_bottomVec.cross(b.m_topVec) + m_topVec.cross(b.m_bottomVec);\n\t}\n\ttemplate <typename SpatialVectorType>\n\tSpatialVectorType cross(const SpatialVectorType &b) const\n\t{\n\t\tSpatialVectorType out;\n\t\tout.m_topVec = m_topVec.cross(b.m_topVec);\n\t\tout.m_bottomVec = m_bottomVec.cross(b.m_topVec) + m_topVec.cross(b.m_bottomVec);\n\t\treturn out;\n\t}\n\t//\n\tbtSpatialMotionVector &operator+=(const btSpatialMotionVector &vec)\n\t{\n\t\tm_topVec += vec.m_topVec;\n\t\tm_bottomVec += vec.m_bottomVec;\n\t\treturn *this;\n\t}\n\tbtSpatialMotionVector &operator-=(const btSpatialMotionVector &vec)\n\t{\n\t\tm_topVec -= vec.m_topVec;\n\t\tm_bottomVec -= vec.m_bottomVec;\n\t\treturn *this;\n\t}\n\tbtSpatialMotionVector &operator*=(const btScalar &s)\n\t{\n\t\tm_topVec *= s;\n\t\tm_bottomVec *= s;\n\t\treturn *this;\n\t}\n\tbtSpatialMotionVector operator-(const btSpatialMotionVector &vec) const { return btSpatialMotionVector(m_topVec - vec.m_topVec, m_bottomVec - vec.m_bottomVec); }\n\tbtSpatialMotionVector operator+(const btSpatialMotionVector &vec) const { return btSpatialMotionVector(m_topVec + vec.m_topVec, m_bottomVec + vec.m_bottomVec); }\n\tbtSpatialMotionVector operator-() const { return btSpatialMotionVector(-m_topVec, -m_bottomVec); }\n\tbtSpatialMotionVector operator*(const btScalar &s) const { return btSpatialMotionVector(s * m_topVec, s * m_bottomVec); }\n};\n\nstruct btSymmetricSpatialDyad\n{\n\tbtMatrix3x3 m_topLeftMat, m_topRightMat, m_bottomLeftMat;\n\t//\n\tbtSymmetricSpatialDyad() { setIdentity(); }\n\tbtSymmetricSpatialDyad(const btMatrix3x3 &topLeftMat, const btMatrix3x3 &topRightMat, const btMatrix3x3 &bottomLeftMat) { setMatrix(topLeftMat, topRightMat, bottomLeftMat); }\n\t//\n\tvoid setMatrix(const btMatrix3x3 &topLeftMat, const btMatrix3x3 &topRightMat, const btMatrix3x3 &bottomLeftMat)\n\t{\n\t\tm_topLeftMat = topLeftMat;\n\t\tm_topRightMat = topRightMat;\n\t\tm_bottomLeftMat = bottomLeftMat;\n\t}\n\t//\n\tvoid addMatrix(const btMatrix3x3 &topLeftMat, const btMatrix3x3 &topRightMat, const btMatrix3x3 &bottomLeftMat)\n\t{\n\t\tm_topLeftMat += topLeftMat;\n\t\tm_topRightMat += topRightMat;\n\t\tm_bottomLeftMat += bottomLeftMat;\n\t}\n\t//\n\tvoid setIdentity()\n\t{\n\t\tm_topLeftMat.setIdentity();\n\t\tm_topRightMat.setIdentity();\n\t\tm_bottomLeftMat.setIdentity();\n\t}\n\t//\n\tbtSymmetricSpatialDyad &operator-=(const btSymmetricSpatialDyad &mat)\n\t{\n\t\tm_topLeftMat -= mat.m_topLeftMat;\n\t\tm_topRightMat -= mat.m_topRightMat;\n\t\tm_bottomLeftMat -= mat.m_bottomLeftMat;\n\t\treturn *this;\n\t}\n\t//\n\tbtSpatialForceVector operator*(const btSpatialMotionVector &vec)\n\t{\n\t\treturn btSpatialForceVector(m_bottomLeftMat * vec.m_topVec + m_topLeftMat.transpose() * vec.m_bottomVec, m_topLeftMat * vec.m_topVec + m_topRightMat * vec.m_bottomVec);\n\t}\n};\n\nstruct btSpatialTransformationMatrix\n{\n\tbtMatrix3x3 m_rotMat;  //btMatrix3x3 m_trnCrossMat;\n\tbtVector3 m_trnVec;\n\t//\n\tenum eOutputOperation\n\t{\n\t\tNone = 0,\n\t\tAdd = 1,\n\t\tSubtract = 2\n\t};\n\t//\n\ttemplate <typename SpatialVectorType>\n\tvoid transform(const SpatialVectorType &inVec,\n\t\t\t\t   SpatialVectorType &outVec,\n\t\t\t\t   eOutputOperation outOp = None)\n\t{\n\t\tif (outOp == None)\n\t\t{\n\t\t\toutVec.m_topVec = m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec = -m_trnVec.cross(outVec.m_topVec) + m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Add)\n\t\t{\n\t\t\toutVec.m_topVec += m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec += -m_trnVec.cross(outVec.m_topVec) + m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Subtract)\n\t\t{\n\t\t\toutVec.m_topVec -= m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec -= -m_trnVec.cross(outVec.m_topVec) + m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t}\n\n\ttemplate <typename SpatialVectorType>\n\tvoid transformRotationOnly(const SpatialVectorType &inVec,\n\t\t\t\t\t\t\t   SpatialVectorType &outVec,\n\t\t\t\t\t\t\t   eOutputOperation outOp = None)\n\t{\n\t\tif (outOp == None)\n\t\t{\n\t\t\toutVec.m_topVec = m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec = m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Add)\n\t\t{\n\t\t\toutVec.m_topVec += m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec += m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Subtract)\n\t\t{\n\t\t\toutVec.m_topVec -= m_rotMat * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec -= m_rotMat * inVec.m_bottomVec;\n\t\t}\n\t}\n\n\ttemplate <typename SpatialVectorType>\n\tvoid transformInverse(const SpatialVectorType &inVec,\n\t\t\t\t\t\t  SpatialVectorType &outVec,\n\t\t\t\t\t\t  eOutputOperation outOp = None)\n\t{\n\t\tif (outOp == None)\n\t\t{\n\t\t\toutVec.m_topVec = m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec = m_rotMat.transpose() * (inVec.m_bottomVec + m_trnVec.cross(inVec.m_topVec));\n\t\t}\n\t\telse if (outOp == Add)\n\t\t{\n\t\t\toutVec.m_topVec += m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec += m_rotMat.transpose() * (inVec.m_bottomVec + m_trnVec.cross(inVec.m_topVec));\n\t\t}\n\t\telse if (outOp == Subtract)\n\t\t{\n\t\t\toutVec.m_topVec -= m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec -= m_rotMat.transpose() * (inVec.m_bottomVec + m_trnVec.cross(inVec.m_topVec));\n\t\t}\n\t}\n\n\ttemplate <typename SpatialVectorType>\n\tvoid transformInverseRotationOnly(const SpatialVectorType &inVec,\n\t\t\t\t\t\t\t\t\t  SpatialVectorType &outVec,\n\t\t\t\t\t\t\t\t\t  eOutputOperation outOp = None)\n\t{\n\t\tif (outOp == None)\n\t\t{\n\t\t\toutVec.m_topVec = m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec = m_rotMat.transpose() * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Add)\n\t\t{\n\t\t\toutVec.m_topVec += m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec += m_rotMat.transpose() * inVec.m_bottomVec;\n\t\t}\n\t\telse if (outOp == Subtract)\n\t\t{\n\t\t\toutVec.m_topVec -= m_rotMat.transpose() * inVec.m_topVec;\n\t\t\toutVec.m_bottomVec -= m_rotMat.transpose() * inVec.m_bottomVec;\n\t\t}\n\t}\n\n\tvoid transformInverse(const btSymmetricSpatialDyad &inMat,\n\t\t\t\t\t\t  btSymmetricSpatialDyad &outMat,\n\t\t\t\t\t\t  eOutputOperation outOp = None)\n\t{\n\t\tconst btMatrix3x3 r_cross(0, -m_trnVec[2], m_trnVec[1],\n\t\t\t\t\t\t\t\t  m_trnVec[2], 0, -m_trnVec[0],\n\t\t\t\t\t\t\t\t  -m_trnVec[1], m_trnVec[0], 0);\n\n\t\tif (outOp == None)\n\t\t{\n\t\t\toutMat.m_topLeftMat = m_rotMat.transpose() * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) * m_rotMat;\n\t\t\toutMat.m_topRightMat = m_rotMat.transpose() * inMat.m_topRightMat * m_rotMat;\n\t\t\toutMat.m_bottomLeftMat = m_rotMat.transpose() * (r_cross * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) + inMat.m_bottomLeftMat - inMat.m_topLeftMat.transpose() * r_cross) * m_rotMat;\n\t\t}\n\t\telse if (outOp == Add)\n\t\t{\n\t\t\toutMat.m_topLeftMat += m_rotMat.transpose() * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) * m_rotMat;\n\t\t\toutMat.m_topRightMat += m_rotMat.transpose() * inMat.m_topRightMat * m_rotMat;\n\t\t\toutMat.m_bottomLeftMat += m_rotMat.transpose() * (r_cross * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) + inMat.m_bottomLeftMat - inMat.m_topLeftMat.transpose() * r_cross) * m_rotMat;\n\t\t}\n\t\telse if (outOp == Subtract)\n\t\t{\n\t\t\toutMat.m_topLeftMat -= m_rotMat.transpose() * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) * m_rotMat;\n\t\t\toutMat.m_topRightMat -= m_rotMat.transpose() * inMat.m_topRightMat * m_rotMat;\n\t\t\toutMat.m_bottomLeftMat -= m_rotMat.transpose() * (r_cross * (inMat.m_topLeftMat - inMat.m_topRightMat * r_cross) + inMat.m_bottomLeftMat - inMat.m_topLeftMat.transpose() * r_cross) * m_rotMat;\n\t\t}\n\t}\n\n\ttemplate <typename SpatialVectorType>\n\tSpatialVectorType operator*(const SpatialVectorType &vec)\n\t{\n\t\tSpatialVectorType out;\n\t\ttransform(vec, out);\n\t\treturn out;\n\t}\n};\n\ntemplate <typename SpatialVectorType>\nvoid symmetricSpatialOuterProduct(const SpatialVectorType &a, const SpatialVectorType &b, btSymmetricSpatialDyad &out)\n{\n\t//output op maybe?\n\n\tout.m_topLeftMat = outerProduct(a.m_topVec, b.m_bottomVec);\n\tout.m_topRightMat = outerProduct(a.m_topVec, b.m_topVec);\n\tout.m_topLeftMat = outerProduct(a.m_bottomVec, b.m_bottomVec);\n\t//maybe simple a*spatTranspose(a) would be nicer?\n}\n\ntemplate <typename SpatialVectorType>\nbtSymmetricSpatialDyad symmetricSpatialOuterProduct(const SpatialVectorType &a, const SpatialVectorType &b)\n{\n\tbtSymmetricSpatialDyad out;\n\n\tout.m_topLeftMat = outerProduct(a.m_topVec, b.m_bottomVec);\n\tout.m_topRightMat = outerProduct(a.m_topVec, b.m_topVec);\n\tout.m_bottomLeftMat = outerProduct(a.m_bottomVec, b.m_bottomVec);\n\n\treturn out;\n\t//maybe simple a*spatTranspose(a) would be nicer?\n}\n\n#endif  //BT_SPATIAL_ALGEBRA_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btStackAlloc.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n/*\nStackAlloc extracted from GJK-EPA collision solver by Nathanael Presson\nNov.2006\n*/\n\n#ifndef BT_STACK_ALLOC\n#define BT_STACK_ALLOC\n\n#include \"btScalar.h\"  //for btAssert\n#include \"btAlignedAllocator.h\"\n\n///The btBlock class is an internal structure for the btStackAlloc memory allocator.\nstruct btBlock\n{\n\tbtBlock* previous;\n\tunsigned char* address;\n};\n\n///The StackAlloc class provides some fast stack-based memory allocator (LIFO last-in first-out)\nclass btStackAlloc\n{\npublic:\n\tbtStackAlloc(unsigned int size)\n\t{\n\t\tctor();\n\t\tcreate(size);\n\t}\n\t~btStackAlloc() { destroy(); }\n\n\tinline void create(unsigned int size)\n\t{\n\t\tdestroy();\n\t\tdata = (unsigned char*)btAlignedAlloc(size, 16);\n\t\ttotalsize = size;\n\t}\n\tinline void destroy()\n\t{\n\t\tbtAssert(usedsize == 0);\n\t\t//Raise(L\"StackAlloc is still in use\");\n\n\t\tif (usedsize == 0)\n\t\t{\n\t\t\tif (!ischild && data)\n\t\t\t\tbtAlignedFree(data);\n\n\t\t\tdata = 0;\n\t\t\tusedsize = 0;\n\t\t}\n\t}\n\n\tint getAvailableMemory() const\n\t{\n\t\treturn static_cast<int>(totalsize - usedsize);\n\t}\n\n\tunsigned char* allocate(unsigned int size)\n\t{\n\t\tconst unsigned int nus(usedsize + size);\n\t\tif (nus < totalsize)\n\t\t{\n\t\t\tusedsize = nus;\n\t\t\treturn (data + (usedsize - size));\n\t\t}\n\t\tbtAssert(0);\n\t\t//&& (L\"Not enough memory\"));\n\n\t\treturn (0);\n\t}\n\tSIMD_FORCE_INLINE btBlock* beginBlock()\n\t{\n\t\tbtBlock* pb = (btBlock*)allocate(sizeof(btBlock));\n\t\tpb->previous = current;\n\t\tpb->address = data + usedsize;\n\t\tcurrent = pb;\n\t\treturn (pb);\n\t}\n\tSIMD_FORCE_INLINE void endBlock(btBlock* block)\n\t{\n\t\tbtAssert(block == current);\n\t\t//Raise(L\"Unmatched blocks\");\n\t\tif (block == current)\n\t\t{\n\t\t\tcurrent = block->previous;\n\t\t\tusedsize = (unsigned int)((block->address - data) - sizeof(btBlock));\n\t\t}\n\t}\n\nprivate:\n\tvoid ctor()\n\t{\n\t\tdata = 0;\n\t\ttotalsize = 0;\n\t\tusedsize = 0;\n\t\tcurrent = 0;\n\t\tischild = false;\n\t}\n\tunsigned char* data;\n\tunsigned int totalsize;\n\tunsigned int usedsize;\n\tbtBlock* current;\n\tbool ischild;\n};\n\n#endif  //BT_STACK_ALLOC\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btThreads.h",
    "content": "/*\nCopyright (c) 2003-2014 Erwin Coumans  http://bullet.googlecode.com\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_THREADS_H\n#define BT_THREADS_H\n\n#include \"btScalar.h\"  // has definitions like SIMD_FORCE_INLINE\n\n#if defined(_MSC_VER) && _MSC_VER >= 1600\n// give us a compile error if any signatures of overriden methods is changed\n#define BT_OVERRIDE override\n#endif\n\n#ifndef BT_OVERRIDE\n#define BT_OVERRIDE\n#endif\n\n// Don't set this to larger than 64, without modifying btThreadSupportPosix\n// and btThreadSupportWin32. They use UINT64 bit-masks.\nconst unsigned int BT_MAX_THREAD_COUNT = 64;  // only if BT_THREADSAFE is 1\n\n// for internal use only\nbool btIsMainThread();\nbool btThreadsAreRunning();\nunsigned int btGetCurrentThreadIndex();\nvoid btResetThreadIndexCounter();  // notify that all worker threads have been destroyed\n\n///\n/// btSpinMutex -- lightweight spin-mutex implemented with atomic ops, never puts\n///               a thread to sleep because it is designed to be used with a task scheduler\n///               which has one thread per core and the threads don't sleep until they\n///               run out of tasks. Not good for general purpose use.\n///\nclass btSpinMutex\n{\n\tint mLock;\n\npublic:\n\tbtSpinMutex()\n\t{\n\t\tmLock = 0;\n\t}\n\tvoid lock();\n\tvoid unlock();\n\tbool tryLock();\n};\n\n//\n// NOTE: btMutex* is for internal Bullet use only\n//\n// If BT_THREADSAFE is undefined or 0, should optimize away to nothing.\n// This is good because for the single-threaded build of Bullet, any calls\n// to these functions will be optimized out.\n//\n// However, for users of the multi-threaded build of Bullet this is kind\n// of bad because if you call any of these functions from external code\n// (where BT_THREADSAFE is undefined) you will get unexpected race conditions.\n//\nSIMD_FORCE_INLINE void btMutexLock(btSpinMutex* mutex)\n{\n#if BT_THREADSAFE\n\tmutex->lock();\n#else\n\t(void)mutex;\n#endif  // #if BT_THREADSAFE\n}\n\nSIMD_FORCE_INLINE void btMutexUnlock(btSpinMutex* mutex)\n{\n#if BT_THREADSAFE\n\tmutex->unlock();\n#else\n\t(void)mutex;\n#endif  // #if BT_THREADSAFE\n}\n\nSIMD_FORCE_INLINE bool btMutexTryLock(btSpinMutex* mutex)\n{\n#if BT_THREADSAFE\n\treturn mutex->tryLock();\n#else\n\t(void)mutex;\n\treturn true;\n#endif  // #if BT_THREADSAFE\n}\n\n//\n// btIParallelForBody -- subclass this to express work that can be done in parallel\n//\nclass btIParallelForBody\n{\npublic:\n\tvirtual ~btIParallelForBody() {}\n\tvirtual void forLoop(int iBegin, int iEnd) const = 0;\n};\n\n//\n// btIParallelSumBody -- subclass this to express work that can be done in parallel\n//                       and produces a sum over all loop elements\n//\nclass btIParallelSumBody\n{\npublic:\n\tvirtual ~btIParallelSumBody() {}\n\tvirtual btScalar sumLoop(int iBegin, int iEnd) const = 0;\n};\n\n//\n// btITaskScheduler -- subclass this to implement a task scheduler that can dispatch work to\n//                     worker threads\n//\nclass btITaskScheduler\n{\npublic:\n\tbtITaskScheduler(const char* name);\n\tvirtual ~btITaskScheduler() {}\n\tconst char* getName() const { return m_name; }\n\n\tvirtual int getMaxNumThreads() const = 0;\n\tvirtual int getNumThreads() const = 0;\n\tvirtual void setNumThreads(int numThreads) = 0;\n\tvirtual void parallelFor(int iBegin, int iEnd, int grainSize, const btIParallelForBody& body) = 0;\n\tvirtual btScalar parallelSum(int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body) = 0;\n\tvirtual void sleepWorkerThreadsHint() {}  // hint the task scheduler that we may not be using these threads for a little while\n\n\t// internal use only\n\tvirtual void activate();\n\tvirtual void deactivate();\n\nprotected:\n\tconst char* m_name;\n\tunsigned int m_savedThreadCounter;\n\tbool m_isActive;\n};\n\n// set the task scheduler to use for all calls to btParallelFor()\n// NOTE: you must set this prior to using any of the multi-threaded \"Mt\" classes\nvoid btSetTaskScheduler(btITaskScheduler* ts);\n\n// get the current task scheduler\nbtITaskScheduler* btGetTaskScheduler();\n\n// get non-threaded task scheduler (always available)\nbtITaskScheduler* btGetSequentialTaskScheduler();\n\n// create a default task scheduler (Win32 or pthreads based)\nbtITaskScheduler* btCreateDefaultTaskScheduler();\n\n// get OpenMP task scheduler (if available, otherwise returns null)\nbtITaskScheduler* btGetOpenMPTaskScheduler();\n\n// get Intel TBB task scheduler (if available, otherwise returns null)\nbtITaskScheduler* btGetTBBTaskScheduler();\n\n// get PPL task scheduler (if available, otherwise returns null)\nbtITaskScheduler* btGetPPLTaskScheduler();\n\n// btParallelFor -- call this to dispatch work like a for-loop\n//                 (iterations may be done out of order, so no dependencies are allowed)\nvoid btParallelFor(int iBegin, int iEnd, int grainSize, const btIParallelForBody& body);\n\n// btParallelSum -- call this to dispatch work like a for-loop, returns the sum of all iterations\n//                 (iterations may be done out of order, so no dependencies are allowed)\nbtScalar btParallelSum(int iBegin, int iEnd, int grainSize, const btIParallelSumBody& body);\n\n#endif\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btTransform.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRANSFORM_H\n#define BT_TRANSFORM_H\n\n#include \"btMatrix3x3.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btTransformData btTransformDoubleData\n#else\n#define btTransformData btTransformFloatData\n#endif\n\n/**@brief The btTransform class supports rigid transforms with only translation and rotation and no scaling/shear.\n *It can be used in combination with btVector3, btQuaternion and btMatrix3x3 linear algebra classes. */\nATTRIBUTE_ALIGNED16(class)\nbtTransform\n{\n\t///Storage for the rotation\n\tbtMatrix3x3 m_basis;\n\t///Storage for the translation\n\tbtVector3 m_origin;\n\npublic:\n\t/**@brief No initialization constructor */\n\tbtTransform() {}\n\t/**@brief Constructor from btQuaternion (optional btVector3 )\n   * @param q Rotation from quaternion \n   * @param c Translation from Vector (default 0,0,0) */\n\texplicit SIMD_FORCE_INLINE btTransform(const btQuaternion& q,\n\t\t\t\t\t\t\t\t\t\t   const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0)))\n\t\t: m_basis(q),\n\t\t  m_origin(c)\n\t{\n\t}\n\n\t/**@brief Constructor from btMatrix3x3 (optional btVector3)\n   * @param b Rotation from Matrix \n   * @param c Translation from Vector default (0,0,0)*/\n\texplicit SIMD_FORCE_INLINE btTransform(const btMatrix3x3& b,\n\t\t\t\t\t\t\t\t\t\t   const btVector3& c = btVector3(btScalar(0), btScalar(0), btScalar(0)))\n\t\t: m_basis(b),\n\t\t  m_origin(c)\n\t{\n\t}\n\t/**@brief Copy constructor */\n\tSIMD_FORCE_INLINE btTransform(const btTransform& other)\n\t\t: m_basis(other.m_basis),\n\t\t  m_origin(other.m_origin)\n\t{\n\t}\n\t/**@brief Assignment Operator */\n\tSIMD_FORCE_INLINE btTransform& operator=(const btTransform& other)\n\t{\n\t\tm_basis = other.m_basis;\n\t\tm_origin = other.m_origin;\n\t\treturn *this;\n\t}\n\n\t/**@brief Set the current transform as the value of the product of two transforms\n   * @param t1 Transform 1\n   * @param t2 Transform 2\n   * This = Transform1 * Transform2 */\n\tSIMD_FORCE_INLINE void mult(const btTransform& t1, const btTransform& t2)\n\t{\n\t\tm_basis = t1.m_basis * t2.m_basis;\n\t\tm_origin = t1(t2.m_origin);\n\t}\n\n\t/*\t\tvoid multInverseLeft(const btTransform& t1, const btTransform& t2) {\n\t\t\tbtVector3 v = t2.m_origin - t1.m_origin;\n\t\t\tm_basis = btMultTransposeLeft(t1.m_basis, t2.m_basis);\n\t\t\tm_origin = v * t1.m_basis;\n\t\t}\n\t\t*/\n\n\t/**@brief Return the transform of the vector */\n\tSIMD_FORCE_INLINE btVector3 operator()(const btVector3& x) const\n\t{\n\t\treturn x.dot3(m_basis[0], m_basis[1], m_basis[2]) + m_origin;\n\t}\n\n\t/**@brief Return the transform of the vector */\n\tSIMD_FORCE_INLINE btVector3 operator*(const btVector3& x) const\n\t{\n\t\treturn (*this)(x);\n\t}\n\n\t/**@brief Return the transform of the btQuaternion */\n\tSIMD_FORCE_INLINE btQuaternion operator*(const btQuaternion& q) const\n\t{\n\t\treturn getRotation() * q;\n\t}\n\n\t/**@brief Return the basis matrix for the rotation */\n\tSIMD_FORCE_INLINE btMatrix3x3& getBasis() { return m_basis; }\n\t/**@brief Return the basis matrix for the rotation */\n\tSIMD_FORCE_INLINE const btMatrix3x3& getBasis() const { return m_basis; }\n\n\t/**@brief Return the origin vector translation */\n\tSIMD_FORCE_INLINE btVector3& getOrigin() { return m_origin; }\n\t/**@brief Return the origin vector translation */\n\tSIMD_FORCE_INLINE const btVector3& getOrigin() const { return m_origin; }\n\n\t/**@brief Return a quaternion representing the rotation */\n\tbtQuaternion getRotation() const\n\t{\n\t\tbtQuaternion q;\n\t\tm_basis.getRotation(q);\n\t\treturn q;\n\t}\n\n\t/**@brief Set from an array \n   * @param m A pointer to a 16 element array (12 rotation(row major padded on the right by 1), and 3 translation */\n\tvoid setFromOpenGLMatrix(const btScalar* m)\n\t{\n\t\tm_basis.setFromOpenGLSubMatrix(m);\n\t\tm_origin.setValue(m[12], m[13], m[14]);\n\t}\n\n\t/**@brief Fill an array representation\n   * @param m A pointer to a 16 element array (12 rotation(row major padded on the right by 1), and 3 translation */\n\tvoid getOpenGLMatrix(btScalar * m) const\n\t{\n\t\tm_basis.getOpenGLSubMatrix(m);\n\t\tm[12] = m_origin.x();\n\t\tm[13] = m_origin.y();\n\t\tm[14] = m_origin.z();\n\t\tm[15] = btScalar(1.0);\n\t}\n\n\t/**@brief Set the translational element\n   * @param origin The vector to set the translation to */\n\tSIMD_FORCE_INLINE void setOrigin(const btVector3& origin)\n\t{\n\t\tm_origin = origin;\n\t}\n\n\tSIMD_FORCE_INLINE btVector3 invXform(const btVector3& inVec) const;\n\n\t/**@brief Set the rotational element by btMatrix3x3 */\n\tSIMD_FORCE_INLINE void setBasis(const btMatrix3x3& basis)\n\t{\n\t\tm_basis = basis;\n\t}\n\n\t/**@brief Set the rotational element by btQuaternion */\n\tSIMD_FORCE_INLINE void setRotation(const btQuaternion& q)\n\t{\n\t\tm_basis.setRotation(q);\n\t}\n\n\t/**@brief Set this transformation to the identity */\n\tvoid setIdentity()\n\t{\n\t\tm_basis.setIdentity();\n\t\tm_origin.setValue(btScalar(0.0), btScalar(0.0), btScalar(0.0));\n\t}\n\n\t/**@brief Multiply this Transform by another(this = this * another) \n   * @param t The other transform */\n\tbtTransform& operator*=(const btTransform& t)\n\t{\n\t\tm_origin += m_basis * t.m_origin;\n\t\tm_basis *= t.m_basis;\n\t\treturn *this;\n\t}\n\n\t/**@brief Return the inverse of this transform */\n\tbtTransform inverse() const\n\t{\n\t\tbtMatrix3x3 inv = m_basis.transpose();\n\t\treturn btTransform(inv, inv * -m_origin);\n\t}\n\n\t/**@brief Return the inverse of this transform times the other transform\n   * @param t The other transform \n   * return this.inverse() * the other */\n\tbtTransform inverseTimes(const btTransform& t) const;\n\n\t/**@brief Return the product of this transform and the other */\n\tbtTransform operator*(const btTransform& t) const;\n\n\t/**@brief Return an identity transform */\n\tstatic const btTransform& getIdentity()\n\t{\n\t\tstatic const btTransform identityTransform(btMatrix3x3::getIdentity());\n\t\treturn identityTransform;\n\t}\n\n\tvoid serialize(struct btTransformData & dataOut) const;\n\n\tvoid serializeFloat(struct btTransformFloatData & dataOut) const;\n\n\tvoid deSerialize(const struct btTransformData& dataIn);\n\n\tvoid deSerializeDouble(const struct btTransformDoubleData& dataIn);\n\n\tvoid deSerializeFloat(const struct btTransformFloatData& dataIn);\n};\n\nSIMD_FORCE_INLINE btVector3\nbtTransform::invXform(const btVector3& inVec) const\n{\n\tbtVector3 v = inVec - m_origin;\n\treturn (m_basis.transpose() * v);\n}\n\nSIMD_FORCE_INLINE btTransform\nbtTransform::inverseTimes(const btTransform& t) const\n{\n\tbtVector3 v = t.getOrigin() - m_origin;\n\treturn btTransform(m_basis.transposeTimes(t.m_basis),\n\t\t\t\t\t   v * m_basis);\n}\n\nSIMD_FORCE_INLINE btTransform\n\tbtTransform::operator*(const btTransform& t) const\n{\n\treturn btTransform(m_basis * t.m_basis,\n\t\t\t\t\t   (*this)(t.m_origin));\n}\n\n/**@brief Test if two transforms have all elements equal */\nSIMD_FORCE_INLINE bool operator==(const btTransform& t1, const btTransform& t2)\n{\n\treturn (t1.getBasis() == t2.getBasis() &&\n\t\t\tt1.getOrigin() == t2.getOrigin());\n}\n\n///for serialization\nstruct btTransformFloatData\n{\n\tbtMatrix3x3FloatData m_basis;\n\tbtVector3FloatData m_origin;\n};\n\nstruct btTransformDoubleData\n{\n\tbtMatrix3x3DoubleData m_basis;\n\tbtVector3DoubleData m_origin;\n};\n\nSIMD_FORCE_INLINE void btTransform::serialize(btTransformData& dataOut) const\n{\n\tm_basis.serialize(dataOut.m_basis);\n\tm_origin.serialize(dataOut.m_origin);\n}\n\nSIMD_FORCE_INLINE void btTransform::serializeFloat(btTransformFloatData& dataOut) const\n{\n\tm_basis.serializeFloat(dataOut.m_basis);\n\tm_origin.serializeFloat(dataOut.m_origin);\n}\n\nSIMD_FORCE_INLINE void btTransform::deSerialize(const btTransformData& dataIn)\n{\n\tm_basis.deSerialize(dataIn.m_basis);\n\tm_origin.deSerialize(dataIn.m_origin);\n}\n\nSIMD_FORCE_INLINE void btTransform::deSerializeFloat(const btTransformFloatData& dataIn)\n{\n\tm_basis.deSerializeFloat(dataIn.m_basis);\n\tm_origin.deSerializeFloat(dataIn.m_origin);\n}\n\nSIMD_FORCE_INLINE void btTransform::deSerializeDouble(const btTransformDoubleData& dataIn)\n{\n\tm_basis.deSerializeDouble(dataIn.m_basis);\n\tm_origin.deSerializeDouble(dataIn.m_origin);\n}\n\n#endif  //BT_TRANSFORM_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btTransformUtil.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_TRANSFORM_UTIL_H\n#define BT_TRANSFORM_UTIL_H\n\n#include \"btTransform.h\"\n#define ANGULAR_MOTION_THRESHOLD btScalar(0.5) * SIMD_HALF_PI\n\nSIMD_FORCE_INLINE btVector3 btAabbSupport(const btVector3& halfExtents, const btVector3& supportDir)\n{\n\treturn btVector3(supportDir.x() < btScalar(0.0) ? -halfExtents.x() : halfExtents.x(),\n\t\t\t\t\t supportDir.y() < btScalar(0.0) ? -halfExtents.y() : halfExtents.y(),\n\t\t\t\t\t supportDir.z() < btScalar(0.0) ? -halfExtents.z() : halfExtents.z());\n}\n\n/// Utils related to temporal transforms\nclass btTransformUtil\n{\npublic:\n\tstatic void integrateTransform(const btTransform& curTrans, const btVector3& linvel, const btVector3& angvel, btScalar timeStep, btTransform& predictedTransform)\n\t{\n\t\tpredictedTransform.setOrigin(curTrans.getOrigin() + linvel * timeStep);\n\t\t//\t#define QUATERNION_DERIVATIVE\n#ifdef QUATERNION_DERIVATIVE\n\t\tbtQuaternion predictedOrn = curTrans.getRotation();\n\t\tpredictedOrn += (angvel * predictedOrn) * (timeStep * btScalar(0.5));\n\t\tpredictedOrn.safeNormalize();\n#else\n\t\t//Exponential map\n\t\t//google for \"Practical Parameterization of Rotations Using the Exponential Map\", F. Sebastian Grassia\n\n\t\tbtVector3 axis;\n\t\tbtScalar fAngle2 = angvel.length2();\n\t\tbtScalar fAngle = 0;\n\t\tif (fAngle2 > SIMD_EPSILON)\n\t\t{\n\t\t\tfAngle = btSqrt(fAngle2);\n\t\t}\n\n\t\t//limit the angular motion\n\t\tif (fAngle * timeStep > ANGULAR_MOTION_THRESHOLD)\n\t\t{\n\t\t\tfAngle = ANGULAR_MOTION_THRESHOLD / timeStep;\n\t\t}\n\n\t\tif (fAngle < btScalar(0.001))\n\t\t{\n\t\t\t// use Taylor's expansions of sync function\n\t\t\taxis = angvel * (btScalar(0.5) * timeStep - (timeStep * timeStep * timeStep) * (btScalar(0.020833333333)) * fAngle * fAngle);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// sync(fAngle) = sin(c*fAngle)/t\n\t\t\taxis = angvel * (btSin(btScalar(0.5) * fAngle * timeStep) / fAngle);\n\t\t}\n\t\tbtQuaternion dorn(axis.x(), axis.y(), axis.z(), btCos(fAngle * timeStep * btScalar(0.5)));\n\t\tbtQuaternion orn0 = curTrans.getRotation();\n\n\t\tbtQuaternion predictedOrn = dorn * orn0;\n\t\tpredictedOrn.safeNormalize();\n#endif\n\t\tif (predictedOrn.length2() > SIMD_EPSILON)\n\t\t{\n\t\t\tpredictedTransform.setRotation(predictedOrn);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpredictedTransform.setBasis(curTrans.getBasis());\n\t\t}\n\t}\n\n\tstatic void calculateVelocityQuaternion(const btVector3& pos0, const btVector3& pos1, const btQuaternion& orn0, const btQuaternion& orn1, btScalar timeStep, btVector3& linVel, btVector3& angVel)\n\t{\n\t\tlinVel = (pos1 - pos0) / timeStep;\n\t\tbtVector3 axis;\n\t\tbtScalar angle;\n\t\tif (orn0 != orn1)\n\t\t{\n\t\t\tcalculateDiffAxisAngleQuaternion(orn0, orn1, axis, angle);\n\t\t\tangVel = axis * angle / timeStep;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tangVel.setValue(0, 0, 0);\n\t\t}\n\t}\n\n\tstatic void calculateDiffAxisAngleQuaternion(const btQuaternion& orn0, const btQuaternion& orn1a, btVector3& axis, btScalar& angle)\n\t{\n\t\tbtQuaternion orn1 = orn0.nearest(orn1a);\n\t\tbtQuaternion dorn = orn1 * orn0.inverse();\n\t\tangle = dorn.getAngle();\n\t\taxis = btVector3(dorn.x(), dorn.y(), dorn.z());\n\t\taxis[3] = btScalar(0.);\n\t\t//check for axis length\n\t\tbtScalar len = axis.length2();\n\t\tif (len < SIMD_EPSILON * SIMD_EPSILON)\n\t\t\taxis = btVector3(btScalar(1.), btScalar(0.), btScalar(0.));\n\t\telse\n\t\t\taxis /= btSqrt(len);\n\t}\n\n\tstatic void calculateVelocity(const btTransform& transform0, const btTransform& transform1, btScalar timeStep, btVector3& linVel, btVector3& angVel)\n\t{\n\t\tlinVel = (transform1.getOrigin() - transform0.getOrigin()) / timeStep;\n\t\tbtVector3 axis;\n\t\tbtScalar angle;\n\t\tcalculateDiffAxisAngle(transform0, transform1, axis, angle);\n\t\tangVel = axis * angle / timeStep;\n\t}\n\n\tstatic void calculateDiffAxisAngle(const btTransform& transform0, const btTransform& transform1, btVector3& axis, btScalar& angle)\n\t{\n\t\tbtMatrix3x3 dmat = transform1.getBasis() * transform0.getBasis().inverse();\n\t\tbtQuaternion dorn;\n\t\tdmat.getRotation(dorn);\n\n\t\t///floating point inaccuracy can lead to w component > 1..., which breaks\n\t\tdorn.normalize();\n\n\t\tangle = dorn.getAngle();\n\t\taxis = btVector3(dorn.x(), dorn.y(), dorn.z());\n\t\taxis[3] = btScalar(0.);\n\t\t//check for axis length\n\t\tbtScalar len = axis.length2();\n\t\tif (len < SIMD_EPSILON * SIMD_EPSILON)\n\t\t\taxis = btVector3(btScalar(1.), btScalar(0.), btScalar(0.));\n\t\telse\n\t\t\taxis /= btSqrt(len);\n\t}\n};\n\n///The btConvexSeparatingDistanceUtil can help speed up convex collision detection\n///by conservatively updating a cached separating distance/vector instead of re-calculating the closest distance\nclass btConvexSeparatingDistanceUtil\n{\n\tbtQuaternion m_ornA;\n\tbtQuaternion m_ornB;\n\tbtVector3 m_posA;\n\tbtVector3 m_posB;\n\n\tbtVector3 m_separatingNormal;\n\n\tbtScalar m_boundingRadiusA;\n\tbtScalar m_boundingRadiusB;\n\tbtScalar m_separatingDistance;\n\npublic:\n\tbtConvexSeparatingDistanceUtil(btScalar boundingRadiusA, btScalar boundingRadiusB)\n\t\t: m_boundingRadiusA(boundingRadiusA),\n\t\t  m_boundingRadiusB(boundingRadiusB),\n\t\t  m_separatingDistance(0.f)\n\t{\n\t}\n\n\tbtScalar getConservativeSeparatingDistance()\n\t{\n\t\treturn m_separatingDistance;\n\t}\n\n\tvoid updateSeparatingDistance(const btTransform& transA, const btTransform& transB)\n\t{\n\t\tconst btVector3& toPosA = transA.getOrigin();\n\t\tconst btVector3& toPosB = transB.getOrigin();\n\t\tbtQuaternion toOrnA = transA.getRotation();\n\t\tbtQuaternion toOrnB = transB.getRotation();\n\n\t\tif (m_separatingDistance > 0.f)\n\t\t{\n\t\t\tbtVector3 linVelA, angVelA, linVelB, angVelB;\n\t\t\tbtTransformUtil::calculateVelocityQuaternion(m_posA, toPosA, m_ornA, toOrnA, btScalar(1.), linVelA, angVelA);\n\t\t\tbtTransformUtil::calculateVelocityQuaternion(m_posB, toPosB, m_ornB, toOrnB, btScalar(1.), linVelB, angVelB);\n\t\t\tbtScalar maxAngularProjectedVelocity = angVelA.length() * m_boundingRadiusA + angVelB.length() * m_boundingRadiusB;\n\t\t\tbtVector3 relLinVel = (linVelB - linVelA);\n\t\t\tbtScalar relLinVelocLength = relLinVel.dot(m_separatingNormal);\n\t\t\tif (relLinVelocLength < 0.f)\n\t\t\t{\n\t\t\t\trelLinVelocLength = 0.f;\n\t\t\t}\n\n\t\t\tbtScalar projectedMotion = maxAngularProjectedVelocity + relLinVelocLength;\n\t\t\tm_separatingDistance -= projectedMotion;\n\t\t}\n\n\t\tm_posA = toPosA;\n\t\tm_posB = toPosB;\n\t\tm_ornA = toOrnA;\n\t\tm_ornB = toOrnB;\n\t}\n\n\tvoid initSeparatingDistance(const btVector3& separatingVector, btScalar separatingDistance, const btTransform& transA, const btTransform& transB)\n\t{\n\t\tm_separatingDistance = separatingDistance;\n\n\t\tif (m_separatingDistance > 0.f)\n\t\t{\n\t\t\tm_separatingNormal = separatingVector;\n\n\t\t\tconst btVector3& toPosA = transA.getOrigin();\n\t\t\tconst btVector3& toPosB = transB.getOrigin();\n\t\t\tbtQuaternion toOrnA = transA.getRotation();\n\t\t\tbtQuaternion toOrnB = transB.getRotation();\n\t\t\tm_posA = toPosA;\n\t\t\tm_posB = toPosB;\n\t\t\tm_ornA = toOrnA;\n\t\t\tm_ornB = toOrnB;\n\t\t}\n\t}\n};\n\n#endif  //BT_TRANSFORM_UTIL_H\n"
  },
  {
    "path": "libraries/bullet/LinearMath/btVector3.h",
    "content": "/*\nCopyright (c) 2003-2006 Gino van den Bergen / Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BT_VECTOR3_H\n#define BT_VECTOR3_H\n\n//#include <stdint.h>\n#include \"btScalar.h\"\n#include \"btMinMax.h\"\n#include \"btAlignedAllocator.h\"\n\n#ifdef BT_USE_DOUBLE_PRECISION\n#define btVector3Data btVector3DoubleData\n#define btVector3DataName \"btVector3DoubleData\"\n#else\n#define btVector3Data btVector3FloatData\n#define btVector3DataName \"btVector3FloatData\"\n#endif  //BT_USE_DOUBLE_PRECISION\n\n#if defined BT_USE_SSE\n\n//typedef  uint32_t __m128i __attribute__ ((vector_size(16)));\n\n#ifdef _MSC_VER\n#pragma warning(disable : 4556)  // value of intrinsic immediate argument '4294967239' is out of range '0 - 255'\n#endif\n\n#define BT_SHUFFLE(x, y, z, w) (((w) << 6 | (z) << 4 | (y) << 2 | (x)) & 0xff)\n//#define bt_pshufd_ps( _a, _mask ) (__m128) _mm_shuffle_epi32((__m128i)(_a), (_mask) )\n#define bt_pshufd_ps(_a, _mask) _mm_shuffle_ps((_a), (_a), (_mask))\n#define bt_splat3_ps(_a, _i) bt_pshufd_ps((_a), BT_SHUFFLE(_i, _i, _i, 3))\n#define bt_splat_ps(_a, _i) bt_pshufd_ps((_a), BT_SHUFFLE(_i, _i, _i, _i))\n\n#define btv3AbsiMask (_mm_set_epi32(0x00000000, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))\n#define btvAbsMask (_mm_set_epi32(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF))\n#define btvFFF0Mask (_mm_set_epi32(0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF))\n#define btv3AbsfMask btCastiTo128f(btv3AbsiMask)\n#define btvFFF0fMask btCastiTo128f(btvFFF0Mask)\n#define btvxyzMaskf btvFFF0fMask\n#define btvAbsfMask btCastiTo128f(btvAbsMask)\n\n//there is an issue with XCode 3.2 (LCx errors)\n#define btvMzeroMask (_mm_set_ps(-0.0f, -0.0f, -0.0f, -0.0f))\n#define v1110 (_mm_set_ps(0.0f, 1.0f, 1.0f, 1.0f))\n#define vHalf (_mm_set_ps(0.5f, 0.5f, 0.5f, 0.5f))\n#define v1_5 (_mm_set_ps(1.5f, 1.5f, 1.5f, 1.5f))\n\n//const __m128 ATTRIBUTE_ALIGNED16(btvMzeroMask) = {-0.0f, -0.0f, -0.0f, -0.0f};\n//const __m128 ATTRIBUTE_ALIGNED16(v1110) = {1.0f, 1.0f, 1.0f, 0.0f};\n//const __m128 ATTRIBUTE_ALIGNED16(vHalf) = {0.5f, 0.5f, 0.5f, 0.5f};\n//const __m128 ATTRIBUTE_ALIGNED16(v1_5)  = {1.5f, 1.5f, 1.5f, 1.5f};\n\n#endif\n\n#ifdef BT_USE_NEON\n\nconst float32x4_t ATTRIBUTE_ALIGNED16(btvMzeroMask) = (float32x4_t){-0.0f, -0.0f, -0.0f, -0.0f};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btvFFF0Mask) = (int32x4_t){static_cast<int32_t>(0xFFFFFFFF),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   static_cast<int32_t>(0xFFFFFFFF), static_cast<int32_t>(0xFFFFFFFF), 0x0};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btvAbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF};\nconst int32x4_t ATTRIBUTE_ALIGNED16(btv3AbsMask) = (int32x4_t){0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x0};\n\n#endif\n\n/**@brief btVector3 can be used to represent 3D points and vectors.\n * It has an un-used w component to suit 16-byte alignment when btVector3 is stored in containers. This extra component can be used by derived classes (Quaternion?) or by user\n * Ideally, this class should be replaced by a platform optimized SIMD version that keeps the data in registers\n */\nATTRIBUTE_ALIGNED16(class)\nbtVector3\n{\npublic:\n\tBT_DECLARE_ALIGNED_ALLOCATOR();\n\n#if defined(__SPU__) && defined(__CELLOS_LV2__)\n\tbtScalar m_floats[4];\n\npublic:\n\tSIMD_FORCE_INLINE const vec_float4& get128() const\n\t{\n\t\treturn *((const vec_float4*)&m_floats[0]);\n\t}\n\npublic:\n#else                                            //__CELLOS_LV2__ __SPU__\n#if defined(BT_USE_SSE) || defined(BT_USE_NEON)  // _WIN32 || ARM\n\tunion {\n\t\tbtSimdFloat4 mVec128;\n\t\tbtScalar m_floats[4];\n\t};\n\tSIMD_FORCE_INLINE btSimdFloat4 get128() const\n\t{\n\t\treturn mVec128;\n\t}\n\tSIMD_FORCE_INLINE void set128(btSimdFloat4 v128)\n\t{\n\t\tmVec128 = v128;\n\t}\n#else\n\tbtScalar m_floats[4];\n#endif\n#endif  //__CELLOS_LV2__ __SPU__\n\npublic:\n\t/**@brief No initialization constructor */\n\tSIMD_FORCE_INLINE btVector3()\n\t{\n\t}\n\n\t/**@brief Constructor from scalars \n   * @param x X value\n   * @param y Y value \n   * @param z Z value \n   */\n\tSIMD_FORCE_INLINE btVector3(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = btScalar(0.f);\n\t}\n\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\t// Set Vector\n\tSIMD_FORCE_INLINE btVector3(btSimdFloat4 v)\n\t{\n\t\tmVec128 = v;\n\t}\n\n\t// Copy constructor\n\tSIMD_FORCE_INLINE btVector3(const btVector3& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\t// Assignment Operator\n\tSIMD_FORCE_INLINE btVector3&\n\toperator=(const btVector3& v)\n\t{\n\t\tmVec128 = v.mVec128;\n\n\t\treturn *this;\n\t}\n#endif  // #if defined (BT_USE_SSE_IN_API) || defined (BT_USE_NEON)\n\n\t/**@brief Add a vector to this one \n * @param The vector to add to this one */\n\tSIMD_FORCE_INLINE btVector3& operator+=(const btVector3& v)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_add_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vaddq_f32(mVec128, v.mVec128);\n#else\n\t\tm_floats[0] += v.m_floats[0];\n\t\tm_floats[1] += v.m_floats[1];\n\t\tm_floats[2] += v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Subtract a vector from this one\n   * @param The vector to subtract */\n\tSIMD_FORCE_INLINE btVector3& operator-=(const btVector3& v)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_sub_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vsubq_f32(mVec128, v.mVec128);\n#else\n\t\tm_floats[0] -= v.m_floats[0];\n\t\tm_floats[1] -= v.m_floats[1];\n\t\tm_floats[2] -= v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Scale the vector\n   * @param s Scale factor */\n\tSIMD_FORCE_INLINE btVector3& operator*=(const btScalar& s)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vs = _mm_load_ss(&s);  //\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x80);  //\t(S S S 0.0)\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_n_f32(mVec128, s);\n#else\n\t\tm_floats[0] *= s;\n\t\tm_floats[1] *= s;\n\t\tm_floats[2] *= s;\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Inversely scale the vector \n   * @param s Scale factor to divide by */\n\tSIMD_FORCE_INLINE btVector3& operator/=(const btScalar& s)\n\t{\n\t\tbtFullAssert(s != btScalar(0.0));\n\n#if 0  //defined(BT_USE_SSE_IN_API)\n// this code is not faster !\n\t\t__m128 vs = _mm_load_ss(&s);\n\t\tvs = _mm_div_ss(v1110, vs);\n\t\tvs = bt_pshufd_ps(vs, 0x00);\t//\t(S S S S)\n\n\t\tmVec128 = _mm_mul_ps(mVec128, vs);\n\t\t\n\t\treturn *this;\n#else\n\t\treturn *this *= btScalar(1.0) / s;\n#endif\n\t}\n\n\t/**@brief Return the dot product\n   * @param v The other vector in the dot product */\n\tSIMD_FORCE_INLINE btScalar dot(const btVector3& v) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vd = _mm_mul_ps(mVec128, v.mVec128);\n\t\t__m128 z = _mm_movehl_ps(vd, vd);\n\t\t__m128 y = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, y);\n\t\tvd = _mm_add_ss(vd, z);\n\t\treturn _mm_cvtss_f32(vd);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vd = vmulq_f32(mVec128, v.mVec128);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(vd), vget_low_f32(vd));\n\t\tx = vadd_f32(x, vget_high_f32(vd));\n\t\treturn vget_lane_f32(x, 0);\n#else\n\t\treturn m_floats[0] * v.m_floats[0] +\n\t\t\t   m_floats[1] * v.m_floats[1] +\n\t\t\t   m_floats[2] * v.m_floats[2];\n#endif\n\t}\n\n\t/**@brief Return the length of the vector squared */\n\tSIMD_FORCE_INLINE btScalar length2() const\n\t{\n\t\treturn dot(*this);\n\t}\n\n\t/**@brief Return the length of the vector */\n\tSIMD_FORCE_INLINE btScalar length() const\n\t{\n\t\treturn btSqrt(length2());\n\t}\n\n\t/**@brief Return the norm (length) of the vector */\n\tSIMD_FORCE_INLINE btScalar norm() const\n\t{\n\t\treturn length();\n\t}\n\n\t/**@brief Return the norm (length) of the vector */\n\tSIMD_FORCE_INLINE btScalar safeNorm() const\n\t{\n\t\tbtScalar d = length2();\n\t\t//workaround for some clang/gcc issue of sqrtf(tiny number) = -INF\n\t\tif (d > SIMD_EPSILON)\n\t\t\treturn btSqrt(d);\n\t\treturn btScalar(0);\n\t}\n\n\t/**@brief Return the distance squared between the ends of this and another vector\n   * This is symantically treating the vector like a point */\n\tSIMD_FORCE_INLINE btScalar distance2(const btVector3& v) const;\n\n\t/**@brief Return the distance between the ends of this and another vector\n   * This is symantically treating the vector like a point */\n\tSIMD_FORCE_INLINE btScalar distance(const btVector3& v) const;\n\n\tSIMD_FORCE_INLINE btVector3& safeNormalize()\n\t{\n\t\tbtScalar l2 = length2();\n\t\t//triNormal.normalize();\n\t\tif (l2 >= SIMD_EPSILON * SIMD_EPSILON)\n\t\t{\n\t\t\t(*this) /= btSqrt(l2);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsetValue(1, 0, 0);\n\t\t}\n\t\treturn *this;\n\t}\n\n\t/**@brief Normalize this vector \n   * x^2 + y^2 + z^2 = 1 */\n\tSIMD_FORCE_INLINE btVector3& normalize()\n\t{\n\t\tbtAssert(!fuzzyZero());\n\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t// dot product first\n\t\t__m128 vd = _mm_mul_ps(mVec128, mVec128);\n\t\t__m128 z = _mm_movehl_ps(vd, vd);\n\t\t__m128 y = _mm_shuffle_ps(vd, vd, 0x55);\n\t\tvd = _mm_add_ss(vd, y);\n\t\tvd = _mm_add_ss(vd, z);\n\n#if 0\n        vd = _mm_sqrt_ss(vd);\n\t\tvd = _mm_div_ss(v1110, vd);\n\t\tvd = bt_splat_ps(vd, 0x80);\n\t\tmVec128 = _mm_mul_ps(mVec128, vd);\n#else\n\n\t\t// NR step 1/sqrt(x) - vd is x, y is output\n\t\ty = _mm_rsqrt_ss(vd);  // estimate\n\n\t\t//  one step NR\n\t\tz = v1_5;\n\t\tvd = _mm_mul_ss(vd, vHalf);  // vd * 0.5\n\t\t//x2 = vd;\n\t\tvd = _mm_mul_ss(vd, y);  // vd * 0.5 * y0\n\t\tvd = _mm_mul_ss(vd, y);  // vd * 0.5 * y0 * y0\n\t\tz = _mm_sub_ss(z, vd);   // 1.5 - vd * 0.5 * y0 * y0\n\n\t\ty = _mm_mul_ss(y, z);  // y0 * (1.5 - vd * 0.5 * y0 * y0)\n\n\t\ty = bt_splat_ps(y, 0x80);\n\t\tmVec128 = _mm_mul_ps(mVec128, y);\n\n#endif\n\n\t\treturn *this;\n#else\n\t\treturn *this /= length();\n#endif\n\t}\n\n\t/**@brief Return a normalized version of this vector */\n\tSIMD_FORCE_INLINE btVector3 normalized() const;\n\n\t/**@brief Return a rotated version of this vector\n   * @param wAxis The axis to rotate about \n   * @param angle The angle to rotate by */\n\tSIMD_FORCE_INLINE btVector3 rotate(const btVector3& wAxis, const btScalar angle) const;\n\n\t/**@brief Return the angle between this and another vector\n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btScalar angle(const btVector3& v) const\n\t{\n\t\tbtScalar s = btSqrt(length2() * v.length2());\n\t\tbtFullAssert(s != btScalar(0.0));\n\t\treturn btAcos(dot(v) / s);\n\t}\n\n\t/**@brief Return a vector with the absolute values of each element */\n\tSIMD_FORCE_INLINE btVector3 absolute() const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btVector3(_mm_and_ps(mVec128, btv3AbsfMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btVector3(vabsq_f32(mVec128));\n#else\n\t\treturn btVector3(\n\t\t\tbtFabs(m_floats[0]),\n\t\t\tbtFabs(m_floats[1]),\n\t\t\tbtFabs(m_floats[2]));\n#endif\n\t}\n\n\t/**@brief Return the cross product between this and another vector \n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btVector3 cross(const btVector3& v) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 T, V;\n\n\t\tT = bt_pshufd_ps(mVec128, BT_SHUFFLE(1, 2, 0, 3));    //\t(Y Z X 0)\n\t\tV = bt_pshufd_ps(v.mVec128, BT_SHUFFLE(1, 2, 0, 3));  //\t(Y Z X 0)\n\n\t\tV = _mm_mul_ps(V, mVec128);\n\t\tT = _mm_mul_ps(T, v.mVec128);\n\t\tV = _mm_sub_ps(V, T);\n\n\t\tV = bt_pshufd_ps(V, BT_SHUFFLE(1, 2, 0, 3));\n\t\treturn btVector3(V);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t T, V;\n\t\t// form (Y, Z, X, _) of mVec128 and v.mVec128\n\t\tfloat32x2_t Tlow = vget_low_f32(mVec128);\n\t\tfloat32x2_t Vlow = vget_low_f32(v.mVec128);\n\t\tT = vcombine_f32(vext_f32(Tlow, vget_high_f32(mVec128), 1), Tlow);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(v.mVec128), 1), Vlow);\n\n\t\tV = vmulq_f32(V, mVec128);\n\t\tT = vmulq_f32(T, v.mVec128);\n\t\tV = vsubq_f32(V, T);\n\t\tVlow = vget_low_f32(V);\n\t\t// form (Y, Z, X, _);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(V), 1), Vlow);\n\t\tV = (float32x4_t)vandq_s32((int32x4_t)V, btvFFF0Mask);\n\n\t\treturn btVector3(V);\n#else\n\t\treturn btVector3(\n\t\t\tm_floats[1] * v.m_floats[2] - m_floats[2] * v.m_floats[1],\n\t\t\tm_floats[2] * v.m_floats[0] - m_floats[0] * v.m_floats[2],\n\t\t\tm_floats[0] * v.m_floats[1] - m_floats[1] * v.m_floats[0]);\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE btScalar triple(const btVector3& v1, const btVector3& v2) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t// cross:\n\t\t__m128 T = _mm_shuffle_ps(v1.mVec128, v1.mVec128, BT_SHUFFLE(1, 2, 0, 3));  //\t(Y Z X 0)\n\t\t__m128 V = _mm_shuffle_ps(v2.mVec128, v2.mVec128, BT_SHUFFLE(1, 2, 0, 3));  //\t(Y Z X 0)\n\n\t\tV = _mm_mul_ps(V, v1.mVec128);\n\t\tT = _mm_mul_ps(T, v2.mVec128);\n\t\tV = _mm_sub_ps(V, T);\n\n\t\tV = _mm_shuffle_ps(V, V, BT_SHUFFLE(1, 2, 0, 3));\n\n\t\t// dot:\n\t\tV = _mm_mul_ps(V, mVec128);\n\t\t__m128 z = _mm_movehl_ps(V, V);\n\t\t__m128 y = _mm_shuffle_ps(V, V, 0x55);\n\t\tV = _mm_add_ss(V, y);\n\t\tV = _mm_add_ss(V, z);\n\t\treturn _mm_cvtss_f32(V);\n\n#elif defined(BT_USE_NEON)\n\t\t// cross:\n\t\tfloat32x4_t T, V;\n\t\t// form (Y, Z, X, _) of mVec128 and v.mVec128\n\t\tfloat32x2_t Tlow = vget_low_f32(v1.mVec128);\n\t\tfloat32x2_t Vlow = vget_low_f32(v2.mVec128);\n\t\tT = vcombine_f32(vext_f32(Tlow, vget_high_f32(v1.mVec128), 1), Tlow);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(v2.mVec128), 1), Vlow);\n\n\t\tV = vmulq_f32(V, v1.mVec128);\n\t\tT = vmulq_f32(T, v2.mVec128);\n\t\tV = vsubq_f32(V, T);\n\t\tVlow = vget_low_f32(V);\n\t\t// form (Y, Z, X, _);\n\t\tV = vcombine_f32(vext_f32(Vlow, vget_high_f32(V), 1), Vlow);\n\n\t\t// dot:\n\t\tV = vmulq_f32(mVec128, V);\n\t\tfloat32x2_t x = vpadd_f32(vget_low_f32(V), vget_low_f32(V));\n\t\tx = vadd_f32(x, vget_high_f32(V));\n\t\treturn vget_lane_f32(x, 0);\n#else\n\t\treturn m_floats[0] * (v1.m_floats[1] * v2.m_floats[2] - v1.m_floats[2] * v2.m_floats[1]) +\n\t\t\t   m_floats[1] * (v1.m_floats[2] * v2.m_floats[0] - v1.m_floats[0] * v2.m_floats[2]) +\n\t\t\t   m_floats[2] * (v1.m_floats[0] * v2.m_floats[1] - v1.m_floats[1] * v2.m_floats[0]);\n#endif\n\t}\n\n\t/**@brief Return the axis with the smallest value \n   * Note return values are 0,1,2 for x, y, or z */\n\tSIMD_FORCE_INLINE int minAxis() const\n\t{\n\t\treturn m_floats[0] < m_floats[1] ? (m_floats[0] < m_floats[2] ? 0 : 2) : (m_floats[1] < m_floats[2] ? 1 : 2);\n\t}\n\n\t/**@brief Return the axis with the largest value \n   * Note return values are 0,1,2 for x, y, or z */\n\tSIMD_FORCE_INLINE int maxAxis() const\n\t{\n\t\treturn m_floats[0] < m_floats[1] ? (m_floats[1] < m_floats[2] ? 2 : 1) : (m_floats[0] < m_floats[2] ? 2 : 0);\n\t}\n\n\tSIMD_FORCE_INLINE int furthestAxis() const\n\t{\n\t\treturn absolute().minAxis();\n\t}\n\n\tSIMD_FORCE_INLINE int closestAxis() const\n\t{\n\t\treturn absolute().maxAxis();\n\t}\n\n\tSIMD_FORCE_INLINE void setInterpolate3(const btVector3& v0, const btVector3& v1, btScalar rt)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vrt = _mm_load_ss(&rt);  //\t(rt 0 0 0)\n\t\tbtScalar s = btScalar(1.0) - rt;\n\t\t__m128 vs = _mm_load_ss(&s);  //\t(S 0 0 0)\n\t\tvs = bt_pshufd_ps(vs, 0x80);  //\t(S S S 0.0)\n\t\t__m128 r0 = _mm_mul_ps(v0.mVec128, vs);\n\t\tvrt = bt_pshufd_ps(vrt, 0x80);  //\t(rt rt rt 0.0)\n\t\t__m128 r1 = _mm_mul_ps(v1.mVec128, vrt);\n\t\t__m128 tmp3 = _mm_add_ps(r0, r1);\n\t\tmVec128 = tmp3;\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vl = vsubq_f32(v1.mVec128, v0.mVec128);\n\t\tvl = vmulq_n_f32(vl, rt);\n\t\tmVec128 = vaddq_f32(vl, v0.mVec128);\n#else\n\t\tbtScalar s = btScalar(1.0) - rt;\n\t\tm_floats[0] = s * v0.m_floats[0] + rt * v1.m_floats[0];\n\t\tm_floats[1] = s * v0.m_floats[1] + rt * v1.m_floats[1];\n\t\tm_floats[2] = s * v0.m_floats[2] + rt * v1.m_floats[2];\n\t\t//don't do the unused w component\n\t\t//\t\tm_co[3] = s * v0[3] + rt * v1[3];\n#endif\n\t}\n\n\t/**@brief Return the linear interpolation between this and another vector \n   * @param v The other vector \n   * @param t The ration of this to v (t = 0 => return this, t=1 => return other) */\n\tSIMD_FORCE_INLINE btVector3 lerp(const btVector3& v, const btScalar& t) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\t__m128 vt = _mm_load_ss(&t);  //\t(t 0 0 0)\n\t\tvt = bt_pshufd_ps(vt, 0x80);  //\t(rt rt rt 0.0)\n\t\t__m128 vl = _mm_sub_ps(v.mVec128, mVec128);\n\t\tvl = _mm_mul_ps(vl, vt);\n\t\tvl = _mm_add_ps(vl, mVec128);\n\n\t\treturn btVector3(vl);\n#elif defined(BT_USE_NEON)\n\t\tfloat32x4_t vl = vsubq_f32(v.mVec128, mVec128);\n\t\tvl = vmulq_n_f32(vl, t);\n\t\tvl = vaddq_f32(vl, mVec128);\n\n\t\treturn btVector3(vl);\n#else\n\t\treturn btVector3(m_floats[0] + (v.m_floats[0] - m_floats[0]) * t,\n\t\t\t\t\t\t m_floats[1] + (v.m_floats[1] - m_floats[1]) * t,\n\t\t\t\t\t\t m_floats[2] + (v.m_floats[2] - m_floats[2]) * t);\n#endif\n\t}\n\n\t/**@brief Elementwise multiply this vector by the other \n   * @param v The other vector */\n\tSIMD_FORCE_INLINE btVector3& operator*=(const btVector3& v)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_mul_ps(mVec128, v.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmulq_f32(mVec128, v.mVec128);\n#else\n\t\tm_floats[0] *= v.m_floats[0];\n\t\tm_floats[1] *= v.m_floats[1];\n\t\tm_floats[2] *= v.m_floats[2];\n#endif\n\t\treturn *this;\n\t}\n\n\t/**@brief Return the x value */\n\tSIMD_FORCE_INLINE const btScalar& getX() const { return m_floats[0]; }\n\t/**@brief Return the y value */\n\tSIMD_FORCE_INLINE const btScalar& getY() const { return m_floats[1]; }\n\t/**@brief Return the z value */\n\tSIMD_FORCE_INLINE const btScalar& getZ() const { return m_floats[2]; }\n\t/**@brief Set the x value */\n\tSIMD_FORCE_INLINE void setX(btScalar _x) { m_floats[0] = _x; };\n\t/**@brief Set the y value */\n\tSIMD_FORCE_INLINE void setY(btScalar _y) { m_floats[1] = _y; };\n\t/**@brief Set the z value */\n\tSIMD_FORCE_INLINE void setZ(btScalar _z) { m_floats[2] = _z; };\n\t/**@brief Set the w value */\n\tSIMD_FORCE_INLINE void setW(btScalar _w) { m_floats[3] = _w; };\n\t/**@brief Return the x value */\n\tSIMD_FORCE_INLINE const btScalar& x() const { return m_floats[0]; }\n\t/**@brief Return the y value */\n\tSIMD_FORCE_INLINE const btScalar& y() const { return m_floats[1]; }\n\t/**@brief Return the z value */\n\tSIMD_FORCE_INLINE const btScalar& z() const { return m_floats[2]; }\n\t/**@brief Return the w value */\n\tSIMD_FORCE_INLINE const btScalar& w() const { return m_floats[3]; }\n\n\t//SIMD_FORCE_INLINE btScalar&       operator[](int i)       { return (&m_floats[0])[i];\t}\n\t//SIMD_FORCE_INLINE const btScalar& operator[](int i) const { return (&m_floats[0])[i]; }\n\t///operator btScalar*() replaces operator[], using implicit conversion. We added operator != and operator == to avoid pointer comparisons.\n\tSIMD_FORCE_INLINE operator btScalar*() { return &m_floats[0]; }\n\tSIMD_FORCE_INLINE operator const btScalar*() const { return &m_floats[0]; }\n\n\tSIMD_FORCE_INLINE bool operator==(const btVector3& other) const\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn (0xf == _mm_movemask_ps((__m128)_mm_cmpeq_ps(mVec128, other.mVec128)));\n#else\n\t\treturn ((m_floats[3] == other.m_floats[3]) &&\n\t\t\t\t(m_floats[2] == other.m_floats[2]) &&\n\t\t\t\t(m_floats[1] == other.m_floats[1]) &&\n\t\t\t\t(m_floats[0] == other.m_floats[0]));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE bool operator!=(const btVector3& other) const\n\t{\n\t\treturn !(*this == other);\n\t}\n\n\t/**@brief Set each element to the max of the current values and the values of another btVector3\n   * @param other The other btVector3 to compare with \n   */\n\tSIMD_FORCE_INLINE void setMax(const btVector3& other)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_max_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vmaxq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMax(m_floats[0], other.m_floats[0]);\n\t\tbtSetMax(m_floats[1], other.m_floats[1]);\n\t\tbtSetMax(m_floats[2], other.m_floats[2]);\n\t\tbtSetMax(m_floats[3], other.w());\n#endif\n\t}\n\n\t/**@brief Set each element to the min of the current values and the values of another btVector3\n   * @param other The other btVector3 to compare with \n   */\n\tSIMD_FORCE_INLINE void setMin(const btVector3& other)\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = _mm_min_ps(mVec128, other.mVec128);\n#elif defined(BT_USE_NEON)\n\t\tmVec128 = vminq_f32(mVec128, other.mVec128);\n#else\n\t\tbtSetMin(m_floats[0], other.m_floats[0]);\n\t\tbtSetMin(m_floats[1], other.m_floats[1]);\n\t\tbtSetMin(m_floats[2], other.m_floats[2]);\n\t\tbtSetMin(m_floats[3], other.w());\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE void setValue(const btScalar& _x, const btScalar& _y, const btScalar& _z)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = btScalar(0.f);\n\t}\n\n\tvoid getSkewSymmetricMatrix(btVector3 * v0, btVector3 * v1, btVector3 * v2) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\n\t\t__m128 V = _mm_and_ps(mVec128, btvFFF0fMask);\n\t\t__m128 V0 = _mm_xor_ps(btvMzeroMask, V);\n\t\t__m128 V2 = _mm_movelh_ps(V0, V);\n\n\t\t__m128 V1 = _mm_shuffle_ps(V, V0, 0xCE);\n\n\t\tV0 = _mm_shuffle_ps(V0, V, 0xDB);\n\t\tV2 = _mm_shuffle_ps(V2, V, 0xF9);\n\n\t\tv0->mVec128 = V0;\n\t\tv1->mVec128 = V1;\n\t\tv2->mVec128 = V2;\n#else\n\t\tv0->setValue(0., -z(), y());\n\t\tv1->setValue(z(), 0., -x());\n\t\tv2->setValue(-y(), x(), 0.);\n#endif\n\t}\n\n\tvoid setZero()\n\t{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\tmVec128 = (__m128)_mm_xor_ps(mVec128, mVec128);\n#elif defined(BT_USE_NEON)\n\t\tint32x4_t vi = vdupq_n_s32(0);\n\t\tmVec128 = vreinterpretq_f32_s32(vi);\n#else\n\t\tsetValue(btScalar(0.), btScalar(0.), btScalar(0.));\n#endif\n\t}\n\n\tSIMD_FORCE_INLINE bool isZero() const\n\t{\n\t\treturn m_floats[0] == btScalar(0) && m_floats[1] == btScalar(0) && m_floats[2] == btScalar(0);\n\t}\n\n\tSIMD_FORCE_INLINE bool fuzzyZero() const\n\t{\n\t\treturn length2() < SIMD_EPSILON * SIMD_EPSILON;\n\t}\n\n\tSIMD_FORCE_INLINE void serialize(struct btVector3Data & dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerialize(const struct btVector3DoubleData& dataIn);\n\n\tSIMD_FORCE_INLINE void deSerialize(const struct btVector3FloatData& dataIn);\n\n\tSIMD_FORCE_INLINE void serializeFloat(struct btVector3FloatData & dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerializeFloat(const struct btVector3FloatData& dataIn);\n\n\tSIMD_FORCE_INLINE void serializeDouble(struct btVector3DoubleData & dataOut) const;\n\n\tSIMD_FORCE_INLINE void deSerializeDouble(const struct btVector3DoubleData& dataIn);\n\n\t/**@brief returns index of maximum dot product between this and vectors in array[]\n         * @param array The other vectors \n         * @param array_count The number of other vectors \n         * @param dotOut The maximum dot product */\n\tSIMD_FORCE_INLINE long maxDot(const btVector3* array, long array_count, btScalar& dotOut) const;\n\n\t/**@brief returns index of minimum dot product between this and vectors in array[]\n         * @param array The other vectors \n         * @param array_count The number of other vectors \n         * @param dotOut The minimum dot product */\n\tSIMD_FORCE_INLINE long minDot(const btVector3* array, long array_count, btScalar& dotOut) const;\n\n\t/* create a vector as  btVector3( this->dot( btVector3 v0 ), this->dot( btVector3 v1), this->dot( btVector3 v2 ))  */\n\tSIMD_FORCE_INLINE btVector3 dot3(const btVector3& v0, const btVector3& v1, const btVector3& v2) const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\n\t\t__m128 a0 = _mm_mul_ps(v0.mVec128, this->mVec128);\n\t\t__m128 a1 = _mm_mul_ps(v1.mVec128, this->mVec128);\n\t\t__m128 a2 = _mm_mul_ps(v2.mVec128, this->mVec128);\n\t\t__m128 b0 = _mm_unpacklo_ps(a0, a1);\n\t\t__m128 b1 = _mm_unpackhi_ps(a0, a1);\n\t\t__m128 b2 = _mm_unpacklo_ps(a2, _mm_setzero_ps());\n\t\t__m128 r = _mm_movelh_ps(b0, b2);\n\t\tr = _mm_add_ps(r, _mm_movehl_ps(b2, b0));\n\t\ta2 = _mm_and_ps(a2, btvxyzMaskf);\n\t\tr = _mm_add_ps(r, btCastdTo128f(_mm_move_sd(btCastfTo128d(a2), btCastfTo128d(b1))));\n\t\treturn btVector3(r);\n\n#elif defined(BT_USE_NEON)\n\t\tstatic const uint32x4_t xyzMask = (const uint32x4_t){static_cast<uint32_t>(-1), static_cast<uint32_t>(-1), static_cast<uint32_t>(-1), 0};\n\t\tfloat32x4_t a0 = vmulq_f32(v0.mVec128, this->mVec128);\n\t\tfloat32x4_t a1 = vmulq_f32(v1.mVec128, this->mVec128);\n\t\tfloat32x4_t a2 = vmulq_f32(v2.mVec128, this->mVec128);\n\t\tfloat32x2x2_t zLo = vtrn_f32(vget_high_f32(a0), vget_high_f32(a1));\n\t\ta2 = (float32x4_t)vandq_u32((uint32x4_t)a2, xyzMask);\n\t\tfloat32x2_t b0 = vadd_f32(vpadd_f32(vget_low_f32(a0), vget_low_f32(a1)), zLo.val[0]);\n\t\tfloat32x2_t b1 = vpadd_f32(vpadd_f32(vget_low_f32(a2), vget_high_f32(a2)), vdup_n_f32(0.0f));\n\t\treturn btVector3(vcombine_f32(b0, b1));\n#else\n\t\treturn btVector3(dot(v0), dot(v1), dot(v2));\n#endif\n\t}\n};\n\n/**@brief Return the sum of two vectors (Point symantics)*/\nSIMD_FORCE_INLINE btVector3\noperator+(const btVector3& v1, const btVector3& v2)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\treturn btVector3(_mm_add_ps(v1.mVec128, v2.mVec128));\n#elif defined(BT_USE_NEON)\n\treturn btVector3(vaddq_f32(v1.mVec128, v2.mVec128));\n#else\n\treturn btVector3(\n\t\tv1.m_floats[0] + v2.m_floats[0],\n\t\tv1.m_floats[1] + v2.m_floats[1],\n\t\tv1.m_floats[2] + v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the elementwise product of two vectors */\nSIMD_FORCE_INLINE btVector3\noperator*(const btVector3& v1, const btVector3& v2)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\treturn btVector3(_mm_mul_ps(v1.mVec128, v2.mVec128));\n#elif defined(BT_USE_NEON)\n\treturn btVector3(vmulq_f32(v1.mVec128, v2.mVec128));\n#else\n\treturn btVector3(\n\t\tv1.m_floats[0] * v2.m_floats[0],\n\t\tv1.m_floats[1] * v2.m_floats[1],\n\t\tv1.m_floats[2] * v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the difference between two vectors */\nSIMD_FORCE_INLINE btVector3\noperator-(const btVector3& v1, const btVector3& v2)\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\n\t//\twithout _mm_and_ps this code causes slowdown in Concave moving\n\t__m128 r = _mm_sub_ps(v1.mVec128, v2.mVec128);\n\treturn btVector3(_mm_and_ps(r, btvFFF0fMask));\n#elif defined(BT_USE_NEON)\n\tfloat32x4_t r = vsubq_f32(v1.mVec128, v2.mVec128);\n\treturn btVector3((float32x4_t)vandq_s32((int32x4_t)r, btvFFF0Mask));\n#else\n\treturn btVector3(\n\t\tv1.m_floats[0] - v2.m_floats[0],\n\t\tv1.m_floats[1] - v2.m_floats[1],\n\t\tv1.m_floats[2] - v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the negative of the vector */\nSIMD_FORCE_INLINE btVector3\noperator-(const btVector3& v)\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t__m128 r = _mm_xor_ps(v.mVec128, btvMzeroMask);\n\treturn btVector3(_mm_and_ps(r, btvFFF0fMask));\n#elif defined(BT_USE_NEON)\n\treturn btVector3((btSimdFloat4)veorq_s32((int32x4_t)v.mVec128, (int32x4_t)btvMzeroMask));\n#else\n\treturn btVector3(-v.m_floats[0], -v.m_floats[1], -v.m_floats[2]);\n#endif\n}\n\n/**@brief Return the vector scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator*(const btVector3& v, const btScalar& s)\n{\n#if defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t__m128 vs = _mm_load_ss(&s);  //\t(S 0 0 0)\n\tvs = bt_pshufd_ps(vs, 0x80);  //\t(S S S 0.0)\n\treturn btVector3(_mm_mul_ps(v.mVec128, vs));\n#elif defined(BT_USE_NEON)\n\tfloat32x4_t r = vmulq_n_f32(v.mVec128, s);\n\treturn btVector3((float32x4_t)vandq_s32((int32x4_t)r, btvFFF0Mask));\n#else\n\treturn btVector3(v.m_floats[0] * s, v.m_floats[1] * s, v.m_floats[2] * s);\n#endif\n}\n\n/**@brief Return the vector scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator*(const btScalar& s, const btVector3& v)\n{\n\treturn v * s;\n}\n\n/**@brief Return the vector inversely scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator/(const btVector3& v, const btScalar& s)\n{\n\tbtFullAssert(s != btScalar(0.0));\n#if 0  //defined(BT_USE_SSE_IN_API)\n// this code is not faster !\n\t__m128 vs = _mm_load_ss(&s);\n    vs = _mm_div_ss(v1110, vs);\n\tvs = bt_pshufd_ps(vs, 0x00);\t//\t(S S S S)\n\n\treturn btVector3(_mm_mul_ps(v.mVec128, vs));\n#else\n\treturn v * (btScalar(1.0) / s);\n#endif\n}\n\n/**@brief Return the vector inversely scaled by s */\nSIMD_FORCE_INLINE btVector3\noperator/(const btVector3& v1, const btVector3& v2)\n{\n#if defined BT_USE_SIMD_VECTOR3 && (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE))\n\t__m128 vec = _mm_div_ps(v1.mVec128, v2.mVec128);\n\tvec = _mm_and_ps(vec, btvFFF0fMask);\n\treturn btVector3(vec);\n#elif defined(BT_USE_NEON)\n\tfloat32x4_t x, y, v, m;\n\n\tx = v1.mVec128;\n\ty = v2.mVec128;\n\n\tv = vrecpeq_f32(y);     // v ~ 1/y\n\tm = vrecpsq_f32(y, v);  // m = (2-v*y)\n\tv = vmulq_f32(v, m);    // vv = v*m ~~ 1/y\n\tm = vrecpsq_f32(y, v);  // mm = (2-vv*y)\n\tv = vmulq_f32(v, x);    // x*vv\n\tv = vmulq_f32(v, m);    // (x*vv)*(2-vv*y) = x*(vv(2-vv*y)) ~~~ x/y\n\n\treturn btVector3(v);\n#else\n\treturn btVector3(\n\t\tv1.m_floats[0] / v2.m_floats[0],\n\t\tv1.m_floats[1] / v2.m_floats[1],\n\t\tv1.m_floats[2] / v2.m_floats[2]);\n#endif\n}\n\n/**@brief Return the dot product between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtDot(const btVector3& v1, const btVector3& v2)\n{\n\treturn v1.dot(v2);\n}\n\n/**@brief Return the distance squared between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtDistance2(const btVector3& v1, const btVector3& v2)\n{\n\treturn v1.distance2(v2);\n}\n\n/**@brief Return the distance between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtDistance(const btVector3& v1, const btVector3& v2)\n{\n\treturn v1.distance(v2);\n}\n\n/**@brief Return the angle between two vectors */\nSIMD_FORCE_INLINE btScalar\nbtAngle(const btVector3& v1, const btVector3& v2)\n{\n\treturn v1.angle(v2);\n}\n\n/**@brief Return the cross product of two vectors */\nSIMD_FORCE_INLINE btVector3\nbtCross(const btVector3& v1, const btVector3& v2)\n{\n\treturn v1.cross(v2);\n}\n\nSIMD_FORCE_INLINE btScalar\nbtTriple(const btVector3& v1, const btVector3& v2, const btVector3& v3)\n{\n\treturn v1.triple(v2, v3);\n}\n\n/**@brief Return the linear interpolation between two vectors\n * @param v1 One vector \n * @param v2 The other vector \n * @param t The ration of this to v (t = 0 => return v1, t=1 => return v2) */\nSIMD_FORCE_INLINE btVector3\nlerp(const btVector3& v1, const btVector3& v2, const btScalar& t)\n{\n\treturn v1.lerp(v2, t);\n}\n\nSIMD_FORCE_INLINE btScalar btVector3::distance2(const btVector3& v) const\n{\n\treturn (v - *this).length2();\n}\n\nSIMD_FORCE_INLINE btScalar btVector3::distance(const btVector3& v) const\n{\n\treturn (v - *this).length();\n}\n\nSIMD_FORCE_INLINE btVector3 btVector3::normalized() const\n{\n\tbtVector3 nrm = *this;\n\n\treturn nrm.normalize();\n}\n\nSIMD_FORCE_INLINE btVector3 btVector3::rotate(const btVector3& wAxis, const btScalar _angle) const\n{\n\t// wAxis must be a unit lenght vector\n\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\n\t__m128 O = _mm_mul_ps(wAxis.mVec128, mVec128);\n\tbtScalar ssin = btSin(_angle);\n\t__m128 C = wAxis.cross(mVec128).mVec128;\n\tO = _mm_and_ps(O, btvFFF0fMask);\n\tbtScalar scos = btCos(_angle);\n\n\t__m128 vsin = _mm_load_ss(&ssin);  //\t(S 0 0 0)\n\t__m128 vcos = _mm_load_ss(&scos);  //\t(S 0 0 0)\n\n\t__m128 Y = bt_pshufd_ps(O, 0xC9);  //\t(Y Z X 0)\n\t__m128 Z = bt_pshufd_ps(O, 0xD2);  //\t(Z X Y 0)\n\tO = _mm_add_ps(O, Y);\n\tvsin = bt_pshufd_ps(vsin, 0x80);  //\t(S S S 0)\n\tO = _mm_add_ps(O, Z);\n\tvcos = bt_pshufd_ps(vcos, 0x80);  //\t(S S S 0)\n\n\tvsin = vsin * C;\n\tO = O * wAxis.mVec128;\n\t__m128 X = mVec128 - O;\n\n\tO = O + vsin;\n\tvcos = vcos * X;\n\tO = O + vcos;\n\n\treturn btVector3(O);\n#else\n\tbtVector3 o = wAxis * wAxis.dot(*this);\n\tbtVector3 _x = *this - o;\n\tbtVector3 _y;\n\n\t_y = wAxis.cross(*this);\n\n\treturn (o + _x * btCos(_angle) + _y * btSin(_angle));\n#endif\n}\n\nSIMD_FORCE_INLINE long btVector3::maxDot(const btVector3* array, long array_count, btScalar& dotOut) const\n{\n#if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)\n#if defined _WIN32 || defined(BT_USE_SSE)\n\tconst long scalar_cutoff = 10;\n\tlong _maxdot_large(const float* array, const float* vec, unsigned long array_count, float* dotOut);\n#elif defined BT_USE_NEON\n\tconst long scalar_cutoff = 4;\n\textern long (*_maxdot_large)(const float* array, const float* vec, unsigned long array_count, float* dotOut);\n#endif\n\tif (array_count < scalar_cutoff)\n#endif\n\t{\n\t\tbtScalar maxDot1 = -SIMD_INFINITY;\n\t\tint i = 0;\n\t\tint ptIndex = -1;\n\t\tfor (i = 0; i < array_count; i++)\n\t\t{\n\t\t\tbtScalar dot = array[i].dot(*this);\n\n\t\t\tif (dot > maxDot1)\n\t\t\t{\n\t\t\t\tmaxDot1 = dot;\n\t\t\t\tptIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tdotOut = maxDot1;\n\t\treturn ptIndex;\n\t}\n#if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)\n\treturn _maxdot_large((float*)array, (float*)&m_floats[0], array_count, &dotOut);\n#endif\n}\n\nSIMD_FORCE_INLINE long btVector3::minDot(const btVector3* array, long array_count, btScalar& dotOut) const\n{\n#if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)\n#if defined BT_USE_SSE\n\tconst long scalar_cutoff = 10;\n\tlong _mindot_large(const float* array, const float* vec, unsigned long array_count, float* dotOut);\n#elif defined BT_USE_NEON\n\tconst long scalar_cutoff = 4;\n\textern long (*_mindot_large)(const float* array, const float* vec, unsigned long array_count, float* dotOut);\n#else\n#error unhandled arch!\n#endif\n\n\tif (array_count < scalar_cutoff)\n#endif\n\t{\n\t\tbtScalar minDot = SIMD_INFINITY;\n\t\tint i = 0;\n\t\tint ptIndex = -1;\n\n\t\tfor (i = 0; i < array_count; i++)\n\t\t{\n\t\t\tbtScalar dot = array[i].dot(*this);\n\n\t\t\tif (dot < minDot)\n\t\t\t{\n\t\t\t\tminDot = dot;\n\t\t\t\tptIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tdotOut = minDot;\n\n\t\treturn ptIndex;\n\t}\n#if (defined BT_USE_SSE && defined BT_USE_SIMD_VECTOR3 && defined BT_USE_SSE_IN_API) || defined(BT_USE_NEON)\n\treturn _mindot_large((float*)array, (float*)&m_floats[0], array_count, &dotOut);\n#endif  //BT_USE_SIMD_VECTOR3\n}\n\nclass btVector4 : public btVector3\n{\npublic:\n\tSIMD_FORCE_INLINE btVector4() {}\n\n\tSIMD_FORCE_INLINE btVector4(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w)\n\t\t: btVector3(_x, _y, _z)\n\t{\n\t\tm_floats[3] = _w;\n\t}\n\n#if (defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)) || defined(BT_USE_NEON)\n\tSIMD_FORCE_INLINE btVector4(const btSimdFloat4 vec)\n\t{\n\t\tmVec128 = vec;\n\t}\n\n\tSIMD_FORCE_INLINE btVector4(const btVector3& rhs)\n\t{\n\t\tmVec128 = rhs.mVec128;\n\t}\n\n\tSIMD_FORCE_INLINE btVector4&\n\toperator=(const btVector4& v)\n\t{\n\t\tmVec128 = v.mVec128;\n\t\treturn *this;\n\t}\n#endif  // #if defined (BT_USE_SSE_IN_API) || defined (BT_USE_NEON)\n\n\tSIMD_FORCE_INLINE btVector4 absolute4() const\n\t{\n#if defined BT_USE_SIMD_VECTOR3 && defined(BT_USE_SSE_IN_API) && defined(BT_USE_SSE)\n\t\treturn btVector4(_mm_and_ps(mVec128, btvAbsfMask));\n#elif defined(BT_USE_NEON)\n\t\treturn btVector4(vabsq_f32(mVec128));\n#else\n\t\treturn btVector4(\n\t\t\tbtFabs(m_floats[0]),\n\t\t\tbtFabs(m_floats[1]),\n\t\t\tbtFabs(m_floats[2]),\n\t\t\tbtFabs(m_floats[3]));\n#endif\n\t}\n\n\tbtScalar getW() const { return m_floats[3]; }\n\n\tSIMD_FORCE_INLINE int maxAxis4() const\n\t{\n\t\tint maxIndex = -1;\n\t\tbtScalar maxVal = btScalar(-BT_LARGE_FLOAT);\n\t\tif (m_floats[0] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 0;\n\t\t\tmaxVal = m_floats[0];\n\t\t}\n\t\tif (m_floats[1] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 1;\n\t\t\tmaxVal = m_floats[1];\n\t\t}\n\t\tif (m_floats[2] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 2;\n\t\t\tmaxVal = m_floats[2];\n\t\t}\n\t\tif (m_floats[3] > maxVal)\n\t\t{\n\t\t\tmaxIndex = 3;\n\t\t}\n\n\t\treturn maxIndex;\n\t}\n\n\tSIMD_FORCE_INLINE int minAxis4() const\n\t{\n\t\tint minIndex = -1;\n\t\tbtScalar minVal = btScalar(BT_LARGE_FLOAT);\n\t\tif (m_floats[0] < minVal)\n\t\t{\n\t\t\tminIndex = 0;\n\t\t\tminVal = m_floats[0];\n\t\t}\n\t\tif (m_floats[1] < minVal)\n\t\t{\n\t\t\tminIndex = 1;\n\t\t\tminVal = m_floats[1];\n\t\t}\n\t\tif (m_floats[2] < minVal)\n\t\t{\n\t\t\tminIndex = 2;\n\t\t\tminVal = m_floats[2];\n\t\t}\n\t\tif (m_floats[3] < minVal)\n\t\t{\n\t\t\tminIndex = 3;\n\t\t}\n\n\t\treturn minIndex;\n\t}\n\n\tSIMD_FORCE_INLINE int closestAxis4() const\n\t{\n\t\treturn absolute4().maxAxis4();\n\t}\n\n\t/**@brief Set x,y,z and zero w \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   */\n\n\t/*\t\tvoid getValue(btScalar *m) const \n\t\t{\n\t\t\tm[0] = m_floats[0];\n\t\t\tm[1] = m_floats[1];\n\t\t\tm[2] =m_floats[2];\n\t\t}\n*/\n\t/**@brief Set the values \n   * @param x Value of x\n   * @param y Value of y\n   * @param z Value of z\n   * @param w Value of w\n   */\n\tSIMD_FORCE_INLINE void setValue(const btScalar& _x, const btScalar& _y, const btScalar& _z, const btScalar& _w)\n\t{\n\t\tm_floats[0] = _x;\n\t\tm_floats[1] = _y;\n\t\tm_floats[2] = _z;\n\t\tm_floats[3] = _w;\n\t}\n};\n\n///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void btSwapScalarEndian(const btScalar& sourceVal, btScalar& destVal)\n{\n#ifdef BT_USE_DOUBLE_PRECISION\n\tunsigned char* dest = (unsigned char*)&destVal;\n\tconst unsigned char* src = (const unsigned char*)&sourceVal;\n\tdest[0] = src[7];\n\tdest[1] = src[6];\n\tdest[2] = src[5];\n\tdest[3] = src[4];\n\tdest[4] = src[3];\n\tdest[5] = src[2];\n\tdest[6] = src[1];\n\tdest[7] = src[0];\n#else\n\tunsigned char* dest = (unsigned char*)&destVal;\n\tconst unsigned char* src = (const unsigned char*)&sourceVal;\n\tdest[0] = src[3];\n\tdest[1] = src[2];\n\tdest[2] = src[1];\n\tdest[3] = src[0];\n#endif  //BT_USE_DOUBLE_PRECISION\n}\n///btSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void btSwapVector3Endian(const btVector3& sourceVec, btVector3& destVec)\n{\n\tfor (int i = 0; i < 4; i++)\n\t{\n\t\tbtSwapScalarEndian(sourceVec[i], destVec[i]);\n\t}\n}\n\n///btUnSwapVector3Endian swaps vector endianness, useful for network and cross-platform serialization\nSIMD_FORCE_INLINE void btUnSwapVector3Endian(btVector3& vector)\n{\n\tbtVector3 swappedVec;\n\tfor (int i = 0; i < 4; i++)\n\t{\n\t\tbtSwapScalarEndian(vector[i], swappedVec[i]);\n\t}\n\tvector = swappedVec;\n}\n\ntemplate <class T>\nSIMD_FORCE_INLINE void btPlaneSpace1(const T& n, T& p, T& q)\n{\n\tif (btFabs(n[2]) > SIMDSQRT12)\n\t{\n\t\t// choose p in y-z plane\n\t\tbtScalar a = n[1] * n[1] + n[2] * n[2];\n\t\tbtScalar k = btRecipSqrt(a);\n\t\tp[0] = 0;\n\t\tp[1] = -n[2] * k;\n\t\tp[2] = n[1] * k;\n\t\t// set q = n x p\n\t\tq[0] = a * k;\n\t\tq[1] = -n[0] * p[2];\n\t\tq[2] = n[0] * p[1];\n\t}\n\telse\n\t{\n\t\t// choose p in x-y plane\n\t\tbtScalar a = n[0] * n[0] + n[1] * n[1];\n\t\tbtScalar k = btRecipSqrt(a);\n\t\tp[0] = -n[1] * k;\n\t\tp[1] = n[0] * k;\n\t\tp[2] = 0;\n\t\t// set q = n x p\n\t\tq[0] = -n[2] * p[1];\n\t\tq[1] = n[2] * p[0];\n\t\tq[2] = a * k;\n\t}\n}\n\nstruct btVector3FloatData\n{\n\tfloat m_floats[4];\n};\n\nstruct btVector3DoubleData\n{\n\tdouble m_floats[4];\n};\n\nSIMD_FORCE_INLINE void btVector3::serializeFloat(struct btVector3FloatData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = float(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btVector3::deSerializeFloat(const struct btVector3FloatData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btVector3::serializeDouble(struct btVector3DoubleData& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = double(m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btVector3::deSerializeDouble(const struct btVector3DoubleData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = btScalar(dataIn.m_floats[i]);\n}\n\nSIMD_FORCE_INLINE void btVector3::serialize(struct btVector3Data& dataOut) const\n{\n\t///could also do a memcpy, check if it is worth it\n\tfor (int i = 0; i < 4; i++)\n\t\tdataOut.m_floats[i] = m_floats[i];\n}\n\nSIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3FloatData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = (btScalar)dataIn.m_floats[i];\n}\n\nSIMD_FORCE_INLINE void btVector3::deSerialize(const struct btVector3DoubleData& dataIn)\n{\n\tfor (int i = 0; i < 4; i++)\n\t\tm_floats[i] = (btScalar)dataIn.m_floats[i];\n}\n\n#endif  //BT_VECTOR3_H\n"
  },
  {
    "path": "libraries/bullet/btBulletCollisionCommon.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BULLET_COLLISION_COMMON_H\n#define BULLET_COLLISION_COMMON_H\n\n///Common headerfile includes for Bullet Collision Detection\n\n///Bullet's btCollisionWorld and btCollisionObject definitions\n#include \"BulletCollision/CollisionDispatch/btCollisionWorld.h\"\n#include \"BulletCollision/CollisionDispatch/btCollisionObject.h\"\n\n///Collision Shapes\n#include \"BulletCollision/CollisionShapes/btBoxShape.h\"\n#include \"BulletCollision/CollisionShapes/btSphereShape.h\"\n#include \"BulletCollision/CollisionShapes/btCapsuleShape.h\"\n#include \"BulletCollision/CollisionShapes/btCylinderShape.h\"\n#include \"BulletCollision/CollisionShapes/btConeShape.h\"\n#include \"BulletCollision/CollisionShapes/btStaticPlaneShape.h\"\n#include \"BulletCollision/CollisionShapes/btConvexHullShape.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleMesh.h\"\n#include \"BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h\"\n#include \"BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h\"\n#include \"BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleMeshShape.h\"\n#include \"BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h\"\n#include \"BulletCollision/CollisionShapes/btCompoundShape.h\"\n#include \"BulletCollision/CollisionShapes/btTetrahedronShape.h\"\n#include \"BulletCollision/CollisionShapes/btEmptyShape.h\"\n#include \"BulletCollision/CollisionShapes/btMultiSphereShape.h\"\n#include \"BulletCollision/CollisionShapes/btUniformScalingShape.h\"\n\n///Narrowphase Collision Detector\n#include \"BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h\"\n\n//#include \"BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h\"\n#include \"BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h\"\n\n///Dispatching and generation of collision pairs (broadphase)\n#include \"BulletCollision/CollisionDispatch/btCollisionDispatcher.h\"\n#include \"BulletCollision/BroadphaseCollision/btSimpleBroadphase.h\"\n#include \"BulletCollision/BroadphaseCollision/btAxisSweep3.h\"\n#include \"BulletCollision/BroadphaseCollision/btDbvtBroadphase.h\"\n\n///Math library & Utils\n#include \"LinearMath/btQuaternion.h\"\n#include \"LinearMath/btTransform.h\"\n#include \"LinearMath/btDefaultMotionState.h\"\n#include \"LinearMath/btQuickprof.h\"\n#include \"LinearMath/btIDebugDraw.h\"\n#include \"LinearMath/btSerializer.h\"\n\n#endif  //BULLET_COLLISION_COMMON_H\n"
  },
  {
    "path": "libraries/bullet/btBulletDynamicsCommon.h",
    "content": "/*\nBullet Continuous Collision Detection and Physics Library\nCopyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/\n\nThis software is provided 'as-is', without any express or implied warranty.\nIn no event will the authors be held liable for any damages arising from the use of this software.\nPermission is granted to anyone to use this software for any purpose, \nincluding commercial applications, and to alter it and redistribute it freely, \nsubject to the following restrictions:\n\n1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.\n2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.\n3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef BULLET_DYNAMICS_COMMON_H\n#define BULLET_DYNAMICS_COMMON_H\n\n///Common headerfile includes for Bullet Dynamics, including Collision Detection\n#include \"btBulletCollisionCommon.h\"\n\n#include \"BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h\"\n\n#include \"BulletDynamics/Dynamics/btSimpleDynamicsWorld.h\"\n#include \"BulletDynamics/Dynamics/btRigidBody.h\"\n\n#include \"BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btHingeConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btConeTwistConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btSliderConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btUniversalConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btHinge2Constraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btGearConstraint.h\"\n#include \"BulletDynamics/ConstraintSolver/btFixedConstraint.h\"\n\n#include \"BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h\"\n\n///Vehicle simulation, with wheel contact simulated by raycasts\n#include \"BulletDynamics/Vehicle/btRaycastVehicle.h\"\n\n#endif  //BULLET_DYNAMICS_COMMON_H\n"
  },
  {
    "path": "libraries/curl/curl.h",
    "content": "#ifndef CURLINC_CURL_H\n#define CURLINC_CURL_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n/*\n * If you have libcurl problems, all docs and details are found here:\n *   https://curl.se/libcurl/\n *\n * curl-library mailing list subscription and unsubscription web interface:\n *   https://cool.haxx.se/mailman/listinfo/curl-library/\n */\n\n#ifdef CURL_NO_OLDIES\n#define CURL_STRICTER\n#endif\n\n#include \"curlver.h\"         /* libcurl version defines   */\n#include \"system.h\"          /* determine things run-time */\n\n/*\n * Define CURL_WIN32 when build target is Win32 API\n */\n\n#if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) &&        \\\n  !defined(__SYMBIAN32__)\n#define CURL_WIN32\n#endif\n\n#include <stdio.h>\n#include <limits.h>\n\n#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)\n/* Needed for __FreeBSD_version symbol definition */\n#include <osreldate.h>\n#endif\n\n/* The include stuff here below is mainly for time_t! */\n#include <sys/types.h>\n#include <time.h>\n\n#if defined(CURL_WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)\n#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \\\n      defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))\n/* The check above prevents the winsock2 inclusion if winsock.h already was\n   included, since they can't co-exist without problems */\n#include <winsock2.h>\n#include <ws2tcpip.h>\n#endif\n#endif\n\n/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish\n   libc5-based Linux systems. Only include it on systems that are known to\n   require it! */\n#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \\\n    defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \\\n    defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \\\n    defined(__CYGWIN__) || defined(AMIGA) || \\\n   (defined(__FreeBSD_version) && (__FreeBSD_version < 800000))\n#include <sys/select.h>\n#endif\n\n#if !defined(CURL_WIN32) && !defined(_WIN32_WCE)\n#include <sys/socket.h>\n#endif\n\n#if !defined(CURL_WIN32) && !defined(__WATCOMC__) && !defined(__VXWORKS__)\n#include <sys/time.h>\n#endif\n\n#ifdef __BEOS__\n#include <support/SupportDefs.h>\n#endif\n\n/* Compatibility for non-Clang compilers */\n#ifndef __has_declspec_attribute\n#  define __has_declspec_attribute(x) 0\n#endif\n\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\n#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)\ntypedef struct Curl_easy CURL;\ntypedef struct Curl_share CURLSH;\n#else\ntypedef void CURL;\ntypedef void CURLSH;\n#endif\n\n/*\n * libcurl external API function linkage decorations.\n */\n\n#ifdef CURL_STATICLIB\n#  define CURL_EXTERN\n#elif defined(CURL_WIN32) || defined(__SYMBIAN32__) || \\\n     (__has_declspec_attribute(dllexport) && \\\n      __has_declspec_attribute(dllimport))\n#  if defined(BUILDING_LIBCURL)\n#    define CURL_EXTERN  __declspec(dllexport)\n#  else\n#    define CURL_EXTERN  __declspec(dllimport)\n#  endif\n#elif defined(BUILDING_LIBCURL) && defined(CURL_HIDDEN_SYMBOLS)\n#  define CURL_EXTERN CURL_EXTERN_SYMBOL\n#else\n#  define CURL_EXTERN\n#endif\n\n#ifndef curl_socket_typedef\n/* socket typedef */\n#if defined(CURL_WIN32) && !defined(__LWIP_OPT_H__) && !defined(LWIP_HDR_OPT_H)\ntypedef SOCKET curl_socket_t;\n#define CURL_SOCKET_BAD INVALID_SOCKET\n#else\ntypedef int curl_socket_t;\n#define CURL_SOCKET_BAD -1\n#endif\n#define curl_socket_typedef\n#endif /* curl_socket_typedef */\n\n/* enum for the different supported SSL backends */\ntypedef enum {\n  CURLSSLBACKEND_NONE = 0,\n  CURLSSLBACKEND_OPENSSL = 1,\n  CURLSSLBACKEND_GNUTLS = 2,\n  CURLSSLBACKEND_NSS = 3,\n  CURLSSLBACKEND_OBSOLETE4 = 4,  /* Was QSOSSL. */\n  CURLSSLBACKEND_GSKIT = 5,\n  CURLSSLBACKEND_POLARSSL = 6,\n  CURLSSLBACKEND_WOLFSSL = 7,\n  CURLSSLBACKEND_SCHANNEL = 8,\n  CURLSSLBACKEND_SECURETRANSPORT = 9,\n  CURLSSLBACKEND_AXTLS = 10, /* never used since 7.63.0 */\n  CURLSSLBACKEND_MBEDTLS = 11,\n  CURLSSLBACKEND_MESALINK = 12,\n  CURLSSLBACKEND_BEARSSL = 13,\n  CURLSSLBACKEND_RUSTLS = 14\n} curl_sslbackend;\n\n/* aliases for library clones and renames */\n#define CURLSSLBACKEND_LIBRESSL CURLSSLBACKEND_OPENSSL\n#define CURLSSLBACKEND_BORINGSSL CURLSSLBACKEND_OPENSSL\n\n/* deprecated names: */\n#define CURLSSLBACKEND_CYASSL CURLSSLBACKEND_WOLFSSL\n#define CURLSSLBACKEND_DARWINSSL CURLSSLBACKEND_SECURETRANSPORT\n\nstruct curl_httppost {\n  struct curl_httppost *next;       /* next entry in the list */\n  char *name;                       /* pointer to allocated name */\n  long namelength;                  /* length of name length */\n  char *contents;                   /* pointer to allocated data contents */\n  long contentslength;              /* length of contents field, see also\n                                       CURL_HTTPPOST_LARGE */\n  char *buffer;                     /* pointer to allocated buffer contents */\n  long bufferlength;                /* length of buffer field */\n  char *contenttype;                /* Content-Type */\n  struct curl_slist *contentheader; /* list of extra headers for this form */\n  struct curl_httppost *more;       /* if one field name has more than one\n                                       file, this link should link to following\n                                       files */\n  long flags;                       /* as defined below */\n\n/* specified content is a file name */\n#define CURL_HTTPPOST_FILENAME (1<<0)\n/* specified content is a file name */\n#define CURL_HTTPPOST_READFILE (1<<1)\n/* name is only stored pointer do not free in formfree */\n#define CURL_HTTPPOST_PTRNAME (1<<2)\n/* contents is only stored pointer do not free in formfree */\n#define CURL_HTTPPOST_PTRCONTENTS (1<<3)\n/* upload file from buffer */\n#define CURL_HTTPPOST_BUFFER (1<<4)\n/* upload file from pointer contents */\n#define CURL_HTTPPOST_PTRBUFFER (1<<5)\n/* upload file contents by using the regular read callback to get the data and\n   pass the given pointer as custom pointer */\n#define CURL_HTTPPOST_CALLBACK (1<<6)\n/* use size in 'contentlen', added in 7.46.0 */\n#define CURL_HTTPPOST_LARGE (1<<7)\n\n  char *showfilename;               /* The file name to show. If not set, the\n                                       actual file name will be used (if this\n                                       is a file part) */\n  void *userp;                      /* custom pointer used for\n                                       HTTPPOST_CALLBACK posts */\n  curl_off_t contentlen;            /* alternative length of contents\n                                       field. Used if CURL_HTTPPOST_LARGE is\n                                       set. Added in 7.46.0 */\n};\n\n\n/* This is a return code for the progress callback that, when returned, will\n   signal libcurl to continue executing the default progress function */\n#define CURL_PROGRESSFUNC_CONTINUE 0x10000001\n\n/* This is the CURLOPT_PROGRESSFUNCTION callback prototype. It is now\n   considered deprecated but was the only choice up until 7.31.0 */\ntypedef int (*curl_progress_callback)(void *clientp,\n                                      double dltotal,\n                                      double dlnow,\n                                      double ultotal,\n                                      double ulnow);\n\n/* This is the CURLOPT_XFERINFOFUNCTION callback prototype. It was introduced\n   in 7.32.0, avoids the use of floating point numbers and provides more\n   detailed information. */\ntypedef int (*curl_xferinfo_callback)(void *clientp,\n                                      curl_off_t dltotal,\n                                      curl_off_t dlnow,\n                                      curl_off_t ultotal,\n                                      curl_off_t ulnow);\n\n#ifndef CURL_MAX_READ_SIZE\n  /* The maximum receive buffer size configurable via CURLOPT_BUFFERSIZE. */\n#define CURL_MAX_READ_SIZE 524288\n#endif\n\n#ifndef CURL_MAX_WRITE_SIZE\n  /* Tests have proven that 20K is a very bad buffer size for uploads on\n     Windows, while 16K for some odd reason performed a lot better.\n     We do the ifndef check to allow this value to easier be changed at build\n     time for those who feel adventurous. The practical minimum is about\n     400 bytes since libcurl uses a buffer of this size as a scratch area\n     (unrelated to network send operations). */\n#define CURL_MAX_WRITE_SIZE 16384\n#endif\n\n#ifndef CURL_MAX_HTTP_HEADER\n/* The only reason to have a max limit for this is to avoid the risk of a bad\n   server feeding libcurl with a never-ending header that will cause reallocs\n   infinitely */\n#define CURL_MAX_HTTP_HEADER (100*1024)\n#endif\n\n/* This is a magic return code for the write callback that, when returned,\n   will signal libcurl to pause receiving on the current transfer. */\n#define CURL_WRITEFUNC_PAUSE 0x10000001\n\ntypedef size_t (*curl_write_callback)(char *buffer,\n                                      size_t size,\n                                      size_t nitems,\n                                      void *outstream);\n\n/* This callback will be called when a new resolver request is made */\ntypedef int (*curl_resolver_start_callback)(void *resolver_state,\n                                            void *reserved, void *userdata);\n\n/* enumeration of file types */\ntypedef enum {\n  CURLFILETYPE_FILE = 0,\n  CURLFILETYPE_DIRECTORY,\n  CURLFILETYPE_SYMLINK,\n  CURLFILETYPE_DEVICE_BLOCK,\n  CURLFILETYPE_DEVICE_CHAR,\n  CURLFILETYPE_NAMEDPIPE,\n  CURLFILETYPE_SOCKET,\n  CURLFILETYPE_DOOR, /* is possible only on Sun Solaris now */\n\n  CURLFILETYPE_UNKNOWN /* should never occur */\n} curlfiletype;\n\n#define CURLFINFOFLAG_KNOWN_FILENAME    (1<<0)\n#define CURLFINFOFLAG_KNOWN_FILETYPE    (1<<1)\n#define CURLFINFOFLAG_KNOWN_TIME        (1<<2)\n#define CURLFINFOFLAG_KNOWN_PERM        (1<<3)\n#define CURLFINFOFLAG_KNOWN_UID         (1<<4)\n#define CURLFINFOFLAG_KNOWN_GID         (1<<5)\n#define CURLFINFOFLAG_KNOWN_SIZE        (1<<6)\n#define CURLFINFOFLAG_KNOWN_HLINKCOUNT  (1<<7)\n\n/* Information about a single file, used when doing FTP wildcard matching */\nstruct curl_fileinfo {\n  char *filename;\n  curlfiletype filetype;\n  time_t time; /* always zero! */\n  unsigned int perm;\n  int uid;\n  int gid;\n  curl_off_t size;\n  long int hardlinks;\n\n  struct {\n    /* If some of these fields is not NULL, it is a pointer to b_data. */\n    char *time;\n    char *perm;\n    char *user;\n    char *group;\n    char *target; /* pointer to the target filename of a symlink */\n  } strings;\n\n  unsigned int flags;\n\n  /* used internally */\n  char *b_data;\n  size_t b_size;\n  size_t b_used;\n};\n\n/* return codes for CURLOPT_CHUNK_BGN_FUNCTION */\n#define CURL_CHUNK_BGN_FUNC_OK      0\n#define CURL_CHUNK_BGN_FUNC_FAIL    1 /* tell the lib to end the task */\n#define CURL_CHUNK_BGN_FUNC_SKIP    2 /* skip this chunk over */\n\n/* if splitting of data transfer is enabled, this callback is called before\n   download of an individual chunk started. Note that parameter \"remains\" works\n   only for FTP wildcard downloading (for now), otherwise is not used */\ntypedef long (*curl_chunk_bgn_callback)(const void *transfer_info,\n                                        void *ptr,\n                                        int remains);\n\n/* return codes for CURLOPT_CHUNK_END_FUNCTION */\n#define CURL_CHUNK_END_FUNC_OK      0\n#define CURL_CHUNK_END_FUNC_FAIL    1 /* tell the lib to end the task */\n\n/* If splitting of data transfer is enabled this callback is called after\n   download of an individual chunk finished.\n   Note! After this callback was set then it have to be called FOR ALL chunks.\n   Even if downloading of this chunk was skipped in CHUNK_BGN_FUNC.\n   This is the reason why we don't need \"transfer_info\" parameter in this\n   callback and we are not interested in \"remains\" parameter too. */\ntypedef long (*curl_chunk_end_callback)(void *ptr);\n\n/* return codes for FNMATCHFUNCTION */\n#define CURL_FNMATCHFUNC_MATCH    0 /* string corresponds to the pattern */\n#define CURL_FNMATCHFUNC_NOMATCH  1 /* pattern doesn't match the string */\n#define CURL_FNMATCHFUNC_FAIL     2 /* an error occurred */\n\n/* callback type for wildcard downloading pattern matching. If the\n   string matches the pattern, return CURL_FNMATCHFUNC_MATCH value, etc. */\ntypedef int (*curl_fnmatch_callback)(void *ptr,\n                                     const char *pattern,\n                                     const char *string);\n\n/* These are the return codes for the seek callbacks */\n#define CURL_SEEKFUNC_OK       0\n#define CURL_SEEKFUNC_FAIL     1 /* fail the entire transfer */\n#define CURL_SEEKFUNC_CANTSEEK 2 /* tell libcurl seeking can't be done, so\n                                    libcurl might try other means instead */\ntypedef int (*curl_seek_callback)(void *instream,\n                                  curl_off_t offset,\n                                  int origin); /* 'whence' */\n\n/* This is a return code for the read callback that, when returned, will\n   signal libcurl to immediately abort the current transfer. */\n#define CURL_READFUNC_ABORT 0x10000000\n/* This is a return code for the read callback that, when returned, will\n   signal libcurl to pause sending data on the current transfer. */\n#define CURL_READFUNC_PAUSE 0x10000001\n\n/* Return code for when the trailing headers' callback has terminated\n   without any errors*/\n#define CURL_TRAILERFUNC_OK 0\n/* Return code for when was an error in the trailing header's list and we\n  want to abort the request */\n#define CURL_TRAILERFUNC_ABORT 1\n\ntypedef size_t (*curl_read_callback)(char *buffer,\n                                      size_t size,\n                                      size_t nitems,\n                                      void *instream);\n\ntypedef int (*curl_trailer_callback)(struct curl_slist **list,\n                                      void *userdata);\n\ntypedef enum {\n  CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */\n  CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */\n  CURLSOCKTYPE_LAST    /* never use */\n} curlsocktype;\n\n/* The return code from the sockopt_callback can signal information back\n   to libcurl: */\n#define CURL_SOCKOPT_OK 0\n#define CURL_SOCKOPT_ERROR 1 /* causes libcurl to abort and return\n                                CURLE_ABORTED_BY_CALLBACK */\n#define CURL_SOCKOPT_ALREADY_CONNECTED 2\n\ntypedef int (*curl_sockopt_callback)(void *clientp,\n                                     curl_socket_t curlfd,\n                                     curlsocktype purpose);\n\nstruct curl_sockaddr {\n  int family;\n  int socktype;\n  int protocol;\n  unsigned int addrlen; /* addrlen was a socklen_t type before 7.18.0 but it\n                           turned really ugly and painful on the systems that\n                           lack this type */\n  struct sockaddr addr;\n};\n\ntypedef curl_socket_t\n(*curl_opensocket_callback)(void *clientp,\n                            curlsocktype purpose,\n                            struct curl_sockaddr *address);\n\ntypedef int\n(*curl_closesocket_callback)(void *clientp, curl_socket_t item);\n\ntypedef enum {\n  CURLIOE_OK,            /* I/O operation successful */\n  CURLIOE_UNKNOWNCMD,    /* command was unknown to callback */\n  CURLIOE_FAILRESTART,   /* failed to restart the read */\n  CURLIOE_LAST           /* never use */\n} curlioerr;\n\ntypedef enum {\n  CURLIOCMD_NOP,         /* no operation */\n  CURLIOCMD_RESTARTREAD, /* restart the read stream from start */\n  CURLIOCMD_LAST         /* never use */\n} curliocmd;\n\ntypedef curlioerr (*curl_ioctl_callback)(CURL *handle,\n                                         int cmd,\n                                         void *clientp);\n\n#ifndef CURL_DID_MEMORY_FUNC_TYPEDEFS\n/*\n * The following typedef's are signatures of malloc, free, realloc, strdup and\n * calloc respectively.  Function pointers of these types can be passed to the\n * curl_global_init_mem() function to set user defined memory management\n * callback routines.\n */\ntypedef void *(*curl_malloc_callback)(size_t size);\ntypedef void (*curl_free_callback)(void *ptr);\ntypedef void *(*curl_realloc_callback)(void *ptr, size_t size);\ntypedef char *(*curl_strdup_callback)(const char *str);\ntypedef void *(*curl_calloc_callback)(size_t nmemb, size_t size);\n\n#define CURL_DID_MEMORY_FUNC_TYPEDEFS\n#endif\n\n/* the kind of data that is passed to information_callback*/\ntypedef enum {\n  CURLINFO_TEXT = 0,\n  CURLINFO_HEADER_IN,    /* 1 */\n  CURLINFO_HEADER_OUT,   /* 2 */\n  CURLINFO_DATA_IN,      /* 3 */\n  CURLINFO_DATA_OUT,     /* 4 */\n  CURLINFO_SSL_DATA_IN,  /* 5 */\n  CURLINFO_SSL_DATA_OUT, /* 6 */\n  CURLINFO_END\n} curl_infotype;\n\ntypedef int (*curl_debug_callback)\n       (CURL *handle,      /* the handle/transfer this concerns */\n        curl_infotype type, /* what kind of data */\n        char *data,        /* points to the data */\n        size_t size,       /* size of the data pointed to */\n        void *userptr);    /* whatever the user please */\n\n/* All possible error codes from all sorts of curl functions. Future versions\n   may return other values, stay prepared.\n\n   Always add new return codes last. Never *EVER* remove any. The return\n   codes must remain the same!\n */\n\ntypedef enum {\n  CURLE_OK = 0,\n  CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */\n  CURLE_FAILED_INIT,             /* 2 */\n  CURLE_URL_MALFORMAT,           /* 3 */\n  CURLE_NOT_BUILT_IN,            /* 4 - [was obsoleted in August 2007 for\n                                    7.17.0, reused in April 2011 for 7.21.5] */\n  CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */\n  CURLE_COULDNT_RESOLVE_HOST,    /* 6 */\n  CURLE_COULDNT_CONNECT,         /* 7 */\n  CURLE_WEIRD_SERVER_REPLY,      /* 8 */\n  CURLE_REMOTE_ACCESS_DENIED,    /* 9 a service was denied by the server\n                                    due to lack of access - when login fails\n                                    this is not returned. */\n  CURLE_FTP_ACCEPT_FAILED,       /* 10 - [was obsoleted in April 2006 for\n                                    7.15.4, reused in Dec 2011 for 7.24.0]*/\n  CURLE_FTP_WEIRD_PASS_REPLY,    /* 11 */\n  CURLE_FTP_ACCEPT_TIMEOUT,      /* 12 - timeout occurred accepting server\n                                    [was obsoleted in August 2007 for 7.17.0,\n                                    reused in Dec 2011 for 7.24.0]*/\n  CURLE_FTP_WEIRD_PASV_REPLY,    /* 13 */\n  CURLE_FTP_WEIRD_227_FORMAT,    /* 14 */\n  CURLE_FTP_CANT_GET_HOST,       /* 15 */\n  CURLE_HTTP2,                   /* 16 - A problem in the http2 framing layer.\n                                    [was obsoleted in August 2007 for 7.17.0,\n                                    reused in July 2014 for 7.38.0] */\n  CURLE_FTP_COULDNT_SET_TYPE,    /* 17 */\n  CURLE_PARTIAL_FILE,            /* 18 */\n  CURLE_FTP_COULDNT_RETR_FILE,   /* 19 */\n  CURLE_OBSOLETE20,              /* 20 - NOT USED */\n  CURLE_QUOTE_ERROR,             /* 21 - quote command failure */\n  CURLE_HTTP_RETURNED_ERROR,     /* 22 */\n  CURLE_WRITE_ERROR,             /* 23 */\n  CURLE_OBSOLETE24,              /* 24 - NOT USED */\n  CURLE_UPLOAD_FAILED,           /* 25 - failed upload \"command\" */\n  CURLE_READ_ERROR,              /* 26 - couldn't open/read from file */\n  CURLE_OUT_OF_MEMORY,           /* 27 */\n  /* Note: CURLE_OUT_OF_MEMORY may sometimes indicate a conversion error\n           instead of a memory allocation error if CURL_DOES_CONVERSIONS\n           is defined\n  */\n  CURLE_OPERATION_TIMEDOUT,      /* 28 - the timeout time was reached */\n  CURLE_OBSOLETE29,              /* 29 - NOT USED */\n  CURLE_FTP_PORT_FAILED,         /* 30 - FTP PORT operation failed */\n  CURLE_FTP_COULDNT_USE_REST,    /* 31 - the REST command failed */\n  CURLE_OBSOLETE32,              /* 32 - NOT USED */\n  CURLE_RANGE_ERROR,             /* 33 - RANGE \"command\" didn't work */\n  CURLE_HTTP_POST_ERROR,         /* 34 */\n  CURLE_SSL_CONNECT_ERROR,       /* 35 - wrong when connecting with SSL */\n  CURLE_BAD_DOWNLOAD_RESUME,     /* 36 - couldn't resume download */\n  CURLE_FILE_COULDNT_READ_FILE,  /* 37 */\n  CURLE_LDAP_CANNOT_BIND,        /* 38 */\n  CURLE_LDAP_SEARCH_FAILED,      /* 39 */\n  CURLE_OBSOLETE40,              /* 40 - NOT USED */\n  CURLE_FUNCTION_NOT_FOUND,      /* 41 - NOT USED starting with 7.53.0 */\n  CURLE_ABORTED_BY_CALLBACK,     /* 42 */\n  CURLE_BAD_FUNCTION_ARGUMENT,   /* 43 */\n  CURLE_OBSOLETE44,              /* 44 - NOT USED */\n  CURLE_INTERFACE_FAILED,        /* 45 - CURLOPT_INTERFACE failed */\n  CURLE_OBSOLETE46,              /* 46 - NOT USED */\n  CURLE_TOO_MANY_REDIRECTS,      /* 47 - catch endless re-direct loops */\n  CURLE_UNKNOWN_OPTION,          /* 48 - User specified an unknown option */\n  CURLE_TELNET_OPTION_SYNTAX,    /* 49 - Malformed telnet option */\n  CURLE_OBSOLETE50,              /* 50 - NOT USED */\n  CURLE_OBSOLETE51,              /* 51 - NOT USED */\n  CURLE_GOT_NOTHING,             /* 52 - when this is a specific error */\n  CURLE_SSL_ENGINE_NOTFOUND,     /* 53 - SSL crypto engine not found */\n  CURLE_SSL_ENGINE_SETFAILED,    /* 54 - can not set SSL crypto engine as\n                                    default */\n  CURLE_SEND_ERROR,              /* 55 - failed sending network data */\n  CURLE_RECV_ERROR,              /* 56 - failure in receiving network data */\n  CURLE_OBSOLETE57,              /* 57 - NOT IN USE */\n  CURLE_SSL_CERTPROBLEM,         /* 58 - problem with the local certificate */\n  CURLE_SSL_CIPHER,              /* 59 - couldn't use specified cipher */\n  CURLE_PEER_FAILED_VERIFICATION, /* 60 - peer's certificate or fingerprint\n                                     wasn't verified fine */\n  CURLE_BAD_CONTENT_ENCODING,    /* 61 - Unrecognized/bad encoding */\n  CURLE_LDAP_INVALID_URL,        /* 62 - Invalid LDAP URL */\n  CURLE_FILESIZE_EXCEEDED,       /* 63 - Maximum file size exceeded */\n  CURLE_USE_SSL_FAILED,          /* 64 - Requested FTP SSL level failed */\n  CURLE_SEND_FAIL_REWIND,        /* 65 - Sending the data requires a rewind\n                                    that failed */\n  CURLE_SSL_ENGINE_INITFAILED,   /* 66 - failed to initialise ENGINE */\n  CURLE_LOGIN_DENIED,            /* 67 - user, password or similar was not\n                                    accepted and we failed to login */\n  CURLE_TFTP_NOTFOUND,           /* 68 - file not found on server */\n  CURLE_TFTP_PERM,               /* 69 - permission problem on server */\n  CURLE_REMOTE_DISK_FULL,        /* 70 - out of disk space on server */\n  CURLE_TFTP_ILLEGAL,            /* 71 - Illegal TFTP operation */\n  CURLE_TFTP_UNKNOWNID,          /* 72 - Unknown transfer ID */\n  CURLE_REMOTE_FILE_EXISTS,      /* 73 - File already exists */\n  CURLE_TFTP_NOSUCHUSER,         /* 74 - No such user */\n  CURLE_CONV_FAILED,             /* 75 - conversion failed */\n  CURLE_CONV_REQD,               /* 76 - caller must register conversion\n                                    callbacks using curl_easy_setopt options\n                                    CURLOPT_CONV_FROM_NETWORK_FUNCTION,\n                                    CURLOPT_CONV_TO_NETWORK_FUNCTION, and\n                                    CURLOPT_CONV_FROM_UTF8_FUNCTION */\n  CURLE_SSL_CACERT_BADFILE,      /* 77 - could not load CACERT file, missing\n                                    or wrong format */\n  CURLE_REMOTE_FILE_NOT_FOUND,   /* 78 - remote file not found */\n  CURLE_SSH,                     /* 79 - error from the SSH layer, somewhat\n                                    generic so the error message will be of\n                                    interest when this has happened */\n\n  CURLE_SSL_SHUTDOWN_FAILED,     /* 80 - Failed to shut down the SSL\n                                    connection */\n  CURLE_AGAIN,                   /* 81 - socket is not ready for send/recv,\n                                    wait till it's ready and try again (Added\n                                    in 7.18.2) */\n  CURLE_SSL_CRL_BADFILE,         /* 82 - could not load CRL file, missing or\n                                    wrong format (Added in 7.19.0) */\n  CURLE_SSL_ISSUER_ERROR,        /* 83 - Issuer check failed.  (Added in\n                                    7.19.0) */\n  CURLE_FTP_PRET_FAILED,         /* 84 - a PRET command failed */\n  CURLE_RTSP_CSEQ_ERROR,         /* 85 - mismatch of RTSP CSeq numbers */\n  CURLE_RTSP_SESSION_ERROR,      /* 86 - mismatch of RTSP Session Ids */\n  CURLE_FTP_BAD_FILE_LIST,       /* 87 - unable to parse FTP file list */\n  CURLE_CHUNK_FAILED,            /* 88 - chunk callback reported error */\n  CURLE_NO_CONNECTION_AVAILABLE, /* 89 - No connection available, the\n                                    session will be queued */\n  CURLE_SSL_PINNEDPUBKEYNOTMATCH, /* 90 - specified pinned public key did not\n                                     match */\n  CURLE_SSL_INVALIDCERTSTATUS,   /* 91 - invalid certificate status */\n  CURLE_HTTP2_STREAM,            /* 92 - stream error in HTTP/2 framing layer\n                                    */\n  CURLE_RECURSIVE_API_CALL,      /* 93 - an api function was called from\n                                    inside a callback */\n  CURLE_AUTH_ERROR,              /* 94 - an authentication function returned an\n                                    error */\n  CURLE_HTTP3,                   /* 95 - An HTTP/3 layer problem */\n  CURLE_QUIC_CONNECT_ERROR,      /* 96 - QUIC connection error */\n  CURLE_PROXY,                   /* 97 - proxy handshake error */\n  CURLE_SSL_CLIENTCERT,          /* 98 - client-side certificate required */\n  CURL_LAST /* never use! */\n} CURLcode;\n\n#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all\n                          the obsolete stuff removed! */\n\n/* Previously obsolete error code re-used in 7.38.0 */\n#define CURLE_OBSOLETE16 CURLE_HTTP2\n\n/* Previously obsolete error codes re-used in 7.24.0 */\n#define CURLE_OBSOLETE10 CURLE_FTP_ACCEPT_FAILED\n#define CURLE_OBSOLETE12 CURLE_FTP_ACCEPT_TIMEOUT\n\n/*  compatibility with older names */\n#define CURLOPT_ENCODING CURLOPT_ACCEPT_ENCODING\n#define CURLE_FTP_WEIRD_SERVER_REPLY CURLE_WEIRD_SERVER_REPLY\n\n/* The following were added in 7.62.0 */\n#define CURLE_SSL_CACERT CURLE_PEER_FAILED_VERIFICATION\n\n/* The following were added in 7.21.5, April 2011 */\n#define CURLE_UNKNOWN_TELNET_OPTION CURLE_UNKNOWN_OPTION\n\n/* The following were added in 7.17.1 */\n/* These are scheduled to disappear by 2009 */\n#define CURLE_SSL_PEER_CERTIFICATE CURLE_PEER_FAILED_VERIFICATION\n\n/* The following were added in 7.17.0 */\n/* These are scheduled to disappear by 2009 */\n#define CURLE_OBSOLETE CURLE_OBSOLETE50 /* no one should be using this! */\n#define CURLE_BAD_PASSWORD_ENTERED CURLE_OBSOLETE46\n#define CURLE_BAD_CALLING_ORDER CURLE_OBSOLETE44\n#define CURLE_FTP_USER_PASSWORD_INCORRECT CURLE_OBSOLETE10\n#define CURLE_FTP_CANT_RECONNECT CURLE_OBSOLETE16\n#define CURLE_FTP_COULDNT_GET_SIZE CURLE_OBSOLETE32\n#define CURLE_FTP_COULDNT_SET_ASCII CURLE_OBSOLETE29\n#define CURLE_FTP_WEIRD_USER_REPLY CURLE_OBSOLETE12\n#define CURLE_FTP_WRITE_ERROR CURLE_OBSOLETE20\n#define CURLE_LIBRARY_NOT_FOUND CURLE_OBSOLETE40\n#define CURLE_MALFORMAT_USER CURLE_OBSOLETE24\n#define CURLE_SHARE_IN_USE CURLE_OBSOLETE57\n#define CURLE_URL_MALFORMAT_USER CURLE_NOT_BUILT_IN\n\n#define CURLE_FTP_ACCESS_DENIED CURLE_REMOTE_ACCESS_DENIED\n#define CURLE_FTP_COULDNT_SET_BINARY CURLE_FTP_COULDNT_SET_TYPE\n#define CURLE_FTP_QUOTE_ERROR CURLE_QUOTE_ERROR\n#define CURLE_TFTP_DISKFULL CURLE_REMOTE_DISK_FULL\n#define CURLE_TFTP_EXISTS CURLE_REMOTE_FILE_EXISTS\n#define CURLE_HTTP_RANGE_ERROR CURLE_RANGE_ERROR\n#define CURLE_FTP_SSL_FAILED CURLE_USE_SSL_FAILED\n\n/* The following were added earlier */\n\n#define CURLE_OPERATION_TIMEOUTED CURLE_OPERATION_TIMEDOUT\n\n#define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR\n#define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED\n#define CURLE_FTP_COULDNT_STOR_FILE CURLE_UPLOAD_FAILED\n\n#define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE\n#define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME\n\n/* This was the error code 50 in 7.7.3 and a few earlier versions, this\n   is no longer used by libcurl but is instead #defined here only to not\n   make programs break */\n#define CURLE_ALREADY_COMPLETE 99999\n\n/* Provide defines for really old option names */\n#define CURLOPT_FILE CURLOPT_WRITEDATA /* name changed in 7.9.7 */\n#define CURLOPT_INFILE CURLOPT_READDATA /* name changed in 7.9.7 */\n#define CURLOPT_WRITEHEADER CURLOPT_HEADERDATA\n\n/* Since long deprecated options with no code in the lib that does anything\n   with them. */\n#define CURLOPT_WRITEINFO CURLOPT_OBSOLETE40\n#define CURLOPT_CLOSEPOLICY CURLOPT_OBSOLETE72\n\n#endif /*!CURL_NO_OLDIES*/\n\n/*\n * Proxy error codes. Returned in CURLINFO_PROXY_ERROR if CURLE_PROXY was\n * return for the transfers.\n */\ntypedef enum {\n  CURLPX_OK,\n  CURLPX_BAD_ADDRESS_TYPE,\n  CURLPX_BAD_VERSION,\n  CURLPX_CLOSED,\n  CURLPX_GSSAPI,\n  CURLPX_GSSAPI_PERMSG,\n  CURLPX_GSSAPI_PROTECTION,\n  CURLPX_IDENTD,\n  CURLPX_IDENTD_DIFFER,\n  CURLPX_LONG_HOSTNAME,\n  CURLPX_LONG_PASSWD,\n  CURLPX_LONG_USER,\n  CURLPX_NO_AUTH,\n  CURLPX_RECV_ADDRESS,\n  CURLPX_RECV_AUTH,\n  CURLPX_RECV_CONNECT,\n  CURLPX_RECV_REQACK,\n  CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED,\n  CURLPX_REPLY_COMMAND_NOT_SUPPORTED,\n  CURLPX_REPLY_CONNECTION_REFUSED,\n  CURLPX_REPLY_GENERAL_SERVER_FAILURE,\n  CURLPX_REPLY_HOST_UNREACHABLE,\n  CURLPX_REPLY_NETWORK_UNREACHABLE,\n  CURLPX_REPLY_NOT_ALLOWED,\n  CURLPX_REPLY_TTL_EXPIRED,\n  CURLPX_REPLY_UNASSIGNED,\n  CURLPX_REQUEST_FAILED,\n  CURLPX_RESOLVE_HOST,\n  CURLPX_SEND_AUTH,\n  CURLPX_SEND_CONNECT,\n  CURLPX_SEND_REQUEST,\n  CURLPX_UNKNOWN_FAIL,\n  CURLPX_UNKNOWN_MODE,\n  CURLPX_USER_REJECTED,\n  CURLPX_LAST /* never use */\n} CURLproxycode;\n\n/* This prototype applies to all conversion callbacks */\ntypedef CURLcode (*curl_conv_callback)(char *buffer, size_t length);\n\ntypedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl,    /* easy handle */\n                                          void *ssl_ctx, /* actually an OpenSSL\n                                                            or WolfSSL SSL_CTX,\n                                                            or an mbedTLS\n                                                          mbedtls_ssl_config */\n                                          void *userptr);\n\ntypedef enum {\n  CURLPROXY_HTTP = 0,   /* added in 7.10, new in 7.19.4 default is to use\n                           CONNECT HTTP/1.1 */\n  CURLPROXY_HTTP_1_0 = 1,   /* added in 7.19.4, force to use CONNECT\n                               HTTP/1.0  */\n  CURLPROXY_HTTPS = 2, /* added in 7.52.0 */\n  CURLPROXY_SOCKS4 = 4, /* support added in 7.15.2, enum existed already\n                           in 7.10 */\n  CURLPROXY_SOCKS5 = 5, /* added in 7.10 */\n  CURLPROXY_SOCKS4A = 6, /* added in 7.18.0 */\n  CURLPROXY_SOCKS5_HOSTNAME = 7 /* Use the SOCKS5 protocol but pass along the\n                                   host name rather than the IP address. added\n                                   in 7.18.0 */\n} curl_proxytype;  /* this enum was added in 7.10 */\n\n/*\n * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options:\n *\n * CURLAUTH_NONE         - No HTTP authentication\n * CURLAUTH_BASIC        - HTTP Basic authentication (default)\n * CURLAUTH_DIGEST       - HTTP Digest authentication\n * CURLAUTH_NEGOTIATE    - HTTP Negotiate (SPNEGO) authentication\n * CURLAUTH_GSSNEGOTIATE - Alias for CURLAUTH_NEGOTIATE (deprecated)\n * CURLAUTH_NTLM         - HTTP NTLM authentication\n * CURLAUTH_DIGEST_IE    - HTTP Digest authentication with IE flavour\n * CURLAUTH_NTLM_WB      - HTTP NTLM authentication delegated to winbind helper\n * CURLAUTH_BEARER       - HTTP Bearer token authentication\n * CURLAUTH_ONLY         - Use together with a single other type to force no\n *                         authentication or just that single type\n * CURLAUTH_ANY          - All fine types set\n * CURLAUTH_ANYSAFE      - All fine types except Basic\n */\n\n#define CURLAUTH_NONE         ((unsigned long)0)\n#define CURLAUTH_BASIC        (((unsigned long)1)<<0)\n#define CURLAUTH_DIGEST       (((unsigned long)1)<<1)\n#define CURLAUTH_NEGOTIATE    (((unsigned long)1)<<2)\n/* Deprecated since the advent of CURLAUTH_NEGOTIATE */\n#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE\n/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */\n#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE\n#define CURLAUTH_NTLM         (((unsigned long)1)<<3)\n#define CURLAUTH_DIGEST_IE    (((unsigned long)1)<<4)\n#define CURLAUTH_NTLM_WB      (((unsigned long)1)<<5)\n#define CURLAUTH_BEARER       (((unsigned long)1)<<6)\n#define CURLAUTH_AWS_SIGV4    (((unsigned long)1)<<7)\n#define CURLAUTH_ONLY         (((unsigned long)1)<<31)\n#define CURLAUTH_ANY          (~CURLAUTH_DIGEST_IE)\n#define CURLAUTH_ANYSAFE      (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))\n\n#define CURLSSH_AUTH_ANY       ~0     /* all types supported by the server */\n#define CURLSSH_AUTH_NONE      0      /* none allowed, silly but complete */\n#define CURLSSH_AUTH_PUBLICKEY (1<<0) /* public/private key files */\n#define CURLSSH_AUTH_PASSWORD  (1<<1) /* password */\n#define CURLSSH_AUTH_HOST      (1<<2) /* host key files */\n#define CURLSSH_AUTH_KEYBOARD  (1<<3) /* keyboard interactive */\n#define CURLSSH_AUTH_AGENT     (1<<4) /* agent (ssh-agent, pageant...) */\n#define CURLSSH_AUTH_GSSAPI    (1<<5) /* gssapi (kerberos, ...) */\n#define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY\n\n#define CURLGSSAPI_DELEGATION_NONE        0      /* no delegation (default) */\n#define CURLGSSAPI_DELEGATION_POLICY_FLAG (1<<0) /* if permitted by policy */\n#define CURLGSSAPI_DELEGATION_FLAG        (1<<1) /* delegate always */\n\n#define CURL_ERROR_SIZE 256\n\nenum curl_khtype {\n  CURLKHTYPE_UNKNOWN,\n  CURLKHTYPE_RSA1,\n  CURLKHTYPE_RSA,\n  CURLKHTYPE_DSS,\n  CURLKHTYPE_ECDSA,\n  CURLKHTYPE_ED25519\n};\n\nstruct curl_khkey {\n  const char *key; /* points to a null-terminated string encoded with base64\n                      if len is zero, otherwise to the \"raw\" data */\n  size_t len;\n  enum curl_khtype keytype;\n};\n\n/* this is the set of return values expected from the curl_sshkeycallback\n   callback */\nenum curl_khstat {\n  CURLKHSTAT_FINE_ADD_TO_FILE,\n  CURLKHSTAT_FINE,\n  CURLKHSTAT_REJECT, /* reject the connection, return an error */\n  CURLKHSTAT_DEFER,  /* do not accept it, but we can't answer right now so\n                        this causes a CURLE_DEFER error but otherwise the\n                        connection will be left intact etc */\n  CURLKHSTAT_FINE_REPLACE, /* accept and replace the wrong key*/\n  CURLKHSTAT_LAST    /* not for use, only a marker for last-in-list */\n};\n\n/* this is the set of status codes pass in to the callback */\nenum curl_khmatch {\n  CURLKHMATCH_OK,       /* match */\n  CURLKHMATCH_MISMATCH, /* host found, key mismatch! */\n  CURLKHMATCH_MISSING,  /* no matching host/key found */\n  CURLKHMATCH_LAST      /* not for use, only a marker for last-in-list */\n};\n\ntypedef int\n  (*curl_sshkeycallback) (CURL *easy,     /* easy handle */\n                          const struct curl_khkey *knownkey, /* known */\n                          const struct curl_khkey *foundkey, /* found */\n                          enum curl_khmatch, /* libcurl's view on the keys */\n                          void *clientp); /* custom pointer passed from app */\n\n/* parameter for the CURLOPT_USE_SSL option */\ntypedef enum {\n  CURLUSESSL_NONE,    /* do not attempt to use SSL */\n  CURLUSESSL_TRY,     /* try using SSL, proceed anyway otherwise */\n  CURLUSESSL_CONTROL, /* SSL for the control connection or fail */\n  CURLUSESSL_ALL,     /* SSL for all communication or fail */\n  CURLUSESSL_LAST     /* not an option, never use */\n} curl_usessl;\n\n/* Definition of bits for the CURLOPT_SSL_OPTIONS argument: */\n\n/* - ALLOW_BEAST tells libcurl to allow the BEAST SSL vulnerability in the\n   name of improving interoperability with older servers. Some SSL libraries\n   have introduced work-arounds for this flaw but those work-arounds sometimes\n   make the SSL communication fail. To regain functionality with those broken\n   servers, a user can this way allow the vulnerability back. */\n#define CURLSSLOPT_ALLOW_BEAST (1<<0)\n\n/* - NO_REVOKE tells libcurl to disable certificate revocation checks for those\n   SSL backends where such behavior is present. */\n#define CURLSSLOPT_NO_REVOKE (1<<1)\n\n/* - NO_PARTIALCHAIN tells libcurl to *NOT* accept a partial certificate chain\n   if possible. The OpenSSL backend has this ability. */\n#define CURLSSLOPT_NO_PARTIALCHAIN (1<<2)\n\n/* - REVOKE_BEST_EFFORT tells libcurl to ignore certificate revocation offline\n   checks and ignore missing revocation list for those SSL backends where such\n   behavior is present. */\n#define CURLSSLOPT_REVOKE_BEST_EFFORT (1<<3)\n\n/* - CURLSSLOPT_NATIVE_CA tells libcurl to use standard certificate store of\n   operating system. Currently implemented under MS-Windows. */\n#define CURLSSLOPT_NATIVE_CA (1<<4)\n\n/* - CURLSSLOPT_AUTO_CLIENT_CERT tells libcurl to automatically locate and use\n   a client certificate for authentication. (Schannel) */\n#define CURLSSLOPT_AUTO_CLIENT_CERT (1<<5)\n\n/* The default connection attempt delay in milliseconds for happy eyeballs.\n   CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 and happy-eyeballs-timeout-ms.d document\n   this value, keep them in sync. */\n#define CURL_HET_DEFAULT 200L\n\n/* The default connection upkeep interval in milliseconds. */\n#define CURL_UPKEEP_INTERVAL_DEFAULT 60000L\n\n#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all\n                          the obsolete stuff removed! */\n\n/* Backwards compatibility with older names */\n/* These are scheduled to disappear by 2009 */\n\n#define CURLFTPSSL_NONE CURLUSESSL_NONE\n#define CURLFTPSSL_TRY CURLUSESSL_TRY\n#define CURLFTPSSL_CONTROL CURLUSESSL_CONTROL\n#define CURLFTPSSL_ALL CURLUSESSL_ALL\n#define CURLFTPSSL_LAST CURLUSESSL_LAST\n#define curl_ftpssl curl_usessl\n#endif /*!CURL_NO_OLDIES*/\n\n/* parameter for the CURLOPT_FTP_SSL_CCC option */\ntypedef enum {\n  CURLFTPSSL_CCC_NONE,    /* do not send CCC */\n  CURLFTPSSL_CCC_PASSIVE, /* Let the server initiate the shutdown */\n  CURLFTPSSL_CCC_ACTIVE,  /* Initiate the shutdown */\n  CURLFTPSSL_CCC_LAST     /* not an option, never use */\n} curl_ftpccc;\n\n/* parameter for the CURLOPT_FTPSSLAUTH option */\ntypedef enum {\n  CURLFTPAUTH_DEFAULT, /* let libcurl decide */\n  CURLFTPAUTH_SSL,     /* use \"AUTH SSL\" */\n  CURLFTPAUTH_TLS,     /* use \"AUTH TLS\" */\n  CURLFTPAUTH_LAST /* not an option, never use */\n} curl_ftpauth;\n\n/* parameter for the CURLOPT_FTP_CREATE_MISSING_DIRS option */\ntypedef enum {\n  CURLFTP_CREATE_DIR_NONE,  /* do NOT create missing dirs! */\n  CURLFTP_CREATE_DIR,       /* (FTP/SFTP) if CWD fails, try MKD and then CWD\n                               again if MKD succeeded, for SFTP this does\n                               similar magic */\n  CURLFTP_CREATE_DIR_RETRY, /* (FTP only) if CWD fails, try MKD and then CWD\n                               again even if MKD failed! */\n  CURLFTP_CREATE_DIR_LAST   /* not an option, never use */\n} curl_ftpcreatedir;\n\n/* parameter for the CURLOPT_FTP_FILEMETHOD option */\ntypedef enum {\n  CURLFTPMETHOD_DEFAULT,   /* let libcurl pick */\n  CURLFTPMETHOD_MULTICWD,  /* single CWD operation for each path part */\n  CURLFTPMETHOD_NOCWD,     /* no CWD at all */\n  CURLFTPMETHOD_SINGLECWD, /* one CWD to full dir, then work on file */\n  CURLFTPMETHOD_LAST       /* not an option, never use */\n} curl_ftpmethod;\n\n/* bitmask defines for CURLOPT_HEADEROPT */\n#define CURLHEADER_UNIFIED  0\n#define CURLHEADER_SEPARATE (1<<0)\n\n/* CURLALTSVC_* are bits for the CURLOPT_ALTSVC_CTRL option */\n#define CURLALTSVC_READONLYFILE (1<<2)\n#define CURLALTSVC_H1           (1<<3)\n#define CURLALTSVC_H2           (1<<4)\n#define CURLALTSVC_H3           (1<<5)\n\n\nstruct curl_hstsentry {\n  char *name;\n  size_t namelen;\n  unsigned int includeSubDomains:1;\n  char expire[18]; /* YYYYMMDD HH:MM:SS [null-terminated] */\n};\n\nstruct curl_index {\n  size_t index; /* the provided entry's \"index\" or count */\n  size_t total; /* total number of entries to save */\n};\n\ntypedef enum {\n  CURLSTS_OK,\n  CURLSTS_DONE,\n  CURLSTS_FAIL\n} CURLSTScode;\n\ntypedef CURLSTScode (*curl_hstsread_callback)(CURL *easy,\n                                              struct curl_hstsentry *e,\n                                              void *userp);\ntypedef CURLSTScode (*curl_hstswrite_callback)(CURL *easy,\n                                               struct curl_hstsentry *e,\n                                               struct curl_index *i,\n                                               void *userp);\n\n/* CURLHSTS_* are bits for the CURLOPT_HSTS option */\n#define CURLHSTS_ENABLE       (long)(1<<0)\n#define CURLHSTS_READONLYFILE (long)(1<<1)\n\n/* CURLPROTO_ defines are for the CURLOPT_*PROTOCOLS options */\n#define CURLPROTO_HTTP   (1<<0)\n#define CURLPROTO_HTTPS  (1<<1)\n#define CURLPROTO_FTP    (1<<2)\n#define CURLPROTO_FTPS   (1<<3)\n#define CURLPROTO_SCP    (1<<4)\n#define CURLPROTO_SFTP   (1<<5)\n#define CURLPROTO_TELNET (1<<6)\n#define CURLPROTO_LDAP   (1<<7)\n#define CURLPROTO_LDAPS  (1<<8)\n#define CURLPROTO_DICT   (1<<9)\n#define CURLPROTO_FILE   (1<<10)\n#define CURLPROTO_TFTP   (1<<11)\n#define CURLPROTO_IMAP   (1<<12)\n#define CURLPROTO_IMAPS  (1<<13)\n#define CURLPROTO_POP3   (1<<14)\n#define CURLPROTO_POP3S  (1<<15)\n#define CURLPROTO_SMTP   (1<<16)\n#define CURLPROTO_SMTPS  (1<<17)\n#define CURLPROTO_RTSP   (1<<18)\n#define CURLPROTO_RTMP   (1<<19)\n#define CURLPROTO_RTMPT  (1<<20)\n#define CURLPROTO_RTMPE  (1<<21)\n#define CURLPROTO_RTMPTE (1<<22)\n#define CURLPROTO_RTMPS  (1<<23)\n#define CURLPROTO_RTMPTS (1<<24)\n#define CURLPROTO_GOPHER (1<<25)\n#define CURLPROTO_SMB    (1<<26)\n#define CURLPROTO_SMBS   (1<<27)\n#define CURLPROTO_MQTT   (1<<28)\n#define CURLPROTO_GOPHERS (1<<29)\n#define CURLPROTO_ALL    (~0) /* enable everything */\n\n/* long may be 32 or 64 bits, but we should never depend on anything else\n   but 32 */\n#define CURLOPTTYPE_LONG          0\n#define CURLOPTTYPE_OBJECTPOINT   10000\n#define CURLOPTTYPE_FUNCTIONPOINT 20000\n#define CURLOPTTYPE_OFF_T         30000\n#define CURLOPTTYPE_BLOB          40000\n\n/* *STRINGPOINT is an alias for OBJECTPOINT to allow tools to extract the\n   string options from the header file */\n\n\n#define CURLOPT(na,t,nu) na = t + nu\n\n/* CURLOPT aliases that make no run-time difference */\n\n/* 'char *' argument to a string with a trailing zero */\n#define CURLOPTTYPE_STRINGPOINT CURLOPTTYPE_OBJECTPOINT\n\n/* 'struct curl_slist *' argument */\n#define CURLOPTTYPE_SLISTPOINT  CURLOPTTYPE_OBJECTPOINT\n\n/* 'void *' argument passed untouched to callback */\n#define CURLOPTTYPE_CBPOINT     CURLOPTTYPE_OBJECTPOINT\n\n/* 'long' argument with a set of values/bitmask */\n#define CURLOPTTYPE_VALUES      CURLOPTTYPE_LONG\n\n/*\n * All CURLOPT_* values.\n */\n\ntypedef enum {\n  /* This is the FILE * or void * the regular output should be written to. */\n  CURLOPT(CURLOPT_WRITEDATA, CURLOPTTYPE_CBPOINT, 1),\n\n  /* The full URL to get/put */\n  CURLOPT(CURLOPT_URL, CURLOPTTYPE_STRINGPOINT, 2),\n\n  /* Port number to connect to, if other than default. */\n  CURLOPT(CURLOPT_PORT, CURLOPTTYPE_LONG, 3),\n\n  /* Name of proxy to use. */\n  CURLOPT(CURLOPT_PROXY, CURLOPTTYPE_STRINGPOINT, 4),\n\n  /* \"user:password;options\" to use when fetching. */\n  CURLOPT(CURLOPT_USERPWD, CURLOPTTYPE_STRINGPOINT, 5),\n\n  /* \"user:password\" to use with proxy. */\n  CURLOPT(CURLOPT_PROXYUSERPWD, CURLOPTTYPE_STRINGPOINT, 6),\n\n  /* Range to get, specified as an ASCII string. */\n  CURLOPT(CURLOPT_RANGE, CURLOPTTYPE_STRINGPOINT, 7),\n\n  /* not used */\n\n  /* Specified file stream to upload from (use as input): */\n  CURLOPT(CURLOPT_READDATA, CURLOPTTYPE_CBPOINT, 9),\n\n  /* Buffer to receive error messages in, must be at least CURL_ERROR_SIZE\n   * bytes big. */\n  CURLOPT(CURLOPT_ERRORBUFFER, CURLOPTTYPE_OBJECTPOINT, 10),\n\n  /* Function that will be called to store the output (instead of fwrite). The\n   * parameters will use fwrite() syntax, make sure to follow them. */\n  CURLOPT(CURLOPT_WRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 11),\n\n  /* Function that will be called to read the input (instead of fread). The\n   * parameters will use fread() syntax, make sure to follow them. */\n  CURLOPT(CURLOPT_READFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 12),\n\n  /* Time-out the read operation after this amount of seconds */\n  CURLOPT(CURLOPT_TIMEOUT, CURLOPTTYPE_LONG, 13),\n\n  /* If the CURLOPT_INFILE is used, this can be used to inform libcurl about\n   * how large the file being sent really is. That allows better error\n   * checking and better verifies that the upload was successful. -1 means\n   * unknown size.\n   *\n   * For large file support, there is also a _LARGE version of the key\n   * which takes an off_t type, allowing platforms with larger off_t\n   * sizes to handle larger files.  See below for INFILESIZE_LARGE.\n   */\n  CURLOPT(CURLOPT_INFILESIZE, CURLOPTTYPE_LONG, 14),\n\n  /* POST static input fields. */\n  CURLOPT(CURLOPT_POSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 15),\n\n  /* Set the referrer page (needed by some CGIs) */\n  CURLOPT(CURLOPT_REFERER, CURLOPTTYPE_STRINGPOINT, 16),\n\n  /* Set the FTP PORT string (interface name, named or numerical IP address)\n     Use i.e '-' to use default address. */\n  CURLOPT(CURLOPT_FTPPORT, CURLOPTTYPE_STRINGPOINT, 17),\n\n  /* Set the User-Agent string (examined by some CGIs) */\n  CURLOPT(CURLOPT_USERAGENT, CURLOPTTYPE_STRINGPOINT, 18),\n\n  /* If the download receives less than \"low speed limit\" bytes/second\n   * during \"low speed time\" seconds, the operations is aborted.\n   * You could i.e if you have a pretty high speed connection, abort if\n   * it is less than 2000 bytes/sec during 20 seconds.\n   */\n\n  /* Set the \"low speed limit\" */\n  CURLOPT(CURLOPT_LOW_SPEED_LIMIT, CURLOPTTYPE_LONG, 19),\n\n  /* Set the \"low speed time\" */\n  CURLOPT(CURLOPT_LOW_SPEED_TIME, CURLOPTTYPE_LONG, 20),\n\n  /* Set the continuation offset.\n   *\n   * Note there is also a _LARGE version of this key which uses\n   * off_t types, allowing for large file offsets on platforms which\n   * use larger-than-32-bit off_t's.  Look below for RESUME_FROM_LARGE.\n   */\n  CURLOPT(CURLOPT_RESUME_FROM, CURLOPTTYPE_LONG, 21),\n\n  /* Set cookie in request: */\n  CURLOPT(CURLOPT_COOKIE, CURLOPTTYPE_STRINGPOINT, 22),\n\n  /* This points to a linked list of headers, struct curl_slist kind. This\n     list is also used for RTSP (in spite of its name) */\n  CURLOPT(CURLOPT_HTTPHEADER, CURLOPTTYPE_SLISTPOINT, 23),\n\n  /* This points to a linked list of post entries, struct curl_httppost */\n  CURLOPT(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24),\n\n  /* name of the file keeping your private SSL-certificate */\n  CURLOPT(CURLOPT_SSLCERT, CURLOPTTYPE_STRINGPOINT, 25),\n\n  /* password for the SSL or SSH private key */\n  CURLOPT(CURLOPT_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 26),\n\n  /* send TYPE parameter? */\n  CURLOPT(CURLOPT_CRLF, CURLOPTTYPE_LONG, 27),\n\n  /* send linked-list of QUOTE commands */\n  CURLOPT(CURLOPT_QUOTE, CURLOPTTYPE_SLISTPOINT, 28),\n\n  /* send FILE * or void * to store headers to, if you use a callback it\n     is simply passed to the callback unmodified */\n  CURLOPT(CURLOPT_HEADERDATA, CURLOPTTYPE_CBPOINT, 29),\n\n  /* point to a file to read the initial cookies from, also enables\n     \"cookie awareness\" */\n  CURLOPT(CURLOPT_COOKIEFILE, CURLOPTTYPE_STRINGPOINT, 31),\n\n  /* What version to specifically try to use.\n     See CURL_SSLVERSION defines below. */\n  CURLOPT(CURLOPT_SSLVERSION, CURLOPTTYPE_VALUES, 32),\n\n  /* What kind of HTTP time condition to use, see defines */\n  CURLOPT(CURLOPT_TIMECONDITION, CURLOPTTYPE_VALUES, 33),\n\n  /* Time to use with the above condition. Specified in number of seconds\n     since 1 Jan 1970 */\n  CURLOPT(CURLOPT_TIMEVALUE, CURLOPTTYPE_LONG, 34),\n\n  /* 35 = OBSOLETE */\n\n  /* Custom request, for customizing the get command like\n     HTTP: DELETE, TRACE and others\n     FTP: to use a different list command\n     */\n  CURLOPT(CURLOPT_CUSTOMREQUEST, CURLOPTTYPE_STRINGPOINT, 36),\n\n  /* FILE handle to use instead of stderr */\n  CURLOPT(CURLOPT_STDERR, CURLOPTTYPE_OBJECTPOINT, 37),\n\n  /* 38 is not used */\n\n  /* send linked-list of post-transfer QUOTE commands */\n  CURLOPT(CURLOPT_POSTQUOTE, CURLOPTTYPE_SLISTPOINT, 39),\n\n   /* OBSOLETE, do not use! */\n  CURLOPT(CURLOPT_OBSOLETE40, CURLOPTTYPE_OBJECTPOINT, 40),\n\n  /* talk a lot */\n  CURLOPT(CURLOPT_VERBOSE, CURLOPTTYPE_LONG, 41),\n\n  /* throw the header out too */\n  CURLOPT(CURLOPT_HEADER, CURLOPTTYPE_LONG, 42),\n\n  /* shut off the progress meter */\n  CURLOPT(CURLOPT_NOPROGRESS, CURLOPTTYPE_LONG, 43),\n\n  /* use HEAD to get http document */\n  CURLOPT(CURLOPT_NOBODY, CURLOPTTYPE_LONG, 44),\n\n  /* no output on http error codes >= 400 */\n  CURLOPT(CURLOPT_FAILONERROR, CURLOPTTYPE_LONG, 45),\n\n  /* this is an upload */\n  CURLOPT(CURLOPT_UPLOAD, CURLOPTTYPE_LONG, 46),\n\n  /* HTTP POST method */\n  CURLOPT(CURLOPT_POST, CURLOPTTYPE_LONG, 47),\n\n  /* bare names when listing directories */\n  CURLOPT(CURLOPT_DIRLISTONLY, CURLOPTTYPE_LONG, 48),\n\n  /* Append instead of overwrite on upload! */\n  CURLOPT(CURLOPT_APPEND, CURLOPTTYPE_LONG, 50),\n\n  /* Specify whether to read the user+password from the .netrc or the URL.\n   * This must be one of the CURL_NETRC_* enums below. */\n  CURLOPT(CURLOPT_NETRC, CURLOPTTYPE_VALUES, 51),\n\n  /* use Location: Luke! */\n  CURLOPT(CURLOPT_FOLLOWLOCATION, CURLOPTTYPE_LONG, 52),\n\n   /* transfer data in text/ASCII format */\n  CURLOPT(CURLOPT_TRANSFERTEXT, CURLOPTTYPE_LONG, 53),\n\n  /* HTTP PUT */\n  CURLOPT(CURLOPT_PUT, CURLOPTTYPE_LONG, 54),\n\n  /* 55 = OBSOLETE */\n\n  /* DEPRECATED\n   * Function that will be called instead of the internal progress display\n   * function. This function should be defined as the curl_progress_callback\n   * prototype defines. */\n  CURLOPT(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56),\n\n  /* Data passed to the CURLOPT_PROGRESSFUNCTION and CURLOPT_XFERINFOFUNCTION\n     callbacks */\n  CURLOPT(CURLOPT_XFERINFODATA, CURLOPTTYPE_CBPOINT, 57),\n#define CURLOPT_PROGRESSDATA CURLOPT_XFERINFODATA\n\n  /* We want the referrer field set automatically when following locations */\n  CURLOPT(CURLOPT_AUTOREFERER, CURLOPTTYPE_LONG, 58),\n\n  /* Port of the proxy, can be set in the proxy string as well with:\n     \"[host]:[port]\" */\n  CURLOPT(CURLOPT_PROXYPORT, CURLOPTTYPE_LONG, 59),\n\n  /* size of the POST input data, if strlen() is not good to use */\n  CURLOPT(CURLOPT_POSTFIELDSIZE, CURLOPTTYPE_LONG, 60),\n\n  /* tunnel non-http operations through a HTTP proxy */\n  CURLOPT(CURLOPT_HTTPPROXYTUNNEL, CURLOPTTYPE_LONG, 61),\n\n  /* Set the interface string to use as outgoing network interface */\n  CURLOPT(CURLOPT_INTERFACE, CURLOPTTYPE_STRINGPOINT, 62),\n\n  /* Set the krb4/5 security level, this also enables krb4/5 awareness.  This\n   * is a string, 'clear', 'safe', 'confidential' or 'private'.  If the string\n   * is set but doesn't match one of these, 'private' will be used.  */\n  CURLOPT(CURLOPT_KRBLEVEL, CURLOPTTYPE_STRINGPOINT, 63),\n\n  /* Set if we should verify the peer in ssl handshake, set 1 to verify. */\n  CURLOPT(CURLOPT_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 64),\n\n  /* The CApath or CAfile used to validate the peer certificate\n     this option is used only if SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_CAINFO, CURLOPTTYPE_STRINGPOINT, 65),\n\n  /* 66 = OBSOLETE */\n  /* 67 = OBSOLETE */\n\n  /* Maximum number of http redirects to follow */\n  CURLOPT(CURLOPT_MAXREDIRS, CURLOPTTYPE_LONG, 68),\n\n  /* Pass a long set to 1 to get the date of the requested document (if\n     possible)! Pass a zero to shut it off. */\n  CURLOPT(CURLOPT_FILETIME, CURLOPTTYPE_LONG, 69),\n\n  /* This points to a linked list of telnet options */\n  CURLOPT(CURLOPT_TELNETOPTIONS, CURLOPTTYPE_SLISTPOINT, 70),\n\n  /* Max amount of cached alive connections */\n  CURLOPT(CURLOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 71),\n\n  /* OBSOLETE, do not use! */\n  CURLOPT(CURLOPT_OBSOLETE72, CURLOPTTYPE_LONG, 72),\n\n  /* 73 = OBSOLETE */\n\n  /* Set to explicitly use a new connection for the upcoming transfer.\n     Do not use this unless you're absolutely sure of this, as it makes the\n     operation slower and is less friendly for the network. */\n  CURLOPT(CURLOPT_FRESH_CONNECT, CURLOPTTYPE_LONG, 74),\n\n  /* Set to explicitly forbid the upcoming transfer's connection to be re-used\n     when done. Do not use this unless you're absolutely sure of this, as it\n     makes the operation slower and is less friendly for the network. */\n  CURLOPT(CURLOPT_FORBID_REUSE, CURLOPTTYPE_LONG, 75),\n\n  /* Set to a file name that contains random data for libcurl to use to\n     seed the random engine when doing SSL connects. */\n  CURLOPT(CURLOPT_RANDOM_FILE, CURLOPTTYPE_STRINGPOINT, 76),\n\n  /* Set to the Entropy Gathering Daemon socket pathname */\n  CURLOPT(CURLOPT_EGDSOCKET, CURLOPTTYPE_STRINGPOINT, 77),\n\n  /* Time-out connect operations after this amount of seconds, if connects are\n     OK within this time, then fine... This only aborts the connect phase. */\n  CURLOPT(CURLOPT_CONNECTTIMEOUT, CURLOPTTYPE_LONG, 78),\n\n  /* Function that will be called to store headers (instead of fwrite). The\n   * parameters will use fwrite() syntax, make sure to follow them. */\n  CURLOPT(CURLOPT_HEADERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 79),\n\n  /* Set this to force the HTTP request to get back to GET. Only really usable\n     if POST, PUT or a custom request have been used first.\n   */\n  CURLOPT(CURLOPT_HTTPGET, CURLOPTTYPE_LONG, 80),\n\n  /* Set if we should verify the Common name from the peer certificate in ssl\n   * handshake, set 1 to check existence, 2 to ensure that it matches the\n   * provided hostname. */\n  CURLOPT(CURLOPT_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 81),\n\n  /* Specify which file name to write all known cookies in after completed\n     operation. Set file name to \"-\" (dash) to make it go to stdout. */\n  CURLOPT(CURLOPT_COOKIEJAR, CURLOPTTYPE_STRINGPOINT, 82),\n\n  /* Specify which SSL ciphers to use */\n  CURLOPT(CURLOPT_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 83),\n\n  /* Specify which HTTP version to use! This must be set to one of the\n     CURL_HTTP_VERSION* enums set below. */\n  CURLOPT(CURLOPT_HTTP_VERSION, CURLOPTTYPE_VALUES, 84),\n\n  /* Specifically switch on or off the FTP engine's use of the EPSV command. By\n     default, that one will always be attempted before the more traditional\n     PASV command. */\n  CURLOPT(CURLOPT_FTP_USE_EPSV, CURLOPTTYPE_LONG, 85),\n\n  /* type of the file keeping your SSL-certificate (\"DER\", \"PEM\", \"ENG\") */\n  CURLOPT(CURLOPT_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 86),\n\n  /* name of the file keeping your private SSL-key */\n  CURLOPT(CURLOPT_SSLKEY, CURLOPTTYPE_STRINGPOINT, 87),\n\n  /* type of the file keeping your private SSL-key (\"DER\", \"PEM\", \"ENG\") */\n  CURLOPT(CURLOPT_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 88),\n\n  /* crypto engine for the SSL-sub system */\n  CURLOPT(CURLOPT_SSLENGINE, CURLOPTTYPE_STRINGPOINT, 89),\n\n  /* set the crypto engine for the SSL-sub system as default\n     the param has no meaning...\n   */\n  CURLOPT(CURLOPT_SSLENGINE_DEFAULT, CURLOPTTYPE_LONG, 90),\n\n  /* Non-zero value means to use the global dns cache */\n  /* DEPRECATED, do not use! */\n  CURLOPT(CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOPTTYPE_LONG, 91),\n\n  /* DNS cache timeout */\n  CURLOPT(CURLOPT_DNS_CACHE_TIMEOUT, CURLOPTTYPE_LONG, 92),\n\n  /* send linked-list of pre-transfer QUOTE commands */\n  CURLOPT(CURLOPT_PREQUOTE, CURLOPTTYPE_SLISTPOINT, 93),\n\n  /* set the debug function */\n  CURLOPT(CURLOPT_DEBUGFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 94),\n\n  /* set the data for the debug function */\n  CURLOPT(CURLOPT_DEBUGDATA, CURLOPTTYPE_CBPOINT, 95),\n\n  /* mark this as start of a cookie session */\n  CURLOPT(CURLOPT_COOKIESESSION, CURLOPTTYPE_LONG, 96),\n\n  /* The CApath directory used to validate the peer certificate\n     this option is used only if SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_CAPATH, CURLOPTTYPE_STRINGPOINT, 97),\n\n  /* Instruct libcurl to use a smaller receive buffer */\n  CURLOPT(CURLOPT_BUFFERSIZE, CURLOPTTYPE_LONG, 98),\n\n  /* Instruct libcurl to not use any signal/alarm handlers, even when using\n     timeouts. This option is useful for multi-threaded applications.\n     See libcurl-the-guide for more background information. */\n  CURLOPT(CURLOPT_NOSIGNAL, CURLOPTTYPE_LONG, 99),\n\n  /* Provide a CURLShare for mutexing non-ts data */\n  CURLOPT(CURLOPT_SHARE, CURLOPTTYPE_OBJECTPOINT, 100),\n\n  /* indicates type of proxy. accepted values are CURLPROXY_HTTP (default),\n     CURLPROXY_HTTPS, CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A and\n     CURLPROXY_SOCKS5. */\n  CURLOPT(CURLOPT_PROXYTYPE, CURLOPTTYPE_VALUES, 101),\n\n  /* Set the Accept-Encoding string. Use this to tell a server you would like\n     the response to be compressed. Before 7.21.6, this was known as\n     CURLOPT_ENCODING */\n  CURLOPT(CURLOPT_ACCEPT_ENCODING, CURLOPTTYPE_STRINGPOINT, 102),\n\n  /* Set pointer to private data */\n  CURLOPT(CURLOPT_PRIVATE, CURLOPTTYPE_OBJECTPOINT, 103),\n\n  /* Set aliases for HTTP 200 in the HTTP Response header */\n  CURLOPT(CURLOPT_HTTP200ALIASES, CURLOPTTYPE_SLISTPOINT, 104),\n\n  /* Continue to send authentication (user+password) when following locations,\n     even when hostname changed. This can potentially send off the name\n     and password to whatever host the server decides. */\n  CURLOPT(CURLOPT_UNRESTRICTED_AUTH, CURLOPTTYPE_LONG, 105),\n\n  /* Specifically switch on or off the FTP engine's use of the EPRT command (\n     it also disables the LPRT attempt). By default, those ones will always be\n     attempted before the good old traditional PORT command. */\n  CURLOPT(CURLOPT_FTP_USE_EPRT, CURLOPTTYPE_LONG, 106),\n\n  /* Set this to a bitmask value to enable the particular authentications\n     methods you like. Use this in combination with CURLOPT_USERPWD.\n     Note that setting multiple bits may cause extra network round-trips. */\n  CURLOPT(CURLOPT_HTTPAUTH, CURLOPTTYPE_VALUES, 107),\n\n  /* Set the ssl context callback function, currently only for OpenSSL or\n     WolfSSL ssl_ctx, or mbedTLS mbedtls_ssl_config in the second argument.\n     The function must match the curl_ssl_ctx_callback prototype. */\n  CURLOPT(CURLOPT_SSL_CTX_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 108),\n\n  /* Set the userdata for the ssl context callback function's third\n     argument */\n  CURLOPT(CURLOPT_SSL_CTX_DATA, CURLOPTTYPE_CBPOINT, 109),\n\n  /* FTP Option that causes missing dirs to be created on the remote server.\n     In 7.19.4 we introduced the convenience enums for this option using the\n     CURLFTP_CREATE_DIR prefix.\n  */\n  CURLOPT(CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPTTYPE_LONG, 110),\n\n  /* Set this to a bitmask value to enable the particular authentications\n     methods you like. Use this in combination with CURLOPT_PROXYUSERPWD.\n     Note that setting multiple bits may cause extra network round-trips. */\n  CURLOPT(CURLOPT_PROXYAUTH, CURLOPTTYPE_VALUES, 111),\n\n  /* FTP option that changes the timeout, in seconds, associated with\n     getting a response.  This is different from transfer timeout time and\n     essentially places a demand on the FTP server to acknowledge commands\n     in a timely manner. */\n  CURLOPT(CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPTTYPE_LONG, 112),\n#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT\n\n  /* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to\n     tell libcurl to use those IP versions only. This only has effect on\n     systems with support for more than one, i.e IPv4 _and_ IPv6. */\n  CURLOPT(CURLOPT_IPRESOLVE, CURLOPTTYPE_VALUES, 113),\n\n  /* Set this option to limit the size of a file that will be downloaded from\n     an HTTP or FTP server.\n\n     Note there is also _LARGE version which adds large file support for\n     platforms which have larger off_t sizes.  See MAXFILESIZE_LARGE below. */\n  CURLOPT(CURLOPT_MAXFILESIZE, CURLOPTTYPE_LONG, 114),\n\n  /* See the comment for INFILESIZE above, but in short, specifies\n   * the size of the file being uploaded.  -1 means unknown.\n   */\n  CURLOPT(CURLOPT_INFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 115),\n\n  /* Sets the continuation offset.  There is also a CURLOPTTYPE_LONG version\n   * of this; look above for RESUME_FROM.\n   */\n  CURLOPT(CURLOPT_RESUME_FROM_LARGE, CURLOPTTYPE_OFF_T, 116),\n\n  /* Sets the maximum size of data that will be downloaded from\n   * an HTTP or FTP server.  See MAXFILESIZE above for the LONG version.\n   */\n  CURLOPT(CURLOPT_MAXFILESIZE_LARGE, CURLOPTTYPE_OFF_T, 117),\n\n  /* Set this option to the file name of your .netrc file you want libcurl\n     to parse (using the CURLOPT_NETRC option). If not set, libcurl will do\n     a poor attempt to find the user's home directory and check for a .netrc\n     file in there. */\n  CURLOPT(CURLOPT_NETRC_FILE, CURLOPTTYPE_STRINGPOINT, 118),\n\n  /* Enable SSL/TLS for FTP, pick one of:\n     CURLUSESSL_TRY     - try using SSL, proceed anyway otherwise\n     CURLUSESSL_CONTROL - SSL for the control connection or fail\n     CURLUSESSL_ALL     - SSL for all communication or fail\n  */\n  CURLOPT(CURLOPT_USE_SSL, CURLOPTTYPE_VALUES, 119),\n\n  /* The _LARGE version of the standard POSTFIELDSIZE option */\n  CURLOPT(CURLOPT_POSTFIELDSIZE_LARGE, CURLOPTTYPE_OFF_T, 120),\n\n  /* Enable/disable the TCP Nagle algorithm */\n  CURLOPT(CURLOPT_TCP_NODELAY, CURLOPTTYPE_LONG, 121),\n\n  /* 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */\n  /* 123 OBSOLETE. Gone in 7.16.0 */\n  /* 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */\n  /* 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */\n  /* 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 */\n  /* 127 OBSOLETE. Gone in 7.16.0 */\n  /* 128 OBSOLETE. Gone in 7.16.0 */\n\n  /* When FTP over SSL/TLS is selected (with CURLOPT_USE_SSL), this option\n     can be used to change libcurl's default action which is to first try\n     \"AUTH SSL\" and then \"AUTH TLS\" in this order, and proceed when a OK\n     response has been received.\n\n     Available parameters are:\n     CURLFTPAUTH_DEFAULT - let libcurl decide\n     CURLFTPAUTH_SSL     - try \"AUTH SSL\" first, then TLS\n     CURLFTPAUTH_TLS     - try \"AUTH TLS\" first, then SSL\n  */\n  CURLOPT(CURLOPT_FTPSSLAUTH, CURLOPTTYPE_VALUES, 129),\n\n  CURLOPT(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130),\n  CURLOPT(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131),\n\n  /* 132 OBSOLETE. Gone in 7.16.0 */\n  /* 133 OBSOLETE. Gone in 7.16.0 */\n\n  /* null-terminated string for pass on to the FTP server when asked for\n     \"account\" info */\n  CURLOPT(CURLOPT_FTP_ACCOUNT, CURLOPTTYPE_STRINGPOINT, 134),\n\n  /* feed cookie into cookie engine */\n  CURLOPT(CURLOPT_COOKIELIST, CURLOPTTYPE_STRINGPOINT, 135),\n\n  /* ignore Content-Length */\n  CURLOPT(CURLOPT_IGNORE_CONTENT_LENGTH, CURLOPTTYPE_LONG, 136),\n\n  /* Set to non-zero to skip the IP address received in a 227 PASV FTP server\n     response. Typically used for FTP-SSL purposes but is not restricted to\n     that. libcurl will then instead use the same IP address it used for the\n     control connection. */\n  CURLOPT(CURLOPT_FTP_SKIP_PASV_IP, CURLOPTTYPE_LONG, 137),\n\n  /* Select \"file method\" to use when doing FTP, see the curl_ftpmethod\n     above. */\n  CURLOPT(CURLOPT_FTP_FILEMETHOD, CURLOPTTYPE_VALUES, 138),\n\n  /* Local port number to bind the socket to */\n  CURLOPT(CURLOPT_LOCALPORT, CURLOPTTYPE_LONG, 139),\n\n  /* Number of ports to try, including the first one set with LOCALPORT.\n     Thus, setting it to 1 will make no additional attempts but the first.\n  */\n  CURLOPT(CURLOPT_LOCALPORTRANGE, CURLOPTTYPE_LONG, 140),\n\n  /* no transfer, set up connection and let application use the socket by\n     extracting it with CURLINFO_LASTSOCKET */\n  CURLOPT(CURLOPT_CONNECT_ONLY, CURLOPTTYPE_LONG, 141),\n\n  /* Function that will be called to convert from the\n     network encoding (instead of using the iconv calls in libcurl) */\n  CURLOPT(CURLOPT_CONV_FROM_NETWORK_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 142),\n\n  /* Function that will be called to convert to the\n     network encoding (instead of using the iconv calls in libcurl) */\n  CURLOPT(CURLOPT_CONV_TO_NETWORK_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 143),\n\n  /* Function that will be called to convert from UTF8\n     (instead of using the iconv calls in libcurl)\n     Note that this is used only for SSL certificate processing */\n  CURLOPT(CURLOPT_CONV_FROM_UTF8_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 144),\n\n  /* if the connection proceeds too quickly then need to slow it down */\n  /* limit-rate: maximum number of bytes per second to send or receive */\n  CURLOPT(CURLOPT_MAX_SEND_SPEED_LARGE, CURLOPTTYPE_OFF_T, 145),\n  CURLOPT(CURLOPT_MAX_RECV_SPEED_LARGE, CURLOPTTYPE_OFF_T, 146),\n\n  /* Pointer to command string to send if USER/PASS fails. */\n  CURLOPT(CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPTTYPE_STRINGPOINT, 147),\n\n  /* callback function for setting socket options */\n  CURLOPT(CURLOPT_SOCKOPTFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 148),\n  CURLOPT(CURLOPT_SOCKOPTDATA, CURLOPTTYPE_CBPOINT, 149),\n\n  /* set to 0 to disable session ID re-use for this transfer, default is\n     enabled (== 1) */\n  CURLOPT(CURLOPT_SSL_SESSIONID_CACHE, CURLOPTTYPE_LONG, 150),\n\n  /* allowed SSH authentication methods */\n  CURLOPT(CURLOPT_SSH_AUTH_TYPES, CURLOPTTYPE_VALUES, 151),\n\n  /* Used by scp/sftp to do public/private key authentication */\n  CURLOPT(CURLOPT_SSH_PUBLIC_KEYFILE, CURLOPTTYPE_STRINGPOINT, 152),\n  CURLOPT(CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPTTYPE_STRINGPOINT, 153),\n\n  /* Send CCC (Clear Command Channel) after authentication */\n  CURLOPT(CURLOPT_FTP_SSL_CCC, CURLOPTTYPE_LONG, 154),\n\n  /* Same as TIMEOUT and CONNECTTIMEOUT, but with ms resolution */\n  CURLOPT(CURLOPT_TIMEOUT_MS, CURLOPTTYPE_LONG, 155),\n  CURLOPT(CURLOPT_CONNECTTIMEOUT_MS, CURLOPTTYPE_LONG, 156),\n\n  /* set to zero to disable the libcurl's decoding and thus pass the raw body\n     data to the application even when it is encoded/compressed */\n  CURLOPT(CURLOPT_HTTP_TRANSFER_DECODING, CURLOPTTYPE_LONG, 157),\n  CURLOPT(CURLOPT_HTTP_CONTENT_DECODING, CURLOPTTYPE_LONG, 158),\n\n  /* Permission used when creating new files and directories on the remote\n     server for protocols that support it, SFTP/SCP/FILE */\n  CURLOPT(CURLOPT_NEW_FILE_PERMS, CURLOPTTYPE_LONG, 159),\n  CURLOPT(CURLOPT_NEW_DIRECTORY_PERMS, CURLOPTTYPE_LONG, 160),\n\n  /* Set the behavior of POST when redirecting. Values must be set to one\n     of CURL_REDIR* defines below. This used to be called CURLOPT_POST301 */\n  CURLOPT(CURLOPT_POSTREDIR, CURLOPTTYPE_VALUES, 161),\n\n  /* used by scp/sftp to verify the host's public key */\n  CURLOPT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, CURLOPTTYPE_STRINGPOINT, 162),\n\n  /* Callback function for opening socket (instead of socket(2)). Optionally,\n     callback is able change the address or refuse to connect returning\n     CURL_SOCKET_BAD.  The callback should have type\n     curl_opensocket_callback */\n  CURLOPT(CURLOPT_OPENSOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 163),\n  CURLOPT(CURLOPT_OPENSOCKETDATA, CURLOPTTYPE_CBPOINT, 164),\n\n  /* POST volatile input fields. */\n  CURLOPT(CURLOPT_COPYPOSTFIELDS, CURLOPTTYPE_OBJECTPOINT, 165),\n\n  /* set transfer mode (;type=<a|i>) when doing FTP via an HTTP proxy */\n  CURLOPT(CURLOPT_PROXY_TRANSFER_MODE, CURLOPTTYPE_LONG, 166),\n\n  /* Callback function for seeking in the input stream */\n  CURLOPT(CURLOPT_SEEKFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 167),\n  CURLOPT(CURLOPT_SEEKDATA, CURLOPTTYPE_CBPOINT, 168),\n\n  /* CRL file */\n  CURLOPT(CURLOPT_CRLFILE, CURLOPTTYPE_STRINGPOINT, 169),\n\n  /* Issuer certificate */\n  CURLOPT(CURLOPT_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 170),\n\n  /* (IPv6) Address scope */\n  CURLOPT(CURLOPT_ADDRESS_SCOPE, CURLOPTTYPE_LONG, 171),\n\n  /* Collect certificate chain info and allow it to get retrievable with\n     CURLINFO_CERTINFO after the transfer is complete. */\n  CURLOPT(CURLOPT_CERTINFO, CURLOPTTYPE_LONG, 172),\n\n  /* \"name\" and \"pwd\" to use when fetching. */\n  CURLOPT(CURLOPT_USERNAME, CURLOPTTYPE_STRINGPOINT, 173),\n  CURLOPT(CURLOPT_PASSWORD, CURLOPTTYPE_STRINGPOINT, 174),\n\n    /* \"name\" and \"pwd\" to use with Proxy when fetching. */\n  CURLOPT(CURLOPT_PROXYUSERNAME, CURLOPTTYPE_STRINGPOINT, 175),\n  CURLOPT(CURLOPT_PROXYPASSWORD, CURLOPTTYPE_STRINGPOINT, 176),\n\n  /* Comma separated list of hostnames defining no-proxy zones. These should\n     match both hostnames directly, and hostnames within a domain. For\n     example, local.com will match local.com and www.local.com, but NOT\n     notlocal.com or www.notlocal.com. For compatibility with other\n     implementations of this, .local.com will be considered to be the same as\n     local.com. A single * is the only valid wildcard, and effectively\n     disables the use of proxy. */\n  CURLOPT(CURLOPT_NOPROXY, CURLOPTTYPE_STRINGPOINT, 177),\n\n  /* block size for TFTP transfers */\n  CURLOPT(CURLOPT_TFTP_BLKSIZE, CURLOPTTYPE_LONG, 178),\n\n  /* Socks Service */\n  /* DEPRECATED, do not use! */\n  CURLOPT(CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOPTTYPE_STRINGPOINT, 179),\n\n  /* Socks Service */\n  CURLOPT(CURLOPT_SOCKS5_GSSAPI_NEC, CURLOPTTYPE_LONG, 180),\n\n  /* set the bitmask for the protocols that are allowed to be used for the\n     transfer, which thus helps the app which takes URLs from users or other\n     external inputs and want to restrict what protocol(s) to deal\n     with. Defaults to CURLPROTO_ALL. */\n  CURLOPT(CURLOPT_PROTOCOLS, CURLOPTTYPE_LONG, 181),\n\n  /* set the bitmask for the protocols that libcurl is allowed to follow to,\n     as a subset of the CURLOPT_PROTOCOLS ones. That means the protocol needs\n     to be set in both bitmasks to be allowed to get redirected to. */\n  CURLOPT(CURLOPT_REDIR_PROTOCOLS, CURLOPTTYPE_LONG, 182),\n\n  /* set the SSH knownhost file name to use */\n  CURLOPT(CURLOPT_SSH_KNOWNHOSTS, CURLOPTTYPE_STRINGPOINT, 183),\n\n  /* set the SSH host key callback, must point to a curl_sshkeycallback\n     function */\n  CURLOPT(CURLOPT_SSH_KEYFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 184),\n\n  /* set the SSH host key callback custom pointer */\n  CURLOPT(CURLOPT_SSH_KEYDATA, CURLOPTTYPE_CBPOINT, 185),\n\n  /* set the SMTP mail originator */\n  CURLOPT(CURLOPT_MAIL_FROM, CURLOPTTYPE_STRINGPOINT, 186),\n\n  /* set the list of SMTP mail receiver(s) */\n  CURLOPT(CURLOPT_MAIL_RCPT, CURLOPTTYPE_SLISTPOINT, 187),\n\n  /* FTP: send PRET before PASV */\n  CURLOPT(CURLOPT_FTP_USE_PRET, CURLOPTTYPE_LONG, 188),\n\n  /* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */\n  CURLOPT(CURLOPT_RTSP_REQUEST, CURLOPTTYPE_VALUES, 189),\n\n  /* The RTSP session identifier */\n  CURLOPT(CURLOPT_RTSP_SESSION_ID, CURLOPTTYPE_STRINGPOINT, 190),\n\n  /* The RTSP stream URI */\n  CURLOPT(CURLOPT_RTSP_STREAM_URI, CURLOPTTYPE_STRINGPOINT, 191),\n\n  /* The Transport: header to use in RTSP requests */\n  CURLOPT(CURLOPT_RTSP_TRANSPORT, CURLOPTTYPE_STRINGPOINT, 192),\n\n  /* Manually initialize the client RTSP CSeq for this handle */\n  CURLOPT(CURLOPT_RTSP_CLIENT_CSEQ, CURLOPTTYPE_LONG, 193),\n\n  /* Manually initialize the server RTSP CSeq for this handle */\n  CURLOPT(CURLOPT_RTSP_SERVER_CSEQ, CURLOPTTYPE_LONG, 194),\n\n  /* The stream to pass to INTERLEAVEFUNCTION. */\n  CURLOPT(CURLOPT_INTERLEAVEDATA, CURLOPTTYPE_CBPOINT, 195),\n\n  /* Let the application define a custom write method for RTP data */\n  CURLOPT(CURLOPT_INTERLEAVEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 196),\n\n  /* Turn on wildcard matching */\n  CURLOPT(CURLOPT_WILDCARDMATCH, CURLOPTTYPE_LONG, 197),\n\n  /* Directory matching callback called before downloading of an\n     individual file (chunk) started */\n  CURLOPT(CURLOPT_CHUNK_BGN_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 198),\n\n  /* Directory matching callback called after the file (chunk)\n     was downloaded, or skipped */\n  CURLOPT(CURLOPT_CHUNK_END_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 199),\n\n  /* Change match (fnmatch-like) callback for wildcard matching */\n  CURLOPT(CURLOPT_FNMATCH_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 200),\n\n  /* Let the application define custom chunk data pointer */\n  CURLOPT(CURLOPT_CHUNK_DATA, CURLOPTTYPE_CBPOINT, 201),\n\n  /* FNMATCH_FUNCTION user pointer */\n  CURLOPT(CURLOPT_FNMATCH_DATA, CURLOPTTYPE_CBPOINT, 202),\n\n  /* send linked-list of name:port:address sets */\n  CURLOPT(CURLOPT_RESOLVE, CURLOPTTYPE_SLISTPOINT, 203),\n\n  /* Set a username for authenticated TLS */\n  CURLOPT(CURLOPT_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 204),\n\n  /* Set a password for authenticated TLS */\n  CURLOPT(CURLOPT_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 205),\n\n  /* Set authentication type for authenticated TLS */\n  CURLOPT(CURLOPT_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 206),\n\n  /* Set to 1 to enable the \"TE:\" header in HTTP requests to ask for\n     compressed transfer-encoded responses. Set to 0 to disable the use of TE:\n     in outgoing requests. The current default is 0, but it might change in a\n     future libcurl release.\n\n     libcurl will ask for the compressed methods it knows of, and if that\n     isn't any, it will not ask for transfer-encoding at all even if this\n     option is set to 1.\n\n  */\n  CURLOPT(CURLOPT_TRANSFER_ENCODING, CURLOPTTYPE_LONG, 207),\n\n  /* Callback function for closing socket (instead of close(2)). The callback\n     should have type curl_closesocket_callback */\n  CURLOPT(CURLOPT_CLOSESOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 208),\n  CURLOPT(CURLOPT_CLOSESOCKETDATA, CURLOPTTYPE_CBPOINT, 209),\n\n  /* allow GSSAPI credential delegation */\n  CURLOPT(CURLOPT_GSSAPI_DELEGATION, CURLOPTTYPE_VALUES, 210),\n\n  /* Set the name servers to use for DNS resolution */\n  CURLOPT(CURLOPT_DNS_SERVERS, CURLOPTTYPE_STRINGPOINT, 211),\n\n  /* Time-out accept operations (currently for FTP only) after this amount\n     of milliseconds. */\n  CURLOPT(CURLOPT_ACCEPTTIMEOUT_MS, CURLOPTTYPE_LONG, 212),\n\n  /* Set TCP keepalive */\n  CURLOPT(CURLOPT_TCP_KEEPALIVE, CURLOPTTYPE_LONG, 213),\n\n  /* non-universal keepalive knobs (Linux, AIX, HP-UX, more) */\n  CURLOPT(CURLOPT_TCP_KEEPIDLE, CURLOPTTYPE_LONG, 214),\n  CURLOPT(CURLOPT_TCP_KEEPINTVL, CURLOPTTYPE_LONG, 215),\n\n  /* Enable/disable specific SSL features with a bitmask, see CURLSSLOPT_* */\n  CURLOPT(CURLOPT_SSL_OPTIONS, CURLOPTTYPE_VALUES, 216),\n\n  /* Set the SMTP auth originator */\n  CURLOPT(CURLOPT_MAIL_AUTH, CURLOPTTYPE_STRINGPOINT, 217),\n\n  /* Enable/disable SASL initial response */\n  CURLOPT(CURLOPT_SASL_IR, CURLOPTTYPE_LONG, 218),\n\n  /* Function that will be called instead of the internal progress display\n   * function. This function should be defined as the curl_xferinfo_callback\n   * prototype defines. (Deprecates CURLOPT_PROGRESSFUNCTION) */\n  CURLOPT(CURLOPT_XFERINFOFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 219),\n\n  /* The XOAUTH2 bearer token */\n  CURLOPT(CURLOPT_XOAUTH2_BEARER, CURLOPTTYPE_STRINGPOINT, 220),\n\n  /* Set the interface string to use as outgoing network\n   * interface for DNS requests.\n   * Only supported by the c-ares DNS backend */\n  CURLOPT(CURLOPT_DNS_INTERFACE, CURLOPTTYPE_STRINGPOINT, 221),\n\n  /* Set the local IPv4 address to use for outgoing DNS requests.\n   * Only supported by the c-ares DNS backend */\n  CURLOPT(CURLOPT_DNS_LOCAL_IP4, CURLOPTTYPE_STRINGPOINT, 222),\n\n  /* Set the local IPv6 address to use for outgoing DNS requests.\n   * Only supported by the c-ares DNS backend */\n  CURLOPT(CURLOPT_DNS_LOCAL_IP6, CURLOPTTYPE_STRINGPOINT, 223),\n\n  /* Set authentication options directly */\n  CURLOPT(CURLOPT_LOGIN_OPTIONS, CURLOPTTYPE_STRINGPOINT, 224),\n\n  /* Enable/disable TLS NPN extension (http2 over ssl might fail without) */\n  CURLOPT(CURLOPT_SSL_ENABLE_NPN, CURLOPTTYPE_LONG, 225),\n\n  /* Enable/disable TLS ALPN extension (http2 over ssl might fail without) */\n  CURLOPT(CURLOPT_SSL_ENABLE_ALPN, CURLOPTTYPE_LONG, 226),\n\n  /* Time to wait for a response to a HTTP request containing an\n   * Expect: 100-continue header before sending the data anyway. */\n  CURLOPT(CURLOPT_EXPECT_100_TIMEOUT_MS, CURLOPTTYPE_LONG, 227),\n\n  /* This points to a linked list of headers used for proxy requests only,\n     struct curl_slist kind */\n  CURLOPT(CURLOPT_PROXYHEADER, CURLOPTTYPE_SLISTPOINT, 228),\n\n  /* Pass in a bitmask of \"header options\" */\n  CURLOPT(CURLOPT_HEADEROPT, CURLOPTTYPE_VALUES, 229),\n\n  /* The public key in DER form used to validate the peer public key\n     this option is used only if SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 230),\n\n  /* Path to Unix domain socket */\n  CURLOPT(CURLOPT_UNIX_SOCKET_PATH, CURLOPTTYPE_STRINGPOINT, 231),\n\n  /* Set if we should verify the certificate status. */\n  CURLOPT(CURLOPT_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 232),\n\n  /* Set if we should enable TLS false start. */\n  CURLOPT(CURLOPT_SSL_FALSESTART, CURLOPTTYPE_LONG, 233),\n\n  /* Do not squash dot-dot sequences */\n  CURLOPT(CURLOPT_PATH_AS_IS, CURLOPTTYPE_LONG, 234),\n\n  /* Proxy Service Name */\n  CURLOPT(CURLOPT_PROXY_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 235),\n\n  /* Service Name */\n  CURLOPT(CURLOPT_SERVICE_NAME, CURLOPTTYPE_STRINGPOINT, 236),\n\n  /* Wait/don't wait for pipe/mutex to clarify */\n  CURLOPT(CURLOPT_PIPEWAIT, CURLOPTTYPE_LONG, 237),\n\n  /* Set the protocol used when curl is given a URL without a protocol */\n  CURLOPT(CURLOPT_DEFAULT_PROTOCOL, CURLOPTTYPE_STRINGPOINT, 238),\n\n  /* Set stream weight, 1 - 256 (default is 16) */\n  CURLOPT(CURLOPT_STREAM_WEIGHT, CURLOPTTYPE_LONG, 239),\n\n  /* Set stream dependency on another CURL handle */\n  CURLOPT(CURLOPT_STREAM_DEPENDS, CURLOPTTYPE_OBJECTPOINT, 240),\n\n  /* Set E-xclusive stream dependency on another CURL handle */\n  CURLOPT(CURLOPT_STREAM_DEPENDS_E, CURLOPTTYPE_OBJECTPOINT, 241),\n\n  /* Do not send any tftp option requests to the server */\n  CURLOPT(CURLOPT_TFTP_NO_OPTIONS, CURLOPTTYPE_LONG, 242),\n\n  /* Linked-list of host:port:connect-to-host:connect-to-port,\n     overrides the URL's host:port (only for the network layer) */\n  CURLOPT(CURLOPT_CONNECT_TO, CURLOPTTYPE_SLISTPOINT, 243),\n\n  /* Set TCP Fast Open */\n  CURLOPT(CURLOPT_TCP_FASTOPEN, CURLOPTTYPE_LONG, 244),\n\n  /* Continue to send data if the server responds early with an\n   * HTTP status code >= 300 */\n  CURLOPT(CURLOPT_KEEP_SENDING_ON_ERROR, CURLOPTTYPE_LONG, 245),\n\n  /* The CApath or CAfile used to validate the proxy certificate\n     this option is used only if PROXY_SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_PROXY_CAINFO, CURLOPTTYPE_STRINGPOINT, 246),\n\n  /* The CApath directory used to validate the proxy certificate\n     this option is used only if PROXY_SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_PROXY_CAPATH, CURLOPTTYPE_STRINGPOINT, 247),\n\n  /* Set if we should verify the proxy in ssl handshake,\n     set 1 to verify. */\n  CURLOPT(CURLOPT_PROXY_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 248),\n\n  /* Set if we should verify the Common name from the proxy certificate in ssl\n   * handshake, set 1 to check existence, 2 to ensure that it matches\n   * the provided hostname. */\n  CURLOPT(CURLOPT_PROXY_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 249),\n\n  /* What version to specifically try to use for proxy.\n     See CURL_SSLVERSION defines below. */\n  CURLOPT(CURLOPT_PROXY_SSLVERSION, CURLOPTTYPE_VALUES, 250),\n\n  /* Set a username for authenticated TLS for proxy */\n  CURLOPT(CURLOPT_PROXY_TLSAUTH_USERNAME, CURLOPTTYPE_STRINGPOINT, 251),\n\n  /* Set a password for authenticated TLS for proxy */\n  CURLOPT(CURLOPT_PROXY_TLSAUTH_PASSWORD, CURLOPTTYPE_STRINGPOINT, 252),\n\n  /* Set authentication type for authenticated TLS for proxy */\n  CURLOPT(CURLOPT_PROXY_TLSAUTH_TYPE, CURLOPTTYPE_STRINGPOINT, 253),\n\n  /* name of the file keeping your private SSL-certificate for proxy */\n  CURLOPT(CURLOPT_PROXY_SSLCERT, CURLOPTTYPE_STRINGPOINT, 254),\n\n  /* type of the file keeping your SSL-certificate (\"DER\", \"PEM\", \"ENG\") for\n     proxy */\n  CURLOPT(CURLOPT_PROXY_SSLCERTTYPE, CURLOPTTYPE_STRINGPOINT, 255),\n\n  /* name of the file keeping your private SSL-key for proxy */\n  CURLOPT(CURLOPT_PROXY_SSLKEY, CURLOPTTYPE_STRINGPOINT, 256),\n\n  /* type of the file keeping your private SSL-key (\"DER\", \"PEM\", \"ENG\") for\n     proxy */\n  CURLOPT(CURLOPT_PROXY_SSLKEYTYPE, CURLOPTTYPE_STRINGPOINT, 257),\n\n  /* password for the SSL private key for proxy */\n  CURLOPT(CURLOPT_PROXY_KEYPASSWD, CURLOPTTYPE_STRINGPOINT, 258),\n\n  /* Specify which SSL ciphers to use for proxy */\n  CURLOPT(CURLOPT_PROXY_SSL_CIPHER_LIST, CURLOPTTYPE_STRINGPOINT, 259),\n\n  /* CRL file for proxy */\n  CURLOPT(CURLOPT_PROXY_CRLFILE, CURLOPTTYPE_STRINGPOINT, 260),\n\n  /* Enable/disable specific SSL features with a bitmask for proxy, see\n     CURLSSLOPT_* */\n  CURLOPT(CURLOPT_PROXY_SSL_OPTIONS, CURLOPTTYPE_LONG, 261),\n\n  /* Name of pre proxy to use. */\n  CURLOPT(CURLOPT_PRE_PROXY, CURLOPTTYPE_STRINGPOINT, 262),\n\n  /* The public key in DER form used to validate the proxy public key\n     this option is used only if PROXY_SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_PROXY_PINNEDPUBLICKEY, CURLOPTTYPE_STRINGPOINT, 263),\n\n  /* Path to an abstract Unix domain socket */\n  CURLOPT(CURLOPT_ABSTRACT_UNIX_SOCKET, CURLOPTTYPE_STRINGPOINT, 264),\n\n  /* Suppress proxy CONNECT response headers from user callbacks */\n  CURLOPT(CURLOPT_SUPPRESS_CONNECT_HEADERS, CURLOPTTYPE_LONG, 265),\n\n  /* The request target, instead of extracted from the URL */\n  CURLOPT(CURLOPT_REQUEST_TARGET, CURLOPTTYPE_STRINGPOINT, 266),\n\n  /* bitmask of allowed auth methods for connections to SOCKS5 proxies */\n  CURLOPT(CURLOPT_SOCKS5_AUTH, CURLOPTTYPE_LONG, 267),\n\n  /* Enable/disable SSH compression */\n  CURLOPT(CURLOPT_SSH_COMPRESSION, CURLOPTTYPE_LONG, 268),\n\n  /* Post MIME data. */\n  CURLOPT(CURLOPT_MIMEPOST, CURLOPTTYPE_OBJECTPOINT, 269),\n\n  /* Time to use with the CURLOPT_TIMECONDITION. Specified in number of\n     seconds since 1 Jan 1970. */\n  CURLOPT(CURLOPT_TIMEVALUE_LARGE, CURLOPTTYPE_OFF_T, 270),\n\n  /* Head start in milliseconds to give happy eyeballs. */\n  CURLOPT(CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CURLOPTTYPE_LONG, 271),\n\n  /* Function that will be called before a resolver request is made */\n  CURLOPT(CURLOPT_RESOLVER_START_FUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 272),\n\n  /* User data to pass to the resolver start callback. */\n  CURLOPT(CURLOPT_RESOLVER_START_DATA, CURLOPTTYPE_CBPOINT, 273),\n\n  /* send HAProxy PROXY protocol header? */\n  CURLOPT(CURLOPT_HAPROXYPROTOCOL, CURLOPTTYPE_LONG, 274),\n\n  /* shuffle addresses before use when DNS returns multiple */\n  CURLOPT(CURLOPT_DNS_SHUFFLE_ADDRESSES, CURLOPTTYPE_LONG, 275),\n\n  /* Specify which TLS 1.3 ciphers suites to use */\n  CURLOPT(CURLOPT_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 276),\n  CURLOPT(CURLOPT_PROXY_TLS13_CIPHERS, CURLOPTTYPE_STRINGPOINT, 277),\n\n  /* Disallow specifying username/login in URL. */\n  CURLOPT(CURLOPT_DISALLOW_USERNAME_IN_URL, CURLOPTTYPE_LONG, 278),\n\n  /* DNS-over-HTTPS URL */\n  CURLOPT(CURLOPT_DOH_URL, CURLOPTTYPE_STRINGPOINT, 279),\n\n  /* Preferred buffer size to use for uploads */\n  CURLOPT(CURLOPT_UPLOAD_BUFFERSIZE, CURLOPTTYPE_LONG, 280),\n\n  /* Time in ms between connection upkeep calls for long-lived connections. */\n  CURLOPT(CURLOPT_UPKEEP_INTERVAL_MS, CURLOPTTYPE_LONG, 281),\n\n  /* Specify URL using CURL URL API. */\n  CURLOPT(CURLOPT_CURLU, CURLOPTTYPE_OBJECTPOINT, 282),\n\n  /* add trailing data just after no more data is available */\n  CURLOPT(CURLOPT_TRAILERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 283),\n\n  /* pointer to be passed to HTTP_TRAILER_FUNCTION */\n  CURLOPT(CURLOPT_TRAILERDATA, CURLOPTTYPE_CBPOINT, 284),\n\n  /* set this to 1L to allow HTTP/0.9 responses or 0L to disallow */\n  CURLOPT(CURLOPT_HTTP09_ALLOWED, CURLOPTTYPE_LONG, 285),\n\n  /* alt-svc control bitmask */\n  CURLOPT(CURLOPT_ALTSVC_CTRL, CURLOPTTYPE_LONG, 286),\n\n  /* alt-svc cache file name to possibly read from/write to */\n  CURLOPT(CURLOPT_ALTSVC, CURLOPTTYPE_STRINGPOINT, 287),\n\n  /* maximum age of a connection to consider it for reuse (in seconds) */\n  CURLOPT(CURLOPT_MAXAGE_CONN, CURLOPTTYPE_LONG, 288),\n\n  /* SASL authorisation identity */\n  CURLOPT(CURLOPT_SASL_AUTHZID, CURLOPTTYPE_STRINGPOINT, 289),\n\n  /* allow RCPT TO command to fail for some recipients */\n  CURLOPT(CURLOPT_MAIL_RCPT_ALLLOWFAILS, CURLOPTTYPE_LONG, 290),\n\n  /* the private SSL-certificate as a \"blob\" */\n  CURLOPT(CURLOPT_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 291),\n  CURLOPT(CURLOPT_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 292),\n  CURLOPT(CURLOPT_PROXY_SSLCERT_BLOB, CURLOPTTYPE_BLOB, 293),\n  CURLOPT(CURLOPT_PROXY_SSLKEY_BLOB, CURLOPTTYPE_BLOB, 294),\n  CURLOPT(CURLOPT_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 295),\n\n  /* Issuer certificate for proxy */\n  CURLOPT(CURLOPT_PROXY_ISSUERCERT, CURLOPTTYPE_STRINGPOINT, 296),\n  CURLOPT(CURLOPT_PROXY_ISSUERCERT_BLOB, CURLOPTTYPE_BLOB, 297),\n\n  /* the EC curves requested by the TLS client (RFC 8422, 5.1);\n   * OpenSSL support via 'set_groups'/'set_curves':\n   * https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups.html\n   */\n  CURLOPT(CURLOPT_SSL_EC_CURVES, CURLOPTTYPE_STRINGPOINT, 298),\n\n  /* HSTS bitmask */\n  CURLOPT(CURLOPT_HSTS_CTRL, CURLOPTTYPE_LONG, 299),\n  /* HSTS file name */\n  CURLOPT(CURLOPT_HSTS, CURLOPTTYPE_STRINGPOINT, 300),\n\n  /* HSTS read callback */\n  CURLOPT(CURLOPT_HSTSREADFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 301),\n  CURLOPT(CURLOPT_HSTSREADDATA, CURLOPTTYPE_CBPOINT, 302),\n\n  /* HSTS write callback */\n  CURLOPT(CURLOPT_HSTSWRITEFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 303),\n  CURLOPT(CURLOPT_HSTSWRITEDATA, CURLOPTTYPE_CBPOINT, 304),\n\n  /* Parameters for V4 signature */\n  CURLOPT(CURLOPT_AWS_SIGV4, CURLOPTTYPE_STRINGPOINT, 305),\n\n  /* Same as CURLOPT_SSL_VERIFYPEER but for DOH (DNS-over-HTTPS) servers. */\n  CURLOPT(CURLOPT_DOH_SSL_VERIFYPEER, CURLOPTTYPE_LONG, 306),\n\n  /* Same as CURLOPT_SSL_VERIFYHOST but for DOH (DNS-over-HTTPS) servers. */\n  CURLOPT(CURLOPT_DOH_SSL_VERIFYHOST, CURLOPTTYPE_LONG, 307),\n\n  /* Same as CURLOPT_SSL_VERIFYSTATUS but for DOH (DNS-over-HTTPS) servers. */\n  CURLOPT(CURLOPT_DOH_SSL_VERIFYSTATUS, CURLOPTTYPE_LONG, 308),\n\n  /* The CA certificates as \"blob\" used to validate the peer certificate\n     this option is used only if SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_CAINFO_BLOB, CURLOPTTYPE_BLOB, 309),\n\n  /* The CA certificates as \"blob\" used to validate the proxy certificate\n     this option is used only if PROXY_SSL_VERIFYPEER is true */\n  CURLOPT(CURLOPT_PROXY_CAINFO_BLOB, CURLOPTTYPE_BLOB, 310),\n\n  CURLOPT_LASTENTRY /* the last unused */\n} CURLoption;\n\n#ifndef CURL_NO_OLDIES /* define this to test if your app builds with all\n                          the obsolete stuff removed! */\n\n/* Backwards compatibility with older names */\n/* These are scheduled to disappear by 2011 */\n\n/* This was added in version 7.19.1 */\n#define CURLOPT_POST301 CURLOPT_POSTREDIR\n\n/* These are scheduled to disappear by 2009 */\n\n/* The following were added in 7.17.0 */\n#define CURLOPT_SSLKEYPASSWD CURLOPT_KEYPASSWD\n#define CURLOPT_FTPAPPEND CURLOPT_APPEND\n#define CURLOPT_FTPLISTONLY CURLOPT_DIRLISTONLY\n#define CURLOPT_FTP_SSL CURLOPT_USE_SSL\n\n/* The following were added earlier */\n\n#define CURLOPT_SSLCERTPASSWD CURLOPT_KEYPASSWD\n#define CURLOPT_KRB4LEVEL CURLOPT_KRBLEVEL\n\n#else\n/* This is set if CURL_NO_OLDIES is defined at compile-time */\n#undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */\n#endif\n\n\n  /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a host\n     name resolves addresses using more than one IP protocol version, this\n     option might be handy to force libcurl to use a specific IP version. */\n#define CURL_IPRESOLVE_WHATEVER 0 /* default, uses addresses to all IP\n                                     versions that your system allows */\n#define CURL_IPRESOLVE_V4       1 /* uses only IPv4 addresses/connections */\n#define CURL_IPRESOLVE_V6       2 /* uses only IPv6 addresses/connections */\n\n  /* three convenient \"aliases\" that follow the name scheme better */\n#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER\n\n  /* These enums are for use with the CURLOPT_HTTP_VERSION option. */\nenum {\n  CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that we'd\n                             like the library to choose the best possible\n                             for us! */\n  CURL_HTTP_VERSION_1_0,  /* please use HTTP 1.0 in the request */\n  CURL_HTTP_VERSION_1_1,  /* please use HTTP 1.1 in the request */\n  CURL_HTTP_VERSION_2_0,  /* please use HTTP 2 in the request */\n  CURL_HTTP_VERSION_2TLS, /* use version 2 for HTTPS, version 1.1 for HTTP */\n  CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE,  /* please use HTTP 2 without HTTP/1.1\n                                           Upgrade */\n  CURL_HTTP_VERSION_3 = 30, /* Makes use of explicit HTTP/3 without fallback.\n                               Use CURLOPT_ALTSVC to enable HTTP/3 upgrade */\n  CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */\n};\n\n/* Convenience definition simple because the name of the version is HTTP/2 and\n   not 2.0. The 2_0 version of the enum name was set while the version was\n   still planned to be 2.0 and we stick to it for compatibility. */\n#define CURL_HTTP_VERSION_2 CURL_HTTP_VERSION_2_0\n\n/*\n * Public API enums for RTSP requests\n */\nenum {\n    CURL_RTSPREQ_NONE, /* first in list */\n    CURL_RTSPREQ_OPTIONS,\n    CURL_RTSPREQ_DESCRIBE,\n    CURL_RTSPREQ_ANNOUNCE,\n    CURL_RTSPREQ_SETUP,\n    CURL_RTSPREQ_PLAY,\n    CURL_RTSPREQ_PAUSE,\n    CURL_RTSPREQ_TEARDOWN,\n    CURL_RTSPREQ_GET_PARAMETER,\n    CURL_RTSPREQ_SET_PARAMETER,\n    CURL_RTSPREQ_RECORD,\n    CURL_RTSPREQ_RECEIVE,\n    CURL_RTSPREQ_LAST /* last in list */\n};\n\n  /* These enums are for use with the CURLOPT_NETRC option. */\nenum CURL_NETRC_OPTION {\n  CURL_NETRC_IGNORED,     /* The .netrc will never be read.\n                           * This is the default. */\n  CURL_NETRC_OPTIONAL,    /* A user:password in the URL will be preferred\n                           * to one in the .netrc. */\n  CURL_NETRC_REQUIRED,    /* A user:password in the URL will be ignored.\n                           * Unless one is set programmatically, the .netrc\n                           * will be queried. */\n  CURL_NETRC_LAST\n};\n\nenum {\n  CURL_SSLVERSION_DEFAULT,\n  CURL_SSLVERSION_TLSv1, /* TLS 1.x */\n  CURL_SSLVERSION_SSLv2,\n  CURL_SSLVERSION_SSLv3,\n  CURL_SSLVERSION_TLSv1_0,\n  CURL_SSLVERSION_TLSv1_1,\n  CURL_SSLVERSION_TLSv1_2,\n  CURL_SSLVERSION_TLSv1_3,\n\n  CURL_SSLVERSION_LAST /* never use, keep last */\n};\n\nenum {\n  CURL_SSLVERSION_MAX_NONE =     0,\n  CURL_SSLVERSION_MAX_DEFAULT =  (CURL_SSLVERSION_TLSv1   << 16),\n  CURL_SSLVERSION_MAX_TLSv1_0 =  (CURL_SSLVERSION_TLSv1_0 << 16),\n  CURL_SSLVERSION_MAX_TLSv1_1 =  (CURL_SSLVERSION_TLSv1_1 << 16),\n  CURL_SSLVERSION_MAX_TLSv1_2 =  (CURL_SSLVERSION_TLSv1_2 << 16),\n  CURL_SSLVERSION_MAX_TLSv1_3 =  (CURL_SSLVERSION_TLSv1_3 << 16),\n\n  /* never use, keep last */\n  CURL_SSLVERSION_MAX_LAST =     (CURL_SSLVERSION_LAST    << 16)\n};\n\nenum CURL_TLSAUTH {\n  CURL_TLSAUTH_NONE,\n  CURL_TLSAUTH_SRP,\n  CURL_TLSAUTH_LAST /* never use, keep last */\n};\n\n/* symbols to use with CURLOPT_POSTREDIR.\n   CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303\n   can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302\n   | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */\n\n#define CURL_REDIR_GET_ALL  0\n#define CURL_REDIR_POST_301 1\n#define CURL_REDIR_POST_302 2\n#define CURL_REDIR_POST_303 4\n#define CURL_REDIR_POST_ALL \\\n    (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303)\n\ntypedef enum {\n  CURL_TIMECOND_NONE,\n\n  CURL_TIMECOND_IFMODSINCE,\n  CURL_TIMECOND_IFUNMODSINCE,\n  CURL_TIMECOND_LASTMOD,\n\n  CURL_TIMECOND_LAST\n} curl_TimeCond;\n\n/* Special size_t value signaling a null-terminated string. */\n#define CURL_ZERO_TERMINATED ((size_t) -1)\n\n/* curl_strequal() and curl_strnequal() are subject for removal in a future\n   release */\nCURL_EXTERN int curl_strequal(const char *s1, const char *s2);\nCURL_EXTERN int curl_strnequal(const char *s1, const char *s2, size_t n);\n\n/* Mime/form handling support. */\ntypedef struct curl_mime      curl_mime;      /* Mime context. */\ntypedef struct curl_mimepart  curl_mimepart;  /* Mime part context. */\n\n/*\n * NAME curl_mime_init()\n *\n * DESCRIPTION\n *\n * Create a mime context and return its handle. The easy parameter is the\n * target handle.\n */\nCURL_EXTERN curl_mime *curl_mime_init(CURL *easy);\n\n/*\n * NAME curl_mime_free()\n *\n * DESCRIPTION\n *\n * release a mime handle and its substructures.\n */\nCURL_EXTERN void curl_mime_free(curl_mime *mime);\n\n/*\n * NAME curl_mime_addpart()\n *\n * DESCRIPTION\n *\n * Append a new empty part to the given mime context and return a handle to\n * the created part.\n */\nCURL_EXTERN curl_mimepart *curl_mime_addpart(curl_mime *mime);\n\n/*\n * NAME curl_mime_name()\n *\n * DESCRIPTION\n *\n * Set mime/form part name.\n */\nCURL_EXTERN CURLcode curl_mime_name(curl_mimepart *part, const char *name);\n\n/*\n * NAME curl_mime_filename()\n *\n * DESCRIPTION\n *\n * Set mime part remote file name.\n */\nCURL_EXTERN CURLcode curl_mime_filename(curl_mimepart *part,\n                                        const char *filename);\n\n/*\n * NAME curl_mime_type()\n *\n * DESCRIPTION\n *\n * Set mime part type.\n */\nCURL_EXTERN CURLcode curl_mime_type(curl_mimepart *part, const char *mimetype);\n\n/*\n * NAME curl_mime_encoder()\n *\n * DESCRIPTION\n *\n * Set mime data transfer encoder.\n */\nCURL_EXTERN CURLcode curl_mime_encoder(curl_mimepart *part,\n                                       const char *encoding);\n\n/*\n * NAME curl_mime_data()\n *\n * DESCRIPTION\n *\n * Set mime part data source from memory data,\n */\nCURL_EXTERN CURLcode curl_mime_data(curl_mimepart *part,\n                                    const char *data, size_t datasize);\n\n/*\n * NAME curl_mime_filedata()\n *\n * DESCRIPTION\n *\n * Set mime part data source from named file.\n */\nCURL_EXTERN CURLcode curl_mime_filedata(curl_mimepart *part,\n                                        const char *filename);\n\n/*\n * NAME curl_mime_data_cb()\n *\n * DESCRIPTION\n *\n * Set mime part data source from callback function.\n */\nCURL_EXTERN CURLcode curl_mime_data_cb(curl_mimepart *part,\n                                       curl_off_t datasize,\n                                       curl_read_callback readfunc,\n                                       curl_seek_callback seekfunc,\n                                       curl_free_callback freefunc,\n                                       void *arg);\n\n/*\n * NAME curl_mime_subparts()\n *\n * DESCRIPTION\n *\n * Set mime part data source from subparts.\n */\nCURL_EXTERN CURLcode curl_mime_subparts(curl_mimepart *part,\n                                        curl_mime *subparts);\n/*\n * NAME curl_mime_headers()\n *\n * DESCRIPTION\n *\n * Set mime part headers.\n */\nCURL_EXTERN CURLcode curl_mime_headers(curl_mimepart *part,\n                                       struct curl_slist *headers,\n                                       int take_ownership);\n\ntypedef enum {\n  CURLFORM_NOTHING,        /********* the first one is unused ************/\n  CURLFORM_COPYNAME,\n  CURLFORM_PTRNAME,\n  CURLFORM_NAMELENGTH,\n  CURLFORM_COPYCONTENTS,\n  CURLFORM_PTRCONTENTS,\n  CURLFORM_CONTENTSLENGTH,\n  CURLFORM_FILECONTENT,\n  CURLFORM_ARRAY,\n  CURLFORM_OBSOLETE,\n  CURLFORM_FILE,\n\n  CURLFORM_BUFFER,\n  CURLFORM_BUFFERPTR,\n  CURLFORM_BUFFERLENGTH,\n\n  CURLFORM_CONTENTTYPE,\n  CURLFORM_CONTENTHEADER,\n  CURLFORM_FILENAME,\n  CURLFORM_END,\n  CURLFORM_OBSOLETE2,\n\n  CURLFORM_STREAM,\n  CURLFORM_CONTENTLEN, /* added in 7.46.0, provide a curl_off_t length */\n\n  CURLFORM_LASTENTRY /* the last unused */\n} CURLformoption;\n\n/* structure to be used as parameter for CURLFORM_ARRAY */\nstruct curl_forms {\n  CURLformoption option;\n  const char     *value;\n};\n\n/* use this for multipart formpost building */\n/* Returns code for curl_formadd()\n *\n * Returns:\n * CURL_FORMADD_OK             on success\n * CURL_FORMADD_MEMORY         if the FormInfo allocation fails\n * CURL_FORMADD_OPTION_TWICE   if one option is given twice for one Form\n * CURL_FORMADD_NULL           if a null pointer was given for a char\n * CURL_FORMADD_MEMORY         if the allocation of a FormInfo struct failed\n * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used\n * CURL_FORMADD_INCOMPLETE     if the some FormInfo is not complete (or error)\n * CURL_FORMADD_MEMORY         if a curl_httppost struct cannot be allocated\n * CURL_FORMADD_MEMORY         if some allocation for string copying failed.\n * CURL_FORMADD_ILLEGAL_ARRAY  if an illegal option is used in an array\n *\n ***************************************************************************/\ntypedef enum {\n  CURL_FORMADD_OK, /* first, no error */\n\n  CURL_FORMADD_MEMORY,\n  CURL_FORMADD_OPTION_TWICE,\n  CURL_FORMADD_NULL,\n  CURL_FORMADD_UNKNOWN_OPTION,\n  CURL_FORMADD_INCOMPLETE,\n  CURL_FORMADD_ILLEGAL_ARRAY,\n  CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */\n\n  CURL_FORMADD_LAST /* last */\n} CURLFORMcode;\n\n/*\n * NAME curl_formadd()\n *\n * DESCRIPTION\n *\n * Pretty advanced function for building multi-part formposts. Each invoke\n * adds one part that together construct a full post. Then use\n * CURLOPT_HTTPPOST to send it off to libcurl.\n */\nCURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost,\n                                      struct curl_httppost **last_post,\n                                      ...);\n\n/*\n * callback function for curl_formget()\n * The void *arg pointer will be the one passed as second argument to\n *   curl_formget().\n * The character buffer passed to it must not be freed.\n * Should return the buffer length passed to it as the argument \"len\" on\n *   success.\n */\ntypedef size_t (*curl_formget_callback)(void *arg, const char *buf,\n                                        size_t len);\n\n/*\n * NAME curl_formget()\n *\n * DESCRIPTION\n *\n * Serialize a curl_httppost struct built with curl_formadd().\n * Accepts a void pointer as second argument which will be passed to\n * the curl_formget_callback function.\n * Returns 0 on success.\n */\nCURL_EXTERN int curl_formget(struct curl_httppost *form, void *arg,\n                             curl_formget_callback append);\n/*\n * NAME curl_formfree()\n *\n * DESCRIPTION\n *\n * Free a multipart formpost previously built with curl_formadd().\n */\nCURL_EXTERN void curl_formfree(struct curl_httppost *form);\n\n/*\n * NAME curl_getenv()\n *\n * DESCRIPTION\n *\n * Returns a malloc()'ed string that MUST be curl_free()ed after usage is\n * complete. DEPRECATED - see lib/README.curlx\n */\nCURL_EXTERN char *curl_getenv(const char *variable);\n\n/*\n * NAME curl_version()\n *\n * DESCRIPTION\n *\n * Returns a static ascii string of the libcurl version.\n */\nCURL_EXTERN char *curl_version(void);\n\n/*\n * NAME curl_easy_escape()\n *\n * DESCRIPTION\n *\n * Escapes URL strings (converts all letters consider illegal in URLs to their\n * %XX versions). This function returns a new allocated string or NULL if an\n * error occurred.\n */\nCURL_EXTERN char *curl_easy_escape(CURL *handle,\n                                   const char *string,\n                                   int length);\n\n/* the previous version: */\nCURL_EXTERN char *curl_escape(const char *string,\n                              int length);\n\n\n/*\n * NAME curl_easy_unescape()\n *\n * DESCRIPTION\n *\n * Unescapes URL encoding in strings (converts all %XX codes to their 8bit\n * versions). This function returns a new allocated string or NULL if an error\n * occurred.\n * Conversion Note: On non-ASCII platforms the ASCII %XX codes are\n * converted into the host encoding.\n */\nCURL_EXTERN char *curl_easy_unescape(CURL *handle,\n                                     const char *string,\n                                     int length,\n                                     int *outlength);\n\n/* the previous version */\nCURL_EXTERN char *curl_unescape(const char *string,\n                                int length);\n\n/*\n * NAME curl_free()\n *\n * DESCRIPTION\n *\n * Provided for de-allocation in the same translation unit that did the\n * allocation. Added in libcurl 7.10\n */\nCURL_EXTERN void curl_free(void *p);\n\n/*\n * NAME curl_global_init()\n *\n * DESCRIPTION\n *\n * curl_global_init() should be invoked exactly once for each application that\n * uses libcurl and before any call of other libcurl functions.\n *\n * This function is not thread-safe!\n */\nCURL_EXTERN CURLcode curl_global_init(long flags);\n\n/*\n * NAME curl_global_init_mem()\n *\n * DESCRIPTION\n *\n * curl_global_init() or curl_global_init_mem() should be invoked exactly once\n * for each application that uses libcurl.  This function can be used to\n * initialize libcurl and set user defined memory management callback\n * functions.  Users can implement memory management routines to check for\n * memory leaks, check for mis-use of the curl library etc.  User registered\n * callback routines will be invoked by this library instead of the system\n * memory management routines like malloc, free etc.\n */\nCURL_EXTERN CURLcode curl_global_init_mem(long flags,\n                                          curl_malloc_callback m,\n                                          curl_free_callback f,\n                                          curl_realloc_callback r,\n                                          curl_strdup_callback s,\n                                          curl_calloc_callback c);\n\n/*\n * NAME curl_global_cleanup()\n *\n * DESCRIPTION\n *\n * curl_global_cleanup() should be invoked exactly once for each application\n * that uses libcurl\n */\nCURL_EXTERN void curl_global_cleanup(void);\n\n/* linked-list structure for the CURLOPT_QUOTE option (and other) */\nstruct curl_slist {\n  char *data;\n  struct curl_slist *next;\n};\n\n/*\n * NAME curl_global_sslset()\n *\n * DESCRIPTION\n *\n * When built with multiple SSL backends, curl_global_sslset() allows to\n * choose one. This function can only be called once, and it must be called\n * *before* curl_global_init().\n *\n * The backend can be identified by the id (e.g. CURLSSLBACKEND_OPENSSL). The\n * backend can also be specified via the name parameter (passing -1 as id).\n * If both id and name are specified, the name will be ignored. If neither id\n * nor name are specified, the function will fail with\n * CURLSSLSET_UNKNOWN_BACKEND and set the \"avail\" pointer to the\n * NULL-terminated list of available backends.\n *\n * Upon success, the function returns CURLSSLSET_OK.\n *\n * If the specified SSL backend is not available, the function returns\n * CURLSSLSET_UNKNOWN_BACKEND and sets the \"avail\" pointer to a NULL-terminated\n * list of available SSL backends.\n *\n * The SSL backend can be set only once. If it has already been set, a\n * subsequent attempt to change it will result in a CURLSSLSET_TOO_LATE.\n */\n\nstruct curl_ssl_backend {\n  curl_sslbackend id;\n  const char *name;\n};\ntypedef struct curl_ssl_backend curl_ssl_backend;\n\ntypedef enum {\n  CURLSSLSET_OK = 0,\n  CURLSSLSET_UNKNOWN_BACKEND,\n  CURLSSLSET_TOO_LATE,\n  CURLSSLSET_NO_BACKENDS /* libcurl was built without any SSL support */\n} CURLsslset;\n\nCURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name,\n                                          const curl_ssl_backend ***avail);\n\n/*\n * NAME curl_slist_append()\n *\n * DESCRIPTION\n *\n * Appends a string to a linked list. If no list exists, it will be created\n * first. Returns the new list, after appending.\n */\nCURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *,\n                                                 const char *);\n\n/*\n * NAME curl_slist_free_all()\n *\n * DESCRIPTION\n *\n * free a previously built curl_slist.\n */\nCURL_EXTERN void curl_slist_free_all(struct curl_slist *);\n\n/*\n * NAME curl_getdate()\n *\n * DESCRIPTION\n *\n * Returns the time, in seconds since 1 Jan 1970 of the time string given in\n * the first argument. The time argument in the second parameter is unused\n * and should be set to NULL.\n */\nCURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused);\n\n/* info about the certificate chain, only for OpenSSL, GnuTLS, Schannel, NSS\n   and GSKit builds. Asked for with CURLOPT_CERTINFO / CURLINFO_CERTINFO */\nstruct curl_certinfo {\n  int num_of_certs;             /* number of certificates with information */\n  struct curl_slist **certinfo; /* for each index in this array, there's a\n                                   linked list with textual information in the\n                                   format \"name: value\" */\n};\n\n/* Information about the SSL library used and the respective internal SSL\n   handle, which can be used to obtain further information regarding the\n   connection. Asked for with CURLINFO_TLS_SSL_PTR or CURLINFO_TLS_SESSION. */\nstruct curl_tlssessioninfo {\n  curl_sslbackend backend;\n  void *internals;\n};\n\n#define CURLINFO_STRING   0x100000\n#define CURLINFO_LONG     0x200000\n#define CURLINFO_DOUBLE   0x300000\n#define CURLINFO_SLIST    0x400000\n#define CURLINFO_PTR      0x400000 /* same as SLIST */\n#define CURLINFO_SOCKET   0x500000\n#define CURLINFO_OFF_T    0x600000\n#define CURLINFO_MASK     0x0fffff\n#define CURLINFO_TYPEMASK 0xf00000\n\ntypedef enum {\n  CURLINFO_NONE, /* first, never use this */\n  CURLINFO_EFFECTIVE_URL    = CURLINFO_STRING + 1,\n  CURLINFO_RESPONSE_CODE    = CURLINFO_LONG   + 2,\n  CURLINFO_TOTAL_TIME       = CURLINFO_DOUBLE + 3,\n  CURLINFO_NAMELOOKUP_TIME  = CURLINFO_DOUBLE + 4,\n  CURLINFO_CONNECT_TIME     = CURLINFO_DOUBLE + 5,\n  CURLINFO_PRETRANSFER_TIME = CURLINFO_DOUBLE + 6,\n  CURLINFO_SIZE_UPLOAD      = CURLINFO_DOUBLE + 7,\n  CURLINFO_SIZE_UPLOAD_T    = CURLINFO_OFF_T  + 7,\n  CURLINFO_SIZE_DOWNLOAD    = CURLINFO_DOUBLE + 8,\n  CURLINFO_SIZE_DOWNLOAD_T  = CURLINFO_OFF_T  + 8,\n  CURLINFO_SPEED_DOWNLOAD   = CURLINFO_DOUBLE + 9,\n  CURLINFO_SPEED_DOWNLOAD_T = CURLINFO_OFF_T  + 9,\n  CURLINFO_SPEED_UPLOAD     = CURLINFO_DOUBLE + 10,\n  CURLINFO_SPEED_UPLOAD_T   = CURLINFO_OFF_T  + 10,\n  CURLINFO_HEADER_SIZE      = CURLINFO_LONG   + 11,\n  CURLINFO_REQUEST_SIZE     = CURLINFO_LONG   + 12,\n  CURLINFO_SSL_VERIFYRESULT = CURLINFO_LONG   + 13,\n  CURLINFO_FILETIME         = CURLINFO_LONG   + 14,\n  CURLINFO_FILETIME_T       = CURLINFO_OFF_T  + 14,\n  CURLINFO_CONTENT_LENGTH_DOWNLOAD   = CURLINFO_DOUBLE + 15,\n  CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = CURLINFO_OFF_T  + 15,\n  CURLINFO_CONTENT_LENGTH_UPLOAD     = CURLINFO_DOUBLE + 16,\n  CURLINFO_CONTENT_LENGTH_UPLOAD_T   = CURLINFO_OFF_T  + 16,\n  CURLINFO_STARTTRANSFER_TIME = CURLINFO_DOUBLE + 17,\n  CURLINFO_CONTENT_TYPE     = CURLINFO_STRING + 18,\n  CURLINFO_REDIRECT_TIME    = CURLINFO_DOUBLE + 19,\n  CURLINFO_REDIRECT_COUNT   = CURLINFO_LONG   + 20,\n  CURLINFO_PRIVATE          = CURLINFO_STRING + 21,\n  CURLINFO_HTTP_CONNECTCODE = CURLINFO_LONG   + 22,\n  CURLINFO_HTTPAUTH_AVAIL   = CURLINFO_LONG   + 23,\n  CURLINFO_PROXYAUTH_AVAIL  = CURLINFO_LONG   + 24,\n  CURLINFO_OS_ERRNO         = CURLINFO_LONG   + 25,\n  CURLINFO_NUM_CONNECTS     = CURLINFO_LONG   + 26,\n  CURLINFO_SSL_ENGINES      = CURLINFO_SLIST  + 27,\n  CURLINFO_COOKIELIST       = CURLINFO_SLIST  + 28,\n  CURLINFO_LASTSOCKET       = CURLINFO_LONG   + 29,\n  CURLINFO_FTP_ENTRY_PATH   = CURLINFO_STRING + 30,\n  CURLINFO_REDIRECT_URL     = CURLINFO_STRING + 31,\n  CURLINFO_PRIMARY_IP       = CURLINFO_STRING + 32,\n  CURLINFO_APPCONNECT_TIME  = CURLINFO_DOUBLE + 33,\n  CURLINFO_CERTINFO         = CURLINFO_PTR    + 34,\n  CURLINFO_CONDITION_UNMET  = CURLINFO_LONG   + 35,\n  CURLINFO_RTSP_SESSION_ID  = CURLINFO_STRING + 36,\n  CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG   + 37,\n  CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG   + 38,\n  CURLINFO_RTSP_CSEQ_RECV   = CURLINFO_LONG   + 39,\n  CURLINFO_PRIMARY_PORT     = CURLINFO_LONG   + 40,\n  CURLINFO_LOCAL_IP         = CURLINFO_STRING + 41,\n  CURLINFO_LOCAL_PORT       = CURLINFO_LONG   + 42,\n  CURLINFO_TLS_SESSION      = CURLINFO_PTR    + 43,\n  CURLINFO_ACTIVESOCKET     = CURLINFO_SOCKET + 44,\n  CURLINFO_TLS_SSL_PTR      = CURLINFO_PTR    + 45,\n  CURLINFO_HTTP_VERSION     = CURLINFO_LONG   + 46,\n  CURLINFO_PROXY_SSL_VERIFYRESULT = CURLINFO_LONG + 47,\n  CURLINFO_PROTOCOL         = CURLINFO_LONG   + 48,\n  CURLINFO_SCHEME           = CURLINFO_STRING + 49,\n  CURLINFO_TOTAL_TIME_T     = CURLINFO_OFF_T + 50,\n  CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51,\n  CURLINFO_CONNECT_TIME_T   = CURLINFO_OFF_T + 52,\n  CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,\n  CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,\n  CURLINFO_REDIRECT_TIME_T  = CURLINFO_OFF_T + 55,\n  CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,\n  CURLINFO_RETRY_AFTER      = CURLINFO_OFF_T + 57,\n  CURLINFO_EFFECTIVE_METHOD = CURLINFO_STRING + 58,\n  CURLINFO_PROXY_ERROR      = CURLINFO_LONG + 59,\n  CURLINFO_REFERER          = CURLINFO_STRING + 60,\n\n  CURLINFO_LASTONE          = 60\n} CURLINFO;\n\n/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as\n   CURLINFO_HTTP_CODE */\n#define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE\n\ntypedef enum {\n  CURLCLOSEPOLICY_NONE, /* first, never use this */\n\n  CURLCLOSEPOLICY_OLDEST,\n  CURLCLOSEPOLICY_LEAST_RECENTLY_USED,\n  CURLCLOSEPOLICY_LEAST_TRAFFIC,\n  CURLCLOSEPOLICY_SLOWEST,\n  CURLCLOSEPOLICY_CALLBACK,\n\n  CURLCLOSEPOLICY_LAST /* last, never use this */\n} curl_closepolicy;\n\n#define CURL_GLOBAL_SSL (1<<0) /* no purpose since since 7.57.0 */\n#define CURL_GLOBAL_WIN32 (1<<1)\n#define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32)\n#define CURL_GLOBAL_NOTHING 0\n#define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL\n#define CURL_GLOBAL_ACK_EINTR (1<<2)\n\n\n/*****************************************************************************\n * Setup defines, protos etc for the sharing stuff.\n */\n\n/* Different data locks for a single share */\ntypedef enum {\n  CURL_LOCK_DATA_NONE = 0,\n  /*  CURL_LOCK_DATA_SHARE is used internally to say that\n   *  the locking is just made to change the internal state of the share\n   *  itself.\n   */\n  CURL_LOCK_DATA_SHARE,\n  CURL_LOCK_DATA_COOKIE,\n  CURL_LOCK_DATA_DNS,\n  CURL_LOCK_DATA_SSL_SESSION,\n  CURL_LOCK_DATA_CONNECT,\n  CURL_LOCK_DATA_PSL,\n  CURL_LOCK_DATA_LAST\n} curl_lock_data;\n\n/* Different lock access types */\ntypedef enum {\n  CURL_LOCK_ACCESS_NONE = 0,   /* unspecified action */\n  CURL_LOCK_ACCESS_SHARED = 1, /* for read perhaps */\n  CURL_LOCK_ACCESS_SINGLE = 2, /* for write perhaps */\n  CURL_LOCK_ACCESS_LAST        /* never use */\n} curl_lock_access;\n\ntypedef void (*curl_lock_function)(CURL *handle,\n                                   curl_lock_data data,\n                                   curl_lock_access locktype,\n                                   void *userptr);\ntypedef void (*curl_unlock_function)(CURL *handle,\n                                     curl_lock_data data,\n                                     void *userptr);\n\n\ntypedef enum {\n  CURLSHE_OK,  /* all is fine */\n  CURLSHE_BAD_OPTION, /* 1 */\n  CURLSHE_IN_USE,     /* 2 */\n  CURLSHE_INVALID,    /* 3 */\n  CURLSHE_NOMEM,      /* 4 out of memory */\n  CURLSHE_NOT_BUILT_IN, /* 5 feature not present in lib */\n  CURLSHE_LAST        /* never use */\n} CURLSHcode;\n\ntypedef enum {\n  CURLSHOPT_NONE,  /* don't use */\n  CURLSHOPT_SHARE,   /* specify a data type to share */\n  CURLSHOPT_UNSHARE, /* specify which data type to stop sharing */\n  CURLSHOPT_LOCKFUNC,   /* pass in a 'curl_lock_function' pointer */\n  CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */\n  CURLSHOPT_USERDATA,   /* pass in a user data pointer used in the lock/unlock\n                           callback functions */\n  CURLSHOPT_LAST  /* never use */\n} CURLSHoption;\n\nCURL_EXTERN CURLSH *curl_share_init(void);\nCURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, ...);\nCURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *);\n\n/****************************************************************************\n * Structures for querying information about the curl library at runtime.\n */\n\ntypedef enum {\n  CURLVERSION_FIRST,\n  CURLVERSION_SECOND,\n  CURLVERSION_THIRD,\n  CURLVERSION_FOURTH,\n  CURLVERSION_FIFTH,\n  CURLVERSION_SIXTH,\n  CURLVERSION_SEVENTH,\n  CURLVERSION_EIGHTH,\n  CURLVERSION_NINTH,\n  CURLVERSION_TENTH,\n  CURLVERSION_LAST /* never actually use this */\n} CURLversion;\n\n/* The 'CURLVERSION_NOW' is the symbolic name meant to be used by\n   basically all programs ever that want to get version information. It is\n   meant to be a built-in version number for what kind of struct the caller\n   expects. If the struct ever changes, we redefine the NOW to another enum\n   from above. */\n#define CURLVERSION_NOW CURLVERSION_TENTH\n\nstruct curl_version_info_data {\n  CURLversion age;          /* age of the returned struct */\n  const char *version;      /* LIBCURL_VERSION */\n  unsigned int version_num; /* LIBCURL_VERSION_NUM */\n  const char *host;         /* OS/host/cpu/machine when configured */\n  int features;             /* bitmask, see defines below */\n  const char *ssl_version;  /* human readable string */\n  long ssl_version_num;     /* not used anymore, always 0 */\n  const char *libz_version; /* human readable string */\n  /* protocols is terminated by an entry with a NULL protoname */\n  const char * const *protocols;\n\n  /* The fields below this were added in CURLVERSION_SECOND */\n  const char *ares;\n  int ares_num;\n\n  /* This field was added in CURLVERSION_THIRD */\n  const char *libidn;\n\n  /* These field were added in CURLVERSION_FOURTH */\n\n  /* Same as '_libiconv_version' if built with HAVE_ICONV */\n  int iconv_ver_num;\n\n  const char *libssh_version; /* human readable string */\n\n  /* These fields were added in CURLVERSION_FIFTH */\n  unsigned int brotli_ver_num; /* Numeric Brotli version\n                                  (MAJOR << 24) | (MINOR << 12) | PATCH */\n  const char *brotli_version; /* human readable string. */\n\n  /* These fields were added in CURLVERSION_SIXTH */\n  unsigned int nghttp2_ver_num; /* Numeric nghttp2 version\n                                   (MAJOR << 16) | (MINOR << 8) | PATCH */\n  const char *nghttp2_version; /* human readable string. */\n  const char *quic_version;    /* human readable quic (+ HTTP/3) library +\n                                  version or NULL */\n\n  /* These fields were added in CURLVERSION_SEVENTH */\n  const char *cainfo;          /* the built-in default CURLOPT_CAINFO, might\n                                  be NULL */\n  const char *capath;          /* the built-in default CURLOPT_CAPATH, might\n                                  be NULL */\n\n  /* These fields were added in CURLVERSION_EIGHTH */\n  unsigned int zstd_ver_num; /* Numeric Zstd version\n                                  (MAJOR << 24) | (MINOR << 12) | PATCH */\n  const char *zstd_version; /* human readable string. */\n\n  /* These fields were added in CURLVERSION_NINTH */\n  const char *hyper_version; /* human readable string. */\n\n  /* These fields were added in CURLVERSION_TENTH */\n  const char *gsasl_version; /* human readable string. */\n};\ntypedef struct curl_version_info_data curl_version_info_data;\n\n#define CURL_VERSION_IPV6         (1<<0)  /* IPv6-enabled */\n#define CURL_VERSION_KERBEROS4    (1<<1)  /* Kerberos V4 auth is supported\n                                             (deprecated) */\n#define CURL_VERSION_SSL          (1<<2)  /* SSL options are present */\n#define CURL_VERSION_LIBZ         (1<<3)  /* libz features are present */\n#define CURL_VERSION_NTLM         (1<<4)  /* NTLM auth is supported */\n#define CURL_VERSION_GSSNEGOTIATE (1<<5)  /* Negotiate auth is supported\n                                             (deprecated) */\n#define CURL_VERSION_DEBUG        (1<<6)  /* Built with debug capabilities */\n#define CURL_VERSION_ASYNCHDNS    (1<<7)  /* Asynchronous DNS resolves */\n#define CURL_VERSION_SPNEGO       (1<<8)  /* SPNEGO auth is supported */\n#define CURL_VERSION_LARGEFILE    (1<<9)  /* Supports files larger than 2GB */\n#define CURL_VERSION_IDN          (1<<10) /* Internationized Domain Names are\n                                             supported */\n#define CURL_VERSION_SSPI         (1<<11) /* Built against Windows SSPI */\n#define CURL_VERSION_CONV         (1<<12) /* Character conversions supported */\n#define CURL_VERSION_CURLDEBUG    (1<<13) /* Debug memory tracking supported */\n#define CURL_VERSION_TLSAUTH_SRP  (1<<14) /* TLS-SRP auth is supported */\n#define CURL_VERSION_NTLM_WB      (1<<15) /* NTLM delegation to winbind helper\n                                             is supported */\n#define CURL_VERSION_HTTP2        (1<<16) /* HTTP2 support built-in */\n#define CURL_VERSION_GSSAPI       (1<<17) /* Built against a GSS-API library */\n#define CURL_VERSION_KERBEROS5    (1<<18) /* Kerberos V5 auth is supported */\n#define CURL_VERSION_UNIX_SOCKETS (1<<19) /* Unix domain sockets support */\n#define CURL_VERSION_PSL          (1<<20) /* Mozilla's Public Suffix List, used\n                                             for cookie domain verification */\n#define CURL_VERSION_HTTPS_PROXY  (1<<21) /* HTTPS-proxy support built-in */\n#define CURL_VERSION_MULTI_SSL    (1<<22) /* Multiple SSL backends available */\n#define CURL_VERSION_BROTLI       (1<<23) /* Brotli features are present. */\n#define CURL_VERSION_ALTSVC       (1<<24) /* Alt-Svc handling built-in */\n#define CURL_VERSION_HTTP3        (1<<25) /* HTTP3 support built-in */\n#define CURL_VERSION_ZSTD         (1<<26) /* zstd features are present */\n#define CURL_VERSION_UNICODE      (1<<27) /* Unicode support on Windows */\n#define CURL_VERSION_HSTS         (1<<28) /* HSTS is supported */\n#define CURL_VERSION_GSASL        (1<<29) /* libgsasl is supported */\n\n /*\n * NAME curl_version_info()\n *\n * DESCRIPTION\n *\n * This function returns a pointer to a static copy of the version info\n * struct. See above.\n */\nCURL_EXTERN curl_version_info_data *curl_version_info(CURLversion);\n\n/*\n * NAME curl_easy_strerror()\n *\n * DESCRIPTION\n *\n * The curl_easy_strerror function may be used to turn a CURLcode value\n * into the equivalent human readable error string.  This is useful\n * for printing meaningful error messages.\n */\nCURL_EXTERN const char *curl_easy_strerror(CURLcode);\n\n/*\n * NAME curl_share_strerror()\n *\n * DESCRIPTION\n *\n * The curl_share_strerror function may be used to turn a CURLSHcode value\n * into the equivalent human readable error string.  This is useful\n * for printing meaningful error messages.\n */\nCURL_EXTERN const char *curl_share_strerror(CURLSHcode);\n\n/*\n * NAME curl_easy_pause()\n *\n * DESCRIPTION\n *\n * The curl_easy_pause function pauses or unpauses transfers. Select the new\n * state by setting the bitmask, use the convenience defines below.\n *\n */\nCURL_EXTERN CURLcode curl_easy_pause(CURL *handle, int bitmask);\n\n#define CURLPAUSE_RECV      (1<<0)\n#define CURLPAUSE_RECV_CONT (0)\n\n#define CURLPAUSE_SEND      (1<<2)\n#define CURLPAUSE_SEND_CONT (0)\n\n#define CURLPAUSE_ALL       (CURLPAUSE_RECV|CURLPAUSE_SEND)\n#define CURLPAUSE_CONT      (CURLPAUSE_RECV_CONT|CURLPAUSE_SEND_CONT)\n\n#ifdef  __cplusplus\n}\n#endif\n\n/* unfortunately, the easy.h and multi.h include files need options and info\n  stuff before they can be included! */\n#include \"easy.h\" /* nothing in curl is fun without the easy stuff */\n#include \"multi.h\"\n#include \"urlapi.h\"\n#include \"options.h\"\n\n/* the typechecker doesn't work in C++ (yet) */\n#if defined(__GNUC__) && defined(__GNUC_MINOR__) && \\\n    ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && \\\n    !defined(__cplusplus) && !defined(CURL_DISABLE_TYPECHECK)\n#include \"typecheck-gcc.h\"\n#else\n#if defined(__STDC__) && (__STDC__ >= 1)\n/* This preprocessor magic that replaces a call with the exact same call is\n   only done to make sure application authors pass exactly three arguments\n   to these functions. */\n#define curl_easy_setopt(handle,opt,param) curl_easy_setopt(handle,opt,param)\n#define curl_easy_getinfo(handle,info,arg) curl_easy_getinfo(handle,info,arg)\n#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)\n#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)\n#endif /* __STDC__ >= 1 */\n#endif /* gcc >= 4.3 && !__cplusplus */\n\n#endif /* CURLINC_CURL_H */\n"
  },
  {
    "path": "libraries/curl/curlver.h",
    "content": "#ifndef CURLINC_CURLVER_H\n#define CURLINC_CURLVER_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n/* This header file contains nothing but libcurl version info, generated by\n   a script at release-time. This was made its own header file in 7.11.2 */\n\n/* This is the global package copyright */\n#define LIBCURL_COPYRIGHT \"1996 - 2021 Daniel Stenberg, <daniel@haxx.se>.\"\n\n/* This is the version number of the libcurl package from which this header\n   file origins: */\n#define LIBCURL_VERSION \"7.77.0-DEV\"\n\n/* The numeric version number is also available \"in parts\" by using these\n   defines: */\n#define LIBCURL_VERSION_MAJOR 7\n#define LIBCURL_VERSION_MINOR 77\n#define LIBCURL_VERSION_PATCH 0\n\n/* This is the numeric version of the libcurl version number, meant for easier\n   parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will\n   always follow this syntax:\n\n         0xXXYYZZ\n\n   Where XX, YY and ZZ are the main version, release and patch numbers in\n   hexadecimal (using 8 bits each). All three numbers are always represented\n   using two digits.  1.2 would appear as \"0x010200\" while version 9.11.7\n   appears as \"0x090b07\".\n\n   This 6-digit (24 bits) hexadecimal number does not show pre-release number,\n   and it is always a greater number in a more recent release. It makes\n   comparisons with greater than and less than work.\n\n   Note: This define is the full hex number and _does not_ use the\n   CURL_VERSION_BITS() macro since curl's own configure script greps for it\n   and needs it to contain the full number.\n*/\n#define LIBCURL_VERSION_NUM 0x074d00\n\n/*\n * This is the date and time when the full source package was created. The\n * timestamp is not stored in git, as the timestamp is properly set in the\n * tarballs by the maketgz script.\n *\n * The format of the date follows this template:\n *\n * \"2007-11-23\"\n */\n#define LIBCURL_TIMESTAMP \"[unreleased]\"\n\n#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))\n#define CURL_AT_LEAST_VERSION(x,y,z) \\\n  (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))\n\n#endif /* CURLINC_CURLVER_H */\n"
  },
  {
    "path": "libraries/curl/easy.h",
    "content": "#ifndef CURLINC_EASY_H\n#define CURLINC_EASY_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\n/* Flag bits in the curl_blob struct: */\n#define CURL_BLOB_COPY   1 /* tell libcurl to copy the data */\n#define CURL_BLOB_NOCOPY 0 /* tell libcurl to NOT copy the data */\n\nstruct curl_blob {\n  void *data;\n  size_t len;\n  unsigned int flags; /* bit 0 is defined, the rest are reserved and should be\n                         left zeroes */\n};\n\nCURL_EXTERN CURL *curl_easy_init(void);\nCURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);\nCURL_EXTERN CURLcode curl_easy_perform(CURL *curl);\nCURL_EXTERN void curl_easy_cleanup(CURL *curl);\n\n/*\n * NAME curl_easy_getinfo()\n *\n * DESCRIPTION\n *\n * Request internal information from the curl session with this function.  The\n * third argument MUST be a pointer to a long, a pointer to a char * or a\n * pointer to a double (as the documentation describes elsewhere).  The data\n * pointed to will be filled in accordingly and can be relied upon only if the\n * function returns CURLE_OK.  This function is intended to get used *AFTER* a\n * performed transfer, all results from this function are undefined until the\n * transfer is completed.\n */\nCURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);\n\n\n/*\n * NAME curl_easy_duphandle()\n *\n * DESCRIPTION\n *\n * Creates a new curl session handle with the same options set for the handle\n * passed in. Duplicating a handle could only be a matter of cloning data and\n * options, internal state info and things like persistent connections cannot\n * be transferred. It is useful in multithreaded applications when you can run\n * curl_easy_duphandle() for each new thread to avoid a series of identical\n * curl_easy_setopt() invokes in every thread.\n */\nCURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);\n\n/*\n * NAME curl_easy_reset()\n *\n * DESCRIPTION\n *\n * Re-initializes a CURL handle to the default values. This puts back the\n * handle to the same state as it was in when it was just created.\n *\n * It does keep: live connections, the Session ID cache, the DNS cache and the\n * cookies.\n */\nCURL_EXTERN void curl_easy_reset(CURL *curl);\n\n/*\n * NAME curl_easy_recv()\n *\n * DESCRIPTION\n *\n * Receives data from the connected socket. Use after successful\n * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.\n */\nCURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,\n                                    size_t *n);\n\n/*\n * NAME curl_easy_send()\n *\n * DESCRIPTION\n *\n * Sends data over the connected socket. Use after successful\n * curl_easy_perform() with CURLOPT_CONNECT_ONLY option.\n */\nCURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,\n                                    size_t buflen, size_t *n);\n\n\n/*\n * NAME curl_easy_upkeep()\n *\n * DESCRIPTION\n *\n * Performs connection upkeep for the given session handle.\n */\nCURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);\n\n#ifdef  __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/curl/mprintf.h",
    "content": "#ifndef CURLINC_MPRINTF_H\n#define CURLINC_MPRINTF_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n#include <stdarg.h>\n#include <stdio.h> /* needed for FILE */\n#include \"curl.h\"  /* for CURL_EXTERN */\n\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\nCURL_EXTERN int curl_mprintf(const char *format, ...);\nCURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...);\nCURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...);\nCURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,\n                               const char *format, ...);\nCURL_EXTERN int curl_mvprintf(const char *format, va_list args);\nCURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args);\nCURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args);\nCURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,\n                                const char *format, va_list args);\nCURL_EXTERN char *curl_maprintf(const char *format, ...);\nCURL_EXTERN char *curl_mvaprintf(const char *format, va_list args);\n\n#ifdef  __cplusplus\n}\n#endif\n\n#endif /* CURLINC_MPRINTF_H */\n"
  },
  {
    "path": "libraries/curl/multi.h",
    "content": "#ifndef CURLINC_MULTI_H\n#define CURLINC_MULTI_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n/*\n  This is an \"external\" header file. Don't give away any internals here!\n\n  GOALS\n\n  o Enable a \"pull\" interface. The application that uses libcurl decides where\n    and when to ask libcurl to get/send data.\n\n  o Enable multiple simultaneous transfers in the same thread without making it\n    complicated for the application.\n\n  o Enable the application to select() on its own file descriptors and curl's\n    file descriptors simultaneous easily.\n\n*/\n\n/*\n * This header file should not really need to include \"curl.h\" since curl.h\n * itself includes this file and we expect user applications to do #include\n * <curl/curl.h> without the need for especially including multi.h.\n *\n * For some reason we added this include here at one point, and rather than to\n * break existing (wrongly written) libcurl applications, we leave it as-is\n * but with this warning attached.\n */\n#include \"curl.h\"\n\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\n#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)\ntypedef struct Curl_multi CURLM;\n#else\ntypedef void CURLM;\n#endif\n\ntypedef enum {\n  CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or\n                                    curl_multi_socket*() soon */\n  CURLM_OK,\n  CURLM_BAD_HANDLE,      /* the passed-in handle is not a valid CURLM handle */\n  CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */\n  CURLM_OUT_OF_MEMORY,   /* if you ever get this, you're in deep sh*t */\n  CURLM_INTERNAL_ERROR,  /* this is a libcurl bug */\n  CURLM_BAD_SOCKET,      /* the passed in socket argument did not match */\n  CURLM_UNKNOWN_OPTION,  /* curl_multi_setopt() with unsupported option */\n  CURLM_ADDED_ALREADY,   /* an easy handle already added to a multi handle was\n                            attempted to get added - again */\n  CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a\n                               callback */\n  CURLM_WAKEUP_FAILURE,  /* wakeup is unavailable or failed */\n  CURLM_BAD_FUNCTION_ARGUMENT,  /* function called with a bad parameter */\n  CURLM_LAST\n} CURLMcode;\n\n/* just to make code nicer when using curl_multi_socket() you can now check\n   for CURLM_CALL_MULTI_SOCKET too in the same style it works for\n   curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */\n#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM\n\n/* bitmask bits for CURLMOPT_PIPELINING */\n#define CURLPIPE_NOTHING   0L\n#define CURLPIPE_HTTP1     1L\n#define CURLPIPE_MULTIPLEX 2L\n\ntypedef enum {\n  CURLMSG_NONE, /* first, not used */\n  CURLMSG_DONE, /* This easy handle has completed. 'result' contains\n                   the CURLcode of the transfer */\n  CURLMSG_LAST /* last, not used */\n} CURLMSG;\n\nstruct CURLMsg {\n  CURLMSG msg;       /* what this message means */\n  CURL *easy_handle; /* the handle it concerns */\n  union {\n    void *whatever;    /* message-specific data */\n    CURLcode result;   /* return code for transfer */\n  } data;\n};\ntypedef struct CURLMsg CURLMsg;\n\n/* Based on poll(2) structure and values.\n * We don't use pollfd and POLL* constants explicitly\n * to cover platforms without poll(). */\n#define CURL_WAIT_POLLIN    0x0001\n#define CURL_WAIT_POLLPRI   0x0002\n#define CURL_WAIT_POLLOUT   0x0004\n\nstruct curl_waitfd {\n  curl_socket_t fd;\n  short events;\n  short revents; /* not supported yet */\n};\n\n/*\n * Name:    curl_multi_init()\n *\n * Desc:    inititalize multi-style curl usage\n *\n * Returns: a new CURLM handle to use in all 'curl_multi' functions.\n */\nCURL_EXTERN CURLM *curl_multi_init(void);\n\n/*\n * Name:    curl_multi_add_handle()\n *\n * Desc:    add a standard curl handle to the multi stack\n *\n * Returns: CURLMcode type, general multi error code.\n */\nCURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,\n                                            CURL *curl_handle);\n\n /*\n  * Name:    curl_multi_remove_handle()\n  *\n  * Desc:    removes a curl handle from the multi stack again\n  *\n  * Returns: CURLMcode type, general multi error code.\n  */\nCURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,\n                                               CURL *curl_handle);\n\n /*\n  * Name:    curl_multi_fdset()\n  *\n  * Desc:    Ask curl for its fd_set sets. The app can use these to select() or\n  *          poll() on. We want curl_multi_perform() called as soon as one of\n  *          them are ready.\n  *\n  * Returns: CURLMcode type, general multi error code.\n  */\nCURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,\n                                       fd_set *read_fd_set,\n                                       fd_set *write_fd_set,\n                                       fd_set *exc_fd_set,\n                                       int *max_fd);\n\n/*\n * Name:     curl_multi_wait()\n *\n * Desc:     Poll on all fds within a CURLM set as well as any\n *           additional fds passed to the function.\n *\n * Returns:  CURLMcode type, general multi error code.\n */\nCURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,\n                                      struct curl_waitfd extra_fds[],\n                                      unsigned int extra_nfds,\n                                      int timeout_ms,\n                                      int *ret);\n\n/*\n * Name:     curl_multi_poll()\n *\n * Desc:     Poll on all fds within a CURLM set as well as any\n *           additional fds passed to the function.\n *\n * Returns:  CURLMcode type, general multi error code.\n */\nCURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,\n                                      struct curl_waitfd extra_fds[],\n                                      unsigned int extra_nfds,\n                                      int timeout_ms,\n                                      int *ret);\n\n/*\n * Name:     curl_multi_wakeup()\n *\n * Desc:     wakes up a sleeping curl_multi_poll call.\n *\n * Returns:  CURLMcode type, general multi error code.\n */\nCURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);\n\n /*\n  * Name:    curl_multi_perform()\n  *\n  * Desc:    When the app thinks there's data available for curl it calls this\n  *          function to read/write whatever there is right now. This returns\n  *          as soon as the reads and writes are done. This function does not\n  *          require that there actually is data available for reading or that\n  *          data can be written, it can be called just in case. It returns\n  *          the number of handles that still transfer data in the second\n  *          argument's integer-pointer.\n  *\n  * Returns: CURLMcode type, general multi error code. *NOTE* that this only\n  *          returns errors etc regarding the whole multi stack. There might\n  *          still have occurred problems on individual transfers even when\n  *          this returns OK.\n  */\nCURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,\n                                         int *running_handles);\n\n /*\n  * Name:    curl_multi_cleanup()\n  *\n  * Desc:    Cleans up and removes a whole multi stack. It does not free or\n  *          touch any individual easy handles in any way. We need to define\n  *          in what state those handles will be if this function is called\n  *          in the middle of a transfer.\n  *\n  * Returns: CURLMcode type, general multi error code.\n  */\nCURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);\n\n/*\n * Name:    curl_multi_info_read()\n *\n * Desc:    Ask the multi handle if there's any messages/informationals from\n *          the individual transfers. Messages include informationals such as\n *          error code from the transfer or just the fact that a transfer is\n *          completed. More details on these should be written down as well.\n *\n *          Repeated calls to this function will return a new struct each\n *          time, until a special \"end of msgs\" struct is returned as a signal\n *          that there is no more to get at this point.\n *\n *          The data the returned pointer points to will not survive calling\n *          curl_multi_cleanup().\n *\n *          The 'CURLMsg' struct is meant to be very simple and only contain\n *          very basic information. If more involved information is wanted,\n *          we will provide the particular \"transfer handle\" in that struct\n *          and that should/could/would be used in subsequent\n *          curl_easy_getinfo() calls (or similar). The point being that we\n *          must never expose complex structs to applications, as then we'll\n *          undoubtably get backwards compatibility problems in the future.\n *\n * Returns: A pointer to a filled-in struct, or NULL if it failed or ran out\n *          of structs. It also writes the number of messages left in the\n *          queue (after this read) in the integer the second argument points\n *          to.\n */\nCURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,\n                                          int *msgs_in_queue);\n\n/*\n * Name:    curl_multi_strerror()\n *\n * Desc:    The curl_multi_strerror function may be used to turn a CURLMcode\n *          value into the equivalent human readable error string.  This is\n *          useful for printing meaningful error messages.\n *\n * Returns: A pointer to a null-terminated error message.\n */\nCURL_EXTERN const char *curl_multi_strerror(CURLMcode);\n\n/*\n * Name:    curl_multi_socket() and\n *          curl_multi_socket_all()\n *\n * Desc:    An alternative version of curl_multi_perform() that allows the\n *          application to pass in one of the file descriptors that have been\n *          detected to have \"action\" on them and let libcurl perform.\n *          See man page for details.\n */\n#define CURL_POLL_NONE   0\n#define CURL_POLL_IN     1\n#define CURL_POLL_OUT    2\n#define CURL_POLL_INOUT  3\n#define CURL_POLL_REMOVE 4\n\n#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD\n\n#define CURL_CSELECT_IN   0x01\n#define CURL_CSELECT_OUT  0x02\n#define CURL_CSELECT_ERR  0x04\n\ntypedef int (*curl_socket_callback)(CURL *easy,      /* easy handle */\n                                    curl_socket_t s, /* socket */\n                                    int what,        /* see above */\n                                    void *userp,     /* private callback\n                                                        pointer */\n                                    void *socketp);  /* private socket\n                                                        pointer */\n/*\n * Name:    curl_multi_timer_callback\n *\n * Desc:    Called by libcurl whenever the library detects a change in the\n *          maximum number of milliseconds the app is allowed to wait before\n *          curl_multi_socket() or curl_multi_perform() must be called\n *          (to allow libcurl's timed events to take place).\n *\n * Returns: The callback should return zero.\n */\ntypedef int (*curl_multi_timer_callback)(CURLM *multi,    /* multi handle */\n                                         long timeout_ms, /* see above */\n                                         void *userp);    /* private callback\n                                                             pointer */\n\nCURL_EXTERN CURLMcode curl_multi_socket(CURLM *multi_handle, curl_socket_t s,\n                                        int *running_handles);\n\nCURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,\n                                               curl_socket_t s,\n                                               int ev_bitmask,\n                                               int *running_handles);\n\nCURL_EXTERN CURLMcode curl_multi_socket_all(CURLM *multi_handle,\n                                            int *running_handles);\n\n#ifndef CURL_ALLOW_OLD_MULTI_SOCKET\n/* This macro below was added in 7.16.3 to push users who recompile to use\n   the new curl_multi_socket_action() instead of the old curl_multi_socket()\n*/\n#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)\n#endif\n\n/*\n * Name:    curl_multi_timeout()\n *\n * Desc:    Returns the maximum number of milliseconds the app is allowed to\n *          wait before curl_multi_socket() or curl_multi_perform() must be\n *          called (to allow libcurl's timed events to take place).\n *\n * Returns: CURLM error code.\n */\nCURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,\n                                         long *milliseconds);\n\ntypedef enum {\n  /* This is the socket callback function pointer */\n  CURLOPT(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1),\n\n  /* This is the argument passed to the socket callback */\n  CURLOPT(CURLMOPT_SOCKETDATA, CURLOPTTYPE_OBJECTPOINT, 2),\n\n    /* set to 1 to enable pipelining for this multi handle */\n  CURLOPT(CURLMOPT_PIPELINING, CURLOPTTYPE_LONG, 3),\n\n   /* This is the timer callback function pointer */\n  CURLOPT(CURLMOPT_TIMERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 4),\n\n  /* This is the argument passed to the timer callback */\n  CURLOPT(CURLMOPT_TIMERDATA, CURLOPTTYPE_OBJECTPOINT, 5),\n\n  /* maximum number of entries in the connection cache */\n  CURLOPT(CURLMOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 6),\n\n  /* maximum number of (pipelining) connections to one host */\n  CURLOPT(CURLMOPT_MAX_HOST_CONNECTIONS, CURLOPTTYPE_LONG, 7),\n\n  /* maximum number of requests in a pipeline */\n  CURLOPT(CURLMOPT_MAX_PIPELINE_LENGTH, CURLOPTTYPE_LONG, 8),\n\n  /* a connection with a content-length longer than this\n     will not be considered for pipelining */\n  CURLOPT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 9),\n\n  /* a connection with a chunk length longer than this\n     will not be considered for pipelining */\n  CURLOPT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 10),\n\n  /* a list of site names(+port) that are blocked from pipelining */\n  CURLOPT(CURLMOPT_PIPELINING_SITE_BL, CURLOPTTYPE_OBJECTPOINT, 11),\n\n  /* a list of server types that are blocked from pipelining */\n  CURLOPT(CURLMOPT_PIPELINING_SERVER_BL, CURLOPTTYPE_OBJECTPOINT, 12),\n\n  /* maximum number of open connections in total */\n  CURLOPT(CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPTTYPE_LONG, 13),\n\n   /* This is the server push callback function pointer */\n  CURLOPT(CURLMOPT_PUSHFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 14),\n\n  /* This is the argument passed to the server push callback */\n  CURLOPT(CURLMOPT_PUSHDATA, CURLOPTTYPE_OBJECTPOINT, 15),\n\n  /* maximum number of concurrent streams to support on a connection */\n  CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, CURLOPTTYPE_LONG, 16),\n\n  CURLMOPT_LASTENTRY /* the last unused */\n} CURLMoption;\n\n\n/*\n * Name:    curl_multi_setopt()\n *\n * Desc:    Sets options for the multi handle.\n *\n * Returns: CURLM error code.\n */\nCURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,\n                                        CURLMoption option, ...);\n\n\n/*\n * Name:    curl_multi_assign()\n *\n * Desc:    This function sets an association in the multi handle between the\n *          given socket and a private pointer of the application. This is\n *          (only) useful for curl_multi_socket uses.\n *\n * Returns: CURLM error code.\n */\nCURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,\n                                        curl_socket_t sockfd, void *sockp);\n\n\n/*\n * Name: curl_push_callback\n *\n * Desc: This callback gets called when a new stream is being pushed by the\n *       server. It approves or denies the new stream. It can also decide\n *       to completely fail the connection.\n *\n * Returns: CURL_PUSH_OK, CURL_PUSH_DENY or CURL_PUSH_ERROROUT\n */\n#define CURL_PUSH_OK       0\n#define CURL_PUSH_DENY     1\n#define CURL_PUSH_ERROROUT 2 /* added in 7.72.0 */\n\nstruct curl_pushheaders;  /* forward declaration only */\n\nCURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,\n                                        size_t num);\nCURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,\n                                         const char *name);\n\ntypedef int (*curl_push_callback)(CURL *parent,\n                                  CURL *easy,\n                                  size_t num_headers,\n                                  struct curl_pushheaders *headers,\n                                  void *userp);\n\n#ifdef __cplusplus\n} /* end of extern \"C\" */\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/curl/options.h",
    "content": "#ifndef CURLINC_OPTIONS_H\n#define CURLINC_OPTIONS_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\ntypedef enum {\n  CURLOT_LONG,    /* long (a range of values) */\n  CURLOT_VALUES,  /*      (a defined set or bitmask) */\n  CURLOT_OFF_T,   /* curl_off_t (a range of values) */\n  CURLOT_OBJECT,  /* pointer (void *) */\n  CURLOT_STRING,  /*         (char * to zero terminated buffer) */\n  CURLOT_SLIST,   /*         (struct curl_slist *) */\n  CURLOT_CBPTR,   /*         (void * passed as-is to a callback) */\n  CURLOT_BLOB,    /* blob (struct curl_blob *) */\n  CURLOT_FUNCTION /* function pointer */\n} curl_easytype;\n\n/* Flag bits */\n\n/* \"alias\" means it is provided for old programs to remain functional,\n   we prefer another name */\n#define CURLOT_FLAG_ALIAS (1<<0)\n\n/* The CURLOPTTYPE_* id ranges can still be used to figure out what type/size\n   to use for curl_easy_setopt() for the given id */\nstruct curl_easyoption {\n  const char *name;\n  CURLoption id;\n  curl_easytype type;\n  unsigned int flags;\n};\n\nCURL_EXTERN const struct curl_easyoption *\ncurl_easy_option_by_name(const char *name);\n\nCURL_EXTERN const struct curl_easyoption *\ncurl_easy_option_by_id (CURLoption id);\n\nCURL_EXTERN const struct curl_easyoption *\ncurl_easy_option_next(const struct curl_easyoption *prev);\n\n#ifdef __cplusplus\n} /* end of extern \"C\" */\n#endif\n#endif /* CURLINC_OPTIONS_H */\n"
  },
  {
    "path": "libraries/curl/stdcheaders.h",
    "content": "#ifndef CURLINC_STDCHEADERS_H\n#define CURLINC_STDCHEADERS_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n#include <sys/types.h>\n\nsize_t fread(void *, size_t, size_t, FILE *);\nsize_t fwrite(const void *, size_t, size_t, FILE *);\n\nint strcasecmp(const char *, const char *);\nint strncasecmp(const char *, const char *, size_t);\n\n#endif /* CURLINC_STDCHEADERS_H */\n"
  },
  {
    "path": "libraries/curl/system.h",
    "content": "#ifndef CURLINC_SYSTEM_H\n#define CURLINC_SYSTEM_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n/*\n * Try to keep one section per platform, compiler and architecture, otherwise,\n * if an existing section is reused for a different one and later on the\n * original is adjusted, probably the piggybacking one can be adversely\n * changed.\n *\n * In order to differentiate between platforms/compilers/architectures use\n * only compiler built in predefined preprocessor symbols.\n *\n * curl_off_t\n * ----------\n *\n * For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit\n * wide signed integral data type. The width of this data type must remain\n * constant and independent of any possible large file support settings.\n *\n * As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit\n * wide signed integral data type if there is no 64-bit type.\n *\n * As a general rule, curl_off_t shall not be mapped to off_t. This rule shall\n * only be violated if off_t is the only 64-bit data type available and the\n * size of off_t is independent of large file support settings. Keep your\n * build on the safe side avoiding an off_t gating.  If you have a 64-bit\n * off_t then take for sure that another 64-bit data type exists, dig deeper\n * and you will find it.\n *\n */\n\n#if defined(__DJGPP__) || defined(__GO32__)\n#  if defined(__DJGPP__) && (__DJGPP__ > 1)\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__SALFORDC__)\n#  define CURL_TYPEOF_CURL_OFF_T     long\n#  define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#  define CURL_SUFFIX_CURL_OFF_T     L\n#  define CURL_SUFFIX_CURL_OFF_TU    UL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__BORLANDC__)\n#  if (__BORLANDC__ < 0x520)\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     __int64\n#    define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#    define CURL_SUFFIX_CURL_OFF_T     i64\n#    define CURL_SUFFIX_CURL_OFF_TU    ui64\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__TURBOC__)\n#  define CURL_TYPEOF_CURL_OFF_T     long\n#  define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#  define CURL_SUFFIX_CURL_OFF_T     L\n#  define CURL_SUFFIX_CURL_OFF_TU    UL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__WATCOMC__)\n#  if defined(__386__)\n#    define CURL_TYPEOF_CURL_OFF_T     __int64\n#    define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#    define CURL_SUFFIX_CURL_OFF_T     i64\n#    define CURL_SUFFIX_CURL_OFF_TU    ui64\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__POCC__)\n#  if (__POCC__ < 280)\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  elif defined(_MSC_VER)\n#    define CURL_TYPEOF_CURL_OFF_T     __int64\n#    define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#    define CURL_SUFFIX_CURL_OFF_T     i64\n#    define CURL_SUFFIX_CURL_OFF_TU    ui64\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__LCC__)\n#  if defined(__e2k__) /* MCST eLbrus C Compiler */\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#    define CURL_PULL_SYS_TYPES_H      1\n#    define CURL_PULL_SYS_SOCKET_H     1\n#  else                /* Local (or Little) C Compiler */\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#    define CURL_TYPEOF_CURL_SOCKLEN_T int\n#  endif\n\n#elif defined(__SYMBIAN32__)\n#  if defined(__EABI__) /* Treat all ARM compilers equally */\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  elif defined(__CW32__)\n#    pragma longlong on\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  elif defined(__VC32__)\n#    define CURL_TYPEOF_CURL_OFF_T     __int64\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int\n\n#elif defined(__MWERKS__)\n#  define CURL_TYPEOF_CURL_OFF_T     long long\n#  define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#  define CURL_SUFFIX_CURL_OFF_T     LL\n#  define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(_WIN32_WCE)\n#  define CURL_TYPEOF_CURL_OFF_T     __int64\n#  define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#  define CURL_SUFFIX_CURL_OFF_T     i64\n#  define CURL_SUFFIX_CURL_OFF_TU    ui64\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__MINGW32__)\n#  define CURL_TYPEOF_CURL_OFF_T     long long\n#  define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#  define CURL_SUFFIX_CURL_OFF_T     LL\n#  define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#  define CURL_PULL_SYS_TYPES_H      1\n#  define CURL_PULL_WS2TCPIP_H       1\n\n#elif defined(__VMS)\n#  if defined(__VAX)\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int\n\n#elif defined(__OS400__)\n#  if defined(__ILEC400__)\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#    define CURL_PULL_SYS_TYPES_H      1\n#    define CURL_PULL_SYS_SOCKET_H     1\n#  endif\n\n#elif defined(__MVS__)\n#  if defined(__IBMC__) || defined(__IBMCPP__)\n#    if defined(_ILP32)\n#    elif defined(_LP64)\n#    endif\n#    if defined(_LONG_LONG)\n#      define CURL_TYPEOF_CURL_OFF_T     long long\n#      define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#      define CURL_SUFFIX_CURL_OFF_T     LL\n#      define CURL_SUFFIX_CURL_OFF_TU    ULL\n#    elif defined(_LP64)\n#      define CURL_TYPEOF_CURL_OFF_T     long\n#      define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#      define CURL_SUFFIX_CURL_OFF_T     L\n#      define CURL_SUFFIX_CURL_OFF_TU    UL\n#    else\n#      define CURL_TYPEOF_CURL_OFF_T     long\n#      define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#      define CURL_SUFFIX_CURL_OFF_T     L\n#      define CURL_SUFFIX_CURL_OFF_TU    UL\n#    endif\n#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#    define CURL_PULL_SYS_TYPES_H      1\n#    define CURL_PULL_SYS_SOCKET_H     1\n#  endif\n\n#elif defined(__370__)\n#  if defined(__IBMC__) || defined(__IBMCPP__)\n#    if defined(_ILP32)\n#    elif defined(_LP64)\n#    endif\n#    if defined(_LONG_LONG)\n#      define CURL_TYPEOF_CURL_OFF_T     long long\n#      define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#      define CURL_SUFFIX_CURL_OFF_T     LL\n#      define CURL_SUFFIX_CURL_OFF_TU    ULL\n#    elif defined(_LP64)\n#      define CURL_TYPEOF_CURL_OFF_T     long\n#      define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#      define CURL_SUFFIX_CURL_OFF_T     L\n#      define CURL_SUFFIX_CURL_OFF_TU    UL\n#    else\n#      define CURL_TYPEOF_CURL_OFF_T     long\n#      define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#      define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#      define CURL_SUFFIX_CURL_OFF_T     L\n#      define CURL_SUFFIX_CURL_OFF_TU    UL\n#    endif\n#    define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#    define CURL_PULL_SYS_TYPES_H      1\n#    define CURL_PULL_SYS_SOCKET_H     1\n#  endif\n\n#elif defined(TPF)\n#  define CURL_TYPEOF_CURL_OFF_T     long\n#  define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#  define CURL_SUFFIX_CURL_OFF_T     L\n#  define CURL_SUFFIX_CURL_OFF_TU    UL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n#elif defined(__TINYC__) /* also known as tcc */\n#  define CURL_TYPEOF_CURL_OFF_T     long long\n#  define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#  define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#  define CURL_SUFFIX_CURL_OFF_T     LL\n#  define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#  define CURL_PULL_SYS_TYPES_H      1\n#  define CURL_PULL_SYS_SOCKET_H     1\n\n#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */\n#  if !defined(__LP64) && (defined(__ILP32) ||                          \\\n                           defined(__i386) ||                           \\\n                           defined(__sparcv8) ||                        \\\n                           defined(__sparcv8plus))\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  elif defined(__LP64) || \\\n        defined(__amd64) || defined(__sparcv9)\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#  define CURL_PULL_SYS_TYPES_H      1\n#  define CURL_PULL_SYS_SOCKET_H     1\n\n#elif defined(__xlc__) /* IBM xlc compiler */\n#  if !defined(_LP64)\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#  define CURL_PULL_SYS_TYPES_H      1\n#  define CURL_PULL_SYS_SOCKET_H     1\n\n/* ===================================== */\n/*    KEEP MSVC THE PENULTIMATE ENTRY    */\n/* ===================================== */\n\n#elif defined(_MSC_VER)\n#  if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)\n#    define CURL_TYPEOF_CURL_OFF_T     __int64\n#    define CURL_FORMAT_CURL_OFF_T     \"I64d\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"I64u\"\n#    define CURL_SUFFIX_CURL_OFF_T     i64\n#    define CURL_SUFFIX_CURL_OFF_TU    ui64\n#  else\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T int\n\n/* ===================================== */\n/*    KEEP GENERIC GCC THE LAST ENTRY    */\n/* ===================================== */\n\n#elif defined(__GNUC__) && !defined(_SCO_DS)\n#  if !defined(__LP64__) &&                                             \\\n  (defined(__ILP32__) || defined(__i386__) || defined(__hppa__) ||      \\\n   defined(__ppc__) || defined(__powerpc__) || defined(__arm__) ||      \\\n   defined(__sparc__) || defined(__mips__) || defined(__sh__) ||        \\\n   defined(__XTENSA__) ||                                               \\\n   (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4)  ||               \\\n   (defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))\n#    define CURL_TYPEOF_CURL_OFF_T     long long\n#    define CURL_FORMAT_CURL_OFF_T     \"lld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"llu\"\n#    define CURL_SUFFIX_CURL_OFF_T     LL\n#    define CURL_SUFFIX_CURL_OFF_TU    ULL\n#  elif defined(__LP64__) || \\\n        defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \\\n        defined(__e2k__) || \\\n        (defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \\\n        (defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)\n#    define CURL_TYPEOF_CURL_OFF_T     long\n#    define CURL_FORMAT_CURL_OFF_T     \"ld\"\n#    define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n#    define CURL_SUFFIX_CURL_OFF_T     L\n#    define CURL_SUFFIX_CURL_OFF_TU    UL\n#  endif\n#  define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t\n#  define CURL_PULL_SYS_TYPES_H      1\n#  define CURL_PULL_SYS_SOCKET_H     1\n\n#else\n/* generic \"safe guess\" on old 32 bit style */\n# define CURL_TYPEOF_CURL_OFF_T     long\n# define CURL_FORMAT_CURL_OFF_T     \"ld\"\n# define CURL_FORMAT_CURL_OFF_TU    \"lu\"\n# define CURL_SUFFIX_CURL_OFF_T     L\n# define CURL_SUFFIX_CURL_OFF_TU    UL\n# define CURL_TYPEOF_CURL_SOCKLEN_T int\n#endif\n\n#ifdef _AIX\n/* AIX needs <sys/poll.h> */\n#define CURL_PULL_SYS_POLL_H\n#endif\n\n\n/* CURL_PULL_WS2TCPIP_H is defined above when inclusion of header file  */\n/* ws2tcpip.h is required here to properly make type definitions below. */\n#ifdef CURL_PULL_WS2TCPIP_H\n#  include <winsock2.h>\n#  include <windows.h>\n#  include <ws2tcpip.h>\n#endif\n\n/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file  */\n/* sys/types.h is required here to properly make type definitions below. */\n#ifdef CURL_PULL_SYS_TYPES_H\n#  include <sys/types.h>\n#endif\n\n/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file  */\n/* sys/socket.h is required here to properly make type definitions below. */\n#ifdef CURL_PULL_SYS_SOCKET_H\n#  include <sys/socket.h>\n#endif\n\n/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file    */\n/* sys/poll.h is required here to properly make type definitions below.   */\n#ifdef CURL_PULL_SYS_POLL_H\n#  include <sys/poll.h>\n#endif\n\n/* Data type definition of curl_socklen_t. */\n#ifdef CURL_TYPEOF_CURL_SOCKLEN_T\n  typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;\n#endif\n\n/* Data type definition of curl_off_t. */\n\n#ifdef CURL_TYPEOF_CURL_OFF_T\n  typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;\n#endif\n\n/*\n * CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow\n * these to be visible and exported by the external libcurl interface API,\n * while also making them visible to the library internals, simply including\n * curl_setup.h, without actually needing to include curl.h internally.\n * If some day this section would grow big enough, all this should be moved\n * to its own header file.\n */\n\n/*\n * Figure out if we can use the ## preprocessor operator, which is supported\n * by ISO/ANSI C and C++. Some compilers support it without setting __STDC__\n * or  __cplusplus so we need to carefully check for them too.\n */\n\n#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \\\n  defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \\\n  defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \\\n  defined(__ILEC400__)\n  /* This compiler is believed to have an ISO compatible preprocessor */\n#define CURL_ISOCPP\n#else\n  /* This compiler is believed NOT to have an ISO compatible preprocessor */\n#undef CURL_ISOCPP\n#endif\n\n/*\n * Macros for minimum-width signed and unsigned curl_off_t integer constants.\n */\n\n#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)\n#  define CURLINC_OFF_T_C_HLPR2(x) x\n#  define CURLINC_OFF_T_C_HLPR1(x) CURLINC_OFF_T_C_HLPR2(x)\n#  define CURL_OFF_T_C(Val)  CURLINC_OFF_T_C_HLPR1(Val) ## \\\n                             CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)\n#  define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \\\n                             CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)\n#else\n#  ifdef CURL_ISOCPP\n#    define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix\n#  else\n#    define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix\n#  endif\n#  define CURLINC_OFF_T_C_HLPR1(Val,Suffix) CURLINC_OFF_T_C_HLPR2(Val,Suffix)\n#  define CURL_OFF_T_C(Val)  CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)\n#  define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)\n#endif\n\n#endif /* CURLINC_SYSTEM_H */\n"
  },
  {
    "path": "libraries/curl/typecheck-gcc.h",
    "content": "#ifndef CURLINC_TYPECHECK_GCC_H\n#define CURLINC_TYPECHECK_GCC_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n/* wraps curl_easy_setopt() with typechecking */\n\n/* To add a new kind of warning, add an\n *   if(curlcheck_sometype_option(_curl_opt))\n *     if(!curlcheck_sometype(value))\n *       _curl_easy_setopt_err_sometype();\n * block and define curlcheck_sometype_option, curlcheck_sometype and\n * _curl_easy_setopt_err_sometype below\n *\n * NOTE: We use two nested 'if' statements here instead of the && operator, in\n *       order to work around gcc bug #32061.  It affects only gcc 4.3.x/4.4.x\n *       when compiling with -Wlogical-op.\n *\n * To add an option that uses the same type as an existing option, you'll just\n * need to extend the appropriate _curl_*_option macro\n */\n#define curl_easy_setopt(handle, option, value)                         \\\n  __extension__({                                                       \\\n      __typeof__(option) _curl_opt = option;                            \\\n      if(__builtin_constant_p(_curl_opt)) {                             \\\n        if(curlcheck_long_option(_curl_opt))                            \\\n          if(!curlcheck_long(value))                                    \\\n            _curl_easy_setopt_err_long();                               \\\n        if(curlcheck_off_t_option(_curl_opt))                           \\\n          if(!curlcheck_off_t(value))                                   \\\n            _curl_easy_setopt_err_curl_off_t();                         \\\n        if(curlcheck_string_option(_curl_opt))                          \\\n          if(!curlcheck_string(value))                                  \\\n            _curl_easy_setopt_err_string();                             \\\n        if(curlcheck_write_cb_option(_curl_opt))                        \\\n          if(!curlcheck_write_cb(value))                                \\\n            _curl_easy_setopt_err_write_callback();                     \\\n        if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION)              \\\n          if(!curlcheck_resolver_start_callback(value))                 \\\n            _curl_easy_setopt_err_resolver_start_callback();            \\\n        if((_curl_opt) == CURLOPT_READFUNCTION)                         \\\n          if(!curlcheck_read_cb(value))                                 \\\n            _curl_easy_setopt_err_read_cb();                            \\\n        if((_curl_opt) == CURLOPT_IOCTLFUNCTION)                        \\\n          if(!curlcheck_ioctl_cb(value))                                \\\n            _curl_easy_setopt_err_ioctl_cb();                           \\\n        if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION)                      \\\n          if(!curlcheck_sockopt_cb(value))                              \\\n            _curl_easy_setopt_err_sockopt_cb();                         \\\n        if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION)                   \\\n          if(!curlcheck_opensocket_cb(value))                           \\\n            _curl_easy_setopt_err_opensocket_cb();                      \\\n        if((_curl_opt) == CURLOPT_PROGRESSFUNCTION)                     \\\n          if(!curlcheck_progress_cb(value))                             \\\n            _curl_easy_setopt_err_progress_cb();                        \\\n        if((_curl_opt) == CURLOPT_DEBUGFUNCTION)                        \\\n          if(!curlcheck_debug_cb(value))                                \\\n            _curl_easy_setopt_err_debug_cb();                           \\\n        if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION)                     \\\n          if(!curlcheck_ssl_ctx_cb(value))                              \\\n            _curl_easy_setopt_err_ssl_ctx_cb();                         \\\n        if(curlcheck_conv_cb_option(_curl_opt))                         \\\n          if(!curlcheck_conv_cb(value))                                 \\\n            _curl_easy_setopt_err_conv_cb();                            \\\n        if((_curl_opt) == CURLOPT_SEEKFUNCTION)                         \\\n          if(!curlcheck_seek_cb(value))                                 \\\n            _curl_easy_setopt_err_seek_cb();                            \\\n        if(curlcheck_cb_data_option(_curl_opt))                         \\\n          if(!curlcheck_cb_data(value))                                 \\\n            _curl_easy_setopt_err_cb_data();                            \\\n        if((_curl_opt) == CURLOPT_ERRORBUFFER)                          \\\n          if(!curlcheck_error_buffer(value))                            \\\n            _curl_easy_setopt_err_error_buffer();                       \\\n        if((_curl_opt) == CURLOPT_STDERR)                               \\\n          if(!curlcheck_FILE(value))                                    \\\n            _curl_easy_setopt_err_FILE();                               \\\n        if(curlcheck_postfields_option(_curl_opt))                      \\\n          if(!curlcheck_postfields(value))                              \\\n            _curl_easy_setopt_err_postfields();                         \\\n        if((_curl_opt) == CURLOPT_HTTPPOST)                             \\\n          if(!curlcheck_arr((value), struct curl_httppost))             \\\n            _curl_easy_setopt_err_curl_httpost();                       \\\n        if((_curl_opt) == CURLOPT_MIMEPOST)                             \\\n          if(!curlcheck_ptr((value), curl_mime))                        \\\n            _curl_easy_setopt_err_curl_mimepost();                      \\\n        if(curlcheck_slist_option(_curl_opt))                           \\\n          if(!curlcheck_arr((value), struct curl_slist))                \\\n            _curl_easy_setopt_err_curl_slist();                         \\\n        if((_curl_opt) == CURLOPT_SHARE)                                \\\n          if(!curlcheck_ptr((value), CURLSH))                           \\\n            _curl_easy_setopt_err_CURLSH();                             \\\n      }                                                                 \\\n      curl_easy_setopt(handle, _curl_opt, value);                       \\\n    })\n\n/* wraps curl_easy_getinfo() with typechecking */\n#define curl_easy_getinfo(handle, info, arg)                            \\\n  __extension__({                                                      \\\n      __typeof__(info) _curl_info = info;                               \\\n      if(__builtin_constant_p(_curl_info)) {                            \\\n        if(curlcheck_string_info(_curl_info))                           \\\n          if(!curlcheck_arr((arg), char *))                             \\\n            _curl_easy_getinfo_err_string();                            \\\n        if(curlcheck_long_info(_curl_info))                             \\\n          if(!curlcheck_arr((arg), long))                               \\\n            _curl_easy_getinfo_err_long();                              \\\n        if(curlcheck_double_info(_curl_info))                           \\\n          if(!curlcheck_arr((arg), double))                             \\\n            _curl_easy_getinfo_err_double();                            \\\n        if(curlcheck_slist_info(_curl_info))                            \\\n          if(!curlcheck_arr((arg), struct curl_slist *))                \\\n            _curl_easy_getinfo_err_curl_slist();                        \\\n        if(curlcheck_tlssessioninfo_info(_curl_info))                   \\\n          if(!curlcheck_arr((arg), struct curl_tlssessioninfo *))       \\\n            _curl_easy_getinfo_err_curl_tlssesssioninfo();              \\\n        if(curlcheck_certinfo_info(_curl_info))                         \\\n          if(!curlcheck_arr((arg), struct curl_certinfo *))             \\\n            _curl_easy_getinfo_err_curl_certinfo();                     \\\n        if(curlcheck_socket_info(_curl_info))                           \\\n          if(!curlcheck_arr((arg), curl_socket_t))                      \\\n            _curl_easy_getinfo_err_curl_socket();                       \\\n        if(curlcheck_off_t_info(_curl_info))                            \\\n          if(!curlcheck_arr((arg), curl_off_t))                         \\\n            _curl_easy_getinfo_err_curl_off_t();                        \\\n      }                                                                 \\\n      curl_easy_getinfo(handle, _curl_info, arg);                       \\\n    })\n\n/*\n * For now, just make sure that the functions are called with three arguments\n */\n#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)\n#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)\n\n\n/* the actual warnings, triggered by calling the _curl_easy_setopt_err*\n * functions */\n\n/* To define a new warning, use _CURL_WARNING(identifier, \"message\") */\n#define CURLWARNING(id, message)                                        \\\n  static void __attribute__((__warning__(message)))                     \\\n  __attribute__((__unused__)) __attribute__((__noinline__))             \\\n  id(void) { __asm__(\"\"); }\n\nCURLWARNING(_curl_easy_setopt_err_long,\n  \"curl_easy_setopt expects a long argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_curl_off_t,\n  \"curl_easy_setopt expects a curl_off_t argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_string,\n              \"curl_easy_setopt expects a \"\n              \"string ('char *' or char[]) argument for this option\"\n  )\nCURLWARNING(_curl_easy_setopt_err_write_callback,\n  \"curl_easy_setopt expects a curl_write_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_resolver_start_callback,\n              \"curl_easy_setopt expects a \"\n              \"curl_resolver_start_callback argument for this option\"\n  )\nCURLWARNING(_curl_easy_setopt_err_read_cb,\n  \"curl_easy_setopt expects a curl_read_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_ioctl_cb,\n  \"curl_easy_setopt expects a curl_ioctl_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_sockopt_cb,\n  \"curl_easy_setopt expects a curl_sockopt_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_opensocket_cb,\n              \"curl_easy_setopt expects a \"\n              \"curl_opensocket_callback argument for this option\"\n  )\nCURLWARNING(_curl_easy_setopt_err_progress_cb,\n  \"curl_easy_setopt expects a curl_progress_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_debug_cb,\n  \"curl_easy_setopt expects a curl_debug_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_ssl_ctx_cb,\n  \"curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_conv_cb,\n  \"curl_easy_setopt expects a curl_conv_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_seek_cb,\n  \"curl_easy_setopt expects a curl_seek_callback argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_cb_data,\n              \"curl_easy_setopt expects a \"\n              \"private data pointer as argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_error_buffer,\n              \"curl_easy_setopt expects a \"\n              \"char buffer of CURL_ERROR_SIZE as argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_FILE,\n  \"curl_easy_setopt expects a 'FILE *' argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_postfields,\n  \"curl_easy_setopt expects a 'void *' or 'char *' argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_curl_httpost,\n              \"curl_easy_setopt expects a 'struct curl_httppost *' \"\n              \"argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_curl_mimepost,\n              \"curl_easy_setopt expects a 'curl_mime *' \"\n              \"argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_curl_slist,\n  \"curl_easy_setopt expects a 'struct curl_slist *' argument for this option\")\nCURLWARNING(_curl_easy_setopt_err_CURLSH,\n  \"curl_easy_setopt expects a CURLSH* argument for this option\")\n\nCURLWARNING(_curl_easy_getinfo_err_string,\n  \"curl_easy_getinfo expects a pointer to 'char *' for this info\")\nCURLWARNING(_curl_easy_getinfo_err_long,\n  \"curl_easy_getinfo expects a pointer to long for this info\")\nCURLWARNING(_curl_easy_getinfo_err_double,\n  \"curl_easy_getinfo expects a pointer to double for this info\")\nCURLWARNING(_curl_easy_getinfo_err_curl_slist,\n  \"curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info\")\nCURLWARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,\n              \"curl_easy_getinfo expects a pointer to \"\n              \"'struct curl_tlssessioninfo *' for this info\")\nCURLWARNING(_curl_easy_getinfo_err_curl_certinfo,\n              \"curl_easy_getinfo expects a pointer to \"\n              \"'struct curl_certinfo *' for this info\")\nCURLWARNING(_curl_easy_getinfo_err_curl_socket,\n  \"curl_easy_getinfo expects a pointer to curl_socket_t for this info\")\nCURLWARNING(_curl_easy_getinfo_err_curl_off_t,\n  \"curl_easy_getinfo expects a pointer to curl_off_t for this info\")\n\n/* groups of curl_easy_setops options that take the same type of argument */\n\n/* To add a new option to one of the groups, just add\n *   (option) == CURLOPT_SOMETHING\n * to the or-expression. If the option takes a long or curl_off_t, you don't\n * have to do anything\n */\n\n/* evaluates to true if option takes a long argument */\n#define curlcheck_long_option(option)                   \\\n  (0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)\n\n#define curlcheck_off_t_option(option)          \\\n  (((option) > CURLOPTTYPE_OFF_T) && ((option) < CURLOPTTYPE_BLOB))\n\n/* evaluates to true if option takes a char* argument */\n#define curlcheck_string_option(option)                                       \\\n  ((option) == CURLOPT_ABSTRACT_UNIX_SOCKET ||                                \\\n   (option) == CURLOPT_ACCEPT_ENCODING ||                                     \\\n   (option) == CURLOPT_ALTSVC ||                                              \\\n   (option) == CURLOPT_CAINFO ||                                              \\\n   (option) == CURLOPT_CAPATH ||                                              \\\n   (option) == CURLOPT_COOKIE ||                                              \\\n   (option) == CURLOPT_COOKIEFILE ||                                          \\\n   (option) == CURLOPT_COOKIEJAR ||                                           \\\n   (option) == CURLOPT_COOKIELIST ||                                          \\\n   (option) == CURLOPT_CRLFILE ||                                             \\\n   (option) == CURLOPT_CUSTOMREQUEST ||                                       \\\n   (option) == CURLOPT_DEFAULT_PROTOCOL ||                                    \\\n   (option) == CURLOPT_DNS_INTERFACE ||                                       \\\n   (option) == CURLOPT_DNS_LOCAL_IP4 ||                                       \\\n   (option) == CURLOPT_DNS_LOCAL_IP6 ||                                       \\\n   (option) == CURLOPT_DNS_SERVERS ||                                         \\\n   (option) == CURLOPT_DOH_URL ||                                             \\\n   (option) == CURLOPT_EGDSOCKET ||                                           \\\n   (option) == CURLOPT_FTPPORT ||                                             \\\n   (option) == CURLOPT_FTP_ACCOUNT ||                                         \\\n   (option) == CURLOPT_FTP_ALTERNATIVE_TO_USER ||                             \\\n   (option) == CURLOPT_HSTS ||                                                \\\n   (option) == CURLOPT_INTERFACE ||                                           \\\n   (option) == CURLOPT_ISSUERCERT ||                                          \\\n   (option) == CURLOPT_KEYPASSWD ||                                           \\\n   (option) == CURLOPT_KRBLEVEL ||                                            \\\n   (option) == CURLOPT_LOGIN_OPTIONS ||                                       \\\n   (option) == CURLOPT_MAIL_AUTH ||                                           \\\n   (option) == CURLOPT_MAIL_FROM ||                                           \\\n   (option) == CURLOPT_NETRC_FILE ||                                          \\\n   (option) == CURLOPT_NOPROXY ||                                             \\\n   (option) == CURLOPT_PASSWORD ||                                            \\\n   (option) == CURLOPT_PINNEDPUBLICKEY ||                                     \\\n   (option) == CURLOPT_PRE_PROXY ||                                           \\\n   (option) == CURLOPT_PROXY ||                                               \\\n   (option) == CURLOPT_PROXYPASSWORD ||                                       \\\n   (option) == CURLOPT_PROXYUSERNAME ||                                       \\\n   (option) == CURLOPT_PROXYUSERPWD ||                                        \\\n   (option) == CURLOPT_PROXY_CAINFO ||                                        \\\n   (option) == CURLOPT_PROXY_CAPATH ||                                        \\\n   (option) == CURLOPT_PROXY_CRLFILE ||                                       \\\n   (option) == CURLOPT_PROXY_ISSUERCERT ||                                    \\\n   (option) == CURLOPT_PROXY_KEYPASSWD ||                                     \\\n   (option) == CURLOPT_PROXY_PINNEDPUBLICKEY ||                               \\\n   (option) == CURLOPT_PROXY_SERVICE_NAME ||                                  \\\n   (option) == CURLOPT_PROXY_SSLCERT ||                                       \\\n   (option) == CURLOPT_PROXY_SSLCERTTYPE ||                                   \\\n   (option) == CURLOPT_PROXY_SSLKEY ||                                        \\\n   (option) == CURLOPT_PROXY_SSLKEYTYPE ||                                    \\\n   (option) == CURLOPT_PROXY_SSL_CIPHER_LIST ||                               \\\n   (option) == CURLOPT_PROXY_TLS13_CIPHERS ||                                 \\\n   (option) == CURLOPT_PROXY_TLSAUTH_PASSWORD ||                              \\\n   (option) == CURLOPT_PROXY_TLSAUTH_TYPE ||                                  \\\n   (option) == CURLOPT_PROXY_TLSAUTH_USERNAME ||                              \\\n   (option) == CURLOPT_RANDOM_FILE ||                                         \\\n   (option) == CURLOPT_RANGE ||                                               \\\n   (option) == CURLOPT_REFERER ||                                             \\\n   (option) == CURLOPT_REQUEST_TARGET ||                                      \\\n   (option) == CURLOPT_RTSP_SESSION_ID ||                                     \\\n   (option) == CURLOPT_RTSP_STREAM_URI ||                                     \\\n   (option) == CURLOPT_RTSP_TRANSPORT ||                                      \\\n   (option) == CURLOPT_SASL_AUTHZID ||                                        \\\n   (option) == CURLOPT_SERVICE_NAME ||                                        \\\n   (option) == CURLOPT_SOCKS5_GSSAPI_SERVICE ||                               \\\n   (option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 ||                             \\\n   (option) == CURLOPT_SSH_KNOWNHOSTS ||                                      \\\n   (option) == CURLOPT_SSH_PRIVATE_KEYFILE ||                                 \\\n   (option) == CURLOPT_SSH_PUBLIC_KEYFILE ||                                  \\\n   (option) == CURLOPT_SSLCERT ||                                             \\\n   (option) == CURLOPT_SSLCERTTYPE ||                                         \\\n   (option) == CURLOPT_SSLENGINE ||                                           \\\n   (option) == CURLOPT_SSLKEY ||                                              \\\n   (option) == CURLOPT_SSLKEYTYPE ||                                          \\\n   (option) == CURLOPT_SSL_CIPHER_LIST ||                                     \\\n   (option) == CURLOPT_TLS13_CIPHERS ||                                       \\\n   (option) == CURLOPT_TLSAUTH_PASSWORD ||                                    \\\n   (option) == CURLOPT_TLSAUTH_TYPE ||                                        \\\n   (option) == CURLOPT_TLSAUTH_USERNAME ||                                    \\\n   (option) == CURLOPT_UNIX_SOCKET_PATH ||                                    \\\n   (option) == CURLOPT_URL ||                                                 \\\n   (option) == CURLOPT_USERAGENT ||                                           \\\n   (option) == CURLOPT_USERNAME ||                                            \\\n   (option) == CURLOPT_AWS_SIGV4 ||                                           \\\n   (option) == CURLOPT_USERPWD ||                                             \\\n   (option) == CURLOPT_XOAUTH2_BEARER ||                                      \\\n   (option) == CURLOPT_SSL_EC_CURVES ||                                       \\\n   0)\n\n/* evaluates to true if option takes a curl_write_callback argument */\n#define curlcheck_write_cb_option(option)                               \\\n  ((option) == CURLOPT_HEADERFUNCTION ||                                \\\n   (option) == CURLOPT_WRITEFUNCTION)\n\n/* evaluates to true if option takes a curl_conv_callback argument */\n#define curlcheck_conv_cb_option(option)                                \\\n  ((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION ||                      \\\n   (option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION ||                    \\\n   (option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)\n\n/* evaluates to true if option takes a data argument to pass to a callback */\n#define curlcheck_cb_data_option(option)                                      \\\n  ((option) == CURLOPT_CHUNK_DATA ||                                          \\\n   (option) == CURLOPT_CLOSESOCKETDATA ||                                     \\\n   (option) == CURLOPT_DEBUGDATA ||                                           \\\n   (option) == CURLOPT_FNMATCH_DATA ||                                        \\\n   (option) == CURLOPT_HEADERDATA ||                                          \\\n   (option) == CURLOPT_HSTSREADDATA ||                                        \\\n   (option) == CURLOPT_HSTSWRITEDATA ||                                       \\\n   (option) == CURLOPT_INTERLEAVEDATA ||                                      \\\n   (option) == CURLOPT_IOCTLDATA ||                                           \\\n   (option) == CURLOPT_OPENSOCKETDATA ||                                      \\\n   (option) == CURLOPT_PROGRESSDATA ||                                        \\\n   (option) == CURLOPT_READDATA ||                                            \\\n   (option) == CURLOPT_SEEKDATA ||                                            \\\n   (option) == CURLOPT_SOCKOPTDATA ||                                         \\\n   (option) == CURLOPT_SSH_KEYDATA ||                                         \\\n   (option) == CURLOPT_SSL_CTX_DATA ||                                        \\\n   (option) == CURLOPT_WRITEDATA ||                                           \\\n   (option) == CURLOPT_RESOLVER_START_DATA ||                                 \\\n   (option) == CURLOPT_TRAILERDATA ||                                         \\\n   0)\n\n/* evaluates to true if option takes a POST data argument (void* or char*) */\n#define curlcheck_postfields_option(option)                                   \\\n  ((option) == CURLOPT_POSTFIELDS ||                                          \\\n   (option) == CURLOPT_COPYPOSTFIELDS ||                                      \\\n   0)\n\n/* evaluates to true if option takes a struct curl_slist * argument */\n#define curlcheck_slist_option(option)                                        \\\n  ((option) == CURLOPT_HTTP200ALIASES ||                                      \\\n   (option) == CURLOPT_HTTPHEADER ||                                          \\\n   (option) == CURLOPT_MAIL_RCPT ||                                           \\\n   (option) == CURLOPT_POSTQUOTE ||                                           \\\n   (option) == CURLOPT_PREQUOTE ||                                            \\\n   (option) == CURLOPT_PROXYHEADER ||                                         \\\n   (option) == CURLOPT_QUOTE ||                                               \\\n   (option) == CURLOPT_RESOLVE ||                                             \\\n   (option) == CURLOPT_TELNETOPTIONS ||                                       \\\n   (option) == CURLOPT_CONNECT_TO ||                                          \\\n   0)\n\n/* groups of curl_easy_getinfo infos that take the same type of argument */\n\n/* evaluates to true if info expects a pointer to char * argument */\n#define curlcheck_string_info(info)                             \\\n  (CURLINFO_STRING < (info) && (info) < CURLINFO_LONG &&        \\\n   (info) != CURLINFO_PRIVATE)\n\n/* evaluates to true if info expects a pointer to long argument */\n#define curlcheck_long_info(info)                       \\\n  (CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)\n\n/* evaluates to true if info expects a pointer to double argument */\n#define curlcheck_double_info(info)                     \\\n  (CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)\n\n/* true if info expects a pointer to struct curl_slist * argument */\n#define curlcheck_slist_info(info)                                      \\\n  (((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST))\n\n/* true if info expects a pointer to struct curl_tlssessioninfo * argument */\n#define curlcheck_tlssessioninfo_info(info)                              \\\n  (((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION))\n\n/* true if info expects a pointer to struct curl_certinfo * argument */\n#define curlcheck_certinfo_info(info) ((info) == CURLINFO_CERTINFO)\n\n/* true if info expects a pointer to struct curl_socket_t argument */\n#define curlcheck_socket_info(info)                     \\\n  (CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T)\n\n/* true if info expects a pointer to curl_off_t argument */\n#define curlcheck_off_t_info(info)              \\\n  (CURLINFO_OFF_T < (info))\n\n\n/* typecheck helpers -- check whether given expression has requested type*/\n\n/* For pointers, you can use the curlcheck_ptr/curlcheck_arr macros,\n * otherwise define a new macro. Search for __builtin_types_compatible_p\n * in the GCC manual.\n * NOTE: these macros MUST NOT EVALUATE their arguments! The argument is\n * the actual expression passed to the curl_easy_setopt macro. This\n * means that you can only apply the sizeof and __typeof__ operators, no\n * == or whatsoever.\n */\n\n/* XXX: should evaluate to true if expr is a pointer */\n#define curlcheck_any_ptr(expr)                 \\\n  (sizeof(expr) == sizeof(void *))\n\n/* evaluates to true if expr is NULL */\n/* XXX: must not evaluate expr, so this check is not accurate */\n#define curlcheck_NULL(expr)                                            \\\n  (__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))\n\n/* evaluates to true if expr is type*, const type* or NULL */\n#define curlcheck_ptr(expr, type)                                       \\\n  (curlcheck_NULL(expr) ||                                              \\\n   __builtin_types_compatible_p(__typeof__(expr), type *) ||            \\\n   __builtin_types_compatible_p(__typeof__(expr), const type *))\n\n/* evaluates to true if expr is one of type[], type*, NULL or const type* */\n#define curlcheck_arr(expr, type)                                       \\\n  (curlcheck_ptr((expr), type) ||                                       \\\n   __builtin_types_compatible_p(__typeof__(expr), type []))\n\n/* evaluates to true if expr is a string */\n#define curlcheck_string(expr)                                          \\\n  (curlcheck_arr((expr), char) ||                                       \\\n   curlcheck_arr((expr), signed char) ||                                \\\n   curlcheck_arr((expr), unsigned char))\n\n/* evaluates to true if expr is a long (no matter the signedness)\n * XXX: for now, int is also accepted (and therefore short and char, which\n * are promoted to int when passed to a variadic function) */\n#define curlcheck_long(expr)                                                  \\\n  (__builtin_types_compatible_p(__typeof__(expr), long) ||                    \\\n   __builtin_types_compatible_p(__typeof__(expr), signed long) ||             \\\n   __builtin_types_compatible_p(__typeof__(expr), unsigned long) ||           \\\n   __builtin_types_compatible_p(__typeof__(expr), int) ||                     \\\n   __builtin_types_compatible_p(__typeof__(expr), signed int) ||              \\\n   __builtin_types_compatible_p(__typeof__(expr), unsigned int) ||            \\\n   __builtin_types_compatible_p(__typeof__(expr), short) ||                   \\\n   __builtin_types_compatible_p(__typeof__(expr), signed short) ||            \\\n   __builtin_types_compatible_p(__typeof__(expr), unsigned short) ||          \\\n   __builtin_types_compatible_p(__typeof__(expr), char) ||                    \\\n   __builtin_types_compatible_p(__typeof__(expr), signed char) ||             \\\n   __builtin_types_compatible_p(__typeof__(expr), unsigned char))\n\n/* evaluates to true if expr is of type curl_off_t */\n#define curlcheck_off_t(expr)                                   \\\n  (__builtin_types_compatible_p(__typeof__(expr), curl_off_t))\n\n/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */\n/* XXX: also check size of an char[] array? */\n#define curlcheck_error_buffer(expr)                                    \\\n  (curlcheck_NULL(expr) ||                                              \\\n   __builtin_types_compatible_p(__typeof__(expr), char *) ||            \\\n   __builtin_types_compatible_p(__typeof__(expr), char[]))\n\n/* evaluates to true if expr is of type (const) void* or (const) FILE* */\n#if 0\n#define curlcheck_cb_data(expr)                                         \\\n  (curlcheck_ptr((expr), void) ||                                       \\\n   curlcheck_ptr((expr), FILE))\n#else /* be less strict */\n#define curlcheck_cb_data(expr)                 \\\n  curlcheck_any_ptr(expr)\n#endif\n\n/* evaluates to true if expr is of type FILE* */\n#define curlcheck_FILE(expr)                                            \\\n  (curlcheck_NULL(expr) ||                                              \\\n   (__builtin_types_compatible_p(__typeof__(expr), FILE *)))\n\n/* evaluates to true if expr can be passed as POST data (void* or char*) */\n#define curlcheck_postfields(expr)                                      \\\n  (curlcheck_ptr((expr), void) ||                                       \\\n   curlcheck_arr((expr), char) ||                                       \\\n   curlcheck_arr((expr), unsigned char))\n\n/* helper: __builtin_types_compatible_p distinguishes between functions and\n * function pointers, hide it */\n#define curlcheck_cb_compatible(func, type)                             \\\n  (__builtin_types_compatible_p(__typeof__(func), type) ||              \\\n   __builtin_types_compatible_p(__typeof__(func) *, type))\n\n/* evaluates to true if expr is of type curl_resolver_start_callback */\n#define curlcheck_resolver_start_callback(expr)       \\\n  (curlcheck_NULL(expr) || \\\n   curlcheck_cb_compatible((expr), curl_resolver_start_callback))\n\n/* evaluates to true if expr is of type curl_read_callback or \"similar\" */\n#define curlcheck_read_cb(expr)                                         \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), __typeof__(fread) *) ||              \\\n   curlcheck_cb_compatible((expr), curl_read_callback) ||               \\\n   curlcheck_cb_compatible((expr), _curl_read_callback1) ||             \\\n   curlcheck_cb_compatible((expr), _curl_read_callback2) ||             \\\n   curlcheck_cb_compatible((expr), _curl_read_callback3) ||             \\\n   curlcheck_cb_compatible((expr), _curl_read_callback4) ||             \\\n   curlcheck_cb_compatible((expr), _curl_read_callback5) ||             \\\n   curlcheck_cb_compatible((expr), _curl_read_callback6))\ntypedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *);\ntypedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *);\ntypedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *);\ntypedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *);\ntypedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *);\ntypedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *);\n\n/* evaluates to true if expr is of type curl_write_callback or \"similar\" */\n#define curlcheck_write_cb(expr)                                        \\\n  (curlcheck_read_cb(expr) ||                                           \\\n   curlcheck_cb_compatible((expr), __typeof__(fwrite) *) ||             \\\n   curlcheck_cb_compatible((expr), curl_write_callback) ||              \\\n   curlcheck_cb_compatible((expr), _curl_write_callback1) ||            \\\n   curlcheck_cb_compatible((expr), _curl_write_callback2) ||            \\\n   curlcheck_cb_compatible((expr), _curl_write_callback3) ||            \\\n   curlcheck_cb_compatible((expr), _curl_write_callback4) ||            \\\n   curlcheck_cb_compatible((expr), _curl_write_callback5) ||            \\\n   curlcheck_cb_compatible((expr), _curl_write_callback6))\ntypedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *);\ntypedef size_t (*_curl_write_callback2)(const char *, size_t, size_t,\n                                       const void *);\ntypedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *);\ntypedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *);\ntypedef size_t (*_curl_write_callback5)(const void *, size_t, size_t,\n                                       const void *);\ntypedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *);\n\n/* evaluates to true if expr is of type curl_ioctl_callback or \"similar\" */\n#define curlcheck_ioctl_cb(expr)                                        \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_ioctl_callback) ||              \\\n   curlcheck_cb_compatible((expr), _curl_ioctl_callback1) ||            \\\n   curlcheck_cb_compatible((expr), _curl_ioctl_callback2) ||            \\\n   curlcheck_cb_compatible((expr), _curl_ioctl_callback3) ||            \\\n   curlcheck_cb_compatible((expr), _curl_ioctl_callback4))\ntypedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *);\ntypedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *);\ntypedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *);\ntypedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *);\n\n/* evaluates to true if expr is of type curl_sockopt_callback or \"similar\" */\n#define curlcheck_sockopt_cb(expr)                                      \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_sockopt_callback) ||            \\\n   curlcheck_cb_compatible((expr), _curl_sockopt_callback1) ||          \\\n   curlcheck_cb_compatible((expr), _curl_sockopt_callback2))\ntypedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);\ntypedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t,\n                                      curlsocktype);\n\n/* evaluates to true if expr is of type curl_opensocket_callback or\n   \"similar\" */\n#define curlcheck_opensocket_cb(expr)                                   \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_opensocket_callback) ||         \\\n   curlcheck_cb_compatible((expr), _curl_opensocket_callback1) ||       \\\n   curlcheck_cb_compatible((expr), _curl_opensocket_callback2) ||       \\\n   curlcheck_cb_compatible((expr), _curl_opensocket_callback3) ||       \\\n   curlcheck_cb_compatible((expr), _curl_opensocket_callback4))\ntypedef curl_socket_t (*_curl_opensocket_callback1)\n  (void *, curlsocktype, struct curl_sockaddr *);\ntypedef curl_socket_t (*_curl_opensocket_callback2)\n  (void *, curlsocktype, const struct curl_sockaddr *);\ntypedef curl_socket_t (*_curl_opensocket_callback3)\n  (const void *, curlsocktype, struct curl_sockaddr *);\ntypedef curl_socket_t (*_curl_opensocket_callback4)\n  (const void *, curlsocktype, const struct curl_sockaddr *);\n\n/* evaluates to true if expr is of type curl_progress_callback or \"similar\" */\n#define curlcheck_progress_cb(expr)                                     \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_progress_callback) ||           \\\n   curlcheck_cb_compatible((expr), _curl_progress_callback1) ||         \\\n   curlcheck_cb_compatible((expr), _curl_progress_callback2))\ntypedef int (*_curl_progress_callback1)(void *,\n    double, double, double, double);\ntypedef int (*_curl_progress_callback2)(const void *,\n    double, double, double, double);\n\n/* evaluates to true if expr is of type curl_debug_callback or \"similar\" */\n#define curlcheck_debug_cb(expr)                                        \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_debug_callback) ||              \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback1) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback2) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback3) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback4) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback5) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback6) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback7) ||            \\\n   curlcheck_cb_compatible((expr), _curl_debug_callback8))\ntypedef int (*_curl_debug_callback1) (CURL *,\n    curl_infotype, char *, size_t, void *);\ntypedef int (*_curl_debug_callback2) (CURL *,\n    curl_infotype, char *, size_t, const void *);\ntypedef int (*_curl_debug_callback3) (CURL *,\n    curl_infotype, const char *, size_t, void *);\ntypedef int (*_curl_debug_callback4) (CURL *,\n    curl_infotype, const char *, size_t, const void *);\ntypedef int (*_curl_debug_callback5) (CURL *,\n    curl_infotype, unsigned char *, size_t, void *);\ntypedef int (*_curl_debug_callback6) (CURL *,\n    curl_infotype, unsigned char *, size_t, const void *);\ntypedef int (*_curl_debug_callback7) (CURL *,\n    curl_infotype, const unsigned char *, size_t, void *);\ntypedef int (*_curl_debug_callback8) (CURL *,\n    curl_infotype, const unsigned char *, size_t, const void *);\n\n/* evaluates to true if expr is of type curl_ssl_ctx_callback or \"similar\" */\n/* this is getting even messier... */\n#define curlcheck_ssl_ctx_cb(expr)                                      \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_ssl_ctx_callback) ||            \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback1) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback2) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback3) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback4) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback5) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback6) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback7) ||          \\\n   curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback8))\ntypedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *,\n                                            const void *);\n#ifdef HEADER_SSL_H\n/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX\n * this will of course break if we're included before OpenSSL headers...\n */\ntypedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX *, void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX *, const void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX *, void *);\ntypedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX *,\n                                            const void *);\n#else\ntypedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;\ntypedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;\ntypedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;\ntypedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;\n#endif\n\n/* evaluates to true if expr is of type curl_conv_callback or \"similar\" */\n#define curlcheck_conv_cb(expr)                                         \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_conv_callback) ||               \\\n   curlcheck_cb_compatible((expr), _curl_conv_callback1) ||             \\\n   curlcheck_cb_compatible((expr), _curl_conv_callback2) ||             \\\n   curlcheck_cb_compatible((expr), _curl_conv_callback3) ||             \\\n   curlcheck_cb_compatible((expr), _curl_conv_callback4))\ntypedef CURLcode (*_curl_conv_callback1)(char *, size_t length);\ntypedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);\ntypedef CURLcode (*_curl_conv_callback3)(void *, size_t length);\ntypedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);\n\n/* evaluates to true if expr is of type curl_seek_callback or \"similar\" */\n#define curlcheck_seek_cb(expr)                                         \\\n  (curlcheck_NULL(expr) ||                                              \\\n   curlcheck_cb_compatible((expr), curl_seek_callback) ||               \\\n   curlcheck_cb_compatible((expr), _curl_seek_callback1) ||             \\\n   curlcheck_cb_compatible((expr), _curl_seek_callback2))\ntypedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);\ntypedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);\n\n\n#endif /* CURLINC_TYPECHECK_GCC_H */\n"
  },
  {
    "path": "libraries/curl/urlapi.h",
    "content": "#ifndef CURLINC_URLAPI_H\n#define CURLINC_URLAPI_H\n/***************************************************************************\n *                                  _   _ ____  _\n *  Project                     ___| | | |  _ \\| |\n *                             / __| | | | |_) | |\n *                            | (__| |_| |  _ <| |___\n *                             \\___|\\___/|_| \\_\\_____|\n *\n * Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.\n *\n * This software is licensed as described in the file COPYING, which\n * you should have received as part of this distribution. The terms\n * are also available at https://curl.se/docs/copyright.html.\n *\n * You may opt to use, copy, modify, merge, publish, distribute and/or sell\n * copies of the Software, and permit persons to whom the Software is\n * furnished to do so, under the terms of the COPYING file.\n *\n * This software is distributed on an \"AS IS\" basis, WITHOUT WARRANTY OF ANY\n * KIND, either express or implied.\n *\n ***************************************************************************/\n\n#include \"curl.h\"\n\n#ifdef  __cplusplus\nextern \"C\" {\n#endif\n\n/* the error codes for the URL API */\ntypedef enum {\n  CURLUE_OK,\n  CURLUE_BAD_HANDLE,          /* 1 */\n  CURLUE_BAD_PARTPOINTER,     /* 2 */\n  CURLUE_MALFORMED_INPUT,     /* 3 */\n  CURLUE_BAD_PORT_NUMBER,     /* 4 */\n  CURLUE_UNSUPPORTED_SCHEME,  /* 5 */\n  CURLUE_URLDECODE,           /* 6 */\n  CURLUE_OUT_OF_MEMORY,       /* 7 */\n  CURLUE_USER_NOT_ALLOWED,    /* 8 */\n  CURLUE_UNKNOWN_PART,        /* 9 */\n  CURLUE_NO_SCHEME,           /* 10 */\n  CURLUE_NO_USER,             /* 11 */\n  CURLUE_NO_PASSWORD,         /* 12 */\n  CURLUE_NO_OPTIONS,          /* 13 */\n  CURLUE_NO_HOST,             /* 14 */\n  CURLUE_NO_PORT,             /* 15 */\n  CURLUE_NO_QUERY,            /* 16 */\n  CURLUE_NO_FRAGMENT          /* 17 */\n} CURLUcode;\n\ntypedef enum {\n  CURLUPART_URL,\n  CURLUPART_SCHEME,\n  CURLUPART_USER,\n  CURLUPART_PASSWORD,\n  CURLUPART_OPTIONS,\n  CURLUPART_HOST,\n  CURLUPART_PORT,\n  CURLUPART_PATH,\n  CURLUPART_QUERY,\n  CURLUPART_FRAGMENT,\n  CURLUPART_ZONEID /* added in 7.65.0 */\n} CURLUPart;\n\n#define CURLU_DEFAULT_PORT (1<<0)       /* return default port number */\n#define CURLU_NO_DEFAULT_PORT (1<<1)    /* act as if no port number was set,\n                                           if the port number matches the\n                                           default for the scheme */\n#define CURLU_DEFAULT_SCHEME (1<<2)     /* return default scheme if\n                                           missing */\n#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */\n#define CURLU_PATH_AS_IS (1<<4)         /* leave dot sequences */\n#define CURLU_DISALLOW_USER (1<<5)      /* no user+password allowed */\n#define CURLU_URLDECODE (1<<6)          /* URL decode on get */\n#define CURLU_URLENCODE (1<<7)          /* URL encode on set */\n#define CURLU_APPENDQUERY (1<<8)        /* append a form style part */\n#define CURLU_GUESS_SCHEME (1<<9)       /* legacy curl-style guessing */\n#define CURLU_NO_AUTHORITY (1<<10)      /* Allow empty authority when the\n                                           scheme is unknown. */\n\ntypedef struct Curl_URL CURLU;\n\n/*\n * curl_url() creates a new CURLU handle and returns a pointer to it.\n * Must be freed with curl_url_cleanup().\n */\nCURL_EXTERN CURLU *curl_url(void);\n\n/*\n * curl_url_cleanup() frees the CURLU handle and related resources used for\n * the URL parsing. It will not free strings previously returned with the URL\n * API.\n */\nCURL_EXTERN void curl_url_cleanup(CURLU *handle);\n\n/*\n * curl_url_dup() duplicates a CURLU handle and returns a new copy. The new\n * handle must also be freed with curl_url_cleanup().\n */\nCURL_EXTERN CURLU *curl_url_dup(CURLU *in);\n\n/*\n * curl_url_get() extracts a specific part of the URL from a CURLU\n * handle. Returns error code. The returned pointer MUST be freed with\n * curl_free() afterwards.\n */\nCURL_EXTERN CURLUcode curl_url_get(CURLU *handle, CURLUPart what,\n                                   char **part, unsigned int flags);\n\n/*\n * curl_url_set() sets a specific part of the URL in a CURLU handle. Returns\n * error code. The passed in string will be copied. Passing a NULL instead of\n * a part string, clears that part.\n */\nCURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,\n                                   const char *part, unsigned int flags);\n\n\n#ifdef __cplusplus\n} /* end of extern \"C\" */\n#endif\n\n#endif /* CURLINC_URLAPI_H */\n"
  },
  {
    "path": "libraries/glad/glad.c",
    "content": "/*\n\n    OpenGL loader generated by glad 0.1.36 on Mon Mar 27 19:33:18 2023.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gl=4.0\n    Profile: core\n    Extensions:\n        GL_ARB_debug_output\n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"core\" --api=\"gl=4.0\" --generator=\"c\" --spec=\"gl\" --extensions=\"GL_ARB_debug_output\"\n    Online:\n        https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.0&extensions=GL_ARB_debug_output\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <glad/glad.h>\n\nstatic void* get_proc(const char *namez);\n\n#if defined(_WIN32) || defined(__CYGWIN__)\n#ifndef _WINDOWS_\n#undef APIENTRY\n#endif\n#include <windows.h>\nstatic HMODULE libGL;\n\ntypedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*);\nstatic PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;\n\n#ifdef _MSC_VER\n#ifdef __has_include\n  #if __has_include(<winapifamily.h>)\n    #define HAVE_WINAPIFAMILY 1\n  #endif\n#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_\n  #define HAVE_WINAPIFAMILY 1\n#endif\n#endif\n\n#ifdef HAVE_WINAPIFAMILY\n  #include <winapifamily.h>\n  #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)\n    #define IS_UWP 1\n  #endif\n#endif\n\nstatic\nint open_gl(void) {\n#ifndef IS_UWP\n    libGL = LoadLibraryW(L\"opengl32.dll\");\n    if(libGL != NULL) {\n        void (* tmp)(void);\n        tmp = (void(*)(void)) GetProcAddress(libGL, \"wglGetProcAddress\");\n        gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp;\n        return gladGetProcAddressPtr != NULL;\n    }\n#endif\n\n    return 0;\n}\n\nstatic\nvoid close_gl(void) {\n    if(libGL != NULL) {\n        FreeLibrary((HMODULE) libGL);\n        libGL = NULL;\n    }\n}\n#else\n#include <dlfcn.h>\nstatic void* libGL;\n\n#if !defined(__APPLE__) && !defined(__HAIKU__)\ntypedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*);\nstatic PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;\n#endif\n\nstatic\nint open_gl(void) {\n#ifdef __APPLE__\n    static const char *NAMES[] = {\n        \"../Frameworks/OpenGL.framework/OpenGL\",\n        \"/Library/Frameworks/OpenGL.framework/OpenGL\",\n        \"/System/Library/Frameworks/OpenGL.framework/OpenGL\",\n        \"/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL\"\n    };\n#else\n    static const char *NAMES[] = {\"libGL.so.1\", \"libGL.so\"};\n#endif\n\n    unsigned int index = 0;\n    for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) {\n        libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL);\n\n        if(libGL != NULL) {\n#if defined(__APPLE__) || defined(__HAIKU__)\n            return 1;\n#else\n            gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL,\n                \"glXGetProcAddressARB\");\n            return gladGetProcAddressPtr != NULL;\n#endif\n        }\n    }\n\n    return 0;\n}\n\nstatic\nvoid close_gl(void) {\n    if(libGL != NULL) {\n        dlclose(libGL);\n        libGL = NULL;\n    }\n}\n#endif\n\nstatic\nvoid* get_proc(const char *namez) {\n    void* result = NULL;\n    if(libGL == NULL) return NULL;\n\n#if !defined(__APPLE__) && !defined(__HAIKU__)\n    if(gladGetProcAddressPtr != NULL) {\n        result = gladGetProcAddressPtr(namez);\n    }\n#endif\n    if(result == NULL) {\n#if defined(_WIN32) || defined(__CYGWIN__)\n        result = (void*)GetProcAddress((HMODULE) libGL, namez);\n#else\n        result = dlsym(libGL, namez);\n#endif\n    }\n\n    return result;\n}\n\nint gladLoadGL(void) {\n    int status = 0;\n\n    if(open_gl()) {\n        status = gladLoadGLLoader(&get_proc);\n        close_gl();\n    }\n\n    return status;\n}\n\nstruct gladGLversionStruct GLVersion = { 0, 0 };\n\n#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0)\n#define _GLAD_IS_SOME_NEW_VERSION 1\n#endif\n\nstatic int max_loaded_major;\nstatic int max_loaded_minor;\n\nstatic const char *exts = NULL;\nstatic int num_exts_i = 0;\nstatic char **exts_i = NULL;\n\nstatic int get_exts(void) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        exts = (const char *)glGetString(GL_EXTENSIONS);\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        unsigned int index;\n\n        num_exts_i = 0;\n        glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i);\n        if (num_exts_i > 0) {\n            exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i));\n        }\n\n        if (exts_i == NULL) {\n            return 0;\n        }\n\n        for(index = 0; index < (unsigned)num_exts_i; index++) {\n            const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index);\n            size_t len = strlen(gl_str_tmp);\n\n            char *local_str = (char*)malloc((len+1) * sizeof(char));\n            if(local_str != NULL) {\n                memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char));\n            }\n            exts_i[index] = local_str;\n        }\n    }\n#endif\n    return 1;\n}\n\nstatic void free_exts(void) {\n    if (exts_i != NULL) {\n        int index;\n        for(index = 0; index < num_exts_i; index++) {\n            free((char *)exts_i[index]);\n        }\n        free((void *)exts_i);\n        exts_i = NULL;\n    }\n}\n\nstatic int has_ext(const char *ext) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        const char *extensions;\n        const char *loc;\n        const char *terminator;\n        extensions = exts;\n        if(extensions == NULL || ext == NULL) {\n            return 0;\n        }\n\n        while(1) {\n            loc = strstr(extensions, ext);\n            if(loc == NULL) {\n                return 0;\n            }\n\n            terminator = loc + strlen(ext);\n            if((loc == extensions || *(loc - 1) == ' ') &&\n                (*terminator == ' ' || *terminator == '\\0')) {\n                return 1;\n            }\n            extensions = terminator;\n        }\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        int index;\n        if(exts_i == NULL) return 0;\n        for(index = 0; index < num_exts_i; index++) {\n            const char *e = exts_i[index];\n\n            if(exts_i[index] != NULL && strcmp(e, ext) == 0) {\n                return 1;\n            }\n        }\n    }\n#endif\n\n    return 0;\n}\nint GLAD_GL_VERSION_1_0 = 0;\nint GLAD_GL_VERSION_1_1 = 0;\nint GLAD_GL_VERSION_1_2 = 0;\nint GLAD_GL_VERSION_1_3 = 0;\nint GLAD_GL_VERSION_1_4 = 0;\nint GLAD_GL_VERSION_1_5 = 0;\nint GLAD_GL_VERSION_2_0 = 0;\nint GLAD_GL_VERSION_2_1 = 0;\nint GLAD_GL_VERSION_3_0 = 0;\nint GLAD_GL_VERSION_3_1 = 0;\nint GLAD_GL_VERSION_3_2 = 0;\nint GLAD_GL_VERSION_3_3 = 0;\nint GLAD_GL_VERSION_4_0 = 0;\nPFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL;\nPFNGLATTACHSHADERPROC glad_glAttachShader = NULL;\nPFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL;\nPFNGLBEGINQUERYPROC glad_glBeginQuery = NULL;\nPFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL;\nPFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL;\nPFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL;\nPFNGLBINDBUFFERPROC glad_glBindBuffer = NULL;\nPFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL;\nPFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL;\nPFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL;\nPFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL;\nPFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL;\nPFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL;\nPFNGLBINDSAMPLERPROC glad_glBindSampler = NULL;\nPFNGLBINDTEXTUREPROC glad_glBindTexture = NULL;\nPFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL;\nPFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL;\nPFNGLBLENDCOLORPROC glad_glBlendColor = NULL;\nPFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL;\nPFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL;\nPFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL;\nPFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL;\nPFNGLBLENDFUNCPROC glad_glBlendFunc = NULL;\nPFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL;\nPFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL;\nPFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL;\nPFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL;\nPFNGLBUFFERDATAPROC glad_glBufferData = NULL;\nPFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL;\nPFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL;\nPFNGLCLAMPCOLORPROC glad_glClampColor = NULL;\nPFNGLCLEARPROC glad_glClear = NULL;\nPFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL;\nPFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL;\nPFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL;\nPFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL;\nPFNGLCLEARCOLORPROC glad_glClearColor = NULL;\nPFNGLCLEARDEPTHPROC glad_glClearDepth = NULL;\nPFNGLCLEARSTENCILPROC glad_glClearStencil = NULL;\nPFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL;\nPFNGLCOLORMASKPROC glad_glColorMask = NULL;\nPFNGLCOLORMASKIPROC glad_glColorMaski = NULL;\nPFNGLCOLORP3UIPROC glad_glColorP3ui = NULL;\nPFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL;\nPFNGLCOLORP4UIPROC glad_glColorP4ui = NULL;\nPFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL;\nPFNGLCOMPILESHADERPROC glad_glCompileShader = NULL;\nPFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL;\nPFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL;\nPFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL;\nPFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL;\nPFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL;\nPFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL;\nPFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL;\nPFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL;\nPFNGLCREATESHADERPROC glad_glCreateShader = NULL;\nPFNGLCULLFACEPROC glad_glCullFace = NULL;\nPFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL;\nPFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL;\nPFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL;\nPFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL;\nPFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL;\nPFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL;\nPFNGLDELETESHADERPROC glad_glDeleteShader = NULL;\nPFNGLDELETESYNCPROC glad_glDeleteSync = NULL;\nPFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL;\nPFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL;\nPFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL;\nPFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL;\nPFNGLDEPTHMASKPROC glad_glDepthMask = NULL;\nPFNGLDEPTHRANGEPROC glad_glDepthRange = NULL;\nPFNGLDETACHSHADERPROC glad_glDetachShader = NULL;\nPFNGLDISABLEPROC glad_glDisable = NULL;\nPFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL;\nPFNGLDISABLEIPROC glad_glDisablei = NULL;\nPFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL;\nPFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL;\nPFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL;\nPFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL;\nPFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL;\nPFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL;\nPFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL;\nPFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL;\nPFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL;\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL;\nPFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL;\nPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL;\nPFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL;\nPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL;\nPFNGLENABLEPROC glad_glEnable = NULL;\nPFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL;\nPFNGLENABLEIPROC glad_glEnablei = NULL;\nPFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL;\nPFNGLENDQUERYPROC glad_glEndQuery = NULL;\nPFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL;\nPFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL;\nPFNGLFENCESYNCPROC glad_glFenceSync = NULL;\nPFNGLFINISHPROC glad_glFinish = NULL;\nPFNGLFLUSHPROC glad_glFlush = NULL;\nPFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL;\nPFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL;\nPFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL;\nPFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL;\nPFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL;\nPFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL;\nPFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL;\nPFNGLFRONTFACEPROC glad_glFrontFace = NULL;\nPFNGLGENBUFFERSPROC glad_glGenBuffers = NULL;\nPFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL;\nPFNGLGENQUERIESPROC glad_glGenQueries = NULL;\nPFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL;\nPFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL;\nPFNGLGENTEXTURESPROC glad_glGenTextures = NULL;\nPFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL;\nPFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL;\nPFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL;\nPFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL;\nPFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL;\nPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL;\nPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL;\nPFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL;\nPFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL;\nPFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL;\nPFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL;\nPFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL;\nPFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL;\nPFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL;\nPFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL;\nPFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL;\nPFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL;\nPFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL;\nPFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL;\nPFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL;\nPFNGLGETERRORPROC glad_glGetError = NULL;\nPFNGLGETFLOATVPROC glad_glGetFloatv = NULL;\nPFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL;\nPFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL;\nPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL;\nPFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL;\nPFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL;\nPFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL;\nPFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL;\nPFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL;\nPFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL;\nPFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL;\nPFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL;\nPFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL;\nPFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL;\nPFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL;\nPFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL;\nPFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL;\nPFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL;\nPFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL;\nPFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL;\nPFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL;\nPFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL;\nPFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL;\nPFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL;\nPFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL;\nPFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL;\nPFNGLGETSTRINGPROC glad_glGetString = NULL;\nPFNGLGETSTRINGIPROC glad_glGetStringi = NULL;\nPFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL;\nPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL;\nPFNGLGETSYNCIVPROC glad_glGetSynciv = NULL;\nPFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL;\nPFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL;\nPFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL;\nPFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL;\nPFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL;\nPFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL;\nPFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL;\nPFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL;\nPFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL;\nPFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL;\nPFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL;\nPFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL;\nPFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL;\nPFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL;\nPFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL;\nPFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL;\nPFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL;\nPFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL;\nPFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL;\nPFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL;\nPFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL;\nPFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL;\nPFNGLHINTPROC glad_glHint = NULL;\nPFNGLISBUFFERPROC glad_glIsBuffer = NULL;\nPFNGLISENABLEDPROC glad_glIsEnabled = NULL;\nPFNGLISENABLEDIPROC glad_glIsEnabledi = NULL;\nPFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL;\nPFNGLISPROGRAMPROC glad_glIsProgram = NULL;\nPFNGLISQUERYPROC glad_glIsQuery = NULL;\nPFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL;\nPFNGLISSAMPLERPROC glad_glIsSampler = NULL;\nPFNGLISSHADERPROC glad_glIsShader = NULL;\nPFNGLISSYNCPROC glad_glIsSync = NULL;\nPFNGLISTEXTUREPROC glad_glIsTexture = NULL;\nPFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL;\nPFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL;\nPFNGLLINEWIDTHPROC glad_glLineWidth = NULL;\nPFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL;\nPFNGLLOGICOPPROC glad_glLogicOp = NULL;\nPFNGLMAPBUFFERPROC glad_glMapBuffer = NULL;\nPFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL;\nPFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL;\nPFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL;\nPFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL;\nPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL;\nPFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL;\nPFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL;\nPFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL;\nPFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL;\nPFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL;\nPFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL;\nPFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL;\nPFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL;\nPFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL;\nPFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL;\nPFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL;\nPFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL;\nPFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL;\nPFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL;\nPFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL;\nPFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL;\nPFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL;\nPFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL;\nPFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL;\nPFNGLPOINTSIZEPROC glad_glPointSize = NULL;\nPFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL;\nPFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL;\nPFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL;\nPFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL;\nPFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL;\nPFNGLREADBUFFERPROC glad_glReadBuffer = NULL;\nPFNGLREADPIXELSPROC glad_glReadPixels = NULL;\nPFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL;\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL;\nPFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL;\nPFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL;\nPFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL;\nPFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL;\nPFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL;\nPFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL;\nPFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL;\nPFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL;\nPFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL;\nPFNGLSCISSORPROC glad_glScissor = NULL;\nPFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL;\nPFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL;\nPFNGLSHADERSOURCEPROC glad_glShaderSource = NULL;\nPFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL;\nPFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL;\nPFNGLSTENCILMASKPROC glad_glStencilMask = NULL;\nPFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL;\nPFNGLSTENCILOPPROC glad_glStencilOp = NULL;\nPFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL;\nPFNGLTEXBUFFERPROC glad_glTexBuffer = NULL;\nPFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL;\nPFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL;\nPFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL;\nPFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL;\nPFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL;\nPFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL;\nPFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL;\nPFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL;\nPFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL;\nPFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL;\nPFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL;\nPFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL;\nPFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL;\nPFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL;\nPFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL;\nPFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL;\nPFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL;\nPFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL;\nPFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL;\nPFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL;\nPFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL;\nPFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL;\nPFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL;\nPFNGLUNIFORM1DPROC glad_glUniform1d = NULL;\nPFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL;\nPFNGLUNIFORM1FPROC glad_glUniform1f = NULL;\nPFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL;\nPFNGLUNIFORM1IPROC glad_glUniform1i = NULL;\nPFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL;\nPFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL;\nPFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL;\nPFNGLUNIFORM2DPROC glad_glUniform2d = NULL;\nPFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL;\nPFNGLUNIFORM2FPROC glad_glUniform2f = NULL;\nPFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL;\nPFNGLUNIFORM2IPROC glad_glUniform2i = NULL;\nPFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL;\nPFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL;\nPFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL;\nPFNGLUNIFORM3DPROC glad_glUniform3d = NULL;\nPFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL;\nPFNGLUNIFORM3FPROC glad_glUniform3f = NULL;\nPFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL;\nPFNGLUNIFORM3IPROC glad_glUniform3i = NULL;\nPFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL;\nPFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL;\nPFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL;\nPFNGLUNIFORM4DPROC glad_glUniform4d = NULL;\nPFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL;\nPFNGLUNIFORM4FPROC glad_glUniform4f = NULL;\nPFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL;\nPFNGLUNIFORM4IPROC glad_glUniform4i = NULL;\nPFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL;\nPFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL;\nPFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL;\nPFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL;\nPFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL;\nPFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL;\nPFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL;\nPFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL;\nPFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL;\nPFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL;\nPFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL;\nPFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL;\nPFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL;\nPFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL;\nPFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL;\nPFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL;\nPFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL;\nPFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL;\nPFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL;\nPFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL;\nPFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL;\nPFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL;\nPFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL;\nPFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL;\nPFNGLUSEPROGRAMPROC glad_glUseProgram = NULL;\nPFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL;\nPFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL;\nPFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL;\nPFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL;\nPFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL;\nPFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL;\nPFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL;\nPFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL;\nPFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL;\nPFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL;\nPFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL;\nPFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL;\nPFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL;\nPFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL;\nPFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL;\nPFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL;\nPFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL;\nPFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL;\nPFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL;\nPFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL;\nPFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL;\nPFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL;\nPFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL;\nPFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL;\nPFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL;\nPFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL;\nPFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL;\nPFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL;\nPFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL;\nPFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL;\nPFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL;\nPFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL;\nPFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL;\nPFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL;\nPFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL;\nPFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL;\nPFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL;\nPFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL;\nPFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL;\nPFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL;\nPFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL;\nPFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL;\nPFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL;\nPFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL;\nPFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL;\nPFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL;\nPFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL;\nPFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL;\nPFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL;\nPFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL;\nPFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL;\nPFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL;\nPFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL;\nPFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL;\nPFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL;\nPFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL;\nPFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL;\nPFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL;\nPFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL;\nPFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL;\nPFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL;\nPFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL;\nPFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL;\nPFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL;\nPFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL;\nPFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL;\nPFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL;\nPFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL;\nPFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL;\nPFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL;\nPFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL;\nPFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL;\nPFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL;\nPFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL;\nPFNGLVIEWPORTPROC glad_glViewport = NULL;\nPFNGLWAITSYNCPROC glad_glWaitSync = NULL;\nint GLAD_GL_ARB_debug_output = 0;\nPFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB = NULL;\nPFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB = NULL;\nPFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB = NULL;\nPFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB = NULL;\nstatic void load_GL_VERSION_1_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_0) return;\n\tglad_glCullFace = (PFNGLCULLFACEPROC)load(\"glCullFace\");\n\tglad_glFrontFace = (PFNGLFRONTFACEPROC)load(\"glFrontFace\");\n\tglad_glHint = (PFNGLHINTPROC)load(\"glHint\");\n\tglad_glLineWidth = (PFNGLLINEWIDTHPROC)load(\"glLineWidth\");\n\tglad_glPointSize = (PFNGLPOINTSIZEPROC)load(\"glPointSize\");\n\tglad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load(\"glPolygonMode\");\n\tglad_glScissor = (PFNGLSCISSORPROC)load(\"glScissor\");\n\tglad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load(\"glTexParameterf\");\n\tglad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load(\"glTexParameterfv\");\n\tglad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load(\"glTexParameteri\");\n\tglad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load(\"glTexParameteriv\");\n\tglad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load(\"glTexImage1D\");\n\tglad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load(\"glTexImage2D\");\n\tglad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load(\"glDrawBuffer\");\n\tglad_glClear = (PFNGLCLEARPROC)load(\"glClear\");\n\tglad_glClearColor = (PFNGLCLEARCOLORPROC)load(\"glClearColor\");\n\tglad_glClearStencil = (PFNGLCLEARSTENCILPROC)load(\"glClearStencil\");\n\tglad_glClearDepth = (PFNGLCLEARDEPTHPROC)load(\"glClearDepth\");\n\tglad_glStencilMask = (PFNGLSTENCILMASKPROC)load(\"glStencilMask\");\n\tglad_glColorMask = (PFNGLCOLORMASKPROC)load(\"glColorMask\");\n\tglad_glDepthMask = (PFNGLDEPTHMASKPROC)load(\"glDepthMask\");\n\tglad_glDisable = (PFNGLDISABLEPROC)load(\"glDisable\");\n\tglad_glEnable = (PFNGLENABLEPROC)load(\"glEnable\");\n\tglad_glFinish = (PFNGLFINISHPROC)load(\"glFinish\");\n\tglad_glFlush = (PFNGLFLUSHPROC)load(\"glFlush\");\n\tglad_glBlendFunc = (PFNGLBLENDFUNCPROC)load(\"glBlendFunc\");\n\tglad_glLogicOp = (PFNGLLOGICOPPROC)load(\"glLogicOp\");\n\tglad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load(\"glStencilFunc\");\n\tglad_glStencilOp = (PFNGLSTENCILOPPROC)load(\"glStencilOp\");\n\tglad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load(\"glDepthFunc\");\n\tglad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load(\"glPixelStoref\");\n\tglad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load(\"glPixelStorei\");\n\tglad_glReadBuffer = (PFNGLREADBUFFERPROC)load(\"glReadBuffer\");\n\tglad_glReadPixels = (PFNGLREADPIXELSPROC)load(\"glReadPixels\");\n\tglad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load(\"glGetBooleanv\");\n\tglad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load(\"glGetDoublev\");\n\tglad_glGetError = (PFNGLGETERRORPROC)load(\"glGetError\");\n\tglad_glGetFloatv = (PFNGLGETFLOATVPROC)load(\"glGetFloatv\");\n\tglad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load(\"glGetIntegerv\");\n\tglad_glGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tglad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load(\"glGetTexImage\");\n\tglad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load(\"glGetTexParameterfv\");\n\tglad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load(\"glGetTexParameteriv\");\n\tglad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load(\"glGetTexLevelParameterfv\");\n\tglad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load(\"glGetTexLevelParameteriv\");\n\tglad_glIsEnabled = (PFNGLISENABLEDPROC)load(\"glIsEnabled\");\n\tglad_glDepthRange = (PFNGLDEPTHRANGEPROC)load(\"glDepthRange\");\n\tglad_glViewport = (PFNGLVIEWPORTPROC)load(\"glViewport\");\n}\nstatic void load_GL_VERSION_1_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_1) return;\n\tglad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load(\"glDrawArrays\");\n\tglad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load(\"glDrawElements\");\n\tglad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load(\"glPolygonOffset\");\n\tglad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load(\"glCopyTexImage1D\");\n\tglad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load(\"glCopyTexImage2D\");\n\tglad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load(\"glCopyTexSubImage1D\");\n\tglad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load(\"glCopyTexSubImage2D\");\n\tglad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load(\"glTexSubImage1D\");\n\tglad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load(\"glTexSubImage2D\");\n\tglad_glBindTexture = (PFNGLBINDTEXTUREPROC)load(\"glBindTexture\");\n\tglad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load(\"glDeleteTextures\");\n\tglad_glGenTextures = (PFNGLGENTEXTURESPROC)load(\"glGenTextures\");\n\tglad_glIsTexture = (PFNGLISTEXTUREPROC)load(\"glIsTexture\");\n}\nstatic void load_GL_VERSION_1_2(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_2) return;\n\tglad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load(\"glDrawRangeElements\");\n\tglad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load(\"glTexImage3D\");\n\tglad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load(\"glTexSubImage3D\");\n\tglad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load(\"glCopyTexSubImage3D\");\n}\nstatic void load_GL_VERSION_1_3(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_3) return;\n\tglad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load(\"glActiveTexture\");\n\tglad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load(\"glSampleCoverage\");\n\tglad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load(\"glCompressedTexImage3D\");\n\tglad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load(\"glCompressedTexImage2D\");\n\tglad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load(\"glCompressedTexImage1D\");\n\tglad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load(\"glCompressedTexSubImage3D\");\n\tglad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load(\"glCompressedTexSubImage2D\");\n\tglad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load(\"glCompressedTexSubImage1D\");\n\tglad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load(\"glGetCompressedTexImage\");\n}\nstatic void load_GL_VERSION_1_4(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_4) return;\n\tglad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load(\"glBlendFuncSeparate\");\n\tglad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load(\"glMultiDrawArrays\");\n\tglad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load(\"glMultiDrawElements\");\n\tglad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load(\"glPointParameterf\");\n\tglad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load(\"glPointParameterfv\");\n\tglad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load(\"glPointParameteri\");\n\tglad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load(\"glPointParameteriv\");\n\tglad_glBlendColor = (PFNGLBLENDCOLORPROC)load(\"glBlendColor\");\n\tglad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load(\"glBlendEquation\");\n}\nstatic void load_GL_VERSION_1_5(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_5) return;\n\tglad_glGenQueries = (PFNGLGENQUERIESPROC)load(\"glGenQueries\");\n\tglad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load(\"glDeleteQueries\");\n\tglad_glIsQuery = (PFNGLISQUERYPROC)load(\"glIsQuery\");\n\tglad_glBeginQuery = (PFNGLBEGINQUERYPROC)load(\"glBeginQuery\");\n\tglad_glEndQuery = (PFNGLENDQUERYPROC)load(\"glEndQuery\");\n\tglad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load(\"glGetQueryiv\");\n\tglad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load(\"glGetQueryObjectiv\");\n\tglad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load(\"glGetQueryObjectuiv\");\n\tglad_glBindBuffer = (PFNGLBINDBUFFERPROC)load(\"glBindBuffer\");\n\tglad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load(\"glDeleteBuffers\");\n\tglad_glGenBuffers = (PFNGLGENBUFFERSPROC)load(\"glGenBuffers\");\n\tglad_glIsBuffer = (PFNGLISBUFFERPROC)load(\"glIsBuffer\");\n\tglad_glBufferData = (PFNGLBUFFERDATAPROC)load(\"glBufferData\");\n\tglad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load(\"glBufferSubData\");\n\tglad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load(\"glGetBufferSubData\");\n\tglad_glMapBuffer = (PFNGLMAPBUFFERPROC)load(\"glMapBuffer\");\n\tglad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load(\"glUnmapBuffer\");\n\tglad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load(\"glGetBufferParameteriv\");\n\tglad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load(\"glGetBufferPointerv\");\n}\nstatic void load_GL_VERSION_2_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_2_0) return;\n\tglad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load(\"glBlendEquationSeparate\");\n\tglad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load(\"glDrawBuffers\");\n\tglad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load(\"glStencilOpSeparate\");\n\tglad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load(\"glStencilFuncSeparate\");\n\tglad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load(\"glStencilMaskSeparate\");\n\tglad_glAttachShader = (PFNGLATTACHSHADERPROC)load(\"glAttachShader\");\n\tglad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load(\"glBindAttribLocation\");\n\tglad_glCompileShader = (PFNGLCOMPILESHADERPROC)load(\"glCompileShader\");\n\tglad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load(\"glCreateProgram\");\n\tglad_glCreateShader = (PFNGLCREATESHADERPROC)load(\"glCreateShader\");\n\tglad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load(\"glDeleteProgram\");\n\tglad_glDeleteShader = (PFNGLDELETESHADERPROC)load(\"glDeleteShader\");\n\tglad_glDetachShader = (PFNGLDETACHSHADERPROC)load(\"glDetachShader\");\n\tglad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load(\"glDisableVertexAttribArray\");\n\tglad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load(\"glEnableVertexAttribArray\");\n\tglad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load(\"glGetActiveAttrib\");\n\tglad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load(\"glGetActiveUniform\");\n\tglad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load(\"glGetAttachedShaders\");\n\tglad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load(\"glGetAttribLocation\");\n\tglad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load(\"glGetProgramiv\");\n\tglad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load(\"glGetProgramInfoLog\");\n\tglad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load(\"glGetShaderiv\");\n\tglad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load(\"glGetShaderInfoLog\");\n\tglad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load(\"glGetShaderSource\");\n\tglad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load(\"glGetUniformLocation\");\n\tglad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load(\"glGetUniformfv\");\n\tglad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load(\"glGetUniformiv\");\n\tglad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load(\"glGetVertexAttribdv\");\n\tglad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load(\"glGetVertexAttribfv\");\n\tglad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load(\"glGetVertexAttribiv\");\n\tglad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load(\"glGetVertexAttribPointerv\");\n\tglad_glIsProgram = (PFNGLISPROGRAMPROC)load(\"glIsProgram\");\n\tglad_glIsShader = (PFNGLISSHADERPROC)load(\"glIsShader\");\n\tglad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load(\"glLinkProgram\");\n\tglad_glShaderSource = (PFNGLSHADERSOURCEPROC)load(\"glShaderSource\");\n\tglad_glUseProgram = (PFNGLUSEPROGRAMPROC)load(\"glUseProgram\");\n\tglad_glUniform1f = (PFNGLUNIFORM1FPROC)load(\"glUniform1f\");\n\tglad_glUniform2f = (PFNGLUNIFORM2FPROC)load(\"glUniform2f\");\n\tglad_glUniform3f = (PFNGLUNIFORM3FPROC)load(\"glUniform3f\");\n\tglad_glUniform4f = (PFNGLUNIFORM4FPROC)load(\"glUniform4f\");\n\tglad_glUniform1i = (PFNGLUNIFORM1IPROC)load(\"glUniform1i\");\n\tglad_glUniform2i = (PFNGLUNIFORM2IPROC)load(\"glUniform2i\");\n\tglad_glUniform3i = (PFNGLUNIFORM3IPROC)load(\"glUniform3i\");\n\tglad_glUniform4i = (PFNGLUNIFORM4IPROC)load(\"glUniform4i\");\n\tglad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load(\"glUniform1fv\");\n\tglad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load(\"glUniform2fv\");\n\tglad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load(\"glUniform3fv\");\n\tglad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load(\"glUniform4fv\");\n\tglad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load(\"glUniform1iv\");\n\tglad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load(\"glUniform2iv\");\n\tglad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load(\"glUniform3iv\");\n\tglad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load(\"glUniform4iv\");\n\tglad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load(\"glUniformMatrix2fv\");\n\tglad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load(\"glUniformMatrix3fv\");\n\tglad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load(\"glUniformMatrix4fv\");\n\tglad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load(\"glValidateProgram\");\n\tglad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load(\"glVertexAttrib1d\");\n\tglad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load(\"glVertexAttrib1dv\");\n\tglad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load(\"glVertexAttrib1f\");\n\tglad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load(\"glVertexAttrib1fv\");\n\tglad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load(\"glVertexAttrib1s\");\n\tglad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load(\"glVertexAttrib1sv\");\n\tglad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load(\"glVertexAttrib2d\");\n\tglad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load(\"glVertexAttrib2dv\");\n\tglad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load(\"glVertexAttrib2f\");\n\tglad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load(\"glVertexAttrib2fv\");\n\tglad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load(\"glVertexAttrib2s\");\n\tglad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load(\"glVertexAttrib2sv\");\n\tglad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load(\"glVertexAttrib3d\");\n\tglad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load(\"glVertexAttrib3dv\");\n\tglad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load(\"glVertexAttrib3f\");\n\tglad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load(\"glVertexAttrib3fv\");\n\tglad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load(\"glVertexAttrib3s\");\n\tglad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load(\"glVertexAttrib3sv\");\n\tglad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load(\"glVertexAttrib4Nbv\");\n\tglad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load(\"glVertexAttrib4Niv\");\n\tglad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load(\"glVertexAttrib4Nsv\");\n\tglad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load(\"glVertexAttrib4Nub\");\n\tglad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load(\"glVertexAttrib4Nubv\");\n\tglad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load(\"glVertexAttrib4Nuiv\");\n\tglad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load(\"glVertexAttrib4Nusv\");\n\tglad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load(\"glVertexAttrib4bv\");\n\tglad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load(\"glVertexAttrib4d\");\n\tglad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load(\"glVertexAttrib4dv\");\n\tglad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load(\"glVertexAttrib4f\");\n\tglad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load(\"glVertexAttrib4fv\");\n\tglad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load(\"glVertexAttrib4iv\");\n\tglad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load(\"glVertexAttrib4s\");\n\tglad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load(\"glVertexAttrib4sv\");\n\tglad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load(\"glVertexAttrib4ubv\");\n\tglad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load(\"glVertexAttrib4uiv\");\n\tglad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load(\"glVertexAttrib4usv\");\n\tglad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load(\"glVertexAttribPointer\");\n}\nstatic void load_GL_VERSION_2_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_2_1) return;\n\tglad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load(\"glUniformMatrix2x3fv\");\n\tglad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load(\"glUniformMatrix3x2fv\");\n\tglad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load(\"glUniformMatrix2x4fv\");\n\tglad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load(\"glUniformMatrix4x2fv\");\n\tglad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load(\"glUniformMatrix3x4fv\");\n\tglad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load(\"glUniformMatrix4x3fv\");\n}\nstatic void load_GL_VERSION_3_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_0) return;\n\tglad_glColorMaski = (PFNGLCOLORMASKIPROC)load(\"glColorMaski\");\n\tglad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load(\"glGetBooleani_v\");\n\tglad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load(\"glGetIntegeri_v\");\n\tglad_glEnablei = (PFNGLENABLEIPROC)load(\"glEnablei\");\n\tglad_glDisablei = (PFNGLDISABLEIPROC)load(\"glDisablei\");\n\tglad_glIsEnabledi = (PFNGLISENABLEDIPROC)load(\"glIsEnabledi\");\n\tglad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load(\"glBeginTransformFeedback\");\n\tglad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load(\"glEndTransformFeedback\");\n\tglad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load(\"glBindBufferRange\");\n\tglad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load(\"glBindBufferBase\");\n\tglad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load(\"glTransformFeedbackVaryings\");\n\tglad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load(\"glGetTransformFeedbackVarying\");\n\tglad_glClampColor = (PFNGLCLAMPCOLORPROC)load(\"glClampColor\");\n\tglad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load(\"glBeginConditionalRender\");\n\tglad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load(\"glEndConditionalRender\");\n\tglad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load(\"glVertexAttribIPointer\");\n\tglad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load(\"glGetVertexAttribIiv\");\n\tglad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load(\"glGetVertexAttribIuiv\");\n\tglad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load(\"glVertexAttribI1i\");\n\tglad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load(\"glVertexAttribI2i\");\n\tglad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load(\"glVertexAttribI3i\");\n\tglad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load(\"glVertexAttribI4i\");\n\tglad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load(\"glVertexAttribI1ui\");\n\tglad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load(\"glVertexAttribI2ui\");\n\tglad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load(\"glVertexAttribI3ui\");\n\tglad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load(\"glVertexAttribI4ui\");\n\tglad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load(\"glVertexAttribI1iv\");\n\tglad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load(\"glVertexAttribI2iv\");\n\tglad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load(\"glVertexAttribI3iv\");\n\tglad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load(\"glVertexAttribI4iv\");\n\tglad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load(\"glVertexAttribI1uiv\");\n\tglad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load(\"glVertexAttribI2uiv\");\n\tglad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load(\"glVertexAttribI3uiv\");\n\tglad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load(\"glVertexAttribI4uiv\");\n\tglad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load(\"glVertexAttribI4bv\");\n\tglad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load(\"glVertexAttribI4sv\");\n\tglad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load(\"glVertexAttribI4ubv\");\n\tglad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load(\"glVertexAttribI4usv\");\n\tglad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load(\"glGetUniformuiv\");\n\tglad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load(\"glBindFragDataLocation\");\n\tglad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load(\"glGetFragDataLocation\");\n\tglad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load(\"glUniform1ui\");\n\tglad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load(\"glUniform2ui\");\n\tglad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load(\"glUniform3ui\");\n\tglad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load(\"glUniform4ui\");\n\tglad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load(\"glUniform1uiv\");\n\tglad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load(\"glUniform2uiv\");\n\tglad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load(\"glUniform3uiv\");\n\tglad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load(\"glUniform4uiv\");\n\tglad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load(\"glTexParameterIiv\");\n\tglad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load(\"glTexParameterIuiv\");\n\tglad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load(\"glGetTexParameterIiv\");\n\tglad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load(\"glGetTexParameterIuiv\");\n\tglad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load(\"glClearBufferiv\");\n\tglad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load(\"glClearBufferuiv\");\n\tglad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load(\"glClearBufferfv\");\n\tglad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load(\"glClearBufferfi\");\n\tglad_glGetStringi = (PFNGLGETSTRINGIPROC)load(\"glGetStringi\");\n\tglad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load(\"glIsRenderbuffer\");\n\tglad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load(\"glBindRenderbuffer\");\n\tglad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load(\"glDeleteRenderbuffers\");\n\tglad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load(\"glGenRenderbuffers\");\n\tglad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load(\"glRenderbufferStorage\");\n\tglad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load(\"glGetRenderbufferParameteriv\");\n\tglad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load(\"glIsFramebuffer\");\n\tglad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load(\"glBindFramebuffer\");\n\tglad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load(\"glDeleteFramebuffers\");\n\tglad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load(\"glGenFramebuffers\");\n\tglad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load(\"glCheckFramebufferStatus\");\n\tglad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load(\"glFramebufferTexture1D\");\n\tglad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load(\"glFramebufferTexture2D\");\n\tglad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load(\"glFramebufferTexture3D\");\n\tglad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load(\"glFramebufferRenderbuffer\");\n\tglad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load(\"glGetFramebufferAttachmentParameteriv\");\n\tglad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load(\"glGenerateMipmap\");\n\tglad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load(\"glBlitFramebuffer\");\n\tglad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load(\"glRenderbufferStorageMultisample\");\n\tglad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load(\"glFramebufferTextureLayer\");\n\tglad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load(\"glMapBufferRange\");\n\tglad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load(\"glFlushMappedBufferRange\");\n\tglad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load(\"glBindVertexArray\");\n\tglad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load(\"glDeleteVertexArrays\");\n\tglad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load(\"glGenVertexArrays\");\n\tglad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load(\"glIsVertexArray\");\n}\nstatic void load_GL_VERSION_3_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_1) return;\n\tglad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load(\"glDrawArraysInstanced\");\n\tglad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load(\"glDrawElementsInstanced\");\n\tglad_glTexBuffer = (PFNGLTEXBUFFERPROC)load(\"glTexBuffer\");\n\tglad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load(\"glPrimitiveRestartIndex\");\n\tglad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load(\"glCopyBufferSubData\");\n\tglad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load(\"glGetUniformIndices\");\n\tglad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load(\"glGetActiveUniformsiv\");\n\tglad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load(\"glGetActiveUniformName\");\n\tglad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load(\"glGetUniformBlockIndex\");\n\tglad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load(\"glGetActiveUniformBlockiv\");\n\tglad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load(\"glGetActiveUniformBlockName\");\n\tglad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load(\"glUniformBlockBinding\");\n\tglad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load(\"glBindBufferRange\");\n\tglad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load(\"glBindBufferBase\");\n\tglad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load(\"glGetIntegeri_v\");\n}\nstatic void load_GL_VERSION_3_2(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_2) return;\n\tglad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load(\"glDrawElementsBaseVertex\");\n\tglad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load(\"glDrawRangeElementsBaseVertex\");\n\tglad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load(\"glDrawElementsInstancedBaseVertex\");\n\tglad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load(\"glMultiDrawElementsBaseVertex\");\n\tglad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load(\"glProvokingVertex\");\n\tglad_glFenceSync = (PFNGLFENCESYNCPROC)load(\"glFenceSync\");\n\tglad_glIsSync = (PFNGLISSYNCPROC)load(\"glIsSync\");\n\tglad_glDeleteSync = (PFNGLDELETESYNCPROC)load(\"glDeleteSync\");\n\tglad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load(\"glClientWaitSync\");\n\tglad_glWaitSync = (PFNGLWAITSYNCPROC)load(\"glWaitSync\");\n\tglad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load(\"glGetInteger64v\");\n\tglad_glGetSynciv = (PFNGLGETSYNCIVPROC)load(\"glGetSynciv\");\n\tglad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load(\"glGetInteger64i_v\");\n\tglad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load(\"glGetBufferParameteri64v\");\n\tglad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load(\"glFramebufferTexture\");\n\tglad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load(\"glTexImage2DMultisample\");\n\tglad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load(\"glTexImage3DMultisample\");\n\tglad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load(\"glGetMultisamplefv\");\n\tglad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load(\"glSampleMaski\");\n}\nstatic void load_GL_VERSION_3_3(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_3) return;\n\tglad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load(\"glBindFragDataLocationIndexed\");\n\tglad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load(\"glGetFragDataIndex\");\n\tglad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load(\"glGenSamplers\");\n\tglad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load(\"glDeleteSamplers\");\n\tglad_glIsSampler = (PFNGLISSAMPLERPROC)load(\"glIsSampler\");\n\tglad_glBindSampler = (PFNGLBINDSAMPLERPROC)load(\"glBindSampler\");\n\tglad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load(\"glSamplerParameteri\");\n\tglad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load(\"glSamplerParameteriv\");\n\tglad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load(\"glSamplerParameterf\");\n\tglad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load(\"glSamplerParameterfv\");\n\tglad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load(\"glSamplerParameterIiv\");\n\tglad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load(\"glSamplerParameterIuiv\");\n\tglad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load(\"glGetSamplerParameteriv\");\n\tglad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load(\"glGetSamplerParameterIiv\");\n\tglad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load(\"glGetSamplerParameterfv\");\n\tglad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load(\"glGetSamplerParameterIuiv\");\n\tglad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load(\"glQueryCounter\");\n\tglad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load(\"glGetQueryObjecti64v\");\n\tglad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load(\"glGetQueryObjectui64v\");\n\tglad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load(\"glVertexAttribDivisor\");\n\tglad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load(\"glVertexAttribP1ui\");\n\tglad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load(\"glVertexAttribP1uiv\");\n\tglad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load(\"glVertexAttribP2ui\");\n\tglad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load(\"glVertexAttribP2uiv\");\n\tglad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load(\"glVertexAttribP3ui\");\n\tglad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load(\"glVertexAttribP3uiv\");\n\tglad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load(\"glVertexAttribP4ui\");\n\tglad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load(\"glVertexAttribP4uiv\");\n\tglad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load(\"glVertexP2ui\");\n\tglad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load(\"glVertexP2uiv\");\n\tglad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load(\"glVertexP3ui\");\n\tglad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load(\"glVertexP3uiv\");\n\tglad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load(\"glVertexP4ui\");\n\tglad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load(\"glVertexP4uiv\");\n\tglad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load(\"glTexCoordP1ui\");\n\tglad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load(\"glTexCoordP1uiv\");\n\tglad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load(\"glTexCoordP2ui\");\n\tglad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load(\"glTexCoordP2uiv\");\n\tglad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load(\"glTexCoordP3ui\");\n\tglad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load(\"glTexCoordP3uiv\");\n\tglad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load(\"glTexCoordP4ui\");\n\tglad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load(\"glTexCoordP4uiv\");\n\tglad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load(\"glMultiTexCoordP1ui\");\n\tglad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load(\"glMultiTexCoordP1uiv\");\n\tglad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load(\"glMultiTexCoordP2ui\");\n\tglad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load(\"glMultiTexCoordP2uiv\");\n\tglad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load(\"glMultiTexCoordP3ui\");\n\tglad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load(\"glMultiTexCoordP3uiv\");\n\tglad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load(\"glMultiTexCoordP4ui\");\n\tglad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load(\"glMultiTexCoordP4uiv\");\n\tglad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load(\"glNormalP3ui\");\n\tglad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load(\"glNormalP3uiv\");\n\tglad_glColorP3ui = (PFNGLCOLORP3UIPROC)load(\"glColorP3ui\");\n\tglad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load(\"glColorP3uiv\");\n\tglad_glColorP4ui = (PFNGLCOLORP4UIPROC)load(\"glColorP4ui\");\n\tglad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load(\"glColorP4uiv\");\n\tglad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load(\"glSecondaryColorP3ui\");\n\tglad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load(\"glSecondaryColorP3uiv\");\n}\nstatic void load_GL_VERSION_4_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_4_0) return;\n\tglad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load(\"glMinSampleShading\");\n\tglad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load(\"glBlendEquationi\");\n\tglad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load(\"glBlendEquationSeparatei\");\n\tglad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load(\"glBlendFunci\");\n\tglad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load(\"glBlendFuncSeparatei\");\n\tglad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load(\"glDrawArraysIndirect\");\n\tglad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load(\"glDrawElementsIndirect\");\n\tglad_glUniform1d = (PFNGLUNIFORM1DPROC)load(\"glUniform1d\");\n\tglad_glUniform2d = (PFNGLUNIFORM2DPROC)load(\"glUniform2d\");\n\tglad_glUniform3d = (PFNGLUNIFORM3DPROC)load(\"glUniform3d\");\n\tglad_glUniform4d = (PFNGLUNIFORM4DPROC)load(\"glUniform4d\");\n\tglad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load(\"glUniform1dv\");\n\tglad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load(\"glUniform2dv\");\n\tglad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load(\"glUniform3dv\");\n\tglad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load(\"glUniform4dv\");\n\tglad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load(\"glUniformMatrix2dv\");\n\tglad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load(\"glUniformMatrix3dv\");\n\tglad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load(\"glUniformMatrix4dv\");\n\tglad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load(\"glUniformMatrix2x3dv\");\n\tglad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load(\"glUniformMatrix2x4dv\");\n\tglad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load(\"glUniformMatrix3x2dv\");\n\tglad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load(\"glUniformMatrix3x4dv\");\n\tglad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load(\"glUniformMatrix4x2dv\");\n\tglad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load(\"glUniformMatrix4x3dv\");\n\tglad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load(\"glGetUniformdv\");\n\tglad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load(\"glGetSubroutineUniformLocation\");\n\tglad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load(\"glGetSubroutineIndex\");\n\tglad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load(\"glGetActiveSubroutineUniformiv\");\n\tglad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load(\"glGetActiveSubroutineUniformName\");\n\tglad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load(\"glGetActiveSubroutineName\");\n\tglad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load(\"glUniformSubroutinesuiv\");\n\tglad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load(\"glGetUniformSubroutineuiv\");\n\tglad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load(\"glGetProgramStageiv\");\n\tglad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load(\"glPatchParameteri\");\n\tglad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load(\"glPatchParameterfv\");\n\tglad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load(\"glBindTransformFeedback\");\n\tglad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load(\"glDeleteTransformFeedbacks\");\n\tglad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load(\"glGenTransformFeedbacks\");\n\tglad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load(\"glIsTransformFeedback\");\n\tglad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load(\"glPauseTransformFeedback\");\n\tglad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load(\"glResumeTransformFeedback\");\n\tglad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load(\"glDrawTransformFeedback\");\n\tglad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load(\"glDrawTransformFeedbackStream\");\n\tglad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load(\"glBeginQueryIndexed\");\n\tglad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load(\"glEndQueryIndexed\");\n\tglad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load(\"glGetQueryIndexediv\");\n}\nstatic void load_GL_ARB_debug_output(GLADloadproc load) {\n\tif(!GLAD_GL_ARB_debug_output) return;\n\tglad_glDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARBPROC)load(\"glDebugMessageControlARB\");\n\tglad_glDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARBPROC)load(\"glDebugMessageInsertARB\");\n\tglad_glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC)load(\"glDebugMessageCallbackARB\");\n\tglad_glGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC)load(\"glGetDebugMessageLogARB\");\n}\nstatic int find_extensionsGL(void) {\n\tif (!get_exts()) return 0;\n\tGLAD_GL_ARB_debug_output = has_ext(\"GL_ARB_debug_output\");\n\tfree_exts();\n\treturn 1;\n}\n\nstatic void find_coreGL(void) {\n\n    /* Thank you @elmindreda\n     * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176\n     * https://github.com/glfw/glfw/blob/master/src/context.c#L36\n     */\n    int i, major, minor;\n\n    const char* version;\n    const char* prefixes[] = {\n        \"OpenGL ES-CM \",\n        \"OpenGL ES-CL \",\n        \"OpenGL ES \",\n        NULL\n    };\n\n    version = (const char*) glGetString(GL_VERSION);\n    if (!version) return;\n\n    for (i = 0;  prefixes[i];  i++) {\n        const size_t length = strlen(prefixes[i]);\n        if (strncmp(version, prefixes[i], length) == 0) {\n            version += length;\n            break;\n        }\n    }\n\n/* PR #18 */\n#ifdef _MSC_VER\n    sscanf_s(version, \"%d.%d\", &major, &minor);\n#else\n    sscanf(version, \"%d.%d\", &major, &minor);\n#endif\n\n    GLVersion.major = major; GLVersion.minor = minor;\n    max_loaded_major = major; max_loaded_minor = minor;\n\tGLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;\n\tGLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;\n\tGLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;\n\tGLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;\n\tGLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;\n\tGLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;\n\tGLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;\n\tGLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2;\n\tGLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;\n\tGLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;\n\tGLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;\n\tGLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3;\n\tGLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4;\n\tif (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 0)) {\n\t\tmax_loaded_major = 4;\n\t\tmax_loaded_minor = 0;\n\t}\n}\n\nint gladLoadGLLoader(GLADloadproc load) {\n\tGLVersion.major = 0; GLVersion.minor = 0;\n\tglGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tif(glGetString == NULL) return 0;\n\tif(glGetString(GL_VERSION) == NULL) return 0;\n\tfind_coreGL();\n\tload_GL_VERSION_1_0(load);\n\tload_GL_VERSION_1_1(load);\n\tload_GL_VERSION_1_2(load);\n\tload_GL_VERSION_1_3(load);\n\tload_GL_VERSION_1_4(load);\n\tload_GL_VERSION_1_5(load);\n\tload_GL_VERSION_2_0(load);\n\tload_GL_VERSION_2_1(load);\n\tload_GL_VERSION_3_0(load);\n\tload_GL_VERSION_3_1(load);\n\tload_GL_VERSION_3_2(load);\n\tload_GL_VERSION_3_3(load);\n\tload_GL_VERSION_4_0(load);\n\n\tif (!find_extensionsGL()) return 0;\n\tload_GL_ARB_debug_output(load);\n\treturn GLVersion.major != 0 || GLVersion.minor != 0;\n}\n\n"
  },
  {
    "path": "libraries/glad/glad.h",
    "content": "/*\n\n    OpenGL loader generated by glad 0.1.36 on Mon Mar 27 19:33:18 2023.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gl=4.0\n    Profile: core\n    Extensions:\n        GL_ARB_debug_output\n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"core\" --api=\"gl=4.0\" --generator=\"c\" --spec=\"gl\" --extensions=\"GL_ARB_debug_output\"\n    Online:\n        https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gl%3D4.0&extensions=GL_ARB_debug_output\n*/\n\n\n#ifndef __glad_h_\n#define __glad_h_\n\n#ifdef __gl_h_\n#error OpenGL header already included, remove this include, glad already provides it\n#endif\n#define __gl_h_\n\n#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)\n#define APIENTRY __stdcall\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY\n#endif\n#ifndef APIENTRYP\n#define APIENTRYP APIENTRY *\n#endif\n\n#ifndef GLAPIENTRY\n#define GLAPIENTRY APIENTRY\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstruct gladGLversionStruct {\n    int major;\n    int minor;\n};\n\ntypedef void* (* GLADloadproc)(const char *name);\n\n#ifndef GLAPI\n# if defined(GLAD_GLAPI_EXPORT)\n#  if defined(_WIN32) || defined(__CYGWIN__)\n#   if defined(GLAD_GLAPI_EXPORT_BUILD)\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllexport)) extern\n#    else\n#     define GLAPI __declspec(dllexport) extern\n#    endif\n#   else\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllimport)) extern\n#    else\n#     define GLAPI __declspec(dllimport) extern\n#    endif\n#   endif\n#  elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD)\n#   define GLAPI __attribute__ ((visibility (\"default\"))) extern\n#  else\n#   define GLAPI extern\n#  endif\n# else\n#  define GLAPI extern\n# endif\n#endif\n\nGLAPI struct gladGLversionStruct GLVersion;\n\nGLAPI int gladLoadGL(void);\n\nGLAPI int gladLoadGLLoader(GLADloadproc);\n\n#include <KHR/khrplatform.h>\ntypedef unsigned int GLenum;\ntypedef unsigned char GLboolean;\ntypedef unsigned int GLbitfield;\ntypedef void GLvoid;\ntypedef khronos_int8_t GLbyte;\ntypedef khronos_uint8_t GLubyte;\ntypedef khronos_int16_t GLshort;\ntypedef khronos_uint16_t GLushort;\ntypedef int GLint;\ntypedef unsigned int GLuint;\ntypedef khronos_int32_t GLclampx;\ntypedef int GLsizei;\ntypedef khronos_float_t GLfloat;\ntypedef khronos_float_t GLclampf;\ntypedef double GLdouble;\ntypedef double GLclampd;\ntypedef void *GLeglClientBufferEXT;\ntypedef void *GLeglImageOES;\ntypedef char GLchar;\ntypedef char GLcharARB;\n#ifdef __APPLE__\ntypedef void *GLhandleARB;\n#else\ntypedef unsigned int GLhandleARB;\n#endif\ntypedef khronos_uint16_t GLhalf;\ntypedef khronos_uint16_t GLhalfARB;\ntypedef khronos_int32_t GLfixed;\ntypedef khronos_intptr_t GLintptr;\ntypedef khronos_intptr_t GLintptrARB;\ntypedef khronos_ssize_t GLsizeiptr;\ntypedef khronos_ssize_t GLsizeiptrARB;\ntypedef khronos_int64_t GLint64;\ntypedef khronos_int64_t GLint64EXT;\ntypedef khronos_uint64_t GLuint64;\ntypedef khronos_uint64_t GLuint64EXT;\ntypedef struct __GLsync *GLsync;\nstruct _cl_context;\nstruct _cl_event;\ntypedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);\ntypedef unsigned short GLhalfNV;\ntypedef GLintptr GLvdpauSurfaceNV;\ntypedef void (APIENTRY *GLVULKANPROCNV)(void);\n#define GL_DEPTH_BUFFER_BIT 0x00000100\n#define GL_STENCIL_BUFFER_BIT 0x00000400\n#define GL_COLOR_BUFFER_BIT 0x00004000\n#define GL_FALSE 0\n#define GL_TRUE 1\n#define GL_POINTS 0x0000\n#define GL_LINES 0x0001\n#define GL_LINE_LOOP 0x0002\n#define GL_LINE_STRIP 0x0003\n#define GL_TRIANGLES 0x0004\n#define GL_TRIANGLE_STRIP 0x0005\n#define GL_TRIANGLE_FAN 0x0006\n#define GL_NEVER 0x0200\n#define GL_LESS 0x0201\n#define GL_EQUAL 0x0202\n#define GL_LEQUAL 0x0203\n#define GL_GREATER 0x0204\n#define GL_NOTEQUAL 0x0205\n#define GL_GEQUAL 0x0206\n#define GL_ALWAYS 0x0207\n#define GL_ZERO 0\n#define GL_ONE 1\n#define GL_SRC_COLOR 0x0300\n#define GL_ONE_MINUS_SRC_COLOR 0x0301\n#define GL_SRC_ALPHA 0x0302\n#define GL_ONE_MINUS_SRC_ALPHA 0x0303\n#define GL_DST_ALPHA 0x0304\n#define GL_ONE_MINUS_DST_ALPHA 0x0305\n#define GL_DST_COLOR 0x0306\n#define GL_ONE_MINUS_DST_COLOR 0x0307\n#define GL_SRC_ALPHA_SATURATE 0x0308\n#define GL_NONE 0\n#define GL_FRONT_LEFT 0x0400\n#define GL_FRONT_RIGHT 0x0401\n#define GL_BACK_LEFT 0x0402\n#define GL_BACK_RIGHT 0x0403\n#define GL_FRONT 0x0404\n#define GL_BACK 0x0405\n#define GL_LEFT 0x0406\n#define GL_RIGHT 0x0407\n#define GL_FRONT_AND_BACK 0x0408\n#define GL_NO_ERROR 0\n#define GL_INVALID_ENUM 0x0500\n#define GL_INVALID_VALUE 0x0501\n#define GL_INVALID_OPERATION 0x0502\n#define GL_OUT_OF_MEMORY 0x0505\n#define GL_CW 0x0900\n#define GL_CCW 0x0901\n#define GL_POINT_SIZE 0x0B11\n#define GL_POINT_SIZE_RANGE 0x0B12\n#define GL_POINT_SIZE_GRANULARITY 0x0B13\n#define GL_LINE_SMOOTH 0x0B20\n#define GL_LINE_WIDTH 0x0B21\n#define GL_LINE_WIDTH_RANGE 0x0B22\n#define GL_LINE_WIDTH_GRANULARITY 0x0B23\n#define GL_POLYGON_MODE 0x0B40\n#define GL_POLYGON_SMOOTH 0x0B41\n#define GL_CULL_FACE 0x0B44\n#define GL_CULL_FACE_MODE 0x0B45\n#define GL_FRONT_FACE 0x0B46\n#define GL_DEPTH_RANGE 0x0B70\n#define GL_DEPTH_TEST 0x0B71\n#define GL_DEPTH_WRITEMASK 0x0B72\n#define GL_DEPTH_CLEAR_VALUE 0x0B73\n#define GL_DEPTH_FUNC 0x0B74\n#define GL_STENCIL_TEST 0x0B90\n#define GL_STENCIL_CLEAR_VALUE 0x0B91\n#define GL_STENCIL_FUNC 0x0B92\n#define GL_STENCIL_VALUE_MASK 0x0B93\n#define GL_STENCIL_FAIL 0x0B94\n#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95\n#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96\n#define GL_STENCIL_REF 0x0B97\n#define GL_STENCIL_WRITEMASK 0x0B98\n#define GL_VIEWPORT 0x0BA2\n#define GL_DITHER 0x0BD0\n#define GL_BLEND_DST 0x0BE0\n#define GL_BLEND_SRC 0x0BE1\n#define GL_BLEND 0x0BE2\n#define GL_LOGIC_OP_MODE 0x0BF0\n#define GL_DRAW_BUFFER 0x0C01\n#define GL_READ_BUFFER 0x0C02\n#define GL_SCISSOR_BOX 0x0C10\n#define GL_SCISSOR_TEST 0x0C11\n#define GL_COLOR_CLEAR_VALUE 0x0C22\n#define GL_COLOR_WRITEMASK 0x0C23\n#define GL_DOUBLEBUFFER 0x0C32\n#define GL_STEREO 0x0C33\n#define GL_LINE_SMOOTH_HINT 0x0C52\n#define GL_POLYGON_SMOOTH_HINT 0x0C53\n#define GL_UNPACK_SWAP_BYTES 0x0CF0\n#define GL_UNPACK_LSB_FIRST 0x0CF1\n#define GL_UNPACK_ROW_LENGTH 0x0CF2\n#define GL_UNPACK_SKIP_ROWS 0x0CF3\n#define GL_UNPACK_SKIP_PIXELS 0x0CF4\n#define GL_UNPACK_ALIGNMENT 0x0CF5\n#define GL_PACK_SWAP_BYTES 0x0D00\n#define GL_PACK_LSB_FIRST 0x0D01\n#define GL_PACK_ROW_LENGTH 0x0D02\n#define GL_PACK_SKIP_ROWS 0x0D03\n#define GL_PACK_SKIP_PIXELS 0x0D04\n#define GL_PACK_ALIGNMENT 0x0D05\n#define GL_MAX_TEXTURE_SIZE 0x0D33\n#define GL_MAX_VIEWPORT_DIMS 0x0D3A\n#define GL_SUBPIXEL_BITS 0x0D50\n#define GL_TEXTURE_1D 0x0DE0\n#define GL_TEXTURE_2D 0x0DE1\n#define GL_TEXTURE_WIDTH 0x1000\n#define GL_TEXTURE_HEIGHT 0x1001\n#define GL_TEXTURE_BORDER_COLOR 0x1004\n#define GL_DONT_CARE 0x1100\n#define GL_FASTEST 0x1101\n#define GL_NICEST 0x1102\n#define GL_BYTE 0x1400\n#define GL_UNSIGNED_BYTE 0x1401\n#define GL_SHORT 0x1402\n#define GL_UNSIGNED_SHORT 0x1403\n#define GL_INT 0x1404\n#define GL_UNSIGNED_INT 0x1405\n#define GL_FLOAT 0x1406\n#define GL_CLEAR 0x1500\n#define GL_AND 0x1501\n#define GL_AND_REVERSE 0x1502\n#define GL_COPY 0x1503\n#define GL_AND_INVERTED 0x1504\n#define GL_NOOP 0x1505\n#define GL_XOR 0x1506\n#define GL_OR 0x1507\n#define GL_NOR 0x1508\n#define GL_EQUIV 0x1509\n#define GL_INVERT 0x150A\n#define GL_OR_REVERSE 0x150B\n#define GL_COPY_INVERTED 0x150C\n#define GL_OR_INVERTED 0x150D\n#define GL_NAND 0x150E\n#define GL_SET 0x150F\n#define GL_TEXTURE 0x1702\n#define GL_COLOR 0x1800\n#define GL_DEPTH 0x1801\n#define GL_STENCIL 0x1802\n#define GL_STENCIL_INDEX 0x1901\n#define GL_DEPTH_COMPONENT 0x1902\n#define GL_RED 0x1903\n#define GL_GREEN 0x1904\n#define GL_BLUE 0x1905\n#define GL_ALPHA 0x1906\n#define GL_RGB 0x1907\n#define GL_RGBA 0x1908\n#define GL_POINT 0x1B00\n#define GL_LINE 0x1B01\n#define GL_FILL 0x1B02\n#define GL_KEEP 0x1E00\n#define GL_REPLACE 0x1E01\n#define GL_INCR 0x1E02\n#define GL_DECR 0x1E03\n#define GL_VENDOR 0x1F00\n#define GL_RENDERER 0x1F01\n#define GL_VERSION 0x1F02\n#define GL_EXTENSIONS 0x1F03\n#define GL_NEAREST 0x2600\n#define GL_LINEAR 0x2601\n#define GL_NEAREST_MIPMAP_NEAREST 0x2700\n#define GL_LINEAR_MIPMAP_NEAREST 0x2701\n#define GL_NEAREST_MIPMAP_LINEAR 0x2702\n#define GL_LINEAR_MIPMAP_LINEAR 0x2703\n#define GL_TEXTURE_MAG_FILTER 0x2800\n#define GL_TEXTURE_MIN_FILTER 0x2801\n#define GL_TEXTURE_WRAP_S 0x2802\n#define GL_TEXTURE_WRAP_T 0x2803\n#define GL_REPEAT 0x2901\n#define GL_COLOR_LOGIC_OP 0x0BF2\n#define GL_POLYGON_OFFSET_UNITS 0x2A00\n#define GL_POLYGON_OFFSET_POINT 0x2A01\n#define GL_POLYGON_OFFSET_LINE 0x2A02\n#define GL_POLYGON_OFFSET_FILL 0x8037\n#define GL_POLYGON_OFFSET_FACTOR 0x8038\n#define GL_TEXTURE_BINDING_1D 0x8068\n#define GL_TEXTURE_BINDING_2D 0x8069\n#define GL_TEXTURE_INTERNAL_FORMAT 0x1003\n#define GL_TEXTURE_RED_SIZE 0x805C\n#define GL_TEXTURE_GREEN_SIZE 0x805D\n#define GL_TEXTURE_BLUE_SIZE 0x805E\n#define GL_TEXTURE_ALPHA_SIZE 0x805F\n#define GL_DOUBLE 0x140A\n#define GL_PROXY_TEXTURE_1D 0x8063\n#define GL_PROXY_TEXTURE_2D 0x8064\n#define GL_R3_G3_B2 0x2A10\n#define GL_RGB4 0x804F\n#define GL_RGB5 0x8050\n#define GL_RGB8 0x8051\n#define GL_RGB10 0x8052\n#define GL_RGB12 0x8053\n#define GL_RGB16 0x8054\n#define GL_RGBA2 0x8055\n#define GL_RGBA4 0x8056\n#define GL_RGB5_A1 0x8057\n#define GL_RGBA8 0x8058\n#define GL_RGB10_A2 0x8059\n#define GL_RGBA12 0x805A\n#define GL_RGBA16 0x805B\n#define GL_UNSIGNED_BYTE_3_3_2 0x8032\n#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034\n#define GL_UNSIGNED_INT_8_8_8_8 0x8035\n#define GL_UNSIGNED_INT_10_10_10_2 0x8036\n#define GL_TEXTURE_BINDING_3D 0x806A\n#define GL_PACK_SKIP_IMAGES 0x806B\n#define GL_PACK_IMAGE_HEIGHT 0x806C\n#define GL_UNPACK_SKIP_IMAGES 0x806D\n#define GL_UNPACK_IMAGE_HEIGHT 0x806E\n#define GL_TEXTURE_3D 0x806F\n#define GL_PROXY_TEXTURE_3D 0x8070\n#define GL_TEXTURE_DEPTH 0x8071\n#define GL_TEXTURE_WRAP_R 0x8072\n#define GL_MAX_3D_TEXTURE_SIZE 0x8073\n#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362\n#define GL_UNSIGNED_SHORT_5_6_5 0x8363\n#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365\n#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366\n#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367\n#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368\n#define GL_BGR 0x80E0\n#define GL_BGRA 0x80E1\n#define GL_MAX_ELEMENTS_VERTICES 0x80E8\n#define GL_MAX_ELEMENTS_INDICES 0x80E9\n#define GL_CLAMP_TO_EDGE 0x812F\n#define GL_TEXTURE_MIN_LOD 0x813A\n#define GL_TEXTURE_MAX_LOD 0x813B\n#define GL_TEXTURE_BASE_LEVEL 0x813C\n#define GL_TEXTURE_MAX_LEVEL 0x813D\n#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12\n#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13\n#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22\n#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23\n#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E\n#define GL_TEXTURE0 0x84C0\n#define GL_TEXTURE1 0x84C1\n#define GL_TEXTURE2 0x84C2\n#define GL_TEXTURE3 0x84C3\n#define GL_TEXTURE4 0x84C4\n#define GL_TEXTURE5 0x84C5\n#define GL_TEXTURE6 0x84C6\n#define GL_TEXTURE7 0x84C7\n#define GL_TEXTURE8 0x84C8\n#define GL_TEXTURE9 0x84C9\n#define GL_TEXTURE10 0x84CA\n#define GL_TEXTURE11 0x84CB\n#define GL_TEXTURE12 0x84CC\n#define GL_TEXTURE13 0x84CD\n#define GL_TEXTURE14 0x84CE\n#define GL_TEXTURE15 0x84CF\n#define GL_TEXTURE16 0x84D0\n#define GL_TEXTURE17 0x84D1\n#define GL_TEXTURE18 0x84D2\n#define GL_TEXTURE19 0x84D3\n#define GL_TEXTURE20 0x84D4\n#define GL_TEXTURE21 0x84D5\n#define GL_TEXTURE22 0x84D6\n#define GL_TEXTURE23 0x84D7\n#define GL_TEXTURE24 0x84D8\n#define GL_TEXTURE25 0x84D9\n#define GL_TEXTURE26 0x84DA\n#define GL_TEXTURE27 0x84DB\n#define GL_TEXTURE28 0x84DC\n#define GL_TEXTURE29 0x84DD\n#define GL_TEXTURE30 0x84DE\n#define GL_TEXTURE31 0x84DF\n#define GL_ACTIVE_TEXTURE 0x84E0\n#define GL_MULTISAMPLE 0x809D\n#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE 0x809F\n#define GL_SAMPLE_COVERAGE 0x80A0\n#define GL_SAMPLE_BUFFERS 0x80A8\n#define GL_SAMPLES 0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE 0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT 0x80AB\n#define GL_TEXTURE_CUBE_MAP 0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C\n#define GL_COMPRESSED_RGB 0x84ED\n#define GL_COMPRESSED_RGBA 0x84EE\n#define GL_TEXTURE_COMPRESSION_HINT 0x84EF\n#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0\n#define GL_TEXTURE_COMPRESSED 0x86A1\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3\n#define GL_CLAMP_TO_BORDER 0x812D\n#define GL_BLEND_DST_RGB 0x80C8\n#define GL_BLEND_SRC_RGB 0x80C9\n#define GL_BLEND_DST_ALPHA 0x80CA\n#define GL_BLEND_SRC_ALPHA 0x80CB\n#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128\n#define GL_DEPTH_COMPONENT16 0x81A5\n#define GL_DEPTH_COMPONENT24 0x81A6\n#define GL_DEPTH_COMPONENT32 0x81A7\n#define GL_MIRRORED_REPEAT 0x8370\n#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD\n#define GL_TEXTURE_LOD_BIAS 0x8501\n#define GL_INCR_WRAP 0x8507\n#define GL_DECR_WRAP 0x8508\n#define GL_TEXTURE_DEPTH_SIZE 0x884A\n#define GL_TEXTURE_COMPARE_MODE 0x884C\n#define GL_TEXTURE_COMPARE_FUNC 0x884D\n#define GL_BLEND_COLOR 0x8005\n#define GL_BLEND_EQUATION 0x8009\n#define GL_CONSTANT_COLOR 0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002\n#define GL_CONSTANT_ALPHA 0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004\n#define GL_FUNC_ADD 0x8006\n#define GL_FUNC_REVERSE_SUBTRACT 0x800B\n#define GL_FUNC_SUBTRACT 0x800A\n#define GL_MIN 0x8007\n#define GL_MAX 0x8008\n#define GL_BUFFER_SIZE 0x8764\n#define GL_BUFFER_USAGE 0x8765\n#define GL_QUERY_COUNTER_BITS 0x8864\n#define GL_CURRENT_QUERY 0x8865\n#define GL_QUERY_RESULT 0x8866\n#define GL_QUERY_RESULT_AVAILABLE 0x8867\n#define GL_ARRAY_BUFFER 0x8892\n#define GL_ELEMENT_ARRAY_BUFFER 0x8893\n#define GL_ARRAY_BUFFER_BINDING 0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F\n#define GL_READ_ONLY 0x88B8\n#define GL_WRITE_ONLY 0x88B9\n#define GL_READ_WRITE 0x88BA\n#define GL_BUFFER_ACCESS 0x88BB\n#define GL_BUFFER_MAPPED 0x88BC\n#define GL_BUFFER_MAP_POINTER 0x88BD\n#define GL_STREAM_DRAW 0x88E0\n#define GL_STREAM_READ 0x88E1\n#define GL_STREAM_COPY 0x88E2\n#define GL_STATIC_DRAW 0x88E4\n#define GL_STATIC_READ 0x88E5\n#define GL_STATIC_COPY 0x88E6\n#define GL_DYNAMIC_DRAW 0x88E8\n#define GL_DYNAMIC_READ 0x88E9\n#define GL_DYNAMIC_COPY 0x88EA\n#define GL_SAMPLES_PASSED 0x8914\n#define GL_SRC1_ALPHA 0x8589\n#define GL_BLEND_EQUATION_RGB 0x8009\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625\n#define GL_CURRENT_VERTEX_ATTRIB 0x8626\n#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645\n#define GL_STENCIL_BACK_FUNC 0x8800\n#define GL_STENCIL_BACK_FAIL 0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803\n#define GL_MAX_DRAW_BUFFERS 0x8824\n#define GL_DRAW_BUFFER0 0x8825\n#define GL_DRAW_BUFFER1 0x8826\n#define GL_DRAW_BUFFER2 0x8827\n#define GL_DRAW_BUFFER3 0x8828\n#define GL_DRAW_BUFFER4 0x8829\n#define GL_DRAW_BUFFER5 0x882A\n#define GL_DRAW_BUFFER6 0x882B\n#define GL_DRAW_BUFFER7 0x882C\n#define GL_DRAW_BUFFER8 0x882D\n#define GL_DRAW_BUFFER9 0x882E\n#define GL_DRAW_BUFFER10 0x882F\n#define GL_DRAW_BUFFER11 0x8830\n#define GL_DRAW_BUFFER12 0x8831\n#define GL_DRAW_BUFFER13 0x8832\n#define GL_DRAW_BUFFER14 0x8833\n#define GL_DRAW_BUFFER15 0x8834\n#define GL_BLEND_EQUATION_ALPHA 0x883D\n#define GL_MAX_VERTEX_ATTRIBS 0x8869\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A\n#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872\n#define GL_FRAGMENT_SHADER 0x8B30\n#define GL_VERTEX_SHADER 0x8B31\n#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49\n#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A\n#define GL_MAX_VARYING_FLOATS 0x8B4B\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D\n#define GL_SHADER_TYPE 0x8B4F\n#define GL_FLOAT_VEC2 0x8B50\n#define GL_FLOAT_VEC3 0x8B51\n#define GL_FLOAT_VEC4 0x8B52\n#define GL_INT_VEC2 0x8B53\n#define GL_INT_VEC3 0x8B54\n#define GL_INT_VEC4 0x8B55\n#define GL_BOOL 0x8B56\n#define GL_BOOL_VEC2 0x8B57\n#define GL_BOOL_VEC3 0x8B58\n#define GL_BOOL_VEC4 0x8B59\n#define GL_FLOAT_MAT2 0x8B5A\n#define GL_FLOAT_MAT3 0x8B5B\n#define GL_FLOAT_MAT4 0x8B5C\n#define GL_SAMPLER_1D 0x8B5D\n#define GL_SAMPLER_2D 0x8B5E\n#define GL_SAMPLER_3D 0x8B5F\n#define GL_SAMPLER_CUBE 0x8B60\n#define GL_SAMPLER_1D_SHADOW 0x8B61\n#define GL_SAMPLER_2D_SHADOW 0x8B62\n#define GL_DELETE_STATUS 0x8B80\n#define GL_COMPILE_STATUS 0x8B81\n#define GL_LINK_STATUS 0x8B82\n#define GL_VALIDATE_STATUS 0x8B83\n#define GL_INFO_LOG_LENGTH 0x8B84\n#define GL_ATTACHED_SHADERS 0x8B85\n#define GL_ACTIVE_UNIFORMS 0x8B86\n#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87\n#define GL_SHADER_SOURCE_LENGTH 0x8B88\n#define GL_ACTIVE_ATTRIBUTES 0x8B89\n#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B\n#define GL_SHADING_LANGUAGE_VERSION 0x8B8C\n#define GL_CURRENT_PROGRAM 0x8B8D\n#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0\n#define GL_LOWER_LEFT 0x8CA1\n#define GL_UPPER_LEFT 0x8CA2\n#define GL_STENCIL_BACK_REF 0x8CA3\n#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4\n#define GL_STENCIL_BACK_WRITEMASK 0x8CA5\n#define GL_PIXEL_PACK_BUFFER 0x88EB\n#define GL_PIXEL_UNPACK_BUFFER 0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF\n#define GL_FLOAT_MAT2x3 0x8B65\n#define GL_FLOAT_MAT2x4 0x8B66\n#define GL_FLOAT_MAT3x2 0x8B67\n#define GL_FLOAT_MAT3x4 0x8B68\n#define GL_FLOAT_MAT4x2 0x8B69\n#define GL_FLOAT_MAT4x3 0x8B6A\n#define GL_SRGB 0x8C40\n#define GL_SRGB8 0x8C41\n#define GL_SRGB_ALPHA 0x8C42\n#define GL_SRGB8_ALPHA8 0x8C43\n#define GL_COMPRESSED_SRGB 0x8C48\n#define GL_COMPRESSED_SRGB_ALPHA 0x8C49\n#define GL_COMPARE_REF_TO_TEXTURE 0x884E\n#define GL_CLIP_DISTANCE0 0x3000\n#define GL_CLIP_DISTANCE1 0x3001\n#define GL_CLIP_DISTANCE2 0x3002\n#define GL_CLIP_DISTANCE3 0x3003\n#define GL_CLIP_DISTANCE4 0x3004\n#define GL_CLIP_DISTANCE5 0x3005\n#define GL_CLIP_DISTANCE6 0x3006\n#define GL_CLIP_DISTANCE7 0x3007\n#define GL_MAX_CLIP_DISTANCES 0x0D32\n#define GL_MAJOR_VERSION 0x821B\n#define GL_MINOR_VERSION 0x821C\n#define GL_NUM_EXTENSIONS 0x821D\n#define GL_CONTEXT_FLAGS 0x821E\n#define GL_COMPRESSED_RED 0x8225\n#define GL_COMPRESSED_RG 0x8226\n#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001\n#define GL_RGBA32F 0x8814\n#define GL_RGB32F 0x8815\n#define GL_RGBA16F 0x881A\n#define GL_RGB16F 0x881B\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD\n#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF\n#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905\n#define GL_CLAMP_READ_COLOR 0x891C\n#define GL_FIXED_ONLY 0x891D\n#define GL_MAX_VARYING_COMPONENTS 0x8B4B\n#define GL_TEXTURE_1D_ARRAY 0x8C18\n#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19\n#define GL_TEXTURE_2D_ARRAY 0x8C1A\n#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B\n#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C\n#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D\n#define GL_R11F_G11F_B10F 0x8C3A\n#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B\n#define GL_RGB9_E5 0x8C3D\n#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E\n#define GL_TEXTURE_SHARED_SIZE 0x8C3F\n#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80\n#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85\n#define GL_PRIMITIVES_GENERATED 0x8C87\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88\n#define GL_RASTERIZER_DISCARD 0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B\n#define GL_INTERLEAVED_ATTRIBS 0x8C8C\n#define GL_SEPARATE_ATTRIBS 0x8C8D\n#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F\n#define GL_RGBA32UI 0x8D70\n#define GL_RGB32UI 0x8D71\n#define GL_RGBA16UI 0x8D76\n#define GL_RGB16UI 0x8D77\n#define GL_RGBA8UI 0x8D7C\n#define GL_RGB8UI 0x8D7D\n#define GL_RGBA32I 0x8D82\n#define GL_RGB32I 0x8D83\n#define GL_RGBA16I 0x8D88\n#define GL_RGB16I 0x8D89\n#define GL_RGBA8I 0x8D8E\n#define GL_RGB8I 0x8D8F\n#define GL_RED_INTEGER 0x8D94\n#define GL_GREEN_INTEGER 0x8D95\n#define GL_BLUE_INTEGER 0x8D96\n#define GL_RGB_INTEGER 0x8D98\n#define GL_RGBA_INTEGER 0x8D99\n#define GL_BGR_INTEGER 0x8D9A\n#define GL_BGRA_INTEGER 0x8D9B\n#define GL_SAMPLER_1D_ARRAY 0x8DC0\n#define GL_SAMPLER_2D_ARRAY 0x8DC1\n#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3\n#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4\n#define GL_SAMPLER_CUBE_SHADOW 0x8DC5\n#define GL_UNSIGNED_INT_VEC2 0x8DC6\n#define GL_UNSIGNED_INT_VEC3 0x8DC7\n#define GL_UNSIGNED_INT_VEC4 0x8DC8\n#define GL_INT_SAMPLER_1D 0x8DC9\n#define GL_INT_SAMPLER_2D 0x8DCA\n#define GL_INT_SAMPLER_3D 0x8DCB\n#define GL_INT_SAMPLER_CUBE 0x8DCC\n#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE\n#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF\n#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1\n#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2\n#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3\n#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4\n#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6\n#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7\n#define GL_QUERY_WAIT 0x8E13\n#define GL_QUERY_NO_WAIT 0x8E14\n#define GL_QUERY_BY_REGION_WAIT 0x8E15\n#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16\n#define GL_BUFFER_ACCESS_FLAGS 0x911F\n#define GL_BUFFER_MAP_LENGTH 0x9120\n#define GL_BUFFER_MAP_OFFSET 0x9121\n#define GL_DEPTH_COMPONENT32F 0x8CAC\n#define GL_DEPTH32F_STENCIL8 0x8CAD\n#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD\n#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506\n#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210\n#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211\n#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212\n#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213\n#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214\n#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215\n#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216\n#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217\n#define GL_FRAMEBUFFER_DEFAULT 0x8218\n#define GL_FRAMEBUFFER_UNDEFINED 0x8219\n#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A\n#define GL_MAX_RENDERBUFFER_SIZE 0x84E8\n#define GL_DEPTH_STENCIL 0x84F9\n#define GL_UNSIGNED_INT_24_8 0x84FA\n#define GL_DEPTH24_STENCIL8 0x88F0\n#define GL_TEXTURE_STENCIL_SIZE 0x88F1\n#define GL_TEXTURE_RED_TYPE 0x8C10\n#define GL_TEXTURE_GREEN_TYPE 0x8C11\n#define GL_TEXTURE_BLUE_TYPE 0x8C12\n#define GL_TEXTURE_ALPHA_TYPE 0x8C13\n#define GL_TEXTURE_DEPTH_TYPE 0x8C16\n#define GL_UNSIGNED_NORMALIZED 0x8C17\n#define GL_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_RENDERBUFFER_BINDING 0x8CA7\n#define GL_READ_FRAMEBUFFER 0x8CA8\n#define GL_DRAW_FRAMEBUFFER 0x8CA9\n#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA\n#define GL_RENDERBUFFER_SAMPLES 0x8CAB\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4\n#define GL_FRAMEBUFFER_COMPLETE 0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB\n#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC\n#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD\n#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF\n#define GL_COLOR_ATTACHMENT0 0x8CE0\n#define GL_COLOR_ATTACHMENT1 0x8CE1\n#define GL_COLOR_ATTACHMENT2 0x8CE2\n#define GL_COLOR_ATTACHMENT3 0x8CE3\n#define GL_COLOR_ATTACHMENT4 0x8CE4\n#define GL_COLOR_ATTACHMENT5 0x8CE5\n#define GL_COLOR_ATTACHMENT6 0x8CE6\n#define GL_COLOR_ATTACHMENT7 0x8CE7\n#define GL_COLOR_ATTACHMENT8 0x8CE8\n#define GL_COLOR_ATTACHMENT9 0x8CE9\n#define GL_COLOR_ATTACHMENT10 0x8CEA\n#define GL_COLOR_ATTACHMENT11 0x8CEB\n#define GL_COLOR_ATTACHMENT12 0x8CEC\n#define GL_COLOR_ATTACHMENT13 0x8CED\n#define GL_COLOR_ATTACHMENT14 0x8CEE\n#define GL_COLOR_ATTACHMENT15 0x8CEF\n#define GL_COLOR_ATTACHMENT16 0x8CF0\n#define GL_COLOR_ATTACHMENT17 0x8CF1\n#define GL_COLOR_ATTACHMENT18 0x8CF2\n#define GL_COLOR_ATTACHMENT19 0x8CF3\n#define GL_COLOR_ATTACHMENT20 0x8CF4\n#define GL_COLOR_ATTACHMENT21 0x8CF5\n#define GL_COLOR_ATTACHMENT22 0x8CF6\n#define GL_COLOR_ATTACHMENT23 0x8CF7\n#define GL_COLOR_ATTACHMENT24 0x8CF8\n#define GL_COLOR_ATTACHMENT25 0x8CF9\n#define GL_COLOR_ATTACHMENT26 0x8CFA\n#define GL_COLOR_ATTACHMENT27 0x8CFB\n#define GL_COLOR_ATTACHMENT28 0x8CFC\n#define GL_COLOR_ATTACHMENT29 0x8CFD\n#define GL_COLOR_ATTACHMENT30 0x8CFE\n#define GL_COLOR_ATTACHMENT31 0x8CFF\n#define GL_DEPTH_ATTACHMENT 0x8D00\n#define GL_STENCIL_ATTACHMENT 0x8D20\n#define GL_FRAMEBUFFER 0x8D40\n#define GL_RENDERBUFFER 0x8D41\n#define GL_RENDERBUFFER_WIDTH 0x8D42\n#define GL_RENDERBUFFER_HEIGHT 0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44\n#define GL_STENCIL_INDEX1 0x8D46\n#define GL_STENCIL_INDEX4 0x8D47\n#define GL_STENCIL_INDEX8 0x8D48\n#define GL_STENCIL_INDEX16 0x8D49\n#define GL_RENDERBUFFER_RED_SIZE 0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56\n#define GL_MAX_SAMPLES 0x8D57\n#define GL_FRAMEBUFFER_SRGB 0x8DB9\n#define GL_HALF_FLOAT 0x140B\n#define GL_MAP_READ_BIT 0x0001\n#define GL_MAP_WRITE_BIT 0x0002\n#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004\n#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008\n#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010\n#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020\n#define GL_COMPRESSED_RED_RGTC1 0x8DBB\n#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC\n#define GL_COMPRESSED_RG_RGTC2 0x8DBD\n#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE\n#define GL_RG 0x8227\n#define GL_RG_INTEGER 0x8228\n#define GL_R8 0x8229\n#define GL_R16 0x822A\n#define GL_RG8 0x822B\n#define GL_RG16 0x822C\n#define GL_R16F 0x822D\n#define GL_R32F 0x822E\n#define GL_RG16F 0x822F\n#define GL_RG32F 0x8230\n#define GL_R8I 0x8231\n#define GL_R8UI 0x8232\n#define GL_R16I 0x8233\n#define GL_R16UI 0x8234\n#define GL_R32I 0x8235\n#define GL_R32UI 0x8236\n#define GL_RG8I 0x8237\n#define GL_RG8UI 0x8238\n#define GL_RG16I 0x8239\n#define GL_RG16UI 0x823A\n#define GL_RG32I 0x823B\n#define GL_RG32UI 0x823C\n#define GL_VERTEX_ARRAY_BINDING 0x85B5\n#define GL_SAMPLER_2D_RECT 0x8B63\n#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64\n#define GL_SAMPLER_BUFFER 0x8DC2\n#define GL_INT_SAMPLER_2D_RECT 0x8DCD\n#define GL_INT_SAMPLER_BUFFER 0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8\n#define GL_TEXTURE_BUFFER 0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER 0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D\n#define GL_TEXTURE_RECTANGLE 0x84F5\n#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6\n#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7\n#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8\n#define GL_R8_SNORM 0x8F94\n#define GL_RG8_SNORM 0x8F95\n#define GL_RGB8_SNORM 0x8F96\n#define GL_RGBA8_SNORM 0x8F97\n#define GL_R16_SNORM 0x8F98\n#define GL_RG16_SNORM 0x8F99\n#define GL_RGB16_SNORM 0x8F9A\n#define GL_RGBA16_SNORM 0x8F9B\n#define GL_SIGNED_NORMALIZED 0x8F9C\n#define GL_PRIMITIVE_RESTART 0x8F9D\n#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E\n#define GL_COPY_READ_BUFFER 0x8F36\n#define GL_COPY_WRITE_BUFFER 0x8F37\n#define GL_UNIFORM_BUFFER 0x8A11\n#define GL_UNIFORM_BUFFER_BINDING 0x8A28\n#define GL_UNIFORM_BUFFER_START 0x8A29\n#define GL_UNIFORM_BUFFER_SIZE 0x8A2A\n#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B\n#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C\n#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D\n#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E\n#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F\n#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30\n#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31\n#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32\n#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33\n#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34\n#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35\n#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36\n#define GL_UNIFORM_TYPE 0x8A37\n#define GL_UNIFORM_SIZE 0x8A38\n#define GL_UNIFORM_NAME_LENGTH 0x8A39\n#define GL_UNIFORM_BLOCK_INDEX 0x8A3A\n#define GL_UNIFORM_OFFSET 0x8A3B\n#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C\n#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D\n#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E\n#define GL_UNIFORM_BLOCK_BINDING 0x8A3F\n#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40\n#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46\n#define GL_INVALID_INDEX 0xFFFFFFFF\n#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001\n#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002\n#define GL_LINES_ADJACENCY 0x000A\n#define GL_LINE_STRIP_ADJACENCY 0x000B\n#define GL_TRIANGLES_ADJACENCY 0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D\n#define GL_PROGRAM_POINT_SIZE 0x8642\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8\n#define GL_GEOMETRY_SHADER 0x8DD9\n#define GL_GEOMETRY_VERTICES_OUT 0x8916\n#define GL_GEOMETRY_INPUT_TYPE 0x8917\n#define GL_GEOMETRY_OUTPUT_TYPE 0x8918\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1\n#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122\n#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123\n#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124\n#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125\n#define GL_CONTEXT_PROFILE_MASK 0x9126\n#define GL_DEPTH_CLAMP 0x864F\n#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C\n#define GL_FIRST_VERTEX_CONVENTION 0x8E4D\n#define GL_LAST_VERTEX_CONVENTION 0x8E4E\n#define GL_PROVOKING_VERTEX 0x8E4F\n#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F\n#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111\n#define GL_OBJECT_TYPE 0x9112\n#define GL_SYNC_CONDITION 0x9113\n#define GL_SYNC_STATUS 0x9114\n#define GL_SYNC_FLAGS 0x9115\n#define GL_SYNC_FENCE 0x9116\n#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117\n#define GL_UNSIGNALED 0x9118\n#define GL_SIGNALED 0x9119\n#define GL_ALREADY_SIGNALED 0x911A\n#define GL_TIMEOUT_EXPIRED 0x911B\n#define GL_CONDITION_SATISFIED 0x911C\n#define GL_WAIT_FAILED 0x911D\n#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF\n#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001\n#define GL_SAMPLE_POSITION 0x8E50\n#define GL_SAMPLE_MASK 0x8E51\n#define GL_SAMPLE_MASK_VALUE 0x8E52\n#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59\n#define GL_TEXTURE_2D_MULTISAMPLE 0x9100\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101\n#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105\n#define GL_TEXTURE_SAMPLES 0x9106\n#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107\n#define GL_SAMPLER_2D_MULTISAMPLE 0x9108\n#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A\n#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B\n#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D\n#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E\n#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F\n#define GL_MAX_INTEGER_SAMPLES 0x9110\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE\n#define GL_SRC1_COLOR 0x88F9\n#define GL_ONE_MINUS_SRC1_COLOR 0x88FA\n#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB\n#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC\n#define GL_ANY_SAMPLES_PASSED 0x8C2F\n#define GL_SAMPLER_BINDING 0x8919\n#define GL_RGB10_A2UI 0x906F\n#define GL_TEXTURE_SWIZZLE_R 0x8E42\n#define GL_TEXTURE_SWIZZLE_G 0x8E43\n#define GL_TEXTURE_SWIZZLE_B 0x8E44\n#define GL_TEXTURE_SWIZZLE_A 0x8E45\n#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46\n#define GL_TIME_ELAPSED 0x88BF\n#define GL_TIMESTAMP 0x8E28\n#define GL_INT_2_10_10_10_REV 0x8D9F\n#define GL_SAMPLE_SHADING 0x8C36\n#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37\n#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E\n#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F\n#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A\n#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B\n#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C\n#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D\n#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F\n#define GL_DRAW_INDIRECT_BUFFER 0x8F3F\n#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43\n#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F\n#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A\n#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B\n#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C\n#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D\n#define GL_MAX_VERTEX_STREAMS 0x8E71\n#define GL_DOUBLE_VEC2 0x8FFC\n#define GL_DOUBLE_VEC3 0x8FFD\n#define GL_DOUBLE_VEC4 0x8FFE\n#define GL_DOUBLE_MAT2 0x8F46\n#define GL_DOUBLE_MAT3 0x8F47\n#define GL_DOUBLE_MAT4 0x8F48\n#define GL_DOUBLE_MAT2x3 0x8F49\n#define GL_DOUBLE_MAT2x4 0x8F4A\n#define GL_DOUBLE_MAT3x2 0x8F4B\n#define GL_DOUBLE_MAT3x4 0x8F4C\n#define GL_DOUBLE_MAT4x2 0x8F4D\n#define GL_DOUBLE_MAT4x3 0x8F4E\n#define GL_ACTIVE_SUBROUTINES 0x8DE5\n#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6\n#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47\n#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48\n#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49\n#define GL_MAX_SUBROUTINES 0x8DE7\n#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8\n#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A\n#define GL_COMPATIBLE_SUBROUTINES 0x8E4B\n#define GL_PATCHES 0x000E\n#define GL_PATCH_VERTICES 0x8E72\n#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73\n#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74\n#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75\n#define GL_TESS_GEN_MODE 0x8E76\n#define GL_TESS_GEN_SPACING 0x8E77\n#define GL_TESS_GEN_VERTEX_ORDER 0x8E78\n#define GL_TESS_GEN_POINT_MODE 0x8E79\n#define GL_ISOLINES 0x8E7A\n#define GL_QUADS 0x0007\n#define GL_FRACTIONAL_ODD 0x8E7B\n#define GL_FRACTIONAL_EVEN 0x8E7C\n#define GL_MAX_PATCH_VERTICES 0x8E7D\n#define GL_MAX_TESS_GEN_LEVEL 0x8E7E\n#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F\n#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80\n#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81\n#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82\n#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83\n#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84\n#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85\n#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86\n#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89\n#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A\n#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C\n#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D\n#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E\n#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1\n#define GL_TESS_EVALUATION_SHADER 0x8E87\n#define GL_TESS_CONTROL_SHADER 0x8E88\n#define GL_TRANSFORM_FEEDBACK 0x8E22\n#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23\n#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24\n#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25\n#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70\n#ifndef GL_VERSION_1_0\n#define GL_VERSION_1_0 1\nGLAPI int GLAD_GL_VERSION_1_0;\ntypedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode);\nGLAPI PFNGLCULLFACEPROC glad_glCullFace;\n#define glCullFace glad_glCullFace\ntypedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode);\nGLAPI PFNGLFRONTFACEPROC glad_glFrontFace;\n#define glFrontFace glad_glFrontFace\ntypedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode);\nGLAPI PFNGLHINTPROC glad_glHint;\n#define glHint glad_glHint\ntypedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width);\nGLAPI PFNGLLINEWIDTHPROC glad_glLineWidth;\n#define glLineWidth glad_glLineWidth\ntypedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size);\nGLAPI PFNGLPOINTSIZEPROC glad_glPointSize;\n#define glPointSize glad_glPointSize\ntypedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode);\nGLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode;\n#define glPolygonMode glad_glPolygonMode\ntypedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLSCISSORPROC glad_glScissor;\n#define glScissor glad_glScissor\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);\nGLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf;\n#define glTexParameterf glad_glTexParameterf\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params);\nGLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv;\n#define glTexParameterfv glad_glTexParameterfv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);\nGLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri;\n#define glTexParameteri glad_glTexParameteri\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv;\n#define glTexParameteriv glad_glTexParameteriv\ntypedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D;\n#define glTexImage1D glad_glTexImage1D\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D;\n#define glTexImage2D glad_glTexImage2D\ntypedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf);\nGLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer;\n#define glDrawBuffer glad_glDrawBuffer\ntypedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask);\nGLAPI PFNGLCLEARPROC glad_glClear;\n#define glClear glad_glClear\ntypedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLCLEARCOLORPROC glad_glClearColor;\n#define glClearColor glad_glClearColor\ntypedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s);\nGLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil;\n#define glClearStencil glad_glClearStencil\ntypedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth);\nGLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth;\n#define glClearDepth glad_glClearDepth\ntypedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask);\nGLAPI PFNGLSTENCILMASKPROC glad_glStencilMask;\n#define glStencilMask glad_glStencilMask\ntypedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\nGLAPI PFNGLCOLORMASKPROC glad_glColorMask;\n#define glColorMask glad_glColorMask\ntypedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag);\nGLAPI PFNGLDEPTHMASKPROC glad_glDepthMask;\n#define glDepthMask glad_glDepthMask\ntypedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap);\nGLAPI PFNGLDISABLEPROC glad_glDisable;\n#define glDisable glad_glDisable\ntypedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap);\nGLAPI PFNGLENABLEPROC glad_glEnable;\n#define glEnable glad_glEnable\ntypedef void (APIENTRYP PFNGLFINISHPROC)(void);\nGLAPI PFNGLFINISHPROC glad_glFinish;\n#define glFinish glad_glFinish\ntypedef void (APIENTRYP PFNGLFLUSHPROC)(void);\nGLAPI PFNGLFLUSHPROC glad_glFlush;\n#define glFlush glad_glFlush\ntypedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);\nGLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc;\n#define glBlendFunc glad_glBlendFunc\ntypedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode);\nGLAPI PFNGLLOGICOPPROC glad_glLogicOp;\n#define glLogicOp glad_glLogicOp\ntypedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc;\n#define glStencilFunc glad_glStencilFunc\ntypedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);\nGLAPI PFNGLSTENCILOPPROC glad_glStencilOp;\n#define glStencilOp glad_glStencilOp\ntypedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func);\nGLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc;\n#define glDepthFunc glad_glDepthFunc\ntypedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref;\n#define glPixelStoref glad_glPixelStoref\ntypedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei;\n#define glPixelStorei glad_glPixelStorei\ntypedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src);\nGLAPI PFNGLREADBUFFERPROC glad_glReadBuffer;\n#define glReadBuffer glad_glReadBuffer\ntypedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);\nGLAPI PFNGLREADPIXELSPROC glad_glReadPixels;\n#define glReadPixels glad_glReadPixels\ntypedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data);\nGLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv;\n#define glGetBooleanv glad_glGetBooleanv\ntypedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data);\nGLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev;\n#define glGetDoublev glad_glGetDoublev\ntypedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void);\nGLAPI PFNGLGETERRORPROC glad_glGetError;\n#define glGetError glad_glGetError\ntypedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data);\nGLAPI PFNGLGETFLOATVPROC glad_glGetFloatv;\n#define glGetFloatv glad_glGetFloatv\ntypedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data);\nGLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv;\n#define glGetIntegerv glad_glGetIntegerv\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name);\nGLAPI PFNGLGETSTRINGPROC glad_glGetString;\n#define glGetString glad_glGetString\ntypedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\nGLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage;\n#define glGetTexImage glad_glGetTexImage\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv;\n#define glGetTexParameterfv glad_glGetTexParameterfv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv;\n#define glGetTexParameteriv glad_glGetTexParameteriv\ntypedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv;\n#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv\ntypedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv;\n#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap);\nGLAPI PFNGLISENABLEDPROC glad_glIsEnabled;\n#define glIsEnabled glad_glIsEnabled\ntypedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f);\nGLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange;\n#define glDepthRange glad_glDepthRange\ntypedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLVIEWPORTPROC glad_glViewport;\n#define glViewport glad_glViewport\n#endif\n#ifndef GL_VERSION_1_1\n#define GL_VERSION_1_1 1\nGLAPI int GLAD_GL_VERSION_1_1;\ntypedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);\nGLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays;\n#define glDrawArrays glad_glDrawArrays\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements;\n#define glDrawElements glad_glDrawElements\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);\nGLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset;\n#define glPolygonOffset glad_glPolygonOffset\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\nGLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D;\n#define glCopyTexImage1D glad_glCopyTexImage1D\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D;\n#define glCopyTexImage2D glad_glCopyTexImage2D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D;\n#define glCopyTexSubImage1D glad_glCopyTexSubImage1D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D;\n#define glCopyTexSubImage2D glad_glCopyTexSubImage2D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D;\n#define glTexSubImage1D glad_glTexSubImage1D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D;\n#define glTexSubImage2D glad_glTexSubImage2D\ntypedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);\nGLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture;\n#define glBindTexture glad_glBindTexture\ntypedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures);\nGLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures;\n#define glDeleteTextures glad_glDeleteTextures\ntypedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures);\nGLAPI PFNGLGENTEXTURESPROC glad_glGenTextures;\n#define glGenTextures glad_glGenTextures\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture);\nGLAPI PFNGLISTEXTUREPROC glad_glIsTexture;\n#define glIsTexture glad_glIsTexture\n#endif\n#ifndef GL_VERSION_1_2\n#define GL_VERSION_1_2 1\nGLAPI int GLAD_GL_VERSION_1_2;\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements;\n#define glDrawRangeElements glad_glDrawRangeElements\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D;\n#define glTexImage3D glad_glTexImage3D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D;\n#define glTexSubImage3D glad_glTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D;\n#define glCopyTexSubImage3D glad_glCopyTexSubImage3D\n#endif\n#ifndef GL_VERSION_1_3\n#define GL_VERSION_1_3 1\nGLAPI int GLAD_GL_VERSION_1_3;\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture);\nGLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture;\n#define glActiveTexture glad_glActiveTexture\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);\nGLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage;\n#define glSampleCoverage glad_glSampleCoverage\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D;\n#define glCompressedTexImage3D glad_glCompressedTexImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D;\n#define glCompressedTexImage2D glad_glCompressedTexImage2D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D;\n#define glCompressedTexImage1D glad_glCompressedTexImage1D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D;\n#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D;\n#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D;\n#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img);\nGLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage;\n#define glGetCompressedTexImage glad_glGetCompressedTexImage\n#endif\n#ifndef GL_VERSION_1_4\n#define GL_VERSION_1_4 1\nGLAPI int GLAD_GL_VERSION_1_4;\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\nGLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate;\n#define glBlendFuncSeparate glad_glBlendFuncSeparate\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);\nGLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays;\n#define glMultiDrawArrays glad_glMultiDrawArrays\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);\nGLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements;\n#define glMultiDrawElements glad_glMultiDrawElements\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf;\n#define glPointParameterf glad_glPointParameterf\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params);\nGLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv;\n#define glPointParameterfv glad_glPointParameterfv\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri;\n#define glPointParameteri glad_glPointParameteri\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params);\nGLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv;\n#define glPointParameteriv glad_glPointParameteriv\ntypedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLBLENDCOLORPROC glad_glBlendColor;\n#define glBlendColor glad_glBlendColor\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode);\nGLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation;\n#define glBlendEquation glad_glBlendEquation\n#endif\n#ifndef GL_VERSION_1_5\n#define GL_VERSION_1_5 1\nGLAPI int GLAD_GL_VERSION_1_5;\ntypedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids);\nGLAPI PFNGLGENQUERIESPROC glad_glGenQueries;\n#define glGenQueries glad_glGenQueries\ntypedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids);\nGLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries;\n#define glDeleteQueries glad_glDeleteQueries\ntypedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id);\nGLAPI PFNGLISQUERYPROC glad_glIsQuery;\n#define glIsQuery glad_glIsQuery\ntypedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id);\nGLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery;\n#define glBeginQuery glad_glBeginQuery\ntypedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target);\nGLAPI PFNGLENDQUERYPROC glad_glEndQuery;\n#define glEndQuery glad_glEndQuery\ntypedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv;\n#define glGetQueryiv glad_glGetQueryiv\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv;\n#define glGetQueryObjectiv glad_glGetQueryObjectiv\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params);\nGLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv;\n#define glGetQueryObjectuiv glad_glGetQueryObjectuiv\ntypedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);\nGLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer;\n#define glBindBuffer glad_glBindBuffer\ntypedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers);\nGLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers;\n#define glDeleteBuffers glad_glDeleteBuffers\ntypedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers);\nGLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers;\n#define glGenBuffers glad_glGenBuffers\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer);\nGLAPI PFNGLISBUFFERPROC glad_glIsBuffer;\n#define glIsBuffer glad_glIsBuffer\ntypedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI PFNGLBUFFERDATAPROC glad_glBufferData;\n#define glBufferData glad_glBufferData\ntypedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData;\n#define glBufferSubData glad_glBufferSubData\ntypedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data);\nGLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData;\n#define glGetBufferSubData glad_glGetBufferSubData\ntypedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access);\nGLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer;\n#define glMapBuffer glad_glMapBuffer\ntypedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target);\nGLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer;\n#define glUnmapBuffer glad_glUnmapBuffer\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv;\n#define glGetBufferParameteriv glad_glGetBufferParameteriv\ntypedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params);\nGLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv;\n#define glGetBufferPointerv glad_glGetBufferPointerv\n#endif\n#ifndef GL_VERSION_2_0\n#define GL_VERSION_2_0 1\nGLAPI int GLAD_GL_VERSION_2_0;\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);\nGLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate;\n#define glBlendEquationSeparate glad_glBlendEquationSeparate\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs);\nGLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers;\n#define glDrawBuffers glad_glDrawBuffers\ntypedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate;\n#define glStencilOpSeparate glad_glStencilOpSeparate\ntypedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate;\n#define glStencilFuncSeparate glad_glStencilFuncSeparate\ntypedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);\nGLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate;\n#define glStencilMaskSeparate glad_glStencilMaskSeparate\ntypedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLATTACHSHADERPROC glad_glAttachShader;\n#define glAttachShader glad_glAttachShader\ntypedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name);\nGLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation;\n#define glBindAttribLocation glad_glBindAttribLocation\ntypedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader);\nGLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader;\n#define glCompileShader glad_glCompileShader\ntypedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void);\nGLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram;\n#define glCreateProgram glad_glCreateProgram\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type);\nGLAPI PFNGLCREATESHADERPROC glad_glCreateShader;\n#define glCreateShader glad_glCreateShader\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram;\n#define glDeleteProgram glad_glDeleteProgram\ntypedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader);\nGLAPI PFNGLDELETESHADERPROC glad_glDeleteShader;\n#define glDeleteShader glad_glDeleteShader\ntypedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLDETACHSHADERPROC glad_glDetachShader;\n#define glDetachShader glad_glDetachShader\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray;\n#define glDisableVertexAttribArray glad_glDisableVertexAttribArray\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray;\n#define glEnableVertexAttribArray glad_glEnableVertexAttribArray\ntypedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib;\n#define glGetActiveAttrib glad_glGetActiveAttrib\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform;\n#define glGetActiveUniform glad_glGetActiveUniform\ntypedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\nGLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders;\n#define glGetAttachedShaders glad_glGetAttachedShaders\ntypedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation;\n#define glGetAttribLocation glad_glGetAttribLocation\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params);\nGLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv;\n#define glGetProgramiv glad_glGetProgramiv\ntypedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog;\n#define glGetProgramInfoLog glad_glGetProgramInfoLog\ntypedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params);\nGLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv;\n#define glGetShaderiv glad_glGetShaderiv\ntypedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog;\n#define glGetShaderInfoLog glad_glGetShaderInfoLog\ntypedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\nGLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource;\n#define glGetShaderSource glad_glGetShaderSource\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation;\n#define glGetUniformLocation glad_glGetUniformLocation\ntypedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params);\nGLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv;\n#define glGetUniformfv glad_glGetUniformfv\ntypedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params);\nGLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv;\n#define glGetUniformiv glad_glGetUniformiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params);\nGLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv;\n#define glGetVertexAttribdv glad_glGetVertexAttribdv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv;\n#define glGetVertexAttribfv glad_glGetVertexAttribfv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv;\n#define glGetVertexAttribiv glad_glGetVertexAttribiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer);\nGLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv;\n#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program);\nGLAPI PFNGLISPROGRAMPROC glad_glIsProgram;\n#define glIsProgram glad_glIsProgram\ntypedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader);\nGLAPI PFNGLISSHADERPROC glad_glIsShader;\n#define glIsShader glad_glIsShader\ntypedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program);\nGLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram;\n#define glLinkProgram glad_glLinkProgram\ntypedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\nGLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource;\n#define glShaderSource glad_glShaderSource\ntypedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram;\n#define glUseProgram glad_glUseProgram\ntypedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);\nGLAPI PFNGLUNIFORM1FPROC glad_glUniform1f;\n#define glUniform1f glad_glUniform1f\ntypedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);\nGLAPI PFNGLUNIFORM2FPROC glad_glUniform2f;\n#define glUniform2f glad_glUniform2f\ntypedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI PFNGLUNIFORM3FPROC glad_glUniform3f;\n#define glUniform3f glad_glUniform3f\ntypedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI PFNGLUNIFORM4FPROC glad_glUniform4f;\n#define glUniform4f glad_glUniform4f\ntypedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0);\nGLAPI PFNGLUNIFORM1IPROC glad_glUniform1i;\n#define glUniform1i glad_glUniform1i\ntypedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);\nGLAPI PFNGLUNIFORM2IPROC glad_glUniform2i;\n#define glUniform2i glad_glUniform2i\ntypedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI PFNGLUNIFORM3IPROC glad_glUniform3i;\n#define glUniform3i glad_glUniform3i\ntypedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI PFNGLUNIFORM4IPROC glad_glUniform4i;\n#define glUniform4i glad_glUniform4i\ntypedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv;\n#define glUniform1fv glad_glUniform1fv\ntypedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv;\n#define glUniform2fv glad_glUniform2fv\ntypedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv;\n#define glUniform3fv glad_glUniform3fv\ntypedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv;\n#define glUniform4fv glad_glUniform4fv\ntypedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv;\n#define glUniform1iv glad_glUniform1iv\ntypedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv;\n#define glUniform2iv glad_glUniform2iv\ntypedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv;\n#define glUniform3iv glad_glUniform3iv\ntypedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv;\n#define glUniform4iv glad_glUniform4iv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv;\n#define glUniformMatrix2fv glad_glUniformMatrix2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv;\n#define glUniformMatrix3fv glad_glUniformMatrix3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv;\n#define glUniformMatrix4fv glad_glUniformMatrix4fv\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram;\n#define glValidateProgram glad_glValidateProgram\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x);\nGLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d;\n#define glVertexAttrib1d glad_glVertexAttrib1d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv;\n#define glVertexAttrib1dv glad_glVertexAttrib1dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);\nGLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f;\n#define glVertexAttrib1f glad_glVertexAttrib1f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv;\n#define glVertexAttrib1fv glad_glVertexAttrib1fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x);\nGLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s;\n#define glVertexAttrib1s glad_glVertexAttrib1s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv;\n#define glVertexAttrib1sv glad_glVertexAttrib1sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y);\nGLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d;\n#define glVertexAttrib2d glad_glVertexAttrib2d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv;\n#define glVertexAttrib2dv glad_glVertexAttrib2dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);\nGLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f;\n#define glVertexAttrib2f glad_glVertexAttrib2f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv;\n#define glVertexAttrib2fv glad_glVertexAttrib2fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y);\nGLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s;\n#define glVertexAttrib2s glad_glVertexAttrib2s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv;\n#define glVertexAttrib2sv glad_glVertexAttrib2sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d;\n#define glVertexAttrib3d glad_glVertexAttrib3d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv;\n#define glVertexAttrib3dv glad_glVertexAttrib3dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f;\n#define glVertexAttrib3f glad_glVertexAttrib3f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv;\n#define glVertexAttrib3fv glad_glVertexAttrib3fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z);\nGLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s;\n#define glVertexAttrib3s glad_glVertexAttrib3s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv;\n#define glVertexAttrib3sv glad_glVertexAttrib3sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv;\n#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv;\n#define glVertexAttrib4Niv glad_glVertexAttrib4Niv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv;\n#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\nGLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub;\n#define glVertexAttrib4Nub glad_glVertexAttrib4Nub\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv;\n#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv;\n#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv;\n#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv;\n#define glVertexAttrib4bv glad_glVertexAttrib4bv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d;\n#define glVertexAttrib4d glad_glVertexAttrib4d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv;\n#define glVertexAttrib4dv glad_glVertexAttrib4dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f;\n#define glVertexAttrib4f glad_glVertexAttrib4f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv;\n#define glVertexAttrib4fv glad_glVertexAttrib4fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv;\n#define glVertexAttrib4iv glad_glVertexAttrib4iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s;\n#define glVertexAttrib4s glad_glVertexAttrib4s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv;\n#define glVertexAttrib4sv glad_glVertexAttrib4sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv;\n#define glVertexAttrib4ubv glad_glVertexAttrib4ubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv;\n#define glVertexAttrib4uiv glad_glVertexAttrib4uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv;\n#define glVertexAttrib4usv glad_glVertexAttrib4usv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer;\n#define glVertexAttribPointer glad_glVertexAttribPointer\n#endif\n#ifndef GL_VERSION_2_1\n#define GL_VERSION_2_1 1\nGLAPI int GLAD_GL_VERSION_2_1;\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv;\n#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv;\n#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv;\n#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv;\n#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv;\n#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;\n#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv\n#endif\n#ifndef GL_VERSION_3_0\n#define GL_VERSION_3_0 1\nGLAPI int GLAD_GL_VERSION_3_0;\ntypedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\nGLAPI PFNGLCOLORMASKIPROC glad_glColorMaski;\n#define glColorMaski glad_glColorMaski\ntypedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data);\nGLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v;\n#define glGetBooleani_v glad_glGetBooleani_v\ntypedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data);\nGLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v;\n#define glGetIntegeri_v glad_glGetIntegeri_v\ntypedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLENABLEIPROC glad_glEnablei;\n#define glEnablei glad_glEnablei\ntypedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLDISABLEIPROC glad_glDisablei;\n#define glDisablei glad_glDisablei\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi;\n#define glIsEnabledi glad_glIsEnabledi\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode);\nGLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback;\n#define glBeginTransformFeedback glad_glBeginTransformFeedback\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback;\n#define glEndTransformFeedback glad_glEndTransformFeedback\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange;\n#define glBindBufferRange glad_glBindBufferRange\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer);\nGLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase;\n#define glBindBufferBase glad_glBindBufferBase\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\nGLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings;\n#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying;\n#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying\ntypedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp);\nGLAPI PFNGLCLAMPCOLORPROC glad_glClampColor;\n#define glClampColor glad_glClampColor\ntypedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode);\nGLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender;\n#define glBeginConditionalRender glad_glBeginConditionalRender\ntypedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void);\nGLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender;\n#define glEndConditionalRender glad_glEndConditionalRender\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer;\n#define glVertexAttribIPointer glad_glVertexAttribIPointer\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv;\n#define glGetVertexAttribIiv glad_glGetVertexAttribIiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params);\nGLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv;\n#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x);\nGLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i;\n#define glVertexAttribI1i glad_glVertexAttribI1i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y);\nGLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i;\n#define glVertexAttribI2i glad_glVertexAttribI2i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z);\nGLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i;\n#define glVertexAttribI3i glad_glVertexAttribI3i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i;\n#define glVertexAttribI4i glad_glVertexAttribI4i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x);\nGLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui;\n#define glVertexAttribI1ui glad_glVertexAttribI1ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y);\nGLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui;\n#define glVertexAttribI2ui glad_glVertexAttribI2ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z);\nGLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui;\n#define glVertexAttribI3ui glad_glVertexAttribI3ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui;\n#define glVertexAttribI4ui glad_glVertexAttribI4ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv;\n#define glVertexAttribI1iv glad_glVertexAttribI1iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv;\n#define glVertexAttribI2iv glad_glVertexAttribI2iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv;\n#define glVertexAttribI3iv glad_glVertexAttribI3iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv;\n#define glVertexAttribI4iv glad_glVertexAttribI4iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv;\n#define glVertexAttribI1uiv glad_glVertexAttribI1uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv;\n#define glVertexAttribI2uiv glad_glVertexAttribI2uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv;\n#define glVertexAttribI3uiv glad_glVertexAttribI3uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv;\n#define glVertexAttribI4uiv glad_glVertexAttribI4uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv;\n#define glVertexAttribI4bv glad_glVertexAttribI4bv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv;\n#define glVertexAttribI4sv glad_glVertexAttribI4sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv;\n#define glVertexAttribI4ubv glad_glVertexAttribI4ubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv;\n#define glVertexAttribI4usv glad_glVertexAttribI4usv\ntypedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params);\nGLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv;\n#define glGetUniformuiv glad_glGetUniformuiv\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name);\nGLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation;\n#define glBindFragDataLocation glad_glBindFragDataLocation\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation;\n#define glGetFragDataLocation glad_glGetFragDataLocation\ntypedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0);\nGLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui;\n#define glUniform1ui glad_glUniform1ui\ntypedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1);\nGLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui;\n#define glUniform2ui glad_glUniform2ui\ntypedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui;\n#define glUniform3ui glad_glUniform3ui\ntypedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui;\n#define glUniform4ui glad_glUniform4ui\ntypedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv;\n#define glUniform1uiv glad_glUniform1uiv\ntypedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv;\n#define glUniform2uiv glad_glUniform2uiv\ntypedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv;\n#define glUniform3uiv glad_glUniform3uiv\ntypedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv;\n#define glUniform4uiv glad_glUniform4uiv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv;\n#define glTexParameterIiv glad_glTexParameterIiv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params);\nGLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv;\n#define glTexParameterIuiv glad_glTexParameterIuiv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv;\n#define glGetTexParameterIiv glad_glGetTexParameterIiv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params);\nGLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv;\n#define glGetTexParameterIuiv glad_glGetTexParameterIuiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value);\nGLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv;\n#define glClearBufferiv glad_glClearBufferiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value);\nGLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv;\n#define glClearBufferuiv glad_glClearBufferuiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value);\nGLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv;\n#define glClearBufferfv glad_glClearBufferfv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\nGLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi;\n#define glClearBufferfi glad_glClearBufferfi\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index);\nGLAPI PFNGLGETSTRINGIPROC glad_glGetStringi;\n#define glGetStringi glad_glGetStringi\ntypedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer);\nGLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer;\n#define glIsRenderbuffer glad_glIsRenderbuffer\ntypedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);\nGLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer;\n#define glBindRenderbuffer glad_glBindRenderbuffer\ntypedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers);\nGLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers;\n#define glDeleteRenderbuffers glad_glDeleteRenderbuffers\ntypedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers);\nGLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers;\n#define glGenRenderbuffers glad_glGenRenderbuffers\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage;\n#define glRenderbufferStorage glad_glRenderbufferStorage\ntypedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv;\n#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv\ntypedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer);\nGLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer;\n#define glIsFramebuffer glad_glIsFramebuffer\ntypedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);\nGLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer;\n#define glBindFramebuffer glad_glBindFramebuffer\ntypedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers);\nGLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers;\n#define glDeleteFramebuffers glad_glDeleteFramebuffers\ntypedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers);\nGLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers;\n#define glGenFramebuffers glad_glGenFramebuffers\ntypedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);\nGLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus;\n#define glCheckFramebufferStatus glad_glCheckFramebufferStatus\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D;\n#define glFramebufferTexture1D glad_glFramebufferTexture1D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D;\n#define glFramebufferTexture2D glad_glFramebufferTexture2D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\nGLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D;\n#define glFramebufferTexture3D glad_glFramebufferTexture3D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer;\n#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv;\n#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv\ntypedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target);\nGLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap;\n#define glGenerateMipmap glad_glGenerateMipmap\ntypedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer;\n#define glBlitFramebuffer glad_glBlitFramebuffer\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample;\n#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;\n#define glFramebufferTextureLayer glad_glFramebufferTextureLayer\ntypedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange;\n#define glMapBufferRange glad_glMapBufferRange\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length);\nGLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange;\n#define glFlushMappedBufferRange glad_glFlushMappedBufferRange\ntypedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray;\n#define glBindVertexArray glad_glBindVertexArray\ntypedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays);\nGLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays;\n#define glDeleteVertexArrays glad_glDeleteVertexArrays\ntypedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays);\nGLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays;\n#define glGenVertexArrays glad_glGenVertexArrays\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray;\n#define glIsVertexArray glad_glIsVertexArray\n#endif\n#ifndef GL_VERSION_3_1\n#define GL_VERSION_3_1 1\nGLAPI int GLAD_GL_VERSION_3_1;\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);\nGLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced;\n#define glDrawArraysInstanced glad_glDrawArraysInstanced\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);\nGLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced;\n#define glDrawElementsInstanced glad_glDrawElementsInstanced\ntypedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer);\nGLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer;\n#define glTexBuffer glad_glTexBuffer\ntypedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index);\nGLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex;\n#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex\ntypedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData;\n#define glCopyBufferSubData glad_glCopyBufferSubData\ntypedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);\nGLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices;\n#define glGetUniformIndices glad_glGetUniformIndices\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv;\n#define glGetActiveUniformsiv glad_glGetActiveUniformsiv\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);\nGLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName;\n#define glGetActiveUniformName glad_glGetActiveUniformName\ntypedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName);\nGLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex;\n#define glGetUniformBlockIndex glad_glGetUniformBlockIndex\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv;\n#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName;\n#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName\ntypedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);\nGLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding;\n#define glUniformBlockBinding glad_glUniformBlockBinding\n#endif\n#ifndef GL_VERSION_3_2\n#define GL_VERSION_3_2 1\nGLAPI int GLAD_GL_VERSION_3_2;\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex;\n#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex;\n#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\nGLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex;\n#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\nGLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex;\n#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex\ntypedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode);\nGLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex;\n#define glProvokingVertex glad_glProvokingVertex\ntypedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags);\nGLAPI PFNGLFENCESYNCPROC glad_glFenceSync;\n#define glFenceSync glad_glFenceSync\ntypedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync);\nGLAPI PFNGLISSYNCPROC glad_glIsSync;\n#define glIsSync glad_glIsSync\ntypedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync);\nGLAPI PFNGLDELETESYNCPROC glad_glDeleteSync;\n#define glDeleteSync glad_glDeleteSync\ntypedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync;\n#define glClientWaitSync glad_glClientWaitSync\ntypedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLWAITSYNCPROC glad_glWaitSync;\n#define glWaitSync glad_glWaitSync\ntypedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data);\nGLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v;\n#define glGetInteger64v glad_glGetInteger64v\ntypedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\nGLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv;\n#define glGetSynciv glad_glGetSynciv\ntypedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data);\nGLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v;\n#define glGetInteger64i_v glad_glGetInteger64i_v\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params);\nGLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v;\n#define glGetBufferParameteri64v glad_glGetBufferParameteri64v\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture;\n#define glFramebufferTexture glad_glFramebufferTexture\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample;\n#define glTexImage2DMultisample glad_glTexImage2DMultisample\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample;\n#define glTexImage3DMultisample glad_glTexImage3DMultisample\ntypedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val);\nGLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv;\n#define glGetMultisamplefv glad_glGetMultisamplefv\ntypedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask);\nGLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski;\n#define glSampleMaski glad_glSampleMaski\n#endif\n#ifndef GL_VERSION_3_3\n#define GL_VERSION_3_3 1\nGLAPI int GLAD_GL_VERSION_3_3;\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\nGLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed;\n#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex;\n#define glGetFragDataIndex glad_glGetFragDataIndex\ntypedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers);\nGLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers;\n#define glGenSamplers glad_glGenSamplers\ntypedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers);\nGLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers;\n#define glDeleteSamplers glad_glDeleteSamplers\ntypedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler);\nGLAPI PFNGLISSAMPLERPROC glad_glIsSampler;\n#define glIsSampler glad_glIsSampler\ntypedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler);\nGLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler;\n#define glBindSampler glad_glBindSampler\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param);\nGLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri;\n#define glSamplerParameteri glad_glSamplerParameteri\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param);\nGLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv;\n#define glSamplerParameteriv glad_glSamplerParameteriv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param);\nGLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf;\n#define glSamplerParameterf glad_glSamplerParameterf\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param);\nGLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv;\n#define glSamplerParameterfv glad_glSamplerParameterfv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param);\nGLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv;\n#define glSamplerParameterIiv glad_glSamplerParameterIiv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param);\nGLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv;\n#define glSamplerParameterIuiv glad_glSamplerParameterIuiv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv;\n#define glGetSamplerParameteriv glad_glGetSamplerParameteriv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv;\n#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv;\n#define glGetSamplerParameterfv glad_glGetSamplerParameterfv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv;\n#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv\ntypedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target);\nGLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter;\n#define glQueryCounter glad_glQueryCounter\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params);\nGLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v;\n#define glGetQueryObjecti64v glad_glGetQueryObjecti64v\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params);\nGLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v;\n#define glGetQueryObjectui64v glad_glGetQueryObjectui64v\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor);\nGLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor;\n#define glVertexAttribDivisor glad_glVertexAttribDivisor\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui;\n#define glVertexAttribP1ui glad_glVertexAttribP1ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv;\n#define glVertexAttribP1uiv glad_glVertexAttribP1uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui;\n#define glVertexAttribP2ui glad_glVertexAttribP2ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv;\n#define glVertexAttribP2uiv glad_glVertexAttribP2uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui;\n#define glVertexAttribP3ui glad_glVertexAttribP3ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv;\n#define glVertexAttribP3uiv glad_glVertexAttribP3uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui;\n#define glVertexAttribP4ui glad_glVertexAttribP4ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv;\n#define glVertexAttribP4uiv glad_glVertexAttribP4uiv\ntypedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui;\n#define glVertexP2ui glad_glVertexP2ui\ntypedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv;\n#define glVertexP2uiv glad_glVertexP2uiv\ntypedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui;\n#define glVertexP3ui glad_glVertexP3ui\ntypedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv;\n#define glVertexP3uiv glad_glVertexP3uiv\ntypedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui;\n#define glVertexP4ui glad_glVertexP4ui\ntypedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv;\n#define glVertexP4uiv glad_glVertexP4uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui;\n#define glTexCoordP1ui glad_glTexCoordP1ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv;\n#define glTexCoordP1uiv glad_glTexCoordP1uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui;\n#define glTexCoordP2ui glad_glTexCoordP2ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv;\n#define glTexCoordP2uiv glad_glTexCoordP2uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui;\n#define glTexCoordP3ui glad_glTexCoordP3ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv;\n#define glTexCoordP3uiv glad_glTexCoordP3uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui;\n#define glTexCoordP4ui glad_glTexCoordP4ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv;\n#define glTexCoordP4uiv glad_glTexCoordP4uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui;\n#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv;\n#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui;\n#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv;\n#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui;\n#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv;\n#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui;\n#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv;\n#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv\ntypedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui;\n#define glNormalP3ui glad_glNormalP3ui\ntypedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv;\n#define glNormalP3uiv glad_glNormalP3uiv\ntypedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui;\n#define glColorP3ui glad_glColorP3ui\ntypedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv;\n#define glColorP3uiv glad_glColorP3uiv\ntypedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui;\n#define glColorP4ui glad_glColorP4ui\ntypedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv;\n#define glColorP4uiv glad_glColorP4uiv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui;\n#define glSecondaryColorP3ui glad_glSecondaryColorP3ui\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv;\n#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv\n#endif\n#ifndef GL_VERSION_4_0\n#define GL_VERSION_4_0 1\nGLAPI int GLAD_GL_VERSION_4_0;\ntypedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC)(GLfloat value);\nGLAPI PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading;\n#define glMinSampleShading glad_glMinSampleShading\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC)(GLuint buf, GLenum mode);\nGLAPI PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi;\n#define glBlendEquationi glad_glBlendEquationi\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC)(GLuint buf, GLenum modeRGB, GLenum modeAlpha);\nGLAPI PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei;\n#define glBlendEquationSeparatei glad_glBlendEquationSeparatei\ntypedef void (APIENTRYP PFNGLBLENDFUNCIPROC)(GLuint buf, GLenum src, GLenum dst);\nGLAPI PFNGLBLENDFUNCIPROC glad_glBlendFunci;\n#define glBlendFunci glad_glBlendFunci\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\nGLAPI PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei;\n#define glBlendFuncSeparatei glad_glBlendFuncSeparatei\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC)(GLenum mode, const void *indirect);\nGLAPI PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect;\n#define glDrawArraysIndirect glad_glDrawArraysIndirect\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC)(GLenum mode, GLenum type, const void *indirect);\nGLAPI PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect;\n#define glDrawElementsIndirect glad_glDrawElementsIndirect\ntypedef void (APIENTRYP PFNGLUNIFORM1DPROC)(GLint location, GLdouble x);\nGLAPI PFNGLUNIFORM1DPROC glad_glUniform1d;\n#define glUniform1d glad_glUniform1d\ntypedef void (APIENTRYP PFNGLUNIFORM2DPROC)(GLint location, GLdouble x, GLdouble y);\nGLAPI PFNGLUNIFORM2DPROC glad_glUniform2d;\n#define glUniform2d glad_glUniform2d\ntypedef void (APIENTRYP PFNGLUNIFORM3DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLUNIFORM3DPROC glad_glUniform3d;\n#define glUniform3d glad_glUniform3d\ntypedef void (APIENTRYP PFNGLUNIFORM4DPROC)(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI PFNGLUNIFORM4DPROC glad_glUniform4d;\n#define glUniform4d glad_glUniform4d\ntypedef void (APIENTRYP PFNGLUNIFORM1DVPROC)(GLint location, GLsizei count, const GLdouble *value);\nGLAPI PFNGLUNIFORM1DVPROC glad_glUniform1dv;\n#define glUniform1dv glad_glUniform1dv\ntypedef void (APIENTRYP PFNGLUNIFORM2DVPROC)(GLint location, GLsizei count, const GLdouble *value);\nGLAPI PFNGLUNIFORM2DVPROC glad_glUniform2dv;\n#define glUniform2dv glad_glUniform2dv\ntypedef void (APIENTRYP PFNGLUNIFORM3DVPROC)(GLint location, GLsizei count, const GLdouble *value);\nGLAPI PFNGLUNIFORM3DVPROC glad_glUniform3dv;\n#define glUniform3dv glad_glUniform3dv\ntypedef void (APIENTRYP PFNGLUNIFORM4DVPROC)(GLint location, GLsizei count, const GLdouble *value);\nGLAPI PFNGLUNIFORM4DVPROC glad_glUniform4dv;\n#define glUniform4dv glad_glUniform4dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv;\n#define glUniformMatrix2dv glad_glUniformMatrix2dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv;\n#define glUniformMatrix3dv glad_glUniformMatrix3dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv;\n#define glUniformMatrix4dv glad_glUniformMatrix4dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv;\n#define glUniformMatrix2x3dv glad_glUniformMatrix2x3dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv;\n#define glUniformMatrix2x4dv glad_glUniformMatrix2x4dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv;\n#define glUniformMatrix3x2dv glad_glUniformMatrix3x2dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv;\n#define glUniformMatrix3x4dv glad_glUniformMatrix3x4dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv;\n#define glUniformMatrix4x2dv glad_glUniformMatrix4x2dv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv;\n#define glUniformMatrix4x3dv glad_glUniformMatrix4x3dv\ntypedef void (APIENTRYP PFNGLGETUNIFORMDVPROC)(GLuint program, GLint location, GLdouble *params);\nGLAPI PFNGLGETUNIFORMDVPROC glad_glGetUniformdv;\n#define glGetUniformdv glad_glGetUniformdv\ntypedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)(GLuint program, GLenum shadertype, const GLchar *name);\nGLAPI PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation;\n#define glGetSubroutineUniformLocation glad_glGetSubroutineUniformLocation\ntypedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC)(GLuint program, GLenum shadertype, const GLchar *name);\nGLAPI PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex;\n#define glGetSubroutineIndex glad_glGetSubroutineIndex\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);\nGLAPI PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv;\n#define glGetActiveSubroutineUniformiv glad_glGetActiveSubroutineUniformiv\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\nGLAPI PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName;\n#define glGetActiveSubroutineUniformName glad_glGetActiveSubroutineUniformName\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC)(GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\nGLAPI PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName;\n#define glGetActiveSubroutineName glad_glGetActiveSubroutineName\ntypedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC)(GLenum shadertype, GLsizei count, const GLuint *indices);\nGLAPI PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv;\n#define glUniformSubroutinesuiv glad_glUniformSubroutinesuiv\ntypedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC)(GLenum shadertype, GLint location, GLuint *params);\nGLAPI PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv;\n#define glGetUniformSubroutineuiv glad_glGetUniformSubroutineuiv\ntypedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC)(GLuint program, GLenum shadertype, GLenum pname, GLint *values);\nGLAPI PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv;\n#define glGetProgramStageiv glad_glGetProgramStageiv\ntypedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC)(GLenum pname, GLint value);\nGLAPI PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri;\n#define glPatchParameteri glad_glPatchParameteri\ntypedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC)(GLenum pname, const GLfloat *values);\nGLAPI PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv;\n#define glPatchParameterfv glad_glPatchParameterfv\ntypedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id);\nGLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback;\n#define glBindTransformFeedback glad_glBindTransformFeedback\ntypedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids);\nGLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks;\n#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks\ntypedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids);\nGLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks;\n#define glGenTransformFeedbacks glad_glGenTransformFeedbacks\ntypedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id);\nGLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback;\n#define glIsTransformFeedback glad_glIsTransformFeedback\ntypedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback;\n#define glPauseTransformFeedback glad_glPauseTransformFeedback\ntypedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback;\n#define glResumeTransformFeedback glad_glResumeTransformFeedback\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC)(GLenum mode, GLuint id);\nGLAPI PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback;\n#define glDrawTransformFeedback glad_glDrawTransformFeedback\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)(GLenum mode, GLuint id, GLuint stream);\nGLAPI PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream;\n#define glDrawTransformFeedbackStream glad_glDrawTransformFeedbackStream\ntypedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC)(GLenum target, GLuint index, GLuint id);\nGLAPI PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed;\n#define glBeginQueryIndexed glad_glBeginQueryIndexed\ntypedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC)(GLenum target, GLuint index);\nGLAPI PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed;\n#define glEndQueryIndexed glad_glEndQueryIndexed\ntypedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC)(GLenum target, GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv;\n#define glGetQueryIndexediv glad_glGetQueryIndexediv\n#endif\n#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242\n#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243\n#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244\n#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245\n#define GL_DEBUG_SOURCE_API_ARB 0x8246\n#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247\n#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248\n#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249\n#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A\n#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B\n#define GL_DEBUG_TYPE_ERROR_ARB 0x824C\n#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D\n#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E\n#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F\n#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250\n#define GL_DEBUG_TYPE_OTHER_ARB 0x8251\n#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143\n#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144\n#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145\n#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146\n#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147\n#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148\n#ifndef GL_ARB_debug_output\n#define GL_ARB_debug_output 1\nGLAPI int GLAD_GL_ARB_debug_output;\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\nGLAPI PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB;\n#define glDebugMessageControlARB glad_glDebugMessageControlARB\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\nGLAPI PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB;\n#define glDebugMessageInsertARB glad_glDebugMessageInsertARB\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void *userParam);\nGLAPI PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB;\n#define glDebugMessageCallbackARB glad_glDebugMessageCallbackARB\ntypedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\nGLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB;\n#define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/glad/glad_gles3.c",
    "content": "/*\n\n    OpenGL ES loader generated by glad 0.1.36 on Mon Aug 22 22:02:21 2022.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gles2=3.0\n    Profile: core\n    Extensions:\n        \n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"core\" --api=\"gles2=3.0\" --generator=\"c\" --spec=\"gl\" --extensions=\"\"\n    Online:\n        https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gles2%3D3.0\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <glad_gles3.h>\n\nstruct gladGLversionStruct GLVersion = { 0, 0 };\n\n#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0)\n#define _GLAD_IS_SOME_NEW_VERSION 1\n#endif\n\nstatic int max_loaded_major;\nstatic int max_loaded_minor;\n\nstatic const char *exts = NULL;\nstatic int num_exts_i = 0;\nstatic char **exts_i = NULL;\n\nstatic int get_exts(void) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        exts = (const char *)glGetString(GL_EXTENSIONS);\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        unsigned int index;\n\n        num_exts_i = 0;\n        glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i);\n        if (num_exts_i > 0) {\n            exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i));\n        }\n\n        if (exts_i == NULL) {\n            return 0;\n        }\n\n        for(index = 0; index < (unsigned)num_exts_i; index++) {\n            const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index);\n            size_t len = strlen(gl_str_tmp);\n\n            char *local_str = (char*)malloc((len+1) * sizeof(char));\n            if(local_str != NULL) {\n                memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char));\n            }\n            exts_i[index] = local_str;\n        }\n    }\n#endif\n    return 1;\n}\n\nstatic void free_exts(void) {\n    if (exts_i != NULL) {\n        int index;\n        for(index = 0; index < num_exts_i; index++) {\n            free((char *)exts_i[index]);\n        }\n        free((void *)exts_i);\n        exts_i = NULL;\n    }\n}\n\nstatic int has_ext(const char *ext) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        const char *extensions;\n        const char *loc;\n        const char *terminator;\n        extensions = exts;\n        if(extensions == NULL || ext == NULL) {\n            return 0;\n        }\n\n        while(1) {\n            loc = strstr(extensions, ext);\n            if(loc == NULL) {\n                return 0;\n            }\n\n            terminator = loc + strlen(ext);\n            if((loc == extensions || *(loc - 1) == ' ') &&\n                (*terminator == ' ' || *terminator == '\\0')) {\n                return 1;\n            }\n            extensions = terminator;\n        }\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        int index;\n        if(exts_i == NULL) return 0;\n        for(index = 0; index < num_exts_i; index++) {\n            const char *e = exts_i[index];\n\n            if(exts_i[index] != NULL && strcmp(e, ext) == 0) {\n                return 1;\n            }\n        }\n    }\n#endif\n\n    return 0;\n}\nint GLAD_GL_ES_VERSION_2_0 = 0;\nint GLAD_GL_ES_VERSION_3_0 = 0;\nPFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL;\nPFNGLATTACHSHADERPROC glad_glAttachShader = NULL;\nPFNGLBEGINQUERYPROC glad_glBeginQuery = NULL;\nPFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL;\nPFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL;\nPFNGLBINDBUFFERPROC glad_glBindBuffer = NULL;\nPFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL;\nPFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL;\nPFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL;\nPFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL;\nPFNGLBINDSAMPLERPROC glad_glBindSampler = NULL;\nPFNGLBINDTEXTUREPROC glad_glBindTexture = NULL;\nPFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL;\nPFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL;\nPFNGLBLENDCOLORPROC glad_glBlendColor = NULL;\nPFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL;\nPFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL;\nPFNGLBLENDFUNCPROC glad_glBlendFunc = NULL;\nPFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL;\nPFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL;\nPFNGLBUFFERDATAPROC glad_glBufferData = NULL;\nPFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL;\nPFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL;\nPFNGLCLEARPROC glad_glClear = NULL;\nPFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL;\nPFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL;\nPFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL;\nPFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL;\nPFNGLCLEARCOLORPROC glad_glClearColor = NULL;\nPFNGLCLEARDEPTHFPROC glad_glClearDepthf = NULL;\nPFNGLCLEARSTENCILPROC glad_glClearStencil = NULL;\nPFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL;\nPFNGLCOLORMASKPROC glad_glColorMask = NULL;\nPFNGLCOMPILESHADERPROC glad_glCompileShader = NULL;\nPFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL;\nPFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL;\nPFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL;\nPFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL;\nPFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL;\nPFNGLCREATESHADERPROC glad_glCreateShader = NULL;\nPFNGLCULLFACEPROC glad_glCullFace = NULL;\nPFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL;\nPFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL;\nPFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL;\nPFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL;\nPFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL;\nPFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL;\nPFNGLDELETESHADERPROC glad_glDeleteShader = NULL;\nPFNGLDELETESYNCPROC glad_glDeleteSync = NULL;\nPFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL;\nPFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL;\nPFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL;\nPFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL;\nPFNGLDEPTHMASKPROC glad_glDepthMask = NULL;\nPFNGLDEPTHRANGEFPROC glad_glDepthRangef = NULL;\nPFNGLDETACHSHADERPROC glad_glDetachShader = NULL;\nPFNGLDISABLEPROC glad_glDisable = NULL;\nPFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL;\nPFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL;\nPFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL;\nPFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL;\nPFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL;\nPFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL;\nPFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL;\nPFNGLENABLEPROC glad_glEnable = NULL;\nPFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL;\nPFNGLENDQUERYPROC glad_glEndQuery = NULL;\nPFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL;\nPFNGLFENCESYNCPROC glad_glFenceSync = NULL;\nPFNGLFINISHPROC glad_glFinish = NULL;\nPFNGLFLUSHPROC glad_glFlush = NULL;\nPFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL;\nPFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL;\nPFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL;\nPFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL;\nPFNGLFRONTFACEPROC glad_glFrontFace = NULL;\nPFNGLGENBUFFERSPROC glad_glGenBuffers = NULL;\nPFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL;\nPFNGLGENQUERIESPROC glad_glGenQueries = NULL;\nPFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL;\nPFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL;\nPFNGLGENTEXTURESPROC glad_glGenTextures = NULL;\nPFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL;\nPFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL;\nPFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL;\nPFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL;\nPFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL;\nPFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL;\nPFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL;\nPFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL;\nPFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL;\nPFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL;\nPFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL;\nPFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL;\nPFNGLGETERRORPROC glad_glGetError = NULL;\nPFNGLGETFLOATVPROC glad_glGetFloatv = NULL;\nPFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL;\nPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL;\nPFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL;\nPFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL;\nPFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL;\nPFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL;\nPFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ = NULL;\nPFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary = NULL;\nPFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL;\nPFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL;\nPFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL;\nPFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL;\nPFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL;\nPFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL;\nPFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL;\nPFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL;\nPFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat = NULL;\nPFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL;\nPFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL;\nPFNGLGETSTRINGPROC glad_glGetString = NULL;\nPFNGLGETSTRINGIPROC glad_glGetStringi = NULL;\nPFNGLGETSYNCIVPROC glad_glGetSynciv = NULL;\nPFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL;\nPFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL;\nPFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL;\nPFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL;\nPFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL;\nPFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL;\nPFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL;\nPFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL;\nPFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL;\nPFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL;\nPFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL;\nPFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL;\nPFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL;\nPFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL;\nPFNGLHINTPROC glad_glHint = NULL;\nPFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer = NULL;\nPFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer = NULL;\nPFNGLISBUFFERPROC glad_glIsBuffer = NULL;\nPFNGLISENABLEDPROC glad_glIsEnabled = NULL;\nPFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL;\nPFNGLISPROGRAMPROC glad_glIsProgram = NULL;\nPFNGLISQUERYPROC glad_glIsQuery = NULL;\nPFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL;\nPFNGLISSAMPLERPROC glad_glIsSampler = NULL;\nPFNGLISSHADERPROC glad_glIsShader = NULL;\nPFNGLISSYNCPROC glad_glIsSync = NULL;\nPFNGLISTEXTUREPROC glad_glIsTexture = NULL;\nPFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL;\nPFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL;\nPFNGLLINEWIDTHPROC glad_glLineWidth = NULL;\nPFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL;\nPFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL;\nPFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL;\nPFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL;\nPFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL;\nPFNGLPROGRAMBINARYPROC glad_glProgramBinary = NULL;\nPFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri = NULL;\nPFNGLREADBUFFERPROC glad_glReadBuffer = NULL;\nPFNGLREADPIXELSPROC glad_glReadPixels = NULL;\nPFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler = NULL;\nPFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL;\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL;\nPFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL;\nPFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL;\nPFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL;\nPFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL;\nPFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL;\nPFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL;\nPFNGLSCISSORPROC glad_glScissor = NULL;\nPFNGLSHADERBINARYPROC glad_glShaderBinary = NULL;\nPFNGLSHADERSOURCEPROC glad_glShaderSource = NULL;\nPFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL;\nPFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL;\nPFNGLSTENCILMASKPROC glad_glStencilMask = NULL;\nPFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL;\nPFNGLSTENCILOPPROC glad_glStencilOp = NULL;\nPFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL;\nPFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL;\nPFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL;\nPFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL;\nPFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL;\nPFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL;\nPFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL;\nPFNGLTEXSTORAGE2DPROC glad_glTexStorage2D = NULL;\nPFNGLTEXSTORAGE3DPROC glad_glTexStorage3D = NULL;\nPFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL;\nPFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL;\nPFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL;\nPFNGLUNIFORM1FPROC glad_glUniform1f = NULL;\nPFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL;\nPFNGLUNIFORM1IPROC glad_glUniform1i = NULL;\nPFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL;\nPFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL;\nPFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL;\nPFNGLUNIFORM2FPROC glad_glUniform2f = NULL;\nPFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL;\nPFNGLUNIFORM2IPROC glad_glUniform2i = NULL;\nPFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL;\nPFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL;\nPFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL;\nPFNGLUNIFORM3FPROC glad_glUniform3f = NULL;\nPFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL;\nPFNGLUNIFORM3IPROC glad_glUniform3i = NULL;\nPFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL;\nPFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL;\nPFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL;\nPFNGLUNIFORM4FPROC glad_glUniform4f = NULL;\nPFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL;\nPFNGLUNIFORM4IPROC glad_glUniform4i = NULL;\nPFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL;\nPFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL;\nPFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL;\nPFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL;\nPFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL;\nPFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL;\nPFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL;\nPFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL;\nPFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL;\nPFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL;\nPFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL;\nPFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL;\nPFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL;\nPFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL;\nPFNGLUSEPROGRAMPROC glad_glUseProgram = NULL;\nPFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL;\nPFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL;\nPFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL;\nPFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL;\nPFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL;\nPFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL;\nPFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL;\nPFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL;\nPFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL;\nPFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL;\nPFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL;\nPFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL;\nPFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL;\nPFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL;\nPFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL;\nPFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL;\nPFNGLVIEWPORTPROC glad_glViewport = NULL;\nPFNGLWAITSYNCPROC glad_glWaitSync = NULL;\nstatic void load_GL_ES_VERSION_2_0(GLADloadproc load) {\n\tif(!GLAD_GL_ES_VERSION_2_0) return;\n\tglad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load(\"glActiveTexture\");\n\tglad_glAttachShader = (PFNGLATTACHSHADERPROC)load(\"glAttachShader\");\n\tglad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load(\"glBindAttribLocation\");\n\tglad_glBindBuffer = (PFNGLBINDBUFFERPROC)load(\"glBindBuffer\");\n\tglad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load(\"glBindFramebuffer\");\n\tglad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load(\"glBindRenderbuffer\");\n\tglad_glBindTexture = (PFNGLBINDTEXTUREPROC)load(\"glBindTexture\");\n\tglad_glBlendColor = (PFNGLBLENDCOLORPROC)load(\"glBlendColor\");\n\tglad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load(\"glBlendEquation\");\n\tglad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load(\"glBlendEquationSeparate\");\n\tglad_glBlendFunc = (PFNGLBLENDFUNCPROC)load(\"glBlendFunc\");\n\tglad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load(\"glBlendFuncSeparate\");\n\tglad_glBufferData = (PFNGLBUFFERDATAPROC)load(\"glBufferData\");\n\tglad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load(\"glBufferSubData\");\n\tglad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load(\"glCheckFramebufferStatus\");\n\tglad_glClear = (PFNGLCLEARPROC)load(\"glClear\");\n\tglad_glClearColor = (PFNGLCLEARCOLORPROC)load(\"glClearColor\");\n\tglad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load(\"glClearDepthf\");\n\tglad_glClearStencil = (PFNGLCLEARSTENCILPROC)load(\"glClearStencil\");\n\tglad_glColorMask = (PFNGLCOLORMASKPROC)load(\"glColorMask\");\n\tglad_glCompileShader = (PFNGLCOMPILESHADERPROC)load(\"glCompileShader\");\n\tglad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load(\"glCompressedTexImage2D\");\n\tglad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load(\"glCompressedTexSubImage2D\");\n\tglad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load(\"glCopyTexImage2D\");\n\tglad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load(\"glCopyTexSubImage2D\");\n\tglad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load(\"glCreateProgram\");\n\tglad_glCreateShader = (PFNGLCREATESHADERPROC)load(\"glCreateShader\");\n\tglad_glCullFace = (PFNGLCULLFACEPROC)load(\"glCullFace\");\n\tglad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load(\"glDeleteBuffers\");\n\tglad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load(\"glDeleteFramebuffers\");\n\tglad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load(\"glDeleteProgram\");\n\tglad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load(\"glDeleteRenderbuffers\");\n\tglad_glDeleteShader = (PFNGLDELETESHADERPROC)load(\"glDeleteShader\");\n\tglad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load(\"glDeleteTextures\");\n\tglad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load(\"glDepthFunc\");\n\tglad_glDepthMask = (PFNGLDEPTHMASKPROC)load(\"glDepthMask\");\n\tglad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load(\"glDepthRangef\");\n\tglad_glDetachShader = (PFNGLDETACHSHADERPROC)load(\"glDetachShader\");\n\tglad_glDisable = (PFNGLDISABLEPROC)load(\"glDisable\");\n\tglad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load(\"glDisableVertexAttribArray\");\n\tglad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load(\"glDrawArrays\");\n\tglad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load(\"glDrawElements\");\n\tglad_glEnable = (PFNGLENABLEPROC)load(\"glEnable\");\n\tglad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load(\"glEnableVertexAttribArray\");\n\tglad_glFinish = (PFNGLFINISHPROC)load(\"glFinish\");\n\tglad_glFlush = (PFNGLFLUSHPROC)load(\"glFlush\");\n\tglad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load(\"glFramebufferRenderbuffer\");\n\tglad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load(\"glFramebufferTexture2D\");\n\tglad_glFrontFace = (PFNGLFRONTFACEPROC)load(\"glFrontFace\");\n\tglad_glGenBuffers = (PFNGLGENBUFFERSPROC)load(\"glGenBuffers\");\n\tglad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load(\"glGenerateMipmap\");\n\tglad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load(\"glGenFramebuffers\");\n\tglad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load(\"glGenRenderbuffers\");\n\tglad_glGenTextures = (PFNGLGENTEXTURESPROC)load(\"glGenTextures\");\n\tglad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load(\"glGetActiveAttrib\");\n\tglad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load(\"glGetActiveUniform\");\n\tglad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load(\"glGetAttachedShaders\");\n\tglad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load(\"glGetAttribLocation\");\n\tglad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load(\"glGetBooleanv\");\n\tglad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load(\"glGetBufferParameteriv\");\n\tglad_glGetError = (PFNGLGETERRORPROC)load(\"glGetError\");\n\tglad_glGetFloatv = (PFNGLGETFLOATVPROC)load(\"glGetFloatv\");\n\tglad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load(\"glGetFramebufferAttachmentParameteriv\");\n\tglad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load(\"glGetIntegerv\");\n\tglad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load(\"glGetProgramiv\");\n\tglad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load(\"glGetProgramInfoLog\");\n\tglad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load(\"glGetRenderbufferParameteriv\");\n\tglad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load(\"glGetShaderiv\");\n\tglad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load(\"glGetShaderInfoLog\");\n\tglad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load(\"glGetShaderPrecisionFormat\");\n\tglad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load(\"glGetShaderSource\");\n\tglad_glGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tglad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load(\"glGetTexParameterfv\");\n\tglad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load(\"glGetTexParameteriv\");\n\tglad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load(\"glGetUniformfv\");\n\tglad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load(\"glGetUniformiv\");\n\tglad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load(\"glGetUniformLocation\");\n\tglad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load(\"glGetVertexAttribfv\");\n\tglad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load(\"glGetVertexAttribiv\");\n\tglad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load(\"glGetVertexAttribPointerv\");\n\tglad_glHint = (PFNGLHINTPROC)load(\"glHint\");\n\tglad_glIsBuffer = (PFNGLISBUFFERPROC)load(\"glIsBuffer\");\n\tglad_glIsEnabled = (PFNGLISENABLEDPROC)load(\"glIsEnabled\");\n\tglad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load(\"glIsFramebuffer\");\n\tglad_glIsProgram = (PFNGLISPROGRAMPROC)load(\"glIsProgram\");\n\tglad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load(\"glIsRenderbuffer\");\n\tglad_glIsShader = (PFNGLISSHADERPROC)load(\"glIsShader\");\n\tglad_glIsTexture = (PFNGLISTEXTUREPROC)load(\"glIsTexture\");\n\tglad_glLineWidth = (PFNGLLINEWIDTHPROC)load(\"glLineWidth\");\n\tglad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load(\"glLinkProgram\");\n\tglad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load(\"glPixelStorei\");\n\tglad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load(\"glPolygonOffset\");\n\tglad_glReadPixels = (PFNGLREADPIXELSPROC)load(\"glReadPixels\");\n\tglad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load(\"glReleaseShaderCompiler\");\n\tglad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load(\"glRenderbufferStorage\");\n\tglad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load(\"glSampleCoverage\");\n\tglad_glScissor = (PFNGLSCISSORPROC)load(\"glScissor\");\n\tglad_glShaderBinary = (PFNGLSHADERBINARYPROC)load(\"glShaderBinary\");\n\tglad_glShaderSource = (PFNGLSHADERSOURCEPROC)load(\"glShaderSource\");\n\tglad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load(\"glStencilFunc\");\n\tglad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load(\"glStencilFuncSeparate\");\n\tglad_glStencilMask = (PFNGLSTENCILMASKPROC)load(\"glStencilMask\");\n\tglad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load(\"glStencilMaskSeparate\");\n\tglad_glStencilOp = (PFNGLSTENCILOPPROC)load(\"glStencilOp\");\n\tglad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load(\"glStencilOpSeparate\");\n\tglad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load(\"glTexImage2D\");\n\tglad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load(\"glTexParameterf\");\n\tglad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load(\"glTexParameterfv\");\n\tglad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load(\"glTexParameteri\");\n\tglad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load(\"glTexParameteriv\");\n\tglad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load(\"glTexSubImage2D\");\n\tglad_glUniform1f = (PFNGLUNIFORM1FPROC)load(\"glUniform1f\");\n\tglad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load(\"glUniform1fv\");\n\tglad_glUniform1i = (PFNGLUNIFORM1IPROC)load(\"glUniform1i\");\n\tglad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load(\"glUniform1iv\");\n\tglad_glUniform2f = (PFNGLUNIFORM2FPROC)load(\"glUniform2f\");\n\tglad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load(\"glUniform2fv\");\n\tglad_glUniform2i = (PFNGLUNIFORM2IPROC)load(\"glUniform2i\");\n\tglad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load(\"glUniform2iv\");\n\tglad_glUniform3f = (PFNGLUNIFORM3FPROC)load(\"glUniform3f\");\n\tglad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load(\"glUniform3fv\");\n\tglad_glUniform3i = (PFNGLUNIFORM3IPROC)load(\"glUniform3i\");\n\tglad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load(\"glUniform3iv\");\n\tglad_glUniform4f = (PFNGLUNIFORM4FPROC)load(\"glUniform4f\");\n\tglad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load(\"glUniform4fv\");\n\tglad_glUniform4i = (PFNGLUNIFORM4IPROC)load(\"glUniform4i\");\n\tglad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load(\"glUniform4iv\");\n\tglad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load(\"glUniformMatrix2fv\");\n\tglad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load(\"glUniformMatrix3fv\");\n\tglad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load(\"glUniformMatrix4fv\");\n\tglad_glUseProgram = (PFNGLUSEPROGRAMPROC)load(\"glUseProgram\");\n\tglad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load(\"glValidateProgram\");\n\tglad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load(\"glVertexAttrib1f\");\n\tglad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load(\"glVertexAttrib1fv\");\n\tglad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load(\"glVertexAttrib2f\");\n\tglad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load(\"glVertexAttrib2fv\");\n\tglad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load(\"glVertexAttrib3f\");\n\tglad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load(\"glVertexAttrib3fv\");\n\tglad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load(\"glVertexAttrib4f\");\n\tglad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load(\"glVertexAttrib4fv\");\n\tglad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load(\"glVertexAttribPointer\");\n\tglad_glViewport = (PFNGLVIEWPORTPROC)load(\"glViewport\");\n}\nstatic void load_GL_ES_VERSION_3_0(GLADloadproc load) {\n\tif(!GLAD_GL_ES_VERSION_3_0) return;\n\tglad_glReadBuffer = (PFNGLREADBUFFERPROC)load(\"glReadBuffer\");\n\tglad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load(\"glDrawRangeElements\");\n\tglad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load(\"glTexImage3D\");\n\tglad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load(\"glTexSubImage3D\");\n\tglad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load(\"glCopyTexSubImage3D\");\n\tglad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load(\"glCompressedTexImage3D\");\n\tglad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load(\"glCompressedTexSubImage3D\");\n\tglad_glGenQueries = (PFNGLGENQUERIESPROC)load(\"glGenQueries\");\n\tglad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load(\"glDeleteQueries\");\n\tglad_glIsQuery = (PFNGLISQUERYPROC)load(\"glIsQuery\");\n\tglad_glBeginQuery = (PFNGLBEGINQUERYPROC)load(\"glBeginQuery\");\n\tglad_glEndQuery = (PFNGLENDQUERYPROC)load(\"glEndQuery\");\n\tglad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load(\"glGetQueryiv\");\n\tglad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load(\"glGetQueryObjectuiv\");\n\tglad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load(\"glUnmapBuffer\");\n\tglad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load(\"glGetBufferPointerv\");\n\tglad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load(\"glDrawBuffers\");\n\tglad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load(\"glUniformMatrix2x3fv\");\n\tglad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load(\"glUniformMatrix3x2fv\");\n\tglad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load(\"glUniformMatrix2x4fv\");\n\tglad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load(\"glUniformMatrix4x2fv\");\n\tglad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load(\"glUniformMatrix3x4fv\");\n\tglad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load(\"glUniformMatrix4x3fv\");\n\tglad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load(\"glBlitFramebuffer\");\n\tglad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load(\"glRenderbufferStorageMultisample\");\n\tglad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load(\"glFramebufferTextureLayer\");\n\tglad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load(\"glMapBufferRange\");\n\tglad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load(\"glFlushMappedBufferRange\");\n\tglad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load(\"glBindVertexArray\");\n\tglad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load(\"glDeleteVertexArrays\");\n\tglad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load(\"glGenVertexArrays\");\n\tglad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load(\"glIsVertexArray\");\n\tglad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load(\"glGetIntegeri_v\");\n\tglad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load(\"glBeginTransformFeedback\");\n\tglad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load(\"glEndTransformFeedback\");\n\tglad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load(\"glBindBufferRange\");\n\tglad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load(\"glBindBufferBase\");\n\tglad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load(\"glTransformFeedbackVaryings\");\n\tglad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load(\"glGetTransformFeedbackVarying\");\n\tglad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load(\"glVertexAttribIPointer\");\n\tglad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load(\"glGetVertexAttribIiv\");\n\tglad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load(\"glGetVertexAttribIuiv\");\n\tglad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load(\"glVertexAttribI4i\");\n\tglad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load(\"glVertexAttribI4ui\");\n\tglad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load(\"glVertexAttribI4iv\");\n\tglad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load(\"glVertexAttribI4uiv\");\n\tglad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load(\"glGetUniformuiv\");\n\tglad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load(\"glGetFragDataLocation\");\n\tglad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load(\"glUniform1ui\");\n\tglad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load(\"glUniform2ui\");\n\tglad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load(\"glUniform3ui\");\n\tglad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load(\"glUniform4ui\");\n\tglad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load(\"glUniform1uiv\");\n\tglad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load(\"glUniform2uiv\");\n\tglad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load(\"glUniform3uiv\");\n\tglad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load(\"glUniform4uiv\");\n\tglad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load(\"glClearBufferiv\");\n\tglad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load(\"glClearBufferuiv\");\n\tglad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load(\"glClearBufferfv\");\n\tglad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load(\"glClearBufferfi\");\n\tglad_glGetStringi = (PFNGLGETSTRINGIPROC)load(\"glGetStringi\");\n\tglad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load(\"glCopyBufferSubData\");\n\tglad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load(\"glGetUniformIndices\");\n\tglad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load(\"glGetActiveUniformsiv\");\n\tglad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load(\"glGetUniformBlockIndex\");\n\tglad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load(\"glGetActiveUniformBlockiv\");\n\tglad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load(\"glGetActiveUniformBlockName\");\n\tglad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load(\"glUniformBlockBinding\");\n\tglad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load(\"glDrawArraysInstanced\");\n\tglad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load(\"glDrawElementsInstanced\");\n\tglad_glFenceSync = (PFNGLFENCESYNCPROC)load(\"glFenceSync\");\n\tglad_glIsSync = (PFNGLISSYNCPROC)load(\"glIsSync\");\n\tglad_glDeleteSync = (PFNGLDELETESYNCPROC)load(\"glDeleteSync\");\n\tglad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load(\"glClientWaitSync\");\n\tglad_glWaitSync = (PFNGLWAITSYNCPROC)load(\"glWaitSync\");\n\tglad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load(\"glGetInteger64v\");\n\tglad_glGetSynciv = (PFNGLGETSYNCIVPROC)load(\"glGetSynciv\");\n\tglad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load(\"glGetInteger64i_v\");\n\tglad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load(\"glGetBufferParameteri64v\");\n\tglad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load(\"glGenSamplers\");\n\tglad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load(\"glDeleteSamplers\");\n\tglad_glIsSampler = (PFNGLISSAMPLERPROC)load(\"glIsSampler\");\n\tglad_glBindSampler = (PFNGLBINDSAMPLERPROC)load(\"glBindSampler\");\n\tglad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load(\"glSamplerParameteri\");\n\tglad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load(\"glSamplerParameteriv\");\n\tglad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load(\"glSamplerParameterf\");\n\tglad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load(\"glSamplerParameterfv\");\n\tglad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load(\"glGetSamplerParameteriv\");\n\tglad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load(\"glGetSamplerParameterfv\");\n\tglad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load(\"glVertexAttribDivisor\");\n\tglad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load(\"glBindTransformFeedback\");\n\tglad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load(\"glDeleteTransformFeedbacks\");\n\tglad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load(\"glGenTransformFeedbacks\");\n\tglad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load(\"glIsTransformFeedback\");\n\tglad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load(\"glPauseTransformFeedback\");\n\tglad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load(\"glResumeTransformFeedback\");\n\tglad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load(\"glGetProgramBinary\");\n\tglad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load(\"glProgramBinary\");\n\tglad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load(\"glProgramParameteri\");\n\tglad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load(\"glInvalidateFramebuffer\");\n\tglad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load(\"glInvalidateSubFramebuffer\");\n\tglad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load(\"glTexStorage2D\");\n\tglad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load(\"glTexStorage3D\");\n\tglad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load(\"glGetInternalformativ\");\n}\nstatic int find_extensionsGLES2(void) {\n\tif (!get_exts()) return 0;\n\t(void)&has_ext;\n\tfree_exts();\n\treturn 1;\n}\n\nstatic void find_coreGLES2(void) {\n\n    /* Thank you @elmindreda\n     * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176\n     * https://github.com/glfw/glfw/blob/master/src/context.c#L36\n     */\n    int i, major, minor;\n\n    const char* version;\n    const char* prefixes[] = {\n        \"OpenGL ES-CM \",\n        \"OpenGL ES-CL \",\n        \"OpenGL ES \",\n        NULL\n    };\n\n    version = (const char*) glGetString(GL_VERSION);\n    if (!version) return;\n\n    for (i = 0;  prefixes[i];  i++) {\n        const size_t length = strlen(prefixes[i]);\n        if (strncmp(version, prefixes[i], length) == 0) {\n            version += length;\n            break;\n        }\n    }\n\n/* PR #18 */\n#ifdef _MSC_VER\n    sscanf_s(version, \"%d.%d\", &major, &minor);\n#else\n    sscanf(version, \"%d.%d\", &major, &minor);\n#endif\n\n    GLVersion.major = major; GLVersion.minor = minor;\n    max_loaded_major = major; max_loaded_minor = minor;\n\tGLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;\n\tGLAD_GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;\n\tif (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 0)) {\n\t\tmax_loaded_major = 3;\n\t\tmax_loaded_minor = 0;\n\t}\n}\n\nint gladLoadGLES2Loader(GLADloadproc load) {\n\tGLVersion.major = 0; GLVersion.minor = 0;\n\tglGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tif(glGetString == NULL) return 0;\n\tif(glGetString(GL_VERSION) == NULL) return 0;\n\tfind_coreGLES2();\n\tload_GL_ES_VERSION_2_0(load);\n\tload_GL_ES_VERSION_3_0(load);\n\n\tif (!find_extensionsGLES2()) return 0;\n\treturn GLVersion.major != 0 || GLVersion.minor != 0;\n}\n\n"
  },
  {
    "path": "libraries/glad/glad_gles3.h",
    "content": "/*\n\n    OpenGL ES loader generated by glad 0.1.36 on Mon Aug 22 22:02:21 2022.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gles2=3.0\n    Profile: core\n    Extensions:\n        \n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"core\" --api=\"gles2=3.0\" --generator=\"c\" --spec=\"gl\" --extensions=\"\"\n    Online:\n        https://glad.dav1d.de/#profile=core&language=c&specification=gl&loader=on&api=gles2%3D3.0\n*/\n\n\n#ifndef __glad_h_\n#define __glad_h_\n\n#ifdef __gl2_h_\n#error OpenGL ES 2 header already included, remove this include, glad already provides it\n#endif\n#define __gl2_h_\n\n#ifdef __gl3_h_\n#error OpenGL ES 3 header already included, remove this include, glad already provides it\n#endif\n#define __gl3_h_\n\n#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)\n#define APIENTRY __stdcall\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY\n#endif\n#ifndef APIENTRYP\n#define APIENTRYP APIENTRY *\n#endif\n\n#ifndef GLAPIENTRY\n#define GLAPIENTRY APIENTRY\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstruct gladGLversionStruct {\n    int major;\n    int minor;\n};\n\ntypedef void* (* GLADloadproc)(const char *name);\n\n#ifndef GLAPI\n# if defined(GLAD_GLAPI_EXPORT)\n#  if defined(_WIN32) || defined(__CYGWIN__)\n#   if defined(GLAD_GLAPI_EXPORT_BUILD)\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllexport)) extern\n#    else\n#     define GLAPI __declspec(dllexport) extern\n#    endif\n#   else\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllimport)) extern\n#    else\n#     define GLAPI __declspec(dllimport) extern\n#    endif\n#   endif\n#  elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD)\n#   define GLAPI __attribute__ ((visibility (\"default\"))) extern\n#  else\n#   define GLAPI extern\n#  endif\n# else\n#  define GLAPI extern\n# endif\n#endif\n\nGLAPI struct gladGLversionStruct GLVersion;\nGLAPI int gladLoadGLES2Loader(GLADloadproc);\n\n#include <khrplatform_gles3.h>\ntypedef unsigned int GLenum;\ntypedef unsigned char GLboolean;\ntypedef unsigned int GLbitfield;\ntypedef void GLvoid;\ntypedef khronos_int8_t GLbyte;\ntypedef khronos_uint8_t GLubyte;\ntypedef khronos_int16_t GLshort;\ntypedef khronos_uint16_t GLushort;\ntypedef int GLint;\ntypedef unsigned int GLuint;\ntypedef khronos_int32_t GLclampx;\ntypedef int GLsizei;\ntypedef khronos_float_t GLfloat;\ntypedef khronos_float_t GLclampf;\ntypedef double GLdouble;\ntypedef double GLclampd;\ntypedef void *GLeglClientBufferEXT;\ntypedef void *GLeglImageOES;\ntypedef char GLchar;\ntypedef char GLcharARB;\n#ifdef __APPLE__\ntypedef void *GLhandleARB;\n#else\ntypedef unsigned int GLhandleARB;\n#endif\ntypedef khronos_uint16_t GLhalf;\ntypedef khronos_uint16_t GLhalfARB;\ntypedef khronos_int32_t GLfixed;\ntypedef khronos_intptr_t GLintptr;\ntypedef khronos_intptr_t GLintptrARB;\ntypedef khronos_ssize_t GLsizeiptr;\ntypedef khronos_ssize_t GLsizeiptrARB;\ntypedef khronos_int64_t GLint64;\ntypedef khronos_int64_t GLint64EXT;\ntypedef khronos_uint64_t GLuint64;\ntypedef khronos_uint64_t GLuint64EXT;\ntypedef struct __GLsync *GLsync;\nstruct _cl_context;\nstruct _cl_event;\ntypedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);\ntypedef unsigned short GLhalfNV;\ntypedef GLintptr GLvdpauSurfaceNV;\ntypedef void (APIENTRY *GLVULKANPROCNV)(void);\n#define GL_DEPTH_BUFFER_BIT 0x00000100\n#define GL_STENCIL_BUFFER_BIT 0x00000400\n#define GL_COLOR_BUFFER_BIT 0x00004000\n#define GL_FALSE 0\n#define GL_TRUE 1\n#define GL_POINTS 0x0000\n#define GL_LINES 0x0001\n#define GL_LINE_LOOP 0x0002\n#define GL_LINE_STRIP 0x0003\n#define GL_TRIANGLES 0x0004\n#define GL_TRIANGLE_STRIP 0x0005\n#define GL_TRIANGLE_FAN 0x0006\n#define GL_ZERO 0\n#define GL_ONE 1\n#define GL_SRC_COLOR 0x0300\n#define GL_ONE_MINUS_SRC_COLOR 0x0301\n#define GL_SRC_ALPHA 0x0302\n#define GL_ONE_MINUS_SRC_ALPHA 0x0303\n#define GL_DST_ALPHA 0x0304\n#define GL_ONE_MINUS_DST_ALPHA 0x0305\n#define GL_DST_COLOR 0x0306\n#define GL_ONE_MINUS_DST_COLOR 0x0307\n#define GL_SRC_ALPHA_SATURATE 0x0308\n#define GL_FUNC_ADD 0x8006\n#define GL_BLEND_EQUATION 0x8009\n#define GL_BLEND_EQUATION_RGB 0x8009\n#define GL_BLEND_EQUATION_ALPHA 0x883D\n#define GL_FUNC_SUBTRACT 0x800A\n#define GL_FUNC_REVERSE_SUBTRACT 0x800B\n#define GL_BLEND_DST_RGB 0x80C8\n#define GL_BLEND_SRC_RGB 0x80C9\n#define GL_BLEND_DST_ALPHA 0x80CA\n#define GL_BLEND_SRC_ALPHA 0x80CB\n#define GL_CONSTANT_COLOR 0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002\n#define GL_CONSTANT_ALPHA 0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004\n#define GL_BLEND_COLOR 0x8005\n#define GL_ARRAY_BUFFER 0x8892\n#define GL_ELEMENT_ARRAY_BUFFER 0x8893\n#define GL_ARRAY_BUFFER_BINDING 0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895\n#define GL_STREAM_DRAW 0x88E0\n#define GL_STATIC_DRAW 0x88E4\n#define GL_DYNAMIC_DRAW 0x88E8\n#define GL_BUFFER_SIZE 0x8764\n#define GL_BUFFER_USAGE 0x8765\n#define GL_CURRENT_VERTEX_ATTRIB 0x8626\n#define GL_FRONT 0x0404\n#define GL_BACK 0x0405\n#define GL_FRONT_AND_BACK 0x0408\n#define GL_TEXTURE_2D 0x0DE1\n#define GL_CULL_FACE 0x0B44\n#define GL_BLEND 0x0BE2\n#define GL_DITHER 0x0BD0\n#define GL_STENCIL_TEST 0x0B90\n#define GL_DEPTH_TEST 0x0B71\n#define GL_SCISSOR_TEST 0x0C11\n#define GL_POLYGON_OFFSET_FILL 0x8037\n#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E\n#define GL_SAMPLE_COVERAGE 0x80A0\n#define GL_NO_ERROR 0\n#define GL_INVALID_ENUM 0x0500\n#define GL_INVALID_VALUE 0x0501\n#define GL_INVALID_OPERATION 0x0502\n#define GL_OUT_OF_MEMORY 0x0505\n#define GL_CW 0x0900\n#define GL_CCW 0x0901\n#define GL_LINE_WIDTH 0x0B21\n#define GL_ALIASED_POINT_SIZE_RANGE 0x846D\n#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E\n#define GL_CULL_FACE_MODE 0x0B45\n#define GL_FRONT_FACE 0x0B46\n#define GL_DEPTH_RANGE 0x0B70\n#define GL_DEPTH_WRITEMASK 0x0B72\n#define GL_DEPTH_CLEAR_VALUE 0x0B73\n#define GL_DEPTH_FUNC 0x0B74\n#define GL_STENCIL_CLEAR_VALUE 0x0B91\n#define GL_STENCIL_FUNC 0x0B92\n#define GL_STENCIL_FAIL 0x0B94\n#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95\n#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96\n#define GL_STENCIL_REF 0x0B97\n#define GL_STENCIL_VALUE_MASK 0x0B93\n#define GL_STENCIL_WRITEMASK 0x0B98\n#define GL_STENCIL_BACK_FUNC 0x8800\n#define GL_STENCIL_BACK_FAIL 0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803\n#define GL_STENCIL_BACK_REF 0x8CA3\n#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4\n#define GL_STENCIL_BACK_WRITEMASK 0x8CA5\n#define GL_VIEWPORT 0x0BA2\n#define GL_SCISSOR_BOX 0x0C10\n#define GL_COLOR_CLEAR_VALUE 0x0C22\n#define GL_COLOR_WRITEMASK 0x0C23\n#define GL_UNPACK_ALIGNMENT 0x0CF5\n#define GL_PACK_ALIGNMENT 0x0D05\n#define GL_MAX_TEXTURE_SIZE 0x0D33\n#define GL_MAX_VIEWPORT_DIMS 0x0D3A\n#define GL_SUBPIXEL_BITS 0x0D50\n#define GL_RED_BITS 0x0D52\n#define GL_GREEN_BITS 0x0D53\n#define GL_BLUE_BITS 0x0D54\n#define GL_ALPHA_BITS 0x0D55\n#define GL_DEPTH_BITS 0x0D56\n#define GL_STENCIL_BITS 0x0D57\n#define GL_POLYGON_OFFSET_UNITS 0x2A00\n#define GL_POLYGON_OFFSET_FACTOR 0x8038\n#define GL_TEXTURE_BINDING_2D 0x8069\n#define GL_SAMPLE_BUFFERS 0x80A8\n#define GL_SAMPLES 0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE 0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT 0x80AB\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3\n#define GL_DONT_CARE 0x1100\n#define GL_FASTEST 0x1101\n#define GL_NICEST 0x1102\n#define GL_GENERATE_MIPMAP_HINT 0x8192\n#define GL_BYTE 0x1400\n#define GL_UNSIGNED_BYTE 0x1401\n#define GL_SHORT 0x1402\n#define GL_UNSIGNED_SHORT 0x1403\n#define GL_INT 0x1404\n#define GL_UNSIGNED_INT 0x1405\n#define GL_FLOAT 0x1406\n#define GL_FIXED 0x140C\n#define GL_DEPTH_COMPONENT 0x1902\n#define GL_ALPHA 0x1906\n#define GL_RGB 0x1907\n#define GL_RGBA 0x1908\n#define GL_LUMINANCE 0x1909\n#define GL_LUMINANCE_ALPHA 0x190A\n#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034\n#define GL_UNSIGNED_SHORT_5_6_5 0x8363\n#define GL_FRAGMENT_SHADER 0x8B30\n#define GL_VERTEX_SHADER 0x8B31\n#define GL_MAX_VERTEX_ATTRIBS 0x8869\n#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB\n#define GL_MAX_VARYING_VECTORS 0x8DFC\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C\n#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872\n#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD\n#define GL_SHADER_TYPE 0x8B4F\n#define GL_DELETE_STATUS 0x8B80\n#define GL_LINK_STATUS 0x8B82\n#define GL_VALIDATE_STATUS 0x8B83\n#define GL_ATTACHED_SHADERS 0x8B85\n#define GL_ACTIVE_UNIFORMS 0x8B86\n#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87\n#define GL_ACTIVE_ATTRIBUTES 0x8B89\n#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A\n#define GL_SHADING_LANGUAGE_VERSION 0x8B8C\n#define GL_CURRENT_PROGRAM 0x8B8D\n#define GL_NEVER 0x0200\n#define GL_LESS 0x0201\n#define GL_EQUAL 0x0202\n#define GL_LEQUAL 0x0203\n#define GL_GREATER 0x0204\n#define GL_NOTEQUAL 0x0205\n#define GL_GEQUAL 0x0206\n#define GL_ALWAYS 0x0207\n#define GL_KEEP 0x1E00\n#define GL_REPLACE 0x1E01\n#define GL_INCR 0x1E02\n#define GL_DECR 0x1E03\n#define GL_INVERT 0x150A\n#define GL_INCR_WRAP 0x8507\n#define GL_DECR_WRAP 0x8508\n#define GL_VENDOR 0x1F00\n#define GL_RENDERER 0x1F01\n#define GL_VERSION 0x1F02\n#define GL_EXTENSIONS 0x1F03\n#define GL_NEAREST 0x2600\n#define GL_LINEAR 0x2601\n#define GL_NEAREST_MIPMAP_NEAREST 0x2700\n#define GL_LINEAR_MIPMAP_NEAREST 0x2701\n#define GL_NEAREST_MIPMAP_LINEAR 0x2702\n#define GL_LINEAR_MIPMAP_LINEAR 0x2703\n#define GL_TEXTURE_MAG_FILTER 0x2800\n#define GL_TEXTURE_MIN_FILTER 0x2801\n#define GL_TEXTURE_WRAP_S 0x2802\n#define GL_TEXTURE_WRAP_T 0x2803\n#define GL_TEXTURE 0x1702\n#define GL_TEXTURE_CUBE_MAP 0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C\n#define GL_TEXTURE0 0x84C0\n#define GL_TEXTURE1 0x84C1\n#define GL_TEXTURE2 0x84C2\n#define GL_TEXTURE3 0x84C3\n#define GL_TEXTURE4 0x84C4\n#define GL_TEXTURE5 0x84C5\n#define GL_TEXTURE6 0x84C6\n#define GL_TEXTURE7 0x84C7\n#define GL_TEXTURE8 0x84C8\n#define GL_TEXTURE9 0x84C9\n#define GL_TEXTURE10 0x84CA\n#define GL_TEXTURE11 0x84CB\n#define GL_TEXTURE12 0x84CC\n#define GL_TEXTURE13 0x84CD\n#define GL_TEXTURE14 0x84CE\n#define GL_TEXTURE15 0x84CF\n#define GL_TEXTURE16 0x84D0\n#define GL_TEXTURE17 0x84D1\n#define GL_TEXTURE18 0x84D2\n#define GL_TEXTURE19 0x84D3\n#define GL_TEXTURE20 0x84D4\n#define GL_TEXTURE21 0x84D5\n#define GL_TEXTURE22 0x84D6\n#define GL_TEXTURE23 0x84D7\n#define GL_TEXTURE24 0x84D8\n#define GL_TEXTURE25 0x84D9\n#define GL_TEXTURE26 0x84DA\n#define GL_TEXTURE27 0x84DB\n#define GL_TEXTURE28 0x84DC\n#define GL_TEXTURE29 0x84DD\n#define GL_TEXTURE30 0x84DE\n#define GL_TEXTURE31 0x84DF\n#define GL_ACTIVE_TEXTURE 0x84E0\n#define GL_REPEAT 0x2901\n#define GL_CLAMP_TO_EDGE 0x812F\n#define GL_MIRRORED_REPEAT 0x8370\n#define GL_FLOAT_VEC2 0x8B50\n#define GL_FLOAT_VEC3 0x8B51\n#define GL_FLOAT_VEC4 0x8B52\n#define GL_INT_VEC2 0x8B53\n#define GL_INT_VEC3 0x8B54\n#define GL_INT_VEC4 0x8B55\n#define GL_BOOL 0x8B56\n#define GL_BOOL_VEC2 0x8B57\n#define GL_BOOL_VEC3 0x8B58\n#define GL_BOOL_VEC4 0x8B59\n#define GL_FLOAT_MAT2 0x8B5A\n#define GL_FLOAT_MAT3 0x8B5B\n#define GL_FLOAT_MAT4 0x8B5C\n#define GL_SAMPLER_2D 0x8B5E\n#define GL_SAMPLER_CUBE 0x8B60\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F\n#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A\n#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B\n#define GL_COMPILE_STATUS 0x8B81\n#define GL_INFO_LOG_LENGTH 0x8B84\n#define GL_SHADER_SOURCE_LENGTH 0x8B88\n#define GL_SHADER_COMPILER 0x8DFA\n#define GL_SHADER_BINARY_FORMATS 0x8DF8\n#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9\n#define GL_LOW_FLOAT 0x8DF0\n#define GL_MEDIUM_FLOAT 0x8DF1\n#define GL_HIGH_FLOAT 0x8DF2\n#define GL_LOW_INT 0x8DF3\n#define GL_MEDIUM_INT 0x8DF4\n#define GL_HIGH_INT 0x8DF5\n#define GL_FRAMEBUFFER 0x8D40\n#define GL_RENDERBUFFER 0x8D41\n#define GL_RGBA4 0x8056\n#define GL_RGB5_A1 0x8057\n#define GL_RGB565 0x8D62\n#define GL_DEPTH_COMPONENT16 0x81A5\n#define GL_STENCIL_INDEX8 0x8D48\n#define GL_RENDERBUFFER_WIDTH 0x8D42\n#define GL_RENDERBUFFER_HEIGHT 0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44\n#define GL_RENDERBUFFER_RED_SIZE 0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3\n#define GL_COLOR_ATTACHMENT0 0x8CE0\n#define GL_DEPTH_ATTACHMENT 0x8D00\n#define GL_STENCIL_ATTACHMENT 0x8D20\n#define GL_NONE 0\n#define GL_FRAMEBUFFER_COMPLETE 0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9\n#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD\n#define GL_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_RENDERBUFFER_BINDING 0x8CA7\n#define GL_MAX_RENDERBUFFER_SIZE 0x84E8\n#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506\n#define GL_READ_BUFFER 0x0C02\n#define GL_UNPACK_ROW_LENGTH 0x0CF2\n#define GL_UNPACK_SKIP_ROWS 0x0CF3\n#define GL_UNPACK_SKIP_PIXELS 0x0CF4\n#define GL_PACK_ROW_LENGTH 0x0D02\n#define GL_PACK_SKIP_ROWS 0x0D03\n#define GL_PACK_SKIP_PIXELS 0x0D04\n#define GL_COLOR 0x1800\n#define GL_DEPTH 0x1801\n#define GL_STENCIL 0x1802\n#define GL_RED 0x1903\n#define GL_RGB8 0x8051\n#define GL_RGBA8 0x8058\n#define GL_RGB10_A2 0x8059\n#define GL_TEXTURE_BINDING_3D 0x806A\n#define GL_UNPACK_SKIP_IMAGES 0x806D\n#define GL_UNPACK_IMAGE_HEIGHT 0x806E\n#define GL_TEXTURE_3D 0x806F\n#define GL_TEXTURE_WRAP_R 0x8072\n#define GL_MAX_3D_TEXTURE_SIZE 0x8073\n#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368\n#define GL_MAX_ELEMENTS_VERTICES 0x80E8\n#define GL_MAX_ELEMENTS_INDICES 0x80E9\n#define GL_TEXTURE_MIN_LOD 0x813A\n#define GL_TEXTURE_MAX_LOD 0x813B\n#define GL_TEXTURE_BASE_LEVEL 0x813C\n#define GL_TEXTURE_MAX_LEVEL 0x813D\n#define GL_MIN 0x8007\n#define GL_MAX 0x8008\n#define GL_DEPTH_COMPONENT24 0x81A6\n#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD\n#define GL_TEXTURE_COMPARE_MODE 0x884C\n#define GL_TEXTURE_COMPARE_FUNC 0x884D\n#define GL_CURRENT_QUERY 0x8865\n#define GL_QUERY_RESULT 0x8866\n#define GL_QUERY_RESULT_AVAILABLE 0x8867\n#define GL_BUFFER_MAPPED 0x88BC\n#define GL_BUFFER_MAP_POINTER 0x88BD\n#define GL_STREAM_READ 0x88E1\n#define GL_STREAM_COPY 0x88E2\n#define GL_STATIC_READ 0x88E5\n#define GL_STATIC_COPY 0x88E6\n#define GL_DYNAMIC_READ 0x88E9\n#define GL_DYNAMIC_COPY 0x88EA\n#define GL_MAX_DRAW_BUFFERS 0x8824\n#define GL_DRAW_BUFFER0 0x8825\n#define GL_DRAW_BUFFER1 0x8826\n#define GL_DRAW_BUFFER2 0x8827\n#define GL_DRAW_BUFFER3 0x8828\n#define GL_DRAW_BUFFER4 0x8829\n#define GL_DRAW_BUFFER5 0x882A\n#define GL_DRAW_BUFFER6 0x882B\n#define GL_DRAW_BUFFER7 0x882C\n#define GL_DRAW_BUFFER8 0x882D\n#define GL_DRAW_BUFFER9 0x882E\n#define GL_DRAW_BUFFER10 0x882F\n#define GL_DRAW_BUFFER11 0x8830\n#define GL_DRAW_BUFFER12 0x8831\n#define GL_DRAW_BUFFER13 0x8832\n#define GL_DRAW_BUFFER14 0x8833\n#define GL_DRAW_BUFFER15 0x8834\n#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49\n#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A\n#define GL_SAMPLER_3D 0x8B5F\n#define GL_SAMPLER_2D_SHADOW 0x8B62\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B\n#define GL_PIXEL_PACK_BUFFER 0x88EB\n#define GL_PIXEL_UNPACK_BUFFER 0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF\n#define GL_FLOAT_MAT2x3 0x8B65\n#define GL_FLOAT_MAT2x4 0x8B66\n#define GL_FLOAT_MAT3x2 0x8B67\n#define GL_FLOAT_MAT3x4 0x8B68\n#define GL_FLOAT_MAT4x2 0x8B69\n#define GL_FLOAT_MAT4x3 0x8B6A\n#define GL_SRGB 0x8C40\n#define GL_SRGB8 0x8C41\n#define GL_SRGB8_ALPHA8 0x8C43\n#define GL_COMPARE_REF_TO_TEXTURE 0x884E\n#define GL_MAJOR_VERSION 0x821B\n#define GL_MINOR_VERSION 0x821C\n#define GL_NUM_EXTENSIONS 0x821D\n#define GL_RGBA32F 0x8814\n#define GL_RGB32F 0x8815\n#define GL_RGBA16F 0x881A\n#define GL_RGB16F 0x881B\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD\n#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF\n#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905\n#define GL_MAX_VARYING_COMPONENTS 0x8B4B\n#define GL_TEXTURE_2D_ARRAY 0x8C1A\n#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D\n#define GL_R11F_G11F_B10F 0x8C3A\n#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B\n#define GL_RGB9_E5 0x8C3D\n#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E\n#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80\n#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88\n#define GL_RASTERIZER_DISCARD 0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B\n#define GL_INTERLEAVED_ATTRIBS 0x8C8C\n#define GL_SEPARATE_ATTRIBS 0x8C8D\n#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F\n#define GL_RGBA32UI 0x8D70\n#define GL_RGB32UI 0x8D71\n#define GL_RGBA16UI 0x8D76\n#define GL_RGB16UI 0x8D77\n#define GL_RGBA8UI 0x8D7C\n#define GL_RGB8UI 0x8D7D\n#define GL_RGBA32I 0x8D82\n#define GL_RGB32I 0x8D83\n#define GL_RGBA16I 0x8D88\n#define GL_RGB16I 0x8D89\n#define GL_RGBA8I 0x8D8E\n#define GL_RGB8I 0x8D8F\n#define GL_RED_INTEGER 0x8D94\n#define GL_RGB_INTEGER 0x8D98\n#define GL_RGBA_INTEGER 0x8D99\n#define GL_SAMPLER_2D_ARRAY 0x8DC1\n#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4\n#define GL_SAMPLER_CUBE_SHADOW 0x8DC5\n#define GL_UNSIGNED_INT_VEC2 0x8DC6\n#define GL_UNSIGNED_INT_VEC3 0x8DC7\n#define GL_UNSIGNED_INT_VEC4 0x8DC8\n#define GL_INT_SAMPLER_2D 0x8DCA\n#define GL_INT_SAMPLER_3D 0x8DCB\n#define GL_INT_SAMPLER_CUBE 0x8DCC\n#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF\n#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2\n#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3\n#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4\n#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7\n#define GL_BUFFER_ACCESS_FLAGS 0x911F\n#define GL_BUFFER_MAP_LENGTH 0x9120\n#define GL_BUFFER_MAP_OFFSET 0x9121\n#define GL_DEPTH_COMPONENT32F 0x8CAC\n#define GL_DEPTH32F_STENCIL8 0x8CAD\n#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD\n#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210\n#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211\n#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212\n#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213\n#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214\n#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215\n#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216\n#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217\n#define GL_FRAMEBUFFER_DEFAULT 0x8218\n#define GL_FRAMEBUFFER_UNDEFINED 0x8219\n#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A\n#define GL_DEPTH_STENCIL 0x84F9\n#define GL_UNSIGNED_INT_24_8 0x84FA\n#define GL_DEPTH24_STENCIL8 0x88F0\n#define GL_UNSIGNED_NORMALIZED 0x8C17\n#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_READ_FRAMEBUFFER 0x8CA8\n#define GL_DRAW_FRAMEBUFFER 0x8CA9\n#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA\n#define GL_RENDERBUFFER_SAMPLES 0x8CAB\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4\n#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF\n#define GL_COLOR_ATTACHMENT1 0x8CE1\n#define GL_COLOR_ATTACHMENT2 0x8CE2\n#define GL_COLOR_ATTACHMENT3 0x8CE3\n#define GL_COLOR_ATTACHMENT4 0x8CE4\n#define GL_COLOR_ATTACHMENT5 0x8CE5\n#define GL_COLOR_ATTACHMENT6 0x8CE6\n#define GL_COLOR_ATTACHMENT7 0x8CE7\n#define GL_COLOR_ATTACHMENT8 0x8CE8\n#define GL_COLOR_ATTACHMENT9 0x8CE9\n#define GL_COLOR_ATTACHMENT10 0x8CEA\n#define GL_COLOR_ATTACHMENT11 0x8CEB\n#define GL_COLOR_ATTACHMENT12 0x8CEC\n#define GL_COLOR_ATTACHMENT13 0x8CED\n#define GL_COLOR_ATTACHMENT14 0x8CEE\n#define GL_COLOR_ATTACHMENT15 0x8CEF\n#define GL_COLOR_ATTACHMENT16 0x8CF0\n#define GL_COLOR_ATTACHMENT17 0x8CF1\n#define GL_COLOR_ATTACHMENT18 0x8CF2\n#define GL_COLOR_ATTACHMENT19 0x8CF3\n#define GL_COLOR_ATTACHMENT20 0x8CF4\n#define GL_COLOR_ATTACHMENT21 0x8CF5\n#define GL_COLOR_ATTACHMENT22 0x8CF6\n#define GL_COLOR_ATTACHMENT23 0x8CF7\n#define GL_COLOR_ATTACHMENT24 0x8CF8\n#define GL_COLOR_ATTACHMENT25 0x8CF9\n#define GL_COLOR_ATTACHMENT26 0x8CFA\n#define GL_COLOR_ATTACHMENT27 0x8CFB\n#define GL_COLOR_ATTACHMENT28 0x8CFC\n#define GL_COLOR_ATTACHMENT29 0x8CFD\n#define GL_COLOR_ATTACHMENT30 0x8CFE\n#define GL_COLOR_ATTACHMENT31 0x8CFF\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56\n#define GL_MAX_SAMPLES 0x8D57\n#define GL_HALF_FLOAT 0x140B\n#define GL_MAP_READ_BIT 0x0001\n#define GL_MAP_WRITE_BIT 0x0002\n#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004\n#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008\n#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010\n#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020\n#define GL_RG 0x8227\n#define GL_RG_INTEGER 0x8228\n#define GL_R8 0x8229\n#define GL_RG8 0x822B\n#define GL_R16F 0x822D\n#define GL_R32F 0x822E\n#define GL_RG16F 0x822F\n#define GL_RG32F 0x8230\n#define GL_R8I 0x8231\n#define GL_R8UI 0x8232\n#define GL_R16I 0x8233\n#define GL_R16UI 0x8234\n#define GL_R32I 0x8235\n#define GL_R32UI 0x8236\n#define GL_RG8I 0x8237\n#define GL_RG8UI 0x8238\n#define GL_RG16I 0x8239\n#define GL_RG16UI 0x823A\n#define GL_RG32I 0x823B\n#define GL_RG32UI 0x823C\n#define GL_VERTEX_ARRAY_BINDING 0x85B5\n#define GL_R8_SNORM 0x8F94\n#define GL_RG8_SNORM 0x8F95\n#define GL_RGB8_SNORM 0x8F96\n#define GL_RGBA8_SNORM 0x8F97\n#define GL_SIGNED_NORMALIZED 0x8F9C\n#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69\n#define GL_COPY_READ_BUFFER 0x8F36\n#define GL_COPY_WRITE_BUFFER 0x8F37\n#define GL_COPY_READ_BUFFER_BINDING 0x8F36\n#define GL_COPY_WRITE_BUFFER_BINDING 0x8F37\n#define GL_UNIFORM_BUFFER 0x8A11\n#define GL_UNIFORM_BUFFER_BINDING 0x8A28\n#define GL_UNIFORM_BUFFER_START 0x8A29\n#define GL_UNIFORM_BUFFER_SIZE 0x8A2A\n#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B\n#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D\n#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E\n#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F\n#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30\n#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31\n#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33\n#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34\n#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35\n#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36\n#define GL_UNIFORM_TYPE 0x8A37\n#define GL_UNIFORM_SIZE 0x8A38\n#define GL_UNIFORM_NAME_LENGTH 0x8A39\n#define GL_UNIFORM_BLOCK_INDEX 0x8A3A\n#define GL_UNIFORM_OFFSET 0x8A3B\n#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C\n#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D\n#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E\n#define GL_UNIFORM_BLOCK_BINDING 0x8A3F\n#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40\n#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46\n#define GL_INVALID_INDEX 0xFFFFFFFF\n#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122\n#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125\n#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111\n#define GL_OBJECT_TYPE 0x9112\n#define GL_SYNC_CONDITION 0x9113\n#define GL_SYNC_STATUS 0x9114\n#define GL_SYNC_FLAGS 0x9115\n#define GL_SYNC_FENCE 0x9116\n#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117\n#define GL_UNSIGNALED 0x9118\n#define GL_SIGNALED 0x9119\n#define GL_ALREADY_SIGNALED 0x911A\n#define GL_TIMEOUT_EXPIRED 0x911B\n#define GL_CONDITION_SATISFIED 0x911C\n#define GL_WAIT_FAILED 0x911D\n#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001\n#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE\n#define GL_ANY_SAMPLES_PASSED 0x8C2F\n#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A\n#define GL_SAMPLER_BINDING 0x8919\n#define GL_RGB10_A2UI 0x906F\n#define GL_TEXTURE_SWIZZLE_R 0x8E42\n#define GL_TEXTURE_SWIZZLE_G 0x8E43\n#define GL_TEXTURE_SWIZZLE_B 0x8E44\n#define GL_TEXTURE_SWIZZLE_A 0x8E45\n#define GL_GREEN 0x1904\n#define GL_BLUE 0x1905\n#define GL_INT_2_10_10_10_REV 0x8D9F\n#define GL_TRANSFORM_FEEDBACK 0x8E22\n#define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23\n#define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24\n#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25\n#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257\n#define GL_PROGRAM_BINARY_LENGTH 0x8741\n#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE\n#define GL_PROGRAM_BINARY_FORMATS 0x87FF\n#define GL_COMPRESSED_R11_EAC 0x9270\n#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271\n#define GL_COMPRESSED_RG11_EAC 0x9272\n#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273\n#define GL_COMPRESSED_RGB8_ETC2 0x9274\n#define GL_COMPRESSED_SRGB8_ETC2 0x9275\n#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276\n#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277\n#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278\n#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279\n#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F\n#define GL_MAX_ELEMENT_INDEX 0x8D6B\n#define GL_NUM_SAMPLE_COUNTS 0x9380\n#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF\n#ifndef GL_ES_VERSION_2_0\n#define GL_ES_VERSION_2_0 1\nGLAPI int GLAD_GL_ES_VERSION_2_0;\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture);\nGLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture;\n#define glActiveTexture glad_glActiveTexture\ntypedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLATTACHSHADERPROC glad_glAttachShader;\n#define glAttachShader glad_glAttachShader\ntypedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name);\nGLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation;\n#define glBindAttribLocation glad_glBindAttribLocation\ntypedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);\nGLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer;\n#define glBindBuffer glad_glBindBuffer\ntypedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);\nGLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer;\n#define glBindFramebuffer glad_glBindFramebuffer\ntypedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);\nGLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer;\n#define glBindRenderbuffer glad_glBindRenderbuffer\ntypedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);\nGLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture;\n#define glBindTexture glad_glBindTexture\ntypedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLBLENDCOLORPROC glad_glBlendColor;\n#define glBlendColor glad_glBlendColor\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode);\nGLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation;\n#define glBlendEquation glad_glBlendEquation\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);\nGLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate;\n#define glBlendEquationSeparate glad_glBlendEquationSeparate\ntypedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);\nGLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc;\n#define glBlendFunc glad_glBlendFunc\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\nGLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate;\n#define glBlendFuncSeparate glad_glBlendFuncSeparate\ntypedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI PFNGLBUFFERDATAPROC glad_glBufferData;\n#define glBufferData glad_glBufferData\ntypedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData;\n#define glBufferSubData glad_glBufferSubData\ntypedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);\nGLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus;\n#define glCheckFramebufferStatus glad_glCheckFramebufferStatus\ntypedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask);\nGLAPI PFNGLCLEARPROC glad_glClear;\n#define glClear glad_glClear\ntypedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLCLEARCOLORPROC glad_glClearColor;\n#define glClearColor glad_glClearColor\ntypedef void (APIENTRYP PFNGLCLEARDEPTHFPROC)(GLfloat d);\nGLAPI PFNGLCLEARDEPTHFPROC glad_glClearDepthf;\n#define glClearDepthf glad_glClearDepthf\ntypedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s);\nGLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil;\n#define glClearStencil glad_glClearStencil\ntypedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\nGLAPI PFNGLCOLORMASKPROC glad_glColorMask;\n#define glColorMask glad_glColorMask\ntypedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader);\nGLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader;\n#define glCompileShader glad_glCompileShader\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D;\n#define glCompressedTexImage2D glad_glCompressedTexImage2D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D;\n#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D;\n#define glCopyTexImage2D glad_glCopyTexImage2D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D;\n#define glCopyTexSubImage2D glad_glCopyTexSubImage2D\ntypedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void);\nGLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram;\n#define glCreateProgram glad_glCreateProgram\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type);\nGLAPI PFNGLCREATESHADERPROC glad_glCreateShader;\n#define glCreateShader glad_glCreateShader\ntypedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode);\nGLAPI PFNGLCULLFACEPROC glad_glCullFace;\n#define glCullFace glad_glCullFace\ntypedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers);\nGLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers;\n#define glDeleteBuffers glad_glDeleteBuffers\ntypedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers);\nGLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers;\n#define glDeleteFramebuffers glad_glDeleteFramebuffers\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram;\n#define glDeleteProgram glad_glDeleteProgram\ntypedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers);\nGLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers;\n#define glDeleteRenderbuffers glad_glDeleteRenderbuffers\ntypedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader);\nGLAPI PFNGLDELETESHADERPROC glad_glDeleteShader;\n#define glDeleteShader glad_glDeleteShader\ntypedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures);\nGLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures;\n#define glDeleteTextures glad_glDeleteTextures\ntypedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func);\nGLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc;\n#define glDepthFunc glad_glDepthFunc\ntypedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag);\nGLAPI PFNGLDEPTHMASKPROC glad_glDepthMask;\n#define glDepthMask glad_glDepthMask\ntypedef void (APIENTRYP PFNGLDEPTHRANGEFPROC)(GLfloat n, GLfloat f);\nGLAPI PFNGLDEPTHRANGEFPROC glad_glDepthRangef;\n#define glDepthRangef glad_glDepthRangef\ntypedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLDETACHSHADERPROC glad_glDetachShader;\n#define glDetachShader glad_glDetachShader\ntypedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap);\nGLAPI PFNGLDISABLEPROC glad_glDisable;\n#define glDisable glad_glDisable\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray;\n#define glDisableVertexAttribArray glad_glDisableVertexAttribArray\ntypedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);\nGLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays;\n#define glDrawArrays glad_glDrawArrays\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements;\n#define glDrawElements glad_glDrawElements\ntypedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap);\nGLAPI PFNGLENABLEPROC glad_glEnable;\n#define glEnable glad_glEnable\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray;\n#define glEnableVertexAttribArray glad_glEnableVertexAttribArray\ntypedef void (APIENTRYP PFNGLFINISHPROC)(void);\nGLAPI PFNGLFINISHPROC glad_glFinish;\n#define glFinish glad_glFinish\ntypedef void (APIENTRYP PFNGLFLUSHPROC)(void);\nGLAPI PFNGLFLUSHPROC glad_glFlush;\n#define glFlush glad_glFlush\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer;\n#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D;\n#define glFramebufferTexture2D glad_glFramebufferTexture2D\ntypedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode);\nGLAPI PFNGLFRONTFACEPROC glad_glFrontFace;\n#define glFrontFace glad_glFrontFace\ntypedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers);\nGLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers;\n#define glGenBuffers glad_glGenBuffers\ntypedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target);\nGLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap;\n#define glGenerateMipmap glad_glGenerateMipmap\ntypedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers);\nGLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers;\n#define glGenFramebuffers glad_glGenFramebuffers\ntypedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers);\nGLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers;\n#define glGenRenderbuffers glad_glGenRenderbuffers\ntypedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures);\nGLAPI PFNGLGENTEXTURESPROC glad_glGenTextures;\n#define glGenTextures glad_glGenTextures\ntypedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib;\n#define glGetActiveAttrib glad_glGetActiveAttrib\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform;\n#define glGetActiveUniform glad_glGetActiveUniform\ntypedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\nGLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders;\n#define glGetAttachedShaders glad_glGetAttachedShaders\ntypedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation;\n#define glGetAttribLocation glad_glGetAttribLocation\ntypedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data);\nGLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv;\n#define glGetBooleanv glad_glGetBooleanv\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv;\n#define glGetBufferParameteriv glad_glGetBufferParameteriv\ntypedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void);\nGLAPI PFNGLGETERRORPROC glad_glGetError;\n#define glGetError glad_glGetError\ntypedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data);\nGLAPI PFNGLGETFLOATVPROC glad_glGetFloatv;\n#define glGetFloatv glad_glGetFloatv\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv;\n#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv\ntypedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data);\nGLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv;\n#define glGetIntegerv glad_glGetIntegerv\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params);\nGLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv;\n#define glGetProgramiv glad_glGetProgramiv\ntypedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog;\n#define glGetProgramInfoLog glad_glGetProgramInfoLog\ntypedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv;\n#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv\ntypedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params);\nGLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv;\n#define glGetShaderiv glad_glGetShaderiv\ntypedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog;\n#define glGetShaderInfoLog glad_glGetShaderInfoLog\ntypedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);\nGLAPI PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat;\n#define glGetShaderPrecisionFormat glad_glGetShaderPrecisionFormat\ntypedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\nGLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource;\n#define glGetShaderSource glad_glGetShaderSource\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name);\nGLAPI PFNGLGETSTRINGPROC glad_glGetString;\n#define glGetString glad_glGetString\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv;\n#define glGetTexParameterfv glad_glGetTexParameterfv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv;\n#define glGetTexParameteriv glad_glGetTexParameteriv\ntypedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params);\nGLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv;\n#define glGetUniformfv glad_glGetUniformfv\ntypedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params);\nGLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv;\n#define glGetUniformiv glad_glGetUniformiv\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation;\n#define glGetUniformLocation glad_glGetUniformLocation\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv;\n#define glGetVertexAttribfv glad_glGetVertexAttribfv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv;\n#define glGetVertexAttribiv glad_glGetVertexAttribiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer);\nGLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv;\n#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv\ntypedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode);\nGLAPI PFNGLHINTPROC glad_glHint;\n#define glHint glad_glHint\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer);\nGLAPI PFNGLISBUFFERPROC glad_glIsBuffer;\n#define glIsBuffer glad_glIsBuffer\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap);\nGLAPI PFNGLISENABLEDPROC glad_glIsEnabled;\n#define glIsEnabled glad_glIsEnabled\ntypedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer);\nGLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer;\n#define glIsFramebuffer glad_glIsFramebuffer\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program);\nGLAPI PFNGLISPROGRAMPROC glad_glIsProgram;\n#define glIsProgram glad_glIsProgram\ntypedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer);\nGLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer;\n#define glIsRenderbuffer glad_glIsRenderbuffer\ntypedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader);\nGLAPI PFNGLISSHADERPROC glad_glIsShader;\n#define glIsShader glad_glIsShader\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture);\nGLAPI PFNGLISTEXTUREPROC glad_glIsTexture;\n#define glIsTexture glad_glIsTexture\ntypedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width);\nGLAPI PFNGLLINEWIDTHPROC glad_glLineWidth;\n#define glLineWidth glad_glLineWidth\ntypedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program);\nGLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram;\n#define glLinkProgram glad_glLinkProgram\ntypedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei;\n#define glPixelStorei glad_glPixelStorei\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);\nGLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset;\n#define glPolygonOffset glad_glPolygonOffset\ntypedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);\nGLAPI PFNGLREADPIXELSPROC glad_glReadPixels;\n#define glReadPixels glad_glReadPixels\ntypedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC)(void);\nGLAPI PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler;\n#define glReleaseShaderCompiler glad_glReleaseShaderCompiler\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage;\n#define glRenderbufferStorage glad_glRenderbufferStorage\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);\nGLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage;\n#define glSampleCoverage glad_glSampleCoverage\ntypedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLSCISSORPROC glad_glScissor;\n#define glScissor glad_glScissor\ntypedef void (APIENTRYP PFNGLSHADERBINARYPROC)(GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);\nGLAPI PFNGLSHADERBINARYPROC glad_glShaderBinary;\n#define glShaderBinary glad_glShaderBinary\ntypedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\nGLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource;\n#define glShaderSource glad_glShaderSource\ntypedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc;\n#define glStencilFunc glad_glStencilFunc\ntypedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate;\n#define glStencilFuncSeparate glad_glStencilFuncSeparate\ntypedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask);\nGLAPI PFNGLSTENCILMASKPROC glad_glStencilMask;\n#define glStencilMask glad_glStencilMask\ntypedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);\nGLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate;\n#define glStencilMaskSeparate glad_glStencilMaskSeparate\ntypedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);\nGLAPI PFNGLSTENCILOPPROC glad_glStencilOp;\n#define glStencilOp glad_glStencilOp\ntypedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate;\n#define glStencilOpSeparate glad_glStencilOpSeparate\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D;\n#define glTexImage2D glad_glTexImage2D\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);\nGLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf;\n#define glTexParameterf glad_glTexParameterf\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params);\nGLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv;\n#define glTexParameterfv glad_glTexParameterfv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);\nGLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri;\n#define glTexParameteri glad_glTexParameteri\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv;\n#define glTexParameteriv glad_glTexParameteriv\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D;\n#define glTexSubImage2D glad_glTexSubImage2D\ntypedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);\nGLAPI PFNGLUNIFORM1FPROC glad_glUniform1f;\n#define glUniform1f glad_glUniform1f\ntypedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv;\n#define glUniform1fv glad_glUniform1fv\ntypedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0);\nGLAPI PFNGLUNIFORM1IPROC glad_glUniform1i;\n#define glUniform1i glad_glUniform1i\ntypedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv;\n#define glUniform1iv glad_glUniform1iv\ntypedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);\nGLAPI PFNGLUNIFORM2FPROC glad_glUniform2f;\n#define glUniform2f glad_glUniform2f\ntypedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv;\n#define glUniform2fv glad_glUniform2fv\ntypedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);\nGLAPI PFNGLUNIFORM2IPROC glad_glUniform2i;\n#define glUniform2i glad_glUniform2i\ntypedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv;\n#define glUniform2iv glad_glUniform2iv\ntypedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI PFNGLUNIFORM3FPROC glad_glUniform3f;\n#define glUniform3f glad_glUniform3f\ntypedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv;\n#define glUniform3fv glad_glUniform3fv\ntypedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI PFNGLUNIFORM3IPROC glad_glUniform3i;\n#define glUniform3i glad_glUniform3i\ntypedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv;\n#define glUniform3iv glad_glUniform3iv\ntypedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI PFNGLUNIFORM4FPROC glad_glUniform4f;\n#define glUniform4f glad_glUniform4f\ntypedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv;\n#define glUniform4fv glad_glUniform4fv\ntypedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI PFNGLUNIFORM4IPROC glad_glUniform4i;\n#define glUniform4i glad_glUniform4i\ntypedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv;\n#define glUniform4iv glad_glUniform4iv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv;\n#define glUniformMatrix2fv glad_glUniformMatrix2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv;\n#define glUniformMatrix3fv glad_glUniformMatrix3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv;\n#define glUniformMatrix4fv glad_glUniformMatrix4fv\ntypedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram;\n#define glUseProgram glad_glUseProgram\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram;\n#define glValidateProgram glad_glValidateProgram\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);\nGLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f;\n#define glVertexAttrib1f glad_glVertexAttrib1f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv;\n#define glVertexAttrib1fv glad_glVertexAttrib1fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);\nGLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f;\n#define glVertexAttrib2f glad_glVertexAttrib2f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv;\n#define glVertexAttrib2fv glad_glVertexAttrib2fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f;\n#define glVertexAttrib3f glad_glVertexAttrib3f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv;\n#define glVertexAttrib3fv glad_glVertexAttrib3fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f;\n#define glVertexAttrib4f glad_glVertexAttrib4f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv;\n#define glVertexAttrib4fv glad_glVertexAttrib4fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer;\n#define glVertexAttribPointer glad_glVertexAttribPointer\ntypedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLVIEWPORTPROC glad_glViewport;\n#define glViewport glad_glViewport\n#endif\n#ifndef GL_ES_VERSION_3_0\n#define GL_ES_VERSION_3_0 1\nGLAPI int GLAD_GL_ES_VERSION_3_0;\ntypedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src);\nGLAPI PFNGLREADBUFFERPROC glad_glReadBuffer;\n#define glReadBuffer glad_glReadBuffer\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements;\n#define glDrawRangeElements glad_glDrawRangeElements\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D;\n#define glTexImage3D glad_glTexImage3D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D;\n#define glTexSubImage3D glad_glTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D;\n#define glCopyTexSubImage3D glad_glCopyTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D;\n#define glCompressedTexImage3D glad_glCompressedTexImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D;\n#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D\ntypedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids);\nGLAPI PFNGLGENQUERIESPROC glad_glGenQueries;\n#define glGenQueries glad_glGenQueries\ntypedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids);\nGLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries;\n#define glDeleteQueries glad_glDeleteQueries\ntypedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id);\nGLAPI PFNGLISQUERYPROC glad_glIsQuery;\n#define glIsQuery glad_glIsQuery\ntypedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id);\nGLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery;\n#define glBeginQuery glad_glBeginQuery\ntypedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target);\nGLAPI PFNGLENDQUERYPROC glad_glEndQuery;\n#define glEndQuery glad_glEndQuery\ntypedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv;\n#define glGetQueryiv glad_glGetQueryiv\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params);\nGLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv;\n#define glGetQueryObjectuiv glad_glGetQueryObjectuiv\ntypedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target);\nGLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer;\n#define glUnmapBuffer glad_glUnmapBuffer\ntypedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params);\nGLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv;\n#define glGetBufferPointerv glad_glGetBufferPointerv\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs);\nGLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers;\n#define glDrawBuffers glad_glDrawBuffers\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv;\n#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv;\n#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv;\n#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv;\n#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv;\n#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;\n#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv\ntypedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer;\n#define glBlitFramebuffer glad_glBlitFramebuffer\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample;\n#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;\n#define glFramebufferTextureLayer glad_glFramebufferTextureLayer\ntypedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange;\n#define glMapBufferRange glad_glMapBufferRange\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length);\nGLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange;\n#define glFlushMappedBufferRange glad_glFlushMappedBufferRange\ntypedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray;\n#define glBindVertexArray glad_glBindVertexArray\ntypedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays);\nGLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays;\n#define glDeleteVertexArrays glad_glDeleteVertexArrays\ntypedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays);\nGLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays;\n#define glGenVertexArrays glad_glGenVertexArrays\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray;\n#define glIsVertexArray glad_glIsVertexArray\ntypedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data);\nGLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v;\n#define glGetIntegeri_v glad_glGetIntegeri_v\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode);\nGLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback;\n#define glBeginTransformFeedback glad_glBeginTransformFeedback\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback;\n#define glEndTransformFeedback glad_glEndTransformFeedback\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange;\n#define glBindBufferRange glad_glBindBufferRange\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer);\nGLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase;\n#define glBindBufferBase glad_glBindBufferBase\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\nGLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings;\n#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying;\n#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer;\n#define glVertexAttribIPointer glad_glVertexAttribIPointer\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv;\n#define glGetVertexAttribIiv glad_glGetVertexAttribIiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params);\nGLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv;\n#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i;\n#define glVertexAttribI4i glad_glVertexAttribI4i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui;\n#define glVertexAttribI4ui glad_glVertexAttribI4ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv;\n#define glVertexAttribI4iv glad_glVertexAttribI4iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv;\n#define glVertexAttribI4uiv glad_glVertexAttribI4uiv\ntypedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params);\nGLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv;\n#define glGetUniformuiv glad_glGetUniformuiv\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation;\n#define glGetFragDataLocation glad_glGetFragDataLocation\ntypedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0);\nGLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui;\n#define glUniform1ui glad_glUniform1ui\ntypedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1);\nGLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui;\n#define glUniform2ui glad_glUniform2ui\ntypedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui;\n#define glUniform3ui glad_glUniform3ui\ntypedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui;\n#define glUniform4ui glad_glUniform4ui\ntypedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv;\n#define glUniform1uiv glad_glUniform1uiv\ntypedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv;\n#define glUniform2uiv glad_glUniform2uiv\ntypedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv;\n#define glUniform3uiv glad_glUniform3uiv\ntypedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv;\n#define glUniform4uiv glad_glUniform4uiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value);\nGLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv;\n#define glClearBufferiv glad_glClearBufferiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value);\nGLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv;\n#define glClearBufferuiv glad_glClearBufferuiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value);\nGLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv;\n#define glClearBufferfv glad_glClearBufferfv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\nGLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi;\n#define glClearBufferfi glad_glClearBufferfi\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index);\nGLAPI PFNGLGETSTRINGIPROC glad_glGetStringi;\n#define glGetStringi glad_glGetStringi\ntypedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData;\n#define glCopyBufferSubData glad_glCopyBufferSubData\ntypedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);\nGLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices;\n#define glGetUniformIndices glad_glGetUniformIndices\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv;\n#define glGetActiveUniformsiv glad_glGetActiveUniformsiv\ntypedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName);\nGLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex;\n#define glGetUniformBlockIndex glad_glGetUniformBlockIndex\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv;\n#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName;\n#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName\ntypedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);\nGLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding;\n#define glUniformBlockBinding glad_glUniformBlockBinding\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);\nGLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced;\n#define glDrawArraysInstanced glad_glDrawArraysInstanced\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);\nGLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced;\n#define glDrawElementsInstanced glad_glDrawElementsInstanced\ntypedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags);\nGLAPI PFNGLFENCESYNCPROC glad_glFenceSync;\n#define glFenceSync glad_glFenceSync\ntypedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync);\nGLAPI PFNGLISSYNCPROC glad_glIsSync;\n#define glIsSync glad_glIsSync\ntypedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync);\nGLAPI PFNGLDELETESYNCPROC glad_glDeleteSync;\n#define glDeleteSync glad_glDeleteSync\ntypedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync;\n#define glClientWaitSync glad_glClientWaitSync\ntypedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLWAITSYNCPROC glad_glWaitSync;\n#define glWaitSync glad_glWaitSync\ntypedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data);\nGLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v;\n#define glGetInteger64v glad_glGetInteger64v\ntypedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\nGLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv;\n#define glGetSynciv glad_glGetSynciv\ntypedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data);\nGLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v;\n#define glGetInteger64i_v glad_glGetInteger64i_v\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params);\nGLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v;\n#define glGetBufferParameteri64v glad_glGetBufferParameteri64v\ntypedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers);\nGLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers;\n#define glGenSamplers glad_glGenSamplers\ntypedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers);\nGLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers;\n#define glDeleteSamplers glad_glDeleteSamplers\ntypedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler);\nGLAPI PFNGLISSAMPLERPROC glad_glIsSampler;\n#define glIsSampler glad_glIsSampler\ntypedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler);\nGLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler;\n#define glBindSampler glad_glBindSampler\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param);\nGLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri;\n#define glSamplerParameteri glad_glSamplerParameteri\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param);\nGLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv;\n#define glSamplerParameteriv glad_glSamplerParameteriv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param);\nGLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf;\n#define glSamplerParameterf glad_glSamplerParameterf\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param);\nGLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv;\n#define glSamplerParameterfv glad_glSamplerParameterfv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv;\n#define glGetSamplerParameteriv glad_glGetSamplerParameteriv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv;\n#define glGetSamplerParameterfv glad_glGetSamplerParameterfv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor);\nGLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor;\n#define glVertexAttribDivisor glad_glVertexAttribDivisor\ntypedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC)(GLenum target, GLuint id);\nGLAPI PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback;\n#define glBindTransformFeedback glad_glBindTransformFeedback\ntypedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC)(GLsizei n, const GLuint *ids);\nGLAPI PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks;\n#define glDeleteTransformFeedbacks glad_glDeleteTransformFeedbacks\ntypedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC)(GLsizei n, GLuint *ids);\nGLAPI PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks;\n#define glGenTransformFeedbacks glad_glGenTransformFeedbacks\ntypedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC)(GLuint id);\nGLAPI PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback;\n#define glIsTransformFeedback glad_glIsTransformFeedback\ntypedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback;\n#define glPauseTransformFeedback glad_glPauseTransformFeedback\ntypedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback;\n#define glResumeTransformFeedback glad_glResumeTransformFeedback\ntypedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);\nGLAPI PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary;\n#define glGetProgramBinary glad_glGetProgramBinary\ntypedef void (APIENTRYP PFNGLPROGRAMBINARYPROC)(GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);\nGLAPI PFNGLPROGRAMBINARYPROC glad_glProgramBinary;\n#define glProgramBinary glad_glProgramBinary\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC)(GLuint program, GLenum pname, GLint value);\nGLAPI PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri;\n#define glProgramParameteri glad_glProgramParameteri\ntypedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments);\nGLAPI PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer;\n#define glInvalidateFramebuffer glad_glInvalidateFramebuffer\ntypedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC)(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer;\n#define glInvalidateSubFramebuffer glad_glInvalidateSubFramebuffer\ntypedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D;\n#define glTexStorage2D glad_glTexStorage2D\ntypedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC)(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D;\n#define glTexStorage3D glad_glTexStorage3D\ntypedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC)(GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);\nGLAPI PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ;\n#define glGetInternalformativ glad_glGetInternalformativ\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/glad/glad_old.c",
    "content": "/*\n\n    OpenGL loader generated by glad 0.1.34 on Tue Jul  6 15:41:26 2021.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gl=3.3\n    Profile: compatibility\n    Extensions:\n\n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"compatibility\" --api=\"gl=3.3\" --generator=\"c\" --spec=\"gl\" --extensions=\"\"\n    Online:\n        https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D3.3\n*/\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <glad.h>\n\nstatic void* get_proc(const char *namez);\n\n#if defined(_WIN32) || defined(__CYGWIN__)\n#ifndef _WINDOWS_\n#undef APIENTRY\n#endif\n#include <windows.h>\nstatic HMODULE libGL;\n\ntypedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*);\nstatic PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;\n\n#ifdef _MSC_VER\n#ifdef __has_include\n  #if __has_include(<winapifamily.h>)\n    #define HAVE_WINAPIFAMILY 1\n  #endif\n#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_\n  #define HAVE_WINAPIFAMILY 1\n#endif\n#endif\n\n#ifdef HAVE_WINAPIFAMILY\n  #include <winapifamily.h>\n  #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)\n    #define IS_UWP 1\n  #endif\n#endif\n\nstatic\nint open_gl(void) {\n#ifndef IS_UWP\n    libGL = LoadLibraryW(L\"opengl32.dll\");\n    if(libGL != NULL) {\n        void (* tmp)(void);\n        tmp = (void(*)(void)) GetProcAddress(libGL, \"wglGetProcAddress\");\n        gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp;\n        return gladGetProcAddressPtr != NULL;\n    }\n#endif\n\n    return 0;\n}\n\nstatic\nvoid close_gl(void) {\n    if(libGL != NULL) {\n        FreeLibrary((HMODULE) libGL);\n        libGL = NULL;\n    }\n}\n#else\n#include <dlfcn.h>\nstatic void* libGL;\n\n#if !defined(__APPLE__) && !defined(__HAIKU__)\ntypedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*);\nstatic PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr;\n#endif\n\nstatic\nint open_gl(void) {\n#ifdef __APPLE__\n    static const char *NAMES[] = {\n        \"../Frameworks/OpenGL.framework/OpenGL\",\n        \"/Library/Frameworks/OpenGL.framework/OpenGL\",\n        \"/System/Library/Frameworks/OpenGL.framework/OpenGL\",\n        \"/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL\"\n    };\n#else\n    static const char *NAMES[] = {\"libGL.so.1\", \"libGL.so\"};\n#endif\n\n    unsigned int index = 0;\n    for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) {\n        libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL);\n\n        if(libGL != NULL) {\n#if defined(__APPLE__) || defined(__HAIKU__)\n            return 1;\n#else\n            gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL,\n                \"glXGetProcAddressARB\");\n            return gladGetProcAddressPtr != NULL;\n#endif\n        }\n    }\n\n    return 0;\n}\n\nstatic\nvoid close_gl(void) {\n    if(libGL != NULL) {\n        dlclose(libGL);\n        libGL = NULL;\n    }\n}\n#endif\n\nstatic\nvoid* get_proc(const char *namez) {\n    void* result = NULL;\n    if(libGL == NULL) return NULL;\n\n#if !defined(__APPLE__) && !defined(__HAIKU__)\n    if(gladGetProcAddressPtr != NULL) {\n        result = gladGetProcAddressPtr(namez);\n    }\n#endif\n    if(result == NULL) {\n#if defined(_WIN32) || defined(__CYGWIN__)\n        result = (void*)GetProcAddress((HMODULE) libGL, namez);\n#else\n        result = dlsym(libGL, namez);\n#endif\n    }\n\n    return result;\n}\n\nint gladLoadGL(void) {\n    int status = 0;\n\n    if(open_gl()) {\n        status = gladLoadGLLoader(&get_proc);\n        close_gl();\n    }\n\n    return status;\n}\n\nstruct gladGLversionStruct GLVersion = { 0, 0 };\n\n#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0)\n#define _GLAD_IS_SOME_NEW_VERSION 1\n#endif\n\nstatic int max_loaded_major;\nstatic int max_loaded_minor;\n\nstatic const char *exts = NULL;\nstatic int num_exts_i = 0;\nstatic char **exts_i = NULL;\n\nstatic int get_exts(void) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        exts = (const char *)glGetString(GL_EXTENSIONS);\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        unsigned int index;\n\n        num_exts_i = 0;\n        glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i);\n        if (num_exts_i > 0) {\n            exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i));\n        }\n\n        if (exts_i == NULL) {\n            return 0;\n        }\n\n        for(index = 0; index < (unsigned)num_exts_i; index++) {\n            const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index);\n            size_t len = strlen(gl_str_tmp);\n\n            char *local_str = (char*)malloc((len+1) * sizeof(char));\n            if(local_str != NULL) {\n                memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char));\n            }\n            exts_i[index] = local_str;\n        }\n    }\n#endif\n    return 1;\n}\n\nstatic void free_exts(void) {\n    if (exts_i != NULL) {\n        int index;\n        for(index = 0; index < num_exts_i; index++) {\n            free((char *)exts_i[index]);\n        }\n        free((void *)exts_i);\n        exts_i = NULL;\n    }\n}\n\nstatic int has_ext(const char *ext) {\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    if(max_loaded_major < 3) {\n#endif\n        const char *extensions;\n        const char *loc;\n        const char *terminator;\n        extensions = exts;\n        if(extensions == NULL || ext == NULL) {\n            return 0;\n        }\n\n        while(1) {\n            loc = strstr(extensions, ext);\n            if(loc == NULL) {\n                return 0;\n            }\n\n            terminator = loc + strlen(ext);\n            if((loc == extensions || *(loc - 1) == ' ') &&\n                (*terminator == ' ' || *terminator == '\\0')) {\n                return 1;\n            }\n            extensions = terminator;\n        }\n#ifdef _GLAD_IS_SOME_NEW_VERSION\n    } else {\n        int index;\n        if(exts_i == NULL) return 0;\n        for(index = 0; index < num_exts_i; index++) {\n            const char *e = exts_i[index];\n\n            if(exts_i[index] != NULL && strcmp(e, ext) == 0) {\n                return 1;\n            }\n        }\n    }\n#endif\n\n    return 0;\n}\nint GLAD_GL_VERSION_1_0 = 0;\nint GLAD_GL_VERSION_1_1 = 0;\nint GLAD_GL_VERSION_1_2 = 0;\nint GLAD_GL_VERSION_1_3 = 0;\nint GLAD_GL_VERSION_1_4 = 0;\nint GLAD_GL_VERSION_1_5 = 0;\nint GLAD_GL_VERSION_2_0 = 0;\nint GLAD_GL_VERSION_2_1 = 0;\nint GLAD_GL_VERSION_3_0 = 0;\nint GLAD_GL_VERSION_3_1 = 0;\nint GLAD_GL_VERSION_3_2 = 0;\nint GLAD_GL_VERSION_3_3 = 0;\nPFNGLACCUMPROC glad_glAccum = NULL;\nPFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL;\nPFNGLALPHAFUNCPROC glad_glAlphaFunc = NULL;\nPFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident = NULL;\nPFNGLARRAYELEMENTPROC glad_glArrayElement = NULL;\nPFNGLATTACHSHADERPROC glad_glAttachShader = NULL;\nPFNGLBEGINPROC glad_glBegin = NULL;\nPFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL;\nPFNGLBEGINQUERYPROC glad_glBeginQuery = NULL;\nPFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL;\nPFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL;\nPFNGLBINDBUFFERPROC glad_glBindBuffer = NULL;\nPFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL;\nPFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL;\nPFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL;\nPFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL;\nPFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL;\nPFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL;\nPFNGLBINDSAMPLERPROC glad_glBindSampler = NULL;\nPFNGLBINDTEXTUREPROC glad_glBindTexture = NULL;\nPFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL;\nPFNGLBITMAPPROC glad_glBitmap = NULL;\nPFNGLBLENDCOLORPROC glad_glBlendColor = NULL;\nPFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL;\nPFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL;\nPFNGLBLENDFUNCPROC glad_glBlendFunc = NULL;\nPFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL;\nPFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL;\nPFNGLBUFFERDATAPROC glad_glBufferData = NULL;\nPFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL;\nPFNGLCALLLISTPROC glad_glCallList = NULL;\nPFNGLCALLLISTSPROC glad_glCallLists = NULL;\nPFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL;\nPFNGLCLAMPCOLORPROC glad_glClampColor = NULL;\nPFNGLCLEARPROC glad_glClear = NULL;\nPFNGLCLEARACCUMPROC glad_glClearAccum = NULL;\nPFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL;\nPFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL;\nPFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL;\nPFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL;\nPFNGLCLEARCOLORPROC glad_glClearColor = NULL;\nPFNGLCLEARDEPTHPROC glad_glClearDepth = NULL;\nPFNGLCLEARINDEXPROC glad_glClearIndex = NULL;\nPFNGLCLEARSTENCILPROC glad_glClearStencil = NULL;\nPFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture = NULL;\nPFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL;\nPFNGLCLIPPLANEPROC glad_glClipPlane = NULL;\nPFNGLCOLOR3BPROC glad_glColor3b = NULL;\nPFNGLCOLOR3BVPROC glad_glColor3bv = NULL;\nPFNGLCOLOR3DPROC glad_glColor3d = NULL;\nPFNGLCOLOR3DVPROC glad_glColor3dv = NULL;\nPFNGLCOLOR3FPROC glad_glColor3f = NULL;\nPFNGLCOLOR3FVPROC glad_glColor3fv = NULL;\nPFNGLCOLOR3IPROC glad_glColor3i = NULL;\nPFNGLCOLOR3IVPROC glad_glColor3iv = NULL;\nPFNGLCOLOR3SPROC glad_glColor3s = NULL;\nPFNGLCOLOR3SVPROC glad_glColor3sv = NULL;\nPFNGLCOLOR3UBPROC glad_glColor3ub = NULL;\nPFNGLCOLOR3UBVPROC glad_glColor3ubv = NULL;\nPFNGLCOLOR3UIPROC glad_glColor3ui = NULL;\nPFNGLCOLOR3UIVPROC glad_glColor3uiv = NULL;\nPFNGLCOLOR3USPROC glad_glColor3us = NULL;\nPFNGLCOLOR3USVPROC glad_glColor3usv = NULL;\nPFNGLCOLOR4BPROC glad_glColor4b = NULL;\nPFNGLCOLOR4BVPROC glad_glColor4bv = NULL;\nPFNGLCOLOR4DPROC glad_glColor4d = NULL;\nPFNGLCOLOR4DVPROC glad_glColor4dv = NULL;\nPFNGLCOLOR4FPROC glad_glColor4f = NULL;\nPFNGLCOLOR4FVPROC glad_glColor4fv = NULL;\nPFNGLCOLOR4IPROC glad_glColor4i = NULL;\nPFNGLCOLOR4IVPROC glad_glColor4iv = NULL;\nPFNGLCOLOR4SPROC glad_glColor4s = NULL;\nPFNGLCOLOR4SVPROC glad_glColor4sv = NULL;\nPFNGLCOLOR4UBPROC glad_glColor4ub = NULL;\nPFNGLCOLOR4UBVPROC glad_glColor4ubv = NULL;\nPFNGLCOLOR4UIPROC glad_glColor4ui = NULL;\nPFNGLCOLOR4UIVPROC glad_glColor4uiv = NULL;\nPFNGLCOLOR4USPROC glad_glColor4us = NULL;\nPFNGLCOLOR4USVPROC glad_glColor4usv = NULL;\nPFNGLCOLORMASKPROC glad_glColorMask = NULL;\nPFNGLCOLORMASKIPROC glad_glColorMaski = NULL;\nPFNGLCOLORMATERIALPROC glad_glColorMaterial = NULL;\nPFNGLCOLORP3UIPROC glad_glColorP3ui = NULL;\nPFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL;\nPFNGLCOLORP4UIPROC glad_glColorP4ui = NULL;\nPFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL;\nPFNGLCOLORPOINTERPROC glad_glColorPointer = NULL;\nPFNGLCOMPILESHADERPROC glad_glCompileShader = NULL;\nPFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL;\nPFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL;\nPFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL;\nPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL;\nPFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL;\nPFNGLCOPYPIXELSPROC glad_glCopyPixels = NULL;\nPFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL;\nPFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL;\nPFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL;\nPFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL;\nPFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL;\nPFNGLCREATESHADERPROC glad_glCreateShader = NULL;\nPFNGLCULLFACEPROC glad_glCullFace = NULL;\nPFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL;\nPFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL;\nPFNGLDELETELISTSPROC glad_glDeleteLists = NULL;\nPFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL;\nPFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL;\nPFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL;\nPFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL;\nPFNGLDELETESHADERPROC glad_glDeleteShader = NULL;\nPFNGLDELETESYNCPROC glad_glDeleteSync = NULL;\nPFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL;\nPFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL;\nPFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL;\nPFNGLDEPTHMASKPROC glad_glDepthMask = NULL;\nPFNGLDEPTHRANGEPROC glad_glDepthRange = NULL;\nPFNGLDETACHSHADERPROC glad_glDetachShader = NULL;\nPFNGLDISABLEPROC glad_glDisable = NULL;\nPFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState = NULL;\nPFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL;\nPFNGLDISABLEIPROC glad_glDisablei = NULL;\nPFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL;\nPFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL;\nPFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL;\nPFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL;\nPFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL;\nPFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL;\nPFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL;\nPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL;\nPFNGLDRAWPIXELSPROC glad_glDrawPixels = NULL;\nPFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL;\nPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL;\nPFNGLEDGEFLAGPROC glad_glEdgeFlag = NULL;\nPFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer = NULL;\nPFNGLEDGEFLAGVPROC glad_glEdgeFlagv = NULL;\nPFNGLENABLEPROC glad_glEnable = NULL;\nPFNGLENABLECLIENTSTATEPROC glad_glEnableClientState = NULL;\nPFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL;\nPFNGLENABLEIPROC glad_glEnablei = NULL;\nPFNGLENDPROC glad_glEnd = NULL;\nPFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL;\nPFNGLENDLISTPROC glad_glEndList = NULL;\nPFNGLENDQUERYPROC glad_glEndQuery = NULL;\nPFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL;\nPFNGLEVALCOORD1DPROC glad_glEvalCoord1d = NULL;\nPFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv = NULL;\nPFNGLEVALCOORD1FPROC glad_glEvalCoord1f = NULL;\nPFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv = NULL;\nPFNGLEVALCOORD2DPROC glad_glEvalCoord2d = NULL;\nPFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv = NULL;\nPFNGLEVALCOORD2FPROC glad_glEvalCoord2f = NULL;\nPFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv = NULL;\nPFNGLEVALMESH1PROC glad_glEvalMesh1 = NULL;\nPFNGLEVALMESH2PROC glad_glEvalMesh2 = NULL;\nPFNGLEVALPOINT1PROC glad_glEvalPoint1 = NULL;\nPFNGLEVALPOINT2PROC glad_glEvalPoint2 = NULL;\nPFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer = NULL;\nPFNGLFENCESYNCPROC glad_glFenceSync = NULL;\nPFNGLFINISHPROC glad_glFinish = NULL;\nPFNGLFLUSHPROC glad_glFlush = NULL;\nPFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL;\nPFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer = NULL;\nPFNGLFOGCOORDDPROC glad_glFogCoordd = NULL;\nPFNGLFOGCOORDDVPROC glad_glFogCoorddv = NULL;\nPFNGLFOGCOORDFPROC glad_glFogCoordf = NULL;\nPFNGLFOGCOORDFVPROC glad_glFogCoordfv = NULL;\nPFNGLFOGFPROC glad_glFogf = NULL;\nPFNGLFOGFVPROC glad_glFogfv = NULL;\nPFNGLFOGIPROC glad_glFogi = NULL;\nPFNGLFOGIVPROC glad_glFogiv = NULL;\nPFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL;\nPFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL;\nPFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL;\nPFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL;\nPFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL;\nPFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL;\nPFNGLFRONTFACEPROC glad_glFrontFace = NULL;\nPFNGLFRUSTUMPROC glad_glFrustum = NULL;\nPFNGLGENBUFFERSPROC glad_glGenBuffers = NULL;\nPFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL;\nPFNGLGENLISTSPROC glad_glGenLists = NULL;\nPFNGLGENQUERIESPROC glad_glGenQueries = NULL;\nPFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL;\nPFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL;\nPFNGLGENTEXTURESPROC glad_glGenTextures = NULL;\nPFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL;\nPFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL;\nPFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL;\nPFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL;\nPFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL;\nPFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL;\nPFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL;\nPFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL;\nPFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL;\nPFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL;\nPFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL;\nPFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL;\nPFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL;\nPFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL;\nPFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL;\nPFNGLGETCLIPPLANEPROC glad_glGetClipPlane = NULL;\nPFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL;\nPFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL;\nPFNGLGETERRORPROC glad_glGetError = NULL;\nPFNGLGETFLOATVPROC glad_glGetFloatv = NULL;\nPFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL;\nPFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL;\nPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL;\nPFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL;\nPFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL;\nPFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL;\nPFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL;\nPFNGLGETLIGHTFVPROC glad_glGetLightfv = NULL;\nPFNGLGETLIGHTIVPROC glad_glGetLightiv = NULL;\nPFNGLGETMAPDVPROC glad_glGetMapdv = NULL;\nPFNGLGETMAPFVPROC glad_glGetMapfv = NULL;\nPFNGLGETMAPIVPROC glad_glGetMapiv = NULL;\nPFNGLGETMATERIALFVPROC glad_glGetMaterialfv = NULL;\nPFNGLGETMATERIALIVPROC glad_glGetMaterialiv = NULL;\nPFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL;\nPFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv = NULL;\nPFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv = NULL;\nPFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv = NULL;\nPFNGLGETPOINTERVPROC glad_glGetPointerv = NULL;\nPFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple = NULL;\nPFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL;\nPFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL;\nPFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL;\nPFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL;\nPFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL;\nPFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL;\nPFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL;\nPFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL;\nPFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL;\nPFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL;\nPFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL;\nPFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL;\nPFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL;\nPFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL;\nPFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL;\nPFNGLGETSTRINGPROC glad_glGetString = NULL;\nPFNGLGETSTRINGIPROC glad_glGetStringi = NULL;\nPFNGLGETSYNCIVPROC glad_glGetSynciv = NULL;\nPFNGLGETTEXENVFVPROC glad_glGetTexEnvfv = NULL;\nPFNGLGETTEXENVIVPROC glad_glGetTexEnviv = NULL;\nPFNGLGETTEXGENDVPROC glad_glGetTexGendv = NULL;\nPFNGLGETTEXGENFVPROC glad_glGetTexGenfv = NULL;\nPFNGLGETTEXGENIVPROC glad_glGetTexGeniv = NULL;\nPFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL;\nPFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL;\nPFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL;\nPFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL;\nPFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL;\nPFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL;\nPFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL;\nPFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL;\nPFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL;\nPFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL;\nPFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL;\nPFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL;\nPFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL;\nPFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL;\nPFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL;\nPFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL;\nPFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL;\nPFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL;\nPFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL;\nPFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL;\nPFNGLHINTPROC glad_glHint = NULL;\nPFNGLINDEXMASKPROC glad_glIndexMask = NULL;\nPFNGLINDEXPOINTERPROC glad_glIndexPointer = NULL;\nPFNGLINDEXDPROC glad_glIndexd = NULL;\nPFNGLINDEXDVPROC glad_glIndexdv = NULL;\nPFNGLINDEXFPROC glad_glIndexf = NULL;\nPFNGLINDEXFVPROC glad_glIndexfv = NULL;\nPFNGLINDEXIPROC glad_glIndexi = NULL;\nPFNGLINDEXIVPROC glad_glIndexiv = NULL;\nPFNGLINDEXSPROC glad_glIndexs = NULL;\nPFNGLINDEXSVPROC glad_glIndexsv = NULL;\nPFNGLINDEXUBPROC glad_glIndexub = NULL;\nPFNGLINDEXUBVPROC glad_glIndexubv = NULL;\nPFNGLINITNAMESPROC glad_glInitNames = NULL;\nPFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays = NULL;\nPFNGLISBUFFERPROC glad_glIsBuffer = NULL;\nPFNGLISENABLEDPROC glad_glIsEnabled = NULL;\nPFNGLISENABLEDIPROC glad_glIsEnabledi = NULL;\nPFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL;\nPFNGLISLISTPROC glad_glIsList = NULL;\nPFNGLISPROGRAMPROC glad_glIsProgram = NULL;\nPFNGLISQUERYPROC glad_glIsQuery = NULL;\nPFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL;\nPFNGLISSAMPLERPROC glad_glIsSampler = NULL;\nPFNGLISSHADERPROC glad_glIsShader = NULL;\nPFNGLISSYNCPROC glad_glIsSync = NULL;\nPFNGLISTEXTUREPROC glad_glIsTexture = NULL;\nPFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL;\nPFNGLLIGHTMODELFPROC glad_glLightModelf = NULL;\nPFNGLLIGHTMODELFVPROC glad_glLightModelfv = NULL;\nPFNGLLIGHTMODELIPROC glad_glLightModeli = NULL;\nPFNGLLIGHTMODELIVPROC glad_glLightModeliv = NULL;\nPFNGLLIGHTFPROC glad_glLightf = NULL;\nPFNGLLIGHTFVPROC glad_glLightfv = NULL;\nPFNGLLIGHTIPROC glad_glLighti = NULL;\nPFNGLLIGHTIVPROC glad_glLightiv = NULL;\nPFNGLLINESTIPPLEPROC glad_glLineStipple = NULL;\nPFNGLLINEWIDTHPROC glad_glLineWidth = NULL;\nPFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL;\nPFNGLLISTBASEPROC glad_glListBase = NULL;\nPFNGLLOADIDENTITYPROC glad_glLoadIdentity = NULL;\nPFNGLLOADMATRIXDPROC glad_glLoadMatrixd = NULL;\nPFNGLLOADMATRIXFPROC glad_glLoadMatrixf = NULL;\nPFNGLLOADNAMEPROC glad_glLoadName = NULL;\nPFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd = NULL;\nPFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf = NULL;\nPFNGLLOGICOPPROC glad_glLogicOp = NULL;\nPFNGLMAP1DPROC glad_glMap1d = NULL;\nPFNGLMAP1FPROC glad_glMap1f = NULL;\nPFNGLMAP2DPROC glad_glMap2d = NULL;\nPFNGLMAP2FPROC glad_glMap2f = NULL;\nPFNGLMAPBUFFERPROC glad_glMapBuffer = NULL;\nPFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL;\nPFNGLMAPGRID1DPROC glad_glMapGrid1d = NULL;\nPFNGLMAPGRID1FPROC glad_glMapGrid1f = NULL;\nPFNGLMAPGRID2DPROC glad_glMapGrid2d = NULL;\nPFNGLMAPGRID2FPROC glad_glMapGrid2f = NULL;\nPFNGLMATERIALFPROC glad_glMaterialf = NULL;\nPFNGLMATERIALFVPROC glad_glMaterialfv = NULL;\nPFNGLMATERIALIPROC glad_glMateriali = NULL;\nPFNGLMATERIALIVPROC glad_glMaterialiv = NULL;\nPFNGLMATRIXMODEPROC glad_glMatrixMode = NULL;\nPFNGLMULTMATRIXDPROC glad_glMultMatrixd = NULL;\nPFNGLMULTMATRIXFPROC glad_glMultMatrixf = NULL;\nPFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd = NULL;\nPFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf = NULL;\nPFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL;\nPFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL;\nPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL;\nPFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d = NULL;\nPFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv = NULL;\nPFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f = NULL;\nPFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv = NULL;\nPFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i = NULL;\nPFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv = NULL;\nPFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s = NULL;\nPFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv = NULL;\nPFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d = NULL;\nPFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv = NULL;\nPFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f = NULL;\nPFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv = NULL;\nPFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i = NULL;\nPFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv = NULL;\nPFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s = NULL;\nPFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv = NULL;\nPFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d = NULL;\nPFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv = NULL;\nPFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f = NULL;\nPFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv = NULL;\nPFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i = NULL;\nPFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv = NULL;\nPFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s = NULL;\nPFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv = NULL;\nPFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d = NULL;\nPFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv = NULL;\nPFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f = NULL;\nPFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv = NULL;\nPFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i = NULL;\nPFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv = NULL;\nPFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s = NULL;\nPFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv = NULL;\nPFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL;\nPFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL;\nPFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL;\nPFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL;\nPFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL;\nPFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL;\nPFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL;\nPFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL;\nPFNGLNEWLISTPROC glad_glNewList = NULL;\nPFNGLNORMAL3BPROC glad_glNormal3b = NULL;\nPFNGLNORMAL3BVPROC glad_glNormal3bv = NULL;\nPFNGLNORMAL3DPROC glad_glNormal3d = NULL;\nPFNGLNORMAL3DVPROC glad_glNormal3dv = NULL;\nPFNGLNORMAL3FPROC glad_glNormal3f = NULL;\nPFNGLNORMAL3FVPROC glad_glNormal3fv = NULL;\nPFNGLNORMAL3IPROC glad_glNormal3i = NULL;\nPFNGLNORMAL3IVPROC glad_glNormal3iv = NULL;\nPFNGLNORMAL3SPROC glad_glNormal3s = NULL;\nPFNGLNORMAL3SVPROC glad_glNormal3sv = NULL;\nPFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL;\nPFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL;\nPFNGLNORMALPOINTERPROC glad_glNormalPointer = NULL;\nPFNGLORTHOPROC glad_glOrtho = NULL;\nPFNGLPASSTHROUGHPROC glad_glPassThrough = NULL;\nPFNGLPIXELMAPFVPROC glad_glPixelMapfv = NULL;\nPFNGLPIXELMAPUIVPROC glad_glPixelMapuiv = NULL;\nPFNGLPIXELMAPUSVPROC glad_glPixelMapusv = NULL;\nPFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL;\nPFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL;\nPFNGLPIXELTRANSFERFPROC glad_glPixelTransferf = NULL;\nPFNGLPIXELTRANSFERIPROC glad_glPixelTransferi = NULL;\nPFNGLPIXELZOOMPROC glad_glPixelZoom = NULL;\nPFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL;\nPFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL;\nPFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL;\nPFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL;\nPFNGLPOINTSIZEPROC glad_glPointSize = NULL;\nPFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL;\nPFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL;\nPFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple = NULL;\nPFNGLPOPATTRIBPROC glad_glPopAttrib = NULL;\nPFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib = NULL;\nPFNGLPOPMATRIXPROC glad_glPopMatrix = NULL;\nPFNGLPOPNAMEPROC glad_glPopName = NULL;\nPFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL;\nPFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures = NULL;\nPFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL;\nPFNGLPUSHATTRIBPROC glad_glPushAttrib = NULL;\nPFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib = NULL;\nPFNGLPUSHMATRIXPROC glad_glPushMatrix = NULL;\nPFNGLPUSHNAMEPROC glad_glPushName = NULL;\nPFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL;\nPFNGLRASTERPOS2DPROC glad_glRasterPos2d = NULL;\nPFNGLRASTERPOS2DVPROC glad_glRasterPos2dv = NULL;\nPFNGLRASTERPOS2FPROC glad_glRasterPos2f = NULL;\nPFNGLRASTERPOS2FVPROC glad_glRasterPos2fv = NULL;\nPFNGLRASTERPOS2IPROC glad_glRasterPos2i = NULL;\nPFNGLRASTERPOS2IVPROC glad_glRasterPos2iv = NULL;\nPFNGLRASTERPOS2SPROC glad_glRasterPos2s = NULL;\nPFNGLRASTERPOS2SVPROC glad_glRasterPos2sv = NULL;\nPFNGLRASTERPOS3DPROC glad_glRasterPos3d = NULL;\nPFNGLRASTERPOS3DVPROC glad_glRasterPos3dv = NULL;\nPFNGLRASTERPOS3FPROC glad_glRasterPos3f = NULL;\nPFNGLRASTERPOS3FVPROC glad_glRasterPos3fv = NULL;\nPFNGLRASTERPOS3IPROC glad_glRasterPos3i = NULL;\nPFNGLRASTERPOS3IVPROC glad_glRasterPos3iv = NULL;\nPFNGLRASTERPOS3SPROC glad_glRasterPos3s = NULL;\nPFNGLRASTERPOS3SVPROC glad_glRasterPos3sv = NULL;\nPFNGLRASTERPOS4DPROC glad_glRasterPos4d = NULL;\nPFNGLRASTERPOS4DVPROC glad_glRasterPos4dv = NULL;\nPFNGLRASTERPOS4FPROC glad_glRasterPos4f = NULL;\nPFNGLRASTERPOS4FVPROC glad_glRasterPos4fv = NULL;\nPFNGLRASTERPOS4IPROC glad_glRasterPos4i = NULL;\nPFNGLRASTERPOS4IVPROC glad_glRasterPos4iv = NULL;\nPFNGLRASTERPOS4SPROC glad_glRasterPos4s = NULL;\nPFNGLRASTERPOS4SVPROC glad_glRasterPos4sv = NULL;\nPFNGLREADBUFFERPROC glad_glReadBuffer = NULL;\nPFNGLREADPIXELSPROC glad_glReadPixels = NULL;\nPFNGLRECTDPROC glad_glRectd = NULL;\nPFNGLRECTDVPROC glad_glRectdv = NULL;\nPFNGLRECTFPROC glad_glRectf = NULL;\nPFNGLRECTFVPROC glad_glRectfv = NULL;\nPFNGLRECTIPROC glad_glRecti = NULL;\nPFNGLRECTIVPROC glad_glRectiv = NULL;\nPFNGLRECTSPROC glad_glRects = NULL;\nPFNGLRECTSVPROC glad_glRectsv = NULL;\nPFNGLRENDERMODEPROC glad_glRenderMode = NULL;\nPFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL;\nPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL;\nPFNGLROTATEDPROC glad_glRotated = NULL;\nPFNGLROTATEFPROC glad_glRotatef = NULL;\nPFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL;\nPFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL;\nPFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL;\nPFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL;\nPFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL;\nPFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL;\nPFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL;\nPFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL;\nPFNGLSCALEDPROC glad_glScaled = NULL;\nPFNGLSCALEFPROC glad_glScalef = NULL;\nPFNGLSCISSORPROC glad_glScissor = NULL;\nPFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b = NULL;\nPFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv = NULL;\nPFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d = NULL;\nPFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv = NULL;\nPFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f = NULL;\nPFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv = NULL;\nPFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i = NULL;\nPFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv = NULL;\nPFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s = NULL;\nPFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv = NULL;\nPFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub = NULL;\nPFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv = NULL;\nPFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui = NULL;\nPFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv = NULL;\nPFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us = NULL;\nPFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv = NULL;\nPFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL;\nPFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL;\nPFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer = NULL;\nPFNGLSELECTBUFFERPROC glad_glSelectBuffer = NULL;\nPFNGLSHADEMODELPROC glad_glShadeModel = NULL;\nPFNGLSHADERSOURCEPROC glad_glShaderSource = NULL;\nPFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL;\nPFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL;\nPFNGLSTENCILMASKPROC glad_glStencilMask = NULL;\nPFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL;\nPFNGLSTENCILOPPROC glad_glStencilOp = NULL;\nPFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL;\nPFNGLTEXBUFFERPROC glad_glTexBuffer = NULL;\nPFNGLTEXCOORD1DPROC glad_glTexCoord1d = NULL;\nPFNGLTEXCOORD1DVPROC glad_glTexCoord1dv = NULL;\nPFNGLTEXCOORD1FPROC glad_glTexCoord1f = NULL;\nPFNGLTEXCOORD1FVPROC glad_glTexCoord1fv = NULL;\nPFNGLTEXCOORD1IPROC glad_glTexCoord1i = NULL;\nPFNGLTEXCOORD1IVPROC glad_glTexCoord1iv = NULL;\nPFNGLTEXCOORD1SPROC glad_glTexCoord1s = NULL;\nPFNGLTEXCOORD1SVPROC glad_glTexCoord1sv = NULL;\nPFNGLTEXCOORD2DPROC glad_glTexCoord2d = NULL;\nPFNGLTEXCOORD2DVPROC glad_glTexCoord2dv = NULL;\nPFNGLTEXCOORD2FPROC glad_glTexCoord2f = NULL;\nPFNGLTEXCOORD2FVPROC glad_glTexCoord2fv = NULL;\nPFNGLTEXCOORD2IPROC glad_glTexCoord2i = NULL;\nPFNGLTEXCOORD2IVPROC glad_glTexCoord2iv = NULL;\nPFNGLTEXCOORD2SPROC glad_glTexCoord2s = NULL;\nPFNGLTEXCOORD2SVPROC glad_glTexCoord2sv = NULL;\nPFNGLTEXCOORD3DPROC glad_glTexCoord3d = NULL;\nPFNGLTEXCOORD3DVPROC glad_glTexCoord3dv = NULL;\nPFNGLTEXCOORD3FPROC glad_glTexCoord3f = NULL;\nPFNGLTEXCOORD3FVPROC glad_glTexCoord3fv = NULL;\nPFNGLTEXCOORD3IPROC glad_glTexCoord3i = NULL;\nPFNGLTEXCOORD3IVPROC glad_glTexCoord3iv = NULL;\nPFNGLTEXCOORD3SPROC glad_glTexCoord3s = NULL;\nPFNGLTEXCOORD3SVPROC glad_glTexCoord3sv = NULL;\nPFNGLTEXCOORD4DPROC glad_glTexCoord4d = NULL;\nPFNGLTEXCOORD4DVPROC glad_glTexCoord4dv = NULL;\nPFNGLTEXCOORD4FPROC glad_glTexCoord4f = NULL;\nPFNGLTEXCOORD4FVPROC glad_glTexCoord4fv = NULL;\nPFNGLTEXCOORD4IPROC glad_glTexCoord4i = NULL;\nPFNGLTEXCOORD4IVPROC glad_glTexCoord4iv = NULL;\nPFNGLTEXCOORD4SPROC glad_glTexCoord4s = NULL;\nPFNGLTEXCOORD4SVPROC glad_glTexCoord4sv = NULL;\nPFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL;\nPFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL;\nPFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL;\nPFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL;\nPFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL;\nPFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL;\nPFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL;\nPFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL;\nPFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer = NULL;\nPFNGLTEXENVFPROC glad_glTexEnvf = NULL;\nPFNGLTEXENVFVPROC glad_glTexEnvfv = NULL;\nPFNGLTEXENVIPROC glad_glTexEnvi = NULL;\nPFNGLTEXENVIVPROC glad_glTexEnviv = NULL;\nPFNGLTEXGENDPROC glad_glTexGend = NULL;\nPFNGLTEXGENDVPROC glad_glTexGendv = NULL;\nPFNGLTEXGENFPROC glad_glTexGenf = NULL;\nPFNGLTEXGENFVPROC glad_glTexGenfv = NULL;\nPFNGLTEXGENIPROC glad_glTexGeni = NULL;\nPFNGLTEXGENIVPROC glad_glTexGeniv = NULL;\nPFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL;\nPFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL;\nPFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL;\nPFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL;\nPFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL;\nPFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL;\nPFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL;\nPFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL;\nPFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL;\nPFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL;\nPFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL;\nPFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL;\nPFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL;\nPFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL;\nPFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL;\nPFNGLTRANSLATEDPROC glad_glTranslated = NULL;\nPFNGLTRANSLATEFPROC glad_glTranslatef = NULL;\nPFNGLUNIFORM1FPROC glad_glUniform1f = NULL;\nPFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL;\nPFNGLUNIFORM1IPROC glad_glUniform1i = NULL;\nPFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL;\nPFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL;\nPFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL;\nPFNGLUNIFORM2FPROC glad_glUniform2f = NULL;\nPFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL;\nPFNGLUNIFORM2IPROC glad_glUniform2i = NULL;\nPFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL;\nPFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL;\nPFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL;\nPFNGLUNIFORM3FPROC glad_glUniform3f = NULL;\nPFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL;\nPFNGLUNIFORM3IPROC glad_glUniform3i = NULL;\nPFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL;\nPFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL;\nPFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL;\nPFNGLUNIFORM4FPROC glad_glUniform4f = NULL;\nPFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL;\nPFNGLUNIFORM4IPROC glad_glUniform4i = NULL;\nPFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL;\nPFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL;\nPFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL;\nPFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL;\nPFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL;\nPFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL;\nPFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL;\nPFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL;\nPFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL;\nPFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL;\nPFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL;\nPFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL;\nPFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL;\nPFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL;\nPFNGLUSEPROGRAMPROC glad_glUseProgram = NULL;\nPFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL;\nPFNGLVERTEX2DPROC glad_glVertex2d = NULL;\nPFNGLVERTEX2DVPROC glad_glVertex2dv = NULL;\nPFNGLVERTEX2FPROC glad_glVertex2f = NULL;\nPFNGLVERTEX2FVPROC glad_glVertex2fv = NULL;\nPFNGLVERTEX2IPROC glad_glVertex2i = NULL;\nPFNGLVERTEX2IVPROC glad_glVertex2iv = NULL;\nPFNGLVERTEX2SPROC glad_glVertex2s = NULL;\nPFNGLVERTEX2SVPROC glad_glVertex2sv = NULL;\nPFNGLVERTEX3DPROC glad_glVertex3d = NULL;\nPFNGLVERTEX3DVPROC glad_glVertex3dv = NULL;\nPFNGLVERTEX3FPROC glad_glVertex3f = NULL;\nPFNGLVERTEX3FVPROC glad_glVertex3fv = NULL;\nPFNGLVERTEX3IPROC glad_glVertex3i = NULL;\nPFNGLVERTEX3IVPROC glad_glVertex3iv = NULL;\nPFNGLVERTEX3SPROC glad_glVertex3s = NULL;\nPFNGLVERTEX3SVPROC glad_glVertex3sv = NULL;\nPFNGLVERTEX4DPROC glad_glVertex4d = NULL;\nPFNGLVERTEX4DVPROC glad_glVertex4dv = NULL;\nPFNGLVERTEX4FPROC glad_glVertex4f = NULL;\nPFNGLVERTEX4FVPROC glad_glVertex4fv = NULL;\nPFNGLVERTEX4IPROC glad_glVertex4i = NULL;\nPFNGLVERTEX4IVPROC glad_glVertex4iv = NULL;\nPFNGLVERTEX4SPROC glad_glVertex4s = NULL;\nPFNGLVERTEX4SVPROC glad_glVertex4sv = NULL;\nPFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL;\nPFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL;\nPFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL;\nPFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL;\nPFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL;\nPFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL;\nPFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL;\nPFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL;\nPFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL;\nPFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL;\nPFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL;\nPFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL;\nPFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL;\nPFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL;\nPFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL;\nPFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL;\nPFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL;\nPFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL;\nPFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL;\nPFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL;\nPFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL;\nPFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL;\nPFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL;\nPFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL;\nPFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL;\nPFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL;\nPFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL;\nPFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL;\nPFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL;\nPFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL;\nPFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL;\nPFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL;\nPFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL;\nPFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL;\nPFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL;\nPFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL;\nPFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL;\nPFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL;\nPFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL;\nPFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL;\nPFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL;\nPFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL;\nPFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL;\nPFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL;\nPFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL;\nPFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL;\nPFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL;\nPFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL;\nPFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL;\nPFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL;\nPFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL;\nPFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL;\nPFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL;\nPFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL;\nPFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL;\nPFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL;\nPFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL;\nPFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL;\nPFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL;\nPFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL;\nPFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL;\nPFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL;\nPFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL;\nPFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL;\nPFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL;\nPFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL;\nPFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL;\nPFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL;\nPFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL;\nPFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL;\nPFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL;\nPFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL;\nPFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL;\nPFNGLVERTEXPOINTERPROC glad_glVertexPointer = NULL;\nPFNGLVIEWPORTPROC glad_glViewport = NULL;\nPFNGLWAITSYNCPROC glad_glWaitSync = NULL;\nPFNGLWINDOWPOS2DPROC glad_glWindowPos2d = NULL;\nPFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv = NULL;\nPFNGLWINDOWPOS2FPROC glad_glWindowPos2f = NULL;\nPFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv = NULL;\nPFNGLWINDOWPOS2IPROC glad_glWindowPos2i = NULL;\nPFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv = NULL;\nPFNGLWINDOWPOS2SPROC glad_glWindowPos2s = NULL;\nPFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv = NULL;\nPFNGLWINDOWPOS3DPROC glad_glWindowPos3d = NULL;\nPFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv = NULL;\nPFNGLWINDOWPOS3FPROC glad_glWindowPos3f = NULL;\nPFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv = NULL;\nPFNGLWINDOWPOS3IPROC glad_glWindowPos3i = NULL;\nPFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv = NULL;\nPFNGLWINDOWPOS3SPROC glad_glWindowPos3s = NULL;\nPFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv = NULL;\nstatic void load_GL_VERSION_1_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_0) return;\n\tglad_glCullFace = (PFNGLCULLFACEPROC)load(\"glCullFace\");\n\tglad_glFrontFace = (PFNGLFRONTFACEPROC)load(\"glFrontFace\");\n\tglad_glHint = (PFNGLHINTPROC)load(\"glHint\");\n\tglad_glLineWidth = (PFNGLLINEWIDTHPROC)load(\"glLineWidth\");\n\tglad_glPointSize = (PFNGLPOINTSIZEPROC)load(\"glPointSize\");\n\tglad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load(\"glPolygonMode\");\n\tglad_glScissor = (PFNGLSCISSORPROC)load(\"glScissor\");\n\tglad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load(\"glTexParameterf\");\n\tglad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load(\"glTexParameterfv\");\n\tglad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load(\"glTexParameteri\");\n\tglad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load(\"glTexParameteriv\");\n\tglad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load(\"glTexImage1D\");\n\tglad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load(\"glTexImage2D\");\n\tglad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load(\"glDrawBuffer\");\n\tglad_glClear = (PFNGLCLEARPROC)load(\"glClear\");\n\tglad_glClearColor = (PFNGLCLEARCOLORPROC)load(\"glClearColor\");\n\tglad_glClearStencil = (PFNGLCLEARSTENCILPROC)load(\"glClearStencil\");\n\tglad_glClearDepth = (PFNGLCLEARDEPTHPROC)load(\"glClearDepth\");\n\tglad_glStencilMask = (PFNGLSTENCILMASKPROC)load(\"glStencilMask\");\n\tglad_glColorMask = (PFNGLCOLORMASKPROC)load(\"glColorMask\");\n\tglad_glDepthMask = (PFNGLDEPTHMASKPROC)load(\"glDepthMask\");\n\tglad_glDisable = (PFNGLDISABLEPROC)load(\"glDisable\");\n\tglad_glEnable = (PFNGLENABLEPROC)load(\"glEnable\");\n\tglad_glFinish = (PFNGLFINISHPROC)load(\"glFinish\");\n\tglad_glFlush = (PFNGLFLUSHPROC)load(\"glFlush\");\n\tglad_glBlendFunc = (PFNGLBLENDFUNCPROC)load(\"glBlendFunc\");\n\tglad_glLogicOp = (PFNGLLOGICOPPROC)load(\"glLogicOp\");\n\tglad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load(\"glStencilFunc\");\n\tglad_glStencilOp = (PFNGLSTENCILOPPROC)load(\"glStencilOp\");\n\tglad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load(\"glDepthFunc\");\n\tglad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load(\"glPixelStoref\");\n\tglad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load(\"glPixelStorei\");\n\tglad_glReadBuffer = (PFNGLREADBUFFERPROC)load(\"glReadBuffer\");\n\tglad_glReadPixels = (PFNGLREADPIXELSPROC)load(\"glReadPixels\");\n\tglad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load(\"glGetBooleanv\");\n\tglad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load(\"glGetDoublev\");\n\tglad_glGetError = (PFNGLGETERRORPROC)load(\"glGetError\");\n\tglad_glGetFloatv = (PFNGLGETFLOATVPROC)load(\"glGetFloatv\");\n\tglad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load(\"glGetIntegerv\");\n\tglad_glGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tglad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load(\"glGetTexImage\");\n\tglad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load(\"glGetTexParameterfv\");\n\tglad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load(\"glGetTexParameteriv\");\n\tglad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load(\"glGetTexLevelParameterfv\");\n\tglad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load(\"glGetTexLevelParameteriv\");\n\tglad_glIsEnabled = (PFNGLISENABLEDPROC)load(\"glIsEnabled\");\n\tglad_glDepthRange = (PFNGLDEPTHRANGEPROC)load(\"glDepthRange\");\n\tglad_glViewport = (PFNGLVIEWPORTPROC)load(\"glViewport\");\n\tglad_glNewList = (PFNGLNEWLISTPROC)load(\"glNewList\");\n\tglad_glEndList = (PFNGLENDLISTPROC)load(\"glEndList\");\n\tglad_glCallList = (PFNGLCALLLISTPROC)load(\"glCallList\");\n\tglad_glCallLists = (PFNGLCALLLISTSPROC)load(\"glCallLists\");\n\tglad_glDeleteLists = (PFNGLDELETELISTSPROC)load(\"glDeleteLists\");\n\tglad_glGenLists = (PFNGLGENLISTSPROC)load(\"glGenLists\");\n\tglad_glListBase = (PFNGLLISTBASEPROC)load(\"glListBase\");\n\tglad_glBegin = (PFNGLBEGINPROC)load(\"glBegin\");\n\tglad_glBitmap = (PFNGLBITMAPPROC)load(\"glBitmap\");\n\tglad_glColor3b = (PFNGLCOLOR3BPROC)load(\"glColor3b\");\n\tglad_glColor3bv = (PFNGLCOLOR3BVPROC)load(\"glColor3bv\");\n\tglad_glColor3d = (PFNGLCOLOR3DPROC)load(\"glColor3d\");\n\tglad_glColor3dv = (PFNGLCOLOR3DVPROC)load(\"glColor3dv\");\n\tglad_glColor3f = (PFNGLCOLOR3FPROC)load(\"glColor3f\");\n\tglad_glColor3fv = (PFNGLCOLOR3FVPROC)load(\"glColor3fv\");\n\tglad_glColor3i = (PFNGLCOLOR3IPROC)load(\"glColor3i\");\n\tglad_glColor3iv = (PFNGLCOLOR3IVPROC)load(\"glColor3iv\");\n\tglad_glColor3s = (PFNGLCOLOR3SPROC)load(\"glColor3s\");\n\tglad_glColor3sv = (PFNGLCOLOR3SVPROC)load(\"glColor3sv\");\n\tglad_glColor3ub = (PFNGLCOLOR3UBPROC)load(\"glColor3ub\");\n\tglad_glColor3ubv = (PFNGLCOLOR3UBVPROC)load(\"glColor3ubv\");\n\tglad_glColor3ui = (PFNGLCOLOR3UIPROC)load(\"glColor3ui\");\n\tglad_glColor3uiv = (PFNGLCOLOR3UIVPROC)load(\"glColor3uiv\");\n\tglad_glColor3us = (PFNGLCOLOR3USPROC)load(\"glColor3us\");\n\tglad_glColor3usv = (PFNGLCOLOR3USVPROC)load(\"glColor3usv\");\n\tglad_glColor4b = (PFNGLCOLOR4BPROC)load(\"glColor4b\");\n\tglad_glColor4bv = (PFNGLCOLOR4BVPROC)load(\"glColor4bv\");\n\tglad_glColor4d = (PFNGLCOLOR4DPROC)load(\"glColor4d\");\n\tglad_glColor4dv = (PFNGLCOLOR4DVPROC)load(\"glColor4dv\");\n\tglad_glColor4f = (PFNGLCOLOR4FPROC)load(\"glColor4f\");\n\tglad_glColor4fv = (PFNGLCOLOR4FVPROC)load(\"glColor4fv\");\n\tglad_glColor4i = (PFNGLCOLOR4IPROC)load(\"glColor4i\");\n\tglad_glColor4iv = (PFNGLCOLOR4IVPROC)load(\"glColor4iv\");\n\tglad_glColor4s = (PFNGLCOLOR4SPROC)load(\"glColor4s\");\n\tglad_glColor4sv = (PFNGLCOLOR4SVPROC)load(\"glColor4sv\");\n\tglad_glColor4ub = (PFNGLCOLOR4UBPROC)load(\"glColor4ub\");\n\tglad_glColor4ubv = (PFNGLCOLOR4UBVPROC)load(\"glColor4ubv\");\n\tglad_glColor4ui = (PFNGLCOLOR4UIPROC)load(\"glColor4ui\");\n\tglad_glColor4uiv = (PFNGLCOLOR4UIVPROC)load(\"glColor4uiv\");\n\tglad_glColor4us = (PFNGLCOLOR4USPROC)load(\"glColor4us\");\n\tglad_glColor4usv = (PFNGLCOLOR4USVPROC)load(\"glColor4usv\");\n\tglad_glEdgeFlag = (PFNGLEDGEFLAGPROC)load(\"glEdgeFlag\");\n\tglad_glEdgeFlagv = (PFNGLEDGEFLAGVPROC)load(\"glEdgeFlagv\");\n\tglad_glEnd = (PFNGLENDPROC)load(\"glEnd\");\n\tglad_glIndexd = (PFNGLINDEXDPROC)load(\"glIndexd\");\n\tglad_glIndexdv = (PFNGLINDEXDVPROC)load(\"glIndexdv\");\n\tglad_glIndexf = (PFNGLINDEXFPROC)load(\"glIndexf\");\n\tglad_glIndexfv = (PFNGLINDEXFVPROC)load(\"glIndexfv\");\n\tglad_glIndexi = (PFNGLINDEXIPROC)load(\"glIndexi\");\n\tglad_glIndexiv = (PFNGLINDEXIVPROC)load(\"glIndexiv\");\n\tglad_glIndexs = (PFNGLINDEXSPROC)load(\"glIndexs\");\n\tglad_glIndexsv = (PFNGLINDEXSVPROC)load(\"glIndexsv\");\n\tglad_glNormal3b = (PFNGLNORMAL3BPROC)load(\"glNormal3b\");\n\tglad_glNormal3bv = (PFNGLNORMAL3BVPROC)load(\"glNormal3bv\");\n\tglad_glNormal3d = (PFNGLNORMAL3DPROC)load(\"glNormal3d\");\n\tglad_glNormal3dv = (PFNGLNORMAL3DVPROC)load(\"glNormal3dv\");\n\tglad_glNormal3f = (PFNGLNORMAL3FPROC)load(\"glNormal3f\");\n\tglad_glNormal3fv = (PFNGLNORMAL3FVPROC)load(\"glNormal3fv\");\n\tglad_glNormal3i = (PFNGLNORMAL3IPROC)load(\"glNormal3i\");\n\tglad_glNormal3iv = (PFNGLNORMAL3IVPROC)load(\"glNormal3iv\");\n\tglad_glNormal3s = (PFNGLNORMAL3SPROC)load(\"glNormal3s\");\n\tglad_glNormal3sv = (PFNGLNORMAL3SVPROC)load(\"glNormal3sv\");\n\tglad_glRasterPos2d = (PFNGLRASTERPOS2DPROC)load(\"glRasterPos2d\");\n\tglad_glRasterPos2dv = (PFNGLRASTERPOS2DVPROC)load(\"glRasterPos2dv\");\n\tglad_glRasterPos2f = (PFNGLRASTERPOS2FPROC)load(\"glRasterPos2f\");\n\tglad_glRasterPos2fv = (PFNGLRASTERPOS2FVPROC)load(\"glRasterPos2fv\");\n\tglad_glRasterPos2i = (PFNGLRASTERPOS2IPROC)load(\"glRasterPos2i\");\n\tglad_glRasterPos2iv = (PFNGLRASTERPOS2IVPROC)load(\"glRasterPos2iv\");\n\tglad_glRasterPos2s = (PFNGLRASTERPOS2SPROC)load(\"glRasterPos2s\");\n\tglad_glRasterPos2sv = (PFNGLRASTERPOS2SVPROC)load(\"glRasterPos2sv\");\n\tglad_glRasterPos3d = (PFNGLRASTERPOS3DPROC)load(\"glRasterPos3d\");\n\tglad_glRasterPos3dv = (PFNGLRASTERPOS3DVPROC)load(\"glRasterPos3dv\");\n\tglad_glRasterPos3f = (PFNGLRASTERPOS3FPROC)load(\"glRasterPos3f\");\n\tglad_glRasterPos3fv = (PFNGLRASTERPOS3FVPROC)load(\"glRasterPos3fv\");\n\tglad_glRasterPos3i = (PFNGLRASTERPOS3IPROC)load(\"glRasterPos3i\");\n\tglad_glRasterPos3iv = (PFNGLRASTERPOS3IVPROC)load(\"glRasterPos3iv\");\n\tglad_glRasterPos3s = (PFNGLRASTERPOS3SPROC)load(\"glRasterPos3s\");\n\tglad_glRasterPos3sv = (PFNGLRASTERPOS3SVPROC)load(\"glRasterPos3sv\");\n\tglad_glRasterPos4d = (PFNGLRASTERPOS4DPROC)load(\"glRasterPos4d\");\n\tglad_glRasterPos4dv = (PFNGLRASTERPOS4DVPROC)load(\"glRasterPos4dv\");\n\tglad_glRasterPos4f = (PFNGLRASTERPOS4FPROC)load(\"glRasterPos4f\");\n\tglad_glRasterPos4fv = (PFNGLRASTERPOS4FVPROC)load(\"glRasterPos4fv\");\n\tglad_glRasterPos4i = (PFNGLRASTERPOS4IPROC)load(\"glRasterPos4i\");\n\tglad_glRasterPos4iv = (PFNGLRASTERPOS4IVPROC)load(\"glRasterPos4iv\");\n\tglad_glRasterPos4s = (PFNGLRASTERPOS4SPROC)load(\"glRasterPos4s\");\n\tglad_glRasterPos4sv = (PFNGLRASTERPOS4SVPROC)load(\"glRasterPos4sv\");\n\tglad_glRectd = (PFNGLRECTDPROC)load(\"glRectd\");\n\tglad_glRectdv = (PFNGLRECTDVPROC)load(\"glRectdv\");\n\tglad_glRectf = (PFNGLRECTFPROC)load(\"glRectf\");\n\tglad_glRectfv = (PFNGLRECTFVPROC)load(\"glRectfv\");\n\tglad_glRecti = (PFNGLRECTIPROC)load(\"glRecti\");\n\tglad_glRectiv = (PFNGLRECTIVPROC)load(\"glRectiv\");\n\tglad_glRects = (PFNGLRECTSPROC)load(\"glRects\");\n\tglad_glRectsv = (PFNGLRECTSVPROC)load(\"glRectsv\");\n\tglad_glTexCoord1d = (PFNGLTEXCOORD1DPROC)load(\"glTexCoord1d\");\n\tglad_glTexCoord1dv = (PFNGLTEXCOORD1DVPROC)load(\"glTexCoord1dv\");\n\tglad_glTexCoord1f = (PFNGLTEXCOORD1FPROC)load(\"glTexCoord1f\");\n\tglad_glTexCoord1fv = (PFNGLTEXCOORD1FVPROC)load(\"glTexCoord1fv\");\n\tglad_glTexCoord1i = (PFNGLTEXCOORD1IPROC)load(\"glTexCoord1i\");\n\tglad_glTexCoord1iv = (PFNGLTEXCOORD1IVPROC)load(\"glTexCoord1iv\");\n\tglad_glTexCoord1s = (PFNGLTEXCOORD1SPROC)load(\"glTexCoord1s\");\n\tglad_glTexCoord1sv = (PFNGLTEXCOORD1SVPROC)load(\"glTexCoord1sv\");\n\tglad_glTexCoord2d = (PFNGLTEXCOORD2DPROC)load(\"glTexCoord2d\");\n\tglad_glTexCoord2dv = (PFNGLTEXCOORD2DVPROC)load(\"glTexCoord2dv\");\n\tglad_glTexCoord2f = (PFNGLTEXCOORD2FPROC)load(\"glTexCoord2f\");\n\tglad_glTexCoord2fv = (PFNGLTEXCOORD2FVPROC)load(\"glTexCoord2fv\");\n\tglad_glTexCoord2i = (PFNGLTEXCOORD2IPROC)load(\"glTexCoord2i\");\n\tglad_glTexCoord2iv = (PFNGLTEXCOORD2IVPROC)load(\"glTexCoord2iv\");\n\tglad_glTexCoord2s = (PFNGLTEXCOORD2SPROC)load(\"glTexCoord2s\");\n\tglad_glTexCoord2sv = (PFNGLTEXCOORD2SVPROC)load(\"glTexCoord2sv\");\n\tglad_glTexCoord3d = (PFNGLTEXCOORD3DPROC)load(\"glTexCoord3d\");\n\tglad_glTexCoord3dv = (PFNGLTEXCOORD3DVPROC)load(\"glTexCoord3dv\");\n\tglad_glTexCoord3f = (PFNGLTEXCOORD3FPROC)load(\"glTexCoord3f\");\n\tglad_glTexCoord3fv = (PFNGLTEXCOORD3FVPROC)load(\"glTexCoord3fv\");\n\tglad_glTexCoord3i = (PFNGLTEXCOORD3IPROC)load(\"glTexCoord3i\");\n\tglad_glTexCoord3iv = (PFNGLTEXCOORD3IVPROC)load(\"glTexCoord3iv\");\n\tglad_glTexCoord3s = (PFNGLTEXCOORD3SPROC)load(\"glTexCoord3s\");\n\tglad_glTexCoord3sv = (PFNGLTEXCOORD3SVPROC)load(\"glTexCoord3sv\");\n\tglad_glTexCoord4d = (PFNGLTEXCOORD4DPROC)load(\"glTexCoord4d\");\n\tglad_glTexCoord4dv = (PFNGLTEXCOORD4DVPROC)load(\"glTexCoord4dv\");\n\tglad_glTexCoord4f = (PFNGLTEXCOORD4FPROC)load(\"glTexCoord4f\");\n\tglad_glTexCoord4fv = (PFNGLTEXCOORD4FVPROC)load(\"glTexCoord4fv\");\n\tglad_glTexCoord4i = (PFNGLTEXCOORD4IPROC)load(\"glTexCoord4i\");\n\tglad_glTexCoord4iv = (PFNGLTEXCOORD4IVPROC)load(\"glTexCoord4iv\");\n\tglad_glTexCoord4s = (PFNGLTEXCOORD4SPROC)load(\"glTexCoord4s\");\n\tglad_glTexCoord4sv = (PFNGLTEXCOORD4SVPROC)load(\"glTexCoord4sv\");\n\tglad_glVertex2d = (PFNGLVERTEX2DPROC)load(\"glVertex2d\");\n\tglad_glVertex2dv = (PFNGLVERTEX2DVPROC)load(\"glVertex2dv\");\n\tglad_glVertex2f = (PFNGLVERTEX2FPROC)load(\"glVertex2f\");\n\tglad_glVertex2fv = (PFNGLVERTEX2FVPROC)load(\"glVertex2fv\");\n\tglad_glVertex2i = (PFNGLVERTEX2IPROC)load(\"glVertex2i\");\n\tglad_glVertex2iv = (PFNGLVERTEX2IVPROC)load(\"glVertex2iv\");\n\tglad_glVertex2s = (PFNGLVERTEX2SPROC)load(\"glVertex2s\");\n\tglad_glVertex2sv = (PFNGLVERTEX2SVPROC)load(\"glVertex2sv\");\n\tglad_glVertex3d = (PFNGLVERTEX3DPROC)load(\"glVertex3d\");\n\tglad_glVertex3dv = (PFNGLVERTEX3DVPROC)load(\"glVertex3dv\");\n\tglad_glVertex3f = (PFNGLVERTEX3FPROC)load(\"glVertex3f\");\n\tglad_glVertex3fv = (PFNGLVERTEX3FVPROC)load(\"glVertex3fv\");\n\tglad_glVertex3i = (PFNGLVERTEX3IPROC)load(\"glVertex3i\");\n\tglad_glVertex3iv = (PFNGLVERTEX3IVPROC)load(\"glVertex3iv\");\n\tglad_glVertex3s = (PFNGLVERTEX3SPROC)load(\"glVertex3s\");\n\tglad_glVertex3sv = (PFNGLVERTEX3SVPROC)load(\"glVertex3sv\");\n\tglad_glVertex4d = (PFNGLVERTEX4DPROC)load(\"glVertex4d\");\n\tglad_glVertex4dv = (PFNGLVERTEX4DVPROC)load(\"glVertex4dv\");\n\tglad_glVertex4f = (PFNGLVERTEX4FPROC)load(\"glVertex4f\");\n\tglad_glVertex4fv = (PFNGLVERTEX4FVPROC)load(\"glVertex4fv\");\n\tglad_glVertex4i = (PFNGLVERTEX4IPROC)load(\"glVertex4i\");\n\tglad_glVertex4iv = (PFNGLVERTEX4IVPROC)load(\"glVertex4iv\");\n\tglad_glVertex4s = (PFNGLVERTEX4SPROC)load(\"glVertex4s\");\n\tglad_glVertex4sv = (PFNGLVERTEX4SVPROC)load(\"glVertex4sv\");\n\tglad_glClipPlane = (PFNGLCLIPPLANEPROC)load(\"glClipPlane\");\n\tglad_glColorMaterial = (PFNGLCOLORMATERIALPROC)load(\"glColorMaterial\");\n\tglad_glFogf = (PFNGLFOGFPROC)load(\"glFogf\");\n\tglad_glFogfv = (PFNGLFOGFVPROC)load(\"glFogfv\");\n\tglad_glFogi = (PFNGLFOGIPROC)load(\"glFogi\");\n\tglad_glFogiv = (PFNGLFOGIVPROC)load(\"glFogiv\");\n\tglad_glLightf = (PFNGLLIGHTFPROC)load(\"glLightf\");\n\tglad_glLightfv = (PFNGLLIGHTFVPROC)load(\"glLightfv\");\n\tglad_glLighti = (PFNGLLIGHTIPROC)load(\"glLighti\");\n\tglad_glLightiv = (PFNGLLIGHTIVPROC)load(\"glLightiv\");\n\tglad_glLightModelf = (PFNGLLIGHTMODELFPROC)load(\"glLightModelf\");\n\tglad_glLightModelfv = (PFNGLLIGHTMODELFVPROC)load(\"glLightModelfv\");\n\tglad_glLightModeli = (PFNGLLIGHTMODELIPROC)load(\"glLightModeli\");\n\tglad_glLightModeliv = (PFNGLLIGHTMODELIVPROC)load(\"glLightModeliv\");\n\tglad_glLineStipple = (PFNGLLINESTIPPLEPROC)load(\"glLineStipple\");\n\tglad_glMaterialf = (PFNGLMATERIALFPROC)load(\"glMaterialf\");\n\tglad_glMaterialfv = (PFNGLMATERIALFVPROC)load(\"glMaterialfv\");\n\tglad_glMateriali = (PFNGLMATERIALIPROC)load(\"glMateriali\");\n\tglad_glMaterialiv = (PFNGLMATERIALIVPROC)load(\"glMaterialiv\");\n\tglad_glPolygonStipple = (PFNGLPOLYGONSTIPPLEPROC)load(\"glPolygonStipple\");\n\tglad_glShadeModel = (PFNGLSHADEMODELPROC)load(\"glShadeModel\");\n\tglad_glTexEnvf = (PFNGLTEXENVFPROC)load(\"glTexEnvf\");\n\tglad_glTexEnvfv = (PFNGLTEXENVFVPROC)load(\"glTexEnvfv\");\n\tglad_glTexEnvi = (PFNGLTEXENVIPROC)load(\"glTexEnvi\");\n\tglad_glTexEnviv = (PFNGLTEXENVIVPROC)load(\"glTexEnviv\");\n\tglad_glTexGend = (PFNGLTEXGENDPROC)load(\"glTexGend\");\n\tglad_glTexGendv = (PFNGLTEXGENDVPROC)load(\"glTexGendv\");\n\tglad_glTexGenf = (PFNGLTEXGENFPROC)load(\"glTexGenf\");\n\tglad_glTexGenfv = (PFNGLTEXGENFVPROC)load(\"glTexGenfv\");\n\tglad_glTexGeni = (PFNGLTEXGENIPROC)load(\"glTexGeni\");\n\tglad_glTexGeniv = (PFNGLTEXGENIVPROC)load(\"glTexGeniv\");\n\tglad_glFeedbackBuffer = (PFNGLFEEDBACKBUFFERPROC)load(\"glFeedbackBuffer\");\n\tglad_glSelectBuffer = (PFNGLSELECTBUFFERPROC)load(\"glSelectBuffer\");\n\tglad_glRenderMode = (PFNGLRENDERMODEPROC)load(\"glRenderMode\");\n\tglad_glInitNames = (PFNGLINITNAMESPROC)load(\"glInitNames\");\n\tglad_glLoadName = (PFNGLLOADNAMEPROC)load(\"glLoadName\");\n\tglad_glPassThrough = (PFNGLPASSTHROUGHPROC)load(\"glPassThrough\");\n\tglad_glPopName = (PFNGLPOPNAMEPROC)load(\"glPopName\");\n\tglad_glPushName = (PFNGLPUSHNAMEPROC)load(\"glPushName\");\n\tglad_glClearAccum = (PFNGLCLEARACCUMPROC)load(\"glClearAccum\");\n\tglad_glClearIndex = (PFNGLCLEARINDEXPROC)load(\"glClearIndex\");\n\tglad_glIndexMask = (PFNGLINDEXMASKPROC)load(\"glIndexMask\");\n\tglad_glAccum = (PFNGLACCUMPROC)load(\"glAccum\");\n\tglad_glPopAttrib = (PFNGLPOPATTRIBPROC)load(\"glPopAttrib\");\n\tglad_glPushAttrib = (PFNGLPUSHATTRIBPROC)load(\"glPushAttrib\");\n\tglad_glMap1d = (PFNGLMAP1DPROC)load(\"glMap1d\");\n\tglad_glMap1f = (PFNGLMAP1FPROC)load(\"glMap1f\");\n\tglad_glMap2d = (PFNGLMAP2DPROC)load(\"glMap2d\");\n\tglad_glMap2f = (PFNGLMAP2FPROC)load(\"glMap2f\");\n\tglad_glMapGrid1d = (PFNGLMAPGRID1DPROC)load(\"glMapGrid1d\");\n\tglad_glMapGrid1f = (PFNGLMAPGRID1FPROC)load(\"glMapGrid1f\");\n\tglad_glMapGrid2d = (PFNGLMAPGRID2DPROC)load(\"glMapGrid2d\");\n\tglad_glMapGrid2f = (PFNGLMAPGRID2FPROC)load(\"glMapGrid2f\");\n\tglad_glEvalCoord1d = (PFNGLEVALCOORD1DPROC)load(\"glEvalCoord1d\");\n\tglad_glEvalCoord1dv = (PFNGLEVALCOORD1DVPROC)load(\"glEvalCoord1dv\");\n\tglad_glEvalCoord1f = (PFNGLEVALCOORD1FPROC)load(\"glEvalCoord1f\");\n\tglad_glEvalCoord1fv = (PFNGLEVALCOORD1FVPROC)load(\"glEvalCoord1fv\");\n\tglad_glEvalCoord2d = (PFNGLEVALCOORD2DPROC)load(\"glEvalCoord2d\");\n\tglad_glEvalCoord2dv = (PFNGLEVALCOORD2DVPROC)load(\"glEvalCoord2dv\");\n\tglad_glEvalCoord2f = (PFNGLEVALCOORD2FPROC)load(\"glEvalCoord2f\");\n\tglad_glEvalCoord2fv = (PFNGLEVALCOORD2FVPROC)load(\"glEvalCoord2fv\");\n\tglad_glEvalMesh1 = (PFNGLEVALMESH1PROC)load(\"glEvalMesh1\");\n\tglad_glEvalPoint1 = (PFNGLEVALPOINT1PROC)load(\"glEvalPoint1\");\n\tglad_glEvalMesh2 = (PFNGLEVALMESH2PROC)load(\"glEvalMesh2\");\n\tglad_glEvalPoint2 = (PFNGLEVALPOINT2PROC)load(\"glEvalPoint2\");\n\tglad_glAlphaFunc = (PFNGLALPHAFUNCPROC)load(\"glAlphaFunc\");\n\tglad_glPixelZoom = (PFNGLPIXELZOOMPROC)load(\"glPixelZoom\");\n\tglad_glPixelTransferf = (PFNGLPIXELTRANSFERFPROC)load(\"glPixelTransferf\");\n\tglad_glPixelTransferi = (PFNGLPIXELTRANSFERIPROC)load(\"glPixelTransferi\");\n\tglad_glPixelMapfv = (PFNGLPIXELMAPFVPROC)load(\"glPixelMapfv\");\n\tglad_glPixelMapuiv = (PFNGLPIXELMAPUIVPROC)load(\"glPixelMapuiv\");\n\tglad_glPixelMapusv = (PFNGLPIXELMAPUSVPROC)load(\"glPixelMapusv\");\n\tglad_glCopyPixels = (PFNGLCOPYPIXELSPROC)load(\"glCopyPixels\");\n\tglad_glDrawPixels = (PFNGLDRAWPIXELSPROC)load(\"glDrawPixels\");\n\tglad_glGetClipPlane = (PFNGLGETCLIPPLANEPROC)load(\"glGetClipPlane\");\n\tglad_glGetLightfv = (PFNGLGETLIGHTFVPROC)load(\"glGetLightfv\");\n\tglad_glGetLightiv = (PFNGLGETLIGHTIVPROC)load(\"glGetLightiv\");\n\tglad_glGetMapdv = (PFNGLGETMAPDVPROC)load(\"glGetMapdv\");\n\tglad_glGetMapfv = (PFNGLGETMAPFVPROC)load(\"glGetMapfv\");\n\tglad_glGetMapiv = (PFNGLGETMAPIVPROC)load(\"glGetMapiv\");\n\tglad_glGetMaterialfv = (PFNGLGETMATERIALFVPROC)load(\"glGetMaterialfv\");\n\tglad_glGetMaterialiv = (PFNGLGETMATERIALIVPROC)load(\"glGetMaterialiv\");\n\tglad_glGetPixelMapfv = (PFNGLGETPIXELMAPFVPROC)load(\"glGetPixelMapfv\");\n\tglad_glGetPixelMapuiv = (PFNGLGETPIXELMAPUIVPROC)load(\"glGetPixelMapuiv\");\n\tglad_glGetPixelMapusv = (PFNGLGETPIXELMAPUSVPROC)load(\"glGetPixelMapusv\");\n\tglad_glGetPolygonStipple = (PFNGLGETPOLYGONSTIPPLEPROC)load(\"glGetPolygonStipple\");\n\tglad_glGetTexEnvfv = (PFNGLGETTEXENVFVPROC)load(\"glGetTexEnvfv\");\n\tglad_glGetTexEnviv = (PFNGLGETTEXENVIVPROC)load(\"glGetTexEnviv\");\n\tglad_glGetTexGendv = (PFNGLGETTEXGENDVPROC)load(\"glGetTexGendv\");\n\tglad_glGetTexGenfv = (PFNGLGETTEXGENFVPROC)load(\"glGetTexGenfv\");\n\tglad_glGetTexGeniv = (PFNGLGETTEXGENIVPROC)load(\"glGetTexGeniv\");\n\tglad_glIsList = (PFNGLISLISTPROC)load(\"glIsList\");\n\tglad_glFrustum = (PFNGLFRUSTUMPROC)load(\"glFrustum\");\n\tglad_glLoadIdentity = (PFNGLLOADIDENTITYPROC)load(\"glLoadIdentity\");\n\tglad_glLoadMatrixf = (PFNGLLOADMATRIXFPROC)load(\"glLoadMatrixf\");\n\tglad_glLoadMatrixd = (PFNGLLOADMATRIXDPROC)load(\"glLoadMatrixd\");\n\tglad_glMatrixMode = (PFNGLMATRIXMODEPROC)load(\"glMatrixMode\");\n\tglad_glMultMatrixf = (PFNGLMULTMATRIXFPROC)load(\"glMultMatrixf\");\n\tglad_glMultMatrixd = (PFNGLMULTMATRIXDPROC)load(\"glMultMatrixd\");\n\tglad_glOrtho = (PFNGLORTHOPROC)load(\"glOrtho\");\n\tglad_glPopMatrix = (PFNGLPOPMATRIXPROC)load(\"glPopMatrix\");\n\tglad_glPushMatrix = (PFNGLPUSHMATRIXPROC)load(\"glPushMatrix\");\n\tglad_glRotated = (PFNGLROTATEDPROC)load(\"glRotated\");\n\tglad_glRotatef = (PFNGLROTATEFPROC)load(\"glRotatef\");\n\tglad_glScaled = (PFNGLSCALEDPROC)load(\"glScaled\");\n\tglad_glScalef = (PFNGLSCALEFPROC)load(\"glScalef\");\n\tglad_glTranslated = (PFNGLTRANSLATEDPROC)load(\"glTranslated\");\n\tglad_glTranslatef = (PFNGLTRANSLATEFPROC)load(\"glTranslatef\");\n}\nstatic void load_GL_VERSION_1_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_1) return;\n\tglad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load(\"glDrawArrays\");\n\tglad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load(\"glDrawElements\");\n\tglad_glGetPointerv = (PFNGLGETPOINTERVPROC)load(\"glGetPointerv\");\n\tglad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load(\"glPolygonOffset\");\n\tglad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load(\"glCopyTexImage1D\");\n\tglad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load(\"glCopyTexImage2D\");\n\tglad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load(\"glCopyTexSubImage1D\");\n\tglad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load(\"glCopyTexSubImage2D\");\n\tglad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load(\"glTexSubImage1D\");\n\tglad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load(\"glTexSubImage2D\");\n\tglad_glBindTexture = (PFNGLBINDTEXTUREPROC)load(\"glBindTexture\");\n\tglad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load(\"glDeleteTextures\");\n\tglad_glGenTextures = (PFNGLGENTEXTURESPROC)load(\"glGenTextures\");\n\tglad_glIsTexture = (PFNGLISTEXTUREPROC)load(\"glIsTexture\");\n\tglad_glArrayElement = (PFNGLARRAYELEMENTPROC)load(\"glArrayElement\");\n\tglad_glColorPointer = (PFNGLCOLORPOINTERPROC)load(\"glColorPointer\");\n\tglad_glDisableClientState = (PFNGLDISABLECLIENTSTATEPROC)load(\"glDisableClientState\");\n\tglad_glEdgeFlagPointer = (PFNGLEDGEFLAGPOINTERPROC)load(\"glEdgeFlagPointer\");\n\tglad_glEnableClientState = (PFNGLENABLECLIENTSTATEPROC)load(\"glEnableClientState\");\n\tglad_glIndexPointer = (PFNGLINDEXPOINTERPROC)load(\"glIndexPointer\");\n\tglad_glInterleavedArrays = (PFNGLINTERLEAVEDARRAYSPROC)load(\"glInterleavedArrays\");\n\tglad_glNormalPointer = (PFNGLNORMALPOINTERPROC)load(\"glNormalPointer\");\n\tglad_glTexCoordPointer = (PFNGLTEXCOORDPOINTERPROC)load(\"glTexCoordPointer\");\n\tglad_glVertexPointer = (PFNGLVERTEXPOINTERPROC)load(\"glVertexPointer\");\n\tglad_glAreTexturesResident = (PFNGLARETEXTURESRESIDENTPROC)load(\"glAreTexturesResident\");\n\tglad_glPrioritizeTextures = (PFNGLPRIORITIZETEXTURESPROC)load(\"glPrioritizeTextures\");\n\tglad_glIndexub = (PFNGLINDEXUBPROC)load(\"glIndexub\");\n\tglad_glIndexubv = (PFNGLINDEXUBVPROC)load(\"glIndexubv\");\n\tglad_glPopClientAttrib = (PFNGLPOPCLIENTATTRIBPROC)load(\"glPopClientAttrib\");\n\tglad_glPushClientAttrib = (PFNGLPUSHCLIENTATTRIBPROC)load(\"glPushClientAttrib\");\n}\nstatic void load_GL_VERSION_1_2(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_2) return;\n\tglad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load(\"glDrawRangeElements\");\n\tglad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load(\"glTexImage3D\");\n\tglad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load(\"glTexSubImage3D\");\n\tglad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load(\"glCopyTexSubImage3D\");\n}\nstatic void load_GL_VERSION_1_3(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_3) return;\n\tglad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load(\"glActiveTexture\");\n\tglad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load(\"glSampleCoverage\");\n\tglad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load(\"glCompressedTexImage3D\");\n\tglad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load(\"glCompressedTexImage2D\");\n\tglad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load(\"glCompressedTexImage1D\");\n\tglad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load(\"glCompressedTexSubImage3D\");\n\tglad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load(\"glCompressedTexSubImage2D\");\n\tglad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load(\"glCompressedTexSubImage1D\");\n\tglad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load(\"glGetCompressedTexImage\");\n\tglad_glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)load(\"glClientActiveTexture\");\n\tglad_glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)load(\"glMultiTexCoord1d\");\n\tglad_glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)load(\"glMultiTexCoord1dv\");\n\tglad_glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)load(\"glMultiTexCoord1f\");\n\tglad_glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)load(\"glMultiTexCoord1fv\");\n\tglad_glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)load(\"glMultiTexCoord1i\");\n\tglad_glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)load(\"glMultiTexCoord1iv\");\n\tglad_glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)load(\"glMultiTexCoord1s\");\n\tglad_glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)load(\"glMultiTexCoord1sv\");\n\tglad_glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)load(\"glMultiTexCoord2d\");\n\tglad_glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)load(\"glMultiTexCoord2dv\");\n\tglad_glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)load(\"glMultiTexCoord2f\");\n\tglad_glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)load(\"glMultiTexCoord2fv\");\n\tglad_glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)load(\"glMultiTexCoord2i\");\n\tglad_glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)load(\"glMultiTexCoord2iv\");\n\tglad_glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)load(\"glMultiTexCoord2s\");\n\tglad_glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)load(\"glMultiTexCoord2sv\");\n\tglad_glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)load(\"glMultiTexCoord3d\");\n\tglad_glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)load(\"glMultiTexCoord3dv\");\n\tglad_glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)load(\"glMultiTexCoord3f\");\n\tglad_glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)load(\"glMultiTexCoord3fv\");\n\tglad_glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)load(\"glMultiTexCoord3i\");\n\tglad_glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)load(\"glMultiTexCoord3iv\");\n\tglad_glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)load(\"glMultiTexCoord3s\");\n\tglad_glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)load(\"glMultiTexCoord3sv\");\n\tglad_glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)load(\"glMultiTexCoord4d\");\n\tglad_glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)load(\"glMultiTexCoord4dv\");\n\tglad_glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)load(\"glMultiTexCoord4f\");\n\tglad_glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)load(\"glMultiTexCoord4fv\");\n\tglad_glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)load(\"glMultiTexCoord4i\");\n\tglad_glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)load(\"glMultiTexCoord4iv\");\n\tglad_glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)load(\"glMultiTexCoord4s\");\n\tglad_glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)load(\"glMultiTexCoord4sv\");\n\tglad_glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)load(\"glLoadTransposeMatrixf\");\n\tglad_glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)load(\"glLoadTransposeMatrixd\");\n\tglad_glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)load(\"glMultTransposeMatrixf\");\n\tglad_glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)load(\"glMultTransposeMatrixd\");\n}\nstatic void load_GL_VERSION_1_4(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_4) return;\n\tglad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load(\"glBlendFuncSeparate\");\n\tglad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load(\"glMultiDrawArrays\");\n\tglad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load(\"glMultiDrawElements\");\n\tglad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load(\"glPointParameterf\");\n\tglad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load(\"glPointParameterfv\");\n\tglad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load(\"glPointParameteri\");\n\tglad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load(\"glPointParameteriv\");\n\tglad_glFogCoordf = (PFNGLFOGCOORDFPROC)load(\"glFogCoordf\");\n\tglad_glFogCoordfv = (PFNGLFOGCOORDFVPROC)load(\"glFogCoordfv\");\n\tglad_glFogCoordd = (PFNGLFOGCOORDDPROC)load(\"glFogCoordd\");\n\tglad_glFogCoorddv = (PFNGLFOGCOORDDVPROC)load(\"glFogCoorddv\");\n\tglad_glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)load(\"glFogCoordPointer\");\n\tglad_glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)load(\"glSecondaryColor3b\");\n\tglad_glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)load(\"glSecondaryColor3bv\");\n\tglad_glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)load(\"glSecondaryColor3d\");\n\tglad_glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)load(\"glSecondaryColor3dv\");\n\tglad_glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)load(\"glSecondaryColor3f\");\n\tglad_glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)load(\"glSecondaryColor3fv\");\n\tglad_glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)load(\"glSecondaryColor3i\");\n\tglad_glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)load(\"glSecondaryColor3iv\");\n\tglad_glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)load(\"glSecondaryColor3s\");\n\tglad_glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)load(\"glSecondaryColor3sv\");\n\tglad_glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)load(\"glSecondaryColor3ub\");\n\tglad_glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)load(\"glSecondaryColor3ubv\");\n\tglad_glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)load(\"glSecondaryColor3ui\");\n\tglad_glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)load(\"glSecondaryColor3uiv\");\n\tglad_glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)load(\"glSecondaryColor3us\");\n\tglad_glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)load(\"glSecondaryColor3usv\");\n\tglad_glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)load(\"glSecondaryColorPointer\");\n\tglad_glWindowPos2d = (PFNGLWINDOWPOS2DPROC)load(\"glWindowPos2d\");\n\tglad_glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)load(\"glWindowPos2dv\");\n\tglad_glWindowPos2f = (PFNGLWINDOWPOS2FPROC)load(\"glWindowPos2f\");\n\tglad_glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)load(\"glWindowPos2fv\");\n\tglad_glWindowPos2i = (PFNGLWINDOWPOS2IPROC)load(\"glWindowPos2i\");\n\tglad_glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)load(\"glWindowPos2iv\");\n\tglad_glWindowPos2s = (PFNGLWINDOWPOS2SPROC)load(\"glWindowPos2s\");\n\tglad_glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)load(\"glWindowPos2sv\");\n\tglad_glWindowPos3d = (PFNGLWINDOWPOS3DPROC)load(\"glWindowPos3d\");\n\tglad_glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)load(\"glWindowPos3dv\");\n\tglad_glWindowPos3f = (PFNGLWINDOWPOS3FPROC)load(\"glWindowPos3f\");\n\tglad_glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)load(\"glWindowPos3fv\");\n\tglad_glWindowPos3i = (PFNGLWINDOWPOS3IPROC)load(\"glWindowPos3i\");\n\tglad_glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)load(\"glWindowPos3iv\");\n\tglad_glWindowPos3s = (PFNGLWINDOWPOS3SPROC)load(\"glWindowPos3s\");\n\tglad_glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)load(\"glWindowPos3sv\");\n\tglad_glBlendColor = (PFNGLBLENDCOLORPROC)load(\"glBlendColor\");\n\tglad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load(\"glBlendEquation\");\n}\nstatic void load_GL_VERSION_1_5(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_1_5) return;\n\tglad_glGenQueries = (PFNGLGENQUERIESPROC)load(\"glGenQueries\");\n\tglad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load(\"glDeleteQueries\");\n\tglad_glIsQuery = (PFNGLISQUERYPROC)load(\"glIsQuery\");\n\tglad_glBeginQuery = (PFNGLBEGINQUERYPROC)load(\"glBeginQuery\");\n\tglad_glEndQuery = (PFNGLENDQUERYPROC)load(\"glEndQuery\");\n\tglad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load(\"glGetQueryiv\");\n\tglad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load(\"glGetQueryObjectiv\");\n\tglad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load(\"glGetQueryObjectuiv\");\n\tglad_glBindBuffer = (PFNGLBINDBUFFERPROC)load(\"glBindBuffer\");\n\tglad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load(\"glDeleteBuffers\");\n\tglad_glGenBuffers = (PFNGLGENBUFFERSPROC)load(\"glGenBuffers\");\n\tglad_glIsBuffer = (PFNGLISBUFFERPROC)load(\"glIsBuffer\");\n\tglad_glBufferData = (PFNGLBUFFERDATAPROC)load(\"glBufferData\");\n\tglad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load(\"glBufferSubData\");\n\tglad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load(\"glGetBufferSubData\");\n\tglad_glMapBuffer = (PFNGLMAPBUFFERPROC)load(\"glMapBuffer\");\n\tglad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load(\"glUnmapBuffer\");\n\tglad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load(\"glGetBufferParameteriv\");\n\tglad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load(\"glGetBufferPointerv\");\n}\nstatic void load_GL_VERSION_2_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_2_0) return;\n\tglad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load(\"glBlendEquationSeparate\");\n\tglad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load(\"glDrawBuffers\");\n\tglad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load(\"glStencilOpSeparate\");\n\tglad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load(\"glStencilFuncSeparate\");\n\tglad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load(\"glStencilMaskSeparate\");\n\tglad_glAttachShader = (PFNGLATTACHSHADERPROC)load(\"glAttachShader\");\n\tglad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load(\"glBindAttribLocation\");\n\tglad_glCompileShader = (PFNGLCOMPILESHADERPROC)load(\"glCompileShader\");\n\tglad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load(\"glCreateProgram\");\n\tglad_glCreateShader = (PFNGLCREATESHADERPROC)load(\"glCreateShader\");\n\tglad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load(\"glDeleteProgram\");\n\tglad_glDeleteShader = (PFNGLDELETESHADERPROC)load(\"glDeleteShader\");\n\tglad_glDetachShader = (PFNGLDETACHSHADERPROC)load(\"glDetachShader\");\n\tglad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load(\"glDisableVertexAttribArray\");\n\tglad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load(\"glEnableVertexAttribArray\");\n\tglad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load(\"glGetActiveAttrib\");\n\tglad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load(\"glGetActiveUniform\");\n\tglad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load(\"glGetAttachedShaders\");\n\tglad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load(\"glGetAttribLocation\");\n\tglad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load(\"glGetProgramiv\");\n\tglad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load(\"glGetProgramInfoLog\");\n\tglad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load(\"glGetShaderiv\");\n\tglad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load(\"glGetShaderInfoLog\");\n\tglad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load(\"glGetShaderSource\");\n\tglad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load(\"glGetUniformLocation\");\n\tglad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load(\"glGetUniformfv\");\n\tglad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load(\"glGetUniformiv\");\n\tglad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load(\"glGetVertexAttribdv\");\n\tglad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load(\"glGetVertexAttribfv\");\n\tglad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load(\"glGetVertexAttribiv\");\n\tglad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load(\"glGetVertexAttribPointerv\");\n\tglad_glIsProgram = (PFNGLISPROGRAMPROC)load(\"glIsProgram\");\n\tglad_glIsShader = (PFNGLISSHADERPROC)load(\"glIsShader\");\n\tglad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load(\"glLinkProgram\");\n\tglad_glShaderSource = (PFNGLSHADERSOURCEPROC)load(\"glShaderSource\");\n\tglad_glUseProgram = (PFNGLUSEPROGRAMPROC)load(\"glUseProgram\");\n\tglad_glUniform1f = (PFNGLUNIFORM1FPROC)load(\"glUniform1f\");\n\tglad_glUniform2f = (PFNGLUNIFORM2FPROC)load(\"glUniform2f\");\n\tglad_glUniform3f = (PFNGLUNIFORM3FPROC)load(\"glUniform3f\");\n\tglad_glUniform4f = (PFNGLUNIFORM4FPROC)load(\"glUniform4f\");\n\tglad_glUniform1i = (PFNGLUNIFORM1IPROC)load(\"glUniform1i\");\n\tglad_glUniform2i = (PFNGLUNIFORM2IPROC)load(\"glUniform2i\");\n\tglad_glUniform3i = (PFNGLUNIFORM3IPROC)load(\"glUniform3i\");\n\tglad_glUniform4i = (PFNGLUNIFORM4IPROC)load(\"glUniform4i\");\n\tglad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load(\"glUniform1fv\");\n\tglad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load(\"glUniform2fv\");\n\tglad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load(\"glUniform3fv\");\n\tglad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load(\"glUniform4fv\");\n\tglad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load(\"glUniform1iv\");\n\tglad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load(\"glUniform2iv\");\n\tglad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load(\"glUniform3iv\");\n\tglad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load(\"glUniform4iv\");\n\tglad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load(\"glUniformMatrix2fv\");\n\tglad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load(\"glUniformMatrix3fv\");\n\tglad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load(\"glUniformMatrix4fv\");\n\tglad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load(\"glValidateProgram\");\n\tglad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load(\"glVertexAttrib1d\");\n\tglad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load(\"glVertexAttrib1dv\");\n\tglad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load(\"glVertexAttrib1f\");\n\tglad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load(\"glVertexAttrib1fv\");\n\tglad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load(\"glVertexAttrib1s\");\n\tglad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load(\"glVertexAttrib1sv\");\n\tglad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load(\"glVertexAttrib2d\");\n\tglad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load(\"glVertexAttrib2dv\");\n\tglad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load(\"glVertexAttrib2f\");\n\tglad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load(\"glVertexAttrib2fv\");\n\tglad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load(\"glVertexAttrib2s\");\n\tglad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load(\"glVertexAttrib2sv\");\n\tglad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load(\"glVertexAttrib3d\");\n\tglad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load(\"glVertexAttrib3dv\");\n\tglad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load(\"glVertexAttrib3f\");\n\tglad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load(\"glVertexAttrib3fv\");\n\tglad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load(\"glVertexAttrib3s\");\n\tglad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load(\"glVertexAttrib3sv\");\n\tglad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load(\"glVertexAttrib4Nbv\");\n\tglad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load(\"glVertexAttrib4Niv\");\n\tglad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load(\"glVertexAttrib4Nsv\");\n\tglad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load(\"glVertexAttrib4Nub\");\n\tglad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load(\"glVertexAttrib4Nubv\");\n\tglad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load(\"glVertexAttrib4Nuiv\");\n\tglad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load(\"glVertexAttrib4Nusv\");\n\tglad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load(\"glVertexAttrib4bv\");\n\tglad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load(\"glVertexAttrib4d\");\n\tglad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load(\"glVertexAttrib4dv\");\n\tglad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load(\"glVertexAttrib4f\");\n\tglad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load(\"glVertexAttrib4fv\");\n\tglad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load(\"glVertexAttrib4iv\");\n\tglad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load(\"glVertexAttrib4s\");\n\tglad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load(\"glVertexAttrib4sv\");\n\tglad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load(\"glVertexAttrib4ubv\");\n\tglad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load(\"glVertexAttrib4uiv\");\n\tglad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load(\"glVertexAttrib4usv\");\n\tglad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load(\"glVertexAttribPointer\");\n}\nstatic void load_GL_VERSION_2_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_2_1) return;\n\tglad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load(\"glUniformMatrix2x3fv\");\n\tglad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load(\"glUniformMatrix3x2fv\");\n\tglad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load(\"glUniformMatrix2x4fv\");\n\tglad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load(\"glUniformMatrix4x2fv\");\n\tglad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load(\"glUniformMatrix3x4fv\");\n\tglad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load(\"glUniformMatrix4x3fv\");\n}\nstatic void load_GL_VERSION_3_0(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_0) return;\n\tglad_glColorMaski = (PFNGLCOLORMASKIPROC)load(\"glColorMaski\");\n\tglad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load(\"glGetBooleani_v\");\n\tglad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load(\"glGetIntegeri_v\");\n\tglad_glEnablei = (PFNGLENABLEIPROC)load(\"glEnablei\");\n\tglad_glDisablei = (PFNGLDISABLEIPROC)load(\"glDisablei\");\n\tglad_glIsEnabledi = (PFNGLISENABLEDIPROC)load(\"glIsEnabledi\");\n\tglad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load(\"glBeginTransformFeedback\");\n\tglad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load(\"glEndTransformFeedback\");\n\tglad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load(\"glBindBufferRange\");\n\tglad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load(\"glBindBufferBase\");\n\tglad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load(\"glTransformFeedbackVaryings\");\n\tglad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load(\"glGetTransformFeedbackVarying\");\n\tglad_glClampColor = (PFNGLCLAMPCOLORPROC)load(\"glClampColor\");\n\tglad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load(\"glBeginConditionalRender\");\n\tglad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load(\"glEndConditionalRender\");\n\tglad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load(\"glVertexAttribIPointer\");\n\tglad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load(\"glGetVertexAttribIiv\");\n\tglad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load(\"glGetVertexAttribIuiv\");\n\tglad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load(\"glVertexAttribI1i\");\n\tglad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load(\"glVertexAttribI2i\");\n\tglad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load(\"glVertexAttribI3i\");\n\tglad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load(\"glVertexAttribI4i\");\n\tglad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load(\"glVertexAttribI1ui\");\n\tglad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load(\"glVertexAttribI2ui\");\n\tglad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load(\"glVertexAttribI3ui\");\n\tglad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load(\"glVertexAttribI4ui\");\n\tglad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load(\"glVertexAttribI1iv\");\n\tglad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load(\"glVertexAttribI2iv\");\n\tglad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load(\"glVertexAttribI3iv\");\n\tglad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load(\"glVertexAttribI4iv\");\n\tglad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load(\"glVertexAttribI1uiv\");\n\tglad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load(\"glVertexAttribI2uiv\");\n\tglad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load(\"glVertexAttribI3uiv\");\n\tglad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load(\"glVertexAttribI4uiv\");\n\tglad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load(\"glVertexAttribI4bv\");\n\tglad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load(\"glVertexAttribI4sv\");\n\tglad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load(\"glVertexAttribI4ubv\");\n\tglad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load(\"glVertexAttribI4usv\");\n\tglad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load(\"glGetUniformuiv\");\n\tglad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load(\"glBindFragDataLocation\");\n\tglad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load(\"glGetFragDataLocation\");\n\tglad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load(\"glUniform1ui\");\n\tglad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load(\"glUniform2ui\");\n\tglad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load(\"glUniform3ui\");\n\tglad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load(\"glUniform4ui\");\n\tglad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load(\"glUniform1uiv\");\n\tglad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load(\"glUniform2uiv\");\n\tglad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load(\"glUniform3uiv\");\n\tglad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load(\"glUniform4uiv\");\n\tglad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load(\"glTexParameterIiv\");\n\tglad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load(\"glTexParameterIuiv\");\n\tglad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load(\"glGetTexParameterIiv\");\n\tglad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load(\"glGetTexParameterIuiv\");\n\tglad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load(\"glClearBufferiv\");\n\tglad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load(\"glClearBufferuiv\");\n\tglad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load(\"glClearBufferfv\");\n\tglad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load(\"glClearBufferfi\");\n\tglad_glGetStringi = (PFNGLGETSTRINGIPROC)load(\"glGetStringi\");\n\tglad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load(\"glIsRenderbuffer\");\n\tglad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load(\"glBindRenderbuffer\");\n\tglad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load(\"glDeleteRenderbuffers\");\n\tglad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load(\"glGenRenderbuffers\");\n\tglad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load(\"glRenderbufferStorage\");\n\tglad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load(\"glGetRenderbufferParameteriv\");\n\tglad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load(\"glIsFramebuffer\");\n\tglad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load(\"glBindFramebuffer\");\n\tglad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load(\"glDeleteFramebuffers\");\n\tglad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load(\"glGenFramebuffers\");\n\tglad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load(\"glCheckFramebufferStatus\");\n\tglad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load(\"glFramebufferTexture1D\");\n\tglad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load(\"glFramebufferTexture2D\");\n\tglad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load(\"glFramebufferTexture3D\");\n\tglad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load(\"glFramebufferRenderbuffer\");\n\tglad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load(\"glGetFramebufferAttachmentParameteriv\");\n\tglad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load(\"glGenerateMipmap\");\n\tglad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load(\"glBlitFramebuffer\");\n\tglad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load(\"glRenderbufferStorageMultisample\");\n\tglad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load(\"glFramebufferTextureLayer\");\n\tglad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load(\"glMapBufferRange\");\n\tglad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load(\"glFlushMappedBufferRange\");\n\tglad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load(\"glBindVertexArray\");\n\tglad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load(\"glDeleteVertexArrays\");\n\tglad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load(\"glGenVertexArrays\");\n\tglad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load(\"glIsVertexArray\");\n}\nstatic void load_GL_VERSION_3_1(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_1) return;\n\tglad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load(\"glDrawArraysInstanced\");\n\tglad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load(\"glDrawElementsInstanced\");\n\tglad_glTexBuffer = (PFNGLTEXBUFFERPROC)load(\"glTexBuffer\");\n\tglad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load(\"glPrimitiveRestartIndex\");\n\tglad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load(\"glCopyBufferSubData\");\n\tglad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load(\"glGetUniformIndices\");\n\tglad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load(\"glGetActiveUniformsiv\");\n\tglad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load(\"glGetActiveUniformName\");\n\tglad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load(\"glGetUniformBlockIndex\");\n\tglad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load(\"glGetActiveUniformBlockiv\");\n\tglad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load(\"glGetActiveUniformBlockName\");\n\tglad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load(\"glUniformBlockBinding\");\n\tglad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load(\"glBindBufferRange\");\n\tglad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load(\"glBindBufferBase\");\n\tglad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load(\"glGetIntegeri_v\");\n}\nstatic void load_GL_VERSION_3_2(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_2) return;\n\tglad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load(\"glDrawElementsBaseVertex\");\n\tglad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load(\"glDrawRangeElementsBaseVertex\");\n\tglad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load(\"glDrawElementsInstancedBaseVertex\");\n\tglad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load(\"glMultiDrawElementsBaseVertex\");\n\tglad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load(\"glProvokingVertex\");\n\tglad_glFenceSync = (PFNGLFENCESYNCPROC)load(\"glFenceSync\");\n\tglad_glIsSync = (PFNGLISSYNCPROC)load(\"glIsSync\");\n\tglad_glDeleteSync = (PFNGLDELETESYNCPROC)load(\"glDeleteSync\");\n\tglad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load(\"glClientWaitSync\");\n\tglad_glWaitSync = (PFNGLWAITSYNCPROC)load(\"glWaitSync\");\n\tglad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load(\"glGetInteger64v\");\n\tglad_glGetSynciv = (PFNGLGETSYNCIVPROC)load(\"glGetSynciv\");\n\tglad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load(\"glGetInteger64i_v\");\n\tglad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load(\"glGetBufferParameteri64v\");\n\tglad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load(\"glFramebufferTexture\");\n\tglad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load(\"glTexImage2DMultisample\");\n\tglad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load(\"glTexImage3DMultisample\");\n\tglad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load(\"glGetMultisamplefv\");\n\tglad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load(\"glSampleMaski\");\n}\nstatic void load_GL_VERSION_3_3(GLADloadproc load) {\n\tif(!GLAD_GL_VERSION_3_3) return;\n\tglad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load(\"glBindFragDataLocationIndexed\");\n\tglad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load(\"glGetFragDataIndex\");\n\tglad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load(\"glGenSamplers\");\n\tglad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load(\"glDeleteSamplers\");\n\tglad_glIsSampler = (PFNGLISSAMPLERPROC)load(\"glIsSampler\");\n\tglad_glBindSampler = (PFNGLBINDSAMPLERPROC)load(\"glBindSampler\");\n\tglad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load(\"glSamplerParameteri\");\n\tglad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load(\"glSamplerParameteriv\");\n\tglad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load(\"glSamplerParameterf\");\n\tglad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load(\"glSamplerParameterfv\");\n\tglad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load(\"glSamplerParameterIiv\");\n\tglad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load(\"glSamplerParameterIuiv\");\n\tglad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load(\"glGetSamplerParameteriv\");\n\tglad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load(\"glGetSamplerParameterIiv\");\n\tglad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load(\"glGetSamplerParameterfv\");\n\tglad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load(\"glGetSamplerParameterIuiv\");\n\tglad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load(\"glQueryCounter\");\n\tglad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load(\"glGetQueryObjecti64v\");\n\tglad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load(\"glGetQueryObjectui64v\");\n\tglad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load(\"glVertexAttribDivisor\");\n\tglad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load(\"glVertexAttribP1ui\");\n\tglad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load(\"glVertexAttribP1uiv\");\n\tglad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load(\"glVertexAttribP2ui\");\n\tglad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load(\"glVertexAttribP2uiv\");\n\tglad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load(\"glVertexAttribP3ui\");\n\tglad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load(\"glVertexAttribP3uiv\");\n\tglad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load(\"glVertexAttribP4ui\");\n\tglad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load(\"glVertexAttribP4uiv\");\n\tglad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load(\"glVertexP2ui\");\n\tglad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load(\"glVertexP2uiv\");\n\tglad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load(\"glVertexP3ui\");\n\tglad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load(\"glVertexP3uiv\");\n\tglad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load(\"glVertexP4ui\");\n\tglad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load(\"glVertexP4uiv\");\n\tglad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load(\"glTexCoordP1ui\");\n\tglad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load(\"glTexCoordP1uiv\");\n\tglad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load(\"glTexCoordP2ui\");\n\tglad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load(\"glTexCoordP2uiv\");\n\tglad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load(\"glTexCoordP3ui\");\n\tglad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load(\"glTexCoordP3uiv\");\n\tglad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load(\"glTexCoordP4ui\");\n\tglad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load(\"glTexCoordP4uiv\");\n\tglad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load(\"glMultiTexCoordP1ui\");\n\tglad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load(\"glMultiTexCoordP1uiv\");\n\tglad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load(\"glMultiTexCoordP2ui\");\n\tglad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load(\"glMultiTexCoordP2uiv\");\n\tglad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load(\"glMultiTexCoordP3ui\");\n\tglad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load(\"glMultiTexCoordP3uiv\");\n\tglad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load(\"glMultiTexCoordP4ui\");\n\tglad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load(\"glMultiTexCoordP4uiv\");\n\tglad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load(\"glNormalP3ui\");\n\tglad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load(\"glNormalP3uiv\");\n\tglad_glColorP3ui = (PFNGLCOLORP3UIPROC)load(\"glColorP3ui\");\n\tglad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load(\"glColorP3uiv\");\n\tglad_glColorP4ui = (PFNGLCOLORP4UIPROC)load(\"glColorP4ui\");\n\tglad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load(\"glColorP4uiv\");\n\tglad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load(\"glSecondaryColorP3ui\");\n\tglad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load(\"glSecondaryColorP3uiv\");\n}\nstatic int find_extensionsGL(void) {\n\tif (!get_exts()) return 0;\n\t(void)&has_ext;\n\tfree_exts();\n\treturn 1;\n}\n\nstatic void find_coreGL(void) {\n\n    /* Thank you @elmindreda\n     * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176\n     * https://github.com/glfw/glfw/blob/master/src/context.c#L36\n     */\n    int i, major, minor;\n\n    const char* version;\n    const char* prefixes[] = {\n        \"OpenGL ES-CM \",\n        \"OpenGL ES-CL \",\n        \"OpenGL ES \",\n        NULL\n    };\n\n    version = (const char*) glGetString(GL_VERSION);\n    if (!version) return;\n\n    for (i = 0;  prefixes[i];  i++) {\n        const size_t length = strlen(prefixes[i]);\n        if (strncmp(version, prefixes[i], length) == 0) {\n            version += length;\n            break;\n        }\n    }\n\n/* PR #18 */\n#ifdef _MSC_VER\n    sscanf_s(version, \"%d.%d\", &major, &minor);\n#else\n    sscanf(version, \"%d.%d\", &major, &minor);\n#endif\n\n    GLVersion.major = major; GLVersion.minor = minor;\n    max_loaded_major = major; max_loaded_minor = minor;\n\tGLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1;\n\tGLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1;\n\tGLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1;\n\tGLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1;\n\tGLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1;\n\tGLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1;\n\tGLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;\n\tGLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2;\n\tGLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;\n\tGLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;\n\tGLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;\n\tGLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3;\n\tif (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) {\n\t\tmax_loaded_major = 3;\n\t\tmax_loaded_minor = 3;\n\t}\n}\n\nint gladLoadGLLoader(GLADloadproc load) {\n\tGLVersion.major = 0; GLVersion.minor = 0;\n\tglGetString = (PFNGLGETSTRINGPROC)load(\"glGetString\");\n\tif(glGetString == NULL) return 0;\n\tif(glGetString(GL_VERSION) == NULL) return 0;\n\tfind_coreGL();\n\tload_GL_VERSION_1_0(load);\n\tload_GL_VERSION_1_1(load);\n\tload_GL_VERSION_1_2(load);\n\tload_GL_VERSION_1_3(load);\n\tload_GL_VERSION_1_4(load);\n\tload_GL_VERSION_1_5(load);\n\tload_GL_VERSION_2_0(load);\n\tload_GL_VERSION_2_1(load);\n\tload_GL_VERSION_3_0(load);\n\tload_GL_VERSION_3_1(load);\n\tload_GL_VERSION_3_2(load);\n\tload_GL_VERSION_3_3(load);\n\n\tif (!find_extensionsGL()) return 0;\n\treturn GLVersion.major != 0 || GLVersion.minor != 0;\n}\n\n"
  },
  {
    "path": "libraries/glad/glad_old.h",
    "content": "/*\n\n    OpenGL loader generated by glad 0.1.34 on Tue Jul  6 15:41:26 2021.\n\n    Language/Generator: C/C++\n    Specification: gl\n    APIs: gl=3.3\n    Profile: compatibility\n    Extensions:\n        \n    Loader: True\n    Local files: False\n    Omit khrplatform: False\n    Reproducible: False\n\n    Commandline:\n        --profile=\"compatibility\" --api=\"gl=3.3\" --generator=\"c\" --spec=\"gl\" --extensions=\"\"\n    Online:\n        https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D3.3\n*/\n\n\n#ifndef __glad_h_\n#define __glad_h_\n\n#ifdef __gl_h_\n#error OpenGL header already included, remove this include, glad already provides it\n#endif\n#define __gl_h_\n\n#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)\n#define APIENTRY __stdcall\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY\n#endif\n#ifndef APIENTRYP\n#define APIENTRYP APIENTRY *\n#endif\n\n#ifndef GLAPIENTRY\n#define GLAPIENTRY APIENTRY\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstruct gladGLversionStruct {\n    int major;\n    int minor;\n};\n\ntypedef void* (* GLADloadproc)(const char *name);\n\n#ifndef GLAPI\n# if defined(GLAD_GLAPI_EXPORT)\n#  if defined(_WIN32) || defined(__CYGWIN__)\n#   if defined(GLAD_GLAPI_EXPORT_BUILD)\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllexport)) extern\n#    else\n#     define GLAPI __declspec(dllexport) extern\n#    endif\n#   else\n#    if defined(__GNUC__)\n#     define GLAPI __attribute__ ((dllimport)) extern\n#    else\n#     define GLAPI __declspec(dllimport) extern\n#    endif\n#   endif\n#  elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD)\n#   define GLAPI __attribute__ ((visibility (\"default\"))) extern\n#  else\n#   define GLAPI extern\n#  endif\n# else\n#  define GLAPI extern\n# endif\n#endif\n\nGLAPI struct gladGLversionStruct GLVersion;\n\nGLAPI int gladLoadGL(void);\n\nGLAPI int gladLoadGLLoader(GLADloadproc);\n\n#include <KHR/khrplatform.h>\ntypedef unsigned int GLenum;\ntypedef unsigned char GLboolean;\ntypedef unsigned int GLbitfield;\ntypedef void GLvoid;\ntypedef khronos_int8_t GLbyte;\ntypedef khronos_uint8_t GLubyte;\ntypedef khronos_int16_t GLshort;\ntypedef khronos_uint16_t GLushort;\ntypedef int GLint;\ntypedef unsigned int GLuint;\ntypedef khronos_int32_t GLclampx;\ntypedef int GLsizei;\ntypedef khronos_float_t GLfloat;\ntypedef khronos_float_t GLclampf;\ntypedef double GLdouble;\ntypedef double GLclampd;\ntypedef void *GLeglClientBufferEXT;\ntypedef void *GLeglImageOES;\ntypedef char GLchar;\ntypedef char GLcharARB;\n#ifdef __APPLE__\ntypedef void *GLhandleARB;\n#else\ntypedef unsigned int GLhandleARB;\n#endif\ntypedef khronos_uint16_t GLhalf;\ntypedef khronos_uint16_t GLhalfARB;\ntypedef khronos_int32_t GLfixed;\ntypedef khronos_intptr_t GLintptr;\ntypedef khronos_intptr_t GLintptrARB;\ntypedef khronos_ssize_t GLsizeiptr;\ntypedef khronos_ssize_t GLsizeiptrARB;\ntypedef khronos_int64_t GLint64;\ntypedef khronos_int64_t GLint64EXT;\ntypedef khronos_uint64_t GLuint64;\ntypedef khronos_uint64_t GLuint64EXT;\ntypedef struct __GLsync *GLsync;\nstruct _cl_context;\nstruct _cl_event;\ntypedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\ntypedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);\ntypedef unsigned short GLhalfNV;\ntypedef GLintptr GLvdpauSurfaceNV;\ntypedef void (APIENTRY *GLVULKANPROCNV)(void);\n#define GL_DEPTH_BUFFER_BIT 0x00000100\n#define GL_STENCIL_BUFFER_BIT 0x00000400\n#define GL_COLOR_BUFFER_BIT 0x00004000\n#define GL_FALSE 0\n#define GL_TRUE 1\n#define GL_POINTS 0x0000\n#define GL_LINES 0x0001\n#define GL_LINE_LOOP 0x0002\n#define GL_LINE_STRIP 0x0003\n#define GL_TRIANGLES 0x0004\n#define GL_TRIANGLE_STRIP 0x0005\n#define GL_TRIANGLE_FAN 0x0006\n#define GL_QUADS 0x0007\n#define GL_NEVER 0x0200\n#define GL_LESS 0x0201\n#define GL_EQUAL 0x0202\n#define GL_LEQUAL 0x0203\n#define GL_GREATER 0x0204\n#define GL_NOTEQUAL 0x0205\n#define GL_GEQUAL 0x0206\n#define GL_ALWAYS 0x0207\n#define GL_ZERO 0\n#define GL_ONE 1\n#define GL_SRC_COLOR 0x0300\n#define GL_ONE_MINUS_SRC_COLOR 0x0301\n#define GL_SRC_ALPHA 0x0302\n#define GL_ONE_MINUS_SRC_ALPHA 0x0303\n#define GL_DST_ALPHA 0x0304\n#define GL_ONE_MINUS_DST_ALPHA 0x0305\n#define GL_DST_COLOR 0x0306\n#define GL_ONE_MINUS_DST_COLOR 0x0307\n#define GL_SRC_ALPHA_SATURATE 0x0308\n#define GL_NONE 0\n#define GL_FRONT_LEFT 0x0400\n#define GL_FRONT_RIGHT 0x0401\n#define GL_BACK_LEFT 0x0402\n#define GL_BACK_RIGHT 0x0403\n#define GL_FRONT 0x0404\n#define GL_BACK 0x0405\n#define GL_LEFT 0x0406\n#define GL_RIGHT 0x0407\n#define GL_FRONT_AND_BACK 0x0408\n#define GL_NO_ERROR 0\n#define GL_INVALID_ENUM 0x0500\n#define GL_INVALID_VALUE 0x0501\n#define GL_INVALID_OPERATION 0x0502\n#define GL_OUT_OF_MEMORY 0x0505\n#define GL_CW 0x0900\n#define GL_CCW 0x0901\n#define GL_POINT_SIZE 0x0B11\n#define GL_POINT_SIZE_RANGE 0x0B12\n#define GL_POINT_SIZE_GRANULARITY 0x0B13\n#define GL_LINE_SMOOTH 0x0B20\n#define GL_LINE_WIDTH 0x0B21\n#define GL_LINE_WIDTH_RANGE 0x0B22\n#define GL_LINE_WIDTH_GRANULARITY 0x0B23\n#define GL_POLYGON_MODE 0x0B40\n#define GL_POLYGON_SMOOTH 0x0B41\n#define GL_CULL_FACE 0x0B44\n#define GL_CULL_FACE_MODE 0x0B45\n#define GL_FRONT_FACE 0x0B46\n#define GL_DEPTH_RANGE 0x0B70\n#define GL_DEPTH_TEST 0x0B71\n#define GL_DEPTH_WRITEMASK 0x0B72\n#define GL_DEPTH_CLEAR_VALUE 0x0B73\n#define GL_DEPTH_FUNC 0x0B74\n#define GL_STENCIL_TEST 0x0B90\n#define GL_STENCIL_CLEAR_VALUE 0x0B91\n#define GL_STENCIL_FUNC 0x0B92\n#define GL_STENCIL_VALUE_MASK 0x0B93\n#define GL_STENCIL_FAIL 0x0B94\n#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95\n#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96\n#define GL_STENCIL_REF 0x0B97\n#define GL_STENCIL_WRITEMASK 0x0B98\n#define GL_VIEWPORT 0x0BA2\n#define GL_DITHER 0x0BD0\n#define GL_BLEND_DST 0x0BE0\n#define GL_BLEND_SRC 0x0BE1\n#define GL_BLEND 0x0BE2\n#define GL_LOGIC_OP_MODE 0x0BF0\n#define GL_DRAW_BUFFER 0x0C01\n#define GL_READ_BUFFER 0x0C02\n#define GL_SCISSOR_BOX 0x0C10\n#define GL_SCISSOR_TEST 0x0C11\n#define GL_COLOR_CLEAR_VALUE 0x0C22\n#define GL_COLOR_WRITEMASK 0x0C23\n#define GL_DOUBLEBUFFER 0x0C32\n#define GL_STEREO 0x0C33\n#define GL_LINE_SMOOTH_HINT 0x0C52\n#define GL_POLYGON_SMOOTH_HINT 0x0C53\n#define GL_UNPACK_SWAP_BYTES 0x0CF0\n#define GL_UNPACK_LSB_FIRST 0x0CF1\n#define GL_UNPACK_ROW_LENGTH 0x0CF2\n#define GL_UNPACK_SKIP_ROWS 0x0CF3\n#define GL_UNPACK_SKIP_PIXELS 0x0CF4\n#define GL_UNPACK_ALIGNMENT 0x0CF5\n#define GL_PACK_SWAP_BYTES 0x0D00\n#define GL_PACK_LSB_FIRST 0x0D01\n#define GL_PACK_ROW_LENGTH 0x0D02\n#define GL_PACK_SKIP_ROWS 0x0D03\n#define GL_PACK_SKIP_PIXELS 0x0D04\n#define GL_PACK_ALIGNMENT 0x0D05\n#define GL_MAX_TEXTURE_SIZE 0x0D33\n#define GL_MAX_VIEWPORT_DIMS 0x0D3A\n#define GL_SUBPIXEL_BITS 0x0D50\n#define GL_TEXTURE_1D 0x0DE0\n#define GL_TEXTURE_2D 0x0DE1\n#define GL_TEXTURE_WIDTH 0x1000\n#define GL_TEXTURE_HEIGHT 0x1001\n#define GL_TEXTURE_BORDER_COLOR 0x1004\n#define GL_DONT_CARE 0x1100\n#define GL_FASTEST 0x1101\n#define GL_NICEST 0x1102\n#define GL_BYTE 0x1400\n#define GL_UNSIGNED_BYTE 0x1401\n#define GL_SHORT 0x1402\n#define GL_UNSIGNED_SHORT 0x1403\n#define GL_INT 0x1404\n#define GL_UNSIGNED_INT 0x1405\n#define GL_FLOAT 0x1406\n#define GL_STACK_OVERFLOW 0x0503\n#define GL_STACK_UNDERFLOW 0x0504\n#define GL_CLEAR 0x1500\n#define GL_AND 0x1501\n#define GL_AND_REVERSE 0x1502\n#define GL_COPY 0x1503\n#define GL_AND_INVERTED 0x1504\n#define GL_NOOP 0x1505\n#define GL_XOR 0x1506\n#define GL_OR 0x1507\n#define GL_NOR 0x1508\n#define GL_EQUIV 0x1509\n#define GL_INVERT 0x150A\n#define GL_OR_REVERSE 0x150B\n#define GL_COPY_INVERTED 0x150C\n#define GL_OR_INVERTED 0x150D\n#define GL_NAND 0x150E\n#define GL_SET 0x150F\n#define GL_TEXTURE 0x1702\n#define GL_COLOR 0x1800\n#define GL_DEPTH 0x1801\n#define GL_STENCIL 0x1802\n#define GL_STENCIL_INDEX 0x1901\n#define GL_DEPTH_COMPONENT 0x1902\n#define GL_RED 0x1903\n#define GL_GREEN 0x1904\n#define GL_BLUE 0x1905\n#define GL_ALPHA 0x1906\n#define GL_RGB 0x1907\n#define GL_RGBA 0x1908\n#define GL_POINT 0x1B00\n#define GL_LINE 0x1B01\n#define GL_FILL 0x1B02\n#define GL_KEEP 0x1E00\n#define GL_REPLACE 0x1E01\n#define GL_INCR 0x1E02\n#define GL_DECR 0x1E03\n#define GL_VENDOR 0x1F00\n#define GL_RENDERER 0x1F01\n#define GL_VERSION 0x1F02\n#define GL_EXTENSIONS 0x1F03\n#define GL_NEAREST 0x2600\n#define GL_LINEAR 0x2601\n#define GL_NEAREST_MIPMAP_NEAREST 0x2700\n#define GL_LINEAR_MIPMAP_NEAREST 0x2701\n#define GL_NEAREST_MIPMAP_LINEAR 0x2702\n#define GL_LINEAR_MIPMAP_LINEAR 0x2703\n#define GL_TEXTURE_MAG_FILTER 0x2800\n#define GL_TEXTURE_MIN_FILTER 0x2801\n#define GL_TEXTURE_WRAP_S 0x2802\n#define GL_TEXTURE_WRAP_T 0x2803\n#define GL_REPEAT 0x2901\n#define GL_CURRENT_BIT 0x00000001\n#define GL_POINT_BIT 0x00000002\n#define GL_LINE_BIT 0x00000004\n#define GL_POLYGON_BIT 0x00000008\n#define GL_POLYGON_STIPPLE_BIT 0x00000010\n#define GL_PIXEL_MODE_BIT 0x00000020\n#define GL_LIGHTING_BIT 0x00000040\n#define GL_FOG_BIT 0x00000080\n#define GL_ACCUM_BUFFER_BIT 0x00000200\n#define GL_VIEWPORT_BIT 0x00000800\n#define GL_TRANSFORM_BIT 0x00001000\n#define GL_ENABLE_BIT 0x00002000\n#define GL_HINT_BIT 0x00008000\n#define GL_EVAL_BIT 0x00010000\n#define GL_LIST_BIT 0x00020000\n#define GL_TEXTURE_BIT 0x00040000\n#define GL_SCISSOR_BIT 0x00080000\n#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF\n#define GL_QUAD_STRIP 0x0008\n#define GL_POLYGON 0x0009\n#define GL_ACCUM 0x0100\n#define GL_LOAD 0x0101\n#define GL_RETURN 0x0102\n#define GL_MULT 0x0103\n#define GL_ADD 0x0104\n#define GL_AUX0 0x0409\n#define GL_AUX1 0x040A\n#define GL_AUX2 0x040B\n#define GL_AUX3 0x040C\n#define GL_2D 0x0600\n#define GL_3D 0x0601\n#define GL_3D_COLOR 0x0602\n#define GL_3D_COLOR_TEXTURE 0x0603\n#define GL_4D_COLOR_TEXTURE 0x0604\n#define GL_PASS_THROUGH_TOKEN 0x0700\n#define GL_POINT_TOKEN 0x0701\n#define GL_LINE_TOKEN 0x0702\n#define GL_POLYGON_TOKEN 0x0703\n#define GL_BITMAP_TOKEN 0x0704\n#define GL_DRAW_PIXEL_TOKEN 0x0705\n#define GL_COPY_PIXEL_TOKEN 0x0706\n#define GL_LINE_RESET_TOKEN 0x0707\n#define GL_EXP 0x0800\n#define GL_EXP2 0x0801\n#define GL_COEFF 0x0A00\n#define GL_ORDER 0x0A01\n#define GL_DOMAIN 0x0A02\n#define GL_PIXEL_MAP_I_TO_I 0x0C70\n#define GL_PIXEL_MAP_S_TO_S 0x0C71\n#define GL_PIXEL_MAP_I_TO_R 0x0C72\n#define GL_PIXEL_MAP_I_TO_G 0x0C73\n#define GL_PIXEL_MAP_I_TO_B 0x0C74\n#define GL_PIXEL_MAP_I_TO_A 0x0C75\n#define GL_PIXEL_MAP_R_TO_R 0x0C76\n#define GL_PIXEL_MAP_G_TO_G 0x0C77\n#define GL_PIXEL_MAP_B_TO_B 0x0C78\n#define GL_PIXEL_MAP_A_TO_A 0x0C79\n#define GL_CURRENT_COLOR 0x0B00\n#define GL_CURRENT_INDEX 0x0B01\n#define GL_CURRENT_NORMAL 0x0B02\n#define GL_CURRENT_TEXTURE_COORDS 0x0B03\n#define GL_CURRENT_RASTER_COLOR 0x0B04\n#define GL_CURRENT_RASTER_INDEX 0x0B05\n#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06\n#define GL_CURRENT_RASTER_POSITION 0x0B07\n#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08\n#define GL_CURRENT_RASTER_DISTANCE 0x0B09\n#define GL_POINT_SMOOTH 0x0B10\n#define GL_LINE_STIPPLE 0x0B24\n#define GL_LINE_STIPPLE_PATTERN 0x0B25\n#define GL_LINE_STIPPLE_REPEAT 0x0B26\n#define GL_LIST_MODE 0x0B30\n#define GL_MAX_LIST_NESTING 0x0B31\n#define GL_LIST_BASE 0x0B32\n#define GL_LIST_INDEX 0x0B33\n#define GL_POLYGON_STIPPLE 0x0B42\n#define GL_EDGE_FLAG 0x0B43\n#define GL_LIGHTING 0x0B50\n#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51\n#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52\n#define GL_LIGHT_MODEL_AMBIENT 0x0B53\n#define GL_SHADE_MODEL 0x0B54\n#define GL_COLOR_MATERIAL_FACE 0x0B55\n#define GL_COLOR_MATERIAL_PARAMETER 0x0B56\n#define GL_COLOR_MATERIAL 0x0B57\n#define GL_FOG 0x0B60\n#define GL_FOG_INDEX 0x0B61\n#define GL_FOG_DENSITY 0x0B62\n#define GL_FOG_START 0x0B63\n#define GL_FOG_END 0x0B64\n#define GL_FOG_MODE 0x0B65\n#define GL_FOG_COLOR 0x0B66\n#define GL_ACCUM_CLEAR_VALUE 0x0B80\n#define GL_MATRIX_MODE 0x0BA0\n#define GL_NORMALIZE 0x0BA1\n#define GL_MODELVIEW_STACK_DEPTH 0x0BA3\n#define GL_PROJECTION_STACK_DEPTH 0x0BA4\n#define GL_TEXTURE_STACK_DEPTH 0x0BA5\n#define GL_MODELVIEW_MATRIX 0x0BA6\n#define GL_PROJECTION_MATRIX 0x0BA7\n#define GL_TEXTURE_MATRIX 0x0BA8\n#define GL_ATTRIB_STACK_DEPTH 0x0BB0\n#define GL_ALPHA_TEST 0x0BC0\n#define GL_ALPHA_TEST_FUNC 0x0BC1\n#define GL_ALPHA_TEST_REF 0x0BC2\n#define GL_LOGIC_OP 0x0BF1\n#define GL_AUX_BUFFERS 0x0C00\n#define GL_INDEX_CLEAR_VALUE 0x0C20\n#define GL_INDEX_WRITEMASK 0x0C21\n#define GL_INDEX_MODE 0x0C30\n#define GL_RGBA_MODE 0x0C31\n#define GL_RENDER_MODE 0x0C40\n#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50\n#define GL_POINT_SMOOTH_HINT 0x0C51\n#define GL_FOG_HINT 0x0C54\n#define GL_TEXTURE_GEN_S 0x0C60\n#define GL_TEXTURE_GEN_T 0x0C61\n#define GL_TEXTURE_GEN_R 0x0C62\n#define GL_TEXTURE_GEN_Q 0x0C63\n#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0\n#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1\n#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2\n#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3\n#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4\n#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5\n#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6\n#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7\n#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8\n#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9\n#define GL_MAP_COLOR 0x0D10\n#define GL_MAP_STENCIL 0x0D11\n#define GL_INDEX_SHIFT 0x0D12\n#define GL_INDEX_OFFSET 0x0D13\n#define GL_RED_SCALE 0x0D14\n#define GL_RED_BIAS 0x0D15\n#define GL_ZOOM_X 0x0D16\n#define GL_ZOOM_Y 0x0D17\n#define GL_GREEN_SCALE 0x0D18\n#define GL_GREEN_BIAS 0x0D19\n#define GL_BLUE_SCALE 0x0D1A\n#define GL_BLUE_BIAS 0x0D1B\n#define GL_ALPHA_SCALE 0x0D1C\n#define GL_ALPHA_BIAS 0x0D1D\n#define GL_DEPTH_SCALE 0x0D1E\n#define GL_DEPTH_BIAS 0x0D1F\n#define GL_MAX_EVAL_ORDER 0x0D30\n#define GL_MAX_LIGHTS 0x0D31\n#define GL_MAX_CLIP_PLANES 0x0D32\n#define GL_MAX_PIXEL_MAP_TABLE 0x0D34\n#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35\n#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36\n#define GL_MAX_NAME_STACK_DEPTH 0x0D37\n#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38\n#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39\n#define GL_INDEX_BITS 0x0D51\n#define GL_RED_BITS 0x0D52\n#define GL_GREEN_BITS 0x0D53\n#define GL_BLUE_BITS 0x0D54\n#define GL_ALPHA_BITS 0x0D55\n#define GL_DEPTH_BITS 0x0D56\n#define GL_STENCIL_BITS 0x0D57\n#define GL_ACCUM_RED_BITS 0x0D58\n#define GL_ACCUM_GREEN_BITS 0x0D59\n#define GL_ACCUM_BLUE_BITS 0x0D5A\n#define GL_ACCUM_ALPHA_BITS 0x0D5B\n#define GL_NAME_STACK_DEPTH 0x0D70\n#define GL_AUTO_NORMAL 0x0D80\n#define GL_MAP1_COLOR_4 0x0D90\n#define GL_MAP1_INDEX 0x0D91\n#define GL_MAP1_NORMAL 0x0D92\n#define GL_MAP1_TEXTURE_COORD_1 0x0D93\n#define GL_MAP1_TEXTURE_COORD_2 0x0D94\n#define GL_MAP1_TEXTURE_COORD_3 0x0D95\n#define GL_MAP1_TEXTURE_COORD_4 0x0D96\n#define GL_MAP1_VERTEX_3 0x0D97\n#define GL_MAP1_VERTEX_4 0x0D98\n#define GL_MAP2_COLOR_4 0x0DB0\n#define GL_MAP2_INDEX 0x0DB1\n#define GL_MAP2_NORMAL 0x0DB2\n#define GL_MAP2_TEXTURE_COORD_1 0x0DB3\n#define GL_MAP2_TEXTURE_COORD_2 0x0DB4\n#define GL_MAP2_TEXTURE_COORD_3 0x0DB5\n#define GL_MAP2_TEXTURE_COORD_4 0x0DB6\n#define GL_MAP2_VERTEX_3 0x0DB7\n#define GL_MAP2_VERTEX_4 0x0DB8\n#define GL_MAP1_GRID_DOMAIN 0x0DD0\n#define GL_MAP1_GRID_SEGMENTS 0x0DD1\n#define GL_MAP2_GRID_DOMAIN 0x0DD2\n#define GL_MAP2_GRID_SEGMENTS 0x0DD3\n#define GL_TEXTURE_COMPONENTS 0x1003\n#define GL_TEXTURE_BORDER 0x1005\n#define GL_AMBIENT 0x1200\n#define GL_DIFFUSE 0x1201\n#define GL_SPECULAR 0x1202\n#define GL_POSITION 0x1203\n#define GL_SPOT_DIRECTION 0x1204\n#define GL_SPOT_EXPONENT 0x1205\n#define GL_SPOT_CUTOFF 0x1206\n#define GL_CONSTANT_ATTENUATION 0x1207\n#define GL_LINEAR_ATTENUATION 0x1208\n#define GL_QUADRATIC_ATTENUATION 0x1209\n#define GL_COMPILE 0x1300\n#define GL_COMPILE_AND_EXECUTE 0x1301\n#define GL_2_BYTES 0x1407\n#define GL_3_BYTES 0x1408\n#define GL_4_BYTES 0x1409\n#define GL_EMISSION 0x1600\n#define GL_SHININESS 0x1601\n#define GL_AMBIENT_AND_DIFFUSE 0x1602\n#define GL_COLOR_INDEXES 0x1603\n#define GL_MODELVIEW 0x1700\n#define GL_PROJECTION 0x1701\n#define GL_COLOR_INDEX 0x1900\n#define GL_LUMINANCE 0x1909\n#define GL_LUMINANCE_ALPHA 0x190A\n#define GL_BITMAP 0x1A00\n#define GL_RENDER 0x1C00\n#define GL_FEEDBACK 0x1C01\n#define GL_SELECT 0x1C02\n#define GL_FLAT 0x1D00\n#define GL_SMOOTH 0x1D01\n#define GL_S 0x2000\n#define GL_T 0x2001\n#define GL_R 0x2002\n#define GL_Q 0x2003\n#define GL_MODULATE 0x2100\n#define GL_DECAL 0x2101\n#define GL_TEXTURE_ENV_MODE 0x2200\n#define GL_TEXTURE_ENV_COLOR 0x2201\n#define GL_TEXTURE_ENV 0x2300\n#define GL_EYE_LINEAR 0x2400\n#define GL_OBJECT_LINEAR 0x2401\n#define GL_SPHERE_MAP 0x2402\n#define GL_TEXTURE_GEN_MODE 0x2500\n#define GL_OBJECT_PLANE 0x2501\n#define GL_EYE_PLANE 0x2502\n#define GL_CLAMP 0x2900\n#define GL_CLIP_PLANE0 0x3000\n#define GL_CLIP_PLANE1 0x3001\n#define GL_CLIP_PLANE2 0x3002\n#define GL_CLIP_PLANE3 0x3003\n#define GL_CLIP_PLANE4 0x3004\n#define GL_CLIP_PLANE5 0x3005\n#define GL_LIGHT0 0x4000\n#define GL_LIGHT1 0x4001\n#define GL_LIGHT2 0x4002\n#define GL_LIGHT3 0x4003\n#define GL_LIGHT4 0x4004\n#define GL_LIGHT5 0x4005\n#define GL_LIGHT6 0x4006\n#define GL_LIGHT7 0x4007\n#define GL_COLOR_LOGIC_OP 0x0BF2\n#define GL_POLYGON_OFFSET_UNITS 0x2A00\n#define GL_POLYGON_OFFSET_POINT 0x2A01\n#define GL_POLYGON_OFFSET_LINE 0x2A02\n#define GL_POLYGON_OFFSET_FILL 0x8037\n#define GL_POLYGON_OFFSET_FACTOR 0x8038\n#define GL_TEXTURE_BINDING_1D 0x8068\n#define GL_TEXTURE_BINDING_2D 0x8069\n#define GL_TEXTURE_INTERNAL_FORMAT 0x1003\n#define GL_TEXTURE_RED_SIZE 0x805C\n#define GL_TEXTURE_GREEN_SIZE 0x805D\n#define GL_TEXTURE_BLUE_SIZE 0x805E\n#define GL_TEXTURE_ALPHA_SIZE 0x805F\n#define GL_DOUBLE 0x140A\n#define GL_PROXY_TEXTURE_1D 0x8063\n#define GL_PROXY_TEXTURE_2D 0x8064\n#define GL_R3_G3_B2 0x2A10\n#define GL_RGB4 0x804F\n#define GL_RGB5 0x8050\n#define GL_RGB8 0x8051\n#define GL_RGB10 0x8052\n#define GL_RGB12 0x8053\n#define GL_RGB16 0x8054\n#define GL_RGBA2 0x8055\n#define GL_RGBA4 0x8056\n#define GL_RGB5_A1 0x8057\n#define GL_RGBA8 0x8058\n#define GL_RGB10_A2 0x8059\n#define GL_RGBA12 0x805A\n#define GL_RGBA16 0x805B\n#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001\n#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002\n#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF\n#define GL_VERTEX_ARRAY_POINTER 0x808E\n#define GL_NORMAL_ARRAY_POINTER 0x808F\n#define GL_COLOR_ARRAY_POINTER 0x8090\n#define GL_INDEX_ARRAY_POINTER 0x8091\n#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092\n#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093\n#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0\n#define GL_SELECTION_BUFFER_POINTER 0x0DF3\n#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1\n#define GL_INDEX_LOGIC_OP 0x0BF1\n#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B\n#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1\n#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2\n#define GL_SELECTION_BUFFER_SIZE 0x0DF4\n#define GL_VERTEX_ARRAY 0x8074\n#define GL_NORMAL_ARRAY 0x8075\n#define GL_COLOR_ARRAY 0x8076\n#define GL_INDEX_ARRAY 0x8077\n#define GL_TEXTURE_COORD_ARRAY 0x8078\n#define GL_EDGE_FLAG_ARRAY 0x8079\n#define GL_VERTEX_ARRAY_SIZE 0x807A\n#define GL_VERTEX_ARRAY_TYPE 0x807B\n#define GL_VERTEX_ARRAY_STRIDE 0x807C\n#define GL_NORMAL_ARRAY_TYPE 0x807E\n#define GL_NORMAL_ARRAY_STRIDE 0x807F\n#define GL_COLOR_ARRAY_SIZE 0x8081\n#define GL_COLOR_ARRAY_TYPE 0x8082\n#define GL_COLOR_ARRAY_STRIDE 0x8083\n#define GL_INDEX_ARRAY_TYPE 0x8085\n#define GL_INDEX_ARRAY_STRIDE 0x8086\n#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088\n#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089\n#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A\n#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C\n#define GL_TEXTURE_LUMINANCE_SIZE 0x8060\n#define GL_TEXTURE_INTENSITY_SIZE 0x8061\n#define GL_TEXTURE_PRIORITY 0x8066\n#define GL_TEXTURE_RESIDENT 0x8067\n#define GL_ALPHA4 0x803B\n#define GL_ALPHA8 0x803C\n#define GL_ALPHA12 0x803D\n#define GL_ALPHA16 0x803E\n#define GL_LUMINANCE4 0x803F\n#define GL_LUMINANCE8 0x8040\n#define GL_LUMINANCE12 0x8041\n#define GL_LUMINANCE16 0x8042\n#define GL_LUMINANCE4_ALPHA4 0x8043\n#define GL_LUMINANCE6_ALPHA2 0x8044\n#define GL_LUMINANCE8_ALPHA8 0x8045\n#define GL_LUMINANCE12_ALPHA4 0x8046\n#define GL_LUMINANCE12_ALPHA12 0x8047\n#define GL_LUMINANCE16_ALPHA16 0x8048\n#define GL_INTENSITY 0x8049\n#define GL_INTENSITY4 0x804A\n#define GL_INTENSITY8 0x804B\n#define GL_INTENSITY12 0x804C\n#define GL_INTENSITY16 0x804D\n#define GL_V2F 0x2A20\n#define GL_V3F 0x2A21\n#define GL_C4UB_V2F 0x2A22\n#define GL_C4UB_V3F 0x2A23\n#define GL_C3F_V3F 0x2A24\n#define GL_N3F_V3F 0x2A25\n#define GL_C4F_N3F_V3F 0x2A26\n#define GL_T2F_V3F 0x2A27\n#define GL_T4F_V4F 0x2A28\n#define GL_T2F_C4UB_V3F 0x2A29\n#define GL_T2F_C3F_V3F 0x2A2A\n#define GL_T2F_N3F_V3F 0x2A2B\n#define GL_T2F_C4F_N3F_V3F 0x2A2C\n#define GL_T4F_C4F_N3F_V4F 0x2A2D\n#define GL_UNSIGNED_BYTE_3_3_2 0x8032\n#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034\n#define GL_UNSIGNED_INT_8_8_8_8 0x8035\n#define GL_UNSIGNED_INT_10_10_10_2 0x8036\n#define GL_TEXTURE_BINDING_3D 0x806A\n#define GL_PACK_SKIP_IMAGES 0x806B\n#define GL_PACK_IMAGE_HEIGHT 0x806C\n#define GL_UNPACK_SKIP_IMAGES 0x806D\n#define GL_UNPACK_IMAGE_HEIGHT 0x806E\n#define GL_TEXTURE_3D 0x806F\n#define GL_PROXY_TEXTURE_3D 0x8070\n#define GL_TEXTURE_DEPTH 0x8071\n#define GL_TEXTURE_WRAP_R 0x8072\n#define GL_MAX_3D_TEXTURE_SIZE 0x8073\n#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362\n#define GL_UNSIGNED_SHORT_5_6_5 0x8363\n#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365\n#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366\n#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367\n#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368\n#define GL_BGR 0x80E0\n#define GL_BGRA 0x80E1\n#define GL_MAX_ELEMENTS_VERTICES 0x80E8\n#define GL_MAX_ELEMENTS_INDICES 0x80E9\n#define GL_CLAMP_TO_EDGE 0x812F\n#define GL_TEXTURE_MIN_LOD 0x813A\n#define GL_TEXTURE_MAX_LOD 0x813B\n#define GL_TEXTURE_BASE_LEVEL 0x813C\n#define GL_TEXTURE_MAX_LEVEL 0x813D\n#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12\n#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13\n#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22\n#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23\n#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E\n#define GL_RESCALE_NORMAL 0x803A\n#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8\n#define GL_SINGLE_COLOR 0x81F9\n#define GL_SEPARATE_SPECULAR_COLOR 0x81FA\n#define GL_ALIASED_POINT_SIZE_RANGE 0x846D\n#define GL_TEXTURE0 0x84C0\n#define GL_TEXTURE1 0x84C1\n#define GL_TEXTURE2 0x84C2\n#define GL_TEXTURE3 0x84C3\n#define GL_TEXTURE4 0x84C4\n#define GL_TEXTURE5 0x84C5\n#define GL_TEXTURE6 0x84C6\n#define GL_TEXTURE7 0x84C7\n#define GL_TEXTURE8 0x84C8\n#define GL_TEXTURE9 0x84C9\n#define GL_TEXTURE10 0x84CA\n#define GL_TEXTURE11 0x84CB\n#define GL_TEXTURE12 0x84CC\n#define GL_TEXTURE13 0x84CD\n#define GL_TEXTURE14 0x84CE\n#define GL_TEXTURE15 0x84CF\n#define GL_TEXTURE16 0x84D0\n#define GL_TEXTURE17 0x84D1\n#define GL_TEXTURE18 0x84D2\n#define GL_TEXTURE19 0x84D3\n#define GL_TEXTURE20 0x84D4\n#define GL_TEXTURE21 0x84D5\n#define GL_TEXTURE22 0x84D6\n#define GL_TEXTURE23 0x84D7\n#define GL_TEXTURE24 0x84D8\n#define GL_TEXTURE25 0x84D9\n#define GL_TEXTURE26 0x84DA\n#define GL_TEXTURE27 0x84DB\n#define GL_TEXTURE28 0x84DC\n#define GL_TEXTURE29 0x84DD\n#define GL_TEXTURE30 0x84DE\n#define GL_TEXTURE31 0x84DF\n#define GL_ACTIVE_TEXTURE 0x84E0\n#define GL_MULTISAMPLE 0x809D\n#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE 0x809F\n#define GL_SAMPLE_COVERAGE 0x80A0\n#define GL_SAMPLE_BUFFERS 0x80A8\n#define GL_SAMPLES 0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE 0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT 0x80AB\n#define GL_TEXTURE_CUBE_MAP 0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C\n#define GL_COMPRESSED_RGB 0x84ED\n#define GL_COMPRESSED_RGBA 0x84EE\n#define GL_TEXTURE_COMPRESSION_HINT 0x84EF\n#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0\n#define GL_TEXTURE_COMPRESSED 0x86A1\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3\n#define GL_CLAMP_TO_BORDER 0x812D\n#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1\n#define GL_MAX_TEXTURE_UNITS 0x84E2\n#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3\n#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4\n#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5\n#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6\n#define GL_MULTISAMPLE_BIT 0x20000000\n#define GL_NORMAL_MAP 0x8511\n#define GL_REFLECTION_MAP 0x8512\n#define GL_COMPRESSED_ALPHA 0x84E9\n#define GL_COMPRESSED_LUMINANCE 0x84EA\n#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB\n#define GL_COMPRESSED_INTENSITY 0x84EC\n#define GL_COMBINE 0x8570\n#define GL_COMBINE_RGB 0x8571\n#define GL_COMBINE_ALPHA 0x8572\n#define GL_SOURCE0_RGB 0x8580\n#define GL_SOURCE1_RGB 0x8581\n#define GL_SOURCE2_RGB 0x8582\n#define GL_SOURCE0_ALPHA 0x8588\n#define GL_SOURCE1_ALPHA 0x8589\n#define GL_SOURCE2_ALPHA 0x858A\n#define GL_OPERAND0_RGB 0x8590\n#define GL_OPERAND1_RGB 0x8591\n#define GL_OPERAND2_RGB 0x8592\n#define GL_OPERAND0_ALPHA 0x8598\n#define GL_OPERAND1_ALPHA 0x8599\n#define GL_OPERAND2_ALPHA 0x859A\n#define GL_RGB_SCALE 0x8573\n#define GL_ADD_SIGNED 0x8574\n#define GL_INTERPOLATE 0x8575\n#define GL_SUBTRACT 0x84E7\n#define GL_CONSTANT 0x8576\n#define GL_PRIMARY_COLOR 0x8577\n#define GL_PREVIOUS 0x8578\n#define GL_DOT3_RGB 0x86AE\n#define GL_DOT3_RGBA 0x86AF\n#define GL_BLEND_DST_RGB 0x80C8\n#define GL_BLEND_SRC_RGB 0x80C9\n#define GL_BLEND_DST_ALPHA 0x80CA\n#define GL_BLEND_SRC_ALPHA 0x80CB\n#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128\n#define GL_DEPTH_COMPONENT16 0x81A5\n#define GL_DEPTH_COMPONENT24 0x81A6\n#define GL_DEPTH_COMPONENT32 0x81A7\n#define GL_MIRRORED_REPEAT 0x8370\n#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD\n#define GL_TEXTURE_LOD_BIAS 0x8501\n#define GL_INCR_WRAP 0x8507\n#define GL_DECR_WRAP 0x8508\n#define GL_TEXTURE_DEPTH_SIZE 0x884A\n#define GL_TEXTURE_COMPARE_MODE 0x884C\n#define GL_TEXTURE_COMPARE_FUNC 0x884D\n#define GL_POINT_SIZE_MIN 0x8126\n#define GL_POINT_SIZE_MAX 0x8127\n#define GL_POINT_DISTANCE_ATTENUATION 0x8129\n#define GL_GENERATE_MIPMAP 0x8191\n#define GL_GENERATE_MIPMAP_HINT 0x8192\n#define GL_FOG_COORDINATE_SOURCE 0x8450\n#define GL_FOG_COORDINATE 0x8451\n#define GL_FRAGMENT_DEPTH 0x8452\n#define GL_CURRENT_FOG_COORDINATE 0x8453\n#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454\n#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455\n#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456\n#define GL_FOG_COORDINATE_ARRAY 0x8457\n#define GL_COLOR_SUM 0x8458\n#define GL_CURRENT_SECONDARY_COLOR 0x8459\n#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A\n#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B\n#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C\n#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D\n#define GL_SECONDARY_COLOR_ARRAY 0x845E\n#define GL_TEXTURE_FILTER_CONTROL 0x8500\n#define GL_DEPTH_TEXTURE_MODE 0x884B\n#define GL_COMPARE_R_TO_TEXTURE 0x884E\n#define GL_BLEND_COLOR 0x8005\n#define GL_BLEND_EQUATION 0x8009\n#define GL_CONSTANT_COLOR 0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002\n#define GL_CONSTANT_ALPHA 0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004\n#define GL_FUNC_ADD 0x8006\n#define GL_FUNC_REVERSE_SUBTRACT 0x800B\n#define GL_FUNC_SUBTRACT 0x800A\n#define GL_MIN 0x8007\n#define GL_MAX 0x8008\n#define GL_BUFFER_SIZE 0x8764\n#define GL_BUFFER_USAGE 0x8765\n#define GL_QUERY_COUNTER_BITS 0x8864\n#define GL_CURRENT_QUERY 0x8865\n#define GL_QUERY_RESULT 0x8866\n#define GL_QUERY_RESULT_AVAILABLE 0x8867\n#define GL_ARRAY_BUFFER 0x8892\n#define GL_ELEMENT_ARRAY_BUFFER 0x8893\n#define GL_ARRAY_BUFFER_BINDING 0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F\n#define GL_READ_ONLY 0x88B8\n#define GL_WRITE_ONLY 0x88B9\n#define GL_READ_WRITE 0x88BA\n#define GL_BUFFER_ACCESS 0x88BB\n#define GL_BUFFER_MAPPED 0x88BC\n#define GL_BUFFER_MAP_POINTER 0x88BD\n#define GL_STREAM_DRAW 0x88E0\n#define GL_STREAM_READ 0x88E1\n#define GL_STREAM_COPY 0x88E2\n#define GL_STATIC_DRAW 0x88E4\n#define GL_STATIC_READ 0x88E5\n#define GL_STATIC_COPY 0x88E6\n#define GL_DYNAMIC_DRAW 0x88E8\n#define GL_DYNAMIC_READ 0x88E9\n#define GL_DYNAMIC_COPY 0x88EA\n#define GL_SAMPLES_PASSED 0x8914\n#define GL_SRC1_ALPHA 0x8589\n#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896\n#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897\n#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898\n#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899\n#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A\n#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B\n#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C\n#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D\n#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E\n#define GL_FOG_COORD_SRC 0x8450\n#define GL_FOG_COORD 0x8451\n#define GL_CURRENT_FOG_COORD 0x8453\n#define GL_FOG_COORD_ARRAY_TYPE 0x8454\n#define GL_FOG_COORD_ARRAY_STRIDE 0x8455\n#define GL_FOG_COORD_ARRAY_POINTER 0x8456\n#define GL_FOG_COORD_ARRAY 0x8457\n#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D\n#define GL_SRC0_RGB 0x8580\n#define GL_SRC1_RGB 0x8581\n#define GL_SRC2_RGB 0x8582\n#define GL_SRC0_ALPHA 0x8588\n#define GL_SRC2_ALPHA 0x858A\n#define GL_BLEND_EQUATION_RGB 0x8009\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625\n#define GL_CURRENT_VERTEX_ATTRIB 0x8626\n#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645\n#define GL_STENCIL_BACK_FUNC 0x8800\n#define GL_STENCIL_BACK_FAIL 0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803\n#define GL_MAX_DRAW_BUFFERS 0x8824\n#define GL_DRAW_BUFFER0 0x8825\n#define GL_DRAW_BUFFER1 0x8826\n#define GL_DRAW_BUFFER2 0x8827\n#define GL_DRAW_BUFFER3 0x8828\n#define GL_DRAW_BUFFER4 0x8829\n#define GL_DRAW_BUFFER5 0x882A\n#define GL_DRAW_BUFFER6 0x882B\n#define GL_DRAW_BUFFER7 0x882C\n#define GL_DRAW_BUFFER8 0x882D\n#define GL_DRAW_BUFFER9 0x882E\n#define GL_DRAW_BUFFER10 0x882F\n#define GL_DRAW_BUFFER11 0x8830\n#define GL_DRAW_BUFFER12 0x8831\n#define GL_DRAW_BUFFER13 0x8832\n#define GL_DRAW_BUFFER14 0x8833\n#define GL_DRAW_BUFFER15 0x8834\n#define GL_BLEND_EQUATION_ALPHA 0x883D\n#define GL_MAX_VERTEX_ATTRIBS 0x8869\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A\n#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872\n#define GL_FRAGMENT_SHADER 0x8B30\n#define GL_VERTEX_SHADER 0x8B31\n#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49\n#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A\n#define GL_MAX_VARYING_FLOATS 0x8B4B\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D\n#define GL_SHADER_TYPE 0x8B4F\n#define GL_FLOAT_VEC2 0x8B50\n#define GL_FLOAT_VEC3 0x8B51\n#define GL_FLOAT_VEC4 0x8B52\n#define GL_INT_VEC2 0x8B53\n#define GL_INT_VEC3 0x8B54\n#define GL_INT_VEC4 0x8B55\n#define GL_BOOL 0x8B56\n#define GL_BOOL_VEC2 0x8B57\n#define GL_BOOL_VEC3 0x8B58\n#define GL_BOOL_VEC4 0x8B59\n#define GL_FLOAT_MAT2 0x8B5A\n#define GL_FLOAT_MAT3 0x8B5B\n#define GL_FLOAT_MAT4 0x8B5C\n#define GL_SAMPLER_1D 0x8B5D\n#define GL_SAMPLER_2D 0x8B5E\n#define GL_SAMPLER_3D 0x8B5F\n#define GL_SAMPLER_CUBE 0x8B60\n#define GL_SAMPLER_1D_SHADOW 0x8B61\n#define GL_SAMPLER_2D_SHADOW 0x8B62\n#define GL_DELETE_STATUS 0x8B80\n#define GL_COMPILE_STATUS 0x8B81\n#define GL_LINK_STATUS 0x8B82\n#define GL_VALIDATE_STATUS 0x8B83\n#define GL_INFO_LOG_LENGTH 0x8B84\n#define GL_ATTACHED_SHADERS 0x8B85\n#define GL_ACTIVE_UNIFORMS 0x8B86\n#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87\n#define GL_SHADER_SOURCE_LENGTH 0x8B88\n#define GL_ACTIVE_ATTRIBUTES 0x8B89\n#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B\n#define GL_SHADING_LANGUAGE_VERSION 0x8B8C\n#define GL_CURRENT_PROGRAM 0x8B8D\n#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0\n#define GL_LOWER_LEFT 0x8CA1\n#define GL_UPPER_LEFT 0x8CA2\n#define GL_STENCIL_BACK_REF 0x8CA3\n#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4\n#define GL_STENCIL_BACK_WRITEMASK 0x8CA5\n#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643\n#define GL_POINT_SPRITE 0x8861\n#define GL_COORD_REPLACE 0x8862\n#define GL_MAX_TEXTURE_COORDS 0x8871\n#define GL_PIXEL_PACK_BUFFER 0x88EB\n#define GL_PIXEL_UNPACK_BUFFER 0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF\n#define GL_FLOAT_MAT2x3 0x8B65\n#define GL_FLOAT_MAT2x4 0x8B66\n#define GL_FLOAT_MAT3x2 0x8B67\n#define GL_FLOAT_MAT3x4 0x8B68\n#define GL_FLOAT_MAT4x2 0x8B69\n#define GL_FLOAT_MAT4x3 0x8B6A\n#define GL_SRGB 0x8C40\n#define GL_SRGB8 0x8C41\n#define GL_SRGB_ALPHA 0x8C42\n#define GL_SRGB8_ALPHA8 0x8C43\n#define GL_COMPRESSED_SRGB 0x8C48\n#define GL_COMPRESSED_SRGB_ALPHA 0x8C49\n#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F\n#define GL_SLUMINANCE_ALPHA 0x8C44\n#define GL_SLUMINANCE8_ALPHA8 0x8C45\n#define GL_SLUMINANCE 0x8C46\n#define GL_SLUMINANCE8 0x8C47\n#define GL_COMPRESSED_SLUMINANCE 0x8C4A\n#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B\n#define GL_COMPARE_REF_TO_TEXTURE 0x884E\n#define GL_CLIP_DISTANCE0 0x3000\n#define GL_CLIP_DISTANCE1 0x3001\n#define GL_CLIP_DISTANCE2 0x3002\n#define GL_CLIP_DISTANCE3 0x3003\n#define GL_CLIP_DISTANCE4 0x3004\n#define GL_CLIP_DISTANCE5 0x3005\n#define GL_CLIP_DISTANCE6 0x3006\n#define GL_CLIP_DISTANCE7 0x3007\n#define GL_MAX_CLIP_DISTANCES 0x0D32\n#define GL_MAJOR_VERSION 0x821B\n#define GL_MINOR_VERSION 0x821C\n#define GL_NUM_EXTENSIONS 0x821D\n#define GL_CONTEXT_FLAGS 0x821E\n#define GL_COMPRESSED_RED 0x8225\n#define GL_COMPRESSED_RG 0x8226\n#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001\n#define GL_RGBA32F 0x8814\n#define GL_RGB32F 0x8815\n#define GL_RGBA16F 0x881A\n#define GL_RGB16F 0x881B\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD\n#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF\n#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905\n#define GL_CLAMP_READ_COLOR 0x891C\n#define GL_FIXED_ONLY 0x891D\n#define GL_MAX_VARYING_COMPONENTS 0x8B4B\n#define GL_TEXTURE_1D_ARRAY 0x8C18\n#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19\n#define GL_TEXTURE_2D_ARRAY 0x8C1A\n#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B\n#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C\n#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D\n#define GL_R11F_G11F_B10F 0x8C3A\n#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B\n#define GL_RGB9_E5 0x8C3D\n#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E\n#define GL_TEXTURE_SHARED_SIZE 0x8C3F\n#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80\n#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85\n#define GL_PRIMITIVES_GENERATED 0x8C87\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88\n#define GL_RASTERIZER_DISCARD 0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B\n#define GL_INTERLEAVED_ATTRIBS 0x8C8C\n#define GL_SEPARATE_ATTRIBS 0x8C8D\n#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F\n#define GL_RGBA32UI 0x8D70\n#define GL_RGB32UI 0x8D71\n#define GL_RGBA16UI 0x8D76\n#define GL_RGB16UI 0x8D77\n#define GL_RGBA8UI 0x8D7C\n#define GL_RGB8UI 0x8D7D\n#define GL_RGBA32I 0x8D82\n#define GL_RGB32I 0x8D83\n#define GL_RGBA16I 0x8D88\n#define GL_RGB16I 0x8D89\n#define GL_RGBA8I 0x8D8E\n#define GL_RGB8I 0x8D8F\n#define GL_RED_INTEGER 0x8D94\n#define GL_GREEN_INTEGER 0x8D95\n#define GL_BLUE_INTEGER 0x8D96\n#define GL_RGB_INTEGER 0x8D98\n#define GL_RGBA_INTEGER 0x8D99\n#define GL_BGR_INTEGER 0x8D9A\n#define GL_BGRA_INTEGER 0x8D9B\n#define GL_SAMPLER_1D_ARRAY 0x8DC0\n#define GL_SAMPLER_2D_ARRAY 0x8DC1\n#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3\n#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4\n#define GL_SAMPLER_CUBE_SHADOW 0x8DC5\n#define GL_UNSIGNED_INT_VEC2 0x8DC6\n#define GL_UNSIGNED_INT_VEC3 0x8DC7\n#define GL_UNSIGNED_INT_VEC4 0x8DC8\n#define GL_INT_SAMPLER_1D 0x8DC9\n#define GL_INT_SAMPLER_2D 0x8DCA\n#define GL_INT_SAMPLER_3D 0x8DCB\n#define GL_INT_SAMPLER_CUBE 0x8DCC\n#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE\n#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF\n#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1\n#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2\n#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3\n#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4\n#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6\n#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7\n#define GL_QUERY_WAIT 0x8E13\n#define GL_QUERY_NO_WAIT 0x8E14\n#define GL_QUERY_BY_REGION_WAIT 0x8E15\n#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16\n#define GL_BUFFER_ACCESS_FLAGS 0x911F\n#define GL_BUFFER_MAP_LENGTH 0x9120\n#define GL_BUFFER_MAP_OFFSET 0x9121\n#define GL_DEPTH_COMPONENT32F 0x8CAC\n#define GL_DEPTH32F_STENCIL8 0x8CAD\n#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD\n#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506\n#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210\n#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211\n#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212\n#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213\n#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214\n#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215\n#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216\n#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217\n#define GL_FRAMEBUFFER_DEFAULT 0x8218\n#define GL_FRAMEBUFFER_UNDEFINED 0x8219\n#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A\n#define GL_MAX_RENDERBUFFER_SIZE 0x84E8\n#define GL_DEPTH_STENCIL 0x84F9\n#define GL_UNSIGNED_INT_24_8 0x84FA\n#define GL_DEPTH24_STENCIL8 0x88F0\n#define GL_TEXTURE_STENCIL_SIZE 0x88F1\n#define GL_TEXTURE_RED_TYPE 0x8C10\n#define GL_TEXTURE_GREEN_TYPE 0x8C11\n#define GL_TEXTURE_BLUE_TYPE 0x8C12\n#define GL_TEXTURE_ALPHA_TYPE 0x8C13\n#define GL_TEXTURE_DEPTH_TYPE 0x8C16\n#define GL_UNSIGNED_NORMALIZED 0x8C17\n#define GL_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6\n#define GL_RENDERBUFFER_BINDING 0x8CA7\n#define GL_READ_FRAMEBUFFER 0x8CA8\n#define GL_DRAW_FRAMEBUFFER 0x8CA9\n#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA\n#define GL_RENDERBUFFER_SAMPLES 0x8CAB\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4\n#define GL_FRAMEBUFFER_COMPLETE 0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB\n#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC\n#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD\n#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF\n#define GL_COLOR_ATTACHMENT0 0x8CE0\n#define GL_COLOR_ATTACHMENT1 0x8CE1\n#define GL_COLOR_ATTACHMENT2 0x8CE2\n#define GL_COLOR_ATTACHMENT3 0x8CE3\n#define GL_COLOR_ATTACHMENT4 0x8CE4\n#define GL_COLOR_ATTACHMENT5 0x8CE5\n#define GL_COLOR_ATTACHMENT6 0x8CE6\n#define GL_COLOR_ATTACHMENT7 0x8CE7\n#define GL_COLOR_ATTACHMENT8 0x8CE8\n#define GL_COLOR_ATTACHMENT9 0x8CE9\n#define GL_COLOR_ATTACHMENT10 0x8CEA\n#define GL_COLOR_ATTACHMENT11 0x8CEB\n#define GL_COLOR_ATTACHMENT12 0x8CEC\n#define GL_COLOR_ATTACHMENT13 0x8CED\n#define GL_COLOR_ATTACHMENT14 0x8CEE\n#define GL_COLOR_ATTACHMENT15 0x8CEF\n#define GL_COLOR_ATTACHMENT16 0x8CF0\n#define GL_COLOR_ATTACHMENT17 0x8CF1\n#define GL_COLOR_ATTACHMENT18 0x8CF2\n#define GL_COLOR_ATTACHMENT19 0x8CF3\n#define GL_COLOR_ATTACHMENT20 0x8CF4\n#define GL_COLOR_ATTACHMENT21 0x8CF5\n#define GL_COLOR_ATTACHMENT22 0x8CF6\n#define GL_COLOR_ATTACHMENT23 0x8CF7\n#define GL_COLOR_ATTACHMENT24 0x8CF8\n#define GL_COLOR_ATTACHMENT25 0x8CF9\n#define GL_COLOR_ATTACHMENT26 0x8CFA\n#define GL_COLOR_ATTACHMENT27 0x8CFB\n#define GL_COLOR_ATTACHMENT28 0x8CFC\n#define GL_COLOR_ATTACHMENT29 0x8CFD\n#define GL_COLOR_ATTACHMENT30 0x8CFE\n#define GL_COLOR_ATTACHMENT31 0x8CFF\n#define GL_DEPTH_ATTACHMENT 0x8D00\n#define GL_STENCIL_ATTACHMENT 0x8D20\n#define GL_FRAMEBUFFER 0x8D40\n#define GL_RENDERBUFFER 0x8D41\n#define GL_RENDERBUFFER_WIDTH 0x8D42\n#define GL_RENDERBUFFER_HEIGHT 0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44\n#define GL_STENCIL_INDEX1 0x8D46\n#define GL_STENCIL_INDEX4 0x8D47\n#define GL_STENCIL_INDEX8 0x8D48\n#define GL_STENCIL_INDEX16 0x8D49\n#define GL_RENDERBUFFER_RED_SIZE 0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56\n#define GL_MAX_SAMPLES 0x8D57\n#define GL_INDEX 0x8222\n#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14\n#define GL_TEXTURE_INTENSITY_TYPE 0x8C15\n#define GL_FRAMEBUFFER_SRGB 0x8DB9\n#define GL_HALF_FLOAT 0x140B\n#define GL_MAP_READ_BIT 0x0001\n#define GL_MAP_WRITE_BIT 0x0002\n#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004\n#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008\n#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010\n#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020\n#define GL_COMPRESSED_RED_RGTC1 0x8DBB\n#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC\n#define GL_COMPRESSED_RG_RGTC2 0x8DBD\n#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE\n#define GL_RG 0x8227\n#define GL_RG_INTEGER 0x8228\n#define GL_R8 0x8229\n#define GL_R16 0x822A\n#define GL_RG8 0x822B\n#define GL_RG16 0x822C\n#define GL_R16F 0x822D\n#define GL_R32F 0x822E\n#define GL_RG16F 0x822F\n#define GL_RG32F 0x8230\n#define GL_R8I 0x8231\n#define GL_R8UI 0x8232\n#define GL_R16I 0x8233\n#define GL_R16UI 0x8234\n#define GL_R32I 0x8235\n#define GL_R32UI 0x8236\n#define GL_RG8I 0x8237\n#define GL_RG8UI 0x8238\n#define GL_RG16I 0x8239\n#define GL_RG16UI 0x823A\n#define GL_RG32I 0x823B\n#define GL_RG32UI 0x823C\n#define GL_VERTEX_ARRAY_BINDING 0x85B5\n#define GL_CLAMP_VERTEX_COLOR 0x891A\n#define GL_CLAMP_FRAGMENT_COLOR 0x891B\n#define GL_ALPHA_INTEGER 0x8D97\n#define GL_SAMPLER_2D_RECT 0x8B63\n#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64\n#define GL_SAMPLER_BUFFER 0x8DC2\n#define GL_INT_SAMPLER_2D_RECT 0x8DCD\n#define GL_INT_SAMPLER_BUFFER 0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8\n#define GL_TEXTURE_BUFFER 0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER 0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D\n#define GL_TEXTURE_RECTANGLE 0x84F5\n#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6\n#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7\n#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8\n#define GL_R8_SNORM 0x8F94\n#define GL_RG8_SNORM 0x8F95\n#define GL_RGB8_SNORM 0x8F96\n#define GL_RGBA8_SNORM 0x8F97\n#define GL_R16_SNORM 0x8F98\n#define GL_RG16_SNORM 0x8F99\n#define GL_RGB16_SNORM 0x8F9A\n#define GL_RGBA16_SNORM 0x8F9B\n#define GL_SIGNED_NORMALIZED 0x8F9C\n#define GL_PRIMITIVE_RESTART 0x8F9D\n#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E\n#define GL_COPY_READ_BUFFER 0x8F36\n#define GL_COPY_WRITE_BUFFER 0x8F37\n#define GL_UNIFORM_BUFFER 0x8A11\n#define GL_UNIFORM_BUFFER_BINDING 0x8A28\n#define GL_UNIFORM_BUFFER_START 0x8A29\n#define GL_UNIFORM_BUFFER_SIZE 0x8A2A\n#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B\n#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C\n#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D\n#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E\n#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F\n#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30\n#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31\n#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32\n#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33\n#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34\n#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35\n#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36\n#define GL_UNIFORM_TYPE 0x8A37\n#define GL_UNIFORM_SIZE 0x8A38\n#define GL_UNIFORM_NAME_LENGTH 0x8A39\n#define GL_UNIFORM_BLOCK_INDEX 0x8A3A\n#define GL_UNIFORM_OFFSET 0x8A3B\n#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C\n#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D\n#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E\n#define GL_UNIFORM_BLOCK_BINDING 0x8A3F\n#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40\n#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46\n#define GL_INVALID_INDEX 0xFFFFFFFF\n#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001\n#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002\n#define GL_LINES_ADJACENCY 0x000A\n#define GL_LINE_STRIP_ADJACENCY 0x000B\n#define GL_TRIANGLES_ADJACENCY 0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D\n#define GL_PROGRAM_POINT_SIZE 0x8642\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8\n#define GL_GEOMETRY_SHADER 0x8DD9\n#define GL_GEOMETRY_VERTICES_OUT 0x8916\n#define GL_GEOMETRY_INPUT_TYPE 0x8917\n#define GL_GEOMETRY_OUTPUT_TYPE 0x8918\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1\n#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122\n#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123\n#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124\n#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125\n#define GL_CONTEXT_PROFILE_MASK 0x9126\n#define GL_DEPTH_CLAMP 0x864F\n#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C\n#define GL_FIRST_VERTEX_CONVENTION 0x8E4D\n#define GL_LAST_VERTEX_CONVENTION 0x8E4E\n#define GL_PROVOKING_VERTEX 0x8E4F\n#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F\n#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111\n#define GL_OBJECT_TYPE 0x9112\n#define GL_SYNC_CONDITION 0x9113\n#define GL_SYNC_STATUS 0x9114\n#define GL_SYNC_FLAGS 0x9115\n#define GL_SYNC_FENCE 0x9116\n#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117\n#define GL_UNSIGNALED 0x9118\n#define GL_SIGNALED 0x9119\n#define GL_ALREADY_SIGNALED 0x911A\n#define GL_TIMEOUT_EXPIRED 0x911B\n#define GL_CONDITION_SATISFIED 0x911C\n#define GL_WAIT_FAILED 0x911D\n#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF\n#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001\n#define GL_SAMPLE_POSITION 0x8E50\n#define GL_SAMPLE_MASK 0x8E51\n#define GL_SAMPLE_MASK_VALUE 0x8E52\n#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59\n#define GL_TEXTURE_2D_MULTISAMPLE 0x9100\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101\n#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105\n#define GL_TEXTURE_SAMPLES 0x9106\n#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107\n#define GL_SAMPLER_2D_MULTISAMPLE 0x9108\n#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A\n#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B\n#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D\n#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E\n#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F\n#define GL_MAX_INTEGER_SAMPLES 0x9110\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE\n#define GL_SRC1_COLOR 0x88F9\n#define GL_ONE_MINUS_SRC1_COLOR 0x88FA\n#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB\n#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC\n#define GL_ANY_SAMPLES_PASSED 0x8C2F\n#define GL_SAMPLER_BINDING 0x8919\n#define GL_RGB10_A2UI 0x906F\n#define GL_TEXTURE_SWIZZLE_R 0x8E42\n#define GL_TEXTURE_SWIZZLE_G 0x8E43\n#define GL_TEXTURE_SWIZZLE_B 0x8E44\n#define GL_TEXTURE_SWIZZLE_A 0x8E45\n#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46\n#define GL_TIME_ELAPSED 0x88BF\n#define GL_TIMESTAMP 0x8E28\n#define GL_INT_2_10_10_10_REV 0x8D9F\n#ifndef GL_VERSION_1_0\n#define GL_VERSION_1_0 1\nGLAPI int GLAD_GL_VERSION_1_0;\ntypedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode);\nGLAPI PFNGLCULLFACEPROC glad_glCullFace;\n#define glCullFace glad_glCullFace\ntypedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode);\nGLAPI PFNGLFRONTFACEPROC glad_glFrontFace;\n#define glFrontFace glad_glFrontFace\ntypedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode);\nGLAPI PFNGLHINTPROC glad_glHint;\n#define glHint glad_glHint\ntypedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width);\nGLAPI PFNGLLINEWIDTHPROC glad_glLineWidth;\n#define glLineWidth glad_glLineWidth\ntypedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size);\nGLAPI PFNGLPOINTSIZEPROC glad_glPointSize;\n#define glPointSize glad_glPointSize\ntypedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode);\nGLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode;\n#define glPolygonMode glad_glPolygonMode\ntypedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLSCISSORPROC glad_glScissor;\n#define glScissor glad_glScissor\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);\nGLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf;\n#define glTexParameterf glad_glTexParameterf\ntypedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params);\nGLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv;\n#define glTexParameterfv glad_glTexParameterfv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);\nGLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri;\n#define glTexParameteri glad_glTexParameteri\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv;\n#define glTexParameteriv glad_glTexParameteriv\ntypedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D;\n#define glTexImage1D glad_glTexImage1D\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D;\n#define glTexImage2D glad_glTexImage2D\ntypedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf);\nGLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer;\n#define glDrawBuffer glad_glDrawBuffer\ntypedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask);\nGLAPI PFNGLCLEARPROC glad_glClear;\n#define glClear glad_glClear\ntypedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLCLEARCOLORPROC glad_glClearColor;\n#define glClearColor glad_glClearColor\ntypedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s);\nGLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil;\n#define glClearStencil glad_glClearStencil\ntypedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth);\nGLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth;\n#define glClearDepth glad_glClearDepth\ntypedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask);\nGLAPI PFNGLSTENCILMASKPROC glad_glStencilMask;\n#define glStencilMask glad_glStencilMask\ntypedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\nGLAPI PFNGLCOLORMASKPROC glad_glColorMask;\n#define glColorMask glad_glColorMask\ntypedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag);\nGLAPI PFNGLDEPTHMASKPROC glad_glDepthMask;\n#define glDepthMask glad_glDepthMask\ntypedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap);\nGLAPI PFNGLDISABLEPROC glad_glDisable;\n#define glDisable glad_glDisable\ntypedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap);\nGLAPI PFNGLENABLEPROC glad_glEnable;\n#define glEnable glad_glEnable\ntypedef void (APIENTRYP PFNGLFINISHPROC)(void);\nGLAPI PFNGLFINISHPROC glad_glFinish;\n#define glFinish glad_glFinish\ntypedef void (APIENTRYP PFNGLFLUSHPROC)(void);\nGLAPI PFNGLFLUSHPROC glad_glFlush;\n#define glFlush glad_glFlush\ntypedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);\nGLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc;\n#define glBlendFunc glad_glBlendFunc\ntypedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode);\nGLAPI PFNGLLOGICOPPROC glad_glLogicOp;\n#define glLogicOp glad_glLogicOp\ntypedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc;\n#define glStencilFunc glad_glStencilFunc\ntypedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);\nGLAPI PFNGLSTENCILOPPROC glad_glStencilOp;\n#define glStencilOp glad_glStencilOp\ntypedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func);\nGLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc;\n#define glDepthFunc glad_glDepthFunc\ntypedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref;\n#define glPixelStoref glad_glPixelStoref\ntypedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei;\n#define glPixelStorei glad_glPixelStorei\ntypedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src);\nGLAPI PFNGLREADBUFFERPROC glad_glReadBuffer;\n#define glReadBuffer glad_glReadBuffer\ntypedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);\nGLAPI PFNGLREADPIXELSPROC glad_glReadPixels;\n#define glReadPixels glad_glReadPixels\ntypedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data);\nGLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv;\n#define glGetBooleanv glad_glGetBooleanv\ntypedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data);\nGLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev;\n#define glGetDoublev glad_glGetDoublev\ntypedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void);\nGLAPI PFNGLGETERRORPROC glad_glGetError;\n#define glGetError glad_glGetError\ntypedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data);\nGLAPI PFNGLGETFLOATVPROC glad_glGetFloatv;\n#define glGetFloatv glad_glGetFloatv\ntypedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data);\nGLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv;\n#define glGetIntegerv glad_glGetIntegerv\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name);\nGLAPI PFNGLGETSTRINGPROC glad_glGetString;\n#define glGetString glad_glGetString\ntypedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\nGLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage;\n#define glGetTexImage glad_glGetTexImage\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv;\n#define glGetTexParameterfv glad_glGetTexParameterfv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv;\n#define glGetTexParameteriv glad_glGetTexParameteriv\ntypedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv;\n#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv\ntypedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv;\n#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap);\nGLAPI PFNGLISENABLEDPROC glad_glIsEnabled;\n#define glIsEnabled glad_glIsEnabled\ntypedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f);\nGLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange;\n#define glDepthRange glad_glDepthRange\ntypedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLVIEWPORTPROC glad_glViewport;\n#define glViewport glad_glViewport\ntypedef void (APIENTRYP PFNGLNEWLISTPROC)(GLuint list, GLenum mode);\nGLAPI PFNGLNEWLISTPROC glad_glNewList;\n#define glNewList glad_glNewList\ntypedef void (APIENTRYP PFNGLENDLISTPROC)(void);\nGLAPI PFNGLENDLISTPROC glad_glEndList;\n#define glEndList glad_glEndList\ntypedef void (APIENTRYP PFNGLCALLLISTPROC)(GLuint list);\nGLAPI PFNGLCALLLISTPROC glad_glCallList;\n#define glCallList glad_glCallList\ntypedef void (APIENTRYP PFNGLCALLLISTSPROC)(GLsizei n, GLenum type, const void *lists);\nGLAPI PFNGLCALLLISTSPROC glad_glCallLists;\n#define glCallLists glad_glCallLists\ntypedef void (APIENTRYP PFNGLDELETELISTSPROC)(GLuint list, GLsizei range);\nGLAPI PFNGLDELETELISTSPROC glad_glDeleteLists;\n#define glDeleteLists glad_glDeleteLists\ntypedef GLuint (APIENTRYP PFNGLGENLISTSPROC)(GLsizei range);\nGLAPI PFNGLGENLISTSPROC glad_glGenLists;\n#define glGenLists glad_glGenLists\ntypedef void (APIENTRYP PFNGLLISTBASEPROC)(GLuint base);\nGLAPI PFNGLLISTBASEPROC glad_glListBase;\n#define glListBase glad_glListBase\ntypedef void (APIENTRYP PFNGLBEGINPROC)(GLenum mode);\nGLAPI PFNGLBEGINPROC glad_glBegin;\n#define glBegin glad_glBegin\ntypedef void (APIENTRYP PFNGLBITMAPPROC)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);\nGLAPI PFNGLBITMAPPROC glad_glBitmap;\n#define glBitmap glad_glBitmap\ntypedef void (APIENTRYP PFNGLCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue);\nGLAPI PFNGLCOLOR3BPROC glad_glColor3b;\n#define glColor3b glad_glColor3b\ntypedef void (APIENTRYP PFNGLCOLOR3BVPROC)(const GLbyte *v);\nGLAPI PFNGLCOLOR3BVPROC glad_glColor3bv;\n#define glColor3bv glad_glColor3bv\ntypedef void (APIENTRYP PFNGLCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue);\nGLAPI PFNGLCOLOR3DPROC glad_glColor3d;\n#define glColor3d glad_glColor3d\ntypedef void (APIENTRYP PFNGLCOLOR3DVPROC)(const GLdouble *v);\nGLAPI PFNGLCOLOR3DVPROC glad_glColor3dv;\n#define glColor3dv glad_glColor3dv\ntypedef void (APIENTRYP PFNGLCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue);\nGLAPI PFNGLCOLOR3FPROC glad_glColor3f;\n#define glColor3f glad_glColor3f\ntypedef void (APIENTRYP PFNGLCOLOR3FVPROC)(const GLfloat *v);\nGLAPI PFNGLCOLOR3FVPROC glad_glColor3fv;\n#define glColor3fv glad_glColor3fv\ntypedef void (APIENTRYP PFNGLCOLOR3IPROC)(GLint red, GLint green, GLint blue);\nGLAPI PFNGLCOLOR3IPROC glad_glColor3i;\n#define glColor3i glad_glColor3i\ntypedef void (APIENTRYP PFNGLCOLOR3IVPROC)(const GLint *v);\nGLAPI PFNGLCOLOR3IVPROC glad_glColor3iv;\n#define glColor3iv glad_glColor3iv\ntypedef void (APIENTRYP PFNGLCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue);\nGLAPI PFNGLCOLOR3SPROC glad_glColor3s;\n#define glColor3s glad_glColor3s\ntypedef void (APIENTRYP PFNGLCOLOR3SVPROC)(const GLshort *v);\nGLAPI PFNGLCOLOR3SVPROC glad_glColor3sv;\n#define glColor3sv glad_glColor3sv\ntypedef void (APIENTRYP PFNGLCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue);\nGLAPI PFNGLCOLOR3UBPROC glad_glColor3ub;\n#define glColor3ub glad_glColor3ub\ntypedef void (APIENTRYP PFNGLCOLOR3UBVPROC)(const GLubyte *v);\nGLAPI PFNGLCOLOR3UBVPROC glad_glColor3ubv;\n#define glColor3ubv glad_glColor3ubv\ntypedef void (APIENTRYP PFNGLCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue);\nGLAPI PFNGLCOLOR3UIPROC glad_glColor3ui;\n#define glColor3ui glad_glColor3ui\ntypedef void (APIENTRYP PFNGLCOLOR3UIVPROC)(const GLuint *v);\nGLAPI PFNGLCOLOR3UIVPROC glad_glColor3uiv;\n#define glColor3uiv glad_glColor3uiv\ntypedef void (APIENTRYP PFNGLCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue);\nGLAPI PFNGLCOLOR3USPROC glad_glColor3us;\n#define glColor3us glad_glColor3us\ntypedef void (APIENTRYP PFNGLCOLOR3USVPROC)(const GLushort *v);\nGLAPI PFNGLCOLOR3USVPROC glad_glColor3usv;\n#define glColor3usv glad_glColor3usv\ntypedef void (APIENTRYP PFNGLCOLOR4BPROC)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);\nGLAPI PFNGLCOLOR4BPROC glad_glColor4b;\n#define glColor4b glad_glColor4b\ntypedef void (APIENTRYP PFNGLCOLOR4BVPROC)(const GLbyte *v);\nGLAPI PFNGLCOLOR4BVPROC glad_glColor4bv;\n#define glColor4bv glad_glColor4bv\ntypedef void (APIENTRYP PFNGLCOLOR4DPROC)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);\nGLAPI PFNGLCOLOR4DPROC glad_glColor4d;\n#define glColor4d glad_glColor4d\ntypedef void (APIENTRYP PFNGLCOLOR4DVPROC)(const GLdouble *v);\nGLAPI PFNGLCOLOR4DVPROC glad_glColor4dv;\n#define glColor4dv glad_glColor4dv\ntypedef void (APIENTRYP PFNGLCOLOR4FPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLCOLOR4FPROC glad_glColor4f;\n#define glColor4f glad_glColor4f\ntypedef void (APIENTRYP PFNGLCOLOR4FVPROC)(const GLfloat *v);\nGLAPI PFNGLCOLOR4FVPROC glad_glColor4fv;\n#define glColor4fv glad_glColor4fv\ntypedef void (APIENTRYP PFNGLCOLOR4IPROC)(GLint red, GLint green, GLint blue, GLint alpha);\nGLAPI PFNGLCOLOR4IPROC glad_glColor4i;\n#define glColor4i glad_glColor4i\ntypedef void (APIENTRYP PFNGLCOLOR4IVPROC)(const GLint *v);\nGLAPI PFNGLCOLOR4IVPROC glad_glColor4iv;\n#define glColor4iv glad_glColor4iv\ntypedef void (APIENTRYP PFNGLCOLOR4SPROC)(GLshort red, GLshort green, GLshort blue, GLshort alpha);\nGLAPI PFNGLCOLOR4SPROC glad_glColor4s;\n#define glColor4s glad_glColor4s\ntypedef void (APIENTRYP PFNGLCOLOR4SVPROC)(const GLshort *v);\nGLAPI PFNGLCOLOR4SVPROC glad_glColor4sv;\n#define glColor4sv glad_glColor4sv\ntypedef void (APIENTRYP PFNGLCOLOR4UBPROC)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);\nGLAPI PFNGLCOLOR4UBPROC glad_glColor4ub;\n#define glColor4ub glad_glColor4ub\ntypedef void (APIENTRYP PFNGLCOLOR4UBVPROC)(const GLubyte *v);\nGLAPI PFNGLCOLOR4UBVPROC glad_glColor4ubv;\n#define glColor4ubv glad_glColor4ubv\ntypedef void (APIENTRYP PFNGLCOLOR4UIPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha);\nGLAPI PFNGLCOLOR4UIPROC glad_glColor4ui;\n#define glColor4ui glad_glColor4ui\ntypedef void (APIENTRYP PFNGLCOLOR4UIVPROC)(const GLuint *v);\nGLAPI PFNGLCOLOR4UIVPROC glad_glColor4uiv;\n#define glColor4uiv glad_glColor4uiv\ntypedef void (APIENTRYP PFNGLCOLOR4USPROC)(GLushort red, GLushort green, GLushort blue, GLushort alpha);\nGLAPI PFNGLCOLOR4USPROC glad_glColor4us;\n#define glColor4us glad_glColor4us\ntypedef void (APIENTRYP PFNGLCOLOR4USVPROC)(const GLushort *v);\nGLAPI PFNGLCOLOR4USVPROC glad_glColor4usv;\n#define glColor4usv glad_glColor4usv\ntypedef void (APIENTRYP PFNGLEDGEFLAGPROC)(GLboolean flag);\nGLAPI PFNGLEDGEFLAGPROC glad_glEdgeFlag;\n#define glEdgeFlag glad_glEdgeFlag\ntypedef void (APIENTRYP PFNGLEDGEFLAGVPROC)(const GLboolean *flag);\nGLAPI PFNGLEDGEFLAGVPROC glad_glEdgeFlagv;\n#define glEdgeFlagv glad_glEdgeFlagv\ntypedef void (APIENTRYP PFNGLENDPROC)(void);\nGLAPI PFNGLENDPROC glad_glEnd;\n#define glEnd glad_glEnd\ntypedef void (APIENTRYP PFNGLINDEXDPROC)(GLdouble c);\nGLAPI PFNGLINDEXDPROC glad_glIndexd;\n#define glIndexd glad_glIndexd\ntypedef void (APIENTRYP PFNGLINDEXDVPROC)(const GLdouble *c);\nGLAPI PFNGLINDEXDVPROC glad_glIndexdv;\n#define glIndexdv glad_glIndexdv\ntypedef void (APIENTRYP PFNGLINDEXFPROC)(GLfloat c);\nGLAPI PFNGLINDEXFPROC glad_glIndexf;\n#define glIndexf glad_glIndexf\ntypedef void (APIENTRYP PFNGLINDEXFVPROC)(const GLfloat *c);\nGLAPI PFNGLINDEXFVPROC glad_glIndexfv;\n#define glIndexfv glad_glIndexfv\ntypedef void (APIENTRYP PFNGLINDEXIPROC)(GLint c);\nGLAPI PFNGLINDEXIPROC glad_glIndexi;\n#define glIndexi glad_glIndexi\ntypedef void (APIENTRYP PFNGLINDEXIVPROC)(const GLint *c);\nGLAPI PFNGLINDEXIVPROC glad_glIndexiv;\n#define glIndexiv glad_glIndexiv\ntypedef void (APIENTRYP PFNGLINDEXSPROC)(GLshort c);\nGLAPI PFNGLINDEXSPROC glad_glIndexs;\n#define glIndexs glad_glIndexs\ntypedef void (APIENTRYP PFNGLINDEXSVPROC)(const GLshort *c);\nGLAPI PFNGLINDEXSVPROC glad_glIndexsv;\n#define glIndexsv glad_glIndexsv\ntypedef void (APIENTRYP PFNGLNORMAL3BPROC)(GLbyte nx, GLbyte ny, GLbyte nz);\nGLAPI PFNGLNORMAL3BPROC glad_glNormal3b;\n#define glNormal3b glad_glNormal3b\ntypedef void (APIENTRYP PFNGLNORMAL3BVPROC)(const GLbyte *v);\nGLAPI PFNGLNORMAL3BVPROC glad_glNormal3bv;\n#define glNormal3bv glad_glNormal3bv\ntypedef void (APIENTRYP PFNGLNORMAL3DPROC)(GLdouble nx, GLdouble ny, GLdouble nz);\nGLAPI PFNGLNORMAL3DPROC glad_glNormal3d;\n#define glNormal3d glad_glNormal3d\ntypedef void (APIENTRYP PFNGLNORMAL3DVPROC)(const GLdouble *v);\nGLAPI PFNGLNORMAL3DVPROC glad_glNormal3dv;\n#define glNormal3dv glad_glNormal3dv\ntypedef void (APIENTRYP PFNGLNORMAL3FPROC)(GLfloat nx, GLfloat ny, GLfloat nz);\nGLAPI PFNGLNORMAL3FPROC glad_glNormal3f;\n#define glNormal3f glad_glNormal3f\ntypedef void (APIENTRYP PFNGLNORMAL3FVPROC)(const GLfloat *v);\nGLAPI PFNGLNORMAL3FVPROC glad_glNormal3fv;\n#define glNormal3fv glad_glNormal3fv\ntypedef void (APIENTRYP PFNGLNORMAL3IPROC)(GLint nx, GLint ny, GLint nz);\nGLAPI PFNGLNORMAL3IPROC glad_glNormal3i;\n#define glNormal3i glad_glNormal3i\ntypedef void (APIENTRYP PFNGLNORMAL3IVPROC)(const GLint *v);\nGLAPI PFNGLNORMAL3IVPROC glad_glNormal3iv;\n#define glNormal3iv glad_glNormal3iv\ntypedef void (APIENTRYP PFNGLNORMAL3SPROC)(GLshort nx, GLshort ny, GLshort nz);\nGLAPI PFNGLNORMAL3SPROC glad_glNormal3s;\n#define glNormal3s glad_glNormal3s\ntypedef void (APIENTRYP PFNGLNORMAL3SVPROC)(const GLshort *v);\nGLAPI PFNGLNORMAL3SVPROC glad_glNormal3sv;\n#define glNormal3sv glad_glNormal3sv\ntypedef void (APIENTRYP PFNGLRASTERPOS2DPROC)(GLdouble x, GLdouble y);\nGLAPI PFNGLRASTERPOS2DPROC glad_glRasterPos2d;\n#define glRasterPos2d glad_glRasterPos2d\ntypedef void (APIENTRYP PFNGLRASTERPOS2DVPROC)(const GLdouble *v);\nGLAPI PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv;\n#define glRasterPos2dv glad_glRasterPos2dv\ntypedef void (APIENTRYP PFNGLRASTERPOS2FPROC)(GLfloat x, GLfloat y);\nGLAPI PFNGLRASTERPOS2FPROC glad_glRasterPos2f;\n#define glRasterPos2f glad_glRasterPos2f\ntypedef void (APIENTRYP PFNGLRASTERPOS2FVPROC)(const GLfloat *v);\nGLAPI PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv;\n#define glRasterPos2fv glad_glRasterPos2fv\ntypedef void (APIENTRYP PFNGLRASTERPOS2IPROC)(GLint x, GLint y);\nGLAPI PFNGLRASTERPOS2IPROC glad_glRasterPos2i;\n#define glRasterPos2i glad_glRasterPos2i\ntypedef void (APIENTRYP PFNGLRASTERPOS2IVPROC)(const GLint *v);\nGLAPI PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv;\n#define glRasterPos2iv glad_glRasterPos2iv\ntypedef void (APIENTRYP PFNGLRASTERPOS2SPROC)(GLshort x, GLshort y);\nGLAPI PFNGLRASTERPOS2SPROC glad_glRasterPos2s;\n#define glRasterPos2s glad_glRasterPos2s\ntypedef void (APIENTRYP PFNGLRASTERPOS2SVPROC)(const GLshort *v);\nGLAPI PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv;\n#define glRasterPos2sv glad_glRasterPos2sv\ntypedef void (APIENTRYP PFNGLRASTERPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLRASTERPOS3DPROC glad_glRasterPos3d;\n#define glRasterPos3d glad_glRasterPos3d\ntypedef void (APIENTRYP PFNGLRASTERPOS3DVPROC)(const GLdouble *v);\nGLAPI PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv;\n#define glRasterPos3dv glad_glRasterPos3dv\ntypedef void (APIENTRYP PFNGLRASTERPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLRASTERPOS3FPROC glad_glRasterPos3f;\n#define glRasterPos3f glad_glRasterPos3f\ntypedef void (APIENTRYP PFNGLRASTERPOS3FVPROC)(const GLfloat *v);\nGLAPI PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv;\n#define glRasterPos3fv glad_glRasterPos3fv\ntypedef void (APIENTRYP PFNGLRASTERPOS3IPROC)(GLint x, GLint y, GLint z);\nGLAPI PFNGLRASTERPOS3IPROC glad_glRasterPos3i;\n#define glRasterPos3i glad_glRasterPos3i\ntypedef void (APIENTRYP PFNGLRASTERPOS3IVPROC)(const GLint *v);\nGLAPI PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv;\n#define glRasterPos3iv glad_glRasterPos3iv\ntypedef void (APIENTRYP PFNGLRASTERPOS3SPROC)(GLshort x, GLshort y, GLshort z);\nGLAPI PFNGLRASTERPOS3SPROC glad_glRasterPos3s;\n#define glRasterPos3s glad_glRasterPos3s\ntypedef void (APIENTRYP PFNGLRASTERPOS3SVPROC)(const GLshort *v);\nGLAPI PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv;\n#define glRasterPos3sv glad_glRasterPos3sv\ntypedef void (APIENTRYP PFNGLRASTERPOS4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI PFNGLRASTERPOS4DPROC glad_glRasterPos4d;\n#define glRasterPos4d glad_glRasterPos4d\ntypedef void (APIENTRYP PFNGLRASTERPOS4DVPROC)(const GLdouble *v);\nGLAPI PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv;\n#define glRasterPos4dv glad_glRasterPos4dv\ntypedef void (APIENTRYP PFNGLRASTERPOS4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI PFNGLRASTERPOS4FPROC glad_glRasterPos4f;\n#define glRasterPos4f glad_glRasterPos4f\ntypedef void (APIENTRYP PFNGLRASTERPOS4FVPROC)(const GLfloat *v);\nGLAPI PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv;\n#define glRasterPos4fv glad_glRasterPos4fv\ntypedef void (APIENTRYP PFNGLRASTERPOS4IPROC)(GLint x, GLint y, GLint z, GLint w);\nGLAPI PFNGLRASTERPOS4IPROC glad_glRasterPos4i;\n#define glRasterPos4i glad_glRasterPos4i\ntypedef void (APIENTRYP PFNGLRASTERPOS4IVPROC)(const GLint *v);\nGLAPI PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv;\n#define glRasterPos4iv glad_glRasterPos4iv\ntypedef void (APIENTRYP PFNGLRASTERPOS4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI PFNGLRASTERPOS4SPROC glad_glRasterPos4s;\n#define glRasterPos4s glad_glRasterPos4s\ntypedef void (APIENTRYP PFNGLRASTERPOS4SVPROC)(const GLshort *v);\nGLAPI PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv;\n#define glRasterPos4sv glad_glRasterPos4sv\ntypedef void (APIENTRYP PFNGLRECTDPROC)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);\nGLAPI PFNGLRECTDPROC glad_glRectd;\n#define glRectd glad_glRectd\ntypedef void (APIENTRYP PFNGLRECTDVPROC)(const GLdouble *v1, const GLdouble *v2);\nGLAPI PFNGLRECTDVPROC glad_glRectdv;\n#define glRectdv glad_glRectdv\ntypedef void (APIENTRYP PFNGLRECTFPROC)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);\nGLAPI PFNGLRECTFPROC glad_glRectf;\n#define glRectf glad_glRectf\ntypedef void (APIENTRYP PFNGLRECTFVPROC)(const GLfloat *v1, const GLfloat *v2);\nGLAPI PFNGLRECTFVPROC glad_glRectfv;\n#define glRectfv glad_glRectfv\ntypedef void (APIENTRYP PFNGLRECTIPROC)(GLint x1, GLint y1, GLint x2, GLint y2);\nGLAPI PFNGLRECTIPROC glad_glRecti;\n#define glRecti glad_glRecti\ntypedef void (APIENTRYP PFNGLRECTIVPROC)(const GLint *v1, const GLint *v2);\nGLAPI PFNGLRECTIVPROC glad_glRectiv;\n#define glRectiv glad_glRectiv\ntypedef void (APIENTRYP PFNGLRECTSPROC)(GLshort x1, GLshort y1, GLshort x2, GLshort y2);\nGLAPI PFNGLRECTSPROC glad_glRects;\n#define glRects glad_glRects\ntypedef void (APIENTRYP PFNGLRECTSVPROC)(const GLshort *v1, const GLshort *v2);\nGLAPI PFNGLRECTSVPROC glad_glRectsv;\n#define glRectsv glad_glRectsv\ntypedef void (APIENTRYP PFNGLTEXCOORD1DPROC)(GLdouble s);\nGLAPI PFNGLTEXCOORD1DPROC glad_glTexCoord1d;\n#define glTexCoord1d glad_glTexCoord1d\ntypedef void (APIENTRYP PFNGLTEXCOORD1DVPROC)(const GLdouble *v);\nGLAPI PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv;\n#define glTexCoord1dv glad_glTexCoord1dv\ntypedef void (APIENTRYP PFNGLTEXCOORD1FPROC)(GLfloat s);\nGLAPI PFNGLTEXCOORD1FPROC glad_glTexCoord1f;\n#define glTexCoord1f glad_glTexCoord1f\ntypedef void (APIENTRYP PFNGLTEXCOORD1FVPROC)(const GLfloat *v);\nGLAPI PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv;\n#define glTexCoord1fv glad_glTexCoord1fv\ntypedef void (APIENTRYP PFNGLTEXCOORD1IPROC)(GLint s);\nGLAPI PFNGLTEXCOORD1IPROC glad_glTexCoord1i;\n#define glTexCoord1i glad_glTexCoord1i\ntypedef void (APIENTRYP PFNGLTEXCOORD1IVPROC)(const GLint *v);\nGLAPI PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv;\n#define glTexCoord1iv glad_glTexCoord1iv\ntypedef void (APIENTRYP PFNGLTEXCOORD1SPROC)(GLshort s);\nGLAPI PFNGLTEXCOORD1SPROC glad_glTexCoord1s;\n#define glTexCoord1s glad_glTexCoord1s\ntypedef void (APIENTRYP PFNGLTEXCOORD1SVPROC)(const GLshort *v);\nGLAPI PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv;\n#define glTexCoord1sv glad_glTexCoord1sv\ntypedef void (APIENTRYP PFNGLTEXCOORD2DPROC)(GLdouble s, GLdouble t);\nGLAPI PFNGLTEXCOORD2DPROC glad_glTexCoord2d;\n#define glTexCoord2d glad_glTexCoord2d\ntypedef void (APIENTRYP PFNGLTEXCOORD2DVPROC)(const GLdouble *v);\nGLAPI PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv;\n#define glTexCoord2dv glad_glTexCoord2dv\ntypedef void (APIENTRYP PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t);\nGLAPI PFNGLTEXCOORD2FPROC glad_glTexCoord2f;\n#define glTexCoord2f glad_glTexCoord2f\ntypedef void (APIENTRYP PFNGLTEXCOORD2FVPROC)(const GLfloat *v);\nGLAPI PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv;\n#define glTexCoord2fv glad_glTexCoord2fv\ntypedef void (APIENTRYP PFNGLTEXCOORD2IPROC)(GLint s, GLint t);\nGLAPI PFNGLTEXCOORD2IPROC glad_glTexCoord2i;\n#define glTexCoord2i glad_glTexCoord2i\ntypedef void (APIENTRYP PFNGLTEXCOORD2IVPROC)(const GLint *v);\nGLAPI PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv;\n#define glTexCoord2iv glad_glTexCoord2iv\ntypedef void (APIENTRYP PFNGLTEXCOORD2SPROC)(GLshort s, GLshort t);\nGLAPI PFNGLTEXCOORD2SPROC glad_glTexCoord2s;\n#define glTexCoord2s glad_glTexCoord2s\ntypedef void (APIENTRYP PFNGLTEXCOORD2SVPROC)(const GLshort *v);\nGLAPI PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv;\n#define glTexCoord2sv glad_glTexCoord2sv\ntypedef void (APIENTRYP PFNGLTEXCOORD3DPROC)(GLdouble s, GLdouble t, GLdouble r);\nGLAPI PFNGLTEXCOORD3DPROC glad_glTexCoord3d;\n#define glTexCoord3d glad_glTexCoord3d\ntypedef void (APIENTRYP PFNGLTEXCOORD3DVPROC)(const GLdouble *v);\nGLAPI PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv;\n#define glTexCoord3dv glad_glTexCoord3dv\ntypedef void (APIENTRYP PFNGLTEXCOORD3FPROC)(GLfloat s, GLfloat t, GLfloat r);\nGLAPI PFNGLTEXCOORD3FPROC glad_glTexCoord3f;\n#define glTexCoord3f glad_glTexCoord3f\ntypedef void (APIENTRYP PFNGLTEXCOORD3FVPROC)(const GLfloat *v);\nGLAPI PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv;\n#define glTexCoord3fv glad_glTexCoord3fv\ntypedef void (APIENTRYP PFNGLTEXCOORD3IPROC)(GLint s, GLint t, GLint r);\nGLAPI PFNGLTEXCOORD3IPROC glad_glTexCoord3i;\n#define glTexCoord3i glad_glTexCoord3i\ntypedef void (APIENTRYP PFNGLTEXCOORD3IVPROC)(const GLint *v);\nGLAPI PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv;\n#define glTexCoord3iv glad_glTexCoord3iv\ntypedef void (APIENTRYP PFNGLTEXCOORD3SPROC)(GLshort s, GLshort t, GLshort r);\nGLAPI PFNGLTEXCOORD3SPROC glad_glTexCoord3s;\n#define glTexCoord3s glad_glTexCoord3s\ntypedef void (APIENTRYP PFNGLTEXCOORD3SVPROC)(const GLshort *v);\nGLAPI PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv;\n#define glTexCoord3sv glad_glTexCoord3sv\ntypedef void (APIENTRYP PFNGLTEXCOORD4DPROC)(GLdouble s, GLdouble t, GLdouble r, GLdouble q);\nGLAPI PFNGLTEXCOORD4DPROC glad_glTexCoord4d;\n#define glTexCoord4d glad_glTexCoord4d\ntypedef void (APIENTRYP PFNGLTEXCOORD4DVPROC)(const GLdouble *v);\nGLAPI PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv;\n#define glTexCoord4dv glad_glTexCoord4dv\ntypedef void (APIENTRYP PFNGLTEXCOORD4FPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat q);\nGLAPI PFNGLTEXCOORD4FPROC glad_glTexCoord4f;\n#define glTexCoord4f glad_glTexCoord4f\ntypedef void (APIENTRYP PFNGLTEXCOORD4FVPROC)(const GLfloat *v);\nGLAPI PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv;\n#define glTexCoord4fv glad_glTexCoord4fv\ntypedef void (APIENTRYP PFNGLTEXCOORD4IPROC)(GLint s, GLint t, GLint r, GLint q);\nGLAPI PFNGLTEXCOORD4IPROC glad_glTexCoord4i;\n#define glTexCoord4i glad_glTexCoord4i\ntypedef void (APIENTRYP PFNGLTEXCOORD4IVPROC)(const GLint *v);\nGLAPI PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv;\n#define glTexCoord4iv glad_glTexCoord4iv\ntypedef void (APIENTRYP PFNGLTEXCOORD4SPROC)(GLshort s, GLshort t, GLshort r, GLshort q);\nGLAPI PFNGLTEXCOORD4SPROC glad_glTexCoord4s;\n#define glTexCoord4s glad_glTexCoord4s\ntypedef void (APIENTRYP PFNGLTEXCOORD4SVPROC)(const GLshort *v);\nGLAPI PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv;\n#define glTexCoord4sv glad_glTexCoord4sv\ntypedef void (APIENTRYP PFNGLVERTEX2DPROC)(GLdouble x, GLdouble y);\nGLAPI PFNGLVERTEX2DPROC glad_glVertex2d;\n#define glVertex2d glad_glVertex2d\ntypedef void (APIENTRYP PFNGLVERTEX2DVPROC)(const GLdouble *v);\nGLAPI PFNGLVERTEX2DVPROC glad_glVertex2dv;\n#define glVertex2dv glad_glVertex2dv\ntypedef void (APIENTRYP PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y);\nGLAPI PFNGLVERTEX2FPROC glad_glVertex2f;\n#define glVertex2f glad_glVertex2f\ntypedef void (APIENTRYP PFNGLVERTEX2FVPROC)(const GLfloat *v);\nGLAPI PFNGLVERTEX2FVPROC glad_glVertex2fv;\n#define glVertex2fv glad_glVertex2fv\ntypedef void (APIENTRYP PFNGLVERTEX2IPROC)(GLint x, GLint y);\nGLAPI PFNGLVERTEX2IPROC glad_glVertex2i;\n#define glVertex2i glad_glVertex2i\ntypedef void (APIENTRYP PFNGLVERTEX2IVPROC)(const GLint *v);\nGLAPI PFNGLVERTEX2IVPROC glad_glVertex2iv;\n#define glVertex2iv glad_glVertex2iv\ntypedef void (APIENTRYP PFNGLVERTEX2SPROC)(GLshort x, GLshort y);\nGLAPI PFNGLVERTEX2SPROC glad_glVertex2s;\n#define glVertex2s glad_glVertex2s\ntypedef void (APIENTRYP PFNGLVERTEX2SVPROC)(const GLshort *v);\nGLAPI PFNGLVERTEX2SVPROC glad_glVertex2sv;\n#define glVertex2sv glad_glVertex2sv\ntypedef void (APIENTRYP PFNGLVERTEX3DPROC)(GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLVERTEX3DPROC glad_glVertex3d;\n#define glVertex3d glad_glVertex3d\ntypedef void (APIENTRYP PFNGLVERTEX3DVPROC)(const GLdouble *v);\nGLAPI PFNGLVERTEX3DVPROC glad_glVertex3dv;\n#define glVertex3dv glad_glVertex3dv\ntypedef void (APIENTRYP PFNGLVERTEX3FPROC)(GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLVERTEX3FPROC glad_glVertex3f;\n#define glVertex3f glad_glVertex3f\ntypedef void (APIENTRYP PFNGLVERTEX3FVPROC)(const GLfloat *v);\nGLAPI PFNGLVERTEX3FVPROC glad_glVertex3fv;\n#define glVertex3fv glad_glVertex3fv\ntypedef void (APIENTRYP PFNGLVERTEX3IPROC)(GLint x, GLint y, GLint z);\nGLAPI PFNGLVERTEX3IPROC glad_glVertex3i;\n#define glVertex3i glad_glVertex3i\ntypedef void (APIENTRYP PFNGLVERTEX3IVPROC)(const GLint *v);\nGLAPI PFNGLVERTEX3IVPROC glad_glVertex3iv;\n#define glVertex3iv glad_glVertex3iv\ntypedef void (APIENTRYP PFNGLVERTEX3SPROC)(GLshort x, GLshort y, GLshort z);\nGLAPI PFNGLVERTEX3SPROC glad_glVertex3s;\n#define glVertex3s glad_glVertex3s\ntypedef void (APIENTRYP PFNGLVERTEX3SVPROC)(const GLshort *v);\nGLAPI PFNGLVERTEX3SVPROC glad_glVertex3sv;\n#define glVertex3sv glad_glVertex3sv\ntypedef void (APIENTRYP PFNGLVERTEX4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI PFNGLVERTEX4DPROC glad_glVertex4d;\n#define glVertex4d glad_glVertex4d\ntypedef void (APIENTRYP PFNGLVERTEX4DVPROC)(const GLdouble *v);\nGLAPI PFNGLVERTEX4DVPROC glad_glVertex4dv;\n#define glVertex4dv glad_glVertex4dv\ntypedef void (APIENTRYP PFNGLVERTEX4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI PFNGLVERTEX4FPROC glad_glVertex4f;\n#define glVertex4f glad_glVertex4f\ntypedef void (APIENTRYP PFNGLVERTEX4FVPROC)(const GLfloat *v);\nGLAPI PFNGLVERTEX4FVPROC glad_glVertex4fv;\n#define glVertex4fv glad_glVertex4fv\ntypedef void (APIENTRYP PFNGLVERTEX4IPROC)(GLint x, GLint y, GLint z, GLint w);\nGLAPI PFNGLVERTEX4IPROC glad_glVertex4i;\n#define glVertex4i glad_glVertex4i\ntypedef void (APIENTRYP PFNGLVERTEX4IVPROC)(const GLint *v);\nGLAPI PFNGLVERTEX4IVPROC glad_glVertex4iv;\n#define glVertex4iv glad_glVertex4iv\ntypedef void (APIENTRYP PFNGLVERTEX4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI PFNGLVERTEX4SPROC glad_glVertex4s;\n#define glVertex4s glad_glVertex4s\ntypedef void (APIENTRYP PFNGLVERTEX4SVPROC)(const GLshort *v);\nGLAPI PFNGLVERTEX4SVPROC glad_glVertex4sv;\n#define glVertex4sv glad_glVertex4sv\ntypedef void (APIENTRYP PFNGLCLIPPLANEPROC)(GLenum plane, const GLdouble *equation);\nGLAPI PFNGLCLIPPLANEPROC glad_glClipPlane;\n#define glClipPlane glad_glClipPlane\ntypedef void (APIENTRYP PFNGLCOLORMATERIALPROC)(GLenum face, GLenum mode);\nGLAPI PFNGLCOLORMATERIALPROC glad_glColorMaterial;\n#define glColorMaterial glad_glColorMaterial\ntypedef void (APIENTRYP PFNGLFOGFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLFOGFPROC glad_glFogf;\n#define glFogf glad_glFogf\ntypedef void (APIENTRYP PFNGLFOGFVPROC)(GLenum pname, const GLfloat *params);\nGLAPI PFNGLFOGFVPROC glad_glFogfv;\n#define glFogfv glad_glFogfv\ntypedef void (APIENTRYP PFNGLFOGIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLFOGIPROC glad_glFogi;\n#define glFogi glad_glFogi\ntypedef void (APIENTRYP PFNGLFOGIVPROC)(GLenum pname, const GLint *params);\nGLAPI PFNGLFOGIVPROC glad_glFogiv;\n#define glFogiv glad_glFogiv\ntypedef void (APIENTRYP PFNGLLIGHTFPROC)(GLenum light, GLenum pname, GLfloat param);\nGLAPI PFNGLLIGHTFPROC glad_glLightf;\n#define glLightf glad_glLightf\ntypedef void (APIENTRYP PFNGLLIGHTFVPROC)(GLenum light, GLenum pname, const GLfloat *params);\nGLAPI PFNGLLIGHTFVPROC glad_glLightfv;\n#define glLightfv glad_glLightfv\ntypedef void (APIENTRYP PFNGLLIGHTIPROC)(GLenum light, GLenum pname, GLint param);\nGLAPI PFNGLLIGHTIPROC glad_glLighti;\n#define glLighti glad_glLighti\ntypedef void (APIENTRYP PFNGLLIGHTIVPROC)(GLenum light, GLenum pname, const GLint *params);\nGLAPI PFNGLLIGHTIVPROC glad_glLightiv;\n#define glLightiv glad_glLightiv\ntypedef void (APIENTRYP PFNGLLIGHTMODELFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLLIGHTMODELFPROC glad_glLightModelf;\n#define glLightModelf glad_glLightModelf\ntypedef void (APIENTRYP PFNGLLIGHTMODELFVPROC)(GLenum pname, const GLfloat *params);\nGLAPI PFNGLLIGHTMODELFVPROC glad_glLightModelfv;\n#define glLightModelfv glad_glLightModelfv\ntypedef void (APIENTRYP PFNGLLIGHTMODELIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLLIGHTMODELIPROC glad_glLightModeli;\n#define glLightModeli glad_glLightModeli\ntypedef void (APIENTRYP PFNGLLIGHTMODELIVPROC)(GLenum pname, const GLint *params);\nGLAPI PFNGLLIGHTMODELIVPROC glad_glLightModeliv;\n#define glLightModeliv glad_glLightModeliv\ntypedef void (APIENTRYP PFNGLLINESTIPPLEPROC)(GLint factor, GLushort pattern);\nGLAPI PFNGLLINESTIPPLEPROC glad_glLineStipple;\n#define glLineStipple glad_glLineStipple\ntypedef void (APIENTRYP PFNGLMATERIALFPROC)(GLenum face, GLenum pname, GLfloat param);\nGLAPI PFNGLMATERIALFPROC glad_glMaterialf;\n#define glMaterialf glad_glMaterialf\ntypedef void (APIENTRYP PFNGLMATERIALFVPROC)(GLenum face, GLenum pname, const GLfloat *params);\nGLAPI PFNGLMATERIALFVPROC glad_glMaterialfv;\n#define glMaterialfv glad_glMaterialfv\ntypedef void (APIENTRYP PFNGLMATERIALIPROC)(GLenum face, GLenum pname, GLint param);\nGLAPI PFNGLMATERIALIPROC glad_glMateriali;\n#define glMateriali glad_glMateriali\ntypedef void (APIENTRYP PFNGLMATERIALIVPROC)(GLenum face, GLenum pname, const GLint *params);\nGLAPI PFNGLMATERIALIVPROC glad_glMaterialiv;\n#define glMaterialiv glad_glMaterialiv\ntypedef void (APIENTRYP PFNGLPOLYGONSTIPPLEPROC)(const GLubyte *mask);\nGLAPI PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple;\n#define glPolygonStipple glad_glPolygonStipple\ntypedef void (APIENTRYP PFNGLSHADEMODELPROC)(GLenum mode);\nGLAPI PFNGLSHADEMODELPROC glad_glShadeModel;\n#define glShadeModel glad_glShadeModel\ntypedef void (APIENTRYP PFNGLTEXENVFPROC)(GLenum target, GLenum pname, GLfloat param);\nGLAPI PFNGLTEXENVFPROC glad_glTexEnvf;\n#define glTexEnvf glad_glTexEnvf\ntypedef void (APIENTRYP PFNGLTEXENVFVPROC)(GLenum target, GLenum pname, const GLfloat *params);\nGLAPI PFNGLTEXENVFVPROC glad_glTexEnvfv;\n#define glTexEnvfv glad_glTexEnvfv\ntypedef void (APIENTRYP PFNGLTEXENVIPROC)(GLenum target, GLenum pname, GLint param);\nGLAPI PFNGLTEXENVIPROC glad_glTexEnvi;\n#define glTexEnvi glad_glTexEnvi\ntypedef void (APIENTRYP PFNGLTEXENVIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXENVIVPROC glad_glTexEnviv;\n#define glTexEnviv glad_glTexEnviv\ntypedef void (APIENTRYP PFNGLTEXGENDPROC)(GLenum coord, GLenum pname, GLdouble param);\nGLAPI PFNGLTEXGENDPROC glad_glTexGend;\n#define glTexGend glad_glTexGend\ntypedef void (APIENTRYP PFNGLTEXGENDVPROC)(GLenum coord, GLenum pname, const GLdouble *params);\nGLAPI PFNGLTEXGENDVPROC glad_glTexGendv;\n#define glTexGendv glad_glTexGendv\ntypedef void (APIENTRYP PFNGLTEXGENFPROC)(GLenum coord, GLenum pname, GLfloat param);\nGLAPI PFNGLTEXGENFPROC glad_glTexGenf;\n#define glTexGenf glad_glTexGenf\ntypedef void (APIENTRYP PFNGLTEXGENFVPROC)(GLenum coord, GLenum pname, const GLfloat *params);\nGLAPI PFNGLTEXGENFVPROC glad_glTexGenfv;\n#define glTexGenfv glad_glTexGenfv\ntypedef void (APIENTRYP PFNGLTEXGENIPROC)(GLenum coord, GLenum pname, GLint param);\nGLAPI PFNGLTEXGENIPROC glad_glTexGeni;\n#define glTexGeni glad_glTexGeni\ntypedef void (APIENTRYP PFNGLTEXGENIVPROC)(GLenum coord, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXGENIVPROC glad_glTexGeniv;\n#define glTexGeniv glad_glTexGeniv\ntypedef void (APIENTRYP PFNGLFEEDBACKBUFFERPROC)(GLsizei size, GLenum type, GLfloat *buffer);\nGLAPI PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer;\n#define glFeedbackBuffer glad_glFeedbackBuffer\ntypedef void (APIENTRYP PFNGLSELECTBUFFERPROC)(GLsizei size, GLuint *buffer);\nGLAPI PFNGLSELECTBUFFERPROC glad_glSelectBuffer;\n#define glSelectBuffer glad_glSelectBuffer\ntypedef GLint (APIENTRYP PFNGLRENDERMODEPROC)(GLenum mode);\nGLAPI PFNGLRENDERMODEPROC glad_glRenderMode;\n#define glRenderMode glad_glRenderMode\ntypedef void (APIENTRYP PFNGLINITNAMESPROC)(void);\nGLAPI PFNGLINITNAMESPROC glad_glInitNames;\n#define glInitNames glad_glInitNames\ntypedef void (APIENTRYP PFNGLLOADNAMEPROC)(GLuint name);\nGLAPI PFNGLLOADNAMEPROC glad_glLoadName;\n#define glLoadName glad_glLoadName\ntypedef void (APIENTRYP PFNGLPASSTHROUGHPROC)(GLfloat token);\nGLAPI PFNGLPASSTHROUGHPROC glad_glPassThrough;\n#define glPassThrough glad_glPassThrough\ntypedef void (APIENTRYP PFNGLPOPNAMEPROC)(void);\nGLAPI PFNGLPOPNAMEPROC glad_glPopName;\n#define glPopName glad_glPopName\ntypedef void (APIENTRYP PFNGLPUSHNAMEPROC)(GLuint name);\nGLAPI PFNGLPUSHNAMEPROC glad_glPushName;\n#define glPushName glad_glPushName\ntypedef void (APIENTRYP PFNGLCLEARACCUMPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLCLEARACCUMPROC glad_glClearAccum;\n#define glClearAccum glad_glClearAccum\ntypedef void (APIENTRYP PFNGLCLEARINDEXPROC)(GLfloat c);\nGLAPI PFNGLCLEARINDEXPROC glad_glClearIndex;\n#define glClearIndex glad_glClearIndex\ntypedef void (APIENTRYP PFNGLINDEXMASKPROC)(GLuint mask);\nGLAPI PFNGLINDEXMASKPROC glad_glIndexMask;\n#define glIndexMask glad_glIndexMask\ntypedef void (APIENTRYP PFNGLACCUMPROC)(GLenum op, GLfloat value);\nGLAPI PFNGLACCUMPROC glad_glAccum;\n#define glAccum glad_glAccum\ntypedef void (APIENTRYP PFNGLPOPATTRIBPROC)(void);\nGLAPI PFNGLPOPATTRIBPROC glad_glPopAttrib;\n#define glPopAttrib glad_glPopAttrib\ntypedef void (APIENTRYP PFNGLPUSHATTRIBPROC)(GLbitfield mask);\nGLAPI PFNGLPUSHATTRIBPROC glad_glPushAttrib;\n#define glPushAttrib glad_glPushAttrib\ntypedef void (APIENTRYP PFNGLMAP1DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);\nGLAPI PFNGLMAP1DPROC glad_glMap1d;\n#define glMap1d glad_glMap1d\ntypedef void (APIENTRYP PFNGLMAP1FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);\nGLAPI PFNGLMAP1FPROC glad_glMap1f;\n#define glMap1f glad_glMap1f\ntypedef void (APIENTRYP PFNGLMAP2DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);\nGLAPI PFNGLMAP2DPROC glad_glMap2d;\n#define glMap2d glad_glMap2d\ntypedef void (APIENTRYP PFNGLMAP2FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);\nGLAPI PFNGLMAP2FPROC glad_glMap2f;\n#define glMap2f glad_glMap2f\ntypedef void (APIENTRYP PFNGLMAPGRID1DPROC)(GLint un, GLdouble u1, GLdouble u2);\nGLAPI PFNGLMAPGRID1DPROC glad_glMapGrid1d;\n#define glMapGrid1d glad_glMapGrid1d\ntypedef void (APIENTRYP PFNGLMAPGRID1FPROC)(GLint un, GLfloat u1, GLfloat u2);\nGLAPI PFNGLMAPGRID1FPROC glad_glMapGrid1f;\n#define glMapGrid1f glad_glMapGrid1f\ntypedef void (APIENTRYP PFNGLMAPGRID2DPROC)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);\nGLAPI PFNGLMAPGRID2DPROC glad_glMapGrid2d;\n#define glMapGrid2d glad_glMapGrid2d\ntypedef void (APIENTRYP PFNGLMAPGRID2FPROC)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);\nGLAPI PFNGLMAPGRID2FPROC glad_glMapGrid2f;\n#define glMapGrid2f glad_glMapGrid2f\ntypedef void (APIENTRYP PFNGLEVALCOORD1DPROC)(GLdouble u);\nGLAPI PFNGLEVALCOORD1DPROC glad_glEvalCoord1d;\n#define glEvalCoord1d glad_glEvalCoord1d\ntypedef void (APIENTRYP PFNGLEVALCOORD1DVPROC)(const GLdouble *u);\nGLAPI PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv;\n#define glEvalCoord1dv glad_glEvalCoord1dv\ntypedef void (APIENTRYP PFNGLEVALCOORD1FPROC)(GLfloat u);\nGLAPI PFNGLEVALCOORD1FPROC glad_glEvalCoord1f;\n#define glEvalCoord1f glad_glEvalCoord1f\ntypedef void (APIENTRYP PFNGLEVALCOORD1FVPROC)(const GLfloat *u);\nGLAPI PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv;\n#define glEvalCoord1fv glad_glEvalCoord1fv\ntypedef void (APIENTRYP PFNGLEVALCOORD2DPROC)(GLdouble u, GLdouble v);\nGLAPI PFNGLEVALCOORD2DPROC glad_glEvalCoord2d;\n#define glEvalCoord2d glad_glEvalCoord2d\ntypedef void (APIENTRYP PFNGLEVALCOORD2DVPROC)(const GLdouble *u);\nGLAPI PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv;\n#define glEvalCoord2dv glad_glEvalCoord2dv\ntypedef void (APIENTRYP PFNGLEVALCOORD2FPROC)(GLfloat u, GLfloat v);\nGLAPI PFNGLEVALCOORD2FPROC glad_glEvalCoord2f;\n#define glEvalCoord2f glad_glEvalCoord2f\ntypedef void (APIENTRYP PFNGLEVALCOORD2FVPROC)(const GLfloat *u);\nGLAPI PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv;\n#define glEvalCoord2fv glad_glEvalCoord2fv\ntypedef void (APIENTRYP PFNGLEVALMESH1PROC)(GLenum mode, GLint i1, GLint i2);\nGLAPI PFNGLEVALMESH1PROC glad_glEvalMesh1;\n#define glEvalMesh1 glad_glEvalMesh1\ntypedef void (APIENTRYP PFNGLEVALPOINT1PROC)(GLint i);\nGLAPI PFNGLEVALPOINT1PROC glad_glEvalPoint1;\n#define glEvalPoint1 glad_glEvalPoint1\ntypedef void (APIENTRYP PFNGLEVALMESH2PROC)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);\nGLAPI PFNGLEVALMESH2PROC glad_glEvalMesh2;\n#define glEvalMesh2 glad_glEvalMesh2\ntypedef void (APIENTRYP PFNGLEVALPOINT2PROC)(GLint i, GLint j);\nGLAPI PFNGLEVALPOINT2PROC glad_glEvalPoint2;\n#define glEvalPoint2 glad_glEvalPoint2\ntypedef void (APIENTRYP PFNGLALPHAFUNCPROC)(GLenum func, GLfloat ref);\nGLAPI PFNGLALPHAFUNCPROC glad_glAlphaFunc;\n#define glAlphaFunc glad_glAlphaFunc\ntypedef void (APIENTRYP PFNGLPIXELZOOMPROC)(GLfloat xfactor, GLfloat yfactor);\nGLAPI PFNGLPIXELZOOMPROC glad_glPixelZoom;\n#define glPixelZoom glad_glPixelZoom\ntypedef void (APIENTRYP PFNGLPIXELTRANSFERFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf;\n#define glPixelTransferf glad_glPixelTransferf\ntypedef void (APIENTRYP PFNGLPIXELTRANSFERIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi;\n#define glPixelTransferi glad_glPixelTransferi\ntypedef void (APIENTRYP PFNGLPIXELMAPFVPROC)(GLenum map, GLsizei mapsize, const GLfloat *values);\nGLAPI PFNGLPIXELMAPFVPROC glad_glPixelMapfv;\n#define glPixelMapfv glad_glPixelMapfv\ntypedef void (APIENTRYP PFNGLPIXELMAPUIVPROC)(GLenum map, GLsizei mapsize, const GLuint *values);\nGLAPI PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv;\n#define glPixelMapuiv glad_glPixelMapuiv\ntypedef void (APIENTRYP PFNGLPIXELMAPUSVPROC)(GLenum map, GLsizei mapsize, const GLushort *values);\nGLAPI PFNGLPIXELMAPUSVPROC glad_glPixelMapusv;\n#define glPixelMapusv glad_glPixelMapusv\ntypedef void (APIENTRYP PFNGLCOPYPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);\nGLAPI PFNGLCOPYPIXELSPROC glad_glCopyPixels;\n#define glCopyPixels glad_glCopyPixels\ntypedef void (APIENTRYP PFNGLDRAWPIXELSPROC)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLDRAWPIXELSPROC glad_glDrawPixels;\n#define glDrawPixels glad_glDrawPixels\ntypedef void (APIENTRYP PFNGLGETCLIPPLANEPROC)(GLenum plane, GLdouble *equation);\nGLAPI PFNGLGETCLIPPLANEPROC glad_glGetClipPlane;\n#define glGetClipPlane glad_glGetClipPlane\ntypedef void (APIENTRYP PFNGLGETLIGHTFVPROC)(GLenum light, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETLIGHTFVPROC glad_glGetLightfv;\n#define glGetLightfv glad_glGetLightfv\ntypedef void (APIENTRYP PFNGLGETLIGHTIVPROC)(GLenum light, GLenum pname, GLint *params);\nGLAPI PFNGLGETLIGHTIVPROC glad_glGetLightiv;\n#define glGetLightiv glad_glGetLightiv\ntypedef void (APIENTRYP PFNGLGETMAPDVPROC)(GLenum target, GLenum query, GLdouble *v);\nGLAPI PFNGLGETMAPDVPROC glad_glGetMapdv;\n#define glGetMapdv glad_glGetMapdv\ntypedef void (APIENTRYP PFNGLGETMAPFVPROC)(GLenum target, GLenum query, GLfloat *v);\nGLAPI PFNGLGETMAPFVPROC glad_glGetMapfv;\n#define glGetMapfv glad_glGetMapfv\ntypedef void (APIENTRYP PFNGLGETMAPIVPROC)(GLenum target, GLenum query, GLint *v);\nGLAPI PFNGLGETMAPIVPROC glad_glGetMapiv;\n#define glGetMapiv glad_glGetMapiv\ntypedef void (APIENTRYP PFNGLGETMATERIALFVPROC)(GLenum face, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETMATERIALFVPROC glad_glGetMaterialfv;\n#define glGetMaterialfv glad_glGetMaterialfv\ntypedef void (APIENTRYP PFNGLGETMATERIALIVPROC)(GLenum face, GLenum pname, GLint *params);\nGLAPI PFNGLGETMATERIALIVPROC glad_glGetMaterialiv;\n#define glGetMaterialiv glad_glGetMaterialiv\ntypedef void (APIENTRYP PFNGLGETPIXELMAPFVPROC)(GLenum map, GLfloat *values);\nGLAPI PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv;\n#define glGetPixelMapfv glad_glGetPixelMapfv\ntypedef void (APIENTRYP PFNGLGETPIXELMAPUIVPROC)(GLenum map, GLuint *values);\nGLAPI PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv;\n#define glGetPixelMapuiv glad_glGetPixelMapuiv\ntypedef void (APIENTRYP PFNGLGETPIXELMAPUSVPROC)(GLenum map, GLushort *values);\nGLAPI PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv;\n#define glGetPixelMapusv glad_glGetPixelMapusv\ntypedef void (APIENTRYP PFNGLGETPOLYGONSTIPPLEPROC)(GLubyte *mask);\nGLAPI PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple;\n#define glGetPolygonStipple glad_glGetPolygonStipple\ntypedef void (APIENTRYP PFNGLGETTEXENVFVPROC)(GLenum target, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv;\n#define glGetTexEnvfv glad_glGetTexEnvfv\ntypedef void (APIENTRYP PFNGLGETTEXENVIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXENVIVPROC glad_glGetTexEnviv;\n#define glGetTexEnviv glad_glGetTexEnviv\ntypedef void (APIENTRYP PFNGLGETTEXGENDVPROC)(GLenum coord, GLenum pname, GLdouble *params);\nGLAPI PFNGLGETTEXGENDVPROC glad_glGetTexGendv;\n#define glGetTexGendv glad_glGetTexGendv\ntypedef void (APIENTRYP PFNGLGETTEXGENFVPROC)(GLenum coord, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETTEXGENFVPROC glad_glGetTexGenfv;\n#define glGetTexGenfv glad_glGetTexGenfv\ntypedef void (APIENTRYP PFNGLGETTEXGENIVPROC)(GLenum coord, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXGENIVPROC glad_glGetTexGeniv;\n#define glGetTexGeniv glad_glGetTexGeniv\ntypedef GLboolean (APIENTRYP PFNGLISLISTPROC)(GLuint list);\nGLAPI PFNGLISLISTPROC glad_glIsList;\n#define glIsList glad_glIsList\ntypedef void (APIENTRYP PFNGLFRUSTUMPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGLAPI PFNGLFRUSTUMPROC glad_glFrustum;\n#define glFrustum glad_glFrustum\ntypedef void (APIENTRYP PFNGLLOADIDENTITYPROC)(void);\nGLAPI PFNGLLOADIDENTITYPROC glad_glLoadIdentity;\n#define glLoadIdentity glad_glLoadIdentity\ntypedef void (APIENTRYP PFNGLLOADMATRIXFPROC)(const GLfloat *m);\nGLAPI PFNGLLOADMATRIXFPROC glad_glLoadMatrixf;\n#define glLoadMatrixf glad_glLoadMatrixf\ntypedef void (APIENTRYP PFNGLLOADMATRIXDPROC)(const GLdouble *m);\nGLAPI PFNGLLOADMATRIXDPROC glad_glLoadMatrixd;\n#define glLoadMatrixd glad_glLoadMatrixd\ntypedef void (APIENTRYP PFNGLMATRIXMODEPROC)(GLenum mode);\nGLAPI PFNGLMATRIXMODEPROC glad_glMatrixMode;\n#define glMatrixMode glad_glMatrixMode\ntypedef void (APIENTRYP PFNGLMULTMATRIXFPROC)(const GLfloat *m);\nGLAPI PFNGLMULTMATRIXFPROC glad_glMultMatrixf;\n#define glMultMatrixf glad_glMultMatrixf\ntypedef void (APIENTRYP PFNGLMULTMATRIXDPROC)(const GLdouble *m);\nGLAPI PFNGLMULTMATRIXDPROC glad_glMultMatrixd;\n#define glMultMatrixd glad_glMultMatrixd\ntypedef void (APIENTRYP PFNGLORTHOPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGLAPI PFNGLORTHOPROC glad_glOrtho;\n#define glOrtho glad_glOrtho\ntypedef void (APIENTRYP PFNGLPOPMATRIXPROC)(void);\nGLAPI PFNGLPOPMATRIXPROC glad_glPopMatrix;\n#define glPopMatrix glad_glPopMatrix\ntypedef void (APIENTRYP PFNGLPUSHMATRIXPROC)(void);\nGLAPI PFNGLPUSHMATRIXPROC glad_glPushMatrix;\n#define glPushMatrix glad_glPushMatrix\ntypedef void (APIENTRYP PFNGLROTATEDPROC)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLROTATEDPROC glad_glRotated;\n#define glRotated glad_glRotated\ntypedef void (APIENTRYP PFNGLROTATEFPROC)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLROTATEFPROC glad_glRotatef;\n#define glRotatef glad_glRotatef\ntypedef void (APIENTRYP PFNGLSCALEDPROC)(GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLSCALEDPROC glad_glScaled;\n#define glScaled glad_glScaled\ntypedef void (APIENTRYP PFNGLSCALEFPROC)(GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLSCALEFPROC glad_glScalef;\n#define glScalef glad_glScalef\ntypedef void (APIENTRYP PFNGLTRANSLATEDPROC)(GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLTRANSLATEDPROC glad_glTranslated;\n#define glTranslated glad_glTranslated\ntypedef void (APIENTRYP PFNGLTRANSLATEFPROC)(GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLTRANSLATEFPROC glad_glTranslatef;\n#define glTranslatef glad_glTranslatef\n#endif\n#ifndef GL_VERSION_1_1\n#define GL_VERSION_1_1 1\nGLAPI int GLAD_GL_VERSION_1_1;\ntypedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);\nGLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays;\n#define glDrawArrays glad_glDrawArrays\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements;\n#define glDrawElements glad_glDrawElements\ntypedef void (APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params);\nGLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv;\n#define glGetPointerv glad_glGetPointerv\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);\nGLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset;\n#define glPolygonOffset glad_glPolygonOffset\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\nGLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D;\n#define glCopyTexImage1D glad_glCopyTexImage1D\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D;\n#define glCopyTexImage2D glad_glCopyTexImage2D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D;\n#define glCopyTexSubImage1D glad_glCopyTexSubImage1D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D;\n#define glCopyTexSubImage2D glad_glCopyTexSubImage2D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D;\n#define glTexSubImage1D glad_glTexSubImage1D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D;\n#define glTexSubImage2D glad_glTexSubImage2D\ntypedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);\nGLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture;\n#define glBindTexture glad_glBindTexture\ntypedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures);\nGLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures;\n#define glDeleteTextures glad_glDeleteTextures\ntypedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures);\nGLAPI PFNGLGENTEXTURESPROC glad_glGenTextures;\n#define glGenTextures glad_glGenTextures\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture);\nGLAPI PFNGLISTEXTUREPROC glad_glIsTexture;\n#define glIsTexture glad_glIsTexture\ntypedef void (APIENTRYP PFNGLARRAYELEMENTPROC)(GLint i);\nGLAPI PFNGLARRAYELEMENTPROC glad_glArrayElement;\n#define glArrayElement glad_glArrayElement\ntypedef void (APIENTRYP PFNGLCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLCOLORPOINTERPROC glad_glColorPointer;\n#define glColorPointer glad_glColorPointer\ntypedef void (APIENTRYP PFNGLDISABLECLIENTSTATEPROC)(GLenum array);\nGLAPI PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState;\n#define glDisableClientState glad_glDisableClientState\ntypedef void (APIENTRYP PFNGLEDGEFLAGPOINTERPROC)(GLsizei stride, const void *pointer);\nGLAPI PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer;\n#define glEdgeFlagPointer glad_glEdgeFlagPointer\ntypedef void (APIENTRYP PFNGLENABLECLIENTSTATEPROC)(GLenum array);\nGLAPI PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState;\n#define glEnableClientState glad_glEnableClientState\ntypedef void (APIENTRYP PFNGLINDEXPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLINDEXPOINTERPROC glad_glIndexPointer;\n#define glIndexPointer glad_glIndexPointer\ntypedef void (APIENTRYP PFNGLINTERLEAVEDARRAYSPROC)(GLenum format, GLsizei stride, const void *pointer);\nGLAPI PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays;\n#define glInterleavedArrays glad_glInterleavedArrays\ntypedef void (APIENTRYP PFNGLNORMALPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLNORMALPOINTERPROC glad_glNormalPointer;\n#define glNormalPointer glad_glNormalPointer\ntypedef void (APIENTRYP PFNGLTEXCOORDPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer;\n#define glTexCoordPointer glad_glTexCoordPointer\ntypedef void (APIENTRYP PFNGLVERTEXPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXPOINTERPROC glad_glVertexPointer;\n#define glVertexPointer glad_glVertexPointer\ntypedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTPROC)(GLsizei n, const GLuint *textures, GLboolean *residences);\nGLAPI PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident;\n#define glAreTexturesResident glad_glAreTexturesResident\ntypedef void (APIENTRYP PFNGLPRIORITIZETEXTURESPROC)(GLsizei n, const GLuint *textures, const GLfloat *priorities);\nGLAPI PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures;\n#define glPrioritizeTextures glad_glPrioritizeTextures\ntypedef void (APIENTRYP PFNGLINDEXUBPROC)(GLubyte c);\nGLAPI PFNGLINDEXUBPROC glad_glIndexub;\n#define glIndexub glad_glIndexub\ntypedef void (APIENTRYP PFNGLINDEXUBVPROC)(const GLubyte *c);\nGLAPI PFNGLINDEXUBVPROC glad_glIndexubv;\n#define glIndexubv glad_glIndexubv\ntypedef void (APIENTRYP PFNGLPOPCLIENTATTRIBPROC)(void);\nGLAPI PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib;\n#define glPopClientAttrib glad_glPopClientAttrib\ntypedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBPROC)(GLbitfield mask);\nGLAPI PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib;\n#define glPushClientAttrib glad_glPushClientAttrib\n#endif\n#ifndef GL_VERSION_1_2\n#define GL_VERSION_1_2 1\nGLAPI int GLAD_GL_VERSION_1_2;\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\nGLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements;\n#define glDrawRangeElements glad_glDrawRangeElements\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D;\n#define glTexImage3D glad_glTexImage3D\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D;\n#define glTexSubImage3D glad_glTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D;\n#define glCopyTexSubImage3D glad_glCopyTexSubImage3D\n#endif\n#ifndef GL_VERSION_1_3\n#define GL_VERSION_1_3 1\nGLAPI int GLAD_GL_VERSION_1_3;\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture);\nGLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture;\n#define glActiveTexture glad_glActiveTexture\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert);\nGLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage;\n#define glSampleCoverage glad_glSampleCoverage\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D;\n#define glCompressedTexImage3D glad_glCompressedTexImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D;\n#define glCompressedTexImage2D glad_glCompressedTexImage2D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D;\n#define glCompressedTexImage1D glad_glCompressedTexImage1D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D;\n#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D;\n#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\nGLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D;\n#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img);\nGLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage;\n#define glGetCompressedTexImage glad_glGetCompressedTexImage\ntypedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture);\nGLAPI PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture;\n#define glClientActiveTexture glad_glClientActiveTexture\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s);\nGLAPI PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d;\n#define glMultiTexCoord1d glad_glMultiTexCoord1d\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble *v);\nGLAPI PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv;\n#define glMultiTexCoord1dv glad_glMultiTexCoord1dv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s);\nGLAPI PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f;\n#define glMultiTexCoord1f glad_glMultiTexCoord1f\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat *v);\nGLAPI PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv;\n#define glMultiTexCoord1fv glad_glMultiTexCoord1fv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s);\nGLAPI PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i;\n#define glMultiTexCoord1i glad_glMultiTexCoord1i\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint *v);\nGLAPI PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv;\n#define glMultiTexCoord1iv glad_glMultiTexCoord1iv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s);\nGLAPI PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s;\n#define glMultiTexCoord1s glad_glMultiTexCoord1s\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort *v);\nGLAPI PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv;\n#define glMultiTexCoord1sv glad_glMultiTexCoord1sv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t);\nGLAPI PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d;\n#define glMultiTexCoord2d glad_glMultiTexCoord2d\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble *v);\nGLAPI PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv;\n#define glMultiTexCoord2dv glad_glMultiTexCoord2dv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t);\nGLAPI PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f;\n#define glMultiTexCoord2f glad_glMultiTexCoord2f\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat *v);\nGLAPI PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv;\n#define glMultiTexCoord2fv glad_glMultiTexCoord2fv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t);\nGLAPI PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i;\n#define glMultiTexCoord2i glad_glMultiTexCoord2i\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint *v);\nGLAPI PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv;\n#define glMultiTexCoord2iv glad_glMultiTexCoord2iv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t);\nGLAPI PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s;\n#define glMultiTexCoord2s glad_glMultiTexCoord2s\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort *v);\nGLAPI PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv;\n#define glMultiTexCoord2sv glad_glMultiTexCoord2sv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r);\nGLAPI PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d;\n#define glMultiTexCoord3d glad_glMultiTexCoord3d\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble *v);\nGLAPI PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv;\n#define glMultiTexCoord3dv glad_glMultiTexCoord3dv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r);\nGLAPI PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f;\n#define glMultiTexCoord3f glad_glMultiTexCoord3f\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat *v);\nGLAPI PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv;\n#define glMultiTexCoord3fv glad_glMultiTexCoord3fv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r);\nGLAPI PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i;\n#define glMultiTexCoord3i glad_glMultiTexCoord3i\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint *v);\nGLAPI PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv;\n#define glMultiTexCoord3iv glad_glMultiTexCoord3iv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r);\nGLAPI PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s;\n#define glMultiTexCoord3s glad_glMultiTexCoord3s\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort *v);\nGLAPI PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv;\n#define glMultiTexCoord3sv glad_glMultiTexCoord3sv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\nGLAPI PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d;\n#define glMultiTexCoord4d glad_glMultiTexCoord4d\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble *v);\nGLAPI PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv;\n#define glMultiTexCoord4dv glad_glMultiTexCoord4dv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\nGLAPI PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f;\n#define glMultiTexCoord4f glad_glMultiTexCoord4f\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat *v);\nGLAPI PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv;\n#define glMultiTexCoord4fv glad_glMultiTexCoord4fv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q);\nGLAPI PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i;\n#define glMultiTexCoord4i glad_glMultiTexCoord4i\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint *v);\nGLAPI PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv;\n#define glMultiTexCoord4iv glad_glMultiTexCoord4iv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\nGLAPI PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s;\n#define glMultiTexCoord4s glad_glMultiTexCoord4s\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort *v);\nGLAPI PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv;\n#define glMultiTexCoord4sv glad_glMultiTexCoord4sv\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat *m);\nGLAPI PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf;\n#define glLoadTransposeMatrixf glad_glLoadTransposeMatrixf\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble *m);\nGLAPI PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd;\n#define glLoadTransposeMatrixd glad_glLoadTransposeMatrixd\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat *m);\nGLAPI PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf;\n#define glMultTransposeMatrixf glad_glMultTransposeMatrixf\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble *m);\nGLAPI PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd;\n#define glMultTransposeMatrixd glad_glMultTransposeMatrixd\n#endif\n#ifndef GL_VERSION_1_4\n#define GL_VERSION_1_4 1\nGLAPI int GLAD_GL_VERSION_1_4;\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\nGLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate;\n#define glBlendFuncSeparate glad_glBlendFuncSeparate\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);\nGLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays;\n#define glMultiDrawArrays glad_glMultiDrawArrays\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);\nGLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements;\n#define glMultiDrawElements glad_glMultiDrawElements\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param);\nGLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf;\n#define glPointParameterf glad_glPointParameterf\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params);\nGLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv;\n#define glPointParameterfv glad_glPointParameterfv\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param);\nGLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri;\n#define glPointParameteri glad_glPointParameteri\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params);\nGLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv;\n#define glPointParameteriv glad_glPointParameteriv\ntypedef void (APIENTRYP PFNGLFOGCOORDFPROC)(GLfloat coord);\nGLAPI PFNGLFOGCOORDFPROC glad_glFogCoordf;\n#define glFogCoordf glad_glFogCoordf\ntypedef void (APIENTRYP PFNGLFOGCOORDFVPROC)(const GLfloat *coord);\nGLAPI PFNGLFOGCOORDFVPROC glad_glFogCoordfv;\n#define glFogCoordfv glad_glFogCoordfv\ntypedef void (APIENTRYP PFNGLFOGCOORDDPROC)(GLdouble coord);\nGLAPI PFNGLFOGCOORDDPROC glad_glFogCoordd;\n#define glFogCoordd glad_glFogCoordd\ntypedef void (APIENTRYP PFNGLFOGCOORDDVPROC)(const GLdouble *coord);\nGLAPI PFNGLFOGCOORDDVPROC glad_glFogCoorddv;\n#define glFogCoorddv glad_glFogCoorddv\ntypedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer;\n#define glFogCoordPointer glad_glFogCoordPointer\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue);\nGLAPI PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b;\n#define glSecondaryColor3b glad_glSecondaryColor3b\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte *v);\nGLAPI PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv;\n#define glSecondaryColor3bv glad_glSecondaryColor3bv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue);\nGLAPI PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d;\n#define glSecondaryColor3d glad_glSecondaryColor3d\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble *v);\nGLAPI PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv;\n#define glSecondaryColor3dv glad_glSecondaryColor3dv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue);\nGLAPI PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f;\n#define glSecondaryColor3f glad_glSecondaryColor3f\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat *v);\nGLAPI PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv;\n#define glSecondaryColor3fv glad_glSecondaryColor3fv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue);\nGLAPI PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i;\n#define glSecondaryColor3i glad_glSecondaryColor3i\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC)(const GLint *v);\nGLAPI PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv;\n#define glSecondaryColor3iv glad_glSecondaryColor3iv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue);\nGLAPI PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s;\n#define glSecondaryColor3s glad_glSecondaryColor3s\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC)(const GLshort *v);\nGLAPI PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv;\n#define glSecondaryColor3sv glad_glSecondaryColor3sv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue);\nGLAPI PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub;\n#define glSecondaryColor3ub glad_glSecondaryColor3ub\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte *v);\nGLAPI PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv;\n#define glSecondaryColor3ubv glad_glSecondaryColor3ubv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue);\nGLAPI PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui;\n#define glSecondaryColor3ui glad_glSecondaryColor3ui\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint *v);\nGLAPI PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv;\n#define glSecondaryColor3uiv glad_glSecondaryColor3uiv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue);\nGLAPI PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us;\n#define glSecondaryColor3us glad_glSecondaryColor3us\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC)(const GLushort *v);\nGLAPI PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv;\n#define glSecondaryColor3usv glad_glSecondaryColor3usv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer;\n#define glSecondaryColorPointer glad_glSecondaryColorPointer\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y);\nGLAPI PFNGLWINDOWPOS2DPROC glad_glWindowPos2d;\n#define glWindowPos2d glad_glWindowPos2d\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC)(const GLdouble *v);\nGLAPI PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv;\n#define glWindowPos2dv glad_glWindowPos2dv\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y);\nGLAPI PFNGLWINDOWPOS2FPROC glad_glWindowPos2f;\n#define glWindowPos2f glad_glWindowPos2f\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC)(const GLfloat *v);\nGLAPI PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv;\n#define glWindowPos2fv glad_glWindowPos2fv\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IPROC)(GLint x, GLint y);\nGLAPI PFNGLWINDOWPOS2IPROC glad_glWindowPos2i;\n#define glWindowPos2i glad_glWindowPos2i\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC)(const GLint *v);\nGLAPI PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv;\n#define glWindowPos2iv glad_glWindowPos2iv\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y);\nGLAPI PFNGLWINDOWPOS2SPROC glad_glWindowPos2s;\n#define glWindowPos2s glad_glWindowPos2s\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC)(const GLshort *v);\nGLAPI PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv;\n#define glWindowPos2sv glad_glWindowPos2sv\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLWINDOWPOS3DPROC glad_glWindowPos3d;\n#define glWindowPos3d glad_glWindowPos3d\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC)(const GLdouble *v);\nGLAPI PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv;\n#define glWindowPos3dv glad_glWindowPos3dv\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLWINDOWPOS3FPROC glad_glWindowPos3f;\n#define glWindowPos3f glad_glWindowPos3f\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC)(const GLfloat *v);\nGLAPI PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv;\n#define glWindowPos3fv glad_glWindowPos3fv\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z);\nGLAPI PFNGLWINDOWPOS3IPROC glad_glWindowPos3i;\n#define glWindowPos3i glad_glWindowPos3i\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC)(const GLint *v);\nGLAPI PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv;\n#define glWindowPos3iv glad_glWindowPos3iv\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z);\nGLAPI PFNGLWINDOWPOS3SPROC glad_glWindowPos3s;\n#define glWindowPos3s glad_glWindowPos3s\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC)(const GLshort *v);\nGLAPI PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv;\n#define glWindowPos3sv glad_glWindowPos3sv\ntypedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI PFNGLBLENDCOLORPROC glad_glBlendColor;\n#define glBlendColor glad_glBlendColor\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode);\nGLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation;\n#define glBlendEquation glad_glBlendEquation\n#endif\n#ifndef GL_VERSION_1_5\n#define GL_VERSION_1_5 1\nGLAPI int GLAD_GL_VERSION_1_5;\ntypedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids);\nGLAPI PFNGLGENQUERIESPROC glad_glGenQueries;\n#define glGenQueries glad_glGenQueries\ntypedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids);\nGLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries;\n#define glDeleteQueries glad_glDeleteQueries\ntypedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id);\nGLAPI PFNGLISQUERYPROC glad_glIsQuery;\n#define glIsQuery glad_glIsQuery\ntypedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id);\nGLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery;\n#define glBeginQuery glad_glBeginQuery\ntypedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target);\nGLAPI PFNGLENDQUERYPROC glad_glEndQuery;\n#define glEndQuery glad_glEndQuery\ntypedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv;\n#define glGetQueryiv glad_glGetQueryiv\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params);\nGLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv;\n#define glGetQueryObjectiv glad_glGetQueryObjectiv\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params);\nGLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv;\n#define glGetQueryObjectuiv glad_glGetQueryObjectuiv\ntypedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer);\nGLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer;\n#define glBindBuffer glad_glBindBuffer\ntypedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers);\nGLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers;\n#define glDeleteBuffers glad_glDeleteBuffers\ntypedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers);\nGLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers;\n#define glGenBuffers glad_glGenBuffers\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer);\nGLAPI PFNGLISBUFFERPROC glad_glIsBuffer;\n#define glIsBuffer glad_glIsBuffer\ntypedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI PFNGLBUFFERDATAPROC glad_glBufferData;\n#define glBufferData glad_glBufferData\ntypedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData;\n#define glBufferSubData glad_glBufferSubData\ntypedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data);\nGLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData;\n#define glGetBufferSubData glad_glGetBufferSubData\ntypedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access);\nGLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer;\n#define glMapBuffer glad_glMapBuffer\ntypedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target);\nGLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer;\n#define glUnmapBuffer glad_glUnmapBuffer\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv;\n#define glGetBufferParameteriv glad_glGetBufferParameteriv\ntypedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params);\nGLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv;\n#define glGetBufferPointerv glad_glGetBufferPointerv\n#endif\n#ifndef GL_VERSION_2_0\n#define GL_VERSION_2_0 1\nGLAPI int GLAD_GL_VERSION_2_0;\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha);\nGLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate;\n#define glBlendEquationSeparate glad_glBlendEquationSeparate\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs);\nGLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers;\n#define glDrawBuffers glad_glDrawBuffers\ntypedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate;\n#define glStencilOpSeparate glad_glStencilOpSeparate\ntypedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask);\nGLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate;\n#define glStencilFuncSeparate glad_glStencilFuncSeparate\ntypedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask);\nGLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate;\n#define glStencilMaskSeparate glad_glStencilMaskSeparate\ntypedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLATTACHSHADERPROC glad_glAttachShader;\n#define glAttachShader glad_glAttachShader\ntypedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name);\nGLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation;\n#define glBindAttribLocation glad_glBindAttribLocation\ntypedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader);\nGLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader;\n#define glCompileShader glad_glCompileShader\ntypedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void);\nGLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram;\n#define glCreateProgram glad_glCreateProgram\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type);\nGLAPI PFNGLCREATESHADERPROC glad_glCreateShader;\n#define glCreateShader glad_glCreateShader\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram;\n#define glDeleteProgram glad_glDeleteProgram\ntypedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader);\nGLAPI PFNGLDELETESHADERPROC glad_glDeleteShader;\n#define glDeleteShader glad_glDeleteShader\ntypedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader);\nGLAPI PFNGLDETACHSHADERPROC glad_glDetachShader;\n#define glDetachShader glad_glDetachShader\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray;\n#define glDisableVertexAttribArray glad_glDisableVertexAttribArray\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index);\nGLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray;\n#define glEnableVertexAttribArray glad_glEnableVertexAttribArray\ntypedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib;\n#define glGetActiveAttrib glad_glGetActiveAttrib\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform;\n#define glGetActiveUniform glad_glGetActiveUniform\ntypedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\nGLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders;\n#define glGetAttachedShaders glad_glGetAttachedShaders\ntypedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation;\n#define glGetAttribLocation glad_glGetAttribLocation\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params);\nGLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv;\n#define glGetProgramiv glad_glGetProgramiv\ntypedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog;\n#define glGetProgramInfoLog glad_glGetProgramInfoLog\ntypedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params);\nGLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv;\n#define glGetShaderiv glad_glGetShaderiv\ntypedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog;\n#define glGetShaderInfoLog glad_glGetShaderInfoLog\ntypedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\nGLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource;\n#define glGetShaderSource glad_glGetShaderSource\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation;\n#define glGetUniformLocation glad_glGetUniformLocation\ntypedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params);\nGLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv;\n#define glGetUniformfv glad_glGetUniformfv\ntypedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params);\nGLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv;\n#define glGetUniformiv glad_glGetUniformiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params);\nGLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv;\n#define glGetVertexAttribdv glad_glGetVertexAttribdv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv;\n#define glGetVertexAttribfv glad_glGetVertexAttribfv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv;\n#define glGetVertexAttribiv glad_glGetVertexAttribiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer);\nGLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv;\n#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program);\nGLAPI PFNGLISPROGRAMPROC glad_glIsProgram;\n#define glIsProgram glad_glIsProgram\ntypedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader);\nGLAPI PFNGLISSHADERPROC glad_glIsShader;\n#define glIsShader glad_glIsShader\ntypedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program);\nGLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram;\n#define glLinkProgram glad_glLinkProgram\ntypedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\nGLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource;\n#define glShaderSource glad_glShaderSource\ntypedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram;\n#define glUseProgram glad_glUseProgram\ntypedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0);\nGLAPI PFNGLUNIFORM1FPROC glad_glUniform1f;\n#define glUniform1f glad_glUniform1f\ntypedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1);\nGLAPI PFNGLUNIFORM2FPROC glad_glUniform2f;\n#define glUniform2f glad_glUniform2f\ntypedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI PFNGLUNIFORM3FPROC glad_glUniform3f;\n#define glUniform3f glad_glUniform3f\ntypedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI PFNGLUNIFORM4FPROC glad_glUniform4f;\n#define glUniform4f glad_glUniform4f\ntypedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0);\nGLAPI PFNGLUNIFORM1IPROC glad_glUniform1i;\n#define glUniform1i glad_glUniform1i\ntypedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1);\nGLAPI PFNGLUNIFORM2IPROC glad_glUniform2i;\n#define glUniform2i glad_glUniform2i\ntypedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI PFNGLUNIFORM3IPROC glad_glUniform3i;\n#define glUniform3i glad_glUniform3i\ntypedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI PFNGLUNIFORM4IPROC glad_glUniform4i;\n#define glUniform4i glad_glUniform4i\ntypedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv;\n#define glUniform1fv glad_glUniform1fv\ntypedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv;\n#define glUniform2fv glad_glUniform2fv\ntypedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv;\n#define glUniform3fv glad_glUniform3fv\ntypedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value);\nGLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv;\n#define glUniform4fv glad_glUniform4fv\ntypedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv;\n#define glUniform1iv glad_glUniform1iv\ntypedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv;\n#define glUniform2iv glad_glUniform2iv\ntypedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv;\n#define glUniform3iv glad_glUniform3iv\ntypedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value);\nGLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv;\n#define glUniform4iv glad_glUniform4iv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv;\n#define glUniformMatrix2fv glad_glUniformMatrix2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv;\n#define glUniformMatrix3fv glad_glUniformMatrix3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv;\n#define glUniformMatrix4fv glad_glUniformMatrix4fv\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program);\nGLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram;\n#define glValidateProgram glad_glValidateProgram\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x);\nGLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d;\n#define glVertexAttrib1d glad_glVertexAttrib1d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv;\n#define glVertexAttrib1dv glad_glVertexAttrib1dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x);\nGLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f;\n#define glVertexAttrib1f glad_glVertexAttrib1f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv;\n#define glVertexAttrib1fv glad_glVertexAttrib1fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x);\nGLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s;\n#define glVertexAttrib1s glad_glVertexAttrib1s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv;\n#define glVertexAttrib1sv glad_glVertexAttrib1sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y);\nGLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d;\n#define glVertexAttrib2d glad_glVertexAttrib2d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv;\n#define glVertexAttrib2dv glad_glVertexAttrib2dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y);\nGLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f;\n#define glVertexAttrib2f glad_glVertexAttrib2f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv;\n#define glVertexAttrib2fv glad_glVertexAttrib2fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y);\nGLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s;\n#define glVertexAttrib2s glad_glVertexAttrib2s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv;\n#define glVertexAttrib2sv glad_glVertexAttrib2sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d;\n#define glVertexAttrib3d glad_glVertexAttrib3d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv;\n#define glVertexAttrib3dv glad_glVertexAttrib3dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f;\n#define glVertexAttrib3f glad_glVertexAttrib3f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv;\n#define glVertexAttrib3fv glad_glVertexAttrib3fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z);\nGLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s;\n#define glVertexAttrib3s glad_glVertexAttrib3s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv;\n#define glVertexAttrib3sv glad_glVertexAttrib3sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv;\n#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv;\n#define glVertexAttrib4Niv glad_glVertexAttrib4Niv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv;\n#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\nGLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub;\n#define glVertexAttrib4Nub glad_glVertexAttrib4Nub\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv;\n#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv;\n#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv;\n#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv;\n#define glVertexAttrib4bv glad_glVertexAttrib4bv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d;\n#define glVertexAttrib4d glad_glVertexAttrib4d\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v);\nGLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv;\n#define glVertexAttrib4dv glad_glVertexAttrib4dv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f;\n#define glVertexAttrib4f glad_glVertexAttrib4f\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v);\nGLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv;\n#define glVertexAttrib4fv glad_glVertexAttrib4fv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv;\n#define glVertexAttrib4iv glad_glVertexAttrib4iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s;\n#define glVertexAttrib4s glad_glVertexAttrib4s\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv;\n#define glVertexAttrib4sv glad_glVertexAttrib4sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv;\n#define glVertexAttrib4ubv glad_glVertexAttrib4ubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv;\n#define glVertexAttrib4uiv glad_glVertexAttrib4uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv;\n#define glVertexAttrib4usv glad_glVertexAttrib4usv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer;\n#define glVertexAttribPointer glad_glVertexAttribPointer\n#endif\n#ifndef GL_VERSION_2_1\n#define GL_VERSION_2_1 1\nGLAPI int GLAD_GL_VERSION_2_1;\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv;\n#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv;\n#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv;\n#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv;\n#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv;\n#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv;\n#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv\n#endif\n#ifndef GL_VERSION_3_0\n#define GL_VERSION_3_0 1\nGLAPI int GLAD_GL_VERSION_3_0;\ntypedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\nGLAPI PFNGLCOLORMASKIPROC glad_glColorMaski;\n#define glColorMaski glad_glColorMaski\ntypedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data);\nGLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v;\n#define glGetBooleani_v glad_glGetBooleani_v\ntypedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data);\nGLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v;\n#define glGetIntegeri_v glad_glGetIntegeri_v\ntypedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLENABLEIPROC glad_glEnablei;\n#define glEnablei glad_glEnablei\ntypedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLDISABLEIPROC glad_glDisablei;\n#define glDisablei glad_glDisablei\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index);\nGLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi;\n#define glIsEnabledi glad_glIsEnabledi\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode);\nGLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback;\n#define glBeginTransformFeedback glad_glBeginTransformFeedback\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void);\nGLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback;\n#define glEndTransformFeedback glad_glEndTransformFeedback\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange;\n#define glBindBufferRange glad_glBindBufferRange\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer);\nGLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase;\n#define glBindBufferBase glad_glBindBufferBase\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\nGLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings;\n#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\nGLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying;\n#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying\ntypedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp);\nGLAPI PFNGLCLAMPCOLORPROC glad_glClampColor;\n#define glClampColor glad_glClampColor\ntypedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode);\nGLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender;\n#define glBeginConditionalRender glad_glBeginConditionalRender\ntypedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void);\nGLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender;\n#define glEndConditionalRender glad_glEndConditionalRender\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer;\n#define glVertexAttribIPointer glad_glVertexAttribIPointer\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params);\nGLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv;\n#define glGetVertexAttribIiv glad_glGetVertexAttribIiv\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params);\nGLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv;\n#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x);\nGLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i;\n#define glVertexAttribI1i glad_glVertexAttribI1i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y);\nGLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i;\n#define glVertexAttribI2i glad_glVertexAttribI2i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z);\nGLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i;\n#define glVertexAttribI3i glad_glVertexAttribI3i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i;\n#define glVertexAttribI4i glad_glVertexAttribI4i\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x);\nGLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui;\n#define glVertexAttribI1ui glad_glVertexAttribI1ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y);\nGLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui;\n#define glVertexAttribI2ui glad_glVertexAttribI2ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z);\nGLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui;\n#define glVertexAttribI3ui glad_glVertexAttribI3ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui;\n#define glVertexAttribI4ui glad_glVertexAttribI4ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv;\n#define glVertexAttribI1iv glad_glVertexAttribI1iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv;\n#define glVertexAttribI2iv glad_glVertexAttribI2iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv;\n#define glVertexAttribI3iv glad_glVertexAttribI3iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v);\nGLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv;\n#define glVertexAttribI4iv glad_glVertexAttribI4iv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv;\n#define glVertexAttribI1uiv glad_glVertexAttribI1uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv;\n#define glVertexAttribI2uiv glad_glVertexAttribI2uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv;\n#define glVertexAttribI3uiv glad_glVertexAttribI3uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v);\nGLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv;\n#define glVertexAttribI4uiv glad_glVertexAttribI4uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v);\nGLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv;\n#define glVertexAttribI4bv glad_glVertexAttribI4bv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v);\nGLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv;\n#define glVertexAttribI4sv glad_glVertexAttribI4sv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v);\nGLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv;\n#define glVertexAttribI4ubv glad_glVertexAttribI4ubv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v);\nGLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv;\n#define glVertexAttribI4usv glad_glVertexAttribI4usv\ntypedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params);\nGLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv;\n#define glGetUniformuiv glad_glGetUniformuiv\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name);\nGLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation;\n#define glBindFragDataLocation glad_glBindFragDataLocation\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation;\n#define glGetFragDataLocation glad_glGetFragDataLocation\ntypedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0);\nGLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui;\n#define glUniform1ui glad_glUniform1ui\ntypedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1);\nGLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui;\n#define glUniform2ui glad_glUniform2ui\ntypedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui;\n#define glUniform3ui glad_glUniform3ui\ntypedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui;\n#define glUniform4ui glad_glUniform4ui\ntypedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv;\n#define glUniform1uiv glad_glUniform1uiv\ntypedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv;\n#define glUniform2uiv glad_glUniform2uiv\ntypedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv;\n#define glUniform3uiv glad_glUniform3uiv\ntypedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value);\nGLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv;\n#define glUniform4uiv glad_glUniform4uiv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params);\nGLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv;\n#define glTexParameterIiv glad_glTexParameterIiv\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params);\nGLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv;\n#define glTexParameterIuiv glad_glTexParameterIuiv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv;\n#define glGetTexParameterIiv glad_glGetTexParameterIiv\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params);\nGLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv;\n#define glGetTexParameterIuiv glad_glGetTexParameterIuiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value);\nGLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv;\n#define glClearBufferiv glad_glClearBufferiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value);\nGLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv;\n#define glClearBufferuiv glad_glClearBufferuiv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value);\nGLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv;\n#define glClearBufferfv glad_glClearBufferfv\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\nGLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi;\n#define glClearBufferfi glad_glClearBufferfi\ntypedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index);\nGLAPI PFNGLGETSTRINGIPROC glad_glGetStringi;\n#define glGetStringi glad_glGetStringi\ntypedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer);\nGLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer;\n#define glIsRenderbuffer glad_glIsRenderbuffer\ntypedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer);\nGLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer;\n#define glBindRenderbuffer glad_glBindRenderbuffer\ntypedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers);\nGLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers;\n#define glDeleteRenderbuffers glad_glDeleteRenderbuffers\ntypedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers);\nGLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers;\n#define glGenRenderbuffers glad_glGenRenderbuffers\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage;\n#define glRenderbufferStorage glad_glRenderbufferStorage\ntypedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params);\nGLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv;\n#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv\ntypedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer);\nGLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer;\n#define glIsFramebuffer glad_glIsFramebuffer\ntypedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer);\nGLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer;\n#define glBindFramebuffer glad_glBindFramebuffer\ntypedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers);\nGLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers;\n#define glDeleteFramebuffers glad_glDeleteFramebuffers\ntypedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers);\nGLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers;\n#define glGenFramebuffers glad_glGenFramebuffers\ntypedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target);\nGLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus;\n#define glCheckFramebufferStatus glad_glCheckFramebufferStatus\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D;\n#define glFramebufferTexture1D glad_glFramebufferTexture1D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D;\n#define glFramebufferTexture2D glad_glFramebufferTexture2D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\nGLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D;\n#define glFramebufferTexture3D glad_glFramebufferTexture3D\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer;\n#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv;\n#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv\ntypedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target);\nGLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap;\n#define glGenerateMipmap glad_glGenerateMipmap\ntypedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer;\n#define glBlitFramebuffer glad_glBlitFramebuffer\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample;\n#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer;\n#define glFramebufferTextureLayer glad_glFramebufferTextureLayer\ntypedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange;\n#define glMapBufferRange glad_glMapBufferRange\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length);\nGLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange;\n#define glFlushMappedBufferRange glad_glFlushMappedBufferRange\ntypedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray;\n#define glBindVertexArray glad_glBindVertexArray\ntypedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays);\nGLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays;\n#define glDeleteVertexArrays glad_glDeleteVertexArrays\ntypedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays);\nGLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays;\n#define glGenVertexArrays glad_glGenVertexArrays\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array);\nGLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray;\n#define glIsVertexArray glad_glIsVertexArray\n#endif\n#ifndef GL_VERSION_3_1\n#define GL_VERSION_3_1 1\nGLAPI int GLAD_GL_VERSION_3_1;\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount);\nGLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced;\n#define glDrawArraysInstanced glad_glDrawArraysInstanced\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);\nGLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced;\n#define glDrawElementsInstanced glad_glDrawElementsInstanced\ntypedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer);\nGLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer;\n#define glTexBuffer glad_glTexBuffer\ntypedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index);\nGLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex;\n#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex\ntypedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData;\n#define glCopyBufferSubData glad_glCopyBufferSubData\ntypedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);\nGLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices;\n#define glGetUniformIndices glad_glGetUniformIndices\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv;\n#define glGetActiveUniformsiv glad_glGetActiveUniformsiv\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);\nGLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName;\n#define glGetActiveUniformName glad_glGetActiveUniformName\ntypedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName);\nGLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex;\n#define glGetUniformBlockIndex glad_glGetUniformBlockIndex\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv;\n#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);\nGLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName;\n#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName\ntypedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);\nGLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding;\n#define glUniformBlockBinding glad_glUniformBlockBinding\n#endif\n#ifndef GL_VERSION_3_2\n#define GL_VERSION_3_2 1\nGLAPI int GLAD_GL_VERSION_3_2;\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex;\n#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex;\n#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\nGLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex;\n#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\nGLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex;\n#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex\ntypedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode);\nGLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex;\n#define glProvokingVertex glad_glProvokingVertex\ntypedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags);\nGLAPI PFNGLFENCESYNCPROC glad_glFenceSync;\n#define glFenceSync glad_glFenceSync\ntypedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync);\nGLAPI PFNGLISSYNCPROC glad_glIsSync;\n#define glIsSync glad_glIsSync\ntypedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync);\nGLAPI PFNGLDELETESYNCPROC glad_glDeleteSync;\n#define glDeleteSync glad_glDeleteSync\ntypedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync;\n#define glClientWaitSync glad_glClientWaitSync\ntypedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI PFNGLWAITSYNCPROC glad_glWaitSync;\n#define glWaitSync glad_glWaitSync\ntypedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data);\nGLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v;\n#define glGetInteger64v glad_glGetInteger64v\ntypedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\nGLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv;\n#define glGetSynciv glad_glGetSynciv\ntypedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data);\nGLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v;\n#define glGetInteger64i_v glad_glGetInteger64i_v\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params);\nGLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v;\n#define glGetBufferParameteri64v glad_glGetBufferParameteri64v\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level);\nGLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture;\n#define glFramebufferTexture glad_glFramebufferTexture\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample;\n#define glTexImage2DMultisample glad_glTexImage2DMultisample\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample;\n#define glTexImage3DMultisample glad_glTexImage3DMultisample\ntypedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val);\nGLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv;\n#define glGetMultisamplefv glad_glGetMultisamplefv\ntypedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask);\nGLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski;\n#define glSampleMaski glad_glSampleMaski\n#endif\n#ifndef GL_VERSION_3_3\n#define GL_VERSION_3_3 1\nGLAPI int GLAD_GL_VERSION_3_3;\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\nGLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed;\n#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name);\nGLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex;\n#define glGetFragDataIndex glad_glGetFragDataIndex\ntypedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers);\nGLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers;\n#define glGenSamplers glad_glGenSamplers\ntypedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers);\nGLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers;\n#define glDeleteSamplers glad_glDeleteSamplers\ntypedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler);\nGLAPI PFNGLISSAMPLERPROC glad_glIsSampler;\n#define glIsSampler glad_glIsSampler\ntypedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler);\nGLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler;\n#define glBindSampler glad_glBindSampler\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param);\nGLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri;\n#define glSamplerParameteri glad_glSamplerParameteri\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param);\nGLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv;\n#define glSamplerParameteriv glad_glSamplerParameteriv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param);\nGLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf;\n#define glSamplerParameterf glad_glSamplerParameterf\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param);\nGLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv;\n#define glSamplerParameterfv glad_glSamplerParameterfv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param);\nGLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv;\n#define glSamplerParameterIiv glad_glSamplerParameterIiv\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param);\nGLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv;\n#define glSamplerParameterIuiv glad_glSamplerParameterIuiv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv;\n#define glGetSamplerParameteriv glad_glGetSamplerParameteriv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv;\n#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params);\nGLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv;\n#define glGetSamplerParameterfv glad_glGetSamplerParameterfv\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params);\nGLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv;\n#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv\ntypedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target);\nGLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter;\n#define glQueryCounter glad_glQueryCounter\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params);\nGLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v;\n#define glGetQueryObjecti64v glad_glGetQueryObjecti64v\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params);\nGLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v;\n#define glGetQueryObjectui64v glad_glGetQueryObjectui64v\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor);\nGLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor;\n#define glVertexAttribDivisor glad_glVertexAttribDivisor\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui;\n#define glVertexAttribP1ui glad_glVertexAttribP1ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv;\n#define glVertexAttribP1uiv glad_glVertexAttribP1uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui;\n#define glVertexAttribP2ui glad_glVertexAttribP2ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv;\n#define glVertexAttribP2uiv glad_glVertexAttribP2uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui;\n#define glVertexAttribP3ui glad_glVertexAttribP3ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv;\n#define glVertexAttribP3uiv glad_glVertexAttribP3uiv\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui;\n#define glVertexAttribP4ui glad_glVertexAttribP4ui\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv;\n#define glVertexAttribP4uiv glad_glVertexAttribP4uiv\ntypedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui;\n#define glVertexP2ui glad_glVertexP2ui\ntypedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv;\n#define glVertexP2uiv glad_glVertexP2uiv\ntypedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui;\n#define glVertexP3ui glad_glVertexP3ui\ntypedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv;\n#define glVertexP3uiv glad_glVertexP3uiv\ntypedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value);\nGLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui;\n#define glVertexP4ui glad_glVertexP4ui\ntypedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value);\nGLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv;\n#define glVertexP4uiv glad_glVertexP4uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui;\n#define glTexCoordP1ui glad_glTexCoordP1ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv;\n#define glTexCoordP1uiv glad_glTexCoordP1uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui;\n#define glTexCoordP2ui glad_glTexCoordP2ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv;\n#define glTexCoordP2uiv glad_glTexCoordP2uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui;\n#define glTexCoordP3ui glad_glTexCoordP3ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv;\n#define glTexCoordP3uiv glad_glTexCoordP3uiv\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui;\n#define glTexCoordP4ui glad_glTexCoordP4ui\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv;\n#define glTexCoordP4uiv glad_glTexCoordP4uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui;\n#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv;\n#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui;\n#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv;\n#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui;\n#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv;\n#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords);\nGLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui;\n#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords);\nGLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv;\n#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv\ntypedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords);\nGLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui;\n#define glNormalP3ui glad_glNormalP3ui\ntypedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords);\nGLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv;\n#define glNormalP3uiv glad_glNormalP3uiv\ntypedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui;\n#define glColorP3ui glad_glColorP3ui\ntypedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv;\n#define glColorP3uiv glad_glColorP3uiv\ntypedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui;\n#define glColorP4ui glad_glColorP4ui\ntypedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv;\n#define glColorP4uiv glad_glColorP4uiv\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color);\nGLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui;\n#define glSecondaryColorP3ui glad_glSecondaryColorP3ui\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color);\nGLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv;\n#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/glad/khrplatform.h",
    "content": "#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n/* Khronos platform-specific types and definitions.\n *\n * The master copy of khrplatform.h is maintained in the Khronos EGL\n * Registry repository at https://github.com/KhronosGroup/EGL-Registry\n * The last semantic modification to khrplatform.h was at commit ID:\n *      67a3e0864c2d75ea5287b9f3d2eb74a745936692\n *\n * Adopters may modify this file to suit their platform. Adopters are\n * encouraged to submit platform specific modifications to the Khronos\n * group so that they can be included in future versions of this file.\n * Please submit changes by filing pull requests or issues on\n * the EGL Registry repository linked above.\n *\n *\n * See the Implementer's Guidelines for information about where this file\n * should be located on your system and for more details of its use:\n *    http://www.khronos.org/registry/implementers_guide.pdf\n *\n * This file should be included as\n *        #include <KHR/khrplatform.h>\n * by Khronos client API header files that use its types and defines.\n *\n * The types in khrplatform.h should only be used to define API-specific types.\n *\n * Types defined in khrplatform.h:\n *    khronos_int8_t              signed   8  bit\n *    khronos_uint8_t             unsigned 8  bit\n *    khronos_int16_t             signed   16 bit\n *    khronos_uint16_t            unsigned 16 bit\n *    khronos_int32_t             signed   32 bit\n *    khronos_uint32_t            unsigned 32 bit\n *    khronos_int64_t             signed   64 bit\n *    khronos_uint64_t            unsigned 64 bit\n *    khronos_intptr_t            signed   same number of bits as a pointer\n *    khronos_uintptr_t           unsigned same number of bits as a pointer\n *    khronos_ssize_t             signed   size\n *    khronos_usize_t             unsigned size\n *    khronos_float_t             signed   32 bit floating point\n *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds\n *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in\n *                                         nanoseconds\n *    khronos_stime_nanoseconds_t signed time interval in nanoseconds\n *    khronos_boolean_enum_t      enumerated boolean type. This should\n *      only be used as a base type when a client API's boolean type is\n *      an enum. Client APIs which use an integer or other type for\n *      booleans cannot use this as the base type for their boolean.\n *\n * Tokens defined in khrplatform.h:\n *\n *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.\n *\n *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.\n *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.\n *\n * Calling convention macros defined in this file:\n *    KHRONOS_APICALL\n *    KHRONOS_APIENTRY\n *    KHRONOS_APIATTRIBUTES\n *\n * These may be used in function prototypes as:\n *\n *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(\n *                                  int arg1,\n *                                  int arg2) KHRONOS_APIATTRIBUTES;\n */\n\n#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)\n#   define KHRONOS_STATIC 1\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APICALL\n *-------------------------------------------------------------------------\n * This precedes the return type of the function in the function prototype.\n */\n#if defined(KHRONOS_STATIC)\n    /* If the preprocessor constant KHRONOS_STATIC is defined, make the\n     * header compatible with static linking. */\n#   define KHRONOS_APICALL\n#elif defined(_WIN32)\n#   define KHRONOS_APICALL __declspec(dllimport)\n#elif defined (__SYMBIAN32__)\n#   define KHRONOS_APICALL IMPORT_C\n#elif defined(__ANDROID__)\n#   define KHRONOS_APICALL __attribute__((visibility(\"default\")))\n#else\n#   define KHRONOS_APICALL\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIENTRY\n *-------------------------------------------------------------------------\n * This follows the return type of the function  and precedes the function\n * name in the function prototype.\n */\n#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)\n    /* Win32 but not WinCE */\n#   define KHRONOS_APIENTRY __stdcall\n#else\n#   define KHRONOS_APIENTRY\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIATTRIBUTES\n *-------------------------------------------------------------------------\n * This follows the closing parenthesis of the function prototype arguments.\n */\n#if defined (__ARMCC_2__)\n#define KHRONOS_APIATTRIBUTES __softfp\n#else\n#define KHRONOS_APIATTRIBUTES\n#endif\n\n/*-------------------------------------------------------------------------\n * basic type definitions\n *-----------------------------------------------------------------------*/\n#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)\n\n\n/*\n * Using <stdint.h>\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n/*\n * To support platform where unsigned long cannot be used interchangeably with\n * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.\n * Ideally, we could just use (u)intptr_t everywhere, but this could result in\n * ABI breakage if khronos_uintptr_t is changed from unsigned long to\n * unsigned long long or similar (this results in different C++ name mangling).\n * To avoid changes for existing platforms, we restrict usage of intptr_t to\n * platforms where the size of a pointer is larger than the size of long.\n */\n#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)\n#if __SIZEOF_POINTER__ > __SIZEOF_LONG__\n#define KHRONOS_USE_INTPTR_T\n#endif\n#endif\n\n#elif defined(__VMS ) || defined(__sgi)\n\n/*\n * Using <inttypes.h>\n */\n#include <inttypes.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)\n\n/*\n * Win32\n */\ntypedef __int32                 khronos_int32_t;\ntypedef unsigned __int32        khronos_uint32_t;\ntypedef __int64                 khronos_int64_t;\ntypedef unsigned __int64        khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(__sun__) || defined(__digital__)\n\n/*\n * Sun or Digital\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#if defined(__arch64__) || defined(_LP64)\ntypedef long int                khronos_int64_t;\ntypedef unsigned long int       khronos_uint64_t;\n#else\ntypedef long long int           khronos_int64_t;\ntypedef unsigned long long int  khronos_uint64_t;\n#endif /* __arch64__ */\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif 0\n\n/*\n * Hypothetical platform with no float or int64 support\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#define KHRONOS_SUPPORT_INT64   0\n#define KHRONOS_SUPPORT_FLOAT   0\n\n#else\n\n/*\n * Generic fallback\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#endif\n\n\n/*\n * Types that are (so far) the same on all platforms\n */\ntypedef signed   char          khronos_int8_t;\ntypedef unsigned char          khronos_uint8_t;\ntypedef signed   short int     khronos_int16_t;\ntypedef unsigned short int     khronos_uint16_t;\n\n/*\n * Types that differ between LLP64 and LP64 architectures - in LLP64,\n * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears\n * to be the only LLP64 architecture in current use.\n */\n#ifdef KHRONOS_USE_INTPTR_T\ntypedef intptr_t               khronos_intptr_t;\ntypedef uintptr_t              khronos_uintptr_t;\n#elif defined(_WIN64)\ntypedef signed   long long int khronos_intptr_t;\ntypedef unsigned long long int khronos_uintptr_t;\n#else\ntypedef signed   long  int     khronos_intptr_t;\ntypedef unsigned long  int     khronos_uintptr_t;\n#endif\n\n#if defined(_WIN64)\ntypedef signed   long long int khronos_ssize_t;\ntypedef unsigned long long int khronos_usize_t;\n#else\ntypedef signed   long  int     khronos_ssize_t;\ntypedef unsigned long  int     khronos_usize_t;\n#endif\n\n#if KHRONOS_SUPPORT_FLOAT\n/*\n * Float type\n */\ntypedef          float         khronos_float_t;\n#endif\n\n#if KHRONOS_SUPPORT_INT64\n/* Time types\n *\n * These types can be used to represent a time interval in nanoseconds or\n * an absolute Unadjusted System Time.  Unadjusted System Time is the number\n * of nanoseconds since some arbitrary system event (e.g. since the last\n * time the system booted).  The Unadjusted System Time is an unsigned\n * 64 bit value that wraps back to 0 every 584 years.  Time intervals\n * may be either signed or unsigned.\n */\ntypedef khronos_uint64_t       khronos_utime_nanoseconds_t;\ntypedef khronos_int64_t        khronos_stime_nanoseconds_t;\n#endif\n\n/*\n * Dummy value used to pad enum types to 32 bits.\n */\n#ifndef KHRONOS_MAX_ENUM\n#define KHRONOS_MAX_ENUM 0x7FFFFFFF\n#endif\n\n/*\n * Enumerated boolean type\n *\n * Values other than zero should be considered to be true.  Therefore\n * comparisons should not be made against KHRONOS_TRUE.\n */\ntypedef enum {\n    KHRONOS_FALSE = 0,\n    KHRONOS_TRUE  = 1,\n    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM\n} khronos_boolean_enum_t;\n\n#endif /* __khrplatform_h_ */\n"
  },
  {
    "path": "libraries/glad/khrplatform_gles3.h",
    "content": "#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n/* Khronos platform-specific types and definitions.\n *\n * The master copy of khrplatform.h is maintained in the Khronos EGL\n * Registry repository at https://github.com/KhronosGroup/EGL-Registry\n * The last semantic modification to khrplatform.h was at commit ID:\n *      67a3e0864c2d75ea5287b9f3d2eb74a745936692\n *\n * Adopters may modify this file to suit their platform. Adopters are\n * encouraged to submit platform specific modifications to the Khronos\n * group so that they can be included in future versions of this file.\n * Please submit changes by filing pull requests or issues on\n * the EGL Registry repository linked above.\n *\n *\n * See the Implementer's Guidelines for information about where this file\n * should be located on your system and for more details of its use:\n *    http://www.khronos.org/registry/implementers_guide.pdf\n *\n * This file should be included as\n *        #include <KHR/khrplatform.h>\n * by Khronos client API header files that use its types and defines.\n *\n * The types in khrplatform.h should only be used to define API-specific types.\n *\n * Types defined in khrplatform.h:\n *    khronos_int8_t              signed   8  bit\n *    khronos_uint8_t             unsigned 8  bit\n *    khronos_int16_t             signed   16 bit\n *    khronos_uint16_t            unsigned 16 bit\n *    khronos_int32_t             signed   32 bit\n *    khronos_uint32_t            unsigned 32 bit\n *    khronos_int64_t             signed   64 bit\n *    khronos_uint64_t            unsigned 64 bit\n *    khronos_intptr_t            signed   same number of bits as a pointer\n *    khronos_uintptr_t           unsigned same number of bits as a pointer\n *    khronos_ssize_t             signed   size\n *    khronos_usize_t             unsigned size\n *    khronos_float_t             signed   32 bit floating point\n *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds\n *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in\n *                                         nanoseconds\n *    khronos_stime_nanoseconds_t signed time interval in nanoseconds\n *    khronos_boolean_enum_t      enumerated boolean type. This should\n *      only be used as a base type when a client API's boolean type is\n *      an enum. Client APIs which use an integer or other type for\n *      booleans cannot use this as the base type for their boolean.\n *\n * Tokens defined in khrplatform.h:\n *\n *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.\n *\n *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.\n *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.\n *\n * Calling convention macros defined in this file:\n *    KHRONOS_APICALL\n *    KHRONOS_APIENTRY\n *    KHRONOS_APIATTRIBUTES\n *\n * These may be used in function prototypes as:\n *\n *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(\n *                                  int arg1,\n *                                  int arg2) KHRONOS_APIATTRIBUTES;\n */\n\n#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)\n#   define KHRONOS_STATIC 1\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APICALL\n *-------------------------------------------------------------------------\n * This precedes the return type of the function in the function prototype.\n */\n#if defined(KHRONOS_STATIC)\n    /* If the preprocessor constant KHRONOS_STATIC is defined, make the\n     * header compatible with static linking. */\n#   define KHRONOS_APICALL\n#elif defined(_WIN32)\n#   define KHRONOS_APICALL __declspec(dllimport)\n#elif defined (__SYMBIAN32__)\n#   define KHRONOS_APICALL IMPORT_C\n#elif defined(__ANDROID__)\n#   define KHRONOS_APICALL __attribute__((visibility(\"default\")))\n#else\n#   define KHRONOS_APICALL\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIENTRY\n *-------------------------------------------------------------------------\n * This follows the return type of the function  and precedes the function\n * name in the function prototype.\n */\n#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)\n    /* Win32 but not WinCE */\n#   define KHRONOS_APIENTRY __stdcall\n#else\n#   define KHRONOS_APIENTRY\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIATTRIBUTES\n *-------------------------------------------------------------------------\n * This follows the closing parenthesis of the function prototype arguments.\n */\n#if defined (__ARMCC_2__)\n#define KHRONOS_APIATTRIBUTES __softfp\n#else\n#define KHRONOS_APIATTRIBUTES\n#endif\n\n/*-------------------------------------------------------------------------\n * basic type definitions\n *-----------------------------------------------------------------------*/\n#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)\n\n\n/*\n * Using <stdint.h>\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n/*\n * To support platform where unsigned long cannot be used interchangeably with\n * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.\n * Ideally, we could just use (u)intptr_t everywhere, but this could result in\n * ABI breakage if khronos_uintptr_t is changed from unsigned long to\n * unsigned long long or similar (this results in different C++ name mangling).\n * To avoid changes for existing platforms, we restrict usage of intptr_t to\n * platforms where the size of a pointer is larger than the size of long.\n */\n#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)\n#if __SIZEOF_POINTER__ > __SIZEOF_LONG__\n#define KHRONOS_USE_INTPTR_T\n#endif\n#endif\n\n#elif defined(__VMS ) || defined(__sgi)\n\n/*\n * Using <inttypes.h>\n */\n#include <inttypes.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)\n\n/*\n * Win32\n */\ntypedef __int32                 khronos_int32_t;\ntypedef unsigned __int32        khronos_uint32_t;\ntypedef __int64                 khronos_int64_t;\ntypedef unsigned __int64        khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(__sun__) || defined(__digital__)\n\n/*\n * Sun or Digital\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#if defined(__arch64__) || defined(_LP64)\ntypedef long int                khronos_int64_t;\ntypedef unsigned long int       khronos_uint64_t;\n#else\ntypedef long long int           khronos_int64_t;\ntypedef unsigned long long int  khronos_uint64_t;\n#endif /* __arch64__ */\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif 0\n\n/*\n * Hypothetical platform with no float or int64 support\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#define KHRONOS_SUPPORT_INT64   0\n#define KHRONOS_SUPPORT_FLOAT   0\n\n#else\n\n/*\n * Generic fallback\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#endif\n\n\n/*\n * Types that are (so far) the same on all platforms\n */\ntypedef signed   char          khronos_int8_t;\ntypedef unsigned char          khronos_uint8_t;\ntypedef signed   short int     khronos_int16_t;\ntypedef unsigned short int     khronos_uint16_t;\n\n/*\n * Types that differ between LLP64 and LP64 architectures - in LLP64,\n * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears\n * to be the only LLP64 architecture in current use.\n */\n#ifdef KHRONOS_USE_INTPTR_T\ntypedef intptr_t               khronos_intptr_t;\ntypedef uintptr_t              khronos_uintptr_t;\n#elif defined(_WIN64)\ntypedef signed   long long int khronos_intptr_t;\ntypedef unsigned long long int khronos_uintptr_t;\n#else\ntypedef signed   long  int     khronos_intptr_t;\ntypedef unsigned long  int     khronos_uintptr_t;\n#endif\n\n#if defined(_WIN64)\ntypedef signed   long long int khronos_ssize_t;\ntypedef unsigned long long int khronos_usize_t;\n#else\ntypedef signed   long  int     khronos_ssize_t;\ntypedef unsigned long  int     khronos_usize_t;\n#endif\n\n#if KHRONOS_SUPPORT_FLOAT\n/*\n * Float type\n */\ntypedef          float         khronos_float_t;\n#endif\n\n#if KHRONOS_SUPPORT_INT64\n/* Time types\n *\n * These types can be used to represent a time interval in nanoseconds or\n * an absolute Unadjusted System Time.  Unadjusted System Time is the number\n * of nanoseconds since some arbitrary system event (e.g. since the last\n * time the system booted).  The Unadjusted System Time is an unsigned\n * 64 bit value that wraps back to 0 every 584 years.  Time intervals\n * may be either signed or unsigned.\n */\ntypedef khronos_uint64_t       khronos_utime_nanoseconds_t;\ntypedef khronos_int64_t        khronos_stime_nanoseconds_t;\n#endif\n\n/*\n * Dummy value used to pad enum types to 32 bits.\n */\n#ifndef KHRONOS_MAX_ENUM\n#define KHRONOS_MAX_ENUM 0x7FFFFFFF\n#endif\n\n/*\n * Enumerated boolean type\n *\n * Values other than zero should be considered to be true.  Therefore\n * comparisons should not be made against KHRONOS_TRUE.\n */\ntypedef enum {\n    KHRONOS_FALSE = 0,\n    KHRONOS_TRUE  = 1,\n    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM\n} khronos_boolean_enum_t;\n\n#endif /* __khrplatform_h_ */\n"
  },
  {
    "path": "libraries/glfw/glfw3.h",
    "content": "/*************************************************************************\n * GLFW 3.3 - www.glfw.org\n * A library for OpenGL, window and input\n *------------------------------------------------------------------------\n * Copyright (c) 2002-2006 Marcus Geelnard\n * Copyright (c) 2006-2019 Camilla Löwy <elmindreda@glfw.org>\n *\n * This software is provided 'as-is', without any express or implied\n * warranty. In no event will the authors be held liable for any damages\n * arising from the use of this software.\n *\n * Permission is granted to anyone to use this software for any purpose,\n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n *\n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would\n *    be appreciated but is not required.\n *\n * 2. Altered source versions must be plainly marked as such, and must not\n *    be misrepresented as being the original software.\n *\n * 3. This notice may not be removed or altered from any source\n *    distribution.\n *\n *************************************************************************/\n\n#ifndef _glfw3_h_\n#define _glfw3_h_\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************************************************************************\n * Doxygen documentation\n *************************************************************************/\n\n/*! @file glfw3.h\n *  @brief The header of the GLFW 3 API.\n *\n *  This is the header file of the GLFW 3 API.  It defines all its types and\n *  declares all its functions.\n *\n *  For more information about how to use this file, see @ref build_include.\n */\n/*! @defgroup context Context reference\n *  @brief Functions and types related to OpenGL and OpenGL ES contexts.\n *\n *  This is the reference documentation for OpenGL and OpenGL ES context related\n *  functions.  For more task-oriented information, see the @ref context_guide.\n */\n/*! @defgroup vulkan Vulkan support reference\n *  @brief Functions and types related to Vulkan.\n *\n *  This is the reference documentation for Vulkan related functions and types.\n *  For more task-oriented information, see the @ref vulkan_guide.\n */\n/*! @defgroup init Initialization, version and error reference\n *  @brief Functions and types related to initialization and error handling.\n *\n *  This is the reference documentation for initialization and termination of\n *  the library, version management and error handling.  For more task-oriented\n *  information, see the @ref intro_guide.\n */\n/*! @defgroup input Input reference\n *  @brief Functions and types related to input handling.\n *\n *  This is the reference documentation for input related functions and types.\n *  For more task-oriented information, see the @ref input_guide.\n */\n/*! @defgroup monitor Monitor reference\n *  @brief Functions and types related to monitors.\n *\n *  This is the reference documentation for monitor related functions and types.\n *  For more task-oriented information, see the @ref monitor_guide.\n */\n/*! @defgroup window Window reference\n *  @brief Functions and types related to windows.\n *\n *  This is the reference documentation for window related functions and types,\n *  including creation, deletion and event polling.  For more task-oriented\n *  information, see the @ref window_guide.\n */\n\n\n/*************************************************************************\n * Compiler- and platform-specific preprocessor work\n *************************************************************************/\n\n/* If we are we on Windows, we want a single define for it.\n */\n#if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))\n #define _WIN32\n#endif /* _WIN32 */\n\n/* Include because most Windows GLU headers need wchar_t and\n * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.\n * Include it unconditionally to avoid surprising side-effects.\n */\n#include <stddef.h>\n\n/* Include because it is needed by Vulkan and related functions.\n * Include it unconditionally to avoid surprising side-effects.\n */\n#include <stdint.h>\n\n#if defined(GLFW_INCLUDE_VULKAN)\n  #include <vulkan/vulkan.h>\n#endif /* Vulkan header */\n\n/* The Vulkan header may have indirectly included windows.h (because of\n * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.\n */\n\n/* It is customary to use APIENTRY for OpenGL function pointer declarations on\n * all platforms.  Additionally, the Windows OpenGL header needs APIENTRY.\n */\n#if !defined(APIENTRY)\n #if defined(_WIN32)\n  #define APIENTRY __stdcall\n #else\n  #define APIENTRY\n #endif\n #define GLFW_APIENTRY_DEFINED\n#endif /* APIENTRY */\n\n/* Some Windows OpenGL headers need this.\n */\n#if !defined(WINGDIAPI) && defined(_WIN32)\n #define WINGDIAPI __declspec(dllimport)\n #define GLFW_WINGDIAPI_DEFINED\n#endif /* WINGDIAPI */\n\n/* Some Windows GLU headers need this.\n */\n#if !defined(CALLBACK) && defined(_WIN32)\n #define CALLBACK __stdcall\n #define GLFW_CALLBACK_DEFINED\n#endif /* CALLBACK */\n\n/* Include the chosen OpenGL or OpenGL ES headers.\n */\n#if defined(GLFW_INCLUDE_ES1)\n\n #include <GLES/gl.h>\n #if defined(GLFW_INCLUDE_GLEXT)\n  #include <GLES/glext.h>\n #endif\n\n#elif defined(GLFW_INCLUDE_ES2)\n\n #include <GLES2/gl2.h>\n #if defined(GLFW_INCLUDE_GLEXT)\n  #include <GLES2/gl2ext.h>\n #endif\n\n#elif defined(GLFW_INCLUDE_ES3)\n\n #include <GLES3/gl3.h>\n #if defined(GLFW_INCLUDE_GLEXT)\n  #include <GLES2/gl2ext.h>\n #endif\n\n#elif defined(GLFW_INCLUDE_ES31)\n\n #include <GLES3/gl31.h>\n #if defined(GLFW_INCLUDE_GLEXT)\n  #include <GLES2/gl2ext.h>\n #endif\n\n#elif defined(GLFW_INCLUDE_ES32)\n\n #include <GLES3/gl32.h>\n #if defined(GLFW_INCLUDE_GLEXT)\n  #include <GLES2/gl2ext.h>\n #endif\n\n#elif defined(GLFW_INCLUDE_GLCOREARB)\n\n #if defined(__APPLE__)\n\n  #include <OpenGL/gl3.h>\n  #if defined(GLFW_INCLUDE_GLEXT)\n   #include <OpenGL/gl3ext.h>\n  #endif /*GLFW_INCLUDE_GLEXT*/\n\n #else /*__APPLE__*/\n\n  #include <GL/glcorearb.h>\n\n #endif /*__APPLE__*/\n\n#elif defined(GLFW_INCLUDE_GLU)\n\n #if defined(__APPLE__)\n\n  #if defined(GLFW_INCLUDE_GLU)\n   #include <OpenGL/glu.h>\n  #endif\n\n #else /*__APPLE__*/\n\n  #if defined(GLFW_INCLUDE_GLU)\n   #include <GL/glu.h>\n  #endif\n\n #endif /*__APPLE__*/\n\n#elif !defined(GLFW_INCLUDE_NONE) && \\\n      !defined(__gl_h_) && \\\n      !defined(__gles1_gl_h_) && \\\n      !defined(__gles2_gl2_h_) && \\\n      !defined(__gles2_gl3_h_) && \\\n      !defined(__gles2_gl31_h_) && \\\n      !defined(__gles2_gl32_h_) && \\\n      !defined(__gl_glcorearb_h_) && \\\n      !defined(__gl2_h_) /*legacy*/ && \\\n      !defined(__gl3_h_) /*legacy*/ && \\\n      !defined(__gl31_h_) /*legacy*/ && \\\n      !defined(__gl32_h_) /*legacy*/ && \\\n      !defined(__glcorearb_h_) /*legacy*/ && \\\n      !defined(__GL_H__) /*non-standard*/ && \\\n      !defined(__gltypes_h_) /*non-standard*/ && \\\n      !defined(__glee_h_) /*non-standard*/\n\n #if defined(__APPLE__)\n\n  #if !defined(GLFW_INCLUDE_GLEXT)\n   #define GL_GLEXT_LEGACY\n  #endif\n  #include <OpenGL/gl.h>\n\n #else /*__APPLE__*/\n\n  #include <GL/gl.h>\n  #if defined(GLFW_INCLUDE_GLEXT)\n   #include <GL/glext.h>\n  #endif\n\n #endif /*__APPLE__*/\n\n#endif /* OpenGL and OpenGL ES headers */\n\n#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)\n /* GLFW_DLL must be defined by applications that are linking against the DLL\n  * version of the GLFW library.  _GLFW_BUILD_DLL is defined by the GLFW\n  * configuration header when compiling the DLL version of the library.\n  */\n #error \"You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined\"\n#endif\n\n/* GLFWAPI is used to declare public API functions for export\n * from the DLL / shared library / dynamic library.\n */\n#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)\n /* We are building GLFW as a Win32 DLL */\n #define GLFWAPI __declspec(dllexport)\n#elif defined(_WIN32) && defined(GLFW_DLL)\n /* We are calling GLFW as a Win32 DLL */\n #define GLFWAPI __declspec(dllimport)\n#elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)\n /* We are building GLFW as a shared / dynamic library */\n #define GLFWAPI __attribute__((visibility(\"default\")))\n#else\n /* We are building or calling GLFW as a static library */\n #define GLFWAPI\n#endif\n\n\n/*************************************************************************\n * GLFW API tokens\n *************************************************************************/\n\n/*! @name GLFW version macros\n *  @{ */\n/*! @brief The major version number of the GLFW library.\n *\n *  This is incremented when the API is changed in non-compatible ways.\n *  @ingroup init\n */\n#define GLFW_VERSION_MAJOR          3\n/*! @brief The minor version number of the GLFW library.\n *\n *  This is incremented when features are added to the API but it remains\n *  backward-compatible.\n *  @ingroup init\n */\n#define GLFW_VERSION_MINOR          3\n/*! @brief The revision number of the GLFW library.\n *\n *  This is incremented when a bug fix release is made that does not contain any\n *  API changes.\n *  @ingroup init\n */\n#define GLFW_VERSION_REVISION       4\n/*! @} */\n\n/*! @brief One.\n *\n *  This is only semantic sugar for the number 1.  You can instead use `1` or\n *  `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal\n *  to one.\n *\n *  @ingroup init\n */\n#define GLFW_TRUE                   1\n/*! @brief Zero.\n *\n *  This is only semantic sugar for the number 0.  You can instead use `0` or\n *  `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is\n *  equal to zero.\n *\n *  @ingroup init\n */\n#define GLFW_FALSE                  0\n\n/*! @name Key and button actions\n *  @{ */\n/*! @brief The key or mouse button was released.\n *\n *  The key or mouse button was released.\n *\n *  @ingroup input\n */\n#define GLFW_RELEASE                0\n/*! @brief The key or mouse button was pressed.\n *\n *  The key or mouse button was pressed.\n *\n *  @ingroup input\n */\n#define GLFW_PRESS                  1\n/*! @brief The key was held down until it repeated.\n *\n *  The key was held down until it repeated.\n *\n *  @ingroup input\n */\n#define GLFW_REPEAT                 2\n/*! @} */\n\n/*! @defgroup hat_state Joystick hat states\n *  @brief Joystick hat states.\n *\n *  See [joystick hat input](@ref joystick_hat) for how these are used.\n *\n *  @ingroup input\n *  @{ */\n#define GLFW_HAT_CENTERED           0\n#define GLFW_HAT_UP                 1\n#define GLFW_HAT_RIGHT              2\n#define GLFW_HAT_DOWN               4\n#define GLFW_HAT_LEFT               8\n#define GLFW_HAT_RIGHT_UP           (GLFW_HAT_RIGHT | GLFW_HAT_UP)\n#define GLFW_HAT_RIGHT_DOWN         (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)\n#define GLFW_HAT_LEFT_UP            (GLFW_HAT_LEFT  | GLFW_HAT_UP)\n#define GLFW_HAT_LEFT_DOWN          (GLFW_HAT_LEFT  | GLFW_HAT_DOWN)\n/*! @} */\n\n/*! @defgroup keys Keyboard keys\n *  @brief Keyboard key IDs.\n *\n *  See [key input](@ref input_key) for how these are used.\n *\n *  These key codes are inspired by the _USB HID Usage Tables v1.12_ (p. 53-60),\n *  but re-arranged to map to 7-bit ASCII for printable keys (function keys are\n *  put in the 256+ range).\n *\n *  The naming of the key codes follow these rules:\n *   - The US keyboard layout is used\n *   - Names of printable alpha-numeric characters are used (e.g. \"A\", \"R\",\n *     \"3\", etc.)\n *   - For non-alphanumeric characters, Unicode:ish names are used (e.g.\n *     \"COMMA\", \"LEFT_SQUARE_BRACKET\", etc.). Note that some names do not\n *     correspond to the Unicode standard (usually for brevity)\n *   - Keys that lack a clear US mapping are named \"WORLD_x\"\n *   - For non-printable keys, custom names are used (e.g. \"F4\",\n *     \"BACKSPACE\", etc.)\n *\n *  @ingroup input\n *  @{\n */\n\n/* The unknown key */\n#define GLFW_KEY_UNKNOWN            -1\n\n/* Printable keys */\n#define GLFW_KEY_SPACE              32\n#define GLFW_KEY_APOSTROPHE         39  /* ' */\n#define GLFW_KEY_COMMA              44  /* , */\n#define GLFW_KEY_MINUS              45  /* - */\n#define GLFW_KEY_PERIOD             46  /* . */\n#define GLFW_KEY_SLASH              47  /* / */\n#define GLFW_KEY_0                  48\n#define GLFW_KEY_1                  49\n#define GLFW_KEY_2                  50\n#define GLFW_KEY_3                  51\n#define GLFW_KEY_4                  52\n#define GLFW_KEY_5                  53\n#define GLFW_KEY_6                  54\n#define GLFW_KEY_7                  55\n#define GLFW_KEY_8                  56\n#define GLFW_KEY_9                  57\n#define GLFW_KEY_SEMICOLON          59  /* ; */\n#define GLFW_KEY_EQUAL              61  /* = */\n#define GLFW_KEY_A                  65\n#define GLFW_KEY_B                  66\n#define GLFW_KEY_C                  67\n#define GLFW_KEY_D                  68\n#define GLFW_KEY_E                  69\n#define GLFW_KEY_F                  70\n#define GLFW_KEY_G                  71\n#define GLFW_KEY_H                  72\n#define GLFW_KEY_I                  73\n#define GLFW_KEY_J                  74\n#define GLFW_KEY_K                  75\n#define GLFW_KEY_L                  76\n#define GLFW_KEY_M                  77\n#define GLFW_KEY_N                  78\n#define GLFW_KEY_O                  79\n#define GLFW_KEY_P                  80\n#define GLFW_KEY_Q                  81\n#define GLFW_KEY_R                  82\n#define GLFW_KEY_S                  83\n#define GLFW_KEY_T                  84\n#define GLFW_KEY_U                  85\n#define GLFW_KEY_V                  86\n#define GLFW_KEY_W                  87\n#define GLFW_KEY_X                  88\n#define GLFW_KEY_Y                  89\n#define GLFW_KEY_Z                  90\n#define GLFW_KEY_LEFT_BRACKET       91  /* [ */\n#define GLFW_KEY_BACKSLASH          92  /* \\ */\n#define GLFW_KEY_RIGHT_BRACKET      93  /* ] */\n#define GLFW_KEY_GRAVE_ACCENT       96  /* ` */\n#define GLFW_KEY_WORLD_1            161 /* non-US #1 */\n#define GLFW_KEY_WORLD_2            162 /* non-US #2 */\n\n/* Function keys */\n#define GLFW_KEY_ESCAPE             256\n#define GLFW_KEY_ENTER              257\n#define GLFW_KEY_TAB                258\n#define GLFW_KEY_BACKSPACE          259\n#define GLFW_KEY_INSERT             260\n#define GLFW_KEY_DELETE             261\n#define GLFW_KEY_RIGHT              262\n#define GLFW_KEY_LEFT               263\n#define GLFW_KEY_DOWN               264\n#define GLFW_KEY_UP                 265\n#define GLFW_KEY_PAGE_UP            266\n#define GLFW_KEY_PAGE_DOWN          267\n#define GLFW_KEY_HOME               268\n#define GLFW_KEY_END                269\n#define GLFW_KEY_CAPS_LOCK          280\n#define GLFW_KEY_SCROLL_LOCK        281\n#define GLFW_KEY_NUM_LOCK           282\n#define GLFW_KEY_PRINT_SCREEN       283\n#define GLFW_KEY_PAUSE              284\n#define GLFW_KEY_F1                 290\n#define GLFW_KEY_F2                 291\n#define GLFW_KEY_F3                 292\n#define GLFW_KEY_F4                 293\n#define GLFW_KEY_F5                 294\n#define GLFW_KEY_F6                 295\n#define GLFW_KEY_F7                 296\n#define GLFW_KEY_F8                 297\n#define GLFW_KEY_F9                 298\n#define GLFW_KEY_F10                299\n#define GLFW_KEY_F11                300\n#define GLFW_KEY_F12                301\n#define GLFW_KEY_F13                302\n#define GLFW_KEY_F14                303\n#define GLFW_KEY_F15                304\n#define GLFW_KEY_F16                305\n#define GLFW_KEY_F17                306\n#define GLFW_KEY_F18                307\n#define GLFW_KEY_F19                308\n#define GLFW_KEY_F20                309\n#define GLFW_KEY_F21                310\n#define GLFW_KEY_F22                311\n#define GLFW_KEY_F23                312\n#define GLFW_KEY_F24                313\n#define GLFW_KEY_F25                314\n#define GLFW_KEY_KP_0               320\n#define GLFW_KEY_KP_1               321\n#define GLFW_KEY_KP_2               322\n#define GLFW_KEY_KP_3               323\n#define GLFW_KEY_KP_4               324\n#define GLFW_KEY_KP_5               325\n#define GLFW_KEY_KP_6               326\n#define GLFW_KEY_KP_7               327\n#define GLFW_KEY_KP_8               328\n#define GLFW_KEY_KP_9               329\n#define GLFW_KEY_KP_DECIMAL         330\n#define GLFW_KEY_KP_DIVIDE          331\n#define GLFW_KEY_KP_MULTIPLY        332\n#define GLFW_KEY_KP_SUBTRACT        333\n#define GLFW_KEY_KP_ADD             334\n#define GLFW_KEY_KP_ENTER           335\n#define GLFW_KEY_KP_EQUAL           336\n#define GLFW_KEY_LEFT_SHIFT         340\n#define GLFW_KEY_LEFT_CONTROL       341\n#define GLFW_KEY_LEFT_ALT           342\n#define GLFW_KEY_LEFT_SUPER         343\n#define GLFW_KEY_RIGHT_SHIFT        344\n#define GLFW_KEY_RIGHT_CONTROL      345\n#define GLFW_KEY_RIGHT_ALT          346\n#define GLFW_KEY_RIGHT_SUPER        347\n#define GLFW_KEY_MENU               348\n\n#define GLFW_KEY_LAST               GLFW_KEY_MENU\n\n/*! @} */\n\n/*! @defgroup mods Modifier key flags\n *  @brief Modifier key flags.\n *\n *  See [key input](@ref input_key) for how these are used.\n *\n *  @ingroup input\n *  @{ */\n\n/*! @brief If this bit is set one or more Shift keys were held down.\n *\n *  If this bit is set one or more Shift keys were held down.\n */\n#define GLFW_MOD_SHIFT           0x0001\n/*! @brief If this bit is set one or more Control keys were held down.\n *\n *  If this bit is set one or more Control keys were held down.\n */\n#define GLFW_MOD_CONTROL         0x0002\n/*! @brief If this bit is set one or more Alt keys were held down.\n *\n *  If this bit is set one or more Alt keys were held down.\n */\n#define GLFW_MOD_ALT             0x0004\n/*! @brief If this bit is set one or more Super keys were held down.\n *\n *  If this bit is set one or more Super keys were held down.\n */\n#define GLFW_MOD_SUPER           0x0008\n/*! @brief If this bit is set the Caps Lock key is enabled.\n *\n *  If this bit is set the Caps Lock key is enabled and the @ref\n *  GLFW_LOCK_KEY_MODS input mode is set.\n */\n#define GLFW_MOD_CAPS_LOCK       0x0010\n/*! @brief If this bit is set the Num Lock key is enabled.\n *\n *  If this bit is set the Num Lock key is enabled and the @ref\n *  GLFW_LOCK_KEY_MODS input mode is set.\n */\n#define GLFW_MOD_NUM_LOCK        0x0020\n\n/*! @} */\n\n/*! @defgroup buttons Mouse buttons\n *  @brief Mouse button IDs.\n *\n *  See [mouse button input](@ref input_mouse_button) for how these are used.\n *\n *  @ingroup input\n *  @{ */\n#define GLFW_MOUSE_BUTTON_1         0\n#define GLFW_MOUSE_BUTTON_2         1\n#define GLFW_MOUSE_BUTTON_3         2\n#define GLFW_MOUSE_BUTTON_4         3\n#define GLFW_MOUSE_BUTTON_5         4\n#define GLFW_MOUSE_BUTTON_6         5\n#define GLFW_MOUSE_BUTTON_7         6\n#define GLFW_MOUSE_BUTTON_8         7\n#define GLFW_MOUSE_BUTTON_LAST      GLFW_MOUSE_BUTTON_8\n#define GLFW_MOUSE_BUTTON_LEFT      GLFW_MOUSE_BUTTON_1\n#define GLFW_MOUSE_BUTTON_RIGHT     GLFW_MOUSE_BUTTON_2\n#define GLFW_MOUSE_BUTTON_MIDDLE    GLFW_MOUSE_BUTTON_3\n/*! @} */\n\n/*! @defgroup joysticks Joysticks\n *  @brief Joystick IDs.\n *\n *  See [joystick input](@ref joystick) for how these are used.\n *\n *  @ingroup input\n *  @{ */\n#define GLFW_JOYSTICK_1             0\n#define GLFW_JOYSTICK_2             1\n#define GLFW_JOYSTICK_3             2\n#define GLFW_JOYSTICK_4             3\n#define GLFW_JOYSTICK_5             4\n#define GLFW_JOYSTICK_6             5\n#define GLFW_JOYSTICK_7             6\n#define GLFW_JOYSTICK_8             7\n#define GLFW_JOYSTICK_9             8\n#define GLFW_JOYSTICK_10            9\n#define GLFW_JOYSTICK_11            10\n#define GLFW_JOYSTICK_12            11\n#define GLFW_JOYSTICK_13            12\n#define GLFW_JOYSTICK_14            13\n#define GLFW_JOYSTICK_15            14\n#define GLFW_JOYSTICK_16            15\n#define GLFW_JOYSTICK_LAST          GLFW_JOYSTICK_16\n/*! @} */\n\n/*! @defgroup gamepad_buttons Gamepad buttons\n *  @brief Gamepad buttons.\n *\n *  See @ref gamepad for how these are used.\n *\n *  @ingroup input\n *  @{ */\n#define GLFW_GAMEPAD_BUTTON_A               0\n#define GLFW_GAMEPAD_BUTTON_B               1\n#define GLFW_GAMEPAD_BUTTON_X               2\n#define GLFW_GAMEPAD_BUTTON_Y               3\n#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER     4\n#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER    5\n#define GLFW_GAMEPAD_BUTTON_BACK            6\n#define GLFW_GAMEPAD_BUTTON_START           7\n#define GLFW_GAMEPAD_BUTTON_GUIDE           8\n#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB      9\n#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB     10\n#define GLFW_GAMEPAD_BUTTON_DPAD_UP         11\n#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT      12\n#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN       13\n#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT       14\n#define GLFW_GAMEPAD_BUTTON_LAST            GLFW_GAMEPAD_BUTTON_DPAD_LEFT\n\n#define GLFW_GAMEPAD_BUTTON_CROSS       GLFW_GAMEPAD_BUTTON_A\n#define GLFW_GAMEPAD_BUTTON_CIRCLE      GLFW_GAMEPAD_BUTTON_B\n#define GLFW_GAMEPAD_BUTTON_SQUARE      GLFW_GAMEPAD_BUTTON_X\n#define GLFW_GAMEPAD_BUTTON_TRIANGLE    GLFW_GAMEPAD_BUTTON_Y\n/*! @} */\n\n/*! @defgroup gamepad_axes Gamepad axes\n *  @brief Gamepad axes.\n *\n *  See @ref gamepad for how these are used.\n *\n *  @ingroup input\n *  @{ */\n#define GLFW_GAMEPAD_AXIS_LEFT_X        0\n#define GLFW_GAMEPAD_AXIS_LEFT_Y        1\n#define GLFW_GAMEPAD_AXIS_RIGHT_X       2\n#define GLFW_GAMEPAD_AXIS_RIGHT_Y       3\n#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER  4\n#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5\n#define GLFW_GAMEPAD_AXIS_LAST          GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER\n/*! @} */\n\n/*! @defgroup errors Error codes\n *  @brief Error codes.\n *\n *  See [error handling](@ref error_handling) for how these are used.\n *\n *  @ingroup init\n *  @{ */\n/*! @brief No error has occurred.\n *\n *  No error has occurred.\n *\n *  @analysis Yay.\n */\n#define GLFW_NO_ERROR               0\n/*! @brief GLFW has not been initialized.\n *\n *  This occurs if a GLFW function was called that must not be called unless the\n *  library is [initialized](@ref intro_init).\n *\n *  @analysis Application programmer error.  Initialize GLFW before calling any\n *  function that requires initialization.\n */\n#define GLFW_NOT_INITIALIZED        0x00010001\n/*! @brief No context is current for this thread.\n *\n *  This occurs if a GLFW function was called that needs and operates on the\n *  current OpenGL or OpenGL ES context but no context is current on the calling\n *  thread.  One such function is @ref glfwSwapInterval.\n *\n *  @analysis Application programmer error.  Ensure a context is current before\n *  calling functions that require a current context.\n */\n#define GLFW_NO_CURRENT_CONTEXT     0x00010002\n/*! @brief One of the arguments to the function was an invalid enum value.\n *\n *  One of the arguments to the function was an invalid enum value, for example\n *  requesting @ref GLFW_RED_BITS with @ref glfwGetWindowAttrib.\n *\n *  @analysis Application programmer error.  Fix the offending call.\n */\n#define GLFW_INVALID_ENUM           0x00010003\n/*! @brief One of the arguments to the function was an invalid value.\n *\n *  One of the arguments to the function was an invalid value, for example\n *  requesting a non-existent OpenGL or OpenGL ES version like 2.7.\n *\n *  Requesting a valid but unavailable OpenGL or OpenGL ES version will instead\n *  result in a @ref GLFW_VERSION_UNAVAILABLE error.\n *\n *  @analysis Application programmer error.  Fix the offending call.\n */\n#define GLFW_INVALID_VALUE          0x00010004\n/*! @brief A memory allocation failed.\n *\n *  A memory allocation failed.\n *\n *  @analysis A bug in GLFW or the underlying operating system.  Report the bug\n *  to our [issue tracker](https://github.com/glfw/glfw/issues).\n */\n#define GLFW_OUT_OF_MEMORY          0x00010005\n/*! @brief GLFW could not find support for the requested API on the system.\n *\n *  GLFW could not find support for the requested API on the system.\n *\n *  @analysis The installed graphics driver does not support the requested\n *  API, or does not support it via the chosen context creation backend.\n *  Below are a few examples.\n *\n *  @par\n *  Some pre-installed Windows graphics drivers do not support OpenGL.  AMD only\n *  supports OpenGL ES via EGL, while Nvidia and Intel only support it via\n *  a WGL or GLX extension.  macOS does not provide OpenGL ES at all.  The Mesa\n *  EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary\n *  driver.  Older graphics drivers do not support Vulkan.\n */\n#define GLFW_API_UNAVAILABLE        0x00010006\n/*! @brief The requested OpenGL or OpenGL ES version is not available.\n *\n *  The requested OpenGL or OpenGL ES version (including any requested context\n *  or framebuffer hints) is not available on this machine.\n *\n *  @analysis The machine does not support your requirements.  If your\n *  application is sufficiently flexible, downgrade your requirements and try\n *  again.  Otherwise, inform the user that their machine does not match your\n *  requirements.\n *\n *  @par\n *  Future invalid OpenGL and OpenGL ES versions, for example OpenGL 4.8 if 5.0\n *  comes out before the 4.x series gets that far, also fail with this error and\n *  not @ref GLFW_INVALID_VALUE, because GLFW cannot know what future versions\n *  will exist.\n */\n#define GLFW_VERSION_UNAVAILABLE    0x00010007\n/*! @brief A platform-specific error occurred that does not match any of the\n *  more specific categories.\n *\n *  A platform-specific error occurred that does not match any of the more\n *  specific categories.\n *\n *  @analysis A bug or configuration error in GLFW, the underlying operating\n *  system or its drivers, or a lack of required resources.  Report the issue to\n *  our [issue tracker](https://github.com/glfw/glfw/issues).\n */\n#define GLFW_PLATFORM_ERROR         0x00010008\n/*! @brief The requested format is not supported or available.\n *\n *  If emitted during window creation, the requested pixel format is not\n *  supported.\n *\n *  If emitted when querying the clipboard, the contents of the clipboard could\n *  not be converted to the requested format.\n *\n *  @analysis If emitted during window creation, one or more\n *  [hard constraints](@ref window_hints_hard) did not match any of the\n *  available pixel formats.  If your application is sufficiently flexible,\n *  downgrade your requirements and try again.  Otherwise, inform the user that\n *  their machine does not match your requirements.\n *\n *  @par\n *  If emitted when querying the clipboard, ignore the error or report it to\n *  the user, as appropriate.\n */\n#define GLFW_FORMAT_UNAVAILABLE     0x00010009\n/*! @brief The specified window does not have an OpenGL or OpenGL ES context.\n *\n *  A window that does not have an OpenGL or OpenGL ES context was passed to\n *  a function that requires it to have one.\n *\n *  @analysis Application programmer error.  Fix the offending call.\n */\n#define GLFW_NO_WINDOW_CONTEXT      0x0001000A\n/*! @} */\n\n/*! @addtogroup window\n *  @{ */\n/*! @brief Input focus window hint and attribute\n *\n *  Input focus [window hint](@ref GLFW_FOCUSED_hint) or\n *  [window attribute](@ref GLFW_FOCUSED_attrib).\n */\n#define GLFW_FOCUSED                0x00020001\n/*! @brief Window iconification window attribute\n *\n *  Window iconification [window attribute](@ref GLFW_ICONIFIED_attrib).\n */\n#define GLFW_ICONIFIED              0x00020002\n/*! @brief Window resize-ability window hint and attribute\n *\n *  Window resize-ability [window hint](@ref GLFW_RESIZABLE_hint) and\n *  [window attribute](@ref GLFW_RESIZABLE_attrib).\n */\n#define GLFW_RESIZABLE              0x00020003\n/*! @brief Window visibility window hint and attribute\n *\n *  Window visibility [window hint](@ref GLFW_VISIBLE_hint) and\n *  [window attribute](@ref GLFW_VISIBLE_attrib).\n */\n#define GLFW_VISIBLE                0x00020004\n/*! @brief Window decoration window hint and attribute\n *\n *  Window decoration [window hint](@ref GLFW_DECORATED_hint) and\n *  [window attribute](@ref GLFW_DECORATED_attrib).\n */\n#define GLFW_DECORATED              0x00020005\n/*! @brief Window auto-iconification window hint and attribute\n *\n *  Window auto-iconification [window hint](@ref GLFW_AUTO_ICONIFY_hint) and\n *  [window attribute](@ref GLFW_AUTO_ICONIFY_attrib).\n */\n#define GLFW_AUTO_ICONIFY           0x00020006\n/*! @brief Window decoration window hint and attribute\n *\n *  Window decoration [window hint](@ref GLFW_FLOATING_hint) and\n *  [window attribute](@ref GLFW_FLOATING_attrib).\n */\n#define GLFW_FLOATING               0x00020007\n/*! @brief Window maximization window hint and attribute\n *\n *  Window maximization [window hint](@ref GLFW_MAXIMIZED_hint) and\n *  [window attribute](@ref GLFW_MAXIMIZED_attrib).\n */\n#define GLFW_MAXIMIZED              0x00020008\n/*! @brief Cursor centering window hint\n *\n *  Cursor centering [window hint](@ref GLFW_CENTER_CURSOR_hint).\n */\n#define GLFW_CENTER_CURSOR          0x00020009\n/*! @brief Window framebuffer transparency hint and attribute\n *\n *  Window framebuffer transparency\n *  [window hint](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint) and\n *  [window attribute](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib).\n */\n#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A\n/*! @brief Mouse cursor hover window attribute.\n *\n *  Mouse cursor hover [window attribute](@ref GLFW_HOVERED_attrib).\n */\n#define GLFW_HOVERED                0x0002000B\n/*! @brief Input focus on calling show window hint and attribute\n *\n *  Input focus [window hint](@ref GLFW_FOCUS_ON_SHOW_hint) or\n *  [window attribute](@ref GLFW_FOCUS_ON_SHOW_attrib).\n */\n#define GLFW_FOCUS_ON_SHOW          0x0002000C\n\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_RED_BITS).\n */\n#define GLFW_RED_BITS               0x00021001\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_GREEN_BITS).\n */\n#define GLFW_GREEN_BITS             0x00021002\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_BLUE_BITS).\n */\n#define GLFW_BLUE_BITS              0x00021003\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_ALPHA_BITS).\n */\n#define GLFW_ALPHA_BITS             0x00021004\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_DEPTH_BITS).\n */\n#define GLFW_DEPTH_BITS             0x00021005\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_STENCIL_BITS).\n */\n#define GLFW_STENCIL_BITS           0x00021006\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_ACCUM_RED_BITS).\n */\n#define GLFW_ACCUM_RED_BITS         0x00021007\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_ACCUM_GREEN_BITS).\n */\n#define GLFW_ACCUM_GREEN_BITS       0x00021008\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_ACCUM_BLUE_BITS).\n */\n#define GLFW_ACCUM_BLUE_BITS        0x00021009\n/*! @brief Framebuffer bit depth hint.\n *\n *  Framebuffer bit depth [hint](@ref GLFW_ACCUM_ALPHA_BITS).\n */\n#define GLFW_ACCUM_ALPHA_BITS       0x0002100A\n/*! @brief Framebuffer auxiliary buffer hint.\n *\n *  Framebuffer auxiliary buffer [hint](@ref GLFW_AUX_BUFFERS).\n */\n#define GLFW_AUX_BUFFERS            0x0002100B\n/*! @brief OpenGL stereoscopic rendering hint.\n *\n *  OpenGL stereoscopic rendering [hint](@ref GLFW_STEREO).\n */\n#define GLFW_STEREO                 0x0002100C\n/*! @brief Framebuffer MSAA samples hint.\n *\n *  Framebuffer MSAA samples [hint](@ref GLFW_SAMPLES).\n */\n#define GLFW_SAMPLES                0x0002100D\n/*! @brief Framebuffer sRGB hint.\n *\n *  Framebuffer sRGB [hint](@ref GLFW_SRGB_CAPABLE).\n */\n#define GLFW_SRGB_CAPABLE           0x0002100E\n/*! @brief Monitor refresh rate hint.\n *\n *  Monitor refresh rate [hint](@ref GLFW_REFRESH_RATE).\n */\n#define GLFW_REFRESH_RATE           0x0002100F\n/*! @brief Framebuffer double buffering hint.\n *\n *  Framebuffer double buffering [hint](@ref GLFW_DOUBLEBUFFER).\n */\n#define GLFW_DOUBLEBUFFER           0x00021010\n\n/*! @brief Context client API hint and attribute.\n *\n *  Context client API [hint](@ref GLFW_CLIENT_API_hint) and\n *  [attribute](@ref GLFW_CLIENT_API_attrib).\n */\n#define GLFW_CLIENT_API             0x00022001\n/*! @brief Context client API major version hint and attribute.\n *\n *  Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint)\n *  and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib).\n */\n#define GLFW_CONTEXT_VERSION_MAJOR  0x00022002\n/*! @brief Context client API minor version hint and attribute.\n *\n *  Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint)\n *  and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib).\n */\n#define GLFW_CONTEXT_VERSION_MINOR  0x00022003\n/*! @brief Context client API revision number hint and attribute.\n *\n *  Context client API revision number\n *  [attribute](@ref GLFW_CONTEXT_REVISION_attrib).\n */\n#define GLFW_CONTEXT_REVISION       0x00022004\n/*! @brief Context robustness hint and attribute.\n *\n *  Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint)\n *  and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib).\n */\n#define GLFW_CONTEXT_ROBUSTNESS     0x00022005\n/*! @brief OpenGL forward-compatibility hint and attribute.\n *\n *  OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint)\n *  and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib).\n */\n#define GLFW_OPENGL_FORWARD_COMPAT  0x00022006\n/*! @brief Debug mode context hint and attribute.\n *\n *  Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and\n *  [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib).\n */\n#define GLFW_OPENGL_DEBUG_CONTEXT   0x00022007\n/*! @brief OpenGL profile hint and attribute.\n *\n *  OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and\n *  [attribute](@ref GLFW_OPENGL_PROFILE_attrib).\n */\n#define GLFW_OPENGL_PROFILE         0x00022008\n/*! @brief Context flush-on-release hint and attribute.\n *\n *  Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and\n *  [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib).\n */\n#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009\n/*! @brief Context error suppression hint and attribute.\n *\n *  Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and\n *  [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib).\n */\n#define GLFW_CONTEXT_NO_ERROR       0x0002200A\n/*! @brief Context creation API hint and attribute.\n *\n *  Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and\n *  [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib).\n */\n#define GLFW_CONTEXT_CREATION_API   0x0002200B\n/*! @brief Window content area scaling window\n *  [window hint](@ref GLFW_SCALE_TO_MONITOR).\n */\n#define GLFW_SCALE_TO_MONITOR       0x0002200C\n/*! @brief macOS specific\n *  [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).\n */\n#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001\n/*! @brief macOS specific\n *  [window hint](@ref GLFW_COCOA_FRAME_NAME_hint).\n */\n#define GLFW_COCOA_FRAME_NAME         0x00023002\n/*! @brief macOS specific\n *  [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint).\n */\n#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003\n/*! @brief X11 specific\n *  [window hint](@ref GLFW_X11_CLASS_NAME_hint).\n */\n#define GLFW_X11_CLASS_NAME         0x00024001\n/*! @brief X11 specific\n *  [window hint](@ref GLFW_X11_CLASS_NAME_hint).\n */\n#define GLFW_X11_INSTANCE_NAME      0x00024002\n/*! @} */\n\n#define GLFW_NO_API                          0\n#define GLFW_OPENGL_API             0x00030001\n#define GLFW_OPENGL_ES_API          0x00030002\n\n#define GLFW_NO_ROBUSTNESS                   0\n#define GLFW_NO_RESET_NOTIFICATION  0x00031001\n#define GLFW_LOSE_CONTEXT_ON_RESET  0x00031002\n\n#define GLFW_OPENGL_ANY_PROFILE              0\n#define GLFW_OPENGL_CORE_PROFILE    0x00032001\n#define GLFW_OPENGL_COMPAT_PROFILE  0x00032002\n\n#define GLFW_CURSOR                 0x00033001\n#define GLFW_STICKY_KEYS            0x00033002\n#define GLFW_STICKY_MOUSE_BUTTONS   0x00033003\n#define GLFW_LOCK_KEY_MODS          0x00033004\n#define GLFW_RAW_MOUSE_MOTION       0x00033005\n\n#define GLFW_CURSOR_NORMAL          0x00034001\n#define GLFW_CURSOR_HIDDEN          0x00034002\n#define GLFW_CURSOR_DISABLED        0x00034003\n\n#define GLFW_ANY_RELEASE_BEHAVIOR            0\n#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001\n#define GLFW_RELEASE_BEHAVIOR_NONE  0x00035002\n\n#define GLFW_NATIVE_CONTEXT_API     0x00036001\n#define GLFW_EGL_CONTEXT_API        0x00036002\n#define GLFW_OSMESA_CONTEXT_API     0x00036003\n\n/*! @defgroup shapes Standard cursor shapes\n *  @brief Standard system cursor shapes.\n *\n *  See [standard cursor creation](@ref cursor_standard) for how these are used.\n *\n *  @ingroup input\n *  @{ */\n\n/*! @brief The regular arrow cursor shape.\n *\n *  The regular arrow cursor.\n */\n#define GLFW_ARROW_CURSOR           0x00036001\n/*! @brief The text input I-beam cursor shape.\n *\n *  The text input I-beam cursor shape.\n */\n#define GLFW_IBEAM_CURSOR           0x00036002\n/*! @brief The crosshair shape.\n *\n *  The crosshair shape.\n */\n#define GLFW_CROSSHAIR_CURSOR       0x00036003\n/*! @brief The hand shape.\n *\n *  The hand shape.\n */\n#define GLFW_HAND_CURSOR            0x00036004\n/*! @brief The horizontal resize arrow shape.\n *\n *  The horizontal resize arrow shape.\n */\n#define GLFW_HRESIZE_CURSOR         0x00036005\n/*! @brief The vertical resize arrow shape.\n *\n *  The vertical resize arrow shape.\n */\n#define GLFW_VRESIZE_CURSOR         0x00036006\n/*! @} */\n\n#define GLFW_CONNECTED              0x00040001\n#define GLFW_DISCONNECTED           0x00040002\n\n/*! @addtogroup init\n *  @{ */\n/*! @brief Joystick hat buttons init hint.\n *\n *  Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS).\n */\n#define GLFW_JOYSTICK_HAT_BUTTONS   0x00050001\n/*! @brief macOS specific init hint.\n *\n *  macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint).\n */\n#define GLFW_COCOA_CHDIR_RESOURCES  0x00051001\n/*! @brief macOS specific init hint.\n *\n *  macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint).\n */\n#define GLFW_COCOA_MENUBAR          0x00051002\n/*! @} */\n\n#define GLFW_DONT_CARE              -1\n\n\n/*************************************************************************\n * GLFW API types\n *************************************************************************/\n\n/*! @brief Client API function pointer type.\n *\n *  Generic function pointer used for returning client API function pointers\n *  without forcing a cast from a regular pointer.\n *\n *  @sa @ref context_glext\n *  @sa @ref glfwGetProcAddress\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup context\n */\ntypedef void (*GLFWglproc)(void);\n\n/*! @brief Vulkan API function pointer type.\n *\n *  Generic function pointer used for returning Vulkan API function pointers\n *  without forcing a cast from a regular pointer.\n *\n *  @sa @ref vulkan_proc\n *  @sa @ref glfwGetInstanceProcAddress\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\ntypedef void (*GLFWvkproc)(void);\n\n/*! @brief Opaque monitor object.\n *\n *  Opaque monitor object.\n *\n *  @see @ref monitor_object\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\ntypedef struct GLFWmonitor GLFWmonitor;\n\n/*! @brief Opaque window object.\n *\n *  Opaque window object.\n *\n *  @see @ref window_object\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\ntypedef struct GLFWwindow GLFWwindow;\n\n/*! @brief Opaque cursor object.\n *\n *  Opaque cursor object.\n *\n *  @see @ref cursor_object\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\ntypedef struct GLFWcursor GLFWcursor;\n\n/*! @brief The function pointer type for error callbacks.\n *\n *  This is the function pointer type for error callbacks.  An error callback\n *  function has the following signature:\n *  @code\n *  void callback_name(int error_code, const char* description)\n *  @endcode\n *\n *  @param[in] error_code An [error code](@ref errors).  Future releases may add\n *  more error codes.\n *  @param[in] description A UTF-8 encoded string describing the error.\n *\n *  @pointer_lifetime The error description string is valid until the callback\n *  function returns.\n *\n *  @sa @ref error_handling\n *  @sa @ref glfwSetErrorCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup init\n */\ntypedef void (* GLFWerrorfun)(int,const char*);\n\n/*! @brief The function pointer type for window position callbacks.\n *\n *  This is the function pointer type for window position callbacks.  A window\n *  position callback function has the following signature:\n *  @code\n *  void callback_name(GLFWwindow* window, int xpos, int ypos)\n *  @endcode\n *\n *  @param[in] window The window that was moved.\n *  @param[in] xpos The new x-coordinate, in screen coordinates, of the\n *  upper-left corner of the content area of the window.\n *  @param[in] ypos The new y-coordinate, in screen coordinates, of the\n *  upper-left corner of the content area of the window.\n *\n *  @sa @ref window_pos\n *  @sa @ref glfwSetWindowPosCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowposfun)(GLFWwindow*,int,int);\n\n/*! @brief The function pointer type for window size callbacks.\n *\n *  This is the function pointer type for window size callbacks.  A window size\n *  callback function has the following signature:\n *  @code\n *  void callback_name(GLFWwindow* window, int width, int height)\n *  @endcode\n *\n *  @param[in] window The window that was resized.\n *  @param[in] width The new width, in screen coordinates, of the window.\n *  @param[in] height The new height, in screen coordinates, of the window.\n *\n *  @sa @ref window_size\n *  @sa @ref glfwSetWindowSizeCallback\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int);\n\n/*! @brief The function pointer type for window close callbacks.\n *\n *  This is the function pointer type for window close callbacks.  A window\n *  close callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window)\n *  @endcode\n *\n *  @param[in] window The window that the user attempted to close.\n *\n *  @sa @ref window_close\n *  @sa @ref glfwSetWindowCloseCallback\n *\n *  @since Added in version 2.5.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowclosefun)(GLFWwindow*);\n\n/*! @brief The function pointer type for window content refresh callbacks.\n *\n *  This is the function pointer type for window content refresh callbacks.\n *  A window content refresh callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window);\n *  @endcode\n *\n *  @param[in] window The window whose content needs to be refreshed.\n *\n *  @sa @ref window_refresh\n *  @sa @ref glfwSetWindowRefreshCallback\n *\n *  @since Added in version 2.5.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowrefreshfun)(GLFWwindow*);\n\n/*! @brief The function pointer type for window focus callbacks.\n *\n *  This is the function pointer type for window focus callbacks.  A window\n *  focus callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int focused)\n *  @endcode\n *\n *  @param[in] window The window that gained or lost input focus.\n *  @param[in] focused `GLFW_TRUE` if the window was given input focus, or\n *  `GLFW_FALSE` if it lost it.\n *\n *  @sa @ref window_focus\n *  @sa @ref glfwSetWindowFocusCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);\n\n/*! @brief The function pointer type for window iconify callbacks.\n *\n *  This is the function pointer type for window iconify callbacks.  A window\n *  iconify callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int iconified)\n *  @endcode\n *\n *  @param[in] window The window that was iconified or restored.\n *  @param[in] iconified `GLFW_TRUE` if the window was iconified, or\n *  `GLFW_FALSE` if it was restored.\n *\n *  @sa @ref window_iconify\n *  @sa @ref glfwSetWindowIconifyCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);\n\n/*! @brief The function pointer type for window maximize callbacks.\n *\n *  This is the function pointer type for window maximize callbacks.  A window\n *  maximize callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int maximized)\n *  @endcode\n *\n *  @param[in] window The window that was maximized or restored.\n *  @param[in] maximized `GLFW_TRUE` if the window was maximized, or\n *  `GLFW_FALSE` if it was restored.\n *\n *  @sa @ref window_maximize\n *  @sa glfwSetWindowMaximizeCallback\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int);\n\n/*! @brief The function pointer type for framebuffer size callbacks.\n *\n *  This is the function pointer type for framebuffer size callbacks.\n *  A framebuffer size callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int width, int height)\n *  @endcode\n *\n *  @param[in] window The window whose framebuffer was resized.\n *  @param[in] width The new width, in pixels, of the framebuffer.\n *  @param[in] height The new height, in pixels, of the framebuffer.\n *\n *  @sa @ref window_fbsize\n *  @sa @ref glfwSetFramebufferSizeCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int);\n\n/*! @brief The function pointer type for window content scale callbacks.\n *\n *  This is the function pointer type for window content scale callbacks.\n *  A window content scale callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, float xscale, float yscale)\n *  @endcode\n *\n *  @param[in] window The window whose content scale changed.\n *  @param[in] xscale The new x-axis content scale of the window.\n *  @param[in] yscale The new y-axis content scale of the window.\n *\n *  @sa @ref window_scale\n *  @sa @ref glfwSetWindowContentScaleCallback\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\ntypedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float);\n\n/*! @brief The function pointer type for mouse button callbacks.\n *\n *  This is the function pointer type for mouse button callback functions.\n *  A mouse button callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int button, int action, int mods)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] button The [mouse button](@ref buttons) that was pressed or\n *  released.\n *  @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`.  Future releases\n *  may add more actions.\n *  @param[in] mods Bit field describing which [modifier keys](@ref mods) were\n *  held down.\n *\n *  @sa @ref input_mouse_button\n *  @sa @ref glfwSetMouseButtonCallback\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle and modifier mask parameters.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int);\n\n/*! @brief The function pointer type for cursor position callbacks.\n *\n *  This is the function pointer type for cursor position callbacks.  A cursor\n *  position callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, double xpos, double ypos);\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] xpos The new cursor x-coordinate, relative to the left edge of\n *  the content area.\n *  @param[in] ypos The new cursor y-coordinate, relative to the top edge of the\n *  content area.\n *\n *  @sa @ref cursor_pos\n *  @sa @ref glfwSetCursorPosCallback\n *\n *  @since Added in version 3.0.  Replaces `GLFWmouseposfun`.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);\n\n/*! @brief The function pointer type for cursor enter/leave callbacks.\n *\n *  This is the function pointer type for cursor enter/leave callbacks.\n *  A cursor enter/leave callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int entered)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] entered `GLFW_TRUE` if the cursor entered the window's content\n *  area, or `GLFW_FALSE` if it left it.\n *\n *  @sa @ref cursor_enter\n *  @sa @ref glfwSetCursorEnterCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWcursorenterfun)(GLFWwindow*,int);\n\n/*! @brief The function pointer type for scroll callbacks.\n *\n *  This is the function pointer type for scroll callbacks.  A scroll callback\n *  function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, double xoffset, double yoffset)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] xoffset The scroll offset along the x-axis.\n *  @param[in] yoffset The scroll offset along the y-axis.\n *\n *  @sa @ref scrolling\n *  @sa @ref glfwSetScrollCallback\n *\n *  @since Added in version 3.0.  Replaces `GLFWmousewheelfun`.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWscrollfun)(GLFWwindow*,double,double);\n\n/*! @brief The function pointer type for keyboard key callbacks.\n *\n *  This is the function pointer type for keyboard key callbacks.  A keyboard\n *  key callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] key The [keyboard key](@ref keys) that was pressed or released.\n *  @param[in] scancode The system-specific scancode of the key.\n *  @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`.  Future\n *  releases may add more actions.\n *  @param[in] mods Bit field describing which [modifier keys](@ref mods) were\n *  held down.\n *\n *  @sa @ref input_key\n *  @sa @ref glfwSetKeyCallback\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle, scancode and modifier mask parameters.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int);\n\n/*! @brief The function pointer type for Unicode character callbacks.\n *\n *  This is the function pointer type for Unicode character callbacks.\n *  A Unicode character callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, unsigned int codepoint)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] codepoint The Unicode code point of the character.\n *\n *  @sa @ref input_char\n *  @sa @ref glfwSetCharCallback\n *\n *  @since Added in version 2.4.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWcharfun)(GLFWwindow*,unsigned int);\n\n/*! @brief The function pointer type for Unicode character with modifiers\n *  callbacks.\n *\n *  This is the function pointer type for Unicode character with modifiers\n *  callbacks.  It is called for each input character, regardless of what\n *  modifier keys are held down.  A Unicode character with modifiers callback\n *  function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, unsigned int codepoint, int mods)\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] codepoint The Unicode code point of the character.\n *  @param[in] mods Bit field describing which [modifier keys](@ref mods) were\n *  held down.\n *\n *  @sa @ref input_char\n *  @sa @ref glfwSetCharModsCallback\n *\n *  @deprecated Scheduled for removal in version 4.0.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int);\n\n/*! @brief The function pointer type for path drop callbacks.\n *\n *  This is the function pointer type for path drop callbacks.  A path drop\n *  callback function has the following signature:\n *  @code\n *  void function_name(GLFWwindow* window, int path_count, const char* paths[])\n *  @endcode\n *\n *  @param[in] window The window that received the event.\n *  @param[in] path_count The number of dropped paths.\n *  @param[in] paths The UTF-8 encoded file and/or directory path names.\n *\n *  @pointer_lifetime The path array and its strings are valid until the\n *  callback function returns.\n *\n *  @sa @ref path_drop\n *  @sa @ref glfwSetDropCallback\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWdropfun)(GLFWwindow*,int,const char*[]);\n\n/*! @brief The function pointer type for monitor configuration callbacks.\n *\n *  This is the function pointer type for monitor configuration callbacks.\n *  A monitor callback function has the following signature:\n *  @code\n *  void function_name(GLFWmonitor* monitor, int event)\n *  @endcode\n *\n *  @param[in] monitor The monitor that was connected or disconnected.\n *  @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.  Future\n *  releases may add more events.\n *\n *  @sa @ref monitor_event\n *  @sa @ref glfwSetMonitorCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\ntypedef void (* GLFWmonitorfun)(GLFWmonitor*,int);\n\n/*! @brief The function pointer type for joystick configuration callbacks.\n *\n *  This is the function pointer type for joystick configuration callbacks.\n *  A joystick configuration callback function has the following signature:\n *  @code\n *  void function_name(int jid, int event)\n *  @endcode\n *\n *  @param[in] jid The joystick that was connected or disconnected.\n *  @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`.  Future\n *  releases may add more events.\n *\n *  @sa @ref joystick_event\n *  @sa @ref glfwSetJoystickCallback\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup input\n */\ntypedef void (* GLFWjoystickfun)(int,int);\n\n/*! @brief Video mode type.\n *\n *  This describes a single video mode.\n *\n *  @sa @ref monitor_modes\n *  @sa @ref glfwGetVideoMode\n *  @sa @ref glfwGetVideoModes\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added refresh rate member.\n *\n *  @ingroup monitor\n */\ntypedef struct GLFWvidmode\n{\n    /*! The width, in screen coordinates, of the video mode.\n     */\n    int width;\n    /*! The height, in screen coordinates, of the video mode.\n     */\n    int height;\n    /*! The bit depth of the red channel of the video mode.\n     */\n    int redBits;\n    /*! The bit depth of the green channel of the video mode.\n     */\n    int greenBits;\n    /*! The bit depth of the blue channel of the video mode.\n     */\n    int blueBits;\n    /*! The refresh rate, in Hz, of the video mode.\n     */\n    int refreshRate;\n} GLFWvidmode;\n\n/*! @brief Gamma ramp.\n *\n *  This describes the gamma ramp for a monitor.\n *\n *  @sa @ref monitor_gamma\n *  @sa @ref glfwGetGammaRamp\n *  @sa @ref glfwSetGammaRamp\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\ntypedef struct GLFWgammaramp\n{\n    /*! An array of value describing the response of the red channel.\n     */\n    unsigned short* red;\n    /*! An array of value describing the response of the green channel.\n     */\n    unsigned short* green;\n    /*! An array of value describing the response of the blue channel.\n     */\n    unsigned short* blue;\n    /*! The number of elements in each array.\n     */\n    unsigned int size;\n} GLFWgammaramp;\n\n/*! @brief Image data.\n *\n *  This describes a single 2D image.  See the documentation for each related\n *  function what the expected pixel format is.\n *\n *  @sa @ref cursor_custom\n *  @sa @ref window_icon\n *\n *  @since Added in version 2.1.\n *  @glfw3 Removed format and bytes-per-pixel members.\n *\n *  @ingroup window\n */\ntypedef struct GLFWimage\n{\n    /*! The width, in pixels, of this image.\n     */\n    int width;\n    /*! The height, in pixels, of this image.\n     */\n    int height;\n    /*! The pixel data of this image, arranged left-to-right, top-to-bottom.\n     */\n    unsigned char* pixels;\n} GLFWimage;\n\n/*! @brief Gamepad input state\n *\n *  This describes the input state of a gamepad.\n *\n *  @sa @ref gamepad\n *  @sa @ref glfwGetGamepadState\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\ntypedef struct GLFWgamepadstate\n{\n    /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS`\n     *  or `GLFW_RELEASE`.\n     */\n    unsigned char buttons[15];\n    /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0\n     *  to 1.0 inclusive.\n     */\n    float axes[6];\n} GLFWgamepadstate;\n\n\n/*************************************************************************\n * GLFW API functions\n *************************************************************************/\n\n/*! @brief Initializes the GLFW library.\n *\n *  This function initializes the GLFW library.  Before most GLFW functions can\n *  be used, GLFW must be initialized, and before an application terminates GLFW\n *  should be terminated in order to free any resources allocated during or\n *  after initialization.\n *\n *  If this function fails, it calls @ref glfwTerminate before returning.  If it\n *  succeeds, you should call @ref glfwTerminate before the application exits.\n *\n *  Additional calls to this function after successful initialization but before\n *  termination will return `GLFW_TRUE` immediately.\n *\n *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark @macos This function will change the current directory of the\n *  application to the `Contents/Resources` subdirectory of the application's\n *  bundle, if present.  This can be disabled with the @ref\n *  GLFW_COCOA_CHDIR_RESOURCES init hint.\n *\n *  @remark @x11 This function will set the `LC_CTYPE` category of the\n *  application locale according to the current environment if that category is\n *  still \"C\".  This is because the \"C\" locale breaks Unicode text input.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref intro_init\n *  @sa @ref glfwTerminate\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup init\n */\nGLFWAPI int glfwInit(void);\n\n/*! @brief Terminates the GLFW library.\n *\n *  This function destroys all remaining windows and cursors, restores any\n *  modified gamma ramps and frees any other allocated resources.  Once this\n *  function is called, you must again call @ref glfwInit successfully before\n *  you will be able to use most GLFW functions.\n *\n *  If GLFW has been successfully initialized, this function should be called\n *  before the application exits.  If initialization fails, there is no need to\n *  call this function, as it is called by @ref glfwInit before it returns\n *  failure.\n *\n *  This function has no effect if GLFW is not initialized.\n *\n *  @errors Possible errors include @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark This function may be called before @ref glfwInit.\n *\n *  @warning The contexts of any remaining windows must not be current on any\n *  other thread when this function is called.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref intro_init\n *  @sa @ref glfwInit\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup init\n */\nGLFWAPI void glfwTerminate(void);\n\n/*! @brief Sets the specified init hint to the desired value.\n *\n *  This function sets hints for the next initialization of GLFW.\n *\n *  The values you set hints to are never reset by GLFW, but they only take\n *  effect during initialization.  Once GLFW has been initialized, any values\n *  you set will be ignored until the library is terminated and initialized\n *  again.\n *\n *  Some hints are platform specific.  These may be set on any platform but they\n *  will only affect their specific platform.  Other platforms will ignore them.\n *  Setting these hints requires no platform specific headers or functions.\n *\n *  @param[in] hint The [init hint](@ref init_hints) to set.\n *  @param[in] value The new value of the init hint.\n *\n *  @errors Possible errors include @ref GLFW_INVALID_ENUM and @ref\n *  GLFW_INVALID_VALUE.\n *\n *  @remarks This function may be called before @ref glfwInit.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa init_hints\n *  @sa glfwInit\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup init\n */\nGLFWAPI void glfwInitHint(int hint, int value);\n\n/*! @brief Retrieves the version of the GLFW library.\n *\n *  This function retrieves the major, minor and revision numbers of the GLFW\n *  library.  It is intended for when you are using GLFW as a shared library and\n *  want to ensure that you are using the minimum required version.\n *\n *  Any or all of the version arguments may be `NULL`.\n *\n *  @param[out] major Where to store the major version number, or `NULL`.\n *  @param[out] minor Where to store the minor version number, or `NULL`.\n *  @param[out] rev Where to store the revision number, or `NULL`.\n *\n *  @errors None.\n *\n *  @remark This function may be called before @ref glfwInit.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref intro_version\n *  @sa @ref glfwGetVersionString\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup init\n */\nGLFWAPI void glfwGetVersion(int* major, int* minor, int* rev);\n\n/*! @brief Returns a string describing the compile-time configuration.\n *\n *  This function returns the compile-time generated\n *  [version string](@ref intro_version_string) of the GLFW library binary.  It\n *  describes the version, platform, compiler and any platform-specific\n *  compile-time options.  It should not be confused with the OpenGL or OpenGL\n *  ES version string, queried with `glGetString`.\n *\n *  __Do not use the version string__ to parse the GLFW library version.  The\n *  @ref glfwGetVersion function provides the version of the running library\n *  binary in numerical format.\n *\n *  @return The ASCII encoded GLFW version string.\n *\n *  @errors None.\n *\n *  @remark This function may be called before @ref glfwInit.\n *\n *  @pointer_lifetime The returned string is static and compile-time generated.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref intro_version\n *  @sa @ref glfwGetVersion\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup init\n */\nGLFWAPI const char* glfwGetVersionString(void);\n\n/*! @brief Returns and clears the last error for the calling thread.\n *\n *  This function returns and clears the [error code](@ref errors) of the last\n *  error that occurred on the calling thread, and optionally a UTF-8 encoded\n *  human-readable description of it.  If no error has occurred since the last\n *  call, it returns @ref GLFW_NO_ERROR (zero) and the description pointer is\n *  set to `NULL`.\n *\n *  @param[in] description Where to store the error description pointer, or `NULL`.\n *  @return The last error code for the calling thread, or @ref GLFW_NO_ERROR\n *  (zero).\n *\n *  @errors None.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is guaranteed to be valid only until the\n *  next error occurs or the library is terminated.\n *\n *  @remark This function may be called before @ref glfwInit.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref error_handling\n *  @sa @ref glfwSetErrorCallback\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup init\n */\nGLFWAPI int glfwGetError(const char** description);\n\n/*! @brief Sets the error callback.\n *\n *  This function sets the error callback, which is called with an error code\n *  and a human-readable description each time a GLFW error occurs.\n *\n *  The error code is set before the callback is called.  Calling @ref\n *  glfwGetError from the error callback will return the same value as the error\n *  code argument.\n *\n *  The error callback is called on the thread where the error occurred.  If you\n *  are using GLFW from multiple threads, your error callback needs to be\n *  written accordingly.\n *\n *  Because the description string may have been generated specifically for that\n *  error, it is not guaranteed to be valid after the callback has returned.  If\n *  you wish to use it after the callback returns, you need to make a copy.\n *\n *  Once set, the error callback remains set even after the library has been\n *  terminated.\n *\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set.\n *\n *  @callback_signature\n *  @code\n *  void callback_name(int error_code, const char* description)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [callback pointer type](@ref GLFWerrorfun).\n *\n *  @errors None.\n *\n *  @remark This function may be called before @ref glfwInit.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref error_handling\n *  @sa @ref glfwGetError\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup init\n */\nGLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback);\n\n/*! @brief Returns the currently connected monitors.\n *\n *  This function returns an array of handles for all currently connected\n *  monitors.  The primary monitor is always first in the returned array.  If no\n *  monitors were found, this function returns `NULL`.\n *\n *  @param[out] count Where to store the number of monitors in the returned\n *  array.  This is set to zero if an error occurred.\n *  @return An array of monitor handles, or `NULL` if no monitors were found or\n *  if an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is guaranteed to be valid only until the\n *  monitor configuration changes or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_monitors\n *  @sa @ref monitor_event\n *  @sa @ref glfwGetPrimaryMonitor\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI GLFWmonitor** glfwGetMonitors(int* count);\n\n/*! @brief Returns the primary monitor.\n *\n *  This function returns the primary monitor.  This is usually the monitor\n *  where elements like the task bar or global menu bar are located.\n *\n *  @return The primary monitor, or `NULL` if no monitors were found or if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @remark The primary monitor is always first in the array returned by @ref\n *  glfwGetMonitors.\n *\n *  @sa @ref monitor_monitors\n *  @sa @ref glfwGetMonitors\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void);\n\n/*! @brief Returns the position of the monitor's viewport on the virtual screen.\n *\n *  This function returns the position, in screen coordinates, of the upper-left\n *  corner of the specified monitor.\n *\n *  Any or all of the position arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` position arguments will be set to zero.\n *\n *  @param[in] monitor The monitor to query.\n *  @param[out] xpos Where to store the monitor x-coordinate, or `NULL`.\n *  @param[out] ypos Where to store the monitor y-coordinate, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_properties\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos);\n\n/*! @brief Retrieves the work area of the monitor.\n *\n *  This function returns the position, in screen coordinates, of the upper-left\n *  corner of the work area of the specified monitor along with the work area\n *  size in screen coordinates. The work area is defined as the area of the\n *  monitor not occluded by the operating system task bar where present. If no\n *  task bar exists then the work area is the monitor resolution in screen\n *  coordinates.\n *\n *  Any or all of the position and size arguments may be `NULL`.  If an error\n *  occurs, all non-`NULL` position and size arguments will be set to zero.\n *\n *  @param[in] monitor The monitor to query.\n *  @param[out] xpos Where to store the monitor x-coordinate, or `NULL`.\n *  @param[out] ypos Where to store the monitor y-coordinate, or `NULL`.\n *  @param[out] width Where to store the monitor width, or `NULL`.\n *  @param[out] height Where to store the monitor height, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_workarea\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height);\n\n/*! @brief Returns the physical size of the monitor.\n *\n *  This function returns the size, in millimetres, of the display area of the\n *  specified monitor.\n *\n *  Some systems do not provide accurate monitor size information, either\n *  because the monitor\n *  [EDID](https://en.wikipedia.org/wiki/Extended_display_identification_data)\n *  data is incorrect or because the driver does not report it accurately.\n *\n *  Any or all of the size arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` size arguments will be set to zero.\n *\n *  @param[in] monitor The monitor to query.\n *  @param[out] widthMM Where to store the width, in millimetres, of the\n *  monitor's display area, or `NULL`.\n *  @param[out] heightMM Where to store the height, in millimetres, of the\n *  monitor's display area, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @remark @win32 calculates the returned physical size from the\n *  current resolution and system DPI instead of querying the monitor EDID data.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_properties\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM);\n\n/*! @brief Retrieves the content scale for the specified monitor.\n *\n *  This function retrieves the content scale for the specified monitor.  The\n *  content scale is the ratio between the current DPI and the platform's\n *  default DPI.  This is especially important for text and any UI elements.  If\n *  the pixel dimensions of your UI scaled by this look appropriate on your\n *  machine then it should appear at a reasonable size on other machines\n *  regardless of their DPI and scaling settings.  This relies on the system DPI\n *  and scaling settings being somewhat correct.\n *\n *  The content scale may depend on both the monitor resolution and pixel\n *  density and on user settings.  It may be very different from the raw DPI\n *  calculated from the physical size and current resolution.\n *\n *  @param[in] monitor The monitor to query.\n *  @param[out] xscale Where to store the x-axis content scale, or `NULL`.\n *  @param[out] yscale Where to store the y-axis content scale, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_scale\n *  @sa @ref glfwGetWindowContentScale\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwGetMonitorContentScale(GLFWmonitor* monitor, float* xscale, float* yscale);\n\n/*! @brief Returns the name of the specified monitor.\n *\n *  This function returns a human-readable name, encoded as UTF-8, of the\n *  specified monitor.  The name typically reflects the make and model of the\n *  monitor and is not guaranteed to be unique among the connected monitors.\n *\n *  @param[in] monitor The monitor to query.\n *  @return The UTF-8 encoded name of the monitor, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified monitor is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_properties\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor);\n\n/*! @brief Sets the user pointer of the specified monitor.\n *\n *  This function sets the user-defined pointer of the specified monitor.  The\n *  current value is retained until the monitor is disconnected.  The initial\n *  value is `NULL`.\n *\n *  This function may be called from the monitor callback, even for a monitor\n *  that is being disconnected.\n *\n *  @param[in] monitor The monitor whose pointer to set.\n *  @param[in] pointer The new value.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref monitor_userptr\n *  @sa @ref glfwGetMonitorUserPointer\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwSetMonitorUserPointer(GLFWmonitor* monitor, void* pointer);\n\n/*! @brief Returns the user pointer of the specified monitor.\n *\n *  This function returns the current value of the user-defined pointer of the\n *  specified monitor.  The initial value is `NULL`.\n *\n *  This function may be called from the monitor callback, even for a monitor\n *  that is being disconnected.\n *\n *  @param[in] monitor The monitor whose pointer to return.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref monitor_userptr\n *  @sa @ref glfwSetMonitorUserPointer\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup monitor\n */\nGLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor);\n\n/*! @brief Sets the monitor configuration callback.\n *\n *  This function sets the monitor configuration callback, or removes the\n *  currently set callback.  This is called when a monitor is connected to or\n *  disconnected from the system.\n *\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWmonitor* monitor, int event)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWmonitorfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_event\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback);\n\n/*! @brief Returns the available video modes for the specified monitor.\n *\n *  This function returns an array of all video modes supported by the specified\n *  monitor.  The returned array is sorted in ascending order, first by color\n *  bit depth (the sum of all channel depths) and then by resolution area (the\n *  product of width and height).\n *\n *  @param[in] monitor The monitor to query.\n *  @param[out] count Where to store the number of video modes in the returned\n *  array.  This is set to zero if an error occurred.\n *  @return An array of video modes, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified monitor is\n *  disconnected, this function is called again for that monitor or the library\n *  is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_modes\n *  @sa @ref glfwGetVideoMode\n *\n *  @since Added in version 1.0.\n *  @glfw3 Changed to return an array of modes for a specific monitor.\n *\n *  @ingroup monitor\n */\nGLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count);\n\n/*! @brief Returns the current mode of the specified monitor.\n *\n *  This function returns the current video mode of the specified monitor.  If\n *  you have created a full screen window for that monitor, the return value\n *  will depend on whether that window is iconified.\n *\n *  @param[in] monitor The monitor to query.\n *  @return The current mode of the monitor, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified monitor is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_modes\n *  @sa @ref glfwGetVideoModes\n *\n *  @since Added in version 3.0.  Replaces `glfwGetDesktopMode`.\n *\n *  @ingroup monitor\n */\nGLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor);\n\n/*! @brief Generates a gamma ramp and sets it for the specified monitor.\n *\n *  This function generates an appropriately sized gamma ramp from the specified\n *  exponent and then calls @ref glfwSetGammaRamp with it.  The value must be\n *  a finite number greater than zero.\n *\n *  The software controlled gamma ramp is applied _in addition_ to the hardware\n *  gamma correction, which today is usually an approximation of sRGB gamma.\n *  This means that setting a perfectly linear ramp, or gamma 1.0, will produce\n *  the default (usually sRGB-like) behavior.\n *\n *  For gamma correct rendering with OpenGL or OpenGL ES, see the @ref\n *  GLFW_SRGB_CAPABLE hint.\n *\n *  @param[in] monitor The monitor whose gamma ramp to set.\n *  @param[in] gamma The desired exponent.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland Gamma handling is a privileged protocol, this function\n *  will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_gamma\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma);\n\n/*! @brief Returns the current gamma ramp for the specified monitor.\n *\n *  This function returns the current gamma ramp of the specified monitor.\n *\n *  @param[in] monitor The monitor to query.\n *  @return The current gamma ramp, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland Gamma handling is a privileged protocol, this function\n *  will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while\n *  returning `NULL`.\n *\n *  @pointer_lifetime The returned structure and its arrays are allocated and\n *  freed by GLFW.  You should not free them yourself.  They are valid until the\n *  specified monitor is disconnected, this function is called again for that\n *  monitor or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_gamma\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor);\n\n/*! @brief Sets the current gamma ramp for the specified monitor.\n *\n *  This function sets the current gamma ramp for the specified monitor.  The\n *  original gamma ramp for that monitor is saved by GLFW the first time this\n *  function is called and is restored by @ref glfwTerminate.\n *\n *  The software controlled gamma ramp is applied _in addition_ to the hardware\n *  gamma correction, which today is usually an approximation of sRGB gamma.\n *  This means that setting a perfectly linear ramp, or gamma 1.0, will produce\n *  the default (usually sRGB-like) behavior.\n *\n *  For gamma correct rendering with OpenGL or OpenGL ES, see the @ref\n *  GLFW_SRGB_CAPABLE hint.\n *\n *  @param[in] monitor The monitor whose gamma ramp to set.\n *  @param[in] ramp The gamma ramp to use.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark The size of the specified gamma ramp should match the size of the\n *  current ramp for that monitor.\n *\n *  @remark @win32 The gamma ramp size must be 256.\n *\n *  @remark @wayland Gamma handling is a privileged protocol, this function\n *  will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The specified gamma ramp is copied before this function\n *  returns.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref monitor_gamma\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup monitor\n */\nGLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp);\n\n/*! @brief Resets all window hints to their default values.\n *\n *  This function resets all window hints to their\n *  [default values](@ref window_hints_values).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_hints\n *  @sa @ref glfwWindowHint\n *  @sa @ref glfwWindowHintString\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwDefaultWindowHints(void);\n\n/*! @brief Sets the specified window hint to the desired value.\n *\n *  This function sets hints for the next call to @ref glfwCreateWindow.  The\n *  hints, once set, retain their values until changed by a call to this\n *  function or @ref glfwDefaultWindowHints, or until the library is terminated.\n *\n *  Only integer value hints can be set with this function.  String value hints\n *  are set with @ref glfwWindowHintString.\n *\n *  This function does not check whether the specified hint values are valid.\n *  If you set hints to invalid values this will instead be reported by the next\n *  call to @ref glfwCreateWindow.\n *\n *  Some hints are platform specific.  These may be set on any platform but they\n *  will only affect their specific platform.  Other platforms will ignore them.\n *  Setting these hints requires no platform specific headers or functions.\n *\n *  @param[in] hint The [window hint](@ref window_hints) to set.\n *  @param[in] value The new value of the window hint.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_hints\n *  @sa @ref glfwWindowHintString\n *  @sa @ref glfwDefaultWindowHints\n *\n *  @since Added in version 3.0.  Replaces `glfwOpenWindowHint`.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwWindowHint(int hint, int value);\n\n/*! @brief Sets the specified window hint to the desired value.\n *\n *  This function sets hints for the next call to @ref glfwCreateWindow.  The\n *  hints, once set, retain their values until changed by a call to this\n *  function or @ref glfwDefaultWindowHints, or until the library is terminated.\n *\n *  Only string type hints can be set with this function.  Integer value hints\n *  are set with @ref glfwWindowHint.\n *\n *  This function does not check whether the specified hint values are valid.\n *  If you set hints to invalid values this will instead be reported by the next\n *  call to @ref glfwCreateWindow.\n *\n *  Some hints are platform specific.  These may be set on any platform but they\n *  will only affect their specific platform.  Other platforms will ignore them.\n *  Setting these hints requires no platform specific headers or functions.\n *\n *  @param[in] hint The [window hint](@ref window_hints) to set.\n *  @param[in] value The new value of the window hint.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @pointer_lifetime The specified string is copied before this function\n *  returns.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_hints\n *  @sa @ref glfwWindowHint\n *  @sa @ref glfwDefaultWindowHints\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwWindowHintString(int hint, const char* value);\n\n/*! @brief Creates a window and its associated context.\n *\n *  This function creates a window and its associated OpenGL or OpenGL ES\n *  context.  Most of the options controlling how the window and its context\n *  should be created are specified with [window hints](@ref window_hints).\n *\n *  Successful creation does not change which context is current.  Before you\n *  can use the newly created context, you need to\n *  [make it current](@ref context_current).  For information about the `share`\n *  parameter, see @ref context_sharing.\n *\n *  The created window, framebuffer and context may differ from what you\n *  requested, as not all parameters and hints are\n *  [hard constraints](@ref window_hints_hard).  This includes the size of the\n *  window, especially for full screen windows.  To query the actual attributes\n *  of the created window, framebuffer and context, see @ref\n *  glfwGetWindowAttrib, @ref glfwGetWindowSize and @ref glfwGetFramebufferSize.\n *\n *  To create a full screen window, you need to specify the monitor the window\n *  will cover.  If no monitor is specified, the window will be windowed mode.\n *  Unless you have a way for the user to choose a specific monitor, it is\n *  recommended that you pick the primary monitor.  For more information on how\n *  to query connected monitors, see @ref monitor_monitors.\n *\n *  For full screen windows, the specified size becomes the resolution of the\n *  window's _desired video mode_.  As long as a full screen window is not\n *  iconified, the supported video mode most closely matching the desired video\n *  mode is set for the specified monitor.  For more information about full\n *  screen windows, including the creation of so called _windowed full screen_\n *  or _borderless full screen_ windows, see @ref window_windowed_full_screen.\n *\n *  Once you have created the window, you can switch it between windowed and\n *  full screen mode with @ref glfwSetWindowMonitor.  This will not affect its\n *  OpenGL or OpenGL ES context.\n *\n *  By default, newly created windows use the placement recommended by the\n *  window system.  To create the window at a specific position, make it\n *  initially invisible using the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window\n *  hint, set its [position](@ref window_pos) and then [show](@ref window_hide)\n *  it.\n *\n *  As long as at least one full screen window is not iconified, the screensaver\n *  is prohibited from starting.\n *\n *  Window systems put limits on window sizes.  Very large or very small window\n *  dimensions may be overridden by the window system on creation.  Check the\n *  actual [size](@ref window_size) after creation.\n *\n *  The [swap interval](@ref buffer_swap) is not set during window creation and\n *  the initial value may vary depending on driver settings and defaults.\n *\n *  @param[in] width The desired width, in screen coordinates, of the window.\n *  This must be greater than zero.\n *  @param[in] height The desired height, in screen coordinates, of the window.\n *  This must be greater than zero.\n *  @param[in] title The initial, UTF-8 encoded window title.\n *  @param[in] monitor The monitor to use for full screen mode, or `NULL` for\n *  windowed mode.\n *  @param[in] share The window whose context to share resources with, or `NULL`\n *  to not share resources.\n *  @return The handle of the created window, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE, @ref GLFW_API_UNAVAILABLE, @ref\n *  GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @win32 Window creation will fail if the Microsoft GDI software\n *  OpenGL implementation is the only one available.\n *\n *  @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it\n *  will be set as the initial icon for the window.  If no such icon is present,\n *  the `IDI_APPLICATION` icon will be used instead.  To set a different icon,\n *  see @ref glfwSetWindowIcon.\n *\n *  @remark @win32 The context to share resources with must not be current on\n *  any other thread.\n *\n *  @remark @macos The OS only supports forward-compatible core profile contexts\n *  for OpenGL versions 3.2 and later.  Before creating an OpenGL context of\n *  version 3.2 or later you must set the\n *  [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and\n *  [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly.\n *  OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.\n *\n *  @remark @macos The GLFW window has no icon, as it is not a document\n *  window, but the dock icon will be the same as the application bundle's icon.\n *  For more information on bundles, see the\n *  [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)\n *  in the Mac Developer Library.\n *\n *  @remark @macos The first time a window is created the menu bar is created.\n *  If GLFW finds a `MainMenu.nib` it is loaded and assumed to contain a menu\n *  bar.  Otherwise a minimal menu bar is created manually with common commands\n *  like Hide, Quit and About.  The About entry opens a minimal about dialog\n *  with information from the application's bundle.  Menu bar creation can be\n *  disabled entirely with the @ref GLFW_COCOA_MENUBAR init hint.\n *\n *  @remark @macos On OS X 10.10 and later the window frame will not be rendered\n *  at full resolution on Retina displays unless the\n *  [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)\n *  hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the\n *  application bundle's `Info.plist`.  For more information, see\n *  [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)\n *  in the Mac Developer Library.  The GLFW test and example programs use\n *  a custom `Info.plist` template for this, which can be found as\n *  `CMake/MacOSXBundleInfo.plist.in` in the source tree.\n *\n *  @remark @macos When activating frame autosaving with\n *  [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified\n *  window size and position may be overridden by previously saved values.\n *\n *  @remark @x11 Some window managers will not respect the placement of\n *  initially hidden windows.\n *\n *  @remark @x11 Due to the asynchronous nature of X11, it may take a moment for\n *  a window to reach its requested state.  This means you may not be able to\n *  query the final size, position or other attributes directly after window\n *  creation.\n *\n *  @remark @x11 The class part of the `WM_CLASS` window property will by\n *  default be set to the window title passed to this function.  The instance\n *  part will use the contents of the `RESOURCE_NAME` environment variable, if\n *  present and not empty, or fall back to the window title.  Set the\n *  [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and\n *  [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to\n *  override this.\n *\n *  @remark @wayland Compositors should implement the xdg-decoration protocol\n *  for GLFW to decorate the window properly.  If this protocol isn't\n *  supported, or if the compositor prefers client-side decorations, a very\n *  simple fallback frame will be drawn using the wp_viewporter protocol.  A\n *  compositor can still emit close, maximize or fullscreen events, using for\n *  instance a keybind mechanism.  If neither of these protocols is supported,\n *  the window won't be decorated.\n *\n *  @remark @wayland A full screen window will not attempt to change the mode,\n *  no matter what the requested size or refresh rate.\n *\n *  @remark @wayland Screensaver inhibition requires the idle-inhibit protocol\n *  to be implemented in the user's compositor.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_creation\n *  @sa @ref glfwDestroyWindow\n *\n *  @since Added in version 3.0.  Replaces `glfwOpenWindow`.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share);\n\n/*! @brief Destroys the specified window and its context.\n *\n *  This function destroys the specified window and its context.  On calling\n *  this function, no further callbacks will be called for that window.\n *\n *  If the context of the specified window is current on the main thread, it is\n *  detached before being destroyed.\n *\n *  @param[in] window The window to destroy.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @note The context of the specified window must not be current on any other\n *  thread when this function is called.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_creation\n *  @sa @ref glfwCreateWindow\n *\n *  @since Added in version 3.0.  Replaces `glfwCloseWindow`.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwDestroyWindow(GLFWwindow* window);\n\n/*! @brief Checks the close flag of the specified window.\n *\n *  This function returns the value of the close flag of the specified window.\n *\n *  @param[in] window The window to query.\n *  @return The value of the close flag.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref window_close\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI int glfwWindowShouldClose(GLFWwindow* window);\n\n/*! @brief Sets the close flag of the specified window.\n *\n *  This function sets the value of the close flag of the specified window.\n *  This can be used to override the user's attempt to close the window, or\n *  to signal that it should be closed.\n *\n *  @param[in] window The window whose flag to change.\n *  @param[in] value The new value.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref window_close\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value);\n\n/*! @brief Sets the title of the specified window.\n *\n *  This function sets the window title, encoded as UTF-8, of the specified\n *  window.\n *\n *  @param[in] window The window whose title to change.\n *  @param[in] title The UTF-8 encoded window title.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @macos The window title will not be updated until the next time you\n *  process events.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_title\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title);\n\n/*! @brief Sets the icon for the specified window.\n *\n *  This function sets the icon of the specified window.  If passed an array of\n *  candidate images, those of or closest to the sizes desired by the system are\n *  selected.  If no images are specified, the window reverts to its default\n *  icon.\n *\n *  The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight\n *  bits per channel with the red channel first.  They are arranged canonically\n *  as packed sequential rows, starting from the top-left corner.\n *\n *  The desired image sizes varies depending on platform and system settings.\n *  The selected images will be rescaled as needed.  Good sizes include 16x16,\n *  32x32 and 48x48.\n *\n *  @param[in] window The window whose icon to set.\n *  @param[in] count The number of images in the specified array, or zero to\n *  revert to the default window icon.\n *  @param[in] images The images to create the icon from.  This is ignored if\n *  count is zero.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The specified image data is copied before this function\n *  returns.\n *\n *  @remark @macos The GLFW window has no icon, as it is not a document\n *  window, so this function does nothing.  The dock icon will be the same as\n *  the application bundle's icon.  For more information on bundles, see the\n *  [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)\n *  in the Mac Developer Library.\n *\n *  @remark @wayland There is no existing protocol to change an icon, the\n *  window will thus inherit the one defined in the application's desktop file.\n *  This function always emits @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_icon\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images);\n\n/*! @brief Retrieves the position of the content area of the specified window.\n *\n *  This function retrieves the position, in screen coordinates, of the\n *  upper-left corner of the content area of the specified window.\n *\n *  Any or all of the position arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` position arguments will be set to zero.\n *\n *  @param[in] window The window to query.\n *  @param[out] xpos Where to store the x-coordinate of the upper-left corner of\n *  the content area, or `NULL`.\n *  @param[out] ypos Where to store the y-coordinate of the upper-left corner of\n *  the content area, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland There is no way for an application to retrieve the global\n *  position of its windows, this function will always emit @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_pos\n *  @sa @ref glfwSetWindowPos\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos);\n\n/*! @brief Sets the position of the content area of the specified window.\n *\n *  This function sets the position, in screen coordinates, of the upper-left\n *  corner of the content area of the specified windowed mode window.  If the\n *  window is a full screen window, this function does nothing.\n *\n *  __Do not use this function__ to move an already visible window unless you\n *  have very good reasons for doing so, as it will confuse and annoy the user.\n *\n *  The window manager may put limits on what positions are allowed.  GLFW\n *  cannot and should not override these limits.\n *\n *  @param[in] window The window to query.\n *  @param[in] xpos The x-coordinate of the upper-left corner of the content area.\n *  @param[in] ypos The y-coordinate of the upper-left corner of the content area.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland There is no way for an application to set the global\n *  position of its windows, this function will always emit @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_pos\n *  @sa @ref glfwGetWindowPos\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos);\n\n/*! @brief Retrieves the size of the content area of the specified window.\n *\n *  This function retrieves the size, in screen coordinates, of the content area\n *  of the specified window.  If you wish to retrieve the size of the\n *  framebuffer of the window in pixels, see @ref glfwGetFramebufferSize.\n *\n *  Any or all of the size arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` size arguments will be set to zero.\n *\n *  @param[in] window The window whose size to retrieve.\n *  @param[out] width Where to store the width, in screen coordinates, of the\n *  content area, or `NULL`.\n *  @param[out] height Where to store the height, in screen coordinates, of the\n *  content area, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_size\n *  @sa @ref glfwSetWindowSize\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height);\n\n/*! @brief Sets the size limits of the specified window.\n *\n *  This function sets the size limits of the content area of the specified\n *  window.  If the window is full screen, the size limits only take effect\n *  once it is made windowed.  If the window is not resizable, this function\n *  does nothing.\n *\n *  The size limits are applied immediately to a windowed mode window and may\n *  cause it to be resized.\n *\n *  The maximum dimensions must be greater than or equal to the minimum\n *  dimensions and all must be greater than or equal to zero.\n *\n *  @param[in] window The window to set limits for.\n *  @param[in] minwidth The minimum width, in screen coordinates, of the content\n *  area, or `GLFW_DONT_CARE`.\n *  @param[in] minheight The minimum height, in screen coordinates, of the\n *  content area, or `GLFW_DONT_CARE`.\n *  @param[in] maxwidth The maximum width, in screen coordinates, of the content\n *  area, or `GLFW_DONT_CARE`.\n *  @param[in] maxheight The maximum height, in screen coordinates, of the\n *  content area, or `GLFW_DONT_CARE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark If you set size limits and an aspect ratio that conflict, the\n *  results are undefined.\n *\n *  @remark @wayland The size limits will not be applied until the window is\n *  actually resized, either by the user or by the compositor.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_sizelimits\n *  @sa @ref glfwSetWindowAspectRatio\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minheight, int maxwidth, int maxheight);\n\n/*! @brief Sets the aspect ratio of the specified window.\n *\n *  This function sets the required aspect ratio of the content area of the\n *  specified window.  If the window is full screen, the aspect ratio only takes\n *  effect once it is made windowed.  If the window is not resizable, this\n *  function does nothing.\n *\n *  The aspect ratio is specified as a numerator and a denominator and both\n *  values must be greater than zero.  For example, the common 16:9 aspect ratio\n *  is specified as 16 and 9, respectively.\n *\n *  If the numerator and denominator is set to `GLFW_DONT_CARE` then the aspect\n *  ratio limit is disabled.\n *\n *  The aspect ratio is applied immediately to a windowed mode window and may\n *  cause it to be resized.\n *\n *  @param[in] window The window to set limits for.\n *  @param[in] numer The numerator of the desired aspect ratio, or\n *  `GLFW_DONT_CARE`.\n *  @param[in] denom The denominator of the desired aspect ratio, or\n *  `GLFW_DONT_CARE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark If you set size limits and an aspect ratio that conflict, the\n *  results are undefined.\n *\n *  @remark @wayland The aspect ratio will not be applied until the window is\n *  actually resized, either by the user or by the compositor.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_sizelimits\n *  @sa @ref glfwSetWindowSizeLimits\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom);\n\n/*! @brief Sets the size of the content area of the specified window.\n *\n *  This function sets the size, in screen coordinates, of the content area of\n *  the specified window.\n *\n *  For full screen windows, this function updates the resolution of its desired\n *  video mode and switches to the video mode closest to it, without affecting\n *  the window's context.  As the context is unaffected, the bit depths of the\n *  framebuffer remain unchanged.\n *\n *  If you wish to update the refresh rate of the desired video mode in addition\n *  to its resolution, see @ref glfwSetWindowMonitor.\n *\n *  The window manager may put limits on what sizes are allowed.  GLFW cannot\n *  and should not override these limits.\n *\n *  @param[in] window The window to resize.\n *  @param[in] width The desired width, in screen coordinates, of the window\n *  content area.\n *  @param[in] height The desired height, in screen coordinates, of the window\n *  content area.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland A full screen window will not attempt to change the mode,\n *  no matter what the requested size.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_size\n *  @sa @ref glfwGetWindowSize\n *  @sa @ref glfwSetWindowMonitor\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height);\n\n/*! @brief Retrieves the size of the framebuffer of the specified window.\n *\n *  This function retrieves the size, in pixels, of the framebuffer of the\n *  specified window.  If you wish to retrieve the size of the window in screen\n *  coordinates, see @ref glfwGetWindowSize.\n *\n *  Any or all of the size arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` size arguments will be set to zero.\n *\n *  @param[in] window The window whose framebuffer to query.\n *  @param[out] width Where to store the width, in pixels, of the framebuffer,\n *  or `NULL`.\n *  @param[out] height Where to store the height, in pixels, of the framebuffer,\n *  or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_fbsize\n *  @sa @ref glfwSetFramebufferSizeCallback\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height);\n\n/*! @brief Retrieves the size of the frame of the window.\n *\n *  This function retrieves the size, in screen coordinates, of each edge of the\n *  frame of the specified window.  This size includes the title bar, if the\n *  window has one.  The size of the frame may vary depending on the\n *  [window-related hints](@ref window_hints_wnd) used to create it.\n *\n *  Because this function retrieves the size of each window frame edge and not\n *  the offset along a particular coordinate axis, the retrieved values will\n *  always be zero or positive.\n *\n *  Any or all of the size arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` size arguments will be set to zero.\n *\n *  @param[in] window The window whose frame size to query.\n *  @param[out] left Where to store the size, in screen coordinates, of the left\n *  edge of the window frame, or `NULL`.\n *  @param[out] top Where to store the size, in screen coordinates, of the top\n *  edge of the window frame, or `NULL`.\n *  @param[out] right Where to store the size, in screen coordinates, of the\n *  right edge of the window frame, or `NULL`.\n *  @param[out] bottom Where to store the size, in screen coordinates, of the\n *  bottom edge of the window frame, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_size\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom);\n\n/*! @brief Retrieves the content scale for the specified window.\n *\n *  This function retrieves the content scale for the specified window.  The\n *  content scale is the ratio between the current DPI and the platform's\n *  default DPI.  This is especially important for text and any UI elements.  If\n *  the pixel dimensions of your UI scaled by this look appropriate on your\n *  machine then it should appear at a reasonable size on other machines\n *  regardless of their DPI and scaling settings.  This relies on the system DPI\n *  and scaling settings being somewhat correct.\n *\n *  On systems where each monitors can have its own content scale, the window\n *  content scale will depend on which monitor the system considers the window\n *  to be on.\n *\n *  @param[in] window The window to query.\n *  @param[out] xscale Where to store the x-axis content scale, or `NULL`.\n *  @param[out] yscale Where to store the y-axis content scale, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_scale\n *  @sa @ref glfwSetWindowContentScaleCallback\n *  @sa @ref glfwGetMonitorContentScale\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwGetWindowContentScale(GLFWwindow* window, float* xscale, float* yscale);\n\n/*! @brief Returns the opacity of the whole window.\n *\n *  This function returns the opacity of the window, including any decorations.\n *\n *  The opacity (or alpha) value is a positive finite number between zero and\n *  one, where zero is fully transparent and one is fully opaque.  If the system\n *  does not support whole window transparency, this function always returns one.\n *\n *  The initial opacity value for newly created windows is one.\n *\n *  @param[in] window The window to query.\n *  @return The opacity value of the specified window.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_transparency\n *  @sa @ref glfwSetWindowOpacity\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI float glfwGetWindowOpacity(GLFWwindow* window);\n\n/*! @brief Sets the opacity of the whole window.\n *\n *  This function sets the opacity of the window, including any decorations.\n *\n *  The opacity (or alpha) value is a positive finite number between zero and\n *  one, where zero is fully transparent and one is fully opaque.\n *\n *  The initial opacity value for newly created windows is one.\n *\n *  A window created with framebuffer transparency may not use whole window\n *  transparency.  The results of doing this are undefined.\n *\n *  @param[in] window The window to set the opacity for.\n *  @param[in] opacity The desired opacity of the specified window.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_transparency\n *  @sa @ref glfwGetWindowOpacity\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity);\n\n/*! @brief Iconifies the specified window.\n *\n *  This function iconifies (minimizes) the specified window if it was\n *  previously restored.  If the window is already iconified, this function does\n *  nothing.\n *\n *  If the specified window is a full screen window, the original monitor\n *  resolution is restored until the window is restored.\n *\n *  @param[in] window The window to iconify.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland There is no concept of iconification in wl_shell, this\n *  function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated\n *  protocol.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_iconify\n *  @sa @ref glfwRestoreWindow\n *  @sa @ref glfwMaximizeWindow\n *\n *  @since Added in version 2.1.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwIconifyWindow(GLFWwindow* window);\n\n/*! @brief Restores the specified window.\n *\n *  This function restores the specified window if it was previously iconified\n *  (minimized) or maximized.  If the window is already restored, this function\n *  does nothing.\n *\n *  If the specified window is a full screen window, the resolution chosen for\n *  the window is restored on the selected monitor.\n *\n *  @param[in] window The window to restore.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_iconify\n *  @sa @ref glfwIconifyWindow\n *  @sa @ref glfwMaximizeWindow\n *\n *  @since Added in version 2.1.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwRestoreWindow(GLFWwindow* window);\n\n/*! @brief Maximizes the specified window.\n *\n *  This function maximizes the specified window if it was previously not\n *  maximized.  If the window is already maximized, this function does nothing.\n *\n *  If the specified window is a full screen window, this function does nothing.\n *\n *  @param[in] window The window to maximize.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @par Thread Safety\n *  This function may only be called from the main thread.\n *\n *  @sa @ref window_iconify\n *  @sa @ref glfwIconifyWindow\n *  @sa @ref glfwRestoreWindow\n *\n *  @since Added in GLFW 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwMaximizeWindow(GLFWwindow* window);\n\n/*! @brief Makes the specified window visible.\n *\n *  This function makes the specified window visible if it was previously\n *  hidden.  If the window is already visible or is in full screen mode, this\n *  function does nothing.\n *\n *  By default, windowed mode windows are focused when shown\n *  Set the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint\n *  to change this behavior for all newly created windows, or change the\n *  behavior for an existing window with @ref glfwSetWindowAttrib.\n *\n *  @param[in] window The window to make visible.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_hide\n *  @sa @ref glfwHideWindow\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwShowWindow(GLFWwindow* window);\n\n/*! @brief Hides the specified window.\n *\n *  This function hides the specified window if it was previously visible.  If\n *  the window is already hidden or is in full screen mode, this function does\n *  nothing.\n *\n *  @param[in] window The window to hide.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_hide\n *  @sa @ref glfwShowWindow\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwHideWindow(GLFWwindow* window);\n\n/*! @brief Brings the specified window to front and sets input focus.\n *\n *  This function brings the specified window to front and sets input focus.\n *  The window should already be visible and not iconified.\n *\n *  By default, both windowed and full screen mode windows are focused when\n *  initially created.  Set the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) to\n *  disable this behavior.\n *\n *  Also by default, windowed mode windows are focused when shown\n *  with @ref glfwShowWindow. Set the\n *  [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) to disable this behavior.\n *\n *  __Do not use this function__ to steal focus from other applications unless\n *  you are certain that is what the user wants.  Focus stealing can be\n *  extremely disruptive.\n *\n *  For a less disruptive way of getting the user's attention, see\n *  [attention requests](@ref window_attention).\n *\n *  @param[in] window The window to give input focus.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland It is not possible for an application to bring its windows\n *  to front, this function will always emit @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_focus\n *  @sa @ref window_attention\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwFocusWindow(GLFWwindow* window);\n\n/*! @brief Requests user attention to the specified window.\n *\n *  This function requests user attention to the specified window.  On\n *  platforms where this is not supported, attention is requested to the\n *  application as a whole.\n *\n *  Once the user has given attention, usually by focusing the window or\n *  application, the system will end the request automatically.\n *\n *  @param[in] window The window to request attention to.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @macos Attention is requested to the application as a whole, not the\n *  specific window.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_attention\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwRequestWindowAttention(GLFWwindow* window);\n\n/*! @brief Returns the monitor that the window uses for full screen mode.\n *\n *  This function returns the handle of the monitor that the specified window is\n *  in full screen on.\n *\n *  @param[in] window The window to query.\n *  @return The monitor, or `NULL` if the window is in windowed mode or an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_monitor\n *  @sa @ref glfwSetWindowMonitor\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window);\n\n/*! @brief Sets the mode, monitor, video mode and placement of a window.\n *\n *  This function sets the monitor that the window uses for full screen mode or,\n *  if the monitor is `NULL`, makes it windowed mode.\n *\n *  When setting a monitor, this function updates the width, height and refresh\n *  rate of the desired video mode and switches to the video mode closest to it.\n *  The window position is ignored when setting a monitor.\n *\n *  When the monitor is `NULL`, the position, width and height are used to\n *  place the window content area.  The refresh rate is ignored when no monitor\n *  is specified.\n *\n *  If you only wish to update the resolution of a full screen window or the\n *  size of a windowed mode window, see @ref glfwSetWindowSize.\n *\n *  When a window transitions from full screen to windowed mode, this function\n *  restores any previous window settings such as whether it is decorated,\n *  floating, resizable, has size or aspect ratio limits, etc.\n *\n *  @param[in] window The window whose monitor, size or video mode to set.\n *  @param[in] monitor The desired monitor, or `NULL` to set windowed mode.\n *  @param[in] xpos The desired x-coordinate of the upper-left corner of the\n *  content area.\n *  @param[in] ypos The desired y-coordinate of the upper-left corner of the\n *  content area.\n *  @param[in] width The desired with, in screen coordinates, of the content\n *  area or video mode.\n *  @param[in] height The desired height, in screen coordinates, of the content\n *  area or video mode.\n *  @param[in] refreshRate The desired refresh rate, in Hz, of the video mode,\n *  or `GLFW_DONT_CARE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark The OpenGL or OpenGL ES context will not be destroyed or otherwise\n *  affected by any resizing or mode switching, although you may need to update\n *  your viewport if the framebuffer size has changed.\n *\n *  @remark @wayland The desired window position is ignored, as there is no way\n *  for an application to set this property.\n *\n *  @remark @wayland Setting the window to full screen will not attempt to\n *  change the mode, no matter what the requested size or refresh rate.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_monitor\n *  @sa @ref window_full_screen\n *  @sa @ref glfwGetWindowMonitor\n *  @sa @ref glfwSetWindowSize\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int xpos, int ypos, int width, int height, int refreshRate);\n\n/*! @brief Returns an attribute of the specified window.\n *\n *  This function returns the value of an attribute of the specified window or\n *  its OpenGL or OpenGL ES context.\n *\n *  @param[in] window The window to query.\n *  @param[in] attrib The [window attribute](@ref window_attribs) whose value to\n *  return.\n *  @return The value of the attribute, or zero if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark Framebuffer related hints are not window attributes.  See @ref\n *  window_attribs_fb for more information.\n *\n *  @remark Zero is a valid value for many window and context related\n *  attributes so you cannot use a return value of zero as an indication of\n *  errors.  However, this function should not fail as long as it is passed\n *  valid arguments and the library has been [initialized](@ref intro_init).\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_attribs\n *  @sa @ref glfwSetWindowAttrib\n *\n *  @since Added in version 3.0.  Replaces `glfwGetWindowParam` and\n *  `glfwGetGLVersion`.\n *\n *  @ingroup window\n */\nGLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);\n\n/*! @brief Sets an attribute of the specified window.\n *\n *  This function sets the value of an attribute of the specified window.\n *\n *  The supported attributes are [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),\n *  [GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),\n *  [GLFW_FLOATING](@ref GLFW_FLOATING_attrib),\n *  [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and\n *  [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib).\n *\n *  Some of these attributes are ignored for full screen windows.  The new\n *  value will take effect if the window is later made windowed.\n *\n *  Some of these attributes are ignored for windowed mode windows.  The new\n *  value will take effect if the window is later made full screen.\n *\n *  @param[in] window The window to set the attribute for.\n *  @param[in] attrib A supported window attribute.\n *  @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark Calling @ref glfwGetWindowAttrib will always return the latest\n *  value, even if that value is ignored by the current mode of the window.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_attribs\n *  @sa @ref glfwGetWindowAttrib\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowAttrib(GLFWwindow* window, int attrib, int value);\n\n/*! @brief Sets the user pointer of the specified window.\n *\n *  This function sets the user-defined pointer of the specified window.  The\n *  current value is retained until the window is destroyed.  The initial value\n *  is `NULL`.\n *\n *  @param[in] window The window whose pointer to set.\n *  @param[in] pointer The new value.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref window_userptr\n *  @sa @ref glfwGetWindowUserPointer\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer);\n\n/*! @brief Returns the user pointer of the specified window.\n *\n *  This function returns the current value of the user-defined pointer of the\n *  specified window.  The initial value is `NULL`.\n *\n *  @param[in] window The window whose pointer to return.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref window_userptr\n *  @sa @ref glfwSetWindowUserPointer\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window);\n\n/*! @brief Sets the position callback for the specified window.\n *\n *  This function sets the position callback of the specified window, which is\n *  called when the window is moved.  The callback is provided with the\n *  position, in screen coordinates, of the upper-left corner of the content\n *  area of the window.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int xpos, int ypos)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowposfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @remark @wayland This callback will never be called, as there is no way for\n *  an application to know its global position.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_pos\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback);\n\n/*! @brief Sets the size callback for the specified window.\n *\n *  This function sets the size callback of the specified window, which is\n *  called when the window is resized.  The callback is provided with the size,\n *  in screen coordinates, of the content area of the window.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int width, int height)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowsizefun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_size\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback);\n\n/*! @brief Sets the close callback for the specified window.\n *\n *  This function sets the close callback of the specified window, which is\n *  called when the user attempts to close the window, for example by clicking\n *  the close widget in the title bar.\n *\n *  The close flag is set before this callback is called, but you can modify it\n *  at any time with @ref glfwSetWindowShouldClose.\n *\n *  The close callback is not triggered by @ref glfwDestroyWindow.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowclosefun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @remark @macos Selecting Quit from the application menu will trigger the\n *  close callback for all windows.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_close\n *\n *  @since Added in version 2.5.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback);\n\n/*! @brief Sets the refresh callback for the specified window.\n *\n *  This function sets the refresh callback of the specified window, which is\n *  called when the content area of the window needs to be redrawn, for example\n *  if the window has been exposed after having been covered by another window.\n *\n *  On compositing window systems such as Aero, Compiz, Aqua or Wayland, where\n *  the window contents are saved off-screen, this callback may be called only\n *  very infrequently or never at all.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window);\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowrefreshfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_refresh\n *\n *  @since Added in version 2.5.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback);\n\n/*! @brief Sets the focus callback for the specified window.\n *\n *  This function sets the focus callback of the specified window, which is\n *  called when the window gains or loses input focus.\n *\n *  After the focus callback is called for a window that lost input focus,\n *  synthetic key and mouse button release events will be generated for all such\n *  that had been pressed.  For more information, see @ref glfwSetKeyCallback\n *  and @ref glfwSetMouseButtonCallback.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int focused)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowfocusfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_focus\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback);\n\n/*! @brief Sets the iconify callback for the specified window.\n *\n *  This function sets the iconification callback of the specified window, which\n *  is called when the window is iconified or restored.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int iconified)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowiconifyfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @remark @wayland The wl_shell protocol has no concept of iconification,\n *  this callback will never be called when using this deprecated protocol.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_iconify\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback);\n\n/*! @brief Sets the maximize callback for the specified window.\n *\n *  This function sets the maximization callback of the specified window, which\n *  is called when the window is maximized or restored.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int maximized)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowmaximizefun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_maximize\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback);\n\n/*! @brief Sets the framebuffer resize callback for the specified window.\n *\n *  This function sets the framebuffer resize callback of the specified window,\n *  which is called when the framebuffer of the specified window is resized.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int width, int height)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWframebuffersizefun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_fbsize\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback);\n\n/*! @brief Sets the window content scale callback for the specified window.\n *\n *  This function sets the window content scale callback of the specified window,\n *  which is called when the content scale of the specified window changes.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, float xscale, float yscale)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWwindowcontentscalefun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref window_scale\n *  @sa @ref glfwGetWindowContentScale\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup window\n */\nGLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback);\n\n/*! @brief Processes all pending events.\n *\n *  This function processes only those events that are already in the event\n *  queue and then returns immediately.  Processing events will cause the window\n *  and input callbacks associated with those events to be called.\n *\n *  On some platforms, a window move, resize or menu operation will cause event\n *  processing to block.  This is due to how event processing is designed on\n *  those platforms.  You can use the\n *  [window refresh callback](@ref window_refresh) to redraw the contents of\n *  your window when necessary during such operations.\n *\n *  Do not assume that callbacks you set will _only_ be called in response to\n *  event processing functions like this one.  While it is necessary to poll for\n *  events, window systems that require GLFW to register callbacks of its own\n *  can pass events to GLFW in response to many window system function calls.\n *  GLFW will pass those events on to the application callbacks before\n *  returning.\n *\n *  Event processing is not required for joystick input to work.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref events\n *  @sa @ref glfwWaitEvents\n *  @sa @ref glfwWaitEventsTimeout\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwPollEvents(void);\n\n/*! @brief Waits until events are queued and processes them.\n *\n *  This function puts the calling thread to sleep until at least one event is\n *  available in the event queue.  Once one or more events are available,\n *  it behaves exactly like @ref glfwPollEvents, i.e. the events in the queue\n *  are processed and the function then returns immediately.  Processing events\n *  will cause the window and input callbacks associated with those events to be\n *  called.\n *\n *  Since not all events are associated with callbacks, this function may return\n *  without a callback having been called even if you are monitoring all\n *  callbacks.\n *\n *  On some platforms, a window move, resize or menu operation will cause event\n *  processing to block.  This is due to how event processing is designed on\n *  those platforms.  You can use the\n *  [window refresh callback](@ref window_refresh) to redraw the contents of\n *  your window when necessary during such operations.\n *\n *  Do not assume that callbacks you set will _only_ be called in response to\n *  event processing functions like this one.  While it is necessary to poll for\n *  events, window systems that require GLFW to register callbacks of its own\n *  can pass events to GLFW in response to many window system function calls.\n *  GLFW will pass those events on to the application callbacks before\n *  returning.\n *\n *  Event processing is not required for joystick input to work.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref events\n *  @sa @ref glfwPollEvents\n *  @sa @ref glfwWaitEventsTimeout\n *\n *  @since Added in version 2.5.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwWaitEvents(void);\n\n/*! @brief Waits with timeout until events are queued and processes them.\n *\n *  This function puts the calling thread to sleep until at least one event is\n *  available in the event queue, or until the specified timeout is reached.  If\n *  one or more events are available, it behaves exactly like @ref\n *  glfwPollEvents, i.e. the events in the queue are processed and the function\n *  then returns immediately.  Processing events will cause the window and input\n *  callbacks associated with those events to be called.\n *\n *  The timeout value must be a positive finite number.\n *\n *  Since not all events are associated with callbacks, this function may return\n *  without a callback having been called even if you are monitoring all\n *  callbacks.\n *\n *  On some platforms, a window move, resize or menu operation will cause event\n *  processing to block.  This is due to how event processing is designed on\n *  those platforms.  You can use the\n *  [window refresh callback](@ref window_refresh) to redraw the contents of\n *  your window when necessary during such operations.\n *\n *  Do not assume that callbacks you set will _only_ be called in response to\n *  event processing functions like this one.  While it is necessary to poll for\n *  events, window systems that require GLFW to register callbacks of its own\n *  can pass events to GLFW in response to many window system function calls.\n *  GLFW will pass those events on to the application callbacks before\n *  returning.\n *\n *  Event processing is not required for joystick input to work.\n *\n *  @param[in] timeout The maximum amount of time, in seconds, to wait.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref events\n *  @sa @ref glfwPollEvents\n *  @sa @ref glfwWaitEvents\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwWaitEventsTimeout(double timeout);\n\n/*! @brief Posts an empty event to the event queue.\n *\n *  This function posts an empty event from the current thread to the event\n *  queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref events\n *  @sa @ref glfwWaitEvents\n *  @sa @ref glfwWaitEventsTimeout\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwPostEmptyEvent(void);\n\n/*! @brief Returns the value of an input option for the specified window.\n *\n *  This function returns the value of an input option for the specified window.\n *  The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS,\n *  @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or\n *  @ref GLFW_RAW_MOUSE_MOTION.\n *\n *  @param[in] window The window to query.\n *  @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`,\n *  `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or\n *  `GLFW_RAW_MOUSE_MOTION`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref glfwSetInputMode\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);\n\n/*! @brief Sets an input option for the specified window.\n *\n *  This function sets an input mode option for the specified window.  The mode\n *  must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS,\n *  @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or\n *  @ref GLFW_RAW_MOUSE_MOTION.\n *\n *  If the mode is `GLFW_CURSOR`, the value must be one of the following cursor\n *  modes:\n *  - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally.\n *  - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the\n *    content area of the window but does not restrict the cursor from leaving.\n *  - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual\n *    and unlimited cursor movement.  This is useful for implementing for\n *    example 3D camera controls.\n *\n *  If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to\n *  enable sticky keys, or `GLFW_FALSE` to disable it.  If sticky keys are\n *  enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS`\n *  the next time it is called even if the key had been released before the\n *  call.  This is useful when you are only interested in whether keys have been\n *  pressed but not when or in which order.\n *\n *  If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either\n *  `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it.\n *  If sticky mouse buttons are enabled, a mouse button press will ensure that\n *  @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even\n *  if the mouse button had been released before the call.  This is useful when\n *  you are only interested in whether mouse buttons have been pressed but not\n *  when or in which order.\n *\n *  If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to\n *  enable lock key modifier bits, or `GLFW_FALSE` to disable them.  If enabled,\n *  callbacks that receive modifier bits will also have the @ref\n *  GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on,\n *  and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on.\n *\n *  If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE`\n *  to enable raw (unscaled and unaccelerated) mouse motion when the cursor is\n *  disabled, or `GLFW_FALSE` to disable it.  If raw motion is not supported,\n *  attempting to set this will emit @ref GLFW_PLATFORM_ERROR.  Call @ref\n *  glfwRawMouseMotionSupported to check for support.\n *\n *  @param[in] window The window whose input mode to set.\n *  @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`,\n *  `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or\n *  `GLFW_RAW_MOUSE_MOTION`.\n *  @param[in] value The new value of the specified input mode.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref glfwGetInputMode\n *\n *  @since Added in version 3.0.  Replaces `glfwEnable` and `glfwDisable`.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value);\n\n/*! @brief Returns whether raw mouse motion is supported.\n *\n *  This function returns whether raw mouse motion is supported on the current\n *  system.  This status does not change after GLFW has been initialized so you\n *  only need to check this once.  If you attempt to enable raw motion on\n *  a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted.\n *\n *  Raw mouse motion is closer to the actual motion of the mouse across\n *  a surface.  It is not affected by the scaling and acceleration applied to\n *  the motion of the desktop cursor.  That processing is suitable for a cursor\n *  while raw motion is better for controlling for example a 3D camera.  Because\n *  of this, raw mouse motion is only provided when the cursor is disabled.\n *\n *  @return `GLFW_TRUE` if raw mouse motion is supported on the current machine,\n *  or `GLFW_FALSE` otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref raw_mouse_motion\n *  @sa @ref glfwSetInputMode\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwRawMouseMotionSupported(void);\n\n/*! @brief Returns the layout-specific name of the specified printable key.\n *\n *  This function returns the name of the specified printable key, encoded as\n *  UTF-8.  This is typically the character that key would produce without any\n *  modifier keys, intended for displaying key bindings to the user.  For dead\n *  keys, it is typically the diacritic it would add to a character.\n *\n *  __Do not use this function__ for [text input](@ref input_char).  You will\n *  break text input for many languages even if it happens to work for yours.\n *\n *  If the key is `GLFW_KEY_UNKNOWN`, the scancode is used to identify the key,\n *  otherwise the scancode is ignored.  If you specify a non-printable key, or\n *  `GLFW_KEY_UNKNOWN` and a scancode that maps to a non-printable key, this\n *  function returns `NULL` but does not emit an error.\n *\n *  This behavior allows you to always pass in the arguments in the\n *  [key callback](@ref input_key) without modification.\n *\n *  The printable keys are:\n *  - `GLFW_KEY_APOSTROPHE`\n *  - `GLFW_KEY_COMMA`\n *  - `GLFW_KEY_MINUS`\n *  - `GLFW_KEY_PERIOD`\n *  - `GLFW_KEY_SLASH`\n *  - `GLFW_KEY_SEMICOLON`\n *  - `GLFW_KEY_EQUAL`\n *  - `GLFW_KEY_LEFT_BRACKET`\n *  - `GLFW_KEY_RIGHT_BRACKET`\n *  - `GLFW_KEY_BACKSLASH`\n *  - `GLFW_KEY_WORLD_1`\n *  - `GLFW_KEY_WORLD_2`\n *  - `GLFW_KEY_0` to `GLFW_KEY_9`\n *  - `GLFW_KEY_A` to `GLFW_KEY_Z`\n *  - `GLFW_KEY_KP_0` to `GLFW_KEY_KP_9`\n *  - `GLFW_KEY_KP_DECIMAL`\n *  - `GLFW_KEY_KP_DIVIDE`\n *  - `GLFW_KEY_KP_MULTIPLY`\n *  - `GLFW_KEY_KP_SUBTRACT`\n *  - `GLFW_KEY_KP_ADD`\n *  - `GLFW_KEY_KP_EQUAL`\n *\n *  Names for printable keys depend on keyboard layout, while names for\n *  non-printable keys are the same across layouts but depend on the application\n *  language and should be localized along with other user interface text.\n *\n *  @param[in] key The key to query, or `GLFW_KEY_UNKNOWN`.\n *  @param[in] scancode The scancode of the key to query.\n *  @return The UTF-8 encoded, layout-specific name of the key, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark The contents of the returned string may change when a keyboard\n *  layout change event is received.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_key_name\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup input\n */\nGLFWAPI const char* glfwGetKeyName(int key, int scancode);\n\n/*! @brief Returns the platform-specific scancode of the specified key.\n *\n *  This function returns the platform-specific scancode of the specified key.\n *\n *  If the key is `GLFW_KEY_UNKNOWN` or does not exist on the keyboard this\n *  method will return `-1`.\n *\n *  @param[in] key Any [named key](@ref keys).\n *  @return The platform-specific scancode for the key, or `-1` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref input_key\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwGetKeyScancode(int key);\n\n/*! @brief Returns the last reported state of a keyboard key for the specified\n *  window.\n *\n *  This function returns the last state reported for the specified key to the\n *  specified window.  The returned state is one of `GLFW_PRESS` or\n *  `GLFW_RELEASE`.  The higher-level action `GLFW_REPEAT` is only reported to\n *  the key callback.\n *\n *  If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns\n *  `GLFW_PRESS` the first time you call it for a key that was pressed, even if\n *  that key has already been released.\n *\n *  The key functions deal with physical keys, with [key tokens](@ref keys)\n *  named after their use on the standard US keyboard layout.  If you want to\n *  input text, use the Unicode character callback instead.\n *\n *  The [modifier key bit masks](@ref mods) are not key tokens and cannot be\n *  used with this function.\n *\n *  __Do not use this function__ to implement [text input](@ref input_char).\n *\n *  @param[in] window The desired window.\n *  @param[in] key The desired [keyboard key](@ref keys).  `GLFW_KEY_UNKNOWN` is\n *  not a valid key for this function.\n *  @return One of `GLFW_PRESS` or `GLFW_RELEASE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_key\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwGetKey(GLFWwindow* window, int key);\n\n/*! @brief Returns the last reported state of a mouse button for the specified\n *  window.\n *\n *  This function returns the last state reported for the specified mouse button\n *  to the specified window.  The returned state is one of `GLFW_PRESS` or\n *  `GLFW_RELEASE`.\n *\n *  If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function\n *  returns `GLFW_PRESS` the first time you call it for a mouse button that was\n *  pressed, even if that mouse button has already been released.\n *\n *  @param[in] window The desired window.\n *  @param[in] button The desired [mouse button](@ref buttons).\n *  @return One of `GLFW_PRESS` or `GLFW_RELEASE`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_mouse_button\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button);\n\n/*! @brief Retrieves the position of the cursor relative to the content area of\n *  the window.\n *\n *  This function returns the position of the cursor, in screen coordinates,\n *  relative to the upper-left corner of the content area of the specified\n *  window.\n *\n *  If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor\n *  position is unbounded and limited only by the minimum and maximum values of\n *  a `double`.\n *\n *  The coordinate can be converted to their integer equivalents with the\n *  `floor` function.  Casting directly to an integer type works for positive\n *  coordinates, but fails for negative ones.\n *\n *  Any or all of the position arguments may be `NULL`.  If an error occurs, all\n *  non-`NULL` position arguments will be set to zero.\n *\n *  @param[in] window The desired window.\n *  @param[out] xpos Where to store the cursor x-coordinate, relative to the\n *  left edge of the content area, or `NULL`.\n *  @param[out] ypos Where to store the cursor y-coordinate, relative to the to\n *  top edge of the content area, or `NULL`.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_pos\n *  @sa @ref glfwSetCursorPos\n *\n *  @since Added in version 3.0.  Replaces `glfwGetMousePos`.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos);\n\n/*! @brief Sets the position of the cursor, relative to the content area of the\n *  window.\n *\n *  This function sets the position, in screen coordinates, of the cursor\n *  relative to the upper-left corner of the content area of the specified\n *  window.  The window must have input focus.  If the window does not have\n *  input focus when this function is called, it fails silently.\n *\n *  __Do not use this function__ to implement things like camera controls.  GLFW\n *  already provides the `GLFW_CURSOR_DISABLED` cursor mode that hides the\n *  cursor, transparently re-centers it and provides unconstrained cursor\n *  motion.  See @ref glfwSetInputMode for more information.\n *\n *  If the cursor mode is `GLFW_CURSOR_DISABLED` then the cursor position is\n *  unconstrained and limited only by the minimum and maximum values of\n *  a `double`.\n *\n *  @param[in] window The desired window.\n *  @param[in] xpos The desired x-coordinate, relative to the left edge of the\n *  content area.\n *  @param[in] ypos The desired y-coordinate, relative to the top edge of the\n *  content area.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @remark @wayland This function will only work when the cursor mode is\n *  `GLFW_CURSOR_DISABLED`, otherwise it will do nothing.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_pos\n *  @sa @ref glfwGetCursorPos\n *\n *  @since Added in version 3.0.  Replaces `glfwSetMousePos`.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos);\n\n/*! @brief Creates a custom cursor.\n *\n *  Creates a new custom cursor image that can be set for a window with @ref\n *  glfwSetCursor.  The cursor can be destroyed with @ref glfwDestroyCursor.\n *  Any remaining cursors are destroyed by @ref glfwTerminate.\n *\n *  The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight\n *  bits per channel with the red channel first.  They are arranged canonically\n *  as packed sequential rows, starting from the top-left corner.\n *\n *  The cursor hotspot is specified in pixels, relative to the upper-left corner\n *  of the cursor image.  Like all other coordinate systems in GLFW, the X-axis\n *  points to the right and the Y-axis points down.\n *\n *  @param[in] image The desired cursor image.\n *  @param[in] xhot The desired x-coordinate, in pixels, of the cursor hotspot.\n *  @param[in] yhot The desired y-coordinate, in pixels, of the cursor hotspot.\n *  @return The handle of the created cursor, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The specified image data is copied before this function\n *  returns.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_object\n *  @sa @ref glfwDestroyCursor\n *  @sa @ref glfwCreateStandardCursor\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot);\n\n/*! @brief Creates a cursor with a standard shape.\n *\n *  Returns a cursor with a [standard shape](@ref shapes), that can be set for\n *  a window with @ref glfwSetCursor.\n *\n *  @param[in] shape One of the [standard shapes](@ref shapes).\n *  @return A new cursor ready to use or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_object\n *  @sa @ref glfwCreateCursor\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape);\n\n/*! @brief Destroys a cursor.\n *\n *  This function destroys a cursor previously created with @ref\n *  glfwCreateCursor.  Any remaining cursors will be destroyed by @ref\n *  glfwTerminate.\n *\n *  If the specified cursor is current for any window, that window will be\n *  reverted to the default cursor.  This does not affect the cursor mode.\n *\n *  @param[in] cursor The cursor object to destroy.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @reentrancy This function must not be called from a callback.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_object\n *  @sa @ref glfwCreateCursor\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwDestroyCursor(GLFWcursor* cursor);\n\n/*! @brief Sets the cursor for the window.\n *\n *  This function sets the cursor image to be used when the cursor is over the\n *  content area of the specified window.  The set cursor will only be visible\n *  when the [cursor mode](@ref cursor_mode) of the window is\n *  `GLFW_CURSOR_NORMAL`.\n *\n *  On some platforms, the set cursor may not be visible unless the window also\n *  has input focus.\n *\n *  @param[in] window The window to set the cursor for.\n *  @param[in] cursor The cursor to set, or `NULL` to switch back to the default\n *  arrow cursor.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_object\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor);\n\n/*! @brief Sets the key callback.\n *\n *  This function sets the key callback of the specified window, which is called\n *  when a key is pressed, repeated or released.\n *\n *  The key functions deal with physical keys, with layout independent\n *  [key tokens](@ref keys) named after their values in the standard US keyboard\n *  layout.  If you want to input text, use the\n *  [character callback](@ref glfwSetCharCallback) instead.\n *\n *  When a window loses input focus, it will generate synthetic key release\n *  events for all pressed keys.  You can tell these events from user-generated\n *  events by the fact that the synthetic ones are generated after the focus\n *  loss event has been processed, i.e. after the\n *  [window focus callback](@ref glfwSetWindowFocusCallback) has been called.\n *\n *  The scancode of a key is specific to that platform or sometimes even to that\n *  machine.  Scancodes are intended to allow users to bind keys that don't have\n *  a GLFW key token.  Such keys have `key` set to `GLFW_KEY_UNKNOWN`, their\n *  state is not saved and so it cannot be queried with @ref glfwGetKey.\n *\n *  Sometimes GLFW needs to generate synthetic key events, in which case the\n *  scancode may be zero.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new key callback, or `NULL` to remove the currently\n *  set callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int key, int scancode, int action, int mods)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWkeyfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_key\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback);\n\n/*! @brief Sets the Unicode character callback.\n *\n *  This function sets the character callback of the specified window, which is\n *  called when a Unicode character is input.\n *\n *  The character callback is intended for Unicode text input.  As it deals with\n *  characters, it is keyboard layout dependent, whereas the\n *  [key callback](@ref glfwSetKeyCallback) is not.  Characters do not map 1:1\n *  to physical keys, as a key may produce zero, one or more characters.  If you\n *  want to know whether a specific physical key was pressed or released, see\n *  the key callback instead.\n *\n *  The character callback behaves as system text input normally does and will\n *  not be called if modifier keys are held down that would prevent normal text\n *  input on that platform, for example a Super (Command) key on macOS or Alt key\n *  on Windows.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, unsigned int codepoint)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWcharfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_char\n *\n *  @since Added in version 2.4.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback);\n\n/*! @brief Sets the Unicode character with modifiers callback.\n *\n *  This function sets the character with modifiers callback of the specified\n *  window, which is called when a Unicode character is input regardless of what\n *  modifier keys are used.\n *\n *  The character with modifiers callback is intended for implementing custom\n *  Unicode character input.  For regular Unicode text input, see the\n *  [character callback](@ref glfwSetCharCallback).  Like the character\n *  callback, the character with modifiers callback deals with characters and is\n *  keyboard layout dependent.  Characters do not map 1:1 to physical keys, as\n *  a key may produce zero, one or more characters.  If you want to know whether\n *  a specific physical key was pressed or released, see the\n *  [key callback](@ref glfwSetKeyCallback) instead.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or an\n *  [error](@ref error_handling) occurred.\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, unsigned int codepoint, int mods)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWcharmodsfun).\n *\n *  @deprecated Scheduled for removal in version 4.0.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_char\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback);\n\n/*! @brief Sets the mouse button callback.\n *\n *  This function sets the mouse button callback of the specified window, which\n *  is called when a mouse button is pressed or released.\n *\n *  When a window loses input focus, it will generate synthetic mouse button\n *  release events for all pressed mouse buttons.  You can tell these events\n *  from user-generated events by the fact that the synthetic ones are generated\n *  after the focus loss event has been processed, i.e. after the\n *  [window focus callback](@ref glfwSetWindowFocusCallback) has been called.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int button, int action, int mods)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWmousebuttonfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref input_mouse_button\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter and return value.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback);\n\n/*! @brief Sets the cursor position callback.\n *\n *  This function sets the cursor position callback of the specified window,\n *  which is called when the cursor is moved.  The callback is provided with the\n *  position, in screen coordinates, relative to the upper-left corner of the\n *  content area of the window.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, double xpos, double ypos);\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWcursorposfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_pos\n *\n *  @since Added in version 3.0.  Replaces `glfwSetMousePosCallback`.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback);\n\n/*! @brief Sets the cursor enter/leave callback.\n *\n *  This function sets the cursor boundary crossing callback of the specified\n *  window, which is called when the cursor enters or leaves the content area of\n *  the window.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int entered)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWcursorenterfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref cursor_enter\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback);\n\n/*! @brief Sets the scroll callback.\n *\n *  This function sets the scroll callback of the specified window, which is\n *  called when a scrolling device is used, such as a mouse wheel or scrolling\n *  area of a touchpad.\n *\n *  The scroll callback receives all scrolling input, like that from a mouse\n *  wheel or a touchpad scrolling area.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new scroll callback, or `NULL` to remove the\n *  currently set callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, double xoffset, double yoffset)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWscrollfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref scrolling\n *\n *  @since Added in version 3.0.  Replaces `glfwSetMouseWheelCallback`.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback);\n\n/*! @brief Sets the path drop callback.\n *\n *  This function sets the path drop callback of the specified window, which is\n *  called when one or more dragged paths are dropped on the window.\n *\n *  Because the path array and its strings may have been generated specifically\n *  for that event, they are not guaranteed to be valid after the callback has\n *  returned.  If you wish to use them after the callback returns, you need to\n *  make a deep copy.\n *\n *  @param[in] window The window whose callback to set.\n *  @param[in] callback The new file drop callback, or `NULL` to remove the\n *  currently set callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(GLFWwindow* window, int path_count, const char* paths[])\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWdropfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @remark @wayland File drop is currently unimplemented.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref path_drop\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback);\n\n/*! @brief Returns whether the specified joystick is present.\n *\n *  This function returns whether the specified joystick is present.\n *\n *  There is no need to call this function before other functions that accept\n *  a joystick ID, as they all check for presence before performing any other\n *  work.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick\n *\n *  @since Added in version 3.0.  Replaces `glfwGetJoystickParam`.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwJoystickPresent(int jid);\n\n/*! @brief Returns the values of all axes of the specified joystick.\n *\n *  This function returns the values of all axes of the specified joystick.\n *  Each element in the array is a value between -1.0 and 1.0.\n *\n *  If the specified joystick is not present this function will return `NULL`\n *  but will not generate an error.  This can be used instead of first calling\n *  @ref glfwJoystickPresent.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @param[out] count Where to store the number of axis values in the returned\n *  array.  This is set to zero if the joystick is not present or an error\n *  occurred.\n *  @return An array of axis values, or `NULL` if the joystick is not present or\n *  an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick_axis\n *\n *  @since Added in version 3.0.  Replaces `glfwGetJoystickPos`.\n *\n *  @ingroup input\n */\nGLFWAPI const float* glfwGetJoystickAxes(int jid, int* count);\n\n/*! @brief Returns the state of all buttons of the specified joystick.\n *\n *  This function returns the state of all buttons of the specified joystick.\n *  Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`.\n *\n *  For backward compatibility with earlier versions that did not have @ref\n *  glfwGetJoystickHats, the button array also includes all hats, each\n *  represented as four buttons.  The hats are in the same order as returned by\n *  __glfwGetJoystickHats__ and are in the order _up_, _right_, _down_ and\n *  _left_.  To disable these extra buttons, set the @ref\n *  GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization.\n *\n *  If the specified joystick is not present this function will return `NULL`\n *  but will not generate an error.  This can be used instead of first calling\n *  @ref glfwJoystickPresent.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @param[out] count Where to store the number of button states in the returned\n *  array.  This is set to zero if the joystick is not present or an error\n *  occurred.\n *  @return An array of button states, or `NULL` if the joystick is not present\n *  or an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick_button\n *\n *  @since Added in version 2.2.\n *  @glfw3 Changed to return a dynamic array.\n *\n *  @ingroup input\n */\nGLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count);\n\n/*! @brief Returns the state of all hats of the specified joystick.\n *\n *  This function returns the state of all hats of the specified joystick.\n *  Each element in the array is one of the following values:\n *\n *  Name                  | Value\n *  ----                  | -----\n *  `GLFW_HAT_CENTERED`   | 0\n *  `GLFW_HAT_UP`         | 1\n *  `GLFW_HAT_RIGHT`      | 2\n *  `GLFW_HAT_DOWN`       | 4\n *  `GLFW_HAT_LEFT`       | 8\n *  `GLFW_HAT_RIGHT_UP`   | `GLFW_HAT_RIGHT` \\| `GLFW_HAT_UP`\n *  `GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \\| `GLFW_HAT_DOWN`\n *  `GLFW_HAT_LEFT_UP`    | `GLFW_HAT_LEFT` \\| `GLFW_HAT_UP`\n *  `GLFW_HAT_LEFT_DOWN`  | `GLFW_HAT_LEFT` \\| `GLFW_HAT_DOWN`\n *\n *  The diagonal directions are bitwise combinations of the primary (up, right,\n *  down and left) directions and you can test for these individually by ANDing\n *  it with the corresponding direction.\n *\n *  @code\n *  if (hats[2] & GLFW_HAT_RIGHT)\n *  {\n *      // State of hat 2 could be right-up, right or right-down\n *  }\n *  @endcode\n *\n *  If the specified joystick is not present this function will return `NULL`\n *  but will not generate an error.  This can be used instead of first calling\n *  @ref glfwJoystickPresent.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @param[out] count Where to store the number of hat states in the returned\n *  array.  This is set to zero if the joystick is not present or an error\n *  occurred.\n *  @return An array of hat states, or `NULL` if the joystick is not present\n *  or an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected, this function is called again for that joystick or the library\n *  is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick_hat\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count);\n\n/*! @brief Returns the name of the specified joystick.\n *\n *  This function returns the name, encoded as UTF-8, of the specified joystick.\n *  The returned string is allocated and freed by GLFW.  You should not free it\n *  yourself.\n *\n *  If the specified joystick is not present this function will return `NULL`\n *  but will not generate an error.  This can be used instead of first calling\n *  @ref glfwJoystickPresent.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick\n *  is not present or an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick_name\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\nGLFWAPI const char* glfwGetJoystickName(int jid);\n\n/*! @brief Returns the SDL compatible GUID of the specified joystick.\n *\n *  This function returns the SDL compatible GUID, as a UTF-8 encoded\n *  hexadecimal string, of the specified joystick.  The returned string is\n *  allocated and freed by GLFW.  You should not free it yourself.\n *\n *  The GUID is what connects a joystick to a gamepad mapping.  A connected\n *  joystick will always have a GUID even if there is no gamepad mapping\n *  assigned to it.\n *\n *  If the specified joystick is not present this function will return `NULL`\n *  but will not generate an error.  This can be used instead of first calling\n *  @ref glfwJoystickPresent.\n *\n *  The GUID uses the format introduced in SDL 2.0.5.  This GUID tries to\n *  uniquely identify the make and model of a joystick but does not identify\n *  a specific unit, e.g. all wired Xbox 360 controllers will have the same\n *  GUID on that platform.  The GUID for a unit may vary between platforms\n *  depending on what hardware information the platform specific APIs provide.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @return The UTF-8 encoded GUID of the joystick, or `NULL` if the joystick\n *  is not present or an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref gamepad\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI const char* glfwGetJoystickGUID(int jid);\n\n/*! @brief Sets the user pointer of the specified joystick.\n *\n *  This function sets the user-defined pointer of the specified joystick.  The\n *  current value is retained until the joystick is disconnected.  The initial\n *  value is `NULL`.\n *\n *  This function may be called from the joystick callback, even for a joystick\n *  that is being disconnected.\n *\n *  @param[in] jid The joystick whose pointer to set.\n *  @param[in] pointer The new value.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref joystick_userptr\n *  @sa @ref glfwGetJoystickUserPointer\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetJoystickUserPointer(int jid, void* pointer);\n\n/*! @brief Returns the user pointer of the specified joystick.\n *\n *  This function returns the current value of the user-defined pointer of the\n *  specified joystick.  The initial value is `NULL`.\n *\n *  This function may be called from the joystick callback, even for a joystick\n *  that is being disconnected.\n *\n *  @param[in] jid The joystick whose pointer to return.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @sa @ref joystick_userptr\n *  @sa @ref glfwSetJoystickUserPointer\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI void* glfwGetJoystickUserPointer(int jid);\n\n/*! @brief Returns whether the specified joystick has a gamepad mapping.\n *\n *  This function returns whether the specified joystick is both present and has\n *  a gamepad mapping.\n *\n *  If the specified joystick is present but does not have a gamepad mapping\n *  this function will return `GLFW_FALSE` but will not generate an error.  Call\n *  @ref glfwJoystickPresent to check if a joystick is present regardless of\n *  whether it has a mapping.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping,\n *  or `GLFW_FALSE` otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref gamepad\n *  @sa @ref glfwGetGamepadState\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwJoystickIsGamepad(int jid);\n\n/*! @brief Sets the joystick configuration callback.\n *\n *  This function sets the joystick configuration callback, or removes the\n *  currently set callback.  This is called when a joystick is connected to or\n *  disconnected from the system.\n *\n *  For joystick connection and disconnection events to be delivered on all\n *  platforms, you need to call one of the [event processing](@ref events)\n *  functions.  Joystick disconnection may also be detected and the callback\n *  called by joystick functions.  The function will then return whatever it\n *  returns if the joystick is not present.\n *\n *  @param[in] callback The new callback, or `NULL` to remove the currently set\n *  callback.\n *  @return The previously set callback, or `NULL` if no callback was set or the\n *  library had not been [initialized](@ref intro_init).\n *\n *  @callback_signature\n *  @code\n *  void function_name(int jid, int event)\n *  @endcode\n *  For more information about the callback parameters, see the\n *  [function pointer type](@ref GLFWjoystickfun).\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref joystick_event\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup input\n */\nGLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback);\n\n/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings.\n *\n *  This function parses the specified ASCII encoded string and updates the\n *  internal list with any gamepad mappings it finds.  This string may\n *  contain either a single gamepad mapping or many mappings separated by\n *  newlines.  The parser supports the full format of the `gamecontrollerdb.txt`\n *  source file including empty lines and comments.\n *\n *  See @ref gamepad_mapping for a description of the format.\n *\n *  If there is already a gamepad mapping for a given GUID in the internal list,\n *  it will be replaced by the one passed to this function.  If the library is\n *  terminated and re-initialized the internal list will revert to the built-in\n *  default.\n *\n *  @param[in] string The string containing the gamepad mappings.\n *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_VALUE.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref gamepad\n *  @sa @ref glfwJoystickIsGamepad\n *  @sa @ref glfwGetGamepadName\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwUpdateGamepadMappings(const char* string);\n\n/*! @brief Returns the human-readable gamepad name for the specified joystick.\n *\n *  This function returns the human-readable name of the gamepad from the\n *  gamepad mapping assigned to the specified joystick.\n *\n *  If the specified joystick is not present or does not have a gamepad mapping\n *  this function will return `NULL` but will not generate an error.  Call\n *  @ref glfwJoystickPresent to check whether it is present regardless of\n *  whether it has a mapping.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @return The UTF-8 encoded name of the gamepad, or `NULL` if the\n *  joystick is not present, does not have a mapping or an\n *  [error](@ref error_handling) occurred.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the specified joystick is\n *  disconnected, the gamepad mappings are updated or the library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref gamepad\n *  @sa @ref glfwJoystickIsGamepad\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI const char* glfwGetGamepadName(int jid);\n\n/*! @brief Retrieves the state of the specified joystick remapped as a gamepad.\n *\n *  This function retrieves the state of the specified joystick remapped to\n *  an Xbox-like gamepad.\n *\n *  If the specified joystick is not present or does not have a gamepad mapping\n *  this function will return `GLFW_FALSE` but will not generate an error.  Call\n *  @ref glfwJoystickPresent to check whether it is present regardless of\n *  whether it has a mapping.\n *\n *  The Guide button may not be available for input as it is often hooked by the\n *  system or the Steam client.\n *\n *  Not all devices have all the buttons or axes provided by @ref\n *  GLFWgamepadstate.  Unavailable buttons and axes will always report\n *  `GLFW_RELEASE` and 0.0 respectively.\n *\n *  @param[in] jid The [joystick](@ref joysticks) to query.\n *  @param[out] state The gamepad input state of the joystick.\n *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is\n *  connected, it has no gamepad mapping or an [error](@ref error_handling)\n *  occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_ENUM.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref gamepad\n *  @sa @ref glfwUpdateGamepadMappings\n *  @sa @ref glfwJoystickIsGamepad\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup input\n */\nGLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state);\n\n/*! @brief Sets the clipboard to the specified string.\n *\n *  This function sets the system clipboard to the specified, UTF-8 encoded\n *  string.\n *\n *  @param[in] window Deprecated.  Any valid window or `NULL`.\n *  @param[in] string A UTF-8 encoded string.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The specified string is copied before this function\n *  returns.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref clipboard\n *  @sa @ref glfwGetClipboardString\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string);\n\n/*! @brief Returns the contents of the clipboard as a string.\n *\n *  This function returns the contents of the system clipboard, if it contains\n *  or is convertible to a UTF-8 encoded string.  If the clipboard is empty or\n *  if its contents cannot be converted, `NULL` is returned and a @ref\n *  GLFW_FORMAT_UNAVAILABLE error is generated.\n *\n *  @param[in] window Deprecated.  Any valid window or `NULL`.\n *  @return The contents of the clipboard as a UTF-8 encoded string, or `NULL`\n *  if an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is valid until the next call to @ref\n *  glfwGetClipboardString or @ref glfwSetClipboardString, or until the library\n *  is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref clipboard\n *  @sa @ref glfwSetClipboardString\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup input\n */\nGLFWAPI const char* glfwGetClipboardString(GLFWwindow* window);\n\n/*! @brief Returns the GLFW time.\n *\n *  This function returns the current GLFW time, in seconds.  Unless the time\n *  has been set using @ref glfwSetTime it measures time elapsed since GLFW was\n *  initialized.\n *\n *  This function and @ref glfwSetTime are helper functions on top of @ref\n *  glfwGetTimerFrequency and @ref glfwGetTimerValue.\n *\n *  The resolution of the timer is system dependent, but is usually on the order\n *  of a few micro- or nanoseconds.  It uses the highest-resolution monotonic\n *  time source on each supported platform.\n *\n *  @return The current time, in seconds, or zero if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.  Reading and\n *  writing of the internal base time is not atomic, so it needs to be\n *  externally synchronized with calls to @ref glfwSetTime.\n *\n *  @sa @ref time\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup input\n */\nGLFWAPI double glfwGetTime(void);\n\n/*! @brief Sets the GLFW time.\n *\n *  This function sets the current GLFW time, in seconds.  The value must be\n *  a positive finite number less than or equal to 18446744073.0, which is\n *  approximately 584.5 years.\n *\n *  This function and @ref glfwGetTime are helper functions on top of @ref\n *  glfwGetTimerFrequency and @ref glfwGetTimerValue.\n *\n *  @param[in] time The new value, in seconds.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_INVALID_VALUE.\n *\n *  @remark The upper limit of GLFW time is calculated as\n *  floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations\n *  storing nanoseconds in 64 bits.  The limit may be increased in the future.\n *\n *  @thread_safety This function may be called from any thread.  Reading and\n *  writing of the internal base time is not atomic, so it needs to be\n *  externally synchronized with calls to @ref glfwGetTime.\n *\n *  @sa @ref time\n *\n *  @since Added in version 2.2.\n *\n *  @ingroup input\n */\nGLFWAPI void glfwSetTime(double time);\n\n/*! @brief Returns the current value of the raw timer.\n *\n *  This function returns the current value of the raw timer, measured in\n *  1&nbsp;/&nbsp;frequency seconds.  To get the frequency, call @ref\n *  glfwGetTimerFrequency.\n *\n *  @return The value of the timer, or zero if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref time\n *  @sa @ref glfwGetTimerFrequency\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup input\n */\nGLFWAPI uint64_t glfwGetTimerValue(void);\n\n/*! @brief Returns the frequency, in Hz, of the raw timer.\n *\n *  This function returns the frequency, in Hz, of the raw timer.\n *\n *  @return The frequency of the timer, in Hz, or zero if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref time\n *  @sa @ref glfwGetTimerValue\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup input\n */\nGLFWAPI uint64_t glfwGetTimerFrequency(void);\n\n/*! @brief Makes the context of the specified window current for the calling\n *  thread.\n *\n *  This function makes the OpenGL or OpenGL ES context of the specified window\n *  current on the calling thread.  A context must only be made current on\n *  a single thread at a time and each thread can have only a single current\n *  context at a time.\n *\n *  When moving a context between threads, you must make it non-current on the\n *  old thread before making it current on the new one.\n *\n *  By default, making a context non-current implicitly forces a pipeline flush.\n *  On machines that support `GL_KHR_context_flush_control`, you can control\n *  whether a context performs this flush by setting the\n *  [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint)\n *  hint.\n *\n *  The specified window must have an OpenGL or OpenGL ES context.  Specifying\n *  a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT\n *  error.\n *\n *  @param[in] window The window whose context to make current, or `NULL` to\n *  detach the current context.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref context_current\n *  @sa @ref glfwGetCurrentContext\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup context\n */\nGLFWAPI void glfwMakeContextCurrent(GLFWwindow* window);\n\n/*! @brief Returns the window whose context is current on the calling thread.\n *\n *  This function returns the window whose OpenGL or OpenGL ES context is\n *  current on the calling thread.\n *\n *  @return The window whose context is current, or `NULL` if no window's\n *  context is current.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref context_current\n *  @sa @ref glfwMakeContextCurrent\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup context\n */\nGLFWAPI GLFWwindow* glfwGetCurrentContext(void);\n\n/*! @brief Swaps the front and back buffers of the specified window.\n *\n *  This function swaps the front and back buffers of the specified window when\n *  rendering with OpenGL or OpenGL ES.  If the swap interval is greater than\n *  zero, the GPU driver waits the specified number of screen updates before\n *  swapping the buffers.\n *\n *  The specified window must have an OpenGL or OpenGL ES context.  Specifying\n *  a window without a context will generate a @ref GLFW_NO_WINDOW_CONTEXT\n *  error.\n *\n *  This function does not apply to Vulkan.  If you are rendering with Vulkan,\n *  see `vkQueuePresentKHR` instead.\n *\n *  @param[in] window The window whose buffers to swap.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark __EGL:__ The context of the specified window must be current on the\n *  calling thread.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref buffer_swap\n *  @sa @ref glfwSwapInterval\n *\n *  @since Added in version 1.0.\n *  @glfw3 Added window handle parameter.\n *\n *  @ingroup window\n */\nGLFWAPI void glfwSwapBuffers(GLFWwindow* window);\n\n/*! @brief Sets the swap interval for the current context.\n *\n *  This function sets the swap interval for the current OpenGL or OpenGL ES\n *  context, i.e. the number of screen updates to wait from the time @ref\n *  glfwSwapBuffers was called before swapping the buffers and returning.  This\n *  is sometimes called _vertical synchronization_, _vertical retrace\n *  synchronization_ or just _vsync_.\n *\n *  A context that supports either of the `WGL_EXT_swap_control_tear` and\n *  `GLX_EXT_swap_control_tear` extensions also accepts _negative_ swap\n *  intervals, which allows the driver to swap immediately even if a frame\n *  arrives a little bit late.  You can check for these extensions with @ref\n *  glfwExtensionSupported.\n *\n *  A context must be current on the calling thread.  Calling this function\n *  without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.\n *\n *  This function does not apply to Vulkan.  If you are rendering with Vulkan,\n *  see the present mode of your swapchain instead.\n *\n *  @param[in] interval The minimum number of screen updates to wait for\n *  until the buffers are swapped by @ref glfwSwapBuffers.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark This function is not called during context creation, leaving the\n *  swap interval set to whatever is the default on that platform.  This is done\n *  because some swap interval extensions used by GLFW do not allow the swap\n *  interval to be reset to zero once it has been set to a non-zero value.\n *\n *  @remark Some GPU drivers do not honor the requested swap interval, either\n *  because of a user setting that overrides the application's request or due to\n *  bugs in the driver.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref buffer_swap\n *  @sa @ref glfwSwapBuffers\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup context\n */\nGLFWAPI void glfwSwapInterval(int interval);\n\n/*! @brief Returns whether the specified extension is available.\n *\n *  This function returns whether the specified\n *  [API extension](@ref context_glext) is supported by the current OpenGL or\n *  OpenGL ES context.  It searches both for client API extension and context\n *  creation API extensions.\n *\n *  A context must be current on the calling thread.  Calling this function\n *  without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.\n *\n *  As this functions retrieves and searches one or more extension strings each\n *  call, it is recommended that you cache its results if it is going to be used\n *  frequently.  The extension strings will not change during the lifetime of\n *  a context, so there is no danger in doing this.\n *\n *  This function does not apply to Vulkan.  If you are using Vulkan, see @ref\n *  glfwGetRequiredInstanceExtensions, `vkEnumerateInstanceExtensionProperties`\n *  and `vkEnumerateDeviceExtensionProperties` instead.\n *\n *  @param[in] extension The ASCII encoded name of the extension.\n *  @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE`\n *  otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_NO_CURRENT_CONTEXT, @ref GLFW_INVALID_VALUE and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref context_glext\n *  @sa @ref glfwGetProcAddress\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup context\n */\nGLFWAPI int glfwExtensionSupported(const char* extension);\n\n/*! @brief Returns the address of the specified function for the current\n *  context.\n *\n *  This function returns the address of the specified OpenGL or OpenGL ES\n *  [core or extension function](@ref context_glext), if it is supported\n *  by the current context.\n *\n *  A context must be current on the calling thread.  Calling this function\n *  without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error.\n *\n *  This function does not apply to Vulkan.  If you are rendering with Vulkan,\n *  see @ref glfwGetInstanceProcAddress, `vkGetInstanceProcAddr` and\n *  `vkGetDeviceProcAddr` instead.\n *\n *  @param[in] procname The ASCII encoded name of the function.\n *  @return The address of the function, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_NO_CURRENT_CONTEXT and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark The address of a given function is not guaranteed to be the same\n *  between contexts.\n *\n *  @remark This function may return a non-`NULL` address despite the\n *  associated version or extension not being available.  Always check the\n *  context version or extension string first.\n *\n *  @pointer_lifetime The returned function pointer is valid until the context\n *  is destroyed or the library is terminated.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref context_glext\n *  @sa @ref glfwExtensionSupported\n *\n *  @since Added in version 1.0.\n *\n *  @ingroup context\n */\nGLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);\n\n/*! @brief Returns whether the Vulkan loader and an ICD have been found.\n *\n *  This function returns whether the Vulkan loader and any minimally functional\n *  ICD have been found.\n *\n *  The availability of a Vulkan loader and even an ICD does not by itself\n *  guarantee that surface creation or even instance creation is possible.\n *  For example, on Fermi systems Nvidia will install an ICD that provides no\n *  actual Vulkan support.  Call @ref glfwGetRequiredInstanceExtensions to check\n *  whether the extensions necessary for Vulkan surface creation are available\n *  and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue\n *  family of a physical device supports image presentation.\n *\n *  @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE`\n *  otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref vulkan_support\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\nGLFWAPI int glfwVulkanSupported(void);\n\n/*! @brief Returns the Vulkan instance extensions required by GLFW.\n *\n *  This function returns an array of names of Vulkan instance extensions required\n *  by GLFW for creating Vulkan surfaces for GLFW windows.  If successful, the\n *  list will always contain `VK_KHR_surface`, so if you don't require any\n *  additional extensions you can pass this list directly to the\n *  `VkInstanceCreateInfo` struct.\n *\n *  If Vulkan is not available on the machine, this function returns `NULL` and\n *  generates a @ref GLFW_API_UNAVAILABLE error.  Call @ref glfwVulkanSupported\n *  to check whether Vulkan is at least minimally available.\n *\n *  If Vulkan is available but no set of extensions allowing window surface\n *  creation was found, this function returns `NULL`.  You may still use Vulkan\n *  for off-screen rendering and compute work.\n *\n *  @param[out] count Where to store the number of extensions in the returned\n *  array.  This is set to zero if an error occurred.\n *  @return An array of ASCII encoded extension names, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_API_UNAVAILABLE.\n *\n *  @remark Additional extensions may be required by future versions of GLFW.\n *  You should check if any extensions you wish to enable are already in the\n *  returned array, as it is an error to specify an extension more than once in\n *  the `VkInstanceCreateInfo` struct.\n *\n *  @remark @macos This function currently supports either the\n *  `VK_MVK_macos_surface` extension from MoltenVK or `VK_EXT_metal_surface`\n *  extension.\n *\n *  @pointer_lifetime The returned array is allocated and freed by GLFW.  You\n *  should not free it yourself.  It is guaranteed to be valid only until the\n *  library is terminated.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref vulkan_ext\n *  @sa @ref glfwCreateWindowSurface\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\nGLFWAPI const char** glfwGetRequiredInstanceExtensions(uint32_t* count);\n\n#if defined(VK_VERSION_1_0)\n\n/*! @brief Returns the address of the specified Vulkan instance function.\n *\n *  This function returns the address of the specified Vulkan core or extension\n *  function for the specified instance.  If instance is set to `NULL` it can\n *  return any function exported from the Vulkan loader, including at least the\n *  following functions:\n *\n *  - `vkEnumerateInstanceExtensionProperties`\n *  - `vkEnumerateInstanceLayerProperties`\n *  - `vkCreateInstance`\n *  - `vkGetInstanceProcAddr`\n *\n *  If Vulkan is not available on the machine, this function returns `NULL` and\n *  generates a @ref GLFW_API_UNAVAILABLE error.  Call @ref glfwVulkanSupported\n *  to check whether Vulkan is at least minimally available.\n *\n *  This function is equivalent to calling `vkGetInstanceProcAddr` with\n *  a platform-specific query of the Vulkan loader as a fallback.\n *\n *  @param[in] instance The Vulkan instance to query, or `NULL` to retrieve\n *  functions related to instance creation.\n *  @param[in] procname The ASCII encoded name of the function.\n *  @return The address of the function, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_API_UNAVAILABLE.\n *\n *  @pointer_lifetime The returned function pointer is valid until the library\n *  is terminated.\n *\n *  @thread_safety This function may be called from any thread.\n *\n *  @sa @ref vulkan_proc\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\nGLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* procname);\n\n/*! @brief Returns whether the specified queue family can present images.\n *\n *  This function returns whether the specified queue family of the specified\n *  physical device supports presentation to the platform GLFW was built for.\n *\n *  If Vulkan or the required window surface creation instance extensions are\n *  not available on the machine, or if the specified instance was not created\n *  with the required extensions, this function returns `GLFW_FALSE` and\n *  generates a @ref GLFW_API_UNAVAILABLE error.  Call @ref glfwVulkanSupported\n *  to check whether Vulkan is at least minimally available and @ref\n *  glfwGetRequiredInstanceExtensions to check what instance extensions are\n *  required.\n *\n *  @param[in] instance The instance that the physical device belongs to.\n *  @param[in] device The physical device that the queue family belongs to.\n *  @param[in] queuefamily The index of the queue family to query.\n *  @return `GLFW_TRUE` if the queue family supports presentation, or\n *  `GLFW_FALSE` otherwise.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.\n *\n *  @remark @macos This function currently always returns `GLFW_TRUE`, as the\n *  `VK_MVK_macos_surface` extension does not provide\n *  a `vkGetPhysicalDevice*PresentationSupport` type function.\n *\n *  @thread_safety This function may be called from any thread.  For\n *  synchronization details of Vulkan objects, see the Vulkan specification.\n *\n *  @sa @ref vulkan_present\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\nGLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);\n\n/*! @brief Creates a Vulkan surface for the specified window.\n *\n *  This function creates a Vulkan surface for the specified window.\n *\n *  If the Vulkan loader or at least one minimally functional ICD were not found,\n *  this function returns `VK_ERROR_INITIALIZATION_FAILED` and generates a @ref\n *  GLFW_API_UNAVAILABLE error.  Call @ref glfwVulkanSupported to check whether\n *  Vulkan is at least minimally available.\n *\n *  If the required window surface creation instance extensions are not\n *  available or if the specified instance was not created with these extensions\n *  enabled, this function returns `VK_ERROR_EXTENSION_NOT_PRESENT` and\n *  generates a @ref GLFW_API_UNAVAILABLE error.  Call @ref\n *  glfwGetRequiredInstanceExtensions to check what instance extensions are\n *  required.\n *\n *  The window surface cannot be shared with another API so the window must\n *  have been created with the [client api hint](@ref GLFW_CLIENT_API_attrib)\n *  set to `GLFW_NO_API` otherwise it generates a @ref GLFW_INVALID_VALUE error\n *  and returns `VK_ERROR_NATIVE_WINDOW_IN_USE_KHR`.\n *\n *  The window surface must be destroyed before the specified Vulkan instance.\n *  It is the responsibility of the caller to destroy the window surface.  GLFW\n *  does not destroy it for you.  Call `vkDestroySurfaceKHR` to destroy the\n *  surface.\n *\n *  @param[in] instance The Vulkan instance to create the surface in.\n *  @param[in] window The window to create the surface for.\n *  @param[in] allocator The allocator to use, or `NULL` to use the default\n *  allocator.\n *  @param[out] surface Where to store the handle of the surface.  This is set\n *  to `VK_NULL_HANDLE` if an error occurred.\n *  @return `VK_SUCCESS` if successful, or a Vulkan error code if an\n *  [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref\n *  GLFW_API_UNAVAILABLE, @ref GLFW_PLATFORM_ERROR and @ref GLFW_INVALID_VALUE\n *\n *  @remark If an error occurs before the creation call is made, GLFW returns\n *  the Vulkan error code most appropriate for the error.  Appropriate use of\n *  @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should\n *  eliminate almost all occurrences of these errors.\n *\n *  @remark @macos This function currently only supports the\n *  `VK_MVK_macos_surface` extension from MoltenVK.\n *\n *  @remark @macos This function creates and sets a `CAMetalLayer` instance for\n *  the window content view, which is required for MoltenVK to function.\n *\n *  @thread_safety This function may be called from any thread.  For\n *  synchronization details of Vulkan objects, see the Vulkan specification.\n *\n *  @sa @ref vulkan_surface\n *  @sa @ref glfwGetRequiredInstanceExtensions\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup vulkan\n */\nGLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window, const VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);\n\n#endif /*VK_VERSION_1_0*/\n\n\n/*************************************************************************\n * Global definition cleanup\n *************************************************************************/\n\n/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */\n\n#ifdef GLFW_WINGDIAPI_DEFINED\n #undef WINGDIAPI\n #undef GLFW_WINGDIAPI_DEFINED\n#endif\n\n#ifdef GLFW_CALLBACK_DEFINED\n #undef CALLBACK\n #undef GLFW_CALLBACK_DEFINED\n#endif\n\n/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally\n * defined by some gl.h variants (OpenBSD) so define it after if needed.\n */\n#ifndef GLAPIENTRY\n #define GLAPIENTRY APIENTRY\n#endif\n\n/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* _glfw3_h_ */\n\n"
  },
  {
    "path": "libraries/glfw/glfw3native.h",
    "content": "/*************************************************************************\n * GLFW 3.3 - www.glfw.org\n * A library for OpenGL, window and input\n *------------------------------------------------------------------------\n * Copyright (c) 2002-2006 Marcus Geelnard\n * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>\n *\n * This software is provided 'as-is', without any express or implied\n * warranty. In no event will the authors be held liable for any damages\n * arising from the use of this software.\n *\n * Permission is granted to anyone to use this software for any purpose,\n * including commercial applications, and to alter it and redistribute it\n * freely, subject to the following restrictions:\n *\n * 1. The origin of this software must not be misrepresented; you must not\n *    claim that you wrote the original software. If you use this software\n *    in a product, an acknowledgment in the product documentation would\n *    be appreciated but is not required.\n *\n * 2. Altered source versions must be plainly marked as such, and must not\n *    be misrepresented as being the original software.\n *\n * 3. This notice may not be removed or altered from any source\n *    distribution.\n *\n *************************************************************************/\n\n#ifndef _glfw3_native_h_\n#define _glfw3_native_h_\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************************************************************************\n * Doxygen documentation\n *************************************************************************/\n\n/*! @file glfw3native.h\n *  @brief The header of the native access functions.\n *\n *  This is the header file of the native access functions.  See @ref native for\n *  more information.\n */\n/*! @defgroup native Native access\n *  @brief Functions related to accessing native handles.\n *\n *  **By using the native access functions you assert that you know what you're\n *  doing and how to fix problems caused by using them.  If you don't, you\n *  shouldn't be using them.**\n *\n *  Before the inclusion of @ref glfw3native.h, you may define zero or more\n *  window system API macro and zero or more context creation API macros.\n *\n *  The chosen backends must match those the library was compiled for.  Failure\n *  to do this will cause a link-time error.\n *\n *  The available window API macros are:\n *  * `GLFW_EXPOSE_NATIVE_WIN32`\n *  * `GLFW_EXPOSE_NATIVE_COCOA`\n *  * `GLFW_EXPOSE_NATIVE_X11`\n *  * `GLFW_EXPOSE_NATIVE_WAYLAND`\n *\n *  The available context API macros are:\n *  * `GLFW_EXPOSE_NATIVE_WGL`\n *  * `GLFW_EXPOSE_NATIVE_NSGL`\n *  * `GLFW_EXPOSE_NATIVE_GLX`\n *  * `GLFW_EXPOSE_NATIVE_EGL`\n *  * `GLFW_EXPOSE_NATIVE_OSMESA`\n *\n *  These macros select which of the native access functions that are declared\n *  and which platform-specific headers to include.  It is then up your (by\n *  definition platform-specific) code to handle which of these should be\n *  defined.\n */\n\n\n/*************************************************************************\n * System headers and types\n *************************************************************************/\n\n#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)\n // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for\n // example to allow applications to correctly declare a GL_ARB_debug_output\n // callback) but windows.h assumes no one will define APIENTRY before it does\n #if defined(GLFW_APIENTRY_DEFINED)\n  #undef APIENTRY\n  #undef GLFW_APIENTRY_DEFINED\n #endif\n #include <windows.h>\n#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)\n #if defined(__OBJC__)\n  #import <Cocoa/Cocoa.h>\n #else\n  #include <ApplicationServices/ApplicationServices.h>\n  typedef void* id;\n #endif\n#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)\n #include <X11/Xlib.h>\n #include <X11/extensions/Xrandr.h>\n#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)\n #include <wayland-client.h>\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_WGL)\n /* WGL is declared by windows.h */\n#endif\n#if defined(GLFW_EXPOSE_NATIVE_NSGL)\n /* NSGL is declared by Cocoa.h */\n#endif\n#if defined(GLFW_EXPOSE_NATIVE_GLX)\n #include <GL/glx.h>\n#endif\n#if defined(GLFW_EXPOSE_NATIVE_EGL)\n #include <EGL/egl.h>\n#endif\n#if defined(GLFW_EXPOSE_NATIVE_OSMESA)\n #include <GL/osmesa.h>\n#endif\n\n\n/*************************************************************************\n * Functions\n *************************************************************************/\n\n#if defined(GLFW_EXPOSE_NATIVE_WIN32)\n/*! @brief Returns the adapter device name of the specified monitor.\n *\n *  @return The UTF-8 encoded adapter device name (for example `\\\\.\\DISPLAY1`)\n *  of the specified monitor, or `NULL` if an [error](@ref error_handling)\n *  occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup native\n */\nGLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);\n\n/*! @brief Returns the display device name of the specified monitor.\n *\n *  @return The UTF-8 encoded display device name (for example\n *  `\\\\.\\DISPLAY1\\Monitor0`) of the specified monitor, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup native\n */\nGLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);\n\n/*! @brief Returns the `HWND` of the specified window.\n *\n *  @return The `HWND` of the specified window, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_WGL)\n/*! @brief Returns the `HGLRC` of the specified window.\n *\n *  @return The `HGLRC` of the specified window, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_COCOA)\n/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.\n *\n *  @return The `CGDirectDisplayID` of the specified monitor, or\n *  `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup native\n */\nGLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);\n\n/*! @brief Returns the `NSWindow` of the specified window.\n *\n *  @return The `NSWindow` of the specified window, or `nil` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_NSGL)\n/*! @brief Returns the `NSOpenGLContext` of the specified window.\n *\n *  @return The `NSOpenGLContext` of the specified window, or `nil` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI id glfwGetNSGLContext(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_X11)\n/*! @brief Returns the `Display` used by GLFW.\n *\n *  @return The `Display` used by GLFW, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI Display* glfwGetX11Display(void);\n\n/*! @brief Returns the `RRCrtc` of the specified monitor.\n *\n *  @return The `RRCrtc` of the specified monitor, or `None` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup native\n */\nGLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);\n\n/*! @brief Returns the `RROutput` of the specified monitor.\n *\n *  @return The `RROutput` of the specified monitor, or `None` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.1.\n *\n *  @ingroup native\n */\nGLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);\n\n/*! @brief Returns the `Window` of the specified window.\n *\n *  @return The `Window` of the specified window, or `None` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI Window glfwGetX11Window(GLFWwindow* window);\n\n/*! @brief Sets the current primary selection to the specified string.\n *\n *  @param[in] string A UTF-8 encoded string.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The specified string is copied before this function\n *  returns.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref clipboard\n *  @sa glfwGetX11SelectionString\n *  @sa glfwSetClipboardString\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup native\n */\nGLFWAPI void glfwSetX11SelectionString(const char* string);\n\n/*! @brief Returns the contents of the current primary selection as a string.\n *\n *  If the selection is empty or if its contents cannot be converted, `NULL`\n *  is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated.\n *\n *  @return The contents of the selection as a UTF-8 encoded string, or `NULL`\n *  if an [error](@ref error_handling) occurred.\n *\n *  @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref\n *  GLFW_PLATFORM_ERROR.\n *\n *  @pointer_lifetime The returned string is allocated and freed by GLFW. You\n *  should not free it yourself. It is valid until the next call to @ref\n *  glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the\n *  library is terminated.\n *\n *  @thread_safety This function must only be called from the main thread.\n *\n *  @sa @ref clipboard\n *  @sa glfwSetX11SelectionString\n *  @sa glfwGetClipboardString\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup native\n */\nGLFWAPI const char* glfwGetX11SelectionString(void);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_GLX)\n/*! @brief Returns the `GLXContext` of the specified window.\n *\n *  @return The `GLXContext` of the specified window, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);\n\n/*! @brief Returns the `GLXWindow` of the specified window.\n *\n *  @return The `GLXWindow` of the specified window, or `None` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup native\n */\nGLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)\n/*! @brief Returns the `struct wl_display*` used by GLFW.\n *\n *  @return The `struct wl_display*` used by GLFW, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup native\n */\nGLFWAPI struct wl_display* glfwGetWaylandDisplay(void);\n\n/*! @brief Returns the `struct wl_output*` of the specified monitor.\n *\n *  @return The `struct wl_output*` of the specified monitor, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup native\n */\nGLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);\n\n/*! @brief Returns the main `struct wl_surface*` of the specified window.\n *\n *  @return The main `struct wl_surface*` of the specified window, or `NULL` if\n *  an [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.2.\n *\n *  @ingroup native\n */\nGLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_EGL)\n/*! @brief Returns the `EGLDisplay` used by GLFW.\n *\n *  @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI EGLDisplay glfwGetEGLDisplay(void);\n\n/*! @brief Returns the `EGLContext` of the specified window.\n *\n *  @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);\n\n/*! @brief Returns the `EGLSurface` of the specified window.\n *\n *  @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.0.\n *\n *  @ingroup native\n */\nGLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);\n#endif\n\n#if defined(GLFW_EXPOSE_NATIVE_OSMESA)\n/*! @brief Retrieves the color buffer associated with the specified window.\n *\n *  @param[in] window The window whose color buffer to retrieve.\n *  @param[out] width Where to store the width of the color buffer, or `NULL`.\n *  @param[out] height Where to store the height of the color buffer, or `NULL`.\n *  @param[out] format Where to store the OSMesa pixel format of the color\n *  buffer, or `NULL`.\n *  @param[out] buffer Where to store the address of the color buffer, or\n *  `NULL`.\n *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup native\n */\nGLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);\n\n/*! @brief Retrieves the depth buffer associated with the specified window.\n *\n *  @param[in] window The window whose depth buffer to retrieve.\n *  @param[out] width Where to store the width of the depth buffer, or `NULL`.\n *  @param[out] height Where to store the height of the depth buffer, or `NULL`.\n *  @param[out] bytesPerValue Where to store the number of bytes per depth\n *  buffer element, or `NULL`.\n *  @param[out] buffer Where to store the address of the depth buffer, or\n *  `NULL`.\n *  @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup native\n */\nGLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);\n\n/*! @brief Returns the `OSMesaContext` of the specified window.\n *\n *  @return The `OSMesaContext` of the specified window, or `NULL` if an\n *  [error](@ref error_handling) occurred.\n *\n *  @thread_safety This function may be called from any thread.  Access is not\n *  synchronized.\n *\n *  @since Added in version 3.3.\n *\n *  @ingroup native\n */\nGLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* _glfw3_native_h_ */\n\n"
  },
  {
    "path": "libraries/glm/LICENSE",
    "content": "================================================================================\nOpenGL Mathematics (GLM)\n--------------------------------------------------------------------------------\nGLM is licensed under The Happy Bunny License or MIT License\n\n================================================================================\nThe Happy Bunny License (Modified MIT License)\n--------------------------------------------------------------------------------\nCopyright (c) 2005 - G-Truc Creation\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nRestrictions:\n By making use of the Software for military purposes, you choose to make a\n Bunny unhappy.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n================================================================================\nThe MIT License\n--------------------------------------------------------------------------------\nCopyright (c) 2005 - G-Truc Creation\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "libraries/glm/common.hpp",
    "content": "/// @ref core\n/// @file glm/common.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n///\n/// @defgroup core_func_common Common functions\n/// @ingroup core\n///\n/// Provides GLSL common functions\n///\n/// These all operate component-wise. The description is per component.\n///\n/// Include <glm/common.hpp> to use these core features.\n\n#pragma once\n\n#include \"detail/qualifier.hpp\"\n#include \"detail/_fixes.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_common\n\t/// @{\n\n\t/// Returns x if x >= 0; otherwise, it returns -x.\n\t///\n\t/// @tparam genType floating-point or signed integer; scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml\">GLSL abs man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x);\n\n\t/// Returns x if x >= 0; otherwise, it returns -x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/abs.xml\">GLSL abs man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> abs(vec<L, T, Q> const& x);\n\n\t/// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/sign.xml\">GLSL sign man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> sign(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer that is less then or equal to x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/floor.xml\">GLSL floor man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> floor(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer to x\n\t/// whose absolute value is not larger than the absolute value of x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/trunc.xml\">GLSL trunc man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> trunc(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer to x.\n\t/// The fraction 0.5 will round in a direction chosen by the\n\t/// implementation, presumably the direction that is fastest.\n\t/// This includes the possibility that round(x) returns the\n\t/// same value as roundEven(x) for all values of x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml\">GLSL round man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> round(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer to x.\n\t/// A fractional part of 0.5 will round toward the nearest even\n\t/// integer. (Both 3.5 and 4.5 for x will return 4.0.)\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/roundEven.xml\">GLSL roundEven man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\t/// @see <a href=\"http://developer.amd.com/documentation/articles/pages/New-Round-to-Even-Technique.aspx\">New round to even technique</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> roundEven(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer\n\t/// that is greater than or equal to x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/ceil.xml\">GLSL ceil man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> ceil(vec<L, T, Q> const& x);\n\n\t/// Return x - floor(x).\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml\">GLSL fract man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fract(genType x);\n\n\t/// Return x - floor(x).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/fract.xml\">GLSL fract man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fract(vec<L, T, Q> const& x);\n\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType mod(genType x, genType y);\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, T y);\n\n\t/// Modulus. Returns x - y * floor(x / y)\n\t/// for each component in x using the floating point value y.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types, include glm/gtc/integer for integer scalar types support\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml\">GLSL mod man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the fractional part of x and sets i to the integer\n\t/// part (as a whole number floating point value). Both the\n\t/// return value and the output parameter will have the same\n\t/// sign as x.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/modf.xml\">GLSL modf man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType modf(genType x, genType& i);\n\n\t/// Returns y if y < x; otherwise, it returns x.\n\t///\n\t/// @tparam genType Floating-point or integer; scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml\">GLSL min man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType min(genType x, genType y);\n\n\t/// Returns y if y < x; otherwise, it returns x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml\">GLSL min man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, T y);\n\n\t/// Returns y if y < x; otherwise, it returns x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/min.xml\">GLSL min man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns y if x < y; otherwise, it returns x.\n\t///\n\t/// @tparam genType Floating-point or integer; scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml\">GLSL max man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType max(genType x, genType y);\n\n\t/// Returns y if x < y; otherwise, it returns x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml\">GLSL max man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, T y);\n\n\t/// Returns y if x < y; otherwise, it returns x.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/max.xml\">GLSL max man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x\n\t/// using the floating-point values minVal and maxVal.\n\t///\n\t/// @tparam genType Floating-point or integer; scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml\">GLSL clamp man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x\n\t/// using the floating-point values minVal and maxVal.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml\">GLSL clamp man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, T minVal, T maxVal);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x\n\t/// using the floating-point values minVal and maxVal.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/clamp.xml\">GLSL clamp man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);\n\n\t/// If genTypeU is a floating scalar or vector:\n\t/// Returns x * (1.0 - a) + y * a, i.e., the linear blend of\n\t/// x and y using the floating-point value a.\n\t/// The value for a is not restricted to the range [0, 1].\n\t///\n\t/// If genTypeU is a boolean scalar or vector:\n\t/// Selects which vector each returned component comes\n\t/// from. For a component of 'a' that is false, the\n\t/// corresponding component of 'x' is returned. For a\n\t/// component of 'a' that is true, the corresponding\n\t/// component of 'y' is returned. Components of 'x' and 'y' that\n\t/// are not selected are allowed to be invalid floating point\n\t/// values and will have no effect on the results. Thus, this\n\t/// provides different functionality than\n\t/// genType mix(genType x, genType y, genType(a))\n\t/// where a is a Boolean vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/mix.xml\">GLSL mix man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\t///\n\t/// @param[in]  x Value to interpolate.\n\t/// @param[in]  y Value to interpolate.\n\t/// @param[in]  a Interpolant.\n\t///\n\t/// @tparam\tgenTypeT Floating point scalar or vector.\n\t/// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.\n\t///\n\t/// @code\n\t/// #include <glm/glm.hpp>\n\t/// ...\n\t/// float a;\n\t/// bool b;\n\t/// glm::dvec3 e;\n\t/// glm::dvec3 f;\n\t/// glm::vec4 g;\n\t/// glm::vec4 h;\n\t/// ...\n\t/// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.\n\t/// glm::vec4 s = glm::mix(g, h, b); // Returns g or h;\n\t/// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.\n\t/// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.\n\t/// @endcode\n\ttemplate<typename genTypeT, typename genTypeU>\n\tGLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, U, Q> const& a);\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, U a);\n\n\t/// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml\">GLSL step man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType step(genType edge, genType x);\n\n\t/// Returns 0.0 if x < edge, otherwise it returns 1.0.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml\">GLSL step man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> step(T edge, vec<L, T, Q> const& x);\n\n\t/// Returns 0.0 if x < edge, otherwise it returns 1.0.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/step.xml\">GLSL step man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> step(vec<L, T, Q> const& edge, vec<L, T, Q> const& x);\n\n\t/// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and\n\t/// performs smooth Hermite interpolation between 0 and 1\n\t/// when edge0 < x < edge1. This is useful in cases where\n\t/// you would want a threshold function with a smooth\n\t/// transition. This is equivalent to:\n\t/// genType t;\n\t/// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);\n\t/// return t * t * (3 - 2 * t);\n\t/// Results are undefined if edge0 >= edge1.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/smoothstep.xml\">GLSL smoothstep man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> smoothstep(T edge0, T edge1, vec<L, T, Q> const& x);\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> smoothstep(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x);\n\n\t/// Returns true if x holds a NaN (not a number)\n\t/// representation in the underlying implementation's set of\n\t/// floating point representations. Returns false otherwise,\n\t/// including for implementations with no NaN\n\t/// representations.\n\t///\n\t/// /!\\ When using compiler fast math, this function may fail.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/isnan.xml\">GLSL isnan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isnan(vec<L, T, Q> const& x);\n\n\t/// Returns true if x holds a positive infinity or negative\n\t/// infinity representation in the underlying implementation's\n\t/// set of floating point representations. Returns false\n\t/// otherwise, including for implementations with no infinity\n\t/// representations.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/isinf.xml\">GLSL isinf man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isinf(vec<L, T, Q> const& x);\n\n\t/// Returns a signed integer value representing\n\t/// the encoding of a floating-point value. The floating-point\n\t/// value's bit-level representation is preserved.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml\">GLSL floatBitsToInt man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\tGLM_FUNC_DECL int floatBitsToInt(float const& v);\n\n\t/// Returns a signed integer value representing\n\t/// the encoding of a floating-point value. The floatingpoint\n\t/// value's bit-level representation is preserved.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToInt.xml\">GLSL floatBitsToInt man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> floatBitsToInt(vec<L, float, Q> const& v);\n\n\t/// Returns a unsigned integer value representing\n\t/// the encoding of a floating-point value. The floatingpoint\n\t/// value's bit-level representation is preserved.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml\">GLSL floatBitsToUint man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\tGLM_FUNC_DECL uint floatBitsToUint(float const& v);\n\n\t/// Returns a unsigned integer value representing\n\t/// the encoding of a floating-point value. The floatingpoint\n\t/// value's bit-level representation is preserved.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/floatBitsToUint.xml\">GLSL floatBitsToUint man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uint, Q> floatBitsToUint(vec<L, float, Q> const& v);\n\n\t/// Returns a floating-point value corresponding to a signed\n\t/// integer encoding of a floating-point value.\n\t/// If an inf or NaN is passed in, it will not signal, and the\n\t/// resulting floating point value is unspecified. Otherwise,\n\t/// the bit-level representation is preserved.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml\">GLSL intBitsToFloat man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\tGLM_FUNC_DECL float intBitsToFloat(int const& v);\n\n\t/// Returns a floating-point value corresponding to a signed\n\t/// integer encoding of a floating-point value.\n\t/// If an inf or NaN is passed in, it will not signal, and the\n\t/// resulting floating point value is unspecified. Otherwise,\n\t/// the bit-level representation is preserved.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/intBitsToFloat.xml\">GLSL intBitsToFloat man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, float, Q> intBitsToFloat(vec<L, int, Q> const& v);\n\n\t/// Returns a floating-point value corresponding to a\n\t/// unsigned integer encoding of a floating-point value.\n\t/// If an inf or NaN is passed in, it will not signal, and the\n\t/// resulting floating point value is unspecified. Otherwise,\n\t/// the bit-level representation is preserved.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml\">GLSL uintBitsToFloat man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\tGLM_FUNC_DECL float uintBitsToFloat(uint const& v);\n\n\t/// Returns a floating-point value corresponding to a\n\t/// unsigned integer encoding of a floating-point value.\n\t/// If an inf or NaN is passed in, it will not signal, and the\n\t/// resulting floating point value is unspecified. Otherwise,\n\t/// the bit-level representation is preserved.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/uintBitsToFloat.xml\">GLSL uintBitsToFloat man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, float, Q> uintBitsToFloat(vec<L, uint, Q> const& v);\n\n\t/// Computes and returns a * b + c.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/fma.xml\">GLSL fma man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType const& c);\n\n\t/// Splits x into a floating-point significand in the range\n\t/// [0.5, 1.0) and an integral exponent of two, such that:\n\t/// x = significand * exp(2, exponent)\n\t///\n\t/// The significand is returned by the function and the\n\t/// exponent is returned in the parameter exp. For a\n\t/// floating-point value of zero, the significant and exponent\n\t/// are both zero. For a floating-point value that is an\n\t/// infinity or is not a number, the results are undefined.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/frexp.xml\">GLSL frexp man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType frexp(genType x, int& exp);\n\t\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> frexp(vec<L, T, Q> const& v, vec<L, int, Q>& exp);\n\n\t/// Builds a floating-point number from x and the\n\t/// corresponding integral exponent of two in exp, returning:\n\t/// significand * exp(2, exponent)\n\t///\n\t/// If this product is too large to be represented in the\n\t/// floating-point type, the result is undefined.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/ldexp.xml\">GLSL ldexp man page</a>;\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType ldexp(genType const& x, int const& exp);\n\t\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> ldexp(vec<L, T, Q> const& v, vec<L, int, Q> const& exp);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_common.inl\"\n\n"
  },
  {
    "path": "libraries/glm/detail/_features.hpp",
    "content": "#pragma once\n\n// #define GLM_CXX98_EXCEPTIONS\n// #define GLM_CXX98_RTTI\n\n// #define GLM_CXX11_RVALUE_REFERENCES\n// Rvalue references - GCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html\n\n// GLM_CXX11_TRAILING_RETURN\n// Rvalue references for *this - GCC not supported\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm\n\n// GLM_CXX11_NONSTATIC_MEMBER_INIT\n// Initialization of class objects by rvalues - GCC any\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html\n\n// GLM_CXX11_NONSTATIC_MEMBER_INIT\n// Non-static data member initializers - GCC 4.7\n// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm\n\n// #define GLM_CXX11_VARIADIC_TEMPLATE\n// Variadic templates - GCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf\n\n//\n// Extending variadic template template parameters - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf\n\n// #define GLM_CXX11_GENERALIZED_INITIALIZERS\n// Initializer lists - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm\n\n// #define GLM_CXX11_STATIC_ASSERT\n// Static assertions - GCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html\n\n// #define GLM_CXX11_AUTO_TYPE\n// auto-typed variables - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf\n\n// #define GLM_CXX11_AUTO_TYPE\n// Multi-declarator auto - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf\n\n// #define GLM_CXX11_AUTO_TYPE\n// Removal of auto as a storage-class specifier - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm\n\n// #define GLM_CXX11_AUTO_TYPE\n// New function declarator syntax - GCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm\n\n// #define GLM_CXX11_LAMBDAS\n// New wording for C++0x lambdas - GCC 4.5\n// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf\n\n// #define GLM_CXX11_DECLTYPE\n// Declared type of an expression - GCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf\n\n//\n// Right angle brackets - GCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html\n\n//\n// Default template arguments for function templates\tDR226\tGCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226\n\n//\n// Solving the SFINAE problem for expressions\tDR339\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html\n\n// #define GLM_CXX11_ALIAS_TEMPLATE\n// Template aliases\tN2258\tGCC 4.7\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf\n\n//\n// Extern templates\tN1987\tYes\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm\n\n// #define GLM_CXX11_NULLPTR\n// Null pointer constant\tN2431\tGCC 4.6\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf\n\n// #define GLM_CXX11_STRONG_ENUMS\n// Strongly-typed enums\tN2347\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf\n\n//\n// Forward declarations for enums\tN2764\tGCC 4.6\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf\n\n//\n// Generalized attributes\tN2761\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf\n\n//\n// Generalized constant expressions\tN2235\tGCC 4.6\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf\n\n//\n// Alignment support\tN2341\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf\n\n// #define GLM_CXX11_DELEGATING_CONSTRUCTORS\n// Delegating constructors\tN1986\tGCC 4.7\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf\n\n//\n// Inheriting constructors\tN2540\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm\n\n// #define GLM_CXX11_EXPLICIT_CONVERSIONS\n// Explicit conversion operators\tN2437\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf\n\n//\n// New character types\tN2249\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html\n\n//\n// Unicode string literals\tN2442\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm\n\n//\n// Raw string literals\tN2442\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm\n\n//\n// Universal character name literals\tN2170\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html\n\n// #define GLM_CXX11_USER_LITERALS\n// User-defined literals\t\tN2765\tGCC 4.7\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf\n\n//\n// Standard Layout Types\tN2342\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm\n\n// #define GLM_CXX11_DEFAULTED_FUNCTIONS\n// #define GLM_CXX11_DELETED_FUNCTIONS\n// Defaulted and deleted functions\tN2346\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm\n\n//\n// Extended friend declarations\tN1791\tGCC 4.7\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf\n\n//\n// Extending sizeof\tN2253\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html\n\n// #define GLM_CXX11_INLINE_NAMESPACES\n// Inline namespaces\tN2535\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm\n\n// #define GLM_CXX11_UNRESTRICTED_UNIONS\n// Unrestricted unions\tN2544\tGCC 4.6\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf\n\n// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS\n// Local and unnamed types as template arguments\tN2657\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm\n\n// #define GLM_CXX11_RANGE_FOR\n// Range-based for\tN2930\tGCC 4.6\n// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html\n\n// #define GLM_CXX11_OVERRIDE_CONTROL\n// Explicit virtual overrides\tN2928 N3206 N3272\tGCC 4.7\n// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm\n\n//\n// Minimal support for garbage collection and reachability-based leak detection\tN2670\tNo\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm\n\n// #define GLM_CXX11_NOEXCEPT\n// Allowing move constructors to throw [noexcept]\tN3050\tGCC 4.6 (core language only)\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html\n\n//\n// Defining move special member functions\tN3053\tGCC 4.6\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html\n\n//\n// Sequence points\tN2239\tYes\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html\n\n//\n// Atomic operations\tN2427\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html\n\n//\n// Strong Compare and Exchange\tN2748\tGCC 4.5\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html\n\n//\n// Bidirectional Fences\tN2752\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm\n\n//\n// Memory model\tN2429\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm\n\n//\n// Data-dependency ordering: atomics and memory model\tN2664\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm\n\n//\n// Propagating exceptions\tN2179\tGCC 4.4\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html\n\n//\n// Abandoning a process and at_quick_exit\tN2440\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm\n\n//\n// Allow atomics use in signal handlers\tN2547\tYes\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm\n\n//\n// Thread-local storage\tN2659\tGCC 4.8\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm\n\n//\n// Dynamic initialization and destruction with concurrency\tN2660\tGCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm\n\n//\n// __func__ predefined identifier\tN2340\tGCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm\n\n//\n// C99 preprocessor\tN1653\tGCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm\n\n//\n// long long\tN1811\tGCC 4.3\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf\n\n//\n// Extended integral types\tN1988\tYes\n// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf\n\n#if(GLM_COMPILER & GLM_COMPILER_GCC)\n\n#\tdefine GLM_CXX11_STATIC_ASSERT\n\n#elif(GLM_COMPILER & GLM_COMPILER_CLANG)\n#\tif(__has_feature(cxx_exceptions))\n#\t\tdefine GLM_CXX98_EXCEPTIONS\n#\tendif\n\n#\tif(__has_feature(cxx_rtti))\n#\t\tdefine GLM_CXX98_RTTI\n#\tendif\n\n#\tif(__has_feature(cxx_access_control_sfinae))\n#\t\tdefine GLM_CXX11_ACCESS_CONTROL_SFINAE\n#\tendif\n\n#\tif(__has_feature(cxx_alias_templates))\n#\t\tdefine GLM_CXX11_ALIAS_TEMPLATE\n#\tendif\n\n#\tif(__has_feature(cxx_alignas))\n#\t\tdefine GLM_CXX11_ALIGNAS\n#\tendif\n\n#\tif(__has_feature(cxx_attributes))\n#\t\tdefine GLM_CXX11_ATTRIBUTES\n#\tendif\n\n#\tif(__has_feature(cxx_constexpr))\n#\t\tdefine GLM_CXX11_CONSTEXPR\n#\tendif\n\n#\tif(__has_feature(cxx_decltype))\n#\t\tdefine GLM_CXX11_DECLTYPE\n#\tendif\n\n#\tif(__has_feature(cxx_default_function_template_args))\n#\t\tdefine GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS\n#\tendif\n\n#\tif(__has_feature(cxx_defaulted_functions))\n#\t\tdefine GLM_CXX11_DEFAULTED_FUNCTIONS\n#\tendif\n\n#\tif(__has_feature(cxx_delegating_constructors))\n#\t\tdefine GLM_CXX11_DELEGATING_CONSTRUCTORS\n#\tendif\n\n#\tif(__has_feature(cxx_deleted_functions))\n#\t\tdefine GLM_CXX11_DELETED_FUNCTIONS\n#\tendif\n\n#\tif(__has_feature(cxx_explicit_conversions))\n#\t\tdefine GLM_CXX11_EXPLICIT_CONVERSIONS\n#\tendif\n\n#\tif(__has_feature(cxx_generalized_initializers))\n#\t\tdefine GLM_CXX11_GENERALIZED_INITIALIZERS\n#\tendif\n\n#\tif(__has_feature(cxx_implicit_moves))\n#\t\tdefine GLM_CXX11_IMPLICIT_MOVES\n#\tendif\n\n#\tif(__has_feature(cxx_inheriting_constructors))\n#\t\tdefine GLM_CXX11_INHERITING_CONSTRUCTORS\n#\tendif\n\n#\tif(__has_feature(cxx_inline_namespaces))\n#\t\tdefine GLM_CXX11_INLINE_NAMESPACES\n#\tendif\n\n#\tif(__has_feature(cxx_lambdas))\n#\t\tdefine GLM_CXX11_LAMBDAS\n#\tendif\n\n#\tif(__has_feature(cxx_local_type_template_args))\n#\t\tdefine GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS\n#\tendif\n\n#\tif(__has_feature(cxx_noexcept))\n#\t\tdefine GLM_CXX11_NOEXCEPT\n#\tendif\n\n#\tif(__has_feature(cxx_nonstatic_member_init))\n#\t\tdefine GLM_CXX11_NONSTATIC_MEMBER_INIT\n#\tendif\n\n#\tif(__has_feature(cxx_nullptr))\n#\t\tdefine GLM_CXX11_NULLPTR\n#\tendif\n\n#\tif(__has_feature(cxx_override_control))\n#\t\tdefine GLM_CXX11_OVERRIDE_CONTROL\n#\tendif\n\n#\tif(__has_feature(cxx_reference_qualified_functions))\n#\t\tdefine GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS\n#\tendif\n\n#\tif(__has_feature(cxx_range_for))\n#\t\tdefine GLM_CXX11_RANGE_FOR\n#\tendif\n\n#\tif(__has_feature(cxx_raw_string_literals))\n#\t\tdefine GLM_CXX11_RAW_STRING_LITERALS\n#\tendif\n\n#\tif(__has_feature(cxx_rvalue_references))\n#\t\tdefine GLM_CXX11_RVALUE_REFERENCES\n#\tendif\n\n#\tif(__has_feature(cxx_static_assert))\n#\t\tdefine GLM_CXX11_STATIC_ASSERT\n#\tendif\n\n#\tif(__has_feature(cxx_auto_type))\n#\t\tdefine GLM_CXX11_AUTO_TYPE\n#\tendif\n\n#\tif(__has_feature(cxx_strong_enums))\n#\t\tdefine GLM_CXX11_STRONG_ENUMS\n#\tendif\n\n#\tif(__has_feature(cxx_trailing_return))\n#\t\tdefine GLM_CXX11_TRAILING_RETURN\n#\tendif\n\n#\tif(__has_feature(cxx_unicode_literals))\n#\t\tdefine GLM_CXX11_UNICODE_LITERALS\n#\tendif\n\n#\tif(__has_feature(cxx_unrestricted_unions))\n#\t\tdefine GLM_CXX11_UNRESTRICTED_UNIONS\n#\tendif\n\n#\tif(__has_feature(cxx_user_literals))\n#\t\tdefine GLM_CXX11_USER_LITERALS\n#\tendif\n\n#\tif(__has_feature(cxx_variadic_templates))\n#\t\tdefine GLM_CXX11_VARIADIC_TEMPLATES\n#\tendif\n\n#endif//(GLM_COMPILER & GLM_COMPILER_CLANG)\n"
  },
  {
    "path": "libraries/glm/detail/_fixes.hpp",
    "content": "#include <cmath>\n\n//! Workaround for compatibility with other libraries\n#ifdef max\n#undef max\n#endif\n\n//! Workaround for compatibility with other libraries\n#ifdef min\n#undef min\n#endif\n\n//! Workaround for Android\n#ifdef isnan\n#undef isnan\n#endif\n\n//! Workaround for Android\n#ifdef isinf\n#undef isinf\n#endif\n\n//! Workaround for Chrone Native Client\n#ifdef log2\n#undef log2\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/_noise.hpp",
    "content": "#pragma once\n\n#include \"../common.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T mod289(T const& x)\n\t{\n\t\treturn x - floor(x * (static_cast<T>(1.0) / static_cast<T>(289.0))) * static_cast<T>(289.0);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T permute(T const& x)\n\t{\n\t\treturn mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> const& x)\n\t{\n\t\treturn mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> const& x)\n\t{\n\t\treturn mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> const& x)\n\t{\n\t\treturn mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T taylorInvSqrt(T const& r)\n\t{\n\t\treturn static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> const& r)\n\t{\n\t\treturn static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> const& r)\n\t{\n\t\treturn static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> const& r)\n\t{\n\t\treturn static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> const& t)\n\t{\n\t\treturn (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> const& t)\n\t{\n\t\treturn (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> const& t)\n\t{\n\t\treturn (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));\n\t}\n}//namespace detail\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/detail/_swizzle.hpp",
    "content": "#pragma once\n\nnamespace glm{\nnamespace detail\n{\n\t// Internal class for implementing swizzle operators\n\ttemplate<typename T, int N>\n\tstruct _swizzle_base0\n\t{\n\tprotected:\n\t\tGLM_FUNC_QUALIFIER T& elem(size_t i){ return (reinterpret_cast<T*>(_buffer))[i]; }\n\t\tGLM_FUNC_QUALIFIER T const& elem(size_t i) const{ return (reinterpret_cast<const T*>(_buffer))[i]; }\n\n\t\t// Use an opaque buffer to *ensure* the compiler doesn't call a constructor.\n\t\t// The size 1 buffer is assumed to aligned to the actual members so that the\n\t\t// elem()\n\t\tchar    _buffer[1];\n\t};\n\n\ttemplate<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, bool Aligned>\n\tstruct _swizzle_base1 : public _swizzle_base0<T, N>\n\t{\n\t};\n\n\ttemplate<typename T, qualifier Q, int E0, int E1, bool Aligned>\n\tstruct _swizzle_base1<2, T, Q, E0,E1,-1,-2, Aligned> : public _swizzle_base0<T, 2>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<2, T, Q> operator ()()  const { return vec<2, T, Q>(this->elem(E0), this->elem(E1)); }\n\t};\n\n\ttemplate<typename T, qualifier Q, int E0, int E1, int E2, bool Aligned>\n\tstruct _swizzle_base1<3, T, Q, E0,E1,E2,-1, Aligned> : public _swizzle_base0<T, 3>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<3, T, Q> operator ()()  const { return vec<3, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2)); }\n\t};\n\n\ttemplate<typename T, qualifier Q, int E0, int E1, int E2, int E3, bool Aligned>\n\tstruct _swizzle_base1<4, T, Q, E0,E1,E2,E3, Aligned> : public _swizzle_base0<T, 4>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<4, T, Q> operator ()()  const { return vec<4, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }\n\t};\n\n\t// Internal class for implementing swizzle operators\n\t/*\n\t\tTemplate parameters:\n\n\t\tT\t\t\t= type of scalar values (e.g. float, double)\n\t\tN\t\t\t= number of components in the vector (e.g. 3)\n\t\tE0...3\t\t= what index the n-th element of this swizzle refers to in the unswizzled vec\n\n\t\tDUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles\n\t\t\tcontaining duplicate elements so that they cannot be used as r-values).\n\t*/\n\ttemplate<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>\n\tstruct _swizzle_base2 : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>\n\t{\n\t\tstruct op_equal\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e = t; }\n\t\t};\n\n\t\tstruct op_minus\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e -= t; }\n\t\t};\n\n\t\tstruct op_plus\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e += t; }\n\t\t};\n\n\t\tstruct op_mul\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e *= t; }\n\t\t};\n\n\t\tstruct op_div\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e /= t; }\n\t\t};\n\n\tpublic:\n\t\tGLM_FUNC_QUALIFIER _swizzle_base2& operator= (const T& t)\n\t\t{\n\t\t\tfor (int i = 0; i < N; ++i)\n\t\t\t\t(*this)[i] = t;\n\t\t\treturn *this;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER _swizzle_base2& operator= (vec<N, T, Q> const& that)\n\t\t{\n\t\t\t_apply_op(that, op_equal());\n\t\t\treturn *this;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER void operator -= (vec<N, T, Q> const& that)\n\t\t{\n\t\t\t_apply_op(that, op_minus());\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER void operator += (vec<N, T, Q> const& that)\n\t\t{\n\t\t\t_apply_op(that, op_plus());\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER void operator *= (vec<N, T, Q> const& that)\n\t\t{\n\t\t\t_apply_op(that, op_mul());\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER void operator /= (vec<N, T, Q> const& that)\n\t\t{\n\t\t\t_apply_op(that, op_div());\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER T& operator[](size_t i)\n\t\t{\n\t\t\tconst int offset_dst[4] = { E0, E1, E2, E3 };\n\t\t\treturn this->elem(offset_dst[i]);\n\t\t}\n\t\tGLM_FUNC_QUALIFIER T operator[](size_t i) const\n\t\t{\n\t\t\tconst int offset_dst[4] = { E0, E1, E2, E3 };\n\t\t\treturn this->elem(offset_dst[i]);\n\t\t}\n\n\tprotected:\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_QUALIFIER void _apply_op(vec<N, T, Q> const& that, const U& op)\n\t\t{\n\t\t\t// Make a copy of the data in this == &that.\n\t\t\t// The copier should optimize out the copy in cases where the function is\n\t\t\t// properly inlined and the copy is not necessary.\n\t\t\tT t[N];\n\t\t\tfor (int i = 0; i < N; ++i)\n\t\t\t\tt[i] = that[i];\n\t\t\tfor (int i = 0; i < N; ++i)\n\t\t\t\top( (*this)[i], t[i] );\n\t\t}\n\t};\n\n\t// Specialization for swizzles containing duplicate elements.  These cannot be modified.\n\ttemplate<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>\n\tstruct _swizzle_base2<N, T, Q, E0,E1,E2,E3, 1> : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>\n\t{\n\t\tstruct Stub {};\n\n\t\tGLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const&) { return *this; }\n\n\t\tGLM_FUNC_QUALIFIER T operator[]  (size_t i) const\n\t\t{\n\t\t\tconst int offset_dst[4] = { E0, E1, E2, E3 };\n\t\t\treturn this->elem(offset_dst[i]);\n\t\t}\n\t};\n\n\ttemplate<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>\n\tstruct _swizzle : public _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)>\n\t{\n\t\ttypedef _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)> base_type;\n\n\t\tusing base_type::operator=;\n\n\t\tGLM_FUNC_QUALIFIER operator vec<N, T, Q> () const { return (*this)(); }\n\t};\n\n//\n// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros\n//\n#define GLM_SWIZZLE_TEMPLATE1   template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>\n#define GLM_SWIZZLE_TEMPLATE2   template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>\n#define GLM_SWIZZLE_TYPE1       _swizzle<N, T, Q, E0, E1, E2, E3>\n#define GLM_SWIZZLE_TYPE2       _swizzle<N, T, Q, F0, F1, F2, F3>\n\n//\n// Wrapper for a binary operator (e.g. u.yy + v.zy)\n//\n#define GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND)                 \\\n\tGLM_SWIZZLE_TEMPLATE2                                                          \\\n\tGLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b)  \\\n\t{                                                                               \\\n\t\treturn a() OPERAND b();                                                     \\\n\t}                                                                               \\\n\tGLM_SWIZZLE_TEMPLATE1                                                          \\\n\tGLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const vec<N, T, Q>& b)                   \\\n\t{                                                                               \\\n\t\treturn a() OPERAND b;                                                       \\\n\t}                                                                               \\\n\tGLM_SWIZZLE_TEMPLATE1                                                          \\\n\tGLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const vec<N, T, Q>& a, const GLM_SWIZZLE_TYPE1& b)                   \\\n\t{                                                                               \\\n\t\treturn a OPERAND b();                                                       \\\n\t}\n\n//\n// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)\n//\n#define GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND)\t\t\t\t\t\t\t\t\\\n\tGLM_SWIZZLE_TEMPLATE1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tGLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const T& b)\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn a() OPERAND b;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tGLM_SWIZZLE_TEMPLATE1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tGLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const T& a, const GLM_SWIZZLE_TYPE1& b)\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn a OPERAND b();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n//\n// Macro for wrapping a function taking one argument (e.g. abs())\n//\n#define GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION)\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tGLM_SWIZZLE_TEMPLATE1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a)\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn FUNCTION(a());\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t}\n\n//\n// Macro for wrapping a function taking two vector arguments (e.g. dot()).\n//\n#define GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION)                                                       \\\n\tGLM_SWIZZLE_TEMPLATE2                                                                                       \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \\\n\t{                                                                                                           \\\n\t\treturn FUNCTION(a(), b());                                                                              \\\n\t}                                                                                                           \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                       \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b) \\\n\t{                                                                                                           \\\n\t\treturn FUNCTION(a(), b());                                                                              \\\n\t}                                                                                                           \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                       \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename V& b)         \\\n\t{                                                                                                           \\\n\t\treturn FUNCTION(a(), b);                                                                                \\\n\t}                                                                                                           \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                       \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const GLM_SWIZZLE_TYPE1& b)                  \\\n\t{                                                                                                           \\\n\t\treturn FUNCTION(a, b());                                                                                \\\n\t}\n\n//\n// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).\n//\n#define GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION)                                                             \\\n\tGLM_SWIZZLE_TEMPLATE2                                                                                                    \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b, const T& c)   \\\n\t{                                                                                                                         \\\n\t\treturn FUNCTION(a(), b(), c);                                                                                         \\\n\t}                                                                                                                         \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                                    \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b, const T& c)   \\\n\t{                                                                                                                         \\\n\t\treturn FUNCTION(a(), b(), c);                                                                                         \\\n\t}                                                                                                                         \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                                    \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\\\n\t{                                                                                                                         \\\n\t\treturn FUNCTION(a(), b, c);                                                                                           \\\n\t}                                                                                                                         \\\n\tGLM_SWIZZLE_TEMPLATE1                                                                                                    \\\n\tGLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const GLM_SWIZZLE_TYPE1& b, const T& c)           \\\n\t{                                                                                                                         \\\n\t\treturn FUNCTION(a, b(), c);                                                                                           \\\n\t}\n\n}//namespace detail\n}//namespace glm\n\nnamespace glm\n{\n\tnamespace detail\n\t{\n\t\tGLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)\n\t\tGLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)\n\t\tGLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)\n\t\tGLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)\n\t\tGLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)\n\t\tGLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)\n\t}\n\n\t//\n\t// Swizzles are distinct types from the unswizzled type.  The below macros will\n\t// provide template specializations for the swizzle types for the given functions\n\t// so that the compiler does not have any ambiguity to choosing how to handle\n\t// the function.\n\t//\n\t// The alternative is to use the operator()() when calling the function in order\n\t// to explicitly convert the swizzled type to the unswizzled type.\n\t//\n\n\t//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    abs);\n\t//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    acos);\n\t//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    acosh);\n\t//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    all);\n\t//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type,    any);\n\n\t//GLM_SWIZZLE_FUNCTION_2_ARGS(value_type,  dot);\n\t//GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type,    cross);\n\t//GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type,    step);\n\t//GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);\n}\n\n#define GLM_SWIZZLE2_2_MEMBERS(T, Q, E0,E1) \\\n\tstruct { detail::_swizzle<2, T, Q, 0,0,-1,-2> E0 ## E0; }; \\\n\tstruct { detail::_swizzle<2, T, Q, 0,1,-1,-2> E0 ## E1; }; \\\n\tstruct { detail::_swizzle<2, T, Q, 1,0,-1,-2> E1 ## E0; }; \\\n\tstruct { detail::_swizzle<2, T, Q, 1,1,-1,-2> E1 ## E1; };\n\n#define GLM_SWIZZLE2_3_MEMBERS(T, Q, E0,E1) \\\n\tstruct { detail::_swizzle<3,T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3,T, Q, 1,1,1,-1> E1 ## E1 ## E1; };\n\n#define GLM_SWIZZLE2_4_MEMBERS(T, Q, E0,E1) \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; };\n\n#define GLM_SWIZZLE3_2_MEMBERS(T, Q, E0,E1,E2) \\\n\tstruct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; };\n\n#define GLM_SWIZZLE3_3_MEMBERS(T, Q ,E0,E1,E2) \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; };\n\n#define GLM_SWIZZLE3_4_MEMBERS(T, Q, E0,E1,E2) \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4,T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; };\n\n#define GLM_SWIZZLE4_2_MEMBERS(T, Q, E0,E1,E2,E3) \\\n\tstruct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 0,3,-1,-2> E0 ## E3; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 1,3,-1,-2> E1 ## E3; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 2,3,-1,-2> E2 ## E3; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 3,0,-1,-2> E3 ## E0; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 3,1,-1,-2> E3 ## E1; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 3,2,-1,-2> E3 ## E2; }; \\\n\tstruct { detail::_swizzle<2,T, Q, 3,3,-1,-2> E3 ## E3; };\n\n#define GLM_SWIZZLE4_3_MEMBERS(T, Q, E0,E1,E2,E3) \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,0,3,-1> E0 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,1,3,-1> E0 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,2,3,-1> E0 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,3,0,-1> E0 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,3,1,-1> E0 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,3,2,-1> E0 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 0,3,3,-1> E0 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,0,3,-1> E1 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,1,3,-1> E1 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,2,3,-1> E1 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,3,0,-1> E1 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,3,1,-1> E1 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,3,2,-1> E1 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 1,3,3,-1> E1 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,0,3,-1> E2 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,1,3,-1> E2 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,2,3,-1> E2 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,3,0,-1> E2 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,3,1,-1> E2 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,3,2,-1> E2 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 2,3,3,-1> E2 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,0,0,-1> E3 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,0,1,-1> E3 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,0,2,-1> E3 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,0,3,-1> E3 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,1,0,-1> E3 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,1,1,-1> E3 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,1,2,-1> E3 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,1,3,-1> E3 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,2,0,-1> E3 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,2,1,-1> E3 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,2,2,-1> E3 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,2,3,-1> E3 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,3,0,-1> E3 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,3,1,-1> E3 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,3,2,-1> E3 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<3, T, Q, 3,3,3,-1> E3 ## E3 ## E3; };\n\n#define GLM_SWIZZLE4_4_MEMBERS(T, Q, E0,E1,E2,E3) \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \\\n\tstruct { detail::_swizzle<4, T, Q, 3,3,3,3> E3 ## E3 ## E3 ## E3; };\n"
  },
  {
    "path": "libraries/glm/detail/_swizzle_func.hpp",
    "content": "#pragma once\n\n#define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B)\t\\\n\tvec<2, T, Q> A ## B() CONST\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<2, T, Q>(this->A, this->B);\t\t\t\\\n\t}\n\n#define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C)\t\t\\\n\tvec<3, T, Q> A ## B ## C() CONST\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<3, T, Q>(this->A, this->B, this->C);\t\t\t\\\n\t}\n\n#define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D)\t\t\t\t\t\\\n\tvec<4, T, Q> A ## B ## C ## D() CONST\t\t\t\t\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<4, T, Q>(this->A, this->B, this->C, this->D);\t\t\t\\\n\t}\n\n#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B)\t\\\n\ttemplate<typename T>\t\t\t\t\t\t\t\t\t\t\\\n\tvec<L, T, Q> vec<L, T, Q>::A ## B() CONST\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<2, T, Q>(this->A, this->B);\t\t\t\t\t\\\n\t}\n\n#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C)\t\t\\\n\ttemplate<typename T>\t\t\t\t\t\t\t\t\t\t\t\\\n\tvec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<3, T, Q>(this->A, this->B, this->C);\t\t\t\t\\\n\t}\n\n#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D)\t\t\\\n\ttemplate<typename T>\t\t\t\t\t\t\t\t\t\t\t\t\\\n\tvec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST\t\t\t\t\t\\\n\t{\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\\\n\t\treturn vec<4, T, Q>(this->A, this->B, this->C, this->D);\t\t\\\n\t}\n\n#define GLM_MUTABLE\n\n#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A)\n\n#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \\\n\tGLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \\\n\tGLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \\\n\tGLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t)\n\n#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B)\n\n#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A)\n\n#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C)\n\n#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p)\n\n#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C)\n\n#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B)\n\n#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A)\n\n#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)\n\n#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \\\n\tGLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q)\n\n#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B)\n\n#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B)\n\n#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P)\t\t\t\\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y)\t\\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g)\t\\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t)\n\n#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C)\n\n#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C)\n\n#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p)\n\n#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D)\n\n#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D)\n\n#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \\\n\tGLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \\\n\tGLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)\n\n#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \\\n\tGLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)\n\n"
  },
  {
    "path": "libraries/glm/detail/_vectorize.hpp",
    "content": "#pragma once\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename R, typename T, qualifier Q>\n\tstruct functor1{};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>\n\tstruct functor1<vec, 1, R, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, R, Q> call(R (*Func) (T x), vec<1, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<1, R, Q>(Func(v.x));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>\n\tstruct functor1<vec, 2, R, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, R, Q> call(R (*Func) (T x), vec<2, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<2, R, Q>(Func(v.x), Func(v.y));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>\n\tstruct functor1<vec, 3, R, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, R, Q> call(R (*Func) (T x), vec<3, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<3, R, Q>(Func(v.x), Func(v.y), Func(v.z));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>\n\tstruct functor1<vec, 4, R, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, R, Q> call(R (*Func) (T x), vec<4, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<4, R, Q>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>\n\tstruct functor2{};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2<vec, 1, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, vec<1, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<1, T, Q>(Func(a.x, b.x));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2<vec, 2, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, vec<2, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2<vec, 3, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, vec<3, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<3, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2<vec, 4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>\n\tstruct functor2_vec_sca{};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2_vec_sca<vec, 1, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, T b)\n\t\t{\n\t\t\treturn vec<1, T, Q>(Func(a.x, b));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2_vec_sca<vec, 2, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, T b)\n\t\t{\n\t\t\treturn vec<2, T, Q>(Func(a.x, b), Func(a.y, b));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2_vec_sca<vec, 3, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, T b)\n\t\t{\n\t\t\treturn vec<3, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b));\n\t\t}\n\t};\n\n\ttemplate<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>\n\tstruct functor2_vec_sca<vec, 4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, T b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct functor2_vec_int {};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct functor2_vec_int<1, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<1, int, Q> call(int (*Func) (T x, int y), vec<1, T, Q> const& a, vec<1, int, Q> const& b)\n\t\t{\n\t\t\treturn vec<1, int, Q>(Func(a.x, b.x));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct functor2_vec_int<2, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, int, Q> call(int (*Func) (T x, int y), vec<2, T, Q> const& a, vec<2, int, Q> const& b)\n\t\t{\n\t\t\treturn vec<2, int, Q>(Func(a.x, b.x), Func(a.y, b.y));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct functor2_vec_int<3, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, int, Q> call(int (*Func) (T x, int y), vec<3, T, Q> const& a, vec<3, int, Q> const& b)\n\t\t{\n\t\t\treturn vec<3, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct functor2_vec_int<4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(int (*Func) (T x, int y), vec<4, T, Q> const& a, vec<4, int, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/compute_common.hpp",
    "content": "#pragma once\n\n#include \"setup.hpp\"\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename genFIType, bool /*signed*/>\n\tstruct compute_abs\n\t{};\n\n\ttemplate<typename genFIType>\n\tstruct compute_abs<genFIType, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(\n\t\t\t\tstd::numeric_limits<genFIType>::is_iec559 || std::numeric_limits<genFIType>::is_signed,\n\t\t\t\t\"'abs' only accept floating-point and integer scalar or vector inputs\");\n\n\t\t\treturn x >= genFIType(0) ? x : -x;\n\t\t\t// TODO, perf comp with: *(((int *) &x) + 1) &= 0x7fffffff;\n\t\t}\n\t};\n\n#if GLM_COMPILER & GLM_COMPILER_CUDA\n\ttemplate<>\n\tstruct compute_abs<float, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static float call(float x)\n\t\t{\n\t\t\treturn fabsf(x);\n\t\t}\n\t};\n#endif\n\n\ttemplate<typename genFIType>\n\tstruct compute_abs<genFIType, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(\n\t\t\t\t(!std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer),\n\t\t\t\t\"'abs' only accept floating-point and integer scalar or vector inputs\");\n\t\t\treturn x;\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/compute_vector_relational.hpp",
    "content": "#pragma once\n\n//#include \"compute_common.hpp\"\n#include \"setup.hpp\"\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate <typename T, bool isFloat>\n\tstruct compute_equal\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)\n\t\t{\n\t\t\treturn a == b;\n\t\t}\n\t};\n/*\n\ttemplate <typename T>\n\tstruct compute_equal<T, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)\n\t\t{\n\t\t\treturn detail::compute_abs<T, std::numeric_limits<T>::is_signed>::call(b - a) <= static_cast<T>(0);\n\t\t\t//return std::memcmp(&a, &b, sizeof(T)) == 0;\n\t\t}\n\t};\n*/\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/func_common.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_common.inl\n\n#include \"../vector_relational.hpp\"\n#include \"compute_common.hpp\"\n#include \"type_vec1.hpp\"\n#include \"type_vec2.hpp\"\n#include \"type_vec3.hpp\"\n#include \"type_vec4.hpp\"\n#include \"_vectorize.hpp\"\n#include <limits>\n\nnamespace glm\n{\n\t// min\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType min(genType x, genType y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, \"'min' only accept floating-point or integer inputs\");\n\t\treturn (y < x) ? y : x;\n\t}\n\n\t// max\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType max(genType x, genType y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, \"'max' only accept floating-point or integer inputs\");\n\n\t\treturn (x < y) ? y : x;\n\t}\n\n\t// abs\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR int abs(int x)\n\t{\n\t\tint const y = x >> (sizeof(int) * 8 - 1);\n\t\treturn (x ^ y) - y;\n\t}\n\n\t// round\n#\tif GLM_HAS_CXX11_STL\n\t\tusing ::std::round;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType round(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'round' only accept floating-point inputs\");\n\n\t\t\treturn x < static_cast<genType>(0) ? static_cast<genType>(int(x - static_cast<genType>(0.5))) : static_cast<genType>(int(x + static_cast<genType>(0.5)));\n\t\t}\n#\tendif\n\n\t// trunc\n#\tif GLM_HAS_CXX11_STL\n\t\tusing ::std::trunc;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType trunc(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'trunc' only accept floating-point inputs\");\n\n\t\t\treturn x < static_cast<genType>(0) ? -std::floor(-x) : std::floor(x);\n\t\t}\n#\tendif\n\n}//namespace glm\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_abs_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(abs, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q, bool Aligned>\n\tstruct compute_mix_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, U, Q> const& a)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'mix' only accept floating-point inputs for the interpolator a\");\n\n\t\t\treturn vec<L, T, Q>(vec<L, U, Q>(x) * (static_cast<U>(1) - a) + vec<L, U, Q>(y) * a);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_mix_vector<L, T, bool, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, bool, Q> const& a)\n\t\t{\n\t\t\tvec<L, T, Q> Result;\n\t\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\t\tResult[i] = a[i] ? y[i] : x[i];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q, bool Aligned>\n\tstruct compute_mix_scalar\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y, U const& a)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'mix' only accept floating-point inputs for the interpolator a\");\n\n\t\t\treturn vec<L, T, Q>(vec<L, U, Q>(x) * (static_cast<U>(1) - a) + vec<L, U, Q>(y) * a);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_mix_scalar<L, T, bool, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y, bool const& a)\n\t\t{\n\t\t\treturn a ? y : x;\n\t\t}\n\t};\n\n\ttemplate<typename T, typename U>\n\tstruct compute_mix\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(T const& x, T const& y, U const& a)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<U>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'mix' only accept floating-point inputs for the interpolator a\");\n\n\t\t\treturn static_cast<T>(static_cast<U>(x) * (static_cast<U>(1) - a) + static_cast<U>(y) * a);\n\t\t}\n\t};\n\n\ttemplate<typename T>\n\tstruct compute_mix<T, bool>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(T const& x, T const& y, bool const& a)\n\t\t{\n\t\t\treturn a ? y : x;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool isFloat, bool Aligned>\n\tstruct compute_sign\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn vec<L, T, Q>(glm::lessThan(vec<L, T, Q>(0), x)) - vec<L, T, Q>(glm::lessThan(x, vec<L, T, Q>(0)));\n\t\t}\n\t};\n\n#\tif GLM_ARCH == GLM_ARCH_X86\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_sign<L, T, Q, false, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\tT const Shift(static_cast<T>(sizeof(T) * 8 - 1));\n\t\t\tvec<L, T, Q> const y(vec<L, typename detail::make_unsigned<T>::type, Q>(-x) >> typename detail::make_unsigned<T>::type(Shift));\n\n\t\t\treturn (x >> Shift) | y;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_floor\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(std::floor, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_ceil\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(std::ceil, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_fract\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn x - floor(x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_trunc\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(trunc, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_round\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(round, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_mod\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'mod' only accept floating-point inputs. Include <glm/gtc/integer.hpp> for integer inputs.\");\n\t\t\treturn a - b * floor(a / b);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_min_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t\t{\n\t\t\treturn detail::functor2<vec, L, T, Q>::call(min, x, y);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_max_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t\t{\n\t\t\treturn detail::functor2<vec, L, T, Q>::call(max, x, y);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_clamp_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal)\n\t\t{\n\t\t\treturn min(max(x, minVal), maxVal);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_step_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& edge, vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn mix(vec<L, T, Q>(1), vec<L, T, Q>(0), glm::lessThan(x, edge));\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_smoothstep_vector\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'smoothstep' only accept floating-point inputs\");\n\t\t\tvec<L, T, Q> const tmp(clamp((x - edge0) / (edge1 - edge0), static_cast<T>(0), static_cast<T>(1)));\n\t\t\treturn tmp * tmp * (static_cast<T>(3) - static_cast<T>(2) * tmp);\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename genFIType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genFIType abs(genFIType x)\n\t{\n\t\treturn detail::compute_abs<genFIType, std::numeric_limits<genFIType>::is_signed>::call(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> abs(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_abs_vector<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// sign\n\t// fast and works for any type\n\ttemplate<typename genFIType>\n\tGLM_FUNC_QUALIFIER genFIType sign(genFIType x)\n\t{\n\t\tGLM_STATIC_ASSERT(\n\t\t\tstd::numeric_limits<genFIType>::is_iec559 || (std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer),\n\t\t\t\"'sign' only accept signed inputs\");\n\n\t\treturn detail::compute_sign<1, genFIType, defaultp,\n                                    std::numeric_limits<genFIType>::is_iec559, detail::is_aligned<highp>::value>::call(vec<1, genFIType>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sign(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(\n\t\t\tstd::numeric_limits<T>::is_iec559 || (std::numeric_limits<T>::is_signed && std::numeric_limits<T>::is_integer),\n\t\t\t\"'sign' only accept signed inputs\");\n\n\t\treturn detail::compute_sign<L, T, Q, std::numeric_limits<T>::is_iec559, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// floor\n\tusing ::std::floor;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> floor(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'floor' only accept floating-point inputs.\");\n\t\treturn detail::compute_floor<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> trunc(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'trunc' only accept floating-point inputs\");\n\t\treturn detail::compute_trunc<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> round(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'round' only accept floating-point inputs\");\n\t\treturn detail::compute_round<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n/*\n\t// roundEven\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType roundEven(genType const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'roundEven' only accept floating-point inputs\");\n\n\t\treturn genType(int(x + genType(int(x) % 2)));\n\t}\n*/\n\n\t// roundEven\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType roundEven(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'roundEven' only accept floating-point inputs\");\n\n\t\tint Integer = static_cast<int>(x);\n\t\tgenType IntegerPart = static_cast<genType>(Integer);\n\t\tgenType FractionalPart = fract(x);\n\n\t\tif(FractionalPart > static_cast<genType>(0.5) || FractionalPart < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn round(x);\n\t\t}\n\t\telse if((Integer % 2) == 0)\n\t\t{\n\t\t\treturn IntegerPart;\n\t\t}\n\t\telse if(x <= static_cast<genType>(0)) // Work around...\n\t\t{\n\t\t\treturn IntegerPart - static_cast<genType>(1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn IntegerPart + static_cast<genType>(1);\n\t\t}\n\t\t//else // Bug on MinGW 4.5.2\n\t\t//{\n\t\t//\treturn mix(IntegerPart + genType(-1), IntegerPart + genType(1), x <= genType(0));\n\t\t//}\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> roundEven(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'roundEven' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(roundEven, x);\n\t}\n\n\t// ceil\n\tusing ::std::ceil;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> ceil(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'ceil' only accept floating-point inputs\");\n\t\treturn detail::compute_ceil<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// fract\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fract(genType x)\n\t{\n\t\treturn fract(vec<1, genType>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fract(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fract' only accept floating-point inputs\");\n\t\treturn detail::compute_fract<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// mod\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType mod(genType x, genType y)\n\t{\n#\t\tif GLM_COMPILER & GLM_COMPILER_CUDA\n\t\t\t// Another Cuda compiler bug https://github.com/g-truc/glm/issues/530\n\t\t\tvec<1, genType, defaultp> Result(mod(vec<1, genType, defaultp>(x), y));\n\t\t\treturn Result.x;\n#\t\telse\n\t\t\treturn mod(vec<1, genType, defaultp>(x), y).x;\n#\t\tendif\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mod(vec<L, T, Q> const& x, T y)\n\t{\n\t\treturn detail::compute_mod<L, T, Q, detail::is_aligned<Q>::value>::call(x, vec<L, T, Q>(y));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mod(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn detail::compute_mod<L, T, Q, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n\n\t// modf\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType modf(genType x, genType & i)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'modf' only accept floating-point inputs\");\n\t\treturn std::modf(x, &i);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<1, T, Q> modf(vec<1, T, Q> const& x, vec<1, T, Q> & i)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tmodf(x.x, i.x));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> modf(vec<2, T, Q> const& x, vec<2, T, Q> & i)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tmodf(x.x, i.x),\n\t\t\tmodf(x.y, i.y));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> modf(vec<3, T, Q> const& x, vec<3, T, Q> & i)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tmodf(x.x, i.x),\n\t\t\tmodf(x.y, i.y),\n\t\t\tmodf(x.z, i.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> modf(vec<4, T, Q> const& x, vec<4, T, Q> & i)\n\t{\n\t\treturn vec<4, T, Q>(\n\t\t\tmodf(x.x, i.x),\n\t\t\tmodf(x.y, i.y),\n\t\t\tmodf(x.z, i.z),\n\t\t\tmodf(x.w, i.w));\n\t}\n\n\t//// Only valid if (INT_MIN <= x-y <= INT_MAX)\n\t//// min(x,y)\n\t//r = y + ((x - y) & ((x - y) >> (sizeof(int) *\n\t//CHAR_BIT - 1)));\n\t//// max(x,y)\n\t//r = x - ((x - y) & ((x - y) >> (sizeof(int) *\n\t//CHAR_BIT - 1)));\n\n\t// min\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, T b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, \"'min' only accept floating-point or integer inputs\");\n\t\treturn detail::compute_min_vector<L, T, Q, detail::is_aligned<Q>::value>::call(a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\treturn detail::compute_min_vector<L, T, Q, detail::is_aligned<Q>::value>::call(a, b);\n\t}\n\n\t// max\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& a, T b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, \"'max' only accept floating-point or integer inputs\");\n\t\treturn detail::compute_max_vector<L, T, Q, detail::is_aligned<Q>::value>::call(a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\treturn detail::compute_max_vector<L, T, Q, detail::is_aligned<Q>::value>::call(a, b);\n\t}\n\n\t// clamp\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || std::numeric_limits<genType>::is_integer, \"'clamp' only accept floating-point or integer inputs\");\n\t\treturn min(max(x, minVal), maxVal);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, T minVal, T maxVal)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, \"'clamp' only accept floating-point or integer inputs\");\n\t\treturn detail::compute_clamp_vector<L, T, Q, detail::is_aligned<Q>::value>::call(x, vec<L, T, Q>(minVal), vec<L, T, Q>(maxVal));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, \"'clamp' only accept floating-point or integer inputs\");\n\t\treturn detail::compute_clamp_vector<L, T, Q, detail::is_aligned<Q>::value>::call(x, minVal, maxVal);\n\t}\n\n\ttemplate<typename genTypeT, typename genTypeU>\n\tGLM_FUNC_QUALIFIER genTypeT mix(genTypeT x, genTypeT y, genTypeU a)\n\t{\n\t\treturn detail::compute_mix<genTypeT, genTypeU>::call(x, y, a);\n\t}\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, U a)\n\t{\n\t\treturn detail::compute_mix_scalar<L, T, U, Q, detail::is_aligned<Q>::value>::call(x, y, a);\n\t}\n\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, U, Q> const& a)\n\t{\n\t\treturn detail::compute_mix_vector<L, T, U, Q, detail::is_aligned<Q>::value>::call(x, y, a);\n\t}\n\n\t// step\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType step(genType edge, genType x)\n\t{\n\t\treturn mix(static_cast<genType>(1), static_cast<genType>(0), x < edge);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> step(T edge, vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_step_vector<L, T, Q, detail::is_aligned<Q>::value>::call(vec<L, T, Q>(edge), x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> step(vec<L, T, Q> const& edge, vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_step_vector<L, T, Q, detail::is_aligned<Q>::value>::call(edge, x);\n\t}\n\n\t// smoothstep\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType smoothstep(genType edge0, genType edge1, genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'smoothstep' only accept floating-point inputs\");\n\n\t\tgenType const tmp(clamp((x - edge0) / (edge1 - edge0), genType(0), genType(1)));\n\t\treturn tmp * tmp * (genType(3) - genType(2) * tmp);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> smoothstep(T edge0, T edge1, vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_smoothstep_vector<L, T, Q, detail::is_aligned<Q>::value>::call(vec<L, T, Q>(edge0), vec<L, T, Q>(edge1), x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> smoothstep(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_smoothstep_vector<L, T, Q, detail::is_aligned<Q>::value>::call(edge0, edge1, x);\n\t}\n\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::isnan;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER bool isnan(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'isnan' only accept floating-point inputs\");\n\n#\t\t\tif GLM_HAS_CXX11_STL\n\t\t\t\treturn std::isnan(x);\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n\t\t\t\treturn _isnan(x) != 0;\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_INTEL\n#\t\t\t\tif GLM_PLATFORM & GLM_PLATFORM_WINDOWS\n\t\t\t\t\treturn _isnan(x) != 0;\n#\t\t\t\telse\n\t\t\t\t\treturn ::isnan(x) != 0;\n#\t\t\t\tendif\n#\t\t\telif (GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)) && (GLM_PLATFORM & GLM_PLATFORM_ANDROID) && __cplusplus < 201103L\n\t\t\t\treturn _isnan(x) != 0;\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CUDA\n\t\t\t\treturn ::isnan(x) != 0;\n#\t\t\telse\n\t\t\t\treturn std::isnan(x);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isnan(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isnan' only accept floating-point inputs\");\n\n\t\tvec<L, bool, Q> Result;\n\t\tfor (length_t l = 0; l < v.length(); ++l)\n\t\t\tResult[l] = glm::isnan(v[l]);\n\t\treturn Result;\n\t}\n\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::isinf;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER bool isinf(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'isinf' only accept floating-point inputs\");\n\n#\t\t\tif GLM_HAS_CXX11_STL\n\t\t\t\treturn std::isinf(x);\n#\t\t\telif GLM_COMPILER & (GLM_COMPILER_INTEL | GLM_COMPILER_VC)\n#\t\t\t\tif(GLM_PLATFORM & GLM_PLATFORM_WINDOWS)\n\t\t\t\t\treturn _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF;\n#\t\t\t\telse\n\t\t\t\t\treturn ::isinf(x);\n#\t\t\t\tendif\n#\t\t\telif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)\n#\t\t\t\tif(GLM_PLATFORM & GLM_PLATFORM_ANDROID && __cplusplus < 201103L)\n\t\t\t\t\treturn _isinf(x) != 0;\n#\t\t\t\telse\n\t\t\t\t\treturn std::isinf(x);\n#\t\t\t\tendif\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CUDA\n\t\t\t\t// http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/docs/online/group__CUDA__MATH__DOUBLE_g13431dd2b40b51f9139cbb7f50c18fab.html#g13431dd2b40b51f9139cbb7f50c18fab\n\t\t\t\treturn ::isinf(double(x)) != 0;\n#\t\t\telse\n\t\t\t\treturn std::isinf(x);\n#\t\t\tendif\n\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isinf(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isinf' only accept floating-point inputs\");\n\n\t\tvec<L, bool, Q> Result;\n\t\tfor (length_t l = 0; l < v.length(); ++l)\n\t\t\tResult[l] = glm::isinf(v[l]);\n\t\treturn Result;\n\t}\n\n\tGLM_FUNC_QUALIFIER int floatBitsToInt(float const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tfloat in;\n\t\t\tint out;\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn u.out;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> floatBitsToInt(vec<L, float, Q> const& v)\n\t{\n\t\treturn reinterpret_cast<vec<L, int, Q>&>(const_cast<vec<L, float, Q>&>(v));\n\t}\n\n\tGLM_FUNC_QUALIFIER uint floatBitsToUint(float const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tfloat in;\n\t\t\tuint out;\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn u.out;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uint, Q> floatBitsToUint(vec<L, float, Q> const& v)\n\t{\n\t\treturn reinterpret_cast<vec<L, uint, Q>&>(const_cast<vec<L, float, Q>&>(v));\n\t}\n\n\tGLM_FUNC_QUALIFIER float intBitsToFloat(int const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tint in;\n\t\t\tfloat out;\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn u.out;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, float, Q> intBitsToFloat(vec<L, int, Q> const& v)\n\t{\n\t\treturn reinterpret_cast<vec<L, float, Q>&>(const_cast<vec<L, int, Q>&>(v));\n\t}\n\n\tGLM_FUNC_QUALIFIER float uintBitsToFloat(uint const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tfloat out;\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn u.out;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, float, Q> uintBitsToFloat(vec<L, uint, Q> const& v)\n\t{\n\t\treturn reinterpret_cast<vec<L, float, Q>&>(const_cast<vec<L, uint, Q>&>(v));\n\t}\n\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::fma;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType fma(genType const& a, genType const& b, genType const& c)\n\t\t{\n\t\t\treturn a * b + c;\n\t\t}\n#\tendif\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType frexp(genType x, int& exp)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'frexp' only accept floating-point inputs\");\n\n\t\treturn std::frexp(x, &exp);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> frexp(vec<L, T, Q> const& v, vec<L, int, Q>& exp)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'frexp' only accept floating-point inputs\");\n\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t l = 0; l < v.length(); ++l)\n\t\t\tResult[l] = std::frexp(v[l], &exp[l]);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType ldexp(genType const& x, int const& exp)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'ldexp' only accept floating-point inputs\");\n\n\t\treturn std::ldexp(x, exp);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> ldexp(vec<L, T, Q> const& v, vec<L, int, Q> const& exp)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'ldexp' only accept floating-point inputs\");\n\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t l = 0; l < v.length(); ++l)\n\t\t\tResult[l] = std::ldexp(v[l], exp[l]);\n\t\treturn Result;\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_common_simd.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/func_common_simd.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_common_simd.inl\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#include \"../simd/common.h\"\n\n#include <immintrin.h>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_abs_vector<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_abs(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_abs_vector<4, int, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& v)\n\t\t{\n\t\t\tvec<4, int, Q> result;\n\t\t\tresult.data = glm_ivec4_abs(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_floor<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_floor(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_ceil<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_ceil(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_fract<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_fract(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_round<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_round(v.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_mod<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& x, vec<4, float, Q> const& y)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = glm_vec4_mod(x.data, y.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_min_vector<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = _mm_min_ps(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_min_vector<4, int, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\tvec<4, int, Q> result;\n\t\t\tresult.data = _mm_min_epi32(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_min_vector<4, uint, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint, Q> call(vec<4, uint, Q> const& v1, vec<4, uint, Q> const& v2)\n\t\t{\n\t\t\tvec<4, uint, Q> result;\n\t\t\tresult.data = _mm_min_epu32(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_max_vector<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = _mm_max_ps(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_max_vector<4, int, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\tvec<4, int, Q> result;\n\t\t\tresult.data = _mm_max_epi32(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_max_vector<4, uint, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint, Q> call(vec<4, uint, Q> const& v1, vec<4, uint, Q> const& v2)\n\t\t{\n\t\t\tvec<4, uint, Q> result;\n\t\t\tresult.data = _mm_max_epu32(v1.data, v2.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_clamp_vector<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& x, vec<4, float, Q> const& minVal, vec<4, float, Q> const& maxVal)\n\t\t{\n\t\t\tvec<4, float, Q> result;\n\t\t\tresult.data = _mm_min_ps(_mm_max_ps(x.data, minVal.data), maxVal.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_clamp_vector<4, int, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& x, vec<4, int, Q> const& minVal, vec<4, int, Q> const& maxVal)\n\t\t{\n\t\t\tvec<4, int, Q> result;\n\t\t\tresult.data = _mm_min_epi32(_mm_max_epi32(x.data, minVal.data), maxVal.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_clamp_vector<4, uint, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint, Q> call(vec<4, uint, Q> const& x, vec<4, uint, Q> const& minVal, vec<4, uint, Q> const& maxVal)\n\t\t{\n\t\t\tvec<4, uint, Q> result;\n\t\t\tresult.data = _mm_min_epu32(_mm_max_epu32(x.data, minVal.data), maxVal.data);\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_mix_vector<4, float, bool, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& x, vec<4, float, Q> const& y, vec<4, bool, Q> const& a)\n\t\t{\n\t\t\t__m128i const Load = _mm_set_epi32(-static_cast<int>(a.w), -static_cast<int>(a.z), -static_cast<int>(a.y), -static_cast<int>(a.x));\n\t\t\t__m128 const Mask = _mm_castsi128_ps(Load);\n\n\t\t\tvec<4, float, Q> Result;\n#\t\t\tif 0 && GLM_ARCH & GLM_ARCH_AVX\n\t\t\t\tResult.data = _mm_blendv_ps(x.data, y.data, Mask);\n#\t\t\telse\n\t\t\t\tResult.data = _mm_or_ps(_mm_and_ps(Mask, y.data), _mm_andnot_ps(Mask, x.data));\n#\t\t\tendif\n\t\t\treturn Result;\n\t\t}\n\t};\n/* FIXME\n\ttemplate<qualifier Q>\n\tstruct compute_step_vector<float, Q, tvec4>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& edge, vec<4, float, Q> const& x)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tresult.data = glm_vec4_step(edge.data, x.data);\n\t\t\treturn result;\n\t\t}\n\t};\n*/\n\ttemplate<qualifier Q>\n\tstruct compute_smoothstep_vector<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& edge0, vec<4, float, Q> const& edge1, vec<4, float, Q> const& x)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = glm_vec4_smoothstep(edge0.data, edge1.data, x.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/detail/func_exponential.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_exponential.inl\n\n#include \"../vector_relational.hpp\"\n#include \"_vectorize.hpp\"\n#include <limits>\n#include <cmath>\n#include <cassert>\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::log2;\n#\telse\n\t\ttemplate<typename genType>\n\t\tgenType log2(genType Value)\n\t\t{\n\t\t\treturn std::log(Value) * static_cast<genType>(1.4426950408889634073599246810019);\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q, bool isFloat, bool Aligned>\n\tstruct compute_log2\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'log2' only accept floating-point inputs. Include <glm/gtc/integer.hpp> for integer inputs.\");\n\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(log2, v);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_sqrt\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn detail::functor1<vec, L, T, T, Q>::call(std::sqrt, x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_inversesqrt\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\treturn static_cast<T>(1) / sqrt(x);\n\t\t}\n\t};\n\n\ttemplate<length_t L, bool Aligned>\n\tstruct compute_inversesqrt<L, float, lowp, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, float, lowp> call(vec<L, float, lowp> const& x)\n\t\t{\n\t\t\tvec<L, float, lowp> tmp(x);\n\t\t\tvec<L, float, lowp> xhalf(tmp * 0.5f);\n\t\t\tvec<L, uint, lowp>* p = reinterpret_cast<vec<L, uint, lowp>*>(const_cast<vec<L, float, lowp>*>(&x));\n\t\t\tvec<L, uint, lowp> i = vec<L, uint, lowp>(0x5f375a86) - (*p >> vec<L, uint, lowp>(1));\n\t\t\tvec<L, float, lowp>* ptmp = reinterpret_cast<vec<L, float, lowp>*>(&i);\n\t\t\ttmp = *ptmp;\n\t\t\ttmp = tmp * (1.5f - xhalf * tmp * tmp);\n\t\t\treturn tmp;\n\t\t}\n\t};\n}//namespace detail\n\n\t// pow\n\tusing std::pow;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> pow(vec<L, T, Q> const& base, vec<L, T, Q> const& exponent)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(pow, base, exponent);\n\t}\n\n\t// exp\n\tusing std::exp;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> exp(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(exp, x);\n\t}\n\n\t// log\n\tusing std::log;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> log(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(log, x);\n\t}\n\n#   if GLM_HAS_CXX11_STL\n    using std::exp2;\n#   else\n\t//exp2, ln2 = 0.69314718055994530941723212145818f\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType exp2(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'exp2' only accept floating-point inputs\");\n\n\t\treturn std::exp(static_cast<genType>(0.69314718055994530941723212145818) * x);\n\t}\n#   endif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> exp2(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(exp2, x);\n\t}\n\n\t// log2, ln2 = 0.69314718055994530941723212145818f\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType log2(genType x)\n\t{\n\t\treturn log2(vec<1, genType>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> log2(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_log2<L, T, Q, std::numeric_limits<T>::is_iec559, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// sqrt\n\tusing std::sqrt;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sqrt(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'sqrt' only accept floating-point inputs\");\n\t\treturn detail::compute_sqrt<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// inversesqrt\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType inversesqrt(genType x)\n\t{\n\t\treturn static_cast<genType>(1) / sqrt(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> inversesqrt(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'inversesqrt' only accept floating-point inputs\");\n\t\treturn detail::compute_inversesqrt<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_exponential_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/func_exponential_simd.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_exponential_simd.inl\n\n#include \"../simd/exponential.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_sqrt<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_sqrt_ps(v.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n\ttemplate<>\n\tstruct compute_sqrt<4, float, aligned_lowp, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, aligned_lowp> call(vec<4, float, aligned_lowp> const& v)\n\t\t{\n\t\t\tvec<4, float, aligned_lowp> Result;\n\t\t\tResult.data = glm_vec4_sqrt_lowp(v.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n}//namespace detail\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/detail/func_geometric.inl",
    "content": "#include \"../exponential.hpp\"\n#include \"../common.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_length\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\treturn sqrt(dot(v, v));\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_distance\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1)\n\t\t{\n\t\t\treturn length(p1 - p0);\n\t\t}\n\t};\n\n\ttemplate<typename V, typename T, bool Aligned>\n\tstruct compute_dot{};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_dot<vec<1, T, Q>, T, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<1, T, Q> const& a, vec<1, T, Q> const& b)\n\t\t{\n\t\t\treturn a.x * b.x;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_dot<vec<2, T, Q>, T, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<2, T, Q> const& a, vec<2, T, Q> const& b)\n\t\t{\n\t\t\tvec<2, T, Q> tmp(a * b);\n\t\t\treturn tmp.x + tmp.y;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_dot<vec<3, T, Q>, T, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<3, T, Q> const& a, vec<3, T, Q> const& b)\n\t\t{\n\t\t\tvec<3, T, Q> tmp(a * b);\n\t\t\treturn tmp.x + tmp.y + tmp.z;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_dot<vec<4, T, Q>, T, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> tmp(a * b);\n\t\t\treturn (tmp.x + tmp.y) + (tmp.z + tmp.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_cross\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, T, Q> call(vec<3, T, Q> const& x, vec<3, T, Q> const& y)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'cross' accepts only floating-point inputs\");\n\n\t\t\treturn vec<3, T, Q>(\n\t\t\t\tx.y * y.z - y.y * x.z,\n\t\t\t\tx.z * y.x - y.z * x.x,\n\t\t\t\tx.x * y.y - y.x * x.y);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_normalize\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'normalize' accepts only floating-point inputs\");\n\n\t\t\treturn v * inversesqrt(dot(v, v));\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_faceforward\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& N, vec<L, T, Q> const& I, vec<L, T, Q> const& Nref)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'normalize' accepts only floating-point inputs\");\n\n\t\t\treturn dot(Nref, I) < static_cast<T>(0) ? N : -N;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_reflect\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& I, vec<L, T, Q> const& N)\n\t\t{\n\t\t\treturn I - N * dot(N, I) * static_cast<T>(2);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_refract\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& I, vec<L, T, Q> const& N, T eta)\n\t\t{\n\t\t\tT const dotValue(dot(N, I));\n\t\t\tT const k(static_cast<T>(1) - eta * eta * (static_cast<T>(1) - dotValue * dotValue));\n\t\t\tvec<L, T, Q> const Result =\n                (k >= static_cast<T>(0)) ? (eta * I - (eta * dotValue + std::sqrt(k)) * N) : vec<L, T, Q>(0);\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n\n\t// length\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType length(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'length' accepts only floating-point inputs\");\n\n\t\treturn abs(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T length(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'length' accepts only floating-point inputs\");\n\n\t\treturn detail::compute_length<L, T, Q, detail::is_aligned<Q>::value>::call(v);\n\t}\n\n\t// distance\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType distance(genType const& p0, genType const& p1)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'distance' accepts only floating-point inputs\");\n\n\t\treturn length(p1 - p0);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T distance(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1)\n\t{\n\t\treturn detail::compute_distance<L, T, Q, detail::is_aligned<Q>::value>::call(p0, p1);\n\t}\n\n\t// dot\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T dot(T x, T y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'dot' accepts only floating-point inputs\");\n\t\treturn x * y;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T dot(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'dot' accepts only floating-point inputs\");\n\t\treturn detail::compute_dot<vec<L, T, Q>, T, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n\n\t// cross\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> cross(vec<3, T, Q> const& x, vec<3, T, Q> const& y)\n\t{\n\t\treturn detail::compute_cross<T, Q, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n/*\n\t// normalize\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType normalize(genType const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'normalize' accepts only floating-point inputs\");\n\n\t\treturn x < genType(0) ? genType(-1) : genType(1);\n\t}\n*/\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> normalize(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'normalize' accepts only floating-point inputs\");\n\n\t\treturn detail::compute_normalize<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// faceforward\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType faceforward(genType const& N, genType const& I, genType const& Nref)\n\t{\n\t\treturn dot(Nref, I) < static_cast<genType>(0) ? N : -N;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> faceforward(vec<L, T, Q> const& N, vec<L, T, Q> const& I, vec<L, T, Q> const& Nref)\n\t{\n\t\treturn detail::compute_faceforward<L, T, Q, detail::is_aligned<Q>::value>::call(N, I, Nref);\n\t}\n\n\t// reflect\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType reflect(genType const& I, genType const& N)\n\t{\n\t\treturn I - N * dot(N, I) * genType(2);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> reflect(vec<L, T, Q> const& I, vec<L, T, Q> const& N)\n\t{\n\t\treturn detail::compute_reflect<L, T, Q, detail::is_aligned<Q>::value>::call(I, N);\n\t}\n\n\t// refract\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType refract(genType const& I, genType const& N, genType eta)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'refract' accepts only floating-point inputs\");\n\t\tgenType const dotValue(dot(N, I));\n\t\tgenType const k(static_cast<genType>(1) - eta * eta * (static_cast<genType>(1) - dotValue * dotValue));\n\t\treturn (eta * I - (eta * dotValue + sqrt(k)) * N) * static_cast<genType>(k >= static_cast<genType>(0));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> refract(vec<L, T, Q> const& I, vec<L, T, Q> const& N, T eta)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'refract' accepts only floating-point inputs\");\n\t\treturn detail::compute_refract<L, T, Q, detail::is_aligned<Q>::value>::call(I, N, eta);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_geometric_simd.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/func_geometric_simd.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_geometric_simd.inl\n\n#include \"../simd/geometric.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_length<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\treturn _mm_cvtss_f32(glm_vec4_length(v.data));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_distance<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& p0, vec<4, float, Q> const& p1)\n\t\t{\n\t\t\treturn _mm_cvtss_f32(glm_vec4_distance(p0.data, p1.data));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_dot<vec<4, float, Q>, float, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& x, vec<4, float, Q> const& y)\n\t\t{\n\t\t\treturn _mm_cvtss_f32(glm_vec1_dot(x.data, y.data));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_cross<float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, float, Q> call(vec<3, float, Q> const& a, vec<3, float, Q> const& b)\n\t\t{\n\t\t\t__m128 const set0 = _mm_set_ps(0.0f, a.z, a.y, a.x);\n\t\t\t__m128 const set1 = _mm_set_ps(0.0f, b.z, b.y, b.x);\n\t\t\t__m128 const xpd0 = glm_vec4_cross(set0, set1);\n\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = xpd0;\n\t\t\treturn vec<3, float, Q>(Result);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_normalize<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = glm_vec4_normalize(v.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_faceforward<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& N, vec<4, float, Q> const& I, vec<4, float, Q> const& Nref)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = glm_vec4_faceforward(N.data, I.data, Nref.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_reflect<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& I, vec<4, float, Q> const& N)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = glm_vec4_reflect(I.data, N.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_refract<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& I, vec<4, float, Q> const& N, float eta)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = glm_vec4_refract(I.data, N.data, _mm_set1_ps(eta));\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n\n#elif GLM_ARCH & GLM_ARCH_NEON_BIT\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_length<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\treturn compute_dot<vec<4, float, Q>, float, true>::call(v, v);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_distance<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& p0, vec<4, float, Q> const& p1)\n\t\t{\n\t\t\treturn compute_length<4, float, Q, true>::call(p1 - p0);\n\t\t}\n\t};\n\n\n\ttemplate<qualifier Q>\n\tstruct compute_dot<vec<4, float, Q>, float, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(vec<4, float, Q> const& x, vec<4, float, Q> const& y)\n\t\t{\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tfloat32x4_t v = vmulq_f32(x.data, y.data);\n\t\t\tv = vpaddq_f32(v, v);\n\t\t\tv = vpaddq_f32(v, v);\n\t\t\treturn vgetq_lane_f32(v, 0);\n#else  // Armv7a with Neon\n\t\t\tfloat32x4_t p = vmulq_f32(x.data, y.data);\n\t\t\tfloat32x2_t v = vpadd_f32(vget_low_f32(p), vget_high_f32(p));\n\t\t\tv = vpadd_f32(v, v);\n\t\t\treturn vget_lane_f32(v, 0);\n#endif\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_normalize<4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tfloat32x4_t p = vmulq_f32(v.data, v.data);\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tp = vpaddq_f32(p, p);\n\t\t\tp = vpaddq_f32(p, p);\n#else\n\t\t\tfloat32x2_t t = vpadd_f32(vget_low_f32(p), vget_high_f32(p));\n\t\t\tt = vpadd_f32(t, t);\n\t\t\tp = vcombine_f32(t, t);\n#endif\n\n\t\t\tfloat32x4_t vd = vrsqrteq_f32(p);\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = vmulq_f32(v.data, vd);\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/detail/func_integer.inl",
    "content": "/// @ref core\n\n#include \"_vectorize.hpp\"\n#if(GLM_ARCH & GLM_ARCH_X86 && GLM_COMPILER & GLM_COMPILER_VC)\n#\tinclude <intrin.h>\n#\tpragma intrinsic(_BitScanReverse)\n#endif//(GLM_ARCH & GLM_ARCH_X86 && GLM_COMPILER & GLM_COMPILER_VC)\n#include <limits>\n\n#if !GLM_HAS_EXTENDED_INTEGER_TYPE\n#\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\tpragma GCC diagnostic ignored \"-Wlong-long\"\n#\tendif\n#\tif (GLM_COMPILER & GLM_COMPILER_CLANG)\n#\t\tpragma clang diagnostic ignored \"-Wc++11-long-long\"\n#\tendif\n#endif\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T mask(T Bits)\n\t{\n\t\treturn Bits >= static_cast<T>(sizeof(T) * 8) ? ~static_cast<T>(0) : (static_cast<T>(1) << Bits) - static_cast<T>(1);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned, bool EXEC>\n\tstruct compute_bitfieldReverseStep\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T, T)\n\t\t{\n\t\t\treturn v;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_bitfieldReverseStep<L, T, Q, Aligned, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T Mask, T Shift)\n\t\t{\n\t\t\treturn (v & Mask) << Shift | (v & (~Mask)) >> Shift;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned, bool EXEC>\n\tstruct compute_bitfieldBitCountStep\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T, T)\n\t\t{\n\t\t\treturn v;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_bitfieldBitCountStep<L, T, Q, Aligned, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T Mask, T Shift)\n\t\t{\n\t\t\treturn (v & Mask) + ((v >> Shift) & Mask);\n\t\t}\n\t};\n\n\ttemplate<typename genIUType, size_t Bits>\n\tstruct compute_findLSB\n\t{\n\t\tGLM_FUNC_QUALIFIER static int call(genIUType Value)\n\t\t{\n\t\t\tif(Value == 0)\n\t\t\t\treturn -1;\n\n\t\t\treturn glm::bitCount(~Value & (Value - static_cast<genIUType>(1)));\n\t\t}\n\t};\n\n#\tif GLM_HAS_BITSCAN_WINDOWS\n\t\ttemplate<typename genIUType>\n\t\tstruct compute_findLSB<genIUType, 32>\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER static int call(genIUType Value)\n\t\t\t{\n\t\t\t\tunsigned long Result(0);\n\t\t\t\tunsigned char IsNotNull = _BitScanForward(&Result, *reinterpret_cast<unsigned long*>(&Value));\n\t\t\t\treturn IsNotNull ? int(Result) : -1;\n\t\t\t}\n\t\t};\n\n#\t\tif !((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_MODEL == GLM_MODEL_32))\n\t\ttemplate<typename genIUType>\n\t\tstruct compute_findLSB<genIUType, 64>\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER static int call(genIUType Value)\n\t\t\t{\n\t\t\t\tunsigned long Result(0);\n\t\t\t\tunsigned char IsNotNull = _BitScanForward64(&Result, *reinterpret_cast<unsigned __int64*>(&Value));\n\t\t\t\treturn IsNotNull ? int(Result) : -1;\n\t\t\t}\n\t\t};\n#\t\tendif\n#\tendif//GLM_HAS_BITSCAN_WINDOWS\n\n\ttemplate<length_t L, typename T, qualifier Q, bool EXEC = true>\n\tstruct compute_findMSB_step_vec\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, T Shift)\n\t\t{\n\t\t\treturn x | (x >> Shift);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_findMSB_step_vec<L, T, Q, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x, T)\n\t\t{\n\t\t\treturn x;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, int>\n\tstruct compute_findMSB_vec\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, int, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\tvec<L, T, Q> x(v);\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >=  8>::call(x, static_cast<T>( 1));\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >=  8>::call(x, static_cast<T>( 2));\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >=  8>::call(x, static_cast<T>( 4));\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >= 16>::call(x, static_cast<T>( 8));\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >= 32>::call(x, static_cast<T>(16));\n\t\t\tx = compute_findMSB_step_vec<L, T, Q, sizeof(T) * 8 >= 64>::call(x, static_cast<T>(32));\n\t\t\treturn vec<L, int, Q>(sizeof(T) * 8 - 1) - glm::bitCount(~x);\n\t\t}\n\t};\n\n#\tif GLM_HAS_BITSCAN_WINDOWS\n\t\ttemplate<typename genIUType>\n\t\tGLM_FUNC_QUALIFIER int compute_findMSB_32(genIUType Value)\n\t\t{\n\t\t\tunsigned long Result(0);\n\t\t\tunsigned char IsNotNull = _BitScanReverse(&Result, *reinterpret_cast<unsigned long*>(&Value));\n\t\t\treturn IsNotNull ? int(Result) : -1;\n\t\t}\n\n\t\ttemplate<length_t L, typename T, qualifier Q>\n\t\tstruct compute_findMSB_vec<L, T, Q, 32>\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER static vec<L, int, Q> call(vec<L, T, Q> const& x)\n\t\t\t{\n\t\t\t\treturn detail::functor1<vec, L, int, T, Q>::call(compute_findMSB_32, x);\n\t\t\t}\n\t\t};\n\n#\t\tif !((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_MODEL == GLM_MODEL_32))\n\t\ttemplate<typename genIUType>\n\t\tGLM_FUNC_QUALIFIER int compute_findMSB_64(genIUType Value)\n\t\t{\n\t\t\tunsigned long Result(0);\n\t\t\tunsigned char IsNotNull = _BitScanReverse64(&Result, *reinterpret_cast<unsigned __int64*>(&Value));\n\t\t\treturn IsNotNull ? int(Result) : -1;\n\t\t}\n\n\t\ttemplate<length_t L, typename T, qualifier Q>\n\t\tstruct compute_findMSB_vec<L, T, Q, 64>\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER static vec<L, int, Q> call(vec<L, T, Q> const& x)\n\t\t\t{\n\t\t\t\treturn detail::functor1<vec, L, int, T, Q>::call(compute_findMSB_64, x);\n\t\t\t}\n\t\t};\n#\t\tendif\n#\tendif//GLM_HAS_BITSCAN_WINDOWS\n}//namespace detail\n\n\t// uaddCarry\n\tGLM_FUNC_QUALIFIER uint uaddCarry(uint const& x, uint const& y, uint & Carry)\n\t{\n\t\tdetail::uint64 const Value64(static_cast<detail::uint64>(x) + static_cast<detail::uint64>(y));\n\t\tdetail::uint64 const Max32((static_cast<detail::uint64>(1) << static_cast<detail::uint64>(32)) - static_cast<detail::uint64>(1));\n\t\tCarry = Value64 > Max32 ? 1u : 0u;\n\t\treturn static_cast<uint>(Value64 % (Max32 + static_cast<detail::uint64>(1)));\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uint, Q> uaddCarry(vec<L, uint, Q> const& x, vec<L, uint, Q> const& y, vec<L, uint, Q>& Carry)\n\t{\n\t\tvec<L, detail::uint64, Q> Value64(vec<L, detail::uint64, Q>(x) + vec<L, detail::uint64, Q>(y));\n\t\tvec<L, detail::uint64, Q> Max32((static_cast<detail::uint64>(1) << static_cast<detail::uint64>(32)) - static_cast<detail::uint64>(1));\n\t\tCarry = mix(vec<L, uint, Q>(0), vec<L, uint, Q>(1), greaterThan(Value64, Max32));\n\t\treturn vec<L, uint, Q>(Value64 % (Max32 + static_cast<detail::uint64>(1)));\n\t}\n\n\t// usubBorrow\n\tGLM_FUNC_QUALIFIER uint usubBorrow(uint const& x, uint const& y, uint & Borrow)\n\t{\n\t\tBorrow = x >= y ? static_cast<uint>(0) : static_cast<uint>(1);\n\t\tif(y >= x)\n\t\t\treturn y - x;\n\t\telse\n\t\t\treturn static_cast<uint>((static_cast<detail::int64>(1) << static_cast<detail::int64>(32)) + (static_cast<detail::int64>(y) - static_cast<detail::int64>(x)));\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uint, Q> usubBorrow(vec<L, uint, Q> const& x, vec<L, uint, Q> const& y, vec<L, uint, Q>& Borrow)\n\t{\n\t\tBorrow = mix(vec<L, uint, Q>(1), vec<L, uint, Q>(0), greaterThanEqual(x, y));\n\t\tvec<L, uint, Q> const YgeX(y - x);\n\t\tvec<L, uint, Q> const XgeY(vec<L, uint, Q>((static_cast<detail::int64>(1) << static_cast<detail::int64>(32)) + (vec<L, detail::int64, Q>(y) - vec<L, detail::int64, Q>(x))));\n\t\treturn mix(XgeY, YgeX, greaterThanEqual(y, x));\n\t}\n\n\t// umulExtended\n\tGLM_FUNC_QUALIFIER void umulExtended(uint const& x, uint const& y, uint & msb, uint & lsb)\n\t{\n\t\tdetail::uint64 Value64 = static_cast<detail::uint64>(x) * static_cast<detail::uint64>(y);\n\t\tmsb = static_cast<uint>(Value64 >> static_cast<detail::uint64>(32));\n\t\tlsb = static_cast<uint>(Value64);\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER void umulExtended(vec<L, uint, Q> const& x, vec<L, uint, Q> const& y, vec<L, uint, Q>& msb, vec<L, uint, Q>& lsb)\n\t{\n\t\tvec<L, detail::uint64, Q> Value64(vec<L, detail::uint64, Q>(x) * vec<L, detail::uint64, Q>(y));\n\t\tmsb = vec<L, uint, Q>(Value64 >> static_cast<detail::uint64>(32));\n\t\tlsb = vec<L, uint, Q>(Value64);\n\t}\n\n\t// imulExtended\n\tGLM_FUNC_QUALIFIER void imulExtended(int x, int y, int& msb, int& lsb)\n\t{\n\t\tdetail::int64 Value64 = static_cast<detail::int64>(x) * static_cast<detail::int64>(y);\n\t\tmsb = static_cast<int>(Value64 >> static_cast<detail::int64>(32));\n\t\tlsb = static_cast<int>(Value64);\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER void imulExtended(vec<L, int, Q> const& x, vec<L, int, Q> const& y, vec<L, int, Q>& msb, vec<L, int, Q>& lsb)\n\t{\n\t\tvec<L, detail::int64, Q> Value64(vec<L, detail::int64, Q>(x) * vec<L, detail::int64, Q>(y));\n\t\tlsb = vec<L, int, Q>(Value64 & static_cast<detail::int64>(0xFFFFFFFF));\n\t\tmsb = vec<L, int, Q>((Value64 >> static_cast<detail::int64>(32)) & static_cast<detail::int64>(0xFFFFFFFF));\n\t}\n\n\t// bitfieldExtract\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType bitfieldExtract(genIUType Value, int Offset, int Bits)\n\t{\n\t\treturn bitfieldExtract(vec<1, genIUType>(Value), Offset, Bits).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldExtract(vec<L, T, Q> const& Value, int Offset, int Bits)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitfieldExtract' only accept integer inputs\");\n\n\t\treturn (Value >> static_cast<T>(Offset)) & static_cast<T>(detail::mask(Bits));\n\t}\n\n\t// bitfieldInsert\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType bitfieldInsert(genIUType const& Base, genIUType const& Insert, int Offset, int Bits)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'bitfieldInsert' only accept integer values\");\n\n\t\treturn bitfieldInsert(vec<1, genIUType>(Base), vec<1, genIUType>(Insert), Offset, Bits).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldInsert(vec<L, T, Q> const& Base, vec<L, T, Q> const& Insert, int Offset, int Bits)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitfieldInsert' only accept integer values\");\n\n\t\tT const Mask = static_cast<T>(detail::mask(Bits) << Offset);\n\t\treturn (Base & ~Mask) | ((Insert << static_cast<T>(Offset)) & Mask);\n\t}\n\n\t// bitfieldReverse\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType bitfieldReverse(genIUType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'bitfieldReverse' only accept integer values\");\n\n\t\treturn bitfieldReverse(glm::vec<1, genIUType, glm::defaultp>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldReverse(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitfieldReverse' only accept integer values\");\n\n\t\tvec<L, T, Q> x(v);\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  2>::call(x, static_cast<T>(0x5555555555555555ull), static_cast<T>( 1));\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  4>::call(x, static_cast<T>(0x3333333333333333ull), static_cast<T>( 2));\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  8>::call(x, static_cast<T>(0x0F0F0F0F0F0F0F0Full), static_cast<T>( 4));\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 16>::call(x, static_cast<T>(0x00FF00FF00FF00FFull), static_cast<T>( 8));\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 32>::call(x, static_cast<T>(0x0000FFFF0000FFFFull), static_cast<T>(16));\n\t\tx = detail::compute_bitfieldReverseStep<L, T, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 64>::call(x, static_cast<T>(0x00000000FFFFFFFFull), static_cast<T>(32));\n\t\treturn x;\n\t}\n\n\t// bitCount\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER int bitCount(genIUType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'bitCount' only accept integer values\");\n\n\t\treturn bitCount(glm::vec<1, genIUType, glm::defaultp>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> bitCount(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitCount' only accept integer values\");\n\n#\t\tif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\tpragma warning(push)\n#\t\t\tpragma warning(disable : 4310) //cast truncates constant value\n#\t\tendif\n\n\t\tvec<L, typename detail::make_unsigned<T>::type, Q> x(*reinterpret_cast<vec<L, typename detail::make_unsigned<T>::type, Q> const *>(&v));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  2>::call(x, typename detail::make_unsigned<T>::type(0x5555555555555555ull), typename detail::make_unsigned<T>::type( 1));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  4>::call(x, typename detail::make_unsigned<T>::type(0x3333333333333333ull), typename detail::make_unsigned<T>::type( 2));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>=  8>::call(x, typename detail::make_unsigned<T>::type(0x0F0F0F0F0F0F0F0Full), typename detail::make_unsigned<T>::type( 4));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 16>::call(x, typename detail::make_unsigned<T>::type(0x00FF00FF00FF00FFull), typename detail::make_unsigned<T>::type( 8));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 32>::call(x, typename detail::make_unsigned<T>::type(0x0000FFFF0000FFFFull), typename detail::make_unsigned<T>::type(16));\n\t\tx = detail::compute_bitfieldBitCountStep<L, typename detail::make_unsigned<T>::type, Q, detail::is_aligned<Q>::value, sizeof(T) * 8>= 64>::call(x, typename detail::make_unsigned<T>::type(0x00000000FFFFFFFFull), typename detail::make_unsigned<T>::type(32));\n\t\treturn vec<L, int, Q>(x);\n\n#\t\tif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\tpragma warning(pop)\n#\t\tendif\n\t}\n\n\t// findLSB\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER int findLSB(genIUType Value)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'findLSB' only accept integer values\");\n\n\t\treturn detail::compute_findLSB<genIUType, sizeof(genIUType) * 8>::call(Value);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> findLSB(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'findLSB' only accept integer values\");\n\n\t\treturn detail::functor1<vec, L, int, T, Q>::call(findLSB, x);\n\t}\n\n\t// findMSB\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER int findMSB(genIUType v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'findMSB' only accept integer values\");\n\n\t\treturn findMSB(vec<1, genIUType>(v)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> findMSB(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'findMSB' only accept integer values\");\n\n\t\treturn detail::compute_findMSB_vec<L, T, Q, sizeof(T) * 8>::call(v);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_integer_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/func_integer_simd.inl",
    "content": "#include \"../simd/integer.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_bitfieldReverseStep<4, uint, Q, true, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint, Q> call(vec<4, uint, Q> const& v, uint Mask, uint Shift)\n\t\t{\n\t\t\t__m128i const set0 = v.data;\n\n\t\t\t__m128i const set1 = _mm_set1_epi32(static_cast<int>(Mask));\n\t\t\t__m128i const and1 = _mm_and_si128(set0, set1);\n\t\t\t__m128i const sft1 = _mm_slli_epi32(and1, Shift);\n\n\t\t\t__m128i const set2 = _mm_andnot_si128(set0, _mm_set1_epi32(-1));\n\t\t\t__m128i const and2 = _mm_and_si128(set0, set2);\n\t\t\t__m128i const sft2 = _mm_srai_epi32(and2, Shift);\n\n\t\t\t__m128i const or0 = _mm_or_si128(sft1, sft2);\n\n\t\t\treturn or0;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_bitfieldBitCountStep<4, uint, Q, true, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint, Q> call(vec<4, uint, Q> const& v, uint Mask, uint Shift)\n\t\t{\n\t\t\t__m128i const set0 = v.data;\n\n\t\t\t__m128i const set1 = _mm_set1_epi32(static_cast<int>(Mask));\n\t\t\t__m128i const and0 = _mm_and_si128(set0, set1);\n\t\t\t__m128i const sft0 = _mm_slli_epi32(set0, Shift);\n\t\t\t__m128i const and1 = _mm_and_si128(sft0, set1);\n\t\t\t__m128i const add0 = _mm_add_epi32(and0, and1);\n\n\t\t\treturn add0;\n\t\t}\n\t};\n}//namespace detail\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER int bitCount(uint x)\n\t{\n\t\treturn _mm_popcnt_u32(x);\n\t}\n\n#\tif(GLM_MODEL == GLM_MODEL_64)\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER int bitCount(detail::uint64 x)\n\t{\n\t\treturn static_cast<int>(_mm_popcnt_u64(x));\n\t}\n#\tendif//GLM_MODEL\n#\tendif//GLM_ARCH\n\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/detail/func_matrix.inl",
    "content": "#include \"../geometric.hpp\"\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, bool Aligned>\n\tstruct compute_matrixCompMult\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<C, R, T, Q> call(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y)\n\t\t{\n\t\t\tmat<C, R, T, Q> Result;\n\t\t\tfor(length_t i = 0; i < Result.length(); ++i)\n\t\t\t\tResult[i] = x[i] * y[i];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose{};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<2, 2, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<2, 2, T, Q> call(mat<2, 2, T, Q> const& m)\n\t\t{\n\t\t\tmat<2, 2, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<2, 3, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<3, 2, T, Q> call(mat<2, 3, T, Q> const& m)\n\t\t{\n\t\t\tmat<3,2, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<2, 4, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 2, T, Q> call(mat<2, 4, T, Q> const& m)\n\t\t{\n\t\t\tmat<4, 2, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\tResult[3][0] = m[0][3];\n\t\t\tResult[3][1] = m[1][3];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<3, 2, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<2, 3, T, Q> call(mat<3, 2, T, Q> const& m)\n\t\t{\n\t\t\tmat<2, 3, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<3, 3, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<3, 3, T, Q> call(mat<3, 3, T, Q> const& m)\n\t\t{\n\t\t\tmat<3, 3, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\tResult[2][2] = m[2][2];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<3, 4, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 3, T, Q> call(mat<3, 4, T, Q> const& m)\n\t\t{\n\t\t\tmat<4, 3, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\tResult[2][2] = m[2][2];\n\t\t\tResult[3][0] = m[0][3];\n\t\t\tResult[3][1] = m[1][3];\n\t\t\tResult[3][2] = m[2][3];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<4, 2, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<2, 4, T, Q> call(mat<4, 2, T, Q> const& m)\n\t\t{\n\t\t\tmat<2, 4, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\t\t\tResult[0][3] = m[3][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\t\t\tResult[1][3] = m[3][1];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<4, 3, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<3, 4, T, Q> call(mat<4, 3, T, Q> const& m)\n\t\t{\n\t\t\tmat<3, 4, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\t\t\tResult[0][3] = m[3][0];\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\t\t\tResult[1][3] = m[3][1];\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\tResult[2][2] = m[2][2];\n\t\t\tResult[2][3] = m[3][2];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_transpose<4, 4, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, T, Q> call(mat<4, 4, T, Q> const& m)\n\t\t{\n\t\t\tmat<4, 4, T, Q> Result;\n\t\t\tResult[0][0] = m[0][0];\n\t\t\tResult[0][1] = m[1][0];\n\t\t\tResult[0][2] = m[2][0];\n\t\t\tResult[0][3] = m[3][0];\n\n\t\t\tResult[1][0] = m[0][1];\n\t\t\tResult[1][1] = m[1][1];\n\t\t\tResult[1][2] = m[2][1];\n\t\t\tResult[1][3] = m[3][1];\n\n\t\t\tResult[2][0] = m[0][2];\n\t\t\tResult[2][1] = m[1][2];\n\t\t\tResult[2][2] = m[2][2];\n\t\t\tResult[2][3] = m[3][2];\n\n\t\t\tResult[3][0] = m[0][3];\n\t\t\tResult[3][1] = m[1][3];\n\t\t\tResult[3][2] = m[2][3];\n\t\t\tResult[3][3] = m[3][3];\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, bool Aligned>\n\tstruct compute_determinant{};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_determinant<2, 2, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(mat<2, 2, T, Q> const& m)\n\t\t{\n\t\t\treturn m[0][0] * m[1][1] - m[1][0] * m[0][1];\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_determinant<3, 3, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(mat<3, 3, T, Q> const& m)\n\t\t{\n\t\t\treturn\n\t\t\t\t+ m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])\n\t\t\t\t- m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])\n\t\t\t\t+ m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_determinant<4, 4, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(mat<4, 4, T, Q> const& m)\n\t\t{\n\t\t\tT SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t\tT SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t\tT SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t\tT SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t\tT SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t\tT SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\n\t\t\tvec<4, T, Q> DetCof(\n\t\t\t\t+ (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02),\n\t\t\t\t- (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04),\n\t\t\t\t+ (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05),\n\t\t\t\t- (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05));\n\n\t\t\treturn\n\t\t\t\tm[0][0] * DetCof[0] + m[0][1] * DetCof[1] +\n\t\t\t\tm[0][2] * DetCof[2] + m[0][3] * DetCof[3];\n\t\t}\n\t};\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, bool Aligned>\n\tstruct compute_inverse{};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_inverse<2, 2, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<2, 2, T, Q> call(mat<2, 2, T, Q> const& m)\n\t\t{\n\t\t\tT OneOverDeterminant = static_cast<T>(1) / (\n\t\t\t\t+ m[0][0] * m[1][1]\n\t\t\t\t- m[1][0] * m[0][1]);\n\n\t\t\tmat<2, 2, T, Q> Inverse(\n\t\t\t\t+ m[1][1] * OneOverDeterminant,\n\t\t\t\t- m[0][1] * OneOverDeterminant,\n\t\t\t\t- m[1][0] * OneOverDeterminant,\n\t\t\t\t+ m[0][0] * OneOverDeterminant);\n\n\t\t\treturn Inverse;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_inverse<3, 3, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<3, 3, T, Q> call(mat<3, 3, T, Q> const& m)\n\t\t{\n\t\t\tT OneOverDeterminant = static_cast<T>(1) / (\n\t\t\t\t+ m[0][0] * (m[1][1] * m[2][2] - m[2][1] * m[1][2])\n\t\t\t\t- m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])\n\t\t\t\t+ m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]));\n\n\t\t\tmat<3, 3, T, Q> Inverse;\n\t\t\tInverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * OneOverDeterminant;\n\t\t\tInverse[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]) * OneOverDeterminant;\n\t\t\tInverse[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * OneOverDeterminant;\n\t\t\tInverse[0][1] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]) * OneOverDeterminant;\n\t\t\tInverse[1][1] = + (m[0][0] * m[2][2] - m[2][0] * m[0][2]) * OneOverDeterminant;\n\t\t\tInverse[2][1] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]) * OneOverDeterminant;\n\t\t\tInverse[0][2] = + (m[0][1] * m[1][2] - m[1][1] * m[0][2]) * OneOverDeterminant;\n\t\t\tInverse[1][2] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]) * OneOverDeterminant;\n\t\t\tInverse[2][2] = + (m[0][0] * m[1][1] - m[1][0] * m[0][1]) * OneOverDeterminant;\n\n\t\t\treturn Inverse;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_inverse<4, 4, T, Q, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, T, Q> call(mat<4, 4, T, Q> const& m)\n\t\t{\n\t\t\tT Coef00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t\tT Coef02 = m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\t\tT Coef03 = m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\n\t\t\tT Coef04 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t\tT Coef06 = m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\t\tT Coef07 = m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\n\t\t\tT Coef08 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t\tT Coef10 = m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\t\tT Coef11 = m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\n\t\t\tT Coef12 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t\tT Coef14 = m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\t\tT Coef15 = m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\n\t\t\tT Coef16 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t\tT Coef18 = m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\t\tT Coef19 = m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\n\t\t\tT Coef20 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t\tT Coef22 = m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\t\tT Coef23 = m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\t\tvec<4, T, Q> Fac0(Coef00, Coef00, Coef02, Coef03);\n\t\t\tvec<4, T, Q> Fac1(Coef04, Coef04, Coef06, Coef07);\n\t\t\tvec<4, T, Q> Fac2(Coef08, Coef08, Coef10, Coef11);\n\t\t\tvec<4, T, Q> Fac3(Coef12, Coef12, Coef14, Coef15);\n\t\t\tvec<4, T, Q> Fac4(Coef16, Coef16, Coef18, Coef19);\n\t\t\tvec<4, T, Q> Fac5(Coef20, Coef20, Coef22, Coef23);\n\n\t\t\tvec<4, T, Q> Vec0(m[1][0], m[0][0], m[0][0], m[0][0]);\n\t\t\tvec<4, T, Q> Vec1(m[1][1], m[0][1], m[0][1], m[0][1]);\n\t\t\tvec<4, T, Q> Vec2(m[1][2], m[0][2], m[0][2], m[0][2]);\n\t\t\tvec<4, T, Q> Vec3(m[1][3], m[0][3], m[0][3], m[0][3]);\n\n\t\t\tvec<4, T, Q> Inv0(Vec1 * Fac0 - Vec2 * Fac1 + Vec3 * Fac2);\n\t\t\tvec<4, T, Q> Inv1(Vec0 * Fac0 - Vec2 * Fac3 + Vec3 * Fac4);\n\t\t\tvec<4, T, Q> Inv2(Vec0 * Fac1 - Vec1 * Fac3 + Vec3 * Fac5);\n\t\t\tvec<4, T, Q> Inv3(Vec0 * Fac2 - Vec1 * Fac4 + Vec2 * Fac5);\n\n\t\t\tvec<4, T, Q> SignA(+1, -1, +1, -1);\n\t\t\tvec<4, T, Q> SignB(-1, +1, -1, +1);\n\t\t\tmat<4, 4, T, Q> Inverse(Inv0 * SignA, Inv1 * SignB, Inv2 * SignA, Inv3 * SignB);\n\n\t\t\tvec<4, T, Q> Row0(Inverse[0][0], Inverse[1][0], Inverse[2][0], Inverse[3][0]);\n\n\t\t\tvec<4, T, Q> Dot0(m[0] * Row0);\n\t\t\tT Dot1 = (Dot0.x + Dot0.y) + (Dot0.z + Dot0.w);\n\n\t\t\tT OneOverDeterminant = static_cast<T>(1) / Dot1;\n\n\t\t\treturn Inverse * OneOverDeterminant;\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> matrixCompMult(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'matrixCompMult' only accept floating-point inputs\");\n\t\treturn detail::compute_matrixCompMult<C, R, T, Q, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n\n\ttemplate<length_t DA, length_t DB, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename detail::outerProduct_trait<DA, DB, T, Q>::type outerProduct(vec<DA, T, Q> const& c, vec<DB, T, Q> const& r)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'outerProduct' only accept floating-point inputs\");\n\n\t\ttypename detail::outerProduct_trait<DA, DB, T, Q>::type m;\n\t\tfor(length_t i = 0; i < m.length(); ++i)\n\t\t\tm[i] = c * r[i];\n\t\treturn m;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<C, R, T, Q>::transpose_type transpose(mat<C, R, T, Q> const& m)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'transpose' only accept floating-point inputs\");\n\t\treturn detail::compute_transpose<C, R, T, Q, detail::is_aligned<Q>::value>::call(m);\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T determinant(mat<C, R, T, Q> const& m)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'determinant' only accept floating-point inputs\");\n\t\treturn detail::compute_determinant<C, R, T, Q, detail::is_aligned<Q>::value>::call(m);\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> inverse(mat<C, R, T, Q> const& m)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"'inverse' only accept floating-point inputs\");\n\t\treturn detail::compute_inverse<C, R, T, Q, detail::is_aligned<Q>::value>::call(m);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_matrix_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/func_matrix_simd.inl",
    "content": "#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#include \"type_mat4x4.hpp\"\n#include \"../geometric.hpp\"\n#include \"../simd/matrix.h\"\n#include <cstring>\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n\ttemplate<qualifier Q>\n\tstruct compute_matrixCompMult<4, 4, float, Q, true>\n\t{\n\t\tGLM_STATIC_ASSERT(detail::is_aligned<Q>::value, \"Specialization requires aligned\");\n\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, float, Q> call(mat<4, 4, float, Q> const& x, mat<4, 4, float, Q> const& y)\n\t\t{\n\t\t\tmat<4, 4, float, Q> Result;\n\t\t\tglm_mat4_matrixCompMult(\n\t\t\t\t*static_cast<glm_vec4 const (*)[4]>(&x[0].data),\n\t\t\t\t*static_cast<glm_vec4 const (*)[4]>(&y[0].data),\n\t\t\t\t*static_cast<glm_vec4(*)[4]>(&Result[0].data));\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_transpose<4, 4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, float, Q> call(mat<4, 4, float, Q> const& m)\n\t\t{\n\t\t\tmat<4, 4, float, Q> Result;\n\t\t\tglm_mat4_transpose(&m[0].data, &Result[0].data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_determinant<4, 4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static float call(mat<4, 4, float, Q> const& m)\n\t\t{\n\t\t\treturn _mm_cvtss_f32(glm_mat4_determinant(&m[0].data));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_inverse<4, 4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, float, Q> call(mat<4, 4, float, Q> const& m)\n\t\t{\n\t\t\tmat<4, 4, float, Q> Result;\n\t\t\tglm_mat4_inverse(&m[0].data, &Result[0].data);\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n\n#\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER mat<4, 4, float, aligned_lowp> outerProduct<4, 4, float, aligned_lowp>(vec<4, float, aligned_lowp> const& c, vec<4, float, aligned_lowp> const& r)\n\t{\n\t\t__m128 NativeResult[4];\n\t\tglm_mat4_outerProduct(c.data, r.data, NativeResult);\n\t\tmat<4, 4, float, aligned_lowp> Result;\n\t\tstd::memcpy(&Result[0], &NativeResult[0], sizeof(Result));\n\t\treturn Result;\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER mat<4, 4, float, aligned_mediump> outerProduct<4, 4, float, aligned_mediump>(vec<4, float, aligned_mediump> const& c, vec<4, float, aligned_mediump> const& r)\n\t{\n\t\t__m128 NativeResult[4];\n\t\tglm_mat4_outerProduct(c.data, r.data, NativeResult);\n\t\tmat<4, 4, float, aligned_mediump> Result;\n\t\tstd::memcpy(&Result[0], &NativeResult[0], sizeof(Result));\n\t\treturn Result;\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER mat<4, 4, float, aligned_highp> outerProduct<4, 4, float, aligned_highp>(vec<4, float, aligned_highp> const& c, vec<4, float, aligned_highp> const& r)\n\t{\n\t\t__m128 NativeResult[4];\n\t\tglm_mat4_outerProduct(c.data, r.data, NativeResult);\n\t\tmat<4, 4, float, aligned_highp> Result;\n\t\tstd::memcpy(&Result[0], &NativeResult[0], sizeof(Result));\n\t\treturn Result;\n\t}\n#\tendif\n}//namespace glm\n\n#elif GLM_ARCH & GLM_ARCH_NEON_BIT\n\nnamespace glm {\n#if GLM_LANG & GLM_LANG_CXX11_FLAG\n\ttemplate <qualifier Q>\n\tGLM_FUNC_QUALIFIER\n\ttypename std::enable_if<detail::is_aligned<Q>::value, mat<4, 4, float, Q>>::type\n\toperator*(mat<4, 4, float, Q> const & m1, mat<4, 4, float, Q> const & m2)\n\t{\n\t\tauto MulRow = [&](int l) {\n\t\t\tfloat32x4_t const SrcA = m2[l].data;\n\n\t\t\tfloat32x4_t r = neon::mul_lane(m1[0].data, SrcA, 0);\n\t\t\tr = neon::madd_lane(r, m1[1].data, SrcA, 1);\n\t\t\tr = neon::madd_lane(r, m1[2].data, SrcA, 2);\n\t\t\tr = neon::madd_lane(r, m1[3].data, SrcA, 3);\n\n\t\t\treturn r;\n\t\t};\n\n\t\tmat<4, 4, float, aligned_highp> Result;\n\t\tResult[0].data = MulRow(0);\n\t\tResult[1].data = MulRow(1);\n\t\tResult[2].data = MulRow(2);\n\t\tResult[3].data = MulRow(3);\n\n\t\treturn Result;\n\t}\n#endif // CXX11\n\n\ttemplate<qualifier Q>\n\tstruct detail::compute_inverse<4, 4, float, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static mat<4, 4, float, Q> call(mat<4, 4, float, Q> const& m)\n\t\t{\n\t\t\tfloat32x4_t const& m0 = m[0].data;\n\t\t\tfloat32x4_t const& m1 = m[1].data;\n\t\t\tfloat32x4_t const& m2 = m[2].data;\n\t\t\tfloat32x4_t const& m3 = m[3].data;\n\n\t\t\t// m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t\t// m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t\t// m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\t\t// m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\n\t\t\tfloat32x4_t Fac0;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 2), neon::dup_lane(m1, 2));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 3), 3, m2, 3);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 2), 3, m2, 2);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 3), neon::dup_lane(m1, 3));\n\t\t\t\tFac0 = w0 * w1 -  w2 * w3;\n\t\t\t}\n\n\t\t\t// m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t\t// m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t\t// m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\t\t// m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\n\t\t\tfloat32x4_t Fac1;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 1), neon::dup_lane(m1, 1));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 3), 3, m2, 3);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 1), 3, m2, 1);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 3), neon::dup_lane(m1, 3));\n\t\t\t\tFac1 = w0 * w1 - w2 * w3;\n\t\t\t}\n\n\t\t\t// m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t\t// m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t\t// m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\t\t// m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\n\t\t\tfloat32x4_t Fac2;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 1), neon::dup_lane(m1, 1));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 2), 3, m2, 2);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 1), 3, m2, 1);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 2), neon::dup_lane(m1, 2));\n\t\t\t\tFac2 = w0 * w1 - w2 * w3;\n\t\t\t}\n\n\t\t\t// m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t\t// m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t\t// m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\t\t// m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\n\t\t\tfloat32x4_t Fac3;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 0), neon::dup_lane(m1, 0));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 3), 3, m2, 3);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 0), 3, m2, 0);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 3), neon::dup_lane(m1, 3));\n\t\t\t\tFac3 = w0 * w1 - w2 * w3;\n\t\t\t}\n\n\t\t\t// m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t\t// m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t\t// m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\t\t// m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\n\t\t\tfloat32x4_t Fac4;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 0), neon::dup_lane(m1, 0));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 2), 3, m2, 2);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 0), 3, m2, 0);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 2), neon::dup_lane(m1, 2));\n\t\t\t\tFac4 = w0 * w1 - w2 * w3;\n\t\t\t}\n\n\t\t\t// m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t\t// m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t\t// m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\t\t// m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\t\tfloat32x4_t Fac5;\n\t\t\t{\n\t\t\t\tfloat32x4_t w0 = vcombine_f32(neon::dup_lane(m2, 0), neon::dup_lane(m1, 0));\n\t\t\t\tfloat32x4_t w1 = neon::copy_lane(neon::dupq_lane(m3, 1), 3, m2, 1);\n\t\t\t\tfloat32x4_t w2 = neon::copy_lane(neon::dupq_lane(m3, 0), 3, m2, 0);\n\t\t\t\tfloat32x4_t w3 = vcombine_f32(neon::dup_lane(m2, 1), neon::dup_lane(m1, 1));\n\t\t\t\tFac5 = w0 * w1 - w2 * w3;\n\t\t\t}\n\n\t\t\tfloat32x4_t Vec0 = neon::copy_lane(neon::dupq_lane(m0, 0), 0, m1, 0); // (m[1][0], m[0][0], m[0][0], m[0][0]);\n\t\t\tfloat32x4_t Vec1 = neon::copy_lane(neon::dupq_lane(m0, 1), 0, m1, 1); // (m[1][1], m[0][1], m[0][1], m[0][1]);\n\t\t\tfloat32x4_t Vec2 = neon::copy_lane(neon::dupq_lane(m0, 2), 0, m1, 2); // (m[1][2], m[0][2], m[0][2], m[0][2]);\n\t\t\tfloat32x4_t Vec3 = neon::copy_lane(neon::dupq_lane(m0, 3), 0, m1, 3); // (m[1][3], m[0][3], m[0][3], m[0][3]);\n\n\t\t\tfloat32x4_t Inv0 = Vec1 * Fac0 - Vec2 * Fac1 + Vec3 * Fac2;\n\t\t\tfloat32x4_t Inv1 = Vec0 * Fac0 - Vec2 * Fac3 + Vec3 * Fac4;\n\t\t\tfloat32x4_t Inv2 = Vec0 * Fac1 - Vec1 * Fac3 + Vec3 * Fac5;\n\t\t\tfloat32x4_t Inv3 = Vec0 * Fac2 - Vec1 * Fac4 + Vec2 * Fac5;\n\n\t\t\tfloat32x4_t r0 = float32x4_t{-1, +1, -1, +1} * Inv0;\n\t\t\tfloat32x4_t r1 = float32x4_t{+1, -1, +1, -1} * Inv1;\n\t\t\tfloat32x4_t r2 = float32x4_t{-1, +1, -1, +1} * Inv2;\n\t\t\tfloat32x4_t r3 = float32x4_t{+1, -1, +1, -1} * Inv3;\n\n\t\t\tfloat32x4_t det = neon::mul_lane(r0, m0, 0);\n\t\t\tdet = neon::madd_lane(det, r1, m0, 1);\n\t\t\tdet = neon::madd_lane(det, r2, m0, 2);\n\t\t\tdet = neon::madd_lane(det, r3, m0, 3);\n\n\t\t\tfloat32x4_t rdet = vdupq_n_f32(1 / vgetq_lane_f32(det, 0));\n\n\t\t\tmat<4, 4, float, Q> r;\n\t\t\tr[0].data = vmulq_f32(r0, rdet);\n\t\t\tr[1].data = vmulq_f32(r1, rdet);\n\t\t\tr[2].data = vmulq_f32(r2, rdet);\n\t\t\tr[3].data = vmulq_f32(r3, rdet);\n\t\t\treturn r;\n\t\t}\n\t};\n}//namespace glm\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/func_packing.inl",
    "content": "/// @ref core\n/// @file glm/detail/func_packing.inl\n\n#include \"../common.hpp\"\n#include \"type_half.hpp\"\n\nnamespace glm\n{\n\tGLM_FUNC_QUALIFIER uint packUnorm2x16(vec2 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tunsigned short in[2];\n\t\t\tuint out;\n\t\t} u;\n\n\t\tvec<2, unsigned short, defaultp> result(round(clamp(v, 0.0f, 1.0f) * 65535.0f));\n\n\t\tu.in[0] = result[0];\n\t\tu.in[1] = result[1];\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackUnorm2x16(uint p)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tunsigned short out[2];\n\t\t} u;\n\n\t\tu.in = p;\n\n\t\treturn vec2(u.out[0], u.out[1]) * 1.5259021896696421759365224689097e-5f;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint packSnorm2x16(vec2 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tsigned short in[2];\n\t\t\tuint out;\n\t\t} u;\n \n\t\tvec<2, short, defaultp> result(round(clamp(v, -1.0f, 1.0f) * 32767.0f));\n\n\t\tu.in[0] = result[0];\n\t\tu.in[1] = result[1];\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackSnorm2x16(uint p)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tsigned short out[2];\n\t\t} u;\n\n\t\tu.in = p;\n\n\t\treturn clamp(vec2(u.out[0], u.out[1]) * 3.0518509475997192297128208258309e-5f, -1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint packUnorm4x8(vec4 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tunsigned char in[4];\n\t\t\tuint out;\n\t\t} u;\n\n\t\tvec<4, unsigned char, defaultp> result(round(clamp(v, 0.0f, 1.0f) * 255.0f));\n\n\t\tu.in[0] = result[0];\n\t\tu.in[1] = result[1];\n\t\tu.in[2] = result[2];\n\t\tu.in[3] = result[3];\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackUnorm4x8(uint p)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tunsigned char out[4];\n\t\t} u;\n\n\t\tu.in = p;\n\n\t\treturn vec4(u.out[0], u.out[1], u.out[2], u.out[3]) * 0.0039215686274509803921568627451f;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint packSnorm4x8(vec4 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tsigned char in[4];\n\t\t\tuint out;\n\t\t} u;\n\n\t\tvec<4, signed char, defaultp> result(round(clamp(v, -1.0f, 1.0f) * 127.0f));\n\n\t\tu.in[0] = result[0];\n\t\tu.in[1] = result[1];\n\t\tu.in[2] = result[2];\n\t\tu.in[3] = result[3];\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::vec4 unpackSnorm4x8(uint p)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tsigned char out[4];\n\t\t} u;\n\n\t\tu.in = p;\n\n\t\treturn clamp(vec4(u.out[0], u.out[1], u.out[2], u.out[3]) * 0.0078740157480315f, -1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER double packDouble2x32(uvec2 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint   in[2];\n\t\t\tdouble out;\n\t\t} u;\n\n\t\tu.in[0] = v[0];\n\t\tu.in[1] = v[1];\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER uvec2 unpackDouble2x32(double v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tdouble in;\n\t\t\tuint   out[2];\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn uvec2(u.out[0], u.out[1]);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint packHalf2x16(vec2 const& v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tsigned short in[2];\n\t\t\tuint out;\n\t\t} u;\n\n\t\tu.in[0] = detail::toFloat16(v.x);\n\t\tu.in[1] = detail::toFloat16(v.y);\n\n\t\treturn u.out;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackHalf2x16(uint v)\n\t{\n\t\tunion\n\t\t{\n\t\t\tuint in;\n\t\t\tsigned short out[2];\n\t\t} u;\n\n\t\tu.in = v;\n\n\t\treturn vec2(\n\t\t\tdetail::toFloat32(u.out[0]),\n\t\t\tdetail::toFloat32(u.out[1]));\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_packing_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/func_packing_simd.inl",
    "content": "namespace glm{\nnamespace detail\n{\n\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/func_trigonometric.inl",
    "content": "#include \"_vectorize.hpp\"\n#include <cmath>\n#include <limits>\n\nnamespace glm\n{\n\t// radians\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType radians(genType degrees)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'radians' only accept floating-point input\");\n\n\t\treturn degrees * static_cast<genType>(0.01745329251994329576923690768489);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> radians(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(radians, v);\n\t}\n\n\t// degrees\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType degrees(genType radians)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'degrees' only accept floating-point input\");\n\n\t\treturn radians * static_cast<genType>(57.295779513082320876798154814105);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> degrees(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(degrees, v);\n\t}\n\n\t// sin\n\tusing ::std::sin;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sin(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(sin, v);\n\t}\n\n\t// cos\n\tusing std::cos;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> cos(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(cos, v);\n\t}\n\n\t// tan\n\tusing std::tan;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> tan(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(tan, v);\n\t}\n\n\t// asin\n\tusing std::asin;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> asin(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(asin, v);\n\t}\n\n\t// acos\n\tusing std::acos;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acos(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acos, v);\n\t}\n\n\t// atan\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType atan(genType y, genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'atan' only accept floating-point input\");\n\n\t\treturn ::std::atan2(y, x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> atan(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(::std::atan2, a, b);\n\t}\n\n\tusing std::atan;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> atan(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(atan, v);\n\t}\n\n\t// sinh\n\tusing std::sinh;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sinh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(sinh, v);\n\t}\n\n\t// cosh\n\tusing std::cosh;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> cosh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(cosh, v);\n\t}\n\n\t// tanh\n\tusing std::tanh;\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> tanh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(tanh, v);\n\t}\n\n\t// asinh\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::asinh;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType asinh(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'asinh' only accept floating-point input\");\n\n\t\t\treturn (x < static_cast<genType>(0) ? static_cast<genType>(-1) : (x > static_cast<genType>(0) ? static_cast<genType>(1) : static_cast<genType>(0))) * log(std::abs(x) + sqrt(static_cast<genType>(1) + x * x));\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> asinh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(asinh, v);\n\t}\n\n\t// acosh\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::acosh;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType acosh(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'acosh' only accept floating-point input\");\n\n\t\t\tif(x < static_cast<genType>(1))\n\t\t\t\treturn static_cast<genType>(0);\n\t\t\treturn log(x + sqrt(x * x - static_cast<genType>(1)));\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acosh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acosh, v);\n\t}\n\n\t// atanh\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::atanh;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType atanh(genType x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'atanh' only accept floating-point input\");\n\n\t\t\tif(std::abs(x) >= static_cast<genType>(1))\n\t\t\t\treturn 0;\n\t\t\treturn static_cast<genType>(0.5) * log((static_cast<genType>(1) + x) / (static_cast<genType>(1) - x));\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> atanh(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(atanh, v);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_trigonometric_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/func_trigonometric_simd.inl",
    "content": ""
  },
  {
    "path": "libraries/glm/detail/func_vector_relational.inl",
    "content": "namespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> lessThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] < y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> lessThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] <= y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> greaterThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] > y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> greaterThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] >= y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] == y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = x[i] != y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool any(vec<L, bool, Q> const& v)\n\t{\n\t\tbool Result = false;\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult = Result || v[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool all(vec<L, bool, Q> const& v)\n\t{\n\t\tbool Result = true;\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult = Result && v[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> not_(vec<L, bool, Q> const& v)\n\t{\n\t\tvec<L, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t\tResult[i] = !v[i];\n\t\treturn Result;\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"func_vector_relational_simd.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/func_vector_relational_simd.inl",
    "content": "namespace glm{\nnamespace detail\n{\n\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/glm.cpp",
    "content": "/// @ref core\n/// @file glm/glm.cpp\n\n#ifndef GLM_ENABLE_EXPERIMENTAL\n#define GLM_ENABLE_EXPERIMENTAL\n#endif\n#include <glm/gtx/dual_quaternion.hpp>\n#include <glm/gtc/vec1.hpp>\n#include <glm/gtc/quaternion.hpp>\n#include <glm/ext/scalar_int_sized.hpp>\n#include <glm/ext/scalar_uint_sized.hpp>\n#include <glm/glm.hpp>\n\nnamespace glm\n{\n// tvec1 type explicit instantiation\ntemplate struct vec<1, uint8, lowp>;\ntemplate struct vec<1, uint16, lowp>;\ntemplate struct vec<1, uint32, lowp>;\ntemplate struct vec<1, uint64, lowp>;\ntemplate struct vec<1, int8, lowp>;\ntemplate struct vec<1, int16, lowp>;\ntemplate struct vec<1, int32, lowp>;\ntemplate struct vec<1, int64, lowp>;\ntemplate struct vec<1, float32, lowp>;\ntemplate struct vec<1, float64, lowp>;\n\ntemplate struct vec<1, uint8, mediump>;\ntemplate struct vec<1, uint16, mediump>;\ntemplate struct vec<1, uint32, mediump>;\ntemplate struct vec<1, uint64, mediump>;\ntemplate struct vec<1, int8, mediump>;\ntemplate struct vec<1, int16, mediump>;\ntemplate struct vec<1, int32, mediump>;\ntemplate struct vec<1, int64, mediump>;\ntemplate struct vec<1, float32, mediump>;\ntemplate struct vec<1, float64, mediump>;\n\ntemplate struct vec<1, uint8, highp>;\ntemplate struct vec<1, uint16, highp>;\ntemplate struct vec<1, uint32, highp>;\ntemplate struct vec<1, uint64, highp>;\ntemplate struct vec<1, int8, highp>;\ntemplate struct vec<1, int16, highp>;\ntemplate struct vec<1, int32, highp>;\ntemplate struct vec<1, int64, highp>;\ntemplate struct vec<1, float32, highp>;\ntemplate struct vec<1, float64, highp>;\n\n// tvec2 type explicit instantiation\ntemplate struct vec<2, uint8, lowp>;\ntemplate struct vec<2, uint16, lowp>;\ntemplate struct vec<2, uint32, lowp>;\ntemplate struct vec<2, uint64, lowp>;\ntemplate struct vec<2, int8, lowp>;\ntemplate struct vec<2, int16, lowp>;\ntemplate struct vec<2, int32, lowp>;\ntemplate struct vec<2, int64, lowp>;\ntemplate struct vec<2, float32, lowp>;\ntemplate struct vec<2, float64, lowp>;\n\ntemplate struct vec<2, uint8, mediump>;\ntemplate struct vec<2, uint16, mediump>;\ntemplate struct vec<2, uint32, mediump>;\ntemplate struct vec<2, uint64, mediump>;\ntemplate struct vec<2, int8, mediump>;\ntemplate struct vec<2, int16, mediump>;\ntemplate struct vec<2, int32, mediump>;\ntemplate struct vec<2, int64, mediump>;\ntemplate struct vec<2, float32, mediump>;\ntemplate struct vec<2, float64, mediump>;\n\ntemplate struct vec<2, uint8, highp>;\ntemplate struct vec<2, uint16, highp>;\ntemplate struct vec<2, uint32, highp>;\ntemplate struct vec<2, uint64, highp>;\ntemplate struct vec<2, int8, highp>;\ntemplate struct vec<2, int16, highp>;\ntemplate struct vec<2, int32, highp>;\ntemplate struct vec<2, int64, highp>;\ntemplate struct vec<2, float32, highp>;\ntemplate struct vec<2, float64, highp>;\n\n// tvec3 type explicit instantiation\ntemplate struct vec<3, uint8, lowp>;\ntemplate struct vec<3, uint16, lowp>;\ntemplate struct vec<3, uint32, lowp>;\ntemplate struct vec<3, uint64, lowp>;\ntemplate struct vec<3, int8, lowp>;\ntemplate struct vec<3, int16, lowp>;\ntemplate struct vec<3, int32, lowp>;\ntemplate struct vec<3, int64, lowp>;\ntemplate struct vec<3, float32, lowp>;\ntemplate struct vec<3, float64, lowp>;\n\ntemplate struct vec<3, uint8, mediump>;\ntemplate struct vec<3, uint16, mediump>;\ntemplate struct vec<3, uint32, mediump>;\ntemplate struct vec<3, uint64, mediump>;\ntemplate struct vec<3, int8, mediump>;\ntemplate struct vec<3, int16, mediump>;\ntemplate struct vec<3, int32, mediump>;\ntemplate struct vec<3, int64, mediump>;\ntemplate struct vec<3, float32, mediump>;\ntemplate struct vec<3, float64, mediump>;\n\ntemplate struct vec<3, uint8, highp>;\ntemplate struct vec<3, uint16, highp>;\ntemplate struct vec<3, uint32, highp>;\ntemplate struct vec<3, uint64, highp>;\ntemplate struct vec<3, int8, highp>;\ntemplate struct vec<3, int16, highp>;\ntemplate struct vec<3, int32, highp>;\ntemplate struct vec<3, int64, highp>;\ntemplate struct vec<3, float32, highp>;\ntemplate struct vec<3, float64, highp>;\n\n// tvec4 type explicit instantiation\ntemplate struct vec<4, uint8, lowp>;\ntemplate struct vec<4, uint16, lowp>;\ntemplate struct vec<4, uint32, lowp>;\ntemplate struct vec<4, uint64, lowp>;\ntemplate struct vec<4, int8, lowp>;\ntemplate struct vec<4, int16, lowp>;\ntemplate struct vec<4, int32, lowp>;\ntemplate struct vec<4, int64, lowp>;\ntemplate struct vec<4, float32, lowp>;\ntemplate struct vec<4, float64, lowp>;\n\ntemplate struct vec<4, uint8, mediump>;\ntemplate struct vec<4, uint16, mediump>;\ntemplate struct vec<4, uint32, mediump>;\ntemplate struct vec<4, uint64, mediump>;\ntemplate struct vec<4, int8, mediump>;\ntemplate struct vec<4, int16, mediump>;\ntemplate struct vec<4, int32, mediump>;\ntemplate struct vec<4, int64, mediump>;\ntemplate struct vec<4, float32, mediump>;\ntemplate struct vec<4, float64, mediump>;\n\ntemplate struct vec<4, uint8, highp>;\ntemplate struct vec<4, uint16, highp>;\ntemplate struct vec<4, uint32, highp>;\ntemplate struct vec<4, uint64, highp>;\ntemplate struct vec<4, int8, highp>;\ntemplate struct vec<4, int16, highp>;\ntemplate struct vec<4, int32, highp>;\ntemplate struct vec<4, int64, highp>;\ntemplate struct vec<4, float32, highp>;\ntemplate struct vec<4, float64, highp>;\n\n// tmat2x2 type explicit instantiation\ntemplate struct mat<2, 2, float32, lowp>;\ntemplate struct mat<2, 2, float64, lowp>;\n\ntemplate struct mat<2, 2, float32, mediump>;\ntemplate struct mat<2, 2, float64, mediump>;\n\ntemplate struct mat<2, 2, float32, highp>;\ntemplate struct mat<2, 2, float64, highp>;\n\n// tmat2x3 type explicit instantiation\ntemplate struct mat<2, 3, float32, lowp>;\ntemplate struct mat<2, 3, float64, lowp>;\n\ntemplate struct mat<2, 3, float32, mediump>;\ntemplate struct mat<2, 3, float64, mediump>;\n\ntemplate struct mat<2, 3, float32, highp>;\ntemplate struct mat<2, 3, float64, highp>;\n\n// tmat2x4 type explicit instantiation\ntemplate struct mat<2, 4, float32, lowp>;\ntemplate struct mat<2, 4, float64, lowp>;\n\ntemplate struct mat<2, 4, float32, mediump>;\ntemplate struct mat<2, 4, float64, mediump>;\n\ntemplate struct mat<2, 4, float32, highp>;\ntemplate struct mat<2, 4, float64, highp>;\n\n// tmat3x2 type explicit instantiation\ntemplate struct mat<3, 2, float32, lowp>;\ntemplate struct mat<3, 2, float64, lowp>;\n\ntemplate struct mat<3, 2, float32, mediump>;\ntemplate struct mat<3, 2, float64, mediump>;\n\ntemplate struct mat<3, 2, float32, highp>;\ntemplate struct mat<3, 2, float64, highp>;\n\n// tmat3x3 type explicit instantiation\ntemplate struct mat<3, 3, float32, lowp>;\ntemplate struct mat<3, 3, float64, lowp>;\n\ntemplate struct mat<3, 3, float32, mediump>;\ntemplate struct mat<3, 3, float64, mediump>;\n\ntemplate struct mat<3, 3, float32, highp>;\ntemplate struct mat<3, 3, float64, highp>;\n\n// tmat3x4 type explicit instantiation\ntemplate struct mat<3, 4, float32, lowp>;\ntemplate struct mat<3, 4, float64, lowp>;\n\ntemplate struct mat<3, 4, float32, mediump>;\ntemplate struct mat<3, 4, float64, mediump>;\n\ntemplate struct mat<3, 4, float32, highp>;\ntemplate struct mat<3, 4, float64, highp>;\n\n// tmat4x2 type explicit instantiation\ntemplate struct mat<4, 2, float32, lowp>;\ntemplate struct mat<4, 2, float64, lowp>;\n\ntemplate struct mat<4, 2, float32, mediump>;\ntemplate struct mat<4, 2, float64, mediump>;\n\ntemplate struct mat<4, 2, float32, highp>;\ntemplate struct mat<4, 2, float64, highp>;\n\n// tmat4x3 type explicit instantiation\ntemplate struct mat<4, 3, float32, lowp>;\ntemplate struct mat<4, 3, float64, lowp>;\n\ntemplate struct mat<4, 3, float32, mediump>;\ntemplate struct mat<4, 3, float64, mediump>;\n\ntemplate struct mat<4, 3, float32, highp>;\ntemplate struct mat<4, 3, float64, highp>;\n\n// tmat4x4 type explicit instantiation\ntemplate struct mat<4, 4, float32, lowp>;\ntemplate struct mat<4, 4, float64, lowp>;\n\ntemplate struct mat<4, 4, float32, mediump>;\ntemplate struct mat<4, 4, float64, mediump>;\n\ntemplate struct mat<4, 4, float32, highp>;\ntemplate struct mat<4, 4, float64, highp>;\n\n// tquat type explicit instantiation\ntemplate struct qua<float32, lowp>;\ntemplate struct qua<float64, lowp>;\n\ntemplate struct qua<float32, mediump>;\ntemplate struct qua<float64, mediump>;\n\ntemplate struct qua<float32, highp>;\ntemplate struct qua<float64, highp>;\n\n//tdualquat type explicit instantiation\ntemplate struct tdualquat<float32, lowp>;\ntemplate struct tdualquat<float64, lowp>;\n\ntemplate struct tdualquat<float32, mediump>;\ntemplate struct tdualquat<float64, mediump>;\n\ntemplate struct tdualquat<float32, highp>;\ntemplate struct tdualquat<float64, highp>;\n\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/detail/qualifier.hpp",
    "content": "#pragma once\n\n#include \"setup.hpp\"\n\nnamespace glm\n{\n\t/// Qualify GLM types in term of alignment (packed, aligned) and precision in term of ULPs (lowp, mediump, highp)\n\tenum qualifier\n\t{\n\t\tpacked_highp, ///< Typed data is tightly packed in memory and operations are executed with high precision in term of ULPs\n\t\tpacked_mediump, ///< Typed data is tightly packed in memory  and operations are executed with medium precision in term of ULPs for higher performance\n\t\tpacked_lowp, ///< Typed data is tightly packed in memory  and operations are executed with low precision in term of ULPs to maximize performance\n\n#\t\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n\t\t\taligned_highp, ///< Typed data is aligned in memory allowing SIMD optimizations and operations are executed with high precision in term of ULPs\n\t\t\taligned_mediump, ///< Typed data is aligned in memory allowing SIMD optimizations and operations are executed with high precision in term of ULPs for higher performance\n\t\t\taligned_lowp, // ///< Typed data is aligned in memory allowing SIMD optimizations and operations are executed with high precision in term of ULPs to maximize performance\n\t\t\taligned = aligned_highp, ///< By default aligned qualifier is also high precision\n#\t\tendif\n\n\t\thighp = packed_highp, ///< By default highp qualifier is also packed\n\t\tmediump = packed_mediump, ///< By default mediump qualifier is also packed\n\t\tlowp = packed_lowp, ///< By default lowp qualifier is also packed\n\t\tpacked = packed_highp, ///< By default packed qualifier is also high precision\n\n#\t\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE && defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)\n\t\t\tdefaultp = aligned_highp\n#\t\telse\n\t\t\tdefaultp = highp\n#\t\tendif\n\t};\n\n\ttypedef qualifier precision;\n\n\ttemplate<length_t L, typename T, qualifier Q = defaultp> struct vec;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q = defaultp> struct mat;\n\ttemplate<typename T, qualifier Q = defaultp> struct qua;\n\n#\tif GLM_HAS_TEMPLATE_ALIASES\n\t\ttemplate <typename T, qualifier Q = defaultp> using tvec1 = vec<1, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tvec2 = vec<2, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tvec3 = vec<3, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tvec4 = vec<4, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat2x2 = mat<2, 2, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat2x3 = mat<2, 3, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat2x4 = mat<2, 4, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat3x2 = mat<3, 2, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat3x3 = mat<3, 3, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat3x4 = mat<3, 4, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat4x2 = mat<4, 2, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat4x3 = mat<4, 3, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tmat4x4 = mat<4, 4, T, Q>;\n\t\ttemplate <typename T, qualifier Q = defaultp> using tquat = qua<T, Q>;\n#\tendif\n\nnamespace detail\n{\n\ttemplate<glm::qualifier P>\n\tstruct is_aligned\n\t{\n\t\tstatic const bool value = false;\n\t};\n\n#\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n\t\ttemplate<>\n\t\tstruct is_aligned<glm::aligned_lowp>\n\t\t{\n\t\t\tstatic const bool value = true;\n\t\t};\n\n\t\ttemplate<>\n\t\tstruct is_aligned<glm::aligned_mediump>\n\t\t{\n\t\t\tstatic const bool value = true;\n\t\t};\n\n\t\ttemplate<>\n\t\tstruct is_aligned<glm::aligned_highp>\n\t\t{\n\t\t\tstatic const bool value = true;\n\t\t};\n#\tendif\n\n\ttemplate<length_t L, typename T, bool is_aligned>\n\tstruct storage\n\t{\n\t\ttypedef struct type {\n\t\t\tT data[L];\n\t\t} type;\n\t};\n\n#\tif GLM_HAS_ALIGNOF\n\t\ttemplate<length_t L, typename T>\n\t\tstruct storage<L, T, true>\n\t\t{\n\t\t\ttypedef struct alignas(L * sizeof(T)) type {\n\t\t\t\tT data[L];\n\t\t\t} type;\n\t\t};\n\n\t\ttemplate<typename T>\n\t\tstruct storage<3, T, true>\n\t\t{\n\t\t\ttypedef struct alignas(4 * sizeof(T)) type {\n\t\t\t\tT data[4];\n\t\t\t} type;\n\t\t};\n#\tendif\n\n#\tif GLM_ARCH & GLM_ARCH_SSE2_BIT\n\ttemplate<>\n\tstruct storage<4, float, true>\n\t{\n\t\ttypedef glm_f32vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<4, int, true>\n\t{\n\t\ttypedef glm_i32vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<4, unsigned int, true>\n\t{\n\t\ttypedef glm_u32vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<2, double, true>\n\t{\n\t\ttypedef glm_f64vec2 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<2, detail::int64, true>\n\t{\n\t\ttypedef glm_i64vec2 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<2, detail::uint64, true>\n\t{\n\t\ttypedef glm_u64vec2 type;\n\t};\n#\tendif\n\n#\tif (GLM_ARCH & GLM_ARCH_AVX_BIT)\n\ttemplate<>\n\tstruct storage<4, double, true>\n\t{\n\t\ttypedef glm_f64vec4 type;\n\t};\n#\tendif\n\n#\tif (GLM_ARCH & GLM_ARCH_AVX2_BIT)\n\ttemplate<>\n\tstruct storage<4, detail::int64, true>\n\t{\n\t\ttypedef glm_i64vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<4, detail::uint64, true>\n\t{\n\t\ttypedef glm_u64vec4 type;\n\t};\n#\tendif\n\n#\tif GLM_ARCH & GLM_ARCH_NEON_BIT\n\ttemplate<>\n\tstruct storage<4, float, true>\n\t{\n\t\ttypedef glm_f32vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<4, int, true>\n\t{\n\t\ttypedef glm_i32vec4 type;\n\t};\n\n\ttemplate<>\n\tstruct storage<4, unsigned int, true>\n\t{\n\t\ttypedef glm_u32vec4 type;\n\t};\n#\tendif\n\n\tenum genTypeEnum\n\t{\n\t\tGENTYPE_VEC,\n\t\tGENTYPE_MAT,\n\t\tGENTYPE_QUAT\n\t};\n\n\ttemplate <typename genType>\n\tstruct genTypeTrait\n\t{};\n\n\ttemplate <length_t C, length_t R, typename T>\n\tstruct genTypeTrait<mat<C, R, T> >\n\t{\n\t\tstatic const genTypeEnum GENTYPE = GENTYPE_MAT;\n\t};\n\n\ttemplate<typename genType, genTypeEnum type>\n\tstruct init_gentype\n\t{\n\t};\n\n\ttemplate<typename genType>\n\tstruct init_gentype<genType, GENTYPE_QUAT>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()\n\t\t{\n\t\t\treturn genType(1, 0, 0, 0);\n\t\t}\n\t};\n\n\ttemplate<typename genType>\n\tstruct init_gentype<genType, GENTYPE_MAT>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()\n\t\t{\n\t\t\treturn genType(1);\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/setup.hpp",
    "content": "#ifndef GLM_SETUP_INCLUDED\n\n#include <cassert>\n#include <cstddef>\n\n#define GLM_VERSION_MAJOR\t\t\t0\n#define GLM_VERSION_MINOR\t\t\t9\n#define GLM_VERSION_PATCH\t\t\t9\n#define GLM_VERSION_REVISION\t\t7\n#define GLM_VERSION\t\t\t\t\t997\n#define GLM_VERSION_MESSAGE\t\t\t\"GLM: version 0.9.9.7\"\n\n#define GLM_SETUP_INCLUDED\t\t\tGLM_VERSION\n\n///////////////////////////////////////////////////////////////////////////////////\n// Active states\n\n#define GLM_DISABLE\t\t0\n#define GLM_ENABLE\t\t1\n\n///////////////////////////////////////////////////////////////////////////////////\n// Messages\n\n#if defined(GLM_FORCE_MESSAGES)\n#\tdefine GLM_MESSAGES GLM_ENABLE\n#else\n#\tdefine GLM_MESSAGES GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Detect the platform\n\n#include \"../simd/platform.h\"\n\n///////////////////////////////////////////////////////////////////////////////////\n// Build model\n\n#if defined(_M_ARM64) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)\n#\tdefine GLM_MODEL\tGLM_MODEL_64\n#elif defined(__i386__) || defined(__ppc__) || defined(__ILP32__) || defined(_M_ARM)\n#\tdefine GLM_MODEL\tGLM_MODEL_32\n#else\n#\tdefine GLM_MODEL\tGLM_MODEL_32\n#endif//\n\n#if !defined(GLM_MODEL) && GLM_COMPILER != 0\n#\terror \"GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message.\"\n#endif//GLM_MODEL\n\n///////////////////////////////////////////////////////////////////////////////////\n// C++ Version\n\n// User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14, GLM_FORCE_CXX17, GLM_FORCE_CXX2A\n\n#define GLM_LANG_CXX98_FLAG\t\t\t(1 << 1)\n#define GLM_LANG_CXX03_FLAG\t\t\t(1 << 2)\n#define GLM_LANG_CXX0X_FLAG\t\t\t(1 << 3)\n#define GLM_LANG_CXX11_FLAG\t\t\t(1 << 4)\n#define GLM_LANG_CXX14_FLAG\t\t\t(1 << 5)\n#define GLM_LANG_CXX17_FLAG\t\t\t(1 << 6)\n#define GLM_LANG_CXX2A_FLAG\t\t\t(1 << 7)\n#define GLM_LANG_CXXMS_FLAG\t\t\t(1 << 8)\n#define GLM_LANG_CXXGNU_FLAG\t\t(1 << 9)\n\n#define GLM_LANG_CXX98\t\t\tGLM_LANG_CXX98_FLAG\n#define GLM_LANG_CXX03\t\t\t(GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)\n#define GLM_LANG_CXX0X\t\t\t(GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)\n#define GLM_LANG_CXX11\t\t\t(GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)\n#define GLM_LANG_CXX14\t\t\t(GLM_LANG_CXX11 | GLM_LANG_CXX14_FLAG)\n#define GLM_LANG_CXX17\t\t\t(GLM_LANG_CXX14 | GLM_LANG_CXX17_FLAG)\n#define GLM_LANG_CXX2A\t\t\t(GLM_LANG_CXX17 | GLM_LANG_CXX2A_FLAG)\n#define GLM_LANG_CXXMS\t\t\tGLM_LANG_CXXMS_FLAG\n#define GLM_LANG_CXXGNU\t\t\tGLM_LANG_CXXGNU_FLAG\n\n#if (defined(_MSC_EXTENSIONS))\n#\tdefine GLM_LANG_EXT GLM_LANG_CXXMS_FLAG\n#elif ((GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_GCC)) && (GLM_ARCH & GLM_ARCH_SIMD_BIT))\n#\tdefine GLM_LANG_EXT GLM_LANG_CXXMS_FLAG\n#else\n#\tdefine GLM_LANG_EXT 0\n#endif\n\n#if (defined(GLM_FORCE_CXX_UNKNOWN))\n#\tdefine GLM_LANG 0\n#elif defined(GLM_FORCE_CXX2A)\n#\tdefine GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)\n#\tdefine GLM_LANG_STL11_FORCED\n#elif defined(GLM_FORCE_CXX17)\n#\tdefine GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)\n#\tdefine GLM_LANG_STL11_FORCED\n#elif defined(GLM_FORCE_CXX14)\n#\tdefine GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)\n#\tdefine GLM_LANG_STL11_FORCED\n#elif defined(GLM_FORCE_CXX11)\n#\tdefine GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)\n#\tdefine GLM_LANG_STL11_FORCED\n#elif defined(GLM_FORCE_CXX03)\n#\tdefine GLM_LANG (GLM_LANG_CXX03 | GLM_LANG_EXT)\n#elif defined(GLM_FORCE_CXX98)\n#\tdefine GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)\n#else\n#\tif GLM_COMPILER & GLM_COMPILER_VC && defined(_MSVC_LANG)\n#\t\tif GLM_COMPILER >= GLM_COMPILER_VC15_7\n#\t\t\tdefine GLM_LANG_PLATFORM _MSVC_LANG\n#\t\telif GLM_COMPILER >= GLM_COMPILER_VC15\n#\t\t\tif _MSVC_LANG > 201402L\n#\t\t\t\tdefine GLM_LANG_PLATFORM 201402L\n#\t\t\telse\n#\t\t\t\tdefine GLM_LANG_PLATFORM _MSVC_LANG\n#\t\t\tendif\n#\t\telse\n#\t\t\tdefine GLM_LANG_PLATFORM 0\n#\t\tendif\n#\telse\n#\t\tdefine GLM_LANG_PLATFORM 0\n#\tendif\n\n#\tif __cplusplus > 201703L || GLM_LANG_PLATFORM > 201703L\n#\t\tdefine GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT)\n#\telif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L\n#\t\tdefine GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)\n#\telif __cplusplus == 201402L || __cplusplus == 201500L || GLM_LANG_PLATFORM == 201402L\n#\t\tdefine GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)\n#\telif __cplusplus == 201103L || GLM_LANG_PLATFORM == 201103L\n#\t\tdefine GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)\n#\telif defined(__INTEL_CXX11_MODE__) || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__)\n#\t\tdefine GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_EXT)\n#\telif __cplusplus == 199711L\n#\t\tdefine GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)\n#\telse\n#\t\tdefine GLM_LANG (0 | GLM_LANG_EXT)\n#\tendif\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Has of C++ features\n\n// http://clang.llvm.org/cxx_status.html\n// http://gcc.gnu.org/projects/cxx0x.html\n// http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx\n\n// Android has multiple STLs but C++11 STL detection doesn't always work #284 #564\n#if GLM_PLATFORM == GLM_PLATFORM_ANDROID && !defined(GLM_LANG_STL11_FORCED)\n#\tdefine GLM_HAS_CXX11_STL 0\n#elif GLM_COMPILER & GLM_COMPILER_CLANG\n#\tif (defined(_LIBCPP_VERSION) || (GLM_LANG & GLM_LANG_CXX11_FLAG) || defined(GLM_LANG_STL11_FORCED))\n#\t\tdefine GLM_HAS_CXX11_STL 1\n#\telse\n#\t\tdefine GLM_HAS_CXX11_STL 0\n#\tendif\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_CXX11_STL 1\n#else\n#\tdefine GLM_HAS_CXX11_STL ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \\\n\t\t((GLM_PLATFORM != GLM_PLATFORM_WINDOWS) && (GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15))))\n#endif\n\n// N1720\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_STATIC_ASSERT 1\n#else\n#\tdefine GLM_HAS_STATIC_ASSERT ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC))))\n#endif\n\n// N1988\n#if GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_EXTENDED_INTEGER_TYPE 1\n#else\n#\tdefine GLM_HAS_EXTENDED_INTEGER_TYPE (\\\n\t\t((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC)) || \\\n\t\t((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \\\n\t\t((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG)))\n#endif\n\n// N2672 Initializer lists http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_INITIALIZER_LISTS 1\n#else\n#\tdefine GLM_HAS_INITIALIZER_LISTS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_UNRESTRICTED_UNIONS 1\n#else\n#\tdefine GLM_HAS_UNRESTRICTED_UNIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t(GLM_COMPILER & GLM_COMPILER_VC) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA)))\n#endif\n\n// N2346\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_DEFAULTED_FUNCTIONS 1\n#else\n#\tdefine GLM_HAS_DEFAULTED_FUNCTIONS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL)) || \\\n\t\t(GLM_COMPILER & GLM_COMPILER_CUDA)))\n#endif\n\n// N2118\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_RVALUE_REFERENCES 1\n#else\n#\tdefine GLM_HAS_RVALUE_REFERENCES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1\n#else\n#\tdefine GLM_HAS_EXPLICIT_CONVERSION_OPERATORS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_TEMPLATE_ALIASES 1\n#else\n#\tdefine GLM_HAS_TEMPLATE_ALIASES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_RANGE_FOR 1\n#else\n#\tdefine GLM_HAS_RANGE_FOR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2341 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf\n#if GLM_COMPILER & GLM_COMPILER_CLANG\n#\tdefine GLM_HAS_ALIGNOF __has_feature(cxx_alignas)\n#elif GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_ALIGNOF 1\n#else\n#\tdefine GLM_HAS_ALIGNOF ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n// N2235 Generalized Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf\n// N3652 Extended Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html\n#if (GLM_ARCH & GLM_ARCH_SIMD_BIT) // Compiler SIMD intrinsics don't support constexpr...\n#\tdefine GLM_HAS_CONSTEXPR 0\n#elif (GLM_COMPILER & GLM_COMPILER_CLANG)\n#\tdefine GLM_HAS_CONSTEXPR __has_feature(cxx_relaxed_constexpr)\n#elif (GLM_LANG & GLM_LANG_CXX14_FLAG)\n#\tdefine GLM_HAS_CONSTEXPR 1\n#else\n#\tdefine GLM_HAS_CONSTEXPR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && GLM_HAS_INITIALIZER_LISTS && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL17)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15))))\n#endif\n\n#if GLM_HAS_CONSTEXPR\n#\tdefine GLM_CONSTEXPR constexpr\n#else\n#\tdefine GLM_CONSTEXPR\n#endif\n\n//\n#if GLM_HAS_CONSTEXPR\n# if (GLM_COMPILER & GLM_COMPILER_CLANG)\n#\tif __has_feature(cxx_if_constexpr)\n#\t\tdefine GLM_HAS_IF_CONSTEXPR 1\n#\telse\n# \t\tdefine GLM_HAS_IF_CONSTEXPR 0\n#\tendif\n# elif (GLM_LANG & GLM_LANG_CXX17_FLAG)\n# \tdefine GLM_HAS_IF_CONSTEXPR 1\n# else\n# \tdefine GLM_HAS_IF_CONSTEXPR 0\n# endif\n#else\n#\tdefine GLM_HAS_IF_CONSTEXPR 0\n#endif\n\n#if GLM_HAS_IF_CONSTEXPR\n# \tdefine GLM_IF_CONSTEXPR if constexpr\n#else\n#\tdefine GLM_IF_CONSTEXPR if\n#endif\n\n//\n#if GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_ASSIGNABLE 1\n#else\n#\tdefine GLM_HAS_ASSIGNABLE ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC49))))\n#endif\n\n//\n#define GLM_HAS_TRIVIAL_QUERIES 0\n\n//\n#if GLM_LANG & GLM_LANG_CXX11_FLAG\n#\tdefine GLM_HAS_MAKE_SIGNED 1\n#else\n#\tdefine GLM_HAS_MAKE_SIGNED ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_CUDA))))\n#endif\n\n//\n#if defined(GLM_FORCE_INTRINSICS)\n#\tdefine GLM_HAS_BITSCAN_WINDOWS ((GLM_PLATFORM & GLM_PLATFORM_WINDOWS) && (\\\n\t\t((GLM_COMPILER & GLM_COMPILER_INTEL)) || \\\n\t\t((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH & GLM_ARCH_X86_BIT))))\n#else\n#\tdefine GLM_HAS_BITSCAN_WINDOWS 0\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// OpenMP\n#ifdef _OPENMP\n#\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\tif GLM_COMPILER >= GLM_COMPILER_GCC61\n#\t\t\tdefine GLM_HAS_OPENMP 45\n#\t\telif GLM_COMPILER >= GLM_COMPILER_GCC49\n#\t\t\tdefine GLM_HAS_OPENMP 40\n#\t\telif GLM_COMPILER >= GLM_COMPILER_GCC47\n#\t\t\tdefine GLM_HAS_OPENMP 31\n#\t\telse\n#\t\t\tdefine GLM_HAS_OPENMP 0\n#\t\tendif\n#\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\tif GLM_COMPILER >= GLM_COMPILER_CLANG38\n#\t\t\tdefine GLM_HAS_OPENMP 31\n#\t\telse\n#\t\t\tdefine GLM_HAS_OPENMP 0\n#\t\tendif\n#\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\tdefine GLM_HAS_OPENMP 20\n#\telif GLM_COMPILER & GLM_COMPILER_INTEL\n#\t\tif GLM_COMPILER >= GLM_COMPILER_INTEL16\n#\t\t\tdefine GLM_HAS_OPENMP 40\n#\t\telse\n#\t\t\tdefine GLM_HAS_OPENMP 0\n#\t\tendif\n#\telse\n#\t\tdefine GLM_HAS_OPENMP 0\n#\tendif\n#else\n#\tdefine GLM_HAS_OPENMP 0\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// nullptr\n\n#if GLM_LANG & GLM_LANG_CXX0X_FLAG\n#\tdefine GLM_CONFIG_NULLPTR GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_NULLPTR GLM_DISABLE\n#endif\n\n#if GLM_CONFIG_NULLPTR == GLM_ENABLE\n#\tdefine GLM_NULLPTR nullptr\n#else\n#\tdefine GLM_NULLPTR 0\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Static assert\n\n#if GLM_HAS_STATIC_ASSERT\n#\tdefine GLM_STATIC_ASSERT(x, message) static_assert(x, message)\n#elif GLM_COMPILER & GLM_COMPILER_VC\n#\tdefine GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]\n#else\n#\tdefine GLM_STATIC_ASSERT(x, message) assert(x)\n#endif//GLM_LANG\n\n///////////////////////////////////////////////////////////////////////////////////\n// Qualifiers\n\n#if GLM_COMPILER & GLM_COMPILER_CUDA\n#\tdefine GLM_CUDA_FUNC_DEF __device__ __host__\n#\tdefine GLM_CUDA_FUNC_DECL __device__ __host__\n#else\n#\tdefine GLM_CUDA_FUNC_DEF\n#\tdefine GLM_CUDA_FUNC_DECL\n#endif\n\n#if defined(GLM_FORCE_INLINE)\n#\tif GLM_COMPILER & GLM_COMPILER_VC\n#\t\tdefine GLM_INLINE __forceinline\n#\t\tdefine GLM_NEVER_INLINE __declspec((noinline))\n#\telif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)\n#\t\tdefine GLM_INLINE inline __attribute__((__always_inline__))\n#\t\tdefine GLM_NEVER_INLINE __attribute__((__noinline__))\n#\telif GLM_COMPILER & GLM_COMPILER_CUDA\n#\t\tdefine GLM_INLINE __forceinline__\n#\t\tdefine GLM_NEVER_INLINE __noinline__\n#\telse\n#\t\tdefine GLM_INLINE inline\n#\t\tdefine GLM_NEVER_INLINE\n#\tendif//GLM_COMPILER\n#else\n#\tdefine GLM_INLINE inline\n#\tdefine GLM_NEVER_INLINE\n#endif//defined(GLM_FORCE_INLINE)\n\n#define GLM_FUNC_DECL GLM_CUDA_FUNC_DECL\n#define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE\n\n///////////////////////////////////////////////////////////////////////////////////\n// Swizzle operators\n\n// User defines: GLM_FORCE_SWIZZLE\n\n#define GLM_SWIZZLE_DISABLED\t\t0\n#define GLM_SWIZZLE_OPERATOR\t\t1\n#define GLM_SWIZZLE_FUNCTION\t\t2\n\n#if defined(GLM_FORCE_XYZW_ONLY)\n#\tundef GLM_FORCE_SWIZZLE\n#endif\n\n#if defined(GLM_SWIZZLE)\n#\tpragma message(\"GLM: GLM_SWIZZLE is deprecated, use GLM_FORCE_SWIZZLE instead.\")\n#\tdefine GLM_FORCE_SWIZZLE\n#endif\n\n#if defined(GLM_FORCE_SWIZZLE) && (GLM_LANG & GLM_LANG_CXXMS_FLAG)\n#\tdefine GLM_CONFIG_SWIZZLE GLM_SWIZZLE_OPERATOR\n#elif defined(GLM_FORCE_SWIZZLE)\n#\tdefine GLM_CONFIG_SWIZZLE GLM_SWIZZLE_FUNCTION\n#else\n#\tdefine GLM_CONFIG_SWIZZLE GLM_SWIZZLE_DISABLED\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Allows using not basic types as genType\n\n// #define GLM_FORCE_UNRESTRICTED_GENTYPE\n\n#ifdef GLM_FORCE_UNRESTRICTED_GENTYPE\n#\tdefine GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Clip control, define GLM_FORCE_DEPTH_ZERO_TO_ONE before including GLM\n// to use a clip space between 0 to 1.\n// Coordinate system, define GLM_FORCE_LEFT_HANDED before including GLM\n// to use left handed coordinate system by default.\n\n#define GLM_CLIP_CONTROL_ZO_BIT\t\t(1 << 0) // ZERO_TO_ONE\n#define GLM_CLIP_CONTROL_NO_BIT\t\t(1 << 1) // NEGATIVE_ONE_TO_ONE\n#define GLM_CLIP_CONTROL_LH_BIT\t\t(1 << 2) // LEFT_HANDED, For DirectX, Metal, Vulkan\n#define GLM_CLIP_CONTROL_RH_BIT\t\t(1 << 3) // RIGHT_HANDED, For OpenGL, default in GLM\n\n#define GLM_CLIP_CONTROL_LH_ZO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_ZO_BIT)\n#define GLM_CLIP_CONTROL_LH_NO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_NO_BIT)\n#define GLM_CLIP_CONTROL_RH_ZO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_ZO_BIT)\n#define GLM_CLIP_CONTROL_RH_NO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_NO_BIT)\n\n#ifdef GLM_FORCE_DEPTH_ZERO_TO_ONE\n#\tifdef GLM_FORCE_LEFT_HANDED\n#\t\tdefine GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_ZO\n#\telse\n#\t\tdefine GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_ZO\n#\tendif\n#else\n#\tifdef GLM_FORCE_LEFT_HANDED\n#\t\tdefine GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_NO\n#\telse\n#\t\tdefine GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_NO\n#\tendif\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Qualifiers\n\n#if (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))\n#\tdefine GLM_DEPRECATED __declspec(deprecated)\n#\tdefine GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef __declspec(align(alignment)) type name\n#elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG | GLM_COMPILER_INTEL)\n#\tdefine GLM_DEPRECATED __attribute__((__deprecated__))\n#\tdefine GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))\n#elif GLM_COMPILER & GLM_COMPILER_CUDA\n#\tdefine GLM_DEPRECATED\n#\tdefine GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __align__(x)\n#else\n#\tdefine GLM_DEPRECATED\n#\tdefine GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n\n#ifdef GLM_FORCE_EXPLICIT_CTOR\n#\tdefine GLM_EXPLICIT explicit\n#else\n#\tdefine GLM_EXPLICIT\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// SYCL\n\n#if GLM_COMPILER==GLM_COMPILER_SYCL\n\n#include <CL/sycl.hpp>\n#include <limits>\n\nnamespace glm {\nnamespace std {\n\t// Import SYCL's functions into the namespace glm::std to force their usages.\n\t// It's important to use the math built-in function (sin, exp, ...)\n\t// of SYCL instead the std ones.\n\tusing namespace cl::sycl;\n\n\t///////////////////////////////////////////////////////////////////////////////\n\t// Import some \"harmless\" std's stuffs used by glm into\n\t// the new glm::std namespace.\n\ttemplate<typename T>\n\tusing numeric_limits = ::std::numeric_limits<T>;\n\n\tusing ::std::size_t;\n\n\tusing ::std::uint8_t;\n\tusing ::std::uint16_t;\n\tusing ::std::uint32_t;\n\tusing ::std::uint64_t;\n\n\tusing ::std::int8_t;\n\tusing ::std::int16_t;\n\tusing ::std::int32_t;\n\tusing ::std::int64_t;\n\n\tusing ::std::make_unsigned;\n\t///////////////////////////////////////////////////////////////////////////////\n} //namespace std\n} //namespace glm\n\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n\n///////////////////////////////////////////////////////////////////////////////////\n// Length type: all length functions returns a length_t type.\n// When GLM_FORCE_SIZE_T_LENGTH is defined, length_t is a typedef of size_t otherwise\n// length_t is a typedef of int like GLSL defines it.\n\n#define GLM_LENGTH_INT\t\t1\n#define GLM_LENGTH_SIZE_T\t2\n\n#ifdef GLM_FORCE_SIZE_T_LENGTH\n#\tdefine GLM_CONFIG_LENGTH_TYPE\t\tGLM_LENGTH_SIZE_T\n#else\n#\tdefine GLM_CONFIG_LENGTH_TYPE\t\tGLM_LENGTH_INT\n#endif\n\nnamespace glm\n{\n\tusing std::size_t;\n#\tif GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T\n\t\ttypedef size_t length_t;\n#\telse\n\t\ttypedef int length_t;\n#\tendif\n}//namespace glm\n\n///////////////////////////////////////////////////////////////////////////////////\n// constexpr\n\n#if GLM_HAS_CONSTEXPR\n#\tdefine GLM_CONFIG_CONSTEXP GLM_ENABLE\n\n\tnamespace glm\n\t{\n\t\ttemplate<typename T, std::size_t N>\n\t\tconstexpr std::size_t countof(T const (&)[N])\n\t\t{\n\t\t\treturn N;\n\t\t}\n\t}//namespace glm\n#\tdefine GLM_COUNTOF(arr) glm::countof(arr)\n#elif defined(_MSC_VER)\n#\tdefine GLM_CONFIG_CONSTEXP GLM_DISABLE\n\n#\tdefine GLM_COUNTOF(arr) _countof(arr)\n#else\n#\tdefine GLM_CONFIG_CONSTEXP GLM_DISABLE\n\n#\tdefine GLM_COUNTOF(arr) sizeof(arr) / sizeof(arr[0])\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// uint\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename T>\n\tstruct is_int\n\t{\n\t\tenum test {value = 0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<unsigned int>\n\t{\n\t\tenum test {value = ~0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<signed int>\n\t{\n\t\tenum test {value = ~0};\n\t};\n}//namespace detail\n\n\ttypedef unsigned int\tuint;\n}//namespace glm\n\n///////////////////////////////////////////////////////////////////////////////////\n// 64-bit int\n\n#if GLM_HAS_EXTENDED_INTEGER_TYPE\n#\tinclude <cstdint>\n#endif\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_HAS_EXTENDED_INTEGER_TYPE\n\t\ttypedef std::uint64_t\t\t\t\t\t\tuint64;\n\t\ttypedef std::int64_t\t\t\t\t\t\tint64;\n#\telif (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available\n\t\ttypedef uint64_t\t\t\t\t\t\t\tuint64;\n\t\ttypedef int64_t\t\t\t\t\t\t\t\tint64;\n#\telif GLM_COMPILER & GLM_COMPILER_VC\n\t\ttypedef unsigned __int64\t\t\t\t\tuint64;\n\t\ttypedef signed __int64\t\t\t\t\t\tint64;\n#\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\tpragma GCC diagnostic ignored \"-Wlong-long\"\n\t\t__extension__ typedef unsigned long long\tuint64;\n\t\t__extension__ typedef signed long long\t\tint64;\n#\telif (GLM_COMPILER & GLM_COMPILER_CLANG)\n#\t\tpragma clang diagnostic ignored \"-Wc++11-long-long\"\n\t\ttypedef unsigned long long\t\t\t\t\tuint64;\n\t\ttypedef signed long long\t\t\t\t\tint64;\n#\telse//unknown compiler\n\t\ttypedef unsigned long long\t\t\t\t\tuint64;\n\t\ttypedef signed long long\t\t\t\t\tint64;\n#\tendif\n}//namespace detail\n}//namespace glm\n\n///////////////////////////////////////////////////////////////////////////////////\n// make_unsigned\n\n#if GLM_HAS_MAKE_SIGNED\n#\tinclude <type_traits>\n\nnamespace glm{\nnamespace detail\n{\n\tusing std::make_unsigned;\n}//namespace detail\n}//namespace glm\n\n#else\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename genType>\n\tstruct make_unsigned\n\t{};\n\n\ttemplate<>\n\tstruct make_unsigned<char>\n\t{\n\t\ttypedef unsigned char type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<signed char>\n\t{\n\t\ttypedef unsigned char type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<short>\n\t{\n\t\ttypedef unsigned short type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<int>\n\t{\n\t\ttypedef unsigned int type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<long>\n\t{\n\t\ttypedef unsigned long type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<int64>\n\t{\n\t\ttypedef uint64 type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<unsigned char>\n\t{\n\t\ttypedef unsigned char type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<unsigned short>\n\t{\n\t\ttypedef unsigned short type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<unsigned int>\n\t{\n\t\ttypedef unsigned int type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<unsigned long>\n\t{\n\t\ttypedef unsigned long type;\n\t};\n\n\ttemplate<>\n\tstruct make_unsigned<uint64>\n\t{\n\t\ttypedef uint64 type;\n\t};\n}//namespace detail\n}//namespace glm\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Only use x, y, z, w as vector type components\n\n#ifdef GLM_FORCE_XYZW_ONLY\n#\tdefine GLM_CONFIG_XYZW_ONLY GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_XYZW_ONLY GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Configure the use of defaulted initialized types\n\n#define GLM_CTOR_INIT_DISABLE\t\t0\n#define GLM_CTOR_INITIALIZER_LIST\t1\n#define GLM_CTOR_INITIALISATION\t\t2\n\n#if defined(GLM_FORCE_CTOR_INIT) && GLM_HAS_INITIALIZER_LISTS\n#\tdefine GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALIZER_LIST\n#elif defined(GLM_FORCE_CTOR_INIT) && !GLM_HAS_INITIALIZER_LISTS\n#\tdefine GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALISATION\n#else\n#\tdefine GLM_CONFIG_CTOR_INIT GLM_CTOR_INIT_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Use SIMD instruction sets\n\n#if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (GLM_ARCH & GLM_ARCH_SIMD_BIT)\n#\tdefine GLM_CONFIG_SIMD GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_SIMD GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Configure the use of defaulted function\n\n#if GLM_HAS_DEFAULTED_FUNCTIONS && GLM_CONFIG_CTOR_INIT == GLM_CTOR_INIT_DISABLE\n#\tdefine GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_ENABLE\n#\tdefine GLM_DEFAULT = default\n#else\n#\tdefine GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_DISABLE\n#\tdefine GLM_DEFAULT\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Configure the use of aligned gentypes\n\n#ifdef GLM_FORCE_ALIGNED // Legacy define\n#\tdefine GLM_FORCE_DEFAULT_ALIGNED_GENTYPES\n#endif\n\n#ifdef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES\n#\tdefine GLM_FORCE_ALIGNED_GENTYPES\n#endif\n\n#if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (defined(GLM_FORCE_ALIGNED_GENTYPES) || (GLM_CONFIG_SIMD == GLM_ENABLE))\n#\tdefine GLM_CONFIG_ALIGNED_GENTYPES GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_ALIGNED_GENTYPES GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Configure the use of anonymous structure as implementation detail\n\n#if ((GLM_CONFIG_SIMD == GLM_ENABLE) || (GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR) || (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE))\n#\tdefine GLM_CONFIG_ANONYMOUS_STRUCT GLM_ENABLE\n#else\n#\tdefine GLM_CONFIG_ANONYMOUS_STRUCT GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Silent warnings\n\n#ifdef GLM_FORCE_SILENT_WARNINGS\n#\tdefine GLM_SILENT_WARNINGS GLM_ENABLE\n#else\n#\tdefine GLM_SILENT_WARNINGS GLM_DISABLE\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Precision\n\n#define GLM_HIGHP\t\t1\n#define GLM_MEDIUMP\t\t2\n#define GLM_LOWP\t\t3\n\n#if defined(GLM_FORCE_PRECISION_HIGHP_BOOL) || defined(GLM_PRECISION_HIGHP_BOOL)\n#\tdefine GLM_CONFIG_PRECISION_BOOL\t\tGLM_HIGHP\n#elif defined(GLM_FORCE_PRECISION_MEDIUMP_BOOL) || defined(GLM_PRECISION_MEDIUMP_BOOL)\n#\tdefine GLM_CONFIG_PRECISION_BOOL\t\tGLM_MEDIUMP\n#elif defined(GLM_FORCE_PRECISION_LOWP_BOOL) || defined(GLM_PRECISION_LOWP_BOOL)\n#\tdefine GLM_CONFIG_PRECISION_BOOL\t\tGLM_LOWP\n#else\n#\tdefine GLM_CONFIG_PRECISION_BOOL\t\tGLM_HIGHP\n#endif\n\n#if defined(GLM_FORCE_PRECISION_HIGHP_INT) || defined(GLM_PRECISION_HIGHP_INT)\n#\tdefine GLM_CONFIG_PRECISION_INT\t\t\tGLM_HIGHP\n#elif defined(GLM_FORCE_PRECISION_MEDIUMP_INT) || defined(GLM_PRECISION_MEDIUMP_INT)\n#\tdefine GLM_CONFIG_PRECISION_INT\t\t\tGLM_MEDIUMP\n#elif defined(GLM_FORCE_PRECISION_LOWP_INT) || defined(GLM_PRECISION_LOWP_INT)\n#\tdefine GLM_CONFIG_PRECISION_INT\t\t\tGLM_LOWP\n#else\n#\tdefine GLM_CONFIG_PRECISION_INT\t\t\tGLM_HIGHP\n#endif\n\n#if defined(GLM_FORCE_PRECISION_HIGHP_UINT) || defined(GLM_PRECISION_HIGHP_UINT)\n#\tdefine GLM_CONFIG_PRECISION_UINT\t\tGLM_HIGHP\n#elif defined(GLM_FORCE_PRECISION_MEDIUMP_UINT) || defined(GLM_PRECISION_MEDIUMP_UINT)\n#\tdefine GLM_CONFIG_PRECISION_UINT\t\tGLM_MEDIUMP\n#elif defined(GLM_FORCE_PRECISION_LOWP_UINT) || defined(GLM_PRECISION_LOWP_UINT)\n#\tdefine GLM_CONFIG_PRECISION_UINT\t\tGLM_LOWP\n#else\n#\tdefine GLM_CONFIG_PRECISION_UINT\t\tGLM_HIGHP\n#endif\n\n#if defined(GLM_FORCE_PRECISION_HIGHP_FLOAT) || defined(GLM_PRECISION_HIGHP_FLOAT)\n#\tdefine GLM_CONFIG_PRECISION_FLOAT\t\tGLM_HIGHP\n#elif defined(GLM_FORCE_PRECISION_MEDIUMP_FLOAT) || defined(GLM_PRECISION_MEDIUMP_FLOAT)\n#\tdefine GLM_CONFIG_PRECISION_FLOAT\t\tGLM_MEDIUMP\n#elif defined(GLM_FORCE_PRECISION_LOWP_FLOAT) || defined(GLM_PRECISION_LOWP_FLOAT)\n#\tdefine GLM_CONFIG_PRECISION_FLOAT\t\tGLM_LOWP\n#else\n#\tdefine GLM_CONFIG_PRECISION_FLOAT\t\tGLM_HIGHP\n#endif\n\n#if defined(GLM_FORCE_PRECISION_HIGHP_DOUBLE) || defined(GLM_PRECISION_HIGHP_DOUBLE)\n#\tdefine GLM_CONFIG_PRECISION_DOUBLE\t\tGLM_HIGHP\n#elif defined(GLM_FORCE_PRECISION_MEDIUMP_DOUBLE) || defined(GLM_PRECISION_MEDIUMP_DOUBLE)\n#\tdefine GLM_CONFIG_PRECISION_DOUBLE\t\tGLM_MEDIUMP\n#elif defined(GLM_FORCE_PRECISION_LOWP_DOUBLE) || defined(GLM_PRECISION_LOWP_DOUBLE)\n#\tdefine GLM_CONFIG_PRECISION_DOUBLE\t\tGLM_LOWP\n#else\n#\tdefine GLM_CONFIG_PRECISION_DOUBLE\t\tGLM_HIGHP\n#endif\n\n///////////////////////////////////////////////////////////////////////////////////\n// Check inclusions of different versions of GLM\n\n#elif ((GLM_SETUP_INCLUDED != GLM_VERSION) && !defined(GLM_FORCE_IGNORE_VERSION))\n#\terror \"GLM error: A different version of GLM is already included. Define GLM_FORCE_IGNORE_VERSION before including GLM headers to ignore this error.\"\n#elif GLM_SETUP_INCLUDED == GLM_VERSION\n\n///////////////////////////////////////////////////////////////////////////////////\n// Messages\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_DISPLAYED)\n#\tdefine GLM_MESSAGE_DISPLAYED\n#\t\tdefine GLM_STR_HELPER(x) #x\n#\t\tdefine GLM_STR(x) GLM_STR_HELPER(x)\n\n\t// Report GLM version\n#\t\tpragma message (GLM_STR(GLM_VERSION_MESSAGE))\n\n\t// Report C++ language\n#\tif (GLM_LANG & GLM_LANG_CXX2A_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 2A with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX2A_FLAG)\n#\t\tpragma message(\"GLM: C++ 2A\")\n#\telif (GLM_LANG & GLM_LANG_CXX17_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 17 with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX17_FLAG)\n#\t\tpragma message(\"GLM: C++ 17\")\n#\telif (GLM_LANG & GLM_LANG_CXX14_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 14 with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX14_FLAG)\n#\t\tpragma message(\"GLM: C++ 14\")\n#\telif (GLM_LANG & GLM_LANG_CXX11_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 11 with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX11_FLAG)\n#\t\tpragma message(\"GLM: C++ 11\")\n#\telif (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 0x with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX0X_FLAG)\n#\t\tpragma message(\"GLM: C++ 0x\")\n#\telif (GLM_LANG & GLM_LANG_CXX03_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 03 with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX03_FLAG)\n#\t\tpragma message(\"GLM: C++ 03\")\n#\telif (GLM_LANG & GLM_LANG_CXX98_FLAG) && (GLM_LANG & GLM_LANG_EXT)\n#\t\tpragma message(\"GLM: C++ 98 with extensions\")\n#\telif (GLM_LANG & GLM_LANG_CXX98_FLAG)\n#\t\tpragma message(\"GLM: C++ 98\")\n#\telse\n#\t\tpragma message(\"GLM: C++ language undetected\")\n#\tendif//GLM_LANG\n\n\t// Report compiler detection\n#\tif GLM_COMPILER & GLM_COMPILER_CUDA\n#\t\tpragma message(\"GLM: CUDA compiler detected\")\n#\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\tpragma message(\"GLM: Visual C++ compiler detected\")\n#\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\tpragma message(\"GLM: Clang compiler detected\")\n#\telif GLM_COMPILER & GLM_COMPILER_INTEL\n#\t\tpragma message(\"GLM: Intel Compiler detected\")\n#\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\tpragma message(\"GLM: GCC compiler detected\")\n#\telse\n#\t\tpragma message(\"GLM: Compiler not detected\")\n#\tendif\n\n\t// Report build target\n#\tif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with AVX2 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with AVX2 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with AVX instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with AVX instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with SSE4.2 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with SSE4.2 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with SSE4.1 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with SSE4.1 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with SSSE3 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with SSSE3 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with SSE3 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with SSE3 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits with SSE2 instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits with SSE2 instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: x86 64 bits build target\")\n#\telif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: x86 32 bits build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: ARM 64 bits with Neon instruction set build target\")\n#\telif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: ARM 32 bits with Neon instruction set build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: ARM 64 bits build target\")\n#\telif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: ARM 32 bits build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: MIPS 64 bits build target\")\n#\telif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: MIPS 32 bits build target\")\n\n#\telif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_64)\n#\t\tpragma message(\"GLM: PowerPC 64 bits build target\")\n#\telif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_32)\n#\t\tpragma message(\"GLM: PowerPC 32 bits build target\")\n#\telse\n#\t\tpragma message(\"GLM: Unknown build target\")\n#\tendif//GLM_ARCH\n\n\t// Report platform name\n#\tif(GLM_PLATFORM & GLM_PLATFORM_QNXNTO)\n#\t\tpragma message(\"GLM: QNX platform detected\")\n//#\telif(GLM_PLATFORM & GLM_PLATFORM_IOS)\n//#\t\tpragma message(\"GLM: iOS platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_APPLE)\n#\t\tpragma message(\"GLM: Apple platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_WINCE)\n#\t\tpragma message(\"GLM: WinCE platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_WINDOWS)\n#\t\tpragma message(\"GLM: Windows platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_CHROME_NACL)\n#\t\tpragma message(\"GLM: Native Client detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n#\t\tpragma message(\"GLM: Android platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_LINUX)\n#\t\tpragma message(\"GLM: Linux platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_UNIX)\n#\t\tpragma message(\"GLM: UNIX platform detected\")\n#\telif(GLM_PLATFORM & GLM_PLATFORM_UNKNOWN)\n#\t\tpragma message(\"GLM: platform unknown\")\n#\telse\n#\t\tpragma message(\"GLM: platform not detected\")\n#\tendif\n\n\t// Report whether only xyzw component are used\n#\tif defined GLM_FORCE_XYZW_ONLY\n#\t\tpragma message(\"GLM: GLM_FORCE_XYZW_ONLY is defined. Only x, y, z and w component are available in vector type. This define disables swizzle operators and SIMD instruction sets.\")\n#\tendif\n\n\t// Report swizzle operator support\n#\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n#\t\tpragma message(\"GLM: GLM_FORCE_SWIZZLE is defined, swizzling operators enabled.\")\n#\telif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n#\t\tpragma message(\"GLM: GLM_FORCE_SWIZZLE is defined, swizzling functions enabled. Enable compiler C++ language extensions to enable swizzle operators.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_SWIZZLE is undefined. swizzling functions or operators are disabled.\")\n#\tendif\n\n\t// Report .length() type\n#\tif GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T\n#\t\tpragma message(\"GLM: GLM_FORCE_SIZE_T_LENGTH is defined. .length() returns a glm::length_t, a typedef of std::size_t.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_SIZE_T_LENGTH is undefined. .length() returns a glm::length_t, a typedef of int following GLSL.\")\n#\tendif\n\n#\tif GLM_CONFIG_UNRESTRICTED_GENTYPE == GLM_ENABLE\n#\t\tpragma message(\"GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is defined. Removes GLSL restrictions on valid function genTypes.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is undefined. Follows strictly GLSL on valid function genTypes.\")\n#\tendif\n\n#\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\tpragma message(\"GLM: GLM_FORCE_SILENT_WARNINGS is defined. Ignores C++ warnings from using C++ language extensions.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_SILENT_WARNINGS is undefined. Shows C++ warnings from using C++ language extensions.\")\n#\tendif\n\n#\tifdef GLM_FORCE_SINGLE_ONLY\n#\t\tpragma message(\"GLM: GLM_FORCE_SINGLE_ONLY is defined. Using only single precision floating-point types.\")\n#\tendif\n\n#\tif defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE)\n#\t\tundef GLM_FORCE_ALIGNED_GENTYPES\n#\t\tpragma message(\"GLM: GLM_FORCE_ALIGNED_GENTYPES is defined, allowing aligned types. This prevents the use of C++ constexpr.\")\n#\telif defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)\n#\t\tundef GLM_FORCE_ALIGNED_GENTYPES\n#\t\tpragma message(\"GLM: GLM_FORCE_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.\")\n#\tendif\n\n#\tif defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)\n#\t\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE\n#\t\t\tundef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES\n#\t\t\tpragma message(\"GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.\")\n#\t\telif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n#\t\t\tpragma message(\"GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined. All gentypes (e.g. vec3) will be aligned and padded by default.\")\n#\t\tendif\n#\tendif\n\n#\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n#\t\tpragma message(\"GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is defined. Using zero to one depth clip space.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is undefined. Using negative one to one depth clip space.\")\n#\tendif\n\n#\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n#\t\tpragma message(\"GLM: GLM_FORCE_LEFT_HANDED is defined. Using left handed coordinate system.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_FORCE_LEFT_HANDED is undefined. Using right handed coordinate system.\")\n#\tendif\n#endif//GLM_MESSAGES\n\n#endif//GLM_SETUP_INCLUDED\n"
  },
  {
    "path": "libraries/glm/detail/type_float.hpp",
    "content": "#pragma once\n\n#include \"setup.hpp\"\n\n#if GLM_COMPILER == GLM_COMPILER_VC12\n#\tpragma warning(push)\n#\tpragma warning(disable: 4512) // assignment operator could not be generated\n#endif\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate <typename T>\n\tunion float_t\n\t{};\n\n\t// https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/\n\ttemplate <>\n\tunion float_t<float>\n\t{\n\t\ttypedef int int_type;\n\t\ttypedef float float_type;\n\n\t\tGLM_CONSTEXPR float_t(float_type Num = 0.0f) : f(Num) {}\n\n\t\tGLM_CONSTEXPR float_t& operator=(float_t const& x)\n\t\t{\n\t\t\tf = x.f;\n\t\t\treturn *this;\n\t\t}\n\n\t\t// Portable extraction of components.\n\t\tGLM_CONSTEXPR bool negative() const { return i < 0; }\n\t\tGLM_CONSTEXPR int_type mantissa() const { return i & ((1 << 23) - 1); }\n\t\tGLM_CONSTEXPR int_type exponent() const { return (i >> 23) & ((1 << 8) - 1); }\n\n\t\tint_type i;\n\t\tfloat_type f;\n\t};\n\n\ttemplate <>\n\tunion float_t<double>\n\t{\n\t\ttypedef detail::int64 int_type;\n\t\ttypedef double float_type;\n\n\t\tGLM_CONSTEXPR float_t(float_type Num = static_cast<float_type>(0)) : f(Num) {}\n\n\t\tGLM_CONSTEXPR float_t& operator=(float_t const& x)\n\t\t{\n\t\t\tf = x.f;\n\t\t\treturn *this;\n\t\t}\n\n\t\t// Portable extraction of components.\n\t\tGLM_CONSTEXPR bool negative() const { return i < 0; }\n\t\tGLM_CONSTEXPR int_type mantissa() const { return i & ((int_type(1) << 52) - 1); }\n\t\tGLM_CONSTEXPR int_type exponent() const { return (i >> 52) & ((int_type(1) << 11) - 1); }\n\n\t\tint_type i;\n\t\tfloat_type f;\n\t};\n}//namespace detail\n}//namespace glm\n\n#if GLM_COMPILER == GLM_COMPILER_VC12\n#\tpragma warning(pop)\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_half.hpp",
    "content": "#pragma once\n\n#include \"setup.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttypedef short hdata;\n\n\tGLM_FUNC_DECL float toFloat32(hdata value);\n\tGLM_FUNC_DECL hdata toFloat16(float const& value);\n\n}//namespace detail\n}//namespace glm\n\n#include \"type_half.inl\"\n"
  },
  {
    "path": "libraries/glm/detail/type_half.inl",
    "content": "namespace glm{\nnamespace detail\n{\n\tGLM_FUNC_QUALIFIER float overflow()\n\t{\n\t\tvolatile float f = 1e10;\n\n\t\tfor(int i = 0; i < 10; ++i)\n\t\t\tf = f * f; // this will overflow before the for loop terminates\n\t\treturn f;\n\t}\n\n\tunion uif32\n\t{\n\t\tGLM_FUNC_QUALIFIER uif32() :\n\t\t\ti(0)\n\t\t{}\n\n\t\tGLM_FUNC_QUALIFIER uif32(float f_) :\n\t\t\tf(f_)\n\t\t{}\n\n\t\tGLM_FUNC_QUALIFIER uif32(unsigned int i_) :\n\t\t\ti(i_)\n\t\t{}\n\n\t\tfloat f;\n\t\tunsigned int i;\n\t};\n\n\tGLM_FUNC_QUALIFIER float toFloat32(hdata value)\n\t{\n\t\tint s = (value >> 15) & 0x00000001;\n\t\tint e = (value >> 10) & 0x0000001f;\n\t\tint m =  value        & 0x000003ff;\n\n\t\tif(e == 0)\n\t\t{\n\t\t\tif(m == 0)\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// Plus or minus zero\n\t\t\t\t//\n\n\t\t\t\tdetail::uif32 result;\n\t\t\t\tresult.i = static_cast<unsigned int>(s << 31);\n\t\t\t\treturn result.f;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// Denormalized number -- renormalize it\n\t\t\t\t//\n\n\t\t\t\twhile(!(m & 0x00000400))\n\t\t\t\t{\n\t\t\t\t\tm <<= 1;\n\t\t\t\t\te -=  1;\n\t\t\t\t}\n\n\t\t\t\te += 1;\n\t\t\t\tm &= ~0x00000400;\n\t\t\t}\n\t\t}\n\t\telse if(e == 31)\n\t\t{\n\t\t\tif(m == 0)\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// Positive or negative infinity\n\t\t\t\t//\n\n\t\t\t\tuif32 result;\n\t\t\t\tresult.i = static_cast<unsigned int>((s << 31) | 0x7f800000);\n\t\t\t\treturn result.f;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// Nan -- preserve sign and significand bits\n\t\t\t\t//\n\n\t\t\t\tuif32 result;\n\t\t\t\tresult.i = static_cast<unsigned int>((s << 31) | 0x7f800000 | (m << 13));\n\t\t\t\treturn result.f;\n\t\t\t}\n\t\t}\n\n\t\t//\n\t\t// Normalized number\n\t\t//\n\n\t\te = e + (127 - 15);\n\t\tm = m << 13;\n\n\t\t//\n\t\t// Assemble s, e and m.\n\t\t//\n\n\t\tuif32 Result;\n\t\tResult.i = static_cast<unsigned int>((s << 31) | (e << 23) | m);\n\t\treturn Result.f;\n\t}\n\n\tGLM_FUNC_QUALIFIER hdata toFloat16(float const& f)\n\t{\n\t\tuif32 Entry;\n\t\tEntry.f = f;\n\t\tint i = static_cast<int>(Entry.i);\n\n\t\t//\n\t\t// Our floating point number, f, is represented by the bit\n\t\t// pattern in integer i.  Disassemble that bit pattern into\n\t\t// the sign, s, the exponent, e, and the significand, m.\n\t\t// Shift s into the position where it will go in the\n\t\t// resulting half number.\n\t\t// Adjust e, accounting for the different exponent bias\n\t\t// of float and half (127 versus 15).\n\t\t//\n\n\t\tint s =  (i >> 16) & 0x00008000;\n\t\tint e = ((i >> 23) & 0x000000ff) - (127 - 15);\n\t\tint m =   i        & 0x007fffff;\n\n\t\t//\n\t\t// Now reassemble s, e and m into a half:\n\t\t//\n\n\t\tif(e <= 0)\n\t\t{\n\t\t\tif(e < -10)\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// E is less than -10.  The absolute value of f is\n\t\t\t\t// less than half_MIN (f may be a small normalized\n\t\t\t\t// float, a denormalized float or a zero).\n\t\t\t\t//\n\t\t\t\t// We convert f to a half zero.\n\t\t\t\t//\n\n\t\t\t\treturn hdata(s);\n\t\t\t}\n\n\t\t\t//\n\t\t\t// E is between -10 and 0.  F is a normalized float,\n\t\t\t// whose magnitude is less than __half_NRM_MIN.\n\t\t\t//\n\t\t\t// We convert f to a denormalized half.\n\t\t\t//\n\n\t\t\tm = (m | 0x00800000) >> (1 - e);\n\n\t\t\t//\n\t\t\t// Round to nearest, round \"0.5\" up.\n\t\t\t//\n\t\t\t// Rounding may cause the significand to overflow and make\n\t\t\t// our number normalized.  Because of the way a half's bits\n\t\t\t// are laid out, we don't have to treat this case separately;\n\t\t\t// the code below will handle it correctly.\n\t\t\t//\n\n\t\t\tif(m & 0x00001000)\n\t\t\t\tm += 0x00002000;\n\n\t\t\t//\n\t\t\t// Assemble the half from s, e (zero) and m.\n\t\t\t//\n\n\t\t\treturn hdata(s | (m >> 13));\n\t\t}\n\t\telse if(e == 0xff - (127 - 15))\n\t\t{\n\t\t\tif(m == 0)\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// F is an infinity; convert f to a half\n\t\t\t\t// infinity with the same sign as f.\n\t\t\t\t//\n\n\t\t\t\treturn hdata(s | 0x7c00);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//\n\t\t\t\t// F is a NAN; we produce a half NAN that preserves\n\t\t\t\t// the sign bit and the 10 leftmost bits of the\n\t\t\t\t// significand of f, with one exception: If the 10\n\t\t\t\t// leftmost bits are all zero, the NAN would turn\n\t\t\t\t// into an infinity, so we have to set at least one\n\t\t\t\t// bit in the significand.\n\t\t\t\t//\n\n\t\t\t\tm >>= 13;\n\n\t\t\t\treturn hdata(s | 0x7c00 | m | (m == 0));\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t//\n\t\t\t// E is greater than zero.  F is a normalized float.\n\t\t\t// We try to convert f to a normalized half.\n\t\t\t//\n\n\t\t\t//\n\t\t\t// Round to nearest, round \"0.5\" up\n\t\t\t//\n\n\t\t\tif(m &  0x00001000)\n\t\t\t{\n\t\t\t\tm += 0x00002000;\n\n\t\t\t\tif(m & 0x00800000)\n\t\t\t\t{\n\t\t\t\t\tm =  0;     // overflow in significand,\n\t\t\t\t\te += 1;     // adjust exponent\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//\n\t\t\t// Handle exponent overflow\n\t\t\t//\n\n\t\t\tif (e > 30)\n\t\t\t{\n\t\t\t\toverflow();        // Cause a hardware floating point overflow;\n\n\t\t\t\treturn hdata(s | 0x7c00);\n\t\t\t\t// if this returns, the half becomes an\n\t\t\t}   // infinity with the same sign as f.\n\n\t\t\t//\n\t\t\t// Assemble the half from s, e and m.\n\t\t\t//\n\n\t\t\treturn hdata(s | (e << 10) | (m >> 13));\n\t\t}\n\t}\n\n}//namespace detail\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x2.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat2x2.hpp\n\n#pragma once\n\n#include \"type_vec2.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<2, 2, T, Q>\n\t{\n\t\ttypedef vec<2, T, Q> col_type;\n\t\ttypedef vec<2, T, Q> row_type;\n\t\ttypedef mat<2, 2, T, Q> type;\n\t\ttypedef mat<2, 2, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[2];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<2, 2, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT const& x1, T const& y1,\n\t\t\tT const& x2, T const& y2);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<typename U, typename V, typename M, typename N>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tU const& x1, V const& y1,\n\t\t\tM const& x2, N const& y2);\n\n\t\ttemplate<typename U, typename V>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<2, U, Q> const& v1,\n\t\t\tvec<2, V, Q> const& v2);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator=(mat<2, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator+=(mat<2, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator-=(mat<2, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator*=(mat<2, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator/=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator/=(mat<2, 2, U, Q> const& m);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator++ ();\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> & operator-- ();\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<2, 2, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator+(T scalar, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator-(T scalar, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator*(T scalar, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 2, T, Q>::col_type operator*(mat<2, 2, T, Q> const& m, typename mat<2, 2, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 2, T, Q>::row_type operator*(typename mat<2, 2, T, Q>::col_type const& v, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator/(T scalar, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 2, T, Q>::col_type operator/(mat<2, 2, T, Q> const& m, typename mat<2, 2, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 2, T, Q>::row_type operator/(typename mat<2, 2, T, Q>::col_type const& v, mat<2, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n} //namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat2x2.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x2.inl",
    "content": "#include \"../matrix.hpp\"\n\nnamespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0), col_type(0, 1)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<2, 2, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{m[0], m[1]}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(T scalar)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(scalar, 0), col_type(0, scalar)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(scalar, 0);\n\t\t\tthis->value[1] = col_type(0, scalar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat\n\t(\n\t\tT const& x0, T const& y0,\n\t\tT const& x1, T const& y1\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0), col_type(x1, y1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0);\n\t\t\tthis->value[1] = col_type(x1, y1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(col_type const& v0, col_type const& v1)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{v0, v1}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X1, typename Y1, typename X2, typename Y2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat\n\t(\n\t\tX1 const& x1, Y1 const& y1,\n\t\tX2 const& x2, Y2 const& y2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(static_cast<T>(x1), value_type(y1)), col_type(static_cast<T>(x2), value_type(y2)) }\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(static_cast<T>(x1), value_type(y1));\n\t\t\tthis->value[1] = col_type(static_cast<T>(x2), value_type(y2));\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(vec<2, V1, Q> const& v1, vec<2, V2, Q> const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- mat2x2 matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<2, 2, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::col_type& mat<2, 2, T, Q>::operator[](typename mat<2, 2, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<2, 2, T, Q>::col_type const& mat<2, 2, T, Q>::operator[](typename mat<2, 2, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator=(mat<2, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator+=(U scalar)\n\t{\n\t\tthis->value[0] += scalar;\n\t\tthis->value[1] += scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator+=(mat<2, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator-=(U scalar)\n\t{\n\t\tthis->value[0] -= scalar;\n\t\tthis->value[1] -= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator-=(mat<2, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator*=(U scalar)\n\t{\n\t\tthis->value[0] *= scalar;\n\t\tthis->value[1] *= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator*=(mat<2, 2, U, Q> const& m)\n\t{\n\t\treturn (*this = *this * m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator/=(U scalar)\n\t{\n\t\tthis->value[0] /= scalar;\n\t\tthis->value[1] /= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator/=(mat<2, 2, U, Q> const& m)\n\t{\n\t\treturn *this *= inverse(m);\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q>& mat<2, 2, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> mat<2, 2, T, Q>::operator++(int)\n\t{\n\t\tmat<2, 2, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> mat<2, 2, T, Q>::operator--(int)\n\t{\n\t\tmat<2, 2, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator+(T scalar, mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(T scalar, mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tscalar - m[0],\n\t\t\tscalar - m[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(T scalar, mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::col_type operator*\n\t(\n\t\tmat<2, 2, T, Q> const& m,\n\t\ttypename mat<2, 2, T, Q>::row_type const& v\n\t)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::row_type operator*\n\t(\n\t\ttypename mat<2, 2, T, Q>::col_type const& v,\n\t\tmat<2, 2, T, Q> const& m\n\t)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x * m[0][0] + v.y * m[0][1],\n\t\t\tv.x * m[1][0] + v.y * m[1][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(T scalar, mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::col_type operator/(mat<2, 2, T, Q> const& m, typename mat<2, 2, T, Q>::row_type const& v)\n\t{\n\t\treturn inverse(m) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 2, T, Q>::row_type operator/(typename mat<2, 2, T, Q>::col_type const& v, mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn v *  inverse(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\tmat<2, 2, T, Q> m1_copy(m1);\n\t\treturn m1_copy /= m2;\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x3.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat2x3.hpp\n\n#pragma once\n\n#include \"type_vec2.hpp\"\n#include \"type_vec3.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<2, 3, T, Q>\n\t{\n\t\ttypedef vec<3, T, Q> col_type;\n\t\ttypedef vec<2, T, Q> row_type;\n\t\ttypedef mat<2, 3, T, Q> type;\n\t\ttypedef mat<3, 2, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[2];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<2, 3, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0, T z0,\n\t\t\tT x1, T y1, T z1);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 x1, Y1 y1, Z1 z1,\n\t\t\tX2 x2, Y2 y2, Z2 z2);\n\n\t\ttemplate<typename U, typename V>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<3, U, Q> const& v1,\n\t\t\tvec<3, V, Q> const& v2);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator=(mat<2, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator+=(mat<2, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator-=(mat<2, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator++ ();\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> & operator-- ();\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<2, 3, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator*(T scalar, mat<2, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 3, T, Q>::col_type operator*(mat<2, 3, T, Q> const& m, typename mat<2, 3, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 3, T, Q>::row_type operator*(typename mat<2, 3, T, Q>::col_type const& v, mat<2, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator/(mat<2, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator/(T scalar, mat<2, 3, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat2x3.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x3.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0), col_type(0, 1, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 3, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{m.value[0], m.value[1]}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m.value[0];\n\t\t\tthis->value[1] = m.value[1];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(T scalar)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(scalar, 0, 0), col_type(0, scalar, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(scalar, 0, 0);\n\t\t\tthis->value[1] = col_type(0, scalar, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat\n\t(\n\t\tT x0, T y0, T z0,\n\t\tT x1, T y1, T z1\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0, z0), col_type(x1, y1, z1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(col_type const& v0, col_type const& v1)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v0);\n\t\t\tthis->value[1] = col_type(v1);\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X1, typename Y1, typename Z1,\n\t\ttypename X2, typename Y2, typename Z2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat\n\t(\n\t\tX1 x1, Y1 y1, Z1 z1,\n\t\tX2 x2, Y2 y2, Z2 z2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x1, y1, z1), col_type(x2, y2, z2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x1, y1, z1);\n\t\t\tthis->value[1] = col_type(x2, y2, z2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(vec<3, V1, Q> const& v1, vec<3, V2, Q> const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 3, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR  mat<2, 3, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 3, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 3, T, Q>::col_type & mat<2, 3, T, Q>::operator[](typename mat<2, 3, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<2, 3, T, Q>::col_type const& mat<2, 3, T, Q>::operator[](typename mat<2, 3, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator=(mat<2, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator+=(mat<2, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator-=(mat<2, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q>& mat<2, 3, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> & mat<2, 3, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> mat<2, 3, T, Q>::operator++(int)\n\t{\n\t\tmat<2, 3, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> mat<2, 3, T, Q>::operator--(int)\n\t{\n\t\tmat<2, 3, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(T scalar, mat<2, 3, T, Q> const& m)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 3, T, Q>::col_type operator*\n\t(\n\t\tmat<2, 3, T, Q> const& m,\n\t\ttypename mat<2, 3, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<2, 3, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y,\n\t\t\tm[0][2] * v.x + m[1][2] * v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 3, T, Q>::row_type operator*\n\t(\n\t\ttypename mat<2, 3, T, Q>::col_type const& v,\n\t\tmat<2, 3, T, Q> const& m)\n\t{\n\t\treturn typename mat<2, 3, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2],\n\t\t\tv.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\tT SrcA00 = m1[0][0];\n\t\tT SrcA01 = m1[0][1];\n\t\tT SrcA02 = m1[0][2];\n\t\tT SrcA10 = m1[1][0];\n\t\tT SrcA11 = m1[1][1];\n\t\tT SrcA12 = m1[1][2];\n\n\t\tT SrcB00 = m2[0][0];\n\t\tT SrcB01 = m2[0][1];\n\t\tT SrcB10 = m2[1][0];\n\t\tT SrcB11 = m2[1][1];\n\t\tT SrcB20 = m2[2][0];\n\t\tT SrcB21 = m2[2][1];\n\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;\n\t\tResult[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11;\n\t\tResult[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11;\n\t\tResult[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21;\n\t\tResult[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21;\n\t\tResult[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1],\n\t\t\tm1[0][2] * m2[3][0] + m1[1][2] * m2[3][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator/(mat<2, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator/(T scalar, mat<2, 3, T, Q> const& m)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x4.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat2x4.hpp\n\n#pragma once\n\n#include \"type_vec2.hpp\"\n#include \"type_vec4.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<2, 4, T, Q>\n\t{\n\t\ttypedef vec<4, T, Q> col_type;\n\t\ttypedef vec<2, T, Q> row_type;\n\t\ttypedef mat<2, 4, T, Q> type;\n\t\ttypedef mat<4, 2, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[2];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<2, 4, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0, T z0, T w0,\n\t\t\tT x1, T y1, T z1, T w1);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\t\ttypename X2, typename Y2, typename Z2, typename W2>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 x1, Y1 y1, Z1 z1, W1 w1,\n\t\t\tX2 x2, Y2 y2, Z2 z2, W2 w2);\n\n\t\ttemplate<typename U, typename V>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<4, U, Q> const& v1,\n\t\t\tvec<4, V, Q> const& v2);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator=(mat<2, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator+=(mat<2, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator-=(mat<2, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator++ ();\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> & operator-- ();\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<2, 4, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 4, T, Q>::col_type operator*(mat<2, 4, T, Q> const& m, typename mat<2, 4, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<2, 4, T, Q>::row_type operator*(typename mat<2, 4, T, Q>::col_type const& v, mat<2, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<2, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator/(mat<2, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator/(T scalar, mat<2, 4, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat2x4.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat2x4.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0, 0), col_type(0, 1, 0, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<2, 4, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{m[0], m[1]}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(T s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0, 0, 0), col_type(0, s, 0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0, 0, 0);\n\t\t\tthis->value[1] = col_type(0, s, 0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat\n\t(\n\t\tT x0, T y0, T z0, T w0,\n\t\tT x1, T y1, T z1, T w1\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0, z0, w0), col_type(x1, y1, z1, w1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0, w0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1, w1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(col_type const& v0, col_type const& v1)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\ttypename X2, typename Y2, typename Z2, typename W2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat\n\t(\n\t\tX1 x1, Y1 y1, Z1 z1, W1 w1,\n\t\tX2 x2, Y2 y2, Z2 z2, W2 w2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{\n\t\t\t\tcol_type(x1, y1, z1, w1),\n\t\t\t\tcol_type(x2, y2, z2, w2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x1, y1, z1, w1);\n\t\t\tthis->value[1] = col_type(x2, y2, z2, w2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(vec<4, V1, Q> const& v1, vec<4, V2, Q> const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<2, 4, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 4, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 4, T, Q>::col_type & mat<2, 4, T, Q>::operator[](typename mat<2, 4, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<2, 4, T, Q>::col_type const& mat<2, 4, T, Q>::operator[](typename mat<2, 4, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator=(mat<2, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator+=(mat<2, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator-=(mat<2, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> & mat<2, 4, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q>& mat<2, 4, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> mat<2, 4, T, Q>::operator++(int)\n\t{\n\t\tmat<2, 4, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> mat<2, 4, T, Q>::operator--(int)\n\t{\n\t\tmat<2, 4, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 4, T, Q>::col_type operator*(mat<2, 4, T, Q> const& m, typename mat<2, 4, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<2, 4, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y,\n\t\t\tm[0][2] * v.x + m[1][2] * v.y,\n\t\t\tm[0][3] * v.x + m[1][3] * v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<2, 4, T, Q>::row_type operator*(typename mat<2, 4, T, Q>::col_type const& v, mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn typename mat<2, 4, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2] + v.w * m[0][3],\n\t\t\tv.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2] + v.w * m[1][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\tT SrcA00 = m1[0][0];\n\t\tT SrcA01 = m1[0][1];\n\t\tT SrcA02 = m1[0][2];\n\t\tT SrcA03 = m1[0][3];\n\t\tT SrcA10 = m1[1][0];\n\t\tT SrcA11 = m1[1][1];\n\t\tT SrcA12 = m1[1][2];\n\t\tT SrcA13 = m1[1][3];\n\n\t\tT SrcB00 = m2[0][0];\n\t\tT SrcB01 = m2[0][1];\n\t\tT SrcB10 = m2[1][0];\n\t\tT SrcB11 = m2[1][1];\n\t\tT SrcB20 = m2[2][0];\n\t\tT SrcB21 = m2[2][1];\n\t\tT SrcB30 = m2[3][0];\n\t\tT SrcB31 = m2[3][1];\n\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;\n\t\tResult[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;\n\t\tResult[0][3] = SrcA03 * SrcB00 + SrcA13 * SrcB01;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11;\n\t\tResult[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11;\n\t\tResult[1][3] = SrcA03 * SrcB10 + SrcA13 * SrcB11;\n\t\tResult[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21;\n\t\tResult[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21;\n\t\tResult[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21;\n\t\tResult[2][3] = SrcA03 * SrcB20 + SrcA13 * SrcB21;\n\t\tResult[3][0] = SrcA00 * SrcB30 + SrcA10 * SrcB31;\n\t\tResult[3][1] = SrcA01 * SrcB30 + SrcA11 * SrcB31;\n\t\tResult[3][2] = SrcA02 * SrcB30 + SrcA12 * SrcB31;\n\t\tResult[3][3] = SrcA03 * SrcB30 + SrcA13 * SrcB31;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<2, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],\n\t\t\tm1[0][3] * m2[2][0] + m1[1][3] * m2[2][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator/(mat<2, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator/(T scalar, mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x2.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat3x2.hpp\n\n#pragma once\n\n#include \"type_vec2.hpp\"\n#include \"type_vec3.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<3, 2, T, Q>\n\t{\n\t\ttypedef vec<2, T, Q> col_type;\n\t\ttypedef vec<3, T, Q> row_type;\n\t\ttypedef mat<3, 2, T, Q> type;\n\t\ttypedef mat<2, 3, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[3];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<3, 2, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0,\n\t\t\tT x1, T y1,\n\t\t\tT x2, T y2);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1,\n\t\t\ttypename X2, typename Y2,\n\t\t\ttypename X3, typename Y3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 x1, Y1 y1,\n\t\t\tX2 x2, Y2 y2,\n\t\t\tX3 x3, Y3 y3);\n\n\t\ttemplate<typename V1, typename V2, typename V3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<2, V1, Q> const& v1,\n\t\t\tvec<2, V2, Q> const& v2,\n\t\t\tvec<2, V3, Q> const& v3);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator=(mat<3, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator+=(mat<3, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator-=(mat<3, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator++ ();\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> & operator-- ();\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<3, 2, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator*(T scalar, mat<3, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 2, T, Q>::col_type operator*(mat<3, 2, T, Q> const& m, typename mat<3, 2, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 2, T, Q>::row_type operator*(typename mat<3, 2, T, Q>::col_type const& v, mat<3, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator/(mat<3, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator/(T scalar, mat<3, 2, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);\n\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat3x2.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x2.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0), col_type(0, 1), col_type(0, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1);\n\t\t\t\tthis->value[2] = col_type(0, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 2, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(T s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0), col_type(0, s), col_type(0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0);\n\t\t\tthis->value[1] = col_type(0, s);\n\t\t\tthis->value[2] = col_type(0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat\n\t(\n\t\tT x0, T y0,\n\t\tT x1, T y1,\n\t\tT x2, T y2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0);\n\t\t\tthis->value[1] = col_type(x1, y1);\n\t\t\tthis->value[2] = col_type(x2, y2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n\t\t\tthis->value[2] = v2;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X0, typename Y0,\n\t\ttypename X1, typename Y1,\n\t\ttypename X2, typename Y2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat\n\t(\n\t\tX0 x0, Y0 y0,\n\t\tX1 x1, Y1 y1,\n\t\tX2 x2, Y2 y2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0);\n\t\t\tthis->value[1] = col_type(x1, y1);\n\t\t\tthis->value[2] = col_type(x2, y2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V0, typename V1, typename V2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(vec<2, V0, Q> const& v0, vec<2, V1, Q> const& v1, vec<2, V2, Q> const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v0);\n\t\t\tthis->value[1] = col_type(v1);\n\t\t\tthis->value[2] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 2, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 2, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 2, T, Q>::col_type & mat<3, 2, T, Q>::operator[](typename mat<3, 2, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<3, 2, T, Q>::col_type const& mat<3, 2, T, Q>::operator[](typename mat<3, 2, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator=(mat<3, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator+=(mat<3, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator-=(mat<3, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> & mat<3, 2, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q>& mat<3, 2, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> mat<3, 2, T, Q>::operator++(int)\n\t{\n\t\tmat<3, 2, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> mat<3, 2, T, Q>::operator--(int)\n\t{\n\t\tmat<3, 2, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar,\n\t\t\tm[2] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar,\n\t\t\tm[2] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(T scalar, mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 2, T, Q>::col_type operator*(mat<3, 2, T, Q> const& m, typename mat<3, 2, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<3, 2, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 2, T, Q>::row_type operator*(typename mat<3, 2, T, Q>::col_type const& v, mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn typename mat<3, 2, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1],\n\t\t\tv.x * m[1][0] + v.y * m[1][1],\n\t\t\tv.x * m[2][0] + v.y * m[2][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\tconst T SrcA00 = m1[0][0];\n\t\tconst T SrcA01 = m1[0][1];\n\t\tconst T SrcA10 = m1[1][0];\n\t\tconst T SrcA11 = m1[1][1];\n\t\tconst T SrcA20 = m1[2][0];\n\t\tconst T SrcA21 = m1[2][1];\n\n\t\tconst T SrcB00 = m2[0][0];\n\t\tconst T SrcB01 = m2[0][1];\n\t\tconst T SrcB02 = m2[0][2];\n\t\tconst T SrcB10 = m2[1][0];\n\t\tconst T SrcB11 = m2[1][1];\n\t\tconst T SrcB12 = m2[1][2];\n\n\t\tmat<2, 2, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator/(mat<3, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar,\n\t\t\tm[2] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator/(T scalar, mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1],\n\t\t\tscalar / m[2]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x3.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat3x3.hpp\n\n#pragma once\n\n#include \"type_vec3.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<3, 3, T, Q>\n\t{\n\t\ttypedef vec<3, T, Q> col_type;\n\t\ttypedef vec<3, T, Q> row_type;\n\t\ttypedef mat<3, 3, T, Q> type;\n\t\ttypedef mat<3, 3, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[3];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<3, 3, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0, T z0,\n\t\t\tT x1, T y1, T z1,\n\t\t\tT x2, T y2, T z2);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1, typename Z1,\n\t\t\ttypename X2, typename Y2, typename Z2,\n\t\t\ttypename X3, typename Y3, typename Z3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 x1, Y1 y1, Z1 z1,\n\t\t\tX2 x2, Y2 y2, Z2 z2,\n\t\t\tX3 x3, Y3 y3, Z3 z3);\n\n\t\ttemplate<typename V1, typename V2, typename V3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<3, V1, Q> const& v1,\n\t\t\tvec<3, V2, Q> const& v2,\n\t\t\tvec<3, V3, Q> const& v3);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(mat<3, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(mat<3, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(mat<3, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(mat<3, 3, U, Q> const& m);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator++();\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> & operator--();\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<3, 3, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator+(T scalar, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator-(T scalar, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator/(T scalar, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator/(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator/(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat3x3.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x3.inl",
    "content": "#include \"../matrix.hpp\"\n\nnamespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0), col_type(0, 1, 0), col_type(0, 0, 1)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\tthis->value[0] = col_type(1, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0);\n\t\t\t\tthis->value[2] = col_type(0, 0, 1);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<3, 3, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(T s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0, 0), col_type(0, s, 0), col_type(0, 0, s)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0, 0);\n\t\t\tthis->value[1] = col_type(0, s, 0);\n\t\t\tthis->value[2] = col_type(0, 0, s);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat\n\t(\n\t\tT x0, T y0, T z0,\n\t\tT x1, T y1, T z1,\n\t\tT x2, T y2, T z2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0, z0), col_type(x1, y1, z1), col_type(x2, y2, z2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v0);\n\t\t\tthis->value[1] = col_type(v1);\n\t\t\tthis->value[2] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X1, typename Y1, typename Z1,\n\t\ttypename X2, typename Y2, typename Z2,\n\t\ttypename X3, typename Y3, typename Z3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat\n\t(\n\t\tX1 x1, Y1 y1, Z1 z1,\n\t\tX2 x2, Y2 y2, Z2 z2,\n\t\tX3 x3, Y3 y3, Z3 z3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x1, y1, z1), col_type(x2, y2, z2), col_type(x3, y3, z3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x1, y1, z1);\n\t\t\tthis->value[1] = col_type(x2, y2, z2);\n\t\t\tthis->value[2] = col_type(x3, y3, z3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2, typename V3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(vec<3, V1, Q> const& v1, vec<3, V2, Q> const& v2, vec<3, V3, Q> const& v3)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2), col_type(v3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n\t\t\tthis->value[2] = col_type(v3);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<3, 3, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::col_type & mat<3, 3, T, Q>::operator[](typename mat<3, 3, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<3, 3, T, Q>::col_type const& mat<3, 3, T, Q>::operator[](typename mat<3, 3, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator=(mat<3, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator+=(mat<3, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator-=(mat<3, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator*=(mat<3, 3, U, Q> const& m)\n\t{\n\t\treturn (*this = *this * m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator/=(mat<3, 3, U, Q> const& m)\n\t{\n\t\treturn *this *= inverse(m);\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> & mat<3, 3, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> mat<3, 3, T, Q>::operator++(int)\n\t{\n\t\tmat<3, 3, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> mat<3, 3, T, Q>::operator--(int)\n\t{\n\t\tmat<3, 3, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar,\n\t\t\tm[2] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator+(T scalar, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar,\n\t\t\tm[2] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar,\n\t\t\tm[2] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator-(T scalar, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tscalar - m[0],\n\t\t\tscalar - m[1],\n\t\t\tscalar - m[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<3, 3, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z,\n\t\t\tm[0][2] * v.x + m[1][2] * v.y + m[2][2] * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn typename mat<3, 3, T, Q>::row_type(\n\t\t\tm[0][0] * v.x + m[0][1] * v.y + m[0][2] * v.z,\n\t\t\tm[1][0] * v.x + m[1][1] * v.y + m[1][2] * v.z,\n\t\t\tm[2][0] * v.x + m[2][1] * v.y + m[2][2] * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\tT const SrcA00 = m1[0][0];\n\t\tT const SrcA01 = m1[0][1];\n\t\tT const SrcA02 = m1[0][2];\n\t\tT const SrcA10 = m1[1][0];\n\t\tT const SrcA11 = m1[1][1];\n\t\tT const SrcA12 = m1[1][2];\n\t\tT const SrcA20 = m1[2][0];\n\t\tT const SrcA21 = m1[2][1];\n\t\tT const SrcA22 = m1[2][2];\n\n\t\tT const SrcB00 = m2[0][0];\n\t\tT const SrcB01 = m2[0][1];\n\t\tT const SrcB02 = m2[0][2];\n\t\tT const SrcB10 = m2[1][0];\n\t\tT const SrcB11 = m2[1][1];\n\t\tT const SrcB12 = m2[1][2];\n\t\tT const SrcB20 = m2[2][0];\n\t\tT const SrcB21 = m2[2][1];\n\t\tT const SrcB22 = m2[2][2];\n\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;\n\t\tResult[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;\n\t\tResult[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11 + SrcA22 * SrcB12;\n\t\tResult[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21 + SrcA20 * SrcB22;\n\t\tResult[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22;\n\t\tResult[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2],\n\t\t\tm1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m,\tT scalar)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar,\n\t\t\tm[2] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator/(T scalar, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1],\n\t\t\tscalar / m[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::col_type operator/(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v)\n\t{\n\t\treturn  inverse(m) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 3, T, Q>::row_type operator/(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn v * inverse(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\tmat<3, 3, T, Q> m1_copy(m1);\n\t\treturn m1_copy /= m2;\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x4.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat3x4.hpp\n\n#pragma once\n\n#include \"type_vec3.hpp\"\n#include \"type_vec4.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<3, 4, T, Q>\n\t{\n\t\ttypedef vec<4, T, Q> col_type;\n\t\ttypedef vec<3, T, Q> row_type;\n\t\ttypedef mat<3, 4, T, Q> type;\n\t\ttypedef mat<4, 3, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[3];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<3, 4, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0, T z0, T w0,\n\t\t\tT x1, T y1, T z1, T w1,\n\t\t\tT x2, T y2, T z2, T w2);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\t\ttypename X2, typename Y2, typename Z2, typename W2,\n\t\t\ttypename X3, typename Y3, typename Z3, typename W3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 x1, Y1 y1, Z1 z1, W1 w1,\n\t\t\tX2 x2, Y2 y2, Z2 z2, W2 w2,\n\t\t\tX3 x3, Y3 y3, Z3 z3, W3 w3);\n\n\t\ttemplate<typename V1, typename V2, typename V3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<4, V1, Q> const& v1,\n\t\t\tvec<4, V2, Q> const& v2,\n\t\t\tvec<4, V3, Q> const& v3);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator=(mat<3, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator+=(mat<3, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator-=(mat<3, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator++();\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> & operator--();\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<3, 4, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator*(T scalar, mat<3, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 4, T, Q>::col_type operator*(mat<3, 4, T, Q> const& m, typename mat<3, 4, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<3, 4, T, Q>::row_type operator*(typename mat<3, 4, T, Q>::col_type const& v, mat<3, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1,\tmat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<2, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1,\tmat<3, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator/(mat<3, 4, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator/(T scalar, mat<3, 4, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat3x4.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat3x4.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0, 0), col_type(0, 1, 0, 0), col_type(0, 0, 1, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0, 0);\n\t\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<3, 4, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(T s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0, 0, 0), col_type(0, s, 0, 0), col_type(0, 0, s, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0, 0, 0);\n\t\t\tthis->value[1] = col_type(0, s, 0, 0);\n\t\t\tthis->value[2] = col_type(0, 0, s, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat\n\t(\n\t\tT x0, T y0, T z0, T w0,\n\t\tT x1, T y1, T z1, T w1,\n\t\tT x2, T y2, T z2, T w2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{\n\t\t\t\tcol_type(x0, y0, z0, w0),\n\t\t\t\tcol_type(x1, y1, z1, w1),\n\t\t\t\tcol_type(x2, y2, z2, w2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0, w0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1, w1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2, w2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n\t\t\tthis->value[2] = v2;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X0, typename Y0, typename Z0, typename W0,\n\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\ttypename X2, typename Y2, typename Z2, typename W2>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat\n\t(\n\t\tX0 x0, Y0 y0, Z0 z0, W0 w0,\n\t\tX1 x1, Y1 y1, Z1 z1, W1 w1,\n\t\tX2 x2, Y2 y2, Z2 z2, W2 w2\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{\n\t\t\t\tcol_type(x0, y0, z0, w0),\n\t\t\t\tcol_type(x1, y1, z1, w1),\n\t\t\t\tcol_type(x2, y2, z2, w2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0, w0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1, w1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2, w2);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2, typename V3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(vec<4, V1, Q> const& v0, vec<4, V2, Q> const& v1, vec<4, V3, Q> const& v2)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v0);\n\t\t\tthis->value[1] = col_type(v1);\n\t\t\tthis->value[2] = col_type(v2);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<3, 4, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(0, 0, 1, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(0, 0, 1, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(m[2], 1, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(m[2], 1, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(m[2], 1, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(m[2], 1, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 4, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 0);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 4, T, Q>::col_type & mat<3, 4, T, Q>::operator[](typename mat<3, 4, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<3, 4, T, Q>::col_type const& mat<3, 4, T, Q>::operator[](typename mat<3, 4, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator=(mat<3, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator+=(mat<3, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator-=(mat<3, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> & mat<3, 4, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q>& mat<3, 4, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> mat<3, 4, T, Q>::operator++(int)\n\t{\n\t\tmat<3, 4, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> mat<3, 4, T, Q>::operator--(int)\n\t{\n\t\tmat<3, 4, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar,\n\t\t\tm[2] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m,\tT scalar)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar,\n\t\t\tm[2] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(T scalar, mat<3, 4, T, Q> const& m)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 4, T, Q>::col_type operator*\n\t(\n\t\tmat<3, 4, T, Q> const& m,\n\t\ttypename mat<3, 4, T, Q>::row_type const& v\n\t)\n\t{\n\t\treturn typename mat<3, 4, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z,\n\t\t\tm[0][2] * v.x + m[1][2] * v.y + m[2][2] * v.z,\n\t\t\tm[0][3] * v.x + m[1][3] * v.y + m[2][3] * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<3, 4, T, Q>::row_type operator*\n\t(\n\t\ttypename mat<3, 4, T, Q>::col_type const& v,\n\t\tmat<3, 4, T, Q> const& m\n\t)\n\t{\n\t\treturn typename mat<3, 4, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2] + v.w * m[0][3],\n\t\t\tv.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2] + v.w * m[1][3],\n\t\t\tv.x * m[2][0] + v.y * m[2][1] + v.z * m[2][2] + v.w * m[2][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\tconst T SrcA00 = m1[0][0];\n\t\tconst T SrcA01 = m1[0][1];\n\t\tconst T SrcA02 = m1[0][2];\n\t\tconst T SrcA03 = m1[0][3];\n\t\tconst T SrcA10 = m1[1][0];\n\t\tconst T SrcA11 = m1[1][1];\n\t\tconst T SrcA12 = m1[1][2];\n\t\tconst T SrcA13 = m1[1][3];\n\t\tconst T SrcA20 = m1[2][0];\n\t\tconst T SrcA21 = m1[2][1];\n\t\tconst T SrcA22 = m1[2][2];\n\t\tconst T SrcA23 = m1[2][3];\n\n\t\tconst T SrcB00 = m2[0][0];\n\t\tconst T SrcB01 = m2[0][1];\n\t\tconst T SrcB02 = m2[0][2];\n\t\tconst T SrcB10 = m2[1][0];\n\t\tconst T SrcB11 = m2[1][1];\n\t\tconst T SrcB12 = m2[1][2];\n\t\tconst T SrcB20 = m2[2][0];\n\t\tconst T SrcB21 = m2[2][1];\n\t\tconst T SrcB22 = m2[2][2];\n\t\tconst T SrcB30 = m2[3][0];\n\t\tconst T SrcB31 = m2[3][1];\n\t\tconst T SrcB32 = m2[3][2];\n\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;\n\t\tResult[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02;\n\t\tResult[0][3] = SrcA03 * SrcB00 + SrcA13 * SrcB01 + SrcA23 * SrcB02;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;\n\t\tResult[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11 + SrcA22 * SrcB12;\n\t\tResult[1][3] = SrcA03 * SrcB10 + SrcA13 * SrcB11 + SrcA23 * SrcB12;\n\t\tResult[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21 + SrcA20 * SrcB22;\n\t\tResult[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22;\n\t\tResult[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22;\n\t\tResult[2][3] = SrcA03 * SrcB20 + SrcA13 * SrcB21 + SrcA23 * SrcB22;\n\t\tResult[3][0] = SrcA00 * SrcB30 + SrcA10 * SrcB31 + SrcA20 * SrcB32;\n\t\tResult[3][1] = SrcA01 * SrcB30 + SrcA11 * SrcB31 + SrcA21 * SrcB32;\n\t\tResult[3][2] = SrcA02 * SrcB30 + SrcA12 * SrcB31 + SrcA22 * SrcB32;\n\t\tResult[3][3] = SrcA03 * SrcB30 + SrcA13 * SrcB31 + SrcA23 * SrcB32;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<2, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<3, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2],\n\t\t\tm1[0][3] * m2[2][0] + m1[1][3] * m2[2][1] + m1[2][3] * m2[2][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator/(mat<3, 4, T, Q> const& m,\tT scalar)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar,\n\t\t\tm[2] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator/(T scalar, mat<3, 4, T, Q> const& m)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1],\n\t\t\tscalar / m[2]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x2.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat4x2.hpp\n\n#pragma once\n\n#include \"type_vec2.hpp\"\n#include \"type_vec4.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<4, 2, T, Q>\n\t{\n\t\ttypedef vec<2, T, Q> col_type;\n\t\ttypedef vec<4, T, Q> row_type;\n\t\ttypedef mat<4, 2, T, Q> type;\n\t\ttypedef mat<2, 4, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[4];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 4; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<4, 2, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT x0, T y0,\n\t\t\tT x1, T y1,\n\t\t\tT x2, T y2,\n\t\t\tT x3, T y3);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2,\n\t\t\tcol_type const& v3);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X0, typename Y0,\n\t\t\ttypename X1, typename Y1,\n\t\t\ttypename X2, typename Y2,\n\t\t\ttypename X3, typename Y3>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX0 x0, Y0 y0,\n\t\t\tX1 x1, Y1 y1,\n\t\t\tX2 x2, Y2 y2,\n\t\t\tX3 x3, Y3 y3);\n\n\t\ttemplate<typename V1, typename V2, typename V3, typename V4>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<2, V1, Q> const& v1,\n\t\t\tvec<2, V2, Q> const& v2,\n\t\t\tvec<2, V3, Q> const& v3,\n\t\t\tvec<2, V4, Q> const& v4);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator=(mat<4, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator+=(mat<4, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator-=(mat<4, 2, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator++ ();\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> & operator-- ();\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<4, 2, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m1,\tmat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator*(T scalar, mat<4, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 2, T, Q>::col_type operator*(mat<4, 2, T, Q> const& m, typename mat<4, 2, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 2, T, Q>::row_type operator*(typename mat<4, 2, T, Q>::col_type const& v, mat<4, 2, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator/(mat<4, 2, T, Q> const& m, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> operator/(T scalar, mat<4, 2, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat4x2.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x2.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0), col_type(0, 1), col_type(0, 0), col_type(0, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1);\n\t\t\t\tthis->value[2] = col_type(0, 0);\n\t\t\t\tthis->value[3] = col_type(0, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<4, 2, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n\t\t\tthis->value[3] = m[3];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(T s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0), col_type(0, s), col_type(0, 0), col_type(0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0);\n\t\t\tthis->value[1] = col_type(0, s);\n\t\t\tthis->value[2] = col_type(0, 0);\n\t\t\tthis->value[3] = col_type(0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat\n\t(\n\t\tT x0, T y0,\n\t\tT x1, T y1,\n\t\tT x2, T y2,\n\t\tT x3, T y3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2), col_type(x3, y3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0);\n\t\t\tthis->value[1] = col_type(x1, y1);\n\t\t\tthis->value[2] = col_type(x2, y2);\n\t\t\tthis->value[3] = col_type(x3, y3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2, col_type const& v3)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2), col_type(v3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n\t\t\tthis->value[2] = v2;\n\t\t\tthis->value[3] = v3;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X0, typename Y0,\n\t\ttypename X1, typename Y1,\n\t\ttypename X2, typename Y2,\n\t\ttypename X3, typename Y3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat\n\t(\n\t\tX0 x0, Y0 y0,\n\t\tX1 x1, Y1 y1,\n\t\tX2 x2, Y2 y2,\n\t\tX3 x3, Y3 y3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0), col_type(x1, y1), col_type(x2, y2), col_type(x3, y3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0);\n\t\t\tthis->value[1] = col_type(x1, y1);\n\t\t\tthis->value[2] = col_type(x2, y2);\n\t\t\tthis->value[3] = col_type(x3, y3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V0, typename V1, typename V2, typename V3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(vec<2, V0, Q> const& v0, vec<2, V1, Q> const& v1, vec<2, V2, Q> const& v2, vec<2, V3, Q> const& v3)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2), col_type(v3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v0);\n\t\t\tthis->value[1] = col_type(v1);\n\t\t\tthis->value[2] = col_type(v2);\n\t\t\tthis->value[3] = col_type(v3);\n#\t\tendif\n\t}\n\n\t// -- Conversion --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<4, 2, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 2, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 2, T, Q>::col_type & mat<4, 2, T, Q>::operator[](typename mat<4, 2, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<4, 2, T, Q>::col_type const& mat<4, 2, T, Q>::operator[](typename mat<4, 2, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q>& mat<4, 2, T, Q>::operator=(mat<4, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\tthis->value[3] = m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\tthis->value[3] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator+=(mat<4, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\tthis->value[3] += m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\tthis->value[3] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator-=(mat<4, 2, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\tthis->value[3] -= m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\tthis->value[3] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\tthis->value[3] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\t++this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> & mat<4, 2, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\t--this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> mat<4, 2, T, Q>::operator++(int)\n\t{\n\t\tmat<4, 2, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> mat<4, 2, T, Q>::operator--(int)\n\t{\n\t\tmat<4, 2, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2],\n\t\t\t-m[3]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm[0] + scalar,\n\t\t\tm[1] + scalar,\n\t\t\tm[2] + scalar,\n\t\t\tm[3] + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2],\n\t\t\tm1[3] + m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm[0] - scalar,\n\t\t\tm[1] - scalar,\n\t\t\tm[2] - scalar,\n\t\t\tm[3] - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2],\n\t\t\tm1[3] - m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar,\n\t\t\tm[3] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(T scalar, mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm[0] * scalar,\n\t\t\tm[1] * scalar,\n\t\t\tm[2] * scalar,\n\t\t\tm[3] * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 2, T, Q>::col_type operator*(mat<4, 2, T, Q> const& m, typename mat<4, 2, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<4, 2, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z + m[3][0] * v.w,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z + m[3][1] * v.w);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 2, T, Q>::row_type operator*(typename mat<4, 2, T, Q>::col_type const& v, mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn typename mat<4, 2, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1],\n\t\t\tv.x * m[1][0] + v.y * m[1][1],\n\t\t\tv.x * m[2][0] + v.y * m[2][1],\n\t\t\tv.x * m[3][0] + v.y * m[3][1]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\tT const SrcA00 = m1[0][0];\n\t\tT const SrcA01 = m1[0][1];\n\t\tT const SrcA10 = m1[1][0];\n\t\tT const SrcA11 = m1[1][1];\n\t\tT const SrcA20 = m1[2][0];\n\t\tT const SrcA21 = m1[2][1];\n\t\tT const SrcA30 = m1[3][0];\n\t\tT const SrcA31 = m1[3][1];\n\n\t\tT const SrcB00 = m2[0][0];\n\t\tT const SrcB01 = m2[0][1];\n\t\tT const SrcB02 = m2[0][2];\n\t\tT const SrcB03 = m2[0][3];\n\t\tT const SrcB10 = m2[1][0];\n\t\tT const SrcB11 = m2[1][1];\n\t\tT const SrcB12 = m2[1][2];\n\t\tT const SrcB13 = m2[1][3];\n\n\t\tmat<2, 2, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12 + SrcA31 * SrcB13;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2] + m1[3][0] * m2[3][3],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2] + m1[3][1] * m2[3][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator/(mat<4, 2, T, Q> const& m, T scalar)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tm[0] / scalar,\n\t\t\tm[1] / scalar,\n\t\t\tm[2] / scalar,\n\t\t\tm[3] / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> operator/(T scalar, mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn mat<4, 2, T, Q>(\n\t\t\tscalar / m[0],\n\t\t\tscalar / m[1],\n\t\t\tscalar / m[2],\n\t\t\tscalar / m[3]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]) && (m1[3] == m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]) || (m1[3] != m2[3]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x3.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat4x3.hpp\n\n#pragma once\n\n#include \"type_vec3.hpp\"\n#include \"type_vec4.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<4, 3, T, Q>\n\t{\n\t\ttypedef vec<3, T, Q> col_type;\n\t\ttypedef vec<4, T, Q> row_type;\n\t\ttypedef mat<4, 3, T, Q> type;\n\t\ttypedef mat<3, 4, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[4];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 4; }\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<4, 3, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T const& x);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT const& x0, T const& y0, T const& z0,\n\t\t\tT const& x1, T const& y1, T const& z1,\n\t\t\tT const& x2, T const& y2, T const& z2,\n\t\t\tT const& x3, T const& y3, T const& z3);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2,\n\t\t\tcol_type const& v3);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1, typename Z1,\n\t\t\ttypename X2, typename Y2, typename Z2,\n\t\t\ttypename X3, typename Y3, typename Z3,\n\t\t\ttypename X4, typename Y4, typename Z4>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 const& x1, Y1 const& y1, Z1 const& z1,\n\t\t\tX2 const& x2, Y2 const& y2, Z2 const& z2,\n\t\t\tX3 const& x3, Y3 const& y3, Z3 const& z3,\n\t\t\tX4 const& x4, Y4 const& y4, Z4 const& z4);\n\n\t\ttemplate<typename V1, typename V2, typename V3, typename V4>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<3, V1, Q> const& v1,\n\t\t\tvec<3, V2, Q> const& v2,\n\t\t\tvec<3, V3, Q> const& v3,\n\t\t\tvec<3, V4, Q> const& v4);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator=(mat<4, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator+=(mat<4, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator-=(mat<4, 3, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> & operator/=(U s);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q>& operator++();\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q>& operator--();\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<4, 3, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator*(T const& s, mat<4, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 3, T, Q>::col_type operator*(mat<4, 3, T, Q> const& m, typename mat<4, 3, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 3, T, Q>::row_type operator*(typename mat<4, 3, T, Q>::col_type const& v, mat<4, 3, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1,\tmat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator/(mat<4, 3, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> operator/(T const& s, mat<4, 3, T, Q> const& m);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat4x3.inl\"\n#endif //GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x3.inl",
    "content": "namespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0), col_type(0, 1, 0), col_type(0, 0, 1), col_type(0, 0, 0)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0);\n\t\t\t\tthis->value[2] = col_type(0, 0, 1);\n\t\t\t\tthis->value[3] = col_type(0, 0, 0);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<4, 3, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n\t\t\tthis->value[3] = m[3];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(T const& s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0, 0), col_type(0, s, 0), col_type(0, 0, s), col_type(0, 0, 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0, 0);\n\t\t\tthis->value[1] = col_type(0, s, 0);\n\t\t\tthis->value[2] = col_type(0, 0, s);\n\t\t\tthis->value[3] = col_type(0, 0, 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat\n\t(\n\t\tT const& x0, T const& y0, T const& z0,\n\t\tT const& x1, T const& y1, T const& z1,\n\t\tT const& x2, T const& y2, T const& z2,\n\t\tT const& x3, T const& y3, T const& z3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0, z0), col_type(x1, y1, z1), col_type(x2, y2, z2), col_type(x3, y3, z3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2);\n\t\t\tthis->value[3] = col_type(x3, y3, z3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2, col_type const& v3)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2), col_type(v3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n\t\t\tthis->value[2] = v2;\n\t\t\tthis->value[3] = v3;\n#\t\tendif\n\t}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X0, typename Y0, typename Z0,\n\t\ttypename X1, typename Y1, typename Z1,\n\t\ttypename X2, typename Y2, typename Z2,\n\t\ttypename X3, typename Y3, typename Z3>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat\n\t(\n\t\tX0 const& x0, Y0 const& y0, Z0 const& z0,\n\t\tX1 const& x1, Y1 const& y1, Z1 const& z1,\n\t\tX2 const& x2, Y2 const& y2, Z2 const& z2,\n\t\tX3 const& x3, Y3 const& y3, Z3 const& z3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x0, y0, z0), col_type(x1, y1, z1), col_type(x2, y2, z2), col_type(x3, y3, z3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2);\n\t\t\tthis->value[3] = col_type(x3, y3, z3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2, typename V3, typename V4>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(vec<3, V1, Q> const& v1, vec<3, V2, Q> const& v2, vec<3, V3, Q> const& v3, vec<3, V4, Q> const& v4)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2), col_type(v3), col_type(v4)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n\t\t\tthis->value[2] = col_type(v3);\n\t\t\tthis->value[3] = col_type(v4);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<4, 3, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(0, 0, 1), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<4, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 1), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 1);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(0, 0, 1);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 1), col_type(m[3], 0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 1);\n\t\t\tthis->value[3] = col_type(m[3], 0);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 3, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(0);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 3, T, Q>::col_type & mat<4, 3, T, Q>::operator[](typename mat<4, 3, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<4, 3, T, Q>::col_type const& mat<4, 3, T, Q>::operator[](typename mat<4, 3, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary updatable operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q>& mat<4, 3, T, Q>::operator=(mat<4, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\tthis->value[3] = m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\tthis->value[3] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator+=(mat<4, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\tthis->value[3] += m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\tthis->value[3] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator-=(mat<4, 3, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\tthis->value[3] -= m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\tthis->value[3] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\tthis->value[3] /= s;\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\t++this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> & mat<4, 3, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\t--this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> mat<4, 3, T, Q>::operator++(int)\n\t{\n\t\tmat<4, 3, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> mat<4, 3, T, Q>::operator--(int)\n\t{\n\t\tmat<4, 3, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2],\n\t\t\t-m[3]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm[0] + s,\n\t\t\tm[1] + s,\n\t\t\tm[2] + s,\n\t\t\tm[3] + s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2],\n\t\t\tm1[3] + m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm[0] - s,\n\t\t\tm[1] - s,\n\t\t\tm[2] - s,\n\t\t\tm[3] - s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2],\n\t\t\tm1[3] - m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm[0] * s,\n\t\t\tm[1] * s,\n\t\t\tm[2] * s,\n\t\t\tm[3] * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(T const& s, mat<4, 3, T, Q> const& m)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm[0] * s,\n\t\t\tm[1] * s,\n\t\t\tm[2] * s,\n\t\t\tm[3] * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 3, T, Q>::col_type operator*\n\t(\n\t\tmat<4, 3, T, Q> const& m,\n\t\ttypename mat<4, 3, T, Q>::row_type const& v)\n\t{\n\t\treturn typename mat<4, 3, T, Q>::col_type(\n\t\t\tm[0][0] * v.x + m[1][0] * v.y + m[2][0] * v.z + m[3][0] * v.w,\n\t\t\tm[0][1] * v.x + m[1][1] * v.y + m[2][1] * v.z + m[3][1] * v.w,\n\t\t\tm[0][2] * v.x + m[1][2] * v.y + m[2][2] * v.z + m[3][2] * v.w);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 3, T, Q>::row_type operator*\n\t(\n\t\ttypename mat<4, 3, T, Q>::col_type const& v,\n\t\tmat<4, 3, T, Q> const& m)\n\t{\n\t\treturn typename mat<4, 3, T, Q>::row_type(\n\t\t\tv.x * m[0][0] + v.y * m[0][1] + v.z * m[0][2],\n\t\t\tv.x * m[1][0] + v.y * m[1][1] + v.z * m[1][2],\n\t\t\tv.x * m[2][0] + v.y * m[2][1] + v.z * m[2][2],\n\t\t\tv.x * m[3][0] + v.y * m[3][1] + v.z * m[3][2]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\tT const SrcA00 = m1[0][0];\n\t\tT const SrcA01 = m1[0][1];\n\t\tT const SrcA02 = m1[0][2];\n\t\tT const SrcA10 = m1[1][0];\n\t\tT const SrcA11 = m1[1][1];\n\t\tT const SrcA12 = m1[1][2];\n\t\tT const SrcA20 = m1[2][0];\n\t\tT const SrcA21 = m1[2][1];\n\t\tT const SrcA22 = m1[2][2];\n\t\tT const SrcA30 = m1[3][0];\n\t\tT const SrcA31 = m1[3][1];\n\t\tT const SrcA32 = m1[3][2];\n\n\t\tT const SrcB00 = m2[0][0];\n\t\tT const SrcB01 = m2[0][1];\n\t\tT const SrcB02 = m2[0][2];\n\t\tT const SrcB03 = m2[0][3];\n\t\tT const SrcB10 = m2[1][0];\n\t\tT const SrcB11 = m2[1][1];\n\t\tT const SrcB12 = m2[1][2];\n\t\tT const SrcB13 = m2[1][3];\n\t\tT const SrcB20 = m2[2][0];\n\t\tT const SrcB21 = m2[2][1];\n\t\tT const SrcB22 = m2[2][2];\n\t\tT const SrcB23 = m2[2][3];\n\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;\n\t\tResult[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;\n\t\tResult[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02 + SrcA32 * SrcB03;\n\t\tResult[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13;\n\t\tResult[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12 + SrcA31 * SrcB13;\n\t\tResult[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11 + SrcA22 * SrcB12 + SrcA32 * SrcB13;\n\t\tResult[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21 + SrcA20 * SrcB22 + SrcA30 * SrcB23;\n\t\tResult[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22 + SrcA31 * SrcB23;\n\t\tResult[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22 + SrcA32 * SrcB23;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2] + m1[3][2] * m2[2][3],\n\t\t\tm1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2] + m1[3][0] * m2[3][3],\n\t\t\tm1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2] + m1[3][1] * m2[3][3],\n\t\t\tm1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2] + m1[3][2] * m2[3][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator/(mat<4, 3, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\tm[0] / s,\n\t\t\tm[1] / s,\n\t\t\tm[2] / s,\n\t\t\tm[3] / s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> operator/(T const& s, mat<4, 3, T, Q> const& m)\n\t{\n\t\treturn mat<4, 3, T, Q>(\n\t\t\ts / m[0],\n\t\t\ts / m[1],\n\t\t\ts / m[2],\n\t\t\ts / m[3]);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]) && (m1[3] == m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]) || (m1[3] != m2[3]);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x4.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_mat4x4.hpp\n\n#pragma once\n\n#include \"type_vec4.hpp\"\n#include <limits>\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct mat<4, 4, T, Q>\n\t{\n\t\ttypedef vec<4, T, Q> col_type;\n\t\ttypedef vec<4, T, Q> row_type;\n\t\ttypedef mat<4, 4, T, Q> type;\n\t\ttypedef mat<4, 4, T, Q> transpose_type;\n\t\ttypedef T value_type;\n\n\tprivate:\n\t\tcol_type value[4];\n\n\tpublic:\n\t\t// -- Accesses --\n\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}\n\n\t\tGLM_FUNC_DECL col_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const;\n\n\t\t// -- Constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(mat<4, 4, T, P> const& m);\n\n\t\tGLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T const& x);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tT const& x0, T const& y0, T const& z0, T const& w0,\n\t\t\tT const& x1, T const& y1, T const& z1, T const& w1,\n\t\t\tT const& x2, T const& y2, T const& z2, T const& w2,\n\t\t\tT const& x3, T const& y3, T const& z3, T const& w3);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tcol_type const& v0,\n\t\t\tcol_type const& v1,\n\t\t\tcol_type const& v2,\n\t\t\tcol_type const& v3);\n\n\t\t// -- Conversions --\n\n\t\ttemplate<\n\t\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\t\ttypename X2, typename Y2, typename Z2, typename W2,\n\t\t\ttypename X3, typename Y3, typename Z3, typename W3,\n\t\t\ttypename X4, typename Y4, typename Z4, typename W4>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tX1 const& x1, Y1 const& y1, Z1 const& z1, W1 const& w1,\n\t\t\tX2 const& x2, Y2 const& y2, Z2 const& z2, W2 const& w2,\n\t\t\tX3 const& x3, Y3 const& y3, Z3 const& z3, W3 const& w3,\n\t\t\tX4 const& x4, Y4 const& y4, Z4 const& z4, W4 const& w4);\n\n\t\ttemplate<typename V1, typename V2, typename V3, typename V4>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR mat(\n\t\t\tvec<4, V1, Q> const& v1,\n\t\t\tvec<4, V2, Q> const& v2,\n\t\t\tvec<4, V3, Q> const& v3,\n\t\t\tvec<4, V4, Q> const& v4);\n\n\t\t// -- Matrix conversions --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, U, P> const& m);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(mat<4, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(mat<4, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(mat<4, 4, U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(mat<4, 4, U, Q> const& m);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator++();\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> & operator--();\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL mat<4, 4, T, Q> operator--(int);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator+(T const& s, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator-(T const& s, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m1,\tmat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator*(T const& s, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator*(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator*(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator/(T const& s, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator/(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator/(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m1,\tmat<4, 4, T, Q> const& m2);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_mat4x4.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x4.inl",
    "content": "#include \"../matrix.hpp\"\n\nnamespace glm\n{\n\t// -- Constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat()\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALIZER_LIST\n\t\t\t\t: value{col_type(1, 0, 0, 0), col_type(0, 1, 0, 0), col_type(0, 0, 1, 0), col_type(0, 0, 0, 1)}\n#\t\t\tendif\n\t\t{\n#\t\t\tif GLM_CONFIG_CTOR_INIT == GLM_CTOR_INITIALISATION\n\t\t\t\tthis->value[0] = col_type(1, 0, 0, 0);\n\t\t\t\tthis->value[1] = col_type(0, 1, 0, 0);\n\t\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n\t\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\t\tendif\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<4, 4, T, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n\t\t\tthis->value[3] = m[3];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(T const& s)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(s, 0, 0, 0), col_type(0, s, 0, 0), col_type(0, 0, s, 0), col_type(0, 0, 0, s)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(s, 0, 0, 0);\n\t\t\tthis->value[1] = col_type(0, s, 0, 0);\n\t\t\tthis->value[2] = col_type(0, 0, s, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, s);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat\n\t(\n\t\tT const& x0, T const& y0, T const& z0, T const& w0,\n\t\tT const& x1, T const& y1, T const& z1, T const& w1,\n\t\tT const& x2, T const& y2, T const& z2, T const& w2,\n\t\tT const& x3, T const& y3, T const& z3, T const& w3\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{\n\t\t\t\tcol_type(x0, y0, z0, w0),\n\t\t\t\tcol_type(x1, y1, z1, w1),\n\t\t\t\tcol_type(x2, y2, z2, w2),\n\t\t\t\tcol_type(x3, y3, z3, w3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x0, y0, z0, w0);\n\t\t\tthis->value[1] = col_type(x1, y1, z1, w1);\n\t\t\tthis->value[2] = col_type(x2, y2, z2, w2);\n\t\t\tthis->value[3] = col_type(x3, y3, z3, w3);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(col_type const& v0, col_type const& v1, col_type const& v2, col_type const& v3)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v0), col_type(v1), col_type(v2), col_type(v3)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = v0;\n\t\t\tthis->value[1] = v1;\n\t\t\tthis->value[2] = v2;\n\t\t\tthis->value[3] = v3;\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<4, 4, U, P> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(m[3])}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0]);\n\t\t\tthis->value[1] = col_type(m[1]);\n\t\t\tthis->value[2] = col_type(m[2]);\n\t\t\tthis->value[3] = col_type(m[3]);\n#\t\tendif\n\t}\n\n\t// -- Conversions --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<\n\t\ttypename X1, typename Y1, typename Z1, typename W1,\n\t\ttypename X2, typename Y2, typename Z2, typename W2,\n\t\ttypename X3, typename Y3, typename Z3, typename W3,\n\t\ttypename X4, typename Y4, typename Z4, typename W4>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat\n\t(\n\t\tX1 const& x1, Y1 const& y1, Z1 const& z1, W1 const& w1,\n\t\tX2 const& x2, Y2 const& y2, Z2 const& z2, W2 const& w2,\n\t\tX3 const& x3, Y3 const& y3, Z3 const& z3, W3 const& w3,\n\t\tX4 const& x4, Y4 const& y4, Z4 const& z4, W4 const& w4\n\t)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(x1, y1, z1, w1), col_type(x2, y2, z2, w2), col_type(x3, y3, z3, w3), col_type(x4, y4, z4, w4)}\n#\t\tendif\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<X1>::is_iec559 || std::numeric_limits<X1>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 1st parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Y1>::is_iec559 || std::numeric_limits<Y1>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 2nd parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Z1>::is_iec559 || std::numeric_limits<Z1>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 3rd parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<W1>::is_iec559 || std::numeric_limits<W1>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 4th parameter type invalid.\");\n\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<X2>::is_iec559 || std::numeric_limits<X2>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 5th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Y2>::is_iec559 || std::numeric_limits<Y2>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 6th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Z2>::is_iec559 || std::numeric_limits<Z2>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 7th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<W2>::is_iec559 || std::numeric_limits<W2>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 8th parameter type invalid.\");\n\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<X3>::is_iec559 || std::numeric_limits<X3>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 9th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Y3>::is_iec559 || std::numeric_limits<Y3>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 10th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Z3>::is_iec559 || std::numeric_limits<Z3>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 11th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<W3>::is_iec559 || std::numeric_limits<W3>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 12th parameter type invalid.\");\n\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<X4>::is_iec559 || std::numeric_limits<X4>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 13th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Y4>::is_iec559 || std::numeric_limits<Y4>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 14th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<Z4>::is_iec559 || std::numeric_limits<Z4>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 15th parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<W4>::is_iec559 || std::numeric_limits<W4>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 16th parameter type invalid.\");\n\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(x1, y1, z1, w1);\n\t\t\tthis->value[1] = col_type(x2, y2, z2, w2);\n\t\t\tthis->value[2] = col_type(x3, y3, z3, w3);\n\t\t\tthis->value[3] = col_type(x4, y4, z4, w4);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename V1, typename V2, typename V3, typename V4>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(vec<4, V1, Q> const& v1, vec<4, V2, Q> const& v2, vec<4, V3, Q> const& v3, vec<4, V4, Q> const& v4)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(v1), col_type(v2), col_type(v3), col_type(v4)}\n#\t\tendif\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<V1>::is_iec559 || std::numeric_limits<V1>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 1st parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<V2>::is_iec559 || std::numeric_limits<V2>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 2nd parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<V3>::is_iec559 || std::numeric_limits<V3>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 3rd parameter type invalid.\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<V4>::is_iec559 || std::numeric_limits<V4>::is_integer || GLM_CONFIG_UNRESTRICTED_GENTYPE, \"*mat4x4 constructor only takes float and integer types, 4th parameter type invalid.\");\n\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(v1);\n\t\t\tthis->value[1] = col_type(v2);\n\t\t\tthis->value[2] = col_type(v3);\n\t\t\tthis->value[3] = col_type(v4);\n#\t\tendif\n\t}\n\n\t// -- Matrix conversions --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<2, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(0, 0, 1, 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<3, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<2, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(0, 0, 1, 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<3, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(m[2], 1, 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(m[2], 1, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<2, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(0, 0, 1, 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<4, 2, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0, 0), col_type(m[1], 0, 0), col_type(0, 0, 1, 0), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0, 0);\n\t\t\tthis->value[1] = col_type(m[1], 0, 0);\n\t\t\tthis->value[2] = col_type(0, 0, 1, 0);\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<3, 4, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0]), col_type(m[1]), col_type(m[2]), col_type(0, 0, 0, 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = m[0];\n\t\t\tthis->value[1] = m[1];\n\t\t\tthis->value[2] = m[2];\n\t\t\tthis->value[3] = col_type(0, 0, 0, 1);\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q>::mat(mat<4, 3, T, Q> const& m)\n#\t\tif GLM_HAS_INITIALIZER_LISTS\n\t\t\t: value{col_type(m[0], 0), col_type(m[1], 0), col_type(m[2], 0), col_type(m[3], 1)}\n#\t\tendif\n\t{\n#\t\tif !GLM_HAS_INITIALIZER_LISTS\n\t\t\tthis->value[0] = col_type(m[0], 0);\n\t\t\tthis->value[1] = col_type(m[1], 0);\n\t\t\tthis->value[2] = col_type(m[2], 0);\n\t\t\tthis->value[3] = col_type(m[3], 1);\n#\t\tendif\n\t}\n\n\t// -- Accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::col_type & mat<4, 4, T, Q>::operator[](typename mat<4, 4, T, Q>::length_type i)\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR typename mat<4, 4, T, Q>::col_type const& mat<4, 4, T, Q>::operator[](typename mat<4, 4, T, Q>::length_type i) const\n\t{\n\t\tassert(i < this->length());\n\t\treturn this->value[i];\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator=(mat<4, 4, U, Q> const& m)\n\t{\n\t\t//memcpy could be faster\n\t\t//memcpy(&this->value, &m.value, 16 * sizeof(valType));\n\t\tthis->value[0] = m[0];\n\t\tthis->value[1] = m[1];\n\t\tthis->value[2] = m[2];\n\t\tthis->value[3] = m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator+=(U s)\n\t{\n\t\tthis->value[0] += s;\n\t\tthis->value[1] += s;\n\t\tthis->value[2] += s;\n\t\tthis->value[3] += s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q>& mat<4, 4, T, Q>::operator+=(mat<4, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] += m[0];\n\t\tthis->value[1] += m[1];\n\t\tthis->value[2] += m[2];\n\t\tthis->value[3] += m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator-=(U s)\n\t{\n\t\tthis->value[0] -= s;\n\t\tthis->value[1] -= s;\n\t\tthis->value[2] -= s;\n\t\tthis->value[3] -= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator-=(mat<4, 4, U, Q> const& m)\n\t{\n\t\tthis->value[0] -= m[0];\n\t\tthis->value[1] -= m[1];\n\t\tthis->value[2] -= m[2];\n\t\tthis->value[3] -= m[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator*=(U s)\n\t{\n\t\tthis->value[0] *= s;\n\t\tthis->value[1] *= s;\n\t\tthis->value[2] *= s;\n\t\tthis->value[3] *= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator*=(mat<4, 4, U, Q> const& m)\n\t{\n\t\treturn (*this = *this * m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator/=(U s)\n\t{\n\t\tthis->value[0] /= s;\n\t\tthis->value[1] /= s;\n\t\tthis->value[2] /= s;\n\t\tthis->value[3] /= s;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator/=(mat<4, 4, U, Q> const& m)\n\t{\n\t\treturn *this *= inverse(m);\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator++()\n\t{\n\t\t++this->value[0];\n\t\t++this->value[1];\n\t\t++this->value[2];\n\t\t++this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> & mat<4, 4, T, Q>::operator--()\n\t{\n\t\t--this->value[0];\n\t\t--this->value[1];\n\t\t--this->value[2];\n\t\t--this->value[3];\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> mat<4, 4, T, Q>::operator++(int)\n\t{\n\t\tmat<4, 4, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> mat<4, 4, T, Q>::operator--(int)\n\t{\n\t\tmat<4, 4, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary constant operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn m;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\t-m[0],\n\t\t\t-m[1],\n\t\t\t-m[2],\n\t\t\t-m[3]);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] + s,\n\t\t\tm[1] + s,\n\t\t\tm[2] + s,\n\t\t\tm[3] + s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator+(T const& s, mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] + s,\n\t\t\tm[1] + s,\n\t\t\tm[2] + s,\n\t\t\tm[3] + s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm1[0] + m2[0],\n\t\t\tm1[1] + m2[1],\n\t\t\tm1[2] + m2[2],\n\t\t\tm1[3] + m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] - s,\n\t\t\tm[1] - s,\n\t\t\tm[2] - s,\n\t\t\tm[3] - s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator-(T const& s, mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\ts - m[0],\n\t\t\ts - m[1],\n\t\t\ts - m[2],\n\t\t\ts - m[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm1[0] - m2[0],\n\t\t\tm1[1] - m2[1],\n\t\t\tm1[2] - m2[2],\n\t\t\tm1[3] - m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T const  & s)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] * s,\n\t\t\tm[1] * s,\n\t\t\tm[2] * s,\n\t\t\tm[3] * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(T const& s, mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] * s,\n\t\t\tm[1] * s,\n\t\t\tm[2] * s,\n\t\t\tm[3] * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::col_type operator*\n\t(\n\t\tmat<4, 4, T, Q> const& m,\n\t\ttypename mat<4, 4, T, Q>::row_type const& v\n\t)\n\t{\n/*\n\t\t__m128 v0 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 v1 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 v2 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 v3 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 m0 = _mm_mul_ps(m[0].data, v0);\n\t\t__m128 m1 = _mm_mul_ps(m[1].data, v1);\n\t\t__m128 a0 = _mm_add_ps(m0, m1);\n\n\t\t__m128 m2 = _mm_mul_ps(m[2].data, v2);\n\t\t__m128 m3 = _mm_mul_ps(m[3].data, v3);\n\t\t__m128 a1 = _mm_add_ps(m2, m3);\n\n\t\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\t\treturn typename mat<4, 4, T, Q>::col_type(a2);\n*/\n\n\t\ttypename mat<4, 4, T, Q>::col_type const Mov0(v[0]);\n\t\ttypename mat<4, 4, T, Q>::col_type const Mov1(v[1]);\n\t\ttypename mat<4, 4, T, Q>::col_type const Mul0 = m[0] * Mov0;\n\t\ttypename mat<4, 4, T, Q>::col_type const Mul1 = m[1] * Mov1;\n\t\ttypename mat<4, 4, T, Q>::col_type const Add0 = Mul0 + Mul1;\n\t\ttypename mat<4, 4, T, Q>::col_type const Mov2(v[2]);\n\t\ttypename mat<4, 4, T, Q>::col_type const Mov3(v[3]);\n\t\ttypename mat<4, 4, T, Q>::col_type const Mul2 = m[2] * Mov2;\n\t\ttypename mat<4, 4, T, Q>::col_type const Mul3 = m[3] * Mov3;\n\t\ttypename mat<4, 4, T, Q>::col_type const Add1 = Mul2 + Mul3;\n\t\ttypename mat<4, 4, T, Q>::col_type const Add2 = Add0 + Add1;\n\t\treturn Add2;\n\n/*\n\t\treturn typename mat<4, 4, T, Q>::col_type(\n\t\t\tm[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2] + m[3][0] * v[3],\n\t\t\tm[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2] + m[3][1] * v[3],\n\t\t\tm[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2] * v[3],\n\t\t\tm[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3] * v[3]);\n*/\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::row_type operator*\n\t(\n\t\ttypename mat<4, 4, T, Q>::col_type const& v,\n\t\tmat<4, 4, T, Q> const& m\n\t)\n\t{\n\t\treturn typename mat<4, 4, T, Q>::row_type(\n\t\t\tm[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2] + m[0][3] * v[3],\n\t\t\tm[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2] + m[1][3] * v[3],\n\t\t\tm[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2] + m[2][3] * v[3],\n\t\t\tm[3][0] * v[0] + m[3][1] * v[1] + m[3][2] * v[2] + m[3][3] * v[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<2, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2] + m1[3][3] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2] + m1[3][3] * m2[1][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2)\n\t{\n\t\treturn mat<3, 4, T, Q>(\n\t\t\tm1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],\n\t\t\tm1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],\n\t\t\tm1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],\n\t\t\tm1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2] + m1[3][3] * m2[0][3],\n\t\t\tm1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],\n\t\t\tm1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],\n\t\t\tm1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3],\n\t\t\tm1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2] + m1[3][3] * m2[1][3],\n\t\t\tm1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],\n\t\t\tm1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3],\n\t\t\tm1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2] + m1[3][2] * m2[2][3],\n\t\t\tm1[0][3] * m2[2][0] + m1[1][3] * m2[2][1] + m1[2][3] * m2[2][2] + m1[3][3] * m2[2][3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcA0 = m1[0];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcA1 = m1[1];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcA2 = m1[2];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcA3 = m1[3];\n\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcB0 = m2[0];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcB1 = m2[1];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcB2 = m2[2];\n\t\ttypename mat<4, 4, T, Q>::col_type const SrcB3 = m2[3];\n\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0] = SrcA0 * SrcB0[0] + SrcA1 * SrcB0[1] + SrcA2 * SrcB0[2] + SrcA3 * SrcB0[3];\n\t\tResult[1] = SrcA0 * SrcB1[0] + SrcA1 * SrcB1[1] + SrcA2 * SrcB1[2] + SrcA3 * SrcB1[3];\n\t\tResult[2] = SrcA0 * SrcB2[0] + SrcA1 * SrcB2[1] + SrcA2 * SrcB2[2] + SrcA3 * SrcB2[3];\n\t\tResult[3] = SrcA0 * SrcB3[0] + SrcA1 * SrcB3[1] + SrcA2 * SrcB3[2] + SrcA3 * SrcB3[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m, T const& s)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0] / s,\n\t\t\tm[1] / s,\n\t\t\tm[2] / s,\n\t\t\tm[3] / s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator/(T const& s,\tmat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\ts / m[0],\n\t\t\ts / m[1],\n\t\t\ts / m[2],\n\t\t\ts / m[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::col_type operator/(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v)\n\t{\n\t\treturn inverse(m) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename mat<4, 4, T, Q>::row_type operator/(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn v * inverse(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\tmat<4, 4, T, Q> m1_copy(m1);\n\t\treturn m1_copy /= m2;\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] == m2[0]) && (m1[1] == m2[1]) && (m1[2] == m2[2]) && (m1[3] == m2[3]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2)\n\t{\n\t\treturn (m1[0] != m2[0]) || (m1[1] != m2[1]) || (m1[2] != m2[2]) || (m1[3] != m2[3]);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"type_mat4x4_simd.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_mat4x4_simd.inl",
    "content": "/// @ref core\n\nnamespace glm\n{\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_quat.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_quat.hpp\n\n#pragma once\n\n// Dependency:\n#include \"../detail/type_mat3x3.hpp\"\n#include \"../detail/type_mat4x4.hpp\"\n#include \"../detail/type_vec3.hpp\"\n#include \"../detail/type_vec4.hpp\"\n#include \"../ext/vector_relational.hpp\"\n#include \"../ext/quaternion_relational.hpp\"\n#include \"../gtc/constants.hpp\"\n#include \"../gtc/matrix_transform.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct qua\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef qua<T, Q> type;\n\t\ttypedef T value_type;\n\n\t\t// -- Data --\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic push\n#\t\t\t\tpragma GCC diagnostic ignored \"-Wpedantic\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic push\n#\t\t\t\tpragma clang diagnostic ignored \"-Wgnu-anonymous-struct\"\n#\t\t\t\tpragma clang diagnostic ignored \"-Wnested-anon-types\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(push)\n#\t\t\t\tpragma warning(disable: 4201)  // nonstandard extension used : nameless struct/union\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_LANG & GLM_LANG_CXXMS_FLAG\n\t\t\tunion\n\t\t\t{\n#\t\t\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t\t\tstruct { T w, x, y, z; };\n#\t\t\t\telse\n\t\t\t\t\tstruct { T x, y, z, w; };\n#\t\t\t\tendif\n\n\t\t\t\ttypename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;\n\t\t\t};\n#\t\telse\n#\t\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t\tT w, x, y, z;\n#\t\t\telse\n\t\t\t\tT x, y, z, w;\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(pop)\n#\t\t\tendif\n#\t\tendif\n\n\t\t// -- Component accesses --\n\n\t\ttypedef length_t length_type;\n\n\t\t/// Return the count of components of a quaternion\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua(qua<T, Q> const& q) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua(qua<T, P> const& q);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua(T s, vec<3, T, Q> const& v);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua(T w, T x, T y, T z);\n\n\t\t// -- Conversion constructors --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT qua(qua<U, P> const& q);\n\n\t\t/// Explicit conversion operators\n#\t\tif GLM_HAS_EXPLICIT_CONVERSION_OPERATORS\n\t\t\tGLM_FUNC_DECL explicit operator mat<3, 3, T, Q>() const;\n\t\t\tGLM_FUNC_DECL explicit operator mat<4, 4, T, Q>() const;\n#\t\tendif\n\n\t\t/// Create a quaternion from two normalized axis\n\t\t///\n\t\t/// @param u A first normalized axis\n\t\t/// @param v A second normalized axis\n\t\t/// @see gtc_quaternion\n\t\t/// @see http://lolengine.net/blog/2013/09/18/beautiful-maths-quaternion-from-vectors\n\t\tGLM_FUNC_DECL qua(vec<3, T, Q> const& u, vec<3, T, Q> const& v);\n\n\t\t/// Build a quaternion from euler angles (pitch, yaw, roll), in radians.\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT qua(vec<3, T, Q> const& eulerAngles);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT qua(mat<3, 3, T, Q> const& q);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT qua(mat<4, 4, T, Q> const& q);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator=(qua<T, Q> const& q) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator=(qua<U, Q> const& q);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator+=(qua<U, Q> const& q);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator-=(qua<U, Q> const& q);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator*=(qua<U, Q> const& q);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator/=(U s);\n\t};\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q, qua<T, Q> const& p);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q, qua<T, Q> const& p);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, qua<T, Q> const& p);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(qua<T, Q> const& q, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, qua<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(qua<T, Q> const& q, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, qua<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(T const& s, qua<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator/(qua<T, Q> const& q, T const& s);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(qua<T, Q> const& q1, qua<T, Q> const& q2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(qua<T, Q> const& q1, qua<T, Q> const& q2);\n} //namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_quat.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_quat.inl",
    "content": "#include \"../trigonometric.hpp\"\n#include \"../exponential.hpp\"\n#include \"../ext/quaternion_geometric.hpp\"\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate <typename T>\n\tstruct genTypeTrait<qua<T> >\n\t{\n\t\tstatic const genTypeEnum GENTYPE = GENTYPE_QUAT;\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_dot<qua<T, Q>, T, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static T call(qua<T, Q> const& a, qua<T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> tmp(a.w * b.w, a.x * b.x, a.y * b.y, a.z * b.z);\n\t\t\treturn (tmp.x + tmp.y) + (tmp.z + tmp.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_quat_add\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static qua<T, Q> call(qua<T, Q> const& q, qua<T, Q> const& p)\n\t\t{\n\t\t\treturn qua<T, Q>(q.w + p.w, q.x + p.x, q.y + p.y, q.z + p.z);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_quat_sub\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static qua<T, Q> call(qua<T, Q> const& q, qua<T, Q> const& p)\n\t\t{\n\t\t\treturn qua<T, Q>(q.w - p.w, q.x - p.x, q.y - p.y, q.z - p.z);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_quat_mul_scalar\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static qua<T, Q> call(qua<T, Q> const& q, T s)\n\t\t{\n\t\t\treturn qua<T, Q>(q.w * s, q.x * s, q.y * s, q.z * s);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_quat_div_scalar\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static qua<T, Q> call(qua<T, Q> const& q, T s)\n\t\t{\n\t\t\treturn qua<T, Q>(q.w / s, q.x / s, q.y / s, q.z / s);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_quat_mul_vec4\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(qua<T, Q> const& q, vec<4, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<4, T, Q>(q * vec<3, T, Q>(v), v.w);\n\t\t}\n\t};\n}//namespace detail\n\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T & qua<T, Q>::operator[](typename qua<T, Q>::length_type i)\n\t{\n\t\tassert(i >= 0 && i < this->length());\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\treturn (&w)[i];\n#\t\telse\n\t\t\treturn (&x)[i];\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& qua<T, Q>::operator[](typename qua<T, Q>::length_type i) const\n\t{\n\t\tassert(i >= 0 && i < this->length());\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\treturn (&w)[i];\n#\t\telse\n\t\t\treturn (&x)[i];\n#\t\tendif\n\t}\n\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua()\n#\t\t\tif GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE\n#\t\t\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t\t\t: w(1), x(0), y(0), z(0)\n#\t\t\t\telse\n\t\t\t\t\t: x(0), y(0), z(0), w(1)\n#\t\t\t\tendif\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(qua<T, Q> const& q)\n#\t\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t\t: w(q.w), x(q.x), y(q.y), z(q.z)\n#\t\t\telse\n\t\t\t\t: x(q.x), y(q.y), z(q.z), w(q.w)\n#\t\t\tendif\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(qua<T, P> const& q)\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t: w(q.w), x(q.x), y(q.y), z(q.z)\n#\t\telse\n\t\t\t: x(q.x), y(q.y), z(q.z), w(q.w)\n#\t\tendif\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(T s, vec<3, T, Q> const& v)\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t: w(s), x(v.x), y(v.y), z(v.z)\n#\t\telse\n\t\t\t: x(v.x), y(v.y), z(v.z), w(s)\n#\t\tendif\n\t{}\n\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(T _w, T _x, T _y, T _z)\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t: w(_w), x(_x), y(_y), z(_z)\n#\t\telse\n\t\t\t: x(_x), y(_y), z(_z), w(_w)\n#\t\tendif\n\t{}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(qua<U, P> const& q)\n#\t\tifdef GLM_FORCE_QUAT_DATA_WXYZ\n\t\t\t: w(static_cast<T>(q.w)), x(static_cast<T>(q.x)), y(static_cast<T>(q.y)), z(static_cast<T>(q.z))\n#\t\telse\n\t\t\t: x(static_cast<T>(q.x)), y(static_cast<T>(q.y)), z(static_cast<T>(q.z)), w(static_cast<T>(q.w))\n#\t\tendif\n\t{}\n\n\t//template<typename valType>\n\t//GLM_FUNC_QUALIFIER qua<valType>::qua\n\t//(\n\t//\tvalType const& pitch,\n\t//\tvalType const& yaw,\n\t//\tvalType const& roll\n\t//)\n\t//{\n\t//\tvec<3, valType> eulerAngle(pitch * valType(0.5), yaw * valType(0.5), roll * valType(0.5));\n\t//\tvec<3, valType> c = glm::cos(eulerAngle * valType(0.5));\n\t//\tvec<3, valType> s = glm::sin(eulerAngle * valType(0.5));\n\t//\n\t//\tthis->w = c.x * c.y * c.z + s.x * s.y * s.z;\n\t//\tthis->x = s.x * c.y * c.z - c.x * s.y * s.z;\n\t//\tthis->y = c.x * s.y * c.z + s.x * c.y * s.z;\n\t//\tthis->z = c.x * c.y * s.z - s.x * s.y * c.z;\n\t//}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q>::qua(vec<3, T, Q> const& u, vec<3, T, Q> const& v)\n\t{\n\t\tT norm_u_norm_v = sqrt(dot(u, u) * dot(v, v));\n\t\tT real_part = norm_u_norm_v + dot(u, v);\n\t\tvec<3, T, Q> t;\n\n\t\tif(real_part < static_cast<T>(1.e-6f) * norm_u_norm_v)\n\t\t{\n\t\t\t// If u and v are exactly opposite, rotate 180 degrees\n\t\t\t// around an arbitrary orthogonal axis. Axis normalisation\n\t\t\t// can happen later, when we normalise the quaternion.\n\t\t\treal_part = static_cast<T>(0);\n\t\t\tt = abs(u.x) > abs(u.z) ? vec<3, T, Q>(-u.y, u.x, static_cast<T>(0)) : vec<3, T, Q>(static_cast<T>(0), -u.z, u.y);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise, build quaternion the standard way.\n\t\t\tt = cross(u, v);\n\t\t}\n\n\t\t*this = normalize(qua<T, Q>(real_part, t.x, t.y, t.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q>::qua(vec<3, T, Q> const& eulerAngle)\n\t{\n\t\tvec<3, T, Q> c = glm::cos(eulerAngle * T(0.5));\n\t\tvec<3, T, Q> s = glm::sin(eulerAngle * T(0.5));\n\n\t\tthis->w = c.x * c.y * c.z + s.x * s.y * s.z;\n\t\tthis->x = s.x * c.y * c.z - c.x * s.y * s.z;\n\t\tthis->y = c.x * s.y * c.z + s.x * c.y * s.z;\n\t\tthis->z = c.x * c.y * s.z - s.x * s.y * c.z;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q>::qua(mat<3, 3, T, Q> const& m)\n\t{\n\t\t*this = quat_cast(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q>::qua(mat<4, 4, T, Q> const& m)\n\t{\n\t\t*this = quat_cast(m);\n\t}\n\n#\tif GLM_HAS_EXPLICIT_CONVERSION_OPERATORS\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q>::operator mat<3, 3, T, Q>() const\n\t{\n\t\treturn mat3_cast(*this);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q>::operator mat<4, 4, T, Q>() const\n\t{\n\t\treturn mat4_cast(*this);\n\t}\n#\tendif//GLM_HAS_EXPLICIT_CONVERSION_OPERATORS\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator=(qua<T, Q> const& q)\n\t\t{\n\t\t\tthis->w = q.w;\n\t\t\tthis->x = q.x;\n\t\t\tthis->y = q.y;\n\t\t\tthis->z = q.z;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator=(qua<U, Q> const& q)\n\t{\n\t\tthis->w = static_cast<T>(q.w);\n\t\tthis->x = static_cast<T>(q.x);\n\t\tthis->y = static_cast<T>(q.y);\n\t\tthis->z = static_cast<T>(q.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator+=(qua<U, Q> const& q)\n\t{\n\t\treturn (*this = detail::compute_quat_add<T, Q, detail::is_aligned<Q>::value>::call(*this, qua<T, Q>(q)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator-=(qua<U, Q> const& q)\n\t{\n\t\treturn (*this = detail::compute_quat_sub<T, Q, detail::is_aligned<Q>::value>::call(*this, qua<T, Q>(q)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator*=(qua<U, Q> const& r)\n\t{\n\t\tqua<T, Q> const p(*this);\n\t\tqua<T, Q> const q(r);\n\n\t\tthis->w = p.w * q.w - p.x * q.x - p.y * q.y - p.z * q.z;\n\t\tthis->x = p.w * q.x + p.x * q.w + p.y * q.z - p.z * q.y;\n\t\tthis->y = p.w * q.y + p.y * q.w + p.z * q.x - p.x * q.z;\n\t\tthis->z = p.w * q.z + p.z * q.w + p.x * q.y - p.y * q.x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator*=(U s)\n\t{\n\t\treturn (*this = detail::compute_quat_mul_scalar<T, Q, detail::is_aligned<Q>::value>::call(*this, static_cast<U>(s)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> & qua<T, Q>::operator/=(U s)\n\t{\n\t\treturn (*this = detail::compute_quat_div_scalar<T, Q, detail::is_aligned<Q>::value>::call(*this, static_cast<U>(s)));\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q)\n\t{\n\t\treturn q;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q)\n\t{\n\t\treturn qua<T, Q>(-q.w, -q.x, -q.y, -q.z);\n\t}\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q, qua<T, Q> const& p)\n\t{\n\t\treturn qua<T, Q>(q) += p;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q, qua<T, Q> const& p)\n\t{\n\t\treturn qua<T, Q>(q) -= p;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, qua<T, Q> const& p)\n\t{\n\t\treturn qua<T, Q>(q) *= p;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(qua<T, Q> const& q, vec<3, T, Q> const& v)\n\t{\n\t\tvec<3, T, Q> const QuatVector(q.x, q.y, q.z);\n\t\tvec<3, T, Q> const uv(glm::cross(QuatVector, v));\n\t\tvec<3, T, Q> const uuv(glm::cross(QuatVector, uv));\n\n\t\treturn v + ((uv * q.w) + uuv) * static_cast<T>(2);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, qua<T, Q> const& q)\n\t{\n\t\treturn glm::inverse(q) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(qua<T, Q> const& q, vec<4, T, Q> const& v)\n\t{\n\t\treturn detail::compute_quat_mul_vec4<T, Q, detail::is_aligned<Q>::value>::call(q, v);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, qua<T, Q> const& q)\n\t{\n\t\treturn glm::inverse(q) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, T const& s)\n\t{\n\t\treturn qua<T, Q>(\n\t\t\tq.w * s, q.x * s, q.y * s, q.z * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator*(T const& s, qua<T, Q> const& q)\n\t{\n\t\treturn q * s;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> operator/(qua<T, Q> const& q, T const& s)\n\t{\n\t\treturn qua<T, Q>(\n\t\t\tq.w / s, q.x / s, q.y / s, q.z / s);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(qua<T, Q> const& q1, qua<T, Q> const& q2)\n\t{\n\t\treturn q1.x == q2.x && q1.y == q2.y && q1.z == q2.z && q1.w == q2.w;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(qua<T, Q> const& q1, qua<T, Q> const& q2)\n\t{\n\t\treturn q1.x != q2.x || q1.y != q2.y || q1.z != q2.z || q1.w != q2.w;\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"type_quat_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/detail/type_quat_simd.inl",
    "content": "/// @ref core\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n/*\n\ttemplate<qualifier Q>\n\tstruct compute_quat_mul<float, Q, true>\n\t{\n\t\tstatic qua<float, Q> call(qua<float, Q> const& q1, qua<float, Q> const& q2)\n\t\t{\n\t\t\t// SSE2 STATS: 11 shuffle, 8 mul, 8 add\n\t\t\t// SSE4 STATS: 3 shuffle, 4 mul, 4 dpps\n\n\t\t\t__m128 const mul0 = _mm_mul_ps(q1.Data, _mm_shuffle_ps(q2.Data, q2.Data, _MM_SHUFFLE(0, 1, 2, 3)));\n\t\t\t__m128 const mul1 = _mm_mul_ps(q1.Data, _mm_shuffle_ps(q2.Data, q2.Data, _MM_SHUFFLE(1, 0, 3, 2)));\n\t\t\t__m128 const mul2 = _mm_mul_ps(q1.Data, _mm_shuffle_ps(q2.Data, q2.Data, _MM_SHUFFLE(2, 3, 0, 1)));\n\t\t\t__m128 const mul3 = _mm_mul_ps(q1.Data, q2.Data);\n\n#\t\t\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\t\t\t\t__m128 const add0 = _mm_dp_ps(mul0, _mm_set_ps(1.0f, -1.0f,  1.0f,  1.0f), 0xff);\n\t\t\t\t__m128 const add1 = _mm_dp_ps(mul1, _mm_set_ps(1.0f,  1.0f,  1.0f, -1.0f), 0xff);\n\t\t\t\t__m128 const add2 = _mm_dp_ps(mul2, _mm_set_ps(1.0f,  1.0f, -1.0f,  1.0f), 0xff);\n\t\t\t\t__m128 const add3 = _mm_dp_ps(mul3, _mm_set_ps(1.0f, -1.0f, -1.0f, -1.0f), 0xff);\n#\t\t\telse\n\t\t\t\t__m128 const mul4 = _mm_mul_ps(mul0, _mm_set_ps(1.0f, -1.0f,  1.0f,  1.0f));\n\t\t\t\t__m128 const add0 = _mm_add_ps(mul0, _mm_movehl_ps(mul4, mul4));\n\t\t\t\t__m128 const add4 = _mm_add_ss(add0, _mm_shuffle_ps(add0, add0, 1));\n\n\t\t\t\t__m128 const mul5 = _mm_mul_ps(mul1, _mm_set_ps(1.0f,  1.0f,  1.0f, -1.0f));\n\t\t\t\t__m128 const add1 = _mm_add_ps(mul1, _mm_movehl_ps(mul5, mul5));\n\t\t\t\t__m128 const add5 = _mm_add_ss(add1, _mm_shuffle_ps(add1, add1, 1));\n\n\t\t\t\t__m128 const mul6 = _mm_mul_ps(mul2, _mm_set_ps(1.0f,  1.0f, -1.0f,  1.0f));\n\t\t\t\t__m128 const add2 = _mm_add_ps(mul6, _mm_movehl_ps(mul6, mul6));\n\t\t\t\t__m128 const add6 = _mm_add_ss(add2, _mm_shuffle_ps(add2, add2, 1));\n\n\t\t\t\t__m128 const mul7 = _mm_mul_ps(mul3, _mm_set_ps(1.0f, -1.0f, -1.0f, -1.0f));\n\t\t\t\t__m128 const add3 = _mm_add_ps(mul3, _mm_movehl_ps(mul7, mul7));\n\t\t\t\t__m128 const add7 = _mm_add_ss(add3, _mm_shuffle_ps(add3, add3, 1));\n\t\t#endif\n\n\t\t\t// This SIMD code is a politically correct way of doing this, but in every test I've tried it has been slower than\n\t\t\t// the final code below. I'll keep this here for reference - maybe somebody else can do something better...\n\t\t\t//\n\t\t\t//__m128 xxyy = _mm_shuffle_ps(add4, add5, _MM_SHUFFLE(0, 0, 0, 0));\n\t\t\t//__m128 zzww = _mm_shuffle_ps(add6, add7, _MM_SHUFFLE(0, 0, 0, 0));\n\t\t\t//\n\t\t\t//return _mm_shuffle_ps(xxyy, zzww, _MM_SHUFFLE(2, 0, 2, 0));\n\n\t\t\tqua<float, Q> Result;\n\t\t\t_mm_store_ss(&Result.x, add4);\n\t\t\t_mm_store_ss(&Result.y, add5);\n\t\t\t_mm_store_ss(&Result.z, add6);\n\t\t\t_mm_store_ss(&Result.w, add7);\n\t\t\treturn Result;\n\t\t}\n\t};\n*/\n\n\ttemplate<qualifier Q>\n\tstruct compute_quat_add<float, Q, true>\n\t{\n\t\tstatic qua<float, Q> call(qua<float, Q> const& q, qua<float, Q> const& p)\n\t\t{\n\t\t\tqua<float, Q> Result;\n\t\t\tResult.data = _mm_add_ps(q.data, p.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_quat_add<double, Q, true>\n\t{\n\t\tstatic qua<double, Q> call(qua<double, Q> const& a, qua<double, Q> const& b)\n\t\t{\n\t\t\tqua<double, Q> Result;\n\t\t\tResult.data = _mm256_add_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_quat_sub<float, Q, true>\n\t{\n\t\tstatic qua<float, Q> call(qua<float, Q> const& q, qua<float, Q> const& p)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_sub_ps(q.data, p.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_quat_sub<double, Q, true>\n\t{\n\t\tstatic qua<double, Q> call(qua<double, Q> const& a, qua<double, Q> const& b)\n\t\t{\n\t\t\tqua<double, Q> Result;\n\t\t\tResult.data = _mm256_sub_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_quat_mul_scalar<float, Q, true>\n\t{\n\t\tstatic qua<float, Q> call(qua<float, Q> const& q, float s)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_mul_ps(q.data, _mm_set_ps1(s));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_quat_mul_scalar<double, Q, true>\n\t{\n\t\tstatic qua<double, Q> call(qua<double, Q> const& q, double s)\n\t\t{\n\t\t\tqua<double, Q> Result;\n\t\t\tResult.data = _mm256_mul_pd(q.data, _mm_set_ps1(s));\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_quat_div_scalar<float, Q, true>\n\t{\n\t\tstatic qua<float, Q> call(qua<float, Q> const& q, float s)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_div_ps(q.data, _mm_set_ps1(s));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_quat_div_scalar<double, Q, true>\n\t{\n\t\tstatic qua<double, Q> call(qua<double, Q> const& q, double s)\n\t\t{\n\t\t\tqua<double, Q> Result;\n\t\t\tResult.data = _mm256_div_pd(q.data, _mm_set_ps1(s));\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_quat_mul_vec4<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(qua<float, Q> const& q, vec<4, float, Q> const& v)\n\t\t{\n\t\t\t__m128 const q_wwww = _mm_shuffle_ps(q.data, q.data, _MM_SHUFFLE(3, 3, 3, 3));\n\t\t\t__m128 const q_swp0 = _mm_shuffle_ps(q.data, q.data, _MM_SHUFFLE(3, 0, 2, 1));\n\t\t\t__m128 const q_swp1 = _mm_shuffle_ps(q.data, q.data, _MM_SHUFFLE(3, 1, 0, 2));\n\t\t\t__m128 const v_swp0 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(3, 0, 2, 1));\n\t\t\t__m128 const v_swp1 = _mm_shuffle_ps(v.data, v.data, _MM_SHUFFLE(3, 1, 0, 2));\n\n\t\t\t__m128 uv      = _mm_sub_ps(_mm_mul_ps(q_swp0, v_swp1), _mm_mul_ps(q_swp1, v_swp0));\n\t\t\t__m128 uv_swp0 = _mm_shuffle_ps(uv, uv, _MM_SHUFFLE(3, 0, 2, 1));\n\t\t\t__m128 uv_swp1 = _mm_shuffle_ps(uv, uv, _MM_SHUFFLE(3, 1, 0, 2));\n\t\t\t__m128 uuv     = _mm_sub_ps(_mm_mul_ps(q_swp0, uv_swp1), _mm_mul_ps(q_swp1, uv_swp0));\n\n\t\t\t__m128 const two = _mm_set1_ps(2.0f);\n\t\t\tuv  = _mm_mul_ps(uv, _mm_mul_ps(q_wwww, two));\n\t\t\tuuv = _mm_mul_ps(uuv, two);\n\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_add_ps(v.Data, _mm_add_ps(uv, uuv));\n\t\t\treturn Result;\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n"
  },
  {
    "path": "libraries/glm/detail/type_vec1.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_vec1.hpp\n\n#pragma once\n\n#include \"qualifier.hpp\"\n#if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n#\tinclude \"_swizzle.hpp\"\n#elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n#\tinclude \"_swizzle_func.hpp\"\n#endif\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct vec<1, T, Q>\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef T value_type;\n\t\ttypedef vec<1, T, Q> type;\n\t\ttypedef vec<1, bool, Q> bool_type;\n\n\t\t// -- Data --\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic push\n#\t\t\t\tpragma GCC diagnostic ignored \"-Wpedantic\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic push\n#\t\t\t\tpragma clang diagnostic ignored \"-Wgnu-anonymous-struct\"\n#\t\t\t\tpragma clang diagnostic ignored \"-Wnested-anon-types\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(push)\n#\t\t\t\tpragma warning(disable: 4201)  // nonstandard extension used : nameless struct/union\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_CONFIG_XYZW_ONLY\n\t\t\tT x;\n#\t\telif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE\n\t\t\tunion\n\t\t\t{\n\t\t\t\tT x;\n\t\t\t\tT r;\n\t\t\t\tT s;\n\n\t\t\t\ttypename detail::storage<1, T, detail::is_aligned<Q>::value>::type data;\n/*\n#\t\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\t\t\t_GLM_SWIZZLE1_2_MEMBERS(T, Q, x)\n\t\t\t\t\t_GLM_SWIZZLE1_2_MEMBERS(T, Q, r)\n\t\t\t\t\t_GLM_SWIZZLE1_2_MEMBERS(T, Q, s)\n\t\t\t\t\t_GLM_SWIZZLE1_3_MEMBERS(T, Q, x)\n\t\t\t\t\t_GLM_SWIZZLE1_3_MEMBERS(T, Q, r)\n\t\t\t\t\t_GLM_SWIZZLE1_3_MEMBERS(T, Q, s)\n\t\t\t\t\t_GLM_SWIZZLE1_4_MEMBERS(T, Q, x)\n\t\t\t\t\t_GLM_SWIZZLE1_4_MEMBERS(T, Q, r)\n\t\t\t\t\t_GLM_SWIZZLE1_4_MEMBERS(T, Q, s)\n#\t\t\t\tendif\n*/\n\t\t\t};\n#\t\telse\n\t\t\tunion {T x, r, s;};\n/*\n#\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n\t\t\t\tGLM_SWIZZLE_GEN_VEC_FROM_VEC1(T, Q)\n#\t\t\tendif\n*/\n#\t\tendif\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(pop)\n#\t\t\tendif\n#\t\tendif\n\n\t\t// -- Component accesses --\n\n\t\t/// Return the count of components of the vector\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 1;}\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, T, P> const& v);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);\n\n\t\t// -- Conversion vector constructors --\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<2, U, P> const& v);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<3, U, P> const& v);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<1, U, P> const& v);\n\n\t\t// -- Swizzle constructors --\n/*\n#\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\ttemplate<int E0>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<1, T, Q, E0, -1,-2,-3> const& that)\n\t\t\t{\n\t\t\t\t*this = that();\n\t\t\t}\n#\t\tendif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n*/\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec const& v) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(vec<1, U, Q> const& v);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator++();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator--();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator--(int);\n\n\t\t// -- Unary bit operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(vec<1, U, Q> const& v);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(T scalar, vec<1, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator~(vec<1, T, Q> const& v);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator&&(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator||(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_vec1.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_vec1.inl",
    "content": "/// @ref core\n\n#include \"./compute_vector_relational.hpp\"\n\nnamespace glm\n{\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec()\n#\t\t\tif GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE\n\t\t\t\t: x(0)\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, T, Q> const& v)\n\t\t\t: x(v.x)\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, T, P> const& v)\n\t\t: x(v.x)\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(T scalar)\n\t\t: x(scalar)\n\t{}\n\n\t// -- Conversion vector constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<1, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<2, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<3, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q>::vec(vec<4, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t{}\n\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<1, T, Q>::operator[](typename vec<1, T, Q>::length_type)\n\t{\n\t\treturn x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<1, T, Q>::operator[](typename vec<1, T, Q>::length_type) const\n\t{\n\t\treturn x;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, T, Q> const& v)\n\t\t{\n\t\t\tthis->x = v.x;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x = static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator+=(U scalar)\n\t{\n\t\tthis->x += static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator+=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x += static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator-=(U scalar)\n\t{\n\t\tthis->x -= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator-=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x -= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator*=(U scalar)\n\t{\n\t\tthis->x *= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator*=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x *= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator/=(U scalar)\n\t{\n\t\tthis->x /= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator/=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x /= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator++()\n\t{\n\t\t++this->x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator--()\n\t{\n\t\t--this->x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> vec<1, T, Q>::operator++(int)\n\t{\n\t\tvec<1, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> vec<1, T, Q>::operator--(int)\n\t{\n\t\tvec<1, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator%=(U scalar)\n\t{\n\t\tthis->x %= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator%=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x %= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator&=(U scalar)\n\t{\n\t\tthis->x &= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator&=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x &= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator|=(U scalar)\n\t{\n\t\tthis->x |= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator|=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x |= U(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator^=(U scalar)\n\t{\n\t\tthis->x ^= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator^=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x ^= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator<<=(U scalar)\n\t{\n\t\tthis->x <<= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator<<=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x <<= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator>>=(U scalar)\n\t{\n\t\tthis->x >>= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> & vec<1, T, Q>::operator>>=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x >>= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\t// -- Unary constant operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\t-v.x);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar + v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x + v2.x);\n\t}\n\n\t//operator-\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar - v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x - v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar * v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x * v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar / v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x / v2.x);\n\t}\n\n\t// -- Binary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x % scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar % v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x % v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x & scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar & v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x & v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x | scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar | v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x | v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x ^ scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar ^ v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x ^ v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tstatic_cast<T>(v.x << scalar));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar << v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x << v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv.x >> scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(T scalar, vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tscalar >> v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\tv1.x >> v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, T, Q> operator~(vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(\n\t\t\t~v.x);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn detail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.x, v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn !(v1 == v2);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, bool, Q> operator&&(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2)\n\t{\n\t\treturn vec<1, bool, Q>(v1.x && v2.x);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<1, bool, Q> operator||(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2)\n\t{\n\t\treturn vec<1, bool, Q>(v1.x || v2.x);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_vec2.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_vec2.hpp\n\n#pragma once\n\n#include \"qualifier.hpp\"\n#if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n#\tinclude \"_swizzle.hpp\"\n#elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n#\tinclude \"_swizzle_func.hpp\"\n#endif\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct vec<2, T, Q>\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef T value_type;\n\t\ttypedef vec<2, T, Q> type;\n\t\ttypedef vec<2, bool, Q> bool_type;\n\n\t\t// -- Data --\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic push\n#\t\t\t\tpragma GCC diagnostic ignored \"-Wpedantic\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic push\n#\t\t\t\tpragma clang diagnostic ignored \"-Wgnu-anonymous-struct\"\n#\t\t\t\tpragma clang diagnostic ignored \"-Wnested-anon-types\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(push)\n#\t\t\t\tpragma warning(disable: 4201)  // nonstandard extension used : nameless struct/union\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_CONFIG_XYZW_ONLY\n\t\t\tT x, y;\n#\t\telif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE\n\t\t\tunion\n\t\t\t{\n\t\t\t\tstruct{ T x, y; };\n\t\t\t\tstruct{ T r, g; };\n\t\t\t\tstruct{ T s, t; };\n\n\t\t\t\ttypename detail::storage<2, T, detail::is_aligned<Q>::value>::type data;\n\n#\t\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\t\t\tGLM_SWIZZLE2_2_MEMBERS(T, Q, x, y)\n\t\t\t\t\tGLM_SWIZZLE2_2_MEMBERS(T, Q, r, g)\n\t\t\t\t\tGLM_SWIZZLE2_2_MEMBERS(T, Q, s, t)\n\t\t\t\t\tGLM_SWIZZLE2_3_MEMBERS(T, Q, x, y)\n\t\t\t\t\tGLM_SWIZZLE2_3_MEMBERS(T, Q, r, g)\n\t\t\t\t\tGLM_SWIZZLE2_3_MEMBERS(T, Q, s, t)\n\t\t\t\t\tGLM_SWIZZLE2_4_MEMBERS(T, Q, x, y)\n\t\t\t\t\tGLM_SWIZZLE2_4_MEMBERS(T, Q, r, g)\n\t\t\t\t\tGLM_SWIZZLE2_4_MEMBERS(T, Q, s, t)\n#\t\t\t\tendif\n\t\t\t};\n#\t\telse\n\t\t\tunion {T x, r, s;};\n\t\t\tunion {T y, g, t;};\n\n#\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n\t\t\t\tGLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, Q)\n#\t\t\tendif//GLM_CONFIG_SWIZZLE\n#\t\tendif\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(pop)\n#\t\t\tendif\n#\t\tendif\n\n\t\t// -- Component accesses --\n\n\t\t/// Return the count of components of the vector\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 2;}\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T& operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, T, P> const& v);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T x, T y);\n\n\t\t// -- Conversion constructors --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(vec<1, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A x, B y);\n\t\ttemplate<typename A, typename B>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, Q> const& x, B y);\n\t\ttemplate<typename A, typename B>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A x, vec<1, B, Q> const& y);\n\t\ttemplate<typename A, typename B>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, Q> const& x, vec<1, B, Q> const& y);\n\n\t\t// -- Conversion vector constructors --\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<3, U, P> const& v);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<2, U, P> const& v);\n\n\t\t// -- Swizzle constructors --\n#\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1,-1,-2> const& that)\n\t\t\t{\n\t\t\t\t*this = that();\n\t\t\t}\n#\t\tendif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator=(vec const& v) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(vec<2, U, Q> const& v);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator++();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator--();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator--(int);\n\n\t\t// -- Unary bit operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(vec<2, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(vec<2, U, Q> const& v);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(T scalar, vec<2, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator~(vec<2, T, Q> const& v);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, bool, Q> operator&&(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<2, bool, Q> operator||(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_vec2.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_vec2.inl",
    "content": "/// @ref core\n\n#include \"./compute_vector_relational.hpp\"\n\nnamespace glm\n{\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec()\n#\t\t\tif GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE\n\t\t\t\t: x(0), y(0)\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<2, T, Q> const& v)\n\t\t\t: x(v.x), y(v.y)\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<2, T, P> const& v)\n\t\t: x(v.x), y(v.y)\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(T scalar)\n\t\t: x(scalar), y(scalar)\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(T _x, T _y)\n\t\t: x(_x), y(_y)\n\t{}\n\n\t// -- Conversion scalar constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<1, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(A _x, B _y)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<1, A, Q> const& _x, B _y)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(A _x, vec<1, B, Q> const& _y)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<1, A, Q> const& _x, vec<1, B, Q> const& _y)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t{}\n\n\t// -- Conversion vector constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<2, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<3, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q>::vec(vec<4, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t{}\n\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<2, T, Q>::operator[](typename vec<2, T, Q>::length_type i)\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\tcase 0:\n\t\t\treturn x;\n\t\tcase 1:\n\t\t\treturn y;\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<2, T, Q>::operator[](typename vec<2, T, Q>::length_type i) const\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\tcase 0:\n\t\t\treturn x;\n\t\tcase 1:\n\t\t\treturn y;\n\t\t}\n\t}\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, T, Q> const& v)\n\t\t{\n\t\t\tthis->x = v.x;\n\t\t\tthis->y = v.y;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x = static_cast<T>(v.x);\n\t\tthis->y = static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator+=(U scalar)\n\t{\n\t\tthis->x += static_cast<T>(scalar);\n\t\tthis->y += static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator+=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x += static_cast<T>(v.x);\n\t\tthis->y += static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator+=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x += static_cast<T>(v.x);\n\t\tthis->y += static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator-=(U scalar)\n\t{\n\t\tthis->x -= static_cast<T>(scalar);\n\t\tthis->y -= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator-=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x -= static_cast<T>(v.x);\n\t\tthis->y -= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator-=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x -= static_cast<T>(v.x);\n\t\tthis->y -= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator*=(U scalar)\n\t{\n\t\tthis->x *= static_cast<T>(scalar);\n\t\tthis->y *= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator*=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x *= static_cast<T>(v.x);\n\t\tthis->y *= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator*=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x *= static_cast<T>(v.x);\n\t\tthis->y *= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator/=(U scalar)\n\t{\n\t\tthis->x /= static_cast<T>(scalar);\n\t\tthis->y /= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator/=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x /= static_cast<T>(v.x);\n\t\tthis->y /= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator/=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x /= static_cast<T>(v.x);\n\t\tthis->y /= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator++()\n\t{\n\t\t++this->x;\n\t\t++this->y;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator--()\n\t{\n\t\t--this->x;\n\t\t--this->y;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> vec<2, T, Q>::operator++(int)\n\t{\n\t\tvec<2, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> vec<2, T, Q>::operator--(int)\n\t{\n\t\tvec<2, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator%=(U scalar)\n\t{\n\t\tthis->x %= static_cast<T>(scalar);\n\t\tthis->y %= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator%=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x %= static_cast<T>(v.x);\n\t\tthis->y %= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator%=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x %= static_cast<T>(v.x);\n\t\tthis->y %= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator&=(U scalar)\n\t{\n\t\tthis->x &= static_cast<T>(scalar);\n\t\tthis->y &= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator&=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x &= static_cast<T>(v.x);\n\t\tthis->y &= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator&=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x &= static_cast<T>(v.x);\n\t\tthis->y &= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator|=(U scalar)\n\t{\n\t\tthis->x |= static_cast<T>(scalar);\n\t\tthis->y |= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator|=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x |= static_cast<T>(v.x);\n\t\tthis->y |= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator|=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x |= static_cast<T>(v.x);\n\t\tthis->y |= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator^=(U scalar)\n\t{\n\t\tthis->x ^= static_cast<T>(scalar);\n\t\tthis->y ^= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator^=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x ^= static_cast<T>(v.x);\n\t\tthis->y ^= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator^=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x ^= static_cast<T>(v.x);\n\t\tthis->y ^= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator<<=(U scalar)\n\t{\n\t\tthis->x <<= static_cast<T>(scalar);\n\t\tthis->y <<= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator<<=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x <<= static_cast<T>(v.x);\n\t\tthis->y <<= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator<<=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x <<= static_cast<T>(v.x);\n\t\tthis->y <<= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator>>=(U scalar)\n\t{\n\t\tthis->x >>= static_cast<T>(scalar);\n\t\tthis->y >>= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator>>=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x >>= static_cast<T>(v.x);\n\t\tthis->y >>= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> & vec<2, T, Q>::operator>>=(vec<2, U, Q> const& v)\n\t{\n\t\tthis->x >>= static_cast<T>(v.x);\n\t\tthis->y >>= static_cast<T>(v.y);\n\t\treturn *this;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\t-v.x,\n\t\t\t-v.y);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x + scalar,\n\t\t\tv.y + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x + v2.x,\n\t\t\tv1.y + v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar + v.x,\n\t\t\tscalar + v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x + v2.x,\n\t\t\tv1.x + v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x + v2.x,\n\t\t\tv1.y + v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x - scalar,\n\t\t\tv.y - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x - v2.x,\n\t\t\tv1.y - v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar - v.x,\n\t\t\tscalar - v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x - v2.x,\n\t\t\tv1.x - v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x - v2.x,\n\t\t\tv1.y - v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x * scalar,\n\t\t\tv.y * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x * v2.x,\n\t\t\tv1.y * v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar * v.x,\n\t\t\tscalar * v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x * v2.x,\n\t\t\tv1.x * v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x * v2.x,\n\t\t\tv1.y * v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x / scalar,\n\t\t\tv.y / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x / v2.x,\n\t\t\tv1.y / v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator/(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar / v.x,\n\t\t\tscalar / v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator/(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x / v2.x,\n\t\t\tv1.x / v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x / v2.x,\n\t\t\tv1.y / v2.y);\n\t}\n\n\t// -- Binary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x % scalar,\n\t\t\tv.y % scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x % v2.x,\n\t\t\tv1.y % v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator%(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar % v.x,\n\t\t\tscalar % v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator%(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x % v2.x,\n\t\t\tv1.x % v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x % v2.x,\n\t\t\tv1.y % v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x & scalar,\n\t\t\tv.y & scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x & v2.x,\n\t\t\tv1.y & v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator&(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar & v.x,\n\t\t\tscalar & v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator&(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x & v2.x,\n\t\t\tv1.x & v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x & v2.x,\n\t\t\tv1.y & v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x | scalar,\n\t\t\tv.y | scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x | v2.x,\n\t\t\tv1.y | v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator|(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar | v.x,\n\t\t\tscalar | v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator|(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x | v2.x,\n\t\t\tv1.x | v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x | v2.x,\n\t\t\tv1.y | v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x ^ scalar,\n\t\t\tv.y ^ scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x ^ v2.x,\n\t\t\tv1.y ^ v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator^(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar ^ v.x,\n\t\t\tscalar ^ v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator^(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x ^ v2.x,\n\t\t\tv1.x ^ v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x ^ v2.x,\n\t\t\tv1.y ^ v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x << scalar,\n\t\t\tv.y << scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x << v2.x,\n\t\t\tv1.y << v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator<<(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar << v.x,\n\t\t\tscalar << v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x << v2.x,\n\t\t\tv1.x << v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x << v2.x,\n\t\t\tv1.y << v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv.x >> scalar,\n\t\t\tv.y >> scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x >> v2.x,\n\t\t\tv1.y >> v2.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator>>(T scalar, vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tscalar >> v.x,\n\t\t\tscalar >> v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x >> v2.x,\n\t\t\tv1.x >> v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tv1.x >> v2.x,\n\t\t\tv1.y >> v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, T, Q> operator~(vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\t~v.x,\n\t\t\t~v.y);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn\n\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.x, v2.x) &&\n\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.y, v2.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2)\n\t{\n\t\treturn !(v1 == v2);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, bool, Q> operator&&(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2)\n\t{\n\t\treturn vec<2, bool, Q>(v1.x && v2.x, v1.y && v2.y);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<2, bool, Q> operator||(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2)\n\t{\n\t\treturn vec<2, bool, Q>(v1.x || v2.x, v1.y || v2.y);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_vec3.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_vec3.hpp\n\n#pragma once\n\n#include \"qualifier.hpp\"\n#if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n#\tinclude \"_swizzle.hpp\"\n#elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n#\tinclude \"_swizzle_func.hpp\"\n#endif\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct vec<3, T, Q>\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef T value_type;\n\t\ttypedef vec<3, T, Q> type;\n\t\ttypedef vec<3, bool, Q> bool_type;\n\n\t\t// -- Data --\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic push\n#\t\t\t\tpragma GCC diagnostic ignored \"-Wpedantic\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic push\n#\t\t\t\tpragma clang diagnostic ignored \"-Wgnu-anonymous-struct\"\n#\t\t\t\tpragma clang diagnostic ignored \"-Wnested-anon-types\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(push)\n#\t\t\t\tpragma warning(disable: 4201)  // nonstandard extension used : nameless struct/union\n#\t\t\t\tif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n#\t\t\t\t\tpragma warning(disable: 4324)  // structure was padded due to alignment specifier\n#\t\t\t\tendif\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_CONFIG_XYZW_ONLY\n\t\t\tT x, y, z;\n#\t\telif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE\n\t\t\tunion\n\t\t\t{\n\t\t\t\tstruct{ T x, y, z; };\n\t\t\t\tstruct{ T r, g, b; };\n\t\t\t\tstruct{ T s, t, p; };\n\n\t\t\t\ttypename detail::storage<3, T, detail::is_aligned<Q>::value>::type data;\n\n#\t\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\t\t\tGLM_SWIZZLE3_2_MEMBERS(T, Q, x, y, z)\n\t\t\t\t\tGLM_SWIZZLE3_2_MEMBERS(T, Q, r, g, b)\n\t\t\t\t\tGLM_SWIZZLE3_2_MEMBERS(T, Q, s, t, p)\n\t\t\t\t\tGLM_SWIZZLE3_3_MEMBERS(T, Q, x, y, z)\n\t\t\t\t\tGLM_SWIZZLE3_3_MEMBERS(T, Q, r, g, b)\n\t\t\t\t\tGLM_SWIZZLE3_3_MEMBERS(T, Q, s, t, p)\n\t\t\t\t\tGLM_SWIZZLE3_4_MEMBERS(T, Q, x, y, z)\n\t\t\t\t\tGLM_SWIZZLE3_4_MEMBERS(T, Q, r, g, b)\n\t\t\t\t\tGLM_SWIZZLE3_4_MEMBERS(T, Q, s, t, p)\n#\t\t\t\tendif\n\t\t\t};\n#\t\telse\n\t\t\tunion { T x, r, s; };\n\t\t\tunion { T y, g, t; };\n\t\t\tunion { T z, b, p; };\n\n#\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n\t\t\t\tGLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, Q)\n#\t\t\tendif//GLM_CONFIG_SWIZZLE\n#\t\tendif//GLM_LANG\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(pop)\n#\t\t\tendif\n#\t\tendif\n\n\t\t// -- Component accesses --\n\n\t\t/// Return the count of components of the vector\n\t\ttypedef length_t length_type;\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 3;}\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<3, T, P> const& v);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T a, T b, T c);\n\n\t\t// -- Conversion scalar constructors --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(vec<1, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X x, Y y, Z z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, Z _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, Z _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, vec<1, Z, Q> const& _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z);\n\t\ttemplate<typename X, typename Y, typename Z>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z);\n\n\t\t// -- Conversion vector constructors --\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, B _z);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<2, B, P> const& _yz);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<3, U, P> const& v);\n\n\t\t// -- Swizzle constructors --\n#\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\ttemplate<int E0, int E1, int E2>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<3, T, Q, E0, E1, E2, -1> const& that)\n\t\t\t{\n\t\t\t\t*this = that();\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& scalar)\n\t\t\t{\n\t\t\t\t*this = vec(v(), scalar);\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T const& scalar, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v)\n\t\t\t{\n\t\t\t\t*this = vec(scalar, v());\n\t\t\t}\n#\t\tendif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q>& operator=(vec<3, T, Q> const& v) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<3, U, Q> const& v);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator++();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator--();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator--(int);\n\n\t\t// -- Unary bit operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<3, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<3, U, Q> const& v);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(T scalar, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator~(vec<3, T, Q> const& v);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, bool, Q> operator&&(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<3, bool, Q> operator||(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_vec3.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_vec3.inl",
    "content": "/// @ref core\n\n#include \"compute_vector_relational.hpp\"\n\nnamespace glm\n{\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec()\n#\t\t\tif GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE\n\t\t\t\t: x(0), y(0), z(0)\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<3, T, Q> const& v)\n\t\t\t: x(v.x), y(v.y), z(v.z)\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<3, T, P> const& v)\n\t\t: x(v.x), y(v.y), z(v.z)\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(T scalar)\n\t\t: x(scalar), y(scalar), z(scalar)\n\t{}\n\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(T _x, T _y, T _z)\n\t\t: x(_x), y(_y), z(_z)\n\t{}\n\n\t// -- Conversion scalar constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.x))\n\t\t, z(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(X _x, Y _y, Z _z)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, Z _z)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, Z _z)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(X _x, Y _y, vec<1, Z, Q> const& _z)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t{}\n\n\t// -- Conversion vector constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<2, A, P> const& _xy, B _z)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(A _x, vec<2, B, P> const& _yz)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<3, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t\t, z(static_cast<T>(v.z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>::vec(vec<4, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t\t, z(static_cast<T>(v.z))\n\t{}\n\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T & vec<3, T, Q>::operator[](typename vec<3, T, Q>::length_type i)\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\t\tcase 0:\n\t\treturn x;\n\t\t\tcase 1:\n\t\treturn y;\n\t\t\tcase 2:\n\t\treturn z;\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<3, T, Q>::operator[](typename vec<3, T, Q>::length_type i) const\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\tcase 0:\n\t\t\treturn x;\n\t\tcase 1:\n\t\t\treturn y;\n\t\tcase 2:\n\t\t\treturn z;\n\t\t}\n\t}\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, T, Q> const& v)\n\t\t{\n\t\t\tthis->x = v.x;\n\t\t\tthis->y = v.y;\n\t\t\tthis->z = v.z;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q>& vec<3, T, Q>::operator=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x = static_cast<T>(v.x);\n\t\tthis->y = static_cast<T>(v.y);\n\t\tthis->z = static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator+=(U scalar)\n\t{\n\t\tthis->x += static_cast<T>(scalar);\n\t\tthis->y += static_cast<T>(scalar);\n\t\tthis->z += static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator+=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x += static_cast<T>(v.x);\n\t\tthis->y += static_cast<T>(v.x);\n\t\tthis->z += static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator+=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x += static_cast<T>(v.x);\n\t\tthis->y += static_cast<T>(v.y);\n\t\tthis->z += static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator-=(U scalar)\n\t{\n\t\tthis->x -= static_cast<T>(scalar);\n\t\tthis->y -= static_cast<T>(scalar);\n\t\tthis->z -= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator-=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x -= static_cast<T>(v.x);\n\t\tthis->y -= static_cast<T>(v.x);\n\t\tthis->z -= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator-=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x -= static_cast<T>(v.x);\n\t\tthis->y -= static_cast<T>(v.y);\n\t\tthis->z -= static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator*=(U scalar)\n\t{\n\t\tthis->x *= static_cast<T>(scalar);\n\t\tthis->y *= static_cast<T>(scalar);\n\t\tthis->z *= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator*=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x *= static_cast<T>(v.x);\n\t\tthis->y *= static_cast<T>(v.x);\n\t\tthis->z *= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator*=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x *= static_cast<T>(v.x);\n\t\tthis->y *= static_cast<T>(v.y);\n\t\tthis->z *= static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator/=(U v)\n\t{\n\t\tthis->x /= static_cast<T>(v);\n\t\tthis->y /= static_cast<T>(v);\n\t\tthis->z /= static_cast<T>(v);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator/=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x /= static_cast<T>(v.x);\n\t\tthis->y /= static_cast<T>(v.x);\n\t\tthis->z /= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator/=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x /= static_cast<T>(v.x);\n\t\tthis->y /= static_cast<T>(v.y);\n\t\tthis->z /= static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator++()\n\t{\n\t\t++this->x;\n\t\t++this->y;\n\t\t++this->z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator--()\n\t{\n\t\t--this->x;\n\t\t--this->y;\n\t\t--this->z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> vec<3, T, Q>::operator++(int)\n\t{\n\t\tvec<3, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> vec<3, T, Q>::operator--(int)\n\t{\n\t\tvec<3, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator%=(U scalar)\n\t{\n\t\tthis->x %= scalar;\n\t\tthis->y %= scalar;\n\t\tthis->z %= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator%=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x %= v.x;\n\t\tthis->y %= v.x;\n\t\tthis->z %= v.x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator%=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x %= v.x;\n\t\tthis->y %= v.y;\n\t\tthis->z %= v.z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator&=(U scalar)\n\t{\n\t\tthis->x &= scalar;\n\t\tthis->y &= scalar;\n\t\tthis->z &= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator&=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x &= v.x;\n\t\tthis->y &= v.x;\n\t\tthis->z &= v.x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator&=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x &= v.x;\n\t\tthis->y &= v.y;\n\t\tthis->z &= v.z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator|=(U scalar)\n\t{\n\t\tthis->x |= scalar;\n\t\tthis->y |= scalar;\n\t\tthis->z |= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator|=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x |= v.x;\n\t\tthis->y |= v.x;\n\t\tthis->z |= v.x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator|=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x |= v.x;\n\t\tthis->y |= v.y;\n\t\tthis->z |= v.z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator^=(U scalar)\n\t{\n\t\tthis->x ^= scalar;\n\t\tthis->y ^= scalar;\n\t\tthis->z ^= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator^=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x ^= v.x;\n\t\tthis->y ^= v.x;\n\t\tthis->z ^= v.x;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator^=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x ^= v.x;\n\t\tthis->y ^= v.y;\n\t\tthis->z ^= v.z;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator<<=(U scalar)\n\t{\n\t\tthis->x <<= scalar;\n\t\tthis->y <<= scalar;\n\t\tthis->z <<= scalar;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator<<=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x <<= static_cast<T>(v.x);\n\t\tthis->y <<= static_cast<T>(v.x);\n\t\tthis->z <<= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator<<=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x <<= static_cast<T>(v.x);\n\t\tthis->y <<= static_cast<T>(v.y);\n\t\tthis->z <<= static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator>>=(U scalar)\n\t{\n\t\tthis->x >>= static_cast<T>(scalar);\n\t\tthis->y >>= static_cast<T>(scalar);\n\t\tthis->z >>= static_cast<T>(scalar);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator>>=(vec<1, U, Q> const& v)\n\t{\n\t\tthis->x >>= static_cast<T>(v.x);\n\t\tthis->y >>= static_cast<T>(v.x);\n\t\tthis->z >>= static_cast<T>(v.x);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> & vec<3, T, Q>::operator>>=(vec<3, U, Q> const& v)\n\t{\n\t\tthis->x >>= static_cast<T>(v.x);\n\t\tthis->y >>= static_cast<T>(v.y);\n\t\tthis->z >>= static_cast<T>(v.z);\n\t\treturn *this;\n\t}\n\n\t// -- Unary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\t-v.x,\n\t\t\t-v.y,\n\t\t\t-v.z);\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x + scalar,\n\t\t\tv.y + scalar,\n\t\t\tv.z + scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x + scalar.x,\n\t\t\tv.y + scalar.x,\n\t\t\tv.z + scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar + v.x,\n\t\t\tscalar + v.y,\n\t\t\tscalar + v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x + v.x,\n\t\t\tscalar.x + v.y,\n\t\t\tscalar.x + v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x + v2.x,\n\t\t\tv1.y + v2.y,\n\t\t\tv1.z + v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x - scalar,\n\t\t\tv.y - scalar,\n\t\t\tv.z - scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x - scalar.x,\n\t\t\tv.y - scalar.x,\n\t\t\tv.z - scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar - v.x,\n\t\t\tscalar - v.y,\n\t\t\tscalar - v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x - v.x,\n\t\t\tscalar.x - v.y,\n\t\t\tscalar.x - v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x - v2.x,\n\t\t\tv1.y - v2.y,\n\t\t\tv1.z - v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x * scalar,\n\t\t\tv.y * scalar,\n\t\t\tv.z * scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x * scalar.x,\n\t\t\tv.y * scalar.x,\n\t\t\tv.z * scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar * v.x,\n\t\t\tscalar * v.y,\n\t\t\tscalar * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x * v.x,\n\t\t\tscalar.x * v.y,\n\t\t\tscalar.x * v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x * v2.x,\n\t\t\tv1.y * v2.y,\n\t\t\tv1.z * v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x / scalar,\n\t\t\tv.y / scalar,\n\t\t\tv.z / scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x / scalar.x,\n\t\t\tv.y / scalar.x,\n\t\t\tv.z / scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator/(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar / v.x,\n\t\t\tscalar / v.y,\n\t\t\tscalar / v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator/(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x / v.x,\n\t\t\tscalar.x / v.y,\n\t\t\tscalar.x / v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x / v2.x,\n\t\t\tv1.y / v2.y,\n\t\t\tv1.z / v2.z);\n\t}\n\n\t// -- Binary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x % scalar,\n\t\t\tv.y % scalar,\n\t\t\tv.z % scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x % scalar.x,\n\t\t\tv.y % scalar.x,\n\t\t\tv.z % scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator%(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar % v.x,\n\t\t\tscalar % v.y,\n\t\t\tscalar % v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator%(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x % v.x,\n\t\t\tscalar.x % v.y,\n\t\t\tscalar.x % v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x % v2.x,\n\t\t\tv1.y % v2.y,\n\t\t\tv1.z % v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x & scalar,\n\t\t\tv.y & scalar,\n\t\t\tv.z & scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x & scalar.x,\n\t\t\tv.y & scalar.x,\n\t\t\tv.z & scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator&(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar & v.x,\n\t\t\tscalar & v.y,\n\t\t\tscalar & v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator&(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x & v.x,\n\t\t\tscalar.x & v.y,\n\t\t\tscalar.x & v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x & v2.x,\n\t\t\tv1.y & v2.y,\n\t\t\tv1.z & v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x | scalar,\n\t\t\tv.y | scalar,\n\t\t\tv.z | scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x | scalar.x,\n\t\t\tv.y | scalar.x,\n\t\t\tv.z | scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator|(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar | v.x,\n\t\t\tscalar | v.y,\n\t\t\tscalar | v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator|(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x | v.x,\n\t\t\tscalar.x | v.y,\n\t\t\tscalar.x | v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x | v2.x,\n\t\t\tv1.y | v2.y,\n\t\t\tv1.z | v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x ^ scalar,\n\t\t\tv.y ^ scalar,\n\t\t\tv.z ^ scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x ^ scalar.x,\n\t\t\tv.y ^ scalar.x,\n\t\t\tv.z ^ scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator^(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar ^ v.x,\n\t\t\tscalar ^ v.y,\n\t\t\tscalar ^ v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator^(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x ^ v.x,\n\t\t\tscalar.x ^ v.y,\n\t\t\tscalar.x ^ v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x ^ v2.x,\n\t\t\tv1.y ^ v2.y,\n\t\t\tv1.z ^ v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x << scalar,\n\t\t\tv.y << scalar,\n\t\t\tv.z << scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x << scalar.x,\n\t\t\tv.y << scalar.x,\n\t\t\tv.z << scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator<<(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar << v.x,\n\t\t\tscalar << v.y,\n\t\t\tscalar << v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x << v.x,\n\t\t\tscalar.x << v.y,\n\t\t\tscalar.x << v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x << v2.x,\n\t\t\tv1.y << v2.y,\n\t\t\tv1.z << v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x >> scalar,\n\t\t\tv.y >> scalar,\n\t\t\tv.z >> scalar);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv.x >> scalar.x,\n\t\t\tv.y >> scalar.x,\n\t\t\tv.z >> scalar.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator>>(T scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar >> v.x,\n\t\t\tscalar >> v.y,\n\t\t\tscalar >> v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<1, T, Q> const& scalar, vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tscalar.x >> v.x,\n\t\t\tscalar.x >> v.y,\n\t\t\tscalar.x >> v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tv1.x >> v2.x,\n\t\t\tv1.y >> v2.y,\n\t\t\tv1.z >> v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, T, Q> operator~(vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\t~v.x,\n\t\t\t~v.y,\n\t\t\t~v.z);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn\n\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.x, v2.x) &&\n\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.y, v2.y) &&\n\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.z, v2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2)\n\t{\n\t\treturn !(v1 == v2);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, bool, Q> operator&&(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2)\n\t{\n\t\treturn vec<3, bool, Q>(v1.x && v2.x, v1.y && v2.y, v1.z && v2.z);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<3, bool, Q> operator||(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2)\n\t{\n\t\treturn vec<3, bool, Q>(v1.x || v2.x, v1.y || v2.y, v1.z || v2.z);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/detail/type_vec4.hpp",
    "content": "/// @ref core\n/// @file glm/detail/type_vec4.hpp\n\n#pragma once\n\n#include \"qualifier.hpp\"\n#if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n#\tinclude \"_swizzle.hpp\"\n#elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n#\tinclude \"_swizzle_func.hpp\"\n#endif\n#include <cstddef>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tstruct vec<4, T, Q>\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef T value_type;\n\t\ttypedef vec<4, T, Q> type;\n\t\ttypedef vec<4, bool, Q> bool_type;\n\n\t\t// -- Data --\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic push\n#\t\t\t\tpragma GCC diagnostic ignored \"-Wpedantic\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic push\n#\t\t\t\tpragma clang diagnostic ignored \"-Wgnu-anonymous-struct\"\n#\t\t\t\tpragma clang diagnostic ignored \"-Wnested-anon-types\"\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(push)\n#\t\t\t\tpragma warning(disable: 4201)  // nonstandard extension used : nameless struct/union\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_CONFIG_XYZW_ONLY\n\t\t\tT x, y, z, w;\n#\t\telif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE\n\t\t\tunion\n\t\t\t{\n\t\t\t\tstruct { T x, y, z, w; };\n\t\t\t\tstruct { T r, g, b, a; };\n\t\t\t\tstruct { T s, t, p, q; };\n\n\t\t\t\ttypename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;\n\n#\t\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\t\t\tGLM_SWIZZLE4_2_MEMBERS(T, Q, x, y, z, w)\n\t\t\t\t\tGLM_SWIZZLE4_2_MEMBERS(T, Q, r, g, b, a)\n\t\t\t\t\tGLM_SWIZZLE4_2_MEMBERS(T, Q, s, t, p, q)\n\t\t\t\t\tGLM_SWIZZLE4_3_MEMBERS(T, Q, x, y, z, w)\n\t\t\t\t\tGLM_SWIZZLE4_3_MEMBERS(T, Q, r, g, b, a)\n\t\t\t\t\tGLM_SWIZZLE4_3_MEMBERS(T, Q, s, t, p, q)\n\t\t\t\t\tGLM_SWIZZLE4_4_MEMBERS(T, Q, x, y, z, w)\n\t\t\t\t\tGLM_SWIZZLE4_4_MEMBERS(T, Q, r, g, b, a)\n\t\t\t\t\tGLM_SWIZZLE4_4_MEMBERS(T, Q, s, t, p, q)\n#\t\t\t\tendif\n\t\t\t};\n#\t\telse\n\t\t\tunion { T x, r, s; };\n\t\t\tunion { T y, g, t; };\n\t\t\tunion { T z, b, p; };\n\t\t\tunion { T w, a, q; };\n\n#\t\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION\n\t\t\t\tGLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, Q)\n#\t\t\tendif\n#\t\tendif\n\n#\t\tif GLM_SILENT_WARNINGS == GLM_ENABLE\n#\t\t\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\t\t\tpragma clang diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_GCC\n#\t\t\t\tpragma GCC diagnostic pop\n#\t\t\telif GLM_COMPILER & GLM_COMPILER_VC\n#\t\t\t\tpragma warning(pop)\n#\t\t\tendif\n#\t\tendif\n\n\t\t// -- Component accesses --\n\n\t\ttypedef length_t length_type;\n\n\t\t/// Return the count of components of the vector\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<4, T, Q> const& v) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<4, T, P> const& v);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(T scalar);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T x, T y, T z, T w);\n\n\t\t// -- Conversion scalar constructors --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR explicit vec(vec<1, U, P> const& v);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, Z _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, Z _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, Z _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, vec<1, Z, Q> const& _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, Z _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);\n\t\ttemplate<typename X, typename Y, typename Z, typename W>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _Y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);\n\n\t\t// -- Conversion vector constructors --\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, B _z, C _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, C _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, B _z, vec<1, C, P> const& _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, vec<1, C, P> const& _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<2, B, P> const& _yz, C _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, C _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, B _y, vec<2, C, P> const& _zw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, B _y, vec<2, C, P> const& _zw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, typename C, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<3, A, P> const& _xyz, B _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<3, A, P> const& _xyz, vec<1, B, P> const& _w);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(A _x, vec<3, B, P> const& _yzw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<1, A, P> const& _x, vec<3, B, P> const& _yzw);\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename A, typename B, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(vec<2, A, P> const& _xy, vec<2, B, P> const& _zw);\n\n\t\t/// Explicit conversions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification)\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT vec(vec<4, U, P> const& v);\n\n\t\t// -- Swizzle constructors --\n#\t\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\t\t\ttemplate<int E0, int E1, int E2, int E3>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<4, T, Q, E0, E1, E2, E3> const& that)\n\t\t\t{\n\t\t\t\t*this = that();\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1, int F0, int F1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, detail::_swizzle<2, T, Q, F0, F1, -1, -2> const& u)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(v(), u());\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T const& x, T const& y, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(x, y, v());\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T const& x, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& w)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(x, v(), w);\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& z, T const& w)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(v(), z, w);\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1, int E2>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(detail::_swizzle<3, T, Q, E0, E1, E2, -1> const& v, T const& w)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(v(), w);\n\t\t\t}\n\n\t\t\ttemplate<int E0, int E1, int E2>\n\t\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec(T const& x, detail::_swizzle<3, T, Q, E0, E1, E2, -1> const& v)\n\t\t\t{\n\t\t\t\t*this = vec<4, T, Q>(x, v());\n\t\t\t}\n#\t\tendif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, T, Q> const& v) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<4, U, Q> const& v);\n\n\t\t// -- Increment and decrement operators --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator++();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator--();\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator++(int);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator--(int);\n\n\t\t// -- Unary bit operators --\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<4, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(U scalar);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<1, U, Q> const& v);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<4, U, Q> const& v);\n\t};\n\n\t// -- Unary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v, T const & scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v, T const & scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, T const & scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v, T const & scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v, T scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(T scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator~(vec<4, T, Q> const& v);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator&&(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2);\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator||(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2);\n}//namespace glm\n\n#ifndef GLM_EXTERNAL_TEMPLATE\n#include \"type_vec4.inl\"\n#endif//GLM_EXTERNAL_TEMPLATE\n"
  },
  {
    "path": "libraries/glm/detail/type_vec4.inl",
    "content": "/// @ref core\n\n#include \"compute_vector_relational.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_vec4_add\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x + b.x, a.y + b.y, a.z + b.z, a.w + b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_vec4_sub\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x - b.x, a.y - b.y, a.z - b.z, a.w - b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_vec4_mul\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_vec4_div\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x / b.x, a.y / b.y, a.z / b.z, a.w / b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_vec4_mod\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x % b.x, a.y % b.y, a.z % b.z, a.w % b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_and\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x & b.x, a.y & b.y, a.z & b.z, a.w & b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_or\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x | b.x, a.y | b.y, a.z | b.z, a.w | b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_xor\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x ^ b.x, a.y ^ b.y, a.z ^ b.z, a.w ^ b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_shift_left\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x << b.x, a.y << b.y, a.z << b.z, a.w << b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_shift_right\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\treturn vec<4, T, Q>(a.x >> b.x, a.y >> b.y, a.z >> b.z, a.w >> b.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_equal\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t\t{\n\t\t\treturn\n\t\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.x, v2.x) &&\n\t\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.y, v2.y) &&\n\t\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.z, v2.z) &&\n\t\t\t\tdetail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1.w, v2.w);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_nequal\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t\t{\n\t\t\treturn !compute_vec4_equal<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(v1, v2);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q, int IsInt, std::size_t Size, bool Aligned>\n\tstruct compute_vec4_bitwise_not\n\t{\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(vec<4, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<4, T, Q>(~v.x, ~v.y, ~v.z, ~v.w);\n\t\t}\n\t};\n}//namespace detail\n\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec()\n#\t\t\tif GLM_CONFIG_CTOR_INIT != GLM_CTOR_INIT_DISABLE\n\t\t\t\t: x(0), y(0), z(0), w(0)\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<4, T, Q> const& v)\n\t\t\t: x(v.x), y(v.y), z(v.z), w(v.w)\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<4, T, P> const& v)\n\t\t: x(v.x), y(v.y), z(v.z), w(v.w)\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(T scalar)\n\t\t: x(scalar), y(scalar), z(scalar), w(scalar)\n\t{}\n\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(T _x, T _y, T _z, T _w)\n\t\t: x(_x), y(_y), z(_z), w(_w)\n\t{}\n\n\t// -- Conversion scalar constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.x))\n\t\t, z(static_cast<T>(v.x))\n\t\t, w(static_cast<T>(v.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, Y _y, Z _z, W _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, Z _z, W _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, Z _z, W _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, W _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, Y _y, vec<1, Z, Q> const& _z, W _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, W _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, Z _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename X, typename Y, typename Z, typename W>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\t// -- Conversion vector constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<2, A, P> const& _xy, B _z, C _w)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, C _w)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<2, A, P> const& _xy, B _z, vec<1, C, P> const& _w)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, vec<1, C, P> const& _w)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_z.x))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(A _x, vec<2, B, P> const& _yz, C _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, C _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(A _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_yz.x))\n\t\t, z(static_cast<T>(_yz.y))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(A _x, B _y, vec<2, C, P> const& _zw)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_zw.x))\n\t\t, w(static_cast<T>(_zw.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, A, P> const& _x, B _y, vec<2, C, P> const& _zw)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y))\n\t\t, z(static_cast<T>(_zw.x))\n\t\t, w(static_cast<T>(_zw.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(A _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_zw.x))\n\t\t, w(static_cast<T>(_zw.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, typename C, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, A, P> const& _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_y.x))\n\t\t, z(static_cast<T>(_zw.x))\n\t\t, w(static_cast<T>(_zw.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<3, A, P> const& _xyz, B _w)\n\t\t: x(static_cast<T>(_xyz.x))\n\t\t, y(static_cast<T>(_xyz.y))\n\t\t, z(static_cast<T>(_xyz.z))\n\t\t, w(static_cast<T>(_w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<3, A, P> const& _xyz, vec<1, B, P> const& _w)\n\t\t: x(static_cast<T>(_xyz.x))\n\t\t, y(static_cast<T>(_xyz.y))\n\t\t, z(static_cast<T>(_xyz.z))\n\t\t, w(static_cast<T>(_w.x))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(A _x, vec<3, B, P> const& _yzw)\n\t\t: x(static_cast<T>(_x))\n\t\t, y(static_cast<T>(_yzw.x))\n\t\t, z(static_cast<T>(_yzw.y))\n\t\t, w(static_cast<T>(_yzw.z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<1, A, P> const& _x, vec<3, B, P> const& _yzw)\n\t\t: x(static_cast<T>(_x.x))\n\t\t, y(static_cast<T>(_yzw.x))\n\t\t, z(static_cast<T>(_yzw.y))\n\t\t, w(static_cast<T>(_yzw.z))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename A, typename B, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<2, A, P> const& _xy, vec<2, B, P> const& _zw)\n\t\t: x(static_cast<T>(_xy.x))\n\t\t, y(static_cast<T>(_xy.y))\n\t\t, z(static_cast<T>(_zw.x))\n\t\t, w(static_cast<T>(_zw.y))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>::vec(vec<4, U, P> const& v)\n\t\t: x(static_cast<T>(v.x))\n\t\t, y(static_cast<T>(v.y))\n\t\t, z(static_cast<T>(v.z))\n\t\t, w(static_cast<T>(v.w))\n\t{}\n\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T& vec<4, T, Q>::operator[](typename vec<4, T, Q>::length_type i)\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\tcase 0:\n\t\t\treturn x;\n\t\tcase 1:\n\t\t\treturn y;\n\t\tcase 2:\n\t\t\treturn z;\n\t\tcase 3:\n\t\t\treturn w;\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T const& vec<4, T, Q>::operator[](typename vec<4, T, Q>::length_type i) const\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\tswitch(i)\n\t\t{\n\t\tdefault:\n\t\tcase 0:\n\t\t\treturn x;\n\t\tcase 1:\n\t\t\treturn y;\n\t\tcase 2:\n\t\t\treturn z;\n\t\tcase 3:\n\t\t\treturn w;\n\t\t}\n\t}\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, T, Q> const& v)\n\t\t{\n\t\t\tthis->x = v.x;\n\t\t\tthis->y = v.y;\n\t\t\tthis->z = v.z;\n\t\t\tthis->w = v.w;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q>& vec<4, T, Q>::operator=(vec<4, U, Q> const& v)\n\t{\n\t\tthis->x = static_cast<T>(v.x);\n\t\tthis->y = static_cast<T>(v.y);\n\t\tthis->z = static_cast<T>(v.z);\n\t\tthis->w = static_cast<T>(v.w);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator+=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_add<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator+=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_add<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v.x)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator+=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_add<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator-=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_sub<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator-=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_sub<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v.x)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator-=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_sub<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator*=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_mul<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator*=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_mul<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v.x)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator*=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_mul<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator/=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_div<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator/=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_div<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v.x)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator/=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_div<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\t// -- Increment and decrement operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator++()\n\t{\n\t\t++this->x;\n\t\t++this->y;\n\t\t++this->z;\n\t\t++this->w;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator--()\n\t{\n\t\t--this->x;\n\t\t--this->y;\n\t\t--this->z;\n\t\t--this->w;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> vec<4, T, Q>::operator++(int)\n\t{\n\t\tvec<4, T, Q> Result(*this);\n\t\t++*this;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> vec<4, T, Q>::operator--(int)\n\t{\n\t\tvec<4, T, Q> Result(*this);\n\t\t--*this;\n\t\treturn Result;\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator%=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_mod<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator%=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_mod<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator%=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_mod<T, Q, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator&=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_and<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator&=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_and<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator&=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_and<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator|=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_or<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator|=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_or<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator|=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_or<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator^=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_xor<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator^=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_xor<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator^=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_xor<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator<<=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_left<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator<<=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_left<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator<<=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_left<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator>>=(U scalar)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_right<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(scalar)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator>>=(vec<1, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_right<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> & vec<4, T, Q>::operator>>=(vec<4, U, Q> const& v)\n\t{\n\t\treturn (*this = detail::compute_vec4_shift_right<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(*this, vec<4, T, Q>(v)));\n\t}\n\n\t// -- Unary constant operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(0) -= v;\n\t}\n\n\t// -- Binary arithmetic operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v, T const & scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) += scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) += v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(v) += scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v2) += v1;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) += v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v, T const & scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) -= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) -= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) -= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) -= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) -= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, T const & scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) *= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) *= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(v) *= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v2) *= v1;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) *= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v, T const & scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) /= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) /= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator/(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) /= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator/(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) /= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) /= v2;\n\t}\n\n\t// -- Binary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) %= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) %= v2.x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator%(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) %= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator%(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar.x) %= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) %= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) &= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) &= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator&(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) &= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator&(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) &= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) &= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) |= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) |= v2.x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator|(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) |= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator|(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) |= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) |= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) ^= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) ^= v2.x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator^(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) ^= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator^(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) ^= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) ^= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) <<= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) <<= v2.x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator<<(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) <<= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) <<= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) <<= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v, T scalar)\n\t{\n\t\treturn vec<4, T, Q>(v) >>= scalar;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) >>= v2.x;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator>>(T scalar, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(scalar) >>= v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1.x) >>= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn vec<4, T, Q>(v1) >>= v2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, T, Q> operator~(vec<4, T, Q> const& v)\n\t{\n\t\treturn detail::compute_vec4_bitwise_not<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(v);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn detail::compute_vec4_equal<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(v1, v2);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator!=(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)\n\t{\n\t\treturn detail::compute_vec4_nequal<T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(v1, v2);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, bool, Q> operator&&(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2)\n\t{\n\t\treturn vec<4, bool, Q>(v1.x && v2.x, v1.y && v2.y, v1.z && v2.z, v1.w && v2.w);\n\t}\n\n\ttemplate<qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, bool, Q> operator||(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2)\n\t{\n\t\treturn vec<4, bool, Q>(v1.x || v2.x, v1.y || v2.y, v1.z || v2.z, v1.w || v2.w);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"type_vec4_simd.inl\"\n#endif\n"
  },
  {
    "path": "libraries/glm/detail/type_vec4_simd.inl",
    "content": "#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\ttemplate<qualifier Q, int E0, int E1, int E2, int E3>\n\tstruct _swizzle_base1<4, float, Q, E0,E1,E2,E3, true> : public _swizzle_base0<float, 4>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<4, float, Q> operator ()()  const\n\t\t{\n\t\t\t__m128 data = *reinterpret_cast<__m128 const*>(&this->_buffer);\n\n\t\t\tvec<4, float, Q> Result;\n#\t\t\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\t\t\t\tResult.data = _mm_permute_ps(data, _MM_SHUFFLE(E3, E2, E1, E0));\n#\t\t\telse\n\t\t\t\tResult.data = _mm_shuffle_ps(data, data, _MM_SHUFFLE(E3, E2, E1, E0));\n#\t\t\tendif\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q, int E0, int E1, int E2, int E3>\n\tstruct _swizzle_base1<4, int, Q, E0,E1,E2,E3, true> : public _swizzle_base0<int, 4>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<4, int, Q> operator ()()  const\n\t\t{\n\t\t\t__m128i data = *reinterpret_cast<__m128i const*>(&this->_buffer);\n\n\t\t\tvec<4, int, Q> Result;\n\t\t\tResult.data = _mm_shuffle_epi32(data, _MM_SHUFFLE(E3, E2, E1, E0));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q, int E0, int E1, int E2, int E3>\n\tstruct _swizzle_base1<4, uint, Q, E0,E1,E2,E3, true> : public _swizzle_base0<uint, 4>\n\t{\n\t\tGLM_FUNC_QUALIFIER vec<4, uint, Q> operator ()()  const\n\t\t{\n\t\t\t__m128i data = *reinterpret_cast<__m128i const*>(&this->_buffer);\n\n\t\t\tvec<4, uint, Q> Result;\n\t\t\tResult.data = _mm_shuffle_epi32(data, _MM_SHUFFLE(E3, E2, E1, E0));\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif// GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_add<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_add_ps(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_add<double, Q, true>\n\t{\n\t\tstatic vec<4, double, Q> call(vec<4, double, Q> const& a, vec<4, double, Q> const& b)\n\t\t{\n\t\t\tvec<4, double, Q> Result;\n\t\t\tResult.data = _mm256_add_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_sub<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_sub_ps(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_sub<double, Q, true>\n\t{\n\t\tstatic vec<4, double, Q> call(vec<4, double, Q> const& a, vec<4, double, Q> const& b)\n\t\t{\n\t\t\tvec<4, double, Q> Result;\n\t\t\tResult.data = _mm256_sub_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_mul<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_mul_ps(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_mul<double, Q, true>\n\t{\n\t\tstatic vec<4, double, Q> call(vec<4, double, Q> const& a, vec<4, double, Q> const& b)\n\t\t{\n\t\t\tvec<4, double, Q> Result;\n\t\t\tResult.data = _mm256_mul_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_div<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = _mm_div_ps(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\t#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_div<double, Q, true>\n\t{\n\t\tstatic vec<4, double, Q> call(vec<4, double, Q> const& a, vec<4, double, Q> const& b)\n\t\t{\n\t\t\tvec<4, double, Q> Result;\n\t\t\tResult.data = _mm256_div_pd(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<>\n\tstruct compute_vec4_div<float, aligned_lowp, true>\n\t{\n\t\tstatic vec<4, float, aligned_lowp> call(vec<4, float, aligned_lowp> const& a, vec<4, float, aligned_lowp> const& b)\n\t\t{\n\t\t\tvec<4, float, aligned_lowp> Result;\n\t\t\tResult.data = _mm_mul_ps(a.data, _mm_rcp_ps(b.data));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_and<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_and_si128(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_and<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_and_si256(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_or<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_or_si128(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_or<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_or_si256(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_xor<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_xor_si128(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_xor<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_xor_si256(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_shift_left<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_sll_epi32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_shift_left<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_sll_epi64(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_shift_right<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_srl_epi32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_shift_right<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& a, vec<4, T, Q> const& b)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_srl_epi64(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_bitwise_not<T, Q, true, 32, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& v)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm_xor_si128(v.data, _mm_set1_epi32(-1));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_vec4_bitwise_not<T, Q, true, 64, true>\n\t{\n\t\tstatic vec<4, T, Q> call(vec<4, T, Q> const& v)\n\t\t{\n\t\t\tvec<4, T, Q> Result;\n\t\t\tResult.data = _mm256_xor_si256(v.data, _mm_set1_epi32(-1));\n\t\t\treturn Result;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_equal<float, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\treturn _mm_movemask_ps(_mm_cmpeq_ps(v1.data, v2.data)) != 0;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_equal<int, Q, true, 32, true>\n\t{\n\t\tstatic bool call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\t//return _mm_movemask_epi8(_mm_cmpeq_epi32(v1.data, v2.data)) != 0;\n\t\t\t__m128i neq = _mm_xor_si128(v1.data, v2.data);\n\t\t\treturn _mm_test_all_zeros(neq, neq) == 0;\n\t\t}\n\t};\n#\tendif\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_nequal<float, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\treturn _mm_movemask_ps(_mm_cmpneq_ps(v1.data, v2.data)) != 0;\n\t\t}\n\t};\n\n#\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_nequal<int, Q, true, 32, true>\n\t{\n\t\tstatic bool call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\t//return _mm_movemask_epi8(_mm_cmpneq_epi32(v1.data, v2.data)) != 0;\n\t\t\t__m128i neq = _mm_xor_si128(v1.data, v2.data);\n\t\t\treturn _mm_test_all_zeros(neq, neq) != 0;\n\t\t}\n\t};\n#\tendif\n}//namespace detail\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(float _s) :\n\t\tdata(_mm_set1_ps(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(float _s) :\n\t\tdata(_mm_set1_ps(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(float _s) :\n\t\tdata(_mm_set1_ps(_s))\n\t{}\n\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, double, aligned_lowp>::vec(double _s) :\n\t\tdata(_mm256_set1_pd(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, double, aligned_mediump>::vec(double _s) :\n\t\tdata(_mm256_set1_pd(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, double, aligned_highp>::vec(double _s) :\n\t\tdata(_mm256_set1_pd(_s))\n\t{}\n#\tendif\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_lowp>::vec(int _s) :\n\t\tdata(_mm_set1_epi32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_mediump>::vec(int _s) :\n\t\tdata(_mm_set1_epi32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_highp>::vec(int _s) :\n\t\tdata(_mm_set1_epi32(_s))\n\t{}\n\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, detail::int64, aligned_lowp>::vec(detail::int64 _s) :\n\t\tdata(_mm256_set1_epi64x(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, detail::int64, aligned_mediump>::vec(detail::int64 _s) :\n\t\tdata(_mm256_set1_epi64x(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, detail::int64, aligned_highp>::vec(detail::int64 _s) :\n\t\tdata(_mm256_set1_epi64x(_s))\n\t{}\n#\tendif\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(float _x, float _y, float _z, float _w) :\n\t\tdata(_mm_set_ps(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(float _x, float _y, float _z, float _w) :\n\t\tdata(_mm_set_ps(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(float _x, float _y, float _z, float _w) :\n\t\tdata(_mm_set_ps(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_lowp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_set_epi32(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_mediump>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_set_epi32(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_highp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_set_epi32(_w, _z, _y, _x))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_cvtepi32_ps(_mm_set_epi32(_w, _z, _y, _x)))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_cvtepi32_ps(_mm_set_epi32(_w, _z, _y, _x)))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(_mm_cvtepi32_ps(_mm_set_epi32(_w, _z, _y, _x)))\n\t{}\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#if GLM_ARCH & GLM_ARCH_NEON_BIT\nnamespace glm {\nnamespace detail {\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_add<float, Q, true>\n\t{\n\t\tstatic\n\t\tvec<4, float, Q>\n\t\tcall(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = vaddq_f32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_add<uint, Q, true>\n\t{\n\t\tstatic\n\t\tvec<4, uint, Q>\n\t\tcall(vec<4, uint, Q> const& a, vec<4, uint, Q> const& b)\n\t\t{\n\t\t\tvec<4, uint, Q> Result;\n\t\t\tResult.data = vaddq_u32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_add<int, Q, true>\n\t{\n\t\tstatic\n\t\tvec<4, int, Q>\n\t\tcall(vec<4, int, Q> const& a, vec<4, int, Q> const& b)\n\t\t{\n\t\t\tvec<4, uint, Q> Result;\n\t\t\tResult.data = vaddq_s32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_sub<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = vsubq_f32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_sub<uint, Q, true>\n\t{\n\t\tstatic vec<4, uint, Q> call(vec<4, uint, Q> const& a, vec<4, uint, Q> const& b)\n\t\t{\n\t\t\tvec<4, uint, Q> Result;\n\t\t\tResult.data = vsubq_u32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_sub<int, Q, true>\n\t{\n\t\tstatic vec<4, int, Q> call(vec<4, int, Q> const& a, vec<4, int, Q> const& b)\n\t\t{\n\t\t\tvec<4, int, Q> Result;\n\t\t\tResult.data = vsubq_s32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_mul<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = vmulq_f32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_mul<uint, Q, true>\n\t{\n\t\tstatic vec<4, uint, Q> call(vec<4, uint, Q> const& a, vec<4, uint, Q> const& b)\n\t\t{\n\t\t\tvec<4, uint, Q> Result;\n\t\t\tResult.data = vmulq_u32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_mul<int, Q, true>\n\t{\n\t\tstatic vec<4, int, Q> call(vec<4, int, Q> const& a, vec<4, int, Q> const& b)\n\t\t{\n\t\t\tvec<4, int, Q> Result;\n\t\t\tResult.data = vmulq_s32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_div<float, Q, true>\n\t{\n\t\tstatic vec<4, float, Q> call(vec<4, float, Q> const& a, vec<4, float, Q> const& b)\n\t\t{\n\t\t\tvec<4, float, Q> Result;\n\t\t\tResult.data = vdivq_f32(a.data, b.data);\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_equal<float, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\tuint32x4_t cmp = vceqq_f32(v1.data, v2.data);\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tuint32_t r = cmp[0];\n#else\n\t\t\tuint32x2_t cmpx2 = vpmin_u32(vget_low_f32(cmp), vget_high_f32(cmp));\n\t\t\tcmpx2 = vpmin_u32(cmpx2, cmpx2);\n\t\t\tuint32_t r = cmpx2[0];\n#endif\n\t\t\treturn r == ~0u;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_equal<uint, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, uint, Q> const& v1, vec<4, uint, Q> const& v2)\n\t\t{\n\t\t\tuint32x4_t cmp = vceqq_u32(v1.data, v2.data);\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tuint32_t r = cmp[0];\n#else\n\t\t\tuint32x2_t cmpx2 = vpmin_u32(vget_low_f32(cmp), vget_high_f32(cmp));\n\t\t\tcmpx2 = vpmin_u32(cmpx2, cmpx2);\n\t\t\tuint32_t r = cmpx2[0];\n#endif\n\t\t\treturn r == ~0u;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_equal<int, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\tuint32x4_t cmp = vceqq_s32(v1.data, v2.data);\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tcmp = vpminq_u32(cmp, cmp);\n\t\t\tuint32_t r = cmp[0];\n#else\n\t\t\tuint32x2_t cmpx2 = vpmin_u32(vget_low_f32(cmp), vget_high_f32(cmp));\n\t\t\tcmpx2 = vpmin_u32(cmpx2, cmpx2);\n\t\t\tuint32_t r = cmpx2[0];\n#endif\n\t\t\treturn r == ~0u;\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_nequal<float, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, float, Q> const& v1, vec<4, float, Q> const& v2)\n\t\t{\n\t\t\treturn !compute_vec4_equal<float, Q, false, 32, true>::call(v1, v2);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_nequal<uint, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, uint, Q> const& v1, vec<4, uint, Q> const& v2)\n\t\t{\n\t\t\treturn !compute_vec4_equal<uint, Q, false, 32, true>::call(v1, v2);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_vec4_nequal<int, Q, false, 32, true>\n\t{\n\t\tstatic bool call(vec<4, int, Q> const& v1, vec<4, int, Q> const& v2)\n\t\t{\n\t\t\treturn !compute_vec4_equal<int, Q, false, 32, true>::call(v1, v2);\n\t\t}\n\t};\n\n}//namespace detail\n\n#if !GLM_CONFIG_XYZW_ONLY\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(float _s) :\n\t\tdata(vdupq_n_f32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(float _s) :\n\t\tdata(vdupq_n_f32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(float _s) :\n\t\tdata(vdupq_n_f32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_lowp>::vec(int _s) :\n\t\tdata(vdupq_n_s32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_mediump>::vec(int _s) :\n\t\tdata(vdupq_n_s32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, int, aligned_highp>::vec(int _s) :\n\t\tdata(vdupq_n_s32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, uint, aligned_lowp>::vec(uint _s) :\n\t\tdata(vdupq_n_u32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, uint, aligned_mediump>::vec(uint _s) :\n\t\tdata(vdupq_n_u32(_s))\n\t{}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, uint, aligned_highp>::vec(uint _s) :\n\t\tdata(vdupq_n_u32(_s))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(const vec<4, float, aligned_highp>& rhs) :\n\t\tdata(rhs.data)\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(const vec<4, int, aligned_highp>& rhs) :\n\t\tdata(vcvtq_f32_s32(rhs.data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(const vec<4, uint, aligned_highp>& rhs) :\n\t\tdata(vcvtq_f32_u32(rhs.data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(vcvtq_f32_s32(vec<4, int, aligned_lowp>(_x, _y, _z, _w).data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(vcvtq_f32_s32(vec<4, int, aligned_mediump>(_x, _y, _z, _w).data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(int _x, int _y, int _z, int _w) :\n\t\tdata(vcvtq_f32_s32(vec<4, int, aligned_highp>(_x, _y, _z, _w).data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_lowp>::vec(uint _x, uint _y, uint _z, uint _w) :\n\t\tdata(vcvtq_f32_u32(vec<4, uint, aligned_lowp>(_x, _y, _z, _w).data))\n\t{}\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_mediump>::vec(uint _x, uint _y, uint _z, uint _w) :\n\t\tdata(vcvtq_f32_u32(vec<4, uint, aligned_mediump>(_x, _y, _z, _w).data))\n\t{}\n\n\n\ttemplate<>\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<4, float, aligned_highp>::vec(uint _x, uint _y, uint _z, uint _w) :\n\t\tdata(vcvtq_f32_u32(vec<4, uint, aligned_highp>(_x, _y, _z, _w).data))\n\t{}\n\n#endif\n}//namespace glm\n\n#endif\n"
  },
  {
    "path": "libraries/glm/exponential.hpp",
    "content": "/// @ref core\n/// @file glm/exponential.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n///\n/// @defgroup core_func_exponential Exponential functions\n/// @ingroup core\n///\n/// Provides GLSL exponential functions\n///\n/// These all operate component-wise. The description is per component.\n///\n/// Include <glm/exponential.hpp> to use these core features.\n\n#pragma once\n\n#include \"detail/type_vec1.hpp\"\n#include \"detail/type_vec2.hpp\"\n#include \"detail/type_vec3.hpp\"\n#include \"detail/type_vec4.hpp\"\n#include <cmath>\n\nnamespace glm\n{\n\t/// @addtogroup core_func_exponential\n\t/// @{\n\n\t/// Returns 'base' raised to the power 'exponent'.\n\t///\n\t/// @param base Floating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type qualifier.\n\t/// @param exponent Floating point value representing the 'exponent'.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/pow.xml\">GLSL pow man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> pow(vec<L, T, Q> const& base, vec<L, T, Q> const& exponent);\n\n\t/// Returns the natural exponentiation of x, i.e., e^x.\n\t///\n\t/// @param v exp function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/exp.xml\">GLSL exp man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> exp(vec<L, T, Q> const& v);\n\n\t/// Returns the natural logarithm of v, i.e.,\n\t/// returns the value y which satisfies the equation x = e^y.\n\t/// Results are undefined if v <= 0.\n\t///\n\t/// @param v log function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/log.xml\">GLSL log man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> log(vec<L, T, Q> const& v);\n\n\t/// Returns 2 raised to the v power.\n\t///\n\t/// @param v exp2 function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/exp2.xml\">GLSL exp2 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> exp2(vec<L, T, Q> const& v);\n\n\t/// Returns the base 2 log of x, i.e., returns the value y,\n\t/// which satisfies the equation x = 2 ^ y.\n\t///\n\t/// @param v log2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/log2.xml\">GLSL log2 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> log2(vec<L, T, Q> const& v);\n\n\t/// Returns the positive square root of v.\n\t///\n\t/// @param v sqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/sqrt.xml\">GLSL sqrt man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> sqrt(vec<L, T, Q> const& v);\n\n\t/// Returns the reciprocal of the positive square root of v.\n\t///\n\t/// @param v inversesqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/inversesqrt.xml\">GLSL inversesqrt man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> inversesqrt(vec<L, T, Q> const& v);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_exponential.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_clip_space.hpp",
    "content": "/// @ref ext_matrix_clip_space\n/// @file glm/ext/matrix_clip_space.hpp\n///\n/// @defgroup ext_matrix_clip_space GLM_EXT_matrix_clip_space\n/// @ingroup ext\n///\n/// Defines functions that generate clip space transformation matrices.\n///\n/// The matrices generated by this extension use standard OpenGL fixed-function\n/// conventions. For example, the lookAt function generates a transform from world\n/// space into the specific eye space that the projective matrix functions\n/// (perspective, ortho, etc) are designed to expect. The OpenGL compatibility\n/// specifications defines the particular layout of this eye space.\n///\n/// Include <glm/ext/matrix_clip_space.hpp> to use the features of this extension.\n///\n/// @see ext_matrix_transform\n/// @see ext_matrix_projection\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_constants.hpp\"\n#include \"../geometric.hpp\"\n#include \"../trigonometric.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_matrix_clip_space extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_matrix_clip_space\n\t/// @{\n\n\t/// Creates a matrix for projecting two-dimensional coordinates onto the screen.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top, T const& zNear, T const& zFar)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluOrtho2D.xml\">gluOrtho2D man page</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(\n\t\tT left, T right, T bottom, T top);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_ZO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume using right-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_NO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_ZO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_NO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoZO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoNO(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a matrix for an orthographic parallel viewing volume, using the default handedness and default near and far clip planes definition.\n\t/// To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t///\n\t/// @see - glm::ortho(T const& left, T const& right, T const& bottom, T const& top)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glOrtho.xml\">glOrtho man page</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(\n\t\tT left, T right, T bottom, T top, T zNear, T zFar);\n\n\t/// Creates a left handed frustum matrix.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_ZO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a left handed frustum matrix.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_NO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a right handed frustum matrix.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_ZO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a right handed frustum matrix.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_NO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumZO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumNO(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a left handed frustum matrix.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a right handed frustum matrix.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\t/// Creates a frustum matrix with default handedness, using the default handedness and default near and far clip planes definition.\n\t/// To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFrustum.xml\">glFrustum man page</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> frustum(\n\t\tT left, T right, T bottom, T top, T near, T far);\n\n\n\t/// Creates a matrix for a right handed, symetric perspective-view frustum.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_ZO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a right handed, symetric perspective-view frustum.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_NO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a left handed, symetric perspective-view frustum.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_ZO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a left handed, symetric perspective-view frustum.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_NO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a symetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveZO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a symetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveNO(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a right handed, symetric perspective-view frustum.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a left handed, symetric perspective-view frustum.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Creates a matrix for a symetric perspective-view frustum based on the default handedness and default near and far clip planes definition.\n\t/// To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @param fovy Specifies the field of view angle in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPerspective.xml\">gluPerspective man page</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspective(\n\t\tT fovy, T aspect, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using right-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_ZO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using right-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_NO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using left-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_ZO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using left-handed coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_NO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovZO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovNO(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a right handed perspective projection matrix based on a field of view.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a left handed perspective projection matrix based on a field of view.\n\t/// If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t/// Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Builds a perspective projection matrix based on a field of view and the default handedness and default near and far clip planes definition.\n\t/// To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @param fov Expressed in radians.\n\t/// @param width Width of the viewport\n\t/// @param height Height of the viewport\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param far Specifies the distance from the viewer to the far clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFov(\n\t\tT fov, T width, T height, T near, T far);\n\n\t/// Creates a matrix for a left handed, symmetric perspective-view frustum with far plane at infinite.\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveLH(\n\t\tT fovy, T aspect, T near);\n\n\t/// Creates a matrix for a right handed, symmetric perspective-view frustum with far plane at infinite.\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveRH(\n\t\tT fovy, T aspect, T near);\n\n\t/// Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default handedness.\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspective(\n\t\tT fovy, T aspect, T near);\n\n\t/// Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(\n\t\tT fovy, T aspect, T near);\n\n\t/// Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.\n\t///\n\t/// @param fovy Specifies the field of view angle, in degrees, in the y direction. Expressed in radians.\n\t/// @param aspect Specifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).\n\t/// @param near Specifies the distance from the viewer to the near clipping plane (always positive).\n\t/// @param ep Epsilon\n\t///\n\t/// @tparam T A floating-point scalar type\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(\n\t\tT fovy, T aspect, T near, T ep);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_clip_space.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_clip_space.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> ortho(T left, T right, T bottom, T top)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(1));\n\t\tResult[0][0] = static_cast<T>(2) / (right - left);\n\t\tResult[1][1] = static_cast<T>(2) / (top - bottom);\n\t\tResult[2][2] = - static_cast<T>(1);\n\t\tResult[3][0] = - (right + left) / (right - left);\n\t\tResult[3][1] = - (top + bottom) / (top - bottom);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoLH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(1);\n\t\tResult[0][0] = static_cast<T>(2) / (right - left);\n\t\tResult[1][1] = static_cast<T>(2) / (top - bottom);\n\t\tResult[2][2] = static_cast<T>(1) / (zFar - zNear);\n\t\tResult[3][0] = - (right + left) / (right - left);\n\t\tResult[3][1] = - (top + bottom) / (top - bottom);\n\t\tResult[3][2] = - zNear / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoLH_NO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(1);\n\t\tResult[0][0] = static_cast<T>(2) / (right - left);\n\t\tResult[1][1] = static_cast<T>(2) / (top - bottom);\n\t\tResult[2][2] = static_cast<T>(2) / (zFar - zNear);\n\t\tResult[3][0] = - (right + left) / (right - left);\n\t\tResult[3][1] = - (top + bottom) / (top - bottom);\n\t\tResult[3][2] = - (zFar + zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoRH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(1);\n\t\tResult[0][0] = static_cast<T>(2) / (right - left);\n\t\tResult[1][1] = static_cast<T>(2) / (top - bottom);\n\t\tResult[2][2] = - static_cast<T>(1) / (zFar - zNear);\n\t\tResult[3][0] = - (right + left) / (right - left);\n\t\tResult[3][1] = - (top + bottom) / (top - bottom);\n\t\tResult[3][2] = - zNear / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoRH_NO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(1);\n\t\tResult[0][0] = static_cast<T>(2) / (right - left);\n\t\tResult[1][1] = static_cast<T>(2) / (top - bottom);\n\t\tResult[2][2] = - static_cast<T>(2) / (zFar - zNear);\n\t\tResult[3][0] = - (right + left) / (right - left);\n\t\tResult[3][1] = - (top + bottom) / (top - bottom);\n\t\tResult[3][2] = - (zFar + zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoZO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn orthoLH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\telse\n\t\t\treturn orthoRH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoNO(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn orthoLH_NO(left, right, bottom, top, zNear, zFar);\n#\t\telse\n\t\t\treturn orthoRH_NO(left, right, bottom, top, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoLH(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn orthoLH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\telse\n\t\t\treturn orthoLH_NO(left, right, bottom, top, zNear, zFar);\n#\t\tendif\n\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> orthoRH(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn orthoRH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\telse\n\t\t\treturn orthoRH_NO(left, right, bottom, top, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> ortho(T left, T right, T bottom, T top, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_ZO\n\t\t\treturn orthoLH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_NO\n\t\t\treturn orthoLH_NO(left, right, bottom, top, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_ZO\n\t\t\treturn orthoRH_ZO(left, right, bottom, top, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_NO\n\t\t\treturn orthoRH_NO(left, right, bottom, top, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumLH_ZO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(0);\n\t\tResult[0][0] = (static_cast<T>(2) * nearVal) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * nearVal) / (top - bottom);\n\t\tResult[2][0] = (right + left) / (right - left);\n\t\tResult[2][1] = (top + bottom) / (top - bottom);\n\t\tResult[2][2] = farVal / (farVal - nearVal);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = -(farVal * nearVal) / (farVal - nearVal);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumLH_NO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(0);\n\t\tResult[0][0] = (static_cast<T>(2) * nearVal) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * nearVal) / (top - bottom);\n\t\tResult[2][0] = (right + left) / (right - left);\n\t\tResult[2][1] = (top + bottom) / (top - bottom);\n\t\tResult[2][2] = (farVal + nearVal) / (farVal - nearVal);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = - (static_cast<T>(2) * farVal * nearVal) / (farVal - nearVal);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumRH_ZO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(0);\n\t\tResult[0][0] = (static_cast<T>(2) * nearVal) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * nearVal) / (top - bottom);\n\t\tResult[2][0] = (right + left) / (right - left);\n\t\tResult[2][1] = (top + bottom) / (top - bottom);\n\t\tResult[2][2] = farVal / (nearVal - farVal);\n\t\tResult[2][3] = static_cast<T>(-1);\n\t\tResult[3][2] = -(farVal * nearVal) / (farVal - nearVal);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumRH_NO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n\t\tmat<4, 4, T, defaultp> Result(0);\n\t\tResult[0][0] = (static_cast<T>(2) * nearVal) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * nearVal) / (top - bottom);\n\t\tResult[2][0] = (right + left) / (right - left);\n\t\tResult[2][1] = (top + bottom) / (top - bottom);\n\t\tResult[2][2] = - (farVal + nearVal) / (farVal - nearVal);\n\t\tResult[2][3] = static_cast<T>(-1);\n\t\tResult[3][2] = - (static_cast<T>(2) * farVal * nearVal) / (farVal - nearVal);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumZO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn frustumLH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\telse\n\t\t\treturn frustumRH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumNO(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn frustumLH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\telse\n\t\t\treturn frustumRH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumLH(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn frustumLH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\telse\n\t\t\treturn frustumLH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustumRH(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn frustumRH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\telse\n\t\t\treturn frustumRH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> frustum(T left, T right, T bottom, T top, T nearVal, T farVal)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_ZO\n\t\t\treturn frustumLH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_NO\n\t\t\treturn frustumLH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_ZO\n\t\t\treturn frustumRH_ZO(left, right, bottom, top, nearVal, farVal);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_NO\n\t\t\treturn frustumRH_NO(left, right, bottom, top, nearVal, farVal);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveRH_ZO(T fovy, T aspect, T zNear, T zFar)\n\t{\n\t\tassert(abs(aspect - std::numeric_limits<T>::epsilon()) > static_cast<T>(0));\n\n\t\tT const tanHalfFovy = tan(fovy / static_cast<T>(2));\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = static_cast<T>(1) / (aspect * tanHalfFovy);\n\t\tResult[1][1] = static_cast<T>(1) / (tanHalfFovy);\n\t\tResult[2][2] = zFar / (zNear - zFar);\n\t\tResult[2][3] = - static_cast<T>(1);\n\t\tResult[3][2] = -(zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveRH_NO(T fovy, T aspect, T zNear, T zFar)\n\t{\n\t\tassert(abs(aspect - std::numeric_limits<T>::epsilon()) > static_cast<T>(0));\n\n\t\tT const tanHalfFovy = tan(fovy / static_cast<T>(2));\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = static_cast<T>(1) / (aspect * tanHalfFovy);\n\t\tResult[1][1] = static_cast<T>(1) / (tanHalfFovy);\n\t\tResult[2][2] = - (zFar + zNear) / (zFar - zNear);\n\t\tResult[2][3] = - static_cast<T>(1);\n\t\tResult[3][2] = - (static_cast<T>(2) * zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveLH_ZO(T fovy, T aspect, T zNear, T zFar)\n\t{\n\t\tassert(abs(aspect - std::numeric_limits<T>::epsilon()) > static_cast<T>(0));\n\n\t\tT const tanHalfFovy = tan(fovy / static_cast<T>(2));\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = static_cast<T>(1) / (aspect * tanHalfFovy);\n\t\tResult[1][1] = static_cast<T>(1) / (tanHalfFovy);\n\t\tResult[2][2] = zFar / (zFar - zNear);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = -(zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveLH_NO(T fovy, T aspect, T zNear, T zFar)\n\t{\n\t\tassert(abs(aspect - std::numeric_limits<T>::epsilon()) > static_cast<T>(0));\n\n\t\tT const tanHalfFovy = tan(fovy / static_cast<T>(2));\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = static_cast<T>(1) / (aspect * tanHalfFovy);\n\t\tResult[1][1] = static_cast<T>(1) / (tanHalfFovy);\n\t\tResult[2][2] = (zFar + zNear) / (zFar - zNear);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = - (static_cast<T>(2) * zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveZO(T fovy, T aspect, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn perspectiveLH_ZO(fovy, aspect, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveRH_ZO(fovy, aspect, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveNO(T fovy, T aspect, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn perspectiveLH_NO(fovy, aspect, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveRH_NO(fovy, aspect, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveLH(T fovy, T aspect, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn perspectiveLH_ZO(fovy, aspect, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveLH_NO(fovy, aspect, zNear, zFar);\n#\t\tendif\n\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveRH(T fovy, T aspect, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn perspectiveRH_ZO(fovy, aspect, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveRH_NO(fovy, aspect, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspective(T fovy, T aspect, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_ZO\n\t\t\treturn perspectiveLH_ZO(fovy, aspect, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_NO\n\t\t\treturn perspectiveLH_NO(fovy, aspect, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_ZO\n\t\t\treturn perspectiveRH_ZO(fovy, aspect, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_NO\n\t\t\treturn perspectiveRH_NO(fovy, aspect, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovRH_ZO(T fov, T width, T height, T zNear, T zFar)\n\t{\n\t\tassert(width > static_cast<T>(0));\n\t\tassert(height > static_cast<T>(0));\n\t\tassert(fov > static_cast<T>(0));\n\n\t\tT const rad = fov;\n\t\tT const h = glm::cos(static_cast<T>(0.5) * rad) / glm::sin(static_cast<T>(0.5) * rad);\n\t\tT const w = h * height / width; ///todo max(width , Height) / min(width , Height)?\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = w;\n\t\tResult[1][1] = h;\n\t\tResult[2][2] = zFar / (zNear - zFar);\n\t\tResult[2][3] = - static_cast<T>(1);\n\t\tResult[3][2] = -(zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovRH_NO(T fov, T width, T height, T zNear, T zFar)\n\t{\n\t\tassert(width > static_cast<T>(0));\n\t\tassert(height > static_cast<T>(0));\n\t\tassert(fov > static_cast<T>(0));\n\n\t\tT const rad = fov;\n\t\tT const h = glm::cos(static_cast<T>(0.5) * rad) / glm::sin(static_cast<T>(0.5) * rad);\n\t\tT const w = h * height / width; ///todo max(width , Height) / min(width , Height)?\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = w;\n\t\tResult[1][1] = h;\n\t\tResult[2][2] = - (zFar + zNear) / (zFar - zNear);\n\t\tResult[2][3] = - static_cast<T>(1);\n\t\tResult[3][2] = - (static_cast<T>(2) * zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovLH_ZO(T fov, T width, T height, T zNear, T zFar)\n\t{\n\t\tassert(width > static_cast<T>(0));\n\t\tassert(height > static_cast<T>(0));\n\t\tassert(fov > static_cast<T>(0));\n\n\t\tT const rad = fov;\n\t\tT const h = glm::cos(static_cast<T>(0.5) * rad) / glm::sin(static_cast<T>(0.5) * rad);\n\t\tT const w = h * height / width; ///todo max(width , Height) / min(width , Height)?\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = w;\n\t\tResult[1][1] = h;\n\t\tResult[2][2] = zFar / (zFar - zNear);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = -(zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovLH_NO(T fov, T width, T height, T zNear, T zFar)\n\t{\n\t\tassert(width > static_cast<T>(0));\n\t\tassert(height > static_cast<T>(0));\n\t\tassert(fov > static_cast<T>(0));\n\n\t\tT const rad = fov;\n\t\tT const h = glm::cos(static_cast<T>(0.5) * rad) / glm::sin(static_cast<T>(0.5) * rad);\n\t\tT const w = h * height / width; ///todo max(width , Height) / min(width , Height)?\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = w;\n\t\tResult[1][1] = h;\n\t\tResult[2][2] = (zFar + zNear) / (zFar - zNear);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = - (static_cast<T>(2) * zFar * zNear) / (zFar - zNear);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovZO(T fov, T width, T height, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn perspectiveFovLH_ZO(fov, width, height, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveFovRH_ZO(fov, width, height, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovNO(T fov, T width, T height, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn perspectiveFovLH_NO(fov, width, height, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveFovRH_NO(fov, width, height, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovLH(T fov, T width, T height, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn perspectiveFovLH_ZO(fov, width, height, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveFovLH_NO(fov, width, height, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFovRH(T fov, T width, T height, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT\n\t\t\treturn perspectiveFovRH_ZO(fov, width, height, zNear, zFar);\n#\t\telse\n\t\t\treturn perspectiveFovRH_NO(fov, width, height, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> perspectiveFov(T fov, T width, T height, T zNear, T zFar)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_ZO\n\t\t\treturn perspectiveFovLH_ZO(fov, width, height, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_LH_NO\n\t\t\treturn perspectiveFovLH_NO(fov, width, height, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_ZO\n\t\t\treturn perspectiveFovRH_ZO(fov, width, height, zNear, zFar);\n#\t\telif GLM_CONFIG_CLIP_CONTROL == GLM_CLIP_CONTROL_RH_NO\n\t\t\treturn perspectiveFovRH_NO(fov, width, height, zNear, zFar);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> infinitePerspectiveRH(T fovy, T aspect, T zNear)\n\t{\n\t\tT const range = tan(fovy / static_cast<T>(2)) * zNear;\n\t\tT const left = -range * aspect;\n\t\tT const right = range * aspect;\n\t\tT const bottom = -range;\n\t\tT const top = range;\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = (static_cast<T>(2) * zNear) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * zNear) / (top - bottom);\n\t\tResult[2][2] = - static_cast<T>(1);\n\t\tResult[2][3] = - static_cast<T>(1);\n\t\tResult[3][2] = - static_cast<T>(2) * zNear;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> infinitePerspectiveLH(T fovy, T aspect, T zNear)\n\t{\n\t\tT const range = tan(fovy / static_cast<T>(2)) * zNear;\n\t\tT const left = -range * aspect;\n\t\tT const right = range * aspect;\n\t\tT const bottom = -range;\n\t\tT const top = range;\n\n\t\tmat<4, 4, T, defaultp> Result(T(0));\n\t\tResult[0][0] = (static_cast<T>(2) * zNear) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * zNear) / (top - bottom);\n\t\tResult[2][2] = static_cast<T>(1);\n\t\tResult[2][3] = static_cast<T>(1);\n\t\tResult[3][2] = - static_cast<T>(2) * zNear;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> infinitePerspective(T fovy, T aspect, T zNear)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn infinitePerspectiveLH(fovy, aspect, zNear);\n#\t\telse\n\t\t\treturn infinitePerspectiveRH(fovy, aspect, zNear);\n#\t\tendif\n\t}\n\n\t// Infinite projection matrix: http://www.terathon.com/gdc07_lengyel.pdf\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> tweakedInfinitePerspective(T fovy, T aspect, T zNear, T ep)\n\t{\n\t\tT const range = tan(fovy / static_cast<T>(2)) * zNear;\n\t\tT const left = -range * aspect;\n\t\tT const right = range * aspect;\n\t\tT const bottom = -range;\n\t\tT const top = range;\n\n\t\tmat<4, 4, T, defaultp> Result(static_cast<T>(0));\n\t\tResult[0][0] = (static_cast<T>(2) * zNear) / (right - left);\n\t\tResult[1][1] = (static_cast<T>(2) * zNear) / (top - bottom);\n\t\tResult[2][2] = ep - static_cast<T>(1);\n\t\tResult[2][3] = static_cast<T>(-1);\n\t\tResult[3][2] = (ep - static_cast<T>(2)) * zNear;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> tweakedInfinitePerspective(T fovy, T aspect, T zNear)\n\t{\n\t\treturn tweakedInfinitePerspective(fovy, aspect, zNear, epsilon<T>());\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_common.hpp",
    "content": "/// @ref ext_matrix_common\n/// @file glm/ext/matrix_common.hpp\n///\n/// @defgroup ext_matrix_common GLM_EXT_matrix_common\n/// @ingroup ext\n///\n/// Defines functions for common matrix operations.\n///\n/// Include <glm/ext/matrix_common.hpp> to use the features of this extension.\n///\n/// @see ext_matrix_common\n\n#pragma once\n\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_fixes.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_matrix_transform extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_matrix_common\n\t/// @{\n\n\ttemplate<length_t C, length_t R, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, mat<C, R, U, Q> const& a);\n\n\ttemplate<length_t C, length_t R, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, U a);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_common.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_common.inl",
    "content": "#include \"../matrix.hpp\"\n\nnamespace glm\n{\n\ttemplate<length_t C, length_t R, typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, U a)\n\t{\n\t\treturn mat<C, R, U, Q>(x) * (static_cast<U>(1) - a) + mat<C, R, U, Q>(y) * a;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, mat<C, R, U, Q> const& a)\n\t{\n\t\treturn matrixCompMult(mat<C, R, U, Q>(x), static_cast<U>(1) - a) + matrixCompMult(mat<C, R, U, Q>(y), a);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x2.hpp\n\n#pragma once\n#include \"../detail/type_mat2x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 2, double, defaultp>\t\tdmat2x2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 2, double, defaultp>\t\tdmat2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, lowp>\t\tlowp_dmat2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, mediump>\tmediump_dmat2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, highp>\thighp_dmat2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, lowp>\t\tlowp_dmat2x2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, mediump>\tmediump_dmat2x2;\n\n\t/// 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, double, highp>\thighp_dmat2x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x3.hpp\n\n#pragma once\n#include \"../detail/type_mat2x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 3 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 3, double, defaultp>\t\tdmat2x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, double, lowp>\t\tlowp_dmat2x3;\n\n\t/// 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, double, mediump>\tmediump_dmat2x3;\n\n\t/// 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, double, highp>\thighp_dmat2x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x4.hpp\n\n#pragma once\n#include \"../detail/type_mat2x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 4 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 4, double, defaultp>\t\tdmat2x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double2x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double2x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, double, lowp>\t\tlowp_dmat2x4;\n\n\t/// 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, double, mediump>\tmediump_dmat2x4;\n\n\t/// 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, double, highp>\thighp_dmat2x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x2.hpp\n\n#pragma once\n#include \"../detail/type_mat3x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 3 columns of 2 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 2, double, defaultp>\t\tdmat3x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, double, lowp>\t\tlowp_dmat3x2;\n\n\t/// 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, double, mediump>\tmediump_dmat3x2;\n\n\t/// 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, double, highp>\thighp_dmat3x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x3.hpp\n\n#pragma once\n#include \"../detail/type_mat3x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 3, double, defaultp>\t\tdmat3x3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 3, double, defaultp>\t\tdmat3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, lowp>\t\tlowp_dmat3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, mediump>\tmediump_dmat3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, highp>\thighp_dmat3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, lowp>\t\tlowp_dmat3x3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, mediump>\tmediump_dmat3x3;\n\n\t/// 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, double, highp>\thighp_dmat3x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x4.hpp\n\n#pragma once\n#include \"../detail/type_mat3x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 3 columns of 4 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 4, double, defaultp>\t\tdmat3x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double3x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double3x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, double, lowp>\t\tlowp_dmat3x4;\n\n\t/// 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, double, mediump>\tmediump_dmat3x4;\n\n\t/// 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, double, highp>\thighp_dmat3x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x2.hpp\n\n#pragma once\n#include \"../detail/type_mat4x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 2 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 2, double, defaultp>\t\tdmat4x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat4x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, double, lowp>\t\tlowp_dmat4x2;\n\n\t/// 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, double, mediump>\tmediump_dmat4x2;\n\n\t/// 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, double, highp>\thighp_dmat4x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x3.hpp\n\n#pragma once\n#include \"../detail/type_mat4x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 3 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 3, double, defaultp>\t\tdmat4x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat4x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, double, lowp>\t\tlowp_dmat4x3;\n\n\t/// 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, double, mediump>\tmediump_dmat4x3;\n\n\t/// 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, double, highp>\thighp_dmat4x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x4.hpp\n\n#pragma once\n#include \"../detail/type_mat4x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 4, double, defaultp>\t\tdmat4x4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 4, double, defaultp>\t\tdmat4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_double4x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_double4x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat4x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, lowp>\t\tlowp_dmat4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, mediump>\tmediump_dmat4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, highp>\thighp_dmat4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, lowp>\t\tlowp_dmat4x4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, mediump>\tmediump_dmat4x4;\n\n\t/// 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, double, highp>\thighp_dmat4x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x2.hpp\n\n#pragma once\n#include \"../detail/type_mat2x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 2, float, defaultp>\t\tmat2x2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 2, float, defaultp>\t\tmat2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, lowp>\t\tlowp_mat2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, mediump>\tmediump_mat2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, highp>\t\thighp_mat2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, lowp>\t\tlowp_mat2x2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, mediump>\tmediump_mat2x2;\n\n\t/// 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 2, float, highp>\t\thighp_mat2x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x3.hpp\n\n#pragma once\n#include \"../detail/type_mat2x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 3 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 3, float, defaultp>\t\tmat2x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, float, lowp>\t\tlowp_mat2x3;\n\n\t/// 2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, float, mediump>\tmediump_mat2x3;\n\n\t/// 2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 3, float, highp>\t\thighp_mat2x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x4.hpp\n\n#pragma once\n#include \"../detail/type_mat2x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 2 columns of 4 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<2, 4, float, defaultp>\t\tmat2x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float2x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, float, lowp>\t\tlowp_mat2x4;\n\n\t/// 2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, float, mediump>\tmediump_mat2x4;\n\n\t/// 2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<2, 4, float, highp>\t\thighp_mat2x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x2.hpp\n\n#pragma once\n#include \"../detail/type_mat3x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core\n\t/// @{\n\n\t/// 3 columns of 2 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 2, float, defaultp>\t\t\tmat3x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, float, lowp>\t\tlowp_mat3x2;\n\n\t/// 3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, float, mediump>\tmediump_mat3x2;\n\n\t/// 3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 2, float, highp>\t\thighp_mat3x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x3.hpp\n\n#pragma once\n#include \"../detail/type_mat3x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 3, float, defaultp>\t\t\tmat3x3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 3, float, defaultp>\t\t\tmat3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, lowp>\t\tlowp_mat3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, mediump>\tmediump_mat3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, highp>\t\thighp_mat3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, lowp>\t\tlowp_mat3x3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, mediump>\tmediump_mat3x3;\n\n\t/// 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 3, float, highp>\t\thighp_mat3x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x4.hpp\n\n#pragma once\n#include \"../detail/type_mat3x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 3 columns of 4 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<3, 4, float, defaultp>\t\t\tmat3x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float3x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float3x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat3x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, float, lowp>\t\tlowp_mat3x4;\n\n\t/// 3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, float, mediump>\tmediump_mat3x4;\n\n\t/// 3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<3, 4, float, highp>\t\thighp_mat3x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float4x2.hpp\n\n#pragma once\n#include \"../detail/type_mat4x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 2 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 2, float, defaultp>\t\t\tmat4x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float2x2_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat2x2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, float, lowp>\t\tlowp_mat4x2;\n\n\t/// 4 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, float, mediump>\tmediump_mat4x2;\n\n\t/// 4 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 2, float, highp>\t\thighp_mat4x2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float4x3.hpp\n\n#pragma once\n#include \"../detail/type_mat4x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 3 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 3, float, defaultp>\t\t\tmat4x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float4x3_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat4x3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, float, lowp>\t\tlowp_mat4x3;\n\n\t/// 4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, float, mediump>\tmediump_mat4x3;\n\n\t/// 4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 3, float, highp>\t\thighp_mat4x3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float4x4.hpp\n\n#pragma once\n#include \"../detail/type_mat4x4.hpp\"\n\nnamespace glm\n{\n\t/// @ingroup core_matrix\n\t/// @{\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 4, float, defaultp>\t\t\tmat4x4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\ttypedef mat<4, 4, float, defaultp>\t\t\tmat4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_float4x4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/matrix_float4x4_precision.hpp\n\n#pragma once\n#include \"../detail/type_mat4x4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_matrix_precision\n\t/// @{\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, lowp>\t\tlowp_mat4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, mediump>\tmediump_mat4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, highp>\t\thighp_mat4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, lowp>\t\tlowp_mat4x4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, mediump>\tmediump_mat4x4;\n\n\t/// 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef mat<4, 4, float, highp>\t\thighp_mat4x4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_projection.hpp",
    "content": "/// @ref ext_matrix_projection\n/// @file glm/ext/matrix_projection.hpp\n///\n/// @defgroup ext_matrix_projection GLM_EXT_matrix_projection\n/// @ingroup ext\n///\n/// Functions that generate common projection transformation matrices.\n///\n/// The matrices generated by this extension use standard OpenGL fixed-function\n/// conventions. For example, the lookAt function generates a transform from world\n/// space into the specific eye space that the projective matrix functions\n/// (perspective, ortho, etc) are designed to expect. The OpenGL compatibility\n/// specifications defines the particular layout of this eye space.\n///\n/// Include <glm/ext/matrix_projection.hpp> to use the features of this extension.\n///\n/// @see ext_matrix_transform\n/// @see ext_matrix_clip_space\n\n#pragma once\n\n// Dependencies\n#include \"../gtc/constants.hpp\"\n#include \"../geometric.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../matrix.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_matrix_projection extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_matrix_projection\n\t/// @{\n\n\t/// Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param obj Specify the object coordinates.\n\t/// @param model Specifies the current modelview matrix\n\t/// @param proj Specifies the current projection matrix\n\t/// @param viewport Specifies the current viewport\n\t/// @return Return the computed window coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluProject.xml\">gluProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> projectZO(\n\t\tvec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param obj Specify the object coordinates.\n\t/// @param model Specifies the current modelview matrix\n\t/// @param proj Specifies the current projection matrix\n\t/// @param viewport Specifies the current viewport\n\t/// @return Return the computed window coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluProject.xml\">gluProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> projectNO(\n\t\tvec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near and far clip planes definition.\n\t/// To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @param obj Specify the object coordinates.\n\t/// @param model Specifies the current modelview matrix\n\t/// @param proj Specifies the current projection matrix\n\t/// @param viewport Specifies the current viewport\n\t/// @return Return the computed window coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluProject.xml\">gluProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> project(\n\t\tvec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)\n\t///\n\t/// @param win Specify the window coordinates to be mapped.\n\t/// @param model Specifies the modelview matrix\n\t/// @param proj Specifies the projection matrix\n\t/// @param viewport Specifies the viewport\n\t/// @return Returns the computed object coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluUnProject.xml\">gluUnProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> unProjectZO(\n\t\tvec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.\n\t/// The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)\n\t///\n\t/// @param win Specify the window coordinates to be mapped.\n\t/// @param model Specifies the modelview matrix\n\t/// @param proj Specifies the projection matrix\n\t/// @param viewport Specifies the viewport\n\t/// @return Returns the computed object coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluUnProject.xml\">gluUnProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> unProjectNO(\n\t\tvec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near and far clip planes definition.\n\t/// To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.\n\t///\n\t/// @param win Specify the window coordinates to be mapped.\n\t/// @param model Specifies the modelview matrix\n\t/// @param proj Specifies the projection matrix\n\t/// @param viewport Specifies the viewport\n\t/// @return Returns the computed object coordinates.\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluUnProject.xml\">gluUnProject man page</a>\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> unProject(\n\t\tvec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);\n\n\t/// Define a picking region\n\t///\n\t/// @param center Specify the center of a picking region in window coordinates.\n\t/// @param delta Specify the width and height, respectively, of the picking region in window coordinates.\n\t/// @param viewport Rendering viewport\n\t/// @tparam T Native type used for the computation. Currently supported: half (not recommended), float or double.\n\t/// @tparam U Currently supported: Floating-point types and integer types.\n\t///\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPickMatrix.xml\">gluPickMatrix man page</a>\n\ttemplate<typename T, qualifier Q, typename U>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> pickMatrix(\n\t\tvec<2, T, Q> const& center, vec<2, T, Q> const& delta, vec<4, U, Q> const& viewport);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_projection.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_projection.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> projectZO(vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tvec<4, T, Q> tmp = vec<4, T, Q>(obj, static_cast<T>(1));\n\t\ttmp = model * tmp;\n\t\ttmp = proj * tmp;\n\n\t\ttmp /= tmp.w;\n\t\ttmp.x = tmp.x * static_cast<T>(0.5) + static_cast<T>(0.5);\n\t\ttmp.y = tmp.y * static_cast<T>(0.5) + static_cast<T>(0.5);\n\n\t\ttmp[0] = tmp[0] * T(viewport[2]) + T(viewport[0]);\n\t\ttmp[1] = tmp[1] * T(viewport[3]) + T(viewport[1]);\n\n\t\treturn vec<3, T, Q>(tmp);\n\t}\n\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> projectNO(vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tvec<4, T, Q> tmp = vec<4, T, Q>(obj, static_cast<T>(1));\n\t\ttmp = model * tmp;\n\t\ttmp = proj * tmp;\n\n\t\ttmp /= tmp.w;\n\t\ttmp = tmp * static_cast<T>(0.5) + static_cast<T>(0.5);\n\t\ttmp[0] = tmp[0] * T(viewport[2]) + T(viewport[0]);\n\t\ttmp[1] = tmp[1] * T(viewport[3]) + T(viewport[1]);\n\n\t\treturn vec<3, T, Q>(tmp);\n\t}\n\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> project(vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tif(GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT)\n\t\t\treturn projectZO(obj, model, proj, viewport);\n\t\telse\n\t\t\treturn projectNO(obj, model, proj, viewport);\n\t}\n\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> unProjectZO(vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tmat<4, 4, T, Q> Inverse = inverse(proj * model);\n\n\t\tvec<4, T, Q> tmp = vec<4, T, Q>(win, T(1));\n\t\ttmp.x = (tmp.x - T(viewport[0])) / T(viewport[2]);\n\t\ttmp.y = (tmp.y - T(viewport[1])) / T(viewport[3]);\n\t\ttmp.x = tmp.x * static_cast<T>(2) - static_cast<T>(1);\n\t\ttmp.y = tmp.y * static_cast<T>(2) - static_cast<T>(1);\n\n\t\tvec<4, T, Q> obj = Inverse * tmp;\n\t\tobj /= obj.w;\n\n\t\treturn vec<3, T, Q>(obj);\n\t}\n\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> unProjectNO(vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tmat<4, 4, T, Q> Inverse = inverse(proj * model);\n\n\t\tvec<4, T, Q> tmp = vec<4, T, Q>(win, T(1));\n\t\ttmp.x = (tmp.x - T(viewport[0])) / T(viewport[2]);\n\t\ttmp.y = (tmp.y - T(viewport[1])) / T(viewport[3]);\n\t\ttmp = tmp * static_cast<T>(2) - static_cast<T>(1);\n\n\t\tvec<4, T, Q> obj = Inverse * tmp;\n\t\tobj /= obj.w;\n\n\t\treturn vec<3, T, Q>(obj);\n\t}\n\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> unProject(vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport)\n\t{\n\t\tif(GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT)\n\t\t\treturn unProjectZO(win, model, proj, viewport);\n\t\telse\n\t\t\treturn unProjectNO(win, model, proj, viewport);\n\t}\n\n\ttemplate<typename T, qualifier Q, typename U>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> pickMatrix(vec<2, T, Q> const& center, vec<2, T, Q> const& delta, vec<4, U, Q> const& viewport)\n\t{\n\t\tassert(delta.x > static_cast<T>(0) && delta.y > static_cast<T>(0));\n\t\tmat<4, 4, T, Q> Result(static_cast<T>(1));\n\n\t\tif(!(delta.x > static_cast<T>(0) && delta.y > static_cast<T>(0)))\n\t\t\treturn Result; // Error\n\n\t\tvec<3, T, Q> Temp(\n\t\t\t(static_cast<T>(viewport[2]) - static_cast<T>(2) * (center.x - static_cast<T>(viewport[0]))) / delta.x,\n\t\t\t(static_cast<T>(viewport[3]) - static_cast<T>(2) * (center.y - static_cast<T>(viewport[1]))) / delta.y,\n\t\t\tstatic_cast<T>(0));\n\n\t\t// Translate and scale the picked region to the entire window\n\t\tResult = translate(Result, Temp);\n\t\treturn scale(Result, vec<3, T, Q>(static_cast<T>(viewport[2]) / delta.x, static_cast<T>(viewport[3]) / delta.y, static_cast<T>(1)));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_relational.hpp",
    "content": "/// @ref ext_matrix_relational\n/// @file glm/ext/matrix_relational.hpp\n///\n/// @defgroup ext_matrix_relational GLM_EXT_matrix_relational\n/// @ingroup ext\n///\n/// Exposes comparison functions for matrix types that take a user defined epsilon values.\n///\n/// Include <glm/ext/matrix_relational.hpp> to use the features of this extension.\n///\n/// @see ext_vector_relational\n/// @see ext_scalar_relational\n/// @see ext_quaternion_relational\n\n#pragma once\n\n// Dependencies\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_matrix_relational extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_matrix_relational\n\t/// @{\n\n\t/// Perform a component-wise equal-to comparison of two matrices.\n\t/// Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);\n\n\t/// Perform a component-wise not-equal-to comparison of two matrices.\n\t/// Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, int ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, int, Q> const& ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, int ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix\n\t/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, int, Q> const& ULPs);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_relational.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_relational.inl",
    "content": "/// @ref ext_vector_relational\n/// @file glm/ext/vector_relational.inl\n\n// Dependency:\n#include \"../ext/vector_relational.hpp\"\n#include \"../common.hpp\"\n\nnamespace glm\n{\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b)\n\t{\n\t\treturn equal(a, b, static_cast<T>(0));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, T Epsilon)\n\t{\n\t\treturn equal(a, b, vec<C, T, Q>(Epsilon));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, T, Q> const& Epsilon)\n\t{\n\t\tvec<C, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < C; ++i)\n\t\t\tResult[i] = all(equal(a[i], b[i], Epsilon[i]));\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y)\n\t{\n\t\treturn notEqual(x, y, static_cast<T>(0));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T Epsilon)\n\t{\n\t\treturn notEqual(x, y, vec<C, T, Q>(Epsilon));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, T, Q> const& Epsilon)\n\t{\n\t\tvec<C, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < C; ++i)\n\t\t\tResult[i] = any(notEqual(a[i], b[i], Epsilon[i]));\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, int MaxULPs)\n\t{\n\t\treturn equal(a, b, vec<C, int, Q>(MaxULPs));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, int, Q> const& MaxULPs)\n\t{\n\t\tvec<C, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < C; ++i)\n\t\t\tResult[i] = all(equal(a[i], b[i], MaxULPs[i]));\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, int MaxULPs)\n\t{\n\t\treturn notEqual(x, y, vec<C, int, Q>(MaxULPs));\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, int, Q> const& MaxULPs)\n\t{\n\t\tvec<C, bool, Q> Result(true);\n\t\tfor(length_t i = 0; i < C; ++i)\n\t\t\tResult[i] = any(notEqual(a[i], b[i], MaxULPs[i]));\n\t\treturn Result;\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/matrix_transform.hpp",
    "content": "/// @ref ext_matrix_transform\n/// @file glm/ext/matrix_transform.hpp\n///\n/// @defgroup ext_matrix_transform GLM_EXT_matrix_transform\n/// @ingroup ext\n///\n/// Defines functions that generate common transformation matrices.\n///\n/// The matrices generated by this extension use standard OpenGL fixed-function\n/// conventions. For example, the lookAt function generates a transform from world\n/// space into the specific eye space that the projective matrix functions\n/// (perspective, ortho, etc) are designed to expect. The OpenGL compatibility\n/// specifications defines the particular layout of this eye space.\n///\n/// Include <glm/ext/matrix_transform.hpp> to use the features of this extension.\n///\n/// @see ext_matrix_projection\n/// @see ext_matrix_clip_space\n\n#pragma once\n\n// Dependencies\n#include \"../gtc/constants.hpp\"\n#include \"../geometric.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../matrix.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_matrix_transform extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_matrix_transform\n\t/// @{\n\n\t/// Builds an identity matrix.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType identity();\n\n\t/// Builds a translation 4 * 4 matrix created from a vector of 3 components.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param v Coordinates of a translation vector.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @code\n\t/// #include <glm/glm.hpp>\n\t/// #include <glm/gtc/matrix_transform.hpp>\n\t/// ...\n\t/// glm::mat4 m = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));\n\t/// // m[0][0] == 1.0f, m[0][1] == 0.0f, m[0][2] == 0.0f, m[0][3] == 0.0f\n\t/// // m[1][0] == 0.0f, m[1][1] == 1.0f, m[1][2] == 0.0f, m[1][3] == 0.0f\n\t/// // m[2][0] == 0.0f, m[2][1] == 0.0f, m[2][2] == 1.0f, m[2][3] == 0.0f\n\t/// // m[3][0] == 1.0f, m[3][1] == 1.0f, m[3][2] == 1.0f, m[3][3] == 1.0f\n\t/// @endcode\n\t///\n\t/// @see - translate(mat<4, 4, T, Q> const& m, T x, T y, T z)\n\t/// @see - translate(vec<3, T, Q> const& v)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTranslate.xml\">glTranslate man page</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> translate(\n\t\tmat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);\n\n\t/// Builds a rotation 4 * 4 matrix created from an axis vector and an angle.\n\t///\n\t/// @param m Input matrix multiplied by this rotation matrix.\n\t/// @param angle Rotation angle expressed in radians.\n\t/// @param axis Rotation axis, recommended to be normalized.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)\n\t/// @see - rotate(T angle, vec<3, T, Q> const& v)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glRotate.xml\">glRotate man page</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> rotate(\n\t\tmat<4, 4, T, Q> const& m, T angle, vec<3, T, Q> const& axis);\n\n\t/// Builds a scale 4 * 4 matrix created from 3 scalars.\n\t///\n\t/// @param m Input matrix multiplied by this scale matrix.\n\t/// @param v Ratio of scaling for each axis.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - scale(mat<4, 4, T, Q> const& m, T x, T y, T z)\n\t/// @see - scale(vec<3, T, Q> const& v)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glScale.xml\">glScale man page</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> scale(\n\t\tmat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);\n\n\t/// Build a right handed look at view matrix.\n\t///\n\t/// @param eye Position of the camera\n\t/// @param center Position where the camera is looking at\n\t/// @param up Normalized up vector, how the camera is oriented. Typically (0, 0, 1)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> lookAtRH(\n\t\tvec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);\n\n\t/// Build a left handed look at view matrix.\n\t///\n\t/// @param eye Position of the camera\n\t/// @param center Position where the camera is looking at\n\t/// @param up Normalized up vector, how the camera is oriented. Typically (0, 0, 1)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> lookAtLH(\n\t\tvec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);\n\n\t/// Build a look at view matrix based on the default handedness.\n\t///\n\t/// @param eye Position of the camera\n\t/// @param center Position where the camera is looking at\n\t/// @param up Normalized up vector, how the camera is oriented. Typically (0, 0, 1)\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)\n\t/// @see <a href=\"https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluLookAt.xml\">gluLookAt man page</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> lookAt(\n\t\tvec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_transform.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/matrix_transform.inl",
    "content": "namespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType identity()\n\t{\n\t\treturn detail::init_gentype<genType, detail::genTypeTrait<genType>::GENTYPE>::identity();\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> translate(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v)\n\t{\n\t\tmat<4, 4, T, Q> Result(m);\n\t\tResult[3] = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotate(mat<4, 4, T, Q> const& m, T angle, vec<3, T, Q> const& v)\n\t{\n\t\tT const a = angle;\n\t\tT const c = cos(a);\n\t\tT const s = sin(a);\n\n\t\tvec<3, T, Q> axis(normalize(v));\n\t\tvec<3, T, Q> temp((T(1) - c) * axis);\n\n\t\tmat<4, 4, T, Q> Rotate;\n\t\tRotate[0][0] = c + temp[0] * axis[0];\n\t\tRotate[0][1] = temp[0] * axis[1] + s * axis[2];\n\t\tRotate[0][2] = temp[0] * axis[2] - s * axis[1];\n\n\t\tRotate[1][0] = temp[1] * axis[0] - s * axis[2];\n\t\tRotate[1][1] = c + temp[1] * axis[1];\n\t\tRotate[1][2] = temp[1] * axis[2] + s * axis[0];\n\n\t\tRotate[2][0] = temp[2] * axis[0] + s * axis[1];\n\t\tRotate[2][1] = temp[2] * axis[1] - s * axis[0];\n\t\tRotate[2][2] = c + temp[2] * axis[2];\n\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];\n\t\tResult[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];\n\t\tResult[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];\n\t\tResult[3] = m[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotate_slow(mat<4, 4, T, Q> const& m, T angle, vec<3, T, Q> const& v)\n\t{\n\t\tT const a = angle;\n\t\tT const c = cos(a);\n\t\tT const s = sin(a);\n\t\tmat<4, 4, T, Q> Result;\n\n\t\tvec<3, T, Q> axis = normalize(v);\n\n\t\tResult[0][0] = c + (static_cast<T>(1) - c)      * axis.x     * axis.x;\n\t\tResult[0][1] = (static_cast<T>(1) - c) * axis.x * axis.y + s * axis.z;\n\t\tResult[0][2] = (static_cast<T>(1) - c) * axis.x * axis.z - s * axis.y;\n\t\tResult[0][3] = static_cast<T>(0);\n\n\t\tResult[1][0] = (static_cast<T>(1) - c) * axis.y * axis.x - s * axis.z;\n\t\tResult[1][1] = c + (static_cast<T>(1) - c) * axis.y * axis.y;\n\t\tResult[1][2] = (static_cast<T>(1) - c) * axis.y * axis.z + s * axis.x;\n\t\tResult[1][3] = static_cast<T>(0);\n\n\t\tResult[2][0] = (static_cast<T>(1) - c) * axis.z * axis.x + s * axis.y;\n\t\tResult[2][1] = (static_cast<T>(1) - c) * axis.z * axis.y - s * axis.x;\n\t\tResult[2][2] = c + (static_cast<T>(1) - c) * axis.z * axis.z;\n\t\tResult[2][3] = static_cast<T>(0);\n\n\t\tResult[3] = vec<4, T, Q>(0, 0, 0, 1);\n\t\treturn m * Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> scale(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v)\n\t{\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0] = m[0] * v[0];\n\t\tResult[1] = m[1] * v[1];\n\t\tResult[2] = m[2] * v[2];\n\t\tResult[3] = m[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> scale_slow(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v)\n\t{\n\t\tmat<4, 4, T, Q> Result(T(1));\n\t\tResult[0][0] = v.x;\n\t\tResult[1][1] = v.y;\n\t\tResult[2][2] = v.z;\n\t\treturn m * Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> lookAtRH(vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up)\n\t{\n\t\tvec<3, T, Q> const f(normalize(center - eye));\n\t\tvec<3, T, Q> const s(normalize(cross(f, up)));\n\t\tvec<3, T, Q> const u(cross(s, f));\n\n\t\tmat<4, 4, T, Q> Result(1);\n\t\tResult[0][0] = s.x;\n\t\tResult[1][0] = s.y;\n\t\tResult[2][0] = s.z;\n\t\tResult[0][1] = u.x;\n\t\tResult[1][1] = u.y;\n\t\tResult[2][1] = u.z;\n\t\tResult[0][2] =-f.x;\n\t\tResult[1][2] =-f.y;\n\t\tResult[2][2] =-f.z;\n\t\tResult[3][0] =-dot(s, eye);\n\t\tResult[3][1] =-dot(u, eye);\n\t\tResult[3][2] = dot(f, eye);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> lookAtLH(vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up)\n\t{\n\t\tvec<3, T, Q> const f(normalize(center - eye));\n\t\tvec<3, T, Q> const s(normalize(cross(up, f)));\n\t\tvec<3, T, Q> const u(cross(f, s));\n\n\t\tmat<4, 4, T, Q> Result(1);\n\t\tResult[0][0] = s.x;\n\t\tResult[1][0] = s.y;\n\t\tResult[2][0] = s.z;\n\t\tResult[0][1] = u.x;\n\t\tResult[1][1] = u.y;\n\t\tResult[2][1] = u.z;\n\t\tResult[0][2] = f.x;\n\t\tResult[1][2] = f.y;\n\t\tResult[2][2] = f.z;\n\t\tResult[3][0] = -dot(s, eye);\n\t\tResult[3][1] = -dot(u, eye);\n\t\tResult[3][2] = -dot(f, eye);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> lookAt(vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up)\n\t{\n\t\tGLM_IF_CONSTEXPR(GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT)\n\t\t\treturn lookAtLH(eye, center, up);\n\t\telse\n\t\t\treturn lookAtRH(eye, center, up);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_common.hpp",
    "content": "/// @ref ext_quaternion_common\n/// @file glm/ext/quaternion_common.hpp\n///\n/// @defgroup ext_quaternion_common GLM_EXT_quaternion_common\n/// @ingroup ext\n///\n/// Provides common functions for quaternion types\n///\n/// Include <glm/ext/quaternion_common.hpp> to use the features of this extension.\n///\n/// @see ext_scalar_common\n/// @see ext_vector_common\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n/// @see ext_quaternion_exponential\n/// @see ext_quaternion_geometric\n/// @see ext_quaternion_relational\n/// @see ext_quaternion_trigonometric\n/// @see ext_quaternion_transform\n\n#pragma once\n\n// Dependency:\n#include \"../ext/scalar_constants.hpp\"\n#include \"../ext/quaternion_geometric.hpp\"\n#include \"../common.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../exponential.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_common extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_common\n\t/// @{\n\n\t/// Spherical linear interpolation of two quaternions.\n\t/// The interpolation is oriented and the rotation is performed at constant speed.\n\t/// For short path spherical linear interpolation, use the slerp function.\n\t///\n\t/// @param x A quaternion\n\t/// @param y A quaternion\n\t/// @param a Interpolation factor. The interpolation is defined beyond the range [0, 1].\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\t///\n\t/// @see - slerp(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> mix(qua<T, Q> const& x, qua<T, Q> const& y, T a);\n\n\t/// Linear interpolation of two quaternions.\n\t/// The interpolation is oriented.\n\t///\n\t/// @param x A quaternion\n\t/// @param y A quaternion\n\t/// @param a Interpolation factor. The interpolation is defined in the range [0, 1].\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> lerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);\n\n\t/// Spherical linear interpolation of two quaternions.\n\t/// The interpolation always take the short path and the rotation is performed at constant speed.\n\t///\n\t/// @param x A quaternion\n\t/// @param y A quaternion\n\t/// @param a Interpolation factor. The interpolation is defined beyond the range [0, 1].\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);\n\n\t/// Returns the q conjugate.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> conjugate(qua<T, Q> const& q);\n\n\t/// Returns the q inverse.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> inverse(qua<T, Q> const& q);\n\n\t/// Returns true if x holds a NaN (not a number)\n\t/// representation in the underlying implementation's set of\n\t/// floating point representations. Returns false otherwise,\n\t/// including for implementations with no NaN\n\t/// representations.\n\t///\n\t/// /!\\ When using compiler fast math, this function may fail.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> isnan(qua<T, Q> const& x);\n\n\t/// Returns true if x holds a positive infinity or negative\n\t/// infinity representation in the underlying implementation's\n\t/// set of floating point representations. Returns false\n\t/// otherwise, including for implementations with no infinity\n\t/// representations.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> isinf(qua<T, Q> const& x);\n\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_common.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_common.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> mix(qua<T, Q> const& x, qua<T, Q> const& y, T a)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'mix' only accept floating-point inputs\");\n\n\t\tT const cosTheta = dot(x, y);\n\n\t\t// Perform a linear interpolation when cosTheta is close to 1 to avoid side effect of sin(angle) becoming a zero denominator\n\t\tif(cosTheta > static_cast<T>(1) - epsilon<T>())\n\t\t{\n\t\t\t// Linear interpolation\n\t\t\treturn qua<T, Q>(\n\t\t\t\tmix(x.w, y.w, a),\n\t\t\t\tmix(x.x, y.x, a),\n\t\t\t\tmix(x.y, y.y, a),\n\t\t\t\tmix(x.z, y.z, a));\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Essential Mathematics, page 467\n\t\t\tT angle = acos(cosTheta);\n\t\t\treturn (sin((static_cast<T>(1) - a) * angle) * x + sin(a * angle) * y) / sin(angle);\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> lerp(qua<T, Q> const& x, qua<T, Q> const& y, T a)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'lerp' only accept floating-point inputs\");\n\n\t\t// Lerp is only defined in [0, 1]\n\t\tassert(a >= static_cast<T>(0));\n\t\tassert(a <= static_cast<T>(1));\n\n\t\treturn x * (static_cast<T>(1) - a) + (y * a);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'slerp' only accept floating-point inputs\");\n\n\t\tqua<T, Q> z = y;\n\n\t\tT cosTheta = dot(x, y);\n\n\t\t// If cosTheta < 0, the interpolation will take the long way around the sphere.\n\t\t// To fix this, one quat must be negated.\n\t\tif(cosTheta < static_cast<T>(0))\n\t\t{\n\t\t\tz = -y;\n\t\t\tcosTheta = -cosTheta;\n\t\t}\n\n\t\t// Perform a linear interpolation when cosTheta is close to 1 to avoid side effect of sin(angle) becoming a zero denominator\n\t\tif(cosTheta > static_cast<T>(1) - epsilon<T>())\n\t\t{\n\t\t\t// Linear interpolation\n\t\t\treturn qua<T, Q>(\n\t\t\t\tmix(x.w, z.w, a),\n\t\t\t\tmix(x.x, z.x, a),\n\t\t\t\tmix(x.y, z.y, a),\n\t\t\t\tmix(x.z, z.z, a));\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Essential Mathematics, page 467\n\t\t\tT angle = acos(cosTheta);\n\t\t\treturn (sin((static_cast<T>(1) - a) * angle) * x + sin(a * angle) * z) / sin(angle);\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> conjugate(qua<T, Q> const& q)\n\t{\n\t\treturn qua<T, Q>(q.w, -q.x, -q.y, -q.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> inverse(qua<T, Q> const& q)\n\t{\n\t\treturn conjugate(q) / dot(q, q);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> isnan(qua<T, Q> const& q)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isnan' only accept floating-point inputs\");\n\n\t\treturn vec<4, bool, Q>(isnan(q.x), isnan(q.y), isnan(q.z), isnan(q.w));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> isinf(qua<T, Q> const& q)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isinf' only accept floating-point inputs\");\n\n\t\treturn vec<4, bool, Q>(isinf(q.x), isinf(q.y), isinf(q.z), isinf(q.w));\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"quaternion_common_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_common_simd.inl",
    "content": "#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<qualifier Q>\n\tstruct compute_dot<qua<float, Q>, float, true>\n\t{\n\t\tstatic GLM_FUNC_QUALIFIER float call(qua<float, Q> const& x, qua<float, Q> const& y)\n\t\t{\n\t\t\treturn _mm_cvtss_f32(glm_vec1_dot(x.data, y.data));\n\t\t}\n\t};\n}//namespace detail\n}//namespace glm\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_double.hpp",
    "content": "/// @ref ext_quaternion_double\n/// @file glm/ext/quaternion_double.hpp\n///\n/// @defgroup ext_quaternion_double GLM_EXT_quaternion_double\n/// @ingroup ext\n///\n/// Exposes double-precision floating point quaternion type.\n///\n/// Include <glm/ext/quaternion_double.hpp> to use the features of this extension.\n///\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double_precision\n/// @see ext_quaternion_common\n/// @see ext_quaternion_exponential\n/// @see ext_quaternion_geometric\n/// @see ext_quaternion_relational\n/// @see ext_quaternion_transform\n/// @see ext_quaternion_trigonometric\n\n#pragma once\n\n// Dependency:\n#include \"../detail/type_quat.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_double extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_double\n\t/// @{\n\n\t/// Quaternion of double-precision floating-point numbers.\n\ttypedef qua<double, defaultp>\t\tdquat;\n\n\t/// @}\n} //namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_double_precision.hpp",
    "content": "/// @ref ext_quaternion_double_precision\n/// @file glm/ext/quaternion_double_precision.hpp\n///\n/// @defgroup ext_quaternion_double_precision GLM_EXT_quaternion_double_precision\n/// @ingroup ext\n///\n/// Exposes double-precision floating point quaternion type with various precision in term of ULPs.\n///\n/// Include <glm/ext/quaternion_double_precision.hpp> to use the features of this extension.\n\n#pragma once\n\n// Dependency:\n#include \"../detail/type_quat.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_double_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_double_precision\n\t/// @{\n\n\t/// Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see ext_quaternion_double_precision\n\ttypedef qua<double, lowp>\t\tlowp_dquat;\n\n\t/// Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see ext_quaternion_double_precision\n\ttypedef qua<double, mediump>\tmediump_dquat;\n\n\t/// Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.\n\t///\n\t/// @see ext_quaternion_double_precision\n\ttypedef qua<double, highp>\t\thighp_dquat;\n\n\t/// @}\n} //namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_exponential.hpp",
    "content": "/// @ref ext_quaternion_exponential\n/// @file glm/ext/quaternion_exponential.hpp\n///\n/// @defgroup ext_quaternion_exponential GLM_EXT_quaternion_exponential\n/// @ingroup ext\n///\n/// Provides exponential functions for quaternion types\n///\n/// Include <glm/ext/quaternion_exponential.hpp> to use the features of this extension.\n///\n/// @see core_exponential\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n\n#pragma once\n\n// Dependency:\n#include \"../common.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../geometric.hpp\"\n#include \"../ext/scalar_constants.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_exponential extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_transform\n\t/// @{\n\n\t/// Returns a exponential of a quaternion.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> exp(qua<T, Q> const& q);\n\n\t/// Returns a logarithm of a quaternion\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> log(qua<T, Q> const& q);\n\n\t/// Returns a quaternion raised to a power.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> pow(qua<T, Q> const& q, T y);\n\n\t/// Returns the square root of a quaternion\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> sqrt(qua<T, Q> const& q);\n\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_exponential.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_exponential.inl",
    "content": "#include \"scalar_constants.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> exp(qua<T, Q> const& q)\n\t{\n\t\tvec<3, T, Q> u(q.x, q.y, q.z);\n\t\tT const Angle = glm::length(u);\n\t\tif (Angle < epsilon<T>())\n\t\t\treturn qua<T, Q>();\n\n\t\tvec<3, T, Q> const v(u / Angle);\n\t\treturn qua<T, Q>(cos(Angle), sin(Angle) * v);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> log(qua<T, Q> const& q)\n\t{\n\t\tvec<3, T, Q> u(q.x, q.y, q.z);\n\t\tT Vec3Len = length(u);\n\n\t\tif (Vec3Len < epsilon<T>())\n\t\t{\n\t\t\tif(q.w > static_cast<T>(0))\n\t\t\t\treturn qua<T, Q>(log(q.w), static_cast<T>(0), static_cast<T>(0), static_cast<T>(0));\n\t\t\telse if(q.w < static_cast<T>(0))\n\t\t\t\treturn qua<T, Q>(log(-q.w), pi<T>(), static_cast<T>(0), static_cast<T>(0));\n\t\t\telse\n\t\t\t\treturn qua<T, Q>(std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity(), std::numeric_limits<T>::infinity());\n\t\t}\n\t\telse\n\t\t{\n\t\t\tT t = atan(Vec3Len, T(q.w)) / Vec3Len;\n\t\t\tT QuatLen2 = Vec3Len * Vec3Len + q.w * q.w;\n\t\t\treturn qua<T, Q>(static_cast<T>(0.5) * log(QuatLen2), t * q.x, t * q.y, t * q.z);\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> pow(qua<T, Q> const& x, T y)\n\t{\n\t\t//Raising to the power of 0 should yield 1\n\t\t//Needed to prevent a division by 0 error later on\n\t\tif(y > -epsilon<T>() && y < epsilon<T>())\n\t\t\treturn qua<T, Q>(1,0,0,0);\n\n\t\t//To deal with non-unit quaternions\n\t\tT magnitude = sqrt(x.x * x.x + x.y * x.y + x.z * x.z + x.w *x.w);\n\n\t\tT Angle;\n\t\tif(abs(x.w / magnitude) > cos_one_over_two<T>())\n\t\t{\n\t\t\t//Scalar component is close to 1; using it to recover angle would lose precision\n\t\t\t//Instead, we use the non-scalar components since sin() is accurate around 0\n\n\t\t\t//Prevent a division by 0 error later on\n\t\t\tT VectorMagnitude = x.x * x.x + x.y * x.y + x.z * x.z;\n\t\t\tif (glm::abs(VectorMagnitude - static_cast<T>(0)) < glm::epsilon<T>()) {\n\t\t\t\t//Equivalent to raising a real number to a power\n\t\t\t\treturn qua<T, Q>(pow(x.w, y), 0, 0, 0);\n\t\t\t}\n\n\t\t\tAngle = asin(sqrt(VectorMagnitude) / magnitude);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t//Scalar component is small, shouldn't cause loss of precision\n\t\t\tAngle = acos(x.w / magnitude);\n\t\t}\n\n\t\tT NewAngle = Angle * y;\n\t\tT Div = sin(NewAngle) / sin(Angle);\n\t\tT Mag = pow(magnitude, y - static_cast<T>(1));\n\t\treturn qua<T, Q>(cos(NewAngle) * magnitude * Mag, x.x * Div * Mag, x.y * Div * Mag, x.z * Div * Mag);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> sqrt(qua<T, Q> const& x)\n\t{\n\t\treturn pow(x, static_cast<T>(0.5));\n\t}\n}//namespace glm\n\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_float.hpp",
    "content": "/// @ref ext_quaternion_float\n/// @file glm/ext/quaternion_float.hpp\n///\n/// @defgroup ext_quaternion_float GLM_EXT_quaternion_float\n/// @ingroup ext\n///\n/// Exposes single-precision floating point quaternion type.\n///\n/// Include <glm/ext/quaternion_float.hpp> to use the features of this extension.\n///\n/// @see ext_quaternion_double\n/// @see ext_quaternion_float_precision\n/// @see ext_quaternion_common\n/// @see ext_quaternion_exponential\n/// @see ext_quaternion_geometric\n/// @see ext_quaternion_relational\n/// @see ext_quaternion_transform\n/// @see ext_quaternion_trigonometric\n\n#pragma once\n\n// Dependency:\n#include \"../detail/type_quat.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_float extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_float\n\t/// @{\n\n\t/// Quaternion of single-precision floating-point numbers.\n\ttypedef qua<float, defaultp>\t\tquat;\n\n\t/// @}\n} //namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_float_precision.hpp",
    "content": "/// @ref ext_quaternion_float_precision\n/// @file glm/ext/quaternion_float_precision.hpp\n///\n/// @defgroup ext_quaternion_float_precision GLM_EXT_quaternion_float_precision\n/// @ingroup ext\n///\n/// Exposes single-precision floating point quaternion type with various precision in term of ULPs.\n///\n/// Include <glm/ext/quaternion_float_precision.hpp> to use the features of this extension.\n\n#pragma once\n\n// Dependency:\n#include \"../detail/type_quat.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_float_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_float_precision\n\t/// @{\n\n\t/// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef qua<float, lowp>\t\tlowp_quat;\n\n\t/// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef qua<float, mediump>\t\tmediump_quat;\n\n\t/// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef qua<float, highp>\t\thighp_quat;\n\n\t/// @}\n} //namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_geometric.hpp",
    "content": "/// @ref ext_quaternion_geometric\n/// @file glm/ext/quaternion_geometric.hpp\n///\n/// @defgroup ext_quaternion_geometric GLM_EXT_quaternion_geometric\n/// @ingroup ext\n///\n/// Provides geometric functions for quaternion types\n///\n/// Include <glm/ext/quaternion_geometric.hpp> to use the features of this extension.\n///\n/// @see core_geometric\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n\n#pragma once\n\n// Dependency:\n#include \"../geometric.hpp\"\n#include \"../exponential.hpp\"\n#include \"../ext/vector_relational.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_geometric extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_geometric\n\t/// @{\n\n\t/// Returns the norm of a quaternions\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_geometric\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T length(qua<T, Q> const& q);\n\n\t/// Returns the normalized quaternion.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_geometric\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> normalize(qua<T, Q> const& q);\n\n\t/// Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_geometric\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T dot(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Compute a cross product.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_geometric\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> cross(qua<T, Q> const& q1, qua<T, Q> const& q2);\n\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_geometric.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_geometric.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T dot(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'dot' accepts only floating-point inputs\");\n\t\treturn detail::compute_dot<qua<T, Q>, T, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T length(qua<T, Q> const& q)\n\t{\n\t\treturn glm::sqrt(dot(q, q));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> normalize(qua<T, Q> const& q)\n\t{\n\t\tT len = length(q);\n\t\tif(len <= static_cast<T>(0)) // Problem\n\t\t\treturn qua<T, Q>(static_cast<T>(1), static_cast<T>(0), static_cast<T>(0), static_cast<T>(0));\n\t\tT oneOverLen = static_cast<T>(1) / len;\n\t\treturn qua<T, Q>(q.w * oneOverLen, q.x * oneOverLen, q.y * oneOverLen, q.z * oneOverLen);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> cross(qua<T, Q> const& q1, qua<T, Q> const& q2)\n\t{\n\t\treturn qua<T, Q>(\n\t\t\tq1.w * q2.w - q1.x * q2.x - q1.y * q2.y - q1.z * q2.z,\n\t\t\tq1.w * q2.x + q1.x * q2.w + q1.y * q2.z - q1.z * q2.y,\n\t\t\tq1.w * q2.y + q1.y * q2.w + q1.z * q2.x - q1.x * q2.z,\n\t\t\tq1.w * q2.z + q1.z * q2.w + q1.x * q2.y - q1.y * q2.x);\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_relational.hpp",
    "content": "/// @ref ext_quaternion_relational\n/// @file glm/ext/quaternion_relational.hpp\n///\n/// @defgroup ext_quaternion_relational GLM_EXT_quaternion_relational\n/// @ingroup ext\n///\n/// Exposes comparison functions for quaternion types that take a user defined epsilon values.\n///\n/// Include <glm/ext/quaternion_relational.hpp> to use the features of this extension.\n///\n/// @see core_vector_relational\n/// @see ext_vector_relational\n/// @see ext_matrix_relational\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n\n#pragma once\n\n// Dependency:\n#include \"../vector_relational.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_relational extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_relational\n\t/// @{\n\n\t/// Returns the component-wise comparison of result x == y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon);\n\n\t/// Returns the component-wise comparison of result x != y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon);\n\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_relational.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_relational.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] == y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon)\n\t{\n\t\tvec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);\n\t\treturn lessThan(abs(v), vec<4, T, Q>(epsilon));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] != y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon)\n\t{\n\t\tvec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);\n\t\treturn greaterThanEqual(abs(v), vec<4, T, Q>(epsilon));\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_transform.hpp",
    "content": "/// @ref ext_quaternion_transform\n/// @file glm/ext/quaternion_transform.hpp\n///\n/// @defgroup ext_quaternion_transform GLM_EXT_quaternion_transform\n/// @ingroup ext\n///\n/// Provides transformation functions for quaternion types\n///\n/// Include <glm/ext/quaternion_transform.hpp> to use the features of this extension.\n///\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n/// @see ext_quaternion_exponential\n/// @see ext_quaternion_geometric\n/// @see ext_quaternion_relational\n/// @see ext_quaternion_trigonometric\n\n#pragma once\n\n// Dependency:\n#include \"../common.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../geometric.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_transform extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_transform\n\t/// @{\n\n\t/// Rotates a quaternion from a vector of 3 components axis and an angle.\n\t///\n\t/// @param q Source orientation\n\t/// @param angle Angle expressed in radians.\n\t/// @param axis Axis of the rotation\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> rotate(qua<T, Q> const& q, T const& angle, vec<3, T, Q> const& axis);\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_transform.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_transform.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> rotate(qua<T, Q> const& q, T const& angle, vec<3, T, Q> const& v)\n\t{\n\t\tvec<3, T, Q> Tmp = v;\n\n\t\t// Axis of rotation must be normalised\n\t\tT len = glm::length(Tmp);\n\t\tif(abs(len - static_cast<T>(1)) > static_cast<T>(0.001))\n\t\t{\n\t\t\tT oneOverLen = static_cast<T>(1) / len;\n\t\t\tTmp.x *= oneOverLen;\n\t\t\tTmp.y *= oneOverLen;\n\t\t\tTmp.z *= oneOverLen;\n\t\t}\n\n\t\tT const AngleRad(angle);\n\t\tT const Sin = sin(AngleRad * static_cast<T>(0.5));\n\n\t\treturn q * qua<T, Q>(cos(AngleRad * static_cast<T>(0.5)), Tmp.x * Sin, Tmp.y * Sin, Tmp.z * Sin);\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_trigonometric.hpp",
    "content": "/// @ref ext_quaternion_trigonometric\n/// @file glm/ext/quaternion_trigonometric.hpp\n///\n/// @defgroup ext_quaternion_trigonometric GLM_EXT_quaternion_trigonometric\n/// @ingroup ext\n///\n/// Provides trigonometric functions for quaternion types\n///\n/// Include <glm/ext/quaternion_trigonometric.hpp> to use the features of this extension.\n///\n/// @see ext_quaternion_float\n/// @see ext_quaternion_double\n/// @see ext_quaternion_exponential\n/// @see ext_quaternion_geometric\n/// @see ext_quaternion_relational\n/// @see ext_quaternion_transform\n\n#pragma once\n\n// Dependency:\n#include \"../trigonometric.hpp\"\n#include \"../exponential.hpp\"\n#include \"scalar_constants.hpp\"\n#include \"vector_relational.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_quaternion_trigonometric extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_quaternion_trigonometric\n\t/// @{\n\n\t/// Returns the quaternion rotation angle.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T angle(qua<T, Q> const& x);\n\n\t/// Returns the q rotation axis.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> axis(qua<T, Q> const& x);\n\n\t/// Build a quaternion from an angle and a normalized axis.\n\t///\n\t/// @param angle Angle expressed in radians.\n\t/// @param axis Axis of the quaternion, must be normalized.\n\t///\n\t/// @tparam T A floating-point scalar type\n\t/// @tparam Q A value from qualifier enum\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> angleAxis(T const& angle, vec<3, T, Q> const& axis);\n\n\t/// @}\n} //namespace glm\n\n#include \"quaternion_trigonometric.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/quaternion_trigonometric.inl",
    "content": "#include \"scalar_constants.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T angle(qua<T, Q> const& x)\n\t{\n\t\tif (abs(x.w) > cos_one_over_two<T>())\n\t\t{\n\t\t\treturn asin(sqrt(x.x * x.x + x.y * x.y + x.z * x.z)) * static_cast<T>(2);\n\t\t}\n\n\t\treturn acos(x.w) * static_cast<T>(2);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> axis(qua<T, Q> const& x)\n\t{\n\t\tT const tmp1 = static_cast<T>(1) - x.w * x.w;\n\t\tif(tmp1 <= static_cast<T>(0))\n\t\t\treturn vec<3, T, Q>(0, 0, 1);\n\t\tT const tmp2 = static_cast<T>(1) / sqrt(tmp1);\n\t\treturn vec<3, T, Q>(x.x * tmp2, x.y * tmp2, x.z * tmp2);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> angleAxis(T const& angle, vec<3, T, Q> const& v)\n\t{\n\t\tT const a(angle);\n\t\tT const s = glm::sin(a * static_cast<T>(0.5));\n\n\t\treturn qua<T, Q>(glm::cos(a * static_cast<T>(0.5)), v * s);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_common.hpp",
    "content": "/// @ref ext_scalar_common\n/// @file glm/ext/scalar_common.hpp\n///\n/// @defgroup ext_scalar_common GLM_EXT_scalar_common\n/// @ingroup ext\n///\n/// Exposes min and max functions for 3 to 4 scalar parameters.\n///\n/// Include <glm/ext/scalar_common.hpp> to use the features of this extension.\n///\n/// @see core_func_common\n/// @see ext_vector_common\n\n#pragma once\n\n// Dependency:\n#include \"../common.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_common extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_scalar_common\n\t/// @{\n\n\t/// Returns the minimum component-wise values of 3 inputs\n\t///\n\t/// @tparam T A floating-point scalar type.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T min(T a, T b, T c);\n\n\t/// Returns the minimum component-wise values of 4 inputs\n\t///\n\t/// @tparam T A floating-point scalar type.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T min(T a, T b, T c, T d);\n\n\t/// Returns the maximum component-wise values of 3 inputs\n\t///\n\t/// @tparam T A floating-point scalar type.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T max(T a, T b, T c);\n\n\t/// Returns the maximum component-wise values of 4 inputs\n\t///\n\t/// @tparam T A floating-point scalar type.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T max(T a, T b, T c, T d);\n\n\t/// Returns the minimum component-wise values of 2 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmin(T a, T b);\n\n\t/// Returns the minimum component-wise values of 3 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmin(T a, T b, T c);\n\n\t/// Returns the minimum component-wise values of 4 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmin(T a, T b, T c, T d);\n\n\t/// Returns the maximum component-wise values of 2 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmax(T a, T b);\n\n\t/// Returns the maximum component-wise values of 3 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmax(T a, T b, T C);\n\n\t/// Returns the maximum component-wise values of 4 inputs. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam T A floating-point scalar type.\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fmax(T a, T b, T C, T D);\n\n\t/// @}\n}//namespace glm\n\n#include \"scalar_common.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/scalar_common.inl",
    "content": "namespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T min(T a, T b, T c)\n\t{\n\t\treturn glm::min(glm::min(a, b), c);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T min(T a, T b, T c, T d)\n\t{\n\t\treturn glm::min(glm::min(a, b), glm::min(c, d));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T max(T a, T b, T c)\n\t{\n\t\treturn glm::max(glm::max(a, b), c);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T max(T a, T b, T c, T d)\n\t{\n\t\treturn glm::max(glm::max(a, b), glm::max(c, d));\n\t}\n\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::fmin;\n#\telse\n\t\ttemplate<typename T>\n\t\tGLM_FUNC_QUALIFIER T fmin(T a, T b)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point input\");\n\n\t\t\tif (isnan(a))\n\t\t\t\treturn b;\n\t\t\treturn min(a, b);\n\t\t}\n#\tendif\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fmin(T a, T b, T c)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point input\");\n\n\t\tif (isnan(a))\n\t\t\treturn fmin(b, c);\n\t\tif (isnan(b))\n\t\t\treturn fmin(a, c);\n\t\tif (isnan(c))\n\t\t\treturn min(a, b);\n\t\treturn min(a, b, c);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fmin(T a, T b, T c, T d)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point input\");\n\n\t\tif (isnan(a))\n\t\t\treturn fmin(b, c, d);\n\t\tif (isnan(b))\n\t\t\treturn min(a, fmin(c, d));\n\t\tif (isnan(c))\n\t\t\treturn fmin(min(a, b), d);\n\t\tif (isnan(d))\n\t\t\treturn min(a, b, c);\n\t\treturn min(a, b, c, d);\n\t}\n\n\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::fmax;\n#\telse\n\t\ttemplate<typename T>\n\t\tGLM_FUNC_QUALIFIER T fmax(T a, T b)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point input\");\n\n\t\t\tif (isnan(a))\n\t\t\t\treturn b;\n\t\t\treturn max(a, b);\n\t\t}\n#\tendif\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fmax(T a, T b, T c)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point input\");\n\n\t\tif (isnan(a))\n\t\t\treturn fmax(b, c);\n\t\tif (isnan(b))\n\t\t\treturn fmax(a, c);\n\t\tif (isnan(c))\n\t\t\treturn max(a, b);\n\t\treturn max(a, b, c);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fmax(T a, T b, T c, T d)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point input\");\n\n\t\tif (isnan(a))\n\t\t\treturn fmax(b, c, d);\n\t\tif (isnan(b))\n\t\t\treturn max(a, fmax(c, d));\n\t\tif (isnan(c))\n\t\t\treturn fmax(max(a, b), d);\n\t\tif (isnan(d))\n\t\t\treturn max(a, b, c);\n\t\treturn max(a, b, c, d);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_constants.hpp",
    "content": "/// @ref ext_scalar_constants\n/// @file glm/ext/scalar_constants.hpp\n///\n/// @defgroup ext_scalar_constants GLM_EXT_scalar_constants\n/// @ingroup ext\n///\n/// Provides a list of constants and precomputed useful values.\n///\n/// Include <glm/ext/scalar_constants.hpp> to use the features of this extension.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_constants extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_scalar_constants\n\t/// @{\n\n\t/// Return the epsilon constant for floating point types.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType epsilon();\n\n\t/// Return the pi constant for floating point types.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType pi();\n\n\t/// Return the value of cos(1 / 2) for floating point types.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two();\n\n\t/// @}\n} //namespace glm\n\n#include \"scalar_constants.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/scalar_constants.inl",
    "content": "#include <limits>\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType epsilon()\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'epsilon' only accepts floating-point inputs\");\n\t\treturn std::numeric_limits<genType>::epsilon();\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType pi()\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'pi' only accepts floating-point inputs\");\n\t\treturn static_cast<genType>(3.14159265358979323846264338327950288);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType cos_one_over_two()\n\t{\n\t\treturn genType(0.877582561890372716130286068203503191);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_int_sized.hpp",
    "content": "/// @ref ext_scalar_int_sized\n/// @file glm/ext/scalar_int_sized.hpp\n///\n/// @defgroup ext_scalar_int_sized GLM_EXT_scalar_int_sized\n/// @ingroup ext\n///\n/// Exposes sized signed integer scalar types.\n///\n/// Include <glm/ext/scalar_int_sized.hpp> to use the features of this extension.\n///\n/// @see ext_scalar_uint_sized\n\n#pragma once\n\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_int_sized extension included\")\n#endif\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_HAS_EXTENDED_INTEGER_TYPE\n\t\ttypedef std::int8_t\t\t\tint8;\n\t\ttypedef std::int16_t\t\tint16;\n\t\ttypedef std::int32_t\t\tint32;\n#\telse\n\t\ttypedef signed char\t\t\tint8;\n\t\ttypedef signed short\t\tint16;\n\t\ttypedef signed int\t\t\tint32;\n#endif//\n\n\ttemplate<>\n\tstruct is_int<int8>\n\t{\n\t\tenum test {value = ~0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<int16>\n\t{\n\t\tenum test {value = ~0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<int64>\n\t{\n\t\tenum test {value = ~0};\n\t};\n}//namespace detail\n\n\n\t/// @addtogroup ext_scalar_int_sized\n\t/// @{\n\n\t/// 8 bit signed integer type.\n\ttypedef detail::int8\t\tint8;\n\n\t/// 16 bit signed integer type.\n\ttypedef detail::int16\t\tint16;\n\n\t/// 32 bit signed integer type.\n\ttypedef detail::int32\t\tint32;\n\n\t/// 64 bit signed integer type.\n\ttypedef detail::int64\t\tint64;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_integer.hpp",
    "content": "/// @ref ext_scalar_integer\n/// @file glm/ext/scalar_integer.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup ext_scalar_integer GLM_EXT_scalar_integer\n/// @ingroup ext\n///\n/// Include <glm/ext/scalar_integer.hpp> to use the features of this extension.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_vectorize.hpp\"\n#include \"../detail/type_float.hpp\"\n#include \"../vector_relational.hpp\"\n#include \"../common.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_integer extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_scalar_integer\n\t/// @{\n\n\t/// Return true if the value is a power of two number.\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL bool isPowerOfTwo(genIUType v);\n\n\t/// Return the power of two number which value is just higher the input value,\n\t/// round up to a power of two.\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType nextPowerOfTwo(genIUType v);\n\n\t/// Return the power of two number which value is just lower the input value,\n\t/// round down to a power of two.\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType prevPowerOfTwo(genIUType v);\n\n\t/// Return true if the 'Value' is a multiple of 'Multiple'.\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL bool isMultiple(genIUType v, genIUType Multiple);\n\n\t/// Higher multiple number of Source.\n\t///\n\t/// @tparam genIUType Integer scalar or vector types.\n\t///\n\t/// @param v Source value to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType nextMultiple(genIUType v, genIUType Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam genIUType Integer scalar or vector types.\n\t///\n\t/// @param v Source value to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType prevMultiple(genIUType v, genIUType Multiple);\n\n\t/// Returns the bit number of the Nth significant bit set to\n\t/// 1 in the binary representation of value.\n\t/// If value bitcount is less than the Nth significant bit, -1 will be returned.\n\t///\n\t/// @tparam genIUType Signed or unsigned integer scalar types.\n\t///\n\t/// @see ext_scalar_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL int findNSB(genIUType x, int significantBitCount);\n\n\t/// @}\n} //namespace glm\n\n#include \"scalar_integer.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/scalar_integer.inl",
    "content": "#include \"../integer.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool compute = false>\n\tstruct compute_ceilShift\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T)\n\t\t{\n\t\t\treturn v;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_ceilShift<L, T, Q, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v, T Shift)\n\t\t{\n\t\t\treturn v | (v >> Shift);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q, bool isSigned = true>\n\tstruct compute_ceilPowerOfTwo\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(!std::numeric_limits<T>::is_iec559, \"'ceilPowerOfTwo' only accept integer scalar or vector inputs\");\n\n\t\t\tvec<L, T, Q> const Sign(sign(x));\n\n\t\t\tvec<L, T, Q> v(abs(x));\n\n\t\t\tv = v - static_cast<T>(1);\n\t\t\tv = v | (v >> static_cast<T>(1));\n\t\t\tv = v | (v >> static_cast<T>(2));\n\t\t\tv = v | (v >> static_cast<T>(4));\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 2>::call(v, 8);\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 4>::call(v, 16);\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 8>::call(v, 32);\n\t\t\treturn (v + static_cast<T>(1)) * Sign;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_ceilPowerOfTwo<L, T, Q, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& x)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(!std::numeric_limits<T>::is_iec559, \"'ceilPowerOfTwo' only accept integer scalar or vector inputs\");\n\n\t\t\tvec<L, T, Q> v(x);\n\n\t\t\tv = v - static_cast<T>(1);\n\t\t\tv = v | (v >> static_cast<T>(1));\n\t\t\tv = v | (v >> static_cast<T>(2));\n\t\t\tv = v | (v >> static_cast<T>(4));\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 2>::call(v, 8);\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 4>::call(v, 16);\n\t\t\tv = compute_ceilShift<L, T, Q, sizeof(T) >= 8>::call(v, 32);\n\t\t\treturn v + static_cast<T>(1);\n\t\t}\n\t};\n\n\ttemplate<bool is_float, bool is_signed>\n\tstruct compute_ceilMultiple{};\n\n\ttemplate<>\n\tstruct compute_ceilMultiple<true, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif(Source > genType(0))\n\t\t\t\treturn Source + (Multiple - std::fmod(Source, Multiple));\n\t\t\telse\n\t\t\t\treturn Source + std::fmod(-Source, Multiple);\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_ceilMultiple<false, false>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tgenType Tmp = Source - genType(1);\n\t\t\treturn Tmp + (Multiple - (Tmp % Multiple));\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_ceilMultiple<false, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tassert(Multiple > genType(0));\n\t\t\tif(Source > genType(0))\n\t\t\t{\n\t\t\t\tgenType Tmp = Source - genType(1);\n\t\t\t\treturn Tmp + (Multiple - (Tmp % Multiple));\n\t\t\t}\n\t\t\telse\n\t\t\t\treturn Source + (-Source % Multiple);\n\t\t}\n\t};\n\n\ttemplate<bool is_float, bool is_signed>\n\tstruct compute_floorMultiple{};\n\n\ttemplate<>\n\tstruct compute_floorMultiple<true, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif(Source >= genType(0))\n\t\t\t\treturn Source - std::fmod(Source, Multiple);\n\t\t\telse\n\t\t\t\treturn Source - std::fmod(Source, Multiple) - Multiple;\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_floorMultiple<false, false>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif(Source >= genType(0))\n\t\t\t\treturn Source - Source % Multiple;\n\t\t\telse\n\t\t\t{\n\t\t\t\tgenType Tmp = Source + genType(1);\n\t\t\t\treturn Tmp - Tmp % Multiple - Multiple;\n\t\t\t}\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_floorMultiple<false, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif(Source >= genType(0))\n\t\t\t\treturn Source - Source % Multiple;\n\t\t\telse\n\t\t\t{\n\t\t\t\tgenType Tmp = Source + genType(1);\n\t\t\t\treturn Tmp - Tmp % Multiple - Multiple;\n\t\t\t}\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER bool isPowerOfTwo(genIUType Value)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'isPowerOfTwo' only accept integer inputs\");\n\n\t\tgenIUType const Result = glm::abs(Value);\n\t\treturn !(Result & (Result - 1));\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType nextPowerOfTwo(genIUType value)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'nextPowerOfTwo' only accept integer inputs\");\n\n\t\treturn detail::compute_ceilPowerOfTwo<1, genIUType, defaultp, std::numeric_limits<genIUType>::is_signed>::call(vec<1, genIUType, defaultp>(value)).x;\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType prevPowerOfTwo(genIUType value)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'prevPowerOfTwo' only accept integer inputs\");\n\n\t\treturn isPowerOfTwo(value) ? value : static_cast<genIUType>(static_cast<genIUType>(1) << static_cast<genIUType>(findMSB(value)));\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER bool isMultiple(genIUType Value, genIUType Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'isMultiple' only accept integer inputs\");\n\n\t\treturn isMultiple(vec<1, genIUType>(Value), vec<1, genIUType>(Multiple)).x;\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType nextMultiple(genIUType Source, genIUType Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'nextMultiple' only accept integer inputs\");\n\n\t\treturn detail::compute_ceilMultiple<std::numeric_limits<genIUType>::is_iec559, std::numeric_limits<genIUType>::is_signed>::call(Source, Multiple);\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType prevMultiple(genIUType Source, genIUType Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'prevMultiple' only accept integer inputs\");\n\n\t\treturn detail::compute_floorMultiple<std::numeric_limits<genIUType>::is_iec559, std::numeric_limits<genIUType>::is_signed>::call(Source, Multiple);\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER int findNSB(genIUType x, int significantBitCount)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'findNSB' only accept integer inputs\");\n\n\t\tif(bitCount(x) < significantBitCount)\n\t\t\treturn -1;\n\n\t\tgenIUType const One = static_cast<genIUType>(1);\n\t\tint bitPos = 0;\n\n\t\tgenIUType key = x;\n\t\tint nBitCount = significantBitCount;\n\t\tint Step = sizeof(x) * 8 / 2;\n\t\twhile (key > One)\n\t\t{\n\t\t\tgenIUType Mask = static_cast<genIUType>((One << Step) - One);\n\t\t\tgenIUType currentKey = key & Mask;\n\t\t\tint currentBitCount = bitCount(currentKey);\n\t\t\tif (nBitCount > currentBitCount)\n\t\t\t{\n\t\t\t\tnBitCount -= currentBitCount;\n\t\t\t\tbitPos += Step;\n\t\t\t\tkey >>= static_cast<genIUType>(Step);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tkey = key & Mask;\n\t\t\t}\n\n\t\t\tStep >>= 1;\n\t\t}\n\n\t\treturn static_cast<int>(bitPos);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_relational.hpp",
    "content": "/// @ref ext_scalar_relational\n/// @file glm/ext/scalar_relational.hpp\n///\n/// @defgroup ext_scalar_relational GLM_EXT_scalar_relational\n/// @ingroup ext\n///\n/// Exposes comparison functions for scalar types that take a user defined epsilon values.\n///\n/// Include <glm/ext/scalar_relational.hpp> to use the features of this extension.\n///\n/// @see core_vector_relational\n/// @see ext_vector_relational\n/// @see ext_matrix_relational\n\n#pragma once\n\n// Dependencies\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_relational extension included\")\n#endif\n\nnamespace glm\n{\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam genType Floating-point or integer scalar types\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam genType Floating-point or integer scalar types\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon);\n\n\t/// Returns the component-wise comparison between two scalars in term of ULPs.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @param x First operand.\n\t/// @param y Second operand.\n\t/// @param ULPs Maximum difference in ULPs between the two operators to consider them equal.\n\t///\n\t/// @tparam genType Floating-point or integer scalar types\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int ULPs);\n\n\t/// Returns the component-wise comparison between two scalars in term of ULPs.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @param x First operand.\n\t/// @param y Second operand.\n\t/// @param ULPs Maximum difference in ULPs between the two operators to consider them not equal.\n\t///\n\t/// @tparam genType Floating-point or integer scalar types\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs);\n\n\t/// @}\n}//namespace glm\n\n#include \"scalar_relational.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/scalar_relational.inl",
    "content": "#include \"../common.hpp\"\n#include \"../ext/scalar_int_sized.hpp\"\n#include \"../ext/scalar_uint_sized.hpp\"\n#include \"../detail/type_float.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon)\n\t{\n\t\treturn abs(x - y) <= epsilon;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon)\n\t{\n\t\treturn abs(x - y) > epsilon;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int MaxULPs)\n\t{\n\t\tdetail::float_t<genType> const a(x);\n\t\tdetail::float_t<genType> const b(y);\n\n\t\t// Different signs means they do not match.\n\t\tif(a.negative() != b.negative())\n\t\t\treturn false;\n\n\t\t// Find the difference in ULPs.\n\t\ttypename detail::float_t<genType>::int_type const DiffULPs = abs(a.i - b.i);\n\t\treturn DiffULPs <= MaxULPs;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs)\n\t{\n\t\treturn !equal(x, y, ULPs);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_uint_sized.hpp",
    "content": "/// @ref ext_scalar_uint_sized\n/// @file glm/ext/scalar_uint_sized.hpp\n///\n/// @defgroup ext_scalar_uint_sized GLM_EXT_scalar_uint_sized\n/// @ingroup ext\n///\n/// Exposes sized unsigned integer scalar types.\n///\n/// Include <glm/ext/scalar_uint_sized.hpp> to use the features of this extension.\n///\n/// @see ext_scalar_int_sized\n\n#pragma once\n\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_uint_sized extension included\")\n#endif\n\nnamespace glm{\nnamespace detail\n{\n#\tif GLM_HAS_EXTENDED_INTEGER_TYPE\n\t\ttypedef std::uint8_t\t\tuint8;\n\t\ttypedef std::uint16_t\t\tuint16;\n\t\ttypedef std::uint32_t\t\tuint32;\n#\telse\n\t\ttypedef unsigned char\t\tuint8;\n\t\ttypedef unsigned short\t\tuint16;\n\t\ttypedef unsigned int\t\tuint32;\n#endif\n\n\ttemplate<>\n\tstruct is_int<uint8>\n\t{\n\t\tenum test {value = ~0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<uint16>\n\t{\n\t\tenum test {value = ~0};\n\t};\n\n\ttemplate<>\n\tstruct is_int<uint64>\n\t{\n\t\tenum test {value = ~0};\n\t};\n}//namespace detail\n\n\n\t/// @addtogroup ext_scalar_uint_sized\n\t/// @{\n\n\t/// 8 bit unsigned integer type.\n\ttypedef detail::uint8\t\tuint8;\n\n\t/// 16 bit unsigned integer type.\n\ttypedef detail::uint16\t\tuint16;\n\n\t/// 32 bit unsigned integer type.\n\ttypedef detail::uint32\t\tuint32;\n\n\t/// 64 bit unsigned integer type.\n\ttypedef detail::uint64\t\tuint64;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/scalar_ulp.hpp",
    "content": "/// @ref ext_scalar_ulp\n/// @file glm/ext/scalar_ulp.hpp\n///\n/// @defgroup ext_scalar_ulp GLM_EXT_scalar_ulp\n/// @ingroup ext\n///\n/// Allow the measurement of the accuracy of a function against a reference\n/// implementation. This extension works on floating-point data and provide results\n/// in ULP.\n///\n/// Include <glm/ext/scalar_ulp.hpp> to use the features of this extension.\n///\n/// @see ext_vector_ulp\n/// @see ext_scalar_relational\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_int_sized.hpp\"\n#include \"../common.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_scalar_ulp extension included\")\n#endif\n\nnamespace glm\n{\n\t/// Return the next ULP value(s) after the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType nextFloat(genType x);\n\n\t/// Return the previous ULP value(s) before the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType prevFloat(genType x);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType nextFloat(genType x, int ULPs);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType prevFloat(genType x, int ULPs);\n\n\t/// Return the distance in the number of ULP between 2 single-precision floating-point scalars.\n\t///\n\t/// @see ext_scalar_ulp\n\tGLM_FUNC_DECL int floatDistance(float x, float y);\n\n\t/// Return the distance in the number of ULP between 2 double-precision floating-point scalars.\n\t///\n\t/// @see ext_scalar_ulp\n\tGLM_FUNC_DECL int64 floatDistance(double x, double y);\n\n\t/// @}\n}//namespace glm\n\n#include \"scalar_ulp.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/scalar_ulp.inl",
    "content": "/// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.\n///\n/// Developed at SunPro, a Sun Microsystems, Inc. business.\n/// Permission to use, copy, modify, and distribute this\n/// software is freely granted, provided that this notice\n/// is preserved.\n\n#include \"../detail/type_float.hpp\"\n#include \"../ext/scalar_constants.hpp\"\n#include <cmath>\n#include <cfloat>\n\n#if(GLM_COMPILER & GLM_COMPILER_VC)\n#\tpragma warning(push)\n#\tpragma warning(disable : 4127)\n#endif\n\ntypedef union\n{\n\tfloat value;\n\t/* FIXME: Assumes 32 bit int.  */\n\tunsigned int word;\n} ieee_float_shape_type;\n\ntypedef union\n{\n\tdouble value;\n\tstruct\n\t{\n\t\tint lsw;\n\t\tint msw;\n\t} parts;\n} ieee_double_shape_type;\n\n#define GLM_EXTRACT_WORDS(ix0,ix1,d)\t\t\\\n\tdo {\t\t\t\t\t\t\t\t\t\\\n\t\tieee_double_shape_type ew_u;\t\t\\\n\t\tew_u.value = (d);\t\t\t\t\t\\\n\t\t(ix0) = ew_u.parts.msw;\t\t\t\t\\\n\t\t(ix1) = ew_u.parts.lsw;\t\t\t\t\\\n\t} while (0)\n\n#define GLM_GET_FLOAT_WORD(i,d)\t\t\t\t\\\n\tdo {\t\t\t\t\t\t\t\t\t\\\n\t\tieee_float_shape_type gf_u;\t\t\t\\\n\t\tgf_u.value = (d);\t\t\t\t\t\\\n\t\t(i) = gf_u.word;\t\t\t\t\t\\\n\t} while (0)\n\n#define GLM_SET_FLOAT_WORD(d,i)\t\t\t\t\\\n\tdo {\t\t\t\t\t\t\t\t\t\\\n\t\tieee_float_shape_type sf_u;\t\t\t\\\n\t\tsf_u.word = (i);\t\t\t\t\t\\\n\t\t(d) = sf_u.value;\t\t\t\t\t\\\n\t} while (0)\n\n#define GLM_INSERT_WORDS(d,ix0,ix1)\t\t\t\\\n\tdo {\t\t\t\t\t\t\t\t\t\\\n\t\tieee_double_shape_type iw_u;\t\t\\\n\t\tiw_u.parts.msw = (ix0);\t\t\t\t\\\n\t\tiw_u.parts.lsw = (ix1);\t\t\t\t\\\n\t\t(d) = iw_u.value;\t\t\t\t\t\\\n\t} while (0)\n\nnamespace glm{\nnamespace detail\n{\n\tGLM_FUNC_QUALIFIER float nextafterf(float x, float y)\n\t{\n\t\tvolatile float t;\n\t\tint hx, hy, ix, iy;\n\n\t\tGLM_GET_FLOAT_WORD(hx, x);\n\t\tGLM_GET_FLOAT_WORD(hy, y);\n\t\tix = hx & 0x7fffffff;\t\t// |x|\n\t\tiy = hy & 0x7fffffff;\t\t// |y|\n\n\t\tif((ix > 0x7f800000) ||\t// x is nan\n\t\t\t(iy > 0x7f800000))\t// y is nan\n\t\t\treturn x + y;\n\t\tif(abs(y - x) <= epsilon<float>())\n\t\t\treturn y;\t\t// x=y, return y\n\t\tif(ix == 0)\n\t\t{\t\t\t\t// x == 0\n\t\t\tGLM_SET_FLOAT_WORD(x, (hy & 0x80000000) | 1);// return +-minsubnormal\n\t\t\tt = x * x;\n\t\t\tif(abs(t - x) <= epsilon<float>())\n\t\t\t\treturn t;\n\t\t\telse\n\t\t\t\treturn x;\t// raise underflow flag\n\t\t}\n\t\tif(hx >= 0)\n\t\t{\t\t\t\t\t\t// x > 0\n\t\t\tif(hx > hy)\t\t\t// x > y, x -= ulp\n\t\t\t\thx -= 1;\n\t\t\telse\t\t\t\t// x < y, x += ulp\n\t\t\t\thx += 1;\n\t\t}\n\t\telse\n\t\t{\t\t\t\t\t\t// x < 0\n\t\t\tif(hy >= 0 || hx > hy)\t// x < y, x -= ulp\n\t\t\t\thx -= 1;\n\t\t\telse\t\t\t\t// x > y, x += ulp\n\t\t\t\thx += 1;\n\t\t}\n\t\thy = hx & 0x7f800000;\n\t\tif(hy >= 0x7f800000)\n\t\t\treturn x + x;  \t\t// overflow\n\t\tif(hy < 0x00800000)\t\t// underflow\n\t\t{\n\t\t\tt = x * x;\n\t\t\tif(abs(t - x) > epsilon<float>())\n\t\t\t{\t\t\t\t\t// raise underflow flag\n\t\t\t\tGLM_SET_FLOAT_WORD(y, hx);\n\t\t\t\treturn y;\n\t\t\t}\n\t\t}\n\t\tGLM_SET_FLOAT_WORD(x, hx);\n\t\treturn x;\n\t}\n\n\tGLM_FUNC_QUALIFIER double nextafter(double x, double y)\n\t{\n\t\tvolatile double t;\n\t\tint hx, hy, ix, iy;\n\t\tunsigned int lx, ly;\n\n\t\tGLM_EXTRACT_WORDS(hx, lx, x);\n\t\tGLM_EXTRACT_WORDS(hy, ly, y);\n\t\tix = hx & 0x7fffffff;\t\t\t\t\t\t\t\t// |x|\n\t\tiy = hy & 0x7fffffff;\t\t\t\t\t\t\t\t// |y|\n\n\t\tif(((ix >= 0x7ff00000) && ((ix - 0x7ff00000) | lx) != 0) ||\t// x is nan\n\t\t\t((iy >= 0x7ff00000) && ((iy - 0x7ff00000) | ly) != 0))\t// y is nan\n\t\t\treturn x + y;\n\t\tif(abs(y - x) <= epsilon<double>())\n\t\t\treturn y;\t\t\t\t\t\t\t\t\t// x=y, return y\n\t\tif((ix | lx) == 0)\n\t\t{\t\t\t\t\t\t\t\t\t\t\t\t\t// x == 0\n\t\t\tGLM_INSERT_WORDS(x, hy & 0x80000000, 1);\t\t// return +-minsubnormal\n\t\t\tt = x * x;\n\t\t\tif(abs(t - x) <= epsilon<double>())\n\t\t\t\treturn t;\n\t\t\telse\n\t\t\t\treturn x;   // raise underflow flag\n\t\t}\n\t\tif(hx >= 0) {                             // x > 0\n\t\t\tif(hx > hy || ((hx == hy) && (lx > ly))) {    // x > y, x -= ulp\n\t\t\t\tif(lx == 0) hx -= 1;\n\t\t\t\tlx -= 1;\n\t\t\t}\n\t\t\telse {                            // x < y, x += ulp\n\t\t\t\tlx += 1;\n\t\t\t\tif(lx == 0) hx += 1;\n\t\t\t}\n\t\t}\n\t\telse {                                // x < 0\n\t\t\tif(hy >= 0 || hx > hy || ((hx == hy) && (lx > ly))){// x < y, x -= ulp\n\t\t\t\tif(lx == 0) hx -= 1;\n\t\t\t\tlx -= 1;\n\t\t\t}\n\t\t\telse {                            // x > y, x += ulp\n\t\t\t\tlx += 1;\n\t\t\t\tif(lx == 0) hx += 1;\n\t\t\t}\n\t\t}\n\t\thy = hx & 0x7ff00000;\n\t\tif(hy >= 0x7ff00000)\n\t\t\treturn x + x;\t\t\t// overflow\n\t\tif(hy < 0x00100000)\n\t\t{\t\t\t\t\t\t// underflow\n\t\t\tt = x * x;\n\t\t\tif(abs(t - x) > epsilon<double>())\n\t\t\t{\t\t\t\t\t// raise underflow flag\n\t\t\t\tGLM_INSERT_WORDS(y, hx, lx);\n\t\t\t\treturn y;\n\t\t\t}\n\t\t}\n\t\tGLM_INSERT_WORDS(x, hx, lx);\n\t\treturn x;\n\t}\n}//namespace detail\n}//namespace glm\n\n#if(GLM_COMPILER & GLM_COMPILER_VC)\n#\tpragma warning(pop)\n#endif\n\nnamespace glm\n{\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER float nextFloat(float x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::nextafter(x, std::numeric_limits<float>::max());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\t\treturn detail::nextafterf(x, FLT_MAX);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\t\treturn __builtin_nextafterf(x, FLT_MAX);\n#\t\telse\n\t\t\treturn nextafterf(x, FLT_MAX);\n#\t\tendif\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER double nextFloat(double x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::nextafter(x, std::numeric_limits<double>::max());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\t\treturn detail::nextafter(x, std::numeric_limits<double>::max());\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\t\treturn __builtin_nextafter(x, DBL_MAX);\n#\t\telse\n\t\t\treturn nextafter(x, DBL_MAX);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T nextFloat(T x, int ULPs)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'next_float' only accept floating-point input\");\n\t\tassert(ULPs >= 0);\n\n\t\tT temp = x;\n\t\tfor(int i = 0; i < ULPs; ++i)\n\t\t\ttemp = nextFloat(temp);\n\t\treturn temp;\n\t}\n\n\tGLM_FUNC_QUALIFIER float prevFloat(float x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::nextafter(x, std::numeric_limits<float>::min());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\t\treturn detail::nextafterf(x, FLT_MIN);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\t\treturn __builtin_nextafterf(x, FLT_MIN);\n#\t\telse\n\t\t\treturn nextafterf(x, FLT_MIN);\n#\t\tendif\n\t}\n\n\tGLM_FUNC_QUALIFIER double prevFloat(double x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::nextafter(x, std::numeric_limits<double>::min());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\t\treturn _nextafter(x, DBL_MIN);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\t\treturn __builtin_nextafter(x, DBL_MIN);\n#\t\telse\n\t\t\treturn nextafter(x, DBL_MIN);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T prevFloat(T x, int ULPs)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'prev_float' only accept floating-point input\");\n\t\tassert(ULPs >= 0);\n\n\t\tT temp = x;\n\t\tfor(int i = 0; i < ULPs; ++i)\n\t\t\ttemp = prevFloat(temp);\n\t\treturn temp;\n\t}\n\n\tGLM_FUNC_QUALIFIER int floatDistance(float x, float y)\n\t{\n\t\tdetail::float_t<float> const a(x);\n\t\tdetail::float_t<float> const b(y);\n\n\t\treturn abs(a.i - b.i);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 floatDistance(double x, double y)\n\t{\n\t\tdetail::float_t<double> const a(x);\n\t\tdetail::float_t<double> const b(y);\n\n\t\treturn abs(a.i - b.i);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool1.hpp",
    "content": "/// @ref ext_vector_bool1\n/// @file glm/ext/vector_bool1.hpp\n///\n/// @defgroup ext_vector_bool1 GLM_EXT_vector_bool1\n/// @ingroup ext\n///\n/// Exposes bvec1 vector type.\n///\n/// Include <glm/ext/vector_bool1.hpp> to use the features of this extension.\n///\n/// @see ext_vector_bool1_precision extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_bool1 extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_bool1\n\t/// @{\n\n\t/// 1 components vector of boolean.\n\ttypedef vec<1, bool, defaultp>\t\tbvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool1_precision.hpp",
    "content": "/// @ref ext_vector_bool1_precision\n/// @file glm/ext/vector_bool1_precision.hpp\n///\n/// @defgroup ext_vector_bool1_precision GLM_EXT_vector_bool1_precision\n/// @ingroup ext\n///\n/// Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types.\n///\n/// Include <glm/ext/vector_bool1_precision.hpp> to use the features of this extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_bool1_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_bool1_precision\n\t/// @{\n\n\t/// 1 component vector of bool values.\n\ttypedef vec<1, bool, highp>\t\t\thighp_bvec1;\n\n\t/// 1 component vector of bool values.\n\ttypedef vec<1, bool, mediump>\t\tmediump_bvec1;\n\n\t/// 1 component vector of bool values.\n\ttypedef vec<1, bool, lowp>\t\t\tlowp_bvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool2.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 2 components vector of boolean.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<2, bool, defaultp>\t\tbvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool2_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 2 components vector of high qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, bool, highp>\t\thighp_bvec2;\n\n\t/// 2 components vector of medium qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, bool, mediump>\tmediump_bvec2;\n\n\t/// 2 components vector of low qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, bool, lowp>\t\tlowp_bvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool3.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 3 components vector of boolean.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<3, bool, defaultp>\t\tbvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool3_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 3 components vector of high qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, bool, highp>\t\thighp_bvec3;\n\n\t/// 3 components vector of medium qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, bool, mediump>\tmediump_bvec3;\n\n\t/// 3 components vector of low qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, bool, lowp>\t\tlowp_bvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool4.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 4 components vector of boolean.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<4, bool, defaultp>\t\tbvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_bool4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_bool4_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 4 components vector of high qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, bool, highp>\t\thighp_bvec4;\n\n\t/// 4 components vector of medium qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, bool, mediump>\tmediump_bvec4;\n\n\t/// 4 components vector of low qualifier bool numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, bool, lowp>\t\tlowp_bvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_common.hpp",
    "content": "/// @ref ext_vector_common\n/// @file glm/ext/vector_common.hpp\n///\n/// @defgroup ext_vector_common GLM_EXT_vector_common\n/// @ingroup ext\n///\n/// Exposes min and max functions for 3 to 4 vector parameters.\n///\n/// Include <glm/ext/vector_common.hpp> to use the features of this extension.\n///\n/// @see core_common\n/// @see ext_scalar_common\n\n#pragma once\n\n// Dependency:\n#include \"../ext/scalar_common.hpp\"\n#include \"../common.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_common extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_common\n\t/// @{\n\n\t/// Return the minimum component-wise values of 3 inputs\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);\n\n\t/// Return the minimum component-wise values of 4 inputs\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);\n\n\t/// Return the maximum component-wise values of 3 inputs\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z);\n\n\t/// Return the maximum component-wise values of 4 inputs\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max( vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z, vec<L, T, Q> const& w);\n\n\t/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, T y);\n\n\t/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);\n\n\t/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmin\">std::fmin documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);\n\n\t/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b);\n\n\t/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b);\n\n\t/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);\n\n\t/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);\n\n\t/// @}\n}//namespace glm\n\n#include \"vector_common.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/vector_common.inl",
    "content": "#include \"../detail/_vectorize.hpp\"\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'min' only accept floating-point or integer inputs\");\n\t\treturn glm::min(glm::min(x, y), z);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z, vec<L, T, Q> const& w)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'min' only accept floating-point or integer inputs\");\n\t\treturn glm::min(glm::min(x, y), glm::min(z, w));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'max' only accept floating-point or integer inputs\");\n\t\treturn glm::max(glm::max(x, y), z);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z, vec<L, T, Q> const& w)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'max' only accept floating-point or integer inputs\");\n\t\treturn glm::max(glm::max(x, y), glm::max(z, w));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, T b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point inputs\");\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmin, a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point inputs\");\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmin, a, b);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point inputs\");\n\t\treturn fmin(fmin(a, b), c);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmin' only accept floating-point inputs\");\n\t\treturn fmin(fmin(a, b), fmin(c, d));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point inputs\");\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmax, a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point inputs\");\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmax, a, b);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point inputs\");\n\t\treturn fmax(fmax(a, b), c);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fmax' only accept floating-point inputs\");\n\t\treturn fmax(fmax(a, b), fmax(c, d));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double1.hpp",
    "content": "/// @ref ext_vector_double1\n/// @file glm/ext/vector_double1.hpp\n///\n/// @defgroup ext_vector_double1 GLM_EXT_vector_double1\n/// @ingroup ext\n///\n/// Exposes double-precision floating point vector type with one component.\n///\n/// Include <glm/ext/vector_double1.hpp> to use the features of this extension.\n///\n/// @see ext_vector_double1_precision extension.\n/// @see ext_vector_float1 extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_double1 extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_double1\n\t/// @{\n\n\t/// 1 components vector of double-precision floating-point numbers.\n\ttypedef vec<1, double, defaultp>\t\tdvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double1_precision.hpp",
    "content": "/// @ref ext_vector_double1_precision\n/// @file glm/ext/vector_double1_precision.hpp\n///\n/// @defgroup ext_vector_double1_precision GLM_EXT_vector_double1_precision\n/// @ingroup ext\n///\n/// Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types.\n///\n/// Include <glm/ext/vector_double1_precision.hpp> to use the features of this extension.\n///\n/// @see ext_vector_double1\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_double1_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_double1_precision\n\t/// @{\n\n\t/// 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, highp>\t\thighp_dvec1;\n\n\t/// 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, mediump>\t\tmediump_dvec1;\n\n\t/// 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, lowp>\t\tlowp_dvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double2.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 2 components vector of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<2, double, defaultp>\t\tdvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double2_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 2 components vector of high double-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, double, highp>\t\thighp_dvec2;\n\n\t/// 2 components vector of medium double-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, double, mediump>\t\tmediump_dvec2;\n\n\t/// 2 components vector of low double-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, double, lowp>\t\tlowp_dvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double3.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 3 components vector of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<3, double, defaultp>\t\tdvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double3_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 3 components vector of high double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, double, highp>\t\thighp_dvec3;\n\n\t/// 3 components vector of medium double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, double, mediump>\t\tmediump_dvec3;\n\n\t/// 3 components vector of low double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, double, lowp>\t\tlowp_dvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double4.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 4 components vector of double-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<4, double, defaultp>\t\tdvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_double4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_double4_precision.hpp\n\n#pragma once\n#include \"../detail/setup.hpp\"\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 4 components vector of high double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, double, highp>\t\thighp_dvec4;\n\n\t/// 4 components vector of medium double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, double, mediump>\t\tmediump_dvec4;\n\n\t/// 4 components vector of low double-qualifier floating-point numbers.\n\t/// There is no guarantee on the actual qualifier.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, double, lowp>\t\tlowp_dvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float1.hpp",
    "content": "/// @ref ext_vector_float1\n/// @file glm/ext/vector_float1.hpp\n///\n/// @defgroup ext_vector_float1 GLM_EXT_vector_float1\n/// @ingroup ext\n///\n/// Exposes single-precision floating point vector type with one component.\n///\n/// Include <glm/ext/vector_float1.hpp> to use the features of this extension.\n///\n/// @see ext_vector_float1_precision extension.\n/// @see ext_vector_double1 extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_float1 extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_float1\n\t/// @{\n\n\t/// 1 components vector of single-precision floating-point numbers.\n\ttypedef vec<1, float, defaultp>\t\tvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float1_precision.hpp",
    "content": "/// @ref ext_vector_float1_precision\n/// @file glm/ext/vector_float1_precision.hpp\n///\n/// @defgroup ext_vector_float1_precision GLM_EXT_vector_float1_precision\n/// @ingroup ext\n///\n/// Exposes highp_vec1, mediump_vec1 and lowp_vec1 types.\n///\n/// Include <glm/ext/vector_float1_precision.hpp> to use the features of this extension.\n///\n/// @see ext_vector_float1 extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_float1_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_float1_precision\n\t/// @{\n\n\t/// 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, highp>\t\thighp_vec1;\n\n\t/// 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, mediump>\t\tmediump_vec1;\n\n\t/// 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, lowp>\t\t\tlowp_vec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float2.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 2 components vector of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<2, float, defaultp>\tvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float2_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 2 components vector of high single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, float, highp>\t\thighp_vec2;\n\n\t/// 2 components vector of medium single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, float, mediump>\t\tmediump_vec2;\n\n\t/// 2 components vector of low single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, float, lowp>\t\t\tlowp_vec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float3.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 3 components vector of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<3, float, defaultp>\t\tvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float3_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 3 components vector of high single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, float, highp>\t\thighp_vec3;\n\n\t/// 3 components vector of medium single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, float, mediump>\t\tmediump_vec3;\n\n\t/// 3 components vector of low single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, float, lowp>\t\t\tlowp_vec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float4.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 4 components vector of single-precision floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<4, float, defaultp>\t\tvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_float4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_float4_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 4 components vector of high single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, float, highp>\t\thighp_vec4;\n\n\t/// 4 components vector of medium single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, float, mediump>\t\tmediump_vec4;\n\n\t/// 4 components vector of low single-qualifier floating-point numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, float, lowp>\t\t\tlowp_vec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int1.hpp",
    "content": "/// @ref ext_vector_int1\n/// @file glm/ext/vector_int1.hpp\n///\n/// @defgroup ext_vector_int1 GLM_EXT_vector_int1\n/// @ingroup ext\n///\n/// Exposes ivec1 vector type.\n///\n/// Include <glm/ext/vector_int1.hpp> to use the features of this extension.\n///\n/// @see ext_vector_uint1 extension.\n/// @see ext_vector_int1_precision extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_int1 extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_int1\n\t/// @{\n\n\t/// 1 component vector of signed integer numbers.\n\ttypedef vec<1, int, defaultp>\t\t\tivec1;\n\n\t/// @}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/vector_int1_precision.hpp",
    "content": "/// @ref ext_vector_int1_precision\n/// @file glm/ext/vector_int1_precision.hpp\n///\n/// @defgroup ext_vector_int1_precision GLM_EXT_vector_int1_precision\n/// @ingroup ext\n///\n/// Exposes highp_ivec1, mediump_ivec1 and lowp_ivec1 types.\n///\n/// Include <glm/ext/vector_int1_precision.hpp> to use the features of this extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_int1_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_int1_precision\n\t/// @{\n\n\t/// 1 component vector of signed integer values.\n\ttypedef vec<1, int, highp>\t\t\thighp_ivec1;\n\n\t/// 1 component vector of signed integer values.\n\ttypedef vec<1, int, mediump>\t\tmediump_ivec1;\n\n\t/// 1 component vector of signed integer values.\n\ttypedef vec<1, int, lowp>\t\t\tlowp_ivec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int2.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 2 components vector of signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<2, int, defaultp>\t\tivec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int2_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 2 components vector of high qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, int, highp>\t\thighp_ivec2;\n\n\t/// 2 components vector of medium qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, int, mediump>\tmediump_ivec2;\n\n\t/// 2 components vector of low qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, int, lowp>\t\tlowp_ivec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int3.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 3 components vector of signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<3, int, defaultp>\t\tivec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int3_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 3 components vector of high qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, int, highp>\t\thighp_ivec3;\n\n\t/// 3 components vector of medium qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, int, mediump>\tmediump_ivec3;\n\n\t/// 3 components vector of low qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, int, lowp>\t\tlowp_ivec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int4.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 4 components vector of signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<4, int, defaultp>\t\tivec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_int4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_int4_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 4 components vector of high qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, int, highp>\t\thighp_ivec4;\n\n\t/// 4 components vector of medium qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, int, mediump>\tmediump_ivec4;\n\n\t/// 4 components vector of low qualifier signed integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, int, lowp>\t\tlowp_ivec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_integer.hpp",
    "content": "/// @ref ext_vector_integer\n/// @file glm/ext/vector_integer.hpp\n///\n/// @see core (dependence)\n/// @see ext_vector_integer (dependence)\n///\n/// @defgroup ext_vector_integer GLM_EXT_vector_integer\n/// @ingroup ext\n///\n/// Include <glm/ext/vector_integer.hpp> to use the features of this extension.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_vectorize.hpp\"\n#include \"../vector_relational.hpp\"\n#include \"../common.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_integer extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_integer\n\t/// @{\n\n\t/// Return true if the value is a power of two number.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Return the power of two number which value is just higher the input value,\n\t/// round up to a power of two.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Return the power of two number which value is just lower the input value,\n\t/// round down to a power of two.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Return true if the 'Value' is a multiple of 'Multiple'.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isMultiple(vec<L, T, Q> const& v, T Multiple);\n\n\t/// Return true if the 'Value' is a multiple of 'Multiple'.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// Higher multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextMultiple(vec<L, T, Q> const& v, T Multiple);\n\n\t/// Higher multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevMultiple(vec<L, T, Q> const& v, T Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// Returns the bit number of the Nth significant bit set to\n\t/// 1 in the binary representation of value.\n\t/// If value bitcount is less than the Nth significant bit, -1 will be returned.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t///\n\t/// @see ext_vector_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> findNSB(vec<L, T, Q> const& Source, vec<L, int, Q> SignificantBitCount);\n\n\t/// @}\n} //namespace glm\n\n#include \"vector_integer.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/vector_integer.inl",
    "content": "#include \"scalar_integer.hpp\"\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isPowerOfTwo(vec<L, T, Q> const& Value)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'isPowerOfTwo' only accept integer inputs\");\n\n\t\tvec<L, T, Q> const Result(abs(Value));\n\t\treturn equal(Result & (Result - vec<L, T, Q>(1)), vec<L, T, Q>(0));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextPowerOfTwo(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'nextPowerOfTwo' only accept integer inputs\");\n\n\t\treturn detail::compute_ceilPowerOfTwo<L, T, Q, std::numeric_limits<T>::is_signed>::call(v);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevPowerOfTwo(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'prevPowerOfTwo' only accept integer inputs\");\n\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(prevPowerOfTwo, v);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isMultiple(vec<L, T, Q> const& Value, T Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'isMultiple' only accept integer inputs\");\n\n\t\treturn (Value % Multiple) == vec<L, T, Q>(0);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isMultiple(vec<L, T, Q> const& Value, vec<L, T, Q> const& Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'isMultiple' only accept integer inputs\");\n\n\t\treturn (Value % Multiple) == vec<L, T, Q>(0);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextMultiple(vec<L, T, Q> const& Source, T Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'nextMultiple' only accept integer inputs\");\n\n\t\treturn detail::functor2<vec, L, T, Q>::call(nextMultiple, Source, vec<L, T, Q>(Multiple));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextMultiple(vec<L, T, Q> const& Source, vec<L, T, Q> const& Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'nextMultiple' only accept integer inputs\");\n\n\t\treturn detail::functor2<vec, L, T, Q>::call(nextMultiple, Source, Multiple);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevMultiple(vec<L, T, Q> const& Source, T Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'prevMultiple' only accept integer inputs\");\n\n\t\treturn detail::functor2<vec, L, T, Q>::call(prevMultiple, Source, vec<L, T, Q>(Multiple));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevMultiple(vec<L, T, Q> const& Source, vec<L, T, Q> const& Multiple)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'prevMultiple' only accept integer inputs\");\n\n\t\treturn detail::functor2<vec, L, T, Q>::call(prevMultiple, Source, Multiple);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> findNSB(vec<L, T, Q> const& Source, vec<L, int, Q> SignificantBitCount)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'findNSB' only accept integer inputs\");\n\n\t\treturn detail::functor2_vec_int<L, T, Q>::call(findNSB, Source, SignificantBitCount);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_relational.hpp",
    "content": "/// @ref ext_vector_relational\n/// @file glm/ext/vector_relational.hpp\n///\n/// @see core (dependence)\n/// @see ext_scalar_integer (dependence)\n///\n/// @defgroup ext_vector_relational GLM_EXT_vector_relational\n/// @ingroup ext\n///\n/// Exposes comparison functions for vector types that take a user defined epsilon values.\n///\n/// Include <glm/ext/vector_relational.hpp> to use the features of this extension.\n///\n/// @see core_vector_relational\n/// @see ext_scalar_relational\n/// @see ext_matrix_relational\n\n#pragma once\n\n// Dependencies\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_relational extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_relational\n\t/// @{\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);\n\n\t/// Returns the component-wise comparison between two vectors in term of ULPs.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);\n\n\t/// @}\n}//namespace glm\n\n#include \"vector_relational.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/vector_relational.inl",
    "content": "#include \"../vector_relational.hpp\"\n#include \"../common.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/type_float.hpp\"\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T Epsilon)\n\t{\n\t\treturn equal(x, y, vec<L, T, Q>(Epsilon));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& Epsilon)\n\t{\n\t\treturn lessThanEqual(abs(x - y), Epsilon);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T Epsilon)\n\t{\n\t\treturn notEqual(x, y, vec<L, T, Q>(Epsilon));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& Epsilon)\n\t{\n\t\treturn greaterThan(abs(x - y), Epsilon);\n\t}\n\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int MaxULPs)\n\t{\n\t\treturn equal(x, y, vec<L, int, Q>(MaxULPs));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& MaxULPs)\n\t{\n\t\tvec<L, bool, Q> Result(false);\n\t\tfor(length_t i = 0; i < L; ++i)\n\t\t{\n\t\t\tdetail::float_t<T> const a(x[i]);\n\t\t\tdetail::float_t<T> const b(y[i]);\n\n\t\t\t// Different signs means they do not match.\n\t\t\tif(a.negative() != b.negative())\n\t\t\t{\n\t\t\t\t// Check for equality to make sure +0==-0\n\t\t\t\tResult[i] = a.mantissa() == b.mantissa() && a.exponent() == b.exponent();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// Find the difference in ULPs.\n\t\t\t\ttypename detail::float_t<T>::int_type const DiffULPs = abs(a.i - b.i);\n\t\t\t\tResult[i] = DiffULPs <= MaxULPs[i];\n\t\t\t}\n\t\t}\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int MaxULPs)\n\t{\n\t\treturn notEqual(x, y, vec<L, int, Q>(MaxULPs));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& MaxULPs)\n\t{\n\t\treturn not_(equal(x, y, MaxULPs));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint1.hpp",
    "content": "/// @ref ext_vector_uint1\n/// @file glm/ext/vector_uint1.hpp\n///\n/// @defgroup ext_vector_uint1 GLM_EXT_vector_uint1\n/// @ingroup ext\n///\n/// Exposes uvec1 vector type.\n///\n/// Include <glm/ext/vector_uvec1.hpp> to use the features of this extension.\n///\n/// @see ext_vector_int1 extension.\n/// @see ext_vector_uint1_precision extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_uint1 extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_uint1\n\t/// @{\n\n\t/// 1 component vector of unsigned integer numbers.\n\ttypedef vec<1, unsigned int, defaultp>\t\t\tuvec1;\n\n\t/// @}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint1_precision.hpp",
    "content": "/// @ref ext_vector_uint1_precision\n/// @file glm/ext/vector_uint1_precision.hpp\n///\n/// @defgroup ext_vector_uint1_precision GLM_EXT_vector_uint1_precision\n/// @ingroup ext\n///\n/// Exposes highp_uvec1, mediump_uvec1 and lowp_uvec1 types.\n///\n/// Include <glm/ext/vector_uint1_precision.hpp> to use the features of this extension.\n\n#pragma once\n\n#include \"../detail/type_vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_uint1_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup ext_vector_uint1_precision\n\t/// @{\n\n\t/// 1 component vector of unsigned integer values.\n\t///\n\t/// @see ext_vector_uint1_precision\n\ttypedef vec<1, unsigned int, highp>\t\t\thighp_uvec1;\n\n\t/// 1 component vector of unsigned integer values.\n\t///\n\t/// @see ext_vector_uint1_precision\n\ttypedef vec<1, unsigned int, mediump>\t\tmediump_uvec1;\n\n\t/// 1 component vector of unsigned integer values.\n\t///\n\t/// @see ext_vector_uint1_precision\n\ttypedef vec<1, unsigned int, lowp>\t\t\tlowp_uvec1;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint2.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint2.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 2 components vector of unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<2, unsigned int, defaultp>\t\tuvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint2_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint2_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec2.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 2 components vector of high qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, unsigned int, highp>\t\thighp_uvec2;\n\n\t/// 2 components vector of medium qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, unsigned int, mediump>\tmediump_uvec2;\n\n\t/// 2 components vector of low qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<2, unsigned int, lowp>\t\tlowp_uvec2;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint3.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint3.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 3 components vector of unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<3, unsigned int, defaultp>\t\tuvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint3_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint3_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 3 components vector of high qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, unsigned int, highp>\t\thighp_uvec3;\n\n\t/// 3 components vector of medium qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, unsigned int, mediump>\tmediump_uvec3;\n\n\t/// 3 components vector of low qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<3, unsigned int, lowp>\t\tlowp_uvec3;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint4.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint4.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector\n\t/// @{\n\n\t/// 4 components vector of unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\ttypedef vec<4, unsigned int, defaultp>\t\tuvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_uint4_precision.hpp",
    "content": "/// @ref core\n/// @file glm/ext/vector_uint4_precision.hpp\n\n#pragma once\n#include \"../detail/type_vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_vector_precision\n\t/// @{\n\n\t/// 4 components vector of high qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, unsigned int, highp>\t\thighp_uvec4;\n\n\t/// 4 components vector of medium qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, unsigned int, mediump>\tmediump_uvec4;\n\n\t/// 4 components vector of low qualifier unsigned integer numbers.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.1.5 Vectors</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>\n\ttypedef vec<4, unsigned int, lowp>\t\tlowp_uvec4;\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext/vector_ulp.hpp",
    "content": "/// @ref ext_vector_ulp\n/// @file glm/ext/vector_ulp.hpp\n///\n/// @defgroup ext_vector_ulp GLM_EXT_vector_ulp\n/// @ingroup ext\n///\n/// Allow the measurement of the accuracy of a function against a reference\n/// implementation. This extension works on floating-point data and provide results\n/// in ULP.\n///\n/// Include <glm/ext/vector_ulp.hpp> to use the features of this extension.\n///\n/// @see ext_scalar_ulp\n/// @see ext_scalar_relational\n/// @see ext_vector_relational\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_ulp.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_EXT_vector_ulp extension included\")\n#endif\n\nnamespace glm\n{\n\t/// Return the next ULP value(s) after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, int ULPs);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);\n\n\t/// Return the previous ULP value(s) before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, int ULPs);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);\n\n\t/// Return the distance in the number of ULP between 2 single-precision floating-point scalars.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> floatDistance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);\n\n\t/// Return the distance in the number of ULP between 2 double-precision floating-point scalars.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_scalar_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int64, Q> floatDistance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);\n\n\t/// @}\n}//namespace glm\n\n#include \"vector_ulp.inl\"\n"
  },
  {
    "path": "libraries/glm/ext/vector_ulp.inl",
    "content": "namespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextFloat(vec<L, T, Q> const& x)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = nextFloat(x[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, int ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = nextFloat(x[i], ULPs);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = nextFloat(x[i], ULPs[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevFloat(vec<L, T, Q> const& x)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prevFloat(x[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, int ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prevFloat(x[i], ULPs);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prevFloat(x[i], ULPs[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> floatDistance(vec<L, float, Q> const& x, vec<L, float, Q> const& y)\n\t{\n\t\tvec<L, int, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = floatDistance(x[i], y[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int64, Q> floatDistance(vec<L, double, Q> const& x, vec<L, double, Q> const& y)\n\t{\n\t\tvec<L, int64, Q> Result;\n\t\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = floatDistance(x[i], y[i]);\n\t\treturn Result;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/ext.hpp",
    "content": "/// @file glm/ext.hpp\n///\n/// @ref core (Dependence)\n\n#include \"detail/setup.hpp\"\n\n#pragma once\n\n#include \"glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED)\n#\tdefine GLM_MESSAGE_EXT_INCLUDED_DISPLAYED\n#\tpragma message(\"GLM: All extensions included (not recommended)\")\n#endif//GLM_MESSAGES\n\n#include \"./ext/matrix_double2x2.hpp\"\n#include \"./ext/matrix_double2x2_precision.hpp\"\n#include \"./ext/matrix_double2x3.hpp\"\n#include \"./ext/matrix_double2x3_precision.hpp\"\n#include \"./ext/matrix_double2x4.hpp\"\n#include \"./ext/matrix_double2x4_precision.hpp\"\n#include \"./ext/matrix_double3x2.hpp\"\n#include \"./ext/matrix_double3x2_precision.hpp\"\n#include \"./ext/matrix_double3x3.hpp\"\n#include \"./ext/matrix_double3x3_precision.hpp\"\n#include \"./ext/matrix_double3x4.hpp\"\n#include \"./ext/matrix_double3x4_precision.hpp\"\n#include \"./ext/matrix_double4x2.hpp\"\n#include \"./ext/matrix_double4x2_precision.hpp\"\n#include \"./ext/matrix_double4x3.hpp\"\n#include \"./ext/matrix_double4x3_precision.hpp\"\n#include \"./ext/matrix_double4x4.hpp\"\n#include \"./ext/matrix_double4x4_precision.hpp\"\n\n#include \"./ext/matrix_float2x2.hpp\"\n#include \"./ext/matrix_float2x2_precision.hpp\"\n#include \"./ext/matrix_float2x3.hpp\"\n#include \"./ext/matrix_float2x3_precision.hpp\"\n#include \"./ext/matrix_float2x4.hpp\"\n#include \"./ext/matrix_float2x4_precision.hpp\"\n#include \"./ext/matrix_float3x2.hpp\"\n#include \"./ext/matrix_float3x2_precision.hpp\"\n#include \"./ext/matrix_float3x3.hpp\"\n#include \"./ext/matrix_float3x3_precision.hpp\"\n#include \"./ext/matrix_float3x4.hpp\"\n#include \"./ext/matrix_float3x4_precision.hpp\"\n#include \"./ext/matrix_float4x2.hpp\"\n#include \"./ext/matrix_float4x2_precision.hpp\"\n#include \"./ext/matrix_float4x3.hpp\"\n#include \"./ext/matrix_float4x3_precision.hpp\"\n#include \"./ext/matrix_float4x4.hpp\"\n#include \"./ext/matrix_float4x4_precision.hpp\"\n\n#include \"./ext/matrix_relational.hpp\"\n\n#include \"./ext/quaternion_double.hpp\"\n#include \"./ext/quaternion_double_precision.hpp\"\n#include \"./ext/quaternion_float.hpp\"\n#include \"./ext/quaternion_float_precision.hpp\"\n#include \"./ext/quaternion_geometric.hpp\"\n#include \"./ext/quaternion_relational.hpp\"\n\n#include \"./ext/scalar_constants.hpp\"\n#include \"./ext/scalar_int_sized.hpp\"\n#include \"./ext/scalar_relational.hpp\"\n\n#include \"./ext/vector_bool1.hpp\"\n#include \"./ext/vector_bool1_precision.hpp\"\n#include \"./ext/vector_bool2.hpp\"\n#include \"./ext/vector_bool2_precision.hpp\"\n#include \"./ext/vector_bool3.hpp\"\n#include \"./ext/vector_bool3_precision.hpp\"\n#include \"./ext/vector_bool4.hpp\"\n#include \"./ext/vector_bool4_precision.hpp\"\n\n#include \"./ext/vector_double1.hpp\"\n#include \"./ext/vector_double1_precision.hpp\"\n#include \"./ext/vector_double2.hpp\"\n#include \"./ext/vector_double2_precision.hpp\"\n#include \"./ext/vector_double3.hpp\"\n#include \"./ext/vector_double3_precision.hpp\"\n#include \"./ext/vector_double4.hpp\"\n#include \"./ext/vector_double4_precision.hpp\"\n\n#include \"./ext/vector_float1.hpp\"\n#include \"./ext/vector_float1_precision.hpp\"\n#include \"./ext/vector_float2.hpp\"\n#include \"./ext/vector_float2_precision.hpp\"\n#include \"./ext/vector_float3.hpp\"\n#include \"./ext/vector_float3_precision.hpp\"\n#include \"./ext/vector_float4.hpp\"\n#include \"./ext/vector_float4_precision.hpp\"\n\n#include \"./ext/vector_int1.hpp\"\n#include \"./ext/vector_int1_precision.hpp\"\n#include \"./ext/vector_int2.hpp\"\n#include \"./ext/vector_int2_precision.hpp\"\n#include \"./ext/vector_int3.hpp\"\n#include \"./ext/vector_int3_precision.hpp\"\n#include \"./ext/vector_int4.hpp\"\n#include \"./ext/vector_int4_precision.hpp\"\n\n#include \"./ext/vector_relational.hpp\"\n\n#include \"./ext/vector_uint1.hpp\"\n#include \"./ext/vector_uint1_precision.hpp\"\n#include \"./ext/vector_uint2.hpp\"\n#include \"./ext/vector_uint2_precision.hpp\"\n#include \"./ext/vector_uint3.hpp\"\n#include \"./ext/vector_uint3_precision.hpp\"\n#include \"./ext/vector_uint4.hpp\"\n#include \"./ext/vector_uint4_precision.hpp\"\n\n#include \"./gtc/bitfield.hpp\"\n#include \"./gtc/color_space.hpp\"\n#include \"./gtc/constants.hpp\"\n#include \"./gtc/epsilon.hpp\"\n#include \"./gtc/integer.hpp\"\n#include \"./gtc/matrix_access.hpp\"\n#include \"./gtc/matrix_integer.hpp\"\n#include \"./gtc/matrix_inverse.hpp\"\n#include \"./gtc/matrix_transform.hpp\"\n#include \"./gtc/noise.hpp\"\n#include \"./gtc/packing.hpp\"\n#include \"./gtc/quaternion.hpp\"\n#include \"./gtc/random.hpp\"\n#include \"./gtc/reciprocal.hpp\"\n#include \"./gtc/round.hpp\"\n#include \"./gtc/type_precision.hpp\"\n#include \"./gtc/type_ptr.hpp\"\n#include \"./gtc/ulp.hpp\"\n#include \"./gtc/vec1.hpp\"\n#if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE\n#\tinclude \"./gtc/type_aligned.hpp\"\n#endif\n\n#ifdef GLM_ENABLE_EXPERIMENTAL\n#include \"./gtx/associated_min_max.hpp\"\n#include \"./gtx/bit.hpp\"\n#include \"./gtx/closest_point.hpp\"\n#include \"./gtx/color_encoding.hpp\"\n#include \"./gtx/color_space.hpp\"\n#include \"./gtx/color_space_YCoCg.hpp\"\n#include \"./gtx/compatibility.hpp\"\n#include \"./gtx/component_wise.hpp\"\n#include \"./gtx/dual_quaternion.hpp\"\n#include \"./gtx/euler_angles.hpp\"\n#include \"./gtx/extend.hpp\"\n#include \"./gtx/extended_min_max.hpp\"\n#include \"./gtx/fast_exponential.hpp\"\n#include \"./gtx/fast_square_root.hpp\"\n#include \"./gtx/fast_trigonometry.hpp\"\n#include \"./gtx/functions.hpp\"\n#include \"./gtx/gradient_paint.hpp\"\n#include \"./gtx/handed_coordinate_space.hpp\"\n#include \"./gtx/integer.hpp\"\n#include \"./gtx/intersect.hpp\"\n#include \"./gtx/log_base.hpp\"\n#include \"./gtx/matrix_cross_product.hpp\"\n#include \"./gtx/matrix_interpolation.hpp\"\n#include \"./gtx/matrix_major_storage.hpp\"\n#include \"./gtx/matrix_operation.hpp\"\n#include \"./gtx/matrix_query.hpp\"\n#include \"./gtx/mixed_product.hpp\"\n#include \"./gtx/norm.hpp\"\n#include \"./gtx/normal.hpp\"\n#include \"./gtx/normalize_dot.hpp\"\n#include \"./gtx/number_precision.hpp\"\n#include \"./gtx/optimum_pow.hpp\"\n#include \"./gtx/orthonormalize.hpp\"\n#include \"./gtx/perpendicular.hpp\"\n#include \"./gtx/polar_coordinates.hpp\"\n#include \"./gtx/projection.hpp\"\n#include \"./gtx/quaternion.hpp\"\n#include \"./gtx/raw_data.hpp\"\n#include \"./gtx/rotate_vector.hpp\"\n#include \"./gtx/spline.hpp\"\n#include \"./gtx/std_based_type.hpp\"\n#if !(GLM_COMPILER & GLM_COMPILER_CUDA)\n#\tinclude \"./gtx/string_cast.hpp\"\n#endif\n#include \"./gtx/transform.hpp\"\n#include \"./gtx/transform2.hpp\"\n#include \"./gtx/vec_swizzle.hpp\"\n#include \"./gtx/vector_angle.hpp\"\n#include \"./gtx/vector_query.hpp\"\n#include \"./gtx/wrap.hpp\"\n\n#if GLM_HAS_TEMPLATE_ALIASES\n#\tinclude \"./gtx/scalar_multiplication.hpp\"\n#endif\n\n#if GLM_HAS_RANGE_FOR\n#\tinclude \"./gtx/range.hpp\"\n#endif\n#endif//GLM_ENABLE_EXPERIMENTAL\n"
  },
  {
    "path": "libraries/glm/fwd.hpp",
    "content": "#pragma once\n\n#include \"detail/qualifier.hpp\"\n\nnamespace glm\n{\n#if GLM_HAS_EXTENDED_INTEGER_TYPE\n\ttypedef std::int8_t\t\t\t\tint8;\n\ttypedef std::int16_t\t\t\tint16;\n\ttypedef std::int32_t\t\t\tint32;\n\ttypedef std::int64_t\t\t\tint64;\n\n\ttypedef std::uint8_t\t\t\tuint8;\n\ttypedef std::uint16_t\t\t\tuint16;\n\ttypedef std::uint32_t\t\t\tuint32;\n\ttypedef std::uint64_t\t\t\tuint64;\n#else\n\ttypedef signed char\t\t\t\tint8;\n\ttypedef signed short\t\t\tint16;\n\ttypedef signed int\t\t\t\tint32;\n\ttypedef detail::int64\t\t\tint64;\n\n\ttypedef unsigned char\t\t\tuint8;\n\ttypedef unsigned short\t\t\tuint16;\n\ttypedef unsigned int\t\t\tuint32;\n\ttypedef detail::uint64\t\t\tuint64;\n#endif\n\n\t// Scalar int\n\n\ttypedef int8\t\t\t\t\tlowp_i8;\n\ttypedef int8\t\t\t\t\tmediump_i8;\n\ttypedef int8\t\t\t\t\thighp_i8;\n\ttypedef int8\t\t\t\t\ti8;\n\n\ttypedef int8\t\t\t\t\tlowp_int8;\n\ttypedef int8\t\t\t\t\tmediump_int8;\n\ttypedef int8\t\t\t\t\thighp_int8;\n\n\ttypedef int8\t\t\t\t\tlowp_int8_t;\n\ttypedef int8\t\t\t\t\tmediump_int8_t;\n\ttypedef int8\t\t\t\t\thighp_int8_t;\n\ttypedef int8\t\t\t\t\tint8_t;\n\n\ttypedef int16\t\t\t\t\tlowp_i16;\n\ttypedef int16\t\t\t\t\tmediump_i16;\n\ttypedef int16\t\t\t\t\thighp_i16;\n\ttypedef int16\t\t\t\t\ti16;\n\n\ttypedef int16\t\t\t\t\tlowp_int16;\n\ttypedef int16\t\t\t\t\tmediump_int16;\n\ttypedef int16\t\t\t\t\thighp_int16;\n\n\ttypedef int16\t\t\t\t\tlowp_int16_t;\n\ttypedef int16\t\t\t\t\tmediump_int16_t;\n\ttypedef int16\t\t\t\t\thighp_int16_t;\n\ttypedef int16\t\t\t\t\tint16_t;\n\n\ttypedef int32\t\t\t\t\tlowp_i32;\n\ttypedef int32\t\t\t\t\tmediump_i32;\n\ttypedef int32\t\t\t\t\thighp_i32;\n\ttypedef int32\t\t\t\t\ti32;\n\n\ttypedef int32\t\t\t\t\tlowp_int32;\n\ttypedef int32\t\t\t\t\tmediump_int32;\n\ttypedef int32\t\t\t\t\thighp_int32;\n\n\ttypedef int32\t\t\t\t\tlowp_int32_t;\n\ttypedef int32\t\t\t\t\tmediump_int32_t;\n\ttypedef int32\t\t\t\t\thighp_int32_t;\n\ttypedef int32\t\t\t\t\tint32_t;\n\n\ttypedef int64\t\t\t\t\tlowp_i64;\n\ttypedef int64\t\t\t\t\tmediump_i64;\n\ttypedef int64\t\t\t\t\thighp_i64;\n\ttypedef int64\t\t\t\t\ti64;\n\n\ttypedef int64\t\t\t\t\tlowp_int64;\n\ttypedef int64\t\t\t\t\tmediump_int64;\n\ttypedef int64\t\t\t\t\thighp_int64;\n\n\ttypedef int64\t\t\t\t\tlowp_int64_t;\n\ttypedef int64\t\t\t\t\tmediump_int64_t;\n\ttypedef int64\t\t\t\t\thighp_int64_t;\n\ttypedef int64\t\t\t\t\tint64_t;\n\n\t// Scalar uint\n\n\ttypedef uint8\t\t\t\t\tlowp_u8;\n\ttypedef uint8\t\t\t\t\tmediump_u8;\n\ttypedef uint8\t\t\t\t\thighp_u8;\n\ttypedef uint8\t\t\t\t\tu8;\n\n\ttypedef uint8\t\t\t\t\tlowp_uint8;\n\ttypedef uint8\t\t\t\t\tmediump_uint8;\n\ttypedef uint8\t\t\t\t\thighp_uint8;\n\n\ttypedef uint8\t\t\t\t\tlowp_uint8_t;\n\ttypedef uint8\t\t\t\t\tmediump_uint8_t;\n\ttypedef uint8\t\t\t\t\thighp_uint8_t;\n\ttypedef uint8\t\t\t\t\tuint8_t;\n\n\ttypedef uint16\t\t\t\t\tlowp_u16;\n\ttypedef uint16\t\t\t\t\tmediump_u16;\n\ttypedef uint16\t\t\t\t\thighp_u16;\n\ttypedef uint16\t\t\t\t\tu16;\n\n\ttypedef uint16\t\t\t\t\tlowp_uint16;\n\ttypedef uint16\t\t\t\t\tmediump_uint16;\n\ttypedef uint16\t\t\t\t\thighp_uint16;\n\n\ttypedef uint16\t\t\t\t\tlowp_uint16_t;\n\ttypedef uint16\t\t\t\t\tmediump_uint16_t;\n\ttypedef uint16\t\t\t\t\thighp_uint16_t;\n\ttypedef uint16\t\t\t\t\tuint16_t;\n\n\ttypedef uint32\t\t\t\t\tlowp_u32;\n\ttypedef uint32\t\t\t\t\tmediump_u32;\n\ttypedef uint32\t\t\t\t\thighp_u32;\n\ttypedef uint32\t\t\t\t\tu32;\n\n\ttypedef uint32\t\t\t\t\tlowp_uint32;\n\ttypedef uint32\t\t\t\t\tmediump_uint32;\n\ttypedef uint32\t\t\t\t\thighp_uint32;\n\n\ttypedef uint32\t\t\t\t\tlowp_uint32_t;\n\ttypedef uint32\t\t\t\t\tmediump_uint32_t;\n\ttypedef uint32\t\t\t\t\thighp_uint32_t;\n\ttypedef uint32\t\t\t\t\tuint32_t;\n\n\ttypedef uint64\t\t\t\t\tlowp_u64;\n\ttypedef uint64\t\t\t\t\tmediump_u64;\n\ttypedef uint64\t\t\t\t\thighp_u64;\n\ttypedef uint64\t\t\t\t\tu64;\n\n\ttypedef uint64\t\t\t\t\tlowp_uint64;\n\ttypedef uint64\t\t\t\t\tmediump_uint64;\n\ttypedef uint64\t\t\t\t\thighp_uint64;\n\n\ttypedef uint64\t\t\t\t\tlowp_uint64_t;\n\ttypedef uint64\t\t\t\t\tmediump_uint64_t;\n\ttypedef uint64\t\t\t\t\thighp_uint64_t;\n\ttypedef uint64\t\t\t\t\tuint64_t;\n\n\t// Scalar float\n\n\ttypedef float\t\t\t\t\tlowp_f32;\n\ttypedef float\t\t\t\t\tmediump_f32;\n\ttypedef float\t\t\t\t\thighp_f32;\n\ttypedef float\t\t\t\t\tf32;\n\n\ttypedef float\t\t\t\t\tlowp_float32;\n\ttypedef float\t\t\t\t\tmediump_float32;\n\ttypedef float\t\t\t\t\thighp_float32;\n\ttypedef float\t\t\t\t\tfloat32;\n\n\ttypedef float\t\t\t\t\tlowp_float32_t;\n\ttypedef float\t\t\t\t\tmediump_float32_t;\n\ttypedef float\t\t\t\t\thighp_float32_t;\n\ttypedef float\t\t\t\t\tfloat32_t;\n\n\n\ttypedef double\t\t\t\t\tlowp_f64;\n\ttypedef double\t\t\t\t\tmediump_f64;\n\ttypedef double\t\t\t\t\thighp_f64;\n\ttypedef double\t\t\t\t\tf64;\n\n\ttypedef double\t\t\t\t\tlowp_float64;\n\ttypedef double\t\t\t\t\tmediump_float64;\n\ttypedef double\t\t\t\t\thighp_float64;\n\ttypedef double\t\t\t\t\tfloat64;\n\n\ttypedef double\t\t\t\t\tlowp_float64_t;\n\ttypedef double\t\t\t\t\tmediump_float64_t;\n\ttypedef double\t\t\t\t\thighp_float64_t;\n\ttypedef double\t\t\t\t\tfloat64_t;\n\n\t// Vector bool\n\n\ttypedef vec<1, bool, lowp>\t\tlowp_bvec1;\n\ttypedef vec<2, bool, lowp>\t\tlowp_bvec2;\n\ttypedef vec<3, bool, lowp>\t\tlowp_bvec3;\n\ttypedef vec<4, bool, lowp>\t\tlowp_bvec4;\n\n\ttypedef vec<1, bool, mediump>\tmediump_bvec1;\n\ttypedef vec<2, bool, mediump>\tmediump_bvec2;\n\ttypedef vec<3, bool, mediump>\tmediump_bvec3;\n\ttypedef vec<4, bool, mediump>\tmediump_bvec4;\n\n\ttypedef vec<1, bool, highp>\t\thighp_bvec1;\n\ttypedef vec<2, bool, highp>\t\thighp_bvec2;\n\ttypedef vec<3, bool, highp>\t\thighp_bvec3;\n\ttypedef vec<4, bool, highp>\t\thighp_bvec4;\n\n\ttypedef vec<1, bool, defaultp>\tbvec1;\n\ttypedef vec<2, bool, defaultp>\tbvec2;\n\ttypedef vec<3, bool, defaultp>\tbvec3;\n\ttypedef vec<4, bool, defaultp>\tbvec4;\n\n\t// Vector int\n\n\ttypedef vec<1, i32, lowp>\t\tlowp_ivec1;\n\ttypedef vec<2, i32, lowp>\t\tlowp_ivec2;\n\ttypedef vec<3, i32, lowp>\t\tlowp_ivec3;\n\ttypedef vec<4, i32, lowp>\t\tlowp_ivec4;\n\n\ttypedef vec<1, i32, mediump>\tmediump_ivec1;\n\ttypedef vec<2, i32, mediump>\tmediump_ivec2;\n\ttypedef vec<3, i32, mediump>\tmediump_ivec3;\n\ttypedef vec<4, i32, mediump>\tmediump_ivec4;\n\n\ttypedef vec<1, i32, highp>\t\thighp_ivec1;\n\ttypedef vec<2, i32, highp>\t\thighp_ivec2;\n\ttypedef vec<3, i32, highp>\t\thighp_ivec3;\n\ttypedef vec<4, i32, highp>\t\thighp_ivec4;\n\n\ttypedef vec<1, i32, defaultp>\tivec1;\n\ttypedef vec<2, i32, defaultp>\tivec2;\n\ttypedef vec<3, i32, defaultp>\tivec3;\n\ttypedef vec<4, i32, defaultp>\tivec4;\n\n\ttypedef vec<1, i8, lowp>\t\tlowp_i8vec1;\n\ttypedef vec<2, i8, lowp>\t\tlowp_i8vec2;\n\ttypedef vec<3, i8, lowp>\t\tlowp_i8vec3;\n\ttypedef vec<4, i8, lowp>\t\tlowp_i8vec4;\n\n\ttypedef vec<1, i8, mediump>\t\tmediump_i8vec1;\n\ttypedef vec<2, i8, mediump>\t\tmediump_i8vec2;\n\ttypedef vec<3, i8, mediump>\t\tmediump_i8vec3;\n\ttypedef vec<4, i8, mediump>\t\tmediump_i8vec4;\n\n\ttypedef vec<1, i8, highp>\t\thighp_i8vec1;\n\ttypedef vec<2, i8, highp>\t\thighp_i8vec2;\n\ttypedef vec<3, i8, highp>\t\thighp_i8vec3;\n\ttypedef vec<4, i8, highp>\t\thighp_i8vec4;\n\n\ttypedef vec<1, i8, defaultp>\ti8vec1;\n\ttypedef vec<2, i8, defaultp>\ti8vec2;\n\ttypedef vec<3, i8, defaultp>\ti8vec3;\n\ttypedef vec<4, i8, defaultp>\ti8vec4;\n\n\ttypedef vec<1, i16, lowp>\t\tlowp_i16vec1;\n\ttypedef vec<2, i16, lowp>\t\tlowp_i16vec2;\n\ttypedef vec<3, i16, lowp>\t\tlowp_i16vec3;\n\ttypedef vec<4, i16, lowp>\t\tlowp_i16vec4;\n\n\ttypedef vec<1, i16, mediump>\tmediump_i16vec1;\n\ttypedef vec<2, i16, mediump>\tmediump_i16vec2;\n\ttypedef vec<3, i16, mediump>\tmediump_i16vec3;\n\ttypedef vec<4, i16, mediump>\tmediump_i16vec4;\n\n\ttypedef vec<1, i16, highp>\t\thighp_i16vec1;\n\ttypedef vec<2, i16, highp>\t\thighp_i16vec2;\n\ttypedef vec<3, i16, highp>\t\thighp_i16vec3;\n\ttypedef vec<4, i16, highp>\t\thighp_i16vec4;\n\n\ttypedef vec<1, i16, defaultp>\ti16vec1;\n\ttypedef vec<2, i16, defaultp>\ti16vec2;\n\ttypedef vec<3, i16, defaultp>\ti16vec3;\n\ttypedef vec<4, i16, defaultp>\ti16vec4;\n\n\ttypedef vec<1, i32, lowp>\t\tlowp_i32vec1;\n\ttypedef vec<2, i32, lowp>\t\tlowp_i32vec2;\n\ttypedef vec<3, i32, lowp>\t\tlowp_i32vec3;\n\ttypedef vec<4, i32, lowp>\t\tlowp_i32vec4;\n\n\ttypedef vec<1, i32, mediump>\tmediump_i32vec1;\n\ttypedef vec<2, i32, mediump>\tmediump_i32vec2;\n\ttypedef vec<3, i32, mediump>\tmediump_i32vec3;\n\ttypedef vec<4, i32, mediump>\tmediump_i32vec4;\n\n\ttypedef vec<1, i32, highp>\t\thighp_i32vec1;\n\ttypedef vec<2, i32, highp>\t\thighp_i32vec2;\n\ttypedef vec<3, i32, highp>\t\thighp_i32vec3;\n\ttypedef vec<4, i32, highp>\t\thighp_i32vec4;\n\n\ttypedef vec<1, i32, defaultp>\ti32vec1;\n\ttypedef vec<2, i32, defaultp>\ti32vec2;\n\ttypedef vec<3, i32, defaultp>\ti32vec3;\n\ttypedef vec<4, i32, defaultp>\ti32vec4;\n\n\ttypedef vec<1, i64, lowp>\t\tlowp_i64vec1;\n\ttypedef vec<2, i64, lowp>\t\tlowp_i64vec2;\n\ttypedef vec<3, i64, lowp>\t\tlowp_i64vec3;\n\ttypedef vec<4, i64, lowp>\t\tlowp_i64vec4;\n\n\ttypedef vec<1, i64, mediump>\tmediump_i64vec1;\n\ttypedef vec<2, i64, mediump>\tmediump_i64vec2;\n\ttypedef vec<3, i64, mediump>\tmediump_i64vec3;\n\ttypedef vec<4, i64, mediump>\tmediump_i64vec4;\n\n\ttypedef vec<1, i64, highp>\t\thighp_i64vec1;\n\ttypedef vec<2, i64, highp>\t\thighp_i64vec2;\n\ttypedef vec<3, i64, highp>\t\thighp_i64vec3;\n\ttypedef vec<4, i64, highp>\t\thighp_i64vec4;\n\n\ttypedef vec<1, i64, defaultp>\ti64vec1;\n\ttypedef vec<2, i64, defaultp>\ti64vec2;\n\ttypedef vec<3, i64, defaultp>\ti64vec3;\n\ttypedef vec<4, i64, defaultp>\ti64vec4;\n\n\t// Vector uint\n\n\ttypedef vec<1, u32, lowp>\t\tlowp_uvec1;\n\ttypedef vec<2, u32, lowp>\t\tlowp_uvec2;\n\ttypedef vec<3, u32, lowp>\t\tlowp_uvec3;\n\ttypedef vec<4, u32, lowp>\t\tlowp_uvec4;\n\n\ttypedef vec<1, u32, mediump>\tmediump_uvec1;\n\ttypedef vec<2, u32, mediump>\tmediump_uvec2;\n\ttypedef vec<3, u32, mediump>\tmediump_uvec3;\n\ttypedef vec<4, u32, mediump>\tmediump_uvec4;\n\n\ttypedef vec<1, u32, highp>\t\thighp_uvec1;\n\ttypedef vec<2, u32, highp>\t\thighp_uvec2;\n\ttypedef vec<3, u32, highp>\t\thighp_uvec3;\n\ttypedef vec<4, u32, highp>\t\thighp_uvec4;\n\n\ttypedef vec<1, u32, defaultp>\tuvec1;\n\ttypedef vec<2, u32, defaultp>\tuvec2;\n\ttypedef vec<3, u32, defaultp>\tuvec3;\n\ttypedef vec<4, u32, defaultp>\tuvec4;\n\n\ttypedef vec<1, u8, lowp>\t\tlowp_u8vec1;\n\ttypedef vec<2, u8, lowp>\t\tlowp_u8vec2;\n\ttypedef vec<3, u8, lowp>\t\tlowp_u8vec3;\n\ttypedef vec<4, u8, lowp>\t\tlowp_u8vec4;\n\n\ttypedef vec<1, u8, mediump>\t\tmediump_u8vec1;\n\ttypedef vec<2, u8, mediump>\t\tmediump_u8vec2;\n\ttypedef vec<3, u8, mediump>\t\tmediump_u8vec3;\n\ttypedef vec<4, u8, mediump>\t\tmediump_u8vec4;\n\n\ttypedef vec<1, u8, highp>\t\thighp_u8vec1;\n\ttypedef vec<2, u8, highp>\t\thighp_u8vec2;\n\ttypedef vec<3, u8, highp>\t\thighp_u8vec3;\n\ttypedef vec<4, u8, highp>\t\thighp_u8vec4;\n\n\ttypedef vec<1, u8, defaultp>\tu8vec1;\n\ttypedef vec<2, u8, defaultp>\tu8vec2;\n\ttypedef vec<3, u8, defaultp>\tu8vec3;\n\ttypedef vec<4, u8, defaultp>\tu8vec4;\n\n\ttypedef vec<1, u16, lowp>\t\tlowp_u16vec1;\n\ttypedef vec<2, u16, lowp>\t\tlowp_u16vec2;\n\ttypedef vec<3, u16, lowp>\t\tlowp_u16vec3;\n\ttypedef vec<4, u16, lowp>\t\tlowp_u16vec4;\n\n\ttypedef vec<1, u16, mediump>\tmediump_u16vec1;\n\ttypedef vec<2, u16, mediump>\tmediump_u16vec2;\n\ttypedef vec<3, u16, mediump>\tmediump_u16vec3;\n\ttypedef vec<4, u16, mediump>\tmediump_u16vec4;\n\n\ttypedef vec<1, u16, highp>\t\thighp_u16vec1;\n\ttypedef vec<2, u16, highp>\t\thighp_u16vec2;\n\ttypedef vec<3, u16, highp>\t\thighp_u16vec3;\n\ttypedef vec<4, u16, highp>\t\thighp_u16vec4;\n\n\ttypedef vec<1, u16, defaultp>\tu16vec1;\n\ttypedef vec<2, u16, defaultp>\tu16vec2;\n\ttypedef vec<3, u16, defaultp>\tu16vec3;\n\ttypedef vec<4, u16, defaultp>\tu16vec4;\n\n\ttypedef vec<1, u32, lowp>\t\tlowp_u32vec1;\n\ttypedef vec<2, u32, lowp>\t\tlowp_u32vec2;\n\ttypedef vec<3, u32, lowp>\t\tlowp_u32vec3;\n\ttypedef vec<4, u32, lowp>\t\tlowp_u32vec4;\n\n\ttypedef vec<1, u32, mediump>\tmediump_u32vec1;\n\ttypedef vec<2, u32, mediump>\tmediump_u32vec2;\n\ttypedef vec<3, u32, mediump>\tmediump_u32vec3;\n\ttypedef vec<4, u32, mediump>\tmediump_u32vec4;\n\n\ttypedef vec<1, u32, highp>\t\thighp_u32vec1;\n\ttypedef vec<2, u32, highp>\t\thighp_u32vec2;\n\ttypedef vec<3, u32, highp>\t\thighp_u32vec3;\n\ttypedef vec<4, u32, highp>\t\thighp_u32vec4;\n\n\ttypedef vec<1, u32, defaultp>\tu32vec1;\n\ttypedef vec<2, u32, defaultp>\tu32vec2;\n\ttypedef vec<3, u32, defaultp>\tu32vec3;\n\ttypedef vec<4, u32, defaultp>\tu32vec4;\n\n\ttypedef vec<1, u64, lowp>\t\tlowp_u64vec1;\n\ttypedef vec<2, u64, lowp>\t\tlowp_u64vec2;\n\ttypedef vec<3, u64, lowp>\t\tlowp_u64vec3;\n\ttypedef vec<4, u64, lowp>\t\tlowp_u64vec4;\n\n\ttypedef vec<1, u64, mediump>\tmediump_u64vec1;\n\ttypedef vec<2, u64, mediump>\tmediump_u64vec2;\n\ttypedef vec<3, u64, mediump>\tmediump_u64vec3;\n\ttypedef vec<4, u64, mediump>\tmediump_u64vec4;\n\n\ttypedef vec<1, u64, highp>\t\thighp_u64vec1;\n\ttypedef vec<2, u64, highp>\t\thighp_u64vec2;\n\ttypedef vec<3, u64, highp>\t\thighp_u64vec3;\n\ttypedef vec<4, u64, highp>\t\thighp_u64vec4;\n\n\ttypedef vec<1, u64, defaultp>\tu64vec1;\n\ttypedef vec<2, u64, defaultp>\tu64vec2;\n\ttypedef vec<3, u64, defaultp>\tu64vec3;\n\ttypedef vec<4, u64, defaultp>\tu64vec4;\n\n\t// Vector float\n\n\ttypedef vec<1, float, lowp>\t\t\tlowp_vec1;\n\ttypedef vec<2, float, lowp>\t\t\tlowp_vec2;\n\ttypedef vec<3, float, lowp>\t\t\tlowp_vec3;\n\ttypedef vec<4, float, lowp>\t\t\tlowp_vec4;\n\n\ttypedef vec<1, float, mediump>\t\tmediump_vec1;\n\ttypedef vec<2, float, mediump>\t\tmediump_vec2;\n\ttypedef vec<3, float, mediump>\t\tmediump_vec3;\n\ttypedef vec<4, float, mediump>\t\tmediump_vec4;\n\n\ttypedef vec<1, float, highp>\t\thighp_vec1;\n\ttypedef vec<2, float, highp>\t\thighp_vec2;\n\ttypedef vec<3, float, highp>\t\thighp_vec3;\n\ttypedef vec<4, float, highp>\t\thighp_vec4;\n\n\ttypedef vec<1, float, defaultp>\t\tvec1;\n\ttypedef vec<2, float, defaultp>\t\tvec2;\n\ttypedef vec<3, float, defaultp>\t\tvec3;\n\ttypedef vec<4, float, defaultp>\t\tvec4;\n\n\ttypedef vec<1, float, lowp>\t\t\tlowp_fvec1;\n\ttypedef vec<2, float, lowp>\t\t\tlowp_fvec2;\n\ttypedef vec<3, float, lowp>\t\t\tlowp_fvec3;\n\ttypedef vec<4, float, lowp>\t\t\tlowp_fvec4;\n\n\ttypedef vec<1, float, mediump>\t\tmediump_fvec1;\n\ttypedef vec<2, float, mediump>\t\tmediump_fvec2;\n\ttypedef vec<3, float, mediump>\t\tmediump_fvec3;\n\ttypedef vec<4, float, mediump>\t\tmediump_fvec4;\n\n\ttypedef vec<1, float, highp>\t\thighp_fvec1;\n\ttypedef vec<2, float, highp>\t\thighp_fvec2;\n\ttypedef vec<3, float, highp>\t\thighp_fvec3;\n\ttypedef vec<4, float, highp>\t\thighp_fvec4;\n\n\ttypedef vec<1, f32, defaultp>\t\tfvec1;\n\ttypedef vec<2, f32, defaultp>\t\tfvec2;\n\ttypedef vec<3, f32, defaultp>\t\tfvec3;\n\ttypedef vec<4, f32, defaultp>\t\tfvec4;\n\n\ttypedef vec<1, f32, lowp>\t\t\tlowp_f32vec1;\n\ttypedef vec<2, f32, lowp>\t\t\tlowp_f32vec2;\n\ttypedef vec<3, f32, lowp>\t\t\tlowp_f32vec3;\n\ttypedef vec<4, f32, lowp>\t\t\tlowp_f32vec4;\n\n\ttypedef vec<1, f32, mediump>\t\tmediump_f32vec1;\n\ttypedef vec<2, f32, mediump>\t\tmediump_f32vec2;\n\ttypedef vec<3, f32, mediump>\t\tmediump_f32vec3;\n\ttypedef vec<4, f32, mediump>\t\tmediump_f32vec4;\n\n\ttypedef vec<1, f32, highp>\t\t\thighp_f32vec1;\n\ttypedef vec<2, f32, highp>\t\t\thighp_f32vec2;\n\ttypedef vec<3, f32, highp>\t\t\thighp_f32vec3;\n\ttypedef vec<4, f32, highp>\t\t\thighp_f32vec4;\n\n\ttypedef vec<1, f32, defaultp>\t\tf32vec1;\n\ttypedef vec<2, f32, defaultp>\t\tf32vec2;\n\ttypedef vec<3, f32, defaultp>\t\tf32vec3;\n\ttypedef vec<4, f32, defaultp>\t\tf32vec4;\n\n\ttypedef vec<1, f64, lowp>\t\t\tlowp_dvec1;\n\ttypedef vec<2, f64, lowp>\t\t\tlowp_dvec2;\n\ttypedef vec<3, f64, lowp>\t\t\tlowp_dvec3;\n\ttypedef vec<4, f64, lowp>\t\t\tlowp_dvec4;\n\n\ttypedef vec<1, f64, mediump>\t\tmediump_dvec1;\n\ttypedef vec<2, f64, mediump>\t\tmediump_dvec2;\n\ttypedef vec<3, f64, mediump>\t\tmediump_dvec3;\n\ttypedef vec<4, f64, mediump>\t\tmediump_dvec4;\n\n\ttypedef vec<1, f64, highp>\t\t\thighp_dvec1;\n\ttypedef vec<2, f64, highp>\t\t\thighp_dvec2;\n\ttypedef vec<3, f64, highp>\t\t\thighp_dvec3;\n\ttypedef vec<4, f64, highp>\t\t\thighp_dvec4;\n\n\ttypedef vec<1, f64, defaultp>\t\tdvec1;\n\ttypedef vec<2, f64, defaultp>\t\tdvec2;\n\ttypedef vec<3, f64, defaultp>\t\tdvec3;\n\ttypedef vec<4, f64, defaultp>\t\tdvec4;\n\n\ttypedef vec<1, f64, lowp>\t\t\tlowp_f64vec1;\n\ttypedef vec<2, f64, lowp>\t\t\tlowp_f64vec2;\n\ttypedef vec<3, f64, lowp>\t\t\tlowp_f64vec3;\n\ttypedef vec<4, f64, lowp>\t\t\tlowp_f64vec4;\n\n\ttypedef vec<1, f64, mediump>\t\tmediump_f64vec1;\n\ttypedef vec<2, f64, mediump>\t\tmediump_f64vec2;\n\ttypedef vec<3, f64, mediump>\t\tmediump_f64vec3;\n\ttypedef vec<4, f64, mediump>\t\tmediump_f64vec4;\n\n\ttypedef vec<1, f64, highp>\t\t\thighp_f64vec1;\n\ttypedef vec<2, f64, highp>\t\t\thighp_f64vec2;\n\ttypedef vec<3, f64, highp>\t\t\thighp_f64vec3;\n\ttypedef vec<4, f64, highp>\t\t\thighp_f64vec4;\n\n\ttypedef vec<1, f64, defaultp>\t\tf64vec1;\n\ttypedef vec<2, f64, defaultp>\t\tf64vec2;\n\ttypedef vec<3, f64, defaultp>\t\tf64vec3;\n\ttypedef vec<4, f64, defaultp>\t\tf64vec4;\n\n\t// Matrix NxN\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_mat2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_mat3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_mat4;\n\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_mat2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_mat3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_mat4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_mat2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_mat3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_mat4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tmat2;\n\ttypedef mat<3, 3, f32, defaultp>\tmat3;\n\ttypedef mat<4, 4, f32, defaultp>\tmat4;\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_fmat2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_fmat3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_fmat4;\n\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_fmat2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_fmat3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_fmat4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_fmat2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_fmat3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_fmat4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tfmat2;\n\ttypedef mat<3, 3, f32, defaultp>\tfmat3;\n\ttypedef mat<4, 4, f32, defaultp>\tfmat4;\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_f32mat2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_f32mat3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_f32mat4;\n\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_f32mat2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_f32mat3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_f32mat4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_f32mat2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_f32mat3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_f32mat4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tf32mat2;\n\ttypedef mat<3, 3, f32, defaultp>\tf32mat3;\n\ttypedef mat<4, 4, f32, defaultp>\tf32mat4;\n\n\ttypedef mat<2, 2, f64, lowp>\t\tlowp_dmat2;\n\ttypedef mat<3, 3, f64, lowp>\t\tlowp_dmat3;\n\ttypedef mat<4, 4, f64, lowp>\t\tlowp_dmat4;\n\n\ttypedef mat<2, 2, f64, mediump>\t\tmediump_dmat2;\n\ttypedef mat<3, 3, f64, mediump>\t\tmediump_dmat3;\n\ttypedef mat<4, 4, f64, mediump>\t\tmediump_dmat4;\n\n\ttypedef mat<2, 2, f64, highp>\t\thighp_dmat2;\n\ttypedef mat<3, 3, f64, highp>\t\thighp_dmat3;\n\ttypedef mat<4, 4, f64, highp>\t\thighp_dmat4;\n\n\ttypedef mat<2, 2, f64, defaultp>\tdmat2;\n\ttypedef mat<3, 3, f64, defaultp>\tdmat3;\n\ttypedef mat<4, 4, f64, defaultp>\tdmat4;\n\n\ttypedef mat<2, 2, f64, lowp>\t\tlowp_f64mat2;\n\ttypedef mat<3, 3, f64, lowp>\t\tlowp_f64mat3;\n\ttypedef mat<4, 4, f64, lowp>\t\tlowp_f64mat4;\n\n\ttypedef mat<2, 2, f64, mediump>\t\tmediump_f64mat2;\n\ttypedef mat<3, 3, f64, mediump>\t\tmediump_f64mat3;\n\ttypedef mat<4, 4, f64, mediump>\t\tmediump_f64mat4;\n\n\ttypedef mat<2, 2, f64, highp>\t\thighp_f64mat2;\n\ttypedef mat<3, 3, f64, highp>\t\thighp_f64mat3;\n\ttypedef mat<4, 4, f64, highp>\t\thighp_f64mat4;\n\n\ttypedef mat<2, 2, f64, defaultp>\tf64mat2;\n\ttypedef mat<3, 3, f64, defaultp>\tf64mat3;\n\ttypedef mat<4, 4, f64, defaultp>\tf64mat4;\n\n\t// Matrix MxN\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_mat2x2;\n\ttypedef mat<2, 3, f32, lowp>\t\tlowp_mat2x3;\n\ttypedef mat<2, 4, f32, lowp>\t\tlowp_mat2x4;\n\ttypedef mat<3, 2, f32, lowp>\t\tlowp_mat3x2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_mat3x3;\n\ttypedef mat<3, 4, f32, lowp>\t\tlowp_mat3x4;\n\ttypedef mat<4, 2, f32, lowp>\t\tlowp_mat4x2;\n\ttypedef mat<4, 3, f32, lowp>\t\tlowp_mat4x3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_mat4x4;\n\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_mat2x2;\n\ttypedef mat<2, 3, f32, mediump>\t\tmediump_mat2x3;\n\ttypedef mat<2, 4, f32, mediump>\t\tmediump_mat2x4;\n\ttypedef mat<3, 2, f32, mediump>\t\tmediump_mat3x2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_mat3x3;\n\ttypedef mat<3, 4, f32, mediump>\t\tmediump_mat3x4;\n\ttypedef mat<4, 2, f32, mediump>\t\tmediump_mat4x2;\n\ttypedef mat<4, 3, f32, mediump>\t\tmediump_mat4x3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_mat4x4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_mat2x2;\n\ttypedef mat<2, 3, f32, highp>\t\thighp_mat2x3;\n\ttypedef mat<2, 4, f32, highp>\t\thighp_mat2x4;\n\ttypedef mat<3, 2, f32, highp>\t\thighp_mat3x2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_mat3x3;\n\ttypedef mat<3, 4, f32, highp>\t\thighp_mat3x4;\n\ttypedef mat<4, 2, f32, highp>\t\thighp_mat4x2;\n\ttypedef mat<4, 3, f32, highp>\t\thighp_mat4x3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_mat4x4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tmat2x2;\n\ttypedef mat<3, 2, f32, defaultp>\tmat3x2;\n\ttypedef mat<4, 2, f32, defaultp>\tmat4x2;\n\ttypedef mat<2, 3, f32, defaultp>\tmat2x3;\n\ttypedef mat<3, 3, f32, defaultp>\tmat3x3;\n\ttypedef mat<4, 3, f32, defaultp>\tmat4x3;\n\ttypedef mat<2, 4, f32, defaultp>\tmat2x4;\n\ttypedef mat<3, 4, f32, defaultp>\tmat3x4;\n\ttypedef mat<4, 4, f32, defaultp>\tmat4x4;\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_fmat2x2;\n\ttypedef mat<2, 3, f32, lowp>\t\tlowp_fmat2x3;\n\ttypedef mat<2, 4, f32, lowp>\t\tlowp_fmat2x4;\n\ttypedef mat<3, 2, f32, lowp>\t\tlowp_fmat3x2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_fmat3x3;\n\ttypedef mat<3, 4, f32, lowp>\t\tlowp_fmat3x4;\n\ttypedef mat<4, 2, f32, lowp>\t\tlowp_fmat4x2;\n\ttypedef mat<4, 3, f32, lowp>\t\tlowp_fmat4x3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_fmat4x4;\n\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_fmat2x2;\n\ttypedef mat<2, 3, f32, mediump>\t\tmediump_fmat2x3;\n\ttypedef mat<2, 4, f32, mediump>\t\tmediump_fmat2x4;\n\ttypedef mat<3, 2, f32, mediump>\t\tmediump_fmat3x2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_fmat3x3;\n\ttypedef mat<3, 4, f32, mediump>\t\tmediump_fmat3x4;\n\ttypedef mat<4, 2, f32, mediump>\t\tmediump_fmat4x2;\n\ttypedef mat<4, 3, f32, mediump>\t\tmediump_fmat4x3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_fmat4x4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_fmat2x2;\n\ttypedef mat<2, 3, f32, highp>\t\thighp_fmat2x3;\n\ttypedef mat<2, 4, f32, highp>\t\thighp_fmat2x4;\n\ttypedef mat<3, 2, f32, highp>\t\thighp_fmat3x2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_fmat3x3;\n\ttypedef mat<3, 4, f32, highp>\t\thighp_fmat3x4;\n\ttypedef mat<4, 2, f32, highp>\t\thighp_fmat4x2;\n\ttypedef mat<4, 3, f32, highp>\t\thighp_fmat4x3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_fmat4x4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tfmat2x2;\n\ttypedef mat<3, 2, f32, defaultp>\tfmat3x2;\n\ttypedef mat<4, 2, f32, defaultp>\tfmat4x2;\n\ttypedef mat<2, 3, f32, defaultp>\tfmat2x3;\n\ttypedef mat<3, 3, f32, defaultp>\tfmat3x3;\n\ttypedef mat<4, 3, f32, defaultp>\tfmat4x3;\n\ttypedef mat<2, 4, f32, defaultp>\tfmat2x4;\n\ttypedef mat<3, 4, f32, defaultp>\tfmat3x4;\n\ttypedef mat<4, 4, f32, defaultp>\tfmat4x4;\n\n\ttypedef mat<2, 2, f32, lowp>\t\tlowp_f32mat2x2;\n\ttypedef mat<2, 3, f32, lowp>\t\tlowp_f32mat2x3;\n\ttypedef mat<2, 4, f32, lowp>\t\tlowp_f32mat2x4;\n\ttypedef mat<3, 2, f32, lowp>\t\tlowp_f32mat3x2;\n\ttypedef mat<3, 3, f32, lowp>\t\tlowp_f32mat3x3;\n\ttypedef mat<3, 4, f32, lowp>\t\tlowp_f32mat3x4;\n\ttypedef mat<4, 2, f32, lowp>\t\tlowp_f32mat4x2;\n\ttypedef mat<4, 3, f32, lowp>\t\tlowp_f32mat4x3;\n\ttypedef mat<4, 4, f32, lowp>\t\tlowp_f32mat4x4;\n\t\n\ttypedef mat<2, 2, f32, mediump>\t\tmediump_f32mat2x2;\n\ttypedef mat<2, 3, f32, mediump>\t\tmediump_f32mat2x3;\n\ttypedef mat<2, 4, f32, mediump>\t\tmediump_f32mat2x4;\n\ttypedef mat<3, 2, f32, mediump>\t\tmediump_f32mat3x2;\n\ttypedef mat<3, 3, f32, mediump>\t\tmediump_f32mat3x3;\n\ttypedef mat<3, 4, f32, mediump>\t\tmediump_f32mat3x4;\n\ttypedef mat<4, 2, f32, mediump>\t\tmediump_f32mat4x2;\n\ttypedef mat<4, 3, f32, mediump>\t\tmediump_f32mat4x3;\n\ttypedef mat<4, 4, f32, mediump>\t\tmediump_f32mat4x4;\n\n\ttypedef mat<2, 2, f32, highp>\t\thighp_f32mat2x2;\n\ttypedef mat<2, 3, f32, highp>\t\thighp_f32mat2x3;\n\ttypedef mat<2, 4, f32, highp>\t\thighp_f32mat2x4;\n\ttypedef mat<3, 2, f32, highp>\t\thighp_f32mat3x2;\n\ttypedef mat<3, 3, f32, highp>\t\thighp_f32mat3x3;\n\ttypedef mat<3, 4, f32, highp>\t\thighp_f32mat3x4;\n\ttypedef mat<4, 2, f32, highp>\t\thighp_f32mat4x2;\n\ttypedef mat<4, 3, f32, highp>\t\thighp_f32mat4x3;\n\ttypedef mat<4, 4, f32, highp>\t\thighp_f32mat4x4;\n\n\ttypedef mat<2, 2, f32, defaultp>\tf32mat2x2;\n\ttypedef mat<3, 2, f32, defaultp>\tf32mat3x2;\n\ttypedef mat<4, 2, f32, defaultp>\tf32mat4x2;\n\ttypedef mat<2, 3, f32, defaultp>\tf32mat2x3;\n\ttypedef mat<3, 3, f32, defaultp>\tf32mat3x3;\n\ttypedef mat<4, 3, f32, defaultp>\tf32mat4x3;\n\ttypedef mat<2, 4, f32, defaultp>\tf32mat2x4;\n\ttypedef mat<3, 4, f32, defaultp>\tf32mat3x4;\n\ttypedef mat<4, 4, f32, defaultp>\tf32mat4x4;\n\n\ttypedef mat<2, 2, double, lowp>\t\tlowp_dmat2x2;\n\ttypedef mat<2, 3, double, lowp>\t\tlowp_dmat2x3;\n\ttypedef mat<2, 4, double, lowp>\t\tlowp_dmat2x4;\n\ttypedef mat<3, 2, double, lowp>\t\tlowp_dmat3x2;\n\ttypedef mat<3, 3, double, lowp>\t\tlowp_dmat3x3;\n\ttypedef mat<3, 4, double, lowp>\t\tlowp_dmat3x4;\n\ttypedef mat<4, 2, double, lowp>\t\tlowp_dmat4x2;\n\ttypedef mat<4, 3, double, lowp>\t\tlowp_dmat4x3;\n\ttypedef mat<4, 4, double, lowp>\t\tlowp_dmat4x4;\n\n\ttypedef mat<2, 2, double, mediump>\tmediump_dmat2x2;\n\ttypedef mat<2, 3, double, mediump>\tmediump_dmat2x3;\n\ttypedef mat<2, 4, double, mediump>\tmediump_dmat2x4;\n\ttypedef mat<3, 2, double, mediump>\tmediump_dmat3x2;\n\ttypedef mat<3, 3, double, mediump>\tmediump_dmat3x3;\n\ttypedef mat<3, 4, double, mediump>\tmediump_dmat3x4;\n\ttypedef mat<4, 2, double, mediump>\tmediump_dmat4x2;\n\ttypedef mat<4, 3, double, mediump>\tmediump_dmat4x3;\n\ttypedef mat<4, 4, double, mediump>\tmediump_dmat4x4;\n\n\ttypedef mat<2, 2, double, highp>\thighp_dmat2x2;\n\ttypedef mat<2, 3, double, highp>\thighp_dmat2x3;\n\ttypedef mat<2, 4, double, highp>\thighp_dmat2x4;\n\ttypedef mat<3, 2, double, highp>\thighp_dmat3x2;\n\ttypedef mat<3, 3, double, highp>\thighp_dmat3x3;\n\ttypedef mat<3, 4, double, highp>\thighp_dmat3x4;\n\ttypedef mat<4, 2, double, highp>\thighp_dmat4x2;\n\ttypedef mat<4, 3, double, highp>\thighp_dmat4x3;\n\ttypedef mat<4, 4, double, highp>\thighp_dmat4x4;\n\n\ttypedef mat<2, 2, double, defaultp>\tdmat2x2;\n\ttypedef mat<3, 2, double, defaultp>\tdmat3x2;\n\ttypedef mat<4, 2, double, defaultp>\tdmat4x2;\n\ttypedef mat<2, 3, double, defaultp>\tdmat2x3;\n\ttypedef mat<3, 3, double, defaultp>\tdmat3x3;\n\ttypedef mat<4, 3, double, defaultp>\tdmat4x3;\n\ttypedef mat<2, 4, double, defaultp>\tdmat2x4;\n\ttypedef mat<3, 4, double, defaultp>\tdmat3x4;\n\ttypedef mat<4, 4, double, defaultp>\tdmat4x4;\n\n\ttypedef mat<2, 2, f64, lowp>\t\tlowp_f64mat2x2;\n\ttypedef mat<2, 3, f64, lowp>\t\tlowp_f64mat2x3;\n\ttypedef mat<2, 4, f64, lowp>\t\tlowp_f64mat2x4;\n\ttypedef mat<3, 2, f64, lowp>\t\tlowp_f64mat3x2;\n\ttypedef mat<3, 3, f64, lowp>\t\tlowp_f64mat3x3;\n\ttypedef mat<3, 4, f64, lowp>\t\tlowp_f64mat3x4;\n\ttypedef mat<4, 2, f64, lowp>\t\tlowp_f64mat4x2;\n\ttypedef mat<4, 3, f64, lowp>\t\tlowp_f64mat4x3;\n\ttypedef mat<4, 4, f64, lowp>\t\tlowp_f64mat4x4;\n\n\ttypedef mat<2, 2, f64, mediump>\t\tmediump_f64mat2x2;\n\ttypedef mat<2, 3, f64, mediump>\t\tmediump_f64mat2x3;\n\ttypedef mat<2, 4, f64, mediump>\t\tmediump_f64mat2x4;\n\ttypedef mat<3, 2, f64, mediump>\t\tmediump_f64mat3x2;\n\ttypedef mat<3, 3, f64, mediump>\t\tmediump_f64mat3x3;\n\ttypedef mat<3, 4, f64, mediump>\t\tmediump_f64mat3x4;\n\ttypedef mat<4, 2, f64, mediump>\t\tmediump_f64mat4x2;\n\ttypedef mat<4, 3, f64, mediump>\t\tmediump_f64mat4x3;\n\ttypedef mat<4, 4, f64, mediump>\t\tmediump_f64mat4x4;\n\n\ttypedef mat<2, 2, f64, highp>\t\thighp_f64mat2x2;\n\ttypedef mat<2, 3, f64, highp>\t\thighp_f64mat2x3;\n\ttypedef mat<2, 4, f64, highp>\t\thighp_f64mat2x4;\n\ttypedef mat<3, 2, f64, highp>\t\thighp_f64mat3x2;\n\ttypedef mat<3, 3, f64, highp>\t\thighp_f64mat3x3;\n\ttypedef mat<3, 4, f64, highp>\t\thighp_f64mat3x4;\n\ttypedef mat<4, 2, f64, highp>\t\thighp_f64mat4x2;\n\ttypedef mat<4, 3, f64, highp>\t\thighp_f64mat4x3;\n\ttypedef mat<4, 4, f64, highp>\t\thighp_f64mat4x4;\n\n\ttypedef mat<2, 2, f64, defaultp>\tf64mat2x2;\n\ttypedef mat<3, 2, f64, defaultp>\tf64mat3x2;\n\ttypedef mat<4, 2, f64, defaultp>\tf64mat4x2;\n\ttypedef mat<2, 3, f64, defaultp>\tf64mat2x3;\n\ttypedef mat<3, 3, f64, defaultp>\tf64mat3x3;\n\ttypedef mat<4, 3, f64, defaultp>\tf64mat4x3;\n\ttypedef mat<2, 4, f64, defaultp>\tf64mat2x4;\n\ttypedef mat<3, 4, f64, defaultp>\tf64mat3x4;\n\ttypedef mat<4, 4, f64, defaultp>\tf64mat4x4;\n\n\t// Quaternion\n\n\ttypedef qua<float, lowp>\t\t\tlowp_quat;\n\ttypedef qua<float, mediump>\t\t\tmediump_quat;\n\ttypedef qua<float, highp>\t\t\thighp_quat;\n\ttypedef qua<float, defaultp>\t\tquat;\n\n\ttypedef qua<float, lowp>\t\t\tlowp_fquat;\n\ttypedef qua<float, mediump>\t\t\tmediump_fquat;\n\ttypedef qua<float, highp>\t\t\thighp_fquat;\n\ttypedef qua<float, defaultp>\t\tfquat;\n\n\ttypedef qua<f32, lowp>\t\t\t\tlowp_f32quat;\n\ttypedef qua<f32, mediump>\t\t\tmediump_f32quat;\n\ttypedef qua<f32, highp>\t\t\t\thighp_f32quat;\n\ttypedef qua<f32, defaultp>\t\t\tf32quat;\n\n\ttypedef qua<double, lowp>\t\t\tlowp_dquat;\n\ttypedef qua<double, mediump>\t\tmediump_dquat;\n\ttypedef qua<double, highp>\t\t\thighp_dquat;\n\ttypedef qua<double, defaultp>\t\tdquat;\n\n\ttypedef qua<f64, lowp>\t\t\t\tlowp_f64quat;\n\ttypedef qua<f64, mediump>\t\t\tmediump_f64quat;\n\ttypedef qua<f64, highp>\t\t\t\thighp_f64quat;\n\ttypedef qua<f64, defaultp>\t\t\tf64quat;\n}//namespace glm\n\n\n"
  },
  {
    "path": "libraries/glm/geometric.hpp",
    "content": "/// @ref core\n/// @file glm/geometric.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n///\n/// @defgroup core_func_geometric Geometric functions\n/// @ingroup core\n///\n/// These operate on vectors as vectors, not component-wise.\n///\n/// Include <glm/geometric.hpp> to use these core features.\n\n#pragma once\n\n#include \"detail/type_vec3.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_geometric\n\t/// @{\n\n\t/// Returns the length of x, i.e., sqrt(x * x).\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/length.xml\">GLSL length man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T length(vec<L, T, Q> const& x);\n\n\t/// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/distance.xml\">GLSL distance man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T distance(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);\n\n\t/// Returns the dot product of x and y, i.e., result = x * y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/dot.xml\">GLSL dot man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T dot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the cross product of x and y.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/cross.xml\">GLSL cross man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> cross(vec<3, T, Q> const& x, vec<3, T, Q> const& y);\n\n\t/// Returns a vector in the same direction as x but with length of 1.\n\t/// According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/normalize.xml\">GLSL normalize man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> normalize(vec<L, T, Q> const& x);\n\n\t/// If dot(Nref, I) < 0.0, return N, otherwise, return -N.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/faceforward.xml\">GLSL faceforward man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> faceforward(\n\t\tvec<L, T, Q> const& N,\n\t\tvec<L, T, Q> const& I,\n\t\tvec<L, T, Q> const& Nref);\n\n\t/// For the incident vector I and surface orientation N,\n\t/// returns the reflection direction : result = I - 2.0 * dot(N, I) * N.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/reflect.xml\">GLSL reflect man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> reflect(\n\t\tvec<L, T, Q> const& I,\n\t\tvec<L, T, Q> const& N);\n\n\t/// For the incident vector I and surface normal N,\n\t/// and the ratio of indices of refraction eta,\n\t/// return the refraction vector.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/refract.xml\">GLSL refract man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.5 Geometric Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> refract(\n\t\tvec<L, T, Q> const& I,\n\t\tvec<L, T, Q> const& N,\n\t\tT eta);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_geometric.inl\"\n"
  },
  {
    "path": "libraries/glm/glm.hpp",
    "content": "/// @ref core\n/// @file glm/glm.hpp\n///\n/// @defgroup core Core features\n///\n/// @brief Features that implement in C++ the GLSL specification as closely as possible.\n///\n/// The GLM core consists of C++ types that mirror GLSL types and\n/// C++ functions that mirror the GLSL functions.\n///\n/// The best documentation for GLM Core is the current GLSL specification,\n/// <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.clean.pdf\">version 4.2\n/// (pdf file)</a>.\n///\n/// GLM core functionalities require <glm/glm.hpp> to be included to be used.\n///\n///\n/// @defgroup core_vector Vector types\n///\n/// Vector types of two to four components with an exhaustive set of operators.\n///\n/// @ingroup core\n///\n///\n/// @defgroup core_vector_precision Vector types with precision qualifiers\n///\n/// @brief Vector types with precision qualifiers which may result in various precision in term of ULPs\n///\n/// GLSL allows defining qualifiers for particular variables.\n/// With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility,\n/// with OpenGL ES's GLSL, these qualifiers do have an effect.\n///\n/// C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing:\n/// a number of typedefs that use a particular qualifier.\n///\n/// None of these types make any guarantees about the actual qualifier used.\n///\n/// @ingroup core\n///\n///\n/// @defgroup core_matrix Matrix types\n///\n/// Matrix types of with C columns and R rows where C and R are values between 2 to 4 included.\n/// These types have exhaustive sets of operators.\n///\n/// @ingroup core\n///\n///\n/// @defgroup core_matrix_precision Matrix types with precision qualifiers\n///\n/// @brief Matrix types with precision qualifiers which may result in various precision in term of ULPs\n///\n/// GLSL allows defining qualifiers for particular variables.\n/// With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility,\n/// with OpenGL ES's GLSL, these qualifiers do have an effect.\n///\n/// C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing:\n/// a number of typedefs that use a particular qualifier.\n///\n/// None of these types make any guarantees about the actual qualifier used.\n///\n/// @ingroup core\n///\n///\n/// @defgroup ext Stable extensions\n///\n/// @brief Additional features not specified by GLSL specification.\n///\n/// EXT extensions are fully tested and documented.\n///\n/// Even if it's highly unrecommended, it's possible to include all the extensions at once by\n/// including <glm/ext.hpp>. Otherwise, each extension needs to be included  a specific file.\n///\n///\n/// @defgroup gtc Recommended extensions\n///\n/// @brief Additional features not specified by GLSL specification.\n///\n/// GTC extensions aim to be stable with tests and documentation.\n///\n/// Even if it's highly unrecommended, it's possible to include all the extensions at once by\n/// including <glm/ext.hpp>. Otherwise, each extension needs to be included  a specific file.\n///\n///\n/// @defgroup gtx Experimental extensions\n///\n/// @brief Experimental features not specified by GLSL specification.\n///\n/// Experimental extensions are useful functions and types, but the development of\n/// their API and functionality is not necessarily stable. They can change\n/// substantially between versions. Backwards compatibility is not much of an issue\n/// for them.\n///\n/// Even if it's highly unrecommended, it's possible to include all the extensions\n/// at once by including <glm/ext.hpp>. Otherwise, each extension needs to be\n/// included  a specific file.\n///\n/// @mainpage OpenGL Mathematics (GLM)\n/// - Website: <a href=\"https://glm.g-truc.net\">glm.g-truc.net</a>\n/// - <a href=\"modules.html\">GLM API documentation</a>\n/// - <a href=\"https://github.com/g-truc/glm/blob/master/manual.md\">GLM Manual</a>\n\n#include \"detail/_fixes.hpp\"\n\n#include \"detail/setup.hpp\"\n\n#pragma once\n\n#include <cmath>\n#include <climits>\n#include <cfloat>\n#include <limits>\n#include <cassert>\n#include \"fwd.hpp\"\n\n#include \"vec2.hpp\"\n#include \"vec3.hpp\"\n#include \"vec4.hpp\"\n#include \"mat2x2.hpp\"\n#include \"mat2x3.hpp\"\n#include \"mat2x4.hpp\"\n#include \"mat3x2.hpp\"\n#include \"mat3x3.hpp\"\n#include \"mat3x4.hpp\"\n#include \"mat4x2.hpp\"\n#include \"mat4x3.hpp\"\n#include \"mat4x4.hpp\"\n\n#include \"trigonometric.hpp\"\n#include \"exponential.hpp\"\n#include \"common.hpp\"\n#include \"packing.hpp\"\n#include \"geometric.hpp\"\n#include \"matrix.hpp\"\n#include \"vector_relational.hpp\"\n#include \"integer.hpp\"\n"
  },
  {
    "path": "libraries/glm/gtc/bitfield.hpp",
    "content": "/// @ref gtc_bitfield\n/// @file glm/gtc/bitfield.hpp\n///\n/// @see core (dependence)\n/// @see gtc_bitfield (dependence)\n///\n/// @defgroup gtc_bitfield GLM_GTC_bitfield\n/// @ingroup gtc\n///\n/// Include <glm/gtc/bitfield.hpp> to use the features of this extension.\n///\n/// Allow to perform bit operations on integer values\n\n#include \"../detail/setup.hpp\"\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_int_sized.hpp\"\n#include \"../ext/scalar_uint_sized.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_vectorize.hpp\"\n#include \"type_precision.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_bitfield extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_bitfield\n\t/// @{\n\n\t/// Build a mask of 'count' bits\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType mask(genIUType Bits);\n\n\t/// Build a mask of 'count' bits\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed and unsigned integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> mask(vec<L, T, Q> const& v);\n\n\t/// Rotate all bits to the right. All the bits dropped in the right side are inserted back on the left side.\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType bitfieldRotateRight(genIUType In, int Shift);\n\n\t/// Rotate all bits to the right. All the bits dropped in the right side are inserted back on the left side.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed and unsigned integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldRotateRight(vec<L, T, Q> const& In, int Shift);\n\n\t/// Rotate all bits to the left. All the bits dropped in the left side are inserted back on the right side.\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType bitfieldRotateLeft(genIUType In, int Shift);\n\n\t/// Rotate all bits to the left. All the bits dropped in the left side are inserted back on the right side.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed and unsigned integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldRotateLeft(vec<L, T, Q> const& In, int Shift);\n\n\t/// Set to 1 a range of bits.\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType bitfieldFillOne(genIUType Value, int FirstBit, int BitCount);\n\n\t/// Set to 1 a range of bits.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed and unsigned integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldFillOne(vec<L, T, Q> const& Value, int FirstBit, int BitCount);\n\n\t/// Set to 0 a range of bits.\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType bitfieldFillZero(genIUType Value, int FirstBit, int BitCount);\n\n\t/// Set to 0 a range of bits.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Signed and unsigned integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_bitfield\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldFillZero(vec<L, T, Q> const& Value, int FirstBit, int BitCount);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int16 bitfieldInterleave(int8 x, int8 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint16 bitfieldInterleave(uint8 x, uint8 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of v.x followed by the first bit of v.y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint16 bitfieldInterleave(u8vec2 const& v);\n\n\t/// Deinterleaves the bits of x.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL glm::u8vec2 bitfieldDeinterleave(glm::uint16 x);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int32 bitfieldInterleave(int16 x, int16 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint32 bitfieldInterleave(uint16 x, uint16 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of v.x followed by the first bit of v.y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint32 bitfieldInterleave(u16vec2 const& v);\n\n\t/// Deinterleaves the bits of x.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL glm::u16vec2 bitfieldDeinterleave(glm::uint32 x);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of x followed by the first bit of y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y);\n\n\t/// Interleaves the bits of x and y.\n\t/// The first bit is the first bit of v.x followed by the first bit of v.y.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint64 bitfieldInterleave(u32vec2 const& v);\n\n\t/// Deinterleaves the bits of x.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL glm::u32vec2 bitfieldDeinterleave(glm::uint64 x);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y, int32 z);\n\n\t/// Interleaves the bits of x, y and z.\n\t/// The first bit is the first bit of x followed by the first bit of y and the first bit of z.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z);\n\n\t/// Interleaves the bits of x, y, z and w.\n\t/// The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w);\n\n\t/// Interleaves the bits of x, y, z and w.\n\t/// The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w);\n\n\t/// Interleaves the bits of x, y, z and w.\n\t/// The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w);\n\n\t/// Interleaves the bits of x, y, z and w.\n\t/// The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w.\n\t/// The other bits are interleaved following the previous sequence.\n\t///\n\t/// @see gtc_bitfield\n\tGLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w);\n\n\t/// @}\n} //namespace glm\n\n#include \"bitfield.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/bitfield.inl",
    "content": "/// @ref gtc_bitfield\n\n#include \"../simd/integer.h\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<typename PARAM, typename RET>\n\tGLM_FUNC_DECL RET bitfieldInterleave(PARAM x, PARAM y);\n\n\ttemplate<typename PARAM, typename RET>\n\tGLM_FUNC_DECL RET bitfieldInterleave(PARAM x, PARAM y, PARAM z);\n\n\ttemplate<typename PARAM, typename RET>\n\tGLM_FUNC_DECL RET bitfieldInterleave(PARAM x, PARAM y, PARAM z, PARAM w);\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint16 bitfieldInterleave(glm::uint8 x, glm::uint8 y)\n\t{\n\t\tglm::uint16 REG1(x);\n\t\tglm::uint16 REG2(y);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint16>(0x0F0F);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint16>(0x0F0F);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint16>(0x3333);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint16>(0x3333);\n\n\t\tREG1 = ((REG1 <<  1) | REG1) & static_cast<glm::uint16>(0x5555);\n\t\tREG2 = ((REG2 <<  1) | REG2) & static_cast<glm::uint16>(0x5555);\n\n\t\treturn REG1 | static_cast<glm::uint16>(REG2 << 1);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint16 x, glm::uint16 y)\n\t{\n\t\tglm::uint32 REG1(x);\n\t\tglm::uint32 REG2(y);\n\n\t\tREG1 = ((REG1 <<  8) | REG1) & static_cast<glm::uint32>(0x00FF00FF);\n\t\tREG2 = ((REG2 <<  8) | REG2) & static_cast<glm::uint32>(0x00FF00FF);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint32>(0x0F0F0F0F);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint32>(0x0F0F0F0F);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint32>(0x33333333);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint32>(0x33333333);\n\n\t\tREG1 = ((REG1 <<  1) | REG1) & static_cast<glm::uint32>(0x55555555);\n\t\tREG2 = ((REG2 <<  1) | REG2) & static_cast<glm::uint32>(0x55555555);\n\n\t\treturn REG1 | (REG2 << 1);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y)\n\t{\n\t\tglm::uint64 REG1(x);\n\t\tglm::uint64 REG2(y);\n\n\t\tREG1 = ((REG1 << 16) | REG1) & static_cast<glm::uint64>(0x0000FFFF0000FFFFull);\n\t\tREG2 = ((REG2 << 16) | REG2) & static_cast<glm::uint64>(0x0000FFFF0000FFFFull);\n\n\t\tREG1 = ((REG1 <<  8) | REG1) & static_cast<glm::uint64>(0x00FF00FF00FF00FFull);\n\t\tREG2 = ((REG2 <<  8) | REG2) & static_cast<glm::uint64>(0x00FF00FF00FF00FFull);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint64>(0x0F0F0F0F0F0F0F0Full);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint64>(0x0F0F0F0F0F0F0F0Full);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint64>(0x3333333333333333ull);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint64>(0x3333333333333333ull);\n\n\t\tREG1 = ((REG1 <<  1) | REG1) & static_cast<glm::uint64>(0x5555555555555555ull);\n\t\tREG2 = ((REG2 <<  1) | REG2) & static_cast<glm::uint64>(0x5555555555555555ull);\n\n\t\treturn REG1 | (REG2 << 1);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z)\n\t{\n\t\tglm::uint32 REG1(x);\n\t\tglm::uint32 REG2(y);\n\t\tglm::uint32 REG3(z);\n\n\t\tREG1 = ((REG1 << 16) | REG1) & static_cast<glm::uint32>(0xFF0000FFu);\n\t\tREG2 = ((REG2 << 16) | REG2) & static_cast<glm::uint32>(0xFF0000FFu);\n\t\tREG3 = ((REG3 << 16) | REG3) & static_cast<glm::uint32>(0xFF0000FFu);\n\n\t\tREG1 = ((REG1 <<  8) | REG1) & static_cast<glm::uint32>(0x0F00F00Fu);\n\t\tREG2 = ((REG2 <<  8) | REG2) & static_cast<glm::uint32>(0x0F00F00Fu);\n\t\tREG3 = ((REG3 <<  8) | REG3) & static_cast<glm::uint32>(0x0F00F00Fu);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint32>(0xC30C30C3u);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint32>(0xC30C30C3u);\n\t\tREG3 = ((REG3 <<  4) | REG3) & static_cast<glm::uint32>(0xC30C30C3u);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint32>(0x49249249u);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint32>(0x49249249u);\n\t\tREG3 = ((REG3 <<  2) | REG3) & static_cast<glm::uint32>(0x49249249u);\n\n\t\treturn REG1 | (REG2 << 1) | (REG3 << 2);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z)\n\t{\n\t\tglm::uint64 REG1(x);\n\t\tglm::uint64 REG2(y);\n\t\tglm::uint64 REG3(z);\n\n\t\tREG1 = ((REG1 << 32) | REG1) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\t\tREG2 = ((REG2 << 32) | REG2) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\t\tREG3 = ((REG3 << 32) | REG3) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\n\t\tREG1 = ((REG1 << 16) | REG1) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\t\tREG2 = ((REG2 << 16) | REG2) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\t\tREG3 = ((REG3 << 16) | REG3) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\n\t\tREG1 = ((REG1 <<  8) | REG1) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\t\tREG2 = ((REG2 <<  8) | REG2) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\t\tREG3 = ((REG3 <<  8) | REG3) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\t\tREG3 = ((REG3 <<  4) | REG3) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint64>(0x9249249249249249ull);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint64>(0x9249249249249249ull);\n\t\tREG3 = ((REG3 <<  2) | REG3) & static_cast<glm::uint64>(0x9249249249249249ull);\n\n\t\treturn REG1 | (REG2 << 1) | (REG3 << 2);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y, glm::uint32 z)\n\t{\n\t\tglm::uint64 REG1(x);\n\t\tglm::uint64 REG2(y);\n\t\tglm::uint64 REG3(z);\n\n\t\tREG1 = ((REG1 << 32) | REG1) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\t\tREG2 = ((REG2 << 32) | REG2) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\t\tREG3 = ((REG3 << 32) | REG3) & static_cast<glm::uint64>(0xFFFF00000000FFFFull);\n\n\t\tREG1 = ((REG1 << 16) | REG1) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\t\tREG2 = ((REG2 << 16) | REG2) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\t\tREG3 = ((REG3 << 16) | REG3) & static_cast<glm::uint64>(0x00FF0000FF0000FFull);\n\n\t\tREG1 = ((REG1 <<  8) | REG1) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\t\tREG2 = ((REG2 <<  8) | REG2) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\t\tREG3 = ((REG3 <<  8) | REG3) & static_cast<glm::uint64>(0xF00F00F00F00F00Full);\n\n\t\tREG1 = ((REG1 <<  4) | REG1) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\t\tREG2 = ((REG2 <<  4) | REG2) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\t\tREG3 = ((REG3 <<  4) | REG3) & static_cast<glm::uint64>(0x30C30C30C30C30C3ull);\n\n\t\tREG1 = ((REG1 <<  2) | REG1) & static_cast<glm::uint64>(0x9249249249249249ull);\n\t\tREG2 = ((REG2 <<  2) | REG2) & static_cast<glm::uint64>(0x9249249249249249ull);\n\t\tREG3 = ((REG3 <<  2) | REG3) & static_cast<glm::uint64>(0x9249249249249249ull);\n\n\t\treturn REG1 | (REG2 << 1) | (REG3 << 2);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z, glm::uint8 w)\n\t{\n\t\tglm::uint32 REG1(x);\n\t\tglm::uint32 REG2(y);\n\t\tglm::uint32 REG3(z);\n\t\tglm::uint32 REG4(w);\n\n\t\tREG1 = ((REG1 << 12) | REG1) & static_cast<glm::uint32>(0x000F000Fu);\n\t\tREG2 = ((REG2 << 12) | REG2) & static_cast<glm::uint32>(0x000F000Fu);\n\t\tREG3 = ((REG3 << 12) | REG3) & static_cast<glm::uint32>(0x000F000Fu);\n\t\tREG4 = ((REG4 << 12) | REG4) & static_cast<glm::uint32>(0x000F000Fu);\n\n\t\tREG1 = ((REG1 <<  6) | REG1) & static_cast<glm::uint32>(0x03030303u);\n\t\tREG2 = ((REG2 <<  6) | REG2) & static_cast<glm::uint32>(0x03030303u);\n\t\tREG3 = ((REG3 <<  6) | REG3) & static_cast<glm::uint32>(0x03030303u);\n\t\tREG4 = ((REG4 <<  6) | REG4) & static_cast<glm::uint32>(0x03030303u);\n\n\t\tREG1 = ((REG1 <<  3) | REG1) & static_cast<glm::uint32>(0x11111111u);\n\t\tREG2 = ((REG2 <<  3) | REG2) & static_cast<glm::uint32>(0x11111111u);\n\t\tREG3 = ((REG3 <<  3) | REG3) & static_cast<glm::uint32>(0x11111111u);\n\t\tREG4 = ((REG4 <<  3) | REG4) & static_cast<glm::uint32>(0x11111111u);\n\n\t\treturn REG1 | (REG2 << 1) | (REG3 << 2) | (REG4 << 3);\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z, glm::uint16 w)\n\t{\n\t\tglm::uint64 REG1(x);\n\t\tglm::uint64 REG2(y);\n\t\tglm::uint64 REG3(z);\n\t\tglm::uint64 REG4(w);\n\n\t\tREG1 = ((REG1 << 24) | REG1) & static_cast<glm::uint64>(0x000000FF000000FFull);\n\t\tREG2 = ((REG2 << 24) | REG2) & static_cast<glm::uint64>(0x000000FF000000FFull);\n\t\tREG3 = ((REG3 << 24) | REG3) & static_cast<glm::uint64>(0x000000FF000000FFull);\n\t\tREG4 = ((REG4 << 24) | REG4) & static_cast<glm::uint64>(0x000000FF000000FFull);\n\n\t\tREG1 = ((REG1 << 12) | REG1) & static_cast<glm::uint64>(0x000F000F000F000Full);\n\t\tREG2 = ((REG2 << 12) | REG2) & static_cast<glm::uint64>(0x000F000F000F000Full);\n\t\tREG3 = ((REG3 << 12) | REG3) & static_cast<glm::uint64>(0x000F000F000F000Full);\n\t\tREG4 = ((REG4 << 12) | REG4) & static_cast<glm::uint64>(0x000F000F000F000Full);\n\n\t\tREG1 = ((REG1 <<  6) | REG1) & static_cast<glm::uint64>(0x0303030303030303ull);\n\t\tREG2 = ((REG2 <<  6) | REG2) & static_cast<glm::uint64>(0x0303030303030303ull);\n\t\tREG3 = ((REG3 <<  6) | REG3) & static_cast<glm::uint64>(0x0303030303030303ull);\n\t\tREG4 = ((REG4 <<  6) | REG4) & static_cast<glm::uint64>(0x0303030303030303ull);\n\n\t\tREG1 = ((REG1 <<  3) | REG1) & static_cast<glm::uint64>(0x1111111111111111ull);\n\t\tREG2 = ((REG2 <<  3) | REG2) & static_cast<glm::uint64>(0x1111111111111111ull);\n\t\tREG3 = ((REG3 <<  3) | REG3) & static_cast<glm::uint64>(0x1111111111111111ull);\n\t\tREG4 = ((REG4 <<  3) | REG4) & static_cast<glm::uint64>(0x1111111111111111ull);\n\n\t\treturn REG1 | (REG2 << 1) | (REG3 << 2) | (REG4 << 3);\n\t}\n}//namespace detail\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType mask(genIUType Bits)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIUType>::is_integer, \"'mask' accepts only integer values\");\n\n\t\treturn Bits >= sizeof(genIUType) * 8 ? ~static_cast<genIUType>(0) : (static_cast<genIUType>(1) << Bits) - static_cast<genIUType>(1);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mask(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'mask' accepts only integer values\");\n\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(mask, v);\n\t}\n\n\ttemplate<typename genIType>\n\tGLM_FUNC_QUALIFIER genIType bitfieldRotateRight(genIType In, int Shift)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIType>::is_integer, \"'bitfieldRotateRight' accepts only integer values\");\n\n\t\tint const BitSize = static_cast<genIType>(sizeof(genIType) * 8);\n\t\treturn (In << static_cast<genIType>(Shift)) | (In >> static_cast<genIType>(BitSize - Shift));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldRotateRight(vec<L, T, Q> const& In, int Shift)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitfieldRotateRight' accepts only integer values\");\n\n\t\tint const BitSize = static_cast<int>(sizeof(T) * 8);\n\t\treturn (In << static_cast<T>(Shift)) | (In >> static_cast<T>(BitSize - Shift));\n\t}\n\n\ttemplate<typename genIType>\n\tGLM_FUNC_QUALIFIER genIType bitfieldRotateLeft(genIType In, int Shift)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genIType>::is_integer, \"'bitfieldRotateLeft' accepts only integer values\");\n\n\t\tint const BitSize = static_cast<genIType>(sizeof(genIType) * 8);\n\t\treturn (In >> static_cast<genIType>(Shift)) | (In << static_cast<genIType>(BitSize - Shift));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldRotateLeft(vec<L, T, Q> const& In, int Shift)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_integer, \"'bitfieldRotateLeft' accepts only integer values\");\n\n\t\tint const BitSize = static_cast<int>(sizeof(T) * 8);\n\t\treturn (In >> static_cast<T>(Shift)) | (In << static_cast<T>(BitSize - Shift));\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)\n\t{\n\t\treturn Value | static_cast<genIUType>(mask(BitCount) << FirstBit);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldFillOne(vec<L, T, Q> const& Value, int FirstBit, int BitCount)\n\t{\n\t\treturn Value | static_cast<T>(mask(BitCount) << FirstBit);\n\t}\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)\n\t{\n\t\treturn Value & static_cast<genIUType>(~(mask(BitCount) << FirstBit));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> bitfieldFillZero(vec<L, T, Q> const& Value, int FirstBit, int BitCount)\n\t{\n\t\treturn Value & static_cast<T>(~(mask(BitCount) << FirstBit));\n\t}\n\n\tGLM_FUNC_QUALIFIER int16 bitfieldInterleave(int8 x, int8 y)\n\t{\n\t\tunion sign8\n\t\t{\n\t\t\tint8 i;\n\t\t\tuint8 u;\n\t\t} sign_x, sign_y;\n\n\t\tunion sign16\n\t\t{\n\t\t\tint16 i;\n\t\t\tuint16 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 bitfieldInterleave(uint8 x, uint8 y)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint16>(x, y);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 bitfieldInterleave(u8vec2 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint16>(v.x, v.y);\n\t}\n\n\tGLM_FUNC_QUALIFIER u8vec2 bitfieldDeinterleave(glm::uint16 x)\n\t{\n\t\tuint16 REG1(x);\n\t\tuint16 REG2(x >>= 1);\n\n\t\tREG1 = REG1 & static_cast<uint16>(0x5555);\n\t\tREG2 = REG2 & static_cast<uint16>(0x5555);\n\n\t\tREG1 = ((REG1 >> 1) | REG1) & static_cast<uint16>(0x3333);\n\t\tREG2 = ((REG2 >> 1) | REG2) & static_cast<uint16>(0x3333);\n\n\t\tREG1 = ((REG1 >> 2) | REG1) & static_cast<uint16>(0x0F0F);\n\t\tREG2 = ((REG2 >> 2) | REG2) & static_cast<uint16>(0x0F0F);\n\n\t\tREG1 = ((REG1 >> 4) | REG1) & static_cast<uint16>(0x00FF);\n\t\tREG2 = ((REG2 >> 4) | REG2) & static_cast<uint16>(0x00FF);\n\n\t\tREG1 = ((REG1 >> 8) | REG1) & static_cast<uint16>(0xFFFF);\n\t\tREG2 = ((REG2 >> 8) | REG2) & static_cast<uint16>(0xFFFF);\n\n\t\treturn glm::u8vec2(REG1, REG2);\n\t}\n\n\tGLM_FUNC_QUALIFIER int32 bitfieldInterleave(int16 x, int16 y)\n\t{\n\t\tunion sign16\n\t\t{\n\t\t\tint16 i;\n\t\t\tuint16 u;\n\t\t} sign_x, sign_y;\n\n\t\tunion sign32\n\t\t{\n\t\t\tint32 i;\n\t\t\tuint32 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint16 x, uint16 y)\n\t{\n\t\treturn detail::bitfieldInterleave<uint16, uint32>(x, y);\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(u16vec2 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint16, uint32>(v.x, v.y);\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::u16vec2 bitfieldDeinterleave(glm::uint32 x)\n\t{\n\t\tglm::uint32 REG1(x);\n\t\tglm::uint32 REG2(x >>= 1);\n\n\t\tREG1 = REG1 & static_cast<glm::uint32>(0x55555555);\n\t\tREG2 = REG2 & static_cast<glm::uint32>(0x55555555);\n\n\t\tREG1 = ((REG1 >> 1) | REG1) & static_cast<glm::uint32>(0x33333333);\n\t\tREG2 = ((REG2 >> 1) | REG2) & static_cast<glm::uint32>(0x33333333);\n\n\t\tREG1 = ((REG1 >> 2) | REG1) & static_cast<glm::uint32>(0x0F0F0F0F);\n\t\tREG2 = ((REG2 >> 2) | REG2) & static_cast<glm::uint32>(0x0F0F0F0F);\n\n\t\tREG1 = ((REG1 >> 4) | REG1) & static_cast<glm::uint32>(0x00FF00FF);\n\t\tREG2 = ((REG2 >> 4) | REG2) & static_cast<glm::uint32>(0x00FF00FF);\n\n\t\tREG1 = ((REG1 >> 8) | REG1) & static_cast<glm::uint32>(0x0000FFFF);\n\t\tREG2 = ((REG2 >> 8) | REG2) & static_cast<glm::uint32>(0x0000FFFF);\n\n\t\treturn glm::u16vec2(REG1, REG2);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 bitfieldInterleave(int32 x, int32 y)\n\t{\n\t\tunion sign32\n\t\t{\n\t\t\tint32 i;\n\t\t\tuint32 u;\n\t\t} sign_x, sign_y;\n\n\t\tunion sign64\n\t\t{\n\t\t\tint64 i;\n\t\t\tuint64 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(x, y);\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(u32vec2 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(v.x, v.y);\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::u32vec2 bitfieldDeinterleave(glm::uint64 x)\n\t{\n\t\tglm::uint64 REG1(x);\n\t\tglm::uint64 REG2(x >>= 1);\n\n\t\tREG1 = REG1 & static_cast<glm::uint64>(0x5555555555555555ull);\n\t\tREG2 = REG2 & static_cast<glm::uint64>(0x5555555555555555ull);\n\n\t\tREG1 = ((REG1 >> 1) | REG1) & static_cast<glm::uint64>(0x3333333333333333ull);\n\t\tREG2 = ((REG2 >> 1) | REG2) & static_cast<glm::uint64>(0x3333333333333333ull);\n\n\t\tREG1 = ((REG1 >> 2) | REG1) & static_cast<glm::uint64>(0x0F0F0F0F0F0F0F0Full);\n\t\tREG2 = ((REG2 >> 2) | REG2) & static_cast<glm::uint64>(0x0F0F0F0F0F0F0F0Full);\n\n\t\tREG1 = ((REG1 >> 4) | REG1) & static_cast<glm::uint64>(0x00FF00FF00FF00FFull);\n\t\tREG2 = ((REG2 >> 4) | REG2) & static_cast<glm::uint64>(0x00FF00FF00FF00FFull);\n\n\t\tREG1 = ((REG1 >> 8) | REG1) & static_cast<glm::uint64>(0x0000FFFF0000FFFFull);\n\t\tREG2 = ((REG2 >> 8) | REG2) & static_cast<glm::uint64>(0x0000FFFF0000FFFFull);\n\n\t\tREG1 = ((REG1 >> 16) | REG1) & static_cast<glm::uint64>(0x00000000FFFFFFFFull);\n\t\tREG2 = ((REG2 >> 16) | REG2) & static_cast<glm::uint64>(0x00000000FFFFFFFFull);\n\n\t\treturn glm::u32vec2(REG1, REG2);\n\t}\n\n\tGLM_FUNC_QUALIFIER int32 bitfieldInterleave(int8 x, int8 y, int8 z)\n\t{\n\t\tunion sign8\n\t\t{\n\t\t\tint8 i;\n\t\t\tuint8 u;\n\t\t} sign_x, sign_y, sign_z;\n\n\t\tunion sign32\n\t\t{\n\t\t\tint32 i;\n\t\t\tuint32 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tsign_z.i = z;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u, sign_z.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint32>(x, y, z);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 bitfieldInterleave(u8vec3 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint32>(v.x, v.y, v.z);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z)\n\t{\n\t\tunion sign16\n\t\t{\n\t\t\tint16 i;\n\t\t\tuint16 u;\n\t\t} sign_x, sign_y, sign_z;\n\n\t\tunion sign64\n\t\t{\n\t\t\tint64 i;\n\t\t\tuint64 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tsign_z.i = z;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u, sign_z.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(x, y, z);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u16vec3 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(v.x, v.y, v.z);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 bitfieldInterleave(int32 x, int32 y, int32 z)\n\t{\n\t\tunion sign16\n\t\t{\n\t\t\tint32 i;\n\t\t\tuint32 u;\n\t\t} sign_x, sign_y, sign_z;\n\n\t\tunion sign64\n\t\t{\n\t\t\tint64 i;\n\t\t\tuint64 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tsign_z.i = z;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u, sign_z.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(x, y, z);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u32vec3 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint32, uint64>(v.x, v.y, v.z);\n\t}\n\n\tGLM_FUNC_QUALIFIER int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)\n\t{\n\t\tunion sign8\n\t\t{\n\t\t\tint8 i;\n\t\t\tuint8 u;\n\t\t} sign_x, sign_y, sign_z, sign_w;\n\n\t\tunion sign32\n\t\t{\n\t\t\tint32 i;\n\t\t\tuint32 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tsign_z.i = z;\n\t\tsign_w.i = w;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u, sign_z.u, sign_w.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint32>(x, y, z, w);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 bitfieldInterleave(u8vec4 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint8, uint32>(v.x, v.y, v.z, v.w);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)\n\t{\n\t\tunion sign16\n\t\t{\n\t\t\tint16 i;\n\t\t\tuint16 u;\n\t\t} sign_x, sign_y, sign_z, sign_w;\n\n\t\tunion sign64\n\t\t{\n\t\t\tint64 i;\n\t\t\tuint64 u;\n\t\t} result;\n\n\t\tsign_x.i = x;\n\t\tsign_y.i = y;\n\t\tsign_z.i = z;\n\t\tsign_w.i = w;\n\t\tresult.u = bitfieldInterleave(sign_x.u, sign_y.u, sign_z.u, sign_w.u);\n\n\t\treturn result.i;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)\n\t{\n\t\treturn detail::bitfieldInterleave<uint16, uint64>(x, y, z, w);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u16vec4 const& v)\n\t{\n\t\treturn detail::bitfieldInterleave<uint16, uint64>(v.x, v.y, v.z, v.w);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/color_space.hpp",
    "content": "/// @ref gtc_color_space\n/// @file glm/gtc/color_space.hpp\n///\n/// @see core (dependence)\n/// @see gtc_color_space (dependence)\n///\n/// @defgroup gtc_color_space GLM_GTC_color_space\n/// @ingroup gtc\n///\n/// Include <glm/gtc/color_space.hpp> to use the features of this extension.\n///\n/// Allow to perform bit operations on integer values\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../exponential.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_color_space extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_color_space\n\t/// @{\n\n\t/// Convert a linear color to sRGB color using a standard gamma correction.\n\t/// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear);\n\n\t/// Convert a linear color to sRGB color using a custom gamma correction.\n\t/// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear, T Gamma);\n\n\t/// Convert a sRGB color to linear color using a standard gamma correction.\n\t/// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB);\n\n\t/// Convert a sRGB color to linear color using a custom gamma correction.\n\t// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB, T Gamma);\n\n\t/// @}\n} //namespace glm\n\n#include \"color_space.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/color_space.inl",
    "content": "/// @ref gtc_color_space\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_rgbToSrgb\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& ColorRGB, T GammaCorrection)\n\t\t{\n\t\t\tvec<L, T, Q> const ClampedColor(clamp(ColorRGB, static_cast<T>(0), static_cast<T>(1)));\n\n\t\t\treturn mix(\n\t\t\t\tpow(ClampedColor, vec<L, T, Q>(GammaCorrection)) * static_cast<T>(1.055) - static_cast<T>(0.055),\n\t\t\t\tClampedColor * static_cast<T>(12.92),\n\t\t\t\tlessThan(ClampedColor, vec<L, T, Q>(static_cast<T>(0.0031308))));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_rgbToSrgb<4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, T, Q> call(vec<4, T, Q> const& ColorRGB, T GammaCorrection)\n\t\t{\n\t\t\treturn vec<4, T, Q>(compute_rgbToSrgb<3, T, Q>::call(vec<3, T, Q>(ColorRGB), GammaCorrection), ColorRGB.w);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_srgbToRgb\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& ColorSRGB, T Gamma)\n\t\t{\n\t\t\treturn mix(\n\t\t\t\tpow((ColorSRGB + static_cast<T>(0.055)) * static_cast<T>(0.94786729857819905213270142180095), vec<L, T, Q>(Gamma)),\n\t\t\t\tColorSRGB * static_cast<T>(0.07739938080495356037151702786378),\n\t\t\t\tlessThanEqual(ColorSRGB, vec<L, T, Q>(static_cast<T>(0.04045))));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_srgbToRgb<4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, T, Q> call(vec<4, T, Q> const& ColorSRGB, T Gamma)\n\t\t{\n\t\t\treturn vec<4, T, Q>(compute_srgbToRgb<3, T, Q>::call(vec<3, T, Q>(ColorSRGB), Gamma), ColorSRGB.w);\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear)\n\t{\n\t\treturn detail::compute_rgbToSrgb<L, T, Q>::call(ColorLinear, static_cast<T>(0.41666));\n\t}\n\n\t// Based on Ian Taylor http://chilliant.blogspot.fr/2012/08/srgb-approximations-for-hlsl.html\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER vec<3, float, lowp> convertLinearToSRGB(vec<3, float, lowp> const& ColorLinear)\n\t{\n\t\tvec<3, float, lowp> S1 = sqrt(ColorLinear);\n\t\tvec<3, float, lowp> S2 = sqrt(S1);\n\t\tvec<3, float, lowp> S3 = sqrt(S2);\n\t\treturn 0.662002687f * S1 + 0.684122060f * S2 - 0.323583601f * S3 - 0.0225411470f * ColorLinear;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear, T Gamma)\n\t{\n\t\treturn detail::compute_rgbToSrgb<L, T, Q>::call(ColorLinear, static_cast<T>(1) / Gamma);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB)\n\t{\n\t\treturn detail::compute_srgbToRgb<L, T, Q>::call(ColorSRGB, static_cast<T>(2.4));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB, T Gamma)\n\t{\n\t\treturn detail::compute_srgbToRgb<L, T, Q>::call(ColorSRGB, Gamma);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/constants.hpp",
    "content": "/// @ref gtc_constants\n/// @file glm/gtc/constants.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_constants GLM_GTC_constants\n/// @ingroup gtc\n///\n/// Include <glm/gtc/constants.hpp> to use the features of this extension.\n///\n/// Provide a list of constants and precomputed useful values.\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_constants.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_constants extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_constants\n\t/// @{\n\n\t/// Return 0.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType zero();\n\n\t/// Return 1.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType one();\n\n\t/// Return pi * 2.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType two_pi();\n\n\t/// Return square root of pi.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_pi();\n\n\t/// Return pi / 2.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType half_pi();\n\n\t/// Return pi / 2 * 3.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi();\n\n\t/// Return pi / 4.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi();\n\n\t/// Return 1 / pi.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi();\n\n\t/// Return 1 / (pi * 2).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi();\n\n\t/// Return 2 / pi.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi();\n\n\t/// Return 4 / pi.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi();\n\n\t/// Return 2 / sqrt(pi).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi();\n\n\t/// Return 1 / sqrt(2).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two();\n\n\t/// Return sqrt(pi / 2).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi();\n\n\t/// Return sqrt(2 * pi).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi();\n\n\t/// Return sqrt(ln(4)).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four();\n\n\t/// Return e constant.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType e();\n\n\t/// Return Euler's constant.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType euler();\n\n\t/// Return sqrt(2).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_two();\n\n\t/// Return sqrt(3).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_three();\n\n\t/// Return sqrt(5).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType root_five();\n\n\t/// Return ln(2).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType ln_two();\n\n\t/// Return ln(10).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten();\n\n\t/// Return ln(ln(2)).\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two();\n\n\t/// Return 1 / 3.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType third();\n\n\t/// Return 2 / 3.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds();\n\n\t/// Return the golden ratio constant.\n\t/// @see gtc_constants\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio();\n\n\t/// @}\n} //namespace glm\n\n#include \"constants.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/constants.inl",
    "content": "/// @ref gtc_constants\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType zero()\n\t{\n\t\treturn genType(0);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one()\n\t{\n\t\treturn genType(1);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_pi()\n\t{\n\t\treturn genType(6.28318530717958647692528676655900576);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_pi()\n\t{\n\t\treturn genType(1.772453850905516027);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType half_pi()\n\t{\n\t\treturn genType(1.57079632679489661923132169163975144);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType three_over_two_pi()\n\t{\n\t\treturn genType(4.71238898038468985769396507491925432);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType quarter_pi()\n\t{\n\t\treturn genType(0.785398163397448309615660845819875721);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_pi()\n\t{\n\t\treturn genType(0.318309886183790671537767526745028724);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_two_pi()\n\t{\n\t\treturn genType(0.159154943091895335768883763372514362);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_over_pi()\n\t{\n\t\treturn genType(0.636619772367581343075535053490057448);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType four_over_pi()\n\t{\n\t\treturn genType(1.273239544735162686151070106980114898);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_over_root_pi()\n\t{\n\t\treturn genType(1.12837916709551257389615890312154517);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType one_over_root_two()\n\t{\n\t\treturn genType(0.707106781186547524400844362104849039);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_half_pi()\n\t{\n\t\treturn genType(1.253314137315500251);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_two_pi()\n\t{\n\t\treturn genType(2.506628274631000502);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_ln_four()\n\t{\n\t\treturn genType(1.17741002251547469);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType e()\n\t{\n\t\treturn genType(2.71828182845904523536);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType euler()\n\t{\n\t\treturn genType(0.577215664901532860606);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_two()\n\t{\n\t\treturn genType(1.41421356237309504880168872420969808);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_three()\n\t{\n\t\treturn genType(1.73205080756887729352744634150587236);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType root_five()\n\t{\n\t\treturn genType(2.23606797749978969640917366873127623);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType ln_two()\n\t{\n\t\treturn genType(0.693147180559945309417232121458176568);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType ln_ten()\n\t{\n\t\treturn genType(2.30258509299404568401799145468436421);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType ln_ln_two()\n\t{\n\t\treturn genType(-0.3665129205816643);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType third()\n\t{\n\t\treturn genType(0.3333333333333333333333333333333333333333);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType two_thirds()\n\t{\n\t\treturn genType(0.666666666666666666666666666666666666667);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR genType golden_ratio()\n\t{\n\t\treturn genType(1.61803398874989484820458683436563811);\n\t}\n\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/epsilon.hpp",
    "content": "/// @ref gtc_epsilon\n/// @file glm/gtc/epsilon.hpp\n///\n/// @see core (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtc_epsilon GLM_GTC_epsilon\n/// @ingroup gtc\n///\n/// Include <glm/gtc/epsilon.hpp> to use the features of this extension.\n///\n/// Comparison functions for a user defined epsilon values.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_epsilon extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_epsilon\n\t/// @{\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is satisfied.\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool epsilonEqual(genType const& x, genType const& y, genType const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| < epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon);\n\n\t/// Returns the component-wise comparison of |x - y| >= epsilon.\n\t/// True if this expression is not satisfied.\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool epsilonNotEqual(genType const& x, genType const& y, genType const& epsilon);\n\n\t/// @}\n}//namespace glm\n\n#include \"epsilon.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/epsilon.inl",
    "content": "/// @ref gtc_epsilon\n\n// Dependency:\n#include \"../vector_relational.hpp\"\n#include \"../common.hpp\"\n\nnamespace glm\n{\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER bool epsilonEqual\n\t(\n\t\tfloat const& x,\n\t\tfloat const& y,\n\t\tfloat const& epsilon\n\t)\n\t{\n\t\treturn abs(x - y) < epsilon;\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER bool epsilonEqual\n\t(\n\t\tdouble const& x,\n\t\tdouble const& y,\n\t\tdouble const& epsilon\n\t)\n\t{\n\t\treturn abs(x - y) < epsilon;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon)\n\t{\n\t\treturn lessThan(abs(x - y), vec<L, T, Q>(epsilon));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)\n\t{\n\t\treturn lessThan(abs(x - y), vec<L, T, Q>(epsilon));\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER bool epsilonNotEqual(float const& x, float const& y, float const& epsilon)\n\t{\n\t\treturn abs(x - y) >= epsilon;\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER bool epsilonNotEqual(double const& x, double const& y, double const& epsilon)\n\t{\n\t\treturn abs(x - y) >= epsilon;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon)\n\t{\n\t\treturn greaterThanEqual(abs(x - y), vec<L, T, Q>(epsilon));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)\n\t{\n\t\treturn greaterThanEqual(abs(x - y), vec<L, T, Q>(epsilon));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> epsilonEqual(qua<T, Q> const& x, qua<T, Q> const& y, T const& epsilon)\n\t{\n\t\tvec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);\n\t\treturn lessThan(abs(v), vec<4, T, Q>(epsilon));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> epsilonNotEqual(qua<T, Q> const& x, qua<T, Q> const& y, T const& epsilon)\n\t{\n\t\tvec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w);\n\t\treturn greaterThanEqual(abs(v), vec<4, T, Q>(epsilon));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/integer.hpp",
    "content": "/// @ref gtc_integer\n/// @file glm/gtc/integer.hpp\n///\n/// @see core (dependence)\n/// @see gtc_integer (dependence)\n///\n/// @defgroup gtc_integer GLM_GTC_integer\n/// @ingroup gtc\n///\n/// Include <glm/gtc/integer.hpp> to use the features of this extension.\n///\n/// @brief Allow to perform bit operations on integer values\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../common.hpp\"\n#include \"../integer.hpp\"\n#include \"../exponential.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_integer extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_integer\n\t/// @{\n\n\t/// Returns the log2 of x for integer values. Usefull to compute mipmap count from the texture size.\n\t/// @see gtc_integer\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType log2(genIUType x);\n\n\t/// Returns a value equal to the nearest integer to x.\n\t/// The fraction 0.5 will round in a direction chosen by the\n\t/// implementation, presumably the direction that is fastest.\n\t///\n\t/// @param x The values of the argument must be greater or equal to zero.\n\t/// @tparam T floating point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml\">GLSL round man page</a>\n\t/// @see gtc_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> iround(vec<L, T, Q> const& x);\n\n\t/// Returns a value equal to the nearest integer to x.\n\t/// The fraction 0.5 will round in a direction chosen by the\n\t/// implementation, presumably the direction that is fastest.\n\t///\n\t/// @param x The values of the argument must be greater or equal to zero.\n\t/// @tparam T floating point scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/round.xml\">GLSL round man page</a>\n\t/// @see gtc_integer\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uint, Q> uround(vec<L, T, Q> const& x);\n\n\t/// @}\n} //namespace glm\n\n#include \"integer.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/integer.inl",
    "content": "/// @ref gtc_integer\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_log2<L, T, Q, false, Aligned>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\t//Equivalent to return findMSB(vec); but save one function call in ASM with VC\n\t\t\t//return findMSB(vec);\n\t\t\treturn vec<L, T, Q>(detail::compute_findMSB_vec<L, T, Q, sizeof(T) * 8>::call(v));\n\t\t}\n\t};\n\n#\tif GLM_HAS_BITSCAN_WINDOWS\n\t\ttemplate<qualifier Q, bool Aligned>\n\t\tstruct compute_log2<4, int, Q, false, Aligned>\n\t\t{\n\t\t\tGLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& v)\n\t\t\t{\n\t\t\t\tvec<4, int, Q> Result;\n\t\t\t\t_BitScanReverse(reinterpret_cast<unsigned long*>(&Result.x), v.x);\n\t\t\t\t_BitScanReverse(reinterpret_cast<unsigned long*>(&Result.y), v.y);\n\t\t\t\t_BitScanReverse(reinterpret_cast<unsigned long*>(&Result.z), v.z);\n\t\t\t\t_BitScanReverse(reinterpret_cast<unsigned long*>(&Result.w), v.w);\n\t\t\t\treturn Result;\n\t\t\t}\n\t\t};\n#\tendif//GLM_HAS_BITSCAN_WINDOWS\n}//namespace detail\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER int iround(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'iround' only accept floating-point inputs\");\n\t\tassert(static_cast<genType>(0.0) <= x);\n\n\t\treturn static_cast<int>(x + static_cast<genType>(0.5));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> iround(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'iround' only accept floating-point inputs\");\n\t\tassert(all(lessThanEqual(vec<L, T, Q>(0), x)));\n\n\t\treturn vec<L, int, Q>(x + static_cast<T>(0.5));\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER uint uround(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'uround' only accept floating-point inputs\");\n\t\tassert(static_cast<genType>(0.0) <= x);\n\n\t\treturn static_cast<uint>(x + static_cast<genType>(0.5));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uint, Q> uround(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'uround' only accept floating-point inputs\");\n\t\tassert(all(lessThanEqual(vec<L, T, Q>(0), x)));\n\n\t\treturn vec<L, uint, Q>(x + static_cast<T>(0.5));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_access.hpp",
    "content": "/// @ref gtc_matrix_access\n/// @file glm/gtc/matrix_access.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_matrix_access GLM_GTC_matrix_access\n/// @ingroup gtc\n///\n/// Include <glm/gtc/matrix_access.hpp> to use the features of this extension.\n///\n/// Defines functions to access rows or columns of a matrix easily.\n\n#pragma once\n\n// Dependency:\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_matrix_access extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_matrix_access\n\t/// @{\n\n\t/// Get a specific row of a matrix.\n\t/// @see gtc_matrix_access\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::row_type row(\n\t\tgenType const& m,\n\t\tlength_t index);\n\n\t/// Set a specific row to a matrix.\n\t/// @see gtc_matrix_access\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType row(\n\t\tgenType const& m,\n\t\tlength_t index,\n\t\ttypename genType::row_type const& x);\n\n\t/// Get a specific column of a matrix.\n\t/// @see gtc_matrix_access\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::col_type column(\n\t\tgenType const& m,\n\t\tlength_t index);\n\n\t/// Set a specific column to a matrix.\n\t/// @see gtc_matrix_access\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType column(\n\t\tgenType const& m,\n\t\tlength_t index,\n\t\ttypename genType::col_type const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_access.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_access.inl",
    "content": "/// @ref gtc_matrix_access\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType row\n\t(\n\t\tgenType const& m,\n\t\tlength_t index,\n\t\ttypename genType::row_type const& x\n\t)\n\t{\n\t\tassert(index >= 0 && index < m[0].length());\n\n\t\tgenType Result = m;\n\t\tfor(length_t i = 0; i < m.length(); ++i)\n\t\t\tResult[i][index] = x[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER typename genType::row_type row\n\t(\n\t\tgenType const& m,\n\t\tlength_t index\n\t)\n\t{\n\t\tassert(index >= 0 && index < m[0].length());\n\n\t\ttypename genType::row_type Result(0);\n\t\tfor(length_t i = 0; i < m.length(); ++i)\n\t\t\tResult[i] = m[i][index];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType column\n\t(\n\t\tgenType const& m,\n\t\tlength_t index,\n\t\ttypename genType::col_type const& x\n\t)\n\t{\n\t\tassert(index >= 0 && index < m.length());\n\n\t\tgenType Result = m;\n\t\tResult[index] = x;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER typename genType::col_type column\n\t(\n\t\tgenType const& m,\n\t\tlength_t index\n\t)\n\t{\n\t\tassert(index >= 0 && index < m.length());\n\n\t\treturn m[index];\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_integer.hpp",
    "content": "/// @ref gtc_matrix_integer\n/// @file glm/gtc/matrix_integer.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_matrix_integer GLM_GTC_matrix_integer\n/// @ingroup gtc\n///\n/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.\n///\n/// Defines a number of matrices with integer types.\n\n#pragma once\n\n// Dependency:\n#include \"../mat2x2.hpp\"\n#include \"../mat2x3.hpp\"\n#include \"../mat2x4.hpp\"\n#include \"../mat3x2.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../mat3x4.hpp\"\n#include \"../mat4x2.hpp\"\n#include \"../mat4x3.hpp\"\n#include \"../mat4x4.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_matrix_integer extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_matrix_integer\n\t/// @{\n\n\t/// High-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, highp>\t\t\t\thighp_imat2;\n\n\t/// High-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, highp>\t\t\t\thighp_imat3;\n\n\t/// High-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, highp>\t\t\t\thighp_imat4;\n\n\t/// High-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, highp>\t\t\t\thighp_imat2x2;\n\n\t/// High-qualifier signed integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, int, highp>\t\t\t\thighp_imat2x3;\n\n\t/// High-qualifier signed integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, int, highp>\t\t\t\thighp_imat2x4;\n\n\t/// High-qualifier signed integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, int, highp>\t\t\t\thighp_imat3x2;\n\n\t/// High-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, highp>\t\t\t\thighp_imat3x3;\n\n\t/// High-qualifier signed integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, int, highp>\t\t\t\thighp_imat3x4;\n\n\t/// High-qualifier signed integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, int, highp>\t\t\t\thighp_imat4x2;\n\n\t/// High-qualifier signed integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, int, highp>\t\t\t\thighp_imat4x3;\n\n\t/// High-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, highp>\t\t\t\thighp_imat4x4;\n\n\n\t/// Medium-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, mediump>\t\t\tmediump_imat2;\n\n\t/// Medium-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, mediump>\t\t\tmediump_imat3;\n\n\t/// Medium-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, mediump>\t\t\tmediump_imat4;\n\n\n\t/// Medium-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, mediump>\t\t\tmediump_imat2x2;\n\n\t/// Medium-qualifier signed integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, int, mediump>\t\t\tmediump_imat2x3;\n\n\t/// Medium-qualifier signed integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, int, mediump>\t\t\tmediump_imat2x4;\n\n\t/// Medium-qualifier signed integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, int, mediump>\t\t\tmediump_imat3x2;\n\n\t/// Medium-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, mediump>\t\t\tmediump_imat3x3;\n\n\t/// Medium-qualifier signed integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, int, mediump>\t\t\tmediump_imat3x4;\n\n\t/// Medium-qualifier signed integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, int, mediump>\t\t\tmediump_imat4x2;\n\n\t/// Medium-qualifier signed integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, int, mediump>\t\t\tmediump_imat4x3;\n\n\t/// Medium-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, mediump>\t\t\tmediump_imat4x4;\n\n\n\t/// Low-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, lowp>\t\t\t\tlowp_imat2;\n\n\t/// Low-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, lowp>\t\t\t\tlowp_imat3;\n\n\t/// Low-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, lowp>\t\t\t\tlowp_imat4;\n\n\n\t/// Low-qualifier signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, int, lowp>\t\t\t\tlowp_imat2x2;\n\n\t/// Low-qualifier signed integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, int, lowp>\t\t\t\tlowp_imat2x3;\n\n\t/// Low-qualifier signed integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, int, lowp>\t\t\t\tlowp_imat2x4;\n\n\t/// Low-qualifier signed integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, int, lowp>\t\t\t\tlowp_imat3x2;\n\n\t/// Low-qualifier signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, int, lowp>\t\t\t\tlowp_imat3x3;\n\n\t/// Low-qualifier signed integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, int, lowp>\t\t\t\tlowp_imat3x4;\n\n\t/// Low-qualifier signed integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, int, lowp>\t\t\t\tlowp_imat4x2;\n\n\t/// Low-qualifier signed integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, int, lowp>\t\t\t\tlowp_imat4x3;\n\n\t/// Low-qualifier signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, int, lowp>\t\t\t\tlowp_imat4x4;\n\n\n\t/// High-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, highp>\t\t\t\thighp_umat2;\n\n\t/// High-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, highp>\t\t\t\thighp_umat3;\n\n\t/// High-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, highp>\t\t\t\thighp_umat4;\n\n\t/// High-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, highp>\t\t\t\thighp_umat2x2;\n\n\t/// High-qualifier unsigned integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, uint, highp>\t\t\t\thighp_umat2x3;\n\n\t/// High-qualifier unsigned integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, uint, highp>\t\t\t\thighp_umat2x4;\n\n\t/// High-qualifier unsigned integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, uint, highp>\t\t\t\thighp_umat3x2;\n\n\t/// High-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, highp>\t\t\t\thighp_umat3x3;\n\n\t/// High-qualifier unsigned integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, uint, highp>\t\t\t\thighp_umat3x4;\n\n\t/// High-qualifier unsigned integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, uint, highp>\t\t\t\thighp_umat4x2;\n\n\t/// High-qualifier unsigned integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, uint, highp>\t\t\t\thighp_umat4x3;\n\n\t/// High-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, highp>\t\t\t\thighp_umat4x4;\n\n\n\t/// Medium-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, mediump>\t\t\tmediump_umat2;\n\n\t/// Medium-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, mediump>\t\t\tmediump_umat3;\n\n\t/// Medium-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, mediump>\t\t\tmediump_umat4;\n\n\n\t/// Medium-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, mediump>\t\t\tmediump_umat2x2;\n\n\t/// Medium-qualifier unsigned integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, uint, mediump>\t\t\tmediump_umat2x3;\n\n\t/// Medium-qualifier unsigned integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, uint, mediump>\t\t\tmediump_umat2x4;\n\n\t/// Medium-qualifier unsigned integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, uint, mediump>\t\t\tmediump_umat3x2;\n\n\t/// Medium-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, mediump>\t\t\tmediump_umat3x3;\n\n\t/// Medium-qualifier unsigned integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, uint, mediump>\t\t\tmediump_umat3x4;\n\n\t/// Medium-qualifier unsigned integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, uint, mediump>\t\t\tmediump_umat4x2;\n\n\t/// Medium-qualifier unsigned integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, uint, mediump>\t\t\tmediump_umat4x3;\n\n\t/// Medium-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, mediump>\t\t\tmediump_umat4x4;\n\n\n\t/// Low-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, lowp>\t\t\t\tlowp_umat2;\n\n\t/// Low-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, lowp>\t\t\t\tlowp_umat3;\n\n\t/// Low-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, lowp>\t\t\t\tlowp_umat4;\n\n\n\t/// Low-qualifier unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 2, uint, lowp>\t\t\t\tlowp_umat2x2;\n\n\t/// Low-qualifier unsigned integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 3, uint, lowp>\t\t\t\tlowp_umat2x3;\n\n\t/// Low-qualifier unsigned integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<2, 4, uint, lowp>\t\t\t\tlowp_umat2x4;\n\n\t/// Low-qualifier unsigned integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 2, uint, lowp>\t\t\t\tlowp_umat3x2;\n\n\t/// Low-qualifier unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 3, uint, lowp>\t\t\t\tlowp_umat3x3;\n\n\t/// Low-qualifier unsigned integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<3, 4, uint, lowp>\t\t\t\tlowp_umat3x4;\n\n\t/// Low-qualifier unsigned integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 2, uint, lowp>\t\t\t\tlowp_umat4x2;\n\n\t/// Low-qualifier unsigned integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 3, uint, lowp>\t\t\t\tlowp_umat4x3;\n\n\t/// Low-qualifier unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mat<4, 4, uint, lowp>\t\t\t\tlowp_umat4x4;\n\n#if(defined(GLM_PRECISION_HIGHP_INT))\n\ttypedef highp_imat2\t\t\t\t\t\t\t\timat2;\n\ttypedef highp_imat3\t\t\t\t\t\t\t\timat3;\n\ttypedef highp_imat4\t\t\t\t\t\t\t\timat4;\n\ttypedef highp_imat2x2\t\t\t\t\t\t\timat2x2;\n\ttypedef highp_imat2x3\t\t\t\t\t\t\timat2x3;\n\ttypedef highp_imat2x4\t\t\t\t\t\t\timat2x4;\n\ttypedef highp_imat3x2\t\t\t\t\t\t\timat3x2;\n\ttypedef highp_imat3x3\t\t\t\t\t\t\timat3x3;\n\ttypedef highp_imat3x4\t\t\t\t\t\t\timat3x4;\n\ttypedef highp_imat4x2\t\t\t\t\t\t\timat4x2;\n\ttypedef highp_imat4x3\t\t\t\t\t\t\timat4x3;\n\ttypedef highp_imat4x4\t\t\t\t\t\t\timat4x4;\n#elif(defined(GLM_PRECISION_LOWP_INT))\n\ttypedef lowp_imat2\t\t\t\t\t\t\t\timat2;\n\ttypedef lowp_imat3\t\t\t\t\t\t\t\timat3;\n\ttypedef lowp_imat4\t\t\t\t\t\t\t\timat4;\n\ttypedef lowp_imat2x2\t\t\t\t\t\t\timat2x2;\n\ttypedef lowp_imat2x3\t\t\t\t\t\t\timat2x3;\n\ttypedef lowp_imat2x4\t\t\t\t\t\t\timat2x4;\n\ttypedef lowp_imat3x2\t\t\t\t\t\t\timat3x2;\n\ttypedef lowp_imat3x3\t\t\t\t\t\t\timat3x3;\n\ttypedef lowp_imat3x4\t\t\t\t\t\t\timat3x4;\n\ttypedef lowp_imat4x2\t\t\t\t\t\t\timat4x2;\n\ttypedef lowp_imat4x3\t\t\t\t\t\t\timat4x3;\n\ttypedef lowp_imat4x4\t\t\t\t\t\t\timat4x4;\n#else //if(defined(GLM_PRECISION_MEDIUMP_INT))\n\n\t/// Signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat2\t\t\t\t\t\t\timat2;\n\n\t/// Signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat3\t\t\t\t\t\t\timat3;\n\n\t/// Signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat4\t\t\t\t\t\t\timat4;\n\n\t/// Signed integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat2x2\t\t\t\t\t\t\timat2x2;\n\n\t/// Signed integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat2x3\t\t\t\t\t\t\timat2x3;\n\n\t/// Signed integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat2x4\t\t\t\t\t\t\timat2x4;\n\n\t/// Signed integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat3x2\t\t\t\t\t\t\timat3x2;\n\n\t/// Signed integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat3x3\t\t\t\t\t\t\timat3x3;\n\n\t/// Signed integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat3x4\t\t\t\t\t\t\timat3x4;\n\n\t/// Signed integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat4x2\t\t\t\t\t\t\timat4x2;\n\n\t/// Signed integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat4x3\t\t\t\t\t\t\timat4x3;\n\n\t/// Signed integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_imat4x4\t\t\t\t\t\t\timat4x4;\n#endif//GLM_PRECISION\n\n#if(defined(GLM_PRECISION_HIGHP_UINT))\n\ttypedef highp_umat2\t\t\t\t\t\t\t\tumat2;\n\ttypedef highp_umat3\t\t\t\t\t\t\t\tumat3;\n\ttypedef highp_umat4\t\t\t\t\t\t\t\tumat4;\n\ttypedef highp_umat2x2\t\t\t\t\t\t\tumat2x2;\n\ttypedef highp_umat2x3\t\t\t\t\t\t\tumat2x3;\n\ttypedef highp_umat2x4\t\t\t\t\t\t\tumat2x4;\n\ttypedef highp_umat3x2\t\t\t\t\t\t\tumat3x2;\n\ttypedef highp_umat3x3\t\t\t\t\t\t\tumat3x3;\n\ttypedef highp_umat3x4\t\t\t\t\t\t\tumat3x4;\n\ttypedef highp_umat4x2\t\t\t\t\t\t\tumat4x2;\n\ttypedef highp_umat4x3\t\t\t\t\t\t\tumat4x3;\n\ttypedef highp_umat4x4\t\t\t\t\t\t\tumat4x4;\n#elif(defined(GLM_PRECISION_LOWP_UINT))\n\ttypedef lowp_umat2\t\t\t\t\t\t\t\tumat2;\n\ttypedef lowp_umat3\t\t\t\t\t\t\t\tumat3;\n\ttypedef lowp_umat4\t\t\t\t\t\t\t\tumat4;\n\ttypedef lowp_umat2x2\t\t\t\t\t\t\tumat2x2;\n\ttypedef lowp_umat2x3\t\t\t\t\t\t\tumat2x3;\n\ttypedef lowp_umat2x4\t\t\t\t\t\t\tumat2x4;\n\ttypedef lowp_umat3x2\t\t\t\t\t\t\tumat3x2;\n\ttypedef lowp_umat3x3\t\t\t\t\t\t\tumat3x3;\n\ttypedef lowp_umat3x4\t\t\t\t\t\t\tumat3x4;\n\ttypedef lowp_umat4x2\t\t\t\t\t\t\tumat4x2;\n\ttypedef lowp_umat4x3\t\t\t\t\t\t\tumat4x3;\n\ttypedef lowp_umat4x4\t\t\t\t\t\t\tumat4x4;\n#else //if(defined(GLM_PRECISION_MEDIUMP_UINT))\n\n\t/// Unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat2\t\t\t\t\t\t\tumat2;\n\n\t/// Unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat3\t\t\t\t\t\t\tumat3;\n\n\t/// Unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat4\t\t\t\t\t\t\tumat4;\n\n\t/// Unsigned integer 2x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat2x2\t\t\t\t\t\t\tumat2x2;\n\n\t/// Unsigned integer 2x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat2x3\t\t\t\t\t\t\tumat2x3;\n\n\t/// Unsigned integer 2x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat2x4\t\t\t\t\t\t\tumat2x4;\n\n\t/// Unsigned integer 3x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat3x2\t\t\t\t\t\t\tumat3x2;\n\n\t/// Unsigned integer 3x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat3x3\t\t\t\t\t\t\tumat3x3;\n\n\t/// Unsigned integer 3x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat3x4\t\t\t\t\t\t\tumat3x4;\n\n\t/// Unsigned integer 4x2 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat4x2\t\t\t\t\t\t\tumat4x2;\n\n\t/// Unsigned integer 4x3 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat4x3\t\t\t\t\t\t\tumat4x3;\n\n\t/// Unsigned integer 4x4 matrix.\n\t/// @see gtc_matrix_integer\n\ttypedef mediump_umat4x4\t\t\t\t\t\t\tumat4x4;\n#endif//GLM_PRECISION\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_inverse.hpp",
    "content": "/// @ref gtc_matrix_inverse\n/// @file glm/gtc/matrix_inverse.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_matrix_inverse GLM_GTC_matrix_inverse\n/// @ingroup gtc\n///\n/// Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.\n///\n/// Defines additional matrix inverting functions.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../matrix.hpp\"\n#include \"../mat2x2.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../mat4x4.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_matrix_inverse extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_matrix_inverse\n\t/// @{\n\n\t/// Fast matrix inverse for affine matrix.\n\t///\n\t/// @param m Input matrix to invert.\n\t/// @tparam genType Squared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly innacurate.\n\t/// @see gtc_matrix_inverse\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType affineInverse(genType const& m);\n\n\t/// Compute the inverse transpose of a matrix.\n\t///\n\t/// @param m Input matrix to invert transpose.\n\t/// @tparam genType Squared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly innacurate.\n\t/// @see gtc_matrix_inverse\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType inverseTranspose(genType const& m);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_inverse.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_inverse.inl",
    "content": "/// @ref gtc_matrix_inverse\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> affineInverse(mat<3, 3, T, Q> const& m)\n\t{\n\t\tmat<2, 2, T, Q> const Inv(inverse(mat<2, 2, T, Q>(m)));\n\n\t\treturn mat<3, 3, T, Q>(\n\t\t\tvec<3, T, Q>(Inv[0], static_cast<T>(0)),\n\t\t\tvec<3, T, Q>(Inv[1], static_cast<T>(0)),\n\t\t\tvec<3, T, Q>(-Inv * vec<2, T, Q>(m[2]), static_cast<T>(1)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> affineInverse(mat<4, 4, T, Q> const& m)\n\t{\n\t\tmat<3, 3, T, Q> const Inv(inverse(mat<3, 3, T, Q>(m)));\n\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tvec<4, T, Q>(Inv[0], static_cast<T>(0)),\n\t\t\tvec<4, T, Q>(Inv[1], static_cast<T>(0)),\n\t\t\tvec<4, T, Q>(Inv[2], static_cast<T>(0)),\n\t\t\tvec<4, T, Q>(-Inv * vec<3, T, Q>(m[3]), static_cast<T>(1)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> inverseTranspose(mat<2, 2, T, Q> const& m)\n\t{\n\t\tT Determinant = m[0][0] * m[1][1] - m[1][0] * m[0][1];\n\n\t\tmat<2, 2, T, Q> Inverse(\n\t\t\t+ m[1][1] / Determinant,\n\t\t\t- m[0][1] / Determinant,\n\t\t\t- m[1][0] / Determinant,\n\t\t\t+ m[0][0] / Determinant);\n\n\t\treturn Inverse;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> inverseTranspose(mat<3, 3, T, Q> const& m)\n\t{\n\t\tT Determinant =\n\t\t\t+ m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])\n\t\t\t- m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])\n\t\t\t+ m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]);\n\n\t\tmat<3, 3, T, Q> Inverse;\n\t\tInverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]);\n\t\tInverse[0][1] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]);\n\t\tInverse[0][2] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]);\n\t\tInverse[1][0] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]);\n\t\tInverse[1][1] = + (m[0][0] * m[2][2] - m[2][0] * m[0][2]);\n\t\tInverse[1][2] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]);\n\t\tInverse[2][0] = + (m[0][1] * m[1][2] - m[1][1] * m[0][2]);\n\t\tInverse[2][1] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]);\n\t\tInverse[2][2] = + (m[0][0] * m[1][1] - m[1][0] * m[0][1]);\n\t\tInverse /= Determinant;\n\n\t\treturn Inverse;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> inverseTranspose(mat<4, 4, T, Q> const& m)\n\t{\n\t\tT SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\tT SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\tT SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\tT SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\tT SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\tT SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\tT SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\tT SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\tT SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\tT SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\tT SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\tT SubFactor11 = m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\tT SubFactor12 = m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\t\tT SubFactor13 = m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\t\tT SubFactor14 = m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\t\tT SubFactor15 = m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\t\tT SubFactor16 = m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\t\tT SubFactor17 = m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\tmat<4, 4, T, Q> Inverse;\n\t\tInverse[0][0] = + (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02);\n\t\tInverse[0][1] = - (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04);\n\t\tInverse[0][2] = + (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05);\n\t\tInverse[0][3] = - (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05);\n\n\t\tInverse[1][0] = - (m[0][1] * SubFactor00 - m[0][2] * SubFactor01 + m[0][3] * SubFactor02);\n\t\tInverse[1][1] = + (m[0][0] * SubFactor00 - m[0][2] * SubFactor03 + m[0][3] * SubFactor04);\n\t\tInverse[1][2] = - (m[0][0] * SubFactor01 - m[0][1] * SubFactor03 + m[0][3] * SubFactor05);\n\t\tInverse[1][3] = + (m[0][0] * SubFactor02 - m[0][1] * SubFactor04 + m[0][2] * SubFactor05);\n\n\t\tInverse[2][0] = + (m[0][1] * SubFactor06 - m[0][2] * SubFactor07 + m[0][3] * SubFactor08);\n\t\tInverse[2][1] = - (m[0][0] * SubFactor06 - m[0][2] * SubFactor09 + m[0][3] * SubFactor10);\n\t\tInverse[2][2] = + (m[0][0] * SubFactor07 - m[0][1] * SubFactor09 + m[0][3] * SubFactor11);\n\t\tInverse[2][3] = - (m[0][0] * SubFactor08 - m[0][1] * SubFactor10 + m[0][2] * SubFactor11);\n\n\t\tInverse[3][0] = - (m[0][1] * SubFactor12 - m[0][2] * SubFactor13 + m[0][3] * SubFactor14);\n\t\tInverse[3][1] = + (m[0][0] * SubFactor12 - m[0][2] * SubFactor15 + m[0][3] * SubFactor16);\n\t\tInverse[3][2] = - (m[0][0] * SubFactor13 - m[0][1] * SubFactor15 + m[0][3] * SubFactor17);\n\t\tInverse[3][3] = + (m[0][0] * SubFactor14 - m[0][1] * SubFactor16 + m[0][2] * SubFactor17);\n\n\t\tT Determinant =\n\t\t\t+ m[0][0] * Inverse[0][0]\n\t\t\t+ m[0][1] * Inverse[0][1]\n\t\t\t+ m[0][2] * Inverse[0][2]\n\t\t\t+ m[0][3] * Inverse[0][3];\n\n\t\tInverse /= Determinant;\n\n\t\treturn Inverse;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_transform.hpp",
    "content": "/// @ref gtc_matrix_transform\n/// @file glm/gtc/matrix_transform.hpp\n///\n/// @see core (dependence)\n/// @see gtx_transform\n/// @see gtx_transform2\n///\n/// @defgroup gtc_matrix_transform GLM_GTC_matrix_transform\n/// @ingroup gtc\n///\n/// Include <glm/gtc/matrix_transform.hpp> to use the features of this extension.\n///\n/// Defines functions that generate common transformation matrices.\n///\n/// The matrices generated by this extension use standard OpenGL fixed-function\n/// conventions. For example, the lookAt function generates a transform from world\n/// space into the specific eye space that the projective matrix functions\n/// (perspective, ortho, etc) are designed to expect. The OpenGL compatibility\n/// specifications defines the particular layout of this eye space.\n\n#pragma once\n\n// Dependencies\n#include \"../mat4x4.hpp\"\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../ext/matrix_projection.hpp\"\n#include \"../ext/matrix_clip_space.hpp\"\n#include \"../ext/matrix_transform.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_matrix_transform extension included\")\n#endif\n\n#include \"matrix_transform.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/matrix_transform.inl",
    "content": "#include \"../geometric.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../matrix.hpp\"\n"
  },
  {
    "path": "libraries/glm/gtc/noise.hpp",
    "content": "/// @ref gtc_noise\n/// @file glm/gtc/noise.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_noise GLM_GTC_noise\n/// @ingroup gtc\n///\n/// Include <glm/gtc/noise.hpp> to use the features of this extension.\n///\n/// Defines 2D, 3D and 4D procedural noise functions\n/// Based on the work of Stefan Gustavson and Ashima Arts on \"webgl-noise\":\n/// https://github.com/ashima/webgl-noise\n/// Following Stefan Gustavson's paper \"Simplex noise demystified\":\n/// http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_noise.hpp\"\n#include \"../geometric.hpp\"\n#include \"../common.hpp\"\n#include \"../vector_relational.hpp\"\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_noise extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_noise\n\t/// @{\n\n\t/// Classic perlin noise.\n\t/// @see gtc_noise\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T perlin(\n\t\tvec<L, T, Q> const& p);\n\n\t/// Periodic perlin noise.\n\t/// @see gtc_noise\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T perlin(\n\t\tvec<L, T, Q> const& p,\n\t\tvec<L, T, Q> const& rep);\n\n\t/// Simplex noise.\n\t/// @see gtc_noise\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T simplex(\n\t\tvec<L, T, Q> const& p);\n\n\t/// @}\n}//namespace glm\n\n#include \"noise.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/noise.inl",
    "content": "/// @ref gtc_noise\n///\n// Based on the work of Stefan Gustavson and Ashima Arts on \"webgl-noise\":\n// https://github.com/ashima/webgl-noise\n// Following Stefan Gustavson's paper \"Simplex noise demystified\":\n// http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\n\nnamespace glm{\nnamespace gtc\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> grad4(T const& j, vec<4, T, Q> const& ip)\n\t{\n\t\tvec<3, T, Q> pXYZ = floor(fract(vec<3, T, Q>(j) * vec<3, T, Q>(ip)) * T(7)) * ip[2] - T(1);\n\t\tT pW = static_cast<T>(1.5) - dot(abs(pXYZ), vec<3, T, Q>(1));\n\t\tvec<4, T, Q> s = vec<4, T, Q>(lessThan(vec<4, T, Q>(pXYZ, pW), vec<4, T, Q>(0.0)));\n\t\tpXYZ = pXYZ + (vec<3, T, Q>(s) * T(2) - T(1)) * s.w;\n\t\treturn vec<4, T, Q>(pXYZ, pW);\n\t}\n}//namespace gtc\n\n\t// Classic Perlin noise\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<2, T, Q> const& Position)\n\t{\n\t\tvec<4, T, Q> Pi = glm::floor(vec<4, T, Q>(Position.x, Position.y, Position.x, Position.y)) + vec<4, T, Q>(0.0, 0.0, 1.0, 1.0);\n\t\tvec<4, T, Q> Pf = glm::fract(vec<4, T, Q>(Position.x, Position.y, Position.x, Position.y)) - vec<4, T, Q>(0.0, 0.0, 1.0, 1.0);\n\t\tPi = mod(Pi, vec<4, T, Q>(289)); // To avoid truncation effects in permutation\n\t\tvec<4, T, Q> ix(Pi.x, Pi.z, Pi.x, Pi.z);\n\t\tvec<4, T, Q> iy(Pi.y, Pi.y, Pi.w, Pi.w);\n\t\tvec<4, T, Q> fx(Pf.x, Pf.z, Pf.x, Pf.z);\n\t\tvec<4, T, Q> fy(Pf.y, Pf.y, Pf.w, Pf.w);\n\n\t\tvec<4, T, Q> i = detail::permute(detail::permute(ix) + iy);\n\n\t\tvec<4, T, Q> gx = static_cast<T>(2) * glm::fract(i / T(41)) - T(1);\n\t\tvec<4, T, Q> gy = glm::abs(gx) - T(0.5);\n\t\tvec<4, T, Q> tx = glm::floor(gx + T(0.5));\n\t\tgx = gx - tx;\n\n\t\tvec<2, T, Q> g00(gx.x, gy.x);\n\t\tvec<2, T, Q> g10(gx.y, gy.y);\n\t\tvec<2, T, Q> g01(gx.z, gy.z);\n\t\tvec<2, T, Q> g11(gx.w, gy.w);\n\n\t\tvec<4, T, Q> norm = detail::taylorInvSqrt(vec<4, T, Q>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));\n\t\tg00 *= norm.x;\n\t\tg01 *= norm.y;\n\t\tg10 *= norm.z;\n\t\tg11 *= norm.w;\n\n\t\tT n00 = dot(g00, vec<2, T, Q>(fx.x, fy.x));\n\t\tT n10 = dot(g10, vec<2, T, Q>(fx.y, fy.y));\n\t\tT n01 = dot(g01, vec<2, T, Q>(fx.z, fy.z));\n\t\tT n11 = dot(g11, vec<2, T, Q>(fx.w, fy.w));\n\n\t\tvec<2, T, Q> fade_xy = detail::fade(vec<2, T, Q>(Pf.x, Pf.y));\n\t\tvec<2, T, Q> n_x = mix(vec<2, T, Q>(n00, n01), vec<2, T, Q>(n10, n11), fade_xy.x);\n\t\tT n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n\t\treturn T(2.3) * n_xy;\n\t}\n\n\t// Classic Perlin noise\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<3, T, Q> const& Position)\n\t{\n\t\tvec<3, T, Q> Pi0 = floor(Position); // Integer part for indexing\n\t\tvec<3, T, Q> Pi1 = Pi0 + T(1); // Integer part + 1\n\t\tPi0 = detail::mod289(Pi0);\n\t\tPi1 = detail::mod289(Pi1);\n\t\tvec<3, T, Q> Pf0 = fract(Position); // Fractional part for interpolation\n\t\tvec<3, T, Q> Pf1 = Pf0 - T(1); // Fractional part - 1.0\n\t\tvec<4, T, Q> ix(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n\t\tvec<4, T, Q> iy = vec<4, T, Q>(vec<2, T, Q>(Pi0.y), vec<2, T, Q>(Pi1.y));\n\t\tvec<4, T, Q> iz0(Pi0.z);\n\t\tvec<4, T, Q> iz1(Pi1.z);\n\n\t\tvec<4, T, Q> ixy = detail::permute(detail::permute(ix) + iy);\n\t\tvec<4, T, Q> ixy0 = detail::permute(ixy + iz0);\n\t\tvec<4, T, Q> ixy1 = detail::permute(ixy + iz1);\n\n\t\tvec<4, T, Q> gx0 = ixy0 * T(1.0 / 7.0);\n\t\tvec<4, T, Q> gy0 = fract(floor(gx0) * T(1.0 / 7.0)) - T(0.5);\n\t\tgx0 = fract(gx0);\n\t\tvec<4, T, Q> gz0 = vec<4, T, Q>(0.5) - abs(gx0) - abs(gy0);\n\t\tvec<4, T, Q> sz0 = step(gz0, vec<4, T, Q>(0.0));\n\t\tgx0 -= sz0 * (step(T(0), gx0) - T(0.5));\n\t\tgy0 -= sz0 * (step(T(0), gy0) - T(0.5));\n\n\t\tvec<4, T, Q> gx1 = ixy1 * T(1.0 / 7.0);\n\t\tvec<4, T, Q> gy1 = fract(floor(gx1) * T(1.0 / 7.0)) - T(0.5);\n\t\tgx1 = fract(gx1);\n\t\tvec<4, T, Q> gz1 = vec<4, T, Q>(0.5) - abs(gx1) - abs(gy1);\n\t\tvec<4, T, Q> sz1 = step(gz1, vec<4, T, Q>(0.0));\n\t\tgx1 -= sz1 * (step(T(0), gx1) - T(0.5));\n\t\tgy1 -= sz1 * (step(T(0), gy1) - T(0.5));\n\n\t\tvec<3, T, Q> g000(gx0.x, gy0.x, gz0.x);\n\t\tvec<3, T, Q> g100(gx0.y, gy0.y, gz0.y);\n\t\tvec<3, T, Q> g010(gx0.z, gy0.z, gz0.z);\n\t\tvec<3, T, Q> g110(gx0.w, gy0.w, gz0.w);\n\t\tvec<3, T, Q> g001(gx1.x, gy1.x, gz1.x);\n\t\tvec<3, T, Q> g101(gx1.y, gy1.y, gz1.y);\n\t\tvec<3, T, Q> g011(gx1.z, gy1.z, gz1.z);\n\t\tvec<3, T, Q> g111(gx1.w, gy1.w, gz1.w);\n\n\t\tvec<4, T, Q> norm0 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n\t\tg000 *= norm0.x;\n\t\tg010 *= norm0.y;\n\t\tg100 *= norm0.z;\n\t\tg110 *= norm0.w;\n\t\tvec<4, T, Q> norm1 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n\t\tg001 *= norm1.x;\n\t\tg011 *= norm1.y;\n\t\tg101 *= norm1.z;\n\t\tg111 *= norm1.w;\n\n\t\tT n000 = dot(g000, Pf0);\n\t\tT n100 = dot(g100, vec<3, T, Q>(Pf1.x, Pf0.y, Pf0.z));\n\t\tT n010 = dot(g010, vec<3, T, Q>(Pf0.x, Pf1.y, Pf0.z));\n\t\tT n110 = dot(g110, vec<3, T, Q>(Pf1.x, Pf1.y, Pf0.z));\n\t\tT n001 = dot(g001, vec<3, T, Q>(Pf0.x, Pf0.y, Pf1.z));\n\t\tT n101 = dot(g101, vec<3, T, Q>(Pf1.x, Pf0.y, Pf1.z));\n\t\tT n011 = dot(g011, vec<3, T, Q>(Pf0.x, Pf1.y, Pf1.z));\n\t\tT n111 = dot(g111, Pf1);\n\n\t\tvec<3, T, Q> fade_xyz = detail::fade(Pf0);\n\t\tvec<4, T, Q> n_z = mix(vec<4, T, Q>(n000, n100, n010, n110), vec<4, T, Q>(n001, n101, n011, n111), fade_xyz.z);\n\t\tvec<2, T, Q> n_yz = mix(vec<2, T, Q>(n_z.x, n_z.y), vec<2, T, Q>(n_z.z, n_z.w), fade_xyz.y);\n\t\tT n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n\t\treturn T(2.2) * n_xyz;\n\t}\n\t/*\n\t// Classic Perlin noise\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<3, T, Q> const& P)\n\t{\n\t\tvec<3, T, Q> Pi0 = floor(P); // Integer part for indexing\n\t\tvec<3, T, Q> Pi1 = Pi0 + T(1); // Integer part + 1\n\t\tPi0 = mod(Pi0, T(289));\n\t\tPi1 = mod(Pi1, T(289));\n\t\tvec<3, T, Q> Pf0 = fract(P); // Fractional part for interpolation\n\t\tvec<3, T, Q> Pf1 = Pf0 - T(1); // Fractional part - 1.0\n\t\tvec<4, T, Q> ix(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n\t\tvec<4, T, Q> iy(Pi0.y, Pi0.y, Pi1.y, Pi1.y);\n\t\tvec<4, T, Q> iz0(Pi0.z);\n\t\tvec<4, T, Q> iz1(Pi1.z);\n\n\t\tvec<4, T, Q> ixy = permute(permute(ix) + iy);\n\t\tvec<4, T, Q> ixy0 = permute(ixy + iz0);\n\t\tvec<4, T, Q> ixy1 = permute(ixy + iz1);\n\n\t\tvec<4, T, Q> gx0 = ixy0 / T(7);\n\t\tvec<4, T, Q> gy0 = fract(floor(gx0) / T(7)) - T(0.5);\n\t\tgx0 = fract(gx0);\n\t\tvec<4, T, Q> gz0 = vec<4, T, Q>(0.5) - abs(gx0) - abs(gy0);\n\t\tvec<4, T, Q> sz0 = step(gz0, vec<4, T, Q>(0.0));\n\t\tgx0 -= sz0 * (step(0.0, gx0) - T(0.5));\n\t\tgy0 -= sz0 * (step(0.0, gy0) - T(0.5));\n\n\t\tvec<4, T, Q> gx1 = ixy1 / T(7);\n\t\tvec<4, T, Q> gy1 = fract(floor(gx1) / T(7)) - T(0.5);\n\t\tgx1 = fract(gx1);\n\t\tvec<4, T, Q> gz1 = vec<4, T, Q>(0.5) - abs(gx1) - abs(gy1);\n\t\tvec<4, T, Q> sz1 = step(gz1, vec<4, T, Q>(0.0));\n\t\tgx1 -= sz1 * (step(T(0), gx1) - T(0.5));\n\t\tgy1 -= sz1 * (step(T(0), gy1) - T(0.5));\n\n\t\tvec<3, T, Q> g000(gx0.x, gy0.x, gz0.x);\n\t\tvec<3, T, Q> g100(gx0.y, gy0.y, gz0.y);\n\t\tvec<3, T, Q> g010(gx0.z, gy0.z, gz0.z);\n\t\tvec<3, T, Q> g110(gx0.w, gy0.w, gz0.w);\n\t\tvec<3, T, Q> g001(gx1.x, gy1.x, gz1.x);\n\t\tvec<3, T, Q> g101(gx1.y, gy1.y, gz1.y);\n\t\tvec<3, T, Q> g011(gx1.z, gy1.z, gz1.z);\n\t\tvec<3, T, Q> g111(gx1.w, gy1.w, gz1.w);\n\n\t\tvec<4, T, Q> norm0 = taylorInvSqrt(vec<4, T, Q>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n\t\tg000 *= norm0.x;\n\t\tg010 *= norm0.y;\n\t\tg100 *= norm0.z;\n\t\tg110 *= norm0.w;\n\t\tvec<4, T, Q> norm1 = taylorInvSqrt(vec<4, T, Q>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n\t\tg001 *= norm1.x;\n\t\tg011 *= norm1.y;\n\t\tg101 *= norm1.z;\n\t\tg111 *= norm1.w;\n\n\t\tT n000 = dot(g000, Pf0);\n\t\tT n100 = dot(g100, vec<3, T, Q>(Pf1.x, Pf0.y, Pf0.z));\n\t\tT n010 = dot(g010, vec<3, T, Q>(Pf0.x, Pf1.y, Pf0.z));\n\t\tT n110 = dot(g110, vec<3, T, Q>(Pf1.x, Pf1.y, Pf0.z));\n\t\tT n001 = dot(g001, vec<3, T, Q>(Pf0.x, Pf0.y, Pf1.z));\n\t\tT n101 = dot(g101, vec<3, T, Q>(Pf1.x, Pf0.y, Pf1.z));\n\t\tT n011 = dot(g011, vec<3, T, Q>(Pf0.x, Pf1.y, Pf1.z));\n\t\tT n111 = dot(g111, Pf1);\n\n\t\tvec<3, T, Q> fade_xyz = fade(Pf0);\n\t\tvec<4, T, Q> n_z = mix(vec<4, T, Q>(n000, n100, n010, n110), vec<4, T, Q>(n001, n101, n011, n111), fade_xyz.z);\n\t\tvec<2, T, Q> n_yz = mix(\n\t\t\tvec<2, T, Q>(n_z.x, n_z.y),\n\t\t\tvec<2, T, Q>(n_z.z, n_z.w), fade_xyz.y);\n\t\tT n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n\t\treturn T(2.2) * n_xyz;\n\t}\n\t*/\n\t// Classic Perlin noise\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<4, T, Q> const& Position)\n\t{\n\t\tvec<4, T, Q> Pi0 = floor(Position);\t// Integer part for indexing\n\t\tvec<4, T, Q> Pi1 = Pi0 + T(1);\t\t// Integer part + 1\n\t\tPi0 = mod(Pi0, vec<4, T, Q>(289));\n\t\tPi1 = mod(Pi1, vec<4, T, Q>(289));\n\t\tvec<4, T, Q> Pf0 = fract(Position);\t// Fractional part for interpolation\n\t\tvec<4, T, Q> Pf1 = Pf0 - T(1);\t\t// Fractional part - 1.0\n\t\tvec<4, T, Q> ix(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n\t\tvec<4, T, Q> iy(Pi0.y, Pi0.y, Pi1.y, Pi1.y);\n\t\tvec<4, T, Q> iz0(Pi0.z);\n\t\tvec<4, T, Q> iz1(Pi1.z);\n\t\tvec<4, T, Q> iw0(Pi0.w);\n\t\tvec<4, T, Q> iw1(Pi1.w);\n\n\t\tvec<4, T, Q> ixy = detail::permute(detail::permute(ix) + iy);\n\t\tvec<4, T, Q> ixy0 = detail::permute(ixy + iz0);\n\t\tvec<4, T, Q> ixy1 = detail::permute(ixy + iz1);\n\t\tvec<4, T, Q> ixy00 = detail::permute(ixy0 + iw0);\n\t\tvec<4, T, Q> ixy01 = detail::permute(ixy0 + iw1);\n\t\tvec<4, T, Q> ixy10 = detail::permute(ixy1 + iw0);\n\t\tvec<4, T, Q> ixy11 = detail::permute(ixy1 + iw1);\n\n\t\tvec<4, T, Q> gx00 = ixy00 / T(7);\n\t\tvec<4, T, Q> gy00 = floor(gx00) / T(7);\n\t\tvec<4, T, Q> gz00 = floor(gy00) / T(6);\n\t\tgx00 = fract(gx00) - T(0.5);\n\t\tgy00 = fract(gy00) - T(0.5);\n\t\tgz00 = fract(gz00) - T(0.5);\n\t\tvec<4, T, Q> gw00 = vec<4, T, Q>(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\n\t\tvec<4, T, Q> sw00 = step(gw00, vec<4, T, Q>(0.0));\n\t\tgx00 -= sw00 * (step(T(0), gx00) - T(0.5));\n\t\tgy00 -= sw00 * (step(T(0), gy00) - T(0.5));\n\n\t\tvec<4, T, Q> gx01 = ixy01 / T(7);\n\t\tvec<4, T, Q> gy01 = floor(gx01) / T(7);\n\t\tvec<4, T, Q> gz01 = floor(gy01) / T(6);\n\t\tgx01 = fract(gx01) - T(0.5);\n\t\tgy01 = fract(gy01) - T(0.5);\n\t\tgz01 = fract(gz01) - T(0.5);\n\t\tvec<4, T, Q> gw01 = vec<4, T, Q>(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\n\t\tvec<4, T, Q> sw01 = step(gw01, vec<4, T, Q>(0.0));\n\t\tgx01 -= sw01 * (step(T(0), gx01) - T(0.5));\n\t\tgy01 -= sw01 * (step(T(0), gy01) - T(0.5));\n\n\t\tvec<4, T, Q> gx10 = ixy10 / T(7);\n\t\tvec<4, T, Q> gy10 = floor(gx10) / T(7);\n\t\tvec<4, T, Q> gz10 = floor(gy10) / T(6);\n\t\tgx10 = fract(gx10) - T(0.5);\n\t\tgy10 = fract(gy10) - T(0.5);\n\t\tgz10 = fract(gz10) - T(0.5);\n\t\tvec<4, T, Q> gw10 = vec<4, T, Q>(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\n\t\tvec<4, T, Q> sw10 = step(gw10, vec<4, T, Q>(0));\n\t\tgx10 -= sw10 * (step(T(0), gx10) - T(0.5));\n\t\tgy10 -= sw10 * (step(T(0), gy10) - T(0.5));\n\n\t\tvec<4, T, Q> gx11 = ixy11 / T(7);\n\t\tvec<4, T, Q> gy11 = floor(gx11) / T(7);\n\t\tvec<4, T, Q> gz11 = floor(gy11) / T(6);\n\t\tgx11 = fract(gx11) - T(0.5);\n\t\tgy11 = fract(gy11) - T(0.5);\n\t\tgz11 = fract(gz11) - T(0.5);\n\t\tvec<4, T, Q> gw11 = vec<4, T, Q>(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\n\t\tvec<4, T, Q> sw11 = step(gw11, vec<4, T, Q>(0.0));\n\t\tgx11 -= sw11 * (step(T(0), gx11) - T(0.5));\n\t\tgy11 -= sw11 * (step(T(0), gy11) - T(0.5));\n\n\t\tvec<4, T, Q> g0000(gx00.x, gy00.x, gz00.x, gw00.x);\n\t\tvec<4, T, Q> g1000(gx00.y, gy00.y, gz00.y, gw00.y);\n\t\tvec<4, T, Q> g0100(gx00.z, gy00.z, gz00.z, gw00.z);\n\t\tvec<4, T, Q> g1100(gx00.w, gy00.w, gz00.w, gw00.w);\n\t\tvec<4, T, Q> g0010(gx10.x, gy10.x, gz10.x, gw10.x);\n\t\tvec<4, T, Q> g1010(gx10.y, gy10.y, gz10.y, gw10.y);\n\t\tvec<4, T, Q> g0110(gx10.z, gy10.z, gz10.z, gw10.z);\n\t\tvec<4, T, Q> g1110(gx10.w, gy10.w, gz10.w, gw10.w);\n\t\tvec<4, T, Q> g0001(gx01.x, gy01.x, gz01.x, gw01.x);\n\t\tvec<4, T, Q> g1001(gx01.y, gy01.y, gz01.y, gw01.y);\n\t\tvec<4, T, Q> g0101(gx01.z, gy01.z, gz01.z, gw01.z);\n\t\tvec<4, T, Q> g1101(gx01.w, gy01.w, gz01.w, gw01.w);\n\t\tvec<4, T, Q> g0011(gx11.x, gy11.x, gz11.x, gw11.x);\n\t\tvec<4, T, Q> g1011(gx11.y, gy11.y, gz11.y, gw11.y);\n\t\tvec<4, T, Q> g0111(gx11.z, gy11.z, gz11.z, gw11.z);\n\t\tvec<4, T, Q> g1111(gx11.w, gy11.w, gz11.w, gw11.w);\n\n\t\tvec<4, T, Q> norm00 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\n\t\tg0000 *= norm00.x;\n\t\tg0100 *= norm00.y;\n\t\tg1000 *= norm00.z;\n\t\tg1100 *= norm00.w;\n\n\t\tvec<4, T, Q> norm01 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\n\t\tg0001 *= norm01.x;\n\t\tg0101 *= norm01.y;\n\t\tg1001 *= norm01.z;\n\t\tg1101 *= norm01.w;\n\n\t\tvec<4, T, Q> norm10 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\n\t\tg0010 *= norm10.x;\n\t\tg0110 *= norm10.y;\n\t\tg1010 *= norm10.z;\n\t\tg1110 *= norm10.w;\n\n\t\tvec<4, T, Q> norm11 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\n\t\tg0011 *= norm11.x;\n\t\tg0111 *= norm11.y;\n\t\tg1011 *= norm11.z;\n\t\tg1111 *= norm11.w;\n\n\t\tT n0000 = dot(g0000, Pf0);\n\t\tT n1000 = dot(g1000, vec<4, T, Q>(Pf1.x, Pf0.y, Pf0.z, Pf0.w));\n\t\tT n0100 = dot(g0100, vec<4, T, Q>(Pf0.x, Pf1.y, Pf0.z, Pf0.w));\n\t\tT n1100 = dot(g1100, vec<4, T, Q>(Pf1.x, Pf1.y, Pf0.z, Pf0.w));\n\t\tT n0010 = dot(g0010, vec<4, T, Q>(Pf0.x, Pf0.y, Pf1.z, Pf0.w));\n\t\tT n1010 = dot(g1010, vec<4, T, Q>(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\n\t\tT n0110 = dot(g0110, vec<4, T, Q>(Pf0.x, Pf1.y, Pf1.z, Pf0.w));\n\t\tT n1110 = dot(g1110, vec<4, T, Q>(Pf1.x, Pf1.y, Pf1.z, Pf0.w));\n\t\tT n0001 = dot(g0001, vec<4, T, Q>(Pf0.x, Pf0.y, Pf0.z, Pf1.w));\n\t\tT n1001 = dot(g1001, vec<4, T, Q>(Pf1.x, Pf0.y, Pf0.z, Pf1.w));\n\t\tT n0101 = dot(g0101, vec<4, T, Q>(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\n\t\tT n1101 = dot(g1101, vec<4, T, Q>(Pf1.x, Pf1.y, Pf0.z, Pf1.w));\n\t\tT n0011 = dot(g0011, vec<4, T, Q>(Pf0.x, Pf0.y, Pf1.z, Pf1.w));\n\t\tT n1011 = dot(g1011, vec<4, T, Q>(Pf1.x, Pf0.y, Pf1.z, Pf1.w));\n\t\tT n0111 = dot(g0111, vec<4, T, Q>(Pf0.x, Pf1.y, Pf1.z, Pf1.w));\n\t\tT n1111 = dot(g1111, Pf1);\n\n\t\tvec<4, T, Q> fade_xyzw = detail::fade(Pf0);\n\t\tvec<4, T, Q> n_0w = mix(vec<4, T, Q>(n0000, n1000, n0100, n1100), vec<4, T, Q>(n0001, n1001, n0101, n1101), fade_xyzw.w);\n\t\tvec<4, T, Q> n_1w = mix(vec<4, T, Q>(n0010, n1010, n0110, n1110), vec<4, T, Q>(n0011, n1011, n0111, n1111), fade_xyzw.w);\n\t\tvec<4, T, Q> n_zw = mix(n_0w, n_1w, fade_xyzw.z);\n\t\tvec<2, T, Q> n_yzw = mix(vec<2, T, Q>(n_zw.x, n_zw.y), vec<2, T, Q>(n_zw.z, n_zw.w), fade_xyzw.y);\n\t\tT n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\n\t\treturn T(2.2) * n_xyzw;\n\t}\n\n\t// Classic Perlin noise, periodic variant\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<2, T, Q> const& Position, vec<2, T, Q> const& rep)\n\t{\n\t\tvec<4, T, Q> Pi = floor(vec<4, T, Q>(Position.x, Position.y, Position.x, Position.y)) + vec<4, T, Q>(0.0, 0.0, 1.0, 1.0);\n\t\tvec<4, T, Q> Pf = fract(vec<4, T, Q>(Position.x, Position.y, Position.x, Position.y)) - vec<4, T, Q>(0.0, 0.0, 1.0, 1.0);\n\t\tPi = mod(Pi, vec<4, T, Q>(rep.x, rep.y, rep.x, rep.y)); // To create noise with explicit period\n\t\tPi = mod(Pi, vec<4, T, Q>(289)); // To avoid truncation effects in permutation\n\t\tvec<4, T, Q> ix(Pi.x, Pi.z, Pi.x, Pi.z);\n\t\tvec<4, T, Q> iy(Pi.y, Pi.y, Pi.w, Pi.w);\n\t\tvec<4, T, Q> fx(Pf.x, Pf.z, Pf.x, Pf.z);\n\t\tvec<4, T, Q> fy(Pf.y, Pf.y, Pf.w, Pf.w);\n\n\t\tvec<4, T, Q> i = detail::permute(detail::permute(ix) + iy);\n\n\t\tvec<4, T, Q> gx = static_cast<T>(2) * fract(i / T(41)) - T(1);\n\t\tvec<4, T, Q> gy = abs(gx) - T(0.5);\n\t\tvec<4, T, Q> tx = floor(gx + T(0.5));\n\t\tgx = gx - tx;\n\n\t\tvec<2, T, Q> g00(gx.x, gy.x);\n\t\tvec<2, T, Q> g10(gx.y, gy.y);\n\t\tvec<2, T, Q> g01(gx.z, gy.z);\n\t\tvec<2, T, Q> g11(gx.w, gy.w);\n\n\t\tvec<4, T, Q> norm = detail::taylorInvSqrt(vec<4, T, Q>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11)));\n\t\tg00 *= norm.x;\n\t\tg01 *= norm.y;\n\t\tg10 *= norm.z;\n\t\tg11 *= norm.w;\n\n\t\tT n00 = dot(g00, vec<2, T, Q>(fx.x, fy.x));\n\t\tT n10 = dot(g10, vec<2, T, Q>(fx.y, fy.y));\n\t\tT n01 = dot(g01, vec<2, T, Q>(fx.z, fy.z));\n\t\tT n11 = dot(g11, vec<2, T, Q>(fx.w, fy.w));\n\n\t\tvec<2, T, Q> fade_xy = detail::fade(vec<2, T, Q>(Pf.x, Pf.y));\n\t\tvec<2, T, Q> n_x = mix(vec<2, T, Q>(n00, n01), vec<2, T, Q>(n10, n11), fade_xy.x);\n\t\tT n_xy = mix(n_x.x, n_x.y, fade_xy.y);\n\t\treturn T(2.3) * n_xy;\n\t}\n\n\t// Classic Perlin noise, periodic variant\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<3, T, Q> const& Position, vec<3, T, Q> const& rep)\n\t{\n\t\tvec<3, T, Q> Pi0 = mod(floor(Position), rep); // Integer part, modulo period\n\t\tvec<3, T, Q> Pi1 = mod(Pi0 + vec<3, T, Q>(T(1)), rep); // Integer part + 1, mod period\n\t\tPi0 = mod(Pi0, vec<3, T, Q>(289));\n\t\tPi1 = mod(Pi1, vec<3, T, Q>(289));\n\t\tvec<3, T, Q> Pf0 = fract(Position); // Fractional part for interpolation\n\t\tvec<3, T, Q> Pf1 = Pf0 - vec<3, T, Q>(T(1)); // Fractional part - 1.0\n\t\tvec<4, T, Q> ix = vec<4, T, Q>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n\t\tvec<4, T, Q> iy = vec<4, T, Q>(Pi0.y, Pi0.y, Pi1.y, Pi1.y);\n\t\tvec<4, T, Q> iz0(Pi0.z);\n\t\tvec<4, T, Q> iz1(Pi1.z);\n\n\t\tvec<4, T, Q> ixy = detail::permute(detail::permute(ix) + iy);\n\t\tvec<4, T, Q> ixy0 = detail::permute(ixy + iz0);\n\t\tvec<4, T, Q> ixy1 = detail::permute(ixy + iz1);\n\n\t\tvec<4, T, Q> gx0 = ixy0 / T(7);\n\t\tvec<4, T, Q> gy0 = fract(floor(gx0) / T(7)) - T(0.5);\n\t\tgx0 = fract(gx0);\n\t\tvec<4, T, Q> gz0 = vec<4, T, Q>(0.5) - abs(gx0) - abs(gy0);\n\t\tvec<4, T, Q> sz0 = step(gz0, vec<4, T, Q>(0));\n\t\tgx0 -= sz0 * (step(T(0), gx0) - T(0.5));\n\t\tgy0 -= sz0 * (step(T(0), gy0) - T(0.5));\n\n\t\tvec<4, T, Q> gx1 = ixy1 / T(7);\n\t\tvec<4, T, Q> gy1 = fract(floor(gx1) / T(7)) - T(0.5);\n\t\tgx1 = fract(gx1);\n\t\tvec<4, T, Q> gz1 = vec<4, T, Q>(0.5) - abs(gx1) - abs(gy1);\n\t\tvec<4, T, Q> sz1 = step(gz1, vec<4, T, Q>(T(0)));\n\t\tgx1 -= sz1 * (step(T(0), gx1) - T(0.5));\n\t\tgy1 -= sz1 * (step(T(0), gy1) - T(0.5));\n\n\t\tvec<3, T, Q> g000 = vec<3, T, Q>(gx0.x, gy0.x, gz0.x);\n\t\tvec<3, T, Q> g100 = vec<3, T, Q>(gx0.y, gy0.y, gz0.y);\n\t\tvec<3, T, Q> g010 = vec<3, T, Q>(gx0.z, gy0.z, gz0.z);\n\t\tvec<3, T, Q> g110 = vec<3, T, Q>(gx0.w, gy0.w, gz0.w);\n\t\tvec<3, T, Q> g001 = vec<3, T, Q>(gx1.x, gy1.x, gz1.x);\n\t\tvec<3, T, Q> g101 = vec<3, T, Q>(gx1.y, gy1.y, gz1.y);\n\t\tvec<3, T, Q> g011 = vec<3, T, Q>(gx1.z, gy1.z, gz1.z);\n\t\tvec<3, T, Q> g111 = vec<3, T, Q>(gx1.w, gy1.w, gz1.w);\n\n\t\tvec<4, T, Q> norm0 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n\t\tg000 *= norm0.x;\n\t\tg010 *= norm0.y;\n\t\tg100 *= norm0.z;\n\t\tg110 *= norm0.w;\n\t\tvec<4, T, Q> norm1 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n\t\tg001 *= norm1.x;\n\t\tg011 *= norm1.y;\n\t\tg101 *= norm1.z;\n\t\tg111 *= norm1.w;\n\n\t\tT n000 = dot(g000, Pf0);\n\t\tT n100 = dot(g100, vec<3, T, Q>(Pf1.x, Pf0.y, Pf0.z));\n\t\tT n010 = dot(g010, vec<3, T, Q>(Pf0.x, Pf1.y, Pf0.z));\n\t\tT n110 = dot(g110, vec<3, T, Q>(Pf1.x, Pf1.y, Pf0.z));\n\t\tT n001 = dot(g001, vec<3, T, Q>(Pf0.x, Pf0.y, Pf1.z));\n\t\tT n101 = dot(g101, vec<3, T, Q>(Pf1.x, Pf0.y, Pf1.z));\n\t\tT n011 = dot(g011, vec<3, T, Q>(Pf0.x, Pf1.y, Pf1.z));\n\t\tT n111 = dot(g111, Pf1);\n\n\t\tvec<3, T, Q> fade_xyz = detail::fade(Pf0);\n\t\tvec<4, T, Q> n_z = mix(vec<4, T, Q>(n000, n100, n010, n110), vec<4, T, Q>(n001, n101, n011, n111), fade_xyz.z);\n\t\tvec<2, T, Q> n_yz = mix(vec<2, T, Q>(n_z.x, n_z.y), vec<2, T, Q>(n_z.z, n_z.w), fade_xyz.y);\n\t\tT n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);\n\t\treturn T(2.2) * n_xyz;\n\t}\n\n\t// Classic Perlin noise, periodic version\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T perlin(vec<4, T, Q> const& Position, vec<4, T, Q> const& rep)\n\t{\n\t\tvec<4, T, Q> Pi0 = mod(floor(Position), rep); // Integer part modulo rep\n\t\tvec<4, T, Q> Pi1 = mod(Pi0 + T(1), rep); // Integer part + 1 mod rep\n\t\tvec<4, T, Q> Pf0 = fract(Position); // Fractional part for interpolation\n\t\tvec<4, T, Q> Pf1 = Pf0 - T(1); // Fractional part - 1.0\n\t\tvec<4, T, Q> ix = vec<4, T, Q>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n\t\tvec<4, T, Q> iy = vec<4, T, Q>(Pi0.y, Pi0.y, Pi1.y, Pi1.y);\n\t\tvec<4, T, Q> iz0(Pi0.z);\n\t\tvec<4, T, Q> iz1(Pi1.z);\n\t\tvec<4, T, Q> iw0(Pi0.w);\n\t\tvec<4, T, Q> iw1(Pi1.w);\n\n\t\tvec<4, T, Q> ixy = detail::permute(detail::permute(ix) + iy);\n\t\tvec<4, T, Q> ixy0 = detail::permute(ixy + iz0);\n\t\tvec<4, T, Q> ixy1 = detail::permute(ixy + iz1);\n\t\tvec<4, T, Q> ixy00 = detail::permute(ixy0 + iw0);\n\t\tvec<4, T, Q> ixy01 = detail::permute(ixy0 + iw1);\n\t\tvec<4, T, Q> ixy10 = detail::permute(ixy1 + iw0);\n\t\tvec<4, T, Q> ixy11 = detail::permute(ixy1 + iw1);\n\n\t\tvec<4, T, Q> gx00 = ixy00 / T(7);\n\t\tvec<4, T, Q> gy00 = floor(gx00) / T(7);\n\t\tvec<4, T, Q> gz00 = floor(gy00) / T(6);\n\t\tgx00 = fract(gx00) - T(0.5);\n\t\tgy00 = fract(gy00) - T(0.5);\n\t\tgz00 = fract(gz00) - T(0.5);\n\t\tvec<4, T, Q> gw00 = vec<4, T, Q>(0.75) - abs(gx00) - abs(gy00) - abs(gz00);\n\t\tvec<4, T, Q> sw00 = step(gw00, vec<4, T, Q>(0));\n\t\tgx00 -= sw00 * (step(T(0), gx00) - T(0.5));\n\t\tgy00 -= sw00 * (step(T(0), gy00) - T(0.5));\n\n\t\tvec<4, T, Q> gx01 = ixy01 / T(7);\n\t\tvec<4, T, Q> gy01 = floor(gx01) / T(7);\n\t\tvec<4, T, Q> gz01 = floor(gy01) / T(6);\n\t\tgx01 = fract(gx01) - T(0.5);\n\t\tgy01 = fract(gy01) - T(0.5);\n\t\tgz01 = fract(gz01) - T(0.5);\n\t\tvec<4, T, Q> gw01 = vec<4, T, Q>(0.75) - abs(gx01) - abs(gy01) - abs(gz01);\n\t\tvec<4, T, Q> sw01 = step(gw01, vec<4, T, Q>(0.0));\n\t\tgx01 -= sw01 * (step(T(0), gx01) - T(0.5));\n\t\tgy01 -= sw01 * (step(T(0), gy01) - T(0.5));\n\n\t\tvec<4, T, Q> gx10 = ixy10 / T(7);\n\t\tvec<4, T, Q> gy10 = floor(gx10) / T(7);\n\t\tvec<4, T, Q> gz10 = floor(gy10) / T(6);\n\t\tgx10 = fract(gx10) - T(0.5);\n\t\tgy10 = fract(gy10) - T(0.5);\n\t\tgz10 = fract(gz10) - T(0.5);\n\t\tvec<4, T, Q> gw10 = vec<4, T, Q>(0.75) - abs(gx10) - abs(gy10) - abs(gz10);\n\t\tvec<4, T, Q> sw10 = step(gw10, vec<4, T, Q>(0.0));\n\t\tgx10 -= sw10 * (step(T(0), gx10) - T(0.5));\n\t\tgy10 -= sw10 * (step(T(0), gy10) - T(0.5));\n\n\t\tvec<4, T, Q> gx11 = ixy11 / T(7);\n\t\tvec<4, T, Q> gy11 = floor(gx11) / T(7);\n\t\tvec<4, T, Q> gz11 = floor(gy11) / T(6);\n\t\tgx11 = fract(gx11) - T(0.5);\n\t\tgy11 = fract(gy11) - T(0.5);\n\t\tgz11 = fract(gz11) - T(0.5);\n\t\tvec<4, T, Q> gw11 = vec<4, T, Q>(0.75) - abs(gx11) - abs(gy11) - abs(gz11);\n\t\tvec<4, T, Q> sw11 = step(gw11, vec<4, T, Q>(T(0)));\n\t\tgx11 -= sw11 * (step(T(0), gx11) - T(0.5));\n\t\tgy11 -= sw11 * (step(T(0), gy11) - T(0.5));\n\n\t\tvec<4, T, Q> g0000(gx00.x, gy00.x, gz00.x, gw00.x);\n\t\tvec<4, T, Q> g1000(gx00.y, gy00.y, gz00.y, gw00.y);\n\t\tvec<4, T, Q> g0100(gx00.z, gy00.z, gz00.z, gw00.z);\n\t\tvec<4, T, Q> g1100(gx00.w, gy00.w, gz00.w, gw00.w);\n\t\tvec<4, T, Q> g0010(gx10.x, gy10.x, gz10.x, gw10.x);\n\t\tvec<4, T, Q> g1010(gx10.y, gy10.y, gz10.y, gw10.y);\n\t\tvec<4, T, Q> g0110(gx10.z, gy10.z, gz10.z, gw10.z);\n\t\tvec<4, T, Q> g1110(gx10.w, gy10.w, gz10.w, gw10.w);\n\t\tvec<4, T, Q> g0001(gx01.x, gy01.x, gz01.x, gw01.x);\n\t\tvec<4, T, Q> g1001(gx01.y, gy01.y, gz01.y, gw01.y);\n\t\tvec<4, T, Q> g0101(gx01.z, gy01.z, gz01.z, gw01.z);\n\t\tvec<4, T, Q> g1101(gx01.w, gy01.w, gz01.w, gw01.w);\n\t\tvec<4, T, Q> g0011(gx11.x, gy11.x, gz11.x, gw11.x);\n\t\tvec<4, T, Q> g1011(gx11.y, gy11.y, gz11.y, gw11.y);\n\t\tvec<4, T, Q> g0111(gx11.z, gy11.z, gz11.z, gw11.z);\n\t\tvec<4, T, Q> g1111(gx11.w, gy11.w, gz11.w, gw11.w);\n\n\t\tvec<4, T, Q> norm00 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0000, g0000), dot(g0100, g0100), dot(g1000, g1000), dot(g1100, g1100)));\n\t\tg0000 *= norm00.x;\n\t\tg0100 *= norm00.y;\n\t\tg1000 *= norm00.z;\n\t\tg1100 *= norm00.w;\n\n\t\tvec<4, T, Q> norm01 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0001, g0001), dot(g0101, g0101), dot(g1001, g1001), dot(g1101, g1101)));\n\t\tg0001 *= norm01.x;\n\t\tg0101 *= norm01.y;\n\t\tg1001 *= norm01.z;\n\t\tg1101 *= norm01.w;\n\n\t\tvec<4, T, Q> norm10 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0010, g0010), dot(g0110, g0110), dot(g1010, g1010), dot(g1110, g1110)));\n\t\tg0010 *= norm10.x;\n\t\tg0110 *= norm10.y;\n\t\tg1010 *= norm10.z;\n\t\tg1110 *= norm10.w;\n\n\t\tvec<4, T, Q> norm11 = detail::taylorInvSqrt(vec<4, T, Q>(dot(g0011, g0011), dot(g0111, g0111), dot(g1011, g1011), dot(g1111, g1111)));\n\t\tg0011 *= norm11.x;\n\t\tg0111 *= norm11.y;\n\t\tg1011 *= norm11.z;\n\t\tg1111 *= norm11.w;\n\n\t\tT n0000 = dot(g0000, Pf0);\n\t\tT n1000 = dot(g1000, vec<4, T, Q>(Pf1.x, Pf0.y, Pf0.z, Pf0.w));\n\t\tT n0100 = dot(g0100, vec<4, T, Q>(Pf0.x, Pf1.y, Pf0.z, Pf0.w));\n\t\tT n1100 = dot(g1100, vec<4, T, Q>(Pf1.x, Pf1.y, Pf0.z, Pf0.w));\n\t\tT n0010 = dot(g0010, vec<4, T, Q>(Pf0.x, Pf0.y, Pf1.z, Pf0.w));\n\t\tT n1010 = dot(g1010, vec<4, T, Q>(Pf1.x, Pf0.y, Pf1.z, Pf0.w));\n\t\tT n0110 = dot(g0110, vec<4, T, Q>(Pf0.x, Pf1.y, Pf1.z, Pf0.w));\n\t\tT n1110 = dot(g1110, vec<4, T, Q>(Pf1.x, Pf1.y, Pf1.z, Pf0.w));\n\t\tT n0001 = dot(g0001, vec<4, T, Q>(Pf0.x, Pf0.y, Pf0.z, Pf1.w));\n\t\tT n1001 = dot(g1001, vec<4, T, Q>(Pf1.x, Pf0.y, Pf0.z, Pf1.w));\n\t\tT n0101 = dot(g0101, vec<4, T, Q>(Pf0.x, Pf1.y, Pf0.z, Pf1.w));\n\t\tT n1101 = dot(g1101, vec<4, T, Q>(Pf1.x, Pf1.y, Pf0.z, Pf1.w));\n\t\tT n0011 = dot(g0011, vec<4, T, Q>(Pf0.x, Pf0.y, Pf1.z, Pf1.w));\n\t\tT n1011 = dot(g1011, vec<4, T, Q>(Pf1.x, Pf0.y, Pf1.z, Pf1.w));\n\t\tT n0111 = dot(g0111, vec<4, T, Q>(Pf0.x, Pf1.y, Pf1.z, Pf1.w));\n\t\tT n1111 = dot(g1111, Pf1);\n\n\t\tvec<4, T, Q> fade_xyzw = detail::fade(Pf0);\n\t\tvec<4, T, Q> n_0w = mix(vec<4, T, Q>(n0000, n1000, n0100, n1100), vec<4, T, Q>(n0001, n1001, n0101, n1101), fade_xyzw.w);\n\t\tvec<4, T, Q> n_1w = mix(vec<4, T, Q>(n0010, n1010, n0110, n1110), vec<4, T, Q>(n0011, n1011, n0111, n1111), fade_xyzw.w);\n\t\tvec<4, T, Q> n_zw = mix(n_0w, n_1w, fade_xyzw.z);\n\t\tvec<2, T, Q> n_yzw = mix(vec<2, T, Q>(n_zw.x, n_zw.y), vec<2, T, Q>(n_zw.z, n_zw.w), fade_xyzw.y);\n\t\tT n_xyzw = mix(n_yzw.x, n_yzw.y, fade_xyzw.x);\n\t\treturn T(2.2) * n_xyzw;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T simplex(glm::vec<2, T, Q> const& v)\n\t{\n\t\tvec<4, T, Q> const C = vec<4, T, Q>(\n\t\t\tT( 0.211324865405187),  // (3.0 -  sqrt(3.0)) / 6.0\n\t\t\tT( 0.366025403784439),  //  0.5 * (sqrt(3.0)  - 1.0)\n\t\t\tT(-0.577350269189626),\t// -1.0 + 2.0 * C.x\n\t\t\tT( 0.024390243902439)); //  1.0 / 41.0\n\n\t\t// First corner\n\t\tvec<2, T, Q> i  = floor(v + dot(v, vec<2, T, Q>(C[1])));\n\t\tvec<2, T, Q> x0 = v -   i + dot(i, vec<2, T, Q>(C[0]));\n\n\t\t// Other corners\n\t\t//i1.x = step( x0.y, x0.x ); // x0.x > x0.y ? 1.0 : 0.0\n\t\t//i1.y = 1.0 - i1.x;\n\t\tvec<2, T, Q> i1 = (x0.x > x0.y) ? vec<2, T, Q>(1, 0) : vec<2, T, Q>(0, 1);\n\t\t// x0 = x0 - 0.0 + 0.0 * C.xx ;\n\t\t// x1 = x0 - i1 + 1.0 * C.xx ;\n\t\t// x2 = x0 - 1.0 + 2.0 * C.xx ;\n\t\tvec<4, T, Q> x12 = vec<4, T, Q>(x0.x, x0.y, x0.x, x0.y) + vec<4, T, Q>(C.x, C.x, C.z, C.z);\n\t\tx12 = vec<4, T, Q>(vec<2, T, Q>(x12) - i1, x12.z, x12.w);\n\n\t\t// Permutations\n\t\ti = mod(i, vec<2, T, Q>(289)); // Avoid truncation effects in permutation\n\t\tvec<3, T, Q> p = detail::permute(\n\t\t\tdetail::permute(i.y + vec<3, T, Q>(T(0), i1.y, T(1)))\n\t\t\t+ i.x + vec<3, T, Q>(T(0), i1.x, T(1)));\n\n\t\tvec<3, T, Q> m = max(vec<3, T, Q>(0.5) - vec<3, T, Q>(\n\t\t\tdot(x0, x0),\n\t\t\tdot(vec<2, T, Q>(x12.x, x12.y), vec<2, T, Q>(x12.x, x12.y)),\n\t\t\tdot(vec<2, T, Q>(x12.z, x12.w), vec<2, T, Q>(x12.z, x12.w))), vec<3, T, Q>(0));\n\t\tm = m * m ;\n\t\tm = m * m ;\n\n\t\t// Gradients: 41 points uniformly over a line, mapped onto a diamond.\n\t\t// The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)\n\n\t\tvec<3, T, Q> x = static_cast<T>(2) * fract(p * C.w) - T(1);\n\t\tvec<3, T, Q> h = abs(x) - T(0.5);\n\t\tvec<3, T, Q> ox = floor(x + T(0.5));\n\t\tvec<3, T, Q> a0 = x - ox;\n\n\t\t// Normalise gradients implicitly by scaling m\n\t\t// Inlined for speed: m *= taylorInvSqrt( a0*a0 + h*h );\n\t\tm *= static_cast<T>(1.79284291400159) - T(0.85373472095314) * (a0 * a0 + h * h);\n\n\t\t// Compute final noise value at P\n\t\tvec<3, T, Q> g;\n\t\tg.x  = a0.x  * x0.x  + h.x  * x0.y;\n\t\t//g.yz = a0.yz * x12.xz + h.yz * x12.yw;\n\t\tg.y = a0.y * x12.x + h.y * x12.y;\n\t\tg.z = a0.z * x12.z + h.z * x12.w;\n\t\treturn T(130) * dot(m, g);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T simplex(vec<3, T, Q> const& v)\n\t{\n\t\tvec<2, T, Q> const C(1.0 / 6.0, 1.0 / 3.0);\n\t\tvec<4, T, Q> const D(0.0, 0.5, 1.0, 2.0);\n\n\t\t// First corner\n\t\tvec<3, T, Q> i(floor(v + dot(v, vec<3, T, Q>(C.y))));\n\t\tvec<3, T, Q> x0(v - i + dot(i, vec<3, T, Q>(C.x)));\n\n\t\t// Other corners\n\t\tvec<3, T, Q> g(step(vec<3, T, Q>(x0.y, x0.z, x0.x), x0));\n\t\tvec<3, T, Q> l(T(1) - g);\n\t\tvec<3, T, Q> i1(min(g, vec<3, T, Q>(l.z, l.x, l.y)));\n\t\tvec<3, T, Q> i2(max(g, vec<3, T, Q>(l.z, l.x, l.y)));\n\n\t\t//   x0 = x0 - 0.0 + 0.0 * C.xxx;\n\t\t//   x1 = x0 - i1  + 1.0 * C.xxx;\n\t\t//   x2 = x0 - i2  + 2.0 * C.xxx;\n\t\t//   x3 = x0 - 1.0 + 3.0 * C.xxx;\n\t\tvec<3, T, Q> x1(x0 - i1 + C.x);\n\t\tvec<3, T, Q> x2(x0 - i2 + C.y); // 2.0*C.x = 1/3 = C.y\n\t\tvec<3, T, Q> x3(x0 - D.y);      // -1.0+3.0*C.x = -0.5 = -D.y\n\n\t\t// Permutations\n\t\ti = detail::mod289(i);\n\t\tvec<4, T, Q> p(detail::permute(detail::permute(detail::permute(\n\t\t\ti.z + vec<4, T, Q>(T(0), i1.z, i2.z, T(1))) +\n\t\t\ti.y + vec<4, T, Q>(T(0), i1.y, i2.y, T(1))) +\n\t\t\ti.x + vec<4, T, Q>(T(0), i1.x, i2.x, T(1))));\n\n\t\t// Gradients: 7x7 points over a square, mapped onto an octahedron.\n\t\t// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n\t\tT n_ = static_cast<T>(0.142857142857); // 1.0/7.0\n\t\tvec<3, T, Q> ns(n_ * vec<3, T, Q>(D.w, D.y, D.z) - vec<3, T, Q>(D.x, D.z, D.x));\n\n\t\tvec<4, T, Q> j(p - T(49) * floor(p * ns.z * ns.z));  //  mod(p,7*7)\n\n\t\tvec<4, T, Q> x_(floor(j * ns.z));\n\t\tvec<4, T, Q> y_(floor(j - T(7) * x_));    // mod(j,N)\n\n\t\tvec<4, T, Q> x(x_ * ns.x + ns.y);\n\t\tvec<4, T, Q> y(y_ * ns.x + ns.y);\n\t\tvec<4, T, Q> h(T(1) - abs(x) - abs(y));\n\n\t\tvec<4, T, Q> b0(x.x, x.y, y.x, y.y);\n\t\tvec<4, T, Q> b1(x.z, x.w, y.z, y.w);\n\n\t\t// vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n\t\t// vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n\t\tvec<4, T, Q> s0(floor(b0) * T(2) + T(1));\n\t\tvec<4, T, Q> s1(floor(b1) * T(2) + T(1));\n\t\tvec<4, T, Q> sh(-step(h, vec<4, T, Q>(0.0)));\n\n\t\tvec<4, T, Q> a0 = vec<4, T, Q>(b0.x, b0.z, b0.y, b0.w) + vec<4, T, Q>(s0.x, s0.z, s0.y, s0.w) * vec<4, T, Q>(sh.x, sh.x, sh.y, sh.y);\n\t\tvec<4, T, Q> a1 = vec<4, T, Q>(b1.x, b1.z, b1.y, b1.w) + vec<4, T, Q>(s1.x, s1.z, s1.y, s1.w) * vec<4, T, Q>(sh.z, sh.z, sh.w, sh.w);\n\n\t\tvec<3, T, Q> p0(a0.x, a0.y, h.x);\n\t\tvec<3, T, Q> p1(a0.z, a0.w, h.y);\n\t\tvec<3, T, Q> p2(a1.x, a1.y, h.z);\n\t\tvec<3, T, Q> p3(a1.z, a1.w, h.w);\n\n\t\t// Normalise gradients\n\t\tvec<4, T, Q> norm = detail::taylorInvSqrt(vec<4, T, Q>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\n\t\tp0 *= norm.x;\n\t\tp1 *= norm.y;\n\t\tp2 *= norm.z;\n\t\tp3 *= norm.w;\n\n\t\t// Mix final noise value\n\t\tvec<4, T, Q> m = max(T(0.6) - vec<4, T, Q>(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), vec<4, T, Q>(0));\n\t\tm = m * m;\n\t\treturn T(42) * dot(m * m, vec<4, T, Q>(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T simplex(vec<4, T, Q> const& v)\n\t{\n\t\tvec<4, T, Q> const C(\n\t\t\t0.138196601125011,  // (5 - sqrt(5))/20  G4\n\t\t\t0.276393202250021,  // 2 * G4\n\t\t\t0.414589803375032,  // 3 * G4\n\t\t\t-0.447213595499958); // -1 + 4 * G4\n\n\t\t// (sqrt(5) - 1)/4 = F4, used once below\n\t\tT const F4 = static_cast<T>(0.309016994374947451);\n\n\t\t// First corner\n\t\tvec<4, T, Q> i  = floor(v + dot(v, vec<4, T, Q>(F4)));\n\t\tvec<4, T, Q> x0 = v -   i + dot(i, vec<4, T, Q>(C.x));\n\n\t\t// Other corners\n\n\t\t// Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)\n\t\tvec<4, T, Q> i0;\n\t\tvec<3, T, Q> isX = step(vec<3, T, Q>(x0.y, x0.z, x0.w), vec<3, T, Q>(x0.x));\n\t\tvec<3, T, Q> isYZ = step(vec<3, T, Q>(x0.z, x0.w, x0.w), vec<3, T, Q>(x0.y, x0.y, x0.z));\n\t\t//  i0.x = dot(isX, vec3(1.0));\n\t\t//i0.x = isX.x + isX.y + isX.z;\n\t\t//i0.yzw = static_cast<T>(1) - isX;\n\t\ti0 = vec<4, T, Q>(isX.x + isX.y + isX.z, T(1) - isX);\n\t\t//  i0.y += dot(isYZ.xy, vec2(1.0));\n\t\ti0.y += isYZ.x + isYZ.y;\n\t\t//i0.zw += 1.0 - vec<2, T, Q>(isYZ.x, isYZ.y);\n\t\ti0.z += static_cast<T>(1) - isYZ.x;\n\t\ti0.w += static_cast<T>(1) - isYZ.y;\n\t\ti0.z += isYZ.z;\n\t\ti0.w += static_cast<T>(1) - isYZ.z;\n\n\t\t// i0 now contains the unique values 0,1,2,3 in each channel\n\t\tvec<4, T, Q> i3 = clamp(i0, T(0), T(1));\n\t\tvec<4, T, Q> i2 = clamp(i0 - T(1), T(0), T(1));\n\t\tvec<4, T, Q> i1 = clamp(i0 - T(2), T(0), T(1));\n\n\t\t//  x0 = x0 - 0.0 + 0.0 * C.xxxx\n\t\t//  x1 = x0 - i1  + 0.0 * C.xxxx\n\t\t//  x2 = x0 - i2  + 0.0 * C.xxxx\n\t\t//  x3 = x0 - i3  + 0.0 * C.xxxx\n\t\t//  x4 = x0 - 1.0 + 4.0 * C.xxxx\n\t\tvec<4, T, Q> x1 = x0 - i1 + C.x;\n\t\tvec<4, T, Q> x2 = x0 - i2 + C.y;\n\t\tvec<4, T, Q> x3 = x0 - i3 + C.z;\n\t\tvec<4, T, Q> x4 = x0 + C.w;\n\n\t\t// Permutations\n\t\ti = mod(i, vec<4, T, Q>(289));\n\t\tT j0 = detail::permute(detail::permute(detail::permute(detail::permute(i.w) + i.z) + i.y) + i.x);\n\t\tvec<4, T, Q> j1 = detail::permute(detail::permute(detail::permute(detail::permute(\n\t\t\ti.w + vec<4, T, Q>(i1.w, i2.w, i3.w, T(1))) +\n\t\t\ti.z + vec<4, T, Q>(i1.z, i2.z, i3.z, T(1))) +\n\t\t\ti.y + vec<4, T, Q>(i1.y, i2.y, i3.y, T(1))) +\n\t\t\ti.x + vec<4, T, Q>(i1.x, i2.x, i3.x, T(1)));\n\n\t\t// Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope\n\t\t// 7*7*6 = 294, which is close to the ring size 17*17 = 289.\n\t\tvec<4, T, Q> ip = vec<4, T, Q>(T(1) / T(294), T(1) / T(49), T(1) / T(7), T(0));\n\n\t\tvec<4, T, Q> p0 = gtc::grad4(j0,   ip);\n\t\tvec<4, T, Q> p1 = gtc::grad4(j1.x, ip);\n\t\tvec<4, T, Q> p2 = gtc::grad4(j1.y, ip);\n\t\tvec<4, T, Q> p3 = gtc::grad4(j1.z, ip);\n\t\tvec<4, T, Q> p4 = gtc::grad4(j1.w, ip);\n\n\t\t// Normalise gradients\n\t\tvec<4, T, Q> norm = detail::taylorInvSqrt(vec<4, T, Q>(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\n\t\tp0 *= norm.x;\n\t\tp1 *= norm.y;\n\t\tp2 *= norm.z;\n\t\tp3 *= norm.w;\n\t\tp4 *= detail::taylorInvSqrt(dot(p4, p4));\n\n\t\t// Mix contributions from the five corners\n\t\tvec<3, T, Q> m0 = max(T(0.6) - vec<3, T, Q>(dot(x0, x0), dot(x1, x1), dot(x2, x2)), vec<3, T, Q>(0));\n\t\tvec<2, T, Q> m1 = max(T(0.6) - vec<2, T, Q>(dot(x3, x3), dot(x4, x4)             ), vec<2, T, Q>(0));\n\t\tm0 = m0 * m0;\n\t\tm1 = m1 * m1;\n\t\treturn T(49) *\n\t\t\t(dot(m0 * m0, vec<3, T, Q>(dot(p0, x0), dot(p1, x1), dot(p2, x2))) +\n\t\t\tdot(m1 * m1, vec<2, T, Q>(dot(p3, x3), dot(p4, x4))));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/packing.hpp",
    "content": "/// @ref gtc_packing\n/// @file glm/gtc/packing.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_packing GLM_GTC_packing\n/// @ingroup gtc\n///\n/// Include <glm/gtc/packing.hpp> to use the features of this extension.\n///\n/// This extension provides a set of function to convert vertors to packed\n/// formats.\n\n#pragma once\n\n// Dependency:\n#include \"type_precision.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_packing extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_packing\n\t/// @{\n\n\t/// First, converts the normalized floating-point value v into a 8-bit integer value.\n\t/// Then, the results are packed into the returned 8-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm1x8:\tround(clamp(c, 0, +1) * 255.0)\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packUnorm2x8(vec2 const& v)\n\t/// @see uint32 packUnorm4x8(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml\">GLSL packUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint8 packUnorm1x8(float v);\n\n\t/// Convert a single 8-bit integer to a normalized floating-point value.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnorm4x8: f / 255.0\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackUnorm2x8(uint16 p)\n\t/// @see vec4 unpackUnorm4x8(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm4x8.xml\">GLSL unpackUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL float unpackUnorm1x8(uint8 p);\n\n\t/// First, converts each component of the normalized floating-point value v into 8-bit integer values.\n\t/// Then, the results are packed into the returned 16-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm2x8:\tround(clamp(c, 0, +1) * 255.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint8 packUnorm1x8(float const& v)\n\t/// @see uint32 packUnorm4x8(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml\">GLSL packUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint16 packUnorm2x8(vec2 const& v);\n\n\t/// First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnorm4x8: f / 255.0\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see float unpackUnorm1x8(uint8 v)\n\t/// @see vec4 unpackUnorm4x8(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm4x8.xml\">GLSL unpackUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p);\n\n\t/// First, converts the normalized floating-point value v into 8-bit integer value.\n\t/// Then, the results are packed into the returned 8-bit unsigned integer.\n\t///\n\t/// The conversion to fixed point is done as follows:\n\t/// packSnorm1x8:\tround(clamp(s, -1, +1) * 127.0)\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packSnorm2x8(vec2 const& v)\n\t/// @see uint32 packSnorm4x8(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml\">GLSL packSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint8 packSnorm1x8(float s);\n\n\t/// First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.\n\t/// Then, the value is converted to a normalized floating-point value to generate the returned scalar.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm1x8: clamp(f / 127.0, -1, +1)\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackSnorm2x8(uint16 p)\n\t/// @see vec4 unpackSnorm4x8(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm4x8.xml\">GLSL unpackSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL float unpackSnorm1x8(uint8 p);\n\n\t/// First, converts each component of the normalized floating-point value v into 8-bit integer values.\n\t/// Then, the results are packed into the returned 16-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packSnorm2x8:\tround(clamp(c, -1, +1) * 127.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint8 packSnorm1x8(float const& v)\n\t/// @see uint32 packSnorm4x8(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml\">GLSL packSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint16 packSnorm2x8(vec2 const& v);\n\n\t/// First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm2x8: clamp(f / 127.0, -1, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see float unpackSnorm1x8(uint8 p)\n\t/// @see vec4 unpackSnorm4x8(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm4x8.xml\">GLSL unpackSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p);\n\n\t/// First, converts the normalized floating-point value v into a 16-bit integer value.\n\t/// Then, the results are packed into the returned 16-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm1x16:\tround(clamp(c, 0, +1) * 65535.0)\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packSnorm1x16(float const& v)\n\t/// @see uint64 packSnorm4x16(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml\">GLSL packUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint16 packUnorm1x16(float v);\n\n\t/// First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.\n\t/// Then, the value is converted to a normalized floating-point value to generate the returned scalar.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnorm1x16: f / 65535.0\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackUnorm2x16(uint32 p)\n\t/// @see vec4 unpackUnorm4x16(uint64 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm2x16.xml\">GLSL unpackUnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL float unpackUnorm1x16(uint16 p);\n\n\t/// First, converts each component of the normalized floating-point value v into 16-bit integer values.\n\t/// Then, the results are packed into the returned 64-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm4x16:\tround(clamp(c, 0, +1) * 65535.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packUnorm1x16(float const& v)\n\t/// @see uint32 packUnorm2x16(vec2 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml\">GLSL packUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint64 packUnorm4x16(vec4 const& v);\n\n\t/// First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnormx4x16: f / 65535.0\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see float unpackUnorm1x16(uint16 p)\n\t/// @see vec2 unpackUnorm2x16(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm2x16.xml\">GLSL unpackUnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p);\n\n\t/// First, converts the normalized floating-point value v into 16-bit integer value.\n\t/// Then, the results are packed into the returned 16-bit unsigned integer.\n\t///\n\t/// The conversion to fixed point is done as follows:\n\t/// packSnorm1x8:\tround(clamp(s, -1, +1) * 32767.0)\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packSnorm2x16(vec2 const& v)\n\t/// @see uint64 packSnorm4x16(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml\">GLSL packSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint16 packSnorm1x16(float v);\n\n\t/// First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned scalar.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm1x16: clamp(f / 32767.0, -1, +1)\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackSnorm2x16(uint32 p)\n\t/// @see vec4 unpackSnorm4x16(uint64 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm1x16.xml\">GLSL unpackSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL float unpackSnorm1x16(uint16 p);\n\n\t/// First, converts each component of the normalized floating-point value v into 16-bit integer values.\n\t/// Then, the results are packed into the returned 64-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packSnorm2x8:\tround(clamp(c, -1, +1) * 32767.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packSnorm1x16(float const& v)\n\t/// @see uint32 packSnorm2x16(vec2 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml\">GLSL packSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint64 packSnorm4x16(vec4 const& v);\n\n\t/// First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm4x16: clamp(f / 32767.0, -1, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see float unpackSnorm1x16(uint16 p)\n\t/// @see vec2 unpackSnorm2x16(uint32 p)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm2x16.xml\">GLSL unpackSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p);\n\n\t/// Returns an unsigned integer obtained by converting the components of a floating-point scalar\n\t/// to the 16-bit floating-point representation found in the OpenGL Specification,\n\t/// and then packing this 16-bit value into a 16-bit unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packHalf2x16(vec2 const& v)\n\t/// @see uint64 packHalf4x16(vec4 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packHalf2x16.xml\">GLSL packHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint16 packHalf1x16(float v);\n\n\t/// Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value,\n\t/// interpreted as a 16-bit floating-point number according to the OpenGL Specification,\n\t/// and converting it to 32-bit floating-point values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackHalf2x16(uint32 const& v)\n\t/// @see vec4 unpackHalf4x16(uint64 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackHalf2x16.xml\">GLSL unpackHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL float unpackHalf1x16(uint16 v);\n\n\t/// Returns an unsigned integer obtained by converting the components of a four-component floating-point vector\n\t/// to the 16-bit floating-point representation found in the OpenGL Specification,\n\t/// and then packing these four 16-bit values into a 64-bit unsigned integer.\n\t/// The first vector component specifies the 16 least-significant bits of the result;\n\t/// the forth component specifies the 16 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packHalf1x16(float const& v)\n\t/// @see uint32 packHalf2x16(vec2 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packHalf2x16.xml\">GLSL packHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint64 packHalf4x16(vec4 const& v);\n\n\t/// Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values,\n\t/// interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification,\n\t/// and converting them to 32-bit floating-point values.\n\t/// The first component of the vector is obtained from the 16 least-significant bits of v;\n\t/// the forth component is obtained from the 16 most-significant bits of v.\n\t///\n\t/// @see gtc_packing\n\t/// @see float unpackHalf1x16(uint16 const& v)\n\t/// @see vec2 unpackHalf2x16(uint32 const& v)\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackHalf2x16.xml\">GLSL unpackHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p);\n\n\t/// Returns an unsigned integer obtained by converting the components of a four-component signed integer vector\n\t/// to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification,\n\t/// and then packing these four values into a 32-bit unsigned integer.\n\t/// The first vector component specifies the 10 least-significant bits of the result;\n\t/// the forth component specifies the 2 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packI3x10_1x2(uvec4 const& v)\n\t/// @see uint32 packSnorm3x10_1x2(vec4 const& v)\n\t/// @see uint32 packUnorm3x10_1x2(vec4 const& v)\n\t/// @see ivec4 unpackI3x10_1x2(uint32 const& p)\n\tGLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const& v);\n\n\t/// Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers.\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packU3x10_1x2(uvec4 const& v)\n\t/// @see vec4 unpackSnorm3x10_1x2(uint32 const& p);\n\t/// @see uvec4 unpackI3x10_1x2(uint32 const& p);\n\tGLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p);\n\n\t/// Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector\n\t/// to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification,\n\t/// and then packing these four values into a 32-bit unsigned integer.\n\t/// The first vector component specifies the 10 least-significant bits of the result;\n\t/// the forth component specifies the 2 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packI3x10_1x2(ivec4 const& v)\n\t/// @see uint32 packSnorm3x10_1x2(vec4 const& v)\n\t/// @see uint32 packUnorm3x10_1x2(vec4 const& v)\n\t/// @see ivec4 unpackU3x10_1x2(uint32 const& p)\n\tGLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const& v);\n\n\t/// Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers.\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packU3x10_1x2(uvec4 const& v)\n\t/// @see vec4 unpackSnorm3x10_1x2(uint32 const& p);\n\t/// @see uvec4 unpackI3x10_1x2(uint32 const& p);\n\tGLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p);\n\n\t/// First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values.\n\t/// Then, converts the forth component of the normalized floating-point value v into 2-bit signed integer values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packSnorm3x10_1x2(xyz):\tround(clamp(c, -1, +1) * 511.0)\n\t/// packSnorm3x10_1x2(w):\tround(clamp(c, -1, +1) * 1.0)\n\t///\n\t/// The first vector component specifies the 10 least-significant bits of the result;\n\t/// the forth component specifies the 2 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec4 unpackSnorm3x10_1x2(uint32 const& p)\n\t/// @see uint32 packUnorm3x10_1x2(vec4 const& v)\n\t/// @see uint32 packU3x10_1x2(uvec4 const& v)\n\t/// @see uint32 packI3x10_1x2(ivec4 const& v)\n\tGLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const& v);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm3x10_1x2(xyz): clamp(f / 511.0, -1, +1)\n\t/// unpackSnorm3x10_1x2(w): clamp(f / 511.0, -1, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packSnorm3x10_1x2(vec4 const& v)\n\t/// @see vec4 unpackUnorm3x10_1x2(uint32 const& p))\n\t/// @see uvec4 unpackI3x10_1x2(uint32 const& p)\n\t/// @see uvec4 unpackU3x10_1x2(uint32 const& p)\n\tGLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p);\n\n\t/// First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values.\n\t/// Then, converts the forth component of the normalized floating-point value v into 2-bit signed uninteger values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm3x10_1x2(xyz):\tround(clamp(c, 0, +1) * 1023.0)\n\t/// packUnorm3x10_1x2(w):\tround(clamp(c, 0, +1) * 3.0)\n\t///\n\t/// The first vector component specifies the 10 least-significant bits of the result;\n\t/// the forth component specifies the 2 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec4 unpackUnorm3x10_1x2(uint32 const& p)\n\t/// @see uint32 packUnorm3x10_1x2(vec4 const& v)\n\t/// @see uint32 packU3x10_1x2(uvec4 const& v)\n\t/// @see uint32 packI3x10_1x2(ivec4 const& v)\n\tGLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const& v);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm3x10_1x2(xyz): clamp(f / 1023.0, 0, +1)\n\t/// unpackSnorm3x10_1x2(w): clamp(f / 3.0, 0, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packSnorm3x10_1x2(vec4 const& v)\n\t/// @see vec4 unpackInorm3x10_1x2(uint32 const& p))\n\t/// @see uvec4 unpackI3x10_1x2(uint32 const& p)\n\t/// @see uvec4 unpackU3x10_1x2(uint32 const& p)\n\tGLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p);\n\n\t/// First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.\n\t/// Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The first vector component specifies the 11 least-significant bits of the result;\n\t/// the last component specifies the 10 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec3 unpackF2x11_1x10(uint32 const& p)\n\tGLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const& v);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packF2x11_1x10(vec3 const& v)\n\tGLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p);\n\n\n\t/// First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.\n\t/// Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The first vector component specifies the 11 least-significant bits of the result;\n\t/// the last component specifies the 10 most-significant bits.\n\t///\n\t/// packF3x9_E1x5 allows encoding into RGBE / RGB9E5 format\n\t///\n\t/// @see gtc_packing\n\t/// @see vec3 unpackF3x9_E1x5(uint32 const& p)\n\tGLM_FUNC_DECL uint32 packF3x9_E1x5(vec3 const& v);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// unpackF3x9_E1x5 allows decoding RGBE / RGB9E5 data\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packF3x9_E1x5(vec3 const& v)\n\tGLM_FUNC_DECL vec3 unpackF3x9_E1x5(uint32 p);\n\n\t/// Returns an unsigned integer vector obtained by converting the components of a floating-point vector\n\t/// to the 16-bit floating-point representation found in the OpenGL Specification.\n\t/// The first vector component specifies the 16 least-significant bits of the result;\n\t/// the forth component specifies the 16 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& p)\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> packRGBM(vec<3, T, Q> const& rgb);\n\n\t/// Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.\n\t/// The first component of the vector is obtained from the 16 least-significant bits of v;\n\t/// the forth component is obtained from the 16 most-significant bits of v.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<4, T, Q> packRGBM(vec<3, float, Q> const& v)\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& rgbm);\n\n\t/// Returns an unsigned integer vector obtained by converting the components of a floating-point vector\n\t/// to the 16-bit floating-point representation found in the OpenGL Specification.\n\t/// The first vector component specifies the 16 least-significant bits of the result;\n\t/// the forth component specifies the 16 most-significant bits.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p)\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v);\n\n\t/// Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.\n\t/// The first component of the vector is obtained from the 16 least-significant bits of v;\n\t/// the forth component is obtained from the 16 most-significant bits of v.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v)\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, floatType, Q> unpackUnorm(vec<L, intType, Q> const& p);\n\ttemplate<typename uintType, length_t L, typename floatType, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uintType, Q> packUnorm(vec<L, floatType, Q> const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, intType, Q> packUnorm(vec<L, floatType, Q> const& v)\n\ttemplate<typename floatType, length_t L, typename uintType, qualifier Q>\n\tGLM_FUNC_DECL vec<L, floatType, Q> unpackUnorm(vec<L, uintType, Q> const& v);\n\n\t/// Convert each component of the normalized floating-point vector into signed integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& p);\n\ttemplate<typename intType, length_t L, typename floatType, qualifier Q>\n\tGLM_FUNC_DECL vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v)\n\ttemplate<typename floatType, length_t L, typename intType, qualifier Q>\n\tGLM_FUNC_DECL vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& v);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec2 unpackUnorm2x4(uint8 p)\n\tGLM_FUNC_DECL uint8 packUnorm2x4(vec2 const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint8 packUnorm2x4(vec2 const& v)\n\tGLM_FUNC_DECL vec2 unpackUnorm2x4(uint8 p);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec4 unpackUnorm4x4(uint16 p)\n\tGLM_FUNC_DECL uint16 packUnorm4x4(vec4 const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packUnorm4x4(vec4 const& v)\n\tGLM_FUNC_DECL vec4 unpackUnorm4x4(uint16 p);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec3 unpackUnorm1x5_1x6_1x5(uint16 p)\n\tGLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5(vec3 const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packUnorm1x5_1x6_1x5(vec3 const& v)\n\tGLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5(uint16 p);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec4 unpackUnorm3x5_1x1(uint16 p)\n\tGLM_FUNC_DECL uint16 packUnorm3x5_1x1(vec4 const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packUnorm3x5_1x1(vec4 const& v)\n\tGLM_FUNC_DECL vec4 unpackUnorm3x5_1x1(uint16 p);\n\n\t/// Convert each component of the normalized floating-point vector into unsigned integer values.\n\t///\n\t/// @see gtc_packing\n\t/// @see vec3 unpackUnorm2x3_1x2(uint8 p)\n\tGLM_FUNC_DECL uint8 packUnorm2x3_1x2(vec3 const& v);\n\n\t/// Convert a packed integer to a normalized floating-point vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint8 packUnorm2x3_1x2(vec3 const& v)\n\tGLM_FUNC_DECL vec3 unpackUnorm2x3_1x2(uint8 p);\n\n\n\n\t/// Convert each component from an integer vector into a packed integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see i8vec2 unpackInt2x8(int16 p)\n\tGLM_FUNC_DECL int16 packInt2x8(i8vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int16 packInt2x8(i8vec2 const& v)\n\tGLM_FUNC_DECL i8vec2 unpackInt2x8(int16 p);\n\n\t/// Convert each component from an integer vector into a packed unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see u8vec2 unpackInt2x8(uint16 p)\n\tGLM_FUNC_DECL uint16 packUint2x8(u8vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint16 packInt2x8(u8vec2 const& v)\n\tGLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p);\n\n\t/// Convert each component from an integer vector into a packed integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see i8vec4 unpackInt4x8(int32 p)\n\tGLM_FUNC_DECL int32 packInt4x8(i8vec4 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int32 packInt2x8(i8vec4 const& v)\n\tGLM_FUNC_DECL i8vec4 unpackInt4x8(int32 p);\n\n\t/// Convert each component from an integer vector into a packed unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see u8vec4 unpackUint4x8(uint32 p)\n\tGLM_FUNC_DECL uint32 packUint4x8(u8vec4 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint32 packUint4x8(u8vec2 const& v)\n\tGLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p);\n\n\t/// Convert each component from an integer vector into a packed integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see i16vec2 unpackInt2x16(int p)\n\tGLM_FUNC_DECL int packInt2x16(i16vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int packInt2x16(i16vec2 const& v)\n\tGLM_FUNC_DECL i16vec2 unpackInt2x16(int p);\n\n\t/// Convert each component from an integer vector into a packed integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see i16vec4 unpackInt4x16(int64 p)\n\tGLM_FUNC_DECL int64 packInt4x16(i16vec4 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int64 packInt4x16(i16vec4 const& v)\n\tGLM_FUNC_DECL i16vec4 unpackInt4x16(int64 p);\n\n\t/// Convert each component from an integer vector into a packed unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see u16vec2 unpackUint2x16(uint p)\n\tGLM_FUNC_DECL uint packUint2x16(u16vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint packUint2x16(u16vec2 const& v)\n\tGLM_FUNC_DECL u16vec2 unpackUint2x16(uint p);\n\n\t/// Convert each component from an integer vector into a packed unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see u16vec4 unpackUint4x16(uint64 p)\n\tGLM_FUNC_DECL uint64 packUint4x16(u16vec4 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see uint64 packUint4x16(u16vec4 const& v)\n\tGLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p);\n\n\t/// Convert each component from an integer vector into a packed integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see i32vec2 unpackInt2x32(int p)\n\tGLM_FUNC_DECL int64 packInt2x32(i32vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int packInt2x16(i32vec2 const& v)\n\tGLM_FUNC_DECL i32vec2 unpackInt2x32(int64 p);\n\n\t/// Convert each component from an integer vector into a packed unsigned integer.\n\t///\n\t/// @see gtc_packing\n\t/// @see u32vec2 unpackUint2x32(int p)\n\tGLM_FUNC_DECL uint64 packUint2x32(u32vec2 const& v);\n\n\t/// Convert a packed integer into an integer vector.\n\t///\n\t/// @see gtc_packing\n\t/// @see int packUint2x16(u32vec2 const& v)\n\tGLM_FUNC_DECL u32vec2 unpackUint2x32(uint64 p);\n\n\n\t/// @}\n}// namespace glm\n\n#include \"packing.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/packing.inl",
    "content": "/// @ref gtc_packing\n\n#include \"../ext/scalar_relational.hpp\"\n#include \"../ext/vector_relational.hpp\"\n#include \"../common.hpp\"\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../detail/type_half.hpp\"\n#include <cstring>\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\tGLM_FUNC_QUALIFIER glm::uint16 float2half(glm::uint32 f)\n\t{\n\t\t// 10 bits    =>                         EE EEEFFFFF\n\t\t// 11 bits    =>                        EEE EEFFFFFF\n\t\t// Half bits  =>                   SEEEEEFF FFFFFFFF\n\t\t// Float bits => SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF\n\n\t\t// 0x00007c00 => 00000000 00000000 01111100 00000000\n\t\t// 0x000003ff => 00000000 00000000 00000011 11111111\n\t\t// 0x38000000 => 00111000 00000000 00000000 00000000\n\t\t// 0x7f800000 => 01111111 10000000 00000000 00000000\n\t\t// 0x00008000 => 00000000 00000000 10000000 00000000\n\t\treturn\n\t\t\t((f >> 16) & 0x8000) | // sign\n\t\t\t((((f & 0x7f800000) - 0x38000000) >> 13) & 0x7c00) | // exponential\n\t\t\t((f >> 13) & 0x03ff); // Mantissa\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint32 float2packed11(glm::uint32 f)\n\t{\n\t\t// 10 bits    =>                         EE EEEFFFFF\n\t\t// 11 bits    =>                        EEE EEFFFFFF\n\t\t// Half bits  =>                   SEEEEEFF FFFFFFFF\n\t\t// Float bits => SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF\n\n\t\t// 0x000007c0 => 00000000 00000000 00000111 11000000\n\t\t// 0x00007c00 => 00000000 00000000 01111100 00000000\n\t\t// 0x000003ff => 00000000 00000000 00000011 11111111\n\t\t// 0x38000000 => 00111000 00000000 00000000 00000000\n\t\t// 0x7f800000 => 01111111 10000000 00000000 00000000\n\t\t// 0x00008000 => 00000000 00000000 10000000 00000000\n\t\treturn\n\t\t\t((((f & 0x7f800000) - 0x38000000) >> 17) & 0x07c0) | // exponential\n\t\t\t((f >> 17) & 0x003f); // Mantissa\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint32 packed11ToFloat(glm::uint32 p)\n\t{\n\t\t// 10 bits    =>                         EE EEEFFFFF\n\t\t// 11 bits    =>                        EEE EEFFFFFF\n\t\t// Half bits  =>                   SEEEEEFF FFFFFFFF\n\t\t// Float bits => SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF\n\n\t\t// 0x000007c0 => 00000000 00000000 00000111 11000000\n\t\t// 0x00007c00 => 00000000 00000000 01111100 00000000\n\t\t// 0x000003ff => 00000000 00000000 00000011 11111111\n\t\t// 0x38000000 => 00111000 00000000 00000000 00000000\n\t\t// 0x7f800000 => 01111111 10000000 00000000 00000000\n\t\t// 0x00008000 => 00000000 00000000 10000000 00000000\n\t\treturn\n\t\t\t((((p & 0x07c0) << 17) + 0x38000000) & 0x7f800000) | // exponential\n\t\t\t((p & 0x003f) << 17); // Mantissa\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint32 float2packed10(glm::uint32 f)\n\t{\n\t\t// 10 bits    =>                         EE EEEFFFFF\n\t\t// 11 bits    =>                        EEE EEFFFFFF\n\t\t// Half bits  =>                   SEEEEEFF FFFFFFFF\n\t\t// Float bits => SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF\n\n\t\t// 0x0000001F => 00000000 00000000 00000000 00011111\n\t\t// 0x0000003F => 00000000 00000000 00000000 00111111\n\t\t// 0x000003E0 => 00000000 00000000 00000011 11100000\n\t\t// 0x000007C0 => 00000000 00000000 00000111 11000000\n\t\t// 0x00007C00 => 00000000 00000000 01111100 00000000\n\t\t// 0x000003FF => 00000000 00000000 00000011 11111111\n\t\t// 0x38000000 => 00111000 00000000 00000000 00000000\n\t\t// 0x7f800000 => 01111111 10000000 00000000 00000000\n\t\t// 0x00008000 => 00000000 00000000 10000000 00000000\n\t\treturn\n\t\t\t((((f & 0x7f800000) - 0x38000000) >> 18) & 0x03E0) | // exponential\n\t\t\t((f >> 18) & 0x001f); // Mantissa\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint32 packed10ToFloat(glm::uint32 p)\n\t{\n\t\t// 10 bits    =>                         EE EEEFFFFF\n\t\t// 11 bits    =>                        EEE EEFFFFFF\n\t\t// Half bits  =>                   SEEEEEFF FFFFFFFF\n\t\t// Float bits => SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF\n\n\t\t// 0x0000001F => 00000000 00000000 00000000 00011111\n\t\t// 0x0000003F => 00000000 00000000 00000000 00111111\n\t\t// 0x000003E0 => 00000000 00000000 00000011 11100000\n\t\t// 0x000007C0 => 00000000 00000000 00000111 11000000\n\t\t// 0x00007C00 => 00000000 00000000 01111100 00000000\n\t\t// 0x000003FF => 00000000 00000000 00000011 11111111\n\t\t// 0x38000000 => 00111000 00000000 00000000 00000000\n\t\t// 0x7f800000 => 01111111 10000000 00000000 00000000\n\t\t// 0x00008000 => 00000000 00000000 10000000 00000000\n\t\treturn\n\t\t\t((((p & 0x03E0) << 18) + 0x38000000) & 0x7f800000) | // exponential\n\t\t\t((p & 0x001f) << 18); // Mantissa\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint half2float(glm::uint h)\n\t{\n\t\treturn ((h & 0x8000) << 16) | ((( h & 0x7c00) + 0x1C000) << 13) | ((h & 0x03FF) << 13);\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint floatTo11bit(float x)\n\t{\n\t\tif(x == 0.0f)\n\t\t\treturn 0u;\n\t\telse if(glm::isnan(x))\n\t\t\treturn ~0u;\n\t\telse if(glm::isinf(x))\n\t\t\treturn 0x1Fu << 6u;\n\n\t\tuint Pack = 0u;\n\t\tmemcpy(&Pack, &x, sizeof(Pack));\n\t\treturn float2packed11(Pack);\n\t}\n\n\tGLM_FUNC_QUALIFIER float packed11bitToFloat(glm::uint x)\n\t{\n\t\tif(x == 0)\n\t\t\treturn 0.0f;\n\t\telse if(x == ((1 << 11) - 1))\n\t\t\treturn ~0;//NaN\n\t\telse if(x == (0x1f << 6))\n\t\t\treturn ~0;//Inf\n\n\t\tuint Result = packed11ToFloat(x);\n\n\t\tfloat Temp = 0;\n\t\tmemcpy(&Temp, &Result, sizeof(Temp));\n\t\treturn Temp;\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::uint floatTo10bit(float x)\n\t{\n\t\tif(x == 0.0f)\n\t\t\treturn 0u;\n\t\telse if(glm::isnan(x))\n\t\t\treturn ~0u;\n\t\telse if(glm::isinf(x))\n\t\t\treturn 0x1Fu << 5u;\n\n\t\tuint Pack = 0;\n\t\tmemcpy(&Pack, &x, sizeof(Pack));\n\t\treturn float2packed10(Pack);\n\t}\n\n\tGLM_FUNC_QUALIFIER float packed10bitToFloat(glm::uint x)\n\t{\n\t\tif(x == 0)\n\t\t\treturn 0.0f;\n\t\telse if(x == ((1 << 10) - 1))\n\t\t\treturn ~0;//NaN\n\t\telse if(x == (0x1f << 5))\n\t\t\treturn ~0;//Inf\n\n\t\tuint Result = packed10ToFloat(x);\n\n\t\tfloat Temp = 0;\n\t\tmemcpy(&Temp, &Result, sizeof(Temp));\n\t\treturn Temp;\n\t}\n\n//\tGLM_FUNC_QUALIFIER glm::uint f11_f11_f10(float x, float y, float z)\n//\t{\n//\t\treturn ((floatTo11bit(x) & ((1 << 11) - 1)) << 0) |  ((floatTo11bit(y) & ((1 << 11) - 1)) << 11) | ((floatTo10bit(z) & ((1 << 10) - 1)) << 22);\n//\t}\n\n\tunion u3u3u2\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 3;\n\t\t\tuint y : 3;\n\t\t\tuint z : 2;\n\t\t} data;\n\t\tuint8 pack;\n\t};\n\n\tunion u4u4\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 4;\n\t\t\tuint y : 4;\n\t\t} data;\n\t\tuint8 pack;\n\t};\n\n\tunion u4u4u4u4\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 4;\n\t\t\tuint y : 4;\n\t\t\tuint z : 4;\n\t\t\tuint w : 4;\n\t\t} data;\n\t\tuint16 pack;\n\t};\n\n\tunion u5u6u5\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 5;\n\t\t\tuint y : 6;\n\t\t\tuint z : 5;\n\t\t} data;\n\t\tuint16 pack;\n\t};\n\n\tunion u5u5u5u1\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 5;\n\t\t\tuint y : 5;\n\t\t\tuint z : 5;\n\t\t\tuint w : 1;\n\t\t} data;\n\t\tuint16 pack;\n\t};\n\n\tunion u10u10u10u2\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 10;\n\t\t\tuint y : 10;\n\t\t\tuint z : 10;\n\t\t\tuint w : 2;\n\t\t} data;\n\t\tuint32 pack;\n\t};\n\n\tunion i10i10i10i2\n\t{\n\t\tstruct\n\t\t{\n\t\t\tint x : 10;\n\t\t\tint y : 10;\n\t\t\tint z : 10;\n\t\t\tint w : 2;\n\t\t} data;\n\t\tuint32 pack;\n\t};\n\n\tunion u9u9u9e5\n\t{\n\t\tstruct\n\t\t{\n\t\t\tuint x : 9;\n\t\t\tuint y : 9;\n\t\t\tuint z : 9;\n\t\t\tuint w : 5;\n\t\t} data;\n\t\tuint32 pack;\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_half\n\t{};\n\n\ttemplate<qualifier Q>\n\tstruct compute_half<1, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<1, uint16, Q> pack(vec<1, float, Q> const& v)\n\t\t{\n\t\t\tint16 const Unpack(detail::toFloat16(v.x));\n\t\t\tu16vec1 Packed;\n\t\t\tmemcpy(&Packed, &Unpack, sizeof(Packed));\n\t\t\treturn Packed;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER static vec<1, float, Q> unpack(vec<1, uint16, Q> const& v)\n\t\t{\n\t\t\ti16vec1 Unpack;\n\t\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\t\treturn vec<1, float, Q>(detail::toFloat32(v.x));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_half<2, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, uint16, Q> pack(vec<2, float, Q> const& v)\n\t\t{\n\t\t\tvec<2, int16, Q> const Unpack(detail::toFloat16(v.x), detail::toFloat16(v.y));\n\t\t\tu16vec2 Packed;\n\t\t\tmemcpy(&Packed, &Unpack, sizeof(Packed));\n\t\t\treturn Packed;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER static vec<2, float, Q> unpack(vec<2, uint16, Q> const& v)\n\t\t{\n\t\t\ti16vec2 Unpack;\n\t\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\t\treturn vec<2, float, Q>(detail::toFloat32(v.x), detail::toFloat32(v.y));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_half<3, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, uint16, Q> pack(vec<3, float, Q> const& v)\n\t\t{\n\t\t\tvec<3, int16, Q> const Unpack(detail::toFloat16(v.x), detail::toFloat16(v.y), detail::toFloat16(v.z));\n\t\t\tu16vec3 Packed;\n\t\t\tmemcpy(&Packed, &Unpack, sizeof(Packed));\n\t\t\treturn Packed;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER static vec<3, float, Q> unpack(vec<3, uint16, Q> const& v)\n\t\t{\n\t\t\ti16vec3 Unpack;\n\t\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\t\treturn vec<3, float, Q>(detail::toFloat32(v.x), detail::toFloat32(v.y), detail::toFloat32(v.z));\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_half<4, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint16, Q> pack(vec<4, float, Q> const& v)\n\t\t{\n\t\t\tvec<4, int16, Q> const Unpack(detail::toFloat16(v.x), detail::toFloat16(v.y), detail::toFloat16(v.z), detail::toFloat16(v.w));\n\t\t\tu16vec4 Packed;\n\t\t\tmemcpy(&Packed, &Unpack, sizeof(Packed));\n\t\t\treturn Packed;\n\t\t}\n\n\t\tGLM_FUNC_QUALIFIER static vec<4, float, Q> unpack(vec<4, uint16, Q> const& v)\n\t\t{\n\t\t\ti16vec4 Unpack;\n\t\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\t\treturn vec<4, float, Q>(detail::toFloat32(v.x), detail::toFloat32(v.y), detail::toFloat32(v.z), detail::toFloat32(v.w));\n\t\t}\n\t};\n}//namespace detail\n\n\tGLM_FUNC_QUALIFIER uint8 packUnorm1x8(float v)\n\t{\n\t\treturn static_cast<uint8>(round(clamp(v, 0.0f, 1.0f) * 255.0f));\n\t}\n\n\tGLM_FUNC_QUALIFIER float unpackUnorm1x8(uint8 p)\n\t{\n\t\tfloat const Unpack(p);\n\t\treturn Unpack * static_cast<float>(0.0039215686274509803921568627451); // 1 / 255\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUnorm2x8(vec2 const& v)\n\t{\n\t\tu8vec2 const Topack(round(clamp(v, 0.0f, 1.0f) * 255.0f));\n\n\t\tuint16 Unpack = 0;\n\t\tmemcpy(&Unpack, &Topack, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackUnorm2x8(uint16 p)\n\t{\n\t\tu8vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn vec2(Unpack) * float(0.0039215686274509803921568627451); // 1 / 255\n\t}\n\n\tGLM_FUNC_QUALIFIER uint8 packSnorm1x8(float v)\n\t{\n\t\tint8 const Topack(static_cast<int8>(round(clamp(v ,-1.0f, 1.0f) * 127.0f)));\n\t\tuint8 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER float unpackSnorm1x8(uint8 p)\n\t{\n\t\tint8 Unpack = 0;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn clamp(\n\t\t\tstatic_cast<float>(Unpack) * 0.00787401574803149606299212598425f, // 1.0f / 127.0f\n\t\t\t-1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packSnorm2x8(vec2 const& v)\n\t{\n\t\ti8vec2 const Topack(round(clamp(v, -1.0f, 1.0f) * 127.0f));\n\t\tuint16 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackSnorm2x8(uint16 p)\n\t{\n\t\ti8vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn clamp(\n\t\t\tvec2(Unpack) * 0.00787401574803149606299212598425f, // 1.0f / 127.0f\n\t\t\t-1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUnorm1x16(float s)\n\t{\n\t\treturn static_cast<uint16>(round(clamp(s, 0.0f, 1.0f) * 65535.0f));\n\t}\n\n\tGLM_FUNC_QUALIFIER float unpackUnorm1x16(uint16 p)\n\t{\n\t\tfloat const Unpack(p);\n\t\treturn Unpack * 1.5259021896696421759365224689097e-5f; // 1.0 / 65535.0\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 packUnorm4x16(vec4 const& v)\n\t{\n\t\tu16vec4 const Topack(round(clamp(v , 0.0f, 1.0f) * 65535.0f));\n\t\tuint64 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackUnorm4x16(uint64 p)\n\t{\n\t\tu16vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn vec4(Unpack) * 1.5259021896696421759365224689097e-5f; // 1.0 / 65535.0\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packSnorm1x16(float v)\n\t{\n\t\tint16 const Topack = static_cast<int16>(round(clamp(v ,-1.0f, 1.0f) * 32767.0f));\n\t\tuint16 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER float unpackSnorm1x16(uint16 p)\n\t{\n\t\tint16 Unpack = 0;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn clamp(\n\t\t\tstatic_cast<float>(Unpack) * 3.0518509475997192297128208258309e-5f, //1.0f / 32767.0f,\n\t\t\t-1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 packSnorm4x16(vec4 const& v)\n\t{\n\t\ti16vec4 const Topack(round(clamp(v ,-1.0f, 1.0f) * 32767.0f));\n\t\tuint64 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackSnorm4x16(uint64 p)\n\t{\n\t\ti16vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn clamp(\n\t\t\tvec4(Unpack) * 3.0518509475997192297128208258309e-5f, //1.0f / 32767.0f,\n\t\t\t-1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packHalf1x16(float v)\n\t{\n\t\tint16 const Topack(detail::toFloat16(v));\n\t\tuint16 Packed = 0;\n\t\tmemcpy(&Packed, &Topack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER float unpackHalf1x16(uint16 v)\n\t{\n\t\tint16 Unpack = 0;\n\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\treturn detail::toFloat32(Unpack);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 packHalf4x16(glm::vec4 const& v)\n\t{\n\t\ti16vec4 const Unpack(\n\t\t\tdetail::toFloat16(v.x),\n\t\t\tdetail::toFloat16(v.y),\n\t\t\tdetail::toFloat16(v.z),\n\t\t\tdetail::toFloat16(v.w));\n\t\tuint64 Packed = 0;\n\t\tmemcpy(&Packed, &Unpack, sizeof(Packed));\n\t\treturn Packed;\n\t}\n\n\tGLM_FUNC_QUALIFIER glm::vec4 unpackHalf4x16(uint64 v)\n\t{\n\t\ti16vec4 Unpack;\n\t\tmemcpy(&Unpack, &v, sizeof(Unpack));\n\t\treturn vec4(\n\t\t\tdetail::toFloat32(Unpack.x),\n\t\t\tdetail::toFloat32(Unpack.y),\n\t\t\tdetail::toFloat32(Unpack.z),\n\t\t\tdetail::toFloat32(Unpack.w));\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packI3x10_1x2(ivec4 const& v)\n\t{\n\t\tdetail::i10i10i10i2 Result;\n\t\tResult.data.x = v.x;\n\t\tResult.data.y = v.y;\n\t\tResult.data.z = v.z;\n\t\tResult.data.w = v.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER ivec4 unpackI3x10_1x2(uint32 v)\n\t{\n\t\tdetail::i10i10i10i2 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn ivec4(\n\t\t\tUnpack.data.x,\n\t\t\tUnpack.data.y,\n\t\t\tUnpack.data.z,\n\t\t\tUnpack.data.w);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packU3x10_1x2(uvec4 const& v)\n\t{\n\t\tdetail::u10u10u10u2 Result;\n\t\tResult.data.x = v.x;\n\t\tResult.data.y = v.y;\n\t\tResult.data.z = v.z;\n\t\tResult.data.w = v.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uvec4 unpackU3x10_1x2(uint32 v)\n\t{\n\t\tdetail::u10u10u10u2 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn uvec4(\n\t\t\tUnpack.data.x,\n\t\t\tUnpack.data.y,\n\t\t\tUnpack.data.z,\n\t\t\tUnpack.data.w);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packSnorm3x10_1x2(vec4 const& v)\n\t{\n\t\tivec4 const Pack(round(clamp(v,-1.0f, 1.0f) * vec4(511.f, 511.f, 511.f, 1.f)));\n\n\t\tdetail::i10i10i10i2 Result;\n\t\tResult.data.x = Pack.x;\n\t\tResult.data.y = Pack.y;\n\t\tResult.data.z = Pack.z;\n\t\tResult.data.w = Pack.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackSnorm3x10_1x2(uint32 v)\n\t{\n\t\tdetail::i10i10i10i2 Unpack;\n\t\tUnpack.pack = v;\n\n\t\tvec4 const Result(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w);\n\n\t\treturn clamp(Result * vec4(1.f / 511.f, 1.f / 511.f, 1.f / 511.f, 1.f), -1.0f, 1.0f);\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packUnorm3x10_1x2(vec4 const& v)\n\t{\n\t\tuvec4 const Unpack(round(clamp(v, 0.0f, 1.0f) * vec4(1023.f, 1023.f, 1023.f, 3.f)));\n\n\t\tdetail::u10u10u10u2 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\tResult.data.z = Unpack.z;\n\t\tResult.data.w = Unpack.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackUnorm3x10_1x2(uint32 v)\n\t{\n\t\tvec4 const ScaleFactors(1.0f / 1023.f, 1.0f / 1023.f, 1.0f / 1023.f, 1.0f / 3.f);\n\n\t\tdetail::u10u10u10u2 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec4(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w) * ScaleFactors;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packF2x11_1x10(vec3 const& v)\n\t{\n\t\treturn\n\t\t\t((detail::floatTo11bit(v.x) & ((1 << 11) - 1)) <<  0) |\n\t\t\t((detail::floatTo11bit(v.y) & ((1 << 11) - 1)) << 11) |\n\t\t\t((detail::floatTo10bit(v.z) & ((1 << 10) - 1)) << 22);\n\t}\n\n\tGLM_FUNC_QUALIFIER vec3 unpackF2x11_1x10(uint32 v)\n\t{\n\t\treturn vec3(\n\t\t\tdetail::packed11bitToFloat(v >> 0),\n\t\t\tdetail::packed11bitToFloat(v >> 11),\n\t\t\tdetail::packed10bitToFloat(v >> 22));\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packF3x9_E1x5(vec3 const& v)\n\t{\n\t\tfloat const SharedExpMax = (pow(2.0f, 9.0f - 1.0f) / pow(2.0f, 9.0f)) * pow(2.0f, 31.f - 15.f);\n\t\tvec3 const Color = clamp(v, 0.0f, SharedExpMax);\n\t\tfloat const MaxColor = max(Color.x, max(Color.y, Color.z));\n\n\t\tfloat const ExpSharedP = max(-15.f - 1.f, floor(log2(MaxColor))) + 1.0f + 15.f;\n\t\tfloat const MaxShared = floor(MaxColor / pow(2.0f, (ExpSharedP - 15.f - 9.f)) + 0.5f);\n\t\tfloat const ExpShared = equal(MaxShared, pow(2.0f, 9.0f), epsilon<float>()) ? ExpSharedP + 1.0f : ExpSharedP;\n\n\t\tuvec3 const ColorComp(floor(Color / pow(2.f, (ExpShared - 15.f - 9.f)) + 0.5f));\n\n\t\tdetail::u9u9u9e5 Unpack;\n\t\tUnpack.data.x = ColorComp.x;\n\t\tUnpack.data.y = ColorComp.y;\n\t\tUnpack.data.z = ColorComp.z;\n\t\tUnpack.data.w = uint(ExpShared);\n\t\treturn Unpack.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec3 unpackF3x9_E1x5(uint32 v)\n\t{\n\t\tdetail::u9u9u9e5 Unpack;\n\t\tUnpack.pack = v;\n\n\t\treturn vec3(Unpack.data.x, Unpack.data.y, Unpack.data.z) * pow(2.0f, Unpack.data.w - 15.f - 9.f);\n\t}\n\n\t// Based on Brian Karis http://graphicrants.blogspot.fr/2009/04/rgbm-color-encoding.html\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> packRGBM(vec<3, T, Q> const& rgb)\n\t{\n\t\tvec<3, T, Q> const Color(rgb * static_cast<T>(1.0 / 6.0));\n\t\tT Alpha = clamp(max(max(Color.x, Color.y), max(Color.z, static_cast<T>(1e-6))), static_cast<T>(0), static_cast<T>(1));\n\t\tAlpha = ceil(Alpha * static_cast<T>(255.0)) / static_cast<T>(255.0);\n\t\treturn vec<4, T, Q>(Color / Alpha, Alpha);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& rgbm)\n\t{\n\t\treturn vec<3, T, Q>(rgbm.x, rgbm.y, rgbm.z) * rgbm.w * static_cast<T>(6);\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v)\n\t{\n\t\treturn detail::compute_half<L, Q>::pack(v);\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& v)\n\t{\n\t\treturn detail::compute_half<L, Q>::unpack(v);\n\t}\n\n\ttemplate<typename uintType, length_t L, typename floatType, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, uintType, Q> packUnorm(vec<L, floatType, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<uintType>::is_integer, \"uintType must be an integer type\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"floatType must be a floating point type\");\n\n\t\treturn vec<L, uintType, Q>(round(clamp(v, static_cast<floatType>(0), static_cast<floatType>(1)) * static_cast<floatType>(std::numeric_limits<uintType>::max())));\n\t}\n\n\ttemplate<typename floatType, length_t L, typename uintType, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, floatType, Q> unpackUnorm(vec<L, uintType, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<uintType>::is_integer, \"uintType must be an integer type\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"floatType must be a floating point type\");\n\n\t\treturn vec<L, float, Q>(v) * (static_cast<floatType>(1) / static_cast<floatType>(std::numeric_limits<uintType>::max()));\n\t}\n\n\ttemplate<typename intType, length_t L, typename floatType, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<intType>::is_integer, \"uintType must be an integer type\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"floatType must be a floating point type\");\n\n\t\treturn vec<L, intType, Q>(round(clamp(v , static_cast<floatType>(-1), static_cast<floatType>(1)) * static_cast<floatType>(std::numeric_limits<intType>::max())));\n\t}\n\n\ttemplate<typename floatType, length_t L, typename intType, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<intType>::is_integer, \"uintType must be an integer type\");\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"floatType must be a floating point type\");\n\n\t\treturn clamp(vec<L, floatType, Q>(v) * (static_cast<floatType>(1) / static_cast<floatType>(std::numeric_limits<intType>::max())), static_cast<floatType>(-1), static_cast<floatType>(1));\n\t}\n\n\tGLM_FUNC_QUALIFIER uint8 packUnorm2x4(vec2 const& v)\n\t{\n\t\tu32vec2 const Unpack(round(clamp(v, 0.0f, 1.0f) * 15.0f));\n\t\tdetail::u4u4 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec2 unpackUnorm2x4(uint8 v)\n\t{\n\t\tfloat const ScaleFactor(1.f / 15.f);\n\t\tdetail::u4u4 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec2(Unpack.data.x, Unpack.data.y) * ScaleFactor;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUnorm4x4(vec4 const& v)\n\t{\n\t\tu32vec4 const Unpack(round(clamp(v, 0.0f, 1.0f) * 15.0f));\n\t\tdetail::u4u4u4u4 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\tResult.data.z = Unpack.z;\n\t\tResult.data.w = Unpack.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackUnorm4x4(uint16 v)\n\t{\n\t\tfloat const ScaleFactor(1.f / 15.f);\n\t\tdetail::u4u4u4u4 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec4(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w) * ScaleFactor;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUnorm1x5_1x6_1x5(vec3 const& v)\n\t{\n\t\tu32vec3 const Unpack(round(clamp(v, 0.0f, 1.0f) * vec3(31.f, 63.f, 31.f)));\n\t\tdetail::u5u6u5 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\tResult.data.z = Unpack.z;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec3 unpackUnorm1x5_1x6_1x5(uint16 v)\n\t{\n\t\tvec3 const ScaleFactor(1.f / 31.f, 1.f / 63.f, 1.f / 31.f);\n\t\tdetail::u5u6u5 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec3(Unpack.data.x, Unpack.data.y, Unpack.data.z) * ScaleFactor;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUnorm3x5_1x1(vec4 const& v)\n\t{\n\t\tu32vec4 const Unpack(round(clamp(v, 0.0f, 1.0f) * vec4(31.f, 31.f, 31.f, 1.f)));\n\t\tdetail::u5u5u5u1 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\tResult.data.z = Unpack.z;\n\t\tResult.data.w = Unpack.w;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec4 unpackUnorm3x5_1x1(uint16 v)\n\t{\n\t\tvec4 const ScaleFactor(1.f / 31.f, 1.f / 31.f, 1.f / 31.f, 1.f);\n\t\tdetail::u5u5u5u1 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec4(Unpack.data.x, Unpack.data.y, Unpack.data.z, Unpack.data.w) * ScaleFactor;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint8 packUnorm2x3_1x2(vec3 const& v)\n\t{\n\t\tu32vec3 const Unpack(round(clamp(v, 0.0f, 1.0f) * vec3(7.f, 7.f, 3.f)));\n\t\tdetail::u3u3u2 Result;\n\t\tResult.data.x = Unpack.x;\n\t\tResult.data.y = Unpack.y;\n\t\tResult.data.z = Unpack.z;\n\t\treturn Result.pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER vec3 unpackUnorm2x3_1x2(uint8 v)\n\t{\n\t\tvec3 const ScaleFactor(1.f / 7.f, 1.f / 7.f, 1.f / 3.f);\n\t\tdetail::u3u3u2 Unpack;\n\t\tUnpack.pack = v;\n\t\treturn vec3(Unpack.data.x, Unpack.data.y, Unpack.data.z) * ScaleFactor;\n\t}\n\n\tGLM_FUNC_QUALIFIER int16 packInt2x8(i8vec2 const& v)\n\t{\n\t\tint16 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER i8vec2 unpackInt2x8(int16 p)\n\t{\n\t\ti8vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint16 packUint2x8(u8vec2 const& v)\n\t{\n\t\tuint16 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER u8vec2 unpackUint2x8(uint16 p)\n\t{\n\t\tu8vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER int32 packInt4x8(i8vec4 const& v)\n\t{\n\t\tint32 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER i8vec4 unpackInt4x8(int32 p)\n\t{\n\t\ti8vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint32 packUint4x8(u8vec4 const& v)\n\t{\n\t\tuint32 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER u8vec4 unpackUint4x8(uint32 p)\n\t{\n\t\tu8vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER int packInt2x16(i16vec2 const& v)\n\t{\n\t\tint Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER i16vec2 unpackInt2x16(int p)\n\t{\n\t\ti16vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 packInt4x16(i16vec4 const& v)\n\t{\n\t\tint64 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER i16vec4 unpackInt4x16(int64 p)\n\t{\n\t\ti16vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint packUint2x16(u16vec2 const& v)\n\t{\n\t\tuint Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER u16vec2 unpackUint2x16(uint p)\n\t{\n\t\tu16vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 packUint4x16(u16vec4 const& v)\n\t{\n\t\tuint64 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER u16vec4 unpackUint4x16(uint64 p)\n\t{\n\t\tu16vec4 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 packInt2x32(i32vec2 const& v)\n\t{\n\t\tint64 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER i32vec2 unpackInt2x32(int64 p)\n\t{\n\t\ti32vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint64 packUint2x32(u32vec2 const& v)\n\t{\n\t\tuint64 Pack = 0;\n\t\tmemcpy(&Pack, &v, sizeof(Pack));\n\t\treturn Pack;\n\t}\n\n\tGLM_FUNC_QUALIFIER u32vec2 unpackUint2x32(uint64 p)\n\t{\n\t\tu32vec2 Unpack;\n\t\tmemcpy(&Unpack, &p, sizeof(Unpack));\n\t\treturn Unpack;\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtc/quaternion.hpp",
    "content": "/// @ref gtc_quaternion\n/// @file glm/gtc/quaternion.hpp\n///\n/// @see core (dependence)\n/// @see gtc_constants (dependence)\n///\n/// @defgroup gtc_quaternion GLM_GTC_quaternion\n/// @ingroup gtc\n///\n/// Include <glm/gtc/quaternion.hpp> to use the features of this extension.\n///\n/// Defines a templated quaternion type and several quaternion operations.\n\n#pragma once\n\n// Dependency:\n#include \"../gtc/constants.hpp\"\n#include \"../gtc/matrix_transform.hpp\"\n#include \"../ext/vector_relational.hpp\"\n#include \"../ext/quaternion_common.hpp\"\n#include \"../ext/quaternion_float.hpp\"\n#include \"../ext/quaternion_float_precision.hpp\"\n#include \"../ext/quaternion_double.hpp\"\n#include \"../ext/quaternion_double_precision.hpp\"\n#include \"../ext/quaternion_relational.hpp\"\n#include \"../ext/quaternion_geometric.hpp\"\n#include \"../ext/quaternion_trigonometric.hpp\"\n#include \"../ext/quaternion_transform.hpp\"\n#include \"../detail/type_mat3x3.hpp\"\n#include \"../detail/type_mat4x4.hpp\"\n#include \"../detail/type_vec3.hpp\"\n#include \"../detail/type_vec4.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_quaternion extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_quaternion\n\t/// @{\n\n\t/// Returns euler angles, pitch as x, yaw as y, roll as z.\n\t/// The result is expressed in radians.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> eulerAngles(qua<T, Q> const& x);\n\n\t/// Returns roll value of euler angles expressed in radians.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T roll(qua<T, Q> const& x);\n\n\t/// Returns pitch value of euler angles expressed in radians.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T pitch(qua<T, Q> const& x);\n\n\t/// Returns yaw value of euler angles expressed in radians.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T yaw(qua<T, Q> const& x);\n\n\t/// Converts a quaternion to a 3 * 3 matrix.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> mat3_cast(qua<T, Q> const& x);\n\n\t/// Converts a quaternion to a 4 * 4 matrix.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> mat4_cast(qua<T, Q> const& x);\n\n\t/// Converts a pure rotation 3 * 3 matrix to a quaternion.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> quat_cast(mat<3, 3, T, Q> const& x);\n\n\t/// Converts a pure rotation 4 * 4 matrix to a quaternion.\n\t///\n\t/// @tparam T Floating-point scalar types.\n\t///\n\t/// @see gtc_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> quat_cast(mat<4, 4, T, Q> const& x);\n\n\t/// Returns the component-wise comparison result of x < y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_relational\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> lessThan(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x <= y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_relational\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> lessThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x > y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_relational\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> greaterThan(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x >= y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_quaternion_relational\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, bool, Q> greaterThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);\n\n\t/// Build a look at quaternion based on the default handedness.\n\t///\n\t/// @param direction Desired forward direction. Needs to be normalized.\n\t/// @param up Up vector, how the camera is oriented. Typically (0, 1, 0).\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> quatLookAt(\n\t\tvec<3, T, Q> const& direction,\n\t\tvec<3, T, Q> const& up);\n\n\t/// Build a right-handed look at quaternion.\n\t///\n\t/// @param direction Desired forward direction onto which the -z-axis gets mapped. Needs to be normalized.\n\t/// @param up Up vector, how the camera is oriented. Typically (0, 1, 0).\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> quatLookAtRH(\n\t\tvec<3, T, Q> const& direction,\n\t\tvec<3, T, Q> const& up);\n\n\t/// Build a left-handed look at quaternion.\n\t///\n\t/// @param direction Desired forward direction onto which the +z-axis gets mapped. Needs to be normalized.\n\t/// @param up Up vector, how the camera is oriented. Typically (0, 1, 0).\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> quatLookAtLH(\n\t\tvec<3, T, Q> const& direction,\n\t\tvec<3, T, Q> const& up);\n\t/// @}\n} //namespace glm\n\n#include \"quaternion.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/quaternion.inl",
    "content": "#include \"../trigonometric.hpp\"\n#include \"../geometric.hpp\"\n#include \"../exponential.hpp\"\n#include \"epsilon.hpp\"\n#include <limits>\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> eulerAngles(qua<T, Q> const& x)\n\t{\n\t\treturn vec<3, T, Q>(pitch(x), yaw(x), roll(x));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T roll(qua<T, Q> const& q)\n\t{\n\t\treturn static_cast<T>(atan(static_cast<T>(2) * (q.x * q.y + q.w * q.z), q.w * q.w + q.x * q.x - q.y * q.y - q.z * q.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T pitch(qua<T, Q> const& q)\n\t{\n\t\t//return T(atan(T(2) * (q.y * q.z + q.w * q.x), q.w * q.w - q.x * q.x - q.y * q.y + q.z * q.z));\n\t\tT const y = static_cast<T>(2) * (q.y * q.z + q.w * q.x);\n\t\tT const x = q.w * q.w - q.x * q.x - q.y * q.y + q.z * q.z;\n\n\t\tif(all(equal(vec<2, T, Q>(x, y), vec<2, T, Q>(0), epsilon<T>()))) //avoid atan2(0,0) - handle singularity - Matiis\n\t\t\treturn static_cast<T>(static_cast<T>(2) * atan(q.x, q.w));\n\n\t\treturn static_cast<T>(atan(y, x));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T yaw(qua<T, Q> const& q)\n\t{\n\t\treturn asin(clamp(static_cast<T>(-2) * (q.x * q.z - q.w * q.y), static_cast<T>(-1), static_cast<T>(1)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> mat3_cast(qua<T, Q> const& q)\n\t{\n\t\tmat<3, 3, T, Q> Result(T(1));\n\t\tT qxx(q.x * q.x);\n\t\tT qyy(q.y * q.y);\n\t\tT qzz(q.z * q.z);\n\t\tT qxz(q.x * q.z);\n\t\tT qxy(q.x * q.y);\n\t\tT qyz(q.y * q.z);\n\t\tT qwx(q.w * q.x);\n\t\tT qwy(q.w * q.y);\n\t\tT qwz(q.w * q.z);\n\n\t\tResult[0][0] = T(1) - T(2) * (qyy +  qzz);\n\t\tResult[0][1] = T(2) * (qxy + qwz);\n\t\tResult[0][2] = T(2) * (qxz - qwy);\n\n\t\tResult[1][0] = T(2) * (qxy - qwz);\n\t\tResult[1][1] = T(1) - T(2) * (qxx +  qzz);\n\t\tResult[1][2] = T(2) * (qyz + qwx);\n\n\t\tResult[2][0] = T(2) * (qxz + qwy);\n\t\tResult[2][1] = T(2) * (qyz - qwx);\n\t\tResult[2][2] = T(1) - T(2) * (qxx +  qyy);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> mat4_cast(qua<T, Q> const& q)\n\t{\n\t\treturn mat<4, 4, T, Q>(mat3_cast(q));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> quat_cast(mat<3, 3, T, Q> const& m)\n\t{\n\t\tT fourXSquaredMinus1 = m[0][0] - m[1][1] - m[2][2];\n\t\tT fourYSquaredMinus1 = m[1][1] - m[0][0] - m[2][2];\n\t\tT fourZSquaredMinus1 = m[2][2] - m[0][0] - m[1][1];\n\t\tT fourWSquaredMinus1 = m[0][0] + m[1][1] + m[2][2];\n\n\t\tint biggestIndex = 0;\n\t\tT fourBiggestSquaredMinus1 = fourWSquaredMinus1;\n\t\tif(fourXSquaredMinus1 > fourBiggestSquaredMinus1)\n\t\t{\n\t\t\tfourBiggestSquaredMinus1 = fourXSquaredMinus1;\n\t\t\tbiggestIndex = 1;\n\t\t}\n\t\tif(fourYSquaredMinus1 > fourBiggestSquaredMinus1)\n\t\t{\n\t\t\tfourBiggestSquaredMinus1 = fourYSquaredMinus1;\n\t\t\tbiggestIndex = 2;\n\t\t}\n\t\tif(fourZSquaredMinus1 > fourBiggestSquaredMinus1)\n\t\t{\n\t\t\tfourBiggestSquaredMinus1 = fourZSquaredMinus1;\n\t\t\tbiggestIndex = 3;\n\t\t}\n\n\t\tT biggestVal = sqrt(fourBiggestSquaredMinus1 + static_cast<T>(1)) * static_cast<T>(0.5);\n\t\tT mult = static_cast<T>(0.25) / biggestVal;\n\n\t\tswitch(biggestIndex)\n\t\t{\n\t\tcase 0:\n\t\t\treturn qua<T, Q>(biggestVal, (m[1][2] - m[2][1]) * mult, (m[2][0] - m[0][2]) * mult, (m[0][1] - m[1][0]) * mult);\n\t\tcase 1:\n\t\t\treturn qua<T, Q>((m[1][2] - m[2][1]) * mult, biggestVal, (m[0][1] + m[1][0]) * mult, (m[2][0] + m[0][2]) * mult);\n\t\tcase 2:\n\t\t\treturn qua<T, Q>((m[2][0] - m[0][2]) * mult, (m[0][1] + m[1][0]) * mult, biggestVal, (m[1][2] + m[2][1]) * mult);\n\t\tcase 3:\n\t\t\treturn qua<T, Q>((m[0][1] - m[1][0]) * mult, (m[2][0] + m[0][2]) * mult, (m[1][2] + m[2][1]) * mult, biggestVal);\n\t\tdefault: // Silence a -Wswitch-default warning in GCC. Should never actually get here. Assert is just for sanity.\n\t\t\tassert(false);\n\t\t\treturn qua<T, Q>(1, 0, 0, 0);\n\t\t}\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> quat_cast(mat<4, 4, T, Q> const& m4)\n\t{\n\t\treturn quat_cast(mat<3, 3, T, Q>(m4));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> lessThan(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] < y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> lessThanEqual(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] <= y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> greaterThan(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] > y[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> greaterThanEqual(qua<T, Q> const& x, qua<T, Q> const& y)\n\t{\n\t\tvec<4, bool, Q> Result;\n\t\tfor(length_t i = 0; i < x.length(); ++i)\n\t\t\tResult[i] = x[i] >= y[i];\n\t\treturn Result;\n\t}\n\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> quatLookAt(vec<3, T, Q> const& direction, vec<3, T, Q> const& up)\n\t{\n#\t\tif GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT\n\t\t\treturn quatLookAtLH(direction, up);\n#\t\telse\n\t\t\treturn quatLookAtRH(direction, up);\n# \t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> quatLookAtRH(vec<3, T, Q> const& direction, vec<3, T, Q> const& up)\n\t{\n\t\tmat<3, 3, T, Q> Result;\n\n\t\tResult[2] = -direction;\n\t\tResult[0] = normalize(cross(up, Result[2]));\n\t\tResult[1] = cross(Result[2], Result[0]);\n\n\t\treturn quat_cast(Result);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> quatLookAtLH(vec<3, T, Q> const& direction, vec<3, T, Q> const& up)\n\t{\n\t\tmat<3, 3, T, Q> Result;\n\n\t\tResult[2] = direction;\n\t\tResult[0] = normalize(cross(up, Result[2]));\n\t\tResult[1] = cross(Result[2], Result[0]);\n\n\t\treturn quat_cast(Result);\n\t}\n}//namespace glm\n\n#if GLM_CONFIG_SIMD == GLM_ENABLE\n#\tinclude \"quaternion_simd.inl\"\n#endif\n\n"
  },
  {
    "path": "libraries/glm/gtc/quaternion_simd.inl",
    "content": ""
  },
  {
    "path": "libraries/glm/gtc/random.hpp",
    "content": "/// @ref gtc_random\n/// @file glm/gtc/random.hpp\n///\n/// @see core (dependence)\n/// @see gtx_random (extended)\n///\n/// @defgroup gtc_random GLM_GTC_random\n/// @ingroup gtc\n///\n/// Include <glm/gtc/random.hpp> to use the features of this extension.\n///\n/// Generate random number from various distribution methods.\n\n#pragma once\n\n// Dependency:\n#include \"../ext/scalar_int_sized.hpp\"\n#include \"../ext/scalar_uint_sized.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_random extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_random\n\t/// @{\n\n\t/// Generate random numbers in the interval [Min, Max], according a linear distribution\n\t///\n\t/// @param Min Minimum value included in the sampling\n\t/// @param Max Maximum value included in the sampling\n\t/// @tparam genType Value type. Currently supported: float or double scalars.\n\t/// @see gtc_random\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType linearRand(genType Min, genType Max);\n\n\t/// Generate random numbers in the interval [Min, Max], according a linear distribution\n\t///\n\t/// @param Min Minimum value included in the sampling\n\t/// @param Max Maximum value included in the sampling\n\t/// @tparam T Value type. Currently supported: float or double.\n\t///\n\t/// @see gtc_random\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> linearRand(vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);\n\n\t/// Generate random numbers in the interval [Min, Max], according a gaussian distribution\n\t///\n\t/// @see gtc_random\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType gaussRand(genType Mean, genType Deviation);\n\n\t/// Generate a random 2D vector which coordinates are regulary distributed on a circle of a given radius\n\t///\n\t/// @see gtc_random\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<2, T, defaultp> circularRand(T Radius);\n\n\t/// Generate a random 3D vector which coordinates are regulary distributed on a sphere of a given radius\n\t///\n\t/// @see gtc_random\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<3, T, defaultp> sphericalRand(T Radius);\n\n\t/// Generate a random 2D vector which coordinates are regulary distributed within the area of a disk of a given radius\n\t///\n\t/// @see gtc_random\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<2, T, defaultp> diskRand(T Radius);\n\n\t/// Generate a random 3D vector which coordinates are regulary distributed within the volume of a ball of a given radius\n\t///\n\t/// @see gtc_random\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<3, T, defaultp> ballRand(T Radius);\n\n\t/// @}\n}//namespace glm\n\n#include \"random.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/random.inl",
    "content": "#include \"../geometric.hpp\"\n#include \"../exponential.hpp\"\n#include \"../trigonometric.hpp\"\n#include \"../detail/type_vec1.hpp\"\n#include <cstdlib>\n#include <ctime>\n#include <cassert>\n#include <cmath>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate <length_t L, typename T, qualifier Q>\n\tstruct compute_rand\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call();\n\t};\n\n\ttemplate <qualifier P>\n\tstruct compute_rand<1, uint8, P>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<1, uint8, P> call()\n\t\t{\n\t\t\treturn vec<1, uint8, P>(\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max());\n\t\t}\n\t};\n\n\ttemplate <qualifier P>\n\tstruct compute_rand<2, uint8, P>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, uint8, P> call()\n\t\t{\n\t\t\treturn vec<2, uint8, P>(\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max());\n\t\t}\n\t};\n\n\ttemplate <qualifier P>\n\tstruct compute_rand<3, uint8, P>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, uint8, P> call()\n\t\t{\n\t\t\treturn vec<3, uint8, P>(\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max());\n\t\t}\n\t};\n\n\ttemplate <qualifier P>\n\tstruct compute_rand<4, uint8, P>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, uint8, P> call()\n\t\t{\n\t\t\treturn vec<4, uint8, P>(\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max(),\n\t\t\t\tstd::rand() % std::numeric_limits<uint8>::max());\n\t\t}\n\t};\n\n\ttemplate <length_t L, qualifier Q>\n\tstruct compute_rand<L, uint16, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint16, Q> call()\n\t\t{\n\t\t\treturn\n\t\t\t\t(vec<L, uint16, Q>(compute_rand<L, uint8, Q>::call()) << static_cast<uint16>(8)) |\n\t\t\t\t(vec<L, uint16, Q>(compute_rand<L, uint8, Q>::call()) << static_cast<uint16>(0));\n\t\t}\n\t};\n\n\ttemplate <length_t L, qualifier Q>\n\tstruct compute_rand<L, uint32, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint32, Q> call()\n\t\t{\n\t\t\treturn\n\t\t\t\t(vec<L, uint32, Q>(compute_rand<L, uint16, Q>::call()) << static_cast<uint32>(16)) |\n\t\t\t\t(vec<L, uint32, Q>(compute_rand<L, uint16, Q>::call()) << static_cast<uint32>(0));\n\t\t}\n\t};\n\n\ttemplate <length_t L, qualifier Q>\n\tstruct compute_rand<L, uint64, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint64, Q> call()\n\t\t{\n\t\t\treturn\n\t\t\t\t(vec<L, uint64, Q>(compute_rand<L, uint32, Q>::call()) << static_cast<uint64>(32)) |\n\t\t\t\t(vec<L, uint64, Q>(compute_rand<L, uint32, Q>::call()) << static_cast<uint64>(0));\n\t\t}\n\t};\n\n\ttemplate <length_t L, typename T, qualifier Q>\n\tstruct compute_linearRand\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, int8, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, int8, Q> call(vec<L, int8, Q> const& Min, vec<L, int8, Q> const& Max)\n\t\t{\n\t\t\treturn (vec<L, int8, Q>(compute_rand<L, uint8, Q>::call() % vec<L, uint8, Q>(Max + static_cast<int8>(1) - Min))) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, uint8, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint8, Q> call(vec<L, uint8, Q> const& Min, vec<L, uint8, Q> const& Max)\n\t\t{\n\t\t\treturn (compute_rand<L, uint8, Q>::call() % (Max + static_cast<uint8>(1) - Min)) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, int16, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, int16, Q> call(vec<L, int16, Q> const& Min, vec<L, int16, Q> const& Max)\n\t\t{\n\t\t\treturn (vec<L, int16, Q>(compute_rand<L, uint16, Q>::call() % vec<L, uint16, Q>(Max + static_cast<int16>(1) - Min))) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, uint16, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint16, Q> call(vec<L, uint16, Q> const& Min, vec<L, uint16, Q> const& Max)\n\t\t{\n\t\t\treturn (compute_rand<L, uint16, Q>::call() % (Max + static_cast<uint16>(1) - Min)) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, int32, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, int32, Q> call(vec<L, int32, Q> const& Min, vec<L, int32, Q> const& Max)\n\t\t{\n\t\t\treturn (vec<L, int32, Q>(compute_rand<L, uint32, Q>::call() % vec<L, uint32, Q>(Max + static_cast<int32>(1) - Min))) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, uint32, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint32, Q> call(vec<L, uint32, Q> const& Min, vec<L, uint32, Q> const& Max)\n\t\t{\n\t\t\treturn (compute_rand<L, uint32, Q>::call() % (Max + static_cast<uint32>(1) - Min)) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, int64, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, int64, Q> call(vec<L, int64, Q> const& Min, vec<L, int64, Q> const& Max)\n\t\t{\n\t\t\treturn (vec<L, int64, Q>(compute_rand<L, uint64, Q>::call() % vec<L, uint64, Q>(Max + static_cast<int64>(1) - Min))) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, uint64, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, uint64, Q> call(vec<L, uint64, Q> const& Min, vec<L, uint64, Q> const& Max)\n\t\t{\n\t\t\treturn (compute_rand<L, uint64, Q>::call() % (Max + static_cast<uint64>(1) - Min)) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, float, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, float, Q> call(vec<L, float, Q> const& Min, vec<L, float, Q> const& Max)\n\t\t{\n\t\t\treturn vec<L, float, Q>(compute_rand<L, uint32, Q>::call()) / static_cast<float>(std::numeric_limits<uint32>::max()) * (Max - Min) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, double, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, double, Q> call(vec<L, double, Q> const& Min, vec<L, double, Q> const& Max)\n\t\t{\n\t\t\treturn vec<L, double, Q>(compute_rand<L, uint64, Q>::call()) / static_cast<double>(std::numeric_limits<uint64>::max()) * (Max - Min) + Min;\n\t\t}\n\t};\n\n\ttemplate<length_t L, qualifier Q>\n\tstruct compute_linearRand<L, long double, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, long double, Q> call(vec<L, long double, Q> const& Min, vec<L, long double, Q> const& Max)\n\t\t{\n\t\t\treturn vec<L, long double, Q>(compute_rand<L, uint64, Q>::call()) / static_cast<long double>(std::numeric_limits<uint64>::max()) * (Max - Min) + Min;\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType linearRand(genType Min, genType Max)\n\t{\n\t\treturn detail::compute_linearRand<1, genType, highp>::call(\n\t\t\tvec<1, genType, highp>(Min),\n\t\t\tvec<1, genType, highp>(Max)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> linearRand(vec<L, T, Q> const& Min, vec<L, T, Q> const& Max)\n\t{\n\t\treturn detail::compute_linearRand<L, T, Q>::call(Min, Max);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType gaussRand(genType Mean, genType Deviation)\n\t{\n\t\tgenType w, x1, x2;\n\n\t\tdo\n\t\t{\n\t\t\tx1 = linearRand(genType(-1), genType(1));\n\t\t\tx2 = linearRand(genType(-1), genType(1));\n\n\t\t\tw = x1 * x1 + x2 * x2;\n\t\t} while(w > genType(1));\n\n\t\treturn static_cast<genType>(x2 * Deviation * Deviation * sqrt((genType(-2) * log(w)) / w) + Mean);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> gaussRand(vec<L, T, Q> const& Mean, vec<L, T, Q> const& Deviation)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(gaussRand, Mean, Deviation);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<2, T, defaultp> diskRand(T Radius)\n\t{\n\t\tassert(Radius > static_cast<T>(0));\n\n\t\tvec<2, T, defaultp> Result(T(0));\n\t\tT LenRadius(T(0));\n\n\t\tdo\n\t\t{\n\t\t\tResult = linearRand(\n\t\t\t\tvec<2, T, defaultp>(-Radius),\n\t\t\t\tvec<2, T, defaultp>(Radius));\n\t\t\tLenRadius = length(Result);\n\t\t}\n\t\twhile(LenRadius > Radius);\n\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<3, T, defaultp> ballRand(T Radius)\n\t{\n\t\tassert(Radius > static_cast<T>(0));\n\n\t\tvec<3, T, defaultp> Result(T(0));\n\t\tT LenRadius(T(0));\n\n\t\tdo\n\t\t{\n\t\t\tResult = linearRand(\n\t\t\t\tvec<3, T, defaultp>(-Radius),\n\t\t\t\tvec<3, T, defaultp>(Radius));\n\t\t\tLenRadius = length(Result);\n\t\t}\n\t\twhile(LenRadius > Radius);\n\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<2, T, defaultp> circularRand(T Radius)\n\t{\n\t\tassert(Radius > static_cast<T>(0));\n\n\t\tT a = linearRand(T(0), static_cast<T>(6.283185307179586476925286766559));\n\t\treturn vec<2, T, defaultp>(glm::cos(a), glm::sin(a)) * Radius;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<3, T, defaultp> sphericalRand(T Radius)\n\t{\n\t\tassert(Radius > static_cast<T>(0));\n\n\t\tT theta = linearRand(T(0), T(6.283185307179586476925286766559f));\n\t\tT phi = std::acos(linearRand(T(-1.0f), T(1.0f)));\n\n\t\tT x = std::sin(phi) * std::cos(theta);\n\t\tT y = std::sin(phi) * std::sin(theta);\n\t\tT z = std::cos(phi);\n\n\t\treturn vec<3, T, defaultp>(x, y, z) * Radius;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/reciprocal.hpp",
    "content": "/// @ref gtc_reciprocal\n/// @file glm/gtc/reciprocal.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_reciprocal GLM_GTC_reciprocal\n/// @ingroup gtc\n///\n/// Include <glm/gtc/reciprocal.hpp> to use the features of this extension.\n///\n/// Define secant, cosecant and cotangent functions.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_reciprocal extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_reciprocal\n\t/// @{\n\n\t/// Secant function.\n\t/// hypotenuse / adjacent or 1 / cos(x)\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType sec(genType angle);\n\n\t/// Cosecant function.\n\t/// hypotenuse / opposite or 1 / sin(x)\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType csc(genType angle);\n\n\t/// Cotangent function.\n\t/// adjacent / opposite or 1 / tan(x)\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType cot(genType angle);\n\n\t/// Inverse secant function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType asec(genType x);\n\n\t/// Inverse cosecant function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType acsc(genType x);\n\n\t/// Inverse cotangent function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType acot(genType x);\n\n\t/// Secant hyperbolic function.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType sech(genType angle);\n\n\t/// Cosecant hyperbolic function.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType csch(genType angle);\n\n\t/// Cotangent hyperbolic function.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType coth(genType angle);\n\n\t/// Inverse secant hyperbolic function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType asech(genType x);\n\n\t/// Inverse cosecant hyperbolic function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType acsch(genType x);\n\n\t/// Inverse cotangent hyperbolic function.\n\t///\n\t/// @return Return an angle expressed in radians.\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtc_reciprocal\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType acoth(genType x);\n\n\t/// @}\n}//namespace glm\n\n#include \"reciprocal.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/reciprocal.inl",
    "content": "/// @ref gtc_reciprocal\n\n#include \"../trigonometric.hpp\"\n#include <limits>\n\nnamespace glm\n{\n\t// sec\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType sec(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'sec' only accept floating-point values\");\n\t\treturn genType(1) / glm::cos(angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sec(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'sec' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(sec, x);\n\t}\n\n\t// csc\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType csc(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'csc' only accept floating-point values\");\n\t\treturn genType(1) / glm::sin(angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> csc(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'csc' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(csc, x);\n\t}\n\n\t// cot\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType cot(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'cot' only accept floating-point values\");\n\n\t\tgenType const pi_over_2 = genType(3.1415926535897932384626433832795 / 2.0);\n\t\treturn glm::tan(pi_over_2 - angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> cot(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'cot' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(cot, x);\n\t}\n\n\t// asec\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType asec(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'asec' only accept floating-point values\");\n\t\treturn acos(genType(1) / x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> asec(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'asec' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(asec, x);\n\t}\n\n\t// acsc\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType acsc(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'acsc' only accept floating-point values\");\n\t\treturn asin(genType(1) / x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acsc(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'acsc' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acsc, x);\n\t}\n\n\t// acot\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType acot(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'acot' only accept floating-point values\");\n\n\t\tgenType const pi_over_2 = genType(3.1415926535897932384626433832795 / 2.0);\n\t\treturn pi_over_2 - atan(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acot(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'acot' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acot, x);\n\t}\n\n\t// sech\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType sech(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'sech' only accept floating-point values\");\n\t\treturn genType(1) / glm::cosh(angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> sech(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'sech' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(sech, x);\n\t}\n\n\t// csch\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType csch(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'csch' only accept floating-point values\");\n\t\treturn genType(1) / glm::sinh(angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> csch(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'csch' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(csch, x);\n\t}\n\n\t// coth\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType coth(genType angle)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'coth' only accept floating-point values\");\n\t\treturn glm::cosh(angle) / glm::sinh(angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> coth(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'coth' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(coth, x);\n\t}\n\n\t// asech\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType asech(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'asech' only accept floating-point values\");\n\t\treturn acosh(genType(1) / x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> asech(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'asech' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(asech, x);\n\t}\n\n\t// acsch\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType acsch(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'acsch' only accept floating-point values\");\n\t\treturn asinh(genType(1) / x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acsch(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'acsch' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acsch, x);\n\t}\n\n\t// acoth\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType acoth(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'acoth' only accept floating-point values\");\n\t\treturn atanh(genType(1) / x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> acoth(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'acoth' only accept floating-point inputs\");\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(acoth, x);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/round.hpp",
    "content": "/// @ref gtc_round\n/// @file glm/gtc/round.hpp\n///\n/// @see core (dependence)\n/// @see gtc_round (dependence)\n///\n/// @defgroup gtc_round GLM_GTC_round\n/// @ingroup gtc\n///\n/// Include <glm/gtc/round.hpp> to use the features of this extension.\n///\n/// Rounding value to specific boundings\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_vectorize.hpp\"\n#include \"../vector_relational.hpp\"\n#include \"../common.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_round extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_round\n\t/// @{\n\n\t/// Return the power of two number which value is just higher the input value,\n\t/// round up to a power of two.\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType ceilPowerOfTwo(genIUType v);\n\n\t/// Return the power of two number which value is just higher the input value,\n\t/// round up to a power of two.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> ceilPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Return the power of two number which value is just lower the input value,\n\t/// round down to a power of two.\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType floorPowerOfTwo(genIUType v);\n\n\t/// Return the power of two number which value is just lower the input value,\n\t/// round down to a power of two.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> floorPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Return the power of two number which value is the closet to the input value.\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType roundPowerOfTwo(genIUType v);\n\n\t/// Return the power of two number which value is the closet to the input value.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> roundPowerOfTwo(vec<L, T, Q> const& v);\n\n\t/// Higher multiple number of Source.\n\t///\n\t/// @tparam genType Floating-point or integer scalar or vector types.\n\t///\n\t/// @param v Source value to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType ceilMultiple(genType v, genType Multiple);\n\n\t/// Higher multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> ceilMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam genType Floating-point or integer scalar or vector types.\n\t///\n\t/// @param v Source value to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType floorMultiple(genType v, genType Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> floorMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam genType Floating-point or integer scalar or vector types.\n\t///\n\t/// @param v Source value to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType roundMultiple(genType v, genType Multiple);\n\n\t/// Lower multiple number of Source.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @param v Source values to which is applied the function\n\t/// @param Multiple Must be a null or positive value\n\t///\n\t/// @see gtc_round\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> roundMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);\n\n\t/// @}\n} //namespace glm\n\n#include \"round.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/round.inl",
    "content": "/// @ref gtc_round\n\n#include \"../integer.hpp\"\n#include \"../ext/vector_integer.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<bool is_float, bool is_signed>\n\tstruct compute_roundMultiple {};\n\n\ttemplate<>\n\tstruct compute_roundMultiple<true, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif (Source >= genType(0))\n\t\t\t\treturn Source - std::fmod(Source, Multiple);\n\t\t\telse\n\t\t\t{\n\t\t\t\tgenType Tmp = Source + genType(1);\n\t\t\t\treturn Tmp - std::fmod(Tmp, Multiple) - Multiple;\n\t\t\t}\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_roundMultiple<false, false>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif (Source >= genType(0))\n\t\t\t\treturn Source - Source % Multiple;\n\t\t\telse\n\t\t\t{\n\t\t\t\tgenType Tmp = Source + genType(1);\n\t\t\t\treturn Tmp - Tmp % Multiple - Multiple;\n\t\t\t}\n\t\t}\n\t};\n\n\ttemplate<>\n\tstruct compute_roundMultiple<false, true>\n\t{\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER static genType call(genType Source, genType Multiple)\n\t\t{\n\t\t\tif (Source >= genType(0))\n\t\t\t\treturn Source - Source % Multiple;\n\t\t\telse\n\t\t\t{\n\t\t\t\tgenType Tmp = Source + genType(1);\n\t\t\t\treturn Tmp - Tmp % Multiple - Multiple;\n\t\t\t}\n\t\t}\n\t};\n}//namespace detail\n\n\t//////////////////\n\t// ceilPowerOfTwo\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType ceilPowerOfTwo(genType value)\n\t{\n\t\treturn detail::compute_ceilPowerOfTwo<1, genType, defaultp, std::numeric_limits<genType>::is_signed>::call(vec<1, genType, defaultp>(value)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> ceilPowerOfTwo(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::compute_ceilPowerOfTwo<L, T, Q, std::numeric_limits<T>::is_signed>::call(v);\n\t}\n\n\t///////////////////\n\t// floorPowerOfTwo\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType floorPowerOfTwo(genType value)\n\t{\n\t\treturn isPowerOfTwo(value) ? value : static_cast<genType>(1) << findMSB(value);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> floorPowerOfTwo(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(floorPowerOfTwo, v);\n\t}\n\n\t///////////////////\n\t// roundPowerOfTwo\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType roundPowerOfTwo(genIUType value)\n\t{\n\t\tif(isPowerOfTwo(value))\n\t\t\treturn value;\n\n\t\tgenIUType const prev = static_cast<genIUType>(1) << findMSB(value);\n\t\tgenIUType const next = prev << static_cast<genIUType>(1);\n\t\treturn (next - value) < (value - prev) ? next : prev;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> roundPowerOfTwo(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(roundPowerOfTwo, v);\n\t}\n\n\t//////////////////////\n\t// ceilMultiple\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType ceilMultiple(genType Source, genType Multiple)\n\t{\n\t\treturn detail::compute_ceilMultiple<std::numeric_limits<genType>::is_iec559, std::numeric_limits<genType>::is_signed>::call(Source, Multiple);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> ceilMultiple(vec<L, T, Q> const& Source, vec<L, T, Q> const& Multiple)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(ceilMultiple, Source, Multiple);\n\t}\n\n\t//////////////////////\n\t// floorMultiple\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType floorMultiple(genType Source, genType Multiple)\n\t{\n\t\treturn detail::compute_floorMultiple<std::numeric_limits<genType>::is_iec559, std::numeric_limits<genType>::is_signed>::call(Source, Multiple);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> floorMultiple(vec<L, T, Q> const& Source, vec<L, T, Q> const& Multiple)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(floorMultiple, Source, Multiple);\n\t}\n\n\t//////////////////////\n\t// roundMultiple\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType roundMultiple(genType Source, genType Multiple)\n\t{\n\t\treturn detail::compute_roundMultiple<std::numeric_limits<genType>::is_iec559, std::numeric_limits<genType>::is_signed>::call(Source, Multiple);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> roundMultiple(vec<L, T, Q> const& Source, vec<L, T, Q> const& Multiple)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(roundMultiple, Source, Multiple);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/type_aligned.hpp",
    "content": "/// @ref gtc_type_aligned\n/// @file glm/gtc/type_aligned.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_type_aligned GLM_GTC_type_aligned\n/// @ingroup gtc\n///\n/// Include <glm/gtc/type_aligned.hpp> to use the features of this extension.\n///\n/// Aligned types allowing SIMD optimizations of vectors and matrices types\n\n#pragma once\n\n#if (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)\n#\terror \"GLM: Aligned gentypes require to enable C++ language extensions. Define GLM_FORCE_ALIGNED_GENTYPES before including GLM headers to use aligned types.\"\n#endif\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n# pragma message(\"GLM: GLM_GTC_type_aligned extension included\")\n#endif\n\n#include \"../mat4x4.hpp\"\n#include \"../mat4x3.hpp\"\n#include \"../mat4x2.hpp\"\n#include \"../mat3x4.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../mat3x2.hpp\"\n#include \"../mat2x4.hpp\"\n#include \"../mat2x3.hpp\"\n#include \"../mat2x2.hpp\"\n#include \"../gtc/vec1.hpp\"\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup gtc_type_aligned\n\t/// @{\n\n\t// -- *vec1 --\n\n\t/// 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, aligned_highp>\taligned_highp_vec1;\n\n\t/// 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, aligned_mediump>\taligned_mediump_vec1;\n\n\t/// 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, aligned_lowp>\t\taligned_lowp_vec1;\n\n\t/// 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, aligned_highp>\taligned_highp_dvec1;\n\n\t/// 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, aligned_mediump>\taligned_mediump_dvec1;\n\n\t/// 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, aligned_lowp>\taligned_lowp_dvec1;\n\n\t/// 1 component vector aligned in memory of signed integer numbers.\n\ttypedef vec<1, int, aligned_highp>\t\taligned_highp_ivec1;\n\n\t/// 1 component vector aligned in memory of signed integer numbers.\n\ttypedef vec<1, int, aligned_mediump>\taligned_mediump_ivec1;\n\n\t/// 1 component vector aligned in memory of signed integer numbers.\n\ttypedef vec<1, int, aligned_lowp>\t\taligned_lowp_ivec1;\n\n\t/// 1 component vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, aligned_highp>\t\taligned_highp_uvec1;\n\n\t/// 1 component vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, aligned_mediump>\taligned_mediump_uvec1;\n\n\t/// 1 component vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, aligned_lowp>\t\taligned_lowp_uvec1;\n\n\t/// 1 component vector aligned in memory of bool values.\n\ttypedef vec<1, bool, aligned_highp>\t\taligned_highp_bvec1;\n\n\t/// 1 component vector aligned in memory of bool values.\n\ttypedef vec<1, bool, aligned_mediump>\taligned_mediump_bvec1;\n\n\t/// 1 component vector aligned in memory of bool values.\n\ttypedef vec<1, bool, aligned_lowp>\t\taligned_lowp_bvec1;\n\n\t/// 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, packed_highp>\t\tpacked_highp_vec1;\n\n\t/// 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, packed_mediump>\tpacked_mediump_vec1;\n\n\t/// 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, float, packed_lowp>\t\tpacked_lowp_vec1;\n\n\t/// 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, packed_highp>\tpacked_highp_dvec1;\n\n\t/// 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, packed_mediump>\tpacked_mediump_dvec1;\n\n\t/// 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<1, double, packed_lowp>\t\tpacked_lowp_dvec1;\n\n\t/// 1 component vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<1, int, packed_highp>\t\tpacked_highp_ivec1;\n\n\t/// 1 component vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<1, int, packed_mediump>\t\tpacked_mediump_ivec1;\n\n\t/// 1 component vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<1, int, packed_lowp>\t\tpacked_lowp_ivec1;\n\n\t/// 1 component vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, packed_highp>\t\tpacked_highp_uvec1;\n\n\t/// 1 component vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, packed_mediump>\tpacked_mediump_uvec1;\n\n\t/// 1 component vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<1, uint, packed_lowp>\t\tpacked_lowp_uvec1;\n\n\t/// 1 component vector tightly packed in memory of bool values.\n\ttypedef vec<1, bool, packed_highp>\t\tpacked_highp_bvec1;\n\n\t/// 1 component vector tightly packed in memory of bool values.\n\ttypedef vec<1, bool, packed_mediump>\tpacked_mediump_bvec1;\n\n\t/// 1 component vector tightly packed in memory of bool values.\n\ttypedef vec<1, bool, packed_lowp>\t\tpacked_lowp_bvec1;\n\n\t// -- *vec2 --\n\n\t/// 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, aligned_highp>\taligned_highp_vec2;\n\n\t/// 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, aligned_mediump>\taligned_mediump_vec2;\n\n\t/// 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, aligned_lowp>\t\taligned_lowp_vec2;\n\n\t/// 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, aligned_highp>\taligned_highp_dvec2;\n\n\t/// 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, aligned_mediump>\taligned_mediump_dvec2;\n\n\t/// 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, aligned_lowp>\taligned_lowp_dvec2;\n\n\t/// 2 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<2, int, aligned_highp>\t\taligned_highp_ivec2;\n\n\t/// 2 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<2, int, aligned_mediump>\taligned_mediump_ivec2;\n\n\t/// 2 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<2, int, aligned_lowp>\t\taligned_lowp_ivec2;\n\n\t/// 2 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, aligned_highp>\t\taligned_highp_uvec2;\n\n\t/// 2 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, aligned_mediump>\taligned_mediump_uvec2;\n\n\t/// 2 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, aligned_lowp>\t\taligned_lowp_uvec2;\n\n\t/// 2 components vector aligned in memory of bool values.\n\ttypedef vec<2, bool, aligned_highp>\t\taligned_highp_bvec2;\n\n\t/// 2 components vector aligned in memory of bool values.\n\ttypedef vec<2, bool, aligned_mediump>\taligned_mediump_bvec2;\n\n\t/// 2 components vector aligned in memory of bool values.\n\ttypedef vec<2, bool, aligned_lowp>\t\taligned_lowp_bvec2;\n\n\t/// 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, packed_highp>\t\tpacked_highp_vec2;\n\n\t/// 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, packed_mediump>\tpacked_mediump_vec2;\n\n\t/// 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<2, float, packed_lowp>\t\tpacked_lowp_vec2;\n\n\t/// 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, packed_highp>\tpacked_highp_dvec2;\n\n\t/// 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, packed_mediump>\tpacked_mediump_dvec2;\n\n\t/// 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<2, double, packed_lowp>\t\tpacked_lowp_dvec2;\n\n\t/// 2 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<2, int, packed_highp>\t\tpacked_highp_ivec2;\n\n\t/// 2 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<2, int, packed_mediump>\t\tpacked_mediump_ivec2;\n\n\t/// 2 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<2, int, packed_lowp>\t\tpacked_lowp_ivec2;\n\n\t/// 2 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, packed_highp>\t\tpacked_highp_uvec2;\n\n\t/// 2 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, packed_mediump>\tpacked_mediump_uvec2;\n\n\t/// 2 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<2, uint, packed_lowp>\t\tpacked_lowp_uvec2;\n\n\t/// 2 components vector tightly packed in memory of bool values.\n\ttypedef vec<2, bool, packed_highp>\t\tpacked_highp_bvec2;\n\n\t/// 2 components vector tightly packed in memory of bool values.\n\ttypedef vec<2, bool, packed_mediump>\tpacked_mediump_bvec2;\n\n\t/// 2 components vector tightly packed in memory of bool values.\n\ttypedef vec<2, bool, packed_lowp>\t\tpacked_lowp_bvec2;\n\n\t// -- *vec3 --\n\n\t/// 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, aligned_highp>\taligned_highp_vec3;\n\n\t/// 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, aligned_mediump>\taligned_mediump_vec3;\n\n\t/// 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, aligned_lowp>\t\taligned_lowp_vec3;\n\n\t/// 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, aligned_highp>\taligned_highp_dvec3;\n\n\t/// 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, aligned_mediump>\taligned_mediump_dvec3;\n\n\t/// 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, aligned_lowp>\taligned_lowp_dvec3;\n\n\t/// 3 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<3, int, aligned_highp>\t\taligned_highp_ivec3;\n\n\t/// 3 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<3, int, aligned_mediump>\taligned_mediump_ivec3;\n\n\t/// 3 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<3, int, aligned_lowp>\t\taligned_lowp_ivec3;\n\n\t/// 3 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, aligned_highp>\t\taligned_highp_uvec3;\n\n\t/// 3 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, aligned_mediump>\taligned_mediump_uvec3;\n\n\t/// 3 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, aligned_lowp>\t\taligned_lowp_uvec3;\n\n\t/// 3 components vector aligned in memory of bool values.\n\ttypedef vec<3, bool, aligned_highp>\t\taligned_highp_bvec3;\n\n\t/// 3 components vector aligned in memory of bool values.\n\ttypedef vec<3, bool, aligned_mediump>\taligned_mediump_bvec3;\n\n\t/// 3 components vector aligned in memory of bool values.\n\ttypedef vec<3, bool, aligned_lowp>\t\taligned_lowp_bvec3;\n\n\t/// 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, packed_highp>\t\tpacked_highp_vec3;\n\n\t/// 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, packed_mediump>\tpacked_mediump_vec3;\n\n\t/// 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<3, float, packed_lowp>\t\tpacked_lowp_vec3;\n\n\t/// 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, packed_highp>\tpacked_highp_dvec3;\n\n\t/// 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, packed_mediump>\tpacked_mediump_dvec3;\n\n\t/// 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<3, double, packed_lowp>\t\tpacked_lowp_dvec3;\n\n\t/// 3 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<3, int, packed_highp>\t\tpacked_highp_ivec3;\n\n\t/// 3 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<3, int, packed_mediump>\t\tpacked_mediump_ivec3;\n\n\t/// 3 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<3, int, packed_lowp>\t\tpacked_lowp_ivec3;\n\n\t/// 3 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, packed_highp>\t\tpacked_highp_uvec3;\n\n\t/// 3 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, packed_mediump>\tpacked_mediump_uvec3;\n\n\t/// 3 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<3, uint, packed_lowp>\t\tpacked_lowp_uvec3;\n\n\t/// 3 components vector tightly packed in memory of bool values.\n\ttypedef vec<3, bool, packed_highp>\t\tpacked_highp_bvec3;\n\n\t/// 3 components vector tightly packed in memory of bool values.\n\ttypedef vec<3, bool, packed_mediump>\tpacked_mediump_bvec3;\n\n\t/// 3 components vector tightly packed in memory of bool values.\n\ttypedef vec<3, bool, packed_lowp>\t\tpacked_lowp_bvec3;\n\n\t// -- *vec4 --\n\n\t/// 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, aligned_highp>\taligned_highp_vec4;\n\n\t/// 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, aligned_mediump>\taligned_mediump_vec4;\n\n\t/// 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, aligned_lowp>\t\taligned_lowp_vec4;\n\n\t/// 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, aligned_highp>\taligned_highp_dvec4;\n\n\t/// 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, aligned_mediump>\taligned_mediump_dvec4;\n\n\t/// 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, aligned_lowp>\taligned_lowp_dvec4;\n\n\t/// 4 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<4, int, aligned_highp>\t\taligned_highp_ivec4;\n\n\t/// 4 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<4, int, aligned_mediump>\taligned_mediump_ivec4;\n\n\t/// 4 components vector aligned in memory of signed integer numbers.\n\ttypedef vec<4, int, aligned_lowp>\t\taligned_lowp_ivec4;\n\n\t/// 4 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, aligned_highp>\t\taligned_highp_uvec4;\n\n\t/// 4 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, aligned_mediump>\taligned_mediump_uvec4;\n\n\t/// 4 components vector aligned in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, aligned_lowp>\t\taligned_lowp_uvec4;\n\n\t/// 4 components vector aligned in memory of bool values.\n\ttypedef vec<4, bool, aligned_highp>\t\taligned_highp_bvec4;\n\n\t/// 4 components vector aligned in memory of bool values.\n\ttypedef vec<4, bool, aligned_mediump>\taligned_mediump_bvec4;\n\n\t/// 4 components vector aligned in memory of bool values.\n\ttypedef vec<4, bool, aligned_lowp>\t\taligned_lowp_bvec4;\n\n\t/// 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, packed_highp>\t\tpacked_highp_vec4;\n\n\t/// 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, packed_mediump>\tpacked_mediump_vec4;\n\n\t/// 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<4, float, packed_lowp>\t\tpacked_lowp_vec4;\n\n\t/// 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, packed_highp>\tpacked_highp_dvec4;\n\n\t/// 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, packed_mediump>\tpacked_mediump_dvec4;\n\n\t/// 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef vec<4, double, packed_lowp>\t\tpacked_lowp_dvec4;\n\n\t/// 4 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<4, int, packed_highp>\t\tpacked_highp_ivec4;\n\n\t/// 4 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<4, int, packed_mediump>\t\tpacked_mediump_ivec4;\n\n\t/// 4 components vector tightly packed in memory of signed integer numbers.\n\ttypedef vec<4, int, packed_lowp>\t\tpacked_lowp_ivec4;\n\n\t/// 4 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, packed_highp>\t\tpacked_highp_uvec4;\n\n\t/// 4 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, packed_mediump>\tpacked_mediump_uvec4;\n\n\t/// 4 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef vec<4, uint, packed_lowp>\t\tpacked_lowp_uvec4;\n\n\t/// 4 components vector tightly packed in memory of bool values.\n\ttypedef vec<4, bool, packed_highp>\t\tpacked_highp_bvec4;\n\n\t/// 4 components vector tightly packed in memory of bool values.\n\ttypedef vec<4, bool, packed_mediump>\tpacked_mediump_bvec4;\n\n\t/// 4 components vector tightly packed in memory of bool values.\n\ttypedef vec<4, bool, packed_lowp>\t\tpacked_lowp_bvec4;\n\n\t// -- *mat2 --\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_highp>\t\taligned_highp_mat2;\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_mediump>\taligned_mediump_mat2;\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_lowp>\t\taligned_lowp_mat2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_highp>\taligned_highp_dmat2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_mediump>\taligned_mediump_dmat2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_lowp>\t\taligned_lowp_dmat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_highp>\t\tpacked_highp_mat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_mediump>\tpacked_mediump_mat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_lowp>\t\tpacked_lowp_mat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_highp>\t\tpacked_highp_dmat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_mediump>\tpacked_mediump_dmat2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_lowp>\t\tpacked_lowp_dmat2;\n\n\t// -- *mat3 --\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_highp>\t\taligned_highp_mat3;\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_mediump>\taligned_mediump_mat3;\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_lowp>\t\taligned_lowp_mat3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_highp>\taligned_highp_dmat3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_mediump>\taligned_mediump_dmat3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_lowp>\t\taligned_lowp_dmat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_highp>\t\tpacked_highp_mat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_mediump>\tpacked_mediump_mat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_lowp>\t\tpacked_lowp_mat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_highp>\t\tpacked_highp_dmat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_mediump>\tpacked_mediump_dmat3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_lowp>\t\tpacked_lowp_dmat3;\n\n\t// -- *mat4 --\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_highp>\t\taligned_highp_mat4;\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_mediump>\taligned_mediump_mat4;\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_lowp>\t\taligned_lowp_mat4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_highp>\taligned_highp_dmat4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_mediump>\taligned_mediump_dmat4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_lowp>\t\taligned_lowp_dmat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_highp>\t\tpacked_highp_mat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_mediump>\tpacked_mediump_mat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_lowp>\t\tpacked_lowp_mat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_highp>\t\tpacked_highp_dmat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_mediump>\tpacked_mediump_dmat4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_lowp>\t\tpacked_lowp_dmat4;\n\n\t// -- *mat2x2 --\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_highp>\t\taligned_highp_mat2x2;\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_mediump>\taligned_mediump_mat2x2;\n\n\t/// 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, aligned_lowp>\t\taligned_lowp_mat2x2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_highp>\taligned_highp_dmat2x2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_mediump>\taligned_mediump_dmat2x2;\n\n\t/// 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, aligned_lowp>\t\taligned_lowp_dmat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_highp>\t\tpacked_highp_mat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_mediump>\tpacked_mediump_mat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, float, packed_lowp>\t\tpacked_lowp_mat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_highp>\t\tpacked_highp_dmat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_mediump>\tpacked_mediump_dmat2x2;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 2, double, packed_lowp>\t\tpacked_lowp_dmat2x2;\n\n\t// -- *mat2x3 --\n\n\t/// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, aligned_highp>\t\taligned_highp_mat2x3;\n\n\t/// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, aligned_mediump>\taligned_mediump_mat2x3;\n\n\t/// 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, aligned_lowp>\t\taligned_lowp_mat2x3;\n\n\t/// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, aligned_highp>\taligned_highp_dmat2x3;\n\n\t/// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, aligned_mediump>\taligned_mediump_dmat2x3;\n\n\t/// 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, aligned_lowp>\t\taligned_lowp_dmat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, packed_highp>\t\tpacked_highp_mat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, packed_mediump>\tpacked_mediump_mat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, float, packed_lowp>\t\tpacked_lowp_mat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, packed_highp>\t\tpacked_highp_dmat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, packed_mediump>\tpacked_mediump_dmat2x3;\n\n\t/// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 3, double, packed_lowp>\t\tpacked_lowp_dmat2x3;\n\n\t// -- *mat2x4 --\n\n\t/// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, aligned_highp>\t\taligned_highp_mat2x4;\n\n\t/// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, aligned_mediump>\taligned_mediump_mat2x4;\n\n\t/// 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, aligned_lowp>\t\taligned_lowp_mat2x4;\n\n\t/// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, aligned_highp>\taligned_highp_dmat2x4;\n\n\t/// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, aligned_mediump>\taligned_mediump_dmat2x4;\n\n\t/// 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, aligned_lowp>\t\taligned_lowp_dmat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, packed_highp>\t\tpacked_highp_mat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, packed_mediump>\tpacked_mediump_mat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, float, packed_lowp>\t\tpacked_lowp_mat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, packed_highp>\t\tpacked_highp_dmat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, packed_mediump>\tpacked_mediump_dmat2x4;\n\n\t/// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<2, 4, double, packed_lowp>\t\tpacked_lowp_dmat2x4;\n\n\t// -- *mat3x2 --\n\n\t/// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, aligned_highp>\t\taligned_highp_mat3x2;\n\n\t/// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, aligned_mediump>\taligned_mediump_mat3x2;\n\n\t/// 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, aligned_lowp>\t\taligned_lowp_mat3x2;\n\n\t/// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, aligned_highp>\taligned_highp_dmat3x2;\n\n\t/// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, aligned_mediump>\taligned_mediump_dmat3x2;\n\n\t/// 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, aligned_lowp>\t\taligned_lowp_dmat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, packed_highp>\t\tpacked_highp_mat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, packed_mediump>\tpacked_mediump_mat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, float, packed_lowp>\t\tpacked_lowp_mat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, packed_highp>\t\tpacked_highp_dmat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, packed_mediump>\tpacked_mediump_dmat3x2;\n\n\t/// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 2, double, packed_lowp>\t\tpacked_lowp_dmat3x2;\n\n\t// -- *mat3x3 --\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_highp>\t\taligned_highp_mat3x3;\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_mediump>\taligned_mediump_mat3x3;\n\n\t/// 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, aligned_lowp>\t\taligned_lowp_mat3x3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_highp>\taligned_highp_dmat3x3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_mediump>\taligned_mediump_dmat3x3;\n\n\t/// 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, aligned_lowp>\t\taligned_lowp_dmat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_highp>\t\tpacked_highp_mat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_mediump>\tpacked_mediump_mat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, float, packed_lowp>\t\tpacked_lowp_mat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_highp>\t\tpacked_highp_dmat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_mediump>\tpacked_mediump_dmat3x3;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 3, double, packed_lowp>\t\tpacked_lowp_dmat3x3;\n\n\t// -- *mat3x4 --\n\n\t/// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, aligned_highp>\t\taligned_highp_mat3x4;\n\n\t/// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, aligned_mediump>\taligned_mediump_mat3x4;\n\n\t/// 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, aligned_lowp>\t\taligned_lowp_mat3x4;\n\n\t/// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, aligned_highp>\taligned_highp_dmat3x4;\n\n\t/// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, aligned_mediump>\taligned_mediump_dmat3x4;\n\n\t/// 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, aligned_lowp>\t\taligned_lowp_dmat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, packed_highp>\t\tpacked_highp_mat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, packed_mediump>\tpacked_mediump_mat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, float, packed_lowp>\t\tpacked_lowp_mat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, packed_highp>\t\tpacked_highp_dmat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, packed_mediump>\tpacked_mediump_dmat3x4;\n\n\t/// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<3, 4, double, packed_lowp>\t\tpacked_lowp_dmat3x4;\n\n\t// -- *mat4x2 --\n\n\t/// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, aligned_highp>\t\taligned_highp_mat4x2;\n\n\t/// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, aligned_mediump>\taligned_mediump_mat4x2;\n\n\t/// 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, aligned_lowp>\t\taligned_lowp_mat4x2;\n\n\t/// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, aligned_highp>\taligned_highp_dmat4x2;\n\n\t/// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, aligned_mediump>\taligned_mediump_dmat4x2;\n\n\t/// 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, aligned_lowp>\t\taligned_lowp_dmat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, packed_highp>\t\tpacked_highp_mat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, packed_mediump>\tpacked_mediump_mat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, float, packed_lowp>\t\tpacked_lowp_mat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, packed_highp>\t\tpacked_highp_dmat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, packed_mediump>\tpacked_mediump_dmat4x2;\n\n\t/// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 2, double, packed_lowp>\t\tpacked_lowp_dmat4x2;\n\n\t// -- *mat4x3 --\n\n\t/// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, aligned_highp>\t\taligned_highp_mat4x3;\n\n\t/// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, aligned_mediump>\taligned_mediump_mat4x3;\n\n\t/// 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, aligned_lowp>\t\taligned_lowp_mat4x3;\n\n\t/// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, aligned_highp>\taligned_highp_dmat4x3;\n\n\t/// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, aligned_mediump>\taligned_mediump_dmat4x3;\n\n\t/// 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, aligned_lowp>\t\taligned_lowp_dmat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, packed_highp>\t\tpacked_highp_mat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, packed_mediump>\tpacked_mediump_mat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, float, packed_lowp>\t\tpacked_lowp_mat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, packed_highp>\t\tpacked_highp_dmat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, packed_mediump>\tpacked_mediump_dmat4x3;\n\n\t/// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 3, double, packed_lowp>\t\tpacked_lowp_dmat4x3;\n\n\t// -- *mat4x4 --\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_highp>\t\taligned_highp_mat4x4;\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_mediump>\taligned_mediump_mat4x4;\n\n\t/// 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, aligned_lowp>\t\taligned_lowp_mat4x4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_highp>\taligned_highp_dmat4x4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_mediump>\taligned_mediump_dmat4x4;\n\n\t/// 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, aligned_lowp>\t\taligned_lowp_dmat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_highp>\t\tpacked_highp_mat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_mediump>\tpacked_mediump_mat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, float, packed_lowp>\t\tpacked_lowp_mat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_highp>\t\tpacked_highp_dmat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_mediump>\tpacked_mediump_dmat4x4;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.\n\ttypedef mat<4, 4, double, packed_lowp>\t\tpacked_lowp_dmat4x4;\n\n\t// -- default --\n\n#if(defined(GLM_PRECISION_LOWP_FLOAT))\n\ttypedef aligned_lowp_vec1\t\t\taligned_vec1;\n\ttypedef aligned_lowp_vec2\t\t\taligned_vec2;\n\ttypedef aligned_lowp_vec3\t\t\taligned_vec3;\n\ttypedef aligned_lowp_vec4\t\t\taligned_vec4;\n\ttypedef packed_lowp_vec1\t\t\tpacked_vec1;\n\ttypedef packed_lowp_vec2\t\t\tpacked_vec2;\n\ttypedef packed_lowp_vec3\t\t\tpacked_vec3;\n\ttypedef packed_lowp_vec4\t\t\tpacked_vec4;\n\n\ttypedef aligned_lowp_mat2\t\t\taligned_mat2;\n\ttypedef aligned_lowp_mat3\t\t\taligned_mat3;\n\ttypedef aligned_lowp_mat4\t\t\taligned_mat4;\n\ttypedef packed_lowp_mat2\t\t\tpacked_mat2;\n\ttypedef packed_lowp_mat3\t\t\tpacked_mat3;\n\ttypedef packed_lowp_mat4\t\t\tpacked_mat4;\n\n\ttypedef aligned_lowp_mat2x2\t\t\taligned_mat2x2;\n\ttypedef aligned_lowp_mat2x3\t\t\taligned_mat2x3;\n\ttypedef aligned_lowp_mat2x4\t\t\taligned_mat2x4;\n\ttypedef aligned_lowp_mat3x2\t\t\taligned_mat3x2;\n\ttypedef aligned_lowp_mat3x3\t\t\taligned_mat3x3;\n\ttypedef aligned_lowp_mat3x4\t\t\taligned_mat3x4;\n\ttypedef aligned_lowp_mat4x2\t\t\taligned_mat4x2;\n\ttypedef aligned_lowp_mat4x3\t\t\taligned_mat4x3;\n\ttypedef aligned_lowp_mat4x4\t\t\taligned_mat4x4;\n\ttypedef packed_lowp_mat2x2\t\t\tpacked_mat2x2;\n\ttypedef packed_lowp_mat2x3\t\t\tpacked_mat2x3;\n\ttypedef packed_lowp_mat2x4\t\t\tpacked_mat2x4;\n\ttypedef packed_lowp_mat3x2\t\t\tpacked_mat3x2;\n\ttypedef packed_lowp_mat3x3\t\t\tpacked_mat3x3;\n\ttypedef packed_lowp_mat3x4\t\t\tpacked_mat3x4;\n\ttypedef packed_lowp_mat4x2\t\t\tpacked_mat4x2;\n\ttypedef packed_lowp_mat4x3\t\t\tpacked_mat4x3;\n\ttypedef packed_lowp_mat4x4\t\t\tpacked_mat4x4;\n#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))\n\ttypedef aligned_mediump_vec1\t\taligned_vec1;\n\ttypedef aligned_mediump_vec2\t\taligned_vec2;\n\ttypedef aligned_mediump_vec3\t\taligned_vec3;\n\ttypedef aligned_mediump_vec4\t\taligned_vec4;\n\ttypedef packed_mediump_vec1\t\t\tpacked_vec1;\n\ttypedef packed_mediump_vec2\t\t\tpacked_vec2;\n\ttypedef packed_mediump_vec3\t\t\tpacked_vec3;\n\ttypedef packed_mediump_vec4\t\t\tpacked_vec4;\n\n\ttypedef aligned_mediump_mat2\t\taligned_mat2;\n\ttypedef aligned_mediump_mat3\t\taligned_mat3;\n\ttypedef aligned_mediump_mat4\t\taligned_mat4;\n\ttypedef packed_mediump_mat2\t\t\tpacked_mat2;\n\ttypedef packed_mediump_mat3\t\t\tpacked_mat3;\n\ttypedef packed_mediump_mat4\t\t\tpacked_mat4;\n\n\ttypedef aligned_mediump_mat2x2\t\taligned_mat2x2;\n\ttypedef aligned_mediump_mat2x3\t\taligned_mat2x3;\n\ttypedef aligned_mediump_mat2x4\t\taligned_mat2x4;\n\ttypedef aligned_mediump_mat3x2\t\taligned_mat3x2;\n\ttypedef aligned_mediump_mat3x3\t\taligned_mat3x3;\n\ttypedef aligned_mediump_mat3x4\t\taligned_mat3x4;\n\ttypedef aligned_mediump_mat4x2\t\taligned_mat4x2;\n\ttypedef aligned_mediump_mat4x3\t\taligned_mat4x3;\n\ttypedef aligned_mediump_mat4x4\t\taligned_mat4x4;\n\ttypedef packed_mediump_mat2x2\t\tpacked_mat2x2;\n\ttypedef packed_mediump_mat2x3\t\tpacked_mat2x3;\n\ttypedef packed_mediump_mat2x4\t\tpacked_mat2x4;\n\ttypedef packed_mediump_mat3x2\t\tpacked_mat3x2;\n\ttypedef packed_mediump_mat3x3\t\tpacked_mat3x3;\n\ttypedef packed_mediump_mat3x4\t\tpacked_mat3x4;\n\ttypedef packed_mediump_mat4x2\t\tpacked_mat4x2;\n\ttypedef packed_mediump_mat4x3\t\tpacked_mat4x3;\n\ttypedef packed_mediump_mat4x4\t\tpacked_mat4x4;\n#else //defined(GLM_PRECISION_HIGHP_FLOAT)\n\t/// 1 component vector aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_vec1\t\t\taligned_vec1;\n\n\t/// 2 components vector aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_vec2\t\t\taligned_vec2;\n\n\t/// 3 components vector aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_vec3\t\t\taligned_vec3;\n\n\t/// 4 components vector aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_vec4 \t\t\taligned_vec4;\n\n\t/// 1 component vector tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_vec1\t\t\tpacked_vec1;\n\n\t/// 2 components vector tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_vec2\t\t\tpacked_vec2;\n\n\t/// 3 components vector tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_vec3\t\t\tpacked_vec3;\n\n\t/// 4 components vector tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_vec4\t\t\tpacked_vec4;\n\n\t/// 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat2\t\t\taligned_mat2;\n\n\t/// 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat3\t\t\taligned_mat3;\n\n\t/// 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat4\t\t\taligned_mat4;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat2\t\t\tpacked_mat2;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat3\t\t\tpacked_mat3;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat4\t\t\tpacked_mat4;\n\n\t/// 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat2x2\t\taligned_mat2x2;\n\n\t/// 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat2x3\t\taligned_mat2x3;\n\n\t/// 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat2x4\t\taligned_mat2x4;\n\n\t/// 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat3x2\t\taligned_mat3x2;\n\n\t/// 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat3x3\t\taligned_mat3x3;\n\n\t/// 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat3x4\t\taligned_mat3x4;\n\n\t/// 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat4x2\t\taligned_mat4x2;\n\n\t/// 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat4x3\t\taligned_mat4x3;\n\n\t/// 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.\n\ttypedef aligned_highp_mat4x4\t\taligned_mat4x4;\n\n\t/// 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat2x2\t\t\tpacked_mat2x2;\n\n\t/// 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat2x3\t\t\tpacked_mat2x3;\n\n\t/// 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat2x4\t\t\tpacked_mat2x4;\n\n\t/// 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat3x2\t\t\tpacked_mat3x2;\n\n\t/// 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat3x3\t\t\tpacked_mat3x3;\n\n\t/// 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat3x4\t\t\tpacked_mat3x4;\n\n\t/// 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat4x2\t\t\tpacked_mat4x2;\n\n\t/// 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat4x3\t\t\tpacked_mat4x3;\n\n\t/// 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.\n\ttypedef packed_highp_mat4x4\t\t\tpacked_mat4x4;\n#endif//GLM_PRECISION\n\n#if(defined(GLM_PRECISION_LOWP_DOUBLE))\n\ttypedef aligned_lowp_dvec1\t\t\taligned_dvec1;\n\ttypedef aligned_lowp_dvec2\t\t\taligned_dvec2;\n\ttypedef aligned_lowp_dvec3\t\t\taligned_dvec3;\n\ttypedef aligned_lowp_dvec4\t\t\taligned_dvec4;\n\ttypedef packed_lowp_dvec1\t\t\tpacked_dvec1;\n\ttypedef packed_lowp_dvec2\t\t\tpacked_dvec2;\n\ttypedef packed_lowp_dvec3\t\t\tpacked_dvec3;\n\ttypedef packed_lowp_dvec4\t\t\tpacked_dvec4;\n\n\ttypedef aligned_lowp_dmat2\t\t\taligned_dmat2;\n\ttypedef aligned_lowp_dmat3\t\t\taligned_dmat3;\n\ttypedef aligned_lowp_dmat4\t\t\taligned_dmat4;\n\ttypedef packed_lowp_dmat2\t\t\tpacked_dmat2;\n\ttypedef packed_lowp_dmat3\t\t\tpacked_dmat3;\n\ttypedef packed_lowp_dmat4\t\t\tpacked_dmat4;\n\n\ttypedef aligned_lowp_dmat2x2\t\taligned_dmat2x2;\n\ttypedef aligned_lowp_dmat2x3\t\taligned_dmat2x3;\n\ttypedef aligned_lowp_dmat2x4\t\taligned_dmat2x4;\n\ttypedef aligned_lowp_dmat3x2\t\taligned_dmat3x2;\n\ttypedef aligned_lowp_dmat3x3\t\taligned_dmat3x3;\n\ttypedef aligned_lowp_dmat3x4\t\taligned_dmat3x4;\n\ttypedef aligned_lowp_dmat4x2\t\taligned_dmat4x2;\n\ttypedef aligned_lowp_dmat4x3\t\taligned_dmat4x3;\n\ttypedef aligned_lowp_dmat4x4\t\taligned_dmat4x4;\n\ttypedef packed_lowp_dmat2x2\t\t\tpacked_dmat2x2;\n\ttypedef packed_lowp_dmat2x3\t\t\tpacked_dmat2x3;\n\ttypedef packed_lowp_dmat2x4\t\t\tpacked_dmat2x4;\n\ttypedef packed_lowp_dmat3x2\t\t\tpacked_dmat3x2;\n\ttypedef packed_lowp_dmat3x3\t\t\tpacked_dmat3x3;\n\ttypedef packed_lowp_dmat3x4\t\t\tpacked_dmat3x4;\n\ttypedef packed_lowp_dmat4x2\t\t\tpacked_dmat4x2;\n\ttypedef packed_lowp_dmat4x3\t\t\tpacked_dmat4x3;\n\ttypedef packed_lowp_dmat4x4\t\t\tpacked_dmat4x4;\n#elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))\n\ttypedef aligned_mediump_dvec1\t\taligned_dvec1;\n\ttypedef aligned_mediump_dvec2\t\taligned_dvec2;\n\ttypedef aligned_mediump_dvec3\t\taligned_dvec3;\n\ttypedef aligned_mediump_dvec4\t\taligned_dvec4;\n\ttypedef packed_mediump_dvec1\t\tpacked_dvec1;\n\ttypedef packed_mediump_dvec2\t\tpacked_dvec2;\n\ttypedef packed_mediump_dvec3\t\tpacked_dvec3;\n\ttypedef packed_mediump_dvec4\t\tpacked_dvec4;\n\n\ttypedef aligned_mediump_dmat2\t\taligned_dmat2;\n\ttypedef aligned_mediump_dmat3\t\taligned_dmat3;\n\ttypedef aligned_mediump_dmat4\t\taligned_dmat4;\n\ttypedef packed_mediump_dmat2\t\tpacked_dmat2;\n\ttypedef packed_mediump_dmat3\t\tpacked_dmat3;\n\ttypedef packed_mediump_dmat4\t\tpacked_dmat4;\n\n\ttypedef aligned_mediump_dmat2x2\t\taligned_dmat2x2;\n\ttypedef aligned_mediump_dmat2x3\t\taligned_dmat2x3;\n\ttypedef aligned_mediump_dmat2x4\t\taligned_dmat2x4;\n\ttypedef aligned_mediump_dmat3x2\t\taligned_dmat3x2;\n\ttypedef aligned_mediump_dmat3x3\t\taligned_dmat3x3;\n\ttypedef aligned_mediump_dmat3x4\t\taligned_dmat3x4;\n\ttypedef aligned_mediump_dmat4x2\t\taligned_dmat4x2;\n\ttypedef aligned_mediump_dmat4x3\t\taligned_dmat4x3;\n\ttypedef aligned_mediump_dmat4x4\t\taligned_dmat4x4;\n\ttypedef packed_mediump_dmat2x2\t\tpacked_dmat2x2;\n\ttypedef packed_mediump_dmat2x3\t\tpacked_dmat2x3;\n\ttypedef packed_mediump_dmat2x4\t\tpacked_dmat2x4;\n\ttypedef packed_mediump_dmat3x2\t\tpacked_dmat3x2;\n\ttypedef packed_mediump_dmat3x3\t\tpacked_dmat3x3;\n\ttypedef packed_mediump_dmat3x4\t\tpacked_dmat3x4;\n\ttypedef packed_mediump_dmat4x2\t\tpacked_dmat4x2;\n\ttypedef packed_mediump_dmat4x3\t\tpacked_dmat4x3;\n\ttypedef packed_mediump_dmat4x4\t\tpacked_dmat4x4;\n#else //defined(GLM_PRECISION_HIGHP_DOUBLE)\n\t/// 1 component vector aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dvec1\t\t\taligned_dvec1;\n\n\t/// 2 components vector aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dvec2\t\t\taligned_dvec2;\n\n\t/// 3 components vector aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dvec3\t\t\taligned_dvec3;\n\n\t/// 4 components vector aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dvec4\t\t\taligned_dvec4;\n\n\t/// 1 component vector tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dvec1\t\t\tpacked_dvec1;\n\n\t/// 2 components vector tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dvec2\t\t\tpacked_dvec2;\n\n\t/// 3 components vector tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dvec3\t\t\tpacked_dvec3;\n\n\t/// 4 components vector tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dvec4\t\t\tpacked_dvec4;\n\n\t/// 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat2\t\t\taligned_dmat2;\n\n\t/// 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat3\t\t\taligned_dmat3;\n\n\t/// 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat4\t\t\taligned_dmat4;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat2\t\t\tpacked_dmat2;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat3\t\t\tpacked_dmat3;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat4\t\t\tpacked_dmat4;\n\n\t/// 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat2x2\t\taligned_dmat2x2;\n\n\t/// 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat2x3\t\taligned_dmat2x3;\n\n\t/// 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat2x4\t\taligned_dmat2x4;\n\n\t/// 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat3x2\t\taligned_dmat3x2;\n\n\t/// 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat3x3\t\taligned_dmat3x3;\n\n\t/// 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat3x4\t\taligned_dmat3x4;\n\n\t/// 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat4x2\t\taligned_dmat4x2;\n\n\t/// 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat4x3\t\taligned_dmat4x3;\n\n\t/// 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.\n\ttypedef aligned_highp_dmat4x4\t\taligned_dmat4x4;\n\n\t/// 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat2x2\t\tpacked_dmat2x2;\n\n\t/// 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat2x3\t\tpacked_dmat2x3;\n\n\t/// 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat2x4\t\tpacked_dmat2x4;\n\n\t/// 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat3x2\t\tpacked_dmat3x2;\n\n\t/// 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat3x3\t\tpacked_dmat3x3;\n\n\t/// 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat3x4\t\tpacked_dmat3x4;\n\n\t/// 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat4x2\t\tpacked_dmat4x2;\n\n\t/// 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat4x3\t\tpacked_dmat4x3;\n\n\t/// 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.\n\ttypedef packed_highp_dmat4x4\t\tpacked_dmat4x4;\n#endif//GLM_PRECISION\n\n#if(defined(GLM_PRECISION_LOWP_INT))\n\ttypedef aligned_lowp_ivec1\t\t\taligned_ivec1;\n\ttypedef aligned_lowp_ivec2\t\t\taligned_ivec2;\n\ttypedef aligned_lowp_ivec3\t\t\taligned_ivec3;\n\ttypedef aligned_lowp_ivec4\t\t\taligned_ivec4;\n#elif(defined(GLM_PRECISION_MEDIUMP_INT))\n\ttypedef aligned_mediump_ivec1\t\taligned_ivec1;\n\ttypedef aligned_mediump_ivec2\t\taligned_ivec2;\n\ttypedef aligned_mediump_ivec3\t\taligned_ivec3;\n\ttypedef aligned_mediump_ivec4\t\taligned_ivec4;\n#else //defined(GLM_PRECISION_HIGHP_INT)\n\t/// 1 component vector aligned in memory of signed integer numbers.\n\ttypedef aligned_highp_ivec1\t\t\taligned_ivec1;\n\n\t/// 2 components vector aligned in memory of signed integer numbers.\n\ttypedef aligned_highp_ivec2\t\t\taligned_ivec2;\n\n\t/// 3 components vector aligned in memory of signed integer numbers.\n\ttypedef aligned_highp_ivec3\t\t\taligned_ivec3;\n\n\t/// 4 components vector aligned in memory of signed integer numbers.\n\ttypedef aligned_highp_ivec4\t\t\taligned_ivec4;\n\n\t/// 1 component vector tightly packed in memory of signed integer numbers.\n\ttypedef packed_highp_ivec1\t\t\tpacked_ivec1;\n\n\t/// 2 components vector tightly packed in memory of signed integer numbers.\n\ttypedef packed_highp_ivec2\t\t\tpacked_ivec2;\n\n\t/// 3 components vector tightly packed in memory of signed integer numbers.\n\ttypedef packed_highp_ivec3\t\t\tpacked_ivec3;\n\n\t/// 4 components vector tightly packed in memory of signed integer numbers.\n\ttypedef packed_highp_ivec4\t\t\tpacked_ivec4;\n#endif//GLM_PRECISION\n\n\t// -- Unsigned integer definition --\n\n#if(defined(GLM_PRECISION_LOWP_UINT))\n\ttypedef aligned_lowp_uvec1\t\t\taligned_uvec1;\n\ttypedef aligned_lowp_uvec2\t\t\taligned_uvec2;\n\ttypedef aligned_lowp_uvec3\t\t\taligned_uvec3;\n\ttypedef aligned_lowp_uvec4\t\t\taligned_uvec4;\n#elif(defined(GLM_PRECISION_MEDIUMP_UINT))\n\ttypedef aligned_mediump_uvec1\t\taligned_uvec1;\n\ttypedef aligned_mediump_uvec2\t\taligned_uvec2;\n\ttypedef aligned_mediump_uvec3\t\taligned_uvec3;\n\ttypedef aligned_mediump_uvec4\t\taligned_uvec4;\n#else //defined(GLM_PRECISION_HIGHP_UINT)\n\t/// 1 component vector aligned in memory of unsigned integer numbers.\n\ttypedef aligned_highp_uvec1\t\t\taligned_uvec1;\n\n\t/// 2 components vector aligned in memory of unsigned integer numbers.\n\ttypedef aligned_highp_uvec2\t\t\taligned_uvec2;\n\n\t/// 3 components vector aligned in memory of unsigned integer numbers.\n\ttypedef aligned_highp_uvec3\t\t\taligned_uvec3;\n\n\t/// 4 components vector aligned in memory of unsigned integer numbers.\n\ttypedef aligned_highp_uvec4\t\t\taligned_uvec4;\n\n\t/// 1 component vector tightly packed in memory of unsigned integer numbers.\n\ttypedef packed_highp_uvec1\t\t\tpacked_uvec1;\n\n\t/// 2 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef packed_highp_uvec2\t\t\tpacked_uvec2;\n\n\t/// 3 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef packed_highp_uvec3\t\t\tpacked_uvec3;\n\n\t/// 4 components vector tightly packed in memory of unsigned integer numbers.\n\ttypedef packed_highp_uvec4\t\t\tpacked_uvec4;\n#endif//GLM_PRECISION\n\n#if(defined(GLM_PRECISION_LOWP_BOOL))\n\ttypedef aligned_lowp_bvec1\t\t\taligned_bvec1;\n\ttypedef aligned_lowp_bvec2\t\t\taligned_bvec2;\n\ttypedef aligned_lowp_bvec3\t\t\taligned_bvec3;\n\ttypedef aligned_lowp_bvec4\t\t\taligned_bvec4;\n#elif(defined(GLM_PRECISION_MEDIUMP_BOOL))\n\ttypedef aligned_mediump_bvec1\t\taligned_bvec1;\n\ttypedef aligned_mediump_bvec2\t\taligned_bvec2;\n\ttypedef aligned_mediump_bvec3\t\taligned_bvec3;\n\ttypedef aligned_mediump_bvec4\t\taligned_bvec4;\n#else //defined(GLM_PRECISION_HIGHP_BOOL)\n\t/// 1 component vector aligned in memory of bool values.\n\ttypedef aligned_highp_bvec1\t\t\taligned_bvec1;\n\n\t/// 2 components vector aligned in memory of bool values.\n\ttypedef aligned_highp_bvec2\t\t\taligned_bvec2;\n\n\t/// 3 components vector aligned in memory of bool values.\n\ttypedef aligned_highp_bvec3\t\t\taligned_bvec3;\n\n\t/// 4 components vector aligned in memory of bool values.\n\ttypedef aligned_highp_bvec4\t\t\taligned_bvec4;\n\n\t/// 1 components vector tightly packed in memory of bool values.\n\ttypedef packed_highp_bvec1\t\t\tpacked_bvec1;\n\n\t/// 2 components vector tightly packed in memory of bool values.\n\ttypedef packed_highp_bvec2\t\t\tpacked_bvec2;\n\n\t/// 3 components vector tightly packed in memory of bool values.\n\ttypedef packed_highp_bvec3\t\t\tpacked_bvec3;\n\n\t/// 4 components vector tightly packed in memory of bool values.\n\ttypedef packed_highp_bvec4\t\t\tpacked_bvec4;\n#endif//GLM_PRECISION\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtc/type_precision.hpp",
    "content": "/// @ref gtc_type_precision\n/// @file glm/gtc/type_precision.hpp\n///\n/// @see core (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtc_type_precision GLM_GTC_type_precision\n/// @ingroup gtc\n///\n/// Include <glm/gtc/type_precision.hpp> to use the features of this extension.\n///\n/// Defines specific C++-based qualifier types.\n\n#pragma once\n\n// Dependency:\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtc/vec1.hpp\"\n#include \"../ext/scalar_int_sized.hpp\"\n#include \"../ext/scalar_uint_sized.hpp\"\n#include \"../detail/type_vec2.hpp\"\n#include \"../detail/type_vec3.hpp\"\n#include \"../detail/type_vec4.hpp\"\n#include \"../detail/type_mat2x2.hpp\"\n#include \"../detail/type_mat2x3.hpp\"\n#include \"../detail/type_mat2x4.hpp\"\n#include \"../detail/type_mat3x2.hpp\"\n#include \"../detail/type_mat3x3.hpp\"\n#include \"../detail/type_mat3x4.hpp\"\n#include \"../detail/type_mat4x2.hpp\"\n#include \"../detail/type_mat4x3.hpp\"\n#include \"../detail/type_mat4x4.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_type_precision extension included\")\n#endif\n\nnamespace glm\n{\n\t///////////////////////////\n\t// Signed int vector types\n\n\t/// @addtogroup gtc_type_precision\n\t/// @{\n\n\t/// Low qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 lowp_int8;\n\n\t/// Low qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 lowp_int16;\n\n\t/// Low qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 lowp_int32;\n\n\t/// Low qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 lowp_int64;\n\n\t/// Low qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 lowp_int8_t;\n\n\t/// Low qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 lowp_int16_t;\n\n\t/// Low qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 lowp_int32_t;\n\n\t/// Low qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 lowp_int64_t;\n\n\t/// Low qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 lowp_i8;\n\n\t/// Low qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 lowp_i16;\n\n\t/// Low qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 lowp_i32;\n\n\t/// Low qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 lowp_i64;\n\n\t/// Medium qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 mediump_int8;\n\n\t/// Medium qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 mediump_int16;\n\n\t/// Medium qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 mediump_int32;\n\n\t/// Medium qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 mediump_int64;\n\n\t/// Medium qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 mediump_int8_t;\n\n\t/// Medium qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 mediump_int16_t;\n\n\t/// Medium qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 mediump_int32_t;\n\n\t/// Medium qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 mediump_int64_t;\n\n\t/// Medium qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 mediump_i8;\n\n\t/// Medium qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 mediump_i16;\n\n\t/// Medium qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 mediump_i32;\n\n\t/// Medium qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 mediump_i64;\n\n\t/// High qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 highp_int8;\n\n\t/// High qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 highp_int16;\n\n\t/// High qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 highp_int32;\n\n\t/// High qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 highp_int64;\n\n\t/// High qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 highp_int8_t;\n\n\t/// High qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 highp_int16_t;\n\n\t/// 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 highp_int32_t;\n\n\t/// High qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 highp_int64_t;\n\n\t/// High qualifier 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 highp_i8;\n\n\t/// High qualifier 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 highp_i16;\n\n\t/// High qualifier 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 highp_i32;\n\n\t/// High qualifier 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 highp_i64;\n\n\n#if GLM_HAS_EXTENDED_INTEGER_TYPE\n\tusing std::int8_t;\n\tusing std::int16_t;\n\tusing std::int32_t;\n\tusing std::int64_t;\n#else\n\t/// 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 int8_t;\n\n\t/// 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 int16_t;\n\n\t/// 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 int32_t;\n\n\t/// 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 int64_t;\n#endif\n\n\t/// 8 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int8 i8;\n\n\t/// 16 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int16 i16;\n\n\t/// 32 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int32 i32;\n\n\t/// 64 bit signed integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::int64 i64;\n\n\n\n\t/// Low qualifier 8 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i8, lowp> lowp_i8vec1;\n\n\t/// Low qualifier 8 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i8, lowp> lowp_i8vec2;\n\n\t/// Low qualifier 8 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i8, lowp> lowp_i8vec3;\n\n\t/// Low qualifier 8 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i8, lowp> lowp_i8vec4;\n\n\n\t/// Medium qualifier 8 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i8, mediump> mediump_i8vec1;\n\n\t/// Medium qualifier 8 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i8, mediump> mediump_i8vec2;\n\n\t/// Medium qualifier 8 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i8, mediump> mediump_i8vec3;\n\n\t/// Medium qualifier 8 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i8, mediump> mediump_i8vec4;\n\n\n\t/// High qualifier 8 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i8, highp> highp_i8vec1;\n\n\t/// High qualifier 8 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i8, highp> highp_i8vec2;\n\n\t/// High qualifier 8 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i8, highp> highp_i8vec3;\n\n\t/// High qualifier 8 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i8, highp> highp_i8vec4;\n\n\n\n\t/// 8 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i8, defaultp> i8vec1;\n\n\t/// 8 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i8, defaultp> i8vec2;\n\n\t/// 8 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i8, defaultp> i8vec3;\n\n\t/// 8 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i8, defaultp> i8vec4;\n\n\n\n\n\n\t/// Low qualifier 16 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i16, lowp>\t\tlowp_i16vec1;\n\n\t/// Low qualifier 16 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i16, lowp>\t\tlowp_i16vec2;\n\n\t/// Low qualifier 16 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i16, lowp>\t\tlowp_i16vec3;\n\n\t/// Low qualifier 16 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i16, lowp>\t\tlowp_i16vec4;\n\n\n\t/// Medium qualifier 16 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i16, mediump>\t\tmediump_i16vec1;\n\n\t/// Medium qualifier 16 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i16, mediump>\t\tmediump_i16vec2;\n\n\t/// Medium qualifier 16 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i16, mediump>\t\tmediump_i16vec3;\n\n\t/// Medium qualifier 16 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i16, mediump>\t\tmediump_i16vec4;\n\n\n\t/// High qualifier 16 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i16, highp>\t\thighp_i16vec1;\n\n\t/// High qualifier 16 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i16, highp>\t\thighp_i16vec2;\n\n\t/// High qualifier 16 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i16, highp>\t\thighp_i16vec3;\n\n\t/// High qualifier 16 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i16, highp>\t\thighp_i16vec4;\n\n\n\n\n\t/// 16 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i16, defaultp> i16vec1;\n\n\t/// 16 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i16, defaultp> i16vec2;\n\n\t/// 16 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i16, defaultp> i16vec3;\n\n\t/// 16 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i16, defaultp> i16vec4;\n\n\n\n\t/// Low qualifier 32 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i32, lowp>\t\tlowp_i32vec1;\n\n\t/// Low qualifier 32 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i32, lowp>\t\tlowp_i32vec2;\n\n\t/// Low qualifier 32 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i32, lowp>\t\tlowp_i32vec3;\n\n\t/// Low qualifier 32 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i32, lowp>\t\tlowp_i32vec4;\n\n\n\t/// Medium qualifier 32 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i32, mediump>\t\tmediump_i32vec1;\n\n\t/// Medium qualifier 32 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i32, mediump>\t\tmediump_i32vec2;\n\n\t/// Medium qualifier 32 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i32, mediump>\t\tmediump_i32vec3;\n\n\t/// Medium qualifier 32 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i32, mediump>\t\tmediump_i32vec4;\n\n\n\t/// High qualifier 32 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i32, highp>\t\thighp_i32vec1;\n\n\t/// High qualifier 32 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i32, highp>\t\thighp_i32vec2;\n\n\t/// High qualifier 32 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i32, highp>\t\thighp_i32vec3;\n\n\t/// High qualifier 32 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i32, highp>\t\thighp_i32vec4;\n\n\n\t/// 32 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i32, defaultp> i32vec1;\n\n\t/// 32 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i32, defaultp> i32vec2;\n\n\t/// 32 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i32, defaultp> i32vec3;\n\n\t/// 32 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i32, defaultp> i32vec4;\n\n\n\n\n\t/// Low qualifier 64 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i64, lowp>\t\tlowp_i64vec1;\n\n\t/// Low qualifier 64 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i64, lowp>\t\tlowp_i64vec2;\n\n\t/// Low qualifier 64 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i64, lowp>\t\tlowp_i64vec3;\n\n\t/// Low qualifier 64 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i64, lowp>\t\tlowp_i64vec4;\n\n\n\t/// Medium qualifier 64 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i64, mediump>\t\tmediump_i64vec1;\n\n\t/// Medium qualifier 64 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i64, mediump>\t\tmediump_i64vec2;\n\n\t/// Medium qualifier 64 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i64, mediump>\t\tmediump_i64vec3;\n\n\t/// Medium qualifier 64 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i64, mediump>\t\tmediump_i64vec4;\n\n\n\t/// High qualifier 64 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i64, highp>\t\thighp_i64vec1;\n\n\t/// High qualifier 64 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i64, highp>\t\thighp_i64vec2;\n\n\t/// High qualifier 64 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i64, highp>\t\thighp_i64vec3;\n\n\t/// High qualifier 64 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i64, highp>\t\thighp_i64vec4;\n\n\n\t/// 64 bit signed integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, i64, defaultp> i64vec1;\n\n\t/// 64 bit signed integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, i64, defaultp> i64vec2;\n\n\t/// 64 bit signed integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, i64, defaultp> i64vec3;\n\n\t/// 64 bit signed integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, i64, defaultp> i64vec4;\n\n\n\t/////////////////////////////\n\t// Unsigned int vector types\n\n\t/// Low qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 lowp_uint8;\n\n\t/// Low qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 lowp_uint16;\n\n\t/// Low qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 lowp_uint32;\n\n\t/// Low qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 lowp_uint64;\n\n\t/// Low qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 lowp_uint8_t;\n\n\t/// Low qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 lowp_uint16_t;\n\n\t/// Low qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 lowp_uint32_t;\n\n\t/// Low qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 lowp_uint64_t;\n\n\t/// Low qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 lowp_u8;\n\n\t/// Low qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 lowp_u16;\n\n\t/// Low qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 lowp_u32;\n\n\t/// Low qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 lowp_u64;\n\n\t/// Medium qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 mediump_uint8;\n\n\t/// Medium qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 mediump_uint16;\n\n\t/// Medium qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 mediump_uint32;\n\n\t/// Medium qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 mediump_uint64;\n\n\t/// Medium qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 mediump_uint8_t;\n\n\t/// Medium qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 mediump_uint16_t;\n\n\t/// Medium qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 mediump_uint32_t;\n\n\t/// Medium qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 mediump_uint64_t;\n\n\t/// Medium qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 mediump_u8;\n\n\t/// Medium qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 mediump_u16;\n\n\t/// Medium qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 mediump_u32;\n\n\t/// Medium qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 mediump_u64;\n\n\t/// High qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 highp_uint8;\n\n\t/// High qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 highp_uint16;\n\n\t/// High qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 highp_uint32;\n\n\t/// High qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 highp_uint64;\n\n\t/// High qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 highp_uint8_t;\n\n\t/// High qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 highp_uint16_t;\n\n\t/// High qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 highp_uint32_t;\n\n\t/// High qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 highp_uint64_t;\n\n\t/// High qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 highp_u8;\n\n\t/// High qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 highp_u16;\n\n\t/// High qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 highp_u32;\n\n\t/// High qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 highp_u64;\n\n#if GLM_HAS_EXTENDED_INTEGER_TYPE\n\tusing std::uint8_t;\n\tusing std::uint16_t;\n\tusing std::uint32_t;\n\tusing std::uint64_t;\n#else\n\t/// Default qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 uint8_t;\n\n\t/// Default qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 uint16_t;\n\n\t/// Default qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 uint32_t;\n\n\t/// Default qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 uint64_t;\n#endif\n\n\t/// Default qualifier 8 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint8 u8;\n\n\t/// Default qualifier 16 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint16 u16;\n\n\t/// Default qualifier 32 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint32 u32;\n\n\t/// Default qualifier 64 bit unsigned integer type.\n\t/// @see gtc_type_precision\n\ttypedef detail::uint64 u64;\n\n\n\n\n\n\t//////////////////////\n\t// Float vector types\n\n\t/// Single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float float32;\n\n\t/// Double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef double float64;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32_t;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64_t;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_f32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_f64;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32_t;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64_t;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_f32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_f64;\n\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_float32_t;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_float64_t;\n\n\t/// Low 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 lowp_f32;\n\n\t/// Low 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 lowp_f64;\n\n\n\t/// Medium 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 mediump_float32;\n\n\t/// Medium 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 mediump_float64;\n\n\t/// Medium 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 mediump_float32_t;\n\n\t/// Medium 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 mediump_float64_t;\n\n\t/// Medium 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 mediump_f32;\n\n\t/// Medium 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 mediump_f64;\n\n\n\t/// High 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 highp_float32;\n\n\t/// High 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 highp_float64;\n\n\t/// High 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 highp_float32_t;\n\n\t/// High 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 highp_float64_t;\n\n\t/// High 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 highp_f32;\n\n\t/// High 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float64 highp_f64;\n\n\n#if(defined(GLM_PRECISION_LOWP_FLOAT))\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef lowp_float32_t float32_t;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef lowp_float64_t float64_t;\n\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f32 f32;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f64 f64;\n\n#elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef mediump_float32 float32_t;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef mediump_float64 float64_t;\n\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef mediump_float32 f32;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef mediump_float64 f64;\n\n#else//(defined(GLM_PRECISION_HIGHP_FLOAT))\n\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef highp_float32_t float32_t;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef highp_float64_t float64_t;\n\n\t/// Default 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef highp_float32_t f32;\n\n\t/// Default 64 bit double-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef highp_float64_t f64;\n#endif\n\n\n\t/// Low single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, float, lowp> lowp_fvec1;\n\n\t/// Low single-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, float, lowp> lowp_fvec2;\n\n\t/// Low single-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, float, lowp> lowp_fvec3;\n\n\t/// Low single-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, float, lowp> lowp_fvec4;\n\n\n\t/// Medium single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, float, mediump> mediump_fvec1;\n\n\t/// Medium Single-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, float, mediump> mediump_fvec2;\n\n\t/// Medium Single-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, float, mediump> mediump_fvec3;\n\n\t/// Medium Single-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, float, mediump> mediump_fvec4;\n\n\n\t/// High single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, float, highp> highp_fvec1;\n\n\t/// High Single-qualifier floating-point vector of 2 components.\n\t/// @see core_precision\n\ttypedef vec<2, float, highp> highp_fvec2;\n\n\t/// High Single-qualifier floating-point vector of 3 components.\n\t/// @see core_precision\n\ttypedef vec<3, float, highp> highp_fvec3;\n\n\t/// High Single-qualifier floating-point vector of 4 components.\n\t/// @see core_precision\n\ttypedef vec<4, float, highp> highp_fvec4;\n\n\n\t/// Low single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f32, lowp> lowp_f32vec1;\n\n\t/// Low single-qualifier floating-point vector of 2 components.\n\t/// @see core_precision\n\ttypedef vec<2, f32, lowp> lowp_f32vec2;\n\n\t/// Low single-qualifier floating-point vector of 3 components.\n\t/// @see core_precision\n\ttypedef vec<3, f32, lowp> lowp_f32vec3;\n\n\t/// Low single-qualifier floating-point vector of 4 components.\n\t/// @see core_precision\n\ttypedef vec<4, f32, lowp> lowp_f32vec4;\n\n\t/// Medium single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f32, mediump> mediump_f32vec1;\n\n\t/// Medium single-qualifier floating-point vector of 2 components.\n\t/// @see core_precision\n\ttypedef vec<2, f32, mediump> mediump_f32vec2;\n\n\t/// Medium single-qualifier floating-point vector of 3 components.\n\t/// @see core_precision\n\ttypedef vec<3, f32, mediump> mediump_f32vec3;\n\n\t/// Medium single-qualifier floating-point vector of 4 components.\n\t/// @see core_precision\n\ttypedef vec<4, f32, mediump> mediump_f32vec4;\n\n\t/// High single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f32, highp> highp_f32vec1;\n\n\t/// High single-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, f32, highp> highp_f32vec2;\n\n\t/// High single-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, f32, highp> highp_f32vec3;\n\n\t/// High single-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, f32, highp> highp_f32vec4;\n\n\n\t/// Low double-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f64, lowp> lowp_f64vec1;\n\n\t/// Low double-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, f64, lowp> lowp_f64vec2;\n\n\t/// Low double-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, f64, lowp> lowp_f64vec3;\n\n\t/// Low double-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, f64, lowp> lowp_f64vec4;\n\n\t/// Medium double-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f64, mediump> mediump_f64vec1;\n\n\t/// Medium double-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, f64, mediump> mediump_f64vec2;\n\n\t/// Medium double-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, f64, mediump> mediump_f64vec3;\n\n\t/// Medium double-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, f64, mediump> mediump_f64vec4;\n\n\t/// High double-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f64, highp> highp_f64vec1;\n\n\t/// High double-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, f64, highp> highp_f64vec2;\n\n\t/// High double-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, f64, highp> highp_f64vec3;\n\n\t/// High double-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, f64, highp> highp_f64vec4;\n\n\n\n\t//////////////////////\n\t// Float matrix types\n\n\t/// Low single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef lowp_f32 lowp_fmat1x1;\n\n\t/// Low single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, lowp> lowp_fmat2x2;\n\n\t/// Low single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, lowp> lowp_fmat2x3;\n\n\t/// Low single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, lowp> lowp_fmat2x4;\n\n\t/// Low single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, lowp> lowp_fmat3x2;\n\n\t/// Low single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, lowp> lowp_fmat3x3;\n\n\t/// Low single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, lowp> lowp_fmat3x4;\n\n\t/// Low single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, lowp> lowp_fmat4x2;\n\n\t/// Low single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, lowp> lowp_fmat4x3;\n\n\t/// Low single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, lowp> lowp_fmat4x4;\n\n\t/// Low single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef lowp_fmat1x1 lowp_fmat1;\n\n\t/// Low single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_fmat2x2 lowp_fmat2;\n\n\t/// Low single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_fmat3x3 lowp_fmat3;\n\n\t/// Low single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_fmat4x4 lowp_fmat4;\n\n\n\t/// Medium single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef mediump_f32 mediump_fmat1x1;\n\n\t/// Medium single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, mediump> mediump_fmat2x2;\n\n\t/// Medium single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, mediump> mediump_fmat2x3;\n\n\t/// Medium single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, mediump> mediump_fmat2x4;\n\n\t/// Medium single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, mediump> mediump_fmat3x2;\n\n\t/// Medium single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, mediump> mediump_fmat3x3;\n\n\t/// Medium single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, mediump> mediump_fmat3x4;\n\n\t/// Medium single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, mediump> mediump_fmat4x2;\n\n\t/// Medium single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, mediump> mediump_fmat4x3;\n\n\t/// Medium single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, mediump> mediump_fmat4x4;\n\n\t/// Medium single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef mediump_fmat1x1 mediump_fmat1;\n\n\t/// Medium single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_fmat2x2 mediump_fmat2;\n\n\t/// Medium single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_fmat3x3 mediump_fmat3;\n\n\t/// Medium single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_fmat4x4 mediump_fmat4;\n\n\n\t/// High single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef highp_f32 highp_fmat1x1;\n\n\t/// High single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, highp> highp_fmat2x2;\n\n\t/// High single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, highp> highp_fmat2x3;\n\n\t/// High single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, highp> highp_fmat2x4;\n\n\t/// High single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, highp> highp_fmat3x2;\n\n\t/// High single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, highp> highp_fmat3x3;\n\n\t/// High single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, highp> highp_fmat3x4;\n\n\t/// High single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, highp> highp_fmat4x2;\n\n\t/// High single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, highp> highp_fmat4x3;\n\n\t/// High single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, highp> highp_fmat4x4;\n\n\t/// High single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef highp_fmat1x1 highp_fmat1;\n\n\t/// High single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_fmat2x2 highp_fmat2;\n\n\t/// High single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_fmat3x3 highp_fmat3;\n\n\t/// High single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_fmat4x4 highp_fmat4;\n\n\n\t/// Low single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f32 lowp_f32mat1x1;\n\n\t/// Low single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, lowp> lowp_f32mat2x2;\n\n\t/// Low single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, lowp> lowp_f32mat2x3;\n\n\t/// Low single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, lowp> lowp_f32mat2x4;\n\n\t/// Low single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, lowp> lowp_f32mat3x2;\n\n\t/// Low single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, lowp> lowp_f32mat3x3;\n\n\t/// Low single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, lowp> lowp_f32mat3x4;\n\n\t/// Low single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, lowp> lowp_f32mat4x2;\n\n\t/// Low single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, lowp> lowp_f32mat4x3;\n\n\t/// Low single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, lowp> lowp_f32mat4x4;\n\n\t/// Low single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f32, lowp> lowp_f32mat1;\n\n\t/// Low single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f32mat2x2 lowp_f32mat2;\n\n\t/// Low single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f32mat3x3 lowp_f32mat3;\n\n\t/// Low single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f32mat4x4 lowp_f32mat4;\n\n\n\t/// High single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f32 mediump_f32mat1x1;\n\n\t/// Low single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, mediump> mediump_f32mat2x2;\n\n\t/// Medium single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, mediump> mediump_f32mat2x3;\n\n\t/// Medium single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, mediump> mediump_f32mat2x4;\n\n\t/// Medium single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, mediump> mediump_f32mat3x2;\n\n\t/// Medium single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, mediump> mediump_f32mat3x3;\n\n\t/// Medium single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, mediump> mediump_f32mat3x4;\n\n\t/// Medium single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, mediump> mediump_f32mat4x2;\n\n\t/// Medium single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, mediump> mediump_f32mat4x3;\n\n\t/// Medium single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, mediump> mediump_f32mat4x4;\n\n\t/// Medium single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f32, mediump> f32mat1;\n\n\t/// Medium single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f32mat2x2 mediump_f32mat2;\n\n\t/// Medium single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f32mat3x3 mediump_f32mat3;\n\n\t/// Medium single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f32mat4x4 mediump_f32mat4;\n\n\n\t/// High single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f32 highp_f32mat1x1;\n\n\t/// High single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, highp> highp_f32mat2x2;\n\n\t/// High single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, highp> highp_f32mat2x3;\n\n\t/// High single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, highp> highp_f32mat2x4;\n\n\t/// High single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, highp> highp_f32mat3x2;\n\n\t/// High single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, highp> highp_f32mat3x3;\n\n\t/// High single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, highp> highp_f32mat3x4;\n\n\t/// High single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, highp> highp_f32mat4x2;\n\n\t/// High single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, highp> highp_f32mat4x3;\n\n\t/// High single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, highp> highp_f32mat4x4;\n\n\t/// High single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f32, highp> f32mat1;\n\n\t/// High single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f32mat2x2 highp_f32mat2;\n\n\t/// High single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f32mat3x3 highp_f32mat3;\n\n\t/// High single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f32mat4x4 highp_f32mat4;\n\n\n\t/// Low double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f64 lowp_f64mat1x1;\n\n\t/// Low double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f64, lowp> lowp_f64mat2x2;\n\n\t/// Low double-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f64, lowp> lowp_f64mat2x3;\n\n\t/// Low double-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f64, lowp> lowp_f64mat2x4;\n\n\t/// Low double-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f64, lowp> lowp_f64mat3x2;\n\n\t/// Low double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f64, lowp> lowp_f64mat3x3;\n\n\t/// Low double-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f64, lowp> lowp_f64mat3x4;\n\n\t/// Low double-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f64, lowp> lowp_f64mat4x2;\n\n\t/// Low double-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f64, lowp> lowp_f64mat4x3;\n\n\t/// Low double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f64, lowp> lowp_f64mat4x4;\n\n\t/// Low double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef lowp_f64mat1x1 lowp_f64mat1;\n\n\t/// Low double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f64mat2x2 lowp_f64mat2;\n\n\t/// Low double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f64mat3x3 lowp_f64mat3;\n\n\t/// Low double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef lowp_f64mat4x4 lowp_f64mat4;\n\n\n\t/// Medium double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f64 Highp_f64mat1x1;\n\n\t/// Medium double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f64, mediump> mediump_f64mat2x2;\n\n\t/// Medium double-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f64, mediump> mediump_f64mat2x3;\n\n\t/// Medium double-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f64, mediump> mediump_f64mat2x4;\n\n\t/// Medium double-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f64, mediump> mediump_f64mat3x2;\n\n\t/// Medium double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f64, mediump> mediump_f64mat3x3;\n\n\t/// Medium double-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f64, mediump> mediump_f64mat3x4;\n\n\t/// Medium double-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f64, mediump> mediump_f64mat4x2;\n\n\t/// Medium double-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f64, mediump> mediump_f64mat4x3;\n\n\t/// Medium double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f64, mediump> mediump_f64mat4x4;\n\n\t/// Medium double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef mediump_f64mat1x1 mediump_f64mat1;\n\n\t/// Medium double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f64mat2x2 mediump_f64mat2;\n\n\t/// Medium double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f64mat3x3 mediump_f64mat3;\n\n\t/// Medium double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mediump_f64mat4x4 mediump_f64mat4;\n\n\t/// High double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f64 highp_f64mat1x1;\n\n\t/// High double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f64, highp> highp_f64mat2x2;\n\n\t/// High double-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f64, highp> highp_f64mat2x3;\n\n\t/// High double-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f64, highp> highp_f64mat2x4;\n\n\t/// High double-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f64, highp> highp_f64mat3x2;\n\n\t/// High double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f64, highp> highp_f64mat3x3;\n\n\t/// High double-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f64, highp> highp_f64mat3x4;\n\n\t/// High double-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f64, highp> highp_f64mat4x2;\n\n\t/// High double-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f64, highp> highp_f64mat4x3;\n\n\t/// High double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f64, highp> highp_f64mat4x4;\n\n\t/// High double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef highp_f64mat1x1 highp_f64mat1;\n\n\t/// High double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f64mat2x2 highp_f64mat2;\n\n\t/// High double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f64mat3x3 highp_f64mat3;\n\n\t/// High double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef highp_f64mat4x4 highp_f64mat4;\n\n\n\n\n\t/// Low qualifier 8 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u8, lowp> lowp_u8vec1;\n\n\t/// Low qualifier 8 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u8, lowp> lowp_u8vec2;\n\n\t/// Low qualifier 8 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u8, lowp> lowp_u8vec3;\n\n\t/// Low qualifier 8 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u8, lowp> lowp_u8vec4;\n\n\n\t/// Medium qualifier 8 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u8, mediump> mediump_u8vec1;\n\n\t/// Medium qualifier 8 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u8, mediump> mediump_u8vec2;\n\n\t/// Medium qualifier 8 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u8, mediump> mediump_u8vec3;\n\n\t/// Medium qualifier 8 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u8, mediump> mediump_u8vec4;\n\n\n\t/// High qualifier 8 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u8, highp> highp_u8vec1;\n\n\t/// High qualifier 8 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u8, highp> highp_u8vec2;\n\n\t/// High qualifier 8 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u8, highp> highp_u8vec3;\n\n\t/// High qualifier 8 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u8, highp> highp_u8vec4;\n\n\n\n\t/// Default qualifier 8 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u8, defaultp> u8vec1;\n\n\t/// Default qualifier 8 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u8, defaultp> u8vec2;\n\n\t/// Default qualifier 8 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u8, defaultp> u8vec3;\n\n\t/// Default qualifier 8 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u8, defaultp> u8vec4;\n\n\n\n\n\t/// Low qualifier 16 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u16, lowp>\t\tlowp_u16vec1;\n\n\t/// Low qualifier 16 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u16, lowp>\t\tlowp_u16vec2;\n\n\t/// Low qualifier 16 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u16, lowp>\t\tlowp_u16vec3;\n\n\t/// Low qualifier 16 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u16, lowp>\t\tlowp_u16vec4;\n\n\n\t/// Medium qualifier 16 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u16, mediump>\t\tmediump_u16vec1;\n\n\t/// Medium qualifier 16 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u16, mediump>\t\tmediump_u16vec2;\n\n\t/// Medium qualifier 16 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u16, mediump>\t\tmediump_u16vec3;\n\n\t/// Medium qualifier 16 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u16, mediump>\t\tmediump_u16vec4;\n\n\n\t/// High qualifier 16 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u16, highp>\t\thighp_u16vec1;\n\n\t/// High qualifier 16 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u16, highp>\t\thighp_u16vec2;\n\n\t/// High qualifier 16 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u16, highp>\t\thighp_u16vec3;\n\n\t/// High qualifier 16 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u16, highp>\t\thighp_u16vec4;\n\n\n\n\n\t/// Default qualifier 16 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u16, defaultp> u16vec1;\n\n\t/// Default qualifier 16 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u16, defaultp> u16vec2;\n\n\t/// Default qualifier 16 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u16, defaultp> u16vec3;\n\n\t/// Default qualifier 16 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u16, defaultp> u16vec4;\n\n\n\n\t/// Low qualifier 32 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u32, lowp>\t\tlowp_u32vec1;\n\n\t/// Low qualifier 32 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u32, lowp>\t\tlowp_u32vec2;\n\n\t/// Low qualifier 32 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u32, lowp>\t\tlowp_u32vec3;\n\n\t/// Low qualifier 32 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u32, lowp>\t\tlowp_u32vec4;\n\n\n\t/// Medium qualifier 32 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u32, mediump>\t\tmediump_u32vec1;\n\n\t/// Medium qualifier 32 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u32, mediump>\t\tmediump_u32vec2;\n\n\t/// Medium qualifier 32 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u32, mediump>\t\tmediump_u32vec3;\n\n\t/// Medium qualifier 32 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u32, mediump>\t\tmediump_u32vec4;\n\n\n\t/// High qualifier 32 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u32, highp>\t\thighp_u32vec1;\n\n\t/// High qualifier 32 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u32, highp>\t\thighp_u32vec2;\n\n\t/// High qualifier 32 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u32, highp>\t\thighp_u32vec3;\n\n\t/// High qualifier 32 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u32, highp>\t\thighp_u32vec4;\n\n\n\n\t/// Default qualifier 32 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u32, defaultp> u32vec1;\n\n\t/// Default qualifier 32 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u32, defaultp> u32vec2;\n\n\t/// Default qualifier 32 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u32, defaultp> u32vec3;\n\n\t/// Default qualifier 32 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u32, defaultp> u32vec4;\n\n\n\n\n\t/// Low qualifier 64 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u64, lowp>\t\tlowp_u64vec1;\n\n\t/// Low qualifier 64 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u64, lowp>\t\tlowp_u64vec2;\n\n\t/// Low qualifier 64 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u64, lowp>\t\tlowp_u64vec3;\n\n\t/// Low qualifier 64 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u64, lowp>\t\tlowp_u64vec4;\n\n\n\t/// Medium qualifier 64 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u64, mediump>\t\tmediump_u64vec1;\n\n\t/// Medium qualifier 64 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u64, mediump>\t\tmediump_u64vec2;\n\n\t/// Medium qualifier 64 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u64, mediump>\t\tmediump_u64vec3;\n\n\t/// Medium qualifier 64 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u64, mediump>\t\tmediump_u64vec4;\n\n\n\t/// High qualifier 64 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u64, highp>\t\thighp_u64vec1;\n\n\t/// High qualifier 64 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u64, highp>\t\thighp_u64vec2;\n\n\t/// High qualifier 64 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u64, highp>\t\thighp_u64vec3;\n\n\t/// High qualifier 64 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u64, highp>\t\thighp_u64vec4;\n\n\n\n\n\t/// Default qualifier 64 bit unsigned integer scalar type.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, u64, defaultp> u64vec1;\n\n\t/// Default qualifier 64 bit unsigned integer vector of 2 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, u64, defaultp> u64vec2;\n\n\t/// Default qualifier 64 bit unsigned integer vector of 3 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, u64, defaultp> u64vec3;\n\n\t/// Default qualifier 64 bit unsigned integer vector of 4 components type.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, u64, defaultp> u64vec4;\n\n\n\t//////////////////////\n\t// Float vector types\n\n\t/// 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 float32_t;\n\n\t/// 32 bit single-qualifier floating-point scalar.\n\t/// @see gtc_type_precision\n\ttypedef float32 f32;\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t\t/// 64 bit double-qualifier floating-point scalar.\n\t\t/// @see gtc_type_precision\n\t\ttypedef float64 float64_t;\n\n\t\t/// 64 bit double-qualifier floating-point scalar.\n\t\t/// @see gtc_type_precision\n\t\ttypedef float64 f64;\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\t/// Single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, float, defaultp> fvec1;\n\n\t/// Single-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, float, defaultp> fvec2;\n\n\t/// Single-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, float, defaultp> fvec3;\n\n\t/// Single-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, float, defaultp> fvec4;\n\n\n\t/// Single-qualifier floating-point vector of 1 component.\n\t/// @see gtc_type_precision\n\ttypedef vec<1, f32, defaultp> f32vec1;\n\n\t/// Single-qualifier floating-point vector of 2 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<2, f32, defaultp> f32vec2;\n\n\t/// Single-qualifier floating-point vector of 3 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<3, f32, defaultp> f32vec3;\n\n\t/// Single-qualifier floating-point vector of 4 components.\n\t/// @see gtc_type_precision\n\ttypedef vec<4, f32, defaultp> f32vec4;\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\t\t/// Double-qualifier floating-point vector of 1 component.\n\t\t/// @see gtc_type_precision\n\t\ttypedef vec<1, f64, defaultp> f64vec1;\n\n\t\t/// Double-qualifier floating-point vector of 2 components.\n\t\t/// @see gtc_type_precision\n\t\ttypedef vec<2, f64, defaultp> f64vec2;\n\n\t\t/// Double-qualifier floating-point vector of 3 components.\n\t\t/// @see gtc_type_precision\n\t\ttypedef vec<3, f64, defaultp> f64vec3;\n\n\t\t/// Double-qualifier floating-point vector of 4 components.\n\t\t/// @see gtc_type_precision\n\t\ttypedef vec<4, f64, defaultp> f64vec4;\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\n\t//////////////////////\n\t// Float matrix types\n\n\t/// Single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f32> fmat1;\n\n\t/// Single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, defaultp> fmat2;\n\n\t/// Single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, defaultp> fmat3;\n\n\t/// Single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, defaultp> fmat4;\n\n\n\t/// Single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f32 fmat1x1;\n\n\t/// Single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, defaultp> fmat2x2;\n\n\t/// Single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, defaultp> fmat2x3;\n\n\t/// Single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, defaultp> fmat2x4;\n\n\t/// Single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, defaultp> fmat3x2;\n\n\t/// Single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, defaultp> fmat3x3;\n\n\t/// Single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, defaultp> fmat3x4;\n\n\t/// Single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, defaultp> fmat4x2;\n\n\t/// Single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, defaultp> fmat4x3;\n\n\t/// Single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, defaultp> fmat4x4;\n\n\n\t/// Single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f32, defaultp> f32mat1;\n\n\t/// Single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, defaultp> f32mat2;\n\n\t/// Single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, defaultp> f32mat3;\n\n\t/// Single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, defaultp> f32mat4;\n\n\n\t/// Single-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f32 f32mat1x1;\n\n\t/// Single-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f32, defaultp> f32mat2x2;\n\n\t/// Single-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f32, defaultp> f32mat2x3;\n\n\t/// Single-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f32, defaultp> f32mat2x4;\n\n\t/// Single-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f32, defaultp> f32mat3x2;\n\n\t/// Single-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f32, defaultp> f32mat3x3;\n\n\t/// Single-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f32, defaultp> f32mat3x4;\n\n\t/// Single-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f32, defaultp> f32mat4x2;\n\n\t/// Single-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f32, defaultp> f32mat4x3;\n\n\t/// Single-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f32, defaultp> f32mat4x4;\n\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// Double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef detail::tmat1x1<f64, defaultp> f64mat1;\n\n\t/// Double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f64, defaultp> f64mat2;\n\n\t/// Double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f64, defaultp> f64mat3;\n\n\t/// Double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f64, defaultp> f64mat4;\n\n\n\t/// Double-qualifier floating-point 1x1 matrix.\n\t/// @see gtc_type_precision\n\t//typedef f64 f64mat1x1;\n\n\t/// Double-qualifier floating-point 2x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 2, f64, defaultp> f64mat2x2;\n\n\t/// Double-qualifier floating-point 2x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 3, f64, defaultp> f64mat2x3;\n\n\t/// Double-qualifier floating-point 2x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<2, 4, f64, defaultp> f64mat2x4;\n\n\t/// Double-qualifier floating-point 3x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 2, f64, defaultp> f64mat3x2;\n\n\t/// Double-qualifier floating-point 3x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 3, f64, defaultp> f64mat3x3;\n\n\t/// Double-qualifier floating-point 3x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<3, 4, f64, defaultp> f64mat3x4;\n\n\t/// Double-qualifier floating-point 4x2 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 2, f64, defaultp> f64mat4x2;\n\n\t/// Double-qualifier floating-point 4x3 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 3, f64, defaultp> f64mat4x3;\n\n\t/// Double-qualifier floating-point 4x4 matrix.\n\t/// @see gtc_type_precision\n\ttypedef mat<4, 4, f64, defaultp> f64mat4x4;\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\t//////////////////////////\n\t// Quaternion types\n\n\t/// Single-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f32, defaultp> f32quat;\n\n\t/// Low single-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f32, lowp> lowp_f32quat;\n\n\t/// Low double-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f64, lowp> lowp_f64quat;\n\n\t/// Medium single-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f32, mediump> mediump_f32quat;\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// Medium double-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f64, mediump> mediump_f64quat;\n\n\t/// High single-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f32, highp> highp_f32quat;\n\n\t/// High double-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f64, highp> highp_f64quat;\n\n\t/// Double-qualifier floating-point quaternion.\n\t/// @see gtc_type_precision\n\ttypedef qua<f64, defaultp> f64quat;\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\t/// @}\n}//namespace glm\n\n#include \"type_precision.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/type_precision.inl",
    "content": "/// @ref gtc_precision\n\nnamespace glm\n{\n\n}\n"
  },
  {
    "path": "libraries/glm/gtc/type_ptr.hpp",
    "content": "/// @ref gtc_type_ptr\n/// @file glm/gtc/type_ptr.hpp\n///\n/// @see core (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtc_type_ptr GLM_GTC_type_ptr\n/// @ingroup gtc\n///\n/// Include <glm/gtc/type_ptr.hpp> to use the features of this extension.\n///\n/// Handles the interaction between pointers and vector, matrix types.\n///\n/// This extension defines an overloaded function, glm::value_ptr. It returns\n/// a pointer to the memory layout of the object. Matrix types store their values\n/// in column-major order.\n///\n/// This is useful for uploading data to matrices or copying data to buffer objects.\n///\n/// Example:\n/// @code\n/// #include <glm/glm.hpp>\n/// #include <glm/gtc/type_ptr.hpp>\n///\n/// glm::vec3 aVector(3);\n/// glm::mat4 someMatrix(1.0);\n///\n/// glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));\n/// glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));\n/// @endcode\n///\n/// <glm/gtc/type_ptr.hpp> need to be included to use the features of this extension.\n\n#pragma once\n\n// Dependency:\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtc/vec1.hpp\"\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../mat2x2.hpp\"\n#include \"../mat2x3.hpp\"\n#include \"../mat2x4.hpp\"\n#include \"../mat3x2.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../mat3x4.hpp\"\n#include \"../mat4x2.hpp\"\n#include \"../mat4x3.hpp\"\n#include \"../mat4x4.hpp\"\n#include <cstring>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_type_ptr extension included\")\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtc_type_ptr\n\t/// @{\n\n\t/// Return the constant address to the data of the input parameter.\n\t/// @see gtc_type_ptr\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::value_type const * value_ptr(genType const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<1, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<2, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<3, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<4, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<1, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<2, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<3, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<4, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<1, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<2, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<3, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<4, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<1, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<2, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<3, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<4, T, Q> const& v);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<2, T, defaultp> make_vec2(T const * const ptr);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<3, T, defaultp> make_vec3(T const * const ptr);\n\n\t/// Build a vector from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL vec<4, T, defaultp> make_vec4(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<2, 2, T, defaultp> make_mat2x2(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<2, 3, T, defaultp> make_mat2x3(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<2, 4, T, defaultp> make_mat2x4(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<3, 2, T, defaultp> make_mat3x2(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<3, 3, T, defaultp> make_mat3x3(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<3, 4, T, defaultp> make_mat3x4(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 2, T, defaultp> make_mat4x2(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 3, T, defaultp> make_mat4x3(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> make_mat4x4(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<2, 2, T, defaultp> make_mat2(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<3, 3, T, defaultp> make_mat3(T const * const ptr);\n\n\t/// Build a matrix from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> make_mat4(T const * const ptr);\n\n\t/// Build a quaternion from a pointer.\n\t/// @see gtc_type_ptr\n\ttemplate<typename T>\n\tGLM_FUNC_DECL qua<T, defaultp> make_quat(T const * const ptr);\n\n\t/// @}\n}//namespace glm\n\n#include \"type_ptr.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/type_ptr.inl",
    "content": "/// @ref gtc_type_ptr\n\n#include <cstring>\n\nnamespace glm\n{\n\t/// @addtogroup gtc_type_ptr\n\t/// @{\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(vec<2, T, Q> const& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(vec<2, T, Q>& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const * value_ptr(vec<3, T, Q> const& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(vec<3, T, Q>& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(vec<4, T, Q> const& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(vec<4, T, Q>& v)\n\t{\n\t\treturn &(v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<2, 2, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 3, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<3, 3, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<4, 4, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 3, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<2, 3, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 2, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<3, 2, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 4, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<2, 4, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 2, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<4, 2, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 4, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(mat<3, 4, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 3, T, Q> const& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T * value_ptr(mat<4, 3, T, Q>& m)\n\t{\n\t\treturn &(m[0].x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T const * value_ptr(qua<T, Q> const& q)\n\t{\n\t\treturn &(q[0]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T* value_ptr(qua<T, Q>& q)\n\t{\n\t\treturn &(q[0]);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<1, T, Q> make_vec1(vec<1, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<1, T, Q> make_vec1(vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<1, T, Q> make_vec1(vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<1, T, Q> make_vec1(vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<1, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<2, T, Q> make_vec2(vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(v.x, static_cast<T>(0));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<2, T, Q> make_vec2(vec<2, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<2, T, Q> make_vec2(vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<2, T, Q> make_vec2(vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<2, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<3, T, Q> make_vec3(vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(v.x, static_cast<T>(0), static_cast<T>(0));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<3, T, Q> make_vec3(vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(v.x, v.y, static_cast<T>(0));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<3, T, Q> make_vec3(vec<3, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<3, T, Q> make_vec3(vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<3, T, Q>(v);\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<4, T, Q> make_vec4(vec<1, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(v.x, static_cast<T>(0), static_cast<T>(0), static_cast<T>(1));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<4, T, Q> make_vec4(vec<2, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(v.x, v.y, static_cast<T>(0), static_cast<T>(1));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<4, T, Q> make_vec4(vec<3, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(v.x, v.y, v.z, static_cast<T>(1));\n\t}\n\n\ttemplate <typename T, qualifier Q>\n\tinline vec<4, T, Q> make_vec4(vec<4, T, Q> const& v)\n\t{\n\t\treturn v;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<2, T, defaultp> make_vec2(T const *const ptr)\n\t{\n\t\tvec<2, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(vec<2, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<3, T, defaultp> make_vec3(T const *const ptr)\n\t{\n\t\tvec<3, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(vec<3, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER vec<4, T, defaultp> make_vec4(T const *const ptr)\n\t{\n\t\tvec<4, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(vec<4, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, defaultp> make_mat2x2(T const *const ptr)\n\t{\n\t\tmat<2, 2, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<2, 2, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, defaultp> make_mat2x3(T const *const ptr)\n\t{\n\t\tmat<2, 3, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<2, 3, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, defaultp> make_mat2x4(T const *const ptr)\n\t{\n\t\tmat<2, 4, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<2, 4, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, defaultp> make_mat3x2(T const *const ptr)\n\t{\n\t\tmat<3, 2, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<3, 2, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, defaultp> make_mat3x3(T const *const ptr)\n\t{\n\t\tmat<3, 3, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<3, 3, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, defaultp> make_mat3x4(T const *const ptr)\n\t{\n\t\tmat<3, 4, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<3, 4, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, defaultp> make_mat4x2(T const *const ptr)\n\t{\n\t\tmat<4, 2, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<4, 2, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, defaultp> make_mat4x3(T const *const ptr)\n\t{\n\t\tmat<4, 3, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<4, 3, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> make_mat4x4(T const *const ptr)\n\t{\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(mat<4, 4, T, defaultp>));\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, defaultp> make_mat2(T const *const ptr)\n\t{\n\t\treturn make_mat2x2(ptr);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, defaultp> make_mat3(T const *const ptr)\n\t{\n\t\treturn make_mat3x3(ptr);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> make_mat4(T const *const ptr)\n\t{\n\t\treturn make_mat4x4(ptr);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER qua<T, defaultp> make_quat(T const *const ptr)\n\t{\n\t\tqua<T, defaultp> Result;\n\t\tmemcpy(value_ptr(Result), ptr, sizeof(qua<T, defaultp>));\n\t\treturn Result;\n\t}\n\n\t/// @}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtc/ulp.hpp",
    "content": "/// @ref gtc_ulp\n/// @file glm/gtc/ulp.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_ulp GLM_GTC_ulp\n/// @ingroup gtc\n///\n/// Include <glm/gtc/ulp.hpp> to use the features of this extension.\n///\n/// Allow the measurement of the accuracy of a function against a reference\n/// implementation. This extension works on floating-point data and provide results\n/// in ULP.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/_vectorize.hpp\"\n#include \"../ext/scalar_int_sized.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_ulp extension included\")\n#endif\n\nnamespace glm\n{\n\t/// Return the next ULP value(s) after the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see gtc_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType next_float(genType x);\n\n\t/// Return the previous ULP value(s) before the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see gtc_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType prev_float(genType x);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see gtc_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType next_float(genType x, int ULPs);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam genType A floating-point scalar type.\n\t///\n\t/// @see gtc_ulp\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType prev_float(genType x, int ULPs);\n\n\t/// Return the distance in the number of ULP between 2 single-precision floating-point scalars.\n\t///\n\t/// @see gtc_ulp\n\tGLM_FUNC_DECL int float_distance(float x, float y);\n\n\t/// Return the distance in the number of ULP between 2 double-precision floating-point scalars.\n\t///\n\t/// @see gtc_ulp\n\tGLM_FUNC_DECL int64 float_distance(double x, double y);\n\n\t/// Return the next ULP value(s) after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, int ULPs);\n\n\t/// Return the value(s) ULP distance after the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);\n\n\t/// Return the previous ULP value(s) before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, int ULPs);\n\n\t/// Return the value(s) ULP distance before the input value(s).\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);\n\n\t/// Return the distance in the number of ULP between 2 single-precision floating-point scalars.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> float_distance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);\n\n\t/// Return the distance in the number of ULP between 2 double-precision floating-point scalars.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtc_ulp\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int64, Q> float_distance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);\n\n\t/// @}\n}//namespace glm\n\n#include \"ulp.inl\"\n"
  },
  {
    "path": "libraries/glm/gtc/ulp.inl",
    "content": "/// @ref gtc_ulp\n\n#include \"../ext/scalar_ulp.hpp\"\n\nnamespace glm\n{\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER float next_float(float x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\treturn std::nextafter(x, std::numeric_limits<float>::max());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\treturn detail::nextafterf(x, FLT_MAX);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\treturn __builtin_nextafterf(x, FLT_MAX);\n#\t\telse\n\t\treturn nextafterf(x, FLT_MAX);\n#\t\tendif\n\t}\n\n\ttemplate<>\n\tGLM_FUNC_QUALIFIER double next_float(double x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\treturn std::nextafter(x, std::numeric_limits<double>::max());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\treturn detail::nextafter(x, std::numeric_limits<double>::max());\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\treturn __builtin_nextafter(x, DBL_MAX);\n#\t\telse\n\t\treturn nextafter(x, DBL_MAX);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T next_float(T x, int ULPs)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'next_float' only accept floating-point input\");\n\t\tassert(ULPs >= 0);\n\n\t\tT temp = x;\n\t\tfor (int i = 0; i < ULPs; ++i)\n\t\t\ttemp = next_float(temp);\n\t\treturn temp;\n\t}\n\n\tGLM_FUNC_QUALIFIER float prev_float(float x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\treturn std::nextafter(x, std::numeric_limits<float>::min());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\treturn detail::nextafterf(x, FLT_MIN);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\treturn __builtin_nextafterf(x, FLT_MIN);\n#\t\telse\n\t\treturn nextafterf(x, FLT_MIN);\n#\t\tendif\n\t}\n\n\tGLM_FUNC_QUALIFIER double prev_float(double x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\treturn std::nextafter(x, std::numeric_limits<double>::min());\n#\t\telif((GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS)))\n\t\treturn _nextafter(x, DBL_MIN);\n#\t\telif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n\t\treturn __builtin_nextafter(x, DBL_MIN);\n#\t\telse\n\t\treturn nextafter(x, DBL_MIN);\n#\t\tendif\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T prev_float(T x, int ULPs)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'prev_float' only accept floating-point input\");\n\t\tassert(ULPs >= 0);\n\n\t\tT temp = x;\n\t\tfor (int i = 0; i < ULPs; ++i)\n\t\t\ttemp = prev_float(temp);\n\t\treturn temp;\n\t}\n\n\tGLM_FUNC_QUALIFIER int float_distance(float x, float y)\n\t{\n\t\tdetail::float_t<float> const a(x);\n\t\tdetail::float_t<float> const b(y);\n\n\t\treturn abs(a.i - b.i);\n\t}\n\n\tGLM_FUNC_QUALIFIER int64 float_distance(double x, double y)\n\t{\n\t\tdetail::float_t<double> const a(x);\n\t\tdetail::float_t<double> const b(y);\n\n\t\treturn abs(a.i - b.i);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> next_float(vec<L, T, Q> const& x)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = next_float(x[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> next_float(vec<L, T, Q> const& x, int ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = next_float(x[i], ULPs);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> next_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = next_float(x[i], ULPs[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prev_float(vec<L, T, Q> const& x)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prev_float(x[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prev_float(vec<L, T, Q> const& x, int ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prev_float(x[i], ULPs);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> prev_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = prev_float(x[i], ULPs[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int, Q> float_distance(vec<L, float, Q> const& x, vec<L, float, Q> const& y)\n\t{\n\t\tvec<L, int, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = float_distance(x[i], y[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, int64, Q> float_distance(vec<L, double, Q> const& x, vec<L, double, Q> const& y)\n\t{\n\t\tvec<L, int64, Q> Result;\n\t\tfor (length_t i = 0, n = Result.length(); i < n; ++i)\n\t\t\tResult[i] = float_distance(x[i], y[i]);\n\t\treturn Result;\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtc/vec1.hpp",
    "content": "/// @ref gtc_vec1\n/// @file glm/gtc/vec1.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtc_vec1 GLM_GTC_vec1\n/// @ingroup gtc\n///\n/// Include <glm/gtc/vec1.hpp> to use the features of this extension.\n///\n/// Add vec1, ivec1, uvec1 and bvec1 types.\n\n#pragma once\n\n// Dependency:\n#include \"../ext/vector_bool1.hpp\"\n#include \"../ext/vector_bool1_precision.hpp\"\n#include \"../ext/vector_float1.hpp\"\n#include \"../ext/vector_float1_precision.hpp\"\n#include \"../ext/vector_double1.hpp\"\n#include \"../ext/vector_double1_precision.hpp\"\n#include \"../ext/vector_int1.hpp\"\n#include \"../ext/vector_int1_precision.hpp\"\n#include \"../ext/vector_uint1.hpp\"\n#include \"../ext/vector_uint1_precision.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tpragma message(\"GLM: GLM_GTC_vec1 extension included\")\n#endif\n\n"
  },
  {
    "path": "libraries/glm/gtx/associated_min_max.hpp",
    "content": "/// @ref gtx_associated_min_max\n/// @file glm/gtx/associated_min_max.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_associated_min_max GLM_GTX_associated_min_max\n/// @ingroup gtx\n///\n/// Include <glm/gtx/associated_min_max.hpp> to use the features of this extension.\n///\n/// @brief Min and max functions that return associated values not the compared onces.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_associated_min_max extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_associated_min_max\n\t/// @{\n\n\t/// Minimum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL U associatedMin(T x, U a, T y, U b);\n\n\t/// Minimum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<2, U, Q> associatedMin(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b);\n\n\t/// Minimum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tT x, const vec<L, U, Q>& a,\n\t\tT y, const vec<L, U, Q>& b);\n\n\t/// Minimum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tvec<L, T, Q> const& x, U a,\n\t\tvec<L, T, Q> const& y, U b);\n\n\t/// Minimum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U>\n\tGLM_FUNC_DECL U associatedMin(\n\t\tT x, U a,\n\t\tT y, U b,\n\t\tT z, U c);\n\n\t/// Minimum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\t\tvec<L, T, Q> const& z, vec<L, U, Q> const& c);\n\n\t/// Minimum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U>\n\tGLM_FUNC_DECL U associatedMin(\n\t\tT x, U a,\n\t\tT y, U b,\n\t\tT z, U c,\n\t\tT w, U d);\n\n\t/// Minimum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\t\tvec<L, T, Q> const& z, vec<L, U, Q> const& c,\n\t\tvec<L, T, Q> const& w, vec<L, U, Q> const& d);\n\n\t/// Minimum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tT x, vec<L, U, Q> const& a,\n\t\tT y, vec<L, U, Q> const& b,\n\t\tT z, vec<L, U, Q> const& c,\n\t\tT w, vec<L, U, Q> const& d);\n\n\t/// Minimum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMin(\n\t\tvec<L, T, Q> const& x, U a,\n\t\tvec<L, T, Q> const& y, U b,\n\t\tvec<L, T, Q> const& z, U c,\n\t\tvec<L, T, Q> const& w, U d);\n\n\t/// Maximum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U>\n\tGLM_FUNC_DECL U associatedMax(T x, U a, T y, U b);\n\n\t/// Maximum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<2, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b);\n\n\t/// Maximum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> associatedMax(\n\t\tT x, vec<L, U, Q> const& a,\n\t\tT y, vec<L, U, Q> const& b);\n\n\t/// Maximum comparison between 2 variables and returns 2 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, U a,\n\t\tvec<L, T, Q> const& y, U b);\n\n\t/// Maximum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U>\n\tGLM_FUNC_DECL U associatedMax(\n\t\tT x, U a,\n\t\tT y, U b,\n\t\tT z, U c);\n\n\t/// Maximum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\t\tvec<L, T, Q> const& z, vec<L, U, Q> const& c);\n\n\t/// Maximum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> associatedMax(\n\t\tT x, vec<L, U, Q> const& a,\n\t\tT y, vec<L, U, Q> const& b,\n\t\tT z, vec<L, U, Q> const& c);\n\n\t/// Maximum comparison between 3 variables and returns 3 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, U a,\n\t\tvec<L, T, Q> const& y, U b,\n\t\tvec<L, T, Q> const& z, U c);\n\n\t/// Maximum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<typename T, typename U>\n\tGLM_FUNC_DECL U associatedMax(\n\t\tT x, U a,\n\t\tT y, U b,\n\t\tT z, U c,\n\t\tT w, U d);\n\n\t/// Maximum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\t\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\t\tvec<L, T, Q> const& z, vec<L, U, Q> const& c,\n\t\tvec<L, T, Q> const& w, vec<L, U, Q> const& d);\n\n\t/// Maximum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tT x, vec<L, U, Q> const& a,\n\t\tT y, vec<L, U, Q> const& b,\n\t\tT z, vec<L, U, Q> const& c,\n\t\tT w, vec<L, U, Q> const& d);\n\n\t/// Maximum comparison between 4 variables and returns 4 associated variable values\n\t/// @see gtx_associated_min_max\n\ttemplate<length_t L, typename T, typename U, qualifier Q>\n\tGLM_FUNC_DECL vec<L, U, Q> associatedMax(\n\t\tvec<L, T, Q> const& x, U a,\n\t\tvec<L, T, Q> const& y, U b,\n\t\tvec<L, T, Q> const& z, U c,\n\t\tvec<L, T, Q> const& w, U d);\n\n\t/// @}\n} //namespace glm\n\n#include \"associated_min_max.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/associated_min_max.inl",
    "content": "/// @ref gtx_associated_min_max\n\nnamespace glm{\n\n// Min comparison between 2 variables\ntemplate<typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER U associatedMin(T x, U a, T y, U b)\n{\n\treturn x < y ? a : b;\n}\n\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<2, U, Q> associatedMin\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] < y[i] ? a[i] : b[i];\n\treturn Result;\n}\n\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tT x, const vec<L, U, Q>& a,\n\tT y, const vec<L, U, Q>& b\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x < y ? a[i] : b[i];\n\treturn Result;\n}\n\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tvec<L, T, Q> const& x, U a,\n\tvec<L, T, Q> const& y, U b\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] < y[i] ? a : b;\n\treturn Result;\n}\n\n// Min comparison between 3 variables\ntemplate<typename T, typename U>\nGLM_FUNC_QUALIFIER U associatedMin\n(\n\tT x, U a,\n\tT y, U b,\n\tT z, U c\n)\n{\n\tU Result = x < y ? (x < z ? a : c) : (y < z ? b : c);\n\treturn Result;\n}\n\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\tvec<L, T, Q> const& z, vec<L, U, Q> const& c\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);\n\treturn Result;\n}\n\n// Min comparison between 4 variables\ntemplate<typename T, typename U>\nGLM_FUNC_QUALIFIER U associatedMin\n(\n\tT x, U a,\n\tT y, U b,\n\tT z, U c,\n\tT w, U d\n)\n{\n\tT Test1 = min(x, y);\n\tT Test2 = min(z, w);\n\tU Result1 = x < y ? a : b;\n\tU Result2 = z < w ? c : d;\n\tU Result = Test1 < Test2 ? Result1 : Result2;\n\treturn Result;\n}\n\n// Min comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\tvec<L, T, Q> const& z, vec<L, U, Q> const& c,\n\tvec<L, T, Q> const& w, vec<L, U, Q> const& d\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tT Test1 = min(x[i], y[i]);\n\t\tT Test2 = min(z[i], w[i]);\n\t\tU Result1 = x[i] < y[i] ? a[i] : b[i];\n\t\tU Result2 = z[i] < w[i] ? c[i] : d[i];\n\t\tResult[i] = Test1 < Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n\n// Min comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tT x, vec<L, U, Q> const& a,\n\tT y, vec<L, U, Q> const& b,\n\tT z, vec<L, U, Q> const& c,\n\tT w, vec<L, U, Q> const& d\n)\n{\n\tT Test1 = min(x, y);\n\tT Test2 = min(z, w);\n\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tU Result1 = x < y ? a[i] : b[i];\n\t\tU Result2 = z < w ? c[i] : d[i];\n\t\tResult[i] = Test1 < Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n\n// Min comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMin\n(\n\tvec<L, T, Q> const& x, U a,\n\tvec<L, T, Q> const& y, U b,\n\tvec<L, T, Q> const& z, U c,\n\tvec<L, T, Q> const& w, U d\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tT Test1 = min(x[i], y[i]);\n\t\tT Test2 = min(z[i], w[i]);\n\t\tU Result1 = x[i] < y[i] ? a : b;\n\t\tU Result2 = z[i] < w[i] ? c : d;\n\t\tResult[i] = Test1 < Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n\n// Max comparison between 2 variables\ntemplate<typename T, typename U>\nGLM_FUNC_QUALIFIER U associatedMax(T x, U a, T y, U b)\n{\n\treturn x > y ? a : b;\n}\n\n// Max comparison between 2 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<2, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] > y[i] ? a[i] : b[i];\n\treturn Result;\n}\n\n// Max comparison between 2 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, T, Q> associatedMax\n(\n\tT x, vec<L, U, Q> const& a,\n\tT y, vec<L, U, Q> const& b\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x > y ? a[i] : b[i];\n\treturn Result;\n}\n\n// Max comparison between 2 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, U a,\n\tvec<L, T, Q> const& y, U b\n)\n{\n\tvec<L, T, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] > y[i] ? a : b;\n\treturn Result;\n}\n\n// Max comparison between 3 variables\ntemplate<typename T, typename U>\nGLM_FUNC_QUALIFIER U associatedMax\n(\n\tT x, U a,\n\tT y, U b,\n\tT z, U c\n)\n{\n\tU Result = x > y ? (x > z ? a : c) : (y > z ? b : c);\n\treturn Result;\n}\n\n// Max comparison between 3 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\tvec<L, T, Q> const& z, vec<L, U, Q> const& c\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);\n\treturn Result;\n}\n\n// Max comparison between 3 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, T, Q> associatedMax\n(\n\tT x, vec<L, U, Q> const& a,\n\tT y, vec<L, U, Q> const& b,\n\tT z, vec<L, U, Q> const& c\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);\n\treturn Result;\n}\n\n// Max comparison between 3 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, U a,\n\tvec<L, T, Q> const& y, U b,\n\tvec<L, T, Q> const& z, U c\n)\n{\n\tvec<L, T, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t\tResult[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);\n\treturn Result;\n}\n\n// Max comparison between 4 variables\ntemplate<typename T, typename U>\nGLM_FUNC_QUALIFIER U associatedMax\n(\n\tT x, U a,\n\tT y, U b,\n\tT z, U c,\n\tT w, U d\n)\n{\n\tT Test1 = max(x, y);\n\tT Test2 = max(z, w);\n\tU Result1 = x > y ? a : b;\n\tU Result2 = z > w ? c : d;\n\tU Result = Test1 > Test2 ? Result1 : Result2;\n\treturn Result;\n}\n\n// Max comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, vec<L, U, Q> const& a,\n\tvec<L, T, Q> const& y, vec<L, U, Q> const& b,\n\tvec<L, T, Q> const& z, vec<L, U, Q> const& c,\n\tvec<L, T, Q> const& w, vec<L, U, Q> const& d\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tT Test1 = max(x[i], y[i]);\n\t\tT Test2 = max(z[i], w[i]);\n\t\tU Result1 = x[i] > y[i] ? a[i] : b[i];\n\t\tU Result2 = z[i] > w[i] ? c[i] : d[i];\n\t\tResult[i] = Test1 > Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n\n// Max comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tT x, vec<L, U, Q> const& a,\n\tT y, vec<L, U, Q> const& b,\n\tT z, vec<L, U, Q> const& c,\n\tT w, vec<L, U, Q> const& d\n)\n{\n\tT Test1 = max(x, y);\n\tT Test2 = max(z, w);\n\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tU Result1 = x > y ? a[i] : b[i];\n\t\tU Result2 = z > w ? c[i] : d[i];\n\t\tResult[i] = Test1 > Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n\n// Max comparison between 4 variables\ntemplate<length_t L, typename T, typename U, qualifier Q>\nGLM_FUNC_QUALIFIER vec<L, U, Q> associatedMax\n(\n\tvec<L, T, Q> const& x, U a,\n\tvec<L, T, Q> const& y, U b,\n\tvec<L, T, Q> const& z, U c,\n\tvec<L, T, Q> const& w, U d\n)\n{\n\tvec<L, U, Q> Result;\n\tfor(length_t i = 0, n = Result.length(); i < n; ++i)\n\t{\n\t\tT Test1 = max(x[i], y[i]);\n\t\tT Test2 = max(z[i], w[i]);\n\t\tU Result1 = x[i] > y[i] ? a : b;\n\t\tU Result2 = z[i] > w[i] ? c : d;\n\t\tResult[i] = Test1 > Test2 ? Result1 : Result2;\n\t}\n\treturn Result;\n}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/bit.hpp",
    "content": "/// @ref gtx_bit\n/// @file glm/gtx/bit.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_bit GLM_GTX_bit\n/// @ingroup gtx\n///\n/// Include <glm/gtx/bit.hpp> to use the features of this extension.\n///\n/// Allow to perform bit operations on integer values\n\n#pragma once\n\n// Dependencies\n#include \"../gtc/bitfield.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_bit extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_bit\n\t/// @{\n\n\t/// @see gtx_bit\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType highestBitValue(genIUType Value);\n\n\t/// @see gtx_bit\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL genIUType lowestBitValue(genIUType Value);\n\n\t/// Find the highest bit set to 1 in a integer variable and return its value.\n\t///\n\t/// @see gtx_bit\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> highestBitValue(vec<L, T, Q> const& value);\n\n\t/// Return the power of two number which value is just higher the input value.\n\t/// Deprecated, use ceilPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<typename genIUType>\n\tGLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove(genIUType Value);\n\n\t/// Return the power of two number which value is just higher the input value.\n\t/// Deprecated, use ceilPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoAbove(vec<L, T, Q> const& value);\n\n\t/// Return the power of two number which value is just lower the input value.\n\t/// Deprecated, use floorPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<typename genIUType>\n\tGLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow(genIUType Value);\n\n\t/// Return the power of two number which value is just lower the input value.\n\t/// Deprecated, use floorPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoBelow(vec<L, T, Q> const& value);\n\n\t/// Return the power of two number which value is the closet to the input value.\n\t/// Deprecated, use roundPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<typename genIUType>\n\tGLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest(genIUType Value);\n\n\t/// Return the power of two number which value is the closet to the input value.\n\t/// Deprecated, use roundPowerOfTwo from GTC_round instead\n\t///\n\t/// @see gtc_round\n\t/// @see gtx_bit\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoNearest(vec<L, T, Q> const& value);\n\n\t/// @}\n} //namespace glm\n\n\n#include \"bit.inl\"\n\n"
  },
  {
    "path": "libraries/glm/gtx/bit.inl",
    "content": "/// @ref gtx_bit\n\nnamespace glm\n{\n\t///////////////////\n\t// highestBitValue\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType highestBitValue(genIUType Value)\n\t{\n\t\tgenIUType tmp = Value;\n\t\tgenIUType result = genIUType(0);\n\t\twhile(tmp)\n\t\t{\n\t\t\tresult = (tmp & (~tmp + 1)); // grab lowest bit\n\t\t\ttmp &= ~result; // clear lowest bit\n\t\t}\n\t\treturn result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> highestBitValue(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(highestBitValue, v);\n\t}\n\n\t///////////////////\n\t// lowestBitValue\n\n\ttemplate<typename genIUType>\n\tGLM_FUNC_QUALIFIER genIUType lowestBitValue(genIUType Value)\n\t{\n\t\treturn (Value & (~Value + 1));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> lowestBitValue(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(lowestBitValue, v);\n\t}\n\n\t///////////////////\n\t// powerOfTwoAbove\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType powerOfTwoAbove(genType value)\n\t{\n\t\treturn isPowerOfTwo(value) ? value : highestBitValue(value) << 1;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> powerOfTwoAbove(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(powerOfTwoAbove, v);\n\t}\n\n\t///////////////////\n\t// powerOfTwoBelow\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType powerOfTwoBelow(genType value)\n\t{\n\t\treturn isPowerOfTwo(value) ? value : highestBitValue(value);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> powerOfTwoBelow(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(powerOfTwoBelow, v);\n\t}\n\n\t/////////////////////\n\t// powerOfTwoNearest\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType powerOfTwoNearest(genType value)\n\t{\n\t\tif(isPowerOfTwo(value))\n\t\t\treturn value;\n\n\t\tgenType const prev = highestBitValue(value);\n\t\tgenType const next = prev << 1;\n\t\treturn (next - value) < (value - prev) ? next : prev;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> powerOfTwoNearest(vec<L, T, Q> const& v)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(powerOfTwoNearest, v);\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/closest_point.hpp",
    "content": "/// @ref gtx_closest_point\n/// @file glm/gtx/closest_point.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_closest_point GLM_GTX_closest_point\n/// @ingroup gtx\n///\n/// Include <glm/gtx/closest_point.hpp> to use the features of this extension.\n///\n/// Find the point on a straight line which is the closet of a point.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_closest_point extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_closest_point\n\t/// @{\n\n\t/// Find the point on a straight line which is the closet of a point.\n\t/// @see gtx_closest_point\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> closestPointOnLine(\n\t\tvec<3, T, Q> const& point,\n\t\tvec<3, T, Q> const& a,\n\t\tvec<3, T, Q> const& b);\n\n\t/// 2d lines work as well\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> closestPointOnLine(\n\t\tvec<2, T, Q> const& point,\n\t\tvec<2, T, Q> const& a,\n\t\tvec<2, T, Q> const& b);\n\n\t/// @}\n}// namespace glm\n\n#include \"closest_point.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/closest_point.inl",
    "content": "/// @ref gtx_closest_point\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> closestPointOnLine\n\t(\n\t\tvec<3, T, Q> const& point,\n\t\tvec<3, T, Q> const& a,\n\t\tvec<3, T, Q> const& b\n\t)\n\t{\n\t\tT LineLength = distance(a, b);\n\t\tvec<3, T, Q> Vector = point - a;\n\t\tvec<3, T, Q> LineDirection = (b - a) / LineLength;\n\n\t\t// Project Vector to LineDirection to get the distance of point from a\n\t\tT Distance = dot(Vector, LineDirection);\n\n\t\tif(Distance <= T(0)) return a;\n\t\tif(Distance >= LineLength) return b;\n\t\treturn a + LineDirection * Distance;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> closestPointOnLine\n\t(\n\t\tvec<2, T, Q> const& point,\n\t\tvec<2, T, Q> const& a,\n\t\tvec<2, T, Q> const& b\n\t)\n\t{\n\t\tT LineLength = distance(a, b);\n\t\tvec<2, T, Q> Vector = point - a;\n\t\tvec<2, T, Q> LineDirection = (b - a) / LineLength;\n\n\t\t// Project Vector to LineDirection to get the distance of point from a\n\t\tT Distance = dot(Vector, LineDirection);\n\n\t\tif(Distance <= T(0)) return a;\n\t\tif(Distance >= LineLength) return b;\n\t\treturn a + LineDirection * Distance;\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/color_encoding.hpp",
    "content": "/// @ref gtx_color_encoding\n/// @file glm/gtx/color_encoding.hpp\n///\n/// @see core (dependence)\n/// @see gtx_color_encoding (dependence)\n///\n/// @defgroup gtx_color_encoding GLM_GTX_color_encoding\n/// @ingroup gtx\n///\n/// Include <glm/gtx/color_encoding.hpp> to use the features of this extension.\n///\n/// @brief Allow to perform bit operations on integer values\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../vec3.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTC_color_encoding is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTC_color_encoding extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_color_encoding\n\t/// @{\n\n\t/// Convert a linear sRGB color to D65 YUV.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD65XYZ(vec<3, T, Q> const& ColorLinearSRGB);\n\n\t/// Convert a linear sRGB color to D50 YUV.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD50XYZ(vec<3, T, Q> const& ColorLinearSRGB);\n\n\t/// Convert a D65 YUV color to linear sRGB.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> convertD65XYZToLinearSRGB(vec<3, T, Q> const& ColorD65XYZ);\n\n\t/// Convert a D65 YUV color to D50 YUV.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> convertD65XYZToD50XYZ(vec<3, T, Q> const& ColorD65XYZ);\n\n\t/// @}\n} //namespace glm\n\n#include \"color_encoding.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/color_encoding.inl",
    "content": "/// @ref gtx_color_encoding\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> convertLinearSRGBToD65XYZ(vec<3, T, Q> const& ColorLinearSRGB)\n\t{\n\t\tvec<3, T, Q> const M(0.490f, 0.17697f, 0.2f);\n\t\tvec<3, T, Q> const N(0.31f,  0.8124f, 0.01063f);\n\t\tvec<3, T, Q> const O(0.490f, 0.01f, 0.99f);\n\n\t\treturn (M * ColorLinearSRGB + N * ColorLinearSRGB + O * ColorLinearSRGB) * static_cast<T>(5.650675255693055f);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> convertLinearSRGBToD50XYZ(vec<3, T, Q> const& ColorLinearSRGB)\n\t{\n\t\tvec<3, T, Q> const M(0.436030342570117f, 0.222438466210245f, 0.013897440074263f);\n\t\tvec<3, T, Q> const N(0.385101860087134f, 0.716942745571917f, 0.097076381494207f);\n\t\tvec<3, T, Q> const O(0.143067806654203f, 0.060618777416563f, 0.713926257896652f);\n\n\t\treturn M * ColorLinearSRGB + N * ColorLinearSRGB + O * ColorLinearSRGB;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> convertD65XYZToLinearSRGB(vec<3, T, Q> const& ColorD65XYZ)\n\t{\n\t\tvec<3, T, Q> const M(0.41847f, -0.091169f, 0.0009209f);\n\t\tvec<3, T, Q> const N(-0.15866f, 0.25243f, 0.015708f);\n\t\tvec<3, T, Q> const O(0.0009209f, -0.0025498f, 0.1786f);\n\n\t\treturn M * ColorD65XYZ + N * ColorD65XYZ + O * ColorD65XYZ;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> convertD65XYZToD50XYZ(vec<3, T, Q> const& ColorD65XYZ)\n\t{\n\t\tvec<3, T, Q> const M(+1.047844353856414f, +0.029549007606644f, -0.009250984365223f);\n\t\tvec<3, T, Q> const N(+0.022898981050086f, +0.990508028941971f, +0.015072338237051f);\n\t\tvec<3, T, Q> const O(-0.050206647741605f, -0.017074711360960f, +0.751717835079977f);\n\n\t\treturn M * ColorD65XYZ + N * ColorD65XYZ + O * ColorD65XYZ;\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/color_space.hpp",
    "content": "/// @ref gtx_color_space\n/// @file glm/gtx/color_space.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_color_space GLM_GTX_color_space\n/// @ingroup gtx\n///\n/// Include <glm/gtx/color_space.hpp> to use the features of this extension.\n///\n/// Related to RGB to HSV conversions and operations.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_color_space extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_color_space\n\t/// @{\n\n\t/// Converts a color from HSV color space to its color in RGB color space.\n\t/// @see gtx_color_space\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rgbColor(\n\t\tvec<3, T, Q> const& hsvValue);\n\n\t/// Converts a color from RGB color space to its color in HSV color space.\n\t/// @see gtx_color_space\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> hsvColor(\n\t\tvec<3, T, Q> const& rgbValue);\n\n\t/// Build a saturation matrix.\n\t/// @see gtx_color_space\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> saturation(\n\t\tT const s);\n\n\t/// Modify the saturation of a color.\n\t/// @see gtx_color_space\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> saturation(\n\t\tT const s,\n\t\tvec<3, T, Q> const& color);\n\n\t/// Modify the saturation of a color.\n\t/// @see gtx_color_space\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> saturation(\n\t\tT const s,\n\t\tvec<4, T, Q> const& color);\n\n\t/// Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.\n\t/// @see gtx_color_space\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T luminosity(\n\t\tvec<3, T, Q> const& color);\n\n\t/// @}\n}//namespace glm\n\n#include \"color_space.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/color_space.inl",
    "content": "/// @ref gtx_color_space\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rgbColor(const vec<3, T, Q>& hsvColor)\n\t{\n\t\tvec<3, T, Q> hsv = hsvColor;\n\t\tvec<3, T, Q> rgbColor;\n\n\t\tif(hsv.y == static_cast<T>(0))\n\t\t\t// achromatic (grey)\n\t\t\trgbColor = vec<3, T, Q>(hsv.z);\n\t\telse\n\t\t{\n\t\t\tT sector = floor(hsv.x * (T(1) / T(60)));\n\t\t\tT frac = (hsv.x * (T(1) / T(60))) - sector;\n\t\t\t// factorial part of h\n\t\t\tT o = hsv.z * (T(1) - hsv.y);\n\t\t\tT p = hsv.z * (T(1) - hsv.y * frac);\n\t\t\tT q = hsv.z * (T(1) - hsv.y * (T(1) - frac));\n\n\t\t\tswitch(int(sector))\n\t\t\t{\n\t\t\tdefault:\n\t\t\tcase 0:\n\t\t\t\trgbColor.r = hsv.z;\n\t\t\t\trgbColor.g = q;\n\t\t\t\trgbColor.b = o;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\trgbColor.r = p;\n\t\t\t\trgbColor.g = hsv.z;\n\t\t\t\trgbColor.b = o;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\trgbColor.r = o;\n\t\t\t\trgbColor.g = hsv.z;\n\t\t\t\trgbColor.b = q;\n\t\t\t\tbreak;\n\t\t\tcase 3:\n\t\t\t\trgbColor.r = o;\n\t\t\t\trgbColor.g = p;\n\t\t\t\trgbColor.b = hsv.z;\n\t\t\t\tbreak;\n\t\t\tcase 4:\n\t\t\t\trgbColor.r = q;\n\t\t\t\trgbColor.g = o;\n\t\t\t\trgbColor.b = hsv.z;\n\t\t\t\tbreak;\n\t\t\tcase 5:\n\t\t\t\trgbColor.r = hsv.z;\n\t\t\t\trgbColor.g = o;\n\t\t\t\trgbColor.b = p;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn rgbColor;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> hsvColor(const vec<3, T, Q>& rgbColor)\n\t{\n\t\tvec<3, T, Q> hsv = rgbColor;\n\t\tfloat Min   = min(min(rgbColor.r, rgbColor.g), rgbColor.b);\n\t\tfloat Max   = max(max(rgbColor.r, rgbColor.g), rgbColor.b);\n\t\tfloat Delta = Max - Min;\n\n\t\thsv.z = Max;\n\n\t\tif(Max != static_cast<T>(0))\n\t\t{\n\t\t\thsv.y = Delta / hsv.z;\n\t\t\tT h = static_cast<T>(0);\n\n\t\t\tif(rgbColor.r == Max)\n\t\t\t\t// between yellow & magenta\n\t\t\t\th = static_cast<T>(0) + T(60) * (rgbColor.g - rgbColor.b) / Delta;\n\t\t\telse if(rgbColor.g == Max)\n\t\t\t\t// between cyan & yellow\n\t\t\t\th = static_cast<T>(120) + T(60) * (rgbColor.b - rgbColor.r) / Delta;\n\t\t\telse\n\t\t\t\t// between magenta & cyan\n\t\t\t\th = static_cast<T>(240) + T(60) * (rgbColor.r - rgbColor.g) / Delta;\n\n\t\t\tif(h < T(0))\n\t\t\t\thsv.x = h + T(360);\n\t\t\telse\n\t\t\t\thsv.x = h;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// If r = g = b = 0 then s = 0, h is undefined\n\t\t\thsv.y = static_cast<T>(0);\n\t\t\thsv.x = static_cast<T>(0);\n\t\t}\n\n\t\treturn hsv;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> saturation(T const s)\n\t{\n\t\tvec<3, T, defaultp> rgbw = vec<3, T, defaultp>(T(0.2126), T(0.7152), T(0.0722));\n\n\t\tvec<3, T, defaultp> const col((T(1) - s) * rgbw);\n\n\t\tmat<4, 4, T, defaultp> result(T(1));\n\t\tresult[0][0] = col.x + s;\n\t\tresult[0][1] = col.x;\n\t\tresult[0][2] = col.x;\n\t\tresult[1][0] = col.y;\n\t\tresult[1][1] = col.y + s;\n\t\tresult[1][2] = col.y;\n\t\tresult[2][0] = col.z;\n\t\tresult[2][1] = col.z;\n\t\tresult[2][2] = col.z + s;\n\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> saturation(const T s, const vec<3, T, Q>& color)\n\t{\n\t\treturn vec<3, T, Q>(saturation(s) * vec<4, T, Q>(color, T(0)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> saturation(const T s, const vec<4, T, Q>& color)\n\t{\n\t\treturn saturation(s) * color;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T luminosity(const vec<3, T, Q>& color)\n\t{\n\t\tconst vec<3, T, Q> tmp = vec<3, T, Q>(0.33, 0.59, 0.11);\n\t\treturn dot(color, tmp);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/color_space_YCoCg.hpp",
    "content": "/// @ref gtx_color_space_YCoCg\n/// @file glm/gtx/color_space_YCoCg.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_color_space_YCoCg GLM_GTX_color_space_YCoCg\n/// @ingroup gtx\n///\n/// Include <glm/gtx/color_space_YCoCg.hpp> to use the features of this extension.\n///\n/// RGB to YCoCg conversions and operations\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_color_space_YCoCg extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_color_space_YCoCg\n\t/// @{\n\n\t/// Convert a color from RGB color space to YCoCg color space.\n\t/// @see gtx_color_space_YCoCg\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rgb2YCoCg(\n\t\tvec<3, T, Q> const& rgbColor);\n\n\t/// Convert a color from YCoCg color space to RGB color space.\n\t/// @see gtx_color_space_YCoCg\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> YCoCg2rgb(\n\t\tvec<3, T, Q> const& YCoCgColor);\n\n\t/// Convert a color from RGB color space to YCoCgR color space.\n\t/// @see \"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range\"\n\t/// @see gtx_color_space_YCoCg\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rgb2YCoCgR(\n\t\tvec<3, T, Q> const& rgbColor);\n\n\t/// Convert a color from YCoCgR color space to RGB color space.\n\t/// @see \"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range\"\n\t/// @see gtx_color_space_YCoCg\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> YCoCgR2rgb(\n\t\tvec<3, T, Q> const& YCoCgColor);\n\n\t/// @}\n}//namespace glm\n\n#include \"color_space_YCoCg.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/color_space_YCoCg.inl",
    "content": "/// @ref gtx_color_space_YCoCg\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rgb2YCoCg\n\t(\n\t\tvec<3, T, Q> const& rgbColor\n\t)\n\t{\n\t\tvec<3, T, Q> result;\n\t\tresult.x/*Y */ =   rgbColor.r / T(4) + rgbColor.g / T(2) + rgbColor.b / T(4);\n\t\tresult.y/*Co*/ =   rgbColor.r / T(2) + rgbColor.g * T(0) - rgbColor.b / T(2);\n\t\tresult.z/*Cg*/ = - rgbColor.r / T(4) + rgbColor.g / T(2) - rgbColor.b / T(4);\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> YCoCg2rgb\n\t(\n\t\tvec<3, T, Q> const& YCoCgColor\n\t)\n\t{\n\t\tvec<3, T, Q> result;\n\t\tresult.r = YCoCgColor.x + YCoCgColor.y - YCoCgColor.z;\n\t\tresult.g = YCoCgColor.x\t\t\t\t   + YCoCgColor.z;\n\t\tresult.b = YCoCgColor.x - YCoCgColor.y - YCoCgColor.z;\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q, bool isInteger>\n\tclass compute_YCoCgR {\n\tpublic:\n\t\tstatic GLM_FUNC_QUALIFIER vec<3, T, Q> rgb2YCoCgR\n\t\t(\n\t\t\tvec<3, T, Q> const& rgbColor\n\t\t)\n\t\t{\n\t\t\tvec<3, T, Q> result;\n\t\t\tresult.x/*Y */ = rgbColor.g * static_cast<T>(0.5) + (rgbColor.r + rgbColor.b) * static_cast<T>(0.25);\n\t\t\tresult.y/*Co*/ = rgbColor.r - rgbColor.b;\n\t\t\tresult.z/*Cg*/ = rgbColor.g - (rgbColor.r + rgbColor.b) * static_cast<T>(0.5);\n\t\t\treturn result;\n\t\t}\n\n\t\tstatic GLM_FUNC_QUALIFIER vec<3, T, Q> YCoCgR2rgb\n\t\t(\n\t\t\tvec<3, T, Q> const& YCoCgRColor\n\t\t)\n\t\t{\n\t\t\tvec<3, T, Q> result;\n\t\t\tT tmp = YCoCgRColor.x - (YCoCgRColor.z * static_cast<T>(0.5));\n\t\t\tresult.g = YCoCgRColor.z + tmp;\n\t\t\tresult.b = tmp - (YCoCgRColor.y * static_cast<T>(0.5));\n\t\t\tresult.r = result.b + YCoCgRColor.y;\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tclass compute_YCoCgR<T, Q, true> {\n\tpublic:\n\t\tstatic GLM_FUNC_QUALIFIER vec<3, T, Q> rgb2YCoCgR\n\t\t(\n\t\t\tvec<3, T, Q> const& rgbColor\n\t\t)\n\t\t{\n\t\t\tvec<3, T, Q> result;\n\t\t\tresult.y/*Co*/ = rgbColor.r - rgbColor.b;\n\t\t\tT tmp = rgbColor.b + (result.y >> 1);\n\t\t\tresult.z/*Cg*/ = rgbColor.g - tmp;\n\t\t\tresult.x/*Y */ = tmp + (result.z >> 1);\n\t\t\treturn result;\n\t\t}\n\n\t\tstatic GLM_FUNC_QUALIFIER vec<3, T, Q> YCoCgR2rgb\n\t\t(\n\t\t\tvec<3, T, Q> const& YCoCgRColor\n\t\t)\n\t\t{\n\t\t\tvec<3, T, Q> result;\n\t\t\tT tmp = YCoCgRColor.x - (YCoCgRColor.z >> 1);\n\t\t\tresult.g = YCoCgRColor.z + tmp;\n\t\t\tresult.b = tmp - (YCoCgRColor.y >> 1);\n\t\t\tresult.r = result.b + YCoCgRColor.y;\n\t\t\treturn result;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rgb2YCoCgR\n\t(\n\t\tvec<3, T, Q> const& rgbColor\n\t)\n\t{\n\t\treturn compute_YCoCgR<T, Q, std::numeric_limits<T>::is_integer>::rgb2YCoCgR(rgbColor);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> YCoCgR2rgb\n\t(\n\t\tvec<3, T, Q> const& YCoCgRColor\n\t)\n\t{\n\t\treturn compute_YCoCgR<T, Q, std::numeric_limits<T>::is_integer>::YCoCgR2rgb(YCoCgRColor);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/common.hpp",
    "content": "/// @ref gtx_common\n/// @file glm/gtx/common.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_common GLM_GTX_common\n/// @ingroup gtx\n///\n/// Include <glm/gtx/common.hpp> to use the features of this extension.\n///\n/// @brief Provide functions to increase the compatibility with Cg and HLSL languages\n\n#pragma once\n\n// Dependencies:\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../gtc/vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_common is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_common extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_common\n\t/// @{\n\n\t/// Returns true if x is a denormalized number\n\t/// Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format.\n\t/// This format is less precise but can represent values closer to zero.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/isnan.xml\">GLSL isnan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.3 Common Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::bool_type isdenormal(genType const& x);\n\n\t/// Similar to 'mod' but with a different rounding and integer support.\n\t/// Returns 'x - y * trunc(x/y)' instead of 'x - y * floor(x/y)'\n\t///\n\t/// @see <a href=\"http://stackoverflow.com/questions/7610631/glsl-mod-vs-hlsl-fmod\">GLSL mod vs HLSL fmod</a>\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/mod.xml\">GLSL mod man page</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fmod(vec<L, T, Q> const& v);\n\n\t/// Returns whether vector components values are within an interval. A open interval excludes its endpoints, and is denoted with square brackets.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_relational\n\ttemplate <length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> openBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);\n\n\t/// Returns whether vector components values are within an interval. A closed interval includes its endpoints, and is denoted with square brackets.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see ext_vector_relational\n\ttemplate <length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> closeBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);\n\n\t/// @}\n}//namespace glm\n\n#include \"common.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/common.inl",
    "content": "/// @ref gtx_common\n\n#include <cmath>\n#include \"../gtc/epsilon.hpp\"\n#include \"../gtc/constants.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool isFloat = true>\n\tstruct compute_fmod\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t\t{\n\t\t\treturn detail::functor2<vec, L, T, Q>::call(std::fmod, a, b);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_fmod<L, T, Q, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t\t{\n\t\t\treturn a % b;\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool isdenormal(T const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isdenormal' only accept floating-point inputs\");\n\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::fpclassify(x) == FP_SUBNORMAL;\n#\t\telse\n\t\t\treturn epsilonNotEqual(x, static_cast<T>(0), epsilon<T>()) && std::fabs(x) < std::numeric_limits<T>::min();\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename vec<1, T, Q>::bool_type isdenormal\n\t(\n\t\tvec<1, T, Q> const& x\n\t)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isdenormal' only accept floating-point inputs\");\n\n\t\treturn typename vec<1, T, Q>::bool_type(\n\t\t\tisdenormal(x.x));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename vec<2, T, Q>::bool_type isdenormal\n\t(\n\t\tvec<2, T, Q> const& x\n\t)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isdenormal' only accept floating-point inputs\");\n\n\t\treturn typename vec<2, T, Q>::bool_type(\n\t\t\tisdenormal(x.x),\n\t\t\tisdenormal(x.y));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename vec<3, T, Q>::bool_type isdenormal\n\t(\n\t\tvec<3, T, Q> const& x\n\t)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isdenormal' only accept floating-point inputs\");\n\n\t\treturn typename vec<3, T, Q>::bool_type(\n\t\t\tisdenormal(x.x),\n\t\t\tisdenormal(x.y),\n\t\t\tisdenormal(x.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename vec<4, T, Q>::bool_type isdenormal\n\t(\n\t\tvec<4, T, Q> const& x\n\t)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isdenormal' only accept floating-point inputs\");\n\n\t\treturn typename vec<4, T, Q>::bool_type(\n\t\t\tisdenormal(x.x),\n\t\t\tisdenormal(x.y),\n\t\t\tisdenormal(x.z),\n\t\t\tisdenormal(x.w));\n\t}\n\n\t// fmod\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fmod(genType x, genType y)\n\t{\n\t\treturn fmod(vec<1, genType>(x), y).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmod(vec<L, T, Q> const& x, T y)\n\t{\n\t\treturn detail::compute_fmod<L, T, Q, std::numeric_limits<T>::is_iec559>::call(x, vec<L, T, Q>(y));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmod(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn detail::compute_fmod<L, T, Q, std::numeric_limits<T>::is_iec559>::call(x, y);\n\t}\n\n\ttemplate <length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> openBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max)\n\t{\n\t\treturn greaterThan(Value, Min) && lessThan(Value, Max);\n\t}\n\n\ttemplate <length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> closeBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max)\n\t{\n\t\treturn greaterThanEqual(Value, Min) && lessThanEqual(Value, Max);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/compatibility.hpp",
    "content": "/// @ref gtx_compatibility\n/// @file glm/gtx/compatibility.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_compatibility GLM_GTX_compatibility\n/// @ingroup gtx\n///\n/// Include <glm/gtx/compatibility.hpp> to use the features of this extension.\n///\n/// Provide functions to increase the compatibility with Cg and HLSL languages\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/quaternion.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_compatibility is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_compatibility extension included\")\n#\tendif\n#endif\n\n#if GLM_COMPILER & GLM_COMPILER_VC\n#\tinclude <cfloat>\n#elif GLM_COMPILER & GLM_COMPILER_GCC\n#\tinclude <cmath>\n#\tif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)\n#\t\tundef isfinite\n#\tendif\n#endif//GLM_COMPILER\n\nnamespace glm\n{\n\t/// @addtogroup gtx_compatibility\n\t/// @{\n\n\ttemplate<typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//!< \\brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> lerp(const vec<2, T, Q>& x, const vec<2, T, Q>& y, T a){return mix(x, y, a);}\t\t\t\t\t\t\t//!< \\brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> lerp(const vec<3, T, Q>& x, const vec<3, T, Q>& y, T a){return mix(x, y, a);}\t\t\t\t\t\t\t//!< \\brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> lerp(const vec<4, T, Q>& x, const vec<4, T, Q>& y, T a){return mix(x, y, a);}\t\t\t\t\t\t\t//!< \\brief Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> lerp(const vec<2, T, Q>& x, const vec<2, T, Q>& y, const vec<2, T, Q>& a){return mix(x, y, a);}\t//!< \\brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> lerp(const vec<3, T, Q>& x, const vec<3, T, Q>& y, const vec<3, T, Q>& a){return mix(x, y, a);}\t//!< \\brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> lerp(const vec<4, T, Q>& x, const vec<4, T, Q>& y, const vec<4, T, Q>& a){return mix(x, y, a);}\t//!< \\brief Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)\n\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}\t\t\t\t\t\t\t\t\t\t\t\t\t\t//!< \\brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> saturate(const vec<2, T, Q>& x){return clamp(x, T(0), T(1));}\t\t\t\t\t//!< \\brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> saturate(const vec<3, T, Q>& x){return clamp(x, T(0), T(1));}\t\t\t\t\t//!< \\brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> saturate(const vec<4, T, Q>& x){return clamp(x, T(0), T(1));}\t\t\t\t\t//!< \\brief Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)\n\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//!< \\brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> atan2(const vec<2, T, Q>& x, const vec<2, T, Q>& y){return atan(x, y);}\t//!< \\brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> atan2(const vec<3, T, Q>& x, const vec<3, T, Q>& y){return atan(x, y);}\t//!< \\brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> atan2(const vec<4, T, Q>& x, const vec<4, T, Q>& y){return atan(x, y);}\t//!< \\brief Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)\n\n\ttemplate<typename genType> GLM_FUNC_DECL bool isfinite(genType const& x);\t\t\t\t\t\t\t\t\t\t\t//!< \\brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_DECL vec<1, bool, Q> isfinite(const vec<1, T, Q>& x);\t\t\t\t//!< \\brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_DECL vec<2, bool, Q> isfinite(const vec<2, T, Q>& x);\t\t\t\t//!< \\brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_DECL vec<3, bool, Q> isfinite(const vec<3, T, Q>& x);\t\t\t\t//!< \\brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)\n\ttemplate<typename T, qualifier Q> GLM_FUNC_DECL vec<4, bool, Q> isfinite(const vec<4, T, Q>& x);\t\t\t\t//!< \\brief Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)\n\n\ttypedef bool\t\t\t\t\t\tbool1;\t\t\t//!< \\brief boolean type with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef vec<2, bool, highp>\t\t\tbool2;\t\t\t//!< \\brief boolean type with 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<3, bool, highp>\t\t\tbool3;\t\t\t//!< \\brief boolean type with 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<4, bool, highp>\t\t\tbool4;\t\t\t//!< \\brief boolean type with 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef bool\t\t\t\t\t\tbool1x1;\t\t//!< \\brief boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 2, bool, highp>\t\tbool2x2;\t\t//!< \\brief boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 3, bool, highp>\t\tbool2x3;\t\t//!< \\brief boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 4, bool, highp>\t\tbool2x4;\t\t//!< \\brief boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 2, bool, highp>\t\tbool3x2;\t\t//!< \\brief boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 3, bool, highp>\t\tbool3x3;\t\t//!< \\brief boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 4, bool, highp>\t\tbool3x4;\t\t//!< \\brief boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 2, bool, highp>\t\tbool4x2;\t\t//!< \\brief boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 3, bool, highp>\t\tbool4x3;\t\t//!< \\brief boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 4, bool, highp>\t\tbool4x4;\t\t//!< \\brief boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef int\t\t\t\t\t\t\tint1;\t\t\t//!< \\brief integer vector with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef vec<2, int, highp>\t\t\tint2;\t\t\t//!< \\brief integer vector with 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<3, int, highp>\t\t\tint3;\t\t\t//!< \\brief integer vector with 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<4, int, highp>\t\t\tint4;\t\t\t//!< \\brief integer vector with 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef int\t\t\t\t\t\t\tint1x1;\t\t\t//!< \\brief integer matrix with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 2, int, highp>\t\tint2x2;\t\t\t//!< \\brief integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 3, int, highp>\t\tint2x3;\t\t\t//!< \\brief integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 4, int, highp>\t\tint2x4;\t\t\t//!< \\brief integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 2, int, highp>\t\tint3x2;\t\t\t//!< \\brief integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 3, int, highp>\t\tint3x3;\t\t\t//!< \\brief integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 4, int, highp>\t\tint3x4;\t\t\t//!< \\brief integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 2, int, highp>\t\tint4x2;\t\t\t//!< \\brief integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 3, int, highp>\t\tint4x3;\t\t\t//!< \\brief integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 4, int, highp>\t\tint4x4;\t\t\t//!< \\brief integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef float\t\t\t\t\t\tfloat1;\t\t\t//!< \\brief single-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef vec<2, float, highp>\t\tfloat2;\t\t\t//!< \\brief single-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<3, float, highp>\t\tfloat3;\t\t\t//!< \\brief single-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<4, float, highp>\t\tfloat4;\t\t\t//!< \\brief single-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef float\t\t\t\t\t\tfloat1x1;\t\t//!< \\brief single-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 2, float, highp>\t\tfloat2x2;\t\t//!< \\brief single-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 3, float, highp>\t\tfloat2x3;\t\t//!< \\brief single-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 4, float, highp>\t\tfloat2x4;\t\t//!< \\brief single-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 2, float, highp>\t\tfloat3x2;\t\t//!< \\brief single-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 3, float, highp>\t\tfloat3x3;\t\t//!< \\brief single-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 4, float, highp>\t\tfloat3x4;\t\t//!< \\brief single-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 2, float, highp>\t\tfloat4x2;\t\t//!< \\brief single-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 3, float, highp>\t\tfloat4x3;\t\t//!< \\brief single-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 4, float, highp>\t\tfloat4x4;\t\t//!< \\brief single-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef double\t\t\t\t\t\tdouble1;\t\t//!< \\brief double-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef vec<2, double, highp>\t\tdouble2;\t\t//!< \\brief double-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<3, double, highp>\t\tdouble3;\t\t//!< \\brief double-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef vec<4, double, highp>\t\tdouble4;\t\t//!< \\brief double-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)\n\n\ttypedef double\t\t\t\t\t\tdouble1x1;\t\t//!< \\brief double-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 2, double, highp>\t\tdouble2x2;\t\t//!< \\brief double-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 3, double, highp>\t\tdouble2x3;\t\t//!< \\brief double-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<2, 4, double, highp>\t\tdouble2x4;\t\t//!< \\brief double-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 2, double, highp>\t\tdouble3x2;\t\t//!< \\brief double-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 3, double, highp>\t\tdouble3x3;\t\t//!< \\brief double-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<3, 4, double, highp>\t\tdouble3x4;\t\t//!< \\brief double-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 2, double, highp>\t\tdouble4x2;\t\t//!< \\brief double-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 3, double, highp>\t\tdouble4x3;\t\t//!< \\brief double-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)\n\ttypedef mat<4, 4, double, highp>\t\tdouble4x4;\t\t//!< \\brief double-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)\n\n\t/// @}\n}//namespace glm\n\n#include \"compatibility.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/compatibility.inl",
    "content": "#include <limits>\n\nnamespace glm\n{\n\t// isfinite\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool isfinite(\n\t\tgenType const& x)\n\t{\n#\t\tif GLM_HAS_CXX11_STL\n\t\t\treturn std::isfinite(x) != 0;\n#\t\telif GLM_COMPILER & GLM_COMPILER_VC\n\t\t\treturn _finite(x) != 0;\n#\t\telif GLM_COMPILER & GLM_COMPILER_GCC && GLM_PLATFORM & GLM_PLATFORM_ANDROID\n\t\t\treturn _isfinite(x) != 0;\n#\t\telse\n\t\t\tif (std::numeric_limits<genType>::is_integer || std::denorm_absent == std::numeric_limits<genType>::has_denorm)\n\t\t\t\treturn std::numeric_limits<genType>::min() <= x && std::numeric_limits<genType>::max() >= x;\n\t\t\telse\n\t\t\t\treturn -std::numeric_limits<genType>::max() <= x && std::numeric_limits<genType>::max() >= x;\n#\t\tendif\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<1, bool, Q> isfinite(\n\t\tvec<1, T, Q> const& x)\n\t{\n\t\treturn vec<1, bool, Q>(\n\t\t\tisfinite(x.x));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, bool, Q> isfinite(\n\t\tvec<2, T, Q> const& x)\n\t{\n\t\treturn vec<2, bool, Q>(\n\t\t\tisfinite(x.x),\n\t\t\tisfinite(x.y));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, bool, Q> isfinite(\n\t\tvec<3, T, Q> const& x)\n\t{\n\t\treturn vec<3, bool, Q>(\n\t\t\tisfinite(x.x),\n\t\t\tisfinite(x.y),\n\t\t\tisfinite(x.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> isfinite(\n\t\tvec<4, T, Q> const& x)\n\t{\n\t\treturn vec<4, bool, Q>(\n\t\t\tisfinite(x.x),\n\t\t\tisfinite(x.y),\n\t\t\tisfinite(x.z),\n\t\t\tisfinite(x.w));\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/component_wise.hpp",
    "content": "/// @ref gtx_component_wise\n/// @file glm/gtx/component_wise.hpp\n/// @date 2007-05-21 / 2011-06-07\n/// @author Christophe Riccio\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_component_wise GLM_GTX_component_wise\n/// @ingroup gtx\n///\n/// Include <glm/gtx/component_wise.hpp> to use the features of this extension.\n///\n/// Operations between components of a type\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_component_wise extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_component_wise\n\t/// @{\n\n\t/// Convert an integer vector to a normalized float vector.\n\t/// If the parameter value type is already a floating qualifier type, the value is passed through.\n\t/// @see gtx_component_wise\n\ttemplate<typename floatType, length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, floatType, Q> compNormalize(vec<L, T, Q> const& v);\n\n\t/// Convert a normalized float vector to an integer vector.\n\t/// If the parameter value type is already a floating qualifier type, the value is passed through.\n\t/// @see gtx_component_wise\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> compScale(vec<L, floatType, Q> const& v);\n\n\t/// Add all vector components together.\n\t/// @see gtx_component_wise\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::value_type compAdd(genType const& v);\n\n\t/// Multiply all vector components together.\n\t/// @see gtx_component_wise\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::value_type compMul(genType const& v);\n\n\t/// Find the minimum value between single vector components.\n\t/// @see gtx_component_wise\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::value_type compMin(genType const& v);\n\n\t/// Find the maximum value between single vector components.\n\t/// @see gtx_component_wise\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL typename genType::value_type compMax(genType const& v);\n\n\t/// @}\n}//namespace glm\n\n#include \"component_wise.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/component_wise.inl",
    "content": "/// @ref gtx_component_wise\n\n#include <limits>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q, bool isInteger, bool signedType>\n\tstruct compute_compNormalize\n\t{};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compNormalize<L, T, floatType, Q, true, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, floatType, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\tfloatType const Min = static_cast<floatType>(std::numeric_limits<T>::min());\n\t\t\tfloatType const Max = static_cast<floatType>(std::numeric_limits<T>::max());\n\t\t\treturn (vec<L, floatType, Q>(v) - Min) / (Max - Min) * static_cast<floatType>(2) - static_cast<floatType>(1);\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compNormalize<L, T, floatType, Q, true, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, floatType, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\treturn vec<L, floatType, Q>(v) / static_cast<floatType>(std::numeric_limits<T>::max());\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compNormalize<L, T, floatType, Q, false, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, floatType, Q> call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\treturn v;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q, bool isInteger, bool signedType>\n\tstruct compute_compScale\n\t{};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compScale<L, T, floatType, Q, true, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, floatType, Q> const& v)\n\t\t{\n\t\t\tfloatType const Max = static_cast<floatType>(std::numeric_limits<T>::max()) + static_cast<floatType>(0.5);\n\t\t\tvec<L, floatType, Q> const Scaled(v * Max);\n\t\t\tvec<L, T, Q> const Result(Scaled - static_cast<floatType>(0.5));\n\t\t\treturn Result;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compScale<L, T, floatType, Q, true, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, floatType, Q> const& v)\n\t\t{\n\t\t\treturn vec<L, T, Q>(vec<L, floatType, Q>(v) * static_cast<floatType>(std::numeric_limits<T>::max()));\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, typename floatType, qualifier Q>\n\tstruct compute_compScale<L, T, floatType, Q, false, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<L, T, Q> call(vec<L, floatType, Q> const& v)\n\t\t{\n\t\t\treturn v;\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename floatType, length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, floatType, Q> compNormalize(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"'compNormalize' accepts only floating-point types for 'floatType' template parameter\");\n\n\t\treturn detail::compute_compNormalize<L, T, floatType, Q, std::numeric_limits<T>::is_integer, std::numeric_limits<T>::is_signed>::call(v);\n\t}\n\n\ttemplate<typename T, length_t L, typename floatType, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> compScale(vec<L, floatType, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<floatType>::is_iec559, \"'compScale' accepts only floating-point types for 'floatType' template parameter\");\n\n\t\treturn detail::compute_compScale<L, T, floatType, Q, std::numeric_limits<T>::is_integer, std::numeric_limits<T>::is_signed>::call(v);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T compAdd(vec<L, T, Q> const& v)\n\t{\n\t\tT Result(0);\n\t\tfor(length_t i = 0, n = v.length(); i < n; ++i)\n\t\t\tResult += v[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T compMul(vec<L, T, Q> const& v)\n\t{\n\t\tT Result(1);\n\t\tfor(length_t i = 0, n = v.length(); i < n; ++i)\n\t\t\tResult *= v[i];\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T compMin(vec<L, T, Q> const& v)\n\t{\n\t\tT Result(v[0]);\n\t\tfor(length_t i = 1, n = v.length(); i < n; ++i)\n\t\t\tResult = min(Result, v[i]);\n\t\treturn Result;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T compMax(vec<L, T, Q> const& v)\n\t{\n\t\tT Result(v[0]);\n\t\tfor(length_t i = 1, n = v.length(); i < n; ++i)\n\t\t\tResult = max(Result, v[i]);\n\t\treturn Result;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/dual_quaternion.hpp",
    "content": "/// @ref gtx_dual_quaternion\n/// @file glm/gtx/dual_quaternion.hpp\n/// @author Maksim Vorobiev (msomeone@gmail.com)\n///\n/// @see core (dependence)\n/// @see gtc_constants (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtx_dual_quaternion GLM_GTX_dual_quaternion\n/// @ingroup gtx\n///\n/// Include <glm/gtx/dual_quaternion.hpp> to use the features of this extension.\n///\n/// Defines a templated dual-quaternion type and several dual-quaternion operations.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/constants.hpp\"\n#include \"../gtc/quaternion.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_dual_quaternion extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_dual_quaternion\n\t/// @{\n\n\ttemplate<typename T, qualifier Q = defaultp>\n\tstruct tdualquat\n\t{\n\t\t// -- Implementation detail --\n\n\t\ttypedef T value_type;\n\t\ttypedef qua<T, Q> part_type;\n\n\t\t// -- Data --\n\n\t\tqua<T, Q> real, dual;\n\n\t\t// -- Component accesses --\n\n\t\ttypedef length_t length_type;\n\t\t/// Return the count of components of a dual quaternion\n\t\tGLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 2;}\n\n\t\tGLM_FUNC_DECL part_type & operator[](length_type i);\n\t\tGLM_FUNC_DECL part_type const& operator[](length_type i) const;\n\n\t\t// -- Implicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat() GLM_DEFAULT;\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat(tdualquat<T, Q> const& d) GLM_DEFAULT;\n\t\ttemplate<qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat(tdualquat<T, P> const& d);\n\n\t\t// -- Explicit basic constructors --\n\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& real);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& orientation, vec<3, T, Q> const& translation);\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR tdualquat(qua<T, Q> const& real, qua<T, Q> const& dual);\n\n\t\t// -- Conversion constructors --\n\n\t\ttemplate<typename U, qualifier P>\n\t\tGLM_FUNC_DECL GLM_CONSTEXPR GLM_EXPLICIT tdualquat(tdualquat<U, P> const& q);\n\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR tdualquat(mat<2, 4, T, Q> const& holder_mat);\n\t\tGLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR tdualquat(mat<3, 4, T, Q> const& aug_mat);\n\n\t\t// -- Unary arithmetic operators --\n\n\t\tGLM_FUNC_DECL tdualquat<T, Q> & operator=(tdualquat<T, Q> const& m) GLM_DEFAULT;\n\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL tdualquat<T, Q> & operator=(tdualquat<U, Q> const& m);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL tdualquat<T, Q> & operator*=(U s);\n\t\ttemplate<typename U>\n\t\tGLM_FUNC_DECL tdualquat<T, Q> & operator/=(U s);\n\t};\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator-(tdualquat<T, Q> const& q);\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> operator*(tdualquat<T, Q> const& q, vec<3, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> operator*(vec<3, T, Q> const& v, tdualquat<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> operator*(tdualquat<T, Q> const& q, vec<4, T, Q> const& v);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> operator*(vec<4, T, Q> const& v, tdualquat<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, T const& s);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator*(T const& s, tdualquat<T, Q> const& q);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> operator/(tdualquat<T, Q> const& q, T const& s);\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator==(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool operator!=(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);\n\n\t/// Creates an identity dual quaternion.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate <typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> dual_quat_identity();\n\n\t/// Returns the normalized quaternion.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> normalize(tdualquat<T, Q> const& q);\n\n\t/// Returns the linear interpolation of two dual quaternion.\n\t///\n\t/// @see gtc_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> lerp(tdualquat<T, Q> const& x, tdualquat<T, Q> const& y, T const& a);\n\n\t/// Returns the q inverse.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> inverse(tdualquat<T, Q> const& q);\n\n\t/// Converts a quaternion to a 2 * 4 matrix.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> mat2x4_cast(tdualquat<T, Q> const& x);\n\n\t/// Converts a quaternion to a 3 * 4 matrix.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> mat3x4_cast(tdualquat<T, Q> const& x);\n\n\t/// Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<2, 4, T, Q> const& x);\n\n\t/// Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<3, 4, T, Q> const& x);\n\n\n\t/// Dual-quaternion of low single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, lowp>\t\tlowp_dualquat;\n\n\t/// Dual-quaternion of medium single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, mediump>\tmediump_dualquat;\n\n\t/// Dual-quaternion of high single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, highp>\t\thighp_dualquat;\n\n\n\t/// Dual-quaternion of low single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, lowp>\t\tlowp_fdualquat;\n\n\t/// Dual-quaternion of medium single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, mediump>\tmediump_fdualquat;\n\n\t/// Dual-quaternion of high single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<float, highp>\t\thighp_fdualquat;\n\n\n\t/// Dual-quaternion of low double-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<double, lowp>\t\tlowp_ddualquat;\n\n\t/// Dual-quaternion of medium double-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<double, mediump>\tmediump_ddualquat;\n\n\t/// Dual-quaternion of high double-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef tdualquat<double, highp>\thighp_ddualquat;\n\n\n#if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))\n\t/// Dual-quaternion of floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef highp_fdualquat\t\t\tdualquat;\n\n\t/// Dual-quaternion of single-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef highp_fdualquat\t\t\tfdualquat;\n#elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))\n\ttypedef highp_fdualquat\t\t\tdualquat;\n\ttypedef highp_fdualquat\t\t\tfdualquat;\n#elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))\n\ttypedef mediump_fdualquat\t\tdualquat;\n\ttypedef mediump_fdualquat\t\tfdualquat;\n#elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))\n\ttypedef lowp_fdualquat\t\t\tdualquat;\n\ttypedef lowp_fdualquat\t\t\tfdualquat;\n#else\n#\terror \"GLM error: multiple default precision requested for single-precision floating-point types\"\n#endif\n\n\n#if(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))\n\t/// Dual-quaternion of default double-qualifier floating-point numbers.\n\t///\n\t/// @see gtx_dual_quaternion\n\ttypedef highp_ddualquat\t\t\tddualquat;\n#elif(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))\n\ttypedef highp_ddualquat\t\t\tddualquat;\n#elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))\n\ttypedef mediump_ddualquat\t\tddualquat;\n#elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))\n\ttypedef lowp_ddualquat\t\t\tddualquat;\n#else\n#\terror \"GLM error: Multiple default precision requested for double-precision floating-point types\"\n#endif\n\n\t/// @}\n} //namespace glm\n\n#include \"dual_quaternion.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/dual_quaternion.inl",
    "content": "/// @ref gtx_dual_quaternion\n\n#include \"../geometric.hpp\"\n#include <limits>\n\nnamespace glm\n{\n\t// -- Component accesses --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename tdualquat<T, Q>::part_type & tdualquat<T, Q>::operator[](typename tdualquat<T, Q>::length_type i)\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\treturn (&real)[i];\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER typename tdualquat<T, Q>::part_type const& tdualquat<T, Q>::operator[](typename tdualquat<T, Q>::length_type i) const\n\t{\n\t\tassert(i >= 0 && i < this->length());\n\t\treturn (&real)[i];\n\t}\n\n\t// -- Implicit basic constructors --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat()\n#\t\t\tif GLM_CONFIG_DEFAULTED_FUNCTIONS != GLM_DISABLE\n\t\t\t: real(qua<T, Q>())\n\t\t\t, dual(qua<T, Q>(0, 0, 0, 0))\n#\t\t\tendif\n\t\t{}\n\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(tdualquat<T, Q> const& d)\n\t\t\t: real(d.real)\n\t\t\t, dual(d.dual)\n\t\t{}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(tdualquat<T, P> const& d)\n\t\t: real(d.real)\n\t\t, dual(d.dual)\n\t{}\n\n\t// -- Explicit basic constructors --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(qua<T, Q> const& r)\n\t\t: real(r), dual(qua<T, Q>(0, 0, 0, 0))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(qua<T, Q> const& q, vec<3, T, Q> const& p)\n\t\t: real(q), dual(\n\t\t\tT(-0.5) * ( p.x*q.x + p.y*q.y + p.z*q.z),\n\t\t\tT(+0.5) * ( p.x*q.w + p.y*q.z - p.z*q.y),\n\t\t\tT(+0.5) * (-p.x*q.z + p.y*q.w + p.z*q.x),\n\t\t\tT(+0.5) * ( p.x*q.y - p.y*q.x + p.z*q.w))\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(qua<T, Q> const& r, qua<T, Q> const& d)\n\t\t: real(r), dual(d)\n\t{}\n\n\t// -- Conversion constructors --\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U, qualifier P>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(tdualquat<U, P> const& q)\n\t\t: real(q.real)\n\t\t, dual(q.dual)\n\t{}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(mat<2, 4, T, Q> const& m)\n\t{\n\t\t*this = dualquat_cast(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR tdualquat<T, Q>::tdualquat(mat<3, 4, T, Q> const& m)\n\t{\n\t\t*this = dualquat_cast(m);\n\t}\n\n\t// -- Unary arithmetic operators --\n\n#\tif GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_DISABLE\n\t\ttemplate<typename T, qualifier Q>\n\t\tGLM_FUNC_QUALIFIER tdualquat<T, Q> & tdualquat<T, Q>::operator=(tdualquat<T, Q> const& q)\n\t\t{\n\t\t\tthis->real = q.real;\n\t\t\tthis->dual = q.dual;\n\t\t\treturn *this;\n\t\t}\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> & tdualquat<T, Q>::operator=(tdualquat<U, Q> const& q)\n\t{\n\t\tthis->real = q.real;\n\t\tthis->dual = q.dual;\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> & tdualquat<T, Q>::operator*=(U s)\n\t{\n\t\tthis->real *= static_cast<T>(s);\n\t\tthis->dual *= static_cast<T>(s);\n\t\treturn *this;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\ttemplate<typename U>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> & tdualquat<T, Q>::operator/=(U s)\n\t{\n\t\tthis->real /= static_cast<T>(s);\n\t\tthis->dual /= static_cast<T>(s);\n\t\treturn *this;\n\t}\n\n\t// -- Unary bit operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator+(tdualquat<T, Q> const& q)\n\t{\n\t\treturn q;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator-(tdualquat<T, Q> const& q)\n\t{\n\t\treturn tdualquat<T, Q>(-q.real, -q.dual);\n\t}\n\n\t// -- Binary operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator+(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p)\n\t{\n\t\treturn tdualquat<T, Q>(q.real + p.real,q.dual + p.dual);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator*(tdualquat<T, Q> const& p, tdualquat<T, Q> const& o)\n\t{\n\t\treturn tdualquat<T, Q>(p.real * o.real,p.real * o.dual + p.dual * o.real);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> operator*(tdualquat<T, Q> const& q, vec<3, T, Q> const& v)\n\t{\n\t\tvec<3, T, Q> const real_v3(q.real.x,q.real.y,q.real.z);\n\t\tvec<3, T, Q> const dual_v3(q.dual.x,q.dual.y,q.dual.z);\n\t\treturn (cross(real_v3, cross(real_v3,v) + v * q.real.w + dual_v3) + dual_v3 * q.real.w - real_v3 * q.dual.w) * T(2) + v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> operator*(vec<3, T, Q> const& v,\ttdualquat<T, Q> const& q)\n\t{\n\t\treturn glm::inverse(q) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> operator*(tdualquat<T, Q> const& q, vec<4, T, Q> const& v)\n\t{\n\t\treturn vec<4, T, Q>(q * vec<3, T, Q>(v), v.w);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> operator*(vec<4, T, Q> const& v,\ttdualquat<T, Q> const& q)\n\t{\n\t\treturn glm::inverse(q) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, T const& s)\n\t{\n\t\treturn tdualquat<T, Q>(q.real * s, q.dual * s);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator*(T const& s, tdualquat<T, Q> const& q)\n\t{\n\t\treturn q * s;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> operator/(tdualquat<T, Q> const& q,\tT const& s)\n\t{\n\t\treturn tdualquat<T, Q>(q.real / s, q.dual / s);\n\t}\n\n\t// -- Boolean operators --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator==(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2)\n\t{\n\t\treturn (q1.real == q2.real) && (q1.dual == q2.dual);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool operator!=(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2)\n\t{\n\t\treturn (q1.real != q2.real) || (q1.dual != q2.dual);\n\t}\n\n\t// -- Operations --\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> dual_quat_identity()\n\t{\n\t\treturn tdualquat<T, Q>(\n\t\t\tqua<T, Q>(static_cast<T>(1), static_cast<T>(0), static_cast<T>(0), static_cast<T>(0)),\n\t\t\tqua<T, Q>(static_cast<T>(0), static_cast<T>(0), static_cast<T>(0), static_cast<T>(0)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> normalize(tdualquat<T, Q> const& q)\n\t{\n\t\treturn q / length(q.real);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> lerp(tdualquat<T, Q> const& x, tdualquat<T, Q> const& y, T const& a)\n\t{\n\t\t// Dual Quaternion Linear blend aka DLB:\n\t\t// Lerp is only defined in [0, 1]\n\t\tassert(a >= static_cast<T>(0));\n\t\tassert(a <= static_cast<T>(1));\n\t\tT const k = dot(x.real,y.real) < static_cast<T>(0) ? -a : a;\n\t\tT const one(1);\n\t\treturn tdualquat<T, Q>(x * (one - a) + y * k);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> inverse(tdualquat<T, Q> const& q)\n\t{\n\t\tconst glm::qua<T, Q> real = conjugate(q.real);\n\t\tconst glm::qua<T, Q> dual = conjugate(q.dual);\n\t\treturn tdualquat<T, Q>(real, dual + (real * (-2.0f * dot(real,dual))));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> mat2x4_cast(tdualquat<T, Q> const& x)\n\t{\n\t\treturn mat<2, 4, T, Q>( x[0].x, x[0].y, x[0].z, x[0].w, x[1].x, x[1].y, x[1].z, x[1].w );\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> mat3x4_cast(tdualquat<T, Q> const& x)\n\t{\n\t\tqua<T, Q> r = x.real / length2(x.real);\n\n\t\tqua<T, Q> const rr(r.w * x.real.w, r.x * x.real.x, r.y * x.real.y, r.z * x.real.z);\n\t\tr *= static_cast<T>(2);\n\n\t\tT const xy = r.x * x.real.y;\n\t\tT const xz = r.x * x.real.z;\n\t\tT const yz = r.y * x.real.z;\n\t\tT const wx = r.w * x.real.x;\n\t\tT const wy = r.w * x.real.y;\n\t\tT const wz = r.w * x.real.z;\n\n\t\tvec<4, T, Q> const a(\n\t\t\trr.w + rr.x - rr.y - rr.z,\n\t\t\txy - wz,\n\t\t\txz + wy,\n\t\t\t-(x.dual.w * r.x - x.dual.x * r.w + x.dual.y * r.z - x.dual.z * r.y));\n\n\t\tvec<4, T, Q> const b(\n\t\t\txy + wz,\n\t\t\trr.w + rr.y - rr.x - rr.z,\n\t\t\tyz - wx,\n\t\t\t-(x.dual.w * r.y - x.dual.x * r.z - x.dual.y * r.w + x.dual.z * r.x));\n\n\t\tvec<4, T, Q> const c(\n\t\t\txz - wy,\n\t\t\tyz + wx,\n\t\t\trr.w + rr.z - rr.x - rr.y,\n\t\t\t-(x.dual.w * r.z + x.dual.x * r.y - x.dual.y * r.x - x.dual.z * r.w));\n\n\t\treturn mat<3, 4, T, Q>(a, b, c);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> dualquat_cast(mat<2, 4, T, Q> const& x)\n\t{\n\t\treturn tdualquat<T, Q>(\n\t\t\tqua<T, Q>( x[0].w, x[0].x, x[0].y, x[0].z ),\n\t\t\tqua<T, Q>( x[1].w, x[1].x, x[1].y, x[1].z ));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER tdualquat<T, Q> dualquat_cast(mat<3, 4, T, Q> const& x)\n\t{\n\t\tqua<T, Q> real;\n\n\t\tT const trace = x[0].x + x[1].y + x[2].z;\n\t\tif(trace > static_cast<T>(0))\n\t\t{\n\t\t\tT const r = sqrt(T(1) + trace);\n\t\t\tT const invr = static_cast<T>(0.5) / r;\n\t\t\treal.w = static_cast<T>(0.5) * r;\n\t\t\treal.x = (x[2].y - x[1].z) * invr;\n\t\t\treal.y = (x[0].z - x[2].x) * invr;\n\t\t\treal.z = (x[1].x - x[0].y) * invr;\n\t\t}\n\t\telse if(x[0].x > x[1].y && x[0].x > x[2].z)\n\t\t{\n\t\t\tT const r = sqrt(T(1) + x[0].x - x[1].y - x[2].z);\n\t\t\tT const invr = static_cast<T>(0.5) / r;\n\t\t\treal.x = static_cast<T>(0.5)*r;\n\t\t\treal.y = (x[1].x + x[0].y) * invr;\n\t\t\treal.z = (x[0].z + x[2].x) * invr;\n\t\t\treal.w = (x[2].y - x[1].z) * invr;\n\t\t}\n\t\telse if(x[1].y > x[2].z)\n\t\t{\n\t\t\tT const r = sqrt(T(1) + x[1].y - x[0].x - x[2].z);\n\t\t\tT const invr = static_cast<T>(0.5) / r;\n\t\t\treal.x = (x[1].x + x[0].y) * invr;\n\t\t\treal.y = static_cast<T>(0.5) * r;\n\t\t\treal.z = (x[2].y + x[1].z) * invr;\n\t\t\treal.w = (x[0].z - x[2].x) * invr;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tT const r = sqrt(T(1) + x[2].z - x[0].x - x[1].y);\n\t\t\tT const invr = static_cast<T>(0.5) / r;\n\t\t\treal.x = (x[0].z + x[2].x) * invr;\n\t\t\treal.y = (x[2].y + x[1].z) * invr;\n\t\t\treal.z = static_cast<T>(0.5) * r;\n\t\t\treal.w = (x[1].x - x[0].y) * invr;\n\t\t}\n\n\t\tqua<T, Q> dual;\n\t\tdual.x =  static_cast<T>(0.5) * ( x[0].w * real.w + x[1].w * real.z - x[2].w * real.y);\n\t\tdual.y =  static_cast<T>(0.5) * (-x[0].w * real.z + x[1].w * real.w + x[2].w * real.x);\n\t\tdual.z =  static_cast<T>(0.5) * ( x[0].w * real.y - x[1].w * real.x + x[2].w * real.w);\n\t\tdual.w = -static_cast<T>(0.5) * ( x[0].w * real.x + x[1].w * real.y + x[2].w * real.z);\n\t\treturn tdualquat<T, Q>(real, dual);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/easing.hpp",
    "content": "/// @ref gtx_easing\n/// @file glm/gtx/easing.hpp\n/// @author Robert Chisholm\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_easing GLM_GTX_easing\n/// @ingroup gtx\n///\n/// Include <glm/gtx/easing.hpp> to use the features of this extension.\n///\n/// Easing functions for animations and transitons\n/// All functions take a parameter x in the range [0.0,1.0]\n///\n/// Based on the AHEasing project of Warren Moore (https://github.com/warrenm/AHEasing)\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/constants.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_easing is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_easing extension included\")\n#\tendif\n#endif\n\nnamespace glm{\n\t/// @addtogroup gtx_easing\n\t/// @{\n\n\t/// Modelled after the line y = x\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType linearInterpolation(genType const & a);\n\n\t/// Modelled after the parabola y = x^2\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quadraticEaseIn(genType const & a);\n\n\t/// Modelled after the parabola y = -x^2 + 2x\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quadraticEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise quadratic\n\t/// y = (1/2)((2x)^2)\t\t\t\t; [0, 0.5)\n\t/// y = -(1/2)((2x-1)*(2x-3) - 1)\t; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quadraticEaseInOut(genType const & a);\n\n\t/// Modelled after the cubic y = x^3\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType cubicEaseIn(genType const & a);\n\n\t/// Modelled after the cubic y = (x - 1)^3 + 1\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType cubicEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise cubic\n\t/// y = (1/2)((2x)^3)\t\t; [0, 0.5)\n\t/// y = (1/2)((2x-2)^3 + 2)\t; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType cubicEaseInOut(genType const & a);\n\n\t/// Modelled after the quartic x^4\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quarticEaseIn(genType const & a);\n\n\t/// Modelled after the quartic y = 1 - (x - 1)^4\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quarticEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise quartic\n\t/// y = (1/2)((2x)^4)\t\t\t; [0, 0.5)\n\t/// y = -(1/2)((2x-2)^4 - 2)\t; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quarticEaseInOut(genType const & a);\n\n\t/// Modelled after the quintic y = x^5\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quinticEaseIn(genType const & a);\n\n\t/// Modelled after the quintic y = (x - 1)^5 + 1\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quinticEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise quintic\n\t/// y = (1/2)((2x)^5)\t\t; [0, 0.5)\n\t/// y = (1/2)((2x-2)^5 + 2) ; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType quinticEaseInOut(genType const & a);\n\n\t/// Modelled after quarter-cycle of sine wave\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType sineEaseIn(genType const & a);\n\n\t/// Modelled after quarter-cycle of sine wave (different phase)\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType sineEaseOut(genType const & a);\n\n\t/// Modelled after half sine wave\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType sineEaseInOut(genType const & a);\n\n\t/// Modelled after shifted quadrant IV of unit circle\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType circularEaseIn(genType const & a);\n\n\t/// Modelled after shifted quadrant II of unit circle\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType circularEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise circular function\n\t/// y = (1/2)(1 - sqrt(1 - 4x^2))\t\t\t; [0, 0.5)\n\t/// y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType circularEaseInOut(genType const & a);\n\n\t/// Modelled after the exponential function y = 2^(10(x - 1))\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType exponentialEaseIn(genType const & a);\n\n\t/// Modelled after the exponential function y = -2^(-10x) + 1\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType exponentialEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise exponential\n\t/// y = (1/2)2^(10(2x - 1))\t\t\t; [0,0.5)\n\t/// y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType exponentialEaseInOut(genType const & a);\n\n\t/// Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1))\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType elasticEaseIn(genType const & a);\n\n\t/// Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType elasticEaseOut(genType const & a);\n\n\t/// Modelled after the piecewise exponentially-damped sine wave:\n\t/// y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1))\t\t; [0,0.5)\n\t/// y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2)\t; [0.5, 1]\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType elasticEaseInOut(genType const & a);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseIn(genType const& a);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseOut(genType const& a);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseInOut(genType const& a);\n\n\t/// @param a parameter\n\t/// @param o Optional overshoot modifier\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseIn(genType const& a, genType const& o);\n\n\t/// @param a parameter\n\t/// @param o Optional overshoot modifier\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseOut(genType const& a, genType const& o);\n\n\t/// @param a parameter\n\t/// @param o Optional overshoot modifier\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType backEaseInOut(genType const& a, genType const& o);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType bounceEaseIn(genType const& a);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType bounceEaseOut(genType const& a);\n\n\t/// @see gtx_easing\n\ttemplate <typename genType>\n\tGLM_FUNC_DECL genType bounceEaseInOut(genType const& a);\n\n\t/// @}\n}//namespace glm\n\n#include \"easing.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/easing.inl",
    "content": "/// @ref gtx_easing\n\n#include <cmath>\n\nnamespace glm{\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType linearInterpolation(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn a;\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quadraticEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn a * a;\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quadraticEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn -(a * (a - static_cast<genType>(2)));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quadraticEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(2) * a * a;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn (-static_cast<genType>(2) * a * a) + (4 * a) - one<genType>();\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType cubicEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn a * a * a;\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType cubicEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType const f = a - one<genType>();\n\t\treturn f * f * f + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType cubicEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif (a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(4) * a * a * a;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tgenType const f = ((static_cast<genType>(2) * a) - static_cast<genType>(2));\n\t\t\treturn static_cast<genType>(0.5) * f * f * f + one<genType>();\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quarticEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn a * a * a * a;\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quarticEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType const f = (a - one<genType>());\n\t\treturn f * f * f * (one<genType>() - a) + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quarticEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(8) * a * a * a * a;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tgenType const f = (a - one<genType>());\n\t\t\treturn -static_cast<genType>(8) * f * f * f * f + one<genType>();\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quinticEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn a * a * a * a * a;\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quinticEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType const f = (a - one<genType>());\n\t\treturn f * f * f * f * f + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType quinticEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(16) * a * a * a * a * a;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tgenType const f = ((static_cast<genType>(2) * a) - static_cast<genType>(2));\n\t\t\treturn static_cast<genType>(0.5) * f * f * f * f * f + one<genType>();\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType sineEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn sin((a - one<genType>()) * half_pi<genType>()) + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType sineEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn sin(a * half_pi<genType>());\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType sineEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn static_cast<genType>(0.5) * (one<genType>() - cos(a * pi<genType>()));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType circularEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn one<genType>() - sqrt(one<genType>() - (a * a));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType circularEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn sqrt((static_cast<genType>(2) - a) * a);\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType circularEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(0.5) * (one<genType>() - std::sqrt(one<genType>() - static_cast<genType>(4) * (a * a)));\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn static_cast<genType>(0.5) * (std::sqrt(-((static_cast<genType>(2) * a) - static_cast<genType>(3)) * ((static_cast<genType>(2) * a) - one<genType>())) + one<genType>());\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType exponentialEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a <= zero<genType>())\n\t\t\treturn a;\n\t\telse\n\t\t{\n\t\t\tgenType const Complementary = a - one<genType>();\n\t\t\tgenType const Two = static_cast<genType>(2);\n\t\t\t\n\t\t\treturn glm::pow(Two, Complementary * static_cast<genType>(10));\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType exponentialEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a >= one<genType>())\n\t\t\treturn a;\n\t\telse\n\t\t{\n\t\t\treturn one<genType>() - glm::pow(static_cast<genType>(2), -static_cast<genType>(10) * a);\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType exponentialEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t\treturn static_cast<genType>(0.5) * glm::pow(static_cast<genType>(2), (static_cast<genType>(20) * a) - static_cast<genType>(10));\n\t\telse\n\t\t\treturn -static_cast<genType>(0.5) * glm::pow(static_cast<genType>(2), (-static_cast<genType>(20) * a) + static_cast<genType>(10)) + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType elasticEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn std::sin(static_cast<genType>(13) * half_pi<genType>() * a) * glm::pow(static_cast<genType>(2), static_cast<genType>(10) * (a - one<genType>()));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType elasticEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn std::sin(-static_cast<genType>(13) * half_pi<genType>() * (a + one<genType>())) * glm::pow(static_cast<genType>(2), -static_cast<genType>(10) * a) + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType elasticEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t\treturn static_cast<genType>(0.5) * std::sin(static_cast<genType>(13) * half_pi<genType>() * (static_cast<genType>(2) * a)) * glm::pow(static_cast<genType>(2), static_cast<genType>(10) * ((static_cast<genType>(2) * a) - one<genType>()));\n\t\telse\n\t\t\treturn static_cast<genType>(0.5) * (std::sin(-static_cast<genType>(13) * half_pi<genType>() * ((static_cast<genType>(2) * a - one<genType>()) + one<genType>())) * glm::pow(static_cast<genType>(2), -static_cast<genType>(10) * (static_cast<genType>(2) * a - one<genType>())) + static_cast<genType>(2));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseIn(genType const& a, genType const& o)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType z = ((o + one<genType>()) * a) - o;\n\t\treturn (a * a * z);\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseOut(genType const& a, genType const& o)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType n = a - one<genType>();\n\t\tgenType z = ((o + one<genType>()) * n) + o;\n\t\treturn (n * n * z) + one<genType>();\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseInOut(genType const& a, genType const& o)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tgenType s = o * static_cast<genType>(1.525);\n\t\tgenType x = static_cast<genType>(0.5);\n\t\tgenType n = a / static_cast<genType>(0.5);\n\n\t\tif (n < static_cast<genType>(1))\n\t\t{\n\t\t\tgenType z = ((s + static_cast<genType>(1)) * n) - s;\n\t\t\tgenType m = n * n * z;\n\t\t\treturn x * m;\n\t\t}\n\t\telse \n\t\t{\n\t\t\tn -= static_cast<genType>(2);\n\t\t\tgenType z = ((s + static_cast<genType>(1)) * n) + s;\n\t\t\tgenType m = (n*n*z) + static_cast<genType>(2);\n\t\t\treturn x * m;\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseIn(genType const& a)\n\t{\n\t\treturn backEaseIn(a, static_cast<genType>(1.70158));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseOut(genType const& a)\n\t{\n\t\treturn backEaseOut(a, static_cast<genType>(1.70158));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType backEaseInOut(genType const& a)\n\t{\n\t\treturn backEaseInOut(a, static_cast<genType>(1.70158));\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType bounceEaseOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(4.0 / 11.0))\n\t\t{\n\t\t\treturn (static_cast<genType>(121) * a * a) / static_cast<genType>(16);\n\t\t}\n\t\telse if(a < static_cast<genType>(8.0 / 11.0))\n\t\t{\n\t\t\treturn (static_cast<genType>(363.0 / 40.0) * a * a) - (static_cast<genType>(99.0 / 10.0) * a) + static_cast<genType>(17.0 / 5.0);\n\t\t}\n\t\telse if(a < static_cast<genType>(9.0 / 10.0))\n\t\t{\n\t\t\treturn (static_cast<genType>(4356.0 / 361.0) * a * a) - (static_cast<genType>(35442.0 / 1805.0) * a) + static_cast<genType>(16061.0 / 1805.0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn (static_cast<genType>(54.0 / 5.0) * a * a) - (static_cast<genType>(513.0 / 25.0) * a) + static_cast<genType>(268.0 / 25.0);\n\t\t}\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType bounceEaseIn(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\treturn one<genType>() - bounceEaseOut(one<genType>() - a);\n\t}\n\n\ttemplate <typename genType>\n\tGLM_FUNC_QUALIFIER genType bounceEaseInOut(genType const& a)\n\t{\n\t\t// Only defined in [0, 1]\n\t\tassert(a >= zero<genType>());\n\t\tassert(a <= one<genType>());\n\n\t\tif(a < static_cast<genType>(0.5))\n\t\t{\n\t\t\treturn static_cast<genType>(0.5) * (one<genType>() - bounceEaseOut(a * static_cast<genType>(2)));\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn static_cast<genType>(0.5) * bounceEaseOut(a * static_cast<genType>(2) - one<genType>()) + static_cast<genType>(0.5);\n\t\t}\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/euler_angles.hpp",
    "content": "/// @ref gtx_euler_angles\n/// @file glm/gtx/euler_angles.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_euler_angles GLM_GTX_euler_angles\n/// @ingroup gtx\n///\n/// Include <glm/gtx/euler_angles.hpp> to use the features of this extension.\n///\n/// Build matrices from Euler angles.\n///\n/// Extraction of Euler angles from rotation matrix.\n/// Based on the original paper 2014 Mike Day - Extracting Euler Angles from a Rotation Matrix.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_euler_angles is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_euler_angles extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_euler_angles\n\t/// @{\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleX(\n\t\tT const& angleX);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleY(\n\t\tT const& angleY);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZ(\n\t\tT const& angleZ);\n\n\t/// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleX(\n\t\tT const & angleX, T const & angularVelocityX);\n\n\t/// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleY(\n\t\tT const & angleY, T const & angularVelocityY);\n\n\t/// Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleZ(\n\t\tT const & angleZ, T const & angularVelocityZ);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXY(\n\t\tT const& angleX,\n\t\tT const& angleY);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYX(\n\t\tT const& angleY,\n\t\tT const& angleX);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZ(\n\t\tT const& angleX,\n\t\tT const& angleZ);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZX(\n\t\tT const& angle,\n\t\tT const& angleX);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZ(\n\t\tT const& angleY,\n\t\tT const& angleZ);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZY(\n\t\tT const& angleZ,\n\t\tT const& angleY);\n\n    /// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).\n    /// @see gtx_euler_angles\n    template<typename T>\n    GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYZ(\n        T const& t1,\n        T const& t2,\n        T const& t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXZ(\n\t\tT const& yaw,\n\t\tT const& pitch,\n\t\tT const& roll);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZX(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYX(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXY(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZY(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYZ(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXZ(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZY(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZX(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYX(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXY(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<4, 4, T, defaultp> yawPitchRoll(\n\t\tT const& yaw,\n\t\tT const& pitch,\n\t\tT const& roll);\n\n\t/// Creates a 2D 2 * 2 rotation matrix from an euler angle.\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<2, 2, T, defaultp> orientate2(T const& angle);\n\n\t/// Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.\n\t/// @see gtx_euler_angles\n\ttemplate<typename T>\n\tGLM_FUNC_DECL mat<3, 3, T, defaultp> orientate3(T const& angle);\n\n\t/// Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> orientate3(vec<3, T, Q> const& angles);\n\n\t/// Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).\n\t/// @see gtx_euler_angles\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> orientate4(vec<3, T, Q> const& angles);\n\n    /// Extracts the (X * Y * Z) Euler angles from the rotation matrix M\n    /// @see gtx_euler_angles\n    template<typename T>\n    GLM_FUNC_DECL void extractEulerAngleXYZ(mat<4, 4, T, defaultp> const& M,\n                                            T & t1,\n                                            T & t2,\n                                            T & t3);\n\n\t/// Extracts the (Y * X * Z) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleYXZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (X * Z * X) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleXZX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (X * Y * X) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleXYX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Y * X * Y) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleYXY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Y * Z * Y) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleYZY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Z * Y * Z) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleZYZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Z * X * Z) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleZXZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (X * Z * Y) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleXZY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Y * Z * X) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleYZX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Z * Y * X) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleZYX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// Extracts the (Z * X * Y) Euler angles from the rotation matrix M\n\t/// @see gtx_euler_angles\n\ttemplate <typename T>\n\tGLM_FUNC_DECL void extractEulerAngleZXY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\tT & t1,\n\t\t\t\t\t\t\t\t\t\t\tT & t2,\n\t\t\t\t\t\t\t\t\t\t\tT & t3);\n\n\t/// @}\n}//namespace glm\n\n#include \"euler_angles.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/euler_angles.inl",
    "content": "/// @ref gtx_euler_angles\n\n#include \"compatibility.hpp\" // glm::atan2\n\nnamespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleX\n\t(\n\t\tT const& angleX\n\t)\n\t{\n\t\tT cosX = glm::cos(angleX);\n\t\tT sinX = glm::sin(angleX);\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tT(1), T(0), T(0), T(0),\n\t\t\tT(0), cosX, sinX, T(0),\n\t\t\tT(0),-sinX, cosX, T(0),\n\t\t\tT(0), T(0), T(0), T(1));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleY\n\t(\n\t\tT const& angleY\n\t)\n\t{\n\t\tT cosY = glm::cos(angleY);\n\t\tT sinY = glm::sin(angleY);\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tcosY,\tT(0),\t-sinY,\tT(0),\n\t\t\tT(0),\tT(1),\tT(0),\tT(0),\n\t\t\tsinY,\tT(0),\tcosY,\tT(0),\n\t\t\tT(0),\tT(0),\tT(0),\tT(1));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZ\n\t(\n\t\tT const& angleZ\n\t)\n\t{\n\t\tT cosZ = glm::cos(angleZ);\n\t\tT sinZ = glm::sin(angleZ);\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tcosZ,\tsinZ,\tT(0), T(0),\n\t\t\t-sinZ,\tcosZ,\tT(0), T(0),\n\t\t\tT(0),\tT(0),\tT(1), T(0),\n\t\t\tT(0),\tT(0),\tT(0), T(1));\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> derivedEulerAngleX\n\t(\n\t\tT const & angleX,\n\t\tT const & angularVelocityX\n\t)\n\t{\n\t\tT cosX = glm::cos(angleX) * angularVelocityX;\n\t\tT sinX = glm::sin(angleX) * angularVelocityX;\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tT(0), T(0), T(0), T(0),\n\t\t\tT(0),-sinX, cosX, T(0),\n\t\t\tT(0),-cosX,-sinX, T(0),\n\t\t\tT(0), T(0), T(0), T(0));\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> derivedEulerAngleY\n\t(\n\t\tT const & angleY,\n\t\tT const & angularVelocityY\n\t)\n\t{\n\t\tT cosY = glm::cos(angleY) * angularVelocityY;\n\t\tT sinY = glm::sin(angleY) * angularVelocityY;\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\t-sinY, T(0), -cosY, T(0),\n\t\t\t T(0), T(0),  T(0), T(0),\n\t\t\t cosY, T(0), -sinY, T(0),\n\t\t\t T(0), T(0),  T(0), T(0));\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> derivedEulerAngleZ\n\t(\n\t\tT const & angleZ,\n\t\tT const & angularVelocityZ\n\t)\n\t{\n\t\tT cosZ = glm::cos(angleZ) * angularVelocityZ;\n\t\tT sinZ = glm::sin(angleZ) * angularVelocityZ;\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\t-sinZ,  cosZ, T(0), T(0),\n\t\t\t-cosZ, -sinZ, T(0), T(0),\n\t\t\t T(0),  T(0), T(0), T(0),\n\t\t\t T(0),  T(0), T(0), T(0));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXY\n\t(\n\t\tT const& angleX,\n\t\tT const& angleY\n\t)\n\t{\n\t\tT cosX = glm::cos(angleX);\n\t\tT sinX = glm::sin(angleX);\n\t\tT cosY = glm::cos(angleY);\n\t\tT sinY = glm::sin(angleY);\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tcosY,   -sinX * -sinY,  cosX * -sinY,   T(0),\n\t\t\tT(0),   cosX,           sinX,           T(0),\n\t\t\tsinY,   -sinX * cosY,   cosX * cosY,    T(0),\n\t\t\tT(0),   T(0),           T(0),           T(1));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYX\n\t(\n\t\tT const& angleY,\n\t\tT const& angleX\n\t)\n\t{\n\t\tT cosX = glm::cos(angleX);\n\t\tT sinX = glm::sin(angleX);\n\t\tT cosY = glm::cos(angleY);\n\t\tT sinY = glm::sin(angleY);\n\n\t\treturn mat<4, 4, T, defaultp>(\n\t\t\tcosY,          0,      -sinY,    T(0),\n\t\t\tsinY * sinX,  cosX, cosY * sinX, T(0),\n\t\t\tsinY * cosX, -sinX, cosY * cosX, T(0),\n\t\t\tT(0),         T(0),     T(0),    T(1));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXZ\n\t(\n\t\tT const& angleX,\n\t\tT const& angleZ\n\t)\n\t{\n\t\treturn eulerAngleX(angleX) * eulerAngleZ(angleZ);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZX\n\t(\n\t\tT const& angleZ,\n\t\tT const& angleX\n\t)\n\t{\n\t\treturn eulerAngleZ(angleZ) * eulerAngleX(angleX);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYZ\n\t(\n\t\tT const& angleY,\n\t\tT const& angleZ\n\t)\n\t{\n\t\treturn eulerAngleY(angleY) * eulerAngleZ(angleZ);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZY\n\t(\n\t\tT const& angleZ,\n\t\tT const& angleY\n\t)\n\t{\n\t\treturn eulerAngleZ(angleZ) * eulerAngleY(angleY);\n\t}\n\n    template<typename T>\n    GLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXYZ\n    (\n     T const& t1,\n     T const& t2,\n     T const& t3\n     )\n    {\n        T c1 = glm::cos(-t1);\n        T c2 = glm::cos(-t2);\n        T c3 = glm::cos(-t3);\n        T s1 = glm::sin(-t1);\n        T s2 = glm::sin(-t2);\n        T s3 = glm::sin(-t3);\n\n        mat<4, 4, T, defaultp> Result;\n        Result[0][0] = c2 * c3;\n        Result[0][1] =-c1 * s3 + s1 * s2 * c3;\n        Result[0][2] = s1 * s3 + c1 * s2 * c3;\n        Result[0][3] = static_cast<T>(0);\n        Result[1][0] = c2 * s3;\n        Result[1][1] = c1 * c3 + s1 * s2 * s3;\n        Result[1][2] =-s1 * c3 + c1 * s2 * s3;\n        Result[1][3] = static_cast<T>(0);\n        Result[2][0] =-s2;\n        Result[2][1] = s1 * c2;\n        Result[2][2] = c1 * c2;\n        Result[2][3] = static_cast<T>(0);\n        Result[3][0] = static_cast<T>(0);\n        Result[3][1] = static_cast<T>(0);\n        Result[3][2] = static_cast<T>(0);\n        Result[3][3] = static_cast<T>(1);\n        return Result;\n    }\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYXZ\n\t(\n\t\tT const& yaw,\n\t\tT const& pitch,\n\t\tT const& roll\n\t)\n\t{\n\t\tT tmp_ch = glm::cos(yaw);\n\t\tT tmp_sh = glm::sin(yaw);\n\t\tT tmp_cp = glm::cos(pitch);\n\t\tT tmp_sp = glm::sin(pitch);\n\t\tT tmp_cb = glm::cos(roll);\n\t\tT tmp_sb = glm::sin(roll);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = tmp_ch * tmp_cb + tmp_sh * tmp_sp * tmp_sb;\n\t\tResult[0][1] = tmp_sb * tmp_cp;\n\t\tResult[0][2] = -tmp_sh * tmp_cb + tmp_ch * tmp_sp * tmp_sb;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = -tmp_ch * tmp_sb + tmp_sh * tmp_sp * tmp_cb;\n\t\tResult[1][1] = tmp_cb * tmp_cp;\n\t\tResult[1][2] = tmp_sb * tmp_sh + tmp_ch * tmp_sp * tmp_cb;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = tmp_sh * tmp_cp;\n\t\tResult[2][1] = -tmp_sp;\n\t\tResult[2][2] = tmp_ch * tmp_cp;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXZX\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c2;\n\t\tResult[0][1] = c1 * s2;\n\t\tResult[0][2] = s1 * s2;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-c3 * s2;\n\t\tResult[1][1] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[1][2] = c1 * s3 + c2 * c3 * s1;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = s2 * s3;\n\t\tResult[2][1] =-c3 * s1 - c1 * c2 * s3;\n\t\tResult[2][2] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXYX\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c2;\n\t\tResult[0][1] = s1 * s2;\n\t\tResult[0][2] =-c1 * s2;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = s2 * s3;\n\t\tResult[1][1] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[1][2] = c3 * s1 + c1 * c2 * s3;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c3 * s2;\n\t\tResult[2][1] =-c1 * s3 - c2 * c3 * s1;\n\t\tResult[2][2] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYXY\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[0][1] = s2* s3;\n\t\tResult[0][2] =-c3 * s1 - c1 * c2 * s3;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = s1 * s2;\n\t\tResult[1][1] = c2;\n\t\tResult[1][2] = c1 * s2;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c1 * s3 + c2 * c3 * s1;\n\t\tResult[2][1] =-c3 * s2;\n\t\tResult[2][2] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYZY\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[0][1] = c3 * s2;\n\t\tResult[0][2] =-c1 * s3 - c2 * c3 * s1;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-c1 * s2;\n\t\tResult[1][1] = c2;\n\t\tResult[1][2] = s1 * s2;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c3 * s1 + c1 * c2 * s3;\n\t\tResult[2][1] = s2 * s3;\n\t\tResult[2][2] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZYZ\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[0][1] = c1 * s3 + c2 * c3 * s1;\n\t\tResult[0][2] =-c3 * s2;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-c3 * s1 - c1 * c2 * s3;\n\t\tResult[1][1] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[1][2] = s2 * s3;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c1 * s2;\n\t\tResult[2][1] = s1 * s2;\n\t\tResult[2][2] = c2;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZXZ\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c3 - c2 * s1 * s3;\n\t\tResult[0][1] = c3 * s1 + c1 * c2 * s3;\n\t\tResult[0][2] = s2 *s3;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-c1 * s3 - c2 * c3 * s1;\n\t\tResult[1][1] = c1 * c2 * c3 - s1 * s3;\n\t\tResult[1][2] = c3 * s2;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = s1 * s2;\n\t\tResult[2][1] =-c1 * s2;\n\t\tResult[2][2] = c2;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleXZY\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c2 * c3;\n\t\tResult[0][1] = s1 * s3 + c1 * c3 * s2;\n\t\tResult[0][2] = c3 * s1 * s2 - c1 * s3;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-s2;\n\t\tResult[1][1] = c1 * c2;\n\t\tResult[1][2] = c2 * s1;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c2 * s3;\n\t\tResult[2][1] = c1 * s2 * s3 - c3 * s1;\n\t\tResult[2][2] = c1 * c3 + s1 * s2 *s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleYZX\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c2;\n\t\tResult[0][1] = s2;\n\t\tResult[0][2] =-c2 * s1;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = s1 * s3 - c1 * c3 * s2;\n\t\tResult[1][1] = c2 * c3;\n\t\tResult[1][2] = c1 * s3 + c3 * s1 * s2;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c3 * s1 + c1 * s2 * s3;\n\t\tResult[2][1] =-c2 * s3;\n\t\tResult[2][2] = c1 * c3 - s1 * s2 * s3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZYX\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c2;\n\t\tResult[0][1] = c2 * s1;\n\t\tResult[0][2] =-s2;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = c1 * s2 * s3 - c3 * s1;\n\t\tResult[1][1] = c1 * c3 + s1 * s2 * s3;\n\t\tResult[1][2] = c2 * s3;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = s1 * s3 + c1 * c3 * s2;\n\t\tResult[2][1] = c3 * s1 * s2 - c1 * s3;\n\t\tResult[2][2] = c2 * c3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> eulerAngleZXY\n\t(\n\t\tT const & t1,\n\t\tT const & t2,\n\t\tT const & t3\n\t)\n\t{\n\t\tT c1 = glm::cos(t1);\n\t\tT s1 = glm::sin(t1);\n\t\tT c2 = glm::cos(t2);\n\t\tT s2 = glm::sin(t2);\n\t\tT c3 = glm::cos(t3);\n\t\tT s3 = glm::sin(t3);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = c1 * c3 - s1 * s2 * s3;\n\t\tResult[0][1] = c3 * s1 + c1 * s2 * s3;\n\t\tResult[0][2] =-c2 * s3;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] =-c2 * s1;\n\t\tResult[1][1] = c1 * c2;\n\t\tResult[1][2] = s2;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = c1 * s3 + c3 * s1 * s2;\n\t\tResult[2][1] = s1 * s3 - c1 * c3 * s2;\n\t\tResult[2][2] = c2 * c3;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> yawPitchRoll\n\t(\n\t\tT const& yaw,\n\t\tT const& pitch,\n\t\tT const& roll\n\t)\n\t{\n\t\tT tmp_ch = glm::cos(yaw);\n\t\tT tmp_sh = glm::sin(yaw);\n\t\tT tmp_cp = glm::cos(pitch);\n\t\tT tmp_sp = glm::sin(pitch);\n\t\tT tmp_cb = glm::cos(roll);\n\t\tT tmp_sb = glm::sin(roll);\n\n\t\tmat<4, 4, T, defaultp> Result;\n\t\tResult[0][0] = tmp_ch * tmp_cb + tmp_sh * tmp_sp * tmp_sb;\n\t\tResult[0][1] = tmp_sb * tmp_cp;\n\t\tResult[0][2] = -tmp_sh * tmp_cb + tmp_ch * tmp_sp * tmp_sb;\n\t\tResult[0][3] = static_cast<T>(0);\n\t\tResult[1][0] = -tmp_ch * tmp_sb + tmp_sh * tmp_sp * tmp_cb;\n\t\tResult[1][1] = tmp_cb * tmp_cp;\n\t\tResult[1][2] = tmp_sb * tmp_sh + tmp_ch * tmp_sp * tmp_cb;\n\t\tResult[1][3] = static_cast<T>(0);\n\t\tResult[2][0] = tmp_sh * tmp_cp;\n\t\tResult[2][1] = -tmp_sp;\n\t\tResult[2][2] = tmp_ch * tmp_cp;\n\t\tResult[2][3] = static_cast<T>(0);\n\t\tResult[3][0] = static_cast<T>(0);\n\t\tResult[3][1] = static_cast<T>(0);\n\t\tResult[3][2] = static_cast<T>(0);\n\t\tResult[3][3] = static_cast<T>(1);\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, defaultp> orientate2\n\t(\n\t\tT const& angle\n\t)\n\t{\n\t\tT c = glm::cos(angle);\n\t\tT s = glm::sin(angle);\n\n\t\tmat<2, 2, T, defaultp> Result;\n\t\tResult[0][0] = c;\n\t\tResult[0][1] = s;\n\t\tResult[1][0] = -s;\n\t\tResult[1][1] = c;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, defaultp> orientate3\n\t(\n\t\tT const& angle\n\t)\n\t{\n\t\tT c = glm::cos(angle);\n\t\tT s = glm::sin(angle);\n\n\t\tmat<3, 3, T, defaultp> Result;\n\t\tResult[0][0] = c;\n\t\tResult[0][1] = s;\n\t\tResult[0][2] = 0.0f;\n\t\tResult[1][0] = -s;\n\t\tResult[1][1] = c;\n\t\tResult[1][2] = 0.0f;\n\t\tResult[2][0] = 0.0f;\n\t\tResult[2][1] = 0.0f;\n\t\tResult[2][2] = 1.0f;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> orientate3\n\t(\n\t\tvec<3, T, Q> const& angles\n\t)\n\t{\n\t\treturn mat<3, 3, T, Q>(yawPitchRoll(angles.z, angles.x, angles.y));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> orientate4\n\t(\n\t\tvec<3, T, Q> const& angles\n\t)\n\t{\n\t\treturn yawPitchRoll(angles.z, angles.x, angles.y);\n\t}\n\n    template<typename T>\n    GLM_FUNC_DECL void extractEulerAngleXYZ(mat<4, 4, T, defaultp> const& M,\n                                            T & t1,\n                                            T & t2,\n                                            T & t3)\n    {\n        T T1 = glm::atan2<T, defaultp>(M[2][1], M[2][2]);\n        T C2 = glm::sqrt(M[0][0]*M[0][0] + M[1][0]*M[1][0]);\n        T T2 = glm::atan2<T, defaultp>(-M[2][0], C2);\n        T S1 = glm::sin(T1);\n        T C1 = glm::cos(T1);\n        T T3 = glm::atan2<T, defaultp>(S1*M[0][2] - C1*M[0][1], C1*M[1][1] - S1*M[1][2  ]);\n        t1 = -T1;\n        t2 = -T2;\n        t3 = -T3;\n    }\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleYXZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[2][0], M[2][2]);\n\t\tT C2 = glm::sqrt(M[0][1]*M[0][1] + M[1][1]*M[1][1]);\n\t\tT T2 = glm::atan2<T, defaultp>(-M[2][1], C2);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(S1*M[1][2] - C1*M[1][0], C1*M[0][0] - S1*M[0][2]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleXZX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[0][2], M[0][1]);\n\t\tT S2 = glm::sqrt(M[1][0]*M[1][0] + M[2][0]*M[2][0]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[0][0]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(C1*M[1][2] - S1*M[1][1], C1*M[2][2] - S1*M[2][1]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleXYX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[0][1], -M[0][2]);\n\t\tT S2 = glm::sqrt(M[1][0]*M[1][0] + M[2][0]*M[2][0]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[0][0]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(-C1*M[2][1] - S1*M[2][2], C1*M[1][1] + S1*M[1][2]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleYXY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[1][0], M[1][2]);\n\t\tT S2 = glm::sqrt(M[0][1]*M[0][1] + M[2][1]*M[2][1]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[1][1]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(C1*M[2][0] - S1*M[2][2], C1*M[0][0] - S1*M[0][2]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleYZY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[1][2], -M[1][0]);\n\t\tT S2 = glm::sqrt(M[0][1]*M[0][1] + M[2][1]*M[2][1]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[1][1]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(-S1*M[0][0] - C1*M[0][2], S1*M[2][0] + C1*M[2][2]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleZYZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[2][1], M[2][0]);\n\t\tT S2 = glm::sqrt(M[0][2]*M[0][2] + M[1][2]*M[1][2]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[2][2]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(C1*M[0][1] - S1*M[0][0], C1*M[1][1] - S1*M[1][0]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleZXZ(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[2][0], -M[2][1]);\n\t\tT S2 = glm::sqrt(M[0][2]*M[0][2] + M[1][2]*M[1][2]);\n\t\tT T2 = glm::atan2<T, defaultp>(S2, M[2][2]);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(-C1*M[1][0] - S1*M[1][1], C1*M[0][0] + S1*M[0][1]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleXZY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[1][2], M[1][1]);\n\t\tT C2 = glm::sqrt(M[0][0]*M[0][0] + M[2][0]*M[2][0]);\n\t\tT T2 = glm::atan2<T, defaultp>(-M[1][0], C2);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(S1*M[0][1] - C1*M[0][2], C1*M[2][2] - S1*M[2][1]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleYZX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(-M[0][2], M[0][0]);\n\t\tT C2 = glm::sqrt(M[1][1]*M[1][1] + M[2][1]*M[2][1]);\n\t\tT T2 = glm::atan2<T, defaultp>(M[0][1], C2);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(S1*M[1][0] + C1*M[1][2], S1*M[2][0] + C1*M[2][2]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleZYX(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(M[0][1], M[0][0]);\n\t\tT C2 = glm::sqrt(M[1][2]*M[1][2] + M[2][2]*M[2][2]);\n\t\tT T2 = glm::atan2<T, defaultp>(-M[0][2], C2);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(S1*M[2][0] - C1*M[2][1], C1*M[1][1] - S1*M[1][0]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n\n\ttemplate <typename T>\n\tGLM_FUNC_QUALIFIER void extractEulerAngleZXY(mat<4, 4, T, defaultp> const & M,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t1,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t2,\n\t\t\t\t\t\t\t\t\t\t\t\t T & t3)\n\t{\n\t\tT T1 = glm::atan2<T, defaultp>(-M[1][0], M[1][1]);\n\t\tT C2 = glm::sqrt(M[0][2]*M[0][2] + M[2][2]*M[2][2]);\n\t\tT T2 = glm::atan2<T, defaultp>(M[1][2], C2);\n\t\tT S1 = glm::sin(T1);\n\t\tT C1 = glm::cos(T1);\n\t\tT T3 = glm::atan2<T, defaultp>(C1*M[2][0] + S1*M[2][1], C1*M[0][0] + S1*M[0][1]);\n\t\tt1 = T1;\n\t\tt2 = T2;\n\t\tt3 = T3;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/extend.hpp",
    "content": "/// @ref gtx_extend\n/// @file glm/gtx/extend.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_extend GLM_GTX_extend\n/// @ingroup gtx\n///\n/// Include <glm/gtx/extend.hpp> to use the features of this extension.\n///\n/// Extend a position from a source to a position at a defined length.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_extend extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_extend\n\t/// @{\n\n\t/// Extends of Length the Origin position using the (Source - Origin) direction.\n\t/// @see gtx_extend\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType extend(\n\t\tgenType const& Origin,\n\t\tgenType const& Source,\n\t\ttypename genType::value_type const Length);\n\n\t/// @}\n}//namespace glm\n\n#include \"extend.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/extend.inl",
    "content": "/// @ref gtx_extend\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType extend\n\t(\n\t\tgenType const& Origin,\n\t\tgenType const& Source,\n\t\tgenType const& Distance\n\t)\n\t{\n\t\treturn Origin + (Source - Origin) * Distance;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> extend\n\t(\n\t\tvec<2, T, Q> const& Origin,\n\t\tvec<2, T, Q> const& Source,\n\t\tT const& Distance\n\t)\n\t{\n\t\treturn Origin + (Source - Origin) * Distance;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> extend\n\t(\n\t\tvec<3, T, Q> const& Origin,\n\t\tvec<3, T, Q> const& Source,\n\t\tT const& Distance\n\t)\n\t{\n\t\treturn Origin + (Source - Origin) * Distance;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> extend\n\t(\n\t\tvec<4, T, Q> const& Origin,\n\t\tvec<4, T, Q> const& Source,\n\t\tT const& Distance\n\t)\n\t{\n\t\treturn Origin + (Source - Origin) * Distance;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/extended_min_max.hpp",
    "content": "/// @ref gtx_extended_min_max\n/// @file glm/gtx/extended_min_max.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_extended_min_max GLM_GTX_extented_min_max\n/// @ingroup gtx\n///\n/// Include <glm/gtx/extented_min_max.hpp> to use the features of this extension.\n///\n/// Min and max functions for 3 to 4 parameters.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_extented_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_extented_min_max extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_extended_min_max\n\t/// @{\n\n\t/// Return the minimum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T min(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z);\n\n\t/// Return the minimum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> min(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z);\n\n\t/// Return the minimum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> min(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z);\n\n\t/// Return the minimum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T min(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z,\n\t\tT const& w);\n\n\t/// Return the minimum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> min(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z,\n\t\ttypename C<T>::T const& w);\n\n\t/// Return the minimum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> min(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z,\n\t\tC<T> const& w);\n\n\t/// Return the maximum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T max(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z);\n\n\t/// Return the maximum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> max(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z);\n\n\t/// Return the maximum component-wise values of 3 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> max(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z);\n\n\t/// Return the maximum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T max(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z,\n\t\tT const& w);\n\n\t/// Return the maximum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> max(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z,\n\t\ttypename C<T>::T const& w);\n\n\t/// Return the maximum component-wise values of 4 inputs\n\t/// @see gtx_extented_min_max\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_DECL C<T> max(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z,\n\t\tC<T> const& w);\n\n\t/// Returns y if y < x; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam genType Floating-point or integer; scalar or vector types.\n\t///\n\t/// @see gtx_extented_min_max\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fmin(genType x, genType y);\n\n\t/// Returns y if x < y; otherwise, it returns x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam genType Floating-point; scalar or vector types.\n\t///\n\t/// @see gtx_extented_min_max\n\t/// @see <a href=\"http://en.cppreference.com/w/cpp/numeric/math/fmax\">std::fmax documentation</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fmax(genType x, genType y);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam genType Floating-point scalar or vector types.\n\t///\n\t/// @see gtx_extented_min_max\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtx_extented_min_max\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal);\n\n\t/// Returns min(max(x, minVal), maxVal) for each component in x. If one of the two arguments is NaN, the value of the other argument is returned.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see gtx_extented_min_max\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);\n\n\n\t/// @}\n}//namespace glm\n\n#include \"extended_min_max.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/extended_min_max.inl",
    "content": "/// @ref gtx_extended_min_max\n\nnamespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T min(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z)\n\t{\n\t\treturn glm::min(glm::min(x, y), z);\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> min\n\t(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z\n\t)\n\t{\n\t\treturn glm::min(glm::min(x, y), z);\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> min\n\t(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z\n\t)\n\t{\n\t\treturn glm::min(glm::min(x, y), z);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T min\n\t(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z,\n\t\tT const& w\n\t)\n\t{\n\t\treturn glm::min(glm::min(x, y), glm::min(z, w));\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> min\n\t(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z,\n\t\ttypename C<T>::T const& w\n\t)\n\t{\n\t\treturn glm::min(glm::min(x, y), glm::min(z, w));\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> min\n\t(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z,\n\t\tC<T> const& w\n\t)\n\t{\n\t\treturn glm::min(glm::min(x, y), glm::min(z, w));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T max(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z)\n\t{\n\t\treturn glm::max(glm::max(x, y), z);\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> max\n\t(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z\n\t)\n\t{\n\t\treturn glm::max(glm::max(x, y), z);\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> max\n\t(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z\n\t)\n\t{\n\t\treturn glm::max(glm::max(x, y), z);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T max\n\t(\n\t\tT const& x,\n\t\tT const& y,\n\t\tT const& z,\n\t\tT const& w\n\t)\n\t{\n\t\treturn glm::max(glm::max(x, y), glm::max(z, w));\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> max\n\t(\n\t\tC<T> const& x,\n\t\ttypename C<T>::T const& y,\n\t\ttypename C<T>::T const& z,\n\t\ttypename C<T>::T const& w\n\t)\n\t{\n\t\treturn glm::max(glm::max(x, y), glm::max(z, w));\n\t}\n\n\ttemplate<typename T, template<typename> class C>\n\tGLM_FUNC_QUALIFIER C<T> max\n\t(\n\t\tC<T> const& x,\n\t\tC<T> const& y,\n\t\tC<T> const& z,\n\t\tC<T> const& w\n\t)\n\t{\n\t\treturn glm::max(glm::max(x, y), glm::max(z, w));\n\t}\n\n\t// fmin\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::fmin;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType fmin(genType x, genType y)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'fmin' only accept floating-point input\");\n\n\t\t\tif (isnan(x))\n\t\t\t\treturn y;\n\t\t\tif (isnan(y))\n\t\t\t\treturn x;\n\n\t\t\treturn min(x, y);\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, T b)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmin, a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmin, a, b);\n\t}\n\n\t// fmax\n#\tif GLM_HAS_CXX11_STL\n\t\tusing std::fmax;\n#\telse\n\t\ttemplate<typename genType>\n\t\tGLM_FUNC_QUALIFIER genType fmax(genType x, genType y)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'fmax' only accept floating-point input\");\n\n\t\t\tif (isnan(x))\n\t\t\t\treturn y;\n\t\t\tif (isnan(y))\n\t\t\t\treturn x;\n\n\t\t\treturn max(x, y);\n\t\t}\n#\tendif\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmax, a, vec<L, T, Q>(b));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(fmax, a, b);\n\t}\n\n\t// fclamp\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fclamp(genType x, genType minVal, genType maxVal)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'fclamp' only accept floating-point or integer inputs\");\n\t\treturn fmin(fmax(x, minVal), maxVal);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal)\n\t{\n\t\treturn fmin(fmax(x, vec<L, T, Q>(minVal)), vec<L, T, Q>(maxVal));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal)\n\t{\n\t\treturn fmin(fmax(x, minVal), maxVal);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/exterior_product.hpp",
    "content": "/// @ref gtx_exterior_product\n/// @file glm/gtx/exterior_product.hpp\n///\n/// @see core (dependence)\n/// @see gtx_exterior_product (dependence)\n///\n/// @defgroup gtx_exterior_product GLM_GTX_exterior_product\n/// @ingroup gtx\n///\n/// Include <glm/gtx/exterior_product.hpp> to use the features of this extension.\n///\n/// @brief Allow to perform bit operations on integer values\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_exterior_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_exterior_product extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_exterior_product\n\t/// @{\n\n\t/// Returns the cross product of x and y.\n\t///\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"https://en.wikipedia.org/wiki/Exterior_algebra#Cross_and_triple_products\">Exterior product</a>\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T cross(vec<2, T, Q> const& v, vec<2, T, Q> const& u);\n\n\t/// @}\n} //namespace glm\n\n#include \"exterior_product.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/exterior_product.inl",
    "content": "/// @ref gtx_exterior_product\n\n#include <limits>\n\nnamespace glm {\nnamespace detail\n{\n\ttemplate<typename T, qualifier Q, bool Aligned>\n\tstruct compute_cross_vec2\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<2, T, Q> const& v, vec<2, T, Q> const& u)\n\t\t{\n\t\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'cross' accepts only floating-point inputs\");\n\n\t\t\treturn v.x * u.y - u.x * v.y;\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T cross(vec<2, T, Q> const& x, vec<2, T, Q> const& y)\n\t{\n\t\treturn detail::compute_cross_vec2<T, Q, detail::is_aligned<Q>::value>::call(x, y);\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtx/fast_exponential.hpp",
    "content": "/// @ref gtx_fast_exponential\n/// @file glm/gtx/fast_exponential.hpp\n///\n/// @see core (dependence)\n/// @see gtx_half_float (dependence)\n///\n/// @defgroup gtx_fast_exponential GLM_GTX_fast_exponential\n/// @ingroup gtx\n///\n/// Include <glm/gtx/fast_exponential.hpp> to use the features of this extension.\n///\n/// Fast but less accurate implementations of exponential based functions.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_fast_exponential is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_fast_exponential extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_fast_exponential\n\t/// @{\n\n\t/// Faster than the common pow function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastPow(genType x, genType y);\n\n\t/// Faster than the common pow function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Faster than the common pow function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename genTypeT, typename genTypeU>\n\tGLM_FUNC_DECL genTypeT fastPow(genTypeT x, genTypeU y);\n\n\t/// Faster than the common pow function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x);\n\n\t/// Faster than the common exp function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastExp(T x);\n\n\t/// Faster than the common exp function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastExp(vec<L, T, Q> const& x);\n\n\t/// Faster than the common log function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastLog(T x);\n\n\t/// Faster than the common exp2 function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastLog(vec<L, T, Q> const& x);\n\n\t/// Faster than the common exp2 function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastExp2(T x);\n\n\t/// Faster than the common exp2 function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastExp2(vec<L, T, Q> const& x);\n\n\t/// Faster than the common log2 function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastLog2(T x);\n\n\t/// Faster than the common log2 function but less accurate.\n\t/// @see gtx_fast_exponential\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastLog2(vec<L, T, Q> const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"fast_exponential.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/fast_exponential.inl",
    "content": "/// @ref gtx_fast_exponential\n\nnamespace glm\n{\n\t// fastPow:\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastPow(genType x, genType y)\n\t{\n\t\treturn exp(y * log(x));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastPow(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn exp(y * log(x));\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastPow(T x, int y)\n\t{\n\t\tT f = static_cast<T>(1);\n\t\tfor(int i = 0; i < y; ++i)\n\t\t\tf *= x;\n\t\treturn f;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastPow(vec<L, T, Q> const& x, vec<L, int, Q> const& y)\n\t{\n\t\tvec<L, T, Q> Result;\n\t\tfor(length_t i = 0, n = x.length(); i < n; ++i)\n\t\t\tResult[i] = fastPow(x[i], y[i]);\n\t\treturn Result;\n\t}\n\n\t// fastExp\n\t// Note: This function provides accurate results only for value between -1 and 1, else avoid it.\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastExp(T x)\n\t{\n\t\t// This has a better looking and same performance in release mode than the following code. However, in debug mode it's slower.\n\t\t// return 1.0f + x * (1.0f + x * 0.5f * (1.0f + x * 0.3333333333f * (1.0f + x * 0.25 * (1.0f + x * 0.2f))));\n\t\tT x2 = x * x;\n\t\tT x3 = x2 * x;\n\t\tT x4 = x3 * x;\n\t\tT x5 = x4 * x;\n\t\treturn T(1) + x + (x2 * T(0.5)) + (x3 * T(0.1666666667)) + (x4 * T(0.041666667)) + (x5 * T(0.008333333333));\n\t}\n\t/*  // Try to handle all values of float... but often shower than std::exp, glm::floor and the loop kill the performance\n\tGLM_FUNC_QUALIFIER float fastExp(float x)\n\t{\n\t\tconst float e = 2.718281828f;\n\t\tconst float IntegerPart = floor(x);\n\t\tconst float FloatPart = x - IntegerPart;\n\t\tfloat z = 1.f;\n\n\t\tfor(int i = 0; i < int(IntegerPart); ++i)\n\t\t\tz *= e;\n\n\t\tconst float x2 = FloatPart * FloatPart;\n\t\tconst float x3 = x2 * FloatPart;\n\t\tconst float x4 = x3 * FloatPart;\n\t\tconst float x5 = x4 * FloatPart;\n\t\treturn z * (1.0f + FloatPart + (x2 * 0.5f) + (x3 * 0.1666666667f) + (x4 * 0.041666667f) + (x5 * 0.008333333333f));\n\t}\n\n\t// Increase accuracy on number bigger that 1 and smaller than -1 but it's not enough for high and negative numbers\n\tGLM_FUNC_QUALIFIER float fastExp(float x)\n\t{\n\t\t// This has a better looking and same performance in release mode than the following code. However, in debug mode it's slower.\n\t\t// return 1.0f + x * (1.0f + x * 0.5f * (1.0f + x * 0.3333333333f * (1.0f + x * 0.25 * (1.0f + x * 0.2f))));\n\t\tfloat x2 = x * x;\n\t\tfloat x3 = x2 * x;\n\t\tfloat x4 = x3 * x;\n\t\tfloat x5 = x4 * x;\n\t\tfloat x6 = x5 * x;\n\t\tfloat x7 = x6 * x;\n\t\tfloat x8 = x7 * x;\n\t\treturn 1.0f + x + (x2 * 0.5f) + (x3 * 0.1666666667f) + (x4 * 0.041666667f) + (x5 * 0.008333333333f)+ (x6 * 0.00138888888888f) + (x7 * 0.000198412698f) + (x8 * 0.0000248015873f);;\n\t}\n\t*/\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastExp(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastExp, x);\n\t}\n\n\t// fastLog\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastLog(genType x)\n\t{\n\t\treturn std::log(x);\n\t}\n\n\t/* Slower than the VC7.1 function...\n\tGLM_FUNC_QUALIFIER float fastLog(float x)\n\t{\n\t\tfloat y1 = (x - 1.0f) / (x + 1.0f);\n\t\tfloat y2 = y1 * y1;\n\t\treturn 2.0f * y1 * (1.0f + y2 * (0.3333333333f + y2 * (0.2f + y2 * 0.1428571429f)));\n\t}\n\t*/\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastLog(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastLog, x);\n\t}\n\n\t//fastExp2, ln2 = 0.69314718055994530941723212145818f\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastExp2(genType x)\n\t{\n\t\treturn fastExp(0.69314718055994530941723212145818f * x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastExp2(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastExp2, x);\n\t}\n\n\t// fastLog2, ln2 = 0.69314718055994530941723212145818f\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastLog2(genType x)\n\t{\n\t\treturn fastLog(x) / 0.69314718055994530941723212145818f;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastLog2(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastLog2, x);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/fast_square_root.hpp",
    "content": "/// @ref gtx_fast_square_root\n/// @file glm/gtx/fast_square_root.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_fast_square_root GLM_GTX_fast_square_root\n/// @ingroup gtx\n///\n/// Include <glm/gtx/fast_square_root.hpp> to use the features of this extension.\n///\n/// Fast but less accurate implementations of square root based functions.\n/// - Sqrt optimisation based on Newton's method,\n/// www.gamedev.net/community/forums/topic.asp?topic id=139956\n\n#pragma once\n\n// Dependency:\n#include \"../common.hpp\"\n#include \"../exponential.hpp\"\n#include \"../geometric.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_fast_square_root is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_fast_square_root extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_fast_square_root\n\t/// @{\n\n\t/// Faster than the common sqrt function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastSqrt(genType x);\n\n\t/// Faster than the common sqrt function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastSqrt(vec<L, T, Q> const& x);\n\n\t/// Faster than the common inversesqrt function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastInverseSqrt(genType x);\n\n\t/// Faster than the common inversesqrt function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> fastInverseSqrt(vec<L, T, Q> const& x);\n\n\t/// Faster than the common length function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastLength(genType x);\n\n\t/// Faster than the common length function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T fastLength(vec<L, T, Q> const& x);\n\n\t/// Faster than the common distance function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastDistance(genType x, genType y);\n\n\t/// Faster than the common distance function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T fastDistance(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Faster than the common normalize function but less accurate.\n\t///\n\t/// @see gtx_fast_square_root extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType fastNormalize(genType const& x);\n\n\t/// @}\n}// namespace glm\n\n#include \"fast_square_root.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/fast_square_root.inl",
    "content": "/// @ref gtx_fast_square_root\n\nnamespace glm\n{\n\t// fastSqrt\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastSqrt(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'fastSqrt' only accept floating-point input\");\n\n\t\treturn genType(1) / fastInverseSqrt(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastSqrt(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastSqrt, x);\n\t}\n\n\t// fastInversesqrt\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastInverseSqrt(genType x)\n\t{\n\t\treturn detail::compute_inversesqrt<1, genType, lowp, detail::is_aligned<lowp>::value>::call(vec<1, genType, lowp>(x)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastInverseSqrt(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::compute_inversesqrt<L, T, Q, detail::is_aligned<Q>::value>::call(x);\n\t}\n\n\t// fastLength\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastLength(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'fastLength' only accept floating-point inputs\");\n\n\t\treturn abs(x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T fastLength(vec<L, T, Q> const& x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'fastLength' only accept floating-point inputs\");\n\n\t\treturn fastSqrt(dot(x, x));\n\t}\n\n\t// fastDistance\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastDistance(genType x, genType y)\n\t{\n\t\treturn fastLength(y - x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T fastDistance(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn fastLength(y - x);\n\t}\n\n\t// fastNormalize\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType fastNormalize(genType x)\n\t{\n\t\treturn x > genType(0) ? genType(1) : -genType(1);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastNormalize(vec<L, T, Q> const& x)\n\t{\n\t\treturn x * fastInverseSqrt(dot(x, x));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/fast_trigonometry.hpp",
    "content": "/// @ref gtx_fast_trigonometry\n/// @file glm/gtx/fast_trigonometry.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_fast_trigonometry GLM_GTX_fast_trigonometry\n/// @ingroup gtx\n///\n/// Include <glm/gtx/fast_trigonometry.hpp> to use the features of this extension.\n///\n/// Fast but less accurate implementations of trigonometric functions.\n\n#pragma once\n\n// Dependency:\n#include \"../gtc/constants.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_fast_trigonometry is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_fast_trigonometry extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_fast_trigonometry\n\t/// @{\n\n\t/// Wrap an angle to [0 2pi[\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T wrapAngle(T angle);\n\n\t/// Faster than the common sin function but less accurate.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastSin(T angle);\n\n\t/// Faster than the common cos function but less accurate.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastCos(T angle);\n\n\t/// Faster than the common tan function but less accurate.\n\t/// Defined between -2pi and 2pi.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastTan(T angle);\n\n\t/// Faster than the common asin function but less accurate.\n\t/// Defined between -2pi and 2pi.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastAsin(T angle);\n\n\t/// Faster than the common acos function but less accurate.\n\t/// Defined between -2pi and 2pi.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastAcos(T angle);\n\n\t/// Faster than the common atan function but less accurate.\n\t/// Defined between -2pi and 2pi.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastAtan(T y, T x);\n\n\t/// Faster than the common atan function but less accurate.\n\t/// Defined between -2pi and 2pi.\n\t/// From GLM_GTX_fast_trigonometry extension.\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T fastAtan(T angle);\n\n\t/// @}\n}//namespace glm\n\n#include \"fast_trigonometry.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/fast_trigonometry.inl",
    "content": "/// @ref gtx_fast_trigonometry\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> taylorCos(vec<L, T, Q> const& x)\n\t{\n\t\treturn static_cast<T>(1)\n\t\t\t- (x * x) * (1.f / 2.f)\n\t\t\t+ ((x * x) * (x * x)) * (1.f / 24.f)\n\t\t\t- (((x * x) * (x * x)) * (x * x)) * (1.f / 720.f)\n\t\t\t+ (((x * x) * (x * x)) * ((x * x) * (x * x))) * (1.f / 40320.f);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T cos_52s(T x)\n\t{\n\t\tT const xx(x * x);\n\t\treturn (T(0.9999932946) + xx * (T(-0.4999124376) + xx * (T(0.0414877472) + xx * T(-0.0012712095))));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> cos_52s(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(cos_52s, x);\n\t}\n}//namespace detail\n\n\t// wrapAngle\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T wrapAngle(T angle)\n\t{\n\t\treturn abs<T>(mod<T>(angle, two_pi<T>()));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> wrapAngle(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(wrapAngle, x);\n\t}\n\n\t// cos\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastCos(T x)\n\t{\n\t\tT const angle(wrapAngle<T>(x));\n\n\t\tif(angle < half_pi<T>())\n\t\t\treturn detail::cos_52s(angle);\n\t\tif(angle < pi<T>())\n\t\t\treturn -detail::cos_52s(pi<T>() - angle);\n\t\tif(angle < (T(3) * half_pi<T>()))\n\t\t\treturn -detail::cos_52s(angle - pi<T>());\n\n\t\treturn detail::cos_52s(two_pi<T>() - angle);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastCos(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastCos, x);\n\t}\n\n\t// sin\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastSin(T x)\n\t{\n\t\treturn fastCos<T>(half_pi<T>() - x);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastSin(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastSin, x);\n\t}\n\n\t// tan\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastTan(T x)\n\t{\n\t\treturn x + (x * x * x * T(0.3333333333)) + (x * x * x * x * x * T(0.1333333333333)) + (x * x * x * x * x * x * x * T(0.0539682539));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastTan(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastTan, x);\n\t}\n\n\t// asin\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastAsin(T x)\n\t{\n\t\treturn x + (x * x * x * T(0.166666667)) + (x * x * x * x * x * T(0.075)) + (x * x * x * x * x * x * x * T(0.0446428571)) + (x * x * x * x * x * x * x * x * x * T(0.0303819444));// + (x * x * x * x * x * x * x * x * x * x * x * T(0.022372159));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastAsin(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastAsin, x);\n\t}\n\n\t// acos\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastAcos(T x)\n\t{\n\t\treturn T(1.5707963267948966192313216916398) - fastAsin(x); //(PI / 2)\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastAcos(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastAcos, x);\n\t}\n\n\t// atan\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastAtan(T y, T x)\n\t{\n\t\tT sgn = sign(y) * sign(x);\n\t\treturn abs(fastAtan(y / x)) * sgn;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastAtan(vec<L, T, Q> const& y, vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor2<vec, L, T, Q>::call(fastAtan, y, x);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T fastAtan(T x)\n\t{\n\t\treturn x - (x * x * x * T(0.333333333333)) + (x * x * x * x * x * T(0.2)) - (x * x * x * x * x * x * x * T(0.1428571429)) + (x * x * x * x * x * x * x * x * x * T(0.111111111111)) - (x * x * x * x * x * x * x * x * x * x * x * T(0.0909090909));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> fastAtan(vec<L, T, Q> const& x)\n\t{\n\t\treturn detail::functor1<vec, L, T, T, Q>::call(fastAtan, x);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/float_notmalize.inl",
    "content": "/// @ref gtx_float_normalize\n\n#include <limits>\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, float, Q> floatNormalize(vec<L, T, Q> const& v)\n\t{\n\t\treturn vec<L, float, Q>(v) / static_cast<float>(std::numeric_limits<T>::max());\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/functions.hpp",
    "content": "/// @ref gtx_functions\n/// @file glm/gtx/functions.hpp\n///\n/// @see core (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtx_functions GLM_GTX_functions\n/// @ingroup gtx\n///\n/// Include <glm/gtx/functions.hpp> to use the features of this extension.\n///\n/// List of useful common functions.\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n#include \"../detail/qualifier.hpp\"\n#include \"../detail/type_vec2.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_functions is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_functions extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_functions\n\t/// @{\n\n\t/// 1D gauss function\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<typename T>\n\tGLM_FUNC_DECL T gauss(\n\t\tT x,\n\t\tT ExpectedValue,\n\t\tT StandardDeviation);\n\n\t/// 2D gauss function\n\t///\n\t/// @see gtc_epsilon\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T gauss(\n\t\tvec<2, T, Q> const& Coord,\n\t\tvec<2, T, Q> const& ExpectedValue,\n\t\tvec<2, T, Q> const& StandardDeviation);\n\n\t/// @}\n}//namespace glm\n\n#include \"functions.inl\"\n\n"
  },
  {
    "path": "libraries/glm/gtx/functions.inl",
    "content": "/// @ref gtx_functions\n\n#include \"../exponential.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T gauss\n\t(\n\t\tT x,\n\t\tT ExpectedValue,\n\t\tT StandardDeviation\n\t)\n\t{\n\t\treturn exp(-((x - ExpectedValue) * (x - ExpectedValue)) / (static_cast<T>(2) * StandardDeviation * StandardDeviation)) / (StandardDeviation * sqrt(static_cast<T>(6.28318530717958647692528676655900576)));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T gauss\n\t(\n\t\tvec<2, T, Q> const& Coord,\n\t\tvec<2, T, Q> const& ExpectedValue,\n\t\tvec<2, T, Q> const& StandardDeviation\n\t)\n\t{\n\t\tvec<2, T, Q> const Squared = ((Coord - ExpectedValue) * (Coord - ExpectedValue)) / (static_cast<T>(2) * StandardDeviation * StandardDeviation);\n\t\treturn exp(-(Squared.x + Squared.y));\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtx/gradient_paint.hpp",
    "content": "/// @ref gtx_gradient_paint\n/// @file glm/gtx/gradient_paint.hpp\n///\n/// @see core (dependence)\n/// @see gtx_optimum_pow (dependence)\n///\n/// @defgroup gtx_gradient_paint GLM_GTX_gradient_paint\n/// @ingroup gtx\n///\n/// Include <glm/gtx/gradient_paint.hpp> to use the features of this extension.\n///\n/// Functions that return the color of procedural gradient for specific coordinates.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/optimum_pow.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_gradient_paint is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_gradient_paint extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_gradient_paint\n\t/// @{\n\n\t/// Return a color from a radial gradient.\n\t/// @see - gtx_gradient_paint\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T radialGradient(\n\t\tvec<2, T, Q> const& Center,\n\t\tT const& Radius,\n\t\tvec<2, T, Q> const& Focal,\n\t\tvec<2, T, Q> const& Position);\n\n\t/// Return a color from a linear gradient.\n\t/// @see - gtx_gradient_paint\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T linearGradient(\n\t\tvec<2, T, Q> const& Point0,\n\t\tvec<2, T, Q> const& Point1,\n\t\tvec<2, T, Q> const& Position);\n\n\t/// @}\n}// namespace glm\n\n#include \"gradient_paint.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/gradient_paint.inl",
    "content": "/// @ref gtx_gradient_paint\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T radialGradient\n\t(\n\t\tvec<2, T, Q> const& Center,\n\t\tT const& Radius,\n\t\tvec<2, T, Q> const& Focal,\n\t\tvec<2, T, Q> const& Position\n\t)\n\t{\n\t\tvec<2, T, Q> F = Focal - Center;\n\t\tvec<2, T, Q> D = Position - Focal;\n\t\tT Radius2 = pow2(Radius);\n\t\tT Fx2 = pow2(F.x);\n\t\tT Fy2 = pow2(F.y);\n\n\t\tT Numerator = (D.x * F.x + D.y * F.y) + sqrt(Radius2 * (pow2(D.x) + pow2(D.y)) - pow2(D.x * F.y - D.y * F.x));\n\t\tT Denominator = Radius2 - (Fx2 + Fy2);\n\t\treturn Numerator / Denominator;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T linearGradient\n\t(\n\t\tvec<2, T, Q> const& Point0,\n\t\tvec<2, T, Q> const& Point1,\n\t\tvec<2, T, Q> const& Position\n\t)\n\t{\n\t\tvec<2, T, Q> Dist = Point1 - Point0;\n\t\treturn (Dist.x * (Position.x - Point0.x) + Dist.y * (Position.y - Point0.y)) / glm::dot(Dist, Dist);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/handed_coordinate_space.hpp",
    "content": "/// @ref gtx_handed_coordinate_space\n/// @file glm/gtx/handed_coordinate_space.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_handed_coordinate_space GLM_GTX_handed_coordinate_space\n/// @ingroup gtx\n///\n/// Include <glm/gtx/handed_coordinate_system.hpp> to use the features of this extension.\n///\n/// To know if a set of three basis vectors defines a right or left-handed coordinate system.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_handed_coordinate_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_handed_coordinate_space extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_handed_coordinate_space\n\t/// @{\n\n\t//! Return if a trihedron right handed or not.\n\t//! From GLM_GTX_handed_coordinate_space extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool rightHanded(\n\t\tvec<3, T, Q> const& tangent,\n\t\tvec<3, T, Q> const& binormal,\n\t\tvec<3, T, Q> const& normal);\n\n\t//! Return if a trihedron left handed or not.\n\t//! From GLM_GTX_handed_coordinate_space extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool leftHanded(\n\t\tvec<3, T, Q> const& tangent,\n\t\tvec<3, T, Q> const& binormal,\n\t\tvec<3, T, Q> const& normal);\n\n\t/// @}\n}// namespace glm\n\n#include \"handed_coordinate_space.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/handed_coordinate_space.inl",
    "content": "/// @ref gtx_handed_coordinate_space\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool rightHanded\n\t(\n\t\tvec<3, T, Q> const& tangent,\n\t\tvec<3, T, Q> const& binormal,\n\t\tvec<3, T, Q> const& normal\n\t)\n\t{\n\t\treturn dot(cross(normal, tangent), binormal) > T(0);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool leftHanded\n\t(\n\t\tvec<3, T, Q> const& tangent,\n\t\tvec<3, T, Q> const& binormal,\n\t\tvec<3, T, Q> const& normal\n\t)\n\t{\n\t\treturn dot(cross(normal, tangent), binormal) < T(0);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/hash.hpp",
    "content": "/// @ref gtx_hash\n/// @file glm/gtx/hash.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_hash GLM_GTX_hash\n/// @ingroup gtx\n///\n/// Include <glm/gtx/hash.hpp> to use the features of this extension.\n///\n/// Add std::hash support for glm types\n\n#pragma once\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_hash is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_hash extension included\")\n#\tendif\n#endif\n\n#include <functional>\n\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../gtc/vec1.hpp\"\n\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtx/dual_quaternion.hpp\"\n\n#include \"../mat2x2.hpp\"\n#include \"../mat2x3.hpp\"\n#include \"../mat2x4.hpp\"\n\n#include \"../mat3x2.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../mat3x4.hpp\"\n\n#include \"../mat4x2.hpp\"\n#include \"../mat4x3.hpp\"\n#include \"../mat4x4.hpp\"\n\n#if !GLM_HAS_CXX11_STL\n#\terror \"GLM_GTX_hash requires C++11 standard library support\"\n#endif\n\nnamespace std\n{\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::vec<1, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::vec<1, T, Q> const& v) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::vec<2, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::vec<2, T, Q> const& v) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::vec<3, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::vec<3, T, Q> const& v) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::vec<4, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::vec<4, T, Q> const& v) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::qua<T,Q>>\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::qua<T, Q> const& q) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::tdualquat<T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::tdualquat<T,Q> const& q) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<2, 2, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<2, 2, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<2, 3, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<2, 3, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<2, 4, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<2, 4, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<3, 2, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<3, 2, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<3, 3, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<3, 3, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<3, 4, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<3, 4, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<4, 2, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<4, 2, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<4, 3, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<4, 3, T,Q> const& m) const;\n\t};\n\n\ttemplate<typename T, glm::qualifier Q>\n\tstruct hash<glm::mat<4, 4, T,Q> >\n\t{\n\t\tGLM_FUNC_DECL size_t operator()(glm::mat<4, 4, T,Q> const& m) const;\n\t};\n} // namespace std\n\n#include \"hash.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/hash.inl",
    "content": "/// @ref gtx_hash\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_hash GLM_GTX_hash\n/// @ingroup gtx\n///\n/// @brief Add std::hash support for glm types\n///\n/// <glm/gtx/hash.inl> need to be included to use the features of this extension.\n\nnamespace glm {\nnamespace detail\n{\n\tGLM_INLINE void hash_combine(size_t &seed, size_t hash)\n\t{\n\t\thash += 0x9e3779b9 + (seed << 6) + (seed >> 2);\n\t\tseed ^= hash;\n\t}\n}}\n\nnamespace std\n{\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::vec<1, T, Q>>::operator()(glm::vec<1, T, Q> const& v) const\n\t{\n\t\thash<T> hasher;\n\t\treturn hasher(v.x);\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::vec<2, T, Q>>::operator()(glm::vec<2, T, Q> const& v) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<T> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(v.x));\n\t\tglm::detail::hash_combine(seed, hasher(v.y));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::vec<3, T, Q>>::operator()(glm::vec<3, T, Q> const& v) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<T> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(v.x));\n\t\tglm::detail::hash_combine(seed, hasher(v.y));\n\t\tglm::detail::hash_combine(seed, hasher(v.z));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::vec<4, T, Q>>::operator()(glm::vec<4, T, Q> const& v) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<T> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(v.x));\n\t\tglm::detail::hash_combine(seed, hasher(v.y));\n\t\tglm::detail::hash_combine(seed, hasher(v.z));\n\t\tglm::detail::hash_combine(seed, hasher(v.w));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::qua<T, Q>>::operator()(glm::qua<T,Q> const& q) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<T> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(q.x));\n\t\tglm::detail::hash_combine(seed, hasher(q.y));\n\t\tglm::detail::hash_combine(seed, hasher(q.z));\n\t\tglm::detail::hash_combine(seed, hasher(q.w));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::tdualquat<T, Q>>::operator()(glm::tdualquat<T, Q> const& q) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::qua<T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(q.real));\n\t\tglm::detail::hash_combine(seed, hasher(q.dual));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 2, T, Q>>::operator()(glm::mat<2, 2, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<2, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 3, T, Q>>::operator()(glm::mat<2, 3, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<3, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<2, 4, T, Q>>::operator()(glm::mat<2, 4, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<4, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 2, T, Q>>::operator()(glm::mat<3, 2, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<2, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 3, T, Q>>::operator()(glm::mat<3, 3, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<3, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<3, 4, T, Q>>::operator()(glm::mat<3, 4, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<4, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 2, T,Q>>::operator()(glm::mat<4, 2, T,Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<2, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\tglm::detail::hash_combine(seed, hasher(m[3]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 3, T,Q>>::operator()(glm::mat<4, 3, T,Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<3, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\tglm::detail::hash_combine(seed, hasher(m[3]));\n\t\treturn seed;\n\t}\n\n\ttemplate<typename T, glm::qualifier Q>\n\tGLM_FUNC_QUALIFIER size_t hash<glm::mat<4, 4, T,Q>>::operator()(glm::mat<4, 4, T, Q> const& m) const\n\t{\n\t\tsize_t seed = 0;\n\t\thash<glm::vec<4, T, Q>> hasher;\n\t\tglm::detail::hash_combine(seed, hasher(m[0]));\n\t\tglm::detail::hash_combine(seed, hasher(m[1]));\n\t\tglm::detail::hash_combine(seed, hasher(m[2]));\n\t\tglm::detail::hash_combine(seed, hasher(m[3]));\n\t\treturn seed;\n\t}\n}\n"
  },
  {
    "path": "libraries/glm/gtx/integer.hpp",
    "content": "/// @ref gtx_integer\n/// @file glm/gtx/integer.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_integer GLM_GTX_integer\n/// @ingroup gtx\n///\n/// Include <glm/gtx/integer.hpp> to use the features of this extension.\n///\n/// Add support for integer for core functions\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/integer.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_integer is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_integer extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_integer\n\t/// @{\n\n\t//! Returns x raised to the y power.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL int pow(int x, uint y);\n\n\t//! Returns the positive square root of x.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL int sqrt(int x);\n\n\t//! Returns the floor log2 of x.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL unsigned int floor_log2(unsigned int x);\n\n\t//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL int mod(int x, int y);\n\n\t//! Return the factorial value of a number (!12 max, integer only)\n\t//! From GLM_GTX_integer extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType factorial(genType const& x);\n\n\t//! 32bit signed integer.\n\t//! From GLM_GTX_integer extension.\n\ttypedef signed int\t\t\t\t\tsint;\n\n\t//! Returns x raised to the y power.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL uint pow(uint x, uint y);\n\n\t//! Returns the positive square root of x.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL uint sqrt(uint x);\n\n\t//! Modulus. Returns x - y * floor(x / y) for each component in x using the floating point value y.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL uint mod(uint x, uint y);\n\n\t//! Returns the number of leading zeros.\n\t//! From GLM_GTX_integer extension.\n\tGLM_FUNC_DECL uint nlz(uint x);\n\n\t/// @}\n}//namespace glm\n\n#include \"integer.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/integer.inl",
    "content": "/// @ref gtx_integer\n\nnamespace glm\n{\n\t// pow\n\tGLM_FUNC_QUALIFIER int pow(int x, uint y)\n\t{\n\t\tif(y == 0)\n\t\t\treturn x >= 0 ? 1 : -1;\n\n\t\tint result = x;\n\t\tfor(uint i = 1; i < y; ++i)\n\t\t\tresult *= x;\n\t\treturn result;\n\t}\n\n\t// sqrt: From Christopher J. Musial, An integer square root, Graphics Gems, 1990, page 387\n\tGLM_FUNC_QUALIFIER int sqrt(int x)\n\t{\n\t\tif(x <= 1) return x;\n\n\t\tint NextTrial = x >> 1;\n\t\tint CurrentAnswer;\n\n\t\tdo\n\t\t{\n\t\t\tCurrentAnswer = NextTrial;\n\t\t\tNextTrial = (NextTrial + x / NextTrial) >> 1;\n\t\t} while(NextTrial < CurrentAnswer);\n\n\t\treturn CurrentAnswer;\n\t}\n\n// Henry Gordon Dietz: http://aggregate.org/MAGIC/\nnamespace detail\n{\n\tGLM_FUNC_QUALIFIER unsigned int ones32(unsigned int x)\n\t{\n\t\t/* 32-bit recursive reduction using SWAR...\n\t\tbut first step is mapping 2-bit values\n\t\tinto sum of 2 1-bit values in sneaky way\n\t\t*/\n\t\tx -= ((x >> 1) & 0x55555555);\n\t\tx = (((x >> 2) & 0x33333333) + (x & 0x33333333));\n\t\tx = (((x >> 4) + x) & 0x0f0f0f0f);\n\t\tx += (x >> 8);\n\t\tx += (x >> 16);\n\t\treturn(x & 0x0000003f);\n\t}\n}//namespace detail\n\n\t// Henry Gordon Dietz: http://aggregate.org/MAGIC/\n/*\n\tGLM_FUNC_QUALIFIER unsigned int floor_log2(unsigned int x)\n\t{\n\t\tx |= (x >> 1);\n\t\tx |= (x >> 2);\n\t\tx |= (x >> 4);\n\t\tx |= (x >> 8);\n\t\tx |= (x >> 16);\n\n\t\treturn _detail::ones32(x) >> 1;\n\t}\n*/\n\t// mod\n\tGLM_FUNC_QUALIFIER int mod(int x, int y)\n\t{\n\t\treturn ((x % y) + y) % y;\n\t}\n\n\t// factorial (!12 max, integer only)\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType factorial(genType const& x)\n\t{\n\t\tgenType Temp = x;\n\t\tgenType Result;\n\t\tfor(Result = 1; Temp > 1; --Temp)\n\t\t\tResult *= Temp;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> factorial(\n\t\tvec<2, T, Q> const& x)\n\t{\n\t\treturn vec<2, T, Q>(\n\t\t\tfactorial(x.x),\n\t\t\tfactorial(x.y));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> factorial(\n\t\tvec<3, T, Q> const& x)\n\t{\n\t\treturn vec<3, T, Q>(\n\t\t\tfactorial(x.x),\n\t\t\tfactorial(x.y),\n\t\t\tfactorial(x.z));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> factorial(\n\t\tvec<4, T, Q> const& x)\n\t{\n\t\treturn vec<4, T, Q>(\n\t\t\tfactorial(x.x),\n\t\t\tfactorial(x.y),\n\t\t\tfactorial(x.z),\n\t\t\tfactorial(x.w));\n\t}\n\n\tGLM_FUNC_QUALIFIER uint pow(uint x, uint y)\n\t{\n\t\tif (y == 0)\n\t\t\treturn 1u;\n\n\t\tuint result = x;\n\t\tfor(uint i = 1; i < y; ++i)\n\t\t\tresult *= x;\n\t\treturn result;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint sqrt(uint x)\n\t{\n\t\tif(x <= 1) return x;\n\n\t\tuint NextTrial = x >> 1;\n\t\tuint CurrentAnswer;\n\n\t\tdo\n\t\t{\n\t\t\tCurrentAnswer = NextTrial;\n\t\t\tNextTrial = (NextTrial + x / NextTrial) >> 1;\n\t\t} while(NextTrial < CurrentAnswer);\n\n\t\treturn CurrentAnswer;\n\t}\n\n\tGLM_FUNC_QUALIFIER uint mod(uint x, uint y)\n\t{\n\t\treturn x - y * (x / y);\n\t}\n\n#if(GLM_COMPILER & (GLM_COMPILER_VC | GLM_COMPILER_GCC))\n\n\tGLM_FUNC_QUALIFIER unsigned int nlz(unsigned int x)\n\t{\n\t\treturn 31u - findMSB(x);\n\t}\n\n#else\n\n\t// Hackers Delight: http://www.hackersdelight.org/HDcode/nlz.c.txt\n\tGLM_FUNC_QUALIFIER unsigned int nlz(unsigned int x)\n\t{\n\t\tint y, m, n;\n\n\t\ty = -int(x >> 16);      // If left half of x is 0,\n\t\tm = (y >> 16) & 16;  // set n = 16.  If left half\n\t\tn = 16 - m;          // is nonzero, set n = 0 and\n\t\tx = x >> m;          // shift x right 16.\n\t\t\t\t\t\t\t// Now x is of the form 0000xxxx.\n\t\ty = x - 0x100;       // If positions 8-15 are 0,\n\t\tm = (y >> 16) & 8;   // add 8 to n and shift x left 8.\n\t\tn = n + m;\n\t\tx = x << m;\n\n\t\ty = x - 0x1000;      // If positions 12-15 are 0,\n\t\tm = (y >> 16) & 4;   // add 4 to n and shift x left 4.\n\t\tn = n + m;\n\t\tx = x << m;\n\n\t\ty = x - 0x4000;      // If positions 14-15 are 0,\n\t\tm = (y >> 16) & 2;   // add 2 to n and shift x left 2.\n\t\tn = n + m;\n\t\tx = x << m;\n\n\t\ty = x >> 14;         // Set y = 0, 1, 2, or 3.\n\t\tm = y & ~(y >> 1);   // Set m = 0, 1, 2, or 2 resp.\n\t\treturn unsigned(n + 2 - m);\n\t}\n\n#endif//(GLM_COMPILER)\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/intersect.hpp",
    "content": "/// @ref gtx_intersect\n/// @file glm/gtx/intersect.hpp\n///\n/// @see core (dependence)\n/// @see gtx_closest_point (dependence)\n///\n/// @defgroup gtx_intersect GLM_GTX_intersect\n/// @ingroup gtx\n///\n/// Include <glm/gtx/intersect.hpp> to use the features of this extension.\n///\n/// Add intersection functions\n\n#pragma once\n\n// Dependency:\n#include <cfloat>\n#include <limits>\n#include \"../glm.hpp\"\n#include \"../geometric.hpp\"\n#include \"../gtx/closest_point.hpp\"\n#include \"../gtx/vector_query.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_closest_point extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_intersect\n\t/// @{\n\n\t//! Compute the intersection of a ray and a plane.\n\t//! Ray direction and plane normal must be unit length.\n\t//! From GLM_GTX_intersect extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool intersectRayPlane(\n\t\tgenType const& orig, genType const& dir,\n\t\tgenType const& planeOrig, genType const& planeNormal,\n\t\ttypename genType::value_type & intersectionDistance);\n\n\t//! Compute the intersection of a ray and a triangle.\n\t/// Based om Tomas Möller implementation http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/raytri/\n\t//! From GLM_GTX_intersect extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool intersectRayTriangle(\n\t\tvec<3, T, Q> const& orig, vec<3, T, Q> const& dir,\n\t\tvec<3, T, Q> const& v0, vec<3, T, Q> const& v1, vec<3, T, Q> const& v2,\n\t\tvec<2, T, Q>& baryPosition, T& distance);\n\n\t//! Compute the intersection of a line and a triangle.\n\t//! From GLM_GTX_intersect extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool intersectLineTriangle(\n\t\tgenType const& orig, genType const& dir,\n\t\tgenType const& vert0, genType const& vert1, genType const& vert2,\n\t\tgenType & position);\n\n\t//! Compute the intersection distance of a ray and a sphere.\n\t//! The ray direction vector is unit length.\n\t//! From GLM_GTX_intersect extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool intersectRaySphere(\n\t\tgenType const& rayStarting, genType const& rayNormalizedDirection,\n\t\tgenType const& sphereCenter, typename genType::value_type const sphereRadiusSquered,\n\t\ttypename genType::value_type & intersectionDistance);\n\n\t//! Compute the intersection of a ray and a sphere.\n\t//! From GLM_GTX_intersect extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool intersectRaySphere(\n\t\tgenType const& rayStarting, genType const& rayNormalizedDirection,\n\t\tgenType const& sphereCenter, const typename genType::value_type sphereRadius,\n\t\tgenType & intersectionPosition, genType & intersectionNormal);\n\n\t//! Compute the intersection of a line and a sphere.\n\t//! From GLM_GTX_intersect extension\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL bool intersectLineSphere(\n\t\tgenType const& point0, genType const& point1,\n\t\tgenType const& sphereCenter, typename genType::value_type sphereRadius,\n\t\tgenType & intersectionPosition1, genType & intersectionNormal1,\n\t\tgenType & intersectionPosition2 = genType(), genType & intersectionNormal2 = genType());\n\n\t/// @}\n}//namespace glm\n\n#include \"intersect.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/intersect.inl",
    "content": "/// @ref gtx_intersect\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool intersectRayPlane\n\t(\n\t\tgenType const& orig, genType const& dir,\n\t\tgenType const& planeOrig, genType const& planeNormal,\n\t\ttypename genType::value_type & intersectionDistance\n\t)\n\t{\n\t\ttypename genType::value_type d = glm::dot(dir, planeNormal);\n\t\ttypename genType::value_type Epsilon = std::numeric_limits<typename genType::value_type>::epsilon();\n\n\t\tif(glm::abs(d) > Epsilon)  // if dir and planeNormal are not perpendicular\n\t\t{\n\t\t\ttypename genType::value_type const tmp_intersectionDistance = \tglm::dot(planeOrig - orig, planeNormal) / d;\n\t\t\tif (tmp_intersectionDistance > static_cast<typename genType::value_type>(0)) { // allow only intersections\n\t\t\t\tintersectionDistance = tmp_intersectionDistance;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool intersectRayTriangle\n\t(\n\t\tvec<3, T, Q> const& orig, vec<3, T, Q> const& dir,\n\t\tvec<3, T, Q> const& vert0, vec<3, T, Q> const& vert1, vec<3, T, Q> const& vert2,\n\t\tvec<2, T, Q>& baryPosition, T& distance\n\t)\n\t{\n\t\t// find vectors for two edges sharing vert0\n\t\tvec<3, T, Q> const edge1 = vert1 - vert0;\n\t\tvec<3, T, Q> const edge2 = vert2 - vert0;\n\n\t\t// begin calculating determinant - also used to calculate U parameter\n\t\tvec<3, T, Q> const p = glm::cross(dir, edge2);\n\n\t\t// if determinant is near zero, ray lies in plane of triangle\n\t\tT const det = glm::dot(edge1, p);\n\n\t\tvec<3, T, Q> Perpendicular(0);\n\n\t\tif(det > std::numeric_limits<T>::epsilon())\n\t\t{\n\t\t\t// calculate distance from vert0 to ray origin\n\t\t\tvec<3, T, Q> const dist = orig - vert0;\n\n\t\t\t// calculate U parameter and test bounds\n\t\t\tbaryPosition.x = glm::dot(dist, p);\n\t\t\tif(baryPosition.x < static_cast<T>(0) || baryPosition.x > det)\n\t\t\t\treturn false;\n\n\t\t\t// prepare to test V parameter\n\t\t\tPerpendicular = glm::cross(dist, edge1);\n\n\t\t\t// calculate V parameter and test bounds\n\t\t\tbaryPosition.y = glm::dot(dir, Perpendicular);\n\t\t\tif((baryPosition.y < static_cast<T>(0)) || ((baryPosition.x + baryPosition.y) > det))\n\t\t\t\treturn false;\n\t\t}\n\t\telse if(det < -std::numeric_limits<T>::epsilon())\n\t\t{\n\t\t\t// calculate distance from vert0 to ray origin\n\t\t\tvec<3, T, Q> const dist = orig - vert0;\n\n\t\t\t// calculate U parameter and test bounds\n\t\t\tbaryPosition.x = glm::dot(dist, p);\n\t\t\tif((baryPosition.x > static_cast<T>(0)) || (baryPosition.x < det))\n\t\t\t\treturn false;\n\n\t\t\t// prepare to test V parameter\n\t\t\tPerpendicular = glm::cross(dist, edge1);\n\n\t\t\t// calculate V parameter and test bounds\n\t\t\tbaryPosition.y = glm::dot(dir, Perpendicular);\n\t\t\tif((baryPosition.y > static_cast<T>(0)) || (baryPosition.x + baryPosition.y < det))\n\t\t\t\treturn false;\n\t\t}\n\t\telse\n\t\t\treturn false; // ray is parallel to the plane of the triangle\n\n\t\tT inv_det = static_cast<T>(1) / det;\n\n\t\t// calculate distance, ray intersects triangle\n\t\tdistance = glm::dot(edge2, Perpendicular) * inv_det;\n\t\tbaryPosition *= inv_det;\n\n\t\treturn true;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool intersectLineTriangle\n\t(\n\t\tgenType const& orig, genType const& dir,\n\t\tgenType const& vert0, genType const& vert1, genType const& vert2,\n\t\tgenType & position\n\t)\n\t{\n\t\ttypename genType::value_type Epsilon = std::numeric_limits<typename genType::value_type>::epsilon();\n\n\t\tgenType edge1 = vert1 - vert0;\n\t\tgenType edge2 = vert2 - vert0;\n\n\t\tgenType Perpendicular = cross(dir, edge2);\n\n\t\tfloat det = dot(edge1, Perpendicular);\n\n\t\tif (det > -Epsilon && det < Epsilon)\n\t\t\treturn false;\n\t\ttypename genType::value_type inv_det = typename genType::value_type(1) / det;\n\n\t\tgenType Tengant = orig - vert0;\n\n\t\tposition.y = dot(Tengant, Perpendicular) * inv_det;\n\t\tif (position.y < typename genType::value_type(0) || position.y > typename genType::value_type(1))\n\t\t\treturn false;\n\n\t\tgenType Cotengant = cross(Tengant, edge1);\n\n\t\tposition.z = dot(dir, Cotengant) * inv_det;\n\t\tif (position.z < typename genType::value_type(0) || position.y + position.z > typename genType::value_type(1))\n\t\t\treturn false;\n\n\t\tposition.x = dot(edge2, Cotengant) * inv_det;\n\n\t\treturn true;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool intersectRaySphere\n\t(\n\t\tgenType const& rayStarting, genType const& rayNormalizedDirection,\n\t\tgenType const& sphereCenter, const typename genType::value_type sphereRadiusSquered,\n\t\ttypename genType::value_type & intersectionDistance\n\t)\n\t{\n\t\ttypename genType::value_type Epsilon = std::numeric_limits<typename genType::value_type>::epsilon();\n\t\tgenType diff = sphereCenter - rayStarting;\n\t\ttypename genType::value_type t0 = dot(diff, rayNormalizedDirection);\n\t\ttypename genType::value_type dSquared = dot(diff, diff) - t0 * t0;\n\t\tif( dSquared > sphereRadiusSquered )\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\ttypename genType::value_type t1 = sqrt( sphereRadiusSquered - dSquared );\n\t\tintersectionDistance = t0 > t1 + Epsilon ? t0 - t1 : t0 + t1;\n\t\treturn intersectionDistance > Epsilon;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool intersectRaySphere\n\t(\n\t\tgenType const& rayStarting, genType const& rayNormalizedDirection,\n\t\tgenType const& sphereCenter, const typename genType::value_type sphereRadius,\n\t\tgenType & intersectionPosition, genType & intersectionNormal\n\t)\n\t{\n\t\ttypename genType::value_type distance;\n\t\tif( intersectRaySphere( rayStarting, rayNormalizedDirection, sphereCenter, sphereRadius * sphereRadius, distance ) )\n\t\t{\n\t\t\tintersectionPosition = rayStarting + rayNormalizedDirection * distance;\n\t\t\tintersectionNormal = (intersectionPosition - sphereCenter) / sphereRadius;\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER bool intersectLineSphere\n\t(\n\t\tgenType const& point0, genType const& point1,\n\t\tgenType const& sphereCenter, typename genType::value_type sphereRadius,\n\t\tgenType & intersectionPoint1, genType & intersectionNormal1,\n\t\tgenType & intersectionPoint2, genType & intersectionNormal2\n\t)\n\t{\n\t\ttypename genType::value_type Epsilon = std::numeric_limits<typename genType::value_type>::epsilon();\n\t\tgenType dir = normalize(point1 - point0);\n\t\tgenType diff = sphereCenter - point0;\n\t\ttypename genType::value_type t0 = dot(diff, dir);\n\t\ttypename genType::value_type dSquared = dot(diff, diff) - t0 * t0;\n\t\tif( dSquared > sphereRadius * sphereRadius )\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t\ttypename genType::value_type t1 = sqrt( sphereRadius * sphereRadius - dSquared );\n\t\tif( t0 < t1 + Epsilon )\n\t\t\tt1 = -t1;\n\t\tintersectionPoint1 = point0 + dir * (t0 - t1);\n\t\tintersectionNormal1 = (intersectionPoint1 - sphereCenter) / sphereRadius;\n\t\tintersectionPoint2 = point0 + dir * (t0 + t1);\n\t\tintersectionNormal2 = (intersectionPoint2 - sphereCenter) / sphereRadius;\n\t\treturn true;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/io.hpp",
    "content": "/// @ref gtx_io\n/// @file glm/gtx/io.hpp\n/// @author Jan P Springer (regnirpsj@gmail.com)\n///\n/// @see core (dependence)\n/// @see gtc_matrix_access (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtx_io GLM_GTX_io\n/// @ingroup gtx\n///\n/// Include <glm/gtx/io.hpp> to use the features of this extension.\n///\n/// std::[w]ostream support for glm types\n///\n/// std::[w]ostream support for glm types + qualifier/width/etc. manipulators\n/// based on howard hinnant's std::chrono io proposal\n/// [http://home.roadrunner.com/~hinnant/bloomington/chrono_io.html]\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/quaternion.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_io is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_io extension included\")\n#\tendif\n#endif\n\n#include <iosfwd>  // std::basic_ostream<> (fwd)\n#include <locale>  // std::locale, std::locale::facet, std::locale::id\n#include <utility> // std::pair<>\n\nnamespace glm\n{\n\t/// @addtogroup gtx_io\n\t/// @{\n\n\tnamespace io\n\t{\n\t\tenum order_type { column_major, row_major};\n\n\t\ttemplate<typename CTy>\n\t\tclass format_punct : public std::locale::facet\n\t\t{\n\t\t\ttypedef CTy char_type;\n\n\t\tpublic:\n\n\t\t\tstatic std::locale::id id;\n\n\t\t\tbool       formatted;\n\t\t\tunsigned   precision;\n\t\t\tunsigned   width;\n\t\t\tchar_type  separator;\n\t\t\tchar_type  delim_left;\n\t\t\tchar_type  delim_right;\n\t\t\tchar_type  space;\n\t\t\tchar_type  newline;\n\t\t\torder_type order;\n\n\t\t\tGLM_FUNC_DECL explicit format_punct(size_t a = 0);\n\t\t\tGLM_FUNC_DECL explicit format_punct(format_punct const&);\n\t\t};\n\n\t\ttemplate<typename CTy, typename CTr = std::char_traits<CTy> >\n\t\tclass basic_state_saver {\n\n\t\tpublic:\n\n\t\t\tGLM_FUNC_DECL explicit basic_state_saver(std::basic_ios<CTy,CTr>&);\n\t\t\tGLM_FUNC_DECL ~basic_state_saver();\n\n\t\tprivate:\n\n\t\t\ttypedef ::std::basic_ios<CTy,CTr>      state_type;\n\t\t\ttypedef typename state_type::char_type char_type;\n\t\t\ttypedef ::std::ios_base::fmtflags      flags_type;\n\t\t\ttypedef ::std::streamsize              streamsize_type;\n\t\t\ttypedef ::std::locale const            locale_type;\n\n\t\t\tstate_type&     state_;\n\t\t\tflags_type      flags_;\n\t\t\tstreamsize_type precision_;\n\t\t\tstreamsize_type width_;\n\t\t\tchar_type       fill_;\n\t\t\tlocale_type     locale_;\n\n\t\t\tGLM_FUNC_DECL basic_state_saver& operator=(basic_state_saver const&);\n\t\t};\n\n\t\ttypedef basic_state_saver<char>     state_saver;\n\t\ttypedef basic_state_saver<wchar_t> wstate_saver;\n\n\t\ttemplate<typename CTy, typename CTr = std::char_traits<CTy> >\n\t\tclass basic_format_saver\n\t\t{\n\t\tpublic:\n\n\t\t\tGLM_FUNC_DECL explicit basic_format_saver(std::basic_ios<CTy,CTr>&);\n\t\t\tGLM_FUNC_DECL ~basic_format_saver();\n\n\t\tprivate:\n\n\t\t\tbasic_state_saver<CTy> const bss_;\n\n\t\t\tGLM_FUNC_DECL basic_format_saver& operator=(basic_format_saver const&);\n\t\t};\n\n\t\ttypedef basic_format_saver<char>     format_saver;\n\t\ttypedef basic_format_saver<wchar_t> wformat_saver;\n\n\t\tstruct precision\n\t\t{\n\t\t\tunsigned value;\n\n\t\t\tGLM_FUNC_DECL explicit precision(unsigned);\n\t\t};\n\n\t\tstruct width\n\t\t{\n\t\t\tunsigned value;\n\n\t\t\tGLM_FUNC_DECL explicit width(unsigned);\n\t\t};\n\n\t\ttemplate<typename CTy>\n\t\tstruct delimeter\n\t\t{\n\t\t\tCTy value[3];\n\n\t\t\tGLM_FUNC_DECL explicit delimeter(CTy /* left */, CTy /* right */, CTy /* separator */ = ',');\n\t\t};\n\n\t\tstruct order\n\t\t{\n\t\t\torder_type value;\n\n\t\t\tGLM_FUNC_DECL explicit order(order_type);\n\t\t};\n\n\t\t// functions, inlined (inline)\n\n\t\ttemplate<typename FTy, typename CTy, typename CTr>\n\t\tFTy const& get_facet(std::basic_ios<CTy,CTr>&);\n\t\ttemplate<typename FTy, typename CTy, typename CTr>\n\t\tstd::basic_ios<CTy,CTr>& formatted(std::basic_ios<CTy,CTr>&);\n\t\ttemplate<typename FTy, typename CTy, typename CTr>\n\t\tstd::basic_ios<CTy,CTr>& unformattet(std::basic_ios<CTy,CTr>&);\n\n\t\ttemplate<typename CTy, typename CTr>\n\t\tstd::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, precision const&);\n\t\ttemplate<typename CTy, typename CTr>\n\t\tstd::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, width const&);\n\t\ttemplate<typename CTy, typename CTr>\n\t\tstd::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, delimeter<CTy> const&);\n\t\ttemplate<typename CTy, typename CTr>\n\t\tstd::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, order const&);\n\t}//namespace io\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, qua<T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<1, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<2, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<3, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<4, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 2, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 3, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 4, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 2, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 3, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 4, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 2, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 3, T, Q> const&);\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 4, T, Q> const&);\n\n  template<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_DECL std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr> &,\n                                                         std::pair<mat<4, 4, T, Q> const, mat<4, 4, T, Q> const> const&);\n\n\t/// @}\n}//namespace glm\n\n#include \"io.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/io.inl",
    "content": "/// @ref gtx_io\n/// @author Jan P Springer (regnirpsj@gmail.com)\n\n#include <iomanip>                  // std::fixed, std::setfill<>, std::setprecision, std::right, std::setw\n#include <ostream>                  // std::basic_ostream<>\n#include \"../gtc/matrix_access.hpp\" // glm::col, glm::row\n#include \"../gtx/type_trait.hpp\"    // glm::type<>\n\nnamespace glm{\nnamespace io\n{\n\ttemplate<typename CTy>\n\tGLM_FUNC_QUALIFIER format_punct<CTy>::format_punct(size_t a)\n\t\t: std::locale::facet(a)\n\t\t, formatted(true)\n\t\t, precision(3)\n\t\t, width(1 + 4 + 1 + precision)\n\t\t, separator(',')\n\t\t, delim_left('[')\n\t\t, delim_right(']')\n\t\t, space(' ')\n\t\t, newline('\\n')\n\t\t, order(column_major)\n\t{}\n\n\ttemplate<typename CTy>\n\tGLM_FUNC_QUALIFIER format_punct<CTy>::format_punct(format_punct const& a)\n\t\t: std::locale::facet(0)\n\t\t, formatted(a.formatted)\n\t\t, precision(a.precision)\n\t\t, width(a.width)\n\t\t, separator(a.separator)\n\t\t, delim_left(a.delim_left)\n\t\t, delim_right(a.delim_right)\n\t\t, space(a.space)\n\t\t, newline(a.newline)\n\t\t, order(a.order)\n\t{}\n\n\ttemplate<typename CTy> std::locale::id format_punct<CTy>::id;\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER basic_state_saver<CTy, CTr>::basic_state_saver(std::basic_ios<CTy, CTr>& a)\n\t\t: state_(a)\n\t\t, flags_(a.flags())\n\t\t, precision_(a.precision())\n\t\t, width_(a.width())\n\t\t, fill_(a.fill())\n\t\t, locale_(a.getloc())\n\t{}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER basic_state_saver<CTy, CTr>::~basic_state_saver()\n\t{\n\t\tstate_.imbue(locale_);\n\t\tstate_.fill(fill_);\n\t\tstate_.width(width_);\n\t\tstate_.precision(precision_);\n\t\tstate_.flags(flags_);\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER basic_format_saver<CTy, CTr>::basic_format_saver(std::basic_ios<CTy, CTr>& a)\n\t\t: bss_(a)\n\t{\n\t\ta.imbue(std::locale(a.getloc(), new format_punct<CTy>(get_facet<format_punct<CTy> >(a))));\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER\n\tbasic_format_saver<CTy, CTr>::~basic_format_saver()\n\t{}\n\n\tGLM_FUNC_QUALIFIER precision::precision(unsigned a)\n\t\t: value(a)\n\t{}\n\n\tGLM_FUNC_QUALIFIER width::width(unsigned a)\n\t\t: value(a)\n\t{}\n\n\ttemplate<typename CTy>\n\tGLM_FUNC_QUALIFIER delimeter<CTy>::delimeter(CTy a, CTy b, CTy c)\n\t\t: value()\n\t{\n\t\tvalue[0] = a;\n\t\tvalue[1] = b;\n\t\tvalue[2] = c;\n\t}\n\n\tGLM_FUNC_QUALIFIER order::order(order_type a)\n\t\t: value(a)\n\t{}\n\n\ttemplate<typename FTy, typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER FTy const& get_facet(std::basic_ios<CTy, CTr>& ios)\n\t{\n\t\tif(!std::has_facet<FTy>(ios.getloc()))\n\t\t\tios.imbue(std::locale(ios.getloc(), new FTy));\n\n\t\treturn std::use_facet<FTy>(ios.getloc());\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER std::basic_ios<CTy, CTr>& formatted(std::basic_ios<CTy, CTr>& ios)\n\t{\n\t\tconst_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(ios)).formatted = true;\n\t\treturn ios;\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER std::basic_ios<CTy, CTr>& unformatted(std::basic_ios<CTy, CTr>& ios)\n\t{\n\t\tconst_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(ios)).formatted = false;\n\t\treturn ios;\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>& os, precision const& a)\n\t{\n\t\tconst_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(os)).precision = a.value;\n\t\treturn os;\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>& os, width const& a)\n\t{\n\t\tconst_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(os)).width = a.value;\n\t\treturn os;\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>& os, delimeter<CTy> const& a)\n\t{\n\t\tformat_punct<CTy> & fmt(const_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(os)));\n\n\t\tfmt.delim_left  = a.value[0];\n\t\tfmt.delim_right = a.value[1];\n\t\tfmt.separator   = a.value[2];\n\n\t\treturn os;\n\t}\n\n\ttemplate<typename CTy, typename CTr>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>& os, order const& a)\n\t{\n\t\tconst_cast<format_punct<CTy>&>(get_facet<format_punct<CTy> >(os)).order = a.value;\n\t\treturn os;\n\t}\n} // namespace io\n\nnamespace detail\n{\n\ttemplate<typename CTy, typename CTr, typename V>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>&\n\tprint_vector_on(std::basic_ostream<CTy, CTr>& os, V const& a)\n\t{\n\t\ttypename std::basic_ostream<CTy, CTr>::sentry const cerberus(os);\n\n\t\tif(cerberus)\n\t\t{\n\t\t\tio::format_punct<CTy> const& fmt(io::get_facet<io::format_punct<CTy> >(os));\n\n\t\t\tlength_t const& components(type<V>::components);\n\n\t\t\tif(fmt.formatted)\n\t\t\t{\n\t\t\t\tio::basic_state_saver<CTy> const bss(os);\n\n\t\t\t\tos << std::fixed << std::right << std::setprecision(fmt.precision) << std::setfill(fmt.space) << fmt.delim_left;\n\n\t\t\t\tfor(length_t i(0); i < components; ++i)\n\t\t\t\t{\n\t\t\t\t\tos << std::setw(fmt.width) << a[i];\n\t\t\t\t\tif(components-1 != i)\n\t\t\t\t\t\tos << fmt.separator;\n\t\t\t\t}\n\n\t\t\t\tos << fmt.delim_right;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor(length_t i(0); i < components; ++i)\n\t\t\t\t{\n\t\t\t\t\tos << a[i];\n\n\t\t\t\t\tif(components-1 != i)\n\t\t\t\t\t\tos << fmt.space;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn os;\n\t}\n}//namespace detail\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, qua<T, Q> const& a)\n\t{\n\t\treturn detail::print_vector_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, vec<1, T, Q> const& a)\n\t{\n\t\treturn detail::print_vector_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, vec<2, T, Q> const& a)\n\t{\n\t\treturn detail::print_vector_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, vec<3, T, Q> const& a)\n\t{\n\t\treturn detail::print_vector_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, vec<4, T, Q> const& a)\n\t{\n\t\treturn detail::print_vector_on(os, a);\n\t}\n\nnamespace detail\n{\n\ttemplate<typename CTy, typename CTr, template<length_t, length_t, typename, qualifier> class M, length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& print_matrix_on(std::basic_ostream<CTy, CTr>& os, M<C, R, T, Q> const& a)\n\t{\n\t\ttypename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);\n\n\t\tif(cerberus)\n\t\t{\n\t\t\tio::format_punct<CTy> const& fmt(io::get_facet<io::format_punct<CTy> >(os));\n\n\t\t\tlength_t const& cols(type<M<C, R, T, Q> >::cols);\n\t\t\tlength_t const& rows(type<M<C, R, T, Q> >::rows);\n\n\t\t\tif(fmt.formatted)\n\t\t\t{\n\t\t\t\tos << fmt.newline << fmt.delim_left;\n\n\t\t\t\tswitch(fmt.order)\n\t\t\t\t{\n\t\t\t\t\tcase io::column_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(length_t i(0); i < rows; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (0 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\n\t\t\t\t\t\t\tos << row(a, i);\n\n\t\t\t\t\t\t\tif(rows-1 != i)\n\t\t\t\t\t\t\t\tos << fmt.newline;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase io::row_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(length_t i(0); i < cols; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(0 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\n\t\t\t\t\t\t\tos << column(a, i);\n\n\t\t\t\t\t\t\tif(cols-1 != i)\n\t\t\t\t\t\t\t\tos << fmt.newline;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tos << fmt.delim_right;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tswitch (fmt.order)\n\t\t\t\t{\n\t\t\t\t\tcase io::column_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(length_t i(0); i < cols; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tos << column(a, i);\n\n\t\t\t\t\t\t\tif(cols - 1 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase io::row_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor (length_t i(0); i < rows; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tos << row(a, i);\n\n\t\t\t\t\t\t\tif (rows-1 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn os;\n\t}\n}//namespace detail\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, mat<2, 2, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, mat<2, 3, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, mat<2, 4, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, mat<3, 2, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>& os, mat<3, 3, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr>& os, mat<3, 4, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr>& os, mat<4, 2, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr>& os, mat<4, 3, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr>& os, mat<4, 4, T, Q> const& a)\n\t{\n\t\treturn detail::print_matrix_on(os, a);\n\t}\n\nnamespace detail\n{\n\ttemplate<typename CTy, typename CTr, template<length_t, length_t, typename, qualifier> class M, length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& print_matrix_pair_on(std::basic_ostream<CTy, CTr>& os, std::pair<M<C, R, T, Q> const, M<C, R, T, Q> const> const& a)\n\t{\n\t\ttypename std::basic_ostream<CTy,CTr>::sentry const cerberus(os);\n\n\t\tif(cerberus)\n\t\t{\n\t\t\tio::format_punct<CTy> const& fmt(io::get_facet<io::format_punct<CTy> >(os));\n\t\t\tM<C, R, T, Q> const& ml(a.first);\n\t\t\tM<C, R, T, Q> const& mr(a.second);\n\t\t\tlength_t const& cols(type<M<C, R, T, Q> >::cols);\n\t\t\tlength_t const& rows(type<M<C, R, T, Q> >::rows);\n\n\t\t\tif(fmt.formatted)\n\t\t\t{\n\t\t\t\tos << fmt.newline << fmt.delim_left;\n\n\t\t\t\tswitch(fmt.order)\n\t\t\t\t{\n\t\t\t\t\tcase io::column_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(length_t i(0); i < rows; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(0 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\n\t\t\t\t\t\t\tos << row(ml, i) << ((rows-1 != i) ? fmt.space : fmt.delim_right) << fmt.space << ((0 != i) ? fmt.space : fmt.delim_left) << row(mr, i);\n\n\t\t\t\t\t\t\tif(rows-1 != i)\n\t\t\t\t\t\t\t\tos << fmt.newline;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t\tcase io::row_major:\n\t\t\t\t\t{\n\t\t\t\t\t\tfor(length_t i(0); i < cols; ++i)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif(0 != i)\n\t\t\t\t\t\t\t\tos << fmt.space;\n\n\t\t\t\t\t\t\tos << column(ml, i) << ((cols-1 != i) ? fmt.space : fmt.delim_right) << fmt.space << ((0 != i) ? fmt.space : fmt.delim_left) << column(mr, i);\n\n\t\t\t\t\t\t\tif(cols-1 != i)\n\t\t\t\t\t\t\t\tos << fmt.newline;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tos << fmt.delim_right;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tos << ml << fmt.space << mr;\n\t\t\t}\n\t\t}\n\n\t\treturn os;\n\t}\n}//namespace detail\n\n\ttemplate<typename CTy, typename CTr, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER std::basic_ostream<CTy, CTr>& operator<<(\n\t\tstd::basic_ostream<CTy, CTr> & os,\n\t\tstd::pair<mat<4, 4, T, Q> const,\n\t\tmat<4, 4, T, Q> const> const& a)\n\t{\n\t\treturn detail::print_matrix_pair_on(os, a);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/log_base.hpp",
    "content": "/// @ref gtx_log_base\n/// @file glm/gtx/log_base.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_log_base GLM_GTX_log_base\n/// @ingroup gtx\n///\n/// Include <glm/gtx/log_base.hpp> to use the features of this extension.\n///\n/// Logarithm for any base. base can be a vector or a scalar.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_log_base is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_log_base extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_log_base\n\t/// @{\n\n\t/// Logarithm for any base.\n\t/// From GLM_GTX_log_base.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType log(\n\t\tgenType const& x,\n\t\tgenType const& base);\n\n\t/// Logarithm for any base.\n\t/// From GLM_GTX_log_base.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> sign(\n\t\tvec<L, T, Q> const& x,\n\t\tvec<L, T, Q> const& base);\n\n\t/// @}\n}//namespace glm\n\n#include \"log_base.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/log_base.inl",
    "content": "/// @ref gtx_log_base\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType log(genType const& x, genType const& base)\n\t{\n\t\treturn glm::log(x) / glm::log(base);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> log(vec<L, T, Q> const& x, vec<L, T, Q> const& base)\n\t{\n\t\treturn glm::log(x) / glm::log(base);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_cross_product.hpp",
    "content": "/// @ref gtx_matrix_cross_product\n/// @file glm/gtx/matrix_cross_product.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_matrix_cross_product GLM_GTX_matrix_cross_product\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_cross_product.hpp> to use the features of this extension.\n///\n/// Build cross product matrices\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_cross_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_cross_product extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_cross_product\n\t/// @{\n\n\t//! Build a cross product matrix.\n\t//! From GLM_GTX_matrix_cross_product extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> matrixCross3(\n\t\tvec<3, T, Q> const& x);\n\n\t//! Build a cross product matrix.\n\t//! From GLM_GTX_matrix_cross_product extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> matrixCross4(\n\t\tvec<3, T, Q> const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_cross_product.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_cross_product.inl",
    "content": "/// @ref gtx_matrix_cross_product\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> matrixCross3\n\t(\n\t\tvec<3, T, Q> const& x\n\t)\n\t{\n\t\tmat<3, 3, T, Q> Result(T(0));\n\t\tResult[0][1] = x.z;\n\t\tResult[1][0] = -x.z;\n\t\tResult[0][2] = -x.y;\n\t\tResult[2][0] = x.y;\n\t\tResult[1][2] = x.x;\n\t\tResult[2][1] = -x.x;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> matrixCross4\n\t(\n\t\tvec<3, T, Q> const& x\n\t)\n\t{\n\t\tmat<4, 4, T, Q> Result(T(0));\n\t\tResult[0][1] = x.z;\n\t\tResult[1][0] = -x.z;\n\t\tResult[0][2] = -x.y;\n\t\tResult[2][0] = x.y;\n\t\tResult[1][2] = x.x;\n\t\tResult[2][1] = -x.x;\n\t\treturn Result;\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_decompose.hpp",
    "content": "/// @ref gtx_matrix_decompose\n/// @file glm/gtx/matrix_decompose.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_matrix_decompose GLM_GTX_matrix_decompose\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_decompose.hpp> to use the features of this extension.\n///\n/// Decomposes a model matrix to translations, rotation and scale components\n\n#pragma once\n\n// Dependencies\n#include \"../mat4x4.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../geometric.hpp\"\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtc/matrix_transform.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_decompose is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_decompose extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_decompose\n\t/// @{\n\n\t/// Decomposes a model matrix to translations, rotation and scale components\n\t/// @see gtx_matrix_decompose\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool decompose(\n\t\tmat<4, 4, T, Q> const& modelMatrix,\n\t\tvec<3, T, Q> & scale, qua<T, Q> & orientation, vec<3, T, Q> & translation, vec<3, T, Q> & skew, vec<4, T, Q> & perspective);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_decompose.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_decompose.inl",
    "content": "/// @ref gtx_matrix_decompose\n\n#include \"../gtc/constants.hpp\"\n#include \"../gtc/epsilon.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\t/// Make a linear combination of two vectors and return the result.\n\t// result = (a * ascl) + (b * bscl)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> combine(\n\t\tvec<3, T, Q> const& a,\n\t\tvec<3, T, Q> const& b,\n\t\tT ascl, T bscl)\n\t{\n\t\treturn (a * ascl) + (b * bscl);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> scale(vec<3, T, Q> const& v, T desiredLength)\n\t{\n\t\treturn v * desiredLength / length(v);\n\t}\n}//namespace detail\n\n\t// Matrix decompose\n\t// http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n\t// Decomposes the mode matrix to translations,rotation scale components\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool decompose(mat<4, 4, T, Q> const& ModelMatrix, vec<3, T, Q> & Scale, qua<T, Q> & Orientation, vec<3, T, Q> & Translation, vec<3, T, Q> & Skew, vec<4, T, Q> & Perspective)\n\t{\n\t\tmat<4, 4, T, Q> LocalMatrix(ModelMatrix);\n\n\t\t// Normalize the matrix.\n\t\tif(epsilonEqual(LocalMatrix[3][3], static_cast<T>(0), epsilon<T>()))\n\t\t\treturn false;\n\n\t\tfor(length_t i = 0; i < 4; ++i)\n\t\tfor(length_t j = 0; j < 4; ++j)\n\t\t\tLocalMatrix[i][j] /= LocalMatrix[3][3];\n\n\t\t// perspectiveMatrix is used to solve for perspective, but it also provides\n\t\t// an easy way to test for singularity of the upper 3x3 component.\n\t\tmat<4, 4, T, Q> PerspectiveMatrix(LocalMatrix);\n\n\t\tfor(length_t i = 0; i < 3; i++)\n\t\t\tPerspectiveMatrix[i][3] = static_cast<T>(0);\n\t\tPerspectiveMatrix[3][3] = static_cast<T>(1);\n\n\t\t/// TODO: Fixme!\n\t\tif(epsilonEqual(determinant(PerspectiveMatrix), static_cast<T>(0), epsilon<T>()))\n\t\t\treturn false;\n\n\t\t// First, isolate perspective.  This is the messiest.\n\t\tif(\n\t\t\tepsilonNotEqual(LocalMatrix[0][3], static_cast<T>(0), epsilon<T>()) ||\n\t\t\tepsilonNotEqual(LocalMatrix[1][3], static_cast<T>(0), epsilon<T>()) ||\n\t\t\tepsilonNotEqual(LocalMatrix[2][3], static_cast<T>(0), epsilon<T>()))\n\t\t{\n\t\t\t// rightHandSide is the right hand side of the equation.\n\t\t\tvec<4, T, Q> RightHandSide;\n\t\t\tRightHandSide[0] = LocalMatrix[0][3];\n\t\t\tRightHandSide[1] = LocalMatrix[1][3];\n\t\t\tRightHandSide[2] = LocalMatrix[2][3];\n\t\t\tRightHandSide[3] = LocalMatrix[3][3];\n\n\t\t\t// Solve the equation by inverting PerspectiveMatrix and multiplying\n\t\t\t// rightHandSide by the inverse.  (This is the easiest way, not\n\t\t\t// necessarily the best.)\n\t\t\tmat<4, 4, T, Q> InversePerspectiveMatrix = glm::inverse(PerspectiveMatrix);//   inverse(PerspectiveMatrix, inversePerspectiveMatrix);\n\t\t\tmat<4, 4, T, Q> TransposedInversePerspectiveMatrix = glm::transpose(InversePerspectiveMatrix);//   transposeMatrix4(inversePerspectiveMatrix, transposedInversePerspectiveMatrix);\n\n\t\t\tPerspective = TransposedInversePerspectiveMatrix * RightHandSide;\n\t\t\t//  v4MulPointByMatrix(rightHandSide, transposedInversePerspectiveMatrix, perspectivePoint);\n\n\t\t\t// Clear the perspective partition\n\t\t\tLocalMatrix[0][3] = LocalMatrix[1][3] = LocalMatrix[2][3] = static_cast<T>(0);\n\t\t\tLocalMatrix[3][3] = static_cast<T>(1);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// No perspective.\n\t\t\tPerspective = vec<4, T, Q>(0, 0, 0, 1);\n\t\t}\n\n\t\t// Next take care of translation (easy).\n\t\tTranslation = vec<3, T, Q>(LocalMatrix[3]);\n\t\tLocalMatrix[3] = vec<4, T, Q>(0, 0, 0, LocalMatrix[3].w);\n\n\t\tvec<3, T, Q> Row[3], Pdum3;\n\n\t\t// Now get scale and shear.\n\t\tfor(length_t i = 0; i < 3; ++i)\n\t\tfor(length_t j = 0; j < 3; ++j)\n\t\t\tRow[i][j] = LocalMatrix[i][j];\n\n\t\t// Compute X scale factor and normalize first row.\n\t\tScale.x = length(Row[0]);// v3Length(Row[0]);\n\n\t\tRow[0] = detail::scale(Row[0], static_cast<T>(1));\n\n\t\t// Compute XY shear factor and make 2nd row orthogonal to 1st.\n\t\tSkew.z = dot(Row[0], Row[1]);\n\t\tRow[1] = detail::combine(Row[1], Row[0], static_cast<T>(1), -Skew.z);\n\n\t\t// Now, compute Y scale and normalize 2nd row.\n\t\tScale.y = length(Row[1]);\n\t\tRow[1] = detail::scale(Row[1], static_cast<T>(1));\n\t\tSkew.z /= Scale.y;\n\n\t\t// Compute XZ and YZ shears, orthogonalize 3rd row.\n\t\tSkew.y = glm::dot(Row[0], Row[2]);\n\t\tRow[2] = detail::combine(Row[2], Row[0], static_cast<T>(1), -Skew.y);\n\t\tSkew.x = glm::dot(Row[1], Row[2]);\n\t\tRow[2] = detail::combine(Row[2], Row[1], static_cast<T>(1), -Skew.x);\n\n\t\t// Next, get Z scale and normalize 3rd row.\n\t\tScale.z = length(Row[2]);\n\t\tRow[2] = detail::scale(Row[2], static_cast<T>(1));\n\t\tSkew.y /= Scale.z;\n\t\tSkew.x /= Scale.z;\n\n\t\t// At this point, the matrix (in rows[]) is orthonormal.\n\t\t// Check for a coordinate system flip.  If the determinant\n\t\t// is -1, then negate the matrix and the scaling factors.\n\t\tPdum3 = cross(Row[1], Row[2]); // v3Cross(row[1], row[2], Pdum3);\n\t\tif(dot(Row[0], Pdum3) < 0)\n\t\t{\n\t\t\tfor(length_t i = 0; i < 3; i++)\n\t\t\t{\n\t\t\t\tScale[i] *= static_cast<T>(-1);\n\t\t\t\tRow[i] *= static_cast<T>(-1);\n\t\t\t}\n\t\t}\n\n\t\t// Now, get the rotations out, as described in the gem.\n\n\t\t// FIXME - Add the ability to return either quaternions (which are\n\t\t// easier to recompose with) or Euler angles (rx, ry, rz), which\n\t\t// are easier for authors to deal with. The latter will only be useful\n\t\t// when we fix https://bugs.webkit.org/show_bug.cgi?id=23799, so I\n\t\t// will leave the Euler angle code here for now.\n\n\t\t// ret.rotateY = asin(-Row[0][2]);\n\t\t// if (cos(ret.rotateY) != 0) {\n\t\t//     ret.rotateX = atan2(Row[1][2], Row[2][2]);\n\t\t//     ret.rotateZ = atan2(Row[0][1], Row[0][0]);\n\t\t// } else {\n\t\t//     ret.rotateX = atan2(-Row[2][0], Row[1][1]);\n\t\t//     ret.rotateZ = 0;\n\t\t// }\n\n\t\tint i, j, k = 0;\n\t\tT root, trace = Row[0].x + Row[1].y + Row[2].z;\n\t\tif(trace > static_cast<T>(0))\n\t\t{\n\t\t\troot = sqrt(trace + static_cast<T>(1.0));\n\t\t\tOrientation.w = static_cast<T>(0.5) * root;\n\t\t\troot = static_cast<T>(0.5) / root;\n\t\t\tOrientation.x = root * (Row[1].z - Row[2].y);\n\t\t\tOrientation.y = root * (Row[2].x - Row[0].z);\n\t\t\tOrientation.z = root * (Row[0].y - Row[1].x);\n\t\t} // End if > 0\n\t\telse\n\t\t{\n\t\t\tstatic int Next[3] = {1, 2, 0};\n\t\t\ti = 0;\n\t\t\tif(Row[1].y > Row[0].x) i = 1;\n\t\t\tif(Row[2].z > Row[i][i]) i = 2;\n\t\t\tj = Next[i];\n\t\t\tk = Next[j];\n\n\t\t\troot = sqrt(Row[i][i] - Row[j][j] - Row[k][k] + static_cast<T>(1.0));\n\n\t\t\tOrientation[i] = static_cast<T>(0.5) * root;\n\t\t\troot = static_cast<T>(0.5) / root;\n\t\t\tOrientation[j] = root * (Row[i][j] + Row[j][i]);\n\t\t\tOrientation[k] = root * (Row[i][k] + Row[k][i]);\n\t\t\tOrientation.w = root * (Row[j][k] - Row[k][j]);\n\t\t} // End if <= 0\n\n\t\treturn true;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_factorisation.hpp",
    "content": "/// @ref gtx_matrix_factorisation\n/// @file glm/gtx/matrix_factorisation.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_matrix_factorisation GLM_GTX_matrix_factorisation\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_factorisation.hpp> to use the features of this extension.\n///\n/// Functions to factor matrices in various forms\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_factorisation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_factorisation extension included\")\n#\tendif\n#endif\n\n/*\nSuggestions:\n - Move helper functions flipud and fliplr to another file: They may be helpful in more general circumstances.\n - Implement other types of matrix factorisation, such as: QL and LQ, L(D)U, eigendecompositions, etc...\n*/\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_factorisation\n\t/// @{\n\n\t/// Flips the matrix rows up and down.\n\t///\n\t/// From GLM_GTX_matrix_factorisation extension.\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> flipud(mat<C, R, T, Q> const& in);\n\n\t/// Flips the matrix columns right and left.\n\t///\n\t/// From GLM_GTX_matrix_factorisation extension.\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> fliplr(mat<C, R, T, Q> const& in);\n\n\t/// Performs QR factorisation of a matrix.\n\t/// Returns 2 matrices, q and r, such that the columns of q are orthonormal and span the same subspace than those of the input matrix, r is an upper triangular matrix, and q*r=in.\n\t/// Given an n-by-m input matrix, q has dimensions min(n,m)-by-m, and r has dimensions n-by-min(n,m).\n\t///\n\t/// From GLM_GTX_matrix_factorisation extension.\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL void qr_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& q, mat<C, (C < R ? C : R), T, Q>& r);\n\n\t/// Performs RQ factorisation of a matrix.\n\t/// Returns 2 matrices, r and q, such that r is an upper triangular matrix, the rows of q are orthonormal and span the same subspace than those of the input matrix, and r*q=in.\n\t/// Note that in the context of RQ factorisation, the diagonal is seen as starting in the lower-right corner of the matrix, instead of the usual upper-left.\n\t/// Given an n-by-m input matrix, r has dimensions min(n,m)-by-m, and q has dimensions n-by-min(n,m).\n\t///\n\t/// From GLM_GTX_matrix_factorisation extension.\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL void rq_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& r, mat<C, (C < R ? C : R), T, Q>& q);\n\n\t/// @}\n}\n\n#include \"matrix_factorisation.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_factorisation.inl",
    "content": "/// @ref gtx_matrix_factorisation\n\nnamespace glm\n{\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> flipud(mat<C, R, T, Q> const& in)\n\t{\n\t\tmat<R, C, T, Q> tin = transpose(in);\n\t\ttin = fliplr(tin);\n\t\tmat<C, R, T, Q> out = transpose(tin);\n\n\t\treturn out;\n\t}\n\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<C, R, T, Q> fliplr(mat<C, R, T, Q> const& in)\n\t{\n\t\tmat<C, R, T, Q> out;\n\t\tfor (length_t i = 0; i < C; i++)\n\t\t{\n\t\t\tout[i] = in[(C - i) - 1];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER void qr_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& q, mat<C, (C < R ? C : R), T, Q>& r)\n\t{\n\t\t// Uses modified Gram-Schmidt method\n\t\t// Source: https://en.wikipedia.org/wiki/GramSchmidt_process\n\t\t// And https://en.wikipedia.org/wiki/QR_decomposition\n\n\t\t//For all the linearly independs columns of the input...\n\t\t// (there can be no more linearly independents columns than there are rows.)\n\t\tfor (length_t i = 0; i < (C < R ? C : R); i++)\n\t\t{\n\t\t\t//Copy in Q the input's i-th column.\n\t\t\tq[i] = in[i];\n\n\t\t\t//j = [0,i[\n\t\t\t// Make that column orthogonal to all the previous ones by substracting to it the non-orthogonal projection of all the previous columns.\n\t\t\t// Also: Fill the zero elements of R\n\t\t\tfor (length_t j = 0; j < i; j++)\n\t\t\t{\n\t\t\t\tq[i] -= dot(q[i], q[j])*q[j];\n\t\t\t\tr[j][i] = 0;\n\t\t\t}\n\n\t\t\t//Now, Q i-th column is orthogonal to all the previous columns. Normalize it.\n\t\t\tq[i] = normalize(q[i]);\n\n\t\t\t//j = [i,C[\n\t\t\t//Finally, compute the corresponding coefficients of R by computing the projection of the resulting column on the other columns of the input.\n\t\t\tfor (length_t j = i; j < C; j++)\n\t\t\t{\n\t\t\t\tr[j][i] = dot(in[j], q[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\ttemplate <length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER void rq_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& r, mat<C, (C < R ? C : R), T, Q>& q)\n\t{\n\t\t// From https://en.wikipedia.org/wiki/QR_decomposition:\n\t\t// The RQ decomposition transforms a matrix A into the product of an upper triangular matrix R (also known as right-triangular) and an orthogonal matrix Q. The only difference from QR decomposition is the order of these matrices.\n\t\t// QR decomposition is GramSchmidt orthogonalization of columns of A, started from the first column.\n\t\t// RQ decomposition is GramSchmidt orthogonalization of rows of A, started from the last row.\n\n\t\tmat<R, C, T, Q> tin = transpose(in);\n\t\ttin = fliplr(tin);\n\n\t\tmat<R, (C < R ? C : R), T, Q> tr;\n\t\tmat<(C < R ? C : R), C, T, Q> tq;\n\t\tqr_decompose(tin, tq, tr);\n\n\t\ttr = fliplr(tr);\n\t\tr = transpose(tr);\n\t\tr = fliplr(r);\n\n\t\ttq = fliplr(tq);\n\t\tq = transpose(tq);\n\t}\n} //namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_interpolation.hpp",
    "content": "/// @ref gtx_matrix_interpolation\n/// @file glm/gtx/matrix_interpolation.hpp\n/// @author Ghenadii Ursachi (the.asteroth@gmail.com)\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_matrix_interpolation GLM_GTX_matrix_interpolation\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_interpolation.hpp> to use the features of this extension.\n///\n/// Allows to directly interpolate two matrices.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_interpolation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_interpolation extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_interpolation\n\t/// @{\n\n\t/// Get the axis and angle of the rotation from a matrix.\n\t/// From GLM_GTX_matrix_interpolation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL void axisAngle(\n\t\tmat<4, 4, T, Q> const& Mat, vec<3, T, Q> & Axis, T & Angle);\n\n\t/// Build a matrix from axis and angle.\n\t/// From GLM_GTX_matrix_interpolation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> axisAngleMatrix(\n\t\tvec<3, T, Q> const& Axis, T const Angle);\n\n\t/// Extracts the rotation part of a matrix.\n\t/// From GLM_GTX_matrix_interpolation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> extractMatrixRotation(\n\t\tmat<4, 4, T, Q> const& Mat);\n\n\t/// Build a interpolation of 4 * 4 matrixes.\n\t/// From GLM_GTX_matrix_interpolation extension.\n\t/// Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> interpolate(\n\t\tmat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2, T const Delta);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_interpolation.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_interpolation.inl",
    "content": "/// @ref gtx_matrix_interpolation\n\n#include \"../gtc/constants.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER void axisAngle(mat<4, 4, T, Q> const& m, vec<3, T, Q> & axis, T& angle)\n\t{\n\t\tT epsilon = static_cast<T>(0.01);\n\t\tT epsilon2 = static_cast<T>(0.1);\n\n\t\tif((abs(m[1][0] - m[0][1]) < epsilon) && (abs(m[2][0] - m[0][2]) < epsilon) && (abs(m[2][1] - m[1][2]) < epsilon))\n\t\t{\n\t\t\tif ((abs(m[1][0] + m[0][1]) < epsilon2) && (abs(m[2][0] + m[0][2]) < epsilon2) && (abs(m[2][1] + m[1][2]) < epsilon2) && (abs(m[0][0] + m[1][1] + m[2][2] - static_cast<T>(3.0)) < epsilon2))\n\t\t\t{\n\t\t\t\tangle = static_cast<T>(0.0);\n\t\t\t\taxis.x = static_cast<T>(1.0);\n\t\t\t\taxis.y = static_cast<T>(0.0);\n\t\t\t\taxis.z = static_cast<T>(0.0);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tangle = static_cast<T>(3.1415926535897932384626433832795);\n\t\t\tT xx = (m[0][0] + static_cast<T>(1.0)) * static_cast<T>(0.5);\n\t\t\tT yy = (m[1][1] + static_cast<T>(1.0)) * static_cast<T>(0.5);\n\t\t\tT zz = (m[2][2] + static_cast<T>(1.0)) * static_cast<T>(0.5);\n\t\t\tT xy = (m[1][0] + m[0][1]) * static_cast<T>(0.25);\n\t\t\tT xz = (m[2][0] + m[0][2]) * static_cast<T>(0.25);\n\t\t\tT yz = (m[2][1] + m[1][2]) * static_cast<T>(0.25);\n\t\t\tif((xx > yy) && (xx > zz))\n\t\t\t{\n\t\t\t\tif(xx < epsilon)\n\t\t\t\t{\n\t\t\t\t\taxis.x = static_cast<T>(0.0);\n\t\t\t\t\taxis.y = static_cast<T>(0.7071);\n\t\t\t\t\taxis.z = static_cast<T>(0.7071);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taxis.x = sqrt(xx);\n\t\t\t\t\taxis.y = xy / axis.x;\n\t\t\t\t\taxis.z = xz / axis.x;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (yy > zz)\n\t\t\t{\n\t\t\t\tif(yy < epsilon)\n\t\t\t\t{\n\t\t\t\t\taxis.x = static_cast<T>(0.7071);\n\t\t\t\t\taxis.y = static_cast<T>(0.0);\n\t\t\t\t\taxis.z = static_cast<T>(0.7071);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taxis.y = sqrt(yy);\n\t\t\t\t\taxis.x = xy / axis.y;\n\t\t\t\t\taxis.z = yz / axis.y;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (zz < epsilon)\n\t\t\t\t{\n\t\t\t\t\taxis.x = static_cast<T>(0.7071);\n\t\t\t\t\taxis.y = static_cast<T>(0.7071);\n\t\t\t\t\taxis.z = static_cast<T>(0.0);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\taxis.z = sqrt(zz);\n\t\t\t\t\taxis.x = xz / axis.z;\n\t\t\t\t\taxis.y = yz / axis.z;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tT s = sqrt((m[2][1] - m[1][2]) * (m[2][1] - m[1][2]) + (m[2][0] - m[0][2]) * (m[2][0] - m[0][2]) + (m[1][0] - m[0][1]) * (m[1][0] - m[0][1]));\n\t\tif (glm::abs(s) < T(0.001))\n\t\t\ts = static_cast<T>(1);\n\t\tT const angleCos = (m[0][0] + m[1][1] + m[2][2] - static_cast<T>(1)) * static_cast<T>(0.5);\n\t\tif(angleCos - static_cast<T>(1) < epsilon)\n\t\t\tangle = pi<T>() * static_cast<T>(0.25);\n\t\telse\n\t\t\tangle = acos(angleCos);\n\t\taxis.x = (m[1][2] - m[2][1]) / s;\n\t\taxis.y = (m[2][0] - m[0][2]) / s;\n\t\taxis.z = (m[0][1] - m[1][0]) / s;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> axisAngleMatrix(vec<3, T, Q> const& axis, T const angle)\n\t{\n\t\tT c = cos(angle);\n\t\tT s = sin(angle);\n\t\tT t = static_cast<T>(1) - c;\n\t\tvec<3, T, Q> n = normalize(axis);\n\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tt * n.x * n.x + c,          t * n.x * n.y + n.z * s,    t * n.x * n.z - n.y * s,    static_cast<T>(0.0),\n\t\t\tt * n.x * n.y - n.z * s,    t * n.y * n.y + c,          t * n.y * n.z + n.x * s,    static_cast<T>(0.0),\n\t\t\tt * n.x * n.z + n.y * s,    t * n.y * n.z - n.x * s,    t * n.z * n.z + c,          static_cast<T>(0.0),\n\t\t\tstatic_cast<T>(0.0),        static_cast<T>(0.0),        static_cast<T>(0.0),        static_cast<T>(1.0));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> extractMatrixRotation(mat<4, 4, T, Q> const& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(\n\t\t\tm[0][0], m[0][1], m[0][2], static_cast<T>(0.0),\n\t\t\tm[1][0], m[1][1], m[1][2], static_cast<T>(0.0),\n\t\t\tm[2][0], m[2][1], m[2][2], static_cast<T>(0.0),\n\t\t\tstatic_cast<T>(0.0), static_cast<T>(0.0), static_cast<T>(0.0), static_cast<T>(1.0));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> interpolate(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2, T const delta)\n\t{\n\t\tmat<4, 4, T, Q> m1rot = extractMatrixRotation(m1);\n\t\tmat<4, 4, T, Q> dltRotation = m2 * transpose(m1rot);\n\t\tvec<3, T, Q> dltAxis;\n\t\tT dltAngle;\n\t\taxisAngle(dltRotation, dltAxis, dltAngle);\n\t\tmat<4, 4, T, Q> out = axisAngleMatrix(dltAxis, dltAngle * delta) * m1rot;\n\t\tout[3][0] = m1[3][0] + delta * (m2[3][0] - m1[3][0]);\n\t\tout[3][1] = m1[3][1] + delta * (m2[3][1] - m1[3][1]);\n\t\tout[3][2] = m1[3][2] + delta * (m2[3][2] - m1[3][2]);\n\t\treturn out;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_major_storage.hpp",
    "content": "/// @ref gtx_matrix_major_storage\n/// @file glm/gtx/matrix_major_storage.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_matrix_major_storage GLM_GTX_matrix_major_storage\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension.\n///\n/// Build matrices with specific matrix order, row or column\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_major_storage is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_major_storage extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_major_storage\n\t/// @{\n\n\t//! Build a row major matrix from row vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(\n\t\tvec<2, T, Q> const& v1,\n\t\tvec<2, T, Q> const& v2);\n\n\t//! Build a row major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(\n\t\tmat<2, 2, T, Q> const& m);\n\n\t//! Build a row major matrix from row vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(\n\t\tvec<3, T, Q> const& v1,\n\t\tvec<3, T, Q> const& v2,\n\t\tvec<3, T, Q> const& v3);\n\n\t//! Build a row major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(\n\t\tmat<3, 3, T, Q> const& m);\n\n\t//! Build a row major matrix from row vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(\n\t\tvec<4, T, Q> const& v1,\n\t\tvec<4, T, Q> const& v2,\n\t\tvec<4, T, Q> const& v3,\n\t\tvec<4, T, Q> const& v4);\n\n\t//! Build a row major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(\n\t\tmat<4, 4, T, Q> const& m);\n\n\t//! Build a column major matrix from column vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(\n\t\tvec<2, T, Q> const& v1,\n\t\tvec<2, T, Q> const& v2);\n\n\t//! Build a column major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(\n\t\tmat<2, 2, T, Q> const& m);\n\n\t//! Build a column major matrix from column vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(\n\t\tvec<3, T, Q> const& v1,\n\t\tvec<3, T, Q> const& v2,\n\t\tvec<3, T, Q> const& v3);\n\n\t//! Build a column major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(\n\t\tmat<3, 3, T, Q> const& m);\n\n\t//! Build a column major matrix from column vectors.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(\n\t\tvec<4, T, Q> const& v1,\n\t\tvec<4, T, Q> const& v2,\n\t\tvec<4, T, Q> const& v3,\n\t\tvec<4, T, Q> const& v4);\n\n\t//! Build a column major matrix from other matrix.\n\t//! From GLM_GTX_matrix_major_storage extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(\n\t\tmat<4, 4, T, Q> const& m);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_major_storage.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_major_storage.inl",
    "content": "/// @ref gtx_matrix_major_storage\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> rowMajor2\n\t(\n\t\tvec<2, T, Q> const& v1,\n\t\tvec<2, T, Q> const& v2\n\t)\n\t{\n\t\tmat<2, 2, T, Q> Result;\n\t\tResult[0][0] = v1.x;\n\t\tResult[1][0] = v1.y;\n\t\tResult[0][1] = v2.x;\n\t\tResult[1][1] = v2.y;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> rowMajor2(\n\t\tconst mat<2, 2, T, Q>& m)\n\t{\n\t\tmat<2, 2, T, Q> Result;\n\t\tResult[0][0] = m[0][0];\n\t\tResult[0][1] = m[1][0];\n\t\tResult[1][0] = m[0][1];\n\t\tResult[1][1] = m[1][1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> rowMajor3(\n\t\tconst vec<3, T, Q>& v1,\n\t\tconst vec<3, T, Q>& v2,\n\t\tconst vec<3, T, Q>& v3)\n\t{\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0][0] = v1.x;\n\t\tResult[1][0] = v1.y;\n\t\tResult[2][0] = v1.z;\n\t\tResult[0][1] = v2.x;\n\t\tResult[1][1] = v2.y;\n\t\tResult[2][1] = v2.z;\n\t\tResult[0][2] = v3.x;\n\t\tResult[1][2] = v3.y;\n\t\tResult[2][2] = v3.z;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> rowMajor3(\n\t\tconst mat<3, 3, T, Q>& m)\n\t{\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0][0] = m[0][0];\n\t\tResult[0][1] = m[1][0];\n\t\tResult[0][2] = m[2][0];\n\t\tResult[1][0] = m[0][1];\n\t\tResult[1][1] = m[1][1];\n\t\tResult[1][2] = m[2][1];\n\t\tResult[2][0] = m[0][2];\n\t\tResult[2][1] = m[1][2];\n\t\tResult[2][2] = m[2][2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rowMajor4(\n\t\tconst vec<4, T, Q>& v1,\n\t\tconst vec<4, T, Q>& v2,\n\t\tconst vec<4, T, Q>& v3,\n\t\tconst vec<4, T, Q>& v4)\n\t{\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0][0] = v1.x;\n\t\tResult[1][0] = v1.y;\n\t\tResult[2][0] = v1.z;\n\t\tResult[3][0] = v1.w;\n\t\tResult[0][1] = v2.x;\n\t\tResult[1][1] = v2.y;\n\t\tResult[2][1] = v2.z;\n\t\tResult[3][1] = v2.w;\n\t\tResult[0][2] = v3.x;\n\t\tResult[1][2] = v3.y;\n\t\tResult[2][2] = v3.z;\n\t\tResult[3][2] = v3.w;\n\t\tResult[0][3] = v4.x;\n\t\tResult[1][3] = v4.y;\n\t\tResult[2][3] = v4.z;\n\t\tResult[3][3] = v4.w;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rowMajor4(\n\t\tconst mat<4, 4, T, Q>& m)\n\t{\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0][0] = m[0][0];\n\t\tResult[0][1] = m[1][0];\n\t\tResult[0][2] = m[2][0];\n\t\tResult[0][3] = m[3][0];\n\t\tResult[1][0] = m[0][1];\n\t\tResult[1][1] = m[1][1];\n\t\tResult[1][2] = m[2][1];\n\t\tResult[1][3] = m[3][1];\n\t\tResult[2][0] = m[0][2];\n\t\tResult[2][1] = m[1][2];\n\t\tResult[2][2] = m[2][2];\n\t\tResult[2][3] = m[3][2];\n\t\tResult[3][0] = m[0][3];\n\t\tResult[3][1] = m[1][3];\n\t\tResult[3][2] = m[2][3];\n\t\tResult[3][3] = m[3][3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> colMajor2(\n\t\tconst vec<2, T, Q>& v1,\n\t\tconst vec<2, T, Q>& v2)\n\t{\n\t\treturn mat<2, 2, T, Q>(v1, v2);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> colMajor2(\n\t\tconst mat<2, 2, T, Q>& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> colMajor3(\n\t\tconst vec<3, T, Q>& v1,\n\t\tconst vec<3, T, Q>& v2,\n\t\tconst vec<3, T, Q>& v3)\n\t{\n\t\treturn mat<3, 3, T, Q>(v1, v2, v3);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> colMajor3(\n\t\tconst mat<3, 3, T, Q>& m)\n\t{\n\t\treturn mat<3, 3, T, Q>(m);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> colMajor4(\n\t\tconst vec<4, T, Q>& v1,\n\t\tconst vec<4, T, Q>& v2,\n\t\tconst vec<4, T, Q>& v3,\n\t\tconst vec<4, T, Q>& v4)\n\t{\n\t\treturn mat<4, 4, T, Q>(v1, v2, v3, v4);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> colMajor4(\n\t\tconst mat<4, 4, T, Q>& m)\n\t{\n\t\treturn mat<4, 4, T, Q>(m);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_operation.hpp",
    "content": "/// @ref gtx_matrix_operation\n/// @file glm/gtx/matrix_operation.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_matrix_operation GLM_GTX_matrix_operation\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_operation.hpp> to use the features of this extension.\n///\n/// Build diagonal matrices from vectors.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_operation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_operation extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_operation\n\t/// @{\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> diagonal2x2(\n\t\tvec<2, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 3, T, Q> diagonal2x3(\n\t\tvec<2, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 4, T, Q> diagonal2x4(\n\t\tvec<2, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 2, T, Q> diagonal3x2(\n\t\tvec<2, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> diagonal3x3(\n\t\tvec<3, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 4, T, Q> diagonal3x4(\n\t\tvec<3, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 2, T, Q> diagonal4x2(\n\t\tvec<2, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 3, T, Q> diagonal4x3(\n\t\tvec<3, T, Q> const& v);\n\n\t//! Build a diagonal matrix.\n\t//! From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> diagonal4x4(\n\t\tvec<4, T, Q> const& v);\n\n\t/// Build an adjugate  matrix.\n\t/// From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<2, 2, T, Q> adjugate(mat<2, 2, T, Q> const& m);\n\n\t/// Build an adjugate  matrix.\n\t/// From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> adjugate(mat<3, 3, T, Q> const& m);\n\n\t/// Build an adjugate  matrix.\n\t/// From GLM_GTX_matrix_operation extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> adjugate(mat<4, 4, T, Q> const& m);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_operation.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_operation.inl",
    "content": "/// @ref gtx_matrix_operation\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> diagonal2x2\n\t(\n\t\tvec<2, T, Q> const& v\n\t)\n\t{\n\t\tmat<2, 2, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 3, T, Q> diagonal2x3\n\t(\n\t\tvec<2, T, Q> const& v\n\t)\n\t{\n\t\tmat<2, 3, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 4, T, Q> diagonal2x4\n\t(\n\t\tvec<2, T, Q> const& v\n\t)\n\t{\n\t\tmat<2, 4, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 2, T, Q> diagonal3x2\n\t(\n\t\tvec<2, T, Q> const& v\n\t)\n\t{\n\t\tmat<3, 2, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> diagonal3x3\n\t(\n\t\tvec<3, T, Q> const& v\n\t)\n\t{\n\t\tmat<3, 3, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\tResult[2][2] = v[2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 4, T, Q> diagonal3x4\n\t(\n\t\tvec<3, T, Q> const& v\n\t)\n\t{\n\t\tmat<3, 4, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\tResult[2][2] = v[2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> diagonal4x4\n\t(\n\t\tvec<4, T, Q> const& v\n\t)\n\t{\n\t\tmat<4, 4, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\tResult[2][2] = v[2];\n\t\tResult[3][3] = v[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 3, T, Q> diagonal4x3\n\t(\n\t\tvec<3, T, Q> const& v\n\t)\n\t{\n\t\tmat<4, 3, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\tResult[2][2] = v[2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 2, T, Q> diagonal4x2\n\t(\n\t\tvec<2, T, Q> const& v\n\t)\n\t{\n\t\tmat<4, 2, T, Q> Result(static_cast<T>(1));\n\t\tResult[0][0] = v[0];\n\t\tResult[1][1] = v[1];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<2, 2, T, Q> adjugate(mat<2, 2, T, Q> const& m)\n\t{\n\t\treturn mat<2, 2, T, Q>(\n\t\t\t+m[1][1], -m[1][0],\n\t\t\t-m[0][1], +m[0][0]);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> adjugate(mat<3, 3, T, Q> const& m)\n\t{\n\t\tT const m00 = determinant(mat<2, 2, T, Q>(m[1][1], m[2][1], m[1][2], m[2][2]));\n\t\tT const m01 = determinant(mat<2, 2, T, Q>(m[0][1], m[2][1], m[0][2], m[2][2]));\n\t\tT const m02 = determinant(mat<2, 2, T, Q>(m[0][1], m[1][1], m[0][2], m[1][2]));\n\n\t\tT const m10 = determinant(mat<2, 2, T, Q>(m[1][0], m[2][0], m[1][2], m[2][2]));\n\t\tT const m11 = determinant(mat<2, 2, T, Q>(m[0][0], m[2][0], m[0][2], m[2][2]));\n\t\tT const m12 = determinant(mat<2, 2, T, Q>(m[0][0], m[1][0], m[0][2], m[1][2]));\n\n\t\tT const m20 = determinant(mat<2, 2, T, Q>(m[1][0], m[2][0], m[1][1], m[2][1]));\n\t\tT const m21 = determinant(mat<2, 2, T, Q>(m[0][0], m[2][0], m[0][1], m[2][1]));\n\t\tT const m22 = determinant(mat<2, 2, T, Q>(m[0][0], m[1][0], m[0][1], m[1][1]));\n\n\t\treturn mat<3, 3, T, Q>(\n\t\t\t+m00, -m01, +m02,\n\t\t\t-m10, +m11, -m12,\n\t\t\t+m20, -m21, +m22);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> adjugate(mat<4, 4, T, Q> const& m)\n\t{\n\t\tT const m00 = determinant(mat<3, 3, T, Q>(m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]));\n\t\tT const m01 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]));\n\t\tT const m02 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][1], m[1][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][1], m[3][3]));\n\t\tT const m03 = determinant(mat<3, 3, T, Q>(m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]));\n\n\t\tT const m10 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[2][1], m[2][2], m[2][3], m[3][1], m[3][2], m[3][3]));\n\t\tT const m11 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[2][0], m[2][2], m[2][3], m[3][0], m[3][2], m[3][3]));\n\t\tT const m12 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[2][0], m[2][1], m[2][3], m[3][0], m[3][1], m[3][3]));\n\t\tT const m13 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[2][0], m[2][1], m[2][2], m[3][0], m[3][1], m[3][2]));\n\n\t\tT const m20 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[3][1], m[3][2], m[3][3]));\n\t\tT const m21 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[3][0], m[3][2], m[3][3]));\n\t\tT const m22 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[3][0], m[3][1], m[3][3]));\n\t\tT const m23 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[3][0], m[3][1], m[3][2]));\n\n\t\tT const m30 = determinant(mat<3, 3, T, Q>(m[0][1], m[0][2], m[0][3], m[1][1], m[1][2], m[1][3], m[2][1], m[2][2], m[2][3]));\n\t\tT const m31 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][2], m[0][3], m[1][0], m[1][2], m[1][3], m[2][0], m[2][2], m[2][3]));\n\t\tT const m32 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][3], m[1][0], m[1][1], m[1][3], m[2][0], m[2][1], m[2][3]));\n\t\tT const m33 = determinant(mat<3, 3, T, Q>(m[0][0], m[0][1], m[0][2], m[1][0], m[1][1], m[1][2], m[2][0], m[2][1], m[2][2]));\n\n\t\treturn mat<4, 4, T, Q>(\n\t\t\t+m00, -m01, +m02, -m03,\n\t\t\t-m10, +m11, -m12, +m13,\n\t\t\t+m20, -m21, +m22, -m23,\n\t\t\t-m30, +m31, -m32, +m33);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_query.hpp",
    "content": "/// @ref gtx_matrix_query\n/// @file glm/gtx/matrix_query.hpp\n///\n/// @see core (dependence)\n/// @see gtx_vector_query (dependence)\n///\n/// @defgroup gtx_matrix_query GLM_GTX_matrix_query\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_query.hpp> to use the features of this extension.\n///\n/// Query to evaluate matrix properties\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/vector_query.hpp\"\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_query extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_query\n\t/// @{\n\n\t/// Return whether a matrix a null matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNull(mat<2, 2, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix a null matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNull(mat<3, 3, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is a null matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNull(mat<4, 4, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is an identity matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>\n\tGLM_FUNC_DECL bool isIdentity(matType<C, R, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is a normalized matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNormalized(mat<2, 2, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is a normalized matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNormalized(mat<3, 3, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is a normalized matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNormalized(mat<4, 4, T, Q> const& m, T const& epsilon);\n\n\t/// Return whether a matrix is an orthonormalized matrix.\n\t/// From GLM_GTX_matrix_query extension.\n\ttemplate<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>\n\tGLM_FUNC_DECL bool isOrthogonal(matType<C, R, T, Q> const& m, T const& epsilon);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_query.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_query.inl",
    "content": "/// @ref gtx_matrix_query\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNull(mat<2, 2, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result = true;\n\t\tfor(length_t i = 0; result && i < m.length() ; ++i)\n\t\t\tresult = isNull(m[i], epsilon);\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNull(mat<3, 3, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result = true;\n\t\tfor(length_t i = 0; result && i < m.length() ; ++i)\n\t\t\tresult = isNull(m[i], epsilon);\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNull(mat<4, 4, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result = true;\n\t\tfor(length_t i = 0; result && i < m.length() ; ++i)\n\t\t\tresult = isNull(m[i], epsilon);\n\t\treturn result;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isIdentity(mat<C, R, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result = true;\n\t\tfor(length_t i = 0; result && i < m[0].length() ; ++i)\n\t\t{\n\t\t\tfor(length_t j = 0; result && j < i ; ++j)\n\t\t\t\tresult = abs(m[i][j]) <= epsilon;\n\t\t\tif(result)\n\t\t\t\tresult = abs(m[i][i] - 1) <= epsilon;\n\t\t\tfor(length_t j = i + 1; result && j < m.length(); ++j)\n\t\t\t\tresult = abs(m[i][j]) <= epsilon;\n\t\t}\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNormalized(mat<2, 2, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result(true);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t\tresult = isNormalized(m[i], epsilon);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t{\n\t\t\ttypename mat<2, 2, T, Q>::col_type v;\n\t\t\tfor(length_t j = 0; j < m.length(); ++j)\n\t\t\t\tv[j] = m[j][i];\n\t\t\tresult = isNormalized(v, epsilon);\n\t\t}\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNormalized(mat<3, 3, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result(true);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t\tresult = isNormalized(m[i], epsilon);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t{\n\t\t\ttypename mat<3, 3, T, Q>::col_type v;\n\t\t\tfor(length_t j = 0; j < m.length(); ++j)\n\t\t\t\tv[j] = m[j][i];\n\t\t\tresult = isNormalized(v, epsilon);\n\t\t}\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNormalized(mat<4, 4, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result(true);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t\tresult = isNormalized(m[i], epsilon);\n\t\tfor(length_t i = 0; result && i < m.length(); ++i)\n\t\t{\n\t\t\ttypename mat<4, 4, T, Q>::col_type v;\n\t\t\tfor(length_t j = 0; j < m.length(); ++j)\n\t\t\t\tv[j] = m[j][i];\n\t\t\tresult = isNormalized(v, epsilon);\n\t\t}\n\t\treturn result;\n\t}\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isOrthogonal(mat<C, R, T, Q> const& m, T const& epsilon)\n\t{\n\t\tbool result = true;\n\t\tfor(length_t i(0); result && i < m.length() - 1; ++i)\n\t\tfor(length_t j(i + 1); result && j < m.length(); ++j)\n\t\t\tresult = areOrthogonal(m[i], m[j], epsilon);\n\n\t\tif(result)\n\t\t{\n\t\t\tmat<C, R, T, Q> tmp = transpose(m);\n\t\t\tfor(length_t i(0); result && i < m.length() - 1 ; ++i)\n\t\t\tfor(length_t j(i + 1); result && j < m.length(); ++j)\n\t\t\t\tresult = areOrthogonal(tmp[i], tmp[j], epsilon);\n\t\t}\n\t\treturn result;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_transform_2d.hpp",
    "content": "/// @ref gtx_matrix_transform_2d\n/// @file glm/gtx/matrix_transform_2d.hpp\n/// @author Miguel Ángel Pérez Martínez\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_matrix_transform_2d GLM_GTX_matrix_transform_2d\n/// @ingroup gtx\n///\n/// Include <glm/gtx/matrix_transform_2d.hpp> to use the features of this extension.\n///\n/// Defines functions that generate common 2d transformation matrices.\n\n#pragma once\n\n// Dependency:\n#include \"../mat3x3.hpp\"\n#include \"../vec2.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_transform_2d is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_matrix_transform_2d extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_matrix_transform_2d\n\t/// @{\n\n\t/// Builds a translation 3 * 3 matrix created from a vector of 2 components.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param v Coordinates of a translation vector.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> translate(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tvec<2, T, Q> const& v);\n\n\t/// Builds a rotation 3 * 3 matrix created from an angle.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param angle Rotation angle expressed in radians.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> rotate(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT angle);\n\n\t/// Builds a scale 3 * 3 matrix created from a vector of 2 components.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param v Coordinates of a scale vector.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> scale(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tvec<2, T, Q> const& v);\n\n\t/// Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param y Shear factor.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT y);\n\n\t/// Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.\n\t///\n\t/// @param m Input matrix multiplied by this translation matrix.\n\t/// @param x Shear factor.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT x);\n\n\t/// @}\n}//namespace glm\n\n#include \"matrix_transform_2d.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/matrix_transform_2d.inl",
    "content": "/// @ref gtx_matrix_transform_2d\n/// @author Miguel Ángel Pérez Martínez\n\n#include \"../trigonometric.hpp\"\n\nnamespace glm\n{\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> translate(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tvec<2, T, Q> const& v)\n\t{\n\t\tmat<3, 3, T, Q> Result(m);\n\t\tResult[2] = m[0] * v[0] + m[1] * v[1] + m[2];\n\t\treturn Result;\n\t}\n\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> rotate(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT angle)\n\t{\n\t\tT const a = angle;\n\t\tT const c = cos(a);\n\t\tT const s = sin(a);\n\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0] = m[0] * c + m[1] * s;\n\t\tResult[1] = m[0] * -s + m[1] * c;\n\t\tResult[2] = m[2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> scale(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tvec<2, T, Q> const& v)\n\t{\n\t\tmat<3, 3, T, Q> Result;\n\t\tResult[0] = m[0] * v[0];\n\t\tResult[1] = m[1] * v[1];\n\t\tResult[2] = m[2];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT y)\n\t{\n\t\tmat<3, 3, T, Q> Result(1);\n\t\tResult[0][1] = y;\n\t\treturn m * Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY(\n\t\tmat<3, 3, T, Q> const& m,\n\t\tT x)\n\t{\n\t\tmat<3, 3, T, Q> Result(1);\n\t\tResult[1][0] = x;\n\t\treturn m * Result;\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/mixed_product.hpp",
    "content": "/// @ref gtx_mixed_product\n/// @file glm/gtx/mixed_product.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_mixed_product GLM_GTX_mixed_producte\n/// @ingroup gtx\n///\n/// Include <glm/gtx/mixed_product.hpp> to use the features of this extension.\n///\n/// Mixed product of 3 vectors.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_mixed_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_mixed_product extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_mixed_product\n\t/// @{\n\n\t/// @brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T mixedProduct(\n\t\tvec<3, T, Q> const& v1,\n\t\tvec<3, T, Q> const& v2,\n\t\tvec<3, T, Q> const& v3);\n\n\t/// @}\n}// namespace glm\n\n#include \"mixed_product.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/mixed_product.inl",
    "content": "/// @ref gtx_mixed_product\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T mixedProduct\n\t(\n\t\tvec<3, T, Q> const& v1,\n\t\tvec<3, T, Q> const& v2,\n\t\tvec<3, T, Q> const& v3\n\t)\n\t{\n\t\treturn dot(cross(v1, v2), v3);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/norm.hpp",
    "content": "/// @ref gtx_norm\n/// @file glm/gtx/norm.hpp\n///\n/// @see core (dependence)\n/// @see gtx_quaternion (dependence)\n/// @see gtx_component_wise (dependence)\n///\n/// @defgroup gtx_norm GLM_GTX_norm\n/// @ingroup gtx\n///\n/// Include <glm/gtx/norm.hpp> to use the features of this extension.\n///\n/// Various ways to compute vector norms.\n\n#pragma once\n\n// Dependency:\n#include \"../geometric.hpp\"\n#include \"../gtx/quaternion.hpp\"\n#include \"../gtx/component_wise.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_norm extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_norm\n\t/// @{\n\n\t/// Returns the squared length of x.\n\t/// From GLM_GTX_norm extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T length2(vec<L, T, Q> const& x);\n\n\t/// Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).\n\t/// From GLM_GTX_norm extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T distance2(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);\n\n\t//! Returns the L1 norm between x and y.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);\n\n\t//! Returns the L1 norm of v.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& v);\n\n\t//! Returns the L2 norm between x and y.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);\n\n\t//! Returns the L2 norm of v.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x);\n\n\t//! Returns the L norm between x and y.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y, unsigned int Depth);\n\n\t//! Returns the L norm of v.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, unsigned int Depth);\n\n\t//! Returns the LMax norm between x and y.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);\n\n\t//! Returns the LMax norm of v.\n\t//! From GLM_GTX_norm extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"norm.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/norm.inl",
    "content": "/// @ref gtx_norm\n\n#include \"../detail/qualifier.hpp\"\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q, bool Aligned>\n\tstruct compute_length2\n\t{\n\t\tGLM_FUNC_QUALIFIER static T call(vec<L, T, Q> const& v)\n\t\t{\n\t\t\treturn dot(v, v);\n\t\t}\n\t};\n}//namespace detail\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType length2(genType x)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'length2' accepts only floating-point inputs\");\n\t\treturn x * x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T length2(vec<L, T, Q> const& v)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'length2' accepts only floating-point inputs\");\n\t\treturn detail::compute_length2<L, T, Q, detail::is_aligned<Q>::value>::call(v);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER T distance2(T p0, T p1)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'distance2' accepts only floating-point inputs\");\n\t\treturn length2(p1 - p0);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T distance2(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'distance2' accepts only floating-point inputs\");\n\t\treturn length2(p1 - p0);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T l1Norm(vec<3, T, Q> const& a, vec<3, T, Q> const& b)\n\t{\n\t\treturn abs(b.x - a.x) + abs(b.y - a.y) + abs(b.z - a.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T l1Norm(vec<3, T, Q> const& v)\n\t{\n\t\treturn abs(v.x) + abs(v.y) + abs(v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T l2Norm(vec<3, T, Q> const& a, vec<3, T, Q> const& b\n\t)\n\t{\n\t\treturn length(b - a);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T l2Norm(vec<3, T, Q> const& v)\n\t{\n\t\treturn length(v);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T lxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y, unsigned int Depth)\n\t{\n\t\treturn pow(pow(abs(y.x - x.x), T(Depth)) + pow(abs(y.y - x.y), T(Depth)) + pow(abs(y.z - x.z), T(Depth)), T(1) / T(Depth));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T lxNorm(vec<3, T, Q> const& v, unsigned int Depth)\n\t{\n\t\treturn pow(pow(abs(v.x), T(Depth)) + pow(abs(v.y), T(Depth)) + pow(abs(v.z), T(Depth)), T(1) / T(Depth));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T lMaxNorm(vec<3, T, Q> const& a, vec<3, T, Q> const& b)\n\t{\n\t\treturn compMax(abs(b - a));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T lMaxNorm(vec<3, T, Q> const& v)\n\t{\n\t\treturn compMax(abs(v));\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/normal.hpp",
    "content": "/// @ref gtx_normal\n/// @file glm/gtx/normal.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_normal GLM_GTX_normal\n/// @ingroup gtx\n///\n/// Include <glm/gtx/normal.hpp> to use the features of this extension.\n///\n/// Compute the normal of a triangle.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_normal is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_normal extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_normal\n\t/// @{\n\n\t/// Computes triangle normal from triangle points.\n\t///\n\t/// @see gtx_normal\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> triangleNormal(vec<3, T, Q> const& p1, vec<3, T, Q> const& p2, vec<3, T, Q> const& p3);\n\n\t/// @}\n}//namespace glm\n\n#include \"normal.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/normal.inl",
    "content": "/// @ref gtx_normal\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> triangleNormal\n\t(\n\t\tvec<3, T, Q> const& p1,\n\t\tvec<3, T, Q> const& p2,\n\t\tvec<3, T, Q> const& p3\n\t)\n\t{\n\t\treturn normalize(cross(p1 - p2, p1 - p3));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/normalize_dot.hpp",
    "content": "/// @ref gtx_normalize_dot\n/// @file glm/gtx/normalize_dot.hpp\n///\n/// @see core (dependence)\n/// @see gtx_fast_square_root (dependence)\n///\n/// @defgroup gtx_normalize_dot GLM_GTX_normalize_dot\n/// @ingroup gtx\n///\n/// Include <glm/gtx/normalized_dot.hpp> to use the features of this extension.\n///\n/// Dot product of vectors that need to be normalize with a single square root.\n\n#pragma once\n\n// Dependency:\n#include \"../gtx/fast_square_root.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_normalize_dot is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_normalize_dot extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_normalize_dot\n\t/// @{\n\n\t/// Normalize parameters and returns the dot product of x and y.\n\t/// It's faster that dot(normalize(x), normalize(y)).\n\t///\n\t/// @see gtx_normalize_dot extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T normalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Normalize parameters and returns the dot product of x and y.\n\t/// Faster that dot(fastNormalize(x), fastNormalize(y)).\n\t///\n\t/// @see gtx_normalize_dot extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T fastNormalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// @}\n}//namespace glm\n\n#include \"normalize_dot.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/normalize_dot.inl",
    "content": "/// @ref gtx_normalize_dot\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T normalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T fastNormalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\treturn glm::dot(x, y) * glm::fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/number_precision.hpp",
    "content": "/// @ref gtx_number_precision\n/// @file glm/gtx/number_precision.hpp\n///\n/// @see core (dependence)\n/// @see gtc_type_precision (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtx_number_precision GLM_GTX_number_precision\n/// @ingroup gtx\n///\n/// Include <glm/gtx/number_precision.hpp> to use the features of this extension.\n///\n/// Defined size types.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/type_precision.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_number_precision is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_number_precision extension included\")\n#\tendif\n#endif\n\nnamespace glm{\nnamespace gtx\n{\n\t/////////////////////////////\n\t// Unsigned int vector types\n\n\t/// @addtogroup gtx_number_precision\n\t/// @{\n\n\ttypedef u8\t\t\tu8vec1;\t\t//!< \\brief 8bit unsigned integer scalar. (from GLM_GTX_number_precision extension)\n\ttypedef u16\t\t\tu16vec1;    //!< \\brief 16bit unsigned integer scalar. (from GLM_GTX_number_precision extension)\n\ttypedef u32\t\t\tu32vec1;    //!< \\brief 32bit unsigned integer scalar. (from GLM_GTX_number_precision extension)\n\ttypedef u64\t\t\tu64vec1;    //!< \\brief 64bit unsigned integer scalar. (from GLM_GTX_number_precision extension)\n\n\t//////////////////////\n\t// Float vector types\n\n\ttypedef f32\t\t\tf32vec1;    //!< \\brief Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\ttypedef f64\t\t\tf64vec1;    //!< \\brief Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\n\t//////////////////////\n\t// Float matrix types\n\n\ttypedef f32\t\t\tf32mat1;\t//!< \\brief Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\ttypedef f32\t\t\tf32mat1x1;\t//!< \\brief Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\ttypedef f64\t\t\tf64mat1;\t//!< \\brief Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\ttypedef f64\t\t\tf64mat1x1;\t//!< \\brief Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)\n\n\t/// @}\n}//namespace gtx\n}//namespace glm\n\n#include \"number_precision.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/number_precision.inl",
    "content": "/// @ref gtx_number_precision\n\nnamespace glm\n{\n\n}\n"
  },
  {
    "path": "libraries/glm/gtx/optimum_pow.hpp",
    "content": "/// @ref gtx_optimum_pow\n/// @file glm/gtx/optimum_pow.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_optimum_pow GLM_GTX_optimum_pow\n/// @ingroup gtx\n///\n/// Include <glm/gtx/optimum_pow.hpp> to use the features of this extension.\n///\n/// Integer exponentiation of power functions.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_optimum_pow is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_optimum_pow extension included\")\n#\tendif\n#endif\n\nnamespace glm{\nnamespace gtx\n{\n\t/// @addtogroup gtx_optimum_pow\n\t/// @{\n\n\t/// Returns x raised to the power of 2.\n\t///\n\t/// @see gtx_optimum_pow\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType pow2(genType const& x);\n\n\t/// Returns x raised to the power of 3.\n\t///\n\t/// @see gtx_optimum_pow\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType pow3(genType const& x);\n\n\t/// Returns x raised to the power of 4.\n\t///\n\t/// @see gtx_optimum_pow\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType pow4(genType const& x);\n\n\t/// @}\n}//namespace gtx\n}//namespace glm\n\n#include \"optimum_pow.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/optimum_pow.inl",
    "content": "/// @ref gtx_optimum_pow\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType pow2(genType const& x)\n\t{\n\t\treturn x * x;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType pow3(genType const& x)\n\t{\n\t\treturn x * x * x;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType pow4(genType const& x)\n\t{\n\t\treturn (x * x) * (x * x);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/orthonormalize.hpp",
    "content": "/// @ref gtx_orthonormalize\n/// @file glm/gtx/orthonormalize.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_orthonormalize GLM_GTX_orthonormalize\n/// @ingroup gtx\n///\n/// Include <glm/gtx/orthonormalize.hpp> to use the features of this extension.\n///\n/// Orthonormalize matrices.\n\n#pragma once\n\n// Dependency:\n#include \"../vec3.hpp\"\n#include \"../mat3x3.hpp\"\n#include \"../geometric.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_orthonormalize is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_orthonormalize extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_orthonormalize\n\t/// @{\n\n\t/// Returns the orthonormalized matrix of m.\n\t///\n\t/// @see gtx_orthonormalize\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m);\n\n\t/// Orthonormalizes x according y.\n\t///\n\t/// @see gtx_orthonormalize\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y);\n\n\t/// @}\n}//namespace glm\n\n#include \"orthonormalize.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/orthonormalize.inl",
    "content": "/// @ref gtx_orthonormalize\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m)\n\t{\n\t\tmat<3, 3, T, Q> r = m;\n\n\t\tr[0] = normalize(r[0]);\n\n\t\tT d0 = dot(r[0], r[1]);\n\t\tr[1] -= r[0] * d0;\n\t\tr[1] = normalize(r[1]);\n\n\t\tT d1 = dot(r[1], r[2]);\n\t\td0 = dot(r[0], r[2]);\n\t\tr[2] -= r[0] * d0 + r[1] * d1;\n\t\tr[2] = normalize(r[2]);\n\n\t\treturn r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y)\n\t{\n\t\treturn normalize(x - y * dot(y, x));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/perpendicular.hpp",
    "content": "/// @ref gtx_perpendicular\n/// @file glm/gtx/perpendicular.hpp\n///\n/// @see core (dependence)\n/// @see gtx_projection (dependence)\n///\n/// @defgroup gtx_perpendicular GLM_GTX_perpendicular\n/// @ingroup gtx\n///\n/// Include <glm/gtx/perpendicular.hpp> to use the features of this extension.\n///\n/// Perpendicular of a vector from other one\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/projection.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_perpendicular is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_perpendicular extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_perpendicular\n\t/// @{\n\n\t//! Projects x a perpendicular axis of Normal.\n\t//! From GLM_GTX_perpendicular extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType perp(genType const& x, genType const& Normal);\n\n\t/// @}\n}//namespace glm\n\n#include \"perpendicular.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/perpendicular.inl",
    "content": "/// @ref gtx_perpendicular\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType perp(genType const& x, genType const& Normal)\n\t{\n\t\treturn x - proj(x, Normal);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/polar_coordinates.hpp",
    "content": "/// @ref gtx_polar_coordinates\n/// @file glm/gtx/polar_coordinates.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_polar_coordinates GLM_GTX_polar_coordinates\n/// @ingroup gtx\n///\n/// Include <glm/gtx/polar_coordinates.hpp> to use the features of this extension.\n///\n/// Conversion from Euclidean space to polar space and revert.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_polar_coordinates is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_polar_coordinates extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_polar_coordinates\n\t/// @{\n\n\t/// Convert Euclidean to Polar coordinates, x is the xz distance, y, the latitude and z the longitude.\n\t///\n\t/// @see gtx_polar_coordinates\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> polar(\n\t\tvec<3, T, Q> const& euclidean);\n\n\t/// Convert Polar to Euclidean coordinates.\n\t///\n\t/// @see gtx_polar_coordinates\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> euclidean(\n\t\tvec<2, T, Q> const& polar);\n\n\t/// @}\n}//namespace glm\n\n#include \"polar_coordinates.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/polar_coordinates.inl",
    "content": "/// @ref gtx_polar_coordinates\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> polar\n\t(\n\t\tvec<3, T, Q> const& euclidean\n\t)\n\t{\n\t\tT const Length(length(euclidean));\n\t\tvec<3, T, Q> const tmp(euclidean / Length);\n\t\tT const xz_dist(sqrt(tmp.x * tmp.x + tmp.z * tmp.z));\n\n\t\treturn vec<3, T, Q>(\n\t\t\tasin(tmp.y),\t// latitude\n\t\t\tatan(tmp.x, tmp.z),\t\t// longitude\n\t\t\txz_dist);\t\t\t\t// xz distance\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> euclidean\n\t(\n\t\tvec<2, T, Q> const& polar\n\t)\n\t{\n\t\tT const latitude(polar.x);\n\t\tT const longitude(polar.y);\n\n\t\treturn vec<3, T, Q>(\n\t\t\tcos(latitude) * sin(longitude),\n\t\t\tsin(latitude),\n\t\t\tcos(latitude) * cos(longitude));\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/projection.hpp",
    "content": "/// @ref gtx_projection\n/// @file glm/gtx/projection.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_projection GLM_GTX_projection\n/// @ingroup gtx\n///\n/// Include <glm/gtx/projection.hpp> to use the features of this extension.\n///\n/// Projection of a vector to other one\n\n#pragma once\n\n// Dependency:\n#include \"../geometric.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_projection is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_projection extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_projection\n\t/// @{\n\n\t/// Projects x on Normal.\n\t///\n\t/// @param[in] x A vector to project\n\t/// @param[in] Normal A normal that doesn't need to be of unit length.\n\t///\n\t/// @see gtx_projection\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType proj(genType const& x, genType const& Normal);\n\n\t/// @}\n}//namespace glm\n\n#include \"projection.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/projection.inl",
    "content": "/// @ref gtx_projection\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType proj(genType const& x, genType const& Normal)\n\t{\n\t\treturn glm::dot(x, Normal) / glm::dot(Normal, Normal) * Normal;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/quaternion.hpp",
    "content": "/// @ref gtx_quaternion\n/// @file glm/gtx/quaternion.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_quaternion GLM_GTX_quaternion\n/// @ingroup gtx\n///\n/// Include <glm/gtx/quaternion.hpp> to use the features of this extension.\n///\n/// Extented quaternion types and functions\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/constants.hpp\"\n#include \"../gtc/quaternion.hpp\"\n#include \"../ext/quaternion_exponential.hpp\"\n#include \"../gtx/norm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_quaternion extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_quaternion\n\t/// @{\n\n\t/// Create an identity quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> quat_identity();\n\n\t/// Compute a cross product between a quaternion and a vector.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> cross(\n\t\tqua<T, Q> const& q,\n\t\tvec<3, T, Q> const& v);\n\n\t//! Compute a cross product between a vector and a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> cross(\n\t\tvec<3, T, Q> const& v,\n\t\tqua<T, Q> const& q);\n\n\t//! Compute a point on a path according squad equation.\n\t//! q1 and q2 are control points; s1 and s2 are intermediate control points.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> squad(\n\t\tqua<T, Q> const& q1,\n\t\tqua<T, Q> const& q2,\n\t\tqua<T, Q> const& s1,\n\t\tqua<T, Q> const& s2,\n\t\tT const& h);\n\n\t//! Returns an intermediate control point for squad interpolation.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> intermediate(\n\t\tqua<T, Q> const& prev,\n\t\tqua<T, Q> const& curr,\n\t\tqua<T, Q> const& next);\n\n\t//! Returns quarternion square root.\n\t///\n\t/// @see gtx_quaternion\n\t//template<typename T, qualifier Q>\n\t//qua<T, Q> sqrt(\n\t//\tqua<T, Q> const& q);\n\n\t//! Rotates a 3 components vector by a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rotate(\n\t\tqua<T, Q> const& q,\n\t\tvec<3, T, Q> const& v);\n\n\t/// Rotates a 4 components vector by a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> rotate(\n\t\tqua<T, Q> const& q,\n\t\tvec<4, T, Q> const& v);\n\n\t/// Extract the real component of a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T extractRealComponent(\n\t\tqua<T, Q> const& q);\n\n\t/// Converts a quaternion to a 3 * 3 matrix.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> toMat3(\n\t\tqua<T, Q> const& x){return mat3_cast(x);}\n\n\t/// Converts a quaternion to a 4 * 4 matrix.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> toMat4(\n\t\tqua<T, Q> const& x){return mat4_cast(x);}\n\n\t/// Converts a 3 * 3 matrix to a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> toQuat(\n\t\tmat<3, 3, T, Q> const& x){return quat_cast(x);}\n\n\t/// Converts a 4 * 4 matrix to a quaternion.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> toQuat(\n\t\tmat<4, 4, T, Q> const& x){return quat_cast(x);}\n\n\t/// Quaternion interpolation using the rotation short path.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> shortMix(\n\t\tqua<T, Q> const& x,\n\t\tqua<T, Q> const& y,\n\t\tT const& a);\n\n\t/// Quaternion normalized linear interpolation.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> fastMix(\n\t\tqua<T, Q> const& x,\n\t\tqua<T, Q> const& y,\n\t\tT const& a);\n\n\t/// Compute the rotation between two vectors.\n\t/// @param orig vector, needs to be normalized\n\t/// @param dest vector, needs to be normalized\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> rotation(\n\t\tvec<3, T, Q> const& orig,\n\t\tvec<3, T, Q> const& dest);\n\n\t/// Returns the squared length of x.\n\t///\n\t/// @see gtx_quaternion\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR T length2(qua<T, Q> const& q);\n\n\t/// @}\n}//namespace glm\n\n#include \"quaternion.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/quaternion.inl",
    "content": "/// @ref gtx_quaternion\n\n#include <limits>\n#include \"../gtc/constants.hpp\"\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> quat_identity()\n\t{\n\t\treturn qua<T, Q>(static_cast<T>(1), static_cast<T>(0), static_cast<T>(0), static_cast<T>(0));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> cross(vec<3, T, Q> const& v, qua<T, Q> const& q)\n\t{\n\t\treturn inverse(q) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> cross(qua<T, Q> const& q, vec<3, T, Q> const& v)\n\t{\n\t\treturn q * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> squad\n\t(\n\t\tqua<T, Q> const& q1,\n\t\tqua<T, Q> const& q2,\n\t\tqua<T, Q> const& s1,\n\t\tqua<T, Q> const& s2,\n\t\tT const& h)\n\t{\n\t\treturn mix(mix(q1, q2, h), mix(s1, s2, h), static_cast<T>(2) * (static_cast<T>(1) - h) * h);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> intermediate\n\t(\n\t\tqua<T, Q> const& prev,\n\t\tqua<T, Q> const& curr,\n\t\tqua<T, Q> const& next\n\t)\n\t{\n\t\tqua<T, Q> invQuat = inverse(curr);\n\t\treturn exp((log(next * invQuat) + log(prev * invQuat)) / static_cast<T>(-4)) * curr;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotate(qua<T, Q> const& q, vec<3, T, Q> const& v)\n\t{\n\t\treturn q * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> rotate(qua<T, Q> const& q, vec<4, T, Q> const& v)\n\t{\n\t\treturn q * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T extractRealComponent(qua<T, Q> const& q)\n\t{\n\t\tT w = static_cast<T>(1) - q.x * q.x - q.y * q.y - q.z * q.z;\n\t\tif(w < T(0))\n\t\t\treturn T(0);\n\t\telse\n\t\t\treturn -sqrt(w);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER GLM_CONSTEXPR T length2(qua<T, Q> const& q)\n\t{\n\t\treturn q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> shortMix(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)\n\t{\n\t\tif(a <= static_cast<T>(0)) return x;\n\t\tif(a >= static_cast<T>(1)) return y;\n\n\t\tT fCos = dot(x, y);\n\t\tqua<T, Q> y2(y); //BUG!!! qua<T> y2;\n\t\tif(fCos < static_cast<T>(0))\n\t\t{\n\t\t\ty2 = -y;\n\t\t\tfCos = -fCos;\n\t\t}\n\n\t\t//if(fCos > 1.0f) // problem\n\t\tT k0, k1;\n\t\tif(fCos > (static_cast<T>(1) - epsilon<T>()))\n\t\t{\n\t\t\tk0 = static_cast<T>(1) - a;\n\t\t\tk1 = static_cast<T>(0) + a; //BUG!!! 1.0f + a;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tT fSin = sqrt(T(1) - fCos * fCos);\n\t\t\tT fAngle = atan(fSin, fCos);\n\t\t\tT fOneOverSin = static_cast<T>(1) / fSin;\n\t\t\tk0 = sin((static_cast<T>(1) - a) * fAngle) * fOneOverSin;\n\t\t\tk1 = sin((static_cast<T>(0) + a) * fAngle) * fOneOverSin;\n\t\t}\n\n\t\treturn qua<T, Q>(\n\t\t\tk0 * x.w + k1 * y2.w,\n\t\t\tk0 * x.x + k1 * y2.x,\n\t\t\tk0 * x.y + k1 * y2.y,\n\t\t\tk0 * x.z + k1 * y2.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> fastMix(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)\n\t{\n\t\treturn glm::normalize(x * (static_cast<T>(1) - a) + (y * a));\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> rotation(vec<3, T, Q> const& orig, vec<3, T, Q> const& dest)\n\t{\n\t\tT cosTheta = dot(orig, dest);\n\t\tvec<3, T, Q> rotationAxis;\n\n\t\tif(cosTheta >= static_cast<T>(1) - epsilon<T>()) {\n\t\t\t// orig and dest point in the same direction\n\t\t\treturn quat_identity<T,Q>();\n\t\t}\n\n\t\tif(cosTheta < static_cast<T>(-1) + epsilon<T>())\n\t\t{\n\t\t\t// special case when vectors in opposite directions :\n\t\t\t// there is no \"ideal\" rotation axis\n\t\t\t// So guess one; any will do as long as it's perpendicular to start\n\t\t\t// This implementation favors a rotation around the Up axis (Y),\n\t\t\t// since it's often what you want to do.\n\t\t\trotationAxis = cross(vec<3, T, Q>(0, 0, 1), orig);\n\t\t\tif(length2(rotationAxis) < epsilon<T>()) // bad luck, they were parallel, try again!\n\t\t\t\trotationAxis = cross(vec<3, T, Q>(1, 0, 0), orig);\n\n\t\t\trotationAxis = normalize(rotationAxis);\n\t\t\treturn angleAxis(pi<T>(), rotationAxis);\n\t\t}\n\n\t\t// Implementation from Stan Melax's Game Programming Gems 1 article\n\t\trotationAxis = cross(orig, dest);\n\n\t\tT s = sqrt((T(1) + cosTheta) * static_cast<T>(2));\n\t\tT invs = static_cast<T>(1) / s;\n\n\t\treturn qua<T, Q>(\n\t\t\ts * static_cast<T>(0.5f),\n\t\t\trotationAxis.x * invs,\n\t\t\trotationAxis.y * invs,\n\t\t\trotationAxis.z * invs);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/range.hpp",
    "content": "/// @ref gtx_range\n/// @file glm/gtx/range.hpp\n/// @author Joshua Moerman\n///\n/// @defgroup gtx_range GLM_GTX_range\n/// @ingroup gtx\n///\n/// Include <glm/gtx/range.hpp> to use the features of this extension.\n///\n/// Defines begin and end for vectors and matrices. Useful for range-based for loop.\n/// The range is defined over the elements, not over columns or rows (e.g. mat4 has 16 elements).\n\n#pragma once\n\n// Dependencies\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_range is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_range extension included\")\n#\tendif\n#endif\n\n#include \"../gtc/type_ptr.hpp\"\n#include \"../gtc/vec1.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup gtx_range\n\t/// @{\n\n#\tif GLM_COMPILER & GLM_COMPILER_VC\n#\t\tpragma warning(push)\n#\t\tpragma warning(disable : 4100) // unreferenced formal parameter\n#\tendif\n\n\ttemplate<typename T, qualifier Q>\n\tinline length_t components(vec<1, T, Q> const& v)\n\t{\n\t\treturn v.length();\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tinline length_t components(vec<2, T, Q> const& v)\n\t{\n\t\treturn v.length();\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tinline length_t components(vec<3, T, Q> const& v)\n\t{\n\t\treturn v.length();\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tinline length_t components(vec<4, T, Q> const& v)\n\t{\n\t\treturn v.length();\n\t}\n\n\ttemplate<typename genType>\n\tinline length_t components(genType const& m)\n\t{\n\t\treturn m.length() * m[0].length();\n\t}\n\n\ttemplate<typename genType>\n\tinline typename genType::value_type const * begin(genType const& v)\n\t{\n\t\treturn value_ptr(v);\n\t}\n\n\ttemplate<typename genType>\n\tinline typename genType::value_type const * end(genType const& v)\n\t{\n\t\treturn begin(v) + components(v);\n\t}\n\n\ttemplate<typename genType>\n\tinline typename genType::value_type * begin(genType& v)\n\t{\n\t\treturn value_ptr(v);\n\t}\n\n\ttemplate<typename genType>\n\tinline typename genType::value_type * end(genType& v)\n\t{\n\t\treturn begin(v) + components(v);\n\t}\n\n#\tif GLM_COMPILER & GLM_COMPILER_VC\n#\t\tpragma warning(pop)\n#\tendif\n\n\t/// @}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/raw_data.hpp",
    "content": "/// @ref gtx_raw_data\n/// @file glm/gtx/raw_data.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_raw_data GLM_GTX_raw_data\n/// @ingroup gtx\n///\n/// Include <glm/gtx/raw_data.hpp> to use the features of this extension.\n///\n/// Projection of a vector to other one\n\n#pragma once\n\n// Dependencies\n#include \"../ext/scalar_uint_sized.hpp\"\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_raw_data is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_raw_data extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_raw_data\n\t/// @{\n\n\t//! Type for byte numbers.\n\t//! From GLM_GTX_raw_data extension.\n\ttypedef detail::uint8\t\tbyte;\n\n\t//! Type for word numbers.\n\t//! From GLM_GTX_raw_data extension.\n\ttypedef detail::uint16\t\tword;\n\n\t//! Type for dword numbers.\n\t//! From GLM_GTX_raw_data extension.\n\ttypedef detail::uint32\t\tdword;\n\n\t//! Type for qword numbers.\n\t//! From GLM_GTX_raw_data extension.\n\ttypedef detail::uint64\t\tqword;\n\n\t/// @}\n}// namespace glm\n\n#include \"raw_data.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/raw_data.inl",
    "content": "/// @ref gtx_raw_data\n\n"
  },
  {
    "path": "libraries/glm/gtx/rotate_normalized_axis.hpp",
    "content": "/// @ref gtx_rotate_normalized_axis\n/// @file glm/gtx/rotate_normalized_axis.hpp\n///\n/// @see core (dependence)\n/// @see gtc_matrix_transform\n/// @see gtc_quaternion\n///\n/// @defgroup gtx_rotate_normalized_axis GLM_GTX_rotate_normalized_axis\n/// @ingroup gtx\n///\n/// Include <glm/gtx/rotate_normalized_axis.hpp> to use the features of this extension.\n///\n/// Quaternions and matrices rotations around normalized axis.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/epsilon.hpp\"\n#include \"../gtc/quaternion.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_rotate_normalized_axis is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_rotate_normalized_axis extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_rotate_normalized_axis\n\t/// @{\n\n\t/// Builds a rotation 4 * 4 matrix created from a normalized axis and an angle.\n\t///\n\t/// @param m Input matrix multiplied by this rotation matrix.\n\t/// @param angle Rotation angle expressed in radians.\n\t/// @param axis Rotation axis, must be normalized.\n\t/// @tparam T Value type used to build the matrix. Currently supported: half (not recommended), float or double.\n\t///\n\t/// @see gtx_rotate_normalized_axis\n\t/// @see - rotate(T angle, T x, T y, T z)\n\t/// @see - rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)\n\t/// @see - rotate(T angle, vec<3, T, Q> const& v)\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> rotateNormalizedAxis(\n\t\tmat<4, 4, T, Q> const& m,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& axis);\n\n\t/// Rotates a quaternion from a vector of 3 components normalized axis and an angle.\n\t///\n\t/// @param q Source orientation\n\t/// @param angle Angle expressed in radians.\n\t/// @param axis Normalized axis of the rotation, must be normalized.\n\t///\n\t/// @see gtx_rotate_normalized_axis\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL qua<T, Q> rotateNormalizedAxis(\n\t\tqua<T, Q> const& q,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& axis);\n\n\t/// @}\n}//namespace glm\n\n#include \"rotate_normalized_axis.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/rotate_normalized_axis.inl",
    "content": "/// @ref gtx_rotate_normalized_axis\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotateNormalizedAxis\n\t(\n\t\tmat<4, 4, T, Q> const& m,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& v\n\t)\n\t{\n\t\tT const a = angle;\n\t\tT const c = cos(a);\n\t\tT const s = sin(a);\n\n\t\tvec<3, T, Q> const axis(v);\n\n\t\tvec<3, T, Q> const temp((static_cast<T>(1) - c) * axis);\n\n\t\tmat<4, 4, T, Q> Rotate;\n\t\tRotate[0][0] = c + temp[0] * axis[0];\n\t\tRotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2];\n\t\tRotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1];\n\n\t\tRotate[1][0] = 0 + temp[1] * axis[0] - s * axis[2];\n\t\tRotate[1][1] = c + temp[1] * axis[1];\n\t\tRotate[1][2] = 0 + temp[1] * axis[2] + s * axis[0];\n\n\t\tRotate[2][0] = 0 + temp[2] * axis[0] + s * axis[1];\n\t\tRotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0];\n\t\tRotate[2][2] = c + temp[2] * axis[2];\n\n\t\tmat<4, 4, T, Q> Result;\n\t\tResult[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];\n\t\tResult[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];\n\t\tResult[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];\n\t\tResult[3] = m[3];\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER qua<T, Q> rotateNormalizedAxis\n\t(\n\t\tqua<T, Q> const& q,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& v\n\t)\n\t{\n\t\tvec<3, T, Q> const Tmp(v);\n\n\t\tT const AngleRad(angle);\n\t\tT const Sin = sin(AngleRad * T(0.5));\n\n\t\treturn q * qua<T, Q>(cos(AngleRad * static_cast<T>(0.5)), Tmp.x * Sin, Tmp.y * Sin, Tmp.z * Sin);\n\t\t//return gtc::quaternion::cross(q, tquat<T, Q>(cos(AngleRad * T(0.5)), Tmp.x * fSin, Tmp.y * fSin, Tmp.z * fSin));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/rotate_vector.hpp",
    "content": "/// @ref gtx_rotate_vector\n/// @file glm/gtx/rotate_vector.hpp\n///\n/// @see core (dependence)\n/// @see gtx_transform (dependence)\n///\n/// @defgroup gtx_rotate_vector GLM_GTX_rotate_vector\n/// @ingroup gtx\n///\n/// Include <glm/gtx/rotate_vector.hpp> to use the features of this extension.\n///\n/// Function to directly rotate a vector\n\n#pragma once\n\n// Dependency:\n#include \"../gtx/transform.hpp\"\n#include \"../gtc/epsilon.hpp\"\n#include \"../ext/vector_relational.hpp\"\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_rotate_vector is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_rotate_vector extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_rotate_vector\n\t/// @{\n\n\t/// Returns Spherical interpolation between two vectors\n\t///\n\t/// @param x A first vector\n\t/// @param y A second vector\n\t/// @param a Interpolation factor. The interpolation is defined beyond the range [0, 1].\n\t///\n\t/// @see gtx_rotate_vector\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> slerp(\n\t\tvec<3, T, Q> const& x,\n\t\tvec<3, T, Q> const& y,\n\t\tT const& a);\n\n\t//! Rotate a two dimensional vector.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<2, T, Q> rotate(\n\t\tvec<2, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a three dimensional vector around an axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rotate(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& normal);\n\n\t//! Rotate a four dimensional vector around an axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> rotate(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& normal);\n\n\t//! Rotate a three dimensional vector around the X axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rotateX(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a three dimensional vector around the Y axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rotateY(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a three dimensional vector around the Z axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<3, T, Q> rotateZ(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a four dimensional vector around the X axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> rotateX(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a four dimensional vector around the Y axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> rotateY(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Rotate a four dimensional vector around the Z axis.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<4, T, Q> rotateZ(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle);\n\n\t//! Build a rotation matrix from a normal and a up vector.\n\t//! From GLM_GTX_rotate_vector extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> orientation(\n\t\tvec<3, T, Q> const& Normal,\n\t\tvec<3, T, Q> const& Up);\n\n\t/// @}\n}//namespace glm\n\n#include \"rotate_vector.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/rotate_vector.inl",
    "content": "/// @ref gtx_rotate_vector\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> slerp\n\t(\n\t\tvec<3, T, Q> const& x,\n\t\tvec<3, T, Q> const& y,\n\t\tT const& a\n\t)\n\t{\n\t\t// get cosine of angle between vectors (-1 -> 1)\n\t\tT CosAlpha = dot(x, y);\n\t\t// get angle (0 -> pi)\n\t\tT Alpha = acos(CosAlpha);\n\t\t// get sine of angle between vectors (0 -> 1)\n\t\tT SinAlpha = sin(Alpha);\n\t\t// this breaks down when SinAlpha = 0, i.e. Alpha = 0 or pi\n\t\tT t1 = sin((static_cast<T>(1) - a) * Alpha) / SinAlpha;\n\t\tT t2 = sin(a * Alpha) / SinAlpha;\n\n\t\t// interpolate src vectors\n\t\treturn x * t1 + y * t2;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, T, Q> rotate\n\t(\n\t\tvec<2, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<2, T, Q> Result;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.x = v.x * Cos - v.y * Sin;\n\t\tResult.y = v.x * Sin + v.y * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotate\n\t(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& normal\n\t)\n\t{\n\t\treturn mat<3, 3, T, Q>(glm::rotate(angle, normal)) * v;\n\t}\n\t/*\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotateGTX(\n\t\tconst vec<3, T, Q>& x,\n\t\tT angle,\n\t\tconst vec<3, T, Q>& normal)\n\t{\n\t\tconst T Cos = cos(radians(angle));\n\t\tconst T Sin = sin(radians(angle));\n\t\treturn x * Cos + ((x * normal) * (T(1) - Cos)) * normal + cross(x, normal) * Sin;\n\t}\n\t*/\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> rotate\n\t(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle,\n\t\tvec<3, T, Q> const& normal\n\t)\n\t{\n\t\treturn rotate(angle, normal) * v;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotateX\n\t(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<3, T, Q> Result(v);\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.y = v.y * Cos - v.z * Sin;\n\t\tResult.z = v.y * Sin + v.z * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotateY\n\t(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<3, T, Q> Result = v;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.x =  v.x * Cos + v.z * Sin;\n\t\tResult.z = -v.x * Sin + v.z * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, T, Q> rotateZ\n\t(\n\t\tvec<3, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<3, T, Q> Result = v;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.x = v.x * Cos - v.y * Sin;\n\t\tResult.y = v.x * Sin + v.y * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> rotateX\n\t(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<4, T, Q> Result = v;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.y = v.y * Cos - v.z * Sin;\n\t\tResult.z = v.y * Sin + v.z * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> rotateY\n\t(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<4, T, Q> Result = v;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.x =  v.x * Cos + v.z * Sin;\n\t\tResult.z = -v.x * Sin + v.z * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, T, Q> rotateZ\n\t(\n\t\tvec<4, T, Q> const& v,\n\t\tT const& angle\n\t)\n\t{\n\t\tvec<4, T, Q> Result = v;\n\t\tT const Cos(cos(angle));\n\t\tT const Sin(sin(angle));\n\n\t\tResult.x = v.x * Cos - v.y * Sin;\n\t\tResult.y = v.x * Sin + v.y * Cos;\n\t\treturn Result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> orientation\n\t(\n\t\tvec<3, T, Q> const& Normal,\n\t\tvec<3, T, Q> const& Up\n\t)\n\t{\n\t\tif(all(equal(Normal, Up, epsilon<T>())))\n\t\t\treturn mat<4, 4, T, Q>(static_cast<T>(1));\n\n\t\tvec<3, T, Q> RotationAxis = cross(Up, Normal);\n\t\tT Angle = acos(dot(Normal, Up));\n\n\t\treturn rotate(Angle, RotationAxis);\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/scalar_multiplication.hpp",
    "content": "/// @ref gtx\n/// @file glm/gtx/scalar_multiplication.hpp\n/// @author Joshua Moerman\n///\n/// Include <glm/gtx/scalar_multiplication.hpp> to use the features of this extension.\n///\n/// Enables scalar multiplication for all types\n///\n/// Since GLSL is very strict about types, the following (often used) combinations do not work:\n///    double * vec4\n///    int * vec4\n///    vec4 / int\n/// So we'll fix that! Of course \"float * vec4\" should remain the same (hence the enable_if magic)\n\n#pragma once\n\n#include \"../detail/setup.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_scalar_multiplication is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_scalar_multiplication extension included\")\n#\tendif\n#endif\n\n#include \"../vec2.hpp\"\n#include \"../vec3.hpp\"\n#include \"../vec4.hpp\"\n#include \"../mat2x2.hpp\"\n#include <type_traits>\n\nnamespace glm\n{\n\ttemplate<typename T, typename Vec>\n\tusing return_type_scalar_multiplication = typename std::enable_if<\n\t\t!std::is_same<T, float>::value       // T may not be a float\n\t\t&& std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...)\n\t>::type;\n\n#define GLM_IMPLEMENT_SCAL_MULT(Vec) \\\n\ttemplate<typename T> \\\n\treturn_type_scalar_multiplication<T, Vec> \\\n\toperator*(T const& s, Vec rh){ \\\n\t\treturn rh *= static_cast<float>(s); \\\n\t} \\\n\t \\\n\ttemplate<typename T> \\\n\treturn_type_scalar_multiplication<T, Vec> \\\n\toperator*(Vec lh, T const& s){ \\\n\t\treturn lh *= static_cast<float>(s); \\\n\t} \\\n\t \\\n\ttemplate<typename T> \\\n\treturn_type_scalar_multiplication<T, Vec> \\\n\toperator/(Vec lh, T const& s){ \\\n\t\treturn lh *= 1.0f / static_cast<float>(s); \\\n\t}\n\nGLM_IMPLEMENT_SCAL_MULT(vec2)\nGLM_IMPLEMENT_SCAL_MULT(vec3)\nGLM_IMPLEMENT_SCAL_MULT(vec4)\n\nGLM_IMPLEMENT_SCAL_MULT(mat2)\nGLM_IMPLEMENT_SCAL_MULT(mat2x3)\nGLM_IMPLEMENT_SCAL_MULT(mat2x4)\nGLM_IMPLEMENT_SCAL_MULT(mat3x2)\nGLM_IMPLEMENT_SCAL_MULT(mat3)\nGLM_IMPLEMENT_SCAL_MULT(mat3x4)\nGLM_IMPLEMENT_SCAL_MULT(mat4x2)\nGLM_IMPLEMENT_SCAL_MULT(mat4x3)\nGLM_IMPLEMENT_SCAL_MULT(mat4)\n\n#undef GLM_IMPLEMENT_SCAL_MULT\n} // namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/scalar_relational.hpp",
    "content": "/// @ref gtx_scalar_relational\n/// @file glm/gtx/scalar_relational.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_scalar_relational GLM_GTX_scalar_relational\n/// @ingroup gtx\n///\n/// Include <glm/gtx/scalar_relational.hpp> to use the features of this extension.\n///\n/// Extend a position from a source to a position at a defined length.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_extend extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_scalar_relational\n\t/// @{\n\n\n\n\t/// @}\n}//namespace glm\n\n#include \"scalar_relational.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/scalar_relational.inl",
    "content": "/// @ref gtx_scalar_relational\n\nnamespace glm\n{\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool lessThan\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn x < y;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool lessThanEqual\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn x <= y;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool greaterThan\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn x > y;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool greaterThanEqual\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn x >= y;\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool equal\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn detail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(x, y);\n\t}\n\n\ttemplate<typename T>\n\tGLM_FUNC_QUALIFIER bool notEqual\n\t(\n\t\tT const& x,\n\t\tT const& y\n\t)\n\t{\n\t\treturn !detail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(x, y);\n\t}\n\n\tGLM_FUNC_QUALIFIER bool any\n\t(\n\t\tbool const& x\n\t)\n\t{\n\t\treturn x;\n\t}\n\n\tGLM_FUNC_QUALIFIER bool all\n\t(\n\t\tbool const& x\n\t)\n\t{\n\t\treturn x;\n\t}\n\n\tGLM_FUNC_QUALIFIER bool not_\n\t(\n\t\tbool const& x\n\t)\n\t{\n\t\treturn !x;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/spline.hpp",
    "content": "/// @ref gtx_spline\n/// @file glm/gtx/spline.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_spline GLM_GTX_spline\n/// @ingroup gtx\n///\n/// Include <glm/gtx/spline.hpp> to use the features of this extension.\n///\n/// Spline functions\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/optimum_pow.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_spline is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_spline extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_spline\n\t/// @{\n\n\t/// Return a point from a catmull rom curve.\n\t/// @see gtx_spline extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType catmullRom(\n\t\tgenType const& v1,\n\t\tgenType const& v2,\n\t\tgenType const& v3,\n\t\tgenType const& v4,\n\t\ttypename genType::value_type const& s);\n\n\t/// Return a point from a hermite curve.\n\t/// @see gtx_spline extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType hermite(\n\t\tgenType const& v1,\n\t\tgenType const& t1,\n\t\tgenType const& v2,\n\t\tgenType const& t2,\n\t\ttypename genType::value_type const& s);\n\n\t/// Return a point from a cubic curve.\n\t/// @see gtx_spline extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType cubic(\n\t\tgenType const& v1,\n\t\tgenType const& v2,\n\t\tgenType const& v3,\n\t\tgenType const& v4,\n\t\ttypename genType::value_type const& s);\n\n\t/// @}\n}//namespace glm\n\n#include \"spline.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/spline.inl",
    "content": "/// @ref gtx_spline\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType catmullRom\n\t(\n\t\tgenType const& v1,\n\t\tgenType const& v2,\n\t\tgenType const& v3,\n\t\tgenType const& v4,\n\t\ttypename genType::value_type const& s\n\t)\n\t{\n\t\ttypename genType::value_type s2 = pow2(s);\n\t\ttypename genType::value_type s3 = pow3(s);\n\n\t\ttypename genType::value_type f1 = -s3 + typename genType::value_type(2) * s2 - s;\n\t\ttypename genType::value_type f2 = typename genType::value_type(3) * s3 - typename genType::value_type(5) * s2 + typename genType::value_type(2);\n\t\ttypename genType::value_type f3 = typename genType::value_type(-3) * s3 + typename genType::value_type(4) * s2 + s;\n\t\ttypename genType::value_type f4 = s3 - s2;\n\n\t\treturn (f1 * v1 + f2 * v2 + f3 * v3 + f4 * v4) / typename genType::value_type(2);\n\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType hermite\n\t(\n\t\tgenType const& v1,\n\t\tgenType const& t1,\n\t\tgenType const& v2,\n\t\tgenType const& t2,\n\t\ttypename genType::value_type const& s\n\t)\n\t{\n\t\ttypename genType::value_type s2 = pow2(s);\n\t\ttypename genType::value_type s3 = pow3(s);\n\n\t\ttypename genType::value_type f1 = typename genType::value_type(2) * s3 - typename genType::value_type(3) * s2 + typename genType::value_type(1);\n\t\ttypename genType::value_type f2 = typename genType::value_type(-2) * s3 + typename genType::value_type(3) * s2;\n\t\ttypename genType::value_type f3 = s3 - typename genType::value_type(2) * s2 + s;\n\t\ttypename genType::value_type f4 = s3 - s2;\n\n\t\treturn f1 * v1 + f2 * v2 + f3 * t1 + f4 * t2;\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType cubic\n\t(\n\t\tgenType const& v1,\n\t\tgenType const& v2,\n\t\tgenType const& v3,\n\t\tgenType const& v4,\n\t\ttypename genType::value_type const& s\n\t)\n\t{\n\t\treturn ((v1 * s + v2) * s + v3) * s + v4;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/std_based_type.hpp",
    "content": "/// @ref gtx_std_based_type\n/// @file glm/gtx/std_based_type.hpp\n///\n/// @see core (dependence)\n/// @see gtx_extented_min_max (dependence)\n///\n/// @defgroup gtx_std_based_type GLM_GTX_std_based_type\n/// @ingroup gtx\n///\n/// Include <glm/gtx/std_based_type.hpp> to use the features of this extension.\n///\n/// Adds vector types based on STL value types.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include <cstdlib>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_std_based_type is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_std_based_type extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_std_based_type\n\t/// @{\n\n\t/// Vector type based of one std::size_t component.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<1, std::size_t, defaultp>\t\tsize1;\n\n\t/// Vector type based of two std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<2, std::size_t, defaultp>\t\tsize2;\n\n\t/// Vector type based of three std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<3, std::size_t, defaultp>\t\tsize3;\n\n\t/// Vector type based of four std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<4, std::size_t, defaultp>\t\tsize4;\n\n\t/// Vector type based of one std::size_t component.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<1, std::size_t, defaultp>\t\tsize1_t;\n\n\t/// Vector type based of two std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<2, std::size_t, defaultp>\t\tsize2_t;\n\n\t/// Vector type based of three std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<3, std::size_t, defaultp>\t\tsize3_t;\n\n\t/// Vector type based of four std::size_t components.\n\t/// @see GLM_GTX_std_based_type\n\ttypedef vec<4, std::size_t, defaultp>\t\tsize4_t;\n\n\t/// @}\n}//namespace glm\n\n#include \"std_based_type.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/std_based_type.inl",
    "content": "/// @ref gtx_std_based_type\n\nnamespace glm\n{\n\n}\n"
  },
  {
    "path": "libraries/glm/gtx/string_cast.hpp",
    "content": "/// @ref gtx_string_cast\n/// @file glm/gtx/string_cast.hpp\n///\n/// @see core (dependence)\n/// @see gtx_integer (dependence)\n/// @see gtx_quaternion (dependence)\n///\n/// @defgroup gtx_string_cast GLM_GTX_string_cast\n/// @ingroup gtx\n///\n/// Include <glm/gtx/string_cast.hpp> to use the features of this extension.\n///\n/// Setup strings for GLM type values\n///\n/// This extension is not supported with CUDA\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/type_precision.hpp\"\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtx/dual_quaternion.hpp\"\n#include <string>\n#include <cmath>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_string_cast is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_string_cast extension included\")\n#\tendif\n#endif\n\n#if(GLM_COMPILER & GLM_COMPILER_CUDA)\n#\terror \"GLM_GTX_string_cast is not supported on CUDA compiler\"\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_string_cast\n\t/// @{\n\n\t/// Create a string from a GLM vector or matrix typed variable.\n\t/// @see gtx_string_cast extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL std::string to_string(genType const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"string_cast.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/string_cast.inl",
    "content": "/// @ref gtx_string_cast\n\n#include <cstdarg>\n#include <cstdio>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate <typename T>\n\tstruct cast\n\t{\n\t\ttypedef T value_type;\n\t};\n\n\ttemplate <>\n\tstruct cast<float>\n\t{\n\t\ttypedef double value_type;\n\t};\n\n\tGLM_FUNC_QUALIFIER std::string format(const char* msg, ...)\n\t{\n\t\tstd::size_t const STRING_BUFFER(4096);\n\t\tchar text[STRING_BUFFER];\n\t\tva_list list;\n\n\t\tif(msg == GLM_NULLPTR)\n\t\t\treturn std::string();\n\n\t\tva_start(list, msg);\n#\t\tif (GLM_COMPILER & GLM_COMPILER_VC)\n\t\t\tvsprintf_s(text, STRING_BUFFER, msg, list);\n#\t\telse//\n\t\t\tstd::vsprintf(text, msg, list);\n#\t\tendif//\n\t\tva_end(list);\n\n\t\treturn std::string(text);\n\t}\n\n\tstatic const char* LabelTrue = \"true\";\n\tstatic const char* LabelFalse = \"false\";\n\n\ttemplate<typename T, bool isFloat = false>\n\tstruct literal\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"%d\";}\n\t};\n\n\ttemplate<typename T>\n\tstruct literal<T, true>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"%f\";}\n\t};\n\n#\tif GLM_MODEL == GLM_MODEL_32 && GLM_COMPILER && GLM_COMPILER_VC\n\ttemplate<>\n\tstruct literal<uint64_t, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"%lld\";}\n\t};\n\n\ttemplate<>\n\tstruct literal<int64_t, false>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"%lld\";}\n\t};\n#\tendif//GLM_MODEL == GLM_MODEL_32 && GLM_COMPILER && GLM_COMPILER_VC\n\n\ttemplate<typename T>\n\tstruct prefix{};\n\n\ttemplate<>\n\tstruct prefix<float>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<double>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"d\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<bool>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"b\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<uint8_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"u8\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<int8_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"i8\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<uint16_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"u16\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<int16_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"i16\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<uint32_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"u\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<int32_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"i\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<uint64_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"u64\";}\n\t};\n\n\ttemplate<>\n\tstruct prefix<int64_t>\n\t{\n\t\tGLM_FUNC_QUALIFIER static char const * value() {return \"i64\";}\n\t};\n\n\ttemplate<typename matType>\n\tstruct compute_to_string\n\t{};\n\n\ttemplate<qualifier Q>\n\tstruct compute_to_string<vec<1, bool, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<1, bool, Q> const& x)\n\t\t{\n\t\t\treturn detail::format(\"bvec1(%s)\",\n\t\t\t\tx[0] ? detail::LabelTrue : detail::LabelFalse);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_to_string<vec<2, bool, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<2, bool, Q> const& x)\n\t\t{\n\t\t\treturn detail::format(\"bvec2(%s, %s)\",\n\t\t\t\tx[0] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[1] ? detail::LabelTrue : detail::LabelFalse);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_to_string<vec<3, bool, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<3, bool, Q> const& x)\n\t\t{\n\t\t\treturn detail::format(\"bvec3(%s, %s, %s)\",\n\t\t\t\tx[0] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[1] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[2] ? detail::LabelTrue : detail::LabelFalse);\n\t\t}\n\t};\n\n\ttemplate<qualifier Q>\n\tstruct compute_to_string<vec<4, bool, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<4, bool, Q> const& x)\n\t\t{\n\t\t\treturn detail::format(\"bvec4(%s, %s, %s, %s)\",\n\t\t\t\tx[0] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[1] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[2] ? detail::LabelTrue : detail::LabelFalse,\n\t\t\t\tx[3] ? detail::LabelTrue : detail::LabelFalse);\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<vec<1, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<1, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%svec1(%s)\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<vec<2, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<2, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%svec2(%s, %s)\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<vec<3, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<3, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%svec3(%s, %s, %s)\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<vec<4, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(vec<4, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%svec4(%s, %s, %s, %s)\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[3]));\n\t\t}\n\t};\n\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<2, 2, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<2, 2, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat2x2((%s, %s), (%s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<2, 3, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<2, 3, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat2x3((%s, %s, %s), (%s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<2, 4, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<2, 4, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat2x4((%s, %s, %s, %s), (%s, %s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]), static_cast<typename cast<T>::value_type>(x[0][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]), static_cast<typename cast<T>::value_type>(x[1][3]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<3, 2, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<3, 2, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat3x2((%s, %s), (%s, %s), (%s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<3, 3, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<3, 3, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat3x3((%s, %s, %s), (%s, %s, %s), (%s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]), static_cast<typename cast<T>::value_type>(x[2][2]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<3, 4, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<3, 4, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat3x4((%s, %s, %s, %s), (%s, %s, %s, %s), (%s, %s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]), static_cast<typename cast<T>::value_type>(x[0][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]), static_cast<typename cast<T>::value_type>(x[1][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]), static_cast<typename cast<T>::value_type>(x[2][2]), static_cast<typename cast<T>::value_type>(x[2][3]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<4, 2, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<4, 2, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat4x2((%s, %s), (%s, %s), (%s, %s), (%s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[3][0]), static_cast<typename cast<T>::value_type>(x[3][1]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<4, 3, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<4, 3, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat4x3((%s, %s, %s), (%s, %s, %s), (%s, %s, %s), (%s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]), static_cast<typename cast<T>::value_type>(x[2][2]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[3][0]), static_cast<typename cast<T>::value_type>(x[3][1]), static_cast<typename cast<T>::value_type>(x[3][2]));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<mat<4, 4, T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(mat<4, 4, T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%smat4x4((%s, %s, %s, %s), (%s, %s, %s, %s), (%s, %s, %s, %s), (%s, %s, %s, %s))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[0][0]), static_cast<typename cast<T>::value_type>(x[0][1]), static_cast<typename cast<T>::value_type>(x[0][2]), static_cast<typename cast<T>::value_type>(x[0][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[1][0]), static_cast<typename cast<T>::value_type>(x[1][1]), static_cast<typename cast<T>::value_type>(x[1][2]), static_cast<typename cast<T>::value_type>(x[1][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[2][0]), static_cast<typename cast<T>::value_type>(x[2][1]), static_cast<typename cast<T>::value_type>(x[2][2]), static_cast<typename cast<T>::value_type>(x[2][3]),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x[3][0]), static_cast<typename cast<T>::value_type>(x[3][1]), static_cast<typename cast<T>::value_type>(x[3][2]), static_cast<typename cast<T>::value_type>(x[3][3]));\n\t\t}\n\t};\n\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<qua<T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(qua<T, Q> const& q)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%squat(%s, {%s, %s, %s})\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(q.w),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(q.x),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(q.y),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(q.z));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_to_string<tdualquat<T, Q> >\n\t{\n\t\tGLM_FUNC_QUALIFIER static std::string call(tdualquat<T, Q> const& x)\n\t\t{\n\t\t\tchar const * PrefixStr = prefix<T>::value();\n\t\t\tchar const * LiteralStr = literal<T, std::numeric_limits<T>::is_iec559>::value();\n\t\t\tstd::string FormatStr(detail::format(\"%sdualquat((%s, {%s, %s, %s}), (%s, {%s, %s, %s}))\",\n\t\t\t\tPrefixStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr,\n\t\t\t\tLiteralStr, LiteralStr, LiteralStr, LiteralStr));\n\n\t\t\treturn detail::format(FormatStr.c_str(),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.real.w),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.real.x),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.real.y),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.real.z),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.dual.w),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.dual.x),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.dual.y),\n\t\t\t\tstatic_cast<typename cast<T>::value_type>(x.dual.z));\n\t\t}\n\t};\n\n}//namespace detail\n\ntemplate<class matType>\nGLM_FUNC_QUALIFIER std::string to_string(matType const& x)\n{\n\treturn detail::compute_to_string<matType>::call(x);\n}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/texture.hpp",
    "content": "/// @ref gtx_texture\n/// @file glm/gtx/texture.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_texture GLM_GTX_texture\n/// @ingroup gtx\n///\n/// Include <glm/gtx/texture.hpp> to use the features of this extension.\n///\n/// Wrapping mode of texture coordinates.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/integer.hpp\"\n#include \"../gtx/component_wise.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_texture extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_texture\n\t/// @{\n\n\t/// Compute the number of mipmaps levels necessary to create a mipmap complete texture\n\t///\n\t/// @param Extent Extent of the texture base level mipmap\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\ttemplate <length_t L, typename T, qualifier Q>\n\tT levels(vec<L, T, Q> const& Extent);\n\n\t/// @}\n}// namespace glm\n\n#include \"texture.inl\"\n\n"
  },
  {
    "path": "libraries/glm/gtx/texture.inl",
    "content": "/// @ref gtx_texture\n\nnamespace glm\n{\n\ttemplate <length_t L, typename T, qualifier Q>\n\tinline T levels(vec<L, T, Q> const& Extent)\n\t{\n\t\treturn glm::log2(compMax(Extent)) + static_cast<T>(1);\n\t}\n\n\ttemplate <typename T>\n\tinline T levels(T Extent)\n\t{\n\t\treturn vec<1, T, defaultp>(Extent).x;\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtx/transform.hpp",
    "content": "/// @ref gtx_transform\n/// @file glm/gtx/transform.hpp\n///\n/// @see core (dependence)\n/// @see gtc_matrix_transform (dependence)\n/// @see gtx_transform\n/// @see gtx_transform2\n///\n/// @defgroup gtx_transform GLM_GTX_transform\n/// @ingroup gtx\n///\n/// Include <glm/gtx/transform.hpp> to use the features of this extension.\n///\n/// Add transformation matrices\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/matrix_transform.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_transform is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_transform extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_transform\n\t/// @{\n\n\t/// Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.\n\t/// @see gtc_matrix_transform\n\t/// @see gtx_transform\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> translate(\n\t\tvec<3, T, Q> const& v);\n\n\t/// Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians.\n\t/// @see gtc_matrix_transform\n\t/// @see gtx_transform\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> rotate(\n\t\tT angle,\n\t\tvec<3, T, Q> const& v);\n\n\t/// Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.\n\t/// @see gtc_matrix_transform\n\t/// @see gtx_transform\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> scale(\n\t\tvec<3, T, Q> const& v);\n\n\t/// @}\n}// namespace glm\n\n#include \"transform.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/transform.inl",
    "content": "/// @ref gtx_transform\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> translate(vec<3, T, Q> const& v)\n\t{\n\t\treturn translate(mat<4, 4, T, Q>(static_cast<T>(1)), v);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotate(T angle, vec<3, T, Q> const& v)\n\t{\n\t\treturn rotate(mat<4, 4, T, Q>(static_cast<T>(1)), angle, v);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> scale(vec<3, T, Q> const& v)\n\t{\n\t\treturn scale(mat<4, 4, T, Q>(static_cast<T>(1)), v);\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/transform2.hpp",
    "content": "/// @ref gtx_transform2\n/// @file glm/gtx/transform2.hpp\n///\n/// @see core (dependence)\n/// @see gtx_transform (dependence)\n///\n/// @defgroup gtx_transform2 GLM_GTX_transform2\n/// @ingroup gtx\n///\n/// Include <glm/gtx/transform2.hpp> to use the features of this extension.\n///\n/// Add extra transformation matrices\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtx/transform.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_transform2 is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_transform2 extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_transform2\n\t/// @{\n\n\t//! Transforms a matrix with a shearing on X axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T y);\n\n\t//! Transforms a matrix with a shearing on Y axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T x);\n\n\t//! Transforms a matrix with a shearing on X axis\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T y, T z);\n\n\t//! Transforms a matrix with a shearing on Y axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T x, T z);\n\n\t//! Transforms a matrix with a shearing on Z axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T x, T y);\n\n\t//template<typename T> GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shear(const mat<4, 4, T, Q> & m, shearPlane, planePoint, angle)\n\t// Identity + tan(angle) * cross(Normal, OnPlaneVector)     0\n\t// - dot(PointOnPlane, normal) * OnPlaneVector              1\n\n\t// Reflect functions seem to don't work\n\t//template<typename T> mat<3, 3, T, Q> reflect2D(const mat<3, 3, T, Q> & m, const vec<3, T, Q>& normal){return reflect2DGTX(m, normal);}\t\t\t\t\t\t\t\t\t//!< \\brief Build a reflection matrix (from GLM_GTX_transform2 extension)\n\t//template<typename T> mat<4, 4, T, Q> reflect3D(const mat<4, 4, T, Q> & m, const vec<3, T, Q>& normal){return reflect3DGTX(m, normal);}\t\t\t\t\t\t\t\t\t//!< \\brief Build a reflection matrix (from GLM_GTX_transform2 extension)\n\n\t//! Build planar projection matrix along normal axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<3, 3, T, Q> proj2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal);\n\n\t//! Build planar projection matrix along normal axis.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> proj3D(mat<4, 4, T, Q> const & m, vec<3, T, Q> const& normal);\n\n\t//! Build a scale bias matrix.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(T scale, T bias);\n\n\t//! Build a scale bias matrix.\n\t//! From GLM_GTX_transform2 extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias);\n\n\t/// @}\n}// namespace glm\n\n#include \"transform2.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/transform2.inl",
    "content": "/// @ref gtx_transform2\n\nnamespace glm\n{\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T s)\n\t{\n\t\tmat<3, 3, T, Q> r(1);\n\t\tr[1][0] = s;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T s)\n\t{\n\t\tmat<3, 3, T, Q> r(1);\n\t\tr[0][1] = s;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T s, T t)\n\t{\n\t\tmat<4, 4, T, Q> r(1);\n\t\tr[0][1] = s;\n\t\tr[0][2] = t;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T s, T t)\n\t{\n\t\tmat<4, 4, T, Q> r(1);\n\t\tr[1][0] = s;\n\t\tr[1][2] = t;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T s, T t)\n\t{\n\t\tmat<4, 4, T, Q> r(1);\n\t\tr[2][0] = s;\n\t\tr[2][1] = t;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> reflect2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal)\n\t{\n\t\tmat<3, 3, T, Q> r(static_cast<T>(1));\n\t\tr[0][0] = static_cast<T>(1) - static_cast<T>(2) * normal.x * normal.x;\n\t\tr[0][1] = -static_cast<T>(2) * normal.x * normal.y;\n\t\tr[1][0] = -static_cast<T>(2) * normal.x * normal.y;\n\t\tr[1][1] = static_cast<T>(1) - static_cast<T>(2) * normal.y * normal.y;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> reflect3D(mat<4, 4, T, Q> const& m, vec<3, T, Q> const& normal)\n\t{\n\t\tmat<4, 4, T, Q> r(static_cast<T>(1));\n\t\tr[0][0] = static_cast<T>(1) - static_cast<T>(2) * normal.x * normal.x;\n\t\tr[0][1] = -static_cast<T>(2) * normal.x * normal.y;\n\t\tr[0][2] = -static_cast<T>(2) * normal.x * normal.z;\n\n\t\tr[1][0] = -static_cast<T>(2) * normal.x * normal.y;\n\t\tr[1][1] = static_cast<T>(1) - static_cast<T>(2) * normal.y * normal.y;\n\t\tr[1][2] = -static_cast<T>(2) * normal.y * normal.z;\n\n\t\tr[2][0] = -static_cast<T>(2) * normal.x * normal.z;\n\t\tr[2][1] = -static_cast<T>(2) * normal.y * normal.z;\n\t\tr[2][2] = static_cast<T>(1) - static_cast<T>(2) * normal.z * normal.z;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<3, 3, T, Q> proj2D(\n\t\tconst mat<3, 3, T, Q>& m,\n\t\tconst vec<3, T, Q>& normal)\n\t{\n\t\tmat<3, 3, T, Q> r(static_cast<T>(1));\n\t\tr[0][0] = static_cast<T>(1) - normal.x * normal.x;\n\t\tr[0][1] = - normal.x * normal.y;\n\t\tr[1][0] = - normal.x * normal.y;\n\t\tr[1][1] = static_cast<T>(1) - normal.y * normal.y;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> proj3D(\n\t\tconst mat<4, 4, T, Q>& m,\n\t\tconst vec<3, T, Q>& normal)\n\t{\n\t\tmat<4, 4, T, Q> r(static_cast<T>(1));\n\t\tr[0][0] = static_cast<T>(1) - normal.x * normal.x;\n\t\tr[0][1] = - normal.x * normal.y;\n\t\tr[0][2] = - normal.x * normal.z;\n\t\tr[1][0] = - normal.x * normal.y;\n\t\tr[1][1] = static_cast<T>(1) - normal.y * normal.y;\n\t\tr[1][2] = - normal.y * normal.z;\n\t\tr[2][0] = - normal.x * normal.z;\n\t\tr[2][1] = - normal.y * normal.z;\n\t\tr[2][2] = static_cast<T>(1) - normal.z * normal.z;\n\t\treturn m * r;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> scaleBias(T scale, T bias)\n\t{\n\t\tmat<4, 4, T, Q> result;\n\t\tresult[3] = vec<4, T, Q>(vec<3, T, Q>(bias), static_cast<T>(1));\n\t\tresult[0][0] = scale;\n\t\tresult[1][1] = scale;\n\t\tresult[2][2] = scale;\n\t\treturn result;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias)\n\t{\n\t\treturn m * scaleBias(scale, bias);\n\t}\n}//namespace glm\n\n"
  },
  {
    "path": "libraries/glm/gtx/type_aligned.hpp",
    "content": "/// @ref gtx_type_aligned\n/// @file glm/gtx/type_aligned.hpp\n///\n/// @see core (dependence)\n/// @see gtc_quaternion (dependence)\n///\n/// @defgroup gtx_type_aligned GLM_GTX_type_aligned\n/// @ingroup gtx\n///\n/// Include <glm/gtx/type_aligned.hpp> to use the features of this extension.\n///\n/// Defines aligned types.\n\n#pragma once\n\n// Dependency:\n#include \"../gtc/type_precision.hpp\"\n#include \"../gtc/quaternion.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_type_aligned is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_type_aligned extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t///////////////////////////\n\t// Signed int vector types\n\n\t/// @addtogroup gtx_type_aligned\n\t/// @{\n\n\t/// Low qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1);\n\n\t/// Low qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2);\n\n\t/// Low qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4);\n\n\t/// Low qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8);\n\n\n\t/// Low qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1);\n\n\t/// Low qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2);\n\n\t/// Low qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4);\n\n\t/// Low qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8);\n\n\n\t/// Low qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1);\n\n\t/// Low qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2);\n\n\t/// Low qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4);\n\n\t/// Low qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8);\n\n\n\t/// Medium qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1);\n\n\t/// Medium qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2);\n\n\t/// Medium qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4);\n\n\t/// Medium qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8);\n\n\n\t/// Medium qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1);\n\n\t/// Medium qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2);\n\n\t/// Medium qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4);\n\n\t/// Medium qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8);\n\n\n\t/// Medium qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1);\n\n\t/// Medium qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2);\n\n\t/// Medium qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4);\n\n\t/// Medium qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8);\n\n\n\t/// High qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1);\n\n\t/// High qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2);\n\n\t/// High qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4);\n\n\t/// High qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8);\n\n\n\t/// High qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1);\n\n\t/// High qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2);\n\n\t/// High qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4);\n\n\t/// High qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8);\n\n\n\t/// High qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1);\n\n\t/// High qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2);\n\n\t/// High qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4);\n\n\t/// High qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8);\n\n\n\t/// Default qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1);\n\n\t/// Default qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2);\n\n\t/// Default qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4);\n\n\t/// Default qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8);\n\n\n\t/// Default qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1);\n\n\t/// Default qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2);\n\n\t/// Default qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4);\n\n\t/// Default qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8);\n\n\n\t/// Default qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1);\n\n\t/// Default qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2);\n\n\t/// Default qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4);\n\n\t/// Default qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8);\n\n\n\t/// Default qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16);\n\n\n\t/// Default qualifier 8 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1);\n\n\t/// Default qualifier 8 bit signed integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2);\n\n\t/// Default qualifier 8 bit signed integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4);\n\n\t/// Default qualifier 8 bit signed integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4);\n\n\n\t/// Default qualifier 16 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2);\n\n\t/// Default qualifier 16 bit signed integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4);\n\n\t/// Default qualifier 16 bit signed integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8);\n\n\t/// Default qualifier 16 bit signed integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8);\n\n\n\t/// Default qualifier 32 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16);\n\n\t/// Default qualifier 32 bit signed integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16);\n\n\n\t/// Default qualifier 64 bit signed integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8);\n\n\t/// Default qualifier 64 bit signed integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16);\n\n\t/// Default qualifier 64 bit signed integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32);\n\n\t/// Default qualifier 64 bit signed integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32);\n\n\n\t/////////////////////////////\n\t// Unsigned int vector types\n\n\t/// Low qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1);\n\n\t/// Low qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2);\n\n\t/// Low qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4);\n\n\t/// Low qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8);\n\n\n\t/// Low qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1);\n\n\t/// Low qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2);\n\n\t/// Low qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4);\n\n\t/// Low qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8);\n\n\n\t/// Low qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1);\n\n\t/// Low qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2);\n\n\t/// Low qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4);\n\n\t/// Low qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8);\n\n\n\t/// Medium qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1);\n\n\t/// Medium qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2);\n\n\t/// Medium qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4);\n\n\t/// Medium qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8);\n\n\n\t/// Medium qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1);\n\n\t/// Medium qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2);\n\n\t/// Medium qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4);\n\n\t/// Medium qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8);\n\n\n\t/// Medium qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1);\n\n\t/// Medium qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2);\n\n\t/// Medium qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4);\n\n\t/// Medium qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8);\n\n\n\t/// High qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1);\n\n\t/// High qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2);\n\n\t/// High qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4);\n\n\t/// High qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8);\n\n\n\t/// High qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1);\n\n\t/// High qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2);\n\n\t/// High qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4);\n\n\t/// High qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8);\n\n\n\t/// High qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1);\n\n\t/// High qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2);\n\n\t/// High qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4);\n\n\t/// High qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8);\n\n\n\t/// Default qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1);\n\n\t/// Default qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2);\n\n\t/// Default qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4);\n\n\t/// Default qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8);\n\n\n\t/// Default qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1);\n\n\t/// Default qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2);\n\n\t/// Default qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4);\n\n\t/// Default qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8);\n\n\n\t/// Default qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1);\n\n\t/// Default qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2);\n\n\t/// Default qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4);\n\n\t/// Default qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8);\n\n\n\t/// Default qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16);\n\n\n\t/// Default qualifier 8 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1);\n\n\t/// Default qualifier 8 bit unsigned integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2);\n\n\t/// Default qualifier 8 bit unsigned integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4);\n\n\t/// Default qualifier 8 bit unsigned integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4);\n\n\n\t/// Default qualifier 16 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2);\n\n\t/// Default qualifier 16 bit unsigned integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4);\n\n\t/// Default qualifier 16 bit unsigned integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8);\n\n\t/// Default qualifier 16 bit unsigned integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8);\n\n\n\t/// Default qualifier 32 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16);\n\n\t/// Default qualifier 32 bit unsigned integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16);\n\n\n\t/// Default qualifier 64 bit unsigned integer aligned scalar type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8);\n\n\t/// Default qualifier 64 bit unsigned integer aligned vector of 2 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16);\n\n\t/// Default qualifier 64 bit unsigned integer aligned vector of 3 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32);\n\n\t/// Default qualifier 64 bit unsigned integer aligned vector of 4 components type.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32);\n\n\n\t//////////////////////\n\t// Float vector types\n\n\t/// 32 bit single-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);\n\n\t/// 32 bit single-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);\n\n\t/// 32 bit single-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// 64 bit double-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);\n\n\t/// 64 bit double-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);\n\n\t/// 64 bit double-qualifier floating-point aligned scalar.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\n\t/// Single-qualifier floating-point aligned vector of 1 component.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4);\n\n\t/// Single-qualifier floating-point aligned vector of 2 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8);\n\n\t/// Single-qualifier floating-point aligned vector of 3 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16);\n\n\t/// Single-qualifier floating-point aligned vector of 4 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16);\n\n\n\t/// Single-qualifier floating-point aligned vector of 1 component.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4);\n\n\t/// Single-qualifier floating-point aligned vector of 2 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8);\n\n\t/// Single-qualifier floating-point aligned vector of 3 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16);\n\n\t/// Single-qualifier floating-point aligned vector of 4 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);\n\n\n\t/// Single-qualifier floating-point aligned vector of 1 component.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);\n\n\t/// Single-qualifier floating-point aligned vector of 2 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8);\n\n\t/// Single-qualifier floating-point aligned vector of 3 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16);\n\n\t/// Single-qualifier floating-point aligned vector of 4 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16);\n\n\n\t/// Double-qualifier floating-point aligned vector of 1 component.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8);\n\n\t/// Double-qualifier floating-point aligned vector of 2 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16);\n\n\t/// Double-qualifier floating-point aligned vector of 3 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32);\n\n\t/// Double-qualifier floating-point aligned vector of 4 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32);\n\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// Double-qualifier floating-point aligned vector of 1 component.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);\n\n\t/// Double-qualifier floating-point aligned vector of 2 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16);\n\n\t/// Double-qualifier floating-point aligned vector of 3 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32);\n\n\t/// Double-qualifier floating-point aligned vector of 4 components.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\t//////////////////////\n\t// Float matrix types\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef detail::tmat1<f32> mat1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16);\n\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef detail::tmat1x1<f32> mat1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat2x2, aligned_mat2x2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat3x3, aligned_mat3x3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(mat4x4, aligned_mat4x4, 16);\n\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef detail::tmat1x1<f32> fmat1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16);\n\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef f32 fmat1x1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16);\n\n\t/// Single-qualifier floating-point aligned 2x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16);\n\n\t/// Single-qualifier floating-point aligned 2x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16);\n\n\t/// Single-qualifier floating-point aligned 3x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16);\n\n\t/// Single-qualifier floating-point aligned 3x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16);\n\n\t/// Single-qualifier floating-point aligned 4x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16);\n\n\t/// Single-qualifier floating-point aligned 4x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16);\n\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef detail::tmat1x1<f32, defaultp> f32mat1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16);\n\n\n\t/// Single-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef f32 f32mat1x1;\n\n\t/// Single-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16);\n\n\t/// Single-qualifier floating-point aligned 2x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16);\n\n\t/// Single-qualifier floating-point aligned 2x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16);\n\n\t/// Single-qualifier floating-point aligned 3x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16);\n\n\t/// Single-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16);\n\n\t/// Single-qualifier floating-point aligned 3x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16);\n\n\t/// Single-qualifier floating-point aligned 4x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16);\n\n\t/// Single-qualifier floating-point aligned 4x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16);\n\n\t/// Single-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);\n\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// Double-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef detail::tmat1x1<f64, defaultp> f64mat1;\n\n\t/// Double-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32);\n\n\t/// Double-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32);\n\n\t/// Double-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32);\n\n\n\t/// Double-qualifier floating-point aligned 1x1 matrix.\n\t/// @see gtx_type_aligned\n\t//typedef f64 f64mat1x1;\n\n\t/// Double-qualifier floating-point aligned 2x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32);\n\n\t/// Double-qualifier floating-point aligned 2x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32);\n\n\t/// Double-qualifier floating-point aligned 2x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32);\n\n\t/// Double-qualifier floating-point aligned 3x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32);\n\n\t/// Double-qualifier floating-point aligned 3x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32);\n\n\t/// Double-qualifier floating-point aligned 3x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32);\n\n\t/// Double-qualifier floating-point aligned 4x2 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32);\n\n\t/// Double-qualifier floating-point aligned 4x3 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32);\n\n\t/// Double-qualifier floating-point aligned 4x4 matrix.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\n\t//////////////////////////\n\t// Quaternion types\n\n\t/// Single-qualifier floating-point aligned quaternion.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16);\n\n\t/// Single-qualifier floating-point aligned quaternion.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16);\n\n\t/// Double-qualifier floating-point aligned quaternion.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32);\n\n\t/// Single-qualifier floating-point aligned quaternion.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);\n\n#\tifndef GLM_FORCE_SINGLE_ONLY\n\n\t/// Double-qualifier floating-point aligned quaternion.\n\t/// @see gtx_type_aligned\n\tGLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);\n\n#\tendif//GLM_FORCE_SINGLE_ONLY\n\n\t/// @}\n}//namespace glm\n\n#include \"type_aligned.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/type_aligned.inl",
    "content": "/// @ref gtc_type_aligned\n\nnamespace glm\n{\n\n}\n"
  },
  {
    "path": "libraries/glm/gtx/type_trait.hpp",
    "content": "/// @ref gtx_type_trait\n/// @file glm/gtx/type_trait.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_type_trait GLM_GTX_type_trait\n/// @ingroup gtx\n///\n/// Include <glm/gtx/type_trait.hpp> to use the features of this extension.\n///\n/// Defines traits for each type.\n\n#pragma once\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_type_trait is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_type_trait extension included\")\n#\tendif\n#endif\n\n// Dependency:\n#include \"../detail/qualifier.hpp\"\n#include \"../gtc/quaternion.hpp\"\n#include \"../gtx/dual_quaternion.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup gtx_type_trait\n\t/// @{\n\n\ttemplate<typename T>\n\tstruct type\n\t{\n\t\tstatic bool const is_vec = false;\n\t\tstatic bool const is_mat = false;\n\t\tstatic bool const is_quat = false;\n\t\tstatic length_t const components = 0;\n\t\tstatic length_t const cols = 0;\n\t\tstatic length_t const rows = 0;\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct type<vec<L, T, Q> >\n\t{\n\t\tstatic bool const is_vec = true;\n\t\tstatic bool const is_mat = false;\n\t\tstatic bool const is_quat = false;\n\t\tstatic length_t const components = L;\n\t};\n\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tstruct type<mat<C, R, T, Q> >\n\t{\n\t\tstatic bool const is_vec = false;\n\t\tstatic bool const is_mat = true;\n\t\tstatic bool const is_quat = false;\n\t\tstatic length_t const components = C;\n\t\tstatic length_t const cols = C;\n\t\tstatic length_t const rows = R;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct type<qua<T, Q> >\n\t{\n\t\tstatic bool const is_vec = false;\n\t\tstatic bool const is_mat = false;\n\t\tstatic bool const is_quat = true;\n\t\tstatic length_t const components = 4;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct type<tdualquat<T, Q> >\n\t{\n\t\tstatic bool const is_vec = false;\n\t\tstatic bool const is_mat = false;\n\t\tstatic bool const is_quat = true;\n\t\tstatic length_t const components = 8;\n\t};\n\n\t/// @}\n}//namespace glm\n\n#include \"type_trait.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/type_trait.inl",
    "content": "/// @ref gtx_type_trait\n\nnamespace glm\n{\n\ttemplate<typename T>\n\tbool const type<T>::is_vec;\n\ttemplate<typename T>\n\tbool const type<T>::is_mat;\n\ttemplate<typename T>\n\tbool const type<T>::is_quat;\n\ttemplate<typename T>\n\tlength_t const type<T>::components;\n\ttemplate<typename T>\n\tlength_t const type<T>::cols;\n\ttemplate<typename T>\n\tlength_t const type<T>::rows;\n\n\t// vec\n\ttemplate<length_t L, typename T, qualifier Q>\n\tbool const type<vec<L, T, Q> >::is_vec;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tbool const type<vec<L, T, Q> >::is_mat;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tbool const type<vec<L, T, Q> >::is_quat;\n\ttemplate<length_t L, typename T, qualifier Q>\n\tlength_t const type<vec<L, T, Q> >::components;\n\n\t// mat\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tbool const type<mat<C, R, T, Q> >::is_vec;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tbool const type<mat<C, R, T, Q> >::is_mat;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tbool const type<mat<C, R, T, Q> >::is_quat;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tlength_t const type<mat<C, R, T, Q> >::components;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tlength_t const type<mat<C, R, T, Q> >::cols;\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tlength_t const type<mat<C, R, T, Q> >::rows;\n\n\t// tquat\n\ttemplate<typename T, qualifier Q>\n\tbool const type<qua<T, Q> >::is_vec;\n\ttemplate<typename T, qualifier Q>\n\tbool const type<qua<T, Q> >::is_mat;\n\ttemplate<typename T, qualifier Q>\n\tbool const type<qua<T, Q> >::is_quat;\n\ttemplate<typename T, qualifier Q>\n\tlength_t const type<qua<T, Q> >::components;\n\n\t// tdualquat\n\ttemplate<typename T, qualifier Q>\n\tbool const type<tdualquat<T, Q> >::is_vec;\n\ttemplate<typename T, qualifier Q>\n\tbool const type<tdualquat<T, Q> >::is_mat;\n\ttemplate<typename T, qualifier Q>\n\tbool const type<tdualquat<T, Q> >::is_quat;\n\ttemplate<typename T, qualifier Q>\n\tlength_t const type<tdualquat<T, Q> >::components;\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/vec_swizzle.hpp",
    "content": "/// @ref gtx_vec_swizzle\n/// @file glm/gtx/vec_swizzle.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_vec_swizzle GLM_GTX_vec_swizzle\n/// @ingroup gtx\n///\n/// Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.\n///\n/// Functions to perform swizzle operation.\n\n#pragma once\n\n#include \"../glm.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_vec_swizzle extension included\")\n#\tendif\n#endif\n\nnamespace glm {\n\t// xx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<1, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.x);\n\t}\n\n\t// xy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.y);\n\t}\n\n\t// xz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.z);\n\t}\n\n\t// xw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> xw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.x, v.w);\n\t}\n\n\t// yx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.x);\n\t}\n\n\t// yy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.y);\n\t}\n\n\t// yz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.z);\n\t}\n\n\t// yw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> yw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.y, v.w);\n\t}\n\n\t// zx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.x);\n\t}\n\n\t// zy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.y);\n\t}\n\n\t// zz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.z);\n\t}\n\n\t// zw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> zw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.z, v.w);\n\t}\n\n\t// wx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> wx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.w, v.x);\n\t}\n\n\t// wy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> wy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.w, v.y);\n\t}\n\n\t// wz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> wz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.w, v.z);\n\t}\n\n\t// ww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<2, T, Q> ww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<2, T, Q>(v.w, v.w);\n\t}\n\n\t// xxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<1, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.x);\n\t}\n\n\t// xxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.y);\n\t}\n\n\t// xxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.z);\n\t}\n\n\t// xxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.x, v.w);\n\t}\n\n\t// xyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.x);\n\t}\n\n\t// xyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.y);\n\t}\n\n\t// xyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.z);\n\t}\n\n\t// xyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.y, v.w);\n\t}\n\n\t// xzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.x);\n\t}\n\n\t// xzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.y);\n\t}\n\n\t// xzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.z);\n\t}\n\n\t// xzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.z, v.w);\n\t}\n\n\t// xwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.w, v.x);\n\t}\n\n\t// xwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.w, v.y);\n\t}\n\n\t// xwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.w, v.z);\n\t}\n\n\t// xww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> xww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.x, v.w, v.w);\n\t}\n\n\t// yxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.x);\n\t}\n\n\t// yxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.y);\n\t}\n\n\t// yxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.z);\n\t}\n\n\t// yxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.x, v.w);\n\t}\n\n\t// yyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.x);\n\t}\n\n\t// yyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.y);\n\t}\n\n\t// yyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.z);\n\t}\n\n\t// yyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.y, v.w);\n\t}\n\n\t// yzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.x);\n\t}\n\n\t// yzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.y);\n\t}\n\n\t// yzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.z);\n\t}\n\n\t// yzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.z, v.w);\n\t}\n\n\t// ywx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> ywx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.w, v.x);\n\t}\n\n\t// ywy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> ywy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.w, v.y);\n\t}\n\n\t// ywz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> ywz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.w, v.z);\n\t}\n\n\t// yww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> yww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.y, v.w, v.w);\n\t}\n\n\t// zxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.x);\n\t}\n\n\t// zxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.y);\n\t}\n\n\t// zxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.z);\n\t}\n\n\t// zxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.x, v.w);\n\t}\n\n\t// zyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.x);\n\t}\n\n\t// zyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.y);\n\t}\n\n\t// zyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.z);\n\t}\n\n\t// zyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.y, v.w);\n\t}\n\n\t// zzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.x);\n\t}\n\n\t// zzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.y);\n\t}\n\n\t// zzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.z);\n\t}\n\n\t// zzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.z, v.w);\n\t}\n\n\t// zwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.w, v.x);\n\t}\n\n\t// zwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.w, v.y);\n\t}\n\n\t// zwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.w, v.z);\n\t}\n\n\t// zww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> zww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.z, v.w, v.w);\n\t}\n\n\t// wxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.x, v.x);\n\t}\n\n\t// wxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.x, v.y);\n\t}\n\n\t// wxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.x, v.z);\n\t}\n\n\t// wxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.x, v.w);\n\t}\n\n\t// wyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.y, v.x);\n\t}\n\n\t// wyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.y, v.y);\n\t}\n\n\t// wyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.y, v.z);\n\t}\n\n\t// wyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.y, v.w);\n\t}\n\n\t// wzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.z, v.x);\n\t}\n\n\t// wzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.z, v.y);\n\t}\n\n\t// wzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.z, v.z);\n\t}\n\n\t// wzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.z, v.w);\n\t}\n\n\t// wwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.w, v.x);\n\t}\n\n\t// wwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.w, v.y);\n\t}\n\n\t// wwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> wwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.w, v.z);\n\t}\n\n\t// www\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<3, T, Q> www(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<3, T, Q>(v.w, v.w, v.w);\n\t}\n\n\t// xxxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<1, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);\n\t}\n\n\t// xxxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);\n\t}\n\n\t// xxxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);\n\t}\n\n\t// xxxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);\n\t}\n\n\t// xxyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);\n\t}\n\n\t// xxyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);\n\t}\n\n\t// xxyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);\n\t}\n\n\t// xxyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);\n\t}\n\n\t// xxzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);\n\t}\n\n\t// xxzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);\n\t}\n\n\t// xxzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);\n\t}\n\n\t// xxzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);\n\t}\n\n\t// xxwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);\n\t}\n\n\t// xxwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);\n\t}\n\n\t// xxwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);\n\t}\n\n\t// xxww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xxww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);\n\t}\n\n\t// xyxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);\n\t}\n\n\t// xyxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);\n\t}\n\n\t// xyxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);\n\t}\n\n\t// xyxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);\n\t}\n\n\t// xyyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);\n\t}\n\n\t// xyyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);\n\t}\n\n\t// xyyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);\n\t}\n\n\t// xyyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);\n\t}\n\n\t// xyzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);\n\t}\n\n\t// xyzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);\n\t}\n\n\t// xyzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);\n\t}\n\n\t// xyzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);\n\t}\n\n\t// xywx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xywx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);\n\t}\n\n\t// xywy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xywy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);\n\t}\n\n\t// xywz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xywz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);\n\t}\n\n\t// xyww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xyww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);\n\t}\n\n\t// xzxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);\n\t}\n\n\t// xzxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);\n\t}\n\n\t// xzxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);\n\t}\n\n\t// xzxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);\n\t}\n\n\t// xzyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);\n\t}\n\n\t// xzyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);\n\t}\n\n\t// xzyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);\n\t}\n\n\t// xzyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);\n\t}\n\n\t// xzzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);\n\t}\n\n\t// xzzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);\n\t}\n\n\t// xzzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);\n\t}\n\n\t// xzzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);\n\t}\n\n\t// xzwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);\n\t}\n\n\t// xzwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);\n\t}\n\n\t// xzwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);\n\t}\n\n\t// xzww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xzww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);\n\t}\n\n\t// xwxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);\n\t}\n\n\t// xwxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);\n\t}\n\n\t// xwxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);\n\t}\n\n\t// xwxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);\n\t}\n\n\t// xwyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);\n\t}\n\n\t// xwyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);\n\t}\n\n\t// xwyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);\n\t}\n\n\t// xwyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);\n\t}\n\n\t// xwzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);\n\t}\n\n\t// xwzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);\n\t}\n\n\t// xwzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);\n\t}\n\n\t// xwzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);\n\t}\n\n\t// xwwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);\n\t}\n\n\t// xwwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);\n\t}\n\n\t// xwwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);\n\t}\n\n\t// xwww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> xwww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);\n\t}\n\n\t// yxxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);\n\t}\n\n\t// yxxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);\n\t}\n\n\t// yxxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);\n\t}\n\n\t// yxxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);\n\t}\n\n\t// yxyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);\n\t}\n\n\t// yxyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);\n\t}\n\n\t// yxyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);\n\t}\n\n\t// yxyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);\n\t}\n\n\t// yxzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);\n\t}\n\n\t// yxzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);\n\t}\n\n\t// yxzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);\n\t}\n\n\t// yxzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);\n\t}\n\n\t// yxwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);\n\t}\n\n\t// yxwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);\n\t}\n\n\t// yxwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);\n\t}\n\n\t// yxww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yxww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);\n\t}\n\n\t// yyxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);\n\t}\n\n\t// yyxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);\n\t}\n\n\t// yyxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);\n\t}\n\n\t// yyxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);\n\t}\n\n\t// yyyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);\n\t}\n\n\t// yyyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<2, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);\n\t}\n\n\t// yyyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);\n\t}\n\n\t// yyyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);\n\t}\n\n\t// yyzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);\n\t}\n\n\t// yyzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);\n\t}\n\n\t// yyzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);\n\t}\n\n\t// yyzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);\n\t}\n\n\t// yywx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yywx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);\n\t}\n\n\t// yywy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yywy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);\n\t}\n\n\t// yywz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yywz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);\n\t}\n\n\t// yyww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yyww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);\n\t}\n\n\t// yzxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);\n\t}\n\n\t// yzxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);\n\t}\n\n\t// yzxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);\n\t}\n\n\t// yzxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);\n\t}\n\n\t// yzyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);\n\t}\n\n\t// yzyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);\n\t}\n\n\t// yzyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);\n\t}\n\n\t// yzyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);\n\t}\n\n\t// yzzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);\n\t}\n\n\t// yzzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);\n\t}\n\n\t// yzzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);\n\t}\n\n\t// yzzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);\n\t}\n\n\t// yzwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);\n\t}\n\n\t// yzwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);\n\t}\n\n\t// yzwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);\n\t}\n\n\t// yzww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> yzww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);\n\t}\n\n\t// ywxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);\n\t}\n\n\t// ywxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);\n\t}\n\n\t// ywxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);\n\t}\n\n\t// ywxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);\n\t}\n\n\t// ywyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);\n\t}\n\n\t// ywyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);\n\t}\n\n\t// ywyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);\n\t}\n\n\t// ywyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);\n\t}\n\n\t// ywzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);\n\t}\n\n\t// ywzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);\n\t}\n\n\t// ywzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);\n\t}\n\n\t// ywzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);\n\t}\n\n\t// ywwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);\n\t}\n\n\t// ywwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);\n\t}\n\n\t// ywwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);\n\t}\n\n\t// ywww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> ywww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);\n\t}\n\n\t// zxxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);\n\t}\n\n\t// zxxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);\n\t}\n\n\t// zxxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);\n\t}\n\n\t// zxxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);\n\t}\n\n\t// zxyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);\n\t}\n\n\t// zxyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);\n\t}\n\n\t// zxyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);\n\t}\n\n\t// zxyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);\n\t}\n\n\t// zxzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);\n\t}\n\n\t// zxzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);\n\t}\n\n\t// zxzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);\n\t}\n\n\t// zxzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);\n\t}\n\n\t// zxwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);\n\t}\n\n\t// zxwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);\n\t}\n\n\t// zxwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);\n\t}\n\n\t// zxww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zxww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);\n\t}\n\n\t// zyxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);\n\t}\n\n\t// zyxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);\n\t}\n\n\t// zyxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);\n\t}\n\n\t// zyxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);\n\t}\n\n\t// zyyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);\n\t}\n\n\t// zyyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);\n\t}\n\n\t// zyyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);\n\t}\n\n\t// zyyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);\n\t}\n\n\t// zyzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);\n\t}\n\n\t// zyzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);\n\t}\n\n\t// zyzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);\n\t}\n\n\t// zyzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);\n\t}\n\n\t// zywx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zywx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);\n\t}\n\n\t// zywy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zywy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);\n\t}\n\n\t// zywz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zywz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);\n\t}\n\n\t// zyww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zyww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);\n\t}\n\n\t// zzxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);\n\t}\n\n\t// zzxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);\n\t}\n\n\t// zzxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);\n\t}\n\n\t// zzxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);\n\t}\n\n\t// zzyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);\n\t}\n\n\t// zzyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);\n\t}\n\n\t// zzyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);\n\t}\n\n\t// zzyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);\n\t}\n\n\t// zzzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);\n\t}\n\n\t// zzzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);\n\t}\n\n\t// zzzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<3, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);\n\t}\n\n\t// zzzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);\n\t}\n\n\t// zzwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);\n\t}\n\n\t// zzwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);\n\t}\n\n\t// zzwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);\n\t}\n\n\t// zzww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zzww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);\n\t}\n\n\t// zwxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);\n\t}\n\n\t// zwxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);\n\t}\n\n\t// zwxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);\n\t}\n\n\t// zwxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);\n\t}\n\n\t// zwyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);\n\t}\n\n\t// zwyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);\n\t}\n\n\t// zwyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);\n\t}\n\n\t// zwyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);\n\t}\n\n\t// zwzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);\n\t}\n\n\t// zwzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);\n\t}\n\n\t// zwzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);\n\t}\n\n\t// zwzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);\n\t}\n\n\t// zwwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);\n\t}\n\n\t// zwwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);\n\t}\n\n\t// zwwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);\n\t}\n\n\t// zwww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> zwww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);\n\t}\n\n\t// wxxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);\n\t}\n\n\t// wxxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);\n\t}\n\n\t// wxxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);\n\t}\n\n\t// wxxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);\n\t}\n\n\t// wxyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);\n\t}\n\n\t// wxyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);\n\t}\n\n\t// wxyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);\n\t}\n\n\t// wxyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);\n\t}\n\n\t// wxzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);\n\t}\n\n\t// wxzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);\n\t}\n\n\t// wxzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);\n\t}\n\n\t// wxzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);\n\t}\n\n\t// wxwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);\n\t}\n\n\t// wxwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);\n\t}\n\n\t// wxwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);\n\t}\n\n\t// wxww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wxww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);\n\t}\n\n\t// wyxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);\n\t}\n\n\t// wyxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);\n\t}\n\n\t// wyxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);\n\t}\n\n\t// wyxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);\n\t}\n\n\t// wyyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);\n\t}\n\n\t// wyyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);\n\t}\n\n\t// wyyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);\n\t}\n\n\t// wyyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);\n\t}\n\n\t// wyzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);\n\t}\n\n\t// wyzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);\n\t}\n\n\t// wyzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);\n\t}\n\n\t// wyzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);\n\t}\n\n\t// wywx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wywx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);\n\t}\n\n\t// wywy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wywy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);\n\t}\n\n\t// wywz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wywz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);\n\t}\n\n\t// wyww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wyww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);\n\t}\n\n\t// wzxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);\n\t}\n\n\t// wzxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);\n\t}\n\n\t// wzxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);\n\t}\n\n\t// wzxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);\n\t}\n\n\t// wzyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);\n\t}\n\n\t// wzyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);\n\t}\n\n\t// wzyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);\n\t}\n\n\t// wzyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);\n\t}\n\n\t// wzzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);\n\t}\n\n\t// wzzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);\n\t}\n\n\t// wzzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);\n\t}\n\n\t// wzzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);\n\t}\n\n\t// wzwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);\n\t}\n\n\t// wzwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);\n\t}\n\n\t// wzwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);\n\t}\n\n\t// wzww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wzww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);\n\t}\n\n\t// wwxx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwxx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);\n\t}\n\n\t// wwxy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwxy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);\n\t}\n\n\t// wwxz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwxz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);\n\t}\n\n\t// wwxw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwxw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);\n\t}\n\n\t// wwyx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwyx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);\n\t}\n\n\t// wwyy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwyy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);\n\t}\n\n\t// wwyz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwyz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);\n\t}\n\n\t// wwyw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwyw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);\n\t}\n\n\t// wwzx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwzx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);\n\t}\n\n\t// wwzy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwzy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);\n\t}\n\n\t// wwzz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwzz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);\n\t}\n\n\t// wwzw\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwzw(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);\n\t}\n\n\t// wwwx\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwwx(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);\n\t}\n\n\t// wwwy\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwwy(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);\n\t}\n\n\t// wwwz\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwwz(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);\n\t}\n\n\t// wwww\n\ttemplate<typename T, qualifier Q>\n\tGLM_INLINE glm::vec<4, T, Q> wwww(const glm::vec<4, T, Q> &v) {\n\t\treturn glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);\n\t}\n\n}\n"
  },
  {
    "path": "libraries/glm/gtx/vector_angle.hpp",
    "content": "/// @ref gtx_vector_angle\n/// @file glm/gtx/vector_angle.hpp\n///\n/// @see core (dependence)\n/// @see gtx_quaternion (dependence)\n/// @see gtx_epsilon (dependence)\n///\n/// @defgroup gtx_vector_angle GLM_GTX_vector_angle\n/// @ingroup gtx\n///\n/// Include <glm/gtx/vector_angle.hpp> to use the features of this extension.\n///\n/// Compute angle between vectors\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/epsilon.hpp\"\n#include \"../gtx/quaternion.hpp\"\n#include \"../gtx/rotate_vector.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_vector_angle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_vector_angle extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_vector_angle\n\t/// @{\n\n\t//! Returns the absolute angle between two vectors.\n\t//! Parameters need to be normalized.\n\t/// @see gtx_vector_angle extension.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL T angle(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t//! Returns the oriented angle between two 2d vectors.\n\t//! Parameters need to be normalized.\n\t/// @see gtx_vector_angle extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T orientedAngle(vec<2, T, Q> const& x, vec<2, T, Q> const& y);\n\n\t//! Returns the oriented angle between two 3d vectors based from a reference axis.\n\t//! Parameters need to be normalized.\n\t/// @see gtx_vector_angle extension.\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_DECL T orientedAngle(vec<3, T, Q> const& x, vec<3, T, Q> const& y, vec<3, T, Q> const& ref);\n\n\t/// @}\n}// namespace glm\n\n#include \"vector_angle.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/vector_angle.inl",
    "content": "/// @ref gtx_vector_angle\n\nnamespace glm\n{\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType angle\n\t(\n\t\tgenType const& x,\n\t\tgenType const& y\n\t)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, \"'angle' only accept floating-point inputs\");\n\t\treturn acos(clamp(dot(x, y), genType(-1), genType(1)));\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T angle(vec<L, T, Q> const& x, vec<L, T, Q> const& y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'angle' only accept floating-point inputs\");\n\t\treturn acos(clamp(dot(x, y), T(-1), T(1)));\n\t}\n\n\t//! \\todo epsilon is hard coded to 0.01\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T orientedAngle(vec<2, T, Q> const& x, vec<2, T, Q> const& y)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'orientedAngle' only accept floating-point inputs\");\n\t\tT const Angle(acos(clamp(dot(x, y), T(-1), T(1))));\n\n\t\tif(all(epsilonEqual(y, glm::rotate(x, Angle), T(0.0001))))\n\t\t\treturn Angle;\n\t\telse\n\t\t\treturn -Angle;\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER T orientedAngle(vec<3, T, Q> const& x, vec<3, T, Q> const& y, vec<3, T, Q> const& ref)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'orientedAngle' only accept floating-point inputs\");\n\n\t\tT const Angle(acos(clamp(dot(x, y), T(-1), T(1))));\n\t\treturn mix(Angle, -Angle, dot(ref, cross(x, y)) < T(0));\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/vector_query.hpp",
    "content": "/// @ref gtx_vector_query\n/// @file glm/gtx/vector_query.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_vector_query GLM_GTX_vector_query\n/// @ingroup gtx\n///\n/// Include <glm/gtx/vector_query.hpp> to use the features of this extension.\n///\n/// Query informations of vector types\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include <cfloat>\n#include <limits>\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_vector_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_vector_query extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_vector_query\n\t/// @{\n\n\t//! Check whether two vectors are collinears.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL bool areCollinear(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);\n\n\t//! Check whether two vectors are orthogonals.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL bool areOrthogonal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);\n\n\t//! Check whether a vector is normalized.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNormalized(vec<L, T, Q> const& v, T const& epsilon);\n\n\t//! Check whether a vector is null.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL bool isNull(vec<L, T, Q> const& v, T const& epsilon);\n\n\t//! Check whether a each component of a vector is null.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, bool, Q> isCompNull(vec<L, T, Q> const& v, T const& epsilon);\n\n\t//! Check whether two vectors are orthonormal.\n\t/// @see gtx_vector_query extensions.\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL bool areOrthonormal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);\n\n\t/// @}\n}// namespace glm\n\n#include \"vector_query.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/vector_query.inl",
    "content": "/// @ref gtx_vector_query\n\n#include <cassert>\n\nnamespace glm{\nnamespace detail\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_areCollinear{};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_areCollinear<2, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static bool call(vec<2, T, Q> const& v0, vec<2, T, Q> const& v1, T const& epsilon)\n\t\t{\n\t\t\treturn length(cross(vec<3, T, Q>(v0, static_cast<T>(0)), vec<3, T, Q>(v1, static_cast<T>(0)))) < epsilon;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_areCollinear<3, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static bool call(vec<3, T, Q> const& v0, vec<3, T, Q> const& v1, T const& epsilon)\n\t\t{\n\t\t\treturn length(cross(v0, v1)) < epsilon;\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_areCollinear<4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static bool call(vec<4, T, Q> const& v0, vec<4, T, Q> const& v1, T const& epsilon)\n\t\t{\n\t\t\treturn length(cross(vec<3, T, Q>(v0), vec<3, T, Q>(v1))) < epsilon;\n\t\t}\n\t};\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tstruct compute_isCompNull{};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_isCompNull<2, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<2, bool, Q> call(vec<2, T, Q> const& v, T const& epsilon)\n\t\t{\n\t\t\treturn vec<2, bool, Q>(\n\t\t\t\t(abs(v.x) < epsilon),\n\t\t\t\t(abs(v.y) < epsilon));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_isCompNull<3, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<3, bool, Q> call(vec<3, T, Q> const& v, T const& epsilon)\n\t\t{\n\t\t\treturn vec<3, bool, Q>(\n\t\t\t\t(abs(v.x) < epsilon),\n\t\t\t\t(abs(v.y) < epsilon),\n\t\t\t\t(abs(v.z) < epsilon));\n\t\t}\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct compute_isCompNull<4, T, Q>\n\t{\n\t\tGLM_FUNC_QUALIFIER static vec<4, bool, Q> call(vec<4, T, Q> const& v, T const& epsilon)\n\t\t{\n\t\t\treturn vec<4, bool, Q>(\n\t\t\t\t(abs(v.x) < epsilon),\n\t\t\t\t(abs(v.y) < epsilon),\n\t\t\t\t(abs(v.z) < epsilon),\n\t\t\t\t(abs(v.w) < epsilon));\n\t\t}\n\t};\n\n}//namespace detail\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool areCollinear(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'areCollinear' only accept floating-point inputs\");\n\n\t\treturn detail::compute_areCollinear<L, T, Q>::call(v0, v1, epsilon);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool areOrthogonal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'areOrthogonal' only accept floating-point inputs\");\n\n\t\treturn abs(dot(v0, v1)) <= max(\n\t\t\tstatic_cast<T>(1),\n\t\t\tlength(v0)) * max(static_cast<T>(1), length(v1)) * epsilon;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNormalized(vec<L, T, Q> const& v, T const& epsilon)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isNormalized' only accept floating-point inputs\");\n\n\t\treturn abs(length(v) - static_cast<T>(1)) <= static_cast<T>(2) * epsilon;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool isNull(vec<L, T, Q> const& v, T const& epsilon)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isNull' only accept floating-point inputs\");\n\n\t\treturn length(v) <= epsilon;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, bool, Q> isCompNull(vec<L, T, Q> const& v, T const& epsilon)\n\t{\n\t\tGLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, \"'isCompNull' only accept floating-point inputs\");\n\n\t\treturn detail::compute_isCompNull<L, T, Q>::call(v, epsilon);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<2, bool, Q> isCompNull(vec<2, T, Q> const& v, T const& epsilon)\n\t{\n\t\treturn vec<2, bool, Q>(\n\t\t\tabs(v.x) < epsilon,\n\t\t\tabs(v.y) < epsilon);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<3, bool, Q> isCompNull(vec<3, T, Q> const& v, T const& epsilon)\n\t{\n\t\treturn vec<3, bool, Q>(\n\t\t\tabs(v.x) < epsilon,\n\t\t\tabs(v.y) < epsilon,\n\t\t\tabs(v.z) < epsilon);\n\t}\n\n\ttemplate<typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<4, bool, Q> isCompNull(vec<4, T, Q> const& v, T const& epsilon)\n\t{\n\t\treturn vec<4, bool, Q>(\n\t\t\tabs(v.x) < epsilon,\n\t\t\tabs(v.y) < epsilon,\n\t\t\tabs(v.z) < epsilon,\n\t\t\tabs(v.w) < epsilon);\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER bool areOrthonormal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon)\n\t{\n\t\treturn isNormalized(v0, epsilon) && isNormalized(v1, epsilon) && (abs(dot(v0, v1)) <= epsilon);\n\t}\n\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/gtx/wrap.hpp",
    "content": "/// @ref gtx_wrap\n/// @file glm/gtx/wrap.hpp\n///\n/// @see core (dependence)\n///\n/// @defgroup gtx_wrap GLM_GTX_wrap\n/// @ingroup gtx\n///\n/// Include <glm/gtx/wrap.hpp> to use the features of this extension.\n///\n/// Wrapping mode of texture coordinates.\n\n#pragma once\n\n// Dependency:\n#include \"../glm.hpp\"\n#include \"../gtc/vec1.hpp\"\n\n#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)\n#\tifndef GLM_ENABLE_EXPERIMENTAL\n#\t\tpragma message(\"GLM: GLM_GTX_wrap is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.\")\n#\telse\n#\t\tpragma message(\"GLM: GLM_GTX_wrap extension included\")\n#\tendif\n#endif\n\nnamespace glm\n{\n\t/// @addtogroup gtx_wrap\n\t/// @{\n\n\t/// Simulate GL_CLAMP OpenGL wrap mode\n\t/// @see gtx_wrap extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType clamp(genType const& Texcoord);\n\n\t/// Simulate GL_REPEAT OpenGL wrap mode\n\t/// @see gtx_wrap extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType repeat(genType const& Texcoord);\n\n\t/// Simulate GL_MIRRORED_REPEAT OpenGL wrap mode\n\t/// @see gtx_wrap extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType mirrorClamp(genType const& Texcoord);\n\n\t/// Simulate GL_MIRROR_REPEAT OpenGL wrap mode\n\t/// @see gtx_wrap extension.\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL genType mirrorRepeat(genType const& Texcoord);\n\n\t/// @}\n}// namespace glm\n\n#include \"wrap.inl\"\n"
  },
  {
    "path": "libraries/glm/gtx/wrap.inl",
    "content": "/// @ref gtx_wrap\n\nnamespace glm\n{\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> clamp(vec<L, T, Q> const& Texcoord)\n\t{\n\t\treturn glm::clamp(Texcoord, vec<L, T, Q>(0), vec<L, T, Q>(1));\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType clamp(genType const& Texcoord)\n\t{\n\t\treturn clamp(vec<1, genType, defaultp>(Texcoord)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> repeat(vec<L, T, Q> const& Texcoord)\n\t{\n\t\treturn glm::fract(Texcoord);\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType repeat(genType const& Texcoord)\n\t{\n\t\treturn repeat(vec<1, genType, defaultp>(Texcoord)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mirrorClamp(vec<L, T, Q> const& Texcoord)\n\t{\n\t\treturn glm::fract(glm::abs(Texcoord));\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType mirrorClamp(genType const& Texcoord)\n\t{\n\t\treturn mirrorClamp(vec<1, genType, defaultp>(Texcoord)).x;\n\t}\n\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_QUALIFIER vec<L, T, Q> mirrorRepeat(vec<L, T, Q> const& Texcoord)\n\t{\n\t\tvec<L, T, Q> const Abs = glm::abs(Texcoord);\n\t\tvec<L, T, Q> const Clamp = glm::mod(glm::floor(Abs), vec<L, T, Q>(2));\n\t\tvec<L, T, Q> const Floor = glm::floor(Abs);\n\t\tvec<L, T, Q> const Rest = Abs - Floor;\n\t\tvec<L, T, Q> const Mirror = Clamp + Rest;\n\t\treturn mix(Rest, vec<L, T, Q>(1) - Rest, glm::greaterThanEqual(Mirror, vec<L, T, Q>(1)));\n\t}\n\n\ttemplate<typename genType>\n\tGLM_FUNC_QUALIFIER genType mirrorRepeat(genType const& Texcoord)\n\t{\n\t\treturn mirrorRepeat(vec<1, genType, defaultp>(Texcoord)).x;\n\t}\n}//namespace glm\n"
  },
  {
    "path": "libraries/glm/integer.hpp",
    "content": "/// @ref core\n/// @file glm/integer.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n///\n/// @defgroup core_func_integer Integer functions\n/// @ingroup core\n///\n/// Provides GLSL functions on integer types\n///\n/// These all operate component-wise. The description is per component.\n/// The notation [a, b] means the set of bits from bit-number a through bit-number\n/// b, inclusive. The lowest-order bit is bit 0.\n///\n/// Include <glm/integer.hpp> to use these core features.\n\n#pragma once\n\n#include \"detail/qualifier.hpp\"\n#include \"common.hpp\"\n#include \"vector_relational.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_integer\n\t/// @{\n\n\t/// Adds 32-bit unsigned integer x and y, returning the sum\n\t/// modulo pow(2, 32). The value carry is set to 0 if the sum was\n\t/// less than pow(2, 32), or to 1 otherwise.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/uaddCarry.xml\">GLSL uaddCarry man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uint, Q> uaddCarry(\n\t\tvec<L, uint, Q> const& x,\n\t\tvec<L, uint, Q> const& y,\n\t\tvec<L, uint, Q> & carry);\n\n\t/// Subtracts the 32-bit unsigned integer y from x, returning\n\t/// the difference if non-negative, or pow(2, 32) plus the difference\n\t/// otherwise. The value borrow is set to 0 if x >= y, or to 1 otherwise.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/usubBorrow.xml\">GLSL usubBorrow man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL vec<L, uint, Q> usubBorrow(\n\t\tvec<L, uint, Q> const& x,\n\t\tvec<L, uint, Q> const& y,\n\t\tvec<L, uint, Q> & borrow);\n\n\t/// Multiplies 32-bit integers x and y, producing a 64-bit\n\t/// result. The 32 least-significant bits are returned in lsb.\n\t/// The 32 most-significant bits are returned in msb.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/umulExtended.xml\">GLSL umulExtended man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL void umulExtended(\n\t\tvec<L, uint, Q> const& x,\n\t\tvec<L, uint, Q> const& y,\n\t\tvec<L, uint, Q> & msb,\n\t\tvec<L, uint, Q> & lsb);\n\n\t/// Multiplies 32-bit integers x and y, producing a 64-bit\n\t/// result. The 32 least-significant bits are returned in lsb.\n\t/// The 32 most-significant bits are returned in msb.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/imulExtended.xml\">GLSL imulExtended man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL void imulExtended(\n\t\tvec<L, int, Q> const& x,\n\t\tvec<L, int, Q> const& y,\n\t\tvec<L, int, Q> & msb,\n\t\tvec<L, int, Q> & lsb);\n\n\t/// Extracts bits [offset, offset + bits - 1] from value,\n\t/// returning them in the least significant bits of the result.\n\t/// For unsigned data types, the most significant bits of the\n\t/// result will be set to zero. For signed data types, the\n\t/// most significant bits will be set to the value of bit offset + base - 1.\n\t///\n\t/// If bits is zero, the result will be zero. The result will be\n\t/// undefined if offset or bits is negative, or if the sum of\n\t/// offset and bits is greater than the number of bits used\n\t/// to store the operand.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldExtract.xml\">GLSL bitfieldExtract man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldExtract(\n\t\tvec<L, T, Q> const& Value,\n\t\tint Offset,\n\t\tint Bits);\n\n\t/// Returns the insertion the bits least-significant bits of insert into base.\n\t///\n\t/// The result will have bits [offset, offset + bits - 1] taken\n\t/// from bits [0, bits - 1] of insert, and all other bits taken\n\t/// directly from the corresponding bits of base. If bits is\n\t/// zero, the result will simply be base. The result will be\n\t/// undefined if offset or bits is negative, or if the sum of\n\t/// offset and bits is greater than the number of bits used to\n\t/// store the operand.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldInsert.xml\">GLSL bitfieldInsert man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldInsert(\n\t\tvec<L, T, Q> const& Base,\n\t\tvec<L, T, Q> const& Insert,\n\t\tint Offset,\n\t\tint Bits);\n\n\t/// Returns the reversal of the bits of value.\n\t/// The bit numbered n of the result will be taken from bit (bits - 1) - n of value,\n\t/// where bits is the total number of bits used to represent value.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/bitfieldReverse.xml\">GLSL bitfieldReverse man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> bitfieldReverse(vec<L, T, Q> const& v);\n\n\t/// Returns the number of bits set to 1 in the binary representation of value.\n\t///\n\t/// @tparam genType Signed or unsigned integer scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/bitCount.xml\">GLSL bitCount man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<typename genType>\n\tGLM_FUNC_DECL int bitCount(genType v);\n\n\t/// Returns the number of bits set to 1 in the binary representation of value.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar or vector types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/bitCount.xml\">GLSL bitCount man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> bitCount(vec<L, T, Q> const& v);\n\n\t/// Returns the bit number of the least significant bit set to\n\t/// 1 in the binary representation of value.\n\t/// If value is zero, -1 will be returned.\n\t///\n\t/// @tparam genIUType Signed or unsigned integer scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/findLSB.xml\">GLSL findLSB man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL int findLSB(genIUType x);\n\n\t/// Returns the bit number of the least significant bit set to\n\t/// 1 in the binary representation of value.\n\t/// If value is zero, -1 will be returned.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/findLSB.xml\">GLSL findLSB man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> findLSB(vec<L, T, Q> const& v);\n\n\t/// Returns the bit number of the most significant bit in the binary representation of value.\n\t/// For positive integers, the result will be the bit number of the most significant bit set to 1.\n\t/// For negative integers, the result will be the bit number of the most significant\n\t/// bit set to 0. For a value of zero or negative one, -1 will be returned.\n\t///\n\t/// @tparam genIUType Signed or unsigned integer scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/findMSB.xml\">GLSL findMSB man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<typename genIUType>\n\tGLM_FUNC_DECL int findMSB(genIUType x);\n\n\t/// Returns the bit number of the most significant bit in the binary representation of value.\n\t/// For positive integers, the result will be the bit number of the most significant bit set to 1.\n\t/// For negative integers, the result will be the bit number of the most significant\n\t/// bit set to 0. For a value of zero or negative one, -1 will be returned.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T Signed or unsigned integer scalar types.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/findMSB.xml\">GLSL findMSB man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.8 Integer Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, int, Q> findMSB(vec<L, T, Q> const& v);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_integer.inl\"\n"
  },
  {
    "path": "libraries/glm/mat2x2.hpp",
    "content": "/// @ref core\n/// @file glm/mat2x2.hpp\n\n#pragma once\n#include \"./ext/matrix_double2x2.hpp\"\n#include \"./ext/matrix_double2x2_precision.hpp\"\n#include \"./ext/matrix_float2x2.hpp\"\n#include \"./ext/matrix_float2x2_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/mat2x3.hpp",
    "content": "/// @ref core\n/// @file glm/mat2x3.hpp\n\n#pragma once\n#include \"./ext/matrix_double2x3.hpp\"\n#include \"./ext/matrix_double2x3_precision.hpp\"\n#include \"./ext/matrix_float2x3.hpp\"\n#include \"./ext/matrix_float2x3_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/mat2x4.hpp",
    "content": "/// @ref core\n/// @file glm/mat2x4.hpp\n\n#pragma once\n#include \"./ext/matrix_double2x4.hpp\"\n#include \"./ext/matrix_double2x4_precision.hpp\"\n#include \"./ext/matrix_float2x4.hpp\"\n#include \"./ext/matrix_float2x4_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/mat3x2.hpp",
    "content": "/// @ref core\n/// @file glm/mat3x2.hpp\n\n#pragma once\n#include \"./ext/matrix_double3x2.hpp\"\n#include \"./ext/matrix_double3x2_precision.hpp\"\n#include \"./ext/matrix_float3x2.hpp\"\n#include \"./ext/matrix_float3x2_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/mat3x3.hpp",
    "content": "/// @ref core\n/// @file glm/mat3x3.hpp\n\n#pragma once\n#include \"./ext/matrix_double3x3.hpp\"\n#include \"./ext/matrix_double3x3_precision.hpp\"\n#include \"./ext/matrix_float3x3.hpp\"\n#include \"./ext/matrix_float3x3_precision.hpp\"\n"
  },
  {
    "path": "libraries/glm/mat3x4.hpp",
    "content": "/// @ref core\n/// @file glm/mat3x4.hpp\n\n#pragma once\n#include \"./ext/matrix_double3x4.hpp\"\n#include \"./ext/matrix_double3x4_precision.hpp\"\n#include \"./ext/matrix_float3x4.hpp\"\n#include \"./ext/matrix_float3x4_precision.hpp\"\n"
  },
  {
    "path": "libraries/glm/mat4x2.hpp",
    "content": "/// @ref core\n/// @file glm/mat4x2.hpp\n\n#pragma once\n#include \"./ext/matrix_double4x2.hpp\"\n#include \"./ext/matrix_double4x2_precision.hpp\"\n#include \"./ext/matrix_float4x2.hpp\"\n#include \"./ext/matrix_float4x2_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/mat4x3.hpp",
    "content": "/// @ref core\n/// @file glm/mat4x3.hpp\n\n#pragma once\n#include \"./ext/matrix_double4x3.hpp\"\n#include \"./ext/matrix_double4x3_precision.hpp\"\n#include \"./ext/matrix_float4x3.hpp\"\n#include \"./ext/matrix_float4x3_precision.hpp\"\n"
  },
  {
    "path": "libraries/glm/mat4x4.hpp",
    "content": "/// @ref core\n/// @file glm/mat4x4.hpp\n\n#pragma once\n#include \"./ext/matrix_double4x4.hpp\"\n#include \"./ext/matrix_double4x4_precision.hpp\"\n#include \"./ext/matrix_float4x4.hpp\"\n#include \"./ext/matrix_float4x4_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/matrix.hpp",
    "content": "/// @ref core\n/// @file glm/matrix.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n///\n/// @defgroup core_func_matrix Matrix functions\n/// @ingroup core\n///\n/// Provides GLSL matrix functions.\n///\n/// Include <glm/matrix.hpp> to use these core features.\n\n#pragma once\n\n// Dependencies\n#include \"detail/qualifier.hpp\"\n#include \"detail/setup.hpp\"\n#include \"vec2.hpp\"\n#include \"vec3.hpp\"\n#include \"vec4.hpp\"\n#include \"mat2x2.hpp\"\n#include \"mat2x3.hpp\"\n#include \"mat2x4.hpp\"\n#include \"mat3x2.hpp\"\n#include \"mat3x3.hpp\"\n#include \"mat3x4.hpp\"\n#include \"mat4x2.hpp\"\n#include \"mat4x3.hpp\"\n#include \"mat4x4.hpp\"\n\nnamespace glm {\nnamespace detail\n{\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tstruct outerProduct_trait{};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<2, 2, T, Q>\n\t{\n\t\ttypedef mat<2, 2, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<2, 3, T, Q>\n\t{\n\t\ttypedef mat<3, 2, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<2, 4, T, Q>\n\t{\n\t\ttypedef mat<4, 2, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<3, 2, T, Q>\n\t{\n\t\ttypedef mat<2, 3, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<3, 3, T, Q>\n\t{\n\t\ttypedef mat<3, 3, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<3, 4, T, Q>\n\t{\n\t\ttypedef mat<4, 3, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<4, 2, T, Q>\n\t{\n\t\ttypedef mat<2, 4, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<4, 3, T, Q>\n\t{\n\t\ttypedef mat<3, 4, T, Q> type;\n\t};\n\n\ttemplate<typename T, qualifier Q>\n\tstruct outerProduct_trait<4, 4, T, Q>\n\t{\n\t\ttypedef mat<4, 4, T, Q> type;\n\t};\n}//namespace detail\n\n\t /// @addtogroup core_func_matrix\n\t /// @{\n\n\t /// Multiply matrix x by matrix y component-wise, i.e.,\n\t /// result[i][j] is the scalar product of x[i][j] and y[i][j].\n\t ///\n\t /// @tparam C Integer between 1 and 4 included that qualify the number a column\n\t /// @tparam R Integer between 1 and 4 included that qualify the number a row\n\t /// @tparam T Floating-point or signed integer scalar types\n\t /// @tparam Q Value from qualifier enum\n\t ///\n\t /// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/matrixCompMult.xml\">GLSL matrixCompMult man page</a>\n\t /// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> matrixCompMult(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);\n\n\t/// Treats the first parameter c as a column vector\n\t/// and the second parameter r as a row vector\n\t/// and does a linear algebraic matrix multiply c * r.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number a column\n\t/// @tparam R Integer between 1 and 4 included that qualify the number a row\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/outerProduct.xml\">GLSL outerProduct man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL typename detail::outerProduct_trait<C, R, T, Q>::type outerProduct(vec<C, T, Q> const& c, vec<R, T, Q> const& r);\n\n\t/// Returns the transposed matrix of x\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number a column\n\t/// @tparam R Integer between 1 and 4 included that qualify the number a row\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/transpose.xml\">GLSL transpose man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL typename mat<C, R, T, Q>::transpose_type transpose(mat<C, R, T, Q> const& x);\n\n\t/// Return the determinant of a squared matrix.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number a column\n\t/// @tparam R Integer between 1 and 4 included that qualify the number a row\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/determinant.xml\">GLSL determinant man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL T determinant(mat<C, R, T, Q> const& m);\n\n\t/// Return the inverse of a squared matrix.\n\t///\n\t/// @tparam C Integer between 1 and 4 included that qualify the number a column\n\t/// @tparam R Integer between 1 and 4 included that qualify the number a row\n\t/// @tparam T Floating-point or signed integer scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/inverse.xml\">GLSL inverse man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.6 Matrix Functions</a>\n\ttemplate<length_t C, length_t R, typename T, qualifier Q>\n\tGLM_FUNC_DECL mat<C, R, T, Q> inverse(mat<C, R, T, Q> const& m);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_matrix.inl\"\n"
  },
  {
    "path": "libraries/glm/packing.hpp",
    "content": "/// @ref core\n/// @file glm/packing.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n/// @see gtc_packing\n///\n/// @defgroup core_func_packing Floating-Point Pack and Unpack Functions\n/// @ingroup core\n///\n/// Provides GLSL functions to pack and unpack half, single and double-precision floating point values into more compact integer types.\n///\n/// These functions do not operate component-wise, rather as described in each case.\n///\n/// Include <glm/packing.hpp> to use these core features.\n\n#pragma once\n\n#include \"./ext/vector_uint2.hpp\"\n#include \"./ext/vector_float2.hpp\"\n#include \"./ext/vector_float4.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_packing\n\t/// @{\n\n\t/// First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm2x16.xml\">GLSL packUnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint packUnorm2x16(vec2 const& v);\n\n\t/// First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packSnorm2x16: round(clamp(v, -1, +1) * 32767.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm2x16.xml\">GLSL packSnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint packSnorm2x16(vec2 const& v);\n\n\t/// First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packUnorm4x8:\tround(clamp(c, 0, +1) * 255.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packUnorm4x8.xml\">GLSL packUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint packUnorm4x8(vec4 const& v);\n\n\t/// First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.\n\t/// Then, the results are packed into the returned 32-bit unsigned integer.\n\t///\n\t/// The conversion for component c of v to fixed point is done as follows:\n\t/// packSnorm4x8:\tround(clamp(c, -1, +1) * 127.0)\n\t///\n\t/// The first component of the vector will be written to the least significant bits of the output;\n\t/// the last component will be written to the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packSnorm4x8.xml\">GLSL packSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint packSnorm4x8(vec4 const& v);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnorm2x16: f / 65535.0\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm2x16.xml\">GLSL unpackUnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec2 unpackUnorm2x16(uint p);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm2x16: clamp(f / 32767.0, -1, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm2x16.xml\">GLSL unpackSnorm2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec2 unpackSnorm2x16(uint p);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackUnorm4x8: f / 255.0\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackUnorm4x8.xml\">GLSL unpackUnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec4 unpackUnorm4x8(uint p);\n\n\t/// First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.\n\t/// Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.\n\t///\n\t/// The conversion for unpacked fixed-point value f to floating point is done as follows:\n\t/// unpackSnorm4x8: clamp(f / 127.0, -1, +1)\n\t///\n\t/// The first component of the returned vector will be extracted from the least significant bits of the input;\n\t/// the last component will be extracted from the most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackSnorm4x8.xml\">GLSL unpackSnorm4x8 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec4 unpackSnorm4x8(uint p);\n\n\t/// Returns a double-qualifier value obtained by packing the components of v into a 64-bit value.\n\t/// If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified.\n\t/// Otherwise, the bit- level representation of v is preserved.\n\t/// The first vector component specifies the 32 least significant bits;\n\t/// the second component specifies the 32 most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packDouble2x32.xml\">GLSL packDouble2x32 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL double packDouble2x32(uvec2 const& v);\n\n\t/// Returns a two-component unsigned integer vector representation of v.\n\t/// The bit-level representation of v is preserved.\n\t/// The first component of the vector contains the 32 least significant bits of the double;\n\t/// the second component consists the 32 most significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackDouble2x32.xml\">GLSL unpackDouble2x32 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uvec2 unpackDouble2x32(double v);\n\n\t/// Returns an unsigned integer obtained by converting the components of a two-component floating-point vector\n\t/// to the 16-bit floating-point representation found in the OpenGL Specification,\n\t/// and then packing these two 16- bit integers into a 32-bit unsigned integer.\n\t/// The first vector component specifies the 16 least-significant bits of the result;\n\t/// the second component specifies the 16 most-significant bits.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/packHalf2x16.xml\">GLSL packHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL uint packHalf2x16(vec2 const& v);\n\n\t/// Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values,\n\t/// interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification,\n\t/// and converting them to 32-bit floating-point values.\n\t/// The first component of the vector is obtained from the 16 least-significant bits of v;\n\t/// the second component is obtained from the 16 most-significant bits of v.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/unpackHalf2x16.xml\">GLSL unpackHalf2x16 man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions</a>\n\tGLM_FUNC_DECL vec2 unpackHalf2x16(uint v);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_packing.inl\"\n"
  },
  {
    "path": "libraries/glm/simd/common.h",
    "content": "/// @ref simd\n/// @file glm/simd/common.h\n\n#pragma once\n\n#include \"platform.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_add(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_add_ps(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_add(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_add_ss(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_sub(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_sub_ps(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_sub(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_sub_ss(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_mul(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_mul_ps(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_mul(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_mul_ss(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_div(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_div_ps(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_div(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn _mm_div_ss(a, b);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_div_lowp(glm_f32vec4 a, glm_f32vec4 b)\n{\n\treturn glm_vec4_mul(a, _mm_rcp_ps(b));\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_swizzle_xyzw(glm_f32vec4 a)\n{\n#\tif GLM_ARCH & GLM_ARCH_AVX2_BIT\n\t\treturn _mm_permute_ps(a, _MM_SHUFFLE(3, 2, 1, 0));\n#\telse\n\t\treturn _mm_shuffle_ps(a, a, _MM_SHUFFLE(3, 2, 1, 0));\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_fma(glm_f32vec4 a, glm_f32vec4 b, glm_f32vec4 c)\n{\n#\tif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && !(GLM_COMPILER & GLM_COMPILER_CLANG)\n\t\treturn _mm_fmadd_ss(a, b, c);\n#\telse\n\t\treturn _mm_add_ss(_mm_mul_ss(a, b), c);\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_fma(glm_f32vec4 a, glm_f32vec4 b, glm_f32vec4 c)\n{\n#\tif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && !(GLM_COMPILER & GLM_COMPILER_CLANG)\n\t\treturn _mm_fmadd_ps(a, b, c);\n#\telse\n\t\treturn glm_vec4_add(glm_vec4_mul(a, b), c);\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_abs(glm_f32vec4 x)\n{\n\treturn _mm_and_ps(x, _mm_castsi128_ps(_mm_set1_epi32(0x7FFFFFFF)));\n}\n\nGLM_FUNC_QUALIFIER glm_ivec4 glm_ivec4_abs(glm_ivec4 x)\n{\n#\tif GLM_ARCH & GLM_ARCH_SSSE3_BIT\n\t\treturn _mm_sign_epi32(x, x);\n#\telse\n\t\tglm_ivec4 const sgn0 = _mm_srai_epi32(x, 31);\n\t\tglm_ivec4 const inv0 = _mm_xor_si128(x, sgn0);\n\t\tglm_ivec4 const sub0 = _mm_sub_epi32(inv0, sgn0);\n\t\treturn sub0;\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_sign(glm_vec4 x)\n{\n\tglm_vec4 const zro0 = _mm_setzero_ps();\n\tglm_vec4 const cmp0 = _mm_cmplt_ps(x, zro0);\n\tglm_vec4 const cmp1 = _mm_cmpgt_ps(x, zro0);\n\tglm_vec4 const and0 = _mm_and_ps(cmp0, _mm_set1_ps(-1.0f));\n\tglm_vec4 const and1 = _mm_and_ps(cmp1, _mm_set1_ps(1.0f));\n\tglm_vec4 const or0 = _mm_or_ps(and0, and1);\n\treturn or0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_round(glm_vec4 x)\n{\n#\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\t\treturn _mm_round_ps(x, _MM_FROUND_TO_NEAREST_INT);\n#\telse\n\t\tglm_vec4 const sgn0 = _mm_castsi128_ps(_mm_set1_epi32(int(0x80000000)));\n\t\tglm_vec4 const and0 = _mm_and_ps(sgn0, x);\n\t\tglm_vec4 const or0 = _mm_or_ps(and0, _mm_set_ps1(8388608.0f));\n\t\tglm_vec4 const add0 = glm_vec4_add(x, or0);\n\t\tglm_vec4 const sub0 = glm_vec4_sub(add0, or0);\n\t\treturn sub0;\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_floor(glm_vec4 x)\n{\n#\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\t\treturn _mm_floor_ps(x);\n#\telse\n\t\tglm_vec4 const rnd0 = glm_vec4_round(x);\n\t\tglm_vec4 const cmp0 = _mm_cmplt_ps(x, rnd0);\n\t\tglm_vec4 const and0 = _mm_and_ps(cmp0, _mm_set1_ps(1.0f));\n\t\tglm_vec4 const sub0 = glm_vec4_sub(rnd0, and0);\n\t\treturn sub0;\n#\tendif\n}\n\n/* trunc TODO\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_trunc(glm_vec4 x)\n{\n\treturn glm_vec4();\n}\n*/\n\n//roundEven\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_roundEven(glm_vec4 x)\n{\n\tglm_vec4 const sgn0 = _mm_castsi128_ps(_mm_set1_epi32(int(0x80000000)));\n\tglm_vec4 const and0 = _mm_and_ps(sgn0, x);\n\tglm_vec4 const or0 = _mm_or_ps(and0, _mm_set_ps1(8388608.0f));\n\tglm_vec4 const add0 = glm_vec4_add(x, or0);\n\tglm_vec4 const sub0 = glm_vec4_sub(add0, or0);\n\treturn sub0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_ceil(glm_vec4 x)\n{\n#\tif GLM_ARCH & GLM_ARCH_SSE41_BIT\n\t\treturn _mm_ceil_ps(x);\n#\telse\n\t\tglm_vec4 const rnd0 = glm_vec4_round(x);\n\t\tglm_vec4 const cmp0 = _mm_cmpgt_ps(x, rnd0);\n\t\tglm_vec4 const and0 = _mm_and_ps(cmp0, _mm_set1_ps(1.0f));\n\t\tglm_vec4 const add0 = glm_vec4_add(rnd0, and0);\n\t\treturn add0;\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_fract(glm_vec4 x)\n{\n\tglm_vec4 const flr0 = glm_vec4_floor(x);\n\tglm_vec4 const sub0 = glm_vec4_sub(x, flr0);\n\treturn sub0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_mod(glm_vec4 x, glm_vec4 y)\n{\n\tglm_vec4 const div0 = glm_vec4_div(x, y);\n\tglm_vec4 const flr0 = glm_vec4_floor(div0);\n\tglm_vec4 const mul0 = glm_vec4_mul(y, flr0);\n\tglm_vec4 const sub0 = glm_vec4_sub(x, mul0);\n\treturn sub0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_clamp(glm_vec4 v, glm_vec4 minVal, glm_vec4 maxVal)\n{\n\tglm_vec4 const min0 = _mm_min_ps(v, maxVal);\n\tglm_vec4 const max0 = _mm_max_ps(min0, minVal);\n\treturn max0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_mix(glm_vec4 v1, glm_vec4 v2, glm_vec4 a)\n{\n\tglm_vec4 const sub0 = glm_vec4_sub(_mm_set1_ps(1.0f), a);\n\tglm_vec4 const mul0 = glm_vec4_mul(v1, sub0);\n\tglm_vec4 const mad0 = glm_vec4_fma(v2, a, mul0);\n\treturn mad0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_step(glm_vec4 edge, glm_vec4 x)\n{\n\tglm_vec4 const cmp = _mm_cmple_ps(x, edge);\n\treturn _mm_movemask_ps(cmp) == 0 ? _mm_set1_ps(1.0f) : _mm_setzero_ps();\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_smoothstep(glm_vec4 edge0, glm_vec4 edge1, glm_vec4 x)\n{\n\tglm_vec4 const sub0 = glm_vec4_sub(x, edge0);\n\tglm_vec4 const sub1 = glm_vec4_sub(edge1, edge0);\n\tglm_vec4 const div0 = glm_vec4_sub(sub0, sub1);\n\tglm_vec4 const clp0 = glm_vec4_clamp(div0, _mm_setzero_ps(), _mm_set1_ps(1.0f));\n\tglm_vec4 const mul0 = glm_vec4_mul(_mm_set1_ps(2.0f), clp0);\n\tglm_vec4 const sub2 = glm_vec4_sub(_mm_set1_ps(3.0f), mul0);\n\tglm_vec4 const mul1 = glm_vec4_mul(clp0, clp0);\n\tglm_vec4 const mul2 = glm_vec4_mul(mul1, sub2);\n\treturn mul2;\n}\n\n// Agner Fog method\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_nan(glm_vec4 x)\n{\n\tglm_ivec4 const t1 = _mm_castps_si128(x);\t\t\t\t\t\t// reinterpret as 32-bit integer\n\tglm_ivec4 const t2 = _mm_sll_epi32(t1, _mm_cvtsi32_si128(1));\t// shift out sign bit\n\tglm_ivec4 const t3 = _mm_set1_epi32(int(0xFF000000));\t\t\t\t// exponent mask\n\tglm_ivec4 const t4 = _mm_and_si128(t2, t3);\t\t\t\t\t\t// exponent\n\tglm_ivec4 const t5 = _mm_andnot_si128(t3, t2);\t\t\t\t\t// fraction\n\tglm_ivec4 const Equal = _mm_cmpeq_epi32(t3, t4);\n\tglm_ivec4 const Nequal = _mm_cmpeq_epi32(t5, _mm_setzero_si128());\n\tglm_ivec4 const And = _mm_and_si128(Equal, Nequal);\n\treturn _mm_castsi128_ps(And);\t\t\t\t\t\t\t\t\t// exponent = all 1s and fraction != 0\n}\n\n// Agner Fog method\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_inf(glm_vec4 x)\n{\n\tglm_ivec4 const t1 = _mm_castps_si128(x);\t\t\t\t\t\t\t\t\t\t// reinterpret as 32-bit integer\n\tglm_ivec4 const t2 = _mm_sll_epi32(t1, _mm_cvtsi32_si128(1));\t\t\t\t\t// shift out sign bit\n\treturn _mm_castsi128_ps(_mm_cmpeq_epi32(t2, _mm_set1_epi32(int(0xFF000000))));\t\t// exponent is all 1s, fraction is 0\n}\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/exponential.h",
    "content": "/// @ref simd\n/// @file glm/simd/experimental.h\n\n#pragma once\n\n#include \"platform.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_sqrt_lowp(glm_f32vec4 x)\n{\n\treturn _mm_mul_ss(_mm_rsqrt_ss(x), x);\n}\n\nGLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_sqrt_lowp(glm_f32vec4 x)\n{\n\treturn _mm_mul_ps(_mm_rsqrt_ps(x), x);\n}\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/geometric.h",
    "content": "/// @ref simd\n/// @file glm/simd/geometric.h\n\n#pragma once\n\n#include \"common.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nGLM_FUNC_DECL glm_vec4 glm_vec4_dot(glm_vec4 v1, glm_vec4 v2);\nGLM_FUNC_DECL glm_vec4 glm_vec1_dot(glm_vec4 v1, glm_vec4 v2);\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_length(glm_vec4 x)\n{\n\tglm_vec4 const dot0 = glm_vec4_dot(x, x);\n\tglm_vec4 const sqt0 = _mm_sqrt_ps(dot0);\n\treturn sqt0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_distance(glm_vec4 p0, glm_vec4 p1)\n{\n\tglm_vec4 const sub0 = _mm_sub_ps(p0, p1);\n\tglm_vec4 const len0 = glm_vec4_length(sub0);\n\treturn len0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_dot(glm_vec4 v1, glm_vec4 v2)\n{\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\t\treturn _mm_dp_ps(v1, v2, 0xff);\n#\telif GLM_ARCH & GLM_ARCH_SSE3_BIT\n\t\tglm_vec4 const mul0 = _mm_mul_ps(v1, v2);\n\t\tglm_vec4 const hadd0 = _mm_hadd_ps(mul0, mul0);\n\t\tglm_vec4 const hadd1 = _mm_hadd_ps(hadd0, hadd0);\n\t\treturn hadd1;\n#\telse\n\t\tglm_vec4 const mul0 = _mm_mul_ps(v1, v2);\n\t\tglm_vec4 const swp0 = _mm_shuffle_ps(mul0, mul0, _MM_SHUFFLE(2, 3, 0, 1));\n\t\tglm_vec4 const add0 = _mm_add_ps(mul0, swp0);\n\t\tglm_vec4 const swp1 = _mm_shuffle_ps(add0, add0, _MM_SHUFFLE(0, 1, 2, 3));\n\t\tglm_vec4 const add1 = _mm_add_ps(add0, swp1);\n\t\treturn add1;\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec1_dot(glm_vec4 v1, glm_vec4 v2)\n{\n#\tif GLM_ARCH & GLM_ARCH_AVX_BIT\n\t\treturn _mm_dp_ps(v1, v2, 0xff);\n#\telif GLM_ARCH & GLM_ARCH_SSE3_BIT\n\t\tglm_vec4 const mul0 = _mm_mul_ps(v1, v2);\n\t\tglm_vec4 const had0 = _mm_hadd_ps(mul0, mul0);\n\t\tglm_vec4 const had1 = _mm_hadd_ps(had0, had0);\n\t\treturn had1;\n#\telse\n\t\tglm_vec4 const mul0 = _mm_mul_ps(v1, v2);\n\t\tglm_vec4 const mov0 = _mm_movehl_ps(mul0, mul0);\n\t\tglm_vec4 const add0 = _mm_add_ps(mov0, mul0);\n\t\tglm_vec4 const swp1 = _mm_shuffle_ps(add0, add0, 1);\n\t\tglm_vec4 const add1 = _mm_add_ss(add0, swp1);\n\t\treturn add1;\n#\tendif\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_cross(glm_vec4 v1, glm_vec4 v2)\n{\n\tglm_vec4 const swp0 = _mm_shuffle_ps(v1, v1, _MM_SHUFFLE(3, 0, 2, 1));\n\tglm_vec4 const swp1 = _mm_shuffle_ps(v1, v1, _MM_SHUFFLE(3, 1, 0, 2));\n\tglm_vec4 const swp2 = _mm_shuffle_ps(v2, v2, _MM_SHUFFLE(3, 0, 2, 1));\n\tglm_vec4 const swp3 = _mm_shuffle_ps(v2, v2, _MM_SHUFFLE(3, 1, 0, 2));\n\tglm_vec4 const mul0 = _mm_mul_ps(swp0, swp3);\n\tglm_vec4 const mul1 = _mm_mul_ps(swp1, swp2);\n\tglm_vec4 const sub0 = _mm_sub_ps(mul0, mul1);\n\treturn sub0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_normalize(glm_vec4 v)\n{\n\tglm_vec4 const dot0 = glm_vec4_dot(v, v);\n\tglm_vec4 const isr0 = _mm_rsqrt_ps(dot0);\n\tglm_vec4 const mul0 = _mm_mul_ps(v, isr0);\n\treturn mul0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_faceforward(glm_vec4 N, glm_vec4 I, glm_vec4 Nref)\n{\n\tglm_vec4 const dot0 = glm_vec4_dot(Nref, I);\n\tglm_vec4 const sgn0 = glm_vec4_sign(dot0);\n\tglm_vec4 const mul0 = _mm_mul_ps(sgn0, _mm_set1_ps(-1.0f));\n\tglm_vec4 const mul1 = _mm_mul_ps(N, mul0);\n\treturn mul1;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_vec4_reflect(glm_vec4 I, glm_vec4 N)\n{\n\tglm_vec4 const dot0 = glm_vec4_dot(N, I);\n\tglm_vec4 const mul0 = _mm_mul_ps(N, dot0);\n\tglm_vec4 const mul1 = _mm_mul_ps(mul0, _mm_set1_ps(2.0f));\n\tglm_vec4 const sub0 = _mm_sub_ps(I, mul1);\n\treturn sub0;\n}\n\nGLM_FUNC_QUALIFIER __m128 glm_vec4_refract(glm_vec4 I, glm_vec4 N, glm_vec4 eta)\n{\n\tglm_vec4 const dot0 = glm_vec4_dot(N, I);\n\tglm_vec4 const mul0 = _mm_mul_ps(eta, eta);\n\tglm_vec4 const mul1 = _mm_mul_ps(dot0, dot0);\n\tglm_vec4 const sub0 = _mm_sub_ps(_mm_set1_ps(1.0f), mul0);\n\tglm_vec4 const sub1 = _mm_sub_ps(_mm_set1_ps(1.0f), mul1);\n\tglm_vec4 const mul2 = _mm_mul_ps(sub0, sub1);\n\n\tif(_mm_movemask_ps(_mm_cmplt_ss(mul2, _mm_set1_ps(0.0f))) == 0)\n\t\treturn _mm_set1_ps(0.0f);\n\n\tglm_vec4 const sqt0 = _mm_sqrt_ps(mul2);\n\tglm_vec4 const mad0 = glm_vec4_fma(eta, dot0, sqt0);\n\tglm_vec4 const mul4 = _mm_mul_ps(mad0, N);\n\tglm_vec4 const mul5 = _mm_mul_ps(eta, I);\n\tglm_vec4 const sub2 = _mm_sub_ps(mul5, mul4);\n\n\treturn sub2;\n}\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/integer.h",
    "content": "/// @ref simd\n/// @file glm/simd/integer.h\n\n#pragma once\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nGLM_FUNC_QUALIFIER glm_uvec4 glm_i128_interleave(glm_uvec4 x)\n{\n\tglm_uvec4 const Mask4 = _mm_set1_epi32(0x0000FFFF);\n\tglm_uvec4 const Mask3 = _mm_set1_epi32(0x00FF00FF);\n\tglm_uvec4 const Mask2 = _mm_set1_epi32(0x0F0F0F0F);\n\tglm_uvec4 const Mask1 = _mm_set1_epi32(0x33333333);\n\tglm_uvec4 const Mask0 = _mm_set1_epi32(0x55555555);\n\n\tglm_uvec4 Reg1;\n\tglm_uvec4 Reg2;\n\n\t// REG1 = x;\n\t// REG2 = y;\n\t//Reg1 = _mm_unpacklo_epi64(x, y);\n\tReg1 = x;\n\n\t//REG1 = ((REG1 << 16) | REG1) & glm::uint64(0x0000FFFF0000FFFF);\n\t//REG2 = ((REG2 << 16) | REG2) & glm::uint64(0x0000FFFF0000FFFF);\n\tReg2 = _mm_slli_si128(Reg1, 2);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask4);\n\n\t//REG1 = ((REG1 <<  8) | REG1) & glm::uint64(0x00FF00FF00FF00FF);\n\t//REG2 = ((REG2 <<  8) | REG2) & glm::uint64(0x00FF00FF00FF00FF);\n\tReg2 = _mm_slli_si128(Reg1, 1);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask3);\n\n\t//REG1 = ((REG1 <<  4) | REG1) & glm::uint64(0x0F0F0F0F0F0F0F0F);\n\t//REG2 = ((REG2 <<  4) | REG2) & glm::uint64(0x0F0F0F0F0F0F0F0F);\n\tReg2 = _mm_slli_epi32(Reg1, 4);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask2);\n\n\t//REG1 = ((REG1 <<  2) | REG1) & glm::uint64(0x3333333333333333);\n\t//REG2 = ((REG2 <<  2) | REG2) & glm::uint64(0x3333333333333333);\n\tReg2 = _mm_slli_epi32(Reg1, 2);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask1);\n\n\t//REG1 = ((REG1 <<  1) | REG1) & glm::uint64(0x5555555555555555);\n\t//REG2 = ((REG2 <<  1) | REG2) & glm::uint64(0x5555555555555555);\n\tReg2 = _mm_slli_epi32(Reg1, 1);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask0);\n\n\t//return REG1 | (REG2 << 1);\n\tReg2 = _mm_slli_epi32(Reg1, 1);\n\tReg2 = _mm_srli_si128(Reg2, 8);\n\tReg1 = _mm_or_si128(Reg1, Reg2);\n\n\treturn Reg1;\n}\n\nGLM_FUNC_QUALIFIER glm_uvec4 glm_i128_interleave2(glm_uvec4 x, glm_uvec4 y)\n{\n\tglm_uvec4 const Mask4 = _mm_set1_epi32(0x0000FFFF);\n\tglm_uvec4 const Mask3 = _mm_set1_epi32(0x00FF00FF);\n\tglm_uvec4 const Mask2 = _mm_set1_epi32(0x0F0F0F0F);\n\tglm_uvec4 const Mask1 = _mm_set1_epi32(0x33333333);\n\tglm_uvec4 const Mask0 = _mm_set1_epi32(0x55555555);\n\n\tglm_uvec4 Reg1;\n\tglm_uvec4 Reg2;\n\n\t// REG1 = x;\n\t// REG2 = y;\n\tReg1 = _mm_unpacklo_epi64(x, y);\n\n\t//REG1 = ((REG1 << 16) | REG1) & glm::uint64(0x0000FFFF0000FFFF);\n\t//REG2 = ((REG2 << 16) | REG2) & glm::uint64(0x0000FFFF0000FFFF);\n\tReg2 = _mm_slli_si128(Reg1, 2);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask4);\n\n\t//REG1 = ((REG1 <<  8) | REG1) & glm::uint64(0x00FF00FF00FF00FF);\n\t//REG2 = ((REG2 <<  8) | REG2) & glm::uint64(0x00FF00FF00FF00FF);\n\tReg2 = _mm_slli_si128(Reg1, 1);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask3);\n\n\t//REG1 = ((REG1 <<  4) | REG1) & glm::uint64(0x0F0F0F0F0F0F0F0F);\n\t//REG2 = ((REG2 <<  4) | REG2) & glm::uint64(0x0F0F0F0F0F0F0F0F);\n\tReg2 = _mm_slli_epi32(Reg1, 4);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask2);\n\n\t//REG1 = ((REG1 <<  2) | REG1) & glm::uint64(0x3333333333333333);\n\t//REG2 = ((REG2 <<  2) | REG2) & glm::uint64(0x3333333333333333);\n\tReg2 = _mm_slli_epi32(Reg1, 2);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask1);\n\n\t//REG1 = ((REG1 <<  1) | REG1) & glm::uint64(0x5555555555555555);\n\t//REG2 = ((REG2 <<  1) | REG2) & glm::uint64(0x5555555555555555);\n\tReg2 = _mm_slli_epi32(Reg1, 1);\n\tReg1 = _mm_or_si128(Reg2, Reg1);\n\tReg1 = _mm_and_si128(Reg1, Mask0);\n\n\t//return REG1 | (REG2 << 1);\n\tReg2 = _mm_slli_epi32(Reg1, 1);\n\tReg2 = _mm_srli_si128(Reg2, 8);\n\tReg1 = _mm_or_si128(Reg1, Reg2);\n\n\treturn Reg1;\n}\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/matrix.h",
    "content": "/// @ref simd\n/// @file glm/simd/matrix.h\n\n#pragma once\n\n#include \"geometric.h\"\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\nGLM_FUNC_QUALIFIER void glm_mat4_matrixCompMult(glm_vec4 const in1[4], glm_vec4 const in2[4], glm_vec4 out[4])\n{\n\tout[0] = _mm_mul_ps(in1[0], in2[0]);\n\tout[1] = _mm_mul_ps(in1[1], in2[1]);\n\tout[2] = _mm_mul_ps(in1[2], in2[2]);\n\tout[3] = _mm_mul_ps(in1[3], in2[3]);\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_add(glm_vec4 const in1[4], glm_vec4 const in2[4], glm_vec4 out[4])\n{\n\tout[0] = _mm_add_ps(in1[0], in2[0]);\n\tout[1] = _mm_add_ps(in1[1], in2[1]);\n\tout[2] = _mm_add_ps(in1[2], in2[2]);\n\tout[3] = _mm_add_ps(in1[3], in2[3]);\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_sub(glm_vec4 const in1[4], glm_vec4 const in2[4], glm_vec4 out[4])\n{\n\tout[0] = _mm_sub_ps(in1[0], in2[0]);\n\tout[1] = _mm_sub_ps(in1[1], in2[1]);\n\tout[2] = _mm_sub_ps(in1[2], in2[2]);\n\tout[3] = _mm_sub_ps(in1[3], in2[3]);\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_mat4_mul_vec4(glm_vec4 const m[4], glm_vec4 v)\n{\n\t__m128 v0 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 v1 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(1, 1, 1, 1));\n\t__m128 v2 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(2, 2, 2, 2));\n\t__m128 v3 = _mm_shuffle_ps(v, v, _MM_SHUFFLE(3, 3, 3, 3));\n\n\t__m128 m0 = _mm_mul_ps(m[0], v0);\n\t__m128 m1 = _mm_mul_ps(m[1], v1);\n\t__m128 m2 = _mm_mul_ps(m[2], v2);\n\t__m128 m3 = _mm_mul_ps(m[3], v3);\n\n\t__m128 a0 = _mm_add_ps(m0, m1);\n\t__m128 a1 = _mm_add_ps(m2, m3);\n\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\treturn a2;\n}\n\nGLM_FUNC_QUALIFIER __m128 glm_vec4_mul_mat4(glm_vec4 v, glm_vec4 const m[4])\n{\n\t__m128 i0 = m[0];\n\t__m128 i1 = m[1];\n\t__m128 i2 = m[2];\n\t__m128 i3 = m[3];\n\n\t__m128 m0 = _mm_mul_ps(v, i0);\n\t__m128 m1 = _mm_mul_ps(v, i1);\n\t__m128 m2 = _mm_mul_ps(v, i2);\n\t__m128 m3 = _mm_mul_ps(v, i3);\n\n\t__m128 u0 = _mm_unpacklo_ps(m0, m1);\n\t__m128 u1 = _mm_unpackhi_ps(m0, m1);\n\t__m128 a0 = _mm_add_ps(u0, u1);\n\n\t__m128 u2 = _mm_unpacklo_ps(m2, m3);\n\t__m128 u3 = _mm_unpackhi_ps(m2, m3);\n\t__m128 a1 = _mm_add_ps(u2, u3);\n\n\t__m128 f0 = _mm_movelh_ps(a0, a1);\n\t__m128 f1 = _mm_movehl_ps(a1, a0);\n\t__m128 f2 = _mm_add_ps(f0, f1);\n\n\treturn f2;\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_mul(glm_vec4 const in1[4], glm_vec4 const in2[4], glm_vec4 out[4])\n{\n\t{\n\t\t__m128 e0 = _mm_shuffle_ps(in2[0], in2[0], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 e1 = _mm_shuffle_ps(in2[0], in2[0], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 e2 = _mm_shuffle_ps(in2[0], in2[0], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 e3 = _mm_shuffle_ps(in2[0], in2[0], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 m0 = _mm_mul_ps(in1[0], e0);\n\t\t__m128 m1 = _mm_mul_ps(in1[1], e1);\n\t\t__m128 m2 = _mm_mul_ps(in1[2], e2);\n\t\t__m128 m3 = _mm_mul_ps(in1[3], e3);\n\n\t\t__m128 a0 = _mm_add_ps(m0, m1);\n\t\t__m128 a1 = _mm_add_ps(m2, m3);\n\t\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\t\tout[0] = a2;\n\t}\n\n\t{\n\t\t__m128 e0 = _mm_shuffle_ps(in2[1], in2[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 e1 = _mm_shuffle_ps(in2[1], in2[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 e2 = _mm_shuffle_ps(in2[1], in2[1], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 e3 = _mm_shuffle_ps(in2[1], in2[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 m0 = _mm_mul_ps(in1[0], e0);\n\t\t__m128 m1 = _mm_mul_ps(in1[1], e1);\n\t\t__m128 m2 = _mm_mul_ps(in1[2], e2);\n\t\t__m128 m3 = _mm_mul_ps(in1[3], e3);\n\n\t\t__m128 a0 = _mm_add_ps(m0, m1);\n\t\t__m128 a1 = _mm_add_ps(m2, m3);\n\t\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\t\tout[1] = a2;\n\t}\n\n\t{\n\t\t__m128 e0 = _mm_shuffle_ps(in2[2], in2[2], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 e1 = _mm_shuffle_ps(in2[2], in2[2], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 e2 = _mm_shuffle_ps(in2[2], in2[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 e3 = _mm_shuffle_ps(in2[2], in2[2], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 m0 = _mm_mul_ps(in1[0], e0);\n\t\t__m128 m1 = _mm_mul_ps(in1[1], e1);\n\t\t__m128 m2 = _mm_mul_ps(in1[2], e2);\n\t\t__m128 m3 = _mm_mul_ps(in1[3], e3);\n\n\t\t__m128 a0 = _mm_add_ps(m0, m1);\n\t\t__m128 a1 = _mm_add_ps(m2, m3);\n\t\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\t\tout[2] = a2;\n\t}\n\n\t{\n\t\t//(__m128&)_mm_shuffle_epi32(__m128i&)in2[0], _MM_SHUFFLE(3, 3, 3, 3))\n\t\t__m128 e0 = _mm_shuffle_ps(in2[3], in2[3], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 e1 = _mm_shuffle_ps(in2[3], in2[3], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 e2 = _mm_shuffle_ps(in2[3], in2[3], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 e3 = _mm_shuffle_ps(in2[3], in2[3], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 m0 = _mm_mul_ps(in1[0], e0);\n\t\t__m128 m1 = _mm_mul_ps(in1[1], e1);\n\t\t__m128 m2 = _mm_mul_ps(in1[2], e2);\n\t\t__m128 m3 = _mm_mul_ps(in1[3], e3);\n\n\t\t__m128 a0 = _mm_add_ps(m0, m1);\n\t\t__m128 a1 = _mm_add_ps(m2, m3);\n\t\t__m128 a2 = _mm_add_ps(a0, a1);\n\n\t\tout[3] = a2;\n\t}\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_transpose(glm_vec4 const in[4], glm_vec4 out[4])\n{\n\t__m128 tmp0 = _mm_shuffle_ps(in[0], in[1], 0x44);\n\t__m128 tmp2 = _mm_shuffle_ps(in[0], in[1], 0xEE);\n\t__m128 tmp1 = _mm_shuffle_ps(in[2], in[3], 0x44);\n\t__m128 tmp3 = _mm_shuffle_ps(in[2], in[3], 0xEE);\n\n\tout[0] = _mm_shuffle_ps(tmp0, tmp1, 0x88);\n\tout[1] = _mm_shuffle_ps(tmp0, tmp1, 0xDD);\n\tout[2] = _mm_shuffle_ps(tmp2, tmp3, 0x88);\n\tout[3] = _mm_shuffle_ps(tmp2, tmp3, 0xDD);\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_mat4_determinant_highp(glm_vec4 const in[4])\n{\n\t__m128 Fac0;\n\t{\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\t//\tvalType SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac0 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac1;\n\t{\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\t//\tvalType SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac1 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\n\t__m128 Fac2;\n\t{\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\t//\tvalType SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac2 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac3;\n\t{\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\t//\tvalType SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac3 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac4;\n\t{\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\t//\tvalType SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac4 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac5;\n\t{\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\t//\tvalType SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac5 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 SignA = _mm_set_ps( 1.0f,-1.0f, 1.0f,-1.0f);\n\t__m128 SignB = _mm_set_ps(-1.0f, 1.0f,-1.0f, 1.0f);\n\n\t// m[1][0]\n\t// m[0][0]\n\t// m[0][0]\n\t// m[0][0]\n\t__m128 Temp0 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Vec0 = _mm_shuffle_ps(Temp0, Temp0, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][1]\n\t// m[0][1]\n\t// m[0][1]\n\t// m[0][1]\n\t__m128 Temp1 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(1, 1, 1, 1));\n\t__m128 Vec1 = _mm_shuffle_ps(Temp1, Temp1, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][2]\n\t// m[0][2]\n\t// m[0][2]\n\t// m[0][2]\n\t__m128 Temp2 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(2, 2, 2, 2));\n\t__m128 Vec2 = _mm_shuffle_ps(Temp2, Temp2, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][3]\n\t// m[0][3]\n\t// m[0][3]\n\t// m[0][3]\n\t__m128 Temp3 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(3, 3, 3, 3));\n\t__m128 Vec3 = _mm_shuffle_ps(Temp3, Temp3, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// col0\n\t// + (Vec1[0] * Fac0[0] - Vec2[0] * Fac1[0] + Vec3[0] * Fac2[0]),\n\t// - (Vec1[1] * Fac0[1] - Vec2[1] * Fac1[1] + Vec3[1] * Fac2[1]),\n\t// + (Vec1[2] * Fac0[2] - Vec2[2] * Fac1[2] + Vec3[2] * Fac2[2]),\n\t// - (Vec1[3] * Fac0[3] - Vec2[3] * Fac1[3] + Vec3[3] * Fac2[3]),\n\t__m128 Mul00 = _mm_mul_ps(Vec1, Fac0);\n\t__m128 Mul01 = _mm_mul_ps(Vec2, Fac1);\n\t__m128 Mul02 = _mm_mul_ps(Vec3, Fac2);\n\t__m128 Sub00 = _mm_sub_ps(Mul00, Mul01);\n\t__m128 Add00 = _mm_add_ps(Sub00, Mul02);\n\t__m128 Inv0 = _mm_mul_ps(SignB, Add00);\n\n\t// col1\n\t// - (Vec0[0] * Fac0[0] - Vec2[0] * Fac3[0] + Vec3[0] * Fac4[0]),\n\t// + (Vec0[0] * Fac0[1] - Vec2[1] * Fac3[1] + Vec3[1] * Fac4[1]),\n\t// - (Vec0[0] * Fac0[2] - Vec2[2] * Fac3[2] + Vec3[2] * Fac4[2]),\n\t// + (Vec0[0] * Fac0[3] - Vec2[3] * Fac3[3] + Vec3[3] * Fac4[3]),\n\t__m128 Mul03 = _mm_mul_ps(Vec0, Fac0);\n\t__m128 Mul04 = _mm_mul_ps(Vec2, Fac3);\n\t__m128 Mul05 = _mm_mul_ps(Vec3, Fac4);\n\t__m128 Sub01 = _mm_sub_ps(Mul03, Mul04);\n\t__m128 Add01 = _mm_add_ps(Sub01, Mul05);\n\t__m128 Inv1 = _mm_mul_ps(SignA, Add01);\n\n\t// col2\n\t// + (Vec0[0] * Fac1[0] - Vec1[0] * Fac3[0] + Vec3[0] * Fac5[0]),\n\t// - (Vec0[0] * Fac1[1] - Vec1[1] * Fac3[1] + Vec3[1] * Fac5[1]),\n\t// + (Vec0[0] * Fac1[2] - Vec1[2] * Fac3[2] + Vec3[2] * Fac5[2]),\n\t// - (Vec0[0] * Fac1[3] - Vec1[3] * Fac3[3] + Vec3[3] * Fac5[3]),\n\t__m128 Mul06 = _mm_mul_ps(Vec0, Fac1);\n\t__m128 Mul07 = _mm_mul_ps(Vec1, Fac3);\n\t__m128 Mul08 = _mm_mul_ps(Vec3, Fac5);\n\t__m128 Sub02 = _mm_sub_ps(Mul06, Mul07);\n\t__m128 Add02 = _mm_add_ps(Sub02, Mul08);\n\t__m128 Inv2 = _mm_mul_ps(SignB, Add02);\n\n\t// col3\n\t// - (Vec1[0] * Fac2[0] - Vec1[0] * Fac4[0] + Vec2[0] * Fac5[0]),\n\t// + (Vec1[0] * Fac2[1] - Vec1[1] * Fac4[1] + Vec2[1] * Fac5[1]),\n\t// - (Vec1[0] * Fac2[2] - Vec1[2] * Fac4[2] + Vec2[2] * Fac5[2]),\n\t// + (Vec1[0] * Fac2[3] - Vec1[3] * Fac4[3] + Vec2[3] * Fac5[3]));\n\t__m128 Mul09 = _mm_mul_ps(Vec0, Fac2);\n\t__m128 Mul10 = _mm_mul_ps(Vec1, Fac4);\n\t__m128 Mul11 = _mm_mul_ps(Vec2, Fac5);\n\t__m128 Sub03 = _mm_sub_ps(Mul09, Mul10);\n\t__m128 Add03 = _mm_add_ps(Sub03, Mul11);\n\t__m128 Inv3 = _mm_mul_ps(SignA, Add03);\n\n\t__m128 Row0 = _mm_shuffle_ps(Inv0, Inv1, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row1 = _mm_shuffle_ps(Inv2, Inv3, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row2 = _mm_shuffle_ps(Row0, Row1, _MM_SHUFFLE(2, 0, 2, 0));\n\n\t//\tvalType Determinant = m[0][0] * Inverse[0][0]\n\t//\t\t\t\t\t\t+ m[0][1] * Inverse[1][0]\n\t//\t\t\t\t\t\t+ m[0][2] * Inverse[2][0]\n\t//\t\t\t\t\t\t+ m[0][3] * Inverse[3][0];\n\t__m128 Det0 = glm_vec4_dot(in[0], Row2);\n\treturn Det0;\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_mat4_determinant_lowp(glm_vec4 const m[4])\n{\n\t// _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(\n\n\t//T SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t//T SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t//T SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t//T SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t//T SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t//T SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\n\t// First 2 columns\n \t__m128 Swp2A = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[2]), _MM_SHUFFLE(0, 1, 1, 2)));\n \t__m128 Swp3A = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[3]), _MM_SHUFFLE(3, 2, 3, 3)));\n\t__m128 MulA = _mm_mul_ps(Swp2A, Swp3A);\n\n\t// Second 2 columns\n\t__m128 Swp2B = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[2]), _MM_SHUFFLE(3, 2, 3, 3)));\n\t__m128 Swp3B = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[3]), _MM_SHUFFLE(0, 1, 1, 2)));\n\t__m128 MulB = _mm_mul_ps(Swp2B, Swp3B);\n\n\t// Columns subtraction\n\t__m128 SubE = _mm_sub_ps(MulA, MulB);\n\n\t// Last 2 rows\n\t__m128 Swp2C = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[2]), _MM_SHUFFLE(0, 0, 1, 2)));\n\t__m128 Swp3C = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[3]), _MM_SHUFFLE(1, 2, 0, 0)));\n\t__m128 MulC = _mm_mul_ps(Swp2C, Swp3C);\n\t__m128 SubF = _mm_sub_ps(_mm_movehl_ps(MulC, MulC), MulC);\n\n\t//vec<4, T, Q> DetCof(\n\t//\t+ (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02),\n\t//\t- (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04),\n\t//\t+ (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05),\n\t//\t- (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05));\n\n\t__m128 SubFacA = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(SubE), _MM_SHUFFLE(2, 1, 0, 0)));\n\t__m128 SwpFacA = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[1]), _MM_SHUFFLE(0, 0, 0, 1)));\n\t__m128 MulFacA = _mm_mul_ps(SwpFacA, SubFacA);\n\n\t__m128 SubTmpB = _mm_shuffle_ps(SubE, SubF, _MM_SHUFFLE(0, 0, 3, 1));\n\t__m128 SubFacB = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(SubTmpB), _MM_SHUFFLE(3, 1, 1, 0)));//SubF[0], SubE[3], SubE[3], SubE[1];\n\t__m128 SwpFacB = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[1]), _MM_SHUFFLE(1, 1, 2, 2)));\n\t__m128 MulFacB = _mm_mul_ps(SwpFacB, SubFacB);\n\n\t__m128 SubRes = _mm_sub_ps(MulFacA, MulFacB);\n\n\t__m128 SubTmpC = _mm_shuffle_ps(SubE, SubF, _MM_SHUFFLE(1, 0, 2, 2));\n\t__m128 SubFacC = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(SubTmpC), _MM_SHUFFLE(3, 3, 2, 0)));\n\t__m128 SwpFacC = _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(m[1]), _MM_SHUFFLE(2, 3, 3, 3)));\n\t__m128 MulFacC = _mm_mul_ps(SwpFacC, SubFacC);\n\n\t__m128 AddRes = _mm_add_ps(SubRes, MulFacC);\n\t__m128 DetCof = _mm_mul_ps(AddRes, _mm_setr_ps( 1.0f,-1.0f, 1.0f,-1.0f));\n\n\t//return m[0][0] * DetCof[0]\n\t//\t + m[0][1] * DetCof[1]\n\t//\t + m[0][2] * DetCof[2]\n\t//\t + m[0][3] * DetCof[3];\n\n\treturn glm_vec4_dot(m[0], DetCof);\n}\n\nGLM_FUNC_QUALIFIER glm_vec4 glm_mat4_determinant(glm_vec4 const m[4])\n{\n\t// _mm_castsi128_ps(_mm_shuffle_epi32(_mm_castps_si128(add)\n\n\t//T SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t//T SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t//T SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t//T SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t//T SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t//T SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\n\t// First 2 columns\n \t__m128 Swp2A = _mm_shuffle_ps(m[2], m[2], _MM_SHUFFLE(0, 1, 1, 2));\n \t__m128 Swp3A = _mm_shuffle_ps(m[3], m[3], _MM_SHUFFLE(3, 2, 3, 3));\n\t__m128 MulA = _mm_mul_ps(Swp2A, Swp3A);\n\n\t// Second 2 columns\n\t__m128 Swp2B = _mm_shuffle_ps(m[2], m[2], _MM_SHUFFLE(3, 2, 3, 3));\n\t__m128 Swp3B = _mm_shuffle_ps(m[3], m[3], _MM_SHUFFLE(0, 1, 1, 2));\n\t__m128 MulB = _mm_mul_ps(Swp2B, Swp3B);\n\n\t// Columns subtraction\n\t__m128 SubE = _mm_sub_ps(MulA, MulB);\n\n\t// Last 2 rows\n\t__m128 Swp2C = _mm_shuffle_ps(m[2], m[2], _MM_SHUFFLE(0, 0, 1, 2));\n\t__m128 Swp3C = _mm_shuffle_ps(m[3], m[3], _MM_SHUFFLE(1, 2, 0, 0));\n\t__m128 MulC = _mm_mul_ps(Swp2C, Swp3C);\n\t__m128 SubF = _mm_sub_ps(_mm_movehl_ps(MulC, MulC), MulC);\n\n\t//vec<4, T, Q> DetCof(\n\t//\t+ (m[1][1] * SubFactor00 - m[1][2] * SubFactor01 + m[1][3] * SubFactor02),\n\t//\t- (m[1][0] * SubFactor00 - m[1][2] * SubFactor03 + m[1][3] * SubFactor04),\n\t//\t+ (m[1][0] * SubFactor01 - m[1][1] * SubFactor03 + m[1][3] * SubFactor05),\n\t//\t- (m[1][0] * SubFactor02 - m[1][1] * SubFactor04 + m[1][2] * SubFactor05));\n\n\t__m128 SubFacA = _mm_shuffle_ps(SubE, SubE, _MM_SHUFFLE(2, 1, 0, 0));\n\t__m128 SwpFacA = _mm_shuffle_ps(m[1], m[1], _MM_SHUFFLE(0, 0, 0, 1));\n\t__m128 MulFacA = _mm_mul_ps(SwpFacA, SubFacA);\n\n\t__m128 SubTmpB = _mm_shuffle_ps(SubE, SubF, _MM_SHUFFLE(0, 0, 3, 1));\n\t__m128 SubFacB = _mm_shuffle_ps(SubTmpB, SubTmpB, _MM_SHUFFLE(3, 1, 1, 0));//SubF[0], SubE[3], SubE[3], SubE[1];\n\t__m128 SwpFacB = _mm_shuffle_ps(m[1], m[1], _MM_SHUFFLE(1, 1, 2, 2));\n\t__m128 MulFacB = _mm_mul_ps(SwpFacB, SubFacB);\n\n\t__m128 SubRes = _mm_sub_ps(MulFacA, MulFacB);\n\n\t__m128 SubTmpC = _mm_shuffle_ps(SubE, SubF, _MM_SHUFFLE(1, 0, 2, 2));\n\t__m128 SubFacC = _mm_shuffle_ps(SubTmpC, SubTmpC, _MM_SHUFFLE(3, 3, 2, 0));\n\t__m128 SwpFacC = _mm_shuffle_ps(m[1], m[1], _MM_SHUFFLE(2, 3, 3, 3));\n\t__m128 MulFacC = _mm_mul_ps(SwpFacC, SubFacC);\n\n\t__m128 AddRes = _mm_add_ps(SubRes, MulFacC);\n\t__m128 DetCof = _mm_mul_ps(AddRes, _mm_setr_ps( 1.0f,-1.0f, 1.0f,-1.0f));\n\n\t//return m[0][0] * DetCof[0]\n\t//\t + m[0][1] * DetCof[1]\n\t//\t + m[0][2] * DetCof[2]\n\t//\t + m[0][3] * DetCof[3];\n\n\treturn glm_vec4_dot(m[0], DetCof);\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_inverse(glm_vec4 const in[4], glm_vec4 out[4])\n{\n\t__m128 Fac0;\n\t{\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\t//\tvalType SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac0 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac1;\n\t{\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\t//\tvalType SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac1 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\n\t__m128 Fac2;\n\t{\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\t//\tvalType SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac2 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac3;\n\t{\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\t//\tvalType SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac3 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac4;\n\t{\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\t//\tvalType SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac4 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac5;\n\t{\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\t//\tvalType SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac5 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 SignA = _mm_set_ps( 1.0f,-1.0f, 1.0f,-1.0f);\n\t__m128 SignB = _mm_set_ps(-1.0f, 1.0f,-1.0f, 1.0f);\n\n\t// m[1][0]\n\t// m[0][0]\n\t// m[0][0]\n\t// m[0][0]\n\t__m128 Temp0 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Vec0 = _mm_shuffle_ps(Temp0, Temp0, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][1]\n\t// m[0][1]\n\t// m[0][1]\n\t// m[0][1]\n\t__m128 Temp1 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(1, 1, 1, 1));\n\t__m128 Vec1 = _mm_shuffle_ps(Temp1, Temp1, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][2]\n\t// m[0][2]\n\t// m[0][2]\n\t// m[0][2]\n\t__m128 Temp2 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(2, 2, 2, 2));\n\t__m128 Vec2 = _mm_shuffle_ps(Temp2, Temp2, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][3]\n\t// m[0][3]\n\t// m[0][3]\n\t// m[0][3]\n\t__m128 Temp3 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(3, 3, 3, 3));\n\t__m128 Vec3 = _mm_shuffle_ps(Temp3, Temp3, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// col0\n\t// + (Vec1[0] * Fac0[0] - Vec2[0] * Fac1[0] + Vec3[0] * Fac2[0]),\n\t// - (Vec1[1] * Fac0[1] - Vec2[1] * Fac1[1] + Vec3[1] * Fac2[1]),\n\t// + (Vec1[2] * Fac0[2] - Vec2[2] * Fac1[2] + Vec3[2] * Fac2[2]),\n\t// - (Vec1[3] * Fac0[3] - Vec2[3] * Fac1[3] + Vec3[3] * Fac2[3]),\n\t__m128 Mul00 = _mm_mul_ps(Vec1, Fac0);\n\t__m128 Mul01 = _mm_mul_ps(Vec2, Fac1);\n\t__m128 Mul02 = _mm_mul_ps(Vec3, Fac2);\n\t__m128 Sub00 = _mm_sub_ps(Mul00, Mul01);\n\t__m128 Add00 = _mm_add_ps(Sub00, Mul02);\n\t__m128 Inv0 = _mm_mul_ps(SignB, Add00);\n\n\t// col1\n\t// - (Vec0[0] * Fac0[0] - Vec2[0] * Fac3[0] + Vec3[0] * Fac4[0]),\n\t// + (Vec0[0] * Fac0[1] - Vec2[1] * Fac3[1] + Vec3[1] * Fac4[1]),\n\t// - (Vec0[0] * Fac0[2] - Vec2[2] * Fac3[2] + Vec3[2] * Fac4[2]),\n\t// + (Vec0[0] * Fac0[3] - Vec2[3] * Fac3[3] + Vec3[3] * Fac4[3]),\n\t__m128 Mul03 = _mm_mul_ps(Vec0, Fac0);\n\t__m128 Mul04 = _mm_mul_ps(Vec2, Fac3);\n\t__m128 Mul05 = _mm_mul_ps(Vec3, Fac4);\n\t__m128 Sub01 = _mm_sub_ps(Mul03, Mul04);\n\t__m128 Add01 = _mm_add_ps(Sub01, Mul05);\n\t__m128 Inv1 = _mm_mul_ps(SignA, Add01);\n\n\t// col2\n\t// + (Vec0[0] * Fac1[0] - Vec1[0] * Fac3[0] + Vec3[0] * Fac5[0]),\n\t// - (Vec0[0] * Fac1[1] - Vec1[1] * Fac3[1] + Vec3[1] * Fac5[1]),\n\t// + (Vec0[0] * Fac1[2] - Vec1[2] * Fac3[2] + Vec3[2] * Fac5[2]),\n\t// - (Vec0[0] * Fac1[3] - Vec1[3] * Fac3[3] + Vec3[3] * Fac5[3]),\n\t__m128 Mul06 = _mm_mul_ps(Vec0, Fac1);\n\t__m128 Mul07 = _mm_mul_ps(Vec1, Fac3);\n\t__m128 Mul08 = _mm_mul_ps(Vec3, Fac5);\n\t__m128 Sub02 = _mm_sub_ps(Mul06, Mul07);\n\t__m128 Add02 = _mm_add_ps(Sub02, Mul08);\n\t__m128 Inv2 = _mm_mul_ps(SignB, Add02);\n\n\t// col3\n\t// - (Vec1[0] * Fac2[0] - Vec1[0] * Fac4[0] + Vec2[0] * Fac5[0]),\n\t// + (Vec1[0] * Fac2[1] - Vec1[1] * Fac4[1] + Vec2[1] * Fac5[1]),\n\t// - (Vec1[0] * Fac2[2] - Vec1[2] * Fac4[2] + Vec2[2] * Fac5[2]),\n\t// + (Vec1[0] * Fac2[3] - Vec1[3] * Fac4[3] + Vec2[3] * Fac5[3]));\n\t__m128 Mul09 = _mm_mul_ps(Vec0, Fac2);\n\t__m128 Mul10 = _mm_mul_ps(Vec1, Fac4);\n\t__m128 Mul11 = _mm_mul_ps(Vec2, Fac5);\n\t__m128 Sub03 = _mm_sub_ps(Mul09, Mul10);\n\t__m128 Add03 = _mm_add_ps(Sub03, Mul11);\n\t__m128 Inv3 = _mm_mul_ps(SignA, Add03);\n\n\t__m128 Row0 = _mm_shuffle_ps(Inv0, Inv1, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row1 = _mm_shuffle_ps(Inv2, Inv3, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row2 = _mm_shuffle_ps(Row0, Row1, _MM_SHUFFLE(2, 0, 2, 0));\n\n\t//\tvalType Determinant = m[0][0] * Inverse[0][0]\n\t//\t\t\t\t\t\t+ m[0][1] * Inverse[1][0]\n\t//\t\t\t\t\t\t+ m[0][2] * Inverse[2][0]\n\t//\t\t\t\t\t\t+ m[0][3] * Inverse[3][0];\n\t__m128 Det0 = glm_vec4_dot(in[0], Row2);\n\t__m128 Rcp0 = _mm_div_ps(_mm_set1_ps(1.0f), Det0);\n\t//__m128 Rcp0 = _mm_rcp_ps(Det0);\n\n\t//\tInverse /= Determinant;\n\tout[0] = _mm_mul_ps(Inv0, Rcp0);\n\tout[1] = _mm_mul_ps(Inv1, Rcp0);\n\tout[2] = _mm_mul_ps(Inv2, Rcp0);\n\tout[3] = _mm_mul_ps(Inv3, Rcp0);\n}\n\nGLM_FUNC_QUALIFIER void glm_mat4_inverse_lowp(glm_vec4 const in[4], glm_vec4 out[4])\n{\n\t__m128 Fac0;\n\t{\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];\n\t\t//\tvalType SubFactor06 = m[1][2] * m[3][3] - m[3][2] * m[1][3];\n\t\t//\tvalType SubFactor13 = m[1][2] * m[2][3] - m[2][2] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac0 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac1;\n\t{\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor01 = m[2][1] * m[3][3] - m[3][1] * m[2][3];\n\t\t//\tvalType SubFactor07 = m[1][1] * m[3][3] - m[3][1] * m[1][3];\n\t\t//\tvalType SubFactor14 = m[1][1] * m[2][3] - m[2][1] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac1 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\n\t__m128 Fac2;\n\t{\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor02 = m[2][1] * m[3][2] - m[3][1] * m[2][2];\n\t\t//\tvalType SubFactor08 = m[1][1] * m[3][2] - m[3][1] * m[1][2];\n\t\t//\tvalType SubFactor15 = m[1][1] * m[2][2] - m[2][1] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac2 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac3;\n\t{\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor03 = m[2][0] * m[3][3] - m[3][0] * m[2][3];\n\t\t//\tvalType SubFactor09 = m[1][0] * m[3][3] - m[3][0] * m[1][3];\n\t\t//\tvalType SubFactor16 = m[1][0] * m[2][3] - m[2][0] * m[1][3];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(3, 3, 3, 3));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(3, 3, 3, 3));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac3 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac4;\n\t{\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor04 = m[2][0] * m[3][2] - m[3][0] * m[2][2];\n\t\t//\tvalType SubFactor10 = m[1][0] * m[3][2] - m[3][0] * m[1][2];\n\t\t//\tvalType SubFactor17 = m[1][0] * m[2][2] - m[2][0] * m[1][2];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(2, 2, 2, 2));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(2, 2, 2, 2));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac4 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 Fac5;\n\t{\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor05 = m[2][0] * m[3][1] - m[3][0] * m[2][1];\n\t\t//\tvalType SubFactor12 = m[1][0] * m[3][1] - m[3][0] * m[1][1];\n\t\t//\tvalType SubFactor18 = m[1][0] * m[2][1] - m[2][0] * m[1][1];\n\n\t\t__m128 Swp0a = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(1, 1, 1, 1));\n\t\t__m128 Swp0b = _mm_shuffle_ps(in[3], in[2], _MM_SHUFFLE(0, 0, 0, 0));\n\n\t\t__m128 Swp00 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(0, 0, 0, 0));\n\t\t__m128 Swp01 = _mm_shuffle_ps(Swp0a, Swp0a, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp02 = _mm_shuffle_ps(Swp0b, Swp0b, _MM_SHUFFLE(2, 0, 0, 0));\n\t\t__m128 Swp03 = _mm_shuffle_ps(in[2], in[1], _MM_SHUFFLE(1, 1, 1, 1));\n\n\t\t__m128 Mul00 = _mm_mul_ps(Swp00, Swp01);\n\t\t__m128 Mul01 = _mm_mul_ps(Swp02, Swp03);\n\t\tFac5 = _mm_sub_ps(Mul00, Mul01);\n\t}\n\n\t__m128 SignA = _mm_set_ps( 1.0f,-1.0f, 1.0f,-1.0f);\n\t__m128 SignB = _mm_set_ps(-1.0f, 1.0f,-1.0f, 1.0f);\n\n\t// m[1][0]\n\t// m[0][0]\n\t// m[0][0]\n\t// m[0][0]\n\t__m128 Temp0 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Vec0 = _mm_shuffle_ps(Temp0, Temp0, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][1]\n\t// m[0][1]\n\t// m[0][1]\n\t// m[0][1]\n\t__m128 Temp1 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(1, 1, 1, 1));\n\t__m128 Vec1 = _mm_shuffle_ps(Temp1, Temp1, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][2]\n\t// m[0][2]\n\t// m[0][2]\n\t// m[0][2]\n\t__m128 Temp2 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(2, 2, 2, 2));\n\t__m128 Vec2 = _mm_shuffle_ps(Temp2, Temp2, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// m[1][3]\n\t// m[0][3]\n\t// m[0][3]\n\t// m[0][3]\n\t__m128 Temp3 = _mm_shuffle_ps(in[1], in[0], _MM_SHUFFLE(3, 3, 3, 3));\n\t__m128 Vec3 = _mm_shuffle_ps(Temp3, Temp3, _MM_SHUFFLE(2, 2, 2, 0));\n\n\t// col0\n\t// + (Vec1[0] * Fac0[0] - Vec2[0] * Fac1[0] + Vec3[0] * Fac2[0]),\n\t// - (Vec1[1] * Fac0[1] - Vec2[1] * Fac1[1] + Vec3[1] * Fac2[1]),\n\t// + (Vec1[2] * Fac0[2] - Vec2[2] * Fac1[2] + Vec3[2] * Fac2[2]),\n\t// - (Vec1[3] * Fac0[3] - Vec2[3] * Fac1[3] + Vec3[3] * Fac2[3]),\n\t__m128 Mul00 = _mm_mul_ps(Vec1, Fac0);\n\t__m128 Mul01 = _mm_mul_ps(Vec2, Fac1);\n\t__m128 Mul02 = _mm_mul_ps(Vec3, Fac2);\n\t__m128 Sub00 = _mm_sub_ps(Mul00, Mul01);\n\t__m128 Add00 = _mm_add_ps(Sub00, Mul02);\n\t__m128 Inv0 = _mm_mul_ps(SignB, Add00);\n\n\t// col1\n\t// - (Vec0[0] * Fac0[0] - Vec2[0] * Fac3[0] + Vec3[0] * Fac4[0]),\n\t// + (Vec0[0] * Fac0[1] - Vec2[1] * Fac3[1] + Vec3[1] * Fac4[1]),\n\t// - (Vec0[0] * Fac0[2] - Vec2[2] * Fac3[2] + Vec3[2] * Fac4[2]),\n\t// + (Vec0[0] * Fac0[3] - Vec2[3] * Fac3[3] + Vec3[3] * Fac4[3]),\n\t__m128 Mul03 = _mm_mul_ps(Vec0, Fac0);\n\t__m128 Mul04 = _mm_mul_ps(Vec2, Fac3);\n\t__m128 Mul05 = _mm_mul_ps(Vec3, Fac4);\n\t__m128 Sub01 = _mm_sub_ps(Mul03, Mul04);\n\t__m128 Add01 = _mm_add_ps(Sub01, Mul05);\n\t__m128 Inv1 = _mm_mul_ps(SignA, Add01);\n\n\t// col2\n\t// + (Vec0[0] * Fac1[0] - Vec1[0] * Fac3[0] + Vec3[0] * Fac5[0]),\n\t// - (Vec0[0] * Fac1[1] - Vec1[1] * Fac3[1] + Vec3[1] * Fac5[1]),\n\t// + (Vec0[0] * Fac1[2] - Vec1[2] * Fac3[2] + Vec3[2] * Fac5[2]),\n\t// - (Vec0[0] * Fac1[3] - Vec1[3] * Fac3[3] + Vec3[3] * Fac5[3]),\n\t__m128 Mul06 = _mm_mul_ps(Vec0, Fac1);\n\t__m128 Mul07 = _mm_mul_ps(Vec1, Fac3);\n\t__m128 Mul08 = _mm_mul_ps(Vec3, Fac5);\n\t__m128 Sub02 = _mm_sub_ps(Mul06, Mul07);\n\t__m128 Add02 = _mm_add_ps(Sub02, Mul08);\n\t__m128 Inv2 = _mm_mul_ps(SignB, Add02);\n\n\t// col3\n\t// - (Vec1[0] * Fac2[0] - Vec1[0] * Fac4[0] + Vec2[0] * Fac5[0]),\n\t// + (Vec1[0] * Fac2[1] - Vec1[1] * Fac4[1] + Vec2[1] * Fac5[1]),\n\t// - (Vec1[0] * Fac2[2] - Vec1[2] * Fac4[2] + Vec2[2] * Fac5[2]),\n\t// + (Vec1[0] * Fac2[3] - Vec1[3] * Fac4[3] + Vec2[3] * Fac5[3]));\n\t__m128 Mul09 = _mm_mul_ps(Vec0, Fac2);\n\t__m128 Mul10 = _mm_mul_ps(Vec1, Fac4);\n\t__m128 Mul11 = _mm_mul_ps(Vec2, Fac5);\n\t__m128 Sub03 = _mm_sub_ps(Mul09, Mul10);\n\t__m128 Add03 = _mm_add_ps(Sub03, Mul11);\n\t__m128 Inv3 = _mm_mul_ps(SignA, Add03);\n\n\t__m128 Row0 = _mm_shuffle_ps(Inv0, Inv1, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row1 = _mm_shuffle_ps(Inv2, Inv3, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Row2 = _mm_shuffle_ps(Row0, Row1, _MM_SHUFFLE(2, 0, 2, 0));\n\n\t//\tvalType Determinant = m[0][0] * Inverse[0][0]\n\t//\t\t\t\t\t\t+ m[0][1] * Inverse[1][0]\n\t//\t\t\t\t\t\t+ m[0][2] * Inverse[2][0]\n\t//\t\t\t\t\t\t+ m[0][3] * Inverse[3][0];\n\t__m128 Det0 = glm_vec4_dot(in[0], Row2);\n\t__m128 Rcp0 = _mm_rcp_ps(Det0);\n\t//__m128 Rcp0 = _mm_div_ps(one, Det0);\n\t//\tInverse /= Determinant;\n\tout[0] = _mm_mul_ps(Inv0, Rcp0);\n\tout[1] = _mm_mul_ps(Inv1, Rcp0);\n\tout[2] = _mm_mul_ps(Inv2, Rcp0);\n\tout[3] = _mm_mul_ps(Inv3, Rcp0);\n}\n/*\nGLM_FUNC_QUALIFIER void glm_mat4_rotate(__m128 const in[4], float Angle, float const v[3], __m128 out[4])\n{\n\tfloat a = glm::radians(Angle);\n\tfloat c = cos(a);\n\tfloat s = sin(a);\n\n\tglm::vec4 AxisA(v[0], v[1], v[2], float(0));\n\t__m128 AxisB = _mm_set_ps(AxisA.w, AxisA.z, AxisA.y, AxisA.x);\n\t__m128 AxisC = detail::sse_nrm_ps(AxisB);\n\n\t__m128 Cos0 = _mm_set_ss(c);\n\t__m128 CosA = _mm_shuffle_ps(Cos0, Cos0, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 Sin0 = _mm_set_ss(s);\n\t__m128 SinA = _mm_shuffle_ps(Sin0, Sin0, _MM_SHUFFLE(0, 0, 0, 0));\n\n\t// vec<3, T, Q> temp = (valType(1) - c) * axis;\n\t__m128 Temp0 = _mm_sub_ps(one, CosA);\n\t__m128 Temp1 = _mm_mul_ps(Temp0, AxisC);\n\n\t//Rotate[0][0] = c + temp[0] * axis[0];\n\t//Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2];\n\t//Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1];\n\t__m128 Axis0 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(0, 0, 0, 0));\n\t__m128 TmpA0 = _mm_mul_ps(Axis0, AxisC);\n\t__m128 CosA0 = _mm_shuffle_ps(Cos0, Cos0, _MM_SHUFFLE(1, 1, 1, 0));\n\t__m128 TmpA1 = _mm_add_ps(CosA0, TmpA0);\n\t__m128 SinA0 = SinA;//_mm_set_ps(0.0f, s, -s, 0.0f);\n\t__m128 TmpA2 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(3, 1, 2, 3));\n\t__m128 TmpA3 = _mm_mul_ps(SinA0, TmpA2);\n\t__m128 TmpA4 = _mm_add_ps(TmpA1, TmpA3);\n\n\t//Rotate[1][0] = 0 + temp[1] * axis[0] - s * axis[2];\n\t//Rotate[1][1] = c + temp[1] * axis[1];\n\t//Rotate[1][2] = 0 + temp[1] * axis[2] + s * axis[0];\n\t__m128 Axis1 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(1, 1, 1, 1));\n\t__m128 TmpB0 = _mm_mul_ps(Axis1, AxisC);\n\t__m128 CosA1 = _mm_shuffle_ps(Cos0, Cos0, _MM_SHUFFLE(1, 1, 0, 1));\n\t__m128 TmpB1 = _mm_add_ps(CosA1, TmpB0);\n\t__m128 SinB0 = SinA;//_mm_set_ps(-s, 0.0f, s, 0.0f);\n\t__m128 TmpB2 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(3, 0, 3, 2));\n\t__m128 TmpB3 = _mm_mul_ps(SinA0, TmpB2);\n\t__m128 TmpB4 = _mm_add_ps(TmpB1, TmpB3);\n\n\t//Rotate[2][0] = 0 + temp[2] * axis[0] + s * axis[1];\n\t//Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0];\n\t//Rotate[2][2] = c + temp[2] * axis[2];\n\t__m128 Axis2 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(2, 2, 2, 2));\n\t__m128 TmpC0 = _mm_mul_ps(Axis2, AxisC);\n\t__m128 CosA2 = _mm_shuffle_ps(Cos0, Cos0, _MM_SHUFFLE(1, 0, 1, 1));\n\t__m128 TmpC1 = _mm_add_ps(CosA2, TmpC0);\n\t__m128 SinC0 = SinA;//_mm_set_ps(s, -s, 0.0f, 0.0f);\n\t__m128 TmpC2 = _mm_shuffle_ps(AxisC, AxisC, _MM_SHUFFLE(3, 3, 0, 1));\n\t__m128 TmpC3 = _mm_mul_ps(SinA0, TmpC2);\n\t__m128 TmpC4 = _mm_add_ps(TmpC1, TmpC3);\n\n\t__m128 Result[4];\n\tResult[0] = TmpA4;\n\tResult[1] = TmpB4;\n\tResult[2] = TmpC4;\n\tResult[3] = _mm_set_ps(1, 0, 0, 0);\n\n\t//mat<4, 4, valType> Result;\n\t//Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];\n\t//Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];\n\t//Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];\n\t//Result[3] = m[3];\n\t//return Result;\n\tsse_mul_ps(in, Result, out);\n}\n*/\nGLM_FUNC_QUALIFIER void glm_mat4_outerProduct(__m128 const& c, __m128 const& r, __m128 out[4])\n{\n\tout[0] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(0, 0, 0, 0)));\n\tout[1] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(1, 1, 1, 1)));\n\tout[2] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(2, 2, 2, 2)));\n\tout[3] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(3, 3, 3, 3)));\n}\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/neon.h",
    "content": "/// @ref simd_neon\n/// @file glm/simd/neon.h\n\n#pragma once\n\n#if GLM_ARCH & GLM_ARCH_NEON_BIT\n#include <arm_neon.h>\n\nnamespace glm {\n\tnamespace neon {\n\t\tstatic float32x4_t dupq_lane(float32x4_t vsrc, int lane) {\n\t\t\tswitch(lane) {\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\t\tcase 0: return vdupq_laneq_f32(vsrc, 0);\n\t\t\t\tcase 1: return vdupq_laneq_f32(vsrc, 1);\n\t\t\t\tcase 2: return vdupq_laneq_f32(vsrc, 2);\n\t\t\t\tcase 3: return vdupq_laneq_f32(vsrc, 3);\n#else\n\t\t\t\tcase 0: return vdupq_n_f32(vgetq_lane_f32(vsrc, 0));\n\t\t\t\tcase 1: return vdupq_n_f32(vgetq_lane_f32(vsrc, 1));\n\t\t\t\tcase 2: return vdupq_n_f32(vgetq_lane_f32(vsrc, 2));\n\t\t\t\tcase 3: return vdupq_n_f32(vgetq_lane_f32(vsrc, 3));\n#endif\n\t\t\t}\n\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\treturn vdupq_n_f32(0.0f);\n\t\t}\n\n\t\tstatic float32x2_t dup_lane(float32x4_t vsrc, int lane) {\n\t\t\tswitch(lane) {\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\t\tcase 0: return vdup_laneq_f32(vsrc, 0);\n\t\t\t\tcase 1: return vdup_laneq_f32(vsrc, 1);\n\t\t\t\tcase 2: return vdup_laneq_f32(vsrc, 2);\n\t\t\t\tcase 3: return vdup_laneq_f32(vsrc, 3);\n#else\n\t\t\t\tcase 0: return vdup_n_f32(vgetq_lane_f32(vsrc, 0));\n\t\t\t\tcase 1: return vdup_n_f32(vgetq_lane_f32(vsrc, 1));\n\t\t\t\tcase 2: return vdup_n_f32(vgetq_lane_f32(vsrc, 2));\n\t\t\t\tcase 3: return vdup_n_f32(vgetq_lane_f32(vsrc, 3));\n#endif\n\t\t\t}\n\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\treturn vdup_n_f32(0.0f);\n\t\t}\n\n\t\tstatic float32x4_t copy_lane(float32x4_t vdst, int dlane, float32x4_t vsrc, int slane) {\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tswitch(dlane) {\n\t\t\t\tcase 0:\n\t\t\t\t\tswitch(slane) {\n\t\t\t\t\t\tcase 0: return vcopyq_laneq_f32(vdst, 0, vsrc, 0);\n\t\t\t\t\t\tcase 1: return vcopyq_laneq_f32(vdst, 0, vsrc, 1);\n\t\t\t\t\t\tcase 2: return vcopyq_laneq_f32(vdst, 0, vsrc, 2);\n\t\t\t\t\t\tcase 3: return vcopyq_laneq_f32(vdst, 0, vsrc, 3);\n\t\t\t\t\t}\n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t\tcase 1:\n\t\t\t\t\tswitch(slane) {\n\t\t\t\t\t\tcase 0: return vcopyq_laneq_f32(vdst, 1, vsrc, 0);\n\t\t\t\t\t\tcase 1: return vcopyq_laneq_f32(vdst, 1, vsrc, 1);\n\t\t\t\t\t\tcase 2: return vcopyq_laneq_f32(vdst, 1, vsrc, 2);\n\t\t\t\t\t\tcase 3: return vcopyq_laneq_f32(vdst, 1, vsrc, 3);\n\t\t\t\t\t}\n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t\tcase 2:\n\t\t\t\t\tswitch(slane) {\n\t\t\t\t\t\tcase 0: return vcopyq_laneq_f32(vdst, 2, vsrc, 0);\n\t\t\t\t\t\tcase 1: return vcopyq_laneq_f32(vdst, 2, vsrc, 1);\n\t\t\t\t\t\tcase 2: return vcopyq_laneq_f32(vdst, 2, vsrc, 2);\n\t\t\t\t\t\tcase 3: return vcopyq_laneq_f32(vdst, 2, vsrc, 3);\n\t\t\t\t\t}\n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t\tcase 3:\n\t\t\t\t\tswitch(slane) {\n\t\t\t\t\t\tcase 0: return vcopyq_laneq_f32(vdst, 3, vsrc, 0);\n\t\t\t\t\t\tcase 1: return vcopyq_laneq_f32(vdst, 3, vsrc, 1);\n\t\t\t\t\t\tcase 2: return vcopyq_laneq_f32(vdst, 3, vsrc, 2);\n\t\t\t\t\t\tcase 3: return vcopyq_laneq_f32(vdst, 3, vsrc, 3);\n\t\t\t\t\t}\n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t}\n#else\n\n\t\t\tfloat l;\n\t\t\tswitch(slane) {\n\t\t\t\tcase 0: l = vgetq_lane_f32(vsrc, 0); break;\n\t\t\t\tcase 1: l = vgetq_lane_f32(vsrc, 1); break;\n\t\t\t\tcase 2: l = vgetq_lane_f32(vsrc, 2); break;\n\t\t\t\tcase 3: l = vgetq_lane_f32(vsrc, 3); break;\n\t\t\t\tdefault: \n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t}\n\t\t\tswitch(dlane) {\n\t\t\t\tcase 0: return vsetq_lane_f32(l, vdst, 0);\n\t\t\t\tcase 1: return vsetq_lane_f32(l, vdst, 1);\n\t\t\t\tcase 2: return vsetq_lane_f32(l, vdst, 2);\n\t\t\t\tcase 3: return vsetq_lane_f32(l, vdst, 3);\n\t\t\t}\n#endif\n\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\treturn vdupq_n_f32(0.0f);\n\t\t}\n\n\t\tstatic float32x4_t mul_lane(float32x4_t v, float32x4_t vlane, int lane) {\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n\t\t\tswitch(lane) { \n\t\t\t\tcase 0: return vmulq_laneq_f32(v, vlane, 0); break;\n\t\t\t\tcase 1: return vmulq_laneq_f32(v, vlane, 1); break;\n\t\t\t\tcase 2: return vmulq_laneq_f32(v, vlane, 2); break;\n\t\t\t\tcase 3: return vmulq_laneq_f32(v, vlane, 3); break;\n\t\t\t\tdefault: \n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t}\n\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\treturn vdupq_n_f32(0.0f);\n#else\n\t\t\treturn vmulq_f32(v, dupq_lane(vlane, lane));\n#endif\n\t\t}\n\n\t\tstatic float32x4_t madd_lane(float32x4_t acc, float32x4_t v, float32x4_t vlane, int lane) {\n#if GLM_ARCH & GLM_ARCH_ARMV8_BIT\n#ifdef GLM_CONFIG_FORCE_FMA\n#\tdefine FMADD_LANE(acc, x, y, L) do { asm volatile (\"fmla %0.4s, %1.4s, %2.4s\" : \"+w\"(acc) : \"w\"(x), \"w\"(dup_lane(y, L))); } while(0)\n#else\n#\tdefine FMADD_LANE(acc, x, y, L) do { acc = vmlaq_laneq_f32(acc, x, y, L); } while(0)\n#endif\n\n\t\t\tswitch(lane) { \n\t\t\t\tcase 0: \n\t\t\t\t\tFMADD_LANE(acc, v, vlane, 0);\n\t\t\t\t\treturn acc;\n\t\t\t\tcase 1:\n\t\t\t\t\tFMADD_LANE(acc, v, vlane, 1);\n\t\t\t\t\treturn acc;\n\t\t\t\tcase 2:\n\t\t\t\t\tFMADD_LANE(acc, v, vlane, 2);\n\t\t\t\t\treturn acc;\n\t\t\t\tcase 3:\n\t\t\t\t\tFMADD_LANE(acc, v, vlane, 3);\n\t\t\t\t\treturn acc;\n\t\t\t\tdefault: \n\t\t\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\t}\n\t\t\tassert(!\"Unreachable code executed!\");\n\t\t\treturn vdupq_n_f32(0.0f);\n#\tundef FMADD_LANE\n#else\n\t\t\treturn vaddq_f32(acc, vmulq_f32(v, dupq_lane(vlane, lane)));\n#endif\n\t\t}\n\t} //namespace neon\n} // namespace glm\n#endif // GLM_ARCH & GLM_ARCH_NEON_BIT\n"
  },
  {
    "path": "libraries/glm/simd/packing.h",
    "content": "/// @ref simd\n/// @file glm/simd/packing.h\n\n#pragma once\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/simd/platform.h",
    "content": "#pragma once\n\n///////////////////////////////////////////////////////////////////////////////////\n// Platform\n\n#define GLM_PLATFORM_UNKNOWN\t\t0x00000000\n#define GLM_PLATFORM_WINDOWS\t\t0x00010000\n#define GLM_PLATFORM_LINUX\t\t\t0x00020000\n#define GLM_PLATFORM_APPLE\t\t\t0x00040000\n//#define GLM_PLATFORM_IOS\t\t\t0x00080000\n#define GLM_PLATFORM_ANDROID\t\t0x00100000\n#define GLM_PLATFORM_CHROME_NACL\t0x00200000\n#define GLM_PLATFORM_UNIX\t\t\t0x00400000\n#define GLM_PLATFORM_QNXNTO\t\t\t0x00800000\n#define GLM_PLATFORM_WINCE\t\t\t0x01000000\n#define GLM_PLATFORM_CYGWIN\t\t\t0x02000000\n\n#ifdef GLM_FORCE_PLATFORM_UNKNOWN\n#\tdefine GLM_PLATFORM GLM_PLATFORM_UNKNOWN\n#elif defined(__CYGWIN__)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_CYGWIN\n#elif defined(__QNXNTO__)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_QNXNTO\n#elif defined(__APPLE__)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_APPLE\n#elif defined(WINCE)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_WINCE\n#elif defined(_WIN32)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_WINDOWS\n#elif defined(__native_client__)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_CHROME_NACL\n#elif defined(__ANDROID__)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_ANDROID\n#elif defined(__linux)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_LINUX\n#elif defined(__unix)\n#\tdefine GLM_PLATFORM GLM_PLATFORM_UNIX\n#else\n#\tdefine GLM_PLATFORM GLM_PLATFORM_UNKNOWN\n#endif//\n\n///////////////////////////////////////////////////////////////////////////////////\n// Compiler\n\n#define GLM_COMPILER_UNKNOWN\t\t0x00000000\n\n// Intel\n#define GLM_COMPILER_INTEL\t\t\t0x00100000\n#define GLM_COMPILER_INTEL14\t\t0x00100040\n#define GLM_COMPILER_INTEL15\t\t0x00100050\n#define GLM_COMPILER_INTEL16\t\t0x00100060\n#define GLM_COMPILER_INTEL17\t\t0x00100070\n\n// Visual C++ defines\n#define GLM_COMPILER_VC\t\t\t\t0x01000000\n#define GLM_COMPILER_VC12\t\t\t0x01000001\n#define GLM_COMPILER_VC14\t\t\t0x01000002\n#define GLM_COMPILER_VC15\t\t\t0x01000003\n#define GLM_COMPILER_VC15_3\t\t\t0x01000004\n#define GLM_COMPILER_VC15_5\t\t\t0x01000005\n#define GLM_COMPILER_VC15_6\t\t\t0x01000006\n#define GLM_COMPILER_VC15_7\t\t\t0x01000007\n#define GLM_COMPILER_VC15_8\t\t\t0x01000008\n#define GLM_COMPILER_VC15_9\t\t\t0x01000009\n#define GLM_COMPILER_VC16\t\t\t0x0100000A\n\n// GCC defines\n#define GLM_COMPILER_GCC\t\t\t0x02000000\n#define GLM_COMPILER_GCC46\t\t\t0x020000D0\n#define GLM_COMPILER_GCC47\t\t\t0x020000E0\n#define GLM_COMPILER_GCC48\t\t\t0x020000F0\n#define GLM_COMPILER_GCC49\t\t\t0x02000100\n#define GLM_COMPILER_GCC5\t\t\t0x02000200\n#define GLM_COMPILER_GCC6\t\t\t0x02000300\n#define GLM_COMPILER_GCC7\t\t\t0x02000400\n#define GLM_COMPILER_GCC8\t\t\t0x02000500\n\n// CUDA\n#define GLM_COMPILER_CUDA\t\t\t0x10000000\n#define GLM_COMPILER_CUDA75\t\t\t0x10000001\n#define GLM_COMPILER_CUDA80\t\t\t0x10000002\n#define GLM_COMPILER_CUDA90\t\t\t0x10000004\n\n// SYCL\n#define GLM_COMPILER_SYCL\t\t\t0x00300000\n\n// Clang\n#define GLM_COMPILER_CLANG\t\t\t0x20000000\n#define GLM_COMPILER_CLANG34\t\t0x20000050\n#define GLM_COMPILER_CLANG35\t\t0x20000060\n#define GLM_COMPILER_CLANG36\t\t0x20000070\n#define GLM_COMPILER_CLANG37\t\t0x20000080\n#define GLM_COMPILER_CLANG38\t\t0x20000090\n#define GLM_COMPILER_CLANG39\t\t0x200000A0\n#define GLM_COMPILER_CLANG40\t\t0x200000B0\n#define GLM_COMPILER_CLANG41\t\t0x200000C0\n#define GLM_COMPILER_CLANG42\t\t0x200000D0\n\n// Build model\n#define GLM_MODEL_32\t\t\t\t0x00000010\n#define GLM_MODEL_64\t\t\t\t0x00000020\n\n// Force generic C++ compiler\n#ifdef GLM_FORCE_COMPILER_UNKNOWN\n#\tdefine GLM_COMPILER GLM_COMPILER_UNKNOWN\n\n#elif defined(__INTEL_COMPILER)\n#\tif __INTEL_COMPILER >= 1700\n#\t\tdefine GLM_COMPILER GLM_COMPILER_INTEL17\n#\telif __INTEL_COMPILER >= 1600\n#\t\tdefine GLM_COMPILER GLM_COMPILER_INTEL16\n#\telif __INTEL_COMPILER >= 1500\n#\t\tdefine GLM_COMPILER GLM_COMPILER_INTEL15\n#\telif __INTEL_COMPILER >= 1400\n#\t\tdefine GLM_COMPILER GLM_COMPILER_INTEL14\n#\telif __INTEL_COMPILER < 1400\n#\t\terror \"GLM requires ICC 2013 SP1 or newer\"\n#\tendif\n\n// CUDA\n#elif defined(__CUDACC__)\n#\tif !defined(CUDA_VERSION) && !defined(GLM_FORCE_CUDA)\n#\t\tinclude <cuda.h>  // make sure version is defined since nvcc does not define it itself!\n#\tendif\n#\tif CUDA_VERSION >= 8000\n#\t\tdefine GLM_COMPILER GLM_COMPILER_CUDA80\n#\telif CUDA_VERSION >= 7500\n#\t\tdefine GLM_COMPILER GLM_COMPILER_CUDA75\n#\telif CUDA_VERSION >= 7000\n#\t\tdefine GLM_COMPILER GLM_COMPILER_CUDA70\n#\telif CUDA_VERSION < 7000\n#\t\terror \"GLM requires CUDA 7.0 or higher\"\n#\tendif\n\n// SYCL\n#elif defined(__SYCL_DEVICE_ONLY__)\n#\tdefine GLM_COMPILER GLM_COMPILER_SYCL\n\n// Clang\n#elif defined(__clang__)\n#\tif defined(__apple_build_version__)\n#\t\tif (__clang_major__ < 6)\n#\t\t\terror \"GLM requires Clang 3.4 / Apple Clang 6.0 or higher\"\n#\t\telif __clang_major__ == 6 && __clang_minor__ == 0\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG35\n#\t\telif __clang_major__ == 6 && __clang_minor__ >= 1\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG36\n#\t\telif __clang_major__ >= 7\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG37\n#\t\tendif\n#\telse\n#\t\tif ((__clang_major__ == 3) && (__clang_minor__ < 4)) || (__clang_major__ < 3)\n#\t\t\terror \"GLM requires Clang 3.4 or higher\"\n#\t\telif __clang_major__ == 3 && __clang_minor__ == 4\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG34\n#\t\telif __clang_major__ == 3 && __clang_minor__ == 5\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG35\n#\t\telif __clang_major__ == 3 && __clang_minor__ == 6\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG36\n#\t\telif __clang_major__ == 3 && __clang_minor__ == 7\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG37\n#\t\telif __clang_major__ == 3 && __clang_minor__ == 8\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG38\n#\t\telif __clang_major__ == 3 && __clang_minor__ >= 9\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG39\n#\t\telif __clang_major__ == 4 && __clang_minor__ == 0\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG40\n#\t\telif __clang_major__ == 4 && __clang_minor__ == 1\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG41\n#\t\telif __clang_major__ == 4 && __clang_minor__ >= 2\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG42\n#\t\telif __clang_major__ >= 4\n#\t\t\tdefine GLM_COMPILER GLM_COMPILER_CLANG42\n#\t\tendif\n#\tendif\n\n// Visual C++\n#elif defined(_MSC_VER)\n#\tif _MSC_VER >= 1920\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC16\n#\telif _MSC_VER >= 1916\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_9\n#\telif _MSC_VER >= 1915\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_8\n#\telif _MSC_VER >= 1914\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_7\n#\telif _MSC_VER >= 1913\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_6\n#\telif _MSC_VER >= 1912\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_5\n#\telif _MSC_VER >= 1911\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15_3\n#\telif _MSC_VER >= 1910\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC15\n#\telif _MSC_VER >= 1900\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC14\n#\telif _MSC_VER >= 1800\n#\t\tdefine GLM_COMPILER GLM_COMPILER_VC12\n#\telif _MSC_VER < 1800\n#\t\terror \"GLM requires Visual C++ 12 - 2013 or higher\"\n#\tendif//_MSC_VER\n\n// G++\n#elif defined(__GNUC__) || defined(__MINGW32__)\n#\tif __GNUC__ >= 8\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC8\n#\telif __GNUC__ >= 7\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC7\n#\telif __GNUC__ >= 6\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC6\n#\telif __GNUC__ >= 5\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC5\n#\telif __GNUC__ == 4 && __GNUC_MINOR__ >= 9\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC49\n#\telif __GNUC__ == 4 && __GNUC_MINOR__ >= 8\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC48\n#\telif __GNUC__ == 4 && __GNUC_MINOR__ >= 7\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC47\n#\telif __GNUC__ == 4 && __GNUC_MINOR__ >= 6\n#\t\tdefine GLM_COMPILER GLM_COMPILER_GCC46\n#\telif ((__GNUC__ == 4) && (__GNUC_MINOR__ < 6)) || (__GNUC__ < 4)\n#\t\terror \"GLM requires GCC 4.6 or higher\"\n#\tendif\n\n#else\n#\tdefine GLM_COMPILER GLM_COMPILER_UNKNOWN\n#endif\n\n#ifndef GLM_COMPILER\n#\terror \"GLM_COMPILER undefined, your compiler may not be supported by GLM. Add #define GLM_COMPILER 0 to ignore this message.\"\n#endif//GLM_COMPILER\n\n///////////////////////////////////////////////////////////////////////////////////\n// Instruction sets\n\n// User defines: GLM_FORCE_PURE GLM_FORCE_INTRINSICS GLM_FORCE_SSE2 GLM_FORCE_SSE3 GLM_FORCE_AVX GLM_FORCE_AVX2 GLM_FORCE_AVX2\n\n#define GLM_ARCH_MIPS_BIT\t  (0x10000000)\n#define GLM_ARCH_PPC_BIT\t  (0x20000000)\n#define GLM_ARCH_ARM_BIT\t  (0x40000000)\n#define GLM_ARCH_ARMV8_BIT  (0x01000000)\n#define GLM_ARCH_X86_BIT\t  (0x80000000)\n\n#define GLM_ARCH_SIMD_BIT\t(0x00001000)\n\n#define GLM_ARCH_NEON_BIT\t(0x00000001)\n#define GLM_ARCH_SSE_BIT\t(0x00000002)\n#define GLM_ARCH_SSE2_BIT\t(0x00000004)\n#define GLM_ARCH_SSE3_BIT\t(0x00000008)\n#define GLM_ARCH_SSSE3_BIT\t(0x00000010)\n#define GLM_ARCH_SSE41_BIT\t(0x00000020)\n#define GLM_ARCH_SSE42_BIT\t(0x00000040)\n#define GLM_ARCH_AVX_BIT\t(0x00000080)\n#define GLM_ARCH_AVX2_BIT\t(0x00000100)\n\n#define GLM_ARCH_UNKNOWN\t(0)\n#define GLM_ARCH_X86\t\t(GLM_ARCH_X86_BIT)\n#define GLM_ARCH_SSE\t\t(GLM_ARCH_SSE_BIT | GLM_ARCH_SIMD_BIT | GLM_ARCH_X86)\n#define GLM_ARCH_SSE2\t\t(GLM_ARCH_SSE2_BIT | GLM_ARCH_SSE)\n#define GLM_ARCH_SSE3\t\t(GLM_ARCH_SSE3_BIT | GLM_ARCH_SSE2)\n#define GLM_ARCH_SSSE3\t\t(GLM_ARCH_SSSE3_BIT | GLM_ARCH_SSE3)\n#define GLM_ARCH_SSE41\t\t(GLM_ARCH_SSE41_BIT | GLM_ARCH_SSSE3)\n#define GLM_ARCH_SSE42\t\t(GLM_ARCH_SSE42_BIT | GLM_ARCH_SSE41)\n#define GLM_ARCH_AVX\t\t(GLM_ARCH_AVX_BIT | GLM_ARCH_SSE42)\n#define GLM_ARCH_AVX2\t\t(GLM_ARCH_AVX2_BIT | GLM_ARCH_AVX)\n#define GLM_ARCH_ARM\t\t(GLM_ARCH_ARM_BIT)\n#define GLM_ARCH_ARMV8\t\t(GLM_ARCH_NEON_BIT | GLM_ARCH_SIMD_BIT | GLM_ARCH_ARM | GLM_ARCH_ARMV8_BIT)\n#define GLM_ARCH_NEON\t\t(GLM_ARCH_NEON_BIT | GLM_ARCH_SIMD_BIT | GLM_ARCH_ARM)\n#define GLM_ARCH_MIPS\t\t(GLM_ARCH_MIPS_BIT)\n#define GLM_ARCH_PPC\t\t(GLM_ARCH_PPC_BIT)\n\n#if defined(GLM_FORCE_ARCH_UNKNOWN) || defined(GLM_FORCE_PURE)\n#\tdefine GLM_ARCH GLM_ARCH_UNKNOWN\n#elif defined(GLM_FORCE_NEON)\n#\tif __ARM_ARCH >= 8\n#\t\tdefine GLM_ARCH (GLM_ARCH_ARMV8)\n#\telse\n#\t\tdefine GLM_ARCH (GLM_ARCH_NEON)\n#\tendif\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_AVX2)\n#\tdefine GLM_ARCH (GLM_ARCH_AVX2)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_AVX)\n#\tdefine GLM_ARCH (GLM_ARCH_AVX)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSE42)\n#\tdefine GLM_ARCH (GLM_ARCH_SSE42)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSE41)\n#\tdefine GLM_ARCH (GLM_ARCH_SSE41)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSSE3)\n#\tdefine GLM_ARCH (GLM_ARCH_SSSE3)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSE3)\n#\tdefine GLM_ARCH (GLM_ARCH_SSE3)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSE2)\n#\tdefine GLM_ARCH (GLM_ARCH_SSE2)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_SSE)\n#\tdefine GLM_ARCH (GLM_ARCH_SSE)\n#\tdefine GLM_FORCE_INTRINSICS\n#elif defined(GLM_FORCE_INTRINSICS) && !defined(GLM_FORCE_XYZW_ONLY)\n#\tif defined(__AVX2__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_AVX2)\n#\telif defined(__AVX__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_AVX)\n#\telif defined(__SSE4_2__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_SSE42)\n#\telif defined(__SSE4_1__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_SSE41)\n#\telif defined(__SSSE3__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_SSSE3)\n#\telif defined(__SSE3__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_SSE3)\n#\telif defined(__SSE2__) || defined(__x86_64__) || defined(_M_X64) || defined(_M_IX86_FP)\n#\t\tdefine GLM_ARCH (GLM_ARCH_SSE2)\n#\telif defined(__i386__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_X86)\n#\telif defined(__ARM_ARCH) && (__ARM_ARCH >= 8)\n#\t\tdefine GLM_ARCH (GLM_ARCH_ARMV8)\n#\telif defined(__ARM_NEON)\n#\t\tdefine GLM_ARCH (GLM_ARCH_ARM | GLM_ARCH_NEON)\n#\telif defined(__arm__ ) || defined(_M_ARM)\n#\t\tdefine GLM_ARCH (GLM_ARCH_ARM)\n#\telif defined(__mips__ )\n#\t\tdefine GLM_ARCH (GLM_ARCH_MIPS)\n#\telif defined(__powerpc__ ) || defined(_M_PPC)\n#\t\tdefine GLM_ARCH (GLM_ARCH_PPC)\n#\telse\n#\t\tdefine GLM_ARCH (GLM_ARCH_UNKNOWN)\n#\tendif\n#else\n#\tif defined(__x86_64__) || defined(_M_X64) || defined(_M_IX86) || defined(__i386__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_X86)\n#\telif defined(__arm__) || defined(_M_ARM)\n#\t\tdefine GLM_ARCH (GLM_ARCH_ARM)\n#\telif defined(__powerpc__) || defined(_M_PPC)\n#\t\tdefine GLM_ARCH (GLM_ARCH_PPC)\n#\telif defined(__mips__)\n#\t\tdefine GLM_ARCH (GLM_ARCH_MIPS)\n#\telse\n#\t\tdefine GLM_ARCH (GLM_ARCH_UNKNOWN)\n#\tendif\n#endif\n\n#if GLM_ARCH & GLM_ARCH_AVX2_BIT\n#\tinclude <immintrin.h>\n#elif GLM_ARCH & GLM_ARCH_AVX_BIT\n#\tinclude <immintrin.h>\n#elif GLM_ARCH & GLM_ARCH_SSE42_BIT\n#\tif GLM_COMPILER & GLM_COMPILER_CLANG\n#\t\tinclude <popcntintrin.h>\n#\tendif\n#\tinclude <nmmintrin.h>\n#elif GLM_ARCH & GLM_ARCH_SSE41_BIT\n#\tinclude <smmintrin.h>\n#elif GLM_ARCH & GLM_ARCH_SSSE3_BIT\n#\tinclude <tmmintrin.h>\n#elif GLM_ARCH & GLM_ARCH_SSE3_BIT\n#\tinclude <pmmintrin.h>\n#elif GLM_ARCH & GLM_ARCH_SSE2_BIT\n#\tinclude <emmintrin.h>\n#elif GLM_ARCH & GLM_ARCH_NEON_BIT\n#\tinclude \"neon.h\"\n#endif//GLM_ARCH\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\ttypedef __m128\t\t\tglm_f32vec4;\n\ttypedef __m128i\t\t\tglm_i32vec4;\n\ttypedef __m128i\t\t\tglm_u32vec4;\n\ttypedef __m128d\t\t\tglm_f64vec2;\n\ttypedef __m128i\t\t\tglm_i64vec2;\n\ttypedef __m128i\t\t\tglm_u64vec2;\n\n\ttypedef glm_f32vec4\t\tglm_vec4;\n\ttypedef glm_i32vec4\t\tglm_ivec4;\n\ttypedef glm_u32vec4\t\tglm_uvec4;\n\ttypedef glm_f64vec2\t\tglm_dvec2;\n#endif\n\n#if GLM_ARCH & GLM_ARCH_AVX_BIT\n\ttypedef __m256d\t\t\tglm_f64vec4;\n\ttypedef glm_f64vec4\t\tglm_dvec4;\n#endif\n\n#if GLM_ARCH & GLM_ARCH_AVX2_BIT\n\ttypedef __m256i\t\t\tglm_i64vec4;\n\ttypedef __m256i\t\t\tglm_u64vec4;\n#endif\n\n#if GLM_ARCH & GLM_ARCH_NEON_BIT\n\ttypedef float32x4_t\t\t\tglm_f32vec4;\n\ttypedef int32x4_t\t\t\tglm_i32vec4;\n\ttypedef uint32x4_t\t\t\tglm_u32vec4;\n#endif\n"
  },
  {
    "path": "libraries/glm/simd/trigonometric.h",
    "content": "/// @ref simd\n/// @file glm/simd/trigonometric.h\n\n#pragma once\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n"
  },
  {
    "path": "libraries/glm/simd/vector_relational.h",
    "content": "/// @ref simd\n/// @file glm/simd/vector_relational.h\n\n#pragma once\n\n#if GLM_ARCH & GLM_ARCH_SSE2_BIT\n\n#endif//GLM_ARCH & GLM_ARCH_SSE2_BIT\n"
  },
  {
    "path": "libraries/glm/trigonometric.hpp",
    "content": "/// @ref core\n/// @file glm/trigonometric.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n///\n/// @defgroup core_func_trigonometric Angle and Trigonometry Functions\n/// @ingroup core\n///\n/// Function parameters specified as angle are assumed to be in units of radians.\n/// In no case will any of these functions result in a divide by zero error. If\n/// the divisor of a ratio is 0, then results will be undefined.\n///\n/// These all operate component-wise. The description is per component.\n///\n/// Include <glm/trigonometric.hpp> to use these core features.\n///\n/// @see ext_vector_trigonometric\n\n#pragma once\n\n#include \"detail/setup.hpp\"\n#include \"detail/qualifier.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_trigonometric\n\t/// @{\n\n\t/// Converts degrees to radians and returns the result.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/radians.xml\">GLSL radians man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> radians(vec<L, T, Q> const& degrees);\n\n\t/// Converts radians to degrees and returns the result.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/degrees.xml\">GLSL degrees man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> degrees(vec<L, T, Q> const& radians);\n\n\t/// The standard trigonometric sine function.\n\t/// The values returned by this function will range from [-1, 1].\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/sin.xml\">GLSL sin man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> sin(vec<L, T, Q> const& angle);\n\n\t/// The standard trigonometric cosine function.\n\t/// The values returned by this function will range from [-1, 1].\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/cos.xml\">GLSL cos man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> cos(vec<L, T, Q> const& angle);\n\n\t/// The standard trigonometric tangent function.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/tan.xml\">GLSL tan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> tan(vec<L, T, Q> const& angle);\n\n\t/// Arc sine. Returns an angle whose sine is x.\n\t/// The range of values returned by this function is [-PI/2, PI/2].\n\t/// Results are undefined if |x| > 1.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/asin.xml\">GLSL asin man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> asin(vec<L, T, Q> const& x);\n\n\t/// Arc cosine. Returns an angle whose sine is x.\n\t/// The range of values returned by this function is [0, PI].\n\t/// Results are undefined if |x| > 1.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/acos.xml\">GLSL acos man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> acos(vec<L, T, Q> const& x);\n\n\t/// Arc tangent. Returns an angle whose tangent is y/x.\n\t/// The signs of x and y are used to determine what\n\t/// quadrant the angle is in. The range of values returned\n\t/// by this function is [-PI, PI]. Results are undefined\n\t/// if x and y are both 0.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml\">GLSL atan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> atan(vec<L, T, Q> const& y, vec<L, T, Q> const& x);\n\n\t/// Arc tangent. Returns an angle whose tangent is y_over_x.\n\t/// The range of values returned by this function is [-PI/2, PI/2].\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml\">GLSL atan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> atan(vec<L, T, Q> const& y_over_x);\n\n\t/// Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/sinh.xml\">GLSL sinh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> sinh(vec<L, T, Q> const& angle);\n\n\t/// Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/cosh.xml\">GLSL cosh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> cosh(vec<L, T, Q> const& angle);\n\n\t/// Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/tanh.xml\">GLSL tanh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> tanh(vec<L, T, Q> const& angle);\n\n\t/// Arc hyperbolic sine; returns the inverse of sinh.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/asinh.xml\">GLSL asinh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> asinh(vec<L, T, Q> const& x);\n\n\t/// Arc hyperbolic cosine; returns the non-negative inverse\n\t/// of cosh. Results are undefined if x < 1.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/acosh.xml\">GLSL acosh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> acosh(vec<L, T, Q> const& x);\n\n\t/// Arc hyperbolic tangent; returns the inverse of tanh.\n\t/// Results are undefined if abs(x) >= 1.\n\t///\n\t/// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector\n\t/// @tparam T Floating-point scalar types\n\t/// @tparam Q Value from qualifier enum\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/atanh.xml\">GLSL atanh man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL vec<L, T, Q> atanh(vec<L, T, Q> const& x);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_trigonometric.inl\"\n"
  },
  {
    "path": "libraries/glm/vec2.hpp",
    "content": "/// @ref core\n/// @file glm/vec2.hpp\n\n#pragma once\n#include \"./ext/vector_bool2.hpp\"\n#include \"./ext/vector_bool2_precision.hpp\"\n#include \"./ext/vector_float2.hpp\"\n#include \"./ext/vector_float2_precision.hpp\"\n#include \"./ext/vector_double2.hpp\"\n#include \"./ext/vector_double2_precision.hpp\"\n#include \"./ext/vector_int2.hpp\"\n#include \"./ext/vector_int2_precision.hpp\"\n#include \"./ext/vector_uint2.hpp\"\n#include \"./ext/vector_uint2_precision.hpp\"\n"
  },
  {
    "path": "libraries/glm/vec3.hpp",
    "content": "/// @ref core\n/// @file glm/vec3.hpp\n\n#pragma once\n#include \"./ext/vector_bool3.hpp\"\n#include \"./ext/vector_bool3_precision.hpp\"\n#include \"./ext/vector_float3.hpp\"\n#include \"./ext/vector_float3_precision.hpp\"\n#include \"./ext/vector_double3.hpp\"\n#include \"./ext/vector_double3_precision.hpp\"\n#include \"./ext/vector_int3.hpp\"\n#include \"./ext/vector_int3_precision.hpp\"\n#include \"./ext/vector_uint3.hpp\"\n#include \"./ext/vector_uint3_precision.hpp\"\n"
  },
  {
    "path": "libraries/glm/vec4.hpp",
    "content": "/// @ref core\n/// @file glm/vec4.hpp\n\n#pragma once\n#include \"./ext/vector_bool4.hpp\"\n#include \"./ext/vector_bool4_precision.hpp\"\n#include \"./ext/vector_float4.hpp\"\n#include \"./ext/vector_float4_precision.hpp\"\n#include \"./ext/vector_double4.hpp\"\n#include \"./ext/vector_double4_precision.hpp\"\n#include \"./ext/vector_int4.hpp\"\n#include \"./ext/vector_int4_precision.hpp\"\n#include \"./ext/vector_uint4.hpp\"\n#include \"./ext/vector_uint4_precision.hpp\"\n\n"
  },
  {
    "path": "libraries/glm/vector_relational.hpp",
    "content": "/// @ref core\n/// @file glm/vector_relational.hpp\n///\n/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n///\n/// @defgroup core_func_vector_relational Vector Relational Functions\n/// @ingroup core\n///\n/// Relational and equality operators (<, <=, >, >=, ==, !=) are defined to\n/// operate on scalars and produce scalar Boolean results. For vector results,\n/// use the following built-in functions.\n///\n/// In all cases, the sizes of all the input and return vectors for any particular\n/// call must match.\n///\n/// Include <glm/vector_relational.hpp> to use these core features.\n///\n/// @see ext_vector_relational\n\n#pragma once\n\n#include \"detail/qualifier.hpp\"\n#include \"detail/setup.hpp\"\n\nnamespace glm\n{\n\t/// @addtogroup core_func_vector_relational\n\t/// @{\n\n\t/// Returns the component-wise comparison result of x < y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point or integer scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/lessThan.xml\">GLSL lessThan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> lessThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x <= y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point or integer scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/lessThanEqual.xml\">GLSL lessThanEqual man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> lessThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x > y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point or integer scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/greaterThan.xml\">GLSL greaterThan man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> greaterThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x >= y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point or integer scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/greaterThanEqual.xml\">GLSL greaterThanEqual man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> greaterThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x == y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point, integer or bool scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/equal.xml\">GLSL equal man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns the component-wise comparison of result x != y.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t/// @tparam T A floating-point, integer or bool scalar type.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/notEqual.xml\">GLSL notEqual man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, typename T, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);\n\n\t/// Returns true if any component of x is true.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/any.xml\">GLSL any man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool any(vec<L, bool, Q> const& v);\n\n\t/// Returns true if all components of x are true.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/all.xml\">GLSL all man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR bool all(vec<L, bool, Q> const& v);\n\n\t/// Returns the component-wise logical complement of x.\n\t/// /!\\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.\n\t///\n\t/// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.\n\t///\n\t/// @see <a href=\"http://www.opengl.org/sdk/docs/manglsl/xhtml/not.xml\">GLSL not man page</a>\n\t/// @see <a href=\"http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf\">GLSL 4.20.8 specification, section 8.7 Vector Relational Functions</a>\n\ttemplate<length_t L, qualifier Q>\n\tGLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> not_(vec<L, bool, Q> const& v);\n\n\t/// @}\n}//namespace glm\n\n#include \"detail/func_vector_relational.inl\"\n"
  },
  {
    "path": "libraries/lua/lauxlib.h",
    "content": "/*\n** $Id: lauxlib.h $\n** Auxiliary functions for building Lua libraries\n** See Copyright Notice in lua.h\n*/\n\n\n#ifndef lauxlib_h\n#define lauxlib_h\n\n\n#include <stddef.h>\n#include <stdio.h>\n\n#include \"luaconf.h\"\n#include \"lua.h\"\n\n\n/* global table */\n#define LUA_GNAME\t\"_G\"\n\n\ntypedef struct luaL_Buffer luaL_Buffer;\n\n\n/* extra error code for 'luaL_loadfilex' */\n#define LUA_ERRFILE     (LUA_ERRERR+1)\n\n\n/* key, in the registry, for table of loaded modules */\n#define LUA_LOADED_TABLE\t\"_LOADED\"\n\n\n/* key, in the registry, for table of preloaded loaders */\n#define LUA_PRELOAD_TABLE\t\"_PRELOAD\"\n\n\ntypedef struct luaL_Reg {\n  const char *name;\n  lua_CFunction func;\n} luaL_Reg;\n\n\n#define LUAL_NUMSIZES\t(sizeof(lua_Integer)*16 + sizeof(lua_Number))\n\nLUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver, size_t sz);\n#define luaL_checkversion(L)  \\\n\t  luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES)\n\nLUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e);\nLUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e);\nLUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len);\nLUALIB_API int (luaL_argerror) (lua_State *L, int arg, const char *extramsg);\nLUALIB_API int (luaL_typeerror) (lua_State *L, int arg, const char *tname);\nLUALIB_API const char *(luaL_checklstring) (lua_State *L, int arg,\n                                                          size_t *l);\nLUALIB_API const char *(luaL_optlstring) (lua_State *L, int arg,\n                                          const char *def, size_t *l);\nLUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int arg);\nLUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int arg, lua_Number def);\n\nLUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int arg);\nLUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int arg,\n                                          lua_Integer def);\n\nLUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg);\nLUALIB_API void (luaL_checktype) (lua_State *L, int arg, int t);\nLUALIB_API void (luaL_checkany) (lua_State *L, int arg);\n\nLUALIB_API int   (luaL_newmetatable) (lua_State *L, const char *tname);\nLUALIB_API void  (luaL_setmetatable) (lua_State *L, const char *tname);\nLUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname);\nLUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);\n\nLUALIB_API void (luaL_where) (lua_State *L, int lvl);\nLUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...);\n\nLUALIB_API int (luaL_checkoption) (lua_State *L, int arg, const char *def,\n                                   const char *const lst[]);\n\nLUALIB_API int (luaL_fileresult) (lua_State *L, int stat, const char *fname);\nLUALIB_API int (luaL_execresult) (lua_State *L, int stat);\n\n\n/* predefined references */\n#define LUA_NOREF       (-2)\n#define LUA_REFNIL      (-1)\n\nLUALIB_API int (luaL_ref) (lua_State *L, int t);\nLUALIB_API void (luaL_unref) (lua_State *L, int t, int ref);\n\nLUALIB_API int (luaL_loadfilex) (lua_State *L, const char *filename,\n                                               const char *mode);\n\n#define luaL_loadfile(L,f)\tluaL_loadfilex(L,f,NULL)\n\nLUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,\n                                   const char *name, const char *mode);\nLUALIB_API int (luaL_loadstring) (lua_State *L, const char *s);\n\nLUALIB_API lua_State *(luaL_newstate) (void);\n\nLUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);\n\nLUALIB_API void (luaL_addgsub) (luaL_Buffer *b, const char *s,\n                                     const char *p, const char *r);\nLUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s,\n                                    const char *p, const char *r);\n\nLUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);\n\nLUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname);\n\nLUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1,\n                                  const char *msg, int level);\n\nLUALIB_API void (luaL_requiref) (lua_State *L, const char *modname,\n                                 lua_CFunction openf, int glb);\n\n/*\n** ===============================================================\n** some useful macros\n** ===============================================================\n*/\n\n\n#define luaL_newlibtable(L,l)\t\\\n  lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1)\n\n#define luaL_newlib(L,l)  \\\n  (luaL_checkversion(L), luaL_newlibtable(L,l), luaL_setfuncs(L,l,0))\n\n#define luaL_argcheck(L, cond,arg,extramsg)\t\\\n\t((void)(luai_likely(cond) || luaL_argerror(L, (arg), (extramsg))))\n\n#define luaL_argexpected(L,cond,arg,tname)\t\\\n\t((void)(luai_likely(cond) || luaL_typeerror(L, (arg), (tname))))\n\n#define luaL_checkstring(L,n)\t(luaL_checklstring(L, (n), NULL))\n#define luaL_optstring(L,n,d)\t(luaL_optlstring(L, (n), (d), NULL))\n\n#define luaL_typename(L,i)\tlua_typename(L, lua_type(L,(i)))\n\n#define luaL_dofile(L, fn) \\\n\t(luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0))\n\n#define luaL_dostring(L, s) \\\n\t(luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0))\n\n#define luaL_getmetatable(L,n)\t(lua_getfield(L, LUA_REGISTRYINDEX, (n)))\n\n#define luaL_opt(L,f,n,d)\t(lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))\n\n#define luaL_loadbuffer(L,s,sz,n)\tluaL_loadbufferx(L,s,sz,n,NULL)\n\n\n/*\n** Perform arithmetic operations on lua_Integer values with wrap-around\n** semantics, as the Lua core does.\n*/\n#define luaL_intop(op,v1,v2)  \\\n\t((lua_Integer)((lua_Unsigned)(v1) op (lua_Unsigned)(v2)))\n\n\n/* push the value used to represent failure/error */\n#define luaL_pushfail(L)\tlua_pushnil(L)\n\n\n/*\n** Internal assertions for in-house debugging\n*/\n#if !defined(lua_assert)\n\n#if defined LUAI_ASSERT\n  #include <assert.h>\n  #define lua_assert(c)\t\tassert(c)\n#else\n  #define lua_assert(c)\t\t((void)0)\n#endif\n\n#endif\n\n\n\n/*\n** {======================================================\n** Generic Buffer manipulation\n** =======================================================\n*/\n\nstruct luaL_Buffer {\n  char *b;  /* buffer address */\n  size_t size;  /* buffer size */\n  size_t n;  /* number of characters in buffer */\n  lua_State *L;\n  union {\n    LUAI_MAXALIGN;  /* ensure maximum alignment for buffer */\n    char b[LUAL_BUFFERSIZE];  /* initial buffer */\n  } init;\n};\n\n\n#define luaL_bufflen(bf)\t((bf)->n)\n#define luaL_buffaddr(bf)\t((bf)->b)\n\n\n#define luaL_addchar(B,c) \\\n  ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \\\n   ((B)->b[(B)->n++] = (c)))\n\n#define luaL_addsize(B,s)\t((B)->n += (s))\n\n#define luaL_buffsub(B,s)\t((B)->n -= (s))\n\nLUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);\nLUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz);\nLUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);\nLUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s);\nLUALIB_API void (luaL_addvalue) (luaL_Buffer *B);\nLUALIB_API void (luaL_pushresult) (luaL_Buffer *B);\nLUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz);\nLUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz);\n\n#define luaL_prepbuffer(B)\tluaL_prepbuffsize(B, LUAL_BUFFERSIZE)\n\n/* }====================================================== */\n\n\n\n/*\n** {======================================================\n** File handles for IO library\n** =======================================================\n*/\n\n/*\n** A file handle is a userdata with metatable 'LUA_FILEHANDLE' and\n** initial structure 'luaL_Stream' (it may contain other fields\n** after that initial structure).\n*/\n\n#define LUA_FILEHANDLE          \"FILE*\"\n\n\ntypedef struct luaL_Stream {\n  FILE *f;  /* stream (NULL for incompletely created streams) */\n  lua_CFunction closef;  /* to close stream (NULL for closed streams) */\n} luaL_Stream;\n\n/* }====================================================== */\n\n/*\n** {==================================================================\n** \"Abstraction Layer\" for basic report of messages and errors\n** ===================================================================\n*/\n\n/* print a string */\n#if !defined(lua_writestring)\n#define lua_writestring(s,l)   fwrite((s), sizeof(char), (l), stdout)\n#endif\n\n/* print a newline and flush the output */\n#if !defined(lua_writeline)\n#define lua_writeline()        (lua_writestring(\"\\n\", 1), fflush(stdout))\n#endif\n\n/* print an error message */\n#if !defined(lua_writestringerror)\n#define lua_writestringerror(s,p) \\\n        (fprintf(stderr, (s), (p)), fflush(stderr))\n#endif\n\n/* }================================================================== */\n\n\n/*\n** {============================================================\n** Compatibility with deprecated conversions\n** =============================================================\n*/\n#if defined(LUA_COMPAT_APIINTCASTS)\n\n#define luaL_checkunsigned(L,a)\t((lua_Unsigned)luaL_checkinteger(L,a))\n#define luaL_optunsigned(L,a,d)\t\\\n\t((lua_Unsigned)luaL_optinteger(L,a,(lua_Integer)(d)))\n\n#define luaL_checkint(L,n)\t((int)luaL_checkinteger(L, (n)))\n#define luaL_optint(L,n,d)\t((int)luaL_optinteger(L, (n), (d)))\n\n#define luaL_checklong(L,n)\t((long)luaL_checkinteger(L, (n)))\n#define luaL_optlong(L,n,d)\t((long)luaL_optinteger(L, (n), (d)))\n\n#endif\n/* }============================================================ */\n\n\n\n#endif\n\n\n"
  },
  {
    "path": "libraries/lua/lua.h",
    "content": "/*\n** $Id: lua.h $\n** Lua - A Scripting Language\n** Lua.org, PUC-Rio, Brazil (http://www.lua.org)\n** See Copyright Notice at the end of this file\n*/\n\n\n#ifndef lua_h\n#define lua_h\n\n#include <stdarg.h>\n#include <stddef.h>\n\n\n#include \"luaconf.h\"\n\n\n#define LUA_VERSION_MAJOR\t\"5\"\n#define LUA_VERSION_MINOR\t\"4\"\n#define LUA_VERSION_RELEASE\t\"6\"\n\n#define LUA_VERSION_NUM\t\t\t504\n#define LUA_VERSION_RELEASE_NUM\t\t(LUA_VERSION_NUM * 100 + 6)\n\n#define LUA_VERSION\t\"Lua \" LUA_VERSION_MAJOR \".\" LUA_VERSION_MINOR\n#define LUA_RELEASE\tLUA_VERSION \".\" LUA_VERSION_RELEASE\n#define LUA_COPYRIGHT\tLUA_RELEASE \"  Copyright (C) 1994-2023 Lua.org, PUC-Rio\"\n#define LUA_AUTHORS\t\"R. Ierusalimschy, L. H. de Figueiredo, W. Celes\"\n\n\n/* mark for precompiled code ('<esc>Lua') */\n#define LUA_SIGNATURE\t\"\\x1bLua\"\n\n/* option for multiple returns in 'lua_pcall' and 'lua_call' */\n#define LUA_MULTRET\t(-1)\n\n\n/*\n** Pseudo-indices\n** (-LUAI_MAXSTACK is the minimum valid index; we keep some free empty\n** space after that to help overflow detection)\n*/\n#define LUA_REGISTRYINDEX\t(-LUAI_MAXSTACK - 1000)\n#define lua_upvalueindex(i)\t(LUA_REGISTRYINDEX - (i))\n\n\n/* thread status */\n#define LUA_OK\t\t0\n#define LUA_YIELD\t1\n#define LUA_ERRRUN\t2\n#define LUA_ERRSYNTAX\t3\n#define LUA_ERRMEM\t4\n#define LUA_ERRERR\t5\n\n\ntypedef struct lua_State lua_State;\n\n\n/*\n** basic types\n*/\n#define LUA_TNONE\t\t(-1)\n\n#define LUA_TNIL\t\t0\n#define LUA_TBOOLEAN\t\t1\n#define LUA_TLIGHTUSERDATA\t2\n#define LUA_TNUMBER\t\t3\n#define LUA_TSTRING\t\t4\n#define LUA_TTABLE\t\t5\n#define LUA_TFUNCTION\t\t6\n#define LUA_TUSERDATA\t\t7\n#define LUA_TTHREAD\t\t8\n\n#define LUA_NUMTYPES\t\t9\n\n\n\n/* minimum Lua stack available to a C function */\n#define LUA_MINSTACK\t20\n\n\n/* predefined values in the registry */\n#define LUA_RIDX_MAINTHREAD\t1\n#define LUA_RIDX_GLOBALS\t2\n#define LUA_RIDX_LAST\t\tLUA_RIDX_GLOBALS\n\n\n/* type of numbers in Lua */\ntypedef LUA_NUMBER lua_Number;\n\n\n/* type for integer functions */\ntypedef LUA_INTEGER lua_Integer;\n\n/* unsigned integer type */\ntypedef LUA_UNSIGNED lua_Unsigned;\n\n/* type for continuation-function contexts */\ntypedef LUA_KCONTEXT lua_KContext;\n\n\n/*\n** Type for C functions registered with Lua\n*/\ntypedef int (*lua_CFunction) (lua_State *L);\n\n/*\n** Type for continuation functions\n*/\ntypedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);\n\n\n/*\n** Type for functions that read/write blocks when loading/dumping Lua chunks\n*/\ntypedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);\n\ntypedef int (*lua_Writer) (lua_State *L, const void *p, size_t sz, void *ud);\n\n\n/*\n** Type for memory-allocation functions\n*/\ntypedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);\n\n\n/*\n** Type for warning functions\n*/\ntypedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);\n\n\n/*\n** Type used by the debug API to collect debug information\n*/\ntypedef struct lua_Debug lua_Debug;\n\n\n/*\n** Functions to be called by the debugger in specific events\n*/\ntypedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);\n\n\n/*\n** generic extra include file\n*/\n#if defined(LUA_USER_H)\n#include LUA_USER_H\n#endif\n\n\n/*\n** RCS ident string\n*/\nextern const char lua_ident[];\n\n\n/*\n** state manipulation\n*/\nLUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);\nLUA_API void       (lua_close) (lua_State *L);\nLUA_API lua_State *(lua_newthread) (lua_State *L);\nLUA_API int        (lua_closethread) (lua_State *L, lua_State *from);\nLUA_API int        (lua_resetthread) (lua_State *L);  /* Deprecated! */\n\nLUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);\n\n\nLUA_API lua_Number (lua_version) (lua_State *L);\n\n\n/*\n** basic stack manipulation\n*/\nLUA_API int   (lua_absindex) (lua_State *L, int idx);\nLUA_API int   (lua_gettop) (lua_State *L);\nLUA_API void  (lua_settop) (lua_State *L, int idx);\nLUA_API void  (lua_pushvalue) (lua_State *L, int idx);\nLUA_API void  (lua_rotate) (lua_State *L, int idx, int n);\nLUA_API void  (lua_copy) (lua_State *L, int fromidx, int toidx);\nLUA_API int   (lua_checkstack) (lua_State *L, int n);\n\nLUA_API void  (lua_xmove) (lua_State *from, lua_State *to, int n);\n\n\n/*\n** access functions (stack -> C)\n*/\n\nLUA_API int             (lua_isnumber) (lua_State *L, int idx);\nLUA_API int             (lua_isstring) (lua_State *L, int idx);\nLUA_API int             (lua_iscfunction) (lua_State *L, int idx);\nLUA_API int             (lua_isinteger) (lua_State *L, int idx);\nLUA_API int             (lua_isuserdata) (lua_State *L, int idx);\nLUA_API int             (lua_type) (lua_State *L, int idx);\nLUA_API const char     *(lua_typename) (lua_State *L, int tp);\n\nLUA_API lua_Number      (lua_tonumberx) (lua_State *L, int idx, int *isnum);\nLUA_API lua_Integer     (lua_tointegerx) (lua_State *L, int idx, int *isnum);\nLUA_API int             (lua_toboolean) (lua_State *L, int idx);\nLUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);\nLUA_API lua_Unsigned    (lua_rawlen) (lua_State *L, int idx);\nLUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);\nLUA_API void\t       *(lua_touserdata) (lua_State *L, int idx);\nLUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);\nLUA_API const void     *(lua_topointer) (lua_State *L, int idx);\n\n\n/*\n** Comparison and arithmetic functions\n*/\n\n#define LUA_OPADD\t0\t/* ORDER TM, ORDER OP */\n#define LUA_OPSUB\t1\n#define LUA_OPMUL\t2\n#define LUA_OPMOD\t3\n#define LUA_OPPOW\t4\n#define LUA_OPDIV\t5\n#define LUA_OPIDIV\t6\n#define LUA_OPBAND\t7\n#define LUA_OPBOR\t8\n#define LUA_OPBXOR\t9\n#define LUA_OPSHL\t10\n#define LUA_OPSHR\t11\n#define LUA_OPUNM\t12\n#define LUA_OPBNOT\t13\n\nLUA_API void  (lua_arith) (lua_State *L, int op);\n\n#define LUA_OPEQ\t0\n#define LUA_OPLT\t1\n#define LUA_OPLE\t2\n\nLUA_API int   (lua_rawequal) (lua_State *L, int idx1, int idx2);\nLUA_API int   (lua_compare) (lua_State *L, int idx1, int idx2, int op);\n\n\n/*\n** push functions (C -> stack)\n*/\nLUA_API void        (lua_pushnil) (lua_State *L);\nLUA_API void        (lua_pushnumber) (lua_State *L, lua_Number n);\nLUA_API void        (lua_pushinteger) (lua_State *L, lua_Integer n);\nLUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t len);\nLUA_API const char *(lua_pushstring) (lua_State *L, const char *s);\nLUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt,\n                                                      va_list argp);\nLUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);\nLUA_API void  (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);\nLUA_API void  (lua_pushboolean) (lua_State *L, int b);\nLUA_API void  (lua_pushlightuserdata) (lua_State *L, void *p);\nLUA_API int   (lua_pushthread) (lua_State *L);\n\n\n/*\n** get functions (Lua -> stack)\n*/\nLUA_API int (lua_getglobal) (lua_State *L, const char *name);\nLUA_API int (lua_gettable) (lua_State *L, int idx);\nLUA_API int (lua_getfield) (lua_State *L, int idx, const char *k);\nLUA_API int (lua_geti) (lua_State *L, int idx, lua_Integer n);\nLUA_API int (lua_rawget) (lua_State *L, int idx);\nLUA_API int (lua_rawgeti) (lua_State *L, int idx, lua_Integer n);\nLUA_API int (lua_rawgetp) (lua_State *L, int idx, const void *p);\n\nLUA_API void  (lua_createtable) (lua_State *L, int narr, int nrec);\nLUA_API void *(lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue);\nLUA_API int   (lua_getmetatable) (lua_State *L, int objindex);\nLUA_API int  (lua_getiuservalue) (lua_State *L, int idx, int n);\n\n\n/*\n** set functions (stack -> Lua)\n*/\nLUA_API void  (lua_setglobal) (lua_State *L, const char *name);\nLUA_API void  (lua_settable) (lua_State *L, int idx);\nLUA_API void  (lua_setfield) (lua_State *L, int idx, const char *k);\nLUA_API void  (lua_seti) (lua_State *L, int idx, lua_Integer n);\nLUA_API void  (lua_rawset) (lua_State *L, int idx);\nLUA_API void  (lua_rawseti) (lua_State *L, int idx, lua_Integer n);\nLUA_API void  (lua_rawsetp) (lua_State *L, int idx, const void *p);\nLUA_API int   (lua_setmetatable) (lua_State *L, int objindex);\nLUA_API int   (lua_setiuservalue) (lua_State *L, int idx, int n);\n\n\n/*\n** 'load' and 'call' functions (load and run Lua code)\n*/\nLUA_API void  (lua_callk) (lua_State *L, int nargs, int nresults,\n                           lua_KContext ctx, lua_KFunction k);\n#define lua_call(L,n,r)\t\tlua_callk(L, (n), (r), 0, NULL)\n\nLUA_API int   (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc,\n                            lua_KContext ctx, lua_KFunction k);\n#define lua_pcall(L,n,r,f)\tlua_pcallk(L, (n), (r), (f), 0, NULL)\n\nLUA_API int   (lua_load) (lua_State *L, lua_Reader reader, void *dt,\n                          const char *chunkname, const char *mode);\n\nLUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data, int strip);\n\n\n/*\n** coroutine functions\n*/\nLUA_API int  (lua_yieldk)     (lua_State *L, int nresults, lua_KContext ctx,\n                               lua_KFunction k);\nLUA_API int  (lua_resume)     (lua_State *L, lua_State *from, int narg,\n                               int *nres);\nLUA_API int  (lua_status)     (lua_State *L);\nLUA_API int (lua_isyieldable) (lua_State *L);\n\n#define lua_yield(L,n)\t\tlua_yieldk(L, (n), 0, NULL)\n\n\n/*\n** Warning-related functions\n*/\nLUA_API void (lua_setwarnf) (lua_State *L, lua_WarnFunction f, void *ud);\nLUA_API void (lua_warning)  (lua_State *L, const char *msg, int tocont);\n\n\n/*\n** garbage-collection function and options\n*/\n\n#define LUA_GCSTOP\t\t0\n#define LUA_GCRESTART\t\t1\n#define LUA_GCCOLLECT\t\t2\n#define LUA_GCCOUNT\t\t3\n#define LUA_GCCOUNTB\t\t4\n#define LUA_GCSTEP\t\t5\n#define LUA_GCSETPAUSE\t\t6\n#define LUA_GCSETSTEPMUL\t7\n#define LUA_GCISRUNNING\t\t9\n#define LUA_GCGEN\t\t10\n#define LUA_GCINC\t\t11\n\nLUA_API int (lua_gc) (lua_State *L, int what, ...);\n\n\n/*\n** miscellaneous functions\n*/\n\nLUA_API int   (lua_error) (lua_State *L);\n\nLUA_API int   (lua_next) (lua_State *L, int idx);\n\nLUA_API void  (lua_concat) (lua_State *L, int n);\nLUA_API void  (lua_len)    (lua_State *L, int idx);\n\nLUA_API size_t   (lua_stringtonumber) (lua_State *L, const char *s);\n\nLUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud);\nLUA_API void      (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud);\n\nLUA_API void (lua_toclose) (lua_State *L, int idx);\nLUA_API void (lua_closeslot) (lua_State *L, int idx);\n\n\n/*\n** {==============================================================\n** some useful macros\n** ===============================================================\n*/\n\n#define lua_getextraspace(L)\t((void *)((char *)(L) - LUA_EXTRASPACE))\n\n#define lua_tonumber(L,i)\tlua_tonumberx(L,(i),NULL)\n#define lua_tointeger(L,i)\tlua_tointegerx(L,(i),NULL)\n\n#define lua_pop(L,n)\t\tlua_settop(L, -(n)-1)\n\n#define lua_newtable(L)\t\tlua_createtable(L, 0, 0)\n\n#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n)))\n\n#define lua_pushcfunction(L,f)\tlua_pushcclosure(L, (f), 0)\n\n#define lua_isfunction(L,n)\t(lua_type(L, (n)) == LUA_TFUNCTION)\n#define lua_istable(L,n)\t(lua_type(L, (n)) == LUA_TTABLE)\n#define lua_islightuserdata(L,n)\t(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)\n#define lua_isnil(L,n)\t\t(lua_type(L, (n)) == LUA_TNIL)\n#define lua_isboolean(L,n)\t(lua_type(L, (n)) == LUA_TBOOLEAN)\n#define lua_isthread(L,n)\t(lua_type(L, (n)) == LUA_TTHREAD)\n#define lua_isnone(L,n)\t\t(lua_type(L, (n)) == LUA_TNONE)\n#define lua_isnoneornil(L, n)\t(lua_type(L, (n)) <= 0)\n\n#define lua_pushliteral(L, s)\tlua_pushstring(L, \"\" s)\n\n#define lua_pushglobaltable(L)  \\\n\t((void)lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS))\n\n#define lua_tostring(L,i)\tlua_tolstring(L, (i), NULL)\n\n\n#define lua_insert(L,idx)\tlua_rotate(L, (idx), 1)\n\n#define lua_remove(L,idx)\t(lua_rotate(L, (idx), -1), lua_pop(L, 1))\n\n#define lua_replace(L,idx)\t(lua_copy(L, -1, (idx)), lua_pop(L, 1))\n\n/* }============================================================== */\n\n\n/*\n** {==============================================================\n** compatibility macros\n** ===============================================================\n*/\n#if defined(LUA_COMPAT_APIINTCASTS)\n\n#define lua_pushunsigned(L,n)\tlua_pushinteger(L, (lua_Integer)(n))\n#define lua_tounsignedx(L,i,is)\t((lua_Unsigned)lua_tointegerx(L,i,is))\n#define lua_tounsigned(L,i)\tlua_tounsignedx(L,(i),NULL)\n\n#endif\n\n#define lua_newuserdata(L,s)\tlua_newuserdatauv(L,s,1)\n#define lua_getuservalue(L,idx)\tlua_getiuservalue(L,idx,1)\n#define lua_setuservalue(L,idx)\tlua_setiuservalue(L,idx,1)\n\n#define LUA_NUMTAGS\t\tLUA_NUMTYPES\n\n/* }============================================================== */\n\n/*\n** {======================================================================\n** Debug API\n** =======================================================================\n*/\n\n\n/*\n** Event codes\n*/\n#define LUA_HOOKCALL\t0\n#define LUA_HOOKRET\t1\n#define LUA_HOOKLINE\t2\n#define LUA_HOOKCOUNT\t3\n#define LUA_HOOKTAILCALL 4\n\n\n/*\n** Event masks\n*/\n#define LUA_MASKCALL\t(1 << LUA_HOOKCALL)\n#define LUA_MASKRET\t(1 << LUA_HOOKRET)\n#define LUA_MASKLINE\t(1 << LUA_HOOKLINE)\n#define LUA_MASKCOUNT\t(1 << LUA_HOOKCOUNT)\n\n\nLUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar);\nLUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar);\nLUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n);\nLUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n);\nLUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n);\nLUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n);\n\nLUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n);\nLUA_API void  (lua_upvaluejoin) (lua_State *L, int fidx1, int n1,\n                                               int fidx2, int n2);\n\nLUA_API void (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count);\nLUA_API lua_Hook (lua_gethook) (lua_State *L);\nLUA_API int (lua_gethookmask) (lua_State *L);\nLUA_API int (lua_gethookcount) (lua_State *L);\n\nLUA_API int (lua_setcstacklimit) (lua_State *L, unsigned int limit);\n\nstruct lua_Debug {\n  int event;\n  const char *name;\t/* (n) */\n  const char *namewhat;\t/* (n) 'global', 'local', 'field', 'method' */\n  const char *what;\t/* (S) 'Lua', 'C', 'main', 'tail' */\n  const char *source;\t/* (S) */\n  size_t srclen;\t/* (S) */\n  int currentline;\t/* (l) */\n  int linedefined;\t/* (S) */\n  int lastlinedefined;\t/* (S) */\n  unsigned char nups;\t/* (u) number of upvalues */\n  unsigned char nparams;/* (u) number of parameters */\n  char isvararg;        /* (u) */\n  char istailcall;\t/* (t) */\n  unsigned short ftransfer;   /* (r) index of first value transferred */\n  unsigned short ntransfer;   /* (r) number of transferred values */\n  char short_src[LUA_IDSIZE]; /* (S) */\n  /* private part */\n  struct CallInfo *i_ci;  /* active function */\n};\n\n/* }====================================================================== */\n\n\n/******************************************************************************\n* Copyright (C) 1994-2023 Lua.org, PUC-Rio.\n*\n* Permission is hereby granted, free of charge, to any person obtaining\n* a copy of this software and associated documentation files (the\n* \"Software\"), to deal in the Software without restriction, including\n* without limitation the rights to use, copy, modify, merge, publish,\n* distribute, sublicense, and/or sell copies of the Software, and to\n* permit persons to whom the Software is furnished to do so, subject to\n* the following conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n******************************************************************************/\n\n\n#endif\n"
  },
  {
    "path": "libraries/lua/lua.hpp",
    "content": "// lua.hpp\n// Lua header files for C++\n// <<extern \"C\">> not supplied automatically because Lua also compiles as C++\n\nextern \"C\" {\n#include \"lua.h\"\n#include \"lualib.h\"\n#include \"lauxlib.h\"\n}\n"
  },
  {
    "path": "libraries/lua/luaconf.h",
    "content": "/*\n** $Id: luaconf.h $\n** Configuration file for Lua\n** See Copyright Notice in lua.h\n*/\n\n\n#ifndef luaconf_h\n#define luaconf_h\n\n#include <limits.h>\n#include <stddef.h>\n\n\n/*\n** ===================================================================\n** General Configuration File for Lua\n**\n** Some definitions here can be changed externally, through the compiler\n** (e.g., with '-D' options): They are commented out or protected\n** by '#if !defined' guards. However, several other definitions\n** should be changed directly here, either because they affect the\n** Lua ABI (by making the changes here, you ensure that all software\n** connected to Lua, such as C libraries, will be compiled with the same\n** configuration); or because they are seldom changed.\n**\n** Search for \"@@\" to find all configurable definitions.\n** ===================================================================\n*/\n\n\n/*\n** {====================================================================\n** System Configuration: macros to adapt (if needed) Lua to some\n** particular platform, for instance restricting it to C89.\n** =====================================================================\n*/\n\n/*\n@@ LUA_USE_C89 controls the use of non-ISO-C89 features.\n** Define it if you want Lua to avoid the use of a few C99 features\n** or Windows-specific features on Windows.\n*/\n/* #define LUA_USE_C89 */\n\n\n/*\n** By default, Lua on Windows use (some) specific Windows features\n*/\n#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)\n#define LUA_USE_WINDOWS  /* enable goodies for regular Windows */\n#endif\n\n\n#if defined(LUA_USE_WINDOWS)\n#define LUA_DL_DLL\t/* enable support for DLL */\n#define LUA_USE_C89\t/* broadly, Windows is C89 */\n#endif\n\n\n#if defined(LUA_USE_LINUX)\n#define LUA_USE_POSIX\n#define LUA_USE_DLOPEN\t\t/* needs an extra library: -ldl */\n#endif\n\n\n#if defined(LUA_USE_MACOSX)\n#define LUA_USE_POSIX\n#define LUA_USE_DLOPEN\t\t/* MacOS does not need -ldl */\n#endif\n\n\n#if defined(LUA_USE_IOS)\n#define LUA_USE_POSIX\n#define LUA_USE_DLOPEN\n#endif\n\n\n/*\n@@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits.\n*/\n#define LUAI_IS32INT\t((UINT_MAX >> 30) >= 3)\n\n/* }================================================================== */\n\n\n\n/*\n** {==================================================================\n** Configuration for Number types. These options should not be\n** set externally, because any other code connected to Lua must\n** use the same configuration.\n** ===================================================================\n*/\n\n/*\n@@ LUA_INT_TYPE defines the type for Lua integers.\n@@ LUA_FLOAT_TYPE defines the type for Lua floats.\n** Lua should work fine with any mix of these options supported\n** by your C compiler. The usual configurations are 64-bit integers\n** and 'double' (the default), 32-bit integers and 'float' (for\n** restricted platforms), and 'long'/'double' (for C compilers not\n** compliant with C99, which may not have support for 'long long').\n*/\n\n/* predefined options for LUA_INT_TYPE */\n#define LUA_INT_INT\t\t1\n#define LUA_INT_LONG\t\t2\n#define LUA_INT_LONGLONG\t3\n\n/* predefined options for LUA_FLOAT_TYPE */\n#define LUA_FLOAT_FLOAT\t\t1\n#define LUA_FLOAT_DOUBLE\t2\n#define LUA_FLOAT_LONGDOUBLE\t3\n\n\n/* Default configuration ('long long' and 'double', for 64-bit Lua) */\n#define LUA_INT_DEFAULT\t\tLUA_INT_LONGLONG\n#define LUA_FLOAT_DEFAULT\tLUA_FLOAT_DOUBLE\n\n\n/*\n@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats.\n*/\n#define LUA_32BITS\t0\n\n\n/*\n@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for\n** C89 ('long' and 'double'); Windows always has '__int64', so it does\n** not need to use this case.\n*/\n#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)\n#define LUA_C89_NUMBERS\t\t1\n#else\n#define LUA_C89_NUMBERS\t\t0\n#endif\n\n\n#if LUA_32BITS\t\t/* { */\n/*\n** 32-bit integers and 'float'\n*/\n#if LUAI_IS32INT  /* use 'int' if big enough */\n#define LUA_INT_TYPE\tLUA_INT_INT\n#else  /* otherwise use 'long' */\n#define LUA_INT_TYPE\tLUA_INT_LONG\n#endif\n#define LUA_FLOAT_TYPE\tLUA_FLOAT_FLOAT\n\n#elif LUA_C89_NUMBERS\t/* }{ */\n/*\n** largest types available for C89 ('long' and 'double')\n*/\n#define LUA_INT_TYPE\tLUA_INT_LONG\n#define LUA_FLOAT_TYPE\tLUA_FLOAT_DOUBLE\n\n#else\t\t/* }{ */\n/* use defaults */\n\n#define LUA_INT_TYPE\tLUA_INT_DEFAULT\n#define LUA_FLOAT_TYPE\tLUA_FLOAT_DEFAULT\n\n#endif\t\t\t\t/* } */\n\n\n/* }================================================================== */\n\n\n\n/*\n** {==================================================================\n** Configuration for Paths.\n** ===================================================================\n*/\n\n/*\n** LUA_PATH_SEP is the character that separates templates in a path.\n** LUA_PATH_MARK is the string that marks the substitution points in a\n** template.\n** LUA_EXEC_DIR in a Windows path is replaced by the executable's\n** directory.\n*/\n#define LUA_PATH_SEP            \";\"\n#define LUA_PATH_MARK           \"?\"\n#define LUA_EXEC_DIR            \"!\"\n\n\n/*\n@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for\n** Lua libraries.\n@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for\n** C libraries.\n** CHANGE them if your machine has a non-conventional directory\n** hierarchy or if you want to install your libraries in\n** non-conventional directories.\n*/\n\n#define LUA_VDIR\tLUA_VERSION_MAJOR \".\" LUA_VERSION_MINOR\n#if defined(_WIN32)\t/* { */\n/*\n** In Windows, any exclamation mark ('!') in the path is replaced by the\n** path of the directory of the executable file of the current process.\n*/\n#define LUA_LDIR\t\"!\\\\lua\\\\\"\n#define LUA_CDIR\t\"!\\\\\"\n#define LUA_SHRDIR\t\"!\\\\..\\\\share\\\\lua\\\\\" LUA_VDIR \"\\\\\"\n\n#if !defined(LUA_PATH_DEFAULT)\n#define LUA_PATH_DEFAULT  \\\n\t\tLUA_LDIR\"?.lua;\"  LUA_LDIR\"?\\\\init.lua;\" \\\n\t\tLUA_CDIR\"?.lua;\"  LUA_CDIR\"?\\\\init.lua;\" \\\n\t\tLUA_SHRDIR\"?.lua;\" LUA_SHRDIR\"?\\\\init.lua;\" \\\n\t\t\".\\\\?.lua;\" \".\\\\?\\\\init.lua\"\n#endif\n\n#if !defined(LUA_CPATH_DEFAULT)\n#define LUA_CPATH_DEFAULT \\\n\t\tLUA_CDIR\"?.dll;\" \\\n\t\tLUA_CDIR\"..\\\\lib\\\\lua\\\\\" LUA_VDIR \"\\\\?.dll;\" \\\n\t\tLUA_CDIR\"loadall.dll;\" \".\\\\?.dll\"\n#endif\n\n#else\t\t\t/* }{ */\n\n#define LUA_ROOT\t\"/usr/local/\"\n#define LUA_LDIR\tLUA_ROOT \"share/lua/\" LUA_VDIR \"/\"\n#define LUA_CDIR\tLUA_ROOT \"lib/lua/\" LUA_VDIR \"/\"\n\n#if !defined(LUA_PATH_DEFAULT)\n#define LUA_PATH_DEFAULT  \\\n\t\tLUA_LDIR\"?.lua;\"  LUA_LDIR\"?/init.lua;\" \\\n\t\tLUA_CDIR\"?.lua;\"  LUA_CDIR\"?/init.lua;\" \\\n\t\t\"./?.lua;\" \"./?/init.lua\"\n#endif\n\n#if !defined(LUA_CPATH_DEFAULT)\n#define LUA_CPATH_DEFAULT \\\n\t\tLUA_CDIR\"?.so;\" LUA_CDIR\"loadall.so;\" \"./?.so\"\n#endif\n\n#endif\t\t\t/* } */\n\n\n/*\n@@ LUA_DIRSEP is the directory separator (for submodules).\n** CHANGE it if your machine does not use \"/\" as the directory separator\n** and is not Windows. (On Windows Lua automatically uses \"\\\".)\n*/\n#if !defined(LUA_DIRSEP)\n\n#if defined(_WIN32)\n#define LUA_DIRSEP\t\"\\\\\"\n#else\n#define LUA_DIRSEP\t\"/\"\n#endif\n\n#endif\n\n/* }================================================================== */\n\n\n/*\n** {==================================================================\n** Marks for exported symbols in the C code\n** ===================================================================\n*/\n\n/*\n@@ LUA_API is a mark for all core API functions.\n@@ LUALIB_API is a mark for all auxiliary library functions.\n@@ LUAMOD_API is a mark for all standard library opening functions.\n** CHANGE them if you need to define those functions in some special way.\n** For instance, if you want to create one Windows DLL with the core and\n** the libraries, you may want to use the following definition (define\n** LUA_BUILD_AS_DLL to get it).\n*/\n#if defined(LUA_BUILD_AS_DLL)\t/* { */\n\n#if defined(LUA_CORE) || defined(LUA_LIB)\t/* { */\n#define LUA_API __declspec(dllexport)\n#else\t\t\t\t\t\t/* }{ */\n#define LUA_API __declspec(dllimport)\n#endif\t\t\t\t\t\t/* } */\n\n#else\t\t\t\t/* }{ */\n\n#define LUA_API\t\textern\n\n#endif\t\t\t\t/* } */\n\n\n/*\n** More often than not the libs go together with the core.\n*/\n#define LUALIB_API\tLUA_API\n#define LUAMOD_API\tLUA_API\n\n\n/*\n@@ LUAI_FUNC is a mark for all extern functions that are not to be\n** exported to outside modules.\n@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables,\n** none of which to be exported to outside modules (LUAI_DDEF for\n** definitions and LUAI_DDEC for declarations).\n** CHANGE them if you need to mark them in some special way. Elf/gcc\n** (versions 3.2 and later) mark them as \"hidden\" to optimize access\n** when Lua is compiled as a shared library. Not all elf targets support\n** this attribute. Unfortunately, gcc does not offer a way to check\n** whether the target offers that support, and those without support\n** give a warning about it. To avoid these warnings, change to the\n** default definition.\n*/\n#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \\\n    defined(__ELF__)\t\t/* { */\n#define LUAI_FUNC\t__attribute__((visibility(\"internal\"))) extern\n#else\t\t\t\t/* }{ */\n#define LUAI_FUNC\textern\n#endif\t\t\t\t/* } */\n\n#define LUAI_DDEC(dec)\tLUAI_FUNC dec\n#define LUAI_DDEF\t/* empty */\n\n/* }================================================================== */\n\n\n/*\n** {==================================================================\n** Compatibility with previous versions\n** ===================================================================\n*/\n\n/*\n@@ LUA_COMPAT_5_3 controls other macros for compatibility with Lua 5.3.\n** You can define it to get all options, or change specific options\n** to fit your specific needs.\n*/\n#if defined(LUA_COMPAT_5_3)\t/* { */\n\n/*\n@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated\n** functions in the mathematical library.\n** (These functions were already officially removed in 5.3;\n** nevertheless they are still available here.)\n*/\n#define LUA_COMPAT_MATHLIB\n\n/*\n@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for\n** manipulating other integer types (lua_pushunsigned, lua_tounsigned,\n** luaL_checkint, luaL_checklong, etc.)\n** (These macros were also officially removed in 5.3, but they are still\n** available here.)\n*/\n#define LUA_COMPAT_APIINTCASTS\n\n\n/*\n@@ LUA_COMPAT_LT_LE controls the emulation of the '__le' metamethod\n** using '__lt'.\n*/\n#define LUA_COMPAT_LT_LE\n\n\n/*\n@@ The following macros supply trivial compatibility for some\n** changes in the API. The macros themselves document how to\n** change your code to avoid using them.\n** (Once more, these macros were officially removed in 5.3, but they are\n** still available here.)\n*/\n#define lua_strlen(L,i)\t\tlua_rawlen(L, (i))\n\n#define lua_objlen(L,i)\t\tlua_rawlen(L, (i))\n\n#define lua_equal(L,idx1,idx2)\t\tlua_compare(L,(idx1),(idx2),LUA_OPEQ)\n#define lua_lessthan(L,idx1,idx2)\tlua_compare(L,(idx1),(idx2),LUA_OPLT)\n\n#endif\t\t\t\t/* } */\n\n/* }================================================================== */\n\n\n\n/*\n** {==================================================================\n** Configuration for Numbers (low-level part).\n** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_*\n** satisfy your needs.\n** ===================================================================\n*/\n\n/*\n@@ LUAI_UACNUMBER is the result of a 'default argument promotion'\n@@ over a floating number.\n@@ l_floatatt(x) corrects float attribute 'x' to the proper float type\n** by prefixing it with one of FLT/DBL/LDBL.\n@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.\n@@ LUA_NUMBER_FMT is the format for writing floats.\n@@ lua_number2str converts a float to a string.\n@@ l_mathop allows the addition of an 'l' or 'f' to all math operations.\n@@ l_floor takes the floor of a float.\n@@ lua_str2number converts a decimal numeral to a number.\n*/\n\n\n/* The following definitions are good for most cases here */\n\n#define l_floor(x)\t\t(l_mathop(floor)(x))\n\n#define lua_number2str(s,sz,n)  \\\n\tl_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n))\n\n/*\n@@ lua_numbertointeger converts a float number with an integral value\n** to an integer, or returns 0 if float is not within the range of\n** a lua_Integer.  (The range comparisons are tricky because of\n** rounding. The tests here assume a two-complement representation,\n** where MININTEGER always has an exact representation as a float;\n** MAXINTEGER may not have one, and therefore its conversion to float\n** may have an ill-defined value.)\n*/\n#define lua_numbertointeger(n,p) \\\n  ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \\\n   (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \\\n      (*(p) = (LUA_INTEGER)(n), 1))\n\n\n/* now the variable definitions */\n\n#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT\t\t/* { single float */\n\n#define LUA_NUMBER\tfloat\n\n#define l_floatatt(n)\t\t(FLT_##n)\n\n#define LUAI_UACNUMBER\tdouble\n\n#define LUA_NUMBER_FRMLEN\t\"\"\n#define LUA_NUMBER_FMT\t\t\"%.7g\"\n\n#define l_mathop(op)\t\top##f\n\n#define lua_str2number(s,p)\tstrtof((s), (p))\n\n\n#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE\t/* }{ long double */\n\n#define LUA_NUMBER\tlong double\n\n#define l_floatatt(n)\t\t(LDBL_##n)\n\n#define LUAI_UACNUMBER\tlong double\n\n#define LUA_NUMBER_FRMLEN\t\"L\"\n#define LUA_NUMBER_FMT\t\t\"%.19Lg\"\n\n#define l_mathop(op)\t\top##l\n\n#define lua_str2number(s,p)\tstrtold((s), (p))\n\n#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE\t/* }{ double */\n\n#define LUA_NUMBER\tdouble\n\n#define l_floatatt(n)\t\t(DBL_##n)\n\n#define LUAI_UACNUMBER\tdouble\n\n#define LUA_NUMBER_FRMLEN\t\"\"\n#define LUA_NUMBER_FMT\t\t\"%.14g\"\n\n#define l_mathop(op)\t\top\n\n#define lua_str2number(s,p)\tstrtod((s), (p))\n\n#else\t\t\t\t\t\t/* }{ */\n\n#error \"numeric float type not defined\"\n\n#endif\t\t\t\t\t/* } */\n\n\n\n/*\n@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.\n@@ LUAI_UACINT is the result of a 'default argument promotion'\n@@ over a LUA_INTEGER.\n@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.\n@@ LUA_INTEGER_FMT is the format for writing integers.\n@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.\n@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.\n@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED.\n@@ lua_integer2str converts an integer to a string.\n*/\n\n\n/* The following definitions are good for most cases here */\n\n#define LUA_INTEGER_FMT\t\t\"%\" LUA_INTEGER_FRMLEN \"d\"\n\n#define LUAI_UACINT\t\tLUA_INTEGER\n\n#define lua_integer2str(s,sz,n)  \\\n\tl_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n))\n\n/*\n** use LUAI_UACINT here to avoid problems with promotions (which\n** can turn a comparison between unsigneds into a signed comparison)\n*/\n#define LUA_UNSIGNED\t\tunsigned LUAI_UACINT\n\n\n/* now the variable definitions */\n\n#if LUA_INT_TYPE == LUA_INT_INT\t\t/* { int */\n\n#define LUA_INTEGER\t\tint\n#define LUA_INTEGER_FRMLEN\t\"\"\n\n#define LUA_MAXINTEGER\t\tINT_MAX\n#define LUA_MININTEGER\t\tINT_MIN\n\n#define LUA_MAXUNSIGNED\t\tUINT_MAX\n\n#elif LUA_INT_TYPE == LUA_INT_LONG\t/* }{ long */\n\n#define LUA_INTEGER\t\tlong\n#define LUA_INTEGER_FRMLEN\t\"l\"\n\n#define LUA_MAXINTEGER\t\tLONG_MAX\n#define LUA_MININTEGER\t\tLONG_MIN\n\n#define LUA_MAXUNSIGNED\t\tULONG_MAX\n\n#elif LUA_INT_TYPE == LUA_INT_LONGLONG\t/* }{ long long */\n\n/* use presence of macro LLONG_MAX as proxy for C99 compliance */\n#if defined(LLONG_MAX)\t\t/* { */\n/* use ISO C99 stuff */\n\n#define LUA_INTEGER\t\tlong long\n#define LUA_INTEGER_FRMLEN\t\"ll\"\n\n#define LUA_MAXINTEGER\t\tLLONG_MAX\n#define LUA_MININTEGER\t\tLLONG_MIN\n\n#define LUA_MAXUNSIGNED\t\tULLONG_MAX\n\n#elif defined(LUA_USE_WINDOWS) /* }{ */\n/* in Windows, can use specific Windows types */\n\n#define LUA_INTEGER\t\t__int64\n#define LUA_INTEGER_FRMLEN\t\"I64\"\n\n#define LUA_MAXINTEGER\t\t_I64_MAX\n#define LUA_MININTEGER\t\t_I64_MIN\n\n#define LUA_MAXUNSIGNED\t\t_UI64_MAX\n\n#else\t\t\t\t/* }{ */\n\n#error \"Compiler does not support 'long long'. Use option '-DLUA_32BITS' \\\n  or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)\"\n\n#endif\t\t\t\t/* } */\n\n#else\t\t\t\t/* }{ */\n\n#error \"numeric integer type not defined\"\n\n#endif\t\t\t\t/* } */\n\n/* }================================================================== */\n\n\n/*\n** {==================================================================\n** Dependencies with C99 and other C details\n** ===================================================================\n*/\n\n/*\n@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89.\n** (All uses in Lua have only one format item.)\n*/\n#if !defined(LUA_USE_C89)\n#define l_sprintf(s,sz,f,i)\tsnprintf(s,sz,f,i)\n#else\n#define l_sprintf(s,sz,f,i)\t((void)(sz), sprintf(s,f,i))\n#endif\n\n\n/*\n@@ lua_strx2number converts a hexadecimal numeral to a number.\n** In C99, 'strtod' does that conversion. Otherwise, you can\n** leave 'lua_strx2number' undefined and Lua will provide its own\n** implementation.\n*/\n#if !defined(LUA_USE_C89)\n#define lua_strx2number(s,p)\t\tlua_str2number(s,p)\n#endif\n\n\n/*\n@@ lua_pointer2str converts a pointer to a readable string in a\n** non-specified way.\n*/\n#define lua_pointer2str(buff,sz,p)\tl_sprintf(buff,sz,\"%p\",p)\n\n\n/*\n@@ lua_number2strx converts a float to a hexadecimal numeral.\n** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that.\n** Otherwise, you can leave 'lua_number2strx' undefined and Lua will\n** provide its own implementation.\n*/\n#if !defined(LUA_USE_C89)\n#define lua_number2strx(L,b,sz,f,n)  \\\n\t((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n)))\n#endif\n\n\n/*\n** 'strtof' and 'opf' variants for math functions are not valid in\n** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the\n** availability of these variants. ('math.h' is already included in\n** all files that use these macros.)\n*/\n#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))\n#undef l_mathop  /* variants not available */\n#undef lua_str2number\n#define l_mathop(op)\t\t(lua_Number)op  /* no variant */\n#define lua_str2number(s,p)\t((lua_Number)strtod((s), (p)))\n#endif\n\n\n/*\n@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation\n** functions.  It must be a numerical type; Lua will use 'intptr_t' if\n** available, otherwise it will use 'ptrdiff_t' (the nearest thing to\n** 'intptr_t' in C89)\n*/\n#define LUA_KCONTEXT\tptrdiff_t\n\n#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \\\n    __STDC_VERSION__ >= 199901L\n#include <stdint.h>\n#if defined(INTPTR_MAX)  /* even in C99 this type is optional */\n#undef LUA_KCONTEXT\n#define LUA_KCONTEXT\tintptr_t\n#endif\n#endif\n\n\n/*\n@@ lua_getlocaledecpoint gets the locale \"radix character\" (decimal point).\n** Change that if you do not want to use C locales. (Code using this\n** macro must include the header 'locale.h'.)\n*/\n#if !defined(lua_getlocaledecpoint)\n#define lua_getlocaledecpoint()\t\t(localeconv()->decimal_point[0])\n#endif\n\n\n/*\n** macros to improve jump prediction, used mostly for error handling\n** and debug facilities. (Some macros in the Lua API use these macros.\n** Define LUA_NOBUILTIN if you do not want '__builtin_expect' in your\n** code.)\n*/\n#if !defined(luai_likely)\n\n#if defined(__GNUC__) && !defined(LUA_NOBUILTIN)\n#define luai_likely(x)\t\t(__builtin_expect(((x) != 0), 1))\n#define luai_unlikely(x)\t(__builtin_expect(((x) != 0), 0))\n#else\n#define luai_likely(x)\t\t(x)\n#define luai_unlikely(x)\t(x)\n#endif\n\n#endif\n\n\n#if defined(LUA_CORE) || defined(LUA_LIB)\n/* shorter names for Lua's own use */\n#define l_likely(x)\tluai_likely(x)\n#define l_unlikely(x)\tluai_unlikely(x)\n#endif\n\n\n\n/* }================================================================== */\n\n\n/*\n** {==================================================================\n** Language Variations\n** =====================================================================\n*/\n\n/*\n@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some\n** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from\n** numbers to strings. Define LUA_NOCVTS2N to turn off automatic\n** coercion from strings to numbers.\n*/\n/* #define LUA_NOCVTN2S */\n/* #define LUA_NOCVTS2N */\n\n\n/*\n@@ LUA_USE_APICHECK turns on several consistency checks on the C API.\n** Define it as a help when debugging C code.\n*/\n#if defined(LUA_USE_APICHECK)\n#include <assert.h>\n#define luai_apicheck(l,e)\tassert(e)\n#endif\n\n/* }================================================================== */\n\n\n/*\n** {==================================================================\n** Macros that affect the API and must be stable (that is, must be the\n** same when you compile Lua and when you compile code that links to\n** Lua).\n** =====================================================================\n*/\n\n/*\n@@ LUAI_MAXSTACK limits the size of the Lua stack.\n** CHANGE it if you need a different limit. This limit is arbitrary;\n** its only purpose is to stop Lua from consuming unlimited stack\n** space (and to reserve some numbers for pseudo-indices).\n** (It must fit into max(size_t)/32 and max(int)/2.)\n*/\n#if LUAI_IS32INT\n#define LUAI_MAXSTACK\t\t1000000\n#else\n#define LUAI_MAXSTACK\t\t15000\n#endif\n\n\n/*\n@@ LUA_EXTRASPACE defines the size of a raw memory area associated with\n** a Lua state with very fast access.\n** CHANGE it if you need a different size.\n*/\n#define LUA_EXTRASPACE\t\t(sizeof(void *))\n\n\n/*\n@@ LUA_IDSIZE gives the maximum size for the description of the source\n** of a function in debug information.\n** CHANGE it if you want a different size.\n*/\n#define LUA_IDSIZE\t60\n\n\n/*\n@@ LUAL_BUFFERSIZE is the initial buffer size used by the lauxlib\n** buffer system.\n*/\n#define LUAL_BUFFERSIZE   ((int)(16 * sizeof(void*) * sizeof(lua_Number)))\n\n\n/*\n@@ LUAI_MAXALIGN defines fields that, when used in a union, ensure\n** maximum alignment for the other items in that union.\n*/\n#define LUAI_MAXALIGN  lua_Number n; double u; void *s; lua_Integer i; long l\n\n/* }================================================================== */\n\n\n\n\n\n/* =================================================================== */\n\n/*\n** Local configuration. You can use this space to add your redefinitions\n** without modifying the main part of the file.\n*/\n\n\n\n\n\n#endif\n\n"
  },
  {
    "path": "libraries/lua/lualib.h",
    "content": "/*\n** $Id: lualib.h $\n** Lua standard libraries\n** See Copyright Notice in lua.h\n*/\n\n\n#ifndef lualib_h\n#define lualib_h\n\n#include \"lua.h\"\n\n\n/* version suffix for environment variable names */\n#define LUA_VERSUFFIX          \"_\" LUA_VERSION_MAJOR \"_\" LUA_VERSION_MINOR\n\n\nLUAMOD_API int (luaopen_base) (lua_State *L);\n\n#define LUA_COLIBNAME\t\"coroutine\"\nLUAMOD_API int (luaopen_coroutine) (lua_State *L);\n\n#define LUA_TABLIBNAME\t\"table\"\nLUAMOD_API int (luaopen_table) (lua_State *L);\n\n#define LUA_IOLIBNAME\t\"io\"\nLUAMOD_API int (luaopen_io) (lua_State *L);\n\n#define LUA_OSLIBNAME\t\"os\"\nLUAMOD_API int (luaopen_os) (lua_State *L);\n\n#define LUA_STRLIBNAME\t\"string\"\nLUAMOD_API int (luaopen_string) (lua_State *L);\n\n#define LUA_UTF8LIBNAME\t\"utf8\"\nLUAMOD_API int (luaopen_utf8) (lua_State *L);\n\n#define LUA_MATHLIBNAME\t\"math\"\nLUAMOD_API int (luaopen_math) (lua_State *L);\n\n#define LUA_DBLIBNAME\t\"debug\"\nLUAMOD_API int (luaopen_debug) (lua_State *L);\n\n#define LUA_LOADLIBNAME\t\"package\"\nLUAMOD_API int (luaopen_package) (lua_State *L);\n\n\n/* open all previous libraries */\nLUALIB_API void (luaL_openlibs) (lua_State *L);\n\n\n#endif\n"
  },
  {
    "path": "libraries/miniz.c",
    "content": "#include \"miniz.h\"\n/**************************************************************************\n *\n * Copyright 2013-2014 RAD Game Tools and Valve Software\n * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n **************************************************************************/\n\n\n\ntypedef unsigned char mz_validate_uint16[sizeof(mz_uint16) == 2 ? 1 : -1];\ntypedef unsigned char mz_validate_uint32[sizeof(mz_uint32) == 4 ? 1 : -1];\ntypedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1];\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------------- zlib-style API's */\n\nmz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len)\n{\n    mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16);\n    size_t block_len = buf_len % 5552;\n    if (!ptr)\n        return MZ_ADLER32_INIT;\n    while (buf_len)\n    {\n        for (i = 0; i + 7 < block_len; i += 8, ptr += 8)\n        {\n            s1 += ptr[0], s2 += s1;\n            s1 += ptr[1], s2 += s1;\n            s1 += ptr[2], s2 += s1;\n            s1 += ptr[3], s2 += s1;\n            s1 += ptr[4], s2 += s1;\n            s1 += ptr[5], s2 += s1;\n            s1 += ptr[6], s2 += s1;\n            s1 += ptr[7], s2 += s1;\n        }\n        for (; i < block_len; ++i)\n            s1 += *ptr++, s2 += s1;\n        s1 %= 65521U, s2 %= 65521U;\n        buf_len -= block_len;\n        block_len = 5552;\n    }\n    return (s2 << 16) + s1;\n}\n\n/* Karl Malbrain's compact CRC-32. See \"A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed\": http://www.geocities.com/malbrain/ */\n#if 0\n    mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len)\n    {\n        static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,\n                                               0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c };\n        mz_uint32 crcu32 = (mz_uint32)crc;\n        if (!ptr)\n            return MZ_CRC32_INIT;\n        crcu32 = ~crcu32;\n        while (buf_len--)\n        {\n            mz_uint8 b = *ptr++;\n            crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)];\n            crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)];\n        }\n        return ~crcu32;\n    }\n#elif defined(USE_EXTERNAL_MZCRC)\n/* If USE_EXTERNAL_CRC is defined, an external module will export the\n * mz_crc32() symbol for us to use, e.g. an SSE-accelerated version.\n * Depending on the impl, it may be necessary to ~ the input/output crc values.\n */\nmz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len);\n#else\n/* Faster, but larger CPU cache footprint.\n */\nmz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len)\n{\n    static const mz_uint32 s_crc_table[256] =\n        {\n          0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535,\n          0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD,\n          0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D,\n          0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n          0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n          0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C,\n          0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC,\n          0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n          0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB,\n          0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n          0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB,\n          0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n          0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA,\n          0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE,\n          0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n          0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n          0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409,\n          0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81,\n          0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739,\n          0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n          0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268,\n          0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0,\n          0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8,\n          0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n          0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n          0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703,\n          0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7,\n          0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n          0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE,\n          0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n          0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6,\n          0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n          0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D,\n          0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5,\n          0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n          0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n          0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n        };\n\n    mz_uint32 crc32 = (mz_uint32)crc ^ 0xFFFFFFFF;\n    const mz_uint8 *pByte_buf = (const mz_uint8 *)ptr;\n\n    while (buf_len >= 4)\n    {\n        crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF];\n        crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[1]) & 0xFF];\n        crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[2]) & 0xFF];\n        crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[3]) & 0xFF];\n        pByte_buf += 4;\n        buf_len -= 4;\n    }\n\n    while (buf_len)\n    {\n        crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF];\n        ++pByte_buf;\n        --buf_len;\n    }\n\n    return ~crc32;\n}\n#endif\n\nvoid mz_free(void *p)\n{\n    MZ_FREE(p);\n}\n\nMINIZ_EXPORT void *miniz_def_alloc_func(void *opaque, size_t items, size_t size)\n{\n    (void)opaque, (void)items, (void)size;\n    return MZ_MALLOC(items * size);\n}\nMINIZ_EXPORT void miniz_def_free_func(void *opaque, void *address)\n{\n    (void)opaque, (void)address;\n    MZ_FREE(address);\n}\nMINIZ_EXPORT void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size)\n{\n    (void)opaque, (void)address, (void)items, (void)size;\n    return MZ_REALLOC(address, items * size);\n}\n\nconst char *mz_version(void)\n{\n    return MZ_VERSION;\n}\n\n#ifndef MINIZ_NO_ZLIB_APIS\n\n#ifndef MINIZ_NO_DEFLATE_APIS\n\nint mz_deflateInit(mz_streamp pStream, int level)\n{\n    return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY);\n}\n\nint mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy)\n{\n    tdefl_compressor *pComp;\n    mz_uint comp_flags = TDEFL_COMPUTE_ADLER32 | tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy);\n\n    if (!pStream)\n        return MZ_STREAM_ERROR;\n    if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)))\n        return MZ_PARAM_ERROR;\n\n    pStream->data_type = 0;\n    pStream->adler = MZ_ADLER32_INIT;\n    pStream->msg = NULL;\n    pStream->reserved = 0;\n    pStream->total_in = 0;\n    pStream->total_out = 0;\n    if (!pStream->zalloc)\n        pStream->zalloc = miniz_def_alloc_func;\n    if (!pStream->zfree)\n        pStream->zfree = miniz_def_free_func;\n\n    pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, sizeof(tdefl_compressor));\n    if (!pComp)\n        return MZ_MEM_ERROR;\n\n    pStream->state = (struct mz_internal_state *)pComp;\n\n    if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY)\n    {\n        mz_deflateEnd(pStream);\n        return MZ_PARAM_ERROR;\n    }\n\n    return MZ_OK;\n}\n\nint mz_deflateReset(mz_streamp pStream)\n{\n    if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || (!pStream->zfree))\n        return MZ_STREAM_ERROR;\n    pStream->total_in = pStream->total_out = 0;\n    tdefl_init((tdefl_compressor *)pStream->state, NULL, NULL, ((tdefl_compressor *)pStream->state)->m_flags);\n    return MZ_OK;\n}\n\nint mz_deflate(mz_streamp pStream, int flush)\n{\n    size_t in_bytes, out_bytes;\n    mz_ulong orig_total_in, orig_total_out;\n    int mz_status = MZ_OK;\n\n    if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || (!pStream->next_out))\n        return MZ_STREAM_ERROR;\n    if (!pStream->avail_out)\n        return MZ_BUF_ERROR;\n\n    if (flush == MZ_PARTIAL_FLUSH)\n        flush = MZ_SYNC_FLUSH;\n\n    if (((tdefl_compressor *)pStream->state)->m_prev_return_status == TDEFL_STATUS_DONE)\n        return (flush == MZ_FINISH) ? MZ_STREAM_END : MZ_BUF_ERROR;\n\n    orig_total_in = pStream->total_in;\n    orig_total_out = pStream->total_out;\n    for (;;)\n    {\n        tdefl_status defl_status;\n        in_bytes = pStream->avail_in;\n        out_bytes = pStream->avail_out;\n\n        defl_status = tdefl_compress((tdefl_compressor *)pStream->state, pStream->next_in, &in_bytes, pStream->next_out, &out_bytes, (tdefl_flush)flush);\n        pStream->next_in += (mz_uint)in_bytes;\n        pStream->avail_in -= (mz_uint)in_bytes;\n        pStream->total_in += (mz_uint)in_bytes;\n        pStream->adler = tdefl_get_adler32((tdefl_compressor *)pStream->state);\n\n        pStream->next_out += (mz_uint)out_bytes;\n        pStream->avail_out -= (mz_uint)out_bytes;\n        pStream->total_out += (mz_uint)out_bytes;\n\n        if (defl_status < 0)\n        {\n            mz_status = MZ_STREAM_ERROR;\n            break;\n        }\n        else if (defl_status == TDEFL_STATUS_DONE)\n        {\n            mz_status = MZ_STREAM_END;\n            break;\n        }\n        else if (!pStream->avail_out)\n            break;\n        else if ((!pStream->avail_in) && (flush != MZ_FINISH))\n        {\n            if ((flush) || (pStream->total_in != orig_total_in) || (pStream->total_out != orig_total_out))\n                break;\n            return MZ_BUF_ERROR; /* Can't make forward progress without some input.\n */\n        }\n    }\n    return mz_status;\n}\n\nint mz_deflateEnd(mz_streamp pStream)\n{\n    if (!pStream)\n        return MZ_STREAM_ERROR;\n    if (pStream->state)\n    {\n        pStream->zfree(pStream->opaque, pStream->state);\n        pStream->state = NULL;\n    }\n    return MZ_OK;\n}\n\nmz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len)\n{\n    (void)pStream;\n    /* This is really over conservative. (And lame, but it's actually pretty tricky to compute a true upper bound given the way tdefl's blocking works.) */\n    return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5);\n}\n\nint mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level)\n{\n    int status;\n    mz_stream stream;\n    memset(&stream, 0, sizeof(stream));\n\n    /* In case mz_ulong is 64-bits (argh I hate longs). */\n    if ((mz_uint64)(source_len | *pDest_len) > 0xFFFFFFFFU)\n        return MZ_PARAM_ERROR;\n\n    stream.next_in = pSource;\n    stream.avail_in = (mz_uint32)source_len;\n    stream.next_out = pDest;\n    stream.avail_out = (mz_uint32)*pDest_len;\n\n    status = mz_deflateInit(&stream, level);\n    if (status != MZ_OK)\n        return status;\n\n    status = mz_deflate(&stream, MZ_FINISH);\n    if (status != MZ_STREAM_END)\n    {\n        mz_deflateEnd(&stream);\n        return (status == MZ_OK) ? MZ_BUF_ERROR : status;\n    }\n\n    *pDest_len = stream.total_out;\n    return mz_deflateEnd(&stream);\n}\n\nint mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)\n{\n    return mz_compress2(pDest, pDest_len, pSource, source_len, MZ_DEFAULT_COMPRESSION);\n}\n\nmz_ulong mz_compressBound(mz_ulong source_len)\n{\n    return mz_deflateBound(NULL, source_len);\n}\n\n#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/\n\n#ifndef MINIZ_NO_INFLATE_APIS\n\ntypedef struct\n{\n    tinfl_decompressor m_decomp;\n    mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed;\n    int m_window_bits;\n    mz_uint8 m_dict[TINFL_LZ_DICT_SIZE];\n    tinfl_status m_last_status;\n} inflate_state;\n\nint mz_inflateInit2(mz_streamp pStream, int window_bits)\n{\n    inflate_state *pDecomp;\n    if (!pStream)\n        return MZ_STREAM_ERROR;\n    if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS))\n        return MZ_PARAM_ERROR;\n\n    pStream->data_type = 0;\n    pStream->adler = 0;\n    pStream->msg = NULL;\n    pStream->total_in = 0;\n    pStream->total_out = 0;\n    pStream->reserved = 0;\n    if (!pStream->zalloc)\n        pStream->zalloc = miniz_def_alloc_func;\n    if (!pStream->zfree)\n        pStream->zfree = miniz_def_free_func;\n\n    pDecomp = (inflate_state *)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state));\n    if (!pDecomp)\n        return MZ_MEM_ERROR;\n\n    pStream->state = (struct mz_internal_state *)pDecomp;\n\n    tinfl_init(&pDecomp->m_decomp);\n    pDecomp->m_dict_ofs = 0;\n    pDecomp->m_dict_avail = 0;\n    pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT;\n    pDecomp->m_first_call = 1;\n    pDecomp->m_has_flushed = 0;\n    pDecomp->m_window_bits = window_bits;\n\n    return MZ_OK;\n}\n\nint mz_inflateInit(mz_streamp pStream)\n{\n    return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS);\n}\n\nint mz_inflateReset(mz_streamp pStream)\n{\n    inflate_state *pDecomp;\n    if (!pStream)\n        return MZ_STREAM_ERROR;\n\n    pStream->data_type = 0;\n    pStream->adler = 0;\n    pStream->msg = NULL;\n    pStream->total_in = 0;\n    pStream->total_out = 0;\n    pStream->reserved = 0;\n\n    pDecomp = (inflate_state *)pStream->state;\n\n    tinfl_init(&pDecomp->m_decomp);\n    pDecomp->m_dict_ofs = 0;\n    pDecomp->m_dict_avail = 0;\n    pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT;\n    pDecomp->m_first_call = 1;\n    pDecomp->m_has_flushed = 0;\n    /* pDecomp->m_window_bits = window_bits */;\n\n    return MZ_OK;\n}\n\nint mz_inflate(mz_streamp pStream, int flush)\n{\n    inflate_state *pState;\n    mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32;\n    size_t in_bytes, out_bytes, orig_avail_in;\n    tinfl_status status;\n\n    if ((!pStream) || (!pStream->state))\n        return MZ_STREAM_ERROR;\n    if (flush == MZ_PARTIAL_FLUSH)\n        flush = MZ_SYNC_FLUSH;\n    if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH))\n        return MZ_STREAM_ERROR;\n\n    pState = (inflate_state *)pStream->state;\n    if (pState->m_window_bits > 0)\n        decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER;\n    orig_avail_in = pStream->avail_in;\n\n    first_call = pState->m_first_call;\n    pState->m_first_call = 0;\n    if (pState->m_last_status < 0)\n        return MZ_DATA_ERROR;\n\n    if (pState->m_has_flushed && (flush != MZ_FINISH))\n        return MZ_STREAM_ERROR;\n    pState->m_has_flushed |= (flush == MZ_FINISH);\n\n    if ((flush == MZ_FINISH) && (first_call))\n    {\n        /* MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file. */\n        decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF;\n        in_bytes = pStream->avail_in;\n        out_bytes = pStream->avail_out;\n        status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags);\n        pState->m_last_status = status;\n        pStream->next_in += (mz_uint)in_bytes;\n        pStream->avail_in -= (mz_uint)in_bytes;\n        pStream->total_in += (mz_uint)in_bytes;\n        pStream->adler = tinfl_get_adler32(&pState->m_decomp);\n        pStream->next_out += (mz_uint)out_bytes;\n        pStream->avail_out -= (mz_uint)out_bytes;\n        pStream->total_out += (mz_uint)out_bytes;\n\n        if (status < 0)\n            return MZ_DATA_ERROR;\n        else if (status != TINFL_STATUS_DONE)\n        {\n            pState->m_last_status = TINFL_STATUS_FAILED;\n            return MZ_BUF_ERROR;\n        }\n        return MZ_STREAM_END;\n    }\n    /* flush != MZ_FINISH then we must assume there's more input. */\n    if (flush != MZ_FINISH)\n        decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT;\n\n    if (pState->m_dict_avail)\n    {\n        n = MZ_MIN(pState->m_dict_avail, pStream->avail_out);\n        memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n);\n        pStream->next_out += n;\n        pStream->avail_out -= n;\n        pStream->total_out += n;\n        pState->m_dict_avail -= n;\n        pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1);\n        return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK;\n    }\n\n    for (;;)\n    {\n        in_bytes = pStream->avail_in;\n        out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs;\n\n        status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags);\n        pState->m_last_status = status;\n\n        pStream->next_in += (mz_uint)in_bytes;\n        pStream->avail_in -= (mz_uint)in_bytes;\n        pStream->total_in += (mz_uint)in_bytes;\n        pStream->adler = tinfl_get_adler32(&pState->m_decomp);\n\n        pState->m_dict_avail = (mz_uint)out_bytes;\n\n        n = MZ_MIN(pState->m_dict_avail, pStream->avail_out);\n        memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n);\n        pStream->next_out += n;\n        pStream->avail_out -= n;\n        pStream->total_out += n;\n        pState->m_dict_avail -= n;\n        pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1);\n\n        if (status < 0)\n            return MZ_DATA_ERROR; /* Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well). */\n        else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in))\n            return MZ_BUF_ERROR; /* Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH. */\n        else if (flush == MZ_FINISH)\n        {\n            /* The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH. */\n            if (status == TINFL_STATUS_DONE)\n                return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END;\n            /* status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong. */\n            else if (!pStream->avail_out)\n                return MZ_BUF_ERROR;\n        }\n        else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail))\n            break;\n    }\n\n    return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK;\n}\n\nint mz_inflateEnd(mz_streamp pStream)\n{\n    if (!pStream)\n        return MZ_STREAM_ERROR;\n    if (pStream->state)\n    {\n        pStream->zfree(pStream->opaque, pStream->state);\n        pStream->state = NULL;\n    }\n    return MZ_OK;\n}\nint mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong *pSource_len)\n{\n    mz_stream stream;\n    int status;\n    memset(&stream, 0, sizeof(stream));\n\n    /* In case mz_ulong is 64-bits (argh I hate longs). */\n    if ((mz_uint64)(*pSource_len | *pDest_len) > 0xFFFFFFFFU)\n        return MZ_PARAM_ERROR;\n\n    stream.next_in = pSource;\n    stream.avail_in = (mz_uint32)*pSource_len;\n    stream.next_out = pDest;\n    stream.avail_out = (mz_uint32)*pDest_len;\n\n    status = mz_inflateInit(&stream);\n    if (status != MZ_OK)\n        return status;\n\n    status = mz_inflate(&stream, MZ_FINISH);\n    *pSource_len = *pSource_len - stream.avail_in;\n    if (status != MZ_STREAM_END)\n    {\n        mz_inflateEnd(&stream);\n        return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR : status;\n    }\n    *pDest_len = stream.total_out;\n\n    return mz_inflateEnd(&stream);\n}\n\nint mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len)\n{\n    return mz_uncompress2(pDest, pDest_len, pSource, &source_len);\n}\n\n#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/\n\nconst char *mz_error(int err)\n{\n    static struct\n    {\n        int m_err;\n        const char *m_pDesc;\n    } s_error_descs[] =\n        {\n          { MZ_OK, \"\" }, { MZ_STREAM_END, \"stream end\" }, { MZ_NEED_DICT, \"need dictionary\" }, { MZ_ERRNO, \"file error\" }, { MZ_STREAM_ERROR, \"stream error\" }, { MZ_DATA_ERROR, \"data error\" }, { MZ_MEM_ERROR, \"out of memory\" }, { MZ_BUF_ERROR, \"buf error\" }, { MZ_VERSION_ERROR, \"version error\" }, { MZ_PARAM_ERROR, \"parameter error\" }\n        };\n    mz_uint i;\n    for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i)\n        if (s_error_descs[i].m_err == err)\n            return s_error_descs[i].m_pDesc;\n    return NULL;\n}\n\n#endif /*MINIZ_NO_ZLIB_APIS */\n\n#ifdef __cplusplus\n}\n#endif\n\n/*\n  This is free and unencumbered software released into the public domain.\n\n  Anyone is free to copy, modify, publish, use, compile, sell, or\n  distribute this software, either in source code form or as a compiled\n  binary, for any purpose, commercial or non-commercial, and by any\n  means.\n\n  In jurisdictions that recognize copyright laws, the author or authors\n  of this software dedicate any and all copyright interest in the\n  software to the public domain. We make this dedication for the benefit\n  of the public at large and to the detriment of our heirs and\n  successors. We intend this dedication to be an overt act of\n  relinquishment in perpetuity of all present and future rights to this\n  software under copyright law.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n  OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n  ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n  OTHER DEALINGS IN THE SOFTWARE.\n\n  For more information, please refer to <http://unlicense.org/>\n*/\n/**************************************************************************\n *\n * Copyright 2013-2014 RAD Game Tools and Valve Software\n * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n **************************************************************************/\n\n\n\n#ifndef MINIZ_NO_DEFLATE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------------- Low-level Compression (independent from all decompression API's) */\n\n/* Purposely making these tables static for faster init and thread safety. */\nstatic const mz_uint16 s_tdefl_len_sym[256] =\n    {\n      257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272,\n      273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276,\n      277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,\n      279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,\n      281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,\n      282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,\n      283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,\n      284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285\n    };\n\nstatic const mz_uint8 s_tdefl_len_extra[256] =\n    {\n      0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n      4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0\n    };\n\nstatic const mz_uint8 s_tdefl_small_dist_sym[512] =\n    {\n      0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11,\n      11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13,\n      13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,\n      14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,\n      14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,\n      15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n      16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n      16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n      16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,\n      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,\n      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,\n      17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17\n    };\n\nstatic const mz_uint8 s_tdefl_small_dist_extra[512] =\n    {\n      0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,\n      5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n      6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n      7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n      7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n      7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n      7, 7, 7, 7, 7, 7, 7, 7\n    };\n\nstatic const mz_uint8 s_tdefl_large_dist_sym[128] =\n    {\n      0, 0, 18, 19, 20, 20, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,\n      26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,\n      28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29\n    };\n\nstatic const mz_uint8 s_tdefl_large_dist_extra[128] =\n    {\n      0, 0, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,\n      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,\n      13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13\n    };\n\n/* Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted values. */\ntypedef struct\n{\n    mz_uint16 m_key, m_sym_index;\n} tdefl_sym_freq;\nstatic tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *pSyms0, tdefl_sym_freq *pSyms1)\n{\n    mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2];\n    tdefl_sym_freq *pCur_syms = pSyms0, *pNew_syms = pSyms1;\n    MZ_CLEAR_ARR(hist);\n    for (i = 0; i < num_syms; i++)\n    {\n        mz_uint freq = pSyms0[i].m_key;\n        hist[freq & 0xFF]++;\n        hist[256 + ((freq >> 8) & 0xFF)]++;\n    }\n    while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256]))\n        total_passes--;\n    for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8)\n    {\n        const mz_uint32 *pHist = &hist[pass << 8];\n        mz_uint offsets[256], cur_ofs = 0;\n        for (i = 0; i < 256; i++)\n        {\n            offsets[i] = cur_ofs;\n            cur_ofs += pHist[i];\n        }\n        for (i = 0; i < num_syms; i++)\n            pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i];\n        {\n            tdefl_sym_freq *t = pCur_syms;\n            pCur_syms = pNew_syms;\n            pNew_syms = t;\n        }\n    }\n    return pCur_syms;\n}\n\n/* tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996. */\nstatic void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n)\n{\n    int root, leaf, next, avbl, used, dpth;\n    if (n == 0)\n        return;\n    else if (n == 1)\n    {\n        A[0].m_key = 1;\n        return;\n    }\n    A[0].m_key += A[1].m_key;\n    root = 0;\n    leaf = 2;\n    for (next = 1; next < n - 1; next++)\n    {\n        if (leaf >= n || A[root].m_key < A[leaf].m_key)\n        {\n            A[next].m_key = A[root].m_key;\n            A[root++].m_key = (mz_uint16)next;\n        }\n        else\n            A[next].m_key = A[leaf++].m_key;\n        if (leaf >= n || (root < next && A[root].m_key < A[leaf].m_key))\n        {\n            A[next].m_key = (mz_uint16)(A[next].m_key + A[root].m_key);\n            A[root++].m_key = (mz_uint16)next;\n        }\n        else\n            A[next].m_key = (mz_uint16)(A[next].m_key + A[leaf++].m_key);\n    }\n    A[n - 2].m_key = 0;\n    for (next = n - 3; next >= 0; next--)\n        A[next].m_key = A[A[next].m_key].m_key + 1;\n    avbl = 1;\n    used = dpth = 0;\n    root = n - 2;\n    next = n - 1;\n    while (avbl > 0)\n    {\n        while (root >= 0 && (int)A[root].m_key == dpth)\n        {\n            used++;\n            root--;\n        }\n        while (avbl > used)\n        {\n            A[next--].m_key = (mz_uint16)(dpth);\n            avbl--;\n        }\n        avbl = 2 * used;\n        dpth++;\n        used = 0;\n    }\n}\n\n/* Limits canonical Huffman code table's max code size. */\nenum\n{\n    TDEFL_MAX_SUPPORTED_HUFF_CODESIZE = 32\n};\nstatic void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size)\n{\n    int i;\n    mz_uint32 total = 0;\n    if (code_list_len <= 1)\n        return;\n    for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++)\n        pNum_codes[max_code_size] += pNum_codes[i];\n    for (i = max_code_size; i > 0; i--)\n        total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i));\n    while (total != (1UL << max_code_size))\n    {\n        pNum_codes[max_code_size]--;\n        for (i = max_code_size - 1; i > 0; i--)\n            if (pNum_codes[i])\n            {\n                pNum_codes[i]--;\n                pNum_codes[i + 1] += 2;\n                break;\n            }\n        total--;\n    }\n}\n\nstatic void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table)\n{\n    int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE];\n    mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1];\n    MZ_CLEAR_ARR(num_codes);\n    if (static_table)\n    {\n        for (i = 0; i < table_len; i++)\n            num_codes[d->m_huff_code_sizes[table_num][i]]++;\n    }\n    else\n    {\n        tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], *pSyms;\n        int num_used_syms = 0;\n        const mz_uint16 *pSym_count = &d->m_huff_count[table_num][0];\n        for (i = 0; i < table_len; i++)\n            if (pSym_count[i])\n            {\n                syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i];\n                syms0[num_used_syms++].m_sym_index = (mz_uint16)i;\n            }\n\n        pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1);\n        tdefl_calculate_minimum_redundancy(pSyms, num_used_syms);\n\n        for (i = 0; i < num_used_syms; i++)\n            num_codes[pSyms[i].m_key]++;\n\n        tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit);\n\n        MZ_CLEAR_ARR(d->m_huff_code_sizes[table_num]);\n        MZ_CLEAR_ARR(d->m_huff_codes[table_num]);\n        for (i = 1, j = num_used_syms; i <= code_size_limit; i++)\n            for (l = num_codes[i]; l > 0; l--)\n                d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i);\n    }\n\n    next_code[1] = 0;\n    for (j = 0, i = 2; i <= code_size_limit; i++)\n        next_code[i] = j = ((j + num_codes[i - 1]) << 1);\n\n    for (i = 0; i < table_len; i++)\n    {\n        mz_uint rev_code = 0, code, code_size;\n        if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0)\n            continue;\n        code = next_code[code_size]++;\n        for (l = code_size; l > 0; l--, code >>= 1)\n            rev_code = (rev_code << 1) | (code & 1);\n        d->m_huff_codes[table_num][i] = (mz_uint16)rev_code;\n    }\n}\n\n#define TDEFL_PUT_BITS(b, l)                                       \\\n    do                                                             \\\n    {                                                              \\\n        mz_uint bits = b;                                          \\\n        mz_uint len = l;                                           \\\n        MZ_ASSERT(bits <= ((1U << len) - 1U));                     \\\n        d->m_bit_buffer |= (bits << d->m_bits_in);                 \\\n        d->m_bits_in += len;                                       \\\n        while (d->m_bits_in >= 8)                                  \\\n        {                                                          \\\n            if (d->m_pOutput_buf < d->m_pOutput_buf_end)           \\\n                *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \\\n            d->m_bit_buffer >>= 8;                                 \\\n            d->m_bits_in -= 8;                                     \\\n        }                                                          \\\n    }                                                              \\\n    MZ_MACRO_END\n\n#define TDEFL_RLE_PREV_CODE_SIZE()                                                                                       \\\n    {                                                                                                                    \\\n        if (rle_repeat_count)                                                                                            \\\n        {                                                                                                                \\\n            if (rle_repeat_count < 3)                                                                                    \\\n            {                                                                                                            \\\n                d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \\\n                while (rle_repeat_count--)                                                                               \\\n                    packed_code_sizes[num_packed_code_sizes++] = prev_code_size;                                         \\\n            }                                                                                                            \\\n            else                                                                                                         \\\n            {                                                                                                            \\\n                d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1);                                        \\\n                packed_code_sizes[num_packed_code_sizes++] = 16;                                                         \\\n                packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3);                           \\\n            }                                                                                                            \\\n            rle_repeat_count = 0;                                                                                        \\\n        }                                                                                                                \\\n    }\n\n#define TDEFL_RLE_ZERO_CODE_SIZE()                                                         \\\n    {                                                                                      \\\n        if (rle_z_count)                                                                   \\\n        {                                                                                  \\\n            if (rle_z_count < 3)                                                           \\\n            {                                                                              \\\n                d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count);  \\\n                while (rle_z_count--)                                                      \\\n                    packed_code_sizes[num_packed_code_sizes++] = 0;                        \\\n            }                                                                              \\\n            else if (rle_z_count <= 10)                                                    \\\n            {                                                                              \\\n                d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1);          \\\n                packed_code_sizes[num_packed_code_sizes++] = 17;                           \\\n                packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3);  \\\n            }                                                                              \\\n            else                                                                           \\\n            {                                                                              \\\n                d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1);          \\\n                packed_code_sizes[num_packed_code_sizes++] = 18;                           \\\n                packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \\\n            }                                                                              \\\n            rle_z_count = 0;                                                               \\\n        }                                                                                  \\\n    }\n\nstatic const mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };\n\nstatic void tdefl_start_dynamic_block(tdefl_compressor *d)\n{\n    int num_lit_codes, num_dist_codes, num_bit_lengths;\n    mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index;\n    mz_uint8 code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], prev_code_size = 0xFF;\n\n    d->m_huff_count[0][256] = 1;\n\n    tdefl_optimize_huffman_table(d, 0, TDEFL_MAX_HUFF_SYMBOLS_0, 15, MZ_FALSE);\n    tdefl_optimize_huffman_table(d, 1, TDEFL_MAX_HUFF_SYMBOLS_1, 15, MZ_FALSE);\n\n    for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--)\n        if (d->m_huff_code_sizes[0][num_lit_codes - 1])\n            break;\n    for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--)\n        if (d->m_huff_code_sizes[1][num_dist_codes - 1])\n            break;\n\n    memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], num_lit_codes);\n    memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], num_dist_codes);\n    total_code_sizes_to_pack = num_lit_codes + num_dist_codes;\n    num_packed_code_sizes = 0;\n    rle_z_count = 0;\n    rle_repeat_count = 0;\n\n    memset(&d->m_huff_count[2][0], 0, sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2);\n    for (i = 0; i < total_code_sizes_to_pack; i++)\n    {\n        mz_uint8 code_size = code_sizes_to_pack[i];\n        if (!code_size)\n        {\n            TDEFL_RLE_PREV_CODE_SIZE();\n            if (++rle_z_count == 138)\n            {\n                TDEFL_RLE_ZERO_CODE_SIZE();\n            }\n        }\n        else\n        {\n            TDEFL_RLE_ZERO_CODE_SIZE();\n            if (code_size != prev_code_size)\n            {\n                TDEFL_RLE_PREV_CODE_SIZE();\n                d->m_huff_count[2][code_size] = (mz_uint16)(d->m_huff_count[2][code_size] + 1);\n                packed_code_sizes[num_packed_code_sizes++] = code_size;\n            }\n            else if (++rle_repeat_count == 6)\n            {\n                TDEFL_RLE_PREV_CODE_SIZE();\n            }\n        }\n        prev_code_size = code_size;\n    }\n    if (rle_repeat_count)\n    {\n        TDEFL_RLE_PREV_CODE_SIZE();\n    }\n    else\n    {\n        TDEFL_RLE_ZERO_CODE_SIZE();\n    }\n\n    tdefl_optimize_huffman_table(d, 2, TDEFL_MAX_HUFF_SYMBOLS_2, 7, MZ_FALSE);\n\n    TDEFL_PUT_BITS(2, 2);\n\n    TDEFL_PUT_BITS(num_lit_codes - 257, 5);\n    TDEFL_PUT_BITS(num_dist_codes - 1, 5);\n\n    for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--)\n        if (d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]])\n            break;\n    num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1));\n    TDEFL_PUT_BITS(num_bit_lengths - 4, 4);\n    for (i = 0; (int)i < num_bit_lengths; i++)\n        TDEFL_PUT_BITS(d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3);\n\n    for (packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes;)\n    {\n        mz_uint code = packed_code_sizes[packed_code_sizes_index++];\n        MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2);\n        TDEFL_PUT_BITS(d->m_huff_codes[2][code], d->m_huff_code_sizes[2][code]);\n        if (code >= 16)\n            TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], \"\\02\\03\\07\"[code - 16]);\n    }\n}\n\nstatic void tdefl_start_static_block(tdefl_compressor *d)\n{\n    mz_uint i;\n    mz_uint8 *p = &d->m_huff_code_sizes[0][0];\n\n    for (i = 0; i <= 143; ++i)\n        *p++ = 8;\n    for (; i <= 255; ++i)\n        *p++ = 9;\n    for (; i <= 279; ++i)\n        *p++ = 7;\n    for (; i <= 287; ++i)\n        *p++ = 8;\n\n    memset(d->m_huff_code_sizes[1], 5, 32);\n\n    tdefl_optimize_huffman_table(d, 0, 288, 15, MZ_TRUE);\n    tdefl_optimize_huffman_table(d, 1, 32, 15, MZ_TRUE);\n\n    TDEFL_PUT_BITS(1, 2);\n}\n\nstatic const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };\n\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS\nstatic mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)\n{\n    mz_uint flags;\n    mz_uint8 *pLZ_codes;\n    mz_uint8 *pOutput_buf = d->m_pOutput_buf;\n    mz_uint8 *pLZ_code_buf_end = d->m_pLZ_code_buf;\n    mz_uint64 bit_buffer = d->m_bit_buffer;\n    mz_uint bits_in = d->m_bits_in;\n\n#define TDEFL_PUT_BITS_FAST(b, l)                    \\\n    {                                                \\\n        bit_buffer |= (((mz_uint64)(b)) << bits_in); \\\n        bits_in += (l);                              \\\n    }\n\n    flags = 1;\n    for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1)\n    {\n        if (flags == 1)\n            flags = *pLZ_codes++ | 0x100;\n\n        if (flags & 1)\n        {\n            mz_uint s0, s1, n0, n1, sym, num_extra_bits;\n            mz_uint match_len = pLZ_codes[0];\n            mz_uint match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8));\n            pLZ_codes += 3;\n\n            MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\n            TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\n            TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]);\n\n            /* This sequence coaxes MSVC into using cmov's vs. jmp's. */\n            s0 = s_tdefl_small_dist_sym[match_dist & 511];\n            n0 = s_tdefl_small_dist_extra[match_dist & 511];\n            s1 = s_tdefl_large_dist_sym[match_dist >> 8];\n            n1 = s_tdefl_large_dist_extra[match_dist >> 8];\n            sym = (match_dist < 512) ? s0 : s1;\n            num_extra_bits = (match_dist < 512) ? n0 : n1;\n\n            MZ_ASSERT(d->m_huff_code_sizes[1][sym]);\n            TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]);\n            TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits);\n        }\n        else\n        {\n            mz_uint lit = *pLZ_codes++;\n            MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\n            TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\n\n            if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end))\n            {\n                flags >>= 1;\n                lit = *pLZ_codes++;\n                MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\n                TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\n\n                if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end))\n                {\n                    flags >>= 1;\n                    lit = *pLZ_codes++;\n                    MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\n                    TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\n                }\n            }\n        }\n\n        if (pOutput_buf >= d->m_pOutput_buf_end)\n            return MZ_FALSE;\n\n        memcpy(pOutput_buf, &bit_buffer, sizeof(mz_uint64));\n        pOutput_buf += (bits_in >> 3);\n        bit_buffer >>= (bits_in & ~7);\n        bits_in &= 7;\n    }\n\n#undef TDEFL_PUT_BITS_FAST\n\n    d->m_pOutput_buf = pOutput_buf;\n    d->m_bits_in = 0;\n    d->m_bit_buffer = 0;\n\n    while (bits_in)\n    {\n        mz_uint32 n = MZ_MIN(bits_in, 16);\n        TDEFL_PUT_BITS((mz_uint)bit_buffer & mz_bitmasks[n], n);\n        bit_buffer >>= n;\n        bits_in -= n;\n    }\n\n    TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]);\n\n    return (d->m_pOutput_buf < d->m_pOutput_buf_end);\n}\n#else\nstatic mz_bool tdefl_compress_lz_codes(tdefl_compressor *d)\n{\n    mz_uint flags;\n    mz_uint8 *pLZ_codes;\n\n    flags = 1;\n    for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; flags >>= 1)\n    {\n        if (flags == 1)\n            flags = *pLZ_codes++ | 0x100;\n        if (flags & 1)\n        {\n            mz_uint sym, num_extra_bits;\n            mz_uint match_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8));\n            pLZ_codes += 3;\n\n            MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\n            TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]);\n            TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]);\n\n            if (match_dist < 512)\n            {\n                sym = s_tdefl_small_dist_sym[match_dist];\n                num_extra_bits = s_tdefl_small_dist_extra[match_dist];\n            }\n            else\n            {\n                sym = s_tdefl_large_dist_sym[match_dist >> 8];\n                num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8];\n            }\n            MZ_ASSERT(d->m_huff_code_sizes[1][sym]);\n            TDEFL_PUT_BITS(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]);\n            TDEFL_PUT_BITS(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits);\n        }\n        else\n        {\n            mz_uint lit = *pLZ_codes++;\n            MZ_ASSERT(d->m_huff_code_sizes[0][lit]);\n            TDEFL_PUT_BITS(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]);\n        }\n    }\n\n    TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]);\n\n    return (d->m_pOutput_buf < d->m_pOutput_buf_end);\n}\n#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS */\n\nstatic mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block)\n{\n    if (static_block)\n        tdefl_start_static_block(d);\n    else\n        tdefl_start_dynamic_block(d);\n    return tdefl_compress_lz_codes(d);\n}\n\nstatic const mz_uint s_tdefl_num_probes[11];\n\nstatic int tdefl_flush_block(tdefl_compressor *d, int flush)\n{\n    mz_uint saved_bit_buf, saved_bits_in;\n    mz_uint8 *pSaved_output_buf;\n    mz_bool comp_block_succeeded = MZ_FALSE;\n    int n, use_raw_block = ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size;\n    mz_uint8 *pOutput_buf_start = ((d->m_pPut_buf_func == NULL) && ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) : d->m_output_buf;\n\n    d->m_pOutput_buf = pOutput_buf_start;\n    d->m_pOutput_buf_end = d->m_pOutput_buf + TDEFL_OUT_BUF_SIZE - 16;\n\n    MZ_ASSERT(!d->m_output_flush_remaining);\n    d->m_output_flush_ofs = 0;\n    d->m_output_flush_remaining = 0;\n\n    *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> d->m_num_flags_left);\n    d->m_pLZ_code_buf -= (d->m_num_flags_left == 8);\n\n    if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index))\n    {\n        const mz_uint8 cmf = 0x78;\n        mz_uint8 flg, flevel = 3;\n        mz_uint header, i, mz_un = sizeof(s_tdefl_num_probes) / sizeof(mz_uint);\n\n        /* Determine compression level by reversing the process in tdefl_create_comp_flags_from_zip_params() */\n        for (i = 0; i < mz_un; i++)\n            if (s_tdefl_num_probes[i] == (d->m_flags & 0xFFF)) break;\n\n        if (i < 2)\n            flevel = 0;\n        else if (i < 6)\n            flevel = 1;\n        else if (i == 6)\n            flevel = 2;\n\n        header = cmf << 8 | (flevel << 6);\n        header += 31 - (header % 31);\n        flg = header & 0xFF;\n\n        TDEFL_PUT_BITS(cmf, 8);\n        TDEFL_PUT_BITS(flg, 8);\n    }\n\n    TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1);\n\n    pSaved_output_buf = d->m_pOutput_buf;\n    saved_bit_buf = d->m_bit_buffer;\n    saved_bits_in = d->m_bits_in;\n\n    if (!use_raw_block)\n        comp_block_succeeded = tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || (d->m_total_lz_bytes < 48));\n\n    /* If the block gets expanded, forget the current contents of the output buffer and send a raw block instead. */\n    if (((use_raw_block) || ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= d->m_total_lz_bytes))) &&\n        ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size))\n    {\n        mz_uint i;\n        d->m_pOutput_buf = pSaved_output_buf;\n        d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in;\n        TDEFL_PUT_BITS(0, 2);\n        if (d->m_bits_in)\n        {\n            TDEFL_PUT_BITS(0, 8 - d->m_bits_in);\n        }\n        for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF)\n        {\n            TDEFL_PUT_BITS(d->m_total_lz_bytes & 0xFFFF, 16);\n        }\n        for (i = 0; i < d->m_total_lz_bytes; ++i)\n        {\n            TDEFL_PUT_BITS(d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], 8);\n        }\n    }\n    /* Check for the extremely unlikely (if not impossible) case of the compressed block not fitting into the output buffer when using dynamic codes. */\n    else if (!comp_block_succeeded)\n    {\n        d->m_pOutput_buf = pSaved_output_buf;\n        d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in;\n        tdefl_compress_block(d, MZ_TRUE);\n    }\n\n    if (flush)\n    {\n        if (flush == TDEFL_FINISH)\n        {\n            if (d->m_bits_in)\n            {\n                TDEFL_PUT_BITS(0, 8 - d->m_bits_in);\n            }\n            if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER)\n            {\n                mz_uint i, a = d->m_adler32;\n                for (i = 0; i < 4; i++)\n                {\n                    TDEFL_PUT_BITS((a >> 24) & 0xFF, 8);\n                    a <<= 8;\n                }\n            }\n        }\n        else\n        {\n            mz_uint i, z = 0;\n            TDEFL_PUT_BITS(0, 3);\n            if (d->m_bits_in)\n            {\n                TDEFL_PUT_BITS(0, 8 - d->m_bits_in);\n            }\n            for (i = 2; i; --i, z ^= 0xFFFF)\n            {\n                TDEFL_PUT_BITS(z & 0xFFFF, 16);\n            }\n        }\n    }\n\n    MZ_ASSERT(d->m_pOutput_buf < d->m_pOutput_buf_end);\n\n    memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0);\n    memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1);\n\n    d->m_pLZ_code_buf = d->m_lz_code_buf + 1;\n    d->m_pLZ_flags = d->m_lz_code_buf;\n    d->m_num_flags_left = 8;\n    d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes;\n    d->m_total_lz_bytes = 0;\n    d->m_block_index++;\n\n    if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0)\n    {\n        if (d->m_pPut_buf_func)\n        {\n            *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf;\n            if (!(*d->m_pPut_buf_func)(d->m_output_buf, n, d->m_pPut_buf_user))\n                return (d->m_prev_return_status = TDEFL_STATUS_PUT_BUF_FAILED);\n        }\n        else if (pOutput_buf_start == d->m_output_buf)\n        {\n            int bytes_to_copy = (int)MZ_MIN((size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs));\n            memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, bytes_to_copy);\n            d->m_out_buf_ofs += bytes_to_copy;\n            if ((n -= bytes_to_copy) != 0)\n            {\n                d->m_output_flush_ofs = bytes_to_copy;\n                d->m_output_flush_remaining = n;\n            }\n        }\n        else\n        {\n            d->m_out_buf_ofs += n;\n        }\n    }\n\n    return d->m_output_flush_remaining;\n}\n\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES\n#ifdef MINIZ_UNALIGNED_USE_MEMCPY\nstatic mz_uint16 TDEFL_READ_UNALIGNED_WORD(const mz_uint8* p)\n{\n\tmz_uint16 ret;\n\tmemcpy(&ret, p, sizeof(mz_uint16));\n\treturn ret;\n}\nstatic mz_uint16 TDEFL_READ_UNALIGNED_WORD2(const mz_uint16* p)\n{\n\tmz_uint16 ret;\n\tmemcpy(&ret, p, sizeof(mz_uint16));\n\treturn ret;\n}\n#else\n#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16 *)(p)\n#define TDEFL_READ_UNALIGNED_WORD2(p) *(const mz_uint16 *)(p)\n#endif\nstatic MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len)\n{\n    mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len;\n    mz_uint num_probes_left = d->m_max_probes[match_len >= 32];\n    const mz_uint16 *s = (const mz_uint16 *)(d->m_dict + pos), *p, *q;\n    mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD2(s);\n    MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN);\n    if (max_match_len <= match_len)\n        return;\n    for (;;)\n    {\n        for (;;)\n        {\n            if (--num_probes_left == 0)\n                return;\n#define TDEFL_PROBE                                                                             \\\n    next_probe_pos = d->m_next[probe_pos];                                                      \\\n    if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \\\n        return;                                                                                 \\\n    probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK;                                       \\\n    if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01)                \\\n        break;\n            TDEFL_PROBE;\n            TDEFL_PROBE;\n            TDEFL_PROBE;\n        }\n        if (!dist)\n            break;\n        q = (const mz_uint16 *)(d->m_dict + probe_pos);\n        if (TDEFL_READ_UNALIGNED_WORD2(q) != s01)\n            continue;\n        p = s;\n        probe_len = 32;\n        do\n        {\n        } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) &&\n                 (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0));\n        if (!probe_len)\n        {\n            *pMatch_dist = dist;\n            *pMatch_len = MZ_MIN(max_match_len, (mz_uint)TDEFL_MAX_MATCH_LEN);\n            break;\n        }\n        else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q)) > match_len)\n        {\n            *pMatch_dist = dist;\n            if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len)\n                break;\n            c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]);\n        }\n    }\n}\n#else\nstatic MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len)\n{\n    mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len;\n    mz_uint num_probes_left = d->m_max_probes[match_len >= 32];\n    const mz_uint8 *s = d->m_dict + pos, *p, *q;\n    mz_uint8 c0 = d->m_dict[pos + match_len], c1 = d->m_dict[pos + match_len - 1];\n    MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN);\n    if (max_match_len <= match_len)\n        return;\n    for (;;)\n    {\n        for (;;)\n        {\n            if (--num_probes_left == 0)\n                return;\n#define TDEFL_PROBE                                                                               \\\n    next_probe_pos = d->m_next[probe_pos];                                                        \\\n    if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist))   \\\n        return;                                                                                   \\\n    probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK;                                         \\\n    if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) \\\n        break;\n            TDEFL_PROBE;\n            TDEFL_PROBE;\n            TDEFL_PROBE;\n        }\n        if (!dist)\n            break;\n        p = s;\n        q = d->m_dict + probe_pos;\n        for (probe_len = 0; probe_len < max_match_len; probe_len++)\n            if (*p++ != *q++)\n                break;\n        if (probe_len > match_len)\n        {\n            *pMatch_dist = dist;\n            if ((*pMatch_len = match_len = probe_len) == max_match_len)\n                return;\n            c0 = d->m_dict[pos + match_len];\n            c1 = d->m_dict[pos + match_len - 1];\n        }\n    }\n}\n#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES */\n\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\n#ifdef MINIZ_UNALIGNED_USE_MEMCPY\nstatic mz_uint32 TDEFL_READ_UNALIGNED_WORD32(const mz_uint8* p)\n{\n\tmz_uint32 ret;\n\tmemcpy(&ret, p, sizeof(mz_uint32));\n\treturn ret;\n}\n#else\n#define TDEFL_READ_UNALIGNED_WORD32(p) *(const mz_uint32 *)(p)\n#endif\nstatic mz_bool tdefl_compress_fast(tdefl_compressor *d)\n{\n    /* Faster, minimally featured LZRW1-style match+parse loop with better register utilization. Intended for applications where raw throughput is valued more highly than ratio. */\n    mz_uint lookahead_pos = d->m_lookahead_pos, lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, total_lz_bytes = d->m_total_lz_bytes, num_flags_left = d->m_num_flags_left;\n    mz_uint8 *pLZ_code_buf = d->m_pLZ_code_buf, *pLZ_flags = d->m_pLZ_flags;\n    mz_uint cur_pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK;\n\n    while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size)))\n    {\n        const mz_uint TDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096;\n        mz_uint dst_pos = (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK;\n        mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size);\n        d->m_src_buf_left -= num_bytes_to_process;\n        lookahead_size += num_bytes_to_process;\n\n        while (num_bytes_to_process)\n        {\n            mz_uint32 n = MZ_MIN(TDEFL_LZ_DICT_SIZE - dst_pos, num_bytes_to_process);\n            memcpy(d->m_dict + dst_pos, d->m_pSrc, n);\n            if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))\n                memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos));\n            d->m_pSrc += n;\n            dst_pos = (dst_pos + n) & TDEFL_LZ_DICT_SIZE_MASK;\n            num_bytes_to_process -= n;\n        }\n\n        dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - lookahead_size, dict_size);\n        if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE))\n            break;\n\n        while (lookahead_size >= 4)\n        {\n            mz_uint cur_match_dist, cur_match_len = 1;\n            mz_uint8 *pCur_dict = d->m_dict + cur_pos;\n            mz_uint first_trigram = TDEFL_READ_UNALIGNED_WORD32(pCur_dict) & 0xFFFFFF;\n            mz_uint hash = (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & TDEFL_LEVEL1_HASH_SIZE_MASK;\n            mz_uint probe_pos = d->m_hash[hash];\n            d->m_hash[hash] = (mz_uint16)lookahead_pos;\n\n            if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((TDEFL_READ_UNALIGNED_WORD32(d->m_dict + (probe_pos &= TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram))\n            {\n                const mz_uint16 *p = (const mz_uint16 *)pCur_dict;\n                const mz_uint16 *q = (const mz_uint16 *)(d->m_dict + probe_pos);\n                mz_uint32 probe_len = 32;\n                do\n                {\n                } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) &&\n                         (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0));\n                cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q);\n                if (!probe_len)\n                    cur_match_len = cur_match_dist ? TDEFL_MAX_MATCH_LEN : 0;\n\n                if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || ((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U)))\n                {\n                    cur_match_len = 1;\n                    *pLZ_code_buf++ = (mz_uint8)first_trigram;\n                    *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\n                    d->m_huff_count[0][(mz_uint8)first_trigram]++;\n                }\n                else\n                {\n                    mz_uint32 s0, s1;\n                    cur_match_len = MZ_MIN(cur_match_len, lookahead_size);\n\n                    MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 1) && (cur_match_dist <= TDEFL_LZ_DICT_SIZE));\n\n                    cur_match_dist--;\n\n                    pLZ_code_buf[0] = (mz_uint8)(cur_match_len - TDEFL_MIN_MATCH_LEN);\n#ifdef MINIZ_UNALIGNED_USE_MEMCPY\n\t\t\t\t\tmemcpy(&pLZ_code_buf[1], &cur_match_dist, sizeof(cur_match_dist));\n#else\n                    *(mz_uint16 *)(&pLZ_code_buf[1]) = (mz_uint16)cur_match_dist;\n#endif\n                    pLZ_code_buf += 3;\n                    *pLZ_flags = (mz_uint8)((*pLZ_flags >> 1) | 0x80);\n\n                    s0 = s_tdefl_small_dist_sym[cur_match_dist & 511];\n                    s1 = s_tdefl_large_dist_sym[cur_match_dist >> 8];\n                    d->m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++;\n\n                    d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - TDEFL_MIN_MATCH_LEN]]++;\n                }\n            }\n            else\n            {\n                *pLZ_code_buf++ = (mz_uint8)first_trigram;\n                *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\n                d->m_huff_count[0][(mz_uint8)first_trigram]++;\n            }\n\n            if (--num_flags_left == 0)\n            {\n                num_flags_left = 8;\n                pLZ_flags = pLZ_code_buf++;\n            }\n\n            total_lz_bytes += cur_match_len;\n            lookahead_pos += cur_match_len;\n            dict_size = MZ_MIN(dict_size + cur_match_len, (mz_uint)TDEFL_LZ_DICT_SIZE);\n            cur_pos = (cur_pos + cur_match_len) & TDEFL_LZ_DICT_SIZE_MASK;\n            MZ_ASSERT(lookahead_size >= cur_match_len);\n            lookahead_size -= cur_match_len;\n\n            if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8])\n            {\n                int n;\n                d->m_lookahead_pos = lookahead_pos;\n                d->m_lookahead_size = lookahead_size;\n                d->m_dict_size = dict_size;\n                d->m_total_lz_bytes = total_lz_bytes;\n                d->m_pLZ_code_buf = pLZ_code_buf;\n                d->m_pLZ_flags = pLZ_flags;\n                d->m_num_flags_left = num_flags_left;\n                if ((n = tdefl_flush_block(d, 0)) != 0)\n                    return (n < 0) ? MZ_FALSE : MZ_TRUE;\n                total_lz_bytes = d->m_total_lz_bytes;\n                pLZ_code_buf = d->m_pLZ_code_buf;\n                pLZ_flags = d->m_pLZ_flags;\n                num_flags_left = d->m_num_flags_left;\n            }\n        }\n\n        while (lookahead_size)\n        {\n            mz_uint8 lit = d->m_dict[cur_pos];\n\n            total_lz_bytes++;\n            *pLZ_code_buf++ = lit;\n            *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1);\n            if (--num_flags_left == 0)\n            {\n                num_flags_left = 8;\n                pLZ_flags = pLZ_code_buf++;\n            }\n\n            d->m_huff_count[0][lit]++;\n\n            lookahead_pos++;\n            dict_size = MZ_MIN(dict_size + 1, (mz_uint)TDEFL_LZ_DICT_SIZE);\n            cur_pos = (cur_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK;\n            lookahead_size--;\n\n            if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8])\n            {\n                int n;\n                d->m_lookahead_pos = lookahead_pos;\n                d->m_lookahead_size = lookahead_size;\n                d->m_dict_size = dict_size;\n                d->m_total_lz_bytes = total_lz_bytes;\n                d->m_pLZ_code_buf = pLZ_code_buf;\n                d->m_pLZ_flags = pLZ_flags;\n                d->m_num_flags_left = num_flags_left;\n                if ((n = tdefl_flush_block(d, 0)) != 0)\n                    return (n < 0) ? MZ_FALSE : MZ_TRUE;\n                total_lz_bytes = d->m_total_lz_bytes;\n                pLZ_code_buf = d->m_pLZ_code_buf;\n                pLZ_flags = d->m_pLZ_flags;\n                num_flags_left = d->m_num_flags_left;\n            }\n        }\n    }\n\n    d->m_lookahead_pos = lookahead_pos;\n    d->m_lookahead_size = lookahead_size;\n    d->m_dict_size = dict_size;\n    d->m_total_lz_bytes = total_lz_bytes;\n    d->m_pLZ_code_buf = pLZ_code_buf;\n    d->m_pLZ_flags = pLZ_flags;\n    d->m_num_flags_left = num_flags_left;\n    return MZ_TRUE;\n}\n#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */\n\nstatic MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit)\n{\n    d->m_total_lz_bytes++;\n    *d->m_pLZ_code_buf++ = lit;\n    *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1);\n    if (--d->m_num_flags_left == 0)\n    {\n        d->m_num_flags_left = 8;\n        d->m_pLZ_flags = d->m_pLZ_code_buf++;\n    }\n    d->m_huff_count[0][lit]++;\n}\n\nstatic MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist)\n{\n    mz_uint32 s0, s1;\n\n    MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && (match_dist <= TDEFL_LZ_DICT_SIZE));\n\n    d->m_total_lz_bytes += match_len;\n\n    d->m_pLZ_code_buf[0] = (mz_uint8)(match_len - TDEFL_MIN_MATCH_LEN);\n\n    match_dist -= 1;\n    d->m_pLZ_code_buf[1] = (mz_uint8)(match_dist & 0xFF);\n    d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8);\n    d->m_pLZ_code_buf += 3;\n\n    *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80);\n    if (--d->m_num_flags_left == 0)\n    {\n        d->m_num_flags_left = 8;\n        d->m_pLZ_flags = d->m_pLZ_code_buf++;\n    }\n\n    s0 = s_tdefl_small_dist_sym[match_dist & 511];\n    s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127];\n    d->m_huff_count[1][(match_dist < 512) ? s0 : s1]++;\n    d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++;\n}\n\nstatic mz_bool tdefl_compress_normal(tdefl_compressor *d)\n{\n    const mz_uint8 *pSrc = d->m_pSrc;\n    size_t src_buf_left = d->m_src_buf_left;\n    tdefl_flush flush = d->m_flush;\n\n    while ((src_buf_left) || ((flush) && (d->m_lookahead_size)))\n    {\n        mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos;\n        /* Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN. */\n        if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1))\n        {\n            mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2;\n            mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK];\n            mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size);\n            const mz_uint8 *pSrc_end = pSrc ? pSrc + num_bytes_to_process : NULL;\n            src_buf_left -= num_bytes_to_process;\n            d->m_lookahead_size += num_bytes_to_process;\n            while (pSrc != pSrc_end)\n            {\n                mz_uint8 c = *pSrc++;\n                d->m_dict[dst_pos] = c;\n                if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))\n                    d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;\n                hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);\n                d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash];\n                d->m_hash[hash] = (mz_uint16)(ins_pos);\n                dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK;\n                ins_pos++;\n            }\n        }\n        else\n        {\n            while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))\n            {\n                mz_uint8 c = *pSrc++;\n                mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK;\n                src_buf_left--;\n                d->m_dict[dst_pos] = c;\n                if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1))\n                    d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c;\n                if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN)\n                {\n                    mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2;\n                    mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1);\n                    d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash];\n                    d->m_hash[hash] = (mz_uint16)(ins_pos);\n                }\n            }\n        }\n        d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size);\n        if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN))\n            break;\n\n        /* Simple lazy/greedy parsing state machine. */\n        len_to_move = 1;\n        cur_match_dist = 0;\n        cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1);\n        cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK;\n        if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS))\n        {\n            if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))\n            {\n                mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK];\n                cur_match_len = 0;\n                while (cur_match_len < d->m_lookahead_size)\n                {\n                    if (d->m_dict[cur_pos + cur_match_len] != c)\n                        break;\n                    cur_match_len++;\n                }\n                if (cur_match_len < TDEFL_MIN_MATCH_LEN)\n                    cur_match_len = 0;\n                else\n                    cur_match_dist = 1;\n            }\n        }\n        else\n        {\n            tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len);\n        }\n        if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5)))\n        {\n            cur_match_dist = cur_match_len = 0;\n        }\n        if (d->m_saved_match_len)\n        {\n            if (cur_match_len > d->m_saved_match_len)\n            {\n                tdefl_record_literal(d, (mz_uint8)d->m_saved_lit);\n                if (cur_match_len >= 128)\n                {\n                    tdefl_record_match(d, cur_match_len, cur_match_dist);\n                    d->m_saved_match_len = 0;\n                    len_to_move = cur_match_len;\n                }\n                else\n                {\n                    d->m_saved_lit = d->m_dict[cur_pos];\n                    d->m_saved_match_dist = cur_match_dist;\n                    d->m_saved_match_len = cur_match_len;\n                }\n            }\n            else\n            {\n                tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist);\n                len_to_move = d->m_saved_match_len - 1;\n                d->m_saved_match_len = 0;\n            }\n        }\n        else if (!cur_match_dist)\n            tdefl_record_literal(d, d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]);\n        else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128))\n        {\n            tdefl_record_match(d, cur_match_len, cur_match_dist);\n            len_to_move = cur_match_len;\n        }\n        else\n        {\n            d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)];\n            d->m_saved_match_dist = cur_match_dist;\n            d->m_saved_match_len = cur_match_len;\n        }\n        /* Move the lookahead forward by len_to_move bytes. */\n        d->m_lookahead_pos += len_to_move;\n        MZ_ASSERT(d->m_lookahead_size >= len_to_move);\n        d->m_lookahead_size -= len_to_move;\n        d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, (mz_uint)TDEFL_LZ_DICT_SIZE);\n        /* Check if it's time to flush the current LZ codes to the internal output buffer. */\n        if ((d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) ||\n            ((d->m_total_lz_bytes > 31 * 1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))))\n        {\n            int n;\n            d->m_pSrc = pSrc;\n            d->m_src_buf_left = src_buf_left;\n            if ((n = tdefl_flush_block(d, 0)) != 0)\n                return (n < 0) ? MZ_FALSE : MZ_TRUE;\n        }\n    }\n\n    d->m_pSrc = pSrc;\n    d->m_src_buf_left = src_buf_left;\n    return MZ_TRUE;\n}\n\nstatic tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d)\n{\n    if (d->m_pIn_buf_size)\n    {\n        *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf;\n    }\n\n    if (d->m_pOut_buf_size)\n    {\n        size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, d->m_output_flush_remaining);\n        memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf + d->m_output_flush_ofs, n);\n        d->m_output_flush_ofs += (mz_uint)n;\n        d->m_output_flush_remaining -= (mz_uint)n;\n        d->m_out_buf_ofs += n;\n\n        *d->m_pOut_buf_size = d->m_out_buf_ofs;\n    }\n\n    return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE : TDEFL_STATUS_OKAY;\n}\n\ntdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush)\n{\n    if (!d)\n    {\n        if (pIn_buf_size)\n            *pIn_buf_size = 0;\n        if (pOut_buf_size)\n            *pOut_buf_size = 0;\n        return TDEFL_STATUS_BAD_PARAM;\n    }\n\n    d->m_pIn_buf = pIn_buf;\n    d->m_pIn_buf_size = pIn_buf_size;\n    d->m_pOut_buf = pOut_buf;\n    d->m_pOut_buf_size = pOut_buf_size;\n    d->m_pSrc = (const mz_uint8 *)(pIn_buf);\n    d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0;\n    d->m_out_buf_ofs = 0;\n    d->m_flush = flush;\n\n    if (((d->m_pPut_buf_func != NULL) == ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || (d->m_prev_return_status != TDEFL_STATUS_OKAY) ||\n        (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf))\n    {\n        if (pIn_buf_size)\n            *pIn_buf_size = 0;\n        if (pOut_buf_size)\n            *pOut_buf_size = 0;\n        return (d->m_prev_return_status = TDEFL_STATUS_BAD_PARAM);\n    }\n    d->m_wants_to_finish |= (flush == TDEFL_FINISH);\n\n    if ((d->m_output_flush_remaining) || (d->m_finished))\n        return (d->m_prev_return_status = tdefl_flush_output_buffer(d));\n\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\n    if (((d->m_flags & TDEFL_MAX_PROBES_MASK) == 1) &&\n        ((d->m_flags & TDEFL_GREEDY_PARSING_FLAG) != 0) &&\n        ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | TDEFL_RLE_MATCHES)) == 0))\n    {\n        if (!tdefl_compress_fast(d))\n            return d->m_prev_return_status;\n    }\n    else\n#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */\n    {\n        if (!tdefl_compress_normal(d))\n            return d->m_prev_return_status;\n    }\n\n    if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && (pIn_buf))\n        d->m_adler32 = (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, d->m_pSrc - (const mz_uint8 *)pIn_buf);\n\n    if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && (!d->m_output_flush_remaining))\n    {\n        if (tdefl_flush_block(d, flush) < 0)\n            return d->m_prev_return_status;\n        d->m_finished = (flush == TDEFL_FINISH);\n        if (flush == TDEFL_FULL_FLUSH)\n        {\n            MZ_CLEAR_ARR(d->m_hash);\n            MZ_CLEAR_ARR(d->m_next);\n            d->m_dict_size = 0;\n        }\n    }\n\n    return (d->m_prev_return_status = tdefl_flush_output_buffer(d));\n}\n\ntdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush)\n{\n    MZ_ASSERT(d->m_pPut_buf_func);\n    return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush);\n}\n\ntdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\n{\n    d->m_pPut_buf_func = pPut_buf_func;\n    d->m_pPut_buf_user = pPut_buf_user;\n    d->m_flags = (mz_uint)(flags);\n    d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3;\n    d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0;\n    d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3;\n    if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG))\n        MZ_CLEAR_ARR(d->m_hash);\n    d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0;\n    d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0;\n    d->m_pLZ_code_buf = d->m_lz_code_buf + 1;\n    d->m_pLZ_flags = d->m_lz_code_buf;\n    *d->m_pLZ_flags = 0;\n    d->m_num_flags_left = 8;\n    d->m_pOutput_buf = d->m_output_buf;\n    d->m_pOutput_buf_end = d->m_output_buf;\n    d->m_prev_return_status = TDEFL_STATUS_OKAY;\n    d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0;\n    d->m_adler32 = 1;\n    d->m_pIn_buf = NULL;\n    d->m_pOut_buf = NULL;\n    d->m_pIn_buf_size = NULL;\n    d->m_pOut_buf_size = NULL;\n    d->m_flush = TDEFL_NO_FLUSH;\n    d->m_pSrc = NULL;\n    d->m_src_buf_left = 0;\n    d->m_out_buf_ofs = 0;\n    if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG))\n        MZ_CLEAR_ARR(d->m_dict);\n    memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0);\n    memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1);\n    return TDEFL_STATUS_OKAY;\n}\n\ntdefl_status tdefl_get_prev_return_status(tdefl_compressor *d)\n{\n    return d->m_prev_return_status;\n}\n\nmz_uint32 tdefl_get_adler32(tdefl_compressor *d)\n{\n    return d->m_adler32;\n}\n\nmz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\n{\n    tdefl_compressor *pComp;\n    mz_bool succeeded;\n    if (((buf_len) && (!pBuf)) || (!pPut_buf_func))\n        return MZ_FALSE;\n    pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor));\n    if (!pComp)\n        return MZ_FALSE;\n    succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == TDEFL_STATUS_OKAY);\n    succeeded = succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == TDEFL_STATUS_DONE);\n    MZ_FREE(pComp);\n    return succeeded;\n}\n\ntypedef struct\n{\n    size_t m_size, m_capacity;\n    mz_uint8 *m_pBuf;\n    mz_bool m_expandable;\n} tdefl_output_buffer;\n\nstatic mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser)\n{\n    tdefl_output_buffer *p = (tdefl_output_buffer *)pUser;\n    size_t new_size = p->m_size + len;\n    if (new_size > p->m_capacity)\n    {\n        size_t new_capacity = p->m_capacity;\n        mz_uint8 *pNew_buf;\n        if (!p->m_expandable)\n            return MZ_FALSE;\n        do\n        {\n            new_capacity = MZ_MAX(128U, new_capacity << 1U);\n        } while (new_size > new_capacity);\n        pNew_buf = (mz_uint8 *)MZ_REALLOC(p->m_pBuf, new_capacity);\n        if (!pNew_buf)\n            return MZ_FALSE;\n        p->m_pBuf = pNew_buf;\n        p->m_capacity = new_capacity;\n    }\n    memcpy((mz_uint8 *)p->m_pBuf + p->m_size, pBuf, len);\n    p->m_size = new_size;\n    return MZ_TRUE;\n}\n\nvoid *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)\n{\n    tdefl_output_buffer out_buf;\n    MZ_CLEAR_OBJ(out_buf);\n    if (!pOut_len)\n        return MZ_FALSE;\n    else\n        *pOut_len = 0;\n    out_buf.m_expandable = MZ_TRUE;\n    if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags))\n        return NULL;\n    *pOut_len = out_buf.m_size;\n    return out_buf.m_pBuf;\n}\n\nsize_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)\n{\n    tdefl_output_buffer out_buf;\n    MZ_CLEAR_OBJ(out_buf);\n    if (!pOut_buf)\n        return 0;\n    out_buf.m_pBuf = (mz_uint8 *)pOut_buf;\n    out_buf.m_capacity = out_buf_len;\n    if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags))\n        return 0;\n    return out_buf.m_size;\n}\n\nstatic const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };\n\n/* level may actually range from [0,10] (10 is a \"hidden\" max level, where we want a bit more compression and it's fine if throughput to fall off a cliff on some files). */\nmz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy)\n{\n    mz_uint comp_flags = s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0);\n    if (window_bits > 0)\n        comp_flags |= TDEFL_WRITE_ZLIB_HEADER;\n\n    if (!level)\n        comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS;\n    else if (strategy == MZ_FILTERED)\n        comp_flags |= TDEFL_FILTER_MATCHES;\n    else if (strategy == MZ_HUFFMAN_ONLY)\n        comp_flags &= ~TDEFL_MAX_PROBES_MASK;\n    else if (strategy == MZ_FIXED)\n        comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS;\n    else if (strategy == MZ_RLE)\n        comp_flags |= TDEFL_RLE_MATCHES;\n\n    return comp_flags;\n}\n\n#ifdef _MSC_VER\n#pragma warning(push)\n#pragma warning(disable : 4204) /* nonstandard extension used : non-constant aggregate initializer (also supported by GNU C and C99, so no big deal) */\n#endif\n\n/* Simple PNG writer function by Alex Evans, 2011. Released into the public domain: https://gist.github.com/908299, more context at\n http://altdevblogaday.org/2011/04/06/a-smaller-jpg-encoder/.\n This is actually a modification of Alex's original code so PNG files generated by this function pass pngcheck. */\nvoid *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip)\n{\n    /* Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was defined. */\n    static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 };\n    tdefl_compressor *pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor));\n    tdefl_output_buffer out_buf;\n    int i, bpl = w * num_chans, y, z;\n    mz_uint32 c;\n    *pLen_out = 0;\n    if (!pComp)\n        return NULL;\n    MZ_CLEAR_OBJ(out_buf);\n    out_buf.m_expandable = MZ_TRUE;\n    out_buf.m_capacity = 57 + MZ_MAX(64, (1 + bpl) * h);\n    if (NULL == (out_buf.m_pBuf = (mz_uint8 *)MZ_MALLOC(out_buf.m_capacity)))\n    {\n        MZ_FREE(pComp);\n        return NULL;\n    }\n    /* write dummy header */\n    for (z = 41; z; --z)\n        tdefl_output_buffer_putter(&z, 1, &out_buf);\n    /* compress image data */\n    tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER);\n    for (y = 0; y < h; ++y)\n    {\n        tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH);\n        tdefl_compress_buffer(pComp, (mz_uint8 *)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH);\n    }\n    if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE)\n    {\n        MZ_FREE(pComp);\n        MZ_FREE(out_buf.m_pBuf);\n        return NULL;\n    }\n    /* write real header */\n    *pLen_out = out_buf.m_size - 41;\n    {\n        static const mz_uint8 chans[] = { 0x00, 0x00, 0x04, 0x02, 0x06 };\n        mz_uint8 pnghdr[41] = { 0x89, 0x50, 0x4e, 0x47, 0x0d,\n                                0x0a, 0x1a, 0x0a, 0x00, 0x00,\n                                0x00, 0x0d, 0x49, 0x48, 0x44,\n                                0x52, 0x00, 0x00, 0x00, 0x00,\n                                0x00, 0x00, 0x00, 0x00, 0x08,\n                                0x00, 0x00, 0x00, 0x00, 0x00,\n                                0x00, 0x00, 0x00, 0x00, 0x00,\n                                0x00, 0x00, 0x49, 0x44, 0x41,\n                                0x54 };\n        pnghdr[18] = (mz_uint8)(w >> 8);\n        pnghdr[19] = (mz_uint8)w;\n        pnghdr[22] = (mz_uint8)(h >> 8);\n        pnghdr[23] = (mz_uint8)h;\n        pnghdr[25] = chans[num_chans];\n        pnghdr[33] = (mz_uint8)(*pLen_out >> 24);\n        pnghdr[34] = (mz_uint8)(*pLen_out >> 16);\n        pnghdr[35] = (mz_uint8)(*pLen_out >> 8);\n        pnghdr[36] = (mz_uint8)*pLen_out;\n        c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, pnghdr + 12, 17);\n        for (i = 0; i < 4; ++i, c <<= 8)\n            ((mz_uint8 *)(pnghdr + 29))[i] = (mz_uint8)(c >> 24);\n        memcpy(out_buf.m_pBuf, pnghdr, 41);\n    }\n    /* write footer (IDAT CRC-32, followed by IEND chunk) */\n    if (!tdefl_output_buffer_putter(\"\\0\\0\\0\\0\\0\\0\\0\\0\\x49\\x45\\x4e\\x44\\xae\\x42\\x60\\x82\", 16, &out_buf))\n    {\n        *pLen_out = 0;\n        MZ_FREE(pComp);\n        MZ_FREE(out_buf.m_pBuf);\n        return NULL;\n    }\n    c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, out_buf.m_pBuf + 41 - 4, *pLen_out + 4);\n    for (i = 0; i < 4; ++i, c <<= 8)\n        (out_buf.m_pBuf + out_buf.m_size - 16)[i] = (mz_uint8)(c >> 24);\n    /* compute final size of file, grab compressed data buffer and return */\n    *pLen_out += 57;\n    MZ_FREE(pComp);\n    return out_buf.m_pBuf;\n}\nvoid *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out)\n{\n    /* Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's where #defined out) */\n    return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, pLen_out, 6, MZ_FALSE);\n}\n\n#ifndef MINIZ_NO_MALLOC\n/* Allocate the tdefl_compressor and tinfl_decompressor structures in C so that */\n/* non-C language bindings to tdefL_ and tinfl_ API don't need to worry about */\n/* structure size and allocation mechanism. */\ntdefl_compressor *tdefl_compressor_alloc(void)\n{\n    return (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor));\n}\n\nvoid tdefl_compressor_free(tdefl_compressor *pComp)\n{\n    MZ_FREE(pComp);\n}\n#endif\n\n#ifdef _MSC_VER\n#pragma warning(pop)\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/\n /**************************************************************************\n *\n * Copyright 2013-2014 RAD Game Tools and Valve Software\n * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n **************************************************************************/\n\n\n\n#ifndef MINIZ_NO_INFLATE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------------- Low-level Decompression (completely independent from all compression API's) */\n\n#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l)\n#define TINFL_MEMSET(p, c, l) memset(p, c, l)\n\n#define TINFL_CR_BEGIN  \\\n    switch (r->m_state) \\\n    {                   \\\n        case 0:\n#define TINFL_CR_RETURN(state_index, result) \\\n    do                                       \\\n    {                                        \\\n        status = result;                     \\\n        r->m_state = state_index;            \\\n        goto common_exit;                    \\\n        case state_index:;                   \\\n    }                                        \\\n    MZ_MACRO_END\n#define TINFL_CR_RETURN_FOREVER(state_index, result) \\\n    do                                               \\\n    {                                                \\\n        for (;;)                                     \\\n        {                                            \\\n            TINFL_CR_RETURN(state_index, result);    \\\n        }                                            \\\n    }                                                \\\n    MZ_MACRO_END\n#define TINFL_CR_FINISH }\n\n#define TINFL_GET_BYTE(state_index, c)                                                                                                                           \\\n    do                                                                                                                                                           \\\n    {                                                                                                                                                            \\\n        while (pIn_buf_cur >= pIn_buf_end)                                                                                                                       \\\n        {                                                                                                                                                        \\\n            TINFL_CR_RETURN(state_index, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \\\n        }                                                                                                                                                        \\\n        c = *pIn_buf_cur++;                                                                                                                                      \\\n    }                                                                                                                                                            \\\n    MZ_MACRO_END\n\n#define TINFL_NEED_BITS(state_index, n)                \\\n    do                                                 \\\n    {                                                  \\\n        mz_uint c;                                     \\\n        TINFL_GET_BYTE(state_index, c);                \\\n        bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \\\n        num_bits += 8;                                 \\\n    } while (num_bits < (mz_uint)(n))\n#define TINFL_SKIP_BITS(state_index, n)      \\\n    do                                       \\\n    {                                        \\\n        if (num_bits < (mz_uint)(n))         \\\n        {                                    \\\n            TINFL_NEED_BITS(state_index, n); \\\n        }                                    \\\n        bit_buf >>= (n);                     \\\n        num_bits -= (n);                     \\\n    }                                        \\\n    MZ_MACRO_END\n#define TINFL_GET_BITS(state_index, b, n)    \\\n    do                                       \\\n    {                                        \\\n        if (num_bits < (mz_uint)(n))         \\\n        {                                    \\\n            TINFL_NEED_BITS(state_index, n); \\\n        }                                    \\\n        b = bit_buf & ((1 << (n)) - 1);      \\\n        bit_buf >>= (n);                     \\\n        num_bits -= (n);                     \\\n    }                                        \\\n    MZ_MACRO_END\n\n/* TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. */\n/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */\n/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */\n/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */\n#define TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree)                    \\\n    do                                                                         \\\n    {                                                                          \\\n        temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)];                \\\n        if (temp >= 0)                                                         \\\n        {                                                                      \\\n            code_len = temp >> 9;                                              \\\n            if ((code_len) && (num_bits >= code_len))                          \\\n                break;                                                         \\\n        }                                                                      \\\n        else if (num_bits > TINFL_FAST_LOOKUP_BITS)                            \\\n        {                                                                      \\\n            code_len = TINFL_FAST_LOOKUP_BITS;                                 \\\n            do                                                                 \\\n            {                                                                  \\\n                temp = pTree[~temp + ((bit_buf >> code_len++) & 1)];           \\\n            } while ((temp < 0) && (num_bits >= (code_len + 1)));              \\\n            if (temp >= 0)                                                     \\\n                break;                                                         \\\n        }                                                                      \\\n        TINFL_GET_BYTE(state_index, c);                                        \\\n        bit_buf |= (((tinfl_bit_buf_t)c) << num_bits);                         \\\n        num_bits += 8;                                                         \\\n    } while (num_bits < 15);\n\n/* TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read */\n/* beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully */\n/* decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. */\n/* The slow path is only executed at the very end of the input buffer. */\n/* v1.16: The original macro handled the case at the very end of the passed-in input buffer, but we also need to handle the case where the user passes in 1+zillion bytes */\n/* following the deflate data and our non-conservative read-ahead path won't kick in here on this code. This is much trickier. */\n#define TINFL_HUFF_DECODE(state_index, sym, pLookUp, pTree)                                                                         \\\n    do                                                                                                                              \\\n    {                                                                                                                               \\\n        int temp;                                                                                                                   \\\n        mz_uint code_len, c;                                                                                                        \\\n        if (num_bits < 15)                                                                                                          \\\n        {                                                                                                                           \\\n            if ((pIn_buf_end - pIn_buf_cur) < 2)                                                                                    \\\n            {                                                                                                                       \\\n                TINFL_HUFF_BITBUF_FILL(state_index, pLookUp, pTree);                                                                \\\n            }                                                                                                                       \\\n            else                                                                                                                    \\\n            {                                                                                                                       \\\n                bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \\\n                pIn_buf_cur += 2;                                                                                                   \\\n                num_bits += 16;                                                                                                     \\\n            }                                                                                                                       \\\n        }                                                                                                                           \\\n        if ((temp = pLookUp[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)                                                          \\\n            code_len = temp >> 9, temp &= 511;                                                                                      \\\n        else                                                                                                                        \\\n        {                                                                                                                           \\\n            code_len = TINFL_FAST_LOOKUP_BITS;                                                                                      \\\n            do                                                                                                                      \\\n            {                                                                                                                       \\\n                temp = pTree[~temp + ((bit_buf >> code_len++) & 1)];                                                                \\\n            } while (temp < 0);                                                                                                     \\\n        }                                                                                                                           \\\n        sym = temp;                                                                                                                 \\\n        bit_buf >>= code_len;                                                                                                       \\\n        num_bits -= code_len;                                                                                                       \\\n    }                                                                                                                               \\\n    MZ_MACRO_END\n\nstatic void tinfl_clear_tree(tinfl_decompressor *r)\n{\n    if (r->m_type == 0)\n        MZ_CLEAR_ARR(r->m_tree_0);\n    else if (r->m_type == 1)\n        MZ_CLEAR_ARR(r->m_tree_1);\n    else\n        MZ_CLEAR_ARR(r->m_tree_2);\n}\n\ntinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags)\n{\n    static const mz_uint16 s_length_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 };\n    static const mz_uint8 s_length_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 };\n    static const mz_uint16 s_dist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 };\n    static const mz_uint8 s_dist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 };\n    static const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };\n    static const mz_uint16 s_min_table_sizes[3] = { 257, 1, 4 };\n\n    mz_int16 *pTrees[3];\n    mz_uint8 *pCode_sizes[3];\n\n    tinfl_status status = TINFL_STATUS_FAILED;\n    mz_uint32 num_bits, dist, counter, num_extra;\n    tinfl_bit_buf_t bit_buf;\n    const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size;\n    mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next ? pOut_buf_next + *pOut_buf_size : NULL;\n    size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start;\n\n    /* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */\n    if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start))\n    {\n        *pIn_buf_size = *pOut_buf_size = 0;\n        return TINFL_STATUS_BAD_PARAM;\n    }\n\n    pTrees[0] = r->m_tree_0;\n    pTrees[1] = r->m_tree_1;\n    pTrees[2] = r->m_tree_2;\n    pCode_sizes[0] = r->m_code_size_0;\n    pCode_sizes[1] = r->m_code_size_1;\n    pCode_sizes[2] = r->m_code_size_2;\n\n    num_bits = r->m_num_bits;\n    bit_buf = r->m_bit_buf;\n    dist = r->m_dist;\n    counter = r->m_counter;\n    num_extra = r->m_num_extra;\n    dist_from_out_buf_start = r->m_dist_from_out_buf_start;\n    TINFL_CR_BEGIN\n\n    bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0;\n    r->m_z_adler32 = r->m_check_adler32 = 1;\n    if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)\n    {\n        TINFL_GET_BYTE(1, r->m_zhdr0);\n        TINFL_GET_BYTE(2, r->m_zhdr1);\n        counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8));\n        if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))\n            counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)((size_t)1 << (8U + (r->m_zhdr0 >> 4)))));\n        if (counter)\n        {\n            TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED);\n        }\n    }\n\n    do\n    {\n        TINFL_GET_BITS(3, r->m_final, 3);\n        r->m_type = r->m_final >> 1;\n        if (r->m_type == 0)\n        {\n            TINFL_SKIP_BITS(5, num_bits & 7);\n            for (counter = 0; counter < 4; ++counter)\n            {\n                if (num_bits)\n                    TINFL_GET_BITS(6, r->m_raw_header[counter], 8);\n                else\n                    TINFL_GET_BYTE(7, r->m_raw_header[counter]);\n            }\n            if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8))))\n            {\n                TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED);\n            }\n            while ((counter) && (num_bits))\n            {\n                TINFL_GET_BITS(51, dist, 8);\n                while (pOut_buf_cur >= pOut_buf_end)\n                {\n                    TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT);\n                }\n                *pOut_buf_cur++ = (mz_uint8)dist;\n                counter--;\n            }\n            while (counter)\n            {\n                size_t n;\n                while (pOut_buf_cur >= pOut_buf_end)\n                {\n                    TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT);\n                }\n                while (pIn_buf_cur >= pIn_buf_end)\n                {\n                    TINFL_CR_RETURN(38, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS);\n                }\n                n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter);\n                TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n);\n                pIn_buf_cur += n;\n                pOut_buf_cur += n;\n                counter -= (mz_uint)n;\n            }\n        }\n        else if (r->m_type == 3)\n        {\n            TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED);\n        }\n        else\n        {\n            if (r->m_type == 1)\n            {\n                mz_uint8 *p = r->m_code_size_0;\n                mz_uint i;\n                r->m_table_sizes[0] = 288;\n                r->m_table_sizes[1] = 32;\n                TINFL_MEMSET(r->m_code_size_1, 5, 32);\n                for (i = 0; i <= 143; ++i)\n                    *p++ = 8;\n                for (; i <= 255; ++i)\n                    *p++ = 9;\n                for (; i <= 279; ++i)\n                    *p++ = 7;\n                for (; i <= 287; ++i)\n                    *p++ = 8;\n            }\n            else\n            {\n                for (counter = 0; counter < 3; counter++)\n                {\n                    TINFL_GET_BITS(11, r->m_table_sizes[counter], \"\\05\\05\\04\"[counter]);\n                    r->m_table_sizes[counter] += s_min_table_sizes[counter];\n                }\n                MZ_CLEAR_ARR(r->m_code_size_2);\n                for (counter = 0; counter < r->m_table_sizes[2]; counter++)\n                {\n                    mz_uint s;\n                    TINFL_GET_BITS(14, s, 3);\n                    r->m_code_size_2[s_length_dezigzag[counter]] = (mz_uint8)s;\n                }\n                r->m_table_sizes[2] = 19;\n            }\n            for (; (int)r->m_type >= 0; r->m_type--)\n            {\n                int tree_next, tree_cur;\n                mz_int16 *pLookUp;\n                mz_int16 *pTree;\n                mz_uint8 *pCode_size;\n                mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16];\n                pLookUp = r->m_look_up[r->m_type];\n                pTree = pTrees[r->m_type];\n                pCode_size = pCode_sizes[r->m_type];\n                MZ_CLEAR_ARR(total_syms);\n                TINFL_MEMSET(pLookUp, 0, sizeof(r->m_look_up[0]));\n                tinfl_clear_tree(r);\n                for (i = 0; i < r->m_table_sizes[r->m_type]; ++i)\n                    total_syms[pCode_size[i]]++;\n                used_syms = 0, total = 0;\n                next_code[0] = next_code[1] = 0;\n                for (i = 1; i <= 15; ++i)\n                {\n                    used_syms += total_syms[i];\n                    next_code[i + 1] = (total = ((total + total_syms[i]) << 1));\n                }\n                if ((65536 != total) && (used_syms > 1))\n                {\n                    TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED);\n                }\n                for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index)\n                {\n                    mz_uint rev_code = 0, l, cur_code, code_size = pCode_size[sym_index];\n                    if (!code_size)\n                        continue;\n                    cur_code = next_code[code_size]++;\n                    for (l = code_size; l > 0; l--, cur_code >>= 1)\n                        rev_code = (rev_code << 1) | (cur_code & 1);\n                    if (code_size <= TINFL_FAST_LOOKUP_BITS)\n                    {\n                        mz_int16 k = (mz_int16)((code_size << 9) | sym_index);\n                        while (rev_code < TINFL_FAST_LOOKUP_SIZE)\n                        {\n                            pLookUp[rev_code] = k;\n                            rev_code += (1 << code_size);\n                        }\n                        continue;\n                    }\n                    if (0 == (tree_cur = pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)]))\n                    {\n                        pLookUp[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next;\n                        tree_cur = tree_next;\n                        tree_next -= 2;\n                    }\n                    rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1);\n                    for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--)\n                    {\n                        tree_cur -= ((rev_code >>= 1) & 1);\n                        if (!pTree[-tree_cur - 1])\n                        {\n                            pTree[-tree_cur - 1] = (mz_int16)tree_next;\n                            tree_cur = tree_next;\n                            tree_next -= 2;\n                        }\n                        else\n                            tree_cur = pTree[-tree_cur - 1];\n                    }\n                    tree_cur -= ((rev_code >>= 1) & 1);\n                    pTree[-tree_cur - 1] = (mz_int16)sym_index;\n                }\n                if (r->m_type == 2)\n                {\n                    for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);)\n                    {\n                        mz_uint s;\n                        TINFL_HUFF_DECODE(16, dist, r->m_look_up[2], r->m_tree_2);\n                        if (dist < 16)\n                        {\n                            r->m_len_codes[counter++] = (mz_uint8)dist;\n                            continue;\n                        }\n                        if ((dist == 16) && (!counter))\n                        {\n                            TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED);\n                        }\n                        num_extra = \"\\02\\03\\07\"[dist - 16];\n                        TINFL_GET_BITS(18, s, num_extra);\n                        s += \"\\03\\03\\013\"[dist - 16];\n                        TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s);\n                        counter += s;\n                    }\n                    if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter)\n                    {\n                        TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED);\n                    }\n                    TINFL_MEMCPY(r->m_code_size_0, r->m_len_codes, r->m_table_sizes[0]);\n                    TINFL_MEMCPY(r->m_code_size_1, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]);\n                }\n            }\n            for (;;)\n            {\n                mz_uint8 *pSrc;\n                for (;;)\n                {\n                    if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2))\n                    {\n                        TINFL_HUFF_DECODE(23, counter, r->m_look_up[0], r->m_tree_0);\n                        if (counter >= 256)\n                            break;\n                        while (pOut_buf_cur >= pOut_buf_end)\n                        {\n                            TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT);\n                        }\n                        *pOut_buf_cur++ = (mz_uint8)counter;\n                    }\n                    else\n                    {\n                        int sym2;\n                        mz_uint code_len;\n#if TINFL_USE_64BIT_BITBUF\n                        if (num_bits < 30)\n                        {\n                            bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits);\n                            pIn_buf_cur += 4;\n                            num_bits += 32;\n                        }\n#else\n                        if (num_bits < 15)\n                        {\n                            bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits);\n                            pIn_buf_cur += 2;\n                            num_bits += 16;\n                        }\n#endif\n                        if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)\n                            code_len = sym2 >> 9;\n                        else\n                        {\n                            code_len = TINFL_FAST_LOOKUP_BITS;\n                            do\n                            {\n                                sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)];\n                            } while (sym2 < 0);\n                        }\n                        counter = sym2;\n                        bit_buf >>= code_len;\n                        num_bits -= code_len;\n                        if (counter & 256)\n                            break;\n\n#if !TINFL_USE_64BIT_BITBUF\n                        if (num_bits < 15)\n                        {\n                            bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits);\n                            pIn_buf_cur += 2;\n                            num_bits += 16;\n                        }\n#endif\n                        if ((sym2 = r->m_look_up[0][bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0)\n                            code_len = sym2 >> 9;\n                        else\n                        {\n                            code_len = TINFL_FAST_LOOKUP_BITS;\n                            do\n                            {\n                                sym2 = r->m_tree_0[~sym2 + ((bit_buf >> code_len++) & 1)];\n                            } while (sym2 < 0);\n                        }\n                        bit_buf >>= code_len;\n                        num_bits -= code_len;\n\n                        pOut_buf_cur[0] = (mz_uint8)counter;\n                        if (sym2 & 256)\n                        {\n                            pOut_buf_cur++;\n                            counter = sym2;\n                            break;\n                        }\n                        pOut_buf_cur[1] = (mz_uint8)sym2;\n                        pOut_buf_cur += 2;\n                    }\n                }\n                if ((counter &= 511) == 256)\n                    break;\n\n                num_extra = s_length_extra[counter - 257];\n                counter = s_length_base[counter - 257];\n                if (num_extra)\n                {\n                    mz_uint extra_bits;\n                    TINFL_GET_BITS(25, extra_bits, num_extra);\n                    counter += extra_bits;\n                }\n\n                TINFL_HUFF_DECODE(26, dist, r->m_look_up[1], r->m_tree_1);\n                num_extra = s_dist_extra[dist];\n                dist = s_dist_base[dist];\n                if (num_extra)\n                {\n                    mz_uint extra_bits;\n                    TINFL_GET_BITS(27, extra_bits, num_extra);\n                    dist += extra_bits;\n                }\n\n                dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start;\n                if ((dist == 0 || dist > dist_from_out_buf_start || dist_from_out_buf_start == 0) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))\n                {\n                    TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED);\n                }\n\n                pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask);\n\n                if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end)\n                {\n                    while (counter--)\n                    {\n                        while (pOut_buf_cur >= pOut_buf_end)\n                        {\n                            TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT);\n                        }\n                        *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask];\n                    }\n                    continue;\n                }\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES\n                else if ((counter >= 9) && (counter <= dist))\n                {\n                    const mz_uint8 *pSrc_end = pSrc + (counter & ~7);\n                    do\n                    {\n#ifdef MINIZ_UNALIGNED_USE_MEMCPY\n\t\t\t\t\t\tmemcpy(pOut_buf_cur, pSrc, sizeof(mz_uint32)*2);\n#else\n                        ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0];\n                        ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1];\n#endif\n                        pOut_buf_cur += 8;\n                    } while ((pSrc += 8) < pSrc_end);\n                    if ((counter &= 7) < 3)\n                    {\n                        if (counter)\n                        {\n                            pOut_buf_cur[0] = pSrc[0];\n                            if (counter > 1)\n                                pOut_buf_cur[1] = pSrc[1];\n                            pOut_buf_cur += counter;\n                        }\n                        continue;\n                    }\n                }\n#endif\n                while(counter>2)\n                {\n                    pOut_buf_cur[0] = pSrc[0];\n                    pOut_buf_cur[1] = pSrc[1];\n                    pOut_buf_cur[2] = pSrc[2];\n                    pOut_buf_cur += 3;\n                    pSrc += 3;\n\t\t\t\t\tcounter -= 3;\n                }\n                if (counter > 0)\n                {\n                    pOut_buf_cur[0] = pSrc[0];\n                    if (counter > 1)\n                        pOut_buf_cur[1] = pSrc[1];\n                    pOut_buf_cur += counter;\n                }\n            }\n        }\n    } while (!(r->m_final & 1));\n\n    /* Ensure byte alignment and put back any bytes from the bitbuf if we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */\n    /* I'm being super conservative here. A number of simplifications can be made to the byte alignment part, and the Adler32 check shouldn't ever need to worry about reading from the bitbuf now. */\n    TINFL_SKIP_BITS(32, num_bits & 7);\n    while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8))\n    {\n        --pIn_buf_cur;\n        num_bits -= 8;\n    }\n    bit_buf &= ~(~(tinfl_bit_buf_t)0 << num_bits);\n    MZ_ASSERT(!num_bits); /* if this assert fires then we've read beyond the end of non-deflate/zlib streams with following data (such as gzip streams). */\n\n    if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER)\n    {\n        for (counter = 0; counter < 4; ++counter)\n        {\n            mz_uint s;\n            if (num_bits)\n                TINFL_GET_BITS(41, s, 8);\n            else\n                TINFL_GET_BYTE(42, s);\n            r->m_z_adler32 = (r->m_z_adler32 << 8) | s;\n        }\n    }\n    TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE);\n\n    TINFL_CR_FINISH\n\ncommon_exit:\n    /* As long as we aren't telling the caller that we NEED more input to make forward progress: */\n    /* Put back any bytes from the bitbuf in case we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */\n    /* We need to be very careful here to NOT push back any bytes we definitely know we need to make forward progress, though, or we'll lock the caller up into an inf loop. */\n    if ((status != TINFL_STATUS_NEEDS_MORE_INPUT) && (status != TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS))\n    {\n        while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8))\n        {\n            --pIn_buf_cur;\n            num_bits -= 8;\n        }\n    }\n    r->m_num_bits = num_bits;\n    r->m_bit_buf = bit_buf & ~(~(tinfl_bit_buf_t)0 << num_bits);\n    r->m_dist = dist;\n    r->m_counter = counter;\n    r->m_num_extra = num_extra;\n    r->m_dist_from_out_buf_start = dist_from_out_buf_start;\n    *pIn_buf_size = pIn_buf_cur - pIn_buf_next;\n    *pOut_buf_size = pOut_buf_cur - pOut_buf_next;\n    if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0))\n    {\n        const mz_uint8 *ptr = pOut_buf_next;\n        size_t buf_len = *pOut_buf_size;\n        mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16;\n        size_t block_len = buf_len % 5552;\n        while (buf_len)\n        {\n            for (i = 0; i + 7 < block_len; i += 8, ptr += 8)\n            {\n                s1 += ptr[0], s2 += s1;\n                s1 += ptr[1], s2 += s1;\n                s1 += ptr[2], s2 += s1;\n                s1 += ptr[3], s2 += s1;\n                s1 += ptr[4], s2 += s1;\n                s1 += ptr[5], s2 += s1;\n                s1 += ptr[6], s2 += s1;\n                s1 += ptr[7], s2 += s1;\n            }\n            for (; i < block_len; ++i)\n                s1 += *ptr++, s2 += s1;\n            s1 %= 65521U, s2 %= 65521U;\n            buf_len -= block_len;\n            block_len = 5552;\n        }\n        r->m_check_adler32 = (s2 << 16) + s1;\n        if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32))\n            status = TINFL_STATUS_ADLER32_MISMATCH;\n    }\n    return status;\n}\n\n/* Higher level helper functions. */\nvoid *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags)\n{\n    tinfl_decompressor decomp;\n    void *pBuf = NULL, *pNew_buf;\n    size_t src_buf_ofs = 0, out_buf_capacity = 0;\n    *pOut_len = 0;\n    tinfl_init(&decomp);\n    for (;;)\n    {\n        size_t src_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity;\n        tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf + src_buf_ofs, &src_buf_size, (mz_uint8 *)pBuf, pBuf ? (mz_uint8 *)pBuf + *pOut_len : NULL, &dst_buf_size,\n                                               (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);\n        if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT))\n        {\n            MZ_FREE(pBuf);\n            *pOut_len = 0;\n            return NULL;\n        }\n        src_buf_ofs += src_buf_size;\n        *pOut_len += dst_buf_size;\n        if (status == TINFL_STATUS_DONE)\n            break;\n        new_out_buf_capacity = out_buf_capacity * 2;\n        if (new_out_buf_capacity < 128)\n            new_out_buf_capacity = 128;\n        pNew_buf = MZ_REALLOC(pBuf, new_out_buf_capacity);\n        if (!pNew_buf)\n        {\n            MZ_FREE(pBuf);\n            *pOut_len = 0;\n            return NULL;\n        }\n        pBuf = pNew_buf;\n        out_buf_capacity = new_out_buf_capacity;\n    }\n    return pBuf;\n}\n\nsize_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags)\n{\n    tinfl_decompressor decomp;\n    tinfl_status status;\n    tinfl_init(&decomp);\n    status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf, &src_buf_len, (mz_uint8 *)pOut_buf, (mz_uint8 *)pOut_buf, &out_buf_len, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF);\n    return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED : out_buf_len;\n}\n\nint tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags)\n{\n    int result = 0;\n    tinfl_decompressor decomp;\n    mz_uint8 *pDict = (mz_uint8 *)MZ_MALLOC(TINFL_LZ_DICT_SIZE);\n    size_t in_buf_ofs = 0, dict_ofs = 0;\n    if (!pDict)\n        return TINFL_STATUS_FAILED;\n    memset(pDict,0,TINFL_LZ_DICT_SIZE);\n    tinfl_init(&decomp);\n    for (;;)\n    {\n        size_t in_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs;\n        tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pIn_buf + in_buf_ofs, &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size,\n                                               (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)));\n        in_buf_ofs += in_buf_size;\n        if ((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user)))\n            break;\n        if (status != TINFL_STATUS_HAS_MORE_OUTPUT)\n        {\n            result = (status == TINFL_STATUS_DONE);\n            break;\n        }\n        dict_ofs = (dict_ofs + dst_buf_size) & (TINFL_LZ_DICT_SIZE - 1);\n    }\n    MZ_FREE(pDict);\n    *pIn_buf_size = in_buf_ofs;\n    return result;\n}\n\n#ifndef MINIZ_NO_MALLOC\ntinfl_decompressor *tinfl_decompressor_alloc(void)\n{\n    tinfl_decompressor *pDecomp = (tinfl_decompressor *)MZ_MALLOC(sizeof(tinfl_decompressor));\n    if (pDecomp)\n        tinfl_init(pDecomp);\n    return pDecomp;\n}\n\nvoid tinfl_decompressor_free(tinfl_decompressor *pDecomp)\n{\n    MZ_FREE(pDecomp);\n}\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/\n /**************************************************************************\n *\n * Copyright 2013-2014 RAD Game Tools and Valve Software\n * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC\n * Copyright 2016 Martin Raiber\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n **************************************************************************/\n\n\n#ifndef MINIZ_NO_ARCHIVE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------------- .ZIP archive reading */\n\n#ifdef MINIZ_NO_STDIO\n#define MZ_FILE void *\n#else\n#include <sys/stat.h>\n\n#if defined(_MSC_VER) || defined(__MINGW64__)\n\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n\nstatic WCHAR* mz_utf8z_to_widechar(const char* str)\n{\n  int reqChars = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);\n  WCHAR* wStr = (WCHAR*)malloc(reqChars * sizeof(WCHAR));\n  MultiByteToWideChar(CP_UTF8, 0, str, -1, wStr, reqChars);\n  return wStr;\n}\n\nstatic FILE *mz_fopen(const char *pFilename, const char *pMode)\n{\n  WCHAR* wFilename = mz_utf8z_to_widechar(pFilename);\n  WCHAR* wMode = mz_utf8z_to_widechar(pMode);\n  FILE* pFile = NULL;\n  errno_t err = _wfopen_s(&pFile, wFilename, wMode);\n  free(wFilename);\n  free(wMode);\n  return err ? NULL : pFile;\n}\n\nstatic FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream)\n{\n  WCHAR* wPath = mz_utf8z_to_widechar(pPath);\n  WCHAR* wMode = mz_utf8z_to_widechar(pMode);\n  FILE* pFile = NULL;\n  errno_t err = _wfreopen_s(&pFile, wPath, wMode, pStream);\n  free(wPath);\n  free(wMode);\n  return err ? NULL : pFile;\n}\n\nstatic int mz_stat64(const char *path, struct __stat64 *buffer)\n{\n  WCHAR* wPath = mz_utf8z_to_widechar(path);\n  int res = _wstat64(wPath, buffer);\n  free(wPath);\n  return res;\n}\n\n#ifndef MINIZ_NO_TIME\n#include <sys/utime.h>\n#endif\n#define MZ_FOPEN mz_fopen\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#define MZ_FTELL64 _ftelli64\n#define MZ_FSEEK64 _fseeki64\n#define MZ_FILE_STAT_STRUCT _stat64\n#define MZ_FILE_STAT mz_stat64 \n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN mz_freopen\n#define MZ_DELETE_FILE remove\n\n#elif defined(__MINGW32__) || defined(__WATCOMC__)\n#ifndef MINIZ_NO_TIME\n#include <sys/utime.h>\n#endif\n#define MZ_FOPEN(f, m) fopen(f, m)\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#define MZ_FTELL64 _ftelli64\n#define MZ_FSEEK64 _fseeki64\n#define MZ_FILE_STAT_STRUCT stat\n#define MZ_FILE_STAT stat\n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN(f, m, s) freopen(f, m, s)\n#define MZ_DELETE_FILE remove\n\n#elif defined(__TINYC__)\n#ifndef MINIZ_NO_TIME\n#include <sys/utime.h>\n#endif\n#define MZ_FOPEN(f, m) fopen(f, m)\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#define MZ_FTELL64 ftell\n#define MZ_FSEEK64 fseek\n#define MZ_FILE_STAT_STRUCT stat\n#define MZ_FILE_STAT stat\n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN(f, m, s) freopen(f, m, s)\n#define MZ_DELETE_FILE remove\n\n#elif defined(__USE_LARGEFILE64) /* gcc, clang */\n#ifndef MINIZ_NO_TIME\n#include <utime.h>\n#endif\n#define MZ_FOPEN(f, m) fopen64(f, m)\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#define MZ_FTELL64 ftello64\n#define MZ_FSEEK64 fseeko64\n#define MZ_FILE_STAT_STRUCT stat64\n#define MZ_FILE_STAT stat64\n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN(p, m, s) freopen64(p, m, s)\n#define MZ_DELETE_FILE remove\n\n#elif defined(__APPLE__) || defined(__FreeBSD__)\n#ifndef MINIZ_NO_TIME\n#include <utime.h>\n#endif\n#define MZ_FOPEN(f, m) fopen(f, m)\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#define MZ_FTELL64 ftello\n#define MZ_FSEEK64 fseeko\n#define MZ_FILE_STAT_STRUCT stat\n#define MZ_FILE_STAT stat\n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN(p, m, s) freopen(p, m, s)\n#define MZ_DELETE_FILE remove\n\n#else\n#pragma message(\"Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.\")\n#ifndef MINIZ_NO_TIME\n#include <utime.h>\n#endif\n#define MZ_FOPEN(f, m) fopen(f, m)\n#define MZ_FCLOSE fclose\n#define MZ_FREAD fread\n#define MZ_FWRITE fwrite\n#ifdef __STRICT_ANSI__\n#define MZ_FTELL64 ftell\n#define MZ_FSEEK64 fseek\n#else\n#define MZ_FTELL64 ftello\n#define MZ_FSEEK64 fseeko\n#endif\n#define MZ_FILE_STAT_STRUCT stat\n#define MZ_FILE_STAT stat\n#define MZ_FFLUSH fflush\n#define MZ_FREOPEN(f, m, s) freopen(f, m, s)\n#define MZ_DELETE_FILE remove\n#endif /* #ifdef _MSC_VER */\n#endif /* #ifdef MINIZ_NO_STDIO */\n\n#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c))\n\n/* Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff. */\nenum\n{\n    /* ZIP archive identifiers and record sizes */\n    MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50,\n    MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50,\n    MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50,\n    MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30,\n    MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46,\n    MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22,\n\n    /* ZIP64 archive identifier and record sizes */\n    MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50,\n    MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50,\n    MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56,\n    MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20,\n    MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001,\n    MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50,\n    MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24,\n    MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16,\n\n    /* Central directory header record offsets */\n    MZ_ZIP_CDH_SIG_OFS = 0,\n    MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4,\n    MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6,\n    MZ_ZIP_CDH_BIT_FLAG_OFS = 8,\n    MZ_ZIP_CDH_METHOD_OFS = 10,\n    MZ_ZIP_CDH_FILE_TIME_OFS = 12,\n    MZ_ZIP_CDH_FILE_DATE_OFS = 14,\n    MZ_ZIP_CDH_CRC32_OFS = 16,\n    MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20,\n    MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24,\n    MZ_ZIP_CDH_FILENAME_LEN_OFS = 28,\n    MZ_ZIP_CDH_EXTRA_LEN_OFS = 30,\n    MZ_ZIP_CDH_COMMENT_LEN_OFS = 32,\n    MZ_ZIP_CDH_DISK_START_OFS = 34,\n    MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36,\n    MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38,\n    MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42,\n\n    /* Local directory header offsets */\n    MZ_ZIP_LDH_SIG_OFS = 0,\n    MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4,\n    MZ_ZIP_LDH_BIT_FLAG_OFS = 6,\n    MZ_ZIP_LDH_METHOD_OFS = 8,\n    MZ_ZIP_LDH_FILE_TIME_OFS = 10,\n    MZ_ZIP_LDH_FILE_DATE_OFS = 12,\n    MZ_ZIP_LDH_CRC32_OFS = 14,\n    MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18,\n    MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22,\n    MZ_ZIP_LDH_FILENAME_LEN_OFS = 26,\n    MZ_ZIP_LDH_EXTRA_LEN_OFS = 28,\n    MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR = 1 << 3,\n\n    /* End of central directory offsets */\n    MZ_ZIP_ECDH_SIG_OFS = 0,\n    MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4,\n    MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6,\n    MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8,\n    MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10,\n    MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12,\n    MZ_ZIP_ECDH_CDIR_OFS_OFS = 16,\n    MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20,\n\n    /* ZIP64 End of central directory locator offsets */\n    MZ_ZIP64_ECDL_SIG_OFS = 0,                    /* 4 bytes */\n    MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4,          /* 4 bytes */\n    MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8,  /* 8 bytes */\n    MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */\n\n    /* ZIP64 End of central directory header offsets */\n    MZ_ZIP64_ECDH_SIG_OFS = 0,                       /* 4 bytes */\n    MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4,            /* 8 bytes */\n    MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12,          /* 2 bytes */\n    MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14,           /* 2 bytes */\n    MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16,            /* 4 bytes */\n    MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20,            /* 4 bytes */\n    MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */\n    MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32,       /* 8 bytes */\n    MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40,                /* 8 bytes */\n    MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48,                 /* 8 bytes */\n    MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0,\n    MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10,\n    MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1,\n    MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32,\n    MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64,\n    MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192,\n    MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11\n};\n\ntypedef struct\n{\n    void *m_p;\n    size_t m_size, m_capacity;\n    mz_uint m_element_size;\n} mz_zip_array;\n\nstruct mz_zip_internal_state_tag\n{\n    mz_zip_array m_central_dir;\n    mz_zip_array m_central_dir_offsets;\n    mz_zip_array m_sorted_central_dir_offsets;\n\n    /* The flags passed in when the archive is initially opened. */\n    mz_uint32 m_init_flags;\n\n    /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc. */\n    mz_bool m_zip64;\n\n    /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64 will also be slammed to true too, even if we didn't find a zip64 end of central dir header, etc.) */\n    mz_bool m_zip64_has_extended_info_fields;\n\n    /* These fields are used by the file, FILE, memory, and memory/heap read/write helpers. */\n    MZ_FILE *m_pFile;\n    mz_uint64 m_file_archive_start_ofs;\n\n    void *m_pMem;\n    size_t m_mem_size;\n    size_t m_mem_capacity;\n};\n\n#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size\n\n#if defined(DEBUG) || defined(_DEBUG)\nstatic MZ_FORCEINLINE mz_uint mz_zip_array_range_check(const mz_zip_array *pArray, mz_uint index)\n{\n    MZ_ASSERT(index < pArray->m_size);\n    return index;\n}\n#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)]\n#else\n#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index]\n#endif\n\nstatic MZ_FORCEINLINE void mz_zip_array_init(mz_zip_array *pArray, mz_uint32 element_size)\n{\n    memset(pArray, 0, sizeof(mz_zip_array));\n    pArray->m_element_size = element_size;\n}\n\nstatic MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray)\n{\n    pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p);\n    memset(pArray, 0, sizeof(mz_zip_array));\n}\n\nstatic mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing)\n{\n    void *pNew_p;\n    size_t new_capacity = min_new_capacity;\n    MZ_ASSERT(pArray->m_element_size);\n    if (pArray->m_capacity >= min_new_capacity)\n        return MZ_TRUE;\n    if (growing)\n    {\n        new_capacity = MZ_MAX(1, pArray->m_capacity);\n        while (new_capacity < min_new_capacity)\n            new_capacity *= 2;\n    }\n    if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity)))\n        return MZ_FALSE;\n    pArray->m_p = pNew_p;\n    pArray->m_capacity = new_capacity;\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing)\n{\n    if (new_capacity > pArray->m_capacity)\n    {\n        if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing))\n            return MZ_FALSE;\n    }\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing)\n{\n    if (new_size > pArray->m_capacity)\n    {\n        if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing))\n            return MZ_FALSE;\n    }\n    pArray->m_size = new_size;\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n)\n{\n    return mz_zip_array_reserve(pZip, pArray, pArray->m_size + n, MZ_TRUE);\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n)\n{\n    size_t orig_size = pArray->m_size;\n    if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE))\n        return MZ_FALSE;\n    if (n > 0)\n        memcpy((mz_uint8 *)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size);\n    return MZ_TRUE;\n}\n\n#ifndef MINIZ_NO_TIME\nstatic MZ_TIME_T mz_zip_dos_to_time_t(int dos_time, int dos_date)\n{\n    struct tm tm;\n    memset(&tm, 0, sizeof(tm));\n    tm.tm_isdst = -1;\n    tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900;\n    tm.tm_mon = ((dos_date >> 5) & 15) - 1;\n    tm.tm_mday = dos_date & 31;\n    tm.tm_hour = (dos_time >> 11) & 31;\n    tm.tm_min = (dos_time >> 5) & 63;\n    tm.tm_sec = (dos_time << 1) & 62;\n    return mktime(&tm);\n}\n\n#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\nstatic void mz_zip_time_t_to_dos_time(MZ_TIME_T time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date)\n{\n#ifdef _MSC_VER\n    struct tm tm_struct;\n    struct tm *tm = &tm_struct;\n    errno_t err = localtime_s(tm, &time);\n    if (err)\n    {\n        *pDOS_date = 0;\n        *pDOS_time = 0;\n        return;\n    }\n#else\n    struct tm *tm = localtime(&time);\n#endif /* #ifdef _MSC_VER */\n\n    *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1));\n    *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday);\n}\n#endif /* MINIZ_NO_ARCHIVE_WRITING_APIS */\n\n#ifndef MINIZ_NO_STDIO\n#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\nstatic mz_bool mz_zip_get_file_modified_time(const char *pFilename, MZ_TIME_T *pTime)\n{\n    struct MZ_FILE_STAT_STRUCT file_stat;\n\n    /* On Linux with x86 glibc, this call will fail on large files (I think >= 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh. */\n    if (MZ_FILE_STAT(pFilename, &file_stat) != 0)\n        return MZ_FALSE;\n\n    *pTime = file_stat.st_mtime;\n\n    return MZ_TRUE;\n}\n#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS*/\n\nstatic mz_bool mz_zip_set_file_times(const char *pFilename, MZ_TIME_T access_time, MZ_TIME_T modified_time)\n{\n    struct utimbuf t;\n\n    memset(&t, 0, sizeof(t));\n    t.actime = access_time;\n    t.modtime = modified_time;\n\n    return !utime(pFilename, &t);\n}\n#endif /* #ifndef MINIZ_NO_STDIO */\n#endif /* #ifndef MINIZ_NO_TIME */\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip, mz_zip_error err_num)\n{\n    if (pZip)\n        pZip->m_last_error = err_num;\n    return MZ_FALSE;\n}\n\nstatic mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags)\n{\n    (void)flags;\n    if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!pZip->m_pAlloc)\n        pZip->m_pAlloc = miniz_def_alloc_func;\n    if (!pZip->m_pFree)\n        pZip->m_pFree = miniz_def_free_func;\n    if (!pZip->m_pRealloc)\n        pZip->m_pRealloc = miniz_def_realloc_func;\n\n    pZip->m_archive_size = 0;\n    pZip->m_central_directory_file_ofs = 0;\n    pZip->m_total_files = 0;\n    pZip->m_last_error = MZ_ZIP_NO_ERROR;\n\n    if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state))))\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n    memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state));\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8));\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32));\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32));\n    pZip->m_pState->m_init_flags = flags;\n    pZip->m_pState->m_zip64 = MZ_FALSE;\n    pZip->m_pState->m_zip64_has_extended_info_fields = MZ_FALSE;\n\n    pZip->m_zip_mode = MZ_ZIP_MODE_READING;\n\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index)\n{\n    const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE;\n    const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index));\n    mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    mz_uint8 l = 0, r = 0;\n    pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\n    pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\n    pE = pL + MZ_MIN(l_len, r_len);\n    while (pL < pE)\n    {\n        if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR)))\n            break;\n        pL++;\n        pR++;\n    }\n    return (pL == pE) ? (l_len < r_len) : (l < r);\n}\n\n#define MZ_SWAP_UINT32(a, b) \\\n    do                       \\\n    {                        \\\n        mz_uint32 t = a;     \\\n        a = b;               \\\n        b = t;               \\\n    }                        \\\n    MZ_MACRO_END\n\n/* Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.) */\nstatic void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip)\n{\n    mz_zip_internal_state *pState = pZip->m_pState;\n    const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets;\n    const mz_zip_array *pCentral_dir = &pState->m_central_dir;\n    mz_uint32 *pIndices;\n    mz_uint32 start, end;\n    const mz_uint32 size = pZip->m_total_files;\n\n    if (size <= 1U)\n        return;\n\n    pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0);\n\n    start = (size - 2U) >> 1U;\n    for (;;)\n    {\n        mz_uint64 child, root = start;\n        for (;;)\n        {\n            if ((child = (root << 1U) + 1U) >= size)\n                break;\n            child += (((child + 1U) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U])));\n            if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child]))\n                break;\n            MZ_SWAP_UINT32(pIndices[root], pIndices[child]);\n            root = child;\n        }\n        if (!start)\n            break;\n        start--;\n    }\n\n    end = size - 1;\n    while (end > 0)\n    {\n        mz_uint64 child, root = 0;\n        MZ_SWAP_UINT32(pIndices[end], pIndices[0]);\n        for (;;)\n        {\n            if ((child = (root << 1U) + 1U) >= end)\n                break;\n            child += (((child + 1U) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U]));\n            if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child]))\n                break;\n            MZ_SWAP_UINT32(pIndices[root], pIndices[child]);\n            root = child;\n        }\n        end--;\n    }\n}\n\nstatic mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip, mz_uint32 record_sig, mz_uint32 record_size, mz_int64 *pOfs)\n{\n    mz_int64 cur_file_ofs;\n    mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];\n    mz_uint8 *pBuf = (mz_uint8 *)buf_u32;\n\n    /* Basic sanity checks - reject files which are too small */\n    if (pZip->m_archive_size < record_size)\n        return MZ_FALSE;\n\n    /* Find the record by scanning the file from the end towards the beginning. */\n    cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0);\n    for (;;)\n    {\n        int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs);\n\n        if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n)\n            return MZ_FALSE;\n\n        for (i = n - 4; i >= 0; --i)\n        {\n            mz_uint s = MZ_READ_LE32(pBuf + i);\n            if (s == record_sig)\n            {\n                if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size)\n                    break;\n            }\n        }\n\n        if (i >= 0)\n        {\n            cur_file_ofs += i;\n            break;\n        }\n\n        /* Give up if we've searched the entire file, or we've gone back \"too far\" (~64kb) */\n        if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (MZ_UINT16_MAX + record_size)))\n            return MZ_FALSE;\n\n        cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0);\n    }\n\n    *pOfs = cur_file_ofs;\n    return MZ_TRUE;\n}\n\nstatic mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flags)\n{\n    mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0, cdir_disk_index = 0;\n    mz_uint64 cdir_ofs = 0;\n    mz_int64 cur_file_ofs = 0;\n    const mz_uint8 *p;\n\n    mz_uint32 buf_u32[4096 / sizeof(mz_uint32)];\n    mz_uint8 *pBuf = (mz_uint8 *)buf_u32;\n    mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0);\n    mz_uint32 zip64_end_of_central_dir_locator_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32;\n\n    mz_uint32 zip64_end_of_central_dir_header_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pZip64_end_of_central_dir = (mz_uint8 *)zip64_end_of_central_dir_header_u32;\n\n    mz_uint64 zip64_end_of_central_dir_ofs = 0;\n\n    /* Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there. */\n    if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n\n    if (!mz_zip_reader_locate_header_sig(pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs))\n        return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR);\n\n    /* Read and verify the end of central directory record. */\n    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n    if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n\n    if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))\n    {\n        if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE, pZip64_locator, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE)\n        {\n            if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG)\n            {\n                zip64_end_of_central_dir_ofs = MZ_READ_LE64(pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS);\n                if (zip64_end_of_central_dir_ofs > (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE))\n                    return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n\n                if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs, pZip64_end_of_central_dir, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)\n                {\n                    if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG)\n                    {\n                        pZip->m_pState->m_zip64 = MZ_TRUE;\n                    }\n                }\n            }\n        }\n    }\n\n    pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS);\n    cdir_entries_on_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);\n    num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS);\n    cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS);\n    cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS);\n    cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS);\n\n    if (pZip->m_pState->m_zip64)\n    {\n        mz_uint32 zip64_total_num_of_disks = MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS);\n        mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS);\n        mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS);\n        mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS);\n        mz_uint64 zip64_size_of_central_directory = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS);\n\n        if (zip64_size_of_end_of_central_dir_record < (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12))\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n        if (zip64_total_num_of_disks != 1U)\n            return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n\n        /* Check for miniz's practical limits */\n        if (zip64_cdir_total_entries > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n\n        pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries;\n\n        if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n\n        cdir_entries_on_this_disk = (mz_uint32)zip64_cdir_total_entries_on_this_disk;\n\n        /* Check for miniz's current practical limits (sorry, this should be enough for millions of files) */\n        if (zip64_size_of_central_directory > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n\n        cdir_size = (mz_uint32)zip64_size_of_central_directory;\n\n        num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS);\n\n        cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS);\n\n        cdir_ofs = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS);\n    }\n\n    if (pZip->m_total_files != cdir_entries_on_this_disk)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n\n    if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1)))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n\n    if (cdir_size < (mz_uint64)pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    pZip->m_central_directory_file_ofs = cdir_ofs;\n\n    if (pZip->m_total_files)\n    {\n        mz_uint i, n;\n        /* Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and possibly another to hold the sorted indices. */\n        if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) ||\n            (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE)))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n        if (sort_central_dir)\n        {\n            if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE))\n                return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n        /* Now create an index into the central directory file records, do some basic sanity checking on each record */\n        p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p;\n        for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i)\n        {\n            mz_uint total_header_size, disk_index, bit_flags, filename_size, ext_data_size;\n            mz_uint64 comp_size, decomp_size, local_header_ofs;\n\n            if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG))\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n            MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p);\n\n            if (sort_central_dir)\n                MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i;\n\n            comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\n            decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\n            local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);\n            filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n            ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);\n\n            if ((!pZip->m_pState->m_zip64_has_extended_info_fields) &&\n                (ext_data_size) &&\n                (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) == MZ_UINT32_MAX))\n            {\n                /* Attempt to find zip64 extended information field in the entry's extra data */\n                mz_uint32 extra_size_remaining = ext_data_size;\n\n                if (extra_size_remaining)\n                {\n\t\t\t\t\tconst mz_uint8 *pExtra_data;\n\t\t\t\t\tvoid* buf = NULL;\n\n\t\t\t\t\tif (MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + ext_data_size > n)\n\t\t\t\t\t{\n\t\t\t\t\t\tbuf = MZ_MALLOC(ext_data_size);\n\t\t\t\t\t\tif(buf==NULL)\n\t\t\t\t\t\t\treturn mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n\t\t\t\t\t\tif (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size, buf, ext_data_size) != ext_data_size)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMZ_FREE(buf);\n\t\t\t\t\t\t\treturn mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tpExtra_data = (mz_uint8*)buf;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tpExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size;\n\t\t\t\t\t}\n\n                    do\n                    {\n                        mz_uint32 field_id;\n                        mz_uint32 field_data_size;\n\n\t\t\t\t\t\tif (extra_size_remaining < (sizeof(mz_uint16) * 2))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMZ_FREE(buf);\n\t\t\t\t\t\t\treturn mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\t\t\t\t\t\t}\n\n                        field_id = MZ_READ_LE16(pExtra_data);\n                        field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n\n\t\t\t\t\t\tif ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tMZ_FREE(buf);\n\t\t\t\t\t\t\treturn mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\t\t\t\t\t\t}\n\n                        if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID)\n                        {\n                            /* Ok, the archive didn't have any zip64 headers but it uses a zip64 extended information field so mark it as zip64 anyway (this can occur with infozip's zip util when it reads compresses files from stdin). */\n                            pZip->m_pState->m_zip64 = MZ_TRUE;\n                            pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE;\n                            break;\n                        }\n\n                        pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;\n                        extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;\n                    } while (extra_size_remaining);\n\n\t\t\t\t\tMZ_FREE(buf);\n                }\n            }\n\n            /* I've seen archives that aren't marked as zip64 that uses zip64 ext data, argh */\n            if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX))\n            {\n                if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size))\n                    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n            }\n\n            disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS);\n            if ((disk_index == MZ_UINT16_MAX) || ((disk_index != num_this_disk) && (disk_index != 1)))\n                return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK);\n\n            if (comp_size != MZ_UINT32_MAX)\n            {\n                if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size)\n                    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n            }\n\n            bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\n            if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED)\n                return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n\n            if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n)\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n            n -= total_header_size;\n            p += total_header_size;\n        }\n    }\n\n    if (sort_central_dir)\n        mz_zip_reader_sort_central_dir_offsets_by_filename(pZip);\n\n    return MZ_TRUE;\n}\n\nvoid mz_zip_zero_struct(mz_zip_archive *pZip)\n{\n    if (pZip)\n        MZ_CLEAR_PTR(pZip);\n}\n\nstatic mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error)\n{\n    mz_bool status = MZ_TRUE;\n\n    if (!pZip)\n        return MZ_FALSE;\n\n    if ((!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\n    {\n        if (set_last_error)\n            pZip->m_last_error = MZ_ZIP_INVALID_PARAMETER;\n\n        return MZ_FALSE;\n    }\n\n    if (pZip->m_pState)\n    {\n        mz_zip_internal_state *pState = pZip->m_pState;\n        pZip->m_pState = NULL;\n\n        mz_zip_array_clear(pZip, &pState->m_central_dir);\n        mz_zip_array_clear(pZip, &pState->m_central_dir_offsets);\n        mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets);\n\n#ifndef MINIZ_NO_STDIO\n        if (pState->m_pFile)\n        {\n            if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE)\n            {\n                if (MZ_FCLOSE(pState->m_pFile) == EOF)\n                {\n                    if (set_last_error)\n                        pZip->m_last_error = MZ_ZIP_FILE_CLOSE_FAILED;\n                    status = MZ_FALSE;\n                }\n            }\n            pState->m_pFile = NULL;\n        }\n#endif /* #ifndef MINIZ_NO_STDIO */\n\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n    }\n    pZip->m_zip_mode = MZ_ZIP_MODE_INVALID;\n\n    return status;\n}\n\nmz_bool mz_zip_reader_end(mz_zip_archive *pZip)\n{\n    return mz_zip_reader_end_internal(pZip, MZ_TRUE);\n}\nmz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags)\n{\n    if ((!pZip) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!mz_zip_reader_init_internal(pZip, flags))\n        return MZ_FALSE;\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_USER;\n    pZip->m_archive_size = size;\n\n    if (!mz_zip_reader_read_central_dir(pZip, flags))\n    {\n        mz_zip_reader_end_internal(pZip, MZ_FALSE);\n        return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\nstatic size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)\n{\n    mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\n    size_t s = (file_ofs >= pZip->m_archive_size) ? 0 : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n);\n    memcpy(pBuf, (const mz_uint8 *)pZip->m_pState->m_pMem + file_ofs, s);\n    return s;\n}\n\nmz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags)\n{\n    if (!pMem)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n\n    if (!mz_zip_reader_init_internal(pZip, flags))\n        return MZ_FALSE;\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_MEMORY;\n    pZip->m_archive_size = size;\n    pZip->m_pRead = mz_zip_mem_read_func;\n    pZip->m_pIO_opaque = pZip;\n    pZip->m_pNeeds_keepalive = NULL;\n\n#ifdef __cplusplus\n    pZip->m_pState->m_pMem = const_cast<void *>(pMem);\n#else\n    pZip->m_pState->m_pMem = (void *)pMem;\n#endif\n\n    pZip->m_pState->m_mem_size = size;\n\n    if (!mz_zip_reader_read_central_dir(pZip, flags))\n    {\n        mz_zip_reader_end_internal(pZip, MZ_FALSE);\n        return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\n#ifndef MINIZ_NO_STDIO\nstatic size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)\n{\n    mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\n    mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile);\n\n    file_ofs += pZip->m_pState->m_file_archive_start_ofs;\n\n    if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET))))\n        return 0;\n\n    return MZ_FREAD(pBuf, 1, n, pZip->m_pState->m_pFile);\n}\n\nmz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags)\n{\n    return mz_zip_reader_init_file_v2(pZip, pFilename, flags, 0, 0);\n}\n\nmz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size)\n{\n    mz_uint64 file_size;\n    MZ_FILE *pFile;\n\n    if ((!pZip) || (!pFilename) || ((archive_size) && (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pFile = MZ_FOPEN(pFilename, \"rb\");\n    if (!pFile)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n\n    file_size = archive_size;\n    if (!file_size)\n    {\n        if (MZ_FSEEK64(pFile, 0, SEEK_END))\n        {\n            MZ_FCLOSE(pFile);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED);\n        }\n\n        file_size = MZ_FTELL64(pFile);\n    }\n\n    /* TODO: Better sanity check archive_size and the # of actual remaining bytes */\n\n    if (file_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n    {\n\tMZ_FCLOSE(pFile);\n        return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n    }\n\n    if (!mz_zip_reader_init_internal(pZip, flags))\n    {\n        MZ_FCLOSE(pFile);\n        return MZ_FALSE;\n    }\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_FILE;\n    pZip->m_pRead = mz_zip_file_read_func;\n    pZip->m_pIO_opaque = pZip;\n    pZip->m_pState->m_pFile = pFile;\n    pZip->m_archive_size = file_size;\n    pZip->m_pState->m_file_archive_start_ofs = file_start_ofs;\n\n    if (!mz_zip_reader_read_central_dir(pZip, flags))\n    {\n        mz_zip_reader_end_internal(pZip, MZ_FALSE);\n        return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags)\n{\n    mz_uint64 cur_file_ofs;\n\n    if ((!pZip) || (!pFile))\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n\n    cur_file_ofs = MZ_FTELL64(pFile);\n\n    if (!archive_size)\n    {\n        if (MZ_FSEEK64(pFile, 0, SEEK_END))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED);\n\n        archive_size = MZ_FTELL64(pFile) - cur_file_ofs;\n\n        if (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n            return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE);\n    }\n\n    if (!mz_zip_reader_init_internal(pZip, flags))\n        return MZ_FALSE;\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_CFILE;\n    pZip->m_pRead = mz_zip_file_read_func;\n\n    pZip->m_pIO_opaque = pZip;\n    pZip->m_pState->m_pFile = pFile;\n    pZip->m_archive_size = archive_size;\n    pZip->m_pState->m_file_archive_start_ofs = cur_file_ofs;\n\n    if (!mz_zip_reader_read_central_dir(pZip, flags))\n    {\n        mz_zip_reader_end_internal(pZip, MZ_FALSE);\n        return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\n#endif /* #ifndef MINIZ_NO_STDIO */\n\nstatic MZ_FORCEINLINE const mz_uint8 *mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index)\n{\n    if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files))\n        return NULL;\n    return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index));\n}\n\nmz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index)\n{\n    mz_uint m_bit_flag;\n    const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index);\n    if (!p)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n        return MZ_FALSE;\n    }\n\n    m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\n    return (m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) != 0;\n}\n\nmz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index)\n{\n    mz_uint bit_flag;\n    mz_uint method;\n\n    const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index);\n    if (!p)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n        return MZ_FALSE;\n    }\n\n    method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS);\n    bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\n\n    if ((method != 0) && (method != MZ_DEFLATED))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD);\n        return MZ_FALSE;\n    }\n\n    if (bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n        return MZ_FALSE;\n    }\n\n    if (bit_flag & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE);\n        return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index)\n{\n    mz_uint filename_len, attribute_mapping_id, external_attr;\n    const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index);\n    if (!p)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n        return MZ_FALSE;\n    }\n\n    filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    if (filename_len)\n    {\n        if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/')\n            return MZ_TRUE;\n    }\n\n    /* Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct. */\n    /* Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field. */\n    /* FIXME: Remove this check? Is it necessary - we already check the filename. */\n    attribute_mapping_id = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS) >> 8;\n    (void)attribute_mapping_id;\n\n    external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS);\n    if ((external_attr & MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG) != 0)\n    {\n        return MZ_TRUE;\n    }\n\n    return MZ_FALSE;\n}\n\nstatic mz_bool mz_zip_file_stat_internal(mz_zip_archive *pZip, mz_uint file_index, const mz_uint8 *pCentral_dir_header, mz_zip_archive_file_stat *pStat, mz_bool *pFound_zip64_extra_data)\n{\n    mz_uint n;\n    const mz_uint8 *p = pCentral_dir_header;\n\n    if (pFound_zip64_extra_data)\n        *pFound_zip64_extra_data = MZ_FALSE;\n\n    if ((!p) || (!pStat))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    /* Extract fields from the central directory record. */\n    pStat->m_file_index = file_index;\n    pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index);\n    pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS);\n    pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS);\n    pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS);\n    pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS);\n#ifndef MINIZ_NO_TIME\n    pStat->m_time = mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS));\n#endif\n    pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS);\n    pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS);\n    pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS);\n    pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS);\n    pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS);\n    pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS);\n\n    /* Copy as much of the filename and comment as possible. */\n    n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1);\n    memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n);\n    pStat->m_filename[n] = '\\0';\n\n    n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS);\n    n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1);\n    pStat->m_comment_size = n;\n    memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n);\n    pStat->m_comment[n] = '\\0';\n\n    /* Set some flags for convienance */\n    pStat->m_is_directory = mz_zip_reader_is_file_a_directory(pZip, file_index);\n    pStat->m_is_encrypted = mz_zip_reader_is_file_encrypted(pZip, file_index);\n    pStat->m_is_supported = mz_zip_reader_is_file_supported(pZip, file_index);\n\n    /* See if we need to read any zip64 extended information fields. */\n    /* Confusingly, these zip64 fields can be present even on non-zip64 archives (Debian zip on a huge files from stdin piped to stdout creates them). */\n    if (MZ_MAX(MZ_MAX(pStat->m_comp_size, pStat->m_uncomp_size), pStat->m_local_header_ofs) == MZ_UINT32_MAX)\n    {\n        /* Attempt to find zip64 extended information field in the entry's extra data */\n        mz_uint32 extra_size_remaining = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS);\n\n        if (extra_size_remaining)\n        {\n            const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n\n            do\n            {\n                mz_uint32 field_id;\n                mz_uint32 field_data_size;\n\n                if (extra_size_remaining < (sizeof(mz_uint16) * 2))\n                    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n                field_id = MZ_READ_LE16(pExtra_data);\n                field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n\n                if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining)\n                    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n                if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID)\n                {\n                    const mz_uint8 *pField_data = pExtra_data + sizeof(mz_uint16) * 2;\n                    mz_uint32 field_data_remaining = field_data_size;\n\n                    if (pFound_zip64_extra_data)\n                        *pFound_zip64_extra_data = MZ_TRUE;\n\n                    if (pStat->m_uncomp_size == MZ_UINT32_MAX)\n                    {\n                        if (field_data_remaining < sizeof(mz_uint64))\n                            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n                        pStat->m_uncomp_size = MZ_READ_LE64(pField_data);\n                        pField_data += sizeof(mz_uint64);\n                        field_data_remaining -= sizeof(mz_uint64);\n                    }\n\n                    if (pStat->m_comp_size == MZ_UINT32_MAX)\n                    {\n                        if (field_data_remaining < sizeof(mz_uint64))\n                            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n                        pStat->m_comp_size = MZ_READ_LE64(pField_data);\n                        pField_data += sizeof(mz_uint64);\n                        field_data_remaining -= sizeof(mz_uint64);\n                    }\n\n                    if (pStat->m_local_header_ofs == MZ_UINT32_MAX)\n                    {\n                        if (field_data_remaining < sizeof(mz_uint64))\n                            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n                        pStat->m_local_header_ofs = MZ_READ_LE64(pField_data);\n                        pField_data += sizeof(mz_uint64);\n                        field_data_remaining -= sizeof(mz_uint64);\n                    }\n\n                    break;\n                }\n\n                pExtra_data += sizeof(mz_uint16) * 2 + field_data_size;\n                extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size;\n            } while (extra_size_remaining);\n        }\n    }\n\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE mz_bool mz_zip_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags)\n{\n    mz_uint i;\n    if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE)\n        return 0 == memcmp(pA, pB, len);\n    for (i = 0; i < len; ++i)\n        if (MZ_TOLOWER(pA[i]) != MZ_TOLOWER(pB[i]))\n            return MZ_FALSE;\n    return MZ_TRUE;\n}\n\nstatic MZ_FORCEINLINE int mz_zip_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len)\n{\n    const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE;\n    mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    mz_uint8 l = 0, r = 0;\n    pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\n    pE = pL + MZ_MIN(l_len, r_len);\n    while (pL < pE)\n    {\n        if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR)))\n            break;\n        pL++;\n        pR++;\n    }\n    return (pL == pE) ? (int)(l_len - r_len) : (l - r);\n}\n\nstatic mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename, mz_uint32 *pIndex)\n{\n    mz_zip_internal_state *pState = pZip->m_pState;\n    const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets;\n    const mz_zip_array *pCentral_dir = &pState->m_central_dir;\n    mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0);\n    const mz_uint32 size = pZip->m_total_files;\n    const mz_uint filename_len = (mz_uint)strlen(pFilename);\n\n    if (pIndex)\n        *pIndex = 0;\n\n    if (size)\n    {\n        /* yes I could use uint32_t's, but then we would have to add some special case checks in the loop, argh, and */\n        /* honestly the major expense here on 32-bit CPU's will still be the filename compare */\n        mz_int64 l = 0, h = (mz_int64)size - 1;\n\n        while (l <= h)\n        {\n            mz_int64 m = l + ((h - l) >> 1);\n            mz_uint32 file_index = pIndices[(mz_uint32)m];\n\n            int comp = mz_zip_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len);\n            if (!comp)\n            {\n                if (pIndex)\n                    *pIndex = file_index;\n                return MZ_TRUE;\n            }\n            else if (comp < 0)\n                l = m + 1;\n            else\n                h = m - 1;\n        }\n    }\n\n    return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND);\n}\n\nint mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags)\n{\n    mz_uint32 index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pName, pComment, flags, &index))\n        return -1;\n    else\n        return (int)index;\n}\n\nmz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *pIndex)\n{\n    mz_uint file_index;\n    size_t name_len, comment_len;\n\n    if (pIndex)\n        *pIndex = 0;\n\n    if ((!pZip) || (!pZip->m_pState) || (!pName))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    /* See if we can use a binary search */\n    if (((pZip->m_pState->m_init_flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0) &&\n        (pZip->m_zip_mode == MZ_ZIP_MODE_READING) &&\n        ((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size))\n    {\n        return mz_zip_locate_file_binary_search(pZip, pName, pIndex);\n    }\n\n    /* Locate the entry by scanning the entire central directory */\n    name_len = strlen(pName);\n    if (name_len > MZ_UINT16_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    comment_len = pComment ? strlen(pComment) : 0;\n    if (comment_len > MZ_UINT16_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    for (file_index = 0; file_index < pZip->m_total_files; file_index++)\n    {\n        const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index));\n        mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n        const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE;\n        if (filename_len < name_len)\n            continue;\n        if (comment_len)\n        {\n            mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS);\n            const char *pFile_comment = pFilename + filename_len + file_extra_len;\n            if ((file_comment_len != comment_len) || (!mz_zip_string_equal(pComment, pFile_comment, file_comment_len, flags)))\n                continue;\n        }\n        if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len))\n        {\n            int ofs = filename_len - 1;\n            do\n            {\n                if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\\\') || (pFilename[ofs] == ':'))\n                    break;\n            } while (--ofs >= 0);\n            ofs++;\n            pFilename += ofs;\n            filename_len -= ofs;\n        }\n        if ((filename_len == name_len) && (mz_zip_string_equal(pName, pFilename, filename_len, flags)))\n        {\n            if (pIndex)\n                *pIndex = file_index;\n            return MZ_TRUE;\n        }\n    }\n\n    return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND);\n}\n\nstatic\nmz_bool mz_zip_reader_extract_to_mem_no_alloc1(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size, const mz_zip_archive_file_stat *st)\n{\n    int status = TINFL_STATUS_DONE;\n    mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail;\n    mz_zip_archive_file_stat file_stat;\n    void *pRead_buf;\n    mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\n    tinfl_decompressor inflator;\n\n    if ((!pZip) || (!pZip->m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (st) {\n        file_stat = *st;\n    } else\n    if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\n        return MZ_FALSE;\n\n    /* A directory or zero length file */\n    if ((file_stat.m_is_directory) || (!file_stat.m_comp_size))\n        return MZ_TRUE;\n\n    /* Encryption and patch files are not supported. */\n    if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n\n    /* This function only supports decompressing stored and deflate. */\n    if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD);\n\n    /* Ensure supplied output buffer is large enough. */\n    needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size;\n    if (buf_size < needed_size)\n        return mz_zip_set_error(pZip, MZ_ZIP_BUF_TOO_SMALL);\n\n    /* Read and parse the local directory entry. */\n    cur_file_ofs = file_stat.m_local_header_ofs;\n    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n    if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\n    if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method))\n    {\n        /* The file is stored or the caller has requested the compressed data. */\n        if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n        if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) == 0)\n        {\n            if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32)\n                return mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED);\n        }\n#endif\n\n        return MZ_TRUE;\n    }\n\n    /* Decompress the file either directly from memory or from a file input buffer. */\n    tinfl_init(&inflator);\n\n    if (pZip->m_pState->m_pMem)\n    {\n        /* Read directly from the archive in memory. */\n        pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs;\n        read_buf_size = read_buf_avail = file_stat.m_comp_size;\n        comp_remaining = 0;\n    }\n    else if (pUser_read_buf)\n    {\n        /* Use a user provided read buffer. */\n        if (!user_read_buf_size)\n            return MZ_FALSE;\n        pRead_buf = (mz_uint8 *)pUser_read_buf;\n        read_buf_size = user_read_buf_size;\n        read_buf_avail = 0;\n        comp_remaining = file_stat.m_comp_size;\n    }\n    else\n    {\n        /* Temporarily allocate a read buffer. */\n        read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE);\n        if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size)))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n        read_buf_avail = 0;\n        comp_remaining = file_stat.m_comp_size;\n    }\n\n    do\n    {\n        /* The size_t cast here should be OK because we've verified that the output buffer is >= file_stat.m_uncomp_size above */\n        size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs);\n        if ((!read_buf_avail) && (!pZip->m_pState->m_pMem))\n        {\n            read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\n            if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\n            {\n                status = TINFL_STATUS_FAILED;\n                mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED);\n                break;\n            }\n            cur_file_ofs += read_buf_avail;\n            comp_remaining -= read_buf_avail;\n            read_buf_ofs = 0;\n        }\n        in_buf_size = (size_t)read_buf_avail;\n        status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0));\n        read_buf_avail -= in_buf_size;\n        read_buf_ofs += in_buf_size;\n        out_buf_ofs += out_buf_size;\n    } while (status == TINFL_STATUS_NEEDS_MORE_INPUT);\n\n    if (status == TINFL_STATUS_DONE)\n    {\n        /* Make sure the entire file was decompressed, and check its CRC. */\n        if (out_buf_ofs != file_stat.m_uncomp_size)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE);\n            status = TINFL_STATUS_FAILED;\n        }\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n        else if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED);\n            status = TINFL_STATUS_FAILED;\n        }\n#endif\n    }\n\n    if ((!pZip->m_pState->m_pMem) && (!pUser_read_buf))\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n\n    return status == TINFL_STATUS_DONE;\n}\n\nmz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)\n{\n    return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size, NULL);\n}\n\nmz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size)\n{\n    mz_uint32 file_index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index))\n        return MZ_FALSE;\n    return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size, NULL);\n}\n\nmz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags)\n{\n    return mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, buf_size, flags, NULL, 0, NULL);\n}\n\nmz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags)\n{\n    return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, buf_size, flags, NULL, 0);\n}\n\nvoid *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags)\n{\n    mz_zip_archive_file_stat file_stat;\n    mz_uint64 alloc_size;\n    void *pBuf;\n\n    if (pSize)\n        *pSize = 0;\n\n    if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\n        return NULL;\n\n    alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size;\n    if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n        return NULL;\n    }\n\n    if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size)))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        return NULL;\n    }\n\n    if (!mz_zip_reader_extract_to_mem_no_alloc1(pZip, file_index, pBuf, (size_t)alloc_size, flags, NULL, 0, &file_stat))\n    {\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n        return NULL;\n    }\n\n    if (pSize)\n        *pSize = (size_t)alloc_size;\n    return pBuf;\n}\n\nvoid *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags)\n{\n    mz_uint32 file_index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index))\n    {\n        if (pSize)\n            *pSize = 0;\n        return MZ_FALSE;\n    }\n    return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags);\n}\n\nmz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)\n{\n    int status = TINFL_STATUS_DONE;\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n    mz_uint file_crc32 = MZ_CRC32_INIT;\n#endif\n    mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs;\n    mz_zip_archive_file_stat file_stat;\n    void *pRead_buf = NULL;\n    void *pWrite_buf = NULL;\n    mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\n\n    if ((!pZip) || (!pZip->m_pState) || (!pCallback) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\n        return MZ_FALSE;\n\n    /* A directory or zero length file */\n    if ((file_stat.m_is_directory) || (!file_stat.m_comp_size))\n        return MZ_TRUE;\n\n    /* Encryption and patch files are not supported. */\n    if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n\n    /* This function only supports decompressing stored and deflate. */\n    if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD);\n\n    /* Read and do some minimal validation of the local directory entry (this doesn't crack the zip64 stuff, which we already have from the central dir) */\n    cur_file_ofs = file_stat.m_local_header_ofs;\n    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n    if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\n    if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    /* Decompress the file either directly from memory or from a file input buffer. */\n    if (pZip->m_pState->m_pMem)\n    {\n        pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs;\n        read_buf_size = read_buf_avail = file_stat.m_comp_size;\n        comp_remaining = 0;\n    }\n    else\n    {\n        read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE);\n        if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size)))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n        read_buf_avail = 0;\n        comp_remaining = file_stat.m_comp_size;\n    }\n\n    if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method))\n    {\n        /* The file is stored or the caller has requested the compressed data. */\n        if (pZip->m_pState->m_pMem)\n        {\n            if (((sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > MZ_UINT32_MAX))\n                return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n            if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)file_stat.m_comp_size) != file_stat.m_comp_size)\n            {\n                mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED);\n                status = TINFL_STATUS_FAILED;\n            }\n            else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\n            {\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n                file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size);\n#endif\n            }\n\n            cur_file_ofs += file_stat.m_comp_size;\n            out_buf_ofs += file_stat.m_comp_size;\n            comp_remaining = 0;\n        }\n        else\n        {\n            while (comp_remaining)\n            {\n                read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\n                if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\n                {\n                    mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n                    status = TINFL_STATUS_FAILED;\n                    break;\n                }\n\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n                if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\n                {\n                    file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail);\n                }\n#endif\n\n                if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\n                {\n                    mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED);\n                    status = TINFL_STATUS_FAILED;\n                    break;\n                }\n\n                cur_file_ofs += read_buf_avail;\n                out_buf_ofs += read_buf_avail;\n                comp_remaining -= read_buf_avail;\n            }\n        }\n    }\n    else\n    {\n        tinfl_decompressor inflator;\n        tinfl_init(&inflator);\n\n        if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE)))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n            status = TINFL_STATUS_FAILED;\n        }\n        else\n        {\n            do\n            {\n                mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\n                size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\n                if ((!read_buf_avail) && (!pZip->m_pState->m_pMem))\n                {\n                    read_buf_avail = MZ_MIN(read_buf_size, comp_remaining);\n                    if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail)\n                    {\n                        mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n                        status = TINFL_STATUS_FAILED;\n                        break;\n                    }\n                    cur_file_ofs += read_buf_avail;\n                    comp_remaining -= read_buf_avail;\n                    read_buf_ofs = 0;\n                }\n\n                in_buf_size = (size_t)read_buf_avail;\n                status = tinfl_decompress(&inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0);\n                read_buf_avail -= in_buf_size;\n                read_buf_ofs += in_buf_size;\n\n                if (out_buf_size)\n                {\n                    if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size)\n                    {\n                        mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED);\n                        status = TINFL_STATUS_FAILED;\n                        break;\n                    }\n\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n                    file_crc32 = (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size);\n#endif\n                    if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size)\n                    {\n                        mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED);\n                        status = TINFL_STATUS_FAILED;\n                        break;\n                    }\n                }\n            } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || (status == TINFL_STATUS_HAS_MORE_OUTPUT));\n        }\n    }\n\n    if ((status == TINFL_STATUS_DONE) && (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)))\n    {\n        /* Make sure the entire file was decompressed, and check its CRC. */\n        if (out_buf_ofs != file_stat.m_uncomp_size)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE);\n            status = TINFL_STATUS_FAILED;\n        }\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n        else if (file_crc32 != file_stat.m_crc32)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED);\n            status = TINFL_STATUS_FAILED;\n        }\n#endif\n    }\n\n    if (!pZip->m_pState->m_pMem)\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n\n    if (pWrite_buf)\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pWrite_buf);\n\n    return status == TINFL_STATUS_DONE;\n}\n\nmz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags)\n{\n    mz_uint32 file_index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index))\n        return MZ_FALSE;\n\n    return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, flags);\n}\n\nmz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags)\n{\n    mz_zip_reader_extract_iter_state *pState;\n    mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\n\n    /* Argument sanity check */\n    if ((!pZip) || (!pZip->m_pState))\n        return NULL;\n\n    /* Allocate an iterator status structure */\n    pState = (mz_zip_reader_extract_iter_state*)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_reader_extract_iter_state));\n    if (!pState)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        return NULL;\n    }\n\n    /* Fetch file details */\n    if (!mz_zip_reader_file_stat(pZip, file_index, &pState->file_stat))\n    {\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    /* Encryption and patch files are not supported. */\n    if (pState->file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    /* This function only supports decompressing stored and deflate. */\n    if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (pState->file_stat.m_method != 0) && (pState->file_stat.m_method != MZ_DEFLATED))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD);\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    /* Init state - save args */\n    pState->pZip = pZip;\n    pState->flags = flags;\n\n    /* Init state - reset variables to defaults */\n    pState->status = TINFL_STATUS_DONE;\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n    pState->file_crc32 = MZ_CRC32_INIT;\n#endif\n    pState->read_buf_ofs = 0;\n    pState->out_buf_ofs = 0;\n    pState->pRead_buf = NULL;\n    pState->pWrite_buf = NULL;\n    pState->out_blk_remain = 0;\n\n    /* Read and parse the local directory entry. */\n    pState->cur_file_ofs = pState->file_stat.m_local_header_ofs;\n    if (pZip->m_pRead(pZip->m_pIO_opaque, pState->cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    pState->cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\n    if ((pState->cur_file_ofs + pState->file_stat.m_comp_size) > pZip->m_archive_size)\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n        return NULL;\n    }\n\n    /* Decompress the file either directly from memory or from a file input buffer. */\n    if (pZip->m_pState->m_pMem)\n    {\n        pState->pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + pState->cur_file_ofs;\n        pState->read_buf_size = pState->read_buf_avail = pState->file_stat.m_comp_size;\n        pState->comp_remaining = pState->file_stat.m_comp_size;\n    }\n    else\n    {\n        if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method)))\n        {\n            /* Decompression required, therefore intermediate read buffer required */\n            pState->read_buf_size = MZ_MIN(pState->file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE);\n            if (NULL == (pState->pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)pState->read_buf_size)))\n            {\n                mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n                return NULL;\n            }\n        }\n        else\n        {\n            /* Decompression not required - we will be reading directly into user buffer, no temp buf required */\n            pState->read_buf_size = 0;\n        }\n        pState->read_buf_avail = 0;\n        pState->comp_remaining = pState->file_stat.m_comp_size;\n    }\n\n    if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method)))\n    {\n        /* Decompression required, init decompressor */\n        tinfl_init( &pState->inflator );\n\n        /* Allocate write buffer */\n        if (NULL == (pState->pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE)))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n            if (pState->pRead_buf)\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pState->pRead_buf);\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n            return NULL;\n        }\n    }\n\n    return pState;\n}\n\nmz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags)\n{\n    mz_uint32 file_index;\n\n    /* Locate file index by name */\n    if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index))\n        return NULL;\n\n    /* Construct iterator */\n    return mz_zip_reader_extract_iter_new(pZip, file_index, flags);\n}\n\nsize_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size)\n{\n    size_t copied_to_caller = 0;\n\n    /* Argument sanity check */\n    if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState) || (!pvBuf))\n        return 0;\n\n    if ((pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method))\n    {\n        /* The file is stored or the caller has requested the compressed data, calc amount to return. */\n        copied_to_caller = (size_t)MZ_MIN( buf_size, pState->comp_remaining );\n\n        /* Zip is in memory....or requires reading from a file? */\n        if (pState->pZip->m_pState->m_pMem)\n        {\n            /* Copy data to caller's buffer */\n            memcpy( pvBuf, pState->pRead_buf, copied_to_caller );\n            pState->pRead_buf = ((mz_uint8*)pState->pRead_buf) + copied_to_caller;\n        }\n        else\n        {\n            /* Read directly into caller's buffer */\n            if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pvBuf, copied_to_caller) != copied_to_caller)\n            {\n                /* Failed to read all that was asked for, flag failure and alert user */\n                mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED);\n                pState->status = TINFL_STATUS_FAILED;\n                copied_to_caller = 0;\n            }\n        }\n\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n        /* Compute CRC if not returning compressed data only */\n        if (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\n            pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, (const mz_uint8 *)pvBuf, copied_to_caller);\n#endif\n\n        /* Advance offsets, dec counters */\n        pState->cur_file_ofs += copied_to_caller;\n        pState->out_buf_ofs += copied_to_caller;\n        pState->comp_remaining -= copied_to_caller;\n    }\n    else\n    {\n        do\n        {\n            /* Calc ptr to write buffer - given current output pos and block size */\n            mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pState->pWrite_buf + (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\n\n            /* Calc max output size - given current output pos and block size */\n            size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1));\n\n            if (!pState->out_blk_remain)\n            {\n                /* Read more data from file if none available (and reading from file) */\n                if ((!pState->read_buf_avail) && (!pState->pZip->m_pState->m_pMem))\n                {\n                    /* Calc read size */\n                    pState->read_buf_avail = MZ_MIN(pState->read_buf_size, pState->comp_remaining);\n                    if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pState->pRead_buf, (size_t)pState->read_buf_avail) != pState->read_buf_avail)\n                    {\n                        mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED);\n                        pState->status = TINFL_STATUS_FAILED;\n                        break;\n                    }\n\n                    /* Advance offsets, dec counters */\n                    pState->cur_file_ofs += pState->read_buf_avail;\n                    pState->comp_remaining -= pState->read_buf_avail;\n                    pState->read_buf_ofs = 0;\n                }\n\n                /* Perform decompression */\n                in_buf_size = (size_t)pState->read_buf_avail;\n                pState->status = tinfl_decompress(&pState->inflator, (const mz_uint8 *)pState->pRead_buf + pState->read_buf_ofs, &in_buf_size, (mz_uint8 *)pState->pWrite_buf, pWrite_buf_cur, &out_buf_size, pState->comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0);\n                pState->read_buf_avail -= in_buf_size;\n                pState->read_buf_ofs += in_buf_size;\n\n                /* Update current output block size remaining */\n                pState->out_blk_remain = out_buf_size;\n            }\n\n            if (pState->out_blk_remain)\n            {\n                /* Calc amount to return. */\n                size_t to_copy = MZ_MIN( (buf_size - copied_to_caller), pState->out_blk_remain );\n\n                /* Copy data to caller's buffer */\n                memcpy( (mz_uint8*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy );\n\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n                /* Perform CRC */\n                pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, pWrite_buf_cur, to_copy);\n#endif\n\n                /* Decrement data consumed from block */\n                pState->out_blk_remain -= to_copy;\n\n                /* Inc output offset, while performing sanity check */\n                if ((pState->out_buf_ofs += to_copy) > pState->file_stat.m_uncomp_size)\n                {\n                    mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED);\n                    pState->status = TINFL_STATUS_FAILED;\n                    break;\n                }\n\n                /* Increment counter of data copied to caller */\n                copied_to_caller += to_copy;\n            }\n        } while ( (copied_to_caller < buf_size) && ((pState->status == TINFL_STATUS_NEEDS_MORE_INPUT) || (pState->status == TINFL_STATUS_HAS_MORE_OUTPUT)) );\n    }\n\n    /* Return how many bytes were copied into user buffer */\n    return copied_to_caller;\n}\n\nmz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState)\n{\n    int status;\n\n    /* Argument sanity check */\n    if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState))\n        return MZ_FALSE;\n\n    /* Was decompression completed and requested? */\n    if ((pState->status == TINFL_STATUS_DONE) && (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA)))\n    {\n        /* Make sure the entire file was decompressed, and check its CRC. */\n        if (pState->out_buf_ofs != pState->file_stat.m_uncomp_size)\n        {\n            mz_zip_set_error(pState->pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE);\n            pState->status = TINFL_STATUS_FAILED;\n        }\n#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n        else if (pState->file_crc32 != pState->file_stat.m_crc32)\n        {\n            mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED);\n            pState->status = TINFL_STATUS_FAILED;\n        }\n#endif\n    }\n\n    /* Free buffers */\n    if (!pState->pZip->m_pState->m_pMem)\n        pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pRead_buf);\n    if (pState->pWrite_buf)\n        pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pWrite_buf);\n\n    /* Save status */\n    status = pState->status;\n\n    /* Free context */\n    pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState);\n\n    return status == TINFL_STATUS_DONE;\n}\n\n#ifndef MINIZ_NO_STDIO\nstatic size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n)\n{\n    (void)ofs;\n\n    return MZ_FWRITE(pBuf, 1, n, (MZ_FILE *)pOpaque);\n}\n\nmz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags)\n{\n    mz_bool status;\n    mz_zip_archive_file_stat file_stat;\n    MZ_FILE *pFile;\n\n    if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\n        return MZ_FALSE;\n\n    if ((file_stat.m_is_directory) || (!file_stat.m_is_supported))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE);\n\n    pFile = MZ_FOPEN(pDst_filename, \"wb\");\n    if (!pFile)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n\n    status = mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags);\n\n    if (MZ_FCLOSE(pFile) == EOF)\n    {\n        if (status)\n            mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED);\n\n        status = MZ_FALSE;\n    }\n\n#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO)\n    if (status)\n        mz_zip_set_file_times(pDst_filename, file_stat.m_time, file_stat.m_time);\n#endif\n\n    return status;\n}\n\nmz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags)\n{\n    mz_uint32 file_index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index))\n        return MZ_FALSE;\n\n    return mz_zip_reader_extract_to_file(pZip, file_index, pDst_filename, flags);\n}\n\nmz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *pFile, mz_uint flags)\n{\n    mz_zip_archive_file_stat file_stat;\n\n    if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat))\n        return MZ_FALSE;\n\n    if ((file_stat.m_is_directory) || (!file_stat.m_is_supported))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE);\n\n    return mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags);\n}\n\nmz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags)\n{\n    mz_uint32 file_index;\n    if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index))\n        return MZ_FALSE;\n\n    return mz_zip_reader_extract_to_cfile(pZip, file_index, pFile, flags);\n}\n#endif /* #ifndef MINIZ_NO_STDIO */\n\nstatic size_t mz_zip_compute_crc32_callback(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)\n{\n    mz_uint32 *p = (mz_uint32 *)pOpaque;\n    (void)file_ofs;\n    *p = (mz_uint32)mz_crc32(*p, (const mz_uint8 *)pBuf, n);\n    return n;\n}\n\nmz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags)\n{\n    mz_zip_archive_file_stat file_stat;\n    mz_zip_internal_state *pState;\n    const mz_uint8 *pCentral_dir_header;\n    mz_bool found_zip64_ext_data_in_cdir = MZ_FALSE;\n    mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE;\n    mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\n    mz_uint64 local_header_ofs = 0;\n    mz_uint32 local_header_filename_len, local_header_extra_len, local_header_crc32;\n    mz_uint64 local_header_comp_size, local_header_uncomp_size;\n    mz_uint32 uncomp_crc32 = MZ_CRC32_INIT;\n    mz_bool has_data_descriptor;\n    mz_uint32 local_header_bit_flags;\n\n    mz_zip_array file_data_array;\n    mz_zip_array_init(&file_data_array, 1);\n\n    if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (file_index > pZip->m_total_files)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    pCentral_dir_header = mz_zip_get_cdh(pZip, file_index);\n\n    if (!mz_zip_file_stat_internal(pZip, file_index, pCentral_dir_header, &file_stat, &found_zip64_ext_data_in_cdir))\n        return MZ_FALSE;\n\n    /* A directory or zero length file */\n    if ((file_stat.m_is_directory) || (!file_stat.m_uncomp_size))\n        return MZ_TRUE;\n\n    /* Encryption and patch files are not supported. */\n    if (file_stat.m_is_encrypted)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION);\n\n    /* This function only supports stored and deflate. */\n    if ((file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED))\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD);\n\n    if (!file_stat.m_is_supported)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE);\n\n    /* Read and parse the local directory entry. */\n    local_header_ofs = file_stat.m_local_header_ofs;\n    if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n    if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    local_header_filename_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS);\n    local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\n    local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS);\n    local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS);\n    local_header_crc32 = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_CRC32_OFS);\n    local_header_bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS);\n    has_data_descriptor = (local_header_bit_flags & 8) != 0;\n\n    if (local_header_filename_len != strlen(file_stat.m_filename))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    if ((local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size) > pZip->m_archive_size)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    if (!mz_zip_array_resize(pZip, &file_data_array, MZ_MAX(local_header_filename_len, local_header_extra_len), MZ_FALSE))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        goto handle_failure;\n    }\n\n    if (local_header_filename_len)\n    {\n        if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE, file_data_array.m_p, local_header_filename_len) != local_header_filename_len)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n            goto handle_failure;\n        }\n\n        /* I've seen 1 archive that had the same pathname, but used backslashes in the local dir and forward slashes in the central dir. Do we care about this? For now, this case will fail validation. */\n        if (memcmp(file_stat.m_filename, file_data_array.m_p, local_header_filename_len) != 0)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED);\n            goto handle_failure;\n        }\n    }\n\n    if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX)))\n    {\n        mz_uint32 extra_size_remaining = local_header_extra_len;\n        const mz_uint8 *pExtra_data = (const mz_uint8 *)file_data_array.m_p;\n\n        if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len, file_data_array.m_p, local_header_extra_len) != local_header_extra_len)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n            goto handle_failure;\n        }\n\n        do\n        {\n            mz_uint32 field_id, field_data_size, field_total_size;\n\n            if (extra_size_remaining < (sizeof(mz_uint16) * 2))\n            {\n                mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n                goto handle_failure;\n            }\n\n            field_id = MZ_READ_LE16(pExtra_data);\n            field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n            field_total_size = field_data_size + sizeof(mz_uint16) * 2;\n\n            if (field_total_size > extra_size_remaining)\n            {\n                mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n                goto handle_failure;\n            }\n\n            if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID)\n            {\n                const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32);\n\n                if (field_data_size < sizeof(mz_uint64) * 2)\n                {\n                    mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n                    goto handle_failure;\n                }\n\n                local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data);\n                local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64));\n\n                found_zip64_ext_data_in_ldir = MZ_TRUE;\n                break;\n            }\n\n            pExtra_data += field_total_size;\n            extra_size_remaining -= field_total_size;\n        } while (extra_size_remaining);\n    }\n\n    /* TODO: parse local header extra data when local_header_comp_size is 0xFFFFFFFF! (big_descriptor.zip) */\n    /* I've seen zips in the wild with the data descriptor bit set, but proper local header values and bogus data descriptors */\n    if ((has_data_descriptor) && (!local_header_comp_size) && (!local_header_crc32))\n    {\n        mz_uint8 descriptor_buf[32];\n        mz_bool has_id;\n        const mz_uint8 *pSrc;\n        mz_uint32 file_crc32;\n        mz_uint64 comp_size = 0, uncomp_size = 0;\n\n        mz_uint32 num_descriptor_uint32s = ((pState->m_zip64) || (found_zip64_ext_data_in_ldir)) ? 6 : 4;\n\n        if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size, descriptor_buf, sizeof(mz_uint32) * num_descriptor_uint32s) != (sizeof(mz_uint32) * num_descriptor_uint32s))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n            goto handle_failure;\n        }\n\n        has_id = (MZ_READ_LE32(descriptor_buf) == MZ_ZIP_DATA_DESCRIPTOR_ID);\n        pSrc = has_id ? (descriptor_buf + sizeof(mz_uint32)) : descriptor_buf;\n\n        file_crc32 = MZ_READ_LE32(pSrc);\n\n        if ((pState->m_zip64) || (found_zip64_ext_data_in_ldir))\n        {\n            comp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32));\n            uncomp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32) + sizeof(mz_uint64));\n        }\n        else\n        {\n            comp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32));\n            uncomp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32) + sizeof(mz_uint32));\n        }\n\n        if ((file_crc32 != file_stat.m_crc32) || (comp_size != file_stat.m_comp_size) || (uncomp_size != file_stat.m_uncomp_size))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED);\n            goto handle_failure;\n        }\n    }\n    else\n    {\n        if ((local_header_crc32 != file_stat.m_crc32) || (local_header_comp_size != file_stat.m_comp_size) || (local_header_uncomp_size != file_stat.m_uncomp_size))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED);\n            goto handle_failure;\n        }\n    }\n\n    mz_zip_array_clear(pZip, &file_data_array);\n\n    if ((flags & MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY) == 0)\n    {\n        if (!mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_compute_crc32_callback, &uncomp_crc32, 0))\n            return MZ_FALSE;\n\n        /* 1 more check to be sure, although the extract checks too. */\n        if (uncomp_crc32 != file_stat.m_crc32)\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED);\n            return MZ_FALSE;\n        }\n    }\n\n    return MZ_TRUE;\n\nhandle_failure:\n    mz_zip_array_clear(pZip, &file_data_array);\n    return MZ_FALSE;\n}\n\nmz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags)\n{\n    mz_zip_internal_state *pState;\n    mz_uint32 i;\n\n    if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    /* Basic sanity checks */\n    if (!pState->m_zip64)\n    {\n        if (pZip->m_total_files > MZ_UINT16_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n\n        if (pZip->m_archive_size > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n    }\n    else\n    {\n        if (pState->m_central_dir.m_size >= MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n    }\n\n    for (i = 0; i < pZip->m_total_files; i++)\n    {\n        if (MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG & flags)\n        {\n            mz_uint32 found_index;\n            mz_zip_archive_file_stat stat;\n\n            if (!mz_zip_reader_file_stat(pZip, i, &stat))\n                return MZ_FALSE;\n\n            if (!mz_zip_reader_locate_file_v2(pZip, stat.m_filename, NULL, 0, &found_index))\n                return MZ_FALSE;\n\n            /* This check can fail if there are duplicate filenames in the archive (which we don't check for when writing - that's up to the user) */\n            if (found_index != i)\n                return mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED);\n        }\n\n        if (!mz_zip_validate_file(pZip, i, flags))\n            return MZ_FALSE;\n    }\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr)\n{\n    mz_bool success = MZ_TRUE;\n    mz_zip_archive zip;\n    mz_zip_error actual_err = MZ_ZIP_NO_ERROR;\n\n    if ((!pMem) || (!size))\n    {\n        if (pErr)\n            *pErr = MZ_ZIP_INVALID_PARAMETER;\n        return MZ_FALSE;\n    }\n\n    mz_zip_zero_struct(&zip);\n\n    if (!mz_zip_reader_init_mem(&zip, pMem, size, flags))\n    {\n        if (pErr)\n            *pErr = zip.m_last_error;\n        return MZ_FALSE;\n    }\n\n    if (!mz_zip_validate_archive(&zip, flags))\n    {\n        actual_err = zip.m_last_error;\n        success = MZ_FALSE;\n    }\n\n    if (!mz_zip_reader_end_internal(&zip, success))\n    {\n        if (!actual_err)\n            actual_err = zip.m_last_error;\n        success = MZ_FALSE;\n    }\n\n    if (pErr)\n        *pErr = actual_err;\n\n    return success;\n}\n\n#ifndef MINIZ_NO_STDIO\nmz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr)\n{\n    mz_bool success = MZ_TRUE;\n    mz_zip_archive zip;\n    mz_zip_error actual_err = MZ_ZIP_NO_ERROR;\n\n    if (!pFilename)\n    {\n        if (pErr)\n            *pErr = MZ_ZIP_INVALID_PARAMETER;\n        return MZ_FALSE;\n    }\n\n    mz_zip_zero_struct(&zip);\n\n    if (!mz_zip_reader_init_file_v2(&zip, pFilename, flags, 0, 0))\n    {\n        if (pErr)\n            *pErr = zip.m_last_error;\n        return MZ_FALSE;\n    }\n\n    if (!mz_zip_validate_archive(&zip, flags))\n    {\n        actual_err = zip.m_last_error;\n        success = MZ_FALSE;\n    }\n\n    if (!mz_zip_reader_end_internal(&zip, success))\n    {\n        if (!actual_err)\n            actual_err = zip.m_last_error;\n        success = MZ_FALSE;\n    }\n\n    if (pErr)\n        *pErr = actual_err;\n\n    return success;\n}\n#endif /* #ifndef MINIZ_NO_STDIO */\n\n/* ------------------- .ZIP archive writing */\n\n#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\n\nstatic MZ_FORCEINLINE void mz_write_le16(mz_uint8 *p, mz_uint16 v)\n{\n    p[0] = (mz_uint8)v;\n    p[1] = (mz_uint8)(v >> 8);\n}\nstatic MZ_FORCEINLINE void mz_write_le32(mz_uint8 *p, mz_uint32 v)\n{\n    p[0] = (mz_uint8)v;\n    p[1] = (mz_uint8)(v >> 8);\n    p[2] = (mz_uint8)(v >> 16);\n    p[3] = (mz_uint8)(v >> 24);\n}\nstatic MZ_FORCEINLINE void mz_write_le64(mz_uint8 *p, mz_uint64 v)\n{\n    mz_write_le32(p, (mz_uint32)v);\n    mz_write_le32(p + sizeof(mz_uint32), (mz_uint32)(v >> 32));\n}\n\n#define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v))\n#define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v))\n#define MZ_WRITE_LE64(p, v) mz_write_le64((mz_uint8 *)(p), (mz_uint64)(v))\n\nstatic size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)\n{\n    mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\n    mz_zip_internal_state *pState = pZip->m_pState;\n    mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size);\n\n    if (!n)\n        return 0;\n\n    /* An allocation this big is likely to just fail on 32-bit systems, so don't even go there. */\n    if ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE);\n        return 0;\n    }\n\n    if (new_size > pState->m_mem_capacity)\n    {\n        void *pNew_block;\n        size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity);\n\n        while (new_capacity < new_size)\n            new_capacity *= 2;\n\n        if (NULL == (pNew_block = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity)))\n        {\n            mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n            return 0;\n        }\n\n        pState->m_pMem = pNew_block;\n        pState->m_mem_capacity = new_capacity;\n    }\n    memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n);\n    pState->m_mem_size = (size_t)new_size;\n    return n;\n}\n\nstatic mz_bool mz_zip_writer_end_internal(mz_zip_archive *pZip, mz_bool set_last_error)\n{\n    mz_zip_internal_state *pState;\n    mz_bool status = MZ_TRUE;\n\n    if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)))\n    {\n        if (set_last_error)\n            mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n        return MZ_FALSE;\n    }\n\n    pState = pZip->m_pState;\n    pZip->m_pState = NULL;\n    mz_zip_array_clear(pZip, &pState->m_central_dir);\n    mz_zip_array_clear(pZip, &pState->m_central_dir_offsets);\n    mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets);\n\n#ifndef MINIZ_NO_STDIO\n    if (pState->m_pFile)\n    {\n        if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE)\n        {\n            if (MZ_FCLOSE(pState->m_pFile) == EOF)\n            {\n                if (set_last_error)\n                    mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED);\n                status = MZ_FALSE;\n            }\n        }\n\n        pState->m_pFile = NULL;\n    }\n#endif /* #ifndef MINIZ_NO_STDIO */\n\n    if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem))\n    {\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pState->m_pMem);\n        pState->m_pMem = NULL;\n    }\n\n    pZip->m_pFree(pZip->m_pAlloc_opaque, pState);\n    pZip->m_zip_mode = MZ_ZIP_MODE_INVALID;\n    return status;\n}\n\nmz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags)\n{\n    mz_bool zip64 = (flags & MZ_ZIP_FLAG_WRITE_ZIP64) != 0;\n\n    if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING)\n    {\n        if (!pZip->m_pRead)\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n    }\n\n    if (pZip->m_file_offset_alignment)\n    {\n        /* Ensure user specified file offset alignment is a power of 2. */\n        if (pZip->m_file_offset_alignment & (pZip->m_file_offset_alignment - 1))\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n    }\n\n    if (!pZip->m_pAlloc)\n        pZip->m_pAlloc = miniz_def_alloc_func;\n    if (!pZip->m_pFree)\n        pZip->m_pFree = miniz_def_free_func;\n    if (!pZip->m_pRealloc)\n        pZip->m_pRealloc = miniz_def_realloc_func;\n\n    pZip->m_archive_size = existing_size;\n    pZip->m_central_directory_file_ofs = 0;\n    pZip->m_total_files = 0;\n\n    if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state))))\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n    memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state));\n\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8));\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32));\n    MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32));\n\n    pZip->m_pState->m_zip64 = zip64;\n    pZip->m_pState->m_zip64_has_extended_info_fields = zip64;\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_USER;\n    pZip->m_zip_mode = MZ_ZIP_MODE_WRITING;\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size)\n{\n    return mz_zip_writer_init_v2(pZip, existing_size, 0);\n}\n\nmz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags)\n{\n    pZip->m_pWrite = mz_zip_heap_write_func;\n    pZip->m_pNeeds_keepalive = NULL;\n\n    if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING)\n        pZip->m_pRead = mz_zip_mem_read_func;\n\n    pZip->m_pIO_opaque = pZip;\n\n    if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags))\n        return MZ_FALSE;\n\n    pZip->m_zip_type = MZ_ZIP_TYPE_HEAP;\n\n    if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning)))\n    {\n        if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, initial_allocation_size)))\n        {\n            mz_zip_writer_end_internal(pZip, MZ_FALSE);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n        pZip->m_pState->m_mem_capacity = initial_allocation_size;\n    }\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size)\n{\n    return mz_zip_writer_init_heap_v2(pZip, size_to_reserve_at_beginning, initial_allocation_size, 0);\n}\n\n#ifndef MINIZ_NO_STDIO\nstatic size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n)\n{\n    mz_zip_archive *pZip = (mz_zip_archive *)pOpaque;\n    mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile);\n\n    file_ofs += pZip->m_pState->m_file_archive_start_ofs;\n\n    if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET))))\n    {\n        mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED);\n        return 0;\n    }\n\n    return MZ_FWRITE(pBuf, 1, n, pZip->m_pState->m_pFile);\n}\n\nmz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning)\n{\n    return mz_zip_writer_init_file_v2(pZip, pFilename, size_to_reserve_at_beginning, 0);\n}\n\nmz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags)\n{\n    MZ_FILE *pFile;\n\n    pZip->m_pWrite = mz_zip_file_write_func;\n    pZip->m_pNeeds_keepalive = NULL;\n\n    if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING)\n        pZip->m_pRead = mz_zip_file_read_func;\n\n    pZip->m_pIO_opaque = pZip;\n\n    if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags))\n        return MZ_FALSE;\n\n    if (NULL == (pFile = MZ_FOPEN(pFilename, (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) ? \"w+b\" : \"wb\")))\n    {\n        mz_zip_writer_end(pZip);\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n    }\n\n    pZip->m_pState->m_pFile = pFile;\n    pZip->m_zip_type = MZ_ZIP_TYPE_FILE;\n\n    if (size_to_reserve_at_beginning)\n    {\n        mz_uint64 cur_ofs = 0;\n        char buf[4096];\n\n        MZ_CLEAR_ARR(buf);\n\n        do\n        {\n            size_t n = (size_t)MZ_MIN(sizeof(buf), size_to_reserve_at_beginning);\n            if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n)\n            {\n                mz_zip_writer_end(pZip);\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n            }\n            cur_ofs += n;\n            size_to_reserve_at_beginning -= n;\n        } while (size_to_reserve_at_beginning);\n    }\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags)\n{\n    pZip->m_pWrite = mz_zip_file_write_func;\n    pZip->m_pNeeds_keepalive = NULL;\n\n    if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING)\n        pZip->m_pRead = mz_zip_file_read_func;\n\n    pZip->m_pIO_opaque = pZip;\n\n    if (!mz_zip_writer_init_v2(pZip, 0, flags))\n        return MZ_FALSE;\n\n    pZip->m_pState->m_pFile = pFile;\n    pZip->m_pState->m_file_archive_start_ofs = MZ_FTELL64(pZip->m_pState->m_pFile);\n    pZip->m_zip_type = MZ_ZIP_TYPE_CFILE;\n\n    return MZ_TRUE;\n}\n#endif /* #ifndef MINIZ_NO_STDIO */\n\nmz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags)\n{\n    mz_zip_internal_state *pState;\n\n    if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (flags & MZ_ZIP_FLAG_WRITE_ZIP64)\n    {\n        /* We don't support converting a non-zip64 file to zip64 - this seems like more trouble than it's worth. (What about the existing 32-bit data descriptors that could follow the compressed data?) */\n        if (!pZip->m_pState->m_zip64)\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n    }\n\n    /* No sense in trying to write to an archive that's already at the support max size */\n    if (pZip->m_pState->m_zip64)\n    {\n        if (pZip->m_total_files == MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n    else\n    {\n        if (pZip->m_total_files == MZ_UINT16_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n\n        if ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE);\n    }\n\n    pState = pZip->m_pState;\n\n    if (pState->m_pFile)\n    {\n#ifdef MINIZ_NO_STDIO\n        (void)pFilename;\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n#else\n        if (pZip->m_pIO_opaque != pZip)\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n        if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE)\n        {\n            if (!pFilename)\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n            /* Archive is being read from stdio and was originally opened only for reading. Try to reopen as writable. */\n            if (NULL == (pState->m_pFile = MZ_FREOPEN(pFilename, \"r+b\", pState->m_pFile)))\n            {\n                /* The mz_zip_archive is now in a bogus state because pState->m_pFile is NULL, so just close it. */\n                mz_zip_reader_end_internal(pZip, MZ_FALSE);\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n            }\n        }\n\n        pZip->m_pWrite = mz_zip_file_write_func;\n        pZip->m_pNeeds_keepalive = NULL;\n#endif /* #ifdef MINIZ_NO_STDIO */\n    }\n    else if (pState->m_pMem)\n    {\n        /* Archive lives in a memory block. Assume it's from the heap that we can resize using the realloc callback. */\n        if (pZip->m_pIO_opaque != pZip)\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n        pState->m_mem_capacity = pState->m_mem_size;\n        pZip->m_pWrite = mz_zip_heap_write_func;\n        pZip->m_pNeeds_keepalive = NULL;\n    }\n    /* Archive is being read via a user provided read function - make sure the user has specified a write function too. */\n    else if (!pZip->m_pWrite)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    /* Start writing new files at the archive's current central directory location. */\n    /* TODO: We could add a flag that lets the user start writing immediately AFTER the existing central dir - this would be safer. */\n    pZip->m_archive_size = pZip->m_central_directory_file_ofs;\n    pZip->m_central_directory_file_ofs = 0;\n\n    /* Clear the sorted central dir offsets, they aren't useful or maintained now. */\n    /* Even though we're now in write mode, files can still be extracted and verified, but file locates will be slow. */\n    /* TODO: We could easily maintain the sorted central directory offsets. */\n    mz_zip_array_clear(pZip, &pZip->m_pState->m_sorted_central_dir_offsets);\n\n    pZip->m_zip_mode = MZ_ZIP_MODE_WRITING;\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename)\n{\n    return mz_zip_writer_init_from_reader_v2(pZip, pFilename, 0);\n}\n\n/* TODO: pArchive_name is a terrible name here! */\nmz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags)\n{\n    return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, level_and_flags, 0, 0);\n}\n\ntypedef struct\n{\n    mz_zip_archive *m_pZip;\n    mz_uint64 m_cur_archive_file_ofs;\n    mz_uint64 m_comp_size;\n} mz_zip_writer_add_state;\n\nstatic mz_bool mz_zip_writer_add_put_buf_callback(const void *pBuf, int len, void *pUser)\n{\n    mz_zip_writer_add_state *pState = (mz_zip_writer_add_state *)pUser;\n    if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, pState->m_cur_archive_file_ofs, pBuf, len) != len)\n        return MZ_FALSE;\n\n    pState->m_cur_archive_file_ofs += len;\n    pState->m_comp_size += len;\n    return MZ_TRUE;\n}\n\n#define MZ_ZIP64_MAX_LOCAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 2)\n#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 3)\nstatic mz_uint32 mz_zip_writer_create_zip64_extra_data(mz_uint8 *pBuf, mz_uint64 *pUncomp_size, mz_uint64 *pComp_size, mz_uint64 *pLocal_header_ofs)\n{\n    mz_uint8 *pDst = pBuf;\n    mz_uint32 field_size = 0;\n\n    MZ_WRITE_LE16(pDst + 0, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID);\n    MZ_WRITE_LE16(pDst + 2, 0);\n    pDst += sizeof(mz_uint16) * 2;\n\n    if (pUncomp_size)\n    {\n        MZ_WRITE_LE64(pDst, *pUncomp_size);\n        pDst += sizeof(mz_uint64);\n        field_size += sizeof(mz_uint64);\n    }\n\n    if (pComp_size)\n    {\n        MZ_WRITE_LE64(pDst, *pComp_size);\n        pDst += sizeof(mz_uint64);\n        field_size += sizeof(mz_uint64);\n    }\n\n    if (pLocal_header_ofs)\n    {\n        MZ_WRITE_LE64(pDst, *pLocal_header_ofs);\n        pDst += sizeof(mz_uint64);\n        field_size += sizeof(mz_uint64);\n    }\n\n    MZ_WRITE_LE16(pBuf + 2, field_size);\n\n    return (mz_uint32)(pDst - pBuf);\n}\n\nstatic mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date)\n{\n    (void)pZip;\n    memset(pDst, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_SIG_OFS, MZ_ZIP_LOCAL_DIR_HEADER_SIG);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_VERSION_NEEDED_OFS, method ? 20 : 0);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_BIT_FLAG_OFS, bit_flags);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_METHOD_OFS, method);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_TIME_OFS, dos_time);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_DATE_OFS, dos_date);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_CRC32_OFS, uncomp_crc32);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX));\n    MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX));\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILENAME_LEN_OFS, filename_size);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_EXTRA_LEN_OFS, extra_size);\n    return MZ_TRUE;\n}\n\nstatic mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst,\n                                                       mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size,\n                                                       mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32,\n                                                       mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date,\n                                                       mz_uint64 local_header_ofs, mz_uint32 ext_attributes)\n{\n    (void)pZip;\n    memset(pDst, 0, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_SIG_OFS, MZ_ZIP_CENTRAL_DIR_HEADER_SIG);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_NEEDED_OFS, method ? 20 : 0);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_BIT_FLAG_OFS, bit_flags);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_METHOD_OFS, method);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_TIME_OFS, dos_time);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_DATE_OFS, dos_date);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_CRC32_OFS, uncomp_crc32);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX));\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX));\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILENAME_LEN_OFS, filename_size);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_EXTRA_LEN_OFS, extra_size);\n    MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_COMMENT_LEN_OFS, comment_size);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS, ext_attributes);\n    MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_MIN(local_header_ofs, MZ_UINT32_MAX));\n    return MZ_TRUE;\n}\n\nstatic mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size,\n                                                const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size,\n                                                mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32,\n                                                mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date,\n                                                mz_uint64 local_header_ofs, mz_uint32 ext_attributes,\n                                                const char *user_extra_data, mz_uint user_extra_data_len)\n{\n    mz_zip_internal_state *pState = pZip->m_pState;\n    mz_uint32 central_dir_ofs = (mz_uint32)pState->m_central_dir.m_size;\n    size_t orig_central_dir_size = pState->m_central_dir.m_size;\n    mz_uint8 central_dir_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE];\n\n    if (!pZip->m_pState->m_zip64)\n    {\n        if (local_header_ofs > 0xFFFFFFFF)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE);\n    }\n\n    /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */\n    if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + user_extra_data_len + comment_size) >= MZ_UINT32_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n\n    if (!mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, (mz_uint16)(extra_size + user_extra_data_len), comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes))\n        return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n    if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) ||\n        (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, filename_size)) ||\n        (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, extra_size)) ||\n        (!mz_zip_array_push_back(pZip, &pState->m_central_dir, user_extra_data, user_extra_data_len)) ||\n        (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, comment_size)) ||\n        (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &central_dir_ofs, 1)))\n    {\n        /* Try to resize the central directory array back into its original state. */\n        mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n    }\n\n    return MZ_TRUE;\n}\n\nstatic mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name)\n{\n    /* Basic ZIP archive filename validity checks: Valid filenames cannot start with a forward slash, cannot contain a drive letter, and cannot use DOS-style backward slashes. */\n    if (*pArchive_name == '/')\n        return MZ_FALSE;\n\n    /* Making sure the name does not contain drive letters or DOS style backward slashes is the responsibility of the program using miniz*/\n\n    return MZ_TRUE;\n}\n\nstatic mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip)\n{\n    mz_uint32 n;\n    if (!pZip->m_file_offset_alignment)\n        return 0;\n    n = (mz_uint32)(pZip->m_archive_size & (pZip->m_file_offset_alignment - 1));\n    return (mz_uint)((pZip->m_file_offset_alignment - n) & (pZip->m_file_offset_alignment - 1));\n}\n\nstatic mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n)\n{\n    char buf[4096];\n    memset(buf, 0, MZ_MIN(sizeof(buf), n));\n    while (n)\n    {\n        mz_uint32 s = MZ_MIN(sizeof(buf), n);\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_file_ofs, buf, s) != s)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_file_ofs += s;\n        n -= s;\n    }\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,\n                                 mz_uint64 uncomp_size, mz_uint32 uncomp_crc32)\n{\n    return mz_zip_writer_add_mem_ex_v2(pZip, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, uncomp_size, uncomp_crc32, NULL, NULL, 0, NULL, 0);\n}\n\nmz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size,\n                                    mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified,\n                                    const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)\n{\n    mz_uint16 method = 0, dos_time = 0, dos_date = 0;\n    mz_uint level, ext_attributes = 0, num_alignment_padding_bytes;\n    mz_uint64 local_dir_header_ofs = pZip->m_archive_size, cur_archive_file_ofs = pZip->m_archive_size, comp_size = 0;\n    size_t archive_name_size;\n    mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE];\n    tdefl_compressor *pComp = NULL;\n    mz_bool store_data_uncompressed;\n    mz_zip_internal_state *pState;\n    mz_uint8 *pExtra_data = NULL;\n    mz_uint32 extra_size = 0;\n    mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE];\n    mz_uint16 bit_flags = 0;\n\n    if ((int)level_and_flags < 0)\n        level_and_flags = MZ_DEFAULT_LEVEL;\n\n    if (uncomp_size || (buf_size && !(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)))\n        bit_flags |= MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR;\n\n    if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME))\n        bit_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8;\n\n    level = level_and_flags & 0xF;\n    store_data_uncompressed = ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA));\n\n    if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    if (pState->m_zip64)\n    {\n        if (pZip->m_total_files == MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n    else\n    {\n        if (pZip->m_total_files == MZ_UINT16_MAX)\n        {\n            pState->m_zip64 = MZ_TRUE;\n            /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */\n        }\n        if (((mz_uint64)buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF))\n        {\n            pState->m_zip64 = MZ_TRUE;\n            /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */\n        }\n    }\n\n    if ((!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (uncomp_size))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!mz_zip_writer_validate_archive_name(pArchive_name))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME);\n\n#ifndef MINIZ_NO_TIME\n    if (last_modified != NULL)\n    {\n        mz_zip_time_t_to_dos_time(*last_modified, &dos_time, &dos_date);\n    }\n    else\n    {\n        MZ_TIME_T cur_time;\n        time(&cur_time);\n        mz_zip_time_t_to_dos_time(cur_time, &dos_time, &dos_date);\n    }\n#endif /* #ifndef MINIZ_NO_TIME */\n\n\tif (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\n\t{\n\t\tuncomp_crc32 = (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, buf_size);\n\t\tuncomp_size = buf_size;\n\t\tif (uncomp_size <= 3)\n\t\t{\n\t\t\tlevel = 0;\n\t\t\tstore_data_uncompressed = MZ_TRUE;\n\t\t}\n\t}\n\n    archive_name_size = strlen(pArchive_name);\n    if (archive_name_size > MZ_UINT16_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME);\n\n    num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\n\n    /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */\n    if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n\n    if (!pState->m_zip64)\n    {\n        /* Bail early if the archive would obviously become too large */\n        if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size\n\t\t\t+ MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + user_extra_data_len +\n\t\t\tpState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + user_extra_data_central_len\n\t\t\t+ MZ_ZIP_DATA_DESCRIPTER_SIZE32) > 0xFFFFFFFF)\n        {\n            pState->m_zip64 = MZ_TRUE;\n            /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */\n        }\n    }\n\n    if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/'))\n    {\n        /* Set DOS Subdirectory attribute bit. */\n        ext_attributes |= MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG;\n\n        /* Subdirectories cannot contain data. */\n        if ((buf_size) || (uncomp_size))\n            return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n    }\n\n    /* Try to do any allocations before writing to the archive, so if an allocation fails the file remains unmodified. (A good idea if we're doing an in-place modification.) */\n    if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + (pState->m_zip64 ? MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE : 0))) || (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1)))\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n    if ((!store_data_uncompressed) && (buf_size))\n    {\n        if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor))))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n    }\n\n    if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes))\n    {\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n        return MZ_FALSE;\n    }\n\n    local_dir_header_ofs += num_alignment_padding_bytes;\n    if (pZip->m_file_offset_alignment)\n    {\n        MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0);\n    }\n    cur_archive_file_ofs += num_alignment_padding_bytes;\n\n    MZ_CLEAR_ARR(local_dir_header);\n\n    if (!store_data_uncompressed || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))\n    {\n        method = MZ_DEFLATED;\n    }\n\n    if (pState->m_zip64)\n    {\n        if (uncomp_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX)\n        {\n            pExtra_data = extra_data;\n            extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL,\n                                                               (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n        }\n\n        if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, (mz_uint16)(extra_size + user_extra_data_len), 0, 0, 0, method, bit_flags, dos_time, dos_date))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += sizeof(local_dir_header);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n        cur_archive_file_ofs += archive_name_size;\n\n        if (pExtra_data != NULL)\n        {\n            if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size)\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n            cur_archive_file_ofs += extra_size;\n        }\n    }\n    else\n    {\n        if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX))\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n        if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, (mz_uint16)user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += sizeof(local_dir_header);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n        cur_archive_file_ofs += archive_name_size;\n    }\n\n\tif (user_extra_data_len > 0)\n\t{\n\t\tif (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len)\n\t\t\treturn mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n\t\tcur_archive_file_ofs += user_extra_data_len;\n\t}\n\n    if (store_data_uncompressed)\n    {\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, buf_size) != buf_size)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n\n        cur_archive_file_ofs += buf_size;\n        comp_size = buf_size;\n    }\n    else if (buf_size)\n    {\n        mz_zip_writer_add_state state;\n\n        state.m_pZip = pZip;\n        state.m_cur_archive_file_ofs = cur_archive_file_ofs;\n        state.m_comp_size = 0;\n\n        if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) ||\n            (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != TDEFL_STATUS_DONE))\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n            return mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED);\n        }\n\n        comp_size = state.m_comp_size;\n        cur_archive_file_ofs = state.m_cur_archive_file_ofs;\n    }\n\n    pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n    pComp = NULL;\n\n    if (uncomp_size)\n    {\n        mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64];\n        mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32;\n\n        MZ_ASSERT(bit_flags & MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR);\n\n        MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID);\n        MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32);\n        if (pExtra_data == NULL)\n        {\n            if (comp_size > MZ_UINT32_MAX)\n                return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n\n            MZ_WRITE_LE32(local_dir_footer + 8, comp_size);\n            MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size);\n        }\n        else\n        {\n            MZ_WRITE_LE64(local_dir_footer + 8, comp_size);\n            MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size);\n            local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64;\n        }\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size)\n            return MZ_FALSE;\n\n        cur_archive_file_ofs += local_dir_footer_size;\n    }\n\n    if (pExtra_data != NULL)\n    {\n        extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL,\n                                                           (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n    }\n\n    if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, (mz_uint16)extra_size, pComment,\n                                          comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes,\n                                          user_extra_data_central, user_extra_data_central_len))\n        return MZ_FALSE;\n\n    pZip->m_total_files++;\n    pZip->m_archive_size = cur_archive_file_ofs;\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pArchive_name, mz_file_read_func read_callback, void* callback_opaque, mz_uint64 max_size, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,\n                                const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)\n{\n    mz_uint16 gen_flags;\n    mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes;\n    mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0;\n    mz_uint64 local_dir_header_ofs, cur_archive_file_ofs = pZip->m_archive_size, uncomp_size = 0, comp_size = 0;\n    size_t archive_name_size;\n    mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE];\n    mz_uint8 *pExtra_data = NULL;\n    mz_uint32 extra_size = 0;\n    mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE];\n    mz_zip_internal_state *pState;\n    mz_uint64 file_ofs = 0, cur_archive_header_file_ofs;\n\n    if ((int)level_and_flags < 0)\n        level_and_flags = MZ_DEFAULT_LEVEL;\n    level = level_and_flags & 0xF;\n\n    gen_flags = (level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE) ? 0 : MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR;\n\n    if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME))\n        gen_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8;\n\n    /* Sanity checks */\n    if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    if ((!pState->m_zip64) && (max_size > MZ_UINT32_MAX))\n    {\n        /* Source file is too large for non-zip64 */\n        /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */\n        pState->m_zip64 = MZ_TRUE;\n    }\n\n    /* We could support this, but why? */\n    if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!mz_zip_writer_validate_archive_name(pArchive_name))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME);\n\n    if (pState->m_zip64)\n    {\n        if (pZip->m_total_files == MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n    else\n    {\n        if (pZip->m_total_files == MZ_UINT16_MAX)\n        {\n            pState->m_zip64 = MZ_TRUE;\n            /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */\n        }\n    }\n\n    archive_name_size = strlen(pArchive_name);\n    if (archive_name_size > MZ_UINT16_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME);\n\n    num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\n\n    /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */\n    if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n\n    if (!pState->m_zip64)\n    {\n        /* Bail early if the archive would obviously become too large */\n        if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE\n\t\t\t+ archive_name_size + comment_size + user_extra_data_len + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 1024\n\t\t\t+ MZ_ZIP_DATA_DESCRIPTER_SIZE32 + user_extra_data_central_len) > 0xFFFFFFFF)\n        {\n            pState->m_zip64 = MZ_TRUE;\n            /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */\n        }\n    }\n\n#ifndef MINIZ_NO_TIME\n    if (pFile_time)\n    {\n        mz_zip_time_t_to_dos_time(*pFile_time, &dos_time, &dos_date);\n    }\n#endif\n\n    if (max_size <= 3)\n        level = 0;\n\n    if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes))\n    {\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n    }\n\n    cur_archive_file_ofs += num_alignment_padding_bytes;\n    local_dir_header_ofs = cur_archive_file_ofs;\n\n    if (pZip->m_file_offset_alignment)\n    {\n        MZ_ASSERT((cur_archive_file_ofs & (pZip->m_file_offset_alignment - 1)) == 0);\n    }\n\n    if (max_size && level)\n    {\n        method = MZ_DEFLATED;\n    }\n\n    MZ_CLEAR_ARR(local_dir_header);\n    if (pState->m_zip64)\n    {\n        if (max_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX)\n        {\n            pExtra_data = extra_data;\n            if (level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE)\n                extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (max_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL,\n                                                               (max_size >= MZ_UINT32_MAX) ? &comp_size : NULL,\n                                                                (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n            else\n                extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, NULL,\n                                                                   NULL,\n                                                                   (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n        }\n\n        if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, (mz_uint16)(extra_size + user_extra_data_len), 0, 0, 0, method, gen_flags, dos_time, dos_date))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += sizeof(local_dir_header);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\n        {\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n\n        cur_archive_file_ofs += archive_name_size;\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += extra_size;\n    }\n    else\n    {\n        if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX))\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n        if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, (mz_uint16)user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += sizeof(local_dir_header);\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\n        {\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n\n        cur_archive_file_ofs += archive_name_size;\n    }\n\n    if (user_extra_data_len > 0)\n    {\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        cur_archive_file_ofs += user_extra_data_len;\n    }\n\n    if (max_size)\n    {\n        void *pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE);\n        if (!pRead_buf)\n        {\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (!level)\n        {\n            while (1)\n            {\n                size_t n = read_callback(callback_opaque, file_ofs, pRead_buf, MZ_ZIP_MAX_IO_BUF_SIZE);\n                if (n == 0)\n                    break;\n\n                if ((n > MZ_ZIP_MAX_IO_BUF_SIZE) || (file_ofs + n > max_size))\n                {\n                    pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n                    return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n                }\n                if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, n) != n)\n                {\n                    pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n                    return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n                }\n                file_ofs += n;\n                uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n);\n                cur_archive_file_ofs += n;\n            }\n            uncomp_size = file_ofs;\n            comp_size = uncomp_size;\n        }\n        else\n        {\n            mz_bool result = MZ_FALSE;\n            mz_zip_writer_add_state state;\n            tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor));\n            if (!pComp)\n            {\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n                return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n            }\n\n            state.m_pZip = pZip;\n            state.m_cur_archive_file_ofs = cur_archive_file_ofs;\n            state.m_comp_size = 0;\n\n            if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY)\n            {\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n                return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n            }\n\n            for (;;)\n            {\n                tdefl_status status;\n                tdefl_flush flush = TDEFL_NO_FLUSH;\n\n                size_t n = read_callback(callback_opaque, file_ofs, pRead_buf, MZ_ZIP_MAX_IO_BUF_SIZE);\n                if ((n > MZ_ZIP_MAX_IO_BUF_SIZE) || (file_ofs + n > max_size))\n                {\n                    mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n                    break;\n                }\n\n                file_ofs += n;\n                uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n);\n\n                if (pZip->m_pNeeds_keepalive != NULL && pZip->m_pNeeds_keepalive(pZip->m_pIO_opaque))\n                    flush = TDEFL_FULL_FLUSH;\n\n                if (n == 0)\n                    flush = TDEFL_FINISH;\n\n                status = tdefl_compress_buffer(pComp, pRead_buf, n, flush);\n                if (status == TDEFL_STATUS_DONE)\n                {\n                    result = MZ_TRUE;\n                    break;\n                }\n                else if (status != TDEFL_STATUS_OKAY)\n                {\n                    mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED);\n                    break;\n                }\n            }\n\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pComp);\n\n            if (!result)\n            {\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n                return MZ_FALSE;\n            }\n\n            uncomp_size = file_ofs;\n            comp_size = state.m_comp_size;\n            cur_archive_file_ofs = state.m_cur_archive_file_ofs;\n        }\n\n        pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf);\n    }\n\n    if (!(level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE))\n    {\n        mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64];\n        mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32;\n\n        MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID);\n        MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32);\n        if (pExtra_data == NULL)\n        {\n            if (comp_size > MZ_UINT32_MAX)\n                return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n\n            MZ_WRITE_LE32(local_dir_footer + 8, comp_size);\n            MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size);\n        }\n        else\n        {\n            MZ_WRITE_LE64(local_dir_footer + 8, comp_size);\n            MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size);\n            local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64;\n        }\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size)\n            return MZ_FALSE;\n\n        cur_archive_file_ofs += local_dir_footer_size;\n    }\n\n    if (level_and_flags & MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE)\n    {\n        if (pExtra_data != NULL)\n        {\n            extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (max_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL,\n                                                               (max_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n        }\n\n        if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header,\n                                                   (mz_uint16)archive_name_size, (mz_uint16)(extra_size + user_extra_data_len),\n                                                   (max_size >= MZ_UINT32_MAX) ? MZ_UINT32_MAX : uncomp_size, \n                                                    (max_size >= MZ_UINT32_MAX) ? MZ_UINT32_MAX : comp_size,\n                                                   uncomp_crc32, method, gen_flags, dos_time, dos_date))\n            return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR);\n\n        cur_archive_header_file_ofs = local_dir_header_ofs;\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_header_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header))\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        if (pExtra_data != NULL)\n        {\n            cur_archive_header_file_ofs += sizeof(local_dir_header);\n\n            if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_header_file_ofs, pArchive_name, archive_name_size) != archive_name_size)\n            {\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n            }\n\n            cur_archive_header_file_ofs += archive_name_size;\n\n            if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_header_file_ofs, extra_data, extra_size) != extra_size)\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n            cur_archive_header_file_ofs += extra_size;\n        }\n    }\n\n    if (pExtra_data != NULL)\n    {\n        extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL,\n                                                           (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL);\n    }\n\n    if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, (mz_uint16)extra_size, pComment, comment_size,\n                                          uncomp_size, comp_size, uncomp_crc32, method, gen_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes,\n                                          user_extra_data_central, user_extra_data_central_len))\n        return MZ_FALSE;\n\n    pZip->m_total_files++;\n    pZip->m_archive_size = cur_archive_file_ofs;\n\n    return MZ_TRUE;\n}\n\n#ifndef MINIZ_NO_STDIO\n\nstatic size_t mz_file_read_func_stdio(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n)\n{\n\tMZ_FILE *pSrc_file = (MZ_FILE *)pOpaque;\n\tmz_int64 cur_ofs = MZ_FTELL64(pSrc_file);\n\n\tif (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pSrc_file, (mz_int64)file_ofs, SEEK_SET))))\n\t\treturn 0;\n\n\treturn MZ_FREAD(pBuf, 1, n, pSrc_file);\n}\n\nmz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 max_size, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,\n\tconst char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len)\n{\n\treturn mz_zip_writer_add_read_buf_callback(pZip, pArchive_name, mz_file_read_func_stdio, pSrc_file, max_size, pFile_time, pComment, comment_size, level_and_flags,\n\t\tuser_extra_data, user_extra_data_len, user_extra_data_central, user_extra_data_central_len);\n}\n\nmz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)\n{\n    MZ_FILE *pSrc_file = NULL;\n    mz_uint64 uncomp_size = 0;\n    MZ_TIME_T file_modified_time;\n    MZ_TIME_T *pFile_time = NULL;\n    mz_bool status;\n\n    memset(&file_modified_time, 0, sizeof(file_modified_time));\n\n#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO)\n    pFile_time = &file_modified_time;\n    if (!mz_zip_get_file_modified_time(pSrc_filename, &file_modified_time))\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_STAT_FAILED);\n#endif\n\n    pSrc_file = MZ_FOPEN(pSrc_filename, \"rb\");\n    if (!pSrc_file)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED);\n\n    MZ_FSEEK64(pSrc_file, 0, SEEK_END);\n    uncomp_size = MZ_FTELL64(pSrc_file);\n    MZ_FSEEK64(pSrc_file, 0, SEEK_SET);\n\n    status = mz_zip_writer_add_cfile(pZip, pArchive_name, pSrc_file, uncomp_size, pFile_time, pComment, comment_size, level_and_flags, NULL, 0, NULL, 0);\n\n    MZ_FCLOSE(pSrc_file);\n\n    return status;\n}\n#endif /* #ifndef MINIZ_NO_STDIO */\n\nstatic mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, mz_uint32 ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start)\n{\n    /* + 64 should be enough for any new zip64 data */\n    if (!mz_zip_array_reserve(pZip, pNew_ext, ext_len + 64, MZ_FALSE))\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n    mz_zip_array_resize(pZip, pNew_ext, 0, MZ_FALSE);\n\n    if ((pUncomp_size) || (pComp_size) || (pLocal_header_ofs) || (pDisk_start))\n    {\n        mz_uint8 new_ext_block[64];\n        mz_uint8 *pDst = new_ext_block;\n        mz_write_le16(pDst, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID);\n        mz_write_le16(pDst + sizeof(mz_uint16), 0);\n        pDst += sizeof(mz_uint16) * 2;\n\n        if (pUncomp_size)\n        {\n            mz_write_le64(pDst, *pUncomp_size);\n            pDst += sizeof(mz_uint64);\n        }\n\n        if (pComp_size)\n        {\n            mz_write_le64(pDst, *pComp_size);\n            pDst += sizeof(mz_uint64);\n        }\n\n        if (pLocal_header_ofs)\n        {\n            mz_write_le64(pDst, *pLocal_header_ofs);\n            pDst += sizeof(mz_uint64);\n        }\n\n        if (pDisk_start)\n        {\n            mz_write_le32(pDst, *pDisk_start);\n            pDst += sizeof(mz_uint32);\n        }\n\n        mz_write_le16(new_ext_block + sizeof(mz_uint16), (mz_uint16)((pDst - new_ext_block) - sizeof(mz_uint16) * 2));\n\n        if (!mz_zip_array_push_back(pZip, pNew_ext, new_ext_block, pDst - new_ext_block))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n    }\n\n    if ((pExt) && (ext_len))\n    {\n        mz_uint32 extra_size_remaining = ext_len;\n        const mz_uint8 *pExtra_data = pExt;\n\n        do\n        {\n            mz_uint32 field_id, field_data_size, field_total_size;\n\n            if (extra_size_remaining < (sizeof(mz_uint16) * 2))\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n            field_id = MZ_READ_LE16(pExtra_data);\n            field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n            field_total_size = field_data_size + sizeof(mz_uint16) * 2;\n\n            if (field_total_size > extra_size_remaining)\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n            if (field_id != MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID)\n            {\n                if (!mz_zip_array_push_back(pZip, pNew_ext, pExtra_data, field_total_size))\n                    return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n            }\n\n            pExtra_data += field_total_size;\n            extra_size_remaining -= field_total_size;\n        } while (extra_size_remaining);\n    }\n\n    return MZ_TRUE;\n}\n\n/* TODO: This func is now pretty freakin complex due to zip64, split it up? */\nmz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index)\n{\n    mz_uint n, bit_flags, num_alignment_padding_bytes, src_central_dir_following_data_size;\n    mz_uint64 src_archive_bytes_remaining, local_dir_header_ofs;\n    mz_uint64 cur_src_file_ofs, cur_dst_file_ofs;\n    mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)];\n    mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32;\n    mz_uint8 new_central_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE];\n    size_t orig_central_dir_size;\n    mz_zip_internal_state *pState;\n    void *pBuf;\n    const mz_uint8 *pSrc_central_header;\n    mz_zip_archive_file_stat src_file_stat;\n    mz_uint32 src_filename_len, src_comment_len, src_ext_len;\n    mz_uint32 local_header_filename_size, local_header_extra_len;\n    mz_uint64 local_header_comp_size, local_header_uncomp_size;\n    mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE;\n\n    /* Sanity checks */\n    if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pSource_zip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    /* Don't support copying files from zip64 archives to non-zip64, even though in some cases this is possible */\n    if ((pSource_zip->m_pState->m_zip64) && (!pZip->m_pState->m_zip64))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    /* Get pointer to the source central dir header and crack it */\n    if (NULL == (pSrc_central_header = mz_zip_get_cdh(pSource_zip, src_file_index)))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_SIG_OFS) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    src_filename_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    src_comment_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS);\n    src_ext_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS);\n    src_central_dir_following_data_size = src_filename_len + src_ext_len + src_comment_len;\n\n    /* TODO: We don't support central dir's >= MZ_UINT32_MAX bytes right now (+32 fudge factor in case we need to add more extra data) */\n    if ((pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + 32) >= MZ_UINT32_MAX)\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n\n    num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip);\n\n    if (!pState->m_zip64)\n    {\n        if (pZip->m_total_files == MZ_UINT16_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n    else\n    {\n        /* TODO: Our zip64 support still has some 32-bit limits that may not be worth fixing. */\n        if (pZip->m_total_files == MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n\n    if (!mz_zip_file_stat_internal(pSource_zip, src_file_index, pSrc_central_header, &src_file_stat, NULL))\n        return MZ_FALSE;\n\n    cur_src_file_ofs = src_file_stat.m_local_header_ofs;\n    cur_dst_file_ofs = pZip->m_archive_size;\n\n    /* Read the source archive's local dir header */\n    if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n\n    if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n\n    cur_src_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE;\n\n    /* Compute the total size we need to copy (filename+extra data+compressed data) */\n    local_header_filename_size = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS);\n    local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS);\n    local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS);\n    local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS);\n    src_archive_bytes_remaining = local_header_filename_size + local_header_extra_len + src_file_stat.m_comp_size;\n\n    /* Try to find a zip64 extended information field */\n    if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX)))\n    {\n        mz_zip_array file_data_array;\n        const mz_uint8 *pExtra_data;\n        mz_uint32 extra_size_remaining = local_header_extra_len;\n\n        mz_zip_array_init(&file_data_array, 1);\n        if (!mz_zip_array_resize(pZip, &file_data_array, local_header_extra_len, MZ_FALSE))\n        {\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, src_file_stat.m_local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_size, file_data_array.m_p, local_header_extra_len) != local_header_extra_len)\n        {\n            mz_zip_array_clear(pZip, &file_data_array);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n        }\n\n        pExtra_data = (const mz_uint8 *)file_data_array.m_p;\n\n        do\n        {\n            mz_uint32 field_id, field_data_size, field_total_size;\n\n            if (extra_size_remaining < (sizeof(mz_uint16) * 2))\n            {\n                mz_zip_array_clear(pZip, &file_data_array);\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n            }\n\n            field_id = MZ_READ_LE16(pExtra_data);\n            field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16));\n            field_total_size = field_data_size + sizeof(mz_uint16) * 2;\n\n            if (field_total_size > extra_size_remaining)\n            {\n                mz_zip_array_clear(pZip, &file_data_array);\n                return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n            }\n\n            if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID)\n            {\n                const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32);\n\n                if (field_data_size < sizeof(mz_uint64) * 2)\n                {\n                    mz_zip_array_clear(pZip, &file_data_array);\n                    return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED);\n                }\n\n                local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data);\n                local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64)); /* may be 0 if there's a descriptor */\n\n                found_zip64_ext_data_in_ldir = MZ_TRUE;\n                break;\n            }\n\n            pExtra_data += field_total_size;\n            extra_size_remaining -= field_total_size;\n        } while (extra_size_remaining);\n\n        mz_zip_array_clear(pZip, &file_data_array);\n    }\n\n    if (!pState->m_zip64)\n    {\n        /* Try to detect if the new archive will most likely wind up too big and bail early (+(sizeof(mz_uint32) * 4) is for the optional descriptor which could be present, +64 is a fudge factor). */\n        /* We also check when the archive is finalized so this doesn't need to be perfect. */\n        mz_uint64 approx_new_archive_size = cur_dst_file_ofs + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + src_archive_bytes_remaining + (sizeof(mz_uint32) * 4) +\n                                            pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 64;\n\n        if (approx_new_archive_size >= MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n    }\n\n    /* Write dest archive padding */\n    if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, num_alignment_padding_bytes))\n        return MZ_FALSE;\n\n    cur_dst_file_ofs += num_alignment_padding_bytes;\n\n    local_dir_header_ofs = cur_dst_file_ofs;\n    if (pZip->m_file_offset_alignment)\n    {\n        MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0);\n    }\n\n    /* The original zip's local header+ext block doesn't change, even with zip64, so we can just copy it over to the dest zip */\n    if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n    cur_dst_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE;\n\n    /* Copy over the source archive bytes to the dest archive, also ensure we have enough buf space to handle optional data descriptor */\n    if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)MZ_MAX(32U, MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining)))))\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n    while (src_archive_bytes_remaining)\n    {\n        n = (mz_uint)MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining);\n        if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, n) != n)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n        }\n        cur_src_file_ofs += n;\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n        cur_dst_file_ofs += n;\n\n        src_archive_bytes_remaining -= n;\n    }\n\n    /* Now deal with the optional data descriptor */\n    bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS);\n    if (bit_flags & 8)\n    {\n        /* Copy data descriptor */\n        if ((pSource_zip->m_pState->m_zip64) || (found_zip64_ext_data_in_ldir))\n        {\n            /* src is zip64, dest must be zip64 */\n\n            /* name\t\t\tuint32_t's */\n            /* id\t\t\t\t1 (optional in zip64?) */\n            /* crc\t\t\t1 */\n            /* comp_size\t2 */\n            /* uncomp_size 2 */\n            if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, (sizeof(mz_uint32) * 6)) != (sizeof(mz_uint32) * 6))\n            {\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n            }\n\n            n = sizeof(mz_uint32) * ((MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID) ? 6 : 5);\n        }\n        else\n        {\n            /* src is NOT zip64 */\n            mz_bool has_id;\n\n            if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4)\n            {\n                pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n                return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED);\n            }\n\n            has_id = (MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID);\n\n            if (pZip->m_pState->m_zip64)\n            {\n                /* dest is zip64, so upgrade the data descriptor */\n                const mz_uint8 *pSrc_descriptor = (const mz_uint8 *)pBuf + (has_id ? sizeof(mz_uint32) : 0);\n                const mz_uint32 src_crc32 = MZ_READ_LE32(pSrc_descriptor);\n                const mz_uint64 src_comp_size = MZ_READ_LE32(pSrc_descriptor + sizeof(mz_uint32));\n                const mz_uint64 src_uncomp_size = MZ_READ_LE32(pSrc_descriptor + 2*sizeof(mz_uint32));\n\n                mz_write_le32((mz_uint8 *)pBuf, MZ_ZIP_DATA_DESCRIPTOR_ID);\n                mz_write_le32((mz_uint8 *)pBuf + sizeof(mz_uint32) * 1, src_crc32);\n                mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 2, src_comp_size);\n                mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 4, src_uncomp_size);\n\n                n = sizeof(mz_uint32) * 6;\n            }\n            else\n            {\n                /* dest is NOT zip64, just copy it as-is */\n                n = sizeof(mz_uint32) * (has_id ? 4 : 3);\n            }\n        }\n\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n)\n        {\n            pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n        }\n\n        cur_src_file_ofs += n;\n        cur_dst_file_ofs += n;\n    }\n    pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf);\n\n    /* Finally, add the new central dir header */\n    orig_central_dir_size = pState->m_central_dir.m_size;\n\n    memcpy(new_central_header, pSrc_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE);\n\n    if (pState->m_zip64)\n    {\n        /* This is the painful part: We need to write a new central dir header + ext block with updated zip64 fields, and ensure the old fields (if any) are not included. */\n        const mz_uint8 *pSrc_ext = pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len;\n        mz_zip_array new_ext_block;\n\n        mz_zip_array_init(&new_ext_block, sizeof(mz_uint8));\n\n        MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_UINT32_MAX);\n        MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_UINT32_MAX);\n        MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_UINT32_MAX);\n\n        if (!mz_zip_writer_update_zip64_extension_block(&new_ext_block, pZip, pSrc_ext, src_ext_len, &src_file_stat.m_comp_size, &src_file_stat.m_uncomp_size, &local_dir_header_ofs, NULL))\n        {\n            mz_zip_array_clear(pZip, &new_ext_block);\n            return MZ_FALSE;\n        }\n\n        MZ_WRITE_LE16(new_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS, new_ext_block.m_size);\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE))\n        {\n            mz_zip_array_clear(pZip, &new_ext_block);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_filename_len))\n        {\n            mz_zip_array_clear(pZip, &new_ext_block);\n            mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_ext_block.m_p, new_ext_block.m_size))\n        {\n            mz_zip_array_clear(pZip, &new_ext_block);\n            mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len + src_ext_len, src_comment_len))\n        {\n            mz_zip_array_clear(pZip, &new_ext_block);\n            mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n\n        mz_zip_array_clear(pZip, &new_ext_block);\n    }\n    else\n    {\n        /* sanity checks */\n        if (cur_dst_file_ofs > MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n\n        if (local_dir_header_ofs >= MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE);\n\n        MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_dir_header_ofs);\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE))\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n\n        if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_central_dir_following_data_size))\n        {\n            mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n            return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n        }\n    }\n\n    /* This shouldn't trigger unless we screwed up during the initial sanity checks */\n    if (pState->m_central_dir.m_size >= MZ_UINT32_MAX)\n    {\n        /* TODO: Support central dirs >= 32-bits in size */\n        mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n        return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE);\n    }\n\n    n = (mz_uint32)orig_central_dir_size;\n    if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1))\n    {\n        mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE);\n        return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED);\n    }\n\n    pZip->m_total_files++;\n    pZip->m_archive_size = cur_dst_file_ofs;\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip)\n{\n    mz_zip_internal_state *pState;\n    mz_uint64 central_dir_ofs, central_dir_size;\n    mz_uint8 hdr[256];\n\n    if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    pState = pZip->m_pState;\n\n    if (pState->m_zip64)\n    {\n        if ((mz_uint64)pState->m_central_dir.m_size >= MZ_UINT32_MAX)\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n    else\n    {\n        if ((pZip->m_total_files > MZ_UINT16_MAX) || ((pZip->m_archive_size + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX))\n            return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES);\n    }\n\n    central_dir_ofs = 0;\n    central_dir_size = 0;\n    if (pZip->m_total_files)\n    {\n        /* Write central directory */\n        central_dir_ofs = pZip->m_archive_size;\n        central_dir_size = pState->m_central_dir.m_size;\n        pZip->m_central_directory_file_ofs = central_dir_ofs;\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, pState->m_central_dir.m_p, (size_t)central_dir_size) != central_dir_size)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        pZip->m_archive_size += central_dir_size;\n    }\n\n    if (pState->m_zip64)\n    {\n        /* Write zip64 end of central directory header */\n        mz_uint64 rel_ofs_to_zip64_ecdr = pZip->m_archive_size;\n\n        MZ_CLEAR_ARR(hdr);\n        MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDH_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - sizeof(mz_uint32) - sizeof(mz_uint64));\n        MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS, 0x031E); /* TODO: always Unix */\n        MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_NEEDED_OFS, 0x002D);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, pZip->m_total_files);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS, pZip->m_total_files);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_SIZE_OFS, central_dir_size);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_OFS_OFS, central_dir_ofs);\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE;\n\n        /* Write zip64 end of central directory locator */\n        MZ_CLEAR_ARR(hdr);\n        MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG);\n        MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS, rel_ofs_to_zip64_ecdr);\n        MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS, 1);\n        if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE)\n            return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n        pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE;\n    }\n\n    /* Write end of central directory record */\n    MZ_CLEAR_ARR(hdr);\n    MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG);\n    MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files));\n    MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files));\n    MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_SIZE_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_size));\n    MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_OFS_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_ofs));\n\n    if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE)\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED);\n\n#ifndef MINIZ_NO_STDIO\n    if ((pState->m_pFile) && (MZ_FFLUSH(pState->m_pFile) == EOF))\n        return mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED);\n#endif /* #ifndef MINIZ_NO_STDIO */\n\n    pZip->m_archive_size += MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE;\n\n    pZip->m_zip_mode = MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED;\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize)\n{\n    if ((!ppBuf) || (!pSize))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    *ppBuf = NULL;\n    *pSize = 0;\n\n    if ((!pZip) || (!pZip->m_pState))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (pZip->m_pWrite != mz_zip_heap_write_func)\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    if (!mz_zip_writer_finalize_archive(pZip))\n        return MZ_FALSE;\n\n    *ppBuf = pZip->m_pState->m_pMem;\n    *pSize = pZip->m_pState->m_mem_size;\n    pZip->m_pState->m_pMem = NULL;\n    pZip->m_pState->m_mem_size = pZip->m_pState->m_mem_capacity = 0;\n\n    return MZ_TRUE;\n}\n\nmz_bool mz_zip_writer_end(mz_zip_archive *pZip)\n{\n    return mz_zip_writer_end_internal(pZip, MZ_TRUE);\n}\n\n#ifndef MINIZ_NO_STDIO\nmz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags)\n{\n    return mz_zip_add_mem_to_archive_file_in_place_v2(pZip_filename, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, NULL);\n}\n\nmz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr)\n{\n    mz_bool status, created_new_archive = MZ_FALSE;\n    mz_zip_archive zip_archive;\n    struct MZ_FILE_STAT_STRUCT file_stat;\n    mz_zip_error actual_err = MZ_ZIP_NO_ERROR;\n\n    mz_zip_zero_struct(&zip_archive);\n    if ((int)level_and_flags < 0)\n        level_and_flags = MZ_DEFAULT_LEVEL;\n\n    if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION))\n    {\n        if (pErr)\n            *pErr = MZ_ZIP_INVALID_PARAMETER;\n        return MZ_FALSE;\n    }\n\n    if (!mz_zip_writer_validate_archive_name(pArchive_name))\n    {\n        if (pErr)\n            *pErr = MZ_ZIP_INVALID_FILENAME;\n        return MZ_FALSE;\n    }\n\n    /* Important: The regular non-64 bit version of stat() can fail here if the file is very large, which could cause the archive to be overwritten. */\n    /* So be sure to compile with _LARGEFILE64_SOURCE 1 */\n    if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0)\n    {\n        /* Create a new archive. */\n        if (!mz_zip_writer_init_file_v2(&zip_archive, pZip_filename, 0, level_and_flags))\n        {\n            if (pErr)\n                *pErr = zip_archive.m_last_error;\n            return MZ_FALSE;\n        }\n\n        created_new_archive = MZ_TRUE;\n    }\n    else\n    {\n        /* Append to an existing archive. */\n        if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, level_and_flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0))\n        {\n            if (pErr)\n                *pErr = zip_archive.m_last_error;\n            return MZ_FALSE;\n        }\n\n        if (!mz_zip_writer_init_from_reader_v2(&zip_archive, pZip_filename, level_and_flags))\n        {\n            if (pErr)\n                *pErr = zip_archive.m_last_error;\n\n            mz_zip_reader_end_internal(&zip_archive, MZ_FALSE);\n\n            return MZ_FALSE;\n        }\n    }\n\n    status = mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0);\n    actual_err = zip_archive.m_last_error;\n\n    /* Always finalize, even if adding failed for some reason, so we have a valid central directory. (This may not always succeed, but we can try.) */\n    if (!mz_zip_writer_finalize_archive(&zip_archive))\n    {\n        if (!actual_err)\n            actual_err = zip_archive.m_last_error;\n\n        status = MZ_FALSE;\n    }\n\n    if (!mz_zip_writer_end_internal(&zip_archive, status))\n    {\n        if (!actual_err)\n            actual_err = zip_archive.m_last_error;\n\n        status = MZ_FALSE;\n    }\n\n    if ((!status) && (created_new_archive))\n    {\n        /* It's a new archive and something went wrong, so just delete it. */\n        int ignoredStatus = MZ_DELETE_FILE(pZip_filename);\n        (void)ignoredStatus;\n    }\n\n    if (pErr)\n        *pErr = actual_err;\n\n    return status;\n}\n\nvoid *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr)\n{\n    mz_uint32 file_index;\n    mz_zip_archive zip_archive;\n    void *p = NULL;\n\n    if (pSize)\n        *pSize = 0;\n\n    if ((!pZip_filename) || (!pArchive_name))\n    {\n        if (pErr)\n            *pErr = MZ_ZIP_INVALID_PARAMETER;\n\n        return NULL;\n    }\n\n    mz_zip_zero_struct(&zip_archive);\n    if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0))\n    {\n        if (pErr)\n            *pErr = zip_archive.m_last_error;\n\n        return NULL;\n    }\n\n    if (mz_zip_reader_locate_file_v2(&zip_archive, pArchive_name, pComment, flags, &file_index))\n    {\n        p = mz_zip_reader_extract_to_heap(&zip_archive, file_index, pSize, flags);\n    }\n\n    mz_zip_reader_end_internal(&zip_archive, p != NULL);\n\n    if (pErr)\n        *pErr = zip_archive.m_last_error;\n\n    return p;\n}\n\nvoid *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags)\n{\n    return mz_zip_extract_archive_file_to_heap_v2(pZip_filename, pArchive_name, NULL, pSize, flags, NULL);\n}\n\n#endif /* #ifndef MINIZ_NO_STDIO */\n\n#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */\n\n/* ------------------- Misc utils */\n\nmz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip)\n{\n    return pZip ? pZip->m_zip_mode : MZ_ZIP_MODE_INVALID;\n}\n\nmz_zip_type mz_zip_get_type(mz_zip_archive *pZip)\n{\n    return pZip ? pZip->m_zip_type : MZ_ZIP_TYPE_INVALID;\n}\n\nmz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num)\n{\n    mz_zip_error prev_err;\n\n    if (!pZip)\n        return MZ_ZIP_INVALID_PARAMETER;\n\n    prev_err = pZip->m_last_error;\n\n    pZip->m_last_error = err_num;\n    return prev_err;\n}\n\nmz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip)\n{\n    if (!pZip)\n        return MZ_ZIP_INVALID_PARAMETER;\n\n    return pZip->m_last_error;\n}\n\nmz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip)\n{\n    return mz_zip_set_last_error(pZip, MZ_ZIP_NO_ERROR);\n}\n\nmz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip)\n{\n    mz_zip_error prev_err;\n\n    if (!pZip)\n        return MZ_ZIP_INVALID_PARAMETER;\n\n    prev_err = pZip->m_last_error;\n\n    pZip->m_last_error = MZ_ZIP_NO_ERROR;\n    return prev_err;\n}\n\nconst char *mz_zip_get_error_string(mz_zip_error mz_err)\n{\n    switch (mz_err)\n    {\n        case MZ_ZIP_NO_ERROR:\n            return \"no error\";\n        case MZ_ZIP_UNDEFINED_ERROR:\n            return \"undefined error\";\n        case MZ_ZIP_TOO_MANY_FILES:\n            return \"too many files\";\n        case MZ_ZIP_FILE_TOO_LARGE:\n            return \"file too large\";\n        case MZ_ZIP_UNSUPPORTED_METHOD:\n            return \"unsupported method\";\n        case MZ_ZIP_UNSUPPORTED_ENCRYPTION:\n            return \"unsupported encryption\";\n        case MZ_ZIP_UNSUPPORTED_FEATURE:\n            return \"unsupported feature\";\n        case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR:\n            return \"failed finding central directory\";\n        case MZ_ZIP_NOT_AN_ARCHIVE:\n            return \"not a ZIP archive\";\n        case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED:\n            return \"invalid header or archive is corrupted\";\n        case MZ_ZIP_UNSUPPORTED_MULTIDISK:\n            return \"unsupported multidisk archive\";\n        case MZ_ZIP_DECOMPRESSION_FAILED:\n            return \"decompression failed or archive is corrupted\";\n        case MZ_ZIP_COMPRESSION_FAILED:\n            return \"compression failed\";\n        case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE:\n            return \"unexpected decompressed size\";\n        case MZ_ZIP_CRC_CHECK_FAILED:\n            return \"CRC-32 check failed\";\n        case MZ_ZIP_UNSUPPORTED_CDIR_SIZE:\n            return \"unsupported central directory size\";\n        case MZ_ZIP_ALLOC_FAILED:\n            return \"allocation failed\";\n        case MZ_ZIP_FILE_OPEN_FAILED:\n            return \"file open failed\";\n        case MZ_ZIP_FILE_CREATE_FAILED:\n            return \"file create failed\";\n        case MZ_ZIP_FILE_WRITE_FAILED:\n            return \"file write failed\";\n        case MZ_ZIP_FILE_READ_FAILED:\n            return \"file read failed\";\n        case MZ_ZIP_FILE_CLOSE_FAILED:\n            return \"file close failed\";\n        case MZ_ZIP_FILE_SEEK_FAILED:\n            return \"file seek failed\";\n        case MZ_ZIP_FILE_STAT_FAILED:\n            return \"file stat failed\";\n        case MZ_ZIP_INVALID_PARAMETER:\n            return \"invalid parameter\";\n        case MZ_ZIP_INVALID_FILENAME:\n            return \"invalid filename\";\n        case MZ_ZIP_BUF_TOO_SMALL:\n            return \"buffer too small\";\n        case MZ_ZIP_INTERNAL_ERROR:\n            return \"internal error\";\n        case MZ_ZIP_FILE_NOT_FOUND:\n            return \"file not found\";\n        case MZ_ZIP_ARCHIVE_TOO_LARGE:\n            return \"archive is too large\";\n        case MZ_ZIP_VALIDATION_FAILED:\n            return \"validation failed\";\n        case MZ_ZIP_WRITE_CALLBACK_FAILED:\n            return \"write callback failed\";\n\tcase MZ_ZIP_TOTAL_ERRORS:\n            return \"total errors\";\n        default:\n            break;\n    }\n\n    return \"unknown error\";\n}\n\n/* Note: Just because the archive is not zip64 doesn't necessarily mean it doesn't have Zip64 extended information extra field, argh. */\nmz_bool mz_zip_is_zip64(mz_zip_archive *pZip)\n{\n    if ((!pZip) || (!pZip->m_pState))\n        return MZ_FALSE;\n\n    return pZip->m_pState->m_zip64;\n}\n\nsize_t mz_zip_get_central_dir_size(mz_zip_archive *pZip)\n{\n    if ((!pZip) || (!pZip->m_pState))\n        return 0;\n\n    return pZip->m_pState->m_central_dir.m_size;\n}\n\nmz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip)\n{\n    return pZip ? pZip->m_total_files : 0;\n}\n\nmz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip)\n{\n    if (!pZip)\n        return 0;\n    return pZip->m_archive_size;\n}\n\nmz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip)\n{\n    if ((!pZip) || (!pZip->m_pState))\n        return 0;\n    return pZip->m_pState->m_file_archive_start_ofs;\n}\n\nMZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip)\n{\n    if ((!pZip) || (!pZip->m_pState))\n        return 0;\n    return pZip->m_pState->m_pFile;\n}\n\nsize_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n)\n{\n    if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pZip->m_pRead))\n        return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n\n    return pZip->m_pRead(pZip->m_pIO_opaque, file_ofs, pBuf, n);\n}\n\nmz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size)\n{\n    mz_uint n;\n    const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index);\n    if (!p)\n    {\n        if (filename_buf_size)\n            pFilename[0] = '\\0';\n        mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER);\n        return 0;\n    }\n    n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS);\n    if (filename_buf_size)\n    {\n        n = MZ_MIN(n, filename_buf_size - 1);\n        memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n);\n        pFilename[n] = '\\0';\n    }\n    return n + 1;\n}\n\nmz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat)\n{\n    return mz_zip_file_stat_internal(pZip, file_index, mz_zip_get_cdh(pZip, file_index), pStat, NULL);\n}\n\nmz_bool mz_zip_end(mz_zip_archive *pZip)\n{\n    if (!pZip)\n        return MZ_FALSE;\n\n    if (pZip->m_zip_mode == MZ_ZIP_MODE_READING)\n        return mz_zip_reader_end(pZip);\n#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\n    else if ((pZip->m_zip_mode == MZ_ZIP_MODE_WRITING) || (pZip->m_zip_mode == MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED))\n        return mz_zip_writer_end(pZip);\n#endif\n\n    return MZ_FALSE;\n}\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /*#ifndef MINIZ_NO_ARCHIVE_APIS*/\n"
  },
  {
    "path": "libraries/miniz.h",
    "content": "#ifndef MINIZ_EXPORT\n#define MINIZ_EXPORT\n#endif\n/* miniz.c 3.0.0 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing\n   See \"unlicense\" statement at the end of this file.\n   Rich Geldreich <richgel99@gmail.com>, last updated Oct. 13, 2013\n   Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt\n\n   Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define\n   MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros).\n\n   * Low-level Deflate/Inflate implementation notes:\n\n     Compression: Use the \"tdefl\" API's. The compressor supports raw, static, and dynamic blocks, lazy or\n     greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses\n     approximately as well as zlib.\n\n     Decompression: Use the \"tinfl\" API's. The entire decompressor is implemented as a single function\n     coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory\n     block large enough to hold the entire file.\n\n     The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation.\n\n   * zlib-style API notes:\n\n     miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in\n     zlib replacement in many apps:\n        The z_stream struct, optional memory allocation callbacks\n        deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound\n        inflateInit/inflateInit2/inflate/inflateReset/inflateEnd\n        compress, compress2, compressBound, uncompress\n        CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines.\n        Supports raw deflate streams or standard zlib streams with adler-32 checking.\n\n     Limitations:\n      The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries.\n      I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but\n      there are no guarantees that miniz.c pulls this off perfectly.\n\n   * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by\n     Alex Evans. Supports 1-4 bytes/pixel images.\n\n   * ZIP archive API notes:\n\n     The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to\n     get the job done with minimal fuss. There are simple API's to retrieve file information, read files from\n     existing archives, create new archives, append new files to existing archives, or clone archive data from\n     one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h),\n     or you can specify custom file read/write callbacks.\n\n     - Archive reading: Just call this function to read a single file from a disk archive:\n\n      void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name,\n        size_t *pSize, mz_uint zip_flags);\n\n     For more complex cases, use the \"mz_zip_reader\" functions. Upon opening an archive, the entire central\n     directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files.\n\n     - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file:\n\n     int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags);\n\n     The locate operation can optionally check file comments too, which (as one example) can be used to identify\n     multiple versions of the same file in an archive. This function uses a simple linear search through the central\n     directory, so it's not very fast.\n\n     Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and\n     retrieve detailed info on each file by calling mz_zip_reader_file_stat().\n\n     - Archive creation: Use the \"mz_zip_writer\" functions. The ZIP writer immediately writes compressed file data\n     to disk and builds an exact image of the central directory in memory. The central directory image is written\n     all at once at the end of the archive file when the archive is finalized.\n\n     The archive writer can optionally align each file's local header and file data to any power of 2 alignment,\n     which can be useful when the archive will be read from optical media. Also, the writer supports placing\n     arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still\n     readable by any ZIP tool.\n\n     - Archive appending: The simple way to add a single file to an archive is to call this function:\n\n      mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name,\n        const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\n\n     The archive will be created if it doesn't already exist, otherwise it'll be appended to.\n     Note the appending is done in-place and is not an atomic operation, so if something goes wrong\n     during the operation it's possible the archive could be left without a central directory (although the local\n     file headers and file data will be fine, so the archive will be recoverable).\n\n     For more complex archive modification scenarios:\n     1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to\n     preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the\n     compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and\n     you're done. This is safe but requires a bunch of temporary disk space or heap memory.\n\n     2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(),\n     append new files as needed, then finalize the archive which will write an updated central directory to the\n     original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a\n     possibility that the archive's central directory could be lost with this method if anything goes wrong, though.\n\n     - ZIP archive support limitations:\n     No spanning support. Extraction functions can only handle unencrypted, stored or deflated files.\n     Requires streams capable of seeking.\n\n   * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the\n     below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it.\n\n   * Important: For best perf. be sure to customize the below macros for your target platform:\n     #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1\n     #define MINIZ_LITTLE_ENDIAN 1\n     #define MINIZ_HAS_64BIT_REGISTERS 1\n\n   * On platforms using glibc, Be sure to \"#define _LARGEFILE64_SOURCE 1\" before including miniz.c to ensure miniz\n     uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files\n     (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes).\n*/\n#pragma once\n\n\n\n/* Defines to completely disable specific portions of miniz.c: \n   If all macros here are defined the only functionality remaining will be CRC-32 and adler-32. */\n\n/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */\n/*#define MINIZ_NO_STDIO */\n\n/* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */\n/* get/set file times, and the C run-time funcs that get/set times won't be called. */\n/* The current downside is the times written to your archives will be from 1979. */\n/*#define MINIZ_NO_TIME */\n\n/* Define MINIZ_NO_DEFLATE_APIS to disable all compression API's. */\n/*#define MINIZ_NO_DEFLATE_APIS */\n\n/* Define MINIZ_NO_INFLATE_APIS to disable all decompression API's. */\n/*#define MINIZ_NO_INFLATE_APIS */\n\n/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */\n/*#define MINIZ_NO_ARCHIVE_APIS */\n\n/* Define MINIZ_NO_ARCHIVE_WRITING_APIS to disable all writing related ZIP archive API's. */\n/*#define MINIZ_NO_ARCHIVE_WRITING_APIS */\n\n/* Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. */\n/*#define MINIZ_NO_ZLIB_APIS */\n\n/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */\n/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */\n\n/* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. \n   Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc\n   callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user\n   functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */\n/*#define MINIZ_NO_MALLOC */\n\n#ifdef MINIZ_NO_INFLATE_APIS\n#define MINIZ_NO_ARCHIVE_APIS\n#endif\n\n#ifdef MINIZ_NO_DEFLATE_APIS\n#define MINIZ_NO_ARCHIVE_WRITING_APIS\n#endif\n\n#if defined(__TINYC__) && (defined(__linux) || defined(__linux__))\n/* TODO: Work around \"error: include file 'sys\\utime.h' when compiling with tcc on Linux */\n#define MINIZ_NO_TIME\n#endif\n\n#include <stddef.h>\n\n#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS)\n#include <time.h>\n#endif\n\n#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__)\n/* MINIZ_X86_OR_X64_CPU is only used to help set the below macros. */\n#define MINIZ_X86_OR_X64_CPU 1\n#else\n#define MINIZ_X86_OR_X64_CPU 0\n#endif\n\n/* Set MINIZ_LITTLE_ENDIAN only if not set */\n#if !defined(MINIZ_LITTLE_ENDIAN)\n#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__)\n\n#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)\n/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */\n#define MINIZ_LITTLE_ENDIAN 1\n#else\n#define MINIZ_LITTLE_ENDIAN 0\n#endif\n\n#else\n\n#if MINIZ_X86_OR_X64_CPU\n#define MINIZ_LITTLE_ENDIAN 1\n#else\n#define MINIZ_LITTLE_ENDIAN 0\n#endif\n\n#endif\n#endif\n\n/* Using unaligned loads and stores causes errors when using UBSan */\n#if defined(__has_feature)\n#if __has_feature(undefined_behavior_sanitizer)\n#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0\n#endif\n#endif\n\n/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES only if not set */\n#if !defined(MINIZ_USE_UNALIGNED_LOADS_AND_STORES)\n#if MINIZ_X86_OR_X64_CPU\n/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */\n#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0\n#define MINIZ_UNALIGNED_USE_MEMCPY\n#else\n#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0\n#endif\n#endif\n\n#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__)\n/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions). */\n#define MINIZ_HAS_64BIT_REGISTERS 1\n#else\n#define MINIZ_HAS_64BIT_REGISTERS 0\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------------- zlib-style API Definitions. */\n\n/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! */\ntypedef unsigned long mz_ulong;\n\n/* mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC macro) to release a block allocated from the heap. */\nMINIZ_EXPORT void mz_free(void *p);\n\n#define MZ_ADLER32_INIT (1)\n/* mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL. */\nMINIZ_EXPORT mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len);\n\n#define MZ_CRC32_INIT (0)\n/* mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. */\nMINIZ_EXPORT mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len);\n\n/* Compression strategies. */\nenum\n{\n    MZ_DEFAULT_STRATEGY = 0,\n    MZ_FILTERED = 1,\n    MZ_HUFFMAN_ONLY = 2,\n    MZ_RLE = 3,\n    MZ_FIXED = 4\n};\n\n/* Method */\n#define MZ_DEFLATED 8\n\n/* Heap allocation callbacks.\nNote that mz_alloc_func parameter types purposely differ from zlib's: items/size is size_t, not unsigned long. */\ntypedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size);\ntypedef void (*mz_free_func)(void *opaque, void *address);\ntypedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size);\n\n/* Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. */\nenum\n{\n    MZ_NO_COMPRESSION = 0,\n    MZ_BEST_SPEED = 1,\n    MZ_BEST_COMPRESSION = 9,\n    MZ_UBER_COMPRESSION = 10,\n    MZ_DEFAULT_LEVEL = 6,\n    MZ_DEFAULT_COMPRESSION = -1\n};\n\n#define MZ_VERSION \"11.0.2\"\n#define MZ_VERNUM 0xB002\n#define MZ_VER_MAJOR 11\n#define MZ_VER_MINOR 2\n#define MZ_VER_REVISION 0\n#define MZ_VER_SUBREVISION 0\n\n#ifndef MINIZ_NO_ZLIB_APIS\n\n/* Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer to the zlib docs). */\nenum\n{\n    MZ_NO_FLUSH = 0,\n    MZ_PARTIAL_FLUSH = 1,\n    MZ_SYNC_FLUSH = 2,\n    MZ_FULL_FLUSH = 3,\n    MZ_FINISH = 4,\n    MZ_BLOCK = 5\n};\n\n/* Return status codes. MZ_PARAM_ERROR is non-standard. */\nenum\n{\n    MZ_OK = 0,\n    MZ_STREAM_END = 1,\n    MZ_NEED_DICT = 2,\n    MZ_ERRNO = -1,\n    MZ_STREAM_ERROR = -2,\n    MZ_DATA_ERROR = -3,\n    MZ_MEM_ERROR = -4,\n    MZ_BUF_ERROR = -5,\n    MZ_VERSION_ERROR = -6,\n    MZ_PARAM_ERROR = -10000\n};\n\n/* Window bits */\n#define MZ_DEFAULT_WINDOW_BITS 15\n\nstruct mz_internal_state;\n\n/* Compression/decompression stream struct. */\ntypedef struct mz_stream_s\n{\n    const unsigned char *next_in; /* pointer to next byte to read */\n    unsigned int avail_in;        /* number of bytes available at next_in */\n    mz_ulong total_in;            /* total number of bytes consumed so far */\n\n    unsigned char *next_out; /* pointer to next byte to write */\n    unsigned int avail_out;  /* number of bytes that can be written to next_out */\n    mz_ulong total_out;      /* total number of bytes produced so far */\n\n    char *msg;                       /* error msg (unused) */\n    struct mz_internal_state *state; /* internal state, allocated by zalloc/zfree */\n\n    mz_alloc_func zalloc; /* optional heap allocation function (defaults to malloc) */\n    mz_free_func zfree;   /* optional heap free function (defaults to free) */\n    void *opaque;         /* heap alloc function user pointer */\n\n    int data_type;     /* data_type (unused) */\n    mz_ulong adler;    /* adler32 of the source or uncompressed data */\n    mz_ulong reserved; /* not used */\n} mz_stream;\n\ntypedef mz_stream *mz_streamp;\n\n/* Returns the version string of miniz.c. */\nMINIZ_EXPORT const char *mz_version(void);\n\n#ifndef MINIZ_NO_DEFLATE_APIS\n\n/* mz_deflateInit() initializes a compressor with default options: */\n/* Parameters: */\n/*  pStream must point to an initialized mz_stream struct. */\n/*  level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION]. */\n/*  level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio. */\n/*  (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are defined.) */\n/* Return values: */\n/*  MZ_OK on success. */\n/*  MZ_STREAM_ERROR if the stream is bogus. */\n/*  MZ_PARAM_ERROR if the input parameters are bogus. */\n/*  MZ_MEM_ERROR on out of memory. */\nMINIZ_EXPORT int mz_deflateInit(mz_streamp pStream, int level);\n\n/* mz_deflateInit2() is like mz_deflate(), except with more control: */\n/* Additional parameters: */\n/*   method must be MZ_DEFLATED */\n/*   window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer) */\n/*   mem_level must be between [1, 9] (it's checked but ignored by miniz.c) */\nMINIZ_EXPORT int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy);\n\n/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2(). */\nMINIZ_EXPORT int mz_deflateReset(mz_streamp pStream);\n\n/* mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible. */\n/* Parameters: */\n/*   pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */\n/*   flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. */\n/* Return values: */\n/*   MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be written but the output buffer is full). */\n/*   MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the stream anymore. */\n/*   MZ_STREAM_ERROR if the stream is bogus. */\n/*   MZ_PARAM_ERROR if one of the parameters is invalid. */\n/*   MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the input buffer or free up some output space and try again.) */\nMINIZ_EXPORT int mz_deflate(mz_streamp pStream, int flush);\n\n/* mz_deflateEnd() deinitializes a compressor: */\n/* Return values: */\n/*  MZ_OK on success. */\n/*  MZ_STREAM_ERROR if the stream is bogus. */\nMINIZ_EXPORT int mz_deflateEnd(mz_streamp pStream);\n\n/* mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH. */\nMINIZ_EXPORT mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len);\n\n/* Single-call compression functions mz_compress() and mz_compress2(): */\n/* Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure. */\nMINIZ_EXPORT int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len);\nMINIZ_EXPORT int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level);\n\n/* mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress(). */\nMINIZ_EXPORT mz_ulong mz_compressBound(mz_ulong source_len);\n\n#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/\n\n#ifndef MINIZ_NO_INFLATE_APIS\n\n/* Initializes a decompressor. */\nMINIZ_EXPORT int mz_inflateInit(mz_streamp pStream);\n\n/* mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not the stream has been wrapped with a zlib header/footer: */\n/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). */\nMINIZ_EXPORT int mz_inflateInit2(mz_streamp pStream, int window_bits);\n\n/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_inflateEnd() followed by mz_inflateInit()/mz_inflateInit2(). */\nMINIZ_EXPORT int mz_inflateReset(mz_streamp pStream);\n\n/* Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to the output as possible. */\n/* Parameters: */\n/*   pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */\n/*   flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. */\n/*   On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to decompress the entire stream in a single call (this is slightly faster). */\n/*   MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that the output buffer is large enough to hold the rest of the decompressed data. */\n/* Return values: */\n/*   MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the output buffer is full. */\n/*   MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the adler-32 of the decompressed data has also been verified. */\n/*   MZ_STREAM_ERROR if the stream is bogus. */\n/*   MZ_DATA_ERROR if the deflate stream is invalid. */\n/*   MZ_PARAM_ERROR if one of the parameters is invalid. */\n/*   MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again */\n/*   with more input data, or with more room in the output buffer (except when using single call decompression, described above). */\nMINIZ_EXPORT int mz_inflate(mz_streamp pStream, int flush);\n\n/* Deinitializes a decompressor. */\nMINIZ_EXPORT int mz_inflateEnd(mz_streamp pStream);\n\n/* Single-call decompression. */\n/* Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. */\nMINIZ_EXPORT int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len);\nMINIZ_EXPORT int mz_uncompress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong *pSource_len);\n#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/\n\n/* Returns a string description of the specified error code, or NULL if the error code is invalid. */\nMINIZ_EXPORT const char *mz_error(int err);\n\n/* Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset of zlib that miniz.c supports. */\n/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project. */\n#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES\ntypedef unsigned char Byte;\ntypedef unsigned int uInt;\ntypedef mz_ulong uLong;\ntypedef Byte Bytef;\ntypedef uInt uIntf;\ntypedef char charf;\ntypedef int intf;\ntypedef void *voidpf;\ntypedef uLong uLongf;\ntypedef void *voidp;\ntypedef void *const voidpc;\n#define Z_NULL 0\n#define Z_NO_FLUSH MZ_NO_FLUSH\n#define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH\n#define Z_SYNC_FLUSH MZ_SYNC_FLUSH\n#define Z_FULL_FLUSH MZ_FULL_FLUSH\n#define Z_FINISH MZ_FINISH\n#define Z_BLOCK MZ_BLOCK\n#define Z_OK MZ_OK\n#define Z_STREAM_END MZ_STREAM_END\n#define Z_NEED_DICT MZ_NEED_DICT\n#define Z_ERRNO MZ_ERRNO\n#define Z_STREAM_ERROR MZ_STREAM_ERROR\n#define Z_DATA_ERROR MZ_DATA_ERROR\n#define Z_MEM_ERROR MZ_MEM_ERROR\n#define Z_BUF_ERROR MZ_BUF_ERROR\n#define Z_VERSION_ERROR MZ_VERSION_ERROR\n#define Z_PARAM_ERROR MZ_PARAM_ERROR\n#define Z_NO_COMPRESSION MZ_NO_COMPRESSION\n#define Z_BEST_SPEED MZ_BEST_SPEED\n#define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION\n#define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION\n#define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY\n#define Z_FILTERED MZ_FILTERED\n#define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY\n#define Z_RLE MZ_RLE\n#define Z_FIXED MZ_FIXED\n#define Z_DEFLATED MZ_DEFLATED\n#define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS\n#define alloc_func mz_alloc_func\n#define free_func mz_free_func\n#define internal_state mz_internal_state\n#define z_stream mz_stream\n\n#ifndef MINIZ_NO_DEFLATE_APIS\n#define deflateInit mz_deflateInit\n#define deflateInit2 mz_deflateInit2\n#define deflateReset mz_deflateReset\n#define deflate mz_deflate\n#define deflateEnd mz_deflateEnd\n#define deflateBound mz_deflateBound\n#define compress mz_compress\n#define compress2 mz_compress2\n#define compressBound mz_compressBound\n#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/\n\n#ifndef MINIZ_NO_INFLATE_APIS\n#define inflateInit mz_inflateInit\n#define inflateInit2 mz_inflateInit2\n#define inflateReset mz_inflateReset\n#define inflate mz_inflate\n#define inflateEnd mz_inflateEnd\n#define uncompress mz_uncompress\n#define uncompress2 mz_uncompress2\n#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/\n\n#define crc32 mz_crc32\n#define adler32 mz_adler32\n#define MAX_WBITS 15\n#define MAX_MEM_LEVEL 9\n#define zError mz_error\n#define ZLIB_VERSION MZ_VERSION\n#define ZLIB_VERNUM MZ_VERNUM\n#define ZLIB_VER_MAJOR MZ_VER_MAJOR\n#define ZLIB_VER_MINOR MZ_VER_MINOR\n#define ZLIB_VER_REVISION MZ_VER_REVISION\n#define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION\n#define zlibVersion mz_version\n#define zlib_version mz_version()\n#endif /* #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES */\n\n#endif /* MINIZ_NO_ZLIB_APIS */\n\n#ifdef __cplusplus\n}\n#endif\n\n\n\n\n\n#pragma once\n#include <assert.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n\n\n/* ------------------- Types and macros */\ntypedef unsigned char mz_uint8;\ntypedef signed short mz_int16;\ntypedef unsigned short mz_uint16;\ntypedef unsigned int mz_uint32;\ntypedef unsigned int mz_uint;\ntypedef int64_t mz_int64;\ntypedef uint64_t mz_uint64;\ntypedef int mz_bool;\n\n#define MZ_FALSE (0)\n#define MZ_TRUE (1)\n\n/* Works around MSVC's spammy \"warning C4127: conditional expression is constant\" message. */\n#ifdef _MSC_VER\n#define MZ_MACRO_END while (0, 0)\n#else\n#define MZ_MACRO_END while (0)\n#endif\n\n#ifdef MINIZ_NO_STDIO\n#define MZ_FILE void *\n#else\n#include <stdio.h>\n#define MZ_FILE FILE\n#endif /* #ifdef MINIZ_NO_STDIO */\n\n#ifdef MINIZ_NO_TIME\ntypedef struct mz_dummy_time_t_tag\n{\n    mz_uint32 m_dummy1;\n    mz_uint32 m_dummy2;\n} mz_dummy_time_t;\n#define MZ_TIME_T mz_dummy_time_t\n#else\n#define MZ_TIME_T time_t\n#endif\n\n#define MZ_ASSERT(x) assert(x)\n\n#ifdef MINIZ_NO_MALLOC\n#define MZ_MALLOC(x) NULL\n#define MZ_FREE(x) (void)x, ((void)0)\n#define MZ_REALLOC(p, x) NULL\n#else\n#define MZ_MALLOC(x) malloc(x)\n#define MZ_FREE(x) free(x)\n#define MZ_REALLOC(p, x) realloc(p, x)\n#endif\n\n#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b))\n#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b))\n#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj))\n#define MZ_CLEAR_ARR(obj) memset((obj), 0, sizeof(obj))\n#define MZ_CLEAR_PTR(obj) memset((obj), 0, sizeof(*obj))\n\n#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN\n#define MZ_READ_LE16(p) *((const mz_uint16 *)(p))\n#define MZ_READ_LE32(p) *((const mz_uint32 *)(p))\n#else\n#define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U))\n#define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U))\n#endif\n\n#define MZ_READ_LE64(p) (((mz_uint64)MZ_READ_LE32(p)) | (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) << 32U))\n\n#ifdef _MSC_VER\n#define MZ_FORCEINLINE __forceinline\n#elif defined(__GNUC__)\n#define MZ_FORCEINLINE __inline__ __attribute__((__always_inline__))\n#else\n#define MZ_FORCEINLINE inline\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nextern MINIZ_EXPORT void *miniz_def_alloc_func(void *opaque, size_t items, size_t size);\nextern MINIZ_EXPORT void miniz_def_free_func(void *opaque, void *address);\nextern MINIZ_EXPORT void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size);\n\n#define MZ_UINT16_MAX (0xFFFFU)\n#define MZ_UINT32_MAX (0xFFFFFFFFU)\n\n#ifdef __cplusplus\n}\n#endif\n #pragma once\n\n\n#ifndef MINIZ_NO_DEFLATE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n/* ------------------- Low-level Compression API Definitions */\n\n/* Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be output more frequently). */\n#define TDEFL_LESS_MEMORY 0\n\n/* tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary search): */\n/* TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression). */\nenum\n{\n    TDEFL_HUFFMAN_ONLY = 0,\n    TDEFL_DEFAULT_MAX_PROBES = 128,\n    TDEFL_MAX_PROBES_MASK = 0xFFF\n};\n\n/* TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of the source data at the end. Otherwise, you'll get raw deflate data. */\n/* TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers). */\n/* TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing. */\n/* TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the output may vary from run to run given the same input (depending on the contents of memory). */\n/* TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1) */\n/* TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. */\n/* TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables. */\n/* TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks. */\n/* The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK). */\nenum\n{\n    TDEFL_WRITE_ZLIB_HEADER = 0x01000,\n    TDEFL_COMPUTE_ADLER32 = 0x02000,\n    TDEFL_GREEDY_PARSING_FLAG = 0x04000,\n    TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000,\n    TDEFL_RLE_MATCHES = 0x10000,\n    TDEFL_FILTER_MATCHES = 0x20000,\n    TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000,\n    TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000\n};\n\n/* High level compression functions: */\n/* tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc(). */\n/* On entry: */\n/*  pSrc_buf, src_buf_len: Pointer and size of source block to compress. */\n/*  flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower but improve compression. */\n/* On return: */\n/*  Function returns a pointer to the compressed data, or NULL on failure. */\n/*  *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data. */\n/*  The caller must free() the returned block when it's no longer needed. */\nMINIZ_EXPORT void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);\n\n/* tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory. */\n/* Returns 0 on failure. */\nMINIZ_EXPORT size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags);\n\n/* Compresses an image to a compressed PNG file in memory. */\n/* On entry: */\n/*  pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. */\n/*  The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in memory. */\n/*  level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL */\n/*  If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps). */\n/* On return: */\n/*  Function returns a pointer to the compressed data, or NULL on failure. */\n/*  *pLen_out will be set to the size of the PNG image file. */\n/*  The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no longer needed. */\nMINIZ_EXPORT void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip);\nMINIZ_EXPORT void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out);\n\n/* Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time. */\ntypedef mz_bool (*tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser);\n\n/* tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function internally. */\nMINIZ_EXPORT mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\n\nenum\n{\n    TDEFL_MAX_HUFF_TABLES = 3,\n    TDEFL_MAX_HUFF_SYMBOLS_0 = 288,\n    TDEFL_MAX_HUFF_SYMBOLS_1 = 32,\n    TDEFL_MAX_HUFF_SYMBOLS_2 = 19,\n    TDEFL_LZ_DICT_SIZE = 32768,\n    TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1,\n    TDEFL_MIN_MATCH_LEN = 3,\n    TDEFL_MAX_MATCH_LEN = 258\n};\n\n/* TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman codes). */\n#if TDEFL_LESS_MEMORY\nenum\n{\n    TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024,\n    TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10,\n    TDEFL_MAX_HUFF_SYMBOLS = 288,\n    TDEFL_LZ_HASH_BITS = 12,\n    TDEFL_LEVEL1_HASH_SIZE_MASK = 4095,\n    TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3,\n    TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS\n};\n#else\nenum\n{\n    TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024,\n    TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10,\n    TDEFL_MAX_HUFF_SYMBOLS = 288,\n    TDEFL_LZ_HASH_BITS = 15,\n    TDEFL_LEVEL1_HASH_SIZE_MASK = 4095,\n    TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3,\n    TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS\n};\n#endif\n\n/* The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The low-level functions don't make any heap allocations, unlike the above helper functions. */\ntypedef enum {\n    TDEFL_STATUS_BAD_PARAM = -2,\n    TDEFL_STATUS_PUT_BUF_FAILED = -1,\n    TDEFL_STATUS_OKAY = 0,\n    TDEFL_STATUS_DONE = 1\n} tdefl_status;\n\n/* Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums */\ntypedef enum {\n    TDEFL_NO_FLUSH = 0,\n    TDEFL_SYNC_FLUSH = 2,\n    TDEFL_FULL_FLUSH = 3,\n    TDEFL_FINISH = 4\n} tdefl_flush;\n\n/* tdefl's compression state structure. */\ntypedef struct\n{\n    tdefl_put_buf_func_ptr m_pPut_buf_func;\n    void *m_pPut_buf_user;\n    mz_uint m_flags, m_max_probes[2];\n    int m_greedy_parsing;\n    mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size;\n    mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end;\n    mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer;\n    mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, m_wants_to_finish;\n    tdefl_status m_prev_return_status;\n    const void *m_pIn_buf;\n    void *m_pOut_buf;\n    size_t *m_pIn_buf_size, *m_pOut_buf_size;\n    tdefl_flush m_flush;\n    const mz_uint8 *m_pSrc;\n    size_t m_src_buf_left, m_out_buf_ofs;\n    mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE + TDEFL_MAX_MATCH_LEN - 1];\n    mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\n    mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\n    mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS];\n    mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE];\n    mz_uint16 m_next[TDEFL_LZ_DICT_SIZE];\n    mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE];\n    mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE];\n} tdefl_compressor;\n\n/* Initializes the compressor. */\n/* There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory. */\n/* pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call the tdefl_compress_buffer() API for compression. */\n/* If pBut_buf_func is NULL the user should always call the tdefl_compress() API. */\n/* flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) */\nMINIZ_EXPORT tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\n\n/* Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much compressed data to the specified output buffer as possible. */\nMINIZ_EXPORT tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush);\n\n/* tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr. */\n/* tdefl_compress_buffer() always consumes the entire input buffer. */\nMINIZ_EXPORT tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush);\n\nMINIZ_EXPORT tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d);\nMINIZ_EXPORT mz_uint32 tdefl_get_adler32(tdefl_compressor *d);\n\n/* Create tdefl_compress() flags given zlib-style compression parameters. */\n/* level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files) */\n/* window_bits may be -15 (raw deflate) or 15 (zlib) */\n/* strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED */\nMINIZ_EXPORT mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy);\n\n#ifndef MINIZ_NO_MALLOC\n/* Allocate the tdefl_compressor structure in C so that */\n/* non-C language bindings to tdefl_ API don't need to worry about */\n/* structure size and allocation mechanism. */\nMINIZ_EXPORT tdefl_compressor *tdefl_compressor_alloc(void);\nMINIZ_EXPORT void tdefl_compressor_free(tdefl_compressor *pComp);\n#endif\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /*#ifndef MINIZ_NO_DEFLATE_APIS*/\n #pragma once\n\n/* ------------------- Low-level Decompression API Definitions */\n\n#ifndef MINIZ_NO_INFLATE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n/* Decompression flags used by tinfl_decompress(). */\n/* TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream. */\n/* TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input. */\n/* TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). */\n/* TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. */\nenum\n{\n    TINFL_FLAG_PARSE_ZLIB_HEADER = 1,\n    TINFL_FLAG_HAS_MORE_INPUT = 2,\n    TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4,\n    TINFL_FLAG_COMPUTE_ADLER32 = 8\n};\n\n/* High level decompression functions: */\n/* tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc(). */\n/* On entry: */\n/*  pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress. */\n/* On return: */\n/*  Function returns a pointer to the decompressed data, or NULL on failure. */\n/*  *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible data. */\n/*  The caller must call mz_free() on the returned block when it's no longer needed. */\nMINIZ_EXPORT void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags);\n\n/* tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory. */\n/* Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success. */\n#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1))\nMINIZ_EXPORT size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags);\n\n/* tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided callback function will be called to flush the buffer. */\n/* Returns 1 on success or 0 on failure. */\ntypedef int (*tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser);\nMINIZ_EXPORT int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags);\n\nstruct tinfl_decompressor_tag;\ntypedef struct tinfl_decompressor_tag tinfl_decompressor;\n\n#ifndef MINIZ_NO_MALLOC\n/* Allocate the tinfl_decompressor structure in C so that */\n/* non-C language bindings to tinfl_ API don't need to worry about */\n/* structure size and allocation mechanism. */\nMINIZ_EXPORT tinfl_decompressor *tinfl_decompressor_alloc(void);\nMINIZ_EXPORT void tinfl_decompressor_free(tinfl_decompressor *pDecomp);\n#endif\n\n/* Max size of LZ dictionary. */\n#define TINFL_LZ_DICT_SIZE 32768\n\n/* Return status. */\ntypedef enum {\n    /* This flags indicates the inflator needs 1 or more input bytes to make forward progress, but the caller is indicating that no more are available. The compressed data */\n    /* is probably corrupted. If you call the inflator again with more bytes it'll try to continue processing the input but this is a BAD sign (either the data is corrupted or you called it incorrectly). */\n    /* If you call it again with no input you'll just get TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS again. */\n    TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS = -4,\n\n    /* This flag indicates that one or more of the input parameters was obviously bogus. (You can try calling it again, but if you get this error the calling code is wrong.) */\n    TINFL_STATUS_BAD_PARAM = -3,\n\n    /* This flags indicate the inflator is finished but the adler32 check of the uncompressed data didn't match. If you call it again it'll return TINFL_STATUS_DONE. */\n    TINFL_STATUS_ADLER32_MISMATCH = -2,\n\n    /* This flags indicate the inflator has somehow failed (bad code, corrupted input, etc.). If you call it again without resetting via tinfl_init() it it'll just keep on returning the same status failure code. */\n    TINFL_STATUS_FAILED = -1,\n\n    /* Any status code less than TINFL_STATUS_DONE must indicate a failure. */\n\n    /* This flag indicates the inflator has returned every byte of uncompressed data that it can, has consumed every byte that it needed, has successfully reached the end of the deflate stream, and */\n    /* if zlib headers and adler32 checking enabled that it has successfully checked the uncompressed data's adler32. If you call it again you'll just get TINFL_STATUS_DONE over and over again. */\n    TINFL_STATUS_DONE = 0,\n\n    /* This flag indicates the inflator MUST have more input data (even 1 byte) before it can make any more forward progress, or you need to clear the TINFL_FLAG_HAS_MORE_INPUT */\n    /* flag on the next call if you don't have any more source data. If the source data was somehow corrupted it's also possible (but unlikely) for the inflator to keep on demanding input to */\n    /* proceed, so be sure to properly set the TINFL_FLAG_HAS_MORE_INPUT flag. */\n    TINFL_STATUS_NEEDS_MORE_INPUT = 1,\n\n    /* This flag indicates the inflator definitely has 1 or more bytes of uncompressed data available, but it cannot write this data into the output buffer. */\n    /* Note if the source compressed data was corrupted it's possible for the inflator to return a lot of uncompressed data to the caller. I've been assuming you know how much uncompressed data to expect */\n    /* (either exact or worst case) and will stop calling the inflator and fail after receiving too much. In pure streaming scenarios where you have no idea how many bytes to expect this may not be possible */\n    /* so I may need to add some code to address this. */\n    TINFL_STATUS_HAS_MORE_OUTPUT = 2\n} tinfl_status;\n\n/* Initializes the decompressor to its initial state. */\n#define tinfl_init(r)     \\\n    do                    \\\n    {                     \\\n        (r)->m_state = 0; \\\n    }                     \\\n    MZ_MACRO_END\n#define tinfl_get_adler32(r) (r)->m_check_adler32\n\n/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. */\n/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. */\nMINIZ_EXPORT tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags);\n\n/* Internal/private bits follow. */\nenum\n{\n    TINFL_MAX_HUFF_TABLES = 3,\n    TINFL_MAX_HUFF_SYMBOLS_0 = 288,\n    TINFL_MAX_HUFF_SYMBOLS_1 = 32,\n    TINFL_MAX_HUFF_SYMBOLS_2 = 19,\n    TINFL_FAST_LOOKUP_BITS = 10,\n    TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS\n};\n\n#if MINIZ_HAS_64BIT_REGISTERS\n#define TINFL_USE_64BIT_BITBUF 1\n#else\n#define TINFL_USE_64BIT_BITBUF 0\n#endif\n\n#if TINFL_USE_64BIT_BITBUF\ntypedef mz_uint64 tinfl_bit_buf_t;\n#define TINFL_BITBUF_SIZE (64)\n#else\ntypedef mz_uint32 tinfl_bit_buf_t;\n#define TINFL_BITBUF_SIZE (32)\n#endif\n\nstruct tinfl_decompressor_tag\n{\n    mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES];\n    tinfl_bit_buf_t m_bit_buf;\n    size_t m_dist_from_out_buf_start;\n    mz_int16 m_look_up[TINFL_MAX_HUFF_TABLES][TINFL_FAST_LOOKUP_SIZE];\n    mz_int16 m_tree_0[TINFL_MAX_HUFF_SYMBOLS_0 * 2];\n    mz_int16 m_tree_1[TINFL_MAX_HUFF_SYMBOLS_1 * 2];\n    mz_int16 m_tree_2[TINFL_MAX_HUFF_SYMBOLS_2 * 2];\n    mz_uint8 m_code_size_0[TINFL_MAX_HUFF_SYMBOLS_0];\n    mz_uint8 m_code_size_1[TINFL_MAX_HUFF_SYMBOLS_1];\n    mz_uint8 m_code_size_2[TINFL_MAX_HUFF_SYMBOLS_2];\n    mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137];\n};\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /*#ifndef MINIZ_NO_INFLATE_APIS*/\n \n#pragma once\n\n\n/* ------------------- ZIP archive reading/writing */\n\n#ifndef MINIZ_NO_ARCHIVE_APIS\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nenum\n{\n    /* Note: These enums can be reduced as needed to save memory or stack space - they are pretty conservative. */\n    MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024,\n    MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512,\n    MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512\n};\n\ntypedef struct\n{\n    /* Central directory file index. */\n    mz_uint32 m_file_index;\n\n    /* Byte offset of this entry in the archive's central directory. Note we currently only support up to UINT_MAX or less bytes in the central dir. */\n    mz_uint64 m_central_dir_ofs;\n\n    /* These fields are copied directly from the zip's central dir. */\n    mz_uint16 m_version_made_by;\n    mz_uint16 m_version_needed;\n    mz_uint16 m_bit_flag;\n    mz_uint16 m_method;\n\n    /* CRC-32 of uncompressed data. */\n    mz_uint32 m_crc32;\n\n    /* File's compressed size. */\n    mz_uint64 m_comp_size;\n\n    /* File's uncompressed size. Note, I've seen some old archives where directory entries had 512 bytes for their uncompressed sizes, but when you try to unpack them you actually get 0 bytes. */\n    mz_uint64 m_uncomp_size;\n\n    /* Zip internal and external file attributes. */\n    mz_uint16 m_internal_attr;\n    mz_uint32 m_external_attr;\n\n    /* Entry's local header file offset in bytes. */\n    mz_uint64 m_local_header_ofs;\n\n    /* Size of comment in bytes. */\n    mz_uint32 m_comment_size;\n\n    /* MZ_TRUE if the entry appears to be a directory. */\n    mz_bool m_is_directory;\n\n    /* MZ_TRUE if the entry uses encryption/strong encryption (which miniz_zip doesn't support) */\n    mz_bool m_is_encrypted;\n\n    /* MZ_TRUE if the file is not encrypted, a patch file, and if it uses a compression method we support. */\n    mz_bool m_is_supported;\n\n    /* Filename. If string ends in '/' it's a subdirectory entry. */\n    /* Guaranteed to be zero terminated, may be truncated to fit. */\n    char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE];\n\n    /* Comment field. */\n    /* Guaranteed to be zero terminated, may be truncated to fit. */\n    char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE];\n\n#ifdef MINIZ_NO_TIME\n    MZ_TIME_T m_padding;\n#else\n    MZ_TIME_T m_time;\n#endif\n} mz_zip_archive_file_stat;\n\ntypedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n);\ntypedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n);\ntypedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque);\n\nstruct mz_zip_internal_state_tag;\ntypedef struct mz_zip_internal_state_tag mz_zip_internal_state;\n\ntypedef enum {\n    MZ_ZIP_MODE_INVALID = 0,\n    MZ_ZIP_MODE_READING = 1,\n    MZ_ZIP_MODE_WRITING = 2,\n    MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3\n} mz_zip_mode;\n\ntypedef enum {\n    MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100,\n    MZ_ZIP_FLAG_IGNORE_PATH = 0x0200,\n    MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400,\n    MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800,\n    MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG = 0x1000, /* if enabled, mz_zip_reader_locate_file() will be called on each file as its validated to ensure the func finds the file in the central dir (intended for testing) */\n    MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY = 0x2000,     /* validate the local headers, but don't decompress the entire file and check the crc32 */\n    MZ_ZIP_FLAG_WRITE_ZIP64 = 0x4000,               /* always use the zip64 file format, instead of the original zip file format with automatic switch to zip64. Use as flags parameter with mz_zip_writer_init*_v2 */\n    MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000,\n    MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000,\n    /*After adding a compressed file, seek back\n    to local file header and set the correct sizes*/\n    MZ_ZIP_FLAG_WRITE_HEADER_SET_SIZE = 0x20000\n} mz_zip_flags;\n\ntypedef enum {\n    MZ_ZIP_TYPE_INVALID = 0,\n    MZ_ZIP_TYPE_USER,\n    MZ_ZIP_TYPE_MEMORY,\n    MZ_ZIP_TYPE_HEAP,\n    MZ_ZIP_TYPE_FILE,\n    MZ_ZIP_TYPE_CFILE,\n    MZ_ZIP_TOTAL_TYPES\n} mz_zip_type;\n\n/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or modify this enum. */\ntypedef enum {\n    MZ_ZIP_NO_ERROR = 0,\n    MZ_ZIP_UNDEFINED_ERROR,\n    MZ_ZIP_TOO_MANY_FILES,\n    MZ_ZIP_FILE_TOO_LARGE,\n    MZ_ZIP_UNSUPPORTED_METHOD,\n    MZ_ZIP_UNSUPPORTED_ENCRYPTION,\n    MZ_ZIP_UNSUPPORTED_FEATURE,\n    MZ_ZIP_FAILED_FINDING_CENTRAL_DIR,\n    MZ_ZIP_NOT_AN_ARCHIVE,\n    MZ_ZIP_INVALID_HEADER_OR_CORRUPTED,\n    MZ_ZIP_UNSUPPORTED_MULTIDISK,\n    MZ_ZIP_DECOMPRESSION_FAILED,\n    MZ_ZIP_COMPRESSION_FAILED,\n    MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE,\n    MZ_ZIP_CRC_CHECK_FAILED,\n    MZ_ZIP_UNSUPPORTED_CDIR_SIZE,\n    MZ_ZIP_ALLOC_FAILED,\n    MZ_ZIP_FILE_OPEN_FAILED,\n    MZ_ZIP_FILE_CREATE_FAILED,\n    MZ_ZIP_FILE_WRITE_FAILED,\n    MZ_ZIP_FILE_READ_FAILED,\n    MZ_ZIP_FILE_CLOSE_FAILED,\n    MZ_ZIP_FILE_SEEK_FAILED,\n    MZ_ZIP_FILE_STAT_FAILED,\n    MZ_ZIP_INVALID_PARAMETER,\n    MZ_ZIP_INVALID_FILENAME,\n    MZ_ZIP_BUF_TOO_SMALL,\n    MZ_ZIP_INTERNAL_ERROR,\n    MZ_ZIP_FILE_NOT_FOUND,\n    MZ_ZIP_ARCHIVE_TOO_LARGE,\n    MZ_ZIP_VALIDATION_FAILED,\n    MZ_ZIP_WRITE_CALLBACK_FAILED,\n    MZ_ZIP_TOTAL_ERRORS\n} mz_zip_error;\n\ntypedef struct\n{\n    mz_uint64 m_archive_size;\n    mz_uint64 m_central_directory_file_ofs;\n\n    /* We only support up to UINT32_MAX files in zip64 mode. */\n    mz_uint32 m_total_files;\n    mz_zip_mode m_zip_mode;\n    mz_zip_type m_zip_type;\n    mz_zip_error m_last_error;\n\n    mz_uint64 m_file_offset_alignment;\n\n    mz_alloc_func m_pAlloc;\n    mz_free_func m_pFree;\n    mz_realloc_func m_pRealloc;\n    void *m_pAlloc_opaque;\n\n    mz_file_read_func m_pRead;\n    mz_file_write_func m_pWrite;\n    mz_file_needs_keepalive m_pNeeds_keepalive;\n    void *m_pIO_opaque;\n\n    mz_zip_internal_state *m_pState;\n\n} mz_zip_archive;\n\ntypedef struct\n{\n    mz_zip_archive *pZip;\n    mz_uint flags;\n\n    int status;\n\n    mz_uint64 read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs;\n    mz_zip_archive_file_stat file_stat;\n    void *pRead_buf;\n    void *pWrite_buf;\n\n    size_t out_blk_remain;\n\n    tinfl_decompressor inflator;\n\n#ifdef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS\n    mz_uint padding;\n#else\n    mz_uint file_crc32;\n#endif\n\n} mz_zip_reader_extract_iter_state;\n\n/* -------- ZIP reading */\n\n/* Inits a ZIP archive reader. */\n/* These functions read and validate the archive's central directory. */\nMINIZ_EXPORT mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags);\n\nMINIZ_EXPORT mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags);\n\n#ifndef MINIZ_NO_STDIO\n/* Read a archive from a disk file. */\n/* file_start_ofs is the file offset where the archive actually begins, or 0. */\n/* actual_archive_size is the true total size of the archive, which may be smaller than the file's actual size on disk. If zero the entire file is treated as the archive. */\nMINIZ_EXPORT mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size);\n\n/* Read an archive from an already opened FILE, beginning at the current file position. */\n/* The archive is assumed to be archive_size bytes long. If archive_size is 0, then the entire rest of the file is assumed to contain the archive. */\n/* The FILE will NOT be closed when mz_zip_reader_end() is called. */\nMINIZ_EXPORT mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags);\n#endif\n\n/* Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used. */\nMINIZ_EXPORT mz_bool mz_zip_reader_end(mz_zip_archive *pZip);\n\n/* -------- ZIP reading or writing */\n\n/* Clears a mz_zip_archive struct to all zeros. */\n/* Important: This must be done before passing the struct to any mz_zip functions. */\nMINIZ_EXPORT void mz_zip_zero_struct(mz_zip_archive *pZip);\n\nMINIZ_EXPORT mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip);\nMINIZ_EXPORT mz_zip_type mz_zip_get_type(mz_zip_archive *pZip);\n\n/* Returns the total number of files in the archive. */\nMINIZ_EXPORT mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip);\n\nMINIZ_EXPORT mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip);\nMINIZ_EXPORT mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip);\nMINIZ_EXPORT MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip);\n\n/* Reads n bytes of raw archive data, starting at file offset file_ofs, to pBuf. */\nMINIZ_EXPORT size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n);\n\n/* All mz_zip funcs set the m_last_error field in the mz_zip_archive struct. These functions retrieve/manipulate this field. */\n/* Note that the m_last_error functionality is not thread safe. */\nMINIZ_EXPORT mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num);\nMINIZ_EXPORT mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip);\nMINIZ_EXPORT mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip);\nMINIZ_EXPORT mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip);\nMINIZ_EXPORT const char *mz_zip_get_error_string(mz_zip_error mz_err);\n\n/* MZ_TRUE if the archive file entry is a directory entry. */\nMINIZ_EXPORT mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index);\n\n/* MZ_TRUE if the file is encrypted/strong encrypted. */\nMINIZ_EXPORT mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index);\n\n/* MZ_TRUE if the compression method is supported, and the file is not encrypted, and the file is not a compressed patch file. */\nMINIZ_EXPORT mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index);\n\n/* Retrieves the filename of an archive file entry. */\n/* Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename. */\nMINIZ_EXPORT mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size);\n\n/* Attempts to locates a file in the archive's central directory. */\n/* Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH */\n/* Returns -1 if the file cannot be found. */\nMINIZ_EXPORT int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *file_index);\n\n/* Returns detailed information about an archive file entry. */\nMINIZ_EXPORT mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat);\n\n/* MZ_TRUE if the file is in zip64 format. */\n/* A file is considered zip64 if it contained a zip64 end of central directory marker, or if it contained any zip64 extended file information fields in the central directory. */\nMINIZ_EXPORT mz_bool mz_zip_is_zip64(mz_zip_archive *pZip);\n\n/* Returns the total central directory size in bytes. */\n/* The current max supported size is <= MZ_UINT32_MAX. */\nMINIZ_EXPORT size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip);\n\n/* Extracts a archive file to a memory buffer using no memory allocation. */\n/* There must be at least enough room on the stack to store the inflator's state (~34KB or so). */\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size);\n\n/* Extracts a archive file to a memory buffer. */\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags);\n\n/* Extracts a archive file to a dynamically allocated heap buffer. */\n/* The memory will be allocated via the mz_zip_archive's alloc/realloc functions. */\n/* Returns NULL and sets the last error on failure. */\nMINIZ_EXPORT void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags);\nMINIZ_EXPORT void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags);\n\n/* Extracts a archive file using a callback function to output the file's data. */\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags);\n\n/* Extract a file iteratively */\nMINIZ_EXPORT mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);\nMINIZ_EXPORT mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags);\nMINIZ_EXPORT size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState);\n\n#ifndef MINIZ_NO_STDIO\n/* Extracts a archive file to a disk file and sets its last accessed and modified times. */\n/* This function only extracts files, not archive directory records. */\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags);\n\n/* Extracts a archive file starting at the current position in the destination FILE stream. */\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *File, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags);\n#endif\n\n#if 0\n/* TODO */\n\ttypedef void *mz_zip_streaming_extract_state_ptr;\n\tmz_zip_streaming_extract_state_ptr mz_zip_streaming_extract_begin(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);\n\tmz_uint64 mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);\n\tmz_uint64 mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);\n\tmz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, mz_uint64 new_ofs);\n\tsize_t mz_zip_streaming_extract_read(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, void *pBuf, size_t buf_size);\n\tmz_bool mz_zip_streaming_extract_end(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState);\n#endif\n\n/* This function compares the archive's local headers, the optional local zip64 extended information block, and the optional descriptor following the compressed data vs. the data in the central directory. */\n/* It also validates that each file can be successfully uncompressed unless the MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY is specified. */\nMINIZ_EXPORT mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags);\n\n/* Validates an entire archive by calling mz_zip_validate_file() on each file. */\nMINIZ_EXPORT mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags);\n\n/* Misc utils/helpers, valid for ZIP reading or writing */\nMINIZ_EXPORT mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr);\n#ifndef MINIZ_NO_STDIO\nMINIZ_EXPORT mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr);\n#endif\n\n/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */\nMINIZ_EXPORT mz_bool mz_zip_end(mz_zip_archive *pZip);\n\n/* -------- ZIP writing */\n\n#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS\n\n/* Inits a ZIP archive writer. */\n/*Set pZip->m_pWrite (and pZip->m_pIO_opaque) before calling mz_zip_writer_init or mz_zip_writer_init_v2*/\n/*The output is streamable, i.e. file_ofs in mz_file_write_func always increases only by n*/\nMINIZ_EXPORT mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size);\nMINIZ_EXPORT mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags);\n\nMINIZ_EXPORT mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size);\nMINIZ_EXPORT mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags);\n\n#ifndef MINIZ_NO_STDIO\nMINIZ_EXPORT mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning);\nMINIZ_EXPORT mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags);\nMINIZ_EXPORT mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags);\n#endif\n\n/* Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an existing archive. */\n/* For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for writing. If the file can't be reopened, mz_zip_reader_end() will be called. */\n/* For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which defaults to realloc unless you've overridden it). */\n/* Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be NULL. */\n/* Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops or something goes wrong before */\n/* the archive is finalized the file's central directory will be hosed. */\nMINIZ_EXPORT mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename);\nMINIZ_EXPORT mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags);\n\n/* Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive. */\n/* To add a directory entry, call this method with an archive name ending in a forwardslash with an empty buffer. */\n/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */\nMINIZ_EXPORT mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags);\n\n/* Like mz_zip_writer_add_mem(), except you can specify a file comment field, and optionally supply the function with already compressed data. */\n/* uncomp_size/uncomp_crc32 are only used if the MZ_ZIP_FLAG_COMPRESSED_DATA flag is specified. */\nMINIZ_EXPORT mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,\n                                              mz_uint64 uncomp_size, mz_uint32 uncomp_crc32);\n\nMINIZ_EXPORT mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags,\n                                                 mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified, const char *user_extra_data_local, mz_uint user_extra_data_local_len,\n                                                 const char *user_extra_data_central, mz_uint user_extra_data_central_len);\n\n/* Adds the contents of a file to an archive. This function also records the disk file's modified time into the archive. */\n/* File data is supplied via a read callback function. User mz_zip_writer_add_(c)file to add a file directly.*/\nMINIZ_EXPORT mz_bool mz_zip_writer_add_read_buf_callback(mz_zip_archive *pZip, const char *pArchive_name, mz_file_read_func read_callback, void* callback_opaque, mz_uint64 max_size,\n\tconst MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data_local, mz_uint user_extra_data_local_len,\n\tconst char *user_extra_data_central, mz_uint user_extra_data_central_len);\n\n\n#ifndef MINIZ_NO_STDIO\n/* Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the archive. */\n/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */\nMINIZ_EXPORT mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\n\n/* Like mz_zip_writer_add_file(), except the file data is read from the specified FILE stream. */\nMINIZ_EXPORT mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 max_size,\n                                const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data_local, mz_uint user_extra_data_local_len,\n                                const char *user_extra_data_central, mz_uint user_extra_data_central_len);\n#endif\n\n/* Adds a file to an archive by fully cloning the data from another archive. */\n/* This function fully clones the source file's compressed data (no recompression), along with its full filename, extra data (it may add or modify the zip64 local header extra data field), and the optional descriptor following the compressed data. */\nMINIZ_EXPORT mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index);\n\n/* Finalizes the archive by writing the central directory records followed by the end of central directory record. */\n/* After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end(). */\n/* An archive must be manually finalized by calling this function for it to be valid. */\nMINIZ_EXPORT mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip);\n\n/* Finalizes a heap archive, returning a pointer to the heap block and its size. */\n/* The heap block will be allocated using the mz_zip_archive's alloc/realloc callbacks. */\nMINIZ_EXPORT mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize);\n\n/* Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used. */\n/* Note for the archive to be valid, it *must* have been finalized before ending (this function will not do it for you). */\nMINIZ_EXPORT mz_bool mz_zip_writer_end(mz_zip_archive *pZip);\n\n/* -------- Misc. high-level helper functions: */\n\n/* mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive. */\n/* Note this is NOT a fully safe operation. If it crashes or dies in some way your archive can be left in a screwed up state (without a central directory). */\n/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */\n/* TODO: Perhaps add an option to leave the existing central dir in place in case the add dies? We could then truncate the file (so the old central dir would be at the end) if something goes wrong. */\nMINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags);\nMINIZ_EXPORT mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr);\n\n#ifndef MINIZ_NO_STDIO\n/* Reads a single file from an archive into a heap block. */\n/* If pComment is not NULL, only the file with the specified comment will be extracted. */\n/* Returns NULL on failure. */\nMINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags);\nMINIZ_EXPORT void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr);\n#endif\n\n#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* MINIZ_NO_ARCHIVE_APIS */\n"
  },
  {
    "path": "libraries/murmur.h",
    "content": "// MurmurHash2 was written by Austin Appleby, and is placed in the public\n// domain. The author hereby disclaims copyright to this source code.\n\n// This function is adapted from the MurmurHash64A function. You can find\n// the original functions here: https://github.com/aappleby/smhasher\n\ninline constexpr uint64_t MurmurHash (auto& value) {\n\tconst void* key = &value;\n\tconst int len = sizeof(value);\n\tconst uint64_t seed = 123456;\n\t\n\tconst uint64_t m = 0xc6a4a7935bd1e995llu;\n\tconst int r = 47;\n\n\tuint64_t h = seed ^ (len * m);\n\n\tconst uint64_t* data = (const uint64_t*)key;\n\tconst uint64_t* end = data + (len/8);\n\n\twhile(data != end)\n\t{\n\tuint64_t k = *data++;\n\n\tk *= m; \n\tk ^= k >> r; \n\tk *= m; \n\n\th ^= k;\n\th *= m; \n\t}\n\n\tconst unsigned char * data2 = (const unsigned char*)data;\n\n\tswitch(len & 7)\n\t{\n\tcase 7: h ^= uint64_t(data2[6]) << 48;\n\tcase 6: h ^= uint64_t(data2[5]) << 40;\n\tcase 5: h ^= uint64_t(data2[4]) << 32;\n\tcase 4: h ^= uint64_t(data2[3]) << 24;\n\tcase 3: h ^= uint64_t(data2[2]) << 16;\n\tcase 2: h ^= uint64_t(data2[1]) << 8;\n\tcase 1: h ^= uint64_t(data2[0]);\n\t\t  h *= m;\n\t};\n\n\th ^= h >> r;\n\th *= m;\n\th ^= h >> r;\n\n\treturn h;\n}\n\ninline constexpr uint64_t MurmurHash2 (const char* input, int length) {\n\tconst uint64_t seed = 123456;\n\t\n\tconst uint64_t m = 0xc6a4a7935bd1e995llu;\n\tconst int r = 47;\n\n\tuint64_t h = seed ^ (length * m);\n\n\tconst uint64_t* data = (const uint64_t*)input;\n\tconst uint64_t* end = data + (length/8);\n\n\twhile(data != end)\n\t{\n\tuint64_t k = *data++;\n\n\tk *= m; \n\tk ^= k >> r; \n\tk *= m; \n\n\th ^= k;\n\th *= m; \n\t}\n\n\tconst unsigned char * data2 = (const unsigned char*)data;\n\n\tswitch(length & 7)\n\t{\n\tcase 7: h ^= uint64_t(data2[6]) << 48;\n\tcase 6: h ^= uint64_t(data2[5]) << 40;\n\tcase 5: h ^= uint64_t(data2[4]) << 32;\n\tcase 4: h ^= uint64_t(data2[3]) << 24;\n\tcase 3: h ^= uint64_t(data2[2]) << 16;\n\tcase 2: h ^= uint64_t(data2[1]) << 8;\n\tcase 1: h ^= uint64_t(data2[0]);\n\t\t  h *= m;\n\t};\n\n\th ^= h >> r;\n\th *= m;\n\th ^= h >> r;\n\n\treturn h;\n}"
  },
  {
    "path": "libraries/openal/LICENSE_OPENAL",
    "content": "                  GNU LIBRARY GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1991 Free Software Foundation, Inc.\n 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n[This is the first released version of the library GPL.  It is\n numbered 2 because it goes with version 2 of the ordinary GPL.]\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicenses are intended to guarantee your freedom to share and change\nfree software--to make sure the software is free for all its users.\n\n  This license, the Library General Public License, applies to some\nspecially designated Free Software Foundation software, and to any\nother libraries whose authors decide to use it.  You can use it for\nyour libraries, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if\nyou distribute copies of the library, or if you modify it.\n\n  For example, if you distribute copies of the library, whether gratis\nor for a fee, you must give the recipients all the rights that we gave\nyou.  You must make sure that they, too, receive or can get the source\ncode.  If you link a program with the library, you must provide\ncomplete object files to the recipients so that they can relink them\nwith the library, after making changes to the library and recompiling\nit.  And you must show them these terms so they know their rights.\n\n  Our method of protecting your rights has two steps: (1) copyright\nthe library, and (2) offer you this license which gives you legal\npermission to copy, distribute and/or modify the library.\n\n  Also, for each distributor's protection, we want to make certain\nthat everyone understands that there is no warranty for this free\nlibrary.  If the library is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original\nversion, so that any problems introduced by others will not reflect on\nthe original authors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that companies distributing free\nsoftware will individually obtain patent licenses, thus in effect\ntransforming the program into proprietary software.  To prevent this,\nwe have made it clear that any patent must be licensed for everyone's\nfree use or not licensed at all.\n\n  Most GNU software, including some libraries, is covered by the ordinary\nGNU General Public License, which was designed for utility programs.  This\nlicense, the GNU Library General Public License, applies to certain\ndesignated libraries.  This license is quite different from the ordinary\none; be sure to read it in full, and don't assume that anything in it is\nthe same as in the ordinary license.\n\n  The reason we have a separate public license for some libraries is that\nthey blur the distinction we usually make between modifying or adding to a\nprogram and simply using it.  Linking a program with a library, without\nchanging the library, is in some sense simply using the library, and is\nanalogous to running a utility program or application program.  However, in\na textual and legal sense, the linked executable is a combined work, a\nderivative of the original library, and the ordinary General Public License\ntreats it as such.\n\n  Because of this blurred distinction, using the ordinary General\nPublic License for libraries did not effectively promote software\nsharing, because most developers did not use the libraries.  We\nconcluded that weaker conditions might promote sharing better.\n\n  However, unrestricted linking of non-free programs would deprive the\nusers of those programs of all benefit from the free status of the\nlibraries themselves.  This Library General Public License is intended to\npermit developers of non-free programs to use free libraries, while\npreserving your freedom as a user of such programs to change the free\nlibraries that are incorporated in them.  (We have not seen how to achieve\nthis as regards changes in header files, but we have achieved it as regards\nchanges in the actual functions of the Library.)  The hope is that this\nwill lead to faster development of free libraries.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.  Pay close attention to the difference between a\n\"work based on the library\" and a \"work that uses the library\".  The\nformer contains code derived from the library, while the latter only\nworks together with the library.\n\n  Note that it is possible for a library to be covered by the ordinary\nGeneral Public License rather than by this special one.\n\n                  GNU LIBRARY GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License Agreement applies to any software library which\ncontains a notice placed by the copyright holder or other authorized\nparty saying it may be distributed under the terms of this Library\nGeneral Public License (also called \"this License\").  Each licensee is\naddressed as \"you\".\n\n  A \"library\" means a collection of software functions and/or data\nprepared so as to be conveniently linked with application programs\n(which use some of those functions and data) to form executables.\n\n  The \"Library\", below, refers to any such software library or work\nwhich has been distributed under these terms.  A \"work based on the\nLibrary\" means either the Library or any derivative work under\ncopyright law: that is to say, a work containing the Library or a\nportion of it, either verbatim or with modifications and/or translated\nstraightforwardly into another language.  (Hereinafter, translation is\nincluded without limitation in the term \"modification\".)\n\n  \"Source code\" for a work means the preferred form of the work for\nmaking modifications to it.  For a library, complete source code means\nall the source code for all modules it contains, plus any associated\ninterface definition files, plus the scripts used to control compilation\nand installation of the library.\n\n  Activities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning a program using the Library is not restricted, and output from\nsuch a program is covered only if its contents constitute a work based\non the Library (independent of the use of the Library in a tool for\nwriting it).  Whether that is true depends on what the Library does\nand what the program that uses the Library does.\n  \n  1. You may copy and distribute verbatim copies of the Library's\ncomplete source code as you receive it, in any medium, provided that\nyou conspicuously and appropriately publish on each copy an\nappropriate copyright notice and disclaimer of warranty; keep intact\nall the notices that refer to this License and to the absence of any\nwarranty; and distribute a copy of this License along with the\nLibrary.\n\n  You may charge a fee for the physical act of transferring a copy,\nand you may at your option offer warranty protection in exchange for a\nfee.\n\n  2. You may modify your copy or copies of the Library or any portion\nof it, thus forming a work based on the Library, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) The modified work must itself be a software library.\n\n    b) You must cause the files modified to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    c) You must cause the whole of the work to be licensed at no\n    charge to all third parties under the terms of this License.\n\n    d) If a facility in the modified Library refers to a function or a\n    table of data to be supplied by an application program that uses\n    the facility, other than as an argument passed when the facility\n    is invoked, then you must make a good faith effort to ensure that,\n    in the event an application does not supply such function or\n    table, the facility still operates, and performs whatever part of\n    its purpose remains meaningful.\n\n    (For example, a function in a library to compute square roots has\n    a purpose that is entirely well-defined independent of the\n    application.  Therefore, Subsection 2d requires that any\n    application-supplied function or table used by this function must\n    be optional: if the application does not supply it, the square\n    root function must still compute square roots.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Library,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Library, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote\nit.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Library.\n\nIn addition, mere aggregation of another work not based on the Library\nwith the Library (or with a work based on the Library) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may opt to apply the terms of the ordinary GNU General Public\nLicense instead of this License to a given copy of the Library.  To do\nthis, you must alter all the notices that refer to this License, so\nthat they refer to the ordinary GNU General Public License, version 2,\ninstead of to this License.  (If a newer version than version 2 of the\nordinary GNU General Public License has appeared, then you can specify\nthat version instead if you wish.)  Do not make any other change in\nthese notices.\n\n  Once this change is made in a given copy, it is irreversible for\nthat copy, so the ordinary GNU General Public License applies to all\nsubsequent copies and derivative works made from that copy.\n\n  This option is useful when you wish to copy part of the code of\nthe Library into a program that is not a library.\n\n  4. You may copy and distribute the Library (or a portion or\nderivative of it, under Section 2) in object code or executable form\nunder the terms of Sections 1 and 2 above provided that you accompany\nit with the complete corresponding machine-readable source code, which\nmust be distributed under the terms of Sections 1 and 2 above on a\nmedium customarily used for software interchange.\n\n  If distribution of object code is made by offering access to copy\nfrom a designated place, then offering equivalent access to copy the\nsource code from the same place satisfies the requirement to\ndistribute the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  5. A program that contains no derivative of any portion of the\nLibrary, but is designed to work with the Library by being compiled or\nlinked with it, is called a \"work that uses the Library\".  Such a\nwork, in isolation, is not a derivative work of the Library, and\ntherefore falls outside the scope of this License.\n\n  However, linking a \"work that uses the Library\" with the Library\ncreates an executable that is a derivative of the Library (because it\ncontains portions of the Library), rather than a \"work that uses the\nlibrary\".  The executable is therefore covered by this License.\nSection 6 states terms for distribution of such executables.\n\n  When a \"work that uses the Library\" uses material from a header file\nthat is part of the Library, the object code for the work may be a\nderivative work of the Library even though the source code is not.\nWhether this is true is especially significant if the work can be\nlinked without the Library, or if the work is itself a library.  The\nthreshold for this to be true is not precisely defined by law.\n\n  If such an object file uses only numerical parameters, data\nstructure layouts and accessors, and small macros and small inline\nfunctions (ten lines or less in length), then the use of the object\nfile is unrestricted, regardless of whether it is legally a derivative\nwork.  (Executables containing this object code plus portions of the\nLibrary will still fall under Section 6.)\n\n  Otherwise, if the work is a derivative of the Library, you may\ndistribute the object code for the work under the terms of Section 6.\nAny executables containing that work also fall under Section 6,\nwhether or not they are linked directly with the Library itself.\n\n  6. As an exception to the Sections above, you may also compile or\nlink a \"work that uses the Library\" with the Library to produce a\nwork containing portions of the Library, and distribute that work\nunder terms of your choice, provided that the terms permit\nmodification of the work for the customer's own use and reverse\nengineering for debugging such modifications.\n\n  You must give prominent notice with each copy of the work that the\nLibrary is used in it and that the Library and its use are covered by\nthis License.  You must supply a copy of this License.  If the work\nduring execution displays copyright notices, you must include the\ncopyright notice for the Library among them, as well as a reference\ndirecting the user to the copy of this License.  Also, you must do one\nof these things:\n\n    a) Accompany the work with the complete corresponding\n    machine-readable source code for the Library including whatever\n    changes were used in the work (which must be distributed under\n    Sections 1 and 2 above); and, if the work is an executable linked\n    with the Library, with the complete machine-readable \"work that\n    uses the Library\", as object code and/or source code, so that the\n    user can modify the Library and then relink to produce a modified\n    executable containing the modified Library.  (It is understood\n    that the user who changes the contents of definitions files in the\n    Library will not necessarily be able to recompile the application\n    to use the modified definitions.)\n\n    b) Accompany the work with a written offer, valid for at\n    least three years, to give the same user the materials\n    specified in Subsection 6a, above, for a charge no more\n    than the cost of performing this distribution.\n\n    c) If distribution of the work is made by offering access to copy\n    from a designated place, offer equivalent access to copy the above\n    specified materials from the same place.\n\n    d) Verify that the user has already received a copy of these\n    materials or that you have already sent this user a copy.\n\n  For an executable, the required form of the \"work that uses the\nLibrary\" must include any data and utility programs needed for\nreproducing the executable from it.  However, as a special exception,\nthe source code distributed need not include anything that is normally\ndistributed (in either source or binary form) with the major\ncomponents (compiler, kernel, and so on) of the operating system on\nwhich the executable runs, unless that component itself accompanies\nthe executable.\n\n  It may happen that this requirement contradicts the license\nrestrictions of other proprietary libraries that do not normally\naccompany the operating system.  Such a contradiction means you cannot\nuse both them and the Library together in an executable that you\ndistribute.\n\n  7. You may place library facilities that are a work based on the\nLibrary side-by-side in a single library together with other library\nfacilities not covered by this License, and distribute such a combined\nlibrary, provided that the separate distribution of the work based on\nthe Library and of the other library facilities is otherwise\npermitted, and provided that you do these two things:\n\n    a) Accompany the combined library with a copy of the same work\n    based on the Library, uncombined with any other library\n    facilities.  This must be distributed under the terms of the\n    Sections above.\n\n    b) Give prominent notice with the combined library of the fact\n    that part of it is a work based on the Library, and explaining\n    where to find the accompanying uncombined form of the same work.\n\n  8. You may not copy, modify, sublicense, link with, or distribute\nthe Library except as expressly provided under this License.  Any\nattempt otherwise to copy, modify, sublicense, link with, or\ndistribute the Library is void, and will automatically terminate your\nrights under this License.  However, parties who have received copies,\nor rights, from you under this License will not have their licenses\nterminated so long as such parties remain in full compliance.\n\n  9. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Library or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Library (or any work based on the\nLibrary), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Library or works based on it.\n\n  10. Each time you redistribute the Library (or any work based on the\nLibrary), the recipient automatically receives a license from the\noriginal licensor to copy, distribute, link with or modify the Library\nsubject to these terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  11. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Library at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Library by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Library.\n\nIf any portion of this section is held invalid or unenforceable under any\nparticular circumstance, the balance of the section is intended to apply,\nand the section as a whole is intended to apply in other circumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  12. If the distribution and/or use of the Library is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Library under this License may add\nan explicit geographical distribution limitation excluding those countries,\nso that distribution is permitted only in or among countries not thus\nexcluded.  In such case, this License incorporates the limitation as if\nwritten in the body of this License.\n\n  13. The Free Software Foundation may publish revised and/or new\nversions of the Library General Public License from time to time.\nSuch new versions will be similar in spirit to the present version,\nbut may differ in detail to address new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Library\nspecifies a version number of this License which applies to it and\n\"any later version\", you have the option of following the terms and\nconditions either of that version or of any later version published by\nthe Free Software Foundation.  If the Library does not specify a\nlicense version number, you may choose any version ever published by\nthe Free Software Foundation.\n\n  14. If you wish to incorporate parts of the Library into other free\nprograms whose distribution conditions are incompatible with these,\nwrite to the author to ask for permission.  For software which is\ncopyrighted by the Free Software Foundation, write to the Free\nSoftware Foundation; we sometimes make exceptions for this.  Our\ndecision will be guided by the two goals of preserving the free status\nof all derivatives of our free software and of promoting the sharing\nand reuse of software generally.\n\n                            NO WARRANTY\n\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n"
  },
  {
    "path": "libraries/openal/al.h",
    "content": "#ifndef AL_AL_H\n#define AL_AL_H\n\n#if defined(__cplusplus)\nextern \"C\" {\n#endif\n\n#ifndef AL_API\n #if defined(AL_LIBTYPE_STATIC)\n  #define AL_API\n #elif defined(_WIN32)\n  #define AL_API __declspec(dllimport)\n #else\n  #define AL_API extern\n #endif\n#endif\n\n#if defined(_WIN32)\n #define AL_APIENTRY __cdecl\n#else\n #define AL_APIENTRY\n#endif\n\n\n/* Deprecated macros. */\n#define OPENAL\n#define ALAPI                                    AL_API\n#define ALAPIENTRY                               AL_APIENTRY\n#define AL_INVALID                               (-1)\n#define AL_ILLEGAL_ENUM                          AL_INVALID_ENUM\n#define AL_ILLEGAL_COMMAND                       AL_INVALID_OPERATION\n\n/* Supported AL versions. */\n#define AL_VERSION_1_0\n#define AL_VERSION_1_1\n\n/** 8-bit boolean */\ntypedef char ALboolean;\n\n/** character */\ntypedef char ALchar;\n\n/** signed 8-bit 2's complement integer */\ntypedef signed char ALbyte;\n\n/** unsigned 8-bit integer */\ntypedef unsigned char ALubyte;\n\n/** signed 16-bit 2's complement integer */\ntypedef short ALshort;\n\n/** unsigned 16-bit integer */\ntypedef unsigned short ALushort;\n\n/** signed 32-bit 2's complement integer */\ntypedef int ALint;\n\n/** unsigned 32-bit integer */\ntypedef unsigned int ALuint;\n\n/** non-negative 32-bit binary integer size */\ntypedef int ALsizei;\n\n/** enumerated 32-bit value */\ntypedef int ALenum;\n\n/** 32-bit IEEE754 floating-point */\ntypedef float ALfloat;\n\n/** 64-bit IEEE754 floating-point */\ntypedef double ALdouble;\n\n/** void type (for opaque pointers only) */\ntypedef void ALvoid;\n\n\n/* Enumerant values begin at column 50. No tabs. */\n\n/** \"no distance model\" or \"no buffer\" */\n#define AL_NONE                                  0\n\n/** Boolean False. */\n#define AL_FALSE                                 0\n\n/** Boolean True. */\n#define AL_TRUE                                  1\n\n\n/**\n * Relative source.\n * Type:    ALboolean\n * Range:   [AL_TRUE, AL_FALSE]\n * Default: AL_FALSE\n *\n * Specifies if the Source has relative coordinates.\n */\n#define AL_SOURCE_RELATIVE                       0x202\n\n\n/**\n * Inner cone angle, in degrees.\n * Type:    ALint, ALfloat\n * Range:   [0 - 360]\n * Default: 360\n *\n * The angle covered by the inner cone, where the source will not attenuate.\n */\n#define AL_CONE_INNER_ANGLE                      0x1001\n\n/**\n * Outer cone angle, in degrees.\n * Range:   [0 - 360]\n * Default: 360\n *\n * The angle covered by the outer cone, where the source will be fully\n * attenuated.\n */\n#define AL_CONE_OUTER_ANGLE                      0x1002\n\n/**\n * Source pitch.\n * Type:    ALfloat\n * Range:   [0.5 - 2.0]\n * Default: 1.0\n *\n * A multiplier for the frequency (sample rate) of the source's buffer.\n */\n#define AL_PITCH                                 0x1003\n\n/**\n * Source or listener position.\n * Type:    ALfloat[3], ALint[3]\n * Default: {0, 0, 0}\n *\n * The source or listener location in three dimensional space.\n *\n * OpenAL, like OpenGL, uses a right handed coordinate system, where in a\n * frontal default view X (thumb) points right, Y points up (index finger), and\n * Z points towards the viewer/camera (middle finger).\n *\n * To switch from a left handed coordinate system, flip the sign on the Z\n * coordinate.\n */\n#define AL_POSITION                              0x1004\n\n/**\n * Source direction.\n * Type:    ALfloat[3], ALint[3]\n * Default: {0, 0, 0}\n *\n * Specifies the current direction in local space.\n * A zero-length vector specifies an omni-directional source (cone is ignored).\n */\n#define AL_DIRECTION                             0x1005\n\n/**\n * Source or listener velocity.\n * Type:    ALfloat[3], ALint[3]\n * Default: {0, 0, 0}\n *\n * Specifies the current velocity in local space.\n */\n#define AL_VELOCITY                              0x1006\n\n/**\n * Source looping.\n * Type:    ALboolean\n * Range:   [AL_TRUE, AL_FALSE]\n * Default: AL_FALSE\n *\n * Specifies whether source is looping.\n */\n#define AL_LOOPING                               0x1007\n\n/**\n * Source buffer.\n * Type:  ALuint\n * Range: any valid Buffer.\n *\n * Specifies the buffer to provide sound samples.\n */\n#define AL_BUFFER                                0x1009\n\n/**\n * Source or listener gain.\n * Type:  ALfloat\n * Range: [0.0 - ]\n *\n * A value of 1.0 means unattenuated. Each division by 2 equals an attenuation\n * of about -6dB. Each multiplicaton by 2 equals an amplification of about\n * +6dB.\n *\n * A value of 0.0 is meaningless with respect to a logarithmic scale; it is\n * silent.\n */\n#define AL_GAIN                                  0x100A\n\n/**\n * Minimum source gain.\n * Type:  ALfloat\n * Range: [0.0 - 1.0]\n *\n * The minimum gain allowed for a source, after distance and cone attenation is\n * applied (if applicable).\n */\n#define AL_MIN_GAIN                              0x100D\n\n/**\n * Maximum source gain.\n * Type:  ALfloat\n * Range: [0.0 - 1.0]\n *\n * The maximum gain allowed for a source, after distance and cone attenation is\n * applied (if applicable).\n */\n#define AL_MAX_GAIN                              0x100E\n\n/**\n * Listener orientation.\n * Type: ALfloat[6]\n * Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}\n *\n * Effectively two three dimensional vectors. The first vector is the front (or\n * \"at\") and the second is the top (or \"up\").\n *\n * Both vectors are in local space.\n */\n#define AL_ORIENTATION                           0x100F\n\n/**\n * Source state (query only).\n * Type:  ALint\n * Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]\n */\n#define AL_SOURCE_STATE                          0x1010\n\n/* Source state values. */\n#define AL_INITIAL                               0x1011\n#define AL_PLAYING                               0x1012\n#define AL_PAUSED                                0x1013\n#define AL_STOPPED                               0x1014\n\n/**\n * Source Buffer Queue size (query only).\n * Type: ALint\n *\n * The number of buffers queued using alSourceQueueBuffers, minus the buffers\n * removed with alSourceUnqueueBuffers.\n */\n#define AL_BUFFERS_QUEUED                        0x1015\n\n/**\n * Source Buffer Queue processed count (query only).\n * Type: ALint\n *\n * The number of queued buffers that have been fully processed, and can be\n * removed with alSourceUnqueueBuffers.\n *\n * Looping sources will never fully process buffers because they will be set to\n * play again for when the source loops.\n */\n#define AL_BUFFERS_PROCESSED                     0x1016\n\n/**\n * Source reference distance.\n * Type:    ALfloat\n * Range:   [0.0 - ]\n * Default: 1.0\n *\n * The distance in units that no attenuation occurs.\n *\n * At 0.0, no distance attenuation ever occurs on non-linear attenuation models.\n */\n#define AL_REFERENCE_DISTANCE                    0x1020\n\n/**\n * Source rolloff factor.\n * Type:    ALfloat\n * Range:   [0.0 - ]\n * Default: 1.0\n *\n * Multiplier to exaggerate or diminish distance attenuation.\n *\n * At 0.0, no distance attenuation ever occurs.\n */\n#define AL_ROLLOFF_FACTOR                        0x1021\n\n/**\n * Outer cone gain.\n * Type:    ALfloat\n * Range:   [0.0 - 1.0]\n * Default: 0.0\n *\n * The gain attenuation applied when the listener is outside of the source's\n * outer cone.\n */\n#define AL_CONE_OUTER_GAIN                       0x1022\n\n/**\n * Source maximum distance.\n * Type:    ALfloat\n * Range:   [0.0 - ]\n * Default: FLT_MAX\n *\n * The distance above which the source is not attenuated any further with a\n * clamped distance model, or where attenuation reaches 0.0 gain for linear\n * distance models with a default rolloff factor.\n */\n#define AL_MAX_DISTANCE                          0x1023\n\n/** Source buffer position, in seconds */\n#define AL_SEC_OFFSET                            0x1024\n/** Source buffer position, in sample frames */\n#define AL_SAMPLE_OFFSET                         0x1025\n/** Source buffer position, in bytes */\n#define AL_BYTE_OFFSET                           0x1026\n\n/**\n * Source type (query only).\n * Type:  ALint\n * Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]\n *\n * A Source is Static if a Buffer has been attached using AL_BUFFER.\n *\n * A Source is Streaming if one or more Buffers have been attached using\n * alSourceQueueBuffers.\n *\n * A Source is Undetermined when it has the NULL buffer attached using\n * AL_BUFFER.\n */\n#define AL_SOURCE_TYPE                           0x1027\n\n/* Source type values. */\n#define AL_STATIC                                0x1028\n#define AL_STREAMING                             0x1029\n#define AL_UNDETERMINED                          0x1030\n\n/** Unsigned 8-bit mono buffer format. */\n#define AL_FORMAT_MONO8                          0x1100\n/** Signed 16-bit mono buffer format. */\n#define AL_FORMAT_MONO16                         0x1101\n/** Unsigned 8-bit stereo buffer format. */\n#define AL_FORMAT_STEREO8                        0x1102\n/** Signed 16-bit stereo buffer format. */\n#define AL_FORMAT_STEREO16                       0x1103\n\n/** Buffer frequency (query only). */\n#define AL_FREQUENCY                             0x2001\n/** Buffer bits per sample (query only). */\n#define AL_BITS                                  0x2002\n/** Buffer channel count (query only). */\n#define AL_CHANNELS                              0x2003\n/** Buffer data size (query only). */\n#define AL_SIZE                                  0x2004\n\n/* Buffer state. Not for public use. */\n#define AL_UNUSED                                0x2010\n#define AL_PENDING                               0x2011\n#define AL_PROCESSED                             0x2012\n\n\n/** No error. */\n#define AL_NO_ERROR                              0\n\n/** Invalid name paramater passed to AL call. */\n#define AL_INVALID_NAME                          0xA001\n\n/** Invalid enum parameter passed to AL call. */\n#define AL_INVALID_ENUM                          0xA002\n\n/** Invalid value parameter passed to AL call. */\n#define AL_INVALID_VALUE                         0xA003\n\n/** Illegal AL call. */\n#define AL_INVALID_OPERATION                     0xA004\n\n/** Not enough memory. */\n#define AL_OUT_OF_MEMORY                         0xA005\n\n\n/** Context string: Vendor ID. */\n#define AL_VENDOR                                0xB001\n/** Context string: Version. */\n#define AL_VERSION                               0xB002\n/** Context string: Renderer ID. */\n#define AL_RENDERER                              0xB003\n/** Context string: Space-separated extension list. */\n#define AL_EXTENSIONS                            0xB004\n\n\n/**\n * Doppler scale.\n * Type:    ALfloat\n * Range:   [0.0 - ]\n * Default: 1.0\n *\n * Scale for source and listener velocities.\n */\n#define AL_DOPPLER_FACTOR                        0xC000\nAL_API void AL_APIENTRY alDopplerFactor(ALfloat value);\n\n/**\n * Doppler velocity (deprecated).\n *\n * A multiplier applied to the Speed of Sound.\n */\n#define AL_DOPPLER_VELOCITY                      0xC001\nAL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);\n\n/**\n * Speed of Sound, in units per second.\n * Type:    ALfloat\n * Range:   [0.0001 - ]\n * Default: 343.3\n *\n * The speed at which sound waves are assumed to travel, when calculating the\n * doppler effect.\n */\n#define AL_SPEED_OF_SOUND                        0xC003\nAL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);\n\n/**\n * Distance attenuation model.\n * Type:    ALint\n * Range:   [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,\n *           AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,\n *           AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]\n * Default: AL_INVERSE_DISTANCE_CLAMPED\n *\n * The model by which sources attenuate with distance.\n *\n * None     - No distance attenuation.\n * Inverse  - Doubling the distance halves the source gain.\n * Linear   - Linear gain scaling between the reference and max distances.\n * Exponent - Exponential gain dropoff.\n *\n * Clamped variations work like the non-clamped counterparts, except the\n * distance calculated is clamped between the reference and max distances.\n */\n#define AL_DISTANCE_MODEL                        0xD000\nAL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);\n\n/* Distance model values. */\n#define AL_INVERSE_DISTANCE                      0xD001\n#define AL_INVERSE_DISTANCE_CLAMPED              0xD002\n#define AL_LINEAR_DISTANCE                       0xD003\n#define AL_LINEAR_DISTANCE_CLAMPED               0xD004\n#define AL_EXPONENT_DISTANCE                     0xD005\n#define AL_EXPONENT_DISTANCE_CLAMPED             0xD006\n\n/* Renderer State management. */\nAL_API void AL_APIENTRY alEnable(ALenum capability);\nAL_API void AL_APIENTRY alDisable(ALenum capability);\nAL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);\n\n/* State retrieval. */\nAL_API const ALchar* AL_APIENTRY alGetString(ALenum param);\nAL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);\nAL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);\nAL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);\nAL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);\nAL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);\nAL_API ALint AL_APIENTRY alGetInteger(ALenum param);\nAL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);\nAL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);\n\n/* Error retrieval. */\n\n/** Obtain the first error generated in the AL context since the last check. */\nAL_API ALenum AL_APIENTRY alGetError(void);\n\n/** Query for the presence of an extension on the AL context. */\nAL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);\n/**\n * Retrieve the address of a function. The returned function may be context-\n * specific.\n */\nAL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);\n/**\n * Retrieve the value of an enum. The returned value may be context-specific.\n */\nAL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);\n\n\n/* Set Listener parameters */\nAL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);\nAL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\nAL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);\nAL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);\nAL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);\nAL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);\n\n/* Get Listener parameters */\nAL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);\nAL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\nAL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);\nAL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);\nAL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);\nAL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);\n\n\n/** Create Source objects. */\nAL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);\n/** Delete Source objects. */\nAL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);\n/** Verify a handle is a valid Source. */\nAL_API ALboolean AL_APIENTRY alIsSource(ALuint source);\n\n/* Set Source parameters. */\nAL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);\nAL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\nAL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);\nAL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);\nAL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);\nAL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);\n\n/* Get Source parameters. */\nAL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);\nAL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\nAL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);\nAL_API void AL_APIENTRY alGetSourcei(ALuint source,  ALenum param, ALint *value);\nAL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);\nAL_API void AL_APIENTRY alGetSourceiv(ALuint source,  ALenum param, ALint *values);\n\n\n/** Play, replay, or resume (if paused) a list of Sources */\nAL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);\n/** Stop a list of Sources */\nAL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);\n/** Rewind a list of Sources */\nAL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);\n/** Pause a list of Sources */\nAL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);\n\n/** Play, replay, or resume a Source */\nAL_API void AL_APIENTRY alSourcePlay(ALuint source);\n/** Stop a Source */\nAL_API void AL_APIENTRY alSourceStop(ALuint source);\n/** Rewind a Source (set playback postiton to beginning) */\nAL_API void AL_APIENTRY alSourceRewind(ALuint source);\n/** Pause a Source */\nAL_API void AL_APIENTRY alSourcePause(ALuint source);\n\n/** Queue buffers onto a source */\nAL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);\n/** Unqueue processed buffers from a source */\nAL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);\n\n\n/** Create Buffer objects */\nAL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);\n/** Delete Buffer objects */\nAL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);\n/** Verify a handle is a valid Buffer */\nAL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);\n\n/** Specifies the data to be copied into a buffer */\nAL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);\n\n/* Set Buffer parameters, */\nAL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);\nAL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\nAL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);\nAL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);\nAL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);\nAL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);\n\n/* Get Buffer parameters. */\nAL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);\nAL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\nAL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);\nAL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);\nAL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);\nAL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);\n\n/* Pointer-to-function type, useful for dynamically getting AL entry points. */\ntypedef void          (AL_APIENTRY *LPALENABLE)(ALenum capability);\ntypedef void          (AL_APIENTRY *LPALDISABLE)(ALenum capability);\ntypedef ALboolean     (AL_APIENTRY *LPALISENABLED)(ALenum capability);\ntypedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);\ntypedef void          (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);\ntypedef void          (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);\ntypedef void          (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);\ntypedef ALboolean     (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);\ntypedef ALint         (AL_APIENTRY *LPALGETINTEGER)(ALenum param);\ntypedef ALfloat       (AL_APIENTRY *LPALGETFLOAT)(ALenum param);\ntypedef ALdouble      (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);\ntypedef ALenum        (AL_APIENTRY *LPALGETERROR)(void);\ntypedef ALboolean     (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);\ntypedef void*         (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);\ntypedef ALenum        (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);\ntypedef void          (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);\ntypedef void          (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\ntypedef void          (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);\ntypedef void          (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);\ntypedef void          (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);\ntypedef void          (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);\ntypedef void          (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\ntypedef void          (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);\ntypedef void          (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);\ntypedef void          (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);\ntypedef void          (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);\ntypedef void          (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);\ntypedef ALboolean     (AL_APIENTRY *LPALISSOURCE)(ALuint source);\ntypedef void          (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);\ntypedef void          (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\ntypedef void          (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);\ntypedef void          (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);\ntypedef void          (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);\ntypedef void          (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);\ntypedef void          (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\ntypedef void          (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);\ntypedef void          (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);\ntypedef void          (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);\ntypedef void          (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);\ntypedef void          (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);\ntypedef void          (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);\ntypedef void          (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);\ntypedef void          (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);\ntypedef void          (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);\ntypedef void          (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);\ntypedef void          (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);\ntypedef void          (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);\ntypedef void          (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);\ntypedef void          (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);\ntypedef void          (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);\ntypedef ALboolean     (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);\ntypedef void          (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);\ntypedef void          (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);\ntypedef void          (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);\ntypedef void          (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);\ntypedef void          (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);\ntypedef void          (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);\ntypedef void          (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);\ntypedef void          (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);\ntypedef void          (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);\ntypedef void          (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);\ntypedef void          (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);\ntypedef void          (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);\ntypedef void          (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);\ntypedef void          (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);\ntypedef void          (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);\ntypedef void          (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);\n\n#if defined(__cplusplus)\n}  /* extern \"C\" */\n#endif\n\n#endif /* AL_AL_H */\n"
  },
  {
    "path": "libraries/openal/alc.h",
    "content": "#ifndef AL_ALC_H\n#define AL_ALC_H\n\n#if defined(__cplusplus)\nextern \"C\" {\n#endif\n\n#ifndef ALC_API\n #if defined(AL_LIBTYPE_STATIC)\n  #define ALC_API\n #elif defined(_WIN32)\n  #define ALC_API __declspec(dllimport)\n #else\n  #define ALC_API extern\n #endif\n#endif\n\n#if defined(_WIN32)\n #define ALC_APIENTRY __cdecl\n#else\n #define ALC_APIENTRY\n#endif\n\n\n/* Deprecated macros. */\n#define ALCAPI                                   ALC_API\n#define ALCAPIENTRY                              ALC_APIENTRY\n#define ALC_INVALID                              0\n\n/** Supported ALC version? */\n#define ALC_VERSION_0_1                          1\n\n/** Opaque device handle */\ntypedef struct ALCdevice ALCdevice;\n/** Opaque context handle */\ntypedef struct ALCcontext ALCcontext;\n\n/** 8-bit boolean */\ntypedef char ALCboolean;\n\n/** character */\ntypedef char ALCchar;\n\n/** signed 8-bit 2's complement integer */\ntypedef signed char ALCbyte;\n\n/** unsigned 8-bit integer */\ntypedef unsigned char ALCubyte;\n\n/** signed 16-bit 2's complement integer */\ntypedef short ALCshort;\n\n/** unsigned 16-bit integer */\ntypedef unsigned short ALCushort;\n\n/** signed 32-bit 2's complement integer */\ntypedef int ALCint;\n\n/** unsigned 32-bit integer */\ntypedef unsigned int ALCuint;\n\n/** non-negative 32-bit binary integer size */\ntypedef int ALCsizei;\n\n/** enumerated 32-bit value */\ntypedef int ALCenum;\n\n/** 32-bit IEEE754 floating-point */\ntypedef float ALCfloat;\n\n/** 64-bit IEEE754 floating-point */\ntypedef double ALCdouble;\n\n/** void type (for opaque pointers only) */\ntypedef void ALCvoid;\n\n\n/* Enumerant values begin at column 50. No tabs. */\n\n/** Boolean False. */\n#define ALC_FALSE                                0\n\n/** Boolean True. */\n#define ALC_TRUE                                 1\n\n/** Context attribute: <int> Hz. */\n#define ALC_FREQUENCY                            0x1007\n\n/** Context attribute: <int> Hz. */\n#define ALC_REFRESH                              0x1008\n\n/** Context attribute: AL_TRUE or AL_FALSE synchronous context? */\n#define ALC_SYNC                                 0x1009\n\n/** Context attribute: <int> requested Mono (3D) Sources. */\n#define ALC_MONO_SOURCES                         0x1010\n\n/** Context attribute: <int> requested Stereo Sources. */\n#define ALC_STEREO_SOURCES                       0x1011\n\n/** No error. */\n#define ALC_NO_ERROR                             0\n\n/** Invalid device handle. */\n#define ALC_INVALID_DEVICE                       0xA001\n\n/** Invalid context handle. */\n#define ALC_INVALID_CONTEXT                      0xA002\n\n/** Invalid enum parameter passed to an ALC call. */\n#define ALC_INVALID_ENUM                         0xA003\n\n/** Invalid value parameter passed to an ALC call. */\n#define ALC_INVALID_VALUE                        0xA004\n\n/** Out of memory. */\n#define ALC_OUT_OF_MEMORY                        0xA005\n\n\n/** Runtime ALC major version. */\n#define ALC_MAJOR_VERSION                        0x1000\n/** Runtime ALC minor version. */\n#define ALC_MINOR_VERSION                        0x1001\n\n/** Context attribute list size. */\n#define ALC_ATTRIBUTES_SIZE                      0x1002\n/** Context attribute list properties. */\n#define ALC_ALL_ATTRIBUTES                       0x1003\n\n/** String for the default device specifier. */\n#define ALC_DEFAULT_DEVICE_SPECIFIER             0x1004\n/**\n * String for the given device's specifier.\n *\n * If device handle is NULL, it is instead a null-char separated list of\n * strings of known device specifiers (list ends with an empty string).\n */\n#define ALC_DEVICE_SPECIFIER                     0x1005\n/** String for space-separated list of ALC extensions. */\n#define ALC_EXTENSIONS                           0x1006\n\n\n/** Capture extension */\n#define ALC_EXT_CAPTURE 1\n/**\n * String for the given capture device's specifier.\n *\n * If device handle is NULL, it is instead a null-char separated list of\n * strings of known capture device specifiers (list ends with an empty string).\n */\n#define ALC_CAPTURE_DEVICE_SPECIFIER             0x310\n/** String for the default capture device specifier. */\n#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER     0x311\n/** Number of sample frames available for capture. */\n#define ALC_CAPTURE_SAMPLES                      0x312\n\n\n/** Enumerate All extension */\n#define ALC_ENUMERATE_ALL_EXT 1\n/** String for the default extended device specifier. */\n#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER        0x1012\n/**\n * String for the given extended device's specifier.\n *\n * If device handle is NULL, it is instead a null-char separated list of\n * strings of known extended device specifiers (list ends with an empty string).\n */\n#define ALC_ALL_DEVICES_SPECIFIER                0x1013\n\n\n/* Context management. */\n\n/** Create and attach a context to the given device. */\nALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint *attrlist);\n/**\n * Makes the given context the active process-wide context. Passing NULL clears\n * the active context.\n */\nALC_API ALCboolean  ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context);\n/** Resumes processing updates for the given context. */\nALC_API void        ALC_APIENTRY alcProcessContext(ALCcontext *context);\n/** Suspends updates for the given context. */\nALC_API void        ALC_APIENTRY alcSuspendContext(ALCcontext *context);\n/** Remove a context from its device and destroys it. */\nALC_API void        ALC_APIENTRY alcDestroyContext(ALCcontext *context);\n/** Returns the currently active context. */\nALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void);\n/** Returns the device that a particular context is attached to. */\nALC_API ALCdevice*  ALC_APIENTRY alcGetContextsDevice(ALCcontext *context);\n\n/* Device management. */\n\n/** Opens the named playback device. */\nALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename);\n/** Closes the given playback device. */\nALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device);\n\n/* Error support. */\n\n/** Obtain the most recent Device error. */\nALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device);\n\n/* Extension support. */\n\n/**\n * Query for the presence of an extension on the device. Pass a NULL device to\n * query a device-inspecific extension.\n */\nALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);\n/**\n * Retrieve the address of a function. Given a non-NULL device, the returned\n * function may be device-specific.\n */\nALC_API ALCvoid*   ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);\n/**\n * Retrieve the value of an enum. Given a non-NULL device, the returned value\n * may be device-specific.\n */\nALC_API ALCenum    ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);\n\n/* Query functions. */\n\n/** Returns information about the device, and error strings. */\nALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param);\n/** Returns information about the device and the version of OpenAL. */\nALC_API void           ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);\n\n/* Capture functions. */\n\n/**\n * Opens the named capture device with the given frequency, format, and buffer\n * size.\n */\nALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);\n/** Closes the given capture device. */\nALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device);\n/** Starts capturing samples into the device buffer.  */\nALC_API void       ALC_APIENTRY alcCaptureStart(ALCdevice *device);\n/** Stops capturing samples. Samples in the device buffer remain available. */\nALC_API void       ALC_APIENTRY alcCaptureStop(ALCdevice *device);\n/** Reads samples from the device buffer. */\nALC_API void       ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);\n\n/* Pointer-to-function type, useful for dynamically getting ALC entry points. */\ntypedef ALCcontext*    (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist);\ntypedef ALCboolean     (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context);\ntypedef void           (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context);\ntypedef void           (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context);\ntypedef void           (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context);\ntypedef ALCcontext*    (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void);\ntypedef ALCdevice*     (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context);\ntypedef ALCdevice*     (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename);\ntypedef ALCboolean     (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device);\ntypedef ALCenum        (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device);\ntypedef ALCboolean     (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname);\ntypedef ALCvoid*       (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname);\ntypedef ALCenum        (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname);\ntypedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param);\ntypedef void           (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);\ntypedef ALCdevice*     (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);\ntypedef ALCboolean     (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device);\ntypedef void           (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device);\ntypedef void           (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device);\ntypedef void           (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);\n\n#if defined(__cplusplus)\n}\n#endif\n\n#endif /* AL_ALC_H */\n"
  },
  {
    "path": "libraries/portaudio/portaudio.h",
    "content": "#ifndef PORTAUDIO_H\n#define PORTAUDIO_H\n/*\n * $Id$\n * PortAudio Portable Real-Time Audio Library\n * PortAudio API Header File\n * Latest version available at: http://www.portaudio.com/\n *\n * Copyright (c) 1999-2002 Ross Bencina and Phil Burk\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files\n * (the \"Software\"), to deal in the Software without restriction,\n * including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software,\n * and to permit persons to whom the Software is furnished to do so,\n * subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR\n * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF\n * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/*\n * The text above constitutes the entire PortAudio license; however,\n * the PortAudio community also makes the following non-binding requests:\n *\n * Any person wishing to distribute modifications to the Software is\n * requested to send the modifications to the original developer so that\n * they can be incorporated into the canonical version. It is also\n * requested that these non-binding requests be included along with the\n * license above.\n */\n\n/** @file\n @ingroup public_header\n @brief The portable PortAudio API.\n*/\n\n\n#ifdef __cplusplus\nextern \"C\"\n{\n#endif /* __cplusplus */\n\n/** Retrieve the release number of the currently running PortAudio build.\n For example, for version \"19.5.1\" this will return 0x00130501.\n\n @see paMakeVersionNumber\n*/\nint Pa_GetVersion( void );\n\n/** Retrieve a textual description of the current PortAudio build,\n e.g. \"PortAudio V19.5.0-devel, revision 1952M\".\n The format of the text may change in the future. Do not try to parse the\n returned string.\n\n @deprecated As of 19.5.0, use Pa_GetVersionInfo()->versionText instead.\n*/\nconst char* Pa_GetVersionText( void );\n\n/**\n Generate a packed integer version number in the same format used\n by Pa_GetVersion(). Use this to compare a specified version number with\n the currently running version. For example:\n\n @code\n     if( Pa_GetVersion() < paMakeVersionNumber(19,5,1) ) {}\n @endcode\n\n @see Pa_GetVersion, Pa_GetVersionInfo\n @version Available as of 19.5.0.\n*/\n#define paMakeVersionNumber(major, minor, subminor) \\\n    (((major)&0xFF)<<16 | ((minor)&0xFF)<<8 | ((subminor)&0xFF))\n\n\n/**\n A structure containing PortAudio API version information.\n @see Pa_GetVersionInfo, paMakeVersionNumber\n @version Available as of 19.5.0.\n*/\ntypedef struct PaVersionInfo {\n    int versionMajor;\n    int versionMinor;\n    int versionSubMinor;\n    /**\n     This is currently the Git revision hash but may change in the future.\n     The versionControlRevision is updated by running a script before compiling the library.\n     If the update does not occur, this value may refer to an earlier revision.\n    */\n    const char *versionControlRevision;\n    /** Version as a string, for example \"PortAudio V19.5.0-devel, revision 1952M\" */\n    const char *versionText;\n} PaVersionInfo;\n\n/** Retrieve version information for the currently running PortAudio build.\n @return A pointer to an immutable PaVersionInfo structure.\n\n @note This function can be called at any time. It does not require PortAudio\n to be initialized. The structure pointed to is statically allocated. Do not\n attempt to free it or modify it.\n\n @see PaVersionInfo, paMakeVersionNumber\n @version Available as of 19.5.0.\n*/\nconst PaVersionInfo* Pa_GetVersionInfo( void );\n\n\n/** Error codes returned by PortAudio functions.\n Note that with the exception of paNoError, all PaErrorCodes are negative.\n*/\n\ntypedef int PaError;\ntypedef enum PaErrorCode\n{\n    paNoError = 0,\n\n    paNotInitialized = -10000,\n    paUnanticipatedHostError,\n    paInvalidChannelCount,\n    paInvalidSampleRate,\n    paInvalidDevice,\n    paInvalidFlag,\n    paSampleFormatNotSupported,\n    paBadIODeviceCombination,\n    paInsufficientMemory,\n    paBufferTooBig,\n    paBufferTooSmall,\n    paNullCallback,\n    paBadStreamPtr,\n    paTimedOut,\n    paInternalError,\n    paDeviceUnavailable,\n    paIncompatibleHostApiSpecificStreamInfo,\n    paStreamIsStopped,\n    paStreamIsNotStopped,\n    paInputOverflowed,\n    paOutputUnderflowed,\n    paHostApiNotFound,\n    paInvalidHostApi,\n    paCanNotReadFromACallbackStream,\n    paCanNotWriteToACallbackStream,\n    paCanNotReadFromAnOutputOnlyStream,\n    paCanNotWriteToAnInputOnlyStream,\n    paIncompatibleStreamHostApi,\n    paBadBufferPtr\n} PaErrorCode;\n\n\n/** Translate the supplied PortAudio error code into a human readable\n message.\n*/\nconst char *Pa_GetErrorText( PaError errorCode );\n\n\n/** Library initialization function - call this before using PortAudio.\n This function initializes internal data structures and prepares underlying\n host APIs for use.  With the exception of Pa_GetVersion(), Pa_GetVersionText(),\n and Pa_GetErrorText(), this function MUST be called before using any other\n PortAudio API functions.\n\n If Pa_Initialize() is called multiple times, each successful\n call must be matched with a corresponding call to Pa_Terminate().\n Pairs of calls to Pa_Initialize()/Pa_Terminate() may overlap, and are not\n required to be fully nested.\n\n Note that if Pa_Initialize() returns an error code, Pa_Terminate() should\n NOT be called.\n\n @return paNoError if successful, otherwise an error code indicating the cause\n of failure.\n\n @see Pa_Terminate\n*/\nPaError Pa_Initialize( void );\n\n\n/** Library termination function - call this when finished using PortAudio.\n This function deallocates all resources allocated by PortAudio since it was\n initialized by a call to Pa_Initialize(). In cases where Pa_Initialise() has\n been called multiple times, each call must be matched with a corresponding call\n to Pa_Terminate(). The final matching call to Pa_Terminate() will automatically\n close any PortAudio streams that are still open.\n\n Pa_Terminate() MUST be called before exiting a program which uses PortAudio.\n Failure to do so may result in serious resource leaks, such as audio devices\n not being available until the next reboot.\n\n @return paNoError if successful, otherwise an error code indicating the cause\n of failure.\n\n @see Pa_Initialize\n*/\nPaError Pa_Terminate( void );\n\n\n\n/** The type used to refer to audio devices. Values of this type usually\n range from 0 to (Pa_GetDeviceCount()-1), and may also take on the PaNoDevice\n and paUseHostApiSpecificDeviceSpecification values.\n\n @see Pa_GetDeviceCount, paNoDevice, paUseHostApiSpecificDeviceSpecification\n*/\ntypedef int PaDeviceIndex;\n\n\n/** A special PaDeviceIndex value indicating that no device is available,\n or should be used.\n\n @see PaDeviceIndex\n*/\n#define paNoDevice ((PaDeviceIndex)-1)\n\n\n/** A special PaDeviceIndex value indicating that the device(s) to be used\n are specified in the host api specific stream info structure.\n\n @see PaDeviceIndex\n*/\n#define paUseHostApiSpecificDeviceSpecification ((PaDeviceIndex)-2)\n\n\n/* Host API enumeration mechanism */\n\n/** The type used to enumerate to host APIs at runtime. Values of this type\n range from 0 to (Pa_GetHostApiCount()-1).\n\n @see Pa_GetHostApiCount\n*/\ntypedef int PaHostApiIndex;\n\n\n/** Retrieve the number of available host APIs. Even if a host API is\n available it may have no devices available.\n\n @return A non-negative value indicating the number of available host APIs\n or, a PaErrorCode (which are always negative) if PortAudio is not initialized\n or an error is encountered.\n\n @see PaHostApiIndex\n*/\nPaHostApiIndex Pa_GetHostApiCount( void );\n\n\n/** Retrieve the index of the default host API. The default host API will be\n the lowest common denominator host API on the current platform and is\n unlikely to provide the best performance.\n\n @return A non-negative value ranging from 0 to (Pa_GetHostApiCount()-1)\n indicating the default host API index or, a PaErrorCode (which are always\n negative) if PortAudio is not initialized or an error is encountered.\n*/\nPaHostApiIndex Pa_GetDefaultHostApi( void );\n\n\n/** Unchanging unique identifiers for each supported host API. This type\n is used in the PaHostApiInfo structure. The values are guaranteed to be\n unique and to never change, thus allowing code to be written that\n conditionally uses host API specific extensions.\n\n New type ids will be allocated when support for a host API reaches\n \"public alpha\" status, prior to that developers should use the\n paInDevelopment type id.\n\n @see PaHostApiInfo\n*/\ntypedef enum PaHostApiTypeId\n{\n    paInDevelopment=0, /* use while developing support for a new host API */\n    paDirectSound=1,\n    paMME=2,\n    paASIO=3,\n    paSoundManager=4,\n    paCoreAudio=5,\n    paOSS=7,\n    paALSA=8,\n    paAL=9,\n    paBeOS=10,\n    paWDMKS=11,\n    paJACK=12,\n    paWASAPI=13,\n    paAudioScienceHPI=14\n} PaHostApiTypeId;\n\n\n/** A structure containing information about a particular host API. */\n\ntypedef struct PaHostApiInfo\n{\n    /** this is struct version 1 */\n    int structVersion;\n    /** The well known unique identifier of this host API @see PaHostApiTypeId */\n    PaHostApiTypeId type;\n    /** A textual description of the host API for display on user interfaces. */\n    const char *name;\n\n    /**  The number of devices belonging to this host API. This field may be\n     used in conjunction with Pa_HostApiDeviceIndexToDeviceIndex() to enumerate\n     all devices for this host API.\n     @see Pa_HostApiDeviceIndexToDeviceIndex\n    */\n    int deviceCount;\n\n    /** The default input device for this host API. The value will be a\n     device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice\n     if no default input device is available.\n    */\n    PaDeviceIndex defaultInputDevice;\n\n    /** The default output device for this host API. The value will be a\n     device index ranging from 0 to (Pa_GetDeviceCount()-1), or paNoDevice\n     if no default output device is available.\n    */\n    PaDeviceIndex defaultOutputDevice;\n\n} PaHostApiInfo;\n\n\n/** Retrieve a pointer to a structure containing information about a specific\n host Api.\n\n @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)\n\n @return A pointer to an immutable PaHostApiInfo structure describing\n a specific host API. If the hostApi parameter is out of range or an error\n is encountered, the function returns NULL.\n\n The returned structure is owned by the PortAudio implementation and must not\n be manipulated or freed. The pointer is only guaranteed to be valid between\n calls to Pa_Initialize() and Pa_Terminate().\n*/\nconst PaHostApiInfo * Pa_GetHostApiInfo( PaHostApiIndex hostApi );\n\n\n/** Convert a static host API unique identifier, into a runtime\n host API index.\n\n @param type A unique host API identifier belonging to the PaHostApiTypeId\n enumeration.\n\n @return A valid PaHostApiIndex ranging from 0 to (Pa_GetHostApiCount()-1) or,\n a PaErrorCode (which are always negative) if PortAudio is not initialized\n or an error is encountered.\n\n The paHostApiNotFound error code indicates that the host API specified by the\n type parameter is not available.\n\n @see PaHostApiTypeId\n*/\nPaHostApiIndex Pa_HostApiTypeIdToHostApiIndex( PaHostApiTypeId type );\n\n\n/** Convert a host-API-specific device index to standard PortAudio device index.\n This function may be used in conjunction with the deviceCount field of\n PaHostApiInfo to enumerate all devices for the specified host API.\n\n @param hostApi A valid host API index ranging from 0 to (Pa_GetHostApiCount()-1)\n\n @param hostApiDeviceIndex A valid per-host device index in the range\n 0 to (Pa_GetHostApiInfo(hostApi)->deviceCount-1)\n\n @return A non-negative PaDeviceIndex ranging from 0 to (Pa_GetDeviceCount()-1)\n or, a PaErrorCode (which are always negative) if PortAudio is not initialized\n or an error is encountered.\n\n A paInvalidHostApi error code indicates that the host API index specified by\n the hostApi parameter is out of range.\n\n A paInvalidDevice error code indicates that the hostApiDeviceIndex parameter\n is out of range.\n\n @see PaHostApiInfo\n*/\nPaDeviceIndex Pa_HostApiDeviceIndexToDeviceIndex( PaHostApiIndex hostApi,\n        int hostApiDeviceIndex );\n\n\n\n/** Structure used to return information about a host error condition.\n*/\ntypedef struct PaHostErrorInfo{\n    PaHostApiTypeId hostApiType;    /**< the host API which returned the error code */\n    long errorCode;                 /**< the error code returned */\n    const char *errorText;          /**< a textual description of the error if available, otherwise a zero-length string */\n}PaHostErrorInfo;\n\n\n/** Return information about the last host error encountered. The error\n information returned by Pa_GetLastHostErrorInfo() will never be modified\n asynchronously by errors occurring in other PortAudio owned threads\n (such as the thread that manages the stream callback.)\n\n This function is provided as a last resort, primarily to enhance debugging\n by providing clients with access to all available error information.\n\n @return A pointer to an immutable structure constraining information about\n the host error. The values in this structure will only be valid if a\n PortAudio function has previously returned the paUnanticipatedHostError\n error code.\n*/\nconst PaHostErrorInfo* Pa_GetLastHostErrorInfo( void );\n\n\n\n/* Device enumeration and capabilities */\n\n/** Retrieve the number of available devices. The number of available devices\n may be zero.\n\n @return A non-negative value indicating the number of available devices or,\n a PaErrorCode (which are always negative) if PortAudio is not initialized\n or an error is encountered.\n*/\nPaDeviceIndex Pa_GetDeviceCount( void );\n\n\n/** Retrieve the index of the default input device. The result can be\n used in the inputDevice parameter to Pa_OpenStream().\n\n @return The default input device index for the default host API, or paNoDevice\n if no default input device is available or an error was encountered.\n*/\nPaDeviceIndex Pa_GetDefaultInputDevice( void );\n\n\n/** Retrieve the index of the default output device. The result can be\n used in the outputDevice parameter to Pa_OpenStream().\n\n @return The default output device index for the default host API, or paNoDevice\n if no default output device is available or an error was encountered.\n\n @note\n On the PC, the user can specify a default device by\n setting an environment variable. For example, to use device #1.\n<pre>\n set PA_RECOMMENDED_OUTPUT_DEVICE=1\n</pre>\n The user should first determine the available device ids by using\n the supplied application \"pa_devs\".\n*/\nPaDeviceIndex Pa_GetDefaultOutputDevice( void );\n\n\n/** The type used to represent monotonic time in seconds. PaTime is\n used for the fields of the PaStreamCallbackTimeInfo argument to the\n PaStreamCallback and as the result of Pa_GetStreamTime().\n\n PaTime values have unspecified origin.\n\n @see PaStreamCallback, PaStreamCallbackTimeInfo, Pa_GetStreamTime\n*/\ntypedef double PaTime;\n\n\n/** A type used to specify one or more sample formats. Each value indicates\n a possible format for sound data passed to and from the stream callback,\n Pa_ReadStream and Pa_WriteStream.\n\n The standard formats paFloat32, paInt16, paInt32, paInt24, paInt8\n and aUInt8 are usually implemented by all implementations.\n\n The floating point representation (paFloat32) uses +1.0 and -1.0 as the\n maximum and minimum respectively.\n\n paUInt8 is an unsigned 8 bit format where 128 is considered \"ground\"\n\n The paNonInterleaved flag indicates that audio data is passed as an array\n of pointers to separate buffers, one buffer for each channel. Usually,\n when this flag is not used, audio data is passed as a single buffer with\n all channels interleaved.\n\n @see Pa_OpenStream, Pa_OpenDefaultStream, PaDeviceInfo\n @see paFloat32, paInt16, paInt32, paInt24, paInt8\n @see paUInt8, paCustomFormat, paNonInterleaved\n*/\ntypedef unsigned long PaSampleFormat;\n\n\n#define paFloat32        ((PaSampleFormat) 0x00000001) /**< @see PaSampleFormat */\n#define paInt32          ((PaSampleFormat) 0x00000002) /**< @see PaSampleFormat */\n#define paInt24          ((PaSampleFormat) 0x00000004) /**< Packed 24 bit format. @see PaSampleFormat */\n#define paInt16          ((PaSampleFormat) 0x00000008) /**< @see PaSampleFormat */\n#define paInt8           ((PaSampleFormat) 0x00000010) /**< @see PaSampleFormat */\n#define paUInt8          ((PaSampleFormat) 0x00000020) /**< @see PaSampleFormat */\n#define paCustomFormat   ((PaSampleFormat) 0x00010000) /**< @see PaSampleFormat */\n\n#define paNonInterleaved ((PaSampleFormat) 0x80000000) /**< @see PaSampleFormat */\n\n/** A structure providing information and capabilities of PortAudio devices.\n Devices may support input, output or both input and output.\n*/\ntypedef struct PaDeviceInfo\n{\n    int structVersion;  /* this is struct version 2 */\n    const char *name;\n    PaHostApiIndex hostApi; /**< note this is a host API index, not a type id*/\n\n    int maxInputChannels;\n    int maxOutputChannels;\n\n    /** Default latency values for interactive performance. */\n    PaTime defaultLowInputLatency;\n    PaTime defaultLowOutputLatency;\n    /** Default latency values for robust non-interactive applications (eg. playing sound files). */\n    PaTime defaultHighInputLatency;\n    PaTime defaultHighOutputLatency;\n\n    double defaultSampleRate;\n} PaDeviceInfo;\n\n\n/** Retrieve a pointer to a PaDeviceInfo structure containing information\n about the specified device.\n @return A pointer to an immutable PaDeviceInfo structure. If the device\n parameter is out of range the function returns NULL.\n\n @param device A valid device index in the range 0 to (Pa_GetDeviceCount()-1)\n\n @note PortAudio manages the memory referenced by the returned pointer,\n the client must not manipulate or free the memory. The pointer is only\n guaranteed to be valid between calls to Pa_Initialize() and Pa_Terminate().\n\n @see PaDeviceInfo, PaDeviceIndex\n*/\nconst PaDeviceInfo* Pa_GetDeviceInfo( PaDeviceIndex device );\n\n\n/** Parameters for one direction (input or output) of a stream.\n*/\ntypedef struct PaStreamParameters\n{\n    /** A valid device index in the range 0 to (Pa_GetDeviceCount()-1)\n     specifying the device to be used or the special constant\n     paUseHostApiSpecificDeviceSpecification which indicates that the actual\n     device(s) to use are specified in hostApiSpecificStreamInfo.\n     This field must not be set to paNoDevice.\n    */\n    PaDeviceIndex device;\n\n    /** The number of channels of sound to be delivered to the\n     stream callback or accessed by Pa_ReadStream() or Pa_WriteStream().\n     It can range from 1 to the value of maxInputChannels in the\n     PaDeviceInfo record for the device specified by the device parameter.\n    */\n    int channelCount;\n\n    /** The sample format of the buffer provided to the stream callback,\n     a_ReadStream() or Pa_WriteStream(). It may be any of the formats described\n     by the PaSampleFormat enumeration.\n    */\n    PaSampleFormat sampleFormat;\n\n    /** The desired latency in seconds. Where practical, implementations should\n     configure their latency based on these parameters, otherwise they may\n     choose the closest viable latency instead. Unless the suggested latency\n     is greater than the absolute upper limit for the device implementations\n     should round the suggestedLatency up to the next practical value - ie to\n     provide an equal or higher latency than suggestedLatency wherever possible.\n     Actual latency values for an open stream may be retrieved using the\n     inputLatency and outputLatency fields of the PaStreamInfo structure\n     returned by Pa_GetStreamInfo().\n     @see default*Latency in PaDeviceInfo, *Latency in PaStreamInfo\n    */\n    PaTime suggestedLatency;\n\n    /** An optional pointer to a host api specific data structure\n     containing additional information for device setup and/or stream processing.\n     hostApiSpecificStreamInfo is never required for correct operation,\n     if not used it should be set to NULL.\n    */\n    void *hostApiSpecificStreamInfo;\n\n} PaStreamParameters;\n\n\n/** Return code for Pa_IsFormatSupported indicating success. */\n#define paFormatIsSupported (0)\n\n/** Determine whether it would be possible to open a stream with the specified\n parameters.\n\n @param inputParameters A structure that describes the input parameters used to\n open a stream. The suggestedLatency field is ignored. See PaStreamParameters\n for a description of these parameters. inputParameters must be NULL for\n output-only streams.\n\n @param outputParameters A structure that describes the output parameters used\n to open a stream. The suggestedLatency field is ignored. See PaStreamParameters\n for a description of these parameters. outputParameters must be NULL for\n input-only streams.\n\n @param sampleRate The required sampleRate. For full-duplex streams it is the\n sample rate for both input and output\n\n @return Returns 0 if the format is supported, and an error code indicating why\n the format is not supported otherwise. The constant paFormatIsSupported is\n provided to compare with the return value for success.\n\n @see paFormatIsSupported, PaStreamParameters\n*/\nPaError Pa_IsFormatSupported( const PaStreamParameters *inputParameters,\n                              const PaStreamParameters *outputParameters,\n                              double sampleRate );\n\n\n\n/* Streaming types and functions */\n\n\n/**\n A single PaStream can provide multiple channels of real-time\n streaming audio input and output to a client application. A stream\n provides access to audio hardware represented by one or more\n PaDevices. Depending on the underlying Host API, it may be possible\n to open multiple streams using the same device, however this behavior\n is implementation defined. Portable applications should assume that\n a PaDevice may be simultaneously used by at most one PaStream.\n\n Pointers to PaStream objects are passed between PortAudio functions that\n operate on streams.\n\n @see Pa_OpenStream, Pa_OpenDefaultStream, Pa_OpenDefaultStream, Pa_CloseStream,\n Pa_StartStream, Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive,\n Pa_GetStreamTime, Pa_GetStreamCpuLoad\n\n*/\ntypedef void PaStream;\n\n\n/** Can be passed as the framesPerBuffer parameter to Pa_OpenStream()\n or Pa_OpenDefaultStream() to indicate that the stream callback will\n accept buffers of any size.\n*/\n#define paFramesPerBufferUnspecified  (0)\n\n\n/** Flags used to control the behavior of a stream. They are passed as\n parameters to Pa_OpenStream or Pa_OpenDefaultStream. Multiple flags may be\n ORed together.\n\n @see Pa_OpenStream, Pa_OpenDefaultStream\n @see paNoFlag, paClipOff, paDitherOff, paNeverDropInput,\n  paPrimeOutputBuffersUsingStreamCallback, paPlatformSpecificFlags\n*/\ntypedef unsigned long PaStreamFlags;\n\n/** @see PaStreamFlags */\n#define   paNoFlag          ((PaStreamFlags) 0)\n\n/** Disable default clipping of out of range samples.\n @see PaStreamFlags\n*/\n#define   paClipOff         ((PaStreamFlags) 0x00000001)\n\n/** Disable default dithering.\n @see PaStreamFlags\n*/\n#define   paDitherOff       ((PaStreamFlags) 0x00000002)\n\n/** Flag requests that where possible a full duplex stream will not discard\n overflowed input samples without calling the stream callback. This flag is\n only valid for full duplex callback streams and only when used in combination\n with the paFramesPerBufferUnspecified (0) framesPerBuffer parameter. Using\n this flag incorrectly results in a paInvalidFlag error being returned from\n Pa_OpenStream and Pa_OpenDefaultStream.\n\n @see PaStreamFlags, paFramesPerBufferUnspecified\n*/\n#define   paNeverDropInput  ((PaStreamFlags) 0x00000004)\n\n/** Call the stream callback to fill initial output buffers, rather than the\n default behavior of priming the buffers with zeros (silence). This flag has\n no effect for input-only and blocking read/write streams.\n\n @see PaStreamFlags\n*/\n#define   paPrimeOutputBuffersUsingStreamCallback ((PaStreamFlags) 0x00000008)\n\n/** A mask specifying the platform specific bits.\n @see PaStreamFlags\n*/\n#define   paPlatformSpecificFlags ((PaStreamFlags)0xFFFF0000)\n\n/**\n Timing information for the buffers passed to the stream callback.\n\n Time values are expressed in seconds and are synchronised with the time base used by Pa_GetStreamTime() for the associated stream.\n\n @see PaStreamCallback, Pa_GetStreamTime\n*/\ntypedef struct PaStreamCallbackTimeInfo{\n    PaTime inputBufferAdcTime;  /**< The time when the first sample of the input buffer was captured at the ADC input */\n    PaTime currentTime;         /**< The time when the stream callback was invoked */\n    PaTime outputBufferDacTime; /**< The time when the first sample of the output buffer will output the DAC */\n} PaStreamCallbackTimeInfo;\n\n\n/**\n Flag bit constants for the statusFlags to PaStreamCallback.\n\n @see paInputUnderflow, paInputOverflow, paOutputUnderflow, paOutputOverflow,\n paPrimingOutput\n*/\ntypedef unsigned long PaStreamCallbackFlags;\n\n/** In a stream opened with paFramesPerBufferUnspecified, indicates that\n input data is all silence (zeros) because no real data is available. In a\n stream opened without paFramesPerBufferUnspecified, it indicates that one or\n more zero samples have been inserted into the input buffer to compensate\n for an input underflow.\n @see PaStreamCallbackFlags\n*/\n#define paInputUnderflow   ((PaStreamCallbackFlags) 0x00000001)\n\n/** In a stream opened with paFramesPerBufferUnspecified, indicates that data\n prior to the first sample of the input buffer was discarded due to an\n overflow, possibly because the stream callback is using too much CPU time.\n Otherwise indicates that data prior to one or more samples in the\n input buffer was discarded.\n @see PaStreamCallbackFlags\n*/\n#define paInputOverflow    ((PaStreamCallbackFlags) 0x00000002)\n\n/** Indicates that output data (or a gap) was inserted, possibly because the\n stream callback is using too much CPU time.\n @see PaStreamCallbackFlags\n*/\n#define paOutputUnderflow  ((PaStreamCallbackFlags) 0x00000004)\n\n/** Indicates that output data will be discarded because no room is available.\n @see PaStreamCallbackFlags\n*/\n#define paOutputOverflow   ((PaStreamCallbackFlags) 0x00000008)\n\n/** Some of all of the output data will be used to prime the stream, input\n data may be zero.\n @see PaStreamCallbackFlags\n*/\n#define paPrimingOutput    ((PaStreamCallbackFlags) 0x00000010)\n\n/**\n Allowable return values for the PaStreamCallback.\n @see PaStreamCallback\n*/\ntypedef enum PaStreamCallbackResult\n{\n    paContinue=0,   /**< Signal that the stream should continue invoking the callback and processing audio. */\n    paComplete=1,   /**< Signal that the stream should stop invoking the callback and finish once all output samples have played. */\n    paAbort=2       /**< Signal that the stream should stop invoking the callback and finish as soon as possible. */\n} PaStreamCallbackResult;\n\n\n/**\n Functions of type PaStreamCallback are implemented by PortAudio clients.\n They consume, process or generate audio in response to requests from an\n active PortAudio stream.\n\n When a stream is running, PortAudio calls the stream callback periodically.\n The callback function is responsible for processing buffers of audio samples\n passed via the input and output parameters.\n\n The PortAudio stream callback runs at very high or real-time priority.\n It is required to consistently meet its time deadlines. Do not allocate\n memory, access the file system, call library functions or call other functions\n from the stream callback that may block or take an unpredictable amount of\n time to complete.\n\n In order for a stream to maintain glitch-free operation the callback\n must consume and return audio data faster than it is recorded and/or\n played. PortAudio anticipates that each callback invocation may execute for\n a duration approaching the duration of frameCount audio frames at the stream\n sample rate. It is reasonable to expect to be able to utilise 70% or more of\n the available CPU time in the PortAudio callback. However, due to buffer size\n adaption and other factors, not all host APIs are able to guarantee audio\n stability under heavy CPU load with arbitrary fixed callback buffer sizes.\n When high callback CPU utilisation is required the most robust behavior\n can be achieved by using paFramesPerBufferUnspecified as the\n Pa_OpenStream() framesPerBuffer parameter.\n\n @param input and @param output are either arrays of interleaved samples or;\n if non-interleaved samples were requested using the paNonInterleaved sample\n format flag, an array of buffer pointers, one non-interleaved buffer for\n each channel.\n\n The format, packing and number of channels used by the buffers are\n determined by parameters to Pa_OpenStream().\n\n @param frameCount The number of sample frames to be processed by\n the stream callback.\n\n @param timeInfo Timestamps indicating the ADC capture time of the first sample\n in the input buffer, the DAC output time of the first sample in the output buffer\n and the time the callback was invoked.\n See PaStreamCallbackTimeInfo and Pa_GetStreamTime()\n\n @param statusFlags Flags indicating whether input and/or output buffers\n have been inserted or will be dropped to overcome underflow or overflow\n conditions.\n\n @param userData The value of a user supplied pointer passed to\n Pa_OpenStream() intended for storing synthesis data etc.\n\n @return\n The stream callback should return one of the values in the\n ::PaStreamCallbackResult enumeration. To ensure that the callback continues\n to be called, it should return paContinue (0). Either paComplete or paAbort\n can be returned to finish stream processing, after either of these values is\n returned the callback will not be called again. If paAbort is returned the\n stream will finish as soon as possible. If paComplete is returned, the stream\n will continue until all buffers generated by the callback have been played.\n This may be useful in applications such as soundfile players where a specific\n duration of output is required. However, it is not necessary to utilize this\n mechanism as Pa_StopStream(), Pa_AbortStream() or Pa_CloseStream() can also\n be used to stop the stream. The callback must always fill the entire output\n buffer irrespective of its return value.\n\n @see Pa_OpenStream, Pa_OpenDefaultStream\n\n @note With the exception of Pa_GetStreamCpuLoad() it is not permissible to call\n PortAudio API functions from within the stream callback.\n*/\ntypedef int PaStreamCallback(\n    const void *input, void *output,\n    unsigned long frameCount,\n    const PaStreamCallbackTimeInfo* timeInfo,\n    PaStreamCallbackFlags statusFlags,\n    void *userData );\n\n\n/** Opens a stream for either input, output or both.\n\n @param stream The address of a PaStream pointer which will receive\n a pointer to the newly opened stream.\n\n @param inputParameters A structure that describes the input parameters used by\n the opened stream. See PaStreamParameters for a description of these parameters.\n inputParameters must be NULL for output-only streams.\n\n @param outputParameters A structure that describes the output parameters used by\n the opened stream. See PaStreamParameters for a description of these parameters.\n outputParameters must be NULL for input-only streams.\n\n @param sampleRate The desired sampleRate. For full-duplex streams it is the\n sample rate for both input and output. Note that the actual sampleRate\n may differ very slightly from the desired rate because of hardware limitations.\n The exact rate can be queried using Pa_GetStreamInfo(). If nothing close\n to the desired sampleRate is available then the open will fail and return an error.\n\n @param framesPerBuffer The number of frames passed to the stream callback\n function, or the preferred block granularity for a blocking read/write stream.\n The special value paFramesPerBufferUnspecified (0) may be used to request that\n the stream callback will receive an optimal (and possibly varying) number of\n frames based on host requirements and the requested latency settings.\n Note: With some host APIs, the use of non-zero framesPerBuffer for a callback\n stream may introduce an additional layer of buffering which could introduce\n additional latency. PortAudio guarantees that the additional latency\n will be kept to the theoretical minimum however, it is strongly recommended\n that a non-zero framesPerBuffer value only be used when your algorithm\n requires a fixed number of frames per stream callback.\n\n @param streamFlags Flags which modify the behavior of the streaming process.\n This parameter may contain a combination of flags ORed together. Some flags may\n only be relevant to certain buffer formats.\n\n @param streamCallback A pointer to a client supplied function that is responsible\n for processing and filling input and output buffers. If this parameter is NULL\n the stream will be opened in 'blocking read/write' mode. In blocking mode,\n the client can receive sample data using Pa_ReadStream and write sample data\n using Pa_WriteStream, the number of samples that may be read or written\n without blocking is returned by Pa_GetStreamReadAvailable and\n Pa_GetStreamWriteAvailable respectively.\n\n @param userData A client supplied pointer which is passed to the stream callback\n function. It could for example, contain a pointer to instance data necessary\n for processing the audio buffers. This parameter is ignored if streamCallback\n is NULL.\n\n @return\n Upon success Pa_OpenStream() returns paNoError and places a pointer to a\n valid PaStream in the stream argument. The stream is inactive (stopped).\n If a call to Pa_OpenStream() fails, a non-zero error code is returned (see\n PaError for possible error codes) and the value of stream is invalid.\n\n @see PaStreamParameters, PaStreamCallback, Pa_ReadStream, Pa_WriteStream,\n Pa_GetStreamReadAvailable, Pa_GetStreamWriteAvailable\n*/\nPaError Pa_OpenStream( PaStream** stream,\n                       const PaStreamParameters *inputParameters,\n                       const PaStreamParameters *outputParameters,\n                       double sampleRate,\n                       unsigned long framesPerBuffer,\n                       PaStreamFlags streamFlags,\n                       PaStreamCallback *streamCallback,\n                       void *userData );\n\n\n/** A simplified version of Pa_OpenStream() that opens the default input\n and/or output devices.\n\n @param stream The address of a PaStream pointer which will receive\n a pointer to the newly opened stream.\n\n @param numInputChannels  The number of channels of sound that will be supplied\n to the stream callback or returned by Pa_ReadStream. It can range from 1 to\n the value of maxInputChannels in the PaDeviceInfo record for the default input\n device. If 0 the stream is opened as an output-only stream.\n\n @param numOutputChannels The number of channels of sound to be delivered to the\n stream callback or passed to Pa_WriteStream. It can range from 1 to the value\n of maxOutputChannels in the PaDeviceInfo record for the default output device.\n If 0 the stream is opened as an output-only stream.\n\n @param sampleFormat The sample format of both the input and output buffers\n provided to the callback or passed to and from Pa_ReadStream and Pa_WriteStream.\n sampleFormat may be any of the formats described by the PaSampleFormat\n enumeration.\n\n @param sampleRate Same as Pa_OpenStream parameter of the same name.\n @param framesPerBuffer Same as Pa_OpenStream parameter of the same name.\n @param streamCallback Same as Pa_OpenStream parameter of the same name.\n @param userData Same as Pa_OpenStream parameter of the same name.\n\n @return As for Pa_OpenStream\n\n @see Pa_OpenStream, PaStreamCallback\n*/\nPaError Pa_OpenDefaultStream( PaStream** stream,\n                              int numInputChannels,\n                              int numOutputChannels,\n                              PaSampleFormat sampleFormat,\n                              double sampleRate,\n                              unsigned long framesPerBuffer,\n                              PaStreamCallback *streamCallback,\n                              void *userData );\n\n\n/** Closes an audio stream. If the audio stream is active it\n discards any pending buffers as if Pa_AbortStream() had been called.\n*/\nPaError Pa_CloseStream( PaStream *stream );\n\n\n/** Functions of type PaStreamFinishedCallback are implemented by PortAudio\n clients. They can be registered with a stream using the Pa_SetStreamFinishedCallback\n function. Once registered they are called when the stream becomes inactive\n (ie once a call to Pa_StopStream() will not block).\n A stream will become inactive after the stream callback returns non-zero,\n or when Pa_StopStream or Pa_AbortStream is called. For a stream providing audio\n output, if the stream callback returns paComplete, or Pa_StopStream() is called,\n the stream finished callback will not be called until all generated sample data\n has been played.\n\n @param userData The userData parameter supplied to Pa_OpenStream()\n\n @see Pa_SetStreamFinishedCallback\n*/\ntypedef void PaStreamFinishedCallback( void *userData );\n\n\n/** Register a stream finished callback function which will be called when the\n stream becomes inactive. See the description of PaStreamFinishedCallback for\n further details about when the callback will be called.\n\n @param stream a pointer to a PaStream that is in the stopped state - if the\n stream is not stopped, the stream's finished callback will remain unchanged\n and an error code will be returned.\n\n @param streamFinishedCallback a pointer to a function with the same signature\n as PaStreamFinishedCallback, that will be called when the stream becomes\n inactive. Passing NULL for this parameter will un-register a previously\n registered stream finished callback function.\n\n @return on success returns paNoError, otherwise an error code indicating the cause\n of the error.\n\n @see PaStreamFinishedCallback\n*/\nPaError Pa_SetStreamFinishedCallback( PaStream *stream, PaStreamFinishedCallback* streamFinishedCallback );\n\n\n/** Commences audio processing.\n*/\nPaError Pa_StartStream( PaStream *stream );\n\n\n/** Terminates audio processing. It waits until all pending\n audio buffers have been played before it returns.\n*/\nPaError Pa_StopStream( PaStream *stream );\n\n\n/** Terminates audio processing immediately without waiting for pending\n buffers to complete.\n*/\nPaError Pa_AbortStream( PaStream *stream );\n\n\n/** Determine whether the stream is stopped.\n A stream is considered to be stopped prior to a successful call to\n Pa_StartStream and after a successful call to Pa_StopStream or Pa_AbortStream.\n If a stream callback returns a value other than paContinue the stream is NOT\n considered to be stopped.\n\n @return Returns one (1) when the stream is stopped, zero (0) when\n the stream is running or, a PaErrorCode (which are always negative) if\n PortAudio is not initialized or an error is encountered.\n\n @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamActive\n*/\nPaError Pa_IsStreamStopped( PaStream *stream );\n\n\n/** Determine whether the stream is active.\n A stream is active after a successful call to Pa_StartStream(), until it\n becomes inactive either as a result of a call to Pa_StopStream() or\n Pa_AbortStream(), or as a result of a return value other than paContinue from\n the stream callback. In the latter case, the stream is considered inactive\n after the last buffer has finished playing.\n\n @return Returns one (1) when the stream is active (ie playing or recording\n audio), zero (0) when not playing or, a PaErrorCode (which are always negative)\n if PortAudio is not initialized or an error is encountered.\n\n @see Pa_StopStream, Pa_AbortStream, Pa_IsStreamStopped\n*/\nPaError Pa_IsStreamActive( PaStream *stream );\n\n\n\n/** A structure containing unchanging information about an open stream.\n @see Pa_GetStreamInfo\n*/\n\ntypedef struct PaStreamInfo\n{\n    /** this is struct version 1 */\n    int structVersion;\n\n    /** The input latency of the stream in seconds. This value provides the most\n     accurate estimate of input latency available to the implementation. It may\n     differ significantly from the suggestedLatency value passed to Pa_OpenStream().\n     The value of this field will be zero (0.) for output-only streams.\n     @see PaTime\n    */\n    PaTime inputLatency;\n\n    /** The output latency of the stream in seconds. This value provides the most\n     accurate estimate of output latency available to the implementation. It may\n     differ significantly from the suggestedLatency value passed to Pa_OpenStream().\n     The value of this field will be zero (0.) for input-only streams.\n     @see PaTime\n    */\n    PaTime outputLatency;\n\n    /** The sample rate of the stream in Hertz (samples per second). In cases\n     where the hardware sample rate is inaccurate and PortAudio is aware of it,\n     the value of this field may be different from the sampleRate parameter\n     passed to Pa_OpenStream(). If information about the actual hardware sample\n     rate is not available, this field will have the same value as the sampleRate\n     parameter passed to Pa_OpenStream().\n    */\n    double sampleRate;\n\n} PaStreamInfo;\n\n\n/** Retrieve a pointer to a PaStreamInfo structure containing information\n about the specified stream.\n @return A pointer to an immutable PaStreamInfo structure. If the stream\n parameter is invalid, or an error is encountered, the function returns NULL.\n\n @param stream A pointer to an open stream previously created with Pa_OpenStream.\n\n @note PortAudio manages the memory referenced by the returned pointer,\n the client must not manipulate or free the memory. The pointer is only\n guaranteed to be valid until the specified stream is closed.\n\n @see PaStreamInfo\n*/\nconst PaStreamInfo* Pa_GetStreamInfo( PaStream *stream );\n\n\n/** Returns the current time in seconds for a stream according to the same clock used\n to generate callback PaStreamCallbackTimeInfo timestamps. The time values are\n monotonically increasing and have unspecified origin.\n\n Pa_GetStreamTime returns valid time values for the entire life of the stream,\n from when the stream is opened until it is closed. Starting and stopping the stream\n does not affect the passage of time returned by Pa_GetStreamTime.\n\n This time may be used for synchronizing other events to the audio stream, for\n example synchronizing audio to MIDI.\n\n @return The stream's current time in seconds, or 0 if an error occurred.\n\n @see PaTime, PaStreamCallback, PaStreamCallbackTimeInfo\n*/\nPaTime Pa_GetStreamTime( PaStream *stream );\n\n\n/** Retrieve CPU usage information for the specified stream.\n The \"CPU Load\" is a fraction of total CPU time consumed by a callback stream's\n audio processing routines including, but not limited to the client supplied\n stream callback. This function does not work with blocking read/write streams.\n\n This function may be called from the stream callback function or the\n application.\n\n @return\n A floating point value, typically between 0.0 and 1.0, where 1.0 indicates\n that the stream callback is consuming the maximum number of CPU cycles possible\n to maintain real-time operation. A value of 0.5 would imply that PortAudio and\n the stream callback was consuming roughly 50% of the available CPU time. The\n return value may exceed 1.0. A value of 0.0 will always be returned for a\n blocking read/write stream, or if an error occurs.\n*/\ndouble Pa_GetStreamCpuLoad( PaStream* stream );\n\n\n/** Read samples from an input stream. The function doesn't return until\n the entire buffer has been filled - this may involve waiting for the operating\n system to supply the data.\n\n @param stream A pointer to an open stream previously created with Pa_OpenStream.\n\n @param buffer A pointer to a buffer of sample frames. The buffer contains\n samples in the format specified by the inputParameters->sampleFormat field\n used to open the stream, and the number of channels specified by\n inputParameters->numChannels. If non-interleaved samples were requested using\n the paNonInterleaved sample format flag, buffer is a pointer to the first element\n of an array of buffer pointers, one non-interleaved buffer for each channel.\n\n @param frames The number of frames to be read into buffer. This parameter\n is not constrained to a specific range, however high performance applications\n will want to match this parameter to the framesPerBuffer parameter used\n when opening the stream.\n\n @return On success PaNoError will be returned, or PaInputOverflowed if input\n data was discarded by PortAudio after the previous call and before this call.\n*/\nPaError Pa_ReadStream( PaStream* stream,\n                       void *buffer,\n                       unsigned long frames );\n\n\n/** Write samples to an output stream. This function doesn't return until the\n entire buffer has been written - this may involve waiting for the operating\n system to consume the data.\n\n @param stream A pointer to an open stream previously created with Pa_OpenStream.\n\n @param buffer A pointer to a buffer of sample frames. The buffer contains\n samples in the format specified by the outputParameters->sampleFormat field\n used to open the stream, and the number of channels specified by\n outputParameters->numChannels. If non-interleaved samples were requested using\n the paNonInterleaved sample format flag, buffer is a pointer to the first element\n of an array of buffer pointers, one non-interleaved buffer for each channel.\n\n @param frames The number of frames to be written from buffer. This parameter\n is not constrained to a specific range, however high performance applications\n will want to match this parameter to the framesPerBuffer parameter used\n when opening the stream.\n\n @return On success PaNoError will be returned, or paOutputUnderflowed if\n additional output data was inserted after the previous call and before this\n call.\n*/\nPaError Pa_WriteStream( PaStream* stream,\n                        const void *buffer,\n                        unsigned long frames );\n\n\n/** Retrieve the number of frames that can be read from the stream without\n waiting.\n\n @return Returns a non-negative value representing the maximum number of frames\n that can be read from the stream without blocking or busy waiting or, a\n PaErrorCode (which are always negative) if PortAudio is not initialized or an\n error is encountered.\n*/\nsigned long Pa_GetStreamReadAvailable( PaStream* stream );\n\n\n/** Retrieve the number of frames that can be written to the stream without\n waiting.\n\n @return Returns a non-negative value representing the maximum number of frames\n that can be written to the stream without blocking or busy waiting or, a\n PaErrorCode (which are always negative) if PortAudio is not initialized or an\n error is encountered.\n*/\nsigned long Pa_GetStreamWriteAvailable( PaStream* stream );\n\n\n/* Miscellaneous utilities */\n\n\n/** Retrieve the size of a given sample format in bytes.\n\n @return The size in bytes of a single sample in the specified format,\n or paSampleFormatNotSupported if the format is not supported.\n*/\nPaError Pa_GetSampleSize( PaSampleFormat format );\n\n\n/** Put the caller to sleep for at least 'msec' milliseconds. This function is\n provided only as a convenience for authors of portable code (such as the tests\n and examples in the PortAudio distribution.)\n\n The function may sleep longer than requested so don't rely on this for accurate\n musical timing.\n*/\nvoid Pa_Sleep( long msec );\n\n\n\n#ifdef __cplusplus\n}\n#endif /* __cplusplus */\n#endif /* PORTAUDIO_H */\n"
  },
  {
    "path": "libraries/sdl2/SDL.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL.h\n *\n *  Main include header for the SDL library\n */\n\n\n#ifndef SDL_h_\n#define SDL_h_\n\n#include \"SDL_main.h\"\n#include \"SDL_stdinc.h\"\n#include \"SDL_assert.h\"\n#include \"SDL_atomic.h\"\n#include \"SDL_audio.h\"\n#include \"SDL_clipboard.h\"\n#include \"SDL_cpuinfo.h\"\n#include \"SDL_endian.h\"\n#include \"SDL_error.h\"\n#include \"SDL_events.h\"\n#include \"SDL_filesystem.h\"\n#include \"SDL_gamecontroller.h\"\n#include \"SDL_guid.h\"\n#include \"SDL_haptic.h\"\n#include \"SDL_hidapi.h\"\n#include \"SDL_hints.h\"\n#include \"SDL_joystick.h\"\n#include \"SDL_loadso.h\"\n#include \"SDL_log.h\"\n#include \"SDL_messagebox.h\"\n#include \"SDL_metal.h\"\n#include \"SDL_mutex.h\"\n#include \"SDL_power.h\"\n#include \"SDL_render.h\"\n#include \"SDL_rwops.h\"\n#include \"SDL_sensor.h\"\n#include \"SDL_shape.h\"\n#include \"SDL_system.h\"\n#include \"SDL_thread.h\"\n#include \"SDL_timer.h\"\n#include \"SDL_version.h\"\n#include \"SDL_video.h\"\n#include \"SDL_locale.h\"\n#include \"SDL_misc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* As of version 0.5, SDL is loaded dynamically into the application */\n\n/**\n *  \\name SDL_INIT_*\n *\n *  These are the flags which may be passed to SDL_Init().  You should\n *  specify the subsystems which you will be using in your application.\n */\n/* @{ */\n#define SDL_INIT_TIMER          0x00000001u\n#define SDL_INIT_AUDIO          0x00000010u\n#define SDL_INIT_VIDEO          0x00000020u  /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */\n#define SDL_INIT_JOYSTICK       0x00000200u  /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */\n#define SDL_INIT_HAPTIC         0x00001000u\n#define SDL_INIT_GAMECONTROLLER 0x00002000u  /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */\n#define SDL_INIT_EVENTS         0x00004000u\n#define SDL_INIT_SENSOR         0x00008000u\n#define SDL_INIT_NOPARACHUTE    0x00100000u  /**< compatibility; this flag is ignored. */\n#define SDL_INIT_EVERYTHING ( \\\n                SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \\\n                SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \\\n            )\n/* @} */\n\n/**\n * Initialize the SDL library.\n *\n * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the\n * two may be used interchangeably. Though for readability of your code\n * SDL_InitSubSystem() might be preferred.\n *\n * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread)\n * subsystems are initialized by default. Message boxes\n * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the\n * video subsystem, in hopes of being useful in showing an error dialog when\n * SDL_Init fails. You must specifically initialize other subsystems if you\n * use them in your application.\n *\n * Logging (such as SDL_Log) works without initialization, too.\n *\n * `flags` may be any of the following OR'd together:\n *\n * - `SDL_INIT_TIMER`: timer subsystem\n * - `SDL_INIT_AUDIO`: audio subsystem\n * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events\n *   subsystem\n * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the\n *   events subsystem\n * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem\n * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically\n *   initializes the joystick subsystem\n * - `SDL_INIT_EVENTS`: events subsystem\n * - `SDL_INIT_EVERYTHING`: all of the above subsystems\n * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored\n *\n * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem()\n * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or\n * call SDL_Quit() to force shutdown). If a subsystem is already loaded then\n * this call will increase the ref-count and return.\n *\n * \\param flags subsystem initialization flags\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_InitSubSystem\n * \\sa SDL_Quit\n * \\sa SDL_SetMainReady\n * \\sa SDL_WasInit\n */\nextern DECLSPEC int SDLCALL SDL_Init(Uint32 flags);\n\n/**\n * Compatibility function to initialize the SDL library.\n *\n * In SDL2, this function and SDL_Init() are interchangeable.\n *\n * \\param flags any of the flags used by SDL_Init(); see SDL_Init for details.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Init\n * \\sa SDL_Quit\n * \\sa SDL_QuitSubSystem\n */\nextern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags);\n\n/**\n * Shut down specific SDL subsystems.\n *\n * If you start a subsystem using a call to that subsystem's init function\n * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),\n * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use\n * that subsystem's quit function (SDL_VideoQuit()) directly instead. But\n * generally, you should not be using those functions directly anyhow; use\n * SDL_Init() instead.\n *\n * You still need to call SDL_Quit() even if you close all open subsystems\n * with SDL_QuitSubSystem().\n *\n * \\param flags any of the flags used by SDL_Init(); see SDL_Init for details.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_InitSubSystem\n * \\sa SDL_Quit\n */\nextern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags);\n\n/**\n * Get a mask of the specified subsystems which are currently initialized.\n *\n * \\param flags any of the flags used by SDL_Init(); see SDL_Init for details.\n * \\returns a mask of all initialized subsystems if `flags` is 0, otherwise it\n *          returns the initialization status of the specified subsystems.\n *\n *          The return value does not include SDL_INIT_NOPARACHUTE.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Init\n * \\sa SDL_InitSubSystem\n */\nextern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags);\n\n/**\n * Clean up all initialized subsystems.\n *\n * You should call this function even if you have already shutdown each\n * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this\n * function even in the case of errors in initialization.\n *\n * If you start a subsystem using a call to that subsystem's init function\n * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(),\n * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut\n * it down before calling SDL_Quit(). But generally, you should not be using\n * those functions directly anyhow; use SDL_Init() instead.\n *\n * You can use this function with atexit() to ensure that it is run when your\n * application is shutdown, but it is not wise to do this from a library or\n * other dynamically loaded code.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Init\n * \\sa SDL_QuitSubSystem\n */\nextern DECLSPEC void SDLCALL SDL_Quit(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_assert.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_assert_h_\n#define SDL_assert_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef SDL_ASSERT_LEVEL\n#ifdef SDL_DEFAULT_ASSERT_LEVEL\n#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL\n#elif defined(_DEBUG) || defined(DEBUG) || \\\n      (defined(__GNUC__) && !defined(__OPTIMIZE__))\n#define SDL_ASSERT_LEVEL 2\n#else\n#define SDL_ASSERT_LEVEL 1\n#endif\n#endif /* SDL_ASSERT_LEVEL */\n\n/*\nThese are macros and not first class functions so that the debugger breaks\non the assertion line and not in some random guts of SDL, and so each\nassert can have unique static variables associated with it.\n*/\n\n#if defined(_MSC_VER)\n/* Don't include intrin.h here because it contains C++ code */\n    extern void __cdecl __debugbreak(void);\n    #define SDL_TriggerBreakpoint() __debugbreak()\n#elif _SDL_HAS_BUILTIN(__builtin_debugtrap)\n    #define SDL_TriggerBreakpoint() __builtin_debugtrap()\n#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) )\n    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( \"int $3\\n\\t\" )\n#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv)\n    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( \"ebreak\\n\\t\" )\n#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) )  /* this might work on other ARM targets, but this is a known quantity... */\n    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( \"brk #22\\n\\t\" )\n#elif defined(__APPLE__) && defined(__arm__)\n    #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( \"bkpt #22\\n\\t\" )\n#elif defined(__386__) && defined(__WATCOMC__)\n    #define SDL_TriggerBreakpoint() { _asm { int 0x03 } }\n#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__)\n    #include <signal.h>\n    #define SDL_TriggerBreakpoint() raise(SIGTRAP)\n#else\n    /* How do we trigger breakpoints on this platform? */\n    #define SDL_TriggerBreakpoint()\n#endif\n\n#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */\n#   define SDL_FUNCTION __func__\n#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))\n#   define SDL_FUNCTION __FUNCTION__\n#else\n#   define SDL_FUNCTION \"???\"\n#endif\n#define SDL_FILE    __FILE__\n#define SDL_LINE    __LINE__\n\n/*\nsizeof (x) makes the compiler still parse the expression even without\nassertions enabled, so the code is always checked at compile time, but\ndoesn't actually generate code for it, so there are no side effects or\nexpensive checks at run time, just the constant size of what x WOULD be,\nwhich presumably gets optimized out as unused.\nThis also solves the problem of...\n\n    int somevalue = blah();\n    SDL_assert(somevalue == 1);\n\n...which would cause compiles to complain that somevalue is unused if we\ndisable assertions.\n*/\n\n/* \"while (0,0)\" fools Microsoft's compiler's /W4 warning level into thinking\n    this condition isn't constant. And looks like an owl's face! */\n#ifdef _MSC_VER  /* stupid /W4 warnings. */\n#define SDL_NULL_WHILE_LOOP_CONDITION (0,0)\n#else\n#define SDL_NULL_WHILE_LOOP_CONDITION (0)\n#endif\n\n#define SDL_disabled_assert(condition) \\\n    do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION)\n\ntypedef enum\n{\n    SDL_ASSERTION_RETRY,  /**< Retry the assert immediately. */\n    SDL_ASSERTION_BREAK,  /**< Make the debugger trigger a breakpoint. */\n    SDL_ASSERTION_ABORT,  /**< Terminate the program. */\n    SDL_ASSERTION_IGNORE,  /**< Ignore the assert. */\n    SDL_ASSERTION_ALWAYS_IGNORE  /**< Ignore the assert from now on. */\n} SDL_AssertState;\n\ntypedef struct SDL_AssertData\n{\n    int always_ignore;\n    unsigned int trigger_count;\n    const char *condition;\n    const char *filename;\n    int linenum;\n    const char *function;\n    const struct SDL_AssertData *next;\n} SDL_AssertData;\n\n/* Never call this directly. Use the SDL_assert* macros. */\nextern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *,\n                                                            const char *,\n                                                            const char *, int)\n#if defined(__clang__)\n#if __has_feature(attribute_analyzer_noreturn)\n/* this tells Clang's static analysis that we're a custom assert function,\n   and that the analyzer should assume the condition was always true past this\n   SDL_assert test. */\n   __attribute__((analyzer_noreturn))\n#endif\n#endif\n;\n\n/* the do {} while(0) avoids dangling else problems:\n    if (x) SDL_assert(y); else blah();\n       ... without the do/while, the \"else\" could attach to this macro's \"if\".\n   We try to handle just the minimum we need here in a macro...the loop,\n   the static vars, and break points. The heavy lifting is handled in\n   SDL_ReportAssertion(), in SDL_assert.c.\n*/\n#define SDL_enabled_assert(condition) \\\n    do { \\\n        while ( !(condition) ) { \\\n            static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \\\n            const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \\\n            if (sdl_assert_state == SDL_ASSERTION_RETRY) { \\\n                continue; /* go again. */ \\\n            } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \\\n                SDL_TriggerBreakpoint(); \\\n            } \\\n            break; /* not retrying. */ \\\n        } \\\n    } while (SDL_NULL_WHILE_LOOP_CONDITION)\n\n/* Enable various levels of assertions. */\n#if SDL_ASSERT_LEVEL == 0   /* assertions disabled */\n#   define SDL_assert(condition) SDL_disabled_assert(condition)\n#   define SDL_assert_release(condition) SDL_disabled_assert(condition)\n#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)\n#elif SDL_ASSERT_LEVEL == 1  /* release settings. */\n#   define SDL_assert(condition) SDL_disabled_assert(condition)\n#   define SDL_assert_release(condition) SDL_enabled_assert(condition)\n#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)\n#elif SDL_ASSERT_LEVEL == 2  /* normal settings. */\n#   define SDL_assert(condition) SDL_enabled_assert(condition)\n#   define SDL_assert_release(condition) SDL_enabled_assert(condition)\n#   define SDL_assert_paranoid(condition) SDL_disabled_assert(condition)\n#elif SDL_ASSERT_LEVEL == 3  /* paranoid settings. */\n#   define SDL_assert(condition) SDL_enabled_assert(condition)\n#   define SDL_assert_release(condition) SDL_enabled_assert(condition)\n#   define SDL_assert_paranoid(condition) SDL_enabled_assert(condition)\n#else\n#   error Unknown assertion level.\n#endif\n\n/* this assertion is never disabled at any level. */\n#define SDL_assert_always(condition) SDL_enabled_assert(condition)\n\n\n/**\n * A callback that fires when an SDL assertion fails.\n *\n * \\param data a pointer to the SDL_AssertData structure corresponding to the\n *             current assertion\n * \\param userdata what was passed as `userdata` to SDL_SetAssertionHandler()\n * \\returns an SDL_AssertState value indicating how to handle the failure.\n */\ntypedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)(\n                                 const SDL_AssertData* data, void* userdata);\n\n/**\n * Set an application-defined assertion handler.\n *\n * This function allows an application to show its own assertion UI and/or\n * force the response to an assertion failure. If the application doesn't\n * provide this, SDL will try to do the right thing, popping up a\n * system-specific GUI dialog, and probably minimizing any fullscreen windows.\n *\n * This callback may fire from any thread, but it runs wrapped in a mutex, so\n * it will only fire from one thread at a time.\n *\n * This callback is NOT reset to SDL's internal handler upon SDL_Quit()!\n *\n * \\param handler the SDL_AssertionHandler function to call when an assertion\n *                fails or NULL for the default handler\n * \\param userdata a pointer that is passed to `handler`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAssertionHandler\n */\nextern DECLSPEC void SDLCALL SDL_SetAssertionHandler(\n                                            SDL_AssertionHandler handler,\n                                            void *userdata);\n\n/**\n * Get the default assertion handler.\n *\n * This returns the function pointer that is called by default when an\n * assertion is triggered. This is an internal function provided by SDL, that\n * is used for assertions when SDL_SetAssertionHandler() hasn't been used to\n * provide a different function.\n *\n * \\returns the default SDL_AssertionHandler that is called when an assert\n *          triggers.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_GetAssertionHandler\n */\nextern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void);\n\n/**\n * Get the current assertion handler.\n *\n * This returns the function pointer that is called when an assertion is\n * triggered. This is either the value last passed to\n * SDL_SetAssertionHandler(), or if no application-specified function is set,\n * is equivalent to calling SDL_GetDefaultAssertionHandler().\n *\n * The parameter `puserdata` is a pointer to a void*, which will store the\n * \"userdata\" pointer that was passed to SDL_SetAssertionHandler(). This value\n * will always be NULL for the default handler. If you don't care about this\n * data, it is safe to pass a NULL pointer to this function to ignore it.\n *\n * \\param puserdata pointer which is filled with the \"userdata\" pointer that\n *                  was passed to SDL_SetAssertionHandler()\n * \\returns the SDL_AssertionHandler that is called when an assert triggers.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_SetAssertionHandler\n */\nextern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata);\n\n/**\n * Get a list of all assertion failures.\n *\n * This function gets all assertions triggered since the last call to\n * SDL_ResetAssertionReport(), or the start of the program.\n *\n * The proper way to examine this data looks something like this:\n *\n * ```c\n * const SDL_AssertData *item = SDL_GetAssertionReport();\n * while (item) {\n *    printf(\"'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\\\n\",\n *           item->condition, item->function, item->filename,\n *           item->linenum, item->trigger_count,\n *           item->always_ignore ? \"yes\" : \"no\");\n *    item = item->next;\n * }\n * ```\n *\n * \\returns a list of all failed assertions or NULL if the list is empty. This\n *          memory should not be modified or freed by the application.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ResetAssertionReport\n */\nextern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void);\n\n/**\n * Clear the list of all assertion failures.\n *\n * This function will clear the list of all assertions triggered up to that\n * point. Immediately following this call, SDL_GetAssertionReport will return\n * no items. In addition, any previously-triggered assertions will be reset to\n * a trigger_count of zero, and their always_ignore state will be false.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAssertionReport\n */\nextern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void);\n\n\n/* these had wrong naming conventions until 2.0.4. Please update your app! */\n#define SDL_assert_state SDL_AssertState\n#define SDL_assert_data SDL_AssertData\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_assert_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_atomic.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n * \\file SDL_atomic.h\n *\n * Atomic operations.\n *\n * IMPORTANT:\n * If you are not an expert in concurrent lockless programming, you should\n * only be using the atomic lock and reference counting functions in this\n * file.  In all other cases you should be protecting your data structures\n * with full mutexes.\n *\n * The list of \"safe\" functions to use are:\n *  SDL_AtomicLock()\n *  SDL_AtomicUnlock()\n *  SDL_AtomicIncRef()\n *  SDL_AtomicDecRef()\n *\n * Seriously, here be dragons!\n * ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n *\n * You can find out a little more about lockless programming and the\n * subtle issues that can arise here:\n * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx\n *\n * There's also lots of good information here:\n * http://www.1024cores.net/home/lock-free-algorithms\n * http://preshing.com/\n *\n * These operations may or may not actually be implemented using\n * processor specific atomic operations. When possible they are\n * implemented as true processor specific atomic operations. When that\n * is not possible the are implemented using locks that *do* use the\n * available atomic operations.\n *\n * All of the atomic operations that modify memory are full memory barriers.\n */\n\n#ifndef SDL_atomic_h_\n#define SDL_atomic_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_platform.h\"\n\n#include \"begin_code.h\"\n\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\name SDL AtomicLock\n *\n * The atomic locks are efficient spinlocks using CPU instructions,\n * but are vulnerable to starvation and can spin forever if a thread\n * holding a lock has been terminated.  For this reason you should\n * minimize the code executed inside an atomic lock and never do\n * expensive things like API or system calls while holding them.\n *\n * The atomic locks are not safe to lock recursively.\n *\n * Porting Note:\n * The spin lock functions and type are required and can not be\n * emulated because they are used in the atomic emulation code.\n */\n/* @{ */\n\ntypedef int SDL_SpinLock;\n\n/**\n * Try to lock a spin lock by setting it to a non-zero value.\n *\n * ***Please note that spinlocks are dangerous if you don't know what you're\n * doing. Please be careful using any sort of spinlock!***\n *\n * \\param lock a pointer to a lock variable\n * \\returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already\n *          held.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AtomicLock\n * \\sa SDL_AtomicUnlock\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock);\n\n/**\n * Lock a spin lock by setting it to a non-zero value.\n *\n * ***Please note that spinlocks are dangerous if you don't know what you're\n * doing. Please be careful using any sort of spinlock!***\n *\n * \\param lock a pointer to a lock variable\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AtomicTryLock\n * \\sa SDL_AtomicUnlock\n */\nextern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock);\n\n/**\n * Unlock a spin lock by setting it to 0.\n *\n * Always returns immediately.\n *\n * ***Please note that spinlocks are dangerous if you don't know what you're\n * doing. Please be careful using any sort of spinlock!***\n *\n * \\param lock a pointer to a lock variable\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AtomicLock\n * \\sa SDL_AtomicTryLock\n */\nextern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock);\n\n/* @} *//* SDL AtomicLock */\n\n\n/**\n * The compiler barrier prevents the compiler from reordering\n * reads and writes to globally visible variables across the call.\n */\n#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__)\nvoid _ReadWriteBarrier(void);\n#pragma intrinsic(_ReadWriteBarrier)\n#define SDL_CompilerBarrier()   _ReadWriteBarrier()\n#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))\n/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */\n#define SDL_CompilerBarrier()   __asm__ __volatile__ (\"\" : : : \"memory\")\n#elif defined(__WATCOMC__)\nextern __inline void SDL_CompilerBarrier(void);\n#pragma aux SDL_CompilerBarrier = \"\" parm [] modify exact [];\n#else\n#define SDL_CompilerBarrier()   \\\n{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); }\n#endif\n\n/**\n * Memory barriers are designed to prevent reads and writes from being\n * reordered by the compiler and being seen out of order on multi-core CPUs.\n *\n * A typical pattern would be for thread A to write some data and a flag, and\n * for thread B to read the flag and get the data. In this case you would\n * insert a release barrier between writing the data and the flag,\n * guaranteeing that the data write completes no later than the flag is\n * written, and you would insert an acquire barrier between reading the flag\n * and reading the data, to ensure that all the reads associated with the flag\n * have completed.\n *\n * In this pattern you should always see a release barrier paired with an\n * acquire barrier and you should gate the data reads/writes with a single\n * flag variable.\n *\n * For more information on these semantics, take a look at the blog post:\n * http://preshing.com/20120913/acquire-and-release-semantics\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void);\nextern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void);\n\n#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__))\n#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ (\"lwsync\" : : : \"memory\")\n#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ (\"lwsync\" : : : \"memory\")\n#elif defined(__GNUC__) && defined(__aarch64__)\n#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ (\"dmb ish\" : : : \"memory\")\n#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ (\"dmb ish\" : : : \"memory\")\n#elif defined(__GNUC__) && defined(__arm__)\n#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */\n/* Information from:\n   https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19\n\n   The Linux kernel provides a helper function which provides the right code for a memory barrier,\n   hard-coded at address 0xffff0fa0\n*/\ntypedef void (*SDL_KernelMemoryBarrierFunc)();\n#define SDL_MemoryBarrierRelease()\t((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()\n#define SDL_MemoryBarrierAcquire()\t((SDL_KernelMemoryBarrierFunc)0xffff0fa0)()\n#elif 0 /* defined(__QNXNTO__) */\n#include <sys/cpuinline.h>\n\n#define SDL_MemoryBarrierRelease()   __cpu_membarrier()\n#define SDL_MemoryBarrierAcquire()   __cpu_membarrier()\n#else\n#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__)\n#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ (\"dmb ish\" : : : \"memory\")\n#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ (\"dmb ish\" : : : \"memory\")\n#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)\n#ifdef __thumb__\n/* The mcr instruction isn't available in thumb mode, use real functions */\n#define SDL_MEMORY_BARRIER_USES_FUNCTION\n#define SDL_MemoryBarrierRelease()   SDL_MemoryBarrierReleaseFunction()\n#define SDL_MemoryBarrierAcquire()   SDL_MemoryBarrierAcquireFunction()\n#else\n#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ (\"mcr p15, 0, %0, c7, c10, 5\" : : \"r\"(0) : \"memory\")\n#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ (\"mcr p15, 0, %0, c7, c10, 5\" : : \"r\"(0) : \"memory\")\n#endif /* __thumb__ */\n#else\n#define SDL_MemoryBarrierRelease()   __asm__ __volatile__ (\"\" : : : \"memory\")\n#define SDL_MemoryBarrierAcquire()   __asm__ __volatile__ (\"\" : : : \"memory\")\n#endif /* __LINUX__ || __ANDROID__ */\n#endif /* __GNUC__ && __arm__ */\n#else\n#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120))\n/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */\n#include <mbarrier.h>\n#define SDL_MemoryBarrierRelease()  __machine_rel_barrier()\n#define SDL_MemoryBarrierAcquire()  __machine_acq_barrier()\n#else\n/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */\n#define SDL_MemoryBarrierRelease()  SDL_CompilerBarrier()\n#define SDL_MemoryBarrierAcquire()  SDL_CompilerBarrier()\n#endif\n#endif\n\n/* \"REP NOP\" is PAUSE, coded for tools that don't know it by that name. */\n#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))\n    #define SDL_CPUPauseInstruction() __asm__ __volatile__(\"pause\\n\")  /* Some assemblers can't do REP NOP, so go with PAUSE. */\n#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__)\n    #define SDL_CPUPauseInstruction() __asm__ __volatile__(\"yield\" ::: \"memory\")\n#elif (defined(__powerpc__) || defined(__powerpc64__))\n    #define SDL_CPUPauseInstruction() __asm__ __volatile__(\"or 27,27,27\");\n#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64))\n    #define SDL_CPUPauseInstruction() _mm_pause()  /* this is actually \"rep nop\" and not a SIMD instruction. No inline asm in MSVC x86-64! */\n#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))\n    #define SDL_CPUPauseInstruction() __yield()\n#elif defined(__WATCOMC__) && defined(__386__)\n    extern __inline void SDL_CPUPauseInstruction(void);\n    #pragma aux SDL_CPUPauseInstruction = \".686p\" \".xmm2\" \"pause\"\n#else\n    #define SDL_CPUPauseInstruction()\n#endif\n\n\n/**\n * \\brief A type representing an atomic integer value.  It is a struct\n *        so people don't accidentally use numeric operations on it.\n */\ntypedef struct { int value; } SDL_atomic_t;\n\n/**\n * Set an atomic variable to a new value if it is currently an old value.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to an SDL_atomic_t variable to be modified\n * \\param oldval the old value\n * \\param newval the new value\n * \\returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AtomicCASPtr\n * \\sa SDL_AtomicGet\n * \\sa SDL_AtomicSet\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval);\n\n/**\n * Set an atomic variable to a value.\n *\n * This function also acts as a full memory barrier.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to an SDL_atomic_t variable to be modified\n * \\param v the desired value\n * \\returns the previous value of the atomic variable.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_AtomicGet\n */\nextern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v);\n\n/**\n * Get the value of an atomic variable.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to an SDL_atomic_t variable\n * \\returns the current value of an atomic variable.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_AtomicSet\n */\nextern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a);\n\n/**\n * Add to an atomic variable.\n *\n * This function also acts as a full memory barrier.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to an SDL_atomic_t variable to be modified\n * \\param v the desired value to add\n * \\returns the previous value of the atomic variable.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_AtomicDecRef\n * \\sa SDL_AtomicIncRef\n */\nextern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v);\n\n/**\n * \\brief Increment an atomic variable used as a reference count.\n */\n#ifndef SDL_AtomicIncRef\n#define SDL_AtomicIncRef(a)    SDL_AtomicAdd(a, 1)\n#endif\n\n/**\n * \\brief Decrement an atomic variable used as a reference count.\n *\n * \\return SDL_TRUE if the variable reached zero after decrementing,\n *         SDL_FALSE otherwise\n */\n#ifndef SDL_AtomicDecRef\n#define SDL_AtomicDecRef(a)    (SDL_AtomicAdd(a, -1) == 1)\n#endif\n\n/**\n * Set a pointer to a new value if it is currently an old value.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to a pointer\n * \\param oldval the old pointer value\n * \\param newval the new pointer value\n * \\returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AtomicCAS\n * \\sa SDL_AtomicGetPtr\n * \\sa SDL_AtomicSetPtr\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval);\n\n/**\n * Set a pointer to a value atomically.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to a pointer\n * \\param v the desired pointer value\n * \\returns the previous value of the pointer.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_AtomicCASPtr\n * \\sa SDL_AtomicGetPtr\n */\nextern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v);\n\n/**\n * Get the value of a pointer atomically.\n *\n * ***Note: If you don't know what this function is for, you shouldn't use\n * it!***\n *\n * \\param a a pointer to a pointer\n * \\returns the current value of a pointer.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_AtomicCASPtr\n * \\sa SDL_AtomicSetPtr\n */\nextern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n\n#include \"close_code.h\"\n\n#endif /* SDL_atomic_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_audio.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/* !!! FIXME: several functions in here need Doxygen comments. */\n\n/**\n *  \\file SDL_audio.h\n *\n *  Access to the raw audio mixing buffer for the SDL library.\n */\n\n#ifndef SDL_audio_h_\n#define SDL_audio_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_endian.h\"\n#include \"SDL_mutex.h\"\n#include \"SDL_thread.h\"\n#include \"SDL_rwops.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief Audio format flags.\n *\n *  These are what the 16 bits in SDL_AudioFormat currently mean...\n *  (Unspecified bits are always zero).\n *\n *  \\verbatim\n    ++-----------------------sample is signed if set\n    ||\n    ||       ++-----------sample is bigendian if set\n    ||       ||\n    ||       ||          ++---sample is float if set\n    ||       ||          ||\n    ||       ||          || +---sample bit size---+\n    ||       ||          || |                     |\n    15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00\n    \\endverbatim\n *\n *  There are macros in SDL 2.0 and later to query these bits.\n */\ntypedef Uint16 SDL_AudioFormat;\n\n/**\n *  \\name Audio flags\n */\n/* @{ */\n\n#define SDL_AUDIO_MASK_BITSIZE       (0xFF)\n#define SDL_AUDIO_MASK_DATATYPE      (1<<8)\n#define SDL_AUDIO_MASK_ENDIAN        (1<<12)\n#define SDL_AUDIO_MASK_SIGNED        (1<<15)\n#define SDL_AUDIO_BITSIZE(x)         (x & SDL_AUDIO_MASK_BITSIZE)\n#define SDL_AUDIO_ISFLOAT(x)         (x & SDL_AUDIO_MASK_DATATYPE)\n#define SDL_AUDIO_ISBIGENDIAN(x)     (x & SDL_AUDIO_MASK_ENDIAN)\n#define SDL_AUDIO_ISSIGNED(x)        (x & SDL_AUDIO_MASK_SIGNED)\n#define SDL_AUDIO_ISINT(x)           (!SDL_AUDIO_ISFLOAT(x))\n#define SDL_AUDIO_ISLITTLEENDIAN(x)  (!SDL_AUDIO_ISBIGENDIAN(x))\n#define SDL_AUDIO_ISUNSIGNED(x)      (!SDL_AUDIO_ISSIGNED(x))\n\n/**\n *  \\name Audio format flags\n *\n *  Defaults to LSB byte order.\n */\n/* @{ */\n#define AUDIO_U8        0x0008  /**< Unsigned 8-bit samples */\n#define AUDIO_S8        0x8008  /**< Signed 8-bit samples */\n#define AUDIO_U16LSB    0x0010  /**< Unsigned 16-bit samples */\n#define AUDIO_S16LSB    0x8010  /**< Signed 16-bit samples */\n#define AUDIO_U16MSB    0x1010  /**< As above, but big-endian byte order */\n#define AUDIO_S16MSB    0x9010  /**< As above, but big-endian byte order */\n#define AUDIO_U16       AUDIO_U16LSB\n#define AUDIO_S16       AUDIO_S16LSB\n/* @} */\n\n/**\n *  \\name int32 support\n */\n/* @{ */\n#define AUDIO_S32LSB    0x8020  /**< 32-bit integer samples */\n#define AUDIO_S32MSB    0x9020  /**< As above, but big-endian byte order */\n#define AUDIO_S32       AUDIO_S32LSB\n/* @} */\n\n/**\n *  \\name float32 support\n */\n/* @{ */\n#define AUDIO_F32LSB    0x8120  /**< 32-bit floating point samples */\n#define AUDIO_F32MSB    0x9120  /**< As above, but big-endian byte order */\n#define AUDIO_F32       AUDIO_F32LSB\n/* @} */\n\n/**\n *  \\name Native audio byte ordering\n */\n/* @{ */\n#if SDL_BYTEORDER == SDL_LIL_ENDIAN\n#define AUDIO_U16SYS    AUDIO_U16LSB\n#define AUDIO_S16SYS    AUDIO_S16LSB\n#define AUDIO_S32SYS    AUDIO_S32LSB\n#define AUDIO_F32SYS    AUDIO_F32LSB\n#else\n#define AUDIO_U16SYS    AUDIO_U16MSB\n#define AUDIO_S16SYS    AUDIO_S16MSB\n#define AUDIO_S32SYS    AUDIO_S32MSB\n#define AUDIO_F32SYS    AUDIO_F32MSB\n#endif\n/* @} */\n\n/**\n *  \\name Allow change flags\n *\n *  Which audio format changes are allowed when opening a device.\n */\n/* @{ */\n#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE    0x00000001\n#define SDL_AUDIO_ALLOW_FORMAT_CHANGE       0x00000002\n#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE     0x00000004\n#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE      0x00000008\n#define SDL_AUDIO_ALLOW_ANY_CHANGE          (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE)\n/* @} */\n\n/* @} *//* Audio flags */\n\n/**\n *  This function is called when the audio device needs more data.\n *\n *  \\param userdata An application-specific parameter saved in\n *                  the SDL_AudioSpec structure\n *  \\param stream A pointer to the audio data buffer.\n *  \\param len    The length of that buffer in bytes.\n *\n *  Once the callback returns, the buffer will no longer be valid.\n *  Stereo samples are stored in a LRLRLR ordering.\n *\n *  You can choose to avoid callbacks and use SDL_QueueAudio() instead, if\n *  you like. Just open your audio device with a NULL callback.\n */\ntypedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,\n                                            int len);\n\n/**\n *  The calculated values in this structure are calculated by SDL_OpenAudio().\n *\n *  For multi-channel audio, the default SDL channel mapping is:\n *  2:  FL  FR                          (stereo)\n *  3:  FL  FR LFE                      (2.1 surround)\n *  4:  FL  FR  BL  BR                  (quad)\n *  5:  FL  FR LFE  BL  BR              (4.1 surround)\n *  6:  FL  FR  FC LFE  SL  SR          (5.1 surround - last two can also be BL BR)\n *  7:  FL  FR  FC LFE  BC  SL  SR      (6.1 surround)\n *  8:  FL  FR  FC LFE  BL  BR  SL  SR  (7.1 surround)\n */\ntypedef struct SDL_AudioSpec\n{\n    int freq;                   /**< DSP frequency -- samples per second */\n    SDL_AudioFormat format;     /**< Audio data format */\n    Uint8 channels;             /**< Number of channels: 1 mono, 2 stereo */\n    Uint8 silence;              /**< Audio buffer silence value (calculated) */\n    Uint16 samples;             /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */\n    Uint16 padding;             /**< Necessary for some compile environments */\n    Uint32 size;                /**< Audio buffer size in bytes (calculated) */\n    SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */\n    void *userdata;             /**< Userdata passed to callback (ignored for NULL callbacks). */\n} SDL_AudioSpec;\n\n\nstruct SDL_AudioCVT;\ntypedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt,\n                                          SDL_AudioFormat format);\n\n/**\n *  \\brief Upper limit of filters in SDL_AudioCVT\n *\n *  The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is\n *  currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers,\n *  one of which is the terminating NULL pointer.\n */\n#define SDL_AUDIOCVT_MAX_FILTERS 9\n\n/**\n *  \\struct SDL_AudioCVT\n *  \\brief A structure to hold a set of audio conversion filters and buffers.\n *\n *  Note that various parts of the conversion pipeline can take advantage\n *  of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require\n *  you to pass it aligned data, but can possibly run much faster if you\n *  set both its (buf) field to a pointer that is aligned to 16 bytes, and its\n *  (len) field to something that's a multiple of 16, if possible.\n */\n#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__)\n/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't\n   pad it out to 88 bytes to guarantee ABI compatibility between compilers.\n   This is not a concern on CHERI architectures, where pointers must be stored\n   at aligned locations otherwise they will become invalid, and thus structs\n   containing pointers cannot be packed without giving a warning or error.\n   vvv\n   The next time we rev the ABI, make sure to size the ints and add padding.\n*/\n#define SDL_AUDIOCVT_PACKED __attribute__((packed))\n#else\n#define SDL_AUDIOCVT_PACKED\n#endif\n/* */\ntypedef struct SDL_AudioCVT\n{\n    int needed;                 /**< Set to 1 if conversion possible */\n    SDL_AudioFormat src_format; /**< Source audio format */\n    SDL_AudioFormat dst_format; /**< Target audio format */\n    double rate_incr;           /**< Rate conversion increment */\n    Uint8 *buf;                 /**< Buffer to hold entire audio data */\n    int len;                    /**< Length of original audio buffer */\n    int len_cvt;                /**< Length of converted audio buffer */\n    int len_mult;               /**< buffer must be len*len_mult big */\n    double len_ratio;           /**< Given len, final size is len*len_ratio */\n    SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */\n    int filter_index;           /**< Current audio conversion function */\n} SDL_AUDIOCVT_PACKED SDL_AudioCVT;\n\n\n/* Function prototypes */\n\n/**\n *  \\name Driver discovery functions\n *\n *  These functions return the list of built in audio drivers, in the\n *  order that they are normally initialized by default.\n */\n/* @{ */\n\n/**\n * Use this function to get the number of built-in audio drivers.\n *\n * This function returns a hardcoded number. This never returns a negative\n * value; if there are no drivers compiled into this build of SDL, this\n * function returns zero. The presence of a driver in this list does not mean\n * it will function, it just means SDL is capable of interacting with that\n * interface. For example, a build of SDL might have esound support, but if\n * there's no esound server available, SDL's esound driver would fail if used.\n *\n * By default, SDL tries all drivers, in its preferred order, until one is\n * found to be usable.\n *\n * \\returns the number of built-in audio drivers.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAudioDriver\n */\nextern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void);\n\n/**\n * Use this function to get the name of a built in audio driver.\n *\n * The list of audio drivers is given in the order that they are normally\n * initialized by default; the drivers that seem more reasonable to choose\n * first (as far as the SDL developers believe) are earlier in the list.\n *\n * The names of drivers are all simple, low-ASCII identifiers, like \"alsa\",\n * \"coreaudio\" or \"xaudio2\". These never have Unicode characters, and are not\n * meant to be proper names.\n *\n * \\param index the index of the audio driver; the value ranges from 0 to\n *              SDL_GetNumAudioDrivers() - 1\n * \\returns the name of the audio driver at the requested index, or NULL if an\n *          invalid index was specified.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumAudioDrivers\n */\nextern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);\n/* @} */\n\n/**\n *  \\name Initialization and cleanup\n *\n *  \\internal These functions are used internally, and should not be used unless\n *            you have a specific need to specify the audio driver you want to\n *            use.  You should normally use SDL_Init() or SDL_InitSubSystem().\n */\n/* @{ */\n\n/**\n * Use this function to initialize a particular audio driver.\n *\n * This function is used internally, and should not be used unless you have a\n * specific need to designate the audio driver you want to use. You should\n * normally use SDL_Init() or SDL_InitSubSystem().\n *\n * \\param driver_name the name of the desired audio driver\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AudioQuit\n */\nextern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name);\n\n/**\n * Use this function to shut down audio if you initialized it with\n * SDL_AudioInit().\n *\n * This function is used internally, and should not be used unless you have a\n * specific need to specify the audio driver you want to use. You should\n * normally use SDL_Quit() or SDL_QuitSubSystem().\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AudioInit\n */\nextern DECLSPEC void SDLCALL SDL_AudioQuit(void);\n/* @} */\n\n/**\n * Get the name of the current audio driver.\n *\n * The returned string points to internal static memory and thus never becomes\n * invalid, even if you quit the audio subsystem and initialize a new driver\n * (although such a case would return a different static string from another\n * call to this function, of course). As such, you should not modify or free\n * the returned string.\n *\n * \\returns the name of the current audio driver or NULL if no driver has been\n *          initialized.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AudioInit\n */\nextern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);\n\n/**\n * This function is a legacy means of opening the audio device.\n *\n * This function remains for compatibility with SDL 1.2, but also because it's\n * slightly easier to use than the new functions in SDL 2.0. The new, more\n * powerful, and preferred way to do this is SDL_OpenAudioDevice().\n *\n * This function is roughly equivalent to:\n *\n * ```c\n * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);\n * ```\n *\n * With two notable exceptions:\n *\n * - If `obtained` is NULL, we use `desired` (and allow no changes), which\n *   means desired will be modified to have the correct values for silence,\n *   etc, and SDL will convert any differences between your app's specific\n *   request and the hardware behind the scenes.\n * - The return value is always success or failure, and not a device ID, which\n *   means you can only have one device open at a time with this function.\n *\n * \\param desired an SDL_AudioSpec structure representing the desired output\n *                format. Please refer to the SDL_OpenAudioDevice\n *                documentation for details on how to prepare this structure.\n * \\param obtained an SDL_AudioSpec structure filled in with the actual\n *                 parameters, or NULL.\n * \\returns 0 if successful, placing the actual hardware parameters in the\n *          structure pointed to by `obtained`.\n *\n *          If `obtained` is NULL, the audio data passed to the callback\n *          function will be guaranteed to be in the requested format, and\n *          will be automatically converted to the actual hardware audio\n *          format if necessary. If `obtained` is NULL, `desired` will have\n *          fields modified.\n *\n *          This function returns a negative error code on failure to open the\n *          audio device or failure to set up the audio thread; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CloseAudio\n * \\sa SDL_LockAudio\n * \\sa SDL_PauseAudio\n * \\sa SDL_UnlockAudio\n */\nextern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,\n                                          SDL_AudioSpec * obtained);\n\n/**\n *  SDL Audio Device IDs.\n *\n *  A successful call to SDL_OpenAudio() is always device id 1, and legacy\n *  SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls\n *  always returns devices >= 2 on success. The legacy calls are good both\n *  for backwards compatibility and when you don't care about multiple,\n *  specific, or capture devices.\n */\ntypedef Uint32 SDL_AudioDeviceID;\n\n/**\n * Get the number of built-in audio devices.\n *\n * This function is only valid after successfully initializing the audio\n * subsystem.\n *\n * Note that audio capture support is not implemented as of SDL 2.0.4, so the\n * `iscapture` parameter is for future expansion and should always be zero for\n * now.\n *\n * This function will return -1 if an explicit list of devices can't be\n * determined. Returning -1 is not an error. For example, if SDL is set up to\n * talk to a remote audio server, it can't list every one available on the\n * Internet, but it will still allow a specific host to be specified in\n * SDL_OpenAudioDevice().\n *\n * In many common cases, when this function returns a value <= 0, it can still\n * successfully open the default device (NULL for first argument of\n * SDL_OpenAudioDevice()).\n *\n * This function may trigger a complete redetect of available hardware. It\n * should not be called for each iteration of a loop, but rather once at the\n * start of a loop:\n *\n * ```c\n * // Don't do this:\n * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++)\n *\n * // do this instead:\n * const int count = SDL_GetNumAudioDevices(0);\n * for (int i = 0; i < count; ++i) { do_something_here(); }\n * ```\n *\n * \\param iscapture zero to request playback devices, non-zero to request\n *                  recording devices\n * \\returns the number of available devices exposed by the current driver or\n *          -1 if an explicit list of devices can't be determined. A return\n *          value of -1 does not necessarily mean an error condition.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAudioDeviceName\n * \\sa SDL_OpenAudioDevice\n */\nextern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture);\n\n/**\n * Get the human-readable name of a specific audio device.\n *\n * This function is only valid after successfully initializing the audio\n * subsystem. The values returned by this function reflect the latest call to\n * SDL_GetNumAudioDevices(); re-call that function to redetect available\n * hardware.\n *\n * The string returned by this function is UTF-8 encoded, read-only, and\n * managed internally. You are not to free it. If you need to keep the string\n * for any length of time, you should make your own copy of it, as it will be\n * invalid next time any of several other SDL functions are called.\n *\n * \\param index the index of the audio device; valid values range from 0 to\n *              SDL_GetNumAudioDevices() - 1\n * \\param iscapture non-zero to query the list of recording devices, zero to\n *                  query the list of output devices.\n * \\returns the name of the audio device at the requested index, or NULL on\n *          error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumAudioDevices\n * \\sa SDL_GetDefaultAudioInfo\n */\nextern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index,\n                                                           int iscapture);\n\n/**\n * Get the preferred audio format of a specific audio device.\n *\n * This function is only valid after a successfully initializing the audio\n * subsystem. The values returned by this function reflect the latest call to\n * SDL_GetNumAudioDevices(); re-call that function to redetect available\n * hardware.\n *\n * `spec` will be filled with the sample rate, sample format, and channel\n * count.\n *\n * \\param index the index of the audio device; valid values range from 0 to\n *              SDL_GetNumAudioDevices() - 1\n * \\param iscapture non-zero to query the list of recording devices, zero to\n *                  query the list of output devices.\n * \\param spec The SDL_AudioSpec to be initialized by this function.\n * \\returns 0 on success, nonzero on error\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_GetNumAudioDevices\n * \\sa SDL_GetDefaultAudioInfo\n */\nextern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index,\n                                                   int iscapture,\n                                                   SDL_AudioSpec *spec);\n\n\n/**\n * Get the name and preferred format of the default audio device.\n *\n * Some (but not all!) platforms have an isolated mechanism to get information\n * about the \"default\" device. This can actually be a completely different\n * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can\n * even be a network address! (This is discussed in SDL_OpenAudioDevice().)\n *\n * As a result, this call is not guaranteed to be performant, as it can query\n * the sound server directly every time, unlike the other query functions. You\n * should call this function sparingly!\n *\n * `spec` will be filled with the sample rate, sample format, and channel\n * count, if a default device exists on the system. If `name` is provided,\n * will be filled with either a dynamically-allocated UTF-8 string or NULL.\n *\n * \\param name A pointer to be filled with the name of the default device (can\n *             be NULL). Please call SDL_free() when you are done with this\n *             pointer!\n * \\param spec The SDL_AudioSpec to be initialized by this function.\n * \\param iscapture non-zero to query the default recording device, zero to\n *                  query the default output device.\n * \\returns 0 on success, nonzero on error\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GetAudioDeviceName\n * \\sa SDL_GetAudioDeviceSpec\n * \\sa SDL_OpenAudioDevice\n */\nextern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,\n                                                    SDL_AudioSpec *spec,\n                                                    int iscapture);\n\n\n/**\n * Open a specific audio device.\n *\n * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such,\n * this function will never return a 1 so as not to conflict with the legacy\n * function.\n *\n * Please note that SDL 2.0 before 2.0.5 did not support recording; as such,\n * this function would fail if `iscapture` was not zero. Starting with SDL\n * 2.0.5, recording is implemented and this value can be non-zero.\n *\n * Passing in a `device` name of NULL requests the most reasonable default\n * (and is equivalent to what SDL_OpenAudio() does to choose a device). The\n * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but\n * some drivers allow arbitrary and driver-specific strings, such as a\n * hostname/IP address for a remote audio server, or a filename in the\n * diskaudio driver.\n *\n * An opened audio device starts out paused, and should be enabled for playing\n * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio\n * callback function to be called. Since the audio driver may modify the\n * requested size of the audio buffer, you should allocate any local mixing\n * buffers after you open the audio device.\n *\n * The audio callback runs in a separate thread in most cases; you can prevent\n * race conditions between your callback and other threads without fully\n * pausing playback with SDL_LockAudioDevice(). For more information about the\n * callback, see SDL_AudioSpec.\n *\n * Managing the audio spec via 'desired' and 'obtained':\n *\n * When filling in the desired audio spec structure:\n *\n * - `desired->freq` should be the frequency in sample-frames-per-second (Hz).\n * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc).\n * - `desired->samples` is the desired size of the audio buffer, in _sample\n *   frames_ (with stereo output, two samples--left and right--would make a\n *   single sample frame). This number should be a power of two, and may be\n *   adjusted by the audio driver to a value more suitable for the hardware.\n *   Good values seem to range between 512 and 8096 inclusive, depending on\n *   the application and CPU speed. Smaller values reduce latency, but can\n *   lead to underflow if the application is doing heavy processing and cannot\n *   fill the audio buffer in time. Note that the number of sample frames is\n *   directly related to time by the following formula: `ms =\n *   (sampleframes*1000)/freq`\n * - `desired->size` is the size in _bytes_ of the audio buffer, and is\n *   calculated by SDL_OpenAudioDevice(). You don't initialize this.\n * - `desired->silence` is the value used to set the buffer to silence, and is\n *   calculated by SDL_OpenAudioDevice(). You don't initialize this.\n * - `desired->callback` should be set to a function that will be called when\n *   the audio device is ready for more data. It is passed a pointer to the\n *   audio buffer, and the length in bytes of the audio buffer. This function\n *   usually runs in a separate thread, and so you should protect data\n *   structures that it accesses by calling SDL_LockAudioDevice() and\n *   SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL\n *   pointer here, and call SDL_QueueAudio() with some frequency, to queue\n *   more audio samples to be played (or for capture devices, call\n *   SDL_DequeueAudio() with some frequency, to obtain audio samples).\n * - `desired->userdata` is passed as the first parameter to your callback\n *   function. If you passed a NULL callback, this value is ignored.\n *\n * `allowed_changes` can have the following flags OR'd together:\n *\n * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE`\n * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE`\n * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE`\n * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE`\n * - `SDL_AUDIO_ALLOW_ANY_CHANGE`\n *\n * These flags specify how SDL should behave when a device cannot offer a\n * specific feature. If the application requests a feature that the hardware\n * doesn't offer, SDL will always try to get the closest equivalent.\n *\n * For example, if you ask for float32 audio format, but the sound card only\n * supports int16, SDL will set the hardware to int16. If you had set\n * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained`\n * structure. If that flag was *not* set, SDL will prepare to convert your\n * callback's float32 audio to int16 before feeding it to the hardware and\n * will keep the originally requested format in the `obtained` structure.\n *\n * The resulting audio specs, varying depending on hardware and on what\n * changes were allowed, will then be written back to `obtained`.\n *\n * If your application can only handle one specific data format, pass a zero\n * for `allowed_changes` and let SDL transparently handle any differences.\n *\n * \\param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a\n *               driver-specific name as appropriate. NULL requests the most\n *               reasonable default device.\n * \\param iscapture non-zero to specify a device should be opened for\n *                  recording, not playback\n * \\param desired an SDL_AudioSpec structure representing the desired output\n *                format; see SDL_OpenAudio() for more information\n * \\param obtained an SDL_AudioSpec structure filled in with the actual output\n *                 format; see SDL_OpenAudio() for more information\n * \\param allowed_changes 0, or one or more flags OR'd together\n * \\returns a valid device ID that is > 0 on success or 0 on failure; call\n *          SDL_GetError() for more information.\n *\n *          For compatibility with SDL 1.2, this will never return 1, since\n *          SDL reserves that ID for the legacy SDL_OpenAudio() function.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CloseAudioDevice\n * \\sa SDL_GetAudioDeviceName\n * \\sa SDL_LockAudioDevice\n * \\sa SDL_OpenAudio\n * \\sa SDL_PauseAudioDevice\n * \\sa SDL_UnlockAudioDevice\n */\nextern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice(\n                                                  const char *device,\n                                                  int iscapture,\n                                                  const SDL_AudioSpec *desired,\n                                                  SDL_AudioSpec *obtained,\n                                                  int allowed_changes);\n\n\n\n/**\n *  \\name Audio state\n *\n *  Get the current audio state.\n */\n/* @{ */\ntypedef enum\n{\n    SDL_AUDIO_STOPPED = 0,\n    SDL_AUDIO_PLAYING,\n    SDL_AUDIO_PAUSED\n} SDL_AudioStatus;\n\n/**\n * This function is a legacy means of querying the audio device.\n *\n * New programs might want to use SDL_GetAudioDeviceStatus() instead. This\n * function is equivalent to calling...\n *\n * ```c\n * SDL_GetAudioDeviceStatus(1);\n * ```\n *\n * ...and is only useful if you used the legacy SDL_OpenAudio() function.\n *\n * \\returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio().\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAudioDeviceStatus\n */\nextern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);\n\n/**\n * Use this function to get the current audio state of an audio device.\n *\n * \\param dev the ID of an audio device previously opened with\n *            SDL_OpenAudioDevice()\n * \\returns the SDL_AudioStatus of the specified audio device.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PauseAudioDevice\n */\nextern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);\n/* @} *//* Audio State */\n\n/**\n *  \\name Pause audio functions\n *\n *  These functions pause and unpause the audio callback processing.\n *  They should be called with a parameter of 0 after opening the audio\n *  device to start playing sound.  This is so you can safely initialize\n *  data for your callback function after opening the audio device.\n *  Silence will be written to the audio device during the pause.\n */\n/* @{ */\n\n/**\n * This function is a legacy means of pausing the audio device.\n *\n * New programs might want to use SDL_PauseAudioDevice() instead. This\n * function is equivalent to calling...\n *\n * ```c\n * SDL_PauseAudioDevice(1, pause_on);\n * ```\n *\n * ...and is only useful if you used the legacy SDL_OpenAudio() function.\n *\n * \\param pause_on non-zero to pause, 0 to unpause\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetAudioStatus\n * \\sa SDL_PauseAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);\n\n/**\n * Use this function to pause and unpause audio playback on a specified\n * device.\n *\n * This function pauses and unpauses the audio callback processing for a given\n * device. Newly-opened audio devices start in the paused state, so you must\n * call this function with **pause_on**=0 after opening the specified audio\n * device to start playing sound. This allows you to safely initialize data\n * for your callback function after opening the audio device. Silence will be\n * written to the audio device while paused, and the audio callback is\n * guaranteed to not be called. Pausing one device does not prevent other\n * unpaused devices from running their callbacks.\n *\n * Pausing state does not stack; even if you pause a device several times, a\n * single unpause will start the device playing again, and vice versa. This is\n * different from how SDL_LockAudioDevice() works.\n *\n * If you just need to protect a few variables from race conditions vs your\n * callback, you shouldn't pause the audio device, as it will lead to dropouts\n * in the audio playback. Instead, you should use SDL_LockAudioDevice().\n *\n * \\param dev a device opened by SDL_OpenAudioDevice()\n * \\param pause_on non-zero to pause, 0 to unpause\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,\n                                                  int pause_on);\n/* @} *//* Pause audio functions */\n\n/**\n * Load the audio data of a WAVE file into memory.\n *\n * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to\n * be valid pointers. The entire data portion of the file is then loaded into\n * memory and decoded if necessary.\n *\n * If `freesrc` is non-zero, the data source gets automatically closed and\n * freed before the function returns.\n *\n * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and\n * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and\n * A-law and mu-law (8 bits). Other formats are currently unsupported and\n * cause an error.\n *\n * If this function succeeds, the pointer returned by it is equal to `spec`\n * and the pointer to the audio data allocated by the function is written to\n * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec\n * members `freq`, `channels`, and `format` are set to the values of the audio\n * data in the buffer. The `samples` member is set to a sane default and all\n * others are set to zero.\n *\n * It's necessary to use SDL_FreeWAV() to free the audio data returned in\n * `audio_buf` when it is no longer used.\n *\n * Because of the underspecification of the .WAV format, there are many\n * problematic files in the wild that cause issues with strict decoders. To\n * provide compatibility with these files, this decoder is lenient in regards\n * to the truncation of the file, the fact chunk, and the size of the RIFF\n * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`,\n * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to\n * tune the behavior of the loading process.\n *\n * Any file that is invalid (due to truncation, corruption, or wrong values in\n * the headers), too big, or unsupported causes an error. Additionally, any\n * critical I/O error from the data source will terminate the loading process\n * with an error. The function returns NULL on error and in all cases (with\n * the exception of `src` being NULL), an appropriate error message will be\n * set.\n *\n * It is required that the data source supports seeking.\n *\n * Example:\n *\n * ```c\n * SDL_LoadWAV_RW(SDL_RWFromFile(\"sample.wav\", \"rb\"), 1, &spec, &buf, &len);\n * ```\n *\n * Note that the SDL_LoadWAV macro does this same thing for you, but in a less\n * messy way:\n *\n * ```c\n * SDL_LoadWAV(\"sample.wav\", &spec, &buf, &len);\n * ```\n *\n * \\param src The data source for the WAVE data\n * \\param freesrc If non-zero, SDL will _always_ free the data source\n * \\param spec An SDL_AudioSpec that will be filled in with the wave file's\n *             format details\n * \\param audio_buf A pointer filled with the audio data, allocated by the\n *                  function.\n * \\param audio_len A pointer filled with the length of the audio data buffer\n *                  in bytes\n * \\returns This function, if successfully called, returns `spec`, which will\n *          be filled with the audio data format of the wave source data.\n *          `audio_buf` will be filled with a pointer to an allocated buffer\n *          containing the audio data, and `audio_len` is filled with the\n *          length of that audio buffer in bytes.\n *\n *          This function returns NULL if the .WAV file cannot be opened, uses\n *          an unknown data format, or is corrupt; call SDL_GetError() for\n *          more information.\n *\n *          When the application is done with the data returned in\n *          `audio_buf`, it should call SDL_FreeWAV() to dispose of it.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeWAV\n * \\sa SDL_LoadWAV\n */\nextern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src,\n                                                      int freesrc,\n                                                      SDL_AudioSpec * spec,\n                                                      Uint8 ** audio_buf,\n                                                      Uint32 * audio_len);\n\n/**\n *  Loads a WAV from a file.\n *  Compatibility convenience function.\n */\n#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \\\n    SDL_LoadWAV_RW(SDL_RWFromFile(file, \"rb\"),1, spec,audio_buf,audio_len)\n\n/**\n * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW().\n *\n * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW()\n * its data can eventually be freed with SDL_FreeWAV(). It is safe to call\n * this function with a NULL pointer.\n *\n * \\param audio_buf a pointer to the buffer created by SDL_LoadWAV() or\n *                  SDL_LoadWAV_RW()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadWAV\n * \\sa SDL_LoadWAV_RW\n */\nextern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf);\n\n/**\n * Initialize an SDL_AudioCVT structure for conversion.\n *\n * Before an SDL_AudioCVT structure can be used to convert audio data it must\n * be initialized with source and destination information.\n *\n * This function will zero out every field of the SDL_AudioCVT, so it must be\n * called before the application fills in the final buffer information.\n *\n * Once this function has returned successfully, and reported that a\n * conversion is necessary, the application fills in the rest of the fields in\n * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate,\n * and then can call SDL_ConvertAudio() to complete the conversion.\n *\n * \\param cvt an SDL_AudioCVT structure filled in with audio conversion\n *            information\n * \\param src_format the source format of the audio data; for more info see\n *                   SDL_AudioFormat\n * \\param src_channels the number of channels in the source\n * \\param src_rate the frequency (sample-frames-per-second) of the source\n * \\param dst_format the destination format of the audio data; for more info\n *                   see SDL_AudioFormat\n * \\param dst_channels the number of channels in the destination\n * \\param dst_rate the frequency (sample-frames-per-second) of the destination\n * \\returns 1 if the audio filter is prepared, 0 if no conversion is needed,\n *          or a negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ConvertAudio\n */\nextern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt,\n                                              SDL_AudioFormat src_format,\n                                              Uint8 src_channels,\n                                              int src_rate,\n                                              SDL_AudioFormat dst_format,\n                                              Uint8 dst_channels,\n                                              int dst_rate);\n\n/**\n * Convert audio data to a desired audio format.\n *\n * This function does the actual audio data conversion, after the application\n * has called SDL_BuildAudioCVT() to prepare the conversion information and\n * then filled in the buffer details.\n *\n * Once the application has initialized the `cvt` structure using\n * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio\n * data in the source format, this function will convert the buffer, in-place,\n * to the desired format.\n *\n * The data conversion may go through several passes; any given pass may\n * possibly temporarily increase the size of the data. For example, SDL might\n * expand 16-bit data to 32 bits before resampling to a lower frequency,\n * shrinking the data size after having grown it briefly. Since the supplied\n * buffer will be both the source and destination, converting as necessary\n * in-place, the application must allocate a buffer that will fully contain\n * the data during its largest conversion pass. After SDL_BuildAudioCVT()\n * returns, the application should set the `cvt->len` field to the size, in\n * bytes, of the source data, and allocate a buffer that is `cvt->len *\n * cvt->len_mult` bytes long for the `buf` field.\n *\n * The source data should be copied into this buffer before the call to\n * SDL_ConvertAudio(). Upon successful return, this buffer will contain the\n * converted audio, and `cvt->len_cvt` will be the size of the converted data,\n * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once\n * this function returns.\n *\n * \\param cvt an SDL_AudioCVT structure that was previously set up by\n *            SDL_BuildAudioCVT().\n * \\returns 0 if the conversion was completed successfully or a negative error\n *          code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BuildAudioCVT\n */\nextern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt);\n\n/* SDL_AudioStream is a new audio conversion interface.\n   The benefits vs SDL_AudioCVT:\n    - it can handle resampling data in chunks without generating\n      artifacts, when it doesn't have the complete buffer available.\n    - it can handle incoming data in any variable size.\n    - You push data as you have it, and pull it when you need it\n */\n/* this is opaque to the outside world. */\nstruct _SDL_AudioStream;\ntypedef struct _SDL_AudioStream SDL_AudioStream;\n\n/**\n * Create a new audio stream.\n *\n * \\param src_format The format of the source audio\n * \\param src_channels The number of channels of the source audio\n * \\param src_rate The sampling rate of the source audio\n * \\param dst_format The format of the desired audio output\n * \\param dst_channels The number of channels of the desired audio output\n * \\param dst_rate The sampling rate of the desired audio output\n * \\returns 0 on success, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_AudioStreamClear\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format,\n                                           const Uint8 src_channels,\n                                           const int src_rate,\n                                           const SDL_AudioFormat dst_format,\n                                           const Uint8 dst_channels,\n                                           const int dst_rate);\n\n/**\n * Add data to be converted/resampled to the stream.\n *\n * \\param stream The stream the audio data is being added to\n * \\param buf A pointer to the audio data to add\n * \\param len The number of bytes to write to the stream\n * \\returns 0 on success, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_AudioStreamClear\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len);\n\n/**\n * Get converted/resampled data from the stream\n *\n * \\param stream The stream the audio is being requested from\n * \\param buf A buffer to fill with audio data\n * \\param len The maximum number of bytes to fill\n * \\returns the number of bytes read from the stream, or -1 on error\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_AudioStreamClear\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len);\n\n/**\n * Get the number of converted/resampled bytes available.\n *\n * The stream may be buffering data behind the scenes until it has enough to\n * resample correctly, so this number might be lower than what you expect, or\n * even be zero. Add more data or flush the stream if you need the data now.\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_AudioStreamClear\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream);\n\n/**\n * Tell the stream that you're done sending data, and anything being buffered\n * should be converted/resampled and made available immediately.\n *\n * It is legal to add more data to a stream after flushing, but there will be\n * audio gaps in the output. Generally this is intended to signal the end of\n * input, so the complete output becomes available.\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamClear\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream);\n\n/**\n * Clear any pending data in the stream without converting it\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_FreeAudioStream\n */\nextern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream);\n\n/**\n * Free an audio stream\n *\n * \\since This function is available since SDL 2.0.7.\n *\n * \\sa SDL_NewAudioStream\n * \\sa SDL_AudioStreamPut\n * \\sa SDL_AudioStreamGet\n * \\sa SDL_AudioStreamAvailable\n * \\sa SDL_AudioStreamFlush\n * \\sa SDL_AudioStreamClear\n */\nextern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream);\n\n#define SDL_MIX_MAXVOLUME 128\n\n/**\n * This function is a legacy means of mixing audio.\n *\n * This function is equivalent to calling...\n *\n * ```c\n * SDL_MixAudioFormat(dst, src, format, len, volume);\n * ```\n *\n * ...where `format` is the obtained format of the audio device from the\n * legacy SDL_OpenAudio() function.\n *\n * \\param dst the destination for the mixed audio\n * \\param src the source audio buffer to be mixed\n * \\param len the length of the audio buffer in bytes\n * \\param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME\n *               for full audio volume\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MixAudioFormat\n */\nextern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,\n                                          Uint32 len, int volume);\n\n/**\n * Mix audio data in a specified format.\n *\n * This takes an audio buffer `src` of `len` bytes of `format` data and mixes\n * it into `dst`, performing addition, volume adjustment, and overflow\n * clipping. The buffer pointed to by `dst` must also be `len` bytes of\n * `format` data.\n *\n * This is provided for convenience -- you can mix your own audio data.\n *\n * Do not use this function for mixing together more than two streams of\n * sample data. The output from repeated application of this function may be\n * distorted by clipping, because there is no accumulator with greater range\n * than the input (not to mention this being an inefficient way of doing it).\n *\n * It is a common misconception that this function is required to write audio\n * data to an output stream in an audio callback. While you can do that,\n * SDL_MixAudioFormat() is really only needed when you're mixing a single\n * audio stream with a volume adjustment.\n *\n * \\param dst the destination for the mixed audio\n * \\param src the source audio buffer to be mixed\n * \\param format the SDL_AudioFormat structure representing the desired audio\n *               format\n * \\param len the length of the audio buffer in bytes\n * \\param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME\n *               for full audio volume\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst,\n                                                const Uint8 * src,\n                                                SDL_AudioFormat format,\n                                                Uint32 len, int volume);\n\n/**\n * Queue more audio on non-callback devices.\n *\n * If you are looking to retrieve queued audio from a non-callback capture\n * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return\n * -1 to signify an error if you use it with capture devices.\n *\n * SDL offers two ways to feed audio to the device: you can either supply a\n * callback that SDL triggers with some frequency to obtain more audio (pull\n * method), or you can supply no callback, and then SDL will expect you to\n * supply data at regular intervals (push method) with this function.\n *\n * There are no limits on the amount of data you can queue, short of\n * exhaustion of address space. Queued data will drain to the device as\n * necessary without further intervention from you. If the device needs audio\n * but there is not enough queued, it will play silence to make up the\n * difference. This means you will have skips in your audio playback if you\n * aren't routinely queueing sufficient data.\n *\n * This function copies the supplied data, so you are safe to free it when the\n * function returns. This function is thread-safe, but queueing to the same\n * device from two threads at once does not promise which buffer will be\n * queued first.\n *\n * You may not queue audio on a device that is using an application-supplied\n * callback; doing so returns an error. You have to use the audio callback or\n * queue audio with this function, but not both.\n *\n * You should not call SDL_LockAudio() on the device before queueing; SDL\n * handles locking internally for this function.\n *\n * Note that SDL2 does not support planar audio. You will need to resample\n * from planar audio formats into a non-planar one (see SDL_AudioFormat)\n * before queuing audio.\n *\n * \\param dev the device ID to which we will queue audio\n * \\param data the data to queue to the device for later playback\n * \\param len the number of bytes (not samples!) to which `data` points\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_ClearQueuedAudio\n * \\sa SDL_GetQueuedAudioSize\n */\nextern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len);\n\n/**\n * Dequeue more audio on non-callback devices.\n *\n * If you are looking to queue audio for output on a non-callback playback\n * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always\n * return 0 if you use it with playback devices.\n *\n * SDL offers two ways to retrieve audio from a capture device: you can either\n * supply a callback that SDL triggers with some frequency as the device\n * records more audio data, (push method), or you can supply no callback, and\n * then SDL will expect you to retrieve data at regular intervals (pull\n * method) with this function.\n *\n * There are no limits on the amount of data you can queue, short of\n * exhaustion of address space. Data from the device will keep queuing as\n * necessary without further intervention from you. This means you will\n * eventually run out of memory if you aren't routinely dequeueing data.\n *\n * Capture devices will not queue data when paused; if you are expecting to\n * not need captured audio for some length of time, use SDL_PauseAudioDevice()\n * to stop the capture device from queueing more data. This can be useful\n * during, say, level loading times. When unpaused, capture devices will start\n * queueing data from that point, having flushed any capturable data available\n * while paused.\n *\n * This function is thread-safe, but dequeueing from the same device from two\n * threads at once does not promise which thread will dequeue data first.\n *\n * You may not dequeue audio from a device that is using an\n * application-supplied callback; doing so returns an error. You have to use\n * the audio callback, or dequeue audio with this function, but not both.\n *\n * You should not call SDL_LockAudio() on the device before dequeueing; SDL\n * handles locking internally for this function.\n *\n * \\param dev the device ID from which we will dequeue audio\n * \\param data a pointer into where audio data should be copied\n * \\param len the number of bytes (not samples!) to which (data) points\n * \\returns the number of bytes dequeued, which could be less than requested;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_ClearQueuedAudio\n * \\sa SDL_GetQueuedAudioSize\n */\nextern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);\n\n/**\n * Get the number of bytes of still-queued audio.\n *\n * For playback devices: this is the number of bytes that have been queued for\n * playback with SDL_QueueAudio(), but have not yet been sent to the hardware.\n *\n * Once we've sent it to the hardware, this function can not decide the exact\n * byte boundary of what has been played. It's possible that we just gave the\n * hardware several kilobytes right before you called this function, but it\n * hasn't played any of it yet, or maybe half of it, etc.\n *\n * For capture devices, this is the number of bytes that have been captured by\n * the device and are waiting for you to dequeue. This number may grow at any\n * time, so this only informs of the lower-bound of available data.\n *\n * You may not queue or dequeue audio on a device that is using an\n * application-supplied callback; calling this function on such a device\n * always returns 0. You have to use the audio callback or queue audio, but\n * not both.\n *\n * You should not call SDL_LockAudio() on the device before querying; SDL\n * handles locking internally for this function.\n *\n * \\param dev the device ID of which we will query queued audio size\n * \\returns the number of bytes (not samples!) of queued audio.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_ClearQueuedAudio\n * \\sa SDL_QueueAudio\n * \\sa SDL_DequeueAudio\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev);\n\n/**\n * Drop any queued audio data waiting to be sent to the hardware.\n *\n * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For\n * output devices, the hardware will start playing silence if more audio isn't\n * queued. For capture devices, the hardware will start filling the empty\n * queue with new data if the capture device isn't paused.\n *\n * This will not prevent playback of queued audio that's already been sent to\n * the hardware, as we can not undo that, so expect there to be some fraction\n * of a second of audio that might still be heard. This can be useful if you\n * want to, say, drop any pending music or any unprocessed microphone input\n * during a level change in your game.\n *\n * You may not queue or dequeue audio on a device that is using an\n * application-supplied callback; calling this function on such a device\n * always returns 0. You have to use the audio callback or queue audio, but\n * not both.\n *\n * You should not call SDL_LockAudio() on the device before clearing the\n * queue; SDL handles locking internally for this function.\n *\n * This function always succeeds and thus returns void.\n *\n * \\param dev the device ID of which to clear the audio queue\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_GetQueuedAudioSize\n * \\sa SDL_QueueAudio\n * \\sa SDL_DequeueAudio\n */\nextern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);\n\n\n/**\n *  \\name Audio lock functions\n *\n *  The lock manipulated by these functions protects the callback function.\n *  During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that\n *  the callback function is not running.  Do not call these from the callback\n *  function or you will cause deadlock.\n */\n/* @{ */\n\n/**\n * This function is a legacy means of locking the audio device.\n *\n * New programs might want to use SDL_LockAudioDevice() instead. This function\n * is equivalent to calling...\n *\n * ```c\n * SDL_LockAudioDevice(1);\n * ```\n *\n * ...and is only useful if you used the legacy SDL_OpenAudio() function.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockAudioDevice\n * \\sa SDL_UnlockAudio\n * \\sa SDL_UnlockAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_LockAudio(void);\n\n/**\n * Use this function to lock out the audio callback function for a specified\n * device.\n *\n * The lock manipulated by these functions protects the audio callback\n * function specified in SDL_OpenAudioDevice(). During a\n * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed\n * that the callback function for that device is not running, even if the\n * device is not paused. While a device is locked, any other unpaused,\n * unlocked devices may still run their callbacks.\n *\n * Calling this function from inside your audio callback is unnecessary. SDL\n * obtains this lock before calling your function, and releases it when the\n * function returns.\n *\n * You should not hold the lock longer than absolutely necessary. If you hold\n * it too long, you'll experience dropouts in your audio playback. Ideally,\n * your application locks the device, sets a few variables and unlocks again.\n * Do not do heavy work while holding the lock for a device.\n *\n * It is safe to lock the audio device multiple times, as long as you unlock\n * it an equivalent number of times. The callback will not run until the\n * device has been unlocked completely in this way. If your application fails\n * to unlock the device appropriately, your callback will never run, you might\n * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably\n * deadlock.\n *\n * Internally, the audio device lock is a mutex; if you lock from two threads\n * at once, not only will you block the audio callback, you'll block the other\n * thread.\n *\n * \\param dev the ID of the device to be locked\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_UnlockAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);\n\n/**\n * This function is a legacy means of unlocking the audio device.\n *\n * New programs might want to use SDL_UnlockAudioDevice() instead. This\n * function is equivalent to calling...\n *\n * ```c\n * SDL_UnlockAudioDevice(1);\n * ```\n *\n * ...and is only useful if you used the legacy SDL_OpenAudio() function.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockAudio\n * \\sa SDL_UnlockAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_UnlockAudio(void);\n\n/**\n * Use this function to unlock the audio callback function for a specified\n * device.\n *\n * This function should be paired with a previous SDL_LockAudioDevice() call.\n *\n * \\param dev the ID of the device to be unlocked\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);\n/* @} *//* Audio lock functions */\n\n/**\n * This function is a legacy means of closing the audio device.\n *\n * This function is equivalent to calling...\n *\n * ```c\n * SDL_CloseAudioDevice(1);\n * ```\n *\n * ...and is only useful if you used the legacy SDL_OpenAudio() function.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_OpenAudio\n */\nextern DECLSPEC void SDLCALL SDL_CloseAudio(void);\n\n/**\n * Use this function to shut down audio processing and close the audio device.\n *\n * The application should close open audio devices once they are no longer\n * needed. Calling this function will wait until the device's audio callback\n * is not running, release the audio hardware and then clean up internal\n * state. No further audio will play from this device once this function\n * returns.\n *\n * This function may block briefly while pending audio data is played by the\n * hardware, so that applications don't drop the last buffer of data they\n * supplied.\n *\n * The device ID is invalid as soon as the device is closed, and is eligible\n * for reuse in a new SDL_OpenAudioDevice() call immediately.\n *\n * \\param dev an audio device previously opened with SDL_OpenAudioDevice()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_OpenAudioDevice\n */\nextern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_audio_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_bits.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_bits.h\n *\n *  Functions for fiddling with bits and bitmasks.\n */\n\n#ifndef SDL_bits_h_\n#define SDL_bits_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\file SDL_bits.h\n */\n\n/**\n *  Get the index of the most significant bit. Result is undefined when called\n *  with 0. This operation can also be stated as \"count leading zeroes\" and\n *  \"log base 2\".\n *\n *  \\return the index of the most significant bit, or -1 if the value is 0.\n */\n#if defined(__WATCOMC__) && defined(__386__)\nextern __inline int _SDL_bsr_watcom(Uint32);\n#pragma aux _SDL_bsr_watcom = \\\n    \"bsr eax, eax\" \\\n    parm [eax] nomemory \\\n    value [eax] \\\n    modify exact [eax] nomemory;\n#endif\n\nSDL_FORCE_INLINE int\nSDL_MostSignificantBitIndex32(Uint32 x)\n{\n#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))\n    /* Count Leading Zeroes builtin in GCC.\n     * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html\n     */\n    if (x == 0) {\n        return -1;\n    }\n    return 31 - __builtin_clz(x);\n#elif defined(__WATCOMC__) && defined(__386__)\n    if (x == 0) {\n        return -1;\n    }\n    return _SDL_bsr_watcom(x);\n#elif defined(_MSC_VER)\n    unsigned long index;\n    if (_BitScanReverse(&index, x)) {\n        return index;\n    }\n    return -1;\n#else\n    /* Based off of Bit Twiddling Hacks by Sean Eron Anderson\n     * <seander@cs.stanford.edu>, released in the public domain.\n     * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog\n     */\n    const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};\n    const int    S[] = {1, 2, 4, 8, 16};\n\n    int msbIndex = 0;\n    int i;\n\n    if (x == 0) {\n        return -1;\n    }\n\n    for (i = 4; i >= 0; i--)\n    {\n        if (x & b[i])\n        {\n            x >>= S[i];\n            msbIndex |= S[i];\n        }\n    }\n\n    return msbIndex;\n#endif\n}\n\nSDL_FORCE_INLINE SDL_bool\nSDL_HasExactlyOneBitSet32(Uint32 x)\n{\n    if (x && !(x & (x - 1))) {\n        return SDL_TRUE;\n    }\n    return SDL_FALSE;\n}\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_bits_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_blendmode.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_blendmode.h\n *\n *  Header file declaring the SDL_BlendMode enumeration\n */\n\n#ifndef SDL_blendmode_h_\n#define SDL_blendmode_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief The blend mode used in SDL_RenderCopy() and drawing operations.\n */\ntypedef enum\n{\n    SDL_BLENDMODE_NONE = 0x00000000,     /**< no blending\n                                              dstRGBA = srcRGBA */\n    SDL_BLENDMODE_BLEND = 0x00000001,    /**< alpha blending\n                                              dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))\n                                              dstA = srcA + (dstA * (1-srcA)) */\n    SDL_BLENDMODE_ADD = 0x00000002,      /**< additive blending\n                                              dstRGB = (srcRGB * srcA) + dstRGB\n                                              dstA = dstA */\n    SDL_BLENDMODE_MOD = 0x00000004,      /**< color modulate\n                                              dstRGB = srcRGB * dstRGB\n                                              dstA = dstA */\n    SDL_BLENDMODE_MUL = 0x00000008,      /**< color multiply\n                                              dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA))\n                                              dstA = dstA */\n    SDL_BLENDMODE_INVALID = 0x7FFFFFFF\n\n    /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */\n\n} SDL_BlendMode;\n\n/**\n *  \\brief The blend operation used when combining source and destination pixel components\n */\ntypedef enum\n{\n    SDL_BLENDOPERATION_ADD              = 0x1,  /**< dst + src: supported by all renderers */\n    SDL_BLENDOPERATION_SUBTRACT         = 0x2,  /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */\n    SDL_BLENDOPERATION_REV_SUBTRACT     = 0x3,  /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */\n    SDL_BLENDOPERATION_MINIMUM          = 0x4,  /**< min(dst, src) : supported by D3D9, D3D11 */\n    SDL_BLENDOPERATION_MAXIMUM          = 0x5   /**< max(dst, src) : supported by D3D9, D3D11 */\n} SDL_BlendOperation;\n\n/**\n *  \\brief The normalized factor used to multiply pixel components\n */\ntypedef enum\n{\n    SDL_BLENDFACTOR_ZERO                = 0x1,  /**< 0, 0, 0, 0 */\n    SDL_BLENDFACTOR_ONE                 = 0x2,  /**< 1, 1, 1, 1 */\n    SDL_BLENDFACTOR_SRC_COLOR           = 0x3,  /**< srcR, srcG, srcB, srcA */\n    SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4,  /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */\n    SDL_BLENDFACTOR_SRC_ALPHA           = 0x5,  /**< srcA, srcA, srcA, srcA */\n    SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6,  /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */\n    SDL_BLENDFACTOR_DST_COLOR           = 0x7,  /**< dstR, dstG, dstB, dstA */\n    SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8,  /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */\n    SDL_BLENDFACTOR_DST_ALPHA           = 0x9,  /**< dstA, dstA, dstA, dstA */\n    SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA   /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */\n} SDL_BlendFactor;\n\n/**\n * Compose a custom blend mode for renderers.\n *\n * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept\n * the SDL_BlendMode returned by this function if the renderer supports it.\n *\n * A blend mode controls how the pixels from a drawing operation (source) get\n * combined with the pixels from the render target (destination). First, the\n * components of the source and destination pixels get multiplied with their\n * blend factors. Then, the blend operation takes the two products and\n * calculates the result that will get stored in the render target.\n *\n * Expressed in pseudocode, it would look like this:\n *\n * ```c\n * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor);\n * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor);\n * ```\n *\n * Where the functions `colorOperation(src, dst)` and `alphaOperation(src,\n * dst)` can return one of the following:\n *\n * - `src + dst`\n * - `src - dst`\n * - `dst - src`\n * - `min(src, dst)`\n * - `max(src, dst)`\n *\n * The red, green, and blue components are always multiplied with the first,\n * second, and third components of the SDL_BlendFactor, respectively. The\n * fourth component is not used.\n *\n * The alpha component is always multiplied with the fourth component of the\n * SDL_BlendFactor. The other components are not used in the alpha\n * calculation.\n *\n * Support for these blend modes varies for each renderer. To check if a\n * specific SDL_BlendMode is supported, create a renderer and pass it to\n * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will\n * return with an error if the blend mode is not supported.\n *\n * This list describes the support of custom blend modes for each renderer in\n * SDL 2.0.6. All renderers support the four blend modes listed in the\n * SDL_BlendMode enumeration.\n *\n * - **direct3d**: Supports all operations with all factors. However, some\n *   factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and\n *   `SDL_BLENDOPERATION_MAXIMUM`.\n * - **direct3d11**: Same as Direct3D 9.\n * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all\n *   factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL\n *   2.0.6.\n * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all\n *   factors. Color and alpha factors need to be the same. OpenGL ES 1\n *   implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT`\n *   and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha\n *   operations being different from each other. May support color and alpha\n *   factors being different from each other.\n * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`,\n *   `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT`\n *   operations with all factors.\n * - **psp**: No custom blend mode support.\n * - **software**: No custom blend mode support.\n *\n * Some renderers do not provide an alpha component for the default render\n * target. The `SDL_BLENDFACTOR_DST_ALPHA` and\n * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this\n * case.\n *\n * \\param srcColorFactor the SDL_BlendFactor applied to the red, green, and\n *                       blue components of the source pixels\n * \\param dstColorFactor the SDL_BlendFactor applied to the red, green, and\n *                       blue components of the destination pixels\n * \\param colorOperation the SDL_BlendOperation used to combine the red,\n *                       green, and blue components of the source and\n *                       destination pixels\n * \\param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of\n *                       the source pixels\n * \\param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of\n *                       the destination pixels\n * \\param alphaOperation the SDL_BlendOperation used to combine the alpha\n *                       component of the source and destination pixels\n * \\returns an SDL_BlendMode that represents the chosen factors and\n *          operations.\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_GetRenderDrawBlendMode\n * \\sa SDL_SetTextureBlendMode\n * \\sa SDL_GetTextureBlendMode\n */\nextern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor,\n                                                                 SDL_BlendFactor dstColorFactor,\n                                                                 SDL_BlendOperation colorOperation,\n                                                                 SDL_BlendFactor srcAlphaFactor,\n                                                                 SDL_BlendFactor dstAlphaFactor,\n                                                                 SDL_BlendOperation alphaOperation);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_blendmode_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_clipboard.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n * \\file SDL_clipboard.h\n *\n * Include file for SDL clipboard handling\n */\n\n#ifndef SDL_clipboard_h_\n#define SDL_clipboard_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Function prototypes */\n\n/**\n * Put UTF-8 text into the clipboard.\n *\n * \\param text the text to store in the clipboard\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetClipboardText\n * \\sa SDL_HasClipboardText\n */\nextern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text);\n\n/**\n * Get UTF-8 text from the clipboard, which must be freed with SDL_free().\n *\n * This functions returns empty string if there was not enough memory left for\n * a copy of the clipboard's content.\n *\n * \\returns the clipboard text on success or an empty string on failure; call\n *          SDL_GetError() for more information. Caller must call SDL_free()\n *          on the returned pointer when done with it (even if there was an\n *          error).\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasClipboardText\n * \\sa SDL_SetClipboardText\n */\nextern DECLSPEC char * SDLCALL SDL_GetClipboardText(void);\n\n/**\n * Query whether the clipboard exists and contains a non-empty text string.\n *\n * \\returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetClipboardText\n * \\sa SDL_SetClipboardText\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void);\n\n/**\n * Put UTF-8 text into the primary selection.\n *\n * \\param text the text to store in the primary selection\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_GetPrimarySelectionText\n * \\sa SDL_HasPrimarySelectionText\n */\nextern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text);\n\n/**\n * Get UTF-8 text from the primary selection, which must be freed with\n * SDL_free().\n *\n * This functions returns empty string if there was not enough memory left for\n * a copy of the primary selection's content.\n *\n * \\returns the primary selection text on success or an empty string on\n *          failure; call SDL_GetError() for more information. Caller must\n *          call SDL_free() on the returned pointer when done with it (even if\n *          there was an error).\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_HasPrimarySelectionText\n * \\sa SDL_SetPrimarySelectionText\n */\nextern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void);\n\n/**\n * Query whether the primary selection exists and contains a non-empty text\n * string.\n *\n * \\returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it\n *          does not.\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_GetPrimarySelectionText\n * \\sa SDL_SetPrimarySelectionText\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_clipboard_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_config.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_config_h_\n#define SDL_config_h_\n\n/**\n *  \\file SDL_config.h.in\n *\n *  This is a set of defines to configure the SDL features\n */\n\n/* General platform specific identifiers */\n#include \"SDL_platform.h\"\n\n/* C language features */\n/* #undef const */\n/* #undef inline */\n/* #undef volatile */\n\n/* C datatypes */\n/* Define SIZEOF_VOIDP for 64/32 architectures */\n#if defined(__LP64__) || defined(_LP64) || defined(_WIN64)\n#define SIZEOF_VOIDP 8\n#else\n#define SIZEOF_VOIDP 4\n#endif\n\n#define HAVE_GCC_ATOMICS 1\n/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */\n\n/* Comment this if you want to build without any C library requirements */\n#define HAVE_LIBC 1\n#ifdef HAVE_LIBC\n\n/* Useful headers */\n#define STDC_HEADERS 1\n/* #undef HAVE_ALLOCA_H */\n#define HAVE_CTYPE_H 1\n#define HAVE_FLOAT_H 1\n/* #undef HAVE_ICONV_H */\n#define HAVE_INTTYPES_H 1\n#define HAVE_LIMITS_H 1\n#define HAVE_MALLOC_H 1\n#define HAVE_MATH_H 1\n#define HAVE_MEMORY_H 1\n#define HAVE_SIGNAL_H 1\n#define HAVE_STDARG_H 1\n#define HAVE_STDDEF_H 1\n#define HAVE_STDINT_H 1\n#define HAVE_STDIO_H 1\n#define HAVE_STDLIB_H 1\n#define HAVE_STRINGS_H 1\n#define HAVE_STRING_H 1\n#define HAVE_SYS_TYPES_H 1\n#define HAVE_WCHAR_H 1\n/* #undef HAVE_LINUX_INPUT_H */\n/* #undef HAVE_PTHREAD_NP_H */\n/* #undef HAVE_LIBUNWIND_H */\n\n/* C library functions */\n/* #undef HAVE_DLOPEN */\n#define HAVE_MALLOC 1\n#define HAVE_CALLOC 1\n#define HAVE_REALLOC 1\n#define HAVE_FREE 1\n#define HAVE_ALLOCA 1\n#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */\n#define HAVE_GETENV 1\n/* #undef HAVE_SETENV */\n#define HAVE_PUTENV 1\n/* #undef HAVE_UNSETENV */\n#endif\n#define HAVE_QSORT 1\n#define HAVE_BSEARCH 1\n#define HAVE_ABS 1\n/* #undef HAVE_BCOPY */\n#define HAVE_MEMSET 1\n#define HAVE_MEMCPY 1\n#define HAVE_MEMMOVE 1\n#define HAVE_MEMCMP 1\n#define HAVE_WCSLEN 1\n/* #undef HAVE_WCSLCPY */\n/* #undef HAVE_WCSLCAT */\n#define HAVE__WCSDUP 1\n#define HAVE_WCSDUP 1\n#define HAVE_WCSSTR 1\n#define HAVE_WCSCMP 1\n#define HAVE_WCSNCMP 1\n/* #undef HAVE_WCSCASECMP */\n#define HAVE__WCSICMP 1\n/* #undef HAVE_WCSNCASECMP */\n#define HAVE__WCSNICMP 1\n#define HAVE_STRLEN 1\n/* #undef HAVE_STRLCPY */\n/* #undef HAVE_STRLCAT */\n#define HAVE__STRREV 1\n#define HAVE__STRUPR 1\n#define HAVE__STRLWR 1\n/* #undef HAVE_INDEX */\n/* #undef HAVE_RINDEX */\n#define HAVE_STRCHR 1\n#define HAVE_STRRCHR 1\n#define HAVE_STRSTR 1\n#define HAVE_STRTOK_R 1\n#define HAVE_ITOA 1\n#define HAVE__LTOA 1\n/* #undef HAVE__UITOA */\n#define HAVE__ULTOA 1\n#define HAVE_STRTOL 1\n#define HAVE_STRTOUL 1\n#define HAVE__I64TOA 1\n#define HAVE__UI64TOA 1\n#define HAVE_STRTOLL 1\n#define HAVE_STRTOULL 1\n#define HAVE_STRTOD 1\n#define HAVE_ATOI 1\n#define HAVE_ATOF 1\n#define HAVE_STRCMP 1\n#define HAVE_STRNCMP 1\n#define HAVE__STRICMP 1\n#define HAVE_STRCASECMP 1\n#define HAVE__STRNICMP 1\n#define HAVE_STRNCASECMP 1\n/* #undef HAVE_STRCASESTR */\n#define HAVE_SSCANF 1\n#define HAVE_VSSCANF 1\n#define HAVE_VSNPRINTF 1\n#define HAVE_M_PI 1\n#define HAVE_ACOS 1\n#define HAVE_ACOSF 1\n#define HAVE_ASIN 1\n#define HAVE_ASINF 1\n#define HAVE_ATAN 1\n#define HAVE_ATANF 1\n#define HAVE_ATAN2 1\n#define HAVE_ATAN2F 1\n#define HAVE_CEIL 1\n#define HAVE_CEILF 1\n#define HAVE_COPYSIGN 1\n#define HAVE_COPYSIGNF 1\n#define HAVE_COS 1\n#define HAVE_COSF 1\n#define HAVE_EXP 1\n#define HAVE_EXPF 1\n#define HAVE_FABS 1\n#define HAVE_FABSF 1\n#define HAVE_FLOOR 1\n#define HAVE_FLOORF 1\n#define HAVE_FMOD 1\n#define HAVE_FMODF 1\n#define HAVE_LOG 1\n#define HAVE_LOGF 1\n#define HAVE_LOG10 1\n#define HAVE_LOG10F 1\n#define HAVE_LROUND 1\n#define HAVE_LROUNDF 1\n#define HAVE_POW 1\n#define HAVE_POWF 1\n#define HAVE_ROUND 1\n#define HAVE_ROUNDF 1\n#define HAVE_SCALBN 1\n#define HAVE_SCALBNF 1\n#define HAVE_SIN 1\n#define HAVE_SINF 1\n#define HAVE_SQRT 1\n#define HAVE_SQRTF 1\n#define HAVE_TAN 1\n#define HAVE_TANF 1\n#define HAVE_TRUNC 1\n#define HAVE_TRUNCF 1\n#define HAVE_FOPEN64 1\n#define HAVE_FSEEKO 1\n#define HAVE_FSEEKO64 1\n/* #undef HAVE_MEMFD_CREATE */\n/* #undef HAVE_POSIX_FALLOCATE */\n/* #undef HAVE_SIGACTION */\n/* #undef HAVE_SA_SIGACTION */\n#define HAVE_SETJMP 1\n#define HAVE_NANOSLEEP 1\n/* #undef HAVE_SYSCONF */\n/* #undef HAVE_SYSCTLBYNAME */\n/* #undef HAVE_CLOCK_GETTIME */\n/* #undef HAVE_GETPAGESIZE */\n/* #undef HAVE_MPROTECT */\n/* #undef HAVE_ICONV */\n/* #undef SDL_USE_LIBICONV */\n/* #undef HAVE_PTHREAD_SETNAME_NP */\n/* #undef HAVE_PTHREAD_SET_NAME_NP */\n/* #undef HAVE_SEM_TIMEDWAIT */\n/* #undef HAVE_GETAUXVAL */\n/* #undef HAVE_ELF_AUX_INFO */\n/* #undef HAVE_POLL */\n#define HAVE__EXIT 1\n\n#else\n#define HAVE_STDARG_H 1\n#define HAVE_STDDEF_H 1\n#define HAVE_STDINT_H 1\n#define HAVE_FLOAT_H 1\n#endif /* HAVE_LIBC */\n\n/* #undef HAVE_ALTIVEC_H */\n/* #undef HAVE_DBUS_DBUS_H */\n/* #undef HAVE_FCITX */\n/* #undef HAVE_IBUS_IBUS_H */\n/* #undef HAVE_SYS_INOTIFY_H */\n/* #undef HAVE_INOTIFY_INIT */\n/* #undef HAVE_INOTIFY_INIT1 */\n/* #undef HAVE_INOTIFY */\n/* #undef HAVE_LIBUSB */\n/* #undef HAVE_O_CLOEXEC */\n\n/* Apple platforms might be building universal binaries, where Intel builds\n   can use immintrin.h but other architectures can't. */\n#ifdef __APPLE__\n#  if defined(__has_include) && (defined(__i386__) || defined(__x86_64))\n#    if __has_include(<immintrin.h>)\n#       define HAVE_IMMINTRIN_H 1\n#    endif\n#  endif\n#else  /* non-Apple platforms can use the normal CMake check for this. */\n#define HAVE_IMMINTRIN_H 1\n#endif\n\n/* #undef HAVE_LIBUDEV_H */\n/* #undef HAVE_LIBSAMPLERATE_H */\n/* #undef HAVE_LIBDECOR_H */\n\n#define HAVE_D3D_H 1\n#define HAVE_D3D11_H 1\n#define HAVE_D3D12_H 1\n#define HAVE_DDRAW_H 1\n#define HAVE_DSOUND_H 1\n#define HAVE_DINPUT_H 1\n#define HAVE_XINPUT_H 1\n/* #undef HAVE_WINDOWS_GAMING_INPUT_H */\n#define HAVE_DXGI_H 1\n\n#define HAVE_MMDEVICEAPI_H 1\n#define HAVE_AUDIOCLIENT_H 1\n#define HAVE_TPCSHRD_H 1\n#define HAVE_SENSORSAPI_H 1\n#define HAVE_ROAPI_H 1\n#define HAVE_SHELLSCALINGAPI_H 1\n\n/* #undef USE_POSIX_SPAWN */\n\n/* SDL internal assertion support */\n#if 0\n/* #undef SDL_DEFAULT_ASSERT_LEVEL */\n#endif\n\n/* Allow disabling of core subsystems */\n/* #undef SDL_ATOMIC_DISABLED */\n/* #undef SDL_AUDIO_DISABLED */\n/* #undef SDL_CPUINFO_DISABLED */\n/* #undef SDL_EVENTS_DISABLED */\n/* #undef SDL_FILE_DISABLED */\n/* #undef SDL_JOYSTICK_DISABLED */\n/* #undef SDL_HAPTIC_DISABLED */\n/* #undef SDL_HIDAPI_DISABLED */\n/* #undef SDL_SENSOR_DISABLED */\n/* #undef SDL_LOADSO_DISABLED */\n/* #undef SDL_RENDER_DISABLED */\n/* #undef SDL_THREADS_DISABLED */\n/* #undef SDL_TIMERS_DISABLED */\n/* #undef SDL_VIDEO_DISABLED */\n/* #undef SDL_POWER_DISABLED */\n/* #undef SDL_FILESYSTEM_DISABLED */\n/* #undef SDL_LOCALE_DISABLED */\n/* #undef SDL_MISC_DISABLED */\n\n/* Enable various audio drivers */\n/* #undef SDL_AUDIO_DRIVER_ALSA */\n/* #undef SDL_AUDIO_DRIVER_ALSA_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_ANDROID */\n/* #undef SDL_AUDIO_DRIVER_OPENSLES */\n/* #undef SDL_AUDIO_DRIVER_AAUDIO */\n/* #undef SDL_AUDIO_DRIVER_ARTS */\n/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_COREAUDIO */\n#define SDL_AUDIO_DRIVER_DISK 1\n#define SDL_AUDIO_DRIVER_DSOUND 1\n#define SDL_AUDIO_DRIVER_DUMMY 1\n/* #undef SDL_AUDIO_DRIVER_EMSCRIPTEN */\n/* #undef SDL_AUDIO_DRIVER_ESD */\n/* #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND */\n/* #undef SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_HAIKU */\n/* #undef SDL_AUDIO_DRIVER_JACK */\n/* #undef SDL_AUDIO_DRIVER_JACK_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_NAS */\n/* #undef SDL_AUDIO_DRIVER_NAS_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_NETBSD */\n/* #undef SDL_AUDIO_DRIVER_OSS */\n/* #undef SDL_AUDIO_DRIVER_PAUDIO */\n/* #undef SDL_AUDIO_DRIVER_PIPEWIRE */\n/* #undef SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO */\n/* #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_QSA */\n/* #undef SDL_AUDIO_DRIVER_SNDIO */\n/* #undef SDL_AUDIO_DRIVER_SNDIO_DYNAMIC */\n/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */\n#define SDL_AUDIO_DRIVER_WASAPI 1\n#define SDL_AUDIO_DRIVER_WINMM 1\n/* #undef SDL_AUDIO_DRIVER_OS2 */\n/* #undef SDL_AUDIO_DRIVER_VITA */\n/* #undef SDL_AUDIO_DRIVER_PSP */\n/* #undef SDL_AUDIO_DRIVER_PS2 */\n/* #undef SDL_AUDIO_DRIVER_N3DS */\n\n/* Enable various input drivers */\n/* #undef SDL_INPUT_LINUXEV */\n/* #undef SDL_INPUT_LINUXKD */\n/* #undef SDL_INPUT_FBSDKBIO */\n/* #undef SDL_INPUT_WSCONS */\n/* #undef SDL_JOYSTICK_ANDROID */\n/* #undef SDL_JOYSTICK_HAIKU */\n/* #undef SDL_JOYSTICK_WGI */\n#define SDL_JOYSTICK_DINPUT 1\n#define SDL_JOYSTICK_XINPUT 1\n/* #undef SDL_JOYSTICK_DUMMY */\n/* #undef SDL_JOYSTICK_IOKIT */\n/* #undef SDL_JOYSTICK_MFI */\n/* #undef SDL_JOYSTICK_LINUX */\n/* #undef SDL_JOYSTICK_OS2 */\n/* #undef SDL_JOYSTICK_USBHID */\n/* #undef SDL_HAVE_MACHINE_JOYSTICK_H */\n#define SDL_JOYSTICK_HIDAPI 1\n#define SDL_JOYSTICK_RAWINPUT 1\n/* #undef SDL_JOYSTICK_EMSCRIPTEN */\n#define SDL_JOYSTICK_VIRTUAL 1\n/* #undef SDL_JOYSTICK_VITA */\n/* #undef SDL_JOYSTICK_PSP */\n/* #undef SDL_JOYSTICK_PS2 */\n/* #undef SDL_JOYSTICK_N3DS */\n/* #undef SDL_HAPTIC_DUMMY */\n/* #undef SDL_HAPTIC_LINUX */\n/* #undef SDL_HAPTIC_IOKIT */\n#define SDL_HAPTIC_DINPUT 1\n#define SDL_HAPTIC_XINPUT 1\n/* #undef SDL_HAPTIC_ANDROID */\n/* #undef SDL_LIBUSB_DYNAMIC */\n/* #undef SDL_UDEV_DYNAMIC */\n\n/* Enable various sensor drivers */\n/* #undef SDL_SENSOR_ANDROID */\n/* #undef SDL_SENSOR_COREMOTION */\n#define SDL_SENSOR_WINDOWS 1\n/* #undef SDL_SENSOR_DUMMY */\n/* #undef SDL_SENSOR_VITA */\n/* #undef SDL_SENSOR_N3DS */\n\n/* Enable various shared object loading systems */\n/* #undef SDL_LOADSO_DLOPEN */\n/* #undef SDL_LOADSO_DUMMY */\n/* #undef SDL_LOADSO_LDG */\n#define SDL_LOADSO_WINDOWS 1\n/* #undef SDL_LOADSO_OS2 */\n\n/* Enable various threading systems */\n#define SDL_THREAD_GENERIC_COND_SUFFIX 1\n/* #undef SDL_THREAD_PTHREAD */\n/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX */\n/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */\n#define SDL_THREAD_WINDOWS 1\n/* #undef SDL_THREAD_OS2 */\n/* #undef SDL_THREAD_VITA */\n/* #undef SDL_THREAD_PSP */\n/* #undef SDL_THREAD_PS2 */\n/* #undef SDL_THREAD_N3DS */\n\n/* Enable various timer systems */\n/* #undef SDL_TIMER_HAIKU */\n/* #undef SDL_TIMER_DUMMY */\n/* #undef SDL_TIMER_UNIX */\n#define SDL_TIMER_WINDOWS 1\n/* #undef SDL_TIMER_OS2 */\n/* #undef SDL_TIMER_VITA */\n/* #undef SDL_TIMER_PSP */\n/* #undef SDL_TIMER_PS2 */\n/* #undef SDL_TIMER_N3DS */\n\n/* Enable various video drivers */\n/* #undef SDL_VIDEO_DRIVER_ANDROID */\n/* #undef SDL_VIDEO_DRIVER_EMSCRIPTEN */\n/* #undef SDL_VIDEO_DRIVER_HAIKU */\n/* #undef SDL_VIDEO_DRIVER_COCOA */\n/* #undef SDL_VIDEO_DRIVER_UIKIT */\n/* #undef SDL_VIDEO_DRIVER_DIRECTFB */\n/* #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC */\n#define SDL_VIDEO_DRIVER_DUMMY 1\n#define SDL_VIDEO_DRIVER_OFFSCREEN 1\n#define SDL_VIDEO_DRIVER_WINDOWS 1\n/* #undef SDL_VIDEO_DRIVER_WINRT */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND */\n/* #undef SDL_VIDEO_DRIVER_RPI */\n/* #undef SDL_VIDEO_DRIVER_VIVANTE */\n/* #undef SDL_VIDEO_DRIVER_VIVANTE_VDK */\n/* #undef SDL_VIDEO_DRIVER_OS2 */\n/* #undef SDL_VIDEO_DRIVER_QNX */\n/* #undef SDL_VIDEO_DRIVER_RISCOS */\n/* #undef SDL_VIDEO_DRIVER_PSP */\n/* #undef SDL_VIDEO_DRIVER_PS2 */\n\n/* #undef SDL_VIDEO_DRIVER_KMSDRM */\n/* #undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC */\n/* #undef SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM */\n\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON */\n/* #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR */\n\n/* #undef SDL_VIDEO_DRIVER_X11 */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR */\n/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS */\n/* #undef SDL_VIDEO_DRIVER_X11_XCURSOR */\n/* #undef SDL_VIDEO_DRIVER_X11_XDBE */\n/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2 */\n/* #undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH */\n/* #undef SDL_VIDEO_DRIVER_X11_XFIXES */\n/* #undef SDL_VIDEO_DRIVER_X11_XRANDR */\n/* #undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER */\n/* #undef SDL_VIDEO_DRIVER_X11_XSHAPE */\n/* #undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS */\n/* #undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM */\n/* #undef SDL_VIDEO_DRIVER_VITA */\n/* #undef SDL_VIDEO_DRIVER_N3DS */\n\n#define SDL_VIDEO_RENDER_D3D 1\n#define SDL_VIDEO_RENDER_D3D11 1\n#define SDL_VIDEO_RENDER_D3D12 1\n#define SDL_VIDEO_RENDER_OGL 1\n/* #undef SDL_VIDEO_RENDER_OGL_ES */\n#define SDL_VIDEO_RENDER_OGL_ES2 1\n/* #undef SDL_VIDEO_RENDER_DIRECTFB */\n/* #undef SDL_VIDEO_RENDER_METAL */\n/* #undef SDL_VIDEO_RENDER_VITA_GXM */\n/* #undef SDL_VIDEO_RENDER_PS2 */\n/* #undef SDL_VIDEO_RENDER_PSP */\n\n/* Enable OpenGL support */\n#define SDL_VIDEO_OPENGL 1\n/* #undef SDL_VIDEO_OPENGL_ES */\n#define SDL_VIDEO_OPENGL_ES2 1\n/* #undef SDL_VIDEO_OPENGL_BGL */\n/* #undef SDL_VIDEO_OPENGL_CGL */\n/* #undef SDL_VIDEO_OPENGL_GLX */\n#define SDL_VIDEO_OPENGL_WGL 1\n#define SDL_VIDEO_OPENGL_EGL 1\n/* #undef SDL_VIDEO_OPENGL_OSMESA */\n/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */\n\n/* Enable Vulkan support */\n#define SDL_VIDEO_VULKAN 1\n\n/* Enable Metal support */\n/* #undef SDL_VIDEO_METAL */\n\n/* Enable system power support */\n/* #undef SDL_POWER_ANDROID */\n/* #undef SDL_POWER_LINUX */\n#define SDL_POWER_WINDOWS 1\n/* #undef SDL_POWER_WINRT */\n/* #undef SDL_POWER_MACOSX */\n/* #undef SDL_POWER_UIKIT */\n/* #undef SDL_POWER_HAIKU */\n/* #undef SDL_POWER_EMSCRIPTEN */\n/* #undef SDL_POWER_HARDWIRED */\n/* #undef SDL_POWER_VITA */\n/* #undef SDL_POWER_PSP */\n/* #undef SDL_POWER_N3DS */\n\n/* Enable system filesystem support */\n/* #undef SDL_FILESYSTEM_ANDROID */\n/* #undef SDL_FILESYSTEM_HAIKU */\n/* #undef SDL_FILESYSTEM_COCOA */\n/* #undef SDL_FILESYSTEM_DUMMY */\n/* #undef SDL_FILESYSTEM_RISCOS */\n/* #undef SDL_FILESYSTEM_UNIX */\n#define SDL_FILESYSTEM_WINDOWS 1\n/* #undef SDL_FILESYSTEM_EMSCRIPTEN */\n/* #undef SDL_FILESYSTEM_OS2 */\n/* #undef SDL_FILESYSTEM_VITA */\n/* #undef SDL_FILESYSTEM_PSP */\n/* #undef SDL_FILESYSTEM_PS2 */\n/* #undef SDL_FILESYSTEM_N3DS */\n\n/* Enable misc subsystem */\n/* #undef SDL_MISC_DUMMY */\n\n/* Enable locale subsystem */\n/* #undef SDL_LOCALE_DUMMY */\n\n/* Enable assembly routines */\n/* #undef SDL_ALTIVEC_BLITTERS */\n/* #undef SDL_ARM_SIMD_BLITTERS */\n/* #undef SDL_ARM_NEON_BLITTERS */\n\n/* Whether SDL_DYNAMIC_API needs dlopen */\n/* #undef DYNAPI_NEEDS_DLOPEN */\n\n/* Enable dynamic libsamplerate support */\n/* #undef SDL_LIBSAMPLERATE_DYNAMIC */\n\n/* Enable ime support */\n/* #undef SDL_USE_IME */\n\n/* Platform specific definitions */\n/* #undef SDL_IPHONE_KEYBOARD */\n/* #undef SDL_IPHONE_LAUNCHSCREEN */\n\n/* #undef SDL_VIDEO_VITA_PIB */\n/* #undef SDL_VIDEO_VITA_PVR */\n/* #undef SDL_VIDEO_VITA_PVR_OGL */\n\n/* #undef SDL_HAVE_LIBDECOR_GET_MIN_MAX */\n\n#if !defined(HAVE_STDINT_H) && !defined(_STDINT_H_)\n/* Most everything except Visual Studio 2008 and earlier has stdint.h now */\n#if defined(_MSC_VER) && (_MSC_VER < 1600)\ntypedef signed __int8 int8_t;\ntypedef unsigned __int8 uint8_t;\ntypedef signed __int16 int16_t;\ntypedef unsigned __int16 uint16_t;\ntypedef signed __int32 int32_t;\ntypedef unsigned __int32 uint32_t;\ntypedef signed __int64 int64_t;\ntypedef unsigned __int64 uint64_t;\n#ifndef _UINTPTR_T_DEFINED\n#ifdef  _WIN64\ntypedef unsigned __int64 uintptr_t;\n#else\ntypedef unsigned int uintptr_t;\n#endif\n#define _UINTPTR_T_DEFINED\n#endif\n#endif /* Visual Studio 2008 */\n#endif /* !_STDINT_H_ && !HAVE_STDINT_H */\n\n#endif /* SDL_config_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_copying.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n"
  },
  {
    "path": "libraries/sdl2/SDL_cpuinfo.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_cpuinfo.h\n *\n *  CPU feature detection for SDL.\n */\n\n#ifndef SDL_cpuinfo_h_\n#define SDL_cpuinfo_h_\n\n#include \"SDL_stdinc.h\"\n\n/* Need to do this here because intrin.h has C++ code in it */\n/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */\n#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64))\n#ifdef __clang__\n/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,\n   so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */\n\n#ifndef __PRFCHWINTRIN_H\n#define __PRFCHWINTRIN_H\n\nstatic __inline__ void __attribute__((__always_inline__, __nodebug__))\n_m_prefetch(void *__P)\n{\n  __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */);\n}\n\n#endif /* __PRFCHWINTRIN_H */\n#endif /* __clang__ */\n#include <intrin.h>\n#ifndef _WIN64\n#ifndef __MMX__\n#define __MMX__\n#endif\n#ifndef __3dNOW__\n#define __3dNOW__\n#endif\n#endif\n#ifndef __SSE__\n#define __SSE__\n#endif\n#ifndef __SSE2__\n#define __SSE2__\n#endif\n#ifndef __SSE3__\n#define __SSE3__\n#endif\n#elif defined(__MINGW64_VERSION_MAJOR)\n#include <intrin.h>\n#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON)\n#  include <arm_neon.h>\n#endif\n#else\n/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */\n#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H)\n#include <altivec.h>\n#endif\n#if !defined(SDL_DISABLE_ARM_NEON_H)\n#  if defined(__ARM_NEON)\n#    include <arm_neon.h>\n#  elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__)\n/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */\n#    if defined(_M_ARM)\n#      include <armintr.h>\n#      include <arm_neon.h>\n#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */\n#    endif\n#    if defined (_M_ARM64)\n#      include <arm64intr.h>\n#      include <arm64_neon.h>\n#      define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */\n#      define __ARM_ARCH 8\n#    endif\n#  endif\n#endif\n#endif /* compiler version */\n\n#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H)\n#include <mm3dnow.h>\n#endif\n#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H)\n#include <lsxintrin.h>\n#define __LSX__\n#endif\n#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H)\n#include <lasxintrin.h>\n#define __LASX__\n#endif\n#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H)\n#include <immintrin.h>\n#else\n#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H)\n#include <mmintrin.h>\n#endif\n#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H)\n#include <xmmintrin.h>\n#endif\n#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H)\n#include <emmintrin.h>\n#endif\n#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H)\n#include <pmmintrin.h>\n#endif\n#endif /* HAVE_IMMINTRIN_H */\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* This is a guess for the cacheline size used for padding.\n * Most x86 processors have a 64 byte cache line.\n * The 64-bit PowerPC processors have a 128 byte cache line.\n * We'll use the larger value to be generally safe.\n */\n#define SDL_CACHELINE_SIZE  128\n\n/**\n * Get the number of CPU cores available.\n *\n * \\returns the total number of logical CPU cores. On CPUs that include\n *          technologies such as hyperthreading, the number of logical cores\n *          may be more than the number of physical cores.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_GetCPUCount(void);\n\n/**\n * Determine the L1 cache line size of the CPU.\n *\n * This is useful for determining multi-threaded structure padding or SIMD\n * prefetch sizes.\n *\n * \\returns the L1 cache line size of the CPU, in bytes.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void);\n\n/**\n * Determine whether the CPU has the RDTSC instruction.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void);\n\n/**\n * Determine whether the CPU has AltiVec features.\n *\n * This always returns false on CPUs that aren't using PowerPC instruction\n * sets.\n *\n * \\returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void);\n\n/**\n * Determine whether the CPU has MMX features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void);\n\n/**\n * Determine whether the CPU has 3DNow! features.\n *\n * This always returns false on CPUs that aren't using AMD instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void);\n\n/**\n * Determine whether the CPU has SSE features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void);\n\n/**\n * Determine whether the CPU has SSE2 features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void);\n\n/**\n * Determine whether the CPU has SSE3 features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void);\n\n/**\n * Determine whether the CPU has SSE4.1 features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void);\n\n/**\n * Determine whether the CPU has SSE4.2 features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void);\n\n/**\n * Determine whether the CPU has AVX features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX2\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void);\n\n/**\n * Determine whether the CPU has AVX2 features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_Has3DNow\n * \\sa SDL_HasAltiVec\n * \\sa SDL_HasAVX\n * \\sa SDL_HasMMX\n * \\sa SDL_HasRDTSC\n * \\sa SDL_HasSSE\n * \\sa SDL_HasSSE2\n * \\sa SDL_HasSSE3\n * \\sa SDL_HasSSE41\n * \\sa SDL_HasSSE42\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void);\n\n/**\n * Determine whether the CPU has AVX-512F (foundation) features.\n *\n * This always returns false on CPUs that aren't using Intel instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_HasAVX\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void);\n\n/**\n * Determine whether the CPU has ARM SIMD (ARMv6) features.\n *\n * This is different from ARM NEON, which is a different instruction set.\n *\n * This always returns false on CPUs that aren't using ARM instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_HasNEON\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void);\n\n/**\n * Determine whether the CPU has NEON (ARM SIMD) features.\n *\n * This always returns false on CPUs that aren't using ARM instruction sets.\n *\n * \\returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void);\n\n/**\n * Determine whether the CPU has LSX (LOONGARCH SIMD) features.\n *\n * This always returns false on CPUs that aren't using LOONGARCH instruction\n * sets.\n *\n * \\returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if\n *          not.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void);\n\n/**\n * Determine whether the CPU has LASX (LOONGARCH SIMD) features.\n *\n * This always returns false on CPUs that aren't using LOONGARCH instruction\n * sets.\n *\n * \\returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if\n *          not.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void);\n\n/**\n * Get the amount of RAM configured in the system.\n *\n * \\returns the amount of RAM configured in the system in MiB.\n *\n * \\since This function is available since SDL 2.0.1.\n */\nextern DECLSPEC int SDLCALL SDL_GetSystemRAM(void);\n\n/**\n * Report the alignment this system needs for SIMD allocations.\n *\n * This will return the minimum number of bytes to which a pointer must be\n * aligned to be compatible with SIMD instructions on the current machine. For\n * example, if the machine supports SSE only, it will return 16, but if it\n * supports AVX-512F, it'll return 64 (etc). This only reports values for\n * instruction sets SDL knows about, so if your SDL build doesn't have\n * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and\n * not 64 for the AVX-512 instructions that exist but SDL doesn't know about.\n * Plan accordingly.\n *\n * \\returns the alignment in bytes needed for available, known SIMD\n *          instructions.\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void);\n\n/**\n * Allocate memory in a SIMD-friendly way.\n *\n * This will allocate a block of memory that is suitable for use with SIMD\n * instructions. Specifically, it will be properly aligned and padded for the\n * system's supported vector instructions.\n *\n * The memory returned will be padded such that it is safe to read or write an\n * incomplete vector at the end of the memory block. This can be useful so you\n * don't have to drop back to a scalar fallback at the end of your SIMD\n * processing loop to deal with the final elements without overflowing the\n * allocated buffer.\n *\n * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or\n * delete[], etc.\n *\n * Note that SDL will only deal with SIMD instruction sets it is aware of; for\n * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and\n * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants\n * 64. To be clear: if you can't decide to use an instruction set with an\n * SDL_Has*() function, don't use that instruction set with memory allocated\n * through here.\n *\n * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't\n * out of memory, but you are not allowed to dereference it (because you only\n * own zero bytes of that buffer).\n *\n * \\param len The length, in bytes, of the block to allocate. The actual\n *            allocated block might be larger due to padding, etc.\n * \\returns a pointer to the newly-allocated block, NULL if out of memory.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_SIMDGetAlignment\n * \\sa SDL_SIMDRealloc\n * \\sa SDL_SIMDFree\n */\nextern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len);\n\n/**\n * Reallocate memory obtained from SDL_SIMDAlloc\n *\n * It is not valid to use this function on a pointer from anything but\n * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc,\n * SDL_malloc, memalign, new[], etc.\n *\n * \\param mem The pointer obtained from SDL_SIMDAlloc. This function also\n *            accepts NULL, at which point this function is the same as\n *            calling SDL_SIMDAlloc with a NULL pointer.\n * \\param len The length, in bytes, of the block to allocated. The actual\n *            allocated block might be larger due to padding, etc. Passing 0\n *            will return a non-NULL pointer, assuming the system isn't out of\n *            memory.\n * \\returns a pointer to the newly-reallocated block, NULL if out of memory.\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_SIMDGetAlignment\n * \\sa SDL_SIMDAlloc\n * \\sa SDL_SIMDFree\n */\nextern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len);\n\n/**\n * Deallocate memory obtained from SDL_SIMDAlloc\n *\n * It is not valid to use this function on a pointer from anything but\n * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from\n * malloc, realloc, SDL_malloc, memalign, new[], etc.\n *\n * However, SDL_SIMDFree(NULL) is a legal no-op.\n *\n * The memory pointed to by `ptr` is no longer valid for access upon return,\n * and may be returned to the system or reused by a future allocation. The\n * pointer passed to this function is no longer safe to dereference once this\n * function returns, and should be discarded.\n *\n * \\param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to\n *            deallocate. NULL is a legal no-op.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_SIMDAlloc\n * \\sa SDL_SIMDRealloc\n */\nextern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_cpuinfo_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_egl.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_egl.h\n *\n *  This is a simple file to encapsulate the EGL API headers.\n */\n#if !defined(_MSC_VER) && !defined(__ANDROID__) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)\n\n#if defined(__vita__) || defined(__psp2__)\n#include <psp2/types.h>\n#endif\n\n#include <EGL/egl.h>\n#include <EGL/eglext.h>\n\n#else /* _MSC_VER */\n\n/* EGL headers for Visual Studio */\n\n#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n/* Khronos platform-specific types and definitions.\n *\n * The master copy of khrplatform.h is maintained in the Khronos EGL\n * Registry repository at https://github.com/KhronosGroup/EGL-Registry\n * The last semantic modification to khrplatform.h was at commit ID:\n *      67a3e0864c2d75ea5287b9f3d2eb74a745936692\n *\n * Adopters may modify this file to suit their platform. Adopters are\n * encouraged to submit platform specific modifications to the Khronos\n * group so that they can be included in future versions of this file.\n * Please submit changes by filing pull requests or issues on\n * the EGL Registry repository linked above.\n *\n *\n * See the Implementer's Guidelines for information about where this file\n * should be located on your system and for more details of its use:\n *    http://www.khronos.org/registry/implementers_guide.pdf\n *\n * This file should be included as\n *        #include <KHR/khrplatform.h>\n * by Khronos client API header files that use its types and defines.\n *\n * The types in khrplatform.h should only be used to define API-specific types.\n *\n * Types defined in khrplatform.h:\n *    khronos_int8_t              signed   8  bit\n *    khronos_uint8_t             unsigned 8  bit\n *    khronos_int16_t             signed   16 bit\n *    khronos_uint16_t            unsigned 16 bit\n *    khronos_int32_t             signed   32 bit\n *    khronos_uint32_t            unsigned 32 bit\n *    khronos_int64_t             signed   64 bit\n *    khronos_uint64_t            unsigned 64 bit\n *    khronos_intptr_t            signed   same number of bits as a pointer\n *    khronos_uintptr_t           unsigned same number of bits as a pointer\n *    khronos_ssize_t             signed   size\n *    khronos_usize_t             unsigned size\n *    khronos_float_t             signed   32 bit floating point\n *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds\n *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in\n *                                         nanoseconds\n *    khronos_stime_nanoseconds_t signed time interval in nanoseconds\n *    khronos_boolean_enum_t      enumerated boolean type. This should\n *      only be used as a base type when a client API's boolean type is\n *      an enum. Client APIs which use an integer or other type for\n *      booleans cannot use this as the base type for their boolean.\n *\n * Tokens defined in khrplatform.h:\n *\n *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.\n *\n *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.\n *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.\n *\n * Calling convention macros defined in this file:\n *    KHRONOS_APICALL\n *    KHRONOS_APIENTRY\n *    KHRONOS_APIATTRIBUTES\n *\n * These may be used in function prototypes as:\n *\n *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(\n *                                  int arg1,\n *                                  int arg2) KHRONOS_APIATTRIBUTES;\n */\n\n#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)\n#   define KHRONOS_STATIC 1\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APICALL\n *-------------------------------------------------------------------------\n * This precedes the return type of the function in the function prototype.\n */\n#if defined(KHRONOS_STATIC)\n    /* If the preprocessor constant KHRONOS_STATIC is defined, make the\n     * header compatible with static linking. */\n#   define KHRONOS_APICALL\n#elif defined(_WIN32)\n#   define KHRONOS_APICALL __declspec(dllimport)\n#elif defined (__SYMBIAN32__)\n#   define KHRONOS_APICALL IMPORT_C\n#elif defined(__ANDROID__)\n#   define KHRONOS_APICALL __attribute__((visibility(\"default\")))\n#else\n#   define KHRONOS_APICALL\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIENTRY\n *-------------------------------------------------------------------------\n * This follows the return type of the function  and precedes the function\n * name in the function prototype.\n */\n#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)\n    /* Win32 but not WinCE */\n#   define KHRONOS_APIENTRY __stdcall\n#else\n#   define KHRONOS_APIENTRY\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIATTRIBUTES\n *-------------------------------------------------------------------------\n * This follows the closing parenthesis of the function prototype arguments.\n */\n#if defined (__ARMCC_2__)\n#define KHRONOS_APIATTRIBUTES __softfp\n#else\n#define KHRONOS_APIATTRIBUTES\n#endif\n\n/*-------------------------------------------------------------------------\n * basic type definitions\n *-----------------------------------------------------------------------*/\n#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)\n\n\n/*\n * Using <stdint.h>\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n/*\n * To support platform where unsigned long cannot be used interchangeably with\n * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.\n * Ideally, we could just use (u)intptr_t everywhere, but this could result in\n * ABI breakage if khronos_uintptr_t is changed from unsigned long to\n * unsigned long long or similar (this results in different C++ name mangling).\n * To avoid changes for existing platforms, we restrict usage of intptr_t to\n * platforms where the size of a pointer is larger than the size of long.\n */\n#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)\n#if __SIZEOF_POINTER__ > __SIZEOF_LONG__\n#define KHRONOS_USE_INTPTR_T\n#endif\n#endif\n\n#elif defined(__VMS ) || defined(__sgi)\n\n/*\n * Using <inttypes.h>\n */\n#include <inttypes.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)\n\n/*\n * Win32\n */\ntypedef __int32                 khronos_int32_t;\ntypedef unsigned __int32        khronos_uint32_t;\ntypedef __int64                 khronos_int64_t;\ntypedef unsigned __int64        khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(__sun__) || defined(__digital__)\n\n/*\n * Sun or Digital\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#if defined(__arch64__) || defined(_LP64)\ntypedef long int                khronos_int64_t;\ntypedef unsigned long int       khronos_uint64_t;\n#else\ntypedef long long int           khronos_int64_t;\ntypedef unsigned long long int  khronos_uint64_t;\n#endif /* __arch64__ */\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif 0\n\n/*\n * Hypothetical platform with no float or int64 support\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#define KHRONOS_SUPPORT_INT64   0\n#define KHRONOS_SUPPORT_FLOAT   0\n\n#else\n\n/*\n * Generic fallback\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#endif\n\n\n/*\n * Types that are (so far) the same on all platforms\n */\ntypedef signed   char          khronos_int8_t;\ntypedef unsigned char          khronos_uint8_t;\ntypedef signed   short int     khronos_int16_t;\ntypedef unsigned short int     khronos_uint16_t;\n\n/*\n * Types that differ between LLP64 and LP64 architectures - in LLP64,\n * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears\n * to be the only LLP64 architecture in current use.\n */\n#ifdef KHRONOS_USE_INTPTR_T\ntypedef intptr_t               khronos_intptr_t;\ntypedef uintptr_t              khronos_uintptr_t;\n#elif defined(_WIN64)\ntypedef signed   long long int khronos_intptr_t;\ntypedef unsigned long long int khronos_uintptr_t;\n#else\ntypedef signed   long  int     khronos_intptr_t;\ntypedef unsigned long  int     khronos_uintptr_t;\n#endif\n\n#if defined(_WIN64)\ntypedef signed   long long int khronos_ssize_t;\ntypedef unsigned long long int khronos_usize_t;\n#else\ntypedef signed   long  int     khronos_ssize_t;\ntypedef unsigned long  int     khronos_usize_t;\n#endif\n\n#if KHRONOS_SUPPORT_FLOAT\n/*\n * Float type\n */\ntypedef          float         khronos_float_t;\n#endif\n\n#if KHRONOS_SUPPORT_INT64\n/* Time types\n *\n * These types can be used to represent a time interval in nanoseconds or\n * an absolute Unadjusted System Time.  Unadjusted System Time is the number\n * of nanoseconds since some arbitrary system event (e.g. since the last\n * time the system booted).  The Unadjusted System Time is an unsigned\n * 64 bit value that wraps back to 0 every 584 years.  Time intervals\n * may be either signed or unsigned.\n */\ntypedef khronos_uint64_t       khronos_utime_nanoseconds_t;\ntypedef khronos_int64_t        khronos_stime_nanoseconds_t;\n#endif\n\n/*\n * Dummy value used to pad enum types to 32 bits.\n */\n#ifndef KHRONOS_MAX_ENUM\n#define KHRONOS_MAX_ENUM 0x7FFFFFFF\n#endif\n\n/*\n * Enumerated boolean type\n *\n * Values other than zero should be considered to be true.  Therefore\n * comparisons should not be made against KHRONOS_TRUE.\n */\ntypedef enum {\n    KHRONOS_FALSE = 0,\n    KHRONOS_TRUE  = 1,\n    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM\n} khronos_boolean_enum_t;\n\n#endif /* __khrplatform_h_ */\n\n\n#ifndef __eglplatform_h_\n#define __eglplatform_h_\n\n/*\n** Copyright 2007-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: Apache-2.0\n*/\n\n/* Platform-specific types and definitions for egl.h\n *\n * Adopters may modify khrplatform.h and this file to suit their platform.\n * You are encouraged to submit all modifications to the Khronos group so that\n * they can be included in future versions of this file.  Please submit changes\n * by filing an issue or pull request on the public Khronos EGL Registry, at\n * https://www.github.com/KhronosGroup/EGL-Registry/\n */\n\n/*#include <KHR/khrplatform.h>*/\n\n/* Macros used in EGL function prototype declarations.\n *\n * EGL functions should be prototyped as:\n *\n * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);\n * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);\n *\n * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h\n */\n\n#ifndef EGLAPI\n#define EGLAPI KHRONOS_APICALL\n#endif\n\n#ifndef EGLAPIENTRY\n#define EGLAPIENTRY  KHRONOS_APIENTRY\n#endif\n#define EGLAPIENTRYP EGLAPIENTRY*\n\n/* The types NativeDisplayType, NativeWindowType, and NativePixmapType\n * are aliases of window-system-dependent types, such as X Display * or\n * Windows Device Context. They must be defined in platform-specific\n * code below. The EGL-prefixed versions of Native*Type are the same\n * types, renamed in EGL 1.3 so all types in the API start with \"EGL\".\n *\n * Khronos STRONGLY RECOMMENDS that you use the default definitions\n * provided below, since these changes affect both binary and source\n * portability of applications using EGL running on different EGL\n * implementations.\n */\n\n#if defined(EGL_NO_PLATFORM_SPECIFIC_TYPES)\n\ntypedef void *EGLNativeDisplayType;\ntypedef void *EGLNativePixmapType;\ntypedef void *EGLNativeWindowType;\n\n#elif defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN 1\n#endif\n#include <windows.h>\n\ntypedef HDC     EGLNativeDisplayType;\ntypedef HBITMAP EGLNativePixmapType;\ntypedef HWND    EGLNativeWindowType;\n\n#elif defined(__EMSCRIPTEN__)\n\ntypedef int EGLNativeDisplayType;\ntypedef int EGLNativePixmapType;\ntypedef int EGLNativeWindowType;\n\n#elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */\n\ntypedef int   EGLNativeDisplayType;\ntypedef void *EGLNativePixmapType;\ntypedef void *EGLNativeWindowType;\n\n#elif defined(WL_EGL_PLATFORM)\n\ntypedef struct wl_display     *EGLNativeDisplayType;\ntypedef struct wl_egl_pixmap  *EGLNativePixmapType;\ntypedef struct wl_egl_window  *EGLNativeWindowType;\n\n#elif defined(__GBM__)\n\ntypedef struct gbm_device  *EGLNativeDisplayType;\ntypedef struct gbm_bo      *EGLNativePixmapType;\ntypedef void               *EGLNativeWindowType;\n\n#elif defined(__ANDROID__) || defined(ANDROID)\n\nstruct ANativeWindow;\nstruct egl_native_pixmap_t;\n\ntypedef void*                           EGLNativeDisplayType;\ntypedef struct egl_native_pixmap_t*     EGLNativePixmapType;\ntypedef struct ANativeWindow*           EGLNativeWindowType;\n\n#elif defined(USE_OZONE)\n\ntypedef intptr_t EGLNativeDisplayType;\ntypedef intptr_t EGLNativePixmapType;\ntypedef intptr_t EGLNativeWindowType;\n\n#elif defined(USE_X11)\n\n/* X11 (tentative)  */\n#include <X11/Xlib.h>\n#include <X11/Xutil.h>\n\ntypedef Display *EGLNativeDisplayType;\ntypedef Pixmap   EGLNativePixmapType;\ntypedef Window   EGLNativeWindowType;\n\n#elif defined(__unix__)\n\ntypedef void             *EGLNativeDisplayType;\ntypedef khronos_uintptr_t EGLNativePixmapType;\ntypedef khronos_uintptr_t EGLNativeWindowType;\n\n#elif defined(__APPLE__)\n\ntypedef int   EGLNativeDisplayType;\ntypedef void *EGLNativePixmapType;\ntypedef void *EGLNativeWindowType;\n\n#elif defined(__HAIKU__)\n\n#include <kernel/image.h>\n\ntypedef void              *EGLNativeDisplayType;\ntypedef khronos_uintptr_t  EGLNativePixmapType;\ntypedef khronos_uintptr_t  EGLNativeWindowType;\n\n#elif defined(__Fuchsia__)\n\ntypedef void              *EGLNativeDisplayType;\ntypedef khronos_uintptr_t  EGLNativePixmapType;\ntypedef khronos_uintptr_t  EGLNativeWindowType;\n\n#else\n#error \"Platform not recognized\"\n#endif\n\n/* EGL 1.2 types, renamed for consistency in EGL 1.3 */\ntypedef EGLNativeDisplayType NativeDisplayType;\ntypedef EGLNativePixmapType  NativePixmapType;\ntypedef EGLNativeWindowType  NativeWindowType;\n\n\n/* Define EGLint. This must be a signed integral type large enough to contain\n * all legal attribute names and values passed into and out of EGL, whether\n * their type is boolean, bitmask, enumerant (symbolic constant), integer,\n * handle, or other.  While in general a 32-bit integer will suffice, if\n * handles are 64 bit types, then EGLint should be defined as a signed 64-bit\n * integer type.\n */\ntypedef khronos_int32_t EGLint;\n\n\n/* C++ / C typecast macros for special EGL handle values */\n#if defined(__cplusplus)\n#define EGL_CAST(type, value) (static_cast<type>(value))\n#else\n#define EGL_CAST(type, value) ((type) (value))\n#endif\n\n#endif /* __eglplatform_h */\n\n\n#ifndef __egl_h_\n#define __egl_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: Apache-2.0\n**\n** This header is generated from the Khronos EGL XML API Registry.\n** The current version of the Registry, generator scripts\n** used to make the header, and the header can be found at\n**   http://www.khronos.org/registry/egl\n**\n** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $\n*/\n\n/*#include <EGL/eglplatform.h>*/\n\n#ifndef EGL_EGL_PROTOTYPES\n#define EGL_EGL_PROTOTYPES 1\n#endif\n\n/* Generated on date 20220525 */\n\n/* Generated C header for:\n * API: egl\n * Versions considered: .*\n * Versions emitted: .*\n * Default extensions included: None\n * Additional extensions included: _nomatch_^\n * Extensions removed: _nomatch_^\n */\n\n#ifndef EGL_VERSION_1_0\n#define EGL_VERSION_1_0 1\ntypedef unsigned int EGLBoolean;\ntypedef void *EGLDisplay;\n/*#include <KHR/khrplatform.h>*/\n/*#include <EGL/eglplatform.h>*/\ntypedef void *EGLConfig;\ntypedef void *EGLSurface;\ntypedef void *EGLContext;\ntypedef void (*__eglMustCastToProperFunctionPointerType)(void);\n#define EGL_ALPHA_SIZE                    0x3021\n#define EGL_BAD_ACCESS                    0x3002\n#define EGL_BAD_ALLOC                     0x3003\n#define EGL_BAD_ATTRIBUTE                 0x3004\n#define EGL_BAD_CONFIG                    0x3005\n#define EGL_BAD_CONTEXT                   0x3006\n#define EGL_BAD_CURRENT_SURFACE           0x3007\n#define EGL_BAD_DISPLAY                   0x3008\n#define EGL_BAD_MATCH                     0x3009\n#define EGL_BAD_NATIVE_PIXMAP             0x300A\n#define EGL_BAD_NATIVE_WINDOW             0x300B\n#define EGL_BAD_PARAMETER                 0x300C\n#define EGL_BAD_SURFACE                   0x300D\n#define EGL_BLUE_SIZE                     0x3022\n#define EGL_BUFFER_SIZE                   0x3020\n#define EGL_CONFIG_CAVEAT                 0x3027\n#define EGL_CONFIG_ID                     0x3028\n#define EGL_CORE_NATIVE_ENGINE            0x305B\n#define EGL_DEPTH_SIZE                    0x3025\n#define EGL_DONT_CARE                     EGL_CAST(EGLint,-1)\n#define EGL_DRAW                          0x3059\n#define EGL_EXTENSIONS                    0x3055\n#define EGL_FALSE                         0\n#define EGL_GREEN_SIZE                    0x3023\n#define EGL_HEIGHT                        0x3056\n#define EGL_LARGEST_PBUFFER               0x3058\n#define EGL_LEVEL                         0x3029\n#define EGL_MAX_PBUFFER_HEIGHT            0x302A\n#define EGL_MAX_PBUFFER_PIXELS            0x302B\n#define EGL_MAX_PBUFFER_WIDTH             0x302C\n#define EGL_NATIVE_RENDERABLE             0x302D\n#define EGL_NATIVE_VISUAL_ID              0x302E\n#define EGL_NATIVE_VISUAL_TYPE            0x302F\n#define EGL_NONE                          0x3038\n#define EGL_NON_CONFORMANT_CONFIG         0x3051\n#define EGL_NOT_INITIALIZED               0x3001\n#define EGL_NO_CONTEXT                    EGL_CAST(EGLContext,0)\n#define EGL_NO_DISPLAY                    EGL_CAST(EGLDisplay,0)\n#define EGL_NO_SURFACE                    EGL_CAST(EGLSurface,0)\n#define EGL_PBUFFER_BIT                   0x0001\n#define EGL_PIXMAP_BIT                    0x0002\n#define EGL_READ                          0x305A\n#define EGL_RED_SIZE                      0x3024\n#define EGL_SAMPLES                       0x3031\n#define EGL_SAMPLE_BUFFERS                0x3032\n#define EGL_SLOW_CONFIG                   0x3050\n#define EGL_STENCIL_SIZE                  0x3026\n#define EGL_SUCCESS                       0x3000\n#define EGL_SURFACE_TYPE                  0x3033\n#define EGL_TRANSPARENT_BLUE_VALUE        0x3035\n#define EGL_TRANSPARENT_GREEN_VALUE       0x3036\n#define EGL_TRANSPARENT_RED_VALUE         0x3037\n#define EGL_TRANSPARENT_RGB               0x3052\n#define EGL_TRANSPARENT_TYPE              0x3034\n#define EGL_TRUE                          1\n#define EGL_VENDOR                        0x3053\n#define EGL_VERSION                       0x3054\n#define EGL_WIDTH                         0x3057\n#define EGL_WINDOW_BIT                    0x0004\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCHOOSECONFIGPROC) (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);\ntypedef EGLContext (EGLAPIENTRYP PFNEGLCREATECONTEXTPROC) (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERSURFACEPROC) (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGATTRIBPROC) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCONFIGSPROC) (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);\ntypedef EGLDisplay (EGLAPIENTRYP PFNEGLGETCURRENTDISPLAYPROC) (void);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLGETCURRENTSURFACEPROC) (EGLint readdraw);\ntypedef EGLDisplay (EGLAPIENTRYP PFNEGLGETDISPLAYPROC) (EGLNativeDisplayType display_id);\ntypedef EGLint (EGLAPIENTRYP PFNEGLGETERRORPROC) (void);\ntypedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRYP PFNEGLGETPROCADDRESSPROC) (const char *procname);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLINITIALIZEPROC) (EGLDisplay dpy, EGLint *major, EGLint *minor);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLMAKECURRENTPROC) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYCONTEXTPROC) (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);\ntypedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGPROC) (EGLDisplay dpy, EGLint name);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSPROC) (EGLDisplay dpy, EGLSurface surface);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLTERMINATEPROC) (EGLDisplay dpy);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITGLPROC) (void);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITNATIVEPROC) (EGLint engine);\n#if EGL_EGL_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig (EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config);\nEGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers (EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);\nEGLAPI EGLContext EGLAPIENTRY eglCreateContext (EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface (EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface (EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface (EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext (EGLDisplay dpy, EGLContext ctx);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface (EGLDisplay dpy, EGLSurface surface);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs (EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config);\nEGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay (void);\nEGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface (EGLint readdraw);\nEGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay (EGLNativeDisplayType display_id);\nEGLAPI EGLint EGLAPIENTRY eglGetError (void);\nEGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname);\nEGLAPI EGLBoolean EGLAPIENTRY eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);\nEGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryContext (EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value);\nEGLAPI const char *EGLAPIENTRY eglQueryString (EGLDisplay dpy, EGLint name);\nEGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value);\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers (EGLDisplay dpy, EGLSurface surface);\nEGLAPI EGLBoolean EGLAPIENTRY eglTerminate (EGLDisplay dpy);\nEGLAPI EGLBoolean EGLAPIENTRY eglWaitGL (void);\nEGLAPI EGLBoolean EGLAPIENTRY eglWaitNative (EGLint engine);\n#endif\n#endif /* EGL_VERSION_1_0 */\n\n#ifndef EGL_VERSION_1_1\n#define EGL_VERSION_1_1 1\n#define EGL_BACK_BUFFER                   0x3084\n#define EGL_BIND_TO_TEXTURE_RGB           0x3039\n#define EGL_BIND_TO_TEXTURE_RGBA          0x303A\n#define EGL_CONTEXT_LOST                  0x300E\n#define EGL_MIN_SWAP_INTERVAL             0x303B\n#define EGL_MAX_SWAP_INTERVAL             0x303C\n#define EGL_MIPMAP_TEXTURE                0x3082\n#define EGL_MIPMAP_LEVEL                  0x3083\n#define EGL_NO_TEXTURE                    0x305C\n#define EGL_TEXTURE_2D                    0x305F\n#define EGL_TEXTURE_FORMAT                0x3080\n#define EGL_TEXTURE_RGB                   0x305D\n#define EGL_TEXTURE_RGBA                  0x305E\n#define EGL_TEXTURE_TARGET                0x3081\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDTEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETEXIMAGEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint buffer);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSURFACEATTRIBPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPINTERVALPROC) (EGLDisplay dpy, EGLint interval);\n#if EGL_EGL_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);\nEGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage (EGLDisplay dpy, EGLSurface surface, EGLint buffer);\nEGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value);\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval (EGLDisplay dpy, EGLint interval);\n#endif\n#endif /* EGL_VERSION_1_1 */\n\n#ifndef EGL_VERSION_1_2\n#define EGL_VERSION_1_2 1\ntypedef unsigned int EGLenum;\ntypedef void *EGLClientBuffer;\n#define EGL_ALPHA_FORMAT                  0x3088\n#define EGL_ALPHA_FORMAT_NONPRE           0x308B\n#define EGL_ALPHA_FORMAT_PRE              0x308C\n#define EGL_ALPHA_MASK_SIZE               0x303E\n#define EGL_BUFFER_PRESERVED              0x3094\n#define EGL_BUFFER_DESTROYED              0x3095\n#define EGL_CLIENT_APIS                   0x308D\n#define EGL_COLORSPACE                    0x3087\n#define EGL_COLORSPACE_sRGB               0x3089\n#define EGL_COLORSPACE_LINEAR             0x308A\n#define EGL_COLOR_BUFFER_TYPE             0x303F\n#define EGL_CONTEXT_CLIENT_TYPE           0x3097\n#define EGL_DISPLAY_SCALING               10000\n#define EGL_HORIZONTAL_RESOLUTION         0x3090\n#define EGL_LUMINANCE_BUFFER              0x308F\n#define EGL_LUMINANCE_SIZE                0x303D\n#define EGL_OPENGL_ES_BIT                 0x0001\n#define EGL_OPENVG_BIT                    0x0002\n#define EGL_OPENGL_ES_API                 0x30A0\n#define EGL_OPENVG_API                    0x30A1\n#define EGL_OPENVG_IMAGE                  0x3096\n#define EGL_PIXEL_ASPECT_RATIO            0x3092\n#define EGL_RENDERABLE_TYPE               0x3040\n#define EGL_RENDER_BUFFER                 0x3086\n#define EGL_RGB_BUFFER                    0x308E\n#define EGL_SINGLE_BUFFER                 0x3085\n#define EGL_SWAP_BEHAVIOR                 0x3093\n#define EGL_UNKNOWN                       EGL_CAST(EGLint,-1)\n#define EGL_VERTICAL_RESOLUTION           0x3091\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDAPIPROC) (EGLenum api);\ntypedef EGLenum (EGLAPIENTRYP PFNEGLQUERYAPIPROC) (void);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPBUFFERFROMCLIENTBUFFERPROC) (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLRELEASETHREADPROC) (void);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITCLIENTPROC) (void);\n#if EGL_EGL_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglBindAPI (EGLenum api);\nEGLAPI EGLenum EGLAPIENTRY eglQueryAPI (void);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer (EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread (void);\nEGLAPI EGLBoolean EGLAPIENTRY eglWaitClient (void);\n#endif\n#endif /* EGL_VERSION_1_2 */\n\n#ifndef EGL_VERSION_1_3\n#define EGL_VERSION_1_3 1\n#define EGL_CONFORMANT                    0x3042\n#define EGL_CONTEXT_CLIENT_VERSION        0x3098\n#define EGL_MATCH_NATIVE_PIXMAP           0x3041\n#define EGL_OPENGL_ES2_BIT                0x0004\n#define EGL_VG_ALPHA_FORMAT               0x3088\n#define EGL_VG_ALPHA_FORMAT_NONPRE        0x308B\n#define EGL_VG_ALPHA_FORMAT_PRE           0x308C\n#define EGL_VG_ALPHA_FORMAT_PRE_BIT       0x0040\n#define EGL_VG_COLORSPACE                 0x3087\n#define EGL_VG_COLORSPACE_sRGB            0x3089\n#define EGL_VG_COLORSPACE_LINEAR          0x308A\n#define EGL_VG_COLORSPACE_LINEAR_BIT      0x0020\n#endif /* EGL_VERSION_1_3 */\n\n#ifndef EGL_VERSION_1_4\n#define EGL_VERSION_1_4 1\n#define EGL_DEFAULT_DISPLAY               EGL_CAST(EGLNativeDisplayType,0)\n#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT   0x0200\n#define EGL_MULTISAMPLE_RESOLVE           0x3099\n#define EGL_MULTISAMPLE_RESOLVE_DEFAULT   0x309A\n#define EGL_MULTISAMPLE_RESOLVE_BOX       0x309B\n#define EGL_OPENGL_API                    0x30A2\n#define EGL_OPENGL_BIT                    0x0008\n#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT   0x0400\ntypedef EGLContext (EGLAPIENTRYP PFNEGLGETCURRENTCONTEXTPROC) (void);\n#if EGL_EGL_PROTOTYPES\nEGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext (void);\n#endif\n#endif /* EGL_VERSION_1_4 */\n\n#ifndef EGL_VERSION_1_5\n#define EGL_VERSION_1_5 1\ntypedef void *EGLSync;\ntypedef intptr_t EGLAttrib;\ntypedef khronos_utime_nanoseconds_t EGLTime;\ntypedef void *EGLImage;\n#define EGL_CONTEXT_MAJOR_VERSION         0x3098\n#define EGL_CONTEXT_MINOR_VERSION         0x30FB\n#define EGL_CONTEXT_OPENGL_PROFILE_MASK   0x30FD\n#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY 0x31BD\n#define EGL_NO_RESET_NOTIFICATION         0x31BE\n#define EGL_LOSE_CONTEXT_ON_RESET         0x31BF\n#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT 0x00000001\n#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT 0x00000002\n#define EGL_CONTEXT_OPENGL_DEBUG          0x31B0\n#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE 0x31B1\n#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS  0x31B2\n#define EGL_OPENGL_ES3_BIT                0x00000040\n#define EGL_CL_EVENT_HANDLE               0x309C\n#define EGL_SYNC_CL_EVENT                 0x30FE\n#define EGL_SYNC_CL_EVENT_COMPLETE        0x30FF\n#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE  0x30F0\n#define EGL_SYNC_TYPE                     0x30F7\n#define EGL_SYNC_STATUS                   0x30F1\n#define EGL_SYNC_CONDITION                0x30F8\n#define EGL_SIGNALED                      0x30F2\n#define EGL_UNSIGNALED                    0x30F3\n#define EGL_SYNC_FLUSH_COMMANDS_BIT       0x0001\n#define EGL_FOREVER                       0xFFFFFFFFFFFFFFFFull\n#define EGL_TIMEOUT_EXPIRED               0x30F5\n#define EGL_CONDITION_SATISFIED           0x30F6\n#define EGL_NO_SYNC                       EGL_CAST(EGLSync,0)\n#define EGL_SYNC_FENCE                    0x30F9\n#define EGL_GL_COLORSPACE                 0x309D\n#define EGL_GL_COLORSPACE_SRGB            0x3089\n#define EGL_GL_COLORSPACE_LINEAR          0x308A\n#define EGL_GL_RENDERBUFFER               0x30B9\n#define EGL_GL_TEXTURE_2D                 0x30B1\n#define EGL_GL_TEXTURE_LEVEL              0x30BC\n#define EGL_GL_TEXTURE_3D                 0x30B2\n#define EGL_GL_TEXTURE_ZOFFSET            0x30BD\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x30B3\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x30B4\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x30B5\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x30B6\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x30B7\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x30B8\n#define EGL_IMAGE_PRESERVED               0x30D2\n#define EGL_NO_IMAGE                      EGL_CAST(EGLImage,0)\ntypedef EGLSync (EGLAPIENTRYP PFNEGLCREATESYNCPROC) (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCPROC) (EGLDisplay dpy, EGLSync sync);\ntypedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBPROC) (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);\ntypedef EGLImage (EGLAPIENTRYP PFNEGLCREATEIMAGEPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEPROC) (EGLDisplay dpy, EGLImage image);\ntypedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYPROC) (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLWAITSYNCPROC) (EGLDisplay dpy, EGLSync sync, EGLint flags);\n#if EGL_EGL_PROTOTYPES\nEGLAPI EGLSync EGLAPIENTRY eglCreateSync (EGLDisplay dpy, EGLenum type, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroySync (EGLDisplay dpy, EGLSync sync);\nEGLAPI EGLint EGLAPIENTRY eglClientWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags, EGLTime timeout);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttrib (EGLDisplay dpy, EGLSync sync, EGLint attribute, EGLAttrib *value);\nEGLAPI EGLImage EGLAPIENTRY eglCreateImage (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroyImage (EGLDisplay dpy, EGLImage image);\nEGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplay (EGLenum platform, void *native_display, const EGLAttrib *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurface (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLAttrib *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurface (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglWaitSync (EGLDisplay dpy, EGLSync sync, EGLint flags);\n#endif\n#endif /* EGL_VERSION_1_5 */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __egl_h_ */\n\n\n#ifndef __eglext_h_\n#define __eglext_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: Apache-2.0\n**\n** This header is generated from the Khronos EGL XML API Registry.\n** The current version of the Registry, generator scripts\n** used to make the header, and the header can be found at\n**   http://www.khronos.org/registry/egl\n**\n** Khronos $Git commit SHA1: 6fb1daea15 $ on $Git commit date: 2022-05-25 09:41:13 -0600 $\n*/\n\n/*#include <EGL/eglplatform.h>*/\n\n#define EGL_EGLEXT_VERSION 20220525\n\n/* Generated C header for:\n * API: egl\n * Versions considered: .*\n * Versions emitted: _nomatch_^\n * Default extensions included: egl\n * Additional extensions included: _nomatch_^\n * Extensions removed: _nomatch_^\n */\n\n#ifndef EGL_KHR_cl_event\n#define EGL_KHR_cl_event 1\n#define EGL_CL_EVENT_HANDLE_KHR           0x309C\n#define EGL_SYNC_CL_EVENT_KHR             0x30FE\n#define EGL_SYNC_CL_EVENT_COMPLETE_KHR    0x30FF\n#endif /* EGL_KHR_cl_event */\n\n#ifndef EGL_KHR_cl_event2\n#define EGL_KHR_cl_event2 1\ntypedef void *EGLSyncKHR;\ntypedef intptr_t EGLAttribKHR;\ntypedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNC64KHRPROC) (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSync64KHR (EGLDisplay dpy, EGLenum type, const EGLAttribKHR *attrib_list);\n#endif\n#endif /* EGL_KHR_cl_event2 */\n\n#ifndef EGL_KHR_client_get_all_proc_addresses\n#define EGL_KHR_client_get_all_proc_addresses 1\n#endif /* EGL_KHR_client_get_all_proc_addresses */\n\n#ifndef EGL_KHR_config_attribs\n#define EGL_KHR_config_attribs 1\n#define EGL_CONFORMANT_KHR                0x3042\n#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR  0x0020\n#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR   0x0040\n#endif /* EGL_KHR_config_attribs */\n\n#ifndef EGL_KHR_context_flush_control\n#define EGL_KHR_context_flush_control 1\n#define EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR 0\n#define EGL_CONTEXT_RELEASE_BEHAVIOR_KHR  0x2097\n#define EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x2098\n#endif /* EGL_KHR_context_flush_control */\n\n#ifndef EGL_KHR_create_context\n#define EGL_KHR_create_context 1\n#define EGL_CONTEXT_MAJOR_VERSION_KHR     0x3098\n#define EGL_CONTEXT_MINOR_VERSION_KHR     0x30FB\n#define EGL_CONTEXT_FLAGS_KHR             0x30FC\n#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD\n#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD\n#define EGL_NO_RESET_NOTIFICATION_KHR     0x31BE\n#define EGL_LOSE_CONTEXT_ON_RESET_KHR     0x31BF\n#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR  0x00000001\n#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002\n#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004\n#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001\n#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002\n#define EGL_OPENGL_ES3_BIT_KHR            0x00000040\n#endif /* EGL_KHR_create_context */\n\n#ifndef EGL_KHR_create_context_no_error\n#define EGL_KHR_create_context_no_error 1\n#define EGL_CONTEXT_OPENGL_NO_ERROR_KHR   0x31B3\n#endif /* EGL_KHR_create_context_no_error */\n\n#ifndef EGL_KHR_debug\n#define EGL_KHR_debug 1\ntypedef void *EGLLabelKHR;\ntypedef void *EGLObjectKHR;\ntypedef void (EGLAPIENTRY  *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message);\n#define EGL_OBJECT_THREAD_KHR             0x33B0\n#define EGL_OBJECT_DISPLAY_KHR            0x33B1\n#define EGL_OBJECT_CONTEXT_KHR            0x33B2\n#define EGL_OBJECT_SURFACE_KHR            0x33B3\n#define EGL_OBJECT_IMAGE_KHR              0x33B4\n#define EGL_OBJECT_SYNC_KHR               0x33B5\n#define EGL_OBJECT_STREAM_KHR             0x33B6\n#define EGL_DEBUG_MSG_CRITICAL_KHR        0x33B9\n#define EGL_DEBUG_MSG_ERROR_KHR           0x33BA\n#define EGL_DEBUG_MSG_WARN_KHR            0x33BB\n#define EGL_DEBUG_MSG_INFO_KHR            0x33BC\n#define EGL_DEBUG_CALLBACK_KHR            0x33B8\ntypedef EGLint (EGLAPIENTRYP PFNEGLDEBUGMESSAGECONTROLKHRPROC) (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEBUGKHRPROC) (EGLint attribute, EGLAttrib *value);\ntypedef EGLint (EGLAPIENTRYP PFNEGLLABELOBJECTKHRPROC) (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLint EGLAPIENTRY eglDebugMessageControlKHR (EGLDEBUGPROCKHR callback, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDebugKHR (EGLint attribute, EGLAttrib *value);\nEGLAPI EGLint EGLAPIENTRY eglLabelObjectKHR (EGLDisplay display, EGLenum objectType, EGLObjectKHR object, EGLLabelKHR label);\n#endif\n#endif /* EGL_KHR_debug */\n\n#ifndef EGL_KHR_display_reference\n#define EGL_KHR_display_reference 1\n#define EGL_TRACK_REFERENCES_KHR          0x3352\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBKHRPROC) (EGLDisplay dpy, EGLint name, EGLAttrib *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribKHR (EGLDisplay dpy, EGLint name, EGLAttrib *value);\n#endif\n#endif /* EGL_KHR_display_reference */\n\n#ifndef EGL_KHR_fence_sync\n#define EGL_KHR_fence_sync 1\ntypedef khronos_utime_nanoseconds_t EGLTimeKHR;\n#ifdef KHRONOS_SUPPORT_INT64\n#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0\n#define EGL_SYNC_CONDITION_KHR            0x30F8\n#define EGL_SYNC_FENCE_KHR                0x30F9\ntypedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);\ntypedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR (EGLDisplay dpy, EGLSyncKHR sync);\nEGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_KHR_fence_sync */\n\n#ifndef EGL_KHR_get_all_proc_addresses\n#define EGL_KHR_get_all_proc_addresses 1\n#endif /* EGL_KHR_get_all_proc_addresses */\n\n#ifndef EGL_KHR_gl_colorspace\n#define EGL_KHR_gl_colorspace 1\n#define EGL_GL_COLORSPACE_KHR             0x309D\n#define EGL_GL_COLORSPACE_SRGB_KHR        0x3089\n#define EGL_GL_COLORSPACE_LINEAR_KHR      0x308A\n#endif /* EGL_KHR_gl_colorspace */\n\n#ifndef EGL_KHR_gl_renderbuffer_image\n#define EGL_KHR_gl_renderbuffer_image 1\n#define EGL_GL_RENDERBUFFER_KHR           0x30B9\n#endif /* EGL_KHR_gl_renderbuffer_image */\n\n#ifndef EGL_KHR_gl_texture_2D_image\n#define EGL_KHR_gl_texture_2D_image 1\n#define EGL_GL_TEXTURE_2D_KHR             0x30B1\n#define EGL_GL_TEXTURE_LEVEL_KHR          0x30BC\n#endif /* EGL_KHR_gl_texture_2D_image */\n\n#ifndef EGL_KHR_gl_texture_3D_image\n#define EGL_KHR_gl_texture_3D_image 1\n#define EGL_GL_TEXTURE_3D_KHR             0x30B2\n#define EGL_GL_TEXTURE_ZOFFSET_KHR        0x30BD\n#endif /* EGL_KHR_gl_texture_3D_image */\n\n#ifndef EGL_KHR_gl_texture_cubemap_image\n#define EGL_KHR_gl_texture_cubemap_image 1\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6\n#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7\n#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8\n#endif /* EGL_KHR_gl_texture_cubemap_image */\n\n#ifndef EGL_KHR_image\n#define EGL_KHR_image 1\ntypedef void *EGLImageKHR;\n#define EGL_NATIVE_PIXMAP_KHR             0x30B0\n#define EGL_NO_IMAGE_KHR                  EGL_CAST(EGLImageKHR,0)\ntypedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);\n#endif\n#endif /* EGL_KHR_image */\n\n#ifndef EGL_KHR_image_base\n#define EGL_KHR_image_base 1\n#define EGL_IMAGE_PRESERVED_KHR           0x30D2\n#endif /* EGL_KHR_image_base */\n\n#ifndef EGL_KHR_image_pixmap\n#define EGL_KHR_image_pixmap 1\n#endif /* EGL_KHR_image_pixmap */\n\n#ifndef EGL_KHR_lock_surface\n#define EGL_KHR_lock_surface 1\n#define EGL_READ_SURFACE_BIT_KHR          0x0001\n#define EGL_WRITE_SURFACE_BIT_KHR         0x0002\n#define EGL_LOCK_SURFACE_BIT_KHR          0x0080\n#define EGL_OPTIMAL_FORMAT_BIT_KHR        0x0100\n#define EGL_MATCH_FORMAT_KHR              0x3043\n#define EGL_FORMAT_RGB_565_EXACT_KHR      0x30C0\n#define EGL_FORMAT_RGB_565_KHR            0x30C1\n#define EGL_FORMAT_RGBA_8888_EXACT_KHR    0x30C2\n#define EGL_FORMAT_RGBA_8888_KHR          0x30C3\n#define EGL_MAP_PRESERVE_PIXELS_KHR       0x30C4\n#define EGL_LOCK_USAGE_HINT_KHR           0x30C5\n#define EGL_BITMAP_POINTER_KHR            0x30C6\n#define EGL_BITMAP_PITCH_KHR              0x30C7\n#define EGL_BITMAP_ORIGIN_KHR             0x30C8\n#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR   0x30C9\n#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA\n#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR  0x30CB\n#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC\n#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD\n#define EGL_LOWER_LEFT_KHR                0x30CE\n#define EGL_UPPER_LEFT_KHR                0x30CF\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay dpy, EGLSurface surface);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay dpy, EGLSurface surface);\n#endif\n#endif /* EGL_KHR_lock_surface */\n\n#ifndef EGL_KHR_lock_surface2\n#define EGL_KHR_lock_surface2 1\n#define EGL_BITMAP_PIXEL_SIZE_KHR         0x3110\n#endif /* EGL_KHR_lock_surface2 */\n\n#ifndef EGL_KHR_lock_surface3\n#define EGL_KHR_lock_surface3 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACE64KHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface64KHR (EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLAttribKHR *value);\n#endif\n#endif /* EGL_KHR_lock_surface3 */\n\n#ifndef EGL_KHR_mutable_render_buffer\n#define EGL_KHR_mutable_render_buffer 1\n#define EGL_MUTABLE_RENDER_BUFFER_BIT_KHR 0x1000\n#endif /* EGL_KHR_mutable_render_buffer */\n\n#ifndef EGL_KHR_no_config_context\n#define EGL_KHR_no_config_context 1\n#define EGL_NO_CONFIG_KHR                 EGL_CAST(EGLConfig,0)\n#endif /* EGL_KHR_no_config_context */\n\n#ifndef EGL_KHR_partial_update\n#define EGL_KHR_partial_update 1\n#define EGL_BUFFER_AGE_KHR                0x313D\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSETDAMAGEREGIONKHRPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSetDamageRegionKHR (EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);\n#endif\n#endif /* EGL_KHR_partial_update */\n\n#ifndef EGL_KHR_platform_android\n#define EGL_KHR_platform_android 1\n#define EGL_PLATFORM_ANDROID_KHR          0x3141\n#endif /* EGL_KHR_platform_android */\n\n#ifndef EGL_KHR_platform_gbm\n#define EGL_KHR_platform_gbm 1\n#define EGL_PLATFORM_GBM_KHR              0x31D7\n#endif /* EGL_KHR_platform_gbm */\n\n#ifndef EGL_KHR_platform_wayland\n#define EGL_KHR_platform_wayland 1\n#define EGL_PLATFORM_WAYLAND_KHR          0x31D8\n#endif /* EGL_KHR_platform_wayland */\n\n#ifndef EGL_KHR_platform_x11\n#define EGL_KHR_platform_x11 1\n#define EGL_PLATFORM_X11_KHR              0x31D5\n#define EGL_PLATFORM_X11_SCREEN_KHR       0x31D6\n#endif /* EGL_KHR_platform_x11 */\n\n#ifndef EGL_KHR_reusable_sync\n#define EGL_KHR_reusable_sync 1\n#ifdef KHRONOS_SUPPORT_INT64\n#define EGL_SYNC_STATUS_KHR               0x30F1\n#define EGL_SIGNALED_KHR                  0x30F2\n#define EGL_UNSIGNALED_KHR                0x30F3\n#define EGL_TIMEOUT_EXPIRED_KHR           0x30F5\n#define EGL_CONDITION_SATISFIED_KHR       0x30F6\n#define EGL_SYNC_TYPE_KHR                 0x30F7\n#define EGL_SYNC_REUSABLE_KHR             0x30FA\n#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR   0x0001\n#define EGL_FOREVER_KHR                   0xFFFFFFFFFFFFFFFFull\n#define EGL_NO_SYNC_KHR                   EGL_CAST(EGLSyncKHR,0)\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_KHR_reusable_sync */\n\n#ifndef EGL_KHR_stream\n#define EGL_KHR_stream 1\ntypedef void *EGLStreamKHR;\ntypedef khronos_uint64_t EGLuint64KHR;\n#ifdef KHRONOS_SUPPORT_INT64\n#define EGL_NO_STREAM_KHR                 EGL_CAST(EGLStreamKHR,0)\n#define EGL_CONSUMER_LATENCY_USEC_KHR     0x3210\n#define EGL_PRODUCER_FRAME_KHR            0x3212\n#define EGL_CONSUMER_FRAME_KHR            0x3213\n#define EGL_STREAM_STATE_KHR              0x3214\n#define EGL_STREAM_STATE_CREATED_KHR      0x3215\n#define EGL_STREAM_STATE_CONNECTING_KHR   0x3216\n#define EGL_STREAM_STATE_EMPTY_KHR        0x3217\n#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218\n#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219\n#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A\n#define EGL_BAD_STREAM_KHR                0x321B\n#define EGL_BAD_STATE_KHR                 0x321C\ntypedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC) (EGLDisplay dpy, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR (EGLDisplay dpy, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR (EGLDisplay dpy, EGLStreamKHR stream);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_KHR_stream */\n\n#ifndef EGL_KHR_stream_attrib\n#define EGL_KHR_stream_attrib 1\n#ifdef KHRONOS_SUPPORT_INT64\ntypedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMATTRIBKHRPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEATTRIBKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamAttribKHR (EGLDisplay dpy, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglSetStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib value);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLAttrib *value);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseAttribKHR (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_KHR_stream_attrib */\n\n#ifndef EGL_KHR_stream_consumer_gltexture\n#define EGL_KHR_stream_consumer_gltexture 1\n#ifdef EGL_KHR_stream\n#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR (EGLDisplay dpy, EGLStreamKHR stream);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR (EGLDisplay dpy, EGLStreamKHR stream);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR (EGLDisplay dpy, EGLStreamKHR stream);\n#endif\n#endif /* EGL_KHR_stream */\n#endif /* EGL_KHR_stream_consumer_gltexture */\n\n#ifndef EGL_KHR_stream_cross_process_fd\n#define EGL_KHR_stream_cross_process_fd 1\ntypedef int EGLNativeFileDescriptorKHR;\n#ifdef EGL_KHR_stream\n#define EGL_NO_FILE_DESCRIPTOR_KHR        EGL_CAST(EGLNativeFileDescriptorKHR,-1)\ntypedef EGLNativeFileDescriptorKHR (EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream);\ntypedef EGLStreamKHR (EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC) (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR (EGLDisplay dpy, EGLStreamKHR stream);\nEGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR (EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);\n#endif\n#endif /* EGL_KHR_stream */\n#endif /* EGL_KHR_stream_cross_process_fd */\n\n#ifndef EGL_KHR_stream_fifo\n#define EGL_KHR_stream_fifo 1\n#ifdef EGL_KHR_stream\n#define EGL_STREAM_FIFO_LENGTH_KHR        0x31FC\n#define EGL_STREAM_TIME_NOW_KHR           0x31FD\n#define EGL_STREAM_TIME_CONSUMER_KHR      0x31FE\n#define EGL_STREAM_TIME_PRODUCER_KHR      0x31FF\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR (EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);\n#endif\n#endif /* EGL_KHR_stream */\n#endif /* EGL_KHR_stream_fifo */\n\n#ifndef EGL_KHR_stream_producer_aldatalocator\n#define EGL_KHR_stream_producer_aldatalocator 1\n#ifdef EGL_KHR_stream\n#endif /* EGL_KHR_stream */\n#endif /* EGL_KHR_stream_producer_aldatalocator */\n\n#ifndef EGL_KHR_stream_producer_eglsurface\n#define EGL_KHR_stream_producer_eglsurface 1\n#ifdef EGL_KHR_stream\n#define EGL_STREAM_BIT_KHR                0x0800\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR (EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);\n#endif\n#endif /* EGL_KHR_stream */\n#endif /* EGL_KHR_stream_producer_eglsurface */\n\n#ifndef EGL_KHR_surfaceless_context\n#define EGL_KHR_surfaceless_context 1\n#endif /* EGL_KHR_surfaceless_context */\n\n#ifndef EGL_KHR_swap_buffers_with_damage\n#define EGL_KHR_swap_buffers_with_damage 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEKHRPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageKHR (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);\n#endif\n#endif /* EGL_KHR_swap_buffers_with_damage */\n\n#ifndef EGL_KHR_vg_parent_image\n#define EGL_KHR_vg_parent_image 1\n#define EGL_VG_PARENT_IMAGE_KHR           0x30BA\n#endif /* EGL_KHR_vg_parent_image */\n\n#ifndef EGL_KHR_wait_sync\n#define EGL_KHR_wait_sync 1\ntypedef EGLint (EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);\n#endif\n#endif /* EGL_KHR_wait_sync */\n\n#ifndef EGL_ANDROID_GLES_layers\n#define EGL_ANDROID_GLES_layers 1\n#endif /* EGL_ANDROID_GLES_layers */\n\n#ifndef EGL_ANDROID_blob_cache\n#define EGL_ANDROID_blob_cache 1\ntypedef khronos_ssize_t EGLsizeiANDROID;\ntypedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);\ntypedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);\ntypedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC) (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID (EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);\n#endif\n#endif /* EGL_ANDROID_blob_cache */\n\n#ifndef EGL_ANDROID_create_native_client_buffer\n#define EGL_ANDROID_create_native_client_buffer 1\n#define EGL_NATIVE_BUFFER_USAGE_ANDROID   0x3143\n#define EGL_NATIVE_BUFFER_USAGE_PROTECTED_BIT_ANDROID 0x00000001\n#define EGL_NATIVE_BUFFER_USAGE_RENDERBUFFER_BIT_ANDROID 0x00000002\n#define EGL_NATIVE_BUFFER_USAGE_TEXTURE_BIT_ANDROID 0x00000004\ntypedef EGLClientBuffer (EGLAPIENTRYP PFNEGLCREATENATIVECLIENTBUFFERANDROIDPROC) (const EGLint *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLClientBuffer EGLAPIENTRY eglCreateNativeClientBufferANDROID (const EGLint *attrib_list);\n#endif\n#endif /* EGL_ANDROID_create_native_client_buffer */\n\n#ifndef EGL_ANDROID_framebuffer_target\n#define EGL_ANDROID_framebuffer_target 1\n#define EGL_FRAMEBUFFER_TARGET_ANDROID    0x3147\n#endif /* EGL_ANDROID_framebuffer_target */\n\n#ifndef EGL_ANDROID_front_buffer_auto_refresh\n#define EGL_ANDROID_front_buffer_auto_refresh 1\n#define EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID 0x314C\n#endif /* EGL_ANDROID_front_buffer_auto_refresh */\n\n#ifndef EGL_ANDROID_get_frame_timestamps\n#define EGL_ANDROID_get_frame_timestamps 1\ntypedef khronos_stime_nanoseconds_t EGLnsecsANDROID;\n#define EGL_TIMESTAMP_PENDING_ANDROID     EGL_CAST(EGLnsecsANDROID,-2)\n#define EGL_TIMESTAMP_INVALID_ANDROID     EGL_CAST(EGLnsecsANDROID,-1)\n#define EGL_TIMESTAMPS_ANDROID            0x3430\n#define EGL_COMPOSITE_DEADLINE_ANDROID    0x3431\n#define EGL_COMPOSITE_INTERVAL_ANDROID    0x3432\n#define EGL_COMPOSITE_TO_PRESENT_LATENCY_ANDROID 0x3433\n#define EGL_REQUESTED_PRESENT_TIME_ANDROID 0x3434\n#define EGL_RENDERING_COMPLETE_TIME_ANDROID 0x3435\n#define EGL_COMPOSITION_LATCH_TIME_ANDROID 0x3436\n#define EGL_FIRST_COMPOSITION_START_TIME_ANDROID 0x3437\n#define EGL_LAST_COMPOSITION_START_TIME_ANDROID 0x3438\n#define EGL_FIRST_COMPOSITION_GPU_FINISHED_TIME_ANDROID 0x3439\n#define EGL_DISPLAY_PRESENT_TIME_ANDROID  0x343A\n#define EGL_DEQUEUE_READY_TIME_ANDROID    0x343B\n#define EGL_READS_DONE_TIME_ANDROID       0x343C\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint name);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETCOMPOSITORTIMINGANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps,  const EGLint *names, EGLnsecsANDROID *values);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETNEXTFRAMEIDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSUPPORTEDANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETFRAMETIMESTAMPSANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps,  const EGLint *timestamps, EGLnsecsANDROID *values);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint name);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetCompositorTimingANDROID (EGLDisplay dpy, EGLSurface surface, EGLint numTimestamps,  const EGLint *names, EGLnsecsANDROID *values);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetNextFrameIdANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR *frameId);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampSupportedANDROID (EGLDisplay dpy, EGLSurface surface, EGLint timestamp);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetFrameTimestampsANDROID (EGLDisplay dpy, EGLSurface surface, EGLuint64KHR frameId, EGLint numTimestamps,  const EGLint *timestamps, EGLnsecsANDROID *values);\n#endif\n#endif /* EGL_ANDROID_get_frame_timestamps */\n\n#ifndef EGL_ANDROID_get_native_client_buffer\n#define EGL_ANDROID_get_native_client_buffer 1\nstruct AHardwareBuffer;\ntypedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETNATIVECLIENTBUFFERANDROIDPROC) (const struct AHardwareBuffer *buffer);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLClientBuffer EGLAPIENTRY eglGetNativeClientBufferANDROID (const struct AHardwareBuffer *buffer);\n#endif\n#endif /* EGL_ANDROID_get_native_client_buffer */\n\n#ifndef EGL_ANDROID_image_native_buffer\n#define EGL_ANDROID_image_native_buffer 1\n#define EGL_NATIVE_BUFFER_ANDROID         0x3140\n#endif /* EGL_ANDROID_image_native_buffer */\n\n#ifndef EGL_ANDROID_native_fence_sync\n#define EGL_ANDROID_native_fence_sync 1\n#define EGL_SYNC_NATIVE_FENCE_ANDROID     0x3144\n#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID  0x3145\n#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146\n#define EGL_NO_NATIVE_FENCE_FD_ANDROID    -1\ntypedef EGLint (EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC) (EGLDisplay dpy, EGLSyncKHR sync);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID (EGLDisplay dpy, EGLSyncKHR sync);\n#endif\n#endif /* EGL_ANDROID_native_fence_sync */\n\n#ifndef EGL_ANDROID_presentation_time\n#define EGL_ANDROID_presentation_time 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLPRESENTATIONTIMEANDROIDPROC) (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglPresentationTimeANDROID (EGLDisplay dpy, EGLSurface surface, EGLnsecsANDROID time);\n#endif\n#endif /* EGL_ANDROID_presentation_time */\n\n#ifndef EGL_ANDROID_recordable\n#define EGL_ANDROID_recordable 1\n#define EGL_RECORDABLE_ANDROID            0x3142\n#endif /* EGL_ANDROID_recordable */\n\n#ifndef EGL_ANGLE_d3d_share_handle_client_buffer\n#define EGL_ANGLE_d3d_share_handle_client_buffer 1\n#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200\n#endif /* EGL_ANGLE_d3d_share_handle_client_buffer */\n\n#ifndef EGL_ANGLE_device_d3d\n#define EGL_ANGLE_device_d3d 1\n#define EGL_D3D9_DEVICE_ANGLE             0x33A0\n#define EGL_D3D11_DEVICE_ANGLE            0x33A1\n#endif /* EGL_ANGLE_device_d3d */\n\n#ifndef EGL_ANGLE_query_surface_pointer\n#define EGL_ANGLE_query_surface_pointer 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQuerySurfacePointerANGLE (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);\n#endif\n#endif /* EGL_ANGLE_query_surface_pointer */\n\n#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle\n#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1\n#endif /* EGL_ANGLE_surface_d3d_texture_2d_share_handle */\n\n#ifndef EGL_ANGLE_sync_control_rate\n#define EGL_ANGLE_sync_control_rate 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETMSCRATEANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglGetMscRateANGLE (EGLDisplay dpy, EGLSurface surface, EGLint *numerator, EGLint *denominator);\n#endif\n#endif /* EGL_ANGLE_sync_control_rate */\n\n#ifndef EGL_ANGLE_window_fixed_size\n#define EGL_ANGLE_window_fixed_size 1\n#define EGL_FIXED_SIZE_ANGLE              0x3201\n#endif /* EGL_ANGLE_window_fixed_size */\n\n#ifndef EGL_ARM_image_format\n#define EGL_ARM_image_format 1\n#define EGL_COLOR_COMPONENT_TYPE_UNSIGNED_INTEGER_ARM 0x3287\n#define EGL_COLOR_COMPONENT_TYPE_INTEGER_ARM 0x3288\n#endif /* EGL_ARM_image_format */\n\n#ifndef EGL_ARM_implicit_external_sync\n#define EGL_ARM_implicit_external_sync 1\n#define EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM 0x328A\n#endif /* EGL_ARM_implicit_external_sync */\n\n#ifndef EGL_ARM_pixmap_multisample_discard\n#define EGL_ARM_pixmap_multisample_discard 1\n#define EGL_DISCARD_SAMPLES_ARM           0x3286\n#endif /* EGL_ARM_pixmap_multisample_discard */\n\n#ifndef EGL_EXT_bind_to_front\n#define EGL_EXT_bind_to_front 1\n#define EGL_FRONT_BUFFER_EXT              0x3464\n#endif /* EGL_EXT_bind_to_front */\n\n#ifndef EGL_EXT_buffer_age\n#define EGL_EXT_buffer_age 1\n#define EGL_BUFFER_AGE_EXT                0x313D\n#endif /* EGL_EXT_buffer_age */\n\n#ifndef EGL_EXT_client_extensions\n#define EGL_EXT_client_extensions 1\n#endif /* EGL_EXT_client_extensions */\n\n#ifndef EGL_EXT_client_sync\n#define EGL_EXT_client_sync 1\n#define EGL_SYNC_CLIENT_EXT               0x3364\n#define EGL_SYNC_CLIENT_SIGNAL_EXT        0x3365\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCLIENTSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglClientSignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);\n#endif\n#endif /* EGL_EXT_client_sync */\n\n#ifndef EGL_EXT_compositor\n#define EGL_EXT_compositor 1\n#define EGL_PRIMARY_COMPOSITOR_CONTEXT_EXT 0x3460\n#define EGL_EXTERNAL_REF_ID_EXT           0x3461\n#define EGL_COMPOSITOR_DROP_NEWEST_FRAME_EXT 0x3462\n#define EGL_COMPOSITOR_KEEP_NEWEST_FRAME_EXT 0x3463\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTLISTEXTPROC) (const EGLint *external_ref_ids, EGLint num_entries);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETCONTEXTATTRIBUTESEXTPROC) (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWLISTEXTPROC) (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETWINDOWATTRIBUTESEXTPROC) (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORBINDTEXWINDOWEXTPROC) (EGLint external_win_id);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSETSIZEEXTPROC) (EGLint external_win_id, EGLint width, EGLint height);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLCOMPOSITORSWAPPOLICYEXTPROC) (EGLint external_win_id, EGLint policy);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextListEXT (const EGLint *external_ref_ids, EGLint num_entries);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetContextAttributesEXT (EGLint external_ref_id, const EGLint *context_attributes, EGLint num_entries);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowListEXT (EGLint external_ref_id, const EGLint *external_win_ids, EGLint num_entries);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetWindowAttributesEXT (EGLint external_win_id, const EGLint *window_attributes, EGLint num_entries);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorBindTexWindowEXT (EGLint external_win_id);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSetSizeEXT (EGLint external_win_id, EGLint width, EGLint height);\nEGLAPI EGLBoolean EGLAPIENTRY eglCompositorSwapPolicyEXT (EGLint external_win_id, EGLint policy);\n#endif\n#endif /* EGL_EXT_compositor */\n\n#ifndef EGL_EXT_config_select_group\n#define EGL_EXT_config_select_group 1\n#define EGL_CONFIG_SELECT_GROUP_EXT       0x34C0\n#endif /* EGL_EXT_config_select_group */\n\n#ifndef EGL_EXT_create_context_robustness\n#define EGL_EXT_create_context_robustness 1\n#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF\n#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138\n#define EGL_NO_RESET_NOTIFICATION_EXT     0x31BE\n#define EGL_LOSE_CONTEXT_ON_RESET_EXT     0x31BF\n#endif /* EGL_EXT_create_context_robustness */\n\n#ifndef EGL_EXT_device_base\n#define EGL_EXT_device_base 1\ntypedef void *EGLDeviceEXT;\n#define EGL_NO_DEVICE_EXT                 EGL_CAST(EGLDeviceEXT,0)\n#define EGL_BAD_DEVICE_EXT                0x322B\n#define EGL_DEVICE_EXT                    0x322C\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEATTRIBEXTPROC) (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);\ntypedef const char *(EGLAPIENTRYP PFNEGLQUERYDEVICESTRINGEXTPROC) (EGLDeviceEXT device, EGLint name);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICESEXTPROC) (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBEXTPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceAttribEXT (EGLDeviceEXT device, EGLint attribute, EGLAttrib *value);\nEGLAPI const char *EGLAPIENTRY eglQueryDeviceStringEXT (EGLDeviceEXT device, EGLint name);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDevicesEXT (EGLint max_devices, EGLDeviceEXT *devices, EGLint *num_devices);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribEXT (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);\n#endif\n#endif /* EGL_EXT_device_base */\n\n#ifndef EGL_EXT_device_drm\n#define EGL_EXT_device_drm 1\n#define EGL_DRM_DEVICE_FILE_EXT           0x3233\n#define EGL_DRM_MASTER_FD_EXT             0x333C\n#endif /* EGL_EXT_device_drm */\n\n#ifndef EGL_EXT_device_drm_render_node\n#define EGL_EXT_device_drm_render_node 1\n#define EGL_DRM_RENDER_NODE_FILE_EXT      0x3377\n#endif /* EGL_EXT_device_drm_render_node */\n\n#ifndef EGL_EXT_device_enumeration\n#define EGL_EXT_device_enumeration 1\n#endif /* EGL_EXT_device_enumeration */\n\n#ifndef EGL_EXT_device_openwf\n#define EGL_EXT_device_openwf 1\n#define EGL_OPENWF_DEVICE_ID_EXT          0x3237\n#define EGL_OPENWF_DEVICE_EXT             0x333D\n#endif /* EGL_EXT_device_openwf */\n\n#ifndef EGL_EXT_device_persistent_id\n#define EGL_EXT_device_persistent_id 1\n#define EGL_DEVICE_UUID_EXT               0x335C\n#define EGL_DRIVER_UUID_EXT               0x335D\n#define EGL_DRIVER_NAME_EXT               0x335E\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDEVICEBINARYEXTPROC) (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDeviceBinaryEXT (EGLDeviceEXT device, EGLint name, EGLint max_size, void *value, EGLint *size);\n#endif\n#endif /* EGL_EXT_device_persistent_id */\n\n#ifndef EGL_EXT_device_query\n#define EGL_EXT_device_query 1\n#endif /* EGL_EXT_device_query */\n\n#ifndef EGL_EXT_device_query_name\n#define EGL_EXT_device_query_name 1\n#define EGL_RENDERER_EXT                  0x335F\n#endif /* EGL_EXT_device_query_name */\n\n#ifndef EGL_EXT_explicit_device\n#define EGL_EXT_explicit_device 1\n#endif /* EGL_EXT_explicit_device */\n\n#ifndef EGL_EXT_gl_colorspace_bt2020_linear\n#define EGL_EXT_gl_colorspace_bt2020_linear 1\n#define EGL_GL_COLORSPACE_BT2020_LINEAR_EXT 0x333F\n#endif /* EGL_EXT_gl_colorspace_bt2020_linear */\n\n#ifndef EGL_EXT_gl_colorspace_bt2020_pq\n#define EGL_EXT_gl_colorspace_bt2020_pq 1\n#define EGL_GL_COLORSPACE_BT2020_PQ_EXT   0x3340\n#endif /* EGL_EXT_gl_colorspace_bt2020_pq */\n\n#ifndef EGL_EXT_gl_colorspace_display_p3\n#define EGL_EXT_gl_colorspace_display_p3 1\n#define EGL_GL_COLORSPACE_DISPLAY_P3_EXT  0x3363\n#endif /* EGL_EXT_gl_colorspace_display_p3 */\n\n#ifndef EGL_EXT_gl_colorspace_display_p3_linear\n#define EGL_EXT_gl_colorspace_display_p3_linear 1\n#define EGL_GL_COLORSPACE_DISPLAY_P3_LINEAR_EXT 0x3362\n#endif /* EGL_EXT_gl_colorspace_display_p3_linear */\n\n#ifndef EGL_EXT_gl_colorspace_display_p3_passthrough\n#define EGL_EXT_gl_colorspace_display_p3_passthrough 1\n#define EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT 0x3490\n#endif /* EGL_EXT_gl_colorspace_display_p3_passthrough */\n\n#ifndef EGL_EXT_gl_colorspace_scrgb\n#define EGL_EXT_gl_colorspace_scrgb 1\n#define EGL_GL_COLORSPACE_SCRGB_EXT       0x3351\n#endif /* EGL_EXT_gl_colorspace_scrgb */\n\n#ifndef EGL_EXT_gl_colorspace_scrgb_linear\n#define EGL_EXT_gl_colorspace_scrgb_linear 1\n#define EGL_GL_COLORSPACE_SCRGB_LINEAR_EXT 0x3350\n#endif /* EGL_EXT_gl_colorspace_scrgb_linear */\n\n#ifndef EGL_EXT_image_dma_buf_import\n#define EGL_EXT_image_dma_buf_import 1\n#define EGL_LINUX_DMA_BUF_EXT             0x3270\n#define EGL_LINUX_DRM_FOURCC_EXT          0x3271\n#define EGL_DMA_BUF_PLANE0_FD_EXT         0x3272\n#define EGL_DMA_BUF_PLANE0_OFFSET_EXT     0x3273\n#define EGL_DMA_BUF_PLANE0_PITCH_EXT      0x3274\n#define EGL_DMA_BUF_PLANE1_FD_EXT         0x3275\n#define EGL_DMA_BUF_PLANE1_OFFSET_EXT     0x3276\n#define EGL_DMA_BUF_PLANE1_PITCH_EXT      0x3277\n#define EGL_DMA_BUF_PLANE2_FD_EXT         0x3278\n#define EGL_DMA_BUF_PLANE2_OFFSET_EXT     0x3279\n#define EGL_DMA_BUF_PLANE2_PITCH_EXT      0x327A\n#define EGL_YUV_COLOR_SPACE_HINT_EXT      0x327B\n#define EGL_SAMPLE_RANGE_HINT_EXT         0x327C\n#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D\n#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E\n#define EGL_ITU_REC601_EXT                0x327F\n#define EGL_ITU_REC709_EXT                0x3280\n#define EGL_ITU_REC2020_EXT               0x3281\n#define EGL_YUV_FULL_RANGE_EXT            0x3282\n#define EGL_YUV_NARROW_RANGE_EXT          0x3283\n#define EGL_YUV_CHROMA_SITING_0_EXT       0x3284\n#define EGL_YUV_CHROMA_SITING_0_5_EXT     0x3285\n#endif /* EGL_EXT_image_dma_buf_import */\n\n#ifndef EGL_EXT_image_dma_buf_import_modifiers\n#define EGL_EXT_image_dma_buf_import_modifiers 1\n#define EGL_DMA_BUF_PLANE3_FD_EXT         0x3440\n#define EGL_DMA_BUF_PLANE3_OFFSET_EXT     0x3441\n#define EGL_DMA_BUF_PLANE3_PITCH_EXT      0x3442\n#define EGL_DMA_BUF_PLANE0_MODIFIER_LO_EXT 0x3443\n#define EGL_DMA_BUF_PLANE0_MODIFIER_HI_EXT 0x3444\n#define EGL_DMA_BUF_PLANE1_MODIFIER_LO_EXT 0x3445\n#define EGL_DMA_BUF_PLANE1_MODIFIER_HI_EXT 0x3446\n#define EGL_DMA_BUF_PLANE2_MODIFIER_LO_EXT 0x3447\n#define EGL_DMA_BUF_PLANE2_MODIFIER_HI_EXT 0x3448\n#define EGL_DMA_BUF_PLANE3_MODIFIER_LO_EXT 0x3449\n#define EGL_DMA_BUF_PLANE3_MODIFIER_HI_EXT 0x344A\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFFORMATSEXTPROC) (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDMABUFMODIFIERSEXTPROC) (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufFormatsEXT (EGLDisplay dpy, EGLint max_formats, EGLint *formats, EGLint *num_formats);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDmaBufModifiersEXT (EGLDisplay dpy, EGLint format, EGLint max_modifiers, EGLuint64KHR *modifiers, EGLBoolean *external_only, EGLint *num_modifiers);\n#endif\n#endif /* EGL_EXT_image_dma_buf_import_modifiers */\n\n#ifndef EGL_EXT_image_gl_colorspace\n#define EGL_EXT_image_gl_colorspace 1\n#define EGL_GL_COLORSPACE_DEFAULT_EXT     0x314D\n#endif /* EGL_EXT_image_gl_colorspace */\n\n#ifndef EGL_EXT_image_implicit_sync_control\n#define EGL_EXT_image_implicit_sync_control 1\n#define EGL_IMPORT_SYNC_TYPE_EXT          0x3470\n#define EGL_IMPORT_IMPLICIT_SYNC_EXT      0x3471\n#define EGL_IMPORT_EXPLICIT_SYNC_EXT      0x3472\n#endif /* EGL_EXT_image_implicit_sync_control */\n\n#ifndef EGL_EXT_multiview_window\n#define EGL_EXT_multiview_window 1\n#define EGL_MULTIVIEW_VIEW_COUNT_EXT      0x3134\n#endif /* EGL_EXT_multiview_window */\n\n#ifndef EGL_EXT_output_base\n#define EGL_EXT_output_base 1\ntypedef void *EGLOutputLayerEXT;\ntypedef void *EGLOutputPortEXT;\n#define EGL_NO_OUTPUT_LAYER_EXT           EGL_CAST(EGLOutputLayerEXT,0)\n#define EGL_NO_OUTPUT_PORT_EXT            EGL_CAST(EGLOutputPortEXT,0)\n#define EGL_BAD_OUTPUT_LAYER_EXT          0x322D\n#define EGL_BAD_OUTPUT_PORT_EXT           0x322E\n#define EGL_SWAP_INTERVAL_EXT             0x322F\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTLAYERSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETOUTPUTPORTSEXTPROC) (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);\ntypedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTLAYERSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTATTRIBEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);\ntypedef const char *(EGLAPIENTRYP PFNEGLQUERYOUTPUTPORTSTRINGEXTPROC) (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglGetOutputLayersEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputLayerEXT *layers, EGLint max_layers, EGLint *num_layers);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetOutputPortsEXT (EGLDisplay dpy, const EGLAttrib *attrib_list, EGLOutputPortEXT *ports, EGLint max_ports, EGLint *num_ports);\nEGLAPI EGLBoolean EGLAPIENTRY eglOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib value);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputLayerAttribEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint attribute, EGLAttrib *value);\nEGLAPI const char *EGLAPIENTRY eglQueryOutputLayerStringEXT (EGLDisplay dpy, EGLOutputLayerEXT layer, EGLint name);\nEGLAPI EGLBoolean EGLAPIENTRY eglOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib value);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryOutputPortAttribEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint attribute, EGLAttrib *value);\nEGLAPI const char *EGLAPIENTRY eglQueryOutputPortStringEXT (EGLDisplay dpy, EGLOutputPortEXT port, EGLint name);\n#endif\n#endif /* EGL_EXT_output_base */\n\n#ifndef EGL_EXT_output_drm\n#define EGL_EXT_output_drm 1\n#define EGL_DRM_CRTC_EXT                  0x3234\n#define EGL_DRM_PLANE_EXT                 0x3235\n#define EGL_DRM_CONNECTOR_EXT             0x3236\n#endif /* EGL_EXT_output_drm */\n\n#ifndef EGL_EXT_output_openwf\n#define EGL_EXT_output_openwf 1\n#define EGL_OPENWF_PIPELINE_ID_EXT        0x3238\n#define EGL_OPENWF_PORT_ID_EXT            0x3239\n#endif /* EGL_EXT_output_openwf */\n\n#ifndef EGL_EXT_pixel_format_float\n#define EGL_EXT_pixel_format_float 1\n#define EGL_COLOR_COMPONENT_TYPE_EXT      0x3339\n#define EGL_COLOR_COMPONENT_TYPE_FIXED_EXT 0x333A\n#define EGL_COLOR_COMPONENT_TYPE_FLOAT_EXT 0x333B\n#endif /* EGL_EXT_pixel_format_float */\n\n#ifndef EGL_EXT_platform_base\n#define EGL_EXT_platform_base 1\ntypedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMPIXMAPSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLDisplay EGLAPIENTRY eglGetPlatformDisplayEXT (EGLenum platform, void *native_display, const EGLint *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformWindowSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePlatformPixmapSurfaceEXT (EGLDisplay dpy, EGLConfig config, void *native_pixmap, const EGLint *attrib_list);\n#endif\n#endif /* EGL_EXT_platform_base */\n\n#ifndef EGL_EXT_platform_device\n#define EGL_EXT_platform_device 1\n#define EGL_PLATFORM_DEVICE_EXT           0x313F\n#endif /* EGL_EXT_platform_device */\n\n#ifndef EGL_EXT_platform_wayland\n#define EGL_EXT_platform_wayland 1\n#define EGL_PLATFORM_WAYLAND_EXT          0x31D8\n#endif /* EGL_EXT_platform_wayland */\n\n#ifndef EGL_EXT_platform_x11\n#define EGL_EXT_platform_x11 1\n#define EGL_PLATFORM_X11_EXT              0x31D5\n#define EGL_PLATFORM_X11_SCREEN_EXT       0x31D6\n#endif /* EGL_EXT_platform_x11 */\n\n#ifndef EGL_EXT_platform_xcb\n#define EGL_EXT_platform_xcb 1\n#define EGL_PLATFORM_XCB_EXT              0x31DC\n#define EGL_PLATFORM_XCB_SCREEN_EXT       0x31DE\n#endif /* EGL_EXT_platform_xcb */\n\n#ifndef EGL_EXT_present_opaque\n#define EGL_EXT_present_opaque 1\n#define EGL_PRESENT_OPAQUE_EXT            0x31DF\n#endif /* EGL_EXT_present_opaque */\n\n#ifndef EGL_EXT_protected_content\n#define EGL_EXT_protected_content 1\n#define EGL_PROTECTED_CONTENT_EXT         0x32C0\n#endif /* EGL_EXT_protected_content */\n\n#ifndef EGL_EXT_protected_surface\n#define EGL_EXT_protected_surface 1\n#endif /* EGL_EXT_protected_surface */\n\n#ifndef EGL_EXT_stream_consumer_egloutput\n#define EGL_EXT_stream_consumer_egloutput 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerOutputEXT (EGLDisplay dpy, EGLStreamKHR stream, EGLOutputLayerEXT layer);\n#endif\n#endif /* EGL_EXT_stream_consumer_egloutput */\n\n#ifndef EGL_EXT_surface_CTA861_3_metadata\n#define EGL_EXT_surface_CTA861_3_metadata 1\n#define EGL_CTA861_3_MAX_CONTENT_LIGHT_LEVEL_EXT 0x3360\n#define EGL_CTA861_3_MAX_FRAME_AVERAGE_LEVEL_EXT 0x3361\n#endif /* EGL_EXT_surface_CTA861_3_metadata */\n\n#ifndef EGL_EXT_surface_SMPTE2086_metadata\n#define EGL_EXT_surface_SMPTE2086_metadata 1\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_RX_EXT 0x3341\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_RY_EXT 0x3342\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_GX_EXT 0x3343\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_GY_EXT 0x3344\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_BX_EXT 0x3345\n#define EGL_SMPTE2086_DISPLAY_PRIMARY_BY_EXT 0x3346\n#define EGL_SMPTE2086_WHITE_POINT_X_EXT   0x3347\n#define EGL_SMPTE2086_WHITE_POINT_Y_EXT   0x3348\n#define EGL_SMPTE2086_MAX_LUMINANCE_EXT   0x3349\n#define EGL_SMPTE2086_MIN_LUMINANCE_EXT   0x334A\n#define EGL_METADATA_SCALING_EXT          50000\n#endif /* EGL_EXT_surface_SMPTE2086_metadata */\n\n#ifndef EGL_EXT_surface_compression\n#define EGL_EXT_surface_compression 1\n#define EGL_SURFACE_COMPRESSION_EXT       0x34B0\n#define EGL_SURFACE_COMPRESSION_PLANE1_EXT 0x328E\n#define EGL_SURFACE_COMPRESSION_PLANE2_EXT 0x328F\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x34B1\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x34B2\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x34B4\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x34B5\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x34B6\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x34B7\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x34B8\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x34B9\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x34BA\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x34BB\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x34BC\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x34BD\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x34BE\n#define EGL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x34BF\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSUPPORTEDCOMPRESSIONRATESEXTPROC) (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQuerySupportedCompressionRatesEXT (EGLDisplay dpy, EGLConfig config, const EGLAttrib *attrib_list, EGLint *rates, EGLint rate_size, EGLint *num_rates);\n#endif\n#endif /* EGL_EXT_surface_compression */\n\n#ifndef EGL_EXT_swap_buffers_with_damage\n#define EGL_EXT_swap_buffers_with_damage 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC) (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT (EGLDisplay dpy, EGLSurface surface, const EGLint *rects, EGLint n_rects);\n#endif\n#endif /* EGL_EXT_swap_buffers_with_damage */\n\n#ifndef EGL_EXT_sync_reuse\n#define EGL_EXT_sync_reuse 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLUNSIGNALSYNCEXTPROC) (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglUnsignalSyncEXT (EGLDisplay dpy, EGLSync sync, const EGLAttrib *attrib_list);\n#endif\n#endif /* EGL_EXT_sync_reuse */\n\n#ifndef EGL_EXT_yuv_surface\n#define EGL_EXT_yuv_surface 1\n#define EGL_YUV_ORDER_EXT                 0x3301\n#define EGL_YUV_NUMBER_OF_PLANES_EXT      0x3311\n#define EGL_YUV_SUBSAMPLE_EXT             0x3312\n#define EGL_YUV_DEPTH_RANGE_EXT           0x3317\n#define EGL_YUV_CSC_STANDARD_EXT          0x330A\n#define EGL_YUV_PLANE_BPP_EXT             0x331A\n#define EGL_YUV_BUFFER_EXT                0x3300\n#define EGL_YUV_ORDER_YUV_EXT             0x3302\n#define EGL_YUV_ORDER_YVU_EXT             0x3303\n#define EGL_YUV_ORDER_YUYV_EXT            0x3304\n#define EGL_YUV_ORDER_UYVY_EXT            0x3305\n#define EGL_YUV_ORDER_YVYU_EXT            0x3306\n#define EGL_YUV_ORDER_VYUY_EXT            0x3307\n#define EGL_YUV_ORDER_AYUV_EXT            0x3308\n#define EGL_YUV_SUBSAMPLE_4_2_0_EXT       0x3313\n#define EGL_YUV_SUBSAMPLE_4_2_2_EXT       0x3314\n#define EGL_YUV_SUBSAMPLE_4_4_4_EXT       0x3315\n#define EGL_YUV_DEPTH_RANGE_LIMITED_EXT   0x3318\n#define EGL_YUV_DEPTH_RANGE_FULL_EXT      0x3319\n#define EGL_YUV_CSC_STANDARD_601_EXT      0x330B\n#define EGL_YUV_CSC_STANDARD_709_EXT      0x330C\n#define EGL_YUV_CSC_STANDARD_2020_EXT     0x330D\n#define EGL_YUV_PLANE_BPP_0_EXT           0x331B\n#define EGL_YUV_PLANE_BPP_8_EXT           0x331C\n#define EGL_YUV_PLANE_BPP_10_EXT          0x331D\n#endif /* EGL_EXT_yuv_surface */\n\n#ifndef EGL_HI_clientpixmap\n#define EGL_HI_clientpixmap 1\nstruct EGLClientPixmapHI {\n    void  *pData;\n    EGLint iWidth;\n    EGLint iHeight;\n    EGLint iStride;\n};\n#define EGL_CLIENT_PIXMAP_POINTER_HI      0x8F74\ntypedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI *pixmap);\n#endif\n#endif /* EGL_HI_clientpixmap */\n\n#ifndef EGL_HI_colorformats\n#define EGL_HI_colorformats 1\n#define EGL_COLOR_FORMAT_HI               0x8F70\n#define EGL_COLOR_RGB_HI                  0x8F71\n#define EGL_COLOR_RGBA_HI                 0x8F72\n#define EGL_COLOR_ARGB_HI                 0x8F73\n#endif /* EGL_HI_colorformats */\n\n#ifndef EGL_IMG_context_priority\n#define EGL_IMG_context_priority 1\n#define EGL_CONTEXT_PRIORITY_LEVEL_IMG    0x3100\n#define EGL_CONTEXT_PRIORITY_HIGH_IMG     0x3101\n#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG   0x3102\n#define EGL_CONTEXT_PRIORITY_LOW_IMG      0x3103\n#endif /* EGL_IMG_context_priority */\n\n#ifndef EGL_IMG_image_plane_attribs\n#define EGL_IMG_image_plane_attribs 1\n#define EGL_NATIVE_BUFFER_MULTIPLANE_SEPARATE_IMG 0x3105\n#define EGL_NATIVE_BUFFER_PLANE_OFFSET_IMG 0x3106\n#endif /* EGL_IMG_image_plane_attribs */\n\n#ifndef EGL_MESA_drm_image\n#define EGL_MESA_drm_image 1\n#define EGL_DRM_BUFFER_FORMAT_MESA        0x31D0\n#define EGL_DRM_BUFFER_USE_MESA           0x31D1\n#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2\n#define EGL_DRM_BUFFER_MESA               0x31D3\n#define EGL_DRM_BUFFER_STRIDE_MESA        0x31D4\n#define EGL_DRM_BUFFER_USE_SCANOUT_MESA   0x00000001\n#define EGL_DRM_BUFFER_USE_SHARE_MESA     0x00000002\n#define EGL_DRM_BUFFER_USE_CURSOR_MESA    0x00000004\ntypedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA (EGLDisplay dpy, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);\n#endif\n#endif /* EGL_MESA_drm_image */\n\n#ifndef EGL_MESA_image_dma_buf_export\n#define EGL_MESA_image_dma_buf_export 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEQUERYMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLEXPORTDMABUFIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageQueryMESA (EGLDisplay dpy, EGLImageKHR image, int *fourcc, int *num_planes, EGLuint64KHR *modifiers);\nEGLAPI EGLBoolean EGLAPIENTRY eglExportDMABUFImageMESA (EGLDisplay dpy, EGLImageKHR image, int *fds, EGLint *strides, EGLint *offsets);\n#endif\n#endif /* EGL_MESA_image_dma_buf_export */\n\n#ifndef EGL_MESA_platform_gbm\n#define EGL_MESA_platform_gbm 1\n#define EGL_PLATFORM_GBM_MESA             0x31D7\n#endif /* EGL_MESA_platform_gbm */\n\n#ifndef EGL_MESA_platform_surfaceless\n#define EGL_MESA_platform_surfaceless 1\n#define EGL_PLATFORM_SURFACELESS_MESA     0x31DD\n#endif /* EGL_MESA_platform_surfaceless */\n\n#ifndef EGL_MESA_query_driver\n#define EGL_MESA_query_driver 1\ntypedef char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERCONFIGPROC) (EGLDisplay dpy);\ntypedef const char *(EGLAPIENTRYP PFNEGLGETDISPLAYDRIVERNAMEPROC) (EGLDisplay dpy);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI char *EGLAPIENTRY eglGetDisplayDriverConfig (EGLDisplay dpy);\nEGLAPI const char *EGLAPIENTRY eglGetDisplayDriverName (EGLDisplay dpy);\n#endif\n#endif /* EGL_MESA_query_driver */\n\n#ifndef EGL_NOK_swap_region\n#define EGL_NOK_swap_region 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);\n#endif\n#endif /* EGL_NOK_swap_region */\n\n#ifndef EGL_NOK_swap_region2\n#define EGL_NOK_swap_region2 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGION2NOKPROC) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegion2NOK (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint *rects);\n#endif\n#endif /* EGL_NOK_swap_region2 */\n\n#ifndef EGL_NOK_texture_from_pixmap\n#define EGL_NOK_texture_from_pixmap 1\n#define EGL_Y_INVERTED_NOK                0x307F\n#endif /* EGL_NOK_texture_from_pixmap */\n\n#ifndef EGL_NV_3dvision_surface\n#define EGL_NV_3dvision_surface 1\n#define EGL_AUTO_STEREO_NV                0x3136\n#endif /* EGL_NV_3dvision_surface */\n\n#ifndef EGL_NV_context_priority_realtime\n#define EGL_NV_context_priority_realtime 1\n#define EGL_CONTEXT_PRIORITY_REALTIME_NV  0x3357\n#endif /* EGL_NV_context_priority_realtime */\n\n#ifndef EGL_NV_coverage_sample\n#define EGL_NV_coverage_sample 1\n#define EGL_COVERAGE_BUFFERS_NV           0x30E0\n#define EGL_COVERAGE_SAMPLES_NV           0x30E1\n#endif /* EGL_NV_coverage_sample */\n\n#ifndef EGL_NV_coverage_sample_resolve\n#define EGL_NV_coverage_sample_resolve 1\n#define EGL_COVERAGE_SAMPLE_RESOLVE_NV    0x3131\n#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132\n#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133\n#endif /* EGL_NV_coverage_sample_resolve */\n\n#ifndef EGL_NV_cuda_event\n#define EGL_NV_cuda_event 1\n#define EGL_CUDA_EVENT_HANDLE_NV          0x323B\n#define EGL_SYNC_CUDA_EVENT_NV            0x323C\n#define EGL_SYNC_CUDA_EVENT_COMPLETE_NV   0x323D\n#endif /* EGL_NV_cuda_event */\n\n#ifndef EGL_NV_depth_nonlinear\n#define EGL_NV_depth_nonlinear 1\n#define EGL_DEPTH_ENCODING_NV             0x30E2\n#define EGL_DEPTH_ENCODING_NONE_NV        0\n#define EGL_DEPTH_ENCODING_NONLINEAR_NV   0x30E3\n#endif /* EGL_NV_depth_nonlinear */\n\n#ifndef EGL_NV_device_cuda\n#define EGL_NV_device_cuda 1\n#define EGL_CUDA_DEVICE_NV                0x323A\n#endif /* EGL_NV_device_cuda */\n\n#ifndef EGL_NV_native_query\n#define EGL_NV_native_query 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC) (EGLDisplay dpy, EGLNativeDisplayType *display_id);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC) (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV (EGLDisplay dpy, EGLNativeDisplayType *display_id);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV (EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV (EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);\n#endif\n#endif /* EGL_NV_native_query */\n\n#ifndef EGL_NV_post_convert_rounding\n#define EGL_NV_post_convert_rounding 1\n#endif /* EGL_NV_post_convert_rounding */\n\n#ifndef EGL_NV_post_sub_buffer\n#define EGL_NV_post_sub_buffer 1\n#define EGL_POST_SUB_BUFFER_SUPPORTED_NV  0x30BE\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);\n#endif\n#endif /* EGL_NV_post_sub_buffer */\n\n#ifndef EGL_NV_quadruple_buffer\n#define EGL_NV_quadruple_buffer 1\n#define EGL_QUADRUPLE_BUFFER_NV           0x3231\n#endif /* EGL_NV_quadruple_buffer */\n\n#ifndef EGL_NV_robustness_video_memory_purge\n#define EGL_NV_robustness_video_memory_purge 1\n#define EGL_GENERATE_RESET_ON_VIDEO_MEMORY_PURGE_NV 0x334C\n#endif /* EGL_NV_robustness_video_memory_purge */\n\n#ifndef EGL_NV_stream_consumer_eglimage\n#define EGL_NV_stream_consumer_eglimage 1\n#define EGL_STREAM_CONSUMER_IMAGE_NV      0x3373\n#define EGL_STREAM_IMAGE_ADD_NV           0x3374\n#define EGL_STREAM_IMAGE_REMOVE_NV        0x3375\n#define EGL_STREAM_IMAGE_AVAILABLE_NV     0x3376\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMIMAGECONSUMERCONNECTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);\ntypedef EGLint (EGLAPIENTRYP PFNEGLQUERYSTREAMCONSUMEREVENTNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMACQUIREIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMRELEASEIMAGENVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamImageConsumerConnectNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint num_modifiers, const EGLuint64KHR *modifiers, const EGLAttrib *attrib_list);\nEGLAPI EGLint EGLAPIENTRY eglQueryStreamConsumerEventNV (EGLDisplay dpy, EGLStreamKHR stream, EGLTime timeout, EGLenum *event, EGLAttrib *aux);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamAcquireImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage *pImage, EGLSync sync);\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamReleaseImageNV (EGLDisplay dpy, EGLStreamKHR stream, EGLImage image, EGLSync sync);\n#endif\n#endif /* EGL_NV_stream_consumer_eglimage */\n\n#ifndef EGL_NV_stream_consumer_gltexture_yuv\n#define EGL_NV_stream_consumer_gltexture_yuv 1\n#define EGL_YUV_PLANE0_TEXTURE_UNIT_NV    0x332C\n#define EGL_YUV_PLANE1_TEXTURE_UNIT_NV    0x332D\n#define EGL_YUV_PLANE2_TEXTURE_UNIT_NV    0x332E\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALATTRIBSNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalAttribsNV (EGLDisplay dpy, EGLStreamKHR stream, const EGLAttrib *attrib_list);\n#endif\n#endif /* EGL_NV_stream_consumer_gltexture_yuv */\n\n#ifndef EGL_NV_stream_cross_display\n#define EGL_NV_stream_cross_display 1\n#define EGL_STREAM_CROSS_DISPLAY_NV       0x334E\n#endif /* EGL_NV_stream_cross_display */\n\n#ifndef EGL_NV_stream_cross_object\n#define EGL_NV_stream_cross_object 1\n#define EGL_STREAM_CROSS_OBJECT_NV        0x334D\n#endif /* EGL_NV_stream_cross_object */\n\n#ifndef EGL_NV_stream_cross_partition\n#define EGL_NV_stream_cross_partition 1\n#define EGL_STREAM_CROSS_PARTITION_NV     0x323F\n#endif /* EGL_NV_stream_cross_partition */\n\n#ifndef EGL_NV_stream_cross_process\n#define EGL_NV_stream_cross_process 1\n#define EGL_STREAM_CROSS_PROCESS_NV       0x3245\n#endif /* EGL_NV_stream_cross_process */\n\n#ifndef EGL_NV_stream_cross_system\n#define EGL_NV_stream_cross_system 1\n#define EGL_STREAM_CROSS_SYSTEM_NV        0x334F\n#endif /* EGL_NV_stream_cross_system */\n\n#ifndef EGL_NV_stream_dma\n#define EGL_NV_stream_dma 1\n#define EGL_STREAM_DMA_NV                 0x3371\n#define EGL_STREAM_DMA_SERVER_NV          0x3372\n#endif /* EGL_NV_stream_dma */\n\n#ifndef EGL_NV_stream_fifo_next\n#define EGL_NV_stream_fifo_next 1\n#define EGL_PENDING_FRAME_NV              0x3329\n#define EGL_STREAM_TIME_PENDING_NV        0x332A\n#endif /* EGL_NV_stream_fifo_next */\n\n#ifndef EGL_NV_stream_fifo_synchronous\n#define EGL_NV_stream_fifo_synchronous 1\n#define EGL_STREAM_FIFO_SYNCHRONOUS_NV    0x3336\n#endif /* EGL_NV_stream_fifo_synchronous */\n\n#ifndef EGL_NV_stream_flush\n#define EGL_NV_stream_flush 1\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSTREAMFLUSHNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglStreamFlushNV (EGLDisplay dpy, EGLStreamKHR stream);\n#endif\n#endif /* EGL_NV_stream_flush */\n\n#ifndef EGL_NV_stream_frame_limits\n#define EGL_NV_stream_frame_limits 1\n#define EGL_PRODUCER_MAX_FRAME_HINT_NV    0x3337\n#define EGL_CONSUMER_MAX_FRAME_HINT_NV    0x3338\n#endif /* EGL_NV_stream_frame_limits */\n\n#ifndef EGL_NV_stream_metadata\n#define EGL_NV_stream_metadata 1\n#define EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250\n#define EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251\n#define EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252\n#define EGL_PRODUCER_METADATA_NV          0x3253\n#define EGL_CONSUMER_METADATA_NV          0x3254\n#define EGL_PENDING_METADATA_NV           0x3328\n#define EGL_METADATA0_SIZE_NV             0x3255\n#define EGL_METADATA1_SIZE_NV             0x3256\n#define EGL_METADATA2_SIZE_NV             0x3257\n#define EGL_METADATA3_SIZE_NV             0x3258\n#define EGL_METADATA0_TYPE_NV             0x3259\n#define EGL_METADATA1_TYPE_NV             0x325A\n#define EGL_METADATA2_TYPE_NV             0x325B\n#define EGL_METADATA3_TYPE_NV             0x325C\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBNVPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYSTREAMMETADATANVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryDisplayAttribNV (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);\nEGLAPI EGLBoolean EGLAPIENTRY eglSetStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLint n, EGLint offset, EGLint size, const void *data);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamMetadataNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum name, EGLint n, EGLint offset, EGLint size, void *data);\n#endif\n#endif /* EGL_NV_stream_metadata */\n\n#ifndef EGL_NV_stream_origin\n#define EGL_NV_stream_origin 1\n#define EGL_STREAM_FRAME_ORIGIN_X_NV      0x3366\n#define EGL_STREAM_FRAME_ORIGIN_Y_NV      0x3367\n#define EGL_STREAM_FRAME_MAJOR_AXIS_NV    0x3368\n#define EGL_CONSUMER_AUTO_ORIENTATION_NV  0x3369\n#define EGL_PRODUCER_AUTO_ORIENTATION_NV  0x336A\n#define EGL_LEFT_NV                       0x336B\n#define EGL_RIGHT_NV                      0x336C\n#define EGL_TOP_NV                        0x336D\n#define EGL_BOTTOM_NV                     0x336E\n#define EGL_X_AXIS_NV                     0x336F\n#define EGL_Y_AXIS_NV                     0x3370\n#endif /* EGL_NV_stream_origin */\n\n#ifndef EGL_NV_stream_remote\n#define EGL_NV_stream_remote 1\n#define EGL_STREAM_STATE_INITIALIZING_NV  0x3240\n#define EGL_STREAM_TYPE_NV                0x3241\n#define EGL_STREAM_PROTOCOL_NV            0x3242\n#define EGL_STREAM_ENDPOINT_NV            0x3243\n#define EGL_STREAM_LOCAL_NV               0x3244\n#define EGL_STREAM_PRODUCER_NV            0x3247\n#define EGL_STREAM_CONSUMER_NV            0x3248\n#define EGL_STREAM_PROTOCOL_FD_NV         0x3246\n#endif /* EGL_NV_stream_remote */\n\n#ifndef EGL_NV_stream_reset\n#define EGL_NV_stream_reset 1\n#define EGL_SUPPORT_RESET_NV              0x3334\n#define EGL_SUPPORT_REUSE_NV              0x3335\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLRESETSTREAMNVPROC) (EGLDisplay dpy, EGLStreamKHR stream);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglResetStreamNV (EGLDisplay dpy, EGLStreamKHR stream);\n#endif\n#endif /* EGL_NV_stream_reset */\n\n#ifndef EGL_NV_stream_socket\n#define EGL_NV_stream_socket 1\n#define EGL_STREAM_PROTOCOL_SOCKET_NV     0x324B\n#define EGL_SOCKET_HANDLE_NV              0x324C\n#define EGL_SOCKET_TYPE_NV                0x324D\n#endif /* EGL_NV_stream_socket */\n\n#ifndef EGL_NV_stream_socket_inet\n#define EGL_NV_stream_socket_inet 1\n#define EGL_SOCKET_TYPE_INET_NV           0x324F\n#endif /* EGL_NV_stream_socket_inet */\n\n#ifndef EGL_NV_stream_socket_unix\n#define EGL_NV_stream_socket_unix 1\n#define EGL_SOCKET_TYPE_UNIX_NV           0x324E\n#endif /* EGL_NV_stream_socket_unix */\n\n#ifndef EGL_NV_stream_sync\n#define EGL_NV_stream_sync 1\n#define EGL_SYNC_NEW_FRAME_NV             0x321F\ntypedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESTREAMSYNCNVPROC) (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSyncKHR EGLAPIENTRY eglCreateStreamSyncNV (EGLDisplay dpy, EGLStreamKHR stream, EGLenum type, const EGLint *attrib_list);\n#endif\n#endif /* EGL_NV_stream_sync */\n\n#ifndef EGL_NV_sync\n#define EGL_NV_sync 1\ntypedef void *EGLSyncNV;\ntypedef khronos_utime_nanoseconds_t EGLTimeNV;\n#ifdef KHRONOS_SUPPORT_INT64\n#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6\n#define EGL_SYNC_STATUS_NV                0x30E7\n#define EGL_SIGNALED_NV                   0x30E8\n#define EGL_UNSIGNALED_NV                 0x30E9\n#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV    0x0001\n#define EGL_FOREVER_NV                    0xFFFFFFFFFFFFFFFFull\n#define EGL_ALREADY_SIGNALED_NV           0x30EA\n#define EGL_TIMEOUT_EXPIRED_NV            0x30EB\n#define EGL_CONDITION_SATISFIED_NV        0x30EC\n#define EGL_SYNC_TYPE_NV                  0x30ED\n#define EGL_SYNC_CONDITION_NV             0x30EE\n#define EGL_SYNC_FENCE_NV                 0x30EF\n#define EGL_NO_SYNC_NV                    EGL_CAST(EGLSyncNV,0)\ntypedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);\ntypedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);\nEGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV (EGLSyncNV sync);\nEGLAPI EGLBoolean EGLAPIENTRY eglFenceNV (EGLSyncNV sync);\nEGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);\nEGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);\nEGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_NV_sync */\n\n#ifndef EGL_NV_system_time\n#define EGL_NV_system_time 1\ntypedef khronos_utime_nanoseconds_t EGLuint64NV;\n#ifdef KHRONOS_SUPPORT_INT64\ntypedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);\ntypedef EGLuint64NV (EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV (void);\nEGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV (void);\n#endif\n#endif /* KHRONOS_SUPPORT_INT64 */\n#endif /* EGL_NV_system_time */\n\n#ifndef EGL_NV_triple_buffer\n#define EGL_NV_triple_buffer 1\n#define EGL_TRIPLE_BUFFER_NV              0x3230\n#endif /* EGL_NV_triple_buffer */\n\n#ifndef EGL_TIZEN_image_native_buffer\n#define EGL_TIZEN_image_native_buffer 1\n#define EGL_NATIVE_BUFFER_TIZEN           0x32A0\n#endif /* EGL_TIZEN_image_native_buffer */\n\n#ifndef EGL_TIZEN_image_native_surface\n#define EGL_TIZEN_image_native_surface 1\n#define EGL_NATIVE_SURFACE_TIZEN          0x32A1\n#endif /* EGL_TIZEN_image_native_surface */\n\n#ifndef EGL_WL_bind_wayland_display\n#define EGL_WL_bind_wayland_display 1\n#define PFNEGLBINDWAYLANDDISPLAYWL PFNEGLBINDWAYLANDDISPLAYWLPROC\n#define PFNEGLUNBINDWAYLANDDISPLAYWL PFNEGLUNBINDWAYLANDDISPLAYWLPROC\n#define PFNEGLQUERYWAYLANDBUFFERWL PFNEGLQUERYWAYLANDBUFFERWLPROC\nstruct wl_display;\nstruct wl_resource;\n#define EGL_WAYLAND_BUFFER_WL             0x31D5\n#define EGL_WAYLAND_PLANE_WL              0x31D6\n#define EGL_TEXTURE_Y_U_V_WL              0x31D7\n#define EGL_TEXTURE_Y_UV_WL               0x31D8\n#define EGL_TEXTURE_Y_XUXV_WL             0x31D9\n#define EGL_TEXTURE_EXTERNAL_WL           0x31DA\n#define EGL_WAYLAND_Y_INVERTED_WL         0x31DB\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWLPROC) (EGLDisplay dpy, struct wl_display *display);\ntypedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYWAYLANDBUFFERWLPROC) (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI EGLBoolean EGLAPIENTRY eglBindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);\nEGLAPI EGLBoolean EGLAPIENTRY eglUnbindWaylandDisplayWL (EGLDisplay dpy, struct wl_display *display);\nEGLAPI EGLBoolean EGLAPIENTRY eglQueryWaylandBufferWL (EGLDisplay dpy, struct wl_resource *buffer, EGLint attribute, EGLint *value);\n#endif\n#endif /* EGL_WL_bind_wayland_display */\n\n#ifndef EGL_WL_create_wayland_buffer_from_image\n#define EGL_WL_create_wayland_buffer_from_image 1\n#define PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWL PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC\nstruct wl_buffer;\ntypedef struct wl_buffer *(EGLAPIENTRYP PFNEGLCREATEWAYLANDBUFFERFROMIMAGEWLPROC) (EGLDisplay dpy, EGLImageKHR image);\n#ifdef EGL_EGLEXT_PROTOTYPES\nEGLAPI struct wl_buffer *EGLAPIENTRY eglCreateWaylandBufferFromImageWL (EGLDisplay dpy, EGLImageKHR image);\n#endif\n#endif /* EGL_WL_create_wayland_buffer_from_image */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __eglext_h_ */\n\n#endif /* _MSC_VER */\n"
  },
  {
    "path": "libraries/sdl2/SDL_endian.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_endian.h\n *\n *  Functions for reading and writing endian-specific values\n */\n\n#ifndef SDL_endian_h_\n#define SDL_endian_h_\n\n#include \"SDL_stdinc.h\"\n\n#if defined(_MSC_VER) && (_MSC_VER >= 1400)\n/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version,\n   so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */\n#ifdef __clang__\n#ifndef __PRFCHWINTRIN_H\n#define __PRFCHWINTRIN_H\nstatic __inline__ void __attribute__((__always_inline__, __nodebug__))\n_m_prefetch(void *__P)\n{\n  __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */);\n}\n#endif /* __PRFCHWINTRIN_H */\n#endif /* __clang__ */\n\n#include <intrin.h>\n#endif\n\n/**\n *  \\name The two types of endianness\n */\n/* @{ */\n#define SDL_LIL_ENDIAN  1234\n#define SDL_BIG_ENDIAN  4321\n/* @} */\n\n#ifndef SDL_BYTEORDER           /* Not defined in SDL_config.h? */\n#ifdef __linux__\n#include <endian.h>\n#define SDL_BYTEORDER  __BYTE_ORDER\n#elif defined(__OpenBSD__) || defined(__DragonFly__)\n#include <endian.h>\n#define SDL_BYTEORDER  BYTE_ORDER\n#elif defined(__FreeBSD__) || defined(__NetBSD__)\n#include <sys/endian.h>\n#define SDL_BYTEORDER  BYTE_ORDER\n/* predefs from newer gcc and clang versions: */\n#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__)\n#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)\n#define SDL_BYTEORDER   SDL_LIL_ENDIAN\n#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)\n#define SDL_BYTEORDER   SDL_BIG_ENDIAN\n#else\n#error Unsupported endianness\n#endif /**/\n#else\n#if defined(__hppa__) || \\\n    defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \\\n    (defined(__MIPS__) && defined(__MIPSEB__)) || \\\n    defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \\\n    defined(__sparc__)\n#define SDL_BYTEORDER   SDL_BIG_ENDIAN\n#else\n#define SDL_BYTEORDER   SDL_LIL_ENDIAN\n#endif\n#endif /* __linux__ */\n#endif /* !SDL_BYTEORDER */\n\n#ifndef SDL_FLOATWORDORDER           /* Not defined in SDL_config.h? */\n/* predefs from newer gcc versions: */\n#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__)\n#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__)\n#define SDL_FLOATWORDORDER   SDL_LIL_ENDIAN\n#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__)\n#define SDL_FLOATWORDORDER   SDL_BIG_ENDIAN\n#else\n#error Unsupported endianness\n#endif /**/\n#elif defined(__MAVERICK__)\n/* For Maverick, float words are always little-endian. */\n#define SDL_FLOATWORDORDER   SDL_LIL_ENDIAN\n#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__)\n/* For FPA, float words are always big-endian. */\n#define SDL_FLOATWORDORDER   SDL_BIG_ENDIAN\n#else\n/* By default, assume that floats words follow the memory system mode. */\n#define SDL_FLOATWORDORDER   SDL_BYTEORDER\n#endif /* __FLOAT_WORD_ORDER__ */\n#endif /* !SDL_FLOATWORDORDER */\n\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\file SDL_endian.h\n */\n\n/* various modern compilers may have builtin swap */\n#if defined(__GNUC__) || defined(__clang__)\n#   define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \\\n        (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))\n#   define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \\\n        (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))\n#   define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \\\n        (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))\n\n    /* this one is broken */\n#   define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95)\n#else\n#   define HAS_BUILTIN_BSWAP16 0\n#   define HAS_BUILTIN_BSWAP32 0\n#   define HAS_BUILTIN_BSWAP64 0\n#   define HAS_BROKEN_BSWAP 0\n#endif\n\n#if HAS_BUILTIN_BSWAP16\n#define SDL_Swap16(x) __builtin_bswap16(x)\n#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)\n#pragma intrinsic(_byteswap_ushort)\n#define SDL_Swap16(x) _byteswap_ushort(x)\n#elif defined(__i386__) && !HAS_BROKEN_BSWAP\nSDL_FORCE_INLINE Uint16\nSDL_Swap16(Uint16 x)\n{\n  __asm__(\"xchgb %b0,%h0\": \"=q\"(x):\"0\"(x));\n    return x;\n}\n#elif defined(__x86_64__)\nSDL_FORCE_INLINE Uint16\nSDL_Swap16(Uint16 x)\n{\n  __asm__(\"xchgb %b0,%h0\": \"=Q\"(x):\"0\"(x));\n    return x;\n}\n#elif (defined(__powerpc__) || defined(__ppc__))\nSDL_FORCE_INLINE Uint16\nSDL_Swap16(Uint16 x)\n{\n    int result;\n\n  __asm__(\"rlwimi %0,%2,8,16,23\": \"=&r\"(result):\"0\"(x >> 8), \"r\"(x));\n    return (Uint16)result;\n}\n#elif (defined(__m68k__) && !defined(__mcoldfire__))\nSDL_FORCE_INLINE Uint16\nSDL_Swap16(Uint16 x)\n{\n  __asm__(\"rorw #8,%0\": \"=d\"(x): \"0\"(x):\"cc\");\n    return x;\n}\n#elif defined(__WATCOMC__) && defined(__386__)\nextern __inline Uint16 SDL_Swap16(Uint16);\n#pragma aux SDL_Swap16 = \\\n  \"xchg al, ah\" \\\n  parm   [ax]   \\\n  modify [ax];\n#else\nSDL_FORCE_INLINE Uint16\nSDL_Swap16(Uint16 x)\n{\n    return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));\n}\n#endif\n\n#if HAS_BUILTIN_BSWAP32\n#define SDL_Swap32(x) __builtin_bswap32(x)\n#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)\n#pragma intrinsic(_byteswap_ulong)\n#define SDL_Swap32(x) _byteswap_ulong(x)\n#elif defined(__i386__) && !HAS_BROKEN_BSWAP\nSDL_FORCE_INLINE Uint32\nSDL_Swap32(Uint32 x)\n{\n  __asm__(\"bswap %0\": \"=r\"(x):\"0\"(x));\n    return x;\n}\n#elif defined(__x86_64__)\nSDL_FORCE_INLINE Uint32\nSDL_Swap32(Uint32 x)\n{\n  __asm__(\"bswapl %0\": \"=r\"(x):\"0\"(x));\n    return x;\n}\n#elif (defined(__powerpc__) || defined(__ppc__))\nSDL_FORCE_INLINE Uint32\nSDL_Swap32(Uint32 x)\n{\n    Uint32 result;\n\n  __asm__(\"rlwimi %0,%2,24,16,23\": \"=&r\"(result): \"0\" (x>>24),  \"r\"(x));\n  __asm__(\"rlwimi %0,%2,8,8,15\"  : \"=&r\"(result): \"0\" (result), \"r\"(x));\n  __asm__(\"rlwimi %0,%2,24,0,7\"  : \"=&r\"(result): \"0\" (result), \"r\"(x));\n    return result;\n}\n#elif (defined(__m68k__) && !defined(__mcoldfire__))\nSDL_FORCE_INLINE Uint32\nSDL_Swap32(Uint32 x)\n{\n  __asm__(\"rorw #8,%0\\n\\tswap %0\\n\\trorw #8,%0\": \"=d\"(x): \"0\"(x):\"cc\");\n    return x;\n}\n#elif defined(__WATCOMC__) && defined(__386__)\nextern __inline Uint32 SDL_Swap32(Uint32);\n#pragma aux SDL_Swap32 = \\\n  \"bswap eax\"  \\\n  parm   [eax] \\\n  modify [eax];\n#else\nSDL_FORCE_INLINE Uint32\nSDL_Swap32(Uint32 x)\n{\n    return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |\n                                    ((x >> 8) & 0x0000FF00) | (x >> 24)));\n}\n#endif\n\n#if HAS_BUILTIN_BSWAP64\n#define SDL_Swap64(x) __builtin_bswap64(x)\n#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL)\n#pragma intrinsic(_byteswap_uint64)\n#define SDL_Swap64(x) _byteswap_uint64(x)\n#elif defined(__i386__) && !HAS_BROKEN_BSWAP\nSDL_FORCE_INLINE Uint64\nSDL_Swap64(Uint64 x)\n{\n    union {\n        struct {\n            Uint32 a, b;\n        } s;\n        Uint64 u;\n    } v;\n    v.u = x;\n  __asm__(\"bswapl %0 ; bswapl %1 ; xchgl %0,%1\"\n          : \"=r\"(v.s.a), \"=r\"(v.s.b)\n          : \"0\" (v.s.a),  \"1\"(v.s.b));\n    return v.u;\n}\n#elif defined(__x86_64__)\nSDL_FORCE_INLINE Uint64\nSDL_Swap64(Uint64 x)\n{\n  __asm__(\"bswapq %0\": \"=r\"(x):\"0\"(x));\n    return x;\n}\n#elif defined(__WATCOMC__) && defined(__386__)\nextern __inline Uint64 SDL_Swap64(Uint64);\n#pragma aux SDL_Swap64 = \\\n  \"bswap eax\"     \\\n  \"bswap edx\"     \\\n  \"xchg eax,edx\"  \\\n  parm [eax edx]  \\\n  modify [eax edx];\n#else\nSDL_FORCE_INLINE Uint64\nSDL_Swap64(Uint64 x)\n{\n    Uint32 hi, lo;\n\n    /* Separate into high and low 32-bit values and swap them */\n    lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);\n    x >>= 32;\n    hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);\n    x = SDL_Swap32(lo);\n    x <<= 32;\n    x |= SDL_Swap32(hi);\n    return (x);\n}\n#endif\n\n\nSDL_FORCE_INLINE float\nSDL_SwapFloat(float x)\n{\n    union {\n        float f;\n        Uint32 ui32;\n    } swapper;\n    swapper.f = x;\n    swapper.ui32 = SDL_Swap32(swapper.ui32);\n    return swapper.f;\n}\n\n/* remove extra macros */\n#undef HAS_BROKEN_BSWAP\n#undef HAS_BUILTIN_BSWAP16\n#undef HAS_BUILTIN_BSWAP32\n#undef HAS_BUILTIN_BSWAP64\n\n/**\n *  \\name Swap to native\n *  Byteswap item from the specified endianness to the native endianness.\n */\n/* @{ */\n#if SDL_BYTEORDER == SDL_LIL_ENDIAN\n#define SDL_SwapLE16(X)     (X)\n#define SDL_SwapLE32(X)     (X)\n#define SDL_SwapLE64(X)     (X)\n#define SDL_SwapFloatLE(X)  (X)\n#define SDL_SwapBE16(X)     SDL_Swap16(X)\n#define SDL_SwapBE32(X)     SDL_Swap32(X)\n#define SDL_SwapBE64(X)     SDL_Swap64(X)\n#define SDL_SwapFloatBE(X)  SDL_SwapFloat(X)\n#else\n#define SDL_SwapLE16(X)     SDL_Swap16(X)\n#define SDL_SwapLE32(X)     SDL_Swap32(X)\n#define SDL_SwapLE64(X)     SDL_Swap64(X)\n#define SDL_SwapFloatLE(X)  SDL_SwapFloat(X)\n#define SDL_SwapBE16(X)     (X)\n#define SDL_SwapBE32(X)     (X)\n#define SDL_SwapBE64(X)     (X)\n#define SDL_SwapFloatBE(X)  (X)\n#endif\n/* @} *//* Swap to native */\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_endian_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_error.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_error.h\n *\n *  Simple error message routines for SDL.\n */\n\n#ifndef SDL_error_h_\n#define SDL_error_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Public functions */\n\n\n/**\n * Set the SDL error message for the current thread.\n *\n * Calling this function will replace any previous error message that was set.\n *\n * This function always returns -1, since SDL frequently uses -1 to signify an\n * failing result, leading to this idiom:\n *\n * ```c\n * if (error_code) {\n *     return SDL_SetError(\"This operation has failed: %d\", error_code);\n * }\n * ```\n *\n * \\param fmt a printf()-style message format string\n * \\param ... additional parameters matching % tokens in the `fmt` string, if\n *            any\n * \\returns always -1.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ClearError\n * \\sa SDL_GetError\n */\nextern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);\n\n/**\n * Retrieve a message about the last error that occurred on the current\n * thread.\n *\n * It is possible for multiple errors to occur before calling SDL_GetError().\n * Only the last error is returned.\n *\n * The message is only applicable when an SDL function has signaled an error.\n * You must check the return values of SDL function calls to determine when to\n * appropriately call SDL_GetError(). You should *not* use the results of\n * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set\n * an error string even when reporting success.\n *\n * SDL will *not* clear the error string for successful API calls. You *must*\n * check return values for failure cases before you can assume the error\n * string applies.\n *\n * Error strings are set per-thread, so an error set in a different thread\n * will not interfere with the current thread's operation.\n *\n * The returned string is internally allocated and must not be freed by the\n * application.\n *\n * \\returns a message with information about the specific error that occurred,\n *          or an empty string if there hasn't been an error message set since\n *          the last call to SDL_ClearError(). The message is only applicable\n *          when an SDL function has signaled an error. You must check the\n *          return values of SDL function calls to determine when to\n *          appropriately call SDL_GetError().\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ClearError\n * \\sa SDL_SetError\n */\nextern DECLSPEC const char *SDLCALL SDL_GetError(void);\n\n/**\n * Get the last error message that was set for the current thread.\n *\n * This allows the caller to copy the error string into a provided buffer, but\n * otherwise operates exactly the same as SDL_GetError().\n *\n * \\param errstr A buffer to fill with the last error message that was set for\n *               the current thread\n * \\param maxlen The size of the buffer pointed to by the errstr parameter\n * \\returns the pointer passed in as the `errstr` parameter.\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_GetError\n */\nextern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen);\n\n/**\n * Clear any previous error message for this thread.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetError\n * \\sa SDL_SetError\n */\nextern DECLSPEC void SDLCALL SDL_ClearError(void);\n\n/**\n *  \\name Internal error functions\n *\n *  \\internal\n *  Private error reporting function - used internally.\n */\n/* @{ */\n#define SDL_OutOfMemory()   SDL_Error(SDL_ENOMEM)\n#define SDL_Unsupported()   SDL_Error(SDL_UNSUPPORTED)\n#define SDL_InvalidParamError(param)    SDL_SetError(\"Parameter '%s' is invalid\", (param))\ntypedef enum\n{\n    SDL_ENOMEM,\n    SDL_EFREAD,\n    SDL_EFWRITE,\n    SDL_EFSEEK,\n    SDL_UNSUPPORTED,\n    SDL_LASTERROR\n} SDL_errorcode;\n/* SDL_Error() unconditionally returns -1. */\nextern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code);\n/* @} *//* Internal error functions */\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_error_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_events.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_events.h\n *\n *  Include file for SDL event handling.\n */\n\n#ifndef SDL_events_h_\n#define SDL_events_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_video.h\"\n#include \"SDL_keyboard.h\"\n#include \"SDL_mouse.h\"\n#include \"SDL_joystick.h\"\n#include \"SDL_gamecontroller.h\"\n#include \"SDL_quit.h\"\n#include \"SDL_gesture.h\"\n#include \"SDL_touch.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* General keyboard/mouse state definitions */\n#define SDL_RELEASED    0\n#define SDL_PRESSED 1\n\n/**\n * The types of events that can be delivered.\n */\ntypedef enum\n{\n    SDL_FIRSTEVENT     = 0,     /**< Unused (do not remove) */\n\n    /* Application events */\n    SDL_QUIT           = 0x100, /**< User-requested quit */\n\n    /* These application events have special meaning on iOS, see README-ios.md for details */\n    SDL_APP_TERMINATING,        /**< The application is being terminated by the OS\n                                     Called on iOS in applicationWillTerminate()\n                                     Called on Android in onDestroy()\n                                */\n    SDL_APP_LOWMEMORY,          /**< The application is low on memory, free memory if possible.\n                                     Called on iOS in applicationDidReceiveMemoryWarning()\n                                     Called on Android in onLowMemory()\n                                */\n    SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background\n                                     Called on iOS in applicationWillResignActive()\n                                     Called on Android in onPause()\n                                */\n    SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time\n                                     Called on iOS in applicationDidEnterBackground()\n                                     Called on Android in onPause()\n                                */\n    SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground\n                                     Called on iOS in applicationWillEnterForeground()\n                                     Called on Android in onResume()\n                                */\n    SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive\n                                     Called on iOS in applicationDidBecomeActive()\n                                     Called on Android in onResume()\n                                */\n\n    SDL_LOCALECHANGED,  /**< The user's locale preferences have changed. */\n\n    /* Display events */\n    SDL_DISPLAYEVENT   = 0x150,  /**< Display state change */\n\n    /* Window events */\n    SDL_WINDOWEVENT    = 0x200, /**< Window state change */\n    SDL_SYSWMEVENT,             /**< System specific event */\n\n    /* Keyboard events */\n    SDL_KEYDOWN        = 0x300, /**< Key pressed */\n    SDL_KEYUP,                  /**< Key released */\n    SDL_TEXTEDITING,            /**< Keyboard text editing (composition) */\n    SDL_TEXTINPUT,              /**< Keyboard text input */\n    SDL_KEYMAPCHANGED,          /**< Keymap changed due to a system event such as an\n                                     input language or keyboard layout change.\n                                */\n    SDL_TEXTEDITING_EXT,       /**< Extended keyboard text editing (composition) */\n\n    /* Mouse events */\n    SDL_MOUSEMOTION    = 0x400, /**< Mouse moved */\n    SDL_MOUSEBUTTONDOWN,        /**< Mouse button pressed */\n    SDL_MOUSEBUTTONUP,          /**< Mouse button released */\n    SDL_MOUSEWHEEL,             /**< Mouse wheel motion */\n\n    /* Joystick events */\n    SDL_JOYAXISMOTION  = 0x600, /**< Joystick axis motion */\n    SDL_JOYBALLMOTION,          /**< Joystick trackball motion */\n    SDL_JOYHATMOTION,           /**< Joystick hat position change */\n    SDL_JOYBUTTONDOWN,          /**< Joystick button pressed */\n    SDL_JOYBUTTONUP,            /**< Joystick button released */\n    SDL_JOYDEVICEADDED,         /**< A new joystick has been inserted into the system */\n    SDL_JOYDEVICEREMOVED,       /**< An opened joystick has been removed */\n    SDL_JOYBATTERYUPDATED,      /**< Joystick battery level change */\n\n    /* Game controller events */\n    SDL_CONTROLLERAXISMOTION  = 0x650, /**< Game controller axis motion */\n    SDL_CONTROLLERBUTTONDOWN,          /**< Game controller button pressed */\n    SDL_CONTROLLERBUTTONUP,            /**< Game controller button released */\n    SDL_CONTROLLERDEVICEADDED,         /**< A new Game controller has been inserted into the system */\n    SDL_CONTROLLERDEVICEREMOVED,       /**< An opened Game controller has been removed */\n    SDL_CONTROLLERDEVICEREMAPPED,      /**< The controller mapping was updated */\n    SDL_CONTROLLERTOUCHPADDOWN,        /**< Game controller touchpad was touched */\n    SDL_CONTROLLERTOUCHPADMOTION,      /**< Game controller touchpad finger was moved */\n    SDL_CONTROLLERTOUCHPADUP,          /**< Game controller touchpad finger was lifted */\n    SDL_CONTROLLERSENSORUPDATE,        /**< Game controller sensor was updated */\n    SDL_CONTROLLERUPDATECOMPLETE_RESERVED_FOR_SDL3,\n    SDL_CONTROLLERSTEAMHANDLEUPDATED,  /**< Game controller Steam handle has changed */\n\n    /* Touch events */\n    SDL_FINGERDOWN      = 0x700,\n    SDL_FINGERUP,\n    SDL_FINGERMOTION,\n\n    /* Gesture events */\n    SDL_DOLLARGESTURE   = 0x800,\n    SDL_DOLLARRECORD,\n    SDL_MULTIGESTURE,\n\n    /* Clipboard events */\n    SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */\n\n    /* Drag and drop events */\n    SDL_DROPFILE        = 0x1000, /**< The system requests a file open */\n    SDL_DROPTEXT,                 /**< text/plain drag-and-drop event */\n    SDL_DROPBEGIN,                /**< A new set of drops is beginning (NULL filename) */\n    SDL_DROPCOMPLETE,             /**< Current set of drops is now complete (NULL filename) */\n\n    /* Audio hotplug events */\n    SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */\n    SDL_AUDIODEVICEREMOVED,        /**< An audio device has been removed. */\n\n    /* Sensor events */\n    SDL_SENSORUPDATE = 0x1200,     /**< A sensor was updated */\n\n    /* Render events */\n    SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */\n    SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */\n\n    /* Internal events */\n    SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */\n\n    /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,\n     *  and should be allocated with SDL_RegisterEvents()\n     */\n    SDL_USEREVENT    = 0x8000,\n\n    /**\n     *  This last event is only for bounding internal arrays\n     */\n    SDL_LASTEVENT    = 0xFFFF\n} SDL_EventType;\n\n/**\n *  \\brief Fields shared by every event\n */\ntypedef struct SDL_CommonEvent\n{\n    Uint32 type;\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n} SDL_CommonEvent;\n\n/**\n *  \\brief Display state change event data (event.display.*)\n */\ntypedef struct SDL_DisplayEvent\n{\n    Uint32 type;        /**< ::SDL_DISPLAYEVENT */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 display;     /**< The associated display index */\n    Uint8 event;        /**< ::SDL_DisplayEventID */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n    Sint32 data1;       /**< event dependent data */\n} SDL_DisplayEvent;\n\n/**\n *  \\brief Window state change event data (event.window.*)\n */\ntypedef struct SDL_WindowEvent\n{\n    Uint32 type;        /**< ::SDL_WINDOWEVENT */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The associated window */\n    Uint8 event;        /**< ::SDL_WindowEventID */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n    Sint32 data1;       /**< event dependent data */\n    Sint32 data2;       /**< event dependent data */\n} SDL_WindowEvent;\n\n/**\n *  \\brief Keyboard button event structure (event.key.*)\n */\ntypedef struct SDL_KeyboardEvent\n{\n    Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The window with keyboard focus, if any */\n    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */\n    Uint8 repeat;       /**< Non-zero if this is a key repeat */\n    Uint8 padding2;\n    Uint8 padding3;\n    SDL_Keysym keysym;  /**< The key that was pressed or released */\n} SDL_KeyboardEvent;\n\n#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32)\n/**\n *  \\brief Keyboard text editing event structure (event.edit.*)\n */\ntypedef struct SDL_TextEditingEvent\n{\n    Uint32 type;                                /**< ::SDL_TEXTEDITING */\n    Uint32 timestamp;                           /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;                            /**< The window with keyboard focus, if any */\n    char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */\n    Sint32 start;                               /**< The start cursor of selected editing text */\n    Sint32 length;                              /**< The length of selected editing text */\n} SDL_TextEditingEvent;\n\n/**\n *  \\brief Extended keyboard text editing event structure (event.editExt.*) when text would be\n *  truncated if stored in the text buffer SDL_TextEditingEvent\n */\ntypedef struct SDL_TextEditingExtEvent\n{\n    Uint32 type;                                /**< ::SDL_TEXTEDITING_EXT */\n    Uint32 timestamp;                           /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;                            /**< The window with keyboard focus, if any */\n    char* text;                                 /**< The editing text, which should be freed with SDL_free(), and will not be NULL */\n    Sint32 start;                               /**< The start cursor of selected editing text */\n    Sint32 length;                              /**< The length of selected editing text */\n} SDL_TextEditingExtEvent;\n\n#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32)\n/**\n *  \\brief Keyboard text input event structure (event.text.*)\n */\ntypedef struct SDL_TextInputEvent\n{\n    Uint32 type;                              /**< ::SDL_TEXTINPUT */\n    Uint32 timestamp;                         /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;                          /**< The window with keyboard focus, if any */\n    char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */\n} SDL_TextInputEvent;\n\n/**\n *  \\brief Mouse motion event structure (event.motion.*)\n */\ntypedef struct SDL_MouseMotionEvent\n{\n    Uint32 type;        /**< ::SDL_MOUSEMOTION */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The window with mouse focus, if any */\n    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */\n    Uint32 state;       /**< The current button state */\n    Sint32 x;           /**< X coordinate, relative to window */\n    Sint32 y;           /**< Y coordinate, relative to window */\n    Sint32 xrel;        /**< The relative motion in the X direction */\n    Sint32 yrel;        /**< The relative motion in the Y direction */\n} SDL_MouseMotionEvent;\n\n/**\n *  \\brief Mouse button event structure (event.button.*)\n */\ntypedef struct SDL_MouseButtonEvent\n{\n    Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The window with mouse focus, if any */\n    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */\n    Uint8 button;       /**< The mouse button index */\n    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */\n    Uint8 clicks;       /**< 1 for single-click, 2 for double-click, etc. */\n    Uint8 padding1;\n    Sint32 x;           /**< X coordinate, relative to window */\n    Sint32 y;           /**< Y coordinate, relative to window */\n} SDL_MouseButtonEvent;\n\n/**\n *  \\brief Mouse wheel event structure (event.wheel.*)\n */\ntypedef struct SDL_MouseWheelEvent\n{\n    Uint32 type;        /**< ::SDL_MOUSEWHEEL */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The window with mouse focus, if any */\n    Uint32 which;       /**< The mouse instance id, or SDL_TOUCH_MOUSEID */\n    Sint32 x;           /**< The amount scrolled horizontally, positive to the right and negative to the left */\n    Sint32 y;           /**< The amount scrolled vertically, positive away from the user and negative toward the user */\n    Uint32 direction;   /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */\n    float preciseX;     /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */\n    float preciseY;     /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */\n    Sint32 mouseX;      /**< X coordinate, relative to window (added in 2.26.0) */\n    Sint32 mouseY;      /**< Y coordinate, relative to window (added in 2.26.0) */\n} SDL_MouseWheelEvent;\n\n/**\n *  \\brief Joystick axis motion event structure (event.jaxis.*)\n */\ntypedef struct SDL_JoyAxisEvent\n{\n    Uint32 type;        /**< ::SDL_JOYAXISMOTION */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 axis;         /**< The joystick axis index */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n    Sint16 value;       /**< The axis value (range: -32768 to 32767) */\n    Uint16 padding4;\n} SDL_JoyAxisEvent;\n\n/**\n *  \\brief Joystick trackball motion event structure (event.jball.*)\n */\ntypedef struct SDL_JoyBallEvent\n{\n    Uint32 type;        /**< ::SDL_JOYBALLMOTION */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 ball;         /**< The joystick trackball index */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n    Sint16 xrel;        /**< The relative motion in the X direction */\n    Sint16 yrel;        /**< The relative motion in the Y direction */\n} SDL_JoyBallEvent;\n\n/**\n *  \\brief Joystick hat position change event structure (event.jhat.*)\n */\ntypedef struct SDL_JoyHatEvent\n{\n    Uint32 type;        /**< ::SDL_JOYHATMOTION */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 hat;          /**< The joystick hat index */\n    Uint8 value;        /**< The hat position value.\n                         *   \\sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP\n                         *   \\sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT\n                         *   \\sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN\n                         *\n                         *   Note that zero means the POV is centered.\n                         */\n    Uint8 padding1;\n    Uint8 padding2;\n} SDL_JoyHatEvent;\n\n/**\n *  \\brief Joystick button event structure (event.jbutton.*)\n */\ntypedef struct SDL_JoyButtonEvent\n{\n    Uint32 type;        /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 button;       /**< The joystick button index */\n    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */\n    Uint8 padding1;\n    Uint8 padding2;\n} SDL_JoyButtonEvent;\n\n/**\n *  \\brief Joystick device event structure (event.jdevice.*)\n */\ntypedef struct SDL_JoyDeviceEvent\n{\n    Uint32 type;        /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED event */\n} SDL_JoyDeviceEvent;\n\n/**\n *  \\brief Joysick battery level change event structure (event.jbattery.*)\n */\ntypedef struct SDL_JoyBatteryEvent\n{\n    Uint32 type;        /**< ::SDL_JOYBATTERYUPDATED */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    SDL_JoystickPowerLevel level; /**< The joystick battery level */\n} SDL_JoyBatteryEvent;\n\n/**\n *  \\brief Game controller axis motion event structure (event.caxis.*)\n */\ntypedef struct SDL_ControllerAxisEvent\n{\n    Uint32 type;        /**< ::SDL_CONTROLLERAXISMOTION */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 axis;         /**< The controller axis (SDL_GameControllerAxis) */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n    Sint16 value;       /**< The axis value (range: -32768 to 32767) */\n    Uint16 padding4;\n} SDL_ControllerAxisEvent;\n\n\n/**\n *  \\brief Game controller button event structure (event.cbutton.*)\n */\ntypedef struct SDL_ControllerButtonEvent\n{\n    Uint32 type;        /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Uint8 button;       /**< The controller button (SDL_GameControllerButton) */\n    Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */\n    Uint8 padding1;\n    Uint8 padding2;\n} SDL_ControllerButtonEvent;\n\n\n/**\n *  \\brief Controller device event structure (event.cdevice.*)\n */\ntypedef struct SDL_ControllerDeviceEvent\n{\n    Uint32 type;        /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, ::SDL_CONTROLLERDEVICEREMAPPED, or ::SDL_CONTROLLERSTEAMHANDLEUPDATED */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Sint32 which;       /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */\n} SDL_ControllerDeviceEvent;\n\n/**\n *  \\brief Game controller touchpad event structure (event.ctouchpad.*)\n */\ntypedef struct SDL_ControllerTouchpadEvent\n{\n    Uint32 type;        /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Sint32 touchpad;    /**< The index of the touchpad */\n    Sint32 finger;      /**< The index of the finger on the touchpad */\n    float x;            /**< Normalized in the range 0...1 with 0 being on the left */\n    float y;            /**< Normalized in the range 0...1 with 0 being at the top */\n    float pressure;     /**< Normalized in the range 0...1 */\n} SDL_ControllerTouchpadEvent;\n\n/**\n *  \\brief Game controller sensor event structure (event.csensor.*)\n */\ntypedef struct SDL_ControllerSensorEvent\n{\n    Uint32 type;        /**< ::SDL_CONTROLLERSENSORUPDATE */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_JoystickID which; /**< The joystick instance id */\n    Sint32 sensor;      /**< The type of the sensor, one of the values of ::SDL_SensorType */\n    float data[3];      /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */\n    Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */\n} SDL_ControllerSensorEvent;\n\n/**\n *  \\brief Audio device event structure (event.adevice.*)\n */\ntypedef struct SDL_AudioDeviceEvent\n{\n    Uint32 type;        /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 which;       /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */\n    Uint8 iscapture;    /**< zero if an output device, non-zero if a capture device. */\n    Uint8 padding1;\n    Uint8 padding2;\n    Uint8 padding3;\n} SDL_AudioDeviceEvent;\n\n\n/**\n *  \\brief Touch finger event structure (event.tfinger.*)\n */\ntypedef struct SDL_TouchFingerEvent\n{\n    Uint32 type;        /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_TouchID touchId; /**< The touch device id */\n    SDL_FingerID fingerId;\n    float x;            /**< Normalized in the range 0...1 */\n    float y;            /**< Normalized in the range 0...1 */\n    float dx;           /**< Normalized in the range -1...1 */\n    float dy;           /**< Normalized in the range -1...1 */\n    float pressure;     /**< Normalized in the range 0...1 */\n    Uint32 windowID;    /**< The window underneath the finger, if any */\n} SDL_TouchFingerEvent;\n\n\n/**\n *  \\brief Multiple Finger Gesture Event (event.mgesture.*)\n */\ntypedef struct SDL_MultiGestureEvent\n{\n    Uint32 type;        /**< ::SDL_MULTIGESTURE */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_TouchID touchId; /**< The touch device id */\n    float dTheta;\n    float dDist;\n    float x;\n    float y;\n    Uint16 numFingers;\n    Uint16 padding;\n} SDL_MultiGestureEvent;\n\n\n/**\n * \\brief Dollar Gesture Event (event.dgesture.*)\n */\ntypedef struct SDL_DollarGestureEvent\n{\n    Uint32 type;        /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_TouchID touchId; /**< The touch device id */\n    SDL_GestureID gestureId;\n    Uint32 numFingers;\n    float error;\n    float x;            /**< Normalized center of gesture */\n    float y;            /**< Normalized center of gesture */\n} SDL_DollarGestureEvent;\n\n\n/**\n *  \\brief An event used to request a file open by the system (event.drop.*)\n *         This event is enabled by default, you can disable it with SDL_EventState().\n *  \\note If this event is enabled, you must free the filename in the event.\n */\ntypedef struct SDL_DropEvent\n{\n    Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */\n    Uint32 windowID;    /**< The window that was dropped on, if any */\n} SDL_DropEvent;\n\n\n/**\n *  \\brief Sensor event structure (event.sensor.*)\n */\ntypedef struct SDL_SensorEvent\n{\n    Uint32 type;        /**< ::SDL_SENSORUPDATE */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Sint32 which;       /**< The instance ID of the sensor */\n    float data[6];      /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */\n    Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */\n} SDL_SensorEvent;\n\n/**\n *  \\brief The \"quit requested\" event\n */\ntypedef struct SDL_QuitEvent\n{\n    Uint32 type;        /**< ::SDL_QUIT */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n} SDL_QuitEvent;\n\n/**\n *  \\brief A user-defined event type (event.user.*)\n */\ntypedef struct SDL_UserEvent\n{\n    Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    Uint32 windowID;    /**< The associated window if any */\n    Sint32 code;        /**< User defined event code */\n    void *data1;        /**< User defined data pointer */\n    void *data2;        /**< User defined data pointer */\n} SDL_UserEvent;\n\n\nstruct SDL_SysWMmsg;\ntypedef struct SDL_SysWMmsg SDL_SysWMmsg;\n\n/**\n *  \\brief A video driver dependent system event (event.syswm.*)\n *         This event is disabled by default, you can enable it with SDL_EventState()\n *\n *  \\note If you want to use this event, you should include SDL_syswm.h.\n */\ntypedef struct SDL_SysWMEvent\n{\n    Uint32 type;        /**< ::SDL_SYSWMEVENT */\n    Uint32 timestamp;   /**< In milliseconds, populated using SDL_GetTicks() */\n    SDL_SysWMmsg *msg;  /**< driver dependent data, defined in SDL_syswm.h */\n} SDL_SysWMEvent;\n\n/**\n *  \\brief General event structure\n */\ntypedef union SDL_Event\n{\n    Uint32 type;                            /**< Event type, shared with all events */\n    SDL_CommonEvent common;                 /**< Common event data */\n    SDL_DisplayEvent display;               /**< Display event data */\n    SDL_WindowEvent window;                 /**< Window event data */\n    SDL_KeyboardEvent key;                  /**< Keyboard event data */\n    SDL_TextEditingEvent edit;              /**< Text editing event data */\n    SDL_TextEditingExtEvent editExt;        /**< Extended text editing event data */\n    SDL_TextInputEvent text;                /**< Text input event data */\n    SDL_MouseMotionEvent motion;            /**< Mouse motion event data */\n    SDL_MouseButtonEvent button;            /**< Mouse button event data */\n    SDL_MouseWheelEvent wheel;              /**< Mouse wheel event data */\n    SDL_JoyAxisEvent jaxis;                 /**< Joystick axis event data */\n    SDL_JoyBallEvent jball;                 /**< Joystick ball event data */\n    SDL_JoyHatEvent jhat;                   /**< Joystick hat event data */\n    SDL_JoyButtonEvent jbutton;             /**< Joystick button event data */\n    SDL_JoyDeviceEvent jdevice;             /**< Joystick device change event data */\n    SDL_JoyBatteryEvent jbattery;           /**< Joystick battery event data */\n    SDL_ControllerAxisEvent caxis;          /**< Game Controller axis event data */\n    SDL_ControllerButtonEvent cbutton;      /**< Game Controller button event data */\n    SDL_ControllerDeviceEvent cdevice;      /**< Game Controller device event data */\n    SDL_ControllerTouchpadEvent ctouchpad;  /**< Game Controller touchpad event data */\n    SDL_ControllerSensorEvent csensor;      /**< Game Controller sensor event data */\n    SDL_AudioDeviceEvent adevice;           /**< Audio device event data */\n    SDL_SensorEvent sensor;                 /**< Sensor event data */\n    SDL_QuitEvent quit;                     /**< Quit request event data */\n    SDL_UserEvent user;                     /**< Custom event data */\n    SDL_SysWMEvent syswm;                   /**< System dependent window event data */\n    SDL_TouchFingerEvent tfinger;           /**< Touch finger event data */\n    SDL_MultiGestureEvent mgesture;         /**< Gesture event data */\n    SDL_DollarGestureEvent dgesture;        /**< Gesture event data */\n    SDL_DropEvent drop;                     /**< Drag and drop event data */\n\n    /* This is necessary for ABI compatibility between Visual C++ and GCC.\n       Visual C++ will respect the push pack pragma and use 52 bytes (size of\n       SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit\n       architectures) for this union, and GCC will use the alignment of the\n       largest datatype within the union, which is 8 bytes on 64-bit\n       architectures.\n\n       So... we'll add padding to force the size to be 56 bytes for both.\n\n       On architectures where pointers are 16 bytes, this needs rounding up to\n       the next multiple of 16, 64, and on architectures where pointers are\n       even larger the size of SDL_UserEvent will dominate as being 3 pointers.\n    */\n    Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)];\n} SDL_Event;\n\n/* Make sure we haven't broken binary compatibility */\nSDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding));\n\n\n/* Function prototypes */\n\n/**\n * Pump the event loop, gathering events from the input devices.\n *\n * This function updates the event queue and internal input device state.\n *\n * **WARNING**: This should only be run in the thread that initialized the\n * video subsystem, and for extra safety, you should consider only doing those\n * things on the main thread in any case.\n *\n * SDL_PumpEvents() gathers all the pending input information from devices and\n * places it in the event queue. Without calls to SDL_PumpEvents() no events\n * would ever be placed on the queue. Often the need for calls to\n * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and\n * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not\n * polling or waiting for events (e.g. you are filtering them), then you must\n * call SDL_PumpEvents() to force an event queue update.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PollEvent\n * \\sa SDL_WaitEvent\n */\nextern DECLSPEC void SDLCALL SDL_PumpEvents(void);\n\n/* @{ */\ntypedef enum\n{\n    SDL_ADDEVENT,\n    SDL_PEEKEVENT,\n    SDL_GETEVENT\n} SDL_eventaction;\n\n/**\n * Check the event queue for messages and optionally return them.\n *\n * `action` may be any of the following:\n *\n * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the\n *   event queue.\n * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue,\n *   within the specified minimum and maximum type, will be returned to the\n *   caller and will _not_ be removed from the queue.\n * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue,\n *   within the specified minimum and maximum type, will be returned to the\n *   caller and will be removed from the queue.\n *\n * You may have to call SDL_PumpEvents() before calling this function.\n * Otherwise, the events may not be ready to be filtered when you call\n * SDL_PeepEvents().\n *\n * This function is thread-safe.\n *\n * \\param events destination buffer for the retrieved events\n * \\param numevents if action is SDL_ADDEVENT, the number of events to add\n *                  back to the event queue; if action is SDL_PEEKEVENT or\n *                  SDL_GETEVENT, the maximum number of events to retrieve\n * \\param action action to take; see [[#action|Remarks]] for details\n * \\param minType minimum value of the event type to be considered;\n *                SDL_FIRSTEVENT is a safe choice\n * \\param maxType maximum value of the event type to be considered;\n *                SDL_LASTEVENT is a safe choice\n * \\returns the number of events actually stored or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PollEvent\n * \\sa SDL_PumpEvents\n * \\sa SDL_PushEvent\n */\nextern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents,\n                                           SDL_eventaction action,\n                                           Uint32 minType, Uint32 maxType);\n/* @} */\n\n/**\n * Check for the existence of a certain event type in the event queue.\n *\n * If you need to check for a range of event types, use SDL_HasEvents()\n * instead.\n *\n * \\param type the type of event to be queried; see SDL_EventType for details\n * \\returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if\n *          events matching `type` are not present.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasEvents\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type);\n\n\n/**\n * Check for the existence of certain event types in the event queue.\n *\n * If you need to check for a single event type, use SDL_HasEvent() instead.\n *\n * \\param minType the low end of event type to be queried, inclusive; see\n *                SDL_EventType for details\n * \\param maxType the high end of event type to be queried, inclusive; see\n *                SDL_EventType for details\n * \\returns SDL_TRUE if events with type >= `minType` and <= `maxType` are\n *          present, or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasEvents\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType);\n\n/**\n * Clear events of a specific type from the event queue.\n *\n * This will unconditionally remove any events from the queue that match\n * `type`. If you need to remove a range of event types, use SDL_FlushEvents()\n * instead.\n *\n * It's also normal to just ignore events you don't care about in your event\n * loop without calling this function.\n *\n * This function only affects currently queued events. If you want to make\n * sure that all pending OS events are flushed, you can call SDL_PumpEvents()\n * on the main thread immediately before the flush call.\n *\n * \\param type the type of event to be cleared; see SDL_EventType for details\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FlushEvents\n */\nextern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type);\n\n/**\n * Clear events of a range of types from the event queue.\n *\n * This will unconditionally remove any events from the queue that are in the\n * range of `minType` to `maxType`, inclusive. If you need to remove a single\n * event type, use SDL_FlushEvent() instead.\n *\n * It's also normal to just ignore events you don't care about in your event\n * loop without calling this function.\n *\n * This function only affects currently queued events. If you want to make\n * sure that all pending OS events are flushed, you can call SDL_PumpEvents()\n * on the main thread immediately before the flush call.\n *\n * \\param minType the low end of event type to be cleared, inclusive; see\n *                SDL_EventType for details\n * \\param maxType the high end of event type to be cleared, inclusive; see\n *                SDL_EventType for details\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FlushEvent\n */\nextern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType);\n\n/**\n * Poll for currently pending events.\n *\n * If `event` is not NULL, the next event is removed from the queue and stored\n * in the SDL_Event structure pointed to by `event`. The 1 returned refers to\n * this event, immediately stored in the SDL Event structure -- not an event\n * to follow.\n *\n * If `event` is NULL, it simply returns 1 if there is an event in the queue,\n * but will not remove it from the queue.\n *\n * As this function may implicitly call SDL_PumpEvents(), you can only call\n * this function in the thread that set the video mode.\n *\n * SDL_PollEvent() is the favored way of receiving system events since it can\n * be done from the main loop and does not suspend the main loop while waiting\n * on an event to be posted.\n *\n * The common practice is to fully process the event queue once every frame,\n * usually as a first step before updating the game's state:\n *\n * ```c\n * while (game_is_still_running) {\n *     SDL_Event event;\n *     while (SDL_PollEvent(&event)) {  // poll until all events are handled!\n *         // decide what to do with this event.\n *     }\n *\n *     // update game state, draw the current frame\n * }\n * ```\n *\n * \\param event the SDL_Event structure to be filled with the next event from\n *              the queue, or NULL\n * \\returns 1 if there is a pending event or 0 if there are none available.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetEventFilter\n * \\sa SDL_PeepEvents\n * \\sa SDL_PushEvent\n * \\sa SDL_SetEventFilter\n * \\sa SDL_WaitEvent\n * \\sa SDL_WaitEventTimeout\n */\nextern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event);\n\n/**\n * Wait indefinitely for the next available event.\n *\n * If `event` is not NULL, the next event is removed from the queue and stored\n * in the SDL_Event structure pointed to by `event`.\n *\n * As this function may implicitly call SDL_PumpEvents(), you can only call\n * this function in the thread that initialized the video subsystem.\n *\n * \\param event the SDL_Event structure to be filled in with the next event\n *              from the queue, or NULL\n * \\returns 1 on success or 0 if there was an error while waiting for events;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PollEvent\n * \\sa SDL_PumpEvents\n * \\sa SDL_WaitEventTimeout\n */\nextern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event);\n\n/**\n * Wait until the specified timeout (in milliseconds) for the next available\n * event.\n *\n * If `event` is not NULL, the next event is removed from the queue and stored\n * in the SDL_Event structure pointed to by `event`.\n *\n * As this function may implicitly call SDL_PumpEvents(), you can only call\n * this function in the thread that initialized the video subsystem.\n *\n * \\param event the SDL_Event structure to be filled in with the next event\n *              from the queue, or NULL\n * \\param timeout the maximum number of milliseconds to wait for the next\n *                available event\n * \\returns 1 on success or 0 if there was an error while waiting for events;\n *          call SDL_GetError() for more information. This also returns 0 if\n *          the timeout elapsed without an event arriving.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PollEvent\n * \\sa SDL_PumpEvents\n * \\sa SDL_WaitEvent\n */\nextern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event,\n                                                 int timeout);\n\n/**\n * Add an event to the event queue.\n *\n * The event queue can actually be used as a two way communication channel.\n * Not only can events be read from the queue, but the user can also push\n * their own events onto it. `event` is a pointer to the event structure you\n * wish to push onto the queue. The event is copied into the queue, and the\n * caller may dispose of the memory pointed to after SDL_PushEvent() returns.\n *\n * Note: Pushing device input events onto the queue doesn't modify the state\n * of the device within SDL.\n *\n * This function is thread-safe, and can be called from other threads safely.\n *\n * Note: Events pushed onto the queue with SDL_PushEvent() get passed through\n * the event filter but events added with SDL_PeepEvents() do not.\n *\n * For pushing application-specific events, please use SDL_RegisterEvents() to\n * get an event type that does not conflict with other code that also wants\n * its own custom event types.\n *\n * \\param event the SDL_Event to be added to the queue\n * \\returns 1 on success, 0 if the event was filtered, or a negative error\n *          code on failure; call SDL_GetError() for more information. A\n *          common reason for error is the event queue being full.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PeepEvents\n * \\sa SDL_PollEvent\n * \\sa SDL_RegisterEvents\n */\nextern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event);\n\n/**\n * A function pointer used for callbacks that watch the event queue.\n *\n * \\param userdata what was passed as `userdata` to SDL_SetEventFilter()\n *        or SDL_AddEventWatch, etc\n * \\param event the event that triggered the callback\n * \\returns 1 to permit event to be added to the queue, and 0 to disallow\n *          it. When used with SDL_AddEventWatch, the return value is ignored.\n *\n * \\sa SDL_SetEventFilter\n * \\sa SDL_AddEventWatch\n */\ntypedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event);\n\n/**\n * Set up a filter to process all events before they change internal state and\n * are posted to the internal event queue.\n *\n * If the filter function returns 1 when called, then the event will be added\n * to the internal queue. If it returns 0, then the event will be dropped from\n * the queue, but the internal state will still be updated. This allows\n * selective filtering of dynamically arriving events.\n *\n * **WARNING**: Be very careful of what you do in the event filter function,\n * as it may run in a different thread!\n *\n * On platforms that support it, if the quit event is generated by an\n * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the\n * application at the next event poll.\n *\n * There is one caveat when dealing with the ::SDL_QuitEvent event type. The\n * event filter is only called when the window manager desires to close the\n * application window. If the event filter returns 1, then the window will be\n * closed, otherwise the window will remain open if possible.\n *\n * Note: Disabled events never make it to the event filter function; see\n * SDL_EventState().\n *\n * Note: If you just want to inspect events without filtering, you should use\n * SDL_AddEventWatch() instead.\n *\n * Note: Events pushed onto the queue with SDL_PushEvent() get passed through\n * the event filter, but events pushed onto the queue with SDL_PeepEvents() do\n * not.\n *\n * \\param filter An SDL_EventFilter function to call when an event happens\n * \\param userdata a pointer that is passed to `filter`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AddEventWatch\n * \\sa SDL_EventState\n * \\sa SDL_GetEventFilter\n * \\sa SDL_PeepEvents\n * \\sa SDL_PushEvent\n */\nextern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter,\n                                                void *userdata);\n\n/**\n * Query the current event filter.\n *\n * This function can be used to \"chain\" filters, by saving the existing filter\n * before replacing it with a function that will call that saved filter.\n *\n * \\param filter the current callback function will be stored here\n * \\param userdata the pointer that is passed to the current event filter will\n *                 be stored here\n * \\returns SDL_TRUE on success or SDL_FALSE if there is no event filter set.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetEventFilter\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter,\n                                                    void **userdata);\n\n/**\n * Add a callback to be triggered when an event is added to the event queue.\n *\n * `filter` will be called when an event happens, and its return value is\n * ignored.\n *\n * **WARNING**: Be very careful of what you do in the event filter function,\n * as it may run in a different thread!\n *\n * If the quit event is generated by a signal (e.g. SIGINT), it will bypass\n * the internal queue and be delivered to the watch callback immediately, and\n * arrive at the next event poll.\n *\n * Note: the callback is called for events posted by the user through\n * SDL_PushEvent(), but not for disabled events, nor for events by a filter\n * callback set with SDL_SetEventFilter(), nor for events posted by the user\n * through SDL_PeepEvents().\n *\n * \\param filter an SDL_EventFilter function to call when an event happens.\n * \\param userdata a pointer that is passed to `filter`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DelEventWatch\n * \\sa SDL_SetEventFilter\n */\nextern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter,\n                                               void *userdata);\n\n/**\n * Remove an event watch callback added with SDL_AddEventWatch().\n *\n * This function takes the same input as SDL_AddEventWatch() to identify and\n * delete the corresponding callback.\n *\n * \\param filter the function originally passed to SDL_AddEventWatch()\n * \\param userdata the pointer originally passed to SDL_AddEventWatch()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AddEventWatch\n */\nextern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter,\n                                               void *userdata);\n\n/**\n * Run a specific filter function on the current event queue, removing any\n * events for which the filter returns 0.\n *\n * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(),\n * this function does not change the filter permanently, it only uses the\n * supplied filter until this function returns.\n *\n * \\param filter the SDL_EventFilter function to call when an event happens\n * \\param userdata a pointer that is passed to `filter`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetEventFilter\n * \\sa SDL_SetEventFilter\n */\nextern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter,\n                                              void *userdata);\n\n/* @{ */\n#define SDL_QUERY   -1\n#define SDL_IGNORE   0\n#define SDL_DISABLE  0\n#define SDL_ENABLE   1\n\n/**\n * Set the state of processing events by type.\n *\n * `state` may be any of the following:\n *\n * - `SDL_QUERY`: returns the current processing state of the specified event\n * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped\n *   from the event queue and will not be filtered\n * - `SDL_ENABLE`: the event will be processed normally\n *\n * \\param type the type of event; see SDL_EventType for details\n * \\param state how to process the event\n * \\returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state\n *          of the event before this function makes any changes to it.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetEventState\n */\nextern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state);\n/* @} */\n#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY)\n\n/**\n * Allocate a set of user-defined events, and return the beginning event\n * number for that set of events.\n *\n * Calling this function with `numevents` <= 0 is an error and will return\n * (Uint32)-1.\n *\n * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or\n * 0xFFFFFFFF), but is clearer to write.\n *\n * \\param numevents the number of events to be allocated\n * \\returns the beginning event number, or (Uint32)-1 if there are not enough\n *          user-defined events left.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PushEvent\n */\nextern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_events_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_filesystem.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_filesystem.h\n *\n *  \\brief Include file for filesystem SDL API functions\n */\n\n#ifndef SDL_filesystem_h_\n#define SDL_filesystem_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Get the directory where the application was run from.\n *\n * This is not necessarily a fast call, so you should call this once near\n * startup and save the string if you need it.\n *\n * **Mac OS X and iOS Specific Functionality**: If the application is in a\n * \".app\" bundle, this function returns the Resource directory (e.g.\n * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding\n * a property to the Info.plist file. Adding a string key with the name\n * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the\n * behaviour.\n *\n * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an\n * application in /Applications/SDLApp/MyApp.app):\n *\n * - `resource`: bundle resource directory (the default). For example:\n *   `/Applications/SDLApp/MyApp.app/Contents/Resources`\n * - `bundle`: the Bundle directory. For example:\n *   `/Applications/SDLApp/MyApp.app/`\n * - `parent`: the containing directory of the bundle. For example:\n *   `/Applications/SDLApp/`\n *\n * **Nintendo 3DS Specific Functionality**: This function returns \"romfs\"\n * directory of the application as it is uncommon to store resources outside\n * the executable. As such it is not a writable directory.\n *\n * The returned path is guaranteed to end with a path separator ('\\\\' on\n * Windows, '/' on most other platforms).\n *\n * The pointer returned is owned by the caller. Please call SDL_free() on the\n * pointer when done with it.\n *\n * \\returns an absolute path in UTF-8 encoding to the application data\n *          directory. NULL will be returned on error or when the platform\n *          doesn't implement this functionality, call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.1.\n *\n * \\sa SDL_GetPrefPath\n */\nextern DECLSPEC char *SDLCALL SDL_GetBasePath(void);\n\n/**\n * Get the user-and-app-specific path where files can be written.\n *\n * Get the \"pref dir\". This is meant to be where users can write personal\n * files (preferences and save games, etc) that are specific to your\n * application. This directory is unique per user, per application.\n *\n * This function will decide the appropriate location in the native\n * filesystem, create the directory if necessary, and return a string of the\n * absolute path to the directory in UTF-8 encoding.\n *\n * On Windows, the string might look like:\n *\n * `C:\\\\Users\\\\bob\\\\AppData\\\\Roaming\\\\My Company\\\\My Program Name\\\\`\n *\n * On Linux, the string might look like:\n *\n * `/home/bob/.local/share/My Program Name/`\n *\n * On Mac OS X, the string might look like:\n *\n * `/Users/bob/Library/Application Support/My Program Name/`\n *\n * You should assume the path returned by this function is the only safe place\n * to write files (and that SDL_GetBasePath(), while it might be writable, or\n * even the parent of the returned path, isn't where you should be writing\n * things).\n *\n * Both the org and app strings may become part of a directory name, so please\n * follow these rules:\n *\n * - Try to use the same org string (_including case-sensitivity_) for all\n *   your applications that use this function.\n * - Always use a unique app string for each one, and make sure it never\n *   changes for an app once you've decided on it.\n * - Unicode characters are legal, as long as it's UTF-8 encoded, but...\n * - ...only use letters, numbers, and spaces. Avoid punctuation like \"Game\n *   Name 2: Bad Guy's Revenge!\" ... \"Game Name 2\" is sufficient.\n *\n * The returned path is guaranteed to end with a path separator ('\\\\' on\n * Windows, '/' on most other platforms).\n *\n * The pointer returned is owned by the caller. Please call SDL_free() on the\n * pointer when done with it.\n *\n * \\param org the name of your organization\n * \\param app the name of your application\n * \\returns a UTF-8 string of the user directory in platform-dependent\n *          notation. NULL if there's a problem (creating directory failed,\n *          etc.).\n *\n * \\since This function is available since SDL 2.0.1.\n *\n * \\sa SDL_GetBasePath\n */\nextern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_filesystem_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_gamecontroller.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_gamecontroller.h\n *\n *  Include file for SDL game controller event handling\n */\n\n#ifndef SDL_gamecontroller_h_\n#define SDL_gamecontroller_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_rwops.h\"\n#include \"SDL_sensor.h\"\n#include \"SDL_joystick.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\file SDL_gamecontroller.h\n *\n *  In order to use these functions, SDL_Init() must have been called\n *  with the ::SDL_INIT_GAMECONTROLLER flag.  This causes SDL to scan the system\n *  for game controllers, and load appropriate drivers.\n *\n *  If you would like to receive controller updates while the application\n *  is in the background, you should set the following hint before calling\n *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS\n */\n\n/**\n * The gamecontroller structure used to identify an SDL game controller\n */\nstruct _SDL_GameController;\ntypedef struct _SDL_GameController SDL_GameController;\n\ntypedef enum\n{\n    SDL_CONTROLLER_TYPE_UNKNOWN = 0,\n    SDL_CONTROLLER_TYPE_XBOX360,\n    SDL_CONTROLLER_TYPE_XBOXONE,\n    SDL_CONTROLLER_TYPE_PS3,\n    SDL_CONTROLLER_TYPE_PS4,\n    SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO,\n    SDL_CONTROLLER_TYPE_VIRTUAL,\n    SDL_CONTROLLER_TYPE_PS5,\n    SDL_CONTROLLER_TYPE_AMAZON_LUNA,\n    SDL_CONTROLLER_TYPE_GOOGLE_STADIA,\n    SDL_CONTROLLER_TYPE_NVIDIA_SHIELD,\n    SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT,\n    SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT,\n    SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR,\n    SDL_CONTROLLER_TYPE_MAX\n} SDL_GameControllerType;\n\ntypedef enum\n{\n    SDL_CONTROLLER_BINDTYPE_NONE = 0,\n    SDL_CONTROLLER_BINDTYPE_BUTTON,\n    SDL_CONTROLLER_BINDTYPE_AXIS,\n    SDL_CONTROLLER_BINDTYPE_HAT\n} SDL_GameControllerBindType;\n\n/**\n *  Get the SDL joystick layer binding for this controller button/axis mapping\n */\ntypedef struct SDL_GameControllerButtonBind\n{\n    SDL_GameControllerBindType bindType;\n    union\n    {\n        int button;\n        int axis;\n        struct {\n            int hat;\n            int hat_mask;\n        } hat;\n    } value;\n\n} SDL_GameControllerButtonBind;\n\n\n/**\n *  To count the number of game controllers in the system for the following:\n *\n *  ```c\n *  int nJoysticks = SDL_NumJoysticks();\n *  int nGameControllers = 0;\n *  for (int i = 0; i < nJoysticks; i++) {\n *      if (SDL_IsGameController(i)) {\n *          nGameControllers++;\n *      }\n *  }\n *  ```\n *\n *  Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is:\n *  guid,name,mappings\n *\n *  Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones.\n *  Under Windows there is a reserved GUID of \"xinput\" that covers any XInput devices.\n *  The mapping format for joystick is:\n *      bX - a joystick button, index X\n *      hX.Y - hat X with value Y\n *      aX - axis X of the joystick\n *  Buttons can be used as a controller axis and vice versa.\n *\n *  This string shows an example of a valid mapping for a controller\n *\n * ```c\n * \"03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7\",\n * ```\n */\n\n/**\n * Load a set of Game Controller mappings from a seekable SDL data stream.\n *\n * You can call this function several times, if needed, to load different\n * database files.\n *\n * If a new mapping is loaded for an already known controller GUID, the later\n * version will overwrite the one currently loaded.\n *\n * Mappings not belonging to the current platform or with no platform field\n * specified will be ignored (i.e. mappings for Linux will be ignored in\n * Windows, etc).\n *\n * This function will load the text database entirely in memory before\n * processing it, so take this into consideration if you are in a memory\n * constrained environment.\n *\n * \\param rw the data stream for the mappings to be added\n * \\param freerw non-zero to close the stream after being read\n * \\returns the number of mappings added or -1 on error; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_GameControllerAddMapping\n * \\sa SDL_GameControllerAddMappingsFromFile\n * \\sa SDL_GameControllerMappingForGUID\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw);\n\n/**\n *  Load a set of mappings from a file, filtered by the current SDL_GetPlatform()\n *\n *  Convenience macro.\n */\n#define SDL_GameControllerAddMappingsFromFile(file)   SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, \"rb\"), 1)\n\n/**\n * Add support for controllers that SDL is unaware of or to cause an existing\n * controller to have a different binding.\n *\n * The mapping string has the format \"GUID,name,mapping\", where GUID is the\n * string value from SDL_JoystickGetGUIDString(), name is the human readable\n * string for the device and mappings are controller mappings to joystick\n * ones. Under Windows there is a reserved GUID of \"xinput\" that covers all\n * XInput devices. The mapping format for joystick is: {| |bX |a joystick\n * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick\n * |} Buttons can be used as a controller axes and vice versa.\n *\n * This string shows an example of a valid mapping for a controller:\n *\n * ```c\n * \"341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7\"\n * ```\n *\n * \\param mappingString the mapping string\n * \\returns 1 if a new mapping is added, 0 if an existing mapping is updated,\n *          -1 on error; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerMapping\n * \\sa SDL_GameControllerMappingForGUID\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString);\n\n/**\n * Get the number of mappings installed.\n *\n * \\returns the number of mappings.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void);\n\n/**\n * Get the mapping at a particular index.\n *\n * \\returns the mapping string. Must be freed with SDL_free(). Returns NULL if\n *          the index is out of range.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index);\n\n/**\n * Get the game controller mapping string for a given GUID.\n *\n * The returned string must be freed with SDL_free().\n *\n * \\param guid a structure containing the GUID for which a mapping is desired\n * \\returns a mapping string or NULL on error; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetDeviceGUID\n * \\sa SDL_JoystickGetGUID\n */\nextern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid);\n\n/**\n * Get the current mapping of a Game Controller.\n *\n * The returned string must be freed with SDL_free().\n *\n * Details about mappings are discussed with SDL_GameControllerAddMapping().\n *\n * \\param gamecontroller the game controller you want to get the current\n *                       mapping for\n * \\returns a string that has the controller's mapping or NULL if no mapping\n *          is available; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerAddMapping\n * \\sa SDL_GameControllerMappingForGUID\n */\nextern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller);\n\n/**\n * Check if the given joystick is supported by the game controller interface.\n *\n * `joystick_index` is the same as the `device_index` passed to\n * SDL_JoystickOpen().\n *\n * \\param joystick_index the device_index of a device, up to\n *                       SDL_NumJoysticks()\n * \\returns SDL_TRUE if the given joystick is supported by the game controller\n *          interface, SDL_FALSE if it isn't or it's an invalid index.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerNameForIndex\n * \\sa SDL_GameControllerOpen\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index);\n\n/**\n * Get the implementation dependent name for the game controller.\n *\n * This function can be called before any controllers are opened.\n *\n * `joystick_index` is the same as the `device_index` passed to\n * SDL_JoystickOpen().\n *\n * \\param joystick_index the device_index of a device, from zero to\n *                       SDL_NumJoysticks()-1\n * \\returns the implementation-dependent name for the game controller, or NULL\n *          if there is no name or the index is invalid.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerName\n * \\sa SDL_GameControllerOpen\n * \\sa SDL_IsGameController\n */\nextern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index);\n\n/**\n * Get the implementation dependent path for the game controller.\n *\n * This function can be called before any controllers are opened.\n *\n * `joystick_index` is the same as the `device_index` passed to\n * SDL_JoystickOpen().\n *\n * \\param joystick_index the device_index of a device, from zero to\n *                       SDL_NumJoysticks()-1\n * \\returns the implementation-dependent path for the game controller, or NULL\n *          if there is no path or the index is invalid.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GameControllerPath\n */\nextern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index);\n\n/**\n * Get the type of a game controller.\n *\n * This can be called before any controllers are opened.\n *\n * \\param joystick_index the device_index of a device, from zero to\n *                       SDL_NumJoysticks()-1\n * \\returns the controller type.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index);\n\n/**\n * Get the mapping of a game controller.\n *\n * This can be called before any controllers are opened.\n *\n * \\param joystick_index the device_index of a device, from zero to\n *                       SDL_NumJoysticks()-1\n * \\returns the mapping string. Must be freed with SDL_free(). Returns NULL if\n *          no mapping is available.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index);\n\n/**\n * Open a game controller for use.\n *\n * `joystick_index` is the same as the `device_index` passed to\n * SDL_JoystickOpen().\n *\n * The index passed as an argument refers to the N'th game controller on the\n * system. This index is not the value which will identify this controller in\n * future controller events. The joystick's instance id (SDL_JoystickID) will\n * be used there instead.\n *\n * \\param joystick_index the device_index of a device, up to\n *                       SDL_NumJoysticks()\n * \\returns a gamecontroller identifier or NULL if an error occurred; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerClose\n * \\sa SDL_GameControllerNameForIndex\n * \\sa SDL_IsGameController\n */\nextern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index);\n\n/**\n * Get the SDL_GameController associated with an instance id.\n *\n * \\param joyid the instance id to get the SDL_GameController for\n * \\returns an SDL_GameController on success or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n */\nextern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid);\n\n/**\n * Get the SDL_GameController associated with a player index.\n *\n * Please note that the player index is _not_ the device index, nor is it the\n * instance id!\n *\n * \\param player_index the player index, which is not the device index or the\n *                     instance id!\n * \\returns the SDL_GameController associated with a player index.\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_GameControllerGetPlayerIndex\n * \\sa SDL_GameControllerSetPlayerIndex\n */\nextern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index);\n\n/**\n * Get the implementation-dependent name for an opened game controller.\n *\n * This is the same name as returned by SDL_GameControllerNameForIndex(), but\n * it takes a controller identifier instead of the (unstable) device index.\n *\n * \\param gamecontroller a game controller identifier previously returned by\n *                       SDL_GameControllerOpen()\n * \\returns the implementation dependent name for the game controller, or NULL\n *          if there is no name or the identifier passed is invalid.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerNameForIndex\n * \\sa SDL_GameControllerOpen\n */\nextern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller);\n\n/**\n * Get the implementation-dependent path for an opened game controller.\n *\n * This is the same path as returned by SDL_GameControllerNameForIndex(), but\n * it takes a controller identifier instead of the (unstable) device index.\n *\n * \\param gamecontroller a game controller identifier previously returned by\n *                       SDL_GameControllerOpen()\n * \\returns the implementation dependent path for the game controller, or NULL\n *          if there is no path or the identifier passed is invalid.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GameControllerPathForIndex\n */\nextern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller);\n\n/**\n * Get the type of this currently opened controller\n *\n * This is the same name as returned by SDL_GameControllerTypeForIndex(), but\n * it takes a controller identifier instead of the (unstable) device index.\n *\n * \\param gamecontroller the game controller object to query.\n * \\returns the controller type.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller);\n\n/**\n * Get the player index of an opened game controller.\n *\n * For XInput controllers this returns the XInput user index.\n *\n * \\param gamecontroller the game controller object to query.\n * \\returns the player index for controller, or -1 if it's not available.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller);\n\n/**\n * Set the player index of an opened game controller.\n *\n * \\param gamecontroller the game controller object to adjust.\n * \\param player_index Player index to assign to this controller, or -1 to\n *                     clear the player index and turn off player LEDs.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index);\n\n/**\n * Get the USB vendor ID of an opened controller, if available.\n *\n * If the vendor ID isn't available this function returns 0.\n *\n * \\param gamecontroller the game controller object to query.\n * \\return the USB vendor ID, or zero if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller);\n\n/**\n * Get the USB product ID of an opened controller, if available.\n *\n * If the product ID isn't available this function returns 0.\n *\n * \\param gamecontroller the game controller object to query.\n * \\return the USB product ID, or zero if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller);\n\n/**\n * Get the product version of an opened controller, if available.\n *\n * If the product version isn't available this function returns 0.\n *\n * \\param gamecontroller the game controller object to query.\n * \\return the USB product version, or zero if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller);\n\n/**\n * Get the firmware version of an opened controller, if available.\n *\n * If the firmware version isn't available this function returns 0.\n *\n * \\param gamecontroller the game controller object to query.\n * \\return the controller firmware version, or zero if unavailable.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller);\n\n/**\n * Get the serial number of an opened controller, if available.\n *\n * Returns the serial number of the controller, or NULL if it is not\n * available.\n *\n * \\param gamecontroller the game controller object to query.\n * \\return the serial number, or NULL if unavailable.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller);\n\n/**\n * Get the Steam Input handle of an opened controller, if available.\n *\n * Returns an InputHandle_t for the controller that can be used with Steam Input API:\n * https://partner.steamgames.com/doc/api/ISteamInput\n *\n * \\param gamecontroller the game controller object to query.\n * \\returns the gamepad handle, or 0 if unavailable.\n *\n * \\since This function is available since SDL 2.30.0.\n */\nextern DECLSPEC Uint64 SDLCALL SDL_GameControllerGetSteamHandle(SDL_GameController *gamecontroller);\n\n\n/**\n * Check if a controller has been opened and is currently connected.\n *\n * \\param gamecontroller a game controller identifier previously returned by\n *                       SDL_GameControllerOpen()\n * \\returns SDL_TRUE if the controller has been opened and is currently\n *          connected, or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerClose\n * \\sa SDL_GameControllerOpen\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller);\n\n/**\n * Get the Joystick ID from a Game Controller.\n *\n * This function will give you a SDL_Joystick object, which allows you to use\n * the SDL_Joystick functions with a SDL_GameController object. This would be\n * useful for getting a joystick's position at any given time, even if it\n * hasn't moved (moving it would produce an event, which would have the axis'\n * value).\n *\n * The pointer returned is owned by the SDL_GameController. You should not\n * call SDL_JoystickClose() on it, for example, since doing so will likely\n * cause SDL to crash.\n *\n * \\param gamecontroller the game controller object that you want to get a\n *                       joystick from\n * \\returns a SDL_Joystick object; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller);\n\n/**\n * Query or change current state of Game Controller events.\n *\n * If controller events are disabled, you must call SDL_GameControllerUpdate()\n * yourself and check the state of the controller when you want controller\n * information.\n *\n * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0,\n * and 1 will have any effect. Other numbers will just be returned.\n *\n * \\param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`\n * \\returns the same value passed to the function, with exception to -1\n *          (SDL_QUERY), which will return the current state.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickEventState\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state);\n\n/**\n * Manually pump game controller updates if not using the loop.\n *\n * This function is called automatically by the event loop if events are\n * enabled. Under such circumstances, it will not be necessary to call this\n * function.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void);\n\n\n/**\n *  The list of axes available from a controller\n *\n *  Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX,\n *  and are centered within ~8000 of zero, though advanced UI will allow users to set\n *  or autodetect the dead zone, which varies between controllers.\n *\n *  Trigger axis values range from 0 (released) to SDL_JOYSTICK_AXIS_MAX\n *  (fully pressed) when reported by SDL_GameControllerGetAxis(). Note that this is not the\n *  same range that will be reported by the lower-level SDL_GetJoystickAxis().\n */\ntypedef enum\n{\n    SDL_CONTROLLER_AXIS_INVALID = -1,\n    SDL_CONTROLLER_AXIS_LEFTX,\n    SDL_CONTROLLER_AXIS_LEFTY,\n    SDL_CONTROLLER_AXIS_RIGHTX,\n    SDL_CONTROLLER_AXIS_RIGHTY,\n    SDL_CONTROLLER_AXIS_TRIGGERLEFT,\n    SDL_CONTROLLER_AXIS_TRIGGERRIGHT,\n    SDL_CONTROLLER_AXIS_MAX\n} SDL_GameControllerAxis;\n\n/**\n * Convert a string into SDL_GameControllerAxis enum.\n *\n * This function is called internally to translate SDL_GameController mapping\n * strings for the underlying joystick device into the consistent\n * SDL_GameController mapping. You do not normally need to call this function\n * unless you are parsing SDL_GameController mappings in your own code.\n *\n * Note specially that \"righttrigger\" and \"lefttrigger\" map to\n * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`,\n * respectively.\n *\n * \\param str string representing a SDL_GameController axis\n * \\returns the SDL_GameControllerAxis enum corresponding to the input string,\n *          or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetStringForAxis\n */\nextern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str);\n\n/**\n * Convert from an SDL_GameControllerAxis enum to a string.\n *\n * The caller should not SDL_free() the returned string.\n *\n * \\param axis an enum value for a given SDL_GameControllerAxis\n * \\returns a string for the given axis, or NULL if an invalid axis is\n *          specified. The string returned is of the format used by\n *          SDL_GameController mapping strings.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetAxisFromString\n */\nextern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis);\n\n/**\n * Get the SDL joystick layer binding for a controller axis mapping.\n *\n * \\param gamecontroller a game controller\n * \\param axis an axis enum value (one of the SDL_GameControllerAxis values)\n * \\returns a SDL_GameControllerButtonBind describing the bind. On failure\n *          (like the given Controller axis doesn't exist on the device), its\n *          `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetBindForButton\n */\nextern DECLSPEC SDL_GameControllerButtonBind SDLCALL\nSDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller,\n                                 SDL_GameControllerAxis axis);\n\n/**\n * Query whether a game controller has a given axis.\n *\n * This merely reports whether the controller's mapping defined this axis, as\n * that is all the information SDL has about the physical device.\n *\n * \\param gamecontroller a game controller\n * \\param axis an axis enum value (an SDL_GameControllerAxis value)\n * \\returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL\nSDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);\n\n/**\n * Get the current state of an axis control on a game controller.\n *\n * The axis indices start at index 0.\n *\n * For thumbsticks, the state is a value ranging from -32768 (up/left)\n * to 32767 (down/right).\n *\n * Triggers range from 0 when released to 32767 when fully pressed, and\n * never return a negative value. Note that this differs from the value\n * reported by the lower-level SDL_GetJoystickAxis(), which normally uses\n * the full range.\n *\n * \\param gamecontroller a game controller\n * \\param axis an axis index (one of the SDL_GameControllerAxis values)\n * \\returns axis state (including 0) on success or 0 (also) on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetButton\n */\nextern DECLSPEC Sint16 SDLCALL\nSDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);\n\n/**\n *  The list of buttons available from a controller\n */\ntypedef enum\n{\n    SDL_CONTROLLER_BUTTON_INVALID = -1,\n    SDL_CONTROLLER_BUTTON_A,\n    SDL_CONTROLLER_BUTTON_B,\n    SDL_CONTROLLER_BUTTON_X,\n    SDL_CONTROLLER_BUTTON_Y,\n    SDL_CONTROLLER_BUTTON_BACK,\n    SDL_CONTROLLER_BUTTON_GUIDE,\n    SDL_CONTROLLER_BUTTON_START,\n    SDL_CONTROLLER_BUTTON_LEFTSTICK,\n    SDL_CONTROLLER_BUTTON_RIGHTSTICK,\n    SDL_CONTROLLER_BUTTON_LEFTSHOULDER,\n    SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,\n    SDL_CONTROLLER_BUTTON_DPAD_UP,\n    SDL_CONTROLLER_BUTTON_DPAD_DOWN,\n    SDL_CONTROLLER_BUTTON_DPAD_LEFT,\n    SDL_CONTROLLER_BUTTON_DPAD_RIGHT,\n    SDL_CONTROLLER_BUTTON_MISC1,    /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */\n    SDL_CONTROLLER_BUTTON_PADDLE1,  /* Xbox Elite paddle P1 (upper left, facing the back) */\n    SDL_CONTROLLER_BUTTON_PADDLE2,  /* Xbox Elite paddle P3 (upper right, facing the back) */\n    SDL_CONTROLLER_BUTTON_PADDLE3,  /* Xbox Elite paddle P2 (lower left, facing the back) */\n    SDL_CONTROLLER_BUTTON_PADDLE4,  /* Xbox Elite paddle P4 (lower right, facing the back) */\n    SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */\n    SDL_CONTROLLER_BUTTON_MAX\n} SDL_GameControllerButton;\n\n/**\n * Convert a string into an SDL_GameControllerButton enum.\n *\n * This function is called internally to translate SDL_GameController mapping\n * strings for the underlying joystick device into the consistent\n * SDL_GameController mapping. You do not normally need to call this function\n * unless you are parsing SDL_GameController mappings in your own code.\n *\n * \\param str string representing a SDL_GameController axis\n * \\returns the SDL_GameControllerButton enum corresponding to the input\n *          string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str);\n\n/**\n * Convert from an SDL_GameControllerButton enum to a string.\n *\n * The caller should not SDL_free() the returned string.\n *\n * \\param button an enum value for a given SDL_GameControllerButton\n * \\returns a string for the given button, or NULL if an invalid button is\n *          specified. The string returned is of the format used by\n *          SDL_GameController mapping strings.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetButtonFromString\n */\nextern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button);\n\n/**\n * Get the SDL joystick layer binding for a controller button mapping.\n *\n * \\param gamecontroller a game controller\n * \\param button an button enum value (an SDL_GameControllerButton value)\n * \\returns a SDL_GameControllerButtonBind describing the bind. On failure\n *          (like the given Controller button doesn't exist on the device),\n *          its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetBindForAxis\n */\nextern DECLSPEC SDL_GameControllerButtonBind SDLCALL\nSDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller,\n                                   SDL_GameControllerButton button);\n\n/**\n * Query whether a game controller has a given button.\n *\n * This merely reports whether the controller's mapping defined this button,\n * as that is all the information SDL has about the physical device.\n *\n * \\param gamecontroller a game controller\n * \\param button a button enum value (an SDL_GameControllerButton value)\n * \\returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller,\n                                                             SDL_GameControllerButton button);\n\n/**\n * Get the current state of a button on a game controller.\n *\n * \\param gamecontroller a game controller\n * \\param button a button index (one of the SDL_GameControllerButton values)\n * \\returns 1 for pressed state or 0 for not pressed state or error; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerGetAxis\n */\nextern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller,\n                                                          SDL_GameControllerButton button);\n\n/**\n * Get the number of touchpads on a game controller.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller);\n\n/**\n * Get the number of supported simultaneous fingers on a touchpad on a game\n * controller.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad);\n\n/**\n * Get the current state of a finger on a touchpad on a game controller.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure);\n\n/**\n * Return whether a game controller has a particular sensor.\n *\n * \\param gamecontroller The controller to query\n * \\param type The type of sensor to query\n * \\returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type);\n\n/**\n * Set whether data reporting for a game controller sensor is enabled.\n *\n * \\param gamecontroller The controller to update\n * \\param type The type of sensor to enable/disable\n * \\param enabled Whether data reporting should be enabled\n * \\returns 0 or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled);\n\n/**\n * Query whether sensor data reporting is enabled for a game controller.\n *\n * \\param gamecontroller The controller to query\n * \\param type The type of sensor to query\n * \\returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type);\n\n/**\n * Get the data rate (number of events per second) of a game controller\n * sensor.\n *\n * \\param gamecontroller The controller to query\n * \\param type The type of sensor to query\n * \\return the data rate, or 0.0f if the data rate is not available.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type);\n\n/**\n * Get the current state of a game controller sensor.\n *\n * The number of values and interpretation of the data is sensor dependent.\n * See SDL_sensor.h for the details for each type of sensor.\n *\n * \\param gamecontroller The controller to query\n * \\param type The type of sensor to query\n * \\param data A pointer filled with the current sensor state\n * \\param num_values The number of values to write to data\n * \\return 0 or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values);\n\n/**\n * Get the current state of a game controller sensor with the timestamp of the\n * last update.\n *\n * The number of values and interpretation of the data is sensor dependent.\n * See SDL_sensor.h for the details for each type of sensor.\n *\n * \\param gamecontroller The controller to query\n * \\param type The type of sensor to query\n * \\param timestamp A pointer filled with the timestamp in microseconds of the\n *                  current sensor reading if available, or 0 if not\n * \\param data A pointer filled with the current sensor state\n * \\param num_values The number of values to write to data\n * \\return 0 or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.26.0.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values);\n\n/**\n * Start a rumble effect on a game controller.\n *\n * Each call to this function cancels any previous rumble effect, and calling\n * it with 0 intensity stops any rumbling.\n *\n * \\param gamecontroller The controller to vibrate\n * \\param low_frequency_rumble The intensity of the low frequency (left)\n *                             rumble motor, from 0 to 0xFFFF\n * \\param high_frequency_rumble The intensity of the high frequency (right)\n *                              rumble motor, from 0 to 0xFFFF\n * \\param duration_ms The duration of the rumble effect, in milliseconds\n * \\returns 0, or -1 if rumble isn't supported on this controller\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_GameControllerHasRumble\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);\n\n/**\n * Start a rumble effect in the game controller's triggers.\n *\n * Each call to this function cancels any previous trigger rumble effect, and\n * calling it with 0 intensity stops any rumbling.\n *\n * Note that this is rumbling of the _triggers_ and not the game controller as\n * a whole. This is currently only supported on Xbox One controllers. If you\n * want the (more common) whole-controller rumble, use\n * SDL_GameControllerRumble() instead.\n *\n * \\param gamecontroller The controller to vibrate\n * \\param left_rumble The intensity of the left trigger rumble motor, from 0\n *                    to 0xFFFF\n * \\param right_rumble The intensity of the right trigger rumble motor, from 0\n *                     to 0xFFFF\n * \\param duration_ms The duration of the rumble effect, in milliseconds\n * \\returns 0, or -1 if trigger rumble isn't supported on this controller\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_GameControllerHasRumbleTriggers\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);\n\n/**\n * Query whether a game controller has an LED.\n *\n * \\param gamecontroller The controller to query\n * \\returns SDL_TRUE, or SDL_FALSE if this controller does not have a\n *          modifiable LED\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller);\n\n/**\n * Query whether a game controller has rumble support.\n *\n * \\param gamecontroller The controller to query\n * \\returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble\n *          support\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GameControllerRumble\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller);\n\n/**\n * Query whether a game controller has rumble support on triggers.\n *\n * \\param gamecontroller The controller to query\n * \\returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger\n *          rumble support\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GameControllerRumbleTriggers\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller);\n\n/**\n * Update a game controller's LED color.\n *\n * \\param gamecontroller The controller to update\n * \\param red The intensity of the red LED\n * \\param green The intensity of the green LED\n * \\param blue The intensity of the blue LED\n * \\returns 0, or -1 if this controller does not have a modifiable LED\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue);\n\n/**\n * Send a controller specific effect packet\n *\n * \\param gamecontroller The controller to affect\n * \\param data The data to send to the controller\n * \\param size The size of the data to send to the controller\n * \\returns 0, or -1 if this controller or driver doesn't support effect\n *          packets\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size);\n\n/**\n * Close a game controller previously opened with SDL_GameControllerOpen().\n *\n * \\param gamecontroller a game controller identifier previously returned by\n *                       SDL_GameControllerOpen()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerOpen\n */\nextern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller);\n\n/**\n * Return the sfSymbolsName for a given button on a game controller on Apple\n * platforms.\n *\n * \\param gamecontroller the controller to query\n * \\param button a button on the game controller\n * \\returns the sfSymbolsName or NULL if the name can't be found\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GameControllerGetAppleSFSymbolsNameForAxis\n */\nextern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button);\n\n/**\n * Return the sfSymbolsName for a given axis on a game controller on Apple\n * platforms.\n *\n * \\param gamecontroller the controller to query\n * \\param axis an axis on the game controller\n * \\returns the sfSymbolsName or NULL if the name can't be found\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GameControllerGetAppleSFSymbolsNameForButton\n */\nextern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_gamecontroller_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_gesture.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_gesture.h\n *\n *  Include file for SDL gesture event handling.\n */\n\n#ifndef SDL_gesture_h_\n#define SDL_gesture_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_video.h\"\n\n#include \"SDL_touch.h\"\n\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef Sint64 SDL_GestureID;\n\n/* Function prototypes */\n\n/**\n * Begin recording a gesture on a specified touch device or all touch devices.\n *\n * If the parameter `touchId` is -1 (i.e., all devices), this function will\n * always return 1, regardless of whether there actually are any devices.\n *\n * \\param touchId the touch device id, or -1 for all touch devices\n * \\returns 1 on success or 0 if the specified device could not be found.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTouchDevice\n */\nextern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId);\n\n\n/**\n * Save all currently loaded Dollar Gesture templates.\n *\n * \\param dst a SDL_RWops to save to\n * \\returns the number of saved templates on success or 0 on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadDollarTemplates\n * \\sa SDL_SaveDollarTemplate\n */\nextern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst);\n\n/**\n * Save a currently loaded Dollar Gesture template.\n *\n * \\param gestureId a gesture id\n * \\param dst a SDL_RWops to save to\n * \\returns 1 on success or 0 on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadDollarTemplates\n * \\sa SDL_SaveAllDollarTemplates\n */\nextern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst);\n\n\n/**\n * Load Dollar Gesture templates from a file.\n *\n * \\param touchId a touch id\n * \\param src a SDL_RWops to load from\n * \\returns the number of loaded templates on success or a negative error code\n *          (or 0) on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SaveAllDollarTemplates\n * \\sa SDL_SaveDollarTemplate\n */\nextern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_gesture_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_guid.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_guid.h\n *\n *  Include file for handling ::SDL_GUID values.\n */\n\n#ifndef SDL_guid_h_\n#define SDL_guid_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * An SDL_GUID is a 128-bit identifier for an input device that\n *   identifies that device across runs of SDL programs on the same\n *   platform.  If the device is detached and then re-attached to a\n *   different port, or if the base system is rebooted, the device\n *   should still report the same GUID.\n *\n * GUIDs are as precise as possible but are not guaranteed to\n *   distinguish physically distinct but equivalent devices.  For\n *   example, two game controllers from the same vendor with the same\n *   product ID and revision may have the same GUID.\n *\n * GUIDs may be platform-dependent (i.e., the same device may report\n *   different GUIDs on different operating systems).\n */\ntypedef struct {\n    Uint8 data[16];\n} SDL_GUID;\n\n/* Function prototypes */\n\n/**\n * Get an ASCII string representation for a given ::SDL_GUID.\n *\n * You should supply at least 33 bytes for pszGUID.\n *\n * \\param guid the ::SDL_GUID you wish to convert to string\n * \\param pszGUID buffer in which to write the ASCII string\n * \\param cbGUID the size of pszGUID\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GUIDFromString\n */\nextern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID);\n\n/**\n * Convert a GUID string into a ::SDL_GUID structure.\n *\n * Performs no error checking. If this function is given a string containing\n * an invalid GUID, the function will silently succeed, but the GUID generated\n * will not be useful.\n *\n * \\param pchGUID string containing an ASCII representation of a GUID\n * \\returns a ::SDL_GUID structure.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GUIDToString\n */\nextern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_guid_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_haptic.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_haptic.h\n *\n *  \\brief The SDL haptic subsystem allows you to control haptic (force feedback)\n *         devices.\n *\n *  The basic usage is as follows:\n *   - Initialize the subsystem (::SDL_INIT_HAPTIC).\n *   - Open a haptic device.\n *    - SDL_HapticOpen() to open from index.\n *    - SDL_HapticOpenFromJoystick() to open from an existing joystick.\n *   - Create an effect (::SDL_HapticEffect).\n *   - Upload the effect with SDL_HapticNewEffect().\n *   - Run the effect with SDL_HapticRunEffect().\n *   - (optional) Free the effect with SDL_HapticDestroyEffect().\n *   - Close the haptic device with SDL_HapticClose().\n *\n * \\par Simple rumble example:\n * \\code\n *    SDL_Haptic *haptic;\n *\n *    // Open the device\n *    haptic = SDL_HapticOpen( 0 );\n *    if (haptic == NULL)\n *       return -1;\n *\n *    // Initialize simple rumble\n *    if (SDL_HapticRumbleInit( haptic ) != 0)\n *       return -1;\n *\n *    // Play effect at 50% strength for 2 seconds\n *    if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0)\n *       return -1;\n *    SDL_Delay( 2000 );\n *\n *    // Clean up\n *    SDL_HapticClose( haptic );\n * \\endcode\n *\n * \\par Complete example:\n * \\code\n * int test_haptic( SDL_Joystick * joystick ) {\n *    SDL_Haptic *haptic;\n *    SDL_HapticEffect effect;\n *    int effect_id;\n *\n *    // Open the device\n *    haptic = SDL_HapticOpenFromJoystick( joystick );\n *    if (haptic == NULL) return -1; // Most likely joystick isn't haptic\n *\n *    // See if it can do sine waves\n *    if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) {\n *       SDL_HapticClose(haptic); // No sine effect\n *       return -1;\n *    }\n *\n *    // Create the effect\n *    SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default\n *    effect.type = SDL_HAPTIC_SINE;\n *    effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates\n *    effect.periodic.direction.dir[0] = 18000; // Force comes from south\n *    effect.periodic.period = 1000; // 1000 ms\n *    effect.periodic.magnitude = 20000; // 20000/32767 strength\n *    effect.periodic.length = 5000; // 5 seconds long\n *    effect.periodic.attack_length = 1000; // Takes 1 second to get max strength\n *    effect.periodic.fade_length = 1000; // Takes 1 second to fade away\n *\n *    // Upload the effect\n *    effect_id = SDL_HapticNewEffect( haptic, &effect );\n *\n *    // Test the effect\n *    SDL_HapticRunEffect( haptic, effect_id, 1 );\n *    SDL_Delay( 5000); // Wait for the effect to finish\n *\n *    // We destroy the effect, although closing the device also does this\n *    SDL_HapticDestroyEffect( haptic, effect_id );\n *\n *    // Close the device\n *    SDL_HapticClose(haptic);\n *\n *    return 0; // Success\n * }\n * \\endcode\n */\n\n#ifndef SDL_haptic_h_\n#define SDL_haptic_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_joystick.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif /* __cplusplus */\n\n/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF).\n *\n * At the moment the magnitude variables are mixed between signed/unsigned, and\n * it is also not made clear that ALL of those variables expect a max of 0x7FFF.\n *\n * Some platforms may have higher precision than that (Linux FF, Windows XInput)\n * so we should fix the inconsistency in favor of higher possible precision,\n * adjusting for platforms that use different scales.\n * -flibit\n */\n\n/**\n *  \\typedef SDL_Haptic\n *\n *  \\brief The haptic structure used to identify an SDL haptic.\n *\n *  \\sa SDL_HapticOpen\n *  \\sa SDL_HapticOpenFromJoystick\n *  \\sa SDL_HapticClose\n */\nstruct _SDL_Haptic;\ntypedef struct _SDL_Haptic SDL_Haptic;\n\n\n/**\n *  \\name Haptic features\n *\n *  Different haptic features a device can have.\n */\n/* @{ */\n\n/**\n *  \\name Haptic effects\n */\n/* @{ */\n\n/**\n *  \\brief Constant effect supported.\n *\n *  Constant haptic effect.\n *\n *  \\sa SDL_HapticCondition\n */\n#define SDL_HAPTIC_CONSTANT   (1u<<0)\n\n/**\n *  \\brief Sine wave effect supported.\n *\n *  Periodic haptic effect that simulates sine waves.\n *\n *  \\sa SDL_HapticPeriodic\n */\n#define SDL_HAPTIC_SINE       (1u<<1)\n\n/**\n *  \\brief Left/Right effect supported.\n *\n *  Haptic effect for direct control over high/low frequency motors.\n *\n *  \\sa SDL_HapticLeftRight\n * \\warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry,\n *          we ran out of bits, and this is important for XInput devices.\n */\n#define SDL_HAPTIC_LEFTRIGHT     (1u<<2)\n\n/* !!! FIXME: put this back when we have more bits in 2.1 */\n/* #define SDL_HAPTIC_SQUARE     (1<<2) */\n\n/**\n *  \\brief Triangle wave effect supported.\n *\n *  Periodic haptic effect that simulates triangular waves.\n *\n *  \\sa SDL_HapticPeriodic\n */\n#define SDL_HAPTIC_TRIANGLE   (1u<<3)\n\n/**\n *  \\brief Sawtoothup wave effect supported.\n *\n *  Periodic haptic effect that simulates saw tooth up waves.\n *\n *  \\sa SDL_HapticPeriodic\n */\n#define SDL_HAPTIC_SAWTOOTHUP (1u<<4)\n\n/**\n *  \\brief Sawtoothdown wave effect supported.\n *\n *  Periodic haptic effect that simulates saw tooth down waves.\n *\n *  \\sa SDL_HapticPeriodic\n */\n#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5)\n\n/**\n *  \\brief Ramp effect supported.\n *\n *  Ramp haptic effect.\n *\n *  \\sa SDL_HapticRamp\n */\n#define SDL_HAPTIC_RAMP       (1u<<6)\n\n/**\n *  \\brief Spring effect supported - uses axes position.\n *\n *  Condition haptic effect that simulates a spring.  Effect is based on the\n *  axes position.\n *\n *  \\sa SDL_HapticCondition\n */\n#define SDL_HAPTIC_SPRING     (1u<<7)\n\n/**\n *  \\brief Damper effect supported - uses axes velocity.\n *\n *  Condition haptic effect that simulates dampening.  Effect is based on the\n *  axes velocity.\n *\n *  \\sa SDL_HapticCondition\n */\n#define SDL_HAPTIC_DAMPER     (1u<<8)\n\n/**\n *  \\brief Inertia effect supported - uses axes acceleration.\n *\n *  Condition haptic effect that simulates inertia.  Effect is based on the axes\n *  acceleration.\n *\n *  \\sa SDL_HapticCondition\n */\n#define SDL_HAPTIC_INERTIA    (1u<<9)\n\n/**\n *  \\brief Friction effect supported - uses axes movement.\n *\n *  Condition haptic effect that simulates friction.  Effect is based on the\n *  axes movement.\n *\n *  \\sa SDL_HapticCondition\n */\n#define SDL_HAPTIC_FRICTION   (1u<<10)\n\n/**\n *  \\brief Custom effect is supported.\n *\n *  User defined custom haptic effect.\n */\n#define SDL_HAPTIC_CUSTOM     (1u<<11)\n\n/* @} *//* Haptic effects */\n\n/* These last few are features the device has, not effects */\n\n/**\n *  \\brief Device can set global gain.\n *\n *  Device supports setting the global gain.\n *\n *  \\sa SDL_HapticSetGain\n */\n#define SDL_HAPTIC_GAIN       (1u<<12)\n\n/**\n *  \\brief Device can set autocenter.\n *\n *  Device supports setting autocenter.\n *\n *  \\sa SDL_HapticSetAutocenter\n */\n#define SDL_HAPTIC_AUTOCENTER (1u<<13)\n\n/**\n *  \\brief Device can be queried for effect status.\n *\n *  Device supports querying effect status.\n *\n *  \\sa SDL_HapticGetEffectStatus\n */\n#define SDL_HAPTIC_STATUS     (1u<<14)\n\n/**\n *  \\brief Device can be paused.\n *\n *  Devices supports being paused.\n *\n *  \\sa SDL_HapticPause\n *  \\sa SDL_HapticUnpause\n */\n#define SDL_HAPTIC_PAUSE      (1u<<15)\n\n\n/**\n * \\name Direction encodings\n */\n/* @{ */\n\n/**\n *  \\brief Uses polar coordinates for the direction.\n *\n *  \\sa SDL_HapticDirection\n */\n#define SDL_HAPTIC_POLAR      0\n\n/**\n *  \\brief Uses cartesian coordinates for the direction.\n *\n *  \\sa SDL_HapticDirection\n */\n#define SDL_HAPTIC_CARTESIAN  1\n\n/**\n *  \\brief Uses spherical coordinates for the direction.\n *\n *  \\sa SDL_HapticDirection\n */\n#define SDL_HAPTIC_SPHERICAL  2\n\n/**\n *  \\brief Use this value to play an effect on the steering wheel axis. This \n *  provides better compatibility across platforms and devices as SDL will guess \n *  the correct axis.\n *  \\sa SDL_HapticDirection\n */\n#define SDL_HAPTIC_STEERING_AXIS 3\n\n/* @} *//* Direction encodings */\n\n/* @} *//* Haptic features */\n\n/*\n * Misc defines.\n */\n\n/**\n * \\brief Used to play a device an infinite number of times.\n *\n * \\sa SDL_HapticRunEffect\n */\n#define SDL_HAPTIC_INFINITY   4294967295U\n\n\n/**\n *  \\brief Structure that represents a haptic direction.\n *\n *  This is the direction where the force comes from,\n *  instead of the direction in which the force is exerted.\n *\n *  Directions can be specified by:\n *   - ::SDL_HAPTIC_POLAR : Specified by polar coordinates.\n *   - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates.\n *   - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates.\n *\n *  Cardinal directions of the haptic device are relative to the positioning\n *  of the device.  North is considered to be away from the user.\n *\n *  The following diagram represents the cardinal directions:\n *  \\verbatim\n                 .--.\n                 |__| .-------.\n                 |=.| |.-----.|\n                 |--| ||     ||\n                 |  | |'-----'|\n                 |__|~')_____('\n                   [ COMPUTER ]\n\n\n                     North (0,-1)\n                         ^\n                         |\n                         |\n   (-1,0)  West <----[ HAPTIC ]----> East (1,0)\n                         |\n                         |\n                         v\n                      South (0,1)\n\n\n                      [ USER ]\n                        \\|||/\n                        (o o)\n                  ---ooO-(_)-Ooo---\n    \\endverbatim\n *\n *  If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a\n *  degree starting north and turning clockwise.  ::SDL_HAPTIC_POLAR only uses\n *  the first \\c dir parameter.  The cardinal directions would be:\n *   - North: 0 (0 degrees)\n *   - East: 9000 (90 degrees)\n *   - South: 18000 (180 degrees)\n *   - West: 27000 (270 degrees)\n *\n *  If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions\n *  (X axis, Y axis and Z axis (with 3 axes)).  ::SDL_HAPTIC_CARTESIAN uses\n *  the first three \\c dir parameters.  The cardinal directions would be:\n *   - North:  0,-1, 0\n *   - East:   1, 0, 0\n *   - South:  0, 1, 0\n *   - West:  -1, 0, 0\n *\n *  The Z axis represents the height of the effect if supported, otherwise\n *  it's unused.  In cartesian encoding (1, 2) would be the same as (2, 4), you\n *  can use any multiple you want, only the direction matters.\n *\n *  If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations.\n *  The first two \\c dir parameters are used.  The \\c dir parameters are as\n *  follows (all values are in hundredths of degrees):\n *   - Degrees from (1, 0) rotated towards (0, 1).\n *   - Degrees towards (0, 0, 1) (device needs at least 3 axes).\n *\n *\n *  Example of force coming from the south with all encodings (force coming\n *  from the south means the user will have to pull the stick to counteract):\n *  \\code\n *  SDL_HapticDirection direction;\n *\n *  // Cartesian directions\n *  direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding.\n *  direction.dir[0] = 0; // X position\n *  direction.dir[1] = 1; // Y position\n *  // Assuming the device has 2 axes, we don't need to specify third parameter.\n *\n *  // Polar directions\n *  direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding.\n *  direction.dir[0] = 18000; // Polar only uses first parameter\n *\n *  // Spherical coordinates\n *  direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding\n *  direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters.\n *  \\endcode\n *\n *  \\sa SDL_HAPTIC_POLAR\n *  \\sa SDL_HAPTIC_CARTESIAN\n *  \\sa SDL_HAPTIC_SPHERICAL\n *  \\sa SDL_HAPTIC_STEERING_AXIS\n *  \\sa SDL_HapticEffect\n *  \\sa SDL_HapticNumAxes\n */\ntypedef struct SDL_HapticDirection\n{\n    Uint8 type;         /**< The type of encoding. */\n    Sint32 dir[3];      /**< The encoded direction. */\n} SDL_HapticDirection;\n\n\n/**\n *  \\brief A structure containing a template for a Constant effect.\n *\n *  This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect.\n *\n *  A constant effect applies a constant force in the specified direction\n *  to the joystick.\n *\n *  \\sa SDL_HAPTIC_CONSTANT\n *  \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticConstant\n{\n    /* Header */\n    Uint16 type;            /**< ::SDL_HAPTIC_CONSTANT */\n    SDL_HapticDirection direction;  /**< Direction of the effect. */\n\n    /* Replay */\n    Uint32 length;          /**< Duration of the effect. */\n    Uint16 delay;           /**< Delay before starting the effect. */\n\n    /* Trigger */\n    Uint16 button;          /**< Button that triggers the effect. */\n    Uint16 interval;        /**< How soon it can be triggered again after button. */\n\n    /* Constant */\n    Sint16 level;           /**< Strength of the constant effect. */\n\n    /* Envelope */\n    Uint16 attack_length;   /**< Duration of the attack. */\n    Uint16 attack_level;    /**< Level at the start of the attack. */\n    Uint16 fade_length;     /**< Duration of the fade. */\n    Uint16 fade_level;      /**< Level at the end of the fade. */\n} SDL_HapticConstant;\n\n/**\n *  \\brief A structure containing a template for a Periodic effect.\n *\n *  The struct handles the following effects:\n *   - ::SDL_HAPTIC_SINE\n *   - ::SDL_HAPTIC_LEFTRIGHT\n *   - ::SDL_HAPTIC_TRIANGLE\n *   - ::SDL_HAPTIC_SAWTOOTHUP\n *   - ::SDL_HAPTIC_SAWTOOTHDOWN\n *\n *  A periodic effect consists in a wave-shaped effect that repeats itself\n *  over time.  The type determines the shape of the wave and the parameters\n *  determine the dimensions of the wave.\n *\n *  Phase is given by hundredth of a degree meaning that giving the phase a value\n *  of 9000 will displace it 25% of its period.  Here are sample values:\n *   -     0: No phase displacement.\n *   -  9000: Displaced 25% of its period.\n *   - 18000: Displaced 50% of its period.\n *   - 27000: Displaced 75% of its period.\n *   - 36000: Displaced 100% of its period, same as 0, but 0 is preferred.\n *\n *  Examples:\n *  \\verbatim\n    SDL_HAPTIC_SINE\n      __      __      __      __\n     /  \\    /  \\    /  \\    /\n    /    \\__/    \\__/    \\__/\n\n    SDL_HAPTIC_SQUARE\n     __    __    __    __    __\n    |  |  |  |  |  |  |  |  |  |\n    |  |__|  |__|  |__|  |__|  |\n\n    SDL_HAPTIC_TRIANGLE\n      /\\    /\\    /\\    /\\    /\\\n     /  \\  /  \\  /  \\  /  \\  /\n    /    \\/    \\/    \\/    \\/\n\n    SDL_HAPTIC_SAWTOOTHUP\n      /|  /|  /|  /|  /|  /|  /|\n     / | / | / | / | / | / | / |\n    /  |/  |/  |/  |/  |/  |/  |\n\n    SDL_HAPTIC_SAWTOOTHDOWN\n    \\  |\\  |\\  |\\  |\\  |\\  |\\  |\n     \\ | \\ | \\ | \\ | \\ | \\ | \\ |\n      \\|  \\|  \\|  \\|  \\|  \\|  \\|\n    \\endverbatim\n *\n *  \\sa SDL_HAPTIC_SINE\n *  \\sa SDL_HAPTIC_LEFTRIGHT\n *  \\sa SDL_HAPTIC_TRIANGLE\n *  \\sa SDL_HAPTIC_SAWTOOTHUP\n *  \\sa SDL_HAPTIC_SAWTOOTHDOWN\n *  \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticPeriodic\n{\n    /* Header */\n    Uint16 type;        /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,\n                             ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or\n                             ::SDL_HAPTIC_SAWTOOTHDOWN */\n    SDL_HapticDirection direction;  /**< Direction of the effect. */\n\n    /* Replay */\n    Uint32 length;      /**< Duration of the effect. */\n    Uint16 delay;       /**< Delay before starting the effect. */\n\n    /* Trigger */\n    Uint16 button;      /**< Button that triggers the effect. */\n    Uint16 interval;    /**< How soon it can be triggered again after button. */\n\n    /* Periodic */\n    Uint16 period;      /**< Period of the wave. */\n    Sint16 magnitude;   /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */\n    Sint16 offset;      /**< Mean value of the wave. */\n    Uint16 phase;       /**< Positive phase shift given by hundredth of a degree. */\n\n    /* Envelope */\n    Uint16 attack_length;   /**< Duration of the attack. */\n    Uint16 attack_level;    /**< Level at the start of the attack. */\n    Uint16 fade_length; /**< Duration of the fade. */\n    Uint16 fade_level;  /**< Level at the end of the fade. */\n} SDL_HapticPeriodic;\n\n/**\n *  \\brief A structure containing a template for a Condition effect.\n *\n *  The struct handles the following effects:\n *   - ::SDL_HAPTIC_SPRING: Effect based on axes position.\n *   - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity.\n *   - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration.\n *   - ::SDL_HAPTIC_FRICTION: Effect based on axes movement.\n *\n *  Direction is handled by condition internals instead of a direction member.\n *  The condition effect specific members have three parameters.  The first\n *  refers to the X axis, the second refers to the Y axis and the third\n *  refers to the Z axis.  The right terms refer to the positive side of the\n *  axis and the left terms refer to the negative side of the axis.  Please\n *  refer to the ::SDL_HapticDirection diagram for which side is positive and\n *  which is negative.\n *\n *  \\sa SDL_HapticDirection\n *  \\sa SDL_HAPTIC_SPRING\n *  \\sa SDL_HAPTIC_DAMPER\n *  \\sa SDL_HAPTIC_INERTIA\n *  \\sa SDL_HAPTIC_FRICTION\n *  \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticCondition\n{\n    /* Header */\n    Uint16 type;            /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,\n                                 ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */\n    SDL_HapticDirection direction;  /**< Direction of the effect - Not used ATM. */\n\n    /* Replay */\n    Uint32 length;          /**< Duration of the effect. */\n    Uint16 delay;           /**< Delay before starting the effect. */\n\n    /* Trigger */\n    Uint16 button;          /**< Button that triggers the effect. */\n    Uint16 interval;        /**< How soon it can be triggered again after button. */\n\n    /* Condition */\n    Uint16 right_sat[3];    /**< Level when joystick is to the positive side; max 0xFFFF. */\n    Uint16 left_sat[3];     /**< Level when joystick is to the negative side; max 0xFFFF. */\n    Sint16 right_coeff[3];  /**< How fast to increase the force towards the positive side. */\n    Sint16 left_coeff[3];   /**< How fast to increase the force towards the negative side. */\n    Uint16 deadband[3];     /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */\n    Sint16 center[3];       /**< Position of the dead zone. */\n} SDL_HapticCondition;\n\n/**\n *  \\brief A structure containing a template for a Ramp effect.\n *\n *  This struct is exclusively for the ::SDL_HAPTIC_RAMP effect.\n *\n *  The ramp effect starts at start strength and ends at end strength.\n *  It augments in linear fashion.  If you use attack and fade with a ramp\n *  the effects get added to the ramp effect making the effect become\n *  quadratic instead of linear.\n *\n *  \\sa SDL_HAPTIC_RAMP\n *  \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticRamp\n{\n    /* Header */\n    Uint16 type;            /**< ::SDL_HAPTIC_RAMP */\n    SDL_HapticDirection direction;  /**< Direction of the effect. */\n\n    /* Replay */\n    Uint32 length;          /**< Duration of the effect. */\n    Uint16 delay;           /**< Delay before starting the effect. */\n\n    /* Trigger */\n    Uint16 button;          /**< Button that triggers the effect. */\n    Uint16 interval;        /**< How soon it can be triggered again after button. */\n\n    /* Ramp */\n    Sint16 start;           /**< Beginning strength level. */\n    Sint16 end;             /**< Ending strength level. */\n\n    /* Envelope */\n    Uint16 attack_length;   /**< Duration of the attack. */\n    Uint16 attack_level;    /**< Level at the start of the attack. */\n    Uint16 fade_length;     /**< Duration of the fade. */\n    Uint16 fade_level;      /**< Level at the end of the fade. */\n} SDL_HapticRamp;\n\n/**\n * \\brief A structure containing a template for a Left/Right effect.\n *\n * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect.\n *\n * The Left/Right effect is used to explicitly control the large and small\n * motors, commonly found in modern game controllers. The small (right) motor\n * is high frequency, and the large (left) motor is low frequency.\n *\n * \\sa SDL_HAPTIC_LEFTRIGHT\n * \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticLeftRight\n{\n    /* Header */\n    Uint16 type;            /**< ::SDL_HAPTIC_LEFTRIGHT */\n\n    /* Replay */\n    Uint32 length;          /**< Duration of the effect in milliseconds. */\n\n    /* Rumble */\n    Uint16 large_magnitude; /**< Control of the large controller motor. */\n    Uint16 small_magnitude; /**< Control of the small controller motor. */\n} SDL_HapticLeftRight;\n\n/**\n *  \\brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect.\n *\n *  This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect.\n *\n *  A custom force feedback effect is much like a periodic effect, where the\n *  application can define its exact shape.  You will have to allocate the\n *  data yourself.  Data should consist of channels * samples Uint16 samples.\n *\n *  If channels is one, the effect is rotated using the defined direction.\n *  Otherwise it uses the samples in data for the different axes.\n *\n *  \\sa SDL_HAPTIC_CUSTOM\n *  \\sa SDL_HapticEffect\n */\ntypedef struct SDL_HapticCustom\n{\n    /* Header */\n    Uint16 type;            /**< ::SDL_HAPTIC_CUSTOM */\n    SDL_HapticDirection direction;  /**< Direction of the effect. */\n\n    /* Replay */\n    Uint32 length;          /**< Duration of the effect. */\n    Uint16 delay;           /**< Delay before starting the effect. */\n\n    /* Trigger */\n    Uint16 button;          /**< Button that triggers the effect. */\n    Uint16 interval;        /**< How soon it can be triggered again after button. */\n\n    /* Custom */\n    Uint8 channels;         /**< Axes to use, minimum of one. */\n    Uint16 period;          /**< Sample periods. */\n    Uint16 samples;         /**< Amount of samples. */\n    Uint16 *data;           /**< Should contain channels*samples items. */\n\n    /* Envelope */\n    Uint16 attack_length;   /**< Duration of the attack. */\n    Uint16 attack_level;    /**< Level at the start of the attack. */\n    Uint16 fade_length;     /**< Duration of the fade. */\n    Uint16 fade_level;      /**< Level at the end of the fade. */\n} SDL_HapticCustom;\n\n/**\n *  \\brief The generic template for any haptic effect.\n *\n *  All values max at 32767 (0x7FFF).  Signed values also can be negative.\n *  Time values unless specified otherwise are in milliseconds.\n *\n *  You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767\n *  value.  Neither delay, interval, attack_length nor fade_length support\n *  ::SDL_HAPTIC_INFINITY.  Fade will also not be used since effect never ends.\n *\n *  Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of\n *  ::SDL_HAPTIC_INFINITY.\n *\n *  Button triggers may not be supported on all devices, it is advised to not\n *  use them if possible.  Buttons start at index 1 instead of index 0 like\n *  the joystick.\n *\n *  If both attack_length and fade_level are 0, the envelope is not used,\n *  otherwise both values are used.\n *\n *  Common parts:\n *  \\code\n *  // Replay - All effects have this\n *  Uint32 length;        // Duration of effect (ms).\n *  Uint16 delay;         // Delay before starting effect.\n *\n *  // Trigger - All effects have this\n *  Uint16 button;        // Button that triggers effect.\n *  Uint16 interval;      // How soon before effect can be triggered again.\n *\n *  // Envelope - All effects except condition effects have this\n *  Uint16 attack_length; // Duration of the attack (ms).\n *  Uint16 attack_level;  // Level at the start of the attack.\n *  Uint16 fade_length;   // Duration of the fade out (ms).\n *  Uint16 fade_level;    // Level at the end of the fade.\n *  \\endcode\n *\n *\n *  Here we have an example of a constant effect evolution in time:\n *  \\verbatim\n    Strength\n    ^\n    |\n    |    effect level -->  _________________\n    |                     /                 \\\n    |                    /                   \\\n    |                   /                     \\\n    |                  /                       \\\n    | attack_level --> |                        \\\n    |                  |                        |  <---  fade_level\n    |\n    +--------------------------------------------------> Time\n                       [--]                 [---]\n                       attack_length        fade_length\n\n    [------------------][-----------------------]\n    delay               length\n    \\endverbatim\n *\n *  Note either the attack_level or the fade_level may be above the actual\n *  effect level.\n *\n *  \\sa SDL_HapticConstant\n *  \\sa SDL_HapticPeriodic\n *  \\sa SDL_HapticCondition\n *  \\sa SDL_HapticRamp\n *  \\sa SDL_HapticLeftRight\n *  \\sa SDL_HapticCustom\n */\ntypedef union SDL_HapticEffect\n{\n    /* Common for all force feedback effects */\n    Uint16 type;                    /**< Effect type. */\n    SDL_HapticConstant constant;    /**< Constant effect. */\n    SDL_HapticPeriodic periodic;    /**< Periodic effect. */\n    SDL_HapticCondition condition;  /**< Condition effect. */\n    SDL_HapticRamp ramp;            /**< Ramp effect. */\n    SDL_HapticLeftRight leftright;  /**< Left/Right effect. */\n    SDL_HapticCustom custom;        /**< Custom effect. */\n} SDL_HapticEffect;\n\n\n/* Function prototypes */\n\n/**\n * Count the number of haptic devices attached to the system.\n *\n * \\returns the number of haptic devices detected on the system or a negative\n *          error code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticName\n */\nextern DECLSPEC int SDLCALL SDL_NumHaptics(void);\n\n/**\n * Get the implementation dependent name of a haptic device.\n *\n * This can be called before any joysticks are opened. If no name can be\n * found, this function returns NULL.\n *\n * \\param device_index index of the device to query.\n * \\returns the name of the device or NULL on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_NumHaptics\n */\nextern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index);\n\n/**\n * Open a haptic device for use.\n *\n * The index passed as an argument refers to the N'th haptic device on this\n * system.\n *\n * When opening a haptic device, its gain will be set to maximum and\n * autocenter will be disabled. To modify these values use SDL_HapticSetGain()\n * and SDL_HapticSetAutocenter().\n *\n * \\param device_index index of the device to open\n * \\returns the device identifier or NULL on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticClose\n * \\sa SDL_HapticIndex\n * \\sa SDL_HapticOpenFromJoystick\n * \\sa SDL_HapticOpenFromMouse\n * \\sa SDL_HapticPause\n * \\sa SDL_HapticSetAutocenter\n * \\sa SDL_HapticSetGain\n * \\sa SDL_HapticStopAll\n */\nextern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index);\n\n/**\n * Check if the haptic device at the designated index has been opened.\n *\n * \\param device_index the index of the device to query\n * \\returns 1 if it has been opened, 0 if it hasn't or on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticIndex\n * \\sa SDL_HapticOpen\n */\nextern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index);\n\n/**\n * Get the index of a haptic device.\n *\n * \\param haptic the SDL_Haptic device to query\n * \\returns the index of the specified haptic device or a negative error code\n *          on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpen\n * \\sa SDL_HapticOpened\n */\nextern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic);\n\n/**\n * Query whether or not the current mouse has haptic capabilities.\n *\n * \\returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpenFromMouse\n */\nextern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void);\n\n/**\n * Try to open a haptic device from the current mouse.\n *\n * \\returns the haptic device identifier or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpen\n * \\sa SDL_MouseIsHaptic\n */\nextern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void);\n\n/**\n * Query if a joystick has haptic features.\n *\n * \\param joystick the SDL_Joystick to test for haptic capabilities\n * \\returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a\n *          negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpenFromJoystick\n */\nextern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick);\n\n/**\n * Open a haptic device for use from a joystick device.\n *\n * You must still close the haptic device separately. It will not be closed\n * with the joystick.\n *\n * When opened from a joystick you should first close the haptic device before\n * closing the joystick device. If not, on some implementations the haptic\n * device will also get unallocated and you'll be unable to use force feedback\n * on that device.\n *\n * \\param joystick the SDL_Joystick to create a haptic device from\n * \\returns a valid haptic device identifier on success or NULL on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticClose\n * \\sa SDL_HapticOpen\n * \\sa SDL_JoystickIsHaptic\n */\nextern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick *\n                                                               joystick);\n\n/**\n * Close a haptic device previously opened with SDL_HapticOpen().\n *\n * \\param haptic the SDL_Haptic device to close\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpen\n */\nextern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic);\n\n/**\n * Get the number of effects a haptic device can store.\n *\n * On some platforms this isn't fully supported, and therefore is an\n * approximation. Always check to see if your created effect was actually\n * created and do not rely solely on SDL_HapticNumEffects().\n *\n * \\param haptic the SDL_Haptic device to query\n * \\returns the number of effects the haptic device can store or a negative\n *          error code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticNumEffectsPlaying\n * \\sa SDL_HapticQuery\n */\nextern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic);\n\n/**\n * Get the number of effects a haptic device can play at the same time.\n *\n * This is not supported on all platforms, but will always return a value.\n *\n * \\param haptic the SDL_Haptic device to query maximum playing effects\n * \\returns the number of effects the haptic device can play at the same time\n *          or a negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticNumEffects\n * \\sa SDL_HapticQuery\n */\nextern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic);\n\n/**\n * Get the haptic device's supported features in bitwise manner.\n *\n * \\param haptic the SDL_Haptic device to query\n * \\returns a list of supported haptic features in bitwise manner (OR'd), or 0\n *          on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticEffectSupported\n * \\sa SDL_HapticNumEffects\n */\nextern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic);\n\n\n/**\n * Get the number of haptic axes the device has.\n *\n * The number of haptic axes might be useful if working with the\n * SDL_HapticDirection effect.\n *\n * \\param haptic the SDL_Haptic device to query\n * \\returns the number of axes on success or a negative error code on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic);\n\n/**\n * Check to see if an effect is supported by a haptic device.\n *\n * \\param haptic the SDL_Haptic device to query\n * \\param effect the desired effect to query\n * \\returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a\n *          negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticNewEffect\n * \\sa SDL_HapticQuery\n */\nextern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic,\n                                                      SDL_HapticEffect *\n                                                      effect);\n\n/**\n * Create a new haptic effect on a specified device.\n *\n * \\param haptic an SDL_Haptic device to create the effect on\n * \\param effect an SDL_HapticEffect structure containing the properties of\n *               the effect to create\n * \\returns the ID of the effect on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticDestroyEffect\n * \\sa SDL_HapticRunEffect\n * \\sa SDL_HapticUpdateEffect\n */\nextern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic,\n                                                SDL_HapticEffect * effect);\n\n/**\n * Update the properties of an effect.\n *\n * Can be used dynamically, although behavior when dynamically changing\n * direction may be strange. Specifically the effect may re-upload itself and\n * start playing from the start. You also cannot change the type either when\n * running SDL_HapticUpdateEffect().\n *\n * \\param haptic the SDL_Haptic device that has the effect\n * \\param effect the identifier of the effect to update\n * \\param data an SDL_HapticEffect structure containing the new effect\n *             properties to use\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticDestroyEffect\n * \\sa SDL_HapticNewEffect\n * \\sa SDL_HapticRunEffect\n */\nextern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic,\n                                                   int effect,\n                                                   SDL_HapticEffect * data);\n\n/**\n * Run the haptic effect on its associated haptic device.\n *\n * To repeat the effect over and over indefinitely, set `iterations` to\n * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make\n * one instance of the effect last indefinitely (so the effect does not fade),\n * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY`\n * instead.\n *\n * \\param haptic the SDL_Haptic device to run the effect on\n * \\param effect the ID of the haptic effect to run\n * \\param iterations the number of iterations to run the effect; use\n *                   `SDL_HAPTIC_INFINITY` to repeat forever\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticDestroyEffect\n * \\sa SDL_HapticGetEffectStatus\n * \\sa SDL_HapticStopEffect\n */\nextern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic,\n                                                int effect,\n                                                Uint32 iterations);\n\n/**\n * Stop the haptic effect on its associated haptic device.\n *\n * *\n *\n * \\param haptic the SDL_Haptic device to stop the effect on\n * \\param effect the ID of the haptic effect to stop\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticDestroyEffect\n * \\sa SDL_HapticRunEffect\n */\nextern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic,\n                                                 int effect);\n\n/**\n * Destroy a haptic effect on the device.\n *\n * This will stop the effect if it's running. Effects are automatically\n * destroyed when the device is closed.\n *\n * \\param haptic the SDL_Haptic device to destroy the effect on\n * \\param effect the ID of the haptic effect to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticNewEffect\n */\nextern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic,\n                                                     int effect);\n\n/**\n * Get the status of the current effect on the specified haptic device.\n *\n * Device must support the SDL_HAPTIC_STATUS feature.\n *\n * \\param haptic the SDL_Haptic device to query for the effect status on\n * \\param effect the ID of the haptic effect to query its status\n * \\returns 0 if it isn't playing, 1 if it is playing, or a negative error\n *          code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticRunEffect\n * \\sa SDL_HapticStopEffect\n */\nextern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic,\n                                                      int effect);\n\n/**\n * Set the global gain of the specified haptic device.\n *\n * Device must support the SDL_HAPTIC_GAIN feature.\n *\n * The user may specify the maximum gain by setting the environment variable\n * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to\n * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the\n * maximum.\n *\n * \\param haptic the SDL_Haptic device to set the gain on\n * \\param gain value to set the gain to, should be between 0 and 100 (0 - 100)\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticQuery\n */\nextern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain);\n\n/**\n * Set the global autocenter of the device.\n *\n * Autocenter should be between 0 and 100. Setting it to 0 will disable\n * autocentering.\n *\n * Device must support the SDL_HAPTIC_AUTOCENTER feature.\n *\n * \\param haptic the SDL_Haptic device to set autocentering on\n * \\param autocenter value to set autocenter to (0-100)\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticQuery\n */\nextern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic,\n                                                    int autocenter);\n\n/**\n * Pause a haptic device.\n *\n * Device must support the `SDL_HAPTIC_PAUSE` feature. Call\n * SDL_HapticUnpause() to resume playback.\n *\n * Do not modify the effects nor add new ones while the device is paused. That\n * can cause all sorts of weird errors.\n *\n * \\param haptic the SDL_Haptic device to pause\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticUnpause\n */\nextern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic);\n\n/**\n * Unpause a haptic device.\n *\n * Call to unpause after SDL_HapticPause().\n *\n * \\param haptic the SDL_Haptic device to unpause\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticPause\n */\nextern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic);\n\n/**\n * Stop all the currently playing effects on a haptic device.\n *\n * \\param haptic the SDL_Haptic device to stop\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic);\n\n/**\n * Check whether rumble is supported on a haptic device.\n *\n * \\param haptic haptic device to check for rumble support\n * \\returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a\n *          negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticRumbleInit\n * \\sa SDL_HapticRumblePlay\n * \\sa SDL_HapticRumbleStop\n */\nextern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic);\n\n/**\n * Initialize a haptic device for simple rumble playback.\n *\n * \\param haptic the haptic device to initialize for simple rumble playback\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticOpen\n * \\sa SDL_HapticRumblePlay\n * \\sa SDL_HapticRumbleStop\n * \\sa SDL_HapticRumbleSupported\n */\nextern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic);\n\n/**\n * Run a simple rumble effect on a haptic device.\n *\n * \\param haptic the haptic device to play the rumble effect on\n * \\param strength strength of the rumble to play as a 0-1 float value\n * \\param length length of the rumble to play in milliseconds\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticRumbleInit\n * \\sa SDL_HapticRumbleStop\n * \\sa SDL_HapticRumbleSupported\n */\nextern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length );\n\n/**\n * Stop the simple rumble on a haptic device.\n *\n * \\param haptic the haptic device to stop the rumble effect on\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HapticRumbleInit\n * \\sa SDL_HapticRumblePlay\n * \\sa SDL_HapticRumbleSupported\n */\nextern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_haptic_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_hidapi.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_hidapi.h\n *\n *  Header file for SDL HIDAPI functions.\n *\n *  This is an adaptation of the original HIDAPI interface by Alan Ott,\n *  and includes source code licensed under the following BSD license:\n *\n    Copyright (c) 2010, Alan Ott, Signal 11 Software\n    All rights reserved.\n\n    Redistribution and use in source and binary forms, with or without\n    modification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright notice,\n      this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n    * Neither the name of Signal 11 Software nor the names of its\n      contributors may be used to endorse or promote products derived from\n      this software without specific prior written permission.\n\n    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n    POSSIBILITY OF SUCH DAMAGE.\n *\n * If you would like a version of SDL without this code, you can build SDL\n * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example\n * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework.\n */\n\n#ifndef SDL_hidapi_h_\n#define SDL_hidapi_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief  A handle representing an open HID device\n */\nstruct SDL_hid_device_;\ntypedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */\n\n/** hidapi info structure */\n/**\n *  \\brief  Information about a connected HID device\n */\ntypedef struct SDL_hid_device_info\n{\n    /** Platform-specific device path */\n    char *path;\n    /** Device Vendor ID */\n    unsigned short vendor_id;\n    /** Device Product ID */\n    unsigned short product_id;\n    /** Serial Number */\n    wchar_t *serial_number;\n    /** Device Release Number in binary-coded decimal,\n        also known as Device Version Number */\n    unsigned short release_number;\n    /** Manufacturer String */\n    wchar_t *manufacturer_string;\n    /** Product string */\n    wchar_t *product_string;\n    /** Usage Page for this Device/Interface\n        (Windows/Mac only). */\n    unsigned short usage_page;\n    /** Usage for this Device/Interface\n        (Windows/Mac only).*/\n    unsigned short usage;\n    /** The USB interface which this logical device\n        represents.\n\n        * Valid on both Linux implementations in all cases.\n        * Valid on the Windows implementation only if the device\n          contains more than one interface. */\n    int interface_number;\n\n    /** Additional information about the USB interface.\n        Valid on libusb and Android implementations. */\n    int interface_class;\n    int interface_subclass;\n    int interface_protocol;\n\n    /** Pointer to the next device */\n    struct SDL_hid_device_info *next;\n} SDL_hid_device_info;\n\n\n/**\n * Initialize the HIDAPI library.\n *\n * This function initializes the HIDAPI library. Calling it is not strictly\n * necessary, as it will be called automatically by SDL_hid_enumerate() and\n * any of the SDL_hid_open_*() functions if it is needed. This function should\n * be called at the beginning of execution however, if there is a chance of\n * HIDAPI handles being opened by different threads simultaneously.\n *\n * Each call to this function should have a matching call to SDL_hid_exit()\n *\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_hid_exit\n */\nextern DECLSPEC int SDLCALL SDL_hid_init(void);\n\n/**\n * Finalize the HIDAPI library.\n *\n * This function frees all of the static data associated with HIDAPI. It\n * should be called at the end of execution to avoid memory leaks.\n *\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_hid_init\n */\nextern DECLSPEC int SDLCALL SDL_hid_exit(void);\n\n/**\n * Check to see if devices may have been added or removed.\n *\n * Enumerating the HID devices is an expensive operation, so you can call this\n * to see if there have been any system device changes since the last call to\n * this function. A change in the counter returned doesn't necessarily mean\n * that anything has changed, but you can call SDL_hid_enumerate() to get an\n * updated device list.\n *\n * Calling this function for the first time may cause a thread or other system\n * resource to be allocated to track device change notifications.\n *\n * \\returns a change counter that is incremented with each potential device\n *          change, or 0 if device change detection isn't available.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_hid_enumerate\n */\nextern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void);\n\n/**\n * Enumerate the HID Devices.\n *\n * This function returns a linked list of all the HID devices attached to the\n * system which match vendor_id and product_id. If `vendor_id` is set to 0\n * then any vendor matches. If `product_id` is set to 0 then any product\n * matches. If `vendor_id` and `product_id` are both set to 0, then all HID\n * devices will be returned.\n *\n * \\param vendor_id The Vendor ID (VID) of the types of device to open.\n * \\param product_id The Product ID (PID) of the types of device to open.\n * \\returns a pointer to a linked list of type SDL_hid_device_info, containing\n *          information about the HID devices attached to the system, or NULL\n *          in the case of failure. Free this linked list by calling\n *          SDL_hid_free_enumeration().\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_hid_device_change_count\n */\nextern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id);\n\n/**\n * Free an enumeration Linked List\n *\n * This function frees a linked list created by SDL_hid_enumerate().\n *\n * \\param devs Pointer to a list of struct_device returned from\n *             SDL_hid_enumerate().\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs);\n\n/**\n * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally\n * a serial number.\n *\n * If `serial_number` is NULL, the first device with the specified VID and PID\n * is opened.\n *\n * \\param vendor_id The Vendor ID (VID) of the device to open.\n * \\param product_id The Product ID (PID) of the device to open.\n * \\param serial_number The Serial Number of the device to open (Optionally\n *                      NULL).\n * \\returns a pointer to a SDL_hid_device object on success or NULL on\n *          failure.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number);\n\n/**\n * Open a HID device by its path name.\n *\n * The path name be determined by calling SDL_hid_enumerate(), or a\n * platform-specific path name can be used (eg: /dev/hidraw0 on Linux).\n *\n * \\param path The path name of the device to open\n * \\returns a pointer to a SDL_hid_device object on success or NULL on\n *          failure.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */);\n\n/**\n * Write an Output report to a HID device.\n *\n * The first byte of `data` must contain the Report ID. For devices which only\n * support a single report, this must be set to 0x0. The remaining bytes\n * contain the report data. Since the Report ID is mandatory, calls to\n * SDL_hid_write() will always contain one more byte than the report contains.\n * For example, if a hid report is 16 bytes long, 17 bytes must be passed to\n * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report),\n * followed by the report data (16 bytes). In this example, the length passed\n * in would be 17.\n *\n * SDL_hid_write() will send the data on the first OUT endpoint, if one\n * exists. If it does not, it will send the data through the Control Endpoint\n * (Endpoint 0).\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param data The data to send, including the report number as the first\n *             byte.\n * \\param length The length in bytes of the data to send.\n * \\returns the actual number of bytes written and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length);\n\n/**\n * Read an Input report from a HID device with timeout.\n *\n * Input reports are returned to the host through the INTERRUPT IN endpoint.\n * The first byte will contain the Report number if the device uses numbered\n * reports.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param data A buffer to put the read data into.\n * \\param length The number of bytes to read. For devices with multiple\n *               reports, make sure to read an extra byte for the report\n *               number.\n * \\param milliseconds timeout in milliseconds or -1 for blocking wait.\n * \\returns the actual number of bytes read and -1 on error. If no packet was\n *          available to be read within the timeout period, this function\n *          returns 0.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds);\n\n/**\n * Read an Input report from a HID device.\n *\n * Input reports are returned to the host through the INTERRUPT IN endpoint.\n * The first byte will contain the Report number if the device uses numbered\n * reports.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param data A buffer to put the read data into.\n * \\param length The number of bytes to read. For devices with multiple\n *               reports, make sure to read an extra byte for the report\n *               number.\n * \\returns the actual number of bytes read and -1 on error. If no packet was\n *          available to be read and the handle is in non-blocking mode, this\n *          function returns 0.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length);\n\n/**\n * Set the device handle to be non-blocking.\n *\n * In non-blocking mode calls to SDL_hid_read() will return immediately with a\n * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read()\n * will wait (block) until there is data to read before returning.\n *\n * Nonblocking can be turned on and off at any time.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param nonblock enable or not the nonblocking reads - 1 to enable\n *                 nonblocking - 0 to disable nonblocking.\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock);\n\n/**\n * Send a Feature report to the device.\n *\n * Feature reports are sent over the Control endpoint as a Set_Report\n * transfer. The first byte of `data` must contain the Report ID. For devices\n * which only support a single report, this must be set to 0x0. The remaining\n * bytes contain the report data. Since the Report ID is mandatory, calls to\n * SDL_hid_send_feature_report() will always contain one more byte than the\n * report contains. For example, if a hid report is 16 bytes long, 17 bytes\n * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for\n * devices which do not use numbered reports), followed by the report data (16\n * bytes). In this example, the length passed in would be 17.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param data The data to send, including the report number as the first\n *             byte.\n * \\param length The length in bytes of the data to send, including the report\n *               number.\n * \\returns the actual number of bytes written and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length);\n\n/**\n * Get a feature report from a HID device.\n *\n * Set the first byte of `data` to the Report ID of the report to be read.\n * Make sure to allow space for this extra byte in `data`. Upon return, the\n * first byte will still contain the Report ID, and the report data will start\n * in data[1].\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param data A buffer to put the read data into, including the Report ID.\n *             Set the first byte of `data` to the Report ID of the report to\n *             be read, or set it to zero if your device does not use numbered\n *             reports.\n * \\param length The number of bytes to read, including an extra byte for the\n *               report ID. The buffer can be longer than the actual report.\n * \\returns the number of bytes read plus one for the report ID (which is\n *          still in the first byte), or -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length);\n\n/**\n * Close a HID device.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev);\n\n/**\n * Get The Manufacturer String from a HID device.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param string A wide string buffer to put the data into.\n * \\param maxlen The length of the buffer in multiples of wchar_t.\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);\n\n/**\n * Get The Product String from a HID device.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param string A wide string buffer to put the data into.\n * \\param maxlen The length of the buffer in multiples of wchar_t.\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);\n\n/**\n * Get The Serial Number String from a HID device.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param string A wide string buffer to put the data into.\n * \\param maxlen The length of the buffer in multiples of wchar_t.\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen);\n\n/**\n * Get a string from a HID device, based on its string index.\n *\n * \\param dev A device handle returned from SDL_hid_open().\n * \\param string_index The index of the string to get.\n * \\param string A wide string buffer to put the data into.\n * \\param maxlen The length of the buffer in multiples of wchar_t.\n * \\returns 0 on success and -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen);\n\n/**\n * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers\n *\n * \\param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_hidapi_h_ */\n\n/* vi: set sts=4 ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_hints.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_hints.h\n *\n *  Official documentation for SDL configuration variables\n *\n *  This file contains functions to set and get configuration hints,\n *  as well as listing each of them alphabetically.\n *\n *  The convention for naming hints is SDL_HINT_X, where \"SDL_X\" is\n *  the environment variable that can be used to override the default.\n *\n *  In general these hints are just that - they may or may not be\n *  supported or applicable on any given platform, but they provide\n *  a way for an application or user to give the library a hint as\n *  to how they would like the library to work.\n */\n\n#ifndef SDL_hints_h_\n#define SDL_hints_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief  A variable controlling whether the Android / iOS built-in\n *  accelerometer should be listed as a joystick device.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - The accelerometer is not listed as a joystick\n *    \"1\"       - The accelerometer is available as a 3 axis joystick (the default).\n */\n#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK \"SDL_ACCELEROMETER_AS_JOYSTICK\"\n\n/**\n *  \\brief Specify the behavior of Alt+Tab while the keyboard is grabbed.\n *\n * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed\n * and your window is full-screen. This prevents the user from getting stuck in\n * your application if you've enabled keyboard grab.\n *\n * The variable can be set to the following values:\n *   \"0\"       - SDL will not handle Alt+Tab. Your application is responsible\n                 for handling Alt+Tab while the keyboard is grabbed.\n *   \"1\"       - SDL will minimize your window when Alt+Tab is pressed (default)\n*/\n#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED \"SDL_ALLOW_ALT_TAB_WHILE_GRABBED\"\n\n/**\n *  \\brief If set to \"0\" then never set the top most bit on a SDL Window, even if the video mode expects it.\n *      This is a debugging aid for developers and not expected to be used by end users. The default is \"1\"\n *\n *  This variable can be set to the following values:\n *    \"0\"       - don't allow topmost\n *    \"1\"       - allow topmost\n */\n#define SDL_HINT_ALLOW_TOPMOST \"SDL_ALLOW_TOPMOST\"\n\n/**\n * \\brief Android APK expansion main file version. Should be a string number like \"1\", \"2\" etc.\n *\n * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.\n *\n * If both hints were set then SDL_RWFromFile() will look into expansion files\n * after a given relative path was not found in the internal storage and assets.\n *\n * By default this hint is not set and the APK expansion files are not searched.\n */\n#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION \"SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION\"\n\n/**\n * \\brief Android APK expansion patch file version. Should be a string number like \"1\", \"2\" etc.\n *\n * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.\n *\n * If both hints were set then SDL_RWFromFile() will look into expansion files\n * after a given relative path was not found in the internal storage and assets.\n *\n * By default this hint is not set and the APK expansion files are not searched.\n */\n#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION \"SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION\"\n\n/**\n * \\brief A variable to control whether the event loop will block itself when the app is paused.\n *\n * The variable can be set to the following values:\n *   \"0\"       - Non blocking.\n *   \"1\"       - Blocking. (default)\n *\n * The value should be set before SDL is initialized.\n */\n#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE \"SDL_ANDROID_BLOCK_ON_PAUSE\"\n\n/**\n * \\brief A variable to control whether SDL will pause audio in background\n *        (Requires SDL_ANDROID_BLOCK_ON_PAUSE as \"Non blocking\")\n *\n * The variable can be set to the following values:\n *   \"0\"       - Non paused.\n *   \"1\"       - Paused. (default)\n *\n * The value should be set before SDL is initialized.\n */\n#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO \"SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO\"\n\n/**\n * \\brief A variable to control whether we trap the Android back button to handle it manually.\n *        This is necessary for the right mouse button to work on some Android devices, or\n *        to be able to trap the back button for use in your code reliably.  If set to true,\n *        the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of\n *        SDL_SCANCODE_AC_BACK.\n *\n * The variable can be set to the following values:\n *   \"0\"       - Back button will be handled as usual for system. (default)\n *   \"1\"       - Back button will be trapped, allowing you to handle the key press\n *               manually.  (This will also let right mouse click work on systems\n *               where the right mouse button functions as back.)\n *\n * The value of this hint is used at runtime, so it can be changed at any time.\n */\n#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON \"SDL_ANDROID_TRAP_BACK_BUTTON\"\n\n/**\n *  \\brief Specify an application name.\n *\n * This hint lets you specify the application name sent to the OS when\n * required. For example, this will often appear in volume control applets for\n * audio streams, and in lists of applications which are inhibiting the\n * screensaver.  You should use a string that describes your program (\"My Game\n * 2: The Revenge\")\n *\n * Setting this to \"\" or leaving it unset will have SDL use a reasonable\n * default: probably the application's name or \"SDL Application\" if SDL\n * doesn't have any better information.\n *\n * Note that, for audio streams, this can be overridden with\n * SDL_HINT_AUDIO_DEVICE_APP_NAME.\n *\n * On targets where this is not supported, this hint does nothing.\n */\n#define SDL_HINT_APP_NAME \"SDL_APP_NAME\"\n\n/**\n *  \\brief  A variable controlling whether controllers used with the Apple TV\n *  generate UI events.\n *\n * When UI events are generated by controller input, the app will be\n * backgrounded when the Apple TV remote's menu button is pressed, and when the\n * pause or B buttons on gamepads are pressed.\n *\n * More information about properly making use of controllers for the Apple TV\n * can be found here:\n * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Controller input does not generate UI events (the default).\n *    \"1\"       - Controller input generates UI events.\n */\n#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS \"SDL_APPLE_TV_CONTROLLER_UI_EVENTS\"\n\n/**\n * \\brief  A variable controlling whether the Apple TV remote's joystick axes\n *         will automatically match the rotation of the remote.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Remote orientation does not affect joystick axes (the default).\n *    \"1\"       - Joystick axes are based on the orientation of the remote.\n */\n#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION \"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION\"\n\n/**\n *  \\brief  A variable controlling the audio category on iOS and Mac OS X\n *\n *  This variable can be set to the following values:\n *\n *    \"ambient\"     - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)\n *    \"playback\"    - Use the AVAudioSessionCategoryPlayback category\n *\n *  For more information, see Apple's documentation:\n *  https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html\n */\n#define SDL_HINT_AUDIO_CATEGORY   \"SDL_AUDIO_CATEGORY\"\n\n/**\n *  \\brief Specify an application name for an audio device.\n *\n * Some audio backends (such as PulseAudio) allow you to describe your audio\n * stream. Among other things, this description might show up in a system\n * control panel that lets the user adjust the volume on specific audio\n * streams instead of using one giant master volume slider.\n *\n * This hints lets you transmit that information to the OS. The contents of\n * this hint are used while opening an audio device. You should use a string\n * that describes your program (\"My Game 2: The Revenge\")\n *\n * Setting this to \"\" or leaving it unset will have SDL use a reasonable\n * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is\n * set. Otherwise, it'll probably the application's name or \"SDL Application\"\n * if SDL doesn't have any better information.\n *\n * On targets where this is not supported, this hint does nothing.\n */\n#define SDL_HINT_AUDIO_DEVICE_APP_NAME \"SDL_AUDIO_DEVICE_APP_NAME\"\n\n/**\n *  \\brief Specify an application name for an audio device.\n *\n * Some audio backends (such as PulseAudio) allow you to describe your audio\n * stream. Among other things, this description might show up in a system\n * control panel that lets the user adjust the volume on specific audio\n * streams instead of using one giant master volume slider.\n *\n * This hints lets you transmit that information to the OS. The contents of\n * this hint are used while opening an audio device. You should use a string\n * that describes your what your program is playing (\"audio stream\" is\n * probably sufficient in many cases, but this could be useful for something\n * like \"team chat\" if you have a headset playing VoIP audio separately).\n *\n * Setting this to \"\" or leaving it unset will have SDL use a reasonable\n * default: \"audio stream\" or something similar.\n *\n * On targets where this is not supported, this hint does nothing.\n */\n#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME \"SDL_AUDIO_DEVICE_STREAM_NAME\"\n\n/**\n *  \\brief Specify an application role for an audio device.\n *\n * Some audio backends (such as Pipewire) allow you to describe the role of\n * your audio stream. Among other things, this description might show up in\n * a system control panel or software for displaying and manipulating media\n * playback/capture graphs.\n *\n * This hints lets you transmit that information to the OS. The contents of\n * this hint are used while opening an audio device. You should use a string\n * that describes your what your program is playing (Game, Music, Movie,\n * etc...).\n *\n * Setting this to \"\" or leaving it unset will have SDL use a reasonable\n * default: \"Game\" or something similar.\n *\n * On targets where this is not supported, this hint does nothing.\n */\n#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE \"SDL_AUDIO_DEVICE_STREAM_ROLE\"\n\n/**\n *  \\brief  A variable controlling speed/quality tradeoff of audio resampling.\n *\n *  If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )\n *  to handle audio resampling. There are different resampling modes available\n *  that produce different levels of quality, using more CPU.\n *\n *  If this hint isn't specified to a valid setting, or libsamplerate isn't\n *  available, SDL will use the default, internal resampling algorithm.\n *\n *  As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available.\n *\n *  This hint is currently only checked at audio subsystem initialization.\n *\n *  This variable can be set to the following values:\n *\n *    \"0\" or \"default\" - Use SDL's internal resampling (Default when not set - low quality, fast)\n *    \"1\" or \"fast\"    - Use fast, slightly higher quality resampling, if available\n *    \"2\" or \"medium\"  - Use medium quality resampling, if available\n *    \"3\" or \"best\"    - Use high quality resampling, if available\n */\n#define SDL_HINT_AUDIO_RESAMPLING_MODE   \"SDL_AUDIO_RESAMPLING_MODE\"\n\n/**\n *  \\brief  A variable controlling whether SDL updates joystick state when getting input events\n *\n *  This variable can be set to the following values:\n *\n *    \"0\"     - You'll call SDL_JoystickUpdate() manually\n *    \"1\"     - SDL will automatically call SDL_JoystickUpdate() (default)\n *\n *  This hint can be toggled on and off at runtime.\n */\n#define SDL_HINT_AUTO_UPDATE_JOYSTICKS  \"SDL_AUTO_UPDATE_JOYSTICKS\"\n\n/**\n *  \\brief  A variable controlling whether SDL updates sensor state when getting input events\n *\n *  This variable can be set to the following values:\n *\n *    \"0\"     - You'll call SDL_SensorUpdate() manually\n *    \"1\"     - SDL will automatically call SDL_SensorUpdate() (default)\n *\n *  This hint can be toggled on and off at runtime.\n */\n#define SDL_HINT_AUTO_UPDATE_SENSORS    \"SDL_AUTO_UPDATE_SENSORS\"\n\n/**\n *  \\brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.\n *\n * The bitmap header version 4 is required for proper alpha channel support and\n * SDL will use it when required. Should this not be desired, this hint can\n * force the use of the 40 byte header version which is supported everywhere.\n *\n * The variable can be set to the following values:\n *   \"0\"       - Surfaces with a colorkey or an alpha channel are saved to a\n *               32-bit BMP file with an alpha mask. SDL will use the bitmap\n *               header version 4 and set the alpha mask accordingly.\n *   \"1\"       - Surfaces with a colorkey or an alpha channel are saved to a\n *               32-bit BMP file without an alpha mask. The alpha channel data\n *               will be in the file, but applications are going to ignore it.\n *\n * The default value is \"0\".\n */\n#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT \"SDL_BMP_SAVE_LEGACY_FORMAT\"\n\n/**\n *  \\brief Override for SDL_GetDisplayUsableBounds()\n *\n *  If set, this hint will override the expected results for\n *  SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want\n *  to do this, but this allows an embedded system to request that some of the\n *  screen be reserved for other uses when paired with a well-behaved\n *  application.\n *\n *  The contents of this hint must be 4 comma-separated integers, the first\n *  is the bounds x, then y, width and height, in that order.\n */\n#define SDL_HINT_DISPLAY_USABLE_BOUNDS \"SDL_DISPLAY_USABLE_BOUNDS\"\n\n/**\n *  \\brief Disable giving back control to the browser automatically\n *  when running with asyncify\n *\n * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations\n * such as refreshing the screen or polling events.\n *\n * This hint only applies to the emscripten platform\n *\n * The variable can be set to the following values:\n *    \"0\"       - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)\n *    \"1\"       - Enable emscripten_sleep calls (the default)\n */\n#define SDL_HINT_EMSCRIPTEN_ASYNCIFY   \"SDL_EMSCRIPTEN_ASYNCIFY\"\n\n/**\n *  \\brief override the binding element for keyboard inputs for Emscripten builds\n *\n * This hint only applies to the emscripten platform\n *\n * The variable can be one of\n *    \"#window\"      - The javascript window object (this is the default)\n *    \"#document\"    - The javascript document object\n *    \"#screen\"      - the javascript window.screen object\n *    \"#canvas\"      - the WebGL canvas element\n *    any other string without a leading # sign applies to the element on the page with that ID.\n */\n#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT   \"SDL_EMSCRIPTEN_KEYBOARD_ELEMENT\"\n\n/**\n *  \\brief  A variable that controls whether the on-screen keyboard should be shown when text input is active\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Do not show the on-screen keyboard\n *    \"1\"       - Show the on-screen keyboard\n *\n *  The default value is \"1\". This hint must be set before text input is activated.\n */\n#define SDL_HINT_ENABLE_SCREEN_KEYBOARD \"SDL_ENABLE_SCREEN_KEYBOARD\"\n\n/**\n *  \\brief  A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Do not scan for Steam Controllers\n *    \"1\"       - Scan for Steam Controllers (the default)\n *\n *  The default value is \"1\".  This hint must be set before initializing the joystick subsystem.\n */\n#define SDL_HINT_ENABLE_STEAM_CONTROLLERS \"SDL_ENABLE_STEAM_CONTROLLERS\"\n\n/**\n *  \\brief  A variable controlling verbosity of the logging of SDL events pushed onto the internal queue.\n *\n *  This variable can be set to the following values, from least to most verbose:\n *\n *    \"0\"     - Don't log any events (default)\n *    \"1\"     - Log most events (other than the really spammy ones).\n *    \"2\"     - Include mouse and finger motion events.\n *    \"3\"     - Include SDL_SysWMEvent events.\n *\n *  This is generally meant to be used to debug SDL itself, but can be useful\n *  for application developers that need better visibility into what is going\n *  on in the event queue. Logged events are sent through SDL_Log(), which\n *  means by default they appear on stdout on most platforms or maybe\n *  OutputDebugString() on Windows, and can be funneled by the app with\n *  SDL_LogSetOutputFunction(), etc.\n *\n *  This hint can be toggled on and off at runtime, if you only need to log\n *  events for a small subset of program execution.\n */\n#define SDL_HINT_EVENT_LOGGING   \"SDL_EVENT_LOGGING\"\n\n/**\n *  \\brief  A variable controlling whether raising the window should be done more forcefully\n *\n *  This variable can be set to the following values:\n *    \"0\"       - No forcing (the default)\n *    \"1\"       - Extra level of forcing\n *\n *  At present, this is only an issue under MS Windows, which makes it nearly impossible to\n *  programmatically move a window to the foreground, for \"security\" reasons. See\n *  http://stackoverflow.com/a/34414846 for a discussion.\n */\n#define SDL_HINT_FORCE_RAISEWINDOW    \"SDL_HINT_FORCE_RAISEWINDOW\"\n\n/**\n *  \\brief  A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.\n *\n *  SDL can try to accelerate the SDL screen surface by using streaming\n *  textures with a 3D rendering engine.  This variable controls whether and\n *  how this is done.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable 3D acceleration\n *    \"1\"       - Enable 3D acceleration, using the default renderer.\n *    \"X\"       - Enable 3D acceleration, using X where X is one of the valid rendering drivers.  (e.g. \"direct3d\", \"opengl\", etc.)\n *\n *  By default SDL tries to make a best guess for each platform whether\n *  to use acceleration or not.\n */\n#define SDL_HINT_FRAMEBUFFER_ACCELERATION   \"SDL_FRAMEBUFFER_ACCELERATION\"\n\n/**\n *  \\brief  A variable that lets you manually hint extra gamecontroller db entries.\n *\n *  The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h\n *\n *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)\n *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()\n */\n#define SDL_HINT_GAMECONTROLLERCONFIG \"SDL_GAMECONTROLLERCONFIG\"\n\n/**\n *  \\brief  A variable that lets you provide a file with extra gamecontroller db entries.\n *\n *  The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h\n *\n *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)\n *  You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()\n */\n#define SDL_HINT_GAMECONTROLLERCONFIG_FILE \"SDL_GAMECONTROLLERCONFIG_FILE\"\n\n/**\n *  \\brief  A variable that overrides the automatic controller type detection\n *\n *  The variable should be comma separated entries, in the form: VID/PID=type\n *\n *  The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd\n *\n *  The type should be one of:\n *      Xbox360\n *      XboxOne\n *      PS3\n *      PS4\n *      PS5\n *      SwitchPro\n *\n *  This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)\n */\n#define SDL_HINT_GAMECONTROLLERTYPE \"SDL_GAMECONTROLLERTYPE\"\n\n/**\n *  \\brief  A variable containing a list of devices to skip when scanning for game controllers.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES \"SDL_GAMECONTROLLER_IGNORE_DEVICES\"\n\n/**\n *  \\brief  If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT \"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT\"\n\n/**\n *  \\brief  If set, game controller face buttons report their values according to their labels instead of their positional layout.\n *\n *  For example, on Nintendo Switch controllers, normally you'd get:\n *\n *      (Y)\n *  (X)     (B)\n *      (A)\n *\n *  but if this hint is set, you'll get:\n *\n *      (X)\n *  (Y)     (A)\n *      (B)\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Report the face buttons by position, as though they were on an Xbox controller.\n *    \"1\"       - Report the face buttons by label instead of position\n *\n *  The default value is \"1\".  This hint may be set at any time.\n */\n#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS \"SDL_GAMECONTROLLER_USE_BUTTON_LABELS\"\n\n/**\n *  \\brief  A variable controlling whether grabbing input grabs the keyboard\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Grab will affect only the mouse\n *    \"1\"       - Grab will affect mouse and keyboard\n *\n *  By default SDL will not grab the keyboard so system shortcuts still work.\n */\n#define SDL_HINT_GRAB_KEYBOARD              \"SDL_GRAB_KEYBOARD\"\n\n/**\n *  \\brief  A variable containing a list of devices to ignore in SDL_hid_enumerate()\n *\n *  For example, to ignore the Shanwan DS3 controller and any Valve controller, you might\n *  have the string \"0x2563/0x0523,0x28de/0x0000\"\n */\n#define SDL_HINT_HIDAPI_IGNORE_DEVICES \"SDL_HIDAPI_IGNORE_DEVICES\"\n\n/**\n *  \\brief  A variable controlling whether the idle timer is disabled on iOS.\n *\n *  When an iOS app does not receive touches for some time, the screen is\n *  dimmed automatically. For games where the accelerometer is the only input\n *  this is problematic. This functionality can be disabled by setting this\n *  hint.\n *\n *  As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()\n *  accomplish the same thing on iOS. They should be preferred over this hint.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Enable idle timer\n *    \"1\"       - Disable idle timer\n */\n#define SDL_HINT_IDLE_TIMER_DISABLED \"SDL_IOS_IDLE_TIMER_DISABLED\"\n\n/**\n * \\brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.\n *\n * The variable can be set to the following values:\n *   \"0\"       - SDL_TEXTEDITING events are sent, and it is the application's\n *               responsibility to render the text from these events and\n *               differentiate it somehow from committed text. (default)\n *   \"1\"       - If supported by the IME then SDL_TEXTEDITING events are not sent,\n *               and text that is being composed will be rendered in its own UI.\n */\n#define SDL_HINT_IME_INTERNAL_EDITING \"SDL_IME_INTERNAL_EDITING\"\n\n/**\n * \\brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them.\n *\n * The variable can be set to the following values:\n *   \"0\"       - Native UI components are not display. (default)\n *   \"1\"       - Native UI components are displayed.\n */\n#define SDL_HINT_IME_SHOW_UI \"SDL_IME_SHOW_UI\"\n\n/**\n * \\brief A variable to control if extended IME text support is enabled.\n * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise.\n * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated.\n *\n * The variable can be set to the following values:\n *   \"0\"       - Legacy behavior. Text can be truncated, no heap allocations. (default)\n *   \"1\"       - Modern behavior.\n */\n#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT \"SDL_IME_SUPPORT_EXTENDED_TEXT\"\n\n/**\n * \\brief  A variable controlling whether the home indicator bar on iPhone X\n *         should be hidden.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - The indicator bar is not hidden (default for windowed applications)\n *    \"1\"       - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)\n *    \"2\"       - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the \"home\" action (default for fullscreen applications)\n */\n#define SDL_HINT_IOS_HIDE_HOME_INDICATOR \"SDL_IOS_HIDE_HOME_INDICATOR\"\n\n/**\n *  \\brief  A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Disable joystick & gamecontroller input events when the\n *                application is in the background.\n *    \"1\"       - Enable joystick & gamecontroller input events when the\n *                application is in the background.\n *\n *  The default value is \"0\".  This hint may be set at any time.\n */\n#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS \"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS\"\n\n/**\n *  A variable containing a list of arcade stick style controllers.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES \"SDL_JOYSTICK_ARCADESTICK_DEVICES\"\n\n/**\n *  A variable containing a list of devices that are not arcade stick style controllers. This will override SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED \"SDL_JOYSTICK_ARCADESTICK_DEVICES_EXCLUDED\"\n\n/**\n *  A variable containing a list of devices that should not be considerd joysticks.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES \"SDL_JOYSTICK_BLACKLIST_DEVICES\"\n\n/**\n *  A variable containing a list of devices that should be considered joysticks. This will override SDL_HINT_JOYSTICK_BLACKLIST_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED \"SDL_JOYSTICK_BLACKLIST_DEVICES_EXCLUDED\"\n\n/**\n *  A variable containing a list of flightstick style controllers.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES \"SDL_JOYSTICK_FLIGHTSTICK_DEVICES\"\n\n/**\n *  A variable containing a list of devices that are not flightstick style controllers. This will override SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED \"SDL_JOYSTICK_FLIGHTSTICK_DEVICES_EXCLUDED\"\n\n/**\n *  A variable containing a list of devices known to have a GameCube form factor.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES \"SDL_JOYSTICK_GAMECUBE_DEVICES\"\n\n/**\n *  A variable containing a list of devices known not to have a GameCube form factor. This will override SDL_HINT_JOYSTICK_GAMECUBE_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED \"SDL_JOYSTICK_GAMECUBE_DEVICES_EXCLUDED\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI joystick drivers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI drivers are not used\n *    \"1\"       - HIDAPI drivers are used (the default)\n *\n *  This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI \"SDL_JOYSTICK_HIDAPI\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE \"SDL_JOYSTICK_HIDAPI_GAMECUBE\"\n\n/**\n *  \\brief  A variable controlling whether \"low_frequency_rumble\" and \"high_frequency_rumble\" is used to implement\n *          the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2)\n *          this is useful for applications that need full compatibility for things like ADSR envelopes.\n *          Stop is implemented by setting \"low_frequency_rumble\" to \"0\" and \"high_frequency_rumble\" \">0\"\n *          Rumble is both at any arbitrary value,\n *          StopHard is implemented by setting both \"low_frequency_rumble\" and \"high_frequency_rumble\" to \"0\"\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Normal rumble behavior is behavior is used (default)\n *    \"1\"       - Proper GameCube controller rumble behavior is used\n *\n */\n#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE \"SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE\"\n\n/**\n  *  \\brief  A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - HIDAPI driver is not used\n  *    \"1\"       - HIDAPI driver is used\n  *\n  *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS \"SDL_JOYSTICK_HIDAPI_JOY_CONS\"\n\n/**\n  *  \\brief  A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad\n  *    \"1\"       - Left and right Joy-Con controllers will be combined into a single controller (the default)\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS \"SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS\"\n\n/**\n  *  \\brief  A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Left and right Joy-Con controllers will not be in vertical mode (the default)\n  *    \"1\"       - Left and right Joy-Con controllers will be in vertical mode\n  *\n  *  This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS \"SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS\"\n\n/**\n  *  \\brief  A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - HIDAPI driver is not used\n  *    \"1\"       - HIDAPI driver is used\n  *\n  *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_LUNA \"SDL_JOYSTICK_HIDAPI_LUNA\"\n\n/**\n  *  \\brief  A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - HIDAPI driver is not used\n  *    \"1\"       - HIDAPI driver is used\n  *\n  *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC \"SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC\"\n\n/**\n  *  \\brief  A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - HIDAPI driver is not used\n  *    \"1\"       - HIDAPI driver is used\n  *\n  *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n  */\n#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD \"SDL_JOYSTICK_HIDAPI_SHIELD\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for PS3 controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and \"0\" on other platforms.\n *\n *  It is not possible to use this driver on Windows, due to limitations in the default drivers\n *  installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS3 \"SDL_JOYSTICK_HIDAPI_PS3\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for PS4 controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS4 \"SDL_JOYSTICK_HIDAPI_PS4\"\n\n/**\n *  \\brief  A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - extended reports are not enabled (the default)\n *    \"1\"       - extended reports\n *\n *  Extended input reports allow rumble on Bluetooth PS4 controllers, but\n *  break DirectInput handling for applications that don't use SDL.\n *\n *  Once extended reports are enabled, they can not be disabled without\n *  power cycling the controller.\n *\n *  For compatibility with applications written for versions of SDL prior\n *  to the introduction of PS5 controller support, this value will also\n *  control the state of extended reports on PS5 controllers when the\n *  SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE \"SDL_JOYSTICK_HIDAPI_PS4_RUMBLE\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for PS5 controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS5 \"SDL_JOYSTICK_HIDAPI_PS5\"\n\n/**\n *  \\brief  A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - player LEDs are not enabled\n *    \"1\"       - player LEDs are enabled (the default)\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED \"SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED\"\n\n/**\n *  \\brief  A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - extended reports are not enabled (the default)\n *    \"1\"       - extended reports\n *\n *  Extended input reports allow rumble on Bluetooth PS5 controllers, but\n *  break DirectInput handling for applications that don't use SDL.\n *\n *  Once extended reports are enabled, they can not be disabled without\n *  power cycling the controller.\n *\n *  For compatibility with applications written for versions of SDL prior\n *  to the introduction of PS5 controller support, this value defaults to\n *  the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE \"SDL_JOYSTICK_HIDAPI_PS5_RUMBLE\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_STADIA \"SDL_JOYSTICK_HIDAPI_STADIA\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access\n *                and may prompt the user for permission on iOS and Android.\n *\n *  The default is \"0\"\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_STEAM \"SDL_JOYSTICK_HIDAPI_STEAM\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for the Steam Deck builtin controller should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_STEAMDECK \"SDL_JOYSTICK_HIDAPI_STEAMDECK\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH \"SDL_JOYSTICK_HIDAPI_SWITCH\"\n\n/**\n *  \\brief  A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened\n *\n *  This variable can be set to the following values:\n *    \"0\"       - home button LED is turned off\n *    \"1\"       - home button LED is turned on\n *\n *  By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED \"SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED\"\n\n/**\n *  \\brief  A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened\n *\n *  This variable can be set to the following values:\n *    \"0\"       - home button LED is turned off\n *    \"1\"       - home button LED is turned on\n *\n *  By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED \"SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED\"\n\n/**\n *  \\brief  A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - player LEDs are not enabled\n *    \"1\"       - player LEDs are enabled (the default)\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED \"SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_WII \"SDL_JOYSTICK_HIDAPI_WII\"\n\n/**\n *  \\brief  A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - player LEDs are not enabled\n *    \"1\"       - player LEDs are enabled (the default)\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED \"SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for XBox controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is \"0\" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX   \"SDL_JOYSTICK_HIDAPI_XBOX\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360   \"SDL_JOYSTICK_HIDAPI_XBOX_360\"\n\n/**\n *  \\brief  A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - player LEDs are not enabled\n *    \"1\"       - player LEDs are enabled (the default)\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED \"SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS   \"SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS\"\n\n/**\n *  \\brief  A variable controlling whether the HIDAPI driver for XBox One controllers should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - HIDAPI driver is not used\n *    \"1\"       - HIDAPI driver is used\n *\n *  The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE   \"SDL_JOYSTICK_HIDAPI_XBOX_ONE\"\n\n/**\n *  \\brief  A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened\n *\n *  This variable can be set to the following values:\n *    \"0\"       - home button LED is turned off\n *    \"1\"       - home button LED is turned on\n *\n *  By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4.\n */\n#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED \"SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED\"\n\n/**\n  *  A variable controlling whether IOKit should be used for controller handling.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - IOKit is not used\n  *    \"1\"       - IOKit is used (the default)\n  */\n#define SDL_HINT_JOYSTICK_IOKIT \"SDL_JOYSTICK_IOKIT\"\n\n/**\n  *  A variable controlling whether GCController should be used for controller handling.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - GCController is not used\n  *    \"1\"       - GCController is used (the default)\n  */\n#define SDL_HINT_JOYSTICK_MFI \"SDL_JOYSTICK_MFI\"\n\n/**\n  *  \\brief  A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - RAWINPUT drivers are not used\n  *    \"1\"       - RAWINPUT drivers are used (the default)\n  */\n#define SDL_HINT_JOYSTICK_RAWINPUT \"SDL_JOYSTICK_RAWINPUT\"\n\n/**\n  *  \\brief  A variable controlling whether the RAWINPUT driver should pull correlated data from XInput.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - RAWINPUT driver will only use data from raw input APIs\n  *    \"1\"       - RAWINPUT driver will also pull data from XInput, providing\n  *                better trigger axes, guide button presses, and rumble support\n  *                for Xbox controllers\n  *\n  *  The default is \"1\".  This hint applies to any joysticks opened after setting the hint.\n  */\n#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT   \"SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT\"\n\n/**\n  *  \\brief  A variable controlling whether the ROG Chakram mice should show up as joysticks\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - ROG Chakram mice do not show up as joysticks (the default)\n  *    \"1\"       - ROG Chakram mice show up as joysticks\n  */\n#define SDL_HINT_JOYSTICK_ROG_CHAKRAM \"SDL_JOYSTICK_ROG_CHAKRAM\"\n\n/**\n  *  \\brief  A variable controlling whether a separate thread should be used\n  *          for handling joystick detection and raw input messages on Windows\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - A separate thread is not used (the default)\n  *    \"1\"       - A separate thread is used for handling raw input messages\n  *\n  */\n#define SDL_HINT_JOYSTICK_THREAD \"SDL_JOYSTICK_THREAD\"\n\n/**\n *  A variable containing a list of throttle style controllers.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES \"SDL_JOYSTICK_THROTTLE_DEVICES\"\n\n/**\n *  A variable containing a list of devices that are not throttle style controllers. This will override SDL_HINT_JOYSTICK_THROTTLE_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_THROTTLE_DEVICES_EXCLUDED \"SDL_JOYSTICK_THROTTLE_DEVICES_EXCLUDED\"\n\n/**\n  *  \\brief  A variable controlling whether Windows.Gaming.Input should be used for controller handling.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - WGI is not used\n  *    \"1\"       - WGI is used (the default)\n  */\n#define SDL_HINT_JOYSTICK_WGI \"SDL_JOYSTICK_WGI\"\n\n/**\n *  A variable containing a list of wheel style controllers.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_WHEEL_DEVICES \"SDL_JOYSTICK_WHEEL_DEVICES\"\n\n/**\n *  A variable containing a list of devices that are not wheel style controllers. This will override SDL_HINT_JOYSTICK_WHEEL_DEVICES and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_WHEEL_DEVICES_EXCLUDED \"SDL_JOYSTICK_WHEEL_DEVICES_EXCLUDED\"\n\n/**\n *  A variable containing a list of devices known to have all axes centered at zero.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_JOYSTICK_ZERO_CENTERED_DEVICES \"SDL_JOYSTICK_ZERO_CENTERED_DEVICES\"\n\n/**\n * \\brief Determines whether SDL enforces that DRM master is required in order\n *        to initialize the KMSDRM video backend.\n *\n * The DRM subsystem has a concept of a \"DRM master\" which is a DRM client that\n * has the ability to set planes, set cursor, etc. When SDL is DRM master, it\n * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL\n * is still able to process input and query attributes of attached displays,\n * but it cannot change display state or draw to the screen directly.\n *\n * In some cases, it can be useful to have the KMSDRM backend even if it cannot\n * be used for rendering. An app may want to use SDL for input processing while\n * using another rendering API (such as an MMAL overlay on Raspberry Pi) or\n * using its own code to render to DRM overlays that SDL doesn't support.\n *\n * This hint must be set before initializing the video subsystem.\n *\n * This variable can be set to the following values:\n *    \"0\"       - SDL will allow usage of the KMSDRM backend without DRM master\n *    \"1\"       - SDL Will require DRM master to use the KMSDRM backend (default)\n */\n#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER      \"SDL_KMSDRM_REQUIRE_DRM_MASTER\"\n\n/**\n  *  \\brief  A comma separated list of devices to open as joysticks\n  *\n  *  This variable is currently only used by the Linux joystick driver.\n  */\n#define SDL_HINT_JOYSTICK_DEVICE \"SDL_JOYSTICK_DEVICE\"\n\n/**\n  *  \\brief  A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default)\n  *    \"1\"       - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats\n  */\n#define SDL_HINT_LINUX_DIGITAL_HATS \"SDL_LINUX_DIGITAL_HATS\"\n\n/**\n  *  \\brief  A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Return digital hat values based on unfiltered input axis values\n  *    \"1\"       - Return digital hat values with deadzones on the input axes taken into account (the default)\n  */\n#define SDL_HINT_LINUX_HAT_DEADZONES \"SDL_LINUX_HAT_DEADZONES\"\n\n/**\n  *  \\brief  A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Use /dev/input/event*\n  *    \"1\"       - Use /dev/input/js*\n  *\n  *  By default the /dev/input/event* interfaces are used\n  */\n#define SDL_HINT_LINUX_JOYSTICK_CLASSIC \"SDL_LINUX_JOYSTICK_CLASSIC\"\n\n/**\n  *  \\brief  A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.\n  *\n  *  This variable can be set to the following values:\n  *    \"0\"       - Return unfiltered joystick axis values (the default)\n  *    \"1\"       - Return axis values with deadzones taken into account\n  */\n#define SDL_HINT_LINUX_JOYSTICK_DEADZONES \"SDL_LINUX_JOYSTICK_DEADZONES\"\n\n/**\n *  \\brief A variable controlling the default SDL log levels.\n *\n *  This variable is a comma separated set of category=level tokens that define the default logging levels for SDL applications.\n *\n *  The category can be a numeric category, one of \"app\", \"error\", \"assert\", \"system\", \"audio\", \"video\", \"render\", \"input\", \"test\", or `*` for any unspecified category.\n *\n *  The level can be a numeric level, one of \"verbose\", \"debug\", \"info\", \"warn\", \"error\", \"critical\", or \"quiet\" to disable that category.\n *\n *  You can omit the category if you want to set the logging level for all categories.\n *\n *  If this hint isn't set, the default log levels are equivalent to:\n *  \"app=info,assert=warn,test=verbose,*=error\"\n */\n#define SDL_HINT_LOGGING   \"SDL_LOGGING\"\n\n/**\n*  \\brief  When set don't force the SDL app to become a foreground process\n*\n*  This hint only applies to Mac OS X.\n*\n*/\n#define SDL_HINT_MAC_BACKGROUND_APP    \"SDL_MAC_BACKGROUND_APP\"\n\n/**\n *  \\brief A variable that determines whether ctrl+click should generate a right-click event on Mac\n *\n *  If present, holding ctrl while left clicking will generate a right click\n *  event when on Mac.\n */\n#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK \"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK\"\n\n/**\n *  \\brief   A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default).\n *    \"1\"       - Dispatching OpenGL context updates will allow the dispatching thread to continue execution.\n *\n *  Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread\n *  hangs because it's waiting for that background thread, but that background thread is also hanging because it's\n *  waiting for the main thread to do an update, this might fix your issue.\n *\n *  This hint only applies to macOS.\n *\n *  This hint is available since SDL 2.24.0.\n *\n */\n#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH \"SDL_MAC_OPENGL_ASYNC_DISPATCH\"\n\n/**\n *  \\brief  A variable setting the double click radius, in pixels.\n */\n#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS    \"SDL_MOUSE_DOUBLE_CLICK_RADIUS\"\n\n/**\n *  \\brief  A variable setting the double click time, in milliseconds.\n */\n#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME    \"SDL_MOUSE_DOUBLE_CLICK_TIME\"\n\n/**\n *  \\brief Allow mouse click events when clicking to focus an SDL window\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Ignore mouse clicks that activate a window\n *    \"1\"       - Generate events for mouse clicks that activate a window\n *\n *  By default SDL will ignore mouse clicks that activate a window\n */\n#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH \"SDL_MOUSE_FOCUS_CLICKTHROUGH\"\n\n/**\n *  \\brief  A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode\n */\n#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE    \"SDL_MOUSE_NORMAL_SPEED_SCALE\"\n\n/**\n *  \\brief  A variable controlling whether relative mouse mode constrains the mouse to the center of the window\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Relative mouse mode constrains the mouse to the window\n *    \"1\"       - Relative mouse mode constrains the mouse to the center of the window\n *\n *  Constraining to the center of the window works better for FPS games and when the\n *  application is running over RDP. Constraining to the whole window works better\n *  for 2D games and increases the chance that the mouse will be in the correct\n *  position when using high DPI mice.\n *\n *  By default SDL will constrain the mouse to the center of the window\n */\n#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER    \"SDL_MOUSE_RELATIVE_MODE_CENTER\"\n\n/**\n *  \\brief  A variable controlling whether relative mouse mode is implemented using mouse warping\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Relative mouse mode uses raw input\n *    \"1\"       - Relative mouse mode uses mouse warping\n *\n *  By default SDL will use raw input for relative mouse mode\n */\n#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP    \"SDL_MOUSE_RELATIVE_MODE_WARP\"\n\n/**\n *  \\brief  A variable controlling whether relative mouse motion is affected by renderer scaling\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Relative motion is unaffected by DPI or renderer's logical size\n *    \"1\"       - Relative motion is scaled according to DPI scaling and logical size\n *\n *  By default relative mouse deltas are affected by DPI and renderer scaling\n */\n#define SDL_HINT_MOUSE_RELATIVE_SCALING \"SDL_MOUSE_RELATIVE_SCALING\"\n\n/**\n *  \\brief  A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode\n */\n#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE    \"SDL_MOUSE_RELATIVE_SPEED_SCALE\"\n\n/**\n *  \\brief  A variable controlling whether the system mouse acceleration curve is used for relative mouse motion.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Relative mouse motion will be unscaled (the default)\n *    \"1\"       - Relative mouse motion will be scaled using the system mouse acceleration curve.\n *\n *    If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale.\n */\n#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE    \"SDL_MOUSE_RELATIVE_SYSTEM_SCALE\"\n\n/**\n *  \\brief  A variable controlling whether a motion event should be generated for mouse warping in relative mode.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Warping the mouse will not generate a motion event in relative mode\n *    \"1\"       - Warping the mouse will generate a motion event in relative mode\n *\n *  By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping.\n */\n#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION  \"SDL_MOUSE_RELATIVE_WARP_MOTION\"\n\n/**\n *  \\brief  A variable controlling whether mouse events should generate synthetic touch events\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Mouse events will not generate touch events (default for desktop platforms)\n *    \"1\"       - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)\n */\n#define SDL_HINT_MOUSE_TOUCH_EVENTS    \"SDL_MOUSE_TOUCH_EVENTS\"\n\n/**\n *  \\brief  A variable controlling whether the mouse is captured while mouse buttons are pressed\n *\n *  This variable can be set to the following values:\n *    \"0\"       - The mouse is not captured while mouse buttons are pressed\n *    \"1\"       - The mouse is captured while mouse buttons are pressed\n *\n *  By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged\n *  outside the window, the application continues to receive mouse events until the button is\n *  released.\n */\n#define SDL_HINT_MOUSE_AUTO_CAPTURE    \"SDL_MOUSE_AUTO_CAPTURE\"\n\n/**\n *  \\brief Tell SDL not to catch the SIGINT or SIGTERM signals.\n *\n * This hint only applies to Unix-like platforms, and should set before\n * any calls to SDL_Init()\n *\n * The variable can be set to the following values:\n *   \"0\"       - SDL will install a SIGINT and SIGTERM handler, and when it\n *               catches a signal, convert it into an SDL_QUIT event.\n *   \"1\"       - SDL will not install a signal handler at all.\n */\n#define SDL_HINT_NO_SIGNAL_HANDLERS   \"SDL_NO_SIGNAL_HANDLERS\"\n\n/**\n *  \\brief  A variable controlling what driver to use for OpenGL ES contexts.\n *\n *  On some platforms, currently Windows and X11, OpenGL drivers may support\n *  creating contexts with an OpenGL ES profile. By default SDL uses these\n *  profiles, when available, otherwise it attempts to load an OpenGL ES\n *  library, e.g. that provided by the ANGLE project. This variable controls\n *  whether SDL follows this default behaviour or will always load an\n *  OpenGL ES library.\n *\n *  Circumstances where this is useful include\n *  - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,\n *    or emulator, e.g. those from ARM, Imagination or Qualcomm.\n *  - Resolving OpenGL ES function addresses at link time by linking with\n *    the OpenGL ES library instead of querying them at run time with\n *    SDL_GL_GetProcAddress().\n *\n *  Caution: for an application to work with the default behaviour across\n *  different OpenGL drivers it must query the OpenGL ES function\n *  addresses at run time using SDL_GL_GetProcAddress().\n *\n *  This variable is ignored on most platforms because OpenGL ES is native\n *  or not supported.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Use ES profile of OpenGL, if available. (Default when not set.)\n *    \"1\"       - Load OpenGL ES library using the default library names.\n *\n */\n#define SDL_HINT_OPENGL_ES_DRIVER   \"SDL_OPENGL_ES_DRIVER\"\n\n/**\n *  \\brief  A variable controlling which orientations are allowed on iOS/Android.\n *\n *  In some circumstances it is necessary to be able to explicitly control\n *  which UI orientations are allowed.\n *\n *  This variable is a space delimited list of the following values:\n *    \"LandscapeLeft\", \"LandscapeRight\", \"Portrait\" \"PortraitUpsideDown\"\n */\n#define SDL_HINT_ORIENTATIONS \"SDL_IOS_ORIENTATIONS\"\n\n/**\n *  \\brief  A variable controlling the use of a sentinel event when polling the event queue\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable poll sentinels\n *    \"1\"       - Enable poll sentinels\n *\n *  When polling for events, SDL_PumpEvents is used to gather new events from devices.\n *  If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will\n *  become stuck until the new events stop.\n *  This is most noticeable when moving a high frequency mouse.\n *\n *  By default, poll sentinels are enabled.\n */\n#define SDL_HINT_POLL_SENTINEL \"SDL_POLL_SENTINEL\"\n\n/**\n *  \\brief Override for SDL_GetPreferredLocales()\n *\n *  If set, this will be favored over anything the OS might report for the\n *  user's preferred locales. Changing this hint at runtime will not generate\n *  a SDL_LOCALECHANGED event (but if you can change the hint, you can push\n *  your own event, if you want).\n *\n *  The format of this hint is a comma-separated list of language and locale,\n *  combined with an underscore, as is a common format: \"en_GB\". Locale is\n *  optional: \"en\". So you might have a list like this: \"en_GB,jp,es_PT\"\n */\n#define SDL_HINT_PREFERRED_LOCALES \"SDL_PREFERRED_LOCALES\"\n\n/**\n *  \\brief  A variable describing the content orientation on QtWayland-based platforms.\n *\n *  On QtWayland platforms, windows are rotated client-side to allow for custom\n *  transitions. In order to correctly position overlays (e.g. volume bar) and\n *  gestures (e.g. events view, close/minimize gestures), the system needs to\n *  know in which orientation the application is currently drawing its contents.\n *\n *  This does not cause the window to be rotated or resized, the application\n *  needs to take care of drawing the content in the right orientation (the\n *  framebuffer is always in portrait mode).\n *\n *  This variable can be one of the following values:\n *    \"primary\" (default), \"portrait\", \"landscape\", \"inverted-portrait\", \"inverted-landscape\"\n *\n *  Since SDL 2.0.22 this variable accepts a comma-separated list of values above.\n */\n#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION \"SDL_QTWAYLAND_CONTENT_ORIENTATION\"\n\n/**\n *  \\brief  Flags to set on QtWayland windows to integrate with the native window manager.\n *\n *  On QtWayland platforms, this hint controls the flags to set on the windows.\n *  For example, on Sailfish OS \"OverridesSystemGestures\" disables swipe gestures.\n *\n *  This variable is a space-separated list of the following values (empty = no flags):\n *    \"OverridesSystemGestures\", \"StaysOnTop\", \"BypassWindowManager\"\n */\n#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS \"SDL_QTWAYLAND_WINDOW_FLAGS\"\n\n/**\n *  \\brief  A variable controlling whether the 2D render API is compatible or efficient.\n *\n *  This variable can be set to the following values:\n *\n *    \"0\"     - Don't use batching to make rendering more efficient.\n *    \"1\"     - Use batching, but might cause problems if app makes its own direct OpenGL calls.\n *\n *  Up to SDL 2.0.9, the render API would draw immediately when requested. Now\n *  it batches up draw requests and sends them all to the GPU only when forced\n *  to (during SDL_RenderPresent, when changing render targets, by updating a\n *  texture that the batch needs, etc). This is significantly more efficient,\n *  but it can cause problems for apps that expect to render on top of the\n *  render API's output. As such, SDL will disable batching if a specific\n *  render backend is requested (since this might indicate that the app is\n *  planning to use the underlying graphics API directly). This hint can\n *  be used to explicitly request batching in this instance. It is a contract\n *  that you will either never use the underlying graphics API directly, or\n *  if you do, you will call SDL_RenderFlush() before you do so any current\n *  batch goes to the GPU before your work begins. Not following this contract\n *  will result in undefined behavior.\n */\n#define SDL_HINT_RENDER_BATCHING  \"SDL_RENDER_BATCHING\"\n\n/**\n *  \\brief  A variable controlling how the 2D render API renders lines\n *\n *  This variable can be set to the following values:\n *    \"0\"     - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20)\n *    \"1\"     - Use the driver point API using Bresenham's line algorithm (correct, draws many points)\n *    \"2\"     - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20)\n *    \"3\"     - Use the driver geometry API (correct, draws thicker diagonal lines)\n *\n *  This variable should be set when the renderer is created.\n */\n#define SDL_HINT_RENDER_LINE_METHOD \"SDL_RENDER_LINE_METHOD\"\n\n/**\n *  \\brief  A variable controlling whether to enable Direct3D 11+'s Debug Layer.\n *\n *  This variable does not have any effect on the Direct3D 9 based renderer.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable Debug Layer use\n *    \"1\"       - Enable Debug Layer use\n *\n *  By default, SDL does not use Direct3D Debug Layer.\n */\n#define SDL_HINT_RENDER_DIRECT3D11_DEBUG    \"SDL_RENDER_DIRECT3D11_DEBUG\"\n\n/**\n *  \\brief  A variable controlling whether the Direct3D device is initialized for thread-safe operations.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Thread-safety is not enabled (faster)\n *    \"1\"       - Thread-safety is enabled\n *\n *  By default the Direct3D device is created with thread-safety disabled.\n */\n#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE \"SDL_RENDER_DIRECT3D_THREADSAFE\"\n\n/**\n *  \\brief  A variable specifying which render driver to use.\n *\n *  If the application doesn't pick a specific renderer to use, this variable\n *  specifies the name of the preferred renderer.  If the preferred renderer\n *  can't be initialized, the normal default renderer is used.\n *\n *  This variable is case insensitive and can be set to the following values:\n *    \"direct3d\"\n *    \"direct3d11\"\n *    \"direct3d12\"\n *    \"opengl\"\n *    \"opengles2\"\n *    \"opengles\"\n *    \"metal\"\n *    \"software\"\n *\n *  The default varies by platform, but it's the first one in the list that\n *  is available on the current platform.\n */\n#define SDL_HINT_RENDER_DRIVER              \"SDL_RENDER_DRIVER\"\n\n/**\n *  \\brief  A variable controlling the scaling policy for SDL_RenderSetLogicalSize.\n *\n *  This variable can be set to the following values:\n *    \"0\" or \"letterbox\" - Uses letterbox/sidebars to fit the entire rendering on screen\n *    \"1\" or \"overscan\"  - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen\n *\n *  By default letterbox is used\n */\n#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE       \"SDL_RENDER_LOGICAL_SIZE_MODE\"\n\n/**\n *  \\brief  A variable controlling whether the OpenGL render driver uses shaders if they are available.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable shaders\n *    \"1\"       - Enable shaders\n *\n *  By default shaders are used if OpenGL supports them.\n */\n#define SDL_HINT_RENDER_OPENGL_SHADERS      \"SDL_RENDER_OPENGL_SHADERS\"\n\n/**\n *  \\brief  A variable controlling the scaling quality\n *\n *  This variable can be set to the following values:\n *    \"0\" or \"nearest\" - Nearest pixel sampling\n *    \"1\" or \"linear\"  - Linear filtering (supported by OpenGL and Direct3D)\n *    \"2\" or \"best\"    - Currently this is the same as \"linear\"\n *\n *  By default nearest pixel sampling is used\n */\n#define SDL_HINT_RENDER_SCALE_QUALITY       \"SDL_RENDER_SCALE_QUALITY\"\n\n/**\n *  \\brief  A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable vsync\n *    \"1\"       - Enable vsync\n *\n *  By default SDL does not sync screen surface updates with vertical refresh.\n */\n#define SDL_HINT_RENDER_VSYNC               \"SDL_RENDER_VSYNC\"\n\n/**\n *  \\brief  A variable controlling whether the Metal render driver select low power device over default one\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Use the prefered OS device\n *    \"1\"       - Select a low power one\n *\n *  By default the prefered OS device is used.\n */\n#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE \"SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE\"\n\n/**\n *  A variable containing a list of ROG gamepad capable mice.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_ROG_GAMEPAD_MICE \"SDL_ROG_GAMEPAD_MICE\"\n\n/**\n *  A variable containing a list of devices that are not ROG gamepad capable mice. This will override SDL_HINT_ROG_GAMEPAD_MICE and the built in device list.\n *\n *  The format of the string is a comma separated list of USB VID/PID pairs\n *  in hexadecimal form, e.g.\n *\n *      0xAAAA/0xBBBB,0xCCCC/0xDDDD\n *\n *  The variable can also take the form of @file, in which case the named\n *  file will be loaded and interpreted as the value of the variable.\n */\n#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED \"SDL_ROG_GAMEPAD_MICE_EXCLUDED\"\n\n/**\n *  \\brief  A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS\n *\n *  This variable can be set to the following values:\n *    \"0\"       - It will be using VSYNC as defined in the main flag. Default\n *    \"1\"       - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed\n *\n *  By default SDL does not enable the automatic VSYNC\n */\n#define SDL_HINT_PS2_DYNAMIC_VSYNC    \"SDL_PS2_DYNAMIC_VSYNC\"\n\n/**\n * \\brief A variable to control whether the return key on the soft keyboard\n *        should hide the soft keyboard on Android and iOS.\n *\n * The variable can be set to the following values:\n *   \"0\"       - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)\n *   \"1\"       - The return key will hide the keyboard.\n *\n * The value of this hint is used at runtime, so it can be changed at any time.\n */\n#define SDL_HINT_RETURN_KEY_HIDES_IME \"SDL_RETURN_KEY_HIDES_IME\"\n\n/**\n * \\brief Tell SDL which Dispmanx layer to use on a Raspberry PI\n *\n * Also known as Z-order. The variable can take a negative or positive value.\n * The default is 10000.\n */\n#define SDL_HINT_RPI_VIDEO_LAYER           \"SDL_RPI_VIDEO_LAYER\"\n\n/**\n *  \\brief Specify an \"activity name\" for screensaver inhibition.\n *\n * Some platforms, notably Linux desktops, list the applications which are\n * inhibiting the screensaver or other power-saving features.\n *\n * This hint lets you specify the \"activity name\" sent to the OS when\n * SDL_DisableScreenSaver() is used (or the screensaver is automatically\n * disabled). The contents of this hint are used when the screensaver is\n * disabled. You should use a string that describes what your program is doing\n * (and, therefore, why the screensaver is disabled).  For example, \"Playing a\n * game\" or \"Watching a video\".\n *\n * Setting this to \"\" or leaving it unset will have SDL use a reasonable\n * default: \"Playing a game\" or something similar.\n *\n * On targets where this is not supported, this hint does nothing.\n */\n#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME \"SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME\"\n\n/**\n *  \\brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.\n *\n *  On some platforms, like Linux, a realtime priority thread may be subject to restrictions\n *  that require special handling by the application. This hint exists to let SDL know that\n *  the app is prepared to handle said restrictions.\n *\n *  On Linux, SDL will apply the following configuration to any thread that becomes realtime:\n *   * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,\n *   * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.\n *     * Exceeding this limit will result in the kernel sending SIGKILL to the app,\n *     * Refer to the man pages for more information.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - default platform specific behaviour\n *    \"1\"       - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy\n */\n#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL \"SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL\"\n\n/**\n*  \\brief  A string specifying additional information to use with SDL_SetThreadPriority.\n*\n*  By default SDL_SetThreadPriority will make appropriate system changes in order to\n*  apply a thread priority.  For example on systems using pthreads the scheduler policy\n*  is changed automatically to a policy that works well with a given priority.\n*  Code which has specific requirements can override SDL's default behavior with this hint.\n*\n*  pthread hint values are \"current\", \"other\", \"fifo\" and \"rr\".\n*  Currently no other platform hint values are defined but may be in the future.\n*\n*  \\note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro\n*  configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME\n*  after calling SDL_SetThreadPriority().\n*/\n#define SDL_HINT_THREAD_PRIORITY_POLICY         \"SDL_THREAD_PRIORITY_POLICY\"\n\n/**\n*  \\brief  A string specifying SDL's threads stack size in bytes or \"0\" for the backend's default size\n*\n*  Use this hint in case you need to set SDL's threads stack size to other than the default.\n*  This is specially useful if you build SDL against a non glibc libc library (such as musl) which\n*  provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).\n*  Support for this hint is currently available only in the pthread, Windows, and PSP backend.\n*\n*  Instead of this hint, in 2.0.9 and later, you can use\n*  SDL_CreateThreadWithStackSize(). This hint only works with the classic\n*  SDL_CreateThread().\n*/\n#define SDL_HINT_THREAD_STACK_SIZE              \"SDL_THREAD_STACK_SIZE\"\n\n/**\n *  \\brief A variable that controls the timer resolution, in milliseconds.\n *\n *  The higher resolution the timer, the more frequently the CPU services\n *  timer interrupts, and the more precise delays are, but this takes up\n *  power and CPU time.  This hint is only used on Windows.\n *\n *  See this blog post for more information:\n *  http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/\n *\n *  If this variable is set to \"0\", the system timer resolution is not set.\n *\n *  The default value is \"1\". This hint may be set at any time.\n */\n#define SDL_HINT_TIMER_RESOLUTION \"SDL_TIMER_RESOLUTION\"\n\n/**\n *  \\brief  A variable controlling whether touch events should generate synthetic mouse events\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Touch events will not generate mouse events\n *    \"1\"       - Touch events will generate mouse events\n *\n *  By default SDL will generate mouse events for touch events\n */\n#define SDL_HINT_TOUCH_MOUSE_EVENTS    \"SDL_TOUCH_MOUSE_EVENTS\"\n\n/**\n *  \\brief  A variable controlling which touchpad should generate synthetic mouse events\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Only front touchpad should generate mouse events. Default\n *    \"1\"       - Only back touchpad should generate mouse events.\n *    \"2\"       - Both touchpads should generate mouse events.\n *\n *  By default SDL will generate mouse events for all touch devices\n */\n#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE    \"SDL_HINT_VITA_TOUCH_MOUSE_DEVICE\"\n\n/**\n *  \\brief  A variable controlling whether the Android / tvOS remotes\n *  should be listed as joystick devices, instead of sending keyboard events.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Remotes send enter/escape/arrow key events\n *    \"1\"       - Remotes are available as 2 axis, 2 button joysticks (the default).\n */\n#define SDL_HINT_TV_REMOTE_AS_JOYSTICK \"SDL_TV_REMOTE_AS_JOYSTICK\"\n\n/**\n *  \\brief  A variable controlling whether the screensaver is enabled.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable screensaver\n *    \"1\"       - Enable screensaver\n *\n *  By default SDL will disable the screensaver.\n */\n#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER    \"SDL_VIDEO_ALLOW_SCREENSAVER\"\n\n/**\n * \\brief Tell the video driver that we only want a double buffer.\n *\n * By default, most lowlevel 2D APIs will use a triple buffer scheme that\n * wastes no CPU time on waiting for vsync after issuing a flip, but\n * introduces a frame of latency. On the other hand, using a double buffer\n * scheme instead is recommended for cases where low latency is an important\n * factor because we save a whole frame of latency.\n * We do so by waiting for vsync immediately after issuing a flip, usually just\n * after eglSwapBuffers call in the backend's *_SwapWindow function.\n *\n * Since it's driver-specific, it's only supported where possible and\n * implemented. Currently supported the following drivers:\n *\n * - KMSDRM (kmsdrm)\n * - Raspberry Pi (raspberrypi)\n */\n#define SDL_HINT_VIDEO_DOUBLE_BUFFER      \"SDL_VIDEO_DOUBLE_BUFFER\"\n\n/**\n * \\brief A variable controlling whether the EGL window is allowed to be\n * composited as transparent, rather than opaque.\n *\n * Most window systems will always render windows opaque, even if the surface\n * format has an alpha channel. This is not always true, however, so by default\n * SDL will try to enforce opaque composition. To override this behavior, you\n * can set this hint to \"1\".\n */\n#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY \"SDL_VIDEO_EGL_ALLOW_TRANSPARENCY\"\n\n/**\n * \\brief A variable controlling whether the graphics context is externally managed.\n *\n * This variable can be set to the following values:\n *  \"0\"         - SDL will manage graphics contexts that are attached to windows.\n *  \"1\"         - Disable graphics context management on windows.\n *\n * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the\n * context will be automatically saved and restored when pausing the application. Additionally, some\n * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to \"1\" will prevent this\n * behavior, which is desireable when the application manages the graphics context, such as\n * an externally managed OpenGL context or attaching a Vulkan surface to the window.\n */\n#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT    \"SDL_VIDEO_EXTERNAL_CONTEXT\"\n\n/**\n *  \\brief If set to 1, then do not allow high-DPI windows. (\"Retina\" on Mac and iOS)\n */\n#define SDL_HINT_VIDEO_HIGHDPI_DISABLED \"SDL_VIDEO_HIGHDPI_DISABLED\"\n\n/**\n *  \\brief  A variable that dictates policy for fullscreen Spaces on Mac OS X.\n *\n *  This hint only applies to Mac OS X.\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and\n *                SDL_WINDOW_RESIZABLE windows won't offer the \"fullscreen\"\n *                button on their titlebars).\n *    \"1\"       - Enable Spaces support (FULLSCREEN_DESKTOP will use them and\n *                SDL_WINDOW_RESIZABLE windows will offer the \"fullscreen\"\n *                button on their titlebars).\n *\n *  The default value is \"1\". This hint must be set before any windows are created.\n */\n#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES    \"SDL_VIDEO_MAC_FULLSCREEN_SPACES\"\n\n/**\n *  \\brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.\n *  \\warning  Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're\n *            seeing if \"true\" causes more problems than it solves in modern times.\n *\n */\n#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS   \"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS\"\n\n/**\n *  \\brief  A variable controlling whether the libdecor Wayland backend is allowed to be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - libdecor use is disabled.\n *    \"1\"       - libdecor use is enabled (default).\n *\n *  libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.\n */\n#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR \"SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR\"\n\n/**\n *  \\brief  A variable controlling whether the libdecor Wayland backend is preferred over native decrations.\n *\n *  When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is\n *  available. (Note that, by default, libdecor will use xdg-decoration itself if available).\n *\n *  This variable can be set to the following values:\n *    \"0\"       - libdecor is enabled only if server-side decorations are unavailable.\n *    \"1\"       - libdecor is always enabled if available.\n *\n *  libdecor is used over xdg-shell when xdg-decoration protocol is unavailable.\n */\n#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR \"SDL_VIDEO_WAYLAND_PREFER_LIBDECOR\"\n\n/**\n *  \\brief  A variable controlling whether video mode emulation is enabled under Wayland.\n *\n *  When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application.\n *  If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled\n *  desktop, the native display resolution.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Video mode emulation is disabled.\n *    \"1\"       - Video mode emulation is enabled.\n *\n *  By default video mode emulation is enabled.\n */\n#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION \"SDL_VIDEO_WAYLAND_MODE_EMULATION\"\n\n/**\n *  \\brief  Enable or disable mouse pointer warp emulation, needed by some older games.\n *\n *  When this hint is set, any SDL will emulate mouse warps using relative mouse mode.\n *  This is required for some older games (such as Source engine games), which warp the\n *  mouse to the centre of the screen rather than using relative mouse motion. Note that\n *  relative mouse mode may have different mouse acceleration behaviour than pointer warps.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - All mouse warps fail, as mouse warping is not available under wayland.\n *    \"1\"       - Some mouse warps will be emulated by forcing relative mouse mode.\n *\n *  If not set, this is automatically enabled unless an application uses relative mouse\n *  mode directly.\n */\n#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP \"SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP\"\n\n/**\n*  \\brief  A variable that is the address of another SDL_Window* (as a hex string formatted with \"%p\").\n*\n*  If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has\n*  SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly\n*  created SDL_Window:\n*\n*  1. Its pixel format will be set to the same pixel format as this SDL_Window.  This is\n*  needed for example when sharing an OpenGL context across multiple windows.\n*\n*  2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for\n*  OpenGL rendering.\n*\n*  This variable can be set to the following values:\n*    The address (as a string \"%p\") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should\n*    share a pixel format with.\n*/\n#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT    \"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT\"\n\n/**\n *  \\brief  When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL.\n *\n * This variable can be set to the following values:\n * \"0\" - Don't add any graphics flags to the SDL_WindowFlags\n * \"1\" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags\n *\n * By default SDL will not make the foreign window compatible with OpenGL.\n */\n#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL \"SDL_VIDEO_FOREIGN_WINDOW_OPENGL\"\n\n/**\n *  \\brief  When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan.\n *\n * This variable can be set to the following values:\n * \"0\" - Don't add any graphics flags to the SDL_WindowFlags\n * \"1\" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags\n *\n * By default SDL will not make the foreign window compatible with Vulkan.\n */\n#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN \"SDL_VIDEO_FOREIGN_WINDOW_VULKAN\"\n\n/**\n*  \\brief  A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries\n*\n*  SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It\n*  can use two different sets of binaries, those compiled by the user from source\n*  or those provided by the Chrome browser. In the later case, these binaries require\n*  that SDL loads a DLL providing the shader compiler.\n*\n*  This variable can be set to the following values:\n*    \"d3dcompiler_46.dll\" - default, best for Vista or later.\n*    \"d3dcompiler_43.dll\" - for XP support.\n*    \"none\" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.\n*\n*/\n#define SDL_HINT_VIDEO_WIN_D3DCOMPILER              \"SDL_VIDEO_WIN_D3DCOMPILER\"\n\n/**\n * \\brief A variable controlling whether X11 should use GLX or EGL by default\n *\n * This variable can be set to the following values:\n * \"0\" - Use GLX\n * \"1\" - Use EGL\n *\n * By default SDL will use GLX when both are present.\n */\n#define SDL_HINT_VIDEO_X11_FORCE_EGL \"SDL_VIDEO_X11_FORCE_EGL\"\n\n/**\n * \\brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.\n *\n * This variable can be set to the following values:\n * \"0\" - Disable _NET_WM_BYPASS_COMPOSITOR\n * \"1\" - Enable _NET_WM_BYPASS_COMPOSITOR\n *\n * By default SDL will use _NET_WM_BYPASS_COMPOSITOR\n *\n */\n#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR \"SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR\"\n\n/**\n *  \\brief  A variable controlling whether the X11 _NET_WM_PING protocol should be supported.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable _NET_WM_PING\n *    \"1\"       - Enable _NET_WM_PING\n *\n *  By default SDL will use _NET_WM_PING, but for applications that know they\n *  will not always be able to respond to ping requests in a timely manner they can\n *  turn it off to avoid the window manager thinking the app is hung.\n *  The hint is checked in CreateWindow.\n */\n#define SDL_HINT_VIDEO_X11_NET_WM_PING      \"SDL_VIDEO_X11_NET_WM_PING\"\n\n/**\n *  \\brief  A variable forcing the visual ID chosen for new X11 windows\n *\n */\n#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID      \"SDL_VIDEO_X11_WINDOW_VISUALID\"\n\n/**\n *  \\brief  A no-longer-used variable controlling whether the X11 Xinerama extension should be used.\n *\n * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11.\n *  Now SDL never uses Xinerama, and does not check for this hint at all.\n *  The preprocessor define is left here for source compatibility.\n */\n#define SDL_HINT_VIDEO_X11_XINERAMA         \"SDL_VIDEO_X11_XINERAMA\"\n\n/**\n *  \\brief  A variable controlling whether the X11 XRandR extension should be used.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Disable XRandR\n *    \"1\"       - Enable XRandR\n *\n *  By default SDL will use XRandR.\n */\n#define SDL_HINT_VIDEO_X11_XRANDR           \"SDL_VIDEO_X11_XRANDR\"\n\n/**\n *  \\brief  A no-longer-used variable controlling whether the X11 VidMode extension should be used.\n *\n * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11.\n *  Now SDL never uses XVidMode, and does not check for this hint at all.\n *  The preprocessor define is left here for source compatibility.\n */\n#define SDL_HINT_VIDEO_X11_XVIDMODE         \"SDL_VIDEO_X11_XVIDMODE\"\n\n/**\n *  \\brief  Controls how the fact chunk affects the loading of a WAVE file.\n *\n *  The fact chunk stores information about the number of samples of a WAVE\n *  file. The Standards Update from Microsoft notes that this value can be used\n *  to 'determine the length of the data in seconds'. This is especially useful\n *  for compressed formats (for which this is a mandatory chunk) if they produce\n *  multiple sample frames per block and truncating the block is not allowed.\n *  The fact chunk can exactly specify how many sample frames there should be\n *  in this case.\n *\n *  Unfortunately, most application seem to ignore the fact chunk and so SDL\n *  ignores it by default as well.\n *\n *  This variable can be set to the following values:\n *\n *    \"truncate\"    - Use the number of samples to truncate the wave data if\n *                    the fact chunk is present and valid\n *    \"strict\"      - Like \"truncate\", but raise an error if the fact chunk\n *                    is invalid, not present for non-PCM formats, or if the\n *                    data chunk doesn't have that many samples\n *    \"ignorezero\"  - Like \"truncate\", but ignore fact chunk if the number of\n *                    samples is zero\n *    \"ignore\"      - Ignore fact chunk entirely (default)\n */\n#define SDL_HINT_WAVE_FACT_CHUNK   \"SDL_WAVE_FACT_CHUNK\"\n\n/**\n *  \\brief  Controls how the size of the RIFF chunk affects the loading of a WAVE file.\n *\n *  The size of the RIFF chunk (which includes all the sub-chunks of the WAVE\n *  file) is not always reliable. In case the size is wrong, it's possible to\n *  just ignore it and step through the chunks until a fixed limit is reached.\n *\n *  Note that files that have trailing data unrelated to the WAVE file or\n *  corrupt files may slow down the loading process without a reliable boundary.\n *  By default, SDL stops after 10000 chunks to prevent wasting time. Use the\n *  environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.\n *\n *  This variable can be set to the following values:\n *\n *    \"force\"        - Always use the RIFF chunk size as a boundary for the chunk search\n *    \"ignorezero\"   - Like \"force\", but a zero size searches up to 4 GiB (default)\n *    \"ignore\"       - Ignore the RIFF chunk size and always search up to 4 GiB\n *    \"maximum\"      - Search for chunks until the end of file (not recommended)\n */\n#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE   \"SDL_WAVE_RIFF_CHUNK_SIZE\"\n\n/**\n *  \\brief  Controls how a truncated WAVE file is handled.\n *\n *  A WAVE file is considered truncated if any of the chunks are incomplete or\n *  the data chunk size is not a multiple of the block size. By default, SDL\n *  decodes until the first incomplete block, as most applications seem to do.\n *\n *  This variable can be set to the following values:\n *\n *    \"verystrict\" - Raise an error if the file is truncated\n *    \"strict\"     - Like \"verystrict\", but the size of the RIFF chunk is ignored\n *    \"dropframe\"  - Decode until the first incomplete sample frame\n *    \"dropblock\"  - Decode until the first incomplete block (default)\n */\n#define SDL_HINT_WAVE_TRUNCATION   \"SDL_WAVE_TRUNCATION\"\n\n/**\n * \\brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.\n *        The 0x406D1388 Exception is a trick used to inform Visual Studio of a\n *        thread's name, but it tends to cause problems with other debuggers,\n *        and the .NET runtime. Note that SDL 2.0.6 and later will still use\n *        the (safer) SetThreadDescription API, introduced in the Windows 10\n *        Creators Update, if available.\n *\n * The variable can be set to the following values:\n *   \"0\"       - SDL will raise the 0x406D1388 Exception to name threads.\n *               This is the default behavior of SDL <= 2.0.4.\n *   \"1\"       - SDL will not raise this exception, and threads will be unnamed. (default)\n *               This is necessary with .NET languages or debuggers that aren't Visual Studio.\n */\n#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING \"SDL_WINDOWS_DISABLE_THREAD_NAMING\"\n\n/**\n *  \\brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic).\n *\n *  If the mnemonics are enabled, then menus can be opened by pressing the Alt\n *  key and the corresponding mnemonic (for example, Alt+F opens the File menu).\n *  However, in case an invalid mnemonic is pressed, Windows makes an audible\n *  beep to convey that nothing happened. This is true even if the window has\n *  no menu at all!\n *\n *  Because most SDL applications don't have menus, and some want to use the Alt\n *  key for other purposes, SDL disables mnemonics (and the beeping) by default.\n *\n *  Note: This also affects keyboard events: with mnemonics enabled, when a\n *  menu is opened from the keyboard, you will not receive a KEYUP event for\n *  the mnemonic key, and *might* not receive one for Alt.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Alt+mnemonic does nothing, no beeping. (default)\n *    \"1\"       - Alt+mnemonic opens menus, invalid mnemonics produce a beep.\n */\n#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS \"SDL_WINDOWS_ENABLE_MENU_MNEMONICS\"\n\n/**\n *  \\brief  A variable controlling whether the windows message loop is processed by SDL\n *\n *  This variable can be set to the following values:\n *    \"0\"       - The window message loop is not run\n *    \"1\"       - The window message loop is processed in SDL_PumpEvents()\n *\n *  By default SDL will process the windows message loop\n */\n#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP \"SDL_WINDOWS_ENABLE_MESSAGELOOP\"\n\n/**\n * \\brief Force SDL to use Critical Sections for mutexes on Windows.\n *        On Windows 7 and newer, Slim Reader/Writer Locks are available.\n *        They offer better performance, allocate no kernel ressources and\n *        use less memory. SDL will fall back to Critical Sections on older\n *        OS versions or if forced to by this hint.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Use SRW Locks when available. If not, fall back to Critical Sections. (default)\n *    \"1\"       - Force the use of Critical Sections in all cases.\n *\n */\n#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS \"SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS\"\n\n/**\n * \\brief Force SDL to use Kernel Semaphores on Windows.\n *        Kernel Semaphores are inter-process and require a context\n *        switch on every interaction. On Windows 8 and newer, the\n *        WaitOnAddress API is available. Using that and atomics to\n *        implement semaphores increases performance.\n *        SDL will fall back to Kernel Objects on older OS versions\n *        or if forced to by this hint.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default)\n *    \"1\"       - Force the use of Kernel Objects in all cases.\n *\n */\n#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL \"SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL\"\n\n/**\n * \\brief A variable to specify custom icon resource id from RC file on Windows platform\n */\n#define SDL_HINT_WINDOWS_INTRESOURCE_ICON       \"SDL_WINDOWS_INTRESOURCE_ICON\"\n#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL \"SDL_WINDOWS_INTRESOURCE_ICON_SMALL\"\n\n/**\n *  \\brief Tell SDL not to generate window-close events for Alt+F4 on Windows.\n *\n * The variable can be set to the following values:\n *   \"0\"       - SDL will generate a window-close event when it sees Alt+F4.\n *   \"1\"       - SDL will only do normal key handling for Alt+F4.\n */\n#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 \"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4\"\n\n/**\n * \\brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9.\n *        Direct3D 9Ex contains changes to state management that can eliminate device\n *        loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require\n *        some changes to your application to cope with the new behavior, so this\n *        is disabled by default.\n *\n *  This hint must be set before initializing the video subsystem.\n *\n *  For more information on Direct3D 9Ex, see:\n *    - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex\n *    - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements\n *\n *  This variable can be set to the following values:\n *    \"0\"       - Use the original Direct3D 9 API (default)\n *    \"1\"       - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable)\n *\n */\n#define SDL_HINT_WINDOWS_USE_D3D9EX \"SDL_WINDOWS_USE_D3D9EX\"\n\n/**\n * \\brief Controls whether SDL will declare the process to be DPI aware.\n *\n *  This hint must be set before initializing the video subsystem.\n *\n *  The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with\n *  a DPI scale factor.\n *\n *  This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext)\n *  and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel\n *  even on high-DPI displays.\n *\n *  For more information, see:\n *  https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows\n *\n *  This variable can be set to the following values:\n *    \"\"             - Do not change the DPI awareness (default).\n *    \"unaware\"      - Declare the process as DPI unaware. (Windows 8.1 and later).\n *    \"system\"       - Request system DPI awareness. (Vista and later).\n *    \"permonitor\"   - Request per-monitor DPI awareness. (Windows 8.1 and later).\n *    \"permonitorv2\" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later).\n *                     The most visible difference from \"permonitor\" is that window title bar will be scaled\n *                     to the visually correct size when dragging between monitors with different scale factors.\n *                     This is the preferred DPI awareness level.\n *\n * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best\n * available match.\n */\n#define SDL_HINT_WINDOWS_DPI_AWARENESS \"SDL_WINDOWS_DPI_AWARENESS\"\n\n/**\n * \\brief Uses DPI-scaled points as the SDL coordinate system on Windows.\n *\n *  This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere.\n *  This means windows will be appropriately sized, even when created on high-DPI displays with scaling.\n *\n *  e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings,\n *  will create a window with an 800x600 client area (in pixels).\n *\n *  Setting this to \"1\" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary),\n *  and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows.\n *\n *  This variable can be set to the following values:\n *    \"0\"       - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging\n *                between monitors with different scale factors (unless this is performed by\n *                Windows itself, which is the case when the process is DPI unaware).\n *    \"1\"       - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on\n *                displays with non-100% scale factors.\n */\n#define SDL_HINT_WINDOWS_DPI_SCALING \"SDL_WINDOWS_DPI_SCALING\"\n\n/**\n *  \\brief  A variable controlling whether the window frame and title bar are interactive when the cursor is hidden\n *\n *  This variable can be set to the following values:\n *    \"0\"       - The window frame is not interactive when the cursor is hidden (no move, resize, etc)\n *    \"1\"       - The window frame is interactive when the cursor is hidden\n *\n *  By default SDL will allow interaction with the window frame when the cursor is hidden\n */\n#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN    \"SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN\"\n\n/**\n*  \\brief  A variable controlling whether the window is activated when the SDL_ShowWindow function is called\n*\n*  This variable can be set to the following values:\n*    \"0\"       - The window is activated when the SDL_ShowWindow function is called\n*    \"1\"       - The window is not activated when the SDL_ShowWindow function is called\n*\n*  By default SDL will activate the window when the SDL_ShowWindow function is called\n*/\n#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN    \"SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN\"\n\n/** \\brief Allows back-button-press events on Windows Phone to be marked as handled\n *\n *  Windows Phone devices typically feature a Back button.  When pressed,\n *  the OS will emit back-button-press events, which apps are expected to\n *  handle in an appropriate manner.  If apps do not explicitly mark these\n *  events as 'Handled', then the OS will invoke its default behavior for\n *  unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to\n *  terminate the app (and attempt to switch to the previous app, or to the\n *  device's home screen).\n *\n *  Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to \"1\" will cause SDL\n *  to mark back-button-press events as Handled, if and when one is sent to\n *  the app.\n *\n *  Internally, Windows Phone sends back button events as parameters to\n *  special back-button-press callback functions.  Apps that need to respond\n *  to back-button-press events are expected to register one or more\n *  callback functions for such, shortly after being launched (during the\n *  app's initialization phase).  After the back button is pressed, the OS\n *  will invoke these callbacks.  If the app's callback(s) do not explicitly\n *  mark the event as handled by the time they return, or if the app never\n *  registers one of these callback, the OS will consider the event\n *  un-handled, and it will apply its default back button behavior (terminate\n *  the app).\n *\n *  SDL registers its own back-button-press callback with the Windows Phone\n *  OS.  This callback will emit a pair of SDL key-press events (SDL_KEYDOWN\n *  and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which\n *  it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.\n *  If the hint's value is set to \"1\", the back button event's Handled\n *  property will get set to 'true'.  If the hint's value is set to something\n *  else, or if it is unset, SDL will leave the event's Handled property\n *  alone.  (By default, the OS sets this property to 'false', to note.)\n *\n *  SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a\n *  back button is pressed, or can set it in direct-response to a back button\n *  being pressed.\n *\n *  In order to get notified when a back button is pressed, SDL apps should\n *  register a callback function with SDL_AddEventWatch(), and have it listen\n *  for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.\n *  (Alternatively, SDL_KEYUP events can be listened-for.  Listening for\n *  either event type is suitable.)  Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON\n *  set by such a callback, will be applied to the OS' current\n *  back-button-press event.\n *\n *  More details on back button behavior in Windows Phone apps can be found\n *  at the following page, on Microsoft's developer site:\n *  http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx\n */\n#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON \"SDL_WINRT_HANDLE_BACK_BUTTON\"\n\n/** \\brief Label text for a WinRT app's privacy policy link\n *\n *  Network-enabled WinRT apps must include a privacy policy.  On Windows 8, 8.1, and RT,\n *  Microsoft mandates that this policy be available via the Windows Settings charm.\n *  SDL provides code to add a link there, with its label text being set via the\n *  optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.\n *\n *  Please note that a privacy policy's contents are not set via this hint.  A separate\n *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the\n *  policy.\n *\n *  The contents of this hint should be encoded as a UTF8 string.\n *\n *  The default value is \"Privacy Policy\".  This hint should only be set during app\n *  initialization, preferably before any calls to SDL_Init().\n *\n *  For additional information on linking to a privacy policy, see the documentation for\n *  SDL_HINT_WINRT_PRIVACY_POLICY_URL.\n */\n#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL \"SDL_WINRT_PRIVACY_POLICY_LABEL\"\n\n/**\n *  \\brief A URL to a WinRT app's privacy policy\n *\n *  All network-enabled WinRT apps must make a privacy policy available to its\n *  users.  On Windows 8, 8.1, and RT, Microsoft mandates that this policy be\n *  be available in the Windows Settings charm, as accessed from within the app.\n *  SDL provides code to add a URL-based link there, which can point to the app's\n *  privacy policy.\n *\n *  To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL\n *  before calling any SDL_Init() functions.  The contents of the hint should\n *  be a valid URL.  For example, \"http://www.example.com\".\n *\n *  The default value is \"\", which will prevent SDL from adding a privacy policy\n *  link to the Settings charm.  This hint should only be set during app init.\n *\n *  The label text of an app's \"Privacy Policy\" link may be customized via another\n *  hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.\n *\n *  Please note that on Windows Phone, Microsoft does not provide standard UI\n *  for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL\n *  will not get used on that platform.  Network-enabled phone apps should display\n *  their privacy policy through some other, in-app means.\n */\n#define SDL_HINT_WINRT_PRIVACY_POLICY_URL \"SDL_WINRT_PRIVACY_POLICY_URL\"\n\n/**\n *  \\brief Mark X11 windows as override-redirect.\n *\n *  If set, this _might_ increase framerate at the expense of the desktop\n *  not working as expected. Override-redirect windows aren't noticed by the\n *  window manager at all.\n *\n *  You should probably only use this for fullscreen windows, and you probably\n *  shouldn't even use it for that. But it's here if you want to try!\n */\n#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT \"SDL_X11_FORCE_OVERRIDE_REDIRECT\"\n\n/**\n *  \\brief  A variable that lets you disable the detection and use of Xinput gamepad devices\n *\n *  The variable can be set to the following values:\n *    \"0\"       - Disable XInput detection (only uses direct input)\n *    \"1\"       - Enable XInput detection (the default)\n */\n#define SDL_HINT_XINPUT_ENABLED \"SDL_XINPUT_ENABLED\"\n\n /**\n  *  \\brief  A variable that lets you disable the detection and use of DirectInput gamepad devices\n  *\n  *  The variable can be set to the following values:\n  *    \"0\"       - Disable DirectInput detection (only uses XInput)\n  *    \"1\"       - Enable DirectInput detection (the default)\n  */\n#define SDL_HINT_DIRECTINPUT_ENABLED \"SDL_DIRECTINPUT_ENABLED\"\n\n/**\n *  \\brief  A variable that causes SDL to use the old axis and button mapping for XInput devices.\n *\n *  This hint is for backwards compatibility only and will be removed in SDL 2.1\n *\n *  The default value is \"0\".  This hint must be set before SDL_Init()\n */\n#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING \"SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING\"\n\n/**\n *  \\brief  A variable that causes SDL to not ignore audio \"monitors\"\n *\n *  This is currently only used for PulseAudio and ignored elsewhere.\n *\n *  By default, SDL ignores audio devices that aren't associated with physical\n *  hardware. Changing this hint to \"1\" will expose anything SDL sees that\n *  appears to be an audio source or sink. This will add \"devices\" to the list\n *  that the user probably doesn't want or need, but it can be useful in\n *  scenarios where you want to hook up SDL to some sort of virtual device,\n *  etc.\n *\n *  The default value is \"0\".  This hint must be set before SDL_Init().\n *\n *  This hint is available since SDL 2.0.16. Before then, virtual devices are\n *  always ignored.\n */\n#define SDL_HINT_AUDIO_INCLUDE_MONITORS \"SDL_AUDIO_INCLUDE_MONITORS\"\n\n/**\n *  \\brief  A variable that forces X11 windows to create as a custom type.\n *\n *  This is currently only used for X11 and ignored elsewhere.\n *\n *  During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property\n *  to report to the window manager the type of window it wants to create.\n *  This might be set to various things if SDL_WINDOW_TOOLTIP or\n *  SDL_WINDOW_POPUP_MENU, etc, were specified. For \"normal\" windows that\n *  haven't set a specific type, this hint can be used to specify a custom\n *  type. For example, a dock window might set this to\n *  \"_NET_WM_WINDOW_TYPE_DOCK\".\n *\n *  If not set or set to \"\", this hint is ignored. This hint must be set\n *  before the SDL_CreateWindow() call that it is intended to affect.\n *\n *  This hint is available since SDL 2.0.22.\n */\n#define SDL_HINT_X11_WINDOW_TYPE \"SDL_X11_WINDOW_TYPE\"\n\n/**\n *  \\brief  A variable that decides whether to send SDL_QUIT when closing the final window.\n *\n *  By default, SDL sends an SDL_QUIT event when there is only one window\n *  and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most\n *  apps would also take the loss of this window as a signal to terminate the\n *  program.\n *\n *  However, it's not unreasonable in some cases to have the program continue\n *  to live on, perhaps to create new windows later.\n *\n *  Changing this hint to \"0\" will cause SDL to not send an SDL_QUIT event\n *  when the final window is requesting to close. Note that in this case,\n *  there are still other legitimate reasons one might get an SDL_QUIT\n *  event: choosing \"Quit\" from the macOS menu bar, sending a SIGINT (ctrl-c)\n *  on Unix, etc.\n *\n *  The default value is \"1\".  This hint can be changed at any time.\n *\n *  This hint is available since SDL 2.0.22. Before then, you always get\n *  an SDL_QUIT event when closing the final window.\n */\n#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE \"SDL_QUIT_ON_LAST_WINDOW_CLOSE\"\n\n\n/**\n *  \\brief  A variable that decides what video backend to use.\n *\n *  By default, SDL will try all available video backends in a reasonable\n *  order until it finds one that can work, but this hint allows the app\n *  or user to force a specific target, such as \"x11\" if, say, you are\n *  on Wayland but want to try talking to the X server instead.\n *\n *  This functionality has existed since SDL 2.0.0 (indeed, before that)\n *  but before 2.0.22 this was an environment variable only. In 2.0.22,\n *  it was upgraded to a full SDL hint, so you can set the environment\n *  variable as usual or programatically set the hint with SDL_SetHint,\n *  which won't propagate to child processes.\n *\n *  The default value is unset, in which case SDL will try to figure out\n *  the best video backend on your behalf. This hint needs to be set\n *  before SDL_Init() is called to be useful.\n *\n *  This hint is available since SDL 2.0.22. Before then, you could set\n *  the environment variable to get the same effect.\n */\n#define SDL_HINT_VIDEODRIVER \"SDL_VIDEODRIVER\"\n\n/**\n *  \\brief  A variable that decides what audio backend to use.\n *\n *  By default, SDL will try all available audio backends in a reasonable\n *  order until it finds one that can work, but this hint allows the app\n *  or user to force a specific target, such as \"alsa\" if, say, you are\n *  on PulseAudio but want to try talking to the lower level instead.\n *\n *  This functionality has existed since SDL 2.0.0 (indeed, before that)\n *  but before 2.0.22 this was an environment variable only. In 2.0.22,\n *  it was upgraded to a full SDL hint, so you can set the environment\n *  variable as usual or programatically set the hint with SDL_SetHint,\n *  which won't propagate to child processes.\n *\n *  The default value is unset, in which case SDL will try to figure out\n *  the best audio backend on your behalf. This hint needs to be set\n *  before SDL_Init() is called to be useful.\n *\n *  This hint is available since SDL 2.0.22. Before then, you could set\n *  the environment variable to get the same effect.\n */\n#define SDL_HINT_AUDIODRIVER \"SDL_AUDIODRIVER\"\n\n/**\n *  \\brief  A variable that decides what KMSDRM device to use.\n *\n *  Internally, SDL might open something like \"/dev/dri/cardNN\" to\n *  access KMSDRM functionality, where \"NN\" is a device index number.\n *\n *  SDL makes a guess at the best index to use (usually zero), but the\n *  app or user can set this hint to a number between 0 and 99 to\n *  force selection.\n *\n *  This hint is available since SDL 2.24.0.\n */\n#define SDL_HINT_KMSDRM_DEVICE_INDEX \"SDL_KMSDRM_DEVICE_INDEX\"\n\n\n/**\n *  \\brief  A variable that treats trackpads as touch devices.\n *\n *  On macOS (and possibly other platforms in the future), SDL will report\n *  touches on a trackpad as mouse input, which is generally what users\n *  expect from this device; however, these are often actually full\n *  multitouch-capable touch devices, so it might be preferable to some apps\n *  to treat them as such.\n *\n *  Setting this hint to true will make the trackpad input report as a\n *  multitouch device instead of a mouse. The default is false.\n *\n *  Note that most platforms don't support this hint. As of 2.24.0, it\n *  only supports MacBooks' trackpads on macOS. Others may follow later.\n *\n *  This hint is checked during SDL_Init and can not be changed after.\n *\n *  This hint is available since SDL 2.24.0.\n */\n#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY \"SDL_TRACKPAD_IS_TOUCH_ONLY\"\n\n/**\n * Cause SDL to call dbus_shutdown() on quit.\n *\n * This is useful as a debug tool to validate memory leaks, but shouldn't ever\n * be set in production applications, as other libraries used by the application\n * might use dbus under the hood and this cause cause crashes if they continue\n * after SDL_Quit().\n *\n * This variable can be set to the following values:\n *   \"0\"       - SDL will not call dbus_shutdown() on quit (default)\n *   \"1\"       - SDL will call dbus_shutdown() on quit\n *\n * This hint is available since SDL 2.30.0.\n */\n#define SDL_HINT_SHUTDOWN_DBUS_ON_QUIT \"SDL_SHUTDOWN_DBUS_ON_QUIT\"\n\n\n/**\n *  \\brief  An enumeration of hint priorities\n */\ntypedef enum\n{\n    SDL_HINT_DEFAULT,\n    SDL_HINT_NORMAL,\n    SDL_HINT_OVERRIDE\n} SDL_HintPriority;\n\n\n/**\n * Set a hint with a specific priority.\n *\n * The priority controls the behavior when setting a hint that already has a\n * value. Hints will replace existing hints of their priority and lower.\n * Environment variables are considered to have override priority.\n *\n * \\param name the hint to set\n * \\param value the value of the hint variable\n * \\param priority the SDL_HintPriority level for the hint\n * \\returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetHint\n * \\sa SDL_SetHint\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,\n                                                         const char *value,\n                                                         SDL_HintPriority priority);\n\n/**\n * Set a hint with normal priority.\n *\n * Hints will not be set if there is an existing override hint or environment\n * variable that takes precedence. You can use SDL_SetHintWithPriority() to\n * set the hint with override priority instead.\n *\n * \\param name the hint to set\n * \\param value the value of the hint variable\n * \\returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetHint\n * \\sa SDL_SetHintWithPriority\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,\n                                             const char *value);\n\n/**\n * Reset a hint to the default value.\n *\n * This will reset a hint to the value of the environment variable, or NULL if\n * the environment isn't set. Callbacks will be called normally with this\n * change.\n *\n * \\param name the hint to set\n * \\returns SDL_TRUE if the hint was set, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GetHint\n * \\sa SDL_SetHint\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name);\n\n/**\n * Reset all hints to the default values.\n *\n * This will reset all hints to the value of the associated environment\n * variable, or NULL if the environment isn't set. Callbacks will be called\n * normally with this change.\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_GetHint\n * \\sa SDL_SetHint\n * \\sa SDL_ResetHint\n */\nextern DECLSPEC void SDLCALL SDL_ResetHints(void);\n\n/**\n * Get the value of a hint.\n *\n * \\param name the hint to query\n * \\returns the string value of a hint or NULL if the hint isn't set.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetHint\n * \\sa SDL_SetHintWithPriority\n */\nextern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);\n\n/**\n * Get the boolean value of a hint variable.\n *\n * \\param name the name of the hint to get the boolean value from\n * \\param default_value the value to return if the hint does not exist\n * \\returns the boolean value of a hint or the provided default value if the\n *          hint does not exist.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_GetHint\n * \\sa SDL_SetHint\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);\n\n/**\n * Type definition of the hint callback function.\n *\n * \\param userdata what was passed as `userdata` to SDL_AddHintCallback()\n * \\param name what was passed as `name` to SDL_AddHintCallback()\n * \\param oldValue the previous hint value\n * \\param newValue the new value hint is to be set to\n */\ntypedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);\n\n/**\n * Add a function to watch a particular hint.\n *\n * \\param name the hint to watch\n * \\param callback An SDL_HintCallback function that will be called when the\n *                 hint value changes\n * \\param userdata a pointer to pass to the callback function\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DelHintCallback\n */\nextern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,\n                                                 SDL_HintCallback callback,\n                                                 void *userdata);\n\n/**\n * Remove a function watching a particular hint.\n *\n * \\param name the hint being watched\n * \\param callback An SDL_HintCallback function that will be called when the\n *                 hint value changes\n * \\param userdata a pointer being passed to the callback function\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AddHintCallback\n */\nextern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,\n                                                 SDL_HintCallback callback,\n                                                 void *userdata);\n\n/**\n * Clear all hints.\n *\n * This function is automatically called during SDL_Quit(), and deletes all\n * callbacks without calling them and frees all memory associated with hints.\n * If you're calling this from application code you probably want to call\n * SDL_ResetHints() instead.\n *\n * This function will be removed from the API the next time we rev the ABI.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ResetHints\n */\nextern DECLSPEC void SDLCALL SDL_ClearHints(void);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_hints_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_joystick.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_joystick.h\n *\n *  Include file for SDL joystick event handling\n *\n * The term \"device_index\" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick\n *   behind a device_index changing as joysticks are plugged and unplugged.\n *\n * The term \"instance_id\" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted\n *   then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in.\n *\n * The term \"player_index\" is the number assigned to a player on a specific\n *   controller. For XInput controllers this returns the XInput user index.\n *   Many joysticks will not be able to supply this information.\n *\n * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of\n *   the device (a X360 wired controller for example). This identifier is platform dependent.\n */\n\n#ifndef SDL_joystick_h_\n#define SDL_joystick_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_guid.h\"\n#include \"SDL_mutex.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\file SDL_joystick.h\n *\n *  In order to use these functions, SDL_Init() must have been called\n *  with the ::SDL_INIT_JOYSTICK flag.  This causes SDL to scan the system\n *  for joysticks, and load appropriate drivers.\n *\n *  If you would like to receive joystick updates while the application\n *  is in the background, you should set the following hint before calling\n *  SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS\n */\n\n/**\n * The joystick structure used to identify an SDL joystick\n */\n#ifdef SDL_THREAD_SAFETY_ANALYSIS\nextern SDL_mutex *SDL_joystick_lock;\n#endif\nstruct _SDL_Joystick;\ntypedef struct _SDL_Joystick SDL_Joystick;\n\n/* A structure that encodes the stable unique id for a joystick device */\ntypedef SDL_GUID SDL_JoystickGUID;\n\n/**\n * This is a unique ID for a joystick for the time it is connected to the system,\n * and is never reused for the lifetime of the application. If the joystick is\n * disconnected and reconnected, it will get a new ID.\n *\n * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.\n */\ntypedef Sint32 SDL_JoystickID;\n\ntypedef enum\n{\n    SDL_JOYSTICK_TYPE_UNKNOWN,\n    SDL_JOYSTICK_TYPE_GAMECONTROLLER,\n    SDL_JOYSTICK_TYPE_WHEEL,\n    SDL_JOYSTICK_TYPE_ARCADE_STICK,\n    SDL_JOYSTICK_TYPE_FLIGHT_STICK,\n    SDL_JOYSTICK_TYPE_DANCE_PAD,\n    SDL_JOYSTICK_TYPE_GUITAR,\n    SDL_JOYSTICK_TYPE_DRUM_KIT,\n    SDL_JOYSTICK_TYPE_ARCADE_PAD,\n    SDL_JOYSTICK_TYPE_THROTTLE\n} SDL_JoystickType;\n\ntypedef enum\n{\n    SDL_JOYSTICK_POWER_UNKNOWN = -1,\n    SDL_JOYSTICK_POWER_EMPTY,   /* <= 5% */\n    SDL_JOYSTICK_POWER_LOW,     /* <= 20% */\n    SDL_JOYSTICK_POWER_MEDIUM,  /* <= 70% */\n    SDL_JOYSTICK_POWER_FULL,    /* <= 100% */\n    SDL_JOYSTICK_POWER_WIRED,\n    SDL_JOYSTICK_POWER_MAX\n} SDL_JoystickPowerLevel;\n\n/* Set max recognized G-force from accelerometer\n   See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed\n */\n#define SDL_IPHONE_MAX_GFORCE 5.0\n\n\n/* Function prototypes */\n\n/**\n * Locking for multi-threaded access to the joystick API\n *\n * If you are using the joystick API or handling events from multiple threads\n * you should use these locking functions to protect access to the joysticks.\n *\n * In particular, you are guaranteed that the joystick list won't change, so\n * the API functions that take a joystick index will be valid, and joystick\n * and game controller events will not be delivered.\n *\n * As of SDL 2.26.0, you can take the joystick lock around reinitializing the\n * joystick subsystem, to prevent other threads from seeing joysticks in an\n * uninitialized state. However, all open joysticks will be closed and SDL\n * functions called with them will fail.\n *\n * \\since This function is available since SDL 2.0.7.\n */\nextern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock);\n\n\n/**\n * Unlocking for multi-threaded access to the joystick API\n *\n * If you are using the joystick API or handling events from multiple threads\n * you should use these locking functions to protect access to the joysticks.\n *\n * In particular, you are guaranteed that the joystick list won't change, so\n * the API functions that take a joystick index will be valid, and joystick\n * and game controller events will not be delivered.\n *\n * \\since This function is available since SDL 2.0.7.\n */\nextern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock);\n\n/**\n * Count the number of joysticks attached to the system.\n *\n * \\returns the number of attached joysticks on success or a negative error\n *          code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickName\n * \\sa SDL_JoystickPath\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC int SDLCALL SDL_NumJoysticks(void);\n\n/**\n * Get the implementation dependent name of a joystick.\n *\n * This can be called before any joysticks are opened.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system)\n * \\returns the name of the selected joystick. If no name can be found, this\n *          function returns NULL; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickName\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);\n\n/**\n * Get the implementation dependent path of a joystick.\n *\n * This can be called before any joysticks are opened.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system)\n * \\returns the path of the selected joystick. If no path can be found, this\n *          function returns NULL; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_JoystickPath\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index);\n\n/**\n * Get the player index of a joystick, or -1 if it's not available This can be\n * called before any joysticks are opened.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index);\n\n/**\n * Get the implementation-dependent GUID for the joystick at a given device\n * index.\n *\n * This function can be called before any joysticks are opened.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the GUID of the selected joystick. If called on an invalid index,\n *          this function returns a zero GUID\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetGUID\n * \\sa SDL_JoystickGetGUIDString\n */\nextern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index);\n\n/**\n * Get the USB vendor ID of a joystick, if available.\n *\n * This can be called before any joysticks are opened. If the vendor ID isn't\n * available this function returns 0.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the USB vendor ID of the selected joystick. If called on an\n *          invalid index, this function returns zero\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index);\n\n/**\n * Get the USB product ID of a joystick, if available.\n *\n * This can be called before any joysticks are opened. If the product ID isn't\n * available this function returns 0.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the USB product ID of the selected joystick. If called on an\n *          invalid index, this function returns zero\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index);\n\n/**\n * Get the product version of a joystick, if available.\n *\n * This can be called before any joysticks are opened. If the product version\n * isn't available this function returns 0.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the product version of the selected joystick. If called on an\n *          invalid index, this function returns zero\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index);\n\n/**\n * Get the type of a joystick, if available.\n *\n * This can be called before any joysticks are opened.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the SDL_JoystickType of the selected joystick. If called on an\n *          invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN`\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index);\n\n/**\n * Get the instance ID of a joystick.\n *\n * This can be called before any joysticks are opened.\n *\n * \\param device_index the index of the joystick to query (the N'th joystick\n *                     on the system\n * \\returns the instance id of the selected joystick. If called on an invalid\n *          index, this function returns -1.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index);\n\n/**\n * Open a joystick for use.\n *\n * The `device_index` argument refers to the N'th joystick presently\n * recognized by SDL on the system. It is **NOT** the same as the instance ID\n * used to identify the joystick in future events. See\n * SDL_JoystickInstanceID() for more details about instance IDs.\n *\n * The joystick subsystem must be initialized before a joystick can be opened\n * for use.\n *\n * \\param device_index the index of the joystick to query\n * \\returns a joystick identifier or NULL if an error occurred; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickClose\n * \\sa SDL_JoystickInstanceID\n */\nextern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index);\n\n/**\n * Get the SDL_Joystick associated with an instance id.\n *\n * \\param instance_id the instance id to get the SDL_Joystick for\n * \\returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n */\nextern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id);\n\n/**\n * Get the SDL_Joystick associated with a player index.\n *\n * \\param player_index the player index to get the SDL_Joystick for\n * \\returns an SDL_Joystick on success or NULL on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index);\n\n/**\n * Attach a new virtual joystick.\n *\n * \\returns the joystick's device index, or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,\n                                                      int naxes,\n                                                      int nbuttons,\n                                                      int nhats);\n\n/**\n * The structure that defines an extended virtual joystick description\n *\n * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx()\n *  All other elements of this structure are optional and can be left 0.\n *\n * \\sa SDL_JoystickAttachVirtualEx\n */\ntypedef struct SDL_VirtualJoystickDesc\n{\n    Uint16 version;     /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */\n    Uint16 type;        /**< `SDL_JoystickType` */\n    Uint16 naxes;       /**< the number of axes on this joystick */\n    Uint16 nbuttons;    /**< the number of buttons on this joystick */\n    Uint16 nhats;       /**< the number of hats on this joystick */\n    Uint16 vendor_id;   /**< the USB vendor ID of this joystick */\n    Uint16 product_id;  /**< the USB product ID of this joystick */\n    Uint16 padding;     /**< unused */\n    Uint32 button_mask; /**< A mask of which buttons are valid for this controller\n                             e.g. (1 << SDL_CONTROLLER_BUTTON_A) */\n    Uint32 axis_mask;   /**< A mask of which axes are valid for this controller\n                             e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */\n    const char *name;   /**< the name of the joystick */\n\n    void *userdata;     /**< User data pointer passed to callbacks */\n    void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */\n    void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */\n    int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */\n    int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */\n    int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */\n    int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */\n\n} SDL_VirtualJoystickDesc;\n\n/**\n * \\brief The current version of the SDL_VirtualJoystickDesc structure\n */\n#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION   1\n\n/**\n * Attach a new virtual joystick with extended properties.\n *\n * \\returns the joystick's device index, or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc);\n\n/**\n * Detach a virtual joystick.\n *\n * \\param device_index a value previously returned from\n *                     SDL_JoystickAttachVirtual()\n * \\returns 0 on success, or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index);\n\n/**\n * Query whether or not the joystick at a given device index is virtual.\n *\n * \\param device_index a joystick device index.\n * \\returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);\n\n/**\n * Set values on an opened, virtual-joystick's axis.\n *\n * Please note that values set here will not be applied until the next call to\n * SDL_JoystickUpdate, which can either be called directly, or can be called\n * indirectly through various other SDL APIs, including, but not limited to\n * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,\n * SDL_WaitEvent.\n *\n * Note that when sending trigger axes, you should scale the value to the full\n * range of Sint16. For example, a trigger at rest would have the value of\n * `SDL_JOYSTICK_AXIS_MIN`.\n *\n * \\param joystick the virtual joystick on which to set state.\n * \\param axis the specific axis on the virtual joystick to set.\n * \\param value the new value for the specified axis.\n * \\returns 0 on success, -1 on error.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value);\n\n/**\n * Set values on an opened, virtual-joystick's button.\n *\n * Please note that values set here will not be applied until the next call to\n * SDL_JoystickUpdate, which can either be called directly, or can be called\n * indirectly through various other SDL APIs, including, but not limited to\n * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,\n * SDL_WaitEvent.\n *\n * \\param joystick the virtual joystick on which to set state.\n * \\param button the specific button on the virtual joystick to set.\n * \\param value the new value for the specified button.\n * \\returns 0 on success, -1 on error.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value);\n\n/**\n * Set values on an opened, virtual-joystick's hat.\n *\n * Please note that values set here will not be applied until the next call to\n * SDL_JoystickUpdate, which can either be called directly, or can be called\n * indirectly through various other SDL APIs, including, but not limited to\n * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,\n * SDL_WaitEvent.\n *\n * \\param joystick the virtual joystick on which to set state.\n * \\param hat the specific hat on the virtual joystick to set.\n * \\param value the new value for the specified hat.\n * \\returns 0 on success, -1 on error.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value);\n\n/**\n * Get the implementation dependent name of a joystick.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the name of the selected joystick. If no name can be found, this\n *          function returns NULL; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickNameForIndex\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);\n\n/**\n * Get the implementation dependent path of a joystick.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the path of the selected joystick. If no path can be found, this\n *          function returns NULL; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_JoystickPathForIndex\n */\nextern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick);\n\n/**\n * Get the player index of an opened joystick.\n *\n * For XInput controllers this returns the XInput user index. Many joysticks\n * will not be able to supply this information.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the player index, or -1 if it's not available.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);\n\n/**\n * Set the player index of an opened joystick.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\param player_index Player index to assign to this joystick, or -1 to clear\n *                     the player index and turn off player LEDs.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index);\n\n/**\n * Get the implementation-dependent GUID for the joystick.\n *\n * This function requires an open joystick.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the GUID of the given joystick. If called on an invalid index,\n *          this function returns a zero GUID; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetDeviceGUID\n * \\sa SDL_JoystickGetGUIDString\n */\nextern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick);\n\n/**\n * Get the USB vendor ID of an opened joystick, if available.\n *\n * If the vendor ID isn't available this function returns 0.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the USB vendor ID of the selected joystick, or 0 if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick);\n\n/**\n * Get the USB product ID of an opened joystick, if available.\n *\n * If the product ID isn't available this function returns 0.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the USB product ID of the selected joystick, or 0 if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);\n\n/**\n * Get the product version of an opened joystick, if available.\n *\n * If the product version isn't available this function returns 0.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the product version of the selected joystick, or 0 if unavailable.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick);\n\n/**\n * Get the firmware version of an opened joystick, if available.\n *\n * If the firmware version isn't available this function returns 0.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the firmware version of the selected joystick, or 0 if\n *          unavailable.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick);\n\n/**\n * Get the serial number of an opened joystick, if available.\n *\n * Returns the serial number of the joystick, or NULL if it is not available.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the serial number of the selected joystick, or NULL if\n *          unavailable.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick);\n\n/**\n * Get the type of an opened joystick.\n *\n * \\param joystick the SDL_Joystick obtained from SDL_JoystickOpen()\n * \\returns the SDL_JoystickType of the selected joystick.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick);\n\n/**\n * Get an ASCII string representation for a given SDL_JoystickGUID.\n *\n * You should supply at least 33 bytes for pszGUID.\n *\n * \\param guid the SDL_JoystickGUID you wish to convert to string\n * \\param pszGUID buffer in which to write the ASCII string\n * \\param cbGUID the size of pszGUID\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetDeviceGUID\n * \\sa SDL_JoystickGetGUID\n * \\sa SDL_JoystickGetGUIDFromString\n */\nextern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID);\n\n/**\n * Convert a GUID string into a SDL_JoystickGUID structure.\n *\n * Performs no error checking. If this function is given a string containing\n * an invalid GUID, the function will silently succeed, but the GUID generated\n * will not be useful.\n *\n * \\param pchGUID string containing an ASCII representation of a GUID\n * \\returns a SDL_JoystickGUID structure.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetGUIDString\n */\nextern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);\n\n/**\n * Get the device information encoded in a SDL_JoystickGUID structure\n *\n * \\param guid the SDL_JoystickGUID you wish to get info about\n * \\param vendor A pointer filled in with the device VID, or 0 if not\n *               available\n * \\param product A pointer filled in with the device PID, or 0 if not\n *                available\n * \\param version A pointer filled in with the device version, or 0 if not\n *                available\n * \\param crc16 A pointer filled in with a CRC used to distinguish different\n *              products with the same VID/PID, or 0 if not available\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_JoystickGetDeviceGUID\n */\nextern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16);\n\n/**\n * Get the status of a specified joystick.\n *\n * \\param joystick the joystick to query\n * \\returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickClose\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick);\n\n/**\n * Get the instance ID of an opened joystick.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\returns the instance ID of the specified joystick on success or a negative\n *          error code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick);\n\n/**\n * Get the number of general axis controls on a joystick.\n *\n * Often, the directional pad on a game controller will either look like 4\n * separate buttons or a POV hat, and not axes, but all of this is up to the\n * device and platform.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\returns the number of axis controls/number of axes on success or a\n *          negative error code on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetAxis\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick);\n\n/**\n * Get the number of trackballs on a joystick.\n *\n * Joystick trackballs have only relative motion events associated with them\n * and their state cannot be polled.\n *\n * Most joysticks do not have trackballs.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\returns the number of trackballs on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetBall\n */\nextern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick);\n\n/**\n * Get the number of POV hats on a joystick.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\returns the number of POV hats on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetHat\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick);\n\n/**\n * Get the number of buttons on a joystick.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\returns the number of buttons on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickGetButton\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick);\n\n/**\n * Update the current state of the open joysticks.\n *\n * This is called automatically by the event loop if any joystick events are\n * enabled.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickEventState\n */\nextern DECLSPEC void SDLCALL SDL_JoystickUpdate(void);\n\n/**\n * Enable/disable joystick event polling.\n *\n * If joystick events are disabled, you must call SDL_JoystickUpdate()\n * yourself and manually check the state of the joystick when you want\n * joystick information.\n *\n * It is recommended that you leave joystick event handling enabled.\n *\n * **WARNING**: Calling this function may delete all events currently in SDL's\n * event queue.\n *\n * \\param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE`\n * \\returns 1 if enabled, 0 if disabled, or a negative error code on failure;\n *          call SDL_GetError() for more information.\n *\n *          If `state` is `SDL_QUERY` then the current state is returned,\n *          otherwise the new processing state is returned.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GameControllerEventState\n */\nextern DECLSPEC int SDLCALL SDL_JoystickEventState(int state);\n\n#define SDL_JOYSTICK_AXIS_MAX   32767\n#define SDL_JOYSTICK_AXIS_MIN   -32768\n\n/**\n * Get the current state of an axis control on a joystick.\n *\n * SDL makes no promises about what part of the joystick any given axis refers\n * to. Your game should have some sort of configuration UI to let users\n * specify what each axis should be bound to. Alternately, SDL's higher-level\n * Game Controller API makes a great effort to apply order to this lower-level\n * interface, so you know that a specific axis is the \"left thumb stick,\" etc.\n *\n * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to\n * 32767) representing the current position of the axis. It may be necessary\n * to impose certain tolerances on these values to account for jitter.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\param axis the axis to query; the axis indices start at index 0\n * \\returns a 16-bit signed integer representing the current position of the\n *          axis or 0 on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickNumAxes\n */\nextern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick,\n                                                   int axis);\n\n/**\n * Get the initial state of an axis control on a joystick.\n *\n * The state is a value ranging from -32768 to 32767.\n *\n * The axis indices start at index 0.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\param axis the axis to query; the axis indices start at index 0\n * \\param state Upon return, the initial value is supplied here.\n * \\return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick,\n                                                   int axis, Sint16 *state);\n\n/**\n *  \\name Hat positions\n */\n/* @{ */\n#define SDL_HAT_CENTERED    0x00\n#define SDL_HAT_UP          0x01\n#define SDL_HAT_RIGHT       0x02\n#define SDL_HAT_DOWN        0x04\n#define SDL_HAT_LEFT        0x08\n#define SDL_HAT_RIGHTUP     (SDL_HAT_RIGHT|SDL_HAT_UP)\n#define SDL_HAT_RIGHTDOWN   (SDL_HAT_RIGHT|SDL_HAT_DOWN)\n#define SDL_HAT_LEFTUP      (SDL_HAT_LEFT|SDL_HAT_UP)\n#define SDL_HAT_LEFTDOWN    (SDL_HAT_LEFT|SDL_HAT_DOWN)\n/* @} */\n\n/**\n * Get the current state of a POV hat on a joystick.\n *\n * The returned value will be one of the following positions:\n *\n * - `SDL_HAT_CENTERED`\n * - `SDL_HAT_UP`\n * - `SDL_HAT_RIGHT`\n * - `SDL_HAT_DOWN`\n * - `SDL_HAT_LEFT`\n * - `SDL_HAT_RIGHTUP`\n * - `SDL_HAT_RIGHTDOWN`\n * - `SDL_HAT_LEFTUP`\n * - `SDL_HAT_LEFTDOWN`\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\param hat the hat index to get the state from; indices start at index 0\n * \\returns the current hat position.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickNumHats\n */\nextern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick,\n                                                 int hat);\n\n/**\n * Get the ball axis change since the last poll.\n *\n * Trackballs can only return relative motion since the last call to\n * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`.\n *\n * Most joysticks do not have trackballs.\n *\n * \\param joystick the SDL_Joystick to query\n * \\param ball the ball index to query; ball indices start at index 0\n * \\param dx stores the difference in the x axis position since the last poll\n * \\param dy stores the difference in the y axis position since the last poll\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickNumBalls\n */\nextern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick,\n                                                int ball, int *dx, int *dy);\n\n/**\n * Get the current state of a button on a joystick.\n *\n * \\param joystick an SDL_Joystick structure containing joystick information\n * \\param button the button index to get the state from; indices start at\n *               index 0\n * \\returns 1 if the specified button is pressed, 0 otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickNumButtons\n */\nextern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick,\n                                                    int button);\n\n/**\n * Start a rumble effect.\n *\n * Each call to this function cancels any previous rumble effect, and calling\n * it with 0 intensity stops any rumbling.\n *\n * \\param joystick The joystick to vibrate\n * \\param low_frequency_rumble The intensity of the low frequency (left)\n *                             rumble motor, from 0 to 0xFFFF\n * \\param high_frequency_rumble The intensity of the high frequency (right)\n *                              rumble motor, from 0 to 0xFFFF\n * \\param duration_ms The duration of the rumble effect, in milliseconds\n * \\returns 0, or -1 if rumble isn't supported on this joystick\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_JoystickHasRumble\n */\nextern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms);\n\n/**\n * Start a rumble effect in the joystick's triggers\n *\n * Each call to this function cancels any previous trigger rumble effect, and\n * calling it with 0 intensity stops any rumbling.\n *\n * Note that this is rumbling of the _triggers_ and not the game controller as\n * a whole. This is currently only supported on Xbox One controllers. If you\n * want the (more common) whole-controller rumble, use SDL_JoystickRumble()\n * instead.\n *\n * \\param joystick The joystick to vibrate\n * \\param left_rumble The intensity of the left trigger rumble motor, from 0\n *                    to 0xFFFF\n * \\param right_rumble The intensity of the right trigger rumble motor, from 0\n *                     to 0xFFFF\n * \\param duration_ms The duration of the rumble effect, in milliseconds\n * \\returns 0, or -1 if trigger rumble isn't supported on this joystick\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_JoystickHasRumbleTriggers\n */\nextern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms);\n\n/**\n * Query whether a joystick has an LED.\n *\n * An example of a joystick LED is the light on the back of a PlayStation 4's\n * DualShock 4 controller.\n *\n * \\param joystick The joystick to query\n * \\return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick);\n\n/**\n * Query whether a joystick has rumble support.\n *\n * \\param joystick The joystick to query\n * \\return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_JoystickRumble\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick);\n\n/**\n * Query whether a joystick has rumble support on triggers.\n *\n * \\param joystick The joystick to query\n * \\return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_JoystickRumbleTriggers\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick);\n\n/**\n * Update a joystick's LED color.\n *\n * An example of a joystick LED is the light on the back of a PlayStation 4's\n * DualShock 4 controller.\n *\n * \\param joystick The joystick to update\n * \\param red The intensity of the red LED\n * \\param green The intensity of the green LED\n * \\param blue The intensity of the blue LED\n * \\returns 0 on success, -1 if this joystick does not have a modifiable LED\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue);\n\n/**\n * Send a joystick specific effect packet\n *\n * \\param joystick The joystick to affect\n * \\param data The data to send to the joystick\n * \\param size The size of the data to send to the joystick\n * \\returns 0, or -1 if this joystick or driver doesn't support effect packets\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size);\n\n/**\n * Close a joystick previously opened with SDL_JoystickOpen().\n *\n * \\param joystick The joystick device to close\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_JoystickOpen\n */\nextern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick);\n\n/**\n * Get the battery level of a joystick as SDL_JoystickPowerLevel.\n *\n * \\param joystick the SDL_Joystick to query\n * \\returns the current battery level as SDL_JoystickPowerLevel on success or\n *          `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown\n *\n * \\since This function is available since SDL 2.0.4.\n */\nextern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_joystick_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_keyboard.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_keyboard.h\n *\n *  Include file for SDL keyboard event handling\n */\n\n#ifndef SDL_keyboard_h_\n#define SDL_keyboard_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_keycode.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief The SDL keysym structure, used in key events.\n *\n *  \\note  If you are looking for translated character input, see the ::SDL_TEXTINPUT event.\n */\ntypedef struct SDL_Keysym\n{\n    SDL_Scancode scancode;      /**< SDL physical key code - see ::SDL_Scancode for details */\n    SDL_Keycode sym;            /**< SDL virtual key code - see ::SDL_Keycode for details */\n    Uint16 mod;                 /**< current key modifiers */\n    Uint32 unused;\n} SDL_Keysym;\n\n/* Function prototypes */\n\n/**\n * Query the window which currently has keyboard focus.\n *\n * \\returns the window with keyboard focus.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);\n\n/**\n * Get a snapshot of the current state of the keyboard.\n *\n * The pointer returned is a pointer to an internal SDL array. It will be\n * valid for the whole lifetime of the application and should not be freed by\n * the caller.\n *\n * A array element with a value of 1 means that the key is pressed and a value\n * of 0 means that it is not. Indexes into this array are obtained by using\n * SDL_Scancode values.\n *\n * Use SDL_PumpEvents() to update the state array.\n *\n * This function gives you the current state after all events have been\n * processed, so if a key or button has been pressed and released before you\n * process events, then the pressed state will never show up in the\n * SDL_GetKeyboardState() calls.\n *\n * Note: This function doesn't take into account whether shift has been\n * pressed or not.\n *\n * \\param numkeys if non-NULL, receives the length of the returned array\n * \\returns a pointer to an array of key states.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PumpEvents\n * \\sa SDL_ResetKeyboard\n */\nextern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);\n\n/**\n * Clear the state of the keyboard\n *\n * This function will generate key up events for all pressed keys.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GetKeyboardState\n */\nextern DECLSPEC void SDLCALL SDL_ResetKeyboard(void);\n\n/**\n * Get the current key modifier state for the keyboard.\n *\n * \\returns an OR'd combination of the modifier keys for the keyboard. See\n *          SDL_Keymod for details.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyboardState\n * \\sa SDL_SetModState\n */\nextern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void);\n\n/**\n * Set the current key modifier state for the keyboard.\n *\n * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose\n * modifier key states on your application. Simply pass your desired modifier\n * states into `modstate`. This value may be a bitwise, OR'd combination of\n * SDL_Keymod values.\n *\n * This does not change the keyboard state, only the key modifier flags that\n * SDL reports.\n *\n * \\param modstate the desired SDL_Keymod for the keyboard\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetModState\n */\nextern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate);\n\n/**\n * Get the key code corresponding to the given scancode according to the\n * current keyboard layout.\n *\n * See SDL_Keycode for details.\n *\n * \\param scancode the desired SDL_Scancode to query\n * \\returns the SDL_Keycode that corresponds to the given SDL_Scancode.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyName\n * \\sa SDL_GetScancodeFromKey\n */\nextern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode);\n\n/**\n * Get the scancode corresponding to the given key code according to the\n * current keyboard layout.\n *\n * See SDL_Scancode for details.\n *\n * \\param key the desired SDL_Keycode to query\n * \\returns the SDL_Scancode that corresponds to the given SDL_Keycode.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyFromScancode\n * \\sa SDL_GetScancodeName\n */\nextern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key);\n\n/**\n * Get a human-readable name for a scancode.\n *\n * See SDL_Scancode for details.\n *\n * **Warning**: The returned name is by design not stable across platforms,\n * e.g. the name for `SDL_SCANCODE_LGUI` is \"Left GUI\" under Linux but \"Left\n * Windows\" under Microsoft Windows, and some scancodes like\n * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even\n * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and\n * `SDL_SCANCODE_RETURN2` (both called \"Return\"). This function is therefore\n * unsuitable for creating a stable cross-platform two-way mapping between\n * strings and scancodes.\n *\n * \\param scancode the desired SDL_Scancode to query\n * \\returns a pointer to the name for the scancode. If the scancode doesn't\n *          have a name this function returns an empty string (\"\").\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetScancodeFromKey\n * \\sa SDL_GetScancodeFromName\n */\nextern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode);\n\n/**\n * Get a scancode from a human-readable name.\n *\n * \\param name the human-readable scancode name\n * \\returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't\n *          recognized; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyFromName\n * \\sa SDL_GetScancodeFromKey\n * \\sa SDL_GetScancodeName\n */\nextern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name);\n\n/**\n * Get a human-readable name for a key.\n *\n * See SDL_Scancode and SDL_Keycode for details.\n *\n * \\param key the desired SDL_Keycode to query\n * \\returns a pointer to a UTF-8 string that stays valid at least until the\n *          next call to this function. If you need it around any longer, you\n *          must copy it. If the key doesn't have a name, this function\n *          returns an empty string (\"\").\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyFromName\n * \\sa SDL_GetKeyFromScancode\n * \\sa SDL_GetScancodeFromKey\n */\nextern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key);\n\n/**\n * Get a key code from a human-readable name.\n *\n * \\param name the human-readable key name\n * \\returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetKeyFromScancode\n * \\sa SDL_GetKeyName\n * \\sa SDL_GetScancodeFromName\n */\nextern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name);\n\n/**\n * Start accepting Unicode text input events.\n *\n * This function will start accepting Unicode text input events in the focused\n * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and\n * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in\n * pair with SDL_StopTextInput().\n *\n * On some platforms using this function activates the screen keyboard.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetTextInputRect\n * \\sa SDL_StopTextInput\n */\nextern DECLSPEC void SDLCALL SDL_StartTextInput(void);\n\n/**\n * Check whether or not Unicode text input events are enabled.\n *\n * \\returns SDL_TRUE if text input events are enabled else SDL_FALSE.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_StartTextInput\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);\n\n/**\n * Stop receiving any text input events.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_StartTextInput\n */\nextern DECLSPEC void SDLCALL SDL_StopTextInput(void);\n\n/**\n * Dismiss the composition window/IME without disabling the subsystem.\n *\n * \\since This function is available since SDL 2.0.22.\n *\n * \\sa SDL_StartTextInput\n * \\sa SDL_StopTextInput\n */\nextern DECLSPEC void SDLCALL SDL_ClearComposition(void);\n\n/**\n * Returns if an IME Composite or Candidate window is currently shown.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);\n\n/**\n * Set the rectangle used to type Unicode text inputs. Native input methods\n * will place a window with word suggestions near it, without covering the\n * text being inputted.\n * \n * To start text input in a given location, this function is intended to be\n * called before SDL_StartTextInput, although some platforms support moving\n * the rectangle even while text input (and a composition) is active.\n *\n * Note: If you want to use the system native IME window, try setting hint\n * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you\n * any feedback.\n *\n * \\param rect the SDL_Rect structure representing the rectangle to receive\n *             text (ignored if NULL)\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_StartTextInput\n */\nextern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect);\n\n/**\n * Check whether the platform has screen keyboard support.\n *\n * \\returns SDL_TRUE if the platform has some screen keyboard support or\n *          SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_StartTextInput\n * \\sa SDL_IsScreenKeyboardShown\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void);\n\n/**\n * Check whether the screen keyboard is shown for given window.\n *\n * \\param window the window for which screen keyboard should be queried\n * \\returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasScreenKeyboardSupport\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_keyboard_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_keycode.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_keycode.h\n *\n *  Defines constants which identify keyboard keys and modifiers.\n */\n\n#ifndef SDL_keycode_h_\n#define SDL_keycode_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_scancode.h\"\n\n/**\n *  \\brief The SDL virtual key representation.\n *\n *  Values of this type are used to represent keyboard keys using the current\n *  layout of the keyboard.  These values include Unicode values representing\n *  the unmodified character that would be generated by pressing the key, or\n *  an SDLK_* constant for those keys that do not generate characters.\n *\n *  A special exception is the number keys at the top of the keyboard which\n *  map to SDLK_0...SDLK_9 on AZERTY layouts.\n */\ntypedef Sint32 SDL_Keycode;\n\n#define SDLK_SCANCODE_MASK (1<<30)\n#define SDL_SCANCODE_TO_KEYCODE(X)  (X | SDLK_SCANCODE_MASK)\n\ntypedef enum\n{\n    SDLK_UNKNOWN = 0,\n\n    SDLK_RETURN = '\\r',\n    SDLK_ESCAPE = '\\x1B',\n    SDLK_BACKSPACE = '\\b',\n    SDLK_TAB = '\\t',\n    SDLK_SPACE = ' ',\n    SDLK_EXCLAIM = '!',\n    SDLK_QUOTEDBL = '\"',\n    SDLK_HASH = '#',\n    SDLK_PERCENT = '%',\n    SDLK_DOLLAR = '$',\n    SDLK_AMPERSAND = '&',\n    SDLK_QUOTE = '\\'',\n    SDLK_LEFTPAREN = '(',\n    SDLK_RIGHTPAREN = ')',\n    SDLK_ASTERISK = '*',\n    SDLK_PLUS = '+',\n    SDLK_COMMA = ',',\n    SDLK_MINUS = '-',\n    SDLK_PERIOD = '.',\n    SDLK_SLASH = '/',\n    SDLK_0 = '0',\n    SDLK_1 = '1',\n    SDLK_2 = '2',\n    SDLK_3 = '3',\n    SDLK_4 = '4',\n    SDLK_5 = '5',\n    SDLK_6 = '6',\n    SDLK_7 = '7',\n    SDLK_8 = '8',\n    SDLK_9 = '9',\n    SDLK_COLON = ':',\n    SDLK_SEMICOLON = ';',\n    SDLK_LESS = '<',\n    SDLK_EQUALS = '=',\n    SDLK_GREATER = '>',\n    SDLK_QUESTION = '?',\n    SDLK_AT = '@',\n\n    /*\n       Skip uppercase letters\n     */\n\n    SDLK_LEFTBRACKET = '[',\n    SDLK_BACKSLASH = '\\\\',\n    SDLK_RIGHTBRACKET = ']',\n    SDLK_CARET = '^',\n    SDLK_UNDERSCORE = '_',\n    SDLK_BACKQUOTE = '`',\n    SDLK_a = 'a',\n    SDLK_b = 'b',\n    SDLK_c = 'c',\n    SDLK_d = 'd',\n    SDLK_e = 'e',\n    SDLK_f = 'f',\n    SDLK_g = 'g',\n    SDLK_h = 'h',\n    SDLK_i = 'i',\n    SDLK_j = 'j',\n    SDLK_k = 'k',\n    SDLK_l = 'l',\n    SDLK_m = 'm',\n    SDLK_n = 'n',\n    SDLK_o = 'o',\n    SDLK_p = 'p',\n    SDLK_q = 'q',\n    SDLK_r = 'r',\n    SDLK_s = 's',\n    SDLK_t = 't',\n    SDLK_u = 'u',\n    SDLK_v = 'v',\n    SDLK_w = 'w',\n    SDLK_x = 'x',\n    SDLK_y = 'y',\n    SDLK_z = 'z',\n\n    SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK),\n\n    SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1),\n    SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2),\n    SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3),\n    SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4),\n    SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5),\n    SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6),\n    SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7),\n    SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8),\n    SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9),\n    SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10),\n    SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11),\n    SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12),\n\n    SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN),\n    SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK),\n    SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE),\n    SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT),\n    SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME),\n    SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP),\n    SDLK_DELETE = '\\x7F',\n    SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END),\n    SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN),\n    SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT),\n    SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT),\n    SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN),\n    SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP),\n\n    SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR),\n    SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE),\n    SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY),\n    SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS),\n    SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS),\n    SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER),\n    SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1),\n    SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2),\n    SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3),\n    SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4),\n    SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5),\n    SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6),\n    SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7),\n    SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8),\n    SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9),\n    SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0),\n    SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD),\n\n    SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION),\n    SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER),\n    SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS),\n    SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13),\n    SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14),\n    SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15),\n    SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16),\n    SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17),\n    SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18),\n    SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19),\n    SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20),\n    SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21),\n    SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22),\n    SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23),\n    SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24),\n    SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE),\n    SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP),\n    SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU),\n    SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT),\n    SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP),\n    SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN),\n    SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO),\n    SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT),\n    SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY),\n    SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE),\n    SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND),\n    SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE),\n    SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP),\n    SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN),\n    SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA),\n    SDLK_KP_EQUALSAS400 =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400),\n\n    SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE),\n    SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ),\n    SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL),\n    SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR),\n    SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR),\n    SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2),\n    SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR),\n    SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT),\n    SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER),\n    SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN),\n    SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL),\n    SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL),\n\n    SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00),\n    SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000),\n    SDLK_THOUSANDSSEPARATOR =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR),\n    SDLK_DECIMALSEPARATOR =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR),\n    SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT),\n    SDLK_CURRENCYSUBUNIT =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT),\n    SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN),\n    SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN),\n    SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE),\n    SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE),\n    SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB),\n    SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE),\n    SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A),\n    SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B),\n    SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C),\n    SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D),\n    SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E),\n    SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F),\n    SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR),\n    SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER),\n    SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT),\n    SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS),\n    SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER),\n    SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND),\n    SDLK_KP_DBLAMPERSAND =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND),\n    SDLK_KP_VERTICALBAR =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR),\n    SDLK_KP_DBLVERTICALBAR =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR),\n    SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON),\n    SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH),\n    SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE),\n    SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT),\n    SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM),\n    SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE),\n    SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL),\n    SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR),\n    SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD),\n    SDLK_KP_MEMSUBTRACT =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT),\n    SDLK_KP_MEMMULTIPLY =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY),\n    SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE),\n    SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS),\n    SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR),\n    SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY),\n    SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY),\n    SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL),\n    SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL),\n    SDLK_KP_HEXADECIMAL =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL),\n\n    SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL),\n    SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT),\n    SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT),\n    SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI),\n    SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL),\n    SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT),\n    SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT),\n    SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI),\n\n    SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE),\n\n    SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT),\n    SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV),\n    SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP),\n    SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY),\n    SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE),\n    SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT),\n    SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW),\n    SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL),\n    SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR),\n    SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER),\n    SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH),\n    SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME),\n    SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK),\n    SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD),\n    SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP),\n    SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH),\n    SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS),\n\n    SDLK_BRIGHTNESSDOWN =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN),\n    SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP),\n    SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH),\n    SDLK_KBDILLUMTOGGLE =\n        SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE),\n    SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),\n    SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),\n    SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),\n    SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),\n    SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),\n    SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),\n\n    SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),\n    SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD),\n\n    SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT),\n    SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT),\n    SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL),\n    SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL)\n} SDL_KeyCode;\n\n/**\n * \\brief Enumeration of valid key mods (possibly OR'd together).\n */\ntypedef enum\n{\n    KMOD_NONE = 0x0000,\n    KMOD_LSHIFT = 0x0001,\n    KMOD_RSHIFT = 0x0002,\n    KMOD_LCTRL = 0x0040,\n    KMOD_RCTRL = 0x0080,\n    KMOD_LALT = 0x0100,\n    KMOD_RALT = 0x0200,\n    KMOD_LGUI = 0x0400,\n    KMOD_RGUI = 0x0800,\n    KMOD_NUM = 0x1000,\n    KMOD_CAPS = 0x2000,\n    KMOD_MODE = 0x4000,\n    KMOD_SCROLL = 0x8000,\n\n    KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL,\n    KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT,\n    KMOD_ALT = KMOD_LALT | KMOD_RALT,\n    KMOD_GUI = KMOD_LGUI | KMOD_RGUI,\n\n    KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */\n} SDL_Keymod;\n\n#endif /* SDL_keycode_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_loadso.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_loadso.h\n *\n *  System dependent library loading routines\n *\n *  Some things to keep in mind:\n *  \\li These functions only work on C function names.  Other languages may\n *      have name mangling and intrinsic language support that varies from\n *      compiler to compiler.\n *  \\li Make sure you declare your function pointers with the same calling\n *      convention as the actual library function.  Your code will crash\n *      mysteriously if you do not do this.\n *  \\li Avoid namespace collisions.  If you load a symbol from the library,\n *      it is not defined whether or not it goes into the global symbol\n *      namespace for the application.  If it does and it conflicts with\n *      symbols in your code or other shared libraries, you will not get\n *      the results you expect. :)\n */\n\n#ifndef SDL_loadso_h_\n#define SDL_loadso_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Dynamically load a shared object.\n *\n * \\param sofile a system-dependent name of the object file\n * \\returns an opaque pointer to the object handle or NULL if there was an\n *          error; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadFunction\n * \\sa SDL_UnloadObject\n */\nextern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile);\n\n/**\n * Look up the address of the named function in a shared object.\n *\n * This function pointer is no longer valid after calling SDL_UnloadObject().\n *\n * This function can only look up C function names. Other languages may have\n * name mangling and intrinsic language support that varies from compiler to\n * compiler.\n *\n * Make sure you declare your function pointers with the same calling\n * convention as the actual library function. Your code will crash\n * mysteriously if you do not do this.\n *\n * If the requested function doesn't exist, NULL is returned.\n *\n * \\param handle a valid shared object handle returned by SDL_LoadObject()\n * \\param name the name of the function to look up\n * \\returns a pointer to the function or NULL if there was an error; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadObject\n * \\sa SDL_UnloadObject\n */\nextern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle,\n                                               const char *name);\n\n/**\n * Unload a shared object from memory.\n *\n * \\param handle a valid shared object handle returned by SDL_LoadObject()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadFunction\n * \\sa SDL_LoadObject\n */\nextern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_loadso_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_locale.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_locale.h\n *\n *  Include file for SDL locale services\n */\n\n#ifndef _SDL_locale_h\n#define _SDL_locale_h\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\n/* *INDENT-OFF* */\nextern \"C\" {\n/* *INDENT-ON* */\n#endif\n\n\ntypedef struct SDL_Locale\n{\n    const char *language;  /**< A language name, like \"en\" for English. */\n    const char *country;  /**< A country, like \"US\" for America. Can be NULL. */\n} SDL_Locale;\n\n/**\n * Report the user's preferred locale.\n *\n * This returns an array of SDL_Locale structs, the final item zeroed out.\n * When the caller is done with this array, it should call SDL_free() on the\n * returned value; all the memory involved is allocated in a single block, so\n * a single SDL_free() will suffice.\n *\n * Returned language strings are in the format xx, where 'xx' is an ISO-639\n * language specifier (such as \"en\" for English, \"de\" for German, etc).\n * Country strings are in the format YY, where \"YY\" is an ISO-3166 country\n * code (such as \"US\" for the United States, \"CA\" for Canada, etc). Country\n * might be NULL if there's no specific guidance on them (so you might get {\n * \"en\", \"US\" } for American English, but { \"en\", NULL } means \"English\n * language, generically\"). Language strings are never NULL, except to\n * terminate the array.\n *\n * Please note that not all of these strings are 2 characters; some are three\n * or more.\n *\n * The returned list of locales are in the order of the user's preference. For\n * example, a German citizen that is fluent in US English and knows enough\n * Japanese to navigate around Tokyo might have a list like: { \"de\", \"en_US\",\n * \"jp\", NULL }. Someone from England might prefer British English (where\n * \"color\" is spelled \"colour\", etc), but will settle for anything like it: {\n * \"en_GB\", \"en\", NULL }.\n *\n * This function returns NULL on error, including when the platform does not\n * supply this information at all.\n *\n * This might be a \"slow\" call that has to query the operating system. It's\n * best to ask for this once and save the results. However, this list can\n * change, usually because the user has changed a system preference outside of\n * your program; SDL will send an SDL_LOCALECHANGED event in this case, if\n * possible, and you can call this function again to get an updated copy of\n * preferred locales.\n *\n * \\return array of locales, terminated with a locale with a NULL language\n *         field. Will return NULL on error.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n/* *INDENT-OFF* */\n}\n/* *INDENT-ON* */\n#endif\n#include \"close_code.h\"\n\n#endif /* _SDL_locale_h */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_log.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_log.h\n *\n *  Simple log messages with categories and priorities.\n *\n *  By default logs are quiet, but if you're debugging SDL you might want:\n *\n *      SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN);\n *\n *  Here's where the messages go on different platforms:\n *      Windows: debug output stream\n *      Android: log output\n *      Others: standard error output (stderr)\n */\n\n#ifndef SDL_log_h_\n#define SDL_log_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/**\n *  \\brief The maximum size of a log message prior to SDL 2.0.24\n *\n *  As of 2.0.24 there is no limit to the length of SDL log messages.\n */\n#define SDL_MAX_LOG_MESSAGE 4096\n\n/**\n *  \\brief The predefined log categories\n *\n *  By default the application category is enabled at the INFO level,\n *  the assert category is enabled at the WARN level, test is enabled\n *  at the VERBOSE level and all other categories are enabled at the\n *  ERROR level.\n */\ntypedef enum\n{\n    SDL_LOG_CATEGORY_APPLICATION,\n    SDL_LOG_CATEGORY_ERROR,\n    SDL_LOG_CATEGORY_ASSERT,\n    SDL_LOG_CATEGORY_SYSTEM,\n    SDL_LOG_CATEGORY_AUDIO,\n    SDL_LOG_CATEGORY_VIDEO,\n    SDL_LOG_CATEGORY_RENDER,\n    SDL_LOG_CATEGORY_INPUT,\n    SDL_LOG_CATEGORY_TEST,\n\n    /* Reserved for future SDL library use */\n    SDL_LOG_CATEGORY_RESERVED1,\n    SDL_LOG_CATEGORY_RESERVED2,\n    SDL_LOG_CATEGORY_RESERVED3,\n    SDL_LOG_CATEGORY_RESERVED4,\n    SDL_LOG_CATEGORY_RESERVED5,\n    SDL_LOG_CATEGORY_RESERVED6,\n    SDL_LOG_CATEGORY_RESERVED7,\n    SDL_LOG_CATEGORY_RESERVED8,\n    SDL_LOG_CATEGORY_RESERVED9,\n    SDL_LOG_CATEGORY_RESERVED10,\n\n    /* Beyond this point is reserved for application use, e.g.\n       enum {\n           MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,\n           MYAPP_CATEGORY_AWESOME2,\n           MYAPP_CATEGORY_AWESOME3,\n           ...\n       };\n     */\n    SDL_LOG_CATEGORY_CUSTOM\n} SDL_LogCategory;\n\n/**\n *  \\brief The predefined log priorities\n */\ntypedef enum\n{\n    SDL_LOG_PRIORITY_VERBOSE = 1,\n    SDL_LOG_PRIORITY_DEBUG,\n    SDL_LOG_PRIORITY_INFO,\n    SDL_LOG_PRIORITY_WARN,\n    SDL_LOG_PRIORITY_ERROR,\n    SDL_LOG_PRIORITY_CRITICAL,\n    SDL_NUM_LOG_PRIORITIES\n} SDL_LogPriority;\n\n\n/**\n * Set the priority of all log categories.\n *\n * \\param priority the SDL_LogPriority to assign\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogSetPriority\n */\nextern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority);\n\n/**\n * Set the priority of a particular log category.\n *\n * \\param category the category to assign a priority to\n * \\param priority the SDL_LogPriority to assign\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogGetPriority\n * \\sa SDL_LogSetAllPriority\n */\nextern DECLSPEC void SDLCALL SDL_LogSetPriority(int category,\n                                                SDL_LogPriority priority);\n\n/**\n * Get the priority of a particular log category.\n *\n * \\param category the category to query\n * \\returns the SDL_LogPriority for the requested category\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogSetPriority\n */\nextern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category);\n\n/**\n * Reset all priorities to default.\n *\n * This is called by SDL_Quit().\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogSetAllPriority\n * \\sa SDL_LogSetPriority\n */\nextern DECLSPEC void SDLCALL SDL_LogResetPriorities(void);\n\n/**\n * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO.\n *\n * = * \\param fmt a printf() style message format string\n *\n * \\param ... additional parameters matching % tokens in the `fmt` string, if\n *            any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_VERBOSE.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_DEBUG.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_INFO.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_WARN.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n */\nextern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_ERROR.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with SDL_LOG_PRIORITY_CRITICAL.\n *\n * \\param category the category of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * Log a message with the specified category and priority.\n *\n * \\param category the category of the message\n * \\param priority the priority of the message\n * \\param fmt a printf() style message format string\n * \\param ... additional parameters matching % tokens in the **fmt** string,\n *            if any\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessageV\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogMessage(int category,\n                                            SDL_LogPriority priority,\n                                            SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3);\n\n/**\n * Log a message with the specified category and priority.\n *\n * \\param category the category of the message\n * \\param priority the priority of the message\n * \\param fmt a printf() style message format string\n * \\param ap a variable argument list\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Log\n * \\sa SDL_LogCritical\n * \\sa SDL_LogDebug\n * \\sa SDL_LogError\n * \\sa SDL_LogInfo\n * \\sa SDL_LogMessage\n * \\sa SDL_LogVerbose\n * \\sa SDL_LogWarn\n */\nextern DECLSPEC void SDLCALL SDL_LogMessageV(int category,\n                                             SDL_LogPriority priority,\n                                             SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);\n\n/**\n * The prototype for the log output callback function.\n *\n * This function is called by SDL when there is new text to be logged.\n *\n * \\param userdata what was passed as `userdata` to SDL_LogSetOutputFunction()\n * \\param category the category of the message\n * \\param priority the priority of the message\n * \\param message the message being output\n */\ntypedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);\n\n/**\n * Get the current log output function.\n *\n * \\param callback an SDL_LogOutputFunction filled in with the current log\n *                 callback\n * \\param userdata a pointer filled in with the pointer that is passed to\n *                 `callback`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogSetOutputFunction\n */\nextern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata);\n\n/**\n * Replace the default log output function with one of your own.\n *\n * \\param callback an SDL_LogOutputFunction to call instead of the default\n * \\param userdata a pointer that is passed to `callback`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LogGetOutputFunction\n */\nextern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_log_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_main.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_main_h_\n#define SDL_main_h_\n\n#include \"SDL_stdinc.h\"\n\n/**\n *  \\file SDL_main.h\n *\n *  Redefine main() on some platforms so that it is called by SDL.\n */\n\n#ifndef SDL_MAIN_HANDLED\n#if defined(__WIN32__)\n/* On Windows SDL provides WinMain(), which parses the command line and passes\n   the arguments to your main function.\n\n   If you provide your own WinMain(), you may define SDL_MAIN_HANDLED\n */\n#define SDL_MAIN_AVAILABLE\n\n#elif defined(__WINRT__)\n/* On WinRT, SDL provides a main function that initializes CoreApplication,\n   creating an instance of IFrameworkView in the process.\n\n   Please note that #include'ing SDL_main.h is not enough to get a main()\n   function working.  In non-XAML apps, the file,\n   src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled\n   into the app itself.  In XAML apps, the function, SDL_WinRTRunApp must be\n   called, with a pointer to the Direct3D-hosted XAML control passed in.\n*/\n#define SDL_MAIN_NEEDED\n\n#elif defined(__GDK__)\n/* On GDK, SDL provides a main function that initializes the game runtime.\n\n   Please note that #include'ing SDL_main.h is not enough to get a main()\n   function working. You must either link against SDL2main or, if not possible,\n   call the SDL_GDKRunApp function from your entry point.\n*/\n#define SDL_MAIN_NEEDED\n\n#elif defined(__IPHONEOS__)\n/* On iOS SDL provides a main function that creates an application delegate\n   and starts the iOS application run loop.\n\n   If you link with SDL dynamically on iOS, the main function can't be in a\n   shared library, so you need to link with libSDLmain.a, which includes a\n   stub main function that calls into the shared library to start execution.\n\n   See src/video/uikit/SDL_uikitappdelegate.m for more details.\n */\n#define SDL_MAIN_NEEDED\n\n#elif defined(__ANDROID__)\n/* On Android SDL provides a Java class in SDLActivity.java that is the\n   main activity entry point.\n\n   See docs/README-android.md for more details on extending that class.\n */\n#define SDL_MAIN_NEEDED\n\n/* We need to export SDL_main so it can be launched from Java */\n#define SDLMAIN_DECLSPEC    DECLSPEC\n\n#elif defined(__NACL__)\n/* On NACL we use ppapi_simple to set up the application helper code,\n   then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before \n   starting the user main function.\n   All user code is run in a separate thread by ppapi_simple, thus \n   allowing for blocking io to take place via nacl_io\n*/\n#define SDL_MAIN_NEEDED\n\n#elif defined(__PSP__)\n/* On PSP SDL provides a main function that sets the module info,\n   activates the GPU and starts the thread required to be able to exit\n   the software.\n\n   If you provide this yourself, you may define SDL_MAIN_HANDLED\n */\n#define SDL_MAIN_AVAILABLE\n\n#elif defined(__PS2__)\n#define SDL_MAIN_AVAILABLE\n\n#define SDL_PS2_SKIP_IOP_RESET() \\\n   void reset_IOP(); \\\n   void reset_IOP() {}\n\n#elif defined(__3DS__)\n/*\n  On N3DS, SDL provides a main function that sets up the screens\n  and storage.\n\n  If you provide this yourself, you may define SDL_MAIN_HANDLED\n*/\n#define SDL_MAIN_AVAILABLE\n\n#endif\n#endif /* SDL_MAIN_HANDLED */\n\n#ifndef SDLMAIN_DECLSPEC\n#define SDLMAIN_DECLSPEC\n#endif\n\n/**\n *  \\file SDL_main.h\n *\n *  The application's main() function must be called with C linkage,\n *  and should be declared like this:\n *  \\code\n *  #ifdef __cplusplus\n *  extern \"C\"\n *  #endif\n *  int main(int argc, char *argv[])\n *  {\n *  }\n *  \\endcode\n */\n\n#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)\n#define main    SDL_main\n#endif\n\n#include \"begin_code.h\"\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  The prototype for the application's main() function\n */\ntypedef int (*SDL_main_func)(int argc, char *argv[]);\nextern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);\n\n\n/**\n * Circumvent failure of SDL_Init() when not using SDL_main() as an entry\n * point.\n *\n * This function is defined in SDL_main.h, along with the preprocessor rule to\n * redefine main() as SDL_main(). Thus to ensure that your main() function\n * will not be changed it is necessary to define SDL_MAIN_HANDLED before\n * including SDL.h.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_Init\n */\nextern DECLSPEC void SDLCALL SDL_SetMainReady(void);\n\n#if defined(__WIN32__) || defined(__GDK__)\n\n/**\n * Register a win32 window class for SDL's use.\n *\n * This can be called to set the application window class at startup. It is\n * safe to call this multiple times, as long as every call is eventually\n * paired with a call to SDL_UnregisterApp, but a second registration attempt\n * while a previous registration is still active will be ignored, other than\n * to increment a counter.\n *\n * Most applications do not need to, and should not, call this directly; SDL\n * will call it when initializing the video subsystem.\n *\n * \\param name the window class name, in UTF-8 encoding. If NULL, SDL\n *             currently uses \"SDL_app\" but this isn't guaranteed.\n * \\param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL\n *              currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of\n *              what is specified here.\n * \\param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL\n *              will use `GetModuleHandle(NULL)` instead.\n * \\returns 0 on success, -1 on error. SDL_GetError() may have details.\n *\n * \\since This function is available since SDL 2.0.2.\n */\nextern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst);\n\n/**\n * Deregister the win32 window class from an SDL_RegisterApp call.\n *\n * This can be called to undo the effects of SDL_RegisterApp.\n *\n * Most applications do not need to, and should not, call this directly; SDL\n * will call it when deinitializing the video subsystem.\n *\n * It is safe to call this multiple times, as long as every call is eventually\n * paired with a prior call to SDL_RegisterApp. The window class will only be\n * deregistered when the registration counter in SDL_RegisterApp decrements to\n * zero through calls to this function.\n *\n * \\since This function is available since SDL 2.0.2.\n */\nextern DECLSPEC void SDLCALL SDL_UnregisterApp(void);\n\n#endif /* defined(__WIN32__) || defined(__GDK__) */\n\n\n#ifdef __WINRT__\n\n/**\n * Initialize and launch an SDL/WinRT application.\n *\n * \\param mainFunction the SDL app's C-style main(), an SDL_main_func\n * \\param reserved reserved for future use; should be NULL\n * \\returns 0 on success or -1 on failure; call SDL_GetError() to retrieve\n *          more information on the failure.\n *\n * \\since This function is available since SDL 2.0.3.\n */\nextern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved);\n\n#endif /* __WINRT__ */\n\n#if defined(__IPHONEOS__)\n\n/**\n * Initializes and launches an SDL application.\n *\n * \\param argc The argc parameter from the application's main() function\n * \\param argv The argv parameter from the application's main() function\n * \\param mainFunction The SDL app's C-style main(), an SDL_main_func\n * \\return the return value from mainFunction\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction);\n\n#endif /* __IPHONEOS__ */\n\n#ifdef __GDK__\n\n/**\n * Initialize and launch an SDL GDK application.\n *\n * \\param mainFunction the SDL app's C-style main(), an SDL_main_func\n * \\param reserved reserved for future use; should be NULL\n * \\returns 0 on success or -1 on failure; call SDL_GetError() to retrieve\n *          more information on the failure.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved);\n\n/**\n * Callback from the application to let the suspend continue.\n *\n * \\since This function is available since SDL 2.28.0.\n */\nextern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void);\n\n#endif /* __GDK__ */\n\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_main_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_messagebox.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_messagebox_h_\n#define SDL_messagebox_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_video.h\"      /* For SDL_Window */\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * SDL_MessageBox flags. If supported will display warning icon, etc.\n */\ntypedef enum\n{\n    SDL_MESSAGEBOX_ERROR                 = 0x00000010,   /**< error dialog */\n    SDL_MESSAGEBOX_WARNING               = 0x00000020,   /**< warning dialog */\n    SDL_MESSAGEBOX_INFORMATION           = 0x00000040,   /**< informational dialog */\n    SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080,   /**< buttons placed left to right */\n    SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100    /**< buttons placed right to left */\n} SDL_MessageBoxFlags;\n\n/**\n * Flags for SDL_MessageBoxButtonData.\n */\ntypedef enum\n{\n    SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001,  /**< Marks the default button when return is hit */\n    SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002   /**< Marks the default button when escape is hit */\n} SDL_MessageBoxButtonFlags;\n\n/**\n * Individual button data.\n */\ntypedef struct\n{\n    Uint32 flags;       /**< ::SDL_MessageBoxButtonFlags */\n    int buttonid;       /**< User defined button id (value returned via SDL_ShowMessageBox) */\n    const char * text;  /**< The UTF-8 button text */\n} SDL_MessageBoxButtonData;\n\n/**\n * RGB value used in a message box color scheme\n */\ntypedef struct\n{\n    Uint8 r, g, b;\n} SDL_MessageBoxColor;\n\ntypedef enum\n{\n    SDL_MESSAGEBOX_COLOR_BACKGROUND,\n    SDL_MESSAGEBOX_COLOR_TEXT,\n    SDL_MESSAGEBOX_COLOR_BUTTON_BORDER,\n    SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND,\n    SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED,\n    SDL_MESSAGEBOX_COLOR_MAX\n} SDL_MessageBoxColorType;\n\n/**\n * A set of colors to use for message box dialogs\n */\ntypedef struct\n{\n    SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];\n} SDL_MessageBoxColorScheme;\n\n/**\n * MessageBox structure containing title, text, window, etc.\n */\ntypedef struct\n{\n    Uint32 flags;                       /**< ::SDL_MessageBoxFlags */\n    SDL_Window *window;                 /**< Parent window, can be NULL */\n    const char *title;                  /**< UTF-8 title */\n    const char *message;                /**< UTF-8 message text */\n\n    int numbuttons;\n    const SDL_MessageBoxButtonData *buttons;\n\n    const SDL_MessageBoxColorScheme *colorScheme;   /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */\n} SDL_MessageBoxData;\n\n/**\n * Create a modal message box.\n *\n * If your needs aren't complex, it might be easier to use\n * SDL_ShowSimpleMessageBox.\n *\n * This function should be called on the thread that created the parent\n * window, or on the main thread if the messagebox has no parent. It will\n * block execution of that thread until the user clicks a button or closes the\n * messagebox.\n *\n * This function may be called at any time, even before SDL_Init(). This makes\n * it useful for reporting errors like a failure to create a renderer or\n * OpenGL context.\n *\n * On X11, SDL rolls its own dialog box with X11 primitives instead of a\n * formal toolkit like GTK+ or Qt.\n *\n * Note that if SDL_Init() would fail because there isn't any available video\n * target, this function is likely to fail for the same reasons. If this is a\n * concern, check the return value from this function and fall back to writing\n * to stderr if you can.\n *\n * \\param messageboxdata the SDL_MessageBoxData structure with title, text and\n *                       other options\n * \\param buttonid the pointer to which user id of hit button should be copied\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ShowSimpleMessageBox\n */\nextern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid);\n\n/**\n * Display a simple modal message box.\n *\n * If your needs aren't complex, this function is preferred over\n * SDL_ShowMessageBox.\n *\n * `flags` may be any of the following:\n *\n * - `SDL_MESSAGEBOX_ERROR`: error dialog\n * - `SDL_MESSAGEBOX_WARNING`: warning dialog\n * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog\n *\n * This function should be called on the thread that created the parent\n * window, or on the main thread if the messagebox has no parent. It will\n * block execution of that thread until the user clicks a button or closes the\n * messagebox.\n *\n * This function may be called at any time, even before SDL_Init(). This makes\n * it useful for reporting errors like a failure to create a renderer or\n * OpenGL context.\n *\n * On X11, SDL rolls its own dialog box with X11 primitives instead of a\n * formal toolkit like GTK+ or Qt.\n *\n * Note that if SDL_Init() would fail because there isn't any available video\n * target, this function is likely to fail for the same reasons. If this is a\n * concern, check the return value from this function and fall back to writing\n * to stderr if you can.\n *\n * \\param flags an SDL_MessageBoxFlags value\n * \\param title UTF-8 title text\n * \\param message UTF-8 message text\n * \\param window the parent window, or NULL for no parent\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ShowMessageBox\n */\nextern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_messagebox_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_metal.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_metal.h\n *\n *  Header file for functions to creating Metal layers and views on SDL windows.\n */\n\n#ifndef SDL_metal_h_\n#define SDL_metal_h_\n\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS).\n *\n *  \\note This can be cast directly to an NSView or UIView.\n */\ntypedef void *SDL_MetalView;\n\n/**\n *  \\name Metal support functions\n */\n/* @{ */\n\n/**\n * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified\n * window.\n *\n * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on\n * its own. It is up to user code to do that.\n *\n * The returned handle can be casted directly to a NSView or UIView. To access\n * the backing CAMetalLayer, call SDL_Metal_GetLayer().\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_Metal_DestroyView\n * \\sa SDL_Metal_GetLayer\n */\nextern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window);\n\n/**\n * Destroy an existing SDL_MetalView object.\n *\n * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was\n * called after SDL_CreateWindow.\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_Metal_CreateView\n */\nextern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view);\n\n/**\n * Get a pointer to the backing CAMetalLayer for the given view.\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_Metal_CreateView\n */\nextern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);\n\n/**\n * Get the size of a window's underlying drawable in pixels (for use with\n * setting viewport, scissor & etc).\n *\n * \\param window SDL_Window from which the drawable size should be queried\n * \\param w Pointer to variable for storing the width in pixels, may be NULL\n * \\param h Pointer to variable for storing the height in pixels, may be NULL\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_GetWindowSize\n * \\sa SDL_CreateWindow\n */\nextern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w,\n                                                       int *h);\n\n/* @} *//* Metal support functions */\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_metal_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_misc.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_misc.h\n *\n *  \\brief Include file for SDL API functions that don't fit elsewhere.\n */\n\n#ifndef SDL_misc_h_\n#define SDL_misc_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Open a URL/URI in the browser or other appropriate external application.\n *\n * Open a URL in a separate, system-provided application. How this works will\n * vary wildly depending on the platform. This will likely launch what makes\n * sense to handle a specific URL's protocol (a web browser for `http://`,\n * etc), but it might also be able to launch file managers for directories and\n * other things.\n *\n * What happens when you open a URL varies wildly as well: your game window\n * may lose focus (and may or may not lose focus if your game was fullscreen\n * or grabbing input at the time). On mobile devices, your app will likely\n * move to the background or your process might be paused. Any given platform\n * may or may not handle a given URL.\n *\n * If this is unimplemented (or simply unavailable) for a platform, this will\n * fail with an error. A successful result does not mean the URL loaded, just\n * that we launched _something_ to handle it (or at least believe we did).\n *\n * All this to say: this function can be useful, but you should definitely\n * test it on every platform you target.\n *\n * \\param url A valid URL/URI to open. Use `file:///full/path/to/file` for\n *            local files, if supported.\n * \\returns 0 on success, or -1 on error; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC int SDLCALL SDL_OpenURL(const char *url);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_misc_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_mouse.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_mouse.h\n *\n *  Include file for SDL mouse event handling.\n */\n\n#ifndef SDL_mouse_h_\n#define SDL_mouse_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct SDL_Cursor SDL_Cursor;   /**< Implementation dependent */\n\n/**\n * \\brief Cursor types for SDL_CreateSystemCursor().\n */\ntypedef enum\n{\n    SDL_SYSTEM_CURSOR_ARROW,     /**< Arrow */\n    SDL_SYSTEM_CURSOR_IBEAM,     /**< I-beam */\n    SDL_SYSTEM_CURSOR_WAIT,      /**< Wait */\n    SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */\n    SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */\n    SDL_SYSTEM_CURSOR_SIZENWSE,  /**< Double arrow pointing northwest and southeast */\n    SDL_SYSTEM_CURSOR_SIZENESW,  /**< Double arrow pointing northeast and southwest */\n    SDL_SYSTEM_CURSOR_SIZEWE,    /**< Double arrow pointing west and east */\n    SDL_SYSTEM_CURSOR_SIZENS,    /**< Double arrow pointing north and south */\n    SDL_SYSTEM_CURSOR_SIZEALL,   /**< Four pointed arrow pointing north, south, east, and west */\n    SDL_SYSTEM_CURSOR_NO,        /**< Slashed circle or crossbones */\n    SDL_SYSTEM_CURSOR_HAND,      /**< Hand */\n    SDL_NUM_SYSTEM_CURSORS\n} SDL_SystemCursor;\n\n/**\n * \\brief Scroll direction types for the Scroll event\n */\ntypedef enum\n{\n    SDL_MOUSEWHEEL_NORMAL,    /**< The scroll direction is normal */\n    SDL_MOUSEWHEEL_FLIPPED    /**< The scroll direction is flipped / natural */\n} SDL_MouseWheelDirection;\n\n/* Function prototypes */\n\n/**\n * Get the window which currently has mouse focus.\n *\n * \\returns the window with mouse focus.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void);\n\n/**\n * Retrieve the current state of the mouse.\n *\n * The current button state is returned as a button bitmask, which can be\n * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the\n * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the\n * mouse cursor position relative to the focus window. You can pass NULL for\n * either `x` or `y`.\n *\n * \\param x the x coordinate of the mouse cursor position relative to the\n *          focus window\n * \\param y the y coordinate of the mouse cursor position relative to the\n *          focus window\n * \\returns a 32-bit button bitmask of the current button state.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetGlobalMouseState\n * \\sa SDL_GetRelativeMouseState\n * \\sa SDL_PumpEvents\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y);\n\n/**\n * Get the current state of the mouse in relation to the desktop.\n *\n * This works similarly to SDL_GetMouseState(), but the coordinates will be\n * reported relative to the top-left of the desktop. This can be useful if you\n * need to track the mouse outside of a specific window and SDL_CaptureMouse()\n * doesn't fit your needs. For example, it could be useful if you need to\n * track the mouse while dragging a window, where coordinates relative to a\n * window might not be in sync at all times.\n *\n * Note: SDL_GetMouseState() returns the mouse position as SDL understands it\n * from the last pump of the event queue. This function, however, queries the\n * OS for the current mouse position, and as such, might be a slightly less\n * efficient function. Unless you know what you're doing and have a good\n * reason to use this function, you probably want SDL_GetMouseState() instead.\n *\n * \\param x filled in with the current X coord relative to the desktop; can be\n *          NULL\n * \\param y filled in with the current Y coord relative to the desktop; can be\n *          NULL\n * \\returns the current button state as a bitmask which can be tested using\n *          the SDL_BUTTON(X) macros.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_CaptureMouse\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y);\n\n/**\n * Retrieve the relative state of the mouse.\n *\n * The current button state is returned as a button bitmask, which can be\n * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the\n * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the\n * mouse deltas since the last call to SDL_GetRelativeMouseState() or since\n * event initialization. You can pass NULL for either `x` or `y`.\n *\n * \\param x a pointer filled with the last recorded x coordinate of the mouse\n * \\param y a pointer filled with the last recorded y coordinate of the mouse\n * \\returns a 32-bit button bitmask of the relative button state.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetMouseState\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y);\n\n/**\n * Move the mouse cursor to the given position within the window.\n *\n * This function generates a mouse motion event if relative mode is not\n * enabled. If relative mode is enabled, you can force mouse events for the\n * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint.\n *\n * Note that this function will appear to succeed, but not actually move the\n * mouse when used over Microsoft Remote Desktop.\n *\n * \\param window the window to move the mouse into, or NULL for the current\n *               mouse focus\n * \\param x the x coordinate within the window\n * \\param y the y coordinate within the window\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WarpMouseGlobal\n */\nextern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window,\n                                                   int x, int y);\n\n/**\n * Move the mouse to the given position in global screen space.\n *\n * This function generates a mouse motion event.\n *\n * A failure of this function usually means that it is unsupported by a\n * platform.\n *\n * Note that this function will appear to succeed, but not actually move the\n * mouse when used over Microsoft Remote Desktop.\n *\n * \\param x the x coordinate\n * \\param y the y coordinate\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_WarpMouseInWindow\n */\nextern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y);\n\n/**\n * Set relative mouse mode.\n *\n * While the mouse is in relative mode, the cursor is hidden, the mouse\n * position is constrained to the window, and SDL will report continuous\n * relative mouse motion even if the mouse is at the edge of the window.\n *\n * This function will flush any pending mouse motion.\n *\n * \\param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n *          If relative mode is not supported, this returns -1.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRelativeMouseMode\n */\nextern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled);\n\n/**\n * Capture the mouse and to track input outside an SDL window.\n *\n * Capturing enables your app to obtain mouse events globally, instead of just\n * within your window. Not all video targets support this function. When\n * capturing is enabled, the current window will get all mouse events, but\n * unlike relative mode, no change is made to the cursor and it is not\n * restrained to your window.\n *\n * This function may also deny mouse input to other windows--both those in\n * your application and others on the system--so you should use this function\n * sparingly, and in small bursts. For example, you might want to track the\n * mouse while the user is dragging something, until the user releases a mouse\n * button. It is not recommended that you capture the mouse for long periods\n * of time, such as the entire time your app is running. For that, you should\n * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending\n * on your goals.\n *\n * While captured, mouse events still report coordinates relative to the\n * current (foreground) window, but those coordinates may be outside the\n * bounds of the window (including negative values). Capturing is only allowed\n * for the foreground window. If the window loses focus while capturing, the\n * capture will be disabled automatically.\n *\n * While capturing is enabled, the current window will have the\n * `SDL_WINDOW_MOUSE_CAPTURE` flag set.\n *\n * Please note that as of SDL 2.0.22, SDL will attempt to \"auto capture\" the\n * mouse while the user is pressing a button; this is to try and make mouse\n * behavior more consistent between platforms, and deal with the common case\n * of a user dragging the mouse outside of the window. This means that if you\n * are calling SDL_CaptureMouse() only to deal with this situation, you no\n * longer have to (although it is safe to do so). If this causes problems for\n * your app, you can disable auto capture by setting the\n * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero.\n *\n * \\param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable.\n * \\returns 0 on success or -1 if not supported; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_GetGlobalMouseState\n */\nextern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled);\n\n/**\n * Query whether relative mouse mode is enabled.\n *\n * \\returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRelativeMouseMode\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void);\n\n/**\n * Create a cursor using the specified bitmap data and mask (in MSB format).\n *\n * `mask` has to be in MSB (Most Significant Bit) format.\n *\n * The cursor width (`w`) must be a multiple of 8 bits.\n *\n * The cursor is created in black and white according to the following:\n *\n * - data=0, mask=1: white\n * - data=1, mask=1: black\n * - data=0, mask=0: transparent\n * - data=1, mask=0: inverted color if possible, black if not.\n *\n * Cursors created with this function must be freed with SDL_FreeCursor().\n *\n * If you want to have a color cursor, or create your cursor from an\n * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can\n * hide the cursor and draw your own as part of your game's rendering, but it\n * will be bound to the framerate.\n *\n * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which\n * provides twelve readily available system cursors to pick from.\n *\n * \\param data the color value for each pixel of the cursor\n * \\param mask the mask value for each pixel of the cursor\n * \\param w the width of the cursor\n * \\param h the height of the cursor\n * \\param hot_x the X-axis location of the upper left corner of the cursor\n *              relative to the actual mouse position\n * \\param hot_y the Y-axis location of the upper left corner of the cursor\n *              relative to the actual mouse position\n * \\returns a new cursor with the specified parameters on success or NULL on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeCursor\n * \\sa SDL_SetCursor\n * \\sa SDL_ShowCursor\n */\nextern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data,\n                                                     const Uint8 * mask,\n                                                     int w, int h, int hot_x,\n                                                     int hot_y);\n\n/**\n * Create a color cursor.\n *\n * \\param surface an SDL_Surface structure representing the cursor image\n * \\param hot_x the x position of the cursor hot spot\n * \\param hot_y the y position of the cursor hot spot\n * \\returns the new cursor on success or NULL on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateCursor\n * \\sa SDL_FreeCursor\n */\nextern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface,\n                                                          int hot_x,\n                                                          int hot_y);\n\n/**\n * Create a system cursor.\n *\n * \\param id an SDL_SystemCursor enum value\n * \\returns a cursor on success or NULL on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeCursor\n */\nextern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id);\n\n/**\n * Set the active cursor.\n *\n * This function sets the currently active cursor to the specified one. If the\n * cursor is currently visible, the change will be immediately represented on\n * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if\n * this is desired for any reason.\n *\n * \\param cursor a cursor to make active\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateCursor\n * \\sa SDL_GetCursor\n * \\sa SDL_ShowCursor\n */\nextern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor);\n\n/**\n * Get the active cursor.\n *\n * This function returns a pointer to the current cursor which is owned by the\n * library. It is not necessary to free the cursor with SDL_FreeCursor().\n *\n * \\returns the active cursor or NULL if there is no mouse.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetCursor\n */\nextern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void);\n\n/**\n * Get the default cursor.\n *\n * You do not have to call SDL_FreeCursor() on the return value, but it is\n * safe to do so.\n *\n * \\returns the default cursor on success or NULL on failure.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSystemCursor\n */\nextern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void);\n\n/**\n * Free a previously-created cursor.\n *\n * Use this function to free cursor resources created with SDL_CreateCursor(),\n * SDL_CreateColorCursor() or SDL_CreateSystemCursor().\n *\n * \\param cursor the cursor to free\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateColorCursor\n * \\sa SDL_CreateCursor\n * \\sa SDL_CreateSystemCursor\n */\nextern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor);\n\n/**\n * Toggle whether or not the cursor is shown.\n *\n * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE`\n * displays the cursor and passing `SDL_DISABLE` hides it.\n *\n * The current state of the mouse cursor can be queried by passing\n * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned.\n *\n * \\param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it,\n *               `SDL_QUERY` to query the current state without changing it.\n * \\returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the\n *          cursor is hidden, or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateCursor\n * \\sa SDL_SetCursor\n */\nextern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle);\n\n/**\n * Used as a mask when testing buttons in buttonstate.\n *\n * - Button 1:  Left mouse button\n * - Button 2:  Middle mouse button\n * - Button 3:  Right mouse button\n */\n#define SDL_BUTTON(X)       (1 << ((X)-1))\n#define SDL_BUTTON_LEFT     1\n#define SDL_BUTTON_MIDDLE   2\n#define SDL_BUTTON_RIGHT    3\n#define SDL_BUTTON_X1       4\n#define SDL_BUTTON_X2       5\n#define SDL_BUTTON_LMASK    SDL_BUTTON(SDL_BUTTON_LEFT)\n#define SDL_BUTTON_MMASK    SDL_BUTTON(SDL_BUTTON_MIDDLE)\n#define SDL_BUTTON_RMASK    SDL_BUTTON(SDL_BUTTON_RIGHT)\n#define SDL_BUTTON_X1MASK   SDL_BUTTON(SDL_BUTTON_X1)\n#define SDL_BUTTON_X2MASK   SDL_BUTTON(SDL_BUTTON_X2)\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_mouse_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_mutex.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_mutex_h_\n#define SDL_mutex_h_\n\n/**\n *  \\file SDL_mutex.h\n *\n *  Functions to provide thread synchronization primitives.\n */\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n/******************************************************************************/\n/* Enable thread safety attributes only with clang.\n * The attributes can be safely erased when compiling with other compilers.\n */\n#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \\\n    defined(__clang__) && (!defined(SWIG))\n#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x)   __attribute__((x))\n#else\n#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x)   /* no-op */\n#endif\n\n#define SDL_CAPABILITY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x))\n\n#define SDL_SCOPED_CAPABILITY \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable)\n\n#define SDL_GUARDED_BY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x))\n\n#define SDL_PT_GUARDED_BY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x))\n\n#define SDL_ACQUIRED_BEFORE(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x))\n\n#define SDL_ACQUIRED_AFTER(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x))\n\n#define SDL_REQUIRES(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x))\n\n#define SDL_REQUIRES_SHARED(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x))\n\n#define SDL_ACQUIRE(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x))\n\n#define SDL_ACQUIRE_SHARED(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x))\n\n#define SDL_RELEASE(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x))\n\n#define SDL_RELEASE_SHARED(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x))\n\n#define SDL_RELEASE_GENERIC(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x))\n\n#define SDL_TRY_ACQUIRE(x, y) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y))\n\n#define SDL_TRY_ACQUIRE_SHARED(x, y) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y))\n\n#define SDL_EXCLUDES(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x))\n\n#define SDL_ASSERT_CAPABILITY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x))\n\n#define SDL_ASSERT_SHARED_CAPABILITY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x))\n\n#define SDL_RETURN_CAPABILITY(x) \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x))\n\n#define SDL_NO_THREAD_SAFETY_ANALYSIS \\\n  SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis)\n\n/******************************************************************************/\n\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  Synchronization functions which can time out return this value\n *  if they time out.\n */\n#define SDL_MUTEX_TIMEDOUT  1\n\n/**\n *  This is the timeout value which corresponds to never time out.\n */\n#define SDL_MUTEX_MAXWAIT   (~(Uint32)0)\n\n\n/**\n *  \\name Mutex functions\n */\n/* @{ */\n\n/* The SDL mutex structure, defined in SDL_sysmutex.c */\nstruct SDL_mutex;\ntypedef struct SDL_mutex SDL_mutex;\n\n/**\n * Create a new mutex.\n *\n * All newly-created mutexes begin in the _unlocked_ state.\n *\n * Calls to SDL_LockMutex() will not return while the mutex is locked by\n * another thread. See SDL_TryLockMutex() to attempt to lock without blocking.\n *\n * SDL mutexes are reentrant.\n *\n * \\returns the initialized and unlocked mutex or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DestroyMutex\n * \\sa SDL_LockMutex\n * \\sa SDL_TryLockMutex\n * \\sa SDL_UnlockMutex\n */\nextern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void);\n\n/**\n * Lock the mutex.\n *\n * This will block until the mutex is available, which is to say it is in the\n * unlocked state and the OS has chosen the caller as the next thread to lock\n * it. Of all threads waiting to lock the mutex, only one may do so at a time.\n *\n * It is legal for the owning thread to lock an already-locked mutex. It must\n * unlock it the same number of times before it is actually made available for\n * other threads in the system (this is known as a \"recursive mutex\").\n *\n * \\param mutex the mutex to lock\n * \\return 0, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex);\n#define SDL_mutexP(m)   SDL_LockMutex(m)\n\n/**\n * Try to lock a mutex without blocking.\n *\n * This works just like SDL_LockMutex(), but if the mutex is not available,\n * this function returns `SDL_MUTEX_TIMEOUT` immediately.\n *\n * This technique is useful if you need exclusive access to a resource but\n * don't want to wait for it, and will return to it to try again later.\n *\n * \\param mutex the mutex to try to lock\n * \\returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateMutex\n * \\sa SDL_DestroyMutex\n * \\sa SDL_LockMutex\n * \\sa SDL_UnlockMutex\n */\nextern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex);\n\n/**\n * Unlock the mutex.\n *\n * It is legal for the owning thread to lock an already-locked mutex. It must\n * unlock it the same number of times before it is actually made available for\n * other threads in the system (this is known as a \"recursive mutex\").\n *\n * It is an error to unlock a mutex that has not been locked by the current\n * thread, and doing so results in undefined behavior.\n *\n * It is also an error to unlock a mutex that isn't locked at all.\n *\n * \\param mutex the mutex to unlock.\n * \\returns 0, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex);\n#define SDL_mutexV(m)   SDL_UnlockMutex(m)\n\n/**\n * Destroy a mutex created with SDL_CreateMutex().\n *\n * This function must be called on any mutex that is no longer needed. Failure\n * to destroy a mutex will result in a system memory or resource leak. While\n * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt\n * to destroy a locked mutex, and may result in undefined behavior depending\n * on the platform.\n *\n * \\param mutex the mutex to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateMutex\n * \\sa SDL_LockMutex\n * \\sa SDL_TryLockMutex\n * \\sa SDL_UnlockMutex\n */\nextern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex);\n\n/* @} *//* Mutex functions */\n\n\n/**\n *  \\name Semaphore functions\n */\n/* @{ */\n\n/* The SDL semaphore structure, defined in SDL_syssem.c */\nstruct SDL_semaphore;\ntypedef struct SDL_semaphore SDL_sem;\n\n/**\n * Create a semaphore.\n *\n * This function creates a new semaphore and initializes it with the value\n * `initial_value`. Each wait operation on the semaphore will atomically\n * decrement the semaphore value and potentially block if the semaphore value\n * is 0. Each post operation will atomically increment the semaphore value and\n * wake waiting threads and allow them to retry the wait operation.\n *\n * \\param initial_value the starting value of the semaphore\n * \\returns a new semaphore or NULL on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DestroySemaphore\n * \\sa SDL_SemPost\n * \\sa SDL_SemTryWait\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n * \\sa SDL_SemWaitTimeout\n */\nextern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value);\n\n/**\n * Destroy a semaphore.\n *\n * It is not safe to destroy a semaphore if there are threads currently\n * waiting on it.\n *\n * \\param sem the semaphore to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n * \\sa SDL_SemPost\n * \\sa SDL_SemTryWait\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n * \\sa SDL_SemWaitTimeout\n */\nextern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem);\n\n/**\n * Wait until a semaphore has a positive value and then decrements it.\n *\n * This function suspends the calling thread until either the semaphore\n * pointed to by `sem` has a positive value or the call is interrupted by a\n * signal or error. If the call is successful it will atomically decrement the\n * semaphore value.\n *\n * This function is the equivalent of calling SDL_SemWaitTimeout() with a time\n * length of `SDL_MUTEX_MAXWAIT`.\n *\n * \\param sem the semaphore wait on\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n * \\sa SDL_DestroySemaphore\n * \\sa SDL_SemPost\n * \\sa SDL_SemTryWait\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n * \\sa SDL_SemWaitTimeout\n */\nextern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem);\n\n/**\n * See if a semaphore has a positive value and decrement it if it does.\n *\n * This function checks to see if the semaphore pointed to by `sem` has a\n * positive value and atomically decrements the semaphore value if it does. If\n * the semaphore doesn't have a positive value, the function immediately\n * returns SDL_MUTEX_TIMEDOUT.\n *\n * \\param sem the semaphore to wait on\n * \\returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would\n *          block, or a negative error code on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n * \\sa SDL_DestroySemaphore\n * \\sa SDL_SemPost\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n * \\sa SDL_SemWaitTimeout\n */\nextern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem);\n\n/**\n * Wait until a semaphore has a positive value and then decrements it.\n *\n * This function suspends the calling thread until either the semaphore\n * pointed to by `sem` has a positive value, the call is interrupted by a\n * signal or error, or the specified time has elapsed. If the call is\n * successful it will atomically decrement the semaphore value.\n *\n * \\param sem the semaphore to wait on\n * \\param timeout the length of the timeout, in milliseconds\n * \\returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not\n *          succeed in the allotted time, or a negative error code on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n * \\sa SDL_DestroySemaphore\n * \\sa SDL_SemPost\n * \\sa SDL_SemTryWait\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n */\nextern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout);\n\n/**\n * Atomically increment a semaphore's value and wake waiting threads.\n *\n * \\param sem the semaphore to increment\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n * \\sa SDL_DestroySemaphore\n * \\sa SDL_SemTryWait\n * \\sa SDL_SemValue\n * \\sa SDL_SemWait\n * \\sa SDL_SemWaitTimeout\n */\nextern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem);\n\n/**\n * Get the current value of a semaphore.\n *\n * \\param sem the semaphore to query\n * \\returns the current value of the semaphore.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSemaphore\n */\nextern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem);\n\n/* @} *//* Semaphore functions */\n\n\n/**\n *  \\name Condition variable functions\n */\n/* @{ */\n\n/* The SDL condition variable structure, defined in SDL_syscond.c */\nstruct SDL_cond;\ntypedef struct SDL_cond SDL_cond;\n\n/**\n * Create a condition variable.\n *\n * \\returns a new condition variable or NULL on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondBroadcast\n * \\sa SDL_CondSignal\n * \\sa SDL_CondWait\n * \\sa SDL_CondWaitTimeout\n * \\sa SDL_DestroyCond\n */\nextern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void);\n\n/**\n * Destroy a condition variable.\n *\n * \\param cond the condition variable to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondBroadcast\n * \\sa SDL_CondSignal\n * \\sa SDL_CondWait\n * \\sa SDL_CondWaitTimeout\n * \\sa SDL_CreateCond\n */\nextern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond);\n\n/**\n * Restart one of the threads that are waiting on the condition variable.\n *\n * \\param cond the condition variable to signal\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondBroadcast\n * \\sa SDL_CondWait\n * \\sa SDL_CondWaitTimeout\n * \\sa SDL_CreateCond\n * \\sa SDL_DestroyCond\n */\nextern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond);\n\n/**\n * Restart all threads that are waiting on the condition variable.\n *\n * \\param cond the condition variable to signal\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondSignal\n * \\sa SDL_CondWait\n * \\sa SDL_CondWaitTimeout\n * \\sa SDL_CreateCond\n * \\sa SDL_DestroyCond\n */\nextern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond);\n\n/**\n * Wait until a condition variable is signaled.\n *\n * This function unlocks the specified `mutex` and waits for another thread to\n * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable\n * `cond`. Once the condition variable is signaled, the mutex is re-locked and\n * the function returns.\n *\n * The mutex must be locked before calling this function.\n *\n * This function is the equivalent of calling SDL_CondWaitTimeout() with a\n * time length of `SDL_MUTEX_MAXWAIT`.\n *\n * \\param cond the condition variable to wait on\n * \\param mutex the mutex used to coordinate thread access\n * \\returns 0 when it is signaled or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondBroadcast\n * \\sa SDL_CondSignal\n * \\sa SDL_CondWaitTimeout\n * \\sa SDL_CreateCond\n * \\sa SDL_DestroyCond\n */\nextern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex);\n\n/**\n * Wait until a condition variable is signaled or a certain time has passed.\n *\n * This function unlocks the specified `mutex` and waits for another thread to\n * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable\n * `cond`, or for the specified time to elapse. Once the condition variable is\n * signaled or the time elapsed, the mutex is re-locked and the function\n * returns.\n *\n * The mutex must be locked before calling this function.\n *\n * \\param cond the condition variable to wait on\n * \\param mutex the mutex used to coordinate thread access\n * \\param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT`\n *           to wait indefinitely\n * \\returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if\n *          the condition is not signaled in the allotted time, or a negative\n *          error code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CondBroadcast\n * \\sa SDL_CondSignal\n * \\sa SDL_CondWait\n * \\sa SDL_CreateCond\n * \\sa SDL_DestroyCond\n */\nextern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond,\n                                                SDL_mutex * mutex, Uint32 ms);\n\n/* @} *//* Condition variable functions */\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_mutex_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_name.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDLname_h_\n#define SDLname_h_\n\n#if defined(__STDC__) || defined(__cplusplus)\n#define NeedFunctionPrototypes 1\n#endif\n\n#define SDL_NAME(X) SDL_##X\n\n#endif /* SDLname_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengl.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_opengl.h\n *\n *  This is a simple file to encapsulate the OpenGL API headers.\n */\n\n/**\n *  \\def NO_SDL_GLEXT\n *\n *  Define this if you have your own version of glext.h and want to disable the\n *  version included in SDL_opengl.h.\n */\n\n#ifndef SDL_opengl_h_\n#define SDL_opengl_h_\n\n#include \"SDL_config.h\"\n\n#ifndef __IPHONEOS__  /* No OpenGL on iOS. */\n\n/*\n * Mesa 3-D graphics library\n *\n * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.\n * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL\n * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR\n * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\n * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n * OTHER DEALINGS IN THE SOFTWARE.\n */\n\n\n#ifndef __gl_h_\n#define __gl_h_\n\n#if defined(USE_MGL_NAMESPACE)\n#include \"gl_mangle.h\"\n#endif\n\n\n/**********************************************************************\n * Begin system-specific stuff.\n */\n\n#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__)\n#define __WIN32__\n#endif\n\n#if defined(__WIN32__) && !defined(__CYGWIN__)\n#  if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */\n#    define GLAPI __declspec(dllexport)\n#  elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */\n#    define GLAPI __declspec(dllimport)\n#  else /* for use with static link lib build of Win32 edition only */\n#    define GLAPI extern\n#  endif /* _STATIC_MESA support */\n#  if defined(__MINGW32__) && defined(GL_NO_STDCALL) || defined(UNDER_CE)  /* The generated DLLs by MingW with STDCALL are not compatible with the ones done by Microsoft's compilers */\n#    define GLAPIENTRY \n#  else\n#    define GLAPIENTRY __stdcall\n#  endif\n#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */\n#  define GLAPI extern\n#  define GLAPIENTRY __stdcall\n#elif defined(__OS2__) || defined(__EMX__) /* native os/2 opengl */\n#  define GLAPI extern\n#  define GLAPIENTRY _System\n#  define APIENTRY _System\n#  if defined(__GNUC__) && !defined(_System)\n#    define _System\n#  endif\n#elif (defined(__GNUC__) && __GNUC__ >= 4) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))\n#  define GLAPI __attribute__((visibility(\"default\")))\n#  define GLAPIENTRY\n#endif /* WIN32 && !CYGWIN */\n\n/*\n * WINDOWS: Include windows.h here to define APIENTRY.\n * It is also useful when applications include this file by\n * including only glut.h, since glut.h depends on windows.h.\n * Applications needing to include windows.h with parms other\n * than \"WIN32_LEAN_AND_MEAN\" may include windows.h before\n * glut.h or gl.h.\n */\n#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__)\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN 1\n#endif\n#ifndef NOMINMAX   /* don't define min() and max(). */\n#define NOMINMAX\n#endif\n#include <windows.h>\n#endif\n\n#ifndef GLAPI\n#define GLAPI extern\n#endif\n\n#ifndef GLAPIENTRY\n#define GLAPIENTRY\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY GLAPIENTRY\n#endif\n\n/* \"P\" suffix to be used for a pointer to a function */\n#ifndef APIENTRYP\n#define APIENTRYP APIENTRY *\n#endif\n\n#ifndef GLAPIENTRYP\n#define GLAPIENTRYP GLAPIENTRY *\n#endif\n\n#if defined(PRAGMA_EXPORT_SUPPORTED)\n#pragma export on\n#endif\n\n/*\n * End system-specific stuff.\n **********************************************************************/\n\n\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n\n#define GL_VERSION_1_1   1\n#define GL_VERSION_1_2   1\n#define GL_VERSION_1_3   1\n#define GL_ARB_imaging   1\n\n\n/*\n * Datatypes\n */\ntypedef unsigned int\tGLenum;\ntypedef unsigned char\tGLboolean;\ntypedef unsigned int\tGLbitfield;\ntypedef void\t\tGLvoid;\ntypedef signed char\tGLbyte;\t\t/* 1-byte signed */\ntypedef short\t\tGLshort;\t/* 2-byte signed */\ntypedef int\t\tGLint;\t\t/* 4-byte signed */\ntypedef unsigned char\tGLubyte;\t/* 1-byte unsigned */\ntypedef unsigned short\tGLushort;\t/* 2-byte unsigned */\ntypedef unsigned int\tGLuint;\t\t/* 4-byte unsigned */\ntypedef int\t\tGLsizei;\t/* 4-byte signed */\ntypedef float\t\tGLfloat;\t/* single precision float */\ntypedef float\t\tGLclampf;\t/* single precision float in [0,1] */\ntypedef double\t\tGLdouble;\t/* double precision float */\ntypedef double\t\tGLclampd;\t/* double precision float in [0,1] */\n\n\n\n/*\n * Constants\n */\n\n/* Boolean values */\n#define GL_FALSE\t\t\t\t0\n#define GL_TRUE\t\t\t\t\t1\n\n/* Data types */\n#define GL_BYTE\t\t\t\t\t0x1400\n#define GL_UNSIGNED_BYTE\t\t\t0x1401\n#define GL_SHORT\t\t\t\t0x1402\n#define GL_UNSIGNED_SHORT\t\t\t0x1403\n#define GL_INT\t\t\t\t\t0x1404\n#define GL_UNSIGNED_INT\t\t\t\t0x1405\n#define GL_FLOAT\t\t\t\t0x1406\n#define GL_2_BYTES\t\t\t\t0x1407\n#define GL_3_BYTES\t\t\t\t0x1408\n#define GL_4_BYTES\t\t\t\t0x1409\n#define GL_DOUBLE\t\t\t\t0x140A\n\n/* Primitives */\n#define GL_POINTS\t\t\t\t0x0000\n#define GL_LINES\t\t\t\t0x0001\n#define GL_LINE_LOOP\t\t\t\t0x0002\n#define GL_LINE_STRIP\t\t\t\t0x0003\n#define GL_TRIANGLES\t\t\t\t0x0004\n#define GL_TRIANGLE_STRIP\t\t\t0x0005\n#define GL_TRIANGLE_FAN\t\t\t\t0x0006\n#define GL_QUADS\t\t\t\t0x0007\n#define GL_QUAD_STRIP\t\t\t\t0x0008\n#define GL_POLYGON\t\t\t\t0x0009\n\n/* Vertex Arrays */\n#define GL_VERTEX_ARRAY\t\t\t\t0x8074\n#define GL_NORMAL_ARRAY\t\t\t\t0x8075\n#define GL_COLOR_ARRAY\t\t\t\t0x8076\n#define GL_INDEX_ARRAY\t\t\t\t0x8077\n#define GL_TEXTURE_COORD_ARRAY\t\t\t0x8078\n#define GL_EDGE_FLAG_ARRAY\t\t\t0x8079\n#define GL_VERTEX_ARRAY_SIZE\t\t\t0x807A\n#define GL_VERTEX_ARRAY_TYPE\t\t\t0x807B\n#define GL_VERTEX_ARRAY_STRIDE\t\t\t0x807C\n#define GL_NORMAL_ARRAY_TYPE\t\t\t0x807E\n#define GL_NORMAL_ARRAY_STRIDE\t\t\t0x807F\n#define GL_COLOR_ARRAY_SIZE\t\t\t0x8081\n#define GL_COLOR_ARRAY_TYPE\t\t\t0x8082\n#define GL_COLOR_ARRAY_STRIDE\t\t\t0x8083\n#define GL_INDEX_ARRAY_TYPE\t\t\t0x8085\n#define GL_INDEX_ARRAY_STRIDE\t\t\t0x8086\n#define GL_TEXTURE_COORD_ARRAY_SIZE\t\t0x8088\n#define GL_TEXTURE_COORD_ARRAY_TYPE\t\t0x8089\n#define GL_TEXTURE_COORD_ARRAY_STRIDE\t\t0x808A\n#define GL_EDGE_FLAG_ARRAY_STRIDE\t\t0x808C\n#define GL_VERTEX_ARRAY_POINTER\t\t\t0x808E\n#define GL_NORMAL_ARRAY_POINTER\t\t\t0x808F\n#define GL_COLOR_ARRAY_POINTER\t\t\t0x8090\n#define GL_INDEX_ARRAY_POINTER\t\t\t0x8091\n#define GL_TEXTURE_COORD_ARRAY_POINTER\t\t0x8092\n#define GL_EDGE_FLAG_ARRAY_POINTER\t\t0x8093\n#define GL_V2F\t\t\t\t\t0x2A20\n#define GL_V3F\t\t\t\t\t0x2A21\n#define GL_C4UB_V2F\t\t\t\t0x2A22\n#define GL_C4UB_V3F\t\t\t\t0x2A23\n#define GL_C3F_V3F\t\t\t\t0x2A24\n#define GL_N3F_V3F\t\t\t\t0x2A25\n#define GL_C4F_N3F_V3F\t\t\t\t0x2A26\n#define GL_T2F_V3F\t\t\t\t0x2A27\n#define GL_T4F_V4F\t\t\t\t0x2A28\n#define GL_T2F_C4UB_V3F\t\t\t\t0x2A29\n#define GL_T2F_C3F_V3F\t\t\t\t0x2A2A\n#define GL_T2F_N3F_V3F\t\t\t\t0x2A2B\n#define GL_T2F_C4F_N3F_V3F\t\t\t0x2A2C\n#define GL_T4F_C4F_N3F_V4F\t\t\t0x2A2D\n\n/* Matrix Mode */\n#define GL_MATRIX_MODE\t\t\t\t0x0BA0\n#define GL_MODELVIEW\t\t\t\t0x1700\n#define GL_PROJECTION\t\t\t\t0x1701\n#define GL_TEXTURE\t\t\t\t0x1702\n\n/* Points */\n#define GL_POINT_SMOOTH\t\t\t\t0x0B10\n#define GL_POINT_SIZE\t\t\t\t0x0B11\n#define GL_POINT_SIZE_GRANULARITY \t\t0x0B13\n#define GL_POINT_SIZE_RANGE\t\t\t0x0B12\n\n/* Lines */\n#define GL_LINE_SMOOTH\t\t\t\t0x0B20\n#define GL_LINE_STIPPLE\t\t\t\t0x0B24\n#define GL_LINE_STIPPLE_PATTERN\t\t\t0x0B25\n#define GL_LINE_STIPPLE_REPEAT\t\t\t0x0B26\n#define GL_LINE_WIDTH\t\t\t\t0x0B21\n#define GL_LINE_WIDTH_GRANULARITY\t\t0x0B23\n#define GL_LINE_WIDTH_RANGE\t\t\t0x0B22\n\n/* Polygons */\n#define GL_POINT\t\t\t\t0x1B00\n#define GL_LINE\t\t\t\t\t0x1B01\n#define GL_FILL\t\t\t\t\t0x1B02\n#define GL_CW\t\t\t\t\t0x0900\n#define GL_CCW\t\t\t\t\t0x0901\n#define GL_FRONT\t\t\t\t0x0404\n#define GL_BACK\t\t\t\t\t0x0405\n#define GL_POLYGON_MODE\t\t\t\t0x0B40\n#define GL_POLYGON_SMOOTH\t\t\t0x0B41\n#define GL_POLYGON_STIPPLE\t\t\t0x0B42\n#define GL_EDGE_FLAG\t\t\t\t0x0B43\n#define GL_CULL_FACE\t\t\t\t0x0B44\n#define GL_CULL_FACE_MODE\t\t\t0x0B45\n#define GL_FRONT_FACE\t\t\t\t0x0B46\n#define GL_POLYGON_OFFSET_FACTOR\t\t0x8038\n#define GL_POLYGON_OFFSET_UNITS\t\t\t0x2A00\n#define GL_POLYGON_OFFSET_POINT\t\t\t0x2A01\n#define GL_POLYGON_OFFSET_LINE\t\t\t0x2A02\n#define GL_POLYGON_OFFSET_FILL\t\t\t0x8037\n\n/* Display Lists */\n#define GL_COMPILE\t\t\t\t0x1300\n#define GL_COMPILE_AND_EXECUTE\t\t\t0x1301\n#define GL_LIST_BASE\t\t\t\t0x0B32\n#define GL_LIST_INDEX\t\t\t\t0x0B33\n#define GL_LIST_MODE\t\t\t\t0x0B30\n\n/* Depth buffer */\n#define GL_NEVER\t\t\t\t0x0200\n#define GL_LESS\t\t\t\t\t0x0201\n#define GL_EQUAL\t\t\t\t0x0202\n#define GL_LEQUAL\t\t\t\t0x0203\n#define GL_GREATER\t\t\t\t0x0204\n#define GL_NOTEQUAL\t\t\t\t0x0205\n#define GL_GEQUAL\t\t\t\t0x0206\n#define GL_ALWAYS\t\t\t\t0x0207\n#define GL_DEPTH_TEST\t\t\t\t0x0B71\n#define GL_DEPTH_BITS\t\t\t\t0x0D56\n#define GL_DEPTH_CLEAR_VALUE\t\t\t0x0B73\n#define GL_DEPTH_FUNC\t\t\t\t0x0B74\n#define GL_DEPTH_RANGE\t\t\t\t0x0B70\n#define GL_DEPTH_WRITEMASK\t\t\t0x0B72\n#define GL_DEPTH_COMPONENT\t\t\t0x1902\n\n/* Lighting */\n#define GL_LIGHTING\t\t\t\t0x0B50\n#define GL_LIGHT0\t\t\t\t0x4000\n#define GL_LIGHT1\t\t\t\t0x4001\n#define GL_LIGHT2\t\t\t\t0x4002\n#define GL_LIGHT3\t\t\t\t0x4003\n#define GL_LIGHT4\t\t\t\t0x4004\n#define GL_LIGHT5\t\t\t\t0x4005\n#define GL_LIGHT6\t\t\t\t0x4006\n#define GL_LIGHT7\t\t\t\t0x4007\n#define GL_SPOT_EXPONENT\t\t\t0x1205\n#define GL_SPOT_CUTOFF\t\t\t\t0x1206\n#define GL_CONSTANT_ATTENUATION\t\t\t0x1207\n#define GL_LINEAR_ATTENUATION\t\t\t0x1208\n#define GL_QUADRATIC_ATTENUATION\t\t0x1209\n#define GL_AMBIENT\t\t\t\t0x1200\n#define GL_DIFFUSE\t\t\t\t0x1201\n#define GL_SPECULAR\t\t\t\t0x1202\n#define GL_SHININESS\t\t\t\t0x1601\n#define GL_EMISSION\t\t\t\t0x1600\n#define GL_POSITION\t\t\t\t0x1203\n#define GL_SPOT_DIRECTION\t\t\t0x1204\n#define GL_AMBIENT_AND_DIFFUSE\t\t\t0x1602\n#define GL_COLOR_INDEXES\t\t\t0x1603\n#define GL_LIGHT_MODEL_TWO_SIDE\t\t\t0x0B52\n#define GL_LIGHT_MODEL_LOCAL_VIEWER\t\t0x0B51\n#define GL_LIGHT_MODEL_AMBIENT\t\t\t0x0B53\n#define GL_FRONT_AND_BACK\t\t\t0x0408\n#define GL_SHADE_MODEL\t\t\t\t0x0B54\n#define GL_FLAT\t\t\t\t\t0x1D00\n#define GL_SMOOTH\t\t\t\t0x1D01\n#define GL_COLOR_MATERIAL\t\t\t0x0B57\n#define GL_COLOR_MATERIAL_FACE\t\t\t0x0B55\n#define GL_COLOR_MATERIAL_PARAMETER\t\t0x0B56\n#define GL_NORMALIZE\t\t\t\t0x0BA1\n\n/* User clipping planes */\n#define GL_CLIP_PLANE0\t\t\t\t0x3000\n#define GL_CLIP_PLANE1\t\t\t\t0x3001\n#define GL_CLIP_PLANE2\t\t\t\t0x3002\n#define GL_CLIP_PLANE3\t\t\t\t0x3003\n#define GL_CLIP_PLANE4\t\t\t\t0x3004\n#define GL_CLIP_PLANE5\t\t\t\t0x3005\n\n/* Accumulation buffer */\n#define GL_ACCUM_RED_BITS\t\t\t0x0D58\n#define GL_ACCUM_GREEN_BITS\t\t\t0x0D59\n#define GL_ACCUM_BLUE_BITS\t\t\t0x0D5A\n#define GL_ACCUM_ALPHA_BITS\t\t\t0x0D5B\n#define GL_ACCUM_CLEAR_VALUE\t\t\t0x0B80\n#define GL_ACCUM\t\t\t\t0x0100\n#define GL_ADD\t\t\t\t\t0x0104\n#define GL_LOAD\t\t\t\t\t0x0101\n#define GL_MULT\t\t\t\t\t0x0103\n#define GL_RETURN\t\t\t\t0x0102\n\n/* Alpha testing */\n#define GL_ALPHA_TEST\t\t\t\t0x0BC0\n#define GL_ALPHA_TEST_REF\t\t\t0x0BC2\n#define GL_ALPHA_TEST_FUNC\t\t\t0x0BC1\n\n/* Blending */\n#define GL_BLEND\t\t\t\t0x0BE2\n#define GL_BLEND_SRC\t\t\t\t0x0BE1\n#define GL_BLEND_DST\t\t\t\t0x0BE0\n#define GL_ZERO\t\t\t\t\t0\n#define GL_ONE\t\t\t\t\t1\n#define GL_SRC_COLOR\t\t\t\t0x0300\n#define GL_ONE_MINUS_SRC_COLOR\t\t\t0x0301\n#define GL_SRC_ALPHA\t\t\t\t0x0302\n#define GL_ONE_MINUS_SRC_ALPHA\t\t\t0x0303\n#define GL_DST_ALPHA\t\t\t\t0x0304\n#define GL_ONE_MINUS_DST_ALPHA\t\t\t0x0305\n#define GL_DST_COLOR\t\t\t\t0x0306\n#define GL_ONE_MINUS_DST_COLOR\t\t\t0x0307\n#define GL_SRC_ALPHA_SATURATE\t\t\t0x0308\n\n/* Render Mode */\n#define GL_FEEDBACK\t\t\t\t0x1C01\n#define GL_RENDER\t\t\t\t0x1C00\n#define GL_SELECT\t\t\t\t0x1C02\n\n/* Feedback */\n#define GL_2D\t\t\t\t\t0x0600\n#define GL_3D\t\t\t\t\t0x0601\n#define GL_3D_COLOR\t\t\t\t0x0602\n#define GL_3D_COLOR_TEXTURE\t\t\t0x0603\n#define GL_4D_COLOR_TEXTURE\t\t\t0x0604\n#define GL_POINT_TOKEN\t\t\t\t0x0701\n#define GL_LINE_TOKEN\t\t\t\t0x0702\n#define GL_LINE_RESET_TOKEN\t\t\t0x0707\n#define GL_POLYGON_TOKEN\t\t\t0x0703\n#define GL_BITMAP_TOKEN\t\t\t\t0x0704\n#define GL_DRAW_PIXEL_TOKEN\t\t\t0x0705\n#define GL_COPY_PIXEL_TOKEN\t\t\t0x0706\n#define GL_PASS_THROUGH_TOKEN\t\t\t0x0700\n#define GL_FEEDBACK_BUFFER_POINTER\t\t0x0DF0\n#define GL_FEEDBACK_BUFFER_SIZE\t\t\t0x0DF1\n#define GL_FEEDBACK_BUFFER_TYPE\t\t\t0x0DF2\n\n/* Selection */\n#define GL_SELECTION_BUFFER_POINTER\t\t0x0DF3\n#define GL_SELECTION_BUFFER_SIZE\t\t0x0DF4\n\n/* Fog */\n#define GL_FOG\t\t\t\t\t0x0B60\n#define GL_FOG_MODE\t\t\t\t0x0B65\n#define GL_FOG_DENSITY\t\t\t\t0x0B62\n#define GL_FOG_COLOR\t\t\t\t0x0B66\n#define GL_FOG_INDEX\t\t\t\t0x0B61\n#define GL_FOG_START\t\t\t\t0x0B63\n#define GL_FOG_END\t\t\t\t0x0B64\n#define GL_LINEAR\t\t\t\t0x2601\n#define GL_EXP\t\t\t\t\t0x0800\n#define GL_EXP2\t\t\t\t\t0x0801\n\n/* Logic Ops */\n#define GL_LOGIC_OP\t\t\t\t0x0BF1\n#define GL_INDEX_LOGIC_OP\t\t\t0x0BF1\n#define GL_COLOR_LOGIC_OP\t\t\t0x0BF2\n#define GL_LOGIC_OP_MODE\t\t\t0x0BF0\n#define GL_CLEAR\t\t\t\t0x1500\n#define GL_SET\t\t\t\t\t0x150F\n#define GL_COPY\t\t\t\t\t0x1503\n#define GL_COPY_INVERTED\t\t\t0x150C\n#define GL_NOOP\t\t\t\t\t0x1505\n#define GL_INVERT\t\t\t\t0x150A\n#define GL_AND\t\t\t\t\t0x1501\n#define GL_NAND\t\t\t\t\t0x150E\n#define GL_OR\t\t\t\t\t0x1507\n#define GL_NOR\t\t\t\t\t0x1508\n#define GL_XOR\t\t\t\t\t0x1506\n#define GL_EQUIV\t\t\t\t0x1509\n#define GL_AND_REVERSE\t\t\t\t0x1502\n#define GL_AND_INVERTED\t\t\t\t0x1504\n#define GL_OR_REVERSE\t\t\t\t0x150B\n#define GL_OR_INVERTED\t\t\t\t0x150D\n\n/* Stencil */\n#define GL_STENCIL_BITS\t\t\t\t0x0D57\n#define GL_STENCIL_TEST\t\t\t\t0x0B90\n#define GL_STENCIL_CLEAR_VALUE\t\t\t0x0B91\n#define GL_STENCIL_FUNC\t\t\t\t0x0B92\n#define GL_STENCIL_VALUE_MASK\t\t\t0x0B93\n#define GL_STENCIL_FAIL\t\t\t\t0x0B94\n#define GL_STENCIL_PASS_DEPTH_FAIL\t\t0x0B95\n#define GL_STENCIL_PASS_DEPTH_PASS\t\t0x0B96\n#define GL_STENCIL_REF\t\t\t\t0x0B97\n#define GL_STENCIL_WRITEMASK\t\t\t0x0B98\n#define GL_STENCIL_INDEX\t\t\t0x1901\n#define GL_KEEP\t\t\t\t\t0x1E00\n#define GL_REPLACE\t\t\t\t0x1E01\n#define GL_INCR\t\t\t\t\t0x1E02\n#define GL_DECR\t\t\t\t\t0x1E03\n\n/* Buffers, Pixel Drawing/Reading */\n#define GL_NONE\t\t\t\t\t0\n#define GL_LEFT\t\t\t\t\t0x0406\n#define GL_RIGHT\t\t\t\t0x0407\n/*GL_FRONT\t\t\t\t\t0x0404 */\n/*GL_BACK\t\t\t\t\t0x0405 */\n/*GL_FRONT_AND_BACK\t\t\t\t0x0408 */\n#define GL_FRONT_LEFT\t\t\t\t0x0400\n#define GL_FRONT_RIGHT\t\t\t\t0x0401\n#define GL_BACK_LEFT\t\t\t\t0x0402\n#define GL_BACK_RIGHT\t\t\t\t0x0403\n#define GL_AUX0\t\t\t\t\t0x0409\n#define GL_AUX1\t\t\t\t\t0x040A\n#define GL_AUX2\t\t\t\t\t0x040B\n#define GL_AUX3\t\t\t\t\t0x040C\n#define GL_COLOR_INDEX\t\t\t\t0x1900\n#define GL_RED\t\t\t\t\t0x1903\n#define GL_GREEN\t\t\t\t0x1904\n#define GL_BLUE\t\t\t\t\t0x1905\n#define GL_ALPHA\t\t\t\t0x1906\n#define GL_LUMINANCE\t\t\t\t0x1909\n#define GL_LUMINANCE_ALPHA\t\t\t0x190A\n#define GL_ALPHA_BITS\t\t\t\t0x0D55\n#define GL_RED_BITS\t\t\t\t0x0D52\n#define GL_GREEN_BITS\t\t\t\t0x0D53\n#define GL_BLUE_BITS\t\t\t\t0x0D54\n#define GL_INDEX_BITS\t\t\t\t0x0D51\n#define GL_SUBPIXEL_BITS\t\t\t0x0D50\n#define GL_AUX_BUFFERS\t\t\t\t0x0C00\n#define GL_READ_BUFFER\t\t\t\t0x0C02\n#define GL_DRAW_BUFFER\t\t\t\t0x0C01\n#define GL_DOUBLEBUFFER\t\t\t\t0x0C32\n#define GL_STEREO\t\t\t\t0x0C33\n#define GL_BITMAP\t\t\t\t0x1A00\n#define GL_COLOR\t\t\t\t0x1800\n#define GL_DEPTH\t\t\t\t0x1801\n#define GL_STENCIL\t\t\t\t0x1802\n#define GL_DITHER\t\t\t\t0x0BD0\n#define GL_RGB\t\t\t\t\t0x1907\n#define GL_RGBA\t\t\t\t\t0x1908\n\n/* Implementation limits */\n#define GL_MAX_LIST_NESTING\t\t\t0x0B31\n#define GL_MAX_EVAL_ORDER\t\t\t0x0D30\n#define GL_MAX_LIGHTS\t\t\t\t0x0D31\n#define GL_MAX_CLIP_PLANES\t\t\t0x0D32\n#define GL_MAX_TEXTURE_SIZE\t\t\t0x0D33\n#define GL_MAX_PIXEL_MAP_TABLE\t\t\t0x0D34\n#define GL_MAX_ATTRIB_STACK_DEPTH\t\t0x0D35\n#define GL_MAX_MODELVIEW_STACK_DEPTH\t\t0x0D36\n#define GL_MAX_NAME_STACK_DEPTH\t\t\t0x0D37\n#define GL_MAX_PROJECTION_STACK_DEPTH\t\t0x0D38\n#define GL_MAX_TEXTURE_STACK_DEPTH\t\t0x0D39\n#define GL_MAX_VIEWPORT_DIMS\t\t\t0x0D3A\n#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\t0x0D3B\n\n/* Gets */\n#define GL_ATTRIB_STACK_DEPTH\t\t\t0x0BB0\n#define GL_CLIENT_ATTRIB_STACK_DEPTH\t\t0x0BB1\n#define GL_COLOR_CLEAR_VALUE\t\t\t0x0C22\n#define GL_COLOR_WRITEMASK\t\t\t0x0C23\n#define GL_CURRENT_INDEX\t\t\t0x0B01\n#define GL_CURRENT_COLOR\t\t\t0x0B00\n#define GL_CURRENT_NORMAL\t\t\t0x0B02\n#define GL_CURRENT_RASTER_COLOR\t\t\t0x0B04\n#define GL_CURRENT_RASTER_DISTANCE\t\t0x0B09\n#define GL_CURRENT_RASTER_INDEX\t\t\t0x0B05\n#define GL_CURRENT_RASTER_POSITION\t\t0x0B07\n#define GL_CURRENT_RASTER_TEXTURE_COORDS\t0x0B06\n#define GL_CURRENT_RASTER_POSITION_VALID\t0x0B08\n#define GL_CURRENT_TEXTURE_COORDS\t\t0x0B03\n#define GL_INDEX_CLEAR_VALUE\t\t\t0x0C20\n#define GL_INDEX_MODE\t\t\t\t0x0C30\n#define GL_INDEX_WRITEMASK\t\t\t0x0C21\n#define GL_MODELVIEW_MATRIX\t\t\t0x0BA6\n#define GL_MODELVIEW_STACK_DEPTH\t\t0x0BA3\n#define GL_NAME_STACK_DEPTH\t\t\t0x0D70\n#define GL_PROJECTION_MATRIX\t\t\t0x0BA7\n#define GL_PROJECTION_STACK_DEPTH\t\t0x0BA4\n#define GL_RENDER_MODE\t\t\t\t0x0C40\n#define GL_RGBA_MODE\t\t\t\t0x0C31\n#define GL_TEXTURE_MATRIX\t\t\t0x0BA8\n#define GL_TEXTURE_STACK_DEPTH\t\t\t0x0BA5\n#define GL_VIEWPORT\t\t\t\t0x0BA2\n\n/* Evaluators */\n#define GL_AUTO_NORMAL\t\t\t\t0x0D80\n#define GL_MAP1_COLOR_4\t\t\t\t0x0D90\n#define GL_MAP1_INDEX\t\t\t\t0x0D91\n#define GL_MAP1_NORMAL\t\t\t\t0x0D92\n#define GL_MAP1_TEXTURE_COORD_1\t\t\t0x0D93\n#define GL_MAP1_TEXTURE_COORD_2\t\t\t0x0D94\n#define GL_MAP1_TEXTURE_COORD_3\t\t\t0x0D95\n#define GL_MAP1_TEXTURE_COORD_4\t\t\t0x0D96\n#define GL_MAP1_VERTEX_3\t\t\t0x0D97\n#define GL_MAP1_VERTEX_4\t\t\t0x0D98\n#define GL_MAP2_COLOR_4\t\t\t\t0x0DB0\n#define GL_MAP2_INDEX\t\t\t\t0x0DB1\n#define GL_MAP2_NORMAL\t\t\t\t0x0DB2\n#define GL_MAP2_TEXTURE_COORD_1\t\t\t0x0DB3\n#define GL_MAP2_TEXTURE_COORD_2\t\t\t0x0DB4\n#define GL_MAP2_TEXTURE_COORD_3\t\t\t0x0DB5\n#define GL_MAP2_TEXTURE_COORD_4\t\t\t0x0DB6\n#define GL_MAP2_VERTEX_3\t\t\t0x0DB7\n#define GL_MAP2_VERTEX_4\t\t\t0x0DB8\n#define GL_MAP1_GRID_DOMAIN\t\t\t0x0DD0\n#define GL_MAP1_GRID_SEGMENTS\t\t\t0x0DD1\n#define GL_MAP2_GRID_DOMAIN\t\t\t0x0DD2\n#define GL_MAP2_GRID_SEGMENTS\t\t\t0x0DD3\n#define GL_COEFF\t\t\t\t0x0A00\n#define GL_ORDER\t\t\t\t0x0A01\n#define GL_DOMAIN\t\t\t\t0x0A02\n\n/* Hints */\n#define GL_PERSPECTIVE_CORRECTION_HINT\t\t0x0C50\n#define GL_POINT_SMOOTH_HINT\t\t\t0x0C51\n#define GL_LINE_SMOOTH_HINT\t\t\t0x0C52\n#define GL_POLYGON_SMOOTH_HINT\t\t\t0x0C53\n#define GL_FOG_HINT\t\t\t\t0x0C54\n#define GL_DONT_CARE\t\t\t\t0x1100\n#define GL_FASTEST\t\t\t\t0x1101\n#define GL_NICEST\t\t\t\t0x1102\n\n/* Scissor box */\n#define GL_SCISSOR_BOX\t\t\t\t0x0C10\n#define GL_SCISSOR_TEST\t\t\t\t0x0C11\n\n/* Pixel Mode / Transfer */\n#define GL_MAP_COLOR\t\t\t\t0x0D10\n#define GL_MAP_STENCIL\t\t\t\t0x0D11\n#define GL_INDEX_SHIFT\t\t\t\t0x0D12\n#define GL_INDEX_OFFSET\t\t\t\t0x0D13\n#define GL_RED_SCALE\t\t\t\t0x0D14\n#define GL_RED_BIAS\t\t\t\t0x0D15\n#define GL_GREEN_SCALE\t\t\t\t0x0D18\n#define GL_GREEN_BIAS\t\t\t\t0x0D19\n#define GL_BLUE_SCALE\t\t\t\t0x0D1A\n#define GL_BLUE_BIAS\t\t\t\t0x0D1B\n#define GL_ALPHA_SCALE\t\t\t\t0x0D1C\n#define GL_ALPHA_BIAS\t\t\t\t0x0D1D\n#define GL_DEPTH_SCALE\t\t\t\t0x0D1E\n#define GL_DEPTH_BIAS\t\t\t\t0x0D1F\n#define GL_PIXEL_MAP_S_TO_S_SIZE\t\t0x0CB1\n#define GL_PIXEL_MAP_I_TO_I_SIZE\t\t0x0CB0\n#define GL_PIXEL_MAP_I_TO_R_SIZE\t\t0x0CB2\n#define GL_PIXEL_MAP_I_TO_G_SIZE\t\t0x0CB3\n#define GL_PIXEL_MAP_I_TO_B_SIZE\t\t0x0CB4\n#define GL_PIXEL_MAP_I_TO_A_SIZE\t\t0x0CB5\n#define GL_PIXEL_MAP_R_TO_R_SIZE\t\t0x0CB6\n#define GL_PIXEL_MAP_G_TO_G_SIZE\t\t0x0CB7\n#define GL_PIXEL_MAP_B_TO_B_SIZE\t\t0x0CB8\n#define GL_PIXEL_MAP_A_TO_A_SIZE\t\t0x0CB9\n#define GL_PIXEL_MAP_S_TO_S\t\t\t0x0C71\n#define GL_PIXEL_MAP_I_TO_I\t\t\t0x0C70\n#define GL_PIXEL_MAP_I_TO_R\t\t\t0x0C72\n#define GL_PIXEL_MAP_I_TO_G\t\t\t0x0C73\n#define GL_PIXEL_MAP_I_TO_B\t\t\t0x0C74\n#define GL_PIXEL_MAP_I_TO_A\t\t\t0x0C75\n#define GL_PIXEL_MAP_R_TO_R\t\t\t0x0C76\n#define GL_PIXEL_MAP_G_TO_G\t\t\t0x0C77\n#define GL_PIXEL_MAP_B_TO_B\t\t\t0x0C78\n#define GL_PIXEL_MAP_A_TO_A\t\t\t0x0C79\n#define GL_PACK_ALIGNMENT\t\t\t0x0D05\n#define GL_PACK_LSB_FIRST\t\t\t0x0D01\n#define GL_PACK_ROW_LENGTH\t\t\t0x0D02\n#define GL_PACK_SKIP_PIXELS\t\t\t0x0D04\n#define GL_PACK_SKIP_ROWS\t\t\t0x0D03\n#define GL_PACK_SWAP_BYTES\t\t\t0x0D00\n#define GL_UNPACK_ALIGNMENT\t\t\t0x0CF5\n#define GL_UNPACK_LSB_FIRST\t\t\t0x0CF1\n#define GL_UNPACK_ROW_LENGTH\t\t\t0x0CF2\n#define GL_UNPACK_SKIP_PIXELS\t\t\t0x0CF4\n#define GL_UNPACK_SKIP_ROWS\t\t\t0x0CF3\n#define GL_UNPACK_SWAP_BYTES\t\t\t0x0CF0\n#define GL_ZOOM_X\t\t\t\t0x0D16\n#define GL_ZOOM_Y\t\t\t\t0x0D17\n\n/* Texture mapping */\n#define GL_TEXTURE_ENV\t\t\t\t0x2300\n#define GL_TEXTURE_ENV_MODE\t\t\t0x2200\n#define GL_TEXTURE_1D\t\t\t\t0x0DE0\n#define GL_TEXTURE_2D\t\t\t\t0x0DE1\n#define GL_TEXTURE_WRAP_S\t\t\t0x2802\n#define GL_TEXTURE_WRAP_T\t\t\t0x2803\n#define GL_TEXTURE_MAG_FILTER\t\t\t0x2800\n#define GL_TEXTURE_MIN_FILTER\t\t\t0x2801\n#define GL_TEXTURE_ENV_COLOR\t\t\t0x2201\n#define GL_TEXTURE_GEN_S\t\t\t0x0C60\n#define GL_TEXTURE_GEN_T\t\t\t0x0C61\n#define GL_TEXTURE_GEN_R\t\t\t0x0C62\n#define GL_TEXTURE_GEN_Q\t\t\t0x0C63\n#define GL_TEXTURE_GEN_MODE\t\t\t0x2500\n#define GL_TEXTURE_BORDER_COLOR\t\t\t0x1004\n#define GL_TEXTURE_WIDTH\t\t\t0x1000\n#define GL_TEXTURE_HEIGHT\t\t\t0x1001\n#define GL_TEXTURE_BORDER\t\t\t0x1005\n#define GL_TEXTURE_COMPONENTS\t\t\t0x1003\n#define GL_TEXTURE_RED_SIZE\t\t\t0x805C\n#define GL_TEXTURE_GREEN_SIZE\t\t\t0x805D\n#define GL_TEXTURE_BLUE_SIZE\t\t\t0x805E\n#define GL_TEXTURE_ALPHA_SIZE\t\t\t0x805F\n#define GL_TEXTURE_LUMINANCE_SIZE\t\t0x8060\n#define GL_TEXTURE_INTENSITY_SIZE\t\t0x8061\n#define GL_NEAREST_MIPMAP_NEAREST\t\t0x2700\n#define GL_NEAREST_MIPMAP_LINEAR\t\t0x2702\n#define GL_LINEAR_MIPMAP_NEAREST\t\t0x2701\n#define GL_LINEAR_MIPMAP_LINEAR\t\t\t0x2703\n#define GL_OBJECT_LINEAR\t\t\t0x2401\n#define GL_OBJECT_PLANE\t\t\t\t0x2501\n#define GL_EYE_LINEAR\t\t\t\t0x2400\n#define GL_EYE_PLANE\t\t\t\t0x2502\n#define GL_SPHERE_MAP\t\t\t\t0x2402\n#define GL_DECAL\t\t\t\t0x2101\n#define GL_MODULATE\t\t\t\t0x2100\n#define GL_NEAREST\t\t\t\t0x2600\n#define GL_REPEAT\t\t\t\t0x2901\n#define GL_CLAMP\t\t\t\t0x2900\n#define GL_S\t\t\t\t\t0x2000\n#define GL_T\t\t\t\t\t0x2001\n#define GL_R\t\t\t\t\t0x2002\n#define GL_Q\t\t\t\t\t0x2003\n\n/* Utility */\n#define GL_VENDOR\t\t\t\t0x1F00\n#define GL_RENDERER\t\t\t\t0x1F01\n#define GL_VERSION\t\t\t\t0x1F02\n#define GL_EXTENSIONS\t\t\t\t0x1F03\n\n/* Errors */\n#define GL_NO_ERROR \t\t\t\t0\n#define GL_INVALID_ENUM\t\t\t\t0x0500\n#define GL_INVALID_VALUE\t\t\t0x0501\n#define GL_INVALID_OPERATION\t\t\t0x0502\n#define GL_STACK_OVERFLOW\t\t\t0x0503\n#define GL_STACK_UNDERFLOW\t\t\t0x0504\n#define GL_OUT_OF_MEMORY\t\t\t0x0505\n\n/* glPush/PopAttrib bits */\n#define GL_CURRENT_BIT\t\t\t\t0x00000001\n#define GL_POINT_BIT\t\t\t\t0x00000002\n#define GL_LINE_BIT\t\t\t\t0x00000004\n#define GL_POLYGON_BIT\t\t\t\t0x00000008\n#define GL_POLYGON_STIPPLE_BIT\t\t\t0x00000010\n#define GL_PIXEL_MODE_BIT\t\t\t0x00000020\n#define GL_LIGHTING_BIT\t\t\t\t0x00000040\n#define GL_FOG_BIT\t\t\t\t0x00000080\n#define GL_DEPTH_BUFFER_BIT\t\t\t0x00000100\n#define GL_ACCUM_BUFFER_BIT\t\t\t0x00000200\n#define GL_STENCIL_BUFFER_BIT\t\t\t0x00000400\n#define GL_VIEWPORT_BIT\t\t\t\t0x00000800\n#define GL_TRANSFORM_BIT\t\t\t0x00001000\n#define GL_ENABLE_BIT\t\t\t\t0x00002000\n#define GL_COLOR_BUFFER_BIT\t\t\t0x00004000\n#define GL_HINT_BIT\t\t\t\t0x00008000\n#define GL_EVAL_BIT\t\t\t\t0x00010000\n#define GL_LIST_BIT\t\t\t\t0x00020000\n#define GL_TEXTURE_BIT\t\t\t\t0x00040000\n#define GL_SCISSOR_BIT\t\t\t\t0x00080000\n#define GL_ALL_ATTRIB_BITS\t\t\t0x000FFFFF\n\n\n/* OpenGL 1.1 */\n#define GL_PROXY_TEXTURE_1D\t\t\t0x8063\n#define GL_PROXY_TEXTURE_2D\t\t\t0x8064\n#define GL_TEXTURE_PRIORITY\t\t\t0x8066\n#define GL_TEXTURE_RESIDENT\t\t\t0x8067\n#define GL_TEXTURE_BINDING_1D\t\t\t0x8068\n#define GL_TEXTURE_BINDING_2D\t\t\t0x8069\n#define GL_TEXTURE_INTERNAL_FORMAT\t\t0x1003\n#define GL_ALPHA4\t\t\t\t0x803B\n#define GL_ALPHA8\t\t\t\t0x803C\n#define GL_ALPHA12\t\t\t\t0x803D\n#define GL_ALPHA16\t\t\t\t0x803E\n#define GL_LUMINANCE4\t\t\t\t0x803F\n#define GL_LUMINANCE8\t\t\t\t0x8040\n#define GL_LUMINANCE12\t\t\t\t0x8041\n#define GL_LUMINANCE16\t\t\t\t0x8042\n#define GL_LUMINANCE4_ALPHA4\t\t\t0x8043\n#define GL_LUMINANCE6_ALPHA2\t\t\t0x8044\n#define GL_LUMINANCE8_ALPHA8\t\t\t0x8045\n#define GL_LUMINANCE12_ALPHA4\t\t\t0x8046\n#define GL_LUMINANCE12_ALPHA12\t\t\t0x8047\n#define GL_LUMINANCE16_ALPHA16\t\t\t0x8048\n#define GL_INTENSITY\t\t\t\t0x8049\n#define GL_INTENSITY4\t\t\t\t0x804A\n#define GL_INTENSITY8\t\t\t\t0x804B\n#define GL_INTENSITY12\t\t\t\t0x804C\n#define GL_INTENSITY16\t\t\t\t0x804D\n#define GL_R3_G3_B2\t\t\t\t0x2A10\n#define GL_RGB4\t\t\t\t\t0x804F\n#define GL_RGB5\t\t\t\t\t0x8050\n#define GL_RGB8\t\t\t\t\t0x8051\n#define GL_RGB10\t\t\t\t0x8052\n#define GL_RGB12\t\t\t\t0x8053\n#define GL_RGB16\t\t\t\t0x8054\n#define GL_RGBA2\t\t\t\t0x8055\n#define GL_RGBA4\t\t\t\t0x8056\n#define GL_RGB5_A1\t\t\t\t0x8057\n#define GL_RGBA8\t\t\t\t0x8058\n#define GL_RGB10_A2\t\t\t\t0x8059\n#define GL_RGBA12\t\t\t\t0x805A\n#define GL_RGBA16\t\t\t\t0x805B\n#define GL_CLIENT_PIXEL_STORE_BIT\t\t0x00000001\n#define GL_CLIENT_VERTEX_ARRAY_BIT\t\t0x00000002\n#define GL_ALL_CLIENT_ATTRIB_BITS \t\t0xFFFFFFFF\n#define GL_CLIENT_ALL_ATTRIB_BITS \t\t0xFFFFFFFF\n\n\n\n/*\n * Miscellaneous\n */\n\nGLAPI void GLAPIENTRY glClearIndex( GLfloat c );\n\nGLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );\n\nGLAPI void GLAPIENTRY glClear( GLbitfield mask );\n\nGLAPI void GLAPIENTRY glIndexMask( GLuint mask );\n\nGLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );\n\nGLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref );\n\nGLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor );\n\nGLAPI void GLAPIENTRY glLogicOp( GLenum opcode );\n\nGLAPI void GLAPIENTRY glCullFace( GLenum mode );\n\nGLAPI void GLAPIENTRY glFrontFace( GLenum mode );\n\nGLAPI void GLAPIENTRY glPointSize( GLfloat size );\n\nGLAPI void GLAPIENTRY glLineWidth( GLfloat width );\n\nGLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern );\n\nGLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode );\n\nGLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units );\n\nGLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask );\n\nGLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask );\n\nGLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag );\n\nGLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag );\n\nGLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height);\n\nGLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation );\n\nGLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation );\n\nGLAPI void GLAPIENTRY glDrawBuffer( GLenum mode );\n\nGLAPI void GLAPIENTRY glReadBuffer( GLenum mode );\n\nGLAPI void GLAPIENTRY glEnable( GLenum cap );\n\nGLAPI void GLAPIENTRY glDisable( GLenum cap );\n\nGLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap );\n\n\nGLAPI void GLAPIENTRY glEnableClientState( GLenum cap );  /* 1.1 */\n\nGLAPI void GLAPIENTRY glDisableClientState( GLenum cap );  /* 1.1 */\n\n\nGLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params );\n\nGLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params );\n\nGLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params );\n\nGLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params );\n\n\nGLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask );\n\nGLAPI void GLAPIENTRY glPopAttrib( void );\n\n\nGLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask );  /* 1.1 */\n\nGLAPI void GLAPIENTRY glPopClientAttrib( void );  /* 1.1 */\n\n\nGLAPI GLint GLAPIENTRY glRenderMode( GLenum mode );\n\nGLAPI GLenum GLAPIENTRY glGetError( void );\n\nGLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name );\n\nGLAPI void GLAPIENTRY glFinish( void );\n\nGLAPI void GLAPIENTRY glFlush( void );\n\nGLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode );\n\n\n/*\n * Depth Buffer\n */\n\nGLAPI void GLAPIENTRY glClearDepth( GLclampd depth );\n\nGLAPI void GLAPIENTRY glDepthFunc( GLenum func );\n\nGLAPI void GLAPIENTRY glDepthMask( GLboolean flag );\n\nGLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val );\n\n\n/*\n * Accumulation Buffer\n */\n\nGLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );\n\nGLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value );\n\n\n/*\n * Transformation\n */\n\nGLAPI void GLAPIENTRY glMatrixMode( GLenum mode );\n\nGLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right,\n                                 GLdouble bottom, GLdouble top,\n                                 GLdouble near_val, GLdouble far_val );\n\nGLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right,\n                                   GLdouble bottom, GLdouble top,\n                                   GLdouble near_val, GLdouble far_val );\n\nGLAPI void GLAPIENTRY glViewport( GLint x, GLint y,\n                                    GLsizei width, GLsizei height );\n\nGLAPI void GLAPIENTRY glPushMatrix( void );\n\nGLAPI void GLAPIENTRY glPopMatrix( void );\n\nGLAPI void GLAPIENTRY glLoadIdentity( void );\n\nGLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m );\nGLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m );\n\nGLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m );\nGLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m );\n\nGLAPI void GLAPIENTRY glRotated( GLdouble angle,\n                                   GLdouble x, GLdouble y, GLdouble z );\nGLAPI void GLAPIENTRY glRotatef( GLfloat angle,\n                                   GLfloat x, GLfloat y, GLfloat z );\n\nGLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z );\nGLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z );\n\nGLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z );\nGLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z );\n\n\n/*\n * Display Lists\n */\n\nGLAPI GLboolean GLAPIENTRY glIsList( GLuint list );\n\nGLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range );\n\nGLAPI GLuint GLAPIENTRY glGenLists( GLsizei range );\n\nGLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode );\n\nGLAPI void GLAPIENTRY glEndList( void );\n\nGLAPI void GLAPIENTRY glCallList( GLuint list );\n\nGLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type,\n                                     const GLvoid *lists );\n\nGLAPI void GLAPIENTRY glListBase( GLuint base );\n\n\n/*\n * Drawing Functions\n */\n\nGLAPI void GLAPIENTRY glBegin( GLenum mode );\n\nGLAPI void GLAPIENTRY glEnd( void );\n\n\nGLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y );\nGLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y );\nGLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y );\nGLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y );\n\nGLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z );\nGLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z );\nGLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z );\nGLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z );\n\nGLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );\nGLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );\nGLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w );\nGLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w );\n\nGLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glVertex2iv( const GLint *v );\nGLAPI void GLAPIENTRY glVertex2sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glVertex3iv( const GLint *v );\nGLAPI void GLAPIENTRY glVertex3sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glVertex4iv( const GLint *v );\nGLAPI void GLAPIENTRY glVertex4sv( const GLshort *v );\n\n\nGLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz );\nGLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz );\nGLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz );\nGLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz );\nGLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz );\n\nGLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v );\nGLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glNormal3iv( const GLint *v );\nGLAPI void GLAPIENTRY glNormal3sv( const GLshort *v );\n\n\nGLAPI void GLAPIENTRY glIndexd( GLdouble c );\nGLAPI void GLAPIENTRY glIndexf( GLfloat c );\nGLAPI void GLAPIENTRY glIndexi( GLint c );\nGLAPI void GLAPIENTRY glIndexs( GLshort c );\nGLAPI void GLAPIENTRY glIndexub( GLubyte c );  /* 1.1 */\n\nGLAPI void GLAPIENTRY glIndexdv( const GLdouble *c );\nGLAPI void GLAPIENTRY glIndexfv( const GLfloat *c );\nGLAPI void GLAPIENTRY glIndexiv( const GLint *c );\nGLAPI void GLAPIENTRY glIndexsv( const GLshort *c );\nGLAPI void GLAPIENTRY glIndexubv( const GLubyte *c );  /* 1.1 */\n\nGLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue );\nGLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue );\nGLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue );\nGLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue );\nGLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue );\nGLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue );\nGLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue );\nGLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue );\n\nGLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green,\n                                   GLbyte blue, GLbyte alpha );\nGLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green,\n                                   GLdouble blue, GLdouble alpha );\nGLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green,\n                                   GLfloat blue, GLfloat alpha );\nGLAPI void GLAPIENTRY glColor4i( GLint red, GLint green,\n                                   GLint blue, GLint alpha );\nGLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green,\n                                   GLshort blue, GLshort alpha );\nGLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green,\n                                    GLubyte blue, GLubyte alpha );\nGLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green,\n                                    GLuint blue, GLuint alpha );\nGLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green,\n                                    GLushort blue, GLushort alpha );\n\n\nGLAPI void GLAPIENTRY glColor3bv( const GLbyte *v );\nGLAPI void GLAPIENTRY glColor3dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glColor3fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glColor3iv( const GLint *v );\nGLAPI void GLAPIENTRY glColor3sv( const GLshort *v );\nGLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v );\nGLAPI void GLAPIENTRY glColor3uiv( const GLuint *v );\nGLAPI void GLAPIENTRY glColor3usv( const GLushort *v );\n\nGLAPI void GLAPIENTRY glColor4bv( const GLbyte *v );\nGLAPI void GLAPIENTRY glColor4dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glColor4fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glColor4iv( const GLint *v );\nGLAPI void GLAPIENTRY glColor4sv( const GLshort *v );\nGLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v );\nGLAPI void GLAPIENTRY glColor4uiv( const GLuint *v );\nGLAPI void GLAPIENTRY glColor4usv( const GLushort *v );\n\n\nGLAPI void GLAPIENTRY glTexCoord1d( GLdouble s );\nGLAPI void GLAPIENTRY glTexCoord1f( GLfloat s );\nGLAPI void GLAPIENTRY glTexCoord1i( GLint s );\nGLAPI void GLAPIENTRY glTexCoord1s( GLshort s );\n\nGLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t );\nGLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t );\nGLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t );\nGLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t );\n\nGLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r );\nGLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r );\nGLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r );\nGLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r );\n\nGLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q );\nGLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q );\nGLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q );\nGLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q );\n\nGLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v );\nGLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v );\nGLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v );\nGLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v );\nGLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v );\n\n\nGLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y );\nGLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y );\nGLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y );\nGLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y );\n\nGLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z );\nGLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z );\nGLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z );\nGLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z );\n\nGLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w );\nGLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w );\nGLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w );\nGLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w );\n\nGLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v );\nGLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v );\nGLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v );\n\nGLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v );\nGLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v );\nGLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v );\nGLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v );\n\n\nGLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );\nGLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );\nGLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 );\nGLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );\n\n\nGLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 );\nGLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 );\nGLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 );\nGLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 );\n\n\n/*\n * Vertex Arrays  (1.1)\n */\n\nGLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type,\n                                       GLsizei stride, const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride,\n                                       const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type,\n                                      GLsizei stride, const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride,\n                                      const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type,\n                                         GLsizei stride, const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr );\n\nGLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params );\n\nGLAPI void GLAPIENTRY glArrayElement( GLint i );\n\nGLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count );\n\nGLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count,\n                                      GLenum type, const GLvoid *indices );\n\nGLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride,\n                                           const GLvoid *pointer );\n\n/*\n * Lighting\n */\n\nGLAPI void GLAPIENTRY glShadeModel( GLenum mode );\n\nGLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param );\nGLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname,\n                                 const GLfloat *params );\nGLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname,\n                                 const GLint *params );\n\nGLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname,\n                                    GLfloat *params );\nGLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname,\n                                    GLint *params );\n\nGLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param );\nGLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params );\nGLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params );\n\nGLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param );\nGLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params );\nGLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params );\n\nGLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params );\nGLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params );\n\nGLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode );\n\n\n/*\n * Raster functions\n */\n\nGLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor );\n\nGLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize,\n                                    const GLfloat *values );\nGLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize,\n                                     const GLuint *values );\nGLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize,\n                                     const GLushort *values );\n\nGLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values );\nGLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values );\nGLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values );\n\nGLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height,\n                                GLfloat xorig, GLfloat yorig,\n                                GLfloat xmove, GLfloat ymove,\n                                const GLubyte *bitmap );\n\nGLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y,\n                                    GLsizei width, GLsizei height,\n                                    GLenum format, GLenum type,\n                                    GLvoid *pixels );\n\nGLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height,\n                                    GLenum format, GLenum type,\n                                    const GLvoid *pixels );\n\nGLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y,\n                                    GLsizei width, GLsizei height,\n                                    GLenum type );\n\n/*\n * Stenciling\n */\n\nGLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask );\n\nGLAPI void GLAPIENTRY glStencilMask( GLuint mask );\n\nGLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass );\n\nGLAPI void GLAPIENTRY glClearStencil( GLint s );\n\n\n\n/*\n * Texture mapping\n */\n\nGLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param );\nGLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params );\nGLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params );\nGLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params );\n\nGLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params );\nGLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );\nGLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params );\n\n\nGLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params );\nGLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params );\n\nGLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params );\nGLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params );\n\n\nGLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param );\nGLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname,\n                                          const GLfloat *params );\nGLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname,\n                                          const GLint *params );\n\nGLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target,\n                                           GLenum pname, GLfloat *params);\nGLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target,\n                                           GLenum pname, GLint *params );\n\nGLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level,\n                                                GLenum pname, GLfloat *params );\nGLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level,\n                                                GLenum pname, GLint *params );\n\n\nGLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level,\n                                    GLint internalFormat,\n                                    GLsizei width, GLint border,\n                                    GLenum format, GLenum type,\n                                    const GLvoid *pixels );\n\nGLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level,\n                                    GLint internalFormat,\n                                    GLsizei width, GLsizei height,\n                                    GLint border, GLenum format, GLenum type,\n                                    const GLvoid *pixels );\n\nGLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level,\n                                     GLenum format, GLenum type,\n                                     GLvoid *pixels );\n\n\n/* 1.1 functions */\n\nGLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures );\n\nGLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures);\n\nGLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture );\n\nGLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n,\n                                            const GLuint *textures,\n                                            const GLclampf *priorities );\n\nGLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n,\n                                                  const GLuint *textures,\n                                                  GLboolean *residences );\n\nGLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture );\n\n\nGLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level,\n                                       GLint xoffset,\n                                       GLsizei width, GLenum format,\n                                       GLenum type, const GLvoid *pixels );\n\n\nGLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level,\n                                       GLint xoffset, GLint yoffset,\n                                       GLsizei width, GLsizei height,\n                                       GLenum format, GLenum type,\n                                       const GLvoid *pixels );\n\n\nGLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level,\n                                        GLenum internalformat,\n                                        GLint x, GLint y,\n                                        GLsizei width, GLint border );\n\n\nGLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level,\n                                        GLenum internalformat,\n                                        GLint x, GLint y,\n                                        GLsizei width, GLsizei height,\n                                        GLint border );\n\n\nGLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level,\n                                           GLint xoffset, GLint x, GLint y,\n                                           GLsizei width );\n\n\nGLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level,\n                                           GLint xoffset, GLint yoffset,\n                                           GLint x, GLint y,\n                                           GLsizei width, GLsizei height );\n\n\n/*\n * Evaluators\n */\n\nGLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2,\n                               GLint stride,\n                               GLint order, const GLdouble *points );\nGLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2,\n                               GLint stride,\n                               GLint order, const GLfloat *points );\n\nGLAPI void GLAPIENTRY glMap2d( GLenum target,\n\t\t     GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,\n\t\t     GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,\n\t\t     const GLdouble *points );\nGLAPI void GLAPIENTRY glMap2f( GLenum target,\n\t\t     GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,\n\t\t     GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,\n\t\t     const GLfloat *points );\n\nGLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v );\nGLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v );\nGLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v );\n\nGLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u );\nGLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u );\n\nGLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u );\nGLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u );\n\nGLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v );\nGLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v );\n\nGLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u );\nGLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u );\n\nGLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 );\nGLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 );\n\nGLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2,\n                                   GLint vn, GLdouble v1, GLdouble v2 );\nGLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2,\n                                   GLint vn, GLfloat v1, GLfloat v2 );\n\nGLAPI void GLAPIENTRY glEvalPoint1( GLint i );\n\nGLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j );\n\nGLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 );\n\nGLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );\n\n\n/*\n * Fog\n */\n\nGLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param );\n\nGLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param );\n\nGLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params );\n\nGLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params );\n\n\n/*\n * Selection and Feedback\n */\n\nGLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer );\n\nGLAPI void GLAPIENTRY glPassThrough( GLfloat token );\n\nGLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer );\n\nGLAPI void GLAPIENTRY glInitNames( void );\n\nGLAPI void GLAPIENTRY glLoadName( GLuint name );\n\nGLAPI void GLAPIENTRY glPushName( GLuint name );\n\nGLAPI void GLAPIENTRY glPopName( void );\n\n\n\n/*\n * OpenGL 1.2\n */\n\n#define GL_RESCALE_NORMAL\t\t\t0x803A\n#define GL_CLAMP_TO_EDGE\t\t\t0x812F\n#define GL_MAX_ELEMENTS_VERTICES\t\t0x80E8\n#define GL_MAX_ELEMENTS_INDICES\t\t\t0x80E9\n#define GL_BGR\t\t\t\t\t0x80E0\n#define GL_BGRA\t\t\t\t\t0x80E1\n#define GL_UNSIGNED_BYTE_3_3_2\t\t\t0x8032\n#define GL_UNSIGNED_BYTE_2_3_3_REV\t\t0x8362\n#define GL_UNSIGNED_SHORT_5_6_5\t\t\t0x8363\n#define GL_UNSIGNED_SHORT_5_6_5_REV\t\t0x8364\n#define GL_UNSIGNED_SHORT_4_4_4_4\t\t0x8033\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV\t\t0x8365\n#define GL_UNSIGNED_SHORT_5_5_5_1\t\t0x8034\n#define GL_UNSIGNED_SHORT_1_5_5_5_REV\t\t0x8366\n#define GL_UNSIGNED_INT_8_8_8_8\t\t\t0x8035\n#define GL_UNSIGNED_INT_8_8_8_8_REV\t\t0x8367\n#define GL_UNSIGNED_INT_10_10_10_2\t\t0x8036\n#define GL_UNSIGNED_INT_2_10_10_10_REV\t\t0x8368\n#define GL_LIGHT_MODEL_COLOR_CONTROL\t\t0x81F8\n#define GL_SINGLE_COLOR\t\t\t\t0x81F9\n#define GL_SEPARATE_SPECULAR_COLOR\t\t0x81FA\n#define GL_TEXTURE_MIN_LOD\t\t\t0x813A\n#define GL_TEXTURE_MAX_LOD\t\t\t0x813B\n#define GL_TEXTURE_BASE_LEVEL\t\t\t0x813C\n#define GL_TEXTURE_MAX_LEVEL\t\t\t0x813D\n#define GL_SMOOTH_POINT_SIZE_RANGE\t\t0x0B12\n#define GL_SMOOTH_POINT_SIZE_GRANULARITY\t0x0B13\n#define GL_SMOOTH_LINE_WIDTH_RANGE\t\t0x0B22\n#define GL_SMOOTH_LINE_WIDTH_GRANULARITY\t0x0B23\n#define GL_ALIASED_POINT_SIZE_RANGE\t\t0x846D\n#define GL_ALIASED_LINE_WIDTH_RANGE\t\t0x846E\n#define GL_PACK_SKIP_IMAGES\t\t\t0x806B\n#define GL_PACK_IMAGE_HEIGHT\t\t\t0x806C\n#define GL_UNPACK_SKIP_IMAGES\t\t\t0x806D\n#define GL_UNPACK_IMAGE_HEIGHT\t\t\t0x806E\n#define GL_TEXTURE_3D\t\t\t\t0x806F\n#define GL_PROXY_TEXTURE_3D\t\t\t0x8070\n#define GL_TEXTURE_DEPTH\t\t\t0x8071\n#define GL_TEXTURE_WRAP_R\t\t\t0x8072\n#define GL_MAX_3D_TEXTURE_SIZE\t\t\t0x8073\n#define GL_TEXTURE_BINDING_3D\t\t\t0x806A\n\nGLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start,\n\tGLuint end, GLsizei count, GLenum type, const GLvoid *indices );\n\nGLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level,\n                                      GLint internalFormat,\n                                      GLsizei width, GLsizei height,\n                                      GLsizei depth, GLint border,\n                                      GLenum format, GLenum type,\n                                      const GLvoid *pixels );\n\nGLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level,\n                                         GLint xoffset, GLint yoffset,\n                                         GLint zoffset, GLsizei width,\n                                         GLsizei height, GLsizei depth,\n                                         GLenum format,\n                                         GLenum type, const GLvoid *pixels);\n\nGLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level,\n                                             GLint xoffset, GLint yoffset,\n                                             GLint zoffset, GLint x,\n                                             GLint y, GLsizei width,\n                                             GLsizei height );\n\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\n\n\n/*\n * GL_ARB_imaging\n */\n\n#define GL_CONSTANT_COLOR\t\t\t0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR\t\t0x8002\n#define GL_CONSTANT_ALPHA\t\t\t0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA\t\t0x8004\n#define GL_COLOR_TABLE\t\t\t\t0x80D0\n#define GL_POST_CONVOLUTION_COLOR_TABLE\t\t0x80D1\n#define GL_POST_COLOR_MATRIX_COLOR_TABLE\t0x80D2\n#define GL_PROXY_COLOR_TABLE\t\t\t0x80D3\n#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\t0x80D4\n#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\t0x80D5\n#define GL_COLOR_TABLE_SCALE\t\t\t0x80D6\n#define GL_COLOR_TABLE_BIAS\t\t\t0x80D7\n#define GL_COLOR_TABLE_FORMAT\t\t\t0x80D8\n#define GL_COLOR_TABLE_WIDTH\t\t\t0x80D9\n#define GL_COLOR_TABLE_RED_SIZE\t\t\t0x80DA\n#define GL_COLOR_TABLE_GREEN_SIZE\t\t0x80DB\n#define GL_COLOR_TABLE_BLUE_SIZE\t\t0x80DC\n#define GL_COLOR_TABLE_ALPHA_SIZE\t\t0x80DD\n#define GL_COLOR_TABLE_LUMINANCE_SIZE\t\t0x80DE\n#define GL_COLOR_TABLE_INTENSITY_SIZE\t\t0x80DF\n#define GL_CONVOLUTION_1D\t\t\t0x8010\n#define GL_CONVOLUTION_2D\t\t\t0x8011\n#define GL_SEPARABLE_2D\t\t\t\t0x8012\n#define GL_CONVOLUTION_BORDER_MODE\t\t0x8013\n#define GL_CONVOLUTION_FILTER_SCALE\t\t0x8014\n#define GL_CONVOLUTION_FILTER_BIAS\t\t0x8015\n#define GL_REDUCE\t\t\t\t0x8016\n#define GL_CONVOLUTION_FORMAT\t\t\t0x8017\n#define GL_CONVOLUTION_WIDTH\t\t\t0x8018\n#define GL_CONVOLUTION_HEIGHT\t\t\t0x8019\n#define GL_MAX_CONVOLUTION_WIDTH\t\t0x801A\n#define GL_MAX_CONVOLUTION_HEIGHT\t\t0x801B\n#define GL_POST_CONVOLUTION_RED_SCALE\t\t0x801C\n#define GL_POST_CONVOLUTION_GREEN_SCALE\t\t0x801D\n#define GL_POST_CONVOLUTION_BLUE_SCALE\t\t0x801E\n#define GL_POST_CONVOLUTION_ALPHA_SCALE\t\t0x801F\n#define GL_POST_CONVOLUTION_RED_BIAS\t\t0x8020\n#define GL_POST_CONVOLUTION_GREEN_BIAS\t\t0x8021\n#define GL_POST_CONVOLUTION_BLUE_BIAS\t\t0x8022\n#define GL_POST_CONVOLUTION_ALPHA_BIAS\t\t0x8023\n#define GL_CONSTANT_BORDER\t\t\t0x8151\n#define GL_REPLICATE_BORDER\t\t\t0x8153\n#define GL_CONVOLUTION_BORDER_COLOR\t\t0x8154\n#define GL_COLOR_MATRIX\t\t\t\t0x80B1\n#define GL_COLOR_MATRIX_STACK_DEPTH\t\t0x80B2\n#define GL_MAX_COLOR_MATRIX_STACK_DEPTH\t\t0x80B3\n#define GL_POST_COLOR_MATRIX_RED_SCALE\t\t0x80B4\n#define GL_POST_COLOR_MATRIX_GREEN_SCALE\t0x80B5\n#define GL_POST_COLOR_MATRIX_BLUE_SCALE\t\t0x80B6\n#define GL_POST_COLOR_MATRIX_ALPHA_SCALE\t0x80B7\n#define GL_POST_COLOR_MATRIX_RED_BIAS\t\t0x80B8\n#define GL_POST_COLOR_MATRIX_GREEN_BIAS\t\t0x80B9\n#define GL_POST_COLOR_MATRIX_BLUE_BIAS\t\t0x80BA\n#define GL_POST_COLOR_MATRIX_ALPHA_BIAS\t\t0x80BB\n#define GL_HISTOGRAM\t\t\t\t0x8024\n#define GL_PROXY_HISTOGRAM\t\t\t0x8025\n#define GL_HISTOGRAM_WIDTH\t\t\t0x8026\n#define GL_HISTOGRAM_FORMAT\t\t\t0x8027\n#define GL_HISTOGRAM_RED_SIZE\t\t\t0x8028\n#define GL_HISTOGRAM_GREEN_SIZE\t\t\t0x8029\n#define GL_HISTOGRAM_BLUE_SIZE\t\t\t0x802A\n#define GL_HISTOGRAM_ALPHA_SIZE\t\t\t0x802B\n#define GL_HISTOGRAM_LUMINANCE_SIZE\t\t0x802C\n#define GL_HISTOGRAM_SINK\t\t\t0x802D\n#define GL_MINMAX\t\t\t\t0x802E\n#define GL_MINMAX_FORMAT\t\t\t0x802F\n#define GL_MINMAX_SINK\t\t\t\t0x8030\n#define GL_TABLE_TOO_LARGE\t\t\t0x8031\n#define GL_BLEND_EQUATION\t\t\t0x8009\n#define GL_MIN\t\t\t\t\t0x8007\n#define GL_MAX\t\t\t\t\t0x8008\n#define GL_FUNC_ADD\t\t\t\t0x8006\n#define GL_FUNC_SUBTRACT\t\t\t0x800A\n#define GL_FUNC_REVERSE_SUBTRACT\t\t0x800B\n#define GL_BLEND_COLOR\t\t\t\t0x8005\n\n\nGLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat,\n                                    GLsizei width, GLenum format,\n                                    GLenum type, const GLvoid *table );\n\nGLAPI void GLAPIENTRY glColorSubTable( GLenum target,\n                                       GLsizei start, GLsizei count,\n                                       GLenum format, GLenum type,\n                                       const GLvoid *data );\n\nGLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname,\n                                              const GLint *params);\n\nGLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname,\n                                              const GLfloat *params);\n\nGLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start,\n                                           GLint x, GLint y, GLsizei width );\n\nGLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat,\n                                        GLint x, GLint y, GLsizei width );\n\nGLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format,\n                                       GLenum type, GLvoid *table );\n\nGLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname,\n                                                  GLfloat *params );\n\nGLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname,\n                                                  GLint *params );\n\nGLAPI void GLAPIENTRY glBlendEquation( GLenum mode );\n\nGLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green,\n                                    GLclampf blue, GLclampf alpha );\n\nGLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width,\n\t\t\t\t   GLenum internalformat, GLboolean sink );\n\nGLAPI void GLAPIENTRY glResetHistogram( GLenum target );\n\nGLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset,\n\t\t\t\t      GLenum format, GLenum type,\n\t\t\t\t      GLvoid *values );\n\nGLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname,\n\t\t\t\t\t\t GLfloat *params );\n\nGLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname,\n\t\t\t\t\t\t GLint *params );\n\nGLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat,\n\t\t\t\tGLboolean sink );\n\nGLAPI void GLAPIENTRY glResetMinmax( GLenum target );\n\nGLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset,\n                                   GLenum format, GLenum types,\n                                   GLvoid *values );\n\nGLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname,\n\t\t\t\t\t      GLfloat *params );\n\nGLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname,\n\t\t\t\t\t      GLint *params );\n\nGLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target,\n\tGLenum internalformat, GLsizei width, GLenum format, GLenum type,\n\tconst GLvoid *image );\n\nGLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target,\n\tGLenum internalformat, GLsizei width, GLsizei height, GLenum format,\n\tGLenum type, const GLvoid *image );\n\nGLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname,\n\tGLfloat params );\n\nGLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname,\n\tconst GLfloat *params );\n\nGLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname,\n\tGLint params );\n\nGLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname,\n\tconst GLint *params );\n\nGLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target,\n\tGLenum internalformat, GLint x, GLint y, GLsizei width );\n\nGLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target,\n\tGLenum internalformat, GLint x, GLint y, GLsizei width,\n\tGLsizei height);\n\nGLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format,\n\tGLenum type, GLvoid *image );\n\nGLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname,\n\tGLfloat *params );\n\nGLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname,\n\tGLint *params );\n\nGLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target,\n\tGLenum internalformat, GLsizei width, GLsizei height, GLenum format,\n\tGLenum type, const GLvoid *row, const GLvoid *column );\n\nGLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format,\n\tGLenum type, GLvoid *row, GLvoid *column, GLvoid *span );\n\n\n\n\n/*\n * OpenGL 1.3\n */\n\n/* multitexture */\n#define GL_TEXTURE0\t\t\t\t0x84C0\n#define GL_TEXTURE1\t\t\t\t0x84C1\n#define GL_TEXTURE2\t\t\t\t0x84C2\n#define GL_TEXTURE3\t\t\t\t0x84C3\n#define GL_TEXTURE4\t\t\t\t0x84C4\n#define GL_TEXTURE5\t\t\t\t0x84C5\n#define GL_TEXTURE6\t\t\t\t0x84C6\n#define GL_TEXTURE7\t\t\t\t0x84C7\n#define GL_TEXTURE8\t\t\t\t0x84C8\n#define GL_TEXTURE9\t\t\t\t0x84C9\n#define GL_TEXTURE10\t\t\t\t0x84CA\n#define GL_TEXTURE11\t\t\t\t0x84CB\n#define GL_TEXTURE12\t\t\t\t0x84CC\n#define GL_TEXTURE13\t\t\t\t0x84CD\n#define GL_TEXTURE14\t\t\t\t0x84CE\n#define GL_TEXTURE15\t\t\t\t0x84CF\n#define GL_TEXTURE16\t\t\t\t0x84D0\n#define GL_TEXTURE17\t\t\t\t0x84D1\n#define GL_TEXTURE18\t\t\t\t0x84D2\n#define GL_TEXTURE19\t\t\t\t0x84D3\n#define GL_TEXTURE20\t\t\t\t0x84D4\n#define GL_TEXTURE21\t\t\t\t0x84D5\n#define GL_TEXTURE22\t\t\t\t0x84D6\n#define GL_TEXTURE23\t\t\t\t0x84D7\n#define GL_TEXTURE24\t\t\t\t0x84D8\n#define GL_TEXTURE25\t\t\t\t0x84D9\n#define GL_TEXTURE26\t\t\t\t0x84DA\n#define GL_TEXTURE27\t\t\t\t0x84DB\n#define GL_TEXTURE28\t\t\t\t0x84DC\n#define GL_TEXTURE29\t\t\t\t0x84DD\n#define GL_TEXTURE30\t\t\t\t0x84DE\n#define GL_TEXTURE31\t\t\t\t0x84DF\n#define GL_ACTIVE_TEXTURE\t\t\t0x84E0\n#define GL_CLIENT_ACTIVE_TEXTURE\t\t0x84E1\n#define GL_MAX_TEXTURE_UNITS\t\t\t0x84E2\n/* texture_cube_map */\n#define GL_NORMAL_MAP\t\t\t\t0x8511\n#define GL_REFLECTION_MAP\t\t\t0x8512\n#define GL_TEXTURE_CUBE_MAP\t\t\t0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP\t\t0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X\t\t0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X\t\t0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y\t\t0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y\t\t0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z\t\t0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z\t\t0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP\t\t0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE\t\t0x851C\n/* texture_compression */\n#define GL_COMPRESSED_ALPHA\t\t\t0x84E9\n#define GL_COMPRESSED_LUMINANCE\t\t\t0x84EA\n#define GL_COMPRESSED_LUMINANCE_ALPHA\t\t0x84EB\n#define GL_COMPRESSED_INTENSITY\t\t\t0x84EC\n#define GL_COMPRESSED_RGB\t\t\t0x84ED\n#define GL_COMPRESSED_RGBA\t\t\t0x84EE\n#define GL_TEXTURE_COMPRESSION_HINT\t\t0x84EF\n#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE\t0x86A0\n#define GL_TEXTURE_COMPRESSED\t\t\t0x86A1\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS\t0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS\t\t0x86A3\n/* multisample */\n#define GL_MULTISAMPLE\t\t\t\t0x809D\n#define GL_SAMPLE_ALPHA_TO_COVERAGE\t\t0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE\t\t\t0x809F\n#define GL_SAMPLE_COVERAGE\t\t\t0x80A0\n#define GL_SAMPLE_BUFFERS\t\t\t0x80A8\n#define GL_SAMPLES\t\t\t\t0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE\t\t0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT\t\t0x80AB\n#define GL_MULTISAMPLE_BIT\t\t\t0x20000000\n/* transpose_matrix */\n#define GL_TRANSPOSE_MODELVIEW_MATRIX\t\t0x84E3\n#define GL_TRANSPOSE_PROJECTION_MATRIX\t\t0x84E4\n#define GL_TRANSPOSE_TEXTURE_MATRIX\t\t0x84E5\n#define GL_TRANSPOSE_COLOR_MATRIX\t\t0x84E6\n/* texture_env_combine */\n#define GL_COMBINE\t\t\t\t0x8570\n#define GL_COMBINE_RGB\t\t\t\t0x8571\n#define GL_COMBINE_ALPHA\t\t\t0x8572\n#define GL_SOURCE0_RGB\t\t\t\t0x8580\n#define GL_SOURCE1_RGB\t\t\t\t0x8581\n#define GL_SOURCE2_RGB\t\t\t\t0x8582\n#define GL_SOURCE0_ALPHA\t\t\t0x8588\n#define GL_SOURCE1_ALPHA\t\t\t0x8589\n#define GL_SOURCE2_ALPHA\t\t\t0x858A\n#define GL_OPERAND0_RGB\t\t\t\t0x8590\n#define GL_OPERAND1_RGB\t\t\t\t0x8591\n#define GL_OPERAND2_RGB\t\t\t\t0x8592\n#define GL_OPERAND0_ALPHA\t\t\t0x8598\n#define GL_OPERAND1_ALPHA\t\t\t0x8599\n#define GL_OPERAND2_ALPHA\t\t\t0x859A\n#define GL_RGB_SCALE\t\t\t\t0x8573\n#define GL_ADD_SIGNED\t\t\t\t0x8574\n#define GL_INTERPOLATE\t\t\t\t0x8575\n#define GL_SUBTRACT\t\t\t\t0x84E7\n#define GL_CONSTANT\t\t\t\t0x8576\n#define GL_PRIMARY_COLOR\t\t\t0x8577\n#define GL_PREVIOUS\t\t\t\t0x8578\n/* texture_env_dot3 */\n#define GL_DOT3_RGB\t\t\t\t0x86AE\n#define GL_DOT3_RGBA\t\t\t\t0x86AF\n/* texture_border_clamp */\n#define GL_CLAMP_TO_BORDER\t\t\t0x812D\n\nGLAPI void GLAPIENTRY glActiveTexture( GLenum texture );\n\nGLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture );\n\nGLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data );\n\nGLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s );\n\nGLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t );\n\nGLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r );\n\nGLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q );\n\nGLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v );\n\n\nGLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] );\n\nGLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] );\n\nGLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] );\n\nGLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] );\n\nGLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert );\n\n\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);\n\n\n\n/*\n * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1)\n */\n#ifndef GL_ARB_multitexture\n#define GL_ARB_multitexture 1\n\n#define GL_TEXTURE0_ARB\t\t\t\t0x84C0\n#define GL_TEXTURE1_ARB\t\t\t\t0x84C1\n#define GL_TEXTURE2_ARB\t\t\t\t0x84C2\n#define GL_TEXTURE3_ARB\t\t\t\t0x84C3\n#define GL_TEXTURE4_ARB\t\t\t\t0x84C4\n#define GL_TEXTURE5_ARB\t\t\t\t0x84C5\n#define GL_TEXTURE6_ARB\t\t\t\t0x84C6\n#define GL_TEXTURE7_ARB\t\t\t\t0x84C7\n#define GL_TEXTURE8_ARB\t\t\t\t0x84C8\n#define GL_TEXTURE9_ARB\t\t\t\t0x84C9\n#define GL_TEXTURE10_ARB\t\t\t0x84CA\n#define GL_TEXTURE11_ARB\t\t\t0x84CB\n#define GL_TEXTURE12_ARB\t\t\t0x84CC\n#define GL_TEXTURE13_ARB\t\t\t0x84CD\n#define GL_TEXTURE14_ARB\t\t\t0x84CE\n#define GL_TEXTURE15_ARB\t\t\t0x84CF\n#define GL_TEXTURE16_ARB\t\t\t0x84D0\n#define GL_TEXTURE17_ARB\t\t\t0x84D1\n#define GL_TEXTURE18_ARB\t\t\t0x84D2\n#define GL_TEXTURE19_ARB\t\t\t0x84D3\n#define GL_TEXTURE20_ARB\t\t\t0x84D4\n#define GL_TEXTURE21_ARB\t\t\t0x84D5\n#define GL_TEXTURE22_ARB\t\t\t0x84D6\n#define GL_TEXTURE23_ARB\t\t\t0x84D7\n#define GL_TEXTURE24_ARB\t\t\t0x84D8\n#define GL_TEXTURE25_ARB\t\t\t0x84D9\n#define GL_TEXTURE26_ARB\t\t\t0x84DA\n#define GL_TEXTURE27_ARB\t\t\t0x84DB\n#define GL_TEXTURE28_ARB\t\t\t0x84DC\n#define GL_TEXTURE29_ARB\t\t\t0x84DD\n#define GL_TEXTURE30_ARB\t\t\t0x84DE\n#define GL_TEXTURE31_ARB\t\t\t0x84DF\n#define GL_ACTIVE_TEXTURE_ARB\t\t\t0x84E0\n#define GL_CLIENT_ACTIVE_TEXTURE_ARB\t\t0x84E1\n#define GL_MAX_TEXTURE_UNITS_ARB\t\t0x84E2\n\nGLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);\nGLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture);\nGLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s);\nGLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v);\nGLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s);\nGLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v);\nGLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s);\nGLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v);\nGLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s);\nGLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v);\nGLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);\nGLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v);\nGLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);\nGLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v);\nGLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);\nGLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v);\nGLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);\nGLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v);\nGLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);\nGLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v);\nGLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);\nGLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v);\nGLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);\nGLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v);\nGLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);\nGLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v);\nGLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\nGLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v);\nGLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\nGLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);\nGLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);\nGLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v);\nGLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\nGLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v);\n\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);\n\n#endif /* GL_ARB_multitexture */\n\n\n\n/*\n * Define this token if you want \"old-style\" header file behaviour (extensions\n * defined in gl.h).  Otherwise, extensions will be included from glext.h.\n */\n#if !defined(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY)\n#include \"SDL_opengl_glext.h\"\n#endif  /* GL_GLEXT_LEGACY */\n\n\n\n/**********************************************************************\n * Begin system-specific stuff\n */\n#if defined(PRAGMA_EXPORT_SUPPORTED)\n#pragma export off\n#endif\n\n/*\n * End system-specific stuff\n **********************************************************************/\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /* __gl_h_ */\n\n#endif /* !__IPHONEOS__ */\n\n#endif /* SDL_opengl_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengl_glext.h",
    "content": "/* SDL modified the include guard to be compatible with Mesa and Apple include guards:\n * - Mesa uses: __gl_glext_h_\n * - Apple uses: __glext_h_  */\n#if !defined(__glext_h_) && !defined(__gl_glext_h_)\n#define __glext_h_ 1\n#define __gl_glext_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: MIT\n**\n** This header is generated from the Khronos OpenGL / OpenGL ES XML\n** API Registry. The current version of the Registry, generator scripts\n** used to make the header, and the header can be found at\n**   https://github.com/KhronosGroup/OpenGL-Registry\n*/\n\n#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN 1\n#endif\n#include <windows.h>\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY\n#endif\n#ifndef APIENTRYP\n#define APIENTRYP APIENTRY *\n#endif\n#ifndef GLAPI\n#define GLAPI extern\n#endif\n\n#define GL_GLEXT_VERSION 20220530\n\n/*#include <KHR/khrplatform.h>*/\n#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n/* Khronos platform-specific types and definitions.\n *\n * The master copy of khrplatform.h is maintained in the Khronos EGL\n * Registry repository at https://github.com/KhronosGroup/EGL-Registry\n * The last semantic modification to khrplatform.h was at commit ID:\n *      67a3e0864c2d75ea5287b9f3d2eb74a745936692\n *\n * Adopters may modify this file to suit their platform. Adopters are\n * encouraged to submit platform specific modifications to the Khronos\n * group so that they can be included in future versions of this file.\n * Please submit changes by filing pull requests or issues on\n * the EGL Registry repository linked above.\n *\n *\n * See the Implementer's Guidelines for information about where this file\n * should be located on your system and for more details of its use:\n *    http://www.khronos.org/registry/implementers_guide.pdf\n *\n * This file should be included as\n *        #include <KHR/khrplatform.h>\n * by Khronos client API header files that use its types and defines.\n *\n * The types in khrplatform.h should only be used to define API-specific types.\n *\n * Types defined in khrplatform.h:\n *    khronos_int8_t              signed   8  bit\n *    khronos_uint8_t             unsigned 8  bit\n *    khronos_int16_t             signed   16 bit\n *    khronos_uint16_t            unsigned 16 bit\n *    khronos_int32_t             signed   32 bit\n *    khronos_uint32_t            unsigned 32 bit\n *    khronos_int64_t             signed   64 bit\n *    khronos_uint64_t            unsigned 64 bit\n *    khronos_intptr_t            signed   same number of bits as a pointer\n *    khronos_uintptr_t           unsigned same number of bits as a pointer\n *    khronos_ssize_t             signed   size\n *    khronos_usize_t             unsigned size\n *    khronos_float_t             signed   32 bit floating point\n *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds\n *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in\n *                                         nanoseconds\n *    khronos_stime_nanoseconds_t signed time interval in nanoseconds\n *    khronos_boolean_enum_t      enumerated boolean type. This should\n *      only be used as a base type when a client API's boolean type is\n *      an enum. Client APIs which use an integer or other type for\n *      booleans cannot use this as the base type for their boolean.\n *\n * Tokens defined in khrplatform.h:\n *\n *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.\n *\n *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.\n *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.\n *\n * Calling convention macros defined in this file:\n *    KHRONOS_APICALL\n *    KHRONOS_APIENTRY\n *    KHRONOS_APIATTRIBUTES\n *\n * These may be used in function prototypes as:\n *\n *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(\n *                                  int arg1,\n *                                  int arg2) KHRONOS_APIATTRIBUTES;\n */\n\n#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)\n#   define KHRONOS_STATIC 1\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APICALL\n *-------------------------------------------------------------------------\n * This precedes the return type of the function in the function prototype.\n */\n#if defined(KHRONOS_STATIC)\n    /* If the preprocessor constant KHRONOS_STATIC is defined, make the\n     * header compatible with static linking. */\n#   define KHRONOS_APICALL\n#elif defined(_WIN32)\n#   define KHRONOS_APICALL __declspec(dllimport)\n#elif defined (__SYMBIAN32__)\n#   define KHRONOS_APICALL IMPORT_C\n#elif defined(__ANDROID__)\n#   define KHRONOS_APICALL __attribute__((visibility(\"default\")))\n#else\n#   define KHRONOS_APICALL\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIENTRY\n *-------------------------------------------------------------------------\n * This follows the return type of the function  and precedes the function\n * name in the function prototype.\n */\n#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)\n    /* Win32 but not WinCE */\n#   define KHRONOS_APIENTRY __stdcall\n#else\n#   define KHRONOS_APIENTRY\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIATTRIBUTES\n *-------------------------------------------------------------------------\n * This follows the closing parenthesis of the function prototype arguments.\n */\n#if defined (__ARMCC_2__)\n#define KHRONOS_APIATTRIBUTES __softfp\n#else\n#define KHRONOS_APIATTRIBUTES\n#endif\n\n/*-------------------------------------------------------------------------\n * basic type definitions\n *-----------------------------------------------------------------------*/\n#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)\n\n\n/*\n * Using <stdint.h>\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n/*\n * To support platform where unsigned long cannot be used interchangeably with\n * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.\n * Ideally, we could just use (u)intptr_t everywhere, but this could result in\n * ABI breakage if khronos_uintptr_t is changed from unsigned long to\n * unsigned long long or similar (this results in different C++ name mangling).\n * To avoid changes for existing platforms, we restrict usage of intptr_t to\n * platforms where the size of a pointer is larger than the size of long.\n */\n#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)\n#if __SIZEOF_POINTER__ > __SIZEOF_LONG__\n#define KHRONOS_USE_INTPTR_T\n#endif\n#endif\n\n#elif defined(__VMS ) || defined(__sgi)\n\n/*\n * Using <inttypes.h>\n */\n#include <inttypes.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)\n\n/*\n * Win32\n */\ntypedef __int32                 khronos_int32_t;\ntypedef unsigned __int32        khronos_uint32_t;\ntypedef __int64                 khronos_int64_t;\ntypedef unsigned __int64        khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(__sun__) || defined(__digital__)\n\n/*\n * Sun or Digital\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#if defined(__arch64__) || defined(_LP64)\ntypedef long int                khronos_int64_t;\ntypedef unsigned long int       khronos_uint64_t;\n#else\ntypedef long long int           khronos_int64_t;\ntypedef unsigned long long int  khronos_uint64_t;\n#endif /* __arch64__ */\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif 0\n\n/*\n * Hypothetical platform with no float or int64 support\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#define KHRONOS_SUPPORT_INT64   0\n#define KHRONOS_SUPPORT_FLOAT   0\n\n#else\n\n/*\n * Generic fallback\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#endif\n\n\n/*\n * Types that are (so far) the same on all platforms\n */\ntypedef signed   char          khronos_int8_t;\ntypedef unsigned char          khronos_uint8_t;\ntypedef signed   short int     khronos_int16_t;\ntypedef unsigned short int     khronos_uint16_t;\n\n/*\n * Types that differ between LLP64 and LP64 architectures - in LLP64,\n * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears\n * to be the only LLP64 architecture in current use.\n */\n#ifdef KHRONOS_USE_INTPTR_T\ntypedef intptr_t               khronos_intptr_t;\ntypedef uintptr_t              khronos_uintptr_t;\n#elif defined(_WIN64)\ntypedef signed   long long int khronos_intptr_t;\ntypedef unsigned long long int khronos_uintptr_t;\n#else\ntypedef signed   long  int     khronos_intptr_t;\ntypedef unsigned long  int     khronos_uintptr_t;\n#endif\n\n#if defined(_WIN64)\ntypedef signed   long long int khronos_ssize_t;\ntypedef unsigned long long int khronos_usize_t;\n#else\ntypedef signed   long  int     khronos_ssize_t;\ntypedef unsigned long  int     khronos_usize_t;\n#endif\n\n#if KHRONOS_SUPPORT_FLOAT\n/*\n * Float type\n */\ntypedef          float         khronos_float_t;\n#endif\n\n#if KHRONOS_SUPPORT_INT64\n/* Time types\n *\n * These types can be used to represent a time interval in nanoseconds or\n * an absolute Unadjusted System Time.  Unadjusted System Time is the number\n * of nanoseconds since some arbitrary system event (e.g. since the last\n * time the system booted).  The Unadjusted System Time is an unsigned\n * 64 bit value that wraps back to 0 every 584 years.  Time intervals\n * may be either signed or unsigned.\n */\ntypedef khronos_uint64_t       khronos_utime_nanoseconds_t;\ntypedef khronos_int64_t        khronos_stime_nanoseconds_t;\n#endif\n\n/*\n * Dummy value used to pad enum types to 32 bits.\n */\n#ifndef KHRONOS_MAX_ENUM\n#define KHRONOS_MAX_ENUM 0x7FFFFFFF\n#endif\n\n/*\n * Enumerated boolean type\n *\n * Values other than zero should be considered to be true.  Therefore\n * comparisons should not be made against KHRONOS_TRUE.\n */\ntypedef enum {\n    KHRONOS_FALSE = 0,\n    KHRONOS_TRUE  = 1,\n    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM\n} khronos_boolean_enum_t;\n\n#endif /* __khrplatform_h_ */\n\n/* Generated C header for:\n * API: gl\n * Profile: compatibility\n * Versions considered: .*\n * Versions emitted: 1\\.[2-9]|[234]\\.[0-9]\n * Default extensions included: gl\n * Additional extensions included: _nomatch_^\n * Extensions removed: _nomatch_^\n */\n\n#ifndef GL_VERSION_1_2\n#define GL_VERSION_1_2 1\n#define GL_UNSIGNED_BYTE_3_3_2            0x8032\n#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034\n#define GL_UNSIGNED_INT_8_8_8_8           0x8035\n#define GL_UNSIGNED_INT_10_10_10_2        0x8036\n#define GL_TEXTURE_BINDING_3D             0x806A\n#define GL_PACK_SKIP_IMAGES               0x806B\n#define GL_PACK_IMAGE_HEIGHT              0x806C\n#define GL_UNPACK_SKIP_IMAGES             0x806D\n#define GL_UNPACK_IMAGE_HEIGHT            0x806E\n#define GL_TEXTURE_3D                     0x806F\n#define GL_PROXY_TEXTURE_3D               0x8070\n#define GL_TEXTURE_DEPTH                  0x8071\n#define GL_TEXTURE_WRAP_R                 0x8072\n#define GL_MAX_3D_TEXTURE_SIZE            0x8073\n#define GL_UNSIGNED_BYTE_2_3_3_REV        0x8362\n#define GL_UNSIGNED_SHORT_5_6_5           0x8363\n#define GL_UNSIGNED_SHORT_5_6_5_REV       0x8364\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV     0x8365\n#define GL_UNSIGNED_SHORT_1_5_5_5_REV     0x8366\n#define GL_UNSIGNED_INT_8_8_8_8_REV       0x8367\n#define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368\n#define GL_BGR                            0x80E0\n#define GL_BGRA                           0x80E1\n#define GL_MAX_ELEMENTS_VERTICES          0x80E8\n#define GL_MAX_ELEMENTS_INDICES           0x80E9\n#define GL_CLAMP_TO_EDGE                  0x812F\n#define GL_TEXTURE_MIN_LOD                0x813A\n#define GL_TEXTURE_MAX_LOD                0x813B\n#define GL_TEXTURE_BASE_LEVEL             0x813C\n#define GL_TEXTURE_MAX_LEVEL              0x813D\n#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12\n#define GL_SMOOTH_POINT_SIZE_GRANULARITY  0x0B13\n#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22\n#define GL_SMOOTH_LINE_WIDTH_GRANULARITY  0x0B23\n#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E\n#define GL_RESCALE_NORMAL                 0x803A\n#define GL_LIGHT_MODEL_COLOR_CONTROL      0x81F8\n#define GL_SINGLE_COLOR                   0x81F9\n#define GL_SEPARATE_SPECULAR_COLOR        0x81FA\n#define GL_ALIASED_POINT_SIZE_RANGE       0x846D\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\nGLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_VERSION_1_2 */\n\n#ifndef GL_VERSION_1_3\n#define GL_VERSION_1_3 1\n#define GL_TEXTURE0                       0x84C0\n#define GL_TEXTURE1                       0x84C1\n#define GL_TEXTURE2                       0x84C2\n#define GL_TEXTURE3                       0x84C3\n#define GL_TEXTURE4                       0x84C4\n#define GL_TEXTURE5                       0x84C5\n#define GL_TEXTURE6                       0x84C6\n#define GL_TEXTURE7                       0x84C7\n#define GL_TEXTURE8                       0x84C8\n#define GL_TEXTURE9                       0x84C9\n#define GL_TEXTURE10                      0x84CA\n#define GL_TEXTURE11                      0x84CB\n#define GL_TEXTURE12                      0x84CC\n#define GL_TEXTURE13                      0x84CD\n#define GL_TEXTURE14                      0x84CE\n#define GL_TEXTURE15                      0x84CF\n#define GL_TEXTURE16                      0x84D0\n#define GL_TEXTURE17                      0x84D1\n#define GL_TEXTURE18                      0x84D2\n#define GL_TEXTURE19                      0x84D3\n#define GL_TEXTURE20                      0x84D4\n#define GL_TEXTURE21                      0x84D5\n#define GL_TEXTURE22                      0x84D6\n#define GL_TEXTURE23                      0x84D7\n#define GL_TEXTURE24                      0x84D8\n#define GL_TEXTURE25                      0x84D9\n#define GL_TEXTURE26                      0x84DA\n#define GL_TEXTURE27                      0x84DB\n#define GL_TEXTURE28                      0x84DC\n#define GL_TEXTURE29                      0x84DD\n#define GL_TEXTURE30                      0x84DE\n#define GL_TEXTURE31                      0x84DF\n#define GL_ACTIVE_TEXTURE                 0x84E0\n#define GL_MULTISAMPLE                    0x809D\n#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE            0x809F\n#define GL_SAMPLE_COVERAGE                0x80A0\n#define GL_SAMPLE_BUFFERS                 0x80A8\n#define GL_SAMPLES                        0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE          0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT         0x80AB\n#define GL_TEXTURE_CUBE_MAP               0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP         0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C\n#define GL_COMPRESSED_RGB                 0x84ED\n#define GL_COMPRESSED_RGBA                0x84EE\n#define GL_TEXTURE_COMPRESSION_HINT       0x84EF\n#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE  0x86A0\n#define GL_TEXTURE_COMPRESSED             0x86A1\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3\n#define GL_CLAMP_TO_BORDER                0x812D\n#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1\n#define GL_MAX_TEXTURE_UNITS              0x84E2\n#define GL_TRANSPOSE_MODELVIEW_MATRIX     0x84E3\n#define GL_TRANSPOSE_PROJECTION_MATRIX    0x84E4\n#define GL_TRANSPOSE_TEXTURE_MATRIX       0x84E5\n#define GL_TRANSPOSE_COLOR_MATRIX         0x84E6\n#define GL_MULTISAMPLE_BIT                0x20000000\n#define GL_NORMAL_MAP                     0x8511\n#define GL_REFLECTION_MAP                 0x8512\n#define GL_COMPRESSED_ALPHA               0x84E9\n#define GL_COMPRESSED_LUMINANCE           0x84EA\n#define GL_COMPRESSED_LUMINANCE_ALPHA     0x84EB\n#define GL_COMPRESSED_INTENSITY           0x84EC\n#define GL_COMBINE                        0x8570\n#define GL_COMBINE_RGB                    0x8571\n#define GL_COMBINE_ALPHA                  0x8572\n#define GL_SOURCE0_RGB                    0x8580\n#define GL_SOURCE1_RGB                    0x8581\n#define GL_SOURCE2_RGB                    0x8582\n#define GL_SOURCE0_ALPHA                  0x8588\n#define GL_SOURCE1_ALPHA                  0x8589\n#define GL_SOURCE2_ALPHA                  0x858A\n#define GL_OPERAND0_RGB                   0x8590\n#define GL_OPERAND1_RGB                   0x8591\n#define GL_OPERAND2_RGB                   0x8592\n#define GL_OPERAND0_ALPHA                 0x8598\n#define GL_OPERAND1_ALPHA                 0x8599\n#define GL_OPERAND2_ALPHA                 0x859A\n#define GL_RGB_SCALE                      0x8573\n#define GL_ADD_SIGNED                     0x8574\n#define GL_INTERPOLATE                    0x8575\n#define GL_SUBTRACT                       0x84E7\n#define GL_CONSTANT                       0x8576\n#define GL_PRIMARY_COLOR                  0x8577\n#define GL_PREVIOUS                       0x8578\n#define GL_DOT3_RGB                       0x86AE\n#define GL_DOT3_RGBA                      0x86AF\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img);\ntypedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m);\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m);\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glActiveTexture (GLenum texture);\nGLAPI void APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);\nGLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, void *img);\nGLAPI void APIENTRY glClientActiveTexture (GLenum texture);\nGLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);\nGLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);\nGLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);\nGLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);\nGLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);\nGLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);\nGLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);\nGLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);\nGLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);\nGLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);\nGLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);\nGLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);\nGLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\nGLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\nGLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);\nGLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\nGLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);\nGLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);\nGLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);\nGLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);\n#endif\n#endif /* GL_VERSION_1_3 */\n\n#ifndef GL_VERSION_1_4\n#define GL_VERSION_1_4 1\n#define GL_BLEND_DST_RGB                  0x80C8\n#define GL_BLEND_SRC_RGB                  0x80C9\n#define GL_BLEND_DST_ALPHA                0x80CA\n#define GL_BLEND_SRC_ALPHA                0x80CB\n#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128\n#define GL_DEPTH_COMPONENT16              0x81A5\n#define GL_DEPTH_COMPONENT24              0x81A6\n#define GL_DEPTH_COMPONENT32              0x81A7\n#define GL_MIRRORED_REPEAT                0x8370\n#define GL_MAX_TEXTURE_LOD_BIAS           0x84FD\n#define GL_TEXTURE_LOD_BIAS               0x8501\n#define GL_INCR_WRAP                      0x8507\n#define GL_DECR_WRAP                      0x8508\n#define GL_TEXTURE_DEPTH_SIZE             0x884A\n#define GL_TEXTURE_COMPARE_MODE           0x884C\n#define GL_TEXTURE_COMPARE_FUNC           0x884D\n#define GL_POINT_SIZE_MIN                 0x8126\n#define GL_POINT_SIZE_MAX                 0x8127\n#define GL_POINT_DISTANCE_ATTENUATION     0x8129\n#define GL_GENERATE_MIPMAP                0x8191\n#define GL_GENERATE_MIPMAP_HINT           0x8192\n#define GL_FOG_COORDINATE_SOURCE          0x8450\n#define GL_FOG_COORDINATE                 0x8451\n#define GL_FRAGMENT_DEPTH                 0x8452\n#define GL_CURRENT_FOG_COORDINATE         0x8453\n#define GL_FOG_COORDINATE_ARRAY_TYPE      0x8454\n#define GL_FOG_COORDINATE_ARRAY_STRIDE    0x8455\n#define GL_FOG_COORDINATE_ARRAY_POINTER   0x8456\n#define GL_FOG_COORDINATE_ARRAY           0x8457\n#define GL_COLOR_SUM                      0x8458\n#define GL_CURRENT_SECONDARY_COLOR        0x8459\n#define GL_SECONDARY_COLOR_ARRAY_SIZE     0x845A\n#define GL_SECONDARY_COLOR_ARRAY_TYPE     0x845B\n#define GL_SECONDARY_COLOR_ARRAY_STRIDE   0x845C\n#define GL_SECONDARY_COLOR_ARRAY_POINTER  0x845D\n#define GL_SECONDARY_COLOR_ARRAY          0x845E\n#define GL_TEXTURE_FILTER_CONTROL         0x8500\n#define GL_DEPTH_TEXTURE_MODE             0x884B\n#define GL_COMPARE_R_TO_TEXTURE           0x884E\n#define GL_BLEND_COLOR                    0x8005\n#define GL_BLEND_EQUATION                 0x8009\n#define GL_CONSTANT_COLOR                 0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002\n#define GL_CONSTANT_ALPHA                 0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004\n#define GL_FUNC_ADD                       0x8006\n#define GL_FUNC_REVERSE_SUBTRACT          0x800B\n#define GL_FUNC_SUBTRACT                  0x800A\n#define GL_MIN                            0x8007\n#define GL_MAX                            0x8008\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\nGLAPI void APIENTRY glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);\nGLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount);\nGLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);\nGLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);\nGLAPI void APIENTRY glFogCoordf (GLfloat coord);\nGLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);\nGLAPI void APIENTRY glFogCoordd (GLdouble coord);\nGLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);\nGLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);\nGLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);\nGLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);\nGLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);\nGLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);\nGLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);\nGLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);\nGLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);\nGLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);\nGLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);\nGLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);\nGLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);\nGLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);\nGLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);\nGLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);\nGLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);\nGLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);\nGLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);\nGLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);\nGLAPI void APIENTRY glWindowPos2iv (const GLint *v);\nGLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);\nGLAPI void APIENTRY glWindowPos2sv (const GLshort *v);\nGLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glWindowPos3iv (const GLint *v);\nGLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glWindowPos3sv (const GLshort *v);\nGLAPI void APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGLAPI void APIENTRY glBlendEquation (GLenum mode);\n#endif\n#endif /* GL_VERSION_1_4 */\n\n#ifndef GL_VERSION_1_5\n#define GL_VERSION_1_5 1\ntypedef khronos_ssize_t GLsizeiptr;\ntypedef khronos_intptr_t GLintptr;\n#define GL_BUFFER_SIZE                    0x8764\n#define GL_BUFFER_USAGE                   0x8765\n#define GL_QUERY_COUNTER_BITS             0x8864\n#define GL_CURRENT_QUERY                  0x8865\n#define GL_QUERY_RESULT                   0x8866\n#define GL_QUERY_RESULT_AVAILABLE         0x8867\n#define GL_ARRAY_BUFFER                   0x8892\n#define GL_ELEMENT_ARRAY_BUFFER           0x8893\n#define GL_ARRAY_BUFFER_BINDING           0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F\n#define GL_READ_ONLY                      0x88B8\n#define GL_WRITE_ONLY                     0x88B9\n#define GL_READ_WRITE                     0x88BA\n#define GL_BUFFER_ACCESS                  0x88BB\n#define GL_BUFFER_MAPPED                  0x88BC\n#define GL_BUFFER_MAP_POINTER             0x88BD\n#define GL_STREAM_DRAW                    0x88E0\n#define GL_STREAM_READ                    0x88E1\n#define GL_STREAM_COPY                    0x88E2\n#define GL_STATIC_DRAW                    0x88E4\n#define GL_STATIC_READ                    0x88E5\n#define GL_STATIC_COPY                    0x88E6\n#define GL_DYNAMIC_DRAW                   0x88E8\n#define GL_DYNAMIC_READ                   0x88E9\n#define GL_DYNAMIC_COPY                   0x88EA\n#define GL_SAMPLES_PASSED                 0x8914\n#define GL_SRC1_ALPHA                     0x8589\n#define GL_VERTEX_ARRAY_BUFFER_BINDING    0x8896\n#define GL_NORMAL_ARRAY_BUFFER_BINDING    0x8897\n#define GL_COLOR_ARRAY_BUFFER_BINDING     0x8898\n#define GL_INDEX_ARRAY_BUFFER_BINDING     0x8899\n#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A\n#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B\n#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C\n#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D\n#define GL_WEIGHT_ARRAY_BUFFER_BINDING    0x889E\n#define GL_FOG_COORD_SRC                  0x8450\n#define GL_FOG_COORD                      0x8451\n#define GL_CURRENT_FOG_COORD              0x8453\n#define GL_FOG_COORD_ARRAY_TYPE           0x8454\n#define GL_FOG_COORD_ARRAY_STRIDE         0x8455\n#define GL_FOG_COORD_ARRAY_POINTER        0x8456\n#define GL_FOG_COORD_ARRAY                0x8457\n#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D\n#define GL_SRC0_RGB                       0x8580\n#define GL_SRC1_RGB                       0x8581\n#define GL_SRC2_RGB                       0x8582\n#define GL_SRC0_ALPHA                     0x8588\n#define GL_SRC2_ALPHA                     0x858A\ntypedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);\ntypedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);\ntypedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);\ntypedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);\ntypedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);\ntypedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);\ntypedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, void *data);\ntypedef void *(APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);\ntypedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);\nGLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);\nGLAPI GLboolean APIENTRY glIsQuery (GLuint id);\nGLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);\nGLAPI void APIENTRY glEndQuery (GLenum target);\nGLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);\nGLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);\nGLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);\nGLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);\nGLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data);\nGLAPI void *APIENTRY glMapBuffer (GLenum target, GLenum access);\nGLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);\nGLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, void **params);\n#endif\n#endif /* GL_VERSION_1_5 */\n\n#ifndef GL_VERSION_2_0\n#define GL_VERSION_2_0 1\ntypedef char GLchar;\n#define GL_BLEND_EQUATION_RGB             0x8009\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625\n#define GL_CURRENT_VERTEX_ATTRIB          0x8626\n#define GL_VERTEX_PROGRAM_POINT_SIZE      0x8642\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645\n#define GL_STENCIL_BACK_FUNC              0x8800\n#define GL_STENCIL_BACK_FAIL              0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803\n#define GL_MAX_DRAW_BUFFERS               0x8824\n#define GL_DRAW_BUFFER0                   0x8825\n#define GL_DRAW_BUFFER1                   0x8826\n#define GL_DRAW_BUFFER2                   0x8827\n#define GL_DRAW_BUFFER3                   0x8828\n#define GL_DRAW_BUFFER4                   0x8829\n#define GL_DRAW_BUFFER5                   0x882A\n#define GL_DRAW_BUFFER6                   0x882B\n#define GL_DRAW_BUFFER7                   0x882C\n#define GL_DRAW_BUFFER8                   0x882D\n#define GL_DRAW_BUFFER9                   0x882E\n#define GL_DRAW_BUFFER10                  0x882F\n#define GL_DRAW_BUFFER11                  0x8830\n#define GL_DRAW_BUFFER12                  0x8831\n#define GL_DRAW_BUFFER13                  0x8832\n#define GL_DRAW_BUFFER14                  0x8833\n#define GL_DRAW_BUFFER15                  0x8834\n#define GL_BLEND_EQUATION_ALPHA           0x883D\n#define GL_MAX_VERTEX_ATTRIBS             0x8869\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A\n#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872\n#define GL_FRAGMENT_SHADER                0x8B30\n#define GL_VERTEX_SHADER                  0x8B31\n#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49\n#define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A\n#define GL_MAX_VARYING_FLOATS             0x8B4B\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D\n#define GL_SHADER_TYPE                    0x8B4F\n#define GL_FLOAT_VEC2                     0x8B50\n#define GL_FLOAT_VEC3                     0x8B51\n#define GL_FLOAT_VEC4                     0x8B52\n#define GL_INT_VEC2                       0x8B53\n#define GL_INT_VEC3                       0x8B54\n#define GL_INT_VEC4                       0x8B55\n#define GL_BOOL                           0x8B56\n#define GL_BOOL_VEC2                      0x8B57\n#define GL_BOOL_VEC3                      0x8B58\n#define GL_BOOL_VEC4                      0x8B59\n#define GL_FLOAT_MAT2                     0x8B5A\n#define GL_FLOAT_MAT3                     0x8B5B\n#define GL_FLOAT_MAT4                     0x8B5C\n#define GL_SAMPLER_1D                     0x8B5D\n#define GL_SAMPLER_2D                     0x8B5E\n#define GL_SAMPLER_3D                     0x8B5F\n#define GL_SAMPLER_CUBE                   0x8B60\n#define GL_SAMPLER_1D_SHADOW              0x8B61\n#define GL_SAMPLER_2D_SHADOW              0x8B62\n#define GL_DELETE_STATUS                  0x8B80\n#define GL_COMPILE_STATUS                 0x8B81\n#define GL_LINK_STATUS                    0x8B82\n#define GL_VALIDATE_STATUS                0x8B83\n#define GL_INFO_LOG_LENGTH                0x8B84\n#define GL_ATTACHED_SHADERS               0x8B85\n#define GL_ACTIVE_UNIFORMS                0x8B86\n#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87\n#define GL_SHADER_SOURCE_LENGTH           0x8B88\n#define GL_ACTIVE_ATTRIBUTES              0x8B89\n#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B\n#define GL_SHADING_LANGUAGE_VERSION       0x8B8C\n#define GL_CURRENT_PROGRAM                0x8B8D\n#define GL_POINT_SPRITE_COORD_ORIGIN      0x8CA0\n#define GL_LOWER_LEFT                     0x8CA1\n#define GL_UPPER_LEFT                     0x8CA2\n#define GL_STENCIL_BACK_REF               0x8CA3\n#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4\n#define GL_STENCIL_BACK_WRITEMASK         0x8CA5\n#define GL_VERTEX_PROGRAM_TWO_SIDE        0x8643\n#define GL_POINT_SPRITE                   0x8861\n#define GL_COORD_REPLACE                  0x8862\n#define GL_MAX_TEXTURE_COORDS             0x8871\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);\ntypedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\ntypedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);\ntypedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);\ntypedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);\ntypedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);\ntypedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);\ntypedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);\ntypedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);\ntypedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);\ntypedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\ntypedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\ntypedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);\ntypedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader);\ntypedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);\ntypedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\ntypedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);\ntypedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);\nGLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);\nGLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGLAPI void APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);\nGLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);\nGLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);\nGLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);\nGLAPI void APIENTRY glCompileShader (GLuint shader);\nGLAPI GLuint APIENTRY glCreateProgram (void);\nGLAPI GLuint APIENTRY glCreateShader (GLenum type);\nGLAPI void APIENTRY glDeleteProgram (GLuint program);\nGLAPI void APIENTRY glDeleteShader (GLuint shader);\nGLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);\nGLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);\nGLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);\nGLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\nGLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\nGLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);\nGLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);\nGLAPI GLboolean APIENTRY glIsProgram (GLuint program);\nGLAPI GLboolean APIENTRY glIsShader (GLuint shader);\nGLAPI void APIENTRY glLinkProgram (GLuint program);\nGLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\nGLAPI void APIENTRY glUseProgram (GLuint program);\nGLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);\nGLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);\nGLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI void APIENTRY glUniform1i (GLint location, GLint v0);\nGLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);\nGLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glValidateProgram (GLuint program);\nGLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);\nGLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);\nGLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);\nGLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);\nGLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);\nGLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\nGLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_VERSION_2_0 */\n\n#ifndef GL_VERSION_2_1\n#define GL_VERSION_2_1 1\n#define GL_PIXEL_PACK_BUFFER              0x88EB\n#define GL_PIXEL_UNPACK_BUFFER            0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING      0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING    0x88EF\n#define GL_FLOAT_MAT2x3                   0x8B65\n#define GL_FLOAT_MAT2x4                   0x8B66\n#define GL_FLOAT_MAT3x2                   0x8B67\n#define GL_FLOAT_MAT3x4                   0x8B68\n#define GL_FLOAT_MAT4x2                   0x8B69\n#define GL_FLOAT_MAT4x3                   0x8B6A\n#define GL_SRGB                           0x8C40\n#define GL_SRGB8                          0x8C41\n#define GL_SRGB_ALPHA                     0x8C42\n#define GL_SRGB8_ALPHA8                   0x8C43\n#define GL_COMPRESSED_SRGB                0x8C48\n#define GL_COMPRESSED_SRGB_ALPHA          0x8C49\n#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F\n#define GL_SLUMINANCE_ALPHA               0x8C44\n#define GL_SLUMINANCE8_ALPHA8             0x8C45\n#define GL_SLUMINANCE                     0x8C46\n#define GL_SLUMINANCE8                    0x8C47\n#define GL_COMPRESSED_SLUMINANCE          0x8C4A\n#define GL_COMPRESSED_SLUMINANCE_ALPHA    0x8C4B\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#endif\n#endif /* GL_VERSION_2_1 */\n\n#ifndef GL_VERSION_3_0\n#define GL_VERSION_3_0 1\ntypedef khronos_uint16_t GLhalf;\n#define GL_COMPARE_REF_TO_TEXTURE         0x884E\n#define GL_CLIP_DISTANCE0                 0x3000\n#define GL_CLIP_DISTANCE1                 0x3001\n#define GL_CLIP_DISTANCE2                 0x3002\n#define GL_CLIP_DISTANCE3                 0x3003\n#define GL_CLIP_DISTANCE4                 0x3004\n#define GL_CLIP_DISTANCE5                 0x3005\n#define GL_CLIP_DISTANCE6                 0x3006\n#define GL_CLIP_DISTANCE7                 0x3007\n#define GL_MAX_CLIP_DISTANCES             0x0D32\n#define GL_MAJOR_VERSION                  0x821B\n#define GL_MINOR_VERSION                  0x821C\n#define GL_NUM_EXTENSIONS                 0x821D\n#define GL_CONTEXT_FLAGS                  0x821E\n#define GL_COMPRESSED_RED                 0x8225\n#define GL_COMPRESSED_RG                  0x8226\n#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001\n#define GL_RGBA32F                        0x8814\n#define GL_RGB32F                         0x8815\n#define GL_RGBA16F                        0x881A\n#define GL_RGB16F                         0x881B\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER    0x88FD\n#define GL_MAX_ARRAY_TEXTURE_LAYERS       0x88FF\n#define GL_MIN_PROGRAM_TEXEL_OFFSET       0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET       0x8905\n#define GL_CLAMP_READ_COLOR               0x891C\n#define GL_FIXED_ONLY                     0x891D\n#define GL_MAX_VARYING_COMPONENTS         0x8B4B\n#define GL_TEXTURE_1D_ARRAY               0x8C18\n#define GL_PROXY_TEXTURE_1D_ARRAY         0x8C19\n#define GL_TEXTURE_2D_ARRAY               0x8C1A\n#define GL_PROXY_TEXTURE_2D_ARRAY         0x8C1B\n#define GL_TEXTURE_BINDING_1D_ARRAY       0x8C1C\n#define GL_TEXTURE_BINDING_2D_ARRAY       0x8C1D\n#define GL_R11F_G11F_B10F                 0x8C3A\n#define GL_UNSIGNED_INT_10F_11F_11F_REV   0x8C3B\n#define GL_RGB9_E5                        0x8C3D\n#define GL_UNSIGNED_INT_5_9_9_9_REV       0x8C3E\n#define GL_TEXTURE_SHARED_SIZE            0x8C3F\n#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80\n#define GL_TRANSFORM_FEEDBACK_VARYINGS    0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85\n#define GL_PRIMITIVES_GENERATED           0x8C87\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88\n#define GL_RASTERIZER_DISCARD             0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B\n#define GL_INTERLEAVED_ATTRIBS            0x8C8C\n#define GL_SEPARATE_ATTRIBS               0x8C8D\n#define GL_TRANSFORM_FEEDBACK_BUFFER      0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F\n#define GL_RGBA32UI                       0x8D70\n#define GL_RGB32UI                        0x8D71\n#define GL_RGBA16UI                       0x8D76\n#define GL_RGB16UI                        0x8D77\n#define GL_RGBA8UI                        0x8D7C\n#define GL_RGB8UI                         0x8D7D\n#define GL_RGBA32I                        0x8D82\n#define GL_RGB32I                         0x8D83\n#define GL_RGBA16I                        0x8D88\n#define GL_RGB16I                         0x8D89\n#define GL_RGBA8I                         0x8D8E\n#define GL_RGB8I                          0x8D8F\n#define GL_RED_INTEGER                    0x8D94\n#define GL_GREEN_INTEGER                  0x8D95\n#define GL_BLUE_INTEGER                   0x8D96\n#define GL_RGB_INTEGER                    0x8D98\n#define GL_RGBA_INTEGER                   0x8D99\n#define GL_BGR_INTEGER                    0x8D9A\n#define GL_BGRA_INTEGER                   0x8D9B\n#define GL_SAMPLER_1D_ARRAY               0x8DC0\n#define GL_SAMPLER_2D_ARRAY               0x8DC1\n#define GL_SAMPLER_1D_ARRAY_SHADOW        0x8DC3\n#define GL_SAMPLER_2D_ARRAY_SHADOW        0x8DC4\n#define GL_SAMPLER_CUBE_SHADOW            0x8DC5\n#define GL_UNSIGNED_INT_VEC2              0x8DC6\n#define GL_UNSIGNED_INT_VEC3              0x8DC7\n#define GL_UNSIGNED_INT_VEC4              0x8DC8\n#define GL_INT_SAMPLER_1D                 0x8DC9\n#define GL_INT_SAMPLER_2D                 0x8DCA\n#define GL_INT_SAMPLER_3D                 0x8DCB\n#define GL_INT_SAMPLER_CUBE               0x8DCC\n#define GL_INT_SAMPLER_1D_ARRAY           0x8DCE\n#define GL_INT_SAMPLER_2D_ARRAY           0x8DCF\n#define GL_UNSIGNED_INT_SAMPLER_1D        0x8DD1\n#define GL_UNSIGNED_INT_SAMPLER_2D        0x8DD2\n#define GL_UNSIGNED_INT_SAMPLER_3D        0x8DD3\n#define GL_UNSIGNED_INT_SAMPLER_CUBE      0x8DD4\n#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY  0x8DD6\n#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY  0x8DD7\n#define GL_QUERY_WAIT                     0x8E13\n#define GL_QUERY_NO_WAIT                  0x8E14\n#define GL_QUERY_BY_REGION_WAIT           0x8E15\n#define GL_QUERY_BY_REGION_NO_WAIT        0x8E16\n#define GL_BUFFER_ACCESS_FLAGS            0x911F\n#define GL_BUFFER_MAP_LENGTH              0x9120\n#define GL_BUFFER_MAP_OFFSET              0x9121\n#define GL_DEPTH_COMPONENT32F             0x8CAC\n#define GL_DEPTH32F_STENCIL8              0x8CAD\n#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD\n#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506\n#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210\n#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211\n#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212\n#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213\n#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214\n#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215\n#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216\n#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217\n#define GL_FRAMEBUFFER_DEFAULT            0x8218\n#define GL_FRAMEBUFFER_UNDEFINED          0x8219\n#define GL_DEPTH_STENCIL_ATTACHMENT       0x821A\n#define GL_MAX_RENDERBUFFER_SIZE          0x84E8\n#define GL_DEPTH_STENCIL                  0x84F9\n#define GL_UNSIGNED_INT_24_8              0x84FA\n#define GL_DEPTH24_STENCIL8               0x88F0\n#define GL_TEXTURE_STENCIL_SIZE           0x88F1\n#define GL_TEXTURE_RED_TYPE               0x8C10\n#define GL_TEXTURE_GREEN_TYPE             0x8C11\n#define GL_TEXTURE_BLUE_TYPE              0x8C12\n#define GL_TEXTURE_ALPHA_TYPE             0x8C13\n#define GL_TEXTURE_DEPTH_TYPE             0x8C16\n#define GL_UNSIGNED_NORMALIZED            0x8C17\n#define GL_FRAMEBUFFER_BINDING            0x8CA6\n#define GL_DRAW_FRAMEBUFFER_BINDING       0x8CA6\n#define GL_RENDERBUFFER_BINDING           0x8CA7\n#define GL_READ_FRAMEBUFFER               0x8CA8\n#define GL_DRAW_FRAMEBUFFER               0x8CA9\n#define GL_READ_FRAMEBUFFER_BINDING       0x8CAA\n#define GL_RENDERBUFFER_SAMPLES           0x8CAB\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4\n#define GL_FRAMEBUFFER_COMPLETE           0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB\n#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC\n#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD\n#define GL_MAX_COLOR_ATTACHMENTS          0x8CDF\n#define GL_COLOR_ATTACHMENT0              0x8CE0\n#define GL_COLOR_ATTACHMENT1              0x8CE1\n#define GL_COLOR_ATTACHMENT2              0x8CE2\n#define GL_COLOR_ATTACHMENT3              0x8CE3\n#define GL_COLOR_ATTACHMENT4              0x8CE4\n#define GL_COLOR_ATTACHMENT5              0x8CE5\n#define GL_COLOR_ATTACHMENT6              0x8CE6\n#define GL_COLOR_ATTACHMENT7              0x8CE7\n#define GL_COLOR_ATTACHMENT8              0x8CE8\n#define GL_COLOR_ATTACHMENT9              0x8CE9\n#define GL_COLOR_ATTACHMENT10             0x8CEA\n#define GL_COLOR_ATTACHMENT11             0x8CEB\n#define GL_COLOR_ATTACHMENT12             0x8CEC\n#define GL_COLOR_ATTACHMENT13             0x8CED\n#define GL_COLOR_ATTACHMENT14             0x8CEE\n#define GL_COLOR_ATTACHMENT15             0x8CEF\n#define GL_COLOR_ATTACHMENT16             0x8CF0\n#define GL_COLOR_ATTACHMENT17             0x8CF1\n#define GL_COLOR_ATTACHMENT18             0x8CF2\n#define GL_COLOR_ATTACHMENT19             0x8CF3\n#define GL_COLOR_ATTACHMENT20             0x8CF4\n#define GL_COLOR_ATTACHMENT21             0x8CF5\n#define GL_COLOR_ATTACHMENT22             0x8CF6\n#define GL_COLOR_ATTACHMENT23             0x8CF7\n#define GL_COLOR_ATTACHMENT24             0x8CF8\n#define GL_COLOR_ATTACHMENT25             0x8CF9\n#define GL_COLOR_ATTACHMENT26             0x8CFA\n#define GL_COLOR_ATTACHMENT27             0x8CFB\n#define GL_COLOR_ATTACHMENT28             0x8CFC\n#define GL_COLOR_ATTACHMENT29             0x8CFD\n#define GL_COLOR_ATTACHMENT30             0x8CFE\n#define GL_COLOR_ATTACHMENT31             0x8CFF\n#define GL_DEPTH_ATTACHMENT               0x8D00\n#define GL_STENCIL_ATTACHMENT             0x8D20\n#define GL_FRAMEBUFFER                    0x8D40\n#define GL_RENDERBUFFER                   0x8D41\n#define GL_RENDERBUFFER_WIDTH             0x8D42\n#define GL_RENDERBUFFER_HEIGHT            0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44\n#define GL_STENCIL_INDEX1                 0x8D46\n#define GL_STENCIL_INDEX4                 0x8D47\n#define GL_STENCIL_INDEX8                 0x8D48\n#define GL_STENCIL_INDEX16                0x8D49\n#define GL_RENDERBUFFER_RED_SIZE          0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56\n#define GL_MAX_SAMPLES                    0x8D57\n#define GL_INDEX                          0x8222\n#define GL_TEXTURE_LUMINANCE_TYPE         0x8C14\n#define GL_TEXTURE_INTENSITY_TYPE         0x8C15\n#define GL_FRAMEBUFFER_SRGB               0x8DB9\n#define GL_HALF_FLOAT                     0x140B\n#define GL_MAP_READ_BIT                   0x0001\n#define GL_MAP_WRITE_BIT                  0x0002\n#define GL_MAP_INVALIDATE_RANGE_BIT       0x0004\n#define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008\n#define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010\n#define GL_MAP_UNSYNCHRONIZED_BIT         0x0020\n#define GL_COMPRESSED_RED_RGTC1           0x8DBB\n#define GL_COMPRESSED_SIGNED_RED_RGTC1    0x8DBC\n#define GL_COMPRESSED_RG_RGTC2            0x8DBD\n#define GL_COMPRESSED_SIGNED_RG_RGTC2     0x8DBE\n#define GL_RG                             0x8227\n#define GL_RG_INTEGER                     0x8228\n#define GL_R8                             0x8229\n#define GL_R16                            0x822A\n#define GL_RG8                            0x822B\n#define GL_RG16                           0x822C\n#define GL_R16F                           0x822D\n#define GL_R32F                           0x822E\n#define GL_RG16F                          0x822F\n#define GL_RG32F                          0x8230\n#define GL_R8I                            0x8231\n#define GL_R8UI                           0x8232\n#define GL_R16I                           0x8233\n#define GL_R16UI                          0x8234\n#define GL_R32I                           0x8235\n#define GL_R32UI                          0x8236\n#define GL_RG8I                           0x8237\n#define GL_RG8UI                          0x8238\n#define GL_RG16I                          0x8239\n#define GL_RG16UI                         0x823A\n#define GL_RG32I                          0x823B\n#define GL_RG32UI                         0x823C\n#define GL_VERTEX_ARRAY_BINDING           0x85B5\n#define GL_CLAMP_VERTEX_COLOR             0x891A\n#define GL_CLAMP_FRAGMENT_COLOR           0x891B\n#define GL_ALPHA_INTEGER                  0x8D97\ntypedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\ntypedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);\ntypedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);\ntypedef void (APIENTRYP PFNGLENABLEIPROC) (GLenum target, GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLEIPROC) (GLenum target, GLuint index);\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC) (GLenum target, GLuint index);\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC) (void);\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\ntypedef void (APIENTRYP PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);\ntypedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);\ntypedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC) (void);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);\ntypedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\ntypedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);\ntypedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);\ntypedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);\ntypedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);\ntypedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);\ntypedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);\ntypedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\ntypedef void *(APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);\ntypedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);\ntypedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);\ntypedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\nGLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);\nGLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);\nGLAPI void APIENTRY glEnablei (GLenum target, GLuint index);\nGLAPI void APIENTRY glDisablei (GLenum target, GLuint index);\nGLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);\nGLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);\nGLAPI void APIENTRY glEndTransformFeedback (void);\nGLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);\nGLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\nGLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\nGLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);\nGLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);\nGLAPI void APIENTRY glEndConditionalRender (void);\nGLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);\nGLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);\nGLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);\nGLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);\nGLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);\nGLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);\nGLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);\nGLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);\nGLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);\nGLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);\nGLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);\nGLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);\nGLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);\nGLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\nGLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);\nGLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);\nGLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);\nGLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);\nGLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);\nGLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);\nGLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);\nGLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);\nGLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);\nGLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);\nGLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\nGLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGenerateMipmap (GLenum target);\nGLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI void *APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);\nGLAPI void APIENTRY glBindVertexArray (GLuint array);\nGLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);\nGLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);\nGLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);\n#endif\n#endif /* GL_VERSION_3_0 */\n\n#ifndef GL_VERSION_3_1\n#define GL_VERSION_3_1 1\n#define GL_SAMPLER_2D_RECT                0x8B63\n#define GL_SAMPLER_2D_RECT_SHADOW         0x8B64\n#define GL_SAMPLER_BUFFER                 0x8DC2\n#define GL_INT_SAMPLER_2D_RECT            0x8DCD\n#define GL_INT_SAMPLER_BUFFER             0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_2D_RECT   0x8DD5\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER    0x8DD8\n#define GL_TEXTURE_BUFFER                 0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE        0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER         0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D\n#define GL_TEXTURE_RECTANGLE              0x84F5\n#define GL_TEXTURE_BINDING_RECTANGLE      0x84F6\n#define GL_PROXY_TEXTURE_RECTANGLE        0x84F7\n#define GL_MAX_RECTANGLE_TEXTURE_SIZE     0x84F8\n#define GL_R8_SNORM                       0x8F94\n#define GL_RG8_SNORM                      0x8F95\n#define GL_RGB8_SNORM                     0x8F96\n#define GL_RGBA8_SNORM                    0x8F97\n#define GL_R16_SNORM                      0x8F98\n#define GL_RG16_SNORM                     0x8F99\n#define GL_RGB16_SNORM                    0x8F9A\n#define GL_RGBA16_SNORM                   0x8F9B\n#define GL_SIGNED_NORMALIZED              0x8F9C\n#define GL_PRIMITIVE_RESTART              0x8F9D\n#define GL_PRIMITIVE_RESTART_INDEX        0x8F9E\n#define GL_COPY_READ_BUFFER               0x8F36\n#define GL_COPY_WRITE_BUFFER              0x8F37\n#define GL_UNIFORM_BUFFER                 0x8A11\n#define GL_UNIFORM_BUFFER_BINDING         0x8A28\n#define GL_UNIFORM_BUFFER_START           0x8A29\n#define GL_UNIFORM_BUFFER_SIZE            0x8A2A\n#define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B\n#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C\n#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D\n#define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E\n#define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F\n#define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30\n#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31\n#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32\n#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33\n#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34\n#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35\n#define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36\n#define GL_UNIFORM_TYPE                   0x8A37\n#define GL_UNIFORM_SIZE                   0x8A38\n#define GL_UNIFORM_NAME_LENGTH            0x8A39\n#define GL_UNIFORM_BLOCK_INDEX            0x8A3A\n#define GL_UNIFORM_OFFSET                 0x8A3B\n#define GL_UNIFORM_ARRAY_STRIDE           0x8A3C\n#define GL_UNIFORM_MATRIX_STRIDE          0x8A3D\n#define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E\n#define GL_UNIFORM_BLOCK_BINDING          0x8A3F\n#define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40\n#define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42\n#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46\n#define GL_INVALID_INDEX                  0xFFFFFFFFu\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);\ntypedef void (APIENTRYP PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);\ntypedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);\ntypedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);\ntypedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);\ntypedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);\nGLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount);\nGLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);\nGLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);\nGLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);\nGLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);\nGLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);\nGLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);\nGLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);\n#endif\n#endif /* GL_VERSION_3_1 */\n\n#ifndef GL_VERSION_3_2\n#define GL_VERSION_3_2 1\ntypedef struct __GLsync *GLsync;\ntypedef khronos_uint64_t GLuint64;\ntypedef khronos_int64_t GLint64;\n#define GL_CONTEXT_CORE_PROFILE_BIT       0x00000001\n#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002\n#define GL_LINES_ADJACENCY                0x000A\n#define GL_LINE_STRIP_ADJACENCY           0x000B\n#define GL_TRIANGLES_ADJACENCY            0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY       0x000D\n#define GL_PROGRAM_POINT_SIZE             0x8642\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8\n#define GL_GEOMETRY_SHADER                0x8DD9\n#define GL_GEOMETRY_VERTICES_OUT          0x8916\n#define GL_GEOMETRY_INPUT_TYPE            0x8917\n#define GL_GEOMETRY_OUTPUT_TYPE           0x8918\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES   0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1\n#define GL_MAX_VERTEX_OUTPUT_COMPONENTS   0x9122\n#define GL_MAX_GEOMETRY_INPUT_COMPONENTS  0x9123\n#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124\n#define GL_MAX_FRAGMENT_INPUT_COMPONENTS  0x9125\n#define GL_CONTEXT_PROFILE_MASK           0x9126\n#define GL_DEPTH_CLAMP                    0x864F\n#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C\n#define GL_FIRST_VERTEX_CONVENTION        0x8E4D\n#define GL_LAST_VERTEX_CONVENTION         0x8E4E\n#define GL_PROVOKING_VERTEX               0x8E4F\n#define GL_TEXTURE_CUBE_MAP_SEAMLESS      0x884F\n#define GL_MAX_SERVER_WAIT_TIMEOUT        0x9111\n#define GL_OBJECT_TYPE                    0x9112\n#define GL_SYNC_CONDITION                 0x9113\n#define GL_SYNC_STATUS                    0x9114\n#define GL_SYNC_FLAGS                     0x9115\n#define GL_SYNC_FENCE                     0x9116\n#define GL_SYNC_GPU_COMMANDS_COMPLETE     0x9117\n#define GL_UNSIGNALED                     0x9118\n#define GL_SIGNALED                       0x9119\n#define GL_ALREADY_SIGNALED               0x911A\n#define GL_TIMEOUT_EXPIRED                0x911B\n#define GL_CONDITION_SATISFIED            0x911C\n#define GL_WAIT_FAILED                    0x911D\n#define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull\n#define GL_SYNC_FLUSH_COMMANDS_BIT        0x00000001\n#define GL_SAMPLE_POSITION                0x8E50\n#define GL_SAMPLE_MASK                    0x8E51\n#define GL_SAMPLE_MASK_VALUE              0x8E52\n#define GL_MAX_SAMPLE_MASK_WORDS          0x8E59\n#define GL_TEXTURE_2D_MULTISAMPLE         0x9100\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE   0x9101\n#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102\n#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105\n#define GL_TEXTURE_SAMPLES                0x9106\n#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107\n#define GL_SAMPLER_2D_MULTISAMPLE         0x9108\n#define GL_INT_SAMPLER_2D_MULTISAMPLE     0x9109\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A\n#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910B\n#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D\n#define GL_MAX_COLOR_TEXTURE_SAMPLES      0x910E\n#define GL_MAX_DEPTH_TEXTURE_SAMPLES      0x910F\n#define GL_MAX_INTEGER_SAMPLES            0x9110\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\ntypedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);\ntypedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);\ntypedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);\ntypedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync);\ntypedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);\ntypedef void (APIENTRYP PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);\ntypedef void (APIENTRYP PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *data);\ntypedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\ntypedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);\ntypedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\nGLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\nGLAPI void APIENTRY glProvokingVertex (GLenum mode);\nGLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);\nGLAPI GLboolean APIENTRY glIsSync (GLsync sync);\nGLAPI void APIENTRY glDeleteSync (GLsync sync);\nGLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);\nGLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *data);\nGLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\nGLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);\nGLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);\nGLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);\nGLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);\nGLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask);\n#endif\n#endif /* GL_VERSION_3_2 */\n\n#ifndef GL_VERSION_3_3\n#define GL_VERSION_3_3 1\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR    0x88FE\n#define GL_SRC1_COLOR                     0x88F9\n#define GL_ONE_MINUS_SRC1_COLOR           0x88FA\n#define GL_ONE_MINUS_SRC1_ALPHA           0x88FB\n#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS   0x88FC\n#define GL_ANY_SAMPLES_PASSED             0x8C2F\n#define GL_SAMPLER_BINDING                0x8919\n#define GL_RGB10_A2UI                     0x906F\n#define GL_TEXTURE_SWIZZLE_R              0x8E42\n#define GL_TEXTURE_SWIZZLE_G              0x8E43\n#define GL_TEXTURE_SWIZZLE_B              0x8E44\n#define GL_TEXTURE_SWIZZLE_A              0x8E45\n#define GL_TEXTURE_SWIZZLE_RGBA           0x8E46\n#define GL_TIME_ELAPSED                   0x88BF\n#define GL_TIMESTAMP                      0x8E28\n#define GL_INT_2_10_10_10_REV             0x8D9F\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);\ntypedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);\ntypedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);\ntypedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);\ntypedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);\ntypedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);\ntypedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);\ntypedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);\ntypedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);\ntypedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);\ntypedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\nGLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);\nGLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);\nGLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);\nGLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);\nGLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);\nGLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);\nGLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);\nGLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);\nGLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);\nGLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);\nGLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);\nGLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);\nGLAPI void APIENTRY glVertexAttribDivisor (GLuint index, GLuint divisor);\nGLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);\nGLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);\nGLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);\nGLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);\nGLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);\nGLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);\nGLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);\nGLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);\nGLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);\nGLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);\nGLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);\nGLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);\nGLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);\nGLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);\nGLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);\nGLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);\nGLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);\nGLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);\nGLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);\nGLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);\nGLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);\nGLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);\nGLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);\nGLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);\n#endif\n#endif /* GL_VERSION_3_3 */\n\n#ifndef GL_VERSION_4_0\n#define GL_VERSION_4_0 1\n#define GL_SAMPLE_SHADING                 0x8C36\n#define GL_MIN_SAMPLE_SHADING_VALUE       0x8C37\n#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E\n#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F\n#define GL_TEXTURE_CUBE_MAP_ARRAY         0x9009\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A\n#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY   0x900B\n#define GL_SAMPLER_CUBE_MAP_ARRAY         0x900C\n#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW  0x900D\n#define GL_INT_SAMPLER_CUBE_MAP_ARRAY     0x900E\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F\n#define GL_DRAW_INDIRECT_BUFFER           0x8F3F\n#define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43\n#define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F\n#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A\n#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B\n#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C\n#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D\n#define GL_MAX_VERTEX_STREAMS             0x8E71\n#define GL_DOUBLE_VEC2                    0x8FFC\n#define GL_DOUBLE_VEC3                    0x8FFD\n#define GL_DOUBLE_VEC4                    0x8FFE\n#define GL_DOUBLE_MAT2                    0x8F46\n#define GL_DOUBLE_MAT3                    0x8F47\n#define GL_DOUBLE_MAT4                    0x8F48\n#define GL_DOUBLE_MAT2x3                  0x8F49\n#define GL_DOUBLE_MAT2x4                  0x8F4A\n#define GL_DOUBLE_MAT3x2                  0x8F4B\n#define GL_DOUBLE_MAT3x4                  0x8F4C\n#define GL_DOUBLE_MAT4x2                  0x8F4D\n#define GL_DOUBLE_MAT4x3                  0x8F4E\n#define GL_ACTIVE_SUBROUTINES             0x8DE5\n#define GL_ACTIVE_SUBROUTINE_UNIFORMS     0x8DE6\n#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47\n#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH   0x8E48\n#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49\n#define GL_MAX_SUBROUTINES                0x8DE7\n#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8\n#define GL_NUM_COMPATIBLE_SUBROUTINES     0x8E4A\n#define GL_COMPATIBLE_SUBROUTINES         0x8E4B\n#define GL_PATCHES                        0x000E\n#define GL_PATCH_VERTICES                 0x8E72\n#define GL_PATCH_DEFAULT_INNER_LEVEL      0x8E73\n#define GL_PATCH_DEFAULT_OUTER_LEVEL      0x8E74\n#define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75\n#define GL_TESS_GEN_MODE                  0x8E76\n#define GL_TESS_GEN_SPACING               0x8E77\n#define GL_TESS_GEN_VERTEX_ORDER          0x8E78\n#define GL_TESS_GEN_POINT_MODE            0x8E79\n#define GL_ISOLINES                       0x8E7A\n#define GL_FRACTIONAL_ODD                 0x8E7B\n#define GL_FRACTIONAL_EVEN                0x8E7C\n#define GL_MAX_PATCH_VERTICES             0x8E7D\n#define GL_MAX_TESS_GEN_LEVEL             0x8E7E\n#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F\n#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80\n#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81\n#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82\n#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83\n#define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84\n#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85\n#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86\n#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89\n#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A\n#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C\n#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D\n#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E\n#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1\n#define GL_TESS_EVALUATION_SHADER         0x8E87\n#define GL_TESS_CONTROL_SHADER            0x8E88\n#define GL_TRANSFORM_FEEDBACK             0x8E22\n#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23\n#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24\n#define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25\n#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70\ntypedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLfloat value);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\ntypedef void (APIENTRYP PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect);\ntypedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);\ntypedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);\ntypedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);\ntypedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\ntypedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\ntypedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);\ntypedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);\ntypedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);\ntypedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);\ntypedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);\ntypedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);\ntypedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);\ntypedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);\ntypedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);\ntypedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);\ntypedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);\ntypedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMinSampleShading (GLfloat value);\nGLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);\nGLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\nGLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);\nGLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\nGLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const void *indirect);\nGLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect);\nGLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);\nGLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);\nGLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);\nGLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);\nGLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);\nGLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\nGLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\nGLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);\nGLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);\nGLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);\nGLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);\nGLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);\nGLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);\nGLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);\nGLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);\nGLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);\nGLAPI void APIENTRY glPauseTransformFeedback (void);\nGLAPI void APIENTRY glResumeTransformFeedback (void);\nGLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);\nGLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);\nGLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);\nGLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);\nGLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);\n#endif\n#endif /* GL_VERSION_4_0 */\n\n#ifndef GL_VERSION_4_1\n#define GL_VERSION_4_1 1\n#define GL_FIXED                          0x140C\n#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A\n#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B\n#define GL_LOW_FLOAT                      0x8DF0\n#define GL_MEDIUM_FLOAT                   0x8DF1\n#define GL_HIGH_FLOAT                     0x8DF2\n#define GL_LOW_INT                        0x8DF3\n#define GL_MEDIUM_INT                     0x8DF4\n#define GL_HIGH_INT                       0x8DF5\n#define GL_SHADER_COMPILER                0x8DFA\n#define GL_SHADER_BINARY_FORMATS          0x8DF8\n#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9\n#define GL_MAX_VERTEX_UNIFORM_VECTORS     0x8DFB\n#define GL_MAX_VARYING_VECTORS            0x8DFC\n#define GL_MAX_FRAGMENT_UNIFORM_VECTORS   0x8DFD\n#define GL_RGB565                         0x8D62\n#define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257\n#define GL_PROGRAM_BINARY_LENGTH          0x8741\n#define GL_NUM_PROGRAM_BINARY_FORMATS     0x87FE\n#define GL_PROGRAM_BINARY_FORMATS         0x87FF\n#define GL_VERTEX_SHADER_BIT              0x00000001\n#define GL_FRAGMENT_SHADER_BIT            0x00000002\n#define GL_GEOMETRY_SHADER_BIT            0x00000004\n#define GL_TESS_CONTROL_SHADER_BIT        0x00000008\n#define GL_TESS_EVALUATION_SHADER_BIT     0x00000010\n#define GL_ALL_SHADER_BITS                0xFFFFFFFF\n#define GL_PROGRAM_SEPARABLE              0x8258\n#define GL_ACTIVE_PROGRAM                 0x8259\n#define GL_PROGRAM_PIPELINE_BINDING       0x825A\n#define GL_MAX_VIEWPORTS                  0x825B\n#define GL_VIEWPORT_SUBPIXEL_BITS         0x825C\n#define GL_VIEWPORT_BOUNDS_RANGE          0x825D\n#define GL_LAYER_PROVOKING_VERTEX         0x825E\n#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F\n#define GL_UNDEFINED_VERTEX               0x8260\ntypedef void (APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);\ntypedef void (APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);\ntypedef void (APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);\ntypedef void (APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);\ntypedef void (APIENTRYP PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);\ntypedef void (APIENTRYP PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);\ntypedef void (APIENTRYP PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);\ntypedef void (APIENTRYP PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar *const*strings);\ntypedef void (APIENTRYP PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);\ntypedef void (APIENTRYP PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);\ntypedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);\ntypedef void (APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\ntypedef void (APIENTRYP PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);\ntypedef void (APIENTRYP PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f);\ntypedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);\ntypedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glReleaseShaderCompiler (void);\nGLAPI void APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);\nGLAPI void APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);\nGLAPI void APIENTRY glDepthRangef (GLfloat n, GLfloat f);\nGLAPI void APIENTRY glClearDepthf (GLfloat d);\nGLAPI void APIENTRY glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);\nGLAPI void APIENTRY glProgramBinary (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);\nGLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);\nGLAPI void APIENTRY glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);\nGLAPI void APIENTRY glActiveShaderProgram (GLuint pipeline, GLuint program);\nGLAPI GLuint APIENTRY glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar *const*strings);\nGLAPI void APIENTRY glBindProgramPipeline (GLuint pipeline);\nGLAPI void APIENTRY glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);\nGLAPI void APIENTRY glGenProgramPipelines (GLsizei n, GLuint *pipelines);\nGLAPI GLboolean APIENTRY glIsProgramPipeline (GLuint pipeline);\nGLAPI void APIENTRY glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);\nGLAPI void APIENTRY glProgramUniform1i (GLuint program, GLint location, GLint v0);\nGLAPI void APIENTRY glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform1f (GLuint program, GLint location, GLfloat v0);\nGLAPI void APIENTRY glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform1d (GLuint program, GLint location, GLdouble v0);\nGLAPI void APIENTRY glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform1ui (GLuint program, GLint location, GLuint v0);\nGLAPI void APIENTRY glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);\nGLAPI void APIENTRY glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);\nGLAPI void APIENTRY glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);\nGLAPI void APIENTRY glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);\nGLAPI void APIENTRY glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI void APIENTRY glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI void APIENTRY glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);\nGLAPI void APIENTRY glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI void APIENTRY glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI void APIENTRY glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI void APIENTRY glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);\nGLAPI void APIENTRY glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI void APIENTRY glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glValidateProgramPipeline (GLuint pipeline);\nGLAPI void APIENTRY glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGLAPI void APIENTRY glVertexAttribL1d (GLuint index, GLdouble x);\nGLAPI void APIENTRY glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexAttribL1dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL2dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL3dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL4dv (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\nGLAPI void APIENTRY glViewportIndexedfv (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glScissorArrayv (GLuint first, GLsizei count, const GLint *v);\nGLAPI void APIENTRY glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glScissorIndexedv (GLuint index, const GLint *v);\nGLAPI void APIENTRY glDepthRangeArrayv (GLuint first, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glDepthRangeIndexed (GLuint index, GLdouble n, GLdouble f);\nGLAPI void APIENTRY glGetFloati_v (GLenum target, GLuint index, GLfloat *data);\nGLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);\n#endif\n#endif /* GL_VERSION_4_1 */\n\n#ifndef GL_VERSION_4_2\n#define GL_VERSION_4_2 1\n#define GL_COPY_READ_BUFFER_BINDING       0x8F36\n#define GL_COPY_WRITE_BUFFER_BINDING      0x8F37\n#define GL_TRANSFORM_FEEDBACK_ACTIVE      0x8E24\n#define GL_TRANSFORM_FEEDBACK_PAUSED      0x8E23\n#define GL_UNPACK_COMPRESSED_BLOCK_WIDTH  0x9127\n#define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128\n#define GL_UNPACK_COMPRESSED_BLOCK_DEPTH  0x9129\n#define GL_UNPACK_COMPRESSED_BLOCK_SIZE   0x912A\n#define GL_PACK_COMPRESSED_BLOCK_WIDTH    0x912B\n#define GL_PACK_COMPRESSED_BLOCK_HEIGHT   0x912C\n#define GL_PACK_COMPRESSED_BLOCK_DEPTH    0x912D\n#define GL_PACK_COMPRESSED_BLOCK_SIZE     0x912E\n#define GL_NUM_SAMPLE_COUNTS              0x9380\n#define GL_MIN_MAP_BUFFER_ALIGNMENT       0x90BC\n#define GL_ATOMIC_COUNTER_BUFFER          0x92C0\n#define GL_ATOMIC_COUNTER_BUFFER_BINDING  0x92C1\n#define GL_ATOMIC_COUNTER_BUFFER_START    0x92C2\n#define GL_ATOMIC_COUNTER_BUFFER_SIZE     0x92C3\n#define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4\n#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5\n#define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB\n#define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF\n#define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0\n#define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1\n#define GL_MAX_VERTEX_ATOMIC_COUNTERS     0x92D2\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS   0x92D5\n#define GL_MAX_FRAGMENT_ATOMIC_COUNTERS   0x92D6\n#define GL_MAX_COMBINED_ATOMIC_COUNTERS   0x92D7\n#define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8\n#define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC\n#define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS  0x92D9\n#define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA\n#define GL_UNSIGNED_INT_ATOMIC_COUNTER    0x92DB\n#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001\n#define GL_ELEMENT_ARRAY_BARRIER_BIT      0x00000002\n#define GL_UNIFORM_BARRIER_BIT            0x00000004\n#define GL_TEXTURE_FETCH_BARRIER_BIT      0x00000008\n#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020\n#define GL_COMMAND_BARRIER_BIT            0x00000040\n#define GL_PIXEL_BUFFER_BARRIER_BIT       0x00000080\n#define GL_TEXTURE_UPDATE_BARRIER_BIT     0x00000100\n#define GL_BUFFER_UPDATE_BARRIER_BIT      0x00000200\n#define GL_FRAMEBUFFER_BARRIER_BIT        0x00000400\n#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800\n#define GL_ATOMIC_COUNTER_BARRIER_BIT     0x00001000\n#define GL_ALL_BARRIER_BITS               0xFFFFFFFF\n#define GL_MAX_IMAGE_UNITS                0x8F38\n#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39\n#define GL_IMAGE_BINDING_NAME             0x8F3A\n#define GL_IMAGE_BINDING_LEVEL            0x8F3B\n#define GL_IMAGE_BINDING_LAYERED          0x8F3C\n#define GL_IMAGE_BINDING_LAYER            0x8F3D\n#define GL_IMAGE_BINDING_ACCESS           0x8F3E\n#define GL_IMAGE_1D                       0x904C\n#define GL_IMAGE_2D                       0x904D\n#define GL_IMAGE_3D                       0x904E\n#define GL_IMAGE_2D_RECT                  0x904F\n#define GL_IMAGE_CUBE                     0x9050\n#define GL_IMAGE_BUFFER                   0x9051\n#define GL_IMAGE_1D_ARRAY                 0x9052\n#define GL_IMAGE_2D_ARRAY                 0x9053\n#define GL_IMAGE_CUBE_MAP_ARRAY           0x9054\n#define GL_IMAGE_2D_MULTISAMPLE           0x9055\n#define GL_IMAGE_2D_MULTISAMPLE_ARRAY     0x9056\n#define GL_INT_IMAGE_1D                   0x9057\n#define GL_INT_IMAGE_2D                   0x9058\n#define GL_INT_IMAGE_3D                   0x9059\n#define GL_INT_IMAGE_2D_RECT              0x905A\n#define GL_INT_IMAGE_CUBE                 0x905B\n#define GL_INT_IMAGE_BUFFER               0x905C\n#define GL_INT_IMAGE_1D_ARRAY             0x905D\n#define GL_INT_IMAGE_2D_ARRAY             0x905E\n#define GL_INT_IMAGE_CUBE_MAP_ARRAY       0x905F\n#define GL_INT_IMAGE_2D_MULTISAMPLE       0x9060\n#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061\n#define GL_UNSIGNED_INT_IMAGE_1D          0x9062\n#define GL_UNSIGNED_INT_IMAGE_2D          0x9063\n#define GL_UNSIGNED_INT_IMAGE_3D          0x9064\n#define GL_UNSIGNED_INT_IMAGE_2D_RECT     0x9065\n#define GL_UNSIGNED_INT_IMAGE_CUBE        0x9066\n#define GL_UNSIGNED_INT_IMAGE_BUFFER      0x9067\n#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY    0x9068\n#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY    0x9069\n#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A\n#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B\n#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C\n#define GL_MAX_IMAGE_SAMPLES              0x906D\n#define GL_IMAGE_BINDING_FORMAT           0x906E\n#define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7\n#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8\n#define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9\n#define GL_MAX_VERTEX_IMAGE_UNIFORMS      0x90CA\n#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB\n#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC\n#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS    0x90CD\n#define GL_MAX_FRAGMENT_IMAGE_UNIFORMS    0x90CE\n#define GL_MAX_COMBINED_IMAGE_UNIFORMS    0x90CF\n#define GL_COMPRESSED_RGBA_BPTC_UNORM     0x8E8C\n#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D\n#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E\n#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F\n#define GL_TEXTURE_IMMUTABLE_FORMAT       0x912F\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);\ntypedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);\ntypedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);\ntypedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawArraysInstancedBaseInstance (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);\nGLAPI void APIENTRY glDrawElementsInstancedBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);\nGLAPI void APIENTRY glDrawElementsInstancedBaseVertexBaseInstance (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);\nGLAPI void APIENTRY glGetInternalformativ (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint *params);\nGLAPI void APIENTRY glGetActiveAtomicCounterBufferiv (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);\nGLAPI void APIENTRY glBindImageTexture (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);\nGLAPI void APIENTRY glMemoryBarrier (GLbitfield barriers);\nGLAPI void APIENTRY glTexStorage1D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\nGLAPI void APIENTRY glTexStorage2D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glTexStorage3D (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI void APIENTRY glDrawTransformFeedbackInstanced (GLenum mode, GLuint id, GLsizei instancecount);\nGLAPI void APIENTRY glDrawTransformFeedbackStreamInstanced (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);\n#endif\n#endif /* GL_VERSION_4_2 */\n\n#ifndef GL_VERSION_4_3\n#define GL_VERSION_4_3 1\ntypedef void (APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\n#define GL_NUM_SHADING_LANGUAGE_VERSIONS  0x82E9\n#define GL_VERTEX_ATTRIB_ARRAY_LONG       0x874E\n#define GL_COMPRESSED_RGB8_ETC2           0x9274\n#define GL_COMPRESSED_SRGB8_ETC2          0x9275\n#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276\n#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277\n#define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278\n#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279\n#define GL_COMPRESSED_R11_EAC             0x9270\n#define GL_COMPRESSED_SIGNED_R11_EAC      0x9271\n#define GL_COMPRESSED_RG11_EAC            0x9272\n#define GL_COMPRESSED_SIGNED_RG11_EAC     0x9273\n#define GL_PRIMITIVE_RESTART_FIXED_INDEX  0x8D69\n#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A\n#define GL_MAX_ELEMENT_INDEX              0x8D6B\n#define GL_COMPUTE_SHADER                 0x91B9\n#define GL_MAX_COMPUTE_UNIFORM_BLOCKS     0x91BB\n#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC\n#define GL_MAX_COMPUTE_IMAGE_UNIFORMS     0x91BD\n#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262\n#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263\n#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264\n#define GL_MAX_COMPUTE_ATOMIC_COUNTERS    0x8265\n#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266\n#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB\n#define GL_MAX_COMPUTE_WORK_GROUP_COUNT   0x91BE\n#define GL_MAX_COMPUTE_WORK_GROUP_SIZE    0x91BF\n#define GL_COMPUTE_WORK_GROUP_SIZE        0x8267\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED\n#define GL_DISPATCH_INDIRECT_BUFFER       0x90EE\n#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF\n#define GL_COMPUTE_SHADER_BIT             0x00000020\n#define GL_DEBUG_OUTPUT_SYNCHRONOUS       0x8242\n#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243\n#define GL_DEBUG_CALLBACK_FUNCTION        0x8244\n#define GL_DEBUG_CALLBACK_USER_PARAM      0x8245\n#define GL_DEBUG_SOURCE_API               0x8246\n#define GL_DEBUG_SOURCE_WINDOW_SYSTEM     0x8247\n#define GL_DEBUG_SOURCE_SHADER_COMPILER   0x8248\n#define GL_DEBUG_SOURCE_THIRD_PARTY       0x8249\n#define GL_DEBUG_SOURCE_APPLICATION       0x824A\n#define GL_DEBUG_SOURCE_OTHER             0x824B\n#define GL_DEBUG_TYPE_ERROR               0x824C\n#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D\n#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  0x824E\n#define GL_DEBUG_TYPE_PORTABILITY         0x824F\n#define GL_DEBUG_TYPE_PERFORMANCE         0x8250\n#define GL_DEBUG_TYPE_OTHER               0x8251\n#define GL_MAX_DEBUG_MESSAGE_LENGTH       0x9143\n#define GL_MAX_DEBUG_LOGGED_MESSAGES      0x9144\n#define GL_DEBUG_LOGGED_MESSAGES          0x9145\n#define GL_DEBUG_SEVERITY_HIGH            0x9146\n#define GL_DEBUG_SEVERITY_MEDIUM          0x9147\n#define GL_DEBUG_SEVERITY_LOW             0x9148\n#define GL_DEBUG_TYPE_MARKER              0x8268\n#define GL_DEBUG_TYPE_PUSH_GROUP          0x8269\n#define GL_DEBUG_TYPE_POP_GROUP           0x826A\n#define GL_DEBUG_SEVERITY_NOTIFICATION    0x826B\n#define GL_MAX_DEBUG_GROUP_STACK_DEPTH    0x826C\n#define GL_DEBUG_GROUP_STACK_DEPTH        0x826D\n#define GL_BUFFER                         0x82E0\n#define GL_SHADER                         0x82E1\n#define GL_PROGRAM                        0x82E2\n#define GL_QUERY                          0x82E3\n#define GL_PROGRAM_PIPELINE               0x82E4\n#define GL_SAMPLER                        0x82E6\n#define GL_MAX_LABEL_LENGTH               0x82E8\n#define GL_DEBUG_OUTPUT                   0x92E0\n#define GL_CONTEXT_FLAG_DEBUG_BIT         0x00000002\n#define GL_MAX_UNIFORM_LOCATIONS          0x826E\n#define GL_FRAMEBUFFER_DEFAULT_WIDTH      0x9310\n#define GL_FRAMEBUFFER_DEFAULT_HEIGHT     0x9311\n#define GL_FRAMEBUFFER_DEFAULT_LAYERS     0x9312\n#define GL_FRAMEBUFFER_DEFAULT_SAMPLES    0x9313\n#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314\n#define GL_MAX_FRAMEBUFFER_WIDTH          0x9315\n#define GL_MAX_FRAMEBUFFER_HEIGHT         0x9316\n#define GL_MAX_FRAMEBUFFER_LAYERS         0x9317\n#define GL_MAX_FRAMEBUFFER_SAMPLES        0x9318\n#define GL_INTERNALFORMAT_SUPPORTED       0x826F\n#define GL_INTERNALFORMAT_PREFERRED       0x8270\n#define GL_INTERNALFORMAT_RED_SIZE        0x8271\n#define GL_INTERNALFORMAT_GREEN_SIZE      0x8272\n#define GL_INTERNALFORMAT_BLUE_SIZE       0x8273\n#define GL_INTERNALFORMAT_ALPHA_SIZE      0x8274\n#define GL_INTERNALFORMAT_DEPTH_SIZE      0x8275\n#define GL_INTERNALFORMAT_STENCIL_SIZE    0x8276\n#define GL_INTERNALFORMAT_SHARED_SIZE     0x8277\n#define GL_INTERNALFORMAT_RED_TYPE        0x8278\n#define GL_INTERNALFORMAT_GREEN_TYPE      0x8279\n#define GL_INTERNALFORMAT_BLUE_TYPE       0x827A\n#define GL_INTERNALFORMAT_ALPHA_TYPE      0x827B\n#define GL_INTERNALFORMAT_DEPTH_TYPE      0x827C\n#define GL_INTERNALFORMAT_STENCIL_TYPE    0x827D\n#define GL_MAX_WIDTH                      0x827E\n#define GL_MAX_HEIGHT                     0x827F\n#define GL_MAX_DEPTH                      0x8280\n#define GL_MAX_LAYERS                     0x8281\n#define GL_MAX_COMBINED_DIMENSIONS        0x8282\n#define GL_COLOR_COMPONENTS               0x8283\n#define GL_DEPTH_COMPONENTS               0x8284\n#define GL_STENCIL_COMPONENTS             0x8285\n#define GL_COLOR_RENDERABLE               0x8286\n#define GL_DEPTH_RENDERABLE               0x8287\n#define GL_STENCIL_RENDERABLE             0x8288\n#define GL_FRAMEBUFFER_RENDERABLE         0x8289\n#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A\n#define GL_FRAMEBUFFER_BLEND              0x828B\n#define GL_READ_PIXELS                    0x828C\n#define GL_READ_PIXELS_FORMAT             0x828D\n#define GL_READ_PIXELS_TYPE               0x828E\n#define GL_TEXTURE_IMAGE_FORMAT           0x828F\n#define GL_TEXTURE_IMAGE_TYPE             0x8290\n#define GL_GET_TEXTURE_IMAGE_FORMAT       0x8291\n#define GL_GET_TEXTURE_IMAGE_TYPE         0x8292\n#define GL_MIPMAP                         0x8293\n#define GL_MANUAL_GENERATE_MIPMAP         0x8294\n#define GL_AUTO_GENERATE_MIPMAP           0x8295\n#define GL_COLOR_ENCODING                 0x8296\n#define GL_SRGB_READ                      0x8297\n#define GL_SRGB_WRITE                     0x8298\n#define GL_FILTER                         0x829A\n#define GL_VERTEX_TEXTURE                 0x829B\n#define GL_TESS_CONTROL_TEXTURE           0x829C\n#define GL_TESS_EVALUATION_TEXTURE        0x829D\n#define GL_GEOMETRY_TEXTURE               0x829E\n#define GL_FRAGMENT_TEXTURE               0x829F\n#define GL_COMPUTE_TEXTURE                0x82A0\n#define GL_TEXTURE_SHADOW                 0x82A1\n#define GL_TEXTURE_GATHER                 0x82A2\n#define GL_TEXTURE_GATHER_SHADOW          0x82A3\n#define GL_SHADER_IMAGE_LOAD              0x82A4\n#define GL_SHADER_IMAGE_STORE             0x82A5\n#define GL_SHADER_IMAGE_ATOMIC            0x82A6\n#define GL_IMAGE_TEXEL_SIZE               0x82A7\n#define GL_IMAGE_COMPATIBILITY_CLASS      0x82A8\n#define GL_IMAGE_PIXEL_FORMAT             0x82A9\n#define GL_IMAGE_PIXEL_TYPE               0x82AA\n#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC\n#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD\n#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE\n#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF\n#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1\n#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2\n#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE  0x82B3\n#define GL_CLEAR_BUFFER                   0x82B4\n#define GL_TEXTURE_VIEW                   0x82B5\n#define GL_VIEW_COMPATIBILITY_CLASS       0x82B6\n#define GL_FULL_SUPPORT                   0x82B7\n#define GL_CAVEAT_SUPPORT                 0x82B8\n#define GL_IMAGE_CLASS_4_X_32             0x82B9\n#define GL_IMAGE_CLASS_2_X_32             0x82BA\n#define GL_IMAGE_CLASS_1_X_32             0x82BB\n#define GL_IMAGE_CLASS_4_X_16             0x82BC\n#define GL_IMAGE_CLASS_2_X_16             0x82BD\n#define GL_IMAGE_CLASS_1_X_16             0x82BE\n#define GL_IMAGE_CLASS_4_X_8              0x82BF\n#define GL_IMAGE_CLASS_2_X_8              0x82C0\n#define GL_IMAGE_CLASS_1_X_8              0x82C1\n#define GL_IMAGE_CLASS_11_11_10           0x82C2\n#define GL_IMAGE_CLASS_10_10_10_2         0x82C3\n#define GL_VIEW_CLASS_128_BITS            0x82C4\n#define GL_VIEW_CLASS_96_BITS             0x82C5\n#define GL_VIEW_CLASS_64_BITS             0x82C6\n#define GL_VIEW_CLASS_48_BITS             0x82C7\n#define GL_VIEW_CLASS_32_BITS             0x82C8\n#define GL_VIEW_CLASS_24_BITS             0x82C9\n#define GL_VIEW_CLASS_16_BITS             0x82CA\n#define GL_VIEW_CLASS_8_BITS              0x82CB\n#define GL_VIEW_CLASS_S3TC_DXT1_RGB       0x82CC\n#define GL_VIEW_CLASS_S3TC_DXT1_RGBA      0x82CD\n#define GL_VIEW_CLASS_S3TC_DXT3_RGBA      0x82CE\n#define GL_VIEW_CLASS_S3TC_DXT5_RGBA      0x82CF\n#define GL_VIEW_CLASS_RGTC1_RED           0x82D0\n#define GL_VIEW_CLASS_RGTC2_RG            0x82D1\n#define GL_VIEW_CLASS_BPTC_UNORM          0x82D2\n#define GL_VIEW_CLASS_BPTC_FLOAT          0x82D3\n#define GL_UNIFORM                        0x92E1\n#define GL_UNIFORM_BLOCK                  0x92E2\n#define GL_PROGRAM_INPUT                  0x92E3\n#define GL_PROGRAM_OUTPUT                 0x92E4\n#define GL_BUFFER_VARIABLE                0x92E5\n#define GL_SHADER_STORAGE_BLOCK           0x92E6\n#define GL_VERTEX_SUBROUTINE              0x92E8\n#define GL_TESS_CONTROL_SUBROUTINE        0x92E9\n#define GL_TESS_EVALUATION_SUBROUTINE     0x92EA\n#define GL_GEOMETRY_SUBROUTINE            0x92EB\n#define GL_FRAGMENT_SUBROUTINE            0x92EC\n#define GL_COMPUTE_SUBROUTINE             0x92ED\n#define GL_VERTEX_SUBROUTINE_UNIFORM      0x92EE\n#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF\n#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0\n#define GL_GEOMETRY_SUBROUTINE_UNIFORM    0x92F1\n#define GL_FRAGMENT_SUBROUTINE_UNIFORM    0x92F2\n#define GL_COMPUTE_SUBROUTINE_UNIFORM     0x92F3\n#define GL_TRANSFORM_FEEDBACK_VARYING     0x92F4\n#define GL_ACTIVE_RESOURCES               0x92F5\n#define GL_MAX_NAME_LENGTH                0x92F6\n#define GL_MAX_NUM_ACTIVE_VARIABLES       0x92F7\n#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8\n#define GL_NAME_LENGTH                    0x92F9\n#define GL_TYPE                           0x92FA\n#define GL_ARRAY_SIZE                     0x92FB\n#define GL_OFFSET                         0x92FC\n#define GL_BLOCK_INDEX                    0x92FD\n#define GL_ARRAY_STRIDE                   0x92FE\n#define GL_MATRIX_STRIDE                  0x92FF\n#define GL_IS_ROW_MAJOR                   0x9300\n#define GL_ATOMIC_COUNTER_BUFFER_INDEX    0x9301\n#define GL_BUFFER_BINDING                 0x9302\n#define GL_BUFFER_DATA_SIZE               0x9303\n#define GL_NUM_ACTIVE_VARIABLES           0x9304\n#define GL_ACTIVE_VARIABLES               0x9305\n#define GL_REFERENCED_BY_VERTEX_SHADER    0x9306\n#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307\n#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308\n#define GL_REFERENCED_BY_GEOMETRY_SHADER  0x9309\n#define GL_REFERENCED_BY_FRAGMENT_SHADER  0x930A\n#define GL_REFERENCED_BY_COMPUTE_SHADER   0x930B\n#define GL_TOP_LEVEL_ARRAY_SIZE           0x930C\n#define GL_TOP_LEVEL_ARRAY_STRIDE         0x930D\n#define GL_LOCATION                       0x930E\n#define GL_LOCATION_INDEX                 0x930F\n#define GL_IS_PER_PATCH                   0x92E7\n#define GL_SHADER_STORAGE_BUFFER          0x90D2\n#define GL_SHADER_STORAGE_BUFFER_BINDING  0x90D3\n#define GL_SHADER_STORAGE_BUFFER_START    0x90D4\n#define GL_SHADER_STORAGE_BUFFER_SIZE     0x90D5\n#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6\n#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7\n#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8\n#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9\n#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA\n#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB\n#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC\n#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD\n#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE  0x90DE\n#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF\n#define GL_SHADER_STORAGE_BARRIER_BIT     0x00002000\n#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39\n#define GL_DEPTH_STENCIL_TEXTURE_MODE     0x90EA\n#define GL_TEXTURE_BUFFER_OFFSET          0x919D\n#define GL_TEXTURE_BUFFER_SIZE            0x919E\n#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F\n#define GL_TEXTURE_VIEW_MIN_LEVEL         0x82DB\n#define GL_TEXTURE_VIEW_NUM_LEVELS        0x82DC\n#define GL_TEXTURE_VIEW_MIN_LAYER         0x82DD\n#define GL_TEXTURE_VIEW_NUM_LAYERS        0x82DE\n#define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF\n#define GL_VERTEX_ATTRIB_BINDING          0x82D4\n#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET  0x82D5\n#define GL_VERTEX_BINDING_DIVISOR         0x82D6\n#define GL_VERTEX_BINDING_OFFSET          0x82D7\n#define GL_VERTEX_BINDING_STRIDE          0x82D8\n#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9\n#define GL_MAX_VERTEX_ATTRIB_BINDINGS     0x82DA\n#define GL_VERTEX_BINDING_BUFFER          0x8F4F\n#define GL_DISPLAY_LIST                   0x82E7\ntypedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);\ntypedef void (APIENTRYP PFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);\ntypedef void (APIENTRYP PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params);\ntypedef void (APIENTRYP PFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (APIENTRYP PFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);\ntypedef void (APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);\ntypedef void (APIENTRYP PFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);\ntypedef GLuint (APIENTRYP PFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\ntypedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params);\ntypedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);\ntypedef GLint (APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);\ntypedef void (APIENTRYP PFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);\ntypedef void (APIENTRYP PFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\ntypedef void (APIENTRYP PFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);\ntypedef void (APIENTRYP PFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam);\ntypedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\ntypedef void (APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);\ntypedef void (APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void);\ntypedef void (APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);\ntypedef void (APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);\ntypedef void (APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label);\ntypedef void (APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glClearBufferData (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glClearBufferSubData (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glDispatchCompute (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);\nGLAPI void APIENTRY glDispatchComputeIndirect (GLintptr indirect);\nGLAPI void APIENTRY glCopyImageSubData (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\nGLAPI void APIENTRY glFramebufferParameteri (GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glGetFramebufferParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetInternalformati64v (GLenum target, GLenum internalformat, GLenum pname, GLsizei count, GLint64 *params);\nGLAPI void APIENTRY glInvalidateTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI void APIENTRY glInvalidateTexImage (GLuint texture, GLint level);\nGLAPI void APIENTRY glInvalidateBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr length);\nGLAPI void APIENTRY glInvalidateBufferData (GLuint buffer);\nGLAPI void APIENTRY glInvalidateFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments);\nGLAPI void APIENTRY glInvalidateSubFramebuffer (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glMultiDrawArraysIndirect (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);\nGLAPI void APIENTRY glMultiDrawElementsIndirect (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);\nGLAPI void APIENTRY glGetProgramInterfaceiv (GLuint program, GLenum programInterface, GLenum pname, GLint *params);\nGLAPI GLuint APIENTRY glGetProgramResourceIndex (GLuint program, GLenum programInterface, const GLchar *name);\nGLAPI void APIENTRY glGetProgramResourceName (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);\nGLAPI void APIENTRY glGetProgramResourceiv (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLint *params);\nGLAPI GLint APIENTRY glGetProgramResourceLocation (GLuint program, GLenum programInterface, const GLchar *name);\nGLAPI GLint APIENTRY glGetProgramResourceLocationIndex (GLuint program, GLenum programInterface, const GLchar *name);\nGLAPI void APIENTRY glShaderStorageBlockBinding (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding);\nGLAPI void APIENTRY glTexBufferRange (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glTexStorage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTexStorage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTextureView (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\nGLAPI void APIENTRY glBindVertexBuffer (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\nGLAPI void APIENTRY glVertexAttribFormat (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexAttribIFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexAttribLFormat (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexAttribBinding (GLuint attribindex, GLuint bindingindex);\nGLAPI void APIENTRY glVertexBindingDivisor (GLuint bindingindex, GLuint divisor);\nGLAPI void APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\nGLAPI void APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\nGLAPI void APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam);\nGLAPI GLuint APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\nGLAPI void APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message);\nGLAPI void APIENTRY glPopDebugGroup (void);\nGLAPI void APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);\nGLAPI void APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);\nGLAPI void APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label);\nGLAPI void APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);\n#endif\n#endif /* GL_VERSION_4_3 */\n\n#ifndef GL_VERSION_4_4\n#define GL_VERSION_4_4 1\n#define GL_MAX_VERTEX_ATTRIB_STRIDE       0x82E5\n#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221\n#define GL_TEXTURE_BUFFER_BINDING         0x8C2A\n#define GL_MAP_PERSISTENT_BIT             0x0040\n#define GL_MAP_COHERENT_BIT               0x0080\n#define GL_DYNAMIC_STORAGE_BIT            0x0100\n#define GL_CLIENT_STORAGE_BIT             0x0200\n#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000\n#define GL_BUFFER_IMMUTABLE_STORAGE       0x821F\n#define GL_BUFFER_STORAGE_FLAGS           0x8220\n#define GL_CLEAR_TEXTURE                  0x9365\n#define GL_LOCATION_COMPONENT             0x934A\n#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B\n#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C\n#define GL_QUERY_BUFFER                   0x9192\n#define GL_QUERY_BUFFER_BARRIER_BIT       0x00008000\n#define GL_QUERY_BUFFER_BINDING           0x9193\n#define GL_QUERY_RESULT_NO_WAIT           0x9194\n#define GL_MIRROR_CLAMP_TO_EDGE           0x8743\ntypedef void (APIENTRYP PFNGLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);\ntypedef void (APIENTRYP PFNGLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);\ntypedef void (APIENTRYP PFNGLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);\ntypedef void (APIENTRYP PFNGLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);\ntypedef void (APIENTRYP PFNGLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);\ntypedef void (APIENTRYP PFNGLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);\ntypedef void (APIENTRYP PFNGLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferStorage (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);\nGLAPI void APIENTRY glClearTexImage (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glClearTexSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glBindBuffersBase (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);\nGLAPI void APIENTRY glBindBuffersRange (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);\nGLAPI void APIENTRY glBindTextures (GLuint first, GLsizei count, const GLuint *textures);\nGLAPI void APIENTRY glBindSamplers (GLuint first, GLsizei count, const GLuint *samplers);\nGLAPI void APIENTRY glBindImageTextures (GLuint first, GLsizei count, const GLuint *textures);\nGLAPI void APIENTRY glBindVertexBuffers (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);\n#endif\n#endif /* GL_VERSION_4_4 */\n\n#ifndef GL_VERSION_4_5\n#define GL_VERSION_4_5 1\n#define GL_CONTEXT_LOST                   0x0507\n#define GL_NEGATIVE_ONE_TO_ONE            0x935E\n#define GL_ZERO_TO_ONE                    0x935F\n#define GL_CLIP_ORIGIN                    0x935C\n#define GL_CLIP_DEPTH_MODE                0x935D\n#define GL_QUERY_WAIT_INVERTED            0x8E17\n#define GL_QUERY_NO_WAIT_INVERTED         0x8E18\n#define GL_QUERY_BY_REGION_WAIT_INVERTED  0x8E19\n#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A\n#define GL_MAX_CULL_DISTANCES             0x82F9\n#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA\n#define GL_TEXTURE_TARGET                 0x1006\n#define GL_QUERY_TARGET                   0x82EA\n#define GL_GUILTY_CONTEXT_RESET           0x8253\n#define GL_INNOCENT_CONTEXT_RESET         0x8254\n#define GL_UNKNOWN_CONTEXT_RESET          0x8255\n#define GL_RESET_NOTIFICATION_STRATEGY    0x8256\n#define GL_LOSE_CONTEXT_ON_RESET          0x8252\n#define GL_NO_RESET_NOTIFICATION          0x8261\n#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004\n#define GL_COLOR_TABLE                    0x80D0\n#define GL_POST_CONVOLUTION_COLOR_TABLE   0x80D1\n#define GL_POST_COLOR_MATRIX_COLOR_TABLE  0x80D2\n#define GL_PROXY_COLOR_TABLE              0x80D3\n#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4\n#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5\n#define GL_CONVOLUTION_1D                 0x8010\n#define GL_CONVOLUTION_2D                 0x8011\n#define GL_SEPARABLE_2D                   0x8012\n#define GL_HISTOGRAM                      0x8024\n#define GL_PROXY_HISTOGRAM                0x8025\n#define GL_MINMAX                         0x802E\n#define GL_CONTEXT_RELEASE_BEHAVIOR       0x82FB\n#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC\ntypedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);\ntypedef void (APIENTRYP PFNGLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);\ntypedef void (APIENTRYP PFNGLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef void (APIENTRYP PFNGLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\ntypedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);\ntypedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);\ntypedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);\ntypedef void (APIENTRYP PFNGLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src);\ntypedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);\ntypedef void (APIENTRYP PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\ntypedef void (APIENTRYP PFNGLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\ntypedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);\ntypedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures);\ntypedef void (APIENTRYP PFNGLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param);\ntypedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);\ntypedef void (APIENTRYP PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);\ntypedef void (APIENTRYP PFNGLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);\ntypedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);\ntypedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);\ntypedef void (APIENTRYP PFNGLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers);\ntypedef void (APIENTRYP PFNGLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);\ntypedef void (APIENTRYP PFNGLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids);\ntypedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\ntypedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\ntypedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\ntypedef void (APIENTRYP PFNGLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\ntypedef void (APIENTRYP PFNGLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);\ntypedef void (APIENTRYP PFNGLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);\ntypedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSPROC) (void);\ntypedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels);\ntypedef void (APIENTRYP PFNGLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\ntypedef void (APIENTRYP PFNGLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\ntypedef void (APIENTRYP PFNGLGETNMAPDVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);\ntypedef void (APIENTRYP PFNGLGETNMAPFVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);\ntypedef void (APIENTRYP PFNGLGETNMAPIVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPFVPROC) (GLenum map, GLsizei bufSize, GLfloat *values);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPUIVPROC) (GLenum map, GLsizei bufSize, GLuint *values);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPUSVPROC) (GLenum map, GLsizei bufSize, GLushort *values);\ntypedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEPROC) (GLsizei bufSize, GLubyte *pattern);\ntypedef void (APIENTRYP PFNGLGETNCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);\ntypedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);\ntypedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);\ntypedef void (APIENTRYP PFNGLGETNHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\ntypedef void (APIENTRYP PFNGLGETNMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\ntypedef void (APIENTRYP PFNGLTEXTUREBARRIERPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth);\nGLAPI void APIENTRY glCreateTransformFeedbacks (GLsizei n, GLuint *ids);\nGLAPI void APIENTRY glTransformFeedbackBufferBase (GLuint xfb, GLuint index, GLuint buffer);\nGLAPI void APIENTRY glTransformFeedbackBufferRange (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glGetTransformFeedbackiv (GLuint xfb, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetTransformFeedbacki_v (GLuint xfb, GLenum pname, GLuint index, GLint *param);\nGLAPI void APIENTRY glGetTransformFeedbacki64_v (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);\nGLAPI void APIENTRY glCreateBuffers (GLsizei n, GLuint *buffers);\nGLAPI void APIENTRY glNamedBufferStorage (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);\nGLAPI void APIENTRY glNamedBufferData (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI void APIENTRY glNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI void APIENTRY glCopyNamedBufferSubData (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI void APIENTRY glClearNamedBufferData (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glClearNamedBufferSubData (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\nGLAPI void *APIENTRY glMapNamedBuffer (GLuint buffer, GLenum access);\nGLAPI void *APIENTRY glMapNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI GLboolean APIENTRY glUnmapNamedBuffer (GLuint buffer);\nGLAPI void APIENTRY glFlushMappedNamedBufferRange (GLuint buffer, GLintptr offset, GLsizeiptr length);\nGLAPI void APIENTRY glGetNamedBufferParameteriv (GLuint buffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetNamedBufferParameteri64v (GLuint buffer, GLenum pname, GLint64 *params);\nGLAPI void APIENTRY glGetNamedBufferPointerv (GLuint buffer, GLenum pname, void **params);\nGLAPI void APIENTRY glGetNamedBufferSubData (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);\nGLAPI void APIENTRY glCreateFramebuffers (GLsizei n, GLuint *framebuffers);\nGLAPI void APIENTRY glNamedFramebufferRenderbuffer (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI void APIENTRY glNamedFramebufferParameteri (GLuint framebuffer, GLenum pname, GLint param);\nGLAPI void APIENTRY glNamedFramebufferTexture (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);\nGLAPI void APIENTRY glNamedFramebufferTextureLayer (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI void APIENTRY glNamedFramebufferDrawBuffer (GLuint framebuffer, GLenum buf);\nGLAPI void APIENTRY glNamedFramebufferDrawBuffers (GLuint framebuffer, GLsizei n, const GLenum *bufs);\nGLAPI void APIENTRY glNamedFramebufferReadBuffer (GLuint framebuffer, GLenum src);\nGLAPI void APIENTRY glInvalidateNamedFramebufferData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);\nGLAPI void APIENTRY glInvalidateNamedFramebufferSubData (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glClearNamedFramebufferiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);\nGLAPI void APIENTRY glClearNamedFramebufferuiv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);\nGLAPI void APIENTRY glClearNamedFramebufferfv (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);\nGLAPI void APIENTRY glClearNamedFramebufferfi (GLuint framebuffer, GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);\nGLAPI void APIENTRY glBlitNamedFramebuffer (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI GLenum APIENTRY glCheckNamedFramebufferStatus (GLuint framebuffer, GLenum target);\nGLAPI void APIENTRY glGetNamedFramebufferParameteriv (GLuint framebuffer, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetNamedFramebufferAttachmentParameteriv (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);\nGLAPI void APIENTRY glCreateRenderbuffers (GLsizei n, GLuint *renderbuffers);\nGLAPI void APIENTRY glNamedRenderbufferStorage (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glNamedRenderbufferStorageMultisample (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetNamedRenderbufferParameteriv (GLuint renderbuffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glCreateTextures (GLenum target, GLsizei n, GLuint *textures);\nGLAPI void APIENTRY glTextureBuffer (GLuint texture, GLenum internalformat, GLuint buffer);\nGLAPI void APIENTRY glTextureBufferRange (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glTextureStorage1D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);\nGLAPI void APIENTRY glTextureStorage2D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glTextureStorage3D (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI void APIENTRY glTextureStorage2DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTextureStorage3DMultisample (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCompressedTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCopyTextureSubImage1D (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyTextureSubImage2D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glCopyTextureSubImage3D (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glTextureParameterf (GLuint texture, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glTextureParameterfv (GLuint texture, GLenum pname, const GLfloat *param);\nGLAPI void APIENTRY glTextureParameteri (GLuint texture, GLenum pname, GLint param);\nGLAPI void APIENTRY glTextureParameterIiv (GLuint texture, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glTextureParameterIuiv (GLuint texture, GLenum pname, const GLuint *params);\nGLAPI void APIENTRY glTextureParameteriv (GLuint texture, GLenum pname, const GLint *param);\nGLAPI void APIENTRY glGenerateTextureMipmap (GLuint texture);\nGLAPI void APIENTRY glBindTextureUnit (GLuint unit, GLuint texture);\nGLAPI void APIENTRY glGetTextureImage (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\nGLAPI void APIENTRY glGetCompressedTextureImage (GLuint texture, GLint level, GLsizei bufSize, void *pixels);\nGLAPI void APIENTRY glGetTextureLevelParameterfv (GLuint texture, GLint level, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetTextureLevelParameteriv (GLuint texture, GLint level, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTextureParameterfv (GLuint texture, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetTextureParameterIiv (GLuint texture, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTextureParameterIuiv (GLuint texture, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glGetTextureParameteriv (GLuint texture, GLenum pname, GLint *params);\nGLAPI void APIENTRY glCreateVertexArrays (GLsizei n, GLuint *arrays);\nGLAPI void APIENTRY glDisableVertexArrayAttrib (GLuint vaobj, GLuint index);\nGLAPI void APIENTRY glEnableVertexArrayAttrib (GLuint vaobj, GLuint index);\nGLAPI void APIENTRY glVertexArrayElementBuffer (GLuint vaobj, GLuint buffer);\nGLAPI void APIENTRY glVertexArrayVertexBuffer (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\nGLAPI void APIENTRY glVertexArrayVertexBuffers (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);\nGLAPI void APIENTRY glVertexArrayAttribBinding (GLuint vaobj, GLuint attribindex, GLuint bindingindex);\nGLAPI void APIENTRY glVertexArrayAttribFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayAttribIFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayAttribLFormat (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayBindingDivisor (GLuint vaobj, GLuint bindingindex, GLuint divisor);\nGLAPI void APIENTRY glGetVertexArrayiv (GLuint vaobj, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetVertexArrayIndexediv (GLuint vaobj, GLuint index, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetVertexArrayIndexed64iv (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);\nGLAPI void APIENTRY glCreateSamplers (GLsizei n, GLuint *samplers);\nGLAPI void APIENTRY glCreateProgramPipelines (GLsizei n, GLuint *pipelines);\nGLAPI void APIENTRY glCreateQueries (GLenum target, GLsizei n, GLuint *ids);\nGLAPI void APIENTRY glGetQueryBufferObjecti64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\nGLAPI void APIENTRY glGetQueryBufferObjectiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\nGLAPI void APIENTRY glGetQueryBufferObjectui64v (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\nGLAPI void APIENTRY glGetQueryBufferObjectuiv (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);\nGLAPI void APIENTRY glMemoryBarrierByRegion (GLbitfield barriers);\nGLAPI void APIENTRY glGetTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\nGLAPI void APIENTRY glGetCompressedTextureSubImage (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);\nGLAPI GLenum APIENTRY glGetGraphicsResetStatus (void);\nGLAPI void APIENTRY glGetnCompressedTexImage (GLenum target, GLint lod, GLsizei bufSize, void *pixels);\nGLAPI void APIENTRY glGetnTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);\nGLAPI void APIENTRY glGetnUniformdv (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);\nGLAPI void APIENTRY glGetnUniformfv (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\nGLAPI void APIENTRY glGetnUniformiv (GLuint program, GLint location, GLsizei bufSize, GLint *params);\nGLAPI void APIENTRY glGetnUniformuiv (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\nGLAPI void APIENTRY glReadnPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\nGLAPI void APIENTRY glGetnMapdv (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);\nGLAPI void APIENTRY glGetnMapfv (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);\nGLAPI void APIENTRY glGetnMapiv (GLenum target, GLenum query, GLsizei bufSize, GLint *v);\nGLAPI void APIENTRY glGetnPixelMapfv (GLenum map, GLsizei bufSize, GLfloat *values);\nGLAPI void APIENTRY glGetnPixelMapuiv (GLenum map, GLsizei bufSize, GLuint *values);\nGLAPI void APIENTRY glGetnPixelMapusv (GLenum map, GLsizei bufSize, GLushort *values);\nGLAPI void APIENTRY glGetnPolygonStipple (GLsizei bufSize, GLubyte *pattern);\nGLAPI void APIENTRY glGetnColorTable (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);\nGLAPI void APIENTRY glGetnConvolutionFilter (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);\nGLAPI void APIENTRY glGetnSeparableFilter (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);\nGLAPI void APIENTRY glGetnHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\nGLAPI void APIENTRY glGetnMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\nGLAPI void APIENTRY glTextureBarrier (void);\n#endif\n#endif /* GL_VERSION_4_5 */\n\n#ifndef GL_VERSION_4_6\n#define GL_VERSION_4_6 1\n#define GL_SHADER_BINARY_FORMAT_SPIR_V    0x9551\n#define GL_SPIR_V_BINARY                  0x9552\n#define GL_PARAMETER_BUFFER               0x80EE\n#define GL_PARAMETER_BUFFER_BINDING       0x80EF\n#define GL_CONTEXT_FLAG_NO_ERROR_BIT      0x00000008\n#define GL_VERTICES_SUBMITTED             0x82EE\n#define GL_PRIMITIVES_SUBMITTED           0x82EF\n#define GL_VERTEX_SHADER_INVOCATIONS      0x82F0\n#define GL_TESS_CONTROL_SHADER_PATCHES    0x82F1\n#define GL_TESS_EVALUATION_SHADER_INVOCATIONS 0x82F2\n#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED 0x82F3\n#define GL_FRAGMENT_SHADER_INVOCATIONS    0x82F4\n#define GL_COMPUTE_SHADER_INVOCATIONS     0x82F5\n#define GL_CLIPPING_INPUT_PRIMITIVES      0x82F6\n#define GL_CLIPPING_OUTPUT_PRIMITIVES     0x82F7\n#define GL_POLYGON_OFFSET_CLAMP           0x8E1B\n#define GL_SPIR_V_EXTENSIONS              0x9553\n#define GL_NUM_SPIR_V_EXTENSIONS          0x9554\n#define GL_TEXTURE_MAX_ANISOTROPY         0x84FE\n#define GL_MAX_TEXTURE_MAX_ANISOTROPY     0x84FF\n#define GL_TRANSFORM_FEEDBACK_OVERFLOW    0x82EC\n#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED\ntypedef void (APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC) (GLfloat factor, GLfloat units, GLfloat clamp);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSpecializeShader (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);\nGLAPI void APIENTRY glMultiDrawArraysIndirectCount (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\nGLAPI void APIENTRY glMultiDrawElementsIndirectCount (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\nGLAPI void APIENTRY glPolygonOffsetClamp (GLfloat factor, GLfloat units, GLfloat clamp);\n#endif\n#endif /* GL_VERSION_4_6 */\n\n#ifndef GL_ARB_ES2_compatibility\n#define GL_ARB_ES2_compatibility 1\n#endif /* GL_ARB_ES2_compatibility */\n\n#ifndef GL_ARB_ES3_1_compatibility\n#define GL_ARB_ES3_1_compatibility 1\n#endif /* GL_ARB_ES3_1_compatibility */\n\n#ifndef GL_ARB_ES3_2_compatibility\n#define GL_ARB_ES3_2_compatibility 1\n#define GL_PRIMITIVE_BOUNDING_BOX_ARB     0x92BE\n#define GL_MULTISAMPLE_LINE_WIDTH_RANGE_ARB 0x9381\n#define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY_ARB 0x9382\ntypedef void (APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXARBPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPrimitiveBoundingBoxARB (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#endif\n#endif /* GL_ARB_ES3_2_compatibility */\n\n#ifndef GL_ARB_ES3_compatibility\n#define GL_ARB_ES3_compatibility 1\n#endif /* GL_ARB_ES3_compatibility */\n\n#ifndef GL_ARB_arrays_of_arrays\n#define GL_ARB_arrays_of_arrays 1\n#endif /* GL_ARB_arrays_of_arrays */\n\n#ifndef GL_ARB_base_instance\n#define GL_ARB_base_instance 1\n#endif /* GL_ARB_base_instance */\n\n#ifndef GL_ARB_bindless_texture\n#define GL_ARB_bindless_texture 1\ntypedef khronos_uint64_t GLuint64EXT;\n#define GL_UNSIGNED_INT64_ARB             0x140F\ntypedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLEARBPROC) (GLuint texture);\ntypedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEARBPROC) (GLuint texture, GLuint sampler);\ntypedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);\ntypedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTARBPROC) (GLuint64 handle);\ntypedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLEARBPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\ntypedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle, GLenum access);\ntypedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTARBPROC) (GLuint64 handle);\ntypedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64ARBPROC) (GLint location, GLuint64 value);\ntypedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64ARBPROC) (GLuint program, GLint location, GLuint64 value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTARBPROC) (GLuint64 handle);\ntypedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTARBPROC) (GLuint64 handle);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64ARBPROC) (GLuint index, GLuint64EXT x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VARBPROC) (GLuint index, const GLuint64EXT *v);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VARBPROC) (GLuint index, GLenum pname, GLuint64EXT *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint64 APIENTRY glGetTextureHandleARB (GLuint texture);\nGLAPI GLuint64 APIENTRY glGetTextureSamplerHandleARB (GLuint texture, GLuint sampler);\nGLAPI void APIENTRY glMakeTextureHandleResidentARB (GLuint64 handle);\nGLAPI void APIENTRY glMakeTextureHandleNonResidentARB (GLuint64 handle);\nGLAPI GLuint64 APIENTRY glGetImageHandleARB (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\nGLAPI void APIENTRY glMakeImageHandleResidentARB (GLuint64 handle, GLenum access);\nGLAPI void APIENTRY glMakeImageHandleNonResidentARB (GLuint64 handle);\nGLAPI void APIENTRY glUniformHandleui64ARB (GLint location, GLuint64 value);\nGLAPI void APIENTRY glUniformHandleui64vARB (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glProgramUniformHandleui64ARB (GLuint program, GLint location, GLuint64 value);\nGLAPI void APIENTRY glProgramUniformHandleui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\nGLAPI GLboolean APIENTRY glIsTextureHandleResidentARB (GLuint64 handle);\nGLAPI GLboolean APIENTRY glIsImageHandleResidentARB (GLuint64 handle);\nGLAPI void APIENTRY glVertexAttribL1ui64ARB (GLuint index, GLuint64EXT x);\nGLAPI void APIENTRY glVertexAttribL1ui64vARB (GLuint index, const GLuint64EXT *v);\nGLAPI void APIENTRY glGetVertexAttribLui64vARB (GLuint index, GLenum pname, GLuint64EXT *params);\n#endif\n#endif /* GL_ARB_bindless_texture */\n\n#ifndef GL_ARB_blend_func_extended\n#define GL_ARB_blend_func_extended 1\n#endif /* GL_ARB_blend_func_extended */\n\n#ifndef GL_ARB_buffer_storage\n#define GL_ARB_buffer_storage 1\n#endif /* GL_ARB_buffer_storage */\n\n#ifndef GL_ARB_cl_event\n#define GL_ARB_cl_event 1\nstruct _cl_context;\nstruct _cl_event;\n#define GL_SYNC_CL_EVENT_ARB              0x8240\n#define GL_SYNC_CL_EVENT_COMPLETE_ARB     0x8241\ntypedef GLsync (APIENTRYP PFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLsync APIENTRY glCreateSyncFromCLeventARB (struct _cl_context *context, struct _cl_event *event, GLbitfield flags);\n#endif\n#endif /* GL_ARB_cl_event */\n\n#ifndef GL_ARB_clear_buffer_object\n#define GL_ARB_clear_buffer_object 1\n#endif /* GL_ARB_clear_buffer_object */\n\n#ifndef GL_ARB_clear_texture\n#define GL_ARB_clear_texture 1\n#endif /* GL_ARB_clear_texture */\n\n#ifndef GL_ARB_clip_control\n#define GL_ARB_clip_control 1\n#endif /* GL_ARB_clip_control */\n\n#ifndef GL_ARB_color_buffer_float\n#define GL_ARB_color_buffer_float 1\n#define GL_RGBA_FLOAT_MODE_ARB            0x8820\n#define GL_CLAMP_VERTEX_COLOR_ARB         0x891A\n#define GL_CLAMP_FRAGMENT_COLOR_ARB       0x891B\n#define GL_CLAMP_READ_COLOR_ARB           0x891C\n#define GL_FIXED_ONLY_ARB                 0x891D\ntypedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);\n#endif\n#endif /* GL_ARB_color_buffer_float */\n\n#ifndef GL_ARB_compatibility\n#define GL_ARB_compatibility 1\n#endif /* GL_ARB_compatibility */\n\n#ifndef GL_ARB_compressed_texture_pixel_storage\n#define GL_ARB_compressed_texture_pixel_storage 1\n#endif /* GL_ARB_compressed_texture_pixel_storage */\n\n#ifndef GL_ARB_compute_shader\n#define GL_ARB_compute_shader 1\n#endif /* GL_ARB_compute_shader */\n\n#ifndef GL_ARB_compute_variable_group_size\n#define GL_ARB_compute_variable_group_size 1\n#define GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB 0x9344\n#define GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB 0x90EB\n#define GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB 0x9345\n#define GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB 0x91BF\ntypedef void (APIENTRYP PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDispatchComputeGroupSizeARB (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z);\n#endif\n#endif /* GL_ARB_compute_variable_group_size */\n\n#ifndef GL_ARB_conditional_render_inverted\n#define GL_ARB_conditional_render_inverted 1\n#endif /* GL_ARB_conditional_render_inverted */\n\n#ifndef GL_ARB_conservative_depth\n#define GL_ARB_conservative_depth 1\n#endif /* GL_ARB_conservative_depth */\n\n#ifndef GL_ARB_copy_buffer\n#define GL_ARB_copy_buffer 1\n#endif /* GL_ARB_copy_buffer */\n\n#ifndef GL_ARB_copy_image\n#define GL_ARB_copy_image 1\n#endif /* GL_ARB_copy_image */\n\n#ifndef GL_ARB_cull_distance\n#define GL_ARB_cull_distance 1\n#endif /* GL_ARB_cull_distance */\n\n#ifndef GL_ARB_debug_output\n#define GL_ARB_debug_output 1\ntypedef void (APIENTRY  *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\n#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB   0x8242\n#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243\n#define GL_DEBUG_CALLBACK_FUNCTION_ARB    0x8244\n#define GL_DEBUG_CALLBACK_USER_PARAM_ARB  0x8245\n#define GL_DEBUG_SOURCE_API_ARB           0x8246\n#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247\n#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248\n#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB   0x8249\n#define GL_DEBUG_SOURCE_APPLICATION_ARB   0x824A\n#define GL_DEBUG_SOURCE_OTHER_ARB         0x824B\n#define GL_DEBUG_TYPE_ERROR_ARB           0x824C\n#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D\n#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E\n#define GL_DEBUG_TYPE_PORTABILITY_ARB     0x824F\n#define GL_DEBUG_TYPE_PERFORMANCE_ARB     0x8250\n#define GL_DEBUG_TYPE_OTHER_ARB           0x8251\n#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB   0x9143\n#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB  0x9144\n#define GL_DEBUG_LOGGED_MESSAGES_ARB      0x9145\n#define GL_DEBUG_SEVERITY_HIGH_ARB        0x9146\n#define GL_DEBUG_SEVERITY_MEDIUM_ARB      0x9147\n#define GL_DEBUG_SEVERITY_LOW_ARB         0x9148\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const void *userParam);\ntypedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDebugMessageControlARB (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\nGLAPI void APIENTRY glDebugMessageInsertARB (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\nGLAPI void APIENTRY glDebugMessageCallbackARB (GLDEBUGPROCARB callback, const void *userParam);\nGLAPI GLuint APIENTRY glGetDebugMessageLogARB (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\n#endif\n#endif /* GL_ARB_debug_output */\n\n#ifndef GL_ARB_depth_buffer_float\n#define GL_ARB_depth_buffer_float 1\n#endif /* GL_ARB_depth_buffer_float */\n\n#ifndef GL_ARB_depth_clamp\n#define GL_ARB_depth_clamp 1\n#endif /* GL_ARB_depth_clamp */\n\n#ifndef GL_ARB_depth_texture\n#define GL_ARB_depth_texture 1\n#define GL_DEPTH_COMPONENT16_ARB          0x81A5\n#define GL_DEPTH_COMPONENT24_ARB          0x81A6\n#define GL_DEPTH_COMPONENT32_ARB          0x81A7\n#define GL_TEXTURE_DEPTH_SIZE_ARB         0x884A\n#define GL_DEPTH_TEXTURE_MODE_ARB         0x884B\n#endif /* GL_ARB_depth_texture */\n\n#ifndef GL_ARB_derivative_control\n#define GL_ARB_derivative_control 1\n#endif /* GL_ARB_derivative_control */\n\n#ifndef GL_ARB_direct_state_access\n#define GL_ARB_direct_state_access 1\n#endif /* GL_ARB_direct_state_access */\n\n#ifndef GL_ARB_draw_buffers\n#define GL_ARB_draw_buffers 1\n#define GL_MAX_DRAW_BUFFERS_ARB           0x8824\n#define GL_DRAW_BUFFER0_ARB               0x8825\n#define GL_DRAW_BUFFER1_ARB               0x8826\n#define GL_DRAW_BUFFER2_ARB               0x8827\n#define GL_DRAW_BUFFER3_ARB               0x8828\n#define GL_DRAW_BUFFER4_ARB               0x8829\n#define GL_DRAW_BUFFER5_ARB               0x882A\n#define GL_DRAW_BUFFER6_ARB               0x882B\n#define GL_DRAW_BUFFER7_ARB               0x882C\n#define GL_DRAW_BUFFER8_ARB               0x882D\n#define GL_DRAW_BUFFER9_ARB               0x882E\n#define GL_DRAW_BUFFER10_ARB              0x882F\n#define GL_DRAW_BUFFER11_ARB              0x8830\n#define GL_DRAW_BUFFER12_ARB              0x8831\n#define GL_DRAW_BUFFER13_ARB              0x8832\n#define GL_DRAW_BUFFER14_ARB              0x8833\n#define GL_DRAW_BUFFER15_ARB              0x8834\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);\n#endif\n#endif /* GL_ARB_draw_buffers */\n\n#ifndef GL_ARB_draw_buffers_blend\n#define GL_ARB_draw_buffers_blend 1\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\ntypedef void (APIENTRYP PFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst);\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendEquationiARB (GLuint buf, GLenum mode);\nGLAPI void APIENTRY glBlendEquationSeparateiARB (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\nGLAPI void APIENTRY glBlendFunciARB (GLuint buf, GLenum src, GLenum dst);\nGLAPI void APIENTRY glBlendFuncSeparateiARB (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\n#endif\n#endif /* GL_ARB_draw_buffers_blend */\n\n#ifndef GL_ARB_draw_elements_base_vertex\n#define GL_ARB_draw_elements_base_vertex 1\n#endif /* GL_ARB_draw_elements_base_vertex */\n\n#ifndef GL_ARB_draw_indirect\n#define GL_ARB_draw_indirect 1\n#endif /* GL_ARB_draw_indirect */\n\n#ifndef GL_ARB_draw_instanced\n#define GL_ARB_draw_instanced 1\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\nGLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#endif\n#endif /* GL_ARB_draw_instanced */\n\n#ifndef GL_ARB_enhanced_layouts\n#define GL_ARB_enhanced_layouts 1\n#endif /* GL_ARB_enhanced_layouts */\n\n#ifndef GL_ARB_explicit_attrib_location\n#define GL_ARB_explicit_attrib_location 1\n#endif /* GL_ARB_explicit_attrib_location */\n\n#ifndef GL_ARB_explicit_uniform_location\n#define GL_ARB_explicit_uniform_location 1\n#endif /* GL_ARB_explicit_uniform_location */\n\n#ifndef GL_ARB_fragment_coord_conventions\n#define GL_ARB_fragment_coord_conventions 1\n#endif /* GL_ARB_fragment_coord_conventions */\n\n#ifndef GL_ARB_fragment_layer_viewport\n#define GL_ARB_fragment_layer_viewport 1\n#endif /* GL_ARB_fragment_layer_viewport */\n\n#ifndef GL_ARB_fragment_program\n#define GL_ARB_fragment_program 1\n#define GL_FRAGMENT_PROGRAM_ARB           0x8804\n#define GL_PROGRAM_FORMAT_ASCII_ARB       0x8875\n#define GL_PROGRAM_LENGTH_ARB             0x8627\n#define GL_PROGRAM_FORMAT_ARB             0x8876\n#define GL_PROGRAM_BINDING_ARB            0x8677\n#define GL_PROGRAM_INSTRUCTIONS_ARB       0x88A0\n#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB   0x88A1\n#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2\n#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3\n#define GL_PROGRAM_TEMPORARIES_ARB        0x88A4\n#define GL_MAX_PROGRAM_TEMPORARIES_ARB    0x88A5\n#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6\n#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7\n#define GL_PROGRAM_PARAMETERS_ARB         0x88A8\n#define GL_MAX_PROGRAM_PARAMETERS_ARB     0x88A9\n#define GL_PROGRAM_NATIVE_PARAMETERS_ARB  0x88AA\n#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB\n#define GL_PROGRAM_ATTRIBS_ARB            0x88AC\n#define GL_MAX_PROGRAM_ATTRIBS_ARB        0x88AD\n#define GL_PROGRAM_NATIVE_ATTRIBS_ARB     0x88AE\n#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF\n#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4\n#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5\n#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6\n#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB   0x8805\n#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB   0x8806\n#define GL_PROGRAM_TEX_INDIRECTIONS_ARB   0x8807\n#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808\n#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809\n#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A\n#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B\n#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C\n#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D\n#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E\n#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F\n#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810\n#define GL_PROGRAM_STRING_ARB             0x8628\n#define GL_PROGRAM_ERROR_POSITION_ARB     0x864B\n#define GL_CURRENT_MATRIX_ARB             0x8641\n#define GL_TRANSPOSE_CURRENT_MATRIX_ARB   0x88B7\n#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640\n#define GL_MAX_PROGRAM_MATRICES_ARB       0x862F\n#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E\n#define GL_MAX_TEXTURE_COORDS_ARB         0x8871\n#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB    0x8872\n#define GL_PROGRAM_ERROR_STRING_ARB       0x8874\n#define GL_MATRIX0_ARB                    0x88C0\n#define GL_MATRIX1_ARB                    0x88C1\n#define GL_MATRIX2_ARB                    0x88C2\n#define GL_MATRIX3_ARB                    0x88C3\n#define GL_MATRIX4_ARB                    0x88C4\n#define GL_MATRIX5_ARB                    0x88C5\n#define GL_MATRIX6_ARB                    0x88C6\n#define GL_MATRIX7_ARB                    0x88C7\n#define GL_MATRIX8_ARB                    0x88C8\n#define GL_MATRIX9_ARB                    0x88C9\n#define GL_MATRIX10_ARB                   0x88CA\n#define GL_MATRIX11_ARB                   0x88CB\n#define GL_MATRIX12_ARB                   0x88CC\n#define GL_MATRIX13_ARB                   0x88CD\n#define GL_MATRIX14_ARB                   0x88CE\n#define GL_MATRIX15_ARB                   0x88CF\n#define GL_MATRIX16_ARB                   0x88D0\n#define GL_MATRIX17_ARB                   0x88D1\n#define GL_MATRIX18_ARB                   0x88D2\n#define GL_MATRIX19_ARB                   0x88D3\n#define GL_MATRIX20_ARB                   0x88D4\n#define GL_MATRIX21_ARB                   0x88D5\n#define GL_MATRIX22_ARB                   0x88D6\n#define GL_MATRIX23_ARB                   0x88D7\n#define GL_MATRIX24_ARB                   0x88D8\n#define GL_MATRIX25_ARB                   0x88D9\n#define GL_MATRIX26_ARB                   0x88DA\n#define GL_MATRIX27_ARB                   0x88DB\n#define GL_MATRIX28_ARB                   0x88DC\n#define GL_MATRIX29_ARB                   0x88DD\n#define GL_MATRIX30_ARB                   0x88DE\n#define GL_MATRIX31_ARB                   0x88DF\ntypedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const void *string);\ntypedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program);\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs);\ntypedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, void *string);\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const void *string);\nGLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);\nGLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);\nGLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);\nGLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);\nGLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);\nGLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);\nGLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);\nGLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);\nGLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);\nGLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);\nGLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);\nGLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, void *string);\nGLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);\n#endif\n#endif /* GL_ARB_fragment_program */\n\n#ifndef GL_ARB_fragment_program_shadow\n#define GL_ARB_fragment_program_shadow 1\n#endif /* GL_ARB_fragment_program_shadow */\n\n#ifndef GL_ARB_fragment_shader\n#define GL_ARB_fragment_shader 1\n#define GL_FRAGMENT_SHADER_ARB            0x8B30\n#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B\n#endif /* GL_ARB_fragment_shader */\n\n#ifndef GL_ARB_fragment_shader_interlock\n#define GL_ARB_fragment_shader_interlock 1\n#endif /* GL_ARB_fragment_shader_interlock */\n\n#ifndef GL_ARB_framebuffer_no_attachments\n#define GL_ARB_framebuffer_no_attachments 1\n#endif /* GL_ARB_framebuffer_no_attachments */\n\n#ifndef GL_ARB_framebuffer_object\n#define GL_ARB_framebuffer_object 1\n#endif /* GL_ARB_framebuffer_object */\n\n#ifndef GL_ARB_framebuffer_sRGB\n#define GL_ARB_framebuffer_sRGB 1\n#endif /* GL_ARB_framebuffer_sRGB */\n\n#ifndef GL_ARB_geometry_shader4\n#define GL_ARB_geometry_shader4 1\n#define GL_LINES_ADJACENCY_ARB            0x000A\n#define GL_LINE_STRIP_ADJACENCY_ARB       0x000B\n#define GL_TRIANGLES_ADJACENCY_ARB        0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY_ARB   0x000D\n#define GL_PROGRAM_POINT_SIZE_ARB         0x8642\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9\n#define GL_GEOMETRY_SHADER_ARB            0x8DD9\n#define GL_GEOMETRY_VERTICES_OUT_ARB      0x8DDA\n#define GL_GEOMETRY_INPUT_TYPE_ARB        0x8DDB\n#define GL_GEOMETRY_OUTPUT_TYPE_ARB       0x8DDC\n#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD\n#define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);\nGLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);\n#endif\n#endif /* GL_ARB_geometry_shader4 */\n\n#ifndef GL_ARB_get_program_binary\n#define GL_ARB_get_program_binary 1\n#endif /* GL_ARB_get_program_binary */\n\n#ifndef GL_ARB_get_texture_sub_image\n#define GL_ARB_get_texture_sub_image 1\n#endif /* GL_ARB_get_texture_sub_image */\n\n#ifndef GL_ARB_gl_spirv\n#define GL_ARB_gl_spirv 1\n#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551\n#define GL_SPIR_V_BINARY_ARB              0x9552\ntypedef void (APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSpecializeShaderARB (GLuint shader, const GLchar *pEntryPoint, GLuint numSpecializationConstants, const GLuint *pConstantIndex, const GLuint *pConstantValue);\n#endif\n#endif /* GL_ARB_gl_spirv */\n\n#ifndef GL_ARB_gpu_shader5\n#define GL_ARB_gpu_shader5 1\n#endif /* GL_ARB_gpu_shader5 */\n\n#ifndef GL_ARB_gpu_shader_fp64\n#define GL_ARB_gpu_shader_fp64 1\n#endif /* GL_ARB_gpu_shader_fp64 */\n\n#ifndef GL_ARB_gpu_shader_int64\n#define GL_ARB_gpu_shader_int64 1\n#define GL_INT64_ARB                      0x140E\n#define GL_INT64_VEC2_ARB                 0x8FE9\n#define GL_INT64_VEC3_ARB                 0x8FEA\n#define GL_INT64_VEC4_ARB                 0x8FEB\n#define GL_UNSIGNED_INT64_VEC2_ARB        0x8FF5\n#define GL_UNSIGNED_INT64_VEC3_ARB        0x8FF6\n#define GL_UNSIGNED_INT64_VEC4_ARB        0x8FF7\ntypedef void (APIENTRYP PFNGLUNIFORM1I64ARBPROC) (GLint location, GLint64 x);\ntypedef void (APIENTRYP PFNGLUNIFORM2I64ARBPROC) (GLint location, GLint64 x, GLint64 y);\ntypedef void (APIENTRYP PFNGLUNIFORM3I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z);\ntypedef void (APIENTRYP PFNGLUNIFORM4I64ARBPROC) (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);\ntypedef void (APIENTRYP PFNGLUNIFORM1I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4I64VARBPROC) (GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM1UI64ARBPROC) (GLint location, GLuint64 x);\ntypedef void (APIENTRYP PFNGLUNIFORM2UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y);\ntypedef void (APIENTRYP PFNGLUNIFORM3UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);\ntypedef void (APIENTRYP PFNGLUNIFORM4UI64ARBPROC) (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);\ntypedef void (APIENTRYP PFNGLUNIFORM1UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4UI64VARBPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLGETUNIFORMI64VARBPROC) (GLuint program, GLint location, GLint64 *params);\ntypedef void (APIENTRYP PFNGLGETUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLuint64 *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMUI64VARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64ARBPROC) (GLuint program, GLint location, GLint64 x);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64ARBPROC) (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64ARBPROC) (GLuint program, GLint location, GLuint64 x);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64ARBPROC) (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VARBPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUniform1i64ARB (GLint location, GLint64 x);\nGLAPI void APIENTRY glUniform2i64ARB (GLint location, GLint64 x, GLint64 y);\nGLAPI void APIENTRY glUniform3i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z);\nGLAPI void APIENTRY glUniform4i64ARB (GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);\nGLAPI void APIENTRY glUniform1i64vARB (GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glUniform2i64vARB (GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glUniform3i64vARB (GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glUniform4i64vARB (GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glUniform1ui64ARB (GLint location, GLuint64 x);\nGLAPI void APIENTRY glUniform2ui64ARB (GLint location, GLuint64 x, GLuint64 y);\nGLAPI void APIENTRY glUniform3ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z);\nGLAPI void APIENTRY glUniform4ui64ARB (GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);\nGLAPI void APIENTRY glUniform1ui64vARB (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glUniform2ui64vARB (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glUniform3ui64vARB (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glUniform4ui64vARB (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glGetUniformi64vARB (GLuint program, GLint location, GLint64 *params);\nGLAPI void APIENTRY glGetUniformui64vARB (GLuint program, GLint location, GLuint64 *params);\nGLAPI void APIENTRY glGetnUniformi64vARB (GLuint program, GLint location, GLsizei bufSize, GLint64 *params);\nGLAPI void APIENTRY glGetnUniformui64vARB (GLuint program, GLint location, GLsizei bufSize, GLuint64 *params);\nGLAPI void APIENTRY glProgramUniform1i64ARB (GLuint program, GLint location, GLint64 x);\nGLAPI void APIENTRY glProgramUniform2i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y);\nGLAPI void APIENTRY glProgramUniform3i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z);\nGLAPI void APIENTRY glProgramUniform4i64ARB (GLuint program, GLint location, GLint64 x, GLint64 y, GLint64 z, GLint64 w);\nGLAPI void APIENTRY glProgramUniform1i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glProgramUniform2i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glProgramUniform3i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glProgramUniform4i64vARB (GLuint program, GLint location, GLsizei count, const GLint64 *value);\nGLAPI void APIENTRY glProgramUniform1ui64ARB (GLuint program, GLint location, GLuint64 x);\nGLAPI void APIENTRY glProgramUniform2ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y);\nGLAPI void APIENTRY glProgramUniform3ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z);\nGLAPI void APIENTRY glProgramUniform4ui64ARB (GLuint program, GLint location, GLuint64 x, GLuint64 y, GLuint64 z, GLuint64 w);\nGLAPI void APIENTRY glProgramUniform1ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glProgramUniform2ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glProgramUniform3ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glProgramUniform4ui64vARB (GLuint program, GLint location, GLsizei count, const GLuint64 *value);\n#endif\n#endif /* GL_ARB_gpu_shader_int64 */\n\n#ifndef GL_ARB_half_float_pixel\n#define GL_ARB_half_float_pixel 1\ntypedef khronos_uint16_t GLhalfARB;\n#define GL_HALF_FLOAT_ARB                 0x140B\n#endif /* GL_ARB_half_float_pixel */\n\n#ifndef GL_ARB_half_float_vertex\n#define GL_ARB_half_float_vertex 1\n#endif /* GL_ARB_half_float_vertex */\n\n#ifndef GL_ARB_imaging\n#define GL_ARB_imaging 1\n#define GL_CONVOLUTION_BORDER_MODE        0x8013\n#define GL_CONVOLUTION_FILTER_SCALE       0x8014\n#define GL_CONVOLUTION_FILTER_BIAS        0x8015\n#define GL_REDUCE                         0x8016\n#define GL_CONVOLUTION_FORMAT             0x8017\n#define GL_CONVOLUTION_WIDTH              0x8018\n#define GL_CONVOLUTION_HEIGHT             0x8019\n#define GL_MAX_CONVOLUTION_WIDTH          0x801A\n#define GL_MAX_CONVOLUTION_HEIGHT         0x801B\n#define GL_POST_CONVOLUTION_RED_SCALE     0x801C\n#define GL_POST_CONVOLUTION_GREEN_SCALE   0x801D\n#define GL_POST_CONVOLUTION_BLUE_SCALE    0x801E\n#define GL_POST_CONVOLUTION_ALPHA_SCALE   0x801F\n#define GL_POST_CONVOLUTION_RED_BIAS      0x8020\n#define GL_POST_CONVOLUTION_GREEN_BIAS    0x8021\n#define GL_POST_CONVOLUTION_BLUE_BIAS     0x8022\n#define GL_POST_CONVOLUTION_ALPHA_BIAS    0x8023\n#define GL_HISTOGRAM_WIDTH                0x8026\n#define GL_HISTOGRAM_FORMAT               0x8027\n#define GL_HISTOGRAM_RED_SIZE             0x8028\n#define GL_HISTOGRAM_GREEN_SIZE           0x8029\n#define GL_HISTOGRAM_BLUE_SIZE            0x802A\n#define GL_HISTOGRAM_ALPHA_SIZE           0x802B\n#define GL_HISTOGRAM_LUMINANCE_SIZE       0x802C\n#define GL_HISTOGRAM_SINK                 0x802D\n#define GL_MINMAX_FORMAT                  0x802F\n#define GL_MINMAX_SINK                    0x8030\n#define GL_TABLE_TOO_LARGE                0x8031\n#define GL_COLOR_MATRIX                   0x80B1\n#define GL_COLOR_MATRIX_STACK_DEPTH       0x80B2\n#define GL_MAX_COLOR_MATRIX_STACK_DEPTH   0x80B3\n#define GL_POST_COLOR_MATRIX_RED_SCALE    0x80B4\n#define GL_POST_COLOR_MATRIX_GREEN_SCALE  0x80B5\n#define GL_POST_COLOR_MATRIX_BLUE_SCALE   0x80B6\n#define GL_POST_COLOR_MATRIX_ALPHA_SCALE  0x80B7\n#define GL_POST_COLOR_MATRIX_RED_BIAS     0x80B8\n#define GL_POST_COLOR_MATRIX_GREEN_BIAS   0x80B9\n#define GL_POST_COLOR_MATRIX_BLUE_BIAS    0x80BA\n#define GL_POST_COLOR_MATRIX_ALPHA_BIAS   0x80BB\n#define GL_COLOR_TABLE_SCALE              0x80D6\n#define GL_COLOR_TABLE_BIAS               0x80D7\n#define GL_COLOR_TABLE_FORMAT             0x80D8\n#define GL_COLOR_TABLE_WIDTH              0x80D9\n#define GL_COLOR_TABLE_RED_SIZE           0x80DA\n#define GL_COLOR_TABLE_GREEN_SIZE         0x80DB\n#define GL_COLOR_TABLE_BLUE_SIZE          0x80DC\n#define GL_COLOR_TABLE_ALPHA_SIZE         0x80DD\n#define GL_COLOR_TABLE_LUMINANCE_SIZE     0x80DE\n#define GL_COLOR_TABLE_INTENSITY_SIZE     0x80DF\n#define GL_CONSTANT_BORDER                0x8151\n#define GL_REPLICATE_BORDER               0x8153\n#define GL_CONVOLUTION_BORDER_COLOR       0x8154\ntypedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);\ntypedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, void *table);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, void *image);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);\ntypedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\ntypedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\ntypedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink);\ntypedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);\nGLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, void *table);\nGLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);\nGLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);\nGLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);\nGLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);\nGLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, void *image);\nGLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);\nGLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);\nGLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\nGLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\nGLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\nGLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);\nGLAPI void APIENTRY glResetHistogram (GLenum target);\nGLAPI void APIENTRY glResetMinmax (GLenum target);\n#endif\n#endif /* GL_ARB_imaging */\n\n#ifndef GL_ARB_indirect_parameters\n#define GL_ARB_indirect_parameters 1\n#define GL_PARAMETER_BUFFER_ARB           0x80EE\n#define GL_PARAMETER_BUFFER_BINDING_ARB   0x80EF\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC) (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC) (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiDrawArraysIndirectCountARB (GLenum mode, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\nGLAPI void APIENTRY glMultiDrawElementsIndirectCountARB (GLenum mode, GLenum type, const void *indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#endif\n#endif /* GL_ARB_indirect_parameters */\n\n#ifndef GL_ARB_instanced_arrays\n#define GL_ARB_instanced_arrays 1\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);\n#endif\n#endif /* GL_ARB_instanced_arrays */\n\n#ifndef GL_ARB_internalformat_query\n#define GL_ARB_internalformat_query 1\n#endif /* GL_ARB_internalformat_query */\n\n#ifndef GL_ARB_internalformat_query2\n#define GL_ARB_internalformat_query2 1\n#define GL_SRGB_DECODE_ARB                0x8299\n#define GL_VIEW_CLASS_EAC_R11             0x9383\n#define GL_VIEW_CLASS_EAC_RG11            0x9384\n#define GL_VIEW_CLASS_ETC2_RGB            0x9385\n#define GL_VIEW_CLASS_ETC2_RGBA           0x9386\n#define GL_VIEW_CLASS_ETC2_EAC_RGBA       0x9387\n#define GL_VIEW_CLASS_ASTC_4x4_RGBA       0x9388\n#define GL_VIEW_CLASS_ASTC_5x4_RGBA       0x9389\n#define GL_VIEW_CLASS_ASTC_5x5_RGBA       0x938A\n#define GL_VIEW_CLASS_ASTC_6x5_RGBA       0x938B\n#define GL_VIEW_CLASS_ASTC_6x6_RGBA       0x938C\n#define GL_VIEW_CLASS_ASTC_8x5_RGBA       0x938D\n#define GL_VIEW_CLASS_ASTC_8x6_RGBA       0x938E\n#define GL_VIEW_CLASS_ASTC_8x8_RGBA       0x938F\n#define GL_VIEW_CLASS_ASTC_10x5_RGBA      0x9390\n#define GL_VIEW_CLASS_ASTC_10x6_RGBA      0x9391\n#define GL_VIEW_CLASS_ASTC_10x8_RGBA      0x9392\n#define GL_VIEW_CLASS_ASTC_10x10_RGBA     0x9393\n#define GL_VIEW_CLASS_ASTC_12x10_RGBA     0x9394\n#define GL_VIEW_CLASS_ASTC_12x12_RGBA     0x9395\n#endif /* GL_ARB_internalformat_query2 */\n\n#ifndef GL_ARB_invalidate_subdata\n#define GL_ARB_invalidate_subdata 1\n#endif /* GL_ARB_invalidate_subdata */\n\n#ifndef GL_ARB_map_buffer_alignment\n#define GL_ARB_map_buffer_alignment 1\n#endif /* GL_ARB_map_buffer_alignment */\n\n#ifndef GL_ARB_map_buffer_range\n#define GL_ARB_map_buffer_range 1\n#endif /* GL_ARB_map_buffer_range */\n\n#ifndef GL_ARB_matrix_palette\n#define GL_ARB_matrix_palette 1\n#define GL_MATRIX_PALETTE_ARB             0x8840\n#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841\n#define GL_MAX_PALETTE_MATRICES_ARB       0x8842\n#define GL_CURRENT_PALETTE_MATRIX_ARB     0x8843\n#define GL_MATRIX_INDEX_ARRAY_ARB         0x8844\n#define GL_CURRENT_MATRIX_INDEX_ARB       0x8845\n#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB    0x8846\n#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB    0x8847\n#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB  0x8848\n#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849\ntypedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);\ntypedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);\ntypedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices);\ntypedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices);\ntypedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);\nGLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);\nGLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);\nGLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);\nGLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_ARB_matrix_palette */\n\n#ifndef GL_ARB_multi_bind\n#define GL_ARB_multi_bind 1\n#endif /* GL_ARB_multi_bind */\n\n#ifndef GL_ARB_multi_draw_indirect\n#define GL_ARB_multi_draw_indirect 1\n#endif /* GL_ARB_multi_draw_indirect */\n\n#ifndef GL_ARB_multisample\n#define GL_ARB_multisample 1\n#define GL_MULTISAMPLE_ARB                0x809D\n#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB   0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE_ARB        0x809F\n#define GL_SAMPLE_COVERAGE_ARB            0x80A0\n#define GL_SAMPLE_BUFFERS_ARB             0x80A8\n#define GL_SAMPLES_ARB                    0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE_ARB      0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT_ARB     0x80AB\n#define GL_MULTISAMPLE_BIT_ARB            0x20000000\ntypedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSampleCoverageARB (GLfloat value, GLboolean invert);\n#endif\n#endif /* GL_ARB_multisample */\n\n#ifndef GL_ARB_multitexture\n#define GL_ARB_multitexture 1\n#define GL_TEXTURE0_ARB                   0x84C0\n#define GL_TEXTURE1_ARB                   0x84C1\n#define GL_TEXTURE2_ARB                   0x84C2\n#define GL_TEXTURE3_ARB                   0x84C3\n#define GL_TEXTURE4_ARB                   0x84C4\n#define GL_TEXTURE5_ARB                   0x84C5\n#define GL_TEXTURE6_ARB                   0x84C6\n#define GL_TEXTURE7_ARB                   0x84C7\n#define GL_TEXTURE8_ARB                   0x84C8\n#define GL_TEXTURE9_ARB                   0x84C9\n#define GL_TEXTURE10_ARB                  0x84CA\n#define GL_TEXTURE11_ARB                  0x84CB\n#define GL_TEXTURE12_ARB                  0x84CC\n#define GL_TEXTURE13_ARB                  0x84CD\n#define GL_TEXTURE14_ARB                  0x84CE\n#define GL_TEXTURE15_ARB                  0x84CF\n#define GL_TEXTURE16_ARB                  0x84D0\n#define GL_TEXTURE17_ARB                  0x84D1\n#define GL_TEXTURE18_ARB                  0x84D2\n#define GL_TEXTURE19_ARB                  0x84D3\n#define GL_TEXTURE20_ARB                  0x84D4\n#define GL_TEXTURE21_ARB                  0x84D5\n#define GL_TEXTURE22_ARB                  0x84D6\n#define GL_TEXTURE23_ARB                  0x84D7\n#define GL_TEXTURE24_ARB                  0x84D8\n#define GL_TEXTURE25_ARB                  0x84D9\n#define GL_TEXTURE26_ARB                  0x84DA\n#define GL_TEXTURE27_ARB                  0x84DB\n#define GL_TEXTURE28_ARB                  0x84DC\n#define GL_TEXTURE29_ARB                  0x84DD\n#define GL_TEXTURE30_ARB                  0x84DE\n#define GL_TEXTURE31_ARB                  0x84DF\n#define GL_ACTIVE_TEXTURE_ARB             0x84E0\n#define GL_CLIENT_ACTIVE_TEXTURE_ARB      0x84E1\n#define GL_MAX_TEXTURE_UNITS_ARB          0x84E2\ntypedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glActiveTextureARB (GLenum texture);\nGLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);\nGLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);\nGLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);\nGLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);\nGLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);\nGLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);\nGLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);\nGLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);\nGLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);\nGLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);\nGLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);\nGLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);\nGLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);\nGLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);\nGLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);\nGLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);\nGLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);\nGLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);\nGLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);\nGLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);\nGLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);\nGLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);\n#endif\n#endif /* GL_ARB_multitexture */\n\n#ifndef GL_ARB_occlusion_query\n#define GL_ARB_occlusion_query 1\n#define GL_QUERY_COUNTER_BITS_ARB         0x8864\n#define GL_CURRENT_QUERY_ARB              0x8865\n#define GL_QUERY_RESULT_ARB               0x8866\n#define GL_QUERY_RESULT_AVAILABLE_ARB     0x8867\n#define GL_SAMPLES_PASSED_ARB             0x8914\ntypedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);\ntypedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);\ntypedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id);\ntypedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);\nGLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);\nGLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);\nGLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);\nGLAPI void APIENTRY glEndQueryARB (GLenum target);\nGLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);\n#endif\n#endif /* GL_ARB_occlusion_query */\n\n#ifndef GL_ARB_occlusion_query2\n#define GL_ARB_occlusion_query2 1\n#endif /* GL_ARB_occlusion_query2 */\n\n#ifndef GL_ARB_parallel_shader_compile\n#define GL_ARB_parallel_shader_compile 1\n#define GL_MAX_SHADER_COMPILER_THREADS_ARB 0x91B0\n#define GL_COMPLETION_STATUS_ARB          0x91B1\ntypedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSARBPROC) (GLuint count);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMaxShaderCompilerThreadsARB (GLuint count);\n#endif\n#endif /* GL_ARB_parallel_shader_compile */\n\n#ifndef GL_ARB_pipeline_statistics_query\n#define GL_ARB_pipeline_statistics_query 1\n#define GL_VERTICES_SUBMITTED_ARB         0x82EE\n#define GL_PRIMITIVES_SUBMITTED_ARB       0x82EF\n#define GL_VERTEX_SHADER_INVOCATIONS_ARB  0x82F0\n#define GL_TESS_CONTROL_SHADER_PATCHES_ARB 0x82F1\n#define GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB 0x82F2\n#define GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB 0x82F3\n#define GL_FRAGMENT_SHADER_INVOCATIONS_ARB 0x82F4\n#define GL_COMPUTE_SHADER_INVOCATIONS_ARB 0x82F5\n#define GL_CLIPPING_INPUT_PRIMITIVES_ARB  0x82F6\n#define GL_CLIPPING_OUTPUT_PRIMITIVES_ARB 0x82F7\n#endif /* GL_ARB_pipeline_statistics_query */\n\n#ifndef GL_ARB_pixel_buffer_object\n#define GL_ARB_pixel_buffer_object 1\n#define GL_PIXEL_PACK_BUFFER_ARB          0x88EB\n#define GL_PIXEL_UNPACK_BUFFER_ARB        0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING_ARB  0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF\n#endif /* GL_ARB_pixel_buffer_object */\n\n#ifndef GL_ARB_point_parameters\n#define GL_ARB_point_parameters 1\n#define GL_POINT_SIZE_MIN_ARB             0x8126\n#define GL_POINT_SIZE_MAX_ARB             0x8127\n#define GL_POINT_FADE_THRESHOLD_SIZE_ARB  0x8128\n#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);\n#endif\n#endif /* GL_ARB_point_parameters */\n\n#ifndef GL_ARB_point_sprite\n#define GL_ARB_point_sprite 1\n#define GL_POINT_SPRITE_ARB               0x8861\n#define GL_COORD_REPLACE_ARB              0x8862\n#endif /* GL_ARB_point_sprite */\n\n#ifndef GL_ARB_polygon_offset_clamp\n#define GL_ARB_polygon_offset_clamp 1\n#endif /* GL_ARB_polygon_offset_clamp */\n\n#ifndef GL_ARB_post_depth_coverage\n#define GL_ARB_post_depth_coverage 1\n#endif /* GL_ARB_post_depth_coverage */\n\n#ifndef GL_ARB_program_interface_query\n#define GL_ARB_program_interface_query 1\n#endif /* GL_ARB_program_interface_query */\n\n#ifndef GL_ARB_provoking_vertex\n#define GL_ARB_provoking_vertex 1\n#endif /* GL_ARB_provoking_vertex */\n\n#ifndef GL_ARB_query_buffer_object\n#define GL_ARB_query_buffer_object 1\n#endif /* GL_ARB_query_buffer_object */\n\n#ifndef GL_ARB_robust_buffer_access_behavior\n#define GL_ARB_robust_buffer_access_behavior 1\n#endif /* GL_ARB_robust_buffer_access_behavior */\n\n#ifndef GL_ARB_robustness\n#define GL_ARB_robustness 1\n#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004\n#define GL_LOSE_CONTEXT_ON_RESET_ARB      0x8252\n#define GL_GUILTY_CONTEXT_RESET_ARB       0x8253\n#define GL_INNOCENT_CONTEXT_RESET_ARB     0x8254\n#define GL_UNKNOWN_CONTEXT_RESET_ARB      0x8255\n#define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256\n#define GL_NO_RESET_NOTIFICATION_ARB      0x8261\ntypedef GLenum (APIENTRYP PFNGLGETGRAPHICSRESETSTATUSARBPROC) (void);\ntypedef void (APIENTRYP PFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);\ntypedef void (APIENTRYP PFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\ntypedef void (APIENTRYP PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, void *img);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\ntypedef void (APIENTRYP PFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);\ntypedef void (APIENTRYP PFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);\ntypedef void (APIENTRYP PFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat *values);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint *values);\ntypedef void (APIENTRYP PFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort *values);\ntypedef void (APIENTRYP PFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte *pattern);\ntypedef void (APIENTRYP PFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);\ntypedef void (APIENTRYP PFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);\ntypedef void (APIENTRYP PFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);\ntypedef void (APIENTRYP PFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\ntypedef void (APIENTRYP PFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLenum APIENTRY glGetGraphicsResetStatusARB (void);\nGLAPI void APIENTRY glGetnTexImageARB (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *img);\nGLAPI void APIENTRY glReadnPixelsARB (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\nGLAPI void APIENTRY glGetnCompressedTexImageARB (GLenum target, GLint lod, GLsizei bufSize, void *img);\nGLAPI void APIENTRY glGetnUniformfvARB (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\nGLAPI void APIENTRY glGetnUniformivARB (GLuint program, GLint location, GLsizei bufSize, GLint *params);\nGLAPI void APIENTRY glGetnUniformuivARB (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\nGLAPI void APIENTRY glGetnUniformdvARB (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);\nGLAPI void APIENTRY glGetnMapdvARB (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);\nGLAPI void APIENTRY glGetnMapfvARB (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);\nGLAPI void APIENTRY glGetnMapivARB (GLenum target, GLenum query, GLsizei bufSize, GLint *v);\nGLAPI void APIENTRY glGetnPixelMapfvARB (GLenum map, GLsizei bufSize, GLfloat *values);\nGLAPI void APIENTRY glGetnPixelMapuivARB (GLenum map, GLsizei bufSize, GLuint *values);\nGLAPI void APIENTRY glGetnPixelMapusvARB (GLenum map, GLsizei bufSize, GLushort *values);\nGLAPI void APIENTRY glGetnPolygonStippleARB (GLsizei bufSize, GLubyte *pattern);\nGLAPI void APIENTRY glGetnColorTableARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);\nGLAPI void APIENTRY glGetnConvolutionFilterARB (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);\nGLAPI void APIENTRY glGetnSeparableFilterARB (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);\nGLAPI void APIENTRY glGetnHistogramARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\nGLAPI void APIENTRY glGetnMinmaxARB (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);\n#endif\n#endif /* GL_ARB_robustness */\n\n#ifndef GL_ARB_robustness_isolation\n#define GL_ARB_robustness_isolation 1\n#endif /* GL_ARB_robustness_isolation */\n\n#ifndef GL_ARB_sample_locations\n#define GL_ARB_sample_locations 1\n#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_ARB 0x933D\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_ARB 0x933E\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_ARB 0x933F\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_ARB 0x9340\n#define GL_SAMPLE_LOCATION_ARB            0x8E50\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_ARB 0x9341\n#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_ARB 0x9342\n#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_ARB 0x9343\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVARBPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLEVALUATEDEPTHVALUESARBPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferSampleLocationsfvARB (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glNamedFramebufferSampleLocationsfvARB (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glEvaluateDepthValuesARB (void);\n#endif\n#endif /* GL_ARB_sample_locations */\n\n#ifndef GL_ARB_sample_shading\n#define GL_ARB_sample_shading 1\n#define GL_SAMPLE_SHADING_ARB             0x8C36\n#define GL_MIN_SAMPLE_SHADING_VALUE_ARB   0x8C37\ntypedef void (APIENTRYP PFNGLMINSAMPLESHADINGARBPROC) (GLfloat value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMinSampleShadingARB (GLfloat value);\n#endif\n#endif /* GL_ARB_sample_shading */\n\n#ifndef GL_ARB_sampler_objects\n#define GL_ARB_sampler_objects 1\n#endif /* GL_ARB_sampler_objects */\n\n#ifndef GL_ARB_seamless_cube_map\n#define GL_ARB_seamless_cube_map 1\n#endif /* GL_ARB_seamless_cube_map */\n\n#ifndef GL_ARB_seamless_cubemap_per_texture\n#define GL_ARB_seamless_cubemap_per_texture 1\n#endif /* GL_ARB_seamless_cubemap_per_texture */\n\n#ifndef GL_ARB_separate_shader_objects\n#define GL_ARB_separate_shader_objects 1\n#endif /* GL_ARB_separate_shader_objects */\n\n#ifndef GL_ARB_shader_atomic_counter_ops\n#define GL_ARB_shader_atomic_counter_ops 1\n#endif /* GL_ARB_shader_atomic_counter_ops */\n\n#ifndef GL_ARB_shader_atomic_counters\n#define GL_ARB_shader_atomic_counters 1\n#endif /* GL_ARB_shader_atomic_counters */\n\n#ifndef GL_ARB_shader_ballot\n#define GL_ARB_shader_ballot 1\n#endif /* GL_ARB_shader_ballot */\n\n#ifndef GL_ARB_shader_bit_encoding\n#define GL_ARB_shader_bit_encoding 1\n#endif /* GL_ARB_shader_bit_encoding */\n\n#ifndef GL_ARB_shader_clock\n#define GL_ARB_shader_clock 1\n#endif /* GL_ARB_shader_clock */\n\n#ifndef GL_ARB_shader_draw_parameters\n#define GL_ARB_shader_draw_parameters 1\n#endif /* GL_ARB_shader_draw_parameters */\n\n#ifndef GL_ARB_shader_group_vote\n#define GL_ARB_shader_group_vote 1\n#endif /* GL_ARB_shader_group_vote */\n\n#ifndef GL_ARB_shader_image_load_store\n#define GL_ARB_shader_image_load_store 1\n#endif /* GL_ARB_shader_image_load_store */\n\n#ifndef GL_ARB_shader_image_size\n#define GL_ARB_shader_image_size 1\n#endif /* GL_ARB_shader_image_size */\n\n#ifndef GL_ARB_shader_objects\n#define GL_ARB_shader_objects 1\n#ifdef __APPLE__\ntypedef void *GLhandleARB;\n#else\ntypedef unsigned int GLhandleARB;\n#endif\ntypedef char GLcharARB;\n#define GL_PROGRAM_OBJECT_ARB             0x8B40\n#define GL_SHADER_OBJECT_ARB              0x8B48\n#define GL_OBJECT_TYPE_ARB                0x8B4E\n#define GL_OBJECT_SUBTYPE_ARB             0x8B4F\n#define GL_FLOAT_VEC2_ARB                 0x8B50\n#define GL_FLOAT_VEC3_ARB                 0x8B51\n#define GL_FLOAT_VEC4_ARB                 0x8B52\n#define GL_INT_VEC2_ARB                   0x8B53\n#define GL_INT_VEC3_ARB                   0x8B54\n#define GL_INT_VEC4_ARB                   0x8B55\n#define GL_BOOL_ARB                       0x8B56\n#define GL_BOOL_VEC2_ARB                  0x8B57\n#define GL_BOOL_VEC3_ARB                  0x8B58\n#define GL_BOOL_VEC4_ARB                  0x8B59\n#define GL_FLOAT_MAT2_ARB                 0x8B5A\n#define GL_FLOAT_MAT3_ARB                 0x8B5B\n#define GL_FLOAT_MAT4_ARB                 0x8B5C\n#define GL_SAMPLER_1D_ARB                 0x8B5D\n#define GL_SAMPLER_2D_ARB                 0x8B5E\n#define GL_SAMPLER_3D_ARB                 0x8B5F\n#define GL_SAMPLER_CUBE_ARB               0x8B60\n#define GL_SAMPLER_1D_SHADOW_ARB          0x8B61\n#define GL_SAMPLER_2D_SHADOW_ARB          0x8B62\n#define GL_SAMPLER_2D_RECT_ARB            0x8B63\n#define GL_SAMPLER_2D_RECT_SHADOW_ARB     0x8B64\n#define GL_OBJECT_DELETE_STATUS_ARB       0x8B80\n#define GL_OBJECT_COMPILE_STATUS_ARB      0x8B81\n#define GL_OBJECT_LINK_STATUS_ARB         0x8B82\n#define GL_OBJECT_VALIDATE_STATUS_ARB     0x8B83\n#define GL_OBJECT_INFO_LOG_LENGTH_ARB     0x8B84\n#define GL_OBJECT_ATTACHED_OBJECTS_ARB    0x8B85\n#define GL_OBJECT_ACTIVE_UNIFORMS_ARB     0x8B86\n#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87\n#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88\ntypedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);\ntypedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);\ntypedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);\ntypedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);\ntypedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);\ntypedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);\ntypedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);\ntypedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);\ntypedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);\ntypedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);\ntypedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj);\ntypedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);\ntypedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);\ntypedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);\ntypedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);\nGLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);\nGLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);\nGLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);\nGLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);\nGLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);\nGLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);\nGLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);\nGLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);\nGLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);\nGLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);\nGLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);\nGLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);\nGLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);\nGLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);\nGLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);\nGLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);\nGLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);\nGLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);\nGLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);\nGLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);\nGLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);\n#endif\n#endif /* GL_ARB_shader_objects */\n\n#ifndef GL_ARB_shader_precision\n#define GL_ARB_shader_precision 1\n#endif /* GL_ARB_shader_precision */\n\n#ifndef GL_ARB_shader_stencil_export\n#define GL_ARB_shader_stencil_export 1\n#endif /* GL_ARB_shader_stencil_export */\n\n#ifndef GL_ARB_shader_storage_buffer_object\n#define GL_ARB_shader_storage_buffer_object 1\n#endif /* GL_ARB_shader_storage_buffer_object */\n\n#ifndef GL_ARB_shader_subroutine\n#define GL_ARB_shader_subroutine 1\n#endif /* GL_ARB_shader_subroutine */\n\n#ifndef GL_ARB_shader_texture_image_samples\n#define GL_ARB_shader_texture_image_samples 1\n#endif /* GL_ARB_shader_texture_image_samples */\n\n#ifndef GL_ARB_shader_texture_lod\n#define GL_ARB_shader_texture_lod 1\n#endif /* GL_ARB_shader_texture_lod */\n\n#ifndef GL_ARB_shader_viewport_layer_array\n#define GL_ARB_shader_viewport_layer_array 1\n#endif /* GL_ARB_shader_viewport_layer_array */\n\n#ifndef GL_ARB_shading_language_100\n#define GL_ARB_shading_language_100 1\n#define GL_SHADING_LANGUAGE_VERSION_ARB   0x8B8C\n#endif /* GL_ARB_shading_language_100 */\n\n#ifndef GL_ARB_shading_language_420pack\n#define GL_ARB_shading_language_420pack 1\n#endif /* GL_ARB_shading_language_420pack */\n\n#ifndef GL_ARB_shading_language_include\n#define GL_ARB_shading_language_include 1\n#define GL_SHADER_INCLUDE_ARB             0x8DAE\n#define GL_NAMED_STRING_LENGTH_ARB        0x8DE9\n#define GL_NAMED_STRING_TYPE_ARB          0x8DEA\ntypedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);\ntypedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);\ntypedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);\ntypedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);\ntypedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);\nGLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);\nGLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar *const*path, const GLint *length);\nGLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);\nGLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);\nGLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);\n#endif\n#endif /* GL_ARB_shading_language_include */\n\n#ifndef GL_ARB_shading_language_packing\n#define GL_ARB_shading_language_packing 1\n#endif /* GL_ARB_shading_language_packing */\n\n#ifndef GL_ARB_shadow\n#define GL_ARB_shadow 1\n#define GL_TEXTURE_COMPARE_MODE_ARB       0x884C\n#define GL_TEXTURE_COMPARE_FUNC_ARB       0x884D\n#define GL_COMPARE_R_TO_TEXTURE_ARB       0x884E\n#endif /* GL_ARB_shadow */\n\n#ifndef GL_ARB_shadow_ambient\n#define GL_ARB_shadow_ambient 1\n#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF\n#endif /* GL_ARB_shadow_ambient */\n\n#ifndef GL_ARB_sparse_buffer\n#define GL_ARB_sparse_buffer 1\n#define GL_SPARSE_STORAGE_BIT_ARB         0x0400\n#define GL_SPARSE_BUFFER_PAGE_SIZE_ARB    0x82F8\ntypedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTARBPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTARBPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferPageCommitmentARB (GLenum target, GLintptr offset, GLsizeiptr size, GLboolean commit);\nGLAPI void APIENTRY glNamedBufferPageCommitmentEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);\nGLAPI void APIENTRY glNamedBufferPageCommitmentARB (GLuint buffer, GLintptr offset, GLsizeiptr size, GLboolean commit);\n#endif\n#endif /* GL_ARB_sparse_buffer */\n\n#ifndef GL_ARB_sparse_texture\n#define GL_ARB_sparse_texture 1\n#define GL_TEXTURE_SPARSE_ARB             0x91A6\n#define GL_VIRTUAL_PAGE_SIZE_INDEX_ARB    0x91A7\n#define GL_NUM_SPARSE_LEVELS_ARB          0x91AA\n#define GL_NUM_VIRTUAL_PAGE_SIZES_ARB     0x91A8\n#define GL_VIRTUAL_PAGE_SIZE_X_ARB        0x9195\n#define GL_VIRTUAL_PAGE_SIZE_Y_ARB        0x9196\n#define GL_VIRTUAL_PAGE_SIZE_Z_ARB        0x9197\n#define GL_MAX_SPARSE_TEXTURE_SIZE_ARB    0x9198\n#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB 0x9199\n#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB 0x919A\n#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB 0x91A9\ntypedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexPageCommitmentARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\n#endif\n#endif /* GL_ARB_sparse_texture */\n\n#ifndef GL_ARB_sparse_texture2\n#define GL_ARB_sparse_texture2 1\n#endif /* GL_ARB_sparse_texture2 */\n\n#ifndef GL_ARB_sparse_texture_clamp\n#define GL_ARB_sparse_texture_clamp 1\n#endif /* GL_ARB_sparse_texture_clamp */\n\n#ifndef GL_ARB_spirv_extensions\n#define GL_ARB_spirv_extensions 1\n#endif /* GL_ARB_spirv_extensions */\n\n#ifndef GL_ARB_stencil_texturing\n#define GL_ARB_stencil_texturing 1\n#endif /* GL_ARB_stencil_texturing */\n\n#ifndef GL_ARB_sync\n#define GL_ARB_sync 1\n#endif /* GL_ARB_sync */\n\n#ifndef GL_ARB_tessellation_shader\n#define GL_ARB_tessellation_shader 1\n#endif /* GL_ARB_tessellation_shader */\n\n#ifndef GL_ARB_texture_barrier\n#define GL_ARB_texture_barrier 1\n#endif /* GL_ARB_texture_barrier */\n\n#ifndef GL_ARB_texture_border_clamp\n#define GL_ARB_texture_border_clamp 1\n#define GL_CLAMP_TO_BORDER_ARB            0x812D\n#endif /* GL_ARB_texture_border_clamp */\n\n#ifndef GL_ARB_texture_buffer_object\n#define GL_ARB_texture_buffer_object 1\n#define GL_TEXTURE_BUFFER_ARB             0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE_ARB    0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER_ARB     0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D\n#define GL_TEXTURE_BUFFER_FORMAT_ARB      0x8C2E\ntypedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);\n#endif\n#endif /* GL_ARB_texture_buffer_object */\n\n#ifndef GL_ARB_texture_buffer_object_rgb32\n#define GL_ARB_texture_buffer_object_rgb32 1\n#endif /* GL_ARB_texture_buffer_object_rgb32 */\n\n#ifndef GL_ARB_texture_buffer_range\n#define GL_ARB_texture_buffer_range 1\n#endif /* GL_ARB_texture_buffer_range */\n\n#ifndef GL_ARB_texture_compression\n#define GL_ARB_texture_compression 1\n#define GL_COMPRESSED_ALPHA_ARB           0x84E9\n#define GL_COMPRESSED_LUMINANCE_ARB       0x84EA\n#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB\n#define GL_COMPRESSED_INTENSITY_ARB       0x84EC\n#define GL_COMPRESSED_RGB_ARB             0x84ED\n#define GL_COMPRESSED_RGBA_ARB            0x84EE\n#define GL_TEXTURE_COMPRESSION_HINT_ARB   0x84EF\n#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0\n#define GL_TEXTURE_COMPRESSED_ARB         0x86A1\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);\nGLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, void *img);\n#endif\n#endif /* GL_ARB_texture_compression */\n\n#ifndef GL_ARB_texture_compression_bptc\n#define GL_ARB_texture_compression_bptc 1\n#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C\n#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D\n#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E\n#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F\n#endif /* GL_ARB_texture_compression_bptc */\n\n#ifndef GL_ARB_texture_compression_rgtc\n#define GL_ARB_texture_compression_rgtc 1\n#endif /* GL_ARB_texture_compression_rgtc */\n\n#ifndef GL_ARB_texture_cube_map\n#define GL_ARB_texture_cube_map 1\n#define GL_NORMAL_MAP_ARB                 0x8511\n#define GL_REFLECTION_MAP_ARB             0x8512\n#define GL_TEXTURE_CUBE_MAP_ARB           0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARB   0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP_ARB     0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB  0x851C\n#endif /* GL_ARB_texture_cube_map */\n\n#ifndef GL_ARB_texture_cube_map_array\n#define GL_ARB_texture_cube_map_array 1\n#define GL_TEXTURE_CUBE_MAP_ARRAY_ARB     0x9009\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A\n#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B\n#define GL_SAMPLER_CUBE_MAP_ARRAY_ARB     0x900C\n#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D\n#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F\n#endif /* GL_ARB_texture_cube_map_array */\n\n#ifndef GL_ARB_texture_env_add\n#define GL_ARB_texture_env_add 1\n#endif /* GL_ARB_texture_env_add */\n\n#ifndef GL_ARB_texture_env_combine\n#define GL_ARB_texture_env_combine 1\n#define GL_COMBINE_ARB                    0x8570\n#define GL_COMBINE_RGB_ARB                0x8571\n#define GL_COMBINE_ALPHA_ARB              0x8572\n#define GL_SOURCE0_RGB_ARB                0x8580\n#define GL_SOURCE1_RGB_ARB                0x8581\n#define GL_SOURCE2_RGB_ARB                0x8582\n#define GL_SOURCE0_ALPHA_ARB              0x8588\n#define GL_SOURCE1_ALPHA_ARB              0x8589\n#define GL_SOURCE2_ALPHA_ARB              0x858A\n#define GL_OPERAND0_RGB_ARB               0x8590\n#define GL_OPERAND1_RGB_ARB               0x8591\n#define GL_OPERAND2_RGB_ARB               0x8592\n#define GL_OPERAND0_ALPHA_ARB             0x8598\n#define GL_OPERAND1_ALPHA_ARB             0x8599\n#define GL_OPERAND2_ALPHA_ARB             0x859A\n#define GL_RGB_SCALE_ARB                  0x8573\n#define GL_ADD_SIGNED_ARB                 0x8574\n#define GL_INTERPOLATE_ARB                0x8575\n#define GL_SUBTRACT_ARB                   0x84E7\n#define GL_CONSTANT_ARB                   0x8576\n#define GL_PRIMARY_COLOR_ARB              0x8577\n#define GL_PREVIOUS_ARB                   0x8578\n#endif /* GL_ARB_texture_env_combine */\n\n#ifndef GL_ARB_texture_env_crossbar\n#define GL_ARB_texture_env_crossbar 1\n#endif /* GL_ARB_texture_env_crossbar */\n\n#ifndef GL_ARB_texture_env_dot3\n#define GL_ARB_texture_env_dot3 1\n#define GL_DOT3_RGB_ARB                   0x86AE\n#define GL_DOT3_RGBA_ARB                  0x86AF\n#endif /* GL_ARB_texture_env_dot3 */\n\n#ifndef GL_ARB_texture_filter_anisotropic\n#define GL_ARB_texture_filter_anisotropic 1\n#endif /* GL_ARB_texture_filter_anisotropic */\n\n#ifndef GL_ARB_texture_filter_minmax\n#define GL_ARB_texture_filter_minmax 1\n#define GL_TEXTURE_REDUCTION_MODE_ARB     0x9366\n#define GL_WEIGHTED_AVERAGE_ARB           0x9367\n#endif /* GL_ARB_texture_filter_minmax */\n\n#ifndef GL_ARB_texture_float\n#define GL_ARB_texture_float 1\n#define GL_TEXTURE_RED_TYPE_ARB           0x8C10\n#define GL_TEXTURE_GREEN_TYPE_ARB         0x8C11\n#define GL_TEXTURE_BLUE_TYPE_ARB          0x8C12\n#define GL_TEXTURE_ALPHA_TYPE_ARB         0x8C13\n#define GL_TEXTURE_LUMINANCE_TYPE_ARB     0x8C14\n#define GL_TEXTURE_INTENSITY_TYPE_ARB     0x8C15\n#define GL_TEXTURE_DEPTH_TYPE_ARB         0x8C16\n#define GL_UNSIGNED_NORMALIZED_ARB        0x8C17\n#define GL_RGBA32F_ARB                    0x8814\n#define GL_RGB32F_ARB                     0x8815\n#define GL_ALPHA32F_ARB                   0x8816\n#define GL_INTENSITY32F_ARB               0x8817\n#define GL_LUMINANCE32F_ARB               0x8818\n#define GL_LUMINANCE_ALPHA32F_ARB         0x8819\n#define GL_RGBA16F_ARB                    0x881A\n#define GL_RGB16F_ARB                     0x881B\n#define GL_ALPHA16F_ARB                   0x881C\n#define GL_INTENSITY16F_ARB               0x881D\n#define GL_LUMINANCE16F_ARB               0x881E\n#define GL_LUMINANCE_ALPHA16F_ARB         0x881F\n#endif /* GL_ARB_texture_float */\n\n#ifndef GL_ARB_texture_gather\n#define GL_ARB_texture_gather 1\n#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E\n#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F\n#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F\n#endif /* GL_ARB_texture_gather */\n\n#ifndef GL_ARB_texture_mirror_clamp_to_edge\n#define GL_ARB_texture_mirror_clamp_to_edge 1\n#endif /* GL_ARB_texture_mirror_clamp_to_edge */\n\n#ifndef GL_ARB_texture_mirrored_repeat\n#define GL_ARB_texture_mirrored_repeat 1\n#define GL_MIRRORED_REPEAT_ARB            0x8370\n#endif /* GL_ARB_texture_mirrored_repeat */\n\n#ifndef GL_ARB_texture_multisample\n#define GL_ARB_texture_multisample 1\n#endif /* GL_ARB_texture_multisample */\n\n#ifndef GL_ARB_texture_non_power_of_two\n#define GL_ARB_texture_non_power_of_two 1\n#endif /* GL_ARB_texture_non_power_of_two */\n\n#ifndef GL_ARB_texture_query_levels\n#define GL_ARB_texture_query_levels 1\n#endif /* GL_ARB_texture_query_levels */\n\n#ifndef GL_ARB_texture_query_lod\n#define GL_ARB_texture_query_lod 1\n#endif /* GL_ARB_texture_query_lod */\n\n#ifndef GL_ARB_texture_rectangle\n#define GL_ARB_texture_rectangle 1\n#define GL_TEXTURE_RECTANGLE_ARB          0x84F5\n#define GL_TEXTURE_BINDING_RECTANGLE_ARB  0x84F6\n#define GL_PROXY_TEXTURE_RECTANGLE_ARB    0x84F7\n#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8\n#endif /* GL_ARB_texture_rectangle */\n\n#ifndef GL_ARB_texture_rg\n#define GL_ARB_texture_rg 1\n#endif /* GL_ARB_texture_rg */\n\n#ifndef GL_ARB_texture_rgb10_a2ui\n#define GL_ARB_texture_rgb10_a2ui 1\n#endif /* GL_ARB_texture_rgb10_a2ui */\n\n#ifndef GL_ARB_texture_stencil8\n#define GL_ARB_texture_stencil8 1\n#endif /* GL_ARB_texture_stencil8 */\n\n#ifndef GL_ARB_texture_storage\n#define GL_ARB_texture_storage 1\n#endif /* GL_ARB_texture_storage */\n\n#ifndef GL_ARB_texture_storage_multisample\n#define GL_ARB_texture_storage_multisample 1\n#endif /* GL_ARB_texture_storage_multisample */\n\n#ifndef GL_ARB_texture_swizzle\n#define GL_ARB_texture_swizzle 1\n#endif /* GL_ARB_texture_swizzle */\n\n#ifndef GL_ARB_texture_view\n#define GL_ARB_texture_view 1\n#endif /* GL_ARB_texture_view */\n\n#ifndef GL_ARB_timer_query\n#define GL_ARB_timer_query 1\n#endif /* GL_ARB_timer_query */\n\n#ifndef GL_ARB_transform_feedback2\n#define GL_ARB_transform_feedback2 1\n#endif /* GL_ARB_transform_feedback2 */\n\n#ifndef GL_ARB_transform_feedback3\n#define GL_ARB_transform_feedback3 1\n#endif /* GL_ARB_transform_feedback3 */\n\n#ifndef GL_ARB_transform_feedback_instanced\n#define GL_ARB_transform_feedback_instanced 1\n#endif /* GL_ARB_transform_feedback_instanced */\n\n#ifndef GL_ARB_transform_feedback_overflow_query\n#define GL_ARB_transform_feedback_overflow_query 1\n#define GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB 0x82EC\n#define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB 0x82ED\n#endif /* GL_ARB_transform_feedback_overflow_query */\n\n#ifndef GL_ARB_transpose_matrix\n#define GL_ARB_transpose_matrix 1\n#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3\n#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4\n#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB   0x84E5\n#define GL_TRANSPOSE_COLOR_MATRIX_ARB     0x84E6\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);\nGLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);\nGLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);\nGLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);\n#endif\n#endif /* GL_ARB_transpose_matrix */\n\n#ifndef GL_ARB_uniform_buffer_object\n#define GL_ARB_uniform_buffer_object 1\n#endif /* GL_ARB_uniform_buffer_object */\n\n#ifndef GL_ARB_vertex_array_bgra\n#define GL_ARB_vertex_array_bgra 1\n#endif /* GL_ARB_vertex_array_bgra */\n\n#ifndef GL_ARB_vertex_array_object\n#define GL_ARB_vertex_array_object 1\n#endif /* GL_ARB_vertex_array_object */\n\n#ifndef GL_ARB_vertex_attrib_64bit\n#define GL_ARB_vertex_attrib_64bit 1\n#endif /* GL_ARB_vertex_attrib_64bit */\n\n#ifndef GL_ARB_vertex_attrib_binding\n#define GL_ARB_vertex_attrib_binding 1\n#endif /* GL_ARB_vertex_attrib_binding */\n\n#ifndef GL_ARB_vertex_blend\n#define GL_ARB_vertex_blend 1\n#define GL_MAX_VERTEX_UNITS_ARB           0x86A4\n#define GL_ACTIVE_VERTEX_UNITS_ARB        0x86A5\n#define GL_WEIGHT_SUM_UNITY_ARB           0x86A6\n#define GL_VERTEX_BLEND_ARB               0x86A7\n#define GL_CURRENT_WEIGHT_ARB             0x86A8\n#define GL_WEIGHT_ARRAY_TYPE_ARB          0x86A9\n#define GL_WEIGHT_ARRAY_STRIDE_ARB        0x86AA\n#define GL_WEIGHT_ARRAY_SIZE_ARB          0x86AB\n#define GL_WEIGHT_ARRAY_POINTER_ARB       0x86AC\n#define GL_WEIGHT_ARRAY_ARB               0x86AD\n#define GL_MODELVIEW0_ARB                 0x1700\n#define GL_MODELVIEW1_ARB                 0x850A\n#define GL_MODELVIEW2_ARB                 0x8722\n#define GL_MODELVIEW3_ARB                 0x8723\n#define GL_MODELVIEW4_ARB                 0x8724\n#define GL_MODELVIEW5_ARB                 0x8725\n#define GL_MODELVIEW6_ARB                 0x8726\n#define GL_MODELVIEW7_ARB                 0x8727\n#define GL_MODELVIEW8_ARB                 0x8728\n#define GL_MODELVIEW9_ARB                 0x8729\n#define GL_MODELVIEW10_ARB                0x872A\n#define GL_MODELVIEW11_ARB                0x872B\n#define GL_MODELVIEW12_ARB                0x872C\n#define GL_MODELVIEW13_ARB                0x872D\n#define GL_MODELVIEW14_ARB                0x872E\n#define GL_MODELVIEW15_ARB                0x872F\n#define GL_MODELVIEW16_ARB                0x8730\n#define GL_MODELVIEW17_ARB                0x8731\n#define GL_MODELVIEW18_ARB                0x8732\n#define GL_MODELVIEW19_ARB                0x8733\n#define GL_MODELVIEW20_ARB                0x8734\n#define GL_MODELVIEW21_ARB                0x8735\n#define GL_MODELVIEW22_ARB                0x8736\n#define GL_MODELVIEW23_ARB                0x8737\n#define GL_MODELVIEW24_ARB                0x8738\n#define GL_MODELVIEW25_ARB                0x8739\n#define GL_MODELVIEW26_ARB                0x873A\n#define GL_MODELVIEW27_ARB                0x873B\n#define GL_MODELVIEW28_ARB                0x873C\n#define GL_MODELVIEW29_ARB                0x873D\n#define GL_MODELVIEW30_ARB                0x873E\n#define GL_MODELVIEW31_ARB                0x873F\ntypedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights);\ntypedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);\nGLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);\nGLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);\nGLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);\nGLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);\nGLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);\nGLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);\nGLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);\nGLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glVertexBlendARB (GLint count);\n#endif\n#endif /* GL_ARB_vertex_blend */\n\n#ifndef GL_ARB_vertex_buffer_object\n#define GL_ARB_vertex_buffer_object 1\ntypedef khronos_ssize_t GLsizeiptrARB;\ntypedef khronos_intptr_t GLintptrARB;\n#define GL_BUFFER_SIZE_ARB                0x8764\n#define GL_BUFFER_USAGE_ARB               0x8765\n#define GL_ARRAY_BUFFER_ARB               0x8892\n#define GL_ELEMENT_ARRAY_BUFFER_ARB       0x8893\n#define GL_ARRAY_BUFFER_BINDING_ARB       0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895\n#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896\n#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897\n#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898\n#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899\n#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A\n#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B\n#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C\n#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D\n#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F\n#define GL_READ_ONLY_ARB                  0x88B8\n#define GL_WRITE_ONLY_ARB                 0x88B9\n#define GL_READ_WRITE_ARB                 0x88BA\n#define GL_BUFFER_ACCESS_ARB              0x88BB\n#define GL_BUFFER_MAPPED_ARB              0x88BC\n#define GL_BUFFER_MAP_POINTER_ARB         0x88BD\n#define GL_STREAM_DRAW_ARB                0x88E0\n#define GL_STREAM_READ_ARB                0x88E1\n#define GL_STREAM_COPY_ARB                0x88E2\n#define GL_STATIC_DRAW_ARB                0x88E4\n#define GL_STATIC_READ_ARB                0x88E5\n#define GL_STATIC_COPY_ARB                0x88E6\n#define GL_DYNAMIC_DRAW_ARB               0x88E8\n#define GL_DYNAMIC_READ_ARB               0x88E9\n#define GL_DYNAMIC_COPY_ARB               0x88EA\ntypedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);\ntypedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);\ntypedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);\ntypedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);\ntypedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);\ntypedef void *(APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access);\ntypedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);\nGLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);\nGLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);\nGLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);\nGLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const void *data, GLenum usage);\nGLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const void *data);\nGLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, void *data);\nGLAPI void *APIENTRY glMapBufferARB (GLenum target, GLenum access);\nGLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);\nGLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, void **params);\n#endif\n#endif /* GL_ARB_vertex_buffer_object */\n\n#ifndef GL_ARB_vertex_program\n#define GL_ARB_vertex_program 1\n#define GL_COLOR_SUM_ARB                  0x8458\n#define GL_VERTEX_PROGRAM_ARB             0x8620\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB   0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB   0x8625\n#define GL_CURRENT_VERTEX_ATTRIB_ARB      0x8626\n#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642\n#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB    0x8643\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645\n#define GL_MAX_VERTEX_ATTRIBS_ARB         0x8869\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A\n#define GL_PROGRAM_ADDRESS_REGISTERS_ARB  0x88B0\n#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1\n#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2\n#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, void **pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);\nGLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);\nGLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);\nGLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);\nGLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);\nGLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\nGLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);\nGLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);\nGLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, void **pointer);\n#endif\n#endif /* GL_ARB_vertex_program */\n\n#ifndef GL_ARB_vertex_shader\n#define GL_ARB_vertex_shader 1\n#define GL_VERTEX_SHADER_ARB              0x8B31\n#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A\n#define GL_MAX_VARYING_FLOATS_ARB         0x8B4B\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D\n#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB   0x8B89\n#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A\ntypedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);\ntypedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);\ntypedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);\nGLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);\nGLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);\n#endif\n#endif /* GL_ARB_vertex_shader */\n\n#ifndef GL_ARB_vertex_type_10f_11f_11f_rev\n#define GL_ARB_vertex_type_10f_11f_11f_rev 1\n#endif /* GL_ARB_vertex_type_10f_11f_11f_rev */\n\n#ifndef GL_ARB_vertex_type_2_10_10_10_rev\n#define GL_ARB_vertex_type_2_10_10_10_rev 1\n#endif /* GL_ARB_vertex_type_2_10_10_10_rev */\n\n#ifndef GL_ARB_viewport_array\n#define GL_ARB_viewport_array 1\ntypedef void (APIENTRYP PFNGLDEPTHRANGEARRAYDVNVPROC) (GLuint first, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEINDEXEDDNVPROC) (GLuint index, GLdouble n, GLdouble f);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDepthRangeArraydvNV (GLuint first, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glDepthRangeIndexeddNV (GLuint index, GLdouble n, GLdouble f);\n#endif\n#endif /* GL_ARB_viewport_array */\n\n#ifndef GL_ARB_window_pos\n#define GL_ARB_window_pos 1\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);\nGLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);\nGLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);\nGLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);\nGLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);\nGLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);\nGLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);\nGLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);\n#endif\n#endif /* GL_ARB_window_pos */\n\n#ifndef GL_KHR_blend_equation_advanced\n#define GL_KHR_blend_equation_advanced 1\n#define GL_MULTIPLY_KHR                   0x9294\n#define GL_SCREEN_KHR                     0x9295\n#define GL_OVERLAY_KHR                    0x9296\n#define GL_DARKEN_KHR                     0x9297\n#define GL_LIGHTEN_KHR                    0x9298\n#define GL_COLORDODGE_KHR                 0x9299\n#define GL_COLORBURN_KHR                  0x929A\n#define GL_HARDLIGHT_KHR                  0x929B\n#define GL_SOFTLIGHT_KHR                  0x929C\n#define GL_DIFFERENCE_KHR                 0x929E\n#define GL_EXCLUSION_KHR                  0x92A0\n#define GL_HSL_HUE_KHR                    0x92AD\n#define GL_HSL_SATURATION_KHR             0x92AE\n#define GL_HSL_COLOR_KHR                  0x92AF\n#define GL_HSL_LUMINOSITY_KHR             0x92B0\ntypedef void (APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendBarrierKHR (void);\n#endif\n#endif /* GL_KHR_blend_equation_advanced */\n\n#ifndef GL_KHR_blend_equation_advanced_coherent\n#define GL_KHR_blend_equation_advanced_coherent 1\n#define GL_BLEND_ADVANCED_COHERENT_KHR    0x9285\n#endif /* GL_KHR_blend_equation_advanced_coherent */\n\n#ifndef GL_KHR_context_flush_control\n#define GL_KHR_context_flush_control 1\n#endif /* GL_KHR_context_flush_control */\n\n#ifndef GL_KHR_debug\n#define GL_KHR_debug 1\n#endif /* GL_KHR_debug */\n\n#ifndef GL_KHR_no_error\n#define GL_KHR_no_error 1\n#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR  0x00000008\n#endif /* GL_KHR_no_error */\n\n#ifndef GL_KHR_parallel_shader_compile\n#define GL_KHR_parallel_shader_compile 1\n#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0\n#define GL_COMPLETION_STATUS_KHR          0x91B1\ntypedef void (APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);\n#endif\n#endif /* GL_KHR_parallel_shader_compile */\n\n#ifndef GL_KHR_robust_buffer_access_behavior\n#define GL_KHR_robust_buffer_access_behavior 1\n#endif /* GL_KHR_robust_buffer_access_behavior */\n\n#ifndef GL_KHR_robustness\n#define GL_KHR_robustness 1\n#define GL_CONTEXT_ROBUST_ACCESS          0x90F3\n#endif /* GL_KHR_robustness */\n\n#ifndef GL_KHR_shader_subgroup\n#define GL_KHR_shader_subgroup 1\n#define GL_SUBGROUP_SIZE_KHR              0x9532\n#define GL_SUBGROUP_SUPPORTED_STAGES_KHR  0x9533\n#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534\n#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR   0x9535\n#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001\n#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR  0x00000002\n#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004\n#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008\n#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010\n#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020\n#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040\n#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR  0x00000080\n#endif /* GL_KHR_shader_subgroup */\n\n#ifndef GL_KHR_texture_compression_astc_hdr\n#define GL_KHR_texture_compression_astc_hdr 1\n#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0\n#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1\n#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2\n#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3\n#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4\n#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5\n#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6\n#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7\n#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8\n#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9\n#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA\n#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB\n#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC\n#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD\n#endif /* GL_KHR_texture_compression_astc_hdr */\n\n#ifndef GL_KHR_texture_compression_astc_ldr\n#define GL_KHR_texture_compression_astc_ldr 1\n#endif /* GL_KHR_texture_compression_astc_ldr */\n\n#ifndef GL_KHR_texture_compression_astc_sliced_3d\n#define GL_KHR_texture_compression_astc_sliced_3d 1\n#endif /* GL_KHR_texture_compression_astc_sliced_3d */\n\n#ifndef GL_OES_byte_coordinates\n#define GL_OES_byte_coordinates 1\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD1BOESPROC) (GLbyte s);\ntypedef void (APIENTRYP PFNGLTEXCOORD1BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t);\ntypedef void (APIENTRYP PFNGLTEXCOORD2BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r);\ntypedef void (APIENTRYP PFNGLTEXCOORD3BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q);\ntypedef void (APIENTRYP PFNGLTEXCOORD4BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLVERTEX2BOESPROC) (GLbyte x, GLbyte y);\ntypedef void (APIENTRYP PFNGLVERTEX2BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y, GLbyte z);\ntypedef void (APIENTRYP PFNGLVERTEX3BVOESPROC) (const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z, GLbyte w);\ntypedef void (APIENTRYP PFNGLVERTEX4BVOESPROC) (const GLbyte *coords);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiTexCoord1bOES (GLenum texture, GLbyte s);\nGLAPI void APIENTRY glMultiTexCoord1bvOES (GLenum texture, const GLbyte *coords);\nGLAPI void APIENTRY glMultiTexCoord2bOES (GLenum texture, GLbyte s, GLbyte t);\nGLAPI void APIENTRY glMultiTexCoord2bvOES (GLenum texture, const GLbyte *coords);\nGLAPI void APIENTRY glMultiTexCoord3bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r);\nGLAPI void APIENTRY glMultiTexCoord3bvOES (GLenum texture, const GLbyte *coords);\nGLAPI void APIENTRY glMultiTexCoord4bOES (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q);\nGLAPI void APIENTRY glMultiTexCoord4bvOES (GLenum texture, const GLbyte *coords);\nGLAPI void APIENTRY glTexCoord1bOES (GLbyte s);\nGLAPI void APIENTRY glTexCoord1bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glTexCoord2bOES (GLbyte s, GLbyte t);\nGLAPI void APIENTRY glTexCoord2bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glTexCoord3bOES (GLbyte s, GLbyte t, GLbyte r);\nGLAPI void APIENTRY glTexCoord3bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glTexCoord4bOES (GLbyte s, GLbyte t, GLbyte r, GLbyte q);\nGLAPI void APIENTRY glTexCoord4bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glVertex2bOES (GLbyte x, GLbyte y);\nGLAPI void APIENTRY glVertex2bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glVertex3bOES (GLbyte x, GLbyte y, GLbyte z);\nGLAPI void APIENTRY glVertex3bvOES (const GLbyte *coords);\nGLAPI void APIENTRY glVertex4bOES (GLbyte x, GLbyte y, GLbyte z, GLbyte w);\nGLAPI void APIENTRY glVertex4bvOES (const GLbyte *coords);\n#endif\n#endif /* GL_OES_byte_coordinates */\n\n#ifndef GL_OES_compressed_paletted_texture\n#define GL_OES_compressed_paletted_texture 1\n#define GL_PALETTE4_RGB8_OES              0x8B90\n#define GL_PALETTE4_RGBA8_OES             0x8B91\n#define GL_PALETTE4_R5_G6_B5_OES          0x8B92\n#define GL_PALETTE4_RGBA4_OES             0x8B93\n#define GL_PALETTE4_RGB5_A1_OES           0x8B94\n#define GL_PALETTE8_RGB8_OES              0x8B95\n#define GL_PALETTE8_RGBA8_OES             0x8B96\n#define GL_PALETTE8_R5_G6_B5_OES          0x8B97\n#define GL_PALETTE8_RGBA4_OES             0x8B98\n#define GL_PALETTE8_RGB5_A1_OES           0x8B99\n#endif /* GL_OES_compressed_paletted_texture */\n\n#ifndef GL_OES_fixed_point\n#define GL_OES_fixed_point 1\ntypedef khronos_int32_t GLfixed;\n#define GL_FIXED_OES                      0x140C\ntypedef void (APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref);\ntypedef void (APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\ntypedef void (APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLfixed depth);\ntypedef void (APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);\ntypedef void (APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f);\ntypedef void (APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *param);\ntypedef void (APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);\ntypedef void (APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed *equation);\ntypedef void (APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *param);\ntypedef void (APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);\ntypedef void (APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);\ntypedef void (APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *param);\ntypedef void (APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);\ntypedef void (APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);\ntypedef void (APIENTRYP PFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);\ntypedef void (APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);\ntypedef void (APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);\ntypedef void (APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);\ntypedef void (APIENTRYP PFNGLACCUMXOESPROC) (GLenum op, GLfixed value);\ntypedef void (APIENTRYP PFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);\ntypedef void (APIENTRYP PFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\ntypedef void (APIENTRYP PFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\ntypedef void (APIENTRYP PFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue);\ntypedef void (APIENTRYP PFNGLCOLOR3XVOESPROC) (const GLfixed *components);\ntypedef void (APIENTRYP PFNGLCOLOR4XVOESPROC) (const GLfixed *components);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLEVALCOORD1XOESPROC) (GLfixed u);\ntypedef void (APIENTRYP PFNGLEVALCOORD1XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v);\ntypedef void (APIENTRYP PFNGLEVALCOORD2XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed *buffer);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed *v);\ntypedef void (APIENTRYP PFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed *values);\ntypedef void (APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed *params);\ntypedef void (APIENTRYP PFNGLINDEXXOESPROC) (GLfixed component);\ntypedef void (APIENTRYP PFNGLINDEXXVOESPROC) (const GLfixed *component);\ntypedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);\ntypedef void (APIENTRYP PFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);\ntypedef void (APIENTRYP PFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);\ntypedef void (APIENTRYP PFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2);\ntypedef void (APIENTRYP PFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);\ntypedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed *m);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLNORMAL3XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLPASSTHROUGHXOESPROC) (GLfixed token);\ntypedef void (APIENTRYP PFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed *values);\ntypedef void (APIENTRYP PFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor);\ntypedef void (APIENTRYP PFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint *textures, const GLfixed *priorities);\ntypedef void (APIENTRYP PFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y);\ntypedef void (APIENTRYP PFNGLRASTERPOS2XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z);\ntypedef void (APIENTRYP PFNGLRASTERPOS3XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w);\ntypedef void (APIENTRYP PFNGLRASTERPOS4XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);\ntypedef void (APIENTRYP PFNGLRECTXVOESPROC) (const GLfixed *v1, const GLfixed *v2);\ntypedef void (APIENTRYP PFNGLTEXCOORD1XOESPROC) (GLfixed s);\ntypedef void (APIENTRYP PFNGLTEXCOORD1XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t);\ntypedef void (APIENTRYP PFNGLTEXCOORD2XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r);\ntypedef void (APIENTRYP PFNGLTEXCOORD3XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q);\ntypedef void (APIENTRYP PFNGLTEXCOORD4XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);\ntypedef void (APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);\ntypedef void (APIENTRYP PFNGLVERTEX2XOESPROC) (GLfixed x);\ntypedef void (APIENTRYP PFNGLVERTEX2XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y);\ntypedef void (APIENTRYP PFNGLVERTEX3XVOESPROC) (const GLfixed *coords);\ntypedef void (APIENTRYP PFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z);\ntypedef void (APIENTRYP PFNGLVERTEX4XVOESPROC) (const GLfixed *coords);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glAlphaFuncxOES (GLenum func, GLfixed ref);\nGLAPI void APIENTRY glClearColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\nGLAPI void APIENTRY glClearDepthxOES (GLfixed depth);\nGLAPI void APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);\nGLAPI void APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\nGLAPI void APIENTRY glDepthRangexOES (GLfixed n, GLfixed f);\nGLAPI void APIENTRY glFogxOES (GLenum pname, GLfixed param);\nGLAPI void APIENTRY glFogxvOES (GLenum pname, const GLfixed *param);\nGLAPI void APIENTRY glFrustumxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);\nGLAPI void APIENTRY glGetClipPlanexOES (GLenum plane, GLfixed *equation);\nGLAPI void APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetTexEnvxvOES (GLenum target, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glLightModelxOES (GLenum pname, GLfixed param);\nGLAPI void APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *param);\nGLAPI void APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glLineWidthxOES (GLfixed width);\nGLAPI void APIENTRY glLoadMatrixxOES (const GLfixed *m);\nGLAPI void APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *param);\nGLAPI void APIENTRY glMultMatrixxOES (const GLfixed *m);\nGLAPI void APIENTRY glMultiTexCoord4xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q);\nGLAPI void APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);\nGLAPI void APIENTRY glOrthoxOES (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f);\nGLAPI void APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glPointSizexOES (GLfixed size);\nGLAPI void APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);\nGLAPI void APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);\nGLAPI void APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);\nGLAPI void APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);\nGLAPI void APIENTRY glAccumxOES (GLenum op, GLfixed value);\nGLAPI void APIENTRY glBitmapxOES (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte *bitmap);\nGLAPI void APIENTRY glBlendColorxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\nGLAPI void APIENTRY glClearAccumxOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);\nGLAPI void APIENTRY glColor3xOES (GLfixed red, GLfixed green, GLfixed blue);\nGLAPI void APIENTRY glColor3xvOES (const GLfixed *components);\nGLAPI void APIENTRY glColor4xvOES (const GLfixed *components);\nGLAPI void APIENTRY glConvolutionParameterxOES (GLenum target, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glConvolutionParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glEvalCoord1xOES (GLfixed u);\nGLAPI void APIENTRY glEvalCoord1xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glEvalCoord2xOES (GLfixed u, GLfixed v);\nGLAPI void APIENTRY glEvalCoord2xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glFeedbackBufferxOES (GLsizei n, GLenum type, const GLfixed *buffer);\nGLAPI void APIENTRY glGetConvolutionParameterxvOES (GLenum target, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetHistogramParameterxvOES (GLenum target, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetLightxOES (GLenum light, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetMapxvOES (GLenum target, GLenum query, GLfixed *v);\nGLAPI void APIENTRY glGetMaterialxOES (GLenum face, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glGetPixelMapxv (GLenum map, GLint size, GLfixed *values);\nGLAPI void APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glGetTexLevelParameterxvOES (GLenum target, GLint level, GLenum pname, GLfixed *params);\nGLAPI void APIENTRY glIndexxOES (GLfixed component);\nGLAPI void APIENTRY glIndexxvOES (const GLfixed *component);\nGLAPI void APIENTRY glLoadTransposeMatrixxOES (const GLfixed *m);\nGLAPI void APIENTRY glMap1xOES (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points);\nGLAPI void APIENTRY glMap2xOES (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points);\nGLAPI void APIENTRY glMapGrid1xOES (GLint n, GLfixed u1, GLfixed u2);\nGLAPI void APIENTRY glMapGrid2xOES (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2);\nGLAPI void APIENTRY glMultTransposeMatrixxOES (const GLfixed *m);\nGLAPI void APIENTRY glMultiTexCoord1xOES (GLenum texture, GLfixed s);\nGLAPI void APIENTRY glMultiTexCoord1xvOES (GLenum texture, const GLfixed *coords);\nGLAPI void APIENTRY glMultiTexCoord2xOES (GLenum texture, GLfixed s, GLfixed t);\nGLAPI void APIENTRY glMultiTexCoord2xvOES (GLenum texture, const GLfixed *coords);\nGLAPI void APIENTRY glMultiTexCoord3xOES (GLenum texture, GLfixed s, GLfixed t, GLfixed r);\nGLAPI void APIENTRY glMultiTexCoord3xvOES (GLenum texture, const GLfixed *coords);\nGLAPI void APIENTRY glMultiTexCoord4xvOES (GLenum texture, const GLfixed *coords);\nGLAPI void APIENTRY glNormal3xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glPassThroughxOES (GLfixed token);\nGLAPI void APIENTRY glPixelMapx (GLenum map, GLint size, const GLfixed *values);\nGLAPI void APIENTRY glPixelStorex (GLenum pname, GLfixed param);\nGLAPI void APIENTRY glPixelTransferxOES (GLenum pname, GLfixed param);\nGLAPI void APIENTRY glPixelZoomxOES (GLfixed xfactor, GLfixed yfactor);\nGLAPI void APIENTRY glPrioritizeTexturesxOES (GLsizei n, const GLuint *textures, const GLfixed *priorities);\nGLAPI void APIENTRY glRasterPos2xOES (GLfixed x, GLfixed y);\nGLAPI void APIENTRY glRasterPos2xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glRasterPos3xOES (GLfixed x, GLfixed y, GLfixed z);\nGLAPI void APIENTRY glRasterPos3xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glRasterPos4xOES (GLfixed x, GLfixed y, GLfixed z, GLfixed w);\nGLAPI void APIENTRY glRasterPos4xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glRectxOES (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2);\nGLAPI void APIENTRY glRectxvOES (const GLfixed *v1, const GLfixed *v2);\nGLAPI void APIENTRY glTexCoord1xOES (GLfixed s);\nGLAPI void APIENTRY glTexCoord1xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glTexCoord2xOES (GLfixed s, GLfixed t);\nGLAPI void APIENTRY glTexCoord2xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glTexCoord3xOES (GLfixed s, GLfixed t, GLfixed r);\nGLAPI void APIENTRY glTexCoord3xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glTexCoord4xOES (GLfixed s, GLfixed t, GLfixed r, GLfixed q);\nGLAPI void APIENTRY glTexCoord4xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);\nGLAPI void APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);\nGLAPI void APIENTRY glVertex2xOES (GLfixed x);\nGLAPI void APIENTRY glVertex2xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glVertex3xOES (GLfixed x, GLfixed y);\nGLAPI void APIENTRY glVertex3xvOES (const GLfixed *coords);\nGLAPI void APIENTRY glVertex4xOES (GLfixed x, GLfixed y, GLfixed z);\nGLAPI void APIENTRY glVertex4xvOES (const GLfixed *coords);\n#endif\n#endif /* GL_OES_fixed_point */\n\n#ifndef GL_OES_query_matrix\n#define GL_OES_query_matrix 1\ntypedef GLbitfield (APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed *mantissa, GLint *exponent);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLbitfield APIENTRY glQueryMatrixxOES (GLfixed *mantissa, GLint *exponent);\n#endif\n#endif /* GL_OES_query_matrix */\n\n#ifndef GL_OES_read_format\n#define GL_OES_read_format 1\n#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A\n#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B\n#endif /* GL_OES_read_format */\n\n#ifndef GL_OES_single_precision\n#define GL_OES_single_precision 1\ntypedef void (APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);\ntypedef void (APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);\ntypedef void (APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f);\ntypedef void (APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);\ntypedef void (APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat *equation);\ntypedef void (APIENTRYP PFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glClearDepthfOES (GLclampf depth);\nGLAPI void APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);\nGLAPI void APIENTRY glDepthRangefOES (GLclampf n, GLclampf f);\nGLAPI void APIENTRY glFrustumfOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);\nGLAPI void APIENTRY glGetClipPlanefOES (GLenum plane, GLfloat *equation);\nGLAPI void APIENTRY glOrthofOES (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f);\n#endif\n#endif /* GL_OES_single_precision */\n\n#ifndef GL_3DFX_multisample\n#define GL_3DFX_multisample 1\n#define GL_MULTISAMPLE_3DFX               0x86B2\n#define GL_SAMPLE_BUFFERS_3DFX            0x86B3\n#define GL_SAMPLES_3DFX                   0x86B4\n#define GL_MULTISAMPLE_BIT_3DFX           0x20000000\n#endif /* GL_3DFX_multisample */\n\n#ifndef GL_3DFX_tbuffer\n#define GL_3DFX_tbuffer 1\ntypedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);\n#endif\n#endif /* GL_3DFX_tbuffer */\n\n#ifndef GL_3DFX_texture_compression_FXT1\n#define GL_3DFX_texture_compression_FXT1 1\n#define GL_COMPRESSED_RGB_FXT1_3DFX       0x86B0\n#define GL_COMPRESSED_RGBA_FXT1_3DFX      0x86B1\n#endif /* GL_3DFX_texture_compression_FXT1 */\n\n#ifndef GL_AMD_blend_minmax_factor\n#define GL_AMD_blend_minmax_factor 1\n#define GL_FACTOR_MIN_AMD                 0x901C\n#define GL_FACTOR_MAX_AMD                 0x901D\n#endif /* GL_AMD_blend_minmax_factor */\n\n#ifndef GL_AMD_conservative_depth\n#define GL_AMD_conservative_depth 1\n#endif /* GL_AMD_conservative_depth */\n\n#ifndef GL_AMD_debug_output\n#define GL_AMD_debug_output 1\ntypedef void (APIENTRY  *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam);\n#define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD   0x9143\n#define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD  0x9144\n#define GL_DEBUG_LOGGED_MESSAGES_AMD      0x9145\n#define GL_DEBUG_SEVERITY_HIGH_AMD        0x9146\n#define GL_DEBUG_SEVERITY_MEDIUM_AMD      0x9147\n#define GL_DEBUG_SEVERITY_LOW_AMD         0x9148\n#define GL_DEBUG_CATEGORY_API_ERROR_AMD   0x9149\n#define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A\n#define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B\n#define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C\n#define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D\n#define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E\n#define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F\n#define GL_DEBUG_CATEGORY_OTHER_AMD       0x9150\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);\ntypedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, void *userParam);\ntypedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDebugMessageEnableAMD (GLenum category, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\nGLAPI void APIENTRY glDebugMessageInsertAMD (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar *buf);\nGLAPI void APIENTRY glDebugMessageCallbackAMD (GLDEBUGPROCAMD callback, void *userParam);\nGLAPI GLuint APIENTRY glGetDebugMessageLogAMD (GLuint count, GLsizei bufSize, GLenum *categories, GLuint *severities, GLuint *ids, GLsizei *lengths, GLchar *message);\n#endif\n#endif /* GL_AMD_debug_output */\n\n#ifndef GL_AMD_depth_clamp_separate\n#define GL_AMD_depth_clamp_separate 1\n#define GL_DEPTH_CLAMP_NEAR_AMD           0x901E\n#define GL_DEPTH_CLAMP_FAR_AMD            0x901F\n#endif /* GL_AMD_depth_clamp_separate */\n\n#ifndef GL_AMD_draw_buffers_blend\n#define GL_AMD_draw_buffers_blend 1\ntypedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode);\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);\nGLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\nGLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);\nGLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\n#endif\n#endif /* GL_AMD_draw_buffers_blend */\n\n#ifndef GL_AMD_framebuffer_multisample_advanced\n#define GL_AMD_framebuffer_multisample_advanced 1\n#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2\n#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3\n#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4\n#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5\n#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6\n#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_AMD_framebuffer_multisample_advanced */\n\n#ifndef GL_AMD_framebuffer_sample_positions\n#define GL_AMD_framebuffer_sample_positions 1\n#define GL_SUBSAMPLE_DISTANCE_AMD         0x883F\n#define GL_PIXELS_PER_SAMPLE_PATTERN_X_AMD 0x91AE\n#define GL_PIXELS_PER_SAMPLE_PATTERN_Y_AMD 0x91AF\n#define GL_ALL_PIXELS_AMD                 0xFFFFFFFF\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLEPOSITIONSFVAMDPROC) (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERFVAMDPROC) (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);\ntypedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERFVAMDPROC) (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferSamplePositionsfvAMD (GLenum target, GLuint numsamples, GLuint pixelindex, const GLfloat *values);\nGLAPI void APIENTRY glNamedFramebufferSamplePositionsfvAMD (GLuint framebuffer, GLuint numsamples, GLuint pixelindex, const GLfloat *values);\nGLAPI void APIENTRY glGetFramebufferParameterfvAMD (GLenum target, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);\nGLAPI void APIENTRY glGetNamedFramebufferParameterfvAMD (GLuint framebuffer, GLenum pname, GLuint numsamples, GLuint pixelindex, GLsizei size, GLfloat *values);\n#endif\n#endif /* GL_AMD_framebuffer_sample_positions */\n\n#ifndef GL_AMD_gcn_shader\n#define GL_AMD_gcn_shader 1\n#endif /* GL_AMD_gcn_shader */\n\n#ifndef GL_AMD_gpu_shader_half_float\n#define GL_AMD_gpu_shader_half_float 1\n#define GL_FLOAT16_NV                     0x8FF8\n#define GL_FLOAT16_VEC2_NV                0x8FF9\n#define GL_FLOAT16_VEC3_NV                0x8FFA\n#define GL_FLOAT16_VEC4_NV                0x8FFB\n#define GL_FLOAT16_MAT2_AMD               0x91C5\n#define GL_FLOAT16_MAT3_AMD               0x91C6\n#define GL_FLOAT16_MAT4_AMD               0x91C7\n#define GL_FLOAT16_MAT2x3_AMD             0x91C8\n#define GL_FLOAT16_MAT2x4_AMD             0x91C9\n#define GL_FLOAT16_MAT3x2_AMD             0x91CA\n#define GL_FLOAT16_MAT3x4_AMD             0x91CB\n#define GL_FLOAT16_MAT4x2_AMD             0x91CC\n#define GL_FLOAT16_MAT4x3_AMD             0x91CD\n#endif /* GL_AMD_gpu_shader_half_float */\n\n#ifndef GL_AMD_gpu_shader_int16\n#define GL_AMD_gpu_shader_int16 1\n#endif /* GL_AMD_gpu_shader_int16 */\n\n#ifndef GL_AMD_gpu_shader_int64\n#define GL_AMD_gpu_shader_int64 1\ntypedef khronos_int64_t GLint64EXT;\n#define GL_INT64_NV                       0x140E\n#define GL_UNSIGNED_INT64_NV              0x140F\n#define GL_INT8_NV                        0x8FE0\n#define GL_INT8_VEC2_NV                   0x8FE1\n#define GL_INT8_VEC3_NV                   0x8FE2\n#define GL_INT8_VEC4_NV                   0x8FE3\n#define GL_INT16_NV                       0x8FE4\n#define GL_INT16_VEC2_NV                  0x8FE5\n#define GL_INT16_VEC3_NV                  0x8FE6\n#define GL_INT16_VEC4_NV                  0x8FE7\n#define GL_INT64_VEC2_NV                  0x8FE9\n#define GL_INT64_VEC3_NV                  0x8FEA\n#define GL_INT64_VEC4_NV                  0x8FEB\n#define GL_UNSIGNED_INT8_NV               0x8FEC\n#define GL_UNSIGNED_INT8_VEC2_NV          0x8FED\n#define GL_UNSIGNED_INT8_VEC3_NV          0x8FEE\n#define GL_UNSIGNED_INT8_VEC4_NV          0x8FEF\n#define GL_UNSIGNED_INT16_NV              0x8FF0\n#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1\n#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2\n#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3\n#define GL_UNSIGNED_INT64_VEC2_NV         0x8FF5\n#define GL_UNSIGNED_INT64_VEC3_NV         0x8FF6\n#define GL_UNSIGNED_INT64_VEC4_NV         0x8FF7\ntypedef void (APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);\ntypedef void (APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);\ntypedef void (APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\ntypedef void (APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\ntypedef void (APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);\ntypedef void (APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);\ntypedef void (APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\ntypedef void (APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\ntypedef void (APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);\ntypedef void (APIENTRYP PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT *params);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);\nGLAPI void APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);\nGLAPI void APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\nGLAPI void APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\nGLAPI void APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);\nGLAPI void APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);\nGLAPI void APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\nGLAPI void APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\nGLAPI void APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);\nGLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);\nGLAPI void APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);\nGLAPI void APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);\nGLAPI void APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\nGLAPI void APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\nGLAPI void APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGLAPI void APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);\nGLAPI void APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);\nGLAPI void APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\nGLAPI void APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\nGLAPI void APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#endif\n#endif /* GL_AMD_gpu_shader_int64 */\n\n#ifndef GL_AMD_interleaved_elements\n#define GL_AMD_interleaved_elements 1\n#define GL_VERTEX_ELEMENT_SWIZZLE_AMD     0x91A4\n#define GL_VERTEX_ID_SWIZZLE_AMD          0x91A5\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPARAMETERIAMDPROC) (GLuint index, GLenum pname, GLint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttribParameteriAMD (GLuint index, GLenum pname, GLint param);\n#endif\n#endif /* GL_AMD_interleaved_elements */\n\n#ifndef GL_AMD_multi_draw_indirect\n#define GL_AMD_multi_draw_indirect 1\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiDrawArraysIndirectAMD (GLenum mode, const void *indirect, GLsizei primcount, GLsizei stride);\nGLAPI void APIENTRY glMultiDrawElementsIndirectAMD (GLenum mode, GLenum type, const void *indirect, GLsizei primcount, GLsizei stride);\n#endif\n#endif /* GL_AMD_multi_draw_indirect */\n\n#ifndef GL_AMD_name_gen_delete\n#define GL_AMD_name_gen_delete 1\n#define GL_DATA_BUFFER_AMD                0x9151\n#define GL_PERFORMANCE_MONITOR_AMD        0x9152\n#define GL_QUERY_OBJECT_AMD               0x9153\n#define GL_VERTEX_ARRAY_OBJECT_AMD        0x9154\n#define GL_SAMPLER_OBJECT_AMD             0x9155\ntypedef void (APIENTRYP PFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint *names);\ntypedef void (APIENTRYP PFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint *names);\ntypedef GLboolean (APIENTRYP PFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenNamesAMD (GLenum identifier, GLuint num, GLuint *names);\nGLAPI void APIENTRY glDeleteNamesAMD (GLenum identifier, GLuint num, const GLuint *names);\nGLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name);\n#endif\n#endif /* GL_AMD_name_gen_delete */\n\n#ifndef GL_AMD_occlusion_query_event\n#define GL_AMD_occlusion_query_event 1\n#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F\n#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001\n#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002\n#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004\n#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008\n#define GL_QUERY_ALL_EVENT_BITS_AMD       0xFFFFFFFF\ntypedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param);\n#endif\n#endif /* GL_AMD_occlusion_query_event */\n\n#ifndef GL_AMD_performance_monitor\n#define GL_AMD_performance_monitor 1\n#define GL_COUNTER_TYPE_AMD               0x8BC0\n#define GL_COUNTER_RANGE_AMD              0x8BC1\n#define GL_UNSIGNED_INT64_AMD             0x8BC2\n#define GL_PERCENTAGE_AMD                 0x8BC3\n#define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4\n#define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5\n#define GL_PERFMON_RESULT_AMD             0x8BC6\ntypedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);\ntypedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);\ntypedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);\ntypedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);\ntypedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);\ntypedef void (APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);\ntypedef void (APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);\ntypedef void (APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);\ntypedef void (APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);\ntypedef void (APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);\ntypedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);\nGLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);\nGLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);\nGLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);\nGLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);\nGLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);\nGLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);\nGLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);\nGLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);\nGLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);\nGLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);\n#endif\n#endif /* GL_AMD_performance_monitor */\n\n#ifndef GL_AMD_pinned_memory\n#define GL_AMD_pinned_memory 1\n#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160\n#endif /* GL_AMD_pinned_memory */\n\n#ifndef GL_AMD_query_buffer_object\n#define GL_AMD_query_buffer_object 1\n#define GL_QUERY_BUFFER_AMD               0x9192\n#define GL_QUERY_BUFFER_BINDING_AMD       0x9193\n#define GL_QUERY_RESULT_NO_WAIT_AMD       0x9194\n#endif /* GL_AMD_query_buffer_object */\n\n#ifndef GL_AMD_sample_positions\n#define GL_AMD_sample_positions 1\ntypedef void (APIENTRYP PFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat *val);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSetMultisamplefvAMD (GLenum pname, GLuint index, const GLfloat *val);\n#endif\n#endif /* GL_AMD_sample_positions */\n\n#ifndef GL_AMD_seamless_cubemap_per_texture\n#define GL_AMD_seamless_cubemap_per_texture 1\n#endif /* GL_AMD_seamless_cubemap_per_texture */\n\n#ifndef GL_AMD_shader_atomic_counter_ops\n#define GL_AMD_shader_atomic_counter_ops 1\n#endif /* GL_AMD_shader_atomic_counter_ops */\n\n#ifndef GL_AMD_shader_ballot\n#define GL_AMD_shader_ballot 1\n#endif /* GL_AMD_shader_ballot */\n\n#ifndef GL_AMD_shader_explicit_vertex_parameter\n#define GL_AMD_shader_explicit_vertex_parameter 1\n#endif /* GL_AMD_shader_explicit_vertex_parameter */\n\n#ifndef GL_AMD_shader_gpu_shader_half_float_fetch\n#define GL_AMD_shader_gpu_shader_half_float_fetch 1\n#endif /* GL_AMD_shader_gpu_shader_half_float_fetch */\n\n#ifndef GL_AMD_shader_image_load_store_lod\n#define GL_AMD_shader_image_load_store_lod 1\n#endif /* GL_AMD_shader_image_load_store_lod */\n\n#ifndef GL_AMD_shader_stencil_export\n#define GL_AMD_shader_stencil_export 1\n#endif /* GL_AMD_shader_stencil_export */\n\n#ifndef GL_AMD_shader_trinary_minmax\n#define GL_AMD_shader_trinary_minmax 1\n#endif /* GL_AMD_shader_trinary_minmax */\n\n#ifndef GL_AMD_sparse_texture\n#define GL_AMD_sparse_texture 1\n#define GL_VIRTUAL_PAGE_SIZE_X_AMD        0x9195\n#define GL_VIRTUAL_PAGE_SIZE_Y_AMD        0x9196\n#define GL_VIRTUAL_PAGE_SIZE_Z_AMD        0x9197\n#define GL_MAX_SPARSE_TEXTURE_SIZE_AMD    0x9198\n#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199\n#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A\n#define GL_MIN_SPARSE_LEVEL_AMD           0x919B\n#define GL_MIN_LOD_WARNING_AMD            0x919C\n#define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001\ntypedef void (APIENTRYP PFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexStorageSparseAMD (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);\nGLAPI void APIENTRY glTextureStorageSparseAMD (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags);\n#endif\n#endif /* GL_AMD_sparse_texture */\n\n#ifndef GL_AMD_stencil_operation_extended\n#define GL_AMD_stencil_operation_extended 1\n#define GL_SET_AMD                        0x874A\n#define GL_REPLACE_VALUE_AMD              0x874B\n#define GL_STENCIL_OP_VALUE_AMD           0x874C\n#define GL_STENCIL_BACK_OP_VALUE_AMD      0x874D\ntypedef void (APIENTRYP PFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glStencilOpValueAMD (GLenum face, GLuint value);\n#endif\n#endif /* GL_AMD_stencil_operation_extended */\n\n#ifndef GL_AMD_texture_gather_bias_lod\n#define GL_AMD_texture_gather_bias_lod 1\n#endif /* GL_AMD_texture_gather_bias_lod */\n\n#ifndef GL_AMD_texture_texture4\n#define GL_AMD_texture_texture4 1\n#endif /* GL_AMD_texture_texture4 */\n\n#ifndef GL_AMD_transform_feedback3_lines_triangles\n#define GL_AMD_transform_feedback3_lines_triangles 1\n#endif /* GL_AMD_transform_feedback3_lines_triangles */\n\n#ifndef GL_AMD_transform_feedback4\n#define GL_AMD_transform_feedback4 1\n#define GL_STREAM_RASTERIZATION_AMD       0x91A0\n#endif /* GL_AMD_transform_feedback4 */\n\n#ifndef GL_AMD_vertex_shader_layer\n#define GL_AMD_vertex_shader_layer 1\n#endif /* GL_AMD_vertex_shader_layer */\n\n#ifndef GL_AMD_vertex_shader_tessellator\n#define GL_AMD_vertex_shader_tessellator 1\n#define GL_SAMPLER_BUFFER_AMD             0x9001\n#define GL_INT_SAMPLER_BUFFER_AMD         0x9002\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003\n#define GL_TESSELLATION_MODE_AMD          0x9004\n#define GL_TESSELLATION_FACTOR_AMD        0x9005\n#define GL_DISCRETE_AMD                   0x9006\n#define GL_CONTINUOUS_AMD                 0x9007\ntypedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);\ntypedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);\nGLAPI void APIENTRY glTessellationModeAMD (GLenum mode);\n#endif\n#endif /* GL_AMD_vertex_shader_tessellator */\n\n#ifndef GL_AMD_vertex_shader_viewport_index\n#define GL_AMD_vertex_shader_viewport_index 1\n#endif /* GL_AMD_vertex_shader_viewport_index */\n\n#ifndef GL_APPLE_aux_depth_stencil\n#define GL_APPLE_aux_depth_stencil 1\n#define GL_AUX_DEPTH_STENCIL_APPLE        0x8A14\n#endif /* GL_APPLE_aux_depth_stencil */\n\n#ifndef GL_APPLE_client_storage\n#define GL_APPLE_client_storage 1\n#define GL_UNPACK_CLIENT_STORAGE_APPLE    0x85B2\n#endif /* GL_APPLE_client_storage */\n\n#ifndef GL_APPLE_element_array\n#define GL_APPLE_element_array 1\n#define GL_ELEMENT_ARRAY_APPLE            0x8A0C\n#define GL_ELEMENT_ARRAY_TYPE_APPLE       0x8A0D\n#define GL_ELEMENT_ARRAY_POINTER_APPLE    0x8A0E\ntypedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const void *pointer);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\ntypedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const void *pointer);\nGLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);\nGLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);\nGLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\nGLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);\n#endif\n#endif /* GL_APPLE_element_array */\n\n#ifndef GL_APPLE_fence\n#define GL_APPLE_fence 1\n#define GL_DRAW_PIXELS_APPLE              0x8A0A\n#define GL_FENCE_APPLE                    0x8A0B\ntypedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);\ntypedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);\ntypedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence);\ntypedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence);\ntypedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence);\ntypedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence);\ntypedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name);\ntypedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);\nGLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);\nGLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);\nGLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);\nGLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);\nGLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);\nGLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);\nGLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);\n#endif\n#endif /* GL_APPLE_fence */\n\n#ifndef GL_APPLE_float_pixels\n#define GL_APPLE_float_pixels 1\n#define GL_HALF_APPLE                     0x140B\n#define GL_RGBA_FLOAT32_APPLE             0x8814\n#define GL_RGB_FLOAT32_APPLE              0x8815\n#define GL_ALPHA_FLOAT32_APPLE            0x8816\n#define GL_INTENSITY_FLOAT32_APPLE        0x8817\n#define GL_LUMINANCE_FLOAT32_APPLE        0x8818\n#define GL_LUMINANCE_ALPHA_FLOAT32_APPLE  0x8819\n#define GL_RGBA_FLOAT16_APPLE             0x881A\n#define GL_RGB_FLOAT16_APPLE              0x881B\n#define GL_ALPHA_FLOAT16_APPLE            0x881C\n#define GL_INTENSITY_FLOAT16_APPLE        0x881D\n#define GL_LUMINANCE_FLOAT16_APPLE        0x881E\n#define GL_LUMINANCE_ALPHA_FLOAT16_APPLE  0x881F\n#define GL_COLOR_FLOAT_APPLE              0x8A0F\n#endif /* GL_APPLE_float_pixels */\n\n#ifndef GL_APPLE_flush_buffer_range\n#define GL_APPLE_flush_buffer_range 1\n#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12\n#define GL_BUFFER_FLUSHING_UNMAP_APPLE    0x8A13\ntypedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);\n#endif\n#endif /* GL_APPLE_flush_buffer_range */\n\n#ifndef GL_APPLE_object_purgeable\n#define GL_APPLE_object_purgeable 1\n#define GL_BUFFER_OBJECT_APPLE            0x85B3\n#define GL_RELEASED_APPLE                 0x8A19\n#define GL_VOLATILE_APPLE                 0x8A1A\n#define GL_RETAINED_APPLE                 0x8A1B\n#define GL_UNDEFINED_APPLE                0x8A1C\n#define GL_PURGEABLE_APPLE                0x8A1D\ntypedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);\ntypedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);\ntypedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);\nGLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);\nGLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);\n#endif\n#endif /* GL_APPLE_object_purgeable */\n\n#ifndef GL_APPLE_rgb_422\n#define GL_APPLE_rgb_422 1\n#define GL_RGB_422_APPLE                  0x8A1F\n#define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA\n#define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB\n#define GL_RGB_RAW_422_APPLE              0x8A51\n#endif /* GL_APPLE_rgb_422 */\n\n#ifndef GL_APPLE_row_bytes\n#define GL_APPLE_row_bytes 1\n#define GL_PACK_ROW_BYTES_APPLE           0x8A15\n#define GL_UNPACK_ROW_BYTES_APPLE         0x8A16\n#endif /* GL_APPLE_row_bytes */\n\n#ifndef GL_APPLE_specular_vector\n#define GL_APPLE_specular_vector 1\n#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0\n#endif /* GL_APPLE_specular_vector */\n\n#ifndef GL_APPLE_texture_range\n#define GL_APPLE_texture_range 1\n#define GL_TEXTURE_RANGE_LENGTH_APPLE     0x85B7\n#define GL_TEXTURE_RANGE_POINTER_APPLE    0x85B8\n#define GL_TEXTURE_STORAGE_HINT_APPLE     0x85BC\n#define GL_STORAGE_PRIVATE_APPLE          0x85BD\n#define GL_STORAGE_CACHED_APPLE           0x85BE\n#define GL_STORAGE_SHARED_APPLE           0x85BF\ntypedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const void *pointer);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const void *pointer);\nGLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, void **params);\n#endif\n#endif /* GL_APPLE_texture_range */\n\n#ifndef GL_APPLE_transform_hint\n#define GL_APPLE_transform_hint 1\n#define GL_TRANSFORM_HINT_APPLE           0x85B1\n#endif /* GL_APPLE_transform_hint */\n\n#ifndef GL_APPLE_vertex_array_object\n#define GL_APPLE_vertex_array_object 1\n#define GL_VERTEX_ARRAY_BINDING_APPLE     0x85B5\ntypedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);\ntypedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);\ntypedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays);\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);\nGLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);\nGLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);\nGLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);\n#endif\n#endif /* GL_APPLE_vertex_array_object */\n\n#ifndef GL_APPLE_vertex_array_range\n#define GL_APPLE_vertex_array_range 1\n#define GL_VERTEX_ARRAY_RANGE_APPLE       0x851D\n#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E\n#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F\n#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521\n#define GL_STORAGE_CLIENT_APPLE           0x85B4\ntypedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);\ntypedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, void *pointer);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, void *pointer);\nGLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, void *pointer);\nGLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);\n#endif\n#endif /* GL_APPLE_vertex_array_range */\n\n#ifndef GL_APPLE_vertex_program_evaluators\n#define GL_APPLE_vertex_program_evaluators 1\n#define GL_VERTEX_ATTRIB_MAP1_APPLE       0x8A00\n#define GL_VERTEX_ATTRIB_MAP2_APPLE       0x8A01\n#define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE  0x8A02\n#define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03\n#define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04\n#define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05\n#define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE  0x8A06\n#define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07\n#define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08\n#define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09\ntypedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);\ntypedef GLboolean (APIENTRYP PFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname);\ntypedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);\ntypedef void (APIENTRYP PFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);\ntypedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);\ntypedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);\nGLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);\nGLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);\nGLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);\nGLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);\nGLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);\nGLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);\n#endif\n#endif /* GL_APPLE_vertex_program_evaluators */\n\n#ifndef GL_APPLE_ycbcr_422\n#define GL_APPLE_ycbcr_422 1\n#define GL_YCBCR_422_APPLE                0x85B9\n#endif /* GL_APPLE_ycbcr_422 */\n\n#ifndef GL_ATI_draw_buffers\n#define GL_ATI_draw_buffers 1\n#define GL_MAX_DRAW_BUFFERS_ATI           0x8824\n#define GL_DRAW_BUFFER0_ATI               0x8825\n#define GL_DRAW_BUFFER1_ATI               0x8826\n#define GL_DRAW_BUFFER2_ATI               0x8827\n#define GL_DRAW_BUFFER3_ATI               0x8828\n#define GL_DRAW_BUFFER4_ATI               0x8829\n#define GL_DRAW_BUFFER5_ATI               0x882A\n#define GL_DRAW_BUFFER6_ATI               0x882B\n#define GL_DRAW_BUFFER7_ATI               0x882C\n#define GL_DRAW_BUFFER8_ATI               0x882D\n#define GL_DRAW_BUFFER9_ATI               0x882E\n#define GL_DRAW_BUFFER10_ATI              0x882F\n#define GL_DRAW_BUFFER11_ATI              0x8830\n#define GL_DRAW_BUFFER12_ATI              0x8831\n#define GL_DRAW_BUFFER13_ATI              0x8832\n#define GL_DRAW_BUFFER14_ATI              0x8833\n#define GL_DRAW_BUFFER15_ATI              0x8834\ntypedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);\n#endif\n#endif /* GL_ATI_draw_buffers */\n\n#ifndef GL_ATI_element_array\n#define GL_ATI_element_array 1\n#define GL_ELEMENT_ARRAY_ATI              0x8768\n#define GL_ELEMENT_ARRAY_TYPE_ATI         0x8769\n#define GL_ELEMENT_ARRAY_POINTER_ATI      0x876A\ntypedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const void *pointer);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glElementPointerATI (GLenum type, const void *pointer);\nGLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);\nGLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);\n#endif\n#endif /* GL_ATI_element_array */\n\n#ifndef GL_ATI_envmap_bumpmap\n#define GL_ATI_envmap_bumpmap 1\n#define GL_BUMP_ROT_MATRIX_ATI            0x8775\n#define GL_BUMP_ROT_MATRIX_SIZE_ATI       0x8776\n#define GL_BUMP_NUM_TEX_UNITS_ATI         0x8777\n#define GL_BUMP_TEX_UNITS_ATI             0x8778\n#define GL_DUDV_ATI                       0x8779\n#define GL_DU8DV8_ATI                     0x877A\n#define GL_BUMP_ENVMAP_ATI                0x877B\n#define GL_BUMP_TARGET_ATI                0x877C\ntypedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);\ntypedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);\ntypedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);\nGLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);\nGLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);\n#endif\n#endif /* GL_ATI_envmap_bumpmap */\n\n#ifndef GL_ATI_fragment_shader\n#define GL_ATI_fragment_shader 1\n#define GL_FRAGMENT_SHADER_ATI            0x8920\n#define GL_REG_0_ATI                      0x8921\n#define GL_REG_1_ATI                      0x8922\n#define GL_REG_2_ATI                      0x8923\n#define GL_REG_3_ATI                      0x8924\n#define GL_REG_4_ATI                      0x8925\n#define GL_REG_5_ATI                      0x8926\n#define GL_REG_6_ATI                      0x8927\n#define GL_REG_7_ATI                      0x8928\n#define GL_REG_8_ATI                      0x8929\n#define GL_REG_9_ATI                      0x892A\n#define GL_REG_10_ATI                     0x892B\n#define GL_REG_11_ATI                     0x892C\n#define GL_REG_12_ATI                     0x892D\n#define GL_REG_13_ATI                     0x892E\n#define GL_REG_14_ATI                     0x892F\n#define GL_REG_15_ATI                     0x8930\n#define GL_REG_16_ATI                     0x8931\n#define GL_REG_17_ATI                     0x8932\n#define GL_REG_18_ATI                     0x8933\n#define GL_REG_19_ATI                     0x8934\n#define GL_REG_20_ATI                     0x8935\n#define GL_REG_21_ATI                     0x8936\n#define GL_REG_22_ATI                     0x8937\n#define GL_REG_23_ATI                     0x8938\n#define GL_REG_24_ATI                     0x8939\n#define GL_REG_25_ATI                     0x893A\n#define GL_REG_26_ATI                     0x893B\n#define GL_REG_27_ATI                     0x893C\n#define GL_REG_28_ATI                     0x893D\n#define GL_REG_29_ATI                     0x893E\n#define GL_REG_30_ATI                     0x893F\n#define GL_REG_31_ATI                     0x8940\n#define GL_CON_0_ATI                      0x8941\n#define GL_CON_1_ATI                      0x8942\n#define GL_CON_2_ATI                      0x8943\n#define GL_CON_3_ATI                      0x8944\n#define GL_CON_4_ATI                      0x8945\n#define GL_CON_5_ATI                      0x8946\n#define GL_CON_6_ATI                      0x8947\n#define GL_CON_7_ATI                      0x8948\n#define GL_CON_8_ATI                      0x8949\n#define GL_CON_9_ATI                      0x894A\n#define GL_CON_10_ATI                     0x894B\n#define GL_CON_11_ATI                     0x894C\n#define GL_CON_12_ATI                     0x894D\n#define GL_CON_13_ATI                     0x894E\n#define GL_CON_14_ATI                     0x894F\n#define GL_CON_15_ATI                     0x8950\n#define GL_CON_16_ATI                     0x8951\n#define GL_CON_17_ATI                     0x8952\n#define GL_CON_18_ATI                     0x8953\n#define GL_CON_19_ATI                     0x8954\n#define GL_CON_20_ATI                     0x8955\n#define GL_CON_21_ATI                     0x8956\n#define GL_CON_22_ATI                     0x8957\n#define GL_CON_23_ATI                     0x8958\n#define GL_CON_24_ATI                     0x8959\n#define GL_CON_25_ATI                     0x895A\n#define GL_CON_26_ATI                     0x895B\n#define GL_CON_27_ATI                     0x895C\n#define GL_CON_28_ATI                     0x895D\n#define GL_CON_29_ATI                     0x895E\n#define GL_CON_30_ATI                     0x895F\n#define GL_CON_31_ATI                     0x8960\n#define GL_MOV_ATI                        0x8961\n#define GL_ADD_ATI                        0x8963\n#define GL_MUL_ATI                        0x8964\n#define GL_SUB_ATI                        0x8965\n#define GL_DOT3_ATI                       0x8966\n#define GL_DOT4_ATI                       0x8967\n#define GL_MAD_ATI                        0x8968\n#define GL_LERP_ATI                       0x8969\n#define GL_CND_ATI                        0x896A\n#define GL_CND0_ATI                       0x896B\n#define GL_DOT2_ADD_ATI                   0x896C\n#define GL_SECONDARY_INTERPOLATOR_ATI     0x896D\n#define GL_NUM_FRAGMENT_REGISTERS_ATI     0x896E\n#define GL_NUM_FRAGMENT_CONSTANTS_ATI     0x896F\n#define GL_NUM_PASSES_ATI                 0x8970\n#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI  0x8971\n#define GL_NUM_INSTRUCTIONS_TOTAL_ATI     0x8972\n#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973\n#define GL_NUM_LOOPBACK_COMPONENTS_ATI    0x8974\n#define GL_COLOR_ALPHA_PAIRING_ATI        0x8975\n#define GL_SWIZZLE_STR_ATI                0x8976\n#define GL_SWIZZLE_STQ_ATI                0x8977\n#define GL_SWIZZLE_STR_DR_ATI             0x8978\n#define GL_SWIZZLE_STQ_DQ_ATI             0x8979\n#define GL_SWIZZLE_STRQ_ATI               0x897A\n#define GL_SWIZZLE_STRQ_DQ_ATI            0x897B\n#define GL_RED_BIT_ATI                    0x00000001\n#define GL_GREEN_BIT_ATI                  0x00000002\n#define GL_BLUE_BIT_ATI                   0x00000004\n#define GL_2X_BIT_ATI                     0x00000001\n#define GL_4X_BIT_ATI                     0x00000002\n#define GL_8X_BIT_ATI                     0x00000004\n#define GL_HALF_BIT_ATI                   0x00000008\n#define GL_QUARTER_BIT_ATI                0x00000010\n#define GL_EIGHTH_BIT_ATI                 0x00000020\n#define GL_SATURATE_BIT_ATI               0x00000040\n#define GL_COMP_BIT_ATI                   0x00000002\n#define GL_NEGATE_BIT_ATI                 0x00000004\n#define GL_BIAS_BIT_ATI                   0x00000008\ntypedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);\ntypedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void);\ntypedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void);\ntypedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle);\ntypedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle);\ntypedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);\ntypedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);\ntypedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);\ntypedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);\ntypedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);\ntypedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);\ntypedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);\nGLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);\nGLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);\nGLAPI void APIENTRY glBeginFragmentShaderATI (void);\nGLAPI void APIENTRY glEndFragmentShaderATI (void);\nGLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);\nGLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);\nGLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);\nGLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);\nGLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);\nGLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);\nGLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);\nGLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);\nGLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);\n#endif\n#endif /* GL_ATI_fragment_shader */\n\n#ifndef GL_ATI_map_object_buffer\n#define GL_ATI_map_object_buffer 1\ntypedef void *(APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void *APIENTRY glMapObjectBufferATI (GLuint buffer);\nGLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);\n#endif\n#endif /* GL_ATI_map_object_buffer */\n\n#ifndef GL_ATI_meminfo\n#define GL_ATI_meminfo 1\n#define GL_VBO_FREE_MEMORY_ATI            0x87FB\n#define GL_TEXTURE_FREE_MEMORY_ATI        0x87FC\n#define GL_RENDERBUFFER_FREE_MEMORY_ATI   0x87FD\n#endif /* GL_ATI_meminfo */\n\n#ifndef GL_ATI_pixel_format_float\n#define GL_ATI_pixel_format_float 1\n#define GL_RGBA_FLOAT_MODE_ATI            0x8820\n#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835\n#endif /* GL_ATI_pixel_format_float */\n\n#ifndef GL_ATI_pn_triangles\n#define GL_ATI_pn_triangles 1\n#define GL_PN_TRIANGLES_ATI               0x87F0\n#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1\n#define GL_PN_TRIANGLES_POINT_MODE_ATI    0x87F2\n#define GL_PN_TRIANGLES_NORMAL_MODE_ATI   0x87F3\n#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4\n#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5\n#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6\n#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7\n#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8\ntypedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);\nGLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);\n#endif\n#endif /* GL_ATI_pn_triangles */\n\n#ifndef GL_ATI_separate_stencil\n#define GL_ATI_separate_stencil 1\n#define GL_STENCIL_BACK_FUNC_ATI          0x8800\n#define GL_STENCIL_BACK_FAIL_ATI          0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803\ntypedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\ntypedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);\n#endif\n#endif /* GL_ATI_separate_stencil */\n\n#ifndef GL_ATI_text_fragment_shader\n#define GL_ATI_text_fragment_shader 1\n#define GL_TEXT_FRAGMENT_SHADER_ATI       0x8200\n#endif /* GL_ATI_text_fragment_shader */\n\n#ifndef GL_ATI_texture_env_combine3\n#define GL_ATI_texture_env_combine3 1\n#define GL_MODULATE_ADD_ATI               0x8744\n#define GL_MODULATE_SIGNED_ADD_ATI        0x8745\n#define GL_MODULATE_SUBTRACT_ATI          0x8746\n#endif /* GL_ATI_texture_env_combine3 */\n\n#ifndef GL_ATI_texture_float\n#define GL_ATI_texture_float 1\n#define GL_RGBA_FLOAT32_ATI               0x8814\n#define GL_RGB_FLOAT32_ATI                0x8815\n#define GL_ALPHA_FLOAT32_ATI              0x8816\n#define GL_INTENSITY_FLOAT32_ATI          0x8817\n#define GL_LUMINANCE_FLOAT32_ATI          0x8818\n#define GL_LUMINANCE_ALPHA_FLOAT32_ATI    0x8819\n#define GL_RGBA_FLOAT16_ATI               0x881A\n#define GL_RGB_FLOAT16_ATI                0x881B\n#define GL_ALPHA_FLOAT16_ATI              0x881C\n#define GL_INTENSITY_FLOAT16_ATI          0x881D\n#define GL_LUMINANCE_FLOAT16_ATI          0x881E\n#define GL_LUMINANCE_ALPHA_FLOAT16_ATI    0x881F\n#endif /* GL_ATI_texture_float */\n\n#ifndef GL_ATI_texture_mirror_once\n#define GL_ATI_texture_mirror_once 1\n#define GL_MIRROR_CLAMP_ATI               0x8742\n#define GL_MIRROR_CLAMP_TO_EDGE_ATI       0x8743\n#endif /* GL_ATI_texture_mirror_once */\n\n#ifndef GL_ATI_vertex_array_object\n#define GL_ATI_vertex_array_object 1\n#define GL_STATIC_ATI                     0x8760\n#define GL_DYNAMIC_ATI                    0x8761\n#define GL_PRESERVE_ATI                   0x8762\n#define GL_DISCARD_ATI                    0x8763\n#define GL_OBJECT_BUFFER_SIZE_ATI         0x8764\n#define GL_OBJECT_BUFFER_USAGE_ATI        0x8765\n#define GL_ARRAY_OBJECT_BUFFER_ATI        0x8766\n#define GL_ARRAY_OBJECT_OFFSET_ATI        0x8767\ntypedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const void *pointer, GLenum usage);\ntypedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);\ntypedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);\ntypedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);\ntypedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const void *pointer, GLenum usage);\nGLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);\nGLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const void *pointer, GLenum preserve);\nGLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);\nGLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);\nGLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);\nGLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);\nGLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);\n#endif\n#endif /* GL_ATI_vertex_array_object */\n\n#ifndef GL_ATI_vertex_attrib_array_object\n#define GL_ATI_vertex_attrib_array_object 1\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);\nGLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);\n#endif\n#endif /* GL_ATI_vertex_attrib_array_object */\n\n#ifndef GL_ATI_vertex_streams\n#define GL_ATI_vertex_streams 1\n#define GL_MAX_VERTEX_STREAMS_ATI         0x876B\n#define GL_VERTEX_STREAM0_ATI             0x876C\n#define GL_VERTEX_STREAM1_ATI             0x876D\n#define GL_VERTEX_STREAM2_ATI             0x876E\n#define GL_VERTEX_STREAM3_ATI             0x876F\n#define GL_VERTEX_STREAM4_ATI             0x8770\n#define GL_VERTEX_STREAM5_ATI             0x8771\n#define GL_VERTEX_STREAM6_ATI             0x8772\n#define GL_VERTEX_STREAM7_ATI             0x8773\n#define GL_VERTEX_SOURCE_ATI              0x8774\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);\ntypedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords);\ntypedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream);\ntypedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);\nGLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);\nGLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);\nGLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);\nGLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);\nGLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);\nGLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);\nGLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);\nGLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);\nGLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);\nGLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);\nGLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);\nGLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);\nGLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);\nGLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);\nGLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);\nGLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);\nGLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);\nGLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);\nGLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);\nGLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);\nGLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);\nGLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);\nGLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);\nGLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);\nGLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);\nGLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);\nGLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);\nGLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);\nGLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);\nGLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);\nGLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);\nGLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);\nGLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);\nGLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);\nGLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);\n#endif\n#endif /* GL_ATI_vertex_streams */\n\n#ifndef GL_EXT_422_pixels\n#define GL_EXT_422_pixels 1\n#define GL_422_EXT                        0x80CC\n#define GL_422_REV_EXT                    0x80CD\n#define GL_422_AVERAGE_EXT                0x80CE\n#define GL_422_REV_AVERAGE_EXT            0x80CF\n#endif /* GL_EXT_422_pixels */\n\n#ifndef GL_EXT_EGL_image_storage\n#define GL_EXT_EGL_image_storage 1\ntypedef void *GLeglImageOES;\ntypedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);\ntypedef void (APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);\nGLAPI void APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);\n#endif\n#endif /* GL_EXT_EGL_image_storage */\n\n#ifndef GL_EXT_EGL_sync\n#define GL_EXT_EGL_sync 1\n#endif /* GL_EXT_EGL_sync */\n\n#ifndef GL_EXT_abgr\n#define GL_EXT_abgr 1\n#define GL_ABGR_EXT                       0x8000\n#endif /* GL_EXT_abgr */\n\n#ifndef GL_EXT_bgra\n#define GL_EXT_bgra 1\n#define GL_BGR_EXT                        0x80E0\n#define GL_BGRA_EXT                       0x80E1\n#endif /* GL_EXT_bgra */\n\n#ifndef GL_EXT_bindable_uniform\n#define GL_EXT_bindable_uniform 1\n#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2\n#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3\n#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4\n#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT  0x8DED\n#define GL_UNIFORM_BUFFER_EXT             0x8DEE\n#define GL_UNIFORM_BUFFER_BINDING_EXT     0x8DEF\ntypedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);\ntypedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);\ntypedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);\nGLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);\nGLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);\n#endif\n#endif /* GL_EXT_bindable_uniform */\n\n#ifndef GL_EXT_blend_color\n#define GL_EXT_blend_color 1\n#define GL_CONSTANT_COLOR_EXT             0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR_EXT   0x8002\n#define GL_CONSTANT_ALPHA_EXT             0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT   0x8004\n#define GL_BLEND_COLOR_EXT                0x8005\ntypedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendColorEXT (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\n#endif\n#endif /* GL_EXT_blend_color */\n\n#ifndef GL_EXT_blend_equation_separate\n#define GL_EXT_blend_equation_separate 1\n#define GL_BLEND_EQUATION_RGB_EXT         0x8009\n#define GL_BLEND_EQUATION_ALPHA_EXT       0x883D\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);\n#endif\n#endif /* GL_EXT_blend_equation_separate */\n\n#ifndef GL_EXT_blend_func_separate\n#define GL_EXT_blend_func_separate 1\n#define GL_BLEND_DST_RGB_EXT              0x80C8\n#define GL_BLEND_SRC_RGB_EXT              0x80C9\n#define GL_BLEND_DST_ALPHA_EXT            0x80CA\n#define GL_BLEND_SRC_ALPHA_EXT            0x80CB\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\n#endif\n#endif /* GL_EXT_blend_func_separate */\n\n#ifndef GL_EXT_blend_logic_op\n#define GL_EXT_blend_logic_op 1\n#endif /* GL_EXT_blend_logic_op */\n\n#ifndef GL_EXT_blend_minmax\n#define GL_EXT_blend_minmax 1\n#define GL_MIN_EXT                        0x8007\n#define GL_MAX_EXT                        0x8008\n#define GL_FUNC_ADD_EXT                   0x8006\n#define GL_BLEND_EQUATION_EXT             0x8009\ntypedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendEquationEXT (GLenum mode);\n#endif\n#endif /* GL_EXT_blend_minmax */\n\n#ifndef GL_EXT_blend_subtract\n#define GL_EXT_blend_subtract 1\n#define GL_FUNC_SUBTRACT_EXT              0x800A\n#define GL_FUNC_REVERSE_SUBTRACT_EXT      0x800B\n#endif /* GL_EXT_blend_subtract */\n\n#ifndef GL_EXT_clip_volume_hint\n#define GL_EXT_clip_volume_hint 1\n#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT  0x80F0\n#endif /* GL_EXT_clip_volume_hint */\n\n#ifndef GL_EXT_cmyka\n#define GL_EXT_cmyka 1\n#define GL_CMYK_EXT                       0x800C\n#define GL_CMYKA_EXT                      0x800D\n#define GL_PACK_CMYK_HINT_EXT             0x800E\n#define GL_UNPACK_CMYK_HINT_EXT           0x800F\n#endif /* GL_EXT_cmyka */\n\n#ifndef GL_EXT_color_subtable\n#define GL_EXT_color_subtable 1\ntypedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);\n#endif\n#endif /* GL_EXT_color_subtable */\n\n#ifndef GL_EXT_compiled_vertex_array\n#define GL_EXT_compiled_vertex_array 1\n#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT   0x81A8\n#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT   0x81A9\ntypedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);\ntypedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);\nGLAPI void APIENTRY glUnlockArraysEXT (void);\n#endif\n#endif /* GL_EXT_compiled_vertex_array */\n\n#ifndef GL_EXT_convolution\n#define GL_EXT_convolution 1\n#define GL_CONVOLUTION_1D_EXT             0x8010\n#define GL_CONVOLUTION_2D_EXT             0x8011\n#define GL_SEPARABLE_2D_EXT               0x8012\n#define GL_CONVOLUTION_BORDER_MODE_EXT    0x8013\n#define GL_CONVOLUTION_FILTER_SCALE_EXT   0x8014\n#define GL_CONVOLUTION_FILTER_BIAS_EXT    0x8015\n#define GL_REDUCE_EXT                     0x8016\n#define GL_CONVOLUTION_FORMAT_EXT         0x8017\n#define GL_CONVOLUTION_WIDTH_EXT          0x8018\n#define GL_CONVOLUTION_HEIGHT_EXT         0x8019\n#define GL_MAX_CONVOLUTION_WIDTH_EXT      0x801A\n#define GL_MAX_CONVOLUTION_HEIGHT_EXT     0x801B\n#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C\n#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D\n#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E\n#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F\n#define GL_POST_CONVOLUTION_RED_BIAS_EXT  0x8020\n#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021\n#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022\n#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023\ntypedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params);\ntypedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *image);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);\ntypedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *image);\nGLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *image);\nGLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);\nGLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);\nGLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, void *image);\nGLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, void *row, void *column, void *span);\nGLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *row, const void *column);\n#endif\n#endif /* GL_EXT_convolution */\n\n#ifndef GL_EXT_coordinate_frame\n#define GL_EXT_coordinate_frame 1\n#define GL_TANGENT_ARRAY_EXT              0x8439\n#define GL_BINORMAL_ARRAY_EXT             0x843A\n#define GL_CURRENT_TANGENT_EXT            0x843B\n#define GL_CURRENT_BINORMAL_EXT           0x843C\n#define GL_TANGENT_ARRAY_TYPE_EXT         0x843E\n#define GL_TANGENT_ARRAY_STRIDE_EXT       0x843F\n#define GL_BINORMAL_ARRAY_TYPE_EXT        0x8440\n#define GL_BINORMAL_ARRAY_STRIDE_EXT      0x8441\n#define GL_TANGENT_ARRAY_POINTER_EXT      0x8442\n#define GL_BINORMAL_ARRAY_POINTER_EXT     0x8443\n#define GL_MAP1_TANGENT_EXT               0x8444\n#define GL_MAP2_TANGENT_EXT               0x8445\n#define GL_MAP1_BINORMAL_EXT              0x8446\n#define GL_MAP2_BINORMAL_EXT              0x8447\ntypedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);\ntypedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);\ntypedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz);\ntypedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz);\ntypedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz);\ntypedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz);\ntypedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz);\ntypedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v);\ntypedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz);\ntypedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz);\ntypedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz);\ntypedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz);\ntypedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);\nGLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);\nGLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);\nGLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);\nGLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);\nGLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);\nGLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);\nGLAPI void APIENTRY glTangent3ivEXT (const GLint *v);\nGLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);\nGLAPI void APIENTRY glTangent3svEXT (const GLshort *v);\nGLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);\nGLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);\nGLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);\nGLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);\nGLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);\nGLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);\nGLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);\nGLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);\nGLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);\nGLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);\nGLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_EXT_coordinate_frame */\n\n#ifndef GL_EXT_copy_texture\n#define GL_EXT_copy_texture 1\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\nGLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_EXT_copy_texture */\n\n#ifndef GL_EXT_cull_vertex\n#define GL_EXT_cull_vertex 1\n#define GL_CULL_VERTEX_EXT                0x81AA\n#define GL_CULL_VERTEX_EYE_POSITION_EXT   0x81AB\n#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC\ntypedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_EXT_cull_vertex */\n\n#ifndef GL_EXT_debug_label\n#define GL_EXT_debug_label 1\n#define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F\n#define GL_PROGRAM_OBJECT_EXT             0x8B40\n#define GL_SHADER_OBJECT_EXT              0x8B48\n#define GL_BUFFER_OBJECT_EXT              0x9151\n#define GL_QUERY_OBJECT_EXT               0x9153\n#define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154\ntypedef void (APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);\ntypedef void (APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);\nGLAPI void APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);\n#endif\n#endif /* GL_EXT_debug_label */\n\n#ifndef GL_EXT_debug_marker\n#define GL_EXT_debug_marker 1\ntypedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);\ntypedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);\ntypedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);\nGLAPI void APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);\nGLAPI void APIENTRY glPopGroupMarkerEXT (void);\n#endif\n#endif /* GL_EXT_debug_marker */\n\n#ifndef GL_EXT_depth_bounds_test\n#define GL_EXT_depth_bounds_test 1\n#define GL_DEPTH_BOUNDS_TEST_EXT          0x8890\n#define GL_DEPTH_BOUNDS_EXT               0x8891\ntypedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);\n#endif\n#endif /* GL_EXT_depth_bounds_test */\n\n#ifndef GL_EXT_direct_state_access\n#define GL_EXT_direct_state_access 1\n#define GL_PROGRAM_MATRIX_EXT             0x8E2D\n#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT   0x8E2E\n#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F\ntypedef void (APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);\ntypedef void (APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\ntypedef void (APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\ntypedef void (APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);\ntypedef void (APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);\ntypedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);\ntypedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);\ntypedef void (APIENTRYP PFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);\ntypedef void (APIENTRYP PFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\ntypedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\ntypedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index);\ntypedef void (APIENTRYP PFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat *data);\ntypedef void (APIENTRYP PFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble *data);\ntypedef void (APIENTRYP PFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, void **data);\ntypedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index);\ntypedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index);\ntypedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data);\ntypedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, void *img);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);\ntypedef void (APIENTRYP PFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, void *img);\ntypedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef void *(APIENTRYP PFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access);\ntypedef GLboolean (APIENTRYP PFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, void **params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);\ntypedef void (APIENTRYP PFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint *params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint *params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint *params);\ntypedef void (APIENTRYP PFNGLENABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLECLIENTSTATEIEXTPROC) (GLenum array, GLuint index);\ntypedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble *params);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, void *string);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef GLenum (APIENTRYP PFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target);\ntypedef void (APIENTRYP PFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);\ntypedef void (APIENTRYP PFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYEDGEFLAGOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYINDEXOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYNORMALOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYTEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYMULTITEXCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYFOGCOORDOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYSECONDARYCOLOROFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLENABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYEXTPROC) (GLuint vaobj, GLenum array);\ntypedef void (APIENTRYP PFNGLENABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);\ntypedef void (APIENTRYP PFNGLDISABLEVERTEXARRAYATTRIBEXTPROC) (GLuint vaobj, GLuint index);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERVEXTPROC) (GLuint vaobj, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERVEXTPROC) (GLuint vaobj, GLenum pname, void **param);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);\ntypedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);\ntypedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);\ntypedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\ntypedef void (APIENTRYP PFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);\ntypedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYVERTEXATTRIBDIVISOREXTPROC) (GLuint vaobj, GLuint index, GLuint divisor);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);\nGLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);\nGLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);\nGLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGLAPI void APIENTRY glMatrixPopEXT (GLenum mode);\nGLAPI void APIENTRY glMatrixPushEXT (GLenum mode);\nGLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);\nGLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);\nGLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\nGLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\nGLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);\nGLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);\nGLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);\nGLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);\nGLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);\nGLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);\nGLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);\nGLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, void *pixels);\nGLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);\nGLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);\nGLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);\nGLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);\nGLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);\nGLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, void **data);\nGLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);\nGLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);\nGLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);\nGLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);\nGLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);\nGLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, void *img);\nGLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *bits);\nGLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, void *img);\nGLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);\nGLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);\nGLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);\nGLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI void *APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);\nGLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);\nGLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, void **params);\nGLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);\nGLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);\nGLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);\nGLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);\nGLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);\nGLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\nGLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);\nGLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);\nGLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);\nGLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);\nGLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);\nGLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);\nGLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);\nGLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);\nGLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);\nGLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);\nGLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);\nGLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);\nGLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);\nGLAPI void APIENTRY glEnableClientStateiEXT (GLenum array, GLuint index);\nGLAPI void APIENTRY glDisableClientStateiEXT (GLenum array, GLuint index);\nGLAPI void APIENTRY glGetFloati_vEXT (GLenum pname, GLuint index, GLfloat *params);\nGLAPI void APIENTRY glGetDoublei_vEXT (GLenum pname, GLuint index, GLdouble *params);\nGLAPI void APIENTRY glGetPointeri_vEXT (GLenum pname, GLuint index, void **params);\nGLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const void *string);\nGLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);\nGLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);\nGLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);\nGLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);\nGLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, void *string);\nGLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);\nGLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\nGLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);\nGLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);\nGLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);\nGLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);\nGLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);\nGLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glNamedCopyBufferSubDataEXT (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);\nGLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);\nGLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);\nGLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);\nGLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);\nGLAPI void APIENTRY glVertexArrayVertexOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayEdgeFlagOffsetEXT (GLuint vaobj, GLuint buffer, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayIndexOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayNormalOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayMultiTexCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum texunit, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayFogCoordOffsetEXT (GLuint vaobj, GLuint buffer, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArraySecondaryColorOffsetEXT (GLuint vaobj, GLuint buffer, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayVertexAttribOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glVertexArrayVertexAttribIOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glEnableVertexArrayEXT (GLuint vaobj, GLenum array);\nGLAPI void APIENTRY glDisableVertexArrayEXT (GLuint vaobj, GLenum array);\nGLAPI void APIENTRY glEnableVertexArrayAttribEXT (GLuint vaobj, GLuint index);\nGLAPI void APIENTRY glDisableVertexArrayAttribEXT (GLuint vaobj, GLuint index);\nGLAPI void APIENTRY glGetVertexArrayIntegervEXT (GLuint vaobj, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetVertexArrayPointervEXT (GLuint vaobj, GLenum pname, void **param);\nGLAPI void APIENTRY glGetVertexArrayIntegeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, GLint *param);\nGLAPI void APIENTRY glGetVertexArrayPointeri_vEXT (GLuint vaobj, GLuint index, GLenum pname, void **param);\nGLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length);\nGLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);\nGLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);\nGLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param);\nGLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);\nGLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);\nGLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);\nGLAPI void APIENTRY glTextureBufferRangeEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\nGLAPI void APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI void APIENTRY glTextureStorage2DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glTextureStorage3DMultisampleEXT (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\nGLAPI void APIENTRY glVertexArrayBindVertexBufferEXT (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);\nGLAPI void APIENTRY glVertexArrayVertexAttribFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayVertexAttribIFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayVertexAttribLFormatEXT (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);\nGLAPI void APIENTRY glVertexArrayVertexAttribBindingEXT (GLuint vaobj, GLuint attribindex, GLuint bindingindex);\nGLAPI void APIENTRY glVertexArrayVertexBindingDivisorEXT (GLuint vaobj, GLuint bindingindex, GLuint divisor);\nGLAPI void APIENTRY glVertexArrayVertexAttribLOffsetEXT (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);\nGLAPI void APIENTRY glTexturePageCommitmentEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\nGLAPI void APIENTRY glVertexArrayVertexAttribDivisorEXT (GLuint vaobj, GLuint index, GLuint divisor);\n#endif\n#endif /* GL_EXT_direct_state_access */\n\n#ifndef GL_EXT_draw_buffers2\n#define GL_EXT_draw_buffers2 1\ntypedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\n#endif\n#endif /* GL_EXT_draw_buffers2 */\n\n#ifndef GL_EXT_draw_instanced\n#define GL_EXT_draw_instanced 1\ntypedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);\ntypedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);\nGLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#endif\n#endif /* GL_EXT_draw_instanced */\n\n#ifndef GL_EXT_draw_range_elements\n#define GL_EXT_draw_range_elements 1\n#define GL_MAX_ELEMENTS_VERTICES_EXT      0x80E8\n#define GL_MAX_ELEMENTS_INDICES_EXT       0x80E9\ntypedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices);\n#endif\n#endif /* GL_EXT_draw_range_elements */\n\n#ifndef GL_EXT_external_buffer\n#define GL_EXT_external_buffer 1\ntypedef void *GLeglClientBufferEXT;\ntypedef void (APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\nGLAPI void APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\n#endif\n#endif /* GL_EXT_external_buffer */\n\n#ifndef GL_EXT_fog_coord\n#define GL_EXT_fog_coord 1\n#define GL_FOG_COORDINATE_SOURCE_EXT      0x8450\n#define GL_FOG_COORDINATE_EXT             0x8451\n#define GL_FRAGMENT_DEPTH_EXT             0x8452\n#define GL_CURRENT_FOG_COORDINATE_EXT     0x8453\n#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT  0x8454\n#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455\n#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456\n#define GL_FOG_COORDINATE_ARRAY_EXT       0x8457\ntypedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord);\ntypedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);\nGLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);\nGLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);\nGLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);\nGLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_EXT_fog_coord */\n\n#ifndef GL_EXT_framebuffer_blit\n#define GL_EXT_framebuffer_blit 1\n#define GL_READ_FRAMEBUFFER_EXT           0x8CA8\n#define GL_DRAW_FRAMEBUFFER_EXT           0x8CA9\n#define GL_DRAW_FRAMEBUFFER_BINDING_EXT   0x8CA6\n#define GL_READ_FRAMEBUFFER_BINDING_EXT   0x8CAA\ntypedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#endif\n#endif /* GL_EXT_framebuffer_blit */\n\n#ifndef GL_EXT_framebuffer_multisample\n#define GL_EXT_framebuffer_multisample 1\n#define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56\n#define GL_MAX_SAMPLES_EXT                0x8D57\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_EXT_framebuffer_multisample */\n\n#ifndef GL_EXT_framebuffer_multisample_blit_scaled\n#define GL_EXT_framebuffer_multisample_blit_scaled 1\n#define GL_SCALED_RESOLVE_FASTEST_EXT     0x90BA\n#define GL_SCALED_RESOLVE_NICEST_EXT      0x90BB\n#endif /* GL_EXT_framebuffer_multisample_blit_scaled */\n\n#ifndef GL_EXT_framebuffer_object\n#define GL_EXT_framebuffer_object 1\n#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506\n#define GL_MAX_RENDERBUFFER_SIZE_EXT      0x84E8\n#define GL_FRAMEBUFFER_BINDING_EXT        0x8CA6\n#define GL_RENDERBUFFER_BINDING_EXT       0x8CA7\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4\n#define GL_FRAMEBUFFER_COMPLETE_EXT       0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9\n#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA\n#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB\n#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC\n#define GL_FRAMEBUFFER_UNSUPPORTED_EXT    0x8CDD\n#define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF\n#define GL_COLOR_ATTACHMENT0_EXT          0x8CE0\n#define GL_COLOR_ATTACHMENT1_EXT          0x8CE1\n#define GL_COLOR_ATTACHMENT2_EXT          0x8CE2\n#define GL_COLOR_ATTACHMENT3_EXT          0x8CE3\n#define GL_COLOR_ATTACHMENT4_EXT          0x8CE4\n#define GL_COLOR_ATTACHMENT5_EXT          0x8CE5\n#define GL_COLOR_ATTACHMENT6_EXT          0x8CE6\n#define GL_COLOR_ATTACHMENT7_EXT          0x8CE7\n#define GL_COLOR_ATTACHMENT8_EXT          0x8CE8\n#define GL_COLOR_ATTACHMENT9_EXT          0x8CE9\n#define GL_COLOR_ATTACHMENT10_EXT         0x8CEA\n#define GL_COLOR_ATTACHMENT11_EXT         0x8CEB\n#define GL_COLOR_ATTACHMENT12_EXT         0x8CEC\n#define GL_COLOR_ATTACHMENT13_EXT         0x8CED\n#define GL_COLOR_ATTACHMENT14_EXT         0x8CEE\n#define GL_COLOR_ATTACHMENT15_EXT         0x8CEF\n#define GL_DEPTH_ATTACHMENT_EXT           0x8D00\n#define GL_STENCIL_ATTACHMENT_EXT         0x8D20\n#define GL_FRAMEBUFFER_EXT                0x8D40\n#define GL_RENDERBUFFER_EXT               0x8D41\n#define GL_RENDERBUFFER_WIDTH_EXT         0x8D42\n#define GL_RENDERBUFFER_HEIGHT_EXT        0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44\n#define GL_STENCIL_INDEX1_EXT             0x8D46\n#define GL_STENCIL_INDEX4_EXT             0x8D47\n#define GL_STENCIL_INDEX8_EXT             0x8D48\n#define GL_STENCIL_INDEX16_EXT            0x8D49\n#define GL_RENDERBUFFER_RED_SIZE_EXT      0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE_EXT    0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE_EXT     0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE_EXT    0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE_EXT    0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE_EXT  0x8D55\ntypedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers);\ntypedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers);\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer);\ntypedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer);\ntypedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers);\ntypedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers);\ntypedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);\nGLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);\nGLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);\nGLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);\nGLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);\nGLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);\nGLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);\nGLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);\nGLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);\nGLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\nGLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);\n#endif\n#endif /* GL_EXT_framebuffer_object */\n\n#ifndef GL_EXT_framebuffer_sRGB\n#define GL_EXT_framebuffer_sRGB 1\n#define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9\n#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT   0x8DBA\n#endif /* GL_EXT_framebuffer_sRGB */\n\n#ifndef GL_EXT_geometry_shader4\n#define GL_EXT_geometry_shader4 1\n#define GL_GEOMETRY_SHADER_EXT            0x8DD9\n#define GL_GEOMETRY_VERTICES_OUT_EXT      0x8DDA\n#define GL_GEOMETRY_INPUT_TYPE_EXT        0x8DDB\n#define GL_GEOMETRY_OUTPUT_TYPE_EXT       0x8DDC\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29\n#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD\n#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE\n#define GL_MAX_VARYING_COMPONENTS_EXT     0x8B4B\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1\n#define GL_LINES_ADJACENCY_EXT            0x000A\n#define GL_LINE_STRIP_ADJACENCY_EXT       0x000B\n#define GL_TRIANGLES_ADJACENCY_EXT        0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4\n#define GL_PROGRAM_POINT_SIZE_EXT         0x8642\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);\n#endif\n#endif /* GL_EXT_geometry_shader4 */\n\n#ifndef GL_EXT_gpu_program_parameters\n#define GL_EXT_gpu_program_parameters 1\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);\nGLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);\n#endif\n#endif /* GL_EXT_gpu_program_parameters */\n\n#ifndef GL_EXT_gpu_shader4\n#define GL_EXT_gpu_shader4 1\n#define GL_SAMPLER_1D_ARRAY_EXT           0x8DC0\n#define GL_SAMPLER_2D_ARRAY_EXT           0x8DC1\n#define GL_SAMPLER_BUFFER_EXT             0x8DC2\n#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT    0x8DC3\n#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT    0x8DC4\n#define GL_SAMPLER_CUBE_SHADOW_EXT        0x8DC5\n#define GL_UNSIGNED_INT_VEC2_EXT          0x8DC6\n#define GL_UNSIGNED_INT_VEC3_EXT          0x8DC7\n#define GL_UNSIGNED_INT_VEC4_EXT          0x8DC8\n#define GL_INT_SAMPLER_1D_EXT             0x8DC9\n#define GL_INT_SAMPLER_2D_EXT             0x8DCA\n#define GL_INT_SAMPLER_3D_EXT             0x8DCB\n#define GL_INT_SAMPLER_CUBE_EXT           0x8DCC\n#define GL_INT_SAMPLER_2D_RECT_EXT        0x8DCD\n#define GL_INT_SAMPLER_1D_ARRAY_EXT       0x8DCE\n#define GL_INT_SAMPLER_2D_ARRAY_EXT       0x8DCF\n#define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_1D_EXT    0x8DD1\n#define GL_UNSIGNED_INT_SAMPLER_2D_EXT    0x8DD2\n#define GL_UNSIGNED_INT_SAMPLER_3D_EXT    0x8DD3\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT  0x8DD4\n#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5\n#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6\n#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8\n#define GL_MIN_PROGRAM_TEXEL_OFFSET_EXT   0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET_EXT   0x8905\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT 0x88FD\ntypedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);\ntypedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);\ntypedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0);\ntypedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1);\ntypedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);\ntypedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\ntypedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);\nGLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);\nGLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);\nGLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);\nGLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);\nGLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);\nGLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);\nGLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);\nGLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);\nGLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);\nGLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);\nGLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);\nGLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);\nGLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);\nGLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);\nGLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);\n#endif\n#endif /* GL_EXT_gpu_shader4 */\n\n#ifndef GL_EXT_histogram\n#define GL_EXT_histogram 1\n#define GL_HISTOGRAM_EXT                  0x8024\n#define GL_PROXY_HISTOGRAM_EXT            0x8025\n#define GL_HISTOGRAM_WIDTH_EXT            0x8026\n#define GL_HISTOGRAM_FORMAT_EXT           0x8027\n#define GL_HISTOGRAM_RED_SIZE_EXT         0x8028\n#define GL_HISTOGRAM_GREEN_SIZE_EXT       0x8029\n#define GL_HISTOGRAM_BLUE_SIZE_EXT        0x802A\n#define GL_HISTOGRAM_ALPHA_SIZE_EXT       0x802B\n#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT   0x802C\n#define GL_HISTOGRAM_SINK_EXT             0x802D\n#define GL_MINMAX_EXT                     0x802E\n#define GL_MINMAX_FORMAT_EXT              0x802F\n#define GL_MINMAX_SINK_EXT                0x8030\n#define GL_TABLE_TOO_LARGE_EXT            0x8031\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\ntypedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\ntypedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink);\ntypedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\nGLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, void *values);\nGLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);\nGLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);\nGLAPI void APIENTRY glResetHistogramEXT (GLenum target);\nGLAPI void APIENTRY glResetMinmaxEXT (GLenum target);\n#endif\n#endif /* GL_EXT_histogram */\n\n#ifndef GL_EXT_index_array_formats\n#define GL_EXT_index_array_formats 1\n#define GL_IUI_V2F_EXT                    0x81AD\n#define GL_IUI_V3F_EXT                    0x81AE\n#define GL_IUI_N3F_V2F_EXT                0x81AF\n#define GL_IUI_N3F_V3F_EXT                0x81B0\n#define GL_T2F_IUI_V2F_EXT                0x81B1\n#define GL_T2F_IUI_V3F_EXT                0x81B2\n#define GL_T2F_IUI_N3F_V2F_EXT            0x81B3\n#define GL_T2F_IUI_N3F_V3F_EXT            0x81B4\n#endif /* GL_EXT_index_array_formats */\n\n#ifndef GL_EXT_index_func\n#define GL_EXT_index_func 1\n#define GL_INDEX_TEST_EXT                 0x81B5\n#define GL_INDEX_TEST_FUNC_EXT            0x81B6\n#define GL_INDEX_TEST_REF_EXT             0x81B7\ntypedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);\n#endif\n#endif /* GL_EXT_index_func */\n\n#ifndef GL_EXT_index_material\n#define GL_EXT_index_material 1\n#define GL_INDEX_MATERIAL_EXT             0x81B8\n#define GL_INDEX_MATERIAL_PARAMETER_EXT   0x81B9\n#define GL_INDEX_MATERIAL_FACE_EXT        0x81BA\ntypedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);\n#endif\n#endif /* GL_EXT_index_material */\n\n#ifndef GL_EXT_index_texture\n#define GL_EXT_index_texture 1\n#endif /* GL_EXT_index_texture */\n\n#ifndef GL_EXT_light_texture\n#define GL_EXT_light_texture 1\n#define GL_FRAGMENT_MATERIAL_EXT          0x8349\n#define GL_FRAGMENT_NORMAL_EXT            0x834A\n#define GL_FRAGMENT_COLOR_EXT             0x834C\n#define GL_ATTENUATION_EXT                0x834D\n#define GL_SHADOW_ATTENUATION_EXT         0x834E\n#define GL_TEXTURE_APPLICATION_MODE_EXT   0x834F\n#define GL_TEXTURE_LIGHT_EXT              0x8350\n#define GL_TEXTURE_MATERIAL_FACE_EXT      0x8351\n#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352\ntypedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);\ntypedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);\ntypedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glApplyTextureEXT (GLenum mode);\nGLAPI void APIENTRY glTextureLightEXT (GLenum pname);\nGLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);\n#endif\n#endif /* GL_EXT_light_texture */\n\n#ifndef GL_EXT_memory_object\n#define GL_EXT_memory_object 1\n#define GL_TEXTURE_TILING_EXT             0x9580\n#define GL_DEDICATED_MEMORY_OBJECT_EXT    0x9581\n#define GL_PROTECTED_MEMORY_OBJECT_EXT    0x959B\n#define GL_NUM_TILING_TYPES_EXT           0x9582\n#define GL_TILING_TYPES_EXT               0x9583\n#define GL_OPTIMAL_TILING_EXT             0x9584\n#define GL_LINEAR_TILING_EXT              0x9585\n#define GL_NUM_DEVICE_UUIDS_EXT           0x9596\n#define GL_DEVICE_UUID_EXT                0x9597\n#define GL_DRIVER_UUID_EXT                0x9598\n#define GL_UUID_SIZE_EXT                  16\ntypedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data);\ntypedef void (APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data);\ntypedef void (APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects);\ntypedef GLboolean (APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);\ntypedef void (APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects);\ntypedef void (APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXSTORAGEMEM1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTURESTORAGEMEM1DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data);\nGLAPI void APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data);\nGLAPI void APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects);\nGLAPI GLboolean APIENTRY glIsMemoryObjectEXT (GLuint memoryObject);\nGLAPI void APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects);\nGLAPI void APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params);\nGLAPI void APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTexStorageMem1DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureStorageMem1DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLuint memory, GLuint64 offset);\n#endif\n#endif /* GL_EXT_memory_object */\n\n#ifndef GL_EXT_memory_object_fd\n#define GL_EXT_memory_object_fd 1\n#define GL_HANDLE_TYPE_OPAQUE_FD_EXT      0x9586\ntypedef void (APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);\n#endif\n#endif /* GL_EXT_memory_object_fd */\n\n#ifndef GL_EXT_memory_object_win32\n#define GL_EXT_memory_object_win32 1\n#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT   0x9587\n#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588\n#define GL_DEVICE_LUID_EXT                0x9599\n#define GL_DEVICE_NODE_MASK_EXT           0x959A\n#define GL_LUID_SIZE_EXT                  8\n#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589\n#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A\n#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT    0x958B\n#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C\ntypedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);\ntypedef void (APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle);\nGLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name);\n#endif\n#endif /* GL_EXT_memory_object_win32 */\n\n#ifndef GL_EXT_misc_attribute\n#define GL_EXT_misc_attribute 1\n#endif /* GL_EXT_misc_attribute */\n\n#ifndef GL_EXT_multi_draw_arrays\n#define GL_EXT_multi_draw_arrays 1\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\nGLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);\n#endif\n#endif /* GL_EXT_multi_draw_arrays */\n\n#ifndef GL_EXT_multisample\n#define GL_EXT_multisample 1\n#define GL_MULTISAMPLE_EXT                0x809D\n#define GL_SAMPLE_ALPHA_TO_MASK_EXT       0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F\n#define GL_SAMPLE_MASK_EXT                0x80A0\n#define GL_1PASS_EXT                      0x80A1\n#define GL_2PASS_0_EXT                    0x80A2\n#define GL_2PASS_1_EXT                    0x80A3\n#define GL_4PASS_0_EXT                    0x80A4\n#define GL_4PASS_1_EXT                    0x80A5\n#define GL_4PASS_2_EXT                    0x80A6\n#define GL_4PASS_3_EXT                    0x80A7\n#define GL_SAMPLE_BUFFERS_EXT             0x80A8\n#define GL_SAMPLES_EXT                    0x80A9\n#define GL_SAMPLE_MASK_VALUE_EXT          0x80AA\n#define GL_SAMPLE_MASK_INVERT_EXT         0x80AB\n#define GL_SAMPLE_PATTERN_EXT             0x80AC\n#define GL_MULTISAMPLE_BIT_EXT            0x20000000\ntypedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);\ntypedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);\nGLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);\n#endif\n#endif /* GL_EXT_multisample */\n\n#ifndef GL_EXT_multiview_tessellation_geometry_shader\n#define GL_EXT_multiview_tessellation_geometry_shader 1\n#endif /* GL_EXT_multiview_tessellation_geometry_shader */\n\n#ifndef GL_EXT_multiview_texture_multisample\n#define GL_EXT_multiview_texture_multisample 1\n#endif /* GL_EXT_multiview_texture_multisample */\n\n#ifndef GL_EXT_multiview_timer_query\n#define GL_EXT_multiview_timer_query 1\n#endif /* GL_EXT_multiview_timer_query */\n\n#ifndef GL_EXT_packed_depth_stencil\n#define GL_EXT_packed_depth_stencil 1\n#define GL_DEPTH_STENCIL_EXT              0x84F9\n#define GL_UNSIGNED_INT_24_8_EXT          0x84FA\n#define GL_DEPTH24_STENCIL8_EXT           0x88F0\n#define GL_TEXTURE_STENCIL_SIZE_EXT       0x88F1\n#endif /* GL_EXT_packed_depth_stencil */\n\n#ifndef GL_EXT_packed_float\n#define GL_EXT_packed_float 1\n#define GL_R11F_G11F_B10F_EXT             0x8C3A\n#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B\n#define GL_RGBA_SIGNED_COMPONENTS_EXT     0x8C3C\n#endif /* GL_EXT_packed_float */\n\n#ifndef GL_EXT_packed_pixels\n#define GL_EXT_packed_pixels 1\n#define GL_UNSIGNED_BYTE_3_3_2_EXT        0x8032\n#define GL_UNSIGNED_SHORT_4_4_4_4_EXT     0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1_EXT     0x8034\n#define GL_UNSIGNED_INT_8_8_8_8_EXT       0x8035\n#define GL_UNSIGNED_INT_10_10_10_2_EXT    0x8036\n#endif /* GL_EXT_packed_pixels */\n\n#ifndef GL_EXT_paletted_texture\n#define GL_EXT_paletted_texture 1\n#define GL_COLOR_INDEX1_EXT               0x80E2\n#define GL_COLOR_INDEX2_EXT               0x80E3\n#define GL_COLOR_INDEX4_EXT               0x80E4\n#define GL_COLOR_INDEX8_EXT               0x80E5\n#define GL_COLOR_INDEX12_EXT              0x80E6\n#define GL_COLOR_INDEX16_EXT              0x80E7\n#define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED\ntypedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, void *data);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const void *table);\nGLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, void *data);\nGLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_EXT_paletted_texture */\n\n#ifndef GL_EXT_pixel_buffer_object\n#define GL_EXT_pixel_buffer_object 1\n#define GL_PIXEL_PACK_BUFFER_EXT          0x88EB\n#define GL_PIXEL_UNPACK_BUFFER_EXT        0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING_EXT  0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF\n#endif /* GL_EXT_pixel_buffer_object */\n\n#ifndef GL_EXT_pixel_transform\n#define GL_EXT_pixel_transform 1\n#define GL_PIXEL_TRANSFORM_2D_EXT         0x8330\n#define GL_PIXEL_MAG_FILTER_EXT           0x8331\n#define GL_PIXEL_MIN_FILTER_EXT           0x8332\n#define GL_PIXEL_CUBIC_WEIGHT_EXT         0x8333\n#define GL_CUBIC_EXT                      0x8334\n#define GL_AVERAGE_EXT                    0x8335\n#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336\n#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337\n#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT  0x8338\ntypedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glGetPixelTransformParameterivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetPixelTransformParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_EXT_pixel_transform */\n\n#ifndef GL_EXT_pixel_transform_color_table\n#define GL_EXT_pixel_transform_color_table 1\n#endif /* GL_EXT_pixel_transform_color_table */\n\n#ifndef GL_EXT_point_parameters\n#define GL_EXT_point_parameters 1\n#define GL_POINT_SIZE_MIN_EXT             0x8126\n#define GL_POINT_SIZE_MAX_EXT             0x8127\n#define GL_POINT_FADE_THRESHOLD_SIZE_EXT  0x8128\n#define GL_DISTANCE_ATTENUATION_EXT       0x8129\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);\n#endif\n#endif /* GL_EXT_point_parameters */\n\n#ifndef GL_EXT_polygon_offset\n#define GL_EXT_polygon_offset 1\n#define GL_POLYGON_OFFSET_EXT             0x8037\n#define GL_POLYGON_OFFSET_FACTOR_EXT      0x8038\n#define GL_POLYGON_OFFSET_BIAS_EXT        0x8039\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);\n#endif\n#endif /* GL_EXT_polygon_offset */\n\n#ifndef GL_EXT_polygon_offset_clamp\n#define GL_EXT_polygon_offset_clamp 1\n#define GL_POLYGON_OFFSET_CLAMP_EXT       0x8E1B\ntypedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);\n#endif\n#endif /* GL_EXT_polygon_offset_clamp */\n\n#ifndef GL_EXT_post_depth_coverage\n#define GL_EXT_post_depth_coverage 1\n#endif /* GL_EXT_post_depth_coverage */\n\n#ifndef GL_EXT_provoking_vertex\n#define GL_EXT_provoking_vertex 1\n#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C\n#define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D\n#define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E\n#define GL_PROVOKING_VERTEX_EXT           0x8E4F\ntypedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);\n#endif\n#endif /* GL_EXT_provoking_vertex */\n\n#ifndef GL_EXT_raster_multisample\n#define GL_EXT_raster_multisample 1\n#define GL_RASTER_MULTISAMPLE_EXT         0x9327\n#define GL_RASTER_SAMPLES_EXT             0x9328\n#define GL_MAX_RASTER_SAMPLES_EXT         0x9329\n#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A\n#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B\n#define GL_EFFECTIVE_RASTER_SAMPLES_EXT   0x932C\ntypedef void (APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);\n#endif\n#endif /* GL_EXT_raster_multisample */\n\n#ifndef GL_EXT_rescale_normal\n#define GL_EXT_rescale_normal 1\n#define GL_RESCALE_NORMAL_EXT             0x803A\n#endif /* GL_EXT_rescale_normal */\n\n#ifndef GL_EXT_secondary_color\n#define GL_EXT_secondary_color 1\n#define GL_COLOR_SUM_EXT                  0x8458\n#define GL_CURRENT_SECONDARY_COLOR_EXT    0x8459\n#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A\n#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B\n#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C\n#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D\n#define GL_SECONDARY_COLOR_ARRAY_EXT      0x845E\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);\nGLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);\nGLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);\nGLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);\nGLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);\nGLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);\nGLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);\nGLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);\nGLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);\nGLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);\nGLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);\nGLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);\nGLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);\nGLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);\nGLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);\nGLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);\nGLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_EXT_secondary_color */\n\n#ifndef GL_EXT_semaphore\n#define GL_EXT_semaphore 1\n#define GL_LAYOUT_GENERAL_EXT             0x958D\n#define GL_LAYOUT_COLOR_ATTACHMENT_EXT    0x958E\n#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F\n#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590\n#define GL_LAYOUT_SHADER_READ_ONLY_EXT    0x9591\n#define GL_LAYOUT_TRANSFER_SRC_EXT        0x9592\n#define GL_LAYOUT_TRANSFER_DST_EXT        0x9593\n#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530\n#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531\ntypedef void (APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores);\ntypedef void (APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores);\ntypedef GLboolean (APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);\ntypedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params);\ntypedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params);\ntypedef void (APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);\ntypedef void (APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores);\nGLAPI void APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores);\nGLAPI GLboolean APIENTRY glIsSemaphoreEXT (GLuint semaphore);\nGLAPI void APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params);\nGLAPI void APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params);\nGLAPI void APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);\nGLAPI void APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);\n#endif\n#endif /* GL_EXT_semaphore */\n\n#ifndef GL_EXT_semaphore_fd\n#define GL_EXT_semaphore_fd 1\ntypedef void (APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd);\n#endif\n#endif /* GL_EXT_semaphore_fd */\n\n#ifndef GL_EXT_semaphore_win32\n#define GL_EXT_semaphore_win32 1\n#define GL_HANDLE_TYPE_D3D12_FENCE_EXT    0x9594\n#define GL_D3D12_FENCE_VALUE_EXT          0x9595\ntypedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);\ntypedef void (APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle);\nGLAPI void APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name);\n#endif\n#endif /* GL_EXT_semaphore_win32 */\n\n#ifndef GL_EXT_separate_shader_objects\n#define GL_EXT_separate_shader_objects 1\n#define GL_ACTIVE_PROGRAM_EXT             0x8B8D\ntypedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);\ntypedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);\ntypedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar *string);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);\nGLAPI void APIENTRY glActiveProgramEXT (GLuint program);\nGLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);\n#endif\n#endif /* GL_EXT_separate_shader_objects */\n\n#ifndef GL_EXT_separate_specular_color\n#define GL_EXT_separate_specular_color 1\n#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT  0x81F8\n#define GL_SINGLE_COLOR_EXT               0x81F9\n#define GL_SEPARATE_SPECULAR_COLOR_EXT    0x81FA\n#endif /* GL_EXT_separate_specular_color */\n\n#ifndef GL_EXT_shader_framebuffer_fetch\n#define GL_EXT_shader_framebuffer_fetch 1\n#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52\n#endif /* GL_EXT_shader_framebuffer_fetch */\n\n#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent\n#define GL_EXT_shader_framebuffer_fetch_non_coherent 1\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferFetchBarrierEXT (void);\n#endif\n#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */\n\n#ifndef GL_EXT_shader_image_load_formatted\n#define GL_EXT_shader_image_load_formatted 1\n#endif /* GL_EXT_shader_image_load_formatted */\n\n#ifndef GL_EXT_shader_image_load_store\n#define GL_EXT_shader_image_load_store 1\n#define GL_MAX_IMAGE_UNITS_EXT            0x8F38\n#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39\n#define GL_IMAGE_BINDING_NAME_EXT         0x8F3A\n#define GL_IMAGE_BINDING_LEVEL_EXT        0x8F3B\n#define GL_IMAGE_BINDING_LAYERED_EXT      0x8F3C\n#define GL_IMAGE_BINDING_LAYER_EXT        0x8F3D\n#define GL_IMAGE_BINDING_ACCESS_EXT       0x8F3E\n#define GL_IMAGE_1D_EXT                   0x904C\n#define GL_IMAGE_2D_EXT                   0x904D\n#define GL_IMAGE_3D_EXT                   0x904E\n#define GL_IMAGE_2D_RECT_EXT              0x904F\n#define GL_IMAGE_CUBE_EXT                 0x9050\n#define GL_IMAGE_BUFFER_EXT               0x9051\n#define GL_IMAGE_1D_ARRAY_EXT             0x9052\n#define GL_IMAGE_2D_ARRAY_EXT             0x9053\n#define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054\n#define GL_IMAGE_2D_MULTISAMPLE_EXT       0x9055\n#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056\n#define GL_INT_IMAGE_1D_EXT               0x9057\n#define GL_INT_IMAGE_2D_EXT               0x9058\n#define GL_INT_IMAGE_3D_EXT               0x9059\n#define GL_INT_IMAGE_2D_RECT_EXT          0x905A\n#define GL_INT_IMAGE_CUBE_EXT             0x905B\n#define GL_INT_IMAGE_BUFFER_EXT           0x905C\n#define GL_INT_IMAGE_1D_ARRAY_EXT         0x905D\n#define GL_INT_IMAGE_2D_ARRAY_EXT         0x905E\n#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F\n#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT   0x9060\n#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061\n#define GL_UNSIGNED_INT_IMAGE_1D_EXT      0x9062\n#define GL_UNSIGNED_INT_IMAGE_2D_EXT      0x9063\n#define GL_UNSIGNED_INT_IMAGE_3D_EXT      0x9064\n#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065\n#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT    0x9066\n#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067\n#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068\n#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069\n#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A\n#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B\n#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C\n#define GL_MAX_IMAGE_SAMPLES_EXT          0x906D\n#define GL_IMAGE_BINDING_FORMAT_EXT       0x906E\n#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001\n#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT  0x00000002\n#define GL_UNIFORM_BARRIER_BIT_EXT        0x00000004\n#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT  0x00000008\n#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020\n#define GL_COMMAND_BARRIER_BIT_EXT        0x00000040\n#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT   0x00000080\n#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100\n#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT  0x00000200\n#define GL_FRAMEBUFFER_BARRIER_BIT_EXT    0x00000400\n#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800\n#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000\n#define GL_ALL_BARRIER_BITS_EXT           0xFFFFFFFF\ntypedef void (APIENTRYP PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);\ntypedef void (APIENTRYP PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindImageTextureEXT (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);\nGLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);\n#endif\n#endif /* GL_EXT_shader_image_load_store */\n\n#ifndef GL_EXT_shader_integer_mix\n#define GL_EXT_shader_integer_mix 1\n#endif /* GL_EXT_shader_integer_mix */\n\n#ifndef GL_EXT_shader_samples_identical\n#define GL_EXT_shader_samples_identical 1\n#endif /* GL_EXT_shader_samples_identical */\n\n#ifndef GL_EXT_shadow_funcs\n#define GL_EXT_shadow_funcs 1\n#endif /* GL_EXT_shadow_funcs */\n\n#ifndef GL_EXT_shared_texture_palette\n#define GL_EXT_shared_texture_palette 1\n#define GL_SHARED_TEXTURE_PALETTE_EXT     0x81FB\n#endif /* GL_EXT_shared_texture_palette */\n\n#ifndef GL_EXT_sparse_texture2\n#define GL_EXT_sparse_texture2 1\n#endif /* GL_EXT_sparse_texture2 */\n\n#ifndef GL_EXT_stencil_clear_tag\n#define GL_EXT_stencil_clear_tag 1\n#define GL_STENCIL_TAG_BITS_EXT           0x88F2\n#define GL_STENCIL_CLEAR_TAG_VALUE_EXT    0x88F3\ntypedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);\n#endif\n#endif /* GL_EXT_stencil_clear_tag */\n\n#ifndef GL_EXT_stencil_two_side\n#define GL_EXT_stencil_two_side 1\n#define GL_STENCIL_TEST_TWO_SIDE_EXT      0x8910\n#define GL_ACTIVE_STENCIL_FACE_EXT        0x8911\ntypedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);\n#endif\n#endif /* GL_EXT_stencil_two_side */\n\n#ifndef GL_EXT_stencil_wrap\n#define GL_EXT_stencil_wrap 1\n#define GL_INCR_WRAP_EXT                  0x8507\n#define GL_DECR_WRAP_EXT                  0x8508\n#endif /* GL_EXT_stencil_wrap */\n\n#ifndef GL_EXT_subtexture\n#define GL_EXT_subtexture 1\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\n#endif\n#endif /* GL_EXT_subtexture */\n\n#ifndef GL_EXT_texture\n#define GL_EXT_texture 1\n#define GL_ALPHA4_EXT                     0x803B\n#define GL_ALPHA8_EXT                     0x803C\n#define GL_ALPHA12_EXT                    0x803D\n#define GL_ALPHA16_EXT                    0x803E\n#define GL_LUMINANCE4_EXT                 0x803F\n#define GL_LUMINANCE8_EXT                 0x8040\n#define GL_LUMINANCE12_EXT                0x8041\n#define GL_LUMINANCE16_EXT                0x8042\n#define GL_LUMINANCE4_ALPHA4_EXT          0x8043\n#define GL_LUMINANCE6_ALPHA2_EXT          0x8044\n#define GL_LUMINANCE8_ALPHA8_EXT          0x8045\n#define GL_LUMINANCE12_ALPHA4_EXT         0x8046\n#define GL_LUMINANCE12_ALPHA12_EXT        0x8047\n#define GL_LUMINANCE16_ALPHA16_EXT        0x8048\n#define GL_INTENSITY_EXT                  0x8049\n#define GL_INTENSITY4_EXT                 0x804A\n#define GL_INTENSITY8_EXT                 0x804B\n#define GL_INTENSITY12_EXT                0x804C\n#define GL_INTENSITY16_EXT                0x804D\n#define GL_RGB2_EXT                       0x804E\n#define GL_RGB4_EXT                       0x804F\n#define GL_RGB5_EXT                       0x8050\n#define GL_RGB8_EXT                       0x8051\n#define GL_RGB10_EXT                      0x8052\n#define GL_RGB12_EXT                      0x8053\n#define GL_RGB16_EXT                      0x8054\n#define GL_RGBA2_EXT                      0x8055\n#define GL_RGBA4_EXT                      0x8056\n#define GL_RGB5_A1_EXT                    0x8057\n#define GL_RGBA8_EXT                      0x8058\n#define GL_RGB10_A2_EXT                   0x8059\n#define GL_RGBA12_EXT                     0x805A\n#define GL_RGBA16_EXT                     0x805B\n#define GL_TEXTURE_RED_SIZE_EXT           0x805C\n#define GL_TEXTURE_GREEN_SIZE_EXT         0x805D\n#define GL_TEXTURE_BLUE_SIZE_EXT          0x805E\n#define GL_TEXTURE_ALPHA_SIZE_EXT         0x805F\n#define GL_TEXTURE_LUMINANCE_SIZE_EXT     0x8060\n#define GL_TEXTURE_INTENSITY_SIZE_EXT     0x8061\n#define GL_REPLACE_EXT                    0x8062\n#define GL_PROXY_TEXTURE_1D_EXT           0x8063\n#define GL_PROXY_TEXTURE_2D_EXT           0x8064\n#define GL_TEXTURE_TOO_LARGE_EXT          0x8065\n#endif /* GL_EXT_texture */\n\n#ifndef GL_EXT_texture3D\n#define GL_EXT_texture3D 1\n#define GL_PACK_SKIP_IMAGES_EXT           0x806B\n#define GL_PACK_IMAGE_HEIGHT_EXT          0x806C\n#define GL_UNPACK_SKIP_IMAGES_EXT         0x806D\n#define GL_UNPACK_IMAGE_HEIGHT_EXT        0x806E\n#define GL_TEXTURE_3D_EXT                 0x806F\n#define GL_PROXY_TEXTURE_3D_EXT           0x8070\n#define GL_TEXTURE_DEPTH_EXT              0x8071\n#define GL_TEXTURE_WRAP_R_EXT             0x8072\n#define GL_MAX_3D_TEXTURE_SIZE_EXT        0x8073\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\n#endif\n#endif /* GL_EXT_texture3D */\n\n#ifndef GL_EXT_texture_array\n#define GL_EXT_texture_array 1\n#define GL_TEXTURE_1D_ARRAY_EXT           0x8C18\n#define GL_PROXY_TEXTURE_1D_ARRAY_EXT     0x8C19\n#define GL_TEXTURE_2D_ARRAY_EXT           0x8C1A\n#define GL_PROXY_TEXTURE_2D_ARRAY_EXT     0x8C1B\n#define GL_TEXTURE_BINDING_1D_ARRAY_EXT   0x8C1C\n#define GL_TEXTURE_BINDING_2D_ARRAY_EXT   0x8C1D\n#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT   0x88FF\n#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);\n#endif\n#endif /* GL_EXT_texture_array */\n\n#ifndef GL_EXT_texture_buffer_object\n#define GL_EXT_texture_buffer_object 1\n#define GL_TEXTURE_BUFFER_EXT             0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D\n#define GL_TEXTURE_BUFFER_FORMAT_EXT      0x8C2E\ntypedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);\n#endif\n#endif /* GL_EXT_texture_buffer_object */\n\n#ifndef GL_EXT_texture_compression_latc\n#define GL_EXT_texture_compression_latc 1\n#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70\n#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71\n#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72\n#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73\n#endif /* GL_EXT_texture_compression_latc */\n\n#ifndef GL_EXT_texture_compression_rgtc\n#define GL_EXT_texture_compression_rgtc 1\n#define GL_COMPRESSED_RED_RGTC1_EXT       0x8DBB\n#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC\n#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD\n#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE\n#endif /* GL_EXT_texture_compression_rgtc */\n\n#ifndef GL_EXT_texture_compression_s3tc\n#define GL_EXT_texture_compression_s3tc 1\n#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0\n#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1\n#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2\n#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3\n#endif /* GL_EXT_texture_compression_s3tc */\n\n#ifndef GL_EXT_texture_cube_map\n#define GL_EXT_texture_cube_map 1\n#define GL_NORMAL_MAP_EXT                 0x8511\n#define GL_REFLECTION_MAP_EXT             0x8512\n#define GL_TEXTURE_CUBE_MAP_EXT           0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP_EXT   0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A\n#define GL_PROXY_TEXTURE_CUBE_MAP_EXT     0x851B\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT  0x851C\n#endif /* GL_EXT_texture_cube_map */\n\n#ifndef GL_EXT_texture_env_add\n#define GL_EXT_texture_env_add 1\n#endif /* GL_EXT_texture_env_add */\n\n#ifndef GL_EXT_texture_env_combine\n#define GL_EXT_texture_env_combine 1\n#define GL_COMBINE_EXT                    0x8570\n#define GL_COMBINE_RGB_EXT                0x8571\n#define GL_COMBINE_ALPHA_EXT              0x8572\n#define GL_RGB_SCALE_EXT                  0x8573\n#define GL_ADD_SIGNED_EXT                 0x8574\n#define GL_INTERPOLATE_EXT                0x8575\n#define GL_CONSTANT_EXT                   0x8576\n#define GL_PRIMARY_COLOR_EXT              0x8577\n#define GL_PREVIOUS_EXT                   0x8578\n#define GL_SOURCE0_RGB_EXT                0x8580\n#define GL_SOURCE1_RGB_EXT                0x8581\n#define GL_SOURCE2_RGB_EXT                0x8582\n#define GL_SOURCE0_ALPHA_EXT              0x8588\n#define GL_SOURCE1_ALPHA_EXT              0x8589\n#define GL_SOURCE2_ALPHA_EXT              0x858A\n#define GL_OPERAND0_RGB_EXT               0x8590\n#define GL_OPERAND1_RGB_EXT               0x8591\n#define GL_OPERAND2_RGB_EXT               0x8592\n#define GL_OPERAND0_ALPHA_EXT             0x8598\n#define GL_OPERAND1_ALPHA_EXT             0x8599\n#define GL_OPERAND2_ALPHA_EXT             0x859A\n#endif /* GL_EXT_texture_env_combine */\n\n#ifndef GL_EXT_texture_env_dot3\n#define GL_EXT_texture_env_dot3 1\n#define GL_DOT3_RGB_EXT                   0x8740\n#define GL_DOT3_RGBA_EXT                  0x8741\n#endif /* GL_EXT_texture_env_dot3 */\n\n#ifndef GL_EXT_texture_filter_anisotropic\n#define GL_EXT_texture_filter_anisotropic 1\n#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE\n#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF\n#endif /* GL_EXT_texture_filter_anisotropic */\n\n#ifndef GL_EXT_texture_filter_minmax\n#define GL_EXT_texture_filter_minmax 1\n#define GL_TEXTURE_REDUCTION_MODE_EXT     0x9366\n#define GL_WEIGHTED_AVERAGE_EXT           0x9367\n#endif /* GL_EXT_texture_filter_minmax */\n\n#ifndef GL_EXT_texture_integer\n#define GL_EXT_texture_integer 1\n#define GL_RGBA32UI_EXT                   0x8D70\n#define GL_RGB32UI_EXT                    0x8D71\n#define GL_ALPHA32UI_EXT                  0x8D72\n#define GL_INTENSITY32UI_EXT              0x8D73\n#define GL_LUMINANCE32UI_EXT              0x8D74\n#define GL_LUMINANCE_ALPHA32UI_EXT        0x8D75\n#define GL_RGBA16UI_EXT                   0x8D76\n#define GL_RGB16UI_EXT                    0x8D77\n#define GL_ALPHA16UI_EXT                  0x8D78\n#define GL_INTENSITY16UI_EXT              0x8D79\n#define GL_LUMINANCE16UI_EXT              0x8D7A\n#define GL_LUMINANCE_ALPHA16UI_EXT        0x8D7B\n#define GL_RGBA8UI_EXT                    0x8D7C\n#define GL_RGB8UI_EXT                     0x8D7D\n#define GL_ALPHA8UI_EXT                   0x8D7E\n#define GL_INTENSITY8UI_EXT               0x8D7F\n#define GL_LUMINANCE8UI_EXT               0x8D80\n#define GL_LUMINANCE_ALPHA8UI_EXT         0x8D81\n#define GL_RGBA32I_EXT                    0x8D82\n#define GL_RGB32I_EXT                     0x8D83\n#define GL_ALPHA32I_EXT                   0x8D84\n#define GL_INTENSITY32I_EXT               0x8D85\n#define GL_LUMINANCE32I_EXT               0x8D86\n#define GL_LUMINANCE_ALPHA32I_EXT         0x8D87\n#define GL_RGBA16I_EXT                    0x8D88\n#define GL_RGB16I_EXT                     0x8D89\n#define GL_ALPHA16I_EXT                   0x8D8A\n#define GL_INTENSITY16I_EXT               0x8D8B\n#define GL_LUMINANCE16I_EXT               0x8D8C\n#define GL_LUMINANCE_ALPHA16I_EXT         0x8D8D\n#define GL_RGBA8I_EXT                     0x8D8E\n#define GL_RGB8I_EXT                      0x8D8F\n#define GL_ALPHA8I_EXT                    0x8D90\n#define GL_INTENSITY8I_EXT                0x8D91\n#define GL_LUMINANCE8I_EXT                0x8D92\n#define GL_LUMINANCE_ALPHA8I_EXT          0x8D93\n#define GL_RED_INTEGER_EXT                0x8D94\n#define GL_GREEN_INTEGER_EXT              0x8D95\n#define GL_BLUE_INTEGER_EXT               0x8D96\n#define GL_ALPHA_INTEGER_EXT              0x8D97\n#define GL_RGB_INTEGER_EXT                0x8D98\n#define GL_RGBA_INTEGER_EXT               0x8D99\n#define GL_BGR_INTEGER_EXT                0x8D9A\n#define GL_BGRA_INTEGER_EXT               0x8D9B\n#define GL_LUMINANCE_INTEGER_EXT          0x8D9C\n#define GL_LUMINANCE_ALPHA_INTEGER_EXT    0x8D9D\n#define GL_RGBA_INTEGER_MODE_EXT          0x8D9E\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha);\ntypedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);\nGLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);\nGLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);\n#endif\n#endif /* GL_EXT_texture_integer */\n\n#ifndef GL_EXT_texture_lod_bias\n#define GL_EXT_texture_lod_bias 1\n#define GL_MAX_TEXTURE_LOD_BIAS_EXT       0x84FD\n#define GL_TEXTURE_FILTER_CONTROL_EXT     0x8500\n#define GL_TEXTURE_LOD_BIAS_EXT           0x8501\n#endif /* GL_EXT_texture_lod_bias */\n\n#ifndef GL_EXT_texture_mirror_clamp\n#define GL_EXT_texture_mirror_clamp 1\n#define GL_MIRROR_CLAMP_EXT               0x8742\n#define GL_MIRROR_CLAMP_TO_EDGE_EXT       0x8743\n#define GL_MIRROR_CLAMP_TO_BORDER_EXT     0x8912\n#endif /* GL_EXT_texture_mirror_clamp */\n\n#ifndef GL_EXT_texture_object\n#define GL_EXT_texture_object 1\n#define GL_TEXTURE_PRIORITY_EXT           0x8066\n#define GL_TEXTURE_RESIDENT_EXT           0x8067\n#define GL_TEXTURE_1D_BINDING_EXT         0x8068\n#define GL_TEXTURE_2D_BINDING_EXT         0x8069\n#define GL_TEXTURE_3D_BINDING_EXT         0x806A\ntypedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);\ntypedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);\ntypedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures);\ntypedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures);\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture);\ntypedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);\nGLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);\nGLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);\nGLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);\nGLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);\nGLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);\n#endif\n#endif /* GL_EXT_texture_object */\n\n#ifndef GL_EXT_texture_perturb_normal\n#define GL_EXT_texture_perturb_normal 1\n#define GL_PERTURB_EXT                    0x85AE\n#define GL_TEXTURE_NORMAL_EXT             0x85AF\ntypedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTextureNormalEXT (GLenum mode);\n#endif\n#endif /* GL_EXT_texture_perturb_normal */\n\n#ifndef GL_EXT_texture_sRGB\n#define GL_EXT_texture_sRGB 1\n#define GL_SRGB_EXT                       0x8C40\n#define GL_SRGB8_EXT                      0x8C41\n#define GL_SRGB_ALPHA_EXT                 0x8C42\n#define GL_SRGB8_ALPHA8_EXT               0x8C43\n#define GL_SLUMINANCE_ALPHA_EXT           0x8C44\n#define GL_SLUMINANCE8_ALPHA8_EXT         0x8C45\n#define GL_SLUMINANCE_EXT                 0x8C46\n#define GL_SLUMINANCE8_EXT                0x8C47\n#define GL_COMPRESSED_SRGB_EXT            0x8C48\n#define GL_COMPRESSED_SRGB_ALPHA_EXT      0x8C49\n#define GL_COMPRESSED_SLUMINANCE_EXT      0x8C4A\n#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B\n#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT  0x8C4C\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F\n#endif /* GL_EXT_texture_sRGB */\n\n#ifndef GL_EXT_texture_sRGB_R8\n#define GL_EXT_texture_sRGB_R8 1\n#define GL_SR8_EXT                        0x8FBD\n#endif /* GL_EXT_texture_sRGB_R8 */\n\n#ifndef GL_EXT_texture_sRGB_RG8\n#define GL_EXT_texture_sRGB_RG8 1\n#define GL_SRG8_EXT                       0x8FBE\n#endif /* GL_EXT_texture_sRGB_RG8 */\n\n#ifndef GL_EXT_texture_sRGB_decode\n#define GL_EXT_texture_sRGB_decode 1\n#define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48\n#define GL_DECODE_EXT                     0x8A49\n#define GL_SKIP_DECODE_EXT                0x8A4A\n#endif /* GL_EXT_texture_sRGB_decode */\n\n#ifndef GL_EXT_texture_shadow_lod\n#define GL_EXT_texture_shadow_lod 1\n#endif /* GL_EXT_texture_shadow_lod */\n\n#ifndef GL_EXT_texture_shared_exponent\n#define GL_EXT_texture_shared_exponent 1\n#define GL_RGB9_E5_EXT                    0x8C3D\n#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT   0x8C3E\n#define GL_TEXTURE_SHARED_SIZE_EXT        0x8C3F\n#endif /* GL_EXT_texture_shared_exponent */\n\n#ifndef GL_EXT_texture_snorm\n#define GL_EXT_texture_snorm 1\n#define GL_ALPHA_SNORM                    0x9010\n#define GL_LUMINANCE_SNORM                0x9011\n#define GL_LUMINANCE_ALPHA_SNORM          0x9012\n#define GL_INTENSITY_SNORM                0x9013\n#define GL_ALPHA8_SNORM                   0x9014\n#define GL_LUMINANCE8_SNORM               0x9015\n#define GL_LUMINANCE8_ALPHA8_SNORM        0x9016\n#define GL_INTENSITY8_SNORM               0x9017\n#define GL_ALPHA16_SNORM                  0x9018\n#define GL_LUMINANCE16_SNORM              0x9019\n#define GL_LUMINANCE16_ALPHA16_SNORM      0x901A\n#define GL_INTENSITY16_SNORM              0x901B\n#define GL_RED_SNORM                      0x8F90\n#define GL_RG_SNORM                       0x8F91\n#define GL_RGB_SNORM                      0x8F92\n#define GL_RGBA_SNORM                     0x8F93\n#endif /* GL_EXT_texture_snorm */\n\n#ifndef GL_EXT_texture_storage\n#define GL_EXT_texture_storage 1\n#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT   0x912F\n#define GL_RGBA32F_EXT                    0x8814\n#define GL_RGB32F_EXT                     0x8815\n#define GL_ALPHA32F_EXT                   0x8816\n#define GL_LUMINANCE32F_EXT               0x8818\n#define GL_LUMINANCE_ALPHA32F_EXT         0x8819\n#define GL_RGBA16F_EXT                    0x881A\n#define GL_RGB16F_EXT                     0x881B\n#define GL_ALPHA16F_EXT                   0x881C\n#define GL_LUMINANCE16F_EXT               0x881E\n#define GL_LUMINANCE_ALPHA16F_EXT         0x881F\n#define GL_BGRA8_EXT                      0x93A1\n#define GL_R8_EXT                         0x8229\n#define GL_RG8_EXT                        0x822B\n#define GL_R32F_EXT                       0x822E\n#define GL_RG32F_EXT                      0x8230\n#define GL_R16F_EXT                       0x822D\n#define GL_RG16F_EXT                      0x822F\ntypedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\nGLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\n#endif\n#endif /* GL_EXT_texture_storage */\n\n#ifndef GL_EXT_texture_swizzle\n#define GL_EXT_texture_swizzle 1\n#define GL_TEXTURE_SWIZZLE_R_EXT          0x8E42\n#define GL_TEXTURE_SWIZZLE_G_EXT          0x8E43\n#define GL_TEXTURE_SWIZZLE_B_EXT          0x8E44\n#define GL_TEXTURE_SWIZZLE_A_EXT          0x8E45\n#define GL_TEXTURE_SWIZZLE_RGBA_EXT       0x8E46\n#endif /* GL_EXT_texture_swizzle */\n\n#ifndef GL_EXT_timer_query\n#define GL_EXT_timer_query 1\n#define GL_TIME_ELAPSED_EXT               0x88BF\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);\ntypedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);\nGLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);\n#endif\n#endif /* GL_EXT_timer_query */\n\n#ifndef GL_EXT_transform_feedback\n#define GL_EXT_transform_feedback 1\n#define GL_TRANSFORM_FEEDBACK_BUFFER_EXT  0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F\n#define GL_INTERLEAVED_ATTRIBS_EXT        0x8C8C\n#define GL_SEPARATE_ATTRIBS_EXT           0x8C8D\n#define GL_PRIMITIVES_GENERATED_EXT       0x8C87\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88\n#define GL_RASTERIZER_DISCARD_EXT         0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80\n#define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F\n#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);\nGLAPI void APIENTRY glEndTransformFeedbackEXT (void);\nGLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);\nGLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);\nGLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode);\nGLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\n#endif\n#endif /* GL_EXT_transform_feedback */\n\n#ifndef GL_EXT_vertex_array\n#define GL_EXT_vertex_array 1\n#define GL_VERTEX_ARRAY_EXT               0x8074\n#define GL_NORMAL_ARRAY_EXT               0x8075\n#define GL_COLOR_ARRAY_EXT                0x8076\n#define GL_INDEX_ARRAY_EXT                0x8077\n#define GL_TEXTURE_COORD_ARRAY_EXT        0x8078\n#define GL_EDGE_FLAG_ARRAY_EXT            0x8079\n#define GL_VERTEX_ARRAY_SIZE_EXT          0x807A\n#define GL_VERTEX_ARRAY_TYPE_EXT          0x807B\n#define GL_VERTEX_ARRAY_STRIDE_EXT        0x807C\n#define GL_VERTEX_ARRAY_COUNT_EXT         0x807D\n#define GL_NORMAL_ARRAY_TYPE_EXT          0x807E\n#define GL_NORMAL_ARRAY_STRIDE_EXT        0x807F\n#define GL_NORMAL_ARRAY_COUNT_EXT         0x8080\n#define GL_COLOR_ARRAY_SIZE_EXT           0x8081\n#define GL_COLOR_ARRAY_TYPE_EXT           0x8082\n#define GL_COLOR_ARRAY_STRIDE_EXT         0x8083\n#define GL_COLOR_ARRAY_COUNT_EXT          0x8084\n#define GL_INDEX_ARRAY_TYPE_EXT           0x8085\n#define GL_INDEX_ARRAY_STRIDE_EXT         0x8086\n#define GL_INDEX_ARRAY_COUNT_EXT          0x8087\n#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT   0x8088\n#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT   0x8089\n#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A\n#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT  0x808B\n#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT     0x808C\n#define GL_EDGE_FLAG_ARRAY_COUNT_EXT      0x808D\n#define GL_VERTEX_ARRAY_POINTER_EXT       0x808E\n#define GL_NORMAL_ARRAY_POINTER_EXT       0x808F\n#define GL_COLOR_ARRAY_POINTER_EXT        0x8090\n#define GL_INDEX_ARRAY_POINTER_EXT        0x8091\n#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092\n#define GL_EDGE_FLAG_ARRAY_POINTER_EXT    0x8093\ntypedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);\ntypedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\ntypedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count);\ntypedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer);\ntypedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, void **params);\ntypedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);\ntypedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const void *pointer);\ntypedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\ntypedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glArrayElementEXT (GLint i);\nGLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\nGLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);\nGLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);\nGLAPI void APIENTRY glGetPointervEXT (GLenum pname, void **params);\nGLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);\nGLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const void *pointer);\nGLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\nGLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const void *pointer);\n#endif\n#endif /* GL_EXT_vertex_array */\n\n#ifndef GL_EXT_vertex_array_bgra\n#define GL_EXT_vertex_array_bgra 1\n#endif /* GL_EXT_vertex_array_bgra */\n\n#ifndef GL_EXT_vertex_attrib_64bit\n#define GL_EXT_vertex_attrib_64bit 1\n#define GL_DOUBLE_VEC2_EXT                0x8FFC\n#define GL_DOUBLE_VEC3_EXT                0x8FFD\n#define GL_DOUBLE_VEC4_EXT                0x8FFE\n#define GL_DOUBLE_MAT2_EXT                0x8F46\n#define GL_DOUBLE_MAT3_EXT                0x8F47\n#define GL_DOUBLE_MAT4_EXT                0x8F48\n#define GL_DOUBLE_MAT2x3_EXT              0x8F49\n#define GL_DOUBLE_MAT2x4_EXT              0x8F4A\n#define GL_DOUBLE_MAT3x2_EXT              0x8F4B\n#define GL_DOUBLE_MAT3x4_EXT              0x8F4C\n#define GL_DOUBLE_MAT4x2_EXT              0x8F4D\n#define GL_DOUBLE_MAT4x3_EXT              0x8F4E\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttribL1dEXT (GLuint index, GLdouble x);\nGLAPI void APIENTRY glVertexAttribL2dEXT (GLuint index, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexAttribL3dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexAttribL4dEXT (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexAttribL1dvEXT (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL2dvEXT (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL3dvEXT (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribL4dvEXT (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribLPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glGetVertexAttribLdvEXT (GLuint index, GLenum pname, GLdouble *params);\n#endif\n#endif /* GL_EXT_vertex_attrib_64bit */\n\n#ifndef GL_EXT_vertex_shader\n#define GL_EXT_vertex_shader 1\n#define GL_VERTEX_SHADER_EXT              0x8780\n#define GL_VERTEX_SHADER_BINDING_EXT      0x8781\n#define GL_OP_INDEX_EXT                   0x8782\n#define GL_OP_NEGATE_EXT                  0x8783\n#define GL_OP_DOT3_EXT                    0x8784\n#define GL_OP_DOT4_EXT                    0x8785\n#define GL_OP_MUL_EXT                     0x8786\n#define GL_OP_ADD_EXT                     0x8787\n#define GL_OP_MADD_EXT                    0x8788\n#define GL_OP_FRAC_EXT                    0x8789\n#define GL_OP_MAX_EXT                     0x878A\n#define GL_OP_MIN_EXT                     0x878B\n#define GL_OP_SET_GE_EXT                  0x878C\n#define GL_OP_SET_LT_EXT                  0x878D\n#define GL_OP_CLAMP_EXT                   0x878E\n#define GL_OP_FLOOR_EXT                   0x878F\n#define GL_OP_ROUND_EXT                   0x8790\n#define GL_OP_EXP_BASE_2_EXT              0x8791\n#define GL_OP_LOG_BASE_2_EXT              0x8792\n#define GL_OP_POWER_EXT                   0x8793\n#define GL_OP_RECIP_EXT                   0x8794\n#define GL_OP_RECIP_SQRT_EXT              0x8795\n#define GL_OP_SUB_EXT                     0x8796\n#define GL_OP_CROSS_PRODUCT_EXT           0x8797\n#define GL_OP_MULTIPLY_MATRIX_EXT         0x8798\n#define GL_OP_MOV_EXT                     0x8799\n#define GL_OUTPUT_VERTEX_EXT              0x879A\n#define GL_OUTPUT_COLOR0_EXT              0x879B\n#define GL_OUTPUT_COLOR1_EXT              0x879C\n#define GL_OUTPUT_TEXTURE_COORD0_EXT      0x879D\n#define GL_OUTPUT_TEXTURE_COORD1_EXT      0x879E\n#define GL_OUTPUT_TEXTURE_COORD2_EXT      0x879F\n#define GL_OUTPUT_TEXTURE_COORD3_EXT      0x87A0\n#define GL_OUTPUT_TEXTURE_COORD4_EXT      0x87A1\n#define GL_OUTPUT_TEXTURE_COORD5_EXT      0x87A2\n#define GL_OUTPUT_TEXTURE_COORD6_EXT      0x87A3\n#define GL_OUTPUT_TEXTURE_COORD7_EXT      0x87A4\n#define GL_OUTPUT_TEXTURE_COORD8_EXT      0x87A5\n#define GL_OUTPUT_TEXTURE_COORD9_EXT      0x87A6\n#define GL_OUTPUT_TEXTURE_COORD10_EXT     0x87A7\n#define GL_OUTPUT_TEXTURE_COORD11_EXT     0x87A8\n#define GL_OUTPUT_TEXTURE_COORD12_EXT     0x87A9\n#define GL_OUTPUT_TEXTURE_COORD13_EXT     0x87AA\n#define GL_OUTPUT_TEXTURE_COORD14_EXT     0x87AB\n#define GL_OUTPUT_TEXTURE_COORD15_EXT     0x87AC\n#define GL_OUTPUT_TEXTURE_COORD16_EXT     0x87AD\n#define GL_OUTPUT_TEXTURE_COORD17_EXT     0x87AE\n#define GL_OUTPUT_TEXTURE_COORD18_EXT     0x87AF\n#define GL_OUTPUT_TEXTURE_COORD19_EXT     0x87B0\n#define GL_OUTPUT_TEXTURE_COORD20_EXT     0x87B1\n#define GL_OUTPUT_TEXTURE_COORD21_EXT     0x87B2\n#define GL_OUTPUT_TEXTURE_COORD22_EXT     0x87B3\n#define GL_OUTPUT_TEXTURE_COORD23_EXT     0x87B4\n#define GL_OUTPUT_TEXTURE_COORD24_EXT     0x87B5\n#define GL_OUTPUT_TEXTURE_COORD25_EXT     0x87B6\n#define GL_OUTPUT_TEXTURE_COORD26_EXT     0x87B7\n#define GL_OUTPUT_TEXTURE_COORD27_EXT     0x87B8\n#define GL_OUTPUT_TEXTURE_COORD28_EXT     0x87B9\n#define GL_OUTPUT_TEXTURE_COORD29_EXT     0x87BA\n#define GL_OUTPUT_TEXTURE_COORD30_EXT     0x87BB\n#define GL_OUTPUT_TEXTURE_COORD31_EXT     0x87BC\n#define GL_OUTPUT_FOG_EXT                 0x87BD\n#define GL_SCALAR_EXT                     0x87BE\n#define GL_VECTOR_EXT                     0x87BF\n#define GL_MATRIX_EXT                     0x87C0\n#define GL_VARIANT_EXT                    0x87C1\n#define GL_INVARIANT_EXT                  0x87C2\n#define GL_LOCAL_CONSTANT_EXT             0x87C3\n#define GL_LOCAL_EXT                      0x87C4\n#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5\n#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6\n#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7\n#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8\n#define GL_MAX_VERTEX_SHADER_LOCALS_EXT   0x87C9\n#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA\n#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB\n#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC\n#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD\n#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE\n#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF\n#define GL_VERTEX_SHADER_VARIANTS_EXT     0x87D0\n#define GL_VERTEX_SHADER_INVARIANTS_EXT   0x87D1\n#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2\n#define GL_VERTEX_SHADER_LOCALS_EXT       0x87D3\n#define GL_VERTEX_SHADER_OPTIMIZED_EXT    0x87D4\n#define GL_X_EXT                          0x87D5\n#define GL_Y_EXT                          0x87D6\n#define GL_Z_EXT                          0x87D7\n#define GL_W_EXT                          0x87D8\n#define GL_NEGATIVE_X_EXT                 0x87D9\n#define GL_NEGATIVE_Y_EXT                 0x87DA\n#define GL_NEGATIVE_Z_EXT                 0x87DB\n#define GL_NEGATIVE_W_EXT                 0x87DC\n#define GL_ZERO_EXT                       0x87DD\n#define GL_ONE_EXT                        0x87DE\n#define GL_NEGATIVE_ONE_EXT               0x87DF\n#define GL_NORMALIZED_RANGE_EXT           0x87E0\n#define GL_FULL_RANGE_EXT                 0x87E1\n#define GL_CURRENT_VERTEX_EXT             0x87E2\n#define GL_MVP_MATRIX_EXT                 0x87E3\n#define GL_VARIANT_VALUE_EXT              0x87E4\n#define GL_VARIANT_DATATYPE_EXT           0x87E5\n#define GL_VARIANT_ARRAY_STRIDE_EXT       0x87E6\n#define GL_VARIANT_ARRAY_TYPE_EXT         0x87E7\n#define GL_VARIANT_ARRAY_EXT              0x87E8\n#define GL_VARIANT_ARRAY_POINTER_EXT      0x87E9\n#define GL_INVARIANT_VALUE_EXT            0x87EA\n#define GL_INVARIANT_DATATYPE_EXT         0x87EB\n#define GL_LOCAL_CONSTANT_VALUE_EXT       0x87EC\n#define GL_LOCAL_CONSTANT_DATATYPE_EXT    0x87ED\ntypedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);\ntypedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);\ntypedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id);\ntypedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range);\ntypedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1);\ntypedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2);\ntypedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);\ntypedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);\ntypedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);\ntypedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);\ntypedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num);\ntypedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);\ntypedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const void *addr);\ntypedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const void *addr);\ntypedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr);\ntypedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr);\ntypedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr);\ntypedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr);\ntypedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr);\ntypedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr);\ntypedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr);\ntypedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr);\ntypedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const void *addr);\ntypedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id);\ntypedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value);\ntypedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value);\ntypedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value);\ntypedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value);\ntypedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value);\ntypedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap);\ntypedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);\ntypedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);\ntypedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);\ntypedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, void **data);\ntypedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);\ntypedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);\ntypedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);\ntypedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data);\ntypedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data);\ntypedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginVertexShaderEXT (void);\nGLAPI void APIENTRY glEndVertexShaderEXT (void);\nGLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);\nGLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);\nGLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);\nGLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);\nGLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);\nGLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);\nGLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);\nGLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);\nGLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);\nGLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);\nGLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);\nGLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const void *addr);\nGLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const void *addr);\nGLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);\nGLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);\nGLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);\nGLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);\nGLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);\nGLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);\nGLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);\nGLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);\nGLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const void *addr);\nGLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);\nGLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);\nGLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);\nGLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);\nGLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);\nGLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);\nGLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);\nGLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);\nGLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);\nGLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);\nGLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);\nGLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, void **data);\nGLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);\nGLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);\nGLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);\nGLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);\nGLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);\nGLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);\n#endif\n#endif /* GL_EXT_vertex_shader */\n\n#ifndef GL_EXT_vertex_weighting\n#define GL_EXT_vertex_weighting 1\n#define GL_MODELVIEW0_STACK_DEPTH_EXT     0x0BA3\n#define GL_MODELVIEW1_STACK_DEPTH_EXT     0x8502\n#define GL_MODELVIEW0_MATRIX_EXT          0x0BA6\n#define GL_MODELVIEW1_MATRIX_EXT          0x8506\n#define GL_VERTEX_WEIGHTING_EXT           0x8509\n#define GL_MODELVIEW0_EXT                 0x1700\n#define GL_MODELVIEW1_EXT                 0x850A\n#define GL_CURRENT_VERTEX_WEIGHT_EXT      0x850B\n#define GL_VERTEX_WEIGHT_ARRAY_EXT        0x850C\n#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT   0x850D\n#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT   0x850E\n#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F\n#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510\ntypedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);\ntypedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);\ntypedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);\nGLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);\nGLAPI void APIENTRY glVertexWeightPointerEXT (GLint size, GLenum type, GLsizei stride, const void *pointer);\n#endif\n#endif /* GL_EXT_vertex_weighting */\n\n#ifndef GL_EXT_win32_keyed_mutex\n#define GL_EXT_win32_keyed_mutex 1\ntypedef GLboolean (APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);\ntypedef GLboolean (APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLboolean APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout);\nGLAPI GLboolean APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key);\n#endif\n#endif /* GL_EXT_win32_keyed_mutex */\n\n#ifndef GL_EXT_window_rectangles\n#define GL_EXT_window_rectangles 1\n#define GL_INCLUSIVE_EXT                  0x8F10\n#define GL_EXCLUSIVE_EXT                  0x8F11\n#define GL_WINDOW_RECTANGLE_EXT           0x8F12\n#define GL_WINDOW_RECTANGLE_MODE_EXT      0x8F13\n#define GL_MAX_WINDOW_RECTANGLES_EXT      0x8F14\n#define GL_NUM_WINDOW_RECTANGLES_EXT      0x8F15\ntypedef void (APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);\n#endif\n#endif /* GL_EXT_window_rectangles */\n\n#ifndef GL_EXT_x11_sync_object\n#define GL_EXT_x11_sync_object 1\n#define GL_SYNC_X11_FENCE_EXT             0x90E1\ntypedef GLsync (APIENTRYP PFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLsync APIENTRY glImportSyncEXT (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags);\n#endif\n#endif /* GL_EXT_x11_sync_object */\n\n#ifndef GL_GREMEDY_frame_terminator\n#define GL_GREMEDY_frame_terminator 1\ntypedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFrameTerminatorGREMEDY (void);\n#endif\n#endif /* GL_GREMEDY_frame_terminator */\n\n#ifndef GL_GREMEDY_string_marker\n#define GL_GREMEDY_string_marker 1\ntypedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const void *string);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const void *string);\n#endif\n#endif /* GL_GREMEDY_string_marker */\n\n#ifndef GL_HP_convolution_border_modes\n#define GL_HP_convolution_border_modes 1\n#define GL_IGNORE_BORDER_HP               0x8150\n#define GL_CONSTANT_BORDER_HP             0x8151\n#define GL_REPLICATE_BORDER_HP            0x8153\n#define GL_CONVOLUTION_BORDER_COLOR_HP    0x8154\n#endif /* GL_HP_convolution_border_modes */\n\n#ifndef GL_HP_image_transform\n#define GL_HP_image_transform 1\n#define GL_IMAGE_SCALE_X_HP               0x8155\n#define GL_IMAGE_SCALE_Y_HP               0x8156\n#define GL_IMAGE_TRANSLATE_X_HP           0x8157\n#define GL_IMAGE_TRANSLATE_Y_HP           0x8158\n#define GL_IMAGE_ROTATE_ANGLE_HP          0x8159\n#define GL_IMAGE_ROTATE_ORIGIN_X_HP       0x815A\n#define GL_IMAGE_ROTATE_ORIGIN_Y_HP       0x815B\n#define GL_IMAGE_MAG_FILTER_HP            0x815C\n#define GL_IMAGE_MIN_FILTER_HP            0x815D\n#define GL_IMAGE_CUBIC_WEIGHT_HP          0x815E\n#define GL_CUBIC_HP                       0x815F\n#define GL_AVERAGE_HP                     0x8160\n#define GL_IMAGE_TRANSFORM_2D_HP          0x8161\n#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162\n#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163\ntypedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_HP_image_transform */\n\n#ifndef GL_HP_occlusion_test\n#define GL_HP_occlusion_test 1\n#define GL_OCCLUSION_TEST_HP              0x8165\n#define GL_OCCLUSION_TEST_RESULT_HP       0x8166\n#endif /* GL_HP_occlusion_test */\n\n#ifndef GL_HP_texture_lighting\n#define GL_HP_texture_lighting 1\n#define GL_TEXTURE_LIGHTING_MODE_HP       0x8167\n#define GL_TEXTURE_POST_SPECULAR_HP       0x8168\n#define GL_TEXTURE_PRE_SPECULAR_HP        0x8169\n#endif /* GL_HP_texture_lighting */\n\n#ifndef GL_IBM_cull_vertex\n#define GL_IBM_cull_vertex 1\n#define GL_CULL_VERTEX_IBM                103050\n#endif /* GL_IBM_cull_vertex */\n\n#ifndef GL_IBM_multimode_draw_arrays\n#define GL_IBM_multimode_draw_arrays 1\ntypedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);\ntypedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);\nGLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount, GLint modestride);\n#endif\n#endif /* GL_IBM_multimode_draw_arrays */\n\n#ifndef GL_IBM_rasterpos_clip\n#define GL_IBM_rasterpos_clip 1\n#define GL_RASTER_POSITION_UNCLIPPED_IBM  0x19262\n#endif /* GL_IBM_rasterpos_clip */\n\n#ifndef GL_IBM_static_data\n#define GL_IBM_static_data 1\n#define GL_ALL_STATIC_DATA_IBM            103060\n#define GL_STATIC_VERTEX_ARRAY_IBM        103061\ntypedef void (APIENTRYP PFNGLFLUSHSTATICDATAIBMPROC) (GLenum target);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFlushStaticDataIBM (GLenum target);\n#endif\n#endif /* GL_IBM_static_data */\n\n#ifndef GL_IBM_texture_mirrored_repeat\n#define GL_IBM_texture_mirrored_repeat 1\n#define GL_MIRRORED_REPEAT_IBM            0x8370\n#endif /* GL_IBM_texture_mirrored_repeat */\n\n#ifndef GL_IBM_vertex_array_lists\n#define GL_IBM_vertex_array_lists 1\n#define GL_VERTEX_ARRAY_LIST_IBM          103070\n#define GL_NORMAL_ARRAY_LIST_IBM          103071\n#define GL_COLOR_ARRAY_LIST_IBM           103072\n#define GL_INDEX_ARRAY_LIST_IBM           103073\n#define GL_TEXTURE_COORD_ARRAY_LIST_IBM   103074\n#define GL_EDGE_FLAG_ARRAY_LIST_IBM       103075\n#define GL_FOG_COORDINATE_ARRAY_LIST_IBM  103076\n#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077\n#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM   103080\n#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM   103081\n#define GL_COLOR_ARRAY_LIST_STRIDE_IBM    103082\n#define GL_INDEX_ARRAY_LIST_STRIDE_IBM    103083\n#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084\n#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085\n#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086\n#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087\ntypedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\ntypedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean **pointer, GLint ptrstride);\nGLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\nGLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const void **pointer, GLint ptrstride);\n#endif\n#endif /* GL_IBM_vertex_array_lists */\n\n#ifndef GL_INGR_blend_func_separate\n#define GL_INGR_blend_func_separate 1\ntypedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\n#endif\n#endif /* GL_INGR_blend_func_separate */\n\n#ifndef GL_INGR_color_clamp\n#define GL_INGR_color_clamp 1\n#define GL_RED_MIN_CLAMP_INGR             0x8560\n#define GL_GREEN_MIN_CLAMP_INGR           0x8561\n#define GL_BLUE_MIN_CLAMP_INGR            0x8562\n#define GL_ALPHA_MIN_CLAMP_INGR           0x8563\n#define GL_RED_MAX_CLAMP_INGR             0x8564\n#define GL_GREEN_MAX_CLAMP_INGR           0x8565\n#define GL_BLUE_MAX_CLAMP_INGR            0x8566\n#define GL_ALPHA_MAX_CLAMP_INGR           0x8567\n#endif /* GL_INGR_color_clamp */\n\n#ifndef GL_INGR_interlace_read\n#define GL_INGR_interlace_read 1\n#define GL_INTERLACE_READ_INGR            0x8568\n#endif /* GL_INGR_interlace_read */\n\n#ifndef GL_INTEL_blackhole_render\n#define GL_INTEL_blackhole_render 1\n#define GL_BLACKHOLE_RENDER_INTEL         0x83FC\n#endif /* GL_INTEL_blackhole_render */\n\n#ifndef GL_INTEL_conservative_rasterization\n#define GL_INTEL_conservative_rasterization 1\n#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE\n#endif /* GL_INTEL_conservative_rasterization */\n\n#ifndef GL_INTEL_fragment_shader_ordering\n#define GL_INTEL_fragment_shader_ordering 1\n#endif /* GL_INTEL_fragment_shader_ordering */\n\n#ifndef GL_INTEL_framebuffer_CMAA\n#define GL_INTEL_framebuffer_CMAA 1\ntypedef void (APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);\n#endif\n#endif /* GL_INTEL_framebuffer_CMAA */\n\n#ifndef GL_INTEL_map_texture\n#define GL_INTEL_map_texture 1\n#define GL_TEXTURE_MEMORY_LAYOUT_INTEL    0x83FF\n#define GL_LAYOUT_DEFAULT_INTEL           0\n#define GL_LAYOUT_LINEAR_INTEL            1\n#define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL 2\ntypedef void (APIENTRYP PFNGLSYNCTEXTUREINTELPROC) (GLuint texture);\ntypedef void (APIENTRYP PFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level);\ntypedef void *(APIENTRYP PFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSyncTextureINTEL (GLuint texture);\nGLAPI void APIENTRY glUnmapTexture2DINTEL (GLuint texture, GLint level);\nGLAPI void *APIENTRY glMapTexture2DINTEL (GLuint texture, GLint level, GLbitfield access, GLint *stride, GLenum *layout);\n#endif\n#endif /* GL_INTEL_map_texture */\n\n#ifndef GL_INTEL_parallel_arrays\n#define GL_INTEL_parallel_arrays 1\n#define GL_PARALLEL_ARRAYS_INTEL          0x83F4\n#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5\n#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6\n#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7\n#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8\ntypedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);\ntypedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const void **pointer);\ntypedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);\ntypedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const void **pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const void **pointer);\nGLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const void **pointer);\nGLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const void **pointer);\nGLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void **pointer);\n#endif\n#endif /* GL_INTEL_parallel_arrays */\n\n#ifndef GL_INTEL_performance_query\n#define GL_INTEL_performance_query 1\n#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000\n#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001\n#define GL_PERFQUERY_WAIT_INTEL           0x83FB\n#define GL_PERFQUERY_FLUSH_INTEL          0x83FA\n#define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9\n#define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0\n#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1\n#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2\n#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3\n#define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4\n#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5\n#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8\n#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9\n#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA\n#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB\n#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC\n#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD\n#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE\n#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF\n#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500\ntypedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);\ntypedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);\ntypedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);\ntypedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);\ntypedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);\ntypedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);\ntypedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);\nGLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);\nGLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);\nGLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);\nGLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);\nGLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);\nGLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);\nGLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);\nGLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);\nGLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);\n#endif\n#endif /* GL_INTEL_performance_query */\n\n#ifndef GL_MESAX_texture_stack\n#define GL_MESAX_texture_stack 1\n#define GL_TEXTURE_1D_STACK_MESAX         0x8759\n#define GL_TEXTURE_2D_STACK_MESAX         0x875A\n#define GL_PROXY_TEXTURE_1D_STACK_MESAX   0x875B\n#define GL_PROXY_TEXTURE_2D_STACK_MESAX   0x875C\n#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D\n#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E\n#endif /* GL_MESAX_texture_stack */\n\n#ifndef GL_MESA_framebuffer_flip_x\n#define GL_MESA_framebuffer_flip_x 1\n#define GL_FRAMEBUFFER_FLIP_X_MESA        0x8BBC\n#endif /* GL_MESA_framebuffer_flip_x */\n\n#ifndef GL_MESA_framebuffer_flip_y\n#define GL_MESA_framebuffer_flip_y 1\n#define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);\nGLAPI void APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);\n#endif\n#endif /* GL_MESA_framebuffer_flip_y */\n\n#ifndef GL_MESA_framebuffer_swap_xy\n#define GL_MESA_framebuffer_swap_xy 1\n#define GL_FRAMEBUFFER_SWAP_XY_MESA       0x8BBD\n#endif /* GL_MESA_framebuffer_swap_xy */\n\n#ifndef GL_MESA_pack_invert\n#define GL_MESA_pack_invert 1\n#define GL_PACK_INVERT_MESA               0x8758\n#endif /* GL_MESA_pack_invert */\n\n#ifndef GL_MESA_program_binary_formats\n#define GL_MESA_program_binary_formats 1\n#define GL_PROGRAM_BINARY_FORMAT_MESA     0x875F\n#endif /* GL_MESA_program_binary_formats */\n\n#ifndef GL_MESA_resize_buffers\n#define GL_MESA_resize_buffers 1\ntypedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glResizeBuffersMESA (void);\n#endif\n#endif /* GL_MESA_resize_buffers */\n\n#ifndef GL_MESA_shader_integer_functions\n#define GL_MESA_shader_integer_functions 1\n#endif /* GL_MESA_shader_integer_functions */\n\n#ifndef GL_MESA_tile_raster_order\n#define GL_MESA_tile_raster_order 1\n#define GL_TILE_RASTER_ORDER_FIXED_MESA   0x8BB8\n#define GL_TILE_RASTER_ORDER_INCREASING_X_MESA 0x8BB9\n#define GL_TILE_RASTER_ORDER_INCREASING_Y_MESA 0x8BBA\n#endif /* GL_MESA_tile_raster_order */\n\n#ifndef GL_MESA_window_pos\n#define GL_MESA_window_pos 1\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w);\ntypedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);\nGLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);\nGLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);\nGLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);\nGLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);\nGLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);\nGLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);\nGLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);\nGLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);\nGLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);\nGLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);\nGLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);\nGLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);\n#endif\n#endif /* GL_MESA_window_pos */\n\n#ifndef GL_MESA_ycbcr_texture\n#define GL_MESA_ycbcr_texture 1\n#define GL_UNSIGNED_SHORT_8_8_MESA        0x85BA\n#define GL_UNSIGNED_SHORT_8_8_REV_MESA    0x85BB\n#define GL_YCBCR_MESA                     0x8757\n#endif /* GL_MESA_ycbcr_texture */\n\n#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers\n#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1\n#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */\n\n#ifndef GL_NVX_conditional_render\n#define GL_NVX_conditional_render 1\ntypedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVXPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginConditionalRenderNVX (GLuint id);\nGLAPI void APIENTRY glEndConditionalRenderNVX (void);\n#endif\n#endif /* GL_NVX_conditional_render */\n\n#ifndef GL_NVX_gpu_memory_info\n#define GL_NVX_gpu_memory_info 1\n#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047\n#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048\n#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049\n#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A\n#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B\n#endif /* GL_NVX_gpu_memory_info */\n\n#ifndef GL_NVX_gpu_multicast2\n#define GL_NVX_gpu_multicast2 1\n#define GL_UPLOAD_GPU_MASK_NVX            0x954A\ntypedef void (APIENTRYP PFNGLUPLOADGPUMASKNVXPROC) (GLbitfield mask);\ntypedef void (APIENTRYP PFNGLMULTICASTVIEWPORTARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTICASTVIEWPORTPOSITIONWSCALENVXPROC) (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);\ntypedef void (APIENTRYP PFNGLMULTICASTSCISSORARRAYVNVXPROC) (GLuint gpu, GLuint first, GLsizei count, const GLint *v);\ntypedef GLuint (APIENTRYP PFNGLASYNCCOPYBUFFERSUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);\ntypedef GLuint (APIENTRYP PFNGLASYNCCOPYIMAGESUBDATANVXPROC) (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glUploadGpuMaskNVX (GLbitfield mask);\nGLAPI void APIENTRY glMulticastViewportArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glMulticastViewportPositionWScaleNVX (GLuint gpu, GLuint index, GLfloat xcoeff, GLfloat ycoeff);\nGLAPI void APIENTRY glMulticastScissorArrayvNVX (GLuint gpu, GLuint first, GLsizei count, const GLint *v);\nGLAPI GLuint APIENTRY glAsyncCopyBufferSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *fenceValueArray, GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);\nGLAPI GLuint APIENTRY glAsyncCopyImageSubDataNVX (GLsizei waitSemaphoreCount, const GLuint *waitSemaphoreArray, const GLuint64 *waitValueArray, GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth, GLsizei signalSemaphoreCount, const GLuint *signalSemaphoreArray, const GLuint64 *signalValueArray);\n#endif\n#endif /* GL_NVX_gpu_multicast2 */\n\n#ifndef GL_NVX_linked_gpu_multicast\n#define GL_NVX_linked_gpu_multicast 1\n#define GL_LGPU_SEPARATE_STORAGE_BIT_NVX  0x0800\n#define GL_MAX_LGPU_GPUS_NVX              0x92BA\ntypedef void (APIENTRYP PFNGLLGPUNAMEDBUFFERSUBDATANVXPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef void (APIENTRYP PFNGLLGPUCOPYIMAGESUBDATANVXPROC) (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (APIENTRYP PFNGLLGPUINTERLOCKNVXPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glLGPUNamedBufferSubDataNVX (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI void APIENTRY glLGPUCopyImageSubDataNVX (GLuint sourceGpu, GLbitfield destinationGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srxY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);\nGLAPI void APIENTRY glLGPUInterlockNVX (void);\n#endif\n#endif /* GL_NVX_linked_gpu_multicast */\n\n#ifndef GL_NVX_progress_fence\n#define GL_NVX_progress_fence 1\ntypedef GLuint (APIENTRYP PFNGLCREATEPROGRESSFENCENVXPROC) (void);\ntypedef void (APIENTRYP PFNGLSIGNALSEMAPHOREUI64NVXPROC) (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\ntypedef void (APIENTRYP PFNGLWAITSEMAPHOREUI64NVXPROC) (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\ntypedef void (APIENTRYP PFNGLCLIENTWAITSEMAPHOREUI64NVXPROC) (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint APIENTRY glCreateProgressFenceNVX (void);\nGLAPI void APIENTRY glSignalSemaphoreui64NVX (GLuint signalGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\nGLAPI void APIENTRY glWaitSemaphoreui64NVX (GLuint waitGpu, GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\nGLAPI void APIENTRY glClientWaitSemaphoreui64NVX (GLsizei fenceObjectCount, const GLuint *semaphoreArray, const GLuint64 *fenceValueArray);\n#endif\n#endif /* GL_NVX_progress_fence */\n\n#ifndef GL_NV_alpha_to_coverage_dither_control\n#define GL_NV_alpha_to_coverage_dither_control 1\n#define GL_ALPHA_TO_COVERAGE_DITHER_DEFAULT_NV 0x934D\n#define GL_ALPHA_TO_COVERAGE_DITHER_ENABLE_NV 0x934E\n#define GL_ALPHA_TO_COVERAGE_DITHER_DISABLE_NV 0x934F\n#define GL_ALPHA_TO_COVERAGE_DITHER_MODE_NV 0x92BF\ntypedef void (APIENTRYP PFNGLALPHATOCOVERAGEDITHERCONTROLNVPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glAlphaToCoverageDitherControlNV (GLenum mode);\n#endif\n#endif /* GL_NV_alpha_to_coverage_dither_control */\n\n#ifndef GL_NV_bindless_multi_draw_indirect\n#define GL_NV_bindless_multi_draw_indirect 1\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiDrawArraysIndirectBindlessNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);\nGLAPI void APIENTRY glMultiDrawElementsIndirectBindlessNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount);\n#endif\n#endif /* GL_NV_bindless_multi_draw_indirect */\n\n#ifndef GL_NV_bindless_multi_draw_indirect_count\n#define GL_NV_bindless_multi_draw_indirect_count 1\ntypedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);\ntypedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTBINDLESSCOUNTNVPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMultiDrawArraysIndirectBindlessCountNV (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);\nGLAPI void APIENTRY glMultiDrawElementsIndirectBindlessCountNV (GLenum mode, GLenum type, const void *indirect, GLsizei drawCount, GLsizei maxDrawCount, GLsizei stride, GLint vertexBufferCount);\n#endif\n#endif /* GL_NV_bindless_multi_draw_indirect_count */\n\n#ifndef GL_NV_bindless_texture\n#define GL_NV_bindless_texture 1\ntypedef GLuint64 (APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);\ntypedef GLuint64 (APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);\ntypedef void (APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);\ntypedef void (APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);\ntypedef GLuint64 (APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\ntypedef void (APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);\ntypedef void (APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);\ntypedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);\ntypedef void (APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\ntypedef GLboolean (APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);\ntypedef GLboolean (APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint64 APIENTRY glGetTextureHandleNV (GLuint texture);\nGLAPI GLuint64 APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);\nGLAPI void APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);\nGLAPI void APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);\nGLAPI GLuint64 APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\nGLAPI void APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);\nGLAPI void APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);\nGLAPI void APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);\nGLAPI void APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);\nGLAPI void APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);\nGLAPI void APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\nGLAPI GLboolean APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);\nGLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle);\n#endif\n#endif /* GL_NV_bindless_texture */\n\n#ifndef GL_NV_blend_equation_advanced\n#define GL_NV_blend_equation_advanced 1\n#define GL_BLEND_OVERLAP_NV               0x9281\n#define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280\n#define GL_BLUE_NV                        0x1905\n#define GL_COLORBURN_NV                   0x929A\n#define GL_COLORDODGE_NV                  0x9299\n#define GL_CONJOINT_NV                    0x9284\n#define GL_CONTRAST_NV                    0x92A1\n#define GL_DARKEN_NV                      0x9297\n#define GL_DIFFERENCE_NV                  0x929E\n#define GL_DISJOINT_NV                    0x9283\n#define GL_DST_ATOP_NV                    0x928F\n#define GL_DST_IN_NV                      0x928B\n#define GL_DST_NV                         0x9287\n#define GL_DST_OUT_NV                     0x928D\n#define GL_DST_OVER_NV                    0x9289\n#define GL_EXCLUSION_NV                   0x92A0\n#define GL_GREEN_NV                       0x1904\n#define GL_HARDLIGHT_NV                   0x929B\n#define GL_HARDMIX_NV                     0x92A9\n#define GL_HSL_COLOR_NV                   0x92AF\n#define GL_HSL_HUE_NV                     0x92AD\n#define GL_HSL_LUMINOSITY_NV              0x92B0\n#define GL_HSL_SATURATION_NV              0x92AE\n#define GL_INVERT_OVG_NV                  0x92B4\n#define GL_INVERT_RGB_NV                  0x92A3\n#define GL_LIGHTEN_NV                     0x9298\n#define GL_LINEARBURN_NV                  0x92A5\n#define GL_LINEARDODGE_NV                 0x92A4\n#define GL_LINEARLIGHT_NV                 0x92A7\n#define GL_MINUS_CLAMPED_NV               0x92B3\n#define GL_MINUS_NV                       0x929F\n#define GL_MULTIPLY_NV                    0x9294\n#define GL_OVERLAY_NV                     0x9296\n#define GL_PINLIGHT_NV                    0x92A8\n#define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2\n#define GL_PLUS_CLAMPED_NV                0x92B1\n#define GL_PLUS_DARKER_NV                 0x9292\n#define GL_PLUS_NV                        0x9291\n#define GL_RED_NV                         0x1903\n#define GL_SCREEN_NV                      0x9295\n#define GL_SOFTLIGHT_NV                   0x929C\n#define GL_SRC_ATOP_NV                    0x928E\n#define GL_SRC_IN_NV                      0x928A\n#define GL_SRC_NV                         0x9286\n#define GL_SRC_OUT_NV                     0x928C\n#define GL_SRC_OVER_NV                    0x9288\n#define GL_UNCORRELATED_NV                0x9282\n#define GL_VIVIDLIGHT_NV                  0x92A6\n#define GL_XOR_NV                         0x1506\ntypedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);\ntypedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBlendParameteriNV (GLenum pname, GLint value);\nGLAPI void APIENTRY glBlendBarrierNV (void);\n#endif\n#endif /* GL_NV_blend_equation_advanced */\n\n#ifndef GL_NV_blend_equation_advanced_coherent\n#define GL_NV_blend_equation_advanced_coherent 1\n#define GL_BLEND_ADVANCED_COHERENT_NV     0x9285\n#endif /* GL_NV_blend_equation_advanced_coherent */\n\n#ifndef GL_NV_blend_minmax_factor\n#define GL_NV_blend_minmax_factor 1\n#endif /* GL_NV_blend_minmax_factor */\n\n#ifndef GL_NV_blend_square\n#define GL_NV_blend_square 1\n#endif /* GL_NV_blend_square */\n\n#ifndef GL_NV_clip_space_w_scaling\n#define GL_NV_clip_space_w_scaling 1\n#define GL_VIEWPORT_POSITION_W_SCALE_NV   0x937C\n#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D\n#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E\ntypedef void (APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);\n#endif\n#endif /* GL_NV_clip_space_w_scaling */\n\n#ifndef GL_NV_command_list\n#define GL_NV_command_list 1\n#define GL_TERMINATE_SEQUENCE_COMMAND_NV  0x0000\n#define GL_NOP_COMMAND_NV                 0x0001\n#define GL_DRAW_ELEMENTS_COMMAND_NV       0x0002\n#define GL_DRAW_ARRAYS_COMMAND_NV         0x0003\n#define GL_DRAW_ELEMENTS_STRIP_COMMAND_NV 0x0004\n#define GL_DRAW_ARRAYS_STRIP_COMMAND_NV   0x0005\n#define GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV 0x0006\n#define GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV 0x0007\n#define GL_ELEMENT_ADDRESS_COMMAND_NV     0x0008\n#define GL_ATTRIBUTE_ADDRESS_COMMAND_NV   0x0009\n#define GL_UNIFORM_ADDRESS_COMMAND_NV     0x000A\n#define GL_BLEND_COLOR_COMMAND_NV         0x000B\n#define GL_STENCIL_REF_COMMAND_NV         0x000C\n#define GL_LINE_WIDTH_COMMAND_NV          0x000D\n#define GL_POLYGON_OFFSET_COMMAND_NV      0x000E\n#define GL_ALPHA_REF_COMMAND_NV           0x000F\n#define GL_VIEWPORT_COMMAND_NV            0x0010\n#define GL_SCISSOR_COMMAND_NV             0x0011\n#define GL_FRONT_FACE_COMMAND_NV          0x0012\ntypedef void (APIENTRYP PFNGLCREATESTATESNVPROC) (GLsizei n, GLuint *states);\ntypedef void (APIENTRYP PFNGLDELETESTATESNVPROC) (GLsizei n, const GLuint *states);\ntypedef GLboolean (APIENTRYP PFNGLISSTATENVPROC) (GLuint state);\ntypedef void (APIENTRYP PFNGLSTATECAPTURENVPROC) (GLuint state, GLenum mode);\ntypedef GLuint (APIENTRYP PFNGLGETCOMMANDHEADERNVPROC) (GLenum tokenID, GLuint size);\ntypedef GLushort (APIENTRYP PFNGLGETSTAGEINDEXNVPROC) (GLenum shadertype);\ntypedef void (APIENTRYP PFNGLDRAWCOMMANDSNVPROC) (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);\ntypedef void (APIENTRYP PFNGLDRAWCOMMANDSADDRESSNVPROC) (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);\ntypedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESNVPROC) (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\ntypedef void (APIENTRYP PFNGLDRAWCOMMANDSSTATESADDRESSNVPROC) (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\ntypedef void (APIENTRYP PFNGLCREATECOMMANDLISTSNVPROC) (GLsizei n, GLuint *lists);\ntypedef void (APIENTRYP PFNGLDELETECOMMANDLISTSNVPROC) (GLsizei n, const GLuint *lists);\ntypedef GLboolean (APIENTRYP PFNGLISCOMMANDLISTNVPROC) (GLuint list);\ntypedef void (APIENTRYP PFNGLLISTDRAWCOMMANDSSTATESCLIENTNVPROC) (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\ntypedef void (APIENTRYP PFNGLCOMMANDLISTSEGMENTSNVPROC) (GLuint list, GLuint segments);\ntypedef void (APIENTRYP PFNGLCOMPILECOMMANDLISTNVPROC) (GLuint list);\ntypedef void (APIENTRYP PFNGLCALLCOMMANDLISTNVPROC) (GLuint list);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCreateStatesNV (GLsizei n, GLuint *states);\nGLAPI void APIENTRY glDeleteStatesNV (GLsizei n, const GLuint *states);\nGLAPI GLboolean APIENTRY glIsStateNV (GLuint state);\nGLAPI void APIENTRY glStateCaptureNV (GLuint state, GLenum mode);\nGLAPI GLuint APIENTRY glGetCommandHeaderNV (GLenum tokenID, GLuint size);\nGLAPI GLushort APIENTRY glGetStageIndexNV (GLenum shadertype);\nGLAPI void APIENTRY glDrawCommandsNV (GLenum primitiveMode, GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, GLuint count);\nGLAPI void APIENTRY glDrawCommandsAddressNV (GLenum primitiveMode, const GLuint64 *indirects, const GLsizei *sizes, GLuint count);\nGLAPI void APIENTRY glDrawCommandsStatesNV (GLuint buffer, const GLintptr *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\nGLAPI void APIENTRY glDrawCommandsStatesAddressNV (const GLuint64 *indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\nGLAPI void APIENTRY glCreateCommandListsNV (GLsizei n, GLuint *lists);\nGLAPI void APIENTRY glDeleteCommandListsNV (GLsizei n, const GLuint *lists);\nGLAPI GLboolean APIENTRY glIsCommandListNV (GLuint list);\nGLAPI void APIENTRY glListDrawCommandsStatesClientNV (GLuint list, GLuint segment, const void **indirects, const GLsizei *sizes, const GLuint *states, const GLuint *fbos, GLuint count);\nGLAPI void APIENTRY glCommandListSegmentsNV (GLuint list, GLuint segments);\nGLAPI void APIENTRY glCompileCommandListNV (GLuint list);\nGLAPI void APIENTRY glCallCommandListNV (GLuint list);\n#endif\n#endif /* GL_NV_command_list */\n\n#ifndef GL_NV_compute_program5\n#define GL_NV_compute_program5 1\n#define GL_COMPUTE_PROGRAM_NV             0x90FB\n#define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC\n#endif /* GL_NV_compute_program5 */\n\n#ifndef GL_NV_compute_shader_derivatives\n#define GL_NV_compute_shader_derivatives 1\n#endif /* GL_NV_compute_shader_derivatives */\n\n#ifndef GL_NV_conditional_render\n#define GL_NV_conditional_render 1\n#define GL_QUERY_WAIT_NV                  0x8E13\n#define GL_QUERY_NO_WAIT_NV               0x8E14\n#define GL_QUERY_BY_REGION_WAIT_NV        0x8E15\n#define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16\ntypedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);\ntypedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);\nGLAPI void APIENTRY glEndConditionalRenderNV (void);\n#endif\n#endif /* GL_NV_conditional_render */\n\n#ifndef GL_NV_conservative_raster\n#define GL_NV_conservative_raster 1\n#define GL_CONSERVATIVE_RASTERIZATION_NV  0x9346\n#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347\n#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348\n#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349\ntypedef void (APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);\n#endif\n#endif /* GL_NV_conservative_raster */\n\n#ifndef GL_NV_conservative_raster_dilate\n#define GL_NV_conservative_raster_dilate 1\n#define GL_CONSERVATIVE_RASTER_DILATE_NV  0x9379\n#define GL_CONSERVATIVE_RASTER_DILATE_RANGE_NV 0x937A\n#define GL_CONSERVATIVE_RASTER_DILATE_GRANULARITY_NV 0x937B\ntypedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERFNVPROC) (GLenum pname, GLfloat value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glConservativeRasterParameterfNV (GLenum pname, GLfloat value);\n#endif\n#endif /* GL_NV_conservative_raster_dilate */\n\n#ifndef GL_NV_conservative_raster_pre_snap\n#define GL_NV_conservative_raster_pre_snap 1\n#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550\n#endif /* GL_NV_conservative_raster_pre_snap */\n\n#ifndef GL_NV_conservative_raster_pre_snap_triangles\n#define GL_NV_conservative_raster_pre_snap_triangles 1\n#define GL_CONSERVATIVE_RASTER_MODE_NV    0x954D\n#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E\n#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F\ntypedef void (APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);\n#endif\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\n\n#ifndef GL_NV_conservative_raster_underestimation\n#define GL_NV_conservative_raster_underestimation 1\n#endif /* GL_NV_conservative_raster_underestimation */\n\n#ifndef GL_NV_copy_depth_to_color\n#define GL_NV_copy_depth_to_color 1\n#define GL_DEPTH_STENCIL_TO_RGBA_NV       0x886E\n#define GL_DEPTH_STENCIL_TO_BGRA_NV       0x886F\n#endif /* GL_NV_copy_depth_to_color */\n\n#ifndef GL_NV_copy_image\n#define GL_NV_copy_image 1\ntypedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);\n#endif\n#endif /* GL_NV_copy_image */\n\n#ifndef GL_NV_deep_texture3D\n#define GL_NV_deep_texture3D 1\n#define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0\n#define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV   0x90D1\n#endif /* GL_NV_deep_texture3D */\n\n#ifndef GL_NV_depth_buffer_float\n#define GL_NV_depth_buffer_float 1\n#define GL_DEPTH_COMPONENT32F_NV          0x8DAB\n#define GL_DEPTH32F_STENCIL8_NV           0x8DAC\n#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD\n#define GL_DEPTH_BUFFER_FLOAT_MODE_NV     0x8DAF\ntypedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);\ntypedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);\ntypedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);\nGLAPI void APIENTRY glClearDepthdNV (GLdouble depth);\nGLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);\n#endif\n#endif /* GL_NV_depth_buffer_float */\n\n#ifndef GL_NV_depth_clamp\n#define GL_NV_depth_clamp 1\n#define GL_DEPTH_CLAMP_NV                 0x864F\n#endif /* GL_NV_depth_clamp */\n\n#ifndef GL_NV_draw_texture\n#define GL_NV_draw_texture 1\ntypedef void (APIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawTextureNV (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\n#endif\n#endif /* GL_NV_draw_texture */\n\n#ifndef GL_NV_draw_vulkan_image\n#define GL_NV_draw_vulkan_image 1\ntypedef void (APIENTRY  *GLVULKANPROCNV)(void);\ntypedef void (APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\ntypedef GLVULKANPROCNV (APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);\ntypedef void (APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);\ntypedef void (APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);\ntypedef void (APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\nGLAPI GLVULKANPROCNV APIENTRY glGetVkProcAddrNV (const GLchar *name);\nGLAPI void APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);\nGLAPI void APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);\nGLAPI void APIENTRY glSignalVkFenceNV (GLuint64 vkFence);\n#endif\n#endif /* GL_NV_draw_vulkan_image */\n\n#ifndef GL_NV_evaluators\n#define GL_NV_evaluators 1\n#define GL_EVAL_2D_NV                     0x86C0\n#define GL_EVAL_TRIANGULAR_2D_NV          0x86C1\n#define GL_MAP_TESSELLATION_NV            0x86C2\n#define GL_MAP_ATTRIB_U_ORDER_NV          0x86C3\n#define GL_MAP_ATTRIB_V_ORDER_NV          0x86C4\n#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5\n#define GL_EVAL_VERTEX_ATTRIB0_NV         0x86C6\n#define GL_EVAL_VERTEX_ATTRIB1_NV         0x86C7\n#define GL_EVAL_VERTEX_ATTRIB2_NV         0x86C8\n#define GL_EVAL_VERTEX_ATTRIB3_NV         0x86C9\n#define GL_EVAL_VERTEX_ATTRIB4_NV         0x86CA\n#define GL_EVAL_VERTEX_ATTRIB5_NV         0x86CB\n#define GL_EVAL_VERTEX_ATTRIB6_NV         0x86CC\n#define GL_EVAL_VERTEX_ATTRIB7_NV         0x86CD\n#define GL_EVAL_VERTEX_ATTRIB8_NV         0x86CE\n#define GL_EVAL_VERTEX_ATTRIB9_NV         0x86CF\n#define GL_EVAL_VERTEX_ATTRIB10_NV        0x86D0\n#define GL_EVAL_VERTEX_ATTRIB11_NV        0x86D1\n#define GL_EVAL_VERTEX_ATTRIB12_NV        0x86D2\n#define GL_EVAL_VERTEX_ATTRIB13_NV        0x86D3\n#define GL_EVAL_VERTEX_ATTRIB14_NV        0x86D4\n#define GL_EVAL_VERTEX_ATTRIB15_NV        0x86D5\n#define GL_MAX_MAP_TESSELLATION_NV        0x86D6\n#define GL_MAX_RATIONAL_EVAL_ORDER_NV     0x86D7\ntypedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);\ntypedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);\ntypedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const void *points);\nGLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, void *points);\nGLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);\n#endif\n#endif /* GL_NV_evaluators */\n\n#ifndef GL_NV_explicit_multisample\n#define GL_NV_explicit_multisample 1\n#define GL_SAMPLE_POSITION_NV             0x8E50\n#define GL_SAMPLE_MASK_NV                 0x8E51\n#define GL_SAMPLE_MASK_VALUE_NV           0x8E52\n#define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53\n#define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54\n#define GL_TEXTURE_RENDERBUFFER_NV        0x8E55\n#define GL_SAMPLER_RENDERBUFFER_NV        0x8E56\n#define GL_INT_SAMPLER_RENDERBUFFER_NV    0x8E57\n#define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58\n#define GL_MAX_SAMPLE_MASK_WORDS_NV       0x8E59\ntypedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);\ntypedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);\ntypedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);\nGLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);\nGLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);\n#endif\n#endif /* GL_NV_explicit_multisample */\n\n#ifndef GL_NV_fence\n#define GL_NV_fence 1\n#define GL_ALL_COMPLETED_NV               0x84F2\n#define GL_FENCE_STATUS_NV                0x84F3\n#define GL_FENCE_CONDITION_NV             0x84F4\ntypedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);\ntypedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);\ntypedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);\ntypedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);\ntypedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);\ntypedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);\nGLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);\nGLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);\nGLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);\nGLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);\nGLAPI void APIENTRY glFinishFenceNV (GLuint fence);\nGLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);\n#endif\n#endif /* GL_NV_fence */\n\n#ifndef GL_NV_fill_rectangle\n#define GL_NV_fill_rectangle 1\n#define GL_FILL_RECTANGLE_NV              0x933C\n#endif /* GL_NV_fill_rectangle */\n\n#ifndef GL_NV_float_buffer\n#define GL_NV_float_buffer 1\n#define GL_FLOAT_R_NV                     0x8880\n#define GL_FLOAT_RG_NV                    0x8881\n#define GL_FLOAT_RGB_NV                   0x8882\n#define GL_FLOAT_RGBA_NV                  0x8883\n#define GL_FLOAT_R16_NV                   0x8884\n#define GL_FLOAT_R32_NV                   0x8885\n#define GL_FLOAT_RG16_NV                  0x8886\n#define GL_FLOAT_RG32_NV                  0x8887\n#define GL_FLOAT_RGB16_NV                 0x8888\n#define GL_FLOAT_RGB32_NV                 0x8889\n#define GL_FLOAT_RGBA16_NV                0x888A\n#define GL_FLOAT_RGBA32_NV                0x888B\n#define GL_TEXTURE_FLOAT_COMPONENTS_NV    0x888C\n#define GL_FLOAT_CLEAR_COLOR_VALUE_NV     0x888D\n#define GL_FLOAT_RGBA_MODE_NV             0x888E\n#endif /* GL_NV_float_buffer */\n\n#ifndef GL_NV_fog_distance\n#define GL_NV_fog_distance 1\n#define GL_FOG_DISTANCE_MODE_NV           0x855A\n#define GL_EYE_RADIAL_NV                  0x855B\n#define GL_EYE_PLANE_ABSOLUTE_NV          0x855C\n#endif /* GL_NV_fog_distance */\n\n#ifndef GL_NV_fragment_coverage_to_color\n#define GL_NV_fragment_coverage_to_color 1\n#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV  0x92DD\n#define GL_FRAGMENT_COVERAGE_COLOR_NV     0x92DE\ntypedef void (APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFragmentCoverageColorNV (GLuint color);\n#endif\n#endif /* GL_NV_fragment_coverage_to_color */\n\n#ifndef GL_NV_fragment_program\n#define GL_NV_fragment_program 1\n#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868\n#define GL_FRAGMENT_PROGRAM_NV            0x8870\n#define GL_MAX_TEXTURE_COORDS_NV          0x8871\n#define GL_MAX_TEXTURE_IMAGE_UNITS_NV     0x8872\n#define GL_FRAGMENT_PROGRAM_BINDING_NV    0x8873\n#define GL_PROGRAM_ERROR_STRING_NV        0x8874\ntypedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);\nGLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);\nGLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);\nGLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);\n#endif\n#endif /* GL_NV_fragment_program */\n\n#ifndef GL_NV_fragment_program2\n#define GL_NV_fragment_program2 1\n#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4\n#define GL_MAX_PROGRAM_CALL_DEPTH_NV      0x88F5\n#define GL_MAX_PROGRAM_IF_DEPTH_NV        0x88F6\n#define GL_MAX_PROGRAM_LOOP_DEPTH_NV      0x88F7\n#define GL_MAX_PROGRAM_LOOP_COUNT_NV      0x88F8\n#endif /* GL_NV_fragment_program2 */\n\n#ifndef GL_NV_fragment_program4\n#define GL_NV_fragment_program4 1\n#endif /* GL_NV_fragment_program4 */\n\n#ifndef GL_NV_fragment_program_option\n#define GL_NV_fragment_program_option 1\n#endif /* GL_NV_fragment_program_option */\n\n#ifndef GL_NV_fragment_shader_barycentric\n#define GL_NV_fragment_shader_barycentric 1\n#endif /* GL_NV_fragment_shader_barycentric */\n\n#ifndef GL_NV_fragment_shader_interlock\n#define GL_NV_fragment_shader_interlock 1\n#endif /* GL_NV_fragment_shader_interlock */\n\n#ifndef GL_NV_framebuffer_mixed_samples\n#define GL_NV_framebuffer_mixed_samples 1\n#define GL_COVERAGE_MODULATION_TABLE_NV   0x9331\n#define GL_COLOR_SAMPLES_NV               0x8E20\n#define GL_DEPTH_SAMPLES_NV               0x932D\n#define GL_STENCIL_SAMPLES_NV             0x932E\n#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F\n#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330\n#define GL_COVERAGE_MODULATION_NV         0x9332\n#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333\ntypedef void (APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v);\ntypedef void (APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);\nGLAPI void APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v);\nGLAPI void APIENTRY glCoverageModulationNV (GLenum components);\n#endif\n#endif /* GL_NV_framebuffer_mixed_samples */\n\n#ifndef GL_NV_framebuffer_multisample_coverage\n#define GL_NV_framebuffer_multisample_coverage 1\n#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB\n#define GL_RENDERBUFFER_COLOR_SAMPLES_NV  0x8E10\n#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11\n#define GL_MULTISAMPLE_COVERAGE_MODES_NV  0x8E12\ntypedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_NV_framebuffer_multisample_coverage */\n\n#ifndef GL_NV_geometry_program4\n#define GL_NV_geometry_program4 1\n#define GL_GEOMETRY_PROGRAM_NV            0x8C26\n#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27\n#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28\ntypedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);\nGLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);\nGLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);\n#endif\n#endif /* GL_NV_geometry_program4 */\n\n#ifndef GL_NV_geometry_shader4\n#define GL_NV_geometry_shader4 1\n#endif /* GL_NV_geometry_shader4 */\n\n#ifndef GL_NV_geometry_shader_passthrough\n#define GL_NV_geometry_shader_passthrough 1\n#endif /* GL_NV_geometry_shader_passthrough */\n\n#ifndef GL_NV_gpu_multicast\n#define GL_NV_gpu_multicast 1\n#define GL_PER_GPU_STORAGE_BIT_NV         0x0800\n#define GL_MULTICAST_GPUS_NV              0x92BA\n#define GL_RENDER_GPU_MASK_NV             0x9558\n#define GL_PER_GPU_STORAGE_NV             0x9548\n#define GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9549\ntypedef void (APIENTRYP PFNGLRENDERGPUMASKNVPROC) (GLbitfield mask);\ntypedef void (APIENTRYP PFNGLMULTICASTBUFFERSUBDATANVPROC) (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef void (APIENTRYP PFNGLMULTICASTCOPYBUFFERSUBDATANVPROC) (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLMULTICASTCOPYIMAGESUBDATANVPROC) (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\ntypedef void (APIENTRYP PFNGLMULTICASTBLITFRAMEBUFFERNVPROC) (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\ntypedef void (APIENTRYP PFNGLMULTICASTFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLMULTICASTBARRIERNVPROC) (void);\ntypedef void (APIENTRYP PFNGLMULTICASTWAITSYNCNVPROC) (GLuint signalGpu, GLbitfield waitGpuMask);\ntypedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUIVNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLint64 *params);\ntypedef void (APIENTRYP PFNGLMULTICASTGETQUERYOBJECTUI64VNVPROC) (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glRenderGpuMaskNV (GLbitfield mask);\nGLAPI void APIENTRY glMulticastBufferSubDataNV (GLbitfield gpuMask, GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);\nGLAPI void APIENTRY glMulticastCopyBufferSubDataNV (GLuint readGpu, GLbitfield writeGpuMask, GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\nGLAPI void APIENTRY glMulticastCopyImageSubDataNV (GLuint srcGpu, GLbitfield dstGpuMask, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\nGLAPI void APIENTRY glMulticastBlitFramebufferNV (GLuint srcGpu, GLuint dstGpu, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\nGLAPI void APIENTRY glMulticastFramebufferSampleLocationsfvNV (GLuint gpu, GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glMulticastBarrierNV (void);\nGLAPI void APIENTRY glMulticastWaitSyncNV (GLuint signalGpu, GLbitfield waitGpuMask);\nGLAPI void APIENTRY glMulticastGetQueryObjectivNV (GLuint gpu, GLuint id, GLenum pname, GLint *params);\nGLAPI void APIENTRY glMulticastGetQueryObjectuivNV (GLuint gpu, GLuint id, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glMulticastGetQueryObjecti64vNV (GLuint gpu, GLuint id, GLenum pname, GLint64 *params);\nGLAPI void APIENTRY glMulticastGetQueryObjectui64vNV (GLuint gpu, GLuint id, GLenum pname, GLuint64 *params);\n#endif\n#endif /* GL_NV_gpu_multicast */\n\n#ifndef GL_NV_gpu_program4\n#define GL_NV_gpu_program4 1\n#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV    0x8904\n#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV    0x8905\n#define GL_PROGRAM_ATTRIB_COMPONENTS_NV   0x8906\n#define GL_PROGRAM_RESULT_COMPONENTS_NV   0x8907\n#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908\n#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909\n#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5\n#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);\nGLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);\nGLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);\nGLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);\nGLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);\nGLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);\nGLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);\nGLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);\nGLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);\nGLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);\nGLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);\nGLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);\nGLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);\nGLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);\n#endif\n#endif /* GL_NV_gpu_program4 */\n\n#ifndef GL_NV_gpu_program5\n#define GL_NV_gpu_program5 1\n#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A\n#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B\n#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C\n#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D\n#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E\n#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F\n#define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44\n#define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV  0x8F45\ntypedef void (APIENTRYP PFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint *param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramSubroutineParametersuivNV (GLenum target, GLsizei count, const GLuint *params);\nGLAPI void APIENTRY glGetProgramSubroutineParameteruivNV (GLenum target, GLuint index, GLuint *param);\n#endif\n#endif /* GL_NV_gpu_program5 */\n\n#ifndef GL_NV_gpu_program5_mem_extended\n#define GL_NV_gpu_program5_mem_extended 1\n#endif /* GL_NV_gpu_program5_mem_extended */\n\n#ifndef GL_NV_gpu_shader5\n#define GL_NV_gpu_shader5 1\n#endif /* GL_NV_gpu_shader5 */\n\n#ifndef GL_NV_half_float\n#define GL_NV_half_float 1\ntypedef unsigned short GLhalfNV;\n#define GL_HALF_FLOAT_NV                  0x140B\ntypedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);\ntypedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z);\ntypedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);\ntypedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);\ntypedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);\ntypedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);\ntypedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s);\ntypedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t);\ntypedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r);\ntypedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);\ntypedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);\ntypedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog);\ntypedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight);\ntypedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);\nGLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);\nGLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);\nGLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);\nGLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);\nGLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);\nGLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);\nGLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);\nGLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);\nGLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);\nGLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);\nGLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);\nGLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);\nGLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);\nGLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);\nGLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);\nGLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);\nGLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);\nGLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);\nGLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);\nGLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);\nGLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);\nGLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);\nGLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);\nGLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);\nGLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);\nGLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);\nGLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);\nGLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);\nGLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);\n#endif\n#endif /* GL_NV_half_float */\n\n#ifndef GL_NV_internalformat_sample_query\n#define GL_NV_internalformat_sample_query 1\n#define GL_MULTISAMPLES_NV                0x9371\n#define GL_SUPERSAMPLE_SCALE_X_NV         0x9372\n#define GL_SUPERSAMPLE_SCALE_Y_NV         0x9373\n#define GL_CONFORMANT_NV                  0x9374\ntypedef void (APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);\n#endif\n#endif /* GL_NV_internalformat_sample_query */\n\n#ifndef GL_NV_light_max_exponent\n#define GL_NV_light_max_exponent 1\n#define GL_MAX_SHININESS_NV               0x8504\n#define GL_MAX_SPOT_EXPONENT_NV           0x8505\n#endif /* GL_NV_light_max_exponent */\n\n#ifndef GL_NV_memory_attachment\n#define GL_NV_memory_attachment 1\n#define GL_ATTACHED_MEMORY_OBJECT_NV      0x95A4\n#define GL_ATTACHED_MEMORY_OFFSET_NV      0x95A5\n#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6\n#define GL_MEMORY_ATTACHABLE_SIZE_NV      0x95A7\n#define GL_MEMORY_ATTACHABLE_NV           0x95A8\n#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9\n#define GL_DETACHED_TEXTURES_NV           0x95AA\n#define GL_DETACHED_BUFFERS_NV            0x95AB\n#define GL_MAX_DETACHED_TEXTURES_NV       0x95AC\n#define GL_MAX_DETACHED_BUFFERS_NV        0x95AD\ntypedef void (APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);\ntypedef void (APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);\ntypedef void (APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);\nGLAPI void APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname);\nGLAPI void APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset);\nGLAPI void APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset);\n#endif\n#endif /* GL_NV_memory_attachment */\n\n#ifndef GL_NV_memory_object_sparse\n#define GL_NV_memory_object_sparse 1\ntypedef void (APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\ntypedef void (APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\ntypedef void (APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\ntypedef void (APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\nGLAPI void APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\nGLAPI void APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\nGLAPI void APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\n#endif\n#endif /* GL_NV_memory_object_sparse */\n\n#ifndef GL_NV_mesh_shader\n#define GL_NV_mesh_shader 1\n#define GL_MESH_SHADER_NV                 0x9559\n#define GL_TASK_SHADER_NV                 0x955A\n#define GL_MAX_MESH_UNIFORM_BLOCKS_NV     0x8E60\n#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61\n#define GL_MAX_MESH_IMAGE_UNIFORMS_NV     0x8E62\n#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63\n#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64\n#define GL_MAX_MESH_ATOMIC_COUNTERS_NV    0x8E65\n#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66\n#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67\n#define GL_MAX_TASK_UNIFORM_BLOCKS_NV     0x8E68\n#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69\n#define GL_MAX_TASK_IMAGE_UNIFORMS_NV     0x8E6A\n#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B\n#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C\n#define GL_MAX_TASK_ATOMIC_COUNTERS_NV    0x8E6D\n#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E\n#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F\n#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2\n#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3\n#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV  0x9536\n#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV  0x9537\n#define GL_MAX_MESH_OUTPUT_VERTICES_NV    0x9538\n#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV  0x9539\n#define GL_MAX_TASK_OUTPUT_COUNT_NV       0x953A\n#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV   0x953D\n#define GL_MAX_MESH_VIEWS_NV              0x9557\n#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF\n#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543\n#define GL_MAX_MESH_WORK_GROUP_SIZE_NV    0x953B\n#define GL_MAX_TASK_WORK_GROUP_SIZE_NV    0x953C\n#define GL_MESH_WORK_GROUP_SIZE_NV        0x953E\n#define GL_TASK_WORK_GROUP_SIZE_NV        0x953F\n#define GL_MESH_VERTICES_OUT_NV           0x9579\n#define GL_MESH_PRIMITIVES_OUT_NV         0x957A\n#define GL_MESH_OUTPUT_TYPE_NV            0x957B\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D\n#define GL_REFERENCED_BY_MESH_SHADER_NV   0x95A0\n#define GL_REFERENCED_BY_TASK_SHADER_NV   0x95A1\n#define GL_MESH_SHADER_BIT_NV             0x00000040\n#define GL_TASK_SHADER_BIT_NV             0x00000080\n#define GL_MESH_SUBROUTINE_NV             0x957C\n#define GL_TASK_SUBROUTINE_NV             0x957D\n#define GL_MESH_SUBROUTINE_UNIFORM_NV     0x957E\n#define GL_TASK_SUBROUTINE_UNIFORM_NV     0x957F\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F\ntypedef void (APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);\ntypedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);\ntypedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);\ntypedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count);\nGLAPI void APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect);\nGLAPI void APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride);\nGLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#endif\n#endif /* GL_NV_mesh_shader */\n\n#ifndef GL_NV_multisample_coverage\n#define GL_NV_multisample_coverage 1\n#endif /* GL_NV_multisample_coverage */\n\n#ifndef GL_NV_multisample_filter_hint\n#define GL_NV_multisample_filter_hint 1\n#define GL_MULTISAMPLE_FILTER_HINT_NV     0x8534\n#endif /* GL_NV_multisample_filter_hint */\n\n#ifndef GL_NV_occlusion_query\n#define GL_NV_occlusion_query 1\n#define GL_PIXEL_COUNTER_BITS_NV          0x8864\n#define GL_CURRENT_OCCLUSION_QUERY_ID_NV  0x8865\n#define GL_PIXEL_COUNT_NV                 0x8866\n#define GL_PIXEL_COUNT_AVAILABLE_NV       0x8867\ntypedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);\ntypedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);\ntypedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void);\ntypedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);\nGLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);\nGLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);\nGLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);\nGLAPI void APIENTRY glEndOcclusionQueryNV (void);\nGLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);\n#endif\n#endif /* GL_NV_occlusion_query */\n\n#ifndef GL_NV_packed_depth_stencil\n#define GL_NV_packed_depth_stencil 1\n#define GL_DEPTH_STENCIL_NV               0x84F9\n#define GL_UNSIGNED_INT_24_8_NV           0x84FA\n#endif /* GL_NV_packed_depth_stencil */\n\n#ifndef GL_NV_parameter_buffer_object\n#define GL_NV_parameter_buffer_object 1\n#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0\n#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1\n#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2\n#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3\n#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4\ntypedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);\ntypedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat *params);\nGLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint *params);\nGLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint *params);\n#endif\n#endif /* GL_NV_parameter_buffer_object */\n\n#ifndef GL_NV_parameter_buffer_object2\n#define GL_NV_parameter_buffer_object2 1\n#endif /* GL_NV_parameter_buffer_object2 */\n\n#ifndef GL_NV_path_rendering\n#define GL_NV_path_rendering 1\n#define GL_PATH_FORMAT_SVG_NV             0x9070\n#define GL_PATH_FORMAT_PS_NV              0x9071\n#define GL_STANDARD_FONT_NAME_NV          0x9072\n#define GL_SYSTEM_FONT_NAME_NV            0x9073\n#define GL_FILE_NAME_NV                   0x9074\n#define GL_PATH_STROKE_WIDTH_NV           0x9075\n#define GL_PATH_END_CAPS_NV               0x9076\n#define GL_PATH_INITIAL_END_CAP_NV        0x9077\n#define GL_PATH_TERMINAL_END_CAP_NV       0x9078\n#define GL_PATH_JOIN_STYLE_NV             0x9079\n#define GL_PATH_MITER_LIMIT_NV            0x907A\n#define GL_PATH_DASH_CAPS_NV              0x907B\n#define GL_PATH_INITIAL_DASH_CAP_NV       0x907C\n#define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D\n#define GL_PATH_DASH_OFFSET_NV            0x907E\n#define GL_PATH_CLIENT_LENGTH_NV          0x907F\n#define GL_PATH_FILL_MODE_NV              0x9080\n#define GL_PATH_FILL_MASK_NV              0x9081\n#define GL_PATH_FILL_COVER_MODE_NV        0x9082\n#define GL_PATH_STROKE_COVER_MODE_NV      0x9083\n#define GL_PATH_STROKE_MASK_NV            0x9084\n#define GL_COUNT_UP_NV                    0x9088\n#define GL_COUNT_DOWN_NV                  0x9089\n#define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A\n#define GL_CONVEX_HULL_NV                 0x908B\n#define GL_BOUNDING_BOX_NV                0x908D\n#define GL_TRANSLATE_X_NV                 0x908E\n#define GL_TRANSLATE_Y_NV                 0x908F\n#define GL_TRANSLATE_2D_NV                0x9090\n#define GL_TRANSLATE_3D_NV                0x9091\n#define GL_AFFINE_2D_NV                   0x9092\n#define GL_AFFINE_3D_NV                   0x9094\n#define GL_TRANSPOSE_AFFINE_2D_NV         0x9096\n#define GL_TRANSPOSE_AFFINE_3D_NV         0x9098\n#define GL_UTF8_NV                        0x909A\n#define GL_UTF16_NV                       0x909B\n#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C\n#define GL_PATH_COMMAND_COUNT_NV          0x909D\n#define GL_PATH_COORD_COUNT_NV            0x909E\n#define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F\n#define GL_PATH_COMPUTED_LENGTH_NV        0x90A0\n#define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1\n#define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2\n#define GL_SQUARE_NV                      0x90A3\n#define GL_ROUND_NV                       0x90A4\n#define GL_TRIANGULAR_NV                  0x90A5\n#define GL_BEVEL_NV                       0x90A6\n#define GL_MITER_REVERT_NV                0x90A7\n#define GL_MITER_TRUNCATE_NV              0x90A8\n#define GL_SKIP_MISSING_GLYPH_NV          0x90A9\n#define GL_USE_MISSING_GLYPH_NV           0x90AA\n#define GL_PATH_ERROR_POSITION_NV         0x90AB\n#define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD\n#define GL_ADJACENT_PAIRS_NV              0x90AE\n#define GL_FIRST_TO_REST_NV               0x90AF\n#define GL_PATH_GEN_MODE_NV               0x90B0\n#define GL_PATH_GEN_COEFF_NV              0x90B1\n#define GL_PATH_GEN_COMPONENTS_NV         0x90B3\n#define GL_PATH_STENCIL_FUNC_NV           0x90B7\n#define GL_PATH_STENCIL_REF_NV            0x90B8\n#define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9\n#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD\n#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE\n#define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF\n#define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4\n#define GL_MOVE_TO_RESETS_NV              0x90B5\n#define GL_MOVE_TO_CONTINUES_NV           0x90B6\n#define GL_CLOSE_PATH_NV                  0x00\n#define GL_MOVE_TO_NV                     0x02\n#define GL_RELATIVE_MOVE_TO_NV            0x03\n#define GL_LINE_TO_NV                     0x04\n#define GL_RELATIVE_LINE_TO_NV            0x05\n#define GL_HORIZONTAL_LINE_TO_NV          0x06\n#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07\n#define GL_VERTICAL_LINE_TO_NV            0x08\n#define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09\n#define GL_QUADRATIC_CURVE_TO_NV          0x0A\n#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B\n#define GL_CUBIC_CURVE_TO_NV              0x0C\n#define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D\n#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E\n#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F\n#define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10\n#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11\n#define GL_SMALL_CCW_ARC_TO_NV            0x12\n#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13\n#define GL_SMALL_CW_ARC_TO_NV             0x14\n#define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15\n#define GL_LARGE_CCW_ARC_TO_NV            0x16\n#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17\n#define GL_LARGE_CW_ARC_TO_NV             0x18\n#define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19\n#define GL_RESTART_PATH_NV                0xF0\n#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2\n#define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4\n#define GL_RECT_NV                        0xF6\n#define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8\n#define GL_CIRCULAR_CW_ARC_TO_NV          0xFA\n#define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC\n#define GL_ARC_TO_NV                      0xFE\n#define GL_RELATIVE_ARC_TO_NV             0xFF\n#define GL_BOLD_BIT_NV                    0x01\n#define GL_ITALIC_BIT_NV                  0x02\n#define GL_GLYPH_WIDTH_BIT_NV             0x01\n#define GL_GLYPH_HEIGHT_BIT_NV            0x02\n#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04\n#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08\n#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10\n#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20\n#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40\n#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80\n#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100\n#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000\n#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000\n#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000\n#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000\n#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000\n#define GL_FONT_ASCENDER_BIT_NV           0x00200000\n#define GL_FONT_DESCENDER_BIT_NV          0x00400000\n#define GL_FONT_HEIGHT_BIT_NV             0x00800000\n#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000\n#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000\n#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000\n#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000\n#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000\n#define GL_ROUNDED_RECT_NV                0xE8\n#define GL_RELATIVE_ROUNDED_RECT_NV       0xE9\n#define GL_ROUNDED_RECT2_NV               0xEA\n#define GL_RELATIVE_ROUNDED_RECT2_NV      0xEB\n#define GL_ROUNDED_RECT4_NV               0xEC\n#define GL_RELATIVE_ROUNDED_RECT4_NV      0xED\n#define GL_ROUNDED_RECT8_NV               0xEE\n#define GL_RELATIVE_ROUNDED_RECT8_NV      0xEF\n#define GL_RELATIVE_RECT_NV               0xF7\n#define GL_FONT_GLYPHS_AVAILABLE_NV       0x9368\n#define GL_FONT_TARGET_UNAVAILABLE_NV     0x9369\n#define GL_FONT_UNAVAILABLE_NV            0x936A\n#define GL_FONT_UNINTELLIGIBLE_NV         0x936B\n#define GL_CONIC_CURVE_TO_NV              0x1A\n#define GL_RELATIVE_CONIC_CURVE_TO_NV     0x1B\n#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV  0x20000000\n#define GL_STANDARD_FONT_FORMAT_NV        0x936C\n#define GL_2_BYTES_NV                     0x1407\n#define GL_3_BYTES_NV                     0x1408\n#define GL_4_BYTES_NV                     0x1409\n#define GL_EYE_LINEAR_NV                  0x2400\n#define GL_OBJECT_LINEAR_NV               0x2401\n#define GL_CONSTANT_NV                    0x8576\n#define GL_PATH_FOG_GEN_MODE_NV           0x90AC\n#define GL_PRIMARY_COLOR_NV               0x852C\n#define GL_SECONDARY_COLOR_NV             0x852D\n#define GL_PATH_GEN_COLOR_FORMAT_NV       0x90B2\n#define GL_PATH_PROJECTION_NV             0x1701\n#define GL_PATH_MODELVIEW_NV              0x1700\n#define GL_PATH_MODELVIEW_STACK_DEPTH_NV  0x0BA3\n#define GL_PATH_MODELVIEW_MATRIX_NV       0x0BA6\n#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36\n#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3\n#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4\n#define GL_PATH_PROJECTION_MATRIX_NV      0x0BA7\n#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38\n#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4\n#define GL_FRAGMENT_INPUT_NV              0x936D\ntypedef GLuint (APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);\ntypedef void (APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);\ntypedef GLboolean (APIENTRYP PFNGLISPATHNVPROC) (GLuint path);\ntypedef void (APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);\ntypedef void (APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);\ntypedef void (APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);\ntypedef void (APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);\ntypedef void (APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);\ntypedef void (APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);\ntypedef void (APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);\ntypedef void (APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);\ntypedef void (APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);\ntypedef void (APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);\ntypedef void (APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);\ntypedef void (APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);\ntypedef void (APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);\ntypedef void (APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);\ntypedef void (APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);\ntypedef void (APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);\ntypedef void (APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);\ntypedef void (APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);\ntypedef void (APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);\ntypedef void (APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);\ntypedef void (APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);\ntypedef void (APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);\ntypedef void (APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);\ntypedef void (APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);\ntypedef GLboolean (APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);\ntypedef GLboolean (APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);\ntypedef GLfloat (APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);\ntypedef GLboolean (APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);\ntypedef void (APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);\ntypedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);\ntypedef void (APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);\ntypedef GLenum (APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef GLenum (APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);\ntypedef void (APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);\ntypedef void (APIENTRYP PFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);\ntypedef void (APIENTRYP PFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);\ntypedef void (APIENTRYP PFNGLPATHFOGGENNVPROC) (GLenum genMode);\ntypedef void (APIENTRYP PFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint *value);\ntypedef void (APIENTRYP PFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat *value);\ntypedef void (APIENTRYP PFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint *value);\ntypedef void (APIENTRYP PFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLuint APIENTRY glGenPathsNV (GLsizei range);\nGLAPI void APIENTRY glDeletePathsNV (GLuint path, GLsizei range);\nGLAPI GLboolean APIENTRY glIsPathNV (GLuint path);\nGLAPI void APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\nGLAPI void APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);\nGLAPI void APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\nGLAPI void APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);\nGLAPI void APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);\nGLAPI void APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGLAPI void APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGLAPI void APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);\nGLAPI void APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);\nGLAPI void APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);\nGLAPI void APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);\nGLAPI void APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);\nGLAPI void APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);\nGLAPI void APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);\nGLAPI void APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);\nGLAPI void APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);\nGLAPI void APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);\nGLAPI void APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);\nGLAPI void APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);\nGLAPI void APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glPathCoverDepthFuncNV (GLenum func);\nGLAPI void APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);\nGLAPI void APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);\nGLAPI void APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);\nGLAPI void APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);\nGLAPI void APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);\nGLAPI void APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);\nGLAPI void APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);\nGLAPI void APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);\nGLAPI void APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);\nGLAPI void APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);\nGLAPI GLboolean APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);\nGLAPI GLboolean APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);\nGLAPI GLfloat APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);\nGLAPI GLboolean APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);\nGLAPI void APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);\nGLAPI void APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);\nGLAPI void APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);\nGLAPI void APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGLAPI void APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGLAPI GLenum APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);\nGLAPI GLenum APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGLAPI GLenum APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGLAPI void APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);\nGLAPI void APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);\nGLAPI void APIENTRY glPathColorGenNV (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat *coeffs);\nGLAPI void APIENTRY glPathTexGenNV (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat *coeffs);\nGLAPI void APIENTRY glPathFogGenNV (GLenum genMode);\nGLAPI void APIENTRY glGetPathColorGenivNV (GLenum color, GLenum pname, GLint *value);\nGLAPI void APIENTRY glGetPathColorGenfvNV (GLenum color, GLenum pname, GLfloat *value);\nGLAPI void APIENTRY glGetPathTexGenivNV (GLenum texCoordSet, GLenum pname, GLint *value);\nGLAPI void APIENTRY glGetPathTexGenfvNV (GLenum texCoordSet, GLenum pname, GLfloat *value);\n#endif\n#endif /* GL_NV_path_rendering */\n\n#ifndef GL_NV_path_rendering_shared_edge\n#define GL_NV_path_rendering_shared_edge 1\n#define GL_SHARED_EDGE_NV                 0xC0\n#endif /* GL_NV_path_rendering_shared_edge */\n\n#ifndef GL_NV_pixel_data_range\n#define GL_NV_pixel_data_range 1\n#define GL_WRITE_PIXEL_DATA_RANGE_NV      0x8878\n#define GL_READ_PIXEL_DATA_RANGE_NV       0x8879\n#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A\n#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B\n#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C\n#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D\ntypedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const void *pointer);\ntypedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, const void *pointer);\nGLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);\n#endif\n#endif /* GL_NV_pixel_data_range */\n\n#ifndef GL_NV_point_sprite\n#define GL_NV_point_sprite 1\n#define GL_POINT_SPRITE_NV                0x8861\n#define GL_COORD_REPLACE_NV               0x8862\n#define GL_POINT_SPRITE_R_MODE_NV         0x8863\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);\nGLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);\n#endif\n#endif /* GL_NV_point_sprite */\n\n#ifndef GL_NV_present_video\n#define GL_NV_present_video 1\n#define GL_FRAME_NV                       0x8E26\n#define GL_FIELDS_NV                      0x8E27\n#define GL_CURRENT_TIME_NV                0x8E28\n#define GL_NUM_FILL_STREAMS_NV            0x8E29\n#define GL_PRESENT_TIME_NV                0x8E2A\n#define GL_PRESENT_DURATION_NV            0x8E2B\ntypedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);\ntypedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);\ntypedef void (APIENTRYP PFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);\nGLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);\nGLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);\nGLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);\nGLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);\n#endif\n#endif /* GL_NV_present_video */\n\n#ifndef GL_NV_primitive_restart\n#define GL_NV_primitive_restart 1\n#define GL_PRIMITIVE_RESTART_NV           0x8558\n#define GL_PRIMITIVE_RESTART_INDEX_NV     0x8559\ntypedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);\ntypedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPrimitiveRestartNV (void);\nGLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);\n#endif\n#endif /* GL_NV_primitive_restart */\n\n#ifndef GL_NV_primitive_shading_rate\n#define GL_NV_primitive_shading_rate 1\n#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1\n#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2\n#endif /* GL_NV_primitive_shading_rate */\n\n#ifndef GL_NV_query_resource\n#define GL_NV_query_resource 1\n#define GL_QUERY_RESOURCE_TYPE_VIDMEM_ALLOC_NV 0x9540\n#define GL_QUERY_RESOURCE_MEMTYPE_VIDMEM_NV 0x9542\n#define GL_QUERY_RESOURCE_SYS_RESERVED_NV 0x9544\n#define GL_QUERY_RESOURCE_TEXTURE_NV      0x9545\n#define GL_QUERY_RESOURCE_RENDERBUFFER_NV 0x9546\n#define GL_QUERY_RESOURCE_BUFFEROBJECT_NV 0x9547\ntypedef GLint (APIENTRYP PFNGLQUERYRESOURCENVPROC) (GLenum queryType, GLint tagId, GLuint count, GLint *buffer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLint APIENTRY glQueryResourceNV (GLenum queryType, GLint tagId, GLuint count, GLint *buffer);\n#endif\n#endif /* GL_NV_query_resource */\n\n#ifndef GL_NV_query_resource_tag\n#define GL_NV_query_resource_tag 1\ntypedef void (APIENTRYP PFNGLGENQUERYRESOURCETAGNVPROC) (GLsizei n, GLint *tagIds);\ntypedef void (APIENTRYP PFNGLDELETEQUERYRESOURCETAGNVPROC) (GLsizei n, const GLint *tagIds);\ntypedef void (APIENTRYP PFNGLQUERYRESOURCETAGNVPROC) (GLint tagId, const GLchar *tagString);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGenQueryResourceTagNV (GLsizei n, GLint *tagIds);\nGLAPI void APIENTRY glDeleteQueryResourceTagNV (GLsizei n, const GLint *tagIds);\nGLAPI void APIENTRY glQueryResourceTagNV (GLint tagId, const GLchar *tagString);\n#endif\n#endif /* GL_NV_query_resource_tag */\n\n#ifndef GL_NV_register_combiners\n#define GL_NV_register_combiners 1\n#define GL_REGISTER_COMBINERS_NV          0x8522\n#define GL_VARIABLE_A_NV                  0x8523\n#define GL_VARIABLE_B_NV                  0x8524\n#define GL_VARIABLE_C_NV                  0x8525\n#define GL_VARIABLE_D_NV                  0x8526\n#define GL_VARIABLE_E_NV                  0x8527\n#define GL_VARIABLE_F_NV                  0x8528\n#define GL_VARIABLE_G_NV                  0x8529\n#define GL_CONSTANT_COLOR0_NV             0x852A\n#define GL_CONSTANT_COLOR1_NV             0x852B\n#define GL_SPARE0_NV                      0x852E\n#define GL_SPARE1_NV                      0x852F\n#define GL_DISCARD_NV                     0x8530\n#define GL_E_TIMES_F_NV                   0x8531\n#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532\n#define GL_UNSIGNED_IDENTITY_NV           0x8536\n#define GL_UNSIGNED_INVERT_NV             0x8537\n#define GL_EXPAND_NORMAL_NV               0x8538\n#define GL_EXPAND_NEGATE_NV               0x8539\n#define GL_HALF_BIAS_NORMAL_NV            0x853A\n#define GL_HALF_BIAS_NEGATE_NV            0x853B\n#define GL_SIGNED_IDENTITY_NV             0x853C\n#define GL_SIGNED_NEGATE_NV               0x853D\n#define GL_SCALE_BY_TWO_NV                0x853E\n#define GL_SCALE_BY_FOUR_NV               0x853F\n#define GL_SCALE_BY_ONE_HALF_NV           0x8540\n#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV   0x8541\n#define GL_COMBINER_INPUT_NV              0x8542\n#define GL_COMBINER_MAPPING_NV            0x8543\n#define GL_COMBINER_COMPONENT_USAGE_NV    0x8544\n#define GL_COMBINER_AB_DOT_PRODUCT_NV     0x8545\n#define GL_COMBINER_CD_DOT_PRODUCT_NV     0x8546\n#define GL_COMBINER_MUX_SUM_NV            0x8547\n#define GL_COMBINER_SCALE_NV              0x8548\n#define GL_COMBINER_BIAS_NV               0x8549\n#define GL_COMBINER_AB_OUTPUT_NV          0x854A\n#define GL_COMBINER_CD_OUTPUT_NV          0x854B\n#define GL_COMBINER_SUM_OUTPUT_NV         0x854C\n#define GL_MAX_GENERAL_COMBINERS_NV       0x854D\n#define GL_NUM_GENERAL_COMBINERS_NV       0x854E\n#define GL_COLOR_SUM_CLAMP_NV             0x854F\n#define GL_COMBINER0_NV                   0x8550\n#define GL_COMBINER1_NV                   0x8551\n#define GL_COMBINER2_NV                   0x8552\n#define GL_COMBINER3_NV                   0x8553\n#define GL_COMBINER4_NV                   0x8554\n#define GL_COMBINER5_NV                   0x8555\n#define GL_COMBINER6_NV                   0x8556\n#define GL_COMBINER7_NV                   0x8557\ntypedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\ntypedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);\ntypedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\ntypedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);\nGLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);\nGLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\nGLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);\nGLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);\nGLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);\n#endif\n#endif /* GL_NV_register_combiners */\n\n#ifndef GL_NV_register_combiners2\n#define GL_NV_register_combiners2 1\n#define GL_PER_STAGE_CONSTANTS_NV         0x8535\ntypedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_NV_register_combiners2 */\n\n#ifndef GL_NV_representative_fragment_test\n#define GL_NV_representative_fragment_test 1\n#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F\n#endif /* GL_NV_representative_fragment_test */\n\n#ifndef GL_NV_robustness_video_memory_purge\n#define GL_NV_robustness_video_memory_purge 1\n#define GL_PURGED_CONTEXT_RESET_NV        0x92BB\n#endif /* GL_NV_robustness_video_memory_purge */\n\n#ifndef GL_NV_sample_locations\n#define GL_NV_sample_locations 1\n#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340\n#define GL_SAMPLE_LOCATION_NV             0x8E50\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341\n#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342\n#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glResolveDepthValuesNV (void);\n#endif\n#endif /* GL_NV_sample_locations */\n\n#ifndef GL_NV_sample_mask_override_coverage\n#define GL_NV_sample_mask_override_coverage 1\n#endif /* GL_NV_sample_mask_override_coverage */\n\n#ifndef GL_NV_scissor_exclusive\n#define GL_NV_scissor_exclusive 1\n#define GL_SCISSOR_TEST_EXCLUSIVE_NV      0x9555\n#define GL_SCISSOR_BOX_EXCLUSIVE_NV       0x9556\ntypedef void (APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height);\nGLAPI void APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v);\n#endif\n#endif /* GL_NV_scissor_exclusive */\n\n#ifndef GL_NV_shader_atomic_counters\n#define GL_NV_shader_atomic_counters 1\n#endif /* GL_NV_shader_atomic_counters */\n\n#ifndef GL_NV_shader_atomic_float\n#define GL_NV_shader_atomic_float 1\n#endif /* GL_NV_shader_atomic_float */\n\n#ifndef GL_NV_shader_atomic_float64\n#define GL_NV_shader_atomic_float64 1\n#endif /* GL_NV_shader_atomic_float64 */\n\n#ifndef GL_NV_shader_atomic_fp16_vector\n#define GL_NV_shader_atomic_fp16_vector 1\n#endif /* GL_NV_shader_atomic_fp16_vector */\n\n#ifndef GL_NV_shader_atomic_int64\n#define GL_NV_shader_atomic_int64 1\n#endif /* GL_NV_shader_atomic_int64 */\n\n#ifndef GL_NV_shader_buffer_load\n#define GL_NV_shader_buffer_load 1\n#define GL_BUFFER_GPU_ADDRESS_NV          0x8F1D\n#define GL_GPU_ADDRESS_NV                 0x8F34\n#define GL_MAX_SHADER_BUFFER_ADDRESS_NV   0x8F35\ntypedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);\ntypedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);\ntypedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);\ntypedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);\ntypedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);\ntypedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);\ntypedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);\ntypedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);\ntypedef void (APIENTRYP PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT *result);\ntypedef void (APIENTRYP PFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value);\ntypedef void (APIENTRYP PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value);\ntypedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);\nGLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);\nGLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);\nGLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);\nGLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);\nGLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);\nGLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);\nGLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);\nGLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);\nGLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);\nGLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);\nGLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#endif\n#endif /* GL_NV_shader_buffer_load */\n\n#ifndef GL_NV_shader_buffer_store\n#define GL_NV_shader_buffer_store 1\n#define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010\n#endif /* GL_NV_shader_buffer_store */\n\n#ifndef GL_NV_shader_storage_buffer_object\n#define GL_NV_shader_storage_buffer_object 1\n#endif /* GL_NV_shader_storage_buffer_object */\n\n#ifndef GL_NV_shader_subgroup_partitioned\n#define GL_NV_shader_subgroup_partitioned 1\n#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100\n#endif /* GL_NV_shader_subgroup_partitioned */\n\n#ifndef GL_NV_shader_texture_footprint\n#define GL_NV_shader_texture_footprint 1\n#endif /* GL_NV_shader_texture_footprint */\n\n#ifndef GL_NV_shader_thread_group\n#define GL_NV_shader_thread_group 1\n#define GL_WARP_SIZE_NV                   0x9339\n#define GL_WARPS_PER_SM_NV                0x933A\n#define GL_SM_COUNT_NV                    0x933B\n#endif /* GL_NV_shader_thread_group */\n\n#ifndef GL_NV_shader_thread_shuffle\n#define GL_NV_shader_thread_shuffle 1\n#endif /* GL_NV_shader_thread_shuffle */\n\n#ifndef GL_NV_shading_rate_image\n#define GL_NV_shading_rate_image 1\n#define GL_SHADING_RATE_IMAGE_NV          0x9563\n#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564\n#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565\n#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569\n#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A\n#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B\n#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C\n#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D\n#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E\n#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F\n#define GL_SHADING_RATE_IMAGE_BINDING_NV  0x955B\n#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C\n#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D\n#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E\n#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F\n#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE\n#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF\n#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0\ntypedef void (APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);\ntypedef void (APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate);\ntypedef void (APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location);\ntypedef void (APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);\ntypedef void (APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);\ntypedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);\ntypedef void (APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindShadingRateImageNV (GLuint texture);\nGLAPI void APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate);\nGLAPI void APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location);\nGLAPI void APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize);\nGLAPI void APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);\nGLAPI void APIENTRY glShadingRateSampleOrderNV (GLenum order);\nGLAPI void APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations);\n#endif\n#endif /* GL_NV_shading_rate_image */\n\n#ifndef GL_NV_stereo_view_rendering\n#define GL_NV_stereo_view_rendering 1\n#endif /* GL_NV_stereo_view_rendering */\n\n#ifndef GL_NV_tessellation_program5\n#define GL_NV_tessellation_program5 1\n#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV   0x86D8\n#define GL_TESS_CONTROL_PROGRAM_NV        0x891E\n#define GL_TESS_EVALUATION_PROGRAM_NV     0x891F\n#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74\n#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75\n#endif /* GL_NV_tessellation_program5 */\n\n#ifndef GL_NV_texgen_emboss\n#define GL_NV_texgen_emboss 1\n#define GL_EMBOSS_LIGHT_NV                0x855D\n#define GL_EMBOSS_CONSTANT_NV             0x855E\n#define GL_EMBOSS_MAP_NV                  0x855F\n#endif /* GL_NV_texgen_emboss */\n\n#ifndef GL_NV_texgen_reflection\n#define GL_NV_texgen_reflection 1\n#define GL_NORMAL_MAP_NV                  0x8511\n#define GL_REFLECTION_MAP_NV              0x8512\n#endif /* GL_NV_texgen_reflection */\n\n#ifndef GL_NV_texture_barrier\n#define GL_NV_texture_barrier 1\ntypedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTextureBarrierNV (void);\n#endif\n#endif /* GL_NV_texture_barrier */\n\n#ifndef GL_NV_texture_compression_vtc\n#define GL_NV_texture_compression_vtc 1\n#endif /* GL_NV_texture_compression_vtc */\n\n#ifndef GL_NV_texture_env_combine4\n#define GL_NV_texture_env_combine4 1\n#define GL_COMBINE4_NV                    0x8503\n#define GL_SOURCE3_RGB_NV                 0x8583\n#define GL_SOURCE3_ALPHA_NV               0x858B\n#define GL_OPERAND3_RGB_NV                0x8593\n#define GL_OPERAND3_ALPHA_NV              0x859B\n#endif /* GL_NV_texture_env_combine4 */\n\n#ifndef GL_NV_texture_expand_normal\n#define GL_NV_texture_expand_normal 1\n#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F\n#endif /* GL_NV_texture_expand_normal */\n\n#ifndef GL_NV_texture_multisample\n#define GL_NV_texture_multisample 1\n#define GL_TEXTURE_COVERAGE_SAMPLES_NV    0x9045\n#define GL_TEXTURE_COLOR_SAMPLES_NV       0x9046\ntypedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\ntypedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\ntypedef void (APIENTRYP PFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexImage2DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\nGLAPI void APIENTRY glTexImage3DMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\nGLAPI void APIENTRY glTextureImage2DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\nGLAPI void APIENTRY glTextureImage3DMultisampleNV (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\nGLAPI void APIENTRY glTextureImage2DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations);\nGLAPI void APIENTRY glTextureImage3DMultisampleCoverageNV (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations);\n#endif\n#endif /* GL_NV_texture_multisample */\n\n#ifndef GL_NV_texture_rectangle\n#define GL_NV_texture_rectangle 1\n#define GL_TEXTURE_RECTANGLE_NV           0x84F5\n#define GL_TEXTURE_BINDING_RECTANGLE_NV   0x84F6\n#define GL_PROXY_TEXTURE_RECTANGLE_NV     0x84F7\n#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV  0x84F8\n#endif /* GL_NV_texture_rectangle */\n\n#ifndef GL_NV_texture_rectangle_compressed\n#define GL_NV_texture_rectangle_compressed 1\n#endif /* GL_NV_texture_rectangle_compressed */\n\n#ifndef GL_NV_texture_shader\n#define GL_NV_texture_shader 1\n#define GL_OFFSET_TEXTURE_RECTANGLE_NV    0x864C\n#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D\n#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E\n#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9\n#define GL_UNSIGNED_INT_S8_S8_8_8_NV      0x86DA\n#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV  0x86DB\n#define GL_DSDT_MAG_INTENSITY_NV          0x86DC\n#define GL_SHADER_CONSISTENT_NV           0x86DD\n#define GL_TEXTURE_SHADER_NV              0x86DE\n#define GL_SHADER_OPERATION_NV            0x86DF\n#define GL_CULL_MODES_NV                  0x86E0\n#define GL_OFFSET_TEXTURE_MATRIX_NV       0x86E1\n#define GL_OFFSET_TEXTURE_SCALE_NV        0x86E2\n#define GL_OFFSET_TEXTURE_BIAS_NV         0x86E3\n#define GL_OFFSET_TEXTURE_2D_MATRIX_NV    0x86E1\n#define GL_OFFSET_TEXTURE_2D_SCALE_NV     0x86E2\n#define GL_OFFSET_TEXTURE_2D_BIAS_NV      0x86E3\n#define GL_PREVIOUS_TEXTURE_INPUT_NV      0x86E4\n#define GL_CONST_EYE_NV                   0x86E5\n#define GL_PASS_THROUGH_NV                0x86E6\n#define GL_CULL_FRAGMENT_NV               0x86E7\n#define GL_OFFSET_TEXTURE_2D_NV           0x86E8\n#define GL_DEPENDENT_AR_TEXTURE_2D_NV     0x86E9\n#define GL_DEPENDENT_GB_TEXTURE_2D_NV     0x86EA\n#define GL_DOT_PRODUCT_NV                 0x86EC\n#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV   0x86ED\n#define GL_DOT_PRODUCT_TEXTURE_2D_NV      0x86EE\n#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0\n#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1\n#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2\n#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3\n#define GL_HILO_NV                        0x86F4\n#define GL_DSDT_NV                        0x86F5\n#define GL_DSDT_MAG_NV                    0x86F6\n#define GL_DSDT_MAG_VIB_NV                0x86F7\n#define GL_HILO16_NV                      0x86F8\n#define GL_SIGNED_HILO_NV                 0x86F9\n#define GL_SIGNED_HILO16_NV               0x86FA\n#define GL_SIGNED_RGBA_NV                 0x86FB\n#define GL_SIGNED_RGBA8_NV                0x86FC\n#define GL_SIGNED_RGB_NV                  0x86FE\n#define GL_SIGNED_RGB8_NV                 0x86FF\n#define GL_SIGNED_LUMINANCE_NV            0x8701\n#define GL_SIGNED_LUMINANCE8_NV           0x8702\n#define GL_SIGNED_LUMINANCE_ALPHA_NV      0x8703\n#define GL_SIGNED_LUMINANCE8_ALPHA8_NV    0x8704\n#define GL_SIGNED_ALPHA_NV                0x8705\n#define GL_SIGNED_ALPHA8_NV               0x8706\n#define GL_SIGNED_INTENSITY_NV            0x8707\n#define GL_SIGNED_INTENSITY8_NV           0x8708\n#define GL_DSDT8_NV                       0x8709\n#define GL_DSDT8_MAG8_NV                  0x870A\n#define GL_DSDT8_MAG8_INTENSITY8_NV       0x870B\n#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV   0x870C\n#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D\n#define GL_HI_SCALE_NV                    0x870E\n#define GL_LO_SCALE_NV                    0x870F\n#define GL_DS_SCALE_NV                    0x8710\n#define GL_DT_SCALE_NV                    0x8711\n#define GL_MAGNITUDE_SCALE_NV             0x8712\n#define GL_VIBRANCE_SCALE_NV              0x8713\n#define GL_HI_BIAS_NV                     0x8714\n#define GL_LO_BIAS_NV                     0x8715\n#define GL_DS_BIAS_NV                     0x8716\n#define GL_DT_BIAS_NV                     0x8717\n#define GL_MAGNITUDE_BIAS_NV              0x8718\n#define GL_VIBRANCE_BIAS_NV               0x8719\n#define GL_TEXTURE_BORDER_VALUES_NV       0x871A\n#define GL_TEXTURE_HI_SIZE_NV             0x871B\n#define GL_TEXTURE_LO_SIZE_NV             0x871C\n#define GL_TEXTURE_DS_SIZE_NV             0x871D\n#define GL_TEXTURE_DT_SIZE_NV             0x871E\n#define GL_TEXTURE_MAG_SIZE_NV            0x871F\n#endif /* GL_NV_texture_shader */\n\n#ifndef GL_NV_texture_shader2\n#define GL_NV_texture_shader2 1\n#define GL_DOT_PRODUCT_TEXTURE_3D_NV      0x86EF\n#endif /* GL_NV_texture_shader2 */\n\n#ifndef GL_NV_texture_shader3\n#define GL_NV_texture_shader3 1\n#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850\n#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851\n#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852\n#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853\n#define GL_OFFSET_HILO_TEXTURE_2D_NV      0x8854\n#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855\n#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856\n#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857\n#define GL_DEPENDENT_HILO_TEXTURE_2D_NV   0x8858\n#define GL_DEPENDENT_RGB_TEXTURE_3D_NV    0x8859\n#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A\n#define GL_DOT_PRODUCT_PASS_THROUGH_NV    0x885B\n#define GL_DOT_PRODUCT_TEXTURE_1D_NV      0x885C\n#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D\n#define GL_HILO8_NV                       0x885E\n#define GL_SIGNED_HILO8_NV                0x885F\n#define GL_FORCE_BLUE_TO_ONE_NV           0x8860\n#endif /* GL_NV_texture_shader3 */\n\n#ifndef GL_NV_timeline_semaphore\n#define GL_NV_timeline_semaphore 1\n#define GL_TIMELINE_SEMAPHORE_VALUE_NV    0x9595\n#define GL_SEMAPHORE_TYPE_NV              0x95B3\n#define GL_SEMAPHORE_TYPE_BINARY_NV       0x95B4\n#define GL_SEMAPHORE_TYPE_TIMELINE_NV     0x95B5\n#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6\ntypedef void (APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);\ntypedef void (APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);\nGLAPI void APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);\n#endif\n#endif /* GL_NV_timeline_semaphore */\n\n#ifndef GL_NV_transform_feedback\n#define GL_NV_transform_feedback 1\n#define GL_BACK_PRIMARY_COLOR_NV          0x8C77\n#define GL_BACK_SECONDARY_COLOR_NV        0x8C78\n#define GL_TEXTURE_COORD_NV               0x8C79\n#define GL_CLIP_DISTANCE_NV               0x8C7A\n#define GL_VERTEX_ID_NV                   0x8C7B\n#define GL_PRIMITIVE_ID_NV                0x8C7C\n#define GL_GENERIC_ATTRIB_NV              0x8C7D\n#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV  0x8C7E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80\n#define GL_ACTIVE_VARYINGS_NV             0x8C81\n#define GL_ACTIVE_VARYING_MAX_LENGTH_NV   0x8C82\n#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83\n#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84\n#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85\n#define GL_TRANSFORM_FEEDBACK_RECORD_NV   0x8C86\n#define GL_PRIMITIVES_GENERATED_NV        0x8C87\n#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88\n#define GL_RASTERIZER_DISCARD_NV          0x8C89\n#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A\n#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B\n#define GL_INTERLEAVED_ATTRIBS_NV         0x8C8C\n#define GL_SEPARATE_ATTRIBS_NV            0x8C8D\n#define GL_TRANSFORM_FEEDBACK_BUFFER_NV   0x8C8E\n#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F\n#define GL_LAYER_NV                       0x8DAA\n#define GL_NEXT_BUFFER_NV                 -2\n#define GL_SKIP_COMPONENTS4_NV            -3\n#define GL_SKIP_COMPONENTS3_NV            -4\n#define GL_SKIP_COMPONENTS2_NV            -5\n#define GL_SKIP_COMPONENTS1_NV            -6\ntypedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);\ntypedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLenum bufferMode);\ntypedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\ntypedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);\ntypedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);\ntypedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name);\ntypedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name);\ntypedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\ntypedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location);\ntypedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);\nGLAPI void APIENTRY glEndTransformFeedbackNV (void);\nGLAPI void APIENTRY glTransformFeedbackAttribsNV (GLsizei count, const GLint *attribs, GLenum bufferMode);\nGLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);\nGLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);\nGLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);\nGLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode);\nGLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);\nGLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);\nGLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);\nGLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);\nGLAPI void APIENTRY glTransformFeedbackStreamAttribsNV (GLsizei count, const GLint *attribs, GLsizei nbuffers, const GLint *bufstreams, GLenum bufferMode);\n#endif\n#endif /* GL_NV_transform_feedback */\n\n#ifndef GL_NV_transform_feedback2\n#define GL_NV_transform_feedback2 1\n#define GL_TRANSFORM_FEEDBACK_NV          0x8E22\n#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23\n#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24\n#define GL_TRANSFORM_FEEDBACK_BINDING_NV  0x8E25\ntypedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);\ntypedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);\ntypedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint *ids);\ntypedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKNVPROC) (void);\ntypedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKNVPROC) (void);\ntypedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);\nGLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);\nGLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);\nGLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);\nGLAPI void APIENTRY glPauseTransformFeedbackNV (void);\nGLAPI void APIENTRY glResumeTransformFeedbackNV (void);\nGLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);\n#endif\n#endif /* GL_NV_transform_feedback2 */\n\n#ifndef GL_NV_uniform_buffer_unified_memory\n#define GL_NV_uniform_buffer_unified_memory 1\n#define GL_UNIFORM_BUFFER_UNIFIED_NV      0x936E\n#define GL_UNIFORM_BUFFER_ADDRESS_NV      0x936F\n#define GL_UNIFORM_BUFFER_LENGTH_NV       0x9370\n#endif /* GL_NV_uniform_buffer_unified_memory */\n\n#ifndef GL_NV_vdpau_interop\n#define GL_NV_vdpau_interop 1\ntypedef GLintptr GLvdpauSurfaceNV;\n#define GL_SURFACE_STATE_NV               0x86EB\n#define GL_SURFACE_REGISTERED_NV          0x86FD\n#define GL_SURFACE_MAPPED_NV              0x8700\n#define GL_WRITE_DISCARD_NV               0x88BE\ntypedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void *getProcAddress);\ntypedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void);\ntypedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);\ntypedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);\ntypedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface);\ntypedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface);\ntypedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\ntypedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access);\ntypedef void (APIENTRYP PFNGLVDPAUMAPSURFACESNVPROC) (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);\ntypedef void (APIENTRYP PFNGLVDPAUUNMAPSURFACESNVPROC) (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAddress);\nGLAPI void APIENTRY glVDPAUFiniNV (void);\nGLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);\nGLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames);\nGLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface);\nGLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface);\nGLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\nGLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access);\nGLAPI void APIENTRY glVDPAUMapSurfacesNV (GLsizei numSurfaces, const GLvdpauSurfaceNV *surfaces);\nGLAPI void APIENTRY glVDPAUUnmapSurfacesNV (GLsizei numSurface, const GLvdpauSurfaceNV *surfaces);\n#endif\n#endif /* GL_NV_vdpau_interop */\n\n#ifndef GL_NV_vdpau_interop2\n#define GL_NV_vdpau_interop2 1\ntypedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACEWITHPICTURESTRUCTURENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceWithPictureStructureNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames, GLboolean isFrameStructure);\n#endif\n#endif /* GL_NV_vdpau_interop2 */\n\n#ifndef GL_NV_vertex_array_range\n#define GL_NV_vertex_array_range 1\n#define GL_VERTEX_ARRAY_RANGE_NV          0x851D\n#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV   0x851E\n#define GL_VERTEX_ARRAY_RANGE_VALID_NV    0x851F\n#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520\n#define GL_VERTEX_ARRAY_RANGE_POINTER_NV  0x8521\ntypedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);\ntypedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const void *pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFlushVertexArrayRangeNV (void);\nGLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const void *pointer);\n#endif\n#endif /* GL_NV_vertex_array_range */\n\n#ifndef GL_NV_vertex_array_range2\n#define GL_NV_vertex_array_range2 1\n#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533\n#endif /* GL_NV_vertex_array_range2 */\n\n#ifndef GL_NV_vertex_attrib_integer_64bit\n#define GL_NV_vertex_attrib_integer_64bit 1\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT *v);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT *params);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glVertexAttribL1i64NV (GLuint index, GLint64EXT x);\nGLAPI void APIENTRY glVertexAttribL2i64NV (GLuint index, GLint64EXT x, GLint64EXT y);\nGLAPI void APIENTRY glVertexAttribL3i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);\nGLAPI void APIENTRY glVertexAttribL4i64NV (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\nGLAPI void APIENTRY glVertexAttribL1i64vNV (GLuint index, const GLint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL2i64vNV (GLuint index, const GLint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL3i64vNV (GLuint index, const GLint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL4i64vNV (GLuint index, const GLint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL1ui64NV (GLuint index, GLuint64EXT x);\nGLAPI void APIENTRY glVertexAttribL2ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y);\nGLAPI void APIENTRY glVertexAttribL3ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\nGLAPI void APIENTRY glVertexAttribL4ui64NV (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\nGLAPI void APIENTRY glVertexAttribL1ui64vNV (GLuint index, const GLuint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL2ui64vNV (GLuint index, const GLuint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL3ui64vNV (GLuint index, const GLuint64EXT *v);\nGLAPI void APIENTRY glVertexAttribL4ui64vNV (GLuint index, const GLuint64EXT *v);\nGLAPI void APIENTRY glGetVertexAttribLi64vNV (GLuint index, GLenum pname, GLint64EXT *params);\nGLAPI void APIENTRY glGetVertexAttribLui64vNV (GLuint index, GLenum pname, GLuint64EXT *params);\nGLAPI void APIENTRY glVertexAttribLFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);\n#endif\n#endif /* GL_NV_vertex_attrib_integer_64bit */\n\n#ifndef GL_NV_vertex_buffer_unified_memory\n#define GL_NV_vertex_buffer_unified_memory 1\n#define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E\n#define GL_ELEMENT_ARRAY_UNIFIED_NV       0x8F1F\n#define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20\n#define GL_VERTEX_ARRAY_ADDRESS_NV        0x8F21\n#define GL_NORMAL_ARRAY_ADDRESS_NV        0x8F22\n#define GL_COLOR_ARRAY_ADDRESS_NV         0x8F23\n#define GL_INDEX_ARRAY_ADDRESS_NV         0x8F24\n#define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25\n#define GL_EDGE_FLAG_ARRAY_ADDRESS_NV     0x8F26\n#define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27\n#define GL_FOG_COORD_ARRAY_ADDRESS_NV     0x8F28\n#define GL_ELEMENT_ARRAY_ADDRESS_NV       0x8F29\n#define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV  0x8F2A\n#define GL_VERTEX_ARRAY_LENGTH_NV         0x8F2B\n#define GL_NORMAL_ARRAY_LENGTH_NV         0x8F2C\n#define GL_COLOR_ARRAY_LENGTH_NV          0x8F2D\n#define GL_INDEX_ARRAY_LENGTH_NV          0x8F2E\n#define GL_TEXTURE_COORD_ARRAY_LENGTH_NV  0x8F2F\n#define GL_EDGE_FLAG_ARRAY_LENGTH_NV      0x8F30\n#define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31\n#define GL_FOG_COORD_ARRAY_LENGTH_NV      0x8F32\n#define GL_ELEMENT_ARRAY_LENGTH_NV        0x8F33\n#define GL_DRAW_INDIRECT_UNIFIED_NV       0x8F40\n#define GL_DRAW_INDIRECT_ADDRESS_NV       0x8F41\n#define GL_DRAW_INDIRECT_LENGTH_NV        0x8F42\ntypedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);\ntypedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride);\ntypedef void (APIENTRYP PFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);\ntypedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);\nGLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);\nGLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);\nGLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);\nGLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);\nGLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);\nGLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);\nGLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);\nGLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);\nGLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);\nGLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);\nGLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);\n#endif\n#endif /* GL_NV_vertex_buffer_unified_memory */\n\n#ifndef GL_NV_vertex_program\n#define GL_NV_vertex_program 1\n#define GL_VERTEX_PROGRAM_NV              0x8620\n#define GL_VERTEX_STATE_PROGRAM_NV        0x8621\n#define GL_ATTRIB_ARRAY_SIZE_NV           0x8623\n#define GL_ATTRIB_ARRAY_STRIDE_NV         0x8624\n#define GL_ATTRIB_ARRAY_TYPE_NV           0x8625\n#define GL_CURRENT_ATTRIB_NV              0x8626\n#define GL_PROGRAM_LENGTH_NV              0x8627\n#define GL_PROGRAM_STRING_NV              0x8628\n#define GL_MODELVIEW_PROJECTION_NV        0x8629\n#define GL_IDENTITY_NV                    0x862A\n#define GL_INVERSE_NV                     0x862B\n#define GL_TRANSPOSE_NV                   0x862C\n#define GL_INVERSE_TRANSPOSE_NV           0x862D\n#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E\n#define GL_MAX_TRACK_MATRICES_NV          0x862F\n#define GL_MATRIX0_NV                     0x8630\n#define GL_MATRIX1_NV                     0x8631\n#define GL_MATRIX2_NV                     0x8632\n#define GL_MATRIX3_NV                     0x8633\n#define GL_MATRIX4_NV                     0x8634\n#define GL_MATRIX5_NV                     0x8635\n#define GL_MATRIX6_NV                     0x8636\n#define GL_MATRIX7_NV                     0x8637\n#define GL_CURRENT_MATRIX_STACK_DEPTH_NV  0x8640\n#define GL_CURRENT_MATRIX_NV              0x8641\n#define GL_VERTEX_PROGRAM_POINT_SIZE_NV   0x8642\n#define GL_VERTEX_PROGRAM_TWO_SIDE_NV     0x8643\n#define GL_PROGRAM_PARAMETER_NV           0x8644\n#define GL_ATTRIB_ARRAY_POINTER_NV        0x8645\n#define GL_PROGRAM_TARGET_NV              0x8646\n#define GL_PROGRAM_RESIDENT_NV            0x8647\n#define GL_TRACK_MATRIX_NV                0x8648\n#define GL_TRACK_MATRIX_TRANSFORM_NV      0x8649\n#define GL_VERTEX_PROGRAM_BINDING_NV      0x864A\n#define GL_PROGRAM_ERROR_POSITION_NV      0x864B\n#define GL_VERTEX_ATTRIB_ARRAY0_NV        0x8650\n#define GL_VERTEX_ATTRIB_ARRAY1_NV        0x8651\n#define GL_VERTEX_ATTRIB_ARRAY2_NV        0x8652\n#define GL_VERTEX_ATTRIB_ARRAY3_NV        0x8653\n#define GL_VERTEX_ATTRIB_ARRAY4_NV        0x8654\n#define GL_VERTEX_ATTRIB_ARRAY5_NV        0x8655\n#define GL_VERTEX_ATTRIB_ARRAY6_NV        0x8656\n#define GL_VERTEX_ATTRIB_ARRAY7_NV        0x8657\n#define GL_VERTEX_ATTRIB_ARRAY8_NV        0x8658\n#define GL_VERTEX_ATTRIB_ARRAY9_NV        0x8659\n#define GL_VERTEX_ATTRIB_ARRAY10_NV       0x865A\n#define GL_VERTEX_ATTRIB_ARRAY11_NV       0x865B\n#define GL_VERTEX_ATTRIB_ARRAY12_NV       0x865C\n#define GL_VERTEX_ATTRIB_ARRAY13_NV       0x865D\n#define GL_VERTEX_ATTRIB_ARRAY14_NV       0x865E\n#define GL_VERTEX_ATTRIB_ARRAY15_NV       0x865F\n#define GL_MAP1_VERTEX_ATTRIB0_4_NV       0x8660\n#define GL_MAP1_VERTEX_ATTRIB1_4_NV       0x8661\n#define GL_MAP1_VERTEX_ATTRIB2_4_NV       0x8662\n#define GL_MAP1_VERTEX_ATTRIB3_4_NV       0x8663\n#define GL_MAP1_VERTEX_ATTRIB4_4_NV       0x8664\n#define GL_MAP1_VERTEX_ATTRIB5_4_NV       0x8665\n#define GL_MAP1_VERTEX_ATTRIB6_4_NV       0x8666\n#define GL_MAP1_VERTEX_ATTRIB7_4_NV       0x8667\n#define GL_MAP1_VERTEX_ATTRIB8_4_NV       0x8668\n#define GL_MAP1_VERTEX_ATTRIB9_4_NV       0x8669\n#define GL_MAP1_VERTEX_ATTRIB10_4_NV      0x866A\n#define GL_MAP1_VERTEX_ATTRIB11_4_NV      0x866B\n#define GL_MAP1_VERTEX_ATTRIB12_4_NV      0x866C\n#define GL_MAP1_VERTEX_ATTRIB13_4_NV      0x866D\n#define GL_MAP1_VERTEX_ATTRIB14_4_NV      0x866E\n#define GL_MAP1_VERTEX_ATTRIB15_4_NV      0x866F\n#define GL_MAP2_VERTEX_ATTRIB0_4_NV       0x8670\n#define GL_MAP2_VERTEX_ATTRIB1_4_NV       0x8671\n#define GL_MAP2_VERTEX_ATTRIB2_4_NV       0x8672\n#define GL_MAP2_VERTEX_ATTRIB3_4_NV       0x8673\n#define GL_MAP2_VERTEX_ATTRIB4_4_NV       0x8674\n#define GL_MAP2_VERTEX_ATTRIB5_4_NV       0x8675\n#define GL_MAP2_VERTEX_ATTRIB6_4_NV       0x8676\n#define GL_MAP2_VERTEX_ATTRIB7_4_NV       0x8677\n#define GL_MAP2_VERTEX_ATTRIB8_4_NV       0x8678\n#define GL_MAP2_VERTEX_ATTRIB9_4_NV       0x8679\n#define GL_MAP2_VERTEX_ATTRIB10_4_NV      0x867A\n#define GL_MAP2_VERTEX_ATTRIB11_4_NV      0x867B\n#define GL_MAP2_VERTEX_ATTRIB12_4_NV      0x867C\n#define GL_MAP2_VERTEX_ATTRIB13_4_NV      0x867D\n#define GL_MAP2_VERTEX_ATTRIB14_4_NV      0x867E\n#define GL_MAP2_VERTEX_ATTRIB15_4_NV      0x867F\ntypedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);\ntypedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);\ntypedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);\ntypedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs);\ntypedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program);\ntypedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, void **pointer);\ntypedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id);\ntypedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs);\ntypedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v);\ntypedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);\nGLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);\nGLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);\nGLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);\nGLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);\nGLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);\nGLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);\nGLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, void **pointer);\nGLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);\nGLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);\nGLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);\nGLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);\nGLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const void *pointer);\nGLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);\nGLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);\nGLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);\nGLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);\nGLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);\nGLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);\nGLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);\nGLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);\nGLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);\nGLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);\nGLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);\nGLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);\nGLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);\nGLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);\nGLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);\nGLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);\nGLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);\n#endif\n#endif /* GL_NV_vertex_program */\n\n#ifndef GL_NV_vertex_program1_1\n#define GL_NV_vertex_program1_1 1\n#endif /* GL_NV_vertex_program1_1 */\n\n#ifndef GL_NV_vertex_program2\n#define GL_NV_vertex_program2 1\n#endif /* GL_NV_vertex_program2 */\n\n#ifndef GL_NV_vertex_program2_option\n#define GL_NV_vertex_program2_option 1\n#endif /* GL_NV_vertex_program2_option */\n\n#ifndef GL_NV_vertex_program3\n#define GL_NV_vertex_program3 1\n#endif /* GL_NV_vertex_program3 */\n\n#ifndef GL_NV_vertex_program4\n#define GL_NV_vertex_program4 1\n#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD\n#endif /* GL_NV_vertex_program4 */\n\n#ifndef GL_NV_video_capture\n#define GL_NV_video_capture 1\n#define GL_VIDEO_BUFFER_NV                0x9020\n#define GL_VIDEO_BUFFER_BINDING_NV        0x9021\n#define GL_FIELD_UPPER_NV                 0x9022\n#define GL_FIELD_LOWER_NV                 0x9023\n#define GL_NUM_VIDEO_CAPTURE_STREAMS_NV   0x9024\n#define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025\n#define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026\n#define GL_LAST_VIDEO_CAPTURE_STATUS_NV   0x9027\n#define GL_VIDEO_BUFFER_PITCH_NV          0x9028\n#define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029\n#define GL_VIDEO_COLOR_CONVERSION_MAX_NV  0x902A\n#define GL_VIDEO_COLOR_CONVERSION_MIN_NV  0x902B\n#define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C\n#define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D\n#define GL_PARTIAL_SUCCESS_NV             0x902E\n#define GL_SUCCESS_NV                     0x902F\n#define GL_FAILURE_NV                     0x9030\n#define GL_YCBYCR8_422_NV                 0x9031\n#define GL_YCBAYCR8A_4224_NV              0x9032\n#define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV  0x9033\n#define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034\n#define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV  0x9035\n#define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036\n#define GL_Z4Y12Z4CB12Z4CR12_444_NV       0x9037\n#define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV   0x9038\n#define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV  0x9039\n#define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A\n#define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B\n#define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C\ntypedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);\ntypedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);\ntypedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);\ntypedef void (APIENTRYP PFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot);\ntypedef void (APIENTRYP PFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);\ntypedef GLenum (APIENTRYP PFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);\ntypedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);\nGLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);\nGLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);\nGLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);\nGLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);\nGLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);\nGLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);\n#endif\n#endif /* GL_NV_video_capture */\n\n#ifndef GL_NV_viewport_array2\n#define GL_NV_viewport_array2 1\n#endif /* GL_NV_viewport_array2 */\n\n#ifndef GL_NV_viewport_swizzle\n#define GL_NV_viewport_swizzle 1\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357\n#define GL_VIEWPORT_SWIZZLE_X_NV          0x9358\n#define GL_VIEWPORT_SWIZZLE_Y_NV          0x9359\n#define GL_VIEWPORT_SWIZZLE_Z_NV          0x935A\n#define GL_VIEWPORT_SWIZZLE_W_NV          0x935B\ntypedef void (APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);\n#endif\n#endif /* GL_NV_viewport_swizzle */\n\n#ifndef GL_OML_interlace\n#define GL_OML_interlace 1\n#define GL_INTERLACE_OML                  0x8980\n#define GL_INTERLACE_READ_OML             0x8981\n#endif /* GL_OML_interlace */\n\n#ifndef GL_OML_resample\n#define GL_OML_resample 1\n#define GL_PACK_RESAMPLE_OML              0x8984\n#define GL_UNPACK_RESAMPLE_OML            0x8985\n#define GL_RESAMPLE_REPLICATE_OML         0x8986\n#define GL_RESAMPLE_ZERO_FILL_OML         0x8987\n#define GL_RESAMPLE_AVERAGE_OML           0x8988\n#define GL_RESAMPLE_DECIMATE_OML          0x8989\n#endif /* GL_OML_resample */\n\n#ifndef GL_OML_subsample\n#define GL_OML_subsample 1\n#define GL_FORMAT_SUBSAMPLE_24_24_OML     0x8982\n#define GL_FORMAT_SUBSAMPLE_244_244_OML   0x8983\n#endif /* GL_OML_subsample */\n\n#ifndef GL_OVR_multiview\n#define GL_OVR_multiview 1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632\n#define GL_MAX_VIEWS_OVR                  0x9631\n#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633\ntypedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);\n#endif\n#endif /* GL_OVR_multiview */\n\n#ifndef GL_OVR_multiview2\n#define GL_OVR_multiview2 1\n#endif /* GL_OVR_multiview2 */\n\n#ifndef GL_PGI_misc_hints\n#define GL_PGI_misc_hints 1\n#define GL_PREFER_DOUBLEBUFFER_HINT_PGI   0x1A1F8\n#define GL_CONSERVE_MEMORY_HINT_PGI       0x1A1FD\n#define GL_RECLAIM_MEMORY_HINT_PGI        0x1A1FE\n#define GL_NATIVE_GRAPHICS_HANDLE_PGI     0x1A202\n#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203\n#define GL_NATIVE_GRAPHICS_END_HINT_PGI   0x1A204\n#define GL_ALWAYS_FAST_HINT_PGI           0x1A20C\n#define GL_ALWAYS_SOFT_HINT_PGI           0x1A20D\n#define GL_ALLOW_DRAW_OBJ_HINT_PGI        0x1A20E\n#define GL_ALLOW_DRAW_WIN_HINT_PGI        0x1A20F\n#define GL_ALLOW_DRAW_FRG_HINT_PGI        0x1A210\n#define GL_ALLOW_DRAW_MEM_HINT_PGI        0x1A211\n#define GL_STRICT_DEPTHFUNC_HINT_PGI      0x1A216\n#define GL_STRICT_LIGHTING_HINT_PGI       0x1A217\n#define GL_STRICT_SCISSOR_HINT_PGI        0x1A218\n#define GL_FULL_STIPPLE_HINT_PGI          0x1A219\n#define GL_CLIP_NEAR_HINT_PGI             0x1A220\n#define GL_CLIP_FAR_HINT_PGI              0x1A221\n#define GL_WIDE_LINE_HINT_PGI             0x1A222\n#define GL_BACK_NORMALS_HINT_PGI          0x1A223\ntypedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);\n#endif\n#endif /* GL_PGI_misc_hints */\n\n#ifndef GL_PGI_vertex_hints\n#define GL_PGI_vertex_hints 1\n#define GL_VERTEX_DATA_HINT_PGI           0x1A22A\n#define GL_VERTEX_CONSISTENT_HINT_PGI     0x1A22B\n#define GL_MATERIAL_SIDE_HINT_PGI         0x1A22C\n#define GL_MAX_VERTEX_HINT_PGI            0x1A22D\n#define GL_COLOR3_BIT_PGI                 0x00010000\n#define GL_COLOR4_BIT_PGI                 0x00020000\n#define GL_EDGEFLAG_BIT_PGI               0x00040000\n#define GL_INDEX_BIT_PGI                  0x00080000\n#define GL_MAT_AMBIENT_BIT_PGI            0x00100000\n#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000\n#define GL_MAT_DIFFUSE_BIT_PGI            0x00400000\n#define GL_MAT_EMISSION_BIT_PGI           0x00800000\n#define GL_MAT_COLOR_INDEXES_BIT_PGI      0x01000000\n#define GL_MAT_SHININESS_BIT_PGI          0x02000000\n#define GL_MAT_SPECULAR_BIT_PGI           0x04000000\n#define GL_NORMAL_BIT_PGI                 0x08000000\n#define GL_TEXCOORD1_BIT_PGI              0x10000000\n#define GL_TEXCOORD2_BIT_PGI              0x20000000\n#define GL_TEXCOORD3_BIT_PGI              0x40000000\n#define GL_TEXCOORD4_BIT_PGI              0x80000000\n#define GL_VERTEX23_BIT_PGI               0x00000004\n#define GL_VERTEX4_BIT_PGI                0x00000008\n#endif /* GL_PGI_vertex_hints */\n\n#ifndef GL_REND_screen_coordinates\n#define GL_REND_screen_coordinates 1\n#define GL_SCREEN_COORDINATES_REND        0x8490\n#define GL_INVERTED_SCREEN_W_REND         0x8491\n#endif /* GL_REND_screen_coordinates */\n\n#ifndef GL_S3_s3tc\n#define GL_S3_s3tc 1\n#define GL_RGB_S3TC                       0x83A0\n#define GL_RGB4_S3TC                      0x83A1\n#define GL_RGBA_S3TC                      0x83A2\n#define GL_RGBA4_S3TC                     0x83A3\n#define GL_RGBA_DXT5_S3TC                 0x83A4\n#define GL_RGBA4_DXT5_S3TC                0x83A5\n#endif /* GL_S3_s3tc */\n\n#ifndef GL_SGIS_detail_texture\n#define GL_SGIS_detail_texture 1\n#define GL_DETAIL_TEXTURE_2D_SGIS         0x8095\n#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096\n#define GL_LINEAR_DETAIL_SGIS             0x8097\n#define GL_LINEAR_DETAIL_ALPHA_SGIS       0x8098\n#define GL_LINEAR_DETAIL_COLOR_SGIS       0x8099\n#define GL_DETAIL_TEXTURE_LEVEL_SGIS      0x809A\n#define GL_DETAIL_TEXTURE_MODE_SGIS       0x809B\n#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C\ntypedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);\ntypedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);\nGLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);\n#endif\n#endif /* GL_SGIS_detail_texture */\n\n#ifndef GL_SGIS_fog_function\n#define GL_SGIS_fog_function 1\n#define GL_FOG_FUNC_SGIS                  0x812A\n#define GL_FOG_FUNC_POINTS_SGIS           0x812B\n#define GL_MAX_FOG_FUNC_POINTS_SGIS       0x812C\ntypedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);\ntypedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);\nGLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);\n#endif\n#endif /* GL_SGIS_fog_function */\n\n#ifndef GL_SGIS_generate_mipmap\n#define GL_SGIS_generate_mipmap 1\n#define GL_GENERATE_MIPMAP_SGIS           0x8191\n#define GL_GENERATE_MIPMAP_HINT_SGIS      0x8192\n#endif /* GL_SGIS_generate_mipmap */\n\n#ifndef GL_SGIS_multisample\n#define GL_SGIS_multisample 1\n#define GL_MULTISAMPLE_SGIS               0x809D\n#define GL_SAMPLE_ALPHA_TO_MASK_SGIS      0x809E\n#define GL_SAMPLE_ALPHA_TO_ONE_SGIS       0x809F\n#define GL_SAMPLE_MASK_SGIS               0x80A0\n#define GL_1PASS_SGIS                     0x80A1\n#define GL_2PASS_0_SGIS                   0x80A2\n#define GL_2PASS_1_SGIS                   0x80A3\n#define GL_4PASS_0_SGIS                   0x80A4\n#define GL_4PASS_1_SGIS                   0x80A5\n#define GL_4PASS_2_SGIS                   0x80A6\n#define GL_4PASS_3_SGIS                   0x80A7\n#define GL_SAMPLE_BUFFERS_SGIS            0x80A8\n#define GL_SAMPLES_SGIS                   0x80A9\n#define GL_SAMPLE_MASK_VALUE_SGIS         0x80AA\n#define GL_SAMPLE_MASK_INVERT_SGIS        0x80AB\n#define GL_SAMPLE_PATTERN_SGIS            0x80AC\ntypedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);\ntypedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);\nGLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);\n#endif\n#endif /* GL_SGIS_multisample */\n\n#ifndef GL_SGIS_pixel_texture\n#define GL_SGIS_pixel_texture 1\n#define GL_PIXEL_TEXTURE_SGIS             0x8353\n#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354\n#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355\n#define GL_PIXEL_GROUP_COLOR_SGIS         0x8356\ntypedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);\nGLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);\nGLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);\n#endif\n#endif /* GL_SGIS_pixel_texture */\n\n#ifndef GL_SGIS_point_line_texgen\n#define GL_SGIS_point_line_texgen 1\n#define GL_EYE_DISTANCE_TO_POINT_SGIS     0x81F0\n#define GL_OBJECT_DISTANCE_TO_POINT_SGIS  0x81F1\n#define GL_EYE_DISTANCE_TO_LINE_SGIS      0x81F2\n#define GL_OBJECT_DISTANCE_TO_LINE_SGIS   0x81F3\n#define GL_EYE_POINT_SGIS                 0x81F4\n#define GL_OBJECT_POINT_SGIS              0x81F5\n#define GL_EYE_LINE_SGIS                  0x81F6\n#define GL_OBJECT_LINE_SGIS               0x81F7\n#endif /* GL_SGIS_point_line_texgen */\n\n#ifndef GL_SGIS_point_parameters\n#define GL_SGIS_point_parameters 1\n#define GL_POINT_SIZE_MIN_SGIS            0x8126\n#define GL_POINT_SIZE_MAX_SGIS            0x8127\n#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128\n#define GL_DISTANCE_ATTENUATION_SGIS      0x8129\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);\n#endif\n#endif /* GL_SGIS_point_parameters */\n\n#ifndef GL_SGIS_sharpen_texture\n#define GL_SGIS_sharpen_texture 1\n#define GL_LINEAR_SHARPEN_SGIS            0x80AD\n#define GL_LINEAR_SHARPEN_ALPHA_SGIS      0x80AE\n#define GL_LINEAR_SHARPEN_COLOR_SGIS      0x80AF\n#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0\ntypedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);\ntypedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);\nGLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);\n#endif\n#endif /* GL_SGIS_sharpen_texture */\n\n#ifndef GL_SGIS_texture4D\n#define GL_SGIS_texture4D 1\n#define GL_PACK_SKIP_VOLUMES_SGIS         0x8130\n#define GL_PACK_IMAGE_DEPTH_SGIS          0x8131\n#define GL_UNPACK_SKIP_VOLUMES_SGIS       0x8132\n#define GL_UNPACK_IMAGE_DEPTH_SGIS        0x8133\n#define GL_TEXTURE_4D_SGIS                0x8134\n#define GL_PROXY_TEXTURE_4D_SGIS          0x8135\n#define GL_TEXTURE_4DSIZE_SGIS            0x8136\n#define GL_TEXTURE_WRAP_Q_SGIS            0x8137\n#define GL_MAX_4D_TEXTURE_SIZE_SGIS       0x8138\n#define GL_TEXTURE_4D_BINDING_SGIS        0x814F\ntypedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const void *pixels);\nGLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const void *pixels);\n#endif\n#endif /* GL_SGIS_texture4D */\n\n#ifndef GL_SGIS_texture_border_clamp\n#define GL_SGIS_texture_border_clamp 1\n#define GL_CLAMP_TO_BORDER_SGIS           0x812D\n#endif /* GL_SGIS_texture_border_clamp */\n\n#ifndef GL_SGIS_texture_color_mask\n#define GL_SGIS_texture_color_mask 1\n#define GL_TEXTURE_COLOR_WRITEMASK_SGIS   0x81EF\ntypedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\n#endif\n#endif /* GL_SGIS_texture_color_mask */\n\n#ifndef GL_SGIS_texture_edge_clamp\n#define GL_SGIS_texture_edge_clamp 1\n#define GL_CLAMP_TO_EDGE_SGIS             0x812F\n#endif /* GL_SGIS_texture_edge_clamp */\n\n#ifndef GL_SGIS_texture_filter4\n#define GL_SGIS_texture_filter4 1\n#define GL_FILTER4_SGIS                   0x8146\n#define GL_TEXTURE_FILTER4_SIZE_SGIS      0x8147\ntypedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);\ntypedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);\nGLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);\n#endif\n#endif /* GL_SGIS_texture_filter4 */\n\n#ifndef GL_SGIS_texture_lod\n#define GL_SGIS_texture_lod 1\n#define GL_TEXTURE_MIN_LOD_SGIS           0x813A\n#define GL_TEXTURE_MAX_LOD_SGIS           0x813B\n#define GL_TEXTURE_BASE_LEVEL_SGIS        0x813C\n#define GL_TEXTURE_MAX_LEVEL_SGIS         0x813D\n#endif /* GL_SGIS_texture_lod */\n\n#ifndef GL_SGIS_texture_select\n#define GL_SGIS_texture_select 1\n#define GL_DUAL_ALPHA4_SGIS               0x8110\n#define GL_DUAL_ALPHA8_SGIS               0x8111\n#define GL_DUAL_ALPHA12_SGIS              0x8112\n#define GL_DUAL_ALPHA16_SGIS              0x8113\n#define GL_DUAL_LUMINANCE4_SGIS           0x8114\n#define GL_DUAL_LUMINANCE8_SGIS           0x8115\n#define GL_DUAL_LUMINANCE12_SGIS          0x8116\n#define GL_DUAL_LUMINANCE16_SGIS          0x8117\n#define GL_DUAL_INTENSITY4_SGIS           0x8118\n#define GL_DUAL_INTENSITY8_SGIS           0x8119\n#define GL_DUAL_INTENSITY12_SGIS          0x811A\n#define GL_DUAL_INTENSITY16_SGIS          0x811B\n#define GL_DUAL_LUMINANCE_ALPHA4_SGIS     0x811C\n#define GL_DUAL_LUMINANCE_ALPHA8_SGIS     0x811D\n#define GL_QUAD_ALPHA4_SGIS               0x811E\n#define GL_QUAD_ALPHA8_SGIS               0x811F\n#define GL_QUAD_LUMINANCE4_SGIS           0x8120\n#define GL_QUAD_LUMINANCE8_SGIS           0x8121\n#define GL_QUAD_INTENSITY4_SGIS           0x8122\n#define GL_QUAD_INTENSITY8_SGIS           0x8123\n#define GL_DUAL_TEXTURE_SELECT_SGIS       0x8124\n#define GL_QUAD_TEXTURE_SELECT_SGIS       0x8125\n#endif /* GL_SGIS_texture_select */\n\n#ifndef GL_SGIX_async\n#define GL_SGIX_async 1\n#define GL_ASYNC_MARKER_SGIX              0x8329\ntypedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);\ntypedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);\ntypedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp);\ntypedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range);\ntypedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range);\ntypedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);\nGLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);\nGLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);\nGLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);\nGLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);\nGLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);\n#endif\n#endif /* GL_SGIX_async */\n\n#ifndef GL_SGIX_async_histogram\n#define GL_SGIX_async_histogram 1\n#define GL_ASYNC_HISTOGRAM_SGIX           0x832C\n#define GL_MAX_ASYNC_HISTOGRAM_SGIX       0x832D\n#endif /* GL_SGIX_async_histogram */\n\n#ifndef GL_SGIX_async_pixel\n#define GL_SGIX_async_pixel 1\n#define GL_ASYNC_TEX_IMAGE_SGIX           0x835C\n#define GL_ASYNC_DRAW_PIXELS_SGIX         0x835D\n#define GL_ASYNC_READ_PIXELS_SGIX         0x835E\n#define GL_MAX_ASYNC_TEX_IMAGE_SGIX       0x835F\n#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX     0x8360\n#define GL_MAX_ASYNC_READ_PIXELS_SGIX     0x8361\n#endif /* GL_SGIX_async_pixel */\n\n#ifndef GL_SGIX_blend_alpha_minmax\n#define GL_SGIX_blend_alpha_minmax 1\n#define GL_ALPHA_MIN_SGIX                 0x8320\n#define GL_ALPHA_MAX_SGIX                 0x8321\n#endif /* GL_SGIX_blend_alpha_minmax */\n\n#ifndef GL_SGIX_calligraphic_fragment\n#define GL_SGIX_calligraphic_fragment 1\n#define GL_CALLIGRAPHIC_FRAGMENT_SGIX     0x8183\n#endif /* GL_SGIX_calligraphic_fragment */\n\n#ifndef GL_SGIX_clipmap\n#define GL_SGIX_clipmap 1\n#define GL_LINEAR_CLIPMAP_LINEAR_SGIX     0x8170\n#define GL_TEXTURE_CLIPMAP_CENTER_SGIX    0x8171\n#define GL_TEXTURE_CLIPMAP_FRAME_SGIX     0x8172\n#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX    0x8173\n#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174\n#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175\n#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX     0x8176\n#define GL_MAX_CLIPMAP_DEPTH_SGIX         0x8177\n#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178\n#define GL_NEAREST_CLIPMAP_NEAREST_SGIX   0x844D\n#define GL_NEAREST_CLIPMAP_LINEAR_SGIX    0x844E\n#define GL_LINEAR_CLIPMAP_NEAREST_SGIX    0x844F\n#endif /* GL_SGIX_clipmap */\n\n#ifndef GL_SGIX_convolution_accuracy\n#define GL_SGIX_convolution_accuracy 1\n#define GL_CONVOLUTION_HINT_SGIX          0x8316\n#endif /* GL_SGIX_convolution_accuracy */\n\n#ifndef GL_SGIX_depth_pass_instrument\n#define GL_SGIX_depth_pass_instrument 1\n#endif /* GL_SGIX_depth_pass_instrument */\n\n#ifndef GL_SGIX_depth_texture\n#define GL_SGIX_depth_texture 1\n#define GL_DEPTH_COMPONENT16_SGIX         0x81A5\n#define GL_DEPTH_COMPONENT24_SGIX         0x81A6\n#define GL_DEPTH_COMPONENT32_SGIX         0x81A7\n#endif /* GL_SGIX_depth_texture */\n\n#ifndef GL_SGIX_flush_raster\n#define GL_SGIX_flush_raster 1\ntypedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFlushRasterSGIX (void);\n#endif\n#endif /* GL_SGIX_flush_raster */\n\n#ifndef GL_SGIX_fog_offset\n#define GL_SGIX_fog_offset 1\n#define GL_FOG_OFFSET_SGIX                0x8198\n#define GL_FOG_OFFSET_VALUE_SGIX          0x8199\n#endif /* GL_SGIX_fog_offset */\n\n#ifndef GL_SGIX_fragment_lighting\n#define GL_SGIX_fragment_lighting 1\n#define GL_FRAGMENT_LIGHTING_SGIX         0x8400\n#define GL_FRAGMENT_COLOR_MATERIAL_SGIX   0x8401\n#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402\n#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403\n#define GL_MAX_FRAGMENT_LIGHTS_SGIX       0x8404\n#define GL_MAX_ACTIVE_LIGHTS_SGIX         0x8405\n#define GL_CURRENT_RASTER_NORMAL_SGIX     0x8406\n#define GL_LIGHT_ENV_MODE_SGIX            0x8407\n#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408\n#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409\n#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A\n#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B\n#define GL_FRAGMENT_LIGHT0_SGIX           0x840C\n#define GL_FRAGMENT_LIGHT1_SGIX           0x840D\n#define GL_FRAGMENT_LIGHT2_SGIX           0x840E\n#define GL_FRAGMENT_LIGHT3_SGIX           0x840F\n#define GL_FRAGMENT_LIGHT4_SGIX           0x8410\n#define GL_FRAGMENT_LIGHT5_SGIX           0x8411\n#define GL_FRAGMENT_LIGHT6_SGIX           0x8412\n#define GL_FRAGMENT_LIGHT7_SGIX           0x8413\ntypedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);\nGLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);\nGLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);\nGLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);\nGLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);\nGLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);\nGLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);\nGLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);\n#endif\n#endif /* GL_SGIX_fragment_lighting */\n\n#ifndef GL_SGIX_framezoom\n#define GL_SGIX_framezoom 1\n#define GL_FRAMEZOOM_SGIX                 0x818B\n#define GL_FRAMEZOOM_FACTOR_SGIX          0x818C\n#define GL_MAX_FRAMEZOOM_FACTOR_SGIX      0x818D\ntypedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFrameZoomSGIX (GLint factor);\n#endif\n#endif /* GL_SGIX_framezoom */\n\n#ifndef GL_SGIX_igloo_interface\n#define GL_SGIX_igloo_interface 1\ntypedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const void *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const void *params);\n#endif\n#endif /* GL_SGIX_igloo_interface */\n\n#ifndef GL_SGIX_instruments\n#define GL_SGIX_instruments 1\n#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180\n#define GL_INSTRUMENT_MEASUREMENTS_SGIX   0x8181\ntypedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);\ntypedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);\ntypedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p);\ntypedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker);\ntypedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void);\ntypedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI GLint APIENTRY glGetInstrumentsSGIX (void);\nGLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);\nGLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);\nGLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);\nGLAPI void APIENTRY glStartInstrumentsSGIX (void);\nGLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);\n#endif\n#endif /* GL_SGIX_instruments */\n\n#ifndef GL_SGIX_interlace\n#define GL_SGIX_interlace 1\n#define GL_INTERLACE_SGIX                 0x8094\n#endif /* GL_SGIX_interlace */\n\n#ifndef GL_SGIX_ir_instrument1\n#define GL_SGIX_ir_instrument1 1\n#define GL_IR_INSTRUMENT1_SGIX            0x817F\n#endif /* GL_SGIX_ir_instrument1 */\n\n#ifndef GL_SGIX_list_priority\n#define GL_SGIX_list_priority 1\n#define GL_LIST_PRIORITY_SGIX             0x8182\ntypedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);\ntypedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);\nGLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);\nGLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);\nGLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);\n#endif\n#endif /* GL_SGIX_list_priority */\n\n#ifndef GL_SGIX_pixel_texture\n#define GL_SGIX_pixel_texture 1\n#define GL_PIXEL_TEX_GEN_SGIX             0x8139\n#define GL_PIXEL_TEX_GEN_MODE_SGIX        0x832B\ntypedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);\n#endif\n#endif /* GL_SGIX_pixel_texture */\n\n#ifndef GL_SGIX_pixel_tiles\n#define GL_SGIX_pixel_tiles 1\n#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E\n#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F\n#define GL_PIXEL_TILE_WIDTH_SGIX          0x8140\n#define GL_PIXEL_TILE_HEIGHT_SGIX         0x8141\n#define GL_PIXEL_TILE_GRID_WIDTH_SGIX     0x8142\n#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX    0x8143\n#define GL_PIXEL_TILE_GRID_DEPTH_SGIX     0x8144\n#define GL_PIXEL_TILE_CACHE_SIZE_SGIX     0x8145\n#endif /* GL_SGIX_pixel_tiles */\n\n#ifndef GL_SGIX_polynomial_ffd\n#define GL_SGIX_polynomial_ffd 1\n#define GL_TEXTURE_DEFORMATION_BIT_SGIX   0x00000001\n#define GL_GEOMETRY_DEFORMATION_BIT_SGIX  0x00000002\n#define GL_GEOMETRY_DEFORMATION_SGIX      0x8194\n#define GL_TEXTURE_DEFORMATION_SGIX       0x8195\n#define GL_DEFORMATIONS_MASK_SGIX         0x8196\n#define GL_MAX_DEFORMATION_ORDER_SGIX     0x8197\ntypedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);\ntypedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);\ntypedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask);\ntypedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);\nGLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);\nGLAPI void APIENTRY glDeformSGIX (GLbitfield mask);\nGLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);\n#endif\n#endif /* GL_SGIX_polynomial_ffd */\n\n#ifndef GL_SGIX_reference_plane\n#define GL_SGIX_reference_plane 1\n#define GL_REFERENCE_PLANE_SGIX           0x817D\n#define GL_REFERENCE_PLANE_EQUATION_SGIX  0x817E\ntypedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);\n#endif\n#endif /* GL_SGIX_reference_plane */\n\n#ifndef GL_SGIX_resample\n#define GL_SGIX_resample 1\n#define GL_PACK_RESAMPLE_SGIX             0x842E\n#define GL_UNPACK_RESAMPLE_SGIX           0x842F\n#define GL_RESAMPLE_REPLICATE_SGIX        0x8433\n#define GL_RESAMPLE_ZERO_FILL_SGIX        0x8434\n#define GL_RESAMPLE_DECIMATE_SGIX         0x8430\n#endif /* GL_SGIX_resample */\n\n#ifndef GL_SGIX_scalebias_hint\n#define GL_SGIX_scalebias_hint 1\n#define GL_SCALEBIAS_HINT_SGIX            0x8322\n#endif /* GL_SGIX_scalebias_hint */\n\n#ifndef GL_SGIX_shadow\n#define GL_SGIX_shadow 1\n#define GL_TEXTURE_COMPARE_SGIX           0x819A\n#define GL_TEXTURE_COMPARE_OPERATOR_SGIX  0x819B\n#define GL_TEXTURE_LEQUAL_R_SGIX          0x819C\n#define GL_TEXTURE_GEQUAL_R_SGIX          0x819D\n#endif /* GL_SGIX_shadow */\n\n#ifndef GL_SGIX_shadow_ambient\n#define GL_SGIX_shadow_ambient 1\n#define GL_SHADOW_AMBIENT_SGIX            0x80BF\n#endif /* GL_SGIX_shadow_ambient */\n\n#ifndef GL_SGIX_sprite\n#define GL_SGIX_sprite 1\n#define GL_SPRITE_SGIX                    0x8148\n#define GL_SPRITE_MODE_SGIX               0x8149\n#define GL_SPRITE_AXIS_SGIX               0x814A\n#define GL_SPRITE_TRANSLATION_SGIX        0x814B\n#define GL_SPRITE_AXIAL_SGIX              0x814C\n#define GL_SPRITE_OBJECT_ALIGNED_SGIX     0x814D\n#define GL_SPRITE_EYE_ALIGNED_SGIX        0x814E\ntypedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);\ntypedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param);\ntypedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);\nGLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);\nGLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);\n#endif\n#endif /* GL_SGIX_sprite */\n\n#ifndef GL_SGIX_subsample\n#define GL_SGIX_subsample 1\n#define GL_PACK_SUBSAMPLE_RATE_SGIX       0x85A0\n#define GL_UNPACK_SUBSAMPLE_RATE_SGIX     0x85A1\n#define GL_PIXEL_SUBSAMPLE_4444_SGIX      0x85A2\n#define GL_PIXEL_SUBSAMPLE_2424_SGIX      0x85A3\n#define GL_PIXEL_SUBSAMPLE_4242_SGIX      0x85A4\n#endif /* GL_SGIX_subsample */\n\n#ifndef GL_SGIX_tag_sample_buffer\n#define GL_SGIX_tag_sample_buffer 1\ntypedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glTagSampleBufferSGIX (void);\n#endif\n#endif /* GL_SGIX_tag_sample_buffer */\n\n#ifndef GL_SGIX_texture_add_env\n#define GL_SGIX_texture_add_env 1\n#define GL_TEXTURE_ENV_BIAS_SGIX          0x80BE\n#endif /* GL_SGIX_texture_add_env */\n\n#ifndef GL_SGIX_texture_coordinate_clamp\n#define GL_SGIX_texture_coordinate_clamp 1\n#define GL_TEXTURE_MAX_CLAMP_S_SGIX       0x8369\n#define GL_TEXTURE_MAX_CLAMP_T_SGIX       0x836A\n#define GL_TEXTURE_MAX_CLAMP_R_SGIX       0x836B\n#endif /* GL_SGIX_texture_coordinate_clamp */\n\n#ifndef GL_SGIX_texture_lod_bias\n#define GL_SGIX_texture_lod_bias 1\n#define GL_TEXTURE_LOD_BIAS_S_SGIX        0x818E\n#define GL_TEXTURE_LOD_BIAS_T_SGIX        0x818F\n#define GL_TEXTURE_LOD_BIAS_R_SGIX        0x8190\n#endif /* GL_SGIX_texture_lod_bias */\n\n#ifndef GL_SGIX_texture_multi_buffer\n#define GL_SGIX_texture_multi_buffer 1\n#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E\n#endif /* GL_SGIX_texture_multi_buffer */\n\n#ifndef GL_SGIX_texture_scale_bias\n#define GL_SGIX_texture_scale_bias 1\n#define GL_POST_TEXTURE_FILTER_BIAS_SGIX  0x8179\n#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A\n#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B\n#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C\n#endif /* GL_SGIX_texture_scale_bias */\n\n#ifndef GL_SGIX_vertex_preclip\n#define GL_SGIX_vertex_preclip 1\n#define GL_VERTEX_PRECLIP_SGIX            0x83EE\n#define GL_VERTEX_PRECLIP_HINT_SGIX       0x83EF\n#endif /* GL_SGIX_vertex_preclip */\n\n#ifndef GL_SGIX_ycrcb\n#define GL_SGIX_ycrcb 1\n#define GL_YCRCB_422_SGIX                 0x81BB\n#define GL_YCRCB_444_SGIX                 0x81BC\n#endif /* GL_SGIX_ycrcb */\n\n#ifndef GL_SGIX_ycrcb_subsample\n#define GL_SGIX_ycrcb_subsample 1\n#endif /* GL_SGIX_ycrcb_subsample */\n\n#ifndef GL_SGIX_ycrcba\n#define GL_SGIX_ycrcba 1\n#define GL_YCRCB_SGIX                     0x8318\n#define GL_YCRCBA_SGIX                    0x8319\n#endif /* GL_SGIX_ycrcba */\n\n#ifndef GL_SGI_color_matrix\n#define GL_SGI_color_matrix 1\n#define GL_COLOR_MATRIX_SGI               0x80B1\n#define GL_COLOR_MATRIX_STACK_DEPTH_SGI   0x80B2\n#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3\n#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4\n#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5\n#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6\n#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7\n#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8\n#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9\n#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA\n#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB\n#endif /* GL_SGI_color_matrix */\n\n#ifndef GL_SGI_color_table\n#define GL_SGI_color_table 1\n#define GL_COLOR_TABLE_SGI                0x80D0\n#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1\n#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2\n#define GL_PROXY_COLOR_TABLE_SGI          0x80D3\n#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4\n#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5\n#define GL_COLOR_TABLE_SCALE_SGI          0x80D6\n#define GL_COLOR_TABLE_BIAS_SGI           0x80D7\n#define GL_COLOR_TABLE_FORMAT_SGI         0x80D8\n#define GL_COLOR_TABLE_WIDTH_SGI          0x80D9\n#define GL_COLOR_TABLE_RED_SIZE_SGI       0x80DA\n#define GL_COLOR_TABLE_GREEN_SIZE_SGI     0x80DB\n#define GL_COLOR_TABLE_BLUE_SIZE_SGI      0x80DC\n#define GL_COLOR_TABLE_ALPHA_SIZE_SGI     0x80DD\n#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE\n#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF\ntypedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);\ntypedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, void *table);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const void *table);\nGLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);\nGLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);\nGLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);\nGLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, void *table);\nGLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);\nGLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);\n#endif\n#endif /* GL_SGI_color_table */\n\n#ifndef GL_SGI_texture_color_table\n#define GL_SGI_texture_color_table 1\n#define GL_TEXTURE_COLOR_TABLE_SGI        0x80BC\n#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI  0x80BD\n#endif /* GL_SGI_texture_color_table */\n\n#ifndef GL_SUNX_constant_data\n#define GL_SUNX_constant_data 1\n#define GL_UNPACK_CONSTANT_DATA_SUNX      0x81D5\n#define GL_TEXTURE_CONSTANT_DATA_SUNX     0x81D6\ntypedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glFinishTextureSUNX (void);\n#endif\n#endif /* GL_SUNX_constant_data */\n\n#ifndef GL_SUN_convolution_border_modes\n#define GL_SUN_convolution_border_modes 1\n#define GL_WRAP_BORDER_SUN                0x81D4\n#endif /* GL_SUN_convolution_border_modes */\n\n#ifndef GL_SUN_global_alpha\n#define GL_SUN_global_alpha 1\n#define GL_GLOBAL_ALPHA_SUN               0x81D9\n#define GL_GLOBAL_ALPHA_FACTOR_SUN        0x81DA\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor);\ntypedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);\nGLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);\nGLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);\nGLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);\nGLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);\nGLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);\nGLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);\nGLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);\n#endif\n#endif /* GL_SUN_global_alpha */\n\n#ifndef GL_SUN_mesh_array\n#define GL_SUN_mesh_array 1\n#define GL_QUAD_MESH_SUN                  0x8614\n#define GL_TRIANGLE_MESH_SUN              0x8615\ntypedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);\n#endif\n#endif /* GL_SUN_mesh_array */\n\n#ifndef GL_SUN_slice_accum\n#define GL_SUN_slice_accum 1\n#define GL_SLICE_ACCUM_SUN                0x85CC\n#endif /* GL_SUN_slice_accum */\n\n#ifndef GL_SUN_triangle_list\n#define GL_SUN_triangle_list 1\n#define GL_RESTART_SUN                    0x0001\n#define GL_REPLACE_MIDDLE_SUN             0x0002\n#define GL_REPLACE_OLDEST_SUN             0x0003\n#define GL_TRIANGLE_LIST_SUN              0x81D7\n#define GL_REPLACEMENT_CODE_SUN           0x81D8\n#define GL_REPLACEMENT_CODE_ARRAY_SUN     0x85C0\n#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1\n#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2\n#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3\n#define GL_R1UI_V3F_SUN                   0x85C4\n#define GL_R1UI_C4UB_V3F_SUN              0x85C5\n#define GL_R1UI_C3F_V3F_SUN               0x85C6\n#define GL_R1UI_N3F_V3F_SUN               0x85C7\n#define GL_R1UI_C4F_N3F_V3F_SUN           0x85C8\n#define GL_R1UI_T2F_V3F_SUN               0x85C9\n#define GL_R1UI_T2F_N3F_V3F_SUN           0x85CA\n#define GL_R1UI_T2F_C4F_N3F_V3F_SUN       0x85CB\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const void **pointer);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);\nGLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);\nGLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);\nGLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);\nGLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);\nGLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);\nGLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const void **pointer);\n#endif\n#endif /* GL_SUN_triangle_list */\n\n#ifndef GL_SUN_vertex\n#define GL_SUN_vertex 1\ntypedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);\ntypedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);\nGLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);\nGLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);\nGLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);\nGLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);\nGLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);\n#endif\n#endif /* GL_SUN_vertex */\n\n#ifndef GL_WIN_phong_shading\n#define GL_WIN_phong_shading 1\n#define GL_PHONG_WIN                      0x80EA\n#define GL_PHONG_HINT_WIN                 0x80EB\n#endif /* GL_WIN_phong_shading */\n\n#ifndef GL_WIN_specular_fog\n#define GL_WIN_specular_fog 1\n#define GL_FOG_SPECULAR_TEXTURE_WIN       0x80EC\n#endif /* GL_WIN_specular_fog */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_opengles.h\n *\n *  This is a simple file to encapsulate the OpenGL ES 1.X API headers.\n */\n#include \"SDL_config.h\"\n\n#ifdef __IPHONEOS__\n#include <OpenGLES/ES1/gl.h>\n#include <OpenGLES/ES1/glext.h>\n#else\n#include <GLES/gl.h>\n#include <GLES/glext.h>\n#endif\n\n#ifndef APIENTRY\n#define APIENTRY\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles2.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_opengles2.h\n *\n *  This is a simple file to encapsulate the OpenGL ES 2.0 API headers.\n */\n#include \"SDL_config.h\"\n\n#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS)\n\n#ifdef __IPHONEOS__\n#include <OpenGLES/ES2/gl.h>\n#include <OpenGLES/ES2/glext.h>\n#else\n#include <GLES2/gl2platform.h>\n#include <GLES2/gl2.h>\n#include <GLES2/gl2ext.h>\n#endif\n\n#else /* _MSC_VER */\n\n/* OpenGL ES2 headers for Visual Studio */\n#include \"SDL_opengles2_khrplatform.h\"\n#include \"SDL_opengles2_gl2platform.h\"\n#include \"SDL_opengles2_gl2.h\"\n#include \"SDL_opengles2_gl2ext.h\"\n\n#endif /* _MSC_VER */\n\n#ifndef APIENTRY\n#define APIENTRY GL_APIENTRY\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles2_gl2.h",
    "content": "#ifndef __gles2_gl2_h_\n#define __gles2_gl2_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: MIT\n**\n** This header is generated from the Khronos OpenGL / OpenGL ES XML\n** API Registry. The current version of the Registry, generator scripts\n** used to make the header, and the header can be found at\n**   https://github.com/KhronosGroup/OpenGL-Registry\n*/\n\n/*#include <GLES2/gl2platform.h>*/\n\n#ifndef GL_APIENTRYP\n#define GL_APIENTRYP GL_APIENTRY*\n#endif\n\n#ifndef GL_GLES_PROTOTYPES\n#define GL_GLES_PROTOTYPES 1\n#endif\n\n/* Generated on date 20220530 */\n\n/* Generated C header for:\n * API: gles2\n * Profile: common\n * Versions considered: 2\\.[0-9]\n * Versions emitted: .*\n * Default extensions included: None\n * Additional extensions included: _nomatch_^\n * Extensions removed: _nomatch_^\n */\n\n#ifndef GL_ES_VERSION_2_0\n#define GL_ES_VERSION_2_0 1\n/*#include <KHR/khrplatform.h>*/\ntypedef khronos_int8_t GLbyte;\ntypedef khronos_float_t GLclampf;\ntypedef khronos_int32_t GLfixed;\ntypedef khronos_int16_t GLshort;\ntypedef khronos_uint16_t GLushort;\ntypedef void GLvoid;\ntypedef struct __GLsync *GLsync;\ntypedef khronos_int64_t GLint64;\ntypedef khronos_uint64_t GLuint64;\ntypedef unsigned int GLenum;\ntypedef unsigned int GLuint;\ntypedef char GLchar;\ntypedef khronos_float_t GLfloat;\ntypedef khronos_ssize_t GLsizeiptr;\ntypedef khronos_intptr_t GLintptr;\ntypedef unsigned int GLbitfield;\ntypedef int GLint;\ntypedef unsigned char GLboolean;\ntypedef int GLsizei;\ntypedef khronos_uint8_t GLubyte;\n#define GL_DEPTH_BUFFER_BIT               0x00000100\n#define GL_STENCIL_BUFFER_BIT             0x00000400\n#define GL_COLOR_BUFFER_BIT               0x00004000\n#define GL_FALSE                          0\n#define GL_TRUE                           1\n#define GL_POINTS                         0x0000\n#define GL_LINES                          0x0001\n#define GL_LINE_LOOP                      0x0002\n#define GL_LINE_STRIP                     0x0003\n#define GL_TRIANGLES                      0x0004\n#define GL_TRIANGLE_STRIP                 0x0005\n#define GL_TRIANGLE_FAN                   0x0006\n#define GL_ZERO                           0\n#define GL_ONE                            1\n#define GL_SRC_COLOR                      0x0300\n#define GL_ONE_MINUS_SRC_COLOR            0x0301\n#define GL_SRC_ALPHA                      0x0302\n#define GL_ONE_MINUS_SRC_ALPHA            0x0303\n#define GL_DST_ALPHA                      0x0304\n#define GL_ONE_MINUS_DST_ALPHA            0x0305\n#define GL_DST_COLOR                      0x0306\n#define GL_ONE_MINUS_DST_COLOR            0x0307\n#define GL_SRC_ALPHA_SATURATE             0x0308\n#define GL_FUNC_ADD                       0x8006\n#define GL_BLEND_EQUATION                 0x8009\n#define GL_BLEND_EQUATION_RGB             0x8009\n#define GL_BLEND_EQUATION_ALPHA           0x883D\n#define GL_FUNC_SUBTRACT                  0x800A\n#define GL_FUNC_REVERSE_SUBTRACT          0x800B\n#define GL_BLEND_DST_RGB                  0x80C8\n#define GL_BLEND_SRC_RGB                  0x80C9\n#define GL_BLEND_DST_ALPHA                0x80CA\n#define GL_BLEND_SRC_ALPHA                0x80CB\n#define GL_CONSTANT_COLOR                 0x8001\n#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002\n#define GL_CONSTANT_ALPHA                 0x8003\n#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004\n#define GL_BLEND_COLOR                    0x8005\n#define GL_ARRAY_BUFFER                   0x8892\n#define GL_ELEMENT_ARRAY_BUFFER           0x8893\n#define GL_ARRAY_BUFFER_BINDING           0x8894\n#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895\n#define GL_STREAM_DRAW                    0x88E0\n#define GL_STATIC_DRAW                    0x88E4\n#define GL_DYNAMIC_DRAW                   0x88E8\n#define GL_BUFFER_SIZE                    0x8764\n#define GL_BUFFER_USAGE                   0x8765\n#define GL_CURRENT_VERTEX_ATTRIB          0x8626\n#define GL_FRONT                          0x0404\n#define GL_BACK                           0x0405\n#define GL_FRONT_AND_BACK                 0x0408\n#define GL_TEXTURE_2D                     0x0DE1\n#define GL_CULL_FACE                      0x0B44\n#define GL_BLEND                          0x0BE2\n#define GL_DITHER                         0x0BD0\n#define GL_STENCIL_TEST                   0x0B90\n#define GL_DEPTH_TEST                     0x0B71\n#define GL_SCISSOR_TEST                   0x0C11\n#define GL_POLYGON_OFFSET_FILL            0x8037\n#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E\n#define GL_SAMPLE_COVERAGE                0x80A0\n#define GL_NO_ERROR                       0\n#define GL_INVALID_ENUM                   0x0500\n#define GL_INVALID_VALUE                  0x0501\n#define GL_INVALID_OPERATION              0x0502\n#define GL_OUT_OF_MEMORY                  0x0505\n#define GL_CW                             0x0900\n#define GL_CCW                            0x0901\n#define GL_LINE_WIDTH                     0x0B21\n#define GL_ALIASED_POINT_SIZE_RANGE       0x846D\n#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E\n#define GL_CULL_FACE_MODE                 0x0B45\n#define GL_FRONT_FACE                     0x0B46\n#define GL_DEPTH_RANGE                    0x0B70\n#define GL_DEPTH_WRITEMASK                0x0B72\n#define GL_DEPTH_CLEAR_VALUE              0x0B73\n#define GL_DEPTH_FUNC                     0x0B74\n#define GL_STENCIL_CLEAR_VALUE            0x0B91\n#define GL_STENCIL_FUNC                   0x0B92\n#define GL_STENCIL_FAIL                   0x0B94\n#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95\n#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96\n#define GL_STENCIL_REF                    0x0B97\n#define GL_STENCIL_VALUE_MASK             0x0B93\n#define GL_STENCIL_WRITEMASK              0x0B98\n#define GL_STENCIL_BACK_FUNC              0x8800\n#define GL_STENCIL_BACK_FAIL              0x8801\n#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802\n#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803\n#define GL_STENCIL_BACK_REF               0x8CA3\n#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4\n#define GL_STENCIL_BACK_WRITEMASK         0x8CA5\n#define GL_VIEWPORT                       0x0BA2\n#define GL_SCISSOR_BOX                    0x0C10\n#define GL_COLOR_CLEAR_VALUE              0x0C22\n#define GL_COLOR_WRITEMASK                0x0C23\n#define GL_UNPACK_ALIGNMENT               0x0CF5\n#define GL_PACK_ALIGNMENT                 0x0D05\n#define GL_MAX_TEXTURE_SIZE               0x0D33\n#define GL_MAX_VIEWPORT_DIMS              0x0D3A\n#define GL_SUBPIXEL_BITS                  0x0D50\n#define GL_RED_BITS                       0x0D52\n#define GL_GREEN_BITS                     0x0D53\n#define GL_BLUE_BITS                      0x0D54\n#define GL_ALPHA_BITS                     0x0D55\n#define GL_DEPTH_BITS                     0x0D56\n#define GL_STENCIL_BITS                   0x0D57\n#define GL_POLYGON_OFFSET_UNITS           0x2A00\n#define GL_POLYGON_OFFSET_FACTOR          0x8038\n#define GL_TEXTURE_BINDING_2D             0x8069\n#define GL_SAMPLE_BUFFERS                 0x80A8\n#define GL_SAMPLES                        0x80A9\n#define GL_SAMPLE_COVERAGE_VALUE          0x80AA\n#define GL_SAMPLE_COVERAGE_INVERT         0x80AB\n#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2\n#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3\n#define GL_DONT_CARE                      0x1100\n#define GL_FASTEST                        0x1101\n#define GL_NICEST                         0x1102\n#define GL_GENERATE_MIPMAP_HINT           0x8192\n#define GL_BYTE                           0x1400\n#define GL_UNSIGNED_BYTE                  0x1401\n#define GL_SHORT                          0x1402\n#define GL_UNSIGNED_SHORT                 0x1403\n#define GL_INT                            0x1404\n#define GL_UNSIGNED_INT                   0x1405\n#define GL_FLOAT                          0x1406\n#define GL_FIXED                          0x140C\n#define GL_DEPTH_COMPONENT                0x1902\n#define GL_ALPHA                          0x1906\n#define GL_RGB                            0x1907\n#define GL_RGBA                           0x1908\n#define GL_LUMINANCE                      0x1909\n#define GL_LUMINANCE_ALPHA                0x190A\n#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033\n#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034\n#define GL_UNSIGNED_SHORT_5_6_5           0x8363\n#define GL_FRAGMENT_SHADER                0x8B30\n#define GL_VERTEX_SHADER                  0x8B31\n#define GL_MAX_VERTEX_ATTRIBS             0x8869\n#define GL_MAX_VERTEX_UNIFORM_VECTORS     0x8DFB\n#define GL_MAX_VARYING_VECTORS            0x8DFC\n#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D\n#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C\n#define GL_MAX_TEXTURE_IMAGE_UNITS        0x8872\n#define GL_MAX_FRAGMENT_UNIFORM_VECTORS   0x8DFD\n#define GL_SHADER_TYPE                    0x8B4F\n#define GL_DELETE_STATUS                  0x8B80\n#define GL_LINK_STATUS                    0x8B82\n#define GL_VALIDATE_STATUS                0x8B83\n#define GL_ATTACHED_SHADERS               0x8B85\n#define GL_ACTIVE_UNIFORMS                0x8B86\n#define GL_ACTIVE_UNIFORM_MAX_LENGTH      0x8B87\n#define GL_ACTIVE_ATTRIBUTES              0x8B89\n#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH    0x8B8A\n#define GL_SHADING_LANGUAGE_VERSION       0x8B8C\n#define GL_CURRENT_PROGRAM                0x8B8D\n#define GL_NEVER                          0x0200\n#define GL_LESS                           0x0201\n#define GL_EQUAL                          0x0202\n#define GL_LEQUAL                         0x0203\n#define GL_GREATER                        0x0204\n#define GL_NOTEQUAL                       0x0205\n#define GL_GEQUAL                         0x0206\n#define GL_ALWAYS                         0x0207\n#define GL_KEEP                           0x1E00\n#define GL_REPLACE                        0x1E01\n#define GL_INCR                           0x1E02\n#define GL_DECR                           0x1E03\n#define GL_INVERT                         0x150A\n#define GL_INCR_WRAP                      0x8507\n#define GL_DECR_WRAP                      0x8508\n#define GL_VENDOR                         0x1F00\n#define GL_RENDERER                       0x1F01\n#define GL_VERSION                        0x1F02\n#define GL_EXTENSIONS                     0x1F03\n#define GL_NEAREST                        0x2600\n#define GL_LINEAR                         0x2601\n#define GL_NEAREST_MIPMAP_NEAREST         0x2700\n#define GL_LINEAR_MIPMAP_NEAREST          0x2701\n#define GL_NEAREST_MIPMAP_LINEAR          0x2702\n#define GL_LINEAR_MIPMAP_LINEAR           0x2703\n#define GL_TEXTURE_MAG_FILTER             0x2800\n#define GL_TEXTURE_MIN_FILTER             0x2801\n#define GL_TEXTURE_WRAP_S                 0x2802\n#define GL_TEXTURE_WRAP_T                 0x2803\n#define GL_TEXTURE                        0x1702\n#define GL_TEXTURE_CUBE_MAP               0x8513\n#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518\n#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519\n#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A\n#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C\n#define GL_TEXTURE0                       0x84C0\n#define GL_TEXTURE1                       0x84C1\n#define GL_TEXTURE2                       0x84C2\n#define GL_TEXTURE3                       0x84C3\n#define GL_TEXTURE4                       0x84C4\n#define GL_TEXTURE5                       0x84C5\n#define GL_TEXTURE6                       0x84C6\n#define GL_TEXTURE7                       0x84C7\n#define GL_TEXTURE8                       0x84C8\n#define GL_TEXTURE9                       0x84C9\n#define GL_TEXTURE10                      0x84CA\n#define GL_TEXTURE11                      0x84CB\n#define GL_TEXTURE12                      0x84CC\n#define GL_TEXTURE13                      0x84CD\n#define GL_TEXTURE14                      0x84CE\n#define GL_TEXTURE15                      0x84CF\n#define GL_TEXTURE16                      0x84D0\n#define GL_TEXTURE17                      0x84D1\n#define GL_TEXTURE18                      0x84D2\n#define GL_TEXTURE19                      0x84D3\n#define GL_TEXTURE20                      0x84D4\n#define GL_TEXTURE21                      0x84D5\n#define GL_TEXTURE22                      0x84D6\n#define GL_TEXTURE23                      0x84D7\n#define GL_TEXTURE24                      0x84D8\n#define GL_TEXTURE25                      0x84D9\n#define GL_TEXTURE26                      0x84DA\n#define GL_TEXTURE27                      0x84DB\n#define GL_TEXTURE28                      0x84DC\n#define GL_TEXTURE29                      0x84DD\n#define GL_TEXTURE30                      0x84DE\n#define GL_TEXTURE31                      0x84DF\n#define GL_ACTIVE_TEXTURE                 0x84E0\n#define GL_REPEAT                         0x2901\n#define GL_CLAMP_TO_EDGE                  0x812F\n#define GL_MIRRORED_REPEAT                0x8370\n#define GL_FLOAT_VEC2                     0x8B50\n#define GL_FLOAT_VEC3                     0x8B51\n#define GL_FLOAT_VEC4                     0x8B52\n#define GL_INT_VEC2                       0x8B53\n#define GL_INT_VEC3                       0x8B54\n#define GL_INT_VEC4                       0x8B55\n#define GL_BOOL                           0x8B56\n#define GL_BOOL_VEC2                      0x8B57\n#define GL_BOOL_VEC3                      0x8B58\n#define GL_BOOL_VEC4                      0x8B59\n#define GL_FLOAT_MAT2                     0x8B5A\n#define GL_FLOAT_MAT3                     0x8B5B\n#define GL_FLOAT_MAT4                     0x8B5C\n#define GL_SAMPLER_2D                     0x8B5E\n#define GL_SAMPLER_CUBE                   0x8B60\n#define GL_VERTEX_ATTRIB_ARRAY_ENABLED    0x8622\n#define GL_VERTEX_ATTRIB_ARRAY_SIZE       0x8623\n#define GL_VERTEX_ATTRIB_ARRAY_STRIDE     0x8624\n#define GL_VERTEX_ATTRIB_ARRAY_TYPE       0x8625\n#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A\n#define GL_VERTEX_ATTRIB_ARRAY_POINTER    0x8645\n#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F\n#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A\n#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B\n#define GL_COMPILE_STATUS                 0x8B81\n#define GL_INFO_LOG_LENGTH                0x8B84\n#define GL_SHADER_SOURCE_LENGTH           0x8B88\n#define GL_SHADER_COMPILER                0x8DFA\n#define GL_SHADER_BINARY_FORMATS          0x8DF8\n#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9\n#define GL_LOW_FLOAT                      0x8DF0\n#define GL_MEDIUM_FLOAT                   0x8DF1\n#define GL_HIGH_FLOAT                     0x8DF2\n#define GL_LOW_INT                        0x8DF3\n#define GL_MEDIUM_INT                     0x8DF4\n#define GL_HIGH_INT                       0x8DF5\n#define GL_FRAMEBUFFER                    0x8D40\n#define GL_RENDERBUFFER                   0x8D41\n#define GL_RGBA4                          0x8056\n#define GL_RGB5_A1                        0x8057\n#define GL_RGB565                         0x8D62\n#define GL_DEPTH_COMPONENT16              0x81A5\n#define GL_STENCIL_INDEX8                 0x8D48\n#define GL_RENDERBUFFER_WIDTH             0x8D42\n#define GL_RENDERBUFFER_HEIGHT            0x8D43\n#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44\n#define GL_RENDERBUFFER_RED_SIZE          0x8D50\n#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51\n#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52\n#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53\n#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54\n#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0\n#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3\n#define GL_COLOR_ATTACHMENT0              0x8CE0\n#define GL_DEPTH_ATTACHMENT               0x8D00\n#define GL_STENCIL_ATTACHMENT             0x8D20\n#define GL_NONE                           0\n#define GL_FRAMEBUFFER_COMPLETE           0x8CD5\n#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6\n#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7\n#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9\n#define GL_FRAMEBUFFER_UNSUPPORTED        0x8CDD\n#define GL_FRAMEBUFFER_BINDING            0x8CA6\n#define GL_RENDERBUFFER_BINDING           0x8CA7\n#define GL_MAX_RENDERBUFFER_SIZE          0x84E8\n#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506\ntypedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);\ntypedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);\ntypedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);\ntypedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);\ntypedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);\ntypedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);\ntypedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\ntypedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);\ntypedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\ntypedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);\ntypedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);\ntypedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\ntypedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d);\ntypedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s);\ntypedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\ntypedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);\ntypedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\ntypedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\ntypedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void);\ntypedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);\ntypedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);\ntypedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);\ntypedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);\ntypedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);\ntypedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);\ntypedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);\ntypedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func);\ntypedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag);\ntypedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f);\ntypedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);\ntypedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap);\ntypedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);\ntypedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);\ntypedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap);\ntypedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);\ntypedef void (GL_APIENTRYP PFNGLFINISHPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\ntypedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);\ntypedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target);\ntypedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);\ntypedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);\ntypedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);\ntypedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\ntypedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data);\ntypedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data);\ntypedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);\ntypedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\ntypedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);\ntypedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer);\ntypedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode);\ntypedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer);\ntypedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);\ntypedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);\ntypedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program);\ntypedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);\ntypedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader);\ntypedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture);\ntypedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width);\ntypedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);\ntypedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);\ntypedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);\ntypedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);\ntypedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert);\ntypedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);\ntypedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\ntypedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);\ntypedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\ntypedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);\ntypedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);\n#if GL_GLES_PROTOTYPES\nGL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture);\nGL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader);\nGL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);\nGL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);\nGL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);\nGL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);\nGL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);\nGL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode);\nGL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);\nGL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);\nGL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);\nGL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);\nGL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data);\nGL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target);\nGL_APICALL void GL_APIENTRY glClear (GLbitfield mask);\nGL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);\nGL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d);\nGL_APICALL void GL_APIENTRY glClearStencil (GLint s);\nGL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);\nGL_APICALL void GL_APIENTRY glCompileShader (GLuint shader);\nGL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data);\nGL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);\nGL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);\nGL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGL_APICALL GLuint GL_APIENTRY glCreateProgram (void);\nGL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type);\nGL_APICALL void GL_APIENTRY glCullFace (GLenum mode);\nGL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);\nGL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);\nGL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program);\nGL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);\nGL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader);\nGL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);\nGL_APICALL void GL_APIENTRY glDepthFunc (GLenum func);\nGL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag);\nGL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f);\nGL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader);\nGL_APICALL void GL_APIENTRY glDisable (GLenum cap);\nGL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index);\nGL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);\nGL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);\nGL_APICALL void GL_APIENTRY glEnable (GLenum cap);\nGL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index);\nGL_APICALL void GL_APIENTRY glFinish (void);\nGL_APICALL void GL_APIENTRY glFlush (void);\nGL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);\nGL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);\nGL_APICALL void GL_APIENTRY glFrontFace (GLenum mode);\nGL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);\nGL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target);\nGL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);\nGL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);\nGL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures);\nGL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);\nGL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);\nGL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);\nGL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data);\nGL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);\nGL_APICALL GLenum GL_APIENTRY glGetError (void);\nGL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data);\nGL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data);\nGL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);\nGL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\nGL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name);\nGL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);\nGL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);\nGL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);\nGL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);\nGL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);\nGL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer);\nGL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode);\nGL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);\nGL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap);\nGL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer);\nGL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program);\nGL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);\nGL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader);\nGL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture);\nGL_APICALL void GL_APIENTRY glLineWidth (GLfloat width);\nGL_APICALL void GL_APIENTRY glLinkProgram (GLuint program);\nGL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);\nGL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);\nGL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels);\nGL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void);\nGL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert);\nGL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length);\nGL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);\nGL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilMask (GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);\nGL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);\nGL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);\nGL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);\nGL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);\nGL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);\nGL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);\nGL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);\nGL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0);\nGL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0);\nGL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);\nGL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);\nGL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);\nGL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUseProgram (GLuint program);\nGL_APICALL void GL_APIENTRY glValidateProgram (GLuint program);\nGL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);\nGL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);\nGL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);\nGL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);\nGL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);\nGL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_ES_VERSION_2_0 */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles2_gl2ext.h",
    "content": "#ifndef __gles2_gl2ext_h_\n#define __gles2_gl2ext_h_ 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*\n** Copyright 2013-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: MIT\n**\n** This header is generated from the Khronos OpenGL / OpenGL ES XML\n** API Registry. The current version of the Registry, generator scripts\n** used to make the header, and the header can be found at\n**   https://github.com/KhronosGroup/OpenGL-Registry\n*/\n\n#ifndef GL_APIENTRYP\n#define GL_APIENTRYP GL_APIENTRY*\n#endif\n\n/* Generated on date 20220530 */\n\n/* Generated C header for:\n * API: gles2\n * Profile: common\n * Versions considered: 2\\.[0-9]\n * Versions emitted: _nomatch_^\n * Default extensions included: gles2\n * Additional extensions included: _nomatch_^\n * Extensions removed: _nomatch_^\n */\n\n#ifndef GL_KHR_blend_equation_advanced\n#define GL_KHR_blend_equation_advanced 1\n#define GL_MULTIPLY_KHR                   0x9294\n#define GL_SCREEN_KHR                     0x9295\n#define GL_OVERLAY_KHR                    0x9296\n#define GL_DARKEN_KHR                     0x9297\n#define GL_LIGHTEN_KHR                    0x9298\n#define GL_COLORDODGE_KHR                 0x9299\n#define GL_COLORBURN_KHR                  0x929A\n#define GL_HARDLIGHT_KHR                  0x929B\n#define GL_SOFTLIGHT_KHR                  0x929C\n#define GL_DIFFERENCE_KHR                 0x929E\n#define GL_EXCLUSION_KHR                  0x92A0\n#define GL_HSL_HUE_KHR                    0x92AD\n#define GL_HSL_SATURATION_KHR             0x92AE\n#define GL_HSL_COLOR_KHR                  0x92AF\n#define GL_HSL_LUMINOSITY_KHR             0x92B0\ntypedef void (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBlendBarrierKHR (void);\n#endif\n#endif /* GL_KHR_blend_equation_advanced */\n\n#ifndef GL_KHR_blend_equation_advanced_coherent\n#define GL_KHR_blend_equation_advanced_coherent 1\n#define GL_BLEND_ADVANCED_COHERENT_KHR    0x9285\n#endif /* GL_KHR_blend_equation_advanced_coherent */\n\n#ifndef GL_KHR_context_flush_control\n#define GL_KHR_context_flush_control 1\n#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR   0x82FB\n#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC\n#endif /* GL_KHR_context_flush_control */\n\n#ifndef GL_KHR_debug\n#define GL_KHR_debug 1\ntypedef void (GL_APIENTRY  *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);\n#define GL_SAMPLER                        0x82E6\n#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR   0x8242\n#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243\n#define GL_DEBUG_CALLBACK_FUNCTION_KHR    0x8244\n#define GL_DEBUG_CALLBACK_USER_PARAM_KHR  0x8245\n#define GL_DEBUG_SOURCE_API_KHR           0x8246\n#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247\n#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248\n#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR   0x8249\n#define GL_DEBUG_SOURCE_APPLICATION_KHR   0x824A\n#define GL_DEBUG_SOURCE_OTHER_KHR         0x824B\n#define GL_DEBUG_TYPE_ERROR_KHR           0x824C\n#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D\n#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E\n#define GL_DEBUG_TYPE_PORTABILITY_KHR     0x824F\n#define GL_DEBUG_TYPE_PERFORMANCE_KHR     0x8250\n#define GL_DEBUG_TYPE_OTHER_KHR           0x8251\n#define GL_DEBUG_TYPE_MARKER_KHR          0x8268\n#define GL_DEBUG_TYPE_PUSH_GROUP_KHR      0x8269\n#define GL_DEBUG_TYPE_POP_GROUP_KHR       0x826A\n#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B\n#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C\n#define GL_DEBUG_GROUP_STACK_DEPTH_KHR    0x826D\n#define GL_BUFFER_KHR                     0x82E0\n#define GL_SHADER_KHR                     0x82E1\n#define GL_PROGRAM_KHR                    0x82E2\n#define GL_VERTEX_ARRAY_KHR               0x8074\n#define GL_QUERY_KHR                      0x82E3\n#define GL_PROGRAM_PIPELINE_KHR           0x82E4\n#define GL_SAMPLER_KHR                    0x82E6\n#define GL_MAX_LABEL_LENGTH_KHR           0x82E8\n#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR   0x9143\n#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR  0x9144\n#define GL_DEBUG_LOGGED_MESSAGES_KHR      0x9145\n#define GL_DEBUG_SEVERITY_HIGH_KHR        0x9146\n#define GL_DEBUG_SEVERITY_MEDIUM_KHR      0x9147\n#define GL_DEBUG_SEVERITY_LOW_KHR         0x9148\n#define GL_DEBUG_OUTPUT_KHR               0x92E0\n#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR     0x00000002\n#define GL_STACK_OVERFLOW_KHR             0x0503\n#define GL_STACK_UNDERFLOW_KHR            0x0504\ntypedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\ntypedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\ntypedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam);\ntypedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\ntypedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message);\ntypedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);\ntypedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);\ntypedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label);\ntypedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);\ntypedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);\nGL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);\nGL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam);\nGL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);\nGL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message);\nGL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void);\nGL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);\nGL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);\nGL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label);\nGL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);\nGL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params);\n#endif\n#endif /* GL_KHR_debug */\n\n#ifndef GL_KHR_no_error\n#define GL_KHR_no_error 1\n#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR  0x00000008\n#endif /* GL_KHR_no_error */\n\n#ifndef GL_KHR_parallel_shader_compile\n#define GL_KHR_parallel_shader_compile 1\n#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0\n#define GL_COMPLETION_STATUS_KHR          0x91B1\ntypedef void (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glMaxShaderCompilerThreadsKHR (GLuint count);\n#endif\n#endif /* GL_KHR_parallel_shader_compile */\n\n#ifndef GL_KHR_robust_buffer_access_behavior\n#define GL_KHR_robust_buffer_access_behavior 1\n#endif /* GL_KHR_robust_buffer_access_behavior */\n\n#ifndef GL_KHR_robustness\n#define GL_KHR_robustness 1\n#define GL_CONTEXT_ROBUST_ACCESS_KHR      0x90F3\n#define GL_LOSE_CONTEXT_ON_RESET_KHR      0x8252\n#define GL_GUILTY_CONTEXT_RESET_KHR       0x8253\n#define GL_INNOCENT_CONTEXT_RESET_KHR     0x8254\n#define GL_UNKNOWN_CONTEXT_RESET_KHR      0x8255\n#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256\n#define GL_NO_RESET_NOTIFICATION_KHR      0x8261\n#define GL_CONTEXT_LOST_KHR               0x0507\ntypedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\ntypedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void);\nGL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\nGL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\nGL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params);\nGL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params);\n#endif\n#endif /* GL_KHR_robustness */\n\n#ifndef GL_KHR_shader_subgroup\n#define GL_KHR_shader_subgroup 1\n#define GL_SUBGROUP_SIZE_KHR              0x9532\n#define GL_SUBGROUP_SUPPORTED_STAGES_KHR  0x9533\n#define GL_SUBGROUP_SUPPORTED_FEATURES_KHR 0x9534\n#define GL_SUBGROUP_QUAD_ALL_STAGES_KHR   0x9535\n#define GL_SUBGROUP_FEATURE_BASIC_BIT_KHR 0x00000001\n#define GL_SUBGROUP_FEATURE_VOTE_BIT_KHR  0x00000002\n#define GL_SUBGROUP_FEATURE_ARITHMETIC_BIT_KHR 0x00000004\n#define GL_SUBGROUP_FEATURE_BALLOT_BIT_KHR 0x00000008\n#define GL_SUBGROUP_FEATURE_SHUFFLE_BIT_KHR 0x00000010\n#define GL_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT_KHR 0x00000020\n#define GL_SUBGROUP_FEATURE_CLUSTERED_BIT_KHR 0x00000040\n#define GL_SUBGROUP_FEATURE_QUAD_BIT_KHR  0x00000080\n#endif /* GL_KHR_shader_subgroup */\n\n#ifndef GL_KHR_texture_compression_astc_hdr\n#define GL_KHR_texture_compression_astc_hdr 1\n#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0\n#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1\n#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2\n#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3\n#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4\n#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5\n#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6\n#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7\n#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8\n#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9\n#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA\n#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB\n#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC\n#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD\n#endif /* GL_KHR_texture_compression_astc_hdr */\n\n#ifndef GL_KHR_texture_compression_astc_ldr\n#define GL_KHR_texture_compression_astc_ldr 1\n#endif /* GL_KHR_texture_compression_astc_ldr */\n\n#ifndef GL_KHR_texture_compression_astc_sliced_3d\n#define GL_KHR_texture_compression_astc_sliced_3d 1\n#endif /* GL_KHR_texture_compression_astc_sliced_3d */\n\n#ifndef GL_OES_EGL_image\n#define GL_OES_EGL_image 1\ntypedef void *GLeglImageOES;\ntypedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);\ntypedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);\nGL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);\n#endif\n#endif /* GL_OES_EGL_image */\n\n#ifndef GL_OES_EGL_image_external\n#define GL_OES_EGL_image_external 1\n#define GL_TEXTURE_EXTERNAL_OES           0x8D65\n#define GL_TEXTURE_BINDING_EXTERNAL_OES   0x8D67\n#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68\n#define GL_SAMPLER_EXTERNAL_OES           0x8D66\n#endif /* GL_OES_EGL_image_external */\n\n#ifndef GL_OES_EGL_image_external_essl3\n#define GL_OES_EGL_image_external_essl3 1\n#endif /* GL_OES_EGL_image_external_essl3 */\n\n#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture\n#define GL_OES_compressed_ETC1_RGB8_sub_texture 1\n#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */\n\n#ifndef GL_OES_compressed_ETC1_RGB8_texture\n#define GL_OES_compressed_ETC1_RGB8_texture 1\n#define GL_ETC1_RGB8_OES                  0x8D64\n#endif /* GL_OES_compressed_ETC1_RGB8_texture */\n\n#ifndef GL_OES_compressed_paletted_texture\n#define GL_OES_compressed_paletted_texture 1\n#define GL_PALETTE4_RGB8_OES              0x8B90\n#define GL_PALETTE4_RGBA8_OES             0x8B91\n#define GL_PALETTE4_R5_G6_B5_OES          0x8B92\n#define GL_PALETTE4_RGBA4_OES             0x8B93\n#define GL_PALETTE4_RGB5_A1_OES           0x8B94\n#define GL_PALETTE8_RGB8_OES              0x8B95\n#define GL_PALETTE8_RGBA8_OES             0x8B96\n#define GL_PALETTE8_R5_G6_B5_OES          0x8B97\n#define GL_PALETTE8_RGBA4_OES             0x8B98\n#define GL_PALETTE8_RGB5_A1_OES           0x8B99\n#endif /* GL_OES_compressed_paletted_texture */\n\n#ifndef GL_OES_copy_image\n#define GL_OES_copy_image 1\ntypedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCopyImageSubDataOES (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\n#endif\n#endif /* GL_OES_copy_image */\n\n#ifndef GL_OES_depth24\n#define GL_OES_depth24 1\n#define GL_DEPTH_COMPONENT24_OES          0x81A6\n#endif /* GL_OES_depth24 */\n\n#ifndef GL_OES_depth32\n#define GL_OES_depth32 1\n#define GL_DEPTH_COMPONENT32_OES          0x81A7\n#endif /* GL_OES_depth32 */\n\n#ifndef GL_OES_depth_texture\n#define GL_OES_depth_texture 1\n#endif /* GL_OES_depth_texture */\n\n#ifndef GL_OES_draw_buffers_indexed\n#define GL_OES_draw_buffers_indexed 1\n#define GL_MIN                            0x8007\n#define GL_MAX                            0x8008\ntypedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index);\ntypedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\ntypedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\ntypedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index);\nGL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index);\nGL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode);\nGL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\nGL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst);\nGL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\nGL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\nGL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index);\n#endif\n#endif /* GL_OES_draw_buffers_indexed */\n\n#ifndef GL_OES_draw_elements_base_vertex\n#define GL_OES_draw_elements_base_vertex 1\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\nGL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex);\n#endif\n#endif /* GL_OES_draw_elements_base_vertex */\n\n#ifndef GL_OES_element_index_uint\n#define GL_OES_element_index_uint 1\n#endif /* GL_OES_element_index_uint */\n\n#ifndef GL_OES_fbo_render_mipmap\n#define GL_OES_fbo_render_mipmap 1\n#endif /* GL_OES_fbo_render_mipmap */\n\n#ifndef GL_OES_fragment_precision_high\n#define GL_OES_fragment_precision_high 1\n#endif /* GL_OES_fragment_precision_high */\n\n#ifndef GL_OES_geometry_point_size\n#define GL_OES_geometry_point_size 1\n#endif /* GL_OES_geometry_point_size */\n\n#ifndef GL_OES_geometry_shader\n#define GL_OES_geometry_shader 1\n#define GL_GEOMETRY_SHADER_OES            0x8DD9\n#define GL_GEOMETRY_SHADER_BIT_OES        0x00000004\n#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916\n#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917\n#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918\n#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F\n#define GL_LAYER_PROVOKING_VERTEX_OES     0x825E\n#define GL_LINES_ADJACENCY_OES            0x000A\n#define GL_LINE_STRIP_ADJACENCY_OES       0x000B\n#define GL_TRIANGLES_ADJACENCY_OES        0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY_OES   0x000D\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF\n#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C\n#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32\n#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123\n#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1\n#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5\n#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD\n#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7\n#define GL_FIRST_VERTEX_CONVENTION_OES    0x8E4D\n#define GL_LAST_VERTEX_CONVENTION_OES     0x8E4E\n#define GL_UNDEFINED_VERTEX_OES           0x8260\n#define GL_PRIMITIVES_GENERATED_OES       0x8C87\n#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312\n#define GL_MAX_FRAMEBUFFER_LAYERS_OES     0x9317\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7\n#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level);\n#endif\n#endif /* GL_OES_geometry_shader */\n\n#ifndef GL_OES_get_program_binary\n#define GL_OES_get_program_binary 1\n#define GL_PROGRAM_BINARY_LENGTH_OES      0x8741\n#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE\n#define GL_PROGRAM_BINARY_FORMATS_OES     0x87FF\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);\nGL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length);\n#endif\n#endif /* GL_OES_get_program_binary */\n\n#ifndef GL_OES_gpu_shader5\n#define GL_OES_gpu_shader5 1\n#endif /* GL_OES_gpu_shader5 */\n\n#ifndef GL_OES_mapbuffer\n#define GL_OES_mapbuffer 1\n#define GL_WRITE_ONLY_OES                 0x88B9\n#define GL_BUFFER_ACCESS_OES              0x88BB\n#define GL_BUFFER_MAPPED_OES              0x88BC\n#define GL_BUFFER_MAP_POINTER_OES         0x88BD\ntypedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);\ntypedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);\ntypedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);\nGL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);\nGL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params);\n#endif\n#endif /* GL_OES_mapbuffer */\n\n#ifndef GL_OES_packed_depth_stencil\n#define GL_OES_packed_depth_stencil 1\n#define GL_DEPTH_STENCIL_OES              0x84F9\n#define GL_UNSIGNED_INT_24_8_OES          0x84FA\n#define GL_DEPTH24_STENCIL8_OES           0x88F0\n#endif /* GL_OES_packed_depth_stencil */\n\n#ifndef GL_OES_primitive_bounding_box\n#define GL_OES_primitive_bounding_box 1\n#define GL_PRIMITIVE_BOUNDING_BOX_OES     0x92BE\ntypedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#endif\n#endif /* GL_OES_primitive_bounding_box */\n\n#ifndef GL_OES_required_internalformat\n#define GL_OES_required_internalformat 1\n#define GL_ALPHA8_OES                     0x803C\n#define GL_DEPTH_COMPONENT16_OES          0x81A5\n#define GL_LUMINANCE4_ALPHA4_OES          0x8043\n#define GL_LUMINANCE8_ALPHA8_OES          0x8045\n#define GL_LUMINANCE8_OES                 0x8040\n#define GL_RGBA4_OES                      0x8056\n#define GL_RGB5_A1_OES                    0x8057\n#define GL_RGB565_OES                     0x8D62\n#define GL_RGB8_OES                       0x8051\n#define GL_RGBA8_OES                      0x8058\n#define GL_RGB10_EXT                      0x8052\n#define GL_RGB10_A2_EXT                   0x8059\n#endif /* GL_OES_required_internalformat */\n\n#ifndef GL_OES_rgb8_rgba8\n#define GL_OES_rgb8_rgba8 1\n#endif /* GL_OES_rgb8_rgba8 */\n\n#ifndef GL_OES_sample_shading\n#define GL_OES_sample_shading 1\n#define GL_SAMPLE_SHADING_OES             0x8C36\n#define GL_MIN_SAMPLE_SHADING_VALUE_OES   0x8C37\ntypedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value);\n#endif\n#endif /* GL_OES_sample_shading */\n\n#ifndef GL_OES_sample_variables\n#define GL_OES_sample_variables 1\n#endif /* GL_OES_sample_variables */\n\n#ifndef GL_OES_shader_image_atomic\n#define GL_OES_shader_image_atomic 1\n#endif /* GL_OES_shader_image_atomic */\n\n#ifndef GL_OES_shader_io_blocks\n#define GL_OES_shader_io_blocks 1\n#endif /* GL_OES_shader_io_blocks */\n\n#ifndef GL_OES_shader_multisample_interpolation\n#define GL_OES_shader_multisample_interpolation 1\n#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B\n#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C\n#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D\n#endif /* GL_OES_shader_multisample_interpolation */\n\n#ifndef GL_OES_standard_derivatives\n#define GL_OES_standard_derivatives 1\n#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B\n#endif /* GL_OES_standard_derivatives */\n\n#ifndef GL_OES_stencil1\n#define GL_OES_stencil1 1\n#define GL_STENCIL_INDEX1_OES             0x8D46\n#endif /* GL_OES_stencil1 */\n\n#ifndef GL_OES_stencil4\n#define GL_OES_stencil4 1\n#define GL_STENCIL_INDEX4_OES             0x8D47\n#endif /* GL_OES_stencil4 */\n\n#ifndef GL_OES_surfaceless_context\n#define GL_OES_surfaceless_context 1\n#define GL_FRAMEBUFFER_UNDEFINED_OES      0x8219\n#endif /* GL_OES_surfaceless_context */\n\n#ifndef GL_OES_tessellation_point_size\n#define GL_OES_tessellation_point_size 1\n#endif /* GL_OES_tessellation_point_size */\n\n#ifndef GL_OES_tessellation_shader\n#define GL_OES_tessellation_shader 1\n#define GL_PATCHES_OES                    0x000E\n#define GL_PATCH_VERTICES_OES             0x8E72\n#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75\n#define GL_TESS_GEN_MODE_OES              0x8E76\n#define GL_TESS_GEN_SPACING_OES           0x8E77\n#define GL_TESS_GEN_VERTEX_ORDER_OES      0x8E78\n#define GL_TESS_GEN_POINT_MODE_OES        0x8E79\n#define GL_ISOLINES_OES                   0x8E7A\n#define GL_QUADS_OES                      0x0007\n#define GL_FRACTIONAL_ODD_OES             0x8E7B\n#define GL_FRACTIONAL_EVEN_OES            0x8E7C\n#define GL_MAX_PATCH_VERTICES_OES         0x8E7D\n#define GL_MAX_TESS_GEN_LEVEL_OES         0x8E7E\n#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F\n#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80\n#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81\n#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82\n#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83\n#define GL_MAX_TESS_PATCH_COMPONENTS_OES  0x8E84\n#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85\n#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86\n#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89\n#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A\n#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C\n#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D\n#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E\n#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4\n#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB\n#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC\n#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8\n#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9\n#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221\n#define GL_IS_PER_PATCH_OES               0x92E7\n#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307\n#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308\n#define GL_TESS_CONTROL_SHADER_OES        0x8E88\n#define GL_TESS_EVALUATION_SHADER_OES     0x8E87\n#define GL_TESS_CONTROL_SHADER_BIT_OES    0x00000008\n#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010\ntypedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value);\n#endif\n#endif /* GL_OES_tessellation_shader */\n\n#ifndef GL_OES_texture_3D\n#define GL_OES_texture_3D 1\n#define GL_TEXTURE_WRAP_R_OES             0x8072\n#define GL_TEXTURE_3D_OES                 0x806F\n#define GL_TEXTURE_BINDING_3D_OES         0x806A\n#define GL_MAX_3D_TEXTURE_SIZE_OES        0x8073\n#define GL_SAMPLER_3D_OES                 0x8B5F\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4\ntypedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\ntypedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\ntypedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\ntypedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels);\nGL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);\nGL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data);\nGL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);\nGL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);\n#endif\n#endif /* GL_OES_texture_3D */\n\n#ifndef GL_OES_texture_border_clamp\n#define GL_OES_texture_border_clamp 1\n#define GL_TEXTURE_BORDER_COLOR_OES       0x1004\n#define GL_CLAMP_TO_BORDER_OES            0x812D\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param);\ntypedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param);\ntypedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params);\nGL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params);\nGL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params);\nGL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param);\nGL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param);\nGL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params);\n#endif\n#endif /* GL_OES_texture_border_clamp */\n\n#ifndef GL_OES_texture_buffer\n#define GL_OES_texture_buffer 1\n#define GL_TEXTURE_BUFFER_OES             0x8C2A\n#define GL_TEXTURE_BUFFER_BINDING_OES     0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE_OES    0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER_OES     0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D\n#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F\n#define GL_SAMPLER_BUFFER_OES             0x8DC2\n#define GL_INT_SAMPLER_BUFFER_OES         0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8\n#define GL_IMAGE_BUFFER_OES               0x9051\n#define GL_INT_IMAGE_BUFFER_OES           0x905C\n#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES  0x9067\n#define GL_TEXTURE_BUFFER_OFFSET_OES      0x919D\n#define GL_TEXTURE_BUFFER_SIZE_OES        0x919E\ntypedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer);\ntypedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer);\nGL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\n#endif\n#endif /* GL_OES_texture_buffer */\n\n#ifndef GL_OES_texture_compression_astc\n#define GL_OES_texture_compression_astc 1\n#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0\n#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1\n#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2\n#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3\n#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4\n#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5\n#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6\n#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7\n#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8\n#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8\n#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9\n#endif /* GL_OES_texture_compression_astc */\n\n#ifndef GL_OES_texture_cube_map_array\n#define GL_OES_texture_cube_map_array 1\n#define GL_TEXTURE_CUBE_MAP_ARRAY_OES     0x9009\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A\n#define GL_SAMPLER_CUBE_MAP_ARRAY_OES     0x900C\n#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D\n#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F\n#define GL_IMAGE_CUBE_MAP_ARRAY_OES       0x9054\n#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES   0x905F\n#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A\n#endif /* GL_OES_texture_cube_map_array */\n\n#ifndef GL_OES_texture_float\n#define GL_OES_texture_float 1\n#endif /* GL_OES_texture_float */\n\n#ifndef GL_OES_texture_float_linear\n#define GL_OES_texture_float_linear 1\n#endif /* GL_OES_texture_float_linear */\n\n#ifndef GL_OES_texture_half_float\n#define GL_OES_texture_half_float 1\n#define GL_HALF_FLOAT_OES                 0x8D61\n#endif /* GL_OES_texture_half_float */\n\n#ifndef GL_OES_texture_half_float_linear\n#define GL_OES_texture_half_float_linear 1\n#endif /* GL_OES_texture_half_float_linear */\n\n#ifndef GL_OES_texture_npot\n#define GL_OES_texture_npot 1\n#endif /* GL_OES_texture_npot */\n\n#ifndef GL_OES_texture_stencil8\n#define GL_OES_texture_stencil8 1\n#define GL_STENCIL_INDEX_OES              0x1901\n#define GL_STENCIL_INDEX8_OES             0x8D48\n#endif /* GL_OES_texture_stencil8 */\n\n#ifndef GL_OES_texture_storage_multisample_2d_array\n#define GL_OES_texture_storage_multisample_2d_array 1\n#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102\n#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105\n#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B\n#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C\n#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);\n#endif\n#endif /* GL_OES_texture_storage_multisample_2d_array */\n\n#ifndef GL_OES_texture_view\n#define GL_OES_texture_view 1\n#define GL_TEXTURE_VIEW_MIN_LEVEL_OES     0x82DB\n#define GL_TEXTURE_VIEW_NUM_LEVELS_OES    0x82DC\n#define GL_TEXTURE_VIEW_MIN_LAYER_OES     0x82DD\n#define GL_TEXTURE_VIEW_NUM_LAYERS_OES    0x82DE\n#define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF\ntypedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\n#endif\n#endif /* GL_OES_texture_view */\n\n#ifndef GL_OES_vertex_array_object\n#define GL_OES_vertex_array_object 1\n#define GL_VERTEX_ARRAY_BINDING_OES       0x85B5\ntypedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);\ntypedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);\ntypedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);\ntypedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);\nGL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);\nGL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);\nGL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);\n#endif\n#endif /* GL_OES_vertex_array_object */\n\n#ifndef GL_OES_vertex_half_float\n#define GL_OES_vertex_half_float 1\n#endif /* GL_OES_vertex_half_float */\n\n#ifndef GL_OES_vertex_type_10_10_10_2\n#define GL_OES_vertex_type_10_10_10_2 1\n#define GL_UNSIGNED_INT_10_10_10_2_OES    0x8DF6\n#define GL_INT_10_10_10_2_OES             0x8DF7\n#endif /* GL_OES_vertex_type_10_10_10_2 */\n\n#ifndef GL_OES_viewport_array\n#define GL_OES_viewport_array 1\n#define GL_MAX_VIEWPORTS_OES              0x825B\n#define GL_VIEWPORT_SUBPIXEL_BITS_OES     0x825C\n#define GL_VIEWPORT_BOUNDS_RANGE_OES      0x825D\n#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v);\ntypedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v);\ntypedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f);\ntypedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\nGL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v);\nGL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v);\nGL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f);\nGL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data);\n#endif\n#endif /* GL_OES_viewport_array */\n\n#ifndef GL_AMD_compressed_3DC_texture\n#define GL_AMD_compressed_3DC_texture 1\n#define GL_3DC_X_AMD                      0x87F9\n#define GL_3DC_XY_AMD                     0x87FA\n#endif /* GL_AMD_compressed_3DC_texture */\n\n#ifndef GL_AMD_compressed_ATC_texture\n#define GL_AMD_compressed_ATC_texture 1\n#define GL_ATC_RGB_AMD                    0x8C92\n#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD    0x8C93\n#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE\n#endif /* GL_AMD_compressed_ATC_texture */\n\n#ifndef GL_AMD_framebuffer_multisample_advanced\n#define GL_AMD_framebuffer_multisample_advanced 1\n#define GL_RENDERBUFFER_STORAGE_SAMPLES_AMD 0x91B2\n#define GL_MAX_COLOR_FRAMEBUFFER_SAMPLES_AMD 0x91B3\n#define GL_MAX_COLOR_FRAMEBUFFER_STORAGE_SAMPLES_AMD 0x91B4\n#define GL_MAX_DEPTH_STENCIL_FRAMEBUFFER_SAMPLES_AMD 0x91B5\n#define GL_NUM_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B6\n#define GL_SUPPORTED_MULTISAMPLE_MODES_AMD 0x91B7\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glNamedRenderbufferStorageMultisampleAdvancedAMD (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_AMD_framebuffer_multisample_advanced */\n\n#ifndef GL_AMD_performance_monitor\n#define GL_AMD_performance_monitor 1\n#define GL_COUNTER_TYPE_AMD               0x8BC0\n#define GL_COUNTER_RANGE_AMD              0x8BC1\n#define GL_UNSIGNED_INT64_AMD             0x8BC2\n#define GL_PERCENTAGE_AMD                 0x8BC3\n#define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4\n#define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5\n#define GL_PERFMON_RESULT_AMD             0x8BC6\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data);\ntypedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);\ntypedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);\ntypedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);\ntypedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);\ntypedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);\ntypedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);\nGL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);\nGL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);\nGL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);\nGL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);\nGL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);\nGL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);\nGL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);\nGL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);\nGL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);\nGL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);\n#endif\n#endif /* GL_AMD_performance_monitor */\n\n#ifndef GL_AMD_program_binary_Z400\n#define GL_AMD_program_binary_Z400 1\n#define GL_Z400_BINARY_AMD                0x8740\n#endif /* GL_AMD_program_binary_Z400 */\n\n#ifndef GL_ANDROID_extension_pack_es31a\n#define GL_ANDROID_extension_pack_es31a 1\n#endif /* GL_ANDROID_extension_pack_es31a */\n\n#ifndef GL_ANGLE_depth_texture\n#define GL_ANGLE_depth_texture 1\n#endif /* GL_ANGLE_depth_texture */\n\n#ifndef GL_ANGLE_framebuffer_blit\n#define GL_ANGLE_framebuffer_blit 1\n#define GL_READ_FRAMEBUFFER_ANGLE         0x8CA8\n#define GL_DRAW_FRAMEBUFFER_ANGLE         0x8CA9\n#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6\n#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA\ntypedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#endif\n#endif /* GL_ANGLE_framebuffer_blit */\n\n#ifndef GL_ANGLE_framebuffer_multisample\n#define GL_ANGLE_framebuffer_multisample 1\n#define GL_RENDERBUFFER_SAMPLES_ANGLE     0x8CAB\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56\n#define GL_MAX_SAMPLES_ANGLE              0x8D57\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_ANGLE_framebuffer_multisample */\n\n#ifndef GL_ANGLE_instanced_arrays\n#define GL_ANGLE_instanced_arrays 1\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE\ntypedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\nGL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor);\n#endif\n#endif /* GL_ANGLE_instanced_arrays */\n\n#ifndef GL_ANGLE_pack_reverse_row_order\n#define GL_ANGLE_pack_reverse_row_order 1\n#define GL_PACK_REVERSE_ROW_ORDER_ANGLE   0x93A4\n#endif /* GL_ANGLE_pack_reverse_row_order */\n\n#ifndef GL_ANGLE_program_binary\n#define GL_ANGLE_program_binary 1\n#define GL_PROGRAM_BINARY_ANGLE           0x93A6\n#endif /* GL_ANGLE_program_binary */\n\n#ifndef GL_ANGLE_texture_compression_dxt3\n#define GL_ANGLE_texture_compression_dxt3 1\n#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2\n#endif /* GL_ANGLE_texture_compression_dxt3 */\n\n#ifndef GL_ANGLE_texture_compression_dxt5\n#define GL_ANGLE_texture_compression_dxt5 1\n#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3\n#endif /* GL_ANGLE_texture_compression_dxt5 */\n\n#ifndef GL_ANGLE_texture_usage\n#define GL_ANGLE_texture_usage 1\n#define GL_TEXTURE_USAGE_ANGLE            0x93A2\n#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE   0x93A3\n#endif /* GL_ANGLE_texture_usage */\n\n#ifndef GL_ANGLE_translated_shader_source\n#define GL_ANGLE_translated_shader_source 1\n#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0\ntypedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);\n#endif\n#endif /* GL_ANGLE_translated_shader_source */\n\n#ifndef GL_APPLE_clip_distance\n#define GL_APPLE_clip_distance 1\n#define GL_MAX_CLIP_DISTANCES_APPLE       0x0D32\n#define GL_CLIP_DISTANCE0_APPLE           0x3000\n#define GL_CLIP_DISTANCE1_APPLE           0x3001\n#define GL_CLIP_DISTANCE2_APPLE           0x3002\n#define GL_CLIP_DISTANCE3_APPLE           0x3003\n#define GL_CLIP_DISTANCE4_APPLE           0x3004\n#define GL_CLIP_DISTANCE5_APPLE           0x3005\n#define GL_CLIP_DISTANCE6_APPLE           0x3006\n#define GL_CLIP_DISTANCE7_APPLE           0x3007\n#endif /* GL_APPLE_clip_distance */\n\n#ifndef GL_APPLE_color_buffer_packed_float\n#define GL_APPLE_color_buffer_packed_float 1\n#endif /* GL_APPLE_color_buffer_packed_float */\n\n#ifndef GL_APPLE_copy_texture_levels\n#define GL_APPLE_copy_texture_levels 1\ntypedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);\n#endif\n#endif /* GL_APPLE_copy_texture_levels */\n\n#ifndef GL_APPLE_framebuffer_multisample\n#define GL_APPLE_framebuffer_multisample 1\n#define GL_RENDERBUFFER_SAMPLES_APPLE     0x8CAB\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56\n#define GL_MAX_SAMPLES_APPLE              0x8D57\n#define GL_READ_FRAMEBUFFER_APPLE         0x8CA8\n#define GL_DRAW_FRAMEBUFFER_APPLE         0x8CA9\n#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6\n#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);\n#endif\n#endif /* GL_APPLE_framebuffer_multisample */\n\n#ifndef GL_APPLE_rgb_422\n#define GL_APPLE_rgb_422 1\n#define GL_RGB_422_APPLE                  0x8A1F\n#define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA\n#define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB\n#define GL_RGB_RAW_422_APPLE              0x8A51\n#endif /* GL_APPLE_rgb_422 */\n\n#ifndef GL_APPLE_sync\n#define GL_APPLE_sync 1\n#define GL_SYNC_OBJECT_APPLE              0x8A53\n#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE  0x9111\n#define GL_OBJECT_TYPE_APPLE              0x9112\n#define GL_SYNC_CONDITION_APPLE           0x9113\n#define GL_SYNC_STATUS_APPLE              0x9114\n#define GL_SYNC_FLAGS_APPLE               0x9115\n#define GL_SYNC_FENCE_APPLE               0x9116\n#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117\n#define GL_UNSIGNALED_APPLE               0x9118\n#define GL_SIGNALED_APPLE                 0x9119\n#define GL_ALREADY_SIGNALED_APPLE         0x911A\n#define GL_TIMEOUT_EXPIRED_APPLE          0x911B\n#define GL_CONDITION_SATISFIED_APPLE      0x911C\n#define GL_WAIT_FAILED_APPLE              0x911D\n#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE  0x00000001\n#define GL_TIMEOUT_IGNORED_APPLE          0xFFFFFFFFFFFFFFFFull\ntypedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags);\ntypedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync);\ntypedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync);\ntypedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);\ntypedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);\ntypedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params);\ntypedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags);\nGL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync);\nGL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync);\nGL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);\nGL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout);\nGL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params);\nGL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values);\n#endif\n#endif /* GL_APPLE_sync */\n\n#ifndef GL_APPLE_texture_format_BGRA8888\n#define GL_APPLE_texture_format_BGRA8888 1\n#define GL_BGRA_EXT                       0x80E1\n#define GL_BGRA8_EXT                      0x93A1\n#endif /* GL_APPLE_texture_format_BGRA8888 */\n\n#ifndef GL_APPLE_texture_max_level\n#define GL_APPLE_texture_max_level 1\n#define GL_TEXTURE_MAX_LEVEL_APPLE        0x813D\n#endif /* GL_APPLE_texture_max_level */\n\n#ifndef GL_APPLE_texture_packed_float\n#define GL_APPLE_texture_packed_float 1\n#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B\n#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E\n#define GL_R11F_G11F_B10F_APPLE           0x8C3A\n#define GL_RGB9_E5_APPLE                  0x8C3D\n#endif /* GL_APPLE_texture_packed_float */\n\n#ifndef GL_ARM_mali_program_binary\n#define GL_ARM_mali_program_binary 1\n#define GL_MALI_PROGRAM_BINARY_ARM        0x8F61\n#endif /* GL_ARM_mali_program_binary */\n\n#ifndef GL_ARM_mali_shader_binary\n#define GL_ARM_mali_shader_binary 1\n#define GL_MALI_SHADER_BINARY_ARM         0x8F60\n#endif /* GL_ARM_mali_shader_binary */\n\n#ifndef GL_ARM_rgba8\n#define GL_ARM_rgba8 1\n#endif /* GL_ARM_rgba8 */\n\n#ifndef GL_ARM_shader_framebuffer_fetch\n#define GL_ARM_shader_framebuffer_fetch 1\n#define GL_FETCH_PER_SAMPLE_ARM           0x8F65\n#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66\n#endif /* GL_ARM_shader_framebuffer_fetch */\n\n#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil\n#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1\n#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */\n\n#ifndef GL_ARM_texture_unnormalized_coordinates\n#define GL_ARM_texture_unnormalized_coordinates 1\n#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A\n#endif /* GL_ARM_texture_unnormalized_coordinates */\n\n#ifndef GL_DMP_program_binary\n#define GL_DMP_program_binary 1\n#define GL_SMAPHS30_PROGRAM_BINARY_DMP    0x9251\n#define GL_SMAPHS_PROGRAM_BINARY_DMP      0x9252\n#define GL_DMP_PROGRAM_BINARY_DMP         0x9253\n#endif /* GL_DMP_program_binary */\n\n#ifndef GL_DMP_shader_binary\n#define GL_DMP_shader_binary 1\n#define GL_SHADER_BINARY_DMP              0x9250\n#endif /* GL_DMP_shader_binary */\n\n#ifndef GL_EXT_EGL_image_array\n#define GL_EXT_EGL_image_array 1\n#endif /* GL_EXT_EGL_image_array */\n\n#ifndef GL_EXT_EGL_image_storage\n#define GL_EXT_EGL_image_storage 1\ntypedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list);\ntypedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list);\nGL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list);\n#endif\n#endif /* GL_EXT_EGL_image_storage */\n\n#ifndef GL_EXT_EGL_image_storage_compression\n#define GL_EXT_EGL_image_storage_compression 1\n#define GL_SURFACE_COMPRESSION_EXT        0x96C0\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2\n#endif /* GL_EXT_EGL_image_storage_compression */\n\n#ifndef GL_EXT_YUV_target\n#define GL_EXT_YUV_target 1\n#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT    0x8BE7\n#endif /* GL_EXT_YUV_target */\n\n#ifndef GL_EXT_base_instance\n#define GL_EXT_base_instance 1\ntypedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);\n#endif\n#endif /* GL_EXT_base_instance */\n\n#ifndef GL_EXT_blend_func_extended\n#define GL_EXT_blend_func_extended 1\n#define GL_SRC1_COLOR_EXT                 0x88F9\n#define GL_SRC1_ALPHA_EXT                 0x8589\n#define GL_ONE_MINUS_SRC1_COLOR_EXT       0x88FA\n#define GL_ONE_MINUS_SRC1_ALPHA_EXT       0x88FB\n#define GL_SRC_ALPHA_SATURATE_EXT         0x0308\n#define GL_LOCATION_INDEX_EXT             0x930F\n#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC\ntypedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);\ntypedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name);\ntypedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);\nGL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);\nGL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name);\nGL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name);\n#endif\n#endif /* GL_EXT_blend_func_extended */\n\n#ifndef GL_EXT_blend_minmax\n#define GL_EXT_blend_minmax 1\n#define GL_MIN_EXT                        0x8007\n#define GL_MAX_EXT                        0x8008\n#endif /* GL_EXT_blend_minmax */\n\n#ifndef GL_EXT_buffer_storage\n#define GL_EXT_buffer_storage 1\n#define GL_MAP_READ_BIT                   0x0001\n#define GL_MAP_WRITE_BIT                  0x0002\n#define GL_MAP_PERSISTENT_BIT_EXT         0x0040\n#define GL_MAP_COHERENT_BIT_EXT           0x0080\n#define GL_DYNAMIC_STORAGE_BIT_EXT        0x0100\n#define GL_CLIENT_STORAGE_BIT_EXT         0x0200\n#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000\n#define GL_BUFFER_IMMUTABLE_STORAGE_EXT   0x821F\n#define GL_BUFFER_STORAGE_FLAGS_EXT       0x8220\ntypedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);\n#endif\n#endif /* GL_EXT_buffer_storage */\n\n#ifndef GL_EXT_clear_texture\n#define GL_EXT_clear_texture 1\ntypedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);\ntypedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);\nGL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);\n#endif\n#endif /* GL_EXT_clear_texture */\n\n#ifndef GL_EXT_clip_control\n#define GL_EXT_clip_control 1\n#define GL_LOWER_LEFT_EXT                 0x8CA1\n#define GL_UPPER_LEFT_EXT                 0x8CA2\n#define GL_NEGATIVE_ONE_TO_ONE_EXT        0x935E\n#define GL_ZERO_TO_ONE_EXT                0x935F\n#define GL_CLIP_ORIGIN_EXT                0x935C\n#define GL_CLIP_DEPTH_MODE_EXT            0x935D\ntypedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth);\n#endif\n#endif /* GL_EXT_clip_control */\n\n#ifndef GL_EXT_clip_cull_distance\n#define GL_EXT_clip_cull_distance 1\n#define GL_MAX_CLIP_DISTANCES_EXT         0x0D32\n#define GL_MAX_CULL_DISTANCES_EXT         0x82F9\n#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA\n#define GL_CLIP_DISTANCE0_EXT             0x3000\n#define GL_CLIP_DISTANCE1_EXT             0x3001\n#define GL_CLIP_DISTANCE2_EXT             0x3002\n#define GL_CLIP_DISTANCE3_EXT             0x3003\n#define GL_CLIP_DISTANCE4_EXT             0x3004\n#define GL_CLIP_DISTANCE5_EXT             0x3005\n#define GL_CLIP_DISTANCE6_EXT             0x3006\n#define GL_CLIP_DISTANCE7_EXT             0x3007\n#endif /* GL_EXT_clip_cull_distance */\n\n#ifndef GL_EXT_color_buffer_float\n#define GL_EXT_color_buffer_float 1\n#endif /* GL_EXT_color_buffer_float */\n\n#ifndef GL_EXT_color_buffer_half_float\n#define GL_EXT_color_buffer_half_float 1\n#define GL_RGBA16F_EXT                    0x881A\n#define GL_RGB16F_EXT                     0x881B\n#define GL_RG16F_EXT                      0x822F\n#define GL_R16F_EXT                       0x822D\n#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211\n#define GL_UNSIGNED_NORMALIZED_EXT        0x8C17\n#endif /* GL_EXT_color_buffer_half_float */\n\n#ifndef GL_EXT_conservative_depth\n#define GL_EXT_conservative_depth 1\n#endif /* GL_EXT_conservative_depth */\n\n#ifndef GL_EXT_copy_image\n#define GL_EXT_copy_image 1\ntypedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);\n#endif\n#endif /* GL_EXT_copy_image */\n\n#ifndef GL_EXT_debug_label\n#define GL_EXT_debug_label 1\n#define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F\n#define GL_PROGRAM_OBJECT_EXT             0x8B40\n#define GL_SHADER_OBJECT_EXT              0x8B48\n#define GL_BUFFER_OBJECT_EXT              0x9151\n#define GL_QUERY_OBJECT_EXT               0x9153\n#define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154\n#define GL_TRANSFORM_FEEDBACK             0x8E22\ntypedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label);\ntypedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label);\nGL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label);\n#endif\n#endif /* GL_EXT_debug_label */\n\n#ifndef GL_EXT_debug_marker\n#define GL_EXT_debug_marker 1\ntypedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker);\ntypedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker);\ntypedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker);\nGL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker);\nGL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void);\n#endif\n#endif /* GL_EXT_debug_marker */\n\n#ifndef GL_EXT_depth_clamp\n#define GL_EXT_depth_clamp 1\n#define GL_DEPTH_CLAMP_EXT                0x864F\n#endif /* GL_EXT_depth_clamp */\n\n#ifndef GL_EXT_discard_framebuffer\n#define GL_EXT_discard_framebuffer 1\n#define GL_COLOR_EXT                      0x1800\n#define GL_DEPTH_EXT                      0x1801\n#define GL_STENCIL_EXT                    0x1802\ntypedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);\n#endif\n#endif /* GL_EXT_discard_framebuffer */\n\n#ifndef GL_EXT_disjoint_timer_query\n#define GL_EXT_disjoint_timer_query 1\n#define GL_QUERY_COUNTER_BITS_EXT         0x8864\n#define GL_CURRENT_QUERY_EXT              0x8865\n#define GL_QUERY_RESULT_EXT               0x8866\n#define GL_QUERY_RESULT_AVAILABLE_EXT     0x8867\n#define GL_TIME_ELAPSED_EXT               0x88BF\n#define GL_TIMESTAMP_EXT                  0x8E28\n#define GL_GPU_DISJOINT_EXT               0x8FBB\ntypedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids);\ntypedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids);\ntypedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id);\ntypedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id);\ntypedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target);\ntypedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target);\ntypedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params);\ntypedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params);\ntypedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids);\nGL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids);\nGL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id);\nGL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id);\nGL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target);\nGL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target);\nGL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params);\nGL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params);\nGL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params);\nGL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data);\n#endif\n#endif /* GL_EXT_disjoint_timer_query */\n\n#ifndef GL_EXT_draw_buffers\n#define GL_EXT_draw_buffers 1\n#define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF\n#define GL_MAX_DRAW_BUFFERS_EXT           0x8824\n#define GL_DRAW_BUFFER0_EXT               0x8825\n#define GL_DRAW_BUFFER1_EXT               0x8826\n#define GL_DRAW_BUFFER2_EXT               0x8827\n#define GL_DRAW_BUFFER3_EXT               0x8828\n#define GL_DRAW_BUFFER4_EXT               0x8829\n#define GL_DRAW_BUFFER5_EXT               0x882A\n#define GL_DRAW_BUFFER6_EXT               0x882B\n#define GL_DRAW_BUFFER7_EXT               0x882C\n#define GL_DRAW_BUFFER8_EXT               0x882D\n#define GL_DRAW_BUFFER9_EXT               0x882E\n#define GL_DRAW_BUFFER10_EXT              0x882F\n#define GL_DRAW_BUFFER11_EXT              0x8830\n#define GL_DRAW_BUFFER12_EXT              0x8831\n#define GL_DRAW_BUFFER13_EXT              0x8832\n#define GL_DRAW_BUFFER14_EXT              0x8833\n#define GL_DRAW_BUFFER15_EXT              0x8834\n#define GL_COLOR_ATTACHMENT0_EXT          0x8CE0\n#define GL_COLOR_ATTACHMENT1_EXT          0x8CE1\n#define GL_COLOR_ATTACHMENT2_EXT          0x8CE2\n#define GL_COLOR_ATTACHMENT3_EXT          0x8CE3\n#define GL_COLOR_ATTACHMENT4_EXT          0x8CE4\n#define GL_COLOR_ATTACHMENT5_EXT          0x8CE5\n#define GL_COLOR_ATTACHMENT6_EXT          0x8CE6\n#define GL_COLOR_ATTACHMENT7_EXT          0x8CE7\n#define GL_COLOR_ATTACHMENT8_EXT          0x8CE8\n#define GL_COLOR_ATTACHMENT9_EXT          0x8CE9\n#define GL_COLOR_ATTACHMENT10_EXT         0x8CEA\n#define GL_COLOR_ATTACHMENT11_EXT         0x8CEB\n#define GL_COLOR_ATTACHMENT12_EXT         0x8CEC\n#define GL_COLOR_ATTACHMENT13_EXT         0x8CED\n#define GL_COLOR_ATTACHMENT14_EXT         0x8CEE\n#define GL_COLOR_ATTACHMENT15_EXT         0x8CEF\ntypedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs);\n#endif\n#endif /* GL_EXT_draw_buffers */\n\n#ifndef GL_EXT_draw_buffers_indexed\n#define GL_EXT_draw_buffers_indexed 1\ntypedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index);\ntypedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst);\ntypedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\ntypedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\ntypedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index);\nGL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index);\nGL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode);\nGL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha);\nGL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst);\nGL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);\nGL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);\nGL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index);\n#endif\n#endif /* GL_EXT_draw_buffers_indexed */\n\n#ifndef GL_EXT_draw_elements_base_vertex\n#define GL_EXT_draw_elements_base_vertex 1\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);\n#endif\n#endif /* GL_EXT_draw_elements_base_vertex */\n\n#ifndef GL_EXT_draw_instanced\n#define GL_EXT_draw_instanced 1\ntypedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#endif\n#endif /* GL_EXT_draw_instanced */\n\n#ifndef GL_EXT_draw_transform_feedback\n#define GL_EXT_draw_transform_feedback 1\ntypedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id);\ntypedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id);\nGL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount);\n#endif\n#endif /* GL_EXT_draw_transform_feedback */\n\n#ifndef GL_EXT_external_buffer\n#define GL_EXT_external_buffer 1\ntypedef void *GLeglClientBufferEXT;\ntypedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\ntypedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\nGL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags);\n#endif\n#endif /* GL_EXT_external_buffer */\n\n#ifndef GL_EXT_float_blend\n#define GL_EXT_float_blend 1\n#endif /* GL_EXT_float_blend */\n\n#ifndef GL_EXT_fragment_shading_rate\n#define GL_EXT_fragment_shading_rate 1\n#define GL_SHADING_RATE_1X1_PIXELS_EXT    0x96A6\n#define GL_SHADING_RATE_1X2_PIXELS_EXT    0x96A7\n#define GL_SHADING_RATE_2X1_PIXELS_EXT    0x96A8\n#define GL_SHADING_RATE_2X2_PIXELS_EXT    0x96A9\n#define GL_SHADING_RATE_1X4_PIXELS_EXT    0x96AA\n#define GL_SHADING_RATE_4X1_PIXELS_EXT    0x96AB\n#define GL_SHADING_RATE_4X2_PIXELS_EXT    0x96AC\n#define GL_SHADING_RATE_2X4_PIXELS_EXT    0x96AD\n#define GL_SHADING_RATE_4X4_PIXELS_EXT    0x96AE\n#define GL_SHADING_RATE_EXT               0x96D0\n#define GL_SHADING_RATE_ATTACHMENT_EXT    0x96D1\n#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2\n#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3\n#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4\n#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5\n#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6\n#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7\n#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8\n#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9\n#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA\n#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB\n#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC\n#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD\n#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE\n#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF\n#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F\ntypedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);\nGL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate);\nGL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1);\nGL_APICALL void GL_APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);\n#endif\n#endif /* GL_EXT_fragment_shading_rate */\n\n#ifndef GL_EXT_geometry_point_size\n#define GL_EXT_geometry_point_size 1\n#endif /* GL_EXT_geometry_point_size */\n\n#ifndef GL_EXT_geometry_shader\n#define GL_EXT_geometry_shader 1\n#define GL_GEOMETRY_SHADER_EXT            0x8DD9\n#define GL_GEOMETRY_SHADER_BIT_EXT        0x00000004\n#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916\n#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917\n#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918\n#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F\n#define GL_LAYER_PROVOKING_VERTEX_EXT     0x825E\n#define GL_LINES_ADJACENCY_EXT            0x000A\n#define GL_LINE_STRIP_ADJACENCY_EXT       0x000B\n#define GL_TRIANGLES_ADJACENCY_EXT        0x000C\n#define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D\n#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF\n#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C\n#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32\n#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123\n#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124\n#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0\n#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1\n#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A\n#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF\n#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5\n#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD\n#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7\n#define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D\n#define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E\n#define GL_UNDEFINED_VERTEX_EXT           0x8260\n#define GL_PRIMITIVES_GENERATED_EXT       0x8C87\n#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312\n#define GL_MAX_FRAMEBUFFER_LAYERS_EXT     0x9317\n#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8\n#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7\n#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);\n#endif\n#endif /* GL_EXT_geometry_shader */\n\n#ifndef GL_EXT_gpu_shader5\n#define GL_EXT_gpu_shader5 1\n#endif /* GL_EXT_gpu_shader5 */\n\n#ifndef GL_EXT_instanced_arrays\n#define GL_EXT_instanced_arrays 1\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor);\n#endif\n#endif /* GL_EXT_instanced_arrays */\n\n#ifndef GL_EXT_map_buffer_range\n#define GL_EXT_map_buffer_range 1\n#define GL_MAP_READ_BIT_EXT               0x0001\n#define GL_MAP_WRITE_BIT_EXT              0x0002\n#define GL_MAP_INVALIDATE_RANGE_BIT_EXT   0x0004\n#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT  0x0008\n#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT     0x0010\n#define GL_MAP_UNSYNCHRONIZED_BIT_EXT     0x0020\ntypedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\ntypedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);\nGL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length);\n#endif\n#endif /* GL_EXT_map_buffer_range */\n\n#ifndef GL_EXT_memory_object\n#define GL_EXT_memory_object 1\n#define GL_TEXTURE_TILING_EXT             0x9580\n#define GL_DEDICATED_MEMORY_OBJECT_EXT    0x9581\n#define GL_PROTECTED_MEMORY_OBJECT_EXT    0x959B\n#define GL_NUM_TILING_TYPES_EXT           0x9582\n#define GL_TILING_TYPES_EXT               0x9583\n#define GL_OPTIMAL_TILING_EXT             0x9584\n#define GL_LINEAR_TILING_EXT              0x9585\n#define GL_NUM_DEVICE_UUIDS_EXT           0x9596\n#define GL_DEVICE_UUID_EXT                0x9597\n#define GL_DRIVER_UUID_EXT                0x9598\n#define GL_UUID_SIZE_EXT                  16\ntypedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data);\ntypedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data);\ntypedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects);\ntypedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject);\ntypedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects);\ntypedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data);\nGL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data);\nGL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects);\nGL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject);\nGL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects);\nGL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params);\nGL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset);\n#endif\n#endif /* GL_EXT_memory_object */\n\n#ifndef GL_EXT_memory_object_fd\n#define GL_EXT_memory_object_fd 1\n#define GL_HANDLE_TYPE_OPAQUE_FD_EXT      0x9586\ntypedef void (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glImportMemoryFdEXT (GLuint memory, GLuint64 size, GLenum handleType, GLint fd);\n#endif\n#endif /* GL_EXT_memory_object_fd */\n\n#ifndef GL_EXT_memory_object_win32\n#define GL_EXT_memory_object_win32 1\n#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT   0x9587\n#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588\n#define GL_DEVICE_LUID_EXT                0x9599\n#define GL_DEVICE_NODE_MASK_EXT           0x959A\n#define GL_LUID_SIZE_EXT                  8\n#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589\n#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A\n#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT    0x958B\n#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C\ntypedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle);\ntypedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle);\nGL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name);\n#endif\n#endif /* GL_EXT_memory_object_win32 */\n\n#ifndef GL_EXT_multi_draw_arrays\n#define GL_EXT_multi_draw_arrays 1\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);\nGL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount);\n#endif\n#endif /* GL_EXT_multi_draw_arrays */\n\n#ifndef GL_EXT_multi_draw_indirect\n#define GL_EXT_multi_draw_indirect 1\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);\nGL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);\n#endif\n#endif /* GL_EXT_multi_draw_indirect */\n\n#ifndef GL_EXT_multisampled_compatibility\n#define GL_EXT_multisampled_compatibility 1\n#define GL_MULTISAMPLE_EXT                0x809D\n#define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F\n#endif /* GL_EXT_multisampled_compatibility */\n\n#ifndef GL_EXT_multisampled_render_to_texture\n#define GL_EXT_multisampled_render_to_texture 1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C\n#define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56\n#define GL_MAX_SAMPLES_EXT                0x8D57\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);\n#endif\n#endif /* GL_EXT_multisampled_render_to_texture */\n\n#ifndef GL_EXT_multisampled_render_to_texture2\n#define GL_EXT_multisampled_render_to_texture2 1\n#endif /* GL_EXT_multisampled_render_to_texture2 */\n\n#ifndef GL_EXT_multiview_draw_buffers\n#define GL_EXT_multiview_draw_buffers 1\n#define GL_COLOR_ATTACHMENT_EXT           0x90F0\n#define GL_MULTIVIEW_EXT                  0x90F1\n#define GL_DRAW_BUFFER_EXT                0x0C01\n#define GL_READ_BUFFER_EXT                0x0C02\n#define GL_MAX_MULTIVIEW_BUFFERS_EXT      0x90F2\ntypedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index);\ntypedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices);\ntypedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index);\nGL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices);\nGL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data);\n#endif\n#endif /* GL_EXT_multiview_draw_buffers */\n\n#ifndef GL_EXT_multiview_tessellation_geometry_shader\n#define GL_EXT_multiview_tessellation_geometry_shader 1\n#endif /* GL_EXT_multiview_tessellation_geometry_shader */\n\n#ifndef GL_EXT_multiview_texture_multisample\n#define GL_EXT_multiview_texture_multisample 1\n#endif /* GL_EXT_multiview_texture_multisample */\n\n#ifndef GL_EXT_multiview_timer_query\n#define GL_EXT_multiview_timer_query 1\n#endif /* GL_EXT_multiview_timer_query */\n\n#ifndef GL_EXT_occlusion_query_boolean\n#define GL_EXT_occlusion_query_boolean 1\n#define GL_ANY_SAMPLES_PASSED_EXT         0x8C2F\n#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A\n#endif /* GL_EXT_occlusion_query_boolean */\n\n#ifndef GL_EXT_polygon_offset_clamp\n#define GL_EXT_polygon_offset_clamp 1\n#define GL_POLYGON_OFFSET_CLAMP_EXT       0x8E1B\ntypedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPolygonOffsetClampEXT (GLfloat factor, GLfloat units, GLfloat clamp);\n#endif\n#endif /* GL_EXT_polygon_offset_clamp */\n\n#ifndef GL_EXT_post_depth_coverage\n#define GL_EXT_post_depth_coverage 1\n#endif /* GL_EXT_post_depth_coverage */\n\n#ifndef GL_EXT_primitive_bounding_box\n#define GL_EXT_primitive_bounding_box 1\n#define GL_PRIMITIVE_BOUNDING_BOX_EXT     0x92BE\ntypedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);\n#endif\n#endif /* GL_EXT_primitive_bounding_box */\n\n#ifndef GL_EXT_protected_textures\n#define GL_EXT_protected_textures 1\n#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010\n#define GL_TEXTURE_PROTECTED_EXT          0x8BFA\n#endif /* GL_EXT_protected_textures */\n\n#ifndef GL_EXT_pvrtc_sRGB\n#define GL_EXT_pvrtc_sRGB 1\n#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54\n#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55\n#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56\n#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57\n#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0\n#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1\n#endif /* GL_EXT_pvrtc_sRGB */\n\n#ifndef GL_EXT_raster_multisample\n#define GL_EXT_raster_multisample 1\n#define GL_RASTER_MULTISAMPLE_EXT         0x9327\n#define GL_RASTER_SAMPLES_EXT             0x9328\n#define GL_MAX_RASTER_SAMPLES_EXT         0x9329\n#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A\n#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B\n#define GL_EFFECTIVE_RASTER_SAMPLES_EXT   0x932C\ntypedef void (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations);\n#endif\n#endif /* GL_EXT_raster_multisample */\n\n#ifndef GL_EXT_read_format_bgra\n#define GL_EXT_read_format_bgra 1\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365\n#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366\n#endif /* GL_EXT_read_format_bgra */\n\n#ifndef GL_EXT_render_snorm\n#define GL_EXT_render_snorm 1\n#define GL_R8_SNORM                       0x8F94\n#define GL_RG8_SNORM                      0x8F95\n#define GL_RGBA8_SNORM                    0x8F97\n#define GL_R16_SNORM_EXT                  0x8F98\n#define GL_RG16_SNORM_EXT                 0x8F99\n#define GL_RGBA16_SNORM_EXT               0x8F9B\n#endif /* GL_EXT_render_snorm */\n\n#ifndef GL_EXT_robustness\n#define GL_EXT_robustness 1\n#define GL_GUILTY_CONTEXT_RESET_EXT       0x8253\n#define GL_INNOCENT_CONTEXT_RESET_EXT     0x8254\n#define GL_UNKNOWN_CONTEXT_RESET_EXT      0x8255\n#define GL_CONTEXT_ROBUST_ACCESS_EXT      0x90F3\n#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256\n#define GL_LOSE_CONTEXT_ON_RESET_EXT      0x8252\n#define GL_NO_RESET_NOTIFICATION_EXT      0x8261\ntypedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void);\ntypedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\ntypedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void);\nGL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);\nGL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);\nGL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params);\n#endif\n#endif /* GL_EXT_robustness */\n\n#ifndef GL_EXT_sRGB\n#define GL_EXT_sRGB 1\n#define GL_SRGB_EXT                       0x8C40\n#define GL_SRGB_ALPHA_EXT                 0x8C42\n#define GL_SRGB8_ALPHA8_EXT               0x8C43\n#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210\n#endif /* GL_EXT_sRGB */\n\n#ifndef GL_EXT_sRGB_write_control\n#define GL_EXT_sRGB_write_control 1\n#define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9\n#endif /* GL_EXT_sRGB_write_control */\n\n#ifndef GL_EXT_semaphore\n#define GL_EXT_semaphore 1\n#define GL_LAYOUT_GENERAL_EXT             0x958D\n#define GL_LAYOUT_COLOR_ATTACHMENT_EXT    0x958E\n#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F\n#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590\n#define GL_LAYOUT_SHADER_READ_ONLY_EXT    0x9591\n#define GL_LAYOUT_TRANSFER_SRC_EXT        0x9592\n#define GL_LAYOUT_TRANSFER_DST_EXT        0x9593\n#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530\n#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531\ntypedef void (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores);\ntypedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores);\ntypedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore);\ntypedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params);\ntypedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params);\ntypedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);\ntypedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores);\nGL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores);\nGL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore);\nGL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params);\nGL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params);\nGL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts);\nGL_APICALL void GL_APIENTRY glSignalSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts);\n#endif\n#endif /* GL_EXT_semaphore */\n\n#ifndef GL_EXT_semaphore_fd\n#define GL_EXT_semaphore_fd 1\ntypedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glImportSemaphoreFdEXT (GLuint semaphore, GLenum handleType, GLint fd);\n#endif\n#endif /* GL_EXT_semaphore_fd */\n\n#ifndef GL_EXT_semaphore_win32\n#define GL_EXT_semaphore_win32 1\n#define GL_HANDLE_TYPE_D3D12_FENCE_EXT    0x9594\n#define GL_D3D12_FENCE_VALUE_EXT          0x9595\ntypedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle);\ntypedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle);\nGL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name);\n#endif\n#endif /* GL_EXT_semaphore_win32 */\n\n#ifndef GL_EXT_separate_depth_stencil\n#define GL_EXT_separate_depth_stencil 1\n#endif /* GL_EXT_separate_depth_stencil */\n\n#ifndef GL_EXT_separate_shader_objects\n#define GL_EXT_separate_shader_objects 1\n#define GL_ACTIVE_PROGRAM_EXT             0x8259\n#define GL_VERTEX_SHADER_BIT_EXT          0x00000001\n#define GL_FRAGMENT_SHADER_BIT_EXT        0x00000002\n#define GL_ALL_SHADER_BITS_EXT            0xFFFFFFFF\n#define GL_PROGRAM_SEPARABLE_EXT          0x8258\n#define GL_PROGRAM_PIPELINE_BINDING_EXT   0x825A\ntypedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program);\ntypedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline);\ntypedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings);\ntypedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines);\ntypedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines);\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params);\ntypedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program);\ntypedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program);\nGL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline);\nGL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings);\nGL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines);\nGL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines);\nGL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);\nGL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params);\nGL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline);\nGL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);\nGL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);\nGL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);\nGL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);\nGL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);\nGL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);\nGL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);\nGL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);\nGL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);\nGL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program);\nGL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline);\nGL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);\nGL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);\nGL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);\nGL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);\nGL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#endif\n#endif /* GL_EXT_separate_shader_objects */\n\n#ifndef GL_EXT_shader_framebuffer_fetch\n#define GL_EXT_shader_framebuffer_fetch 1\n#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52\n#endif /* GL_EXT_shader_framebuffer_fetch */\n\n#ifndef GL_EXT_shader_framebuffer_fetch_non_coherent\n#define GL_EXT_shader_framebuffer_fetch_non_coherent 1\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void);\n#endif\n#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */\n\n#ifndef GL_EXT_shader_group_vote\n#define GL_EXT_shader_group_vote 1\n#endif /* GL_EXT_shader_group_vote */\n\n#ifndef GL_EXT_shader_implicit_conversions\n#define GL_EXT_shader_implicit_conversions 1\n#endif /* GL_EXT_shader_implicit_conversions */\n\n#ifndef GL_EXT_shader_integer_mix\n#define GL_EXT_shader_integer_mix 1\n#endif /* GL_EXT_shader_integer_mix */\n\n#ifndef GL_EXT_shader_io_blocks\n#define GL_EXT_shader_io_blocks 1\n#endif /* GL_EXT_shader_io_blocks */\n\n#ifndef GL_EXT_shader_non_constant_global_initializers\n#define GL_EXT_shader_non_constant_global_initializers 1\n#endif /* GL_EXT_shader_non_constant_global_initializers */\n\n#ifndef GL_EXT_shader_pixel_local_storage\n#define GL_EXT_shader_pixel_local_storage 1\n#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63\n#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67\n#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64\n#endif /* GL_EXT_shader_pixel_local_storage */\n\n#ifndef GL_EXT_shader_pixel_local_storage2\n#define GL_EXT_shader_pixel_local_storage2 1\n#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650\n#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651\n#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size);\ntypedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target);\ntypedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size);\nGL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target);\nGL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values);\n#endif\n#endif /* GL_EXT_shader_pixel_local_storage2 */\n\n#ifndef GL_EXT_shader_samples_identical\n#define GL_EXT_shader_samples_identical 1\n#endif /* GL_EXT_shader_samples_identical */\n\n#ifndef GL_EXT_shader_texture_lod\n#define GL_EXT_shader_texture_lod 1\n#endif /* GL_EXT_shader_texture_lod */\n\n#ifndef GL_EXT_shadow_samplers\n#define GL_EXT_shadow_samplers 1\n#define GL_TEXTURE_COMPARE_MODE_EXT       0x884C\n#define GL_TEXTURE_COMPARE_FUNC_EXT       0x884D\n#define GL_COMPARE_REF_TO_TEXTURE_EXT     0x884E\n#define GL_SAMPLER_2D_SHADOW_EXT          0x8B62\n#endif /* GL_EXT_shadow_samplers */\n\n#ifndef GL_EXT_sparse_texture\n#define GL_EXT_sparse_texture 1\n#define GL_TEXTURE_SPARSE_EXT             0x91A6\n#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT    0x91A7\n#define GL_NUM_SPARSE_LEVELS_EXT          0x91AA\n#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT     0x91A8\n#define GL_VIRTUAL_PAGE_SIZE_X_EXT        0x9195\n#define GL_VIRTUAL_PAGE_SIZE_Y_EXT        0x9196\n#define GL_VIRTUAL_PAGE_SIZE_Z_EXT        0x9197\n#define GL_TEXTURE_2D_ARRAY               0x8C1A\n#define GL_TEXTURE_3D                     0x806F\n#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT    0x9198\n#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199\n#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A\n#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9\ntypedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit);\n#endif\n#endif /* GL_EXT_sparse_texture */\n\n#ifndef GL_EXT_sparse_texture2\n#define GL_EXT_sparse_texture2 1\n#endif /* GL_EXT_sparse_texture2 */\n\n#ifndef GL_EXT_tessellation_point_size\n#define GL_EXT_tessellation_point_size 1\n#endif /* GL_EXT_tessellation_point_size */\n\n#ifndef GL_EXT_tessellation_shader\n#define GL_EXT_tessellation_shader 1\n#define GL_PATCHES_EXT                    0x000E\n#define GL_PATCH_VERTICES_EXT             0x8E72\n#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75\n#define GL_TESS_GEN_MODE_EXT              0x8E76\n#define GL_TESS_GEN_SPACING_EXT           0x8E77\n#define GL_TESS_GEN_VERTEX_ORDER_EXT      0x8E78\n#define GL_TESS_GEN_POINT_MODE_EXT        0x8E79\n#define GL_ISOLINES_EXT                   0x8E7A\n#define GL_QUADS_EXT                      0x0007\n#define GL_FRACTIONAL_ODD_EXT             0x8E7B\n#define GL_FRACTIONAL_EVEN_EXT            0x8E7C\n#define GL_MAX_PATCH_VERTICES_EXT         0x8E7D\n#define GL_MAX_TESS_GEN_LEVEL_EXT         0x8E7E\n#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F\n#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80\n#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81\n#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82\n#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83\n#define GL_MAX_TESS_PATCH_COMPONENTS_EXT  0x8E84\n#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85\n#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86\n#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89\n#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A\n#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C\n#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D\n#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E\n#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE\n#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3\n#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4\n#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB\n#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC\n#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8\n#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9\n#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221\n#define GL_IS_PER_PATCH_EXT               0x92E7\n#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307\n#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308\n#define GL_TESS_CONTROL_SHADER_EXT        0x8E88\n#define GL_TESS_EVALUATION_SHADER_EXT     0x8E87\n#define GL_TESS_CONTROL_SHADER_BIT_EXT    0x00000008\n#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010\ntypedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value);\n#endif\n#endif /* GL_EXT_tessellation_shader */\n\n#ifndef GL_EXT_texture_border_clamp\n#define GL_EXT_texture_border_clamp 1\n#define GL_TEXTURE_BORDER_COLOR_EXT       0x1004\n#define GL_CLAMP_TO_BORDER_EXT            0x812D\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);\ntypedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param);\ntypedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param);\ntypedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);\nGL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);\nGL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);\nGL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param);\nGL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param);\nGL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params);\n#endif\n#endif /* GL_EXT_texture_border_clamp */\n\n#ifndef GL_EXT_texture_buffer\n#define GL_EXT_texture_buffer 1\n#define GL_TEXTURE_BUFFER_EXT             0x8C2A\n#define GL_TEXTURE_BUFFER_BINDING_EXT     0x8C2A\n#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B\n#define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C\n#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D\n#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F\n#define GL_SAMPLER_BUFFER_EXT             0x8DC2\n#define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0\n#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8\n#define GL_IMAGE_BUFFER_EXT               0x9051\n#define GL_INT_IMAGE_BUFFER_EXT           0x905C\n#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067\n#define GL_TEXTURE_BUFFER_OFFSET_EXT      0x919D\n#define GL_TEXTURE_BUFFER_SIZE_EXT        0x919E\ntypedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);\ntypedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);\nGL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);\n#endif\n#endif /* GL_EXT_texture_buffer */\n\n#ifndef GL_EXT_texture_compression_astc_decode_mode\n#define GL_EXT_texture_compression_astc_decode_mode 1\n#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69\n#endif /* GL_EXT_texture_compression_astc_decode_mode */\n\n#ifndef GL_EXT_texture_compression_bptc\n#define GL_EXT_texture_compression_bptc 1\n#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C\n#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D\n#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E\n#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F\n#endif /* GL_EXT_texture_compression_bptc */\n\n#ifndef GL_EXT_texture_compression_dxt1\n#define GL_EXT_texture_compression_dxt1 1\n#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0\n#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1\n#endif /* GL_EXT_texture_compression_dxt1 */\n\n#ifndef GL_EXT_texture_compression_rgtc\n#define GL_EXT_texture_compression_rgtc 1\n#define GL_COMPRESSED_RED_RGTC1_EXT       0x8DBB\n#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC\n#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD\n#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE\n#endif /* GL_EXT_texture_compression_rgtc */\n\n#ifndef GL_EXT_texture_compression_s3tc\n#define GL_EXT_texture_compression_s3tc 1\n#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2\n#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3\n#endif /* GL_EXT_texture_compression_s3tc */\n\n#ifndef GL_EXT_texture_compression_s3tc_srgb\n#define GL_EXT_texture_compression_s3tc_srgb 1\n#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT  0x8C4C\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F\n#endif /* GL_EXT_texture_compression_s3tc_srgb */\n\n#ifndef GL_EXT_texture_cube_map_array\n#define GL_EXT_texture_cube_map_array 1\n#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT     0x9009\n#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A\n#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT     0x900C\n#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D\n#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E\n#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F\n#define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054\n#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F\n#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A\n#endif /* GL_EXT_texture_cube_map_array */\n\n#ifndef GL_EXT_texture_filter_anisotropic\n#define GL_EXT_texture_filter_anisotropic 1\n#define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE\n#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF\n#endif /* GL_EXT_texture_filter_anisotropic */\n\n#ifndef GL_EXT_texture_filter_minmax\n#define GL_EXT_texture_filter_minmax 1\n#define GL_TEXTURE_REDUCTION_MODE_EXT     0x9366\n#define GL_WEIGHTED_AVERAGE_EXT           0x9367\n#endif /* GL_EXT_texture_filter_minmax */\n\n#ifndef GL_EXT_texture_format_BGRA8888\n#define GL_EXT_texture_format_BGRA8888 1\n#endif /* GL_EXT_texture_format_BGRA8888 */\n\n#ifndef GL_EXT_texture_format_sRGB_override\n#define GL_EXT_texture_format_sRGB_override 1\n#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF\n#endif /* GL_EXT_texture_format_sRGB_override */\n\n#ifndef GL_EXT_texture_mirror_clamp_to_edge\n#define GL_EXT_texture_mirror_clamp_to_edge 1\n#define GL_MIRROR_CLAMP_TO_EDGE_EXT       0x8743\n#endif /* GL_EXT_texture_mirror_clamp_to_edge */\n\n#ifndef GL_EXT_texture_norm16\n#define GL_EXT_texture_norm16 1\n#define GL_R16_EXT                        0x822A\n#define GL_RG16_EXT                       0x822C\n#define GL_RGBA16_EXT                     0x805B\n#define GL_RGB16_EXT                      0x8054\n#define GL_RGB16_SNORM_EXT                0x8F9A\n#endif /* GL_EXT_texture_norm16 */\n\n#ifndef GL_EXT_texture_query_lod\n#define GL_EXT_texture_query_lod 1\n#endif /* GL_EXT_texture_query_lod */\n\n#ifndef GL_EXT_texture_rg\n#define GL_EXT_texture_rg 1\n#define GL_RED_EXT                        0x1903\n#define GL_RG_EXT                         0x8227\n#define GL_R8_EXT                         0x8229\n#define GL_RG8_EXT                        0x822B\n#endif /* GL_EXT_texture_rg */\n\n#ifndef GL_EXT_texture_sRGB_R8\n#define GL_EXT_texture_sRGB_R8 1\n#define GL_SR8_EXT                        0x8FBD\n#endif /* GL_EXT_texture_sRGB_R8 */\n\n#ifndef GL_EXT_texture_sRGB_RG8\n#define GL_EXT_texture_sRGB_RG8 1\n#define GL_SRG8_EXT                       0x8FBE\n#endif /* GL_EXT_texture_sRGB_RG8 */\n\n#ifndef GL_EXT_texture_sRGB_decode\n#define GL_EXT_texture_sRGB_decode 1\n#define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48\n#define GL_DECODE_EXT                     0x8A49\n#define GL_SKIP_DECODE_EXT                0x8A4A\n#endif /* GL_EXT_texture_sRGB_decode */\n\n#ifndef GL_EXT_texture_shadow_lod\n#define GL_EXT_texture_shadow_lod 1\n#endif /* GL_EXT_texture_shadow_lod */\n\n#ifndef GL_EXT_texture_storage\n#define GL_EXT_texture_storage 1\n#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT   0x912F\n#define GL_ALPHA8_EXT                     0x803C\n#define GL_LUMINANCE8_EXT                 0x8040\n#define GL_LUMINANCE8_ALPHA8_EXT          0x8045\n#define GL_RGBA32F_EXT                    0x8814\n#define GL_RGB32F_EXT                     0x8815\n#define GL_ALPHA32F_EXT                   0x8816\n#define GL_LUMINANCE32F_EXT               0x8818\n#define GL_LUMINANCE_ALPHA32F_EXT         0x8819\n#define GL_ALPHA16F_EXT                   0x881C\n#define GL_LUMINANCE16F_EXT               0x881E\n#define GL_LUMINANCE_ALPHA16F_EXT         0x881F\n#define GL_R32F_EXT                       0x822E\n#define GL_RG32F_EXT                      0x8230\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\nGL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\nGL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);\nGL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);\n#endif\n#endif /* GL_EXT_texture_storage */\n\n#ifndef GL_EXT_texture_storage_compression\n#define GL_EXT_texture_storage_compression 1\n#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE\n#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);\ntypedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list);\nGL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list);\n#endif\n#endif /* GL_EXT_texture_storage_compression */\n\n#ifndef GL_EXT_texture_type_2_10_10_10_REV\n#define GL_EXT_texture_type_2_10_10_10_REV 1\n#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368\n#endif /* GL_EXT_texture_type_2_10_10_10_REV */\n\n#ifndef GL_EXT_texture_view\n#define GL_EXT_texture_view 1\n#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT     0x82DB\n#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT    0x82DC\n#define GL_TEXTURE_VIEW_MIN_LAYER_EXT     0x82DD\n#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT    0x82DE\ntypedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);\n#endif\n#endif /* GL_EXT_texture_view */\n\n#ifndef GL_EXT_unpack_subimage\n#define GL_EXT_unpack_subimage 1\n#define GL_UNPACK_ROW_LENGTH_EXT          0x0CF2\n#define GL_UNPACK_SKIP_ROWS_EXT           0x0CF3\n#define GL_UNPACK_SKIP_PIXELS_EXT         0x0CF4\n#endif /* GL_EXT_unpack_subimage */\n\n#ifndef GL_EXT_win32_keyed_mutex\n#define GL_EXT_win32_keyed_mutex 1\ntypedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout);\ntypedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout);\nGL_APICALL GLboolean GL_APIENTRY glReleaseKeyedMutexWin32EXT (GLuint memory, GLuint64 key);\n#endif\n#endif /* GL_EXT_win32_keyed_mutex */\n\n#ifndef GL_EXT_window_rectangles\n#define GL_EXT_window_rectangles 1\n#define GL_INCLUSIVE_EXT                  0x8F10\n#define GL_EXCLUSIVE_EXT                  0x8F11\n#define GL_WINDOW_RECTANGLE_EXT           0x8F12\n#define GL_WINDOW_RECTANGLE_MODE_EXT      0x8F13\n#define GL_MAX_WINDOW_RECTANGLES_EXT      0x8F14\n#define GL_NUM_WINDOW_RECTANGLES_EXT      0x8F15\ntypedef void (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box);\n#endif\n#endif /* GL_EXT_window_rectangles */\n\n#ifndef GL_FJ_shader_binary_GCCSO\n#define GL_FJ_shader_binary_GCCSO 1\n#define GL_GCCSO_SHADER_BINARY_FJ         0x9260\n#endif /* GL_FJ_shader_binary_GCCSO */\n\n#ifndef GL_IMG_bindless_texture\n#define GL_IMG_bindless_texture 1\ntypedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture);\ntypedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture);\nGL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler);\nGL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value);\nGL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value);\nGL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value);\nGL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\n#endif\n#endif /* GL_IMG_bindless_texture */\n\n#ifndef GL_IMG_framebuffer_downsample\n#define GL_IMG_framebuffer_downsample 1\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C\n#define GL_NUM_DOWNSAMPLE_SCALES_IMG      0x913D\n#define GL_DOWNSAMPLE_SCALES_IMG          0x913E\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale);\nGL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale);\n#endif\n#endif /* GL_IMG_framebuffer_downsample */\n\n#ifndef GL_IMG_multisampled_render_to_texture\n#define GL_IMG_multisampled_render_to_texture 1\n#define GL_RENDERBUFFER_SAMPLES_IMG       0x9133\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134\n#define GL_MAX_SAMPLES_IMG                0x9135\n#define GL_TEXTURE_SAMPLES_IMG            0x9136\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);\n#endif\n#endif /* GL_IMG_multisampled_render_to_texture */\n\n#ifndef GL_IMG_program_binary\n#define GL_IMG_program_binary 1\n#define GL_SGX_PROGRAM_BINARY_IMG         0x9130\n#endif /* GL_IMG_program_binary */\n\n#ifndef GL_IMG_read_format\n#define GL_IMG_read_format 1\n#define GL_BGRA_IMG                       0x80E1\n#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365\n#endif /* GL_IMG_read_format */\n\n#ifndef GL_IMG_shader_binary\n#define GL_IMG_shader_binary 1\n#define GL_SGX_BINARY_IMG                 0x8C0A\n#endif /* GL_IMG_shader_binary */\n\n#ifndef GL_IMG_texture_compression_pvrtc\n#define GL_IMG_texture_compression_pvrtc 1\n#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00\n#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01\n#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02\n#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03\n#endif /* GL_IMG_texture_compression_pvrtc */\n\n#ifndef GL_IMG_texture_compression_pvrtc2\n#define GL_IMG_texture_compression_pvrtc2 1\n#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137\n#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138\n#endif /* GL_IMG_texture_compression_pvrtc2 */\n\n#ifndef GL_IMG_texture_filter_cubic\n#define GL_IMG_texture_filter_cubic 1\n#define GL_CUBIC_IMG                      0x9139\n#define GL_CUBIC_MIPMAP_NEAREST_IMG       0x913A\n#define GL_CUBIC_MIPMAP_LINEAR_IMG        0x913B\n#endif /* GL_IMG_texture_filter_cubic */\n\n#ifndef GL_INTEL_blackhole_render\n#define GL_INTEL_blackhole_render 1\n#define GL_BLACKHOLE_RENDER_INTEL         0x83FC\n#endif /* GL_INTEL_blackhole_render */\n\n#ifndef GL_INTEL_conservative_rasterization\n#define GL_INTEL_conservative_rasterization 1\n#define GL_CONSERVATIVE_RASTERIZATION_INTEL 0x83FE\n#endif /* GL_INTEL_conservative_rasterization */\n\n#ifndef GL_INTEL_framebuffer_CMAA\n#define GL_INTEL_framebuffer_CMAA 1\ntypedef void (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glApplyFramebufferAttachmentCMAAINTEL (void);\n#endif\n#endif /* GL_INTEL_framebuffer_CMAA */\n\n#ifndef GL_INTEL_performance_query\n#define GL_INTEL_performance_query 1\n#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000\n#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001\n#define GL_PERFQUERY_WAIT_INTEL           0x83FB\n#define GL_PERFQUERY_FLUSH_INTEL          0x83FA\n#define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9\n#define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0\n#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1\n#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2\n#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3\n#define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4\n#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5\n#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8\n#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9\n#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA\n#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB\n#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC\n#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD\n#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE\n#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF\n#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500\ntypedef void (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle);\ntypedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle);\ntypedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId);\ntypedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId);\ntypedef void (GL_APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);\ntypedef void (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);\ntypedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId);\ntypedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle);\nGL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle);\nGL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle);\nGL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle);\nGL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId);\nGL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId);\nGL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue);\nGL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten);\nGL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId);\nGL_APICALL void GL_APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask);\n#endif\n#endif /* GL_INTEL_performance_query */\n\n#ifndef GL_MESA_bgra\n#define GL_MESA_bgra 1\n#define GL_BGR_EXT                        0x80E0\n#endif /* GL_MESA_bgra */\n\n#ifndef GL_MESA_framebuffer_flip_x\n#define GL_MESA_framebuffer_flip_x 1\n#define GL_FRAMEBUFFER_FLIP_X_MESA        0x8BBC\n#endif /* GL_MESA_framebuffer_flip_x */\n\n#ifndef GL_MESA_framebuffer_flip_y\n#define GL_MESA_framebuffer_flip_y 1\n#define GL_FRAMEBUFFER_FLIP_Y_MESA        0x8BBB\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param);\nGL_APICALL void GL_APIENTRY glGetFramebufferParameterivMESA (GLenum target, GLenum pname, GLint *params);\n#endif\n#endif /* GL_MESA_framebuffer_flip_y */\n\n#ifndef GL_MESA_framebuffer_swap_xy\n#define GL_MESA_framebuffer_swap_xy 1\n#define GL_FRAMEBUFFER_SWAP_XY_MESA       0x8BBD\n#endif /* GL_MESA_framebuffer_swap_xy */\n\n#ifndef GL_MESA_program_binary_formats\n#define GL_MESA_program_binary_formats 1\n#define GL_PROGRAM_BINARY_FORMAT_MESA     0x875F\n#endif /* GL_MESA_program_binary_formats */\n\n#ifndef GL_MESA_shader_integer_functions\n#define GL_MESA_shader_integer_functions 1\n#endif /* GL_MESA_shader_integer_functions */\n\n#ifndef GL_NVX_blend_equation_advanced_multi_draw_buffers\n#define GL_NVX_blend_equation_advanced_multi_draw_buffers 1\n#endif /* GL_NVX_blend_equation_advanced_multi_draw_buffers */\n\n#ifndef GL_NV_bindless_texture\n#define GL_NV_bindless_texture 1\ntypedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture);\ntypedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler);\ntypedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);\ntypedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle);\ntypedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\ntypedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access);\ntypedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\ntypedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle);\ntypedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture);\nGL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler);\nGL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle);\nGL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle);\nGL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format);\nGL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access);\nGL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle);\nGL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value);\nGL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value);\nGL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value);\nGL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values);\nGL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle);\nGL_APICALL GLboolean GL_APIENTRY glIsImageHandleResidentNV (GLuint64 handle);\n#endif\n#endif /* GL_NV_bindless_texture */\n\n#ifndef GL_NV_blend_equation_advanced\n#define GL_NV_blend_equation_advanced 1\n#define GL_BLEND_OVERLAP_NV               0x9281\n#define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280\n#define GL_BLUE_NV                        0x1905\n#define GL_COLORBURN_NV                   0x929A\n#define GL_COLORDODGE_NV                  0x9299\n#define GL_CONJOINT_NV                    0x9284\n#define GL_CONTRAST_NV                    0x92A1\n#define GL_DARKEN_NV                      0x9297\n#define GL_DIFFERENCE_NV                  0x929E\n#define GL_DISJOINT_NV                    0x9283\n#define GL_DST_ATOP_NV                    0x928F\n#define GL_DST_IN_NV                      0x928B\n#define GL_DST_NV                         0x9287\n#define GL_DST_OUT_NV                     0x928D\n#define GL_DST_OVER_NV                    0x9289\n#define GL_EXCLUSION_NV                   0x92A0\n#define GL_GREEN_NV                       0x1904\n#define GL_HARDLIGHT_NV                   0x929B\n#define GL_HARDMIX_NV                     0x92A9\n#define GL_HSL_COLOR_NV                   0x92AF\n#define GL_HSL_HUE_NV                     0x92AD\n#define GL_HSL_LUMINOSITY_NV              0x92B0\n#define GL_HSL_SATURATION_NV              0x92AE\n#define GL_INVERT_OVG_NV                  0x92B4\n#define GL_INVERT_RGB_NV                  0x92A3\n#define GL_LIGHTEN_NV                     0x9298\n#define GL_LINEARBURN_NV                  0x92A5\n#define GL_LINEARDODGE_NV                 0x92A4\n#define GL_LINEARLIGHT_NV                 0x92A7\n#define GL_MINUS_CLAMPED_NV               0x92B3\n#define GL_MINUS_NV                       0x929F\n#define GL_MULTIPLY_NV                    0x9294\n#define GL_OVERLAY_NV                     0x9296\n#define GL_PINLIGHT_NV                    0x92A8\n#define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2\n#define GL_PLUS_CLAMPED_NV                0x92B1\n#define GL_PLUS_DARKER_NV                 0x9292\n#define GL_PLUS_NV                        0x9291\n#define GL_RED_NV                         0x1903\n#define GL_SCREEN_NV                      0x9295\n#define GL_SOFTLIGHT_NV                   0x929C\n#define GL_SRC_ATOP_NV                    0x928E\n#define GL_SRC_IN_NV                      0x928A\n#define GL_SRC_NV                         0x9286\n#define GL_SRC_OUT_NV                     0x928C\n#define GL_SRC_OVER_NV                    0x9288\n#define GL_UNCORRELATED_NV                0x9282\n#define GL_VIVIDLIGHT_NV                  0x92A6\n#define GL_XOR_NV                         0x1506\ntypedef void (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value);\ntypedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value);\nGL_APICALL void GL_APIENTRY glBlendBarrierNV (void);\n#endif\n#endif /* GL_NV_blend_equation_advanced */\n\n#ifndef GL_NV_blend_equation_advanced_coherent\n#define GL_NV_blend_equation_advanced_coherent 1\n#define GL_BLEND_ADVANCED_COHERENT_NV     0x9285\n#endif /* GL_NV_blend_equation_advanced_coherent */\n\n#ifndef GL_NV_blend_minmax_factor\n#define GL_NV_blend_minmax_factor 1\n#define GL_FACTOR_MIN_AMD                 0x901C\n#define GL_FACTOR_MAX_AMD                 0x901D\n#endif /* GL_NV_blend_minmax_factor */\n\n#ifndef GL_NV_clip_space_w_scaling\n#define GL_NV_clip_space_w_scaling 1\n#define GL_VIEWPORT_POSITION_W_SCALE_NV   0x937C\n#define GL_VIEWPORT_POSITION_W_SCALE_X_COEFF_NV 0x937D\n#define GL_VIEWPORT_POSITION_W_SCALE_Y_COEFF_NV 0x937E\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff);\n#endif\n#endif /* GL_NV_clip_space_w_scaling */\n\n#ifndef GL_NV_compute_shader_derivatives\n#define GL_NV_compute_shader_derivatives 1\n#endif /* GL_NV_compute_shader_derivatives */\n\n#ifndef GL_NV_conditional_render\n#define GL_NV_conditional_render 1\n#define GL_QUERY_WAIT_NV                  0x8E13\n#define GL_QUERY_NO_WAIT_NV               0x8E14\n#define GL_QUERY_BY_REGION_WAIT_NV        0x8E15\n#define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16\ntypedef void (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);\nGL_APICALL void GL_APIENTRY glEndConditionalRenderNV (void);\n#endif\n#endif /* GL_NV_conditional_render */\n\n#ifndef GL_NV_conservative_raster\n#define GL_NV_conservative_raster 1\n#define GL_CONSERVATIVE_RASTERIZATION_NV  0x9346\n#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347\n#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348\n#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349\ntypedef void (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits);\n#endif\n#endif /* GL_NV_conservative_raster */\n\n#ifndef GL_NV_conservative_raster_pre_snap\n#define GL_NV_conservative_raster_pre_snap 1\n#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_NV 0x9550\n#endif /* GL_NV_conservative_raster_pre_snap */\n\n#ifndef GL_NV_conservative_raster_pre_snap_triangles\n#define GL_NV_conservative_raster_pre_snap_triangles 1\n#define GL_CONSERVATIVE_RASTER_MODE_NV    0x954D\n#define GL_CONSERVATIVE_RASTER_MODE_POST_SNAP_NV 0x954E\n#define GL_CONSERVATIVE_RASTER_MODE_PRE_SNAP_TRIANGLES_NV 0x954F\ntypedef void (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param);\n#endif\n#endif /* GL_NV_conservative_raster_pre_snap_triangles */\n\n#ifndef GL_NV_copy_buffer\n#define GL_NV_copy_buffer 1\n#define GL_COPY_READ_BUFFER_NV            0x8F36\n#define GL_COPY_WRITE_BUFFER_NV           0x8F37\ntypedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);\n#endif\n#endif /* GL_NV_copy_buffer */\n\n#ifndef GL_NV_coverage_sample\n#define GL_NV_coverage_sample 1\n#define GL_COVERAGE_COMPONENT_NV          0x8ED0\n#define GL_COVERAGE_COMPONENT4_NV         0x8ED1\n#define GL_COVERAGE_ATTACHMENT_NV         0x8ED2\n#define GL_COVERAGE_BUFFERS_NV            0x8ED3\n#define GL_COVERAGE_SAMPLES_NV            0x8ED4\n#define GL_COVERAGE_ALL_FRAGMENTS_NV      0x8ED5\n#define GL_COVERAGE_EDGE_FRAGMENTS_NV     0x8ED6\n#define GL_COVERAGE_AUTOMATIC_NV          0x8ED7\n#define GL_COVERAGE_BUFFER_BIT_NV         0x00008000\ntypedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);\ntypedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);\nGL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);\n#endif\n#endif /* GL_NV_coverage_sample */\n\n#ifndef GL_NV_depth_nonlinear\n#define GL_NV_depth_nonlinear 1\n#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C\n#endif /* GL_NV_depth_nonlinear */\n\n#ifndef GL_NV_draw_buffers\n#define GL_NV_draw_buffers 1\n#define GL_MAX_DRAW_BUFFERS_NV            0x8824\n#define GL_DRAW_BUFFER0_NV                0x8825\n#define GL_DRAW_BUFFER1_NV                0x8826\n#define GL_DRAW_BUFFER2_NV                0x8827\n#define GL_DRAW_BUFFER3_NV                0x8828\n#define GL_DRAW_BUFFER4_NV                0x8829\n#define GL_DRAW_BUFFER5_NV                0x882A\n#define GL_DRAW_BUFFER6_NV                0x882B\n#define GL_DRAW_BUFFER7_NV                0x882C\n#define GL_DRAW_BUFFER8_NV                0x882D\n#define GL_DRAW_BUFFER9_NV                0x882E\n#define GL_DRAW_BUFFER10_NV               0x882F\n#define GL_DRAW_BUFFER11_NV               0x8830\n#define GL_DRAW_BUFFER12_NV               0x8831\n#define GL_DRAW_BUFFER13_NV               0x8832\n#define GL_DRAW_BUFFER14_NV               0x8833\n#define GL_DRAW_BUFFER15_NV               0x8834\n#define GL_COLOR_ATTACHMENT0_NV           0x8CE0\n#define GL_COLOR_ATTACHMENT1_NV           0x8CE1\n#define GL_COLOR_ATTACHMENT2_NV           0x8CE2\n#define GL_COLOR_ATTACHMENT3_NV           0x8CE3\n#define GL_COLOR_ATTACHMENT4_NV           0x8CE4\n#define GL_COLOR_ATTACHMENT5_NV           0x8CE5\n#define GL_COLOR_ATTACHMENT6_NV           0x8CE6\n#define GL_COLOR_ATTACHMENT7_NV           0x8CE7\n#define GL_COLOR_ATTACHMENT8_NV           0x8CE8\n#define GL_COLOR_ATTACHMENT9_NV           0x8CE9\n#define GL_COLOR_ATTACHMENT10_NV          0x8CEA\n#define GL_COLOR_ATTACHMENT11_NV          0x8CEB\n#define GL_COLOR_ATTACHMENT12_NV          0x8CEC\n#define GL_COLOR_ATTACHMENT13_NV          0x8CED\n#define GL_COLOR_ATTACHMENT14_NV          0x8CEE\n#define GL_COLOR_ATTACHMENT15_NV          0x8CEF\ntypedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs);\n#endif\n#endif /* GL_NV_draw_buffers */\n\n#ifndef GL_NV_draw_instanced\n#define GL_NV_draw_instanced 1\ntypedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\ntypedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount);\nGL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount);\n#endif\n#endif /* GL_NV_draw_instanced */\n\n#ifndef GL_NV_draw_vulkan_image\n#define GL_NV_draw_vulkan_image 1\ntypedef void (GL_APIENTRY  *GLVULKANPROCNV)(void);\ntypedef void (GL_APIENTRYP PFNGLDRAWVKIMAGENVPROC) (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\ntypedef GLVULKANPROCNV (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name);\ntypedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);\ntypedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore);\ntypedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1);\nGL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name);\nGL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);\nGL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);\nGL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence);\n#endif\n#endif /* GL_NV_draw_vulkan_image */\n\n#ifndef GL_NV_explicit_attrib_location\n#define GL_NV_explicit_attrib_location 1\n#endif /* GL_NV_explicit_attrib_location */\n\n#ifndef GL_NV_fbo_color_attachments\n#define GL_NV_fbo_color_attachments 1\n#define GL_MAX_COLOR_ATTACHMENTS_NV       0x8CDF\n#endif /* GL_NV_fbo_color_attachments */\n\n#ifndef GL_NV_fence\n#define GL_NV_fence 1\n#define GL_ALL_COMPLETED_NV               0x84F2\n#define GL_FENCE_STATUS_NV                0x84F3\n#define GL_FENCE_CONDITION_NV             0x84F4\ntypedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);\ntypedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);\ntypedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);\ntypedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);\ntypedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);\ntypedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);\nGL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);\nGL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence);\nGL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence);\nGL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence);\nGL_APICALL void GL_APIENTRY glSetFenceNV (GLuint fence, GLenum condition);\n#endif\n#endif /* GL_NV_fence */\n\n#ifndef GL_NV_fill_rectangle\n#define GL_NV_fill_rectangle 1\n#define GL_FILL_RECTANGLE_NV              0x933C\n#endif /* GL_NV_fill_rectangle */\n\n#ifndef GL_NV_fragment_coverage_to_color\n#define GL_NV_fragment_coverage_to_color 1\n#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV  0x92DD\n#define GL_FRAGMENT_COVERAGE_COLOR_NV     0x92DE\ntypedef void (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFragmentCoverageColorNV (GLuint color);\n#endif\n#endif /* GL_NV_fragment_coverage_to_color */\n\n#ifndef GL_NV_fragment_shader_barycentric\n#define GL_NV_fragment_shader_barycentric 1\n#endif /* GL_NV_fragment_shader_barycentric */\n\n#ifndef GL_NV_fragment_shader_interlock\n#define GL_NV_fragment_shader_interlock 1\n#endif /* GL_NV_fragment_shader_interlock */\n\n#ifndef GL_NV_framebuffer_blit\n#define GL_NV_framebuffer_blit 1\n#define GL_READ_FRAMEBUFFER_NV            0x8CA8\n#define GL_DRAW_FRAMEBUFFER_NV            0x8CA9\n#define GL_DRAW_FRAMEBUFFER_BINDING_NV    0x8CA6\n#define GL_READ_FRAMEBUFFER_BINDING_NV    0x8CAA\ntypedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);\n#endif\n#endif /* GL_NV_framebuffer_blit */\n\n#ifndef GL_NV_framebuffer_mixed_samples\n#define GL_NV_framebuffer_mixed_samples 1\n#define GL_COVERAGE_MODULATION_TABLE_NV   0x9331\n#define GL_COLOR_SAMPLES_NV               0x8E20\n#define GL_DEPTH_SAMPLES_NV               0x932D\n#define GL_STENCIL_SAMPLES_NV             0x932E\n#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F\n#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330\n#define GL_COVERAGE_MODULATION_NV         0x9332\n#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333\ntypedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v);\nGL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components);\n#endif\n#endif /* GL_NV_framebuffer_mixed_samples */\n\n#ifndef GL_NV_framebuffer_multisample\n#define GL_NV_framebuffer_multisample 1\n#define GL_RENDERBUFFER_SAMPLES_NV        0x8CAB\n#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56\n#define GL_MAX_SAMPLES_NV                 0x8D57\ntypedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);\n#endif\n#endif /* GL_NV_framebuffer_multisample */\n\n#ifndef GL_NV_generate_mipmap_sRGB\n#define GL_NV_generate_mipmap_sRGB 1\n#endif /* GL_NV_generate_mipmap_sRGB */\n\n#ifndef GL_NV_geometry_shader_passthrough\n#define GL_NV_geometry_shader_passthrough 1\n#endif /* GL_NV_geometry_shader_passthrough */\n\n#ifndef GL_NV_gpu_shader5\n#define GL_NV_gpu_shader5 1\ntypedef khronos_int64_t GLint64EXT;\ntypedef khronos_uint64_t GLuint64EXT;\n#define GL_INT64_NV                       0x140E\n#define GL_UNSIGNED_INT64_NV              0x140F\n#define GL_INT8_NV                        0x8FE0\n#define GL_INT8_VEC2_NV                   0x8FE1\n#define GL_INT8_VEC3_NV                   0x8FE2\n#define GL_INT8_VEC4_NV                   0x8FE3\n#define GL_INT16_NV                       0x8FE4\n#define GL_INT16_VEC2_NV                  0x8FE5\n#define GL_INT16_VEC3_NV                  0x8FE6\n#define GL_INT16_VEC4_NV                  0x8FE7\n#define GL_INT64_VEC2_NV                  0x8FE9\n#define GL_INT64_VEC3_NV                  0x8FEA\n#define GL_INT64_VEC4_NV                  0x8FEB\n#define GL_UNSIGNED_INT8_NV               0x8FEC\n#define GL_UNSIGNED_INT8_VEC2_NV          0x8FED\n#define GL_UNSIGNED_INT8_VEC3_NV          0x8FEE\n#define GL_UNSIGNED_INT8_VEC4_NV          0x8FEF\n#define GL_UNSIGNED_INT16_NV              0x8FF0\n#define GL_UNSIGNED_INT16_VEC2_NV         0x8FF1\n#define GL_UNSIGNED_INT16_VEC3_NV         0x8FF2\n#define GL_UNSIGNED_INT16_VEC4_NV         0x8FF3\n#define GL_UNSIGNED_INT64_VEC2_NV         0x8FF5\n#define GL_UNSIGNED_INT64_VEC3_NV         0x8FF6\n#define GL_UNSIGNED_INT64_VEC4_NV         0x8FF7\n#define GL_FLOAT16_NV                     0x8FF8\n#define GL_FLOAT16_VEC2_NV                0x8FF9\n#define GL_FLOAT16_VEC3_NV                0x8FFA\n#define GL_FLOAT16_VEC4_NV                0x8FFB\n#define GL_PATCHES                        0x000E\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x);\nGL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y);\nGL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\nGL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\nGL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x);\nGL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y);\nGL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\nGL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\nGL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params);\nGL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x);\nGL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);\nGL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);\nGL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);\nGL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x);\nGL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);\nGL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);\nGL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);\nGL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\nGL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);\n#endif\n#endif /* GL_NV_gpu_shader5 */\n\n#ifndef GL_NV_image_formats\n#define GL_NV_image_formats 1\n#endif /* GL_NV_image_formats */\n\n#ifndef GL_NV_instanced_arrays\n#define GL_NV_instanced_arrays 1\n#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE\ntypedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor);\n#endif\n#endif /* GL_NV_instanced_arrays */\n\n#ifndef GL_NV_internalformat_sample_query\n#define GL_NV_internalformat_sample_query 1\n#define GL_TEXTURE_2D_MULTISAMPLE         0x9100\n#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102\n#define GL_MULTISAMPLES_NV                0x9371\n#define GL_SUPERSAMPLE_SCALE_X_NV         0x9372\n#define GL_SUPERSAMPLE_SCALE_Y_NV         0x9373\n#define GL_CONFORMANT_NV                  0x9374\ntypedef void (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetInternalformatSampleivNV (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params);\n#endif\n#endif /* GL_NV_internalformat_sample_query */\n\n#ifndef GL_NV_memory_attachment\n#define GL_NV_memory_attachment 1\n#define GL_ATTACHED_MEMORY_OBJECT_NV      0x95A4\n#define GL_ATTACHED_MEMORY_OFFSET_NV      0x95A5\n#define GL_MEMORY_ATTACHABLE_ALIGNMENT_NV 0x95A6\n#define GL_MEMORY_ATTACHABLE_SIZE_NV      0x95A7\n#define GL_MEMORY_ATTACHABLE_NV           0x95A8\n#define GL_DETACHED_MEMORY_INCARNATION_NV 0x95A9\n#define GL_DETACHED_TEXTURES_NV           0x95AA\n#define GL_DETACHED_BUFFERS_NV            0x95AB\n#define GL_MAX_DETACHED_TEXTURES_NV       0x95AC\n#define GL_MAX_DETACHED_BUFFERS_NV        0x95AD\ntypedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);\ntypedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname);\ntypedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset);\ntypedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params);\nGL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname);\nGL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset);\nGL_APICALL void GL_APIENTRY glNamedBufferAttachMemoryNV (GLuint buffer, GLuint memory, GLuint64 offset);\n#endif\n#endif /* GL_NV_memory_attachment */\n\n#ifndef GL_NV_memory_object_sparse\n#define GL_NV_memory_object_sparse 1\ntypedef void (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\ntypedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTMEMNVPROC) (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\ntypedef void (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\ntypedef void (GL_APIENTRYP PFNGLTEXTUREPAGECOMMITMENTMEMNVPROC) (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\nGL_APICALL void GL_APIENTRY glTexPageCommitmentMemNV (GLenum target, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\nGL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit);\nGL_APICALL void GL_APIENTRY glTexturePageCommitmentMemNV (GLuint texture, GLint layer, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset, GLboolean commit);\n#endif\n#endif /* GL_NV_memory_object_sparse */\n\n#ifndef GL_NV_mesh_shader\n#define GL_NV_mesh_shader 1\n#define GL_MESH_SHADER_NV                 0x9559\n#define GL_TASK_SHADER_NV                 0x955A\n#define GL_MAX_MESH_UNIFORM_BLOCKS_NV     0x8E60\n#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_NV 0x8E61\n#define GL_MAX_MESH_IMAGE_UNIFORMS_NV     0x8E62\n#define GL_MAX_MESH_UNIFORM_COMPONENTS_NV 0x8E63\n#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_NV 0x8E64\n#define GL_MAX_MESH_ATOMIC_COUNTERS_NV    0x8E65\n#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_NV 0x8E66\n#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_NV 0x8E67\n#define GL_MAX_TASK_UNIFORM_BLOCKS_NV     0x8E68\n#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_NV 0x8E69\n#define GL_MAX_TASK_IMAGE_UNIFORMS_NV     0x8E6A\n#define GL_MAX_TASK_UNIFORM_COMPONENTS_NV 0x8E6B\n#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_NV 0x8E6C\n#define GL_MAX_TASK_ATOMIC_COUNTERS_NV    0x8E6D\n#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_NV 0x8E6E\n#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_NV 0x8E6F\n#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_NV 0x95A2\n#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_NV 0x95A3\n#define GL_MAX_MESH_TOTAL_MEMORY_SIZE_NV  0x9536\n#define GL_MAX_TASK_TOTAL_MEMORY_SIZE_NV  0x9537\n#define GL_MAX_MESH_OUTPUT_VERTICES_NV    0x9538\n#define GL_MAX_MESH_OUTPUT_PRIMITIVES_NV  0x9539\n#define GL_MAX_TASK_OUTPUT_COUNT_NV       0x953A\n#define GL_MAX_DRAW_MESH_TASKS_COUNT_NV   0x953D\n#define GL_MAX_MESH_VIEWS_NV              0x9557\n#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_NV 0x92DF\n#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_NV 0x9543\n#define GL_MAX_MESH_WORK_GROUP_SIZE_NV    0x953B\n#define GL_MAX_TASK_WORK_GROUP_SIZE_NV    0x953C\n#define GL_MESH_WORK_GROUP_SIZE_NV        0x953E\n#define GL_TASK_WORK_GROUP_SIZE_NV        0x953F\n#define GL_MESH_VERTICES_OUT_NV           0x9579\n#define GL_MESH_PRIMITIVES_OUT_NV         0x957A\n#define GL_MESH_OUTPUT_TYPE_NV            0x957B\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_NV 0x959C\n#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_NV 0x959D\n#define GL_REFERENCED_BY_MESH_SHADER_NV   0x95A0\n#define GL_REFERENCED_BY_TASK_SHADER_NV   0x95A1\n#define GL_MESH_SHADER_BIT_NV             0x00000040\n#define GL_TASK_SHADER_BIT_NV             0x00000080\n#define GL_MESH_SUBROUTINE_NV             0x957C\n#define GL_TASK_SUBROUTINE_NV             0x957D\n#define GL_MESH_SUBROUTINE_UNIFORM_NV     0x957E\n#define GL_TASK_SUBROUTINE_UNIFORM_NV     0x957F\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_NV 0x959E\n#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_NV 0x959F\ntypedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count);\ntypedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect);\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);\ntypedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count);\nGL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect);\nGL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride);\nGL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);\n#endif\n#endif /* GL_NV_mesh_shader */\n\n#ifndef GL_NV_non_square_matrices\n#define GL_NV_non_square_matrices 1\n#define GL_FLOAT_MAT2x3_NV                0x8B65\n#define GL_FLOAT_MAT2x4_NV                0x8B66\n#define GL_FLOAT_MAT3x2_NV                0x8B67\n#define GL_FLOAT_MAT3x4_NV                0x8B68\n#define GL_FLOAT_MAT4x2_NV                0x8B69\n#define GL_FLOAT_MAT4x3_NV                0x8B6A\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);\n#endif\n#endif /* GL_NV_non_square_matrices */\n\n#ifndef GL_NV_path_rendering\n#define GL_NV_path_rendering 1\ntypedef double GLdouble;\n#define GL_PATH_FORMAT_SVG_NV             0x9070\n#define GL_PATH_FORMAT_PS_NV              0x9071\n#define GL_STANDARD_FONT_NAME_NV          0x9072\n#define GL_SYSTEM_FONT_NAME_NV            0x9073\n#define GL_FILE_NAME_NV                   0x9074\n#define GL_PATH_STROKE_WIDTH_NV           0x9075\n#define GL_PATH_END_CAPS_NV               0x9076\n#define GL_PATH_INITIAL_END_CAP_NV        0x9077\n#define GL_PATH_TERMINAL_END_CAP_NV       0x9078\n#define GL_PATH_JOIN_STYLE_NV             0x9079\n#define GL_PATH_MITER_LIMIT_NV            0x907A\n#define GL_PATH_DASH_CAPS_NV              0x907B\n#define GL_PATH_INITIAL_DASH_CAP_NV       0x907C\n#define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D\n#define GL_PATH_DASH_OFFSET_NV            0x907E\n#define GL_PATH_CLIENT_LENGTH_NV          0x907F\n#define GL_PATH_FILL_MODE_NV              0x9080\n#define GL_PATH_FILL_MASK_NV              0x9081\n#define GL_PATH_FILL_COVER_MODE_NV        0x9082\n#define GL_PATH_STROKE_COVER_MODE_NV      0x9083\n#define GL_PATH_STROKE_MASK_NV            0x9084\n#define GL_COUNT_UP_NV                    0x9088\n#define GL_COUNT_DOWN_NV                  0x9089\n#define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A\n#define GL_CONVEX_HULL_NV                 0x908B\n#define GL_BOUNDING_BOX_NV                0x908D\n#define GL_TRANSLATE_X_NV                 0x908E\n#define GL_TRANSLATE_Y_NV                 0x908F\n#define GL_TRANSLATE_2D_NV                0x9090\n#define GL_TRANSLATE_3D_NV                0x9091\n#define GL_AFFINE_2D_NV                   0x9092\n#define GL_AFFINE_3D_NV                   0x9094\n#define GL_TRANSPOSE_AFFINE_2D_NV         0x9096\n#define GL_TRANSPOSE_AFFINE_3D_NV         0x9098\n#define GL_UTF8_NV                        0x909A\n#define GL_UTF16_NV                       0x909B\n#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C\n#define GL_PATH_COMMAND_COUNT_NV          0x909D\n#define GL_PATH_COORD_COUNT_NV            0x909E\n#define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F\n#define GL_PATH_COMPUTED_LENGTH_NV        0x90A0\n#define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1\n#define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2\n#define GL_SQUARE_NV                      0x90A3\n#define GL_ROUND_NV                       0x90A4\n#define GL_TRIANGULAR_NV                  0x90A5\n#define GL_BEVEL_NV                       0x90A6\n#define GL_MITER_REVERT_NV                0x90A7\n#define GL_MITER_TRUNCATE_NV              0x90A8\n#define GL_SKIP_MISSING_GLYPH_NV          0x90A9\n#define GL_USE_MISSING_GLYPH_NV           0x90AA\n#define GL_PATH_ERROR_POSITION_NV         0x90AB\n#define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD\n#define GL_ADJACENT_PAIRS_NV              0x90AE\n#define GL_FIRST_TO_REST_NV               0x90AF\n#define GL_PATH_GEN_MODE_NV               0x90B0\n#define GL_PATH_GEN_COEFF_NV              0x90B1\n#define GL_PATH_GEN_COMPONENTS_NV         0x90B3\n#define GL_PATH_STENCIL_FUNC_NV           0x90B7\n#define GL_PATH_STENCIL_REF_NV            0x90B8\n#define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9\n#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD\n#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE\n#define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF\n#define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4\n#define GL_MOVE_TO_RESETS_NV              0x90B5\n#define GL_MOVE_TO_CONTINUES_NV           0x90B6\n#define GL_CLOSE_PATH_NV                  0x00\n#define GL_MOVE_TO_NV                     0x02\n#define GL_RELATIVE_MOVE_TO_NV            0x03\n#define GL_LINE_TO_NV                     0x04\n#define GL_RELATIVE_LINE_TO_NV            0x05\n#define GL_HORIZONTAL_LINE_TO_NV          0x06\n#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07\n#define GL_VERTICAL_LINE_TO_NV            0x08\n#define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09\n#define GL_QUADRATIC_CURVE_TO_NV          0x0A\n#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B\n#define GL_CUBIC_CURVE_TO_NV              0x0C\n#define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D\n#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E\n#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F\n#define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10\n#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11\n#define GL_SMALL_CCW_ARC_TO_NV            0x12\n#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13\n#define GL_SMALL_CW_ARC_TO_NV             0x14\n#define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15\n#define GL_LARGE_CCW_ARC_TO_NV            0x16\n#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17\n#define GL_LARGE_CW_ARC_TO_NV             0x18\n#define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19\n#define GL_RESTART_PATH_NV                0xF0\n#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2\n#define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4\n#define GL_RECT_NV                        0xF6\n#define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8\n#define GL_CIRCULAR_CW_ARC_TO_NV          0xFA\n#define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC\n#define GL_ARC_TO_NV                      0xFE\n#define GL_RELATIVE_ARC_TO_NV             0xFF\n#define GL_BOLD_BIT_NV                    0x01\n#define GL_ITALIC_BIT_NV                  0x02\n#define GL_GLYPH_WIDTH_BIT_NV             0x01\n#define GL_GLYPH_HEIGHT_BIT_NV            0x02\n#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04\n#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08\n#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10\n#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20\n#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40\n#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80\n#define GL_GLYPH_HAS_KERNING_BIT_NV       0x100\n#define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000\n#define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000\n#define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000\n#define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000\n#define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000\n#define GL_FONT_ASCENDER_BIT_NV           0x00200000\n#define GL_FONT_DESCENDER_BIT_NV          0x00400000\n#define GL_FONT_HEIGHT_BIT_NV             0x00800000\n#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000\n#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000\n#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000\n#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000\n#define GL_FONT_HAS_KERNING_BIT_NV        0x10000000\n#define GL_ROUNDED_RECT_NV                0xE8\n#define GL_RELATIVE_ROUNDED_RECT_NV       0xE9\n#define GL_ROUNDED_RECT2_NV               0xEA\n#define GL_RELATIVE_ROUNDED_RECT2_NV      0xEB\n#define GL_ROUNDED_RECT4_NV               0xEC\n#define GL_RELATIVE_ROUNDED_RECT4_NV      0xED\n#define GL_ROUNDED_RECT8_NV               0xEE\n#define GL_RELATIVE_ROUNDED_RECT8_NV      0xEF\n#define GL_RELATIVE_RECT_NV               0xF7\n#define GL_FONT_GLYPHS_AVAILABLE_NV       0x9368\n#define GL_FONT_TARGET_UNAVAILABLE_NV     0x9369\n#define GL_FONT_UNAVAILABLE_NV            0x936A\n#define GL_FONT_UNINTELLIGIBLE_NV         0x936B\n#define GL_CONIC_CURVE_TO_NV              0x1A\n#define GL_RELATIVE_CONIC_CURVE_TO_NV     0x1B\n#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV  0x20000000\n#define GL_STANDARD_FONT_FORMAT_NV        0x936C\n#define GL_PATH_PROJECTION_NV             0x1701\n#define GL_PATH_MODELVIEW_NV              0x1700\n#define GL_PATH_MODELVIEW_STACK_DEPTH_NV  0x0BA3\n#define GL_PATH_MODELVIEW_MATRIX_NV       0x0BA6\n#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36\n#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3\n#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4\n#define GL_PATH_PROJECTION_MATRIX_NV      0x0BA7\n#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38\n#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4\n#define GL_FRAGMENT_INPUT_NV              0x936D\ntypedef GLuint (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range);\ntypedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range);\ntypedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path);\ntypedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);\ntypedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString);\ntypedef void (GL_APIENTRYP PFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);\ntypedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath);\ntypedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);\ntypedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value);\ntypedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value);\ntypedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value);\ntypedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray);\ntypedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units);\ntypedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask);\ntypedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func);\ntypedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode);\ntypedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode);\ntypedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value);\ntypedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value);\ntypedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands);\ntypedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords);\ntypedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray);\ntypedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);\ntypedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);\ntypedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);\ntypedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y);\ntypedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y);\ntypedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments);\ntypedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);\ntypedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode);\ntypedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\ntypedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);\ntypedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\ntypedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);\ntypedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);\ntypedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m);\ntypedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\ntypedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode);\ntypedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\ntypedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\ntypedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range);\nGL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range);\nGL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path);\nGL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\nGL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords);\nGL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords);\nGL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords);\nGL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString);\nGL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights);\nGL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath);\nGL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight);\nGL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value);\nGL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value);\nGL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value);\nGL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value);\nGL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray);\nGL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask);\nGL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units);\nGL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask);\nGL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func);\nGL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode);\nGL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode);\nGL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value);\nGL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value);\nGL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands);\nGL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords);\nGL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray);\nGL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics);\nGL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics);\nGL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing);\nGL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y);\nGL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y);\nGL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments);\nGL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY);\nGL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode);\nGL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode);\nGL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues);\nGL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount);\nGL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale);\nGL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs);\nGL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params);\nGL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode);\nGL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);\nGL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);\nGL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);\nGL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);\nGL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);\nGL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);\nGL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode);\nGL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode);\nGL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);\nGL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);\nGL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\nGL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\nGL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);\nGL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);\n#endif\n#endif /* GL_NV_path_rendering */\n\n#ifndef GL_NV_path_rendering_shared_edge\n#define GL_NV_path_rendering_shared_edge 1\n#define GL_SHARED_EDGE_NV                 0xC0\n#endif /* GL_NV_path_rendering_shared_edge */\n\n#ifndef GL_NV_pixel_buffer_object\n#define GL_NV_pixel_buffer_object 1\n#define GL_PIXEL_PACK_BUFFER_NV           0x88EB\n#define GL_PIXEL_UNPACK_BUFFER_NV         0x88EC\n#define GL_PIXEL_PACK_BUFFER_BINDING_NV   0x88ED\n#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF\n#endif /* GL_NV_pixel_buffer_object */\n\n#ifndef GL_NV_polygon_mode\n#define GL_NV_polygon_mode 1\n#define GL_POLYGON_MODE_NV                0x0B40\n#define GL_POLYGON_OFFSET_POINT_NV        0x2A01\n#define GL_POLYGON_OFFSET_LINE_NV         0x2A02\n#define GL_POINT_NV                       0x1B00\n#define GL_LINE_NV                        0x1B01\n#define GL_FILL_NV                        0x1B02\ntypedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode);\n#endif\n#endif /* GL_NV_polygon_mode */\n\n#ifndef GL_NV_primitive_shading_rate\n#define GL_NV_primitive_shading_rate 1\n#define GL_SHADING_RATE_IMAGE_PER_PRIMITIVE_NV 0x95B1\n#define GL_SHADING_RATE_IMAGE_PALETTE_COUNT_NV 0x95B2\n#endif /* GL_NV_primitive_shading_rate */\n\n#ifndef GL_NV_read_buffer\n#define GL_NV_read_buffer 1\n#define GL_READ_BUFFER_NV                 0x0C02\ntypedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode);\n#endif\n#endif /* GL_NV_read_buffer */\n\n#ifndef GL_NV_read_buffer_front\n#define GL_NV_read_buffer_front 1\n#endif /* GL_NV_read_buffer_front */\n\n#ifndef GL_NV_read_depth\n#define GL_NV_read_depth 1\n#endif /* GL_NV_read_depth */\n\n#ifndef GL_NV_read_depth_stencil\n#define GL_NV_read_depth_stencil 1\n#endif /* GL_NV_read_depth_stencil */\n\n#ifndef GL_NV_read_stencil\n#define GL_NV_read_stencil 1\n#endif /* GL_NV_read_stencil */\n\n#ifndef GL_NV_representative_fragment_test\n#define GL_NV_representative_fragment_test 1\n#define GL_REPRESENTATIVE_FRAGMENT_TEST_NV 0x937F\n#endif /* GL_NV_representative_fragment_test */\n\n#ifndef GL_NV_sRGB_formats\n#define GL_NV_sRGB_formats 1\n#define GL_SLUMINANCE_NV                  0x8C46\n#define GL_SLUMINANCE_ALPHA_NV            0x8C44\n#define GL_SRGB8_NV                       0x8C41\n#define GL_SLUMINANCE8_NV                 0x8C47\n#define GL_SLUMINANCE8_ALPHA8_NV          0x8C45\n#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV   0x8C4C\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E\n#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F\n#define GL_ETC1_SRGB8_NV                  0x88EE\n#endif /* GL_NV_sRGB_formats */\n\n#ifndef GL_NV_sample_locations\n#define GL_NV_sample_locations 1\n#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E\n#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340\n#define GL_SAMPLE_LOCATION_NV             0x8E50\n#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341\n#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342\n#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glResolveDepthValuesNV (void);\n#endif\n#endif /* GL_NV_sample_locations */\n\n#ifndef GL_NV_sample_mask_override_coverage\n#define GL_NV_sample_mask_override_coverage 1\n#endif /* GL_NV_sample_mask_override_coverage */\n\n#ifndef GL_NV_scissor_exclusive\n#define GL_NV_scissor_exclusive 1\n#define GL_SCISSOR_TEST_EXCLUSIVE_NV      0x9555\n#define GL_SCISSOR_BOX_EXCLUSIVE_NV       0x9556\ntypedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v);\n#endif\n#endif /* GL_NV_scissor_exclusive */\n\n#ifndef GL_NV_shader_atomic_fp16_vector\n#define GL_NV_shader_atomic_fp16_vector 1\n#endif /* GL_NV_shader_atomic_fp16_vector */\n\n#ifndef GL_NV_shader_noperspective_interpolation\n#define GL_NV_shader_noperspective_interpolation 1\n#endif /* GL_NV_shader_noperspective_interpolation */\n\n#ifndef GL_NV_shader_subgroup_partitioned\n#define GL_NV_shader_subgroup_partitioned 1\n#define GL_SUBGROUP_FEATURE_PARTITIONED_BIT_NV 0x00000100\n#endif /* GL_NV_shader_subgroup_partitioned */\n\n#ifndef GL_NV_shader_texture_footprint\n#define GL_NV_shader_texture_footprint 1\n#endif /* GL_NV_shader_texture_footprint */\n\n#ifndef GL_NV_shading_rate_image\n#define GL_NV_shading_rate_image 1\n#define GL_SHADING_RATE_IMAGE_NV          0x9563\n#define GL_SHADING_RATE_NO_INVOCATIONS_NV 0x9564\n#define GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV 0x9565\n#define GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV 0x9566\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV 0x9567\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV 0x9568\n#define GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV 0x9569\n#define GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV 0x956A\n#define GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV 0x956B\n#define GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV 0x956C\n#define GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV 0x956D\n#define GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV 0x956E\n#define GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV 0x956F\n#define GL_SHADING_RATE_IMAGE_BINDING_NV  0x955B\n#define GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV 0x955C\n#define GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV 0x955D\n#define GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV 0x955E\n#define GL_MAX_COARSE_FRAGMENT_SAMPLES_NV 0x955F\n#define GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV 0x95AE\n#define GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV 0x95AF\n#define GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV 0x95B0\ntypedef void (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture);\ntypedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate);\ntypedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order);\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture);\nGL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate);\nGL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location);\nGL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize);\nGL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates);\nGL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order);\nGL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations);\n#endif\n#endif /* GL_NV_shading_rate_image */\n\n#ifndef GL_NV_shadow_samplers_array\n#define GL_NV_shadow_samplers_array 1\n#define GL_SAMPLER_2D_ARRAY_SHADOW_NV     0x8DC4\n#endif /* GL_NV_shadow_samplers_array */\n\n#ifndef GL_NV_shadow_samplers_cube\n#define GL_NV_shadow_samplers_cube 1\n#define GL_SAMPLER_CUBE_SHADOW_NV         0x8DC5\n#endif /* GL_NV_shadow_samplers_cube */\n\n#ifndef GL_NV_stereo_view_rendering\n#define GL_NV_stereo_view_rendering 1\n#endif /* GL_NV_stereo_view_rendering */\n\n#ifndef GL_NV_texture_border_clamp\n#define GL_NV_texture_border_clamp 1\n#define GL_TEXTURE_BORDER_COLOR_NV        0x1004\n#define GL_CLAMP_TO_BORDER_NV             0x812D\n#endif /* GL_NV_texture_border_clamp */\n\n#ifndef GL_NV_texture_compression_s3tc_update\n#define GL_NV_texture_compression_s3tc_update 1\n#endif /* GL_NV_texture_compression_s3tc_update */\n\n#ifndef GL_NV_texture_npot_2D_mipmap\n#define GL_NV_texture_npot_2D_mipmap 1\n#endif /* GL_NV_texture_npot_2D_mipmap */\n\n#ifndef GL_NV_timeline_semaphore\n#define GL_NV_timeline_semaphore 1\n#define GL_TIMELINE_SEMAPHORE_VALUE_NV    0x9595\n#define GL_SEMAPHORE_TYPE_NV              0x95B3\n#define GL_SEMAPHORE_TYPE_BINARY_NV       0x95B4\n#define GL_SEMAPHORE_TYPE_TIMELINE_NV     0x95B5\n#define GL_MAX_TIMELINE_SEMAPHORE_VALUE_DIFFERENCE_NV 0x95B6\ntypedef void (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores);\ntypedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params);\ntypedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores);\nGL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params);\nGL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params);\n#endif\n#endif /* GL_NV_timeline_semaphore */\n\n#ifndef GL_NV_viewport_array\n#define GL_NV_viewport_array 1\n#define GL_MAX_VIEWPORTS_NV               0x825B\n#define GL_VIEWPORT_SUBPIXEL_BITS_NV      0x825C\n#define GL_VIEWPORT_BOUNDS_RANGE_NV       0x825D\n#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v);\ntypedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\ntypedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v);\ntypedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v);\ntypedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f);\ntypedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data);\ntypedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index);\ntypedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index);\ntypedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);\nGL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v);\nGL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);\nGL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v);\nGL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v);\nGL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f);\nGL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data);\nGL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index);\nGL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index);\nGL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index);\n#endif\n#endif /* GL_NV_viewport_array */\n\n#ifndef GL_NV_viewport_array2\n#define GL_NV_viewport_array2 1\n#endif /* GL_NV_viewport_array2 */\n\n#ifndef GL_NV_viewport_swizzle\n#define GL_NV_viewport_swizzle 1\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_X_NV 0x9350\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_X_NV 0x9351\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_Y_NV 0x9352\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Y_NV 0x9353\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_Z_NV 0x9354\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_Z_NV 0x9355\n#define GL_VIEWPORT_SWIZZLE_POSITIVE_W_NV 0x9356\n#define GL_VIEWPORT_SWIZZLE_NEGATIVE_W_NV 0x9357\n#define GL_VIEWPORT_SWIZZLE_X_NV          0x9358\n#define GL_VIEWPORT_SWIZZLE_Y_NV          0x9359\n#define GL_VIEWPORT_SWIZZLE_Z_NV          0x935A\n#define GL_VIEWPORT_SWIZZLE_W_NV          0x935B\ntypedef void (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glViewportSwizzleNV (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew);\n#endif\n#endif /* GL_NV_viewport_swizzle */\n\n#ifndef GL_OVR_multiview\n#define GL_OVR_multiview 1\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630\n#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632\n#define GL_MAX_VIEWS_OVR                  0x9631\n#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews);\n#endif\n#endif /* GL_OVR_multiview */\n\n#ifndef GL_OVR_multiview2\n#define GL_OVR_multiview2 1\n#endif /* GL_OVR_multiview2 */\n\n#ifndef GL_OVR_multiview_multisampled_render_to_texture\n#define GL_OVR_multiview_multisampled_render_to_texture 1\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews);\n#endif\n#endif /* GL_OVR_multiview_multisampled_render_to_texture */\n\n#ifndef GL_QCOM_YUV_texture_gather\n#define GL_QCOM_YUV_texture_gather 1\n#endif /* GL_QCOM_YUV_texture_gather */\n\n#ifndef GL_QCOM_alpha_test\n#define GL_QCOM_alpha_test 1\n#define GL_ALPHA_TEST_QCOM                0x0BC0\n#define GL_ALPHA_TEST_FUNC_QCOM           0x0BC1\n#define GL_ALPHA_TEST_REF_QCOM            0x0BC2\ntypedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref);\n#endif\n#endif /* GL_QCOM_alpha_test */\n\n#ifndef GL_QCOM_binning_control\n#define GL_QCOM_binning_control 1\n#define GL_BINNING_CONTROL_HINT_QCOM      0x8FB0\n#define GL_CPU_OPTIMIZED_QCOM             0x8FB1\n#define GL_GPU_OPTIMIZED_QCOM             0x8FB2\n#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3\n#endif /* GL_QCOM_binning_control */\n\n#ifndef GL_QCOM_driver_control\n#define GL_QCOM_driver_control 1\ntypedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);\ntypedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);\ntypedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);\ntypedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);\nGL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);\nGL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);\nGL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);\n#endif\n#endif /* GL_QCOM_driver_control */\n\n#ifndef GL_QCOM_extended_get\n#define GL_QCOM_extended_get 1\n#define GL_TEXTURE_WIDTH_QCOM             0x8BD2\n#define GL_TEXTURE_HEIGHT_QCOM            0x8BD3\n#define GL_TEXTURE_DEPTH_QCOM             0x8BD4\n#define GL_TEXTURE_INTERNAL_FORMAT_QCOM   0x8BD5\n#define GL_TEXTURE_FORMAT_QCOM            0x8BD6\n#define GL_TEXTURE_TYPE_QCOM              0x8BD7\n#define GL_TEXTURE_IMAGE_VALID_QCOM       0x8BD8\n#define GL_TEXTURE_NUM_LEVELS_QCOM        0x8BD9\n#define GL_TEXTURE_TARGET_QCOM            0x8BDA\n#define GL_TEXTURE_OBJECT_VALID_QCOM      0x8BDB\n#define GL_STATE_RESTORE                  0x8BDC\ntypedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);\ntypedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);\ntypedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);\ntypedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);\ntypedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);\ntypedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);\ntypedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels);\ntypedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);\nGL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);\nGL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);\nGL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);\nGL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);\nGL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);\nGL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels);\nGL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params);\n#endif\n#endif /* GL_QCOM_extended_get */\n\n#ifndef GL_QCOM_extended_get2\n#define GL_QCOM_extended_get2 1\ntypedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);\ntypedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);\ntypedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);\ntypedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);\nGL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);\nGL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);\nGL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);\n#endif\n#endif /* GL_QCOM_extended_get2 */\n\n#ifndef GL_QCOM_frame_extrapolation\n#define GL_QCOM_frame_extrapolation 1\ntypedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor);\n#endif\n#endif /* GL_QCOM_frame_extrapolation */\n\n#ifndef GL_QCOM_framebuffer_foveated\n#define GL_QCOM_framebuffer_foveated 1\n#define GL_FOVEATION_ENABLE_BIT_QCOM      0x00000001\n#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures);\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures);\nGL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);\n#endif\n#endif /* GL_QCOM_framebuffer_foveated */\n\n#ifndef GL_QCOM_motion_estimation\n#define GL_QCOM_motion_estimation 1\n#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90\n#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91\ntypedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output);\ntypedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output);\nGL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask);\n#endif\n#endif /* GL_QCOM_motion_estimation */\n\n#ifndef GL_QCOM_perfmon_global_mode\n#define GL_QCOM_perfmon_global_mode 1\n#define GL_PERFMON_GLOBAL_MODE_QCOM       0x8FA0\n#endif /* GL_QCOM_perfmon_global_mode */\n\n#ifndef GL_QCOM_render_shared_exponent\n#define GL_QCOM_render_shared_exponent 1\n#endif /* GL_QCOM_render_shared_exponent */\n\n#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent\n#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1\n#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2\ntypedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void);\n#endif\n#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */\n\n#ifndef GL_QCOM_shader_framebuffer_fetch_rate\n#define GL_QCOM_shader_framebuffer_fetch_rate 1\n#endif /* GL_QCOM_shader_framebuffer_fetch_rate */\n\n#ifndef GL_QCOM_shading_rate\n#define GL_QCOM_shading_rate 1\n#define GL_SHADING_RATE_QCOM              0x96A4\n#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5\n#define GL_SHADING_RATE_1X1_PIXELS_QCOM   0x96A6\n#define GL_SHADING_RATE_1X2_PIXELS_QCOM   0x96A7\n#define GL_SHADING_RATE_2X1_PIXELS_QCOM   0x96A8\n#define GL_SHADING_RATE_2X2_PIXELS_QCOM   0x96A9\n#define GL_SHADING_RATE_4X2_PIXELS_QCOM   0x96AC\n#define GL_SHADING_RATE_4X4_PIXELS_QCOM   0x96AE\ntypedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate);\n#endif\n#endif /* GL_QCOM_shading_rate */\n\n#ifndef GL_QCOM_texture_foveated\n#define GL_QCOM_texture_foveated 1\n#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB\n#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC\n#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD\n#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE\n#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF\ntypedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea);\n#endif\n#endif /* GL_QCOM_texture_foveated */\n\n#ifndef GL_QCOM_texture_foveated2\n#define GL_QCOM_texture_foveated2 1\n#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0\n#endif /* GL_QCOM_texture_foveated2 */\n\n#ifndef GL_QCOM_texture_foveated_subsampled_layout\n#define GL_QCOM_texture_foveated_subsampled_layout 1\n#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004\n#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1\n#endif /* GL_QCOM_texture_foveated_subsampled_layout */\n\n#ifndef GL_QCOM_tiled_rendering\n#define GL_QCOM_tiled_rendering 1\n#define GL_COLOR_BUFFER_BIT0_QCOM         0x00000001\n#define GL_COLOR_BUFFER_BIT1_QCOM         0x00000002\n#define GL_COLOR_BUFFER_BIT2_QCOM         0x00000004\n#define GL_COLOR_BUFFER_BIT3_QCOM         0x00000008\n#define GL_COLOR_BUFFER_BIT4_QCOM         0x00000010\n#define GL_COLOR_BUFFER_BIT5_QCOM         0x00000020\n#define GL_COLOR_BUFFER_BIT6_QCOM         0x00000040\n#define GL_COLOR_BUFFER_BIT7_QCOM         0x00000080\n#define GL_DEPTH_BUFFER_BIT0_QCOM         0x00000100\n#define GL_DEPTH_BUFFER_BIT1_QCOM         0x00000200\n#define GL_DEPTH_BUFFER_BIT2_QCOM         0x00000400\n#define GL_DEPTH_BUFFER_BIT3_QCOM         0x00000800\n#define GL_DEPTH_BUFFER_BIT4_QCOM         0x00001000\n#define GL_DEPTH_BUFFER_BIT5_QCOM         0x00002000\n#define GL_DEPTH_BUFFER_BIT6_QCOM         0x00004000\n#define GL_DEPTH_BUFFER_BIT7_QCOM         0x00008000\n#define GL_STENCIL_BUFFER_BIT0_QCOM       0x00010000\n#define GL_STENCIL_BUFFER_BIT1_QCOM       0x00020000\n#define GL_STENCIL_BUFFER_BIT2_QCOM       0x00040000\n#define GL_STENCIL_BUFFER_BIT3_QCOM       0x00080000\n#define GL_STENCIL_BUFFER_BIT4_QCOM       0x00100000\n#define GL_STENCIL_BUFFER_BIT5_QCOM       0x00200000\n#define GL_STENCIL_BUFFER_BIT6_QCOM       0x00400000\n#define GL_STENCIL_BUFFER_BIT7_QCOM       0x00800000\n#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM   0x01000000\n#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM   0x02000000\n#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM   0x04000000\n#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM   0x08000000\n#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM   0x10000000\n#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM   0x20000000\n#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM   0x40000000\n#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM   0x80000000\ntypedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);\ntypedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);\n#ifdef GL_GLEXT_PROTOTYPES\nGL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);\nGL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);\n#endif\n#endif /* GL_QCOM_tiled_rendering */\n\n#ifndef GL_QCOM_writeonly_rendering\n#define GL_QCOM_writeonly_rendering 1\n#define GL_WRITEONLY_RENDERING_QCOM       0x8823\n#endif /* GL_QCOM_writeonly_rendering */\n\n#ifndef GL_VIV_shader_binary\n#define GL_VIV_shader_binary 1\n#define GL_SHADER_BINARY_VIV              0x8FC4\n#endif /* GL_VIV_shader_binary */\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles2_gl2platform.h",
    "content": "#ifndef __gl2platform_h_\n#define __gl2platform_h_\n\n/*\n** Copyright 2017-2020 The Khronos Group Inc.\n** SPDX-License-Identifier: Apache-2.0\n*/\n\n/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h\n *\n * Adopters may modify khrplatform.h and this file to suit their platform.\n * Please contribute modifications back to Khronos as pull requests on the\n * public github repository:\n *      https://github.com/KhronosGroup/OpenGL-Registry\n */\n\n/*#include <KHR/khrplatform.h>*/\n\n#ifndef GL_APICALL\n#define GL_APICALL  KHRONOS_APICALL\n#endif\n\n#ifndef GL_APIENTRY\n#define GL_APIENTRY KHRONOS_APIENTRY\n#endif\n\n#endif /* __gl2platform_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_opengles2_khrplatform.h",
    "content": "#ifndef __khrplatform_h_\n#define __khrplatform_h_\n\n/*\n** Copyright (c) 2008-2018 The Khronos Group Inc.\n**\n** Permission is hereby granted, free of charge, to any person obtaining a\n** copy of this software and/or associated documentation files (the\n** \"Materials\"), to deal in the Materials without restriction, including\n** without limitation the rights to use, copy, modify, merge, publish,\n** distribute, sublicense, and/or sell copies of the Materials, and to\n** permit persons to whom the Materials are furnished to do so, subject to\n** the following conditions:\n**\n** The above copyright notice and this permission notice shall be included\n** in all copies or substantial portions of the Materials.\n**\n** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n*/\n\n/* Khronos platform-specific types and definitions.\n *\n * The master copy of khrplatform.h is maintained in the Khronos EGL\n * Registry repository at https://github.com/KhronosGroup/EGL-Registry\n * The last semantic modification to khrplatform.h was at commit ID:\n *      67a3e0864c2d75ea5287b9f3d2eb74a745936692\n *\n * Adopters may modify this file to suit their platform. Adopters are\n * encouraged to submit platform specific modifications to the Khronos\n * group so that they can be included in future versions of this file.\n * Please submit changes by filing pull requests or issues on\n * the EGL Registry repository linked above.\n *\n *\n * See the Implementer's Guidelines for information about where this file\n * should be located on your system and for more details of its use:\n *    http://www.khronos.org/registry/implementers_guide.pdf\n *\n * This file should be included as\n *        #include <KHR/khrplatform.h>\n * by Khronos client API header files that use its types and defines.\n *\n * The types in khrplatform.h should only be used to define API-specific types.\n *\n * Types defined in khrplatform.h:\n *    khronos_int8_t              signed   8  bit\n *    khronos_uint8_t             unsigned 8  bit\n *    khronos_int16_t             signed   16 bit\n *    khronos_uint16_t            unsigned 16 bit\n *    khronos_int32_t             signed   32 bit\n *    khronos_uint32_t            unsigned 32 bit\n *    khronos_int64_t             signed   64 bit\n *    khronos_uint64_t            unsigned 64 bit\n *    khronos_intptr_t            signed   same number of bits as a pointer\n *    khronos_uintptr_t           unsigned same number of bits as a pointer\n *    khronos_ssize_t             signed   size\n *    khronos_usize_t             unsigned size\n *    khronos_float_t             signed   32 bit floating point\n *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds\n *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in\n *                                         nanoseconds\n *    khronos_stime_nanoseconds_t signed time interval in nanoseconds\n *    khronos_boolean_enum_t      enumerated boolean type. This should\n *      only be used as a base type when a client API's boolean type is\n *      an enum. Client APIs which use an integer or other type for\n *      booleans cannot use this as the base type for their boolean.\n *\n * Tokens defined in khrplatform.h:\n *\n *    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.\n *\n *    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.\n *    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.\n *\n * Calling convention macros defined in this file:\n *    KHRONOS_APICALL\n *    KHRONOS_APIENTRY\n *    KHRONOS_APIATTRIBUTES\n *\n * These may be used in function prototypes as:\n *\n *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(\n *                                  int arg1,\n *                                  int arg2) KHRONOS_APIATTRIBUTES;\n */\n\n#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)\n#   define KHRONOS_STATIC 1\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APICALL\n *-------------------------------------------------------------------------\n * This precedes the return type of the function in the function prototype.\n */\n#if defined(KHRONOS_STATIC)\n    /* If the preprocessor constant KHRONOS_STATIC is defined, make the\n     * header compatible with static linking. */\n#   define KHRONOS_APICALL\n#elif defined(_WIN32)\n#   define KHRONOS_APICALL __declspec(dllimport)\n#elif defined (__SYMBIAN32__)\n#   define KHRONOS_APICALL IMPORT_C\n#elif defined(__ANDROID__)\n#   define KHRONOS_APICALL __attribute__((visibility(\"default\")))\n#else\n#   define KHRONOS_APICALL\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIENTRY\n *-------------------------------------------------------------------------\n * This follows the return type of the function  and precedes the function\n * name in the function prototype.\n */\n#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)\n    /* Win32 but not WinCE */\n#   define KHRONOS_APIENTRY __stdcall\n#else\n#   define KHRONOS_APIENTRY\n#endif\n\n/*-------------------------------------------------------------------------\n * Definition of KHRONOS_APIATTRIBUTES\n *-------------------------------------------------------------------------\n * This follows the closing parenthesis of the function prototype arguments.\n */\n#if defined (__ARMCC_2__)\n#define KHRONOS_APIATTRIBUTES __softfp\n#else\n#define KHRONOS_APIATTRIBUTES\n#endif\n\n/*-------------------------------------------------------------------------\n * basic type definitions\n *-----------------------------------------------------------------------*/\n#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)\n\n\n/*\n * Using <stdint.h>\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n/*\n * To support platform where unsigned long cannot be used interchangeably with\n * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.\n * Ideally, we could just use (u)intptr_t everywhere, but this could result in\n * ABI breakage if khronos_uintptr_t is changed from unsigned long to\n * unsigned long long or similar (this results in different C++ name mangling).\n * To avoid changes for existing platforms, we restrict usage of intptr_t to\n * platforms where the size of a pointer is larger than the size of long.\n */\n#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)\n#if __SIZEOF_POINTER__ > __SIZEOF_LONG__\n#define KHRONOS_USE_INTPTR_T\n#endif\n#endif\n\n#elif defined(__VMS ) || defined(__sgi)\n\n/*\n * Using <inttypes.h>\n */\n#include <inttypes.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)\n\n/*\n * Win32\n */\ntypedef __int32                 khronos_int32_t;\ntypedef unsigned __int32        khronos_uint32_t;\ntypedef __int64                 khronos_int64_t;\ntypedef unsigned __int64        khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif defined(__sun__) || defined(__digital__)\n\n/*\n * Sun or Digital\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#if defined(__arch64__) || defined(_LP64)\ntypedef long int                khronos_int64_t;\ntypedef unsigned long int       khronos_uint64_t;\n#else\ntypedef long long int           khronos_int64_t;\ntypedef unsigned long long int  khronos_uint64_t;\n#endif /* __arch64__ */\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#elif 0\n\n/*\n * Hypothetical platform with no float or int64 support\n */\ntypedef int                     khronos_int32_t;\ntypedef unsigned int            khronos_uint32_t;\n#define KHRONOS_SUPPORT_INT64   0\n#define KHRONOS_SUPPORT_FLOAT   0\n\n#else\n\n/*\n * Generic fallback\n */\n#include <stdint.h>\ntypedef int32_t                 khronos_int32_t;\ntypedef uint32_t                khronos_uint32_t;\ntypedef int64_t                 khronos_int64_t;\ntypedef uint64_t                khronos_uint64_t;\n#define KHRONOS_SUPPORT_INT64   1\n#define KHRONOS_SUPPORT_FLOAT   1\n\n#endif\n\n\n/*\n * Types that are (so far) the same on all platforms\n */\ntypedef signed   char          khronos_int8_t;\ntypedef unsigned char          khronos_uint8_t;\ntypedef signed   short int     khronos_int16_t;\ntypedef unsigned short int     khronos_uint16_t;\n\n/*\n * Types that differ between LLP64 and LP64 architectures - in LLP64,\n * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears\n * to be the only LLP64 architecture in current use.\n */\n#ifdef KHRONOS_USE_INTPTR_T\ntypedef intptr_t               khronos_intptr_t;\ntypedef uintptr_t              khronos_uintptr_t;\n#elif defined(_WIN64)\ntypedef signed   long long int khronos_intptr_t;\ntypedef unsigned long long int khronos_uintptr_t;\n#else\ntypedef signed   long  int     khronos_intptr_t;\ntypedef unsigned long  int     khronos_uintptr_t;\n#endif\n\n#if defined(_WIN64)\ntypedef signed   long long int khronos_ssize_t;\ntypedef unsigned long long int khronos_usize_t;\n#else\ntypedef signed   long  int     khronos_ssize_t;\ntypedef unsigned long  int     khronos_usize_t;\n#endif\n\n#if KHRONOS_SUPPORT_FLOAT\n/*\n * Float type\n */\ntypedef          float         khronos_float_t;\n#endif\n\n#if KHRONOS_SUPPORT_INT64\n/* Time types\n *\n * These types can be used to represent a time interval in nanoseconds or\n * an absolute Unadjusted System Time.  Unadjusted System Time is the number\n * of nanoseconds since some arbitrary system event (e.g. since the last\n * time the system booted).  The Unadjusted System Time is an unsigned\n * 64 bit value that wraps back to 0 every 584 years.  Time intervals\n * may be either signed or unsigned.\n */\ntypedef khronos_uint64_t       khronos_utime_nanoseconds_t;\ntypedef khronos_int64_t        khronos_stime_nanoseconds_t;\n#endif\n\n/*\n * Dummy value used to pad enum types to 32 bits.\n */\n#ifndef KHRONOS_MAX_ENUM\n#define KHRONOS_MAX_ENUM 0x7FFFFFFF\n#endif\n\n/*\n * Enumerated boolean type\n *\n * Values other than zero should be considered to be true.  Therefore\n * comparisons should not be made against KHRONOS_TRUE.\n */\ntypedef enum {\n    KHRONOS_FALSE = 0,\n    KHRONOS_TRUE  = 1,\n    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM\n} khronos_boolean_enum_t;\n\n#endif /* __khrplatform_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_pixels.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_pixels.h\n *\n *  Header for the enumerated pixel format definitions.\n */\n\n#ifndef SDL_pixels_h_\n#define SDL_pixels_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_endian.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\name Transparency definitions\n *\n *  These define alpha as the opacity of a surface.\n */\n/* @{ */\n#define SDL_ALPHA_OPAQUE 255\n#define SDL_ALPHA_TRANSPARENT 0\n/* @} */\n\n/** Pixel type. */\ntypedef enum\n{\n    SDL_PIXELTYPE_UNKNOWN,\n    SDL_PIXELTYPE_INDEX1,\n    SDL_PIXELTYPE_INDEX4,\n    SDL_PIXELTYPE_INDEX8,\n    SDL_PIXELTYPE_PACKED8,\n    SDL_PIXELTYPE_PACKED16,\n    SDL_PIXELTYPE_PACKED32,\n    SDL_PIXELTYPE_ARRAYU8,\n    SDL_PIXELTYPE_ARRAYU16,\n    SDL_PIXELTYPE_ARRAYU32,\n    SDL_PIXELTYPE_ARRAYF16,\n    SDL_PIXELTYPE_ARRAYF32,\n\n    /* This must be at the end of the list to avoid breaking the existing ABI */\n    SDL_PIXELTYPE_INDEX2\n} SDL_PixelType;\n\n/** Bitmap pixel order, high bit -> low bit. */\ntypedef enum\n{\n    SDL_BITMAPORDER_NONE,\n    SDL_BITMAPORDER_4321,\n    SDL_BITMAPORDER_1234\n} SDL_BitmapOrder;\n\n/** Packed component order, high bit -> low bit. */\ntypedef enum\n{\n    SDL_PACKEDORDER_NONE,\n    SDL_PACKEDORDER_XRGB,\n    SDL_PACKEDORDER_RGBX,\n    SDL_PACKEDORDER_ARGB,\n    SDL_PACKEDORDER_RGBA,\n    SDL_PACKEDORDER_XBGR,\n    SDL_PACKEDORDER_BGRX,\n    SDL_PACKEDORDER_ABGR,\n    SDL_PACKEDORDER_BGRA\n} SDL_PackedOrder;\n\n/** Array component order, low byte -> high byte. */\n/* !!! FIXME: in 2.1, make these not overlap differently with\n   !!! FIXME:  SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */\ntypedef enum\n{\n    SDL_ARRAYORDER_NONE,\n    SDL_ARRAYORDER_RGB,\n    SDL_ARRAYORDER_RGBA,\n    SDL_ARRAYORDER_ARGB,\n    SDL_ARRAYORDER_BGR,\n    SDL_ARRAYORDER_BGRA,\n    SDL_ARRAYORDER_ABGR\n} SDL_ArrayOrder;\n\n/** Packed component layout. */\ntypedef enum\n{\n    SDL_PACKEDLAYOUT_NONE,\n    SDL_PACKEDLAYOUT_332,\n    SDL_PACKEDLAYOUT_4444,\n    SDL_PACKEDLAYOUT_1555,\n    SDL_PACKEDLAYOUT_5551,\n    SDL_PACKEDLAYOUT_565,\n    SDL_PACKEDLAYOUT_8888,\n    SDL_PACKEDLAYOUT_2101010,\n    SDL_PACKEDLAYOUT_1010102\n} SDL_PackedLayout;\n\n#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)\n\n#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \\\n    ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \\\n     ((bits) << 8) | ((bytes) << 0))\n\n#define SDL_PIXELFLAG(X)    (((X) >> 28) & 0x0F)\n#define SDL_PIXELTYPE(X)    (((X) >> 24) & 0x0F)\n#define SDL_PIXELORDER(X)   (((X) >> 20) & 0x0F)\n#define SDL_PIXELLAYOUT(X)  (((X) >> 16) & 0x0F)\n#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)\n#define SDL_BYTESPERPIXEL(X) \\\n    (SDL_ISPIXELFORMAT_FOURCC(X) ? \\\n        ((((X) == SDL_PIXELFORMAT_YUY2) || \\\n          ((X) == SDL_PIXELFORMAT_UYVY) || \\\n          ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))\n\n#define SDL_ISPIXELFORMAT_INDEXED(format)   \\\n    (!SDL_ISPIXELFORMAT_FOURCC(format) && \\\n     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX2) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))\n\n#define SDL_ISPIXELFORMAT_PACKED(format) \\\n    (!SDL_ISPIXELFORMAT_FOURCC(format) && \\\n     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))\n\n#define SDL_ISPIXELFORMAT_ARRAY(format) \\\n    (!SDL_ISPIXELFORMAT_FOURCC(format) && \\\n     ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \\\n      (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))\n\n#define SDL_ISPIXELFORMAT_ALPHA(format)   \\\n    ((SDL_ISPIXELFORMAT_PACKED(format) && \\\n     ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \\\n      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \\\n      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \\\n      (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \\\n    (SDL_ISPIXELFORMAT_ARRAY(format) && \\\n     ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \\\n      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \\\n      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \\\n      (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))\n\n/* The flag is set to 1 because 0x1? is not in the printable ASCII range */\n#define SDL_ISPIXELFORMAT_FOURCC(format)    \\\n    ((format) && (SDL_PIXELFLAG(format) != 1))\n\n/* Note: If you modify this list, update SDL_GetPixelFormatName() */\ntypedef enum\n{\n    SDL_PIXELFORMAT_UNKNOWN,\n    SDL_PIXELFORMAT_INDEX1LSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,\n                               1, 0),\n    SDL_PIXELFORMAT_INDEX1MSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,\n                               1, 0),\n    SDL_PIXELFORMAT_INDEX2LSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_4321, 0,\n                               2, 0),\n    SDL_PIXELFORMAT_INDEX2MSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX2, SDL_BITMAPORDER_1234, 0,\n                               2, 0),\n    SDL_PIXELFORMAT_INDEX4LSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,\n                               4, 0),\n    SDL_PIXELFORMAT_INDEX4MSB =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,\n                               4, 0),\n    SDL_PIXELFORMAT_INDEX8 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),\n    SDL_PIXELFORMAT_RGB332 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,\n                               SDL_PACKEDLAYOUT_332, 8, 1),\n    SDL_PIXELFORMAT_XRGB4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,\n                               SDL_PACKEDLAYOUT_4444, 12, 2),\n    SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444,\n    SDL_PIXELFORMAT_XBGR4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,\n                               SDL_PACKEDLAYOUT_4444, 12, 2),\n    SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444,\n    SDL_PIXELFORMAT_XRGB1555 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,\n                               SDL_PACKEDLAYOUT_1555, 15, 2),\n    SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555,\n    SDL_PIXELFORMAT_XBGR1555 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,\n                               SDL_PACKEDLAYOUT_1555, 15, 2),\n    SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555,\n    SDL_PIXELFORMAT_ARGB4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,\n                               SDL_PACKEDLAYOUT_4444, 16, 2),\n    SDL_PIXELFORMAT_RGBA4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,\n                               SDL_PACKEDLAYOUT_4444, 16, 2),\n    SDL_PIXELFORMAT_ABGR4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,\n                               SDL_PACKEDLAYOUT_4444, 16, 2),\n    SDL_PIXELFORMAT_BGRA4444 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,\n                               SDL_PACKEDLAYOUT_4444, 16, 2),\n    SDL_PIXELFORMAT_ARGB1555 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,\n                               SDL_PACKEDLAYOUT_1555, 16, 2),\n    SDL_PIXELFORMAT_RGBA5551 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,\n                               SDL_PACKEDLAYOUT_5551, 16, 2),\n    SDL_PIXELFORMAT_ABGR1555 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,\n                               SDL_PACKEDLAYOUT_1555, 16, 2),\n    SDL_PIXELFORMAT_BGRA5551 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,\n                               SDL_PACKEDLAYOUT_5551, 16, 2),\n    SDL_PIXELFORMAT_RGB565 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,\n                               SDL_PACKEDLAYOUT_565, 16, 2),\n    SDL_PIXELFORMAT_BGR565 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,\n                               SDL_PACKEDLAYOUT_565, 16, 2),\n    SDL_PIXELFORMAT_RGB24 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,\n                               24, 3),\n    SDL_PIXELFORMAT_BGR24 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,\n                               24, 3),\n    SDL_PIXELFORMAT_XRGB8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,\n                               SDL_PACKEDLAYOUT_8888, 24, 4),\n    SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888,\n    SDL_PIXELFORMAT_RGBX8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,\n                               SDL_PACKEDLAYOUT_8888, 24, 4),\n    SDL_PIXELFORMAT_XBGR8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,\n                               SDL_PACKEDLAYOUT_8888, 24, 4),\n    SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888,\n    SDL_PIXELFORMAT_BGRX8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,\n                               SDL_PACKEDLAYOUT_8888, 24, 4),\n    SDL_PIXELFORMAT_ARGB8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,\n                               SDL_PACKEDLAYOUT_8888, 32, 4),\n    SDL_PIXELFORMAT_RGBA8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,\n                               SDL_PACKEDLAYOUT_8888, 32, 4),\n    SDL_PIXELFORMAT_ABGR8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,\n                               SDL_PACKEDLAYOUT_8888, 32, 4),\n    SDL_PIXELFORMAT_BGRA8888 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,\n                               SDL_PACKEDLAYOUT_8888, 32, 4),\n    SDL_PIXELFORMAT_ARGB2101010 =\n        SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,\n                               SDL_PACKEDLAYOUT_2101010, 32, 4),\n\n    /* Aliases for RGBA byte arrays of color data, for the current platform */\n#if SDL_BYTEORDER == SDL_BIG_ENDIAN\n    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,\n    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,\n    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,\n    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,\n    SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_RGBX8888,\n    SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_XRGB8888,\n    SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_BGRX8888,\n    SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_XBGR8888,\n#else\n    SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,\n    SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,\n    SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,\n    SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,\n    SDL_PIXELFORMAT_RGBX32 = SDL_PIXELFORMAT_XBGR8888,\n    SDL_PIXELFORMAT_XRGB32 = SDL_PIXELFORMAT_BGRX8888,\n    SDL_PIXELFORMAT_BGRX32 = SDL_PIXELFORMAT_XRGB8888,\n    SDL_PIXELFORMAT_XBGR32 = SDL_PIXELFORMAT_RGBX8888,\n#endif\n\n    SDL_PIXELFORMAT_YV12 =      /**< Planar mode: Y + V + U  (3 planes) */\n        SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'),\n    SDL_PIXELFORMAT_IYUV =      /**< Planar mode: Y + U + V  (3 planes) */\n        SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'),\n    SDL_PIXELFORMAT_YUY2 =      /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */\n        SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'),\n    SDL_PIXELFORMAT_UYVY =      /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */\n        SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'),\n    SDL_PIXELFORMAT_YVYU =      /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */\n        SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'),\n    SDL_PIXELFORMAT_NV12 =      /**< Planar mode: Y + U/V interleaved  (2 planes) */\n        SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'),\n    SDL_PIXELFORMAT_NV21 =      /**< Planar mode: Y + V/U interleaved  (2 planes) */\n        SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'),\n    SDL_PIXELFORMAT_EXTERNAL_OES =      /**< Android video texture format */\n        SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ')\n} SDL_PixelFormatEnum;\n\n/**\n * The bits of this structure can be directly reinterpreted as an integer-packed\n * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888\n * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems).\n */\ntypedef struct SDL_Color\n{\n    Uint8 r;\n    Uint8 g;\n    Uint8 b;\n    Uint8 a;\n} SDL_Color;\n#define SDL_Colour SDL_Color\n\ntypedef struct SDL_Palette\n{\n    int ncolors;\n    SDL_Color *colors;\n    Uint32 version;\n    int refcount;\n} SDL_Palette;\n\n/**\n *  \\note Everything in the pixel format structure is read-only.\n */\ntypedef struct SDL_PixelFormat\n{\n    Uint32 format;\n    SDL_Palette *palette;\n    Uint8 BitsPerPixel;\n    Uint8 BytesPerPixel;\n    Uint8 padding[2];\n    Uint32 Rmask;\n    Uint32 Gmask;\n    Uint32 Bmask;\n    Uint32 Amask;\n    Uint8 Rloss;\n    Uint8 Gloss;\n    Uint8 Bloss;\n    Uint8 Aloss;\n    Uint8 Rshift;\n    Uint8 Gshift;\n    Uint8 Bshift;\n    Uint8 Ashift;\n    int refcount;\n    struct SDL_PixelFormat *next;\n} SDL_PixelFormat;\n\n/**\n * Get the human readable name of a pixel format.\n *\n * \\param format the pixel format to query\n * \\returns the human readable name of the specified pixel format or\n *          `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format);\n\n/**\n * Convert one of the enumerated pixel formats to a bpp value and RGBA masks.\n *\n * \\param format one of the SDL_PixelFormatEnum values\n * \\param bpp a bits per pixel value; usually 15, 16, or 32\n * \\param Rmask a pointer filled in with the red mask for the format\n * \\param Gmask a pointer filled in with the green mask for the format\n * \\param Bmask a pointer filled in with the blue mask for the format\n * \\param Amask a pointer filled in with the alpha mask for the format\n * \\returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't\n *          possible; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MasksToPixelFormatEnum\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format,\n                                                            int *bpp,\n                                                            Uint32 * Rmask,\n                                                            Uint32 * Gmask,\n                                                            Uint32 * Bmask,\n                                                            Uint32 * Amask);\n\n/**\n * Convert a bpp value and RGBA masks to an enumerated pixel format.\n *\n * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't\n * possible.\n *\n * \\param bpp a bits per pixel value; usually 15, 16, or 32\n * \\param Rmask the red mask for the format\n * \\param Gmask the green mask for the format\n * \\param Bmask the blue mask for the format\n * \\param Amask the alpha mask for the format\n * \\returns one of the SDL_PixelFormatEnum values\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_PixelFormatEnumToMasks\n */\nextern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp,\n                                                          Uint32 Rmask,\n                                                          Uint32 Gmask,\n                                                          Uint32 Bmask,\n                                                          Uint32 Amask);\n\n/**\n * Create an SDL_PixelFormat structure corresponding to a pixel format.\n *\n * Returned structure may come from a shared global cache (i.e. not newly\n * allocated), and hence should not be modified, especially the palette. Weird\n * errors such as `Blit combination not supported` may occur.\n *\n * \\param pixel_format one of the SDL_PixelFormatEnum values\n * \\returns the new SDL_PixelFormat structure or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeFormat\n */\nextern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format);\n\n/**\n * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat().\n *\n * \\param format the SDL_PixelFormat structure to free\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocFormat\n */\nextern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format);\n\n/**\n * Create a palette structure with the specified number of color entries.\n *\n * The palette entries are initialized to white.\n *\n * \\param ncolors represents the number of color entries in the color palette\n * \\returns a new SDL_Palette structure on success or NULL on failure (e.g. if\n *          there wasn't enough memory); call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreePalette\n */\nextern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors);\n\n/**\n * Set the palette for a pixel format structure.\n *\n * \\param format the SDL_PixelFormat structure that will use the palette\n * \\param palette the SDL_Palette structure that will be used\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocPalette\n * \\sa SDL_FreePalette\n */\nextern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format,\n                                                      SDL_Palette *palette);\n\n/**\n * Set a range of colors in a palette.\n *\n * \\param palette the SDL_Palette structure to modify\n * \\param colors an array of SDL_Color structures to copy into the palette\n * \\param firstcolor the index of the first palette entry to modify\n * \\param ncolors the number of entries to modify\n * \\returns 0 on success or a negative error code if not all of the colors\n *          could be set; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocPalette\n * \\sa SDL_CreateRGBSurface\n */\nextern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette,\n                                                 const SDL_Color * colors,\n                                                 int firstcolor, int ncolors);\n\n/**\n * Free a palette created with SDL_AllocPalette().\n *\n * \\param palette the SDL_Palette structure to be freed\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocPalette\n */\nextern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette);\n\n/**\n * Map an RGB triple to an opaque pixel value for a given pixel format.\n *\n * This function maps the RGB color value to the specified pixel format and\n * returns the pixel value best approximating the given RGB color value for\n * the given pixel format.\n *\n * If the format has a palette (8-bit) the index of the closest matching color\n * in the palette will be returned.\n *\n * If the specified pixel format has an alpha component it will be returned as\n * all 1 bits (fully opaque).\n *\n * If the pixel format bpp (color depth) is less than 32-bpp then the unused\n * upper bits of the return value can safely be ignored (e.g., with a 16-bpp\n * format the return value can be assigned to a Uint16, and similarly a Uint8\n * for an 8-bpp format).\n *\n * \\param format an SDL_PixelFormat structure describing the pixel format\n * \\param r the red component of the pixel in the range 0-255\n * \\param g the green component of the pixel in the range 0-255\n * \\param b the blue component of the pixel in the range 0-255\n * \\returns a pixel value\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRGB\n * \\sa SDL_GetRGBA\n * \\sa SDL_MapRGBA\n */\nextern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format,\n                                          Uint8 r, Uint8 g, Uint8 b);\n\n/**\n * Map an RGBA quadruple to a pixel value for a given pixel format.\n *\n * This function maps the RGBA color value to the specified pixel format and\n * returns the pixel value best approximating the given RGBA color value for\n * the given pixel format.\n *\n * If the specified pixel format has no alpha component the alpha value will\n * be ignored (as it will be in formats with a palette).\n *\n * If the format has a palette (8-bit) the index of the closest matching color\n * in the palette will be returned.\n *\n * If the pixel format bpp (color depth) is less than 32-bpp then the unused\n * upper bits of the return value can safely be ignored (e.g., with a 16-bpp\n * format the return value can be assigned to a Uint16, and similarly a Uint8\n * for an 8-bpp format).\n *\n * \\param format an SDL_PixelFormat structure describing the format of the\n *               pixel\n * \\param r the red component of the pixel in the range 0-255\n * \\param g the green component of the pixel in the range 0-255\n * \\param b the blue component of the pixel in the range 0-255\n * \\param a the alpha component of the pixel in the range 0-255\n * \\returns a pixel value\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRGB\n * \\sa SDL_GetRGBA\n * \\sa SDL_MapRGB\n */\nextern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format,\n                                           Uint8 r, Uint8 g, Uint8 b,\n                                           Uint8 a);\n\n/**\n * Get RGB values from a pixel in the specified format.\n *\n * This function uses the entire 8-bit [0..255] range when converting color\n * components from pixel formats with less than 8-bits per RGB component\n * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,\n * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).\n *\n * \\param pixel a pixel value\n * \\param format an SDL_PixelFormat structure describing the format of the\n *               pixel\n * \\param r a pointer filled in with the red component\n * \\param g a pointer filled in with the green component\n * \\param b a pointer filled in with the blue component\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRGBA\n * \\sa SDL_MapRGB\n * \\sa SDL_MapRGBA\n */\nextern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel,\n                                        const SDL_PixelFormat * format,\n                                        Uint8 * r, Uint8 * g, Uint8 * b);\n\n/**\n * Get RGBA values from a pixel in the specified format.\n *\n * This function uses the entire 8-bit [0..255] range when converting color\n * components from pixel formats with less than 8-bits per RGB component\n * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff,\n * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]).\n *\n * If the surface has no alpha component, the alpha will be returned as 0xff\n * (100% opaque).\n *\n * \\param pixel a pixel value\n * \\param format an SDL_PixelFormat structure describing the format of the\n *               pixel\n * \\param r a pointer filled in with the red component\n * \\param g a pointer filled in with the green component\n * \\param b a pointer filled in with the blue component\n * \\param a a pointer filled in with the alpha component\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRGB\n * \\sa SDL_MapRGB\n * \\sa SDL_MapRGBA\n */\nextern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel,\n                                         const SDL_PixelFormat * format,\n                                         Uint8 * r, Uint8 * g, Uint8 * b,\n                                         Uint8 * a);\n\n/**\n * Calculate a 256 entry gamma ramp for a gamma value.\n *\n * \\param gamma a gamma value where 0.0 is black and 1.0 is identity\n * \\param ramp an array of 256 values filled in with the gamma ramp\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowGammaRamp\n */\nextern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_pixels_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_platform.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_platform.h\n *\n *  Try to get a standard set of platform defines.\n */\n\n#ifndef SDL_platform_h_\n#define SDL_platform_h_\n\n#if defined(_AIX)\n#undef __AIX__\n#define __AIX__     1\n#endif\n#if defined(__HAIKU__)\n#undef __HAIKU__\n#define __HAIKU__   1\n#endif\n#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__)\n#undef __BSDI__\n#define __BSDI__    1\n#endif\n#if defined(_arch_dreamcast)\n#undef __DREAMCAST__\n#define __DREAMCAST__   1\n#endif\n#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)\n#undef __FREEBSD__\n#define __FREEBSD__ 1\n#endif\n#if defined(hpux) || defined(__hpux) || defined(__hpux__)\n#undef __HPUX__\n#define __HPUX__    1\n#endif\n#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE)\n#undef __IRIX__\n#define __IRIX__    1\n#endif\n#if (defined(linux) || defined(__linux) || defined(__linux__))\n#undef __LINUX__\n#define __LINUX__   1\n#endif\n#if defined(ANDROID) || defined(__ANDROID__)\n#undef __ANDROID__\n#undef __LINUX__ /* do we need to do this? */\n#define __ANDROID__ 1\n#endif\n#if defined(__NGAGE__)\n#undef __NGAGE__\n#define __NGAGE__ 1\n#endif\n\n#if defined(__APPLE__)\n/* lets us know what version of Mac OS X we're compiling on */\n#include <AvailabilityMacros.h>\n#ifndef __has_extension /* Older compilers don't support this */\n#define __has_extension(x) 0\n#include <TargetConditionals.h>\n#undef __has_extension\n#else\n#include <TargetConditionals.h>\n#endif\n\n/* Fix building with older SDKs that don't define these\n   See this for more information:\n   https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets\n*/\n#ifndef TARGET_OS_MACCATALYST\n#define TARGET_OS_MACCATALYST 0\n#endif\n#ifndef TARGET_OS_IOS\n#define TARGET_OS_IOS 0\n#endif\n#ifndef TARGET_OS_IPHONE\n#define TARGET_OS_IPHONE 0\n#endif\n#ifndef TARGET_OS_TV\n#define TARGET_OS_TV 0\n#endif\n#ifndef TARGET_OS_SIMULATOR\n#define TARGET_OS_SIMULATOR 0\n#endif\n\n#if TARGET_OS_TV\n#undef __TVOS__\n#define __TVOS__ 1\n#endif\n#if TARGET_OS_IPHONE\n/* if compiling for iOS */\n#undef __IPHONEOS__\n#define __IPHONEOS__ 1\n#undef __MACOSX__\n#else\n/* if not compiling for iOS */\n#undef __MACOSX__\n#define __MACOSX__  1\n#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070\n# error SDL for Mac OS X only supports deploying on 10.7 and above.\n#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */\n#endif /* TARGET_OS_IPHONE */\n#endif /* defined(__APPLE__) */\n\n#if defined(__NetBSD__)\n#undef __NETBSD__\n#define __NETBSD__  1\n#endif\n#if defined(__OpenBSD__)\n#undef __OPENBSD__\n#define __OPENBSD__ 1\n#endif\n#if defined(__OS2__) || defined(__EMX__)\n#undef __OS2__\n#define __OS2__     1\n#endif\n#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE)\n#undef __OSF__\n#define __OSF__     1\n#endif\n#if defined(__QNXNTO__)\n#undef __QNXNTO__\n#define __QNXNTO__  1\n#endif\n#if defined(riscos) || defined(__riscos) || defined(__riscos__)\n#undef __RISCOS__\n#define __RISCOS__  1\n#endif\n#if defined(__sun) && defined(__SVR4)\n#undef __SOLARIS__\n#define __SOLARIS__ 1\n#endif\n\n#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__)\n/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */\n#if defined(_MSC_VER) && defined(__has_include)\n#if __has_include(<winapifamily.h>)\n#define HAVE_WINAPIFAMILY_H 1\n#else\n#define HAVE_WINAPIFAMILY_H 0\n#endif\n\n/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */\n#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_)    /* _MSC_VER == 1700 for Visual Studio 2012 */\n#define HAVE_WINAPIFAMILY_H 1\n#else\n#define HAVE_WINAPIFAMILY_H 0\n#endif\n\n#if HAVE_WINAPIFAMILY_H\n#include <winapifamily.h>\n#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP))\n#else\n#define WINAPI_FAMILY_WINRT 0\n#endif /* HAVE_WINAPIFAMILY_H */\n\n#if (HAVE_WINAPIFAMILY_H) && defined(WINAPI_FAMILY_PHONE_APP)\n#define SDL_WINAPI_FAMILY_PHONE (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)\n#else\n#define SDL_WINAPI_FAMILY_PHONE 0\n#endif\n\n#if WINAPI_FAMILY_WINRT\n#undef __WINRT__\n#define __WINRT__ 1\n#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */\n#undef __WINGDK__\n#define __WINGDK__ 1\n#elif defined(_GAMING_XBOX_XBOXONE)\n#undef __XBOXONE__\n#define __XBOXONE__ 1\n#elif defined(_GAMING_XBOX_SCARLETT)\n#undef __XBOXSERIES__\n#define __XBOXSERIES__ 1\n#else\n#undef __WINDOWS__\n#define __WINDOWS__ 1\n#endif\n#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */\n\n#if defined(__WINDOWS__)\n#undef __WIN32__\n#define __WIN32__ 1\n#endif\n/* This is to support generic \"any GDK\" separate from a platform-specific GDK */\n#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__)\n#undef __GDK__\n#define __GDK__ 1\n#endif\n#if defined(__PSP__) || defined(__psp__)\n#ifdef __PSP__\n#undef __PSP__\n#endif\n#define __PSP__ 1\n#endif\n#if defined(PS2)\n#define __PS2__ 1\n#endif\n\n/* The NACL compiler defines __native_client__ and __pnacl__\n * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi\n */\n#if defined(__native_client__)\n#undef __LINUX__\n#undef __NACL__\n#define __NACL__ 1\n#endif\n#if defined(__pnacl__)\n#undef __LINUX__\n#undef __PNACL__\n#define __PNACL__ 1\n/* PNACL with newlib supports static linking only */\n#define __SDL_NOGETPROCADDR__\n#endif\n\n#if defined(__vita__)\n#define __VITA__ 1\n#endif\n\n#if defined(__3DS__)\n#undef __3DS__\n#define __3DS__ 1\n#endif\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Get the name of the platform.\n *\n * Here are the names returned for some (but not all) supported platforms:\n *\n * - \"Windows\"\n * - \"Mac OS X\"\n * - \"Linux\"\n * - \"iOS\"\n * - \"Android\"\n *\n * \\returns the name of the platform. If the correct platform name is not\n *          available, returns a string beginning with the text \"Unknown\".\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC const char * SDLCALL SDL_GetPlatform (void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_platform_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_power.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_power_h_\n#define SDL_power_h_\n\n/**\n *  \\file SDL_power.h\n *\n *  Header for the SDL power management routines.\n */\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  The basic state for the system's power supply.\n */\ntypedef enum\n{\n    SDL_POWERSTATE_UNKNOWN,      /**< cannot determine power status */\n    SDL_POWERSTATE_ON_BATTERY,   /**< Not plugged in, running on the battery */\n    SDL_POWERSTATE_NO_BATTERY,   /**< Plugged in, no battery available */\n    SDL_POWERSTATE_CHARGING,     /**< Plugged in, charging battery */\n    SDL_POWERSTATE_CHARGED       /**< Plugged in, battery charged */\n} SDL_PowerState;\n\n/**\n * Get the current power supply details.\n *\n * You should never take a battery status as absolute truth. Batteries\n * (especially failing batteries) are delicate hardware, and the values\n * reported here are best estimates based on what that hardware reports. It's\n * not uncommon for older batteries to lose stored power much faster than it\n * reports, or completely drain when reporting it has 20 percent left, etc.\n *\n * Battery status can change at any time; if you are concerned with power\n * state, you should call this function frequently, and perhaps ignore changes\n * until they seem to be stable for a few seconds.\n *\n * It's possible a platform can only report battery percentage or time left\n * but not both.\n *\n * \\param seconds seconds of battery life left, you can pass a NULL here if\n *                you don't care, will return -1 if we can't determine a\n *                value, or we're not running on a battery\n * \\param percent percentage of battery life left, between 0 and 100, you can\n *                pass a NULL here if you don't care, will return -1 if we\n *                can't determine a value, or we're not running on a battery\n * \\returns an SDL_PowerState enum representing the current battery state.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_power_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_quit.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_quit.h\n *\n *  Include file for SDL quit event handling.\n */\n\n#ifndef SDL_quit_h_\n#define SDL_quit_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n/**\n *  \\file SDL_quit.h\n *\n *  An ::SDL_QUIT event is generated when the user tries to close the application\n *  window.  If it is ignored or filtered out, the window will remain open.\n *  If it is not ignored or filtered, it is queued normally and the window\n *  is allowed to close.  When the window is closed, screen updates will\n *  complete, but have no effect.\n *\n *  SDL_Init() installs signal handlers for SIGINT (keyboard interrupt)\n *  and SIGTERM (system termination request), if handlers do not already\n *  exist, that generate ::SDL_QUIT events as well.  There is no way\n *  to determine the cause of an ::SDL_QUIT event, but setting a signal\n *  handler in your application will override the default generation of\n *  quit events for that signal.\n *\n *  \\sa SDL_Quit()\n */\n\n/* There are no functions directly affecting the quit event */\n\n#define SDL_QuitRequested() \\\n        (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0))\n\n#endif /* SDL_quit_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_rect.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_rect.h\n *\n *  Header file for SDL_rect definition and management functions.\n */\n\n#ifndef SDL_rect_h_\n#define SDL_rect_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_pixels.h\"\n#include \"SDL_rwops.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * The structure that defines a point (integer)\n *\n * \\sa SDL_EnclosePoints\n * \\sa SDL_PointInRect\n */\ntypedef struct SDL_Point\n{\n    int x;\n    int y;\n} SDL_Point;\n\n/**\n * The structure that defines a point (floating point)\n *\n * \\sa SDL_EncloseFPoints\n * \\sa SDL_PointInFRect\n */\ntypedef struct SDL_FPoint\n{\n    float x;\n    float y;\n} SDL_FPoint;\n\n\n/**\n * A rectangle, with the origin at the upper left (integer).\n *\n * \\sa SDL_RectEmpty\n * \\sa SDL_RectEquals\n * \\sa SDL_HasIntersection\n * \\sa SDL_IntersectRect\n * \\sa SDL_IntersectRectAndLine\n * \\sa SDL_UnionRect\n * \\sa SDL_EnclosePoints\n */\ntypedef struct SDL_Rect\n{\n    int x, y;\n    int w, h;\n} SDL_Rect;\n\n\n/**\n * A rectangle, with the origin at the upper left (floating point).\n *\n * \\sa SDL_FRectEmpty\n * \\sa SDL_FRectEquals\n * \\sa SDL_FRectEqualsEpsilon\n * \\sa SDL_HasIntersectionF\n * \\sa SDL_IntersectFRect\n * \\sa SDL_IntersectFRectAndLine\n * \\sa SDL_UnionFRect\n * \\sa SDL_EncloseFPoints\n * \\sa SDL_PointInFRect\n */\ntypedef struct SDL_FRect\n{\n    float x;\n    float y;\n    float w;\n    float h;\n} SDL_FRect;\n\n\n/**\n * Returns true if point resides inside a rectangle.\n */\nSDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r)\n{\n    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&\n             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Returns true if the rectangle has no area.\n */\nSDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r)\n{\n    return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Returns true if the two rectangles are equal.\n */\nSDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b)\n{\n    return (a && b && (a->x == b->x) && (a->y == b->y) &&\n            (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Determine whether two rectangles intersect.\n *\n * If either pointer is NULL the function will return SDL_FALSE.\n *\n * \\param A an SDL_Rect structure representing the first rectangle\n * \\param B an SDL_Rect structure representing the second rectangle\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_IntersectRect\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A,\n                                                     const SDL_Rect * B);\n\n/**\n * Calculate the intersection of two rectangles.\n *\n * If `result` is NULL then this function will return SDL_FALSE.\n *\n * \\param A an SDL_Rect structure representing the first rectangle\n * \\param B an SDL_Rect structure representing the second rectangle\n * \\param result an SDL_Rect structure filled in with the intersection of\n *               rectangles `A` and `B`\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HasIntersection\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A,\n                                                   const SDL_Rect * B,\n                                                   SDL_Rect * result);\n\n/**\n * Calculate the union of two rectangles.\n *\n * \\param A an SDL_Rect structure representing the first rectangle\n * \\param B an SDL_Rect structure representing the second rectangle\n * \\param result an SDL_Rect structure filled in with the union of rectangles\n *               `A` and `B`\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A,\n                                           const SDL_Rect * B,\n                                           SDL_Rect * result);\n\n/**\n * Calculate a minimal rectangle enclosing a set of points.\n *\n * If `clip` is not NULL then only points inside of the clipping rectangle are\n * considered.\n *\n * \\param points an array of SDL_Point structures representing points to be\n *               enclosed\n * \\param count the number of structures in the `points` array\n * \\param clip an SDL_Rect used for clipping or NULL to enclose all points\n * \\param result an SDL_Rect structure filled in with the minimal enclosing\n *               rectangle\n * \\returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the\n *          points were outside of the clipping rectangle.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points,\n                                                   int count,\n                                                   const SDL_Rect * clip,\n                                                   SDL_Rect * result);\n\n/**\n * Calculate the intersection of a rectangle and line segment.\n *\n * This function is used to clip a line segment to a rectangle. A line segment\n * contained entirely within the rectangle or that does not intersect will\n * remain unchanged. A line segment that crosses the rectangle at either or\n * both ends will be clipped to the boundary of the rectangle and the new\n * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.\n *\n * \\param rect an SDL_Rect structure representing the rectangle to intersect\n * \\param X1 a pointer to the starting X-coordinate of the line\n * \\param Y1 a pointer to the starting Y-coordinate of the line\n * \\param X2 a pointer to the ending X-coordinate of the line\n * \\param Y2 a pointer to the ending Y-coordinate of the line\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect *\n                                                          rect, int *X1,\n                                                          int *Y1, int *X2,\n                                                          int *Y2);\n\n\n/* SDL_FRect versions... */\n\n/**\n * Returns true if point resides inside a rectangle.\n */\nSDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r)\n{\n    return ( (p->x >= r->x) && (p->x < (r->x + r->w)) &&\n             (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Returns true if the rectangle has no area.\n */\nSDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r)\n{\n    return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Returns true if the two rectangles are equal, within some given epsilon.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nSDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon)\n{\n    return (a && b && ((a == b) ||\n            ((SDL_fabsf(a->x - b->x) <= epsilon) &&\n            (SDL_fabsf(a->y - b->y) <= epsilon) &&\n            (SDL_fabsf(a->w - b->w) <= epsilon) &&\n            (SDL_fabsf(a->h - b->h) <= epsilon))))\n            ? SDL_TRUE : SDL_FALSE;\n}\n\n/**\n * Returns true if the two rectangles are equal, using a default epsilon.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nSDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b)\n{\n    return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON);\n}\n\n/**\n * Determine whether two rectangles intersect with float precision.\n *\n * If either pointer is NULL the function will return SDL_FALSE.\n *\n * \\param A an SDL_FRect structure representing the first rectangle\n * \\param B an SDL_FRect structure representing the second rectangle\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.22.\n *\n * \\sa SDL_IntersectRect\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A,\n                                                      const SDL_FRect * B);\n\n/**\n * Calculate the intersection of two rectangles with float precision.\n *\n * If `result` is NULL then this function will return SDL_FALSE.\n *\n * \\param A an SDL_FRect structure representing the first rectangle\n * \\param B an SDL_FRect structure representing the second rectangle\n * \\param result an SDL_FRect structure filled in with the intersection of\n *               rectangles `A` and `B`\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.22.\n *\n * \\sa SDL_HasIntersectionF\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A,\n                                                    const SDL_FRect * B,\n                                                    SDL_FRect * result);\n\n/**\n * Calculate the union of two rectangles with float precision.\n *\n * \\param A an SDL_FRect structure representing the first rectangle\n * \\param B an SDL_FRect structure representing the second rectangle\n * \\param result an SDL_FRect structure filled in with the union of rectangles\n *               `A` and `B`\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A,\n                                            const SDL_FRect * B,\n                                            SDL_FRect * result);\n\n/**\n * Calculate a minimal rectangle enclosing a set of points with float\n * precision.\n *\n * If `clip` is not NULL then only points inside of the clipping rectangle are\n * considered.\n *\n * \\param points an array of SDL_FPoint structures representing points to be\n *               enclosed\n * \\param count the number of structures in the `points` array\n * \\param clip an SDL_FRect used for clipping or NULL to enclose all points\n * \\param result an SDL_FRect structure filled in with the minimal enclosing\n *               rectangle\n * \\returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the\n *          points were outside of the clipping rectangle.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points,\n                                                    int count,\n                                                    const SDL_FRect * clip,\n                                                    SDL_FRect * result);\n\n/**\n * Calculate the intersection of a rectangle and line segment with float\n * precision.\n *\n * This function is used to clip a line segment to a rectangle. A line segment\n * contained entirely within the rectangle or that does not intersect will\n * remain unchanged. A line segment that crosses the rectangle at either or\n * both ends will be clipped to the boundary of the rectangle and the new\n * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary.\n *\n * \\param rect an SDL_FRect structure representing the rectangle to intersect\n * \\param X1 a pointer to the starting X-coordinate of the line\n * \\param Y1 a pointer to the starting Y-coordinate of the line\n * \\param X2 a pointer to the ending X-coordinate of the line\n * \\param Y2 a pointer to the ending Y-coordinate of the line\n * \\returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect *\n                                                           rect, float *X1,\n                                                           float *Y1, float *X2,\n                                                           float *Y2);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_rect_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_render.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_render.h\n *\n *  Header file for SDL 2D rendering functions.\n *\n *  This API supports the following features:\n *      * single pixel points\n *      * single pixel lines\n *      * filled rectangles\n *      * texture images\n *\n *  The primitives may be drawn in opaque, blended, or additive modes.\n *\n *  The texture images may be drawn in opaque, blended, or additive modes.\n *  They can have an additional color tint or alpha modulation applied to\n *  them, and may also be stretched with linear interpolation.\n *\n *  This API is designed to accelerate simple 2D operations. You may\n *  want more functionality such as polygons and particle effects and\n *  in that case you should use SDL's OpenGL/Direct3D support or one\n *  of the many good 3D engines.\n *\n *  These functions must be called from the main thread.\n *  See this bug for details: https://github.com/libsdl-org/SDL/issues/986\n */\n\n#ifndef SDL_render_h_\n#define SDL_render_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_rect.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Flags used when creating a rendering context\n */\ntypedef enum\n{\n    SDL_RENDERER_SOFTWARE = 0x00000001,         /**< The renderer is a software fallback */\n    SDL_RENDERER_ACCELERATED = 0x00000002,      /**< The renderer uses hardware\n                                                     acceleration */\n    SDL_RENDERER_PRESENTVSYNC = 0x00000004,     /**< Present is synchronized\n                                                     with the refresh rate */\n    SDL_RENDERER_TARGETTEXTURE = 0x00000008     /**< The renderer supports\n                                                     rendering to texture */\n} SDL_RendererFlags;\n\n/**\n * Information on the capabilities of a render driver or context.\n */\ntypedef struct SDL_RendererInfo\n{\n    const char *name;           /**< The name of the renderer */\n    Uint32 flags;               /**< Supported ::SDL_RendererFlags */\n    Uint32 num_texture_formats; /**< The number of available texture formats */\n    Uint32 texture_formats[16]; /**< The available texture formats */\n    int max_texture_width;      /**< The maximum texture width */\n    int max_texture_height;     /**< The maximum texture height */\n} SDL_RendererInfo;\n\n/**\n *  Vertex structure\n */\ntypedef struct SDL_Vertex\n{\n    SDL_FPoint position;        /**< Vertex position, in SDL_Renderer coordinates  */\n    SDL_Color  color;           /**< Vertex color */\n    SDL_FPoint tex_coord;       /**< Normalized texture coordinates, if needed */\n} SDL_Vertex;\n\n/**\n * The scaling mode for a texture.\n */\ntypedef enum\n{\n    SDL_ScaleModeNearest, /**< nearest pixel sampling */\n    SDL_ScaleModeLinear,  /**< linear filtering */\n    SDL_ScaleModeBest     /**< anisotropic filtering */\n} SDL_ScaleMode;\n\n/**\n * The access pattern allowed for a texture.\n */\ntypedef enum\n{\n    SDL_TEXTUREACCESS_STATIC,    /**< Changes rarely, not lockable */\n    SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */\n    SDL_TEXTUREACCESS_TARGET     /**< Texture can be used as a render target */\n} SDL_TextureAccess;\n\n/**\n * The texture channel modulation used in SDL_RenderCopy().\n */\ntypedef enum\n{\n    SDL_TEXTUREMODULATE_NONE = 0x00000000,     /**< No modulation */\n    SDL_TEXTUREMODULATE_COLOR = 0x00000001,    /**< srcC = srcC * color */\n    SDL_TEXTUREMODULATE_ALPHA = 0x00000002     /**< srcA = srcA * alpha */\n} SDL_TextureModulate;\n\n/**\n * Flip constants for SDL_RenderCopyEx\n */\ntypedef enum\n{\n    SDL_FLIP_NONE = 0x00000000,     /**< Do not flip */\n    SDL_FLIP_HORIZONTAL = 0x00000001,    /**< flip horizontally */\n    SDL_FLIP_VERTICAL = 0x00000002     /**< flip vertically */\n} SDL_RendererFlip;\n\n/**\n * A structure representing rendering state\n */\nstruct SDL_Renderer;\ntypedef struct SDL_Renderer SDL_Renderer;\n\n/**\n * An efficient driver-specific representation of pixel data\n */\nstruct SDL_Texture;\ntypedef struct SDL_Texture SDL_Texture;\n\n/* Function prototypes */\n\n/**\n * Get the number of 2D rendering drivers available for the current display.\n *\n * A render driver is a set of code that handles rendering and texture\n * management on a particular display. Normally there is only one, but some\n * drivers may have several available with different capabilities.\n *\n * There may be none if SDL was compiled without render support.\n *\n * \\returns a number >= 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n * \\sa SDL_GetRenderDriverInfo\n */\nextern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void);\n\n/**\n * Get info about a specific 2D rendering driver for the current display.\n *\n * \\param index the index of the driver to query information about\n * \\param info an SDL_RendererInfo structure to be filled with information on\n *             the rendering driver\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n * \\sa SDL_GetNumRenderDrivers\n */\nextern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index,\n                                                    SDL_RendererInfo * info);\n\n/**\n * Create a window and default renderer.\n *\n * \\param width the width of the window\n * \\param height the height of the window\n * \\param window_flags the flags used to create the window (see\n *                     SDL_CreateWindow())\n * \\param window a pointer filled with the window, or NULL on error\n * \\param renderer a pointer filled with the renderer, or NULL on error\n * \\returns 0 on success, or -1 on error; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n * \\sa SDL_CreateWindow\n */\nextern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer(\n                                int width, int height, Uint32 window_flags,\n                                SDL_Window **window, SDL_Renderer **renderer);\n\n\n/**\n * Create a 2D rendering context for a window.\n *\n * \\param window the window where rendering is displayed\n * \\param index the index of the rendering driver to initialize, or -1 to\n *              initialize the first one supporting the requested flags\n * \\param flags 0, or one or more SDL_RendererFlags OR'd together\n * \\returns a valid rendering context or NULL if there was an error; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateSoftwareRenderer\n * \\sa SDL_DestroyRenderer\n * \\sa SDL_GetNumRenderDrivers\n * \\sa SDL_GetRendererInfo\n */\nextern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window,\n                                               int index, Uint32 flags);\n\n/**\n * Create a 2D software rendering context for a surface.\n *\n * Two other API which can be used to create SDL_Renderer:\n * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_\n * create a software renderer, but they are intended to be used with an\n * SDL_Window as the final destination and not an SDL_Surface.\n *\n * \\param surface the SDL_Surface structure representing the surface where\n *                rendering is done\n * \\returns a valid rendering context or NULL if there was an error; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n * \\sa SDL_CreateWindowRenderer\n * \\sa SDL_DestroyRenderer\n */\nextern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface);\n\n/**\n * Get the renderer associated with a window.\n *\n * \\param window the window to query\n * \\returns the rendering context on success or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n */\nextern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window);\n\n/**\n * Get the window associated with a renderer.\n *\n * \\param renderer the renderer to query\n * \\returns the window on success or NULL on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer);\n\n/**\n * Get information about a rendering context.\n *\n * \\param renderer the rendering context\n * \\param info an SDL_RendererInfo structure filled with information about the\n *             current renderer\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n */\nextern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer,\n                                                SDL_RendererInfo * info);\n\n/**\n * Get the output size in pixels of a rendering context.\n *\n * Due to high-dpi displays, you might end up with a rendering context that\n * has more pixels than the window that contains it, so use this instead of\n * SDL_GetWindowSize() to decide how much drawing area you have.\n *\n * \\param renderer the rendering context\n * \\param w an int filled with the width\n * \\param h an int filled with the height\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRenderer\n */\nextern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer,\n                                                      int *w, int *h);\n\n/**\n * Create a texture for a rendering context.\n *\n * You can set the texture scaling method by setting\n * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture.\n *\n * \\param renderer the rendering context\n * \\param format one of the enumerated values in SDL_PixelFormatEnum\n * \\param access one of the enumerated values in SDL_TextureAccess\n * \\param w the width of the texture in pixels\n * \\param h the height of the texture in pixels\n * \\returns a pointer to the created texture or NULL if no rendering context\n *          was active, the format was unsupported, or the width or height\n *          were out of range; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateTextureFromSurface\n * \\sa SDL_DestroyTexture\n * \\sa SDL_QueryTexture\n * \\sa SDL_UpdateTexture\n */\nextern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,\n                                                        Uint32 format,\n                                                        int access, int w,\n                                                        int h);\n\n/**\n * Create a texture from an existing surface.\n *\n * The surface is not modified or freed by this function.\n *\n * The SDL_TextureAccess hint for the created texture is\n * `SDL_TEXTUREACCESS_STATIC`.\n *\n * The pixel format of the created texture may be different from the pixel\n * format of the surface. Use SDL_QueryTexture() to query the pixel format of\n * the texture.\n *\n * \\param renderer the rendering context\n * \\param surface the SDL_Surface structure containing pixel data used to fill\n *                the texture\n * \\returns the created texture or NULL on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateTexture\n * \\sa SDL_DestroyTexture\n * \\sa SDL_QueryTexture\n */\nextern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface);\n\n/**\n * Query the attributes of a texture.\n *\n * \\param texture the texture to query\n * \\param format a pointer filled in with the raw format of the texture; the\n *               actual format may differ, but pixel transfers will use this\n *               format (one of the SDL_PixelFormatEnum values). This argument\n *               can be NULL if you don't need this information.\n * \\param access a pointer filled in with the actual access to the texture\n *               (one of the SDL_TextureAccess values). This argument can be\n *               NULL if you don't need this information.\n * \\param w a pointer filled in with the width of the texture in pixels. This\n *          argument can be NULL if you don't need this information.\n * \\param h a pointer filled in with the height of the texture in pixels. This\n *          argument can be NULL if you don't need this information.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateTexture\n */\nextern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture,\n                                             Uint32 * format, int *access,\n                                             int *w, int *h);\n\n/**\n * Set an additional color value multiplied into render copy operations.\n *\n * When this texture is rendered, during the copy operation each source color\n * channel is modulated by the appropriate color value according to the\n * following formula:\n *\n * `srcC = srcC * (color / 255)`\n *\n * Color modulation is not always supported by the renderer; it will return -1\n * if color modulation is not supported.\n *\n * \\param texture the texture to update\n * \\param r the red color value multiplied into copy operations\n * \\param g the green color value multiplied into copy operations\n * \\param b the blue color value multiplied into copy operations\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTextureColorMod\n * \\sa SDL_SetTextureAlphaMod\n */\nextern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture,\n                                                   Uint8 r, Uint8 g, Uint8 b);\n\n\n/**\n * Get the additional color value multiplied into render copy operations.\n *\n * \\param texture the texture to query\n * \\param r a pointer filled in with the current red color value\n * \\param g a pointer filled in with the current green color value\n * \\param b a pointer filled in with the current blue color value\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTextureAlphaMod\n * \\sa SDL_SetTextureColorMod\n */\nextern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture,\n                                                   Uint8 * r, Uint8 * g,\n                                                   Uint8 * b);\n\n/**\n * Set an additional alpha value multiplied into render copy operations.\n *\n * When this texture is rendered, during the copy operation the source alpha\n * value is modulated by this alpha value according to the following formula:\n *\n * `srcA = srcA * (alpha / 255)`\n *\n * Alpha modulation is not always supported by the renderer; it will return -1\n * if alpha modulation is not supported.\n *\n * \\param texture the texture to update\n * \\param alpha the source alpha value multiplied into copy operations\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTextureAlphaMod\n * \\sa SDL_SetTextureColorMod\n */\nextern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture,\n                                                   Uint8 alpha);\n\n/**\n * Get the additional alpha value multiplied into render copy operations.\n *\n * \\param texture the texture to query\n * \\param alpha a pointer filled in with the current alpha value\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTextureColorMod\n * \\sa SDL_SetTextureAlphaMod\n */\nextern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture,\n                                                   Uint8 * alpha);\n\n/**\n * Set the blend mode for a texture, used by SDL_RenderCopy().\n *\n * If the blend mode is not supported, the closest supported mode is chosen\n * and this function returns -1.\n *\n * \\param texture the texture to update\n * \\param blendMode the SDL_BlendMode to use for texture blending\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTextureBlendMode\n * \\sa SDL_RenderCopy\n */\nextern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture,\n                                                    SDL_BlendMode blendMode);\n\n/**\n * Get the blend mode used for texture copy operations.\n *\n * \\param texture the texture to query\n * \\param blendMode a pointer filled in with the current SDL_BlendMode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetTextureBlendMode\n */\nextern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture,\n                                                    SDL_BlendMode *blendMode);\n\n/**\n * Set the scale mode used for texture scale operations.\n *\n * If the scale mode is not supported, the closest supported mode is chosen.\n *\n * \\param texture The texture to update.\n * \\param scaleMode the SDL_ScaleMode to use for texture scaling.\n * \\returns 0 on success, or -1 if the texture is not valid.\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_GetTextureScaleMode\n */\nextern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture,\n                                                    SDL_ScaleMode scaleMode);\n\n/**\n * Get the scale mode used for texture scale operations.\n *\n * \\param texture the texture to query.\n * \\param scaleMode a pointer filled in with the current scale mode.\n * \\return 0 on success, or -1 if the texture is not valid.\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_SetTextureScaleMode\n */\nextern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture,\n                                                    SDL_ScaleMode *scaleMode);\n\n/**\n * Associate a user-specified pointer with a texture.\n *\n * \\param texture the texture to update.\n * \\param userdata the pointer to associate with the texture.\n * \\returns 0 on success, or -1 if the texture is not valid.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GetTextureUserData\n */\nextern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture,\n                                                   void *userdata);\n\n/**\n * Get the user-specified pointer associated with a texture\n *\n * \\param texture the texture to query.\n * \\return the pointer associated with the texture, or NULL if the texture is\n *         not valid.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_SetTextureUserData\n */\nextern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture);\n\n/**\n * Update the given texture rectangle with new pixel data.\n *\n * The pixel data must be in the pixel format of the texture. Use\n * SDL_QueryTexture() to query the pixel format of the texture.\n *\n * This is a fairly slow function, intended for use with static textures that\n * do not change often.\n *\n * If the texture is intended to be updated often, it is preferred to create\n * the texture as streaming and use the locking functions referenced below.\n * While this function will work with streaming textures, for optimization\n * reasons you may not get the pixels back if you lock the texture afterward.\n *\n * \\param texture the texture to update\n * \\param rect an SDL_Rect structure representing the area to update, or NULL\n *             to update the entire texture\n * \\param pixels the raw pixel data in the format of the texture\n * \\param pitch the number of bytes in a row of pixel data, including padding\n *              between lines\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateTexture\n * \\sa SDL_LockTexture\n * \\sa SDL_UnlockTexture\n */\nextern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture,\n                                              const SDL_Rect * rect,\n                                              const void *pixels, int pitch);\n\n/**\n * Update a rectangle within a planar YV12 or IYUV texture with new pixel\n * data.\n *\n * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous\n * block of Y and U/V planes in the proper order, but this function is\n * available if your pixel data is not contiguous.\n *\n * \\param texture the texture to update\n * \\param rect a pointer to the rectangle of pixels to update, or NULL to\n *             update the entire texture\n * \\param Yplane the raw pixel data for the Y plane\n * \\param Ypitch the number of bytes between rows of pixel data for the Y\n *               plane\n * \\param Uplane the raw pixel data for the U plane\n * \\param Upitch the number of bytes between rows of pixel data for the U\n *               plane\n * \\param Vplane the raw pixel data for the V plane\n * \\param Vpitch the number of bytes between rows of pixel data for the V\n *               plane\n * \\returns 0 on success or -1 if the texture is not valid; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.1.\n *\n * \\sa SDL_UpdateTexture\n */\nextern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture,\n                                                 const SDL_Rect * rect,\n                                                 const Uint8 *Yplane, int Ypitch,\n                                                 const Uint8 *Uplane, int Upitch,\n                                                 const Uint8 *Vplane, int Vpitch);\n\n/**\n * Update a rectangle within a planar NV12 or NV21 texture with new pixels.\n *\n * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous\n * block of NV12/21 planes in the proper order, but this function is available\n * if your pixel data is not contiguous.\n *\n * \\param texture the texture to update\n * \\param rect a pointer to the rectangle of pixels to update, or NULL to\n *             update the entire texture.\n * \\param Yplane the raw pixel data for the Y plane.\n * \\param Ypitch the number of bytes between rows of pixel data for the Y\n *               plane.\n * \\param UVplane the raw pixel data for the UV plane.\n * \\param UVpitch the number of bytes between rows of pixel data for the UV\n *                plane.\n * \\return 0 on success, or -1 if the texture is not valid.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture,\n                                                 const SDL_Rect * rect,\n                                                 const Uint8 *Yplane, int Ypitch,\n                                                 const Uint8 *UVplane, int UVpitch);\n\n/**\n * Lock a portion of the texture for **write-only** pixel access.\n *\n * As an optimization, the pixels made available for editing don't necessarily\n * contain the old texture data. This is a write-only operation, and if you\n * need to keep a copy of the texture data you should do that at the\n * application level.\n *\n * You must use SDL_UnlockTexture() to unlock the pixels and apply any\n * changes.\n *\n * \\param texture the texture to lock for access, which was created with\n *                `SDL_TEXTUREACCESS_STREAMING`\n * \\param rect an SDL_Rect structure representing the area to lock for access;\n *             NULL to lock the entire texture\n * \\param pixels this is filled in with a pointer to the locked pixels,\n *               appropriately offset by the locked area\n * \\param pitch this is filled in with the pitch of the locked pixels; the\n *              pitch is the length of one row in bytes\n * \\returns 0 on success or a negative error code if the texture is not valid\n *          or was not created with `SDL_TEXTUREACCESS_STREAMING`; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_UnlockTexture\n */\nextern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture,\n                                            const SDL_Rect * rect,\n                                            void **pixels, int *pitch);\n\n/**\n * Lock a portion of the texture for **write-only** pixel access, and expose\n * it as a SDL surface.\n *\n * Besides providing an SDL_Surface instead of raw pixel data, this function\n * operates like SDL_LockTexture.\n *\n * As an optimization, the pixels made available for editing don't necessarily\n * contain the old texture data. This is a write-only operation, and if you\n * need to keep a copy of the texture data you should do that at the\n * application level.\n *\n * You must use SDL_UnlockTexture() to unlock the pixels and apply any\n * changes.\n *\n * The returned surface is freed internally after calling SDL_UnlockTexture()\n * or SDL_DestroyTexture(). The caller should not free it.\n *\n * \\param texture the texture to lock for access, which was created with\n *                `SDL_TEXTUREACCESS_STREAMING`\n * \\param rect a pointer to the rectangle to lock for access. If the rect is\n *             NULL, the entire texture will be locked\n * \\param surface this is filled in with an SDL surface representing the\n *                locked area\n * \\returns 0 on success, or -1 if the texture is not valid or was not created\n *          with `SDL_TEXTUREACCESS_STREAMING`\n *\n * \\since This function is available since SDL 2.0.12.\n *\n * \\sa SDL_LockTexture\n * \\sa SDL_UnlockTexture\n */\nextern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture,\n                                            const SDL_Rect *rect,\n                                            SDL_Surface **surface);\n\n/**\n * Unlock a texture, uploading the changes to video memory, if needed.\n *\n * **Warning**: Please note that SDL_LockTexture() is intended to be\n * write-only; it will not guarantee the previous contents of the texture will\n * be provided. You must fully initialize any area of a texture that you lock\n * before unlocking it, as the pixels might otherwise be uninitialized memory.\n *\n * Which is to say: locking and immediately unlocking a texture can result in\n * corrupted textures, depending on the renderer in use.\n *\n * \\param texture a texture locked by SDL_LockTexture()\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockTexture\n */\nextern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture);\n\n/**\n * Determine whether a renderer supports the use of render targets.\n *\n * \\param renderer the renderer that will be checked\n * \\returns SDL_TRUE if supported or SDL_FALSE if not.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRenderTarget\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer);\n\n/**\n * Set a texture as the current rendering target.\n *\n * Before using this function, you should check the\n * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if\n * render targets are supported.\n *\n * The default render target is the window for which the renderer was created.\n * To stop rendering to a texture and render to the window again, call this\n * function with a NULL `texture`.\n *\n * \\param renderer the rendering context\n * \\param texture the targeted texture, which must be created with the\n *                `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the\n *                window instead of a texture.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRenderTarget\n */\nextern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer,\n                                                SDL_Texture *texture);\n\n/**\n * Get the current render target.\n *\n * The default render target is the window for which the renderer was created,\n * and is reported a NULL here.\n *\n * \\param renderer the rendering context\n * \\returns the current render target or NULL for the default render target.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRenderTarget\n */\nextern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer);\n\n/**\n * Set a device independent resolution for rendering.\n *\n * This function uses the viewport and scaling functionality to allow a fixed\n * logical resolution for rendering, regardless of the actual output\n * resolution. If the actual output resolution doesn't have the same aspect\n * ratio the output rendering will be centered within the output display.\n *\n * If the output display is a window, mouse and touch events in the window\n * will be filtered and scaled so they seem to arrive within the logical\n * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether\n * relative motion events are also scaled.\n *\n * If this function results in scaling or subpixel drawing by the rendering\n * backend, it will be handled using the appropriate quality hints.\n *\n * \\param renderer the renderer for which resolution should be set\n * \\param w the width of the logical resolution\n * \\param h the height of the logical resolution\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderGetLogicalSize\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h);\n\n/**\n * Get device independent resolution for rendering.\n *\n * When using the main rendering target (eg no target texture is set): this\n * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical\n * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical\n * width and height.\n *\n * When using a target texture: Never return 0 for `w` and `h` at first. Then\n * it returns the logical width and height that are set.\n *\n * \\param renderer a rendering context\n * \\param w an int to be filled with the width\n * \\param h an int to be filled with the height\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderSetLogicalSize\n */\nextern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h);\n\n/**\n * Set whether to force integer scales for resolution-independent rendering.\n *\n * This function restricts the logical viewport to integer values - that is,\n * when a resolution is between two multiples of a logical size, the viewport\n * size is rounded down to the lower multiple.\n *\n * \\param renderer the renderer for which integer scaling should be set\n * \\param enable enable or disable the integer scaling for rendering\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_RenderGetIntegerScale\n * \\sa SDL_RenderSetLogicalSize\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer,\n                                                      SDL_bool enable);\n\n/**\n * Get whether integer scales are forced for resolution-independent rendering.\n *\n * \\param renderer the renderer from which integer scaling should be queried\n * \\returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_RenderSetIntegerScale\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer);\n\n/**\n * Set the drawing area for rendering on the current target.\n *\n * When the window is resized, the viewport is reset to fill the entire new\n * window size.\n *\n * \\param renderer the rendering context\n * \\param rect the SDL_Rect structure representing the drawing area, or NULL\n *             to set the viewport to the entire target\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderGetViewport\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer,\n                                                  const SDL_Rect * rect);\n\n/**\n * Get the drawing area for the current target.\n *\n * \\param renderer the rendering context\n * \\param rect an SDL_Rect structure filled in with the current drawing area\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderSetViewport\n */\nextern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer,\n                                                   SDL_Rect * rect);\n\n/**\n * Set the clip rectangle for rendering on the specified target.\n *\n * \\param renderer the rendering context for which clip rectangle should be\n *                 set\n * \\param rect an SDL_Rect structure representing the clip area, relative to\n *             the viewport, or NULL to disable clipping\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderGetClipRect\n * \\sa SDL_RenderIsClipEnabled\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer,\n                                                  const SDL_Rect * rect);\n\n/**\n * Get the clip rectangle for the current target.\n *\n * \\param renderer the rendering context from which clip rectangle should be\n *                 queried\n * \\param rect an SDL_Rect structure filled in with the current clipping area\n *             or an empty rectangle if clipping is disabled\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderIsClipEnabled\n * \\sa SDL_RenderSetClipRect\n */\nextern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer,\n                                                   SDL_Rect * rect);\n\n/**\n * Get whether clipping is enabled on the given renderer.\n *\n * \\param renderer the renderer from which clip state should be queried\n * \\returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_RenderGetClipRect\n * \\sa SDL_RenderSetClipRect\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer);\n\n\n/**\n * Set the drawing scale for rendering on the current target.\n *\n * The drawing coordinates are scaled by the x/y scaling factors before they\n * are used by the renderer. This allows resolution independent drawing with a\n * single coordinate system.\n *\n * If this results in scaling or subpixel drawing by the rendering backend, it\n * will be handled using the appropriate quality hints. For best results use\n * integer scaling factors.\n *\n * \\param renderer a rendering context\n * \\param scaleX the horizontal scaling factor\n * \\param scaleY the vertical scaling factor\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderGetScale\n * \\sa SDL_RenderSetLogicalSize\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer,\n                                               float scaleX, float scaleY);\n\n/**\n * Get the drawing scale for the current target.\n *\n * \\param renderer the renderer from which drawing scale should be queried\n * \\param scaleX a pointer filled in with the horizontal scaling factor\n * \\param scaleY a pointer filled in with the vertical scaling factor\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderSetScale\n */\nextern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer,\n                                               float *scaleX, float *scaleY);\n\n/**\n * Get logical coordinates of point in renderer when given real coordinates of\n * point in window.\n *\n * Logical coordinates will differ from real coordinates when render is scaled\n * and logical renderer size set\n *\n * \\param renderer the renderer from which the logical coordinates should be\n *                 calculated\n * \\param windowX the real X coordinate in the window\n * \\param windowY the real Y coordinate in the window\n * \\param logicalX the pointer filled with the logical x coordinate\n * \\param logicalY the pointer filled with the logical y coordinate\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_RenderGetScale\n * \\sa SDL_RenderSetScale\n * \\sa SDL_RenderGetLogicalSize\n * \\sa SDL_RenderSetLogicalSize\n */\nextern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, \n                                                            int windowX, int windowY, \n                                                            float *logicalX, float *logicalY);\n                                                  \n\n/**\n * Get real coordinates of point in window when given logical coordinates of\n * point in renderer.\n *\n * Logical coordinates will differ from real coordinates when render is scaled\n * and logical renderer size set\n *\n * \\param renderer the renderer from which the window coordinates should be\n *                 calculated\n * \\param logicalX the logical x coordinate\n * \\param logicalY the logical y coordinate\n * \\param windowX the pointer filled with the real X coordinate in the window\n * \\param windowY the pointer filled with the real Y coordinate in the window\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_RenderGetScale\n * \\sa SDL_RenderSetScale\n * \\sa SDL_RenderGetLogicalSize\n * \\sa SDL_RenderSetLogicalSize\n */\nextern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, \n                                                            float logicalX, float logicalY,\n                                                            int *windowX, int *windowY);\n\n/**\n * Set the color used for drawing operations (Rect, Line and Clear).\n *\n * Set the color for drawing or filling rectangles, lines, and points, and for\n * SDL_RenderClear().\n *\n * \\param renderer the rendering context\n * \\param r the red value used to draw on the rendering target\n * \\param g the green value used to draw on the rendering target\n * \\param b the blue value used to draw on the rendering target\n * \\param a the alpha value used to draw on the rendering target; usually\n *          `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to\n *          specify how the alpha channel is used\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRenderDrawColor\n * \\sa SDL_RenderClear\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n */\nextern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,\n                                           Uint8 r, Uint8 g, Uint8 b,\n                                           Uint8 a);\n\n/**\n * Get the color used for drawing operations (Rect, Line and Clear).\n *\n * \\param renderer the rendering context\n * \\param r a pointer filled in with the red value used to draw on the\n *          rendering target\n * \\param g a pointer filled in with the green value used to draw on the\n *          rendering target\n * \\param b a pointer filled in with the blue value used to draw on the\n *          rendering target\n * \\param a a pointer filled in with the alpha value used to draw on the\n *          rendering target; usually `SDL_ALPHA_OPAQUE` (255)\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer,\n                                           Uint8 * r, Uint8 * g, Uint8 * b,\n                                           Uint8 * a);\n\n/**\n * Set the blend mode used for drawing operations (Fill and Line).\n *\n * If the blend mode is not supported, the closest supported mode is chosen.\n *\n * \\param renderer the rendering context\n * \\param blendMode the SDL_BlendMode to use for blending\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRenderDrawBlendMode\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n */\nextern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer,\n                                                       SDL_BlendMode blendMode);\n\n/**\n * Get the blend mode used for drawing operations.\n *\n * \\param renderer the rendering context\n * \\param blendMode a pointer filled in with the current SDL_BlendMode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRenderDrawBlendMode\n */\nextern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer,\n                                                       SDL_BlendMode *blendMode);\n\n/**\n * Clear the current rendering target with the drawing color.\n *\n * This function clears the entire rendering target, ignoring the viewport and\n * the clip rectangle.\n *\n * \\param renderer the rendering context\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);\n\n/**\n * Draw a point on the current rendering target.\n *\n * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple,\n * use SDL_RenderDrawPoints() instead.\n *\n * \\param renderer the rendering context\n * \\param x the x coordinate of the point\n * \\param y the y coordinate of the point\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer,\n                                                int x, int y);\n\n/**\n * Draw multiple points on the current rendering target.\n *\n * \\param renderer the rendering context\n * \\param points an array of SDL_Point structures that represent the points to\n *               draw\n * \\param count the number of points to draw\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer,\n                                                 const SDL_Point * points,\n                                                 int count);\n\n/**\n * Draw a line on the current rendering target.\n *\n * SDL_RenderDrawLine() draws the line to include both end points. If you want\n * to draw multiple, connecting lines use SDL_RenderDrawLines() instead.\n *\n * \\param renderer the rendering context\n * \\param x1 the x coordinate of the start point\n * \\param y1 the y coordinate of the start point\n * \\param x2 the x coordinate of the end point\n * \\param y2 the y coordinate of the end point\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer,\n                                               int x1, int y1, int x2, int y2);\n\n/**\n * Draw a series of connected lines on the current rendering target.\n *\n * \\param renderer the rendering context\n * \\param points an array of SDL_Point structures representing points along\n *               the lines\n * \\param count the number of points, drawing count-1 lines\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer,\n                                                const SDL_Point * points,\n                                                int count);\n\n/**\n * Draw a rectangle on the current rendering target.\n *\n * \\param renderer the rendering context\n * \\param rect an SDL_Rect structure representing the rectangle to draw, or\n *             NULL to outline the entire rendering target\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer,\n                                               const SDL_Rect * rect);\n\n/**\n * Draw some number of rectangles on the current rendering target.\n *\n * \\param renderer the rendering context\n * \\param rects an array of SDL_Rect structures representing the rectangles to\n *              be drawn\n * \\param count the number of rectangles\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer,\n                                                const SDL_Rect * rects,\n                                                int count);\n\n/**\n * Fill a rectangle on the current rendering target with the drawing color.\n *\n * The current drawing color is set by SDL_SetRenderDrawColor(), and the\n * color's alpha value is ignored unless blending is enabled with the\n * appropriate call to SDL_SetRenderDrawBlendMode().\n *\n * \\param renderer the rendering context\n * \\param rect the SDL_Rect structure representing the rectangle to fill, or\n *             NULL for the entire rendering target\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRects\n * \\sa SDL_RenderPresent\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer,\n                                               const SDL_Rect * rect);\n\n/**\n * Fill some number of rectangles on the current rendering target with the\n * drawing color.\n *\n * \\param renderer the rendering context\n * \\param rects an array of SDL_Rect structures representing the rectangles to\n *              be filled\n * \\param count the number of rectangles\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderPresent\n */\nextern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer,\n                                                const SDL_Rect * rects,\n                                                int count);\n\n/**\n * Copy a portion of the texture to the current rendering target.\n *\n * The texture is blended with the destination based on its blend mode set\n * with SDL_SetTextureBlendMode().\n *\n * The texture color is affected based on its color modulation set by\n * SDL_SetTextureColorMod().\n *\n * The texture alpha is affected based on its alpha modulation set by\n * SDL_SetTextureAlphaMod().\n *\n * \\param renderer the rendering context\n * \\param texture the source texture\n * \\param srcrect the source SDL_Rect structure or NULL for the entire texture\n * \\param dstrect the destination SDL_Rect structure or NULL for the entire\n *                rendering target; the texture will be stretched to fill the\n *                given rectangle\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderCopyEx\n * \\sa SDL_SetTextureAlphaMod\n * \\sa SDL_SetTextureBlendMode\n * \\sa SDL_SetTextureColorMod\n */\nextern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer,\n                                           SDL_Texture * texture,\n                                           const SDL_Rect * srcrect,\n                                           const SDL_Rect * dstrect);\n\n/**\n * Copy a portion of the texture to the current rendering, with optional\n * rotation and flipping.\n *\n * Copy a portion of the texture to the current rendering target, optionally\n * rotating it by angle around the given center and also flipping it\n * top-bottom and/or left-right.\n *\n * The texture is blended with the destination based on its blend mode set\n * with SDL_SetTextureBlendMode().\n *\n * The texture color is affected based on its color modulation set by\n * SDL_SetTextureColorMod().\n *\n * The texture alpha is affected based on its alpha modulation set by\n * SDL_SetTextureAlphaMod().\n *\n * \\param renderer the rendering context\n * \\param texture the source texture\n * \\param srcrect the source SDL_Rect structure or NULL for the entire texture\n * \\param dstrect the destination SDL_Rect structure or NULL for the entire\n *                rendering target\n * \\param angle an angle in degrees that indicates the rotation that will be\n *              applied to dstrect, rotating it in a clockwise direction\n * \\param center a pointer to a point indicating the point around which\n *               dstrect will be rotated (if NULL, rotation will be done\n *               around `dstrect.w / 2`, `dstrect.h / 2`)\n * \\param flip a SDL_RendererFlip value stating which flipping actions should\n *             be performed on the texture\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderCopy\n * \\sa SDL_SetTextureAlphaMod\n * \\sa SDL_SetTextureBlendMode\n * \\sa SDL_SetTextureColorMod\n */\nextern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer,\n                                           SDL_Texture * texture,\n                                           const SDL_Rect * srcrect,\n                                           const SDL_Rect * dstrect,\n                                           const double angle,\n                                           const SDL_Point *center,\n                                           const SDL_RendererFlip flip);\n\n\n/**\n * Draw a point on the current rendering target at subpixel precision.\n *\n * \\param renderer The renderer which should draw a point.\n * \\param x The x coordinate of the point.\n * \\param y The y coordinate of the point.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer,\n                                                 float x, float y);\n\n/**\n * Draw multiple points on the current rendering target at subpixel precision.\n *\n * \\param renderer The renderer which should draw multiple points.\n * \\param points The points to draw\n * \\param count The number of points to draw\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer,\n                                                  const SDL_FPoint * points,\n                                                  int count);\n\n/**\n * Draw a line on the current rendering target at subpixel precision.\n *\n * \\param renderer The renderer which should draw a line.\n * \\param x1 The x coordinate of the start point.\n * \\param y1 The y coordinate of the start point.\n * \\param x2 The x coordinate of the end point.\n * \\param y2 The y coordinate of the end point.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer,\n                                                float x1, float y1, float x2, float y2);\n\n/**\n * Draw a series of connected lines on the current rendering target at\n * subpixel precision.\n *\n * \\param renderer The renderer which should draw multiple lines.\n * \\param points The points along the lines\n * \\param count The number of points, drawing count-1 lines\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer,\n                                                 const SDL_FPoint * points,\n                                                 int count);\n\n/**\n * Draw a rectangle on the current rendering target at subpixel precision.\n *\n * \\param renderer The renderer which should draw a rectangle.\n * \\param rect A pointer to the destination rectangle, or NULL to outline the\n *             entire rendering target.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer,\n                                                const SDL_FRect * rect);\n\n/**\n * Draw some number of rectangles on the current rendering target at subpixel\n * precision.\n *\n * \\param renderer The renderer which should draw multiple rectangles.\n * \\param rects A pointer to an array of destination rectangles.\n * \\param count The number of rectangles.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer,\n                                                 const SDL_FRect * rects,\n                                                 int count);\n\n/**\n * Fill a rectangle on the current rendering target with the drawing color at\n * subpixel precision.\n *\n * \\param renderer The renderer which should fill a rectangle.\n * \\param rect A pointer to the destination rectangle, or NULL for the entire\n *             rendering target.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer,\n                                                const SDL_FRect * rect);\n\n/**\n * Fill some number of rectangles on the current rendering target with the\n * drawing color at subpixel precision.\n *\n * \\param renderer The renderer which should fill multiple rectangles.\n * \\param rects A pointer to an array of destination rectangles.\n * \\param count The number of rectangles.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer,\n                                                 const SDL_FRect * rects,\n                                                 int count);\n\n/**\n * Copy a portion of the texture to the current rendering target at subpixel\n * precision.\n *\n * \\param renderer The renderer which should copy parts of a texture.\n * \\param texture The source texture.\n * \\param srcrect A pointer to the source rectangle, or NULL for the entire\n *                texture.\n * \\param dstrect A pointer to the destination rectangle, or NULL for the\n *                entire rendering target.\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer,\n                                            SDL_Texture * texture,\n                                            const SDL_Rect * srcrect,\n                                            const SDL_FRect * dstrect);\n\n/**\n * Copy a portion of the source texture to the current rendering target, with\n * rotation and flipping, at subpixel precision.\n *\n * \\param renderer The renderer which should copy parts of a texture.\n * \\param texture The source texture.\n * \\param srcrect A pointer to the source rectangle, or NULL for the entire\n *                texture.\n * \\param dstrect A pointer to the destination rectangle, or NULL for the\n *                entire rendering target.\n * \\param angle An angle in degrees that indicates the rotation that will be\n *              applied to dstrect, rotating it in a clockwise direction\n * \\param center A pointer to a point indicating the point around which\n *               dstrect will be rotated (if NULL, rotation will be done\n *               around dstrect.w/2, dstrect.h/2).\n * \\param flip An SDL_RendererFlip value stating which flipping actions should\n *             be performed on the texture\n * \\return 0 on success, or -1 on error\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer,\n                                            SDL_Texture * texture,\n                                            const SDL_Rect * srcrect,\n                                            const SDL_FRect * dstrect,\n                                            const double angle,\n                                            const SDL_FPoint *center,\n                                            const SDL_RendererFlip flip);\n\n/**\n * Render a list of triangles, optionally using a texture and indices into the\n * vertex array Color and alpha modulation is done per vertex\n * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).\n *\n * \\param renderer The rendering context.\n * \\param texture (optional) The SDL texture to use.\n * \\param vertices Vertices.\n * \\param num_vertices Number of vertices.\n * \\param indices (optional) An array of integer indices into the 'vertices'\n *                array, if NULL all vertices will be rendered in sequential\n *                order.\n * \\param num_indices Number of indices.\n * \\return 0 on success, or -1 if the operation is not supported\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_RenderGeometryRaw\n * \\sa SDL_Vertex\n */\nextern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer,\n                                               SDL_Texture *texture,\n                                               const SDL_Vertex *vertices, int num_vertices,\n                                               const int *indices, int num_indices);\n\n/**\n * Render a list of triangles, optionally using a texture and indices into the\n * vertex arrays Color and alpha modulation is done per vertex\n * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored).\n *\n * \\param renderer The rendering context.\n * \\param texture (optional) The SDL texture to use.\n * \\param xy Vertex positions\n * \\param xy_stride Byte size to move from one element to the next element\n * \\param color Vertex colors (as SDL_Color)\n * \\param color_stride Byte size to move from one element to the next element\n * \\param uv Vertex normalized texture coordinates\n * \\param uv_stride Byte size to move from one element to the next element\n * \\param num_vertices Number of vertices.\n * \\param indices (optional) An array of indices into the 'vertices' arrays,\n *                if NULL all vertices will be rendered in sequential order.\n * \\param num_indices Number of indices.\n * \\param size_indices Index size: 1 (byte), 2 (short), 4 (int)\n * \\return 0 on success, or -1 if the operation is not supported\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_RenderGeometry\n * \\sa SDL_Vertex\n */\nextern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer,\n                                               SDL_Texture *texture,\n                                               const float *xy, int xy_stride,\n                                               const SDL_Color *color, int color_stride,\n                                               const float *uv, int uv_stride,\n                                               int num_vertices,\n                                               const void *indices, int num_indices, int size_indices);\n\n/**\n * Read pixels from the current rendering target to an array of pixels.\n *\n * **WARNING**: This is a very slow operation, and should not be used\n * frequently. If you're using this on the main rendering target, it should be\n * called after rendering and before SDL_RenderPresent().\n *\n * `pitch` specifies the number of bytes between rows in the destination\n * `pixels` data. This allows you to write to a subrectangle or have padded\n * rows in the destination. Generally, `pitch` should equal the number of\n * pixels per row in the `pixels` data times the number of bytes per pixel,\n * but it might contain additional padding (for example, 24bit RGB Windows\n * Bitmap data pads all rows to multiples of 4 bytes).\n *\n * \\param renderer the rendering context\n * \\param rect an SDL_Rect structure representing the area to read, or NULL\n *             for the entire render target\n * \\param format an SDL_PixelFormatEnum value of the desired format of the\n *               pixel data, or 0 to use the format of the rendering target\n * \\param pixels a pointer to the pixel data to copy into\n * \\param pitch the pitch of the `pixels` parameter\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer,\n                                                 const SDL_Rect * rect,\n                                                 Uint32 format,\n                                                 void *pixels, int pitch);\n\n/**\n * Update the screen with any rendering performed since the previous call.\n *\n * SDL's rendering functions operate on a backbuffer; that is, calling a\n * rendering function such as SDL_RenderDrawLine() does not directly put a\n * line on the screen, but rather updates the backbuffer. As such, you compose\n * your entire scene and *present* the composed backbuffer to the screen as a\n * complete picture.\n *\n * Therefore, when using SDL's rendering API, one does all drawing intended\n * for the frame, and then calls this function once per frame to present the\n * final drawing to the user.\n *\n * The backbuffer should be considered invalidated after each present; do not\n * assume that previous contents will exist between frames. You are strongly\n * encouraged to call SDL_RenderClear() to initialize the backbuffer before\n * starting each new frame's drawing, even if you plan to overwrite every\n * pixel.\n *\n * \\param renderer the rendering context\n *\n * \\threadsafety You may only call this function on the main thread. If this\n *               happens to work on a background thread on any given platform\n *               or backend, it's purely by luck and you should not rely on it\n *               to work next time.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RenderClear\n * \\sa SDL_RenderDrawLine\n * \\sa SDL_RenderDrawLines\n * \\sa SDL_RenderDrawPoint\n * \\sa SDL_RenderDrawPoints\n * \\sa SDL_RenderDrawRect\n * \\sa SDL_RenderDrawRects\n * \\sa SDL_RenderFillRect\n * \\sa SDL_RenderFillRects\n * \\sa SDL_SetRenderDrawBlendMode\n * \\sa SDL_SetRenderDrawColor\n */\nextern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);\n\n/**\n * Destroy the specified texture.\n *\n * Passing NULL or an otherwise invalid texture will set the SDL error message\n * to \"Invalid texture\".\n *\n * \\param texture the texture to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateTexture\n * \\sa SDL_CreateTextureFromSurface\n */\nextern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture);\n\n/**\n * Destroy the rendering context for a window and free associated textures.\n *\n * If `renderer` is NULL, this function will return immediately after setting\n * the SDL error message to \"Invalid renderer\". See SDL_GetError().\n *\n * \\param renderer the rendering context\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRenderer\n */\nextern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer);\n\n/**\n * Force the rendering context to flush any pending commands to the underlying\n * rendering API.\n *\n * You do not need to (and in fact, shouldn't) call this function unless you\n * are planning to call into OpenGL/Direct3D/Metal/whatever directly in\n * addition to using an SDL_Renderer.\n *\n * This is for a very-specific case: if you are using SDL's render API, you\n * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set\n * SDL_HINT_RENDER_BATCHING to \"1\", and you plan to make OpenGL/D3D/whatever\n * calls in addition to SDL render API calls. If all of this applies, you\n * should call SDL_RenderFlush() between calls to SDL's render API and the\n * low-level API you're using in cooperation.\n *\n * In all other cases, you can ignore this function. This is only here to get\n * maximum performance out of a specific situation. In all other cases, SDL\n * will do the right thing, perhaps at a performance loss.\n *\n * This function is first available in SDL 2.0.10, and is not needed in 2.0.9\n * and earlier, as earlier versions did not queue rendering commands at all,\n * instead flushing them to the OS immediately.\n *\n * \\param renderer the rendering context\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer);\n\n\n/**\n * Bind an OpenGL/ES/ES2 texture to the current context.\n *\n * This is for use with OpenGL instructions when rendering OpenGL primitives\n * directly.\n *\n * If not NULL, `texw` and `texh` will be filled with the width and height\n * values suitable for the provided texture. In most cases, both will be 1.0,\n * however, on systems that support the GL_ARB_texture_rectangle extension,\n * these values will actually be the pixel width and height used to create the\n * texture, so this factor needs to be taken into account when providing\n * texture coordinates to OpenGL.\n *\n * You need a renderer to create an SDL_Texture, therefore you can only use\n * this function with an implicit OpenGL context from SDL_CreateRenderer(),\n * not with your own OpenGL context. If you need control over your OpenGL\n * context, you need to write your own texture-loading methods.\n *\n * Also note that SDL may upload RGB textures as BGR (or vice-versa), and\n * re-order the color channels in the shaders phase, so the uploaded texture\n * may have swapped color channels.\n *\n * \\param texture the texture to bind to the current OpenGL/ES/ES2 context\n * \\param texw a pointer to a float value which will be filled with the\n *             texture width or NULL if you don't need that value\n * \\param texh a pointer to a float value which will be filled with the\n *             texture height or NULL if you don't need that value\n * \\returns 0 on success, or -1 if the operation is not supported; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_MakeCurrent\n * \\sa SDL_GL_UnbindTexture\n */\nextern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh);\n\n/**\n * Unbind an OpenGL/ES/ES2 texture from the current context.\n *\n * See SDL_GL_BindTexture() for examples on how to use these functions\n *\n * \\param texture the texture to unbind from the current OpenGL/ES/ES2 context\n * \\returns 0 on success, or -1 if the operation is not supported\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_BindTexture\n * \\sa SDL_GL_MakeCurrent\n */\nextern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture);\n\n/**\n * Get the CAMetalLayer associated with the given Metal renderer.\n *\n * This function returns `void *`, so SDL doesn't have to include Metal's\n * headers, but it can be safely cast to a `CAMetalLayer *`.\n *\n * \\param renderer The renderer to query\n * \\returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a\n *          Metal renderer\n *\n * \\since This function is available since SDL 2.0.8.\n *\n * \\sa SDL_RenderGetMetalCommandEncoder\n */\nextern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer);\n\n/**\n * Get the Metal command encoder for the current frame\n *\n * This function returns `void *`, so SDL doesn't have to include Metal's\n * headers, but it can be safely cast to an `id<MTLRenderCommandEncoder>`.\n *\n * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give\n * SDL a drawable to render to, which might happen if the window is\n * hidden/minimized/offscreen. This doesn't apply to command encoders for\n * render targets, just the window's backbuffer. Check your return values!\n *\n * \\param renderer The renderer to query\n * \\returns an `id<MTLRenderCommandEncoder>` on success, or NULL if the\n *          renderer isn't a Metal renderer or there was an error.\n *\n * \\since This function is available since SDL 2.0.8.\n *\n * \\sa SDL_RenderGetMetalLayer\n */\nextern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer);\n\n/**\n * Toggle VSync of the given renderer.\n *\n * \\param renderer The renderer to toggle\n * \\param vsync 1 for on, 0 for off. All other values are reserved\n * \\returns a 0 int on success, or non-zero on failure\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_render_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_revision.h",
    "content": "/* #undef SDL_VENDOR_INFO */\n#define SDL_REVISION_NUMBER 0\n\n#ifdef SDL_VENDOR_INFO\n#define SDL_REVISION \"SDL-2.30.4-no-vcs (\" SDL_VENDOR_INFO \")\"\n#else\n#define SDL_REVISION \"SDL-2.30.4-no-vcs\"\n#endif\n"
  },
  {
    "path": "libraries/sdl2/SDL_rwops.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_rwops.h\n *\n *  This file provides a general interface for SDL to read and write\n *  data streams.  It can easily be extended to files, memory, etc.\n */\n\n#ifndef SDL_rwops_h_\n#define SDL_rwops_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* RWops Types */\n#define SDL_RWOPS_UNKNOWN   0U  /**< Unknown stream type */\n#define SDL_RWOPS_WINFILE   1U  /**< Win32 file */\n#define SDL_RWOPS_STDFILE   2U  /**< Stdio file */\n#define SDL_RWOPS_JNIFILE   3U  /**< Android asset */\n#define SDL_RWOPS_MEMORY    4U  /**< Memory stream */\n#define SDL_RWOPS_MEMORY_RO 5U  /**< Read-Only memory stream */\n\n/**\n * This is the read/write operation structure -- very basic.\n */\ntypedef struct SDL_RWops\n{\n    /**\n     *  Return the size of the file in this rwops, or -1 if unknown\n     */\n    Sint64 (SDLCALL * size) (struct SDL_RWops * context);\n\n    /**\n     *  Seek to \\c offset relative to \\c whence, one of stdio's whence values:\n     *  RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END\n     *\n     *  \\return the final offset in the data stream, or -1 on error.\n     */\n    Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset,\n                             int whence);\n\n    /**\n     *  Read up to \\c maxnum objects each of size \\c size from the data\n     *  stream to the area pointed at by \\c ptr.\n     *\n     *  \\return the number of objects read, or 0 at error or end of file.\n     */\n    size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr,\n                             size_t size, size_t maxnum);\n\n    /**\n     *  Write exactly \\c num objects each of size \\c size from the area\n     *  pointed at by \\c ptr to data stream.\n     *\n     *  \\return the number of objects written, or 0 at error or end of file.\n     */\n    size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr,\n                              size_t size, size_t num);\n\n    /**\n     *  Close and free an allocated SDL_RWops structure.\n     *\n     *  \\return 0 if successful or -1 on write error when flushing data.\n     */\n    int (SDLCALL * close) (struct SDL_RWops * context);\n\n    Uint32 type;\n    union\n    {\n#if defined(__ANDROID__)\n        struct\n        {\n            void *asset;\n        } androidio;\n#elif defined(__WIN32__) || defined(__GDK__)\n        struct\n        {\n            SDL_bool append;\n            void *h;\n            struct\n            {\n                void *data;\n                size_t size;\n                size_t left;\n            } buffer;\n        } windowsio;\n#endif\n\n#ifdef HAVE_STDIO_H\n        struct\n        {\n            SDL_bool autoclose;\n            FILE *fp;\n        } stdio;\n#endif\n        struct\n        {\n            Uint8 *base;\n            Uint8 *here;\n            Uint8 *stop;\n        } mem;\n        struct\n        {\n            void *data1;\n            void *data2;\n        } unknown;\n    } hidden;\n\n} SDL_RWops;\n\n\n/**\n *  \\name RWFrom functions\n *\n *  Functions to create SDL_RWops structures from various data streams.\n */\n/* @{ */\n\n/**\n * Use this function to create a new SDL_RWops structure for reading from\n * and/or writing to a named file.\n *\n * The `mode` string is treated roughly the same as in a call to the C\n * library's fopen(), even if SDL doesn't happen to use fopen() behind the\n * scenes.\n *\n * Available `mode` strings:\n *\n * - \"r\": Open a file for reading. The file must exist.\n * - \"w\": Create an empty file for writing. If a file with the same name\n *   already exists its content is erased and the file is treated as a new\n *   empty file.\n * - \"a\": Append to a file. Writing operations append data at the end of the\n *   file. The file is created if it does not exist.\n * - \"r+\": Open a file for update both reading and writing. The file must\n *   exist.\n * - \"w+\": Create an empty file for both reading and writing. If a file with\n *   the same name already exists its content is erased and the file is\n *   treated as a new empty file.\n * - \"a+\": Open a file for reading and appending. All writing operations are\n *   performed at the end of the file, protecting the previous content to be\n *   overwritten. You can reposition (fseek, rewind) the internal pointer to\n *   anywhere in the file for reading, but writing operations will move it\n *   back to the end of file. The file is created if it does not exist.\n *\n * **NOTE**: In order to open a file as a binary file, a \"b\" character has to\n * be included in the `mode` string. This additional \"b\" character can either\n * be appended at the end of the string (thus making the following compound\n * modes: \"rb\", \"wb\", \"ab\", \"r+b\", \"w+b\", \"a+b\") or be inserted between the\n * letter and the \"+\" sign for the mixed modes (\"rb+\", \"wb+\", \"ab+\").\n * Additional characters may follow the sequence, although they should have no\n * effect. For example, \"t\" is sometimes appended to make explicit the file is\n * a text file.\n *\n * This function supports Unicode filenames, but they must be encoded in UTF-8\n * format, regardless of the underlying operating system.\n *\n * As a fallback, SDL_RWFromFile() will transparently open a matching filename\n * in an Android app's `assets`.\n *\n * Closing the SDL_RWops will close the file handle SDL is holding internally.\n *\n * \\param file a UTF-8 string representing the filename to open\n * \\param mode an ASCII string representing the mode to be used for opening\n *             the file.\n * \\returns a pointer to the SDL_RWops structure that is created, or NULL on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWtell\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file,\n                                                  const char *mode);\n\n#ifdef HAVE_STDIO_H\n\nextern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose);\n\n#else\n\n/**\n * Use this function to create an SDL_RWops structure from a standard I/O file\n * pointer (stdio.h's `FILE*`).\n *\n * This function is not available on Windows, since files opened in an\n * application on that platform cannot be used by a dynamically linked\n * library.\n *\n * On some platforms, the first parameter is a `void*`, on others, it's a\n * `FILE*`, depending on what system headers are available to SDL. It is\n * always intended to be the `FILE*` type from the C runtime's stdio.h.\n *\n * \\param fp the `FILE*` that feeds the SDL_RWops stream\n * \\param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops,\n *                  SDL_FALSE to leave the `FILE*` open when the RWops is\n *                  closed\n * \\returns a pointer to the SDL_RWops structure that is created, or NULL on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWtell\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp,\n                                                SDL_bool autoclose);\n#endif\n\n/**\n * Use this function to prepare a read-write memory buffer for use with\n * SDL_RWops.\n *\n * This function sets up an SDL_RWops struct based on a memory area of a\n * certain size, for both read and write access.\n *\n * This memory buffer is not copied by the RWops; the pointer you provide must\n * remain valid until you close the stream. Closing the stream will not free\n * the original buffer.\n *\n * If you need to make sure the RWops never writes to the memory buffer, you\n * should use SDL_RWFromConstMem() with a read-only buffer of memory instead.\n *\n * \\param mem a pointer to a buffer to feed an SDL_RWops stream\n * \\param size the buffer size, in bytes\n * \\returns a pointer to a new SDL_RWops structure, or NULL if it fails; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWtell\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size);\n\n/**\n * Use this function to prepare a read-only memory buffer for use with RWops.\n *\n * This function sets up an SDL_RWops struct based on a memory area of a\n * certain size. It assumes the memory area is not writable.\n *\n * Attempting to write to this RWops stream will report an error without\n * writing to the memory buffer.\n *\n * This memory buffer is not copied by the RWops; the pointer you provide must\n * remain valid until you close the stream. Closing the stream will not free\n * the original buffer.\n *\n * If you need to write to a memory buffer, you should use SDL_RWFromMem()\n * with a writable buffer of memory instead.\n *\n * \\param mem a pointer to a read-only buffer to feed an SDL_RWops stream\n * \\param size the buffer size, in bytes\n * \\returns a pointer to a new SDL_RWops structure, or NULL if it fails; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWtell\n */\nextern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem,\n                                                      int size);\n\n/* @} *//* RWFrom functions */\n\n\n/**\n * Use this function to allocate an empty, unpopulated SDL_RWops structure.\n *\n * Applications do not need to use this function unless they are providing\n * their own SDL_RWops implementation. If you just need a SDL_RWops to\n * read/write a common data source, you should use the built-in\n * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc.\n *\n * You must free the returned pointer with SDL_FreeRW(). Depending on your\n * operating system and compiler, there may be a difference between the\n * malloc() and free() your program uses and the versions SDL calls\n * internally. Trying to mix the two can cause crashing such as segmentation\n * faults. Since all SDL_RWops must free themselves when their **close**\n * method is called, all SDL_RWops must be allocated through this function, so\n * they can all be freed correctly with SDL_FreeRW().\n *\n * \\returns a pointer to the allocated memory on success, or NULL on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeRW\n */\nextern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void);\n\n/**\n * Use this function to free an SDL_RWops structure allocated by\n * SDL_AllocRW().\n *\n * Applications do not need to use this function unless they are providing\n * their own SDL_RWops implementation. If you just need a SDL_RWops to\n * read/write a common data source, you should use the built-in\n * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and\n * call the **close** method on those SDL_RWops pointers when you are done\n * with them.\n *\n * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is\n * invalid as soon as this function returns. Any extra memory allocated during\n * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must\n * be responsible for managing that memory in their **close** method.\n *\n * \\param area the SDL_RWops structure to be freed\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocRW\n */\nextern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area);\n\n#define RW_SEEK_SET 0       /**< Seek from the beginning of data */\n#define RW_SEEK_CUR 1       /**< Seek relative to current read point */\n#define RW_SEEK_END 2       /**< Seek relative to the end of data */\n\n/**\n * Use this function to get the size of the data stream in an SDL_RWops.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context the SDL_RWops to get the size of the data stream from\n * \\returns the size of the data stream in the SDL_RWops on success, -1 if\n *          unknown or a negative error code on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context);\n\n/**\n * Seek within an SDL_RWops data stream.\n *\n * This function seeks to byte `offset`, relative to `whence`.\n *\n * `whence` may be any of the following values:\n *\n * - `RW_SEEK_SET`: seek from the beginning of data\n * - `RW_SEEK_CUR`: seek relative to current read point\n * - `RW_SEEK_END`: seek relative to the end of data\n *\n * If this stream can not seek, it will return -1.\n *\n * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's\n * `seek` method appropriately, to simplify application development.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context a pointer to an SDL_RWops structure\n * \\param offset an offset in bytes, relative to **whence** location; can be\n *               negative\n * \\param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END`\n * \\returns the final offset in the data stream after the seek or -1 on error.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWtell\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context,\n                                          Sint64 offset, int whence);\n\n/**\n * Determine the current read/write offset in an SDL_RWops data stream.\n *\n * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek`\n * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify\n * application development.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context a SDL_RWops data stream object from which to get the current\n *                offset\n * \\returns the current offset in the stream, or -1 if the information can not\n *          be determined.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context);\n\n/**\n * Read from a data source.\n *\n * This function reads up to `maxnum` objects each of size `size` from the\n * data source to the area pointed at by `ptr`. This function may read less\n * objects than requested. It will return zero when there has been an error or\n * the data stream is completely read.\n *\n * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's\n * `read` method appropriately, to simplify application development.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context a pointer to an SDL_RWops structure\n * \\param ptr a pointer to a buffer to read data into\n * \\param size the size of each object to read, in bytes\n * \\param maxnum the maximum number of objects to be read\n * \\returns the number of objects read, or 0 at error or end of file; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWseek\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context,\n                                          void *ptr, size_t size,\n                                          size_t maxnum);\n\n/**\n * Write to an SDL_RWops data stream.\n *\n * This function writes exactly `num` objects each of size `size` from the\n * area pointed at by `ptr` to the stream. If this fails for any reason, it'll\n * return less than `num` to demonstrate how far the write progressed. On\n * success, it returns `num`.\n *\n * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's\n * `write` method appropriately, to simplify application development.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context a pointer to an SDL_RWops structure\n * \\param ptr a pointer to a buffer containing data to write\n * \\param size the size of an object to write, in bytes\n * \\param num the number of objects to write\n * \\returns the number of objects written, which will be less than **num** on\n *          error; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_RWclose\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n */\nextern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context,\n                                           const void *ptr, size_t size,\n                                           size_t num);\n\n/**\n * Close and free an allocated SDL_RWops structure.\n *\n * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any\n * resources used by the stream and frees the SDL_RWops itself with\n * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to\n * flush to its output (e.g. to disk).\n *\n * Note that if this fails to flush the stream to disk, this function reports\n * an error, but the SDL_RWops is still invalid once this function returns.\n *\n * Prior to SDL 2.0.10, this function was a macro.\n *\n * \\param context SDL_RWops structure to close\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.10.\n *\n * \\sa SDL_RWFromConstMem\n * \\sa SDL_RWFromFile\n * \\sa SDL_RWFromFP\n * \\sa SDL_RWFromMem\n * \\sa SDL_RWread\n * \\sa SDL_RWseek\n * \\sa SDL_RWwrite\n */\nextern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context);\n\n/**\n * Load all the data from an SDL data stream.\n *\n * The data is allocated with a zero byte at the end (null terminated) for\n * convenience. This extra byte is not included in the value reported via\n * `datasize`.\n *\n * The data should be freed with SDL_free().\n *\n * \\param src the SDL_RWops to read all available data from\n * \\param datasize if not NULL, will store the number of bytes read\n * \\param freesrc if non-zero, calls SDL_RWclose() on `src` before returning\n * \\returns the data, or NULL if there was an error.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src,\n                                              size_t *datasize,\n                                              int freesrc);\n\n/**\n * Load all the data from a file path.\n *\n * The data is allocated with a zero byte at the end (null terminated) for\n * convenience. This extra byte is not included in the value reported via\n * `datasize`.\n *\n * The data should be freed with SDL_free().\n *\n * Prior to SDL 2.0.10, this function was a macro wrapping around\n * SDL_LoadFile_RW.\n *\n * \\param file the path to read all available data from\n * \\param datasize if not NULL, will store the number of bytes read\n * \\returns the data, or NULL if there was an error.\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize);\n\n/**\n *  \\name Read endian functions\n *\n *  Read an item of the specified endianness and return in native format.\n */\n/* @{ */\n\n/**\n * Use this function to read a byte from an SDL_RWops.\n *\n * \\param src the SDL_RWops to read from\n * \\returns the read byte on success or 0 on failure; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteU8\n */\nextern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src);\n\n/**\n * Use this function to read 16 bits of little-endian data from an SDL_RWops\n * and return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 16 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadBE16\n */\nextern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src);\n\n/**\n * Use this function to read 16 bits of big-endian data from an SDL_RWops and\n * return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 16 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadLE16\n */\nextern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src);\n\n/**\n * Use this function to read 32 bits of little-endian data from an SDL_RWops\n * and return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 32 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadBE32\n */\nextern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src);\n\n/**\n * Use this function to read 32 bits of big-endian data from an SDL_RWops and\n * return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 32 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadLE32\n */\nextern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src);\n\n/**\n * Use this function to read 64 bits of little-endian data from an SDL_RWops\n * and return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 64 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadBE64\n */\nextern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src);\n\n/**\n * Use this function to read 64 bits of big-endian data from an SDL_RWops and\n * return in native format.\n *\n * SDL byteswaps the data only if necessary, so the data returned will be in\n * the native byte order.\n *\n * \\param src the stream from which to read data\n * \\returns 64 bits of data in the native byte order of the platform.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadLE64\n */\nextern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src);\n/* @} *//* Read endian functions */\n\n/**\n *  \\name Write endian functions\n *\n *  Write an item of native format to the specified endianness.\n */\n/* @{ */\n\n/**\n * Use this function to write a byte to an SDL_RWops.\n *\n * \\param dst the SDL_RWops to write to\n * \\param value the byte value to write\n * \\returns 1 on success or 0 on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ReadU8\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value);\n\n/**\n * Use this function to write 16 bits in native format to a SDL_RWops as\n * little-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in little-endian\n * format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteBE16\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value);\n\n/**\n * Use this function to write 16 bits in native format to a SDL_RWops as\n * big-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in big-endian format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteLE16\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value);\n\n/**\n * Use this function to write 32 bits in native format to a SDL_RWops as\n * little-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in little-endian\n * format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteBE32\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value);\n\n/**\n * Use this function to write 32 bits in native format to a SDL_RWops as\n * big-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in big-endian format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteLE32\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value);\n\n/**\n * Use this function to write 64 bits in native format to a SDL_RWops as\n * little-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in little-endian\n * format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteBE64\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value);\n\n/**\n * Use this function to write 64 bits in native format to a SDL_RWops as\n * big-endian data.\n *\n * SDL byteswaps the data only if necessary, so the application always\n * specifies native format, and the data written will be in big-endian format.\n *\n * \\param dst the stream to which data will be written\n * \\param value the data to be written, in native format\n * \\returns 1 on successful write, 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WriteLE64\n */\nextern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value);\n/* @} *//* Write endian functions */\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_rwops_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_scancode.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_scancode.h\n *\n *  Defines keyboard scancodes.\n */\n\n#ifndef SDL_scancode_h_\n#define SDL_scancode_h_\n\n#include \"SDL_stdinc.h\"\n\n/**\n *  \\brief The SDL keyboard scancode representation.\n *\n *  Values of this type are used to represent keyboard keys, among other places\n *  in the \\link SDL_Keysym::scancode key.keysym.scancode \\endlink field of the\n *  SDL_Event structure.\n *\n *  The values in this enumeration are based on the USB usage page standard:\n *  https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf\n */\ntypedef enum\n{\n    SDL_SCANCODE_UNKNOWN = 0,\n\n    /**\n     *  \\name Usage page 0x07\n     *\n     *  These values are from usage page 0x07 (USB keyboard page).\n     */\n    /* @{ */\n\n    SDL_SCANCODE_A = 4,\n    SDL_SCANCODE_B = 5,\n    SDL_SCANCODE_C = 6,\n    SDL_SCANCODE_D = 7,\n    SDL_SCANCODE_E = 8,\n    SDL_SCANCODE_F = 9,\n    SDL_SCANCODE_G = 10,\n    SDL_SCANCODE_H = 11,\n    SDL_SCANCODE_I = 12,\n    SDL_SCANCODE_J = 13,\n    SDL_SCANCODE_K = 14,\n    SDL_SCANCODE_L = 15,\n    SDL_SCANCODE_M = 16,\n    SDL_SCANCODE_N = 17,\n    SDL_SCANCODE_O = 18,\n    SDL_SCANCODE_P = 19,\n    SDL_SCANCODE_Q = 20,\n    SDL_SCANCODE_R = 21,\n    SDL_SCANCODE_S = 22,\n    SDL_SCANCODE_T = 23,\n    SDL_SCANCODE_U = 24,\n    SDL_SCANCODE_V = 25,\n    SDL_SCANCODE_W = 26,\n    SDL_SCANCODE_X = 27,\n    SDL_SCANCODE_Y = 28,\n    SDL_SCANCODE_Z = 29,\n\n    SDL_SCANCODE_1 = 30,\n    SDL_SCANCODE_2 = 31,\n    SDL_SCANCODE_3 = 32,\n    SDL_SCANCODE_4 = 33,\n    SDL_SCANCODE_5 = 34,\n    SDL_SCANCODE_6 = 35,\n    SDL_SCANCODE_7 = 36,\n    SDL_SCANCODE_8 = 37,\n    SDL_SCANCODE_9 = 38,\n    SDL_SCANCODE_0 = 39,\n\n    SDL_SCANCODE_RETURN = 40,\n    SDL_SCANCODE_ESCAPE = 41,\n    SDL_SCANCODE_BACKSPACE = 42,\n    SDL_SCANCODE_TAB = 43,\n    SDL_SCANCODE_SPACE = 44,\n\n    SDL_SCANCODE_MINUS = 45,\n    SDL_SCANCODE_EQUALS = 46,\n    SDL_SCANCODE_LEFTBRACKET = 47,\n    SDL_SCANCODE_RIGHTBRACKET = 48,\n    SDL_SCANCODE_BACKSLASH = 49, /**< Located at the lower left of the return\n                                  *   key on ISO keyboards and at the right end\n                                  *   of the QWERTY row on ANSI keyboards.\n                                  *   Produces REVERSE SOLIDUS (backslash) and\n                                  *   VERTICAL LINE in a US layout, REVERSE\n                                  *   SOLIDUS and VERTICAL LINE in a UK Mac\n                                  *   layout, NUMBER SIGN and TILDE in a UK\n                                  *   Windows layout, DOLLAR SIGN and POUND SIGN\n                                  *   in a Swiss German layout, NUMBER SIGN and\n                                  *   APOSTROPHE in a German layout, GRAVE\n                                  *   ACCENT and POUND SIGN in a French Mac\n                                  *   layout, and ASTERISK and MICRO SIGN in a\n                                  *   French Windows layout.\n                                  */\n    SDL_SCANCODE_NONUSHASH = 50, /**< ISO USB keyboards actually use this code\n                                  *   instead of 49 for the same key, but all\n                                  *   OSes I've seen treat the two codes\n                                  *   identically. So, as an implementor, unless\n                                  *   your keyboard generates both of those\n                                  *   codes and your OS treats them differently,\n                                  *   you should generate SDL_SCANCODE_BACKSLASH\n                                  *   instead of this code. As a user, you\n                                  *   should not rely on this code because SDL\n                                  *   will never generate it with most (all?)\n                                  *   keyboards.\n                                  */\n    SDL_SCANCODE_SEMICOLON = 51,\n    SDL_SCANCODE_APOSTROPHE = 52,\n    SDL_SCANCODE_GRAVE = 53, /**< Located in the top left corner (on both ANSI\n                              *   and ISO keyboards). Produces GRAVE ACCENT and\n                              *   TILDE in a US Windows layout and in US and UK\n                              *   Mac layouts on ANSI keyboards, GRAVE ACCENT\n                              *   and NOT SIGN in a UK Windows layout, SECTION\n                              *   SIGN and PLUS-MINUS SIGN in US and UK Mac\n                              *   layouts on ISO keyboards, SECTION SIGN and\n                              *   DEGREE SIGN in a Swiss German layout (Mac:\n                              *   only on ISO keyboards), CIRCUMFLEX ACCENT and\n                              *   DEGREE SIGN in a German layout (Mac: only on\n                              *   ISO keyboards), SUPERSCRIPT TWO and TILDE in a\n                              *   French Windows layout, COMMERCIAL AT and\n                              *   NUMBER SIGN in a French Mac layout on ISO\n                              *   keyboards, and LESS-THAN SIGN and GREATER-THAN\n                              *   SIGN in a Swiss German, German, or French Mac\n                              *   layout on ANSI keyboards.\n                              */\n    SDL_SCANCODE_COMMA = 54,\n    SDL_SCANCODE_PERIOD = 55,\n    SDL_SCANCODE_SLASH = 56,\n\n    SDL_SCANCODE_CAPSLOCK = 57,\n\n    SDL_SCANCODE_F1 = 58,\n    SDL_SCANCODE_F2 = 59,\n    SDL_SCANCODE_F3 = 60,\n    SDL_SCANCODE_F4 = 61,\n    SDL_SCANCODE_F5 = 62,\n    SDL_SCANCODE_F6 = 63,\n    SDL_SCANCODE_F7 = 64,\n    SDL_SCANCODE_F8 = 65,\n    SDL_SCANCODE_F9 = 66,\n    SDL_SCANCODE_F10 = 67,\n    SDL_SCANCODE_F11 = 68,\n    SDL_SCANCODE_F12 = 69,\n\n    SDL_SCANCODE_PRINTSCREEN = 70,\n    SDL_SCANCODE_SCROLLLOCK = 71,\n    SDL_SCANCODE_PAUSE = 72,\n    SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but\n                                   does send code 73, not 117) */\n    SDL_SCANCODE_HOME = 74,\n    SDL_SCANCODE_PAGEUP = 75,\n    SDL_SCANCODE_DELETE = 76,\n    SDL_SCANCODE_END = 77,\n    SDL_SCANCODE_PAGEDOWN = 78,\n    SDL_SCANCODE_RIGHT = 79,\n    SDL_SCANCODE_LEFT = 80,\n    SDL_SCANCODE_DOWN = 81,\n    SDL_SCANCODE_UP = 82,\n\n    SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards\n                                     */\n    SDL_SCANCODE_KP_DIVIDE = 84,\n    SDL_SCANCODE_KP_MULTIPLY = 85,\n    SDL_SCANCODE_KP_MINUS = 86,\n    SDL_SCANCODE_KP_PLUS = 87,\n    SDL_SCANCODE_KP_ENTER = 88,\n    SDL_SCANCODE_KP_1 = 89,\n    SDL_SCANCODE_KP_2 = 90,\n    SDL_SCANCODE_KP_3 = 91,\n    SDL_SCANCODE_KP_4 = 92,\n    SDL_SCANCODE_KP_5 = 93,\n    SDL_SCANCODE_KP_6 = 94,\n    SDL_SCANCODE_KP_7 = 95,\n    SDL_SCANCODE_KP_8 = 96,\n    SDL_SCANCODE_KP_9 = 97,\n    SDL_SCANCODE_KP_0 = 98,\n    SDL_SCANCODE_KP_PERIOD = 99,\n\n    SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO\n                                        *   keyboards have over ANSI ones,\n                                        *   located between left shift and Y.\n                                        *   Produces GRAVE ACCENT and TILDE in a\n                                        *   US or UK Mac layout, REVERSE SOLIDUS\n                                        *   (backslash) and VERTICAL LINE in a\n                                        *   US or UK Windows layout, and\n                                        *   LESS-THAN SIGN and GREATER-THAN SIGN\n                                        *   in a Swiss German, German, or French\n                                        *   layout. */\n    SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */\n    SDL_SCANCODE_POWER = 102, /**< The USB document says this is a status flag,\n                               *   not a physical key - but some Mac keyboards\n                               *   do have a power key. */\n    SDL_SCANCODE_KP_EQUALS = 103,\n    SDL_SCANCODE_F13 = 104,\n    SDL_SCANCODE_F14 = 105,\n    SDL_SCANCODE_F15 = 106,\n    SDL_SCANCODE_F16 = 107,\n    SDL_SCANCODE_F17 = 108,\n    SDL_SCANCODE_F18 = 109,\n    SDL_SCANCODE_F19 = 110,\n    SDL_SCANCODE_F20 = 111,\n    SDL_SCANCODE_F21 = 112,\n    SDL_SCANCODE_F22 = 113,\n    SDL_SCANCODE_F23 = 114,\n    SDL_SCANCODE_F24 = 115,\n    SDL_SCANCODE_EXECUTE = 116,\n    SDL_SCANCODE_HELP = 117,    /**< AL Integrated Help Center */\n    SDL_SCANCODE_MENU = 118,    /**< Menu (show menu) */\n    SDL_SCANCODE_SELECT = 119,\n    SDL_SCANCODE_STOP = 120,    /**< AC Stop */\n    SDL_SCANCODE_AGAIN = 121,   /**< AC Redo/Repeat */\n    SDL_SCANCODE_UNDO = 122,    /**< AC Undo */\n    SDL_SCANCODE_CUT = 123,     /**< AC Cut */\n    SDL_SCANCODE_COPY = 124,    /**< AC Copy */\n    SDL_SCANCODE_PASTE = 125,   /**< AC Paste */\n    SDL_SCANCODE_FIND = 126,    /**< AC Find */\n    SDL_SCANCODE_MUTE = 127,\n    SDL_SCANCODE_VOLUMEUP = 128,\n    SDL_SCANCODE_VOLUMEDOWN = 129,\n/* not sure whether there's a reason to enable these */\n/*     SDL_SCANCODE_LOCKINGCAPSLOCK = 130,  */\n/*     SDL_SCANCODE_LOCKINGNUMLOCK = 131, */\n/*     SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */\n    SDL_SCANCODE_KP_COMMA = 133,\n    SDL_SCANCODE_KP_EQUALSAS400 = 134,\n\n    SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see\n                                            footnotes in USB doc */\n    SDL_SCANCODE_INTERNATIONAL2 = 136,\n    SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */\n    SDL_SCANCODE_INTERNATIONAL4 = 138,\n    SDL_SCANCODE_INTERNATIONAL5 = 139,\n    SDL_SCANCODE_INTERNATIONAL6 = 140,\n    SDL_SCANCODE_INTERNATIONAL7 = 141,\n    SDL_SCANCODE_INTERNATIONAL8 = 142,\n    SDL_SCANCODE_INTERNATIONAL9 = 143,\n    SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */\n    SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */\n    SDL_SCANCODE_LANG3 = 146, /**< Katakana */\n    SDL_SCANCODE_LANG4 = 147, /**< Hiragana */\n    SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */\n    SDL_SCANCODE_LANG6 = 149, /**< reserved */\n    SDL_SCANCODE_LANG7 = 150, /**< reserved */\n    SDL_SCANCODE_LANG8 = 151, /**< reserved */\n    SDL_SCANCODE_LANG9 = 152, /**< reserved */\n\n    SDL_SCANCODE_ALTERASE = 153,    /**< Erase-Eaze */\n    SDL_SCANCODE_SYSREQ = 154,\n    SDL_SCANCODE_CANCEL = 155,      /**< AC Cancel */\n    SDL_SCANCODE_CLEAR = 156,\n    SDL_SCANCODE_PRIOR = 157,\n    SDL_SCANCODE_RETURN2 = 158,\n    SDL_SCANCODE_SEPARATOR = 159,\n    SDL_SCANCODE_OUT = 160,\n    SDL_SCANCODE_OPER = 161,\n    SDL_SCANCODE_CLEARAGAIN = 162,\n    SDL_SCANCODE_CRSEL = 163,\n    SDL_SCANCODE_EXSEL = 164,\n\n    SDL_SCANCODE_KP_00 = 176,\n    SDL_SCANCODE_KP_000 = 177,\n    SDL_SCANCODE_THOUSANDSSEPARATOR = 178,\n    SDL_SCANCODE_DECIMALSEPARATOR = 179,\n    SDL_SCANCODE_CURRENCYUNIT = 180,\n    SDL_SCANCODE_CURRENCYSUBUNIT = 181,\n    SDL_SCANCODE_KP_LEFTPAREN = 182,\n    SDL_SCANCODE_KP_RIGHTPAREN = 183,\n    SDL_SCANCODE_KP_LEFTBRACE = 184,\n    SDL_SCANCODE_KP_RIGHTBRACE = 185,\n    SDL_SCANCODE_KP_TAB = 186,\n    SDL_SCANCODE_KP_BACKSPACE = 187,\n    SDL_SCANCODE_KP_A = 188,\n    SDL_SCANCODE_KP_B = 189,\n    SDL_SCANCODE_KP_C = 190,\n    SDL_SCANCODE_KP_D = 191,\n    SDL_SCANCODE_KP_E = 192,\n    SDL_SCANCODE_KP_F = 193,\n    SDL_SCANCODE_KP_XOR = 194,\n    SDL_SCANCODE_KP_POWER = 195,\n    SDL_SCANCODE_KP_PERCENT = 196,\n    SDL_SCANCODE_KP_LESS = 197,\n    SDL_SCANCODE_KP_GREATER = 198,\n    SDL_SCANCODE_KP_AMPERSAND = 199,\n    SDL_SCANCODE_KP_DBLAMPERSAND = 200,\n    SDL_SCANCODE_KP_VERTICALBAR = 201,\n    SDL_SCANCODE_KP_DBLVERTICALBAR = 202,\n    SDL_SCANCODE_KP_COLON = 203,\n    SDL_SCANCODE_KP_HASH = 204,\n    SDL_SCANCODE_KP_SPACE = 205,\n    SDL_SCANCODE_KP_AT = 206,\n    SDL_SCANCODE_KP_EXCLAM = 207,\n    SDL_SCANCODE_KP_MEMSTORE = 208,\n    SDL_SCANCODE_KP_MEMRECALL = 209,\n    SDL_SCANCODE_KP_MEMCLEAR = 210,\n    SDL_SCANCODE_KP_MEMADD = 211,\n    SDL_SCANCODE_KP_MEMSUBTRACT = 212,\n    SDL_SCANCODE_KP_MEMMULTIPLY = 213,\n    SDL_SCANCODE_KP_MEMDIVIDE = 214,\n    SDL_SCANCODE_KP_PLUSMINUS = 215,\n    SDL_SCANCODE_KP_CLEAR = 216,\n    SDL_SCANCODE_KP_CLEARENTRY = 217,\n    SDL_SCANCODE_KP_BINARY = 218,\n    SDL_SCANCODE_KP_OCTAL = 219,\n    SDL_SCANCODE_KP_DECIMAL = 220,\n    SDL_SCANCODE_KP_HEXADECIMAL = 221,\n\n    SDL_SCANCODE_LCTRL = 224,\n    SDL_SCANCODE_LSHIFT = 225,\n    SDL_SCANCODE_LALT = 226, /**< alt, option */\n    SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */\n    SDL_SCANCODE_RCTRL = 228,\n    SDL_SCANCODE_RSHIFT = 229,\n    SDL_SCANCODE_RALT = 230, /**< alt gr, option */\n    SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */\n\n    SDL_SCANCODE_MODE = 257,    /**< I'm not sure if this is really not covered\n                                 *   by any of the above, but since there's a\n                                 *   special KMOD_MODE for it I'm adding it here\n                                 */\n\n    /* @} *//* Usage page 0x07 */\n\n    /**\n     *  \\name Usage page 0x0C\n     *\n     *  These values are mapped from usage page 0x0C (USB consumer page).\n     *  See https://usb.org/sites/default/files/hut1_2.pdf\n     *\n     *  There are way more keys in the spec than we can represent in the\n     *  current scancode range, so pick the ones that commonly come up in\n     *  real world usage.\n     */\n    /* @{ */\n\n    SDL_SCANCODE_AUDIONEXT = 258,\n    SDL_SCANCODE_AUDIOPREV = 259,\n    SDL_SCANCODE_AUDIOSTOP = 260,\n    SDL_SCANCODE_AUDIOPLAY = 261,\n    SDL_SCANCODE_AUDIOMUTE = 262,\n    SDL_SCANCODE_MEDIASELECT = 263,\n    SDL_SCANCODE_WWW = 264,             /**< AL Internet Browser */\n    SDL_SCANCODE_MAIL = 265,\n    SDL_SCANCODE_CALCULATOR = 266,      /**< AL Calculator */\n    SDL_SCANCODE_COMPUTER = 267,\n    SDL_SCANCODE_AC_SEARCH = 268,       /**< AC Search */\n    SDL_SCANCODE_AC_HOME = 269,         /**< AC Home */\n    SDL_SCANCODE_AC_BACK = 270,         /**< AC Back */\n    SDL_SCANCODE_AC_FORWARD = 271,      /**< AC Forward */\n    SDL_SCANCODE_AC_STOP = 272,         /**< AC Stop */\n    SDL_SCANCODE_AC_REFRESH = 273,      /**< AC Refresh */\n    SDL_SCANCODE_AC_BOOKMARKS = 274,    /**< AC Bookmarks */\n\n    /* @} *//* Usage page 0x0C */\n\n    /**\n     *  \\name Walther keys\n     *\n     *  These are values that Christian Walther added (for mac keyboard?).\n     */\n    /* @{ */\n\n    SDL_SCANCODE_BRIGHTNESSDOWN = 275,\n    SDL_SCANCODE_BRIGHTNESSUP = 276,\n    SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display\n                                           switch, video mode switch */\n    SDL_SCANCODE_KBDILLUMTOGGLE = 278,\n    SDL_SCANCODE_KBDILLUMDOWN = 279,\n    SDL_SCANCODE_KBDILLUMUP = 280,\n    SDL_SCANCODE_EJECT = 281,\n    SDL_SCANCODE_SLEEP = 282,           /**< SC System Sleep */\n\n    SDL_SCANCODE_APP1 = 283,\n    SDL_SCANCODE_APP2 = 284,\n\n    /* @} *//* Walther keys */\n\n    /**\n     *  \\name Usage page 0x0C (additional media keys)\n     *\n     *  These values are mapped from usage page 0x0C (USB consumer page).\n     */\n    /* @{ */\n\n    SDL_SCANCODE_AUDIOREWIND = 285,\n    SDL_SCANCODE_AUDIOFASTFORWARD = 286,\n\n    /* @} *//* Usage page 0x0C (additional media keys) */\n\n    /**\n     *  \\name Mobile keys\n     *\n     *  These are values that are often used on mobile phones.\n     */\n    /* @{ */\n\n    SDL_SCANCODE_SOFTLEFT = 287, /**< Usually situated below the display on phones and\n                                      used as a multi-function feature key for selecting\n                                      a software defined function shown on the bottom left\n                                      of the display. */\n    SDL_SCANCODE_SOFTRIGHT = 288, /**< Usually situated below the display on phones and\n                                       used as a multi-function feature key for selecting\n                                       a software defined function shown on the bottom right\n                                       of the display. */\n    SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */\n    SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */\n\n    /* @} *//* Mobile keys */\n\n    /* Add any other keys here. */\n\n    SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes\n                                 for array bounds */\n} SDL_Scancode;\n\n#endif /* SDL_scancode_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_sensor.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_sensor.h\n *\n *  Include file for SDL sensor event handling\n *\n */\n\n#ifndef SDL_sensor_h_\n#define SDL_sensor_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\n/* *INDENT-OFF* */\nextern \"C\" {\n/* *INDENT-ON* */\n#endif\n\n/**\n *  \\brief SDL_sensor.h\n *\n *  In order to use these functions, SDL_Init() must have been called\n *  with the ::SDL_INIT_SENSOR flag.  This causes SDL to scan the system\n *  for sensors, and load appropriate drivers.\n */\n\nstruct _SDL_Sensor;\ntypedef struct _SDL_Sensor SDL_Sensor;\n\n/**\n * This is a unique ID for a sensor for the time it is connected to the system,\n * and is never reused for the lifetime of the application.\n *\n * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.\n */\ntypedef Sint32 SDL_SensorID;\n\n/* The different sensors defined by SDL\n *\n * Additional sensors may be available, using platform dependent semantics.\n *\n * Hare are the additional Android sensors:\n * https://developer.android.com/reference/android/hardware/SensorEvent.html#values\n */\ntypedef enum\n{\n    SDL_SENSOR_INVALID = -1,    /**< Returned for an invalid sensor */\n    SDL_SENSOR_UNKNOWN,         /**< Unknown sensor type */\n    SDL_SENSOR_ACCEL,           /**< Accelerometer */\n    SDL_SENSOR_GYRO,            /**< Gyroscope */\n    SDL_SENSOR_ACCEL_L,         /**< Accelerometer for left Joy-Con controller and Wii nunchuk */\n    SDL_SENSOR_GYRO_L,          /**< Gyroscope for left Joy-Con controller */\n    SDL_SENSOR_ACCEL_R,         /**< Accelerometer for right Joy-Con controller */\n    SDL_SENSOR_GYRO_R           /**< Gyroscope for right Joy-Con controller */\n} SDL_SensorType;\n\n/**\n * Accelerometer sensor\n *\n * The accelerometer returns the current acceleration in SI meters per\n * second squared. This measurement includes the force of gravity, so\n * a device at rest will have an value of SDL_STANDARD_GRAVITY away\n * from the center of the earth, which is a positive Y value.\n *\n * values[0]: Acceleration on the x axis\n * values[1]: Acceleration on the y axis\n * values[2]: Acceleration on the z axis\n *\n * For phones held in portrait mode and game controllers held in front of you,\n * the axes are defined as follows:\n * -X ... +X : left ... right\n * -Y ... +Y : bottom ... top\n * -Z ... +Z : farther ... closer\n * \n * The axis data is not changed when the phone is rotated.\n *\n * \\sa SDL_GetDisplayOrientation()\n */\n#define SDL_STANDARD_GRAVITY    9.80665f\n\n/**\n * Gyroscope sensor\n *\n * The gyroscope returns the current rate of rotation in radians per second.\n * The rotation is positive in the counter-clockwise direction. That is,\n * an observer looking from a positive location on one of the axes would\n * see positive rotation on that axis when it appeared to be rotating\n * counter-clockwise.\n *\n * values[0]: Angular speed around the x axis (pitch)\n * values[1]: Angular speed around the y axis (yaw)\n * values[2]: Angular speed around the z axis (roll)\n *\n * For phones held in portrait mode and game controllers held in front of you,\n * the axes are defined as follows:\n * -X ... +X : left ... right\n * -Y ... +Y : bottom ... top\n * -Z ... +Z : farther ... closer\n * \n * The axis data is not changed when the phone or controller is rotated.\n *\n * \\sa SDL_GetDisplayOrientation()\n */\n\n/* Function prototypes */\n\n/**\n * Locking for multi-threaded access to the sensor API\n *\n * If you are using the sensor API or handling events from multiple threads\n * you should use these locking functions to protect access to the sensors.\n *\n * In particular, you are guaranteed that the sensor list won't change, so the\n * API functions that take a sensor index will be valid, and sensor events\n * will not be delivered.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC void SDLCALL SDL_LockSensors(void);\nextern DECLSPEC void SDLCALL SDL_UnlockSensors(void);\n\n/**\n * Count the number of sensors attached to the system right now.\n *\n * \\returns the number of sensors detected.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_NumSensors(void);\n\n/**\n * Get the implementation dependent name of a sensor.\n *\n * \\param device_index The sensor to obtain name from\n * \\returns the sensor name, or NULL if `device_index` is out of range.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);\n\n/**\n * Get the type of a sensor.\n *\n * \\param device_index The sensor to get the type from\n * \\returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is\n *          out of range.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);\n\n/**\n * Get the platform dependent type of a sensor.\n *\n * \\param device_index The sensor to check\n * \\returns the sensor platform dependent type, or -1 if `device_index` is out\n *          of range.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);\n\n/**\n * Get the instance ID of a sensor.\n *\n * \\param device_index The sensor to get instance id from\n * \\returns the sensor instance ID, or -1 if `device_index` is out of range.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);\n\n/**\n * Open a sensor for use.\n *\n * \\param device_index The sensor to open\n * \\returns an SDL_Sensor sensor object, or NULL if an error occurred.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);\n\n/**\n * Return the SDL_Sensor associated with an instance id.\n *\n * \\param instance_id The sensor from instance id\n * \\returns an SDL_Sensor object.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);\n\n/**\n * Get the implementation dependent name of a sensor\n *\n * \\param sensor The SDL_Sensor object\n * \\returns the sensor name, or NULL if `sensor` is NULL.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);\n\n/**\n * Get the type of a sensor.\n *\n * \\param sensor The SDL_Sensor object to inspect\n * \\returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is\n *          NULL.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);\n\n/**\n * Get the platform dependent type of a sensor.\n *\n * \\param sensor The SDL_Sensor object to inspect\n * \\returns the sensor platform dependent type, or -1 if `sensor` is NULL.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);\n\n/**\n * Get the instance ID of a sensor.\n *\n * \\param sensor The SDL_Sensor object to inspect\n * \\returns the sensor instance ID, or -1 if `sensor` is NULL.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);\n\n/**\n * Get the current state of an opened sensor.\n *\n * The number of values and interpretation of the data is sensor dependent.\n *\n * \\param sensor The SDL_Sensor object to query\n * \\param data A pointer filled with the current sensor state\n * \\param num_values The number of values to write to data\n * \\returns 0 or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values);\n\n/**\n * Get the current state of an opened sensor with the timestamp of the last\n * update.\n *\n * The number of values and interpretation of the data is sensor dependent.\n *\n * \\param sensor The SDL_Sensor object to query\n * \\param timestamp A pointer filled with the timestamp in microseconds of the\n *                  current sensor reading if available, or 0 if not\n * \\param data A pointer filled with the current sensor state\n * \\param num_values The number of values to write to data\n * \\returns 0 or -1 if an error occurred.\n *\n * \\since This function is available since SDL 2.26.0.\n */\nextern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values);\n\n/**\n * Close a sensor previously opened with SDL_SensorOpen().\n *\n * \\param sensor The SDL_Sensor object to close\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor);\n\n/**\n * Update the current state of the open sensors.\n *\n * This is called automatically by the event loop if sensor events are\n * enabled.\n *\n * This needs to be called from the thread that initialized the sensor\n * subsystem.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC void SDLCALL SDL_SensorUpdate(void);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n/* *INDENT-OFF* */\n}\n/* *INDENT-ON* */\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_sensor_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_shape.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_shape_h_\n#define SDL_shape_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_pixels.h\"\n#include \"SDL_rect.h\"\n#include \"SDL_surface.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/** \\file SDL_shape.h\n *\n * Header file for the shaped window API.\n */\n\n#define SDL_NONSHAPEABLE_WINDOW -1\n#define SDL_INVALID_SHAPE_ARGUMENT -2\n#define SDL_WINDOW_LACKS_SHAPE -3\n\n/**\n * Create a window that can be shaped with the specified position, dimensions,\n * and flags.\n *\n * \\param title The title of the window, in UTF-8 encoding.\n * \\param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or\n *          ::SDL_WINDOWPOS_UNDEFINED.\n * \\param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or\n *          ::SDL_WINDOWPOS_UNDEFINED.\n * \\param w The width of the window.\n * \\param h The height of the window.\n * \\param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with\n *              any of the following: ::SDL_WINDOW_OPENGL,\n *              ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN,\n *              ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,\n *              ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set,\n *              and ::SDL_WINDOW_FULLSCREEN is always unset.\n * \\return the window created, or NULL if window creation failed.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DestroyWindow\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);\n\n/**\n * Return whether the given window is a shaped window.\n *\n * \\param window The window to query for being shaped.\n * \\return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if\n *         the window is unshaped or NULL.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateShapedWindow\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);\n\n/** \\brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */\ntypedef enum {\n    /** \\brief The default mode, a binarized alpha cutoff of 1. */\n    ShapeModeDefault,\n    /** \\brief A binarized alpha cutoff with a given integer value. */\n    ShapeModeBinarizeAlpha,\n    /** \\brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */\n    ShapeModeReverseBinarizeAlpha,\n    /** \\brief A color key is applied. */\n    ShapeModeColorKey\n} WindowShapeMode;\n\n#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)\n\n/** \\brief A union containing parameters for shaped windows. */\ntypedef union {\n    /** \\brief A cutoff alpha value for binarization of the window shape's alpha channel. */\n    Uint8 binarizationCutoff;\n    SDL_Color colorKey;\n} SDL_WindowShapeParams;\n\n/** \\brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */\ntypedef struct SDL_WindowShapeMode {\n    /** \\brief The mode of these window-shape parameters. */\n    WindowShapeMode mode;\n    /** \\brief Window-shape parameters. */\n    SDL_WindowShapeParams parameters;\n} SDL_WindowShapeMode;\n\n/**\n * Set the shape and parameters of a shaped window.\n *\n * \\param window The shaped window whose parameters should be set.\n * \\param shape A surface encoding the desired shape for the window.\n * \\param shape_mode The parameters to set for the shaped window.\n * \\return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape\n *         argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does\n *         not reference a valid shaped window.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WindowShapeMode\n * \\sa SDL_GetShapedWindowMode\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);\n\n/**\n * Get the shape parameters of a shaped window.\n *\n * \\param window The shaped window whose parameters should be retrieved.\n * \\param shape_mode An empty shape-mode structure to fill, or NULL to check\n *                   whether the window has a shape.\n * \\return 0 if the window has a shape and, provided shape_mode was not NULL,\n *         shape_mode has been filled with the mode data,\n *         SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped\n *         window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a\n *         shapeable window currently lacking a shape.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_WindowShapeMode\n * \\sa SDL_SetWindowShape\n */\nextern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_shape_h_ */\n"
  },
  {
    "path": "libraries/sdl2/SDL_stdinc.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_stdinc.h\n *\n *  This is a general header that includes C language support.\n */\n\n#ifndef SDL_stdinc_h_\n#define SDL_stdinc_h_\n\n#include \"SDL_config.h\"\n\n#ifdef HAVE_SYS_TYPES_H\n#include <sys/types.h>\n#endif\n#ifdef HAVE_STDIO_H\n#include <stdio.h>\n#endif\n#if defined(STDC_HEADERS)\n# include <stdlib.h>\n# include <stddef.h>\n# include <stdarg.h>\n#else\n# if defined(HAVE_STDLIB_H)\n#  include <stdlib.h>\n# elif defined(HAVE_MALLOC_H)\n#  include <malloc.h>\n# endif\n# if defined(HAVE_STDDEF_H)\n#  include <stddef.h>\n# endif\n# if defined(HAVE_STDARG_H)\n#  include <stdarg.h>\n# endif\n#endif\n#ifdef HAVE_STRING_H\n# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)\n#  include <memory.h>\n# endif\n# include <string.h>\n#endif\n#ifdef HAVE_STRINGS_H\n# include <strings.h>\n#endif\n#ifdef HAVE_WCHAR_H\n# include <wchar.h>\n#endif\n#if defined(HAVE_INTTYPES_H)\n# include <inttypes.h>\n#elif defined(HAVE_STDINT_H)\n# include <stdint.h>\n#endif\n#ifdef HAVE_CTYPE_H\n# include <ctype.h>\n#endif\n#ifdef HAVE_MATH_H\n# if defined(_MSC_VER)\n/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on\n   Visual Studio.  See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx\n   for more information.\n*/\n#  ifndef _USE_MATH_DEFINES\n#    define _USE_MATH_DEFINES\n#  endif\n# endif\n# include <math.h>\n#endif\n#ifdef HAVE_FLOAT_H\n# include <float.h>\n#endif\n#if defined(HAVE_ALLOCA) && !defined(alloca)\n# if defined(HAVE_ALLOCA_H)\n#  include <alloca.h>\n# elif defined(__GNUC__)\n#  define alloca __builtin_alloca\n# elif defined(_MSC_VER)\n#  include <malloc.h>\n#  define alloca _alloca\n# elif defined(__WATCOMC__)\n#  include <malloc.h>\n# elif defined(__BORLANDC__)\n#  include <malloc.h>\n# elif defined(__DMC__)\n#  include <stdlib.h>\n# elif defined(__AIX__)\n#pragma alloca\n# elif defined(__MRC__)\nvoid *alloca(unsigned);\n# else\nvoid *alloca(size_t);\n# endif\n#endif\n\n#ifdef SIZE_MAX\n# define SDL_SIZE_MAX SIZE_MAX\n#else\n# define SDL_SIZE_MAX ((size_t) -1)\n#endif\n\n/**\n * Check if the compiler supports a given builtin.\n * Supported by virtually all clang versions and recent gcc. Use this\n * instead of checking the clang version if possible.\n */\n#ifdef __has_builtin\n#define _SDL_HAS_BUILTIN(x) __has_builtin(x)\n#else\n#define _SDL_HAS_BUILTIN(x) 0\n#endif\n\n/**\n *  The number of elements in an array.\n */\n#define SDL_arraysize(array)    (sizeof(array)/sizeof(array[0]))\n#define SDL_TABLESIZE(table)    SDL_arraysize(table)\n\n/**\n *  Macro useful for building other macros with strings in them\n *\n *  e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) \": \" X \"\\n\")\n */\n#define SDL_STRINGIFY_ARG(arg)  #arg\n\n/**\n *  \\name Cast operators\n *\n *  Use proper C++ casts when compiled as C++ to be compatible with the option\n *  -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).\n */\n/* @{ */\n#ifdef __cplusplus\n#define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)\n#define SDL_static_cast(type, expression) static_cast<type>(expression)\n#define SDL_const_cast(type, expression) const_cast<type>(expression)\n#else\n#define SDL_reinterpret_cast(type, expression) ((type)(expression))\n#define SDL_static_cast(type, expression) ((type)(expression))\n#define SDL_const_cast(type, expression) ((type)(expression))\n#endif\n/* @} *//* Cast operators */\n\n/* Define a four character code as a Uint32 */\n#define SDL_FOURCC(A, B, C, D) \\\n    ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \\\n     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \\\n     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \\\n     (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))\n\n/**\n *  \\name Basic data types\n */\n/* @{ */\n\n#ifdef __CC_ARM\n/* ARM's compiler throws warnings if we use an enum: like \"SDL_bool x = a < b;\" */\n#define SDL_FALSE 0\n#define SDL_TRUE 1\ntypedef int SDL_bool;\n#else\ntypedef enum\n{\n    SDL_FALSE = 0,\n    SDL_TRUE = 1\n} SDL_bool;\n#endif\n\n/**\n * \\brief A signed 8-bit integer type.\n */\n#define SDL_MAX_SINT8   ((Sint8)0x7F)           /* 127 */\n#define SDL_MIN_SINT8   ((Sint8)(~0x7F))        /* -128 */\ntypedef int8_t Sint8;\n/**\n * \\brief An unsigned 8-bit integer type.\n */\n#define SDL_MAX_UINT8   ((Uint8)0xFF)           /* 255 */\n#define SDL_MIN_UINT8   ((Uint8)0x00)           /* 0 */\ntypedef uint8_t Uint8;\n/**\n * \\brief A signed 16-bit integer type.\n */\n#define SDL_MAX_SINT16  ((Sint16)0x7FFF)        /* 32767 */\n#define SDL_MIN_SINT16  ((Sint16)(~0x7FFF))     /* -32768 */\ntypedef int16_t Sint16;\n/**\n * \\brief An unsigned 16-bit integer type.\n */\n#define SDL_MAX_UINT16  ((Uint16)0xFFFF)        /* 65535 */\n#define SDL_MIN_UINT16  ((Uint16)0x0000)        /* 0 */\ntypedef uint16_t Uint16;\n/**\n * \\brief A signed 32-bit integer type.\n */\n#define SDL_MAX_SINT32  ((Sint32)0x7FFFFFFF)    /* 2147483647 */\n#define SDL_MIN_SINT32  ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */\ntypedef int32_t Sint32;\n/**\n * \\brief An unsigned 32-bit integer type.\n */\n#define SDL_MAX_UINT32  ((Uint32)0xFFFFFFFFu)   /* 4294967295 */\n#define SDL_MIN_UINT32  ((Uint32)0x00000000)    /* 0 */\ntypedef uint32_t Uint32;\n\n/**\n * \\brief A signed 64-bit integer type.\n */\n#define SDL_MAX_SINT64  ((Sint64)0x7FFFFFFFFFFFFFFFll)      /* 9223372036854775807 */\n#define SDL_MIN_SINT64  ((Sint64)(~0x7FFFFFFFFFFFFFFFll))   /* -9223372036854775808 */\ntypedef int64_t Sint64;\n/**\n * \\brief An unsigned 64-bit integer type.\n */\n#define SDL_MAX_UINT64  ((Uint64)0xFFFFFFFFFFFFFFFFull)     /* 18446744073709551615 */\n#define SDL_MIN_UINT64  ((Uint64)(0x0000000000000000ull))   /* 0 */\ntypedef uint64_t Uint64;\n\n/* @} *//* Basic data types */\n\n/**\n *  \\name Floating-point constants\n */\n/* @{ */\n\n#ifdef FLT_EPSILON\n#define SDL_FLT_EPSILON FLT_EPSILON\n#else\n#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */\n#endif\n\n/* @} *//* Floating-point constants */\n\n/* Make sure we have macros for printing width-based integers.\n * <stdint.h> should define these but this is not true all platforms.\n * (for example win32) */\n#ifndef SDL_PRIs64\n#if defined(__WIN32__) || defined(__GDK__)\n#define SDL_PRIs64 \"I64d\"\n#elif defined(PRIs64)\n#define SDL_PRIs64 PRIs64\n#elif defined(__LP64__) && !defined(__APPLE__)\n#define SDL_PRIs64 \"ld\"\n#else\n#define SDL_PRIs64 \"lld\"\n#endif\n#endif\n#ifndef SDL_PRIu64\n#if defined(__WIN32__) || defined(__GDK__)\n#define SDL_PRIu64 \"I64u\"\n#elif defined(PRIu64)\n#define SDL_PRIu64 PRIu64\n#elif defined(__LP64__) && !defined(__APPLE__)\n#define SDL_PRIu64 \"lu\"\n#else\n#define SDL_PRIu64 \"llu\"\n#endif\n#endif\n#ifndef SDL_PRIx64\n#if defined(__WIN32__) || defined(__GDK__)\n#define SDL_PRIx64 \"I64x\"\n#elif defined(PRIx64)\n#define SDL_PRIx64 PRIx64\n#elif defined(__LP64__) && !defined(__APPLE__)\n#define SDL_PRIx64 \"lx\"\n#else\n#define SDL_PRIx64 \"llx\"\n#endif\n#endif\n#ifndef SDL_PRIX64\n#if defined(__WIN32__) || defined(__GDK__)\n#define SDL_PRIX64 \"I64X\"\n#elif defined(PRIX64)\n#define SDL_PRIX64 PRIX64\n#elif defined(__LP64__) && !defined(__APPLE__)\n#define SDL_PRIX64 \"lX\"\n#else\n#define SDL_PRIX64 \"llX\"\n#endif\n#endif\n#ifndef SDL_PRIs32\n#ifdef PRId32\n#define SDL_PRIs32 PRId32\n#else\n#define SDL_PRIs32 \"d\"\n#endif\n#endif\n#ifndef SDL_PRIu32\n#ifdef PRIu32\n#define SDL_PRIu32 PRIu32\n#else\n#define SDL_PRIu32 \"u\"\n#endif\n#endif\n#ifndef SDL_PRIx32\n#ifdef PRIx32\n#define SDL_PRIx32 PRIx32\n#else\n#define SDL_PRIx32 \"x\"\n#endif\n#endif\n#ifndef SDL_PRIX32\n#ifdef PRIX32\n#define SDL_PRIX32 PRIX32\n#else\n#define SDL_PRIX32 \"X\"\n#endif\n#endif\n\n/* Annotations to help code analysis tools */\n#ifdef SDL_DISABLE_ANALYZE_MACROS\n#define SDL_IN_BYTECAP(x)\n#define SDL_INOUT_Z_CAP(x)\n#define SDL_OUT_Z_CAP(x)\n#define SDL_OUT_CAP(x)\n#define SDL_OUT_BYTECAP(x)\n#define SDL_OUT_Z_BYTECAP(x)\n#define SDL_PRINTF_FORMAT_STRING\n#define SDL_SCANF_FORMAT_STRING\n#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )\n#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )\n#define SDL_SCANF_VARARG_FUNC( fmtargnumber )\n#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )\n#else\n#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */\n#include <sal.h>\n\n#define SDL_IN_BYTECAP(x) _In_bytecount_(x)\n#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)\n#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)\n#define SDL_OUT_CAP(x) _Out_cap_(x)\n#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)\n#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)\n\n#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_\n#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_\n#else\n#define SDL_IN_BYTECAP(x)\n#define SDL_INOUT_Z_CAP(x)\n#define SDL_OUT_Z_CAP(x)\n#define SDL_OUT_CAP(x)\n#define SDL_OUT_BYTECAP(x)\n#define SDL_OUT_Z_BYTECAP(x)\n#define SDL_PRINTF_FORMAT_STRING\n#define SDL_SCANF_FORMAT_STRING\n#endif\n#if defined(__GNUC__)\n#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))\n#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __printf__, fmtargnumber, 0 )))\n#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))\n#define SDL_SCANF_VARARG_FUNCV( fmtargnumber ) __attribute__(( format( __scanf__, fmtargnumber, 0 )))\n#else\n#define SDL_PRINTF_VARARG_FUNC( fmtargnumber )\n#define SDL_PRINTF_VARARG_FUNCV( fmtargnumber )\n#define SDL_SCANF_VARARG_FUNC( fmtargnumber )\n#define SDL_SCANF_VARARG_FUNCV( fmtargnumber )\n#endif\n#endif /* SDL_DISABLE_ANALYZE_MACROS */\n\n#ifndef SDL_COMPILE_TIME_ASSERT\n#if defined(__cplusplus)\n#if (__cplusplus >= 201103L)\n#define SDL_COMPILE_TIME_ASSERT(name, x)  static_assert(x, #x)\n#endif\n#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)\n#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x)\n#endif\n#endif /* !SDL_COMPILE_TIME_ASSERT */\n\n#ifndef SDL_COMPILE_TIME_ASSERT\n/* universal, but may trigger -Wunused-local-typedefs */\n#define SDL_COMPILE_TIME_ASSERT(name, x)               \\\n       typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]\n#endif\n\n/** \\cond */\n#ifndef DOXYGEN_SHOULD_IGNORE_THIS\nSDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);\nSDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);\nSDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);\nSDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);\nSDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);\nSDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);\nSDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);\nSDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);\n#endif /* DOXYGEN_SHOULD_IGNORE_THIS */\n/** \\endcond */\n\n/* Check to make sure enums are the size of ints, for structure packing.\n   For both Watcom C/C++ and Borland C/C++ the compiler option that makes\n   enums having the size of an int must be enabled.\n   This is \"-b\" for Borland C/C++ and \"-ei\" for Watcom C/C++ (v11).\n*/\n\n/** \\cond */\n#ifndef DOXYGEN_SHOULD_IGNORE_THIS\n#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__)\n   /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */\ntypedef enum\n{\n    DUMMY_ENUM_VALUE\n} SDL_DUMMY_ENUM;\n\nSDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));\n#endif\n#endif /* DOXYGEN_SHOULD_IGNORE_THIS */\n/** \\endcond */\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifdef HAVE_ALLOCA\n#define SDL_stack_alloc(type, count)    (type*)alloca(sizeof(type)*(count))\n#define SDL_stack_free(data)\n#else\n#define SDL_stack_alloc(type, count)    (type*)SDL_malloc(sizeof(type)*(count))\n#define SDL_stack_free(data)            SDL_free(data)\n#endif\n\nextern DECLSPEC void *SDLCALL SDL_malloc(size_t size);\nextern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);\nextern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);\nextern DECLSPEC void SDLCALL SDL_free(void *mem);\n\ntypedef void *(SDLCALL *SDL_malloc_func)(size_t size);\ntypedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);\ntypedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);\ntypedef void (SDLCALL *SDL_free_func)(void *mem);\n\n/**\n * Get the original set of SDL memory functions\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func,\n                                                            SDL_calloc_func *calloc_func,\n                                                            SDL_realloc_func *realloc_func,\n                                                            SDL_free_func *free_func);\n\n/**\n * Get the current set of SDL memory functions\n *\n * \\since This function is available since SDL 2.0.7.\n */\nextern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,\n                                                    SDL_calloc_func *calloc_func,\n                                                    SDL_realloc_func *realloc_func,\n                                                    SDL_free_func *free_func);\n\n/**\n * Replace SDL's memory allocation functions with a custom set\n *\n * \\since This function is available since SDL 2.0.7.\n */\nextern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,\n                                                   SDL_calloc_func calloc_func,\n                                                   SDL_realloc_func realloc_func,\n                                                   SDL_free_func free_func);\n\n/**\n * Get the number of outstanding (unfreed) allocations\n *\n * \\since This function is available since SDL 2.0.7.\n */\nextern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);\n\nextern DECLSPEC char *SDLCALL SDL_getenv(const char *name);\nextern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);\n\nextern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));\nextern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *));\n\nextern DECLSPEC int SDLCALL SDL_abs(int x);\n\n/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */\n#define SDL_min(x, y) (((x) < (y)) ? (x) : (y))\n#define SDL_max(x, y) (((x) > (y)) ? (x) : (y))\n#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x)))\n\nextern DECLSPEC int SDLCALL SDL_isalpha(int x);\nextern DECLSPEC int SDLCALL SDL_isalnum(int x);\nextern DECLSPEC int SDLCALL SDL_isblank(int x);\nextern DECLSPEC int SDLCALL SDL_iscntrl(int x);\nextern DECLSPEC int SDLCALL SDL_isdigit(int x);\nextern DECLSPEC int SDLCALL SDL_isxdigit(int x);\nextern DECLSPEC int SDLCALL SDL_ispunct(int x);\nextern DECLSPEC int SDLCALL SDL_isspace(int x);\nextern DECLSPEC int SDLCALL SDL_isupper(int x);\nextern DECLSPEC int SDLCALL SDL_islower(int x);\nextern DECLSPEC int SDLCALL SDL_isprint(int x);\nextern DECLSPEC int SDLCALL SDL_isgraph(int x);\nextern DECLSPEC int SDLCALL SDL_toupper(int x);\nextern DECLSPEC int SDLCALL SDL_tolower(int x);\n\nextern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len);\nextern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len);\n\nextern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);\n\n#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))\n#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))\n#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))\n\n#define SDL_copyp(dst, src)                                                                 \\\n    { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); }             \\\n    SDL_memcpy((dst), (src), sizeof (*(src)))\n\n\n/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */\nSDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)\n{\n#if defined(__GNUC__) && defined(__i386__)\n    int u0, u1, u2;\n    __asm__ __volatile__ (\n        \"cld \\n\\t\"\n        \"rep ; stosl \\n\\t\"\n        : \"=&D\" (u0), \"=&a\" (u1), \"=&c\" (u2)\n        : \"0\" (dst), \"1\" (val), \"2\" (SDL_static_cast(Uint32, dwords))\n        : \"memory\"\n    );\n#else\n    size_t _n = (dwords + 3) / 4;\n    Uint32 *_p = SDL_static_cast(Uint32 *, dst);\n    Uint32 _val = (val);\n    if (dwords == 0) {\n        return;\n    }\n    switch (dwords % 4) {\n        case 0: do {    *_p++ = _val;   SDL_FALLTHROUGH;\n        case 3:         *_p++ = _val;   SDL_FALLTHROUGH;\n        case 2:         *_p++ = _val;   SDL_FALLTHROUGH;\n        case 1:         *_p++ = _val;\n        } while ( --_n );\n    }\n#endif\n}\n\nextern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);\n\nextern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);\nextern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);\n\nextern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);\nextern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);\nextern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);\nextern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);\nextern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle);\n\nextern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);\nextern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);\nextern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2);\nextern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len);\n\nextern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);\nextern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);\nextern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);\nextern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);\nextern DECLSPEC char *SDLCALL SDL_strdup(const char *str);\nextern DECLSPEC char *SDLCALL SDL_strrev(char *str);\nextern DECLSPEC char *SDLCALL SDL_strupr(char *str);\nextern DECLSPEC char *SDLCALL SDL_strlwr(char *str);\nextern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);\nextern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);\nextern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);\nextern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle);\nextern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr);\nextern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);\nextern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes);\n\nextern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);\nextern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);\nextern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);\nextern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);\nextern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);\nextern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);\n\nextern DECLSPEC int SDLCALL SDL_atoi(const char *str);\nextern DECLSPEC double SDLCALL SDL_atof(const char *str);\nextern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);\nextern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);\nextern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);\nextern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);\nextern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);\n\nextern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);\nextern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);\nextern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);\nextern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);\n\nextern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);\nextern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, va_list ap) SDL_SCANF_VARARG_FUNCV(2);\nextern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);\nextern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(3);\nextern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\nextern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap) SDL_PRINTF_VARARG_FUNCV(2);\n\n#ifndef HAVE_M_PI\n#ifndef M_PI\n#define M_PI    3.14159265358979323846264338327950288   /**< pi */\n#endif\n#endif\n\n/**\n * Use this function to compute arc cosine of `x`.\n *\n * The definition of `y = acos(x)` is `x = cos(y)`.\n *\n * Domain: `-1 <= x <= 1`\n *\n * Range: `0 <= y <= Pi`\n *\n * \\param x floating point value, in radians.\n * \\returns arc cosine of `x`.\n *\n * \\since This function is available since SDL 2.0.2.\n */\nextern DECLSPEC double SDLCALL SDL_acos(double x);\nextern DECLSPEC float SDLCALL SDL_acosf(float x);\nextern DECLSPEC double SDLCALL SDL_asin(double x);\nextern DECLSPEC float SDLCALL SDL_asinf(float x);\nextern DECLSPEC double SDLCALL SDL_atan(double x);\nextern DECLSPEC float SDLCALL SDL_atanf(float x);\nextern DECLSPEC double SDLCALL SDL_atan2(double y, double x);\nextern DECLSPEC float SDLCALL SDL_atan2f(float y, float x);\nextern DECLSPEC double SDLCALL SDL_ceil(double x);\nextern DECLSPEC float SDLCALL SDL_ceilf(float x);\nextern DECLSPEC double SDLCALL SDL_copysign(double x, double y);\nextern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);\nextern DECLSPEC double SDLCALL SDL_cos(double x);\nextern DECLSPEC float SDLCALL SDL_cosf(float x);\nextern DECLSPEC double SDLCALL SDL_exp(double x);\nextern DECLSPEC float SDLCALL SDL_expf(float x);\nextern DECLSPEC double SDLCALL SDL_fabs(double x);\nextern DECLSPEC float SDLCALL SDL_fabsf(float x);\nextern DECLSPEC double SDLCALL SDL_floor(double x);\nextern DECLSPEC float SDLCALL SDL_floorf(float x);\nextern DECLSPEC double SDLCALL SDL_trunc(double x);\nextern DECLSPEC float SDLCALL SDL_truncf(float x);\nextern DECLSPEC double SDLCALL SDL_fmod(double x, double y);\nextern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);\nextern DECLSPEC double SDLCALL SDL_log(double x);\nextern DECLSPEC float SDLCALL SDL_logf(float x);\nextern DECLSPEC double SDLCALL SDL_log10(double x);\nextern DECLSPEC float SDLCALL SDL_log10f(float x);\nextern DECLSPEC double SDLCALL SDL_pow(double x, double y);\nextern DECLSPEC float SDLCALL SDL_powf(float x, float y);\nextern DECLSPEC double SDLCALL SDL_round(double x);\nextern DECLSPEC float SDLCALL SDL_roundf(float x);\nextern DECLSPEC long SDLCALL SDL_lround(double x);\nextern DECLSPEC long SDLCALL SDL_lroundf(float x);\nextern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);\nextern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);\nextern DECLSPEC double SDLCALL SDL_sin(double x);\nextern DECLSPEC float SDLCALL SDL_sinf(float x);\nextern DECLSPEC double SDLCALL SDL_sqrt(double x);\nextern DECLSPEC float SDLCALL SDL_sqrtf(float x);\nextern DECLSPEC double SDLCALL SDL_tan(double x);\nextern DECLSPEC float SDLCALL SDL_tanf(float x);\n\n/* The SDL implementation of iconv() returns these error codes */\n#define SDL_ICONV_ERROR     (size_t)-1\n#define SDL_ICONV_E2BIG     (size_t)-2\n#define SDL_ICONV_EILSEQ    (size_t)-3\n#define SDL_ICONV_EINVAL    (size_t)-4\n\n/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */\ntypedef struct _SDL_iconv_t *SDL_iconv_t;\nextern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,\n                                                   const char *fromcode);\nextern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);\nextern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,\n                                         size_t * inbytesleft, char **outbuf,\n                                         size_t * outbytesleft);\n\n/**\n * This function converts a buffer or string between encodings in one pass,\n * returning a string that must be freed with SDL_free() or NULL on error.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,\n                                               const char *fromcode,\n                                               const char *inbuf,\n                                               size_t inbytesleft);\n#define SDL_iconv_utf8_locale(S)    SDL_iconv_string(\"\", \"UTF-8\", S, SDL_strlen(S)+1)\n#define SDL_iconv_utf8_ucs2(S)      (Uint16 *)SDL_iconv_string(\"UCS-2\", \"UTF-8\", S, SDL_strlen(S)+1)\n#define SDL_iconv_utf8_ucs4(S)      (Uint32 *)SDL_iconv_string(\"UCS-4\", \"UTF-8\", S, SDL_strlen(S)+1)\n#define SDL_iconv_wchar_utf8(S)     SDL_iconv_string(\"UTF-8\", \"WCHAR_T\", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t))\n\n/* force builds using Clang's static analysis tools to use literal C runtime\n   here, since there are possibly tests that are ineffective otherwise. */\n#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)\n\n/* The analyzer knows about strlcpy even when the system doesn't provide it */\n#ifndef HAVE_STRLCPY\nsize_t strlcpy(char* dst, const char* src, size_t size);\n#endif\n\n/* The analyzer knows about strlcat even when the system doesn't provide it */\n#ifndef HAVE_STRLCAT\nsize_t strlcat(char* dst, const char* src, size_t size);\n#endif\n\n#ifndef HAVE_WCSLCPY\nsize_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);\n#endif\n\n#ifndef HAVE_WCSLCAT\nsize_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);\n#endif\n\n/* Starting LLVM 16, the analyser errors out if these functions do not have\n   their prototype defined (clang-diagnostic-implicit-function-declaration) */\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n\n#define SDL_malloc malloc\n#define SDL_calloc calloc\n#define SDL_realloc realloc\n#define SDL_free free\n#define SDL_memset memset\n#define SDL_memcpy memcpy\n#define SDL_memmove memmove\n#define SDL_memcmp memcmp\n#define SDL_strlcpy strlcpy\n#define SDL_strlcat strlcat\n#define SDL_strlen strlen\n#define SDL_wcslen wcslen\n#define SDL_wcslcpy wcslcpy\n#define SDL_wcslcat wcslcat\n#define SDL_strdup strdup\n#define SDL_wcsdup wcsdup\n#define SDL_strchr strchr\n#define SDL_strrchr strrchr\n#define SDL_strstr strstr\n#define SDL_wcsstr wcsstr\n#define SDL_strtokr strtok_r\n#define SDL_strcmp strcmp\n#define SDL_wcscmp wcscmp\n#define SDL_strncmp strncmp\n#define SDL_wcsncmp wcsncmp\n#define SDL_strcasecmp strcasecmp\n#define SDL_strncasecmp strncasecmp\n#define SDL_sscanf sscanf\n#define SDL_vsscanf vsscanf\n#define SDL_snprintf snprintf\n#define SDL_vsnprintf vsnprintf\n#endif\n\nSDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)\n{\n    return SDL_memcpy(dst, src, dwords * 4);\n}\n\n/**\n * If a * b would overflow, return -1. Otherwise store a * b via ret\n * and return 0.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nSDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a,\n                                            size_t b,\n                                            size_t *ret)\n{\n    if (a != 0 && b > SDL_SIZE_MAX / a) {\n        return -1;\n    }\n    *ret = a * b;\n    return 0;\n}\n\n#if _SDL_HAS_BUILTIN(__builtin_mul_overflow)\n/* This needs to be wrapped in an inline rather than being a direct #define,\n * because __builtin_mul_overflow() is type-generic, but we want to be\n * consistent about interpreting a and b as size_t. */\nSDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a,\n                                                     size_t b,\n                                                     size_t *ret)\n{\n    return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1;\n}\n#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret))\n#endif\n\n/**\n * If a + b would overflow, return -1. Otherwise store a + b via ret\n * and return 0.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nSDL_FORCE_INLINE int SDL_size_add_overflow (size_t a,\n                                            size_t b,\n                                            size_t *ret)\n{\n    if (b > SDL_SIZE_MAX - a) {\n        return -1;\n    }\n    *ret = a + b;\n    return 0;\n}\n\n#if _SDL_HAS_BUILTIN(__builtin_add_overflow)\n/* This needs to be wrapped in an inline rather than being a direct #define,\n * the same as the call to __builtin_mul_overflow() above. */\nSDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a,\n                                                     size_t b,\n                                                     size_t *ret)\n{\n    return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1;\n}\n#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret))\n#endif\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_stdinc_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_surface.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_surface.h\n *\n *  Header file for ::SDL_Surface definition and management functions.\n */\n\n#ifndef SDL_surface_h_\n#define SDL_surface_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_pixels.h\"\n#include \"SDL_rect.h\"\n#include \"SDL_blendmode.h\"\n#include \"SDL_rwops.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\name Surface flags\n *\n *  These are the currently supported flags for the ::SDL_Surface.\n *\n *  \\internal\n *  Used internally (read-only).\n */\n/* @{ */\n#define SDL_SWSURFACE       0           /**< Just here for compatibility */\n#define SDL_PREALLOC        0x00000001  /**< Surface uses preallocated memory */\n#define SDL_RLEACCEL        0x00000002  /**< Surface is RLE encoded */\n#define SDL_DONTFREE        0x00000004  /**< Surface is referenced internally */\n#define SDL_SIMD_ALIGNED    0x00000008  /**< Surface uses aligned memory */\n/* @} *//* Surface flags */\n\n/**\n *  Evaluates to true if the surface needs to be locked before access.\n */\n#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)\n\ntypedef struct SDL_BlitMap SDL_BlitMap;  /* this is an opaque type. */\n\n/**\n * \\brief A collection of pixels used in software blitting.\n *\n * \\note  This structure should be treated as read-only, except for \\c pixels,\n *        which, if not NULL, contains the raw pixel data for the surface.\n */\ntypedef struct SDL_Surface\n{\n    Uint32 flags;               /**< Read-only */\n    SDL_PixelFormat *format;    /**< Read-only */\n    int w, h;                   /**< Read-only */\n    int pitch;                  /**< Read-only */\n    void *pixels;               /**< Read-write */\n\n    /** Application data associated with the surface */\n    void *userdata;             /**< Read-write */\n\n    /** information needed for surfaces requiring locks */\n    int locked;                 /**< Read-only */\n\n    /** list of BlitMap that hold a reference to this surface */\n    void *list_blitmap;         /**< Private */\n\n    /** clipping information */\n    SDL_Rect clip_rect;         /**< Read-only */\n\n    /** info for fast blit mapping to other surfaces */\n    SDL_BlitMap *map;           /**< Private */\n\n    /** Reference count -- used when freeing surface */\n    int refcount;               /**< Read-mostly */\n} SDL_Surface;\n\n/**\n * \\brief The type of function used for surface blitting functions.\n */\ntypedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,\n                                 struct SDL_Surface * dst, SDL_Rect * dstrect);\n\n/**\n * \\brief The formula used for converting between YUV and RGB\n */\ntypedef enum\n{\n    SDL_YUV_CONVERSION_JPEG,        /**< Full range JPEG */\n    SDL_YUV_CONVERSION_BT601,       /**< BT.601 (the default) */\n    SDL_YUV_CONVERSION_BT709,       /**< BT.709 */\n    SDL_YUV_CONVERSION_AUTOMATIC    /**< BT.601 for SD content, BT.709 for HD content */\n} SDL_YUV_CONVERSION_MODE;\n\n/**\n * Allocate a new RGB surface.\n *\n * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface.\n * If `depth` is greater than 8 bits, the pixel format is set using the\n * [RGBA]mask parameters.\n *\n * The [RGBA]mask parameters are the bitmasks used to extract that color from\n * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is\n * stored in the most significant byte. Using zeros for the RGB masks sets a\n * default value, based on the depth. For example:\n *\n * ```c++\n * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0);\n * ```\n *\n * However, using zero for the Amask results in an Amask of 0.\n *\n * By default surfaces with an alpha mask are set up for blending as with:\n *\n * ```c++\n * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND)\n * ```\n *\n * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a\n * different `blendMode`.\n *\n * \\param flags the flags are unused and should be set to 0\n * \\param width the width of the surface\n * \\param height the height of the surface\n * \\param depth the depth of the surface in bits\n * \\param Rmask the red mask for the pixels\n * \\param Gmask the green mask for the pixels\n * \\param Bmask the blue mask for the pixels\n * \\param Amask the alpha mask for the pixels\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRGBSurfaceFrom\n * \\sa SDL_CreateRGBSurfaceWithFormat\n * \\sa SDL_FreeSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface\n    (Uint32 flags, int width, int height, int depth,\n     Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);\n\n\n/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */\n\n/**\n * Allocate a new RGB surface with a specific pixel format.\n *\n * This function operates mostly like SDL_CreateRGBSurface(), except instead\n * of providing pixel color masks, you provide it with a predefined format\n * from SDL_PixelFormatEnum.\n *\n * \\param flags the flags are unused and should be set to 0\n * \\param width the width of the surface\n * \\param height the height of the surface\n * \\param depth the depth of the surface in bits\n * \\param format the SDL_PixelFormatEnum for the new surface's pixel format.\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_CreateRGBSurface\n * \\sa SDL_CreateRGBSurfaceFrom\n * \\sa SDL_FreeSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat\n    (Uint32 flags, int width, int height, int depth, Uint32 format);\n\n/**\n * Allocate a new RGB surface with existing pixel data.\n *\n * This function operates mostly like SDL_CreateRGBSurface(), except it does\n * not allocate memory for the pixel data, instead the caller provides an\n * existing buffer of data for the surface to use.\n *\n * No copy is made of the pixel data. Pixel data is not managed automatically;\n * you must free the surface before you free the pixel data.\n *\n * \\param pixels a pointer to existing pixel data\n * \\param width the width of the surface\n * \\param height the height of the surface\n * \\param depth the depth of the surface in bits\n * \\param pitch the pitch of the surface in bytes\n * \\param Rmask the red mask for the pixels\n * \\param Gmask the green mask for the pixels\n * \\param Bmask the blue mask for the pixels\n * \\param Amask the alpha mask for the pixels\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRGBSurface\n * \\sa SDL_CreateRGBSurfaceWithFormat\n * \\sa SDL_FreeSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,\n                                                              int width,\n                                                              int height,\n                                                              int depth,\n                                                              int pitch,\n                                                              Uint32 Rmask,\n                                                              Uint32 Gmask,\n                                                              Uint32 Bmask,\n                                                              Uint32 Amask);\n\n/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */\n\n/**\n * Allocate a new RGB surface with with a specific pixel format and existing\n * pixel data.\n *\n * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except\n * instead of providing pixel color masks, you provide it with a predefined\n * format from SDL_PixelFormatEnum.\n *\n * No copy is made of the pixel data. Pixel data is not managed automatically;\n * you must free the surface before you free the pixel data.\n *\n * \\param pixels a pointer to existing pixel data\n * \\param width the width of the surface\n * \\param height the height of the surface\n * \\param depth the depth of the surface in bits\n * \\param pitch the pitch of the surface in bytes\n * \\param format the SDL_PixelFormatEnum for the new surface's pixel format.\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_CreateRGBSurfaceFrom\n * \\sa SDL_CreateRGBSurfaceWithFormat\n * \\sa SDL_FreeSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom\n    (void *pixels, int width, int height, int depth, int pitch, Uint32 format);\n\n/**\n * Free an RGB surface.\n *\n * It is safe to pass NULL to this function.\n *\n * \\param surface the SDL_Surface to free.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateRGBSurface\n * \\sa SDL_CreateRGBSurfaceFrom\n * \\sa SDL_LoadBMP\n * \\sa SDL_LoadBMP_RW\n */\nextern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);\n\n/**\n * Set the palette used by a surface.\n *\n * A single palette can be shared with many surfaces.\n *\n * \\param surface the SDL_Surface structure to update\n * \\param palette the SDL_Palette structure to use\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,\n                                                  SDL_Palette * palette);\n\n/**\n * Set up a surface for directly accessing the pixels.\n *\n * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to\n * and read from `surface->pixels`, using the pixel format stored in\n * `surface->format`. Once you are done accessing the surface, you should use\n * SDL_UnlockSurface() to release it.\n *\n * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to\n * 0, then you can read and write to the surface at any time, and the pixel\n * format of the surface will not change.\n *\n * \\param surface the SDL_Surface structure to be locked\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MUSTLOCK\n * \\sa SDL_UnlockSurface\n */\nextern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);\n\n/**\n * Release a surface after directly accessing the pixels.\n *\n * \\param surface the SDL_Surface structure to be unlocked\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LockSurface\n */\nextern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);\n\n/**\n * Load a BMP image from a seekable SDL data stream.\n *\n * The new surface should be freed with SDL_FreeSurface(). Not doing so will\n * result in a memory leak.\n *\n * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile.\n * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap\n * from a file, convert it to an SDL_Surface and then close the file.\n *\n * \\param src the data stream for the surface\n * \\param freesrc non-zero to close the stream after being read\n * \\returns a pointer to a new SDL_Surface structure or NULL if there was an\n *          error; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FreeSurface\n * \\sa SDL_RWFromFile\n * \\sa SDL_LoadBMP\n * \\sa SDL_SaveBMP_RW\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,\n                                                    int freesrc);\n\n/**\n * Load a surface from a file.\n *\n * Convenience macro.\n */\n#define SDL_LoadBMP(file)   SDL_LoadBMP_RW(SDL_RWFromFile(file, \"rb\"), 1)\n\n/**\n * Save a surface to a seekable SDL data stream in BMP format.\n *\n * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the\n * BMP directly. Other RGB formats with 8-bit or higher get converted to a\n * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit\n * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are\n * not supported.\n *\n * \\param surface the SDL_Surface structure containing the image to be saved\n * \\param dst a data stream to save to\n * \\param freedst non-zero to close the stream after being written\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_LoadBMP_RW\n * \\sa SDL_SaveBMP\n */\nextern DECLSPEC int SDLCALL SDL_SaveBMP_RW\n    (SDL_Surface * surface, SDL_RWops * dst, int freedst);\n\n/**\n *  Save a surface to a file.\n *\n *  Convenience macro.\n */\n#define SDL_SaveBMP(surface, file) \\\n        SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, \"wb\"), 1)\n\n/**\n * Set the RLE acceleration hint for a surface.\n *\n * If RLE is enabled, color key and alpha blending blits are much faster, but\n * the surface must be locked before directly accessing the pixels.\n *\n * \\param surface the SDL_Surface structure to optimize\n * \\param flag 0 to disable, non-zero to enable RLE acceleration\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n * \\sa SDL_LockSurface\n * \\sa SDL_UnlockSurface\n */\nextern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,\n                                              int flag);\n\n/**\n * Returns whether the surface is RLE enabled\n *\n * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.\n *\n * \\param surface the SDL_Surface structure to query\n * \\returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n *\n * \\sa SDL_SetSurfaceRLE\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface);\n\n/**\n * Set the color key (transparent pixel) in a surface.\n *\n * The color key defines a pixel value that will be treated as transparent in\n * a blit. For example, one can use this to specify that cyan pixels should be\n * considered transparent, and therefore not rendered.\n *\n * It is a pixel of the format used by the surface, as generated by\n * SDL_MapRGB().\n *\n * RLE acceleration can substantially speed up blitting of images with large\n * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details.\n *\n * \\param surface the SDL_Surface structure to update\n * \\param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key\n * \\param key the transparent pixel\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n * \\sa SDL_GetColorKey\n */\nextern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,\n                                            int flag, Uint32 key);\n\n/**\n * Returns whether the surface has a color key\n *\n * It is safe to pass a NULL `surface` here; it will return SDL_FALSE.\n *\n * \\param surface the SDL_Surface structure to query\n * \\return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_SetColorKey\n * \\sa SDL_GetColorKey\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);\n\n/**\n * Get the color key (transparent pixel) for a surface.\n *\n * The color key is a pixel of the format used by the surface, as generated by\n * SDL_MapRGB().\n *\n * If the surface doesn't have color key enabled this function returns -1.\n *\n * \\param surface the SDL_Surface structure to query\n * \\param key a pointer filled in with the transparent pixel\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n * \\sa SDL_SetColorKey\n */\nextern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,\n                                            Uint32 * key);\n\n/**\n * Set an additional color value multiplied into blit operations.\n *\n * When this surface is blitted, during the blit operation each source color\n * channel is modulated by the appropriate color value according to the\n * following formula:\n *\n * `srcC = srcC * (color / 255)`\n *\n * \\param surface the SDL_Surface structure to update\n * \\param r the red color value multiplied into blit operations\n * \\param g the green color value multiplied into blit operations\n * \\param b the blue color value multiplied into blit operations\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetSurfaceColorMod\n * \\sa SDL_SetSurfaceAlphaMod\n */\nextern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,\n                                                   Uint8 r, Uint8 g, Uint8 b);\n\n\n/**\n * Get the additional color value multiplied into blit operations.\n *\n * \\param surface the SDL_Surface structure to query\n * \\param r a pointer filled in with the current red color value\n * \\param g a pointer filled in with the current green color value\n * \\param b a pointer filled in with the current blue color value\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetSurfaceAlphaMod\n * \\sa SDL_SetSurfaceColorMod\n */\nextern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,\n                                                   Uint8 * r, Uint8 * g,\n                                                   Uint8 * b);\n\n/**\n * Set an additional alpha value used in blit operations.\n *\n * When this surface is blitted, during the blit operation the source alpha\n * value is modulated by this alpha value according to the following formula:\n *\n * `srcA = srcA * (alpha / 255)`\n *\n * \\param surface the SDL_Surface structure to update\n * \\param alpha the alpha value multiplied into blit operations\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetSurfaceAlphaMod\n * \\sa SDL_SetSurfaceColorMod\n */\nextern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,\n                                                   Uint8 alpha);\n\n/**\n * Get the additional alpha value used in blit operations.\n *\n * \\param surface the SDL_Surface structure to query\n * \\param alpha a pointer filled in with the current alpha value\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetSurfaceColorMod\n * \\sa SDL_SetSurfaceAlphaMod\n */\nextern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,\n                                                   Uint8 * alpha);\n\n/**\n * Set the blend mode used for blit operations.\n *\n * To copy a surface to another surface (or texture) without blending with the\n * existing data, the blendmode of the SOURCE surface should be set to\n * `SDL_BLENDMODE_NONE`.\n *\n * \\param surface the SDL_Surface structure to update\n * \\param blendMode the SDL_BlendMode to use for blit blending\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetSurfaceBlendMode\n */\nextern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,\n                                                    SDL_BlendMode blendMode);\n\n/**\n * Get the blend mode used for blit operations.\n *\n * \\param surface the SDL_Surface structure to query\n * \\param blendMode a pointer filled in with the current SDL_BlendMode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetSurfaceBlendMode\n */\nextern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,\n                                                    SDL_BlendMode *blendMode);\n\n/**\n * Set the clipping rectangle for a surface.\n *\n * When `surface` is the destination of a blit, only the area within the clip\n * rectangle is drawn into.\n *\n * Note that blits are automatically clipped to the edges of the source and\n * destination surfaces.\n *\n * \\param surface the SDL_Surface structure to be clipped\n * \\param rect the SDL_Rect structure representing the clipping rectangle, or\n *             NULL to disable clipping\n * \\returns SDL_TRUE if the rectangle intersects the surface, otherwise\n *          SDL_FALSE and blits will be completely clipped.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n * \\sa SDL_GetClipRect\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,\n                                                 const SDL_Rect * rect);\n\n/**\n * Get the clipping rectangle for a surface.\n *\n * When `surface` is the destination of a blit, only the area within the clip\n * rectangle is drawn into.\n *\n * \\param surface the SDL_Surface structure representing the surface to be\n *                clipped\n * \\param rect an SDL_Rect structure filled in with the clipping rectangle for\n *             the surface\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n * \\sa SDL_SetClipRect\n */\nextern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,\n                                             SDL_Rect * rect);\n\n/*\n * Creates a new surface identical to the existing surface.\n *\n * The returned surface should be freed with SDL_FreeSurface().\n *\n * \\param surface the surface to duplicate.\n * \\returns a copy of the surface, or NULL on failure; call SDL_GetError() for\n *          more information.\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);\n\n/**\n * Copy an existing surface to a new surface of the specified format.\n *\n * This function is used to optimize images for faster *repeat* blitting. This\n * is accomplished by converting the original and storing the result as a new\n * surface. The new, optimized surface can then be used as the source for\n * future blits, making them faster.\n *\n * \\param src the existing SDL_Surface structure to convert\n * \\param fmt the SDL_PixelFormat structure that the new surface is optimized\n *            for\n * \\param flags the flags are unused and should be set to 0; this is a\n *              leftover from SDL 1.2's API\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocFormat\n * \\sa SDL_ConvertSurfaceFormat\n * \\sa SDL_CreateRGBSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface\n    (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);\n\n/**\n * Copy an existing surface to a new surface of the specified format enum.\n *\n * This function operates just like SDL_ConvertSurface(), but accepts an\n * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such,\n * it might be easier to call but it doesn't have access to palette\n * information for the destination surface, in case that would be important.\n *\n * \\param src the existing SDL_Surface structure to convert\n * \\param pixel_format the SDL_PixelFormatEnum that the new surface is\n *                     optimized for\n * \\param flags the flags are unused and should be set to 0; this is a\n *              leftover from SDL 1.2's API\n * \\returns the new SDL_Surface structure that is created or NULL if it fails;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AllocFormat\n * \\sa SDL_ConvertSurface\n * \\sa SDL_CreateRGBSurface\n */\nextern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat\n    (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);\n\n/**\n * Copy a block of pixels of one format to another format.\n *\n * \\param width the width of the block to copy, in pixels\n * \\param height the height of the block to copy, in pixels\n * \\param src_format an SDL_PixelFormatEnum value of the `src` pixels format\n * \\param src a pointer to the source pixels\n * \\param src_pitch the pitch of the source pixels, in bytes\n * \\param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format\n * \\param dst a pointer to be filled in with new pixel data\n * \\param dst_pitch the pitch of the destination pixels, in bytes\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,\n                                              Uint32 src_format,\n                                              const void * src, int src_pitch,\n                                              Uint32 dst_format,\n                                              void * dst, int dst_pitch);\n\n/**\n * Premultiply the alpha on a block of pixels.\n *\n * This is safe to use with src == dst, but not for other overlapping areas.\n *\n * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888.\n *\n * \\param width the width of the block to convert, in pixels\n * \\param height the height of the block to convert, in pixels\n * \\param src_format an SDL_PixelFormatEnum value of the `src` pixels format\n * \\param src a pointer to the source pixels\n * \\param src_pitch the pitch of the source pixels, in bytes\n * \\param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format\n * \\param dst a pointer to be filled in with premultiplied pixel data\n * \\param dst_pitch the pitch of the destination pixels, in bytes\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height,\n                                                 Uint32 src_format,\n                                                 const void * src, int src_pitch,\n                                                 Uint32 dst_format,\n                                                 void * dst, int dst_pitch);\n\n/**\n * Perform a fast fill of a rectangle with a specific color.\n *\n * `color` should be a pixel of the format used by the surface, and can be\n * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an\n * alpha component then the destination is simply filled with that alpha\n * information, no blending takes place.\n *\n * If there is a clip rectangle set on the destination (set via\n * SDL_SetClipRect()), then this function will fill based on the intersection\n * of the clip rectangle and `rect`.\n *\n * \\param dst the SDL_Surface structure that is the drawing target\n * \\param rect the SDL_Rect structure representing the rectangle to fill, or\n *             NULL to fill the entire surface\n * \\param color the color to fill with\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FillRects\n */\nextern DECLSPEC int SDLCALL SDL_FillRect\n    (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);\n\n/**\n * Perform a fast fill of a set of rectangles with a specific color.\n *\n * `color` should be a pixel of the format used by the surface, and can be\n * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an\n * alpha component then the destination is simply filled with that alpha\n * information, no blending takes place.\n *\n * If there is a clip rectangle set on the destination (set via\n * SDL_SetClipRect()), then this function will fill based on the intersection\n * of the clip rectangle and `rect`.\n *\n * \\param dst the SDL_Surface structure that is the drawing target\n * \\param rects an array of SDL_Rects representing the rectangles to fill.\n * \\param count the number of rectangles in the array\n * \\param color the color to fill with\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_FillRect\n */\nextern DECLSPEC int SDLCALL SDL_FillRects\n    (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);\n\n/* !!! FIXME: merge this documentation with the wiki */\n/**\n *  Performs a fast blit from the source surface to the destination surface.\n *\n *  This assumes that the source and destination rectangles are\n *  the same size.  If either \\c srcrect or \\c dstrect are NULL, the entire\n *  surface (\\c src or \\c dst) is copied.  The final blit rectangles are saved\n *  in \\c srcrect and \\c dstrect after all clipping is performed.\n *\n *  \\returns 0 if the blit is successful, otherwise it returns -1.\n *\n *  The blit function should not be called on a locked surface.\n *\n *  The blit semantics for surfaces with and without blending and colorkey\n *  are defined as follows:\n *  \\verbatim\n    RGBA->RGB:\n      Source surface blend mode set to SDL_BLENDMODE_BLEND:\n        alpha-blend (using the source alpha-channel and per-surface alpha)\n        SDL_SRCCOLORKEY ignored.\n      Source surface blend mode set to SDL_BLENDMODE_NONE:\n        copy RGB.\n        if SDL_SRCCOLORKEY set, only copy the pixels matching the\n        RGB values of the source color key, ignoring alpha in the\n        comparison.\n\n    RGB->RGBA:\n      Source surface blend mode set to SDL_BLENDMODE_BLEND:\n        alpha-blend (using the source per-surface alpha)\n      Source surface blend mode set to SDL_BLENDMODE_NONE:\n        copy RGB, set destination alpha to source per-surface alpha value.\n      both:\n        if SDL_SRCCOLORKEY set, only copy the pixels matching the\n        source color key.\n\n    RGBA->RGBA:\n      Source surface blend mode set to SDL_BLENDMODE_BLEND:\n        alpha-blend (using the source alpha-channel and per-surface alpha)\n        SDL_SRCCOLORKEY ignored.\n      Source surface blend mode set to SDL_BLENDMODE_NONE:\n        copy all of RGBA to the destination.\n        if SDL_SRCCOLORKEY set, only copy the pixels matching the\n        RGB values of the source color key, ignoring alpha in the\n        comparison.\n\n    RGB->RGB:\n      Source surface blend mode set to SDL_BLENDMODE_BLEND:\n        alpha-blend (using the source per-surface alpha)\n      Source surface blend mode set to SDL_BLENDMODE_NONE:\n        copy RGB.\n      both:\n        if SDL_SRCCOLORKEY set, only copy the pixels matching the\n        source color key.\n    \\endverbatim\n *\n *  You should call SDL_BlitSurface() unless you know exactly how SDL\n *  blitting works internally and how to use the other blit functions.\n */\n#define SDL_BlitSurface SDL_UpperBlit\n\n/**\n * Perform a fast blit from the source surface to the destination surface.\n *\n * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a\n * macro for this function with a less confusing name.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n */\nextern DECLSPEC int SDLCALL SDL_UpperBlit\n    (SDL_Surface * src, const SDL_Rect * srcrect,\n     SDL_Surface * dst, SDL_Rect * dstrect);\n\n/**\n * Perform low-level surface blitting only.\n *\n * This is a semi-private blit function and it performs low-level surface\n * blitting, assuming the input rectangles have already been clipped.\n *\n * Unless you know what you're doing, you should be using SDL_BlitSurface()\n * instead.\n *\n * \\param src the SDL_Surface structure to be copied from\n * \\param srcrect the SDL_Rect structure representing the rectangle to be\n *                copied, or NULL to copy the entire surface\n * \\param dst the SDL_Surface structure that is the blit target\n * \\param dstrect the SDL_Rect structure representing the rectangle that is\n *                copied into\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitSurface\n */\nextern DECLSPEC int SDLCALL SDL_LowerBlit\n    (SDL_Surface * src, SDL_Rect * srcrect,\n     SDL_Surface * dst, SDL_Rect * dstrect);\n\n\n/**\n * Perform a fast, low quality, stretch blit between two surfaces of the same\n * format.\n *\n * Please use SDL_BlitScaled() instead.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,\n                                            const SDL_Rect * srcrect,\n                                            SDL_Surface * dst,\n                                            const SDL_Rect * dstrect);\n\n/**\n * Perform bilinear scaling between two surfaces of the same format, 32BPP.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src,\n                                            const SDL_Rect * srcrect,\n                                            SDL_Surface * dst,\n                                            const SDL_Rect * dstrect);\n\n\n#define SDL_BlitScaled SDL_UpperBlitScaled\n\n/**\n * Perform a scaled surface copy to a destination surface.\n *\n * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is\n * merely a macro for this function with a less confusing name.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitScaled\n */\nextern DECLSPEC int SDLCALL SDL_UpperBlitScaled\n    (SDL_Surface * src, const SDL_Rect * srcrect,\n    SDL_Surface * dst, SDL_Rect * dstrect);\n\n/**\n * Perform low-level surface scaled blitting only.\n *\n * This is a semi-private function and it performs low-level surface blitting,\n * assuming the input rectangles have already been clipped.\n *\n * \\param src the SDL_Surface structure to be copied from\n * \\param srcrect the SDL_Rect structure representing the rectangle to be\n *                copied\n * \\param dst the SDL_Surface structure that is the blit target\n * \\param dstrect the SDL_Rect structure representing the rectangle that is\n *                copied into\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_BlitScaled\n */\nextern DECLSPEC int SDLCALL SDL_LowerBlitScaled\n    (SDL_Surface * src, SDL_Rect * srcrect,\n    SDL_Surface * dst, SDL_Rect * dstrect);\n\n/**\n * Set the YUV conversion mode\n *\n * \\since This function is available since SDL 2.0.8.\n */\nextern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);\n\n/**\n * Get the YUV conversion mode\n *\n * \\since This function is available since SDL 2.0.8.\n */\nextern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);\n\n/**\n * Get the YUV conversion mode, returning the correct mode for the resolution\n * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC\n *\n * \\since This function is available since SDL 2.0.8.\n */\nextern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_surface_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_system.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_system.h\n *\n *  Include file for platform specific SDL API functions\n */\n\n#ifndef SDL_system_h_\n#define SDL_system_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_keyboard.h\"\n#include \"SDL_render.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* Platform specific functions for Windows */\n#if defined(__WIN32__) || defined(__GDK__)\n\t\ntypedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);\n\n/**\n * Set a callback for every Windows message, run before TranslateMessage().\n *\n * \\param callback The SDL_WindowsMessageHook function to call.\n * \\param userdata a pointer to pass to every iteration of `callback`\n *\n * \\since This function is available since SDL 2.0.4.\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);\n\n#endif /* defined(__WIN32__) || defined(__GDK__) */\n\n#if defined(__WIN32__) || defined(__WINGDK__)\n\n/**\n * Get the D3D9 adapter index that matches the specified display index.\n *\n * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and\n * controls on which monitor a full screen application will appear.\n *\n * \\param displayIndex the display index for which to get the D3D9 adapter\n *                     index\n * \\returns the D3D9 adapter index on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.1.\n */\nextern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );\n\ntypedef struct IDirect3DDevice9 IDirect3DDevice9;\n\n/**\n * Get the D3D9 device associated with a renderer.\n *\n * Once you are done using the device, you should release it to avoid a\n * resource leak.\n *\n * \\param renderer the renderer from which to get the associated D3D device\n * \\returns the D3D9 device associated with given renderer or NULL if it is\n *          not a D3D9 renderer; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.1.\n */\nextern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);\n\ntypedef struct ID3D11Device ID3D11Device;\n\n/**\n * Get the D3D11 device associated with a renderer.\n *\n * Once you are done using the device, you should release it to avoid a\n * resource leak.\n *\n * \\param renderer the renderer from which to get the associated D3D11 device\n * \\returns the D3D11 device associated with given renderer or NULL if it is\n *          not a D3D11 renderer; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer);\n\n#endif /* defined(__WIN32__) || defined(__WINGDK__) */\n\n#if defined(__WIN32__) || defined(__GDK__)\n\ntypedef struct ID3D12Device ID3D12Device;\n\n/**\n * Get the D3D12 device associated with a renderer.\n *\n * Once you are done using the device, you should release it to avoid a\n * resource leak.\n *\n * \\param renderer the renderer from which to get the associated D3D12 device\n * \\returns the D3D12 device associated with given renderer or NULL if it is\n *          not a D3D12 renderer; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer);\n\n#endif /* defined(__WIN32__) || defined(__GDK__) */\n\n#if defined(__WIN32__) || defined(__WINGDK__)\n\n/**\n * Get the DXGI Adapter and Output indices for the specified display index.\n *\n * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and\n * `EnumOutputs` respectively to get the objects required to create a DX10 or\n * DX11 device and swap chain.\n *\n * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it\n * returns an SDL_bool.\n *\n * \\param displayIndex the display index for which to get both indices\n * \\param adapterIndex a pointer to be filled in with the adapter index\n * \\param outputIndex a pointer to be filled in with the output index\n * \\returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.2.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );\n\n#endif /* defined(__WIN32__) || defined(__WINGDK__) */\n\n/* Platform specific functions for Linux */\n#ifdef __LINUX__\n\n/**\n * Sets the UNIX nice value for a thread.\n *\n * This uses setpriority() if possible, and RealtimeKit if available.\n *\n * \\param threadID the Unix thread ID to change priority of.\n * \\param priority The new, Unix-specific, priority value.\n * \\returns 0 on success, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);\n\n/**\n * Sets the priority (not nice level) and scheduling policy for a thread.\n *\n * This uses setpriority() if possible, and RealtimeKit if available.\n *\n * \\param threadID The Unix thread ID to change priority of.\n * \\param sdlPriority The new SDL_ThreadPriority value.\n * \\param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR,\n *                    SCHED_OTHER, etc...)\n * \\returns 0 on success, or -1 on error.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy);\n \n#endif /* __LINUX__ */\n\t\n/* Platform specific functions for iOS */\n#ifdef __IPHONEOS__\n\n#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)\n\n/**\n * Use this function to set the animation callback on Apple iOS.\n *\n * The function prototype for `callback` is:\n *\n * ```c\n * void callback(void* callbackParam);\n * ```\n *\n * Where its parameter, `callbackParam`, is what was passed as `callbackParam`\n * to SDL_iPhoneSetAnimationCallback().\n *\n * This function is only available on Apple iOS.\n *\n * For more information see:\n * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md\n *\n * This functions is also accessible using the macro\n * SDL_iOSSetAnimationCallback() since SDL 2.0.4.\n *\n * \\param window the window for which the animation callback should be set\n * \\param interval the number of frames after which **callback** will be\n *                 called\n * \\param callback the function to call for every frame.\n * \\param callbackParam a pointer that is passed to `callback`.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_iPhoneSetEventPump\n */\nextern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam);\n\n#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)\n\n/**\n * Use this function to enable or disable the SDL event pump on Apple iOS.\n *\n * This function is only available on Apple iOS.\n *\n * This functions is also accessible using the macro SDL_iOSSetEventPump()\n * since SDL 2.0.4.\n *\n * \\param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_iPhoneSetAnimationCallback\n */\nextern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);\n\n#endif /* __IPHONEOS__ */\n\n\n/* Platform specific functions for Android */\n#ifdef __ANDROID__\n\n/**\n * Get the Android Java Native Interface Environment of the current thread.\n *\n * This is the JNIEnv one needs to access the Java virtual machine from native\n * code, and is needed for many Android APIs to be usable from C.\n *\n * The prototype of the function in SDL's code actually declare a void* return\n * type, even if the implementation returns a pointer to a JNIEnv. The\n * rationale being that the SDL headers can avoid including jni.h.\n *\n * \\returns a pointer to Java native interface object (JNIEnv) to which the\n *          current thread is attached, or 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AndroidGetActivity\n */\nextern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);\n\n/**\n * Retrieve the Java instance of the Android activity class.\n *\n * The prototype of the function in SDL's code actually declares a void*\n * return type, even if the implementation returns a jobject. The rationale\n * being that the SDL headers can avoid including jni.h.\n *\n * The jobject returned by the function is a local reference and must be\n * released by the caller. See the PushLocalFrame() and PopLocalFrame() or\n * DeleteLocalRef() functions of the Java native interface:\n *\n * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html\n *\n * \\returns the jobject representing the instance of the Activity class of the\n *          Android application, or NULL on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AndroidGetJNIEnv\n */\nextern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);\n\n/**\n * Query Android API level of the current device.\n *\n * - API level 31: Android 12\n * - API level 30: Android 11\n * - API level 29: Android 10\n * - API level 28: Android 9\n * - API level 27: Android 8.1\n * - API level 26: Android 8.0\n * - API level 25: Android 7.1\n * - API level 24: Android 7.0\n * - API level 23: Android 6.0\n * - API level 22: Android 5.1\n * - API level 21: Android 5.0\n * - API level 20: Android 4.4W\n * - API level 19: Android 4.4\n * - API level 18: Android 4.3\n * - API level 17: Android 4.2\n * - API level 16: Android 4.1\n * - API level 15: Android 4.0.3\n * - API level 14: Android 4.0\n * - API level 13: Android 3.2\n * - API level 12: Android 3.1\n * - API level 11: Android 3.0\n * - API level 10: Android 2.3.3\n *\n * \\returns the Android API level.\n *\n * \\since This function is available since SDL 2.0.12.\n */\nextern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);\n\n/**\n * Query if the application is running on Android TV.\n *\n * \\returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.8.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);\n\n/**\n * Query if the application is running on a Chromebook.\n *\n * \\returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);\n\n/**\n * Query if the application is running on a Samsung DeX docking station.\n *\n * \\returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);\n\n/**\n * Trigger the Android system back button behavior.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);\n\n/**\n   See the official Android developer guide for more information:\n   http://developer.android.com/guide/topics/data/data-storage.html\n*/\n#define SDL_ANDROID_EXTERNAL_STORAGE_READ   0x01\n#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE  0x02\n\n/**\n * Get the path used for internal storage for this application.\n *\n * This path is unique to your application and cannot be written to by other\n * applications.\n *\n * Your internal storage path is typically:\n * `/data/data/your.app.package/files`.\n *\n * \\returns the path used for internal storage or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AndroidGetExternalStorageState\n */\nextern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);\n\n/**\n * Get the current state of external storage.\n *\n * The current state of external storage, a bitmask of these values:\n * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`.\n *\n * If external storage is currently unavailable, this will return 0.\n *\n * \\returns the current state of external storage on success or 0 on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AndroidGetExternalStoragePath\n */\nextern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);\n\n/**\n * Get the path used for external storage for this application.\n *\n * This path is unique to your application, but is public and can be written\n * to by other applications.\n *\n * Your external storage path is typically:\n * `/storage/sdcard0/Android/data/your.app.package/files`.\n *\n * \\returns the path used for external storage for this application on success\n *          or NULL on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AndroidGetExternalStorageState\n */\nextern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);\n\n/**\n * Request permissions at runtime.\n *\n * This blocks the calling thread until the permission is granted or denied.\n *\n * \\param permission The permission to request.\n * \\returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.14.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission);\n\n/**\n * Shows an Android toast notification.\n *\n * Toasts are a sort of lightweight notification that are unique to Android.\n *\n * https://developer.android.com/guide/topics/ui/notifiers/toasts\n *\n * Shows toast in UI thread.\n *\n * For the `gravity` parameter, choose a value from here, or -1 if you don't\n * have a preference:\n *\n * https://developer.android.com/reference/android/view/Gravity\n *\n * \\param message text message to be shown\n * \\param duration 0=short, 1=long\n * \\param gravity where the notification should appear on the screen.\n * \\param xoffset set this parameter only when gravity >=0\n * \\param yoffset set this parameter only when gravity >=0\n * \\returns 0 if success, -1 if any error occurs.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset);\n\n/**\n * Send a user command to SDLActivity.\n *\n * Override \"boolean onUnhandledMessage(Message msg)\" to handle the message.\n *\n * \\param command user command that must be greater or equal to 0x8000\n * \\param param user parameter\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param);\n\n#endif /* __ANDROID__ */\n\n/* Platform specific functions for WinRT */\n#ifdef __WINRT__\n\n/**\n *  \\brief WinRT / Windows Phone path types\n */\ntypedef enum\n{\n    /** \\brief The installed app's root directory.\n        Files here are likely to be read-only. */\n    SDL_WINRT_PATH_INSTALLED_LOCATION,\n\n    /** \\brief The app's local data store.  Files may be written here */\n    SDL_WINRT_PATH_LOCAL_FOLDER,\n\n    /** \\brief The app's roaming data store.  Unsupported on Windows Phone.\n        Files written here may be copied to other machines via a network\n        connection.\n    */\n    SDL_WINRT_PATH_ROAMING_FOLDER,\n\n    /** \\brief The app's temporary data store.  Unsupported on Windows Phone.\n        Files written here may be deleted at any time. */\n    SDL_WINRT_PATH_TEMP_FOLDER\n} SDL_WinRT_Path;\n\n\n/**\n *  \\brief WinRT Device Family\n */\ntypedef enum\n{\n    /** \\brief Unknown family  */\n    SDL_WINRT_DEVICEFAMILY_UNKNOWN,\n\n    /** \\brief Desktop family*/\n    SDL_WINRT_DEVICEFAMILY_DESKTOP,\n\n    /** \\brief Mobile family (for example smartphone) */\n    SDL_WINRT_DEVICEFAMILY_MOBILE,\n\n    /** \\brief XBox family */\n    SDL_WINRT_DEVICEFAMILY_XBOX,\n} SDL_WinRT_DeviceFamily;\n\n\n/**\n * Retrieve a WinRT defined path on the local file system.\n *\n * Not all paths are available on all versions of Windows. This is especially\n * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path\n * for more information on which path types are supported where.\n *\n * Documentation on most app-specific path types on WinRT can be found on\n * MSDN, at the URL:\n *\n * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx\n *\n * \\param pathType the type of path to retrieve, one of SDL_WinRT_Path\n * \\returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if\n *          the path is not available for any reason; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.3.\n *\n * \\sa SDL_WinRTGetFSPathUTF8\n */\nextern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);\n\n/**\n * Retrieve a WinRT defined path on the local file system.\n *\n * Not all paths are available on all versions of Windows. This is especially\n * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path\n * for more information on which path types are supported where.\n *\n * Documentation on most app-specific path types on WinRT can be found on\n * MSDN, at the URL:\n *\n * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx\n *\n * \\param pathType the type of path to retrieve, one of SDL_WinRT_Path\n * \\returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if\n *          the path is not available for any reason; call SDL_GetError() for\n *          more information.\n *\n * \\since This function is available since SDL 2.0.3.\n *\n * \\sa SDL_WinRTGetFSPathUNICODE\n */\nextern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);\n\n/**\n * Detects the device family of WinRT platform at runtime.\n *\n * \\returns a value from the SDL_WinRT_DeviceFamily enum.\n *\n * \\since This function is available since SDL 2.0.8.\n */\nextern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();\n\n#endif /* __WINRT__ */\n\n/**\n * Query if the current device is a tablet.\n *\n * If SDL can't determine this, it will return SDL_FALSE.\n *\n * \\returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.9.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);\n\n/* Functions used by iOS application delegates to notify SDL about state changes */\nextern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void);\nextern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void);\nextern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void);\nextern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void);\nextern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void);\nextern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void);\n#ifdef __IPHONEOS__\nextern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);\n#endif\n\n/* Functions used only by GDK */\n#if defined(__GDK__)\ntypedef struct XTaskQueueObject *XTaskQueueHandle;\ntypedef struct XUser *XUserHandle;\n\n/**\n * Gets a reference to the global async task queue handle for GDK,\n * initializing if needed.\n *\n * Once you are done with the task queue, you should call\n * XTaskQueueCloseHandle to reduce the reference count to avoid a resource\n * leak.\n *\n * \\param outTaskQueue a pointer to be filled in with task queue handle.\n * \\returns 0 if success, -1 if any error occurs.\n *\n * \\since This function is available since SDL 2.24.0.\n */\nextern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue);\n\n/**\n * Gets a reference to the default user handle for GDK.\n *\n * This is effectively a synchronous version of XUserAddAsync, which always\n * prefers the default user and allows a sign-in UI.\n *\n * \\param outUserHandle a pointer to be filled in with the default user\n *                      handle.\n * \\returns 0 if success, -1 if any error occurs.\n *\n * \\since This function is available since SDL 2.28.0.\n */\nextern DECLSPEC int SDLCALL SDL_GDKGetDefaultUser(XUserHandle * outUserHandle);\n\n#endif\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_system_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_syswm.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_syswm.h\n *\n *  Include file for SDL custom system window manager hooks.\n */\n\n#ifndef SDL_syswm_h_\n#define SDL_syswm_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_video.h\"\n#include \"SDL_version.h\"\n\n/**\n *  \\brief SDL_syswm.h\n *\n *  Your application has access to a special type of event ::SDL_SYSWMEVENT,\n *  which contains window-manager specific information and arrives whenever\n *  an unhandled window event occurs.  This event is ignored by default, but\n *  you can enable it with SDL_EventState().\n */\nstruct SDL_SysWMinfo;\n\n#if !defined(SDL_PROTOTYPES_ONLY)\n\n#if defined(SDL_VIDEO_DRIVER_WINDOWS)\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#ifndef NOMINMAX   /* don't define min() and max(). */\n#define NOMINMAX\n#endif\n#include <windows.h>\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_WINRT)\n#include <Inspectable.h>\n#endif\n\n/* This is the structure for custom window manager events */\n#if defined(SDL_VIDEO_DRIVER_X11)\n#if defined(__APPLE__) && defined(__MACH__)\n/* conflicts with Quickdraw.h */\n#define Cursor X11Cursor\n#endif\n\n#include <X11/Xlib.h>\n#include <X11/Xatom.h>\n\n#if defined(__APPLE__) && defined(__MACH__)\n/* matches the re-define above */\n#undef Cursor\n#endif\n\n#endif /* defined(SDL_VIDEO_DRIVER_X11) */\n\n#if defined(SDL_VIDEO_DRIVER_DIRECTFB)\n#include <directfb.h>\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_COCOA)\n#ifdef __OBJC__\n@class NSWindow;\n#else\ntypedef struct _NSWindow NSWindow;\n#endif\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_UIKIT)\n#ifdef __OBJC__\n#include <UIKit/UIKit.h>\n#else\ntypedef struct _UIWindow UIWindow;\ntypedef struct _UIViewController UIViewController;\n#endif\ntypedef Uint32 GLuint;\n#endif\n\n#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL)\n#define SDL_METALVIEW_TAG 255\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_ANDROID)\ntypedef struct ANativeWindow ANativeWindow;\ntypedef void *EGLSurface;\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_VIVANTE)\n#include \"SDL_egl.h\"\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_OS2)\n#define INCL_WIN\n#include <os2.h>\n#endif\n#endif /* SDL_PROTOTYPES_ONLY */\n\n#if defined(SDL_VIDEO_DRIVER_KMSDRM)\nstruct gbm_device;\n#endif\n\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if !defined(SDL_PROTOTYPES_ONLY)\n/**\n *  These are the various supported windowing subsystems\n */\ntypedef enum\n{\n    SDL_SYSWM_UNKNOWN,\n    SDL_SYSWM_WINDOWS,\n    SDL_SYSWM_X11,\n    SDL_SYSWM_DIRECTFB,\n    SDL_SYSWM_COCOA,\n    SDL_SYSWM_UIKIT,\n    SDL_SYSWM_WAYLAND,\n    SDL_SYSWM_MIR,  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */\n    SDL_SYSWM_WINRT,\n    SDL_SYSWM_ANDROID,\n    SDL_SYSWM_VIVANTE,\n    SDL_SYSWM_OS2,\n    SDL_SYSWM_HAIKU,\n    SDL_SYSWM_KMSDRM,\n    SDL_SYSWM_RISCOS\n} SDL_SYSWM_TYPE;\n\n/**\n *  The custom event structure.\n */\nstruct SDL_SysWMmsg\n{\n    SDL_version version;\n    SDL_SYSWM_TYPE subsystem;\n    union\n    {\n#if defined(SDL_VIDEO_DRIVER_WINDOWS)\n        struct {\n            HWND hwnd;                  /**< The window for the message */\n            UINT msg;                   /**< The type of message */\n            WPARAM wParam;              /**< WORD message parameter */\n            LPARAM lParam;              /**< LONG message parameter */\n        } win;\n#endif\n#if defined(SDL_VIDEO_DRIVER_X11)\n        struct {\n            XEvent event;\n        } x11;\n#endif\n#if defined(SDL_VIDEO_DRIVER_DIRECTFB)\n        struct {\n            DFBEvent event;\n        } dfb;\n#endif\n#if defined(SDL_VIDEO_DRIVER_COCOA)\n        struct\n        {\n            /* Latest version of Xcode clang complains about empty structs in C v. C++:\n                 error: empty struct has size 0 in C, size 1 in C++\n             */\n            int dummy;\n            /* No Cocoa window events yet */\n        } cocoa;\n#endif\n#if defined(SDL_VIDEO_DRIVER_UIKIT)\n        struct\n        {\n            int dummy;\n            /* No UIKit window events yet */\n        } uikit;\n#endif\n#if defined(SDL_VIDEO_DRIVER_VIVANTE)\n        struct\n        {\n            int dummy;\n            /* No Vivante window events yet */\n        } vivante;\n#endif\n#if defined(SDL_VIDEO_DRIVER_OS2)\n        struct\n        {\n            BOOL fFrame;                /**< TRUE if hwnd is a frame window */\n            HWND hwnd;                  /**< The window receiving the message */\n            ULONG msg;                  /**< The message identifier */\n            MPARAM mp1;                 /**< The first first message parameter */\n            MPARAM mp2;                 /**< The second first message parameter */\n        } os2;\n#endif\n        /* Can't have an empty union */\n        int dummy;\n    } msg;\n};\n\n/**\n *  The custom window manager information structure.\n *\n *  When this structure is returned, it holds information about which\n *  low level system it is using, and will be one of SDL_SYSWM_TYPE.\n */\nstruct SDL_SysWMinfo\n{\n    SDL_version version;\n    SDL_SYSWM_TYPE subsystem;\n    union\n    {\n#if defined(SDL_VIDEO_DRIVER_WINDOWS)\n        struct\n        {\n            HWND window;                /**< The window handle */\n            HDC hdc;                    /**< The window device context */\n            HINSTANCE hinstance;        /**< The instance handle */\n        } win;\n#endif\n#if defined(SDL_VIDEO_DRIVER_WINRT)\n        struct\n        {\n            IInspectable * window;      /**< The WinRT CoreWindow */\n        } winrt;\n#endif\n#if defined(SDL_VIDEO_DRIVER_X11)\n        struct\n        {\n            Display *display;           /**< The X11 display */\n            Window window;              /**< The X11 window */\n        } x11;\n#endif\n#if defined(SDL_VIDEO_DRIVER_DIRECTFB)\n        struct\n        {\n            IDirectFB *dfb;             /**< The directfb main interface */\n            IDirectFBWindow *window;    /**< The directfb window handle */\n            IDirectFBSurface *surface;  /**< The directfb client surface */\n        } dfb;\n#endif\n#if defined(SDL_VIDEO_DRIVER_COCOA)\n        struct\n        {\n#if defined(__OBJC__) && defined(__has_feature)\n        #if __has_feature(objc_arc)\n            NSWindow __unsafe_unretained *window; /**< The Cocoa window */\n        #else\n            NSWindow *window;                     /**< The Cocoa window */\n        #endif\n#else\n            NSWindow *window;                     /**< The Cocoa window */\n#endif\n        } cocoa;\n#endif\n#if defined(SDL_VIDEO_DRIVER_UIKIT)\n        struct\n        {\n#if defined(__OBJC__) && defined(__has_feature)\n        #if __has_feature(objc_arc)\n            UIWindow __unsafe_unretained *window; /**< The UIKit window */\n        #else\n            UIWindow *window;                     /**< The UIKit window */\n        #endif\n#else\n            UIWindow *window;                     /**< The UIKit window */\n#endif\n            GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */\n            GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */\n            GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */\n        } uikit;\n#endif\n#if defined(SDL_VIDEO_DRIVER_WAYLAND)\n        struct\n        {\n            struct wl_display *display;             /**< Wayland display */\n            struct wl_surface *surface;             /**< Wayland surface */\n            void *shell_surface;                    /**< DEPRECATED Wayland shell_surface (window manager handle) */\n            struct wl_egl_window *egl_window;       /**< Wayland EGL window (native window) */\n            struct xdg_surface *xdg_surface;        /**< Wayland xdg surface (window manager handle) */\n            struct xdg_toplevel *xdg_toplevel;      /**< Wayland xdg toplevel role */\n            struct xdg_popup *xdg_popup;            /**< Wayland xdg popup role */\n            struct xdg_positioner *xdg_positioner;  /**< Wayland xdg positioner, for popup */\n        } wl;\n#endif\n#if defined(SDL_VIDEO_DRIVER_MIR)  /* no longer available, left for API/ABI compatibility. Remove in 2.1! */\n        struct\n        {\n            void *connection;  /**< Mir display server connection */\n            void *surface;  /**< Mir surface */\n        } mir;\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_ANDROID)\n        struct\n        {\n            ANativeWindow *window;\n            EGLSurface surface;\n        } android;\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_OS2)\n        struct\n        {\n            HWND hwnd;                  /**< The window handle */\n            HWND hwndFrame;             /**< The frame window handle */\n        } os2;\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_VIVANTE)\n        struct\n        {\n            EGLNativeDisplayType display;\n            EGLNativeWindowType window;\n        } vivante;\n#endif\n\n#if defined(SDL_VIDEO_DRIVER_KMSDRM)\n        struct\n        {\n            int dev_index;               /**< Device index (ex: the X in /dev/dri/cardX) */\n            int drm_fd;                  /**< DRM FD (unavailable on Vulkan windows) */\n            struct gbm_device *gbm_dev;  /**< GBM device (unavailable on Vulkan windows) */\n        } kmsdrm;\n#endif\n\n        /* Make sure this union is always 64 bytes (8 64-bit pointers). */\n        /* Be careful not to overflow this if you add a new target! */\n        Uint8 dummy[64];\n    } info;\n};\n\n#endif /* SDL_PROTOTYPES_ONLY */\n\ntypedef struct SDL_SysWMinfo SDL_SysWMinfo;\n\n\n/**\n * Get driver-specific information about a window.\n *\n * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo.\n *\n * The caller must initialize the `info` structure's version by using\n * `SDL_VERSION(&info.version)`, and then this function will fill in the rest\n * of the structure with information about the given window.\n *\n * \\param window the window about which information is being requested\n * \\param info an SDL_SysWMinfo structure filled in with window information\n * \\returns SDL_TRUE if the function is implemented and the `version` member\n *          of the `info` struct is valid, or SDL_FALSE if the information\n *          could not be retrieved; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,\n                                                     SDL_SysWMinfo * info);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_syswm_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n#ifndef SDL_test_h_\n#define SDL_test_h_\n\n#include \"SDL.h\"\n#include \"SDL_test_assert.h\"\n#include \"SDL_test_common.h\"\n#include \"SDL_test_compare.h\"\n#include \"SDL_test_crc32.h\"\n#include \"SDL_test_font.h\"\n#include \"SDL_test_fuzzer.h\"\n#include \"SDL_test_harness.h\"\n#include \"SDL_test_images.h\"\n#include \"SDL_test_log.h\"\n#include \"SDL_test_md5.h\"\n#include \"SDL_test_memory.h\"\n#include \"SDL_test_random.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Global definitions */\n\n/*\n * Note: Maximum size of SDLTest log message is less than SDL's limit\n * to ensure we can fit additional information such as the timestamp.\n */\n#define SDLTEST_MAX_LOGMESSAGE_LENGTH   3584\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_assert.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_assert.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n *\n * Assert API for test code and test cases\n *\n */\n\n#ifndef SDL_test_assert_h_\n#define SDL_test_assert_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\brief Fails the assert.\n */\n#define ASSERT_FAIL     0\n\n/**\n * \\brief Passes the assert.\n */\n#define ASSERT_PASS     1\n\n/**\n * \\brief Assert that logs and break execution flow on failures.\n *\n * \\param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).\n * \\param assertDescription Message to log with the assert describing it.\n */\nvoid SDLTest_Assert(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * \\brief Assert for test cases that logs but does not break execution flow on failures. Updates assertion counters.\n *\n * \\param assertCondition Evaluated condition or variable to assert; fail (==0) or pass (!=0).\n * \\param assertDescription Message to log with the assert describing it.\n *\n * \\returns the assertCondition so it can be used to externally to break execution flow if desired.\n */\nint SDLTest_AssertCheck(int assertCondition, SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n * \\brief Explicitly pass without checking an assertion condition. Updates assertion counter.\n *\n * \\param assertDescription Message to log with the assert describing it.\n */\nvoid SDLTest_AssertPass(SDL_PRINTF_FORMAT_STRING const char *assertDescription, ...) SDL_PRINTF_VARARG_FUNC(1);\n\n/**\n * \\brief Resets the assert summary counters to zero.\n */\nvoid SDLTest_ResetAssertSummary(void);\n\n/**\n * \\brief Logs summary of all assertions (total, pass, fail) since last reset as INFO or ERROR.\n */\nvoid SDLTest_LogAssertSummary(void);\n\n\n/**\n * \\brief Converts the current assert summary state to a test result.\n *\n * \\returns TEST_RESULT_PASSED, TEST_RESULT_FAILED, or TEST_RESULT_NO_ASSERT\n */\nint SDLTest_AssertSummaryToTestResult(void);\n\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_assert_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_common.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_common.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/* Ported from original test\\common.h file. */\n\n#ifndef SDL_test_common_h_\n#define SDL_test_common_h_\n\n#include \"SDL.h\"\n\n#if defined(__PSP__)\n#define DEFAULT_WINDOW_WIDTH  480\n#define DEFAULT_WINDOW_HEIGHT 272\n#elif defined(__VITA__)\n#define DEFAULT_WINDOW_WIDTH  960\n#define DEFAULT_WINDOW_HEIGHT 544\n#else\n#define DEFAULT_WINDOW_WIDTH  640\n#define DEFAULT_WINDOW_HEIGHT 480\n#endif\n\n#define VERBOSE_VIDEO   0x00000001\n#define VERBOSE_MODES   0x00000002\n#define VERBOSE_RENDER  0x00000004\n#define VERBOSE_EVENT   0x00000008\n#define VERBOSE_AUDIO   0x00000010\n#define VERBOSE_MOTION  0x00000020\n\ntypedef struct\n{\n    /* SDL init flags */\n    char **argv;\n    Uint32 flags;\n    Uint32 verbose;\n\n    /* Video info */\n    const char *videodriver;\n    int display;\n    const char *window_title;\n    const char *window_icon;\n    Uint32 window_flags;\n    SDL_bool flash_on_focus_loss;\n    int window_x;\n    int window_y;\n    int window_w;\n    int window_h;\n    int window_minW;\n    int window_minH;\n    int window_maxW;\n    int window_maxH;\n    int logical_w;\n    int logical_h;\n    float scale;\n    int depth;\n    int refresh_rate;\n    int num_windows;\n    SDL_Window **windows;\n\n    /* Renderer info */\n    const char *renderdriver;\n    Uint32 render_flags;\n    SDL_bool skip_renderer;\n    SDL_Renderer **renderers;\n    SDL_Texture **targets;\n\n    /* Audio info */\n    const char *audiodriver;\n    SDL_AudioSpec audiospec;\n\n    /* GL settings */\n    int gl_red_size;\n    int gl_green_size;\n    int gl_blue_size;\n    int gl_alpha_size;\n    int gl_buffer_size;\n    int gl_depth_size;\n    int gl_stencil_size;\n    int gl_double_buffer;\n    int gl_accum_red_size;\n    int gl_accum_green_size;\n    int gl_accum_blue_size;\n    int gl_accum_alpha_size;\n    int gl_stereo;\n    int gl_multisamplebuffers;\n    int gl_multisamplesamples;\n    int gl_retained_backing;\n    int gl_accelerated;\n    int gl_major_version;\n    int gl_minor_version;\n    int gl_debug;\n    int gl_profile_mask;\n\n    /* Additional fields added in 2.0.18 */\n    SDL_Rect confine;\n\n} SDLTest_CommonState;\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Function prototypes */\n\n/**\n * \\brief Parse command line parameters and create common state.\n *\n * \\param argv Array of command line parameters\n * \\param flags Flags indicating which subsystem to initialize (i.e. SDL_INIT_VIDEO | SDL_INIT_AUDIO)\n *\n * \\returns a newly allocated common state object.\n */\nSDLTest_CommonState *SDLTest_CommonCreateState(char **argv, Uint32 flags);\n\n/**\n * \\brief Process one common argument.\n *\n * \\param state The common state describing the test window to create.\n * \\param index The index of the argument to process in argv[].\n *\n * \\returns the number of arguments processed (i.e. 1 for --fullscreen, 2 for --video [videodriver], or -1 on error.\n */\nint SDLTest_CommonArg(SDLTest_CommonState * state, int index);\n\n\n/**\n * \\brief Logs command line usage info.\n *\n * This logs the appropriate command line options for the subsystems in use\n *  plus other common options, and then any application-specific options.\n *  This uses the SDL_Log() function and splits up output to be friendly to\n *  80-character-wide terminals.\n *\n * \\param state The common state describing the test window for the app.\n * \\param argv0 argv[0], as passed to main/SDL_main.\n * \\param options an array of strings for application specific options. The last element of the array should be NULL.\n */\nvoid SDLTest_CommonLogUsage(SDLTest_CommonState * state, const char *argv0, const char **options);\n\n/**\n * \\brief Returns common usage information\n *\n * You should (probably) be using SDLTest_CommonLogUsage() instead, but this\n *  function remains for binary compatibility. Strings returned from this\n *  function are valid until SDLTest_CommonQuit() is called, in which case\n *  those strings' memory is freed and can no longer be used.\n *\n * \\param state The common state describing the test window to create.\n * \\returns a string with usage information\n */\nconst char *SDLTest_CommonUsage(SDLTest_CommonState * state);\n\n/**\n * \\brief Open test window.\n *\n * \\param state The common state describing the test window to create.\n *\n * \\returns SDL_TRUE if initialization succeeded, false otherwise\n */\nSDL_bool SDLTest_CommonInit(SDLTest_CommonState * state);\n\n/**\n * \\brief Easy argument handling when test app doesn't need any custom args.\n *\n * \\param state The common state describing the test window to create.\n * \\param argc argc, as supplied to SDL_main\n * \\param argv argv, as supplied to SDL_main\n *\n * \\returns SDL_FALSE if app should quit, true otherwise.\n */\nSDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState * state, const int argc, char **argv);\n\n/**\n * \\brief Common event handler for test windows.\n *\n * \\param state The common state used to create test window.\n * \\param event The event to handle.\n * \\param done Flag indicating we are done.\n *\n */\nvoid SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done);\n\n/**\n * \\brief Close test window.\n *\n * \\param state The common state used to create test window.\n *\n */\nvoid SDLTest_CommonQuit(SDLTest_CommonState * state);\n\n/**\n * \\brief Draws various window information (position, size, etc.) to the renderer.\n *\n * \\param renderer The renderer to draw to.\n * \\param window The window whose information should be displayed.\n * \\param usedHeight Returns the height used, so the caller can draw more below.\n *\n */\nvoid SDLTest_CommonDrawWindowInfo(SDL_Renderer * renderer, SDL_Window * window, int * usedHeight);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_common_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_compare.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_compare.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n\n Defines comparison functions (i.e. for surfaces).\n\n*/\n\n#ifndef SDL_test_compare_h_\n#define SDL_test_compare_h_\n\n#include \"SDL.h\"\n\n#include \"SDL_test_images.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\brief Compares a surface and with reference image data for equality\n *\n * \\param surface Surface used in comparison\n * \\param referenceSurface Test Surface used in comparison\n * \\param allowable_error Allowable difference (=sum of squared difference for each RGB component) in blending accuracy.\n *\n * \\returns 0 if comparison succeeded, >0 (=number of pixels for which the comparison failed) if comparison failed, -1 if any of the surfaces were NULL, -2 if the surface sizes differ.\n */\nint SDLTest_CompareSurfaces(SDL_Surface *surface, SDL_Surface *referenceSurface, int allowable_error);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_compare_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_crc32.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_crc32.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n\n Implements CRC32 calculations (default output is Perl String::CRC32 compatible).\n\n*/\n\n#ifndef SDL_test_crc32_h_\n#define SDL_test_crc32_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* ------------ Definitions --------- */\n\n/* Definition shared by all CRC routines */\n\n#ifndef CrcUint32\n #define CrcUint32  unsigned int\n#endif\n#ifndef CrcUint8\n #define CrcUint8   unsigned char\n#endif\n\n#ifdef ORIGINAL_METHOD\n #define CRC32_POLY 0x04c11db7   /* AUTODIN II, Ethernet, & FDDI */\n#else\n #define CRC32_POLY 0xEDB88320   /* Perl String::CRC32 compatible */\n#endif\n\n/**\n * Data structure for CRC32 (checksum) computation\n */\n  typedef struct {\n    CrcUint32    crc32_table[256]; /* CRC table */\n  } SDLTest_Crc32Context;\n\n/* ---------- Function Prototypes ------------- */\n\n/**\n * \\brief Initialize the CRC context\n *\n * Note: The function initializes the crc table required for all crc calculations.\n *\n * \\param crcContext        pointer to context variable\n *\n * \\returns 0 for OK, -1 on error\n *\n */\n int SDLTest_Crc32Init(SDLTest_Crc32Context * crcContext);\n\n\n/**\n * \\brief calculate a crc32 from a data block\n *\n * \\param crcContext         pointer to context variable\n * \\param inBuf              input buffer to checksum\n * \\param inLen              length of input buffer\n * \\param crc32              pointer to Uint32 to store the final CRC into\n *\n * \\returns 0 for OK, -1 on error\n *\n */\nint SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);\n\n/* Same routine broken down into three steps */\nint SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);\nint SDLTest_Crc32CalcEnd(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32);\nint SDLTest_Crc32CalcBuffer(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);\n\n\n/**\n * \\brief clean up CRC context\n *\n * \\param crcContext        pointer to context variable\n *\n * \\returns 0 for OK, -1 on error\n *\n*/\n\nint SDLTest_Crc32Done(SDLTest_Crc32Context * crcContext);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_crc32_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_font.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_font.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n#ifndef SDL_test_font_h_\n#define SDL_test_font_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Function prototypes */\n\n#define FONT_CHARACTER_SIZE 8\n#define FONT_LINE_HEIGHT    (FONT_CHARACTER_SIZE + 2)\n\n/**\n *  \\brief Draw a string in the currently set font.\n *\n *  \\param renderer The renderer to draw on.\n *  \\param x The X coordinate of the upper left corner of the character.\n *  \\param y The Y coordinate of the upper left corner of the character.\n *  \\param c The character to draw.\n *\n *  \\returns 0 on success, -1 on failure.\n */\nint SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, Uint32 c);\n\n/**\n *  \\brief Draw a UTF-8 string in the currently set font.\n *\n *  The font currently only supports characters in the Basic Latin and Latin-1 Supplement sets.\n *\n *  \\param renderer The renderer to draw on.\n *  \\param x The X coordinate of the upper left corner of the string.\n *  \\param y The Y coordinate of the upper left corner of the string.\n *  \\param s The string to draw.\n *\n *  \\returns 0 on success, -1 on failure.\n */\nint SDLTest_DrawString(SDL_Renderer *renderer, int x, int y, const char *s);\n\n/**\n *  \\brief Data used for multi-line text output\n */\ntypedef struct SDLTest_TextWindow\n{\n    SDL_Rect rect;\n    int current;\n    int numlines;\n    char **lines;\n} SDLTest_TextWindow;\n\n/**\n *  \\brief Create a multi-line text output window\n *\n *  \\param x The X coordinate of the upper left corner of the window.\n *  \\param y The Y coordinate of the upper left corner of the window.\n *  \\param w The width of the window (currently ignored)\n *  \\param h The height of the window (currently ignored)\n *\n *  \\returns the new window, or NULL on failure.\n *\n *  \\since This function is available since SDL 2.24.0\n */\nSDLTest_TextWindow *SDLTest_TextWindowCreate(int x, int y, int w, int h);\n\n/**\n *  \\brief Display a multi-line text output window\n *\n *  This function should be called every frame to display the text\n *\n *  \\param textwin The text output window\n *  \\param renderer The renderer to use for display\n *\n *  \\since This function is available since SDL 2.24.0\n */\nvoid SDLTest_TextWindowDisplay(SDLTest_TextWindow *textwin, SDL_Renderer *renderer);\n\n/**\n *  \\brief Add text to a multi-line text output window\n *\n *  Adds UTF-8 text to the end of the current text. The newline character starts a\n *  new line of text. The backspace character deletes the last character or, if the\n *  line is empty, deletes the line and goes to the end of the previous line.\n *\n *  \\param textwin The text output window\n *  \\param fmt A printf() style format string\n *  \\param ...  additional parameters matching % tokens in the `fmt` string, if any\n *\n *  \\since This function is available since SDL 2.24.0\n */\nvoid SDLTest_TextWindowAddText(SDLTest_TextWindow *textwin, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2);\n\n/**\n *  \\brief Add text to a multi-line text output window\n *\n *  Adds UTF-8 text to the end of the current text. The newline character starts a\n *  new line of text. The backspace character deletes the last character or, if the\n *  line is empty, deletes the line and goes to the end of the previous line.\n *\n *  \\param textwin The text output window\n *  \\param text The text to add to the window\n *  \\param len The length, in bytes, of the text to add to the window\n *\n *  \\since This function is available since SDL 2.24.0\n */\nvoid SDLTest_TextWindowAddTextWithLength(SDLTest_TextWindow *textwin, const char *text, size_t len);\n\n/**\n *  \\brief Clear the text in a multi-line text output window\n *\n *  \\param textwin The text output window\n *\n *  \\since This function is available since SDL 2.24.0\n */\nvoid SDLTest_TextWindowClear(SDLTest_TextWindow *textwin);\n\n/**\n *  \\brief Free the storage associated with a multi-line text output window\n *\n *  \\param textwin The text output window\n *\n *  \\since This function is available since SDL 2.24.0\n */\nvoid SDLTest_TextWindowDestroy(SDLTest_TextWindow *textwin);\n\n/**\n *  \\brief Cleanup textures used by font drawing functions.\n */\nvoid SDLTest_CleanupTextDrawing(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_font_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_fuzzer.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_fuzzer.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n\n  Data generators for fuzzing test data in a reproducible way.\n\n*/\n\n#ifndef SDL_test_fuzzer_h_\n#define SDL_test_fuzzer_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*\n  Based on GSOC code by Markus Kauppila <markus.kauppila@gmail.com>\n*/\n\n\n/**\n * \\file\n * Note: The fuzzer implementation uses a static instance of random context\n * internally which makes it thread-UNsafe.\n */\n\n/**\n * Initializes the fuzzer for a test\n *\n * \\param execKey Execution \"Key\" that initializes the random number generator uniquely for the test.\n *\n */\nvoid SDLTest_FuzzerInit(Uint64 execKey);\n\n\n/**\n * Returns a random Uint8\n *\n * \\returns a generated integer\n */\nUint8 SDLTest_RandomUint8(void);\n\n/**\n * Returns a random Sint8\n *\n * \\returns a generated signed integer\n */\nSint8 SDLTest_RandomSint8(void);\n\n\n/**\n * Returns a random Uint16\n *\n * \\returns a generated integer\n */\nUint16 SDLTest_RandomUint16(void);\n\n/**\n * Returns a random Sint16\n *\n * \\returns a generated signed integer\n */\nSint16 SDLTest_RandomSint16(void);\n\n\n/**\n * Returns a random integer\n *\n * \\returns a generated integer\n */\nSint32 SDLTest_RandomSint32(void);\n\n\n/**\n * Returns a random positive integer\n *\n * \\returns a generated integer\n */\nUint32 SDLTest_RandomUint32(void);\n\n/**\n * Returns random Uint64.\n *\n * \\returns a generated integer\n */\nUint64 SDLTest_RandomUint64(void);\n\n\n/**\n * Returns random Sint64.\n *\n * \\returns a generated signed integer\n */\nSint64 SDLTest_RandomSint64(void);\n\n/**\n * \\returns a random float in range [0.0 - 1.0]\n */\nfloat SDLTest_RandomUnitFloat(void);\n\n/**\n * \\returns a random double in range [0.0 - 1.0]\n */\ndouble SDLTest_RandomUnitDouble(void);\n\n/**\n * \\returns a random float.\n *\n */\nfloat SDLTest_RandomFloat(void);\n\n/**\n * \\returns a random double.\n *\n */\ndouble SDLTest_RandomDouble(void);\n\n/**\n * Returns a random boundary value for Uint8 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20\n * RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21\n * RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100\n * RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns 0 (error set)\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or 0 with error set\n */\nUint8 SDLTest_RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Uint16 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20\n * RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21\n * RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100\n * RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns 0 (error set)\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or 0 with error set\n */\nUint16 SDLTest_RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Uint32 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20\n * RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21\n * RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100\n * RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns 0 (with error set)\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or 0 with error set\n */\nUint32 SDLTest_RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Uint64 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20\n * RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21\n * RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100\n * RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns 0 (with error set)\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or 0 with error set\n */\nUint64 SDLTest_RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Sint8 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20\n * RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9\n * RandomSint8BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100\n * RandomSint8BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT8_MIN (== error value) with error set\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or SINT8_MIN with error set\n */\nSint8 SDLTest_RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);\n\n\n/**\n * Returns a random boundary value for Sint16 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20\n * RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9\n * RandomSint16BoundaryValue(SINT16_MIN, 99, SDL_FALSE) returns 100\n * RandomSint16BoundaryValue(SINT16_MIN, SINT16_MAX, SDL_FALSE) returns SINT16_MIN (== error value) with error set\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or SINT16_MIN with error set\n */\nSint16 SDLTest_RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Sint32 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20\n * RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9\n * RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100\n * RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or SINT32_MIN with error set\n */\nSint32 SDLTest_RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);\n\n/**\n * Returns a random boundary value for Sint64 within the given boundaries.\n * Boundaries are inclusive, see the usage examples below. If validDomain\n * is true, the function will only return valid boundaries, otherwise non-valid\n * boundaries are also possible.\n * If boundary1 > boundary2, the values are swapped\n *\n * Usage examples:\n * RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20\n * RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9\n * RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100\n * RandomSint64BoundaryValue(SINT64_MIN, SINT64_MAX, SDL_FALSE) returns SINT64_MIN (== error value) and error set\n *\n * \\param boundary1 Lower boundary limit\n * \\param boundary2 Upper boundary limit\n * \\param validDomain Should the generated boundary be valid (=within the bounds) or not?\n *\n * \\returns a random boundary value for the given range and domain or SINT64_MIN with error set\n */\nSint64 SDLTest_RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);\n\n\n/**\n * Returns integer in range [min, max] (inclusive).\n * Min and max values can be negative values.\n * If Max in smaller than min, then the values are swapped.\n * Min and max are the same value, that value will be returned.\n *\n * \\param min Minimum inclusive value of returned random number\n * \\param max Maximum inclusive value of returned random number\n *\n * \\returns a generated random integer in range\n */\nSint32 SDLTest_RandomIntegerInRange(Sint32 min, Sint32 max);\n\n\n/**\n * Generates random null-terminated string. The minimum length for\n * the string is 1 character, maximum length for the string is 255\n * characters and it can contain ASCII characters from 32 to 126.\n *\n * Note: Returned string needs to be deallocated.\n *\n * \\returns a newly allocated random string; or NULL if length was invalid or string could not be allocated.\n */\nchar * SDLTest_RandomAsciiString(void);\n\n\n/**\n * Generates random null-terminated string. The maximum length for\n * the string is defined by the maxLength parameter.\n * String can contain ASCII characters from 32 to 126.\n *\n * Note: Returned string needs to be deallocated.\n *\n * \\param maxLength The maximum length of the generated string.\n *\n * \\returns a newly allocated random string; or NULL if maxLength was invalid or string could not be allocated.\n */\nchar * SDLTest_RandomAsciiStringWithMaximumLength(int maxLength);\n\n\n/**\n * Generates random null-terminated string. The length for\n * the string is defined by the size parameter.\n * String can contain ASCII characters from 32 to 126.\n *\n * Note: Returned string needs to be deallocated.\n *\n * \\param size The length of the generated string\n *\n * \\returns a newly allocated random string; or NULL if size was invalid or string could not be allocated.\n */\nchar * SDLTest_RandomAsciiStringOfSize(int size);\n\n/**\n * Get the invocation count for the fuzzer since last ...FuzzerInit.\n *\n * \\returns the invocation count.\n */\nint SDLTest_GetFuzzerInvocationCount(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_fuzzer_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_harness.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_harness.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n  Defines types for test case definitions and the test execution harness API.\n\n  Based on original GSOC code by Markus Kauppila <markus.kauppila@gmail.com>\n*/\n\n#ifndef SDL_test_h_arness_h\n#define SDL_test_h_arness_h\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/* ! Definitions for test case structures */\n#define TEST_ENABLED  1\n#define TEST_DISABLED 0\n\n/* ! Definition of all the possible test return values of the test case method */\n#define TEST_ABORTED        -1\n#define TEST_STARTED         0\n#define TEST_COMPLETED       1\n#define TEST_SKIPPED         2\n\n/* ! Definition of all the possible test results for the harness */\n#define TEST_RESULT_PASSED              0\n#define TEST_RESULT_FAILED              1\n#define TEST_RESULT_NO_ASSERT           2\n#define TEST_RESULT_SKIPPED             3\n#define TEST_RESULT_SETUP_FAILURE       4\n\n/* !< Function pointer to a test case setup function (run before every test) */\ntypedef void (*SDLTest_TestCaseSetUpFp)(void *arg);\n\n/* !< Function pointer to a test case function */\ntypedef int (*SDLTest_TestCaseFp)(void *arg);\n\n/* !< Function pointer to a test case teardown function (run after every test) */\ntypedef void  (*SDLTest_TestCaseTearDownFp)(void *arg);\n\n/**\n * Holds information about a single test case.\n */\ntypedef struct SDLTest_TestCaseReference {\n    /* !< Func2Stress */\n    SDLTest_TestCaseFp testCase;\n    /* !< Short name (or function name) \"Func2Stress\" */\n    const char *name;\n    /* !< Long name or full description \"This test pushes func2() to the limit.\" */\n    const char *description;\n    /* !< Set to TEST_ENABLED or TEST_DISABLED (test won't be run) */\n    int enabled;\n} SDLTest_TestCaseReference;\n\n/**\n * Holds information about a test suite (multiple test cases).\n */\ntypedef struct SDLTest_TestSuiteReference {\n    /* !< \"PlatformSuite\" */\n    const char *name;\n    /* !< The function that is run before each test. NULL skips. */\n    SDLTest_TestCaseSetUpFp testSetUp;\n    /* !< The test cases that are run as part of the suite. Last item should be NULL. */\n    const SDLTest_TestCaseReference **testCases;\n    /* !< The function that is run after each test. NULL skips. */\n    SDLTest_TestCaseTearDownFp testTearDown;\n} SDLTest_TestSuiteReference;\n\n\n/**\n * \\brief Generates a random run seed string for the harness. The generated seed will contain alphanumeric characters (0-9A-Z).\n *\n * Note: The returned string needs to be deallocated by the caller.\n *\n * \\param length The length of the seed string to generate\n *\n * \\returns the generated seed string\n */\nchar *SDLTest_GenerateRunSeed(const int length);\n\n/**\n * \\brief Execute a test suite using the given run seed and execution key.\n *\n * \\param testSuites Suites containing the test case.\n * \\param userRunSeed Custom run seed provided by user, or NULL to autogenerate one.\n * \\param userExecKey Custom execution key provided by user, or 0 to autogenerate one.\n * \\param filter Filter specification. NULL disables. Case sensitive.\n * \\param testIterations Number of iterations to run each test case.\n *\n * \\returns the test run result: 0 when all tests passed, 1 if any tests failed.\n */\nint SDLTest_RunSuites(SDLTest_TestSuiteReference *testSuites[], const char *userRunSeed, Uint64 userExecKey, const char *filter, int testIterations);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_h_arness_h */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_images.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_images.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n\n Defines some images for tests.\n\n*/\n\n#ifndef SDL_test_images_h_\n#define SDL_test_images_h_\n\n#include \"SDL.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *Type for test images.\n */\ntypedef struct SDLTest_SurfaceImage_s {\n  int width;\n  int height;\n  unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */\n  const char *pixel_data;\n} SDLTest_SurfaceImage_t;\n\n/* Test images */\nSDL_Surface *SDLTest_ImageBlit(void);\nSDL_Surface *SDLTest_ImageBlitColor(void);\nSDL_Surface *SDLTest_ImageBlitAlpha(void);\nSDL_Surface *SDLTest_ImageBlitBlendAdd(void);\nSDL_Surface *SDLTest_ImageBlitBlend(void);\nSDL_Surface *SDLTest_ImageBlitBlendMod(void);\nSDL_Surface *SDLTest_ImageBlitBlendNone(void);\nSDL_Surface *SDLTest_ImageBlitBlendAll(void);\nSDL_Surface *SDLTest_ImageFace(void);\nSDL_Surface *SDLTest_ImagePrimitives(void);\nSDL_Surface *SDLTest_ImagePrimitivesBlend(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_images_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_log.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_log.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n *\n *  Wrapper to log in the TEST category\n *\n */\n\n#ifndef SDL_test_log_h_\n#define SDL_test_log_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\brief Prints given message with a timestamp in the TEST category and INFO priority.\n *\n * \\param fmt Message to be logged\n */\nvoid SDLTest_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);\n\n/**\n * \\brief Prints given message with a timestamp in the TEST category and the ERROR priority.\n *\n * \\param fmt Message to be logged\n */\nvoid SDLTest_LogError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_log_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_md5.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_md5.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n ***********************************************************************\n ** Header file for implementation of MD5                             **\n ** RSA Data Security, Inc. MD5 Message-Digest Algorithm              **\n ** Created: 2/17/90 RLR                                              **\n ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version               **\n ** Revised (for MD5): RLR 4/27/91                                    **\n **   -- G modified to have y&~z instead of y&z                       **\n **   -- FF, GG, HH modified to add in last register done             **\n **   -- Access pattern: round 2 works mod 5, round 3 works mod 3     **\n **   -- distinct additive constant for each step                     **\n **   -- round 4 added, working mod 7                                 **\n ***********************************************************************\n*/\n\n/*\n ***********************************************************************\n **  Message-digest routines:                                         **\n **  To form the message digest for a message M                       **\n **    (1) Initialize a context buffer mdContext using MD5Init        **\n **    (2) Call MD5Update on mdContext and M                          **\n **    (3) Call MD5Final on mdContext                                 **\n **  The message digest is now in mdContext->digest[0...15]           **\n ***********************************************************************\n*/\n\n#ifndef SDL_test_md5_h_\n#define SDL_test_md5_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* ------------ Definitions --------- */\n\n/* typedef a 32-bit type */\n  typedef unsigned long int MD5UINT4;\n\n/* Data structure for MD5 (Message-Digest) computation */\n  typedef struct {\n    MD5UINT4  i[2];     /* number of _bits_ handled mod 2^64 */\n    MD5UINT4  buf[4];       /* scratch buffer */\n    unsigned char in[64];   /* input buffer */\n    unsigned char digest[16];   /* actual digest after Md5Final call */\n  } SDLTest_Md5Context;\n\n/* ---------- Function Prototypes ------------- */\n\n/**\n * \\brief initialize the context\n *\n * \\param  mdContext        pointer to context variable\n *\n * Note: The function initializes the message-digest context\n *       mdContext. Call before each new use of the context -\n *       all fields are set to zero.\n */\n void SDLTest_Md5Init(SDLTest_Md5Context * mdContext);\n\n\n/**\n * \\brief update digest from variable length data\n *\n * \\param  mdContext       pointer to context variable\n * \\param  inBuf           pointer to data array/string\n * \\param  inLen           length of data array/string\n *\n * Note: The function updates the message-digest context to account\n *       for the presence of each of the characters inBuf[0..inLen-1]\n *       in the message whose digest is being computed.\n*/\n\n void SDLTest_Md5Update(SDLTest_Md5Context * mdContext, unsigned char *inBuf,\n                 unsigned int inLen);\n\n\n/**\n * \\brief complete digest computation\n *\n * \\param mdContext     pointer to context variable\n *\n * Note: The function terminates the message-digest computation and\n *       ends with the desired message digest in mdContext.digest[0..15].\n *       Always call before using the digest[] variable.\n*/\n\n void SDLTest_Md5Final(SDLTest_Md5Context * mdContext);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_md5_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_memory.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_memory.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n#ifndef SDL_test_memory_h_\n#define SDL_test_memory_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/**\n * \\brief Start tracking SDL memory allocations\n * \n * \\note This should be called before any other SDL functions for complete tracking coverage\n */\nint SDLTest_TrackAllocations(void);\n\n/**\n * \\brief Print a log of any outstanding allocations\n *\n * \\note This can be called after SDL_Quit()\n */\nvoid SDLTest_LogAllocations(void);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_memory_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_test_random.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_test_random.h\n *\n *  Include file for SDL test framework.\n *\n *  This code is a part of the SDL2_test library, not the main SDL library.\n */\n\n/*\n\n A \"32-bit Multiply with carry random number generator. Very fast.\n Includes a list of recommended multipliers.\n\n multiply-with-carry generator: x(n) = a*x(n-1) + carry mod 2^32.\n period: (a*2^31)-1\n\n*/\n\n#ifndef SDL_test_random_h_\n#define SDL_test_random_h_\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* --- Definitions */\n\n/*\n * Macros that return a random number in a specific format.\n */\n#define SDLTest_RandomInt(c)        ((int)SDLTest_Random(c))\n\n/*\n * Context structure for the random number generator state.\n */\n  typedef struct {\n    unsigned int a;\n    unsigned int x;\n    unsigned int c;\n    unsigned int ah;\n    unsigned int al;\n  } SDLTest_RandomContext;\n\n\n/* --- Function prototypes */\n\n/**\n *  \\brief Initialize random number generator with two integers.\n *\n *  Note: The random sequence of numbers returned by ...Random() is the\n *  same for the same two integers and has a period of 2^31.\n *\n *  \\param rndContext     pointer to context structure\n *  \\param xi         integer that defines the random sequence\n *  \\param ci         integer that defines the random sequence\n *\n */\n void SDLTest_RandomInit(SDLTest_RandomContext * rndContext, unsigned int xi,\n                  unsigned int ci);\n\n/**\n *  \\brief Initialize random number generator based on current system time.\n *\n *  \\param rndContext     pointer to context structure\n *\n */\n void SDLTest_RandomInitTime(SDLTest_RandomContext *rndContext);\n\n\n/**\n *  \\brief Initialize random number generator based on current system time.\n *\n *  Note: ...RandomInit() or ...RandomInitTime() must have been called\n *  before using this function.\n *\n *  \\param rndContext     pointer to context structure\n *\n *  \\returns a random number (32bit unsigned integer)\n *\n */\n unsigned int SDLTest_Random(SDLTest_RandomContext *rndContext);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_test_random_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_thread.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_thread_h_\n#define SDL_thread_h_\n\n/**\n *  \\file SDL_thread.h\n *\n *  Header for the SDL thread management routines.\n */\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n/* Thread synchronization primitives */\n#include \"SDL_atomic.h\"\n#include \"SDL_mutex.h\"\n\n#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__)\n#include <process.h> /* _beginthreadex() and _endthreadex() */\n#endif\n#if defined(__OS2__) /* for _beginthread() and _endthread() */\n#ifndef __EMX__\n#include <process.h>\n#else\n#include <stdlib.h>\n#endif\n#endif\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* The SDL thread structure, defined in SDL_thread.c */\nstruct SDL_Thread;\ntypedef struct SDL_Thread SDL_Thread;\n\n/* The SDL thread ID */\ntypedef unsigned long SDL_threadID;\n\n/* Thread local storage ID, 0 is the invalid ID */\ntypedef unsigned int SDL_TLSID;\n\n/**\n *  The SDL thread priority.\n *\n *  SDL will make system changes as necessary in order to apply the thread priority.\n *  Code which attempts to control thread state related to priority should be aware\n *  that calling SDL_SetThreadPriority may alter such state.\n *  SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior.\n *\n *  \\note On many systems you require special privileges to set high or time critical priority.\n */\ntypedef enum {\n    SDL_THREAD_PRIORITY_LOW,\n    SDL_THREAD_PRIORITY_NORMAL,\n    SDL_THREAD_PRIORITY_HIGH,\n    SDL_THREAD_PRIORITY_TIME_CRITICAL\n} SDL_ThreadPriority;\n\n/**\n * The function passed to SDL_CreateThread().\n *\n * \\param data what was passed as `data` to SDL_CreateThread()\n * \\returns a value that can be reported through SDL_WaitThread().\n */\ntypedef int (SDLCALL * SDL_ThreadFunction) (void *data);\n\n\n#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__)\n/**\n *  \\file SDL_thread.h\n *\n *  We compile SDL into a DLL. This means, that it's the DLL which\n *  creates a new thread for the calling process with the SDL_CreateThread()\n *  API. There is a problem with this, that only the RTL of the SDL2.DLL will\n *  be initialized for those threads, and not the RTL of the calling\n *  application!\n *\n *  To solve this, we make a little hack here.\n *\n *  We'll always use the caller's _beginthread() and _endthread() APIs to\n *  start a new thread. This way, if it's the SDL2.DLL which uses this API,\n *  then the RTL of SDL2.DLL will be used to create the new thread, and if it's\n *  the application, then the RTL of the application will be used.\n *\n *  So, in short:\n *  Always use the _beginthread() and _endthread() of the calling runtime\n *  library!\n */\n#define SDL_PASSED_BEGINTHREAD_ENDTHREAD\n\ntypedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread)\n                   (void *, unsigned, unsigned (__stdcall *func)(void *),\n                    void * /*arg*/, unsigned, unsigned * /* threadID */);\ntypedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);\n\n#ifndef SDL_beginthread\n#define SDL_beginthread _beginthreadex\n#endif\n#ifndef SDL_endthread\n#define SDL_endthread _endthreadex\n#endif\n\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,\n                 pfnSDL_CurrentBeginThread pfnBeginThread,\n                 pfnSDL_CurrentEndThread pfnEndThread);\n\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThreadWithStackSize(SDL_ThreadFunction fn,\n                 const char *name, const size_t stacksize, void *data,\n                 pfnSDL_CurrentBeginThread pfnBeginThread,\n                 pfnSDL_CurrentEndThread pfnEndThread);\n\n\n#if defined(SDL_CreateThread) && SDL_DYNAMIC_API\n#undef SDL_CreateThread\n#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#undef SDL_CreateThreadWithStackSize\n#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#else\n#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#endif\n\n#elif defined(__OS2__)\n/*\n * just like the windows case above:  We compile SDL2\n * into a dll with Watcom's runtime statically linked.\n */\n#define SDL_PASSED_BEGINTHREAD_ENDTHREAD\n\ntypedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/);\ntypedef void (*pfnSDL_CurrentEndThread)(void);\n\n#ifndef SDL_beginthread\n#define SDL_beginthread _beginthread\n#endif\n#ifndef SDL_endthread\n#define SDL_endthread _endthread\n#endif\n\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,\n                 pfnSDL_CurrentBeginThread pfnBeginThread,\n                 pfnSDL_CurrentEndThread pfnEndThread);\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data,\n                 pfnSDL_CurrentBeginThread pfnBeginThread,\n                 pfnSDL_CurrentEndThread pfnEndThread);\n\n#if defined(SDL_CreateThread) && SDL_DYNAMIC_API\n#undef SDL_CreateThread\n#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#undef SDL_CreateThreadWithStackSize\n#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#else\n#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread)\n#endif\n\n#else\n\n/**\n * Create a new thread with a default stack size.\n *\n * This is equivalent to calling:\n *\n * ```c\n * SDL_CreateThreadWithStackSize(fn, name, 0, data);\n * ```\n *\n * \\param fn the SDL_ThreadFunction function to call in the new thread\n * \\param name the name of the thread\n * \\param data a pointer that is passed to `fn`\n * \\returns an opaque pointer to the new thread object on success, NULL if the\n *          new thread could not be created; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateThreadWithStackSize\n * \\sa SDL_WaitThread\n */\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);\n\n/**\n * Create a new thread with a specific stack size.\n *\n * SDL makes an attempt to report `name` to the system, so that debuggers can\n * display it. Not all platforms support this.\n *\n * Thread naming is a little complicated: Most systems have very small limits\n * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual\n * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to\n * see what happens with your system's debugger. The name should be UTF-8 (but\n * using the naming limits of C identifiers is a better bet). There are no\n * requirements for thread naming conventions, so long as the string is\n * null-terminated UTF-8, but these guidelines are helpful in choosing a name:\n *\n * https://stackoverflow.com/questions/149932/naming-conventions-for-threads\n *\n * If a system imposes requirements, SDL will try to munge the string for it\n * (truncate, etc), but the original string contents will be available from\n * SDL_GetThreadName().\n *\n * The size (in bytes) of the new stack can be specified. Zero means \"use the\n * system default\" which might be wildly different between platforms. x86\n * Linux generally defaults to eight megabytes, an embedded device might be a\n * few kilobytes instead. You generally need to specify a stack that is a\n * multiple of the system's page size (in many cases, this is 4 kilobytes, but\n * check your system documentation).\n *\n * In SDL 2.1, stack size will be folded into the original SDL_CreateThread\n * function, but for backwards compatibility, this is currently a separate\n * function.\n *\n * \\param fn the SDL_ThreadFunction function to call in the new thread\n * \\param name the name of the thread\n * \\param stacksize the size, in bytes, to allocate for the new thread stack.\n * \\param data a pointer that is passed to `fn`\n * \\returns an opaque pointer to the new thread object on success, NULL if the\n *          new thread could not be created; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_WaitThread\n */\nextern DECLSPEC SDL_Thread *SDLCALL\nSDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data);\n\n#endif\n\n/**\n * Get the thread name as it was specified in SDL_CreateThread().\n *\n * This is internal memory, not to be freed by the caller, and remains valid\n * until the specified thread is cleaned up by SDL_WaitThread().\n *\n * \\param thread the thread to query\n * \\returns a pointer to a UTF-8 string that names the specified thread, or\n *          NULL if it doesn't have a name.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateThread\n */\nextern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);\n\n/**\n * Get the thread identifier for the current thread.\n *\n * This thread identifier is as reported by the underlying operating system.\n * If SDL is running on a platform that does not support threads the return\n * value will always be zero.\n *\n * This function also returns a valid thread ID when called from the main\n * thread.\n *\n * \\returns the ID of the current thread.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetThreadID\n */\nextern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);\n\n/**\n * Get the thread identifier for the specified thread.\n *\n * This thread identifier is as reported by the underlying operating system.\n * If SDL is running on a platform that does not support threads the return\n * value will always be zero.\n *\n * \\param thread the thread to query\n * \\returns the ID of the specified thread, or the ID of the current thread if\n *          `thread` is NULL.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ThreadID\n */\nextern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);\n\n/**\n * Set the priority for the current thread.\n *\n * Note that some platforms will not let you alter the priority (or at least,\n * promote the thread to a higher priority) at all, and some require you to be\n * an administrator account. Be prepared for this to fail.\n *\n * \\param priority the SDL_ThreadPriority to set\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);\n\n/**\n * Wait for a thread to finish.\n *\n * Threads that haven't been detached will remain (as a \"zombie\") until this\n * function cleans them up. Not doing so is a resource leak.\n *\n * Once a thread has been cleaned up through this function, the SDL_Thread\n * that references it becomes invalid and should not be referenced again. As\n * such, only one thread may call SDL_WaitThread() on another.\n *\n * The return code for the thread function is placed in the area pointed to by\n * `status`, if `status` is not NULL.\n *\n * You may not wait on a thread that has been used in a call to\n * SDL_DetachThread(). Use either that function or this one, but not both, or\n * behavior is undefined.\n *\n * It is safe to pass a NULL thread to this function; it is a no-op.\n *\n * Note that the thread pointer is freed by this function and is not valid\n * afterward.\n *\n * \\param thread the SDL_Thread pointer that was returned from the\n *               SDL_CreateThread() call that started this thread\n * \\param status pointer to an integer that will receive the value returned\n *               from the thread function by its 'return', or NULL to not\n *               receive such value back.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateThread\n * \\sa SDL_DetachThread\n */\nextern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);\n\n/**\n * Let a thread clean up on exit without intervention.\n *\n * A thread may be \"detached\" to signify that it should not remain until\n * another thread has called SDL_WaitThread() on it. Detaching a thread is\n * useful for long-running threads that nothing needs to synchronize with or\n * further manage. When a detached thread is done, it simply goes away.\n *\n * There is no way to recover the return code of a detached thread. If you\n * need this, don't detach the thread and instead use SDL_WaitThread().\n *\n * Once a thread is detached, you should usually assume the SDL_Thread isn't\n * safe to reference again, as it will become invalid immediately upon the\n * detached thread's exit, instead of remaining until someone has called\n * SDL_WaitThread() to finally clean it up. As such, don't detach the same\n * thread more than once.\n *\n * If a thread has already exited when passed to SDL_DetachThread(), it will\n * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is\n * not safe to detach a thread that might be used with SDL_WaitThread().\n *\n * You may not call SDL_WaitThread() on a thread that has been detached. Use\n * either that function or this one, but not both, or behavior is undefined.\n *\n * It is safe to pass NULL to this function; it is a no-op.\n *\n * \\param thread the SDL_Thread pointer that was returned from the\n *               SDL_CreateThread() call that started this thread\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_CreateThread\n * \\sa SDL_WaitThread\n */\nextern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);\n\n/**\n * Create a piece of thread-local storage.\n *\n * This creates an identifier that is globally visible to all threads but\n * refers to data that is thread-specific.\n *\n * \\returns the newly created thread local storage identifier or 0 on error.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_TLSGet\n * \\sa SDL_TLSSet\n */\nextern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);\n\n/**\n * Get the current thread's value associated with a thread local storage ID.\n *\n * \\param id the thread local storage ID\n * \\returns the value associated with the ID for the current thread or NULL if\n *          no value has been set; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_TLSCreate\n * \\sa SDL_TLSSet\n */\nextern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);\n\n/**\n * Set the current thread's value associated with a thread local storage ID.\n *\n * The function prototype for `destructor` is:\n *\n * ```c\n * void destructor(void *value)\n * ```\n *\n * where its parameter `value` is what was passed as `value` to SDL_TLSSet().\n *\n * \\param id the thread local storage ID\n * \\param value the value to associate with the ID for the current thread\n * \\param destructor a function called when the thread exits, to free the\n *                   value\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_TLSCreate\n * \\sa SDL_TLSGet\n */\nextern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*));\n\n/**\n * Cleanup all TLS data for this thread.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC void SDLCALL SDL_TLSCleanup(void);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_thread_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_timer.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n#ifndef SDL_timer_h_\n#define SDL_timer_h_\n\n/**\n *  \\file SDL_timer.h\n *\n *  Header for the SDL time management routines.\n */\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Get the number of milliseconds since SDL library initialization.\n *\n * This value wraps if the program runs for more than ~49 days.\n *\n * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64()\n * instead, where the value doesn't wrap every ~49 days. There are places in\n * SDL where we provide a 32-bit timestamp that can not change without\n * breaking binary compatibility, though, so this function isn't officially\n * deprecated.\n *\n * \\returns an unsigned 32-bit value representing the number of milliseconds\n *          since the SDL library initialized.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_TICKS_PASSED\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);\n\n/**\n * Get the number of milliseconds since SDL library initialization.\n *\n * Note that you should not use the SDL_TICKS_PASSED macro with values\n * returned by this function, as that macro does clever math to compensate for\n * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit\n * values from this function can be safely compared directly.\n *\n * For example, if you want to wait 100 ms, you could do this:\n *\n * ```c\n * const Uint64 timeout = SDL_GetTicks64() + 100;\n * while (SDL_GetTicks64() < timeout) {\n *     // ... do work until timeout has elapsed\n * }\n * ```\n *\n * \\returns an unsigned 64-bit value representing the number of milliseconds\n *          since the SDL library initialized.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void);\n\n/**\n * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`.\n *\n * This should be used with results from SDL_GetTicks(), as this macro\n * attempts to deal with the 32-bit counter wrapping back to zero every ~49\n * days, but should _not_ be used with SDL_GetTicks64(), which does not have\n * that problem.\n *\n * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could\n * do this:\n *\n * ```c\n * const Uint32 timeout = SDL_GetTicks() + 100;\n * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {\n *     // ... do work until timeout has elapsed\n * }\n * ```\n *\n * Note that this does not handle tick differences greater\n * than 2^31 so take care when using the above kind of code\n * with large timeout delays (tens of days).\n */\n#define SDL_TICKS_PASSED(A, B)  ((Sint32)((B) - (A)) <= 0)\n\n/**\n * Get the current value of the high resolution counter.\n *\n * This function is typically used for profiling.\n *\n * The counter values are only meaningful relative to each other. Differences\n * between values can be converted to times by using\n * SDL_GetPerformanceFrequency().\n *\n * \\returns the current counter value.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetPerformanceFrequency\n */\nextern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);\n\n/**\n * Get the count per second of the high resolution counter.\n *\n * \\returns a platform-specific count per second.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetPerformanceCounter\n */\nextern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);\n\n/**\n * Wait a specified number of milliseconds before returning.\n *\n * This function waits a specified number of milliseconds before returning. It\n * waits at least the specified time, but possibly longer due to OS\n * scheduling.\n *\n * \\param ms the number of milliseconds to delay\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);\n\n/**\n * Function prototype for the timer callback function.\n *\n * The callback function is passed the current timer interval and returns\n * the next timer interval. If the returned value is the same as the one\n * passed in, the periodic alarm continues, otherwise a new alarm is\n * scheduled. If the callback returns 0, the periodic alarm is cancelled.\n */\ntypedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);\n\n/**\n * Definition of the timer ID type.\n */\ntypedef int SDL_TimerID;\n\n/**\n * Call a callback function at a future time.\n *\n * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init().\n *\n * The callback function is passed the current timer interval and the user\n * supplied parameter from the SDL_AddTimer() call and should return the next\n * timer interval. If the value returned from the callback is 0, the timer is\n * canceled.\n *\n * The callback is run on a separate thread.\n *\n * Timers take into account the amount of time it took to execute the\n * callback. For example, if the callback took 250 ms to execute and returned\n * 1000 (ms), the timer would only wait another 750 ms before its next\n * iteration.\n *\n * Timing may be inexact due to OS scheduling. Be sure to note the current\n * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your\n * callback needs to adjust for variances.\n *\n * \\param interval the timer delay, in milliseconds, passed to `callback`\n * \\param callback the SDL_TimerCallback function to call when the specified\n *                 `interval` elapses\n * \\param param a pointer that is passed to `callback`\n * \\returns a timer ID or 0 if an error occurs; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RemoveTimer\n */\nextern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,\n                                                 SDL_TimerCallback callback,\n                                                 void *param);\n\n/**\n * Remove a timer created with SDL_AddTimer().\n *\n * \\param id the ID of the timer to remove\n * \\returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't\n *          found.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_AddTimer\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_timer_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_touch.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_touch.h\n *\n *  Include file for SDL touch event handling.\n */\n\n#ifndef SDL_touch_h_\n#define SDL_touch_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_error.h\"\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef Sint64 SDL_TouchID;\ntypedef Sint64 SDL_FingerID;\n\ntypedef enum\n{\n    SDL_TOUCH_DEVICE_INVALID = -1,\n    SDL_TOUCH_DEVICE_DIRECT,            /* touch screen with window-relative coordinates */\n    SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */\n    SDL_TOUCH_DEVICE_INDIRECT_RELATIVE  /* trackpad with screen cursor-relative coordinates */\n} SDL_TouchDeviceType;\n\ntypedef struct SDL_Finger\n{\n    SDL_FingerID id;\n    float x;\n    float y;\n    float pressure;\n} SDL_Finger;\n\n/* Used as the device ID for mouse events simulated with touch input */\n#define SDL_TOUCH_MOUSEID ((Uint32)-1)\n\n/* Used as the SDL_TouchID for touch events simulated with mouse input */\n#define SDL_MOUSE_TOUCHID ((Sint64)-1)\n\n\n/**\n * Get the number of registered touch devices.\n *\n * On some platforms SDL first sees the touch device if it was actually used.\n * Therefore SDL_GetNumTouchDevices() may return 0 although devices are\n * available. After using all devices at least once the number will be\n * correct.\n *\n * This was fixed for Android in SDL 2.0.1.\n *\n * \\returns the number of registered touch devices.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTouchDevice\n */\nextern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);\n\n/**\n * Get the touch ID with the given index.\n *\n * \\param index the touch device index\n * \\returns the touch ID with the given index on success or 0 if the index is\n *          invalid; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumTouchDevices\n */\nextern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);\n\n/**\n * Get the touch device name as reported from the driver or NULL if the index\n * is invalid.\n *\n * \\since This function is available since SDL 2.0.22.\n */\nextern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index);\n\n/**\n * Get the type of the given touch device.\n *\n * \\since This function is available since SDL 2.0.10.\n */\nextern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);\n\n/**\n * Get the number of active fingers for a given touch device.\n *\n * \\param touchID the ID of a touch device\n * \\returns the number of active fingers for a given touch device on success\n *          or 0 on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetTouchFinger\n */\nextern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);\n\n/**\n * Get the finger object for specified touch device ID and finger index.\n *\n * The returned resource is owned by SDL and should not be deallocated.\n *\n * \\param touchID the ID of the requested touch device\n * \\param index the index of the requested finger\n * \\returns a pointer to the SDL_Finger object or NULL if no object at the\n *          given ID and index could be found.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_RecordGesture\n */\nextern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_touch_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_types.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_types.h\n *\n *  \\deprecated\n */\n\n/* DEPRECATED */\n#include \"SDL_stdinc.h\"\n"
  },
  {
    "path": "libraries/sdl2/SDL_version.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_version.h\n *\n *  This header defines the current SDL version.\n */\n\n#ifndef SDL_version_h_\n#define SDL_version_h_\n\n#include \"SDL_stdinc.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Information about the version of SDL in use.\n *\n * Represents the library's version as three levels: major revision\n * (increments with massive changes, additions, and enhancements),\n * minor revision (increments with backwards-compatible changes to the\n * major revision), and patchlevel (increments with fixes to the minor\n * revision).\n *\n * \\sa SDL_VERSION\n * \\sa SDL_GetVersion\n */\ntypedef struct SDL_version\n{\n    Uint8 major;        /**< major version */\n    Uint8 minor;        /**< minor version */\n    Uint8 patch;        /**< update version */\n} SDL_version;\n\n/* Printable format: \"%d.%d.%d\", MAJOR, MINOR, PATCHLEVEL\n*/\n#define SDL_MAJOR_VERSION   2\n#define SDL_MINOR_VERSION   30\n#define SDL_PATCHLEVEL      4\n\n/**\n * Macro to determine SDL version program was compiled against.\n *\n * This macro fills in a SDL_version structure with the version of the\n * library you compiled against. This is determined by what header the\n * compiler uses. Note that if you dynamically linked the library, you might\n * have a slightly newer or older version at runtime. That version can be\n * determined with SDL_GetVersion(), which, unlike SDL_VERSION(),\n * is not a macro.\n *\n * \\param x A pointer to a SDL_version struct to initialize.\n *\n * \\sa SDL_version\n * \\sa SDL_GetVersion\n */\n#define SDL_VERSION(x)                          \\\n{                                   \\\n    (x)->major = SDL_MAJOR_VERSION;                 \\\n    (x)->minor = SDL_MINOR_VERSION;                 \\\n    (x)->patch = SDL_PATCHLEVEL;                    \\\n}\n\n/* TODO: Remove this whole block in SDL 3 */\n#if SDL_MAJOR_VERSION < 3\n/**\n *  This macro turns the version numbers into a numeric value:\n *  \\verbatim\n    (1,2,3) -> (1203)\n    \\endverbatim\n *\n *  This assumes that there will never be more than 100 patchlevels.\n *\n *  In versions higher than 2.9.0, the minor version overflows into\n *  the thousands digit: for example, 2.23.0 is encoded as 4300,\n *  and 2.255.99 would be encoded as 25799.\n *  This macro will not be available in SDL 3.x.\n */\n#define SDL_VERSIONNUM(X, Y, Z)                     \\\n    ((X)*1000 + (Y)*100 + (Z))\n\n/**\n *  This is the version number macro for the current SDL version.\n *\n *  In versions higher than 2.9.0, the minor version overflows into\n *  the thousands digit: for example, 2.23.0 is encoded as 4300.\n *  This macro will not be available in SDL 3.x.\n *\n *  Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead.\n */\n#define SDL_COMPILEDVERSION \\\n    SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)\n#endif /* SDL_MAJOR_VERSION < 3 */\n\n/**\n *  This macro will evaluate to true if compiled with SDL at least X.Y.Z.\n */\n#define SDL_VERSION_ATLEAST(X, Y, Z) \\\n    ((SDL_MAJOR_VERSION >= X) && \\\n     (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \\\n     (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z))\n\n/**\n * Get the version of SDL that is linked against your program.\n *\n * If you are linking to SDL dynamically, then it is possible that the current\n * version will be different than the version you compiled against. This\n * function returns the current version, while SDL_VERSION() is a macro that\n * tells you what version you compiled with.\n *\n * This function may be called safely at any time, even before SDL_Init().\n *\n * \\param ver the SDL_version structure that contains the version information\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRevision\n */\nextern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);\n\n/**\n * Get the code revision of SDL that is linked against your program.\n *\n * This value is the revision of the code you are linked with and may be\n * different from the code you are compiling with, which is found in the\n * constant SDL_REVISION.\n *\n * The revision is arbitrary string (a hash value) uniquely identifying the\n * exact revision of the SDL library in use, and is only useful in comparing\n * against other revisions. It is NOT an incrementing number.\n *\n * If SDL wasn't built from a git repository with the appropriate tools, this\n * will return an empty string.\n *\n * Prior to SDL 2.0.16, before development moved to GitHub, this returned a\n * hash for a Mercurial repository.\n *\n * You shouldn't use this function for anything but logging it for debugging\n * purposes. The string is not intended to be reliable in any way.\n *\n * \\returns an arbitrary string, uniquely identifying the exact revision of\n *          the SDL library in use.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetVersion\n */\nextern DECLSPEC const char *SDLCALL SDL_GetRevision(void);\n\n/**\n * Obsolete function, do not use.\n *\n * When SDL was hosted in a Mercurial repository, and was built carefully,\n * this would return the revision number that the build was created from. This\n * number was not reliable for several reasons, but more importantly, SDL is\n * now hosted in a git repository, which does not offer numbers at all, only\n * hashes. This function only ever returns zero now. Don't use it.\n *\n * Before SDL 2.0.16, this might have returned an unreliable, but non-zero\n * number.\n *\n * \\deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it\n *             will return a git hash.\n *\n * \\returns zero, always, in modern SDL releases.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetRevision\n */\nextern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_version_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_video.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_video.h\n *\n *  Header file for SDL video functions.\n */\n\n#ifndef SDL_video_h_\n#define SDL_video_h_\n\n#include \"SDL_stdinc.h\"\n#include \"SDL_pixels.h\"\n#include \"SDL_rect.h\"\n#include \"SDL_surface.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n *  \\brief  The structure that defines a display mode\n *\n *  \\sa SDL_GetNumDisplayModes()\n *  \\sa SDL_GetDisplayMode()\n *  \\sa SDL_GetDesktopDisplayMode()\n *  \\sa SDL_GetCurrentDisplayMode()\n *  \\sa SDL_GetClosestDisplayMode()\n *  \\sa SDL_SetWindowDisplayMode()\n *  \\sa SDL_GetWindowDisplayMode()\n */\ntypedef struct\n{\n    Uint32 format;              /**< pixel format */\n    int w;                      /**< width, in screen coordinates */\n    int h;                      /**< height, in screen coordinates */\n    int refresh_rate;           /**< refresh rate (or zero for unspecified) */\n    void *driverdata;           /**< driver-specific data, initialize to 0 */\n} SDL_DisplayMode;\n\n/**\n *  \\brief The type used to identify a window\n *\n *  \\sa SDL_CreateWindow()\n *  \\sa SDL_CreateWindowFrom()\n *  \\sa SDL_DestroyWindow()\n *  \\sa SDL_FlashWindow()\n *  \\sa SDL_GetWindowData()\n *  \\sa SDL_GetWindowFlags()\n *  \\sa SDL_GetWindowGrab()\n *  \\sa SDL_GetWindowKeyboardGrab()\n *  \\sa SDL_GetWindowMouseGrab()\n *  \\sa SDL_GetWindowPosition()\n *  \\sa SDL_GetWindowSize()\n *  \\sa SDL_GetWindowTitle()\n *  \\sa SDL_HideWindow()\n *  \\sa SDL_MaximizeWindow()\n *  \\sa SDL_MinimizeWindow()\n *  \\sa SDL_RaiseWindow()\n *  \\sa SDL_RestoreWindow()\n *  \\sa SDL_SetWindowData()\n *  \\sa SDL_SetWindowFullscreen()\n *  \\sa SDL_SetWindowGrab()\n *  \\sa SDL_SetWindowKeyboardGrab()\n *  \\sa SDL_SetWindowMouseGrab()\n *  \\sa SDL_SetWindowIcon()\n *  \\sa SDL_SetWindowPosition()\n *  \\sa SDL_SetWindowSize()\n *  \\sa SDL_SetWindowBordered()\n *  \\sa SDL_SetWindowResizable()\n *  \\sa SDL_SetWindowTitle()\n *  \\sa SDL_ShowWindow()\n */\ntypedef struct SDL_Window SDL_Window;\n\n/**\n *  \\brief The flags on a window\n *\n *  \\sa SDL_GetWindowFlags()\n */\ntypedef enum\n{\n    SDL_WINDOW_FULLSCREEN = 0x00000001,         /**< fullscreen window */\n    SDL_WINDOW_OPENGL = 0x00000002,             /**< window usable with OpenGL context */\n    SDL_WINDOW_SHOWN = 0x00000004,              /**< window is visible */\n    SDL_WINDOW_HIDDEN = 0x00000008,             /**< window is not visible */\n    SDL_WINDOW_BORDERLESS = 0x00000010,         /**< no window decoration */\n    SDL_WINDOW_RESIZABLE = 0x00000020,          /**< window can be resized */\n    SDL_WINDOW_MINIMIZED = 0x00000040,          /**< window is minimized */\n    SDL_WINDOW_MAXIMIZED = 0x00000080,          /**< window is maximized */\n    SDL_WINDOW_MOUSE_GRABBED = 0x00000100,      /**< window has grabbed mouse input */\n    SDL_WINDOW_INPUT_FOCUS = 0x00000200,        /**< window has input focus */\n    SDL_WINDOW_MOUSE_FOCUS = 0x00000400,        /**< window has mouse focus */\n    SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),\n    SDL_WINDOW_FOREIGN = 0x00000800,            /**< window not created by SDL */\n    SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000,      /**< window should be created in high-DPI mode if supported.\n                                                     On macOS NSHighResolutionCapable must be set true in the\n                                                     application's Info.plist for this to have any effect. */\n    SDL_WINDOW_MOUSE_CAPTURE    = 0x00004000,   /**< window has mouse captured (unrelated to MOUSE_GRABBED) */\n    SDL_WINDOW_ALWAYS_ON_TOP    = 0x00008000,   /**< window should always be above others */\n    SDL_WINDOW_SKIP_TASKBAR     = 0x00010000,   /**< window should not be added to the taskbar */\n    SDL_WINDOW_UTILITY          = 0x00020000,   /**< window should be treated as a utility window */\n    SDL_WINDOW_TOOLTIP          = 0x00040000,   /**< window should be treated as a tooltip */\n    SDL_WINDOW_POPUP_MENU       = 0x00080000,   /**< window should be treated as a popup menu */\n    SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000,   /**< window has grabbed keyboard input */\n    SDL_WINDOW_VULKAN           = 0x10000000,   /**< window usable for Vulkan surface */\n    SDL_WINDOW_METAL            = 0x20000000,   /**< window usable for Metal view */\n\n    SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */\n} SDL_WindowFlags;\n\n/**\n *  \\brief Used to indicate that you don't care what the window position is.\n */\n#define SDL_WINDOWPOS_UNDEFINED_MASK    0x1FFF0000u\n#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X)  (SDL_WINDOWPOS_UNDEFINED_MASK|(X))\n#define SDL_WINDOWPOS_UNDEFINED         SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)\n#define SDL_WINDOWPOS_ISUNDEFINED(X)    \\\n            (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)\n\n/**\n *  \\brief Used to indicate that the window position should be centered.\n */\n#define SDL_WINDOWPOS_CENTERED_MASK    0x2FFF0000u\n#define SDL_WINDOWPOS_CENTERED_DISPLAY(X)  (SDL_WINDOWPOS_CENTERED_MASK|(X))\n#define SDL_WINDOWPOS_CENTERED         SDL_WINDOWPOS_CENTERED_DISPLAY(0)\n#define SDL_WINDOWPOS_ISCENTERED(X)    \\\n            (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)\n\n/**\n *  \\brief Event subtype for window events\n */\ntypedef enum\n{\n    SDL_WINDOWEVENT_NONE,           /**< Never used */\n    SDL_WINDOWEVENT_SHOWN,          /**< Window has been shown */\n    SDL_WINDOWEVENT_HIDDEN,         /**< Window has been hidden */\n    SDL_WINDOWEVENT_EXPOSED,        /**< Window has been exposed and should be\n                                         redrawn */\n    SDL_WINDOWEVENT_MOVED,          /**< Window has been moved to data1, data2\n                                     */\n    SDL_WINDOWEVENT_RESIZED,        /**< Window has been resized to data1xdata2 */\n    SDL_WINDOWEVENT_SIZE_CHANGED,   /**< The window size has changed, either as\n                                         a result of an API call or through the\n                                         system or user changing the window size. */\n    SDL_WINDOWEVENT_MINIMIZED,      /**< Window has been minimized */\n    SDL_WINDOWEVENT_MAXIMIZED,      /**< Window has been maximized */\n    SDL_WINDOWEVENT_RESTORED,       /**< Window has been restored to normal size\n                                         and position */\n    SDL_WINDOWEVENT_ENTER,          /**< Window has gained mouse focus */\n    SDL_WINDOWEVENT_LEAVE,          /**< Window has lost mouse focus */\n    SDL_WINDOWEVENT_FOCUS_GAINED,   /**< Window has gained keyboard focus */\n    SDL_WINDOWEVENT_FOCUS_LOST,     /**< Window has lost keyboard focus */\n    SDL_WINDOWEVENT_CLOSE,          /**< The window manager requests that the window be closed */\n    SDL_WINDOWEVENT_TAKE_FOCUS,     /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */\n    SDL_WINDOWEVENT_HIT_TEST,       /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */\n    SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */\n    SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */\n} SDL_WindowEventID;\n\n/**\n *  \\brief Event subtype for display events\n */\ntypedef enum\n{\n    SDL_DISPLAYEVENT_NONE,          /**< Never used */\n    SDL_DISPLAYEVENT_ORIENTATION,   /**< Display orientation has changed to data1 */\n    SDL_DISPLAYEVENT_CONNECTED,     /**< Display has been added to the system */\n    SDL_DISPLAYEVENT_DISCONNECTED,  /**< Display has been removed from the system */\n    SDL_DISPLAYEVENT_MOVED          /**< Display has changed position */\n} SDL_DisplayEventID;\n\n/**\n *  \\brief Display orientation\n */\ntypedef enum\n{\n    SDL_ORIENTATION_UNKNOWN,            /**< The display orientation can't be determined */\n    SDL_ORIENTATION_LANDSCAPE,          /**< The display is in landscape mode, with the right side up, relative to portrait mode */\n    SDL_ORIENTATION_LANDSCAPE_FLIPPED,  /**< The display is in landscape mode, with the left side up, relative to portrait mode */\n    SDL_ORIENTATION_PORTRAIT,           /**< The display is in portrait mode */\n    SDL_ORIENTATION_PORTRAIT_FLIPPED    /**< The display is in portrait mode, upside down */\n} SDL_DisplayOrientation;\n\n/**\n *  \\brief Window flash operation\n */\ntypedef enum\n{\n    SDL_FLASH_CANCEL,                   /**< Cancel any window flash state */\n    SDL_FLASH_BRIEFLY,                  /**< Flash the window briefly to get attention */\n    SDL_FLASH_UNTIL_FOCUSED             /**< Flash the window until it gets focus */\n} SDL_FlashOperation;\n\n/**\n *  \\brief An opaque handle to an OpenGL context.\n */\ntypedef void *SDL_GLContext;\n\n/**\n *  \\brief OpenGL configuration attributes\n */\ntypedef enum\n{\n    SDL_GL_RED_SIZE,\n    SDL_GL_GREEN_SIZE,\n    SDL_GL_BLUE_SIZE,\n    SDL_GL_ALPHA_SIZE,\n    SDL_GL_BUFFER_SIZE,\n    SDL_GL_DOUBLEBUFFER,\n    SDL_GL_DEPTH_SIZE,\n    SDL_GL_STENCIL_SIZE,\n    SDL_GL_ACCUM_RED_SIZE,\n    SDL_GL_ACCUM_GREEN_SIZE,\n    SDL_GL_ACCUM_BLUE_SIZE,\n    SDL_GL_ACCUM_ALPHA_SIZE,\n    SDL_GL_STEREO,\n    SDL_GL_MULTISAMPLEBUFFERS,\n    SDL_GL_MULTISAMPLESAMPLES,\n    SDL_GL_ACCELERATED_VISUAL,\n    SDL_GL_RETAINED_BACKING,\n    SDL_GL_CONTEXT_MAJOR_VERSION,\n    SDL_GL_CONTEXT_MINOR_VERSION,\n    SDL_GL_CONTEXT_EGL,\n    SDL_GL_CONTEXT_FLAGS,\n    SDL_GL_CONTEXT_PROFILE_MASK,\n    SDL_GL_SHARE_WITH_CURRENT_CONTEXT,\n    SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,\n    SDL_GL_CONTEXT_RELEASE_BEHAVIOR,\n    SDL_GL_CONTEXT_RESET_NOTIFICATION,\n    SDL_GL_CONTEXT_NO_ERROR,\n    SDL_GL_FLOATBUFFERS\n} SDL_GLattr;\n\ntypedef enum\n{\n    SDL_GL_CONTEXT_PROFILE_CORE           = 0x0001,\n    SDL_GL_CONTEXT_PROFILE_COMPATIBILITY  = 0x0002,\n    SDL_GL_CONTEXT_PROFILE_ES             = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */\n} SDL_GLprofile;\n\ntypedef enum\n{\n    SDL_GL_CONTEXT_DEBUG_FLAG              = 0x0001,\n    SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,\n    SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG      = 0x0004,\n    SDL_GL_CONTEXT_RESET_ISOLATION_FLAG    = 0x0008\n} SDL_GLcontextFlag;\n\ntypedef enum\n{\n    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE   = 0x0000,\n    SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH  = 0x0001\n} SDL_GLcontextReleaseFlag;\n\ntypedef enum\n{\n    SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,\n    SDL_GL_CONTEXT_RESET_LOSE_CONTEXT    = 0x0001\n} SDL_GLContextResetNotification;\n\n/* Function prototypes */\n\n/**\n * Get the number of video drivers compiled into SDL.\n *\n * \\returns a number >= 1 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetVideoDriver\n */\nextern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);\n\n/**\n * Get the name of a built in video driver.\n *\n * The video drivers are presented in the order in which they are normally\n * checked during initialization.\n *\n * \\param index the index of a video driver\n * \\returns the name of the video driver with the given **index**.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumVideoDrivers\n */\nextern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);\n\n/**\n * Initialize the video subsystem, optionally specifying a video driver.\n *\n * This function initializes the video subsystem, setting up a connection to\n * the window manager, etc, and determines the available display modes and\n * pixel formats, but does not initialize a window or graphics mode.\n *\n * If you use this function and you haven't used the SDL_INIT_VIDEO flag with\n * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit()\n * before calling SDL_Quit().\n *\n * It is safe to call this function multiple times. SDL_VideoInit() will call\n * SDL_VideoQuit() itself if the video subsystem has already been initialized.\n *\n * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a\n * specific `driver_name`.\n *\n * \\param driver_name the name of a video driver to initialize, or NULL for\n *                    the default driver\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumVideoDrivers\n * \\sa SDL_GetVideoDriver\n * \\sa SDL_InitSubSystem\n * \\sa SDL_VideoQuit\n */\nextern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);\n\n/**\n * Shut down the video subsystem, if initialized with SDL_VideoInit().\n *\n * This function closes all windows, and restores the original video mode.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_VideoInit\n */\nextern DECLSPEC void SDLCALL SDL_VideoQuit(void);\n\n/**\n * Get the name of the currently initialized video driver.\n *\n * \\returns the name of the current video driver or NULL if no driver has been\n *          initialized.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumVideoDrivers\n * \\sa SDL_GetVideoDriver\n */\nextern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);\n\n/**\n * Get the number of available video displays.\n *\n * \\returns a number >= 1 or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetDisplayBounds\n */\nextern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);\n\n/**\n * Get the name of a display in UTF-8 encoding.\n *\n * \\param displayIndex the index of display from which the name should be\n *                     queried\n * \\returns the name of a display or NULL for an invalid display index or\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);\n\n/**\n * Get the desktop area represented by a display.\n *\n * The primary display (`displayIndex` zero) is always located at 0,0.\n *\n * \\param displayIndex the index of the display to query\n * \\param rect the SDL_Rect structure filled in with the display bounds\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);\n\n/**\n * Get the usable desktop area represented by a display.\n *\n * The primary display (`displayIndex` zero) is always located at 0,0.\n *\n * This is the same area as SDL_GetDisplayBounds() reports, but with portions\n * reserved by the system removed. For example, on Apple's macOS, this\n * subtracts the area occupied by the menu bar and dock.\n *\n * Setting a window to be fullscreen generally bypasses these unusable areas,\n * so these are good guidelines for the maximum space available to a\n * non-fullscreen window.\n *\n * The parameter `rect` is ignored if it is NULL.\n *\n * This function also returns -1 if the parameter `displayIndex` is out of\n * range.\n *\n * \\param displayIndex the index of the display to query the usable bounds\n *                     from\n * \\param rect the SDL_Rect structure filled in with the display bounds\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_GetDisplayBounds\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);\n\n/**\n * Get the dots/pixels-per-inch for a display.\n *\n * Diagonal, horizontal and vertical DPI can all be optionally returned if the\n * appropriate parameter is non-NULL.\n *\n * A failure of this function usually means that either no DPI information is\n * available or the `displayIndex` is out of range.\n *\n * **WARNING**: This reports the DPI that the hardware reports, and it is not\n * always reliable! It is almost always better to use SDL_GetWindowSize() to\n * find the window size, which might be in logical points instead of pixels,\n * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(),\n * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare\n * the two values to get an actual scaling value between the two. We will be\n * rethinking how high-dpi details should be managed in SDL3 to make things\n * more consistent, reliable, and clear.\n *\n * \\param displayIndex the index of the display from which DPI information\n *                     should be queried\n * \\param ddpi a pointer filled in with the diagonal DPI of the display; may\n *             be NULL\n * \\param hdpi a pointer filled in with the horizontal DPI of the display; may\n *             be NULL\n * \\param vdpi a pointer filled in with the vertical DPI of the display; may\n *             be NULL\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);\n\n/**\n * Get the orientation of a display.\n *\n * \\param displayIndex the index of the display to query\n * \\returns The SDL_DisplayOrientation enum value of the display, or\n *          `SDL_ORIENTATION_UNKNOWN` if it isn't available.\n *\n * \\since This function is available since SDL 2.0.9.\n *\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);\n\n/**\n * Get the number of available display modes.\n *\n * The `displayIndex` needs to be in the range from 0 to\n * SDL_GetNumVideoDisplays() - 1.\n *\n * \\param displayIndex the index of the display to query\n * \\returns a number >= 1 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetDisplayMode\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);\n\n/**\n * Get information about a specific display mode.\n *\n * The display modes are sorted in this priority:\n *\n * - width -> largest to smallest\n * - height -> largest to smallest\n * - bits per pixel -> more colors to fewer colors\n * - packed pixel layout -> largest to smallest\n * - refresh rate -> highest to lowest\n *\n * \\param displayIndex the index of the display to query\n * \\param modeIndex the index of the display mode to query\n * \\param mode an SDL_DisplayMode structure filled in with the mode at\n *             `modeIndex`\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetNumDisplayModes\n */\nextern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,\n                                               SDL_DisplayMode * mode);\n\n/**\n * Get information about the desktop's display mode.\n *\n * There's a difference between this function and SDL_GetCurrentDisplayMode()\n * when SDL runs fullscreen and has changed the resolution. In that case this\n * function will return the previous native display mode, and not the current\n * display mode.\n *\n * \\param displayIndex the index of the display to query\n * \\param mode an SDL_DisplayMode structure filled in with the current display\n *             mode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetCurrentDisplayMode\n * \\sa SDL_GetDisplayMode\n * \\sa SDL_SetWindowDisplayMode\n */\nextern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);\n\n/**\n * Get information about the current display mode.\n *\n * There's a difference between this function and SDL_GetDesktopDisplayMode()\n * when SDL runs fullscreen and has changed the resolution. In that case this\n * function will return the current display mode, and not the previous native\n * display mode.\n *\n * \\param displayIndex the index of the display to query\n * \\param mode an SDL_DisplayMode structure filled in with the current display\n *             mode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetDesktopDisplayMode\n * \\sa SDL_GetDisplayMode\n * \\sa SDL_GetNumVideoDisplays\n * \\sa SDL_SetWindowDisplayMode\n */\nextern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);\n\n\n/**\n * Get the closest match to the requested display mode.\n *\n * The available display modes are scanned and `closest` is filled in with the\n * closest mode matching the requested mode and returned. The mode format and\n * refresh rate default to the desktop mode if they are set to 0. The modes\n * are scanned with size being first priority, format being second priority,\n * and finally checking the refresh rate. If all the available modes are too\n * small, then NULL is returned.\n *\n * \\param displayIndex the index of the display to query\n * \\param mode an SDL_DisplayMode structure containing the desired display\n *             mode\n * \\param closest an SDL_DisplayMode structure filled in with the closest\n *                match of the available display modes\n * \\returns the passed in value `closest` or NULL if no matching video mode\n *          was available; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetDisplayMode\n * \\sa SDL_GetNumDisplayModes\n */\nextern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);\n\n/**\n * Get the index of the display containing a point\n *\n * \\param point the point to query\n * \\returns the index of the display containing the point or a negative error\n *          code on failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GetDisplayBounds\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point);\n\n/**\n * Get the index of the display primarily containing a rect\n *\n * \\param rect the rect to query\n * \\returns the index of the display entirely containing the rect or closest\n *          to the center of the rect on success or a negative error code on\n *          failure; call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.24.0.\n *\n * \\sa SDL_GetDisplayBounds\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect);\n\n/**\n * Get the index of the display associated with a window.\n *\n * \\param window the window to query\n * \\returns the index of the display containing the center of the window on\n *          success or a negative error code on failure; call SDL_GetError()\n *          for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetDisplayBounds\n * \\sa SDL_GetNumVideoDisplays\n */\nextern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);\n\n/**\n * Set the display mode to use when a window is visible at fullscreen.\n *\n * This only affects the display mode used when the window is fullscreen. To\n * change the window size when the window is not fullscreen, use\n * SDL_SetWindowSize().\n *\n * \\param window the window to affect\n * \\param mode the SDL_DisplayMode structure representing the mode to use, or\n *             NULL to use the window's dimensions and the desktop's format\n *             and refresh rate\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowDisplayMode\n * \\sa SDL_SetWindowFullscreen\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,\n                                                     const SDL_DisplayMode * mode);\n\n/**\n * Query the display mode to use when a window is visible at fullscreen.\n *\n * \\param window the window to query\n * \\param mode an SDL_DisplayMode structure filled in with the fullscreen\n *             display mode\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowDisplayMode\n * \\sa SDL_SetWindowFullscreen\n */\nextern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,\n                                                     SDL_DisplayMode * mode);\n\n/**\n * Get the raw ICC profile data for the screen the window is currently on.\n *\n * Data returned should be freed with SDL_free.\n *\n * \\param window the window to query\n * \\param size the size of the ICC profile\n * \\returns the raw ICC profile data on success or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.18.\n */\nextern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size);\n\n/**\n * Get the pixel format associated with the window.\n *\n * \\param window the window to query\n * \\returns the pixel format of the window on success or\n *          SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more\n *          information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);\n\n/**\n * Create a window with the specified position, dimensions, and flags.\n *\n * `flags` may be any of the following OR'd together:\n *\n * - `SDL_WINDOW_FULLSCREEN`: fullscreen window\n * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution\n * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context\n * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance\n * - `SDL_WINDOW_METAL`: window usable with a Metal instance\n * - `SDL_WINDOW_HIDDEN`: window is not visible\n * - `SDL_WINDOW_BORDERLESS`: no window decoration\n * - `SDL_WINDOW_RESIZABLE`: window can be resized\n * - `SDL_WINDOW_MINIMIZED`: window is minimized\n * - `SDL_WINDOW_MAXIMIZED`: window is maximized\n * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus\n * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if\n *   supported (>= SDL 2.0.1)\n *\n * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is\n * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be\n * queried later using SDL_GetWindowFlags().\n *\n * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist\n * property to YES, otherwise you will not receive a High-DPI OpenGL canvas.\n *\n * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size\n * in pixels may differ from its size in screen coordinates on platforms with\n * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the\n * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or\n * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that\n * when this flag is set, the drawable size can vary after the window is\n * created and should be queried after major window events such as when the\n * window is resized or moved between displays.\n *\n * If the window is set fullscreen, the width and height parameters `w` and\n * `h` will not be used. However, invalid size parameters (e.g. too large) may\n * still fail. Window size is actually limited to 16384 x 16384 for all\n * platforms at window creation.\n *\n * If the window is created with any of the SDL_WINDOW_OPENGL or\n * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function\n * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the\n * corresponding UnloadLibrary function is called by SDL_DestroyWindow().\n *\n * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,\n * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.\n *\n * If SDL_WINDOW_METAL is specified on an OS that does not support Metal,\n * SDL_CreateWindow() will fail.\n *\n * On non-Apple devices, SDL requires you to either not link to the Vulkan\n * loader or link to a dynamic library version. This limitation may be removed\n * in a future version of SDL.\n *\n * \\param title the title of the window, in UTF-8 encoding\n * \\param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or\n *          `SDL_WINDOWPOS_UNDEFINED`\n * \\param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or\n *          `SDL_WINDOWPOS_UNDEFINED`\n * \\param w the width of the window, in screen coordinates\n * \\param h the height of the window, in screen coordinates\n * \\param flags 0, or one or more SDL_WindowFlags OR'd together\n * \\returns the window that was created or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateWindowFrom\n * \\sa SDL_DestroyWindow\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,\n                                                      int x, int y, int w,\n                                                      int h, Uint32 flags);\n\n/**\n * Create an SDL window from an existing native window.\n *\n * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows)\n * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured\n * before using SDL_CreateWindowFrom().\n *\n * \\param data a pointer to driver-dependent window creation data, typically\n *             your native window cast to a void*\n * \\returns the window that was created or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateWindow\n * \\sa SDL_DestroyWindow\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);\n\n/**\n * Get the numeric ID of a window.\n *\n * The numeric ID is what SDL_WindowEvent references, and is necessary to map\n * these events to specific SDL_Window objects.\n *\n * \\param window the window to query\n * \\returns the ID of the window on success or 0 on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowFromID\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);\n\n/**\n * Get a window from a stored ID.\n *\n * The numeric ID is what SDL_WindowEvent references, and is necessary to map\n * these events to specific SDL_Window objects.\n *\n * \\param id the ID of the window\n * \\returns the window associated with `id` or NULL if it doesn't exist; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowID\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);\n\n/**\n * Get the window flags.\n *\n * \\param window the window to query\n * \\returns a mask of the SDL_WindowFlags associated with `window`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateWindow\n * \\sa SDL_HideWindow\n * \\sa SDL_MaximizeWindow\n * \\sa SDL_MinimizeWindow\n * \\sa SDL_SetWindowFullscreen\n * \\sa SDL_SetWindowGrab\n * \\sa SDL_ShowWindow\n */\nextern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);\n\n/**\n * Set the title of a window.\n *\n * This string is expected to be in UTF-8 encoding.\n *\n * \\param window the window to change\n * \\param title the desired window title in UTF-8 format\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowTitle\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,\n                                                const char *title);\n\n/**\n * Get the title of a window.\n *\n * \\param window the window to query\n * \\returns the title of the window in UTF-8 format or \"\" if there is no\n *          title.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowTitle\n */\nextern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);\n\n/**\n * Set the icon for a window.\n *\n * \\param window the window to change\n * \\param icon an SDL_Surface structure containing the icon for the window\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,\n                                               SDL_Surface * icon);\n\n/**\n * Associate an arbitrary named pointer with a window.\n *\n * `name` is case-sensitive.\n *\n * \\param window the window to associate with the pointer\n * \\param name the name of the pointer\n * \\param userdata the associated pointer\n * \\returns the previous value associated with `name`.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowData\n */\nextern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,\n                                                const char *name,\n                                                void *userdata);\n\n/**\n * Retrieve the data pointer associated with a window.\n *\n * \\param window the window to query\n * \\param name the name of the pointer\n * \\returns the value associated with `name`.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowData\n */\nextern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,\n                                                const char *name);\n\n/**\n * Set the position of a window.\n *\n * The window coordinate origin is the upper left of the display.\n *\n * \\param window the window to reposition\n * \\param x the x coordinate of the window in screen coordinates, or\n *          `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`\n * \\param y the y coordinate of the window in screen coordinates, or\n *          `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED`\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowPosition\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,\n                                                   int x, int y);\n\n/**\n * Get the position of a window.\n *\n * If you do not need the value for one of the positions a NULL may be passed\n * in the `x` or `y` parameter.\n *\n * \\param window the window to query\n * \\param x a pointer filled in with the x position of the window, in screen\n *          coordinates, may be NULL\n * \\param y a pointer filled in with the y position of the window, in screen\n *          coordinates, may be NULL\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowPosition\n */\nextern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,\n                                                   int *x, int *y);\n\n/**\n * Set the size of a window's client area.\n *\n * The window size in screen coordinates may differ from the size in pixels,\n * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform\n * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or\n * SDL_GetRendererOutputSize() to get the real client area size in pixels.\n *\n * Fullscreen windows automatically match the size of the display mode, and\n * you should use SDL_SetWindowDisplayMode() to change their size.\n *\n * \\param window the window to change\n * \\param w the width of the window in pixels, in screen coordinates, must be\n *          > 0\n * \\param h the height of the window in pixels, in screen coordinates, must be\n *          > 0\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowSize\n * \\sa SDL_SetWindowDisplayMode\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,\n                                               int h);\n\n/**\n * Get the size of a window's client area.\n *\n * NULL can safely be passed as the `w` or `h` parameter if the width or\n * height value is not desired.\n *\n * The window size in screen coordinates may differ from the size in pixels,\n * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform\n * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(),\n * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the\n * real client area size in pixels.\n *\n * \\param window the window to query the width and height from\n * \\param w a pointer filled in with the width of the window, in screen\n *          coordinates, may be NULL\n * \\param h a pointer filled in with the height of the window, in screen\n *          coordinates, may be NULL\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_GetDrawableSize\n * \\sa SDL_Vulkan_GetDrawableSize\n * \\sa SDL_SetWindowSize\n */\nextern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,\n                                               int *h);\n\n/**\n * Get the size of a window's borders (decorations) around the client area.\n *\n * Note: If this function fails (returns -1), the size values will be\n * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the\n * window in question was borderless.\n *\n * Note: This function may fail on systems where the window has not yet been\n * decorated by the display server (for example, immediately after calling\n * SDL_CreateWindow). It is recommended that you wait at least until the\n * window has been presented and composited, so that the window system has a\n * chance to decorate the window and provide the border dimensions to SDL.\n *\n * This function also returns -1 if getting the information is not supported.\n *\n * \\param window the window to query the size values of the border\n *               (decorations) from\n * \\param top pointer to variable for storing the size of the top border; NULL\n *            is permitted\n * \\param left pointer to variable for storing the size of the left border;\n *             NULL is permitted\n * \\param bottom pointer to variable for storing the size of the bottom\n *               border; NULL is permitted\n * \\param right pointer to variable for storing the size of the right border;\n *              NULL is permitted\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_GetWindowSize\n */\nextern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,\n                                                     int *top, int *left,\n                                                     int *bottom, int *right);\n\n/**\n * Get the size of a window in pixels.\n *\n * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI\n * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a\n * platform with high-DPI support (Apple calls this \"Retina\"), and not\n * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.\n *\n * \\param window the window from which the drawable size should be queried\n * \\param w a pointer to variable for storing the width in pixels, may be NULL\n * \\param h a pointer to variable for storing the height in pixels, may be\n *          NULL\n *\n * \\since This function is available since SDL 2.26.0.\n *\n * \\sa SDL_CreateWindow\n * \\sa SDL_GetWindowSize\n */\nextern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window,\n                                                       int *w, int *h);\n\n/**\n * Set the minimum size of a window's client area.\n *\n * \\param window the window to change\n * \\param min_w the minimum width of the window in pixels\n * \\param min_h the minimum height of the window in pixels\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowMinimumSize\n * \\sa SDL_SetWindowMaximumSize\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,\n                                                      int min_w, int min_h);\n\n/**\n * Get the minimum size of a window's client area.\n *\n * \\param window the window to query\n * \\param w a pointer filled in with the minimum width of the window, may be\n *          NULL\n * \\param h a pointer filled in with the minimum height of the window, may be\n *          NULL\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowMaximumSize\n * \\sa SDL_SetWindowMinimumSize\n */\nextern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,\n                                                      int *w, int *h);\n\n/**\n * Set the maximum size of a window's client area.\n *\n * \\param window the window to change\n * \\param max_w the maximum width of the window in pixels\n * \\param max_h the maximum height of the window in pixels\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowMaximumSize\n * \\sa SDL_SetWindowMinimumSize\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,\n                                                      int max_w, int max_h);\n\n/**\n * Get the maximum size of a window's client area.\n *\n * \\param window the window to query\n * \\param w a pointer filled in with the maximum width of the window, may be\n *          NULL\n * \\param h a pointer filled in with the maximum height of the window, may be\n *          NULL\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowMinimumSize\n * \\sa SDL_SetWindowMaximumSize\n */\nextern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,\n                                                      int *w, int *h);\n\n/**\n * Set the border state of a window.\n *\n * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add\n * or remove the border from the actual window. This is a no-op if the\n * window's border already matches the requested state.\n *\n * You can't change the border state of a fullscreen window.\n *\n * \\param window the window of which to change the border state\n * \\param bordered SDL_FALSE to remove border, SDL_TRUE to add border\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowFlags\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,\n                                                   SDL_bool bordered);\n\n/**\n * Set the user-resizable state of a window.\n *\n * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and\n * allow/disallow user resizing of the window. This is a no-op if the window's\n * resizable state already matches the requested state.\n *\n * You can't change the resizable state of a fullscreen window.\n *\n * \\param window the window of which to change the resizable state\n * \\param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_GetWindowFlags\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,\n                                                    SDL_bool resizable);\n\n/**\n * Set the window to always be above the others.\n *\n * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This\n * will bring the window to the front and keep the window above the rest.\n *\n * \\param window The window of which to change the always on top state\n * \\param on_top SDL_TRUE to set the window always on top, SDL_FALSE to\n *               disable\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_GetWindowFlags\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window,\n                                                      SDL_bool on_top);\n\n/**\n * Show a window.\n *\n * \\param window the window to show\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_HideWindow\n * \\sa SDL_RaiseWindow\n */\nextern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);\n\n/**\n * Hide a window.\n *\n * \\param window the window to hide\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_ShowWindow\n */\nextern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);\n\n/**\n * Raise a window above other windows and set the input focus.\n *\n * \\param window the window to raise\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);\n\n/**\n * Make a window as large as possible.\n *\n * \\param window the window to maximize\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MinimizeWindow\n * \\sa SDL_RestoreWindow\n */\nextern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);\n\n/**\n * Minimize a window to an iconic representation.\n *\n * \\param window the window to minimize\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MaximizeWindow\n * \\sa SDL_RestoreWindow\n */\nextern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);\n\n/**\n * Restore the size and position of a minimized or maximized window.\n *\n * \\param window the window to restore\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_MaximizeWindow\n * \\sa SDL_MinimizeWindow\n */\nextern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);\n\n/**\n * Set a window's fullscreen state.\n *\n * `flags` may be `SDL_WINDOW_FULLSCREEN`, for \"real\" fullscreen with a\n * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for \"fake\" fullscreen\n * that takes the size of the desktop; and 0 for windowed mode.\n *\n * \\param window the window to change\n * \\param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowDisplayMode\n * \\sa SDL_SetWindowDisplayMode\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,\n                                                    Uint32 flags);\n\n/**\n * Return whether the window has a surface associated with it.\n *\n * \\returns SDL_TRUE if there is a surface associated with the window, or\n *          SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.28.0.\n *\n * \\sa SDL_GetWindowSurface\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window);\n\n/**\n * Get the SDL surface associated with the window.\n *\n * A new surface will be created with the optimal format for the window, if\n * necessary. This surface will be freed when the window is destroyed. Do not\n * free this surface.\n *\n * This surface will be invalidated if the window is resized. After resizing a\n * window this function must be called again to return a valid surface.\n *\n * You may not combine this with 3D or the rendering API on this window.\n *\n * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`.\n *\n * \\param window the window to query\n * \\returns the surface associated with the window, or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DestroyWindowSurface\n * \\sa SDL_HasWindowSurface\n * \\sa SDL_UpdateWindowSurface\n * \\sa SDL_UpdateWindowSurfaceRects\n */\nextern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);\n\n/**\n * Copy the window surface to the screen.\n *\n * This is the function you use to reflect any changes to the surface on the\n * screen.\n *\n * This function is equivalent to the SDL 1.2 API SDL_Flip().\n *\n * \\param window the window to update\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowSurface\n * \\sa SDL_UpdateWindowSurfaceRects\n */\nextern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);\n\n/**\n * Copy areas of the window surface to the screen.\n *\n * This is the function you use to reflect changes to portions of the surface\n * on the screen.\n *\n * This function is equivalent to the SDL 1.2 API SDL_UpdateRects().\n *\n * Note that this function will update _at least_ the rectangles specified,\n * but this is only intended as an optimization; in practice, this might\n * update more of the screen (or all of the screen!), depending on what\n * method SDL uses to send pixels to the system.\n *\n * \\param window the window to update\n * \\param rects an array of SDL_Rect structures representing areas of the\n *              surface to copy, in pixels\n * \\param numrects the number of rectangles\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowSurface\n * \\sa SDL_UpdateWindowSurface\n */\nextern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,\n                                                         const SDL_Rect * rects,\n                                                         int numrects);\n\n/**\n * Destroy the surface associated with the window.\n *\n * \\param window the window to update\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.28.0.\n *\n * \\sa SDL_GetWindowSurface\n * \\sa SDL_HasWindowSurface\n */\nextern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window);\n\n/**\n * Set a window's input grab mode.\n *\n * When input is grabbed, the mouse is confined to the window. This function\n * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the\n * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab().\n *\n * If the caller enables a grab while another window is currently grabbed, the\n * other window loses its grab in favor of the caller's window.\n *\n * \\param window the window for which the input grab mode should be set\n * \\param grabbed SDL_TRUE to grab input or SDL_FALSE to release input\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetGrabbedWindow\n * \\sa SDL_GetWindowGrab\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,\n                                               SDL_bool grabbed);\n\n/**\n * Set a window's keyboard grab mode.\n *\n * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or\n * the Meta/Super key. Note that not all system keyboard shortcuts can be\n * captured by applications (one example is Ctrl+Alt+Del on Windows).\n *\n * This is primarily intended for specialized applications such as VNC clients\n * or VM frontends. Normal games should not use keyboard grab.\n *\n * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the\n * window is full-screen to ensure the user is not trapped in your\n * application. If you have a custom keyboard shortcut to exit fullscreen\n * mode, you may suppress this behavior with\n * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`.\n *\n * If the caller enables a grab while another window is currently grabbed, the\n * other window loses its grab in favor of the caller's window.\n *\n * \\param window The window for which the keyboard grab mode should be set.\n * \\param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release.\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_GetWindowKeyboardGrab\n * \\sa SDL_SetWindowMouseGrab\n * \\sa SDL_SetWindowGrab\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window,\n                                                       SDL_bool grabbed);\n\n/**\n * Set a window's mouse grab mode.\n *\n * Mouse grab confines the mouse cursor to the window.\n *\n * \\param window The window for which the mouse grab mode should be set.\n * \\param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release.\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_GetWindowMouseGrab\n * \\sa SDL_SetWindowKeyboardGrab\n * \\sa SDL_SetWindowGrab\n */\nextern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window,\n                                                    SDL_bool grabbed);\n\n/**\n * Get a window's input grab mode.\n *\n * \\param window the window to query\n * \\returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowGrab\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);\n\n/**\n * Get a window's keyboard grab mode.\n *\n * \\param window the window to query\n * \\returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_SetWindowKeyboardGrab\n * \\sa SDL_GetWindowGrab\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window);\n\n/**\n * Get a window's mouse grab mode.\n *\n * \\param window the window to query\n * \\returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.16.\n *\n * \\sa SDL_SetWindowKeyboardGrab\n * \\sa SDL_GetWindowGrab\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window);\n\n/**\n * Get the window that currently has an input grab enabled.\n *\n * \\returns the window if input is grabbed or NULL otherwise.\n *\n * \\since This function is available since SDL 2.0.4.\n *\n * \\sa SDL_GetWindowGrab\n * \\sa SDL_SetWindowGrab\n */\nextern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);\n\n/**\n * Confines the cursor to the specified area of a window.\n *\n * Note that this does NOT grab the cursor, it only defines the area a cursor\n * is restricted to when the window has mouse focus.\n *\n * \\param window The window that will be associated with the barrier.\n * \\param rect A rectangle area in window-relative coordinates. If NULL the\n *             barrier for the specified window will be destroyed.\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_GetWindowMouseRect\n * \\sa SDL_SetWindowMouseGrab\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect);\n\n/**\n * Get the mouse confinement rectangle of a window.\n *\n * \\param window The window to query\n * \\returns A pointer to the mouse confinement rectangle of a window, or NULL\n *          if there isn't one.\n *\n * \\since This function is available since SDL 2.0.18.\n *\n * \\sa SDL_SetWindowMouseRect\n */\nextern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window);\n\n/**\n * Set the brightness (gamma multiplier) for a given window's display.\n *\n * Despite the name and signature, this method sets the brightness of the\n * entire display, not an individual window. A window is considered to be\n * owned by the display that contains the window's center pixel. (The index of\n * this display can be retrieved using SDL_GetWindowDisplayIndex().) The\n * brightness set will not follow the window if it is moved to another\n * display.\n *\n * Many platforms will refuse to set the display brightness in modern times.\n * You are better off using a shader to adjust gamma during rendering, or\n * something similar.\n *\n * \\param window the window used to select the display whose brightness will\n *               be changed\n * \\param brightness the brightness (gamma multiplier) value to set where 0.0\n *                   is completely dark and 1.0 is normal brightness\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowBrightness\n * \\sa SDL_SetWindowGammaRamp\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);\n\n/**\n * Get the brightness (gamma multiplier) for a given window's display.\n *\n * Despite the name and signature, this method retrieves the brightness of the\n * entire display, not an individual window. A window is considered to be\n * owned by the display that contains the window's center pixel. (The index of\n * this display can be retrieved using SDL_GetWindowDisplayIndex().)\n *\n * \\param window the window used to select the display whose brightness will\n *               be queried\n * \\returns the brightness for the display where 0.0 is completely dark and\n *          1.0 is normal brightness.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowBrightness\n */\nextern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);\n\n/**\n * Set the opacity for a window.\n *\n * The parameter `opacity` will be clamped internally between 0.0f\n * (transparent) and 1.0f (opaque).\n *\n * This function also returns -1 if setting the opacity isn't supported.\n *\n * \\param window the window which will be made transparent or opaque\n * \\param opacity the opacity value (0.0f - transparent, 1.0f - opaque)\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_GetWindowOpacity\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);\n\n/**\n * Get the opacity of a window.\n *\n * If transparency isn't supported on this platform, opacity will be reported\n * as 1.0f without error.\n *\n * The parameter `opacity` is ignored if it is NULL.\n *\n * This function also returns -1 if an invalid window was provided.\n *\n * \\param window the window to get the current opacity value from\n * \\param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque)\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_SetWindowOpacity\n */\nextern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);\n\n/**\n * Set the window as a modal for another window.\n *\n * \\param modal_window the window that should be set modal\n * \\param parent_window the parent window for the modal window\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);\n\n/**\n * Explicitly set input focus to the window.\n *\n * You almost certainly want SDL_RaiseWindow() instead of this function. Use\n * this with caution, as you might give focus to a window that is completely\n * obscured by other windows.\n *\n * \\param window the window that should get the input focus\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.5.\n *\n * \\sa SDL_RaiseWindow\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);\n\n/**\n * Set the gamma ramp for the display that owns a given window.\n *\n * Set the gamma translation table for the red, green, and blue channels of\n * the video hardware. Each table is an array of 256 16-bit quantities,\n * representing a mapping between the input and output for that channel. The\n * input is the index into the array, and the output is the 16-bit gamma value\n * at that index, scaled to the output color precision.\n *\n * Despite the name and signature, this method sets the gamma ramp of the\n * entire display, not an individual window. A window is considered to be\n * owned by the display that contains the window's center pixel. (The index of\n * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma\n * ramp set will not follow the window if it is moved to another display.\n *\n * \\param window the window used to select the display whose gamma ramp will\n *               be changed\n * \\param red a 256 element array of 16-bit quantities representing the\n *            translation table for the red channel, or NULL\n * \\param green a 256 element array of 16-bit quantities representing the\n *              translation table for the green channel, or NULL\n * \\param blue a 256 element array of 16-bit quantities representing the\n *             translation table for the blue channel, or NULL\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GetWindowGammaRamp\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,\n                                                   const Uint16 * red,\n                                                   const Uint16 * green,\n                                                   const Uint16 * blue);\n\n/**\n * Get the gamma ramp for a given window's display.\n *\n * Despite the name and signature, this method retrieves the gamma ramp of the\n * entire display, not an individual window. A window is considered to be\n * owned by the display that contains the window's center pixel. (The index of\n * this display can be retrieved using SDL_GetWindowDisplayIndex().)\n *\n * \\param window the window used to select the display whose gamma ramp will\n *               be queried\n * \\param red a 256 element array of 16-bit quantities filled in with the\n *            translation table for the red channel, or NULL\n * \\param green a 256 element array of 16-bit quantities filled in with the\n *              translation table for the green channel, or NULL\n * \\param blue a 256 element array of 16-bit quantities filled in with the\n *             translation table for the blue channel, or NULL\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_SetWindowGammaRamp\n */\nextern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,\n                                                   Uint16 * red,\n                                                   Uint16 * green,\n                                                   Uint16 * blue);\n\n/**\n * Possible return values from the SDL_HitTest callback.\n *\n * \\sa SDL_HitTest\n */\ntypedef enum\n{\n    SDL_HITTEST_NORMAL,  /**< Region is normal. No special properties. */\n    SDL_HITTEST_DRAGGABLE,  /**< Region can drag entire window. */\n    SDL_HITTEST_RESIZE_TOPLEFT,\n    SDL_HITTEST_RESIZE_TOP,\n    SDL_HITTEST_RESIZE_TOPRIGHT,\n    SDL_HITTEST_RESIZE_RIGHT,\n    SDL_HITTEST_RESIZE_BOTTOMRIGHT,\n    SDL_HITTEST_RESIZE_BOTTOM,\n    SDL_HITTEST_RESIZE_BOTTOMLEFT,\n    SDL_HITTEST_RESIZE_LEFT\n} SDL_HitTestResult;\n\n/**\n * Callback used for hit-testing.\n *\n * \\param win the SDL_Window where hit-testing was set on\n * \\param area an SDL_Point which should be hit-tested\n * \\param data what was passed as `callback_data` to SDL_SetWindowHitTest()\n * \\return an SDL_HitTestResult value.\n *\n * \\sa SDL_SetWindowHitTest\n */\ntypedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,\n                                                 const SDL_Point *area,\n                                                 void *data);\n\n/**\n * Provide a callback that decides if a window region has special properties.\n *\n * Normally windows are dragged and resized by decorations provided by the\n * system window manager (a title bar, borders, etc), but for some apps, it\n * makes sense to drag them from somewhere else inside the window itself; for\n * example, one might have a borderless window that wants to be draggable from\n * any part, or simulate its own title bar, etc.\n *\n * This function lets the app provide a callback that designates pieces of a\n * given window as special. This callback is run during event processing if we\n * need to tell the OS to treat a region of the window specially; the use of\n * this callback is known as \"hit testing.\"\n *\n * Mouse input may not be delivered to your application if it is within a\n * special area; the OS will often apply that input to moving the window or\n * resizing the window and not deliver it to the application.\n *\n * Specifying NULL for a callback disables hit-testing. Hit-testing is\n * disabled by default.\n *\n * Platforms that don't support this functionality will return -1\n * unconditionally, even if you're attempting to disable hit-testing.\n *\n * Your callback may fire at any time, and its firing does not indicate any\n * specific behavior (for example, on Windows, this certainly might fire when\n * the OS is deciding whether to drag your window, but it fires for lots of\n * other reasons, too, some unrelated to anything you probably care about _and\n * when the mouse isn't actually at the location it is testing_). Since this\n * can fire at any time, you should try to keep your callback efficient,\n * devoid of allocations, etc.\n *\n * \\param window the window to set hit-testing on\n * \\param callback the function to call when doing a hit-test\n * \\param callback_data an app-defined void pointer passed to **callback**\n * \\returns 0 on success or -1 on error (including unsupported); call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.4.\n */\nextern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,\n                                                 SDL_HitTest callback,\n                                                 void *callback_data);\n\n/**\n * Request a window to demand attention from the user.\n *\n * \\param window the window to be flashed\n * \\param operation the flash operation\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.16.\n */\nextern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation);\n\n/**\n * Destroy a window.\n *\n * If `window` is NULL, this function will return immediately after setting\n * the SDL error message to \"Invalid window\". See SDL_GetError().\n *\n * \\param window the window to destroy\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_CreateWindow\n * \\sa SDL_CreateWindowFrom\n */\nextern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);\n\n\n/**\n * Check whether the screensaver is currently enabled.\n *\n * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2\n * the screensaver was enabled by default.\n *\n * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`.\n *\n * \\returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is\n *          disabled.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DisableScreenSaver\n * \\sa SDL_EnableScreenSaver\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);\n\n/**\n * Allow the screen to be blanked by a screen saver.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_DisableScreenSaver\n * \\sa SDL_IsScreenSaverEnabled\n */\nextern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);\n\n/**\n * Prevent the screen from being blanked by a screen saver.\n *\n * If you disable the screensaver, it is automatically re-enabled when SDL\n * quits.\n *\n * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2\n * the screensaver was enabled by default.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_EnableScreenSaver\n * \\sa SDL_IsScreenSaverEnabled\n */\nextern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);\n\n\n/**\n *  \\name OpenGL support functions\n */\n/* @{ */\n\n/**\n * Dynamically load an OpenGL library.\n *\n * This should be done after initializing the video driver, but before\n * creating any OpenGL windows. If no OpenGL library is loaded, the default\n * library will be loaded upon creation of the first OpenGL window.\n *\n * If you do this, you need to retrieve all of the GL functions used in your\n * program from the dynamic library using SDL_GL_GetProcAddress().\n *\n * \\param path the platform dependent OpenGL library name, or NULL to open the\n *             default OpenGL library\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_GetProcAddress\n * \\sa SDL_GL_UnloadLibrary\n */\nextern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);\n\n/**\n * Get an OpenGL function by name.\n *\n * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all\n * GL functions must be retrieved this way. Usually this is used to retrieve\n * function pointers to OpenGL extensions.\n *\n * There are some quirks to looking up OpenGL functions that require some\n * extra care from the application. If you code carefully, you can handle\n * these quirks without any platform-specific code, though:\n *\n * - On Windows, function pointers are specific to the current GL context;\n *   this means you need to have created a GL context and made it current\n *   before calling SDL_GL_GetProcAddress(). If you recreate your context or\n *   create a second context, you should assume that any existing function\n *   pointers aren't valid to use with it. This is (currently) a\n *   Windows-specific limitation, and in practice lots of drivers don't suffer\n *   this limitation, but it is still the way the wgl API is documented to\n *   work and you should expect crashes if you don't respect it. Store a copy\n *   of the function pointers that comes and goes with context lifespan.\n * - On X11, function pointers returned by this function are valid for any\n *   context, and can even be looked up before a context is created at all.\n *   This means that, for at least some common OpenGL implementations, if you\n *   look up a function that doesn't exist, you'll get a non-NULL result that\n *   is _NOT_ safe to call. You must always make sure the function is actually\n *   available for a given GL context before calling it, by checking for the\n *   existence of the appropriate extension with SDL_GL_ExtensionSupported(),\n *   or verifying that the version of OpenGL you're using offers the function\n *   as core functionality.\n * - Some OpenGL drivers, on all platforms, *will* return NULL if a function\n *   isn't supported, but you can't count on this behavior. Check for\n *   extensions you use, and if you get a NULL anyway, act as if that\n *   extension wasn't available. This is probably a bug in the driver, but you\n *   can code defensively for this scenario anyhow.\n * - Just because you're on Linux/Unix, don't assume you'll be using X11.\n *   Next-gen display servers are waiting to replace it, and may or may not\n *   make the same promises about function pointers.\n * - OpenGL function pointers must be declared `APIENTRY` as in the example\n *   code. This will ensure the proper calling convention is followed on\n *   platforms where this matters (Win32) thereby avoiding stack corruption.\n *\n * \\param proc the name of an OpenGL function\n * \\returns a pointer to the named OpenGL function. The returned pointer\n *          should be cast to the appropriate function signature.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_ExtensionSupported\n * \\sa SDL_GL_LoadLibrary\n * \\sa SDL_GL_UnloadLibrary\n */\nextern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);\n\n/**\n * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_LoadLibrary\n */\nextern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);\n\n/**\n * Check if an OpenGL extension is supported for the current context.\n *\n * This function operates on the current GL context; you must have created a\n * context and it must be current before calling this function. Do not assume\n * that all contexts you create will have the same set of extensions\n * available, or that recreating an existing context will offer the same\n * extensions again.\n *\n * While it's probably not a massive overhead, this function is not an O(1)\n * operation. Check the extensions you care about after creating the GL\n * context and save that information somewhere instead of calling the function\n * every time you need to know.\n *\n * \\param extension the name of the extension to check\n * \\returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char\n                                                           *extension);\n\n/**\n * Reset all previously set OpenGL context attributes to their default values.\n *\n * \\since This function is available since SDL 2.0.2.\n *\n * \\sa SDL_GL_GetAttribute\n * \\sa SDL_GL_SetAttribute\n */\nextern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);\n\n/**\n * Set an OpenGL window attribute before window creation.\n *\n * This function sets the OpenGL attribute `attr` to `value`. The requested\n * attributes should be set before creating an OpenGL window. You should use\n * SDL_GL_GetAttribute() to check the values after creating the OpenGL\n * context, since the values obtained can differ from the requested ones.\n *\n * \\param attr an SDL_GLattr enum value specifying the OpenGL attribute to set\n * \\param value the desired value for the attribute\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_GetAttribute\n * \\sa SDL_GL_ResetAttributes\n */\nextern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);\n\n/**\n * Get the actual value for an attribute from the current context.\n *\n * \\param attr an SDL_GLattr enum value specifying the OpenGL attribute to get\n * \\param value a pointer filled in with the current value of `attr`\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_ResetAttributes\n * \\sa SDL_GL_SetAttribute\n */\nextern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);\n\n/**\n * Create an OpenGL context for an OpenGL window, and make it current.\n *\n * Windows users new to OpenGL should note that, for historical reasons, GL\n * functions added after OpenGL version 1.1 are not available by default.\n * Those functions must be loaded at run-time, either with an OpenGL\n * extension-handling library or with SDL_GL_GetProcAddress() and its related\n * functions.\n *\n * SDL_GLContext is an alias for `void *`. It's opaque to the application.\n *\n * \\param window the window to associate with the context\n * \\returns the OpenGL context associated with `window` or NULL on error; call\n *          SDL_GetError() for more details.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_DeleteContext\n * \\sa SDL_GL_MakeCurrent\n */\nextern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *\n                                                           window);\n\n/**\n * Set up an OpenGL context for rendering into an OpenGL window.\n *\n * The context must have been created with a compatible window.\n *\n * \\param window the window to associate with the context\n * \\param context the OpenGL context to associate with the window\n * \\returns 0 on success or a negative error code on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_CreateContext\n */\nextern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,\n                                               SDL_GLContext context);\n\n/**\n * Get the currently active OpenGL window.\n *\n * \\returns the currently active OpenGL window on success or NULL on failure;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);\n\n/**\n * Get the currently active OpenGL context.\n *\n * \\returns the currently active OpenGL context or NULL on failure; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_MakeCurrent\n */\nextern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);\n\n/**\n * Get the size of a window's underlying drawable in pixels.\n *\n * This returns info useful for calling glViewport().\n *\n * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI\n * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a\n * platform with high-DPI support (Apple calls this \"Retina\"), and not\n * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.\n *\n * \\param window the window from which the drawable size should be queried\n * \\param w a pointer to variable for storing the width in pixels, may be NULL\n * \\param h a pointer to variable for storing the height in pixels, may be\n *          NULL\n *\n * \\since This function is available since SDL 2.0.1.\n *\n * \\sa SDL_CreateWindow\n * \\sa SDL_GetWindowSize\n */\nextern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,\n                                                    int *h);\n\n/**\n * Set the swap interval for the current OpenGL context.\n *\n * Some systems allow specifying -1 for the interval, to enable adaptive\n * vsync. Adaptive vsync works the same as vsync, but if you've already missed\n * the vertical retrace for a given frame, it swaps buffers immediately, which\n * might be less jarring for the user during occasional framerate drops. If an\n * application requests adaptive vsync and the system does not support it,\n * this function will fail and return -1. In such a case, you should probably\n * retry the call with 1 for the interval.\n *\n * Adaptive vsync is implemented for some glX drivers with\n * GLX_EXT_swap_control_tear, and for some Windows drivers with\n * WGL_EXT_swap_control_tear.\n *\n * Read more on the Khronos wiki:\n * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync\n *\n * \\param interval 0 for immediate updates, 1 for updates synchronized with\n *                 the vertical retrace, -1 for adaptive vsync\n * \\returns 0 on success or -1 if setting the swap interval is not supported;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_GetSwapInterval\n */\nextern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);\n\n/**\n * Get the swap interval for the current OpenGL context.\n *\n * If the system can't determine the swap interval, or there isn't a valid\n * current context, this function will return 0 as a safe default.\n *\n * \\returns 0 if there is no vertical retrace synchronization, 1 if the buffer\n *          swap is synchronized with the vertical retrace, and -1 if late\n *          swaps happen immediately instead of waiting for the next retrace;\n *          call SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_SetSwapInterval\n */\nextern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);\n\n/**\n * Update a window with OpenGL rendering.\n *\n * This is used with double-buffered OpenGL contexts, which are the default.\n *\n * On macOS, make sure you bind 0 to the draw framebuffer before swapping the\n * window, otherwise nothing will happen. If you aren't using\n * glBindFramebuffer(), this is the default and you won't have to do anything\n * extra.\n *\n * \\param window the window to change\n *\n * \\since This function is available since SDL 2.0.0.\n */\nextern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);\n\n/**\n * Delete an OpenGL context.\n *\n * \\param context the OpenGL context to be deleted\n *\n * \\since This function is available since SDL 2.0.0.\n *\n * \\sa SDL_GL_CreateContext\n */\nextern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);\n\n/* @} *//* OpenGL support functions */\n\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_video_h_ */\n\n/* vi: set ts=4 sw=4 expandtab: */\n"
  },
  {
    "path": "libraries/sdl2/SDL_vulkan.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 2017, Mark Callow\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file SDL_vulkan.h\n *\n *  Header file for functions to creating Vulkan surfaces on SDL windows.\n */\n\n#ifndef SDL_vulkan_h_\n#define SDL_vulkan_h_\n\n#include \"SDL_video.h\"\n\n#include \"begin_code.h\"\n/* Set up for C function definitions, even when using C++ */\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Avoid including vulkan.h, don't define VkInstance if it's already included */\n#ifdef VULKAN_H_\n#define NO_SDL_VULKAN_TYPEDEFS\n#endif\n#ifndef NO_SDL_VULKAN_TYPEDEFS\n#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;\n\n#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)\n#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;\n#else\n#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;\n#endif\n\nVK_DEFINE_HANDLE(VkInstance)\nVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)\n\n#endif /* !NO_SDL_VULKAN_TYPEDEFS */\n\ntypedef VkInstance SDL_vulkanInstance;\ntypedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */\n\n/**\n *  \\name Vulkan support functions\n *\n *  \\note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API\n *        is compatable with Tizen's implementation of Vulkan in SDL.\n */\n/* @{ */\n\n/**\n * Dynamically load the Vulkan loader library.\n *\n * This should be called after initializing the video driver, but before\n * creating any Vulkan windows. If no Vulkan loader library is loaded, the\n * default library will be loaded upon creation of the first Vulkan window.\n *\n * It is fairly common for Vulkan applications to link with libvulkan instead\n * of explicitly loading it at run time. This will work with SDL provided the\n * application links to a dynamic library and both it and SDL use the same\n * search path.\n *\n * If you specify a non-NULL `path`, an application should retrieve all of the\n * Vulkan functions it uses from the dynamic library using\n * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points\n * to the same vulkan loader library the application linked to.\n *\n * On Apple devices, if `path` is NULL, SDL will attempt to find the\n * `vkGetInstanceProcAddr` address within all the Mach-O images of the current\n * process. This is because it is fairly common for Vulkan applications to\n * link with libvulkan (and historically MoltenVK was provided as a static\n * library). If it is not found, on macOS, SDL will attempt to load\n * `vulkan.framework/vulkan`, `libvulkan.1.dylib`,\n * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On\n * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a\n * dynamic framework or .dylib must ensure it is included in its application\n * bundle.\n *\n * On non-Apple devices, application linking with a static libvulkan is not\n * supported. Either do not link to the Vulkan loader or link to a dynamic\n * library version.\n *\n * \\param path The platform dependent Vulkan loader library name or NULL\n * \\returns 0 on success or -1 if the library couldn't be loaded; call\n *          SDL_GetError() for more information.\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_Vulkan_GetVkInstanceProcAddr\n * \\sa SDL_Vulkan_UnloadLibrary\n */\nextern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path);\n\n/**\n * Get the address of the `vkGetInstanceProcAddr` function.\n *\n * This should be called after either calling SDL_Vulkan_LoadLibrary() or\n * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag.\n *\n * \\returns the function pointer for `vkGetInstanceProcAddr` or NULL on error.\n *\n * \\since This function is available since SDL 2.0.6.\n */\nextern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void);\n\n/**\n * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary()\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_Vulkan_LoadLibrary\n */\nextern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void);\n\n/**\n * Get the names of the Vulkan instance extensions needed to create a surface\n * with SDL_Vulkan_CreateSurface.\n *\n * If `pNames` is NULL, then the number of required Vulkan instance extensions\n * is returned in `pCount`. Otherwise, `pCount` must point to a variable set\n * to the number of elements in the `pNames` array, and on return the variable\n * is overwritten with the number of names actually written to `pNames`. If\n * `pCount` is less than the number of required extensions, at most `pCount`\n * structures will be written. If `pCount` is smaller than the number of\n * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to\n * indicate that not all the required extensions were returned.\n *\n * The `window` parameter is currently needed to be valid as of SDL 2.0.8,\n * however, this parameter will likely be removed in future releases\n *\n * \\param window A window for which the required Vulkan instance extensions\n *               should be retrieved (will be deprecated in a future release)\n * \\param pCount A pointer to an unsigned int corresponding to the number of\n *               extensions to be returned\n * \\param pNames NULL or a pointer to an array to be filled with required\n *               Vulkan instance extensions\n * \\returns SDL_TRUE on success, SDL_FALSE on error.\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_Vulkan_CreateSurface\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window,\n                                                                  unsigned int *pCount,\n                                                                  const char **pNames);\n\n/**\n * Create a Vulkan rendering surface for a window.\n *\n * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and\n * `instance` must have been created with extensions returned by\n * SDL_Vulkan_GetInstanceExtensions() enabled.\n *\n * \\param window The window to which to attach the Vulkan surface\n * \\param instance The Vulkan instance handle\n * \\param surface A pointer to a VkSurfaceKHR handle to output the newly\n *                created surface\n * \\returns SDL_TRUE on success, SDL_FALSE on error.\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_Vulkan_GetInstanceExtensions\n * \\sa SDL_Vulkan_GetDrawableSize\n */\nextern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window,\n                                                          VkInstance instance,\n                                                          VkSurfaceKHR* surface);\n\n/**\n * Get the size of the window's underlying drawable dimensions in pixels.\n *\n * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI\n * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a\n * platform with high-DPI support (Apple calls this \"Retina\"), and not\n * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint.\n *\n * \\param window an SDL_Window for which the size is to be queried\n * \\param w Pointer to the variable to write the width to or NULL\n * \\param h Pointer to the variable to write the height to or NULL\n *\n * \\since This function is available since SDL 2.0.6.\n *\n * \\sa SDL_GetWindowSize\n * \\sa SDL_CreateWindow\n * \\sa SDL_Vulkan_CreateSurface\n */\nextern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window,\n                                                        int *w, int *h);\n\n/* @} *//* Vulkan support functions */\n\n/* Ends C function definitions when using C++ */\n#ifdef __cplusplus\n}\n#endif\n#include \"close_code.h\"\n\n#endif /* SDL_vulkan_h_ */\n"
  },
  {
    "path": "libraries/sdl2/begin_code.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file begin_code.h\n *\n *  This file sets things up for C dynamic library function definitions,\n *  static inlined functions, and structures aligned at 4-byte alignment.\n *  If you don't like ugly C preprocessor code, don't look at this file. :)\n */\n\n/* This shouldn't be nested -- included it around code only. */\n#ifdef SDL_begin_code_h\n#error Nested inclusion of begin_code.h\n#endif\n#define SDL_begin_code_h\n\n#ifndef SDL_DEPRECATED\n#  if defined(__GNUC__) && (__GNUC__ >= 4)  /* technically, this arrived in gcc 3.1, but oh well. */\n#    define SDL_DEPRECATED __attribute__((deprecated))\n#  elif defined(_MSC_VER)\n#    define SDL_DEPRECATED __declspec(deprecated)\n#  else\n#    define SDL_DEPRECATED\n#  endif\n#endif\n\n#ifndef SDL_UNUSED\n#  ifdef __GNUC__\n#    define SDL_UNUSED __attribute__((unused))\n#  else\n#    define SDL_UNUSED\n#  endif\n#endif\n\n/* Some compilers use a special export keyword */\n#ifndef DECLSPEC\n# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__)\n#  ifdef DLL_EXPORT\n#   define DECLSPEC __declspec(dllexport)\n#  else\n#   define DECLSPEC\n#  endif\n# elif defined(__OS2__)\n#   ifdef BUILD_SDL\n#    define DECLSPEC    __declspec(dllexport)\n#   else\n#    define DECLSPEC\n#   endif\n# else\n#  if defined(__GNUC__) && __GNUC__ >= 4\n#   define DECLSPEC __attribute__ ((visibility(\"default\")))\n#  else\n#   define DECLSPEC\n#  endif\n# endif\n#endif\n\n/* By default SDL uses the C calling convention */\n#ifndef SDLCALL\n#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__)\n#define SDLCALL __cdecl\n#elif defined(__OS2__) || defined(__EMX__)\n#define SDLCALL _System\n# if defined (__GNUC__) && !defined(_System)\n#  define _System /* for old EMX/GCC compat.  */\n# endif\n#else\n#define SDLCALL\n#endif\n#endif /* SDLCALL */\n\n/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */\n#ifdef __SYMBIAN32__\n#undef DECLSPEC\n#define DECLSPEC\n#endif /* __SYMBIAN32__ */\n\n/* Force structure packing at 4 byte alignment.\n   This is necessary if the header is included in code which has structure\n   packing set to an alternate value, say for loading structures from disk.\n   The packing is reset to the previous value in close_code.h\n */\n#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)\n#ifdef _MSC_VER\n#pragma warning(disable: 4103)\n#endif\n#ifdef __clang__\n#pragma clang diagnostic ignored \"-Wpragma-pack\"\n#endif\n#ifdef __BORLANDC__\n#pragma nopackwarning\n#endif\n#ifdef _WIN64\n/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */\n#pragma pack(push,8)\n#else\n#pragma pack(push,4)\n#endif\n#endif /* Compiler needs structure packing set */\n\n#ifndef SDL_INLINE\n#if defined(__GNUC__)\n#define SDL_INLINE __inline__\n#elif defined(_MSC_VER) || defined(__BORLANDC__) || \\\n      defined(__DMC__) || defined(__SC__) || \\\n      defined(__WATCOMC__) || defined(__LCC__) || \\\n      defined(__DECC) || defined(__CC_ARM)\n#define SDL_INLINE __inline\n#ifndef __inline__\n#define __inline__ __inline\n#endif\n#else\n#define SDL_INLINE inline\n#ifndef __inline__\n#define __inline__ inline\n#endif\n#endif\n#endif /* SDL_INLINE not defined */\n\n#ifndef SDL_FORCE_INLINE\n#if defined(_MSC_VER)\n#define SDL_FORCE_INLINE __forceinline\n#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) )\n#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__\n#else\n#define SDL_FORCE_INLINE static SDL_INLINE\n#endif\n#endif /* SDL_FORCE_INLINE not defined */\n\n#ifndef SDL_NORETURN\n#if defined(__GNUC__)\n#define SDL_NORETURN __attribute__((noreturn))\n#elif defined(_MSC_VER)\n#define SDL_NORETURN __declspec(noreturn)\n#else\n#define SDL_NORETURN\n#endif\n#endif /* SDL_NORETURN not defined */\n\n/* Apparently this is needed by several Windows compilers */\n#if !defined(__MACH__)\n#ifndef NULL\n#ifdef __cplusplus\n#define NULL 0\n#else\n#define NULL ((void *)0)\n#endif\n#endif /* NULL */\n#endif /* ! Mac OS X - breaks precompiled headers */\n\n#ifndef SDL_FALLTHROUGH\n#if (defined(__cplusplus) && __cplusplus >= 201703L) || \\\n    (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L)\n#define SDL_FALLTHROUGH [[fallthrough]]\n#else\n#if defined(__has_attribute)\n#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__)\n#else\n#define SDL_HAS_FALLTHROUGH 0\n#endif /* __has_attribute */\n#if SDL_HAS_FALLTHROUGH && \\\n   ((defined(__GNUC__) && __GNUC__ >= 7) || \\\n    (defined(__clang_major__) && __clang_major__ >= 10))\n#define SDL_FALLTHROUGH __attribute__((__fallthrough__))\n#else\n#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */\n#endif /* SDL_HAS_FALLTHROUGH */\n#undef SDL_HAS_FALLTHROUGH\n#endif /* C++17 or C2x */\n#endif /* SDL_FALLTHROUGH not defined */\n"
  },
  {
    "path": "libraries/sdl2/close_code.h",
    "content": "/*\n  Simple DirectMedia Layer\n  Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>\n\n  This software is provided 'as-is', without any express or implied\n  warranty.  In no event will the authors be held liable for any damages\n  arising from the use of this software.\n\n  Permission is granted to anyone to use this software for any purpose,\n  including commercial applications, and to alter it and redistribute it\n  freely, subject to the following restrictions:\n\n  1. The origin of this software must not be misrepresented; you must not\n     claim that you wrote the original software. If you use this software\n     in a product, an acknowledgment in the product documentation would be\n     appreciated but is not required.\n  2. Altered source versions must be plainly marked as such, and must not be\n     misrepresented as being the original software.\n  3. This notice may not be removed or altered from any source distribution.\n*/\n\n/**\n *  \\file close_code.h\n *\n *  This file reverses the effects of begin_code.h and should be included\n *  after you finish any function and structure declarations in your headers\n */\n\n#ifndef SDL_begin_code_h\n#error close_code.h included without matching begin_code.h\n#endif\n#undef SDL_begin_code_h\n\n/* Reset structure packing at previous byte alignment */\n#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__)\n#ifdef __BORLANDC__\n#pragma nopackwarning\n#endif\n#pragma pack(pop)\n#endif /* Compiler needs structure packing set */\n"
  },
  {
    "path": "libraries/stb_image.h",
    "content": "/* stb_image - v2.26 - public domain image loader - http://nothings.org/stb\n                                  no warranty implied; use at your own risk\n\n   Do this:\n      #define STB_IMAGE_IMPLEMENTATION\n   before you include this file in *one* C or C++ file to create the implementation.\n\n   // i.e. it should look like this:\n   #include ...\n   #include ...\n   #include ...\n   #define STB_IMAGE_IMPLEMENTATION\n   #include \"stb_image.h\"\n\n   You can #define STBI_ASSERT(x) before the #include to avoid using assert.h.\n   And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free\n\n\n   QUICK NOTES:\n      Primarily of interest to game developers and other people who can\n          avoid problematic images and only need the trivial interface\n\n      JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib)\n      PNG 1/2/4/8/16-bit-per-channel\n\n      TGA (not sure what subset, if a subset)\n      BMP non-1bpp, non-RLE\n      PSD (composited view only, no extra channels, 8/16 bit-per-channel)\n\n      GIF (*comp always reports as 4-channel)\n      HDR (radiance rgbE format)\n      PIC (Softimage PIC)\n      PNM (PPM and PGM binary only)\n\n      Animated GIF still needs a proper API, but here's one way to do it:\n          http://gist.github.com/urraka/685d9a6340b26b830d49\n\n      - decode from memory or through FILE (define STBI_NO_STDIO to remove code)\n      - decode from arbitrary I/O callbacks\n      - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON)\n\n   Full documentation under \"DOCUMENTATION\" below.\n\n\nLICENSE\n\n  See end of file for license information.\n\nRECENT REVISION HISTORY:\n\n      2.26  (2020-07-13) many minor fixes\n      2.25  (2020-02-02) fix warnings\n      2.24  (2020-02-02) fix warnings; thread-local failure_reason and flip_vertically\n      2.23  (2019-08-11) fix clang static analysis warning\n      2.22  (2019-03-04) gif fixes, fix warnings\n      2.21  (2019-02-25) fix typo in comment\n      2.20  (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings\n      2.16  (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes\n      2.15  (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-12-04) experimental 16-bit API, only for PNG so far; fixes\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64\n                         RGB-format JPEG; remove white matting in PSD;\n                         allocate large structures on the stack;\n                         correct channel count for PNG & BMP\n      2.10  (2016-01-22) avoid warning introduced in 2.09\n      2.09  (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED\n\n   See end of file for full revision history.\n\n\n ============================    Contributors    =========================\n\n Image formats                          Extensions, features\n    Sean Barrett (jpeg, png, bmp)          Jetro Lauha (stbi_info)\n    Nicolas Schulz (hdr, psd)              Martin \"SpartanJ\" Golini (stbi_info)\n    Jonathan Dummer (tga)                  James \"moose2000\" Brown (iPhone PNG)\n    Jean-Marc Lienher (gif)                Ben \"Disch\" Wenger (io callbacks)\n    Tom Seddon (pic)                       Omar Cornut (1/2/4-bit PNG)\n    Thatcher Ulrich (psd)                  Nicolas Guillemot (vertical flip)\n    Ken Miller (pgm, ppm)                  Richard Mitton (16-bit PSD)\n    github:urraka (animated gif)           Junggon Kim (PNM comments)\n    Christopher Forseth (animated gif)     Daniel Gibson (16-bit TGA)\n                                           socks-the-fox (16-bit PNG)\n                                           Jeremy Sawicki (handle all ImageNet JPGs)\n Optimizations & bugfixes                  Mikhail Morozov (1-bit BMP)\n    Fabian \"ryg\" Giesen                    Anael Seghezzi (is-16-bit query)\n    Arseny Kapoulkine\n    John-Mark Allen\n    Carmelo J Fdez-Aguera\n\n Bug & warning fixes\n    Marc LeBlanc            David Woo          Guillaume George     Martins Mozeiko\n    Christpher Lloyd        Jerry Jansson      Joseph Thomson       Blazej Dariusz Roszkowski\n    Phil Jordan                                Dave Moore           Roy Eltham\n    Hayaki Saito            Nathan Reed        Won Chun\n    Luke Graham             Johan Duparc       Nick Verigakis       the Horde3D community\n    Thomas Ruf              Ronny Chevalier                         github:rlyeh\n    Janez Zemva             John Bartholomew   Michal Cichon        github:romigrou\n    Jonathan Blow           Ken Hamada         Tero Hanninen        github:svdijk\n                            Laurent Gomila     Cort Stratton        github:snagar\n    Aruelien Pocheville     Sergio Gonzalez    Thibault Reuille     github:Zelex\n    Cass Everitt            Ryamond Barbiero                        github:grim210\n    Paul Du Bois            Engin Manap        Aldo Culquicondor    github:sammyhw\n    Philipp Wiesemann       Dale Weiler        Oriol Ferrer Mesia   github:phprus\n    Josh Tobin                                 Matthew Gregan       github:poppolopoppo\n    Julian Raschke          Gregory Mullen     Christian Floisand   github:darealshinji\n    Baldur Karlsson         Kevin Schmidt      JR Smith             github:Michaelangel007\n                            Brad Weinberger    Matvey Cherevko      [reserved]\n    Luca Sas                Alexander Veselov  Zack Middleton       [reserved]\n    Ryan C. Gordon          [reserved]                              [reserved]\n                     DO NOT ADD YOUR NAME HERE\n\n  To add your name to the credits, pick a random blank space in the middle and fill it.\n  80% of merge conflicts on stb PRs are due to people adding their name at the end\n  of the credits.\n*/\n\n#ifndef STBI_INCLUDE_STB_IMAGE_H\n#define STBI_INCLUDE_STB_IMAGE_H\n\n// DOCUMENTATION\n//\n// Limitations:\n//    - no 12-bit-per-channel JPEG\n//    - no JPEGs with arithmetic coding\n//    - GIF always returns *comp=4\n//\n// Basic usage (see HDR discussion below for HDR usage):\n//    int x,y,n;\n//    unsigned char *data = stbi_load(filename, &x, &y, &n, 0);\n//    // ... process data if not NULL ...\n//    // ... x = width, y = height, n = # 8-bit components per pixel ...\n//    // ... replace '0' with '1'..'4' to force that many components per pixel\n//    // ... but 'n' will always be the number that it would have been if you said 0\n//    stbi_image_free(data)\n//\n// Standard parameters:\n//    int *x                 -- outputs image width in pixels\n//    int *y                 -- outputs image height in pixels\n//    int *channels_in_file  -- outputs # of image components in image file\n//    int desired_channels   -- if non-zero, # of image components requested in result\n//\n// The return value from an image loader is an 'unsigned char *' which points\n// to the pixel data, or NULL on an allocation failure or if the image is\n// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels,\n// with each pixel consisting of N interleaved 8-bit components; the first\n// pixel pointed to is top-left-most in the image. There is no padding between\n// image scanlines or between pixels, regardless of format. The number of\n// components N is 'desired_channels' if desired_channels is non-zero, or\n// *channels_in_file otherwise. If desired_channels is non-zero,\n// *channels_in_file has the number of components that _would_ have been\n// output otherwise. E.g. if you set desired_channels to 4, you will always\n// get RGBA output, but you can check *channels_in_file to see if it's trivially\n// opaque because e.g. there were only 3 channels in the source image.\n//\n// An output image with N components has the following components interleaved\n// in this order in each pixel:\n//\n//     N=#comp     components\n//       1           grey\n//       2           grey, alpha\n//       3           red, green, blue\n//       4           red, green, blue, alpha\n//\n// If image loading fails for any reason, the return value will be NULL,\n// and *x, *y, *channels_in_file will be unchanged. The function\n// stbi_failure_reason() can be queried for an extremely brief, end-user\n// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS\n// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly\n// more user-friendly ones.\n//\n// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized.\n//\n// ===========================================================================\n//\n// UNICODE:\n//\n//   If compiling for Windows and you wish to use Unicode filenames, compile\n//   with\n//       #define STBI_WINDOWS_UTF8\n//   and pass utf8-encoded filenames. Call stbi_convert_wchar_to_utf8 to convert\n//   Windows wchar_t filenames to utf8.\n//\n// ===========================================================================\n//\n// Philosophy\n//\n// stb libraries are designed with the following priorities:\n//\n//    1. easy to use\n//    2. easy to maintain\n//    3. good performance\n//\n// Sometimes I let \"good performance\" creep up in priority over \"easy to maintain\",\n// and for best performance I may provide less-easy-to-use APIs that give higher\n// performance, in addition to the easy-to-use ones. Nevertheless, it's important\n// to keep in mind that from the standpoint of you, a client of this library,\n// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all.\n//\n// Some secondary priorities arise directly from the first two, some of which\n// provide more explicit reasons why performance can't be emphasized.\n//\n//    - Portable (\"ease of use\")\n//    - Small source code footprint (\"easy to maintain\")\n//    - No dependencies (\"ease of use\")\n//\n// ===========================================================================\n//\n// I/O callbacks\n//\n// I/O callbacks allow you to read from arbitrary sources, like packaged\n// files or some other source. Data read from callbacks are processed\n// through a small internal buffer (currently 128 bytes) to try to reduce\n// overhead.\n//\n// The three functions you must define are \"read\" (reads some bytes of data),\n// \"skip\" (skips some bytes of data), \"eof\" (reports if the stream is at the end).\n//\n// ===========================================================================\n//\n// SIMD support\n//\n// The JPEG decoder will try to automatically use SIMD kernels on x86 when\n// supported by the compiler. For ARM Neon support, you must explicitly\n// request it.\n//\n// (The old do-it-yourself SIMD API is no longer supported in the current\n// code.)\n//\n// On x86, SSE2 will automatically be used when available based on a run-time\n// test; if not, the generic C versions are used as a fall-back. On ARM targets,\n// the typical path is to have separate builds for NEON and non-NEON devices\n// (at least this is true for iOS and Android). Therefore, the NEON support is\n// toggled by a build flag: define STBI_NEON to get NEON loops.\n//\n// If for some reason you do not want to use any of SIMD code, or if\n// you have issues compiling it, you can disable it entirely by\n// defining STBI_NO_SIMD.\n//\n// ===========================================================================\n//\n// HDR image support   (disable by defining STBI_NO_HDR)\n//\n// stb_image supports loading HDR images in general, and currently the Radiance\n// .HDR file format specifically. You can still load any file through the existing\n// interface; if you attempt to load an HDR file, it will be automatically remapped\n// to LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1;\n// both of these constants can be reconfigured through this interface:\n//\n//     stbi_hdr_to_ldr_gamma(2.2f);\n//     stbi_hdr_to_ldr_scale(1.0f);\n//\n// (note, do not use _inverse_ constants; stbi_image will invert them\n// appropriately).\n//\n// Additionally, there is a new, parallel interface for loading files as\n// (linear) floats to preserve the full dynamic range:\n//\n//    float *data = stbi_loadf(filename, &x, &y, &n, 0);\n//\n// If you load LDR images through this interface, those images will\n// be promoted to floating point values, run through the inverse of\n// constants corresponding to the above:\n//\n//     stbi_ldr_to_hdr_scale(1.0f);\n//     stbi_ldr_to_hdr_gamma(2.2f);\n//\n// Finally, given a filename (or an open file or memory block--see header\n// file for details) containing image data, you can query for the \"most\n// appropriate\" interface to use (that is, whether the image is HDR or\n// not), using:\n//\n//     stbi_is_hdr(char *filename);\n//\n// ===========================================================================\n//\n// iPhone PNG support:\n//\n// By default we convert iphone-formatted PNGs back to RGB, even though\n// they are internally encoded differently. You can disable this conversion\n// by calling stbi_convert_iphone_png_to_rgb(0), in which case\n// you will always just get the native iphone \"format\" through (which\n// is BGR stored in RGB).\n//\n// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per\n// pixel to remove any premultiplied alpha *only* if the image file explicitly\n// says there's premultiplied data (currently only happens in iPhone images,\n// and only if iPhone convert-to-rgb processing is on).\n//\n// ===========================================================================\n//\n// ADDITIONAL CONFIGURATION\n//\n//  - You can suppress implementation of any of the decoders to reduce\n//    your code footprint by #defining one or more of the following\n//    symbols before creating the implementation.\n//\n//        STBI_NO_JPEG\n//        STBI_NO_PNG\n//        STBI_NO_BMP\n//        STBI_NO_PSD\n//        STBI_NO_TGA\n//        STBI_NO_GIF\n//        STBI_NO_HDR\n//        STBI_NO_PIC\n//        STBI_NO_PNM   (.ppm and .pgm)\n//\n//  - You can request *only* certain decoders and suppress all other ones\n//    (this will be more forward-compatible, as addition of new decoders\n//    doesn't require you to disable them explicitly):\n//\n//        STBI_ONLY_JPEG\n//        STBI_ONLY_PNG\n//        STBI_ONLY_BMP\n//        STBI_ONLY_PSD\n//        STBI_ONLY_TGA\n//        STBI_ONLY_GIF\n//        STBI_ONLY_HDR\n//        STBI_ONLY_PIC\n//        STBI_ONLY_PNM   (.ppm and .pgm)\n//\n//   - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still\n//     want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB\n//\n//  - If you define STBI_MAX_DIMENSIONS, stb_image will reject images greater\n//    than that size (in either width or height) without further processing.\n//    This is to let programs in the wild set an upper bound to prevent\n//    denial-of-service attacks on untrusted data, as one could generate a\n//    valid image of gigantic dimensions and force stb_image to allocate a\n//    huge block of memory and spend disproportionate time decoding it. By\n//    default this is set to (1 << 24), which is 16777216, but that's still\n//    very big.\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif // STBI_NO_STDIO\n\n#define STBI_VERSION 1\n\nenum\n{\n   STBI_default = 0, // only used for desired_channels\n\n   STBI_grey       = 1,\n   STBI_grey_alpha = 2,\n   STBI_rgb        = 3,\n   STBI_rgb_alpha  = 4\n};\n\n#include <stdlib.h>\ntypedef unsigned char stbi_uc;\ntypedef unsigned short stbi_us;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#ifndef STBIDEF\n#ifdef STB_IMAGE_STATIC\n#define STBIDEF static\n#else\n#define STBIDEF extern\n#endif\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// PRIMARY API - works on images of any type\n//\n\n//\n// load image by filename, open file, or memory buffer\n//\n\ntypedef struct\n{\n   int      (*read)  (void *user,char *data,int size);   // fill 'data' with 'size' bytes.  return number of bytes actually read\n   void     (*skip)  (void *user,int n);                 // skip the next 'n' bytes, or 'unget' the last -n bytes if negative\n   int      (*eof)   (void *user);                       // returns nonzero if we are at end of file/data\n} stbi_io_callbacks;\n\n////////////////////////////////////\n//\n// 8-bits-per-channel interface\n//\n\nSTBIDEF stbi_uc *stbi_load_from_memory   (stbi_uc           const *buffer, int len   , int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk  , void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_uc *stbi_load            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_uc *stbi_load_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n// for stbi_load_from_file, file pointer is left pointing immediately after image\n#endif\n\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\n#endif\n\n#ifdef STBI_WINDOWS_UTF8\nSTBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input);\n#endif\n\n////////////////////////////////////\n//\n// 16-bits-per-channel interface\n//\n\nSTBIDEF stbi_us *stbi_load_16_from_memory   (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF stbi_us *stbi_load_16          (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\nSTBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n#endif\n\n////////////////////////////////////\n//\n// float-per-channel interface\n//\n#ifndef STBI_NO_LINEAR\n   STBIDEF float *stbi_loadf_from_memory     (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_callbacks  (stbi_io_callbacks const *clbk, void *user, int *x, int *y,  int *channels_in_file, int desired_channels);\n\n   #ifndef STBI_NO_STDIO\n   STBIDEF float *stbi_loadf            (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels);\n   STBIDEF float *stbi_loadf_from_file  (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels);\n   #endif\n#endif\n\n#ifndef STBI_NO_HDR\n   STBIDEF void   stbi_hdr_to_ldr_gamma(float gamma);\n   STBIDEF void   stbi_hdr_to_ldr_scale(float scale);\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_LINEAR\n   STBIDEF void   stbi_ldr_to_hdr_gamma(float gamma);\n   STBIDEF void   stbi_ldr_to_hdr_scale(float scale);\n#endif // STBI_NO_LINEAR\n\n// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR\nSTBIDEF int    stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user);\nSTBIDEF int    stbi_is_hdr_from_memory(stbi_uc const *buffer, int len);\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename);\nSTBIDEF int      stbi_is_hdr_from_file(FILE *f);\n#endif // STBI_NO_STDIO\n\n\n// get a VERY brief reason for failure\n// on most compilers (and ALL modern mainstream compilers) this is threadsafe\nSTBIDEF const char *stbi_failure_reason  (void);\n\n// free the loaded image -- this is just free()\nSTBIDEF void     stbi_image_free      (void *retval_from_stbi_load);\n\n// get image dimensions & components without fully decoding\nSTBIDEF int      stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len);\nSTBIDEF int      stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user);\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_info               (char const *filename,     int *x, int *y, int *comp);\nSTBIDEF int      stbi_info_from_file     (FILE *f,                  int *x, int *y, int *comp);\nSTBIDEF int      stbi_is_16_bit          (char const *filename);\nSTBIDEF int      stbi_is_16_bit_from_file(FILE *f);\n#endif\n\n\n\n// for image formats that explicitly notate that they have premultiplied alpha,\n// we just return the colors as stored in the file. set this flag to force\n// unpremultiplication. results are undefined if the unpremultiply overflow.\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply);\n\n// indicate whether we should process iphone images back to canonical format,\n// or just pass them through \"as-is\"\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert);\n\n// flip the image vertically, so the first pixel in the output array is the bottom left\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip);\n\n// as above, but only applies to images loaded on the thread that calls the function\n// this function is only available if your compiler supports thread-local variables;\n// calling it will fail to link if your compiler doesn't\nSTBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip);\n\n// ZLIB client - used by PNG, available for other purposes\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen);\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header);\nSTBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen);\nSTBIDEF int   stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n//\n//\n////   end header file   /////////////////////////////////////////////////////\n#endif // STBI_INCLUDE_STB_IMAGE_H\n\n#ifdef STB_IMAGE_IMPLEMENTATION\n\n#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \\\n  || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \\\n  || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \\\n  || defined(STBI_ONLY_ZLIB)\n   #ifndef STBI_ONLY_JPEG\n   #define STBI_NO_JPEG\n   #endif\n   #ifndef STBI_ONLY_PNG\n   #define STBI_NO_PNG\n   #endif\n   #ifndef STBI_ONLY_BMP\n   #define STBI_NO_BMP\n   #endif\n   #ifndef STBI_ONLY_PSD\n   #define STBI_NO_PSD\n   #endif\n   #ifndef STBI_ONLY_TGA\n   #define STBI_NO_TGA\n   #endif\n   #ifndef STBI_ONLY_GIF\n   #define STBI_NO_GIF\n   #endif\n   #ifndef STBI_ONLY_HDR\n   #define STBI_NO_HDR\n   #endif\n   #ifndef STBI_ONLY_PIC\n   #define STBI_NO_PIC\n   #endif\n   #ifndef STBI_ONLY_PNM\n   #define STBI_NO_PNM\n   #endif\n#endif\n\n#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB)\n#define STBI_NO_ZLIB\n#endif\n\n\n#include <stdarg.h>\n#include <stddef.h> // ptrdiff_t on osx\n#include <stdlib.h>\n#include <string.h>\n#include <limits.h>\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\n#include <math.h>  // ldexp, pow\n#endif\n\n#ifndef STBI_NO_STDIO\n#include <stdio.h>\n#endif\n\n#ifndef STBI_ASSERT\n#include <assert.h>\n#define STBI_ASSERT(x) assert(x)\n#endif\n\n#ifdef __cplusplus\n#define STBI_EXTERN extern \"C\"\n#else\n#define STBI_EXTERN extern\n#endif\n\n\n#ifndef _MSC_VER\n   #ifdef __cplusplus\n   #define stbi_inline inline\n   #else\n   #define stbi_inline\n   #endif\n#else\n   #define stbi_inline __forceinline\n#endif\n\n#ifndef STBI_NO_THREAD_LOCALS\n   #if defined(__cplusplus) &&  __cplusplus >= 201103L\n      #define STBI_THREAD_LOCAL       thread_local\n   #elif defined(__GNUC__) && __GNUC__ < 5\n      #define STBI_THREAD_LOCAL       __thread\n   #elif defined(_MSC_VER)\n      #define STBI_THREAD_LOCAL       __declspec(thread)\n   #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__)\n      #define STBI_THREAD_LOCAL       _Thread_local\n   #endif\n\n   #ifndef STBI_THREAD_LOCAL\n      #if defined(__GNUC__)\n        #define STBI_THREAD_LOCAL       __thread\n      #endif\n   #endif\n#endif\n\n#ifdef _MSC_VER\ntypedef unsigned short stbi__uint16;\ntypedef   signed short stbi__int16;\ntypedef unsigned int   stbi__uint32;\ntypedef   signed int   stbi__int32;\n#else\n#include <stdint.h>\ntypedef uint16_t stbi__uint16;\ntypedef int16_t  stbi__int16;\ntypedef uint32_t stbi__uint32;\ntypedef int32_t  stbi__int32;\n#endif\n\n// should produce compiler error if size is wrong\ntypedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1];\n\n#ifdef _MSC_VER\n#define STBI_NOTUSED(v)  (void)(v)\n#else\n#define STBI_NOTUSED(v)  (void)sizeof(v)\n#endif\n\n#ifdef _MSC_VER\n#define STBI_HAS_LROTL\n#endif\n\n#ifdef STBI_HAS_LROTL\n   #define stbi_lrot(x,y)  _lrotl(x,y)\n#else\n   #define stbi_lrot(x,y)  (((x) << (y)) | ((x) >> (32 - (y))))\n#endif\n\n#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED))\n// ok\n#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED).\"\n#endif\n\n#ifndef STBI_MALLOC\n#define STBI_MALLOC(sz)           malloc(sz)\n#define STBI_REALLOC(p,newsz)     realloc(p,newsz)\n#define STBI_FREE(p)              free(p)\n#endif\n\n#ifndef STBI_REALLOC_SIZED\n#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz)\n#endif\n\n// x86/x64 detection\n#if defined(__x86_64__) || defined(_M_X64)\n#define STBI__X64_TARGET\n#elif defined(__i386) || defined(_M_IX86)\n#define STBI__X86_TARGET\n#endif\n\n#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD)\n// gcc doesn't support sse2 intrinsics unless you compile with -msse2,\n// which in turn means it gets to use SSE2 everywhere. This is unfortunate,\n// but previous attempts to provide the SSE2 functions with runtime\n// detection caused numerous issues. The way architecture extensions are\n// exposed in GCC/Clang is, sadly, not really suited for one-file libs.\n// New behavior: if compiled with -msse2, we use SSE2 without any\n// detection; if not, we don't use it at all.\n#define STBI_NO_SIMD\n#endif\n\n#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD)\n// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET\n//\n// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the\n// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant.\n// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not\n// simultaneously enabling \"-mstackrealign\".\n//\n// See https://github.com/nothings/stb/issues/81 for more information.\n//\n// So default to no SSE2 on 32-bit MinGW. If you've read this far and added\n// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2.\n#define STBI_NO_SIMD\n#endif\n\n#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET))\n#define STBI_SSE2\n#include <emmintrin.h>\n\n#ifdef _MSC_VER\n\n#if _MSC_VER >= 1400  // not VC6\n#include <intrin.h> // __cpuid\nstatic int stbi__cpuid3(void)\n{\n   int info[4];\n   __cpuid(info,1);\n   return info[3];\n}\n#else\nstatic int stbi__cpuid3(void)\n{\n   int res;\n   __asm {\n      mov  eax,1\n      cpuid\n      mov  res,edx\n   }\n   return res;\n}\n#endif\n\n#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name\n\n#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2)\nstatic int stbi__sse2_available(void)\n{\n   int info3 = stbi__cpuid3();\n   return ((info3 >> 26) & 1) != 0;\n}\n#endif\n\n#else // assume GCC-style if not VC++\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n\n#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2)\nstatic int stbi__sse2_available(void)\n{\n   // If we're even attempting to compile this on GCC/Clang, that means\n   // -msse2 is on, which means the compiler is allowed to use SSE2\n   // instructions at will, and so are we.\n   return 1;\n}\n#endif\n\n#endif\n#endif\n\n// ARM NEON\n#if defined(STBI_NO_SIMD) && defined(STBI_NEON)\n#undef STBI_NEON\n#endif\n\n#ifdef STBI_NEON\n#include <arm_neon.h>\n// assume GCC or Clang on ARM targets\n#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16)))\n#endif\n\n#ifndef STBI_SIMD_ALIGN\n#define STBI_SIMD_ALIGN(type, name) type name\n#endif\n\n#ifndef STBI_MAX_DIMENSIONS\n#define STBI_MAX_DIMENSIONS (1 << 24)\n#endif\n\n///////////////////////////////////////////////\n//\n//  stbi__context struct and start_xxx functions\n\n// stbi__context structure is our basic context used by all images, so it\n// contains all the IO context, plus some basic image information\ntypedef struct\n{\n   stbi__uint32 img_x, img_y;\n   int img_n, img_out_n;\n\n   stbi_io_callbacks io;\n   void *io_user_data;\n\n   int read_from_callbacks;\n   int buflen;\n   stbi_uc buffer_start[128];\n   int callback_already_read;\n\n   stbi_uc *img_buffer, *img_buffer_end;\n   stbi_uc *img_buffer_original, *img_buffer_original_end;\n} stbi__context;\n\n\nstatic void stbi__refill_buffer(stbi__context *s);\n\n// initialize a memory-decode context\nstatic void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len)\n{\n   s->io.read = NULL;\n   s->read_from_callbacks = 0;\n   s->callback_already_read = 0;\n   s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer;\n   s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len;\n}\n\n// initialize a callback-based context\nstatic void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user)\n{\n   s->io = *c;\n   s->io_user_data = user;\n   s->buflen = sizeof(s->buffer_start);\n   s->read_from_callbacks = 1;\n   s->callback_already_read = 0;\n   s->img_buffer = s->img_buffer_original = s->buffer_start;\n   stbi__refill_buffer(s);\n   s->img_buffer_original_end = s->img_buffer_end;\n}\n\n#ifndef STBI_NO_STDIO\n\nstatic int stbi__stdio_read(void *user, char *data, int size)\n{\n   return (int) fread(data,1,size,(FILE*) user);\n}\n\nstatic void stbi__stdio_skip(void *user, int n)\n{\n   int ch;\n   fseek((FILE*) user, n, SEEK_CUR);\n   ch = fgetc((FILE*) user);  /* have to read a byte to reset feof()'s flag */\n   if (ch != EOF) {\n      ungetc(ch, (FILE *) user);  /* push byte back onto stream if valid. */\n   }\n}\n\nstatic int stbi__stdio_eof(void *user)\n{\n   return feof((FILE*) user) || ferror((FILE *) user);\n}\n\nstatic stbi_io_callbacks stbi__stdio_callbacks =\n{\n   stbi__stdio_read,\n   stbi__stdio_skip,\n   stbi__stdio_eof,\n};\n\nstatic void stbi__start_file(stbi__context *s, FILE *f)\n{\n   stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f);\n}\n\n//static void stop_file(stbi__context *s) { }\n\n#endif // !STBI_NO_STDIO\n\nstatic void stbi__rewind(stbi__context *s)\n{\n   // conceptually rewind SHOULD rewind to the beginning of the stream,\n   // but we just rewind to the beginning of the initial buffer, because\n   // we only use it after doing 'test', which only ever looks at at most 92 bytes\n   s->img_buffer = s->img_buffer_original;\n   s->img_buffer_end = s->img_buffer_original_end;\n}\n\nenum\n{\n   STBI_ORDER_RGB,\n   STBI_ORDER_BGR\n};\n\ntypedef struct\n{\n   int bits_per_channel;\n   int num_channels;\n   int channel_order;\n} stbi__result_info;\n\n#ifndef STBI_NO_JPEG\nstatic int      stbi__jpeg_test(stbi__context *s);\nstatic void    *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNG\nstatic int      stbi__png_test(stbi__context *s);\nstatic void    *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__png_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__png_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_BMP\nstatic int      stbi__bmp_test(stbi__context *s);\nstatic void    *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_TGA\nstatic int      stbi__tga_test(stbi__context *s);\nstatic void    *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__tga_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int      stbi__psd_test(stbi__context *s);\nstatic void    *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc);\nstatic int      stbi__psd_info(stbi__context *s, int *x, int *y, int *comp);\nstatic int      stbi__psd_is16(stbi__context *s);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic int      stbi__hdr_test(stbi__context *s);\nstatic float   *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int      stbi__pic_test(stbi__context *s);\nstatic void    *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pic_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_GIF\nstatic int      stbi__gif_test(stbi__context *s);\nstatic void    *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic void    *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp);\nstatic int      stbi__gif_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\n#ifndef STBI_NO_PNM\nstatic int      stbi__pnm_test(stbi__context *s);\nstatic void    *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri);\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp);\n#endif\n\nstatic\n#ifdef STBI_THREAD_LOCAL\nSTBI_THREAD_LOCAL\n#endif\nconst char *stbi__g_failure_reason;\n\nSTBIDEF const char *stbi_failure_reason(void)\n{\n   return stbi__g_failure_reason;\n}\n\n#ifndef STBI_NO_FAILURE_STRINGS\nstatic int stbi__err(const char *str)\n{\n   stbi__g_failure_reason = str;\n   return 0;\n}\n#endif\n\nstatic void *stbi__malloc(size_t size)\n{\n    return STBI_MALLOC(size);\n}\n\n// stb_image uses ints pervasively, including for offset calculations.\n// therefore the largest decoded image size we can support with the\n// current code, even on 64-bit targets, is INT_MAX. this is not a\n// significant limitation for the intended use case.\n//\n// we do, however, need to make sure our size calculations don't\n// overflow. hence a few helper functions for size calculations that\n// multiply integers together, making sure that they're non-negative\n// and no overflow occurs.\n\n// return 1 if the sum is valid, 0 on overflow.\n// negative terms are considered invalid.\nstatic int stbi__addsizes_valid(int a, int b)\n{\n   if (b < 0) return 0;\n   // now 0 <= b <= INT_MAX, hence also\n   // 0 <= INT_MAX - b <= INTMAX.\n   // And \"a + b <= INT_MAX\" (which might overflow) is the\n   // same as a <= INT_MAX - b (no overflow)\n   return a <= INT_MAX - b;\n}\n\n// returns 1 if the product is valid, 0 on overflow.\n// negative factors are considered invalid.\nstatic int stbi__mul2sizes_valid(int a, int b)\n{\n   if (a < 0 || b < 0) return 0;\n   if (b == 0) return 1; // mul-by-0 is always safe\n   // portable way to check for no overflows in a*b\n   return a <= INT_MAX/b;\n}\n\n#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR)\n// returns 1 if \"a*b + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad2sizes_valid(int a, int b, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add);\n}\n#endif\n\n// returns 1 if \"a*b*c + add\" has no negative terms/factors and doesn't overflow\nstatic int stbi__mad3sizes_valid(int a, int b, int c, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__addsizes_valid(a*b*c, add);\n}\n\n// returns 1 if \"a*b*c*d + add\" has no negative terms/factors and doesn't overflow\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\nstatic int stbi__mad4sizes_valid(int a, int b, int c, int d, int add)\n{\n   return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) &&\n      stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add);\n}\n#endif\n\n#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR)\n// mallocs with size overflow checking\nstatic void *stbi__malloc_mad2(int a, int b, int add)\n{\n   if (!stbi__mad2sizes_valid(a, b, add)) return NULL;\n   return stbi__malloc(a*b + add);\n}\n#endif\n\nstatic void *stbi__malloc_mad3(int a, int b, int c, int add)\n{\n   if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL;\n   return stbi__malloc(a*b*c + add);\n}\n\n#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR)\nstatic void *stbi__malloc_mad4(int a, int b, int c, int d, int add)\n{\n   if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL;\n   return stbi__malloc(a*b*c*d + add);\n}\n#endif\n\n// stbi__err - error\n// stbi__errpf - error returning pointer to float\n// stbi__errpuc - error returning pointer to unsigned char\n\n#ifdef STBI_NO_FAILURE_STRINGS\n   #define stbi__err(x,y)  0\n#elif defined(STBI_FAILURE_USERMSG)\n   #define stbi__err(x,y)  stbi__err(y)\n#else\n   #define stbi__err(x,y)  stbi__err(x)\n#endif\n\n#define stbi__errpf(x,y)   ((float *)(size_t) (stbi__err(x,y)?NULL:NULL))\n#define stbi__errpuc(x,y)  ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL))\n\nSTBIDEF void stbi_image_free(void *retval_from_stbi_load)\n{\n   STBI_FREE(retval_from_stbi_load);\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp);\n#endif\n\n#ifndef STBI_NO_HDR\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp);\n#endif\n\nstatic int stbi__vertically_flip_on_load_global = 0;\n\nSTBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)\n{\n   stbi__vertically_flip_on_load_global = flag_true_if_should_flip;\n}\n\n#ifndef STBI_THREAD_LOCAL\n#define stbi__vertically_flip_on_load  stbi__vertically_flip_on_load_global\n#else\nstatic STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set;\n\nSTBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip)\n{\n   stbi__vertically_flip_on_load_local = flag_true_if_should_flip;\n   stbi__vertically_flip_on_load_set = 1;\n}\n\n#define stbi__vertically_flip_on_load  (stbi__vertically_flip_on_load_set       \\\n                                         ? stbi__vertically_flip_on_load_local  \\\n                                         : stbi__vertically_flip_on_load_global)\n#endif // STBI_THREAD_LOCAL\n\nstatic void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields\n   ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed\n   ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order\n   ri->num_channels = 0;\n\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PNG\n   if (stbi__png_test(s))  return stbi__png_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_test(s))  return stbi__bmp_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_test(s))  return stbi__gif_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_test(s))  return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc);\n   #else\n   STBI_NOTUSED(bpc);\n   #endif\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_test(s))  return stbi__pic_load(s,x,y,comp,req_comp, ri);\n   #endif\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_test(s))  return stbi__pnm_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri);\n      return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp);\n   }\n   #endif\n\n   #ifndef STBI_NO_TGA\n   // test tga last because it's a crappy test!\n   if (stbi__tga_test(s))\n      return stbi__tga_load(s,x,y,comp,req_comp, ri);\n   #endif\n\n   return stbi__errpuc(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi_uc *reduced;\n\n   reduced = (stbi_uc *) stbi__malloc(img_len);\n   if (reduced == NULL) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling\n\n   STBI_FREE(orig);\n   return reduced;\n}\n\nstatic stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels)\n{\n   int i;\n   int img_len = w * h * channels;\n   stbi__uint16 *enlarged;\n\n   enlarged = (stbi__uint16 *) stbi__malloc(img_len*2);\n   if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   for (i = 0; i < img_len; ++i)\n      enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff\n\n   STBI_FREE(orig);\n   return enlarged;\n}\n\nstatic void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel)\n{\n   int row;\n   size_t bytes_per_row = (size_t)w * bytes_per_pixel;\n   stbi_uc temp[2048];\n   stbi_uc *bytes = (stbi_uc *)image;\n\n   for (row = 0; row < (h>>1); row++) {\n      stbi_uc *row0 = bytes + row*bytes_per_row;\n      stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row;\n      // swap row0 with row1\n      size_t bytes_left = bytes_per_row;\n      while (bytes_left) {\n         size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp);\n         memcpy(temp, row0, bytes_copy);\n         memcpy(row0, row1, bytes_copy);\n         memcpy(row1, temp, bytes_copy);\n         row0 += bytes_copy;\n         row1 += bytes_copy;\n         bytes_left -= bytes_copy;\n      }\n   }\n}\n\n#ifndef STBI_NO_GIF\nstatic void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel)\n{\n   int slice;\n   int slice_size = w * h * bytes_per_pixel;\n\n   stbi_uc *bytes = (stbi_uc *)image;\n   for (slice = 0; slice < z; ++slice) {\n      stbi__vertical_flip(bytes, w, h, bytes_per_pixel);\n      bytes += slice_size;\n   }\n}\n#endif\n\nstatic unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8);\n\n   if (result == NULL)\n      return NULL;\n\n   // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.\n   STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);\n\n   if (ri.bits_per_channel != 8) {\n      result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 8;\n   }\n\n   // @TODO: move stbi__convert_format to here\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc));\n   }\n\n   return (unsigned char *) result;\n}\n\nstatic stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__result_info ri;\n   void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16);\n\n   if (result == NULL)\n      return NULL;\n\n   // it is the responsibility of the loaders to make sure we get either 8 or 16 bit.\n   STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16);\n\n   if (ri.bits_per_channel != 16) {\n      result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp);\n      ri.bits_per_channel = 16;\n   }\n\n   // @TODO: move stbi__convert_format16 to here\n   // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision\n\n   if (stbi__vertically_flip_on_load) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16));\n   }\n\n   return (stbi__uint16 *) result;\n}\n\n#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR)\nstatic void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp)\n{\n   if (stbi__vertically_flip_on_load && result != NULL) {\n      int channels = req_comp ? req_comp : *comp;\n      stbi__vertical_flip(result, *x, *y, channels * sizeof(float));\n   }\n}\n#endif\n\n#ifndef STBI_NO_STDIO\n\n#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)\nSTBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide);\nSTBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default);\n#endif\n\n#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)\nSTBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)\n{\n\treturn WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);\n}\n#endif\n\nstatic FILE *stbi__fopen(char const *filename, char const *mode)\n{\n   FILE *f;\n#if defined(_MSC_VER) && defined(STBI_WINDOWS_UTF8)\n   wchar_t wMode[64];\n   wchar_t wFilename[1024];\n\tif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)))\n      return 0;\n\n\tif (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)))\n      return 0;\n\n#if _MSC_VER >= 1400\n\tif (0 != _wfopen_s(&f, wFilename, wMode))\n\t\tf = 0;\n#else\n   f = _wfopen(wFilename, wMode);\n#endif\n\n#elif defined(_MSC_VER) && _MSC_VER >= 1400\n   if (0 != fopen_s(&f, filename, mode))\n      f=0;\n#else\n   f = fopen(filename, mode);\n#endif\n   return f;\n}\n\n\nSTBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   unsigned char *result;\n   if (!f) return stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__uint16 *result;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp);\n   if (result) {\n      // need to 'unget' all the characters in the IO buffer\n      fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR);\n   }\n   return result;\n}\n\nSTBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   stbi__uint16 *result;\n   if (!f) return (stbi_us *) stbi__errpuc(\"can't fopen\", \"Unable to open file\");\n   result = stbi_load_from_file_16(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\n\n#endif //!STBI_NO_STDIO\n\nSTBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user);\n   return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_GIF\nSTBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   unsigned char *result;\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n\n   result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp);\n   if (stbi__vertically_flip_on_load) {\n      stbi__vertical_flip_slices( result, *x, *y, *z, *comp );\n   }\n\n   return result;\n}\n#endif\n\n#ifndef STBI_NO_LINEAR\nstatic float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp)\n{\n   unsigned char *data;\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_test(s)) {\n      stbi__result_info ri;\n      float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri);\n      if (hdr_data)\n         stbi__float_postprocess(hdr_data,x,y,comp,req_comp);\n      return hdr_data;\n   }\n   #endif\n   data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp);\n   if (data)\n      return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp);\n   return stbi__errpf(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nSTBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\nSTBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp)\n{\n   float *result;\n   FILE *f = stbi__fopen(filename, \"rb\");\n   if (!f) return stbi__errpf(\"can't fopen\", \"Unable to open file\");\n   result = stbi_loadf_from_file(f,x,y,comp,req_comp);\n   fclose(f);\n   return result;\n}\n\nSTBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp)\n{\n   stbi__context s;\n   stbi__start_file(&s,f);\n   return stbi__loadf_main(&s,x,y,comp,req_comp);\n}\n#endif // !STBI_NO_STDIO\n\n#endif // !STBI_NO_LINEAR\n\n// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is\n// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always\n// reports false!\n\nSTBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(buffer);\n   STBI_NOTUSED(len);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int      stbi_is_hdr          (char const *filename)\n{\n   FILE *f = stbi__fopen(filename, \"rb\");\n   int result=0;\n   if (f) {\n      result = stbi_is_hdr_from_file(f);\n      fclose(f);\n   }\n   return result;\n}\n\nSTBIDEF int stbi_is_hdr_from_file(FILE *f)\n{\n   #ifndef STBI_NO_HDR\n   long pos = ftell(f);\n   int res;\n   stbi__context s;\n   stbi__start_file(&s,f);\n   res = stbi__hdr_test(&s);\n   fseek(f, pos, SEEK_SET);\n   return res;\n   #else\n   STBI_NOTUSED(f);\n   return 0;\n   #endif\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int      stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user)\n{\n   #ifndef STBI_NO_HDR\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user);\n   return stbi__hdr_test(&s);\n   #else\n   STBI_NOTUSED(clbk);\n   STBI_NOTUSED(user);\n   return 0;\n   #endif\n}\n\n#ifndef STBI_NO_LINEAR\nstatic float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f;\n\nSTBIDEF void   stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; }\nSTBIDEF void   stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; }\n#endif\n\nstatic float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f;\n\nSTBIDEF void   stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; }\nSTBIDEF void   stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; }\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// Common code used by all image loaders\n//\n\nenum\n{\n   STBI__SCAN_load=0,\n   STBI__SCAN_type,\n   STBI__SCAN_header\n};\n\nstatic void stbi__refill_buffer(stbi__context *s)\n{\n   int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen);\n   s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original);\n   if (n == 0) {\n      // at end of file, treat same as if from memory, but need to handle case\n      // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file\n      s->read_from_callbacks = 0;\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start+1;\n      *s->img_buffer = 0;\n   } else {\n      s->img_buffer = s->buffer_start;\n      s->img_buffer_end = s->buffer_start + n;\n   }\n}\n\nstbi_inline static stbi_uc stbi__get8(stbi__context *s)\n{\n   if (s->img_buffer < s->img_buffer_end)\n      return *s->img_buffer++;\n   if (s->read_from_callbacks) {\n      stbi__refill_buffer(s);\n      return *s->img_buffer++;\n   }\n   return 0;\n}\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\nstbi_inline static int stbi__at_eof(stbi__context *s)\n{\n   if (s->io.read) {\n      if (!(s->io.eof)(s->io_user_data)) return 0;\n      // if feof() is true, check if buffer = end\n      // special case: we've only got the special 0 character at the end\n      if (s->read_from_callbacks == 0) return 1;\n   }\n\n   return s->img_buffer >= s->img_buffer_end;\n}\n#endif\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic void stbi__skip(stbi__context *s, int n)\n{\n   if (n == 0) return;  // already there!\n   if (n < 0) {\n      s->img_buffer = s->img_buffer_end;\n      return;\n   }\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         s->img_buffer = s->img_buffer_end;\n         (s->io.skip)(s->io_user_data, n - blen);\n         return;\n      }\n   }\n   s->img_buffer += n;\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM)\n// nothing\n#else\nstatic int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)\n{\n   if (s->io.read) {\n      int blen = (int) (s->img_buffer_end - s->img_buffer);\n      if (blen < n) {\n         int res, count;\n\n         memcpy(buffer, s->img_buffer, blen);\n\n         count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen);\n         res = (count == (n-blen));\n         s->img_buffer = s->img_buffer_end;\n         return res;\n      }\n   }\n\n   if (s->img_buffer+n <= s->img_buffer_end) {\n      memcpy(buffer, s->img_buffer, n);\n      s->img_buffer += n;\n      return 1;\n   } else\n      return 0;\n}\n#endif\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic int stbi__get16be(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return (z << 8) + stbi__get8(s);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC)\n// nothing\n#else\nstatic stbi__uint32 stbi__get32be(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16be(s);\n   return (z << 16) + stbi__get16be(s);\n}\n#endif\n\n#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF)\n// nothing\n#else\nstatic int stbi__get16le(stbi__context *s)\n{\n   int z = stbi__get8(s);\n   return z + (stbi__get8(s) << 8);\n}\n#endif\n\n#ifndef STBI_NO_BMP\nstatic stbi__uint32 stbi__get32le(stbi__context *s)\n{\n   stbi__uint32 z = stbi__get16le(s);\n   return z + (stbi__get16le(s) << 16);\n}\n#endif\n\n#define STBI__BYTECAST(x)  ((stbi_uc) ((x) & 255))  // truncate int to byte without warnings\n\n#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\n//////////////////////////////////////////////////////////////////////////////\n//\n//  generic converter from built-in img_n to req_comp\n//    individual types do this automatically as much as possible (e.g. jpeg\n//    does all cases internally since it needs to colorspace convert anyway,\n//    and it never has alpha, so very few cases ). png can automatically\n//    interleave an alpha=255 channel, but falls back to this for other cases\n//\n//  assume data buffer is malloced, so malloc a new one and free that one\n//  only failure mode is malloc failing\n\nstatic stbi_uc stbi__compute_y(int r, int g, int b)\n{\n   return (stbi_uc) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM)\n// nothing\n#else\nstatic unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   unsigned char *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      unsigned char *src  = data + j * x * img_n   ;\n      unsigned char *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                  } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                  } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1];                  } break;\n         STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255;    } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];                    } break;\n         default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc(\"unsupported\", \"Unsupported format conversion\");\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD)\n// nothing\n#else\nstatic stbi__uint16 stbi__compute_y_16(int r, int g, int b)\n{\n   return (stbi__uint16) (((r*77) + (g*150) +  (29*b)) >> 8);\n}\n#endif\n\n#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD)\n// nothing\n#else\nstatic stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y)\n{\n   int i,j;\n   stbi__uint16 *good;\n\n   if (req_comp == img_n) return data;\n   STBI_ASSERT(req_comp >= 1 && req_comp <= 4);\n\n   good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2);\n   if (good == NULL) {\n      STBI_FREE(data);\n      return (stbi__uint16 *) stbi__errpuc(\"outofmem\", \"Out of memory\");\n   }\n\n   for (j=0; j < (int) y; ++j) {\n      stbi__uint16 *src  = data + j * x * img_n   ;\n      stbi__uint16 *dest = good + j * x * req_comp;\n\n      #define STBI__COMBO(a,b)  ((a)*8+(b))\n      #define STBI__CASE(a,b)   case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b)\n      // convert source image with img_n components to one with req_comp components;\n      // avoid switch per pixel, so use switch per scanline and massive macros\n      switch (STBI__COMBO(img_n, req_comp)) {\n         STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff;                                     } break;\n         STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff;                     } break;\n         STBI__CASE(2,1) { dest[0]=src[0];                                                     } break;\n         STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0];                                     } break;\n         STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1];                     } break;\n         STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff;        } break;\n         STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break;\n         STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]);                   } break;\n         STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break;\n         STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];                       } break;\n         default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc(\"unsupported\", \"Unsupported format conversion\");\n      }\n      #undef STBI__CASE\n   }\n\n   STBI_FREE(data);\n   return good;\n}\n#endif\n\n#ifndef STBI_NO_LINEAR\nstatic float   *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp)\n{\n   int i,k,n;\n   float *output;\n   if (!data) return NULL;\n   output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpf(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale);\n      }\n   }\n   if (n < comp) {\n      for (i=0; i < x*y; ++i) {\n         output[i*comp + n] = data[i*comp + n]/255.0f;\n      }\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n#ifndef STBI_NO_HDR\n#define stbi__float2int(x)   ((int) (x))\nstatic stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp)\n{\n   int i,k,n;\n   stbi_uc *output;\n   if (!data) return NULL;\n   output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0);\n   if (output == NULL) { STBI_FREE(data); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n   // compute number of non-alpha components\n   if (comp & 1) n = comp; else n = comp-1;\n   for (i=0; i < x*y; ++i) {\n      for (k=0; k < n; ++k) {\n         float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n      if (k < comp) {\n         float z = data[i*comp+k] * 255 + 0.5f;\n         if (z < 0) z = 0;\n         if (z > 255) z = 255;\n         output[i*comp + k] = (stbi_uc) stbi__float2int(z);\n      }\n   }\n   STBI_FREE(data);\n   return output;\n}\n#endif\n\n//////////////////////////////////////////////////////////////////////////////\n//\n//  \"baseline\" JPEG/JFIF decoder\n//\n//    simple implementation\n//      - doesn't support delayed output of y-dimension\n//      - simple interface (only one output format: 8-bit interleaved RGB)\n//      - doesn't try to recover corrupt jpegs\n//      - doesn't allow partial loading, loading multiple at once\n//      - still fast on x86 (copying globals into locals doesn't help x86)\n//      - allocates lots of intermediate memory (full size of all components)\n//        - non-interleaved case requires this anyway\n//        - allows good upsampling (see next)\n//    high-quality\n//      - upsampled channels are bilinearly interpolated, even across blocks\n//      - quality integer IDCT derived from IJG's 'slow'\n//    performance\n//      - fast huffman; reasonable integer IDCT\n//      - some SIMD kernels for common paths on targets with SSE2/NEON\n//      - uses a lot of intermediate memory, could cache poorly\n\n#ifndef STBI_NO_JPEG\n\n// huffman decoding acceleration\n#define FAST_BITS   9  // larger handles more cases; smaller stomps less cache\n\ntypedef struct\n{\n   stbi_uc  fast[1 << FAST_BITS];\n   // weirdly, repacking this into AoS is a 10% speed loss, instead of a win\n   stbi__uint16 code[256];\n   stbi_uc  values[256];\n   stbi_uc  size[257];\n   unsigned int maxcode[18];\n   int    delta[17];   // old 'firstsymbol' - old 'firstcode'\n} stbi__huffman;\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi__huffman huff_dc[4];\n   stbi__huffman huff_ac[4];\n   stbi__uint16 dequant[4][64];\n   stbi__int16 fast_ac[4][1 << FAST_BITS];\n\n// sizes for components, interleaved MCUs\n   int img_h_max, img_v_max;\n   int img_mcu_x, img_mcu_y;\n   int img_mcu_w, img_mcu_h;\n\n// definition of jpeg image component\n   struct\n   {\n      int id;\n      int h,v;\n      int tq;\n      int hd,ha;\n      int dc_pred;\n\n      int x,y,w2,h2;\n      stbi_uc *data;\n      void *raw_data, *raw_coeff;\n      stbi_uc *linebuf;\n      short   *coeff;   // progressive only\n      int      coeff_w, coeff_h; // number of 8x8 coefficient blocks\n   } img_comp[4];\n\n   stbi__uint32   code_buffer; // jpeg entropy-coded buffer\n   int            code_bits;   // number of valid bits\n   unsigned char  marker;      // marker seen while filling entropy buffer\n   int            nomore;      // flag if we saw a marker so must stop\n\n   int            progressive;\n   int            spec_start;\n   int            spec_end;\n   int            succ_high;\n   int            succ_low;\n   int            eob_run;\n   int            jfif;\n   int            app14_color_transform; // Adobe APP14 tag\n   int            rgb;\n\n   int scan_n, order[4];\n   int restart_interval, todo;\n\n// kernels\n   void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]);\n   void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step);\n   stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs);\n} stbi__jpeg;\n\nstatic int stbi__build_huffman(stbi__huffman *h, int *count)\n{\n   int i,j,k=0;\n   unsigned int code;\n   // build size list for each symbol (from JPEG spec)\n   for (i=0; i < 16; ++i)\n      for (j=0; j < count[i]; ++j)\n         h->size[k++] = (stbi_uc) (i+1);\n   h->size[k] = 0;\n\n   // compute actual symbols (from jpeg spec)\n   code = 0;\n   k = 0;\n   for(j=1; j <= 16; ++j) {\n      // compute delta to add to code to compute symbol id\n      h->delta[j] = k - code;\n      if (h->size[k] == j) {\n         while (h->size[k] == j)\n            h->code[k++] = (stbi__uint16) (code++);\n         if (code-1 >= (1u << j)) return stbi__err(\"bad code lengths\",\"Corrupt JPEG\");\n      }\n      // compute largest code + 1 for this size, preshifted as needed later\n      h->maxcode[j] = code << (16-j);\n      code <<= 1;\n   }\n   h->maxcode[j] = 0xffffffff;\n\n   // build non-spec acceleration table; 255 is flag for not-accelerated\n   memset(h->fast, 255, 1 << FAST_BITS);\n   for (i=0; i < k; ++i) {\n      int s = h->size[i];\n      if (s <= FAST_BITS) {\n         int c = h->code[i] << (FAST_BITS-s);\n         int m = 1 << (FAST_BITS-s);\n         for (j=0; j < m; ++j) {\n            h->fast[c+j] = (stbi_uc) i;\n         }\n      }\n   }\n   return 1;\n}\n\n// build a table that decodes both magnitude and value of small ACs in\n// one go.\nstatic void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)\n{\n   int i;\n   for (i=0; i < (1 << FAST_BITS); ++i) {\n      stbi_uc fast = h->fast[i];\n      fast_ac[i] = 0;\n      if (fast < 255) {\n         int rs = h->values[fast];\n         int run = (rs >> 4) & 15;\n         int magbits = rs & 15;\n         int len = h->size[fast];\n\n         if (magbits && len + magbits <= FAST_BITS) {\n            // magnitude code followed by receive_extend code\n            int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits);\n            int m = 1 << (magbits - 1);\n            if (k < m) k += (~0U << magbits) + 1;\n            // if the result is small enough, we can fit it in fast_ac table\n            if (k >= -128 && k <= 127)\n               fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits));\n         }\n      }\n   }\n}\n\nstatic void stbi__grow_buffer_unsafe(stbi__jpeg *j)\n{\n   do {\n      unsigned int b = j->nomore ? 0 : stbi__get8(j->s);\n      if (b == 0xff) {\n         int c = stbi__get8(j->s);\n         while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes\n         if (c != 0) {\n            j->marker = (unsigned char) c;\n            j->nomore = 1;\n            return;\n         }\n      }\n      j->code_buffer |= b << (24 - j->code_bits);\n      j->code_bits += 8;\n   } while (j->code_bits <= 24);\n}\n\n// (1 << n) - 1\nstatic const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};\n\n// decode a jpeg huffman value from the bitstream\nstbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h)\n{\n   unsigned int temp;\n   int c,k;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   // look at the top FAST_BITS and determine what symbol ID it is,\n   // if the code is <= FAST_BITS\n   c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n   k = h->fast[c];\n   if (k < 255) {\n      int s = h->size[k];\n      if (s > j->code_bits)\n         return -1;\n      j->code_buffer <<= s;\n      j->code_bits -= s;\n      return h->values[k];\n   }\n\n   // naive test is to shift the code_buffer down so k bits are\n   // valid, then test against maxcode. To speed this up, we've\n   // preshifted maxcode left so that it has (16-k) 0s at the\n   // end; in other words, regardless of the number of bits, it\n   // wants to be compared against something shifted to have 16;\n   // that way we don't need to shift inside the loop.\n   temp = j->code_buffer >> 16;\n   for (k=FAST_BITS+1 ; ; ++k)\n      if (temp < h->maxcode[k])\n         break;\n   if (k == 17) {\n      // error! code not found\n      j->code_bits -= 16;\n      return -1;\n   }\n\n   if (k > j->code_bits)\n      return -1;\n\n   // convert the huffman code to the symbol id\n   c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k];\n   STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]);\n\n   // convert the id to a symbol\n   j->code_bits -= k;\n   j->code_buffer <<= k;\n   return h->values[c];\n}\n\n// bias[n] = (-1<<n) + 1\nstatic const int stbi__jbias[16] = {0,-1,-3,-7,-15,-31,-63,-127,-255,-511,-1023,-2047,-4095,-8191,-16383,-32767};\n\n// combined JPEG 'receive' and JPEG 'extend', since baseline\n// always extends everything it receives.\nstbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   int sgn;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n\n   sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB\n   k = stbi_lrot(j->code_buffer, n);\n   if (n < 0 || n >= (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))) return 0;\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k + (stbi__jbias[n] & ~sgn);\n}\n\n// get some unsigned bits\nstbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)\n{\n   unsigned int k;\n   if (j->code_bits < n) stbi__grow_buffer_unsafe(j);\n   k = stbi_lrot(j->code_buffer, n);\n   j->code_buffer = k & ~stbi__bmask[n];\n   k &= stbi__bmask[n];\n   j->code_bits -= n;\n   return k;\n}\n\nstbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)\n{\n   unsigned int k;\n   if (j->code_bits < 1) stbi__grow_buffer_unsafe(j);\n   k = j->code_buffer;\n   j->code_buffer <<= 1;\n   --j->code_bits;\n   return k & 0x80000000;\n}\n\n// given a value that's at position X in the zigzag stream,\n// where does it appear in the 8x8 matrix coded as row-major?\nstatic const stbi_uc stbi__jpeg_dezigzag[64+15] =\n{\n    0,  1,  8, 16,  9,  2,  3, 10,\n   17, 24, 32, 25, 18, 11,  4,  5,\n   12, 19, 26, 33, 40, 48, 41, 34,\n   27, 20, 13,  6,  7, 14, 21, 28,\n   35, 42, 49, 56, 57, 50, 43, 36,\n   29, 22, 15, 23, 30, 37, 44, 51,\n   58, 59, 52, 45, 38, 31, 39, 46,\n   53, 60, 61, 54, 47, 55, 62, 63,\n   // let corrupt input sample past end\n   63, 63, 63, 63, 63, 63, 63, 63,\n   63, 63, 63, 63, 63, 63, 63\n};\n\n// decode one 64-entry block--\nstatic int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant)\n{\n   int diff,dc,k;\n   int t;\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n   t = stbi__jpeg_huff_decode(j, hdc);\n   if (t < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n\n   // 0 all the ac values now so we can do it 32-bits at a time\n   memset(data,0,64*sizeof(data[0]));\n\n   diff = t ? stbi__extend_receive(j, t) : 0;\n   dc = j->img_comp[b].dc_pred + diff;\n   j->img_comp[b].dc_pred = dc;\n   data[0] = (short) (dc * dequant[0]);\n\n   // decode AC components, see JPEG spec\n   k = 1;\n   do {\n      unsigned int zig;\n      int c,r,s;\n      if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n      c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n      r = fac[c];\n      if (r) { // fast-AC path\n         k += (r >> 4) & 15; // run\n         s = r & 15; // combined length\n         j->code_buffer <<= s;\n         j->code_bits -= s;\n         // decode into unzigzag'd location\n         zig = stbi__jpeg_dezigzag[k++];\n         data[zig] = (short) ((r >> 8) * dequant[zig]);\n      } else {\n         int rs = stbi__jpeg_huff_decode(j, hac);\n         if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n         s = rs & 15;\n         r = rs >> 4;\n         if (s == 0) {\n            if (rs != 0xf0) break; // end block\n            k += 16;\n         } else {\n            k += r;\n            // decode into unzigzag'd location\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]);\n         }\n      }\n   } while (k < 64);\n   return 1;\n}\n\nstatic int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b)\n{\n   int diff,dc;\n   int t;\n   if (j->spec_end != 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n\n   if (j->succ_high == 0) {\n      // first scan for DC coefficient, must be first\n      memset(data,0,64*sizeof(data[0])); // 0 all the ac values now\n      t = stbi__jpeg_huff_decode(j, hdc);\n      if (t == -1) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n      diff = t ? stbi__extend_receive(j, t) : 0;\n\n      dc = j->img_comp[b].dc_pred + diff;\n      j->img_comp[b].dc_pred = dc;\n      data[0] = (short) (dc << j->succ_low);\n   } else {\n      // refinement scan for DC coefficient\n      if (stbi__jpeg_get_bit(j))\n         data[0] += (short) (1 << j->succ_low);\n   }\n   return 1;\n}\n\n// @OPTIMIZE: store non-zigzagged during the decode passes,\n// and only de-zigzag when dequantizing\nstatic int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac)\n{\n   int k;\n   if (j->spec_start == 0) return stbi__err(\"can't merge dc and ac\", \"Corrupt JPEG\");\n\n   if (j->succ_high == 0) {\n      int shift = j->succ_low;\n\n      if (j->eob_run) {\n         --j->eob_run;\n         return 1;\n      }\n\n      k = j->spec_start;\n      do {\n         unsigned int zig;\n         int c,r,s;\n         if (j->code_bits < 16) stbi__grow_buffer_unsafe(j);\n         c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1);\n         r = fac[c];\n         if (r) { // fast-AC path\n            k += (r >> 4) & 15; // run\n            s = r & 15; // combined length\n            j->code_buffer <<= s;\n            j->code_bits -= s;\n            zig = stbi__jpeg_dezigzag[k++];\n            data[zig] = (short) ((r >> 8) << shift);\n         } else {\n            int rs = stbi__jpeg_huff_decode(j, hac);\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r);\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  --j->eob_run;\n                  break;\n               }\n               k += 16;\n            } else {\n               k += r;\n               zig = stbi__jpeg_dezigzag[k++];\n               data[zig] = (short) (stbi__extend_receive(j,s) << shift);\n            }\n         }\n      } while (k <= j->spec_end);\n   } else {\n      // refinement scan for these AC coefficients\n\n      short bit = (short) (1 << j->succ_low);\n\n      if (j->eob_run) {\n         --j->eob_run;\n         for (k = j->spec_start; k <= j->spec_end; ++k) {\n            short *p = &data[stbi__jpeg_dezigzag[k]];\n            if (*p != 0)\n               if (stbi__jpeg_get_bit(j))\n                  if ((*p & bit)==0) {\n                     if (*p > 0)\n                        *p += bit;\n                     else\n                        *p -= bit;\n                  }\n         }\n      } else {\n         k = j->spec_start;\n         do {\n            int r,s;\n            int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh\n            if (rs < 0) return stbi__err(\"bad huffman code\",\"Corrupt JPEG\");\n            s = rs & 15;\n            r = rs >> 4;\n            if (s == 0) {\n               if (r < 15) {\n                  j->eob_run = (1 << r) - 1;\n                  if (r)\n                     j->eob_run += stbi__jpeg_get_bits(j, r);\n                  r = 64; // force end of block\n               } else {\n                  // r=15 s=0 should write 16 0s, so we just do\n                  // a run of 15 0s and then write s (which is 0),\n                  // so we don't have to do anything special here\n               }\n            } else {\n               if (s != 1) return stbi__err(\"bad huffman code\", \"Corrupt JPEG\");\n               // sign bit\n               if (stbi__jpeg_get_bit(j))\n                  s = bit;\n               else\n                  s = -bit;\n            }\n\n            // advance by r\n            while (k <= j->spec_end) {\n               short *p = &data[stbi__jpeg_dezigzag[k++]];\n               if (*p != 0) {\n                  if (stbi__jpeg_get_bit(j))\n                     if ((*p & bit)==0) {\n                        if (*p > 0)\n                           *p += bit;\n                        else\n                           *p -= bit;\n                     }\n               } else {\n                  if (r == 0) {\n                     *p = (short) s;\n                     break;\n                  }\n                  --r;\n               }\n            }\n         } while (k <= j->spec_end);\n      }\n   }\n   return 1;\n}\n\n// take a -128..127 value and stbi__clamp it and convert to 0..255\nstbi_inline static stbi_uc stbi__clamp(int x)\n{\n   // trick to use a single test to catch both cases\n   if ((unsigned int) x > 255) {\n      if (x < 0) return 0;\n      if (x > 255) return 255;\n   }\n   return (stbi_uc) x;\n}\n\n#define stbi__f2f(x)  ((int) (((x) * 4096 + 0.5)))\n#define stbi__fsh(x)  ((x) * 4096)\n\n// derived from jidctint -- DCT_ISLOW\n#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \\\n   int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \\\n   p2 = s2;                                    \\\n   p3 = s6;                                    \\\n   p1 = (p2+p3) * stbi__f2f(0.5411961f);       \\\n   t2 = p1 + p3*stbi__f2f(-1.847759065f);      \\\n   t3 = p1 + p2*stbi__f2f( 0.765366865f);      \\\n   p2 = s0;                                    \\\n   p3 = s4;                                    \\\n   t0 = stbi__fsh(p2+p3);                      \\\n   t1 = stbi__fsh(p2-p3);                      \\\n   x0 = t0+t3;                                 \\\n   x3 = t0-t3;                                 \\\n   x1 = t1+t2;                                 \\\n   x2 = t1-t2;                                 \\\n   t0 = s7;                                    \\\n   t1 = s5;                                    \\\n   t2 = s3;                                    \\\n   t3 = s1;                                    \\\n   p3 = t0+t2;                                 \\\n   p4 = t1+t3;                                 \\\n   p1 = t0+t3;                                 \\\n   p2 = t1+t2;                                 \\\n   p5 = (p3+p4)*stbi__f2f( 1.175875602f);      \\\n   t0 = t0*stbi__f2f( 0.298631336f);           \\\n   t1 = t1*stbi__f2f( 2.053119869f);           \\\n   t2 = t2*stbi__f2f( 3.072711026f);           \\\n   t3 = t3*stbi__f2f( 1.501321110f);           \\\n   p1 = p5 + p1*stbi__f2f(-0.899976223f);      \\\n   p2 = p5 + p2*stbi__f2f(-2.562915447f);      \\\n   p3 = p3*stbi__f2f(-1.961570560f);           \\\n   p4 = p4*stbi__f2f(-0.390180644f);           \\\n   t3 += p1+p4;                                \\\n   t2 += p2+p3;                                \\\n   t1 += p2+p4;                                \\\n   t0 += p1+p3;\n\nstatic void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])\n{\n   int i,val[64],*v=val;\n   stbi_uc *o;\n   short *d = data;\n\n   // columns\n   for (i=0; i < 8; ++i,++d, ++v) {\n      // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing\n      if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0\n           && d[40]==0 && d[48]==0 && d[56]==0) {\n         //    no shortcut                 0     seconds\n         //    (1|2|3|4|5|6|7)==0          0     seconds\n         //    all separate               -0.047 seconds\n         //    1 && 2|3 && 4|5 && 6|7:    -0.047 seconds\n         int dcterm = d[0]*4;\n         v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm;\n      } else {\n         STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56])\n         // constants scaled things up by 1<<12; let's bring them back\n         // down, but keep 2 extra bits of precision\n         x0 += 512; x1 += 512; x2 += 512; x3 += 512;\n         v[ 0] = (x0+t3) >> 10;\n         v[56] = (x0-t3) >> 10;\n         v[ 8] = (x1+t2) >> 10;\n         v[48] = (x1-t2) >> 10;\n         v[16] = (x2+t1) >> 10;\n         v[40] = (x2-t1) >> 10;\n         v[24] = (x3+t0) >> 10;\n         v[32] = (x3-t0) >> 10;\n      }\n   }\n\n   for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) {\n      // no fast case since the first 1D IDCT spread components out\n      STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7])\n      // constants scaled things up by 1<<12, plus we had 1<<2 from first\n      // loop, plus horizontal and vertical each scale by sqrt(8) so together\n      // we've got an extra 1<<3, so 1<<17 total we need to remove.\n      // so we want to round that, which means adding 0.5 * 1<<17,\n      // aka 65536. Also, we'll end up with -128 to 127 that we want\n      // to encode as 0..255 by adding 128, so we'll add that before the shift\n      x0 += 65536 + (128<<17);\n      x1 += 65536 + (128<<17);\n      x2 += 65536 + (128<<17);\n      x3 += 65536 + (128<<17);\n      // tried computing the shifts into temps, or'ing the temps to see\n      // if any were out of range, but that was slower\n      o[0] = stbi__clamp((x0+t3) >> 17);\n      o[7] = stbi__clamp((x0-t3) >> 17);\n      o[1] = stbi__clamp((x1+t2) >> 17);\n      o[6] = stbi__clamp((x1-t2) >> 17);\n      o[2] = stbi__clamp((x2+t1) >> 17);\n      o[5] = stbi__clamp((x2-t1) >> 17);\n      o[3] = stbi__clamp((x3+t0) >> 17);\n      o[4] = stbi__clamp((x3-t0) >> 17);\n   }\n}\n\n#ifdef STBI_SSE2\n// sse2 integer IDCT. not the fastest possible implementation but it\n// produces bit-identical results to the generic C version so it's\n// fully \"transparent\".\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   // This is constructed to match our regular (generic) integer IDCT exactly.\n   __m128i row0, row1, row2, row3, row4, row5, row6, row7;\n   __m128i tmp;\n\n   // dot product constant: even elems=x, odd elems=y\n   #define dct_const(x,y)  _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y))\n\n   // out(0) = c0[even]*x + c0[odd]*y   (c0, x, y 16-bit, out 32-bit)\n   // out(1) = c1[even]*x + c1[odd]*y\n   #define dct_rot(out0,out1, x,y,c0,c1) \\\n      __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \\\n      __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \\\n      __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \\\n      __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \\\n      __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \\\n      __m128i out1##_h = _mm_madd_epi16(c0##hi, c1)\n\n   // out = in << 12  (in 16-bit, out 32-bit)\n   #define dct_widen(out, in) \\\n      __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \\\n      __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4)\n\n   // wide add\n   #define dct_wadd(out, a, b) \\\n      __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_add_epi32(a##_h, b##_h)\n\n   // wide sub\n   #define dct_wsub(out, a, b) \\\n      __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \\\n      __m128i out##_h = _mm_sub_epi32(a##_h, b##_h)\n\n   // butterfly a/b, add bias, then shift by \"s\" and pack\n   #define dct_bfly32o(out0, out1, a,b,bias,s) \\\n      { \\\n         __m128i abiased_l = _mm_add_epi32(a##_l, bias); \\\n         __m128i abiased_h = _mm_add_epi32(a##_h, bias); \\\n         dct_wadd(sum, abiased, b); \\\n         dct_wsub(dif, abiased, b); \\\n         out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \\\n         out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \\\n      }\n\n   // 8-bit interleave step (for transposes)\n   #define dct_interleave8(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi8(a, b); \\\n      b = _mm_unpackhi_epi8(tmp, b)\n\n   // 16-bit interleave step (for transposes)\n   #define dct_interleave16(a, b) \\\n      tmp = a; \\\n      a = _mm_unpacklo_epi16(a, b); \\\n      b = _mm_unpackhi_epi16(tmp, b)\n\n   #define dct_pass(bias,shift) \\\n      { \\\n         /* even part */ \\\n         dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \\\n         __m128i sum04 = _mm_add_epi16(row0, row4); \\\n         __m128i dif04 = _mm_sub_epi16(row0, row4); \\\n         dct_widen(t0e, sum04); \\\n         dct_widen(t1e, dif04); \\\n         dct_wadd(x0, t0e, t3e); \\\n         dct_wsub(x3, t0e, t3e); \\\n         dct_wadd(x1, t1e, t2e); \\\n         dct_wsub(x2, t1e, t2e); \\\n         /* odd part */ \\\n         dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \\\n         dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \\\n         __m128i sum17 = _mm_add_epi16(row1, row7); \\\n         __m128i sum35 = _mm_add_epi16(row3, row5); \\\n         dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \\\n         dct_wadd(x4, y0o, y4o); \\\n         dct_wadd(x5, y1o, y5o); \\\n         dct_wadd(x6, y2o, y5o); \\\n         dct_wadd(x7, y3o, y4o); \\\n         dct_bfly32o(row0,row7, x0,x7,bias,shift); \\\n         dct_bfly32o(row1,row6, x1,x6,bias,shift); \\\n         dct_bfly32o(row2,row5, x2,x5,bias,shift); \\\n         dct_bfly32o(row3,row4, x3,x4,bias,shift); \\\n      }\n\n   __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f));\n   __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f));\n   __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f));\n   __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f));\n   __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f));\n   __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f));\n   __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f));\n   __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f));\n\n   // rounding biases in column/row passes, see stbi__idct_block for explanation.\n   __m128i bias_0 = _mm_set1_epi32(512);\n   __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17));\n\n   // load\n   row0 = _mm_load_si128((const __m128i *) (data + 0*8));\n   row1 = _mm_load_si128((const __m128i *) (data + 1*8));\n   row2 = _mm_load_si128((const __m128i *) (data + 2*8));\n   row3 = _mm_load_si128((const __m128i *) (data + 3*8));\n   row4 = _mm_load_si128((const __m128i *) (data + 4*8));\n   row5 = _mm_load_si128((const __m128i *) (data + 5*8));\n   row6 = _mm_load_si128((const __m128i *) (data + 6*8));\n   row7 = _mm_load_si128((const __m128i *) (data + 7*8));\n\n   // column pass\n   dct_pass(bias_0, 10);\n\n   {\n      // 16bit 8x8 transpose pass 1\n      dct_interleave16(row0, row4);\n      dct_interleave16(row1, row5);\n      dct_interleave16(row2, row6);\n      dct_interleave16(row3, row7);\n\n      // transpose pass 2\n      dct_interleave16(row0, row2);\n      dct_interleave16(row1, row3);\n      dct_interleave16(row4, row6);\n      dct_interleave16(row5, row7);\n\n      // transpose pass 3\n      dct_interleave16(row0, row1);\n      dct_interleave16(row2, row3);\n      dct_interleave16(row4, row5);\n      dct_interleave16(row6, row7);\n   }\n\n   // row pass\n   dct_pass(bias_1, 17);\n\n   {\n      // pack\n      __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7\n      __m128i p1 = _mm_packus_epi16(row2, row3);\n      __m128i p2 = _mm_packus_epi16(row4, row5);\n      __m128i p3 = _mm_packus_epi16(row6, row7);\n\n      // 8bit 8x8 transpose pass 1\n      dct_interleave8(p0, p2); // a0e0a1e1...\n      dct_interleave8(p1, p3); // c0g0c1g1...\n\n      // transpose pass 2\n      dct_interleave8(p0, p1); // a0c0e0g0...\n      dct_interleave8(p2, p3); // b0d0f0h0...\n\n      // transpose pass 3\n      dct_interleave8(p0, p2); // a0b0c0d0...\n      dct_interleave8(p1, p3); // a4b4c4d4...\n\n      // store\n      _mm_storel_epi64((__m128i *) out, p0); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p2); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p1); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, p3); out += out_stride;\n      _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e));\n   }\n\n#undef dct_const\n#undef dct_rot\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_interleave8\n#undef dct_interleave16\n#undef dct_pass\n}\n\n#endif // STBI_SSE2\n\n#ifdef STBI_NEON\n\n// NEON integer IDCT. should produce bit-identical\n// results to the generic C version.\nstatic void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])\n{\n   int16x8_t row0, row1, row2, row3, row4, row5, row6, row7;\n\n   int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f));\n   int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f));\n   int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f));\n   int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f));\n   int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f));\n   int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f));\n   int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f));\n   int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f));\n   int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f));\n   int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f));\n   int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f));\n   int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f));\n\n#define dct_long_mul(out, inq, coeff) \\\n   int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff)\n\n#define dct_long_mac(out, acc, inq, coeff) \\\n   int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \\\n   int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff)\n\n#define dct_widen(out, inq) \\\n   int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \\\n   int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12)\n\n// wide add\n#define dct_wadd(out, a, b) \\\n   int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vaddq_s32(a##_h, b##_h)\n\n// wide sub\n#define dct_wsub(out, a, b) \\\n   int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \\\n   int32x4_t out##_h = vsubq_s32(a##_h, b##_h)\n\n// butterfly a/b, then shift using \"shiftop\" by \"s\" and pack\n#define dct_bfly32o(out0,out1, a,b,shiftop,s) \\\n   { \\\n      dct_wadd(sum, a, b); \\\n      dct_wsub(dif, a, b); \\\n      out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \\\n      out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \\\n   }\n\n#define dct_pass(shiftop, shift) \\\n   { \\\n      /* even part */ \\\n      int16x8_t sum26 = vaddq_s16(row2, row6); \\\n      dct_long_mul(p1e, sum26, rot0_0); \\\n      dct_long_mac(t2e, p1e, row6, rot0_1); \\\n      dct_long_mac(t3e, p1e, row2, rot0_2); \\\n      int16x8_t sum04 = vaddq_s16(row0, row4); \\\n      int16x8_t dif04 = vsubq_s16(row0, row4); \\\n      dct_widen(t0e, sum04); \\\n      dct_widen(t1e, dif04); \\\n      dct_wadd(x0, t0e, t3e); \\\n      dct_wsub(x3, t0e, t3e); \\\n      dct_wadd(x1, t1e, t2e); \\\n      dct_wsub(x2, t1e, t2e); \\\n      /* odd part */ \\\n      int16x8_t sum15 = vaddq_s16(row1, row5); \\\n      int16x8_t sum17 = vaddq_s16(row1, row7); \\\n      int16x8_t sum35 = vaddq_s16(row3, row5); \\\n      int16x8_t sum37 = vaddq_s16(row3, row7); \\\n      int16x8_t sumodd = vaddq_s16(sum17, sum35); \\\n      dct_long_mul(p5o, sumodd, rot1_0); \\\n      dct_long_mac(p1o, p5o, sum17, rot1_1); \\\n      dct_long_mac(p2o, p5o, sum35, rot1_2); \\\n      dct_long_mul(p3o, sum37, rot2_0); \\\n      dct_long_mul(p4o, sum15, rot2_1); \\\n      dct_wadd(sump13o, p1o, p3o); \\\n      dct_wadd(sump24o, p2o, p4o); \\\n      dct_wadd(sump23o, p2o, p3o); \\\n      dct_wadd(sump14o, p1o, p4o); \\\n      dct_long_mac(x4, sump13o, row7, rot3_0); \\\n      dct_long_mac(x5, sump24o, row5, rot3_1); \\\n      dct_long_mac(x6, sump23o, row3, rot3_2); \\\n      dct_long_mac(x7, sump14o, row1, rot3_3); \\\n      dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \\\n      dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \\\n      dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \\\n      dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \\\n   }\n\n   // load\n   row0 = vld1q_s16(data + 0*8);\n   row1 = vld1q_s16(data + 1*8);\n   row2 = vld1q_s16(data + 2*8);\n   row3 = vld1q_s16(data + 3*8);\n   row4 = vld1q_s16(data + 4*8);\n   row5 = vld1q_s16(data + 5*8);\n   row6 = vld1q_s16(data + 6*8);\n   row7 = vld1q_s16(data + 7*8);\n\n   // add DC bias\n   row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0));\n\n   // column pass\n   dct_pass(vrshrn_n_s32, 10);\n\n   // 16bit 8x8 transpose\n   {\n// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively.\n// whether compilers actually get this is another story, sadly.\n#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); }\n#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); }\n\n      // pass 1\n      dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6\n      dct_trn16(row2, row3);\n      dct_trn16(row4, row5);\n      dct_trn16(row6, row7);\n\n      // pass 2\n      dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4\n      dct_trn32(row1, row3);\n      dct_trn32(row4, row6);\n      dct_trn32(row5, row7);\n\n      // pass 3\n      dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0\n      dct_trn64(row1, row5);\n      dct_trn64(row2, row6);\n      dct_trn64(row3, row7);\n\n#undef dct_trn16\n#undef dct_trn32\n#undef dct_trn64\n   }\n\n   // row pass\n   // vrshrn_n_s32 only supports shifts up to 16, we need\n   // 17. so do a non-rounding shift of 16 first then follow\n   // up with a rounding shift by 1.\n   dct_pass(vshrn_n_s32, 16);\n\n   {\n      // pack and round\n      uint8x8_t p0 = vqrshrun_n_s16(row0, 1);\n      uint8x8_t p1 = vqrshrun_n_s16(row1, 1);\n      uint8x8_t p2 = vqrshrun_n_s16(row2, 1);\n      uint8x8_t p3 = vqrshrun_n_s16(row3, 1);\n      uint8x8_t p4 = vqrshrun_n_s16(row4, 1);\n      uint8x8_t p5 = vqrshrun_n_s16(row5, 1);\n      uint8x8_t p6 = vqrshrun_n_s16(row6, 1);\n      uint8x8_t p7 = vqrshrun_n_s16(row7, 1);\n\n      // again, these can translate into one instruction, but often don't.\n#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; }\n#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); }\n#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); }\n\n      // sadly can't use interleaved stores here since we only write\n      // 8 bytes to each scan line!\n\n      // 8x8 8-bit transpose pass 1\n      dct_trn8_8(p0, p1);\n      dct_trn8_8(p2, p3);\n      dct_trn8_8(p4, p5);\n      dct_trn8_8(p6, p7);\n\n      // pass 2\n      dct_trn8_16(p0, p2);\n      dct_trn8_16(p1, p3);\n      dct_trn8_16(p4, p6);\n      dct_trn8_16(p5, p7);\n\n      // pass 3\n      dct_trn8_32(p0, p4);\n      dct_trn8_32(p1, p5);\n      dct_trn8_32(p2, p6);\n      dct_trn8_32(p3, p7);\n\n      // store\n      vst1_u8(out, p0); out += out_stride;\n      vst1_u8(out, p1); out += out_stride;\n      vst1_u8(out, p2); out += out_stride;\n      vst1_u8(out, p3); out += out_stride;\n      vst1_u8(out, p4); out += out_stride;\n      vst1_u8(out, p5); out += out_stride;\n      vst1_u8(out, p6); out += out_stride;\n      vst1_u8(out, p7);\n\n#undef dct_trn8_8\n#undef dct_trn8_16\n#undef dct_trn8_32\n   }\n\n#undef dct_long_mul\n#undef dct_long_mac\n#undef dct_widen\n#undef dct_wadd\n#undef dct_wsub\n#undef dct_bfly32o\n#undef dct_pass\n}\n\n#endif // STBI_NEON\n\n#define STBI__MARKER_none  0xff\n// if there's a pending marker from the entropy stream, return that\n// otherwise, fetch from the stream and get a marker. if there's no\n// marker, return 0xff, which is never a valid marker value\nstatic stbi_uc stbi__get_marker(stbi__jpeg *j)\n{\n   stbi_uc x;\n   if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; }\n   x = stbi__get8(j->s);\n   if (x != 0xff) return STBI__MARKER_none;\n   while (x == 0xff)\n      x = stbi__get8(j->s); // consume repeated 0xff fill bytes\n   return x;\n}\n\n// in each scan, we'll have scan_n components, and the order\n// of the components is specified by order[]\n#define STBI__RESTART(x)     ((x) >= 0xd0 && (x) <= 0xd7)\n\n// after a restart interval, stbi__jpeg_reset the entropy decoder and\n// the dc prediction\nstatic void stbi__jpeg_reset(stbi__jpeg *j)\n{\n   j->code_bits = 0;\n   j->code_buffer = 0;\n   j->nomore = 0;\n   j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0;\n   j->marker = STBI__MARKER_none;\n   j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff;\n   j->eob_run = 0;\n   // no more than 1<<31 MCUs if no restart_interal? that's plenty safe,\n   // since we don't even allow 1<<30 pixels\n}\n\nstatic int stbi__parse_entropy_coded_data(stbi__jpeg *z)\n{\n   stbi__jpeg_reset(z);\n   if (!z->progressive) {\n      if (z->scan_n == 1) {\n         int i,j;\n         STBI_SIMD_ALIGN(short, data[64]);\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               int ha = z->img_comp[n].ha;\n               if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  // if it's NOT a restart, then just bail, so we get corrupt data\n                  // rather than no data\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         STBI_SIMD_ALIGN(short, data[64]);\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x)*8;\n                        int y2 = (j*z->img_comp[n].v + y)*8;\n                        int ha = z->img_comp[n].ha;\n                        if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;\n                        z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data);\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   } else {\n      if (z->scan_n == 1) {\n         int i,j;\n         int n = z->order[0];\n         // non-interleaved data, we just need to process one block at a time,\n         // in trivial scanline order\n         // number of blocks to do just depends on how many actual \"pixels\" this\n         // component has, independent of interleaved MCU blocking and such\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               if (z->spec_start == 0) {\n                  if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                     return 0;\n               } else {\n                  int ha = z->img_comp[n].ha;\n                  if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha]))\n                     return 0;\n               }\n               // every data block is an MCU, so countdown the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      } else { // interleaved\n         int i,j,k,x,y;\n         for (j=0; j < z->img_mcu_y; ++j) {\n            for (i=0; i < z->img_mcu_x; ++i) {\n               // scan an interleaved mcu... process scan_n components in order\n               for (k=0; k < z->scan_n; ++k) {\n                  int n = z->order[k];\n                  // scan out an mcu's worth of this component; that's just determined\n                  // by the basic H and V specified for the component\n                  for (y=0; y < z->img_comp[n].v; ++y) {\n                     for (x=0; x < z->img_comp[n].h; ++x) {\n                        int x2 = (i*z->img_comp[n].h + x);\n                        int y2 = (j*z->img_comp[n].v + y);\n                        short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w);\n                        if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))\n                           return 0;\n                     }\n                  }\n               }\n               // after all interleaved components, that's an interleaved MCU,\n               // so now count down the restart interval\n               if (--z->todo <= 0) {\n                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);\n                  if (!STBI__RESTART(z->marker)) return 1;\n                  stbi__jpeg_reset(z);\n               }\n            }\n         }\n         return 1;\n      }\n   }\n}\n\nstatic void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant)\n{\n   int i;\n   for (i=0; i < 64; ++i)\n      data[i] *= dequant[i];\n}\n\nstatic void stbi__jpeg_finish(stbi__jpeg *z)\n{\n   if (z->progressive) {\n      // dequantize and idct the data\n      int i,j,n;\n      for (n=0; n < z->s->img_n; ++n) {\n         int w = (z->img_comp[n].x+7) >> 3;\n         int h = (z->img_comp[n].y+7) >> 3;\n         for (j=0; j < h; ++j) {\n            for (i=0; i < w; ++i) {\n               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);\n               stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]);\n               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);\n            }\n         }\n      }\n   }\n}\n\nstatic int stbi__process_marker(stbi__jpeg *z, int m)\n{\n   int L;\n   switch (m) {\n      case STBI__MARKER_none: // no marker found\n         return stbi__err(\"expected marker\",\"Corrupt JPEG\");\n\n      case 0xDD: // DRI - specify restart interval\n         if (stbi__get16be(z->s) != 4) return stbi__err(\"bad DRI len\",\"Corrupt JPEG\");\n         z->restart_interval = stbi__get16be(z->s);\n         return 1;\n\n      case 0xDB: // DQT - define quantization table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            int q = stbi__get8(z->s);\n            int p = q >> 4, sixteen = (p != 0);\n            int t = q & 15,i;\n            if (p != 0 && p != 1) return stbi__err(\"bad DQT type\",\"Corrupt JPEG\");\n            if (t > 3) return stbi__err(\"bad DQT table\",\"Corrupt JPEG\");\n\n            for (i=0; i < 64; ++i)\n               z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s));\n            L -= (sixteen ? 129 : 65);\n         }\n         return L==0;\n\n      case 0xC4: // DHT - define huffman table\n         L = stbi__get16be(z->s)-2;\n         while (L > 0) {\n            stbi_uc *v;\n            int sizes[16],i,n=0;\n            int q = stbi__get8(z->s);\n            int tc = q >> 4;\n            int th = q & 15;\n            if (tc > 1 || th > 3) return stbi__err(\"bad DHT header\",\"Corrupt JPEG\");\n            for (i=0; i < 16; ++i) {\n               sizes[i] = stbi__get8(z->s);\n               n += sizes[i];\n            }\n            L -= 17;\n            if (tc == 0) {\n               if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0;\n               v = z->huff_dc[th].values;\n            } else {\n               if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0;\n               v = z->huff_ac[th].values;\n            }\n            for (i=0; i < n; ++i)\n               v[i] = stbi__get8(z->s);\n            if (tc != 0)\n               stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th);\n            L -= n;\n         }\n         return L==0;\n   }\n\n   // check for comment block or APP blocks\n   if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) {\n      L = stbi__get16be(z->s);\n      if (L < 2) {\n         if (m == 0xFE)\n            return stbi__err(\"bad COM len\",\"Corrupt JPEG\");\n         else\n            return stbi__err(\"bad APP len\",\"Corrupt JPEG\");\n      }\n      L -= 2;\n\n      if (m == 0xE0 && L >= 5) { // JFIF APP0 segment\n         static const unsigned char tag[5] = {'J','F','I','F','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 5; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 5;\n         if (ok)\n            z->jfif = 1;\n      } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment\n         static const unsigned char tag[6] = {'A','d','o','b','e','\\0'};\n         int ok = 1;\n         int i;\n         for (i=0; i < 6; ++i)\n            if (stbi__get8(z->s) != tag[i])\n               ok = 0;\n         L -= 6;\n         if (ok) {\n            stbi__get8(z->s); // version\n            stbi__get16be(z->s); // flags0\n            stbi__get16be(z->s); // flags1\n            z->app14_color_transform = stbi__get8(z->s); // color transform\n            L -= 6;\n         }\n      }\n\n      stbi__skip(z->s, L);\n      return 1;\n   }\n\n   return stbi__err(\"unknown marker\",\"Corrupt JPEG\");\n}\n\n// after we see SOS\nstatic int stbi__process_scan_header(stbi__jpeg *z)\n{\n   int i;\n   int Ls = stbi__get16be(z->s);\n   z->scan_n = stbi__get8(z->s);\n   if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err(\"bad SOS component count\",\"Corrupt JPEG\");\n   if (Ls != 6+2*z->scan_n) return stbi__err(\"bad SOS len\",\"Corrupt JPEG\");\n   for (i=0; i < z->scan_n; ++i) {\n      int id = stbi__get8(z->s), which;\n      int q = stbi__get8(z->s);\n      for (which = 0; which < z->s->img_n; ++which)\n         if (z->img_comp[which].id == id)\n            break;\n      if (which == z->s->img_n) return 0; // no match\n      z->img_comp[which].hd = q >> 4;   if (z->img_comp[which].hd > 3) return stbi__err(\"bad DC huff\",\"Corrupt JPEG\");\n      z->img_comp[which].ha = q & 15;   if (z->img_comp[which].ha > 3) return stbi__err(\"bad AC huff\",\"Corrupt JPEG\");\n      z->order[i] = which;\n   }\n\n   {\n      int aa;\n      z->spec_start = stbi__get8(z->s);\n      z->spec_end   = stbi__get8(z->s); // should be 63, but might be 0\n      aa = stbi__get8(z->s);\n      z->succ_high = (aa >> 4);\n      z->succ_low  = (aa & 15);\n      if (z->progressive) {\n         if (z->spec_start > 63 || z->spec_end > 63  || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13)\n            return stbi__err(\"bad SOS\", \"Corrupt JPEG\");\n      } else {\n         if (z->spec_start != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         if (z->succ_high != 0 || z->succ_low != 0) return stbi__err(\"bad SOS\",\"Corrupt JPEG\");\n         z->spec_end = 63;\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why)\n{\n   int i;\n   for (i=0; i < ncomp; ++i) {\n      if (z->img_comp[i].raw_data) {\n         STBI_FREE(z->img_comp[i].raw_data);\n         z->img_comp[i].raw_data = NULL;\n         z->img_comp[i].data = NULL;\n      }\n      if (z->img_comp[i].raw_coeff) {\n         STBI_FREE(z->img_comp[i].raw_coeff);\n         z->img_comp[i].raw_coeff = 0;\n         z->img_comp[i].coeff = 0;\n      }\n      if (z->img_comp[i].linebuf) {\n         STBI_FREE(z->img_comp[i].linebuf);\n         z->img_comp[i].linebuf = NULL;\n      }\n   }\n   return why;\n}\n\nstatic int stbi__process_frame_header(stbi__jpeg *z, int scan)\n{\n   stbi__context *s = z->s;\n   int Lf,p,i,q, h_max=1,v_max=1,c;\n   Lf = stbi__get16be(s);         if (Lf < 11) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\"); // JPEG\n   p  = stbi__get8(s);            if (p != 8) return stbi__err(\"only 8-bit\",\"JPEG format not supported: 8-bit only\"); // JPEG baseline\n   s->img_y = stbi__get16be(s);   if (s->img_y == 0) return stbi__err(\"no header height\", \"JPEG format not supported: delayed height\"); // Legal, but we don't handle it--but neither does IJG\n   s->img_x = stbi__get16be(s);   if (s->img_x == 0) return stbi__err(\"0 width\",\"Corrupt JPEG\"); // JPEG requires\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   c = stbi__get8(s);\n   if (c != 3 && c != 1 && c != 4) return stbi__err(\"bad component count\",\"Corrupt JPEG\");\n   s->img_n = c;\n   for (i=0; i < c; ++i) {\n      z->img_comp[i].data = NULL;\n      z->img_comp[i].linebuf = NULL;\n   }\n\n   if (Lf != 8+3*s->img_n) return stbi__err(\"bad SOF len\",\"Corrupt JPEG\");\n\n   z->rgb = 0;\n   for (i=0; i < s->img_n; ++i) {\n      static const unsigned char rgb[3] = { 'R', 'G', 'B' };\n      z->img_comp[i].id = stbi__get8(s);\n      if (s->img_n == 3 && z->img_comp[i].id == rgb[i])\n         ++z->rgb;\n      q = stbi__get8(s);\n      z->img_comp[i].h = (q >> 4);  if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err(\"bad H\",\"Corrupt JPEG\");\n      z->img_comp[i].v = q & 15;    if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err(\"bad V\",\"Corrupt JPEG\");\n      z->img_comp[i].tq = stbi__get8(s);  if (z->img_comp[i].tq > 3) return stbi__err(\"bad TQ\",\"Corrupt JPEG\");\n   }\n\n   if (scan != STBI__SCAN_load) return 1;\n\n   if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err(\"too large\", \"Image too large to decode\");\n\n   for (i=0; i < s->img_n; ++i) {\n      if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h;\n      if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v;\n   }\n\n   // compute interleaved mcu info\n   z->img_h_max = h_max;\n   z->img_v_max = v_max;\n   z->img_mcu_w = h_max * 8;\n   z->img_mcu_h = v_max * 8;\n   // these sizes can't be more than 17 bits\n   z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w;\n   z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h;\n\n   for (i=0; i < s->img_n; ++i) {\n      // number of effective pixels (e.g. for non-interleaved MCU)\n      z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max;\n      z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max;\n      // to simplify generation, we'll allocate enough memory to decode\n      // the bogus oversized data from using interleaved MCUs and their\n      // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't\n      // discard the extra data until colorspace conversion\n      //\n      // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier)\n      // so these muls can't overflow with 32-bit ints (which we require)\n      z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8;\n      z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8;\n      z->img_comp[i].coeff = 0;\n      z->img_comp[i].raw_coeff = 0;\n      z->img_comp[i].linebuf = NULL;\n      z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15);\n      if (z->img_comp[i].raw_data == NULL)\n         return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n      // align blocks for idct using mmx/sse\n      z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15);\n      if (z->progressive) {\n         // w2, h2 are multiples of 8 (see above)\n         z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8;\n         z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8;\n         z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15);\n         if (z->img_comp[i].raw_coeff == NULL)\n            return stbi__free_jpeg_components(z, i+1, stbi__err(\"outofmem\", \"Out of memory\"));\n         z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15);\n      }\n   }\n\n   return 1;\n}\n\n// use comparisons since in some cases we handle more than one case (e.g. SOF)\n#define stbi__DNL(x)         ((x) == 0xdc)\n#define stbi__SOI(x)         ((x) == 0xd8)\n#define stbi__EOI(x)         ((x) == 0xd9)\n#define stbi__SOF(x)         ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2)\n#define stbi__SOS(x)         ((x) == 0xda)\n\n#define stbi__SOF_progressive(x)   ((x) == 0xc2)\n\nstatic int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)\n{\n   int m;\n   z->jfif = 0;\n   z->app14_color_transform = -1; // valid values are 0,1,2\n   z->marker = STBI__MARKER_none; // initialize cached marker to empty\n   m = stbi__get_marker(z);\n   if (!stbi__SOI(m)) return stbi__err(\"no SOI\",\"Corrupt JPEG\");\n   if (scan == STBI__SCAN_type) return 1;\n   m = stbi__get_marker(z);\n   while (!stbi__SOF(m)) {\n      if (!stbi__process_marker(z,m)) return 0;\n      m = stbi__get_marker(z);\n      while (m == STBI__MARKER_none) {\n         // some files have extra padding after their blocks, so ok, we'll scan\n         if (stbi__at_eof(z->s)) return stbi__err(\"no SOF\", \"Corrupt JPEG\");\n         m = stbi__get_marker(z);\n      }\n   }\n   z->progressive = stbi__SOF_progressive(m);\n   if (!stbi__process_frame_header(z, scan)) return 0;\n   return 1;\n}\n\n// decode image to YCbCr format\nstatic int stbi__decode_jpeg_image(stbi__jpeg *j)\n{\n   int m;\n   for (m = 0; m < 4; m++) {\n      j->img_comp[m].raw_data = NULL;\n      j->img_comp[m].raw_coeff = NULL;\n   }\n   j->restart_interval = 0;\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0;\n   m = stbi__get_marker(j);\n   while (!stbi__EOI(m)) {\n      if (stbi__SOS(m)) {\n         if (!stbi__process_scan_header(j)) return 0;\n         if (!stbi__parse_entropy_coded_data(j)) return 0;\n         if (j->marker == STBI__MARKER_none ) {\n            // handle 0s at the end of image data from IP Kamera 9060\n            while (!stbi__at_eof(j->s)) {\n               int x = stbi__get8(j->s);\n               if (x == 255) {\n                  j->marker = stbi__get8(j->s);\n                  break;\n               }\n            }\n            // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0\n         }\n      } else if (stbi__DNL(m)) {\n         int Ld = stbi__get16be(j->s);\n         stbi__uint32 NL = stbi__get16be(j->s);\n         if (Ld != 4) return stbi__err(\"bad DNL len\", \"Corrupt JPEG\");\n         if (NL != j->s->img_y) return stbi__err(\"bad DNL height\", \"Corrupt JPEG\");\n      } else {\n         if (!stbi__process_marker(j, m)) return 0;\n      }\n      m = stbi__get_marker(j);\n   }\n   if (j->progressive)\n      stbi__jpeg_finish(j);\n   return 1;\n}\n\n// static jfif-centered resampling (across block boundaries)\n\ntypedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1,\n                                    int w, int hs);\n\n#define stbi__div4(x) ((stbi_uc) ((x) >> 2))\n\nstatic stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   STBI_NOTUSED(out);\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(w);\n   STBI_NOTUSED(hs);\n   return in_near;\n}\n\nstatic stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples vertically for every one in input\n   int i;\n   STBI_NOTUSED(hs);\n   for (i=0; i < w; ++i)\n      out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2);\n   return out;\n}\n\nstatic stbi_uc*  stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate two samples horizontally for every one in input\n   int i;\n   stbi_uc *input = in_near;\n\n   if (w == 1) {\n      // if only one sample, can't do any interpolation\n      out[0] = out[1] = input[0];\n      return out;\n   }\n\n   out[0] = input[0];\n   out[1] = stbi__div4(input[0]*3 + input[1] + 2);\n   for (i=1; i < w-1; ++i) {\n      int n = 3*input[i]+2;\n      out[i*2+0] = stbi__div4(n+input[i-1]);\n      out[i*2+1] = stbi__div4(n+input[i+1]);\n   }\n   out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2);\n   out[i*2+1] = input[w-1];\n\n   STBI_NOTUSED(in_far);\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#define stbi__div16(x) ((stbi_uc) ((x) >> 4))\n\nstatic stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i,t0,t1;\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   out[0] = stbi__div4(t1+2);\n   for (i=1; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // need to generate 2x2 samples for every one in input\n   int i=0,t0,t1;\n\n   if (w == 1) {\n      out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2);\n      return out;\n   }\n\n   t1 = 3*in_near[0] + in_far[0];\n   // process groups of 8 pixels for as long as we can.\n   // note we can't handle the last pixel in a row in this loop\n   // because we need to handle the filter boundary conditions.\n   for (; i < ((w-1) & ~7); i += 8) {\n#if defined(STBI_SSE2)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      __m128i zero  = _mm_setzero_si128();\n      __m128i farb  = _mm_loadl_epi64((__m128i *) (in_far + i));\n      __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i));\n      __m128i farw  = _mm_unpacklo_epi8(farb, zero);\n      __m128i nearw = _mm_unpacklo_epi8(nearb, zero);\n      __m128i diff  = _mm_sub_epi16(farw, nearw);\n      __m128i nears = _mm_slli_epi16(nearw, 2);\n      __m128i curr  = _mm_add_epi16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      __m128i prv0 = _mm_slli_si128(curr, 2);\n      __m128i nxt0 = _mm_srli_si128(curr, 2);\n      __m128i prev = _mm_insert_epi16(prv0, t1, 0);\n      __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      __m128i bias  = _mm_set1_epi16(8);\n      __m128i curs = _mm_slli_epi16(curr, 2);\n      __m128i prvd = _mm_sub_epi16(prev, curr);\n      __m128i nxtd = _mm_sub_epi16(next, curr);\n      __m128i curb = _mm_add_epi16(curs, bias);\n      __m128i even = _mm_add_epi16(prvd, curb);\n      __m128i odd  = _mm_add_epi16(nxtd, curb);\n\n      // interleave even and odd pixels, then undo scaling.\n      __m128i int0 = _mm_unpacklo_epi16(even, odd);\n      __m128i int1 = _mm_unpackhi_epi16(even, odd);\n      __m128i de0  = _mm_srli_epi16(int0, 4);\n      __m128i de1  = _mm_srli_epi16(int1, 4);\n\n      // pack and write output\n      __m128i outv = _mm_packus_epi16(de0, de1);\n      _mm_storeu_si128((__m128i *) (out + i*2), outv);\n#elif defined(STBI_NEON)\n      // load and perform the vertical filtering pass\n      // this uses 3*x + y = 4*x + (y - x)\n      uint8x8_t farb  = vld1_u8(in_far + i);\n      uint8x8_t nearb = vld1_u8(in_near + i);\n      int16x8_t diff  = vreinterpretq_s16_u16(vsubl_u8(farb, nearb));\n      int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2));\n      int16x8_t curr  = vaddq_s16(nears, diff); // current row\n\n      // horizontal filter works the same based on shifted vers of current\n      // row. \"prev\" is current row shifted right by 1 pixel; we need to\n      // insert the previous pixel value (from t1).\n      // \"next\" is current row shifted left by 1 pixel, with first pixel\n      // of next block of 8 pixels added in.\n      int16x8_t prv0 = vextq_s16(curr, curr, 7);\n      int16x8_t nxt0 = vextq_s16(curr, curr, 1);\n      int16x8_t prev = vsetq_lane_s16(t1, prv0, 0);\n      int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7);\n\n      // horizontal filter, polyphase implementation since it's convenient:\n      // even pixels = 3*cur + prev = cur*4 + (prev - cur)\n      // odd  pixels = 3*cur + next = cur*4 + (next - cur)\n      // note the shared term.\n      int16x8_t curs = vshlq_n_s16(curr, 2);\n      int16x8_t prvd = vsubq_s16(prev, curr);\n      int16x8_t nxtd = vsubq_s16(next, curr);\n      int16x8_t even = vaddq_s16(curs, prvd);\n      int16x8_t odd  = vaddq_s16(curs, nxtd);\n\n      // undo scaling and round, then store with even/odd phases interleaved\n      uint8x8x2_t o;\n      o.val[0] = vqrshrun_n_s16(even, 4);\n      o.val[1] = vqrshrun_n_s16(odd,  4);\n      vst2_u8(out + i*2, o);\n#endif\n\n      // \"previous\" value for next iter\n      t1 = 3*in_near[i+7] + in_far[i+7];\n   }\n\n   t0 = t1;\n   t1 = 3*in_near[i] + in_far[i];\n   out[i*2] = stbi__div16(3*t1 + t0 + 8);\n\n   for (++i; i < w; ++i) {\n      t0 = t1;\n      t1 = 3*in_near[i]+in_far[i];\n      out[i*2-1] = stbi__div16(3*t0 + t1 + 8);\n      out[i*2  ] = stbi__div16(3*t1 + t0 + 8);\n   }\n   out[w*2-1] = stbi__div4(t1+2);\n\n   STBI_NOTUSED(hs);\n\n   return out;\n}\n#endif\n\nstatic stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs)\n{\n   // resample with nearest-neighbor\n   int i,j;\n   STBI_NOTUSED(in_far);\n   for (i=0; i < w; ++i)\n      for (j=0; j < hs; ++j)\n         out[i*hs+j] = in_near[i];\n   return out;\n}\n\n// this is a reduced-precision calculation of YCbCr-to-RGB introduced\n// to make sure the code produces the same results in both SIMD and scalar\n#define stbi__float2fixed(x)  (((int) ((x) * 4096.0f + 0.5f)) << 8)\nstatic void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step)\n{\n   int i;\n   for (i=0; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed +  cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                     +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n\n#if defined(STBI_SSE2) || defined(STBI_NEON)\nstatic void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step)\n{\n   int i = 0;\n\n#ifdef STBI_SSE2\n   // step == 3 is pretty ugly on the final interleave, and i'm not convinced\n   // it's useful in practice (you wouldn't use it for textures, for example).\n   // so just accelerate step == 4 case.\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      __m128i signflip  = _mm_set1_epi8(-0x80);\n      __m128i cr_const0 = _mm_set1_epi16(   (short) ( 1.40200f*4096.0f+0.5f));\n      __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f));\n      __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f));\n      __m128i cb_const1 = _mm_set1_epi16(   (short) ( 1.77200f*4096.0f+0.5f));\n      __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128);\n      __m128i xw = _mm_set1_epi16(255); // alpha channel\n\n      for (; i+7 < count; i += 8) {\n         // load\n         __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i));\n         __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i));\n         __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i));\n         __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128\n         __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128\n\n         // unpack to short (and left-shift cr, cb by 8)\n         __m128i yw  = _mm_unpacklo_epi8(y_bias, y_bytes);\n         __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased);\n         __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased);\n\n         // color transform\n         __m128i yws = _mm_srli_epi16(yw, 4);\n         __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw);\n         __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw);\n         __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1);\n         __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1);\n         __m128i rws = _mm_add_epi16(cr0, yws);\n         __m128i gwt = _mm_add_epi16(cb0, yws);\n         __m128i bws = _mm_add_epi16(yws, cb1);\n         __m128i gws = _mm_add_epi16(gwt, cr1);\n\n         // descale\n         __m128i rw = _mm_srai_epi16(rws, 4);\n         __m128i bw = _mm_srai_epi16(bws, 4);\n         __m128i gw = _mm_srai_epi16(gws, 4);\n\n         // back to byte, set up for transpose\n         __m128i brb = _mm_packus_epi16(rw, bw);\n         __m128i gxb = _mm_packus_epi16(gw, xw);\n\n         // transpose to interleave channels\n         __m128i t0 = _mm_unpacklo_epi8(brb, gxb);\n         __m128i t1 = _mm_unpackhi_epi8(brb, gxb);\n         __m128i o0 = _mm_unpacklo_epi16(t0, t1);\n         __m128i o1 = _mm_unpackhi_epi16(t0, t1);\n\n         // store\n         _mm_storeu_si128((__m128i *) (out + 0), o0);\n         _mm_storeu_si128((__m128i *) (out + 16), o1);\n         out += 32;\n      }\n   }\n#endif\n\n#ifdef STBI_NEON\n   // in this version, step=3 support would be easy to add. but is there demand?\n   if (step == 4) {\n      // this is a fairly straightforward implementation and not super-optimized.\n      uint8x8_t signflip = vdup_n_u8(0x80);\n      int16x8_t cr_const0 = vdupq_n_s16(   (short) ( 1.40200f*4096.0f+0.5f));\n      int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f));\n      int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f));\n      int16x8_t cb_const1 = vdupq_n_s16(   (short) ( 1.77200f*4096.0f+0.5f));\n\n      for (; i+7 < count; i += 8) {\n         // load\n         uint8x8_t y_bytes  = vld1_u8(y + i);\n         uint8x8_t cr_bytes = vld1_u8(pcr + i);\n         uint8x8_t cb_bytes = vld1_u8(pcb + i);\n         int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip));\n         int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip));\n\n         // expand to s16\n         int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4));\n         int16x8_t crw = vshll_n_s8(cr_biased, 7);\n         int16x8_t cbw = vshll_n_s8(cb_biased, 7);\n\n         // color transform\n         int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0);\n         int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0);\n         int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1);\n         int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1);\n         int16x8_t rws = vaddq_s16(yws, cr0);\n         int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1);\n         int16x8_t bws = vaddq_s16(yws, cb1);\n\n         // undo scaling, round, convert to byte\n         uint8x8x4_t o;\n         o.val[0] = vqrshrun_n_s16(rws, 4);\n         o.val[1] = vqrshrun_n_s16(gws, 4);\n         o.val[2] = vqrshrun_n_s16(bws, 4);\n         o.val[3] = vdup_n_u8(255);\n\n         // store, interleaving r/g/b/a\n         vst4_u8(out, o);\n         out += 8*4;\n      }\n   }\n#endif\n\n   for (; i < count; ++i) {\n      int y_fixed = (y[i] << 20) + (1<<19); // rounding\n      int r,g,b;\n      int cr = pcr[i] - 128;\n      int cb = pcb[i] - 128;\n      r = y_fixed + cr* stbi__float2fixed(1.40200f);\n      g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000);\n      b = y_fixed                                   +   cb* stbi__float2fixed(1.77200f);\n      r >>= 20;\n      g >>= 20;\n      b >>= 20;\n      if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; }\n      if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; }\n      if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; }\n      out[0] = (stbi_uc)r;\n      out[1] = (stbi_uc)g;\n      out[2] = (stbi_uc)b;\n      out[3] = 255;\n      out += step;\n   }\n}\n#endif\n\n// set up the kernels\nstatic void stbi__setup_jpeg(stbi__jpeg *j)\n{\n   j->idct_block_kernel = stbi__idct_block;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2;\n\n#ifdef STBI_SSE2\n   if (stbi__sse2_available()) {\n      j->idct_block_kernel = stbi__idct_simd;\n      j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n      j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n   }\n#endif\n\n#ifdef STBI_NEON\n   j->idct_block_kernel = stbi__idct_simd;\n   j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd;\n   j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd;\n#endif\n}\n\n// clean up the temporary component buffers\nstatic void stbi__cleanup_jpeg(stbi__jpeg *j)\n{\n   stbi__free_jpeg_components(j, j->s->img_n, 0);\n}\n\ntypedef struct\n{\n   resample_row_func resample;\n   stbi_uc *line0,*line1;\n   int hs,vs;   // expansion factor in each axis\n   int w_lores; // horizontal pixels pre-expansion\n   int ystep;   // how far through vertical expansion we are\n   int ypos;    // which pre-expansion row we're on\n} stbi__resample;\n\n// fast 0..255 * 0..255 => 0..255 rounded multiplication\nstatic stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y)\n{\n   unsigned int t = x*y + 128;\n   return (stbi_uc) ((t + (t >>8)) >> 8);\n}\n\nstatic stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp)\n{\n   int n, decode_n, is_rgb;\n   z->s->img_n = 0; // make stbi__cleanup_jpeg safe\n\n   // validate req_comp\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n\n   // load a jpeg image from whichever source, but leave in YCbCr format\n   if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; }\n\n   // determine actual number of components to generate\n   n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1;\n\n   is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif));\n\n   if (z->s->img_n == 3 && n < 3 && !is_rgb)\n      decode_n = 1;\n   else\n      decode_n = z->s->img_n;\n\n   // resample and color-convert\n   {\n      int k;\n      unsigned int i,j;\n      stbi_uc *output;\n      stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL };\n\n      stbi__resample res_comp[4];\n\n      for (k=0; k < decode_n; ++k) {\n         stbi__resample *r = &res_comp[k];\n\n         // allocate line buffer big enough for upsampling off the edges\n         // with upsample factor of 4\n         z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3);\n         if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n         r->hs      = z->img_h_max / z->img_comp[k].h;\n         r->vs      = z->img_v_max / z->img_comp[k].v;\n         r->ystep   = r->vs >> 1;\n         r->w_lores = (z->s->img_x + r->hs-1) / r->hs;\n         r->ypos    = 0;\n         r->line0   = r->line1 = z->img_comp[k].data;\n\n         if      (r->hs == 1 && r->vs == 1) r->resample = resample_row_1;\n         else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2;\n         else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2;\n         else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel;\n         else                               r->resample = stbi__resample_row_generic;\n      }\n\n      // can't error after this so, this is safe\n      output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1);\n      if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc(\"outofmem\", \"Out of memory\"); }\n\n      // now go ahead and resample\n      for (j=0; j < z->s->img_y; ++j) {\n         stbi_uc *out = output + n * z->s->img_x * j;\n         for (k=0; k < decode_n; ++k) {\n            stbi__resample *r = &res_comp[k];\n            int y_bot = r->ystep >= (r->vs >> 1);\n            coutput[k] = r->resample(z->img_comp[k].linebuf,\n                                     y_bot ? r->line1 : r->line0,\n                                     y_bot ? r->line0 : r->line1,\n                                     r->w_lores, r->hs);\n            if (++r->ystep >= r->vs) {\n               r->ystep = 0;\n               r->line0 = r->line1;\n               if (++r->ypos < z->img_comp[k].y)\n                  r->line1 += z->img_comp[k].w2;\n            }\n         }\n         if (n >= 3) {\n            stbi_uc *y = coutput[0];\n            if (z->s->img_n == 3) {\n               if (is_rgb) {\n                  for (i=0; i < z->s->img_x; ++i) {\n                     out[0] = y[i];\n                     out[1] = coutput[1][i];\n                     out[2] = coutput[2][i];\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else {\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else if (z->s->img_n == 4) {\n               if (z->app14_color_transform == 0) { // CMYK\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(coutput[0][i], m);\n                     out[1] = stbi__blinn_8x8(coutput[1][i], m);\n                     out[2] = stbi__blinn_8x8(coutput[2][i], m);\n                     out[3] = 255;\n                     out += n;\n                  }\n               } else if (z->app14_color_transform == 2) { // YCCK\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n                  for (i=0; i < z->s->img_x; ++i) {\n                     stbi_uc m = coutput[3][i];\n                     out[0] = stbi__blinn_8x8(255 - out[0], m);\n                     out[1] = stbi__blinn_8x8(255 - out[1], m);\n                     out[2] = stbi__blinn_8x8(255 - out[2], m);\n                     out += n;\n                  }\n               } else { // YCbCr + alpha?  Ignore the fourth channel for now\n                  z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n);\n               }\n            } else\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = out[1] = out[2] = y[i];\n                  out[3] = 255; // not used if n==3\n                  out += n;\n               }\n         } else {\n            if (is_rgb) {\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i)\n                     *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n               else {\n                  for (i=0; i < z->s->img_x; ++i, out += 2) {\n                     out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]);\n                     out[1] = 255;\n                  }\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 0) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  stbi_uc m = coutput[3][i];\n                  stbi_uc r = stbi__blinn_8x8(coutput[0][i], m);\n                  stbi_uc g = stbi__blinn_8x8(coutput[1][i], m);\n                  stbi_uc b = stbi__blinn_8x8(coutput[2][i], m);\n                  out[0] = stbi__compute_y(r, g, b);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else if (z->s->img_n == 4 && z->app14_color_transform == 2) {\n               for (i=0; i < z->s->img_x; ++i) {\n                  out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]);\n                  out[1] = 255;\n                  out += n;\n               }\n            } else {\n               stbi_uc *y = coutput[0];\n               if (n == 1)\n                  for (i=0; i < z->s->img_x; ++i) out[i] = y[i];\n               else\n                  for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; }\n            }\n         }\n      }\n      stbi__cleanup_jpeg(z);\n      *out_x = z->s->img_x;\n      *out_y = z->s->img_y;\n      if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output\n      return output;\n   }\n}\n\nstatic void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   unsigned char* result;\n   stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg));\n   STBI_NOTUSED(ri);\n   j->s = s;\n   stbi__setup_jpeg(j);\n   result = load_jpeg_image(j, x,y,comp,req_comp);\n   STBI_FREE(j);\n   return result;\n}\n\nstatic int stbi__jpeg_test(stbi__context *s)\n{\n   int r;\n   stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg));\n   j->s = s;\n   stbi__setup_jpeg(j);\n   r = stbi__decode_jpeg_header(j, STBI__SCAN_type);\n   stbi__rewind(s);\n   STBI_FREE(j);\n   return r;\n}\n\nstatic int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)\n{\n   if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) {\n      stbi__rewind( j->s );\n      return 0;\n   }\n   if (x) *x = j->s->img_x;\n   if (y) *y = j->s->img_y;\n   if (comp) *comp = j->s->img_n >= 3 ? 3 : 1;\n   return 1;\n}\n\nstatic int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int result;\n   stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg)));\n   j->s = s;\n   result = stbi__jpeg_info_raw(j, x, y, comp);\n   STBI_FREE(j);\n   return result;\n}\n#endif\n\n// public domain zlib decode    v0.2  Sean Barrett 2006-11-18\n//    simple implementation\n//      - all input must be provided in an upfront buffer\n//      - all output is written to a single output buffer (can malloc/realloc)\n//    performance\n//      - fast huffman\n\n#ifndef STBI_NO_ZLIB\n\n// fast-way is faster to check than jpeg huffman, but slow way is slower\n#define STBI__ZFAST_BITS  9 // accelerate all cases in default tables\n#define STBI__ZFAST_MASK  ((1 << STBI__ZFAST_BITS) - 1)\n\n// zlib-style huffman encoding\n// (jpegs packs from left, zlib from right, so can't share code)\ntypedef struct\n{\n   stbi__uint16 fast[1 << STBI__ZFAST_BITS];\n   stbi__uint16 firstcode[16];\n   int maxcode[17];\n   stbi__uint16 firstsymbol[16];\n   stbi_uc  size[288];\n   stbi__uint16 value[288];\n} stbi__zhuffman;\n\nstbi_inline static int stbi__bitreverse16(int n)\n{\n  n = ((n & 0xAAAA) >>  1) | ((n & 0x5555) << 1);\n  n = ((n & 0xCCCC) >>  2) | ((n & 0x3333) << 2);\n  n = ((n & 0xF0F0) >>  4) | ((n & 0x0F0F) << 4);\n  n = ((n & 0xFF00) >>  8) | ((n & 0x00FF) << 8);\n  return n;\n}\n\nstbi_inline static int stbi__bit_reverse(int v, int bits)\n{\n   STBI_ASSERT(bits <= 16);\n   // to bit reverse n bits, reverse 16 and shift\n   // e.g. 11 bits, bit reverse and shift away 5\n   return stbi__bitreverse16(v) >> (16-bits);\n}\n\nstatic int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num)\n{\n   int i,k=0;\n   int code, next_code[16], sizes[17];\n\n   // DEFLATE spec for generating codes\n   memset(sizes, 0, sizeof(sizes));\n   memset(z->fast, 0, sizeof(z->fast));\n   for (i=0; i < num; ++i)\n      ++sizes[sizelist[i]];\n   sizes[0] = 0;\n   for (i=1; i < 16; ++i)\n      if (sizes[i] > (1 << i))\n         return stbi__err(\"bad sizes\", \"Corrupt PNG\");\n   code = 0;\n   for (i=1; i < 16; ++i) {\n      next_code[i] = code;\n      z->firstcode[i] = (stbi__uint16) code;\n      z->firstsymbol[i] = (stbi__uint16) k;\n      code = (code + sizes[i]);\n      if (sizes[i])\n         if (code-1 >= (1 << i)) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n      z->maxcode[i] = code << (16-i); // preshift for inner loop\n      code <<= 1;\n      k += sizes[i];\n   }\n   z->maxcode[16] = 0x10000; // sentinel\n   for (i=0; i < num; ++i) {\n      int s = sizelist[i];\n      if (s) {\n         int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s];\n         stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i);\n         z->size [c] = (stbi_uc     ) s;\n         z->value[c] = (stbi__uint16) i;\n         if (s <= STBI__ZFAST_BITS) {\n            int j = stbi__bit_reverse(next_code[s],s);\n            while (j < (1 << STBI__ZFAST_BITS)) {\n               z->fast[j] = fastv;\n               j += (1 << s);\n            }\n         }\n         ++next_code[s];\n      }\n   }\n   return 1;\n}\n\n// zlib-from-memory implementation for PNG reading\n//    because PNG allows splitting the zlib stream arbitrarily,\n//    and it's annoying structurally to have PNG call ZLIB call PNG,\n//    we require PNG read all the IDATs and combine them into a single\n//    memory buffer\n\ntypedef struct\n{\n   stbi_uc *zbuffer, *zbuffer_end;\n   int num_bits;\n   stbi__uint32 code_buffer;\n\n   char *zout;\n   char *zout_start;\n   char *zout_end;\n   int   z_expandable;\n\n   stbi__zhuffman z_length, z_distance;\n} stbi__zbuf;\n\nstbi_inline static int stbi__zeof(stbi__zbuf *z)\n{\n   return (z->zbuffer >= z->zbuffer_end);\n}\n\nstbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)\n{\n   return stbi__zeof(z) ? 0 : *z->zbuffer++;\n}\n\nstatic void stbi__fill_bits(stbi__zbuf *z)\n{\n   do {\n      if (z->code_buffer >= (1U << z->num_bits)) {\n        z->zbuffer = z->zbuffer_end;  /* treat this as EOF so we fail. */\n        return;\n      }\n      z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits;\n      z->num_bits += 8;\n   } while (z->num_bits <= 24);\n}\n\nstbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n)\n{\n   unsigned int k;\n   if (z->num_bits < n) stbi__fill_bits(z);\n   k = z->code_buffer & ((1 << n) - 1);\n   z->code_buffer >>= n;\n   z->num_bits -= n;\n   return k;\n}\n\nstatic int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s,k;\n   // not resolved by fast table, so compute it the slow way\n   // use jpeg approach, which requires MSbits at top\n   k = stbi__bit_reverse(a->code_buffer, 16);\n   for (s=STBI__ZFAST_BITS+1; ; ++s)\n      if (k < z->maxcode[s])\n         break;\n   if (s >= 16) return -1; // invalid code!\n   // code size is s, so:\n   b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s];\n   if (b >= sizeof (z->size)) return -1; // some data was corrupt somewhere!\n   if (z->size[b] != s) return -1;  // was originally an assert, but report failure instead.\n   a->code_buffer >>= s;\n   a->num_bits -= s;\n   return z->value[b];\n}\n\nstbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z)\n{\n   int b,s;\n   if (a->num_bits < 16) {\n      if (stbi__zeof(a)) {\n         return -1;   /* report error for unexpected end of data. */\n      }\n      stbi__fill_bits(a);\n   }\n   b = z->fast[a->code_buffer & STBI__ZFAST_MASK];\n   if (b) {\n      s = b >> 9;\n      a->code_buffer >>= s;\n      a->num_bits -= s;\n      return b & 511;\n   }\n   return stbi__zhuffman_decode_slowpath(a, z);\n}\n\nstatic int stbi__zexpand(stbi__zbuf *z, char *zout, int n)  // need to make room for n bytes\n{\n   char *q;\n   unsigned int cur, limit, old_limit;\n   z->zout = zout;\n   if (!z->z_expandable) return stbi__err(\"output buffer limit\",\"Corrupt PNG\");\n   cur   = (unsigned int) (z->zout - z->zout_start);\n   limit = old_limit = (unsigned) (z->zout_end - z->zout_start);\n   if (UINT_MAX - cur < (unsigned) n) return stbi__err(\"outofmem\", \"Out of memory\");\n   while (cur + n > limit) {\n      if(limit > UINT_MAX / 2) return stbi__err(\"outofmem\", \"Out of memory\");\n      limit *= 2;\n   }\n   q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit);\n   STBI_NOTUSED(old_limit);\n   if (q == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n   z->zout_start = q;\n   z->zout       = q + cur;\n   z->zout_end   = q + limit;\n   return 1;\n}\n\nstatic const int stbi__zlength_base[31] = {\n   3,4,5,6,7,8,9,10,11,13,\n   15,17,19,23,27,31,35,43,51,59,\n   67,83,99,115,131,163,195,227,258,0,0 };\n\nstatic const int stbi__zlength_extra[31]=\n{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 };\n\nstatic const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,\n257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0};\n\nstatic const int stbi__zdist_extra[32] =\n{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13};\n\nstatic int stbi__parse_huffman_block(stbi__zbuf *a)\n{\n   char *zout = a->zout;\n   for(;;) {\n      int z = stbi__zhuffman_decode(a, &a->z_length);\n      if (z < 256) {\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\"); // error in huffman codes\n         if (zout >= a->zout_end) {\n            if (!stbi__zexpand(a, zout, 1)) return 0;\n            zout = a->zout;\n         }\n         *zout++ = (char) z;\n      } else {\n         stbi_uc *p;\n         int len,dist;\n         if (z == 256) {\n            a->zout = zout;\n            return 1;\n         }\n         z -= 257;\n         len = stbi__zlength_base[z];\n         if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]);\n         z = stbi__zhuffman_decode(a, &a->z_distance);\n         if (z < 0) return stbi__err(\"bad huffman code\",\"Corrupt PNG\");\n         dist = stbi__zdist_base[z];\n         if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]);\n         if (zout - a->zout_start < dist) return stbi__err(\"bad dist\",\"Corrupt PNG\");\n         if (zout + len > a->zout_end) {\n            if (!stbi__zexpand(a, zout, len)) return 0;\n            zout = a->zout;\n         }\n         p = (stbi_uc *) (zout - dist);\n         if (dist == 1) { // run of one byte; common in images.\n            stbi_uc v = *p;\n            if (len) { do *zout++ = v; while (--len); }\n         } else {\n            if (len) { do *zout++ = *p++; while (--len); }\n         }\n      }\n   }\n}\n\nstatic int stbi__compute_huffman_codes(stbi__zbuf *a)\n{\n   static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 };\n   stbi__zhuffman z_codelength;\n   stbi_uc lencodes[286+32+137];//padding for maximum single op\n   stbi_uc codelength_sizes[19];\n   int i,n;\n\n   int hlit  = stbi__zreceive(a,5) + 257;\n   int hdist = stbi__zreceive(a,5) + 1;\n   int hclen = stbi__zreceive(a,4) + 4;\n   int ntot  = hlit + hdist;\n\n   memset(codelength_sizes, 0, sizeof(codelength_sizes));\n   for (i=0; i < hclen; ++i) {\n      int s = stbi__zreceive(a,3);\n      codelength_sizes[length_dezigzag[i]] = (stbi_uc) s;\n   }\n   if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0;\n\n   n = 0;\n   while (n < ntot) {\n      int c = stbi__zhuffman_decode(a, &z_codelength);\n      if (c < 0 || c >= 19) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n      if (c < 16)\n         lencodes[n++] = (stbi_uc) c;\n      else {\n         stbi_uc fill = 0;\n         if (c == 16) {\n            c = stbi__zreceive(a,2)+3;\n            if (n == 0) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n            fill = lencodes[n-1];\n         } else if (c == 17) {\n            c = stbi__zreceive(a,3)+3;\n         } else if (c == 18) {\n            c = stbi__zreceive(a,7)+11;\n         } else {\n            return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n         }\n         if (ntot - n < c) return stbi__err(\"bad codelengths\", \"Corrupt PNG\");\n         memset(lencodes+n, fill, c);\n         n += c;\n      }\n   }\n   if (n != ntot) return stbi__err(\"bad codelengths\",\"Corrupt PNG\");\n   if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0;\n   if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0;\n   return 1;\n}\n\nstatic int stbi__parse_uncompressed_block(stbi__zbuf *a)\n{\n   stbi_uc header[4];\n   int len,nlen,k;\n   if (a->num_bits & 7)\n      stbi__zreceive(a, a->num_bits & 7); // discard\n   // drain the bit-packed data into header\n   k = 0;\n   while (a->num_bits > 0) {\n      header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check\n      a->code_buffer >>= 8;\n      a->num_bits -= 8;\n   }\n   if (a->num_bits < 0) return stbi__err(\"zlib corrupt\",\"Corrupt PNG\");\n   // now fill header the normal way\n   while (k < 4)\n      header[k++] = stbi__zget8(a);\n   len  = header[1] * 256 + header[0];\n   nlen = header[3] * 256 + header[2];\n   if (nlen != (len ^ 0xffff)) return stbi__err(\"zlib corrupt\",\"Corrupt PNG\");\n   if (a->zbuffer + len > a->zbuffer_end) return stbi__err(\"read past buffer\",\"Corrupt PNG\");\n   if (a->zout + len > a->zout_end)\n      if (!stbi__zexpand(a, a->zout, len)) return 0;\n   memcpy(a->zout, a->zbuffer, len);\n   a->zbuffer += len;\n   a->zout += len;\n   return 1;\n}\n\nstatic int stbi__parse_zlib_header(stbi__zbuf *a)\n{\n   int cmf   = stbi__zget8(a);\n   int cm    = cmf & 15;\n   /* int cinfo = cmf >> 4; */\n   int flg   = stbi__zget8(a);\n   if (stbi__zeof(a)) return stbi__err(\"bad zlib header\",\"Corrupt PNG\"); // zlib spec\n   if ((cmf*256+flg) % 31 != 0) return stbi__err(\"bad zlib header\",\"Corrupt PNG\"); // zlib spec\n   if (flg & 32) return stbi__err(\"no preset dict\",\"Corrupt PNG\"); // preset dictionary not allowed in png\n   if (cm != 8) return stbi__err(\"bad compression\",\"Corrupt PNG\"); // DEFLATE required for png\n   // window = 1 << (8 + cinfo)... but who cares, we fully buffer output\n   return 1;\n}\n\nstatic const stbi_uc stbi__zdefault_length[288] =\n{\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,\n   8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,\n   7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8\n};\nstatic const stbi_uc stbi__zdefault_distance[32] =\n{\n   5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5\n};\n/*\nInit algorithm:\n{\n   int i;   // use <= to match clearly with spec\n   for (i=0; i <= 143; ++i)     stbi__zdefault_length[i]   = 8;\n   for (   ; i <= 255; ++i)     stbi__zdefault_length[i]   = 9;\n   for (   ; i <= 279; ++i)     stbi__zdefault_length[i]   = 7;\n   for (   ; i <= 287; ++i)     stbi__zdefault_length[i]   = 8;\n\n   for (i=0; i <=  31; ++i)     stbi__zdefault_distance[i] = 5;\n}\n*/\n\nstatic int stbi__parse_zlib(stbi__zbuf *a, int parse_header)\n{\n   int final, type;\n   if (parse_header)\n      if (!stbi__parse_zlib_header(a)) return 0;\n   a->num_bits = 0;\n   a->code_buffer = 0;\n   do {\n      final = stbi__zreceive(a,1);\n      type = stbi__zreceive(a,2);\n      if (type == 0) {\n         if (!stbi__parse_uncompressed_block(a)) return 0;\n      } else if (type == 3) {\n         return 0;\n      } else {\n         if (type == 1) {\n            // use fixed code lengths\n            if (!stbi__zbuild_huffman(&a->z_length  , stbi__zdefault_length  , 288)) return 0;\n            if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance,  32)) return 0;\n         } else {\n            if (!stbi__compute_huffman_codes(a)) return 0;\n         }\n         if (!stbi__parse_huffman_block(a)) return 0;\n      }\n   } while (!final);\n   return 1;\n}\n\nstatic int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header)\n{\n   a->zout_start = obuf;\n   a->zout       = obuf;\n   a->zout_end   = obuf + olen;\n   a->z_expandable = exp;\n\n   return stbi__parse_zlib(a, parse_header);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, 1)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen)\n{\n   return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen);\n}\n\nSTBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(initial_size);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer + len;\n   if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 1))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n\nSTBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen)\n{\n   stbi__zbuf a;\n   char *p = (char *) stbi__malloc(16384);\n   if (p == NULL) return NULL;\n   a.zbuffer = (stbi_uc *) buffer;\n   a.zbuffer_end = (stbi_uc *) buffer+len;\n   if (stbi__do_zlib(&a, p, 16384, 1, 0)) {\n      if (outlen) *outlen = (int) (a.zout - a.zout_start);\n      return a.zout_start;\n   } else {\n      STBI_FREE(a.zout_start);\n      return NULL;\n   }\n}\n\nSTBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen)\n{\n   stbi__zbuf a;\n   a.zbuffer = (stbi_uc *) ibuffer;\n   a.zbuffer_end = (stbi_uc *) ibuffer + ilen;\n   if (stbi__do_zlib(&a, obuffer, olen, 0, 0))\n      return (int) (a.zout - a.zout_start);\n   else\n      return -1;\n}\n#endif\n\n// public domain \"baseline\" PNG decoder   v0.10  Sean Barrett 2006-11-18\n//    simple implementation\n//      - only 8-bit samples\n//      - no CRC checking\n//      - allocates lots of intermediate memory\n//        - avoids problem of streaming data between subsystems\n//        - avoids explicit window management\n//    performance\n//      - uses stb_zlib, a PD zlib implementation with fast huffman decoding\n\n#ifndef STBI_NO_PNG\ntypedef struct\n{\n   stbi__uint32 length;\n   stbi__uint32 type;\n} stbi__pngchunk;\n\nstatic stbi__pngchunk stbi__get_chunk_header(stbi__context *s)\n{\n   stbi__pngchunk c;\n   c.length = stbi__get32be(s);\n   c.type   = stbi__get32be(s);\n   return c;\n}\n\nstatic int stbi__check_png_header(stbi__context *s)\n{\n   static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 };\n   int i;\n   for (i=0; i < 8; ++i)\n      if (stbi__get8(s) != png_sig[i]) return stbi__err(\"bad png sig\",\"Not a PNG\");\n   return 1;\n}\n\ntypedef struct\n{\n   stbi__context *s;\n   stbi_uc *idata, *expanded, *out;\n   int depth;\n} stbi__png;\n\n\nenum {\n   STBI__F_none=0,\n   STBI__F_sub=1,\n   STBI__F_up=2,\n   STBI__F_avg=3,\n   STBI__F_paeth=4,\n   // synthetic filters used for first scanline to avoid needing a dummy row of 0s\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic stbi_uc first_row_filter[5] =\n{\n   STBI__F_none,\n   STBI__F_sub,\n   STBI__F_none,\n   STBI__F_avg_first,\n   STBI__F_paeth_first\n};\n\nstatic int stbi__paeth(int a, int b, int c)\n{\n   int p = a + b - c;\n   int pa = abs(p-a);\n   int pb = abs(p-b);\n   int pc = abs(p-c);\n   if (pa <= pb && pa <= pc) return a;\n   if (pb <= pc) return b;\n   return c;\n}\n\nstatic const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 };\n\n// create the png data from post-deflated data\nstatic int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color)\n{\n   int bytes = (depth == 16? 2 : 1);\n   stbi__context *s = a->s;\n   stbi__uint32 i,j,stride = x*out_n*bytes;\n   stbi__uint32 img_len, img_width_bytes;\n   int k;\n   int img_n = s->img_n; // copy it into a local for later\n\n   int output_bytes = out_n*bytes;\n   int filter_bytes = img_n*bytes;\n   int width = x;\n\n   STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1);\n   a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into\n   if (!a->out) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err(\"too large\", \"Corrupt PNG\");\n   img_width_bytes = (((img_n * x * depth) + 7) >> 3);\n   img_len = (img_width_bytes + 1) * y;\n\n   // we used to check for exact match between raw_len and img_len on non-interlaced PNGs,\n   // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros),\n   // so just check for raw_len < img_len always.\n   if (raw_len < img_len) return stbi__err(\"not enough pixels\",\"Corrupt PNG\");\n\n   for (j=0; j < y; ++j) {\n      stbi_uc *cur = a->out + stride*j;\n      stbi_uc *prior;\n      int filter = *raw++;\n\n      if (filter > 4)\n         return stbi__err(\"invalid filter\",\"Corrupt PNG\");\n\n      if (depth < 8) {\n         if (img_width_bytes > x) return stbi__err(\"invalid width\",\"Corrupt PNG\");\n         cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place\n         filter_bytes = 1;\n         width = img_width_bytes;\n      }\n      prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above\n\n      // if first row, use special filter that doesn't sample previous row\n      if (j == 0) filter = first_row_filter[filter];\n\n      // handle first byte explicitly\n      for (k=0; k < filter_bytes; ++k) {\n         switch (filter) {\n            case STBI__F_none       : cur[k] = raw[k]; break;\n            case STBI__F_sub        : cur[k] = raw[k]; break;\n            case STBI__F_up         : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break;\n            case STBI__F_avg        : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break;\n            case STBI__F_paeth      : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break;\n            case STBI__F_avg_first  : cur[k] = raw[k]; break;\n            case STBI__F_paeth_first: cur[k] = raw[k]; break;\n         }\n      }\n\n      if (depth == 8) {\n         if (img_n != out_n)\n            cur[img_n] = 255; // first pixel\n         raw += img_n;\n         cur += out_n;\n         prior += out_n;\n      } else if (depth == 16) {\n         if (img_n != out_n) {\n            cur[filter_bytes]   = 255; // first pixel top byte\n            cur[filter_bytes+1] = 255; // first pixel bottom byte\n         }\n         raw += filter_bytes;\n         cur += output_bytes;\n         prior += output_bytes;\n      } else {\n         raw += 1;\n         cur += 1;\n         prior += 1;\n      }\n\n      // this is a little gross, so that we don't switch per-pixel or per-component\n      if (depth < 8 || img_n == out_n) {\n         int nk = (width - 1)*filter_bytes;\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (k=0; k < nk; ++k)\n         switch (filter) {\n            // \"none\" filter turns into a memcpy here; make that explicit.\n            case STBI__F_none:         memcpy(cur, raw, nk); break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n         raw += nk;\n      } else {\n         STBI_ASSERT(img_n+1 == out_n);\n         #define STBI__CASE(f) \\\n             case f:     \\\n                for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \\\n                   for (k=0; k < filter_bytes; ++k)\n         switch (filter) {\n            STBI__CASE(STBI__F_none)         { cur[k] = raw[k]; } break;\n            STBI__CASE(STBI__F_sub)          { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break;\n            STBI__CASE(STBI__F_up)           { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break;\n            STBI__CASE(STBI__F_avg)          { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break;\n            STBI__CASE(STBI__F_paeth)        { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break;\n            STBI__CASE(STBI__F_avg_first)    { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break;\n            STBI__CASE(STBI__F_paeth_first)  { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break;\n         }\n         #undef STBI__CASE\n\n         // the loop above sets the high byte of the pixels' alpha, but for\n         // 16 bit png files we also need the low byte set. we'll do that here.\n         if (depth == 16) {\n            cur = a->out + stride*j; // start at the beginning of the row again\n            for (i=0; i < x; ++i,cur+=output_bytes) {\n               cur[filter_bytes+1] = 255;\n            }\n         }\n      }\n   }\n\n   // we make a separate pass to expand bits to pixels; for performance,\n   // this could run two scanlines behind the above code, so it won't\n   // intefere with filtering but will still be in the cache.\n   if (depth < 8) {\n      for (j=0; j < y; ++j) {\n         stbi_uc *cur = a->out + stride*j;\n         stbi_uc *in  = a->out + stride*j + x*out_n - img_width_bytes;\n         // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit\n         // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop\n         stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range\n\n         // note that the final byte might overshoot and write more data than desired.\n         // we can allocate enough data that this never writes out of memory, but it\n         // could also overwrite the next scanline. can it overwrite non-empty data\n         // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel.\n         // so we need to explicitly clamp the final ones\n\n         if (depth == 4) {\n            for (k=x*img_n; k >= 2; k-=2, ++in) {\n               *cur++ = scale * ((*in >> 4)       );\n               *cur++ = scale * ((*in     ) & 0x0f);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 4)       );\n         } else if (depth == 2) {\n            for (k=x*img_n; k >= 4; k-=4, ++in) {\n               *cur++ = scale * ((*in >> 6)       );\n               *cur++ = scale * ((*in >> 4) & 0x03);\n               *cur++ = scale * ((*in >> 2) & 0x03);\n               *cur++ = scale * ((*in     ) & 0x03);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 6)       );\n            if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03);\n            if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03);\n         } else if (depth == 1) {\n            for (k=x*img_n; k >= 8; k-=8, ++in) {\n               *cur++ = scale * ((*in >> 7)       );\n               *cur++ = scale * ((*in >> 6) & 0x01);\n               *cur++ = scale * ((*in >> 5) & 0x01);\n               *cur++ = scale * ((*in >> 4) & 0x01);\n               *cur++ = scale * ((*in >> 3) & 0x01);\n               *cur++ = scale * ((*in >> 2) & 0x01);\n               *cur++ = scale * ((*in >> 1) & 0x01);\n               *cur++ = scale * ((*in     ) & 0x01);\n            }\n            if (k > 0) *cur++ = scale * ((*in >> 7)       );\n            if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01);\n            if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01);\n            if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01);\n            if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01);\n            if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01);\n            if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01);\n         }\n         if (img_n != out_n) {\n            int q;\n            // insert alpha = 255\n            cur = a->out + stride*j;\n            if (img_n == 1) {\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*2+1] = 255;\n                  cur[q*2+0] = cur[q];\n               }\n            } else {\n               STBI_ASSERT(img_n == 3);\n               for (q=x-1; q >= 0; --q) {\n                  cur[q*4+3] = 255;\n                  cur[q*4+2] = cur[q*3+2];\n                  cur[q*4+1] = cur[q*3+1];\n                  cur[q*4+0] = cur[q*3+0];\n               }\n            }\n         }\n      }\n   } else if (depth == 16) {\n      // force the image data from big-endian to platform-native.\n      // this is done in a separate pass due to the decoding relying\n      // on the data being untouched, but could probably be done\n      // per-line during decode if care is taken.\n      stbi_uc *cur = a->out;\n      stbi__uint16 *cur16 = (stbi__uint16*)cur;\n\n      for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) {\n         *cur16 = (cur[0] << 8) | cur[1];\n      }\n   }\n\n   return 1;\n}\n\nstatic int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced)\n{\n   int bytes = (depth == 16 ? 2 : 1);\n   int out_bytes = out_n * bytes;\n   stbi_uc *final;\n   int p;\n   if (!interlaced)\n      return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color);\n\n   // de-interlacing\n   final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0);\n   for (p=0; p < 7; ++p) {\n      int xorig[] = { 0,4,0,2,0,1,0 };\n      int yorig[] = { 0,0,4,0,2,0,1 };\n      int xspc[]  = { 8,8,4,4,2,2,1 };\n      int yspc[]  = { 8,8,8,4,4,2,2 };\n      int i,j,x,y;\n      // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1\n      x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p];\n      y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p];\n      if (x && y) {\n         stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y;\n         if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) {\n            STBI_FREE(final);\n            return 0;\n         }\n         for (j=0; j < y; ++j) {\n            for (i=0; i < x; ++i) {\n               int out_y = j*yspc[p]+yorig[p];\n               int out_x = i*xspc[p]+xorig[p];\n               memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes,\n                      a->out + (j*x+i)*out_bytes, out_bytes);\n            }\n         }\n         STBI_FREE(a->out);\n         image_data += img_len;\n         image_data_len -= img_len;\n      }\n   }\n   a->out = final;\n\n   return 1;\n}\n\nstatic int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 255 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i=0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 255);\n         p += 2;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi__uint16 *p = (stbi__uint16*) z->out;\n\n   // compute color-based transparency, assuming we've\n   // already got 65535 as the alpha value in the output\n   STBI_ASSERT(out_n == 2 || out_n == 4);\n\n   if (out_n == 2) {\n      for (i = 0; i < pixel_count; ++i) {\n         p[1] = (p[0] == tc[0] ? 0 : 65535);\n         p += 2;\n      }\n   } else {\n      for (i = 0; i < pixel_count; ++i) {\n         if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2])\n            p[3] = 0;\n         p += 4;\n      }\n   }\n   return 1;\n}\n\nstatic int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n)\n{\n   stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y;\n   stbi_uc *p, *temp_out, *orig = a->out;\n\n   p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0);\n   if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n\n   // between here and free(out) below, exitting would leak\n   temp_out = p;\n\n   if (pal_img_n == 3) {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p += 3;\n      }\n   } else {\n      for (i=0; i < pixel_count; ++i) {\n         int n = orig[i]*4;\n         p[0] = palette[n  ];\n         p[1] = palette[n+1];\n         p[2] = palette[n+2];\n         p[3] = palette[n+3];\n         p += 4;\n      }\n   }\n   STBI_FREE(a->out);\n   a->out = temp_out;\n\n   STBI_NOTUSED(len);\n\n   return 1;\n}\n\nstatic int stbi__unpremultiply_on_load = 0;\nstatic int stbi__de_iphone_flag = 0;\n\nSTBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply)\n{\n   stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply;\n}\n\nSTBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert)\n{\n   stbi__de_iphone_flag = flag_true_if_should_convert;\n}\n\nstatic void stbi__de_iphone(stbi__png *z)\n{\n   stbi__context *s = z->s;\n   stbi__uint32 i, pixel_count = s->img_x * s->img_y;\n   stbi_uc *p = z->out;\n\n   if (s->img_out_n == 3) {  // convert bgr to rgb\n      for (i=0; i < pixel_count; ++i) {\n         stbi_uc t = p[0];\n         p[0] = p[2];\n         p[2] = t;\n         p += 3;\n      }\n   } else {\n      STBI_ASSERT(s->img_out_n == 4);\n      if (stbi__unpremultiply_on_load) {\n         // convert bgr to rgb and unpremultiply\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc a = p[3];\n            stbi_uc t = p[0];\n            if (a) {\n               stbi_uc half = a / 2;\n               p[0] = (p[2] * 255 + half) / a;\n               p[1] = (p[1] * 255 + half) / a;\n               p[2] = ( t   * 255 + half) / a;\n            } else {\n               p[0] = p[2];\n               p[2] = t;\n            }\n            p += 4;\n         }\n      } else {\n         // convert bgr to rgb\n         for (i=0; i < pixel_count; ++i) {\n            stbi_uc t = p[0];\n            p[0] = p[2];\n            p[2] = t;\n            p += 4;\n         }\n      }\n   }\n}\n\n#define STBI__PNG_TYPE(a,b,c,d)  (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d))\n\nstatic int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)\n{\n   stbi_uc palette[1024], pal_img_n=0;\n   stbi_uc has_trans=0, tc[3]={0};\n   stbi__uint16 tc16[3];\n   stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0;\n   int first=1,k,interlace=0, color=0, is_iphone=0;\n   stbi__context *s = z->s;\n\n   z->expanded = NULL;\n   z->idata = NULL;\n   z->out = NULL;\n\n   if (!stbi__check_png_header(s)) return 0;\n\n   if (scan == STBI__SCAN_type) return 1;\n\n   for (;;) {\n      stbi__pngchunk c = stbi__get_chunk_header(s);\n      switch (c.type) {\n         case STBI__PNG_TYPE('C','g','B','I'):\n            is_iphone = 1;\n            stbi__skip(s, c.length);\n            break;\n         case STBI__PNG_TYPE('I','H','D','R'): {\n            int comp,filter;\n            if (!first) return stbi__err(\"multiple IHDR\",\"Corrupt PNG\");\n            first = 0;\n            if (c.length != 13) return stbi__err(\"bad IHDR len\",\"Corrupt PNG\");\n            s->img_x = stbi__get32be(s);\n            s->img_y = stbi__get32be(s);\n            if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n            z->depth = stbi__get8(s);  if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16)  return stbi__err(\"1/2/4/8/16-bit only\",\"PNG not supported: 1/2/4/8/16-bit only\");\n            color = stbi__get8(s);  if (color > 6)         return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3 && z->depth == 16)                  return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err(\"bad ctype\",\"Corrupt PNG\");\n            comp  = stbi__get8(s);  if (comp) return stbi__err(\"bad comp method\",\"Corrupt PNG\");\n            filter= stbi__get8(s);  if (filter) return stbi__err(\"bad filter method\",\"Corrupt PNG\");\n            interlace = stbi__get8(s); if (interlace>1) return stbi__err(\"bad interlace method\",\"Corrupt PNG\");\n            if (!s->img_x || !s->img_y) return stbi__err(\"0-pixel image\",\"Corrupt PNG\");\n            if (!pal_img_n) {\n               s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0);\n               if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err(\"too large\", \"Image too large to decode\");\n               if (scan == STBI__SCAN_header) return 1;\n            } else {\n               // if paletted, then pal_n is our final components, and\n               // img_n is # components to decompress/filter.\n               s->img_n = 1;\n               if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err(\"too large\",\"Corrupt PNG\");\n               // if SCAN_header, have to scan to see if we have a tRNS\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('P','L','T','E'):  {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (c.length > 256*3) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            pal_len = c.length / 3;\n            if (pal_len * 3 != c.length) return stbi__err(\"invalid PLTE\",\"Corrupt PNG\");\n            for (i=0; i < pal_len; ++i) {\n               palette[i*4+0] = stbi__get8(s);\n               palette[i*4+1] = stbi__get8(s);\n               palette[i*4+2] = stbi__get8(s);\n               palette[i*4+3] = 255;\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('t','R','N','S'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (z->idata) return stbi__err(\"tRNS after IDAT\",\"Corrupt PNG\");\n            if (pal_img_n) {\n               if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; }\n               if (pal_len == 0) return stbi__err(\"tRNS before PLTE\",\"Corrupt PNG\");\n               if (c.length > pal_len) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               pal_img_n = 4;\n               for (i=0; i < c.length; ++i)\n                  palette[i*4+3] = stbi__get8(s);\n            } else {\n               if (!(s->img_n & 1)) return stbi__err(\"tRNS with alpha\",\"Corrupt PNG\");\n               if (c.length != (stbi__uint32) s->img_n*2) return stbi__err(\"bad tRNS len\",\"Corrupt PNG\");\n               has_trans = 1;\n               if (z->depth == 16) {\n                  for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is\n               } else {\n                  for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger\n               }\n            }\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','D','A','T'): {\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (pal_img_n && !pal_len) return stbi__err(\"no PLTE\",\"Corrupt PNG\");\n            if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; }\n            if ((int)(ioff + c.length) < (int)ioff) return 0;\n            if (ioff + c.length > idata_limit) {\n               stbi__uint32 idata_limit_old = idata_limit;\n               stbi_uc *p;\n               if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096;\n               while (ioff + c.length > idata_limit)\n                  idata_limit *= 2;\n               STBI_NOTUSED(idata_limit_old);\n               p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err(\"outofmem\", \"Out of memory\");\n               z->idata = p;\n            }\n            if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err(\"outofdata\",\"Corrupt PNG\");\n            ioff += c.length;\n            break;\n         }\n\n         case STBI__PNG_TYPE('I','E','N','D'): {\n            stbi__uint32 raw_len, bpl;\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if (scan != STBI__SCAN_load) return 1;\n            if (z->idata == NULL) return stbi__err(\"no IDAT\",\"Corrupt PNG\");\n            // initial guess for decoded data size to avoid unnecessary reallocs\n            bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component\n            raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */;\n            z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone);\n            if (z->expanded == NULL) return 0; // zlib should set error\n            STBI_FREE(z->idata); z->idata = NULL;\n            if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans)\n               s->img_out_n = s->img_n+1;\n            else\n               s->img_out_n = s->img_n;\n            if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0;\n            if (has_trans) {\n               if (z->depth == 16) {\n                  if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0;\n               } else {\n                  if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0;\n               }\n            }\n            if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2)\n               stbi__de_iphone(z);\n            if (pal_img_n) {\n               // pal_img_n == 3 or 4\n               s->img_n = pal_img_n; // record the actual colors we had\n               s->img_out_n = pal_img_n;\n               if (req_comp >= 3) s->img_out_n = req_comp;\n               if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n))\n                  return 0;\n            } else if (has_trans) {\n               // non-paletted image with tRNS -> source image has (constant) alpha\n               ++s->img_n;\n            }\n            STBI_FREE(z->expanded); z->expanded = NULL;\n            // end of PNG chunk, read and skip CRC\n            stbi__get32be(s);\n            return 1;\n         }\n\n         default:\n            // if critical, fail\n            if (first) return stbi__err(\"first not IHDR\", \"Corrupt PNG\");\n            if ((c.type & (1 << 29)) == 0) {\n               #ifndef STBI_NO_FAILURE_STRINGS\n               // not threadsafe\n               static char invalid_chunk[] = \"XXXX PNG chunk not known\";\n               invalid_chunk[0] = STBI__BYTECAST(c.type >> 24);\n               invalid_chunk[1] = STBI__BYTECAST(c.type >> 16);\n               invalid_chunk[2] = STBI__BYTECAST(c.type >>  8);\n               invalid_chunk[3] = STBI__BYTECAST(c.type >>  0);\n               #endif\n               return stbi__err(invalid_chunk, \"PNG not supported: unknown PNG chunk type\");\n            }\n            stbi__skip(s, c.length);\n            break;\n      }\n      // end of PNG chunk, read and skip CRC\n      stbi__get32be(s);\n   }\n}\n\nstatic void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri)\n{\n   void *result=NULL;\n   if (req_comp < 0 || req_comp > 4) return stbi__errpuc(\"bad req_comp\", \"Internal error\");\n   if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) {\n      if (p->depth <= 8)\n         ri->bits_per_channel = 8;\n      else if (p->depth == 16)\n         ri->bits_per_channel = 16;\n      else\n         return stbi__errpuc(\"bad bits_per_channel\", \"PNG not supported: unsupported color depth\");\n      result = p->out;\n      p->out = NULL;\n      if (req_comp && req_comp != p->s->img_out_n) {\n         if (ri->bits_per_channel == 8)\n            result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         else\n            result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y);\n         p->s->img_out_n = req_comp;\n         if (result == NULL) return result;\n      }\n      *x = p->s->img_x;\n      *y = p->s->img_y;\n      if (n) *n = p->s->img_n;\n   }\n   STBI_FREE(p->out);      p->out      = NULL;\n   STBI_FREE(p->expanded); p->expanded = NULL;\n   STBI_FREE(p->idata);    p->idata    = NULL;\n\n   return result;\n}\n\nstatic void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__do_png(&p, x,y,comp,req_comp, ri);\n}\n\nstatic int stbi__png_test(stbi__context *s)\n{\n   int r;\n   r = stbi__check_png_header(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)\n{\n   if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) {\n      stbi__rewind( p->s );\n      return 0;\n   }\n   if (x) *x = p->s->img_x;\n   if (y) *y = p->s->img_y;\n   if (comp) *comp = p->s->img_n;\n   return 1;\n}\n\nstatic int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__png p;\n   p.s = s;\n   return stbi__png_info_raw(&p, x, y, comp);\n}\n\nstatic int stbi__png_is16(stbi__context *s)\n{\n   stbi__png p;\n   p.s = s;\n   if (!stbi__png_info_raw(&p, NULL, NULL, NULL))\n\t   return 0;\n   if (p.depth != 16) {\n      stbi__rewind(p.s);\n      return 0;\n   }\n   return 1;\n}\n#endif\n\n// Microsoft/Windows BMP image\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_test_raw(stbi__context *s)\n{\n   int r;\n   int sz;\n   if (stbi__get8(s) != 'B') return 0;\n   if (stbi__get8(s) != 'M') return 0;\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   stbi__get32le(s); // discard data offset\n   sz = stbi__get32le(s);\n   r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124);\n   return r;\n}\n\nstatic int stbi__bmp_test(stbi__context *s)\n{\n   int r = stbi__bmp_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\n\n// returns 0..31 for the highest set bit\nstatic int stbi__high_bit(unsigned int z)\n{\n   int n=0;\n   if (z == 0) return -1;\n   if (z >= 0x10000) { n += 16; z >>= 16; }\n   if (z >= 0x00100) { n +=  8; z >>=  8; }\n   if (z >= 0x00010) { n +=  4; z >>=  4; }\n   if (z >= 0x00004) { n +=  2; z >>=  2; }\n   if (z >= 0x00002) { n +=  1;/* >>=  1;*/ }\n   return n;\n}\n\nstatic int stbi__bitcount(unsigned int a)\n{\n   a = (a & 0x55555555) + ((a >>  1) & 0x55555555); // max 2\n   a = (a & 0x33333333) + ((a >>  2) & 0x33333333); // max 4\n   a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits\n   a = (a + (a >> 8)); // max 16 per 8 bits\n   a = (a + (a >> 16)); // max 32 per 8 bits\n   return a & 0xff;\n}\n\n// extract an arbitrarily-aligned N-bit value (N=bits)\n// from v, and then make it 8-bits long and fractionally\n// extend it to full full range.\nstatic int stbi__shiftsigned(unsigned int v, int shift, int bits)\n{\n   static unsigned int mul_table[9] = {\n      0,\n      0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/,\n      0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/,\n   };\n   static unsigned int shift_table[9] = {\n      0, 0,0,1,0,2,4,6,0,\n   };\n   if (shift < 0)\n      v <<= -shift;\n   else\n      v >>= shift;\n   STBI_ASSERT(v < 256);\n   v >>= (8-bits);\n   STBI_ASSERT(bits >= 0 && bits <= 8);\n   return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits];\n}\n\ntypedef struct\n{\n   int bpp, offset, hsz;\n   unsigned int mr,mg,mb,ma, all_a;\n   int extra_read;\n} stbi__bmp_data;\n\nstatic void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info)\n{\n   int hsz;\n   if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc(\"not BMP\", \"Corrupt BMP\");\n   stbi__get32le(s); // discard filesize\n   stbi__get16le(s); // discard reserved\n   stbi__get16le(s); // discard reserved\n   info->offset = stbi__get32le(s);\n   info->hsz = hsz = stbi__get32le(s);\n   info->mr = info->mg = info->mb = info->ma = 0;\n   info->extra_read = 14;\n\n   if (info->offset < 0) return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n\n   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc(\"unknown BMP\", \"BMP type not supported: unknown\");\n   if (hsz == 12) {\n      s->img_x = stbi__get16le(s);\n      s->img_y = stbi__get16le(s);\n   } else {\n      s->img_x = stbi__get32le(s);\n      s->img_y = stbi__get32le(s);\n   }\n   if (stbi__get16le(s) != 1) return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n   info->bpp = stbi__get16le(s);\n   if (hsz != 12) {\n      int compress = stbi__get32le(s);\n      if (compress == 1 || compress == 2) return stbi__errpuc(\"BMP RLE\", \"BMP type not supported: RLE\");\n      stbi__get32le(s); // discard sizeof\n      stbi__get32le(s); // discard hres\n      stbi__get32le(s); // discard vres\n      stbi__get32le(s); // discard colorsused\n      stbi__get32le(s); // discard max important\n      if (hsz == 40 || hsz == 56) {\n         if (hsz == 56) {\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n            stbi__get32le(s);\n         }\n         if (info->bpp == 16 || info->bpp == 32) {\n            if (compress == 0) {\n               if (info->bpp == 32) {\n                  info->mr = 0xffu << 16;\n                  info->mg = 0xffu <<  8;\n                  info->mb = 0xffu <<  0;\n                  info->ma = 0xffu << 24;\n                  info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0\n               } else {\n                  info->mr = 31u << 10;\n                  info->mg = 31u <<  5;\n                  info->mb = 31u <<  0;\n               }\n            } else if (compress == 3) {\n               info->mr = stbi__get32le(s);\n               info->mg = stbi__get32le(s);\n               info->mb = stbi__get32le(s);\n               info->extra_read += 12;\n               // not documented, but generated by photoshop and handled by mspaint\n               if (info->mr == info->mg && info->mg == info->mb) {\n                  // ?!?!?\n                  return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n               }\n            } else\n               return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         }\n      } else {\n         int i;\n         if (hsz != 108 && hsz != 124)\n            return stbi__errpuc(\"bad BMP\", \"bad BMP\");\n         info->mr = stbi__get32le(s);\n         info->mg = stbi__get32le(s);\n         info->mb = stbi__get32le(s);\n         info->ma = stbi__get32le(s);\n         stbi__get32le(s); // discard color space\n         for (i=0; i < 12; ++i)\n            stbi__get32le(s); // discard color space parameters\n         if (hsz == 124) {\n            stbi__get32le(s); // discard rendering intent\n            stbi__get32le(s); // discard offset of profile data\n            stbi__get32le(s); // discard size of profile data\n            stbi__get32le(s); // discard reserved\n         }\n      }\n   }\n   return (void *) 1;\n}\n\n\nstatic void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   unsigned int mr=0,mg=0,mb=0,ma=0, all_a;\n   stbi_uc pal[256][4];\n   int psize=0,i,j,width;\n   int flip_vertically, pad, target;\n   stbi__bmp_data info;\n   STBI_NOTUSED(ri);\n\n   info.all_a = 255;\n   if (stbi__bmp_parse_header(s, &info) == NULL)\n      return NULL; // error code already set\n\n   flip_vertically = ((int) s->img_y) > 0;\n   s->img_y = abs((int) s->img_y);\n\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   mr = info.mr;\n   mg = info.mg;\n   mb = info.mb;\n   ma = info.ma;\n   all_a = info.all_a;\n\n   if (info.hsz == 12) {\n      if (info.bpp < 24)\n         psize = (info.offset - info.extra_read - 24) / 3;\n   } else {\n      if (info.bpp < 16)\n         psize = (info.offset - info.extra_read - info.hsz) >> 2;\n   }\n   if (psize == 0) {\n      STBI_ASSERT(info.offset == s->callback_already_read + (int) (s->img_buffer - s->img_buffer_original));\n      if (info.offset != s->callback_already_read + (s->img_buffer - s->buffer_start)) {\n        return stbi__errpuc(\"bad offset\", \"Corrupt BMP\");\n      }\n   }\n\n   if (info.bpp == 24 && ma == 0xff000000)\n      s->img_n = 3;\n   else\n      s->img_n = ma ? 4 : 3;\n   if (req_comp && req_comp >= 3) // we can directly decode 3 or 4\n      target = req_comp;\n   else\n      target = s->img_n; // if they want monochrome, we'll post-convert\n\n   // sanity-check size\n   if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt BMP\");\n\n   out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   if (info.bpp < 16) {\n      int z=0;\n      if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc(\"invalid\", \"Corrupt BMP\"); }\n      for (i=0; i < psize; ++i) {\n         pal[i][2] = stbi__get8(s);\n         pal[i][1] = stbi__get8(s);\n         pal[i][0] = stbi__get8(s);\n         if (info.hsz != 12) stbi__get8(s);\n         pal[i][3] = 255;\n      }\n      stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4));\n      if (info.bpp == 1) width = (s->img_x + 7) >> 3;\n      else if (info.bpp == 4) width = (s->img_x + 1) >> 1;\n      else if (info.bpp == 8) width = s->img_x;\n      else { STBI_FREE(out); return stbi__errpuc(\"bad bpp\", \"Corrupt BMP\"); }\n      pad = (-width)&3;\n      if (info.bpp == 1) {\n         for (j=0; j < (int) s->img_y; ++j) {\n            int bit_offset = 7, v = stbi__get8(s);\n            for (i=0; i < (int) s->img_x; ++i) {\n               int color = (v>>bit_offset)&0x1;\n               out[z++] = pal[color][0];\n               out[z++] = pal[color][1];\n               out[z++] = pal[color][2];\n               if (target == 4) out[z++] = 255;\n               if (i+1 == (int) s->img_x) break;\n               if((--bit_offset) < 0) {\n                  bit_offset = 7;\n                  v = stbi__get8(s);\n               }\n            }\n            stbi__skip(s, pad);\n         }\n      } else {\n         for (j=0; j < (int) s->img_y; ++j) {\n            for (i=0; i < (int) s->img_x; i += 2) {\n               int v=stbi__get8(s),v2=0;\n               if (info.bpp == 4) {\n                  v2 = v & 15;\n                  v >>= 4;\n               }\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n               if (i+1 == (int) s->img_x) break;\n               v = (info.bpp == 8) ? stbi__get8(s) : v2;\n               out[z++] = pal[v][0];\n               out[z++] = pal[v][1];\n               out[z++] = pal[v][2];\n               if (target == 4) out[z++] = 255;\n            }\n            stbi__skip(s, pad);\n         }\n      }\n   } else {\n      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0;\n      int z = 0;\n      int easy=0;\n      stbi__skip(s, info.offset - info.extra_read - info.hsz);\n      if (info.bpp == 24) width = 3 * s->img_x;\n      else if (info.bpp == 16) width = 2*s->img_x;\n      else /* bpp = 32 and pad = 0 */ width=0;\n      pad = (-width) & 3;\n      if (info.bpp == 24) {\n         easy = 1;\n      } else if (info.bpp == 32) {\n         if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000)\n            easy = 2;\n      }\n      if (!easy) {\n         if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc(\"bad masks\", \"Corrupt BMP\"); }\n         // right shift amt to put high bit in position #7\n         rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr);\n         gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg);\n         bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb);\n         ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma);\n         if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc(\"bad masks\", \"Corrupt BMP\"); }\n      }\n      for (j=0; j < (int) s->img_y; ++j) {\n         if (easy) {\n            for (i=0; i < (int) s->img_x; ++i) {\n               unsigned char a;\n               out[z+2] = stbi__get8(s);\n               out[z+1] = stbi__get8(s);\n               out[z+0] = stbi__get8(s);\n               z += 3;\n               a = (easy == 2 ? stbi__get8(s) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = a;\n            }\n         } else {\n            int bpp = info.bpp;\n            for (i=0; i < (int) s->img_x; ++i) {\n               stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s));\n               unsigned int a;\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount));\n               out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount));\n               a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255);\n               all_a |= a;\n               if (target == 4) out[z++] = STBI__BYTECAST(a);\n            }\n         }\n         stbi__skip(s, pad);\n      }\n   }\n\n   // if alpha channel is all 0s, replace with all 255s\n   if (target == 4 && all_a == 0)\n      for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4)\n         out[i] = 255;\n\n   if (flip_vertically) {\n      stbi_uc t;\n      for (j=0; j < (int) s->img_y>>1; ++j) {\n         stbi_uc *p1 = out +      j     *s->img_x*target;\n         stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target;\n         for (i=0; i < (int) s->img_x*target; ++i) {\n            t = p1[i]; p1[i] = p2[i]; p2[i] = t;\n         }\n      }\n   }\n\n   if (req_comp && req_comp != target) {\n      out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n   return out;\n}\n#endif\n\n// Targa Truevision - TGA\n// by Jonathan Dummer\n#ifndef STBI_NO_TGA\n// returns STBI_rgb or whatever, 0 on error\nstatic int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16)\n{\n   // only RGB or RGBA (incl. 16bit) or grey allowed\n   if (is_rgb16) *is_rgb16 = 0;\n   switch(bits_per_pixel) {\n      case 8:  return STBI_grey;\n      case 16: if(is_grey) return STBI_grey_alpha;\n               // fallthrough\n      case 15: if(is_rgb16) *is_rgb16 = 1;\n               return STBI_rgb;\n      case 24: // fallthrough\n      case 32: return bits_per_pixel/8;\n      default: return 0;\n   }\n}\n\nstatic int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)\n{\n    int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp;\n    int sz, tga_colormap_type;\n    stbi__get8(s);                   // discard Offset\n    tga_colormap_type = stbi__get8(s); // colormap type\n    if( tga_colormap_type > 1 ) {\n        stbi__rewind(s);\n        return 0;      // only RGB or indexed allowed\n    }\n    tga_image_type = stbi__get8(s); // image type\n    if ( tga_colormap_type == 1 ) { // colormapped (paletted) image\n        if (tga_image_type != 1 && tga_image_type != 9) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n        sz = stbi__get8(s);    //   check bits per palette color entry\n        if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) {\n            stbi__rewind(s);\n            return 0;\n        }\n        stbi__skip(s,4);       // skip image x and y origin\n        tga_colormap_bpp = sz;\n    } else { // \"normal\" image w/o colormap - only RGB or grey allowed, +/- RLE\n        if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) {\n            stbi__rewind(s);\n            return 0; // only RGB or grey allowed, +/- RLE\n        }\n        stbi__skip(s,9); // skip colormap specification and image x/y origin\n        tga_colormap_bpp = 0;\n    }\n    tga_w = stbi__get16le(s);\n    if( tga_w < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test width\n    }\n    tga_h = stbi__get16le(s);\n    if( tga_h < 1 ) {\n        stbi__rewind(s);\n        return 0;   // test height\n    }\n    tga_bits_per_pixel = stbi__get8(s); // bits per pixel\n    stbi__get8(s); // ignore alpha bits\n    if (tga_colormap_bpp != 0) {\n        if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) {\n            // when using a colormap, tga_bits_per_pixel is the size of the indexes\n            // I don't think anything but 8 or 16bit indexes makes sense\n            stbi__rewind(s);\n            return 0;\n        }\n        tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL);\n    } else {\n        tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL);\n    }\n    if(!tga_comp) {\n      stbi__rewind(s);\n      return 0;\n    }\n    if (x) *x = tga_w;\n    if (y) *y = tga_h;\n    if (comp) *comp = tga_comp;\n    return 1;                   // seems to have passed everything\n}\n\nstatic int stbi__tga_test(stbi__context *s)\n{\n   int res = 0;\n   int sz, tga_color_type;\n   stbi__get8(s);      //   discard Offset\n   tga_color_type = stbi__get8(s);   //   color type\n   if ( tga_color_type > 1 ) goto errorEnd;   //   only RGB or indexed allowed\n   sz = stbi__get8(s);   //   image type\n   if ( tga_color_type == 1 ) { // colormapped (paletted) image\n      if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9\n      stbi__skip(s,4);       // skip index of first colormap entry and number of entries\n      sz = stbi__get8(s);    //   check bits per palette color entry\n      if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n      stbi__skip(s,4);       // skip image x and y origin\n   } else { // \"normal\" image w/o colormap\n      if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE\n      stbi__skip(s,9); // skip colormap specification and image x/y origin\n   }\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test width\n   if ( stbi__get16le(s) < 1 ) goto errorEnd;      //   test height\n   sz = stbi__get8(s);   //   bits per pixel\n   if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index\n   if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd;\n\n   res = 1; // if we got this far, everything's good and we can return 1 instead of 0\n\nerrorEnd:\n   stbi__rewind(s);\n   return res;\n}\n\n// read 16bit value and convert to 24bit RGB\nstatic void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out)\n{\n   stbi__uint16 px = (stbi__uint16)stbi__get16le(s);\n   stbi__uint16 fiveBitMask = 31;\n   // we have 3 channels with 5bits each\n   int r = (px >> 10) & fiveBitMask;\n   int g = (px >> 5) & fiveBitMask;\n   int b = px & fiveBitMask;\n   // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later\n   out[0] = (stbi_uc)((r * 255)/31);\n   out[1] = (stbi_uc)((g * 255)/31);\n   out[2] = (stbi_uc)((b * 255)/31);\n\n   // some people claim that the most significant bit might be used for alpha\n   // (possibly if an alpha-bit is set in the \"image descriptor byte\")\n   // but that only made 16bit test images completely translucent..\n   // so let's treat all 15 and 16bit TGAs as RGB with no alpha.\n}\n\nstatic void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   //   read in the TGA header stuff\n   int tga_offset = stbi__get8(s);\n   int tga_indexed = stbi__get8(s);\n   int tga_image_type = stbi__get8(s);\n   int tga_is_RLE = 0;\n   int tga_palette_start = stbi__get16le(s);\n   int tga_palette_len = stbi__get16le(s);\n   int tga_palette_bits = stbi__get8(s);\n   int tga_x_origin = stbi__get16le(s);\n   int tga_y_origin = stbi__get16le(s);\n   int tga_width = stbi__get16le(s);\n   int tga_height = stbi__get16le(s);\n   int tga_bits_per_pixel = stbi__get8(s);\n   int tga_comp, tga_rgb16=0;\n   int tga_inverted = stbi__get8(s);\n   // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?)\n   //   image data\n   unsigned char *tga_data;\n   unsigned char *tga_palette = NULL;\n   int i, j;\n   unsigned char raw_data[4] = {0};\n   int RLE_count = 0;\n   int RLE_repeating = 0;\n   int read_next_pixel = 1;\n   STBI_NOTUSED(ri);\n   STBI_NOTUSED(tga_x_origin); // @TODO\n   STBI_NOTUSED(tga_y_origin); // @TODO\n\n   if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   //   do a tiny bit of precessing\n   if ( tga_image_type >= 8 )\n   {\n      tga_image_type -= 8;\n      tga_is_RLE = 1;\n   }\n   tga_inverted = 1 - ((tga_inverted >> 5) & 1);\n\n   //   If I'm paletted, then I'll use the number of bits from the palette\n   if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16);\n   else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16);\n\n   if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency\n      return stbi__errpuc(\"bad format\", \"Can't find out TGA pixelformat\");\n\n   //   tga info\n   *x = tga_width;\n   *y = tga_height;\n   if (comp) *comp = tga_comp;\n\n   if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt TGA\");\n\n   tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0);\n   if (!tga_data) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n   // skip to the data's starting position (offset usually = 0)\n   stbi__skip(s, tga_offset );\n\n   if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) {\n      for (i=0; i < tga_height; ++i) {\n         int row = tga_inverted ? tga_height -i - 1 : i;\n         stbi_uc *tga_row = tga_data + row*tga_width*tga_comp;\n         stbi__getn(s, tga_row, tga_width * tga_comp);\n      }\n   } else  {\n      //   do I need to load a palette?\n      if ( tga_indexed)\n      {\n         if (tga_palette_len == 0) {  /* you have to have at least one entry! */\n            STBI_FREE(tga_data);\n            return stbi__errpuc(\"bad palette\", \"Corrupt TGA\");\n         }\n\n         //   any data to skip? (offset usually = 0)\n         stbi__skip(s, tga_palette_start );\n         //   load the palette\n         tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0);\n         if (!tga_palette) {\n            STBI_FREE(tga_data);\n            return stbi__errpuc(\"outofmem\", \"Out of memory\");\n         }\n         if (tga_rgb16) {\n            stbi_uc *pal_entry = tga_palette;\n            STBI_ASSERT(tga_comp == STBI_rgb);\n            for (i=0; i < tga_palette_len; ++i) {\n               stbi__tga_read_rgb16(s, pal_entry);\n               pal_entry += tga_comp;\n            }\n         } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) {\n               STBI_FREE(tga_data);\n               STBI_FREE(tga_palette);\n               return stbi__errpuc(\"bad palette\", \"Corrupt TGA\");\n         }\n      }\n      //   load the data\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         //   if I'm in RLE mode, do I need to get a RLE stbi__pngchunk?\n         if ( tga_is_RLE )\n         {\n            if ( RLE_count == 0 )\n            {\n               //   yep, get the next byte as a RLE command\n               int RLE_cmd = stbi__get8(s);\n               RLE_count = 1 + (RLE_cmd & 127);\n               RLE_repeating = RLE_cmd >> 7;\n               read_next_pixel = 1;\n            } else if ( !RLE_repeating )\n            {\n               read_next_pixel = 1;\n            }\n         } else\n         {\n            read_next_pixel = 1;\n         }\n         //   OK, if I need to read a pixel, do it now\n         if ( read_next_pixel )\n         {\n            //   load however much data we did have\n            if ( tga_indexed )\n            {\n               // read in index, then perform the lookup\n               int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s);\n               if ( pal_idx >= tga_palette_len ) {\n                  // invalid index\n                  pal_idx = 0;\n               }\n               pal_idx *= tga_comp;\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = tga_palette[pal_idx+j];\n               }\n            } else if(tga_rgb16) {\n               STBI_ASSERT(tga_comp == STBI_rgb);\n               stbi__tga_read_rgb16(s, raw_data);\n            } else {\n               //   read in the data raw\n               for (j = 0; j < tga_comp; ++j) {\n                  raw_data[j] = stbi__get8(s);\n               }\n            }\n            //   clear the reading flag for the next pixel\n            read_next_pixel = 0;\n         } // end of reading a pixel\n\n         // copy data\n         for (j = 0; j < tga_comp; ++j)\n           tga_data[i*tga_comp+j] = raw_data[j];\n\n         //   in case we're in RLE mode, keep counting down\n         --RLE_count;\n      }\n      //   do I need to invert the image?\n      if ( tga_inverted )\n      {\n         for (j = 0; j*2 < tga_height; ++j)\n         {\n            int index1 = j * tga_width * tga_comp;\n            int index2 = (tga_height - 1 - j) * tga_width * tga_comp;\n            for (i = tga_width * tga_comp; i > 0; --i)\n            {\n               unsigned char temp = tga_data[index1];\n               tga_data[index1] = tga_data[index2];\n               tga_data[index2] = temp;\n               ++index1;\n               ++index2;\n            }\n         }\n      }\n      //   clear my palette, if I had one\n      if ( tga_palette != NULL )\n      {\n         STBI_FREE( tga_palette );\n      }\n   }\n\n   // swap RGB - if the source data was RGB16, it already is in the right order\n   if (tga_comp >= 3 && !tga_rgb16)\n   {\n      unsigned char* tga_pixel = tga_data;\n      for (i=0; i < tga_width * tga_height; ++i)\n      {\n         unsigned char temp = tga_pixel[0];\n         tga_pixel[0] = tga_pixel[2];\n         tga_pixel[2] = temp;\n         tga_pixel += tga_comp;\n      }\n   }\n\n   // convert to target component count\n   if (req_comp && req_comp != tga_comp)\n      tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height);\n\n   //   the things I do to get rid of an error message, and yet keep\n   //   Microsoft's C compilers happy... [8^(\n   tga_palette_start = tga_palette_len = tga_palette_bits =\n         tga_x_origin = tga_y_origin = 0;\n   STBI_NOTUSED(tga_palette_start);\n   //   OK, done\n   return tga_data;\n}\n#endif\n\n// *************************************************************************************************\n// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_test(stbi__context *s)\n{\n   int r = (stbi__get32be(s) == 0x38425053);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount)\n{\n   int count, nleft, len;\n\n   count = 0;\n   while ((nleft = pixelCount - count) > 0) {\n      len = stbi__get8(s);\n      if (len == 128) {\n         // No-op.\n      } else if (len < 128) {\n         // Copy next len+1 bytes literally.\n         len++;\n         if (len > nleft) return 0; // corrupt data\n         count += len;\n         while (len) {\n            *p = stbi__get8(s);\n            p += 4;\n            len--;\n         }\n      } else if (len > 128) {\n         stbi_uc   val;\n         // Next -len+1 bytes in the dest are replicated from next source byte.\n         // (Interpret len as a negative 8-bit int.)\n         len = 257 - len;\n         if (len > nleft) return 0; // corrupt data\n         val = stbi__get8(s);\n         count += len;\n         while (len) {\n            *p = val;\n            p += 4;\n            len--;\n         }\n      }\n   }\n\n   return 1;\n}\n\nstatic void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc)\n{\n   int pixelCount;\n   int channelCount, compression;\n   int channel, i;\n   int bitdepth;\n   int w,h;\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   if (stbi__get32be(s) != 0x38425053)   // \"8BPS\"\n      return stbi__errpuc(\"not PSD\", \"Corrupt PSD image\");\n\n   // Check file type version.\n   if (stbi__get16be(s) != 1)\n      return stbi__errpuc(\"wrong version\", \"Unsupported version of PSD image\");\n\n   // Skip 6 reserved bytes.\n   stbi__skip(s, 6 );\n\n   // Read the number of channels (R, G, B, A, etc).\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16)\n      return stbi__errpuc(\"wrong channel count\", \"Unsupported number of channels in PSD image\");\n\n   // Read the rows and columns of the image.\n   h = stbi__get32be(s);\n   w = stbi__get32be(s);\n\n   if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   // Make sure the depth is 8 bits.\n   bitdepth = stbi__get16be(s);\n   if (bitdepth != 8 && bitdepth != 16)\n      return stbi__errpuc(\"unsupported bit depth\", \"PSD bit depth is not 8 or 16 bit\");\n\n   // Make sure the color mode is RGB.\n   // Valid options are:\n   //   0: Bitmap\n   //   1: Grayscale\n   //   2: Indexed color\n   //   3: RGB color\n   //   4: CMYK color\n   //   7: Multichannel\n   //   8: Duotone\n   //   9: Lab color\n   if (stbi__get16be(s) != 3)\n      return stbi__errpuc(\"wrong color format\", \"PSD is not in RGB color format\");\n\n   // Skip the Mode Data.  (It's the palette for indexed color; other info for other modes.)\n   stbi__skip(s,stbi__get32be(s) );\n\n   // Skip the image resources.  (resolution, pen tool paths, etc)\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Skip the reserved data.\n   stbi__skip(s, stbi__get32be(s) );\n\n   // Find out if the data is compressed.\n   // Known values:\n   //   0: no compression\n   //   1: RLE compressed\n   compression = stbi__get16be(s);\n   if (compression > 1)\n      return stbi__errpuc(\"bad compression\", \"PSD has an unknown compression format\");\n\n   // Check size\n   if (!stbi__mad3sizes_valid(4, w, h, 0))\n      return stbi__errpuc(\"too large\", \"Corrupt PSD\");\n\n   // Create the destination image.\n\n   if (!compression && bitdepth == 16 && bpc == 16) {\n      out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0);\n      ri->bits_per_channel = 16;\n   } else\n      out = (stbi_uc *) stbi__malloc(4 * w*h);\n\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   pixelCount = w*h;\n\n   // Initialize the data to zero.\n   //memset( out, 0, pixelCount * 4 );\n\n   // Finally, the image data.\n   if (compression) {\n      // RLE as used by .PSD and .TIFF\n      // Loop until you get the number of unpacked bytes you are expecting:\n      //     Read the next source byte into n.\n      //     If n is between 0 and 127 inclusive, copy the next n+1 bytes literally.\n      //     Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times.\n      //     Else if n is 128, noop.\n      // Endloop\n\n      // The RLE-compressed data is preceded by a 2-byte data count for each row in the data,\n      // which we're going to just skip.\n      stbi__skip(s, h * channelCount * 2 );\n\n      // Read the RLE data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         stbi_uc *p;\n\n         p = out+channel;\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            for (i = 0; i < pixelCount; i++, p += 4)\n               *p = (channel == 3 ? 255 : 0);\n         } else {\n            // Read the RLE data.\n            if (!stbi__psd_decode_rle(s, p, pixelCount)) {\n               STBI_FREE(out);\n               return stbi__errpuc(\"corrupt\", \"bad RLE data\");\n            }\n         }\n      }\n\n   } else {\n      // We're at the raw image data.  It's each channel in order (Red, Green, Blue, Alpha, ...)\n      // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image.\n\n      // Read the data by channel.\n      for (channel = 0; channel < 4; channel++) {\n         if (channel >= channelCount) {\n            // Fill this channel with default data.\n            if (bitdepth == 16 && bpc == 16) {\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               stbi__uint16 val = channel == 3 ? 65535 : 0;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = val;\n            } else {\n               stbi_uc *p = out+channel;\n               stbi_uc val = channel == 3 ? 255 : 0;\n               for (i = 0; i < pixelCount; i++, p += 4)\n                  *p = val;\n            }\n         } else {\n            if (ri->bits_per_channel == 16) {    // output bpc\n               stbi__uint16 *q = ((stbi__uint16 *) out) + channel;\n               for (i = 0; i < pixelCount; i++, q += 4)\n                  *q = (stbi__uint16) stbi__get16be(s);\n            } else {\n               stbi_uc *p = out+channel;\n               if (bitdepth == 16) {  // input bpc\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = (stbi_uc) (stbi__get16be(s) >> 8);\n               } else {\n                  for (i = 0; i < pixelCount; i++, p += 4)\n                     *p = stbi__get8(s);\n               }\n            }\n         }\n      }\n   }\n\n   // remove weird white matte from PSD\n   if (channelCount >= 4) {\n      if (ri->bits_per_channel == 16) {\n         for (i=0; i < w*h; ++i) {\n            stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 65535) {\n               float a = pixel[3] / 65535.0f;\n               float ra = 1.0f / a;\n               float inv_a = 65535.0f * (1 - ra);\n               pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a);\n               pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a);\n               pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a);\n            }\n         }\n      } else {\n         for (i=0; i < w*h; ++i) {\n            unsigned char *pixel = out + 4*i;\n            if (pixel[3] != 0 && pixel[3] != 255) {\n               float a = pixel[3] / 255.0f;\n               float ra = 1.0f / a;\n               float inv_a = 255.0f * (1 - ra);\n               pixel[0] = (unsigned char) (pixel[0]*ra + inv_a);\n               pixel[1] = (unsigned char) (pixel[1]*ra + inv_a);\n               pixel[2] = (unsigned char) (pixel[2]*ra + inv_a);\n            }\n         }\n      }\n   }\n\n   // convert to desired output format\n   if (req_comp && req_comp != 4) {\n      if (ri->bits_per_channel == 16)\n         out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h);\n      else\n         out = stbi__convert_format(out, 4, req_comp, w, h);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n\n   if (comp) *comp = 4;\n   *y = h;\n   *x = w;\n\n   return out;\n}\n#endif\n\n// *************************************************************************************************\n// Softimage PIC loader\n// by Tom Seddon\n//\n// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format\n// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_is4(stbi__context *s,const char *str)\n{\n   int i;\n   for (i=0; i<4; ++i)\n      if (stbi__get8(s) != (stbi_uc)str[i])\n         return 0;\n\n   return 1;\n}\n\nstatic int stbi__pic_test_core(stbi__context *s)\n{\n   int i;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\"))\n      return 0;\n\n   for(i=0;i<84;++i)\n      stbi__get8(s);\n\n   if (!stbi__pic_is4(s,\"PICT\"))\n      return 0;\n\n   return 1;\n}\n\ntypedef struct\n{\n   stbi_uc size,type,channel;\n} stbi__pic_packet;\n\nstatic stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)\n{\n   int mask=0x80, i;\n\n   for (i=0; i<4; ++i, mask>>=1) {\n      if (channel & mask) {\n         if (stbi__at_eof(s)) return stbi__errpuc(\"bad file\",\"PIC file too short\");\n         dest[i]=stbi__get8(s);\n      }\n   }\n\n   return dest;\n}\n\nstatic void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src)\n{\n   int mask=0x80,i;\n\n   for (i=0;i<4; ++i, mask>>=1)\n      if (channel&mask)\n         dest[i]=src[i];\n}\n\nstatic stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result)\n{\n   int act_comp=0,num_packets=0,y,chained;\n   stbi__pic_packet packets[10];\n\n   // this will (should...) cater for even some bizarre stuff like having data\n    // for the same channel in multiple packets.\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return stbi__errpuc(\"bad format\",\"too many packets\");\n\n      packet = &packets[num_packets++];\n\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s))          return stbi__errpuc(\"bad file\",\"file too short (reading packets)\");\n      if (packet->size != 8)  return stbi__errpuc(\"bad format\",\"packet isn't 8bpp\");\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel?\n\n   for(y=0; y<height; ++y) {\n      int packet_idx;\n\n      for(packet_idx=0; packet_idx < num_packets; ++packet_idx) {\n         stbi__pic_packet *packet = &packets[packet_idx];\n         stbi_uc *dest = result+y*width*4;\n\n         switch (packet->type) {\n            default:\n               return stbi__errpuc(\"bad format\",\"packet has bad compression type\");\n\n            case 0: {//uncompressed\n               int x;\n\n               for(x=0;x<width;++x, dest+=4)\n                  if (!stbi__readval(s,packet->channel,dest))\n                     return 0;\n               break;\n            }\n\n            case 1://Pure RLE\n               {\n                  int left=width, i;\n\n                  while (left>0) {\n                     stbi_uc count,value[4];\n\n                     count=stbi__get8(s);\n                     if (stbi__at_eof(s))   return stbi__errpuc(\"bad file\",\"file too short (pure read count)\");\n\n                     if (count > left)\n                        count = (stbi_uc) left;\n\n                     if (!stbi__readval(s,packet->channel,value))  return 0;\n\n                     for(i=0; i<count; ++i,dest+=4)\n                        stbi__copyval(packet->channel,dest,value);\n                     left -= count;\n                  }\n               }\n               break;\n\n            case 2: {//Mixed RLE\n               int left=width;\n               while (left>0) {\n                  int count = stbi__get8(s), i;\n                  if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (mixed read count)\");\n\n                  if (count >= 128) { // Repeated\n                     stbi_uc value[4];\n\n                     if (count==128)\n                        count = stbi__get16be(s);\n                     else\n                        count -= 127;\n                     if (count > left)\n                        return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     if (!stbi__readval(s,packet->channel,value))\n                        return 0;\n\n                     for(i=0;i<count;++i, dest += 4)\n                        stbi__copyval(packet->channel,dest,value);\n                  } else { // Raw\n                     ++count;\n                     if (count>left) return stbi__errpuc(\"bad file\",\"scanline overrun\");\n\n                     for(i=0;i<count;++i, dest+=4)\n                        if (!stbi__readval(s,packet->channel,dest))\n                           return 0;\n                  }\n                  left-=count;\n               }\n               break;\n            }\n         }\n      }\n   }\n\n   return result;\n}\n\nstatic void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *result;\n   int i, x,y, internal_comp;\n   STBI_NOTUSED(ri);\n\n   if (!comp) comp = &internal_comp;\n\n   for (i=0; i<92; ++i)\n      stbi__get8(s);\n\n   x = stbi__get16be(s);\n   y = stbi__get16be(s);\n\n   if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   if (stbi__at_eof(s))  return stbi__errpuc(\"bad file\",\"file too short (pic header)\");\n   if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc(\"too large\", \"PIC image too large to decode\");\n\n   stbi__get32be(s); //skip `ratio'\n   stbi__get16be(s); //skip `fields'\n   stbi__get16be(s); //skip `pad'\n\n   // intermediate buffer is RGBA\n   result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0);\n   memset(result, 0xff, x*y*4);\n\n   if (!stbi__pic_load_core(s,x,y,comp, result)) {\n      STBI_FREE(result);\n      result=0;\n   }\n   *px = x;\n   *py = y;\n   if (req_comp == 0) req_comp = *comp;\n   result=stbi__convert_format(result,4,req_comp,x,y);\n\n   return result;\n}\n\nstatic int stbi__pic_test(stbi__context *s)\n{\n   int r = stbi__pic_test_core(s);\n   stbi__rewind(s);\n   return r;\n}\n#endif\n\n// *************************************************************************************************\n// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb\n\n#ifndef STBI_NO_GIF\ntypedef struct\n{\n   stbi__int16 prefix;\n   stbi_uc first;\n   stbi_uc suffix;\n} stbi__gif_lzw;\n\ntypedef struct\n{\n   int w,h;\n   stbi_uc *out;                 // output buffer (always 4 components)\n   stbi_uc *background;          // The current \"background\" as far as a gif is concerned\n   stbi_uc *history;\n   int flags, bgindex, ratio, transparent, eflags;\n   stbi_uc  pal[256][4];\n   stbi_uc lpal[256][4];\n   stbi__gif_lzw codes[8192];\n   stbi_uc *color_table;\n   int parse, step;\n   int lflags;\n   int start_x, start_y;\n   int max_x, max_y;\n   int cur_x, cur_y;\n   int line_size;\n   int delay;\n} stbi__gif;\n\nstatic int stbi__gif_test_raw(stbi__context *s)\n{\n   int sz;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0;\n   sz = stbi__get8(s);\n   if (sz != '9' && sz != '7') return 0;\n   if (stbi__get8(s) != 'a') return 0;\n   return 1;\n}\n\nstatic int stbi__gif_test(stbi__context *s)\n{\n   int r = stbi__gif_test_raw(s);\n   stbi__rewind(s);\n   return r;\n}\n\nstatic void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp)\n{\n   int i;\n   for (i=0; i < num_entries; ++i) {\n      pal[i][2] = stbi__get8(s);\n      pal[i][1] = stbi__get8(s);\n      pal[i][0] = stbi__get8(s);\n      pal[i][3] = transp == i ? 0 : 255;\n   }\n}\n\nstatic int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info)\n{\n   stbi_uc version;\n   if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8')\n      return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   version = stbi__get8(s);\n   if (version != '7' && version != '9')    return stbi__err(\"not GIF\", \"Corrupt GIF\");\n   if (stbi__get8(s) != 'a')                return stbi__err(\"not GIF\", \"Corrupt GIF\");\n\n   stbi__g_failure_reason = \"\";\n   g->w = stbi__get16le(s);\n   g->h = stbi__get16le(s);\n   g->flags = stbi__get8(s);\n   g->bgindex = stbi__get8(s);\n   g->ratio = stbi__get8(s);\n   g->transparent = -1;\n\n   if (g->w > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n   if (g->h > STBI_MAX_DIMENSIONS) return stbi__err(\"too large\",\"Very large image (corrupt?)\");\n\n   if (comp != 0) *comp = 4;  // can't actually tell whether it's 3 or 4 until we parse the comments\n\n   if (is_info) return 1;\n\n   if (g->flags & 0x80)\n      stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1);\n\n   return 1;\n}\n\nstatic int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)\n{\n   stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif));\n   if (!stbi__gif_header(s, g, comp, 1)) {\n      STBI_FREE(g);\n      stbi__rewind( s );\n      return 0;\n   }\n   if (x) *x = g->w;\n   if (y) *y = g->h;\n   STBI_FREE(g);\n   return 1;\n}\n\nstatic void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)\n{\n   stbi_uc *p, *c;\n   int idx;\n\n   // recurse to decode the prefixes, since the linked-list is backwards,\n   // and working backwards through an interleaved image would be nasty\n   if (g->codes[code].prefix >= 0)\n      stbi__out_gif_code(g, g->codes[code].prefix);\n\n   if (g->cur_y >= g->max_y) return;\n\n   idx = g->cur_x + g->cur_y;\n   p = &g->out[idx];\n   g->history[idx / 4] = 1;\n\n   c = &g->color_table[g->codes[code].suffix * 4];\n   if (c[3] > 128) { // don't render transparent pixels;\n      p[0] = c[2];\n      p[1] = c[1];\n      p[2] = c[0];\n      p[3] = c[3];\n   }\n   g->cur_x += 4;\n\n   if (g->cur_x >= g->max_x) {\n      g->cur_x = g->start_x;\n      g->cur_y += g->step;\n\n      while (g->cur_y >= g->max_y && g->parse > 0) {\n         g->step = (1 << g->parse) * g->line_size;\n         g->cur_y = g->start_y + (g->step >> 1);\n         --g->parse;\n      }\n   }\n}\n\nstatic stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)\n{\n   stbi_uc lzw_cs;\n   stbi__int32 len, init_code;\n   stbi__uint32 first;\n   stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear;\n   stbi__gif_lzw *p;\n\n   lzw_cs = stbi__get8(s);\n   if (lzw_cs > 12) return NULL;\n   clear = 1 << lzw_cs;\n   first = 1;\n   codesize = lzw_cs + 1;\n   codemask = (1 << codesize) - 1;\n   bits = 0;\n   valid_bits = 0;\n   for (init_code = 0; init_code < clear; init_code++) {\n      g->codes[init_code].prefix = -1;\n      g->codes[init_code].first = (stbi_uc) init_code;\n      g->codes[init_code].suffix = (stbi_uc) init_code;\n   }\n\n   // support no starting clear code\n   avail = clear+2;\n   oldcode = -1;\n\n   len = 0;\n   for(;;) {\n      if (valid_bits < codesize) {\n         if (len == 0) {\n            len = stbi__get8(s); // start new block\n            if (len == 0)\n               return g->out;\n         }\n         --len;\n         bits |= (stbi__int32) stbi__get8(s) << valid_bits;\n         valid_bits += 8;\n      } else {\n         stbi__int32 code = bits & codemask;\n         bits >>= codesize;\n         valid_bits -= codesize;\n         // @OPTIMIZE: is there some way we can accelerate the non-clear path?\n         if (code == clear) {  // clear code\n            codesize = lzw_cs + 1;\n            codemask = (1 << codesize) - 1;\n            avail = clear + 2;\n            oldcode = -1;\n            first = 0;\n         } else if (code == clear + 1) { // end of stream code\n            stbi__skip(s, len);\n            while ((len = stbi__get8(s)) > 0)\n               stbi__skip(s,len);\n            return g->out;\n         } else if (code <= avail) {\n            if (first) {\n               return stbi__errpuc(\"no clear code\", \"Corrupt GIF\");\n            }\n\n            if (oldcode >= 0) {\n               p = &g->codes[avail++];\n               if (avail > 8192) {\n                  return stbi__errpuc(\"too many codes\", \"Corrupt GIF\");\n               }\n\n               p->prefix = (stbi__int16) oldcode;\n               p->first = g->codes[oldcode].first;\n               p->suffix = (code == avail) ? p->first : g->codes[code].first;\n            } else if (code == avail)\n               return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n\n            stbi__out_gif_code(g, (stbi__uint16) code);\n\n            if ((avail & codemask) == 0 && avail <= 0x0FFF) {\n               codesize++;\n               codemask = (1 << codesize) - 1;\n            }\n\n            oldcode = code;\n         } else {\n            return stbi__errpuc(\"illegal code in raster\", \"Corrupt GIF\");\n         }\n      }\n   }\n}\n\n// this function is designed to support animated gifs, although stb_image doesn't support it\n// two back is the image from two frames ago, used for a very specific disposal format\nstatic stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back)\n{\n   int dispose;\n   int first_frame;\n   int pi;\n   int pcount;\n   STBI_NOTUSED(req_comp);\n\n   // on first frame, any non-written pixels get the background colour (non-transparent)\n   first_frame = 0;\n   if (g->out == 0) {\n      if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header\n      if (!stbi__mad3sizes_valid(4, g->w, g->h, 0))\n         return stbi__errpuc(\"too large\", \"GIF image is too large\");\n      pcount = g->w * g->h;\n      g->out = (stbi_uc *) stbi__malloc(4 * pcount);\n      g->background = (stbi_uc *) stbi__malloc(4 * pcount);\n      g->history = (stbi_uc *) stbi__malloc(pcount);\n      if (!g->out || !g->background || !g->history)\n         return stbi__errpuc(\"outofmem\", \"Out of memory\");\n\n      // image is treated as \"transparent\" at the start - ie, nothing overwrites the current background;\n      // background colour is only used for pixels that are not rendered first frame, after that \"background\"\n      // color refers to the color that was there the previous frame.\n      memset(g->out, 0x00, 4 * pcount);\n      memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent)\n      memset(g->history, 0x00, pcount);        // pixels that were affected previous frame\n      first_frame = 1;\n   } else {\n      // second frame - how do we dispose of the previous one?\n      dispose = (g->eflags & 0x1C) >> 2;\n      pcount = g->w * g->h;\n\n      if ((dispose == 3) && (two_back == 0)) {\n         dispose = 2; // if I don't have an image to revert back to, default to the old background\n      }\n\n      if (dispose == 3) { // use previous graphic\n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 );\n            }\n         }\n      } else if (dispose == 2) {\n         // restore what was changed last frame to background before that frame;\n         for (pi = 0; pi < pcount; ++pi) {\n            if (g->history[pi]) {\n               memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 );\n            }\n         }\n      } else {\n         // This is a non-disposal case eithe way, so just\n         // leave the pixels as is, and they will become the new background\n         // 1: do not dispose\n         // 0:  not specified.\n      }\n\n      // background is what out is after the undoing of the previou frame;\n      memcpy( g->background, g->out, 4 * g->w * g->h );\n   }\n\n   // clear my history;\n   memset( g->history, 0x00, g->w * g->h );        // pixels that were affected previous frame\n\n   for (;;) {\n      int tag = stbi__get8(s);\n      switch (tag) {\n         case 0x2C: /* Image Descriptor */\n         {\n            stbi__int32 x, y, w, h;\n            stbi_uc *o;\n\n            x = stbi__get16le(s);\n            y = stbi__get16le(s);\n            w = stbi__get16le(s);\n            h = stbi__get16le(s);\n            if (((x + w) > (g->w)) || ((y + h) > (g->h)))\n               return stbi__errpuc(\"bad Image Descriptor\", \"Corrupt GIF\");\n\n            g->line_size = g->w * 4;\n            g->start_x = x * 4;\n            g->start_y = y * g->line_size;\n            g->max_x   = g->start_x + w * 4;\n            g->max_y   = g->start_y + h * g->line_size;\n            g->cur_x   = g->start_x;\n            g->cur_y   = g->start_y;\n\n            // if the width of the specified rectangle is 0, that means\n            // we may not see *any* pixels or the image is malformed;\n            // to make sure this is caught, move the current y down to\n            // max_y (which is what out_gif_code checks).\n            if (w == 0)\n               g->cur_y = g->max_y;\n\n            g->lflags = stbi__get8(s);\n\n            if (g->lflags & 0x40) {\n               g->step = 8 * g->line_size; // first interlaced spacing\n               g->parse = 3;\n            } else {\n               g->step = g->line_size;\n               g->parse = 0;\n            }\n\n            if (g->lflags & 0x80) {\n               stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1);\n               g->color_table = (stbi_uc *) g->lpal;\n            } else if (g->flags & 0x80) {\n               g->color_table = (stbi_uc *) g->pal;\n            } else\n               return stbi__errpuc(\"missing color table\", \"Corrupt GIF\");\n\n            o = stbi__process_gif_raster(s, g);\n            if (!o) return NULL;\n\n            // if this was the first frame,\n            pcount = g->w * g->h;\n            if (first_frame && (g->bgindex > 0)) {\n               // if first frame, any pixel not drawn to gets the background color\n               for (pi = 0; pi < pcount; ++pi) {\n                  if (g->history[pi] == 0) {\n                     g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be;\n                     memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 );\n                  }\n               }\n            }\n\n            return o;\n         }\n\n         case 0x21: // Comment Extension.\n         {\n            int len;\n            int ext = stbi__get8(s);\n            if (ext == 0xF9) { // Graphic Control Extension.\n               len = stbi__get8(s);\n               if (len == 4) {\n                  g->eflags = stbi__get8(s);\n                  g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths.\n\n                  // unset old transparent\n                  if (g->transparent >= 0) {\n                     g->pal[g->transparent][3] = 255;\n                  }\n                  if (g->eflags & 0x01) {\n                     g->transparent = stbi__get8(s);\n                     if (g->transparent >= 0) {\n                        g->pal[g->transparent][3] = 0;\n                     }\n                  } else {\n                     // don't need transparent\n                     stbi__skip(s, 1);\n                     g->transparent = -1;\n                  }\n               } else {\n                  stbi__skip(s, len);\n                  break;\n               }\n            }\n            while ((len = stbi__get8(s)) != 0) {\n               stbi__skip(s, len);\n            }\n            break;\n         }\n\n         case 0x3B: // gif stream termination code\n            return (stbi_uc *) s; // using '1' causes warning on some compilers\n\n         default:\n            return stbi__errpuc(\"unknown code\", \"Corrupt GIF\");\n      }\n   }\n}\n\nstatic void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp)\n{\n   if (stbi__gif_test(s)) {\n      int layers = 0;\n      stbi_uc *u = 0;\n      stbi_uc *out = 0;\n      stbi_uc *two_back = 0;\n      stbi__gif g;\n      int stride;\n      int out_size = 0;\n      int delays_size = 0;\n      memset(&g, 0, sizeof(g));\n      if (delays) {\n         *delays = 0;\n      }\n\n      do {\n         u = stbi__gif_load_next(s, &g, comp, req_comp, two_back);\n         if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n\n         if (u) {\n            *x = g.w;\n            *y = g.h;\n            ++layers;\n            stride = g.w * g.h * 4;\n\n            if (out) {\n               void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride );\n               if (NULL == tmp) {\n                  STBI_FREE(g.out);\n                  STBI_FREE(g.history);\n                  STBI_FREE(g.background);\n                  return stbi__errpuc(\"outofmem\", \"Out of memory\");\n               }\n               else {\n                   out = (stbi_uc*) tmp;\n                   out_size = layers * stride;\n               }\n\n               if (delays) {\n                  *delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers );\n                  delays_size = layers * sizeof(int);\n               }\n            } else {\n               out = (stbi_uc*)stbi__malloc( layers * stride );\n               out_size = layers * stride;\n               if (delays) {\n                  *delays = (int*) stbi__malloc( layers * sizeof(int) );\n                  delays_size = layers * sizeof(int);\n               }\n            }\n            memcpy( out + ((layers - 1) * stride), u, stride );\n            if (layers >= 2) {\n               two_back = out - 2 * stride;\n            }\n\n            if (delays) {\n               (*delays)[layers - 1U] = g.delay;\n            }\n         }\n      } while (u != 0);\n\n      // free temp buffer;\n      STBI_FREE(g.out);\n      STBI_FREE(g.history);\n      STBI_FREE(g.background);\n\n      // do the final conversion after loading everything;\n      if (req_comp && req_comp != 4)\n         out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h);\n\n      *z = layers;\n      return out;\n   } else {\n      return stbi__errpuc(\"not GIF\", \"Image was not as a gif type.\");\n   }\n}\n\nstatic void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *u = 0;\n   stbi__gif g;\n   memset(&g, 0, sizeof(g));\n   STBI_NOTUSED(ri);\n\n   u = stbi__gif_load_next(s, &g, comp, req_comp, 0);\n   if (u == (stbi_uc *) s) u = 0;  // end of animated gif marker\n   if (u) {\n      *x = g.w;\n      *y = g.h;\n\n      // moved conversion to after successful load so that the same\n      // can be done for multiple frames.\n      if (req_comp && req_comp != 4)\n         u = stbi__convert_format(u, 4, req_comp, g.w, g.h);\n   } else if (g.out) {\n      // if there was an error and we allocated an image buffer, free it!\n      STBI_FREE(g.out);\n   }\n\n   // free buffers needed for multiple frame loading;\n   STBI_FREE(g.history);\n   STBI_FREE(g.background);\n\n   return u;\n}\n\nstatic int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   return stbi__gif_info_raw(s,x,y,comp);\n}\n#endif\n\n// *************************************************************************************************\n// Radiance RGBE HDR loader\n// originally by Nicolas Schulz\n#ifndef STBI_NO_HDR\nstatic int stbi__hdr_test_core(stbi__context *s, const char *signature)\n{\n   int i;\n   for (i=0; signature[i]; ++i)\n      if (stbi__get8(s) != signature[i])\n          return 0;\n   stbi__rewind(s);\n   return 1;\n}\n\nstatic int stbi__hdr_test(stbi__context* s)\n{\n   int r = stbi__hdr_test_core(s, \"#?RADIANCE\\n\");\n   stbi__rewind(s);\n   if(!r) {\n       r = stbi__hdr_test_core(s, \"#?RGBE\\n\");\n       stbi__rewind(s);\n   }\n   return r;\n}\n\n#define STBI__HDR_BUFLEN  1024\nstatic char *stbi__hdr_gettoken(stbi__context *z, char *buffer)\n{\n   int len=0;\n   char c = '\\0';\n\n   c = (char) stbi__get8(z);\n\n   while (!stbi__at_eof(z) && c != '\\n') {\n      buffer[len++] = c;\n      if (len == STBI__HDR_BUFLEN-1) {\n         // flush to end of line\n         while (!stbi__at_eof(z) && stbi__get8(z) != '\\n')\n            ;\n         break;\n      }\n      c = (char) stbi__get8(z);\n   }\n\n   buffer[len] = 0;\n   return buffer;\n}\n\nstatic void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)\n{\n   if ( input[3] != 0 ) {\n      float f1;\n      // Exponent\n      f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8));\n      if (req_comp <= 2)\n         output[0] = (input[0] + input[1] + input[2]) * f1 / 3;\n      else {\n         output[0] = input[0] * f1;\n         output[1] = input[1] * f1;\n         output[2] = input[2] * f1;\n      }\n      if (req_comp == 2) output[1] = 1;\n      if (req_comp == 4) output[3] = 1;\n   } else {\n      switch (req_comp) {\n         case 4: output[3] = 1; /* fallthrough */\n         case 3: output[0] = output[1] = output[2] = 0;\n                 break;\n         case 2: output[1] = 1; /* fallthrough */\n         case 1: output[0] = 0;\n                 break;\n      }\n   }\n}\n\nstatic float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int width, height;\n   stbi_uc *scanline;\n   float *hdr_data;\n   int len;\n   unsigned char count, value;\n   int i, j, k, c1,c2, z;\n   const char *headerToken;\n   STBI_NOTUSED(ri);\n\n   // Check identifier\n   headerToken = stbi__hdr_gettoken(s,buffer);\n   if (strcmp(headerToken, \"#?RADIANCE\") != 0 && strcmp(headerToken, \"#?RGBE\") != 0)\n      return stbi__errpf(\"not HDR\", \"Corrupt HDR image\");\n\n   // Parse header\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid)    return stbi__errpf(\"unsupported format\", \"Unsupported HDR format\");\n\n   // Parse width and height\n   // can't use sscanf() if we're not using stdio!\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   height = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3))  return stbi__errpf(\"unsupported data layout\", \"Unsupported HDR format\");\n   token += 3;\n   width = (int) strtol(token, NULL, 10);\n\n   if (height > STBI_MAX_DIMENSIONS) return stbi__errpf(\"too large\",\"Very large image (corrupt?)\");\n   if (width > STBI_MAX_DIMENSIONS) return stbi__errpf(\"too large\",\"Very large image (corrupt?)\");\n\n   *x = width;\n   *y = height;\n\n   if (comp) *comp = 3;\n   if (req_comp == 0) req_comp = 3;\n\n   if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0))\n      return stbi__errpf(\"too large\", \"HDR image is too large\");\n\n   // Read data\n   hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0);\n   if (!hdr_data)\n      return stbi__errpf(\"outofmem\", \"Out of memory\");\n\n   // Load image data\n   // image data is stored as some number of sca\n   if ( width < 8 || width >= 32768) {\n      // Read flat data\n      for (j=0; j < height; ++j) {\n         for (i=0; i < width; ++i) {\n            stbi_uc rgbe[4];\n           main_decode_loop:\n            stbi__getn(s, rgbe, 4);\n            stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp);\n         }\n      }\n   } else {\n      // Read RLE-encoded data\n      scanline = NULL;\n\n      for (j = 0; j < height; ++j) {\n         c1 = stbi__get8(s);\n         c2 = stbi__get8(s);\n         len = stbi__get8(s);\n         if (c1 != 2 || c2 != 2 || (len & 0x80)) {\n            // not run-length encoded, so we have to actually use THIS data as a decoded\n            // pixel (note this can't be a valid pixel--one of RGB must be >= 128)\n            stbi_uc rgbe[4];\n            rgbe[0] = (stbi_uc) c1;\n            rgbe[1] = (stbi_uc) c2;\n            rgbe[2] = (stbi_uc) len;\n            rgbe[3] = (stbi_uc) stbi__get8(s);\n            stbi__hdr_convert(hdr_data, rgbe, req_comp);\n            i = 1;\n            j = 0;\n            STBI_FREE(scanline);\n            goto main_decode_loop; // yes, this makes no sense\n         }\n         len <<= 8;\n         len |= stbi__get8(s);\n         if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"invalid decoded scanline length\", \"corrupt HDR\"); }\n         if (scanline == NULL) {\n            scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0);\n            if (!scanline) {\n               STBI_FREE(hdr_data);\n               return stbi__errpf(\"outofmem\", \"Out of memory\");\n            }\n         }\n\n         for (k = 0; k < 4; ++k) {\n            int nleft;\n            i = 0;\n            while ((nleft = width - i) > 0) {\n               count = stbi__get8(s);\n               if (count > 128) {\n                  // Run\n                  value = stbi__get8(s);\n                  count -= 128;\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = value;\n               } else {\n                  // Dump\n                  if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf(\"corrupt\", \"bad RLE data in HDR\"); }\n                  for (z = 0; z < count; ++z)\n                     scanline[i++ * 4 + k] = stbi__get8(s);\n               }\n            }\n         }\n         for (i=0; i < width; ++i)\n            stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp);\n      }\n      if (scanline)\n         STBI_FREE(scanline);\n   }\n\n   return hdr_data;\n}\n\nstatic int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   char buffer[STBI__HDR_BUFLEN];\n   char *token;\n   int valid = 0;\n   int dummy;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (stbi__hdr_test(s) == 0) {\n       stbi__rewind( s );\n       return 0;\n   }\n\n   for(;;) {\n      token = stbi__hdr_gettoken(s,buffer);\n      if (token[0] == 0) break;\n      if (strcmp(token, \"FORMAT=32-bit_rle_rgbe\") == 0) valid = 1;\n   }\n\n   if (!valid) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token = stbi__hdr_gettoken(s,buffer);\n   if (strncmp(token, \"-Y \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *y = (int) strtol(token, &token, 10);\n   while (*token == ' ') ++token;\n   if (strncmp(token, \"+X \", 3)) {\n       stbi__rewind( s );\n       return 0;\n   }\n   token += 3;\n   *x = (int) strtol(token, NULL, 10);\n   *comp = 3;\n   return 1;\n}\n#endif // STBI_NO_HDR\n\n#ifndef STBI_NO_BMP\nstatic int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   void *p;\n   stbi__bmp_data info;\n\n   info.all_a = 255;\n   p = stbi__bmp_parse_header(s, &info);\n   stbi__rewind( s );\n   if (p == NULL)\n      return 0;\n   if (x) *x = s->img_x;\n   if (y) *y = s->img_y;\n   if (comp) {\n      if (info.bpp == 24 && info.ma == 0xff000000)\n         *comp = 3;\n      else\n         *comp = info.ma ? 4 : 3;\n   }\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PSD\nstatic int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int channelCount, dummy, depth;\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *y = stbi__get32be(s);\n   *x = stbi__get32be(s);\n   depth = stbi__get16be(s);\n   if (depth != 8 && depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 3) {\n       stbi__rewind( s );\n       return 0;\n   }\n   *comp = 4;\n   return 1;\n}\n\nstatic int stbi__psd_is16(stbi__context *s)\n{\n   int channelCount, depth;\n   if (stbi__get32be(s) != 0x38425053) {\n       stbi__rewind( s );\n       return 0;\n   }\n   if (stbi__get16be(s) != 1) {\n       stbi__rewind( s );\n       return 0;\n   }\n   stbi__skip(s, 6);\n   channelCount = stbi__get16be(s);\n   if (channelCount < 0 || channelCount > 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   (void) stbi__get32be(s);\n   (void) stbi__get32be(s);\n   depth = stbi__get16be(s);\n   if (depth != 16) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n#endif\n\n#ifndef STBI_NO_PIC\nstatic int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int act_comp=0,num_packets=0,chained,dummy;\n   stbi__pic_packet packets[10];\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   if (!stbi__pic_is4(s,\"\\x53\\x80\\xF6\\x34\")) {\n      stbi__rewind(s);\n      return 0;\n   }\n\n   stbi__skip(s, 88);\n\n   *x = stbi__get16be(s);\n   *y = stbi__get16be(s);\n   if (stbi__at_eof(s)) {\n      stbi__rewind( s);\n      return 0;\n   }\n   if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) {\n      stbi__rewind( s );\n      return 0;\n   }\n\n   stbi__skip(s, 8);\n\n   do {\n      stbi__pic_packet *packet;\n\n      if (num_packets==sizeof(packets)/sizeof(packets[0]))\n         return 0;\n\n      packet = &packets[num_packets++];\n      chained = stbi__get8(s);\n      packet->size    = stbi__get8(s);\n      packet->type    = stbi__get8(s);\n      packet->channel = stbi__get8(s);\n      act_comp |= packet->channel;\n\n      if (stbi__at_eof(s)) {\n          stbi__rewind( s );\n          return 0;\n      }\n      if (packet->size != 8) {\n          stbi__rewind( s );\n          return 0;\n      }\n   } while (chained);\n\n   *comp = (act_comp & 0x10 ? 4 : 3);\n\n   return 1;\n}\n#endif\n\n// *************************************************************************************************\n// Portable Gray Map and Portable Pixel Map loader\n// by Ken Miller\n//\n// PGM: http://netpbm.sourceforge.net/doc/pgm.html\n// PPM: http://netpbm.sourceforge.net/doc/ppm.html\n//\n// Known limitations:\n//    Does not support comments in the header section\n//    Does not support ASCII image data (formats P2 and P3)\n//    Does not support 16-bit-per-channel\n\n#ifndef STBI_NO_PNM\n\nstatic int      stbi__pnm_test(stbi__context *s)\n{\n   char p, t;\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind( s );\n       return 0;\n   }\n   return 1;\n}\n\nstatic void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri)\n{\n   stbi_uc *out;\n   STBI_NOTUSED(ri);\n\n   if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n))\n      return 0;\n\n   if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n   if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc(\"too large\",\"Very large image (corrupt?)\");\n\n   *x = s->img_x;\n   *y = s->img_y;\n   if (comp) *comp = s->img_n;\n\n   if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0))\n      return stbi__errpuc(\"too large\", \"PNM too large\");\n\n   out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0);\n   if (!out) return stbi__errpuc(\"outofmem\", \"Out of memory\");\n   stbi__getn(s, out, s->img_n * s->img_x * s->img_y);\n\n   if (req_comp && req_comp != s->img_n) {\n      out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y);\n      if (out == NULL) return out; // stbi__convert_format frees input on failure\n   }\n   return out;\n}\n\nstatic int      stbi__pnm_isspace(char c)\n{\n   return c == ' ' || c == '\\t' || c == '\\n' || c == '\\v' || c == '\\f' || c == '\\r';\n}\n\nstatic void     stbi__pnm_skip_whitespace(stbi__context *s, char *c)\n{\n   for (;;) {\n      while (!stbi__at_eof(s) && stbi__pnm_isspace(*c))\n         *c = (char) stbi__get8(s);\n\n      if (stbi__at_eof(s) || *c != '#')\n         break;\n\n      while (!stbi__at_eof(s) && *c != '\\n' && *c != '\\r' )\n         *c = (char) stbi__get8(s);\n   }\n}\n\nstatic int      stbi__pnm_isdigit(char c)\n{\n   return c >= '0' && c <= '9';\n}\n\nstatic int      stbi__pnm_getinteger(stbi__context *s, char *c)\n{\n   int value = 0;\n\n   while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) {\n      value = value*10 + (*c - '0');\n      *c = (char) stbi__get8(s);\n   }\n\n   return value;\n}\n\nstatic int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)\n{\n   int maxv, dummy;\n   char c, p, t;\n\n   if (!x) x = &dummy;\n   if (!y) y = &dummy;\n   if (!comp) comp = &dummy;\n\n   stbi__rewind(s);\n\n   // Get identifier\n   p = (char) stbi__get8(s);\n   t = (char) stbi__get8(s);\n   if (p != 'P' || (t != '5' && t != '6')) {\n       stbi__rewind(s);\n       return 0;\n   }\n\n   *comp = (t == '6') ? 3 : 1;  // '5' is 1-component .pgm; '6' is 3-component .ppm\n\n   c = (char) stbi__get8(s);\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *x = stbi__pnm_getinteger(s, &c); // read width\n   stbi__pnm_skip_whitespace(s, &c);\n\n   *y = stbi__pnm_getinteger(s, &c); // read height\n   stbi__pnm_skip_whitespace(s, &c);\n\n   maxv = stbi__pnm_getinteger(s, &c);  // read max value\n\n   if (maxv > 255)\n      return stbi__err(\"max value > 255\", \"PPM image not 8-bit\");\n   else\n      return 1;\n}\n#endif\n\nstatic int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)\n{\n   #ifndef STBI_NO_JPEG\n   if (stbi__jpeg_info(s, x, y, comp)) return 1;\n   #endif\n\n   #ifndef STBI_NO_PNG\n   if (stbi__png_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_GIF\n   if (stbi__gif_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_BMP\n   if (stbi__bmp_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PIC\n   if (stbi__pic_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PNM\n   if (stbi__pnm_info(s, x, y, comp))  return 1;\n   #endif\n\n   #ifndef STBI_NO_HDR\n   if (stbi__hdr_info(s, x, y, comp))  return 1;\n   #endif\n\n   // test tga last because it's a crappy test!\n   #ifndef STBI_NO_TGA\n   if (stbi__tga_info(s, x, y, comp))\n       return 1;\n   #endif\n   return stbi__err(\"unknown image type\", \"Image not of any known type, or corrupt\");\n}\n\nstatic int stbi__is_16_main(stbi__context *s)\n{\n   #ifndef STBI_NO_PNG\n   if (stbi__png_is16(s))  return 1;\n   #endif\n\n   #ifndef STBI_NO_PSD\n   if (stbi__psd_is16(s))  return 1;\n   #endif\n\n   return 0;\n}\n\n#ifndef STBI_NO_STDIO\nSTBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_info_from_file(f, x, y, comp);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__info_main(&s,x,y,comp);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n\nSTBIDEF int stbi_is_16_bit(char const *filename)\n{\n    FILE *f = stbi__fopen(filename, \"rb\");\n    int result;\n    if (!f) return stbi__err(\"can't fopen\", \"Unable to open file\");\n    result = stbi_is_16_bit_from_file(f);\n    fclose(f);\n    return result;\n}\n\nSTBIDEF int stbi_is_16_bit_from_file(FILE *f)\n{\n   int r;\n   stbi__context s;\n   long pos = ftell(f);\n   stbi__start_file(&s, f);\n   r = stbi__is_16_main(&s);\n   fseek(f,pos,SEEK_SET);\n   return r;\n}\n#endif // !STBI_NO_STDIO\n\nSTBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__info_main(&s,x,y,comp);\n}\n\nSTBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)\n{\n   stbi__context s;\n   stbi__start_mem(&s,buffer,len);\n   return stbi__is_16_main(&s);\n}\n\nSTBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user)\n{\n   stbi__context s;\n   stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user);\n   return stbi__is_16_main(&s);\n}\n\n#endif // STB_IMAGE_IMPLEMENTATION\n\n/*\n   revision history:\n      2.20  (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs\n      2.19  (2018-02-11) fix warning\n      2.18  (2018-01-30) fix warnings\n      2.17  (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug\n                         1-bit BMP\n                         *_is_16_bit api\n                         avoid warnings\n      2.16  (2017-07-23) all functions have 16-bit variants;\n                         STBI_NO_STDIO works again;\n                         compilation fixes;\n                         fix rounding in unpremultiply;\n                         optimize vertical flip;\n                         disable raw_len validation;\n                         documentation fixes\n      2.15  (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode;\n                         warning fixes; disable run-time SSE detection on gcc;\n                         uniform handling of optional \"return\" values;\n                         thread-safe initialization of zlib tables\n      2.14  (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs\n      2.13  (2016-11-29) add 16-bit API, only supported for PNG right now\n      2.12  (2016-04-02) fix typo in 2.11 PSD fix that caused crashes\n      2.11  (2016-04-02) allocate large structures on the stack\n                         remove white matting for transparent PSD\n                         fix reported channel count for PNG & BMP\n                         re-enable SSE2 in non-gcc 64-bit\n                         support RGB-formatted JPEG\n                         read 16-bit PNGs (only as 8-bit)\n      2.10  (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED\n      2.09  (2016-01-16) allow comments in PNM files\n                         16-bit-per-pixel TGA (not bit-per-component)\n                         info() for TGA could break due to .hdr handling\n                         info() for BMP to shares code instead of sloppy parse\n                         can use STBI_REALLOC_SIZED if allocator doesn't support realloc\n                         code cleanup\n      2.08  (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA\n      2.07  (2015-09-13) fix compiler warnings\n                         partial animated GIF support\n                         limited 16-bpc PSD support\n                         #ifdef unused functions\n                         bug with < 92 byte PIC,PNM,HDR,TGA\n      2.06  (2015-04-19) fix bug where PSD returns wrong '*comp' value\n      2.05  (2015-04-19) fix bug in progressive JPEG handling, fix warning\n      2.04  (2015-04-15) try to re-enable SIMD on MinGW 64-bit\n      2.03  (2015-04-12) extra corruption checking (mmozeiko)\n                         stbi_set_flip_vertically_on_load (nguillemot)\n                         fix NEON support; fix mingw support\n      2.02  (2015-01-19) fix incorrect assert, fix warning\n      2.01  (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2\n      2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG\n      2.00  (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg)\n                         progressive JPEG (stb)\n                         PGM/PPM support (Ken Miller)\n                         STBI_MALLOC,STBI_REALLOC,STBI_FREE\n                         GIF bugfix -- seemingly never worked\n                         STBI_NO_*, STBI_ONLY_*\n      1.48  (2014-12-14) fix incorrectly-named assert()\n      1.47  (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb)\n                         optimize PNG (ryg)\n                         fix bug in interlaced PNG with user-specified channel count (stb)\n      1.46  (2014-08-26)\n              fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG\n      1.45  (2014-08-16)\n              fix MSVC-ARM internal compiler error by wrapping malloc\n      1.44  (2014-08-07)\n              various warning fixes from Ronny Chevalier\n      1.43  (2014-07-15)\n              fix MSVC-only compiler problem in code changed in 1.42\n      1.42  (2014-07-09)\n              don't define _CRT_SECURE_NO_WARNINGS (affects user code)\n              fixes to stbi__cleanup_jpeg path\n              added STBI_ASSERT to avoid requiring assert.h\n      1.41  (2014-06-25)\n              fix search&replace from 1.36 that messed up comments/error messages\n      1.40  (2014-06-22)\n              fix gcc struct-initialization warning\n      1.39  (2014-06-15)\n              fix to TGA optimization when req_comp != number of components in TGA;\n              fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite)\n              add support for BMP version 5 (more ignored fields)\n      1.38  (2014-06-06)\n              suppress MSVC warnings on integer casts truncating values\n              fix accidental rename of 'skip' field of I/O\n      1.37  (2014-06-04)\n              remove duplicate typedef\n      1.36  (2014-06-03)\n              convert to header file single-file library\n              if de-iphone isn't set, load iphone images color-swapped instead of returning NULL\n      1.35  (2014-05-27)\n              various warnings\n              fix broken STBI_SIMD path\n              fix bug where stbi_load_from_file no longer left file pointer in correct place\n              fix broken non-easy path for 32-bit BMP (possibly never used)\n              TGA optimization by Arseny Kapoulkine\n      1.34  (unknown)\n              use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case\n      1.33  (2011-07-14)\n              make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements\n      1.32  (2011-07-13)\n              support for \"info\" function for all supported filetypes (SpartanJ)\n      1.31  (2011-06-20)\n              a few more leak fixes, bug in PNG handling (SpartanJ)\n      1.30  (2011-06-11)\n              added ability to load files via callbacks to accomidate custom input streams (Ben Wenger)\n              removed deprecated format-specific test/load functions\n              removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway\n              error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha)\n              fix inefficiency in decoding 32-bit BMP (David Woo)\n      1.29  (2010-08-16)\n              various warning fixes from Aurelien Pocheville\n      1.28  (2010-08-01)\n              fix bug in GIF palette transparency (SpartanJ)\n      1.27  (2010-08-01)\n              cast-to-stbi_uc to fix warnings\n      1.26  (2010-07-24)\n              fix bug in file buffering for PNG reported by SpartanJ\n      1.25  (2010-07-17)\n              refix trans_data warning (Won Chun)\n      1.24  (2010-07-12)\n              perf improvements reading from files on platforms with lock-heavy fgetc()\n              minor perf improvements for jpeg\n              deprecated type-specific functions so we'll get feedback if they're needed\n              attempt to fix trans_data warning (Won Chun)\n      1.23    fixed bug in iPhone support\n      1.22  (2010-07-10)\n              removed image *writing* support\n              stbi_info support from Jetro Lauha\n              GIF support from Jean-Marc Lienher\n              iPhone PNG-extensions from James Brown\n              warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva)\n      1.21    fix use of 'stbi_uc' in header (reported by jon blow)\n      1.20    added support for Softimage PIC, by Tom Seddon\n      1.19    bug in interlaced PNG corruption check (found by ryg)\n      1.18  (2008-08-02)\n              fix a threading bug (local mutable static)\n      1.17    support interlaced PNG\n      1.16    major bugfix - stbi__convert_format converted one too many pixels\n      1.15    initialize some fields for thread safety\n      1.14    fix threadsafe conversion bug\n              header-file-only version (#define STBI_HEADER_FILE_ONLY before including)\n      1.13    threadsafe\n      1.12    const qualifiers in the API\n      1.11    Support installable IDCT, colorspace conversion routines\n      1.10    Fixes for 64-bit (don't use \"unsigned long\")\n              optimized upsampling by Fabian \"ryg\" Giesen\n      1.09    Fix format-conversion for PSD code (bad global variables!)\n      1.08    Thatcher Ulrich's PSD code integrated by Nicolas Schulz\n      1.07    attempt to fix C++ warning/errors again\n      1.06    attempt to fix C++ warning/errors again\n      1.05    fix TGA loading to return correct *comp and use good luminance calc\n      1.04    default float alpha is 1, not 255; use 'void *' for stbi_image_free\n      1.03    bugfixes to STBI_NO_STDIO, STBI_NO_HDR\n      1.02    support for (subset of) HDR files, float interface for preferred access to them\n      1.01    fix bug: possible bug in handling right-side up bmps... not sure\n              fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all\n      1.00    interface to zlib that skips zlib header\n      0.99    correct handling of alpha in palette\n      0.98    TGA loader by lonesock; dynamically add loaders (untested)\n      0.97    jpeg errors on too large a file; also catch another malloc failure\n      0.96    fix detection of invalid v value - particleman@mollyrocket forum\n      0.95    during header scan, seek to markers in case of padding\n      0.94    STBI_NO_STDIO to disable stdio usage; rename all #defines the same\n      0.93    handle jpegtran output; verbose errors\n      0.92    read 4,8,16,24,32-bit BMP files of several formats\n      0.91    output 24-bit Windows 3.0 BMP files\n      0.90    fix a few more warnings; bump version number to approach 1.0\n      0.61    bugfixes due to Marc LeBlanc, Christopher Lloyd\n      0.60    fix compiling as c++\n      0.59    fix warnings: merge Dave Moore's -Wall fixes\n      0.58    fix bug: zlib uncompressed mode len/nlen was wrong endian\n      0.57    fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available\n      0.56    fix bug: zlib uncompressed mode len vs. nlen\n      0.55    fix bug: restart_interval not initialized to 0\n      0.54    allow NULL for 'int *comp'\n      0.53    fix bug in png 3->4; speedup png decoding\n      0.52    png handles req_comp=3,4 directly; minor cleanup; jpeg comments\n      0.51    obey req_comp requests, 1-component jpegs return as 1-component,\n              on 'test' only check type, not whether we support this variant\n      0.50  (2006-11-19)\n              first released version\n*/\n\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  },
  {
    "path": "libraries/stb_image_write.h",
    "content": "/* stb_image_write - v1.16 - public domain - http://nothings.org/stb\n   writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015\n                                     no warranty implied; use at your own risk\n\n   Before #including,\n\n       #define STB_IMAGE_WRITE_IMPLEMENTATION\n\n   in the file that you want to have the implementation.\n\n   Will probably not work correctly with strict-aliasing optimizations.\n\nABOUT:\n\n   This header file is a library for writing images to C stdio or a callback.\n\n   The PNG output is not optimal; it is 20-50% larger than the file\n   written by a decent optimizing implementation; though providing a custom\n   zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that.\n   This library is designed for source code compactness and simplicity,\n   not optimal image file size or run-time performance.\n\nBUILDING:\n\n   You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h.\n   You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace\n   malloc,realloc,free.\n   You can #define STBIW_MEMMOVE() to replace memmove()\n   You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function\n   for PNG compression (instead of the builtin one), it must have the following signature:\n   unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality);\n   The returned data will be freed with STBIW_FREE() (free() by default),\n   so it must be heap allocated with STBIW_MALLOC() (malloc() by default),\n\nUNICODE:\n\n   If compiling for Windows and you wish to use Unicode filenames, compile\n   with\n       #define STBIW_WINDOWS_UTF8\n   and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert\n   Windows wchar_t filenames to utf8.\n\nUSAGE:\n\n   There are five functions, one for each image file format:\n\n     int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes);\n     int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data);\n     int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality);\n     int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\n\n     void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically\n\n   There are also five equivalent functions that use an arbitrary write function. You are\n   expected to open/close your file-equivalent before and after calling these:\n\n     int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\n     int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\n     int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\n     int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality);\n\n   where the callback is:\n      void stbi_write_func(void *context, void *data, int size);\n\n   You can configure it with these global variables:\n      int stbi_write_tga_with_rle;             // defaults to true; set to 0 to disable RLE\n      int stbi_write_png_compression_level;    // defaults to 8; set to higher for more compression\n      int stbi_write_force_png_filter;         // defaults to -1; set to 0..5 to force a filter mode\n\n\n   You can define STBI_WRITE_NO_STDIO to disable the file variant of these\n   functions, so the library will not use stdio.h at all. However, this will\n   also disable HDR writing, because it requires stdio for formatted output.\n\n   Each function returns 0 on failure and non-0 on success.\n\n   The functions create an image file defined by the parameters. The image\n   is a rectangle of pixels stored from left-to-right, top-to-bottom.\n   Each pixel contains 'comp' channels of data stored interleaved with 8-bits\n   per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is\n   monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall.\n   The *data pointer points to the first byte of the top-left-most pixel.\n   For PNG, \"stride_in_bytes\" is the distance in bytes from the first byte of\n   a row of pixels to the first byte of the next row of pixels.\n\n   PNG creates output files with the same number of components as the input.\n   The BMP format expands Y to RGB in the file format and does not\n   output alpha.\n\n   PNG supports writing rectangles of data even when the bytes storing rows of\n   data are not consecutive in memory (e.g. sub-rectangles of a larger image),\n   by supplying the stride between the beginning of adjacent rows. The other\n   formats do not. (Thus you cannot write a native-format BMP through the BMP\n   writer, both because it is in BGR order and because it may have padding\n   at the end of the line.)\n\n   PNG allows you to set the deflate compression level by setting the global\n   variable 'stbi_write_png_compression_level' (it defaults to 8).\n\n   HDR expects linear float data. Since the format is always 32-bit rgb(e)\n   data, alpha (if provided) is discarded, and for monochrome data it is\n   replicated across all three channels.\n\n   TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed\n   data, set the global variable 'stbi_write_tga_with_rle' to 0.\n\n   JPEG does ignore alpha channels in input data; quality is between 1 and 100.\n   Higher quality looks better but results in a bigger image.\n   JPEG baseline (no JPEG progressive).\n\nCREDITS:\n\n\n   Sean Barrett           -    PNG/BMP/TGA\n   Baldur Karlsson        -    HDR\n   Jean-Sebastien Guay    -    TGA monochrome\n   Tim Kelsey             -    misc enhancements\n   Alan Hickman           -    TGA RLE\n   Emmanuel Julien        -    initial file IO callback implementation\n   Jon Olick              -    original jo_jpeg.cpp code\n   Daniel Gibson          -    integrate JPEG, allow external zlib\n   Aarni Koskela          -    allow choosing PNG filter\n\n   bugfixes:\n      github:Chribba\n      Guillaume Chereau\n      github:jry2\n      github:romigrou\n      Sergio Gonzalez\n      Jonas Karlsson\n      Filip Wasil\n      Thatcher Ulrich\n      github:poppolopoppo\n      Patrick Boettcher\n      github:xeekworx\n      Cap Petschulat\n      Simon Rodriguez\n      Ivan Tikhonov\n      github:ignotion\n      Adam Schackart\n      Andrew Kensler\n\nLICENSE\n\n  See end of file for license information.\n\n*/\n\n#ifndef INCLUDE_STB_IMAGE_WRITE_H\n#define INCLUDE_STB_IMAGE_WRITE_H\n\n#include <stdlib.h>\n\n// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline'\n#ifndef STBIWDEF\n#ifdef STB_IMAGE_WRITE_STATIC\n#define STBIWDEF  static\n#else\n#ifdef __cplusplus\n#define STBIWDEF  extern \"C\"\n#else\n#define STBIWDEF  extern\n#endif\n#endif\n#endif\n\n#ifndef STB_IMAGE_WRITE_STATIC  // C++ forbids static forward declarations\nSTBIWDEF int stbi_write_tga_with_rle;\nSTBIWDEF int stbi_write_png_compression_level;\nSTBIWDEF int stbi_write_force_png_filter;\n#endif\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void  *data, int quality);\n\n#ifdef STBIW_WINDOWS_UTF8\nSTBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input);\n#endif\n#endif\n\ntypedef void stbi_write_func(void *context, void *data, int size);\n\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data, int stride_in_bytes);\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void  *data);\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data);\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void  *data, int quality);\n\nSTBIWDEF void stbi_flip_vertically_on_write(int flip_boolean);\n\n#endif//INCLUDE_STB_IMAGE_WRITE_H\n\n#ifdef STB_IMAGE_WRITE_IMPLEMENTATION\n\n#ifdef _WIN32\n   #ifndef _CRT_SECURE_NO_WARNINGS\n   #define _CRT_SECURE_NO_WARNINGS\n   #endif\n   #ifndef _CRT_NONSTDC_NO_DEPRECATE\n   #define _CRT_NONSTDC_NO_DEPRECATE\n   #endif\n#endif\n\n#ifndef STBI_WRITE_NO_STDIO\n#include <stdio.h>\n#endif // STBI_WRITE_NO_STDIO\n\n#include <stdarg.h>\n#include <stdlib.h>\n#include <string.h>\n#include <math.h>\n\n#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED))\n// ok\n#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED)\n// ok\n#else\n#error \"Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED).\"\n#endif\n\n#ifndef STBIW_MALLOC\n#define STBIW_MALLOC(sz)        malloc(sz)\n#define STBIW_REALLOC(p,newsz)  realloc(p,newsz)\n#define STBIW_FREE(p)           free(p)\n#endif\n\n#ifndef STBIW_REALLOC_SIZED\n#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz)\n#endif\n\n\n#ifndef STBIW_MEMMOVE\n#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz)\n#endif\n\n\n#ifndef STBIW_ASSERT\n#include <assert.h>\n#define STBIW_ASSERT(x) assert(x)\n#endif\n\n#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff)\n\n#ifdef STB_IMAGE_WRITE_STATIC\nstatic int stbi_write_png_compression_level = 8;\nstatic int stbi_write_tga_with_rle = 1;\nstatic int stbi_write_force_png_filter = -1;\n#else\nint stbi_write_png_compression_level = 8;\nint stbi_write_tga_with_rle = 1;\nint stbi_write_force_png_filter = -1;\n#endif\n\nstatic int stbi__flip_vertically_on_write = 0;\n\nSTBIWDEF void stbi_flip_vertically_on_write(int flag)\n{\n   stbi__flip_vertically_on_write = flag;\n}\n\ntypedef struct\n{\n   stbi_write_func *func;\n   void *context;\n   unsigned char buffer[64];\n   int buf_used;\n} stbi__write_context;\n\n// initialize a callback-based context\nstatic void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context)\n{\n   s->func    = c;\n   s->context = context;\n}\n\n#ifndef STBI_WRITE_NO_STDIO\n\nstatic void stbi__stdio_write(void *context, void *data, int size)\n{\n   fwrite(data,1,size,(FILE*) context);\n}\n\n#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8)\n#ifdef __cplusplus\n#define STBIW_EXTERN extern \"C\"\n#else\n#define STBIW_EXTERN extern\n#endif\nSTBIW_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide);\nSTBIW_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default);\n\nSTBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input)\n{\n   return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL);\n}\n#endif\n\nstatic FILE *stbiw__fopen(char const *filename, char const *mode)\n{\n   FILE *f;\n#if defined(_WIN32) && defined(STBIW_WINDOWS_UTF8)\n   wchar_t wMode[64];\n   wchar_t wFilename[1024];\n   if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename)))\n      return 0;\n\n   if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode)))\n      return 0;\n\n#if defined(_MSC_VER) && _MSC_VER >= 1400\n   if (0 != _wfopen_s(&f, wFilename, wMode))\n      f = 0;\n#else\n   f = _wfopen(wFilename, wMode);\n#endif\n\n#elif defined(_MSC_VER) && _MSC_VER >= 1400\n   if (0 != fopen_s(&f, filename, mode))\n      f=0;\n#else\n   f = fopen(filename, mode);\n#endif\n   return f;\n}\n\nstatic int stbi__start_write_file(stbi__write_context *s, const char *filename)\n{\n   FILE *f = stbiw__fopen(filename, \"wb\");\n   stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f);\n   return f != NULL;\n}\n\nstatic void stbi__end_write_file(stbi__write_context *s)\n{\n   fclose((FILE *)s->context);\n}\n\n#endif // !STBI_WRITE_NO_STDIO\n\ntypedef unsigned int stbiw_uint32;\ntypedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1];\n\nstatic void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v)\n{\n   while (*fmt) {\n      switch (*fmt++) {\n         case ' ': break;\n         case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int));\n                     s->func(s->context,&x,1);\n                     break; }\n         case '2': { int x = va_arg(v,int);\n                     unsigned char b[2];\n                     b[0] = STBIW_UCHAR(x);\n                     b[1] = STBIW_UCHAR(x>>8);\n                     s->func(s->context,b,2);\n                     break; }\n         case '4': { stbiw_uint32 x = va_arg(v,int);\n                     unsigned char b[4];\n                     b[0]=STBIW_UCHAR(x);\n                     b[1]=STBIW_UCHAR(x>>8);\n                     b[2]=STBIW_UCHAR(x>>16);\n                     b[3]=STBIW_UCHAR(x>>24);\n                     s->func(s->context,b,4);\n                     break; }\n         default:\n            STBIW_ASSERT(0);\n            return;\n      }\n   }\n}\n\nstatic void stbiw__writef(stbi__write_context *s, const char *fmt, ...)\n{\n   va_list v;\n   va_start(v, fmt);\n   stbiw__writefv(s, fmt, v);\n   va_end(v);\n}\n\nstatic void stbiw__write_flush(stbi__write_context *s)\n{\n   if (s->buf_used) {\n      s->func(s->context, &s->buffer, s->buf_used);\n      s->buf_used = 0;\n   }\n}\n\nstatic void stbiw__putc(stbi__write_context *s, unsigned char c)\n{\n   s->func(s->context, &c, 1);\n}\n\nstatic void stbiw__write1(stbi__write_context *s, unsigned char a)\n{\n   if ((size_t)s->buf_used + 1 > sizeof(s->buffer))\n      stbiw__write_flush(s);\n   s->buffer[s->buf_used++] = a;\n}\n\nstatic void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c)\n{\n   int n;\n   if ((size_t)s->buf_used + 3 > sizeof(s->buffer))\n      stbiw__write_flush(s);\n   n = s->buf_used;\n   s->buf_used = n+3;\n   s->buffer[n+0] = a;\n   s->buffer[n+1] = b;\n   s->buffer[n+2] = c;\n}\n\nstatic void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d)\n{\n   unsigned char bg[3] = { 255, 0, 255}, px[3];\n   int k;\n\n   if (write_alpha < 0)\n      stbiw__write1(s, d[comp - 1]);\n\n   switch (comp) {\n      case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case\n      case 1:\n         if (expand_mono)\n            stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp\n         else\n            stbiw__write1(s, d[0]);  // monochrome TGA\n         break;\n      case 4:\n         if (!write_alpha) {\n            // composite against pink background\n            for (k = 0; k < 3; ++k)\n               px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255;\n            stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]);\n            break;\n         }\n         /* FALLTHROUGH */\n      case 3:\n         stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]);\n         break;\n   }\n   if (write_alpha > 0)\n      stbiw__write1(s, d[comp - 1]);\n}\n\nstatic void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono)\n{\n   stbiw_uint32 zero = 0;\n   int i,j, j_end;\n\n   if (y <= 0)\n      return;\n\n   if (stbi__flip_vertically_on_write)\n      vdir *= -1;\n\n   if (vdir < 0) {\n      j_end = -1; j = y-1;\n   } else {\n      j_end =  y; j = 0;\n   }\n\n   for (; j != j_end; j += vdir) {\n      for (i=0; i < x; ++i) {\n         unsigned char *d = (unsigned char *) data + (j*x+i)*comp;\n         stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d);\n      }\n      stbiw__write_flush(s);\n      s->func(s->context, &zero, scanline_pad);\n   }\n}\n\nstatic int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...)\n{\n   if (y < 0 || x < 0) {\n      return 0;\n   } else {\n      va_list v;\n      va_start(v, fmt);\n      stbiw__writefv(s, fmt, v);\n      va_end(v);\n      stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono);\n      return 1;\n   }\n}\n\nstatic int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data)\n{\n   if (comp != 4) {\n      // write RGB bitmap\n      int pad = (-x*3) & 3;\n      return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad,\n              \"11 4 22 4\" \"4 44 22 444444\",\n              'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40,  // file header\n               40, x,y, 1,24, 0,0,0,0,0,0);             // bitmap header\n   } else {\n      // RGBA bitmaps need a v4 header\n      // use BI_BITFIELDS mode with 32bpp and alpha mask\n      // (straight BI_RGB with alpha mask doesn't work in most readers)\n      return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *)data,1,0,\n         \"11 4 22 4\" \"4 44 22 444444 4444 4 444 444 444 444\",\n         'B', 'M', 14+108+x*y*4, 0, 0, 14+108, // file header\n         108, x,y, 1,32, 3,0,0,0,0,0, 0xff0000,0xff00,0xff,0xff000000u, 0, 0,0,0, 0,0,0, 0,0,0, 0,0,0); // bitmap V4 header\n   }\n}\n\nSTBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s = { 0 };\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_bmp_core(&s, x, y, comp, data);\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s = { 0 };\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_bmp_core(&s, x, y, comp, data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif //!STBI_WRITE_NO_STDIO\n\nstatic int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data)\n{\n   int has_alpha = (comp == 2 || comp == 4);\n   int colorbytes = has_alpha ? comp-1 : comp;\n   int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3\n\n   if (y < 0 || x < 0)\n      return 0;\n\n   if (!stbi_write_tga_with_rle) {\n      return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0,\n         \"111 221 2222 11\", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8);\n   } else {\n      int i,j,k;\n      int jend, jdir;\n\n      stbiw__writef(s, \"111 221 2222 11\", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8);\n\n      if (stbi__flip_vertically_on_write) {\n         j = 0;\n         jend = y;\n         jdir = 1;\n      } else {\n         j = y-1;\n         jend = -1;\n         jdir = -1;\n      }\n      for (; j != jend; j += jdir) {\n         unsigned char *row = (unsigned char *) data + j * x * comp;\n         int len;\n\n         for (i = 0; i < x; i += len) {\n            unsigned char *begin = row + i * comp;\n            int diff = 1;\n            len = 1;\n\n            if (i < x - 1) {\n               ++len;\n               diff = memcmp(begin, row + (i + 1) * comp, comp);\n               if (diff) {\n                  const unsigned char *prev = begin;\n                  for (k = i + 2; k < x && len < 128; ++k) {\n                     if (memcmp(prev, row + k * comp, comp)) {\n                        prev += comp;\n                        ++len;\n                     } else {\n                        --len;\n                        break;\n                     }\n                  }\n               } else {\n                  for (k = i + 2; k < x && len < 128; ++k) {\n                     if (!memcmp(begin, row + k * comp, comp)) {\n                        ++len;\n                     } else {\n                        break;\n                     }\n                  }\n               }\n            }\n\n            if (diff) {\n               unsigned char header = STBIW_UCHAR(len - 1);\n               stbiw__write1(s, header);\n               for (k = 0; k < len; ++k) {\n                  stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp);\n               }\n            } else {\n               unsigned char header = STBIW_UCHAR(len - 129);\n               stbiw__write1(s, header);\n               stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin);\n            }\n         }\n      }\n      stbiw__write_flush(s);\n   }\n   return 1;\n}\n\nSTBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s = { 0 };\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_tga_core(&s, x, y, comp, (void *) data);\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data)\n{\n   stbi__write_context s = { 0 };\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_tga_core(&s, x, y, comp, (void *) data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif\n\n// *************************************************************************************************\n// Radiance RGBE HDR writer\n// by Baldur Karlsson\n\n#define stbiw__max(a, b)  ((a) > (b) ? (a) : (b))\n\n#ifndef STBI_WRITE_NO_STDIO\n\nstatic void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear)\n{\n   int exponent;\n   float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2]));\n\n   if (maxcomp < 1e-32f) {\n      rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0;\n   } else {\n      float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp;\n\n      rgbe[0] = (unsigned char)(linear[0] * normalize);\n      rgbe[1] = (unsigned char)(linear[1] * normalize);\n      rgbe[2] = (unsigned char)(linear[2] * normalize);\n      rgbe[3] = (unsigned char)(exponent + 128);\n   }\n}\n\nstatic void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte)\n{\n   unsigned char lengthbyte = STBIW_UCHAR(length+128);\n   STBIW_ASSERT(length+128 <= 255);\n   s->func(s->context, &lengthbyte, 1);\n   s->func(s->context, &databyte, 1);\n}\n\nstatic void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data)\n{\n   unsigned char lengthbyte = STBIW_UCHAR(length);\n   STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code\n   s->func(s->context, &lengthbyte, 1);\n   s->func(s->context, data, length);\n}\n\nstatic void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline)\n{\n   unsigned char scanlineheader[4] = { 2, 2, 0, 0 };\n   unsigned char rgbe[4];\n   float linear[3];\n   int x;\n\n   scanlineheader[2] = (width&0xff00)>>8;\n   scanlineheader[3] = (width&0x00ff);\n\n   /* skip RLE for images too small or large */\n   if (width < 8 || width >= 32768) {\n      for (x=0; x < width; x++) {\n         switch (ncomp) {\n            case 4: /* fallthrough */\n            case 3: linear[2] = scanline[x*ncomp + 2];\n                    linear[1] = scanline[x*ncomp + 1];\n                    linear[0] = scanline[x*ncomp + 0];\n                    break;\n            default:\n                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\n                    break;\n         }\n         stbiw__linear_to_rgbe(rgbe, linear);\n         s->func(s->context, rgbe, 4);\n      }\n   } else {\n      int c,r;\n      /* encode into scratch buffer */\n      for (x=0; x < width; x++) {\n         switch(ncomp) {\n            case 4: /* fallthrough */\n            case 3: linear[2] = scanline[x*ncomp + 2];\n                    linear[1] = scanline[x*ncomp + 1];\n                    linear[0] = scanline[x*ncomp + 0];\n                    break;\n            default:\n                    linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0];\n                    break;\n         }\n         stbiw__linear_to_rgbe(rgbe, linear);\n         scratch[x + width*0] = rgbe[0];\n         scratch[x + width*1] = rgbe[1];\n         scratch[x + width*2] = rgbe[2];\n         scratch[x + width*3] = rgbe[3];\n      }\n\n      s->func(s->context, scanlineheader, 4);\n\n      /* RLE each component separately */\n      for (c=0; c < 4; c++) {\n         unsigned char *comp = &scratch[width*c];\n\n         x = 0;\n         while (x < width) {\n            // find first run\n            r = x;\n            while (r+2 < width) {\n               if (comp[r] == comp[r+1] && comp[r] == comp[r+2])\n                  break;\n               ++r;\n            }\n            if (r+2 >= width)\n               r = width;\n            // dump up to first run\n            while (x < r) {\n               int len = r-x;\n               if (len > 128) len = 128;\n               stbiw__write_dump_data(s, len, &comp[x]);\n               x += len;\n            }\n            // if there's a run, output it\n            if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd\n               // find next byte after run\n               while (r < width && comp[r] == comp[x])\n                  ++r;\n               // output run up to r\n               while (x < r) {\n                  int len = r-x;\n                  if (len > 127) len = 127;\n                  stbiw__write_run_data(s, len, comp[x]);\n                  x += len;\n               }\n            }\n         }\n      }\n   }\n}\n\nstatic int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data)\n{\n   if (y <= 0 || x <= 0 || data == NULL)\n      return 0;\n   else {\n      // Each component is stored separately. Allocate scratch space for full output scanline.\n      unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4);\n      int i, len;\n      char buffer[128];\n      char header[] = \"#?RADIANCE\\n# Written by stb_image_write.h\\nFORMAT=32-bit_rle_rgbe\\n\";\n      s->func(s->context, header, sizeof(header)-1);\n\n#ifdef __STDC_LIB_EXT1__\n      len = sprintf_s(buffer, sizeof(buffer), \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#else\n      len = sprintf(buffer, \"EXPOSURE=          1.0000000000000\\n\\n-Y %d +X %d\\n\", y, x);\n#endif\n      s->func(s->context, buffer, len);\n\n      for(i=0; i < y; i++)\n         stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i));\n      STBIW_FREE(scratch);\n      return 1;\n   }\n}\n\nSTBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data)\n{\n   stbi__write_context s = { 0 };\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_hdr_core(&s, x, y, comp, (float *) data);\n}\n\nSTBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data)\n{\n   stbi__write_context s = { 0 };\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif // STBI_WRITE_NO_STDIO\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n// PNG writer\n//\n\n#ifndef STBIW_ZLIB_COMPRESS\n// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size()\n#define stbiw__sbraw(a) ((int *) (void *) (a) - 2)\n#define stbiw__sbm(a)   stbiw__sbraw(a)[0]\n#define stbiw__sbn(a)   stbiw__sbraw(a)[1]\n\n#define stbiw__sbneedgrow(a,n)  ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a))\n#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0)\n#define stbiw__sbgrow(a,n)  stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a)))\n\n#define stbiw__sbpush(a, v)      (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v))\n#define stbiw__sbcount(a)        ((a) ? stbiw__sbn(a) : 0)\n#define stbiw__sbfree(a)         ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0)\n\nstatic void *stbiw__sbgrowf(void **arr, int increment, int itemsize)\n{\n   int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1;\n   void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2);\n   STBIW_ASSERT(p);\n   if (p) {\n      if (!*arr) ((int *) p)[1] = 0;\n      *arr = (void *) ((int *) p + 2);\n      stbiw__sbm(*arr) = m;\n   }\n   return *arr;\n}\n\nstatic unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount)\n{\n   while (*bitcount >= 8) {\n      stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer));\n      *bitbuffer >>= 8;\n      *bitcount -= 8;\n   }\n   return data;\n}\n\nstatic int stbiw__zlib_bitrev(int code, int codebits)\n{\n   int res=0;\n   while (codebits--) {\n      res = (res << 1) | (code & 1);\n      code >>= 1;\n   }\n   return res;\n}\n\nstatic unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit)\n{\n   int i;\n   for (i=0; i < limit && i < 258; ++i)\n      if (a[i] != b[i]) break;\n   return i;\n}\n\nstatic unsigned int stbiw__zhash(unsigned char *data)\n{\n   stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16);\n   hash ^= hash << 3;\n   hash += hash >> 5;\n   hash ^= hash << 4;\n   hash += hash >> 17;\n   hash ^= hash << 25;\n   hash += hash >> 6;\n   return hash;\n}\n\n#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount))\n#define stbiw__zlib_add(code,codebits) \\\n      (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush())\n#define stbiw__zlib_huffa(b,c)  stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c)\n// default huffman tables\n#define stbiw__zlib_huff1(n)  stbiw__zlib_huffa(0x30 + (n), 8)\n#define stbiw__zlib_huff2(n)  stbiw__zlib_huffa(0x190 + (n)-144, 9)\n#define stbiw__zlib_huff3(n)  stbiw__zlib_huffa(0 + (n)-256,7)\n#define stbiw__zlib_huff4(n)  stbiw__zlib_huffa(0xc0 + (n)-280,8)\n#define stbiw__zlib_huff(n)  ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n))\n#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n))\n\n#define stbiw__ZHASH   16384\n\n#endif // STBIW_ZLIB_COMPRESS\n\nSTBIWDEF unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)\n{\n#ifdef STBIW_ZLIB_COMPRESS\n   // user provided a zlib compress implementation, use that\n   return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality);\n#else // use builtin\n   static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 };\n   static unsigned char  lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5,  0 };\n   static unsigned short distc[]   = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 };\n   static unsigned char  disteb[]  = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 };\n   unsigned int bitbuf=0;\n   int i,j, bitcount=0;\n   unsigned char *out = NULL;\n   unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(unsigned char**));\n   if (hash_table == NULL)\n      return NULL;\n   if (quality < 5) quality = 5;\n\n   stbiw__sbpush(out, 0x78);   // DEFLATE 32K window\n   stbiw__sbpush(out, 0x5e);   // FLEVEL = 1\n   stbiw__zlib_add(1,1);  // BFINAL = 1\n   stbiw__zlib_add(1,2);  // BTYPE = 1 -- fixed huffman\n\n   for (i=0; i < stbiw__ZHASH; ++i)\n      hash_table[i] = NULL;\n\n   i=0;\n   while (i < data_len-3) {\n      // hash next 3 bytes of data to be compressed\n      int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3;\n      unsigned char *bestloc = 0;\n      unsigned char **hlist = hash_table[h];\n      int n = stbiw__sbcount(hlist);\n      for (j=0; j < n; ++j) {\n         if (hlist[j]-data > i-32768) { // if entry lies within window\n            int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i);\n            if (d >= best) { best=d; bestloc=hlist[j]; }\n         }\n      }\n      // when hash table entry is too long, delete half the entries\n      if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) {\n         STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality);\n         stbiw__sbn(hash_table[h]) = quality;\n      }\n      stbiw__sbpush(hash_table[h],data+i);\n\n      if (bestloc) {\n         // \"lazy matching\" - check match at *next* byte, and if it's better, do cur byte as literal\n         h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1);\n         hlist = hash_table[h];\n         n = stbiw__sbcount(hlist);\n         for (j=0; j < n; ++j) {\n            if (hlist[j]-data > i-32767) {\n               int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1);\n               if (e > best) { // if next match is better, bail on current match\n                  bestloc = NULL;\n                  break;\n               }\n            }\n         }\n      }\n\n      if (bestloc) {\n         int d = (int) (data+i - bestloc); // distance back\n         STBIW_ASSERT(d <= 32767 && best <= 258);\n         for (j=0; best > lengthc[j+1]-1; ++j);\n         stbiw__zlib_huff(j+257);\n         if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]);\n         for (j=0; d > distc[j+1]-1; ++j);\n         stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5);\n         if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]);\n         i += best;\n      } else {\n         stbiw__zlib_huffb(data[i]);\n         ++i;\n      }\n   }\n   // write out final bytes\n   for (;i < data_len; ++i)\n      stbiw__zlib_huffb(data[i]);\n   stbiw__zlib_huff(256); // end of block\n   // pad with 0 bits to byte boundary\n   while (bitcount)\n      stbiw__zlib_add(0,1);\n\n   for (i=0; i < stbiw__ZHASH; ++i)\n      (void) stbiw__sbfree(hash_table[i]);\n   STBIW_FREE(hash_table);\n\n   // store uncompressed instead if compression was worse\n   if (stbiw__sbn(out) > data_len + 2 + ((data_len+32766)/32767)*5) {\n      stbiw__sbn(out) = 2;  // truncate to DEFLATE 32K window and FLEVEL = 1\n      for (j = 0; j < data_len;) {\n         int blocklen = data_len - j;\n         if (blocklen > 32767) blocklen = 32767;\n         stbiw__sbpush(out, data_len - j == blocklen); // BFINAL = ?, BTYPE = 0 -- no compression\n         stbiw__sbpush(out, STBIW_UCHAR(blocklen)); // LEN\n         stbiw__sbpush(out, STBIW_UCHAR(blocklen >> 8));\n         stbiw__sbpush(out, STBIW_UCHAR(~blocklen)); // NLEN\n         stbiw__sbpush(out, STBIW_UCHAR(~blocklen >> 8));\n         memcpy(out+stbiw__sbn(out), data+j, blocklen);\n         stbiw__sbn(out) += blocklen;\n         j += blocklen;\n      }\n   }\n\n   {\n      // compute adler32 on input\n      unsigned int s1=1, s2=0;\n      int blocklen = (int) (data_len % 5552);\n      j=0;\n      while (j < data_len) {\n         for (i=0; i < blocklen; ++i) { s1 += data[j+i]; s2 += s1; }\n         s1 %= 65521; s2 %= 65521;\n         j += blocklen;\n         blocklen = 5552;\n      }\n      stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8));\n      stbiw__sbpush(out, STBIW_UCHAR(s2));\n      stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8));\n      stbiw__sbpush(out, STBIW_UCHAR(s1));\n   }\n   *out_len = stbiw__sbn(out);\n   // make returned pointer freeable\n   STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len);\n   return (unsigned char *) stbiw__sbraw(out);\n#endif // STBIW_ZLIB_COMPRESS\n}\n\nstatic unsigned int stbiw__crc32(unsigned char *buffer, int len)\n{\n#ifdef STBIW_CRC32\n    return STBIW_CRC32(buffer, len);\n#else\n   static unsigned int crc_table[256] =\n   {\n      0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n      0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n      0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n      0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n      0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n      0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n      0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n      0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n      0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n      0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n      0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n      0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n      0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n      0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n      0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n      0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n      0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n      0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n      0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n      0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n      0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n      0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n      0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n      0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n      0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n      0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n      0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n      0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n      0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n      0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n      0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n      0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n   };\n\n   unsigned int crc = ~0u;\n   int i;\n   for (i=0; i < len; ++i)\n      crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)];\n   return ~crc;\n#endif\n}\n\n#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4)\n#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v));\n#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3])\n\nstatic void stbiw__wpcrc(unsigned char **data, int len)\n{\n   unsigned int crc = stbiw__crc32(*data - len - 4, len+4);\n   stbiw__wp32(*data, crc);\n}\n\nstatic unsigned char stbiw__paeth(int a, int b, int c)\n{\n   int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c);\n   if (pa <= pb && pa <= pc) return STBIW_UCHAR(a);\n   if (pb <= pc) return STBIW_UCHAR(b);\n   return STBIW_UCHAR(c);\n}\n\n// @OPTIMIZE: provide an option that always forces left-predict or paeth predict\nstatic void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer)\n{\n   static int mapping[] = { 0,1,2,3,4 };\n   static int firstmap[] = { 0,1,0,5,6 };\n   int *mymap = (y != 0) ? mapping : firstmap;\n   int i;\n   int type = mymap[filter_type];\n   unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y);\n   int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes;\n\n   if (type==0) {\n      memcpy(line_buffer, z, width*n);\n      return;\n   }\n\n   // first loop isn't optimized since it's just one pixel\n   for (i = 0; i < n; ++i) {\n      switch (type) {\n         case 1: line_buffer[i] = z[i]; break;\n         case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break;\n         case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break;\n         case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break;\n         case 5: line_buffer[i] = z[i]; break;\n         case 6: line_buffer[i] = z[i]; break;\n      }\n   }\n   switch (type) {\n      case 1: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-n]; break;\n      case 2: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - z[i-signed_stride]; break;\n      case 3: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break;\n      case 4: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break;\n      case 5: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - (z[i-n]>>1); break;\n      case 6: for (i=n; i < width*n; ++i) line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break;\n   }\n}\n\nSTBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len)\n{\n   int force_filter = stbi_write_force_png_filter;\n   int ctype[5] = { -1, 0, 4, 2, 6 };\n   unsigned char sig[8] = { 137,80,78,71,13,10,26,10 };\n   unsigned char *out,*o, *filt, *zlib;\n   signed char *line_buffer;\n   int j,zlen;\n\n   if (stride_bytes == 0)\n      stride_bytes = x * n;\n\n   if (force_filter >= 5) {\n      force_filter = -1;\n   }\n\n   filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0;\n   line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; }\n   for (j=0; j < y; ++j) {\n      int filter_type;\n      if (force_filter > -1) {\n         filter_type = force_filter;\n         stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, force_filter, line_buffer);\n      } else { // Estimate the best filter by running through all of them:\n         int best_filter = 0, best_filter_val = 0x7fffffff, est, i;\n         for (filter_type = 0; filter_type < 5; filter_type++) {\n            stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, filter_type, line_buffer);\n\n            // Estimate the entropy of the line using this filter; the less, the better.\n            est = 0;\n            for (i = 0; i < x*n; ++i) {\n               est += abs((signed char) line_buffer[i]);\n            }\n            if (est < best_filter_val) {\n               best_filter_val = est;\n               best_filter = filter_type;\n            }\n         }\n         if (filter_type != best_filter) {  // If the last iteration already got us the best filter, don't redo it\n            stbiw__encode_png_line((unsigned char*)(pixels), stride_bytes, x, y, j, n, best_filter, line_buffer);\n            filter_type = best_filter;\n         }\n      }\n      // when we get here, filter_type contains the filter type, and line_buffer contains the data\n      filt[j*(x*n+1)] = (unsigned char) filter_type;\n      STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n);\n   }\n   STBIW_FREE(line_buffer);\n   zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level);\n   STBIW_FREE(filt);\n   if (!zlib) return 0;\n\n   // each tag requires 12 bytes of overhead\n   out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12);\n   if (!out) return 0;\n   *out_len = 8 + 12+13 + 12+zlen + 12;\n\n   o=out;\n   STBIW_MEMMOVE(o,sig,8); o+= 8;\n   stbiw__wp32(o, 13); // header length\n   stbiw__wptag(o, \"IHDR\");\n   stbiw__wp32(o, x);\n   stbiw__wp32(o, y);\n   *o++ = 8;\n   *o++ = STBIW_UCHAR(ctype[n]);\n   *o++ = 0;\n   *o++ = 0;\n   *o++ = 0;\n   stbiw__wpcrc(&o,13);\n\n   stbiw__wp32(o, zlen);\n   stbiw__wptag(o, \"IDAT\");\n   STBIW_MEMMOVE(o, zlib, zlen);\n   o += zlen;\n   STBIW_FREE(zlib);\n   stbiw__wpcrc(&o, zlen);\n\n   stbiw__wp32(o,0);\n   stbiw__wptag(o, \"IEND\");\n   stbiw__wpcrc(&o,0);\n\n   STBIW_ASSERT(o == out + *out_len);\n\n   return out;\n}\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes)\n{\n   FILE *f;\n   int len;\n   unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);\n   if (png == NULL) return 0;\n\n   f = stbiw__fopen(filename, \"wb\");\n   if (!f) { STBIW_FREE(png); return 0; }\n   fwrite(png, 1, len, f);\n   fclose(f);\n   STBIW_FREE(png);\n   return 1;\n}\n#endif\n\nSTBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes)\n{\n   int len;\n   unsigned char *png = stbi_write_png_to_mem((const unsigned char *) data, stride_bytes, x, y, comp, &len);\n   if (png == NULL) return 0;\n   func(context, png, len);\n   STBIW_FREE(png);\n   return 1;\n}\n\n\n/* ***************************************************************************\n *\n * JPEG writer\n *\n * This is based on Jon Olick's jo_jpeg.cpp:\n * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html\n */\n\nstatic const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,\n      24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 };\n\nstatic void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) {\n   int bitBuf = *bitBufP, bitCnt = *bitCntP;\n   bitCnt += bs[1];\n   bitBuf |= bs[0] << (24 - bitCnt);\n   while(bitCnt >= 8) {\n      unsigned char c = (bitBuf >> 16) & 255;\n      stbiw__putc(s, c);\n      if(c == 255) {\n         stbiw__putc(s, 0);\n      }\n      bitBuf <<= 8;\n      bitCnt -= 8;\n   }\n   *bitBufP = bitBuf;\n   *bitCntP = bitCnt;\n}\n\nstatic void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) {\n   float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p;\n   float z1, z2, z3, z4, z5, z11, z13;\n\n   float tmp0 = d0 + d7;\n   float tmp7 = d0 - d7;\n   float tmp1 = d1 + d6;\n   float tmp6 = d1 - d6;\n   float tmp2 = d2 + d5;\n   float tmp5 = d2 - d5;\n   float tmp3 = d3 + d4;\n   float tmp4 = d3 - d4;\n\n   // Even part\n   float tmp10 = tmp0 + tmp3;   // phase 2\n   float tmp13 = tmp0 - tmp3;\n   float tmp11 = tmp1 + tmp2;\n   float tmp12 = tmp1 - tmp2;\n\n   d0 = tmp10 + tmp11;       // phase 3\n   d4 = tmp10 - tmp11;\n\n   z1 = (tmp12 + tmp13) * 0.707106781f; // c4\n   d2 = tmp13 + z1;       // phase 5\n   d6 = tmp13 - z1;\n\n   // Odd part\n   tmp10 = tmp4 + tmp5;       // phase 2\n   tmp11 = tmp5 + tmp6;\n   tmp12 = tmp6 + tmp7;\n\n   // The rotator is modified from fig 4-8 to avoid extra negations.\n   z5 = (tmp10 - tmp12) * 0.382683433f; // c6\n   z2 = tmp10 * 0.541196100f + z5; // c2-c6\n   z4 = tmp12 * 1.306562965f + z5; // c2+c6\n   z3 = tmp11 * 0.707106781f; // c4\n\n   z11 = tmp7 + z3;      // phase 5\n   z13 = tmp7 - z3;\n\n   *d5p = z13 + z2;         // phase 6\n   *d3p = z13 - z2;\n   *d1p = z11 + z4;\n   *d7p = z11 - z4;\n\n   *d0p = d0;  *d2p = d2;  *d4p = d4;  *d6p = d6;\n}\n\nstatic void stbiw__jpg_calcBits(int val, unsigned short bits[2]) {\n   int tmp1 = val < 0 ? -val : val;\n   val = val < 0 ? val-1 : val;\n   bits[1] = 1;\n   while(tmp1 >>= 1) {\n      ++bits[1];\n   }\n   bits[0] = val & ((1<<bits[1])-1);\n}\n\nstatic int stbiw__jpg_processDU(stbi__write_context *s, int *bitBuf, int *bitCnt, float *CDU, int du_stride, float *fdtbl, int DC, const unsigned short HTDC[256][2], const unsigned short HTAC[256][2]) {\n   const unsigned short EOB[2] = { HTAC[0x00][0], HTAC[0x00][1] };\n   const unsigned short M16zeroes[2] = { HTAC[0xF0][0], HTAC[0xF0][1] };\n   int dataOff, i, j, n, diff, end0pos, x, y;\n   int DU[64];\n\n   // DCT rows\n   for(dataOff=0, n=du_stride*8; dataOff<n; dataOff+=du_stride) {\n      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+1], &CDU[dataOff+2], &CDU[dataOff+3], &CDU[dataOff+4], &CDU[dataOff+5], &CDU[dataOff+6], &CDU[dataOff+7]);\n   }\n   // DCT columns\n   for(dataOff=0; dataOff<8; ++dataOff) {\n      stbiw__jpg_DCT(&CDU[dataOff], &CDU[dataOff+du_stride], &CDU[dataOff+du_stride*2], &CDU[dataOff+du_stride*3], &CDU[dataOff+du_stride*4],\n                     &CDU[dataOff+du_stride*5], &CDU[dataOff+du_stride*6], &CDU[dataOff+du_stride*7]);\n   }\n   // Quantize/descale/zigzag the coefficients\n   for(y = 0, j=0; y < 8; ++y) {\n      for(x = 0; x < 8; ++x,++j) {\n         float v;\n         i = y*du_stride+x;\n         v = CDU[i]*fdtbl[j];\n         // DU[stbiw__jpg_ZigZag[j]] = (int)(v < 0 ? ceilf(v - 0.5f) : floorf(v + 0.5f));\n         // ceilf() and floorf() are C99, not C89, but I /think/ they're not needed here anyway?\n         DU[stbiw__jpg_ZigZag[j]] = (int)(v < 0 ? v - 0.5f : v + 0.5f);\n      }\n   }\n\n   // Encode DC\n   diff = DU[0] - DC;\n   if (diff == 0) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[0]);\n   } else {\n      unsigned short bits[2];\n      stbiw__jpg_calcBits(diff, bits);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTDC[bits[1]]);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n   }\n   // Encode ACs\n   end0pos = 63;\n   for(; (end0pos>0)&&(DU[end0pos]==0); --end0pos) {\n   }\n   // end0pos = first element in reverse order !=0\n   if(end0pos == 0) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\n      return DU[0];\n   }\n   for(i = 1; i <= end0pos; ++i) {\n      int startpos = i;\n      int nrzeroes;\n      unsigned short bits[2];\n      for (; DU[i]==0 && i<=end0pos; ++i) {\n      }\n      nrzeroes = i-startpos;\n      if ( nrzeroes >= 16 ) {\n         int lng = nrzeroes>>4;\n         int nrmarker;\n         for (nrmarker=1; nrmarker <= lng; ++nrmarker)\n            stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes);\n         nrzeroes &= 15;\n      }\n      stbiw__jpg_calcBits(DU[i], bits);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]);\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits);\n   }\n   if(end0pos != 63) {\n      stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB);\n   }\n   return DU[0];\n}\n\nstatic int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) {\n   // Constants that don't pollute global namespace\n   static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0};\n   static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\n   static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d};\n   static const unsigned char std_ac_luminance_values[] = {\n      0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08,\n      0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28,\n      0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59,\n      0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89,\n      0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6,\n      0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2,\n      0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n   };\n   static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0};\n   static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11};\n   static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77};\n   static const unsigned char std_ac_chrominance_values[] = {\n      0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,\n      0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26,\n      0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,\n      0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87,\n      0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,\n      0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,\n      0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa\n   };\n   // Huffman tables\n   static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}};\n   static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}};\n   static const unsigned short YAC_HT[256][2] = {\n      {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n   };\n   static const unsigned short UVAC_HT[256][2] = {\n      {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0},\n      {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0}\n   };\n   static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,\n                             37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99};\n   static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,\n                              99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99};\n   static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f,\n                                 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f };\n\n   int row, col, i, k, subsample;\n   float fdtbl_Y[64], fdtbl_UV[64];\n   unsigned char YTable[64], UVTable[64];\n\n   if(!data || !width || !height || comp > 4 || comp < 1) {\n      return 0;\n   }\n\n   quality = quality ? quality : 90;\n   subsample = quality <= 90 ? 1 : 0;\n   quality = quality < 1 ? 1 : quality > 100 ? 100 : quality;\n   quality = quality < 50 ? 5000 / quality : 200 - quality * 2;\n\n   for(i = 0; i < 64; ++i) {\n      int uvti, yti = (YQT[i]*quality+50)/100;\n      YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti);\n      uvti = (UVQT[i]*quality+50)/100;\n      UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti);\n   }\n\n   for(row = 0, k = 0; row < 8; ++row) {\n      for(col = 0; col < 8; ++col, ++k) {\n         fdtbl_Y[k]  = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\n         fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]);\n      }\n   }\n\n   // Write Headers\n   {\n      static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 };\n      static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 };\n      const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width),\n                                      3,1,(unsigned char)(subsample?0x22:0x11),0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 };\n      s->func(s->context, (void*)head0, sizeof(head0));\n      s->func(s->context, (void*)YTable, sizeof(YTable));\n      stbiw__putc(s, 1);\n      s->func(s->context, UVTable, sizeof(UVTable));\n      s->func(s->context, (void*)head1, sizeof(head1));\n      s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1);\n      s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values));\n      stbiw__putc(s, 0x10); // HTYACinfo\n      s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1);\n      s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values));\n      stbiw__putc(s, 1); // HTUDCinfo\n      s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1);\n      s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values));\n      stbiw__putc(s, 0x11); // HTUACinfo\n      s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1);\n      s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values));\n      s->func(s->context, (void*)head2, sizeof(head2));\n   }\n\n   // Encode 8x8 macroblocks\n   {\n      static const unsigned short fillBits[] = {0x7F, 7};\n      int DCY=0, DCU=0, DCV=0;\n      int bitBuf=0, bitCnt=0;\n      // comp == 2 is grey+alpha (alpha is ignored)\n      int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0;\n      const unsigned char *dataR = (const unsigned char *)data;\n      const unsigned char *dataG = dataR + ofsG;\n      const unsigned char *dataB = dataR + ofsB;\n      int x, y, pos;\n      if(subsample) {\n         for(y = 0; y < height; y += 16) {\n            for(x = 0; x < width; x += 16) {\n               float Y[256], U[256], V[256];\n               for(row = y, pos = 0; row < y+16; ++row) {\n                  // row >= height => use last input row\n                  int clamped_row = (row < height) ? row : height - 1;\n                  int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp;\n                  for(col = x; col < x+16; ++col, ++pos) {\n                     // if col >= width => use pixel from last input column\n                     int p = base_p + ((col < width) ? col : (width-1))*comp;\n                     float r = dataR[p], g = dataG[p], b = dataB[p];\n                     Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128;\n                     U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b;\n                     V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b;\n                  }\n               }\n               DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+0,   16, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n               DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+8,   16, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n               DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+128, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n               DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y+136, 16, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n\n               // subsample U,V\n               {\n                  float subU[64], subV[64];\n                  int yy, xx;\n                  for(yy = 0, pos = 0; yy < 8; ++yy) {\n                     for(xx = 0; xx < 8; ++xx, ++pos) {\n                        int j = yy*32+xx*2;\n                        subU[pos] = (U[j+0] + U[j+1] + U[j+16] + U[j+17]) * 0.25f;\n                        subV[pos] = (V[j+0] + V[j+1] + V[j+16] + V[j+17]) * 0.25f;\n                     }\n                  }\n                  DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subU, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n                  DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, subV, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n               }\n            }\n         }\n      } else {\n         for(y = 0; y < height; y += 8) {\n            for(x = 0; x < width; x += 8) {\n               float Y[64], U[64], V[64];\n               for(row = y, pos = 0; row < y+8; ++row) {\n                  // row >= height => use last input row\n                  int clamped_row = (row < height) ? row : height - 1;\n                  int base_p = (stbi__flip_vertically_on_write ? (height-1-clamped_row) : clamped_row)*width*comp;\n                  for(col = x; col < x+8; ++col, ++pos) {\n                     // if col >= width => use pixel from last input column\n                     int p = base_p + ((col < width) ? col : (width-1))*comp;\n                     float r = dataR[p], g = dataG[p], b = dataB[p];\n                     Y[pos]= +0.29900f*r + 0.58700f*g + 0.11400f*b - 128;\n                     U[pos]= -0.16874f*r - 0.33126f*g + 0.50000f*b;\n                     V[pos]= +0.50000f*r - 0.41869f*g - 0.08131f*b;\n                  }\n               }\n\n               DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, Y, 8, fdtbl_Y,  DCY, YDC_HT, YAC_HT);\n               DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, U, 8, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n               DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, V, 8, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n            }\n         }\n      }\n\n      // Do the bit alignment of the EOI marker\n      stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits);\n   }\n\n   // EOI\n   stbiw__putc(s, 0xFF);\n   stbiw__putc(s, 0xD9);\n\n   return 1;\n}\n\nSTBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality)\n{\n   stbi__write_context s = { 0 };\n   stbi__start_write_callbacks(&s, func, context);\n   return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality);\n}\n\n\n#ifndef STBI_WRITE_NO_STDIO\nSTBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality)\n{\n   stbi__write_context s = { 0 };\n   if (stbi__start_write_file(&s,filename)) {\n      int r = stbi_write_jpg_core(&s, x, y, comp, data, quality);\n      stbi__end_write_file(&s);\n      return r;\n   } else\n      return 0;\n}\n#endif\n\n#endif // STB_IMAGE_WRITE_IMPLEMENTATION\n\n/* Revision history\n      1.16  (2021-07-11)\n             make Deflate code emit uncompressed blocks when it would otherwise expand\n             support writing BMPs with alpha channel\n      1.15  (2020-07-13) unknown\n      1.14  (2020-02-02) updated JPEG writer to downsample chroma channels\n      1.13\n      1.12\n      1.11  (2019-08-11)\n\n      1.10  (2019-02-07)\n             support utf8 filenames in Windows; fix warnings and platform ifdefs\n      1.09  (2018-02-11)\n             fix typo in zlib quality API, improve STB_I_W_STATIC in C++\n      1.08  (2018-01-29)\n             add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter\n      1.07  (2017-07-24)\n             doc fix\n      1.06 (2017-07-23)\n             writing JPEG (using Jon Olick's code)\n      1.05   ???\n      1.04 (2017-03-03)\n             monochrome BMP expansion\n      1.03   ???\n      1.02 (2016-04-02)\n             avoid allocating large structures on the stack\n      1.01 (2016-01-16)\n             STBIW_REALLOC_SIZED: support allocators with no realloc support\n             avoid race-condition in crc initialization\n             minor compile issues\n      1.00 (2015-09-14)\n             installable file IO function\n      0.99 (2015-09-13)\n             warning fixes; TGA rle support\n      0.98 (2015-04-08)\n             added STBIW_MALLOC, STBIW_ASSERT etc\n      0.97 (2015-01-18)\n             fixed HDR asserts, rewrote HDR rle logic\n      0.96 (2015-01-17)\n             add HDR output\n             fix monochrome BMP\n      0.95 (2014-08-17)\n             add monochrome TGA output\n      0.94 (2014-05-31)\n             rename private functions to avoid conflicts with stb_image.h\n      0.93 (2014-05-27)\n             warning fixes\n      0.92 (2010-08-01)\n             casts to unsigned char to fix warnings\n      0.91 (2010-07-17)\n             first public release\n      0.90   first internal release\n*/\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  },
  {
    "path": "libraries/stb_vorbis.c",
    "content": "// Ogg Vorbis audio decoder - v1.22 - public domain\n// http://nothings.org/stb_vorbis/\n//\n// Original version written by Sean Barrett in 2007.\n//\n// Originally sponsored by RAD Game Tools. Seeking implementation\n// sponsored by Phillip Bennefall, Marc Andersen, Aaron Baker,\n// Elias Software, Aras Pranckevicius, and Sean Barrett.\n//\n// LICENSE\n//\n//   See end of file for license information.\n//\n// Limitations:\n//\n//   - floor 0 not supported (used in old ogg vorbis files pre-2004)\n//   - lossless sample-truncation at beginning ignored\n//   - cannot concatenate multiple vorbis streams\n//   - sample positions are 32-bit, limiting seekable 192Khz\n//       files to around 6 hours (Ogg supports 64-bit)\n//\n// Feature contributors:\n//    Dougall Johnson (sample-exact seeking)\n//\n// Bugfix/warning contributors:\n//    Terje Mathisen     Niklas Frykholm     Andy Hill\n//    Casey Muratori     John Bolton         Gargaj\n//    Laurent Gomila     Marc LeBlanc        Ronny Chevalier\n//    Bernhard Wodo      Evan Balster        github:alxprd\n//    Tom Beaumont       Ingo Leitgeb        Nicolas Guillemot\n//    Phillip Bennefall  Rohit               Thiago Goulart\n//    github:manxorist   Saga Musix          github:infatum\n//    Timur Gagiev       Maxwell Koo         Peter Waller\n//    github:audinowho   Dougall Johnson     David Reid\n//    github:Clownacy    Pedro J. Estebanez  Remi Verschelde\n//    AnthoFoxo          github:morlat       Gabriel Ravier\n//\n// Partial history:\n//    1.22    - 2021-07-11 - various small fixes\n//    1.21    - 2021-07-02 - fix bug for files with no comments\n//    1.20    - 2020-07-11 - several small fixes\n//    1.19    - 2020-02-05 - warnings\n//    1.18    - 2020-02-02 - fix seek bugs; parse header comments; misc warnings etc.\n//    1.17    - 2019-07-08 - fix CVE-2019-13217..CVE-2019-13223 (by ForAllSecure)\n//    1.16    - 2019-03-04 - fix warnings\n//    1.15    - 2019-02-07 - explicit failure if Ogg Skeleton data is found\n//    1.14    - 2018-02-11 - delete bogus dealloca usage\n//    1.13    - 2018-01-29 - fix truncation of last frame (hopefully)\n//    1.12    - 2017-11-21 - limit residue begin/end to blocksize/2 to avoid large temp allocs in bad/corrupt files\n//    1.11    - 2017-07-23 - fix MinGW compilation\n//    1.10    - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory\n//    1.09    - 2016-04-04 - back out 'truncation of last frame' fix from previous version\n//    1.08    - 2016-04-02 - warnings; setup memory leaks; truncation of last frame\n//    1.07    - 2015-01-16 - fixes for crashes on invalid files; warning fixes; const\n//    1.06    - 2015-08-31 - full, correct support for seeking API (Dougall Johnson)\n//                           some crash fixes when out of memory or with corrupt files\n//                           fix some inappropriately signed shifts\n//    1.05    - 2015-04-19 - don't define __forceinline if it's redundant\n//    1.04    - 2014-08-27 - fix missing const-correct case in API\n//    1.03    - 2014-08-07 - warning fixes\n//    1.02    - 2014-07-09 - declare qsort comparison as explicitly _cdecl in Windows\n//    1.01    - 2014-06-18 - fix stb_vorbis_get_samples_float (interleaved was correct)\n//    1.0     - 2014-05-26 - fix memory leaks; fix warnings; fix bugs in >2-channel;\n//                           (API change) report sample rate for decode-full-file funcs\n//\n// See end of file for full version history.\n\n\n//////////////////////////////////////////////////////////////////////////////\n//\n//  HEADER BEGINS HERE\n//\n\n#ifndef STB_VORBIS_INCLUDE_STB_VORBIS_H\n#define STB_VORBIS_INCLUDE_STB_VORBIS_H\n\n#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO)\n#define STB_VORBIS_NO_STDIO 1\n#endif\n\n#ifndef STB_VORBIS_NO_STDIO\n#include <stdio.h>\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n///////////   THREAD SAFETY\n\n// Individual stb_vorbis* handles are not thread-safe; you cannot decode from\n// them from multiple threads at the same time. However, you can have multiple\n// stb_vorbis* handles and decode from them independently in multiple thrads.\n\n\n///////////   MEMORY ALLOCATION\n\n// normally stb_vorbis uses malloc() to allocate memory at startup,\n// and alloca() to allocate temporary memory during a frame on the\n// stack. (Memory consumption will depend on the amount of setup\n// data in the file and how you set the compile flags for speed\n// vs. size. In my test files the maximal-size usage is ~150KB.)\n//\n// You can modify the wrapper functions in the source (setup_malloc,\n// setup_temp_malloc, temp_malloc) to change this behavior, or you\n// can use a simpler allocation model: you pass in a buffer from\n// which stb_vorbis will allocate _all_ its memory (including the\n// temp memory). \"open\" may fail with a VORBIS_outofmem if you\n// do not pass in enough data; there is no way to determine how\n// much you do need except to succeed (at which point you can\n// query get_info to find the exact amount required. yes I know\n// this is lame).\n//\n// If you pass in a non-NULL buffer of the type below, allocation\n// will occur from it as described above. Otherwise just pass NULL\n// to use malloc()/alloca()\n\ntypedef struct\n{\n   char *alloc_buffer;\n   int   alloc_buffer_length_in_bytes;\n} stb_vorbis_alloc;\n\n\n///////////   FUNCTIONS USEABLE WITH ALL INPUT MODES\n\ntypedef struct stb_vorbis stb_vorbis;\n\ntypedef struct\n{\n   unsigned int sample_rate;\n   int channels;\n\n   unsigned int setup_memory_required;\n   unsigned int setup_temp_memory_required;\n   unsigned int temp_memory_required;\n\n   int max_frame_size;\n} stb_vorbis_info;\n\ntypedef struct\n{\n   char *vendor;\n\n   int comment_list_length;\n   char **comment_list;\n} stb_vorbis_comment;\n\n// get general information about the file\nextern stb_vorbis_info stb_vorbis_get_info(stb_vorbis *f);\n\n// get ogg comments\nextern stb_vorbis_comment stb_vorbis_get_comment(stb_vorbis *f);\n\n// get the last error detected (clears it, too)\nextern int stb_vorbis_get_error(stb_vorbis *f);\n\n// close an ogg vorbis file and free all memory in use\nextern void stb_vorbis_close(stb_vorbis *f);\n\n// this function returns the offset (in samples) from the beginning of the\n// file that will be returned by the next decode, if it is known, or -1\n// otherwise. after a flush_pushdata() call, this may take a while before\n// it becomes valid again.\n// NOT WORKING YET after a seek with PULLDATA API\nextern int stb_vorbis_get_sample_offset(stb_vorbis *f);\n\n// returns the current seek point within the file, or offset from the beginning\n// of the memory buffer. In pushdata mode it returns 0.\nextern unsigned int stb_vorbis_get_file_offset(stb_vorbis *f);\n\n///////////   PUSHDATA API\n\n#ifndef STB_VORBIS_NO_PUSHDATA_API\n\n// this API allows you to get blocks of data from any source and hand\n// them to stb_vorbis. you have to buffer them; stb_vorbis will tell\n// you how much it used, and you have to give it the rest next time;\n// and stb_vorbis may not have enough data to work with and you will\n// need to give it the same data again PLUS more. Note that the Vorbis\n// specification does not bound the size of an individual frame.\n\nextern stb_vorbis *stb_vorbis_open_pushdata(\n         const unsigned char * datablock, int datablock_length_in_bytes,\n         int *datablock_memory_consumed_in_bytes,\n         int *error,\n         const stb_vorbis_alloc *alloc_buffer);\n// create a vorbis decoder by passing in the initial data block containing\n//    the ogg&vorbis headers (you don't need to do parse them, just provide\n//    the first N bytes of the file--you're told if it's not enough, see below)\n// on success, returns an stb_vorbis *, does not set error, returns the amount of\n//    data parsed/consumed on this call in *datablock_memory_consumed_in_bytes;\n// on failure, returns NULL on error and sets *error, does not change *datablock_memory_consumed\n// if returns NULL and *error is VORBIS_need_more_data, then the input block was\n//       incomplete and you need to pass in a larger block from the start of the file\n\nextern int stb_vorbis_decode_frame_pushdata(\n         stb_vorbis *f,\n         const unsigned char *datablock, int datablock_length_in_bytes,\n         int *channels,             // place to write number of float * buffers\n         float ***output,           // place to write float ** array of float * buffers\n         int *samples               // place to write number of output samples\n     );\n// decode a frame of audio sample data if possible from the passed-in data block\n//\n// return value: number of bytes we used from datablock\n//\n// possible cases:\n//     0 bytes used, 0 samples output (need more data)\n//     N bytes used, 0 samples output (resynching the stream, keep going)\n//     N bytes used, M samples output (one frame of data)\n// note that after opening a file, you will ALWAYS get one N-bytes,0-sample\n// frame, because Vorbis always \"discards\" the first frame.\n//\n// Note that on resynch, stb_vorbis will rarely consume all of the buffer,\n// instead only datablock_length_in_bytes-3 or less. This is because it wants\n// to avoid missing parts of a page header if they cross a datablock boundary,\n// without writing state-machiney code to record a partial detection.\n//\n// The number of channels returned are stored in *channels (which can be\n// NULL--it is always the same as the number of channels reported by\n// get_info). *output will contain an array of float* buffers, one per\n// channel. In other words, (*output)[0][0] contains the first sample from\n// the first channel, and (*output)[1][0] contains the first sample from\n// the second channel.\n//\n// *output points into stb_vorbis's internal output buffer storage; these\n// buffers are owned by stb_vorbis and application code should not free\n// them or modify their contents. They are transient and will be overwritten\n// once you ask for more data to get decoded, so be sure to grab any data\n// you need before then.\n\nextern void stb_vorbis_flush_pushdata(stb_vorbis *f);\n// inform stb_vorbis that your next datablock will not be contiguous with\n// previous ones (e.g. you've seeked in the data); future attempts to decode\n// frames will cause stb_vorbis to resynchronize (as noted above), and\n// once it sees a valid Ogg page (typically 4-8KB, as large as 64KB), it\n// will begin decoding the _next_ frame.\n//\n// if you want to seek using pushdata, you need to seek in your file, then\n// call stb_vorbis_flush_pushdata(), then start calling decoding, then once\n// decoding is returning you data, call stb_vorbis_get_sample_offset, and\n// if you don't like the result, seek your file again and repeat.\n#endif\n\n\n//////////   PULLING INPUT API\n\n#ifndef STB_VORBIS_NO_PULLDATA_API\n// This API assumes stb_vorbis is allowed to pull data from a source--\n// either a block of memory containing the _entire_ vorbis stream, or a\n// FILE * that you or it create, or possibly some other reading mechanism\n// if you go modify the source to replace the FILE * case with some kind\n// of callback to your code. (But if you don't support seeking, you may\n// just want to go ahead and use pushdata.)\n\n#if !defined(STB_VORBIS_NO_STDIO) && !defined(STB_VORBIS_NO_INTEGER_CONVERSION)\nextern int stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output);\n#endif\n#if !defined(STB_VORBIS_NO_INTEGER_CONVERSION)\nextern int stb_vorbis_decode_memory(const unsigned char *mem, int len, int *channels, int *sample_rate, short **output);\n#endif\n// decode an entire file and output the data interleaved into a malloc()ed\n// buffer stored in *output. The return value is the number of samples\n// decoded, or -1 if the file could not be opened or was not an ogg vorbis file.\n// When you're done with it, just free() the pointer returned in *output.\n\nextern stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len,\n                                  int *error, const stb_vorbis_alloc *alloc_buffer);\n// create an ogg vorbis decoder from an ogg vorbis stream in memory (note\n// this must be the entire stream!). on failure, returns NULL and sets *error\n\n#ifndef STB_VORBIS_NO_STDIO\nextern stb_vorbis * stb_vorbis_open_filename(const char *filename,\n                                  int *error, const stb_vorbis_alloc *alloc_buffer);\n// create an ogg vorbis decoder from a filename via fopen(). on failure,\n// returns NULL and sets *error (possibly to VORBIS_file_open_failure).\n\nextern stb_vorbis * stb_vorbis_open_file(FILE *f, int close_handle_on_close,\n                                  int *error, const stb_vorbis_alloc *alloc_buffer);\n// create an ogg vorbis decoder from an open FILE *, looking for a stream at\n// the _current_ seek point (ftell). on failure, returns NULL and sets *error.\n// note that stb_vorbis must \"own\" this stream; if you seek it in between\n// calls to stb_vorbis, it will become confused. Moreover, if you attempt to\n// perform stb_vorbis_seek_*() operations on this file, it will assume it\n// owns the _entire_ rest of the file after the start point. Use the next\n// function, stb_vorbis_open_file_section(), to limit it.\n\nextern stb_vorbis * stb_vorbis_open_file_section(FILE *f, int close_handle_on_close,\n                int *error, const stb_vorbis_alloc *alloc_buffer, unsigned int len);\n// create an ogg vorbis decoder from an open FILE *, looking for a stream at\n// the _current_ seek point (ftell); the stream will be of length 'len' bytes.\n// on failure, returns NULL and sets *error. note that stb_vorbis must \"own\"\n// this stream; if you seek it in between calls to stb_vorbis, it will become\n// confused.\n#endif\n\nextern int stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number);\nextern int stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number);\n// these functions seek in the Vorbis file to (approximately) 'sample_number'.\n// after calling seek_frame(), the next call to get_frame_*() will include\n// the specified sample. after calling stb_vorbis_seek(), the next call to\n// stb_vorbis_get_samples_* will start with the specified sample. If you\n// do not need to seek to EXACTLY the target sample when using get_samples_*,\n// you can also use seek_frame().\n\nextern int stb_vorbis_seek_start(stb_vorbis *f);\n// this function is equivalent to stb_vorbis_seek(f,0)\n\nextern unsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f);\nextern float        stb_vorbis_stream_length_in_seconds(stb_vorbis *f);\n// these functions return the total length of the vorbis stream\n\nextern int stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output);\n// decode the next frame and return the number of samples. the number of\n// channels returned are stored in *channels (which can be NULL--it is always\n// the same as the number of channels reported by get_info). *output will\n// contain an array of float* buffers, one per channel. These outputs will\n// be overwritten on the next call to stb_vorbis_get_frame_*.\n//\n// You generally should not intermix calls to stb_vorbis_get_frame_*()\n// and stb_vorbis_get_samples_*(), since the latter calls the former.\n\n#ifndef STB_VORBIS_NO_INTEGER_CONVERSION\nextern int stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts);\nextern int stb_vorbis_get_frame_short            (stb_vorbis *f, int num_c, short **buffer, int num_samples);\n#endif\n// decode the next frame and return the number of *samples* per channel.\n// Note that for interleaved data, you pass in the number of shorts (the\n// size of your array), but the return value is the number of samples per\n// channel, not the total number of samples.\n//\n// The data is coerced to the number of channels you request according to the\n// channel coercion rules (see below). You must pass in the size of your\n// buffer(s) so that stb_vorbis will not overwrite the end of the buffer.\n// The maximum buffer size needed can be gotten from get_info(); however,\n// the Vorbis I specification implies an absolute maximum of 4096 samples\n// per channel.\n\n// Channel coercion rules:\n//    Let M be the number of channels requested, and N the number of channels present,\n//    and Cn be the nth channel; let stereo L be the sum of all L and center channels,\n//    and stereo R be the sum of all R and center channels (channel assignment from the\n//    vorbis spec).\n//        M    N       output\n//        1    k      sum(Ck) for all k\n//        2    *      stereo L, stereo R\n//        k    l      k > l, the first l channels, then 0s\n//        k    l      k <= l, the first k channels\n//    Note that this is not _good_ surround etc. mixing at all! It's just so\n//    you get something useful.\n\nextern int stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats);\nextern int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples);\n// gets num_samples samples, not necessarily on a frame boundary--this requires\n// buffering so you have to supply the buffers. DOES NOT APPLY THE COERCION RULES.\n// Returns the number of samples stored per channel; it may be less than requested\n// at the end of the file. If there are no more samples in the file, returns 0.\n\n#ifndef STB_VORBIS_NO_INTEGER_CONVERSION\nextern int stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts);\nextern int stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int num_samples);\n#endif\n// gets num_samples samples, not necessarily on a frame boundary--this requires\n// buffering so you have to supply the buffers. Applies the coercion rules above\n// to produce 'channels' channels. Returns the number of samples stored per channel;\n// it may be less than requested at the end of the file. If there are no more\n// samples in the file, returns 0.\n\n#endif\n\n////////   ERROR CODES\n\nenum STBVorbisError\n{\n   VORBIS__no_error,\n\n   VORBIS_need_more_data=1,             // not a real error\n\n   VORBIS_invalid_api_mixing,           // can't mix API modes\n   VORBIS_outofmem,                     // not enough memory\n   VORBIS_feature_not_supported,        // uses floor 0\n   VORBIS_too_many_channels,            // STB_VORBIS_MAX_CHANNELS is too small\n   VORBIS_file_open_failure,            // fopen() failed\n   VORBIS_seek_without_length,          // can't seek in unknown-length file\n\n   VORBIS_unexpected_eof=10,            // file is truncated?\n   VORBIS_seek_invalid,                 // seek past EOF\n\n   // decoding errors (corrupt/invalid stream) -- you probably\n   // don't care about the exact details of these\n\n   // vorbis errors:\n   VORBIS_invalid_setup=20,\n   VORBIS_invalid_stream,\n\n   // ogg errors:\n   VORBIS_missing_capture_pattern=30,\n   VORBIS_invalid_stream_structure_version,\n   VORBIS_continued_packet_flag_invalid,\n   VORBIS_incorrect_stream_serial_number,\n   VORBIS_invalid_first_page,\n   VORBIS_bad_packet_type,\n   VORBIS_cant_find_last_page,\n   VORBIS_seek_failed,\n   VORBIS_ogg_skeleton_not_supported\n};\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif // STB_VORBIS_INCLUDE_STB_VORBIS_H\n//\n//  HEADER ENDS HERE\n//\n//////////////////////////////////////////////////////////////////////////////\n\n#ifndef STB_VORBIS_HEADER_ONLY\n\n// global configuration settings (e.g. set these in the project/makefile),\n// or just set them in this file at the top (although ideally the first few\n// should be visible when the header file is compiled too, although it's not\n// crucial)\n\n// STB_VORBIS_NO_PUSHDATA_API\n//     does not compile the code for the various stb_vorbis_*_pushdata()\n//     functions\n// #define STB_VORBIS_NO_PUSHDATA_API\n\n// STB_VORBIS_NO_PULLDATA_API\n//     does not compile the code for the non-pushdata APIs\n// #define STB_VORBIS_NO_PULLDATA_API\n\n// STB_VORBIS_NO_STDIO\n//     does not compile the code for the APIs that use FILE *s internally\n//     or externally (implied by STB_VORBIS_NO_PULLDATA_API)\n// #define STB_VORBIS_NO_STDIO\n\n// STB_VORBIS_NO_INTEGER_CONVERSION\n//     does not compile the code for converting audio sample data from\n//     float to integer (implied by STB_VORBIS_NO_PULLDATA_API)\n// #define STB_VORBIS_NO_INTEGER_CONVERSION\n\n// STB_VORBIS_NO_FAST_SCALED_FLOAT\n//      does not use a fast float-to-int trick to accelerate float-to-int on\n//      most platforms which requires endianness be defined correctly.\n//#define STB_VORBIS_NO_FAST_SCALED_FLOAT\n\n\n// STB_VORBIS_MAX_CHANNELS [number]\n//     globally define this to the maximum number of channels you need.\n//     The spec does not put a restriction on channels except that\n//     the count is stored in a byte, so 255 is the hard limit.\n//     Reducing this saves about 16 bytes per value, so using 16 saves\n//     (255-16)*16 or around 4KB. Plus anything other memory usage\n//     I forgot to account for. Can probably go as low as 8 (7.1 audio),\n//     6 (5.1 audio), or 2 (stereo only).\n#ifndef STB_VORBIS_MAX_CHANNELS\n#define STB_VORBIS_MAX_CHANNELS    16  // enough for anyone?\n#endif\n\n// STB_VORBIS_PUSHDATA_CRC_COUNT [number]\n//     after a flush_pushdata(), stb_vorbis begins scanning for the\n//     next valid page, without backtracking. when it finds something\n//     that looks like a page, it streams through it and verifies its\n//     CRC32. Should that validation fail, it keeps scanning. But it's\n//     possible that _while_ streaming through to check the CRC32 of\n//     one candidate page, it sees another candidate page. This #define\n//     determines how many \"overlapping\" candidate pages it can search\n//     at once. Note that \"real\" pages are typically ~4KB to ~8KB, whereas\n//     garbage pages could be as big as 64KB, but probably average ~16KB.\n//     So don't hose ourselves by scanning an apparent 64KB page and\n//     missing a ton of real ones in the interim; so minimum of 2\n#ifndef STB_VORBIS_PUSHDATA_CRC_COUNT\n#define STB_VORBIS_PUSHDATA_CRC_COUNT  4\n#endif\n\n// STB_VORBIS_FAST_HUFFMAN_LENGTH [number]\n//     sets the log size of the huffman-acceleration table.  Maximum\n//     supported value is 24. with larger numbers, more decodings are O(1),\n//     but the table size is larger so worse cache missing, so you'll have\n//     to probe (and try multiple ogg vorbis files) to find the sweet spot.\n#ifndef STB_VORBIS_FAST_HUFFMAN_LENGTH\n#define STB_VORBIS_FAST_HUFFMAN_LENGTH   10\n#endif\n\n// STB_VORBIS_FAST_BINARY_LENGTH [number]\n//     sets the log size of the binary-search acceleration table. this\n//     is used in similar fashion to the fast-huffman size to set initial\n//     parameters for the binary search\n\n// STB_VORBIS_FAST_HUFFMAN_INT\n//     The fast huffman tables are much more efficient if they can be\n//     stored as 16-bit results instead of 32-bit results. This restricts\n//     the codebooks to having only 65535 possible outcomes, though.\n//     (At least, accelerated by the huffman table.)\n#ifndef STB_VORBIS_FAST_HUFFMAN_INT\n#define STB_VORBIS_FAST_HUFFMAN_SHORT\n#endif\n\n// STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH\n//     If the 'fast huffman' search doesn't succeed, then stb_vorbis falls\n//     back on binary searching for the correct one. This requires storing\n//     extra tables with the huffman codes in sorted order. Defining this\n//     symbol trades off space for speed by forcing a linear search in the\n//     non-fast case, except for \"sparse\" codebooks.\n// #define STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH\n\n// STB_VORBIS_DIVIDES_IN_RESIDUE\n//     stb_vorbis precomputes the result of the scalar residue decoding\n//     that would otherwise require a divide per chunk. you can trade off\n//     space for time by defining this symbol.\n// #define STB_VORBIS_DIVIDES_IN_RESIDUE\n\n// STB_VORBIS_DIVIDES_IN_CODEBOOK\n//     vorbis VQ codebooks can be encoded two ways: with every case explicitly\n//     stored, or with all elements being chosen from a small range of values,\n//     and all values possible in all elements. By default, stb_vorbis expands\n//     this latter kind out to look like the former kind for ease of decoding,\n//     because otherwise an integer divide-per-vector-element is required to\n//     unpack the index. If you define STB_VORBIS_DIVIDES_IN_CODEBOOK, you can\n//     trade off storage for speed.\n//#define STB_VORBIS_DIVIDES_IN_CODEBOOK\n\n#ifdef STB_VORBIS_CODEBOOK_SHORTS\n#error \"STB_VORBIS_CODEBOOK_SHORTS is no longer supported as it produced incorrect results for some input formats\"\n#endif\n\n// STB_VORBIS_DIVIDE_TABLE\n//     this replaces small integer divides in the floor decode loop with\n//     table lookups. made less than 1% difference, so disabled by default.\n\n// STB_VORBIS_NO_INLINE_DECODE\n//     disables the inlining of the scalar codebook fast-huffman decode.\n//     might save a little codespace; useful for debugging\n// #define STB_VORBIS_NO_INLINE_DECODE\n\n// STB_VORBIS_NO_DEFER_FLOOR\n//     Normally we only decode the floor without synthesizing the actual\n//     full curve. We can instead synthesize the curve immediately. This\n//     requires more memory and is very likely slower, so I don't think\n//     you'd ever want to do it except for debugging.\n// #define STB_VORBIS_NO_DEFER_FLOOR\n\n\n\n\n//////////////////////////////////////////////////////////////////////////////\n\n#ifdef STB_VORBIS_NO_PULLDATA_API\n   #define STB_VORBIS_NO_INTEGER_CONVERSION\n   #define STB_VORBIS_NO_STDIO\n#endif\n\n#if defined(STB_VORBIS_NO_CRT) && !defined(STB_VORBIS_NO_STDIO)\n   #define STB_VORBIS_NO_STDIO 1\n#endif\n\n#ifndef STB_VORBIS_NO_INTEGER_CONVERSION\n#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT\n\n   // only need endianness for fast-float-to-int, which we don't\n   // use for pushdata\n\n   #ifndef STB_VORBIS_BIG_ENDIAN\n     #define STB_VORBIS_ENDIAN  0\n   #else\n     #define STB_VORBIS_ENDIAN  1\n   #endif\n\n#endif\n#endif\n\n\n#ifndef STB_VORBIS_NO_STDIO\n#include <stdio.h>\n#endif\n\n#ifndef STB_VORBIS_NO_CRT\n   #include <stdlib.h>\n   #include <string.h>\n   #include <assert.h>\n   #include <math.h>\n\n   // find definition of alloca if it's not in stdlib.h:\n   #if defined(_MSC_VER) || defined(__MINGW32__)\n      #include <malloc.h>\n   #endif\n   #if defined(__linux__) || defined(__linux) || defined(__sun__) || defined(__EMSCRIPTEN__) || defined(__NEWLIB__)\n      #include <alloca.h>\n   #endif\n#else // STB_VORBIS_NO_CRT\n   #define NULL 0\n   #define malloc(s)   0\n   #define free(s)     ((void) 0)\n   #define realloc(s)  0\n#endif // STB_VORBIS_NO_CRT\n\n#include <limits.h>\n\n#ifdef __MINGW32__\n   // eff you mingw:\n   //     \"fixed\":\n   //         http://sourceforge.net/p/mingw-w64/mailman/message/32882927/\n   //     \"no that broke the build, reverted, who cares about C\":\n   //         http://sourceforge.net/p/mingw-w64/mailman/message/32890381/\n   #ifdef __forceinline\n   #undef __forceinline\n   #endif\n   #define __forceinline\n   #ifndef alloca\n   #define alloca __builtin_alloca\n   #endif\n#elif !defined(_MSC_VER)\n   #if __GNUC__\n      #define __forceinline inline\n   #else\n      #define __forceinline\n   #endif\n#endif\n\n#if STB_VORBIS_MAX_CHANNELS > 256\n#error \"Value of STB_VORBIS_MAX_CHANNELS outside of allowed range\"\n#endif\n\n#if STB_VORBIS_FAST_HUFFMAN_LENGTH > 24\n#error \"Value of STB_VORBIS_FAST_HUFFMAN_LENGTH outside of allowed range\"\n#endif\n\n\n#if 0\n#include <crtdbg.h>\n#define CHECK(f)   _CrtIsValidHeapPointer(f->channel_buffers[1])\n#else\n#define CHECK(f)   ((void) 0)\n#endif\n\n#define MAX_BLOCKSIZE_LOG  13   // from specification\n#define MAX_BLOCKSIZE      (1 << MAX_BLOCKSIZE_LOG)\n\n\ntypedef unsigned char  uint8;\ntypedef   signed char   int8;\ntypedef unsigned short uint16;\ntypedef   signed short  int16;\ntypedef unsigned int   uint32;\ntypedef   signed int    int32;\n\n#ifndef TRUE\n#define TRUE 1\n#define FALSE 0\n#endif\n\ntypedef float codetype;\n\n#ifdef _MSC_VER\n#define STBV_NOTUSED(v)  (void)(v)\n#else\n#define STBV_NOTUSED(v)  (void)sizeof(v)\n#endif\n\n// @NOTE\n//\n// Some arrays below are tagged \"//varies\", which means it's actually\n// a variable-sized piece of data, but rather than malloc I assume it's\n// small enough it's better to just allocate it all together with the\n// main thing\n//\n// Most of the variables are specified with the smallest size I could pack\n// them into. It might give better performance to make them all full-sized\n// integers. It should be safe to freely rearrange the structures or change\n// the sizes larger--nothing relies on silently truncating etc., nor the\n// order of variables.\n\n#define FAST_HUFFMAN_TABLE_SIZE   (1 << STB_VORBIS_FAST_HUFFMAN_LENGTH)\n#define FAST_HUFFMAN_TABLE_MASK   (FAST_HUFFMAN_TABLE_SIZE - 1)\n\ntypedef struct\n{\n   int dimensions, entries;\n   uint8 *codeword_lengths;\n   float  minimum_value;\n   float  delta_value;\n   uint8  value_bits;\n   uint8  lookup_type;\n   uint8  sequence_p;\n   uint8  sparse;\n   uint32 lookup_values;\n   codetype *multiplicands;\n   uint32 *codewords;\n   #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT\n    int16  fast_huffman[FAST_HUFFMAN_TABLE_SIZE];\n   #else\n    int32  fast_huffman[FAST_HUFFMAN_TABLE_SIZE];\n   #endif\n   uint32 *sorted_codewords;\n   int    *sorted_values;\n   int     sorted_entries;\n} Codebook;\n\ntypedef struct\n{\n   uint8 order;\n   uint16 rate;\n   uint16 bark_map_size;\n   uint8 amplitude_bits;\n   uint8 amplitude_offset;\n   uint8 number_of_books;\n   uint8 book_list[16]; // varies\n} Floor0;\n\ntypedef struct\n{\n   uint8 partitions;\n   uint8 partition_class_list[32]; // varies\n   uint8 class_dimensions[16]; // varies\n   uint8 class_subclasses[16]; // varies\n   uint8 class_masterbooks[16]; // varies\n   int16 subclass_books[16][8]; // varies\n   uint16 Xlist[31*8+2]; // varies\n   uint8 sorted_order[31*8+2];\n   uint8 neighbors[31*8+2][2];\n   uint8 floor1_multiplier;\n   uint8 rangebits;\n   int values;\n} Floor1;\n\ntypedef union\n{\n   Floor0 floor0;\n   Floor1 floor1;\n} Floor;\n\ntypedef struct\n{\n   uint32 begin, end;\n   uint32 part_size;\n   uint8 classifications;\n   uint8 classbook;\n   uint8 **classdata;\n   int16 (*residue_books)[8];\n} Residue;\n\ntypedef struct\n{\n   uint8 magnitude;\n   uint8 angle;\n   uint8 mux;\n} MappingChannel;\n\ntypedef struct\n{\n   uint16 coupling_steps;\n   MappingChannel *chan;\n   uint8  submaps;\n   uint8  submap_floor[15]; // varies\n   uint8  submap_residue[15]; // varies\n} Mapping;\n\ntypedef struct\n{\n   uint8 blockflag;\n   uint8 mapping;\n   uint16 windowtype;\n   uint16 transformtype;\n} Mode;\n\ntypedef struct\n{\n   uint32  goal_crc;    // expected crc if match\n   int     bytes_left;  // bytes left in packet\n   uint32  crc_so_far;  // running crc\n   int     bytes_done;  // bytes processed in _current_ chunk\n   uint32  sample_loc;  // granule pos encoded in page\n} CRCscan;\n\ntypedef struct\n{\n   uint32 page_start, page_end;\n   uint32 last_decoded_sample;\n} ProbedPage;\n\nstruct stb_vorbis\n{\n  // user-accessible info\n   unsigned int sample_rate;\n   int channels;\n\n   unsigned int setup_memory_required;\n   unsigned int temp_memory_required;\n   unsigned int setup_temp_memory_required;\n\n   char *vendor;\n   int comment_list_length;\n   char **comment_list;\n\n  // input config\n#ifndef STB_VORBIS_NO_STDIO\n   FILE *f;\n   uint32 f_start;\n   int close_on_free;\n#endif\n\n   uint8 *stream;\n   uint8 *stream_start;\n   uint8 *stream_end;\n\n   uint32 stream_len;\n\n   uint8  push_mode;\n\n   // the page to seek to when seeking to start, may be zero\n   uint32 first_audio_page_offset;\n\n   // p_first is the page on which the first audio packet ends\n   // (but not necessarily the page on which it starts)\n   ProbedPage p_first, p_last;\n\n  // memory management\n   stb_vorbis_alloc alloc;\n   int setup_offset;\n   int temp_offset;\n\n  // run-time results\n   int eof;\n   enum STBVorbisError error;\n\n  // user-useful data\n\n  // header info\n   int blocksize[2];\n   int blocksize_0, blocksize_1;\n   int codebook_count;\n   Codebook *codebooks;\n   int floor_count;\n   uint16 floor_types[64]; // varies\n   Floor *floor_config;\n   int residue_count;\n   uint16 residue_types[64]; // varies\n   Residue *residue_config;\n   int mapping_count;\n   Mapping *mapping;\n   int mode_count;\n   Mode mode_config[64];  // varies\n\n   uint32 total_samples;\n\n  // decode buffer\n   float *channel_buffers[STB_VORBIS_MAX_CHANNELS];\n   float *outputs        [STB_VORBIS_MAX_CHANNELS];\n\n   float *previous_window[STB_VORBIS_MAX_CHANNELS];\n   int previous_length;\n\n   #ifndef STB_VORBIS_NO_DEFER_FLOOR\n   int16 *finalY[STB_VORBIS_MAX_CHANNELS];\n   #else\n   float *floor_buffers[STB_VORBIS_MAX_CHANNELS];\n   #endif\n\n   uint32 current_loc; // sample location of next frame to decode\n   int    current_loc_valid;\n\n  // per-blocksize precomputed data\n\n   // twiddle factors\n   float *A[2],*B[2],*C[2];\n   float *window[2];\n   uint16 *bit_reverse[2];\n\n  // current page/packet/segment streaming info\n   uint32 serial; // stream serial number for verification\n   int last_page;\n   int segment_count;\n   uint8 segments[255];\n   uint8 page_flag;\n   uint8 bytes_in_seg;\n   uint8 first_decode;\n   int next_seg;\n   int last_seg;  // flag that we're on the last segment\n   int last_seg_which; // what was the segment number of the last seg?\n   uint32 acc;\n   int valid_bits;\n   int packet_bytes;\n   int end_seg_with_known_loc;\n   uint32 known_loc_for_packet;\n   int discard_samples_deferred;\n   uint32 samples_output;\n\n  // push mode scanning\n   int page_crc_tests; // only in push_mode: number of tests active; -1 if not searching\n#ifndef STB_VORBIS_NO_PUSHDATA_API\n   CRCscan scan[STB_VORBIS_PUSHDATA_CRC_COUNT];\n#endif\n\n  // sample-access\n   int channel_buffer_start;\n   int channel_buffer_end;\n};\n\n#if defined(STB_VORBIS_NO_PUSHDATA_API)\n   #define IS_PUSH_MODE(f)   FALSE\n#elif defined(STB_VORBIS_NO_PULLDATA_API)\n   #define IS_PUSH_MODE(f)   TRUE\n#else\n   #define IS_PUSH_MODE(f)   ((f)->push_mode)\n#endif\n\ntypedef struct stb_vorbis vorb;\n\nstatic int error(vorb *f, enum STBVorbisError e)\n{\n   f->error = e;\n   if (!f->eof && e != VORBIS_need_more_data) {\n      f->error=e; // breakpoint for debugging\n   }\n   return 0;\n}\n\n\n// these functions are used for allocating temporary memory\n// while decoding. if you can afford the stack space, use\n// alloca(); otherwise, provide a temp buffer and it will\n// allocate out of those.\n\n#define array_size_required(count,size)  (count*(sizeof(void *)+(size)))\n\n#define temp_alloc(f,size)              (f->alloc.alloc_buffer ? setup_temp_malloc(f,size) : alloca(size))\n#define temp_free(f,p)                  (void)0\n#define temp_alloc_save(f)              ((f)->temp_offset)\n#define temp_alloc_restore(f,p)         ((f)->temp_offset = (p))\n\n#define temp_block_array(f,count,size)  make_block_array(temp_alloc(f,array_size_required(count,size)), count, size)\n\n// given a sufficiently large block of memory, make an array of pointers to subblocks of it\nstatic void *make_block_array(void *mem, int count, int size)\n{\n   int i;\n   void ** p = (void **) mem;\n   char *q = (char *) (p + count);\n   for (i=0; i < count; ++i) {\n      p[i] = q;\n      q += size;\n   }\n   return p;\n}\n\nstatic void *setup_malloc(vorb *f, int sz)\n{\n   sz = (sz+7) & ~7; // round up to nearest 8 for alignment of future allocs.\n   f->setup_memory_required += sz;\n   if (f->alloc.alloc_buffer) {\n      void *p = (char *) f->alloc.alloc_buffer + f->setup_offset;\n      if (f->setup_offset + sz > f->temp_offset) return NULL;\n      f->setup_offset += sz;\n      return p;\n   }\n   return sz ? malloc(sz) : NULL;\n}\n\nstatic void setup_free(vorb *f, void *p)\n{\n   if (f->alloc.alloc_buffer) return; // do nothing; setup mem is a stack\n   free(p);\n}\n\nstatic void *setup_temp_malloc(vorb *f, int sz)\n{\n   sz = (sz+7) & ~7; // round up to nearest 8 for alignment of future allocs.\n   if (f->alloc.alloc_buffer) {\n      if (f->temp_offset - sz < f->setup_offset) return NULL;\n      f->temp_offset -= sz;\n      return (char *) f->alloc.alloc_buffer + f->temp_offset;\n   }\n   return malloc(sz);\n}\n\nstatic void setup_temp_free(vorb *f, void *p, int sz)\n{\n   if (f->alloc.alloc_buffer) {\n      f->temp_offset += (sz+7)&~7;\n      return;\n   }\n   free(p);\n}\n\n#define CRC32_POLY    0x04c11db7   // from spec\n\nstatic uint32 crc_table[256];\nstatic void crc32_init(void)\n{\n   int i,j;\n   uint32 s;\n   for(i=0; i < 256; i++) {\n      for (s=(uint32) i << 24, j=0; j < 8; ++j)\n         s = (s << 1) ^ (s >= (1U<<31) ? CRC32_POLY : 0);\n      crc_table[i] = s;\n   }\n}\n\nstatic __forceinline uint32 crc32_update(uint32 crc, uint8 byte)\n{\n   return (crc << 8) ^ crc_table[byte ^ (crc >> 24)];\n}\n\n\n// used in setup, and for huffman that doesn't go fast path\nstatic unsigned int bit_reverse(unsigned int n)\n{\n  n = ((n & 0xAAAAAAAA) >>  1) | ((n & 0x55555555) << 1);\n  n = ((n & 0xCCCCCCCC) >>  2) | ((n & 0x33333333) << 2);\n  n = ((n & 0xF0F0F0F0) >>  4) | ((n & 0x0F0F0F0F) << 4);\n  n = ((n & 0xFF00FF00) >>  8) | ((n & 0x00FF00FF) << 8);\n  return (n >> 16) | (n << 16);\n}\n\nstatic float square(float x)\n{\n   return x*x;\n}\n\n// this is a weird definition of log2() for which log2(1) = 1, log2(2) = 2, log2(4) = 3\n// as required by the specification. fast(?) implementation from stb.h\n// @OPTIMIZE: called multiple times per-packet with \"constants\"; move to setup\nstatic int ilog(int32 n)\n{\n   static signed char log2_4[16] = { 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4 };\n\n   if (n < 0) return 0; // signed n returns 0\n\n   // 2 compares if n < 16, 3 compares otherwise (4 if signed or n > 1<<29)\n   if (n < (1 << 14))\n        if (n < (1 <<  4))            return  0 + log2_4[n      ];\n        else if (n < (1 <<  9))       return  5 + log2_4[n >>  5];\n             else                     return 10 + log2_4[n >> 10];\n   else if (n < (1 << 24))\n             if (n < (1 << 19))       return 15 + log2_4[n >> 15];\n             else                     return 20 + log2_4[n >> 20];\n        else if (n < (1 << 29))       return 25 + log2_4[n >> 25];\n             else                     return 30 + log2_4[n >> 30];\n}\n\n#ifndef M_PI\n  #define M_PI  3.14159265358979323846264f  // from CRC\n#endif\n\n// code length assigned to a value with no huffman encoding\n#define NO_CODE   255\n\n/////////////////////// LEAF SETUP FUNCTIONS //////////////////////////\n//\n// these functions are only called at setup, and only a few times\n// per file\n\nstatic float float32_unpack(uint32 x)\n{\n   // from the specification\n   uint32 mantissa = x & 0x1fffff;\n   uint32 sign = x & 0x80000000;\n   uint32 exp = (x & 0x7fe00000) >> 21;\n   double res = sign ? -(double)mantissa : (double)mantissa;\n   return (float) ldexp((float)res, (int)exp-788);\n}\n\n\n// zlib & jpeg huffman tables assume that the output symbols\n// can either be arbitrarily arranged, or have monotonically\n// increasing frequencies--they rely on the lengths being sorted;\n// this makes for a very simple generation algorithm.\n// vorbis allows a huffman table with non-sorted lengths. This\n// requires a more sophisticated construction, since symbols in\n// order do not map to huffman codes \"in order\".\nstatic void add_entry(Codebook *c, uint32 huff_code, int symbol, int count, int len, uint32 *values)\n{\n   if (!c->sparse) {\n      c->codewords      [symbol] = huff_code;\n   } else {\n      c->codewords       [count] = huff_code;\n      c->codeword_lengths[count] = len;\n      values             [count] = symbol;\n   }\n}\n\nstatic int compute_codewords(Codebook *c, uint8 *len, int n, uint32 *values)\n{\n   int i,k,m=0;\n   uint32 available[32];\n\n   memset(available, 0, sizeof(available));\n   // find the first entry\n   for (k=0; k < n; ++k) if (len[k] < NO_CODE) break;\n   if (k == n) { assert(c->sorted_entries == 0); return TRUE; }\n   assert(len[k] < 32); // no error return required, code reading lens checks this\n   // add to the list\n   add_entry(c, 0, k, m++, len[k], values);\n   // add all available leaves\n   for (i=1; i <= len[k]; ++i)\n      available[i] = 1U << (32-i);\n   // note that the above code treats the first case specially,\n   // but it's really the same as the following code, so they\n   // could probably be combined (except the initial code is 0,\n   // and I use 0 in available[] to mean 'empty')\n   for (i=k+1; i < n; ++i) {\n      uint32 res;\n      int z = len[i], y;\n      if (z == NO_CODE) continue;\n      assert(z < 32); // no error return required, code reading lens checks this\n      // find lowest available leaf (should always be earliest,\n      // which is what the specification calls for)\n      // note that this property, and the fact we can never have\n      // more than one free leaf at a given level, isn't totally\n      // trivial to prove, but it seems true and the assert never\n      // fires, so!\n      while (z > 0 && !available[z]) --z;\n      if (z == 0) { return FALSE; }\n      res = available[z];\n      available[z] = 0;\n      add_entry(c, bit_reverse(res), i, m++, len[i], values);\n      // propagate availability up the tree\n      if (z != len[i]) {\n         for (y=len[i]; y > z; --y) {\n            assert(available[y] == 0);\n            available[y] = res + (1 << (32-y));\n         }\n      }\n   }\n   return TRUE;\n}\n\n// accelerated huffman table allows fast O(1) match of all symbols\n// of length <= STB_VORBIS_FAST_HUFFMAN_LENGTH\nstatic void compute_accelerated_huffman(Codebook *c)\n{\n   int i, len;\n   for (i=0; i < FAST_HUFFMAN_TABLE_SIZE; ++i)\n      c->fast_huffman[i] = -1;\n\n   len = c->sparse ? c->sorted_entries : c->entries;\n   #ifdef STB_VORBIS_FAST_HUFFMAN_SHORT\n   if (len > 32767) len = 32767; // largest possible value we can encode!\n   #endif\n   for (i=0; i < len; ++i) {\n      if (c->codeword_lengths[i] <= STB_VORBIS_FAST_HUFFMAN_LENGTH) {\n         uint32 z = c->sparse ? bit_reverse(c->sorted_codewords[i]) : c->codewords[i];\n         // set table entries for all bit combinations in the higher bits\n         while (z < FAST_HUFFMAN_TABLE_SIZE) {\n             c->fast_huffman[z] = i;\n             z += 1 << c->codeword_lengths[i];\n         }\n      }\n   }\n}\n\n#ifdef _MSC_VER\n#define STBV_CDECL __cdecl\n#else\n#define STBV_CDECL\n#endif\n\nstatic int STBV_CDECL uint32_compare(const void *p, const void *q)\n{\n   uint32 x = * (uint32 *) p;\n   uint32 y = * (uint32 *) q;\n   return x < y ? -1 : x > y;\n}\n\nstatic int include_in_sort(Codebook *c, uint8 len)\n{\n   if (c->sparse) { assert(len != NO_CODE); return TRUE; }\n   if (len == NO_CODE) return FALSE;\n   if (len > STB_VORBIS_FAST_HUFFMAN_LENGTH) return TRUE;\n   return FALSE;\n}\n\n// if the fast table above doesn't work, we want to binary\n// search them... need to reverse the bits\nstatic void compute_sorted_huffman(Codebook *c, uint8 *lengths, uint32 *values)\n{\n   int i, len;\n   // build a list of all the entries\n   // OPTIMIZATION: don't include the short ones, since they'll be caught by FAST_HUFFMAN.\n   // this is kind of a frivolous optimization--I don't see any performance improvement,\n   // but it's like 4 extra lines of code, so.\n   if (!c->sparse) {\n      int k = 0;\n      for (i=0; i < c->entries; ++i)\n         if (include_in_sort(c, lengths[i]))\n            c->sorted_codewords[k++] = bit_reverse(c->codewords[i]);\n      assert(k == c->sorted_entries);\n   } else {\n      for (i=0; i < c->sorted_entries; ++i)\n         c->sorted_codewords[i] = bit_reverse(c->codewords[i]);\n   }\n\n   qsort(c->sorted_codewords, c->sorted_entries, sizeof(c->sorted_codewords[0]), uint32_compare);\n   c->sorted_codewords[c->sorted_entries] = 0xffffffff;\n\n   len = c->sparse ? c->sorted_entries : c->entries;\n   // now we need to indicate how they correspond; we could either\n   //   #1: sort a different data structure that says who they correspond to\n   //   #2: for each sorted entry, search the original list to find who corresponds\n   //   #3: for each original entry, find the sorted entry\n   // #1 requires extra storage, #2 is slow, #3 can use binary search!\n   for (i=0; i < len; ++i) {\n      int huff_len = c->sparse ? lengths[values[i]] : lengths[i];\n      if (include_in_sort(c,huff_len)) {\n         uint32 code = bit_reverse(c->codewords[i]);\n         int x=0, n=c->sorted_entries;\n         while (n > 1) {\n            // invariant: sc[x] <= code < sc[x+n]\n            int m = x + (n >> 1);\n            if (c->sorted_codewords[m] <= code) {\n               x = m;\n               n -= (n>>1);\n            } else {\n               n >>= 1;\n            }\n         }\n         assert(c->sorted_codewords[x] == code);\n         if (c->sparse) {\n            c->sorted_values[x] = values[i];\n            c->codeword_lengths[x] = huff_len;\n         } else {\n            c->sorted_values[x] = i;\n         }\n      }\n   }\n}\n\n// only run while parsing the header (3 times)\nstatic int vorbis_validate(uint8 *data)\n{\n   static uint8 vorbis[6] = { 'v', 'o', 'r', 'b', 'i', 's' };\n   return memcmp(data, vorbis, 6) == 0;\n}\n\n// called from setup only, once per code book\n// (formula implied by specification)\nstatic int lookup1_values(int entries, int dim)\n{\n   int r = (int) floor(exp((float) log((float) entries) / dim));\n   if ((int) floor(pow((float) r+1, dim)) <= entries)   // (int) cast for MinGW warning;\n      ++r;                                              // floor() to avoid _ftol() when non-CRT\n   if (pow((float) r+1, dim) <= entries)\n      return -1;\n   if ((int) floor(pow((float) r, dim)) > entries)\n      return -1;\n   return r;\n}\n\n// called twice per file\nstatic void compute_twiddle_factors(int n, float *A, float *B, float *C)\n{\n   int n4 = n >> 2, n8 = n >> 3;\n   int k,k2;\n\n   for (k=k2=0; k < n4; ++k,k2+=2) {\n      A[k2  ] = (float)  cos(4*k*M_PI/n);\n      A[k2+1] = (float) -sin(4*k*M_PI/n);\n      B[k2  ] = (float)  cos((k2+1)*M_PI/n/2) * 0.5f;\n      B[k2+1] = (float)  sin((k2+1)*M_PI/n/2) * 0.5f;\n   }\n   for (k=k2=0; k < n8; ++k,k2+=2) {\n      C[k2  ] = (float)  cos(2*(k2+1)*M_PI/n);\n      C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n);\n   }\n}\n\nstatic void compute_window(int n, float *window)\n{\n   int n2 = n >> 1, i;\n   for (i=0; i < n2; ++i)\n      window[i] = (float) sin(0.5 * M_PI * square((float) sin((i - 0 + 0.5) / n2 * 0.5 * M_PI)));\n}\n\nstatic void compute_bitreverse(int n, uint16 *rev)\n{\n   int ld = ilog(n) - 1; // ilog is off-by-one from normal definitions\n   int i, n8 = n >> 3;\n   for (i=0; i < n8; ++i)\n      rev[i] = (bit_reverse(i) >> (32-ld+3)) << 2;\n}\n\nstatic int init_blocksize(vorb *f, int b, int n)\n{\n   int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3;\n   f->A[b] = (float *) setup_malloc(f, sizeof(float) * n2);\n   f->B[b] = (float *) setup_malloc(f, sizeof(float) * n2);\n   f->C[b] = (float *) setup_malloc(f, sizeof(float) * n4);\n   if (!f->A[b] || !f->B[b] || !f->C[b]) return error(f, VORBIS_outofmem);\n   compute_twiddle_factors(n, f->A[b], f->B[b], f->C[b]);\n   f->window[b] = (float *) setup_malloc(f, sizeof(float) * n2);\n   if (!f->window[b]) return error(f, VORBIS_outofmem);\n   compute_window(n, f->window[b]);\n   f->bit_reverse[b] = (uint16 *) setup_malloc(f, sizeof(uint16) * n8);\n   if (!f->bit_reverse[b]) return error(f, VORBIS_outofmem);\n   compute_bitreverse(n, f->bit_reverse[b]);\n   return TRUE;\n}\n\nstatic void neighbors(uint16 *x, int n, int *plow, int *phigh)\n{\n   int low = -1;\n   int high = 65536;\n   int i;\n   for (i=0; i < n; ++i) {\n      if (x[i] > low  && x[i] < x[n]) { *plow  = i; low = x[i]; }\n      if (x[i] < high && x[i] > x[n]) { *phigh = i; high = x[i]; }\n   }\n}\n\n// this has been repurposed so y is now the original index instead of y\ntypedef struct\n{\n   uint16 x,id;\n} stbv__floor_ordering;\n\nstatic int STBV_CDECL point_compare(const void *p, const void *q)\n{\n   stbv__floor_ordering *a = (stbv__floor_ordering *) p;\n   stbv__floor_ordering *b = (stbv__floor_ordering *) q;\n   return a->x < b->x ? -1 : a->x > b->x;\n}\n\n//\n/////////////////////// END LEAF SETUP FUNCTIONS //////////////////////////\n\n\n#if defined(STB_VORBIS_NO_STDIO)\n   #define USE_MEMORY(z)    TRUE\n#else\n   #define USE_MEMORY(z)    ((z)->stream)\n#endif\n\nstatic uint8 get8(vorb *z)\n{\n   if (USE_MEMORY(z)) {\n      if (z->stream >= z->stream_end) { z->eof = TRUE; return 0; }\n      return *z->stream++;\n   }\n\n   #ifndef STB_VORBIS_NO_STDIO\n   {\n   int c = fgetc(z->f);\n   if (c == EOF) { z->eof = TRUE; return 0; }\n   return c;\n   }\n   #endif\n}\n\nstatic uint32 get32(vorb *f)\n{\n   uint32 x;\n   x = get8(f);\n   x += get8(f) << 8;\n   x += get8(f) << 16;\n   x += (uint32) get8(f) << 24;\n   return x;\n}\n\nstatic int getn(vorb *z, uint8 *data, int n)\n{\n   if (USE_MEMORY(z)) {\n      if (z->stream+n > z->stream_end) { z->eof = 1; return 0; }\n      memcpy(data, z->stream, n);\n      z->stream += n;\n      return 1;\n   }\n\n   #ifndef STB_VORBIS_NO_STDIO\n   if (fread(data, n, 1, z->f) == 1)\n      return 1;\n   else {\n      z->eof = 1;\n      return 0;\n   }\n   #endif\n}\n\nstatic void skip(vorb *z, int n)\n{\n   if (USE_MEMORY(z)) {\n      z->stream += n;\n      if (z->stream >= z->stream_end) z->eof = 1;\n      return;\n   }\n   #ifndef STB_VORBIS_NO_STDIO\n   {\n      long x = ftell(z->f);\n      fseek(z->f, x+n, SEEK_SET);\n   }\n   #endif\n}\n\nstatic int set_file_offset(stb_vorbis *f, unsigned int loc)\n{\n   #ifndef STB_VORBIS_NO_PUSHDATA_API\n   if (f->push_mode) return 0;\n   #endif\n   f->eof = 0;\n   if (USE_MEMORY(f)) {\n      if (f->stream_start + loc >= f->stream_end || f->stream_start + loc < f->stream_start) {\n         f->stream = f->stream_end;\n         f->eof = 1;\n         return 0;\n      } else {\n         f->stream = f->stream_start + loc;\n         return 1;\n      }\n   }\n   #ifndef STB_VORBIS_NO_STDIO\n   if (loc + f->f_start < loc || loc >= 0x80000000) {\n      loc = 0x7fffffff;\n      f->eof = 1;\n   } else {\n      loc += f->f_start;\n   }\n   if (!fseek(f->f, loc, SEEK_SET))\n      return 1;\n   f->eof = 1;\n   fseek(f->f, f->f_start, SEEK_END);\n   return 0;\n   #endif\n}\n\n\nstatic uint8 ogg_page_header[4] = { 0x4f, 0x67, 0x67, 0x53 };\n\nstatic int capture_pattern(vorb *f)\n{\n   if (0x4f != get8(f)) return FALSE;\n   if (0x67 != get8(f)) return FALSE;\n   if (0x67 != get8(f)) return FALSE;\n   if (0x53 != get8(f)) return FALSE;\n   return TRUE;\n}\n\n#define PAGEFLAG_continued_packet   1\n#define PAGEFLAG_first_page         2\n#define PAGEFLAG_last_page          4\n\nstatic int start_page_no_capturepattern(vorb *f)\n{\n   uint32 loc0,loc1,n;\n   if (f->first_decode && !IS_PUSH_MODE(f)) {\n      f->p_first.page_start = stb_vorbis_get_file_offset(f) - 4;\n   }\n   // stream structure version\n   if (0 != get8(f)) return error(f, VORBIS_invalid_stream_structure_version);\n   // header flag\n   f->page_flag = get8(f);\n   // absolute granule position\n   loc0 = get32(f);\n   loc1 = get32(f);\n   // @TODO: validate loc0,loc1 as valid positions?\n   // stream serial number -- vorbis doesn't interleave, so discard\n   get32(f);\n   //if (f->serial != get32(f)) return error(f, VORBIS_incorrect_stream_serial_number);\n   // page sequence number\n   n = get32(f);\n   f->last_page = n;\n   // CRC32\n   get32(f);\n   // page_segments\n   f->segment_count = get8(f);\n   if (!getn(f, f->segments, f->segment_count))\n      return error(f, VORBIS_unexpected_eof);\n   // assume we _don't_ know any the sample position of any segments\n   f->end_seg_with_known_loc = -2;\n   if (loc0 != ~0U || loc1 != ~0U) {\n      int i;\n      // determine which packet is the last one that will complete\n      for (i=f->segment_count-1; i >= 0; --i)\n         if (f->segments[i] < 255)\n            break;\n      // 'i' is now the index of the _last_ segment of a packet that ends\n      if (i >= 0) {\n         f->end_seg_with_known_loc = i;\n         f->known_loc_for_packet   = loc0;\n      }\n   }\n   if (f->first_decode) {\n      int i,len;\n      len = 0;\n      for (i=0; i < f->segment_count; ++i)\n         len += f->segments[i];\n      len += 27 + f->segment_count;\n      f->p_first.page_end = f->p_first.page_start + len;\n      f->p_first.last_decoded_sample = loc0;\n   }\n   f->next_seg = 0;\n   return TRUE;\n}\n\nstatic int start_page(vorb *f)\n{\n   if (!capture_pattern(f)) return error(f, VORBIS_missing_capture_pattern);\n   return start_page_no_capturepattern(f);\n}\n\nstatic int start_packet(vorb *f)\n{\n   while (f->next_seg == -1) {\n      if (!start_page(f)) return FALSE;\n      if (f->page_flag & PAGEFLAG_continued_packet)\n         return error(f, VORBIS_continued_packet_flag_invalid);\n   }\n   f->last_seg = FALSE;\n   f->valid_bits = 0;\n   f->packet_bytes = 0;\n   f->bytes_in_seg = 0;\n   // f->next_seg is now valid\n   return TRUE;\n}\n\nstatic int maybe_start_packet(vorb *f)\n{\n   if (f->next_seg == -1) {\n      int x = get8(f);\n      if (f->eof) return FALSE; // EOF at page boundary is not an error!\n      if (0x4f != x      ) return error(f, VORBIS_missing_capture_pattern);\n      if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern);\n      if (0x67 != get8(f)) return error(f, VORBIS_missing_capture_pattern);\n      if (0x53 != get8(f)) return error(f, VORBIS_missing_capture_pattern);\n      if (!start_page_no_capturepattern(f)) return FALSE;\n      if (f->page_flag & PAGEFLAG_continued_packet) {\n         // set up enough state that we can read this packet if we want,\n         // e.g. during recovery\n         f->last_seg = FALSE;\n         f->bytes_in_seg = 0;\n         return error(f, VORBIS_continued_packet_flag_invalid);\n      }\n   }\n   return start_packet(f);\n}\n\nstatic int next_segment(vorb *f)\n{\n   int len;\n   if (f->last_seg) return 0;\n   if (f->next_seg == -1) {\n      f->last_seg_which = f->segment_count-1; // in case start_page fails\n      if (!start_page(f)) { f->last_seg = 1; return 0; }\n      if (!(f->page_flag & PAGEFLAG_continued_packet)) return error(f, VORBIS_continued_packet_flag_invalid);\n   }\n   len = f->segments[f->next_seg++];\n   if (len < 255) {\n      f->last_seg = TRUE;\n      f->last_seg_which = f->next_seg-1;\n   }\n   if (f->next_seg >= f->segment_count)\n      f->next_seg = -1;\n   assert(f->bytes_in_seg == 0);\n   f->bytes_in_seg = len;\n   return len;\n}\n\n#define EOP    (-1)\n#define INVALID_BITS  (-1)\n\nstatic int get8_packet_raw(vorb *f)\n{\n   if (!f->bytes_in_seg) {  // CLANG!\n      if (f->last_seg) return EOP;\n      else if (!next_segment(f)) return EOP;\n   }\n   assert(f->bytes_in_seg > 0);\n   --f->bytes_in_seg;\n   ++f->packet_bytes;\n   return get8(f);\n}\n\nstatic int get8_packet(vorb *f)\n{\n   int x = get8_packet_raw(f);\n   f->valid_bits = 0;\n   return x;\n}\n\nstatic int get32_packet(vorb *f)\n{\n   uint32 x;\n   x = get8_packet(f);\n   x += get8_packet(f) << 8;\n   x += get8_packet(f) << 16;\n   x += (uint32) get8_packet(f) << 24;\n   return x;\n}\n\nstatic void flush_packet(vorb *f)\n{\n   while (get8_packet_raw(f) != EOP);\n}\n\n// @OPTIMIZE: this is the secondary bit decoder, so it's probably not as important\n// as the huffman decoder?\nstatic uint32 get_bits(vorb *f, int n)\n{\n   uint32 z;\n\n   if (f->valid_bits < 0) return 0;\n   if (f->valid_bits < n) {\n      if (n > 24) {\n         // the accumulator technique below would not work correctly in this case\n         z = get_bits(f, 24);\n         z += get_bits(f, n-24) << 24;\n         return z;\n      }\n      if (f->valid_bits == 0) f->acc = 0;\n      while (f->valid_bits < n) {\n         int z = get8_packet_raw(f);\n         if (z == EOP) {\n            f->valid_bits = INVALID_BITS;\n            return 0;\n         }\n         f->acc += z << f->valid_bits;\n         f->valid_bits += 8;\n      }\n   }\n\n   assert(f->valid_bits >= n);\n   z = f->acc & ((1 << n)-1);\n   f->acc >>= n;\n   f->valid_bits -= n;\n   return z;\n}\n\n// @OPTIMIZE: primary accumulator for huffman\n// expand the buffer to as many bits as possible without reading off end of packet\n// it might be nice to allow f->valid_bits and f->acc to be stored in registers,\n// e.g. cache them locally and decode locally\nstatic __forceinline void prep_huffman(vorb *f)\n{\n   if (f->valid_bits <= 24) {\n      if (f->valid_bits == 0) f->acc = 0;\n      do {\n         int z;\n         if (f->last_seg && !f->bytes_in_seg) return;\n         z = get8_packet_raw(f);\n         if (z == EOP) return;\n         f->acc += (unsigned) z << f->valid_bits;\n         f->valid_bits += 8;\n      } while (f->valid_bits <= 24);\n   }\n}\n\nenum\n{\n   VORBIS_packet_id = 1,\n   VORBIS_packet_comment = 3,\n   VORBIS_packet_setup = 5\n};\n\nstatic int codebook_decode_scalar_raw(vorb *f, Codebook *c)\n{\n   int i;\n   prep_huffman(f);\n\n   if (c->codewords == NULL && c->sorted_codewords == NULL)\n      return -1;\n\n   // cases to use binary search: sorted_codewords && !c->codewords\n   //                             sorted_codewords && c->entries > 8\n   if (c->entries > 8 ? c->sorted_codewords!=NULL : !c->codewords) {\n      // binary search\n      uint32 code = bit_reverse(f->acc);\n      int x=0, n=c->sorted_entries, len;\n\n      while (n > 1) {\n         // invariant: sc[x] <= code < sc[x+n]\n         int m = x + (n >> 1);\n         if (c->sorted_codewords[m] <= code) {\n            x = m;\n            n -= (n>>1);\n         } else {\n            n >>= 1;\n         }\n      }\n      // x is now the sorted index\n      if (!c->sparse) x = c->sorted_values[x];\n      // x is now sorted index if sparse, or symbol otherwise\n      len = c->codeword_lengths[x];\n      if (f->valid_bits >= len) {\n         f->acc >>= len;\n         f->valid_bits -= len;\n         return x;\n      }\n\n      f->valid_bits = 0;\n      return -1;\n   }\n\n   // if small, linear search\n   assert(!c->sparse);\n   for (i=0; i < c->entries; ++i) {\n      if (c->codeword_lengths[i] == NO_CODE) continue;\n      if (c->codewords[i] == (f->acc & ((1 << c->codeword_lengths[i])-1))) {\n         if (f->valid_bits >= c->codeword_lengths[i]) {\n            f->acc >>= c->codeword_lengths[i];\n            f->valid_bits -= c->codeword_lengths[i];\n            return i;\n         }\n         f->valid_bits = 0;\n         return -1;\n      }\n   }\n\n   error(f, VORBIS_invalid_stream);\n   f->valid_bits = 0;\n   return -1;\n}\n\n#ifndef STB_VORBIS_NO_INLINE_DECODE\n\n#define DECODE_RAW(var, f,c)                                  \\\n   if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH)        \\\n      prep_huffman(f);                                        \\\n   var = f->acc & FAST_HUFFMAN_TABLE_MASK;                    \\\n   var = c->fast_huffman[var];                                \\\n   if (var >= 0) {                                            \\\n      int n = c->codeword_lengths[var];                       \\\n      f->acc >>= n;                                           \\\n      f->valid_bits -= n;                                     \\\n      if (f->valid_bits < 0) { f->valid_bits = 0; var = -1; } \\\n   } else {                                                   \\\n      var = codebook_decode_scalar_raw(f,c);                  \\\n   }\n\n#else\n\nstatic int codebook_decode_scalar(vorb *f, Codebook *c)\n{\n   int i;\n   if (f->valid_bits < STB_VORBIS_FAST_HUFFMAN_LENGTH)\n      prep_huffman(f);\n   // fast huffman table lookup\n   i = f->acc & FAST_HUFFMAN_TABLE_MASK;\n   i = c->fast_huffman[i];\n   if (i >= 0) {\n      f->acc >>= c->codeword_lengths[i];\n      f->valid_bits -= c->codeword_lengths[i];\n      if (f->valid_bits < 0) { f->valid_bits = 0; return -1; }\n      return i;\n   }\n   return codebook_decode_scalar_raw(f,c);\n}\n\n#define DECODE_RAW(var,f,c)    var = codebook_decode_scalar(f,c);\n\n#endif\n\n#define DECODE(var,f,c)                                       \\\n   DECODE_RAW(var,f,c)                                        \\\n   if (c->sparse) var = c->sorted_values[var];\n\n#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK\n  #define DECODE_VQ(var,f,c)   DECODE_RAW(var,f,c)\n#else\n  #define DECODE_VQ(var,f,c)   DECODE(var,f,c)\n#endif\n\n\n\n\n\n\n// CODEBOOK_ELEMENT_FAST is an optimization for the CODEBOOK_FLOATS case\n// where we avoid one addition\n#define CODEBOOK_ELEMENT(c,off)          (c->multiplicands[off])\n#define CODEBOOK_ELEMENT_FAST(c,off)     (c->multiplicands[off])\n#define CODEBOOK_ELEMENT_BASE(c)         (0)\n\nstatic int codebook_decode_start(vorb *f, Codebook *c)\n{\n   int z = -1;\n\n   // type 0 is only legal in a scalar context\n   if (c->lookup_type == 0)\n      error(f, VORBIS_invalid_stream);\n   else {\n      DECODE_VQ(z,f,c);\n      if (c->sparse) assert(z < c->sorted_entries);\n      if (z < 0) {  // check for EOP\n         if (!f->bytes_in_seg)\n            if (f->last_seg)\n               return z;\n         error(f, VORBIS_invalid_stream);\n      }\n   }\n   return z;\n}\n\nstatic int codebook_decode(vorb *f, Codebook *c, float *output, int len)\n{\n   int i,z = codebook_decode_start(f,c);\n   if (z < 0) return FALSE;\n   if (len > c->dimensions) len = c->dimensions;\n\n#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK\n   if (c->lookup_type == 1) {\n      float last = CODEBOOK_ELEMENT_BASE(c);\n      int div = 1;\n      for (i=0; i < len; ++i) {\n         int off = (z / div) % c->lookup_values;\n         float val = CODEBOOK_ELEMENT_FAST(c,off) + last;\n         output[i] += val;\n         if (c->sequence_p) last = val + c->minimum_value;\n         div *= c->lookup_values;\n      }\n      return TRUE;\n   }\n#endif\n\n   z *= c->dimensions;\n   if (c->sequence_p) {\n      float last = CODEBOOK_ELEMENT_BASE(c);\n      for (i=0; i < len; ++i) {\n         float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;\n         output[i] += val;\n         last = val + c->minimum_value;\n      }\n   } else {\n      float last = CODEBOOK_ELEMENT_BASE(c);\n      for (i=0; i < len; ++i) {\n         output[i] += CODEBOOK_ELEMENT_FAST(c,z+i) + last;\n      }\n   }\n\n   return TRUE;\n}\n\nstatic int codebook_decode_step(vorb *f, Codebook *c, float *output, int len, int step)\n{\n   int i,z = codebook_decode_start(f,c);\n   float last = CODEBOOK_ELEMENT_BASE(c);\n   if (z < 0) return FALSE;\n   if (len > c->dimensions) len = c->dimensions;\n\n#ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK\n   if (c->lookup_type == 1) {\n      int div = 1;\n      for (i=0; i < len; ++i) {\n         int off = (z / div) % c->lookup_values;\n         float val = CODEBOOK_ELEMENT_FAST(c,off) + last;\n         output[i*step] += val;\n         if (c->sequence_p) last = val;\n         div *= c->lookup_values;\n      }\n      return TRUE;\n   }\n#endif\n\n   z *= c->dimensions;\n   for (i=0; i < len; ++i) {\n      float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;\n      output[i*step] += val;\n      if (c->sequence_p) last = val;\n   }\n\n   return TRUE;\n}\n\nstatic int codebook_decode_deinterleave_repeat(vorb *f, Codebook *c, float **outputs, int ch, int *c_inter_p, int *p_inter_p, int len, int total_decode)\n{\n   int c_inter = *c_inter_p;\n   int p_inter = *p_inter_p;\n   int i,z, effective = c->dimensions;\n\n   // type 0 is only legal in a scalar context\n   if (c->lookup_type == 0)   return error(f, VORBIS_invalid_stream);\n\n   while (total_decode > 0) {\n      float last = CODEBOOK_ELEMENT_BASE(c);\n      DECODE_VQ(z,f,c);\n      #ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK\n      assert(!c->sparse || z < c->sorted_entries);\n      #endif\n      if (z < 0) {\n         if (!f->bytes_in_seg)\n            if (f->last_seg) return FALSE;\n         return error(f, VORBIS_invalid_stream);\n      }\n\n      // if this will take us off the end of the buffers, stop short!\n      // we check by computing the length of the virtual interleaved\n      // buffer (len*ch), our current offset within it (p_inter*ch)+(c_inter),\n      // and the length we'll be using (effective)\n      if (c_inter + p_inter*ch + effective > len * ch) {\n         effective = len*ch - (p_inter*ch - c_inter);\n      }\n\n   #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK\n      if (c->lookup_type == 1) {\n         int div = 1;\n         for (i=0; i < effective; ++i) {\n            int off = (z / div) % c->lookup_values;\n            float val = CODEBOOK_ELEMENT_FAST(c,off) + last;\n            if (outputs[c_inter])\n               outputs[c_inter][p_inter] += val;\n            if (++c_inter == ch) { c_inter = 0; ++p_inter; }\n            if (c->sequence_p) last = val;\n            div *= c->lookup_values;\n         }\n      } else\n   #endif\n      {\n         z *= c->dimensions;\n         if (c->sequence_p) {\n            for (i=0; i < effective; ++i) {\n               float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;\n               if (outputs[c_inter])\n                  outputs[c_inter][p_inter] += val;\n               if (++c_inter == ch) { c_inter = 0; ++p_inter; }\n               last = val;\n            }\n         } else {\n            for (i=0; i < effective; ++i) {\n               float val = CODEBOOK_ELEMENT_FAST(c,z+i) + last;\n               if (outputs[c_inter])\n                  outputs[c_inter][p_inter] += val;\n               if (++c_inter == ch) { c_inter = 0; ++p_inter; }\n            }\n         }\n      }\n\n      total_decode -= effective;\n   }\n   *c_inter_p = c_inter;\n   *p_inter_p = p_inter;\n   return TRUE;\n}\n\nstatic int predict_point(int x, int x0, int x1, int y0, int y1)\n{\n   int dy = y1 - y0;\n   int adx = x1 - x0;\n   // @OPTIMIZE: force int division to round in the right direction... is this necessary on x86?\n   int err = abs(dy) * (x - x0);\n   int off = err / adx;\n   return dy < 0 ? y0 - off : y0 + off;\n}\n\n// the following table is block-copied from the specification\nstatic float inverse_db_table[256] =\n{\n  1.0649863e-07f, 1.1341951e-07f, 1.2079015e-07f, 1.2863978e-07f,\n  1.3699951e-07f, 1.4590251e-07f, 1.5538408e-07f, 1.6548181e-07f,\n  1.7623575e-07f, 1.8768855e-07f, 1.9988561e-07f, 2.1287530e-07f,\n  2.2670913e-07f, 2.4144197e-07f, 2.5713223e-07f, 2.7384213e-07f,\n  2.9163793e-07f, 3.1059021e-07f, 3.3077411e-07f, 3.5226968e-07f,\n  3.7516214e-07f, 3.9954229e-07f, 4.2550680e-07f, 4.5315863e-07f,\n  4.8260743e-07f, 5.1396998e-07f, 5.4737065e-07f, 5.8294187e-07f,\n  6.2082472e-07f, 6.6116941e-07f, 7.0413592e-07f, 7.4989464e-07f,\n  7.9862701e-07f, 8.5052630e-07f, 9.0579828e-07f, 9.6466216e-07f,\n  1.0273513e-06f, 1.0941144e-06f, 1.1652161e-06f, 1.2409384e-06f,\n  1.3215816e-06f, 1.4074654e-06f, 1.4989305e-06f, 1.5963394e-06f,\n  1.7000785e-06f, 1.8105592e-06f, 1.9282195e-06f, 2.0535261e-06f,\n  2.1869758e-06f, 2.3290978e-06f, 2.4804557e-06f, 2.6416497e-06f,\n  2.8133190e-06f, 2.9961443e-06f, 3.1908506e-06f, 3.3982101e-06f,\n  3.6190449e-06f, 3.8542308e-06f, 4.1047004e-06f, 4.3714470e-06f,\n  4.6555282e-06f, 4.9580707e-06f, 5.2802740e-06f, 5.6234160e-06f,\n  5.9888572e-06f, 6.3780469e-06f, 6.7925283e-06f, 7.2339451e-06f,\n  7.7040476e-06f, 8.2047000e-06f, 8.7378876e-06f, 9.3057248e-06f,\n  9.9104632e-06f, 1.0554501e-05f, 1.1240392e-05f, 1.1970856e-05f,\n  1.2748789e-05f, 1.3577278e-05f, 1.4459606e-05f, 1.5399272e-05f,\n  1.6400004e-05f, 1.7465768e-05f, 1.8600792e-05f, 1.9809576e-05f,\n  2.1096914e-05f, 2.2467911e-05f, 2.3928002e-05f, 2.5482978e-05f,\n  2.7139006e-05f, 2.8902651e-05f, 3.0780908e-05f, 3.2781225e-05f,\n  3.4911534e-05f, 3.7180282e-05f, 3.9596466e-05f, 4.2169667e-05f,\n  4.4910090e-05f, 4.7828601e-05f, 5.0936773e-05f, 5.4246931e-05f,\n  5.7772202e-05f, 6.1526565e-05f, 6.5524908e-05f, 6.9783085e-05f,\n  7.4317983e-05f, 7.9147585e-05f, 8.4291040e-05f, 8.9768747e-05f,\n  9.5602426e-05f, 0.00010181521f, 0.00010843174f, 0.00011547824f,\n  0.00012298267f, 0.00013097477f, 0.00013948625f, 0.00014855085f,\n  0.00015820453f, 0.00016848555f, 0.00017943469f, 0.00019109536f,\n  0.00020351382f, 0.00021673929f, 0.00023082423f, 0.00024582449f,\n  0.00026179955f, 0.00027881276f, 0.00029693158f, 0.00031622787f,\n  0.00033677814f, 0.00035866388f, 0.00038197188f, 0.00040679456f,\n  0.00043323036f, 0.00046138411f, 0.00049136745f, 0.00052329927f,\n  0.00055730621f, 0.00059352311f, 0.00063209358f, 0.00067317058f,\n  0.00071691700f, 0.00076350630f, 0.00081312324f, 0.00086596457f,\n  0.00092223983f, 0.00098217216f, 0.0010459992f,  0.0011139742f,\n  0.0011863665f,  0.0012634633f,  0.0013455702f,  0.0014330129f,\n  0.0015261382f,  0.0016253153f,  0.0017309374f,  0.0018434235f,\n  0.0019632195f,  0.0020908006f,  0.0022266726f,  0.0023713743f,\n  0.0025254795f,  0.0026895994f,  0.0028643847f,  0.0030505286f,\n  0.0032487691f,  0.0034598925f,  0.0036847358f,  0.0039241906f,\n  0.0041792066f,  0.0044507950f,  0.0047400328f,  0.0050480668f,\n  0.0053761186f,  0.0057254891f,  0.0060975636f,  0.0064938176f,\n  0.0069158225f,  0.0073652516f,  0.0078438871f,  0.0083536271f,\n  0.0088964928f,  0.009474637f,   0.010090352f,   0.010746080f,\n  0.011444421f,   0.012188144f,   0.012980198f,   0.013823725f,\n  0.014722068f,   0.015678791f,   0.016697687f,   0.017782797f,\n  0.018938423f,   0.020169149f,   0.021479854f,   0.022875735f,\n  0.024362330f,   0.025945531f,   0.027631618f,   0.029427276f,\n  0.031339626f,   0.033376252f,   0.035545228f,   0.037855157f,\n  0.040315199f,   0.042935108f,   0.045725273f,   0.048696758f,\n  0.051861348f,   0.055231591f,   0.058820850f,   0.062643361f,\n  0.066714279f,   0.071049749f,   0.075666962f,   0.080584227f,\n  0.085821044f,   0.091398179f,   0.097337747f,   0.10366330f,\n  0.11039993f,    0.11757434f,    0.12521498f,    0.13335215f,\n  0.14201813f,    0.15124727f,    0.16107617f,    0.17154380f,\n  0.18269168f,    0.19456402f,    0.20720788f,    0.22067342f,\n  0.23501402f,    0.25028656f,    0.26655159f,    0.28387361f,\n  0.30232132f,    0.32196786f,    0.34289114f,    0.36517414f,\n  0.38890521f,    0.41417847f,    0.44109412f,    0.46975890f,\n  0.50028648f,    0.53279791f,    0.56742212f,    0.60429640f,\n  0.64356699f,    0.68538959f,    0.72993007f,    0.77736504f,\n  0.82788260f,    0.88168307f,    0.9389798f,     1.0f\n};\n\n\n// @OPTIMIZE: if you want to replace this bresenham line-drawing routine,\n// note that you must produce bit-identical output to decode correctly;\n// this specific sequence of operations is specified in the spec (it's\n// drawing integer-quantized frequency-space lines that the encoder\n// expects to be exactly the same)\n//     ... also, isn't the whole point of Bresenham's algorithm to NOT\n// have to divide in the setup? sigh.\n#ifndef STB_VORBIS_NO_DEFER_FLOOR\n#define LINE_OP(a,b)   a *= b\n#else\n#define LINE_OP(a,b)   a = b\n#endif\n\n#ifdef STB_VORBIS_DIVIDE_TABLE\n#define DIVTAB_NUMER   32\n#define DIVTAB_DENOM   64\nint8 integer_divide_table[DIVTAB_NUMER][DIVTAB_DENOM]; // 2KB\n#endif\n\nstatic __forceinline void draw_line(float *output, int x0, int y0, int x1, int y1, int n)\n{\n   int dy = y1 - y0;\n   int adx = x1 - x0;\n   int ady = abs(dy);\n   int base;\n   int x=x0,y=y0;\n   int err = 0;\n   int sy;\n\n#ifdef STB_VORBIS_DIVIDE_TABLE\n   if (adx < DIVTAB_DENOM && ady < DIVTAB_NUMER) {\n      if (dy < 0) {\n         base = -integer_divide_table[ady][adx];\n         sy = base-1;\n      } else {\n         base =  integer_divide_table[ady][adx];\n         sy = base+1;\n      }\n   } else {\n      base = dy / adx;\n      if (dy < 0)\n         sy = base - 1;\n      else\n         sy = base+1;\n   }\n#else\n   base = dy / adx;\n   if (dy < 0)\n      sy = base - 1;\n   else\n      sy = base+1;\n#endif\n   ady -= abs(base) * adx;\n   if (x1 > n) x1 = n;\n   if (x < x1) {\n      LINE_OP(output[x], inverse_db_table[y&255]);\n      for (++x; x < x1; ++x) {\n         err += ady;\n         if (err >= adx) {\n            err -= adx;\n            y += sy;\n         } else\n            y += base;\n         LINE_OP(output[x], inverse_db_table[y&255]);\n      }\n   }\n}\n\nstatic int residue_decode(vorb *f, Codebook *book, float *target, int offset, int n, int rtype)\n{\n   int k;\n   if (rtype == 0) {\n      int step = n / book->dimensions;\n      for (k=0; k < step; ++k)\n         if (!codebook_decode_step(f, book, target+offset+k, n-offset-k, step))\n            return FALSE;\n   } else {\n      for (k=0; k < n; ) {\n         if (!codebook_decode(f, book, target+offset, n-k))\n            return FALSE;\n         k += book->dimensions;\n         offset += book->dimensions;\n      }\n   }\n   return TRUE;\n}\n\n// n is 1/2 of the blocksize --\n// specification: \"Correct per-vector decode length is [n]/2\"\nstatic void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int rn, uint8 *do_not_decode)\n{\n   int i,j,pass;\n   Residue *r = f->residue_config + rn;\n   int rtype = f->residue_types[rn];\n   int c = r->classbook;\n   int classwords = f->codebooks[c].dimensions;\n   unsigned int actual_size = rtype == 2 ? n*2 : n;\n   unsigned int limit_r_begin = (r->begin < actual_size ? r->begin : actual_size);\n   unsigned int limit_r_end   = (r->end   < actual_size ? r->end   : actual_size);\n   int n_read = limit_r_end - limit_r_begin;\n   int part_read = n_read / r->part_size;\n   int temp_alloc_point = temp_alloc_save(f);\n   #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n   uint8 ***part_classdata = (uint8 ***) temp_block_array(f,f->channels, part_read * sizeof(**part_classdata));\n   #else\n   int **classifications = (int **) temp_block_array(f,f->channels, part_read * sizeof(**classifications));\n   #endif\n\n   CHECK(f);\n\n   for (i=0; i < ch; ++i)\n      if (!do_not_decode[i])\n         memset(residue_buffers[i], 0, sizeof(float) * n);\n\n   if (rtype == 2 && ch != 1) {\n      for (j=0; j < ch; ++j)\n         if (!do_not_decode[j])\n            break;\n      if (j == ch)\n         goto done;\n\n      for (pass=0; pass < 8; ++pass) {\n         int pcount = 0, class_set = 0;\n         if (ch == 2) {\n            while (pcount < part_read) {\n               int z = r->begin + pcount*r->part_size;\n               int c_inter = (z & 1), p_inter = z>>1;\n               if (pass == 0) {\n                  Codebook *c = f->codebooks+r->classbook;\n                  int q;\n                  DECODE(q,f,c);\n                  if (q == EOP) goto done;\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  part_classdata[0][class_set] = r->classdata[q];\n                  #else\n                  for (i=classwords-1; i >= 0; --i) {\n                     classifications[0][i+pcount] = q % r->classifications;\n                     q /= r->classifications;\n                  }\n                  #endif\n               }\n               for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {\n                  int z = r->begin + pcount*r->part_size;\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  int c = part_classdata[0][class_set][i];\n                  #else\n                  int c = classifications[0][pcount];\n                  #endif\n                  int b = r->residue_books[c][pass];\n                  if (b >= 0) {\n                     Codebook *book = f->codebooks + b;\n                     #ifdef STB_VORBIS_DIVIDES_IN_CODEBOOK\n                     if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))\n                        goto done;\n                     #else\n                     // saves 1%\n                     if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))\n                        goto done;\n                     #endif\n                  } else {\n                     z += r->part_size;\n                     c_inter = z & 1;\n                     p_inter = z >> 1;\n                  }\n               }\n               #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n               ++class_set;\n               #endif\n            }\n         } else if (ch > 2) {\n            while (pcount < part_read) {\n               int z = r->begin + pcount*r->part_size;\n               int c_inter = z % ch, p_inter = z/ch;\n               if (pass == 0) {\n                  Codebook *c = f->codebooks+r->classbook;\n                  int q;\n                  DECODE(q,f,c);\n                  if (q == EOP) goto done;\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  part_classdata[0][class_set] = r->classdata[q];\n                  #else\n                  for (i=classwords-1; i >= 0; --i) {\n                     classifications[0][i+pcount] = q % r->classifications;\n                     q /= r->classifications;\n                  }\n                  #endif\n               }\n               for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {\n                  int z = r->begin + pcount*r->part_size;\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  int c = part_classdata[0][class_set][i];\n                  #else\n                  int c = classifications[0][pcount];\n                  #endif\n                  int b = r->residue_books[c][pass];\n                  if (b >= 0) {\n                     Codebook *book = f->codebooks + b;\n                     if (!codebook_decode_deinterleave_repeat(f, book, residue_buffers, ch, &c_inter, &p_inter, n, r->part_size))\n                        goto done;\n                  } else {\n                     z += r->part_size;\n                     c_inter = z % ch;\n                     p_inter = z / ch;\n                  }\n               }\n               #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n               ++class_set;\n               #endif\n            }\n         }\n      }\n      goto done;\n   }\n   CHECK(f);\n\n   for (pass=0; pass < 8; ++pass) {\n      int pcount = 0, class_set=0;\n      while (pcount < part_read) {\n         if (pass == 0) {\n            for (j=0; j < ch; ++j) {\n               if (!do_not_decode[j]) {\n                  Codebook *c = f->codebooks+r->classbook;\n                  int temp;\n                  DECODE(temp,f,c);\n                  if (temp == EOP) goto done;\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  part_classdata[j][class_set] = r->classdata[temp];\n                  #else\n                  for (i=classwords-1; i >= 0; --i) {\n                     classifications[j][i+pcount] = temp % r->classifications;\n                     temp /= r->classifications;\n                  }\n                  #endif\n               }\n            }\n         }\n         for (i=0; i < classwords && pcount < part_read; ++i, ++pcount) {\n            for (j=0; j < ch; ++j) {\n               if (!do_not_decode[j]) {\n                  #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n                  int c = part_classdata[j][class_set][i];\n                  #else\n                  int c = classifications[j][pcount];\n                  #endif\n                  int b = r->residue_books[c][pass];\n                  if (b >= 0) {\n                     float *target = residue_buffers[j];\n                     int offset = r->begin + pcount * r->part_size;\n                     int n = r->part_size;\n                     Codebook *book = f->codebooks + b;\n                     if (!residue_decode(f, book, target, offset, n, rtype))\n                        goto done;\n                  }\n               }\n            }\n         }\n         #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n         ++class_set;\n         #endif\n      }\n   }\n  done:\n   CHECK(f);\n   #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n   temp_free(f,part_classdata);\n   #else\n   temp_free(f,classifications);\n   #endif\n   temp_alloc_restore(f,temp_alloc_point);\n}\n\n\n#if 0\n// slow way for debugging\nvoid inverse_mdct_slow(float *buffer, int n)\n{\n   int i,j;\n   int n2 = n >> 1;\n   float *x = (float *) malloc(sizeof(*x) * n2);\n   memcpy(x, buffer, sizeof(*x) * n2);\n   for (i=0; i < n; ++i) {\n      float acc = 0;\n      for (j=0; j < n2; ++j)\n         // formula from paper:\n         //acc += n/4.0f * x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));\n         // formula from wikipedia\n         //acc += 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));\n         // these are equivalent, except the formula from the paper inverts the multiplier!\n         // however, what actually works is NO MULTIPLIER!?!\n         //acc += 64 * 2.0f / n2 * x[j] * (float) cos(M_PI/n2 * (i + 0.5 + n2/2)*(j + 0.5));\n         acc += x[j] * (float) cos(M_PI / 2 / n * (2 * i + 1 + n/2.0)*(2*j+1));\n      buffer[i] = acc;\n   }\n   free(x);\n}\n#elif 0\n// same as above, but just barely able to run in real time on modern machines\nvoid inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype)\n{\n   float mcos[16384];\n   int i,j;\n   int n2 = n >> 1, nmask = (n << 2) -1;\n   float *x = (float *) malloc(sizeof(*x) * n2);\n   memcpy(x, buffer, sizeof(*x) * n2);\n   for (i=0; i < 4*n; ++i)\n      mcos[i] = (float) cos(M_PI / 2 * i / n);\n\n   for (i=0; i < n; ++i) {\n      float acc = 0;\n      for (j=0; j < n2; ++j)\n         acc += x[j] * mcos[(2 * i + 1 + n2)*(2*j+1) & nmask];\n      buffer[i] = acc;\n   }\n   free(x);\n}\n#elif 0\n// transform to use a slow dct-iv; this is STILL basically trivial,\n// but only requires half as many ops\nvoid dct_iv_slow(float *buffer, int n)\n{\n   float mcos[16384];\n   float x[2048];\n   int i,j;\n   int n2 = n >> 1, nmask = (n << 3) - 1;\n   memcpy(x, buffer, sizeof(*x) * n);\n   for (i=0; i < 8*n; ++i)\n      mcos[i] = (float) cos(M_PI / 4 * i / n);\n   for (i=0; i < n; ++i) {\n      float acc = 0;\n      for (j=0; j < n; ++j)\n         acc += x[j] * mcos[((2 * i + 1)*(2*j+1)) & nmask];\n      buffer[i] = acc;\n   }\n}\n\nvoid inverse_mdct_slow(float *buffer, int n, vorb *f, int blocktype)\n{\n   int i, n4 = n >> 2, n2 = n >> 1, n3_4 = n - n4;\n   float temp[4096];\n\n   memcpy(temp, buffer, n2 * sizeof(float));\n   dct_iv_slow(temp, n2);  // returns -c'-d, a-b'\n\n   for (i=0; i < n4  ; ++i) buffer[i] = temp[i+n4];            // a-b'\n   for (   ; i < n3_4; ++i) buffer[i] = -temp[n3_4 - i - 1];   // b-a', c+d'\n   for (   ; i < n   ; ++i) buffer[i] = -temp[i - n3_4];       // c'+d\n}\n#endif\n\n#ifndef LIBVORBIS_MDCT\n#define LIBVORBIS_MDCT 0\n#endif\n\n#if LIBVORBIS_MDCT\n// directly call the vorbis MDCT using an interface documented\n// by Jeff Roberts... useful for performance comparison\ntypedef struct\n{\n  int n;\n  int log2n;\n\n  float *trig;\n  int   *bitrev;\n\n  float scale;\n} mdct_lookup;\n\nextern void mdct_init(mdct_lookup *lookup, int n);\nextern void mdct_clear(mdct_lookup *l);\nextern void mdct_backward(mdct_lookup *init, float *in, float *out);\n\nmdct_lookup M1,M2;\n\nvoid inverse_mdct(float *buffer, int n, vorb *f, int blocktype)\n{\n   mdct_lookup *M;\n   if (M1.n == n) M = &M1;\n   else if (M2.n == n) M = &M2;\n   else if (M1.n == 0) { mdct_init(&M1, n); M = &M1; }\n   else {\n      if (M2.n) __asm int 3;\n      mdct_init(&M2, n);\n      M = &M2;\n   }\n\n   mdct_backward(M, buffer, buffer);\n}\n#endif\n\n\n// the following were split out into separate functions while optimizing;\n// they could be pushed back up but eh. __forceinline showed no change;\n// they're probably already being inlined.\nstatic void imdct_step3_iter0_loop(int n, float *e, int i_off, int k_off, float *A)\n{\n   float *ee0 = e + i_off;\n   float *ee2 = ee0 + k_off;\n   int i;\n\n   assert((n & 3) == 0);\n   for (i=(n>>2); i > 0; --i) {\n      float k00_20, k01_21;\n      k00_20  = ee0[ 0] - ee2[ 0];\n      k01_21  = ee0[-1] - ee2[-1];\n      ee0[ 0] += ee2[ 0];//ee0[ 0] = ee0[ 0] + ee2[ 0];\n      ee0[-1] += ee2[-1];//ee0[-1] = ee0[-1] + ee2[-1];\n      ee2[ 0] = k00_20 * A[0] - k01_21 * A[1];\n      ee2[-1] = k01_21 * A[0] + k00_20 * A[1];\n      A += 8;\n\n      k00_20  = ee0[-2] - ee2[-2];\n      k01_21  = ee0[-3] - ee2[-3];\n      ee0[-2] += ee2[-2];//ee0[-2] = ee0[-2] + ee2[-2];\n      ee0[-3] += ee2[-3];//ee0[-3] = ee0[-3] + ee2[-3];\n      ee2[-2] = k00_20 * A[0] - k01_21 * A[1];\n      ee2[-3] = k01_21 * A[0] + k00_20 * A[1];\n      A += 8;\n\n      k00_20  = ee0[-4] - ee2[-4];\n      k01_21  = ee0[-5] - ee2[-5];\n      ee0[-4] += ee2[-4];//ee0[-4] = ee0[-4] + ee2[-4];\n      ee0[-5] += ee2[-5];//ee0[-5] = ee0[-5] + ee2[-5];\n      ee2[-4] = k00_20 * A[0] - k01_21 * A[1];\n      ee2[-5] = k01_21 * A[0] + k00_20 * A[1];\n      A += 8;\n\n      k00_20  = ee0[-6] - ee2[-6];\n      k01_21  = ee0[-7] - ee2[-7];\n      ee0[-6] += ee2[-6];//ee0[-6] = ee0[-6] + ee2[-6];\n      ee0[-7] += ee2[-7];//ee0[-7] = ee0[-7] + ee2[-7];\n      ee2[-6] = k00_20 * A[0] - k01_21 * A[1];\n      ee2[-7] = k01_21 * A[0] + k00_20 * A[1];\n      A += 8;\n      ee0 -= 8;\n      ee2 -= 8;\n   }\n}\n\nstatic void imdct_step3_inner_r_loop(int lim, float *e, int d0, int k_off, float *A, int k1)\n{\n   int i;\n   float k00_20, k01_21;\n\n   float *e0 = e + d0;\n   float *e2 = e0 + k_off;\n\n   for (i=lim >> 2; i > 0; --i) {\n      k00_20 = e0[-0] - e2[-0];\n      k01_21 = e0[-1] - e2[-1];\n      e0[-0] += e2[-0];//e0[-0] = e0[-0] + e2[-0];\n      e0[-1] += e2[-1];//e0[-1] = e0[-1] + e2[-1];\n      e2[-0] = (k00_20)*A[0] - (k01_21) * A[1];\n      e2[-1] = (k01_21)*A[0] + (k00_20) * A[1];\n\n      A += k1;\n\n      k00_20 = e0[-2] - e2[-2];\n      k01_21 = e0[-3] - e2[-3];\n      e0[-2] += e2[-2];//e0[-2] = e0[-2] + e2[-2];\n      e0[-3] += e2[-3];//e0[-3] = e0[-3] + e2[-3];\n      e2[-2] = (k00_20)*A[0] - (k01_21) * A[1];\n      e2[-3] = (k01_21)*A[0] + (k00_20) * A[1];\n\n      A += k1;\n\n      k00_20 = e0[-4] - e2[-4];\n      k01_21 = e0[-5] - e2[-5];\n      e0[-4] += e2[-4];//e0[-4] = e0[-4] + e2[-4];\n      e0[-5] += e2[-5];//e0[-5] = e0[-5] + e2[-5];\n      e2[-4] = (k00_20)*A[0] - (k01_21) * A[1];\n      e2[-5] = (k01_21)*A[0] + (k00_20) * A[1];\n\n      A += k1;\n\n      k00_20 = e0[-6] - e2[-6];\n      k01_21 = e0[-7] - e2[-7];\n      e0[-6] += e2[-6];//e0[-6] = e0[-6] + e2[-6];\n      e0[-7] += e2[-7];//e0[-7] = e0[-7] + e2[-7];\n      e2[-6] = (k00_20)*A[0] - (k01_21) * A[1];\n      e2[-7] = (k01_21)*A[0] + (k00_20) * A[1];\n\n      e0 -= 8;\n      e2 -= 8;\n\n      A += k1;\n   }\n}\n\nstatic void imdct_step3_inner_s_loop(int n, float *e, int i_off, int k_off, float *A, int a_off, int k0)\n{\n   int i;\n   float A0 = A[0];\n   float A1 = A[0+1];\n   float A2 = A[0+a_off];\n   float A3 = A[0+a_off+1];\n   float A4 = A[0+a_off*2+0];\n   float A5 = A[0+a_off*2+1];\n   float A6 = A[0+a_off*3+0];\n   float A7 = A[0+a_off*3+1];\n\n   float k00,k11;\n\n   float *ee0 = e  +i_off;\n   float *ee2 = ee0+k_off;\n\n   for (i=n; i > 0; --i) {\n      k00     = ee0[ 0] - ee2[ 0];\n      k11     = ee0[-1] - ee2[-1];\n      ee0[ 0] =  ee0[ 0] + ee2[ 0];\n      ee0[-1] =  ee0[-1] + ee2[-1];\n      ee2[ 0] = (k00) * A0 - (k11) * A1;\n      ee2[-1] = (k11) * A0 + (k00) * A1;\n\n      k00     = ee0[-2] - ee2[-2];\n      k11     = ee0[-3] - ee2[-3];\n      ee0[-2] =  ee0[-2] + ee2[-2];\n      ee0[-3] =  ee0[-3] + ee2[-3];\n      ee2[-2] = (k00) * A2 - (k11) * A3;\n      ee2[-3] = (k11) * A2 + (k00) * A3;\n\n      k00     = ee0[-4] - ee2[-4];\n      k11     = ee0[-5] - ee2[-5];\n      ee0[-4] =  ee0[-4] + ee2[-4];\n      ee0[-5] =  ee0[-5] + ee2[-5];\n      ee2[-4] = (k00) * A4 - (k11) * A5;\n      ee2[-5] = (k11) * A4 + (k00) * A5;\n\n      k00     = ee0[-6] - ee2[-6];\n      k11     = ee0[-7] - ee2[-7];\n      ee0[-6] =  ee0[-6] + ee2[-6];\n      ee0[-7] =  ee0[-7] + ee2[-7];\n      ee2[-6] = (k00) * A6 - (k11) * A7;\n      ee2[-7] = (k11) * A6 + (k00) * A7;\n\n      ee0 -= k0;\n      ee2 -= k0;\n   }\n}\n\nstatic __forceinline void iter_54(float *z)\n{\n   float k00,k11,k22,k33;\n   float y0,y1,y2,y3;\n\n   k00  = z[ 0] - z[-4];\n   y0   = z[ 0] + z[-4];\n   y2   = z[-2] + z[-6];\n   k22  = z[-2] - z[-6];\n\n   z[-0] = y0 + y2;      // z0 + z4 + z2 + z6\n   z[-2] = y0 - y2;      // z0 + z4 - z2 - z6\n\n   // done with y0,y2\n\n   k33  = z[-3] - z[-7];\n\n   z[-4] = k00 + k33;    // z0 - z4 + z3 - z7\n   z[-6] = k00 - k33;    // z0 - z4 - z3 + z7\n\n   // done with k33\n\n   k11  = z[-1] - z[-5];\n   y1   = z[-1] + z[-5];\n   y3   = z[-3] + z[-7];\n\n   z[-1] = y1 + y3;      // z1 + z5 + z3 + z7\n   z[-3] = y1 - y3;      // z1 + z5 - z3 - z7\n   z[-5] = k11 - k22;    // z1 - z5 + z2 - z6\n   z[-7] = k11 + k22;    // z1 - z5 - z2 + z6\n}\n\nstatic void imdct_step3_inner_s_loop_ld654(int n, float *e, int i_off, float *A, int base_n)\n{\n   int a_off = base_n >> 3;\n   float A2 = A[0+a_off];\n   float *z = e + i_off;\n   float *base = z - 16 * n;\n\n   while (z > base) {\n      float k00,k11;\n      float l00,l11;\n\n      k00    = z[-0] - z[ -8];\n      k11    = z[-1] - z[ -9];\n      l00    = z[-2] - z[-10];\n      l11    = z[-3] - z[-11];\n      z[ -0] = z[-0] + z[ -8];\n      z[ -1] = z[-1] + z[ -9];\n      z[ -2] = z[-2] + z[-10];\n      z[ -3] = z[-3] + z[-11];\n      z[ -8] = k00;\n      z[ -9] = k11;\n      z[-10] = (l00+l11) * A2;\n      z[-11] = (l11-l00) * A2;\n\n      k00    = z[ -4] - z[-12];\n      k11    = z[ -5] - z[-13];\n      l00    = z[ -6] - z[-14];\n      l11    = z[ -7] - z[-15];\n      z[ -4] = z[ -4] + z[-12];\n      z[ -5] = z[ -5] + z[-13];\n      z[ -6] = z[ -6] + z[-14];\n      z[ -7] = z[ -7] + z[-15];\n      z[-12] = k11;\n      z[-13] = -k00;\n      z[-14] = (l11-l00) * A2;\n      z[-15] = (l00+l11) * -A2;\n\n      iter_54(z);\n      iter_54(z-8);\n      z -= 16;\n   }\n}\n\nstatic void inverse_mdct(float *buffer, int n, vorb *f, int blocktype)\n{\n   int n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l;\n   int ld;\n   // @OPTIMIZE: reduce register pressure by using fewer variables?\n   int save_point = temp_alloc_save(f);\n   float *buf2 = (float *) temp_alloc(f, n2 * sizeof(*buf2));\n   float *u=NULL,*v=NULL;\n   // twiddle factors\n   float *A = f->A[blocktype];\n\n   // IMDCT algorithm from \"The use of multirate filter banks for coding of high quality digital audio\"\n   // See notes about bugs in that paper in less-optimal implementation 'inverse_mdct_old' after this function.\n\n   // kernel from paper\n\n\n   // merged:\n   //   copy and reflect spectral data\n   //   step 0\n\n   // note that it turns out that the items added together during\n   // this step are, in fact, being added to themselves (as reflected\n   // by step 0). inexplicable inefficiency! this became obvious\n   // once I combined the passes.\n\n   // so there's a missing 'times 2' here (for adding X to itself).\n   // this propagates through linearly to the end, where the numbers\n   // are 1/2 too small, and need to be compensated for.\n\n   {\n      float *d,*e, *AA, *e_stop;\n      d = &buf2[n2-2];\n      AA = A;\n      e = &buffer[0];\n      e_stop = &buffer[n2];\n      while (e != e_stop) {\n         d[1] = (e[0] * AA[0] - e[2]*AA[1]);\n         d[0] = (e[0] * AA[1] + e[2]*AA[0]);\n         d -= 2;\n         AA += 2;\n         e += 4;\n      }\n\n      e = &buffer[n2-3];\n      while (d >= buf2) {\n         d[1] = (-e[2] * AA[0] - -e[0]*AA[1]);\n         d[0] = (-e[2] * AA[1] + -e[0]*AA[0]);\n         d -= 2;\n         AA += 2;\n         e -= 4;\n      }\n   }\n\n   // now we use symbolic names for these, so that we can\n   // possibly swap their meaning as we change which operations\n   // are in place\n\n   u = buffer;\n   v = buf2;\n\n   // step 2    (paper output is w, now u)\n   // this could be in place, but the data ends up in the wrong\n   // place... _somebody_'s got to swap it, so this is nominated\n   {\n      float *AA = &A[n2-8];\n      float *d0,*d1, *e0, *e1;\n\n      e0 = &v[n4];\n      e1 = &v[0];\n\n      d0 = &u[n4];\n      d1 = &u[0];\n\n      while (AA >= A) {\n         float v40_20, v41_21;\n\n         v41_21 = e0[1] - e1[1];\n         v40_20 = e0[0] - e1[0];\n         d0[1]  = e0[1] + e1[1];\n         d0[0]  = e0[0] + e1[0];\n         d1[1]  = v41_21*AA[4] - v40_20*AA[5];\n         d1[0]  = v40_20*AA[4] + v41_21*AA[5];\n\n         v41_21 = e0[3] - e1[3];\n         v40_20 = e0[2] - e1[2];\n         d0[3]  = e0[3] + e1[3];\n         d0[2]  = e0[2] + e1[2];\n         d1[3]  = v41_21*AA[0] - v40_20*AA[1];\n         d1[2]  = v40_20*AA[0] + v41_21*AA[1];\n\n         AA -= 8;\n\n         d0 += 4;\n         d1 += 4;\n         e0 += 4;\n         e1 += 4;\n      }\n   }\n\n   // step 3\n   ld = ilog(n) - 1; // ilog is off-by-one from normal definitions\n\n   // optimized step 3:\n\n   // the original step3 loop can be nested r inside s or s inside r;\n   // it's written originally as s inside r, but this is dumb when r\n   // iterates many times, and s few. So I have two copies of it and\n   // switch between them halfway.\n\n   // this is iteration 0 of step 3\n   imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*0, -(n >> 3), A);\n   imdct_step3_iter0_loop(n >> 4, u, n2-1-n4*1, -(n >> 3), A);\n\n   // this is iteration 1 of step 3\n   imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*0, -(n >> 4), A, 16);\n   imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*1, -(n >> 4), A, 16);\n   imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*2, -(n >> 4), A, 16);\n   imdct_step3_inner_r_loop(n >> 5, u, n2-1 - n8*3, -(n >> 4), A, 16);\n\n   l=2;\n   for (; l < (ld-3)>>1; ++l) {\n      int k0 = n >> (l+2), k0_2 = k0>>1;\n      int lim = 1 << (l+1);\n      int i;\n      for (i=0; i < lim; ++i)\n         imdct_step3_inner_r_loop(n >> (l+4), u, n2-1 - k0*i, -k0_2, A, 1 << (l+3));\n   }\n\n   for (; l < ld-6; ++l) {\n      int k0 = n >> (l+2), k1 = 1 << (l+3), k0_2 = k0>>1;\n      int rlim = n >> (l+6), r;\n      int lim = 1 << (l+1);\n      int i_off;\n      float *A0 = A;\n      i_off = n2-1;\n      for (r=rlim; r > 0; --r) {\n         imdct_step3_inner_s_loop(lim, u, i_off, -k0_2, A0, k1, k0);\n         A0 += k1*4;\n         i_off -= 8;\n      }\n   }\n\n   // iterations with count:\n   //   ld-6,-5,-4 all interleaved together\n   //       the big win comes from getting rid of needless flops\n   //         due to the constants on pass 5 & 4 being all 1 and 0;\n   //       combining them to be simultaneous to improve cache made little difference\n   imdct_step3_inner_s_loop_ld654(n >> 5, u, n2-1, A, n);\n\n   // output is u\n\n   // step 4, 5, and 6\n   // cannot be in-place because of step 5\n   {\n      uint16 *bitrev = f->bit_reverse[blocktype];\n      // weirdly, I'd have thought reading sequentially and writing\n      // erratically would have been better than vice-versa, but in\n      // fact that's not what my testing showed. (That is, with\n      // j = bitreverse(i), do you read i and write j, or read j and write i.)\n\n      float *d0 = &v[n4-4];\n      float *d1 = &v[n2-4];\n      while (d0 >= v) {\n         int k4;\n\n         k4 = bitrev[0];\n         d1[3] = u[k4+0];\n         d1[2] = u[k4+1];\n         d0[3] = u[k4+2];\n         d0[2] = u[k4+3];\n\n         k4 = bitrev[1];\n         d1[1] = u[k4+0];\n         d1[0] = u[k4+1];\n         d0[1] = u[k4+2];\n         d0[0] = u[k4+3];\n\n         d0 -= 4;\n         d1 -= 4;\n         bitrev += 2;\n      }\n   }\n   // (paper output is u, now v)\n\n\n   // data must be in buf2\n   assert(v == buf2);\n\n   // step 7   (paper output is v, now v)\n   // this is now in place\n   {\n      float *C = f->C[blocktype];\n      float *d, *e;\n\n      d = v;\n      e = v + n2 - 4;\n\n      while (d < e) {\n         float a02,a11,b0,b1,b2,b3;\n\n         a02 = d[0] - e[2];\n         a11 = d[1] + e[3];\n\n         b0 = C[1]*a02 + C[0]*a11;\n         b1 = C[1]*a11 - C[0]*a02;\n\n         b2 = d[0] + e[ 2];\n         b3 = d[1] - e[ 3];\n\n         d[0] = b2 + b0;\n         d[1] = b3 + b1;\n         e[2] = b2 - b0;\n         e[3] = b1 - b3;\n\n         a02 = d[2] - e[0];\n         a11 = d[3] + e[1];\n\n         b0 = C[3]*a02 + C[2]*a11;\n         b1 = C[3]*a11 - C[2]*a02;\n\n         b2 = d[2] + e[ 0];\n         b3 = d[3] - e[ 1];\n\n         d[2] = b2 + b0;\n         d[3] = b3 + b1;\n         e[0] = b2 - b0;\n         e[1] = b1 - b3;\n\n         C += 4;\n         d += 4;\n         e -= 4;\n      }\n   }\n\n   // data must be in buf2\n\n\n   // step 8+decode   (paper output is X, now buffer)\n   // this generates pairs of data a la 8 and pushes them directly through\n   // the decode kernel (pushing rather than pulling) to avoid having\n   // to make another pass later\n\n   // this cannot POSSIBLY be in place, so we refer to the buffers directly\n\n   {\n      float *d0,*d1,*d2,*d3;\n\n      float *B = f->B[blocktype] + n2 - 8;\n      float *e = buf2 + n2 - 8;\n      d0 = &buffer[0];\n      d1 = &buffer[n2-4];\n      d2 = &buffer[n2];\n      d3 = &buffer[n-4];\n      while (e >= v) {\n         float p0,p1,p2,p3;\n\n         p3 =  e[6]*B[7] - e[7]*B[6];\n         p2 = -e[6]*B[6] - e[7]*B[7];\n\n         d0[0] =   p3;\n         d1[3] = - p3;\n         d2[0] =   p2;\n         d3[3] =   p2;\n\n         p1 =  e[4]*B[5] - e[5]*B[4];\n         p0 = -e[4]*B[4] - e[5]*B[5];\n\n         d0[1] =   p1;\n         d1[2] = - p1;\n         d2[1] =   p0;\n         d3[2] =   p0;\n\n         p3 =  e[2]*B[3] - e[3]*B[2];\n         p2 = -e[2]*B[2] - e[3]*B[3];\n\n         d0[2] =   p3;\n         d1[1] = - p3;\n         d2[2] =   p2;\n         d3[1] =   p2;\n\n         p1 =  e[0]*B[1] - e[1]*B[0];\n         p0 = -e[0]*B[0] - e[1]*B[1];\n\n         d0[3] =   p1;\n         d1[0] = - p1;\n         d2[3] =   p0;\n         d3[0] =   p0;\n\n         B -= 8;\n         e -= 8;\n         d0 += 4;\n         d2 += 4;\n         d1 -= 4;\n         d3 -= 4;\n      }\n   }\n\n   temp_free(f,buf2);\n   temp_alloc_restore(f,save_point);\n}\n\n#if 0\n// this is the original version of the above code, if you want to optimize it from scratch\nvoid inverse_mdct_naive(float *buffer, int n)\n{\n   float s;\n   float A[1 << 12], B[1 << 12], C[1 << 11];\n   int i,k,k2,k4, n2 = n >> 1, n4 = n >> 2, n8 = n >> 3, l;\n   int n3_4 = n - n4, ld;\n   // how can they claim this only uses N words?!\n   // oh, because they're only used sparsely, whoops\n   float u[1 << 13], X[1 << 13], v[1 << 13], w[1 << 13];\n   // set up twiddle factors\n\n   for (k=k2=0; k < n4; ++k,k2+=2) {\n      A[k2  ] = (float)  cos(4*k*M_PI/n);\n      A[k2+1] = (float) -sin(4*k*M_PI/n);\n      B[k2  ] = (float)  cos((k2+1)*M_PI/n/2);\n      B[k2+1] = (float)  sin((k2+1)*M_PI/n/2);\n   }\n   for (k=k2=0; k < n8; ++k,k2+=2) {\n      C[k2  ] = (float)  cos(2*(k2+1)*M_PI/n);\n      C[k2+1] = (float) -sin(2*(k2+1)*M_PI/n);\n   }\n\n   // IMDCT algorithm from \"The use of multirate filter banks for coding of high quality digital audio\"\n   // Note there are bugs in that pseudocode, presumably due to them attempting\n   // to rename the arrays nicely rather than representing the way their actual\n   // implementation bounces buffers back and forth. As a result, even in the\n   // \"some formulars corrected\" version, a direct implementation fails. These\n   // are noted below as \"paper bug\".\n\n   // copy and reflect spectral data\n   for (k=0; k < n2; ++k) u[k] = buffer[k];\n   for (   ; k < n ; ++k) u[k] = -buffer[n - k - 1];\n   // kernel from paper\n   // step 1\n   for (k=k2=k4=0; k < n4; k+=1, k2+=2, k4+=4) {\n      v[n-k4-1] = (u[k4] - u[n-k4-1]) * A[k2]   - (u[k4+2] - u[n-k4-3])*A[k2+1];\n      v[n-k4-3] = (u[k4] - u[n-k4-1]) * A[k2+1] + (u[k4+2] - u[n-k4-3])*A[k2];\n   }\n   // step 2\n   for (k=k4=0; k < n8; k+=1, k4+=4) {\n      w[n2+3+k4] = v[n2+3+k4] + v[k4+3];\n      w[n2+1+k4] = v[n2+1+k4] + v[k4+1];\n      w[k4+3]    = (v[n2+3+k4] - v[k4+3])*A[n2-4-k4] - (v[n2+1+k4]-v[k4+1])*A[n2-3-k4];\n      w[k4+1]    = (v[n2+1+k4] - v[k4+1])*A[n2-4-k4] + (v[n2+3+k4]-v[k4+3])*A[n2-3-k4];\n   }\n   // step 3\n   ld = ilog(n) - 1; // ilog is off-by-one from normal definitions\n   for (l=0; l < ld-3; ++l) {\n      int k0 = n >> (l+2), k1 = 1 << (l+3);\n      int rlim = n >> (l+4), r4, r;\n      int s2lim = 1 << (l+2), s2;\n      for (r=r4=0; r < rlim; r4+=4,++r) {\n         for (s2=0; s2 < s2lim; s2+=2) {\n            u[n-1-k0*s2-r4] = w[n-1-k0*s2-r4] + w[n-1-k0*(s2+1)-r4];\n            u[n-3-k0*s2-r4] = w[n-3-k0*s2-r4] + w[n-3-k0*(s2+1)-r4];\n            u[n-1-k0*(s2+1)-r4] = (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1]\n                                - (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1+1];\n            u[n-3-k0*(s2+1)-r4] = (w[n-3-k0*s2-r4] - w[n-3-k0*(s2+1)-r4]) * A[r*k1]\n                                + (w[n-1-k0*s2-r4] - w[n-1-k0*(s2+1)-r4]) * A[r*k1+1];\n         }\n      }\n      if (l+1 < ld-3) {\n         // paper bug: ping-ponging of u&w here is omitted\n         memcpy(w, u, sizeof(u));\n      }\n   }\n\n   // step 4\n   for (i=0; i < n8; ++i) {\n      int j = bit_reverse(i) >> (32-ld+3);\n      assert(j < n8);\n      if (i == j) {\n         // paper bug: original code probably swapped in place; if copying,\n         //            need to directly copy in this case\n         int i8 = i << 3;\n         v[i8+1] = u[i8+1];\n         v[i8+3] = u[i8+3];\n         v[i8+5] = u[i8+5];\n         v[i8+7] = u[i8+7];\n      } else if (i < j) {\n         int i8 = i << 3, j8 = j << 3;\n         v[j8+1] = u[i8+1], v[i8+1] = u[j8 + 1];\n         v[j8+3] = u[i8+3], v[i8+3] = u[j8 + 3];\n         v[j8+5] = u[i8+5], v[i8+5] = u[j8 + 5];\n         v[j8+7] = u[i8+7], v[i8+7] = u[j8 + 7];\n      }\n   }\n   // step 5\n   for (k=0; k < n2; ++k) {\n      w[k] = v[k*2+1];\n   }\n   // step 6\n   for (k=k2=k4=0; k < n8; ++k, k2 += 2, k4 += 4) {\n      u[n-1-k2] = w[k4];\n      u[n-2-k2] = w[k4+1];\n      u[n3_4 - 1 - k2] = w[k4+2];\n      u[n3_4 - 2 - k2] = w[k4+3];\n   }\n   // step 7\n   for (k=k2=0; k < n8; ++k, k2 += 2) {\n      v[n2 + k2 ] = ( u[n2 + k2] + u[n-2-k2] + C[k2+1]*(u[n2+k2]-u[n-2-k2]) + C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2;\n      v[n-2 - k2] = ( u[n2 + k2] + u[n-2-k2] - C[k2+1]*(u[n2+k2]-u[n-2-k2]) - C[k2]*(u[n2+k2+1]+u[n-2-k2+1]))/2;\n      v[n2+1+ k2] = ( u[n2+1+k2] - u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2;\n      v[n-1 - k2] = (-u[n2+1+k2] + u[n-1-k2] + C[k2+1]*(u[n2+1+k2]+u[n-1-k2]) - C[k2]*(u[n2+k2]-u[n-2-k2]))/2;\n   }\n   // step 8\n   for (k=k2=0; k < n4; ++k,k2 += 2) {\n      X[k]      = v[k2+n2]*B[k2  ] + v[k2+1+n2]*B[k2+1];\n      X[n2-1-k] = v[k2+n2]*B[k2+1] - v[k2+1+n2]*B[k2  ];\n   }\n\n   // decode kernel to output\n   // determined the following value experimentally\n   // (by first figuring out what made inverse_mdct_slow work); then matching that here\n   // (probably vorbis encoder premultiplies by n or n/2, to save it on the decoder?)\n   s = 0.5; // theoretically would be n4\n\n   // [[[ note! the s value of 0.5 is compensated for by the B[] in the current code,\n   //     so it needs to use the \"old\" B values to behave correctly, or else\n   //     set s to 1.0 ]]]\n   for (i=0; i < n4  ; ++i) buffer[i] = s * X[i+n4];\n   for (   ; i < n3_4; ++i) buffer[i] = -s * X[n3_4 - i - 1];\n   for (   ; i < n   ; ++i) buffer[i] = -s * X[i - n3_4];\n}\n#endif\n\nstatic float *get_window(vorb *f, int len)\n{\n   len <<= 1;\n   if (len == f->blocksize_0) return f->window[0];\n   if (len == f->blocksize_1) return f->window[1];\n   return NULL;\n}\n\n#ifndef STB_VORBIS_NO_DEFER_FLOOR\ntypedef int16 YTYPE;\n#else\ntypedef int YTYPE;\n#endif\nstatic int do_floor(vorb *f, Mapping *map, int i, int n, float *target, YTYPE *finalY, uint8 *step2_flag)\n{\n   int n2 = n >> 1;\n   int s = map->chan[i].mux, floor;\n   floor = map->submap_floor[s];\n   if (f->floor_types[floor] == 0) {\n      return error(f, VORBIS_invalid_stream);\n   } else {\n      Floor1 *g = &f->floor_config[floor].floor1;\n      int j,q;\n      int lx = 0, ly = finalY[0] * g->floor1_multiplier;\n      for (q=1; q < g->values; ++q) {\n         j = g->sorted_order[q];\n         #ifndef STB_VORBIS_NO_DEFER_FLOOR\n         STBV_NOTUSED(step2_flag);\n         if (finalY[j] >= 0)\n         #else\n         if (step2_flag[j])\n         #endif\n         {\n            int hy = finalY[j] * g->floor1_multiplier;\n            int hx = g->Xlist[j];\n            if (lx != hx)\n               draw_line(target, lx,ly, hx,hy, n2);\n            CHECK(f);\n            lx = hx, ly = hy;\n         }\n      }\n      if (lx < n2) {\n         // optimization of: draw_line(target, lx,ly, n,ly, n2);\n         for (j=lx; j < n2; ++j)\n            LINE_OP(target[j], inverse_db_table[ly]);\n         CHECK(f);\n      }\n   }\n   return TRUE;\n}\n\n// The meaning of \"left\" and \"right\"\n//\n// For a given frame:\n//     we compute samples from 0..n\n//     window_center is n/2\n//     we'll window and mix the samples from left_start to left_end with data from the previous frame\n//     all of the samples from left_end to right_start can be output without mixing; however,\n//        this interval is 0-length except when transitioning between short and long frames\n//     all of the samples from right_start to right_end need to be mixed with the next frame,\n//        which we don't have, so those get saved in a buffer\n//     frame N's right_end-right_start, the number of samples to mix with the next frame,\n//        has to be the same as frame N+1's left_end-left_start (which they are by\n//        construction)\n\nstatic int vorbis_decode_initial(vorb *f, int *p_left_start, int *p_left_end, int *p_right_start, int *p_right_end, int *mode)\n{\n   Mode *m;\n   int i, n, prev, next, window_center;\n   f->channel_buffer_start = f->channel_buffer_end = 0;\n\n  retry:\n   if (f->eof) return FALSE;\n   if (!maybe_start_packet(f))\n      return FALSE;\n   // check packet type\n   if (get_bits(f,1) != 0) {\n      if (IS_PUSH_MODE(f))\n         return error(f,VORBIS_bad_packet_type);\n      while (EOP != get8_packet(f));\n      goto retry;\n   }\n\n   if (f->alloc.alloc_buffer)\n      assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);\n\n   i = get_bits(f, ilog(f->mode_count-1));\n   if (i == EOP) return FALSE;\n   if (i >= f->mode_count) return FALSE;\n   *mode = i;\n   m = f->mode_config + i;\n   if (m->blockflag) {\n      n = f->blocksize_1;\n      prev = get_bits(f,1);\n      next = get_bits(f,1);\n   } else {\n      prev = next = 0;\n      n = f->blocksize_0;\n   }\n\n// WINDOWING\n\n   window_center = n >> 1;\n   if (m->blockflag && !prev) {\n      *p_left_start = (n - f->blocksize_0) >> 2;\n      *p_left_end   = (n + f->blocksize_0) >> 2;\n   } else {\n      *p_left_start = 0;\n      *p_left_end   = window_center;\n   }\n   if (m->blockflag && !next) {\n      *p_right_start = (n*3 - f->blocksize_0) >> 2;\n      *p_right_end   = (n*3 + f->blocksize_0) >> 2;\n   } else {\n      *p_right_start = window_center;\n      *p_right_end   = n;\n   }\n\n   return TRUE;\n}\n\nstatic int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start, int left_end, int right_start, int right_end, int *p_left)\n{\n   Mapping *map;\n   int i,j,k,n,n2;\n   int zero_channel[256];\n   int really_zero_channel[256];\n\n// WINDOWING\n\n   STBV_NOTUSED(left_end);\n   n = f->blocksize[m->blockflag];\n   map = &f->mapping[m->mapping];\n\n// FLOORS\n   n2 = n >> 1;\n\n   CHECK(f);\n\n   for (i=0; i < f->channels; ++i) {\n      int s = map->chan[i].mux, floor;\n      zero_channel[i] = FALSE;\n      floor = map->submap_floor[s];\n      if (f->floor_types[floor] == 0) {\n         return error(f, VORBIS_invalid_stream);\n      } else {\n         Floor1 *g = &f->floor_config[floor].floor1;\n         if (get_bits(f, 1)) {\n            short *finalY;\n            uint8 step2_flag[256];\n            static int range_list[4] = { 256, 128, 86, 64 };\n            int range = range_list[g->floor1_multiplier-1];\n            int offset = 2;\n            finalY = f->finalY[i];\n            finalY[0] = get_bits(f, ilog(range)-1);\n            finalY[1] = get_bits(f, ilog(range)-1);\n            for (j=0; j < g->partitions; ++j) {\n               int pclass = g->partition_class_list[j];\n               int cdim = g->class_dimensions[pclass];\n               int cbits = g->class_subclasses[pclass];\n               int csub = (1 << cbits)-1;\n               int cval = 0;\n               if (cbits) {\n                  Codebook *c = f->codebooks + g->class_masterbooks[pclass];\n                  DECODE(cval,f,c);\n               }\n               for (k=0; k < cdim; ++k) {\n                  int book = g->subclass_books[pclass][cval & csub];\n                  cval = cval >> cbits;\n                  if (book >= 0) {\n                     int temp;\n                     Codebook *c = f->codebooks + book;\n                     DECODE(temp,f,c);\n                     finalY[offset++] = temp;\n                  } else\n                     finalY[offset++] = 0;\n               }\n            }\n            if (f->valid_bits == INVALID_BITS) goto error; // behavior according to spec\n            step2_flag[0] = step2_flag[1] = 1;\n            for (j=2; j < g->values; ++j) {\n               int low, high, pred, highroom, lowroom, room, val;\n               low = g->neighbors[j][0];\n               high = g->neighbors[j][1];\n               //neighbors(g->Xlist, j, &low, &high);\n               pred = predict_point(g->Xlist[j], g->Xlist[low], g->Xlist[high], finalY[low], finalY[high]);\n               val = finalY[j];\n               highroom = range - pred;\n               lowroom = pred;\n               if (highroom < lowroom)\n                  room = highroom * 2;\n               else\n                  room = lowroom * 2;\n               if (val) {\n                  step2_flag[low] = step2_flag[high] = 1;\n                  step2_flag[j] = 1;\n                  if (val >= room)\n                     if (highroom > lowroom)\n                        finalY[j] = val - lowroom + pred;\n                     else\n                        finalY[j] = pred - val + highroom - 1;\n                  else\n                     if (val & 1)\n                        finalY[j] = pred - ((val+1)>>1);\n                     else\n                        finalY[j] = pred + (val>>1);\n               } else {\n                  step2_flag[j] = 0;\n                  finalY[j] = pred;\n               }\n            }\n\n#ifdef STB_VORBIS_NO_DEFER_FLOOR\n            do_floor(f, map, i, n, f->floor_buffers[i], finalY, step2_flag);\n#else\n            // defer final floor computation until _after_ residue\n            for (j=0; j < g->values; ++j) {\n               if (!step2_flag[j])\n                  finalY[j] = -1;\n            }\n#endif\n         } else {\n           error:\n            zero_channel[i] = TRUE;\n         }\n         // So we just defer everything else to later\n\n         // at this point we've decoded the floor into buffer\n      }\n   }\n   CHECK(f);\n   // at this point we've decoded all floors\n\n   if (f->alloc.alloc_buffer)\n      assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);\n\n   // re-enable coupled channels if necessary\n   memcpy(really_zero_channel, zero_channel, sizeof(really_zero_channel[0]) * f->channels);\n   for (i=0; i < map->coupling_steps; ++i)\n      if (!zero_channel[map->chan[i].magnitude] || !zero_channel[map->chan[i].angle]) {\n         zero_channel[map->chan[i].magnitude] = zero_channel[map->chan[i].angle] = FALSE;\n      }\n\n   CHECK(f);\n// RESIDUE DECODE\n   for (i=0; i < map->submaps; ++i) {\n      float *residue_buffers[STB_VORBIS_MAX_CHANNELS];\n      int r;\n      uint8 do_not_decode[256];\n      int ch = 0;\n      for (j=0; j < f->channels; ++j) {\n         if (map->chan[j].mux == i) {\n            if (zero_channel[j]) {\n               do_not_decode[ch] = TRUE;\n               residue_buffers[ch] = NULL;\n            } else {\n               do_not_decode[ch] = FALSE;\n               residue_buffers[ch] = f->channel_buffers[j];\n            }\n            ++ch;\n         }\n      }\n      r = map->submap_residue[i];\n      decode_residue(f, residue_buffers, ch, n2, r, do_not_decode);\n   }\n\n   if (f->alloc.alloc_buffer)\n      assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);\n   CHECK(f);\n\n// INVERSE COUPLING\n   for (i = map->coupling_steps-1; i >= 0; --i) {\n      int n2 = n >> 1;\n      float *m = f->channel_buffers[map->chan[i].magnitude];\n      float *a = f->channel_buffers[map->chan[i].angle    ];\n      for (j=0; j < n2; ++j) {\n         float a2,m2;\n         if (m[j] > 0)\n            if (a[j] > 0)\n               m2 = m[j], a2 = m[j] - a[j];\n            else\n               a2 = m[j], m2 = m[j] + a[j];\n         else\n            if (a[j] > 0)\n               m2 = m[j], a2 = m[j] + a[j];\n            else\n               a2 = m[j], m2 = m[j] - a[j];\n         m[j] = m2;\n         a[j] = a2;\n      }\n   }\n   CHECK(f);\n\n   // finish decoding the floors\n#ifndef STB_VORBIS_NO_DEFER_FLOOR\n   for (i=0; i < f->channels; ++i) {\n      if (really_zero_channel[i]) {\n         memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2);\n      } else {\n         do_floor(f, map, i, n, f->channel_buffers[i], f->finalY[i], NULL);\n      }\n   }\n#else\n   for (i=0; i < f->channels; ++i) {\n      if (really_zero_channel[i]) {\n         memset(f->channel_buffers[i], 0, sizeof(*f->channel_buffers[i]) * n2);\n      } else {\n         for (j=0; j < n2; ++j)\n            f->channel_buffers[i][j] *= f->floor_buffers[i][j];\n      }\n   }\n#endif\n\n// INVERSE MDCT\n   CHECK(f);\n   for (i=0; i < f->channels; ++i)\n      inverse_mdct(f->channel_buffers[i], n, f, m->blockflag);\n   CHECK(f);\n\n   // this shouldn't be necessary, unless we exited on an error\n   // and want to flush to get to the next packet\n   flush_packet(f);\n\n   if (f->first_decode) {\n      // assume we start so first non-discarded sample is sample 0\n      // this isn't to spec, but spec would require us to read ahead\n      // and decode the size of all current frames--could be done,\n      // but presumably it's not a commonly used feature\n      f->current_loc = 0u - n2; // start of first frame is positioned for discard (NB this is an intentional unsigned overflow/wrap-around)\n      // we might have to discard samples \"from\" the next frame too,\n      // if we're lapping a large block then a small at the start?\n      f->discard_samples_deferred = n - right_end;\n      f->current_loc_valid = TRUE;\n      f->first_decode = FALSE;\n   } else if (f->discard_samples_deferred) {\n      if (f->discard_samples_deferred >= right_start - left_start) {\n         f->discard_samples_deferred -= (right_start - left_start);\n         left_start = right_start;\n         *p_left = left_start;\n      } else {\n         left_start += f->discard_samples_deferred;\n         *p_left = left_start;\n         f->discard_samples_deferred = 0;\n      }\n   } else if (f->previous_length == 0 && f->current_loc_valid) {\n      // we're recovering from a seek... that means we're going to discard\n      // the samples from this packet even though we know our position from\n      // the last page header, so we need to update the position based on\n      // the discarded samples here\n      // but wait, the code below is going to add this in itself even\n      // on a discard, so we don't need to do it here...\n   }\n\n   // check if we have ogg information about the sample # for this packet\n   if (f->last_seg_which == f->end_seg_with_known_loc) {\n      // if we have a valid current loc, and this is final:\n      if (f->current_loc_valid && (f->page_flag & PAGEFLAG_last_page)) {\n         uint32 current_end = f->known_loc_for_packet;\n         // then let's infer the size of the (probably) short final frame\n         if (current_end < f->current_loc + (right_end-left_start)) {\n            if (current_end < f->current_loc) {\n               // negative truncation, that's impossible!\n               *len = 0;\n            } else {\n               *len = current_end - f->current_loc;\n            }\n            *len += left_start; // this doesn't seem right, but has no ill effect on my test files\n            if (*len > right_end) *len = right_end; // this should never happen\n            f->current_loc += *len;\n            return TRUE;\n         }\n      }\n      // otherwise, just set our sample loc\n      // guess that the ogg granule pos refers to the _middle_ of the\n      // last frame?\n      // set f->current_loc to the position of left_start\n      f->current_loc = f->known_loc_for_packet - (n2-left_start);\n      f->current_loc_valid = TRUE;\n   }\n   if (f->current_loc_valid)\n      f->current_loc += (right_start - left_start);\n\n   if (f->alloc.alloc_buffer)\n      assert(f->alloc.alloc_buffer_length_in_bytes == f->temp_offset);\n   *len = right_end;  // ignore samples after the window goes to 0\n   CHECK(f);\n\n   return TRUE;\n}\n\nstatic int vorbis_decode_packet(vorb *f, int *len, int *p_left, int *p_right)\n{\n   int mode, left_end, right_end;\n   if (!vorbis_decode_initial(f, p_left, &left_end, p_right, &right_end, &mode)) return 0;\n   return vorbis_decode_packet_rest(f, len, f->mode_config + mode, *p_left, left_end, *p_right, right_end, p_left);\n}\n\nstatic int vorbis_finish_frame(stb_vorbis *f, int len, int left, int right)\n{\n   int prev,i,j;\n   // we use right&left (the start of the right- and left-window sin()-regions)\n   // to determine how much to return, rather than inferring from the rules\n   // (same result, clearer code); 'left' indicates where our sin() window\n   // starts, therefore where the previous window's right edge starts, and\n   // therefore where to start mixing from the previous buffer. 'right'\n   // indicates where our sin() ending-window starts, therefore that's where\n   // we start saving, and where our returned-data ends.\n\n   // mixin from previous window\n   if (f->previous_length) {\n      int i,j, n = f->previous_length;\n      float *w = get_window(f, n);\n      if (w == NULL) return 0;\n      for (i=0; i < f->channels; ++i) {\n         for (j=0; j < n; ++j)\n            f->channel_buffers[i][left+j] =\n               f->channel_buffers[i][left+j]*w[    j] +\n               f->previous_window[i][     j]*w[n-1-j];\n      }\n   }\n\n   prev = f->previous_length;\n\n   // last half of this data becomes previous window\n   f->previous_length = len - right;\n\n   // @OPTIMIZE: could avoid this copy by double-buffering the\n   // output (flipping previous_window with channel_buffers), but\n   // then previous_window would have to be 2x as large, and\n   // channel_buffers couldn't be temp mem (although they're NOT\n   // currently temp mem, they could be (unless we want to level\n   // performance by spreading out the computation))\n   for (i=0; i < f->channels; ++i)\n      for (j=0; right+j < len; ++j)\n         f->previous_window[i][j] = f->channel_buffers[i][right+j];\n\n   if (!prev)\n      // there was no previous packet, so this data isn't valid...\n      // this isn't entirely true, only the would-have-overlapped data\n      // isn't valid, but this seems to be what the spec requires\n      return 0;\n\n   // truncate a short frame\n   if (len < right) right = len;\n\n   f->samples_output += right-left;\n\n   return right - left;\n}\n\nstatic int vorbis_pump_first_frame(stb_vorbis *f)\n{\n   int len, right, left, res;\n   res = vorbis_decode_packet(f, &len, &left, &right);\n   if (res)\n      vorbis_finish_frame(f, len, left, right);\n   return res;\n}\n\n#ifndef STB_VORBIS_NO_PUSHDATA_API\nstatic int is_whole_packet_present(stb_vorbis *f)\n{\n   // make sure that we have the packet available before continuing...\n   // this requires a full ogg parse, but we know we can fetch from f->stream\n\n   // instead of coding this out explicitly, we could save the current read state,\n   // read the next packet with get8() until end-of-packet, check f->eof, then\n   // reset the state? but that would be slower, esp. since we'd have over 256 bytes\n   // of state to restore (primarily the page segment table)\n\n   int s = f->next_seg, first = TRUE;\n   uint8 *p = f->stream;\n\n   if (s != -1) { // if we're not starting the packet with a 'continue on next page' flag\n      for (; s < f->segment_count; ++s) {\n         p += f->segments[s];\n         if (f->segments[s] < 255)               // stop at first short segment\n            break;\n      }\n      // either this continues, or it ends it...\n      if (s == f->segment_count)\n         s = -1; // set 'crosses page' flag\n      if (p > f->stream_end)                     return error(f, VORBIS_need_more_data);\n      first = FALSE;\n   }\n   for (; s == -1;) {\n      uint8 *q;\n      int n;\n\n      // check that we have the page header ready\n      if (p + 26 >= f->stream_end)               return error(f, VORBIS_need_more_data);\n      // validate the page\n      if (memcmp(p, ogg_page_header, 4))         return error(f, VORBIS_invalid_stream);\n      if (p[4] != 0)                             return error(f, VORBIS_invalid_stream);\n      if (first) { // the first segment must NOT have 'continued_packet', later ones MUST\n         if (f->previous_length)\n            if ((p[5] & PAGEFLAG_continued_packet))  return error(f, VORBIS_invalid_stream);\n         // if no previous length, we're resynching, so we can come in on a continued-packet,\n         // which we'll just drop\n      } else {\n         if (!(p[5] & PAGEFLAG_continued_packet)) return error(f, VORBIS_invalid_stream);\n      }\n      n = p[26]; // segment counts\n      q = p+27;  // q points to segment table\n      p = q + n; // advance past header\n      // make sure we've read the segment table\n      if (p > f->stream_end)                     return error(f, VORBIS_need_more_data);\n      for (s=0; s < n; ++s) {\n         p += q[s];\n         if (q[s] < 255)\n            break;\n      }\n      if (s == n)\n         s = -1; // set 'crosses page' flag\n      if (p > f->stream_end)                     return error(f, VORBIS_need_more_data);\n      first = FALSE;\n   }\n   return TRUE;\n}\n#endif // !STB_VORBIS_NO_PUSHDATA_API\n\nstatic int start_decoder(vorb *f)\n{\n   uint8 header[6], x,y;\n   int len,i,j,k, max_submaps = 0;\n   int longest_floorlist=0;\n\n   // first page, first packet\n   f->first_decode = TRUE;\n\n   if (!start_page(f))                              return FALSE;\n   // validate page flag\n   if (!(f->page_flag & PAGEFLAG_first_page))       return error(f, VORBIS_invalid_first_page);\n   if (f->page_flag & PAGEFLAG_last_page)           return error(f, VORBIS_invalid_first_page);\n   if (f->page_flag & PAGEFLAG_continued_packet)    return error(f, VORBIS_invalid_first_page);\n   // check for expected packet length\n   if (f->segment_count != 1)                       return error(f, VORBIS_invalid_first_page);\n   if (f->segments[0] != 30) {\n      // check for the Ogg skeleton fishead identifying header to refine our error\n      if (f->segments[0] == 64 &&\n          getn(f, header, 6) &&\n          header[0] == 'f' &&\n          header[1] == 'i' &&\n          header[2] == 's' &&\n          header[3] == 'h' &&\n          header[4] == 'e' &&\n          header[5] == 'a' &&\n          get8(f)   == 'd' &&\n          get8(f)   == '\\0')                        return error(f, VORBIS_ogg_skeleton_not_supported);\n      else\n                                                    return error(f, VORBIS_invalid_first_page);\n   }\n\n   // read packet\n   // check packet header\n   if (get8(f) != VORBIS_packet_id)                 return error(f, VORBIS_invalid_first_page);\n   if (!getn(f, header, 6))                         return error(f, VORBIS_unexpected_eof);\n   if (!vorbis_validate(header))                    return error(f, VORBIS_invalid_first_page);\n   // vorbis_version\n   if (get32(f) != 0)                               return error(f, VORBIS_invalid_first_page);\n   f->channels = get8(f); if (!f->channels)         return error(f, VORBIS_invalid_first_page);\n   if (f->channels > STB_VORBIS_MAX_CHANNELS)       return error(f, VORBIS_too_many_channels);\n   f->sample_rate = get32(f); if (!f->sample_rate)  return error(f, VORBIS_invalid_first_page);\n   get32(f); // bitrate_maximum\n   get32(f); // bitrate_nominal\n   get32(f); // bitrate_minimum\n   x = get8(f);\n   {\n      int log0,log1;\n      log0 = x & 15;\n      log1 = x >> 4;\n      f->blocksize_0 = 1 << log0;\n      f->blocksize_1 = 1 << log1;\n      if (log0 < 6 || log0 > 13)                       return error(f, VORBIS_invalid_setup);\n      if (log1 < 6 || log1 > 13)                       return error(f, VORBIS_invalid_setup);\n      if (log0 > log1)                                 return error(f, VORBIS_invalid_setup);\n   }\n\n   // framing_flag\n   x = get8(f);\n   if (!(x & 1))                                    return error(f, VORBIS_invalid_first_page);\n\n   // second packet!\n   if (!start_page(f))                              return FALSE;\n\n   if (!start_packet(f))                            return FALSE;\n\n   if (!next_segment(f))                            return FALSE;\n\n   if (get8_packet(f) != VORBIS_packet_comment)            return error(f, VORBIS_invalid_setup);\n   for (i=0; i < 6; ++i) header[i] = get8_packet(f);\n   if (!vorbis_validate(header))                    return error(f, VORBIS_invalid_setup);\n   //file vendor\n   len = get32_packet(f);\n   f->vendor = (char*)setup_malloc(f, sizeof(char) * (len+1));\n   if (f->vendor == NULL)                           return error(f, VORBIS_outofmem);\n   for(i=0; i < len; ++i) {\n      f->vendor[i] = get8_packet(f);\n   }\n   f->vendor[len] = (char)'\\0';\n   //user comments\n   f->comment_list_length = get32_packet(f);\n   f->comment_list = NULL;\n   if (f->comment_list_length > 0)\n   {\n      f->comment_list = (char**) setup_malloc(f, sizeof(char*) * (f->comment_list_length));\n      if (f->comment_list == NULL)                  return error(f, VORBIS_outofmem);\n   }\n\n   for(i=0; i < f->comment_list_length; ++i) {\n      len = get32_packet(f);\n      f->comment_list[i] = (char*)setup_malloc(f, sizeof(char) * (len+1));\n      if (f->comment_list[i] == NULL)               return error(f, VORBIS_outofmem);\n\n      for(j=0; j < len; ++j) {\n         f->comment_list[i][j] = get8_packet(f);\n      }\n      f->comment_list[i][len] = (char)'\\0';\n   }\n\n   // framing_flag\n   x = get8_packet(f);\n   if (!(x & 1))                                    return error(f, VORBIS_invalid_setup);\n\n\n   skip(f, f->bytes_in_seg);\n   f->bytes_in_seg = 0;\n\n   do {\n      len = next_segment(f);\n      skip(f, len);\n      f->bytes_in_seg = 0;\n   } while (len);\n\n   // third packet!\n   if (!start_packet(f))                            return FALSE;\n\n   #ifndef STB_VORBIS_NO_PUSHDATA_API\n   if (IS_PUSH_MODE(f)) {\n      if (!is_whole_packet_present(f)) {\n         // convert error in ogg header to write type\n         if (f->error == VORBIS_invalid_stream)\n            f->error = VORBIS_invalid_setup;\n         return FALSE;\n      }\n   }\n   #endif\n\n   crc32_init(); // always init it, to avoid multithread race conditions\n\n   if (get8_packet(f) != VORBIS_packet_setup)       return error(f, VORBIS_invalid_setup);\n   for (i=0; i < 6; ++i) header[i] = get8_packet(f);\n   if (!vorbis_validate(header))                    return error(f, VORBIS_invalid_setup);\n\n   // codebooks\n\n   f->codebook_count = get_bits(f,8) + 1;\n   f->codebooks = (Codebook *) setup_malloc(f, sizeof(*f->codebooks) * f->codebook_count);\n   if (f->codebooks == NULL)                        return error(f, VORBIS_outofmem);\n   memset(f->codebooks, 0, sizeof(*f->codebooks) * f->codebook_count);\n   for (i=0; i < f->codebook_count; ++i) {\n      uint32 *values;\n      int ordered, sorted_count;\n      int total=0;\n      uint8 *lengths;\n      Codebook *c = f->codebooks+i;\n      CHECK(f);\n      x = get_bits(f, 8); if (x != 0x42)            return error(f, VORBIS_invalid_setup);\n      x = get_bits(f, 8); if (x != 0x43)            return error(f, VORBIS_invalid_setup);\n      x = get_bits(f, 8); if (x != 0x56)            return error(f, VORBIS_invalid_setup);\n      x = get_bits(f, 8);\n      c->dimensions = (get_bits(f, 8)<<8) + x;\n      x = get_bits(f, 8);\n      y = get_bits(f, 8);\n      c->entries = (get_bits(f, 8)<<16) + (y<<8) + x;\n      ordered = get_bits(f,1);\n      c->sparse = ordered ? 0 : get_bits(f,1);\n\n      if (c->dimensions == 0 && c->entries != 0)    return error(f, VORBIS_invalid_setup);\n\n      if (c->sparse)\n         lengths = (uint8 *) setup_temp_malloc(f, c->entries);\n      else\n         lengths = c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries);\n\n      if (!lengths) return error(f, VORBIS_outofmem);\n\n      if (ordered) {\n         int current_entry = 0;\n         int current_length = get_bits(f,5) + 1;\n         while (current_entry < c->entries) {\n            int limit = c->entries - current_entry;\n            int n = get_bits(f, ilog(limit));\n            if (current_length >= 32) return error(f, VORBIS_invalid_setup);\n            if (current_entry + n > (int) c->entries) { return error(f, VORBIS_invalid_setup); }\n            memset(lengths + current_entry, current_length, n);\n            current_entry += n;\n            ++current_length;\n         }\n      } else {\n         for (j=0; j < c->entries; ++j) {\n            int present = c->sparse ? get_bits(f,1) : 1;\n            if (present) {\n               lengths[j] = get_bits(f, 5) + 1;\n               ++total;\n               if (lengths[j] == 32)\n                  return error(f, VORBIS_invalid_setup);\n            } else {\n               lengths[j] = NO_CODE;\n            }\n         }\n      }\n\n      if (c->sparse && total >= c->entries >> 2) {\n         // convert sparse items to non-sparse!\n         if (c->entries > (int) f->setup_temp_memory_required)\n            f->setup_temp_memory_required = c->entries;\n\n         c->codeword_lengths = (uint8 *) setup_malloc(f, c->entries);\n         if (c->codeword_lengths == NULL) return error(f, VORBIS_outofmem);\n         memcpy(c->codeword_lengths, lengths, c->entries);\n         setup_temp_free(f, lengths, c->entries); // note this is only safe if there have been no intervening temp mallocs!\n         lengths = c->codeword_lengths;\n         c->sparse = 0;\n      }\n\n      // compute the size of the sorted tables\n      if (c->sparse) {\n         sorted_count = total;\n      } else {\n         sorted_count = 0;\n         #ifndef STB_VORBIS_NO_HUFFMAN_BINARY_SEARCH\n         for (j=0; j < c->entries; ++j)\n            if (lengths[j] > STB_VORBIS_FAST_HUFFMAN_LENGTH && lengths[j] != NO_CODE)\n               ++sorted_count;\n         #endif\n      }\n\n      c->sorted_entries = sorted_count;\n      values = NULL;\n\n      CHECK(f);\n      if (!c->sparse) {\n         c->codewords = (uint32 *) setup_malloc(f, sizeof(c->codewords[0]) * c->entries);\n         if (!c->codewords)                  return error(f, VORBIS_outofmem);\n      } else {\n         unsigned int size;\n         if (c->sorted_entries) {\n            c->codeword_lengths = (uint8 *) setup_malloc(f, c->sorted_entries);\n            if (!c->codeword_lengths)           return error(f, VORBIS_outofmem);\n            c->codewords = (uint32 *) setup_temp_malloc(f, sizeof(*c->codewords) * c->sorted_entries);\n            if (!c->codewords)                  return error(f, VORBIS_outofmem);\n            values = (uint32 *) setup_temp_malloc(f, sizeof(*values) * c->sorted_entries);\n            if (!values)                        return error(f, VORBIS_outofmem);\n         }\n         size = c->entries + (sizeof(*c->codewords) + sizeof(*values)) * c->sorted_entries;\n         if (size > f->setup_temp_memory_required)\n            f->setup_temp_memory_required = size;\n      }\n\n      if (!compute_codewords(c, lengths, c->entries, values)) {\n         if (c->sparse) setup_temp_free(f, values, 0);\n         return error(f, VORBIS_invalid_setup);\n      }\n\n      if (c->sorted_entries) {\n         // allocate an extra slot for sentinels\n         c->sorted_codewords = (uint32 *) setup_malloc(f, sizeof(*c->sorted_codewords) * (c->sorted_entries+1));\n         if (c->sorted_codewords == NULL) return error(f, VORBIS_outofmem);\n         // allocate an extra slot at the front so that c->sorted_values[-1] is defined\n         // so that we can catch that case without an extra if\n         c->sorted_values    = ( int   *) setup_malloc(f, sizeof(*c->sorted_values   ) * (c->sorted_entries+1));\n         if (c->sorted_values == NULL) return error(f, VORBIS_outofmem);\n         ++c->sorted_values;\n         c->sorted_values[-1] = -1;\n         compute_sorted_huffman(c, lengths, values);\n      }\n\n      if (c->sparse) {\n         setup_temp_free(f, values, sizeof(*values)*c->sorted_entries);\n         setup_temp_free(f, c->codewords, sizeof(*c->codewords)*c->sorted_entries);\n         setup_temp_free(f, lengths, c->entries);\n         c->codewords = NULL;\n      }\n\n      compute_accelerated_huffman(c);\n\n      CHECK(f);\n      c->lookup_type = get_bits(f, 4);\n      if (c->lookup_type > 2) return error(f, VORBIS_invalid_setup);\n      if (c->lookup_type > 0) {\n         uint16 *mults;\n         c->minimum_value = float32_unpack(get_bits(f, 32));\n         c->delta_value = float32_unpack(get_bits(f, 32));\n         c->value_bits = get_bits(f, 4)+1;\n         c->sequence_p = get_bits(f,1);\n         if (c->lookup_type == 1) {\n            int values = lookup1_values(c->entries, c->dimensions);\n            if (values < 0) return error(f, VORBIS_invalid_setup);\n            c->lookup_values = (uint32) values;\n         } else {\n            c->lookup_values = c->entries * c->dimensions;\n         }\n         if (c->lookup_values == 0) return error(f, VORBIS_invalid_setup);\n         mults = (uint16 *) setup_temp_malloc(f, sizeof(mults[0]) * c->lookup_values);\n         if (mults == NULL) return error(f, VORBIS_outofmem);\n         for (j=0; j < (int) c->lookup_values; ++j) {\n            int q = get_bits(f, c->value_bits);\n            if (q == EOP) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_invalid_setup); }\n            mults[j] = q;\n         }\n\n#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK\n         if (c->lookup_type == 1) {\n            int len, sparse = c->sparse;\n            float last=0;\n            // pre-expand the lookup1-style multiplicands, to avoid a divide in the inner loop\n            if (sparse) {\n               if (c->sorted_entries == 0) goto skip;\n               c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->sorted_entries * c->dimensions);\n            } else\n               c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->entries        * c->dimensions);\n            if (c->multiplicands == NULL) { setup_temp_free(f,mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_outofmem); }\n            len = sparse ? c->sorted_entries : c->entries;\n            for (j=0; j < len; ++j) {\n               unsigned int z = sparse ? c->sorted_values[j] : j;\n               unsigned int div=1;\n               for (k=0; k < c->dimensions; ++k) {\n                  int off = (z / div) % c->lookup_values;\n                  float val = mults[off]*c->delta_value + c->minimum_value + last;\n                  c->multiplicands[j*c->dimensions + k] = val;\n                  if (c->sequence_p)\n                     last = val;\n                  if (k+1 < c->dimensions) {\n                     if (div > UINT_MAX / (unsigned int) c->lookup_values) {\n                        setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values);\n                        return error(f, VORBIS_invalid_setup);\n                     }\n                     div *= c->lookup_values;\n                  }\n               }\n            }\n            c->lookup_type = 2;\n         }\n         else\n#endif\n         {\n            float last=0;\n            CHECK(f);\n            c->multiplicands = (codetype *) setup_malloc(f, sizeof(c->multiplicands[0]) * c->lookup_values);\n            if (c->multiplicands == NULL) { setup_temp_free(f, mults,sizeof(mults[0])*c->lookup_values); return error(f, VORBIS_outofmem); }\n            for (j=0; j < (int) c->lookup_values; ++j) {\n               float val = mults[j] * c->delta_value + c->minimum_value + last;\n               c->multiplicands[j] = val;\n               if (c->sequence_p)\n                  last = val;\n            }\n         }\n#ifndef STB_VORBIS_DIVIDES_IN_CODEBOOK\n        skip:;\n#endif\n         setup_temp_free(f, mults, sizeof(mults[0])*c->lookup_values);\n\n         CHECK(f);\n      }\n      CHECK(f);\n   }\n\n   // time domain transfers (notused)\n\n   x = get_bits(f, 6) + 1;\n   for (i=0; i < x; ++i) {\n      uint32 z = get_bits(f, 16);\n      if (z != 0) return error(f, VORBIS_invalid_setup);\n   }\n\n   // Floors\n   f->floor_count = get_bits(f, 6)+1;\n   f->floor_config = (Floor *)  setup_malloc(f, f->floor_count * sizeof(*f->floor_config));\n   if (f->floor_config == NULL) return error(f, VORBIS_outofmem);\n   for (i=0; i < f->floor_count; ++i) {\n      f->floor_types[i] = get_bits(f, 16);\n      if (f->floor_types[i] > 1) return error(f, VORBIS_invalid_setup);\n      if (f->floor_types[i] == 0) {\n         Floor0 *g = &f->floor_config[i].floor0;\n         g->order = get_bits(f,8);\n         g->rate = get_bits(f,16);\n         g->bark_map_size = get_bits(f,16);\n         g->amplitude_bits = get_bits(f,6);\n         g->amplitude_offset = get_bits(f,8);\n         g->number_of_books = get_bits(f,4) + 1;\n         for (j=0; j < g->number_of_books; ++j)\n            g->book_list[j] = get_bits(f,8);\n         return error(f, VORBIS_feature_not_supported);\n      } else {\n         stbv__floor_ordering p[31*8+2];\n         Floor1 *g = &f->floor_config[i].floor1;\n         int max_class = -1;\n         g->partitions = get_bits(f, 5);\n         for (j=0; j < g->partitions; ++j) {\n            g->partition_class_list[j] = get_bits(f, 4);\n            if (g->partition_class_list[j] > max_class)\n               max_class = g->partition_class_list[j];\n         }\n         for (j=0; j <= max_class; ++j) {\n            g->class_dimensions[j] = get_bits(f, 3)+1;\n            g->class_subclasses[j] = get_bits(f, 2);\n            if (g->class_subclasses[j]) {\n               g->class_masterbooks[j] = get_bits(f, 8);\n               if (g->class_masterbooks[j] >= f->codebook_count) return error(f, VORBIS_invalid_setup);\n            }\n            for (k=0; k < 1 << g->class_subclasses[j]; ++k) {\n               g->subclass_books[j][k] = (int16)get_bits(f,8)-1;\n               if (g->subclass_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup);\n            }\n         }\n         g->floor1_multiplier = get_bits(f,2)+1;\n         g->rangebits = get_bits(f,4);\n         g->Xlist[0] = 0;\n         g->Xlist[1] = 1 << g->rangebits;\n         g->values = 2;\n         for (j=0; j < g->partitions; ++j) {\n            int c = g->partition_class_list[j];\n            for (k=0; k < g->class_dimensions[c]; ++k) {\n               g->Xlist[g->values] = get_bits(f, g->rangebits);\n               ++g->values;\n            }\n         }\n         // precompute the sorting\n         for (j=0; j < g->values; ++j) {\n            p[j].x = g->Xlist[j];\n            p[j].id = j;\n         }\n         qsort(p, g->values, sizeof(p[0]), point_compare);\n         for (j=0; j < g->values-1; ++j)\n            if (p[j].x == p[j+1].x)\n               return error(f, VORBIS_invalid_setup);\n         for (j=0; j < g->values; ++j)\n            g->sorted_order[j] = (uint8) p[j].id;\n         // precompute the neighbors\n         for (j=2; j < g->values; ++j) {\n            int low = 0,hi = 0;\n            neighbors(g->Xlist, j, &low,&hi);\n            g->neighbors[j][0] = low;\n            g->neighbors[j][1] = hi;\n         }\n\n         if (g->values > longest_floorlist)\n            longest_floorlist = g->values;\n      }\n   }\n\n   // Residue\n   f->residue_count = get_bits(f, 6)+1;\n   f->residue_config = (Residue *) setup_malloc(f, f->residue_count * sizeof(f->residue_config[0]));\n   if (f->residue_config == NULL) return error(f, VORBIS_outofmem);\n   memset(f->residue_config, 0, f->residue_count * sizeof(f->residue_config[0]));\n   for (i=0; i < f->residue_count; ++i) {\n      uint8 residue_cascade[64];\n      Residue *r = f->residue_config+i;\n      f->residue_types[i] = get_bits(f, 16);\n      if (f->residue_types[i] > 2) return error(f, VORBIS_invalid_setup);\n      r->begin = get_bits(f, 24);\n      r->end = get_bits(f, 24);\n      if (r->end < r->begin) return error(f, VORBIS_invalid_setup);\n      r->part_size = get_bits(f,24)+1;\n      r->classifications = get_bits(f,6)+1;\n      r->classbook = get_bits(f,8);\n      if (r->classbook >= f->codebook_count) return error(f, VORBIS_invalid_setup);\n      for (j=0; j < r->classifications; ++j) {\n         uint8 high_bits=0;\n         uint8 low_bits=get_bits(f,3);\n         if (get_bits(f,1))\n            high_bits = get_bits(f,5);\n         residue_cascade[j] = high_bits*8 + low_bits;\n      }\n      r->residue_books = (short (*)[8]) setup_malloc(f, sizeof(r->residue_books[0]) * r->classifications);\n      if (r->residue_books == NULL) return error(f, VORBIS_outofmem);\n      for (j=0; j < r->classifications; ++j) {\n         for (k=0; k < 8; ++k) {\n            if (residue_cascade[j] & (1 << k)) {\n               r->residue_books[j][k] = get_bits(f, 8);\n               if (r->residue_books[j][k] >= f->codebook_count) return error(f, VORBIS_invalid_setup);\n            } else {\n               r->residue_books[j][k] = -1;\n            }\n         }\n      }\n      // precompute the classifications[] array to avoid inner-loop mod/divide\n      // call it 'classdata' since we already have r->classifications\n      r->classdata = (uint8 **) setup_malloc(f, sizeof(*r->classdata) * f->codebooks[r->classbook].entries);\n      if (!r->classdata) return error(f, VORBIS_outofmem);\n      memset(r->classdata, 0, sizeof(*r->classdata) * f->codebooks[r->classbook].entries);\n      for (j=0; j < f->codebooks[r->classbook].entries; ++j) {\n         int classwords = f->codebooks[r->classbook].dimensions;\n         int temp = j;\n         r->classdata[j] = (uint8 *) setup_malloc(f, sizeof(r->classdata[j][0]) * classwords);\n         if (r->classdata[j] == NULL) return error(f, VORBIS_outofmem);\n         for (k=classwords-1; k >= 0; --k) {\n            r->classdata[j][k] = temp % r->classifications;\n            temp /= r->classifications;\n         }\n      }\n   }\n\n   f->mapping_count = get_bits(f,6)+1;\n   f->mapping = (Mapping *) setup_malloc(f, f->mapping_count * sizeof(*f->mapping));\n   if (f->mapping == NULL) return error(f, VORBIS_outofmem);\n   memset(f->mapping, 0, f->mapping_count * sizeof(*f->mapping));\n   for (i=0; i < f->mapping_count; ++i) {\n      Mapping *m = f->mapping + i;\n      int mapping_type = get_bits(f,16);\n      if (mapping_type != 0) return error(f, VORBIS_invalid_setup);\n      m->chan = (MappingChannel *) setup_malloc(f, f->channels * sizeof(*m->chan));\n      if (m->chan == NULL) return error(f, VORBIS_outofmem);\n      if (get_bits(f,1))\n         m->submaps = get_bits(f,4)+1;\n      else\n         m->submaps = 1;\n      if (m->submaps > max_submaps)\n         max_submaps = m->submaps;\n      if (get_bits(f,1)) {\n         m->coupling_steps = get_bits(f,8)+1;\n         if (m->coupling_steps > f->channels) return error(f, VORBIS_invalid_setup);\n         for (k=0; k < m->coupling_steps; ++k) {\n            m->chan[k].magnitude = get_bits(f, ilog(f->channels-1));\n            m->chan[k].angle = get_bits(f, ilog(f->channels-1));\n            if (m->chan[k].magnitude >= f->channels)        return error(f, VORBIS_invalid_setup);\n            if (m->chan[k].angle     >= f->channels)        return error(f, VORBIS_invalid_setup);\n            if (m->chan[k].magnitude == m->chan[k].angle)   return error(f, VORBIS_invalid_setup);\n         }\n      } else\n         m->coupling_steps = 0;\n\n      // reserved field\n      if (get_bits(f,2)) return error(f, VORBIS_invalid_setup);\n      if (m->submaps > 1) {\n         for (j=0; j < f->channels; ++j) {\n            m->chan[j].mux = get_bits(f, 4);\n            if (m->chan[j].mux >= m->submaps)                return error(f, VORBIS_invalid_setup);\n         }\n      } else\n         // @SPECIFICATION: this case is missing from the spec\n         for (j=0; j < f->channels; ++j)\n            m->chan[j].mux = 0;\n\n      for (j=0; j < m->submaps; ++j) {\n         get_bits(f,8); // discard\n         m->submap_floor[j] = get_bits(f,8);\n         m->submap_residue[j] = get_bits(f,8);\n         if (m->submap_floor[j] >= f->floor_count)      return error(f, VORBIS_invalid_setup);\n         if (m->submap_residue[j] >= f->residue_count)  return error(f, VORBIS_invalid_setup);\n      }\n   }\n\n   // Modes\n   f->mode_count = get_bits(f, 6)+1;\n   for (i=0; i < f->mode_count; ++i) {\n      Mode *m = f->mode_config+i;\n      m->blockflag = get_bits(f,1);\n      m->windowtype = get_bits(f,16);\n      m->transformtype = get_bits(f,16);\n      m->mapping = get_bits(f,8);\n      if (m->windowtype != 0)                 return error(f, VORBIS_invalid_setup);\n      if (m->transformtype != 0)              return error(f, VORBIS_invalid_setup);\n      if (m->mapping >= f->mapping_count)     return error(f, VORBIS_invalid_setup);\n   }\n\n   flush_packet(f);\n\n   f->previous_length = 0;\n\n   for (i=0; i < f->channels; ++i) {\n      f->channel_buffers[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1);\n      f->previous_window[i] = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2);\n      f->finalY[i]          = (int16 *) setup_malloc(f, sizeof(int16) * longest_floorlist);\n      if (f->channel_buffers[i] == NULL || f->previous_window[i] == NULL || f->finalY[i] == NULL) return error(f, VORBIS_outofmem);\n      memset(f->channel_buffers[i], 0, sizeof(float) * f->blocksize_1);\n      #ifdef STB_VORBIS_NO_DEFER_FLOOR\n      f->floor_buffers[i]   = (float *) setup_malloc(f, sizeof(float) * f->blocksize_1/2);\n      if (f->floor_buffers[i] == NULL) return error(f, VORBIS_outofmem);\n      #endif\n   }\n\n   if (!init_blocksize(f, 0, f->blocksize_0)) return FALSE;\n   if (!init_blocksize(f, 1, f->blocksize_1)) return FALSE;\n   f->blocksize[0] = f->blocksize_0;\n   f->blocksize[1] = f->blocksize_1;\n\n#ifdef STB_VORBIS_DIVIDE_TABLE\n   if (integer_divide_table[1][1]==0)\n      for (i=0; i < DIVTAB_NUMER; ++i)\n         for (j=1; j < DIVTAB_DENOM; ++j)\n            integer_divide_table[i][j] = i / j;\n#endif\n\n   // compute how much temporary memory is needed\n\n   // 1.\n   {\n      uint32 imdct_mem = (f->blocksize_1 * sizeof(float) >> 1);\n      uint32 classify_mem;\n      int i,max_part_read=0;\n      for (i=0; i < f->residue_count; ++i) {\n         Residue *r = f->residue_config + i;\n         unsigned int actual_size = f->blocksize_1 / 2;\n         unsigned int limit_r_begin = r->begin < actual_size ? r->begin : actual_size;\n         unsigned int limit_r_end   = r->end   < actual_size ? r->end   : actual_size;\n         int n_read = limit_r_end - limit_r_begin;\n         int part_read = n_read / r->part_size;\n         if (part_read > max_part_read)\n            max_part_read = part_read;\n      }\n      #ifndef STB_VORBIS_DIVIDES_IN_RESIDUE\n      classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(uint8 *));\n      #else\n      classify_mem = f->channels * (sizeof(void*) + max_part_read * sizeof(int *));\n      #endif\n\n      // maximum reasonable partition size is f->blocksize_1\n\n      f->temp_memory_required = classify_mem;\n      if (imdct_mem > f->temp_memory_required)\n         f->temp_memory_required = imdct_mem;\n   }\n\n\n   if (f->alloc.alloc_buffer) {\n      assert(f->temp_offset == f->alloc.alloc_buffer_length_in_bytes);\n      // check if there's enough temp memory so we don't error later\n      if (f->setup_offset + sizeof(*f) + f->temp_memory_required > (unsigned) f->temp_offset)\n         return error(f, VORBIS_outofmem);\n   }\n\n   // @TODO: stb_vorbis_seek_start expects first_audio_page_offset to point to a page\n   // without PAGEFLAG_continued_packet, so this either points to the first page, or\n   // the page after the end of the headers. It might be cleaner to point to a page\n   // in the middle of the headers, when that's the page where the first audio packet\n   // starts, but we'd have to also correctly skip the end of any continued packet in\n   // stb_vorbis_seek_start.\n   if (f->next_seg == -1) {\n      f->first_audio_page_offset = stb_vorbis_get_file_offset(f);\n   } else {\n      f->first_audio_page_offset = 0;\n   }\n\n   return TRUE;\n}\n\nstatic void vorbis_deinit(stb_vorbis *p)\n{\n   int i,j;\n\n   setup_free(p, p->vendor);\n   for (i=0; i < p->comment_list_length; ++i) {\n      setup_free(p, p->comment_list[i]);\n   }\n   setup_free(p, p->comment_list);\n\n   if (p->residue_config) {\n      for (i=0; i < p->residue_count; ++i) {\n         Residue *r = p->residue_config+i;\n         if (r->classdata) {\n            for (j=0; j < p->codebooks[r->classbook].entries; ++j)\n               setup_free(p, r->classdata[j]);\n            setup_free(p, r->classdata);\n         }\n         setup_free(p, r->residue_books);\n      }\n   }\n\n   if (p->codebooks) {\n      CHECK(p);\n      for (i=0; i < p->codebook_count; ++i) {\n         Codebook *c = p->codebooks + i;\n         setup_free(p, c->codeword_lengths);\n         setup_free(p, c->multiplicands);\n         setup_free(p, c->codewords);\n         setup_free(p, c->sorted_codewords);\n         // c->sorted_values[-1] is the first entry in the array\n         setup_free(p, c->sorted_values ? c->sorted_values-1 : NULL);\n      }\n      setup_free(p, p->codebooks);\n   }\n   setup_free(p, p->floor_config);\n   setup_free(p, p->residue_config);\n   if (p->mapping) {\n      for (i=0; i < p->mapping_count; ++i)\n         setup_free(p, p->mapping[i].chan);\n      setup_free(p, p->mapping);\n   }\n   CHECK(p);\n   for (i=0; i < p->channels && i < STB_VORBIS_MAX_CHANNELS; ++i) {\n      setup_free(p, p->channel_buffers[i]);\n      setup_free(p, p->previous_window[i]);\n      #ifdef STB_VORBIS_NO_DEFER_FLOOR\n      setup_free(p, p->floor_buffers[i]);\n      #endif\n      setup_free(p, p->finalY[i]);\n   }\n   for (i=0; i < 2; ++i) {\n      setup_free(p, p->A[i]);\n      setup_free(p, p->B[i]);\n      setup_free(p, p->C[i]);\n      setup_free(p, p->window[i]);\n      setup_free(p, p->bit_reverse[i]);\n   }\n   #ifndef STB_VORBIS_NO_STDIO\n   if (p->close_on_free) fclose(p->f);\n   #endif\n}\n\nvoid stb_vorbis_close(stb_vorbis *p)\n{\n   if (p == NULL) return;\n   vorbis_deinit(p);\n   setup_free(p,p);\n}\n\nstatic void vorbis_init(stb_vorbis *p, const stb_vorbis_alloc *z)\n{\n   memset(p, 0, sizeof(*p)); // NULL out all malloc'd pointers to start\n   if (z) {\n      p->alloc = *z;\n      p->alloc.alloc_buffer_length_in_bytes &= ~7;\n      p->temp_offset = p->alloc.alloc_buffer_length_in_bytes;\n   }\n   p->eof = 0;\n   p->error = VORBIS__no_error;\n   p->stream = NULL;\n   p->codebooks = NULL;\n   p->page_crc_tests = -1;\n   #ifndef STB_VORBIS_NO_STDIO\n   p->close_on_free = FALSE;\n   p->f = NULL;\n   #endif\n}\n\nint stb_vorbis_get_sample_offset(stb_vorbis *f)\n{\n   if (f->current_loc_valid)\n      return f->current_loc;\n   else\n      return -1;\n}\n\nstb_vorbis_info stb_vorbis_get_info(stb_vorbis *f)\n{\n   stb_vorbis_info d;\n   d.channels = f->channels;\n   d.sample_rate = f->sample_rate;\n   d.setup_memory_required = f->setup_memory_required;\n   d.setup_temp_memory_required = f->setup_temp_memory_required;\n   d.temp_memory_required = f->temp_memory_required;\n   d.max_frame_size = f->blocksize_1 >> 1;\n   return d;\n}\n\nstb_vorbis_comment stb_vorbis_get_comment(stb_vorbis *f)\n{\n   stb_vorbis_comment d;\n   d.vendor = f->vendor;\n   d.comment_list_length = f->comment_list_length;\n   d.comment_list = f->comment_list;\n   return d;\n}\n\nint stb_vorbis_get_error(stb_vorbis *f)\n{\n   int e = f->error;\n   f->error = VORBIS__no_error;\n   return e;\n}\n\nstatic stb_vorbis * vorbis_alloc(stb_vorbis *f)\n{\n   stb_vorbis *p = (stb_vorbis *) setup_malloc(f, sizeof(*p));\n   return p;\n}\n\n#ifndef STB_VORBIS_NO_PUSHDATA_API\n\nvoid stb_vorbis_flush_pushdata(stb_vorbis *f)\n{\n   f->previous_length = 0;\n   f->page_crc_tests  = 0;\n   f->discard_samples_deferred = 0;\n   f->current_loc_valid = FALSE;\n   f->first_decode = FALSE;\n   f->samples_output = 0;\n   f->channel_buffer_start = 0;\n   f->channel_buffer_end = 0;\n}\n\nstatic int vorbis_search_for_page_pushdata(vorb *f, uint8 *data, int data_len)\n{\n   int i,n;\n   for (i=0; i < f->page_crc_tests; ++i)\n      f->scan[i].bytes_done = 0;\n\n   // if we have room for more scans, search for them first, because\n   // they may cause us to stop early if their header is incomplete\n   if (f->page_crc_tests < STB_VORBIS_PUSHDATA_CRC_COUNT) {\n      if (data_len < 4) return 0;\n      data_len -= 3; // need to look for 4-byte sequence, so don't miss\n                     // one that straddles a boundary\n      for (i=0; i < data_len; ++i) {\n         if (data[i] == 0x4f) {\n            if (0==memcmp(data+i, ogg_page_header, 4)) {\n               int j,len;\n               uint32 crc;\n               // make sure we have the whole page header\n               if (i+26 >= data_len || i+27+data[i+26] >= data_len) {\n                  // only read up to this page start, so hopefully we'll\n                  // have the whole page header start next time\n                  data_len = i;\n                  break;\n               }\n               // ok, we have it all; compute the length of the page\n               len = 27 + data[i+26];\n               for (j=0; j < data[i+26]; ++j)\n                  len += data[i+27+j];\n               // scan everything up to the embedded crc (which we must 0)\n               crc = 0;\n               for (j=0; j < 22; ++j)\n                  crc = crc32_update(crc, data[i+j]);\n               // now process 4 0-bytes\n               for (   ; j < 26; ++j)\n                  crc = crc32_update(crc, 0);\n               // len is the total number of bytes we need to scan\n               n = f->page_crc_tests++;\n               f->scan[n].bytes_left = len-j;\n               f->scan[n].crc_so_far = crc;\n               f->scan[n].goal_crc = data[i+22] + (data[i+23] << 8) + (data[i+24]<<16) + (data[i+25]<<24);\n               // if the last frame on a page is continued to the next, then\n               // we can't recover the sample_loc immediately\n               if (data[i+27+data[i+26]-1] == 255)\n                  f->scan[n].sample_loc = ~0;\n               else\n                  f->scan[n].sample_loc = data[i+6] + (data[i+7] << 8) + (data[i+ 8]<<16) + (data[i+ 9]<<24);\n               f->scan[n].bytes_done = i+j;\n               if (f->page_crc_tests == STB_VORBIS_PUSHDATA_CRC_COUNT)\n                  break;\n               // keep going if we still have room for more\n            }\n         }\n      }\n   }\n\n   for (i=0; i < f->page_crc_tests;) {\n      uint32 crc;\n      int j;\n      int n = f->scan[i].bytes_done;\n      int m = f->scan[i].bytes_left;\n      if (m > data_len - n) m = data_len - n;\n      // m is the bytes to scan in the current chunk\n      crc = f->scan[i].crc_so_far;\n      for (j=0; j < m; ++j)\n         crc = crc32_update(crc, data[n+j]);\n      f->scan[i].bytes_left -= m;\n      f->scan[i].crc_so_far = crc;\n      if (f->scan[i].bytes_left == 0) {\n         // does it match?\n         if (f->scan[i].crc_so_far == f->scan[i].goal_crc) {\n            // Houston, we have page\n            data_len = n+m; // consumption amount is wherever that scan ended\n            f->page_crc_tests = -1; // drop out of page scan mode\n            f->previous_length = 0; // decode-but-don't-output one frame\n            f->next_seg = -1;       // start a new page\n            f->current_loc = f->scan[i].sample_loc; // set the current sample location\n                                    // to the amount we'd have decoded had we decoded this page\n            f->current_loc_valid = f->current_loc != ~0U;\n            return data_len;\n         }\n         // delete entry\n         f->scan[i] = f->scan[--f->page_crc_tests];\n      } else {\n         ++i;\n      }\n   }\n\n   return data_len;\n}\n\n// return value: number of bytes we used\nint stb_vorbis_decode_frame_pushdata(\n         stb_vorbis *f,                   // the file we're decoding\n         const uint8 *data, int data_len, // the memory available for decoding\n         int *channels,                   // place to write number of float * buffers\n         float ***output,                 // place to write float ** array of float * buffers\n         int *samples                     // place to write number of output samples\n     )\n{\n   int i;\n   int len,right,left;\n\n   if (!IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);\n\n   if (f->page_crc_tests >= 0) {\n      *samples = 0;\n      return vorbis_search_for_page_pushdata(f, (uint8 *) data, data_len);\n   }\n\n   f->stream     = (uint8 *) data;\n   f->stream_end = (uint8 *) data + data_len;\n   f->error      = VORBIS__no_error;\n\n   // check that we have the entire packet in memory\n   if (!is_whole_packet_present(f)) {\n      *samples = 0;\n      return 0;\n   }\n\n   if (!vorbis_decode_packet(f, &len, &left, &right)) {\n      // save the actual error we encountered\n      enum STBVorbisError error = f->error;\n      if (error == VORBIS_bad_packet_type) {\n         // flush and resynch\n         f->error = VORBIS__no_error;\n         while (get8_packet(f) != EOP)\n            if (f->eof) break;\n         *samples = 0;\n         return (int) (f->stream - data);\n      }\n      if (error == VORBIS_continued_packet_flag_invalid) {\n         if (f->previous_length == 0) {\n            // we may be resynching, in which case it's ok to hit one\n            // of these; just discard the packet\n            f->error = VORBIS__no_error;\n            while (get8_packet(f) != EOP)\n               if (f->eof) break;\n            *samples = 0;\n            return (int) (f->stream - data);\n         }\n      }\n      // if we get an error while parsing, what to do?\n      // well, it DEFINITELY won't work to continue from where we are!\n      stb_vorbis_flush_pushdata(f);\n      // restore the error that actually made us bail\n      f->error = error;\n      *samples = 0;\n      return 1;\n   }\n\n   // success!\n   len = vorbis_finish_frame(f, len, left, right);\n   for (i=0; i < f->channels; ++i)\n      f->outputs[i] = f->channel_buffers[i] + left;\n\n   if (channels) *channels = f->channels;\n   *samples = len;\n   *output = f->outputs;\n   return (int) (f->stream - data);\n}\n\nstb_vorbis *stb_vorbis_open_pushdata(\n         const unsigned char *data, int data_len, // the memory available for decoding\n         int *data_used,              // only defined if result is not NULL\n         int *error, const stb_vorbis_alloc *alloc)\n{\n   stb_vorbis *f, p;\n   vorbis_init(&p, alloc);\n   p.stream     = (uint8 *) data;\n   p.stream_end = (uint8 *) data + data_len;\n   p.push_mode  = TRUE;\n   if (!start_decoder(&p)) {\n      if (p.eof)\n         *error = VORBIS_need_more_data;\n      else\n         *error = p.error;\n      vorbis_deinit(&p);\n      return NULL;\n   }\n   f = vorbis_alloc(&p);\n   if (f) {\n      *f = p;\n      *data_used = (int) (f->stream - data);\n      *error = 0;\n      return f;\n   } else {\n      vorbis_deinit(&p);\n      return NULL;\n   }\n}\n#endif // STB_VORBIS_NO_PUSHDATA_API\n\nunsigned int stb_vorbis_get_file_offset(stb_vorbis *f)\n{\n   #ifndef STB_VORBIS_NO_PUSHDATA_API\n   if (f->push_mode) return 0;\n   #endif\n   if (USE_MEMORY(f)) return (unsigned int) (f->stream - f->stream_start);\n   #ifndef STB_VORBIS_NO_STDIO\n   return (unsigned int) (ftell(f->f) - f->f_start);\n   #endif\n}\n\n#ifndef STB_VORBIS_NO_PULLDATA_API\n//\n// DATA-PULLING API\n//\n\nstatic uint32 vorbis_find_page(stb_vorbis *f, uint32 *end, uint32 *last)\n{\n   for(;;) {\n      int n;\n      if (f->eof) return 0;\n      n = get8(f);\n      if (n == 0x4f) { // page header candidate\n         unsigned int retry_loc = stb_vorbis_get_file_offset(f);\n         int i;\n         // check if we're off the end of a file_section stream\n         if (retry_loc - 25 > f->stream_len)\n            return 0;\n         // check the rest of the header\n         for (i=1; i < 4; ++i)\n            if (get8(f) != ogg_page_header[i])\n               break;\n         if (f->eof) return 0;\n         if (i == 4) {\n            uint8 header[27];\n            uint32 i, crc, goal, len;\n            for (i=0; i < 4; ++i)\n               header[i] = ogg_page_header[i];\n            for (; i < 27; ++i)\n               header[i] = get8(f);\n            if (f->eof) return 0;\n            if (header[4] != 0) goto invalid;\n            goal = header[22] + (header[23] << 8) + (header[24]<<16) + ((uint32)header[25]<<24);\n            for (i=22; i < 26; ++i)\n               header[i] = 0;\n            crc = 0;\n            for (i=0; i < 27; ++i)\n               crc = crc32_update(crc, header[i]);\n            len = 0;\n            for (i=0; i < header[26]; ++i) {\n               int s = get8(f);\n               crc = crc32_update(crc, s);\n               len += s;\n            }\n            if (len && f->eof) return 0;\n            for (i=0; i < len; ++i)\n               crc = crc32_update(crc, get8(f));\n            // finished parsing probable page\n            if (crc == goal) {\n               // we could now check that it's either got the last\n               // page flag set, OR it's followed by the capture\n               // pattern, but I guess TECHNICALLY you could have\n               // a file with garbage between each ogg page and recover\n               // from it automatically? So even though that paranoia\n               // might decrease the chance of an invalid decode by\n               // another 2^32, not worth it since it would hose those\n               // invalid-but-useful files?\n               if (end)\n                  *end = stb_vorbis_get_file_offset(f);\n               if (last) {\n                  if (header[5] & 0x04)\n                     *last = 1;\n                  else\n                     *last = 0;\n               }\n               set_file_offset(f, retry_loc-1);\n               return 1;\n            }\n         }\n        invalid:\n         // not a valid page, so rewind and look for next one\n         set_file_offset(f, retry_loc);\n      }\n   }\n}\n\n\n#define SAMPLE_unknown  0xffffffff\n\n// seeking is implemented with a binary search, which narrows down the range to\n// 64K, before using a linear search (because finding the synchronization\n// pattern can be expensive, and the chance we'd find the end page again is\n// relatively high for small ranges)\n//\n// two initial interpolation-style probes are used at the start of the search\n// to try to bound either side of the binary search sensibly, while still\n// working in O(log n) time if they fail.\n\nstatic int get_seek_page_info(stb_vorbis *f, ProbedPage *z)\n{\n   uint8 header[27], lacing[255];\n   int i,len;\n\n   // record where the page starts\n   z->page_start = stb_vorbis_get_file_offset(f);\n\n   // parse the header\n   getn(f, header, 27);\n   if (header[0] != 'O' || header[1] != 'g' || header[2] != 'g' || header[3] != 'S')\n      return 0;\n   getn(f, lacing, header[26]);\n\n   // determine the length of the payload\n   len = 0;\n   for (i=0; i < header[26]; ++i)\n      len += lacing[i];\n\n   // this implies where the page ends\n   z->page_end = z->page_start + 27 + header[26] + len;\n\n   // read the last-decoded sample out of the data\n   z->last_decoded_sample = header[6] + (header[7] << 8) + (header[8] << 16) + (header[9] << 24);\n\n   // restore file state to where we were\n   set_file_offset(f, z->page_start);\n   return 1;\n}\n\n// rarely used function to seek back to the preceding page while finding the\n// start of a packet\nstatic int go_to_page_before(stb_vorbis *f, unsigned int limit_offset)\n{\n   unsigned int previous_safe, end;\n\n   // now we want to seek back 64K from the limit\n   if (limit_offset >= 65536 && limit_offset-65536 >= f->first_audio_page_offset)\n      previous_safe = limit_offset - 65536;\n   else\n      previous_safe = f->first_audio_page_offset;\n\n   set_file_offset(f, previous_safe);\n\n   while (vorbis_find_page(f, &end, NULL)) {\n      if (end >= limit_offset && stb_vorbis_get_file_offset(f) < limit_offset)\n         return 1;\n      set_file_offset(f, end);\n   }\n\n   return 0;\n}\n\n// implements the search logic for finding a page and starting decoding. if\n// the function succeeds, current_loc_valid will be true and current_loc will\n// be less than or equal to the provided sample number (the closer the\n// better).\nstatic int seek_to_sample_coarse(stb_vorbis *f, uint32 sample_number)\n{\n   ProbedPage left, right, mid;\n   int i, start_seg_with_known_loc, end_pos, page_start;\n   uint32 delta, stream_length, padding, last_sample_limit;\n   double offset = 0.0, bytes_per_sample = 0.0;\n   int probe = 0;\n\n   // find the last page and validate the target sample\n   stream_length = stb_vorbis_stream_length_in_samples(f);\n   if (stream_length == 0)            return error(f, VORBIS_seek_without_length);\n   if (sample_number > stream_length) return error(f, VORBIS_seek_invalid);\n\n   // this is the maximum difference between the window-center (which is the\n   // actual granule position value), and the right-start (which the spec\n   // indicates should be the granule position (give or take one)).\n   padding = ((f->blocksize_1 - f->blocksize_0) >> 2);\n   if (sample_number < padding)\n      last_sample_limit = 0;\n   else\n      last_sample_limit = sample_number - padding;\n\n   left = f->p_first;\n   while (left.last_decoded_sample == ~0U) {\n      // (untested) the first page does not have a 'last_decoded_sample'\n      set_file_offset(f, left.page_end);\n      if (!get_seek_page_info(f, &left)) goto error;\n   }\n\n   right = f->p_last;\n   assert(right.last_decoded_sample != ~0U);\n\n   // starting from the start is handled differently\n   if (last_sample_limit <= left.last_decoded_sample) {\n      if (stb_vorbis_seek_start(f)) {\n         if (f->current_loc > sample_number)\n            return error(f, VORBIS_seek_failed);\n         return 1;\n      }\n      return 0;\n   }\n\n   while (left.page_end != right.page_start) {\n      assert(left.page_end < right.page_start);\n      // search range in bytes\n      delta = right.page_start - left.page_end;\n      if (delta <= 65536) {\n         // there's only 64K left to search - handle it linearly\n         set_file_offset(f, left.page_end);\n      } else {\n         if (probe < 2) {\n            if (probe == 0) {\n               // first probe (interpolate)\n               double data_bytes = right.page_end - left.page_start;\n               bytes_per_sample = data_bytes / right.last_decoded_sample;\n               offset = left.page_start + bytes_per_sample * (last_sample_limit - left.last_decoded_sample);\n            } else {\n               // second probe (try to bound the other side)\n               double error = ((double) last_sample_limit - mid.last_decoded_sample) * bytes_per_sample;\n               if (error >= 0 && error <  8000) error =  8000;\n               if (error <  0 && error > -8000) error = -8000;\n               offset += error * 2;\n            }\n\n            // ensure the offset is valid\n            if (offset < left.page_end)\n               offset = left.page_end;\n            if (offset > right.page_start - 65536)\n               offset = right.page_start - 65536;\n\n            set_file_offset(f, (unsigned int) offset);\n         } else {\n            // binary search for large ranges (offset by 32K to ensure\n            // we don't hit the right page)\n            set_file_offset(f, left.page_end + (delta / 2) - 32768);\n         }\n\n         if (!vorbis_find_page(f, NULL, NULL)) goto error;\n      }\n\n      for (;;) {\n         if (!get_seek_page_info(f, &mid)) goto error;\n         if (mid.last_decoded_sample != ~0U) break;\n         // (untested) no frames end on this page\n         set_file_offset(f, mid.page_end);\n         assert(mid.page_start < right.page_start);\n      }\n\n      // if we've just found the last page again then we're in a tricky file,\n      // and we're close enough (if it wasn't an interpolation probe).\n      if (mid.page_start == right.page_start) {\n         if (probe >= 2 || delta <= 65536)\n            break;\n      } else {\n         if (last_sample_limit < mid.last_decoded_sample)\n            right = mid;\n         else\n            left = mid;\n      }\n\n      ++probe;\n   }\n\n   // seek back to start of the last packet\n   page_start = left.page_start;\n   set_file_offset(f, page_start);\n   if (!start_page(f)) return error(f, VORBIS_seek_failed);\n   end_pos = f->end_seg_with_known_loc;\n   assert(end_pos >= 0);\n\n   for (;;) {\n      for (i = end_pos; i > 0; --i)\n         if (f->segments[i-1] != 255)\n            break;\n\n      start_seg_with_known_loc = i;\n\n      if (start_seg_with_known_loc > 0 || !(f->page_flag & PAGEFLAG_continued_packet))\n         break;\n\n      // (untested) the final packet begins on an earlier page\n      if (!go_to_page_before(f, page_start))\n         goto error;\n\n      page_start = stb_vorbis_get_file_offset(f);\n      if (!start_page(f)) goto error;\n      end_pos = f->segment_count - 1;\n   }\n\n   // prepare to start decoding\n   f->current_loc_valid = FALSE;\n   f->last_seg = FALSE;\n   f->valid_bits = 0;\n   f->packet_bytes = 0;\n   f->bytes_in_seg = 0;\n   f->previous_length = 0;\n   f->next_seg = start_seg_with_known_loc;\n\n   for (i = 0; i < start_seg_with_known_loc; i++)\n      skip(f, f->segments[i]);\n\n   // start decoding (optimizable - this frame is generally discarded)\n   if (!vorbis_pump_first_frame(f))\n      return 0;\n   if (f->current_loc > sample_number)\n      return error(f, VORBIS_seek_failed);\n   return 1;\n\nerror:\n   // try to restore the file to a valid state\n   stb_vorbis_seek_start(f);\n   return error(f, VORBIS_seek_failed);\n}\n\n// the same as vorbis_decode_initial, but without advancing\nstatic int peek_decode_initial(vorb *f, int *p_left_start, int *p_left_end, int *p_right_start, int *p_right_end, int *mode)\n{\n   int bits_read, bytes_read;\n\n   if (!vorbis_decode_initial(f, p_left_start, p_left_end, p_right_start, p_right_end, mode))\n      return 0;\n\n   // either 1 or 2 bytes were read, figure out which so we can rewind\n   bits_read = 1 + ilog(f->mode_count-1);\n   if (f->mode_config[*mode].blockflag)\n      bits_read += 2;\n   bytes_read = (bits_read + 7) / 8;\n\n   f->bytes_in_seg += bytes_read;\n   f->packet_bytes -= bytes_read;\n   skip(f, -bytes_read);\n   if (f->next_seg == -1)\n      f->next_seg = f->segment_count - 1;\n   else\n      f->next_seg--;\n   f->valid_bits = 0;\n\n   return 1;\n}\n\nint stb_vorbis_seek_frame(stb_vorbis *f, unsigned int sample_number)\n{\n   uint32 max_frame_samples;\n\n   if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);\n\n   // fast page-level search\n   if (!seek_to_sample_coarse(f, sample_number))\n      return 0;\n\n   assert(f->current_loc_valid);\n   assert(f->current_loc <= sample_number);\n\n   // linear search for the relevant packet\n   max_frame_samples = (f->blocksize_1*3 - f->blocksize_0) >> 2;\n   while (f->current_loc < sample_number) {\n      int left_start, left_end, right_start, right_end, mode, frame_samples;\n      if (!peek_decode_initial(f, &left_start, &left_end, &right_start, &right_end, &mode))\n         return error(f, VORBIS_seek_failed);\n      // calculate the number of samples returned by the next frame\n      frame_samples = right_start - left_start;\n      if (f->current_loc + frame_samples > sample_number) {\n         return 1; // the next frame will contain the sample\n      } else if (f->current_loc + frame_samples + max_frame_samples > sample_number) {\n         // there's a chance the frame after this could contain the sample\n         vorbis_pump_first_frame(f);\n      } else {\n         // this frame is too early to be relevant\n         f->current_loc += frame_samples;\n         f->previous_length = 0;\n         maybe_start_packet(f);\n         flush_packet(f);\n      }\n   }\n   // the next frame should start with the sample\n   if (f->current_loc != sample_number) return error(f, VORBIS_seek_failed);\n   return 1;\n}\n\nint stb_vorbis_seek(stb_vorbis *f, unsigned int sample_number)\n{\n   if (!stb_vorbis_seek_frame(f, sample_number))\n      return 0;\n\n   if (sample_number != f->current_loc) {\n      int n;\n      uint32 frame_start = f->current_loc;\n      stb_vorbis_get_frame_float(f, &n, NULL);\n      assert(sample_number > frame_start);\n      assert(f->channel_buffer_start + (int) (sample_number-frame_start) <= f->channel_buffer_end);\n      f->channel_buffer_start += (sample_number - frame_start);\n   }\n\n   return 1;\n}\n\nint stb_vorbis_seek_start(stb_vorbis *f)\n{\n   if (IS_PUSH_MODE(f)) { return error(f, VORBIS_invalid_api_mixing); }\n   set_file_offset(f, f->first_audio_page_offset);\n   f->previous_length = 0;\n   f->first_decode = TRUE;\n   f->next_seg = -1;\n   return vorbis_pump_first_frame(f);\n}\n\nunsigned int stb_vorbis_stream_length_in_samples(stb_vorbis *f)\n{\n   unsigned int restore_offset, previous_safe;\n   unsigned int end, last_page_loc;\n\n   if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);\n   if (!f->total_samples) {\n      unsigned int last;\n      uint32 lo,hi;\n      char header[6];\n\n      // first, store the current decode position so we can restore it\n      restore_offset = stb_vorbis_get_file_offset(f);\n\n      // now we want to seek back 64K from the end (the last page must\n      // be at most a little less than 64K, but let's allow a little slop)\n      if (f->stream_len >= 65536 && f->stream_len-65536 >= f->first_audio_page_offset)\n         previous_safe = f->stream_len - 65536;\n      else\n         previous_safe = f->first_audio_page_offset;\n\n      set_file_offset(f, previous_safe);\n      // previous_safe is now our candidate 'earliest known place that seeking\n      // to will lead to the final page'\n\n      if (!vorbis_find_page(f, &end, &last)) {\n         // if we can't find a page, we're hosed!\n         f->error = VORBIS_cant_find_last_page;\n         f->total_samples = 0xffffffff;\n         goto done;\n      }\n\n      // check if there are more pages\n      last_page_loc = stb_vorbis_get_file_offset(f);\n\n      // stop when the last_page flag is set, not when we reach eof;\n      // this allows us to stop short of a 'file_section' end without\n      // explicitly checking the length of the section\n      while (!last) {\n         set_file_offset(f, end);\n         if (!vorbis_find_page(f, &end, &last)) {\n            // the last page we found didn't have the 'last page' flag\n            // set. whoops!\n            break;\n         }\n         //previous_safe = last_page_loc+1; // NOTE: not used after this point, but note for debugging\n         last_page_loc = stb_vorbis_get_file_offset(f);\n      }\n\n      set_file_offset(f, last_page_loc);\n\n      // parse the header\n      getn(f, (unsigned char *)header, 6);\n      // extract the absolute granule position\n      lo = get32(f);\n      hi = get32(f);\n      if (lo == 0xffffffff && hi == 0xffffffff) {\n         f->error = VORBIS_cant_find_last_page;\n         f->total_samples = SAMPLE_unknown;\n         goto done;\n      }\n      if (hi)\n         lo = 0xfffffffe; // saturate\n      f->total_samples = lo;\n\n      f->p_last.page_start = last_page_loc;\n      f->p_last.page_end   = end;\n      f->p_last.last_decoded_sample = lo;\n\n     done:\n      set_file_offset(f, restore_offset);\n   }\n   return f->total_samples == SAMPLE_unknown ? 0 : f->total_samples;\n}\n\nfloat stb_vorbis_stream_length_in_seconds(stb_vorbis *f)\n{\n   return stb_vorbis_stream_length_in_samples(f) / (float) f->sample_rate;\n}\n\n\n\nint stb_vorbis_get_frame_float(stb_vorbis *f, int *channels, float ***output)\n{\n   int len, right,left,i;\n   if (IS_PUSH_MODE(f)) return error(f, VORBIS_invalid_api_mixing);\n\n   if (!vorbis_decode_packet(f, &len, &left, &right)) {\n      f->channel_buffer_start = f->channel_buffer_end = 0;\n      return 0;\n   }\n\n   len = vorbis_finish_frame(f, len, left, right);\n   for (i=0; i < f->channels; ++i)\n      f->outputs[i] = f->channel_buffers[i] + left;\n\n   f->channel_buffer_start = left;\n   f->channel_buffer_end   = left+len;\n\n   if (channels) *channels = f->channels;\n   if (output)   *output = f->outputs;\n   return len;\n}\n\n#ifndef STB_VORBIS_NO_STDIO\n\nstb_vorbis * stb_vorbis_open_file_section(FILE *file, int close_on_free, int *error, const stb_vorbis_alloc *alloc, unsigned int length)\n{\n   stb_vorbis *f, p;\n   vorbis_init(&p, alloc);\n   p.f = file;\n   p.f_start = (uint32) ftell(file);\n   p.stream_len   = length;\n   p.close_on_free = close_on_free;\n   if (start_decoder(&p)) {\n      f = vorbis_alloc(&p);\n      if (f) {\n         *f = p;\n         vorbis_pump_first_frame(f);\n         return f;\n      }\n   }\n   if (error) *error = p.error;\n   vorbis_deinit(&p);\n   return NULL;\n}\n\nstb_vorbis * stb_vorbis_open_file(FILE *file, int close_on_free, int *error, const stb_vorbis_alloc *alloc)\n{\n   unsigned int len, start;\n   start = (unsigned int) ftell(file);\n   fseek(file, 0, SEEK_END);\n   len = (unsigned int) (ftell(file) - start);\n   fseek(file, start, SEEK_SET);\n   return stb_vorbis_open_file_section(file, close_on_free, error, alloc, len);\n}\n\nstb_vorbis * stb_vorbis_open_filename(const char *filename, int *error, const stb_vorbis_alloc *alloc)\n{\n   FILE *f;\n#if defined(_WIN32) && defined(__STDC_WANT_SECURE_LIB__)\n   if (0 != fopen_s(&f, filename, \"rb\"))\n      f = NULL;\n#else\n   f = fopen(filename, \"rb\");\n#endif\n   if (f)\n      return stb_vorbis_open_file(f, TRUE, error, alloc);\n   if (error) *error = VORBIS_file_open_failure;\n   return NULL;\n}\n#endif // STB_VORBIS_NO_STDIO\n\nstb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len, int *error, const stb_vorbis_alloc *alloc)\n{\n   stb_vorbis *f, p;\n   if (!data) {\n      if (error) *error = VORBIS_unexpected_eof;\n      return NULL;\n   }\n   vorbis_init(&p, alloc);\n   p.stream = (uint8 *) data;\n   p.stream_end = (uint8 *) data + len;\n   p.stream_start = (uint8 *) p.stream;\n   p.stream_len = len;\n   p.push_mode = FALSE;\n   if (start_decoder(&p)) {\n      f = vorbis_alloc(&p);\n      if (f) {\n         *f = p;\n         vorbis_pump_first_frame(f);\n         if (error) *error = VORBIS__no_error;\n         return f;\n      }\n   }\n   if (error) *error = p.error;\n   vorbis_deinit(&p);\n   return NULL;\n}\n\n#ifndef STB_VORBIS_NO_INTEGER_CONVERSION\n#define PLAYBACK_MONO     1\n#define PLAYBACK_LEFT     2\n#define PLAYBACK_RIGHT    4\n\n#define L  (PLAYBACK_LEFT  | PLAYBACK_MONO)\n#define C  (PLAYBACK_LEFT  | PLAYBACK_RIGHT | PLAYBACK_MONO)\n#define R  (PLAYBACK_RIGHT | PLAYBACK_MONO)\n\nstatic int8 channel_position[7][6] =\n{\n   { 0 },\n   { C },\n   { L, R },\n   { L, C, R },\n   { L, R, L, R },\n   { L, C, R, L, R },\n   { L, C, R, L, R, C },\n};\n\n\n#ifndef STB_VORBIS_NO_FAST_SCALED_FLOAT\n   typedef union {\n      float f;\n      int i;\n   } float_conv;\n   typedef char stb_vorbis_float_size_test[sizeof(float)==4 && sizeof(int) == 4];\n   #define FASTDEF(x) float_conv x\n   // add (1<<23) to convert to int, then divide by 2^SHIFT, then add 0.5/2^SHIFT to round\n   #define MAGIC(SHIFT) (1.5f * (1 << (23-SHIFT)) + 0.5f/(1 << SHIFT))\n   #define ADDEND(SHIFT) (((150-SHIFT) << 23) + (1 << 22))\n   #define FAST_SCALED_FLOAT_TO_INT(temp,x,s) (temp.f = (x) + MAGIC(s), temp.i - ADDEND(s))\n   #define check_endianness()\n#else\n   #define FAST_SCALED_FLOAT_TO_INT(temp,x,s) ((int) ((x) * (1 << (s))))\n   #define check_endianness()\n   #define FASTDEF(x)\n#endif\n\nstatic void copy_samples(short *dest, float *src, int len)\n{\n   int i;\n   check_endianness();\n   for (i=0; i < len; ++i) {\n      FASTDEF(temp);\n      int v = FAST_SCALED_FLOAT_TO_INT(temp, src[i],15);\n      if ((unsigned int) (v + 32768) > 65535)\n         v = v < 0 ? -32768 : 32767;\n      dest[i] = v;\n   }\n}\n\nstatic void compute_samples(int mask, short *output, int num_c, float **data, int d_offset, int len)\n{\n   #define STB_BUFFER_SIZE  32\n   float buffer[STB_BUFFER_SIZE];\n   int i,j,o,n = STB_BUFFER_SIZE;\n   check_endianness();\n   for (o = 0; o < len; o += STB_BUFFER_SIZE) {\n      memset(buffer, 0, sizeof(buffer));\n      if (o + n > len) n = len - o;\n      for (j=0; j < num_c; ++j) {\n         if (channel_position[num_c][j] & mask) {\n            for (i=0; i < n; ++i)\n               buffer[i] += data[j][d_offset+o+i];\n         }\n      }\n      for (i=0; i < n; ++i) {\n         FASTDEF(temp);\n         int v = FAST_SCALED_FLOAT_TO_INT(temp,buffer[i],15);\n         if ((unsigned int) (v + 32768) > 65535)\n            v = v < 0 ? -32768 : 32767;\n         output[o+i] = v;\n      }\n   }\n   #undef STB_BUFFER_SIZE\n}\n\nstatic void compute_stereo_samples(short *output, int num_c, float **data, int d_offset, int len)\n{\n   #define STB_BUFFER_SIZE  32\n   float buffer[STB_BUFFER_SIZE];\n   int i,j,o,n = STB_BUFFER_SIZE >> 1;\n   // o is the offset in the source data\n   check_endianness();\n   for (o = 0; o < len; o += STB_BUFFER_SIZE >> 1) {\n      // o2 is the offset in the output data\n      int o2 = o << 1;\n      memset(buffer, 0, sizeof(buffer));\n      if (o + n > len) n = len - o;\n      for (j=0; j < num_c; ++j) {\n         int m = channel_position[num_c][j] & (PLAYBACK_LEFT | PLAYBACK_RIGHT);\n         if (m == (PLAYBACK_LEFT | PLAYBACK_RIGHT)) {\n            for (i=0; i < n; ++i) {\n               buffer[i*2+0] += data[j][d_offset+o+i];\n               buffer[i*2+1] += data[j][d_offset+o+i];\n            }\n         } else if (m == PLAYBACK_LEFT) {\n            for (i=0; i < n; ++i) {\n               buffer[i*2+0] += data[j][d_offset+o+i];\n            }\n         } else if (m == PLAYBACK_RIGHT) {\n            for (i=0; i < n; ++i) {\n               buffer[i*2+1] += data[j][d_offset+o+i];\n            }\n         }\n      }\n      for (i=0; i < (n<<1); ++i) {\n         FASTDEF(temp);\n         int v = FAST_SCALED_FLOAT_TO_INT(temp,buffer[i],15);\n         if ((unsigned int) (v + 32768) > 65535)\n            v = v < 0 ? -32768 : 32767;\n         output[o2+i] = v;\n      }\n   }\n   #undef STB_BUFFER_SIZE\n}\n\nstatic void convert_samples_short(int buf_c, short **buffer, int b_offset, int data_c, float **data, int d_offset, int samples)\n{\n   int i;\n   if (buf_c != data_c && buf_c <= 2 && data_c <= 6) {\n      static int channel_selector[3][2] = { {0}, {PLAYBACK_MONO}, {PLAYBACK_LEFT, PLAYBACK_RIGHT} };\n      for (i=0; i < buf_c; ++i)\n         compute_samples(channel_selector[buf_c][i], buffer[i]+b_offset, data_c, data, d_offset, samples);\n   } else {\n      int limit = buf_c < data_c ? buf_c : data_c;\n      for (i=0; i < limit; ++i)\n         copy_samples(buffer[i]+b_offset, data[i]+d_offset, samples);\n      for (   ; i < buf_c; ++i)\n         memset(buffer[i]+b_offset, 0, sizeof(short) * samples);\n   }\n}\n\nint stb_vorbis_get_frame_short(stb_vorbis *f, int num_c, short **buffer, int num_samples)\n{\n   float **output = NULL;\n   int len = stb_vorbis_get_frame_float(f, NULL, &output);\n   if (len > num_samples) len = num_samples;\n   if (len)\n      convert_samples_short(num_c, buffer, 0, f->channels, output, 0, len);\n   return len;\n}\n\nstatic void convert_channels_short_interleaved(int buf_c, short *buffer, int data_c, float **data, int d_offset, int len)\n{\n   int i;\n   check_endianness();\n   if (buf_c != data_c && buf_c <= 2 && data_c <= 6) {\n      assert(buf_c == 2);\n      for (i=0; i < buf_c; ++i)\n         compute_stereo_samples(buffer, data_c, data, d_offset, len);\n   } else {\n      int limit = buf_c < data_c ? buf_c : data_c;\n      int j;\n      for (j=0; j < len; ++j) {\n         for (i=0; i < limit; ++i) {\n            FASTDEF(temp);\n            float f = data[i][d_offset+j];\n            int v = FAST_SCALED_FLOAT_TO_INT(temp, f,15);//data[i][d_offset+j],15);\n            if ((unsigned int) (v + 32768) > 65535)\n               v = v < 0 ? -32768 : 32767;\n            *buffer++ = v;\n         }\n         for (   ; i < buf_c; ++i)\n            *buffer++ = 0;\n      }\n   }\n}\n\nint stb_vorbis_get_frame_short_interleaved(stb_vorbis *f, int num_c, short *buffer, int num_shorts)\n{\n   float **output;\n   int len;\n   if (num_c == 1) return stb_vorbis_get_frame_short(f,num_c,&buffer, num_shorts);\n   len = stb_vorbis_get_frame_float(f, NULL, &output);\n   if (len) {\n      if (len*num_c > num_shorts) len = num_shorts / num_c;\n      convert_channels_short_interleaved(num_c, buffer, f->channels, output, 0, len);\n   }\n   return len;\n}\n\nint stb_vorbis_get_samples_short_interleaved(stb_vorbis *f, int channels, short *buffer, int num_shorts)\n{\n   float **outputs;\n   int len = num_shorts / channels;\n   int n=0;\n   while (n < len) {\n      int k = f->channel_buffer_end - f->channel_buffer_start;\n      if (n+k >= len) k = len - n;\n      if (k)\n         convert_channels_short_interleaved(channels, buffer, f->channels, f->channel_buffers, f->channel_buffer_start, k);\n      buffer += k*channels;\n      n += k;\n      f->channel_buffer_start += k;\n      if (n == len) break;\n      if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;\n   }\n   return n;\n}\n\nint stb_vorbis_get_samples_short(stb_vorbis *f, int channels, short **buffer, int len)\n{\n   float **outputs;\n   int n=0;\n   while (n < len) {\n      int k = f->channel_buffer_end - f->channel_buffer_start;\n      if (n+k >= len) k = len - n;\n      if (k)\n         convert_samples_short(channels, buffer, n, f->channels, f->channel_buffers, f->channel_buffer_start, k);\n      n += k;\n      f->channel_buffer_start += k;\n      if (n == len) break;\n      if (!stb_vorbis_get_frame_float(f, NULL, &outputs)) break;\n   }\n   return n;\n}\n\n#ifndef STB_VORBIS_NO_STDIO\nint stb_vorbis_decode_filename(const char *filename, int *channels, int *sample_rate, short **output)\n{\n   int data_len, offset, total, limit, error;\n   short *data;\n   stb_vorbis *v = stb_vorbis_open_filename(filename, &error, NULL);\n   if (v == NULL) return -1;\n   limit = v->channels * 4096;\n   *channels = v->channels;\n   if (sample_rate)\n      *sample_rate = v->sample_rate;\n   offset = data_len = 0;\n   total = limit;\n   data = (short *) malloc(total * sizeof(*data));\n   if (data == NULL) {\n      stb_vorbis_close(v);\n      return -2;\n   }\n   for (;;) {\n      int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset);\n      if (n == 0) break;\n      data_len += n;\n      offset += n * v->channels;\n      if (offset + limit > total) {\n         short *data2;\n         total *= 2;\n         data2 = (short *) realloc(data, total * sizeof(*data));\n         if (data2 == NULL) {\n            free(data);\n            stb_vorbis_close(v);\n            return -2;\n         }\n         data = data2;\n      }\n   }\n   *output = data;\n   stb_vorbis_close(v);\n   return data_len;\n}\n#endif // NO_STDIO\n\nint stb_vorbis_decode_memory(const uint8 *mem, int len, int *channels, int *sample_rate, short **output)\n{\n   int data_len, offset, total, limit, error;\n   short *data;\n   stb_vorbis *v = stb_vorbis_open_memory(mem, len, &error, NULL);\n   if (v == NULL) return -1;\n   limit = v->channels * 4096;\n   *channels = v->channels;\n   if (sample_rate)\n      *sample_rate = v->sample_rate;\n   offset = data_len = 0;\n   total = limit;\n   data = (short *) malloc(total * sizeof(*data));\n   if (data == NULL) {\n      stb_vorbis_close(v);\n      return -2;\n   }\n   for (;;) {\n      int n = stb_vorbis_get_frame_short_interleaved(v, v->channels, data+offset, total-offset);\n      if (n == 0) break;\n      data_len += n;\n      offset += n * v->channels;\n      if (offset + limit > total) {\n         short *data2;\n         total *= 2;\n         data2 = (short *) realloc(data, total * sizeof(*data));\n         if (data2 == NULL) {\n            free(data);\n            stb_vorbis_close(v);\n            return -2;\n         }\n         data = data2;\n      }\n   }\n   *output = data;\n   stb_vorbis_close(v);\n   return data_len;\n}\n#endif // STB_VORBIS_NO_INTEGER_CONVERSION\n\nint stb_vorbis_get_samples_float_interleaved(stb_vorbis *f, int channels, float *buffer, int num_floats)\n{\n   float **outputs;\n   int len = num_floats / channels;\n   int n=0;\n   int z = f->channels;\n   if (z > channels) z = channels;\n   while (n < len) {\n      int i,j;\n      int k = f->channel_buffer_end - f->channel_buffer_start;\n      if (n+k >= len) k = len - n;\n      for (j=0; j < k; ++j) {\n         for (i=0; i < z; ++i)\n            *buffer++ = f->channel_buffers[i][f->channel_buffer_start+j];\n         for (   ; i < channels; ++i)\n            *buffer++ = 0;\n      }\n      n += k;\n      f->channel_buffer_start += k;\n      if (n == len)\n         break;\n      if (!stb_vorbis_get_frame_float(f, NULL, &outputs))\n         break;\n   }\n   return n;\n}\n\nint stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, int num_samples)\n{\n   float **outputs;\n   int n=0;\n   int z = f->channels;\n   if (z > channels) z = channels;\n   while (n < num_samples) {\n      int i;\n      int k = f->channel_buffer_end - f->channel_buffer_start;\n      if (n+k >= num_samples) k = num_samples - n;\n      if (k) {\n         for (i=0; i < z; ++i)\n            memcpy(buffer[i]+n, f->channel_buffers[i]+f->channel_buffer_start, sizeof(float)*k);\n         for (   ; i < channels; ++i)\n            memset(buffer[i]+n, 0, sizeof(float) * k);\n      }\n      n += k;\n      f->channel_buffer_start += k;\n      if (n == num_samples)\n         break;\n      if (!stb_vorbis_get_frame_float(f, NULL, &outputs))\n         break;\n   }\n   return n;\n}\n#endif // STB_VORBIS_NO_PULLDATA_API\n\n/* Version history\n    1.17    - 2019-07-08 - fix CVE-2019-13217, -13218, -13219, -13220, -13221, -13222, -13223\n                           found with Mayhem by ForAllSecure\n    1.16    - 2019-03-04 - fix warnings\n    1.15    - 2019-02-07 - explicit failure if Ogg Skeleton data is found\n    1.14    - 2018-02-11 - delete bogus dealloca usage\n    1.13    - 2018-01-29 - fix truncation of last frame (hopefully)\n    1.12    - 2017-11-21 - limit residue begin/end to blocksize/2 to avoid large temp allocs in bad/corrupt files\n    1.11    - 2017-07-23 - fix MinGW compilation\n    1.10    - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory\n    1.09    - 2016-04-04 - back out 'avoid discarding last frame' fix from previous version\n    1.08    - 2016-04-02 - fixed multiple warnings; fix setup memory leaks;\n                           avoid discarding last frame of audio data\n    1.07    - 2015-01-16 - fixed some warnings, fix mingw, const-correct API\n                           some more crash fixes when out of memory or with corrupt files\n    1.06    - 2015-08-31 - full, correct support for seeking API (Dougall Johnson)\n                           some crash fixes when out of memory or with corrupt files\n    1.05    - 2015-04-19 - don't define __forceinline if it's redundant\n    1.04    - 2014-08-27 - fix missing const-correct case in API\n    1.03    - 2014-08-07 - Warning fixes\n    1.02    - 2014-07-09 - Declare qsort compare function _cdecl on windows\n    1.01    - 2014-06-18 - fix stb_vorbis_get_samples_float\n    1.0     - 2014-05-26 - fix memory leaks; fix warnings; fix bugs in multichannel\n                           (API change) report sample rate for decode-full-file funcs\n    0.99996 - bracket #include <malloc.h> for macintosh compilation by Laurent Gomila\n    0.99995 - use union instead of pointer-cast for fast-float-to-int to avoid alias-optimization problem\n    0.99994 - change fast-float-to-int to work in single-precision FPU mode, remove endian-dependence\n    0.99993 - remove assert that fired on legal files with empty tables\n    0.99992 - rewind-to-start\n    0.99991 - bugfix to stb_vorbis_get_samples_short by Bernhard Wodo\n    0.9999 - (should have been 0.99990) fix no-CRT support, compiling as C++\n    0.9998 - add a full-decode function with a memory source\n    0.9997 - fix a bug in the read-from-FILE case in 0.9996 addition\n    0.9996 - query length of vorbis stream in samples/seconds\n    0.9995 - bugfix to another optimization that only happened in certain files\n    0.9994 - bugfix to one of the optimizations that caused significant (but inaudible?) errors\n    0.9993 - performance improvements; runs in 99% to 104% of time of reference implementation\n    0.9992 - performance improvement of IMDCT; now performs close to reference implementation\n    0.9991 - performance improvement of IMDCT\n    0.999 - (should have been 0.9990) performance improvement of IMDCT\n    0.998 - no-CRT support from Casey Muratori\n    0.997 - bugfixes for bugs found by Terje Mathisen\n    0.996 - bugfix: fast-huffman decode initialized incorrectly for sparse codebooks; fixing gives 10% speedup - found by Terje Mathisen\n    0.995 - bugfix: fix to 'effective' overrun detection - found by Terje Mathisen\n    0.994 - bugfix: garbage decode on final VQ symbol of a non-multiple - found by Terje Mathisen\n    0.993 - bugfix: pushdata API required 1 extra byte for empty page (failed to consume final page if empty) - found by Terje Mathisen\n    0.992 - fixes for MinGW warning\n    0.991 - turn fast-float-conversion on by default\n    0.990 - fix push-mode seek recovery if you seek into the headers\n    0.98b - fix to bad release of 0.98\n    0.98 - fix push-mode seek recovery; robustify float-to-int and support non-fast mode\n    0.97 - builds under c++ (typecasting, don't use 'class' keyword)\n    0.96 - somehow MY 0.95 was right, but the web one was wrong, so here's my 0.95 rereleased as 0.96, fixes a typo in the clamping code\n    0.95 - clamping code for 16-bit functions\n    0.94 - not publically released\n    0.93 - fixed all-zero-floor case (was decoding garbage)\n    0.92 - fixed a memory leak\n    0.91 - conditional compiles to omit parts of the API and the infrastructure to support them: STB_VORBIS_NO_PULLDATA_API, STB_VORBIS_NO_PUSHDATA_API, STB_VORBIS_NO_STDIO, STB_VORBIS_NO_INTEGER_CONVERSION\n    0.90 - first public release\n*/\n\n#endif // STB_VORBIS_HEADER_ONLY\n\n\n/*\n------------------------------------------------------------------------------\nThis software is available under 2 licenses -- choose whichever you prefer.\n------------------------------------------------------------------------------\nALTERNATIVE A - MIT License\nCopyright (c) 2017 Sean Barrett\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n------------------------------------------------------------------------------\nALTERNATIVE B - Public Domain (www.unlicense.org)\nThis is free and unencumbered software released into the public domain.\nAnyone is free to copy, modify, publish, use, compile, sell, or distribute this\nsoftware, either in source code form or as a compiled binary, for any purpose,\ncommercial or non-commercial, and by any means.\nIn jurisdictions that recognize copyright laws, the author or authors of this\nsoftware dedicate any and all copyright interest in the software to the public\ndomain. We make this dedication for the benefit of the public at large and to\nthe detriment of our heirs and successors. We intend this dedication to be an\novert act of relinquishment in perpetuity of all present and future rights to\nthis software under copyright law.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\nACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n------------------------------------------------------------------------------\n*/\n"
  },
  {
    "path": "libraries/xatlas.cpp",
    "content": "/*\nMIT License\n\nCopyright (c) 2018-2020 Jonathan Young\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n/*\nthekla_atlas\nhttps://github.com/Thekla/thekla_atlas\nMIT License\nCopyright (c) 2013 Thekla, Inc\nCopyright NVIDIA Corporation 2006 -- Ignacio Castano <icastano@nvidia.com>\n\nFast-BVH\nhttps://github.com/brandonpelfrey/Fast-BVH\nMIT License\nCopyright (c) 2012 Brandon Pelfrey\n*/\n#include \"xatlas.h\"\n#ifndef XATLAS_C_API\n#define XATLAS_C_API 0\n#endif\n#if XATLAS_C_API\n#include \"xatlas_c.h\"\n#endif\n#include <atomic>\n#include <condition_variable>\n#include <mutex>\n#include <thread>\n#include <assert.h>\n#include <float.h> // FLT_MAX\n#include <limits.h>\n#include <math.h>\n#define __STDC_LIMIT_MACROS\n#include <stdint.h>\n#include <stdio.h>\n#include <string.h>\n\n#ifndef XA_DEBUG\n#ifdef NDEBUG\n#define XA_DEBUG 0\n#else\n#define XA_DEBUG 1\n#endif\n#endif\n\n#ifndef XA_PROFILE\n#define XA_PROFILE 0\n#endif\n#if XA_PROFILE\n#include <chrono>\n#endif\n\n#ifndef XA_MULTITHREADED\n#define XA_MULTITHREADED 1\n#endif\n\n#define XA_STR(x) #x\n#define XA_XSTR(x) XA_STR(x)\n\n#ifndef XA_ASSERT\n#define XA_ASSERT(exp) if (!(exp)) { XA_PRINT_WARNING(\"\\rASSERT: %s %s %d\\n\", XA_XSTR(exp), __FILE__, __LINE__); }\n#endif\n\n#ifndef XA_DEBUG_ASSERT\n#define XA_DEBUG_ASSERT(exp) assert(exp)\n#endif\n\n#ifndef XA_PRINT\n#define XA_PRINT(...) \\\n\tif (xatlas::internal::s_print && xatlas::internal::s_printVerbose) \\\n\t\txatlas::internal::s_print(__VA_ARGS__);\n#endif\n\n#ifndef XA_PRINT_WARNING\n#define XA_PRINT_WARNING(...) \\\n\tif (xatlas::internal::s_print) \\\n\t\txatlas::internal::s_print(__VA_ARGS__);\n#endif\n\n#define XA_ALLOC(tag, type) (type *)internal::Realloc(nullptr, sizeof(type), tag, __FILE__, __LINE__)\n#define XA_ALLOC_ARRAY(tag, type, num) (type *)internal::Realloc(nullptr, sizeof(type) * (num), tag, __FILE__, __LINE__)\n#define XA_REALLOC(tag, ptr, type, num) (type *)internal::Realloc(ptr, sizeof(type) * (num), tag, __FILE__, __LINE__)\n#define XA_REALLOC_SIZE(tag, ptr, size) (uint8_t *)internal::Realloc(ptr, size, tag, __FILE__, __LINE__)\n#define XA_FREE(ptr) internal::Realloc(ptr, 0, internal::MemTag::Default, __FILE__, __LINE__)\n#define XA_NEW(tag, type) new (XA_ALLOC(tag, type)) type()\n#define XA_NEW_ARGS(tag, type, ...) new (XA_ALLOC(tag, type)) type(__VA_ARGS__)\n\n#ifdef _MSC_VER\n#define XA_INLINE __forceinline\n#else\n#define XA_INLINE inline\n#endif\n\n#if defined(__clang__) || defined(__GNUC__)\n#define XA_NODISCARD [[nodiscard]]\n#elif defined(_MSC_VER)\n#define XA_NODISCARD _Check_return_\n#else\n#define XA_NODISCARD\n#endif\n\n#define XA_UNUSED(a) ((void)(a))\n\n#define XA_MERGE_CHARTS 1\n#define XA_MERGE_CHARTS_MIN_NORMAL_DEVIATION 0.5f\n#define XA_RECOMPUTE_CHARTS 1\n#define XA_CHECK_PARAM_WINDING 0\n#define XA_CHECK_PIECEWISE_CHART_QUALITY 0\n#define XA_CHECK_T_JUNCTIONS 0\n\n#define XA_DEBUG_HEAP 0\n#define XA_DEBUG_SINGLE_CHART 0\n#define XA_DEBUG_ALL_CHARTS_INVALID 0\n#define XA_DEBUG_EXPORT_ATLAS_IMAGES 0\n#define XA_DEBUG_EXPORT_ATLAS_IMAGES_PER_CHART 0 // Export an atlas image after each chart is added.\n#define XA_DEBUG_EXPORT_BOUNDARY_GRID 0\n#define XA_DEBUG_EXPORT_TGA (XA_DEBUG_EXPORT_ATLAS_IMAGES || XA_DEBUG_EXPORT_BOUNDARY_GRID)\n#define XA_DEBUG_EXPORT_OBJ_FACE_GROUPS 0\n#define XA_DEBUG_EXPORT_OBJ_CHART_GROUPS 0\n#define XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS 0\n#define XA_DEBUG_EXPORT_OBJ_CHARTS 0\n#define XA_DEBUG_EXPORT_OBJ_TJUNCTION 0 // XA_CHECK_T_JUNCTIONS must also be set\n#define XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION 0\n#define XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION 0\n#define XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS 0\n\n#define XA_DEBUG_EXPORT_OBJ (0 \\\n\t|| XA_DEBUG_EXPORT_OBJ_FACE_GROUPS \\\n\t|| XA_DEBUG_EXPORT_OBJ_CHART_GROUPS \\\n\t|| XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS \\\n\t|| XA_DEBUG_EXPORT_OBJ_CHARTS \\\n\t|| XA_DEBUG_EXPORT_OBJ_TJUNCTION \\\n\t|| XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION \\\n\t|| XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION \\\n\t|| XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS)\n\n#ifdef _MSC_VER\n#define XA_FOPEN(_file, _filename, _mode) { if (fopen_s(&_file, _filename, _mode) != 0) _file = NULL; }\n#define XA_SPRINTF(_buffer, _size, _format, ...) sprintf_s(_buffer, _size, _format, __VA_ARGS__)\n#else\n#define XA_FOPEN(_file, _filename, _mode) _file = fopen(_filename, _mode)\n#define XA_SPRINTF(_buffer, _size, _format, ...) sprintf(_buffer, _format, __VA_ARGS__)\n#endif\n\nnamespace xatlas {\nnamespace internal {\n\nstatic ReallocFunc s_realloc = realloc;\nstatic FreeFunc s_free = free;\nstatic PrintFunc s_print = printf;\nstatic bool s_printVerbose = false;\n\n#if XA_PROFILE\ntypedef uint64_t Duration;\n\n#define XA_PROFILE_START(var) const std::chrono::time_point<std::chrono::high_resolution_clock> var##Start = std::chrono::high_resolution_clock::now();\n#define XA_PROFILE_END(var) internal::s_profile.var += uint64_t(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - var##Start).count());\n#define XA_PROFILE_PRINT_AND_RESET(label, var) XA_PRINT(\"%s%.2f seconds (%g ms)\\n\", label, internal::durationToSeconds(internal::s_profile.var), internal::durationToMs(internal::s_profile.var)); internal::s_profile.var = 0u;\n#define XA_PROFILE_ALLOC 0\n\nstruct ProfileData\n{\n#if XA_PROFILE_ALLOC\n\tstd::atomic<Duration> alloc;\n#endif\n\tstd::chrono::time_point<std::chrono::high_resolution_clock> addMeshRealStart;\n\tDuration addMeshReal;\n\tDuration addMeshCopyData;\n\tstd::atomic<Duration> addMeshThread;\n\tstd::atomic<Duration> addMeshCreateColocals;\n\tDuration computeChartsReal;\n\tstd::atomic<Duration> computeChartsThread;\n\tstd::atomic<Duration> createFaceGroups;\n\tstd::atomic<Duration> extractInvalidMeshGeometry;\n\tstd::atomic<Duration> chartGroupComputeChartsReal;\n\tstd::atomic<Duration> chartGroupComputeChartsThread;\n\tstd::atomic<Duration> createChartGroupMesh;\n\tstd::atomic<Duration> createChartGroupMeshColocals;\n\tstd::atomic<Duration> createChartGroupMeshBoundaries;\n\tstd::atomic<Duration> buildAtlas;\n\tstd::atomic<Duration> buildAtlasInit;\n\tstd::atomic<Duration> planarCharts;\n\tstd::atomic<Duration> originalUvCharts;\n\tstd::atomic<Duration> clusteredCharts;\n\tstd::atomic<Duration> clusteredChartsPlaceSeeds;\n\tstd::atomic<Duration> clusteredChartsPlaceSeedsBoundaryIntersection;\n\tstd::atomic<Duration> clusteredChartsRelocateSeeds;\n\tstd::atomic<Duration> clusteredChartsReset;\n\tstd::atomic<Duration> clusteredChartsGrow;\n\tstd::atomic<Duration> clusteredChartsGrowBoundaryIntersection;\n\tstd::atomic<Duration> clusteredChartsMerge;\n\tstd::atomic<Duration> clusteredChartsFillHoles;\n\tstd::atomic<Duration> copyChartFaces;\n\tstd::atomic<Duration> createChartMeshAndParameterizeReal;\n\tstd::atomic<Duration> createChartMeshAndParameterizeThread;\n\tstd::atomic<Duration> createChartMesh;\n\tstd::atomic<Duration> parameterizeCharts;\n\tstd::atomic<Duration> parameterizeChartsOrthogonal;\n\tstd::atomic<Duration> parameterizeChartsLSCM;\n\tstd::atomic<Duration> parameterizeChartsRecompute;\n\tstd::atomic<Duration> parameterizeChartsPiecewise;\n\tstd::atomic<Duration> parameterizeChartsPiecewiseBoundaryIntersection;\n\tstd::atomic<Duration> parameterizeChartsEvaluateQuality;\n\tDuration packCharts;\n\tDuration packChartsAddCharts;\n\tstd::atomic<Duration> packChartsAddChartsThread;\n\tstd::atomic<Duration> packChartsAddChartsRestoreTexcoords;\n\tDuration packChartsRasterize;\n\tDuration packChartsDilate;\n\tDuration packChartsFindLocation;\n\tDuration packChartsBlit;\n\tDuration buildOutputMeshes;\n};\n\nstatic ProfileData s_profile;\n\nstatic double durationToMs(Duration c)\n{\n\treturn (double)c * 0.001;\n}\n\nstatic double durationToSeconds(Duration c)\n{\n\treturn (double)c * 0.000001;\n}\n#else\n#define XA_PROFILE_START(var)\n#define XA_PROFILE_END(var)\n#define XA_PROFILE_PRINT_AND_RESET(label, var)\n#define XA_PROFILE_ALLOC 0\n#endif\n\nstruct MemTag\n{\n\tenum\n\t{\n\t\tDefault,\n\t\tBitImage,\n\t\tBVH,\n\t\tMatrix,\n\t\tMesh,\n\t\tMeshBoundaries,\n\t\tMeshColocals,\n\t\tMeshEdgeMap,\n\t\tMeshIndices,\n\t\tMeshNormals,\n\t\tMeshPositions,\n\t\tMeshTexcoords,\n\t\tOpenNL,\n\t\tSegmentAtlasChartCandidates,\n\t\tSegmentAtlasChartFaces,\n\t\tSegmentAtlasMeshData,\n\t\tSegmentAtlasPlanarRegions,\n\t\tCount\n\t};\n};\n\n#if XA_DEBUG_HEAP\nstruct AllocHeader\n{\n\tsize_t size;\n\tconst char *file;\n\tint line;\n\tint tag;\n\tuint32_t id;\n\tAllocHeader *prev, *next;\n\tbool free;\n};\n\nstatic std::mutex s_allocMutex;\nstatic AllocHeader *s_allocRoot = nullptr;\nstatic size_t s_allocTotalCount = 0, s_allocTotalSize = 0, s_allocPeakSize = 0, s_allocCount[MemTag::Count] = { 0 }, s_allocTotalTagSize[MemTag::Count] = { 0 }, s_allocPeakTagSize[MemTag::Count] = { 0 };\nstatic uint32_t s_allocId =0 ;\nstatic constexpr uint32_t kAllocRedzone = 0x12345678;\n\nstatic void *Realloc(void *ptr, size_t size, int tag, const char *file, int line)\n{\n\tstd::unique_lock<std::mutex> lock(s_allocMutex);\n\tif (!size && !ptr)\n\t\treturn nullptr;\n\tuint8_t *realPtr = nullptr;\n\tAllocHeader *header = nullptr;\n\tif (ptr) {\n\t\trealPtr = ((uint8_t *)ptr) - sizeof(AllocHeader);\n\t\theader = (AllocHeader *)realPtr;\n\t}\n\tif (realPtr && size) {\n\t\ts_allocTotalSize -= header->size;\n\t\ts_allocTotalTagSize[header->tag] -= header->size;\n\t\t// realloc, remove.\n\t\tif (header->prev)\n\t\t\theader->prev->next = header->next;\n\t\telse\n\t\t\ts_allocRoot = header->next;\n\t\tif (header->next)\n\t\t\theader->next->prev = header->prev;\n\t}\n\tif (!size) {\n\t\ts_allocTotalSize -= header->size;\n\t\ts_allocTotalTagSize[header->tag] -= header->size;\n\t\tXA_ASSERT(!header->free); // double free\n\t\theader->free = true;\n\t\treturn nullptr;\n\t}\n\tsize += sizeof(AllocHeader) + sizeof(kAllocRedzone);\n\tuint8_t *newPtr = (uint8_t *)s_realloc(realPtr, size);\n\tif (!newPtr)\n\t\treturn nullptr;\n\theader = (AllocHeader *)newPtr;\n\theader->size = size;\n\theader->file = file;\n\theader->line = line;\n\theader->tag = tag;\n\theader->id = s_allocId++;\n\theader->free = false;\n\tif (!s_allocRoot) {\n\t\ts_allocRoot = header;\n\t\theader->prev = header->next = 0;\n\t} else {\n\t\theader->prev = nullptr;\n\t\theader->next = s_allocRoot;\n\t\ts_allocRoot = header;\n\t\theader->next->prev = header;\n\t}\n\ts_allocTotalCount++;\n\ts_allocTotalSize += size;\n\tif (s_allocTotalSize > s_allocPeakSize)\n\t\ts_allocPeakSize = s_allocTotalSize;\n\ts_allocCount[tag]++;\n\ts_allocTotalTagSize[tag] += size;\n\tif (s_allocTotalTagSize[tag] > s_allocPeakTagSize[tag])\n\t\ts_allocPeakTagSize[tag] = s_allocTotalTagSize[tag];\n\tauto redzone = (uint32_t *)(newPtr + size - sizeof(kAllocRedzone));\n\t*redzone = kAllocRedzone;\n\treturn newPtr + sizeof(AllocHeader);\n}\n\nstatic void ReportLeaks()\n{\n\tprintf(\"Checking for memory leaks...\\n\");\n\tbool anyLeaks = false;\n\tAllocHeader *header = s_allocRoot;\n\twhile (header) {\n\t\tif (!header->free) {\n\t\t\tprintf(\"   Leak: ID %u, %zu bytes, %s %d\\n\", header->id, header->size, header->file, header->line);\n\t\t\tanyLeaks = true;\n\t\t}\n\t\tauto redzone = (const uint32_t *)((const uint8_t *)header + header->size - sizeof(kAllocRedzone));\n\t\tif (*redzone != kAllocRedzone)\n\t\t\tprintf(\"   Redzone corrupted: %zu bytes %s %d\\n\", header->size, header->file, header->line);\n\t\theader = header->next;\n\t}\n\tif (!anyLeaks)\n\t\tprintf(\"   No memory leaks\\n\");\n\theader = s_allocRoot;\n\twhile (header) {\n\t\tAllocHeader *destroy = header;\n\t\theader = header->next;\n\t\ts_realloc(destroy, 0);\n\t}\n\ts_allocRoot = nullptr;\n\ts_allocTotalSize = s_allocPeakSize = 0;\n\tfor (int i = 0; i < MemTag::Count; i++)\n\t\ts_allocTotalTagSize[i] = s_allocPeakTagSize[i] = 0;\n}\n\nstatic void PrintMemoryUsage()\n{\n\tXA_PRINT(\"Total allocations: %zu\\n\", s_allocTotalCount);\n\tXA_PRINT(\"Memory usage: %0.2fMB current, %0.2fMB peak\\n\", internal::s_allocTotalSize / 1024.0f / 1024.0f, internal::s_allocPeakSize / 1024.0f / 1024.0f);\n\tstatic const char *labels[] = { // Sync with MemTag\n\t\t\"Default\",\n\t\t\"BitImage\",\n\t\t\"BVH\",\n\t\t\"Matrix\",\n\t\t\"Mesh\",\n\t\t\"MeshBoundaries\",\n\t\t\"MeshColocals\",\n\t\t\"MeshEdgeMap\",\n\t\t\"MeshIndices\",\n\t\t\"MeshNormals\",\n\t\t\"MeshPositions\",\n\t\t\"MeshTexcoords\",\n\t\t\"OpenNL\",\n\t\t\"SegmentAtlasChartCandidates\",\n\t\t\"SegmentAtlasChartFaces\",\n\t\t\"SegmentAtlasMeshData\",\n\t\t\"SegmentAtlasPlanarRegions\"\n\t};\n\tfor (int i = 0; i < MemTag::Count; i++) {\n\t\tXA_PRINT(\"   %s: %zu allocations, %0.2fMB current, %0.2fMB peak\\n\", labels[i], internal::s_allocCount[i], internal::s_allocTotalTagSize[i] / 1024.0f / 1024.0f, internal::s_allocPeakTagSize[i] / 1024.0f / 1024.0f);\n\t}\n}\n\n#define XA_PRINT_MEM_USAGE internal::PrintMemoryUsage();\n#else\nstatic void *Realloc(void *ptr, size_t size, int /*tag*/, const char * /*file*/, int /*line*/)\n{\n\tif (size == 0 && !ptr)\n\t\treturn nullptr;\n\tif (size == 0 && s_free) {\n\t\ts_free(ptr);\n\t\treturn nullptr;\n\t}\n#if XA_PROFILE_ALLOC\n\tXA_PROFILE_START(alloc)\n#endif\n\tvoid *mem = s_realloc(ptr, size);\n#if XA_PROFILE_ALLOC\n\tXA_PROFILE_END(alloc)\n#endif\n\tXA_DEBUG_ASSERT(size <= 0 || (size > 0 && mem));\n\treturn mem;\n}\n#define XA_PRINT_MEM_USAGE\n#endif\n\nstatic constexpr float kPi = 3.14159265358979323846f;\nstatic constexpr float kPi2 = 6.28318530717958647692f;\nstatic constexpr float kEpsilon = 0.0001f;\nstatic constexpr float kAreaEpsilon = FLT_EPSILON;\nstatic constexpr float kNormalEpsilon = 0.001f;\n\nstatic int align(int x, int a)\n{\n\treturn (x + a - 1) & ~(a - 1);\n}\n\ntemplate <typename T>\nstatic T max(const T &a, const T &b)\n{\n\treturn a > b ? a : b;\n}\n\ntemplate <typename T>\nstatic T min(const T &a, const T &b)\n{\n\treturn a < b ? a : b;\n}\n\ntemplate <typename T>\nstatic T max3(const T &a, const T &b, const T &c)\n{\n\treturn max(a, max(b, c));\n}\n\n/// Return the maximum of the three arguments.\ntemplate <typename T>\nstatic T min3(const T &a, const T &b, const T &c)\n{\n\treturn min(a, min(b, c));\n}\n\n/// Clamp between two values.\ntemplate <typename T>\nstatic T clamp(const T &x, const T &a, const T &b)\n{\n\treturn min(max(x, a), b);\n}\n\ntemplate <typename T>\nstatic void swap(T &a, T &b)\n{\n\tT temp = a;\n\ta = b;\n\tb = temp;\n}\n\nunion FloatUint32\n{\n\tfloat f;\n\tuint32_t u;\n};\n\nstatic bool isFinite(float f)\n{\n\tFloatUint32 fu;\n\tfu.f = f;\n\treturn fu.u != 0x7F800000u && fu.u != 0x7F800001u;\n}\n\nstatic bool isNan(float f)\n{\n\treturn f != f;\n}\n\n// Robust floating point comparisons:\n// http://realtimecollisiondetection.net/blog/?p=89\nstatic bool equal(const float f0, const float f1, const float epsilon)\n{\n\t//return fabs(f0-f1) <= epsilon;\n\treturn fabs(f0 - f1) <= epsilon * max3(1.0f, fabsf(f0), fabsf(f1));\n}\n\nstatic int ftoi_ceil(float val)\n{\n\treturn (int)ceilf(val);\n}\n\nstatic bool isZero(const float f, const float epsilon)\n{\n\treturn fabs(f) <= epsilon;\n}\n\nstatic float square(float f)\n{\n\treturn f * f;\n}\n\n/** Return the next power of two.\n* @see http://graphics.stanford.edu/~seander/bithacks.html\n* @warning Behaviour for 0 is undefined.\n* @note isPowerOfTwo(x) == true -> nextPowerOfTwo(x) == x\n* @note nextPowerOfTwo(x) = 2 << log2(x-1)\n*/\nstatic uint32_t nextPowerOfTwo(uint32_t x)\n{\n\tXA_DEBUG_ASSERT( x != 0 );\n\t// On modern CPUs this is supposed to be as fast as using the bsr instruction.\n\tx--;\n\tx |= x >> 1;\n\tx |= x >> 2;\n\tx |= x >> 4;\n\tx |= x >> 8;\n\tx |= x >> 16;\n\treturn x + 1;\n}\n\nclass Vector2\n{\npublic:\n\tVector2() {}\n\texplicit Vector2(float f) : x(f), y(f) {}\n\tVector2(float _x, float _y): x(_x), y(_y) {}\n\n\tVector2 operator-() const\n\t{\n\t\treturn Vector2(-x, -y);\n\t}\n\n\tvoid operator+=(const Vector2 &v)\n\t{\n\t\tx += v.x;\n\t\ty += v.y;\n\t}\n\n\tvoid operator-=(const Vector2 &v)\n\t{\n\t\tx -= v.x;\n\t\ty -= v.y;\n\t}\n\n\tvoid operator*=(float s)\n\t{\n\t\tx *= s;\n\t\ty *= s;\n\t}\n\n\tvoid operator*=(const Vector2 &v)\n\t{\n\t\tx *= v.x;\n\t\ty *= v.y;\n\t}\n\n\tfloat x, y;\n};\n\nstatic bool operator==(const Vector2 &a, const Vector2 &b)\n{\n\treturn a.x == b.x && a.y == b.y;\n}\n\nstatic bool operator!=(const Vector2 &a, const Vector2 &b)\n{\n\treturn a.x != b.x || a.y != b.y;\n}\n\n/*static Vector2 operator+(const Vector2 &a, const Vector2 &b)\n{\n\treturn Vector2(a.x + b.x, a.y + b.y);\n}*/\n\nstatic Vector2 operator-(const Vector2 &a, const Vector2 &b)\n{\n\treturn Vector2(a.x - b.x, a.y - b.y);\n}\n\nstatic Vector2 operator*(const Vector2 &v, float s)\n{\n\treturn Vector2(v.x * s, v.y * s);\n}\n\nstatic float dot(const Vector2 &a, const Vector2 &b)\n{\n\treturn a.x * b.x + a.y * b.y;\n}\n\nstatic float lengthSquared(const Vector2 &v)\n{\n\treturn v.x * v.x + v.y * v.y;\n}\n\nstatic float length(const Vector2 &v)\n{\n\treturn sqrtf(lengthSquared(v));\n}\n\n#if XA_DEBUG\nstatic bool isNormalized(const Vector2 &v, float epsilon = kNormalEpsilon)\n{\n\treturn equal(length(v), 1, epsilon);\n}\n#endif\n\nstatic Vector2 normalize(const Vector2 &v)\n{\n\tconst float l = length(v);\n\tXA_DEBUG_ASSERT(l > 0.0f); // Never negative.\n\tconst Vector2 n = v * (1.0f / l);\n\tXA_DEBUG_ASSERT(isNormalized(n));\n\treturn n;\n}\n\nstatic Vector2 normalizeSafe(const Vector2 &v, const Vector2 &fallback)\n{\n\tconst float l = length(v);\n\tif (l > 0.0f) // Never negative.\n\t\treturn v * (1.0f / l);\n\treturn fallback;\n}\n\nstatic bool equal(const Vector2 &v1, const Vector2 &v2, float epsilon)\n{\n\treturn equal(v1.x, v2.x, epsilon) && equal(v1.y, v2.y, epsilon);\n}\n\nstatic Vector2 min(const Vector2 &a, const Vector2 &b)\n{\n\treturn Vector2(min(a.x, b.x), min(a.y, b.y));\n}\n\nstatic Vector2 max(const Vector2 &a, const Vector2 &b)\n{\n\treturn Vector2(max(a.x, b.x), max(a.y, b.y));\n}\n\nstatic bool isFinite(const Vector2 &v)\n{\n\treturn isFinite(v.x) && isFinite(v.y);\n}\n\nstatic float triangleArea(const Vector2 &a, const Vector2 &b, const Vector2 &c)\n{\n\t// IC: While it may be appealing to use the following expression:\n\t//return (c.x * a.y + a.x * b.y + b.x * c.y - b.x * a.y - c.x * b.y - a.x * c.y) * 0.5f;\n\t// That's actually a terrible idea. Small triangles far from the origin can end up producing fairly large floating point\n\t// numbers and the results becomes very unstable and dependent on the order of the factors.\n\t// Instead, it's preferable to subtract the vertices first, and multiply the resulting small values together. The result\n\t// in this case is always much more accurate (as long as the triangle is small) and less dependent of the location of\n\t// the triangle.\n\t//return ((a.x - c.x) * (b.y - c.y) - (a.y - c.y) * (b.x - c.x)) * 0.5f;\n\tconst Vector2 v0 = a - c;\n\tconst Vector2 v1 = b - c;\n\treturn (v0.x * v1.y - v0.y * v1.x) * 0.5f;\n}\n\nstatic bool linesIntersect(const Vector2 &a1, const Vector2 &a2, const Vector2 &b1, const Vector2 &b2, float epsilon)\n{\n\tconst Vector2 v0 = a2 - a1;\n\tconst Vector2 v1 = b2 - b1;\n\tconst float denom = -v1.x * v0.y + v0.x * v1.y;\n\tif (equal(denom, 0.0f, epsilon))\n\t\treturn false;\n\tconst float s = (-v0.y * (a1.x - b1.x) + v0.x * (a1.y - b1.y)) / denom;\n\tif (s > epsilon && s < 1.0f - epsilon) {\n\t\tconst float t = ( v1.x * (a1.y - b1.y) - v1.y * (a1.x - b1.x)) / denom;\n\t\treturn t > epsilon && t < 1.0f - epsilon;\n\t}\n\treturn false;\n}\n\nstruct Vector2i\n{\n\tVector2i() {}\n\tVector2i(int32_t _x, int32_t _y) : x(_x), y(_y) {}\n\n\tint32_t x, y;\n};\n\nclass Vector3\n{\npublic:\n\tVector3() {}\n\texplicit Vector3(float f) : x(f), y(f), z(f) {}\n\tVector3(float _x, float _y, float _z) : x(_x), y(_y), z(_z) {}\n\tVector3(const Vector2 &v, float _z) : x(v.x), y(v.y), z(_z) {}\n\n\tVector2 xy() const\n\t{\n\t\treturn Vector2(x, y);\n\t}\n\n\tVector3 operator-() const\n\t{\n\t\treturn Vector3(-x, -y, -z);\n\t}\n\n\tvoid operator+=(const Vector3 &v)\n\t{\n\t\tx += v.x;\n\t\ty += v.y;\n\t\tz += v.z;\n\t}\n\n\tvoid operator-=(const Vector3 &v)\n\t{\n\t\tx -= v.x;\n\t\ty -= v.y;\n\t\tz -= v.z;\n\t}\n\n\tvoid operator*=(float s)\n\t{\n\t\tx *= s;\n\t\ty *= s;\n\t\tz *= s;\n\t}\n\n\tvoid operator/=(float s)\n\t{\n\t\tfloat is = 1.0f / s;\n\t\tx *= is;\n\t\ty *= is;\n\t\tz *= is;\n\t}\n\n\tvoid operator*=(const Vector3 &v)\n\t{\n\t\tx *= v.x;\n\t\ty *= v.y;\n\t\tz *= v.z;\n\t}\n\n\tvoid operator/=(const Vector3 &v)\n\t{\n\t\tx /= v.x;\n\t\ty /= v.y;\n\t\tz /= v.z;\n\t}\n\n\tfloat x, y, z;\n};\n\nstatic Vector3 operator+(const Vector3 &a, const Vector3 &b)\n{\n\treturn Vector3(a.x + b.x, a.y + b.y, a.z + b.z);\n}\n\nstatic Vector3 operator-(const Vector3 &a, const Vector3 &b)\n{\n\treturn Vector3(a.x - b.x, a.y - b.y, a.z - b.z);\n}\n\nstatic bool operator==(const Vector3 &a, const Vector3 &b)\n{\n\treturn a.x == b.x && a.y == b.y && a.z == b.z;\n}\n\nstatic Vector3 cross(const Vector3 &a, const Vector3 &b)\n{\n\treturn Vector3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);\n}\n\nstatic Vector3 operator*(const Vector3 &v, float s)\n{\n\treturn Vector3(v.x * s, v.y * s, v.z * s);\n}\n\nstatic Vector3 operator/(const Vector3 &v, float s)\n{\n\treturn v * (1.0f / s);\n}\n\nstatic float dot(const Vector3 &a, const Vector3 &b)\n{\n\treturn a.x * b.x + a.y * b.y + a.z * b.z;\n}\n\nstatic float lengthSquared(const Vector3 &v)\n{\n\treturn v.x * v.x + v.y * v.y + v.z * v.z;\n}\n\nstatic float length(const Vector3 &v)\n{\n\treturn sqrtf(lengthSquared(v));\n}\n\nstatic bool isNormalized(const Vector3 &v, float epsilon = kNormalEpsilon)\n{\n\treturn equal(length(v), 1.0f, epsilon);\n}\n\nstatic Vector3 normalize(const Vector3 &v)\n{\n\tconst float l = length(v);\n\tXA_DEBUG_ASSERT(l > 0.0f); // Never negative.\n\tconst Vector3 n = v * (1.0f / l);\n\tXA_DEBUG_ASSERT(isNormalized(n));\n\treturn n;\n}\n\nstatic Vector3 normalizeSafe(const Vector3 &v, const Vector3 &fallback)\n{\n\tconst float l = length(v);\n\tif (l > 0.0f) // Never negative.\n\t\treturn v * (1.0f / l);\n\treturn fallback;\n}\n\nstatic bool equal(const Vector3 &v0, const Vector3 &v1, float epsilon)\n{\n\treturn fabs(v0.x - v1.x) <= epsilon && fabs(v0.y - v1.y) <= epsilon && fabs(v0.z - v1.z) <= epsilon;\n}\n\nstatic Vector3 min(const Vector3 &a, const Vector3 &b)\n{\n\treturn Vector3(min(a.x, b.x), min(a.y, b.y), min(a.z, b.z));\n}\n\nstatic Vector3 max(const Vector3 &a, const Vector3 &b)\n{\n\treturn Vector3(max(a.x, b.x), max(a.y, b.y), max(a.z, b.z));\n}\n\n#if XA_DEBUG\nbool isFinite(const Vector3 &v)\n{\n\treturn isFinite(v.x) && isFinite(v.y) && isFinite(v.z);\n}\n#endif\n\nstruct Extents2\n{\n\tVector2 min, max;\n\n\tExtents2() {}\n\n\tExtents2(Vector2 p1, Vector2 p2)\n\t{\n\t\tmin = xatlas::internal::min(p1, p2);\n\t\tmax = xatlas::internal::max(p1, p2);\n\t}\n\n\tvoid reset()\n\t{\n\t\tmin.x = min.y = FLT_MAX;\n\t\tmax.x = max.y = -FLT_MAX;\n\t}\n\n\tvoid add(Vector2 p)\n\t{\n\t\tmin = xatlas::internal::min(min, p);\n\t\tmax = xatlas::internal::max(max, p);\n\t}\n\n\tVector2 midpoint() const\n\t{\n\t\treturn Vector2(min.x + (max.x - min.x) * 0.5f, min.y + (max.y - min.y) * 0.5f);\n\t}\n\n\tstatic bool intersect(const Extents2 &e1, const Extents2 &e2)\n\t{\n\t\treturn e1.min.x <= e2.max.x && e1.max.x >= e2.min.x && e1.min.y <= e2.max.y && e1.max.y >= e2.min.y;\n\t}\n};\n\n// From Fast-BVH\nstruct AABB\n{\n\tAABB() : min(FLT_MAX, FLT_MAX, FLT_MAX), max(-FLT_MAX, -FLT_MAX, -FLT_MAX) {}\n\tAABB(const Vector3 &_min, const Vector3 &_max) : min(_min), max(_max) { }\n\tAABB(const Vector3 &p, float radius = 0.0f) : min(p), max(p) { if (radius > 0.0f) expand(radius); }\n\n\tbool intersect(const AABB &other) const\n\t{\n\t\treturn min.x <= other.max.x && max.x >= other.min.x && min.y <= other.max.y && max.y >= other.min.y && min.z <= other.max.z && max.z >= other.min.z;\n\t}\n\n\tvoid expandToInclude(const Vector3 &p)\n\t{\n\t\tmin = internal::min(min, p);\n\t\tmax = internal::max(max, p);\n\t}\n\n\tvoid expandToInclude(const AABB &aabb)\n\t{\n\t\tmin = internal::min(min, aabb.min);\n\t\tmax = internal::max(max, aabb.max);\n\t}\n\n\tvoid expand(float amount)\n\t{\n\t\tmin -= Vector3(amount);\n\t\tmax += Vector3(amount);\n\t}\n\n\tVector3 centroid() const\n\t{\n\t\treturn min + (max - min) * 0.5f;\n\t}\n\n\tuint32_t maxDimension() const\n\t{\n\t\tconst Vector3 extent = max - min;\n\t\tuint32_t result = 0;\n\t\tif (extent.y > extent.x) {\n\t\t\tresult = 1;\n\t\t\tif (extent.z > extent.y)\n\t\t\t\tresult = 2;\n\t\t}\n\t\telse if(extent.z > extent.x)\n\t\t\tresult = 2;\n\t\treturn result;\n\t}\n\n\tVector3 min, max;\n};\n\nstruct ArrayBase\n{\n\tArrayBase(uint32_t _elementSize, int memTag = MemTag::Default) : buffer(nullptr), elementSize(_elementSize), size(0), capacity(0)\n\t{\n#if XA_DEBUG_HEAP\n\t\tthis->memTag = memTag;\n#else\n\t\tXA_UNUSED(memTag);\n#endif\n\t}\n\n\t~ArrayBase()\n\t{\n\t\tXA_FREE(buffer);\n\t}\n\n\tXA_INLINE void clear()\n\t{\n\t\tsize = 0;\n\t}\n\n\tvoid copyFrom(const uint8_t *data, uint32_t length)\n\t{\n\t\tXA_DEBUG_ASSERT(data);\n\t\tXA_DEBUG_ASSERT(length > 0);\n\t\tresize(length, true);\n\t\tif (buffer && data && length > 0)\n\t\t\tmemcpy(buffer, data, length * elementSize);\n\t}\n\n\tvoid copyTo(ArrayBase &other) const\n\t{\n\t\tXA_DEBUG_ASSERT(elementSize == other.elementSize);\n\t\tXA_DEBUG_ASSERT(size > 0);\n\t\tother.resize(size, true);\n\t\tif (other.buffer && buffer && size > 0)\n\t\t\tmemcpy(other.buffer, buffer, size * elementSize);\n\t}\n\n\tvoid destroy()\n\t{\n\t\tsize = 0;\n\t\tXA_FREE(buffer);\n\t\tbuffer = nullptr;\n\t\tcapacity = 0;\n\t\tsize = 0;\n\t}\n\n\t// Insert the given element at the given index shifting all the elements up.\n\tvoid insertAt(uint32_t index, const uint8_t *value)\n\t{\n\t\tXA_DEBUG_ASSERT(index >= 0 && index <= size);\n\t\tXA_DEBUG_ASSERT(value);\n\t\tresize(size + 1, false);\n\t\tXA_DEBUG_ASSERT(buffer);\n\t\tif (buffer && index < size - 1)\n\t\t\tmemmove(buffer + elementSize * (index + 1), buffer + elementSize * index, elementSize * (size - 1 - index));\n\t\tif (buffer && value)\n\t\t\tmemcpy(&buffer[index * elementSize], value, elementSize);\n\t}\n\n\tvoid moveTo(ArrayBase &other)\n\t{\n\t\tXA_DEBUG_ASSERT(elementSize == other.elementSize);\n\t\tother.destroy();\n\t\tother.buffer = buffer;\n\t\tother.elementSize = elementSize;\n\t\tother.size = size;\n\t\tother.capacity = capacity;\n#if XA_DEBUG_HEAP\n\t\tother.memTag = memTag;\n#endif\n\t\tbuffer = nullptr;\n\t\telementSize = size = capacity = 0;\n\t}\n\n\tvoid pop_back()\n\t{\n\t\tXA_DEBUG_ASSERT(size > 0);\n\t\tresize(size - 1, false);\n\t}\n\n\tvoid push_back(const uint8_t *value)\n\t{\n\t\tXA_DEBUG_ASSERT(value < buffer || value >= buffer + size);\n\t\tXA_DEBUG_ASSERT(value);\n\t\tresize(size + 1, false);\n\t\tXA_DEBUG_ASSERT(buffer);\n\t\tif (buffer && value)\n\t\t\tmemcpy(&buffer[(size - 1) * elementSize], value, elementSize);\n\t}\n\n\tvoid push_back(const ArrayBase &other)\n\t{\n\t\tXA_DEBUG_ASSERT(elementSize == other.elementSize);\n\t\tif (other.size > 0) {\n\t\t\tconst uint32_t oldSize = size;\n\t\t\tresize(size + other.size, false);\n\t\t\tXA_DEBUG_ASSERT(buffer);\n\t\t\tif (buffer)\n\t\t\t\tmemcpy(buffer + oldSize * elementSize, other.buffer, other.size * other.elementSize);\n\t\t}\n\t}\n\n\t// Remove the element at the given index. This is an expensive operation!\n\tvoid removeAt(uint32_t index)\n\t{\n\t\tXA_DEBUG_ASSERT(index >= 0 && index < size);\n\t\tXA_DEBUG_ASSERT(buffer);\n\t\tif (buffer) {\n\t\t\tif (size > 1)\n\t\t\t\tmemmove(buffer + elementSize * index, buffer + elementSize * (index + 1), elementSize * (size - 1 - index));\n\t\t\tif (size > 0)\n\t\t\t\tsize--;\n\t\t}\n\t}\n\n\t// Element at index is swapped with the last element, then the array length is decremented.\n\tvoid removeAtFast(uint32_t index)\n\t{\n\t\tXA_DEBUG_ASSERT(index >= 0 && index < size);\n\t\tXA_DEBUG_ASSERT(buffer);\n\t\tif (buffer) {\n\t\t\tif (size > 1 && index != size - 1)\n\t\t\t\tmemcpy(buffer + elementSize * index, buffer + elementSize * (size - 1), elementSize);\n\t\t\tif (size > 0)\n\t\t\t\tsize--;\n\t\t}\n\t}\n\n\tvoid reserve(uint32_t desiredSize)\n\t{\n\t\tif (desiredSize > capacity)\n\t\t\tsetArrayCapacity(desiredSize);\n\t}\n\n\tvoid resize(uint32_t newSize, bool exact)\n\t{\n\t\tsize = newSize;\n\t\tif (size > capacity) {\n\t\t\t// First allocation is always exact. Otherwise, following allocations grow array to 150% of desired size.\n\t\t\tuint32_t newBufferSize;\n\t\t\tif (capacity == 0 || exact)\n\t\t\t\tnewBufferSize = size;\n\t\t\telse\n\t\t\t\tnewBufferSize = size + (size >> 2);\n\t\t\tsetArrayCapacity(newBufferSize);\n\t\t}\n\t}\n\n\tvoid setArrayCapacity(uint32_t newCapacity)\n\t{\n\t\tXA_DEBUG_ASSERT(newCapacity >= size);\n\t\tif (newCapacity == 0) {\n\t\t\t// free the buffer.\n\t\t\tif (buffer != nullptr) {\n\t\t\t\tXA_FREE(buffer);\n\t\t\t\tbuffer = nullptr;\n\t\t\t}\n\t\t} else {\n\t\t\t// realloc the buffer\n#if XA_DEBUG_HEAP\n\t\t\tbuffer = XA_REALLOC_SIZE(memTag, buffer, newCapacity * elementSize);\n#else\n\t\t\tbuffer = XA_REALLOC_SIZE(MemTag::Default, buffer, newCapacity * elementSize);\n#endif\n\t\t}\n\t\tcapacity = newCapacity;\n\t}\n\n#if XA_DEBUG_HEAP\n\tvoid setMemTag(int _memTag)\n\t{\n\t\tthis->memTag = _memTag;\n\t}\n#endif\n\n\tuint8_t *buffer;\n\tuint32_t elementSize;\n\tuint32_t size;\n\tuint32_t capacity;\n#if XA_DEBUG_HEAP\n\tint memTag;\n#endif\n};\n\ntemplate<typename T>\nclass Array\n{\npublic:\n\tArray(int memTag = MemTag::Default) : m_base(sizeof(T), memTag) {}\n\tArray(const Array&) = delete;\n\tArray &operator=(const Array &) = delete;\n\n\tXA_INLINE const T &operator[](uint32_t index) const\n\t{\n\t\tXA_DEBUG_ASSERT(index < m_base.size);\n\t\tXA_DEBUG_ASSERT(m_base.buffer);\n\t\treturn ((const T *)m_base.buffer)[index];\n\t}\n\n\tXA_INLINE T &operator[](uint32_t index)\n\t{\n\t\tXA_DEBUG_ASSERT(index < m_base.size);\n\t\tXA_DEBUG_ASSERT(m_base.buffer);\n\t\treturn ((T *)m_base.buffer)[index];\n\t}\n\n\tXA_INLINE const T &back() const\n\t{\n\t\tXA_DEBUG_ASSERT(!isEmpty());\n\t\treturn ((const T *)m_base.buffer)[m_base.size - 1];\n\t}\n\n\tXA_INLINE T *begin() { return (T *)m_base.buffer; }\n\tXA_INLINE void clear() { m_base.clear(); }\n\n\tbool contains(const T &value) const\n\t{\n\t\tfor (uint32_t i = 0; i < m_base.size; i++) {\n\t\t\tif (((const T *)m_base.buffer)[i] == value)\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tvoid copyFrom(const T *data, uint32_t length) { m_base.copyFrom((const uint8_t *)data, length); }\n\tvoid copyTo(Array &other) const { m_base.copyTo(other.m_base); }\n\tXA_INLINE const T *data() const { return (const T *)m_base.buffer; }\n\tXA_INLINE T *data() { return (T *)m_base.buffer; }\n\tvoid destroy() { m_base.destroy(); }\n\tXA_INLINE T *end() { return (T *)m_base.buffer + m_base.size; }\n\tXA_INLINE bool isEmpty() const { return m_base.size == 0; }\n\tvoid insertAt(uint32_t index, const T &value) { m_base.insertAt(index, (const uint8_t *)&value); }\n\tvoid moveTo(Array &other) { m_base.moveTo(other.m_base); }\n\tvoid push_back(const T &value) { m_base.push_back((const uint8_t *)&value); }\n\tvoid push_back(const Array &other) { m_base.push_back(other.m_base); }\n\tvoid pop_back() { m_base.pop_back(); }\n\tvoid removeAt(uint32_t index) { m_base.removeAt(index); }\n\tvoid removeAtFast(uint32_t index) { m_base.removeAtFast(index); }\n\tvoid reserve(uint32_t desiredSize) { m_base.reserve(desiredSize); }\n\tvoid resize(uint32_t newSize) { m_base.resize(newSize, true); }\n\n\tvoid runCtors()\n\t{\n\t\tfor (uint32_t i = 0; i < m_base.size; i++)\n\t\t\tnew (&((T *)m_base.buffer)[i]) T;\n\t}\n\n\tvoid runDtors()\n\t{\n\t\tfor (uint32_t i = 0; i < m_base.size; i++)\n\t\t\t((T *)m_base.buffer)[i].~T();\n\t}\n\n\tvoid fill(const T &value)\n\t{\n\t\tauto buffer = (T *)m_base.buffer;\n\t\tfor (uint32_t i = 0; i < m_base.size; i++)\n\t\t\tbuffer[i] = value;\n\t}\n\n\tvoid fillBytes(uint8_t value)\n\t{\n\t\tif (m_base.buffer && m_base.size > 0)\n\t\t\tmemset(m_base.buffer, (int)value, m_base.size * m_base.elementSize);\n\t}\n\n#if XA_DEBUG_HEAP\n\tvoid setMemTag(int memTag) { m_base.setMemTag(memTag); }\n#endif\n\n\tXA_INLINE uint32_t size() const { return m_base.size; }\n\n\tXA_INLINE void zeroOutMemory()\n\t{\n\t\tif (m_base.buffer && m_base.size > 0)\n\t\t\tmemset(m_base.buffer, 0, m_base.elementSize * m_base.size);\n\t}\n\nprivate:\n\tArrayBase m_base;\n};\n\ntemplate<typename T>\nstruct ArrayView\n{\n\tArrayView() : data(nullptr), length(0) {}\n\tArrayView(Array<T> &a) : data(a.data()), length(a.size()) {}\n\tArrayView(T *_data, uint32_t _length) : data(_data), length(_length) {}\n\tArrayView &operator=(Array<T> &a) { data = a.data(); length = a.size(); return *this; }\n\tXA_INLINE const T &operator[](uint32_t index) const { XA_DEBUG_ASSERT(index < length); return data[index]; }\n\tXA_INLINE T &operator[](uint32_t index) { XA_DEBUG_ASSERT(index < length); return data[index]; }\n\tT *data;\n\tuint32_t length;\n};\n\ntemplate<typename T>\nstruct ConstArrayView\n{\n\tConstArrayView() : data(nullptr), length(0) {}\n\tConstArrayView(const Array<T> &a) : data(a.data()), length(a.size()) {}\n\tConstArrayView(ArrayView<T> av) : data(av.data), length(av.length) {}\n\tConstArrayView(const T *_data, uint32_t _length) : data(_data), length(_length) {}\n\tConstArrayView &operator=(const Array<T> &a) { data = a.data(); length = a.size(); return *this; }\n\tXA_INLINE const T &operator[](uint32_t index) const { XA_DEBUG_ASSERT(index < length); return data[index]; }\n\tconst T *data;\n\tuint32_t length;\n};\n\n/// Basis class to compute tangent space basis, ortogonalizations and to transform vectors from one space to another.\nstruct Basis\n{\n\tXA_NODISCARD static Vector3 computeTangent(const Vector3 &normal)\n\t{\n\t\tXA_ASSERT(isNormalized(normal));\n\t\t// Choose minimum axis.\n\t\tVector3 tangent;\n\t\tif (fabsf(normal.x) < fabsf(normal.y) && fabsf(normal.x) < fabsf(normal.z))\n\t\t\ttangent = Vector3(1, 0, 0);\n\t\telse if (fabsf(normal.y) < fabsf(normal.z))\n\t\t\ttangent = Vector3(0, 1, 0);\n\t\telse\n\t\t\ttangent = Vector3(0, 0, 1);\n\t\t// Ortogonalize\n\t\ttangent -= normal * dot(normal, tangent);\n\t\ttangent = normalize(tangent);\n\t\treturn tangent;\n\t}\n\n\tXA_NODISCARD static Vector3 computeBitangent(const Vector3 &normal, const Vector3 &tangent)\n\t{\n\t\treturn cross(normal, tangent);\n\t}\n\n\tVector3 tangent = Vector3(0.0f);\n\tVector3 bitangent = Vector3(0.0f);\n\tVector3 normal = Vector3(0.0f);\n};\n\n// Simple bit array.\nclass BitArray\n{\npublic:\n\tBitArray() : m_size(0) {}\n\n\tBitArray(uint32_t sz)\n\t{\n\t\tresize(sz);\n\t}\n\n\tvoid resize(uint32_t new_size)\n\t{\n\t\tm_size = new_size;\n\t\tm_wordArray.resize((m_size + 31) >> 5);\n\t}\n\n\tbool get(uint32_t index) const\n\t{\n\t\tXA_DEBUG_ASSERT(index < m_size);\n\t\treturn (m_wordArray[index >> 5] & (1 << (index & 31))) != 0;\n\t}\n\n\tvoid set(uint32_t index)\n\t{\n\t\tXA_DEBUG_ASSERT(index < m_size);\n\t\tm_wordArray[index >> 5] |= (1 << (index & 31));\n\t}\n\n\tvoid unset(uint32_t index)\n\t{\n\t\tXA_DEBUG_ASSERT(index < m_size);\n\t\tm_wordArray[index >> 5] &= ~(1 << (index & 31));\n\t}\n\n\tvoid zeroOutMemory()\n\t{\n\t\tm_wordArray.zeroOutMemory();\n\t}\n\nprivate:\n\tuint32_t m_size; // Number of bits stored.\n\tArray<uint32_t> m_wordArray;\n};\n\nclass BitImage\n{\npublic:\n\tBitImage() : m_width(0), m_height(0), m_rowStride(0), m_data(MemTag::BitImage) {}\n\n\tBitImage(uint32_t w, uint32_t h) : m_width(w), m_height(h), m_data(MemTag::BitImage)\n\t{\n\t\tm_rowStride = (m_width + 63) >> 6;\n\t\tm_data.resize(m_rowStride * m_height);\n\t\tm_data.zeroOutMemory();\n\t}\n\n\tBitImage(const BitImage &other) = delete;\n\tBitImage &operator=(const BitImage &other) = delete;\n\tuint32_t width() const { return m_width; }\n\tuint32_t height() const { return m_height; }\n\n\tvoid copyTo(BitImage &other)\n\t{\n\t\tother.m_width = m_width;\n\t\tother.m_height = m_height;\n\t\tother.m_rowStride = m_rowStride;\n\t\tm_data.copyTo(other.m_data);\n\t}\n\n\tvoid resize(uint32_t w, uint32_t h, bool discard)\n\t{\n\t\tconst uint32_t rowStride = (w + 63) >> 6;\n\t\tif (discard) {\n\t\t\tm_data.resize(rowStride * h);\n\t\t\tm_data.zeroOutMemory();\n\t\t} else {\n\t\t\tArray<uint64_t> tmp;\n\t\t\ttmp.resize(rowStride * h);\n\t\t\tmemset(tmp.data(), 0, tmp.size() * sizeof(uint64_t));\n\t\t\t// If only height has changed, can copy all rows at once.\n\t\t\tif (rowStride == m_rowStride) {\n\t\t\t\tmemcpy(tmp.data(), m_data.data(), m_rowStride * min(m_height, h) * sizeof(uint64_t));\n\t\t\t} else if (m_width > 0 && m_height > 0) {\n\t\t\t\tconst uint32_t height = min(m_height, h);\n\t\t\t\tfor (uint32_t i = 0; i < height; i++)\n\t\t\t\t\tmemcpy(&tmp[i * rowStride], &m_data[i * m_rowStride], min(rowStride, m_rowStride) * sizeof(uint64_t));\n\t\t\t}\n\t\t\ttmp.moveTo(m_data);\n\t\t}\n\t\tm_width = w;\n\t\tm_height = h;\n\t\tm_rowStride = rowStride;\n\t}\n\n\tbool get(uint32_t x, uint32_t y) const\n\t{\n\t\tXA_DEBUG_ASSERT(x < m_width && y < m_height);\n\t\tconst uint32_t index = (x >> 6) + y * m_rowStride;\n\t\treturn (m_data[index] & (UINT64_C(1) << (uint64_t(x) & UINT64_C(63)))) != 0;\n\t}\n\n\tvoid set(uint32_t x, uint32_t y)\n\t{\n\t\tXA_DEBUG_ASSERT(x < m_width && y < m_height);\n\t\tconst uint32_t index = (x >> 6) + y * m_rowStride;\n\t\tm_data[index] |= UINT64_C(1) << (uint64_t(x) & UINT64_C(63));\n\t\tXA_DEBUG_ASSERT(get(x, y));\n\t}\n\n\tvoid zeroOutMemory()\n\t{\n\t\tm_data.zeroOutMemory();\n\t}\n\n\tbool canBlit(const BitImage &image, uint32_t offsetX, uint32_t offsetY) const\n\t{\n\t\tfor (uint32_t y = 0; y < image.m_height; y++) {\n\t\t\tconst uint32_t thisY = y + offsetY;\n\t\t\tif (thisY >= m_height)\n\t\t\t\tcontinue;\n\t\t\tuint32_t x = 0;\n\t\t\tfor (;;) {\n\t\t\t\tconst uint32_t thisX = x + offsetX;\n\t\t\t\tif (thisX >= m_width)\n\t\t\t\t\tbreak;\n\t\t\t\tconst uint32_t thisBlockShift = thisX % 64;\n\t\t\t\tconst uint64_t thisBlock = m_data[(thisX >> 6) + thisY * m_rowStride] >> thisBlockShift;\n\t\t\t\tconst uint32_t blockShift = x % 64;\n\t\t\t\tconst uint64_t block = image.m_data[(x >> 6) + y * image.m_rowStride] >> blockShift;\n\t\t\t\tif ((thisBlock & block) != 0)\n\t\t\t\t\treturn false;\n\t\t\t\tx += 64 - max(thisBlockShift, blockShift);\n\t\t\t\tif (x >= image.m_width)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tvoid dilate(uint32_t padding)\n\t{\n\t\tBitImage tmp(m_width, m_height);\n\t\tfor (uint32_t p = 0; p < padding; p++) {\n\t\t\ttmp.zeroOutMemory();\n\t\t\tfor (uint32_t y = 0; y < m_height; y++) {\n\t\t\t\tfor (uint32_t x = 0; x < m_width; x++) {\n\t\t\t\t\tbool b = get(x, y);\n\t\t\t\t\tif (!b) {\n\t\t\t\t\t\tif (x > 0) {\n\t\t\t\t\t\t\tb |= get(x - 1, y);\n\t\t\t\t\t\t\tif (y > 0) b |= get(x - 1, y - 1);\n\t\t\t\t\t\t\tif (y < m_height - 1) b |= get(x - 1, y + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (y > 0) b |= get(x, y - 1);\n\t\t\t\t\t\tif (y < m_height - 1) b |= get(x, y + 1);\n\t\t\t\t\t\tif (x < m_width - 1) {\n\t\t\t\t\t\t\tb |= get(x + 1, y);\n\t\t\t\t\t\t\tif (y > 0) b |= get(x + 1, y - 1);\n\t\t\t\t\t\t\tif (y < m_height - 1) b |= get(x + 1, y + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (b)\n\t\t\t\t\t\ttmp.set(x, y);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp.m_data.copyTo(m_data);\n\t\t}\n\t}\n\nprivate:\n\tuint32_t m_width;\n\tuint32_t m_height;\n\tuint32_t m_rowStride; // In uint64_t's\n\tArray<uint64_t> m_data;\n};\n\n// From Fast-BVH\nclass BVH\n{\npublic:\n\tBVH(const Array<AABB> &objectAabbs, uint32_t leafSize = 4) : m_objectIds(MemTag::BVH), m_nodes(MemTag::BVH)\n\t{\n\t\tm_objectAabbs = &objectAabbs;\n\t\tif (m_objectAabbs->isEmpty())\n\t\t\treturn;\n\t\tm_objectIds.resize(objectAabbs.size());\n\t\tfor (uint32_t i = 0; i < m_objectIds.size(); i++)\n\t\t\tm_objectIds[i] = i;\n\t\tBuildEntry todo[128];\n\t\tuint32_t stackptr = 0;\n\t\tconst uint32_t kRoot = 0xfffffffc;\n\t\tconst uint32_t kUntouched = 0xffffffff;\n\t\tconst uint32_t kTouchedTwice = 0xfffffffd;\n\t\t// Push the root\n\t\ttodo[stackptr].start = 0;\n\t\ttodo[stackptr].end = objectAabbs.size();\n\t\ttodo[stackptr].parent = kRoot;\n\t\tstackptr++;\n\t\tNode node;\n\t\tm_nodes.reserve(objectAabbs.size() * 2);\n\t\tuint32_t nNodes = 0;\n\t\twhile(stackptr > 0) {\n\t\t\t// Pop the next item off of the stack\n\t\t\tconst BuildEntry &bnode = todo[--stackptr];\n\t\t\tconst uint32_t start = bnode.start;\n\t\t\tconst uint32_t end = bnode.end;\n\t\t\tconst uint32_t nPrims = end - start;\n\t\t\tnNodes++;\n\t\t\tnode.start = start;\n\t\t\tnode.nPrims = nPrims;\n\t\t\tnode.rightOffset = kUntouched;\n\t\t\t// Calculate the bounding box for this node\n\t\t\tAABB bb(objectAabbs[m_objectIds[start]]);\n\t\t\tAABB bc(objectAabbs[m_objectIds[start]].centroid());\n\t\t\tfor(uint32_t p = start + 1; p < end; ++p) {\n\t\t\t\tbb.expandToInclude(objectAabbs[m_objectIds[p]]);\n\t\t\t\tbc.expandToInclude(objectAabbs[m_objectIds[p]].centroid());\n\t\t\t}\n\t\t\tnode.aabb = bb;\n\t\t\t// If the number of primitives at this point is less than the leaf\n\t\t\t// size, then this will become a leaf. (Signified by rightOffset == 0)\n\t\t\tif (nPrims <= leafSize)\n\t\t\t\tnode.rightOffset = 0;\n\t\t\tm_nodes.push_back(node);\n\t\t\t// Child touches parent...\n\t\t\t// Special case: Don't do this for the root.\n\t\t\tif (bnode.parent != kRoot) {\n\t\t\t\tm_nodes[bnode.parent].rightOffset--;\n\t\t\t\t// When this is the second touch, this is the right child.\n\t\t\t\t// The right child sets up the offset for the flat tree.\n\t\t\t\tif (m_nodes[bnode.parent].rightOffset == kTouchedTwice )\n\t\t\t\t\tm_nodes[bnode.parent].rightOffset = nNodes - 1 - bnode.parent;\n\t\t\t}\n\t\t\t// If this is a leaf, no need to subdivide.\n\t\t\tif (node.rightOffset == 0)\n\t\t\t\tcontinue;\n\t\t\t// Set the split dimensions\n\t\t\tconst uint32_t split_dim = bc.maxDimension();\n\t\t\t// Split on the center of the longest axis\n\t\t\tconst float split_coord = 0.5f * ((&bc.min.x)[split_dim] + (&bc.max.x)[split_dim]);\n\t\t\t// Partition the list of objects on this split\n\t\t\tuint32_t mid = start;\n\t\t\tfor (uint32_t i = start; i < end; ++i) {\n\t\t\t\tconst Vector3 centroid(objectAabbs[m_objectIds[i]].centroid());\n\t\t\t\tif ((&centroid.x)[split_dim] < split_coord) {\n\t\t\t\t\tswap(m_objectIds[i], m_objectIds[mid]);\n\t\t\t\t\t++mid;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If we get a bad split, just choose the center...\n\t\t\tif (mid == start || mid == end)\n\t\t\t\tmid = start + (end - start) / 2;\n\t\t\t// Push right child\n\t\t\ttodo[stackptr].start = mid;\n\t\t\ttodo[stackptr].end = end;\n\t\t\ttodo[stackptr].parent = nNodes - 1;\n\t\t\tstackptr++;\n\t\t\t// Push left child\n\t\t\ttodo[stackptr].start = start;\n\t\t\ttodo[stackptr].end = mid;\n\t\t\ttodo[stackptr].parent = nNodes - 1;\n\t\t\tstackptr++;\n\t\t}\n\t}\n\n\tvoid query(const AABB &queryAabb, Array<uint32_t> &result) const\n\t{\n\t\tresult.clear();\n\t\t// Working set\n\t\tuint32_t todo[64];\n\t\tint32_t stackptr = 0;\n\t\t// \"Push\" on the root node to the working set\n\t\ttodo[stackptr] = 0;\n\t\twhile(stackptr >= 0) {\n\t\t\t// Pop off the next node to work on.\n\t\t\tconst int ni = todo[stackptr--];\n\t\t\tconst Node &node = m_nodes[ni];\n\t\t\t// Is leaf -> Intersect\n\t\t\tif (node.rightOffset == 0) {\n\t\t\t\tfor(uint32_t o = 0; o < node.nPrims; ++o) {\n\t\t\t\t\tconst uint32_t obj = node.start + o;\n\t\t\t\t\tif (queryAabb.intersect((*m_objectAabbs)[m_objectIds[obj]]))\n\t\t\t\t\t\tresult.push_back(m_objectIds[obj]);\n\t\t\t\t}\n\t\t\t} else { // Not a leaf\n\t\t\t\tconst uint32_t left = ni + 1;\n\t\t\t\tconst uint32_t right = ni + node.rightOffset;\n\t\t\t\tif (queryAabb.intersect(m_nodes[left].aabb))\n\t\t\t\t\ttodo[++stackptr] = left;\n\t\t\t\tif (queryAabb.intersect(m_nodes[right].aabb))\n\t\t\t\t\ttodo[++stackptr] = right;\n\t\t\t}\n\t\t}\n\t}\n\nprivate:\n\tstruct BuildEntry\n\t{\n\t\tuint32_t parent; // If non-zero then this is the index of the parent. (used in offsets)\n\t\tuint32_t start, end; // The range of objects in the object list covered by this node.\n\t};\n\n\tstruct Node\n\t{\n\t\tAABB aabb;\n\t\tuint32_t start, nPrims, rightOffset;\n\t};\n\n\tconst Array<AABB> *m_objectAabbs;\n\tArray<uint32_t> m_objectIds;\n\tArray<Node> m_nodes;\n};\n\nstruct Fit\n{\n\tstatic bool computeBasis(ConstArrayView<Vector3> points, Basis *basis)\n\t{\n\t\tif (computeLeastSquaresNormal(points, &basis->normal)) {\n\t\t\tbasis->tangent = Basis::computeTangent(basis->normal);\n\t\t\tbasis->bitangent = Basis::computeBitangent(basis->normal, basis->tangent);\n\t\t\treturn true;\n\t\t}\n\t\treturn computeEigen(points, basis);\n\t}\n\nprivate:\n\t// Fit a plane to a collection of points.\n\t// Fast, and accurate to within a few degrees.\n\t// Returns None if the points do not span a plane.\n\t// https://www.ilikebigbits.com/2015_03_04_plane_from_points.html\n\tstatic bool computeLeastSquaresNormal(ConstArrayView<Vector3> points, Vector3 *normal)\n\t{\n\t\tXA_DEBUG_ASSERT(points.length >= 3);\n\t\tif (points.length == 3) {\n\t\t\t*normal = normalize(cross(points[2] - points[0], points[1] - points[0]));\n\t\t\treturn true;\n\t\t}\n\t\tconst float invN = 1.0f / float(points.length);\n\t\tVector3 centroid(0.0f);\n\t\tfor (uint32_t i = 0; i < points.length; i++)\n\t\t\tcentroid += points[i];\n\t\tcentroid *= invN;\n\t\t// Calculate full 3x3 covariance matrix, excluding symmetries:\n\t\tfloat xx = 0.0f, xy = 0.0f, xz = 0.0f, yy = 0.0f, yz = 0.0f, zz = 0.0f;\n\t\tfor (uint32_t i = 0; i < points.length; i++) {\n\t\t\tVector3 r = points[i] - centroid;\n\t\t\txx += r.x * r.x;\n\t\t\txy += r.x * r.y;\n\t\t\txz += r.x * r.z;\n\t\t\tyy += r.y * r.y;\n\t\t\tyz += r.y * r.z;\n\t\t\tzz += r.z * r.z;\n\t\t}\n#if 0\n\t\txx *= invN;\n\t\txy *= invN;\n\t\txz *= invN;\n\t\tyy *= invN;\n\t\tyz *= invN;\n\t\tzz *= invN;\n\t\tVector3 weighted_dir(0.0f);\n\t\t{\n\t\t\tfloat det_x = yy * zz - yz * yz;\n\t\t\tconst Vector3 axis_dir(det_x, xz * yz - xy * zz, xy * yz - xz * yy);\n\t\t\tfloat weight = det_x * det_x;\n\t\t\tif (dot(weighted_dir, axis_dir) < 0.0f)\n\t\t\t\tweight = -weight;\n\t\t\tweighted_dir += axis_dir * weight;\n\t\t}\n\t\t{\n\t\t\tfloat det_y = xx * zz - xz * xz;\n\t\t\tconst Vector3 axis_dir(xz * yz - xy * zz, det_y, xy * xz - yz * xx);\n\t\t\tfloat weight = det_y * det_y;\n\t\t\tif (dot(weighted_dir, axis_dir) < 0.0f)\n\t\t\t\tweight = -weight;\n\t\t\tweighted_dir += axis_dir * weight;\n\t\t}\n\t\t{\n\t\t\tfloat det_z = xx * yy - xy * xy;\n\t\t\tconst Vector3 axis_dir(xy * yz - xz * yy, xy * xz - yz * xx, det_z);\n\t\t\tfloat weight = det_z * det_z;\n\t\t\tif (dot(weighted_dir, axis_dir) < 0.0f)\n\t\t\t\tweight = -weight;\n\t\t\tweighted_dir += axis_dir * weight;\n\t\t}\n\t\t*normal = normalize(weighted_dir, kEpsilon);\n#else\n\t\tconst float det_x = yy * zz - yz * yz;\n\t\tconst float det_y = xx * zz - xz * xz;\n\t\tconst float det_z = xx * yy - xy * xy;\n\t\tconst float det_max = max(det_x, max(det_y, det_z));\n\t\tif (det_max <= 0.0f)\n\t\t\treturn false; // The points don't span a plane\n\t\t// Pick path with best conditioning:\n\t\tVector3 dir(0.0f);\n\t\tif (det_max == det_x)\n\t\t\tdir = Vector3(det_x,xz * yz - xy * zz,xy * yz - xz * yy);\n\t\telse if (det_max == det_y)\n\t\t\tdir = Vector3(xz * yz - xy * zz, det_y, xy * xz - yz * xx);\n\t\telse if (det_max == det_z)\n\t\t\tdir = Vector3(xy * yz - xz * yy, xy * xz - yz * xx, det_z);\n\t\tconst float len = length(dir);\n\t\tif (isZero(len, kEpsilon))\n\t\t\treturn false;\n\t\t*normal = dir * (1.0f / len);\n#endif\n\t\treturn isNormalized(*normal);\n\t}\n\n\tstatic bool computeEigen(ConstArrayView<Vector3> points, Basis *basis)\n\t{\n\t\tfloat matrix[6];\n\t\tcomputeCovariance(points, matrix);\n\t\tif (matrix[0] == 0 && matrix[3] == 0 && matrix[5] == 0)\n\t\t\treturn false;\n\t\tfloat eigenValues[3];\n\t\tVector3 eigenVectors[3];\n\t\tif (!eigenSolveSymmetric3(matrix, eigenValues, eigenVectors))\n\t\t\treturn false;\n\t\tbasis->normal = normalize(eigenVectors[2]);\n\t\tbasis->tangent = normalize(eigenVectors[0]);\n\t\tbasis->bitangent = normalize(eigenVectors[1]);\n\t\treturn true;\n\t}\n\n\tstatic Vector3 computeCentroid(ConstArrayView<Vector3> points)\n\t{\n\t\tVector3 centroid(0.0f);\n\t\tfor (uint32_t i = 0; i < points.length; i++)\n\t\t\tcentroid += points[i];\n\t\tcentroid /= float(points.length);\n\t\treturn centroid;\n\t}\n\n\tstatic Vector3 computeCovariance(ConstArrayView<Vector3> points, float * covariance)\n\t{\n\t\t// compute the centroid\n\t\tVector3 centroid = computeCentroid(points);\n\t\t// compute covariance matrix\n\t\tfor (int i = 0; i < 6; i++) {\n\t\t\tcovariance[i] = 0.0f;\n\t\t}\n\t\tfor (uint32_t i = 0; i < points.length; i++) {\n\t\t\tVector3 v = points[i] - centroid;\n\t\t\tcovariance[0] += v.x * v.x;\n\t\t\tcovariance[1] += v.x * v.y;\n\t\t\tcovariance[2] += v.x * v.z;\n\t\t\tcovariance[3] += v.y * v.y;\n\t\t\tcovariance[4] += v.y * v.z;\n\t\t\tcovariance[5] += v.z * v.z;\n\t\t}\n\t\treturn centroid;\n\t}\n\n\t// Tridiagonal solver from Charles Bloom.\n\t// Householder transforms followed by QL decomposition.\n\t// Seems to be based on the code from Numerical Recipes in C.\n\tstatic bool eigenSolveSymmetric3(const float matrix[6], float eigenValues[3], Vector3 eigenVectors[3])\n\t{\n\t\tXA_DEBUG_ASSERT(matrix != nullptr && eigenValues != nullptr && eigenVectors != nullptr);\n\t\tfloat subd[3];\n\t\tfloat diag[3];\n\t\tfloat work[3][3];\n\t\twork[0][0] = matrix[0];\n\t\twork[0][1] = work[1][0] = matrix[1];\n\t\twork[0][2] = work[2][0] = matrix[2];\n\t\twork[1][1] = matrix[3];\n\t\twork[1][2] = work[2][1] = matrix[4];\n\t\twork[2][2] = matrix[5];\n\t\tEigenSolver3_Tridiagonal(work, diag, subd);\n\t\tif (!EigenSolver3_QLAlgorithm(work, diag, subd)) {\n\t\t\tfor (int i = 0; i < 3; i++) {\n\t\t\t\teigenValues[i] = 0;\n\t\t\t\teigenVectors[i] = Vector3(0);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tfor (int i = 0; i < 3; i++) {\n\t\t\teigenValues[i] = (float)diag[i];\n\t\t}\n\t\t// eigenvectors are the columns; make them the rows :\n\t\tfor (int i = 0; i < 3; i++) {\n\t\t\tfor (int j = 0; j < 3; j++) {\n\t\t\t\t(&eigenVectors[j].x)[i] = (float) work[i][j];\n\t\t\t}\n\t\t}\n\t\t// shuffle to sort by singular value :\n\t\tif (eigenValues[2] > eigenValues[0] && eigenValues[2] > eigenValues[1]) {\n\t\t\tswap(eigenValues[0], eigenValues[2]);\n\t\t\tswap(eigenVectors[0], eigenVectors[2]);\n\t\t}\n\t\tif (eigenValues[1] > eigenValues[0]) {\n\t\t\tswap(eigenValues[0], eigenValues[1]);\n\t\t\tswap(eigenVectors[0], eigenVectors[1]);\n\t\t}\n\t\tif (eigenValues[2] > eigenValues[1]) {\n\t\t\tswap(eigenValues[1], eigenValues[2]);\n\t\t\tswap(eigenVectors[1], eigenVectors[2]);\n\t\t}\n\t\tXA_DEBUG_ASSERT(eigenValues[0] >= eigenValues[1] && eigenValues[0] >= eigenValues[2]);\n\t\tXA_DEBUG_ASSERT(eigenValues[1] >= eigenValues[2]);\n\t\treturn true;\n\t}\n\nprivate:\n\tstatic void EigenSolver3_Tridiagonal(float mat[3][3], float *diag, float *subd)\n\t{\n\t\t// Householder reduction T = Q^t M Q\n\t\t//   Input:\n\t\t//     mat, symmetric 3x3 matrix M\n\t\t//   Output:\n\t\t//     mat, orthogonal matrix Q\n\t\t//     diag, diagonal entries of T\n\t\t//     subd, subdiagonal entries of T (T is symmetric)\n\t\tconst float epsilon = 1e-08f;\n\t\tfloat a = mat[0][0];\n\t\tfloat b = mat[0][1];\n\t\tfloat c = mat[0][2];\n\t\tfloat d = mat[1][1];\n\t\tfloat e = mat[1][2];\n\t\tfloat f = mat[2][2];\n\t\tdiag[0] = a;\n\t\tsubd[2] = 0.f;\n\t\tif (fabsf(c) >= epsilon) {\n\t\t\tconst float ell = sqrtf(b * b + c * c);\n\t\t\tb /= ell;\n\t\t\tc /= ell;\n\t\t\tconst float q = 2 * b * e + c * (f - d);\n\t\t\tdiag[1] = d + c * q;\n\t\t\tdiag[2] = f - c * q;\n\t\t\tsubd[0] = ell;\n\t\t\tsubd[1] = e - b * q;\n\t\t\tmat[0][0] = 1;\n\t\t\tmat[0][1] = 0;\n\t\t\tmat[0][2] = 0;\n\t\t\tmat[1][0] = 0;\n\t\t\tmat[1][1] = b;\n\t\t\tmat[1][2] = c;\n\t\t\tmat[2][0] = 0;\n\t\t\tmat[2][1] = c;\n\t\t\tmat[2][2] = -b;\n\t\t} else {\n\t\t\tdiag[1] = d;\n\t\t\tdiag[2] = f;\n\t\t\tsubd[0] = b;\n\t\t\tsubd[1] = e;\n\t\t\tmat[0][0] = 1;\n\t\t\tmat[0][1] = 0;\n\t\t\tmat[0][2] = 0;\n\t\t\tmat[1][0] = 0;\n\t\t\tmat[1][1] = 1;\n\t\t\tmat[1][2] = 0;\n\t\t\tmat[2][0] = 0;\n\t\t\tmat[2][1] = 0;\n\t\t\tmat[2][2] = 1;\n\t\t}\n\t}\n\n\tstatic bool EigenSolver3_QLAlgorithm(float mat[3][3], float *diag, float *subd)\n\t{\n\t\t// QL iteration with implicit shifting to reduce matrix from tridiagonal\n\t\t// to diagonal\n\t\tconst int maxiter = 32;\n\t\tfor (int ell = 0; ell < 3; ell++) {\n\t\t\tint iter;\n\t\t\tfor (iter = 0; iter < maxiter; iter++) {\n\t\t\t\tint m;\n\t\t\t\tfor (m = ell; m <= 1; m++) {\n\t\t\t\t\tfloat dd = fabsf(diag[m]) + fabsf(diag[m + 1]);\n\t\t\t\t\tif ( fabsf(subd[m]) + dd == dd )\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( m == ell )\n\t\t\t\t\tbreak;\n\t\t\t\tfloat g = (diag[ell + 1] - diag[ell]) / (2 * subd[ell]);\n\t\t\t\tfloat r = sqrtf(g * g + 1);\n\t\t\t\tif ( g < 0 )\n\t\t\t\t\tg = diag[m] - diag[ell] + subd[ell] / (g - r);\n\t\t\t\telse\n\t\t\t\t\tg = diag[m] - diag[ell] + subd[ell] / (g + r);\n\t\t\t\tfloat s = 1, c = 1, p = 0;\n\t\t\t\tfor (int i = m - 1; i >= ell; i--) {\n\t\t\t\t\tfloat f = s * subd[i], b = c * subd[i];\n\t\t\t\t\tif ( fabsf(f) >= fabsf(g) ) {\n\t\t\t\t\t\tc = g / f;\n\t\t\t\t\t\tr = sqrtf(c * c + 1);\n\t\t\t\t\t\tsubd[i + 1] = f * r;\n\t\t\t\t\t\tc *= (s = 1 / r);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = f / g;\n\t\t\t\t\t\tr = sqrtf(s * s + 1);\n\t\t\t\t\t\tsubd[i + 1] = g * r;\n\t\t\t\t\t\ts *= (c = 1 / r);\n\t\t\t\t\t}\n\t\t\t\t\tg = diag[i + 1] - p;\n\t\t\t\t\tr = (diag[i] - g) * s + 2 * b * c;\n\t\t\t\t\tp = s * r;\n\t\t\t\t\tdiag[i + 1] = g + p;\n\t\t\t\t\tg = c * r - b;\n\t\t\t\t\tfor (int k = 0; k < 3; k++) {\n\t\t\t\t\t\tf = mat[k][i + 1];\n\t\t\t\t\t\tmat[k][i + 1] = s * mat[k][i] + c * f;\n\t\t\t\t\t\tmat[k][i] = c * mat[k][i] - s * f;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdiag[ell] -= p;\n\t\t\t\tsubd[ell] = g;\n\t\t\t\tsubd[m] = 0;\n\t\t\t}\n\t\t\tif ( iter == maxiter )\n\t\t\t\t// should not get here under normal circumstances\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n};\n\nstatic uint32_t sdbmHash(const void *data_in, uint32_t size, uint32_t h = 5381)\n{\n\tconst uint8_t *data = (const uint8_t *) data_in;\n\tuint32_t i = 0;\n\twhile (i < size) {\n\t\th = (h << 16) + (h << 6) - h + (uint32_t ) data[i++];\n\t}\n\treturn h;\n}\n\ntemplate <typename T>\nstatic uint32_t hash(const T &t, uint32_t h = 5381)\n{\n\treturn sdbmHash(&t, sizeof(T), h);\n}\n\ntemplate <typename Key>\nstruct Hash\n{\n\tuint32_t operator()(const Key &k) const { return hash(k); }\n};\n\ntemplate <typename Key>\nstruct PassthroughHash\n{\n\tuint32_t operator()(const Key &k) const { return (uint32_t)k; }\n};\n\ntemplate <typename Key>\nstruct Equal\n{\n\tbool operator()(const Key &k0, const Key &k1) const { return k0 == k1; }\n};\n\ntemplate<typename Key, typename H = Hash<Key>, typename E = Equal<Key> >\nclass HashMap\n{\npublic:\n\tHashMap(int memTag, uint32_t size) : m_memTag(memTag), m_size(size), m_numSlots(0), m_slots(nullptr), m_keys(memTag), m_next(memTag)\n\t{\n\t}\n\n\t~HashMap()\n\t{\n\t\tif (m_slots)\n\t\t\tXA_FREE(m_slots);\n\t}\n\n\tvoid destroy()\n\t{\n\t\tif (m_slots) {\n\t\t\tXA_FREE(m_slots);\n\t\t\tm_slots = nullptr;\n\t\t}\n\t\tm_keys.destroy();\n\t\tm_next.destroy();\n\t}\n\n\tuint32_t add(const Key &key)\n\t{\n\t\tif (!m_slots)\n\t\t\talloc();\n\t\tconst uint32_t hash = computeHash(key);\n\t\tm_keys.push_back(key);\n\t\tm_next.push_back(m_slots[hash]);\n\t\tm_slots[hash] = m_next.size() - 1;\n\t\treturn m_keys.size() - 1;\n\t}\n\n\tuint32_t get(const Key &key) const\n\t{\n\t\tif (!m_slots)\n\t\t\treturn UINT32_MAX;\n\t\treturn find(key, m_slots[computeHash(key)]);\n\t}\n\n\tuint32_t getNext(const Key &key, uint32_t current) const\n\t{\n\t\treturn find(key, m_next[current]);\n\t}\n\nprivate:\n\tvoid alloc()\n\t{\n\t\tXA_DEBUG_ASSERT(m_size > 0);\n\t\tm_numSlots = nextPowerOfTwo(m_size);\n\t\tauto minNumSlots = uint32_t(m_size * 1.3);\n\t\tif (m_numSlots < minNumSlots)\n\t\t\tm_numSlots = nextPowerOfTwo(minNumSlots);\n\t\tm_slots = XA_ALLOC_ARRAY(m_memTag, uint32_t, m_numSlots);\n\t\tfor (uint32_t i = 0; i < m_numSlots; i++)\n\t\t\tm_slots[i] = UINT32_MAX;\n\t\tm_keys.reserve(m_size);\n\t\tm_next.reserve(m_size);\n\t}\n\n\tuint32_t computeHash(const Key &key) const\n\t{\n\t\tH hash;\n\t\treturn hash(key) & (m_numSlots - 1);\n\t}\n\n\tuint32_t find(const Key &key, uint32_t current) const\n\t{\n\t\tE equal;\n\t\twhile (current != UINT32_MAX) {\n\t\t\tif (equal(m_keys[current], key))\n\t\t\t\treturn current;\n\t\t\tcurrent = m_next[current];\n\t\t}\n\t\treturn current;\n\t}\n\n\tint m_memTag;\n\tuint32_t m_size;\n\tuint32_t m_numSlots;\n\tuint32_t *m_slots;\n\tArray<Key> m_keys;\n\tArray<uint32_t> m_next;\n};\n\ntemplate<typename T>\nstatic void insertionSort(T *data, uint32_t length)\n{\n\tfor (int32_t i = 1; i < (int32_t)length; i++) {\n\t\tT x = data[i];\n\t\tint32_t j = i - 1;\n\t\twhile (j >= 0 && x < data[j]) {\n\t\t\tdata[j + 1] = data[j];\n\t\t\tj--;\n\t\t}\n\t\tdata[j + 1] = x;\n\t}\n}\n\nclass KISSRng\n{\npublic:\n\tKISSRng() { reset(); }\n\n\tvoid reset()\n\t{\n\t\tx = 123456789;\n\t\ty = 362436000;\n\t\tz = 521288629;\n\t\tc = 7654321;\n\t}\n\n\tuint32_t getRange(uint32_t range)\n\t{\n\t\tif (range == 0)\n\t\t\treturn 0;\n\t\tx = 69069 * x + 12345;\n\t\ty ^= (y << 13);\n\t\ty ^= (y >> 17);\n\t\ty ^= (y << 5);\n\t\tuint64_t t = 698769069ULL * z + c;\n\t\tc = (t >> 32);\n\t\treturn (x + y + (z = (uint32_t)t)) % (range + 1);\n\t}\n\nprivate:\n\tuint32_t x, y, z, c;\n};\n\n// Based on Pierre Terdiman's and Michael Herf's source code.\n// http://www.codercorner.com/RadixSortRevisited.htm\n// http://www.stereopsis.com/radix.html\nclass RadixSort\n{\npublic:\n\tvoid sort(ConstArrayView<float> input)\n\t{\n\t\tif (input.length == 0) {\n\t\t\tm_buffer1.clear();\n\t\t\tm_buffer2.clear();\n\t\t\tm_ranks = m_buffer1.data();\n\t\t\tm_ranks2 = m_buffer2.data();\n\t\t\treturn;\n\t\t}\n\t\t// Resize lists if needed\n\t\tm_buffer1.resize(input.length);\n\t\tm_buffer2.resize(input.length);\n\t\tm_ranks = m_buffer1.data();\n\t\tm_ranks2 = m_buffer2.data();\n\t\tm_validRanks = false;\n\t\tif (input.length < 32)\n\t\t\tinsertionSort(input);\n\t\telse {\n\t\t\t// @@ Avoid touching the input multiple times.\n\t\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\t\tfloatFlip((uint32_t &)input[i]);\n\t\t\t}\n\t\t\tradixSort(ConstArrayView<uint32_t>((const uint32_t *)input.data, input.length));\n\t\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\t\tifloatFlip((uint32_t &)input[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Access to results. m_ranks is a list of indices in sorted order, i.e. in the order you may further process your data\n\tconst uint32_t *ranks() const\n\t{\n\t\tXA_DEBUG_ASSERT(m_validRanks);\n\t\treturn m_ranks;\n\t}\n\nprivate:\n\tuint32_t *m_ranks, *m_ranks2;\n\tArray<uint32_t> m_buffer1, m_buffer2;\n\tbool m_validRanks = false;\n\n\tvoid floatFlip(uint32_t &f)\n\t{\n\t\tint32_t mask = (int32_t(f) >> 31) | 0x80000000; // Warren Hunt, Manchor Ko.\n\t\tf ^= mask;\n\t}\n\n\tvoid ifloatFlip(uint32_t &f)\n\t{\n\t\tuint32_t mask = ((f >> 31) - 1) | 0x80000000; // Michael Herf.\n\t\tf ^= mask;\n\t}\n\n\tvoid createHistograms(ConstArrayView<uint32_t> input, uint32_t *histogram)\n\t{\n\t\tconst uint32_t bucketCount = sizeof(uint32_t);\n\t\t// Init bucket pointers.\n\t\tuint32_t *h[bucketCount];\n\t\tfor (uint32_t i = 0; i < bucketCount; i++) {\n\t\t\th[i] = histogram + 256 * i;\n\t\t}\n\t\t// Clear histograms.\n\t\tmemset(histogram, 0, 256 * bucketCount * sizeof(uint32_t));\n\t\t// @@ Add support for signed integers.\n\t\t// Build histograms.\n\t\tconst uint8_t *p = (const uint8_t *)input.data;  // @@ Does this break aliasing rules?\n\t\tconst uint8_t *pe = p + input.length * sizeof(uint32_t);\n\t\twhile (p != pe) {\n\t\t\th[0][*p++]++, h[1][*p++]++, h[2][*p++]++, h[3][*p++]++;\n\t\t}\n\t}\n\n\tvoid insertionSort(ConstArrayView<float> input)\n\t{\n\t\tif (!m_validRanks) {\n\t\t\tm_ranks[0] = 0;\n\t\t\tfor (uint32_t i = 1; i != input.length; ++i) {\n\t\t\t\tint rank = m_ranks[i] = i;\n\t\t\t\tuint32_t j = i;\n\t\t\t\twhile (j != 0 && input[rank] < input[m_ranks[j - 1]]) {\n\t\t\t\t\tm_ranks[j] = m_ranks[j - 1];\n\t\t\t\t\t--j;\n\t\t\t\t}\n\t\t\t\tif (i != j) {\n\t\t\t\t\tm_ranks[j] = rank;\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_validRanks = true;\n\t\t} else {\n\t\t\tfor (uint32_t i = 1; i != input.length; ++i) {\n\t\t\t\tint rank = m_ranks[i];\n\t\t\t\tuint32_t j = i;\n\t\t\t\twhile (j != 0 && input[rank] < input[m_ranks[j - 1]]) {\n\t\t\t\t\tm_ranks[j] = m_ranks[j - 1];\n\t\t\t\t\t--j;\n\t\t\t\t}\n\t\t\t\tif (i != j) {\n\t\t\t\t\tm_ranks[j] = rank;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid radixSort(ConstArrayView<uint32_t> input)\n\t{\n\t\tconst uint32_t P = sizeof(uint32_t); // pass count\n\t\t// Allocate histograms & offsets on the stack\n\t\tuint32_t histogram[256 * P];\n\t\tuint32_t *link[256];\n\t\tcreateHistograms(input, histogram);\n\t\t// Radix sort, j is the pass number (0=LSB, P=MSB)\n\t\tfor (uint32_t j = 0; j < P; j++) {\n\t\t\t// Pointer to this bucket.\n\t\t\tconst uint32_t *h = &histogram[j * 256];\n\t\t\tauto inputBytes = (const uint8_t *)input.data; // @@ Is this aliasing legal?\n\t\t\tinputBytes += j;\n\t\t\tif (h[inputBytes[0]] == input.length) {\n\t\t\t\t// Skip this pass, all values are the same.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Create offsets\n\t\t\tlink[0] = m_ranks2;\n\t\t\tfor (uint32_t i = 1; i < 256; i++) link[i] = link[i - 1] + h[i - 1];\n\t\t\t// Perform Radix Sort\n\t\t\tif (!m_validRanks) {\n\t\t\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\t\t\t*link[inputBytes[i * P]]++ = i;\n\t\t\t\t}\n\t\t\t\tm_validRanks = true;\n\t\t\t} else {\n\t\t\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\t\t\tconst uint32_t idx = m_ranks[i];\n\t\t\t\t\t*link[inputBytes[idx * P]]++ = idx;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Swap pointers for next pass. Valid indices - the most recent ones - are in m_ranks after the swap.\n\t\t\tswap(m_ranks, m_ranks2);\n\t\t}\n\t\t// All values were equal, generate linear ranks.\n\t\tif (!m_validRanks) {\n\t\t\tfor (uint32_t i = 0; i < input.length; i++)\n\t\t\t\tm_ranks[i] = i;\n\t\t\tm_validRanks = true;\n\t\t}\n\t}\n};\n\n// Wrapping this in a class allows temporary arrays to be re-used.\nclass BoundingBox2D\n{\npublic:\n\tVector2 majorAxis, minorAxis, minCorner, maxCorner;\n\n\tvoid clear()\n\t{\n\t\tm_boundaryVertices.clear();\n\t}\n\n\tvoid appendBoundaryVertex(Vector2 v)\n\t{\n\t\tm_boundaryVertices.push_back(v);\n\t}\n\n\t// This should compute convex hull and use rotating calipers to find the best box. Currently it uses a brute force method.\n\t// If vertices are empty, the boundary vertices are used.\n\tvoid compute(ConstArrayView<Vector2> vertices = ConstArrayView<Vector2>())\n\t{\n\t\tXA_DEBUG_ASSERT(!m_boundaryVertices.isEmpty());\n\t\tif (vertices.length == 0)\n\t\t\tvertices = m_boundaryVertices;\n\t\tconvexHull(m_boundaryVertices, m_hull, 0.00001f);\n\t\t// @@ Ideally I should use rotating calipers to find the best box. Using brute force for now.\n\t\tfloat best_area = FLT_MAX;\n\t\tVector2 best_min(0);\n\t\tVector2 best_max(0);\n\t\tVector2 best_axis(0);\n\t\tconst uint32_t hullCount = m_hull.size();\n\t\tfor (uint32_t i = 0, j = hullCount - 1; i < hullCount; j = i, i++) {\n\t\t\tif (equal(m_hull[i], m_hull[j], kEpsilon))\n\t\t\t\tcontinue;\n\t\t\tVector2 axis = normalize(m_hull[i] - m_hull[j]);\n\t\t\tXA_DEBUG_ASSERT(isFinite(axis));\n\t\t\t// Compute bounding box.\n\t\t\tVector2 box_min(FLT_MAX, FLT_MAX);\n\t\t\tVector2 box_max(-FLT_MAX, -FLT_MAX);\n\t\t\t// Consider all points, not only boundary points, in case the input chart is malformed.\n\t\t\tfor (uint32_t v = 0; v < vertices.length; v++) {\n\t\t\t\tconst Vector2 &point = vertices[v];\n\t\t\t\tconst float x = dot(axis, point);\n\t\t\t\tconst float y = dot(Vector2(-axis.y, axis.x), point);\n\t\t\t\tbox_min.x = min(box_min.x, x);\n\t\t\t\tbox_max.x = max(box_max.x, x);\n\t\t\t\tbox_min.y = min(box_min.y, y);\n\t\t\t\tbox_max.y = max(box_max.y, y);\n\t\t\t}\n\t\t\t// Compute box area.\n\t\t\tconst float area = (box_max.x - box_min.x) * (box_max.y - box_min.y);\n\t\t\tif (area < best_area) {\n\t\t\t\tbest_area = area;\n\t\t\t\tbest_min = box_min;\n\t\t\t\tbest_max = box_max;\n\t\t\t\tbest_axis = axis;\n\t\t\t}\n\t\t}\n\t\tmajorAxis = best_axis;\n\t\tminorAxis = Vector2(-best_axis.y, best_axis.x);\n\t\tminCorner = best_min;\n\t\tmaxCorner = best_max;\n\t\tXA_ASSERT(isFinite(majorAxis) && isFinite(minorAxis) && isFinite(minCorner));\n\t}\n\nprivate:\n\t// Compute the convex hull using Graham Scan.\n\tvoid convexHull(ConstArrayView<Vector2> input, Array<Vector2> &output, float epsilon)\n\t{\n\t\tm_coords.resize(input.length);\n\t\tfor (uint32_t i = 0; i < input.length; i++)\n\t\t\tm_coords[i] = input[i].x;\n\t\tm_radix.sort(m_coords);\n\t\tconst uint32_t *ranks = m_radix.ranks();\n\t\tm_top.clear();\n\t\tm_bottom.clear();\n\t\tm_top.reserve(input.length);\n\t\tm_bottom.reserve(input.length);\n\t\tVector2 P = input[ranks[0]];\n\t\tVector2 Q = input[ranks[input.length - 1]];\n\t\tfloat topy = max(P.y, Q.y);\n\t\tfloat boty = min(P.y, Q.y);\n\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\tVector2 p = input[ranks[i]];\n\t\t\tif (p.y >= boty)\n\t\t\t\tm_top.push_back(p);\n\t\t}\n\t\tfor (uint32_t i = 0; i < input.length; i++) {\n\t\t\tVector2 p = input[ranks[input.length - 1 - i]];\n\t\t\tif (p.y <= topy)\n\t\t\t\tm_bottom.push_back(p);\n\t\t}\n\t\t// Filter top list.\n\t\toutput.clear();\n\t\tXA_DEBUG_ASSERT(m_top.size() >= 2);\n\t\toutput.push_back(m_top[0]);\n\t\toutput.push_back(m_top[1]);\n\t\tfor (uint32_t i = 2; i < m_top.size(); ) {\n\t\t\tVector2 a = output[output.size() - 2];\n\t\t\tVector2 b = output[output.size() - 1];\n\t\t\tVector2 c = m_top[i];\n\t\t\tfloat area = triangleArea(a, b, c);\n\t\t\tif (area >= -epsilon)\n\t\t\t\toutput.pop_back();\n\t\t\tif (area < -epsilon || output.size() == 1) {\n\t\t\t\toutput.push_back(c);\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\tuint32_t top_count = output.size();\n\t\tXA_DEBUG_ASSERT(m_bottom.size() >= 2);\n\t\toutput.push_back(m_bottom[1]);\n\t\t// Filter bottom list.\n\t\tfor (uint32_t i = 2; i < m_bottom.size(); ) {\n\t\t\tVector2 a = output[output.size() - 2];\n\t\t\tVector2 b = output[output.size() - 1];\n\t\t\tVector2 c = m_bottom[i];\n\t\t\tfloat area = triangleArea(a, b, c);\n\t\t\tif (area >= -epsilon)\n\t\t\t\toutput.pop_back();\n\t\t\tif (area < -epsilon || output.size() == top_count) {\n\t\t\t\toutput.push_back(c);\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\t// Remove duplicate element.\n\t\tXA_DEBUG_ASSERT(output.size() > 0);\n\t\toutput.pop_back();\n\t}\n\n\tArray<Vector2> m_boundaryVertices;\n\tArray<float> m_coords;\n\tArray<Vector2> m_top, m_bottom, m_hull;\n\tRadixSort m_radix;\n};\n\nstruct EdgeKey\n{\n\tEdgeKey(const EdgeKey &k) : v0(k.v0), v1(k.v1) {}\n\tEdgeKey(uint32_t _v0, uint32_t _v1) : v0(_v0), v1(_v1) {}\n\tbool operator==(const EdgeKey &k) const { return v0 == k.v0 && v1 == k.v1; }\n\n\tuint32_t v0;\n\tuint32_t v1;\n};\n\nstruct EdgeHash\n{\n\tuint32_t operator()(const EdgeKey &k) const { return k.v0 * 32768u + k.v1; }\n};\n\nstatic uint32_t meshEdgeFace(uint32_t edge) { return edge / 3; }\nstatic uint32_t meshEdgeIndex0(uint32_t edge) { return edge; }\n\nstatic uint32_t meshEdgeIndex1(uint32_t edge)\n{\n\tconst uint32_t faceFirstEdge = edge / 3 * 3;\n\treturn faceFirstEdge + (edge - faceFirstEdge + 1) % 3;\n}\n\nstruct MeshFlags\n{\n\tenum\n\t{\n\t\tHasIgnoredFaces = 1<<0,\n\t\tHasNormals = 1<<1,\n\t\tHasMaterials = 1<<2\n\t};\n};\n\nclass Mesh\n{\npublic:\n\tMesh(float epsilon, uint32_t approxVertexCount, uint32_t approxFaceCount, uint32_t flags = 0, uint32_t id = UINT32_MAX) : m_epsilon(epsilon), m_flags(flags), m_id(id), m_faceIgnore(MemTag::Mesh), m_faceMaterials(MemTag::Mesh), m_indices(MemTag::MeshIndices), m_positions(MemTag::MeshPositions), m_normals(MemTag::MeshNormals), m_texcoords(MemTag::MeshTexcoords), m_nextColocalVertex(MemTag::MeshColocals), m_firstColocalVertex(MemTag::MeshColocals), m_boundaryEdges(MemTag::MeshBoundaries), m_oppositeEdges(MemTag::MeshBoundaries), m_edgeMap(MemTag::MeshEdgeMap, approxFaceCount * 3)\n\t{\n\t\tm_indices.reserve(approxFaceCount * 3);\n\t\tm_positions.reserve(approxVertexCount);\n\t\tm_texcoords.reserve(approxVertexCount);\n\t\tif (m_flags & MeshFlags::HasIgnoredFaces)\n\t\t\tm_faceIgnore.reserve(approxFaceCount);\n\t\tif (m_flags & MeshFlags::HasNormals)\n\t\t\tm_normals.reserve(approxVertexCount);\n\t\tif (m_flags & MeshFlags::HasMaterials)\n\t\t\tm_faceMaterials.reserve(approxFaceCount);\n\t}\n\n\tuint32_t flags() const { return m_flags; }\n\tuint32_t id() const { return m_id; }\n\n\tvoid addVertex(const Vector3 &pos, const Vector3 &normal = Vector3(0.0f), const Vector2 &texcoord = Vector2(0.0f))\n\t{\n\t\tXA_DEBUG_ASSERT(isFinite(pos));\n\t\tm_positions.push_back(pos);\n\t\tif (m_flags & MeshFlags::HasNormals)\n\t\t\tm_normals.push_back(normal);\n\t\tm_texcoords.push_back(texcoord);\n\t}\n\n\tvoid addFace(const uint32_t *indices, bool ignore = false, uint32_t material = UINT32_MAX)\n\t{\n\t\tif (m_flags & MeshFlags::HasIgnoredFaces)\n\t\t\tm_faceIgnore.push_back(ignore);\n\t\tif (m_flags & MeshFlags::HasMaterials)\n\t\t\tm_faceMaterials.push_back(material);\n\t\tconst uint32_t firstIndex = m_indices.size();\n\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\tm_indices.push_back(indices[i]);\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tconst uint32_t vertex0 = m_indices[firstIndex + i];\n\t\t\tconst uint32_t vertex1 = m_indices[firstIndex + (i + 1) % 3];\n\t\t\tm_edgeMap.add(EdgeKey(vertex0, vertex1));\n\t\t}\n\t}\n\n\tvoid createColocalsBVH()\n\t{\n\t\tconst uint32_t vertexCount = m_positions.size();\n\t\tArray<AABB> aabbs(MemTag::BVH);\n\t\taabbs.resize(vertexCount);\n\t\tfor (uint32_t i = 0; i < m_positions.size(); i++)\n\t\t\taabbs[i] = AABB(m_positions[i], m_epsilon);\n\t\tBVH bvh(aabbs);\n\t\tArray<uint32_t> colocals(MemTag::MeshColocals);\n\t\tArray<uint32_t> potential(MemTag::MeshColocals);\n\t\tm_nextColocalVertex.resize(vertexCount);\n\t\tm_nextColocalVertex.fillBytes(0xff);\n\t\tm_firstColocalVertex.resize(vertexCount);\n\t\tm_firstColocalVertex.fillBytes(0xff);\n\t\tfor (uint32_t i = 0; i < vertexCount; i++) {\n\t\t\tif (m_nextColocalVertex[i] != UINT32_MAX)\n\t\t\t\tcontinue; // Already linked.\n\t\t\t// Find other vertices colocal to this one.\n\t\t\tcolocals.clear();\n\t\t\tcolocals.push_back(i); // Always add this vertex.\n\t\t\tbvh.query(AABB(m_positions[i], m_epsilon), potential);\n\t\t\tfor (uint32_t j = 0; j < potential.size(); j++) {\n\t\t\t\tconst uint32_t otherVertex = potential[j];\n\t\t\t\tif (otherVertex != i && equal(m_positions[i], m_positions[otherVertex], m_epsilon) && m_nextColocalVertex[otherVertex] == UINT32_MAX)\n\t\t\t\t\tcolocals.push_back(otherVertex);\n\t\t\t}\n\t\t\tif (colocals.size() == 1) {\n\t\t\t\t// No colocals for this vertex.\n\t\t\t\tm_nextColocalVertex[i] = i;\n\t\t\t\tm_firstColocalVertex[i] = i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Link in ascending order.\n\t\t\tinsertionSort(colocals.data(), colocals.size());\n\t\t\tfor (uint32_t j = 0; j < colocals.size(); j++) {\n\t\t\t\tm_nextColocalVertex[colocals[j]] = colocals[(j + 1) % colocals.size()];\n\t\t\t\tm_firstColocalVertex[colocals[j]] = colocals[0];\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(m_nextColocalVertex[i] != UINT32_MAX);\n\t\t}\n\t}\n\n\tvoid createColocalsHash()\n\t{\n\t\tconst uint32_t vertexCount = m_positions.size();\n\t\tHashMap<Vector3> positionToVertexMap(MemTag::Default, vertexCount);\n\t\tfor (uint32_t i = 0; i < vertexCount; i++)\n\t\t\tpositionToVertexMap.add(m_positions[i]);\n\t\tArray<uint32_t> colocals(MemTag::MeshColocals);\n\t\tm_nextColocalVertex.resize(vertexCount);\n\t\tm_nextColocalVertex.fillBytes(0xff);\n\t\tm_firstColocalVertex.resize(vertexCount);\n\t\tm_firstColocalVertex.fillBytes(0xff);\n\t\tfor (uint32_t i = 0; i < vertexCount; i++) {\n\t\t\tif (m_nextColocalVertex[i] != UINT32_MAX)\n\t\t\t\tcontinue; // Already linked.\n\t\t\t// Find other vertices colocal to this one.\n\t\t\tcolocals.clear();\n\t\t\tcolocals.push_back(i); // Always add this vertex.\n\t\t\tuint32_t otherVertex = positionToVertexMap.get(m_positions[i]);\n\t\t\twhile (otherVertex != UINT32_MAX) {\n\t\t\t\tif (otherVertex != i && equal(m_positions[i], m_positions[otherVertex], m_epsilon) && m_nextColocalVertex[otherVertex] == UINT32_MAX)\n\t\t\t\t\tcolocals.push_back(otherVertex);\n\t\t\t\totherVertex = positionToVertexMap.getNext(m_positions[i], otherVertex);\n\t\t\t}\n\t\t\tif (colocals.size() == 1) {\n\t\t\t\t// No colocals for this vertex.\n\t\t\t\tm_nextColocalVertex[i] = i;\n\t\t\t\tm_firstColocalVertex[i] = i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Link in ascending order.\n\t\t\tinsertionSort(colocals.data(), colocals.size());\n\t\t\tfor (uint32_t j = 0; j < colocals.size(); j++) {\n\t\t\t\tm_nextColocalVertex[colocals[j]] = colocals[(j + 1) % colocals.size()];\n\t\t\t\tm_firstColocalVertex[colocals[j]] = colocals[0];\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(m_nextColocalVertex[i] != UINT32_MAX);\n\t\t}\n\t}\n\n\tvoid createColocals()\n\t{\n\t\tif (m_epsilon <= FLT_EPSILON)\n\t\t\tcreateColocalsHash();\n\t\telse\n\t\t\tcreateColocalsBVH();\n\t}\n\n\tvoid createBoundaries()\n\t{\n\t\tconst uint32_t edgeCount = m_indices.size();\n\t\tconst uint32_t vertexCount = m_positions.size();\n\t\tm_oppositeEdges.resize(edgeCount);\n\t\tm_boundaryEdges.reserve(uint32_t(edgeCount * 0.1f));\n\t\tm_isBoundaryVertex.resize(vertexCount);\n\t\tm_isBoundaryVertex.zeroOutMemory();\n\t\tfor (uint32_t i = 0; i < edgeCount; i++)\n\t\t\tm_oppositeEdges[i] = UINT32_MAX;\n\t\tconst uint32_t faceCount = m_indices.size() / 3;\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tif (isFaceIgnored(i))\n\t\t\t\tcontinue;\n\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\tconst uint32_t edge = i * 3 + j;\n\t\t\t\tconst uint32_t vertex0 = m_indices[edge];\n\t\t\t\tconst uint32_t vertex1 = m_indices[i * 3 + (j + 1) % 3];\n\t\t\t\t// If there is an edge with opposite winding to this one, the edge isn't on a boundary.\n\t\t\t\tconst uint32_t oppositeEdge = findEdge(vertex1, vertex0);\n\t\t\t\tif (oppositeEdge != UINT32_MAX) {\n\t\t\t\t\tm_oppositeEdges[edge] = oppositeEdge;\n\t\t\t\t} else {\n\t\t\t\t\tm_boundaryEdges.push_back(edge);\n\t\t\t\t\tm_isBoundaryVertex.set(vertex0);\n\t\t\t\t\tm_isBoundaryVertex.set(vertex1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/// Find edge, test all colocals.\n\tuint32_t findEdge(uint32_t vertex0, uint32_t vertex1) const\n\t{\n\t\t// Try to find exact vertex match first.\n\t\t{\n\t\t\tEdgeKey key(vertex0, vertex1);\n\t\t\tuint32_t edge = m_edgeMap.get(key);\n\t\t\twhile (edge != UINT32_MAX) {\n\t\t\t\t// Don't find edges of ignored faces.\n\t\t\t\tif (!isFaceIgnored(meshEdgeFace(edge)))\n\t\t\t\t\treturn edge;\n\t\t\t\tedge = m_edgeMap.getNext(key, edge);\n\t\t\t}\n\t\t}\n\t\t// If colocals were created, try every permutation.\n\t\tif (!m_nextColocalVertex.isEmpty()) {\n\t\t\tuint32_t colocalVertex0 = vertex0;\n\t\t\tfor (;;) {\n\t\t\t\tuint32_t colocalVertex1 = vertex1;\n\t\t\t\tfor (;;) {\n\t\t\t\t\tEdgeKey key(colocalVertex0, colocalVertex1);\n\t\t\t\t\tuint32_t edge = m_edgeMap.get(key);\n\t\t\t\t\twhile (edge != UINT32_MAX) {\n\t\t\t\t\t\t// Don't find edges of ignored faces.\n\t\t\t\t\t\tif (!isFaceIgnored(meshEdgeFace(edge)))\n\t\t\t\t\t\t\treturn edge;\n\t\t\t\t\t\tedge = m_edgeMap.getNext(key, edge);\n\t\t\t\t\t}\n\t\t\t\t\tcolocalVertex1 = m_nextColocalVertex[colocalVertex1];\n\t\t\t\t\tif (colocalVertex1 == vertex1)\n\t\t\t\t\t\tbreak; // Back to start.\n\t\t\t\t}\n\t\t\t\tcolocalVertex0 = m_nextColocalVertex[colocalVertex0];\n\t\t\t\tif (colocalVertex0 == vertex0)\n\t\t\t\t\tbreak; // Back to start.\n\t\t\t}\n\t\t}\n\t\treturn UINT32_MAX;\n\t}\n\n\t// Edge map can be destroyed when no longer used to reduce memory usage. It's used by:\n\t//   * Mesh::createBoundaries()\n\t//   * Mesh::edgeMap() (used by MeshFaceGroups)\n\tvoid destroyEdgeMap()\n\t{\n\t\tm_edgeMap.destroy();\n\t}\n\n#if XA_DEBUG_EXPORT_OBJ\n\tvoid writeObjVertices(FILE *file) const\n\t{\n\t\tfor (uint32_t i = 0; i < m_positions.size(); i++)\n\t\t\tfprintf(file, \"v %g %g %g\\n\", m_positions[i].x, m_positions[i].y, m_positions[i].z);\n\t\tif (m_flags & MeshFlags::HasNormals) {\n\t\t\tfor (uint32_t i = 0; i < m_normals.size(); i++)\n\t\t\t\tfprintf(file, \"vn %g %g %g\\n\", m_normals[i].x, m_normals[i].y, m_normals[i].z);\n\t\t}\n\t\tfor (uint32_t i = 0; i < m_texcoords.size(); i++)\n\t\t\tfprintf(file, \"vt %g %g\\n\", m_texcoords[i].x, m_texcoords[i].y);\n\t}\n\n\tvoid writeObjFace(FILE *file, uint32_t face, uint32_t offset = 0) const\n\t{\n\t\tfprintf(file, \"f \");\n\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\tconst uint32_t index = m_indices[face * 3 + j] + 1 + offset; // 1-indexed\n\t\t\tfprintf(file, \"%d/%d/%d%c\", index, index, index, j == 2 ? '\\n' : ' ');\n\t\t}\n\t}\n\n\tvoid writeObjBoundaryEges(FILE *file) const\n\t{\n\t\tif (m_oppositeEdges.isEmpty())\n\t\t\treturn; // Boundaries haven't been created.\n\t\tfprintf(file, \"o boundary_edges\\n\");\n\t\tfor (uint32_t i = 0; i < edgeCount(); i++) {\n\t\t\tif (m_oppositeEdges[i] != UINT32_MAX)\n\t\t\t\tcontinue;\n\t\t\tfprintf(file, \"l %d %d\\n\", m_indices[meshEdgeIndex0(i)] + 1, m_indices[meshEdgeIndex1(i)] + 1); // 1-indexed\n\t\t}\n\t}\n\n\tvoid writeObjFile(const char *filename) const\n\t{\n\t\tFILE *file;\n\t\tXA_FOPEN(file, filename, \"w\");\n\t\tif (!file)\n\t\t\treturn;\n\t\twriteObjVertices(file);\n\t\tfprintf(file, \"s off\\n\");\n\t\tfprintf(file, \"o object\\n\");\n\t\tfor (uint32_t i = 0; i < faceCount(); i++)\n\t\t\twriteObjFace(file, i);\n\t\twriteObjBoundaryEges(file);\n\t\tfclose(file);\n\t}\n#endif\n\n\tfloat computeSurfaceArea() const\n\t{\n\t\tfloat area = 0;\n\t\tfor (uint32_t f = 0; f < faceCount(); f++)\n\t\t\tarea += computeFaceArea(f);\n\t\tXA_DEBUG_ASSERT(area >= 0);\n\t\treturn area;\n\t}\n\n\t// Returned value is always positive, even if some triangles are flipped.\n\tfloat computeParametricArea() const\n\t{\n\t\tfloat area = 0;\n\t\tfor (uint32_t f = 0; f < faceCount(); f++)\n\t\t\tarea += fabsf(computeFaceParametricArea(f)); // May be negative, depends on texcoord winding.\n\t\treturn area;\n\t}\n\n\tfloat computeFaceArea(uint32_t face) const\n\t{\n\t\tconst Vector3 &p0 = m_positions[m_indices[face * 3 + 0]];\n\t\tconst Vector3 &p1 = m_positions[m_indices[face * 3 + 1]];\n\t\tconst Vector3 &p2 = m_positions[m_indices[face * 3 + 2]];\n\t\treturn length(cross(p1 - p0, p2 - p0)) * 0.5f;\n\t}\n\n\tVector3 computeFaceCentroid(uint32_t face) const\n\t{\n\t\tVector3 sum(0.0f);\n\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\tsum += m_positions[m_indices[face * 3 + i]];\n\t\treturn sum / 3.0f;\n\t}\n\n\t// Average of the edge midpoints weighted by the edge length.\n\t// I want a point inside the triangle, but closer to the cirumcenter.\n\tVector3 computeFaceCenter(uint32_t face) const\n\t{\n\t\tconst Vector3 &p0 = m_positions[m_indices[face * 3 + 0]];\n\t\tconst Vector3 &p1 = m_positions[m_indices[face * 3 + 1]];\n\t\tconst Vector3 &p2 = m_positions[m_indices[face * 3 + 2]];\n\t\tconst float l0 = length(p1 - p0);\n\t\tconst float l1 = length(p2 - p1);\n\t\tconst float l2 = length(p0 - p2);\n\t\tconst Vector3 m0 = (p0 + p1) * l0 / (l0 + l1 + l2);\n\t\tconst Vector3 m1 = (p1 + p2) * l1 / (l0 + l1 + l2);\n\t\tconst Vector3 m2 = (p2 + p0) * l2 / (l0 + l1 + l2);\n\t\treturn m0 + m1 + m2;\n\t}\n\n\tVector3 computeFaceNormal(uint32_t face) const\n\t{\n\t\tconst Vector3 &p0 = m_positions[m_indices[face * 3 + 0]];\n\t\tconst Vector3 &p1 = m_positions[m_indices[face * 3 + 1]];\n\t\tconst Vector3 &p2 = m_positions[m_indices[face * 3 + 2]];\n\t\tconst Vector3 e0 = p2 - p0;\n\t\tconst Vector3 e1 = p1 - p0;\n\t\tconst Vector3 normalAreaScaled = cross(e0, e1);\n\t\treturn normalizeSafe(normalAreaScaled, Vector3(0, 0, 1));\n\t}\n\n\tfloat computeFaceParametricArea(uint32_t face) const\n\t{\n\t\tconst Vector2 &t0 = m_texcoords[m_indices[face * 3 + 0]];\n\t\tconst Vector2 &t1 = m_texcoords[m_indices[face * 3 + 1]];\n\t\tconst Vector2 &t2 = m_texcoords[m_indices[face * 3 + 2]];\n\t\treturn triangleArea(t0, t1, t2);\n\t}\n\n\t// @@ This is not exactly accurate, we should compare the texture coordinates...\n\tbool isSeam(uint32_t edge) const\n\t{\n\t\tconst uint32_t oppositeEdge = m_oppositeEdges[edge];\n\t\tif (oppositeEdge == UINT32_MAX)\n\t\t\treturn false; // boundary edge\n\t\tconst uint32_t e0 = meshEdgeIndex0(edge);\n\t\tconst uint32_t e1 = meshEdgeIndex1(edge);\n\t\tconst uint32_t oe0 = meshEdgeIndex0(oppositeEdge);\n\t\tconst uint32_t oe1 = meshEdgeIndex1(oppositeEdge);\n\t\treturn m_indices[e0] != m_indices[oe1] || m_indices[e1] != m_indices[oe0];\n\t}\n\n\tbool isTextureSeam(uint32_t edge) const\n\t{\n\t\tconst uint32_t oppositeEdge = m_oppositeEdges[edge];\n\t\tif (oppositeEdge == UINT32_MAX)\n\t\t\treturn false; // boundary edge\n\t\tconst uint32_t e0 = meshEdgeIndex0(edge);\n\t\tconst uint32_t e1 = meshEdgeIndex1(edge);\n\t\tconst uint32_t oe0 = meshEdgeIndex0(oppositeEdge);\n\t\tconst uint32_t oe1 = meshEdgeIndex1(oppositeEdge);\n\t\treturn m_texcoords[m_indices[e0]] != m_texcoords[m_indices[oe1]] || m_texcoords[m_indices[e1]] != m_texcoords[m_indices[oe0]];\n\t}\n\n\tuint32_t firstColocalVertex(uint32_t vertex) const\n\t{\n\t\tXA_DEBUG_ASSERT(m_firstColocalVertex.size() == m_positions.size());\n\t\treturn m_firstColocalVertex[vertex];\n\t}\n\n\tXA_INLINE float epsilon() const { return m_epsilon; }\n\tXA_INLINE uint32_t edgeCount() const { return m_indices.size(); }\n\tXA_INLINE uint32_t oppositeEdge(uint32_t edge) const { return m_oppositeEdges[edge]; }\n\tXA_INLINE bool isBoundaryEdge(uint32_t edge) const { return m_oppositeEdges[edge] == UINT32_MAX; }\n\tXA_INLINE const Array<uint32_t> &boundaryEdges() const { return m_boundaryEdges; }\n\tXA_INLINE bool isBoundaryVertex(uint32_t vertex) const { return m_isBoundaryVertex.get(vertex); }\n\tXA_INLINE uint32_t vertexCount() const { return m_positions.size(); }\n\tXA_INLINE uint32_t vertexAt(uint32_t i) const { return m_indices[i]; }\n\tXA_INLINE const Vector3 &position(uint32_t vertex) const { return m_positions[vertex]; }\n\tXA_INLINE ConstArrayView<Vector3> positions() const { return m_positions; }\n\tXA_INLINE const Vector3 &normal(uint32_t vertex) const { XA_DEBUG_ASSERT(m_flags & MeshFlags::HasNormals); return m_normals[vertex]; }\n\tXA_INLINE const Vector2 &texcoord(uint32_t vertex) const { return m_texcoords[vertex]; }\n\tXA_INLINE Vector2 &texcoord(uint32_t vertex) { return m_texcoords[vertex]; }\n\tXA_INLINE const ConstArrayView<Vector2> texcoords() const { return m_texcoords; }\n\tXA_INLINE ArrayView<Vector2> texcoords() { return m_texcoords; }\n\tXA_INLINE uint32_t faceCount() const { return m_indices.size() / 3; }\n\tXA_INLINE ConstArrayView<uint32_t> indices() const { return m_indices; }\n\tXA_INLINE uint32_t indexCount() const { return m_indices.size(); }\n\tXA_INLINE bool isFaceIgnored(uint32_t face) const { return (m_flags & MeshFlags::HasIgnoredFaces) && m_faceIgnore[face]; }\n\tXA_INLINE uint32_t faceMaterial(uint32_t face) const { return (m_flags & MeshFlags::HasMaterials) ? m_faceMaterials[face] : UINT32_MAX; }\n\tXA_INLINE const HashMap<EdgeKey, EdgeHash> &edgeMap() const { return m_edgeMap; }\n\nprivate:\n\n\tfloat m_epsilon;\n\tuint32_t m_flags;\n\tuint32_t m_id;\n\tArray<bool> m_faceIgnore;\n\tArray<uint32_t> m_faceMaterials;\n\tArray<uint32_t> m_indices;\n\tArray<Vector3> m_positions;\n\tArray<Vector3> m_normals;\n\tArray<Vector2> m_texcoords;\n\n\t// Populated by createColocals\n\tArray<uint32_t> m_nextColocalVertex; // In: vertex index. Out: the vertex index of the next colocal position.\n\tArray<uint32_t> m_firstColocalVertex;\n\n\t// Populated by createBoundaries\n\tBitArray m_isBoundaryVertex;\n\tArray<uint32_t> m_boundaryEdges;\n\tArray<uint32_t> m_oppositeEdges; // In: edge index. Out: the index of the opposite edge (i.e. wound the opposite direction). UINT32_MAX if the input edge is a boundary edge.\n\n\tHashMap<EdgeKey, EdgeHash> m_edgeMap;\n\npublic:\n\tclass FaceEdgeIterator\n\t{\n\tpublic:\n\t\tFaceEdgeIterator (const Mesh *mesh, uint32_t face) : m_mesh(mesh), m_face(face), m_relativeEdge(0)\n\t\t{\n\t\t\tm_edge = m_face * 3;\n\t\t}\n\n\t\tvoid advance()\n\t\t{\n\t\t\tif (m_relativeEdge < 3) {\n\t\t\t\tm_edge++;\n\t\t\t\tm_relativeEdge++;\n\t\t\t}\n\t\t}\n\n\t\tbool isDone() const\n\t\t{\n\t\t\treturn m_relativeEdge == 3;\n\t\t}\n\n\t\tbool isBoundary() const { return m_mesh->m_oppositeEdges[m_edge] == UINT32_MAX; }\n\t\tbool isSeam() const { return m_mesh->isSeam(m_edge); }\n\t\tbool isTextureSeam() const { return m_mesh->isTextureSeam(m_edge); }\n\t\tuint32_t edge() const { return m_edge; }\n\t\tuint32_t relativeEdge() const { return m_relativeEdge; }\n\t\tuint32_t face() const { return m_face; }\n\t\tuint32_t oppositeEdge() const { return m_mesh->m_oppositeEdges[m_edge]; }\n\n\t\tuint32_t oppositeFace() const\n\t\t{\n\t\t\tconst uint32_t oedge = m_mesh->m_oppositeEdges[m_edge];\n\t\t\tif (oedge == UINT32_MAX)\n\t\t\t\treturn UINT32_MAX;\n\t\t\treturn meshEdgeFace(oedge);\n\t\t}\n\n\t\tuint32_t vertex0() const { return m_mesh->m_indices[m_face * 3 + m_relativeEdge]; }\n\t\tuint32_t vertex1() const { return m_mesh->m_indices[m_face * 3 + (m_relativeEdge + 1) % 3]; }\n\t\tconst Vector3 &position0() const { return m_mesh->m_positions[vertex0()]; }\n\t\tconst Vector3 &position1() const { return m_mesh->m_positions[vertex1()]; }\n\t\tconst Vector3 &normal0() const { return m_mesh->m_normals[vertex0()]; }\n\t\tconst Vector3 &normal1() const { return m_mesh->m_normals[vertex1()]; }\n\t\tconst Vector2 &texcoord0() const { return m_mesh->m_texcoords[vertex0()]; }\n\t\tconst Vector2 &texcoord1() const { return m_mesh->m_texcoords[vertex1()]; }\n\n\tprivate:\n\t\tconst Mesh *m_mesh;\n\t\tuint32_t m_face;\n\t\tuint32_t m_edge;\n\t\tuint32_t m_relativeEdge;\n\t};\n};\n\nstruct MeshFaceGroups\n{\n\ttypedef uint32_t Handle;\n\tstatic constexpr Handle kInvalid = UINT32_MAX;\n\n\tMeshFaceGroups(const Mesh *mesh) : m_mesh(mesh), m_groups(MemTag::Mesh), m_firstFace(MemTag::Mesh), m_nextFace(MemTag::Mesh), m_faceCount(MemTag::Mesh) {}\n\tXA_INLINE Handle groupAt(uint32_t face) const { return m_groups[face]; }\n\tXA_INLINE uint32_t groupCount() const { return m_faceCount.size(); }\n\tXA_INLINE uint32_t nextFace(uint32_t face) const { return m_nextFace[face]; }\n\tXA_INLINE uint32_t faceCount(uint32_t group) const { return m_faceCount[group]; }\n\n\tvoid compute()\n\t{\n\t\tm_groups.resize(m_mesh->faceCount());\n\t\tm_groups.fillBytes(0xff); // Set all faces to kInvalid\n\t\tuint32_t firstUnassignedFace = 0;\n\t\tHandle group = 0;\n\t\tArray<uint32_t> growFaces;\n\t\tconst uint32_t n = m_mesh->faceCount();\n\t\tm_nextFace.resize(n);\n\t\tfor (;;) {\n\t\t\t// Find an unassigned face.\n\t\t\tuint32_t face = UINT32_MAX;\n\t\t\tfor (uint32_t f = firstUnassignedFace; f < n; f++) {\n\t\t\t\tif (m_groups[f] == kInvalid && !m_mesh->isFaceIgnored(f)) {\n\t\t\t\t\tface = f;\n\t\t\t\t\tfirstUnassignedFace = f + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (face == UINT32_MAX)\n\t\t\t\tbreak; // All faces assigned to a group (except ignored faces).\n\t\t\tm_groups[face] = group;\n\t\t\tm_nextFace[face] = UINT32_MAX;\n\t\t\tm_firstFace.push_back(face);\n\t\t\tgrowFaces.clear();\n\t\t\tgrowFaces.push_back(face);\n\t\t\tuint32_t prevFace = face, groupFaceCount = 1;\n\t\t\t// Find faces connected to the face and assign them to the same group as the face, unless they are already assigned to another group.\n\t\t\tfor (;;) {\n\t\t\t\tif (growFaces.isEmpty())\n\t\t\t\t\tbreak;\n\t\t\t\tconst uint32_t f = growFaces.back();\n\t\t\t\tgrowFaces.pop_back();\n\t\t\t\tconst uint32_t material = m_mesh->faceMaterial(f);\n\t\t\t\tfor (Mesh::FaceEdgeIterator edgeIt(m_mesh, f); !edgeIt.isDone(); edgeIt.advance()) {\n\t\t\t\t\tconst uint32_t oppositeEdge = m_mesh->findEdge(edgeIt.vertex1(), edgeIt.vertex0());\n\t\t\t\t\tif (oppositeEdge == UINT32_MAX)\n\t\t\t\t\t\tcontinue; // Boundary edge.\n\t\t\t\t\tconst uint32_t oppositeFace = meshEdgeFace(oppositeEdge);\n\t\t\t\t\tif (m_mesh->isFaceIgnored(oppositeFace))\n\t\t\t\t\t\tcontinue; // Don't add ignored faces to group.\n\t\t\t\t\tif (m_mesh->faceMaterial(oppositeFace) != material)\n\t\t\t\t\t\tcontinue; // Different material.\n\t\t\t\t\tif (m_groups[oppositeFace] != kInvalid)\n\t\t\t\t\t\tcontinue; // Connected face is already assigned to another group.\n\t\t\t\t\tm_groups[oppositeFace] = group;\n\t\t\t\t\tm_nextFace[oppositeFace] = UINT32_MAX;\n\t\t\t\t\tif (prevFace != UINT32_MAX)\n\t\t\t\t\t\tm_nextFace[prevFace] = oppositeFace;\n\t\t\t\t\tprevFace = oppositeFace;\n\t\t\t\t\tgroupFaceCount++;\n\t\t\t\t\tgrowFaces.push_back(oppositeFace);\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_faceCount.push_back(groupFaceCount);\n\t\t\tgroup++;\n\t\t\tXA_ASSERT(group < kInvalid);\n\t\t}\n\t}\n\n\tclass Iterator\n\t{\n\tpublic:\n\t\tIterator(const MeshFaceGroups *meshFaceGroups, Handle group) : m_meshFaceGroups(meshFaceGroups)\n\t\t{\n\t\t\tXA_DEBUG_ASSERT(group != kInvalid);\n\t\t\tm_current = m_meshFaceGroups->m_firstFace[group];\n\t\t}\n\n\t\tvoid advance()\n\t\t{\n\t\t\tm_current = m_meshFaceGroups->m_nextFace[m_current];\n\t\t}\n\n\t\tbool isDone() const\n\t\t{\n\t\t\treturn m_current == UINT32_MAX;\n\t\t}\n\n\t\tuint32_t face() const\n\t\t{\n\t\t\treturn m_current;\n\t\t}\n\n\tprivate:\n\t\tconst MeshFaceGroups *m_meshFaceGroups;\n\t\tuint32_t m_current;\n\t};\n\nprivate:\n\tconst Mesh *m_mesh;\n\tArray<Handle> m_groups;\n\tArray<uint32_t> m_firstFace;\n\tArray<uint32_t> m_nextFace; // In: face. Out: the next face in the same group.\n\tArray<uint32_t> m_faceCount; // In: face group. Out: number of faces in the group.\n};\n\nconstexpr MeshFaceGroups::Handle MeshFaceGroups::kInvalid;\n\n#if XA_CHECK_T_JUNCTIONS\nstatic bool lineIntersectsPoint(const Vector3 &point, const Vector3 &lineStart, const Vector3 &lineEnd, float *t, float epsilon)\n{\n\tfloat tt;\n\tif (!t)\n\t\tt = &tt;\n\t*t = 0.0f;\n\tif (equal(lineStart, point, epsilon) || equal(lineEnd, point, epsilon))\n\t\treturn false; // Vertex lies on either line vertices.\n\tconst Vector3 v01 = point - lineStart;\n\tconst Vector3 v21 = lineEnd - lineStart;\n\tconst float l = length(v21);\n\tconst float d = length(cross(v01, v21)) / l;\n\tif (!isZero(d, epsilon))\n\t\treturn false;\n\t*t = dot(v01, v21) / (l * l);\n\treturn *t > kEpsilon && *t < 1.0f - kEpsilon;\n}\n\n// Returns the number of T-junctions found.\nstatic int meshCheckTJunctions(const Mesh &inputMesh)\n{\n\tint count = 0;\n\tconst uint32_t vertexCount = inputMesh.vertexCount();\n\tconst uint32_t edgeCount = inputMesh.edgeCount();\n\tfor (uint32_t v = 0; v < vertexCount; v++) {\n\t\tif (!inputMesh.isBoundaryVertex(v))\n\t\t\tcontinue;\n\t\t// Find edges that this vertex overlaps with.\n\t\tconst Vector3 &pos = inputMesh.position(v);\n\t\tfor (uint32_t e = 0; e < edgeCount; e++) {\n\t\t\tif (!inputMesh.isBoundaryEdge(e))\n\t\t\t\tcontinue;\n\t\t\tconst Vector3 &edgePos1 = inputMesh.position(inputMesh.vertexAt(meshEdgeIndex0(e)));\n\t\t\tconst Vector3 &edgePos2 = inputMesh.position(inputMesh.vertexAt(meshEdgeIndex1(e)));\n\t\t\tfloat t;\n\t\t\tif (lineIntersectsPoint(pos, edgePos1, edgePos2, &t, inputMesh.epsilon()))\n\t\t\t\tcount++;\n\t\t}\n\t}\n\treturn count;\n}\n#endif\n\n// References invalid faces and vertices in a mesh.\nstruct InvalidMeshGeometry\n{\n\t// If meshFaceGroups is not null, invalid faces have the face group MeshFaceGroups::kInvalid.\n\t// If meshFaceGroups is null, invalid faces are Mesh::isFaceIgnored.\n\tvoid extract(const Mesh *mesh, const MeshFaceGroups *meshFaceGroups)\n\t{\n\t\t// Copy invalid faces.\n\t\tm_faces.clear();\n\t\tconst uint32_t meshFaceCount = mesh->faceCount();\n\t\tfor (uint32_t f = 0; f < meshFaceCount; f++) {\n\t\t\tif ((meshFaceGroups && meshFaceGroups->groupAt(f) == MeshFaceGroups::kInvalid) || (!meshFaceGroups && mesh->isFaceIgnored(f)))\n\t\t\t\tm_faces.push_back(f);\n\t\t}\n\t\t// Create *unique* list of vertices of invalid faces.\n\t\tconst uint32_t faceCount = m_faces.size();\n\t\tm_indices.resize(faceCount * 3);\n\t\tconst uint32_t approxVertexCount = min(faceCount * 3, mesh->vertexCount());\n\t\tm_vertexToSourceVertexMap.clear();\n\t\tm_vertexToSourceVertexMap.reserve(approxVertexCount);\n\t\tHashMap<uint32_t, PassthroughHash<uint32_t>> sourceVertexToVertexMap(MemTag::Mesh, approxVertexCount);\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tconst uint32_t face = m_faces[f];\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = mesh->vertexAt(face * 3 + i);\n\t\t\t\tuint32_t newVertex = sourceVertexToVertexMap.get(vertex);\n\t\t\t\tif (newVertex == UINT32_MAX) {\n\t\t\t\t\tnewVertex = sourceVertexToVertexMap.add(vertex);\n\t\t\t\t\tm_vertexToSourceVertexMap.push_back(vertex);\n\t\t\t\t}\n\t\t\t\tm_indices[f * 3 + i] = newVertex;\n\t\t\t}\n\t\t}\n\t}\n\n\tConstArrayView<uint32_t> faces() const { return m_faces; }\n\tConstArrayView<uint32_t> indices() const { return m_indices; }\n\tConstArrayView<uint32_t> vertices() const { return m_vertexToSourceVertexMap; }\n\nprivate:\n\tArray<uint32_t> m_faces, m_indices;\n\tArray<uint32_t> m_vertexToSourceVertexMap; // Map face vertices to vertices of the source mesh.\n};\n\nstruct Progress\n{\n\tProgress(ProgressCategory category, ProgressFunc func, void *userData, uint32_t maxValue) : cancel(false), m_category(category), m_func(func), m_userData(userData), m_value(0), m_maxValue(maxValue), m_percent(0)\n\t{\n\t\tif (m_func) {\n\t\t\tif (!m_func(category, 0, userData))\n\t\t\t\tcancel = true;\n\t\t}\n\t}\n\n\t~Progress()\n\t{\n\t\tif (m_func) {\n\t\t\tif (!m_func(m_category, 100, m_userData))\n\t\t\t\tcancel = true;\n\t\t}\n\t}\n\n\tvoid increment(uint32_t value)\n\t{\n\t\tm_value += value;\n\t\tupdate();\n\t}\n\n\tvoid setMaxValue(uint32_t maxValue)\n\t{\n\t\tm_maxValue = maxValue;\n\t\tupdate();\n\t}\n\n\tstd::atomic<bool> cancel;\n\nprivate:\n\tvoid update()\n\t{\n\t\tif (!m_func)\n\t\t\treturn;\n\t\tconst uint32_t newPercent = uint32_t(ceilf(m_value.load() / (float)m_maxValue.load() * 100.0f));\n\t\tif (newPercent != m_percent) {\n\t\t\t// Atomic max.\n\t\t\tuint32_t oldPercent = m_percent;\n\t\t\twhile (oldPercent < newPercent && !m_percent.compare_exchange_weak(oldPercent, newPercent)) {}\n\t\t\tif (!m_func(m_category, m_percent, m_userData))\n\t\t\t\tcancel = true;\n\t\t}\n\t}\n\n\tProgressCategory m_category;\n\tProgressFunc m_func;\n\tvoid *m_userData;\n\tstd::atomic<uint32_t> m_value, m_maxValue, m_percent;\n};\n\nstruct Spinlock\n{\n\tvoid lock() { while(m_lock.test_and_set(std::memory_order_acquire)) {} }\n\tvoid unlock() { m_lock.clear(std::memory_order_release); }\n\nprivate:\n\tstd::atomic_flag m_lock = ATOMIC_FLAG_INIT;\n};\n\nstruct TaskGroupHandle\n{\n\tuint32_t value = UINT32_MAX;\n};\n\nstruct Task\n{\n\tvoid (*func)(void *groupUserData, void *taskUserData);\n\tvoid *userData; // Passed to func as taskUserData.\n};\n\n#if XA_MULTITHREADED\nclass TaskScheduler\n{\npublic:\n\tTaskScheduler() : m_shutdown(false)\n\t{\n\t\tm_threadIndex = 0;\n\t\t// Max with current task scheduler usage is 1 per thread + 1 deep nesting, but allow for some slop.\n\t\tm_maxGroups = std::thread::hardware_concurrency() * 4;\n\t\tm_groups = XA_ALLOC_ARRAY(MemTag::Default, TaskGroup, m_maxGroups);\n\t\tfor (uint32_t i = 0; i < m_maxGroups; i++) {\n\t\t\tnew (&m_groups[i]) TaskGroup();\n\t\t\tm_groups[i].free = true;\n\t\t\tm_groups[i].ref = 0;\n\t\t\tm_groups[i].userData = nullptr;\n\t\t}\n\t\tm_workers.resize(std::thread::hardware_concurrency() <= 1 ? 1 : std::thread::hardware_concurrency() - 1);\n\t\tfor (uint32_t i = 0; i < m_workers.size(); i++) {\n\t\t\tnew (&m_workers[i]) Worker();\n\t\t\tm_workers[i].wakeup = false;\n\t\t\tm_workers[i].thread = XA_NEW_ARGS(MemTag::Default, std::thread, workerThread, this, &m_workers[i], i + 1);\n\t\t}\n\t}\n\n\t~TaskScheduler()\n\t{\n\t\tm_shutdown = true;\n\t\tfor (uint32_t i = 0; i < m_workers.size(); i++) {\n\t\t\tWorker &worker = m_workers[i];\n\t\t\tXA_DEBUG_ASSERT(worker.thread);\n\t\t\tworker.wakeup = true;\n\t\t\tworker.cv.notify_one();\n\t\t\tif (worker.thread->joinable())\n\t\t\t\tworker.thread->join();\n\t\t\tworker.thread->~thread();\n\t\t\tXA_FREE(worker.thread);\n\t\t\tworker.~Worker();\n\t\t}\n\t\tfor (uint32_t i = 0; i < m_maxGroups; i++)\n\t\t\tm_groups[i].~TaskGroup();\n\t\tXA_FREE(m_groups);\n\t}\n\n\tuint32_t threadCount() const\n\t{\n\t\treturn max(1u, std::thread::hardware_concurrency()); // Including the main thread.\n\t}\n\n\t// userData is passed to Task::func as groupUserData.\n\tTaskGroupHandle createTaskGroup(void *userData = nullptr, uint32_t reserveSize = 0)\n\t{\n\t\t// Claim the first free group.\n\t\tfor (uint32_t i = 0; i < m_maxGroups; i++) {\n\t\t\tTaskGroup &group = m_groups[i];\n\t\t\tbool expected = true;\n\t\t\tif (!group.free.compare_exchange_strong(expected, false))\n\t\t\t\tcontinue;\n\t\t\tgroup.queueLock.lock();\n\t\t\tgroup.queueHead = 0;\n\t\t\tgroup.queue.clear();\n\t\t\tgroup.queue.reserve(reserveSize);\n\t\t\tgroup.queueLock.unlock();\n\t\t\tgroup.userData = userData;\n\t\t\tgroup.ref = 0;\n\t\t\tTaskGroupHandle handle;\n\t\t\thandle.value = i;\n\t\t\treturn handle;\n\t\t}\n\t\tXA_DEBUG_ASSERT(false);\n\t\tTaskGroupHandle handle;\n\t\thandle.value = UINT32_MAX;\n\t\treturn handle;\n\t}\n\n\tvoid run(TaskGroupHandle handle, const Task &task)\n\t{\n\t\tXA_DEBUG_ASSERT(handle.value != UINT32_MAX);\n\t\tTaskGroup &group = m_groups[handle.value];\n\t\tgroup.queueLock.lock();\n\t\tgroup.queue.push_back(task);\n\t\tgroup.queueLock.unlock();\n\t\tgroup.ref++;\n\t\t// Wake up a worker to run this task.\n\t\tfor (uint32_t i = 0; i < m_workers.size(); i++) {\n\t\t\tm_workers[i].wakeup = true;\n\t\t\tm_workers[i].cv.notify_one();\n\t\t}\n\t}\n\n\tvoid wait(TaskGroupHandle *handle)\n\t{\n\t\tif (handle->value == UINT32_MAX) {\n\t\t\tXA_DEBUG_ASSERT(false);\n\t\t\treturn;\n\t\t}\n\t\t// Run tasks from the group queue until empty.\n\t\tTaskGroup &group = m_groups[handle->value];\n\t\tfor (;;) {\n\t\t\tTask *task = nullptr;\n\t\t\tgroup.queueLock.lock();\n\t\t\tif (group.queueHead < group.queue.size())\n\t\t\t\ttask = &group.queue[group.queueHead++];\n\t\t\tgroup.queueLock.unlock();\n\t\t\tif (!task)\n\t\t\t\tbreak;\n\t\t\ttask->func(group.userData, task->userData);\n\t\t\tgroup.ref--;\n\t\t}\n\t\t// Even though the task queue is empty, workers can still be running tasks.\n\t\twhile (group.ref > 0)\n\t\t\tstd::this_thread::yield();\n\t\tgroup.free = true;\n\t\thandle->value = UINT32_MAX;\n\t}\n\n\tstatic uint32_t currentThreadIndex() { return m_threadIndex; }\n\nprivate:\n\tstruct TaskGroup\n\t{\n\t\tstd::atomic<bool> free;\n\t\tArray<Task> queue; // Items are never removed. queueHead is incremented to pop items.\n\t\tuint32_t queueHead = 0;\n\t\tSpinlock queueLock;\n\t\tstd::atomic<uint32_t> ref; // Increment when a task is enqueued, decrement when a task finishes.\n\t\tvoid *userData;\n\t};\n\n\tstruct Worker\n\t{\n\t\tstd::thread *thread = nullptr;\n\t\tstd::mutex mutex;\n\t\tstd::condition_variable cv;\n\t\tstd::atomic<bool> wakeup;\n\t};\n\n\tTaskGroup *m_groups;\n\tArray<Worker> m_workers;\n\tstd::atomic<bool> m_shutdown;\n\tuint32_t m_maxGroups;\n\tstatic thread_local uint32_t m_threadIndex;\n\n\tstatic void workerThread(TaskScheduler *scheduler, Worker *worker, uint32_t threadIndex)\n\t{\n\t\tm_threadIndex = threadIndex;\n\t\tstd::unique_lock<std::mutex> lock(worker->mutex);\n\t\tfor (;;) {\n\t\t\tworker->cv.wait(lock, [=]{ return worker->wakeup.load(); });\n\t\t\tworker->wakeup = false;\n\t\t\tfor (;;) {\n\t\t\t\tif (scheduler->m_shutdown)\n\t\t\t\t\treturn;\n\t\t\t\t// Look for a task in any of the groups and run it.\n\t\t\t\tTaskGroup *group = nullptr;\n\t\t\t\tTask *task = nullptr;\n\t\t\t\tfor (uint32_t i = 0; i < scheduler->m_maxGroups; i++) {\n\t\t\t\t\tgroup = &scheduler->m_groups[i];\n\t\t\t\t\tif (group->free || group->ref == 0)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tgroup->queueLock.lock();\n\t\t\t\t\tif (group->queueHead < group->queue.size()) {\n\t\t\t\t\t\ttask = &group->queue[group->queueHead++];\n\t\t\t\t\t\tgroup->queueLock.unlock();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tgroup->queueLock.unlock();\n\t\t\t\t}\n\t\t\t\tif (!task)\n\t\t\t\t\tbreak;\n\t\t\t\ttask->func(group->userData, task->userData);\n\t\t\t\tgroup->ref--;\n\t\t\t}\n\t\t}\n\t}\n};\n\nthread_local uint32_t TaskScheduler::m_threadIndex;\n#else\nclass TaskScheduler\n{\npublic:\n\t~TaskScheduler()\n\t{\n\t\tfor (uint32_t i = 0; i < m_groups.size(); i++)\n\t\t\tdestroyGroup({ i });\n\t}\n\n\tuint32_t threadCount() const\n\t{\n\t\treturn 1;\n\t}\n\n\tTaskGroupHandle createTaskGroup(void *userData = nullptr, uint32_t reserveSize = 0)\n\t{\n\t\tTaskGroup *group = XA_NEW(MemTag::Default, TaskGroup);\n\t\tgroup->queue.reserve(reserveSize);\n\t\tgroup->userData = userData;\n\t\tm_groups.push_back(group);\n\t\tTaskGroupHandle handle;\n\t\thandle.value = m_groups.size() - 1;\n\t\treturn handle;\n\t}\n\n\tvoid run(TaskGroupHandle handle, Task task)\n\t{\n\t\tm_groups[handle.value]->queue.push_back(task);\n\t}\n\n\tvoid wait(TaskGroupHandle *handle)\n\t{\n\t\tif (handle->value == UINT32_MAX) {\n\t\t\tXA_DEBUG_ASSERT(false);\n\t\t\treturn;\n\t\t}\n\t\tTaskGroup *group = m_groups[handle->value];\n\t\tfor (uint32_t i = 0; i < group->queue.size(); i++)\n\t\t\tgroup->queue[i].func(group->userData, group->queue[i].userData);\n\t\tgroup->queue.clear();\n\t\tdestroyGroup(*handle);\n\t\thandle->value = UINT32_MAX;\n\t}\n\n\tstatic uint32_t currentThreadIndex() { return 0; }\n\nprivate:\n\tvoid destroyGroup(TaskGroupHandle handle)\n\t{\n\t\tTaskGroup *group = m_groups[handle.value];\n\t\tif (group) {\n\t\t\tgroup->~TaskGroup();\n\t\t\tXA_FREE(group);\n\t\t\tm_groups[handle.value] = nullptr;\n\t\t}\n\t}\n\n\tstruct TaskGroup\n\t{\n\t\tArray<Task> queue;\n\t\tvoid *userData;\n\t};\n\n\tArray<TaskGroup *> m_groups;\n};\n#endif\n\n#if XA_DEBUG_EXPORT_TGA\nconst uint8_t TGA_TYPE_RGB = 2;\nconst uint8_t TGA_ORIGIN_UPPER = 0x20;\n\n#pragma pack(push, 1)\nstruct TgaHeader\n{\n\tuint8_t id_length;\n\tuint8_t colormap_type;\n\tuint8_t image_type;\n\tuint16_t colormap_index;\n\tuint16_t colormap_length;\n\tuint8_t colormap_size;\n\tuint16_t x_origin;\n\tuint16_t y_origin;\n\tuint16_t width;\n\tuint16_t height;\n\tuint8_t pixel_size;\n\tuint8_t flags;\n\tenum { Size = 18 };\n};\n#pragma pack(pop)\n\nstatic void WriteTga(const char *filename, const uint8_t *data, uint32_t width, uint32_t height)\n{\n\tXA_DEBUG_ASSERT(sizeof(TgaHeader) == TgaHeader::Size);\n\tFILE *f;\n\tXA_FOPEN(f, filename, \"wb\");\n\tif (!f)\n\t\treturn;\n\tTgaHeader tga;\n\ttga.id_length = 0;\n\ttga.colormap_type = 0;\n\ttga.image_type = TGA_TYPE_RGB;\n\ttga.colormap_index = 0;\n\ttga.colormap_length = 0;\n\ttga.colormap_size = 0;\n\ttga.x_origin = 0;\n\ttga.y_origin = 0;\n\ttga.width = (uint16_t)width;\n\ttga.height = (uint16_t)height;\n\ttga.pixel_size = 24;\n\ttga.flags = TGA_ORIGIN_UPPER;\n\tfwrite(&tga, sizeof(TgaHeader), 1, f);\n\tfwrite(data, sizeof(uint8_t), width * height * 3, f);\n\tfclose(f);\n}\n#endif\n\ntemplate<typename T>\nclass ThreadLocal\n{\npublic:\n\tThreadLocal()\n\t{\n#if XA_MULTITHREADED\n\t\tconst uint32_t n = std::thread::hardware_concurrency();\n#else\n\t\tconst uint32_t n = 1;\n#endif\n\t\tm_array = XA_ALLOC_ARRAY(MemTag::Default, T, n);\n\t\tfor (uint32_t i = 0; i < n; i++)\n\t\t\tnew (&m_array[i]) T;\n\t}\n\n\t~ThreadLocal()\n\t{\n#if XA_MULTITHREADED\n\t\tconst uint32_t n = std::thread::hardware_concurrency();\n#else\n\t\tconst uint32_t n = 1;\n#endif\n\t\tfor (uint32_t i = 0; i < n; i++)\n\t\t\tm_array[i].~T();\n\t\tXA_FREE(m_array);\n\t}\n\n\tT &get() const\n\t{\n\t\treturn m_array[TaskScheduler::currentThreadIndex()];\n\t}\n\nprivate:\n\tT *m_array;\n};\n\n// Implemented as a struct so the temporary arrays can be reused.\nstruct Triangulator\n{\n\t// This is doing a simple ear-clipping algorithm that skips invalid triangles. Ideally, we should\n\t// also sort the ears by angle, start with the ones that have the smallest angle and proceed in order.\n\tvoid triangulatePolygon(ConstArrayView<Vector3> vertices, ConstArrayView<uint32_t> inputIndices, Array<uint32_t> &outputIndices)\n\t{\n\t\tm_polygonVertices.clear();\n\t\tm_polygonVertices.reserve(inputIndices.length);\n\t\toutputIndices.clear();\n\t\tif (inputIndices.length == 3) {\n\t\t\t// Simple case for triangles.\n\t\t\toutputIndices.push_back(inputIndices[0]);\n\t\t\toutputIndices.push_back(inputIndices[1]);\n\t\t\toutputIndices.push_back(inputIndices[2]);\n\t\t}\n\t\telse {\n\t\t\t// Build 2D polygon projecting vertices onto normal plane.\n\t\t\t// Faces are not necesarily planar, this is for example the case, when the face comes from filling a hole. In such cases\n\t\t\t// it's much better to use the best fit plane.\n\t\t\tBasis basis;\n\t\t\tbasis.normal = normalize(cross(vertices[inputIndices[1]] - vertices[inputIndices[0]], vertices[inputIndices[2]] - vertices[inputIndices[1]]));\n\t\t\tbasis.tangent = basis.computeTangent(basis.normal);\n\t\t\tbasis.bitangent = basis.computeBitangent(basis.normal, basis.tangent);\n\t\t\tconst uint32_t edgeCount = inputIndices.length;\n\t\t\tm_polygonPoints.clear();\n\t\t\tm_polygonPoints.reserve(edgeCount);\n\t\t\tm_polygonAngles.clear();\n\t\t\tm_polygonAngles.reserve(edgeCount);\n\t\t\tfor (uint32_t i = 0; i < inputIndices.length; i++) {\n\t\t\t\tm_polygonVertices.push_back(inputIndices[i]);\n\t\t\t\tconst Vector3 &pos = vertices[inputIndices[i]];\n\t\t\t\tm_polygonPoints.push_back(Vector2(dot(basis.tangent, pos), dot(basis.bitangent, pos)));\n\t\t\t}\n\t\t\tm_polygonAngles.resize(edgeCount);\n\t\t\twhile (m_polygonVertices.size() > 2) {\n\t\t\t\tconst uint32_t size = m_polygonVertices.size();\n\t\t\t\t// Update polygon angles. @@ Update only those that have changed.\n\t\t\t\tfloat minAngle = kPi2;\n\t\t\t\tuint32_t bestEar = 0; // Use first one if none of them is valid.\n\t\t\t\tbool bestIsValid = false;\n\t\t\t\tfor (uint32_t i = 0; i < size; i++) {\n\t\t\t\t\tuint32_t i0 = i;\n\t\t\t\t\tuint32_t i1 = (i + 1) % size; // Use Sean's polygon interation trick.\n\t\t\t\t\tuint32_t i2 = (i + 2) % size;\n\t\t\t\t\tVector2 p0 = m_polygonPoints[i0];\n\t\t\t\t\tVector2 p1 = m_polygonPoints[i1];\n\t\t\t\t\tVector2 p2 = m_polygonPoints[i2];\n\t\t\t\t\tfloat d = clamp(dot(p0 - p1, p2 - p1) / (length(p0 - p1) * length(p2 - p1)), -1.0f, 1.0f);\n\t\t\t\t\tfloat angle = acosf(d);\n\t\t\t\t\tfloat area = triangleArea(p0, p1, p2);\n\t\t\t\t\tif (area < 0.0f)\n\t\t\t\t\t\tangle = kPi2 - angle;\n\t\t\t\t\tm_polygonAngles[i1] = angle;\n\t\t\t\t\tif (angle < minAngle || !bestIsValid) {\n\t\t\t\t\t\t// Make sure this is a valid ear, if not, skip this point.\n\t\t\t\t\t\tbool valid = true;\n\t\t\t\t\t\tfor (uint32_t j = 0; j < size; j++) {\n\t\t\t\t\t\t\tif (j == i0 || j == i1 || j == i2)\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\tVector2 p = m_polygonPoints[j];\n\t\t\t\t\t\t\tif (pointInTriangle(p, p0, p1, p2)) {\n\t\t\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (valid || !bestIsValid) {\n\t\t\t\t\t\t\tminAngle = angle;\n\t\t\t\t\t\t\tbestEar = i1;\n\t\t\t\t\t\t\tbestIsValid = valid;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Clip best ear:\n\t\t\t\tconst uint32_t i0 = (bestEar + size - 1) % size;\n\t\t\t\tconst uint32_t i1 = (bestEar + 0) % size;\n\t\t\t\tconst uint32_t i2 = (bestEar + 1) % size;\n\t\t\t\toutputIndices.push_back(m_polygonVertices[i0]);\n\t\t\t\toutputIndices.push_back(m_polygonVertices[i1]);\n\t\t\t\toutputIndices.push_back(m_polygonVertices[i2]);\n\t\t\t\tm_polygonVertices.removeAt(i1);\n\t\t\t\tm_polygonPoints.removeAt(i1);\n\t\t\t\tm_polygonAngles.removeAt(i1);\n\t\t\t}\n\t\t}\n\t}\n\nprivate:\n\tstatic bool pointInTriangle(const Vector2 &p, const Vector2 &a, const Vector2 &b, const Vector2 &c)\n\t{\n\t\treturn triangleArea(a, b, p) >= kAreaEpsilon && triangleArea(b, c, p) >= kAreaEpsilon && triangleArea(c, a, p) >= kAreaEpsilon;\n\t}\n\n\tArray<int> m_polygonVertices;\n\tArray<float> m_polygonAngles;\n\tArray<Vector2> m_polygonPoints;\n};\n\nclass UniformGrid2\n{\npublic:\n\t// indices are optional.\n\tvoid reset(ConstArrayView<Vector2> positions, ConstArrayView<uint32_t> indices = ConstArrayView<uint32_t>(), uint32_t reserveEdgeCount = 0)\n\t{\n\t\tm_edges.clear();\n\t\tif (reserveEdgeCount > 0)\n\t\t\tm_edges.reserve(reserveEdgeCount);\n\t\tm_positions = positions;\n\t\tm_indices = indices;\n\t\tm_cellDataOffsets.clear();\n\t}\n\n\tvoid append(uint32_t edge)\n\t{\n\t\tXA_DEBUG_ASSERT(m_cellDataOffsets.isEmpty());\n\t\tm_edges.push_back(edge);\n\t}\n\n\tbool intersect(Vector2 v1, Vector2 v2, float epsilon)\n\t{\n\t\tconst uint32_t edgeCount = m_edges.size();\n\t\tbool bruteForce = edgeCount <= 20;\n\t\tif (!bruteForce && m_cellDataOffsets.isEmpty())\n\t\t\tbruteForce = !createGrid();\n\t\tif (bruteForce) {\n\t\t\tfor (uint32_t j = 0; j < edgeCount; j++) {\n\t\t\t\tconst uint32_t edge = m_edges[j];\n\t\t\t\tif (linesIntersect(v1, v2, edgePosition0(edge), edgePosition1(edge), epsilon))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\tcomputePotentialEdges(v1, v2);\n\t\t\tuint32_t prevEdge = UINT32_MAX;\n\t\t\tfor (uint32_t j = 0; j < m_potentialEdges.size(); j++) {\n\t\t\t\tconst uint32_t edge = m_potentialEdges[j];\n\t\t\t\tif (edge == prevEdge)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (linesIntersect(v1, v2, edgePosition0(edge), edgePosition1(edge), epsilon))\n\t\t\t\t\treturn true;\n\t\t\t\tprevEdge = edge;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t// If edges is empty, checks for intersection with all edges in the grid.\n\tbool intersect(float epsilon, ConstArrayView<uint32_t> edges = ConstArrayView<uint32_t>(), ConstArrayView<uint32_t> ignoreEdges = ConstArrayView<uint32_t>())\n\t{\n\t\tbool bruteForce = m_edges.size() <= 20;\n\t\tif (!bruteForce && m_cellDataOffsets.isEmpty())\n\t\t\tbruteForce = !createGrid();\n\t\tconst uint32_t *edges1, *edges2 = nullptr;\n\t\tuint32_t edges1Count, edges2Count = 0;\n\t\tif (edges.length == 0) {\n\t\t\tedges1 = m_edges.data();\n\t\t\tedges1Count = m_edges.size();\n\t\t} else {\n\t\t\tedges1 = edges.data;\n\t\t\tedges1Count = edges.length;\n\t\t}\n\t\tif (bruteForce) {\n\t\t\tedges2 = m_edges.data();\n\t\t\tedges2Count = m_edges.size();\n\t\t}\n\t\tfor (uint32_t i = 0; i < edges1Count; i++) {\n\t\t\tconst uint32_t edge1 = edges1[i];\n\t\t\tconst uint32_t edge1Vertex[2] = { vertexAt(meshEdgeIndex0(edge1)), vertexAt(meshEdgeIndex1(edge1)) };\n\t\t\tconst Vector2 &edge1Position1 = m_positions[edge1Vertex[0]];\n\t\t\tconst Vector2 &edge1Position2 = m_positions[edge1Vertex[1]];\n\t\t\tconst Extents2 edge1Extents(edge1Position1, edge1Position2);\n\t\t\tuint32_t j = 0;\n\t\t\tif (bruteForce) {\n\t\t\t\t// If checking against self, test each edge pair only once.\n\t\t\t\tif (edges.length == 0) {\n\t\t\t\t\tj = i + 1;\n\t\t\t\t\tif (j == edges1Count)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcomputePotentialEdges(edgePosition0(edge1), edgePosition1(edge1));\n\t\t\t\tedges2 = m_potentialEdges.data();\n\t\t\t\tedges2Count = m_potentialEdges.size();\n\t\t\t}\n\t\t\tuint32_t prevEdge = UINT32_MAX; // Handle potential edges duplicates.\n\t\t\tfor (; j < edges2Count; j++) {\n\t\t\t\tconst uint32_t edge2 = edges2[j];\n\t\t\t\tif (edge1 == edge2)\n\t\t\t\t\tcontinue;\n\t\t\t\tif (edge2 == prevEdge)\n\t\t\t\t\tcontinue;\n\t\t\t\tprevEdge = edge2;\n\t\t\t\t// Check if edge2 is ignored.\n\t\t\t\tbool ignore = false;\n\t\t\t\tfor (uint32_t k = 0; k < ignoreEdges.length; k++) {\n\t\t\t\t\tif (edge2 == ignoreEdges[k]) {\n\t\t\t\t\t\tignore = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (ignore)\n\t\t\t\t\tcontinue;\n\t\t\t\tconst uint32_t edge2Vertex[2] = { vertexAt(meshEdgeIndex0(edge2)), vertexAt(meshEdgeIndex1(edge2)) };\n\t\t\t\t// Ignore connected edges, since they can't intersect (only overlap), and may be detected as false positives.\n\t\t\t\tif (edge1Vertex[0] == edge2Vertex[0] || edge1Vertex[0] == edge2Vertex[1] || edge1Vertex[1] == edge2Vertex[0] || edge1Vertex[1] == edge2Vertex[1])\n\t\t\t\t\tcontinue;\n\t\t\t\tconst Vector2 &edge2Position1 = m_positions[edge2Vertex[0]];\n\t\t\t\tconst Vector2 &edge2Position2 = m_positions[edge2Vertex[1]];\n\t\t\t\tif (!Extents2::intersect(edge1Extents, Extents2(edge2Position1, edge2Position2)))\n\t\t\t\t\tcontinue;\n\t\t\t\tif (linesIntersect(edge1Position1, edge1Position2, edge2Position1, edge2Position2, epsilon))\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n#if XA_DEBUG_EXPORT_BOUNDARY_GRID\n\tvoid debugExport(const char *filename)\n\t{\n\t\tArray<uint8_t> image;\n\t\timage.resize(m_gridWidth * m_gridHeight * 3);\n\t\tfor (uint32_t y = 0; y < m_gridHeight; y++) {\n\t\t\tfor (uint32_t x = 0; x < m_gridWidth; x++) {\n\t\t\t\tuint8_t *bgr = &image[(x + y * m_gridWidth) * 3];\n\t\t\t\tbgr[0] = bgr[1] = bgr[2] = 32;\n\t\t\t\tuint32_t offset = m_cellDataOffsets[x + y * m_gridWidth];\n\t\t\t\twhile (offset != UINT32_MAX) {\n\t\t\t\t\tconst uint32_t edge2 = m_cellData[offset];\n\t\t\t\t\tsrand(edge2);\n\t\t\t\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\t\t\t\tbgr[i] = uint8_t(bgr[i] * 0.5f + (rand() % 255) * 0.5f);\n\t\t\t\t\toffset = m_cellData[offset + 1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tWriteTga(filename, image.data(), m_gridWidth, m_gridHeight);\n\t}\n#endif\n\nprivate:\n\tbool createGrid()\n\t{\n\t\t// Compute edge extents. Min will be the grid origin.\n\t\tconst uint32_t edgeCount = m_edges.size();\n\t\tExtents2 edgeExtents;\n\t\tedgeExtents.reset();\n\t\tfor (uint32_t i = 0; i < edgeCount; i++) {\n\t\t\tconst uint32_t edge = m_edges[i];\n\t\t\tedgeExtents.add(edgePosition0(edge));\n\t\t\tedgeExtents.add(edgePosition1(edge));\n\t\t}\n\t\tm_gridOrigin = edgeExtents.min;\n\t\t// Size grid to approximately one edge per cell in the largest dimension.\n\t\tconst Vector2 extentsSize(edgeExtents.max - edgeExtents.min);\n\t\tm_cellSize = max(extentsSize.x, extentsSize.y) / (float)clamp(edgeCount, 32u, 512u);\n\t\tif (m_cellSize <= 0.0f)\n\t\t\treturn false;\n\t\tm_gridWidth = uint32_t(ceilf(extentsSize.x / m_cellSize));\n\t\tm_gridHeight = uint32_t(ceilf(extentsSize.y / m_cellSize));\n\t\tif (m_gridWidth <= 1 || m_gridHeight <= 1)\n\t\t\treturn false;\n\t\t// Insert edges into cells.\n\t\tm_cellDataOffsets.resize(m_gridWidth * m_gridHeight);\n\t\tfor (uint32_t i = 0; i < m_cellDataOffsets.size(); i++)\n\t\t\tm_cellDataOffsets[i] = UINT32_MAX;\n\t\tm_cellData.clear();\n\t\tm_cellData.reserve(edgeCount * 2);\n\t\tfor (uint32_t i = 0; i < edgeCount; i++) {\n\t\t\tconst uint32_t edge = m_edges[i];\n\t\t\ttraverse(edgePosition0(edge), edgePosition1(edge));\n\t\t\tXA_DEBUG_ASSERT(!m_traversedCellOffsets.isEmpty());\n\t\t\tfor (uint32_t j = 0; j < m_traversedCellOffsets.size(); j++) {\n\t\t\t\tconst uint32_t cell = m_traversedCellOffsets[j];\n\t\t\t\tuint32_t offset = m_cellDataOffsets[cell];\n\t\t\t\tif (offset == UINT32_MAX)\n\t\t\t\t\tm_cellDataOffsets[cell] = m_cellData.size();\n\t\t\t\telse {\n\t\t\t\t\tfor (;;) {\n\t\t\t\t\t\tuint32_t &nextOffset = m_cellData[offset + 1];\n\t\t\t\t\t\tif (nextOffset == UINT32_MAX) {\n\t\t\t\t\t\t\tnextOffset = m_cellData.size();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = nextOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tm_cellData.push_back(edge);\n\t\t\t\tm_cellData.push_back(UINT32_MAX);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tvoid computePotentialEdges(Vector2 p1, Vector2 p2)\n\t{\n\t\tm_potentialEdges.clear();\n\t\ttraverse(p1, p2);\n\t\tfor (uint32_t j = 0; j < m_traversedCellOffsets.size(); j++) {\n\t\t\tconst uint32_t cell = m_traversedCellOffsets[j];\n\t\t\tuint32_t offset = m_cellDataOffsets[cell];\n\t\t\twhile (offset != UINT32_MAX) {\n\t\t\t\tconst uint32_t edge2 = m_cellData[offset];\n\t\t\t\tm_potentialEdges.push_back(edge2);\n\t\t\t\toffset = m_cellData[offset + 1];\n\t\t\t}\n\t\t}\n\t\tif (m_potentialEdges.isEmpty())\n\t\t\treturn;\n\t\tinsertionSort(m_potentialEdges.data(), m_potentialEdges.size());\n\t}\n\n\t// \"A Fast Voxel Traversal Algorithm for Ray Tracing\"\n\tvoid traverse(Vector2 p1, Vector2 p2)\n\t{\n\t\tconst Vector2 dir = p2 - p1;\n\t\tconst Vector2 normal = normalizeSafe(dir, Vector2(0.0f));\n\t\tconst int stepX = dir.x >= 0 ? 1 : -1;\n\t\tconst int stepY = dir.y >= 0 ? 1 : -1;\n\t\tconst uint32_t firstCell[2] = { cellX(p1.x), cellY(p1.y) };\n\t\tconst uint32_t lastCell[2] = { cellX(p2.x), cellY(p2.y) };\n\t\tfloat distToNextCellX;\n\t\tif (stepX == 1)\n\t\t\tdistToNextCellX = (firstCell[0] + 1) * m_cellSize - (p1.x - m_gridOrigin.x);\n\t\telse\n\t\t\tdistToNextCellX = (p1.x - m_gridOrigin.x) - firstCell[0] * m_cellSize;\n\t\tfloat distToNextCellY;\n\t\tif (stepY == 1)\n\t\t\tdistToNextCellY = (firstCell[1] + 1) * m_cellSize - (p1.y - m_gridOrigin.y);\n\t\telse\n\t\t\tdistToNextCellY = (p1.y - m_gridOrigin.y) - firstCell[1] * m_cellSize;\n\t\tfloat tMaxX, tMaxY, tDeltaX, tDeltaY;\n\t\tif (normal.x > kEpsilon || normal.x < -kEpsilon) {\n\t\t\ttMaxX = (distToNextCellX * stepX) / normal.x;\n\t\t\ttDeltaX = (m_cellSize * stepX) / normal.x;\n\t\t}\n\t\telse\n\t\t\ttMaxX = tDeltaX = FLT_MAX;\n\t\tif (normal.y > kEpsilon || normal.y < -kEpsilon) {\n\t\t\ttMaxY = (distToNextCellY * stepY) / normal.y;\n\t\t\ttDeltaY = (m_cellSize * stepY) / normal.y;\n\t\t}\n\t\telse\n\t\t\ttMaxY = tDeltaY = FLT_MAX;\n\t\tm_traversedCellOffsets.clear();\n\t\tm_traversedCellOffsets.push_back(firstCell[0] + firstCell[1] * m_gridWidth);\n\t\tuint32_t currentCell[2] = { firstCell[0], firstCell[1] };\n\t\twhile (!(currentCell[0] == lastCell[0] && currentCell[1] == lastCell[1])) {\n\t\t\tif (tMaxX < tMaxY) {\n\t\t\t\ttMaxX += tDeltaX;\n\t\t\t\tcurrentCell[0] += stepX;\n\t\t\t} else {\n\t\t\t\ttMaxY += tDeltaY;\n\t\t\t\tcurrentCell[1] += stepY;\n\t\t\t}\n\t\t\tif (currentCell[0] >= m_gridWidth || currentCell[1] >= m_gridHeight)\n\t\t\t\tbreak;\n\t\t\tif (stepX == -1 && currentCell[0] < lastCell[0])\n\t\t\t\tbreak;\n\t\t\tif (stepX == 1 && currentCell[0] > lastCell[0])\n\t\t\t\tbreak;\n\t\t\tif (stepY == -1 && currentCell[1] < lastCell[1])\n\t\t\t\tbreak;\n\t\t\tif (stepY == 1 && currentCell[1] > lastCell[1])\n\t\t\t\tbreak;\n\t\t\tm_traversedCellOffsets.push_back(currentCell[0] + currentCell[1] * m_gridWidth);\n\t\t}\n\t}\n\n\tuint32_t cellX(float x) const\n\t{\n\t\treturn min((uint32_t)max(0.0f, (x - m_gridOrigin.x) / m_cellSize), m_gridWidth - 1u);\n\t}\n\n\tuint32_t cellY(float y) const\n\t{\n\t\treturn min((uint32_t)max(0.0f, (y - m_gridOrigin.y) / m_cellSize), m_gridHeight - 1u);\n\t}\n\n\tVector2 edgePosition0(uint32_t edge) const\n\t{\n\t\treturn m_positions[vertexAt(meshEdgeIndex0(edge))];\n\t}\n\n\tVector2 edgePosition1(uint32_t edge) const\n\t{\n\t\treturn m_positions[vertexAt(meshEdgeIndex1(edge))];\n\t}\n\n\tuint32_t vertexAt(uint32_t index) const\n\t{\n\t\treturn m_indices.length > 0 ? m_indices[index] : index;\n\t}\n\n\tArray<uint32_t> m_edges;\n\tConstArrayView<Vector2> m_positions;\n\tConstArrayView<uint32_t> m_indices; // Optional. Empty if unused.\n\tfloat m_cellSize;\n\tVector2 m_gridOrigin;\n\tuint32_t m_gridWidth, m_gridHeight; // in cells\n\tArray<uint32_t> m_cellDataOffsets;\n\tArray<uint32_t> m_cellData;\n\tArray<uint32_t> m_potentialEdges;\n\tArray<uint32_t> m_traversedCellOffsets;\n};\n\nstruct UvMeshChart\n{\n\tArray<uint32_t> faces;\n\tArray<uint32_t> indices;\n\tuint32_t material;\n};\n\nstruct UvMesh\n{\n\tUvMeshDecl decl;\n\tBitArray faceIgnore;\n\tArray<uint32_t> faceMaterials;\n\tArray<uint32_t> indices;\n\tArray<Vector2> texcoords; // Copied from input and never modified, UvMeshInstance::texcoords are. Used to restore UvMeshInstance::texcoords so packing can be run multiple times.\n\tArray<UvMeshChart *> charts;\n\tArray<uint32_t> vertexToChartMap;\n};\n\nstruct UvMeshInstance\n{\n\tUvMesh *mesh;\n\tArray<Vector2> texcoords;\n};\n\n/*\n *  Copyright (c) 2004-2010, Bruno Levy\n *  All rights reserved.\n *\n *  Redistribution and use in source and binary forms, with or without\n *  modification, are permitted provided that the following conditions are met:\n *\n *  * Redistributions of source code must retain the above copyright notice,\n *  this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above copyright notice,\n *  this list of conditions and the following disclaimer in the documentation\n *  and/or other materials provided with the distribution.\n *  * Neither the name of the ALICE Project-Team nor the names of its\n *  contributors may be used to endorse or promote products derived from this\n *  software without specific prior written permission.\n *\n *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n *  POSSIBILITY OF SUCH DAMAGE.\n *\n *  If you modify this software, you should include a notice giving the\n *  name of the person performing the modification, the date of modification,\n *  and the reason for such modification.\n *\n *  Contact: Bruno Levy\n *\n *     levy@loria.fr\n *\n *     ALICE Project\n *     LORIA, INRIA Lorraine,\n *     Campus Scientifique, BP 239\n *     54506 VANDOEUVRE LES NANCY CEDEX\n *     FRANCE\n */\nnamespace opennl {\n#define NL_NEW(T)              XA_ALLOC(MemTag::OpenNL, T)\n#define NL_NEW_ARRAY(T,NB)     XA_ALLOC_ARRAY(MemTag::OpenNL, T, NB)\n#define NL_RENEW_ARRAY(T,x,NB) XA_REALLOC(MemTag::OpenNL, x, T, NB)\n#define NL_DELETE(x)           XA_FREE(x); x = nullptr\n#define NL_DELETE_ARRAY(x)     XA_FREE(x); x = nullptr\n#define NL_CLEAR(x, T)         memset(x, 0, sizeof(T));\n#define NL_CLEAR_ARRAY(T,x,NB) memset(x, 0, (size_t)(NB)*sizeof(T))\n#define NL_NEW_VECTOR(dim)     XA_ALLOC_ARRAY(MemTag::OpenNL, double, dim)\n#define NL_DELETE_VECTOR(ptr)  XA_FREE(ptr)\n\nstruct NLMatrixStruct;\ntypedef NLMatrixStruct * NLMatrix;\ntypedef void (*NLDestroyMatrixFunc)(NLMatrix M);\ntypedef void (*NLMultMatrixVectorFunc)(NLMatrix M, const double* x, double* y);\n\n#define NL_MATRIX_SPARSE_DYNAMIC 0x1001\n#define NL_MATRIX_CRS            0x1002\n#define NL_MATRIX_OTHER          0x1006\n\nstruct NLMatrixStruct\n{\n\tuint32_t m;\n\tuint32_t n;\n\tuint32_t type;\n\tNLDestroyMatrixFunc destroy_func;\n\tNLMultMatrixVectorFunc mult_func;\n};\n\n/* Dynamic arrays for sparse row/columns */\n\nstruct NLCoeff\n{\n\tuint32_t index;\n\tdouble value;\n};\n\nstruct NLRowColumn\n{\n\tuint32_t size;\n\tuint32_t capacity;\n\tNLCoeff* coeff;\n};\n\n/* Compressed Row Storage */\n\nstruct NLCRSMatrix\n{\n\tuint32_t m;\n\tuint32_t n;\n\tuint32_t type;\n\tNLDestroyMatrixFunc destroy_func;\n\tNLMultMatrixVectorFunc mult_func;\n\tdouble* val;\n\tuint32_t* rowptr;\n\tuint32_t* colind;\n\tuint32_t nslices;\n\tuint32_t* sliceptr;\n};\n\n/* SparseMatrix data structure */\n\nstruct NLSparseMatrix\n{\n\tuint32_t m;\n\tuint32_t n;\n\tuint32_t type;\n\tNLDestroyMatrixFunc destroy_func;\n\tNLMultMatrixVectorFunc mult_func;\n\tuint32_t diag_size;\n\tuint32_t diag_capacity;\n\tNLRowColumn* row;\n\tNLRowColumn* column;\n\tdouble*    diag;\n\tuint32_t row_capacity;\n\tuint32_t column_capacity;\n};\n\n/* NLContext data structure */\n\nstruct NLBufferBinding\n{\n\tvoid* base_address;\n\tuint32_t stride;\n};\n\n#define NL_BUFFER_ITEM(B,i) *(double*)((void*)((char*)((B).base_address)+((i)*(B).stride)))\n\nstruct NLContext\n{\n\tNLBufferBinding *variable_buffer;\n\tdouble *variable_value;\n\tbool *variable_is_locked;\n\tuint32_t *variable_index;\n\tuint32_t n;\n\tNLMatrix M;\n\tNLMatrix P;\n\tNLMatrix B;\n\tNLRowColumn af;\n\tNLRowColumn al;\n\tdouble *x;\n\tdouble *b;\n\tuint32_t nb_variables;\n\tuint32_t nb_systems;\n\tuint32_t current_row;\n\tuint32_t max_iterations;\n\tbool max_iterations_defined;\n\tdouble threshold;\n\tdouble omega;\n\tuint32_t used_iterations;\n\tdouble error;\n};\n\nstatic void nlDeleteMatrix(NLMatrix M)\n{\n\tif (!M)\n\t\treturn;\n\tM->destroy_func(M);\n\tNL_DELETE(M);\n}\n\nstatic void nlMultMatrixVector(NLMatrix M, const double* x, double* y)\n{\n\tM->mult_func(M, x, y);\n}\n\nstatic void nlRowColumnConstruct(NLRowColumn* c)\n{\n\tc->size = 0;\n\tc->capacity = 0;\n\tc->coeff = nullptr;\n}\n\nstatic void nlRowColumnDestroy(NLRowColumn* c)\n{\n\tNL_DELETE_ARRAY(c->coeff);\n\tc->size = 0;\n\tc->capacity = 0;\n}\n\nstatic void nlRowColumnGrow(NLRowColumn* c)\n{\n\tif (c->capacity != 0) {\n\t\tc->capacity = 2 * c->capacity;\n\t\tc->coeff = NL_RENEW_ARRAY(NLCoeff, c->coeff, c->capacity);\n\t} else {\n\t\tc->capacity = 4;\n\t\tc->coeff = NL_NEW_ARRAY(NLCoeff, c->capacity);\n\t\tNL_CLEAR_ARRAY(NLCoeff, c->coeff, c->capacity);\n\t}\n}\n\nstatic void nlRowColumnAdd(NLRowColumn* c, uint32_t index, double value)\n{\n\tfor (uint32_t i = 0; i < c->size; i++) {\n\t\tif (c->coeff[i].index == index) {\n\t\t\tc->coeff[i].value += value;\n\t\t\treturn;\n\t\t}\n\t}\n\tif (c->size == c->capacity)\n\t\tnlRowColumnGrow(c);\n\tc->coeff[c->size].index = index;\n\tc->coeff[c->size].value = value;\n\tc->size++;\n}\n\n/* Does not check whether the index already exists */\nstatic void nlRowColumnAppend(NLRowColumn* c, uint32_t index, double value)\n{\n\tif (c->size == c->capacity)\n\t\tnlRowColumnGrow(c);\n\tc->coeff[c->size].index = index;\n\tc->coeff[c->size].value = value;\n\tc->size++;\n}\n\nstatic void nlRowColumnZero(NLRowColumn* c)\n{\n\tc->size = 0;\n}\n\nstatic void nlRowColumnClear(NLRowColumn* c)\n{\n\tc->size = 0;\n\tc->capacity = 0;\n\tNL_DELETE_ARRAY(c->coeff);\n}\n\nstatic int nlCoeffCompare(const void* p1, const void* p2)\n{\n\treturn (((NLCoeff*)(p2))->index < ((NLCoeff*)(p1))->index);\n}\n\nstatic void nlRowColumnSort(NLRowColumn* c)\n{\n\tqsort(c->coeff, c->size, sizeof(NLCoeff), nlCoeffCompare);\n}\n\n/* CRSMatrix data structure */\n\nstatic void nlCRSMatrixDestroy(NLCRSMatrix* M)\n{\n\tNL_DELETE_ARRAY(M->val);\n\tNL_DELETE_ARRAY(M->rowptr);\n\tNL_DELETE_ARRAY(M->colind);\n\tNL_DELETE_ARRAY(M->sliceptr);\n\tM->m = 0;\n\tM->n = 0;\n\tM->nslices = 0;\n}\n\nstatic void nlCRSMatrixMultSlice(NLCRSMatrix* M, const double* x, double* y, uint32_t Ibegin, uint32_t Iend)\n{\n\tfor (uint32_t i = Ibegin; i < Iend; ++i) {\n\t\tdouble sum = 0.0;\n\t\tfor (uint32_t j = M->rowptr[i]; j < M->rowptr[i + 1]; ++j)\n\t\t\tsum += M->val[j] * x[M->colind[j]];\n\t\ty[i] = sum;\n\t}\n}\n\nstatic void nlCRSMatrixMult(NLCRSMatrix* M, const double* x, double* y)\n{\n\tint nslices = (int)(M->nslices);\n\tfor (int slice = 0; slice < nslices; ++slice)\n\t\tnlCRSMatrixMultSlice(M, x, y, M->sliceptr[slice], M->sliceptr[slice + 1]);\n}\n\nstatic void nlCRSMatrixConstruct(NLCRSMatrix* M, uint32_t m, uint32_t n, uint32_t nnz, uint32_t nslices)\n{\n\tM->m = m;\n\tM->n = n;\n\tM->type = NL_MATRIX_CRS;\n\tM->destroy_func = (NLDestroyMatrixFunc)nlCRSMatrixDestroy;\n\tM->mult_func = (NLMultMatrixVectorFunc)nlCRSMatrixMult;\n\tM->nslices = nslices;\n\tM->val = NL_NEW_ARRAY(double, nnz);\n\tNL_CLEAR_ARRAY(double, M->val, nnz);\n\tM->rowptr = NL_NEW_ARRAY(uint32_t, m + 1);\n\tNL_CLEAR_ARRAY(uint32_t, M->rowptr, m + 1);\n\tM->colind = NL_NEW_ARRAY(uint32_t, nnz);\n\tNL_CLEAR_ARRAY(uint32_t, M->colind, nnz);\n\tM->sliceptr = NL_NEW_ARRAY(uint32_t, nslices + 1);\n\tNL_CLEAR_ARRAY(uint32_t, M->sliceptr, nslices + 1);\n}\n\n/* SparseMatrix data structure */\n\nstatic void nlSparseMatrixDestroyRowColumns(NLSparseMatrix* M)\n{\n\tfor (uint32_t i = 0; i < M->m; i++)\n\t\tnlRowColumnDestroy(&(M->row[i]));\n\tNL_DELETE_ARRAY(M->row);\n}\n\nstatic void nlSparseMatrixDestroy(NLSparseMatrix* M)\n{\n\tXA_DEBUG_ASSERT(M->type == NL_MATRIX_SPARSE_DYNAMIC);\n\tnlSparseMatrixDestroyRowColumns(M);\n\tNL_DELETE_ARRAY(M->diag);\n}\n\nstatic void nlSparseMatrixAdd(NLSparseMatrix* M, uint32_t i, uint32_t j, double value)\n{\n\tXA_DEBUG_ASSERT(i >= 0 && i <= M->m - 1);\n\tXA_DEBUG_ASSERT(j >= 0 && j <= M->n - 1);\n\tif (i == j)\n\t\tM->diag[i] += value;\n\tnlRowColumnAdd(&(M->row[i]), j, value);\n}\n\n/* Returns the number of non-zero coefficients */\nstatic uint32_t nlSparseMatrixNNZ(NLSparseMatrix* M)\n{\n\tuint32_t nnz = 0;\n\tfor (uint32_t i = 0; i < M->m; i++)\n\t\tnnz += M->row[i].size;\n\treturn nnz;\n}\n\nstatic void nlSparseMatrixSort(NLSparseMatrix* M)\n{\n\tfor (uint32_t i = 0; i < M->m; i++)\n\t\tnlRowColumnSort(&(M->row[i]));\n}\n\n/* SparseMatrix x Vector routines, internal helper routines */\n\nstatic void nlSparseMatrix_mult_rows(NLSparseMatrix* A,\tconst double* x, double* y)\n{\n\t/*\n\t * Note: OpenMP does not like unsigned ints\n\t * (causes some floating point exceptions),\n\t * therefore I use here signed ints for all\n\t * indices.\n\t */\n\tint m = (int)(A->m);\n\tNLCoeff* c = nullptr;\n\tNLRowColumn* Ri = nullptr;\n\tfor (int i = 0; i < m; i++) {\n\t\tRi = &(A->row[i]);\n\t\ty[i] = 0;\n\t\tfor (int ij = 0; ij < (int)(Ri->size); ij++) {\n\t\t\tc = &(Ri->coeff[ij]);\n\t\t\ty[i] += c->value * x[c->index];\n\t\t}\n\t}\n}\n\nstatic void nlSparseMatrixMult(NLSparseMatrix* A, const double* x, double* y)\n{\n\tXA_DEBUG_ASSERT(A->type == NL_MATRIX_SPARSE_DYNAMIC);\n\tnlSparseMatrix_mult_rows(A, x, y);\n}\n\nstatic void nlSparseMatrixConstruct(NLSparseMatrix* M, uint32_t m, uint32_t n)\n{\n\tM->m = m;\n\tM->n = n;\n\tM->type = NL_MATRIX_SPARSE_DYNAMIC;\n\tM->destroy_func = (NLDestroyMatrixFunc)nlSparseMatrixDestroy;\n\tM->mult_func = (NLMultMatrixVectorFunc)nlSparseMatrixMult;\n\tM->row = NL_NEW_ARRAY(NLRowColumn, m);\n\tNL_CLEAR_ARRAY(NLRowColumn, M->row, m);\n\tM->row_capacity = m;\n\tfor (uint32_t i = 0; i < n; i++)\n\t\tnlRowColumnConstruct(&(M->row[i]));\n\tM->row_capacity = 0;\n\tM->column = nullptr;\n\tM->column_capacity = 0;\n\tM->diag_size = min(m, n);\n\tM->diag_capacity = M->diag_size;\n\tM->diag = NL_NEW_ARRAY(double, M->diag_size);\n\tNL_CLEAR_ARRAY(double, M->diag, M->diag_size);\n}\n\nstatic NLMatrix nlCRSMatrixNewFromSparseMatrix(NLSparseMatrix* M)\n{\n\tuint32_t nnz = nlSparseMatrixNNZ(M);\n\tuint32_t nslices = 8; /* TODO: get number of cores */\n\tuint32_t slice, cur_bound, cur_NNZ, cur_row;\n\tuint32_t k;\n\tuint32_t slice_size = nnz / nslices;\n\tNLCRSMatrix* CRS = NL_NEW(NLCRSMatrix);\n\tNL_CLEAR(CRS, NLCRSMatrix);\n\tnlCRSMatrixConstruct(CRS, M->m, M->n, nnz, nslices);\n\tnlSparseMatrixSort(M);\n\t/* Convert matrix to CRS format */\n\tk = 0;\n\tfor (uint32_t i = 0; i < M->m; ++i) {\n\t\tNLRowColumn* Ri = &(M->row[i]);\n\t\tCRS->rowptr[i] = k;\n\t\tfor (uint32_t ij = 0; ij < Ri->size; ij++) {\n\t\t\tNLCoeff* c = &(Ri->coeff[ij]);\n\t\t\tCRS->val[k] = c->value;\n\t\t\tCRS->colind[k] = c->index;\n\t\t\t++k;\n\t\t}\n\t}\n\tCRS->rowptr[M->m] = k;\n\t/* Create \"slices\" to be used by parallel sparse matrix vector product */\n\tif (CRS->sliceptr) {\n\t\tcur_bound = slice_size;\n\t\tcur_NNZ = 0;\n\t\tcur_row = 0;\n\t\tCRS->sliceptr[0] = 0;\n\t\tfor (slice = 1; slice < nslices; ++slice) {\n\t\t\twhile (cur_NNZ < cur_bound && cur_row < M->m) {\n\t\t\t\tcur_NNZ += CRS->rowptr[cur_row + 1] - CRS->rowptr[cur_row];\n\t\t\t\t++cur_row;\n\t\t\t}\n\t\t\tCRS->sliceptr[slice] = cur_row;\n\t\t\tcur_bound += slice_size;\n\t\t}\n\t\tCRS->sliceptr[nslices] = M->m;\n\t}\n\treturn (NLMatrix)CRS;\n}\n\nstatic void nlMatrixCompress(NLMatrix* M)\n{\n\tNLMatrix CRS = nullptr;\n\tif ((*M)->type != NL_MATRIX_SPARSE_DYNAMIC)\n\t\treturn;\n\tCRS = nlCRSMatrixNewFromSparseMatrix((NLSparseMatrix*)*M);\n\tnlDeleteMatrix(*M);\n\t*M = CRS;\n}\n\nstatic NLContext *nlNewContext()\n{\n\tNLContext* result = NL_NEW(NLContext);\n\tNL_CLEAR(result, NLContext);\n\tresult->max_iterations = 100;\n\tresult->threshold = 1e-6;\n\tresult->omega = 1.5;\n\tresult->nb_systems = 1;\n\treturn result;\n}\n\nstatic void nlDeleteContext(NLContext *context)\n{\n\tnlDeleteMatrix(context->M);\n\tcontext->M = nullptr;\n\tnlDeleteMatrix(context->P);\n\tcontext->P = nullptr;\n\tnlDeleteMatrix(context->B);\n\tcontext->B = nullptr;\n\tnlRowColumnDestroy(&context->af);\n\tnlRowColumnDestroy(&context->al);\n\tNL_DELETE_ARRAY(context->variable_value);\n\tNL_DELETE_ARRAY(context->variable_buffer);\n\tNL_DELETE_ARRAY(context->variable_is_locked);\n\tNL_DELETE_ARRAY(context->variable_index);\n\tNL_DELETE_ARRAY(context->x);\n\tNL_DELETE_ARRAY(context->b);\n\tNL_DELETE(context);\n}\n\nstatic double ddot(int n, const double *x, const double *y)\n{\n\tdouble sum = 0.0;\n\tfor (int i = 0; i < n; i++)\n\t\tsum += x[i] * y[i];\n\treturn sum;\n}\n\nstatic void daxpy(int n, double a, const double *x, double *y)\n{\n\tfor (int i = 0; i < n; i++)\n\t\ty[i] = a * x[i] + y[i];\n}\n\nstatic void dscal(int n, double a, double *x)\n{\n\tfor (int i = 0; i < n; i++)\n\t\tx[i] *= a;\n}\n\n/*\n * The implementation of the solvers is inspired by\n * the lsolver library, by Christian Badura, available from:\n * http://www.mathematik.uni-freiburg.de\n * /IAM/Research/projectskr/lin_solver/\n *\n * About the Conjugate Gradient, details can be found in:\n *  Ashby, Manteuffel, Saylor\n *     A taxononmy for conjugate gradient methods\n *     SIAM J Numer Anal 27, 1542-1568 (1990)\n *\n *  This version is completely abstract, the same code can be used for\n * CPU/GPU, dense matrix / sparse matrix etc...\n *  Abstraction is realized through:\n  *   - Abstract matrix interface (NLMatrix), that can implement different\n *     versions of matrix x vector product (CPU/GPU, sparse/dense ...)\n */\n\nstatic uint32_t nlSolveSystem_PRE_CG(NLMatrix M, NLMatrix P, double* b, double* x, double eps, uint32_t max_iter, double *sq_bnorm, double *sq_rnorm)\n{\n\tint     N = (int)M->n;\n\tdouble* r = NL_NEW_VECTOR(N);\n\tdouble* d = NL_NEW_VECTOR(N);\n\tdouble* h = NL_NEW_VECTOR(N);\n\tdouble *Ad = h;\n\tuint32_t its = 0;\n\tdouble rh, alpha, beta;\n\tdouble b_square = ddot(N, b, b);\n\tdouble err = eps * eps*b_square;\n\tdouble curr_err;\n\tnlMultMatrixVector(M, x, r);\n\tdaxpy(N, -1., b, r);\n\tnlMultMatrixVector(P, r, d);\n\tmemcpy(h, d, N * sizeof(double));\n\trh = ddot(N, r, h);\n\tcurr_err = ddot(N, r, r);\n\twhile (curr_err > err && its < max_iter) {\n\t\tnlMultMatrixVector(M, d, Ad);\n\t\talpha = rh / ddot(N, d, Ad);\n\t\tdaxpy(N, -alpha, d, x);\n\t\tdaxpy(N, -alpha, Ad, r);\n\t\tnlMultMatrixVector(P, r, h);\n\t\tbeta = 1. / rh;\n\t\trh = ddot(N, r, h);\n\t\tbeta *= rh;\n\t\tdscal(N, beta, d);\n\t\tdaxpy(N, 1., h, d);\n\t\t++its;\n\t\tcurr_err = ddot(N, r, r);\n\t}\n\tNL_DELETE_VECTOR(r);\n\tNL_DELETE_VECTOR(d);\n\tNL_DELETE_VECTOR(h);\n\t*sq_bnorm = b_square;\n\t*sq_rnorm = curr_err;\n\treturn its;\n}\n\nstatic uint32_t nlSolveSystemIterative(NLContext *context, NLMatrix M, NLMatrix P, double* b_in, double* x_in, double eps, uint32_t max_iter)\n{\n\tuint32_t result = 0;\n\tdouble rnorm = 0.0;\n\tdouble bnorm = 0.0;\n\tdouble* b = b_in;\n\tdouble* x = x_in;\n\tXA_DEBUG_ASSERT(M->m == M->n);\n\tdouble sq_bnorm, sq_rnorm;\n\tresult = nlSolveSystem_PRE_CG(M, P, b, x, eps, max_iter, &sq_bnorm, &sq_rnorm);\n\t/* Get residual norm and rhs norm */\n\tbnorm = sqrt(sq_bnorm);\n\trnorm = sqrt(sq_rnorm);\n\tif (bnorm == 0.0)\n\t\tcontext->error = rnorm;\n\telse\n\t\tcontext->error = rnorm / bnorm;\n\tcontext->used_iterations = result;\n\treturn result;\n}\n\nstatic bool nlSolveIterative(NLContext *context)\n{\n\tdouble* b = context->b;\n\tdouble* x = context->x;\n\tuint32_t n = context->n;\n\tNLMatrix M = context->M;\n\tNLMatrix P = context->P;\n\tfor (uint32_t k = 0; k < context->nb_systems; ++k) {\n\t\tnlSolveSystemIterative(context, M, P, b, x, context->threshold, context->max_iterations);\n\t\tb += n;\n\t\tx += n;\n\t}\n\treturn true;\n}\n\nstruct NLJacobiPreconditioner\n{\n\tuint32_t m;\n\tuint32_t n;\n\tuint32_t type;\n\tNLDestroyMatrixFunc destroy_func;\n\tNLMultMatrixVectorFunc mult_func;\n\tdouble* diag_inv;\n};\n\nstatic void nlJacobiPreconditionerDestroy(NLJacobiPreconditioner* M)\n{\n\tNL_DELETE_ARRAY(M->diag_inv);\n}\n\nstatic void nlJacobiPreconditionerMult(NLJacobiPreconditioner* M, const double* x, double* y)\n{\n\tfor (uint32_t i = 0; i < M->n; ++i)\n\t\ty[i] = x[i] * M->diag_inv[i];\n}\n\nstatic NLMatrix nlNewJacobiPreconditioner(NLMatrix M_in)\n{\n\tNLSparseMatrix* M = nullptr;\n\tNLJacobiPreconditioner* result = nullptr;\n\tXA_DEBUG_ASSERT(M_in->type == NL_MATRIX_SPARSE_DYNAMIC);\n\tXA_DEBUG_ASSERT(M_in->m == M_in->n);\n\tM = (NLSparseMatrix*)M_in;\n\tresult = NL_NEW(NLJacobiPreconditioner);\n\tNL_CLEAR(result, NLJacobiPreconditioner);\n\tresult->m = M->m;\n\tresult->n = M->n;\n\tresult->type = NL_MATRIX_OTHER;\n\tresult->destroy_func = (NLDestroyMatrixFunc)nlJacobiPreconditionerDestroy;\n\tresult->mult_func = (NLMultMatrixVectorFunc)nlJacobiPreconditionerMult;\n\tresult->diag_inv = NL_NEW_ARRAY(double, M->n);\n\tNL_CLEAR_ARRAY(double, result->diag_inv, M->n);\n\tfor (uint32_t i = 0; i < M->n; ++i)\n\t\tresult->diag_inv[i] = (M->diag[i] == 0.0) ? 1.0 : 1.0 / M->diag[i];\n\treturn (NLMatrix)result;\n}\n\n#define NL_NB_VARIABLES 0x101\n#define NL_MAX_ITERATIONS 0x103\n\nstatic void nlSolverParameteri(NLContext *context, uint32_t pname, int param)\n{\n\tif (pname == NL_NB_VARIABLES) {\n\t\tXA_DEBUG_ASSERT(param > 0);\n\t\tcontext->nb_variables = (uint32_t)param;\n\t} else if (pname == NL_MAX_ITERATIONS) {\n\t\tXA_DEBUG_ASSERT(param > 0);\n\t\tcontext->max_iterations = (uint32_t)param;\n\t\tcontext->max_iterations_defined = true;\n\t}\n}\n\nstatic void nlSetVariable(NLContext *context, uint32_t index, double value)\n{\n\tXA_DEBUG_ASSERT(index >= 0 && index <= context->nb_variables - 1);\n\tNL_BUFFER_ITEM(context->variable_buffer[0], index) = value;\n}\n\nstatic double nlGetVariable(NLContext *context, uint32_t index)\n{\n\tXA_DEBUG_ASSERT(index >= 0 && index <= context->nb_variables - 1);\n\treturn NL_BUFFER_ITEM(context->variable_buffer[0], index);\n}\n\nstatic void nlLockVariable(NLContext *context, uint32_t index)\n{\n\tXA_DEBUG_ASSERT(index >= 0 && index <= context->nb_variables - 1);\n\tcontext->variable_is_locked[index] = true;\n}\n\nstatic void nlVariablesToVector(NLContext *context)\n{\n\tuint32_t n = context->n;\n\tXA_DEBUG_ASSERT(context->x);\n\tfor (uint32_t k = 0; k < context->nb_systems; ++k) {\n\t\tfor (uint32_t i = 0; i < context->nb_variables; ++i) {\n\t\t\tif (!context->variable_is_locked[i]) {\n\t\t\t\tuint32_t index = context->variable_index[i];\n\t\t\t\tXA_DEBUG_ASSERT(index < context->n);\n\t\t\t\tdouble value = NL_BUFFER_ITEM(context->variable_buffer[k], i);\n\t\t\t\tcontext->x[index + k * n] = value;\n\t\t\t}\n\t\t}\n\t}\n}\n\nstatic void nlVectorToVariables(NLContext *context)\n{\n\tuint32_t n = context->n;\n\tXA_DEBUG_ASSERT(context->x);\n\tfor (uint32_t k = 0; k < context->nb_systems; ++k) {\n\t\tfor (uint32_t i = 0; i < context->nb_variables; ++i) {\n\t\t\tif (!context->variable_is_locked[i]) {\n\t\t\t\tuint32_t index = context->variable_index[i];\n\t\t\t\tXA_DEBUG_ASSERT(index < context->n);\n\t\t\t\tdouble value = context->x[index + k * n];\n\t\t\t\tNL_BUFFER_ITEM(context->variable_buffer[k], i) = value;\n\t\t\t}\n\t\t}\n\t}\n}\n\nstatic void nlCoefficient(NLContext *context, uint32_t index, double value)\n{\n\tXA_DEBUG_ASSERT(index >= 0 && index <= context->nb_variables - 1);\n\tif (context->variable_is_locked[index]) {\n\t\t/*\n\t\t * Note: in al, indices are NLvariable indices,\n\t\t * within [0..nb_variables-1]\n\t\t */\n\t\tnlRowColumnAppend(&(context->al), index, value);\n\t} else {\n\t\t/*\n\t\t * Note: in af, indices are system indices,\n\t\t * within [0..n-1]\n\t\t */\n\t\tnlRowColumnAppend(&(context->af), context->variable_index[index], value);\n\t}\n}\n\n#define NL_SYSTEM  0x0\n#define NL_MATRIX  0x1\n#define NL_ROW     0x2\n\nstatic void nlBegin(NLContext *context, uint32_t prim)\n{\n\tif (prim == NL_SYSTEM) {\n\t\tXA_DEBUG_ASSERT(context->nb_variables > 0);\n\t\tcontext->variable_buffer = NL_NEW_ARRAY(NLBufferBinding, context->nb_systems);\n\t\tNL_CLEAR_ARRAY(NLBufferBinding, context->variable_buffer, context->nb_systems);\n\t\tcontext->variable_value = NL_NEW_ARRAY(double, context->nb_variables * context->nb_systems);\n\t\tNL_CLEAR_ARRAY(double, context->variable_value, context->nb_variables * context->nb_systems);\n\t\tfor (uint32_t k = 0; k < context->nb_systems; ++k) {\n\t\t\tcontext->variable_buffer[k].base_address =\n\t\t\t\tcontext->variable_value +\n\t\t\t\tk * context->nb_variables;\n\t\t\tcontext->variable_buffer[k].stride = sizeof(double);\n\t\t}\n\t\tcontext->variable_is_locked = NL_NEW_ARRAY(bool, context->nb_variables);\n\t\tNL_CLEAR_ARRAY(bool, context->variable_is_locked, context->nb_variables);\n\t\tcontext->variable_index = NL_NEW_ARRAY(uint32_t, context->nb_variables);\n\t\tNL_CLEAR_ARRAY(uint32_t, context->variable_index, context->nb_variables);\n\t} else if (prim == NL_MATRIX) {\n\t\tif (context->M)\n\t\t\treturn;\n\t\tuint32_t n = 0;\n\t\tfor (uint32_t i = 0; i < context->nb_variables; i++) {\n\t\t\tif (!context->variable_is_locked[i]) {\n\t\t\t\tcontext->variable_index[i] = n;\n\t\t\t\tn++;\n\t\t\t} else\n\t\t\t\tcontext->variable_index[i] = (uint32_t)~0;\n\t\t}\n\t\tcontext->n = n;\n\t\tif (!context->max_iterations_defined)\n\t\t\tcontext->max_iterations = n * 5;\n\t\tcontext->M = (NLMatrix)(NL_NEW(NLSparseMatrix));\n\t\tNL_CLEAR(context->M, NLSparseMatrix);\n\t\tnlSparseMatrixConstruct((NLSparseMatrix*)(context->M), n, n);\n\t\tcontext->x = NL_NEW_ARRAY(double, n*context->nb_systems);\n\t\tNL_CLEAR_ARRAY(double, context->x, n*context->nb_systems);\n\t\tcontext->b = NL_NEW_ARRAY(double, n*context->nb_systems);\n\t\tNL_CLEAR_ARRAY(double, context->b, n*context->nb_systems);\n\t\tnlVariablesToVector(context);\n\t\tnlRowColumnConstruct(&context->af);\n\t\tnlRowColumnConstruct(&context->al);\n\t\tcontext->current_row = 0;\n\t} else if (prim == NL_ROW) {\n\t\tnlRowColumnZero(&context->af);\n\t\tnlRowColumnZero(&context->al);\n\t}\n}\n\nstatic void nlEnd(NLContext *context, uint32_t prim)\n{\n\tif (prim == NL_MATRIX) {\n\t\tnlRowColumnClear(&context->af);\n\t\tnlRowColumnClear(&context->al);\n\t} else if (prim == NL_ROW) {\n\t\tNLRowColumn*    af = &context->af;\n\t\tNLRowColumn*    al = &context->al;\n\t\tNLSparseMatrix* M = (NLSparseMatrix*)context->M;\n\t\tdouble* b = context->b;\n\t\tuint32_t nf = af->size;\n\t\tuint32_t nl = al->size;\n\t\tuint32_t n = context->n;\n\t\tdouble S;\n\t\t/*\n\t\t * least_squares : we want to solve\n\t\t * A'A x = A'b\n\t\t */\n\t\tfor (uint32_t i = 0; i < nf; i++) {\n\t\t\tfor (uint32_t j = 0; j < nf; j++) {\n\t\t\t\tnlSparseMatrixAdd(M, af->coeff[i].index, af->coeff[j].index, af->coeff[i].value * af->coeff[j].value);\n\t\t\t}\n\t\t}\n\t\tfor (uint32_t k = 0; k < context->nb_systems; ++k) {\n\t\t\tS = 0.0;\n\t\t\tfor (uint32_t jj = 0; jj < nl; ++jj) {\n\t\t\t\tuint32_t j = al->coeff[jj].index;\n\t\t\t\tS += al->coeff[jj].value * NL_BUFFER_ITEM(context->variable_buffer[k], j);\n\t\t\t}\n\t\t\tfor (uint32_t jj = 0; jj < nf; jj++)\n\t\t\t\tb[k*n + af->coeff[jj].index] -= af->coeff[jj].value * S;\n\t\t}\n\t\tcontext->current_row++;\n\t}\n}\n\nstatic bool nlSolve(NLContext *context)\n{\n\tnlDeleteMatrix(context->P);\n\tcontext->P = nlNewJacobiPreconditioner(context->M);\n\tnlMatrixCompress(&context->M);\n\tbool result = nlSolveIterative(context);\n\tnlVectorToVariables(context);\n\treturn result;\n}\n} // namespace opennl\n\nnamespace raster {\nclass ClippedTriangle\n{\npublic:\n\tClippedTriangle(const Vector2 &a, const Vector2 &b, const Vector2 &c)\n\t{\n\t\tm_numVertices = 3;\n\t\tm_activeVertexBuffer = 0;\n\t\tm_verticesA[0] = a;\n\t\tm_verticesA[1] = b;\n\t\tm_verticesA[2] = c;\n\t\tm_vertexBuffers[0] = m_verticesA;\n\t\tm_vertexBuffers[1] = m_verticesB;\n\t\tm_area = 0;\n\t}\n\n\tvoid clipHorizontalPlane(float offset, float clipdirection)\n\t{\n\t\tVector2 *v  = m_vertexBuffers[m_activeVertexBuffer];\n\t\tm_activeVertexBuffer ^= 1;\n\t\tVector2 *v2 = m_vertexBuffers[m_activeVertexBuffer];\n\t\tv[m_numVertices] = v[0];\n\t\tfloat dy2,   dy1 = offset - v[0].y;\n\t\tint   dy2in, dy1in = clipdirection * dy1 >= 0;\n\t\tuint32_t  p = 0;\n\t\tfor (uint32_t k = 0; k < m_numVertices; k++) {\n\t\t\tdy2   = offset - v[k + 1].y;\n\t\t\tdy2in = clipdirection * dy2 >= 0;\n\t\t\tif (dy1in) v2[p++] = v[k];\n\t\t\tif ( dy1in + dy2in == 1 ) { // not both in/out\n\t\t\t\tfloat dx = v[k + 1].x - v[k].x;\n\t\t\t\tfloat dy = v[k + 1].y - v[k].y;\n\t\t\t\tv2[p++] = Vector2(v[k].x + dy1 * (dx / dy), offset);\n\t\t\t}\n\t\t\tdy1 = dy2;\n\t\t\tdy1in = dy2in;\n\t\t}\n\t\tm_numVertices = p;\n\t}\n\n\tvoid clipVerticalPlane(float offset, float clipdirection)\n\t{\n\t\tVector2 *v  = m_vertexBuffers[m_activeVertexBuffer];\n\t\tm_activeVertexBuffer ^= 1;\n\t\tVector2 *v2 = m_vertexBuffers[m_activeVertexBuffer];\n\t\tv[m_numVertices] = v[0];\n\t\tfloat dx2,   dx1   = offset - v[0].x;\n\t\tint   dx2in, dx1in = clipdirection * dx1 >= 0;\n\t\tuint32_t  p = 0;\n\t\tfor (uint32_t k = 0; k < m_numVertices; k++) {\n\t\t\tdx2 = offset - v[k + 1].x;\n\t\t\tdx2in = clipdirection * dx2 >= 0;\n\t\t\tif (dx1in) v2[p++] = v[k];\n\t\t\tif ( dx1in + dx2in == 1 ) { // not both in/out\n\t\t\t\tfloat dx = v[k + 1].x - v[k].x;\n\t\t\t\tfloat dy = v[k + 1].y - v[k].y;\n\t\t\t\tv2[p++] = Vector2(offset, v[k].y + dx1 * (dy / dx));\n\t\t\t}\n\t\t\tdx1 = dx2;\n\t\t\tdx1in = dx2in;\n\t\t}\n\t\tm_numVertices = p;\n\t}\n\n\tvoid computeArea()\n\t{\n\t\tVector2 *v  = m_vertexBuffers[m_activeVertexBuffer];\n\t\tv[m_numVertices] = v[0];\n\t\tm_area = 0;\n\t\tfor (uint32_t k = 0; k < m_numVertices; k++) {\n\t\t\t// http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/\n\t\t\tfloat f = v[k].x * v[k + 1].y - v[k + 1].x * v[k].y;\n\t\t\tm_area += f;\n\t\t}\n\t\tm_area = 0.5f * fabsf(m_area);\n\t}\n\n\tvoid clipAABox(float x0, float y0, float x1, float y1)\n\t{\n\t\tclipVerticalPlane(x0, -1);\n\t\tclipHorizontalPlane(y0, -1);\n\t\tclipVerticalPlane(x1, 1);\n\t\tclipHorizontalPlane(y1, 1);\n\t\tcomputeArea();\n\t}\n\n\tfloat area() const\n\t{\n\t\treturn m_area;\n\t}\n\nprivate:\n\tVector2 m_verticesA[7 + 1];\n\tVector2 m_verticesB[7 + 1];\n\tVector2 *m_vertexBuffers[2];\n\tuint32_t m_numVertices;\n\tuint32_t m_activeVertexBuffer;\n\tfloat m_area;\n};\n\n/// A callback to sample the environment. Return false to terminate rasterization.\ntypedef bool (*SamplingCallback)(void *param, int x, int y);\n\n/// A triangle for rasterization.\nstruct Triangle\n{\n\tTriangle(const Vector2 &_v0, const Vector2 &_v1, const Vector2 &_v2) : v1(_v0), v2(_v2), v3(_v1), n1(0.0f), n2(0.0f), n3(0.0f)\n\t{\n\t\t// make sure every triangle is front facing.\n\t\tflipBackface();\n\t\t// Compute deltas.\n\t\tif (isValid())\n\t\t\tcomputeUnitInwardNormals();\n\t}\n\n\tbool isValid()\n\t{\n\t\tconst Vector2 e0 = v3 - v1;\n\t\tconst Vector2 e1 = v2 - v1;\n\t\tconst float area = e0.y * e1.x - e1.y * e0.x;\n\t\treturn area != 0.0f;\n\t}\n\n\t// extents has to be multiple of BK_SIZE!!\n\tbool drawAA(const Vector2 &extents, SamplingCallback cb, void *param)\n\t{\n\t\tconst float PX_INSIDE = 1.0f/sqrtf(2.0f);\n\t\tconst float PX_OUTSIDE = -1.0f/sqrtf(2.0f);\n\t\tconst float BK_SIZE = 8;\n\t\tconst float BK_INSIDE = sqrtf(BK_SIZE*BK_SIZE/2.0f);\n\t\tconst float BK_OUTSIDE = -sqrtf(BK_SIZE*BK_SIZE/2.0f);\n\t\t// Bounding rectangle\n\t\tfloat minx = floorf(max(min3(v1.x, v2.x, v3.x), 0.0f));\n\t\tfloat miny = floorf(max(min3(v1.y, v2.y, v3.y), 0.0f));\n\t\tfloat maxx = ceilf( min(max3(v1.x, v2.x, v3.x), extents.x - 1.0f));\n\t\tfloat maxy = ceilf( min(max3(v1.y, v2.y, v3.y), extents.y - 1.0f));\n\t\t// There's no reason to align the blocks to the viewport, instead we align them to the origin of the triangle bounds.\n\t\tminx = floorf(minx);\n\t\tminy = floorf(miny);\n\t\t//minx = (float)(((int)minx) & (~((int)BK_SIZE - 1))); // align to blocksize (we don't need to worry about blocks partially out of viewport)\n\t\t//miny = (float)(((int)miny) & (~((int)BK_SIZE - 1)));\n\t\tminx += 0.5;\n\t\tminy += 0.5; // sampling at texel centers!\n\t\tmaxx += 0.5;\n\t\tmaxy += 0.5;\n\t\t// Half-edge constants\n\t\tfloat C1 = n1.x * (-v1.x) + n1.y * (-v1.y);\n\t\tfloat C2 = n2.x * (-v2.x) + n2.y * (-v2.y);\n\t\tfloat C3 = n3.x * (-v3.x) + n3.y * (-v3.y);\n\t\t// Loop through blocks\n\t\tfor (float y0 = miny; y0 <= maxy; y0 += BK_SIZE) {\n\t\t\tfor (float x0 = minx; x0 <= maxx; x0 += BK_SIZE) {\n\t\t\t\t// Corners of block\n\t\t\t\tfloat xc = (x0 + (BK_SIZE - 1) / 2.0f);\n\t\t\t\tfloat yc = (y0 + (BK_SIZE - 1) / 2.0f);\n\t\t\t\t// Evaluate half-space functions\n\t\t\t\tfloat aC = C1 + n1.x * xc + n1.y * yc;\n\t\t\t\tfloat bC = C2 + n2.x * xc + n2.y * yc;\n\t\t\t\tfloat cC = C3 + n3.x * xc + n3.y * yc;\n\t\t\t\t// Skip block when outside an edge\n\t\t\t\tif ( (aC <= BK_OUTSIDE) || (bC <= BK_OUTSIDE) || (cC <= BK_OUTSIDE) ) continue;\n\t\t\t\t// Accept whole block when totally covered\n\t\t\t\tif ( (aC >= BK_INSIDE) && (bC >= BK_INSIDE) && (cC >= BK_INSIDE) ) {\n\t\t\t\t\tfor (float y = y0; y < y0 + BK_SIZE; y++) {\n\t\t\t\t\t\tfor (float x = x0; x < x0 + BK_SIZE; x++) {\n\t\t\t\t\t\t\tif (!cb(param, (int)x, (int)y))\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else { // Partially covered block\n\t\t\t\t\tfloat CY1 = C1 + n1.x * x0 + n1.y * y0;\n\t\t\t\t\tfloat CY2 = C2 + n2.x * x0 + n2.y * y0;\n\t\t\t\t\tfloat CY3 = C3 + n3.x * x0 + n3.y * y0;\n\t\t\t\t\tfor (float y = y0; y < y0 + BK_SIZE; y++) { // @@ This is not clipping to scissor rectangle correctly.\n\t\t\t\t\t\tfloat CX1 = CY1;\n\t\t\t\t\t\tfloat CX2 = CY2;\n\t\t\t\t\t\tfloat CX3 = CY3;\n\t\t\t\t\t\tfor (float x = x0; x < x0 + BK_SIZE; x++) { // @@ This is not clipping to scissor rectangle correctly.\n\t\t\t\t\t\t\tif (CX1 >= PX_INSIDE && CX2 >= PX_INSIDE && CX3 >= PX_INSIDE) {\n\t\t\t\t\t\t\t\tif (!cb(param, (int)x, (int)y))\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t} else if ((CX1 >= PX_OUTSIDE) && (CX2 >= PX_OUTSIDE) && (CX3 >= PX_OUTSIDE)) {\n\t\t\t\t\t\t\t\t// triangle partially covers pixel. do clipping.\n\t\t\t\t\t\t\t\tClippedTriangle ct(v1 - Vector2(x, y), v2 - Vector2(x, y), v3 - Vector2(x, y));\n\t\t\t\t\t\t\t\tct.clipAABox(-0.5, -0.5, 0.5, 0.5);\n\t\t\t\t\t\t\t\tif (ct.area() > 0.0f) {\n\t\t\t\t\t\t\t\t\tif (!cb(param, (int)x, (int)y))\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tCX1 += n1.x;\n\t\t\t\t\t\t\tCX2 += n2.x;\n\t\t\t\t\t\t\tCX3 += n3.x;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tCY1 += n1.y;\n\t\t\t\t\t\tCY2 += n2.y;\n\t\t\t\t\t\tCY3 += n3.y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\nprivate:\n\tvoid flipBackface()\n\t{\n\t\t// check if triangle is backfacing, if so, swap two vertices\n\t\tif ( ((v3.x - v1.x) * (v2.y - v1.y) - (v3.y - v1.y) * (v2.x - v1.x)) < 0 ) {\n\t\t\tVector2 hv = v1;\n\t\t\tv1 = v2;\n\t\t\tv2 = hv; // swap pos\n\t\t}\n\t}\n\n\t// compute unit inward normals for each edge.\n\tvoid computeUnitInwardNormals()\n\t{\n\t\tn1 = v1 - v2;\n\t\tn1 = Vector2(-n1.y, n1.x);\n\t\tn1 = n1 * (1.0f / sqrtf(dot(n1, n1)));\n\t\tn2 = v2 - v3;\n\t\tn2 = Vector2(-n2.y, n2.x);\n\t\tn2 = n2 * (1.0f / sqrtf(dot(n2, n2)));\n\t\tn3 = v3 - v1;\n\t\tn3 = Vector2(-n3.y, n3.x);\n\t\tn3 = n3 * (1.0f / sqrtf(dot(n3, n3)));\n\t}\n\n\t// Vertices.\n\tVector2 v1, v2, v3;\n\tVector2 n1, n2, n3; // unit inward normals\n};\n\n// Process the given triangle. Returns false if rasterization was interrupted by the callback.\nstatic bool drawTriangle(const Vector2 &extents, const Vector2 v[3], SamplingCallback cb, void *param)\n{\n\tTriangle tri(v[0], v[1], v[2]);\n\t// @@ It would be nice to have a conservative drawing mode that enlarges the triangle extents by one texel and is able to handle degenerate triangles.\n\t// @@ Maybe the simplest thing to do would be raster triangle edges.\n\tif (tri.isValid())\n\t\treturn tri.drawAA(extents, cb, param);\n\treturn true;\n}\n\n} // namespace raster\n\nnamespace segment {\n\n// - Insertion is o(n)\n// - Smallest element goes at the end, so that popping it is o(1).\nstruct CostQueue\n{\n\tCostQueue(uint32_t size = UINT32_MAX) : m_maxSize(size), m_pairs(MemTag::SegmentAtlasChartCandidates) {}\n\n\tfloat peekCost() const\n\t{\n\t\treturn m_pairs.back().cost;\n\t}\n\n\tuint32_t peekFace() const\n\t{\n\t\treturn m_pairs.back().face;\n\t}\n\n\tvoid push(float cost, uint32_t face)\n\t{\n\t\tconst Pair p = { cost, face };\n\t\tif (m_pairs.isEmpty() || cost < peekCost())\n\t\t\tm_pairs.push_back(p);\n\t\telse {\n\t\t\tuint32_t i = 0;\n\t\t\tconst uint32_t count = m_pairs.size();\n\t\t\tfor (; i < count; i++) {\n\t\t\t\tif (m_pairs[i].cost < cost)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tm_pairs.insertAt(i, p);\n\t\t\tif (m_pairs.size() > m_maxSize)\n\t\t\t\tm_pairs.removeAt(0);\n\t\t}\n\t}\n\n\tuint32_t pop()\n\t{\n\t\tXA_DEBUG_ASSERT(!m_pairs.isEmpty());\n\t\tuint32_t f = m_pairs.back().face;\n\t\tm_pairs.pop_back();\n\t\treturn f;\n\t}\n\n\tXA_INLINE void clear()\n\t{\n\t\tm_pairs.clear();\n\t}\n\n\tXA_INLINE uint32_t count() const\n\t{\n\t\treturn m_pairs.size();\n\t}\n\nprivate:\n\tconst uint32_t m_maxSize;\n\n\tstruct Pair\n\t{\n\t\tfloat cost;\n\t\tuint32_t face;\n\t};\n\n\tArray<Pair> m_pairs;\n};\n\nstruct AtlasData\n{\n\tChartOptions options;\n\tconst Mesh *mesh = nullptr;\n\tArray<float> edgeDihedralAngles;\n\tArray<float> edgeLengths;\n\tArray<float> faceAreas;\n\tArray<float> faceUvAreas; // Can be negative.\n\tArray<Vector3> faceNormals;\n\tBitArray isFaceInChart;\n\n\tAtlasData() : edgeDihedralAngles(MemTag::SegmentAtlasMeshData), edgeLengths(MemTag::SegmentAtlasMeshData), faceAreas(MemTag::SegmentAtlasMeshData), faceNormals(MemTag::SegmentAtlasMeshData) {}\n\n\tvoid compute()\n\t{\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tconst uint32_t edgeCount = mesh->edgeCount();\n\t\tedgeDihedralAngles.resize(edgeCount);\n\t\tedgeLengths.resize(edgeCount);\n\t\tfaceAreas.resize(faceCount);\n\t\tif (options.useInputMeshUvs)\n\t\t\tfaceUvAreas.resize(faceCount);\n\t\tfaceNormals.resize(faceCount);\n\t\tisFaceInChart.resize(faceCount);\n\t\tisFaceInChart.zeroOutMemory();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t edge = f * 3 + i;\n\t\t\t\tconst Vector3 &p0 = mesh->position(mesh->vertexAt(meshEdgeIndex0(edge)));\n\t\t\t\tconst Vector3 &p1 = mesh->position(mesh->vertexAt(meshEdgeIndex1(edge)));\n\t\t\t\tedgeLengths[edge] = length(p1 - p0);\n\t\t\t\tXA_DEBUG_ASSERT(edgeLengths[edge] > 0.0f);\n\t\t\t}\n\t\t\tfaceAreas[f] = mesh->computeFaceArea(f);\n\t\t\tXA_DEBUG_ASSERT(faceAreas[f] > 0.0f);\n\t\t\tif (options.useInputMeshUvs)\n\t\t\t\tfaceUvAreas[f] = mesh->computeFaceParametricArea(f);\n\t\t\tfaceNormals[f] = mesh->computeFaceNormal(f);\n\t\t}\n\t\tfor (uint32_t face = 0; face < faceCount; face++) {\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t edge = face * 3 + i;\n\t\t\t\tconst uint32_t oedge = mesh->oppositeEdge(edge);\n\t\t\t\tif (oedge == UINT32_MAX)\n\t\t\t\t\tedgeDihedralAngles[edge] = FLT_MAX;\n\t\t\t\telse {\n\t\t\t\t\tconst uint32_t oface = meshEdgeFace(oedge);\n\t\t\t\t\tedgeDihedralAngles[edge] = edgeDihedralAngles[oedge] = dot(faceNormals[face], faceNormals[oface]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// If MeshDecl::vertexUvData is set on input meshes, find charts by floodfilling faces in world/model space without crossing UV seams.\nstruct OriginalUvCharts\n{\n\tOriginalUvCharts(AtlasData &data) : m_data(data) {}\n\tuint32_t chartCount() const { return m_charts.size(); }\n\tconst Basis &chartBasis(uint32_t chartIndex) const { return m_chartBasis[chartIndex]; }\n\n\tConstArrayView<uint32_t> chartFaces(uint32_t chartIndex) const\n\t{\n\t\tconst Chart &chart = m_charts[chartIndex];\n\t\treturn ConstArrayView<uint32_t>(&m_chartFaces[chart.firstFace], chart.faceCount);\n\t}\n\n\tvoid compute()\n\t{\n\t\tm_charts.clear();\n\t\tm_chartFaces.clear();\n\t\tconst Mesh *mesh = m_data.mesh;\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (m_data.isFaceInChart.get(f))\n\t\t\t\tcontinue;\n\t\t\tif (isZero(m_data.faceUvAreas[f], kAreaEpsilon))\n\t\t\t\tcontinue; // Face must have valid UVs.\n\t\t\t// Found an unassigned face, create a new chart.\n\t\t\tChart chart;\n\t\t\tchart.firstFace = m_chartFaces.size();\n\t\t\tchart.faceCount = 1;\n\t\t\tm_chartFaces.push_back(f);\n\t\t\tm_data.isFaceInChart.set(f);\n\t\t\tfloodfillFaces(chart);\n\t\t\tm_charts.push_back(chart);\n\t\t}\n\t\t// Compute basis for each chart.\n\t\tm_chartBasis.resize(m_charts.size());\n\t\tfor (uint32_t c = 0; c < m_charts.size(); c++)\n\t\t{\n\t\t\tconst Chart &chart = m_charts[c];\n\t\t\tm_tempPoints.resize(chart.faceCount * 3);\n\t\t\tfor (uint32_t f = 0; f < chart.faceCount; f++) {\n\t\t\t\tconst uint32_t face = m_chartFaces[chart.firstFace + f];\n\t\t\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\t\t\tm_tempPoints[f * 3 + i] = m_data.mesh->position(m_data.mesh->vertexAt(face * 3 + i));\n\t\t\t}\n\t\t\tFit::computeBasis(m_tempPoints, &m_chartBasis[c]);\n\t\t}\n\t}\n\nprivate:\n\tstruct Chart\n\t{\n\t\tuint32_t firstFace, faceCount;\n\t};\n\n\tvoid floodfillFaces(Chart &chart)\n\t{\n\t\tconst bool isFaceAreaNegative = m_data.faceUvAreas[m_chartFaces[chart.firstFace]] < 0.0f;\n\t\tfor (;;) {\n\t\t\tbool newFaceAdded = false;\n\t\t\tconst uint32_t faceCount = chart.faceCount;\n\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\tconst uint32_t sourceFace = m_chartFaces[chart.firstFace + f];\n\t\t\t\tfor (Mesh::FaceEdgeIterator edgeIt(m_data.mesh, sourceFace); !edgeIt.isDone(); edgeIt.advance()) {\n\t\t\t\t\tconst uint32_t face = edgeIt.oppositeFace();\n\t\t\t\t\tif (face == UINT32_MAX)\n\t\t\t\t\t\tcontinue; // Boundary edge.\n\t\t\t\t\tif (m_data.isFaceInChart.get(face))\n\t\t\t\t\t\tcontinue; // Already assigned to a chart.\n\t\t\t\t\tif (isZero(m_data.faceUvAreas[face], kAreaEpsilon))\n\t\t\t\t\t\tcontinue; // Face must have valid UVs.\n\t\t\t\t\tif ((m_data.faceUvAreas[face] < 0.0f) != isFaceAreaNegative)\n\t\t\t\t\t\tcontinue; // Face winding is opposite of the first chart face.\n\t\t\t\t\tconst Vector2 &uv0 = m_data.mesh->texcoord(edgeIt.vertex0());\n\t\t\t\t\tconst Vector2 &uv1 = m_data.mesh->texcoord(edgeIt.vertex1());\n\t\t\t\t\tconst Vector2 &ouv0 = m_data.mesh->texcoord(m_data.mesh->vertexAt(meshEdgeIndex0(edgeIt.oppositeEdge())));\n\t\t\t\t\tconst Vector2 &ouv1 = m_data.mesh->texcoord(m_data.mesh->vertexAt(meshEdgeIndex1(edgeIt.oppositeEdge())));\n\t\t\t\t\tif (!equal(uv0, ouv1, m_data.mesh->epsilon()) || !equal(uv1, ouv0, m_data.mesh->epsilon()))\n\t\t\t\t\t\tcontinue; // UVs must match exactly.\n\t\t\t\t\tm_chartFaces.push_back(face);\n\t\t\t\t\tchart.faceCount++;\n\t\t\t\t\tm_data.isFaceInChart.set(face);\n\t\t\t\t\tnewFaceAdded = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!newFaceAdded)\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tAtlasData &m_data;\n\tArray<Chart> m_charts;\n\tArray<Basis> m_chartBasis;\n\tArray<uint32_t> m_chartFaces;\n\tArray<Vector3> m_tempPoints;\n};\n\n#if XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS\nstatic uint32_t s_planarRegionsCurrentRegion;\nstatic uint32_t s_planarRegionsCurrentVertex;\n#endif\n\nstruct PlanarCharts\n{\n\tPlanarCharts(AtlasData &data) : m_data(data), m_nextRegionFace(MemTag::SegmentAtlasPlanarRegions), m_faceToRegionId(MemTag::SegmentAtlasPlanarRegions) {}\n\tconst Basis &chartBasis(uint32_t chartIndex) const { return m_chartBasis[chartIndex]; }\n\tuint32_t chartCount() const { return m_charts.size(); }\n\n\tConstArrayView<uint32_t> chartFaces(uint32_t chartIndex) const\n\t{\n\t\tconst Chart &chart = m_charts[chartIndex];\n\t\treturn ConstArrayView<uint32_t>(&m_chartFaces[chart.firstFace], chart.faceCount);\n\t}\n\n\tuint32_t regionIdFromFace(uint32_t face) const { return m_faceToRegionId[face]; }\n\tuint32_t nextRegionFace(uint32_t face) const { return m_nextRegionFace[face]; }\n\tfloat regionArea(uint32_t region) const { return m_regionAreas[region]; }\n\n\tvoid compute()\n\t{\n\t\tconst uint32_t faceCount = m_data.mesh->faceCount();\n\t\t// Precompute regions of coplanar incident faces.\n\t\tm_regionFirstFace.clear();\n\t\tm_nextRegionFace.resize(faceCount);\n\t\tm_faceToRegionId.resize(faceCount);\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tm_nextRegionFace[f] = f;\n\t\t\tm_faceToRegionId[f] = UINT32_MAX;\n\t\t}\n\t\tArray<uint32_t> faceStack;\n\t\tfaceStack.reserve(min(faceCount, 16u));\n\t\tuint32_t regionCount = 0;\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (m_nextRegionFace[f] != f)\n\t\t\t\tcontinue; // Already assigned.\n\t\t\tif (m_data.isFaceInChart.get(f))\n\t\t\t\tcontinue; // Already in a chart.\n\t\t\tfaceStack.clear();\n\t\t\tfaceStack.push_back(f);\n\t\t\tfor (;;) {\n\t\t\t\tif (faceStack.isEmpty())\n\t\t\t\t\tbreak;\n\t\t\t\tconst uint32_t face = faceStack.back();\n\t\t\t\tm_faceToRegionId[face] = regionCount;\n\t\t\t\tfaceStack.pop_back();\n\t\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\t\tconst uint32_t oface = it.oppositeFace();\n\t\t\t\t\tif (it.isBoundary())\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (m_nextRegionFace[oface] != oface)\n\t\t\t\t\t\tcontinue; // Already assigned.\n\t\t\t\t\tif (m_data.isFaceInChart.get(oface))\n\t\t\t\t\t\tcontinue; // Already in a chart.\n\t\t\t\t\tif (!equal(dot(m_data.faceNormals[face], m_data.faceNormals[oface]), 1.0f, kEpsilon))\n\t\t\t\t\t\tcontinue; // Not coplanar.\n\t\t\t\t\tconst uint32_t next = m_nextRegionFace[face];\n\t\t\t\t\tm_nextRegionFace[face] = oface;\n\t\t\t\t\tm_nextRegionFace[oface] = next;\n\t\t\t\t\tm_faceToRegionId[oface] = regionCount;\n\t\t\t\t\tfaceStack.push_back(oface);\n\t\t\t\t}\n\t\t\t}\n\t\t\tm_regionFirstFace.push_back(f);\n\t\t\tregionCount++;\n\t\t}\n#if XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS\n\t\tstatic std::mutex s_mutex;\n\t\t{\n\t\t\tstd::lock_guard<std::mutex> lock(s_mutex);\n\t\t\tFILE *file;\n\t\t\tXA_FOPEN(file, \"debug_mesh_planar_regions.obj\", s_planarRegionsCurrentRegion == 0 ? \"w\" : \"a\");\n\t\t\tif (file) {\n\t\t\t\tm_data.mesh->writeObjVertices(file);\n\t\t\t\tfprintf(file, \"s off\\n\");\n\t\t\t\tfor (uint32_t i = 0; i < regionCount; i++) {\n\t\t\t\t\tfprintf(file, \"o region%u\\n\", s_planarRegionsCurrentRegion);\n\t\t\t\t\tfor (uint32_t j = 0; j < faceCount; j++) {\n\t\t\t\t\t\tif (m_faceToRegionId[j] == i)\n\t\t\t\t\t\t\tm_data.mesh->writeObjFace(file, j, s_planarRegionsCurrentVertex);\n\t\t\t\t\t}\n\t\t\t\t\ts_planarRegionsCurrentRegion++;\n\t\t\t\t}\n\t\t\t\ts_planarRegionsCurrentVertex += m_data.mesh->vertexCount();\n\t\t\t\tfclose(file);\n\t\t\t}\n\t\t}\n#endif\n\t\t// Precompute planar region areas.\n\t\tm_regionAreas.resize(regionCount);\n\t\tm_regionAreas.zeroOutMemory();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (m_faceToRegionId[f] == UINT32_MAX)\n\t\t\t\tcontinue;\n\t\t\tm_regionAreas[m_faceToRegionId[f]] += m_data.faceAreas[f];\n\t\t}\n\t\t// Create charts from suitable planar regions.\n\t\t// The dihedral angle of all boundary edges must be >= 90 degrees.\n\t\tm_charts.clear();\n\t\tm_chartFaces.clear();\n\t\tfor (uint32_t region = 0; region < regionCount; region++) {\n\t\t\tconst uint32_t firstRegionFace = m_regionFirstFace[region];\n\t\t\tuint32_t face = firstRegionFace;\n\t\t\tbool createChart = true;\n\t\t\tdo {\n\t\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\t\tif (it.isBoundary())\n\t\t\t\t\t\tcontinue; // Ignore mesh boundary edges.\n\t\t\t\t\tconst uint32_t oface = it.oppositeFace();\n\t\t\t\t\tif (m_faceToRegionId[oface] == region)\n\t\t\t\t\t\tcontinue; // Ignore internal edges.\n\t\t\t\t\tconst float angle = m_data.edgeDihedralAngles[it.edge()];\n\t\t\t\t\tif (angle > 0.0f && angle < FLT_MAX) { // FLT_MAX on boundaries.\n\t\t\t\t\t\tcreateChart = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!createChart)\n\t\t\t\t\tbreak;\n\t\t\t\tface = m_nextRegionFace[face];\n\t\t\t}\n\t\t\twhile (face != firstRegionFace);\n\t\t\t// Create a chart.\n\t\t\tif (createChart) {\n\t\t\t\tChart chart;\n\t\t\t\tchart.firstFace = m_chartFaces.size();\n\t\t\t\tchart.faceCount = 0;\n\t\t\t\tface = firstRegionFace;\n\t\t\t\tdo {\n\t\t\t\t\tm_data.isFaceInChart.set(face);\n\t\t\t\t\tm_chartFaces.push_back(face);\n\t\t\t\t\tchart.faceCount++;\n\t\t\t\t\tface = m_nextRegionFace[face];\n\t\t\t\t}\n\t\t\t\twhile (face != firstRegionFace);\n\t\t\t\tm_charts.push_back(chart);\n\t\t\t}\n\t\t}\n\t\t// Compute basis for each chart using the first face normal (all faces have the same normal).\n\t\tm_chartBasis.resize(m_charts.size());\n\t\tfor (uint32_t c = 0; c < m_charts.size(); c++)\n\t\t{\n\t\t\tconst uint32_t face = m_chartFaces[m_charts[c].firstFace];\n\t\t\tBasis &basis = m_chartBasis[c];\n\t\t\tbasis.normal = m_data.faceNormals[face];\n\t\t\tbasis.tangent = Basis::computeTangent(basis.normal);\n\t\t\tbasis.bitangent = Basis::computeBitangent(basis.normal, basis.tangent);\n\t\t}\n\t}\n\nprivate:\n\tstruct Chart\n\t{\n\t\tuint32_t firstFace, faceCount;\n\t};\n\n\tAtlasData &m_data;\n\tArray<uint32_t> m_regionFirstFace;\n\tArray<uint32_t> m_nextRegionFace;\n\tArray<uint32_t> m_faceToRegionId;\n\tArray<float> m_regionAreas;\n\tArray<Chart> m_charts;\n\tArray<uint32_t> m_chartFaces;\n\tArray<Basis> m_chartBasis;\n};\n\nstruct ClusteredCharts\n{\n\tClusteredCharts(AtlasData &data, const PlanarCharts &planarCharts) : m_data(data), m_planarCharts(planarCharts), m_texcoords(MemTag::SegmentAtlasMeshData), m_bestTriangles(10), m_placingSeeds(false) {}\n\n\t~ClusteredCharts()\n\t{\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tm_charts[i]->~Chart();\n\t\t\tXA_FREE(m_charts[i]);\n\t\t}\n\t}\n\n\tuint32_t chartCount() const { return m_charts.size(); }\n\tConstArrayView<uint32_t> chartFaces(uint32_t chartIndex) const { return m_charts[chartIndex]->faces; }\n\tconst Basis &chartBasis(uint32_t chartIndex) const { return m_charts[chartIndex]->basis; }\n\n\tvoid compute()\n\t{\n\t\tconst uint32_t faceCount = m_data.mesh->faceCount();\n\t\tm_facesLeft = 0;\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tif (!m_data.isFaceInChart.get(i))\n\t\t\t\tm_facesLeft++;\n\t\t}\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tm_charts[i]->~Chart();\n\t\t\tXA_FREE(m_charts[i]);\n\t\t}\n\t\tm_charts.clear();\n\t\tm_faceCharts.resize(faceCount);\n\t\tm_faceCharts.fill(-1);\n\t\tm_texcoords.resize(faceCount * 3);\n\t\tif (m_facesLeft == 0)\n\t\t\treturn;\n\t\t// Create initial charts greedely.\n\t\tplaceSeeds(m_data.options.maxCost * 0.5f);\n\t\tif (m_data.options.maxIterations == 0) {\n\t\t\tXA_DEBUG_ASSERT(m_facesLeft == 0);\n\t\t\treturn;\n\t\t}\n\t\trelocateSeeds();\n\t\tresetCharts();\n\t\t// Restart process growing charts in parallel.\n\t\tuint32_t iteration = 0;\n\t\tfor (;;) {\n\t\t\tgrowCharts(m_data.options.maxCost);\n\t\t\t// When charts cannot grow more: fill holes, merge charts, relocate seeds and start new iteration.\n\t\t\tfillHoles(m_data.options.maxCost * 0.5f);\n#if XA_MERGE_CHARTS\n\t\t\tmergeCharts();\n#endif\n\t\t\tif (++iteration == m_data.options.maxIterations)\n\t\t\t\tbreak;\n\t\t\tif (!relocateSeeds())\n\t\t\t\tbreak;\n\t\t\tresetCharts();\n\t\t}\n\t\t// Make sure no holes are left!\n\t\tXA_DEBUG_ASSERT(m_facesLeft == 0);\n\t}\n\nprivate:\n\tstruct Chart\n\t{\n\t\tChart() : faces(MemTag::SegmentAtlasChartFaces) {}\n\n\t\tint id = -1;\n\t\tBasis basis; // Best fit normal.\n\t\tfloat area = 0.0f;\n\t\tfloat boundaryLength = 0.0f;\n\t\tVector3 centroidSum = Vector3(0.0f); // Sum of chart face centroids.\n\t\tVector3 centroid = Vector3(0.0f); // Average centroid of chart faces.\n\t\tArray<uint32_t> faces;\n\t\tArray<uint32_t> failedPlanarRegions;\n\t\tCostQueue candidates;\n\t\tuint32_t seed;\n\t};\n\n\tvoid placeSeeds(float threshold)\n\t{\n\t\tXA_PROFILE_START(clusteredChartsPlaceSeeds)\n\t\tm_placingSeeds = true;\n\t\t// Instead of using a predefiened number of seeds:\n\t\t// - Add seeds one by one, growing chart until a certain treshold.\n\t\t// - Undo charts and restart growing process.\n\t\t// @@ How can we give preference to faces far from sharp features as in the LSCM paper?\n\t\t//   - those points can be found using a simple flood filling algorithm.\n\t\t//   - how do we weight the probabilities?\n\t\twhile (m_facesLeft > 0)\n\t\t\tcreateChart(threshold);\n\t\tm_placingSeeds = false;\n\t\tXA_PROFILE_END(clusteredChartsPlaceSeeds)\n\t}\n\n\t// Returns true if any of the charts can grow more.\n\tvoid growCharts(float threshold)\n\t{\n\t\tXA_PROFILE_START(clusteredChartsGrow)\n\t\tfor (;;) {\n\t\t\tif (m_facesLeft == 0)\n\t\t\t\tbreak;\n\t\t\t// Get the single best candidate out of the chart best candidates.\n\t\t\tuint32_t bestFace = UINT32_MAX, bestChart = UINT32_MAX;\n\t\t\tfloat lowestCost = FLT_MAX;\n\t\t\tfor (uint32_t i = 0; i < m_charts.size(); i++) {\n\t\t\t\tChart *chart = m_charts[i];\n\t\t\t\t// Get the best candidate from the chart.\n\t\t\t\t// Cleanup any best candidates that have been claimed by another chart.\n\t\t\t\tuint32_t face = UINT32_MAX;\n\t\t\t\tfloat cost = FLT_MAX;\n\t\t\t\tfor (;;) {\n\t\t\t\t\tif (chart->candidates.count() == 0)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcost = chart->candidates.peekCost();\n\t\t\t\t\tface = chart->candidates.peekFace();\n\t\t\t\t\tif (!m_data.isFaceInChart.get(face))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Face belongs to another chart. Pop from queue so the next best candidate can be retrieved.\n\t\t\t\t\t\tchart->candidates.pop();\n\t\t\t\t\t\tface = UINT32_MAX;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (face == UINT32_MAX)\n\t\t\t\t\tcontinue; // No candidates for this chart.\n\t\t\t\t// See if best candidate overall.\n\t\t\t\tif (cost < lowestCost) {\n\t\t\t\t\tlowestCost = cost;\n\t\t\t\t\tbestFace = face;\n\t\t\t\t\tbestChart = i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (bestFace == UINT32_MAX || lowestCost > threshold)\n\t\t\t\tbreak;\n\t\t\tChart *chart = m_charts[bestChart];\n\t\t\tchart->candidates.pop(); // Pop the selected candidate from the queue.\n\t\t\tif (!addFaceToChart(chart, bestFace))\n\t\t\t\tchart->failedPlanarRegions.push_back(m_planarCharts.regionIdFromFace(bestFace));\n\t\t}\n\t\tXA_PROFILE_END(clusteredChartsGrow)\n\t}\n\n\tvoid resetCharts()\n\t{\n\t\tXA_PROFILE_START(clusteredChartsReset)\n\t\tconst uint32_t faceCount = m_data.mesh->faceCount();\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tif (m_faceCharts[i] != -1)\n\t\t\t\tm_data.isFaceInChart.unset(i);\n\t\t\tm_faceCharts[i] = -1;\n\t\t}\n\t\tm_facesLeft = 0;\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tif (!m_data.isFaceInChart.get(i))\n\t\t\t\tm_facesLeft++;\n\t\t}\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tChart *chart = m_charts[i];\n\t\t\tchart->area = 0.0f;\n\t\t\tchart->boundaryLength = 0.0f;\n\t\t\tchart->basis.normal = Vector3(0.0f);\n\t\t\tchart->basis.tangent = Vector3(0.0f);\n\t\t\tchart->basis.bitangent = Vector3(0.0f);\n\t\t\tchart->centroidSum = Vector3(0.0f);\n\t\t\tchart->centroid = Vector3(0.0f);\n\t\t\tchart->faces.clear();\n\t\t\tchart->candidates.clear();\n\t\t\tchart->failedPlanarRegions.clear();\n\t\t\taddFaceToChart(chart, chart->seed);\n\t\t}\n\t\tXA_PROFILE_END(clusteredChartsReset)\n\t}\n\n\tbool relocateSeeds()\n\t{\n\t\tXA_PROFILE_START(clusteredChartsRelocateSeeds)\n\t\tbool anySeedChanged = false;\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tif (relocateSeed(m_charts[i])) {\n\t\t\t\tanySeedChanged = true;\n\t\t\t}\n\t\t}\n\t\tXA_PROFILE_END(clusteredChartsRelocateSeeds)\n\t\treturn anySeedChanged;\n\t}\n\n\tvoid fillHoles(float threshold)\n\t{\n\t\tXA_PROFILE_START(clusteredChartsFillHoles)\n\t\twhile (m_facesLeft > 0)\n\t\t\tcreateChart(threshold);\n\t\tXA_PROFILE_END(clusteredChartsFillHoles)\n\t}\n\n#if XA_MERGE_CHARTS\n\tvoid mergeCharts()\n\t{\n\t\tXA_PROFILE_START(clusteredChartsMerge)\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\t// Merge charts progressively until there's none left to merge.\n\t\tfor (;;) {\n\t\t\tbool merged = false;\n\t\t\tfor (int c = chartCount - 1; c >= 0; c--) {\n\t\t\t\tChart *chart = m_charts[c];\n\t\t\t\tif (chart == nullptr)\n\t\t\t\t\tcontinue;\n\t\t\t\tfloat externalBoundaryLength = 0.0f;\n\t\t\t\tm_sharedBoundaryLengths.resize(chartCount);\n\t\t\t\tm_sharedBoundaryLengths.zeroOutMemory();\n\t\t\t\tm_sharedBoundaryLengthsNoSeams.resize(chartCount);\n\t\t\t\tm_sharedBoundaryLengthsNoSeams.zeroOutMemory();\n\t\t\t\tm_sharedBoundaryEdgeCountNoSeams.resize(chartCount);\n\t\t\t\tm_sharedBoundaryEdgeCountNoSeams.zeroOutMemory();\n\t\t\t\tconst uint32_t faceCount = chart->faces.size();\n\t\t\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\t\t\tconst uint32_t f = chart->faces[i];\n\t\t\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, f); !it.isDone(); it.advance()) {\n\t\t\t\t\t\tconst float l = m_data.edgeLengths[it.edge()];\n\t\t\t\t\t\tif (it.isBoundary()) {\n\t\t\t\t\t\t\texternalBoundaryLength += l;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst int neighborChart = m_faceCharts[it.oppositeFace()];\n\t\t\t\t\t\t\tif (neighborChart == -1)\n\t\t\t\t\t\t\t\texternalBoundaryLength += l;\n\t\t\t\t\t\t\telse if (m_charts[neighborChart] != chart) {\n\t\t\t\t\t\t\t\tif ((it.isSeam() && (isNormalSeam(it.edge()) || it.isTextureSeam()))) {\n\t\t\t\t\t\t\t\t\texternalBoundaryLength += l;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tm_sharedBoundaryLengths[neighborChart] += l;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tm_sharedBoundaryLengthsNoSeams[neighborChart] += l;\n\t\t\t\t\t\t\t\tm_sharedBoundaryEdgeCountNoSeams[neighborChart]++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (int cc = chartCount - 1; cc >= 0; cc--) {\n\t\t\t\t\tif (cc == c)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tChart *chart2 = m_charts[cc];\n\t\t\t\t\tif (chart2 == nullptr)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t// Must share a boundary.\n\t\t\t\t\tif (m_sharedBoundaryLengths[cc] <= 0.0f)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t// Compare proxies.\n\t\t\t\t\tif (dot(chart2->basis.normal, chart->basis.normal) < XA_MERGE_CHARTS_MIN_NORMAL_DEVIATION)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t// Obey max chart area and boundary length.\n\t\t\t\t\tif (m_data.options.maxChartArea > 0.0f && chart->area + chart2->area > m_data.options.maxChartArea)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (m_data.options.maxBoundaryLength > 0.0f && chart->boundaryLength + chart2->boundaryLength - m_sharedBoundaryLengthsNoSeams[cc] > m_data.options.maxBoundaryLength)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t// Merge if chart2 has a single face.\n\t\t\t\t\t// chart1 must have more than 1 face.\n\t\t\t\t\t// chart2 area must be <= 10% of chart1 area.\n\t\t\t\t\tif (m_sharedBoundaryLengthsNoSeams[cc] > 0.0f && chart->faces.size() > 1 && chart2->faces.size() == 1 && chart2->area <= chart->area * 0.1f)\n\t\t\t\t\t\tgoto merge;\n\t\t\t\t\t// Merge if chart2 has two faces (probably a quad), and chart1 bounds at least 2 of its edges.\n\t\t\t\t\tif (chart2->faces.size() == 2 && m_sharedBoundaryEdgeCountNoSeams[cc] >= 2)\n\t\t\t\t\t\tgoto merge;\n\t\t\t\t\t// Merge if chart2 is wholely inside chart1, ignoring seams.\n\t\t\t\t\tif (m_sharedBoundaryLengthsNoSeams[cc] > 0.0f && equal(m_sharedBoundaryLengthsNoSeams[cc], chart2->boundaryLength, kEpsilon))\n\t\t\t\t\t\tgoto merge;\n\t\t\t\t\tif (m_sharedBoundaryLengths[cc] > 0.2f * max(0.0f, chart->boundaryLength - externalBoundaryLength) ||\n\t\t\t\t\t\tm_sharedBoundaryLengths[cc] > 0.75f * chart2->boundaryLength)\n\t\t\t\t\t\tgoto merge;\n\t\t\t\t\tcontinue;\n\t\t\t\tmerge:\n\t\t\t\t\tif (!mergeChart(chart, chart2, m_sharedBoundaryLengthsNoSeams[cc]))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tmerged = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (merged)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (!merged)\n\t\t\t\tbreak;\n\t\t}\n\t\t// Remove deleted charts.\n\t\tfor (int c = 0; c < int32_t(m_charts.size()); /*do not increment if removed*/) {\n\t\t\tif (m_charts[c] == nullptr) {\n\t\t\t\tm_charts.removeAt(c);\n\t\t\t\t// Update m_faceCharts.\n\t\t\t\tconst uint32_t faceCount = m_faceCharts.size();\n\t\t\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\t\t\tXA_DEBUG_ASSERT(m_faceCharts[i] != c);\n\t\t\t\t\tXA_DEBUG_ASSERT(m_faceCharts[i] <= int32_t(m_charts.size()));\n\t\t\t\t\tif (m_faceCharts[i] > c) {\n\t\t\t\t\t\tm_faceCharts[i]--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tm_charts[c]->id = c;\n\t\t\t\tc++;\n\t\t\t}\n\t\t}\n\t\tXA_PROFILE_END(clusteredChartsMerge)\n\t}\n#endif\n\nprivate:\n\tvoid createChart(float threshold)\n\t{\n\t\tChart *chart = XA_NEW(MemTag::Default, Chart);\n\t\tchart->id = (int)m_charts.size();\n\t\tm_charts.push_back(chart);\n\t\t// Pick a face not used by any chart yet, belonging to the largest planar region.\n\t\tchart->seed = 0;\n\t\tfloat largestArea = 0.0f;\n\t\tfor (uint32_t f = 0; f < m_data.mesh->faceCount(); f++) {\n\t\t\tif (m_data.isFaceInChart.get(f))\n\t\t\t\tcontinue;\n\t\t\tconst float area = m_planarCharts.regionArea(m_planarCharts.regionIdFromFace(f));\n\t\t\tif (area > largestArea) {\n\t\t\t\tlargestArea = area;\n\t\t\t\tchart->seed = f;\n\t\t\t}\n\t\t}\n\t\taddFaceToChart(chart, chart->seed);\n\t\t// Grow the chart as much as possible within the given threshold.\n\t\tfor (;;) {\n\t\t\tif (chart->candidates.count() == 0 || chart->candidates.peekCost() > threshold)\n\t\t\t\tbreak;\n\t\t\tconst uint32_t f = chart->candidates.pop();\n\t\t\tif (m_data.isFaceInChart.get(f))\n\t\t\t\tcontinue;\n\t\t\tif (!addFaceToChart(chart, f)) {\n\t\t\t\tchart->failedPlanarRegions.push_back(m_planarCharts.regionIdFromFace(f));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t}\n\n\tbool isChartBoundaryEdge(const Chart *chart, uint32_t edge) const\n\t{\n\t\tconst uint32_t oppositeEdge = m_data.mesh->oppositeEdge(edge);\n\t\tconst uint32_t oppositeFace = meshEdgeFace(oppositeEdge);\n\t\treturn oppositeEdge == UINT32_MAX || m_faceCharts[oppositeFace] != chart->id;\n\t}\n\n\tbool computeChartBasis(Chart *chart, Basis *basis)\n\t{\n\t\tconst uint32_t faceCount = chart->faces.size();\n\t\tm_tempPoints.resize(chart->faces.size() * 3);\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tconst uint32_t f = chart->faces[i];\n\t\t\tfor (uint32_t j = 0; j < 3; j++)\n\t\t\t\tm_tempPoints[i * 3 + j] = m_data.mesh->position(m_data.mesh->vertexAt(f * 3 + j));\n\t\t}\n\t\treturn Fit::computeBasis(m_tempPoints, basis);\n\t}\n\n\tbool isFaceFlipped(uint32_t face) const\n\t{\n\t\tconst Vector2 &v1 = m_texcoords[face * 3 + 0];\n\t\tconst Vector2 &v2 = m_texcoords[face * 3 + 1];\n\t\tconst Vector2 &v3 = m_texcoords[face * 3 + 2];\n\t\tconst float parametricArea = ((v2.x - v1.x) * (v3.y - v1.y) - (v3.x - v1.x) * (v2.y - v1.y)) * 0.5f;\n\t\treturn parametricArea < 0.0f;\n\t}\n\n\tvoid parameterizeChart(const Chart *chart)\n\t{\n\t\tconst uint32_t faceCount = chart->faces.size();\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tconst uint32_t face = chart->faces[i];\n\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\tconst uint32_t offset = face * 3 + j;\n\t\t\t\tconst Vector3 &pos = m_data.mesh->position(m_data.mesh->vertexAt(offset));\n\t\t\t\tm_texcoords[offset] = Vector2(dot(chart->basis.tangent, pos), dot(chart->basis.bitangent, pos));\n\t\t\t}\n\t\t}\n\t}\n\n\t// m_faceCharts for the chart faces must be set to the chart ID. Needed to compute boundary edges.\n\tbool isChartParameterizationValid(const Chart *chart)\n\t{\n\t\tconst uint32_t faceCount = chart->faces.size();\n\t\t// Check for flipped faces in the parameterization. OK if all are flipped.\n\t\tuint32_t flippedFaceCount = 0;\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tif (isFaceFlipped(chart->faces[i]))\n\t\t\t\tflippedFaceCount++;\n\t\t}\n\t\tif (flippedFaceCount != 0 && flippedFaceCount != faceCount)\n\t\t\treturn false;\n\t\t// Check for boundary intersection in the parameterization.\n\t\tXA_PROFILE_START(clusteredChartsPlaceSeedsBoundaryIntersection)\n\t\tXA_PROFILE_START(clusteredChartsGrowBoundaryIntersection)\n\t\tm_boundaryGrid.reset(m_texcoords);\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tconst uint32_t f = chart->faces[i];\n\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\tconst uint32_t edge = f * 3 + j;\n\t\t\t\tif (isChartBoundaryEdge(chart, edge))\n\t\t\t\t\tm_boundaryGrid.append(edge);\n\t\t\t}\n\t\t}\n\t\tconst bool intersection = m_boundaryGrid.intersect(m_data.mesh->epsilon());\n#if XA_PROFILE\n\t\tif (m_placingSeeds)\n\t\t\tXA_PROFILE_END(clusteredChartsPlaceSeedsBoundaryIntersection)\n\t\telse\n\t\t\tXA_PROFILE_END(clusteredChartsGrowBoundaryIntersection)\n#endif\n\t\tif (intersection)\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\n\tbool addFaceToChart(Chart *chart, uint32_t face)\n\t{\n\t\tXA_DEBUG_ASSERT(!m_data.isFaceInChart.get(face));\n\t\tconst uint32_t oldFaceCount = chart->faces.size();\n\t\tconst bool firstFace = oldFaceCount == 0;\n\t\t// Append the face and any coplanar connected faces to the chart faces array.\n\t\tchart->faces.push_back(face);\n\t\tuint32_t coplanarFace = m_planarCharts.nextRegionFace(face);\n\t\twhile (coplanarFace != face) {\n\t\t\tXA_DEBUG_ASSERT(!m_data.isFaceInChart.get(coplanarFace));\n\t\t\tchart->faces.push_back(coplanarFace);\n\t\t\tcoplanarFace = m_planarCharts.nextRegionFace(coplanarFace);\n\t\t}\n\t\tconst uint32_t faceCount = chart->faces.size();\n\t\t// Compute basis.\n\t\tBasis basis;\n\t\tif (firstFace) {\n\t\t\t// Use the first face normal.\n\t\t\t// Use any edge as the tangent vector.\n\t\t\tbasis.normal = m_data.faceNormals[face];\n\t\t\tbasis.tangent = normalize(m_data.mesh->position(m_data.mesh->vertexAt(face * 3 + 0)) - m_data.mesh->position(m_data.mesh->vertexAt(face * 3 + 1)));\n\t\t\tbasis.bitangent = cross(basis.normal, basis.tangent);\n\t\t} else {\n\t\t\t// Use best fit normal.\n\t\t\tif (!computeChartBasis(chart, &basis)) {\n\t\t\t\tchart->faces.resize(oldFaceCount);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (dot(basis.normal, m_data.faceNormals[face]) < 0.0f) // Flip normal if oriented in the wrong direction.\n\t\t\t\tbasis.normal = -basis.normal;\n\t\t}\n\t\tif (!firstFace) {\n\t\t\t// Compute orthogonal parameterization and check that it is valid.\n\t\t\tparameterizeChart(chart);\n\t\t\tfor (uint32_t i = oldFaceCount; i < faceCount; i++)\n\t\t\t\tm_faceCharts[chart->faces[i]] = chart->id;\n\t\t\tif (!isChartParameterizationValid(chart)) {\n\t\t\t\tfor (uint32_t i = oldFaceCount; i < faceCount; i++)\n\t\t\t\t\tm_faceCharts[chart->faces[i]] = -1;\n\t\t\t\tchart->faces.resize(oldFaceCount);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// Add face(s) to chart.\n\t\tchart->basis = basis;\n\t\tchart->area = computeArea(chart, face);\n\t\tchart->boundaryLength = computeBoundaryLength(chart, face);\n\t\tfor (uint32_t i = oldFaceCount; i < faceCount; i++) {\n\t\t\tconst uint32_t f = chart->faces[i];\n\t\t\tm_faceCharts[f] = chart->id;\n\t\t\tm_facesLeft--;\n\t\t\tm_data.isFaceInChart.set(f);\n\t\t\tchart->centroidSum += m_data.mesh->computeFaceCenter(f);\n\t\t}\n\t\tchart->centroid = chart->centroidSum / float(chart->faces.size());\n\t\t// Refresh candidates.\n\t\tchart->candidates.clear();\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\t// Traverse neighboring faces, add the ones that do not belong to any chart yet.\n\t\t\tconst uint32_t f = chart->faces[i];\n\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\tconst uint32_t edge = f * 3 + j;\n\t\t\t\tconst uint32_t oedge = m_data.mesh->oppositeEdge(edge);\n\t\t\t\tif (oedge == UINT32_MAX)\n\t\t\t\t\tcontinue; // Boundary edge.\n\t\t\t\tconst uint32_t oface = meshEdgeFace(oedge);\n\t\t\t\tif (m_data.isFaceInChart.get(oface))\n\t\t\t\t\tcontinue; // Face belongs to another chart.\n\t\t\t\tif (chart->failedPlanarRegions.contains(m_planarCharts.regionIdFromFace(oface)))\n\t\t\t\t\tcontinue; // Failed to add this faces planar region to the chart before.\n\t\t\t\tconst float cost = computeCost(chart, oface);\n\t\t\t\tif (cost < FLT_MAX)\n\t\t\t\t\tchart->candidates.push(cost, oface);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t// Returns true if the seed has changed.\n\tbool relocateSeed(Chart *chart)\n\t{\n\t\t// Find the first N triangles that fit the proxy best.\n\t\tconst uint32_t faceCount = chart->faces.size();\n\t\tm_bestTriangles.clear();\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tconst float cost = computeNormalDeviationMetric(chart, chart->faces[i]);\n\t\t\tm_bestTriangles.push(cost, chart->faces[i]);\n\t\t}\n\t\t// Of those, choose the most central triangle.\n\t\tuint32_t mostCentral = 0;\n\t\tfloat minDistance = FLT_MAX;\n\t\tfor (;;) {\n\t\t\tif (m_bestTriangles.count() == 0)\n\t\t\t\tbreak;\n\t\t\tconst uint32_t face = m_bestTriangles.pop();\n\t\t\tVector3 faceCentroid = m_data.mesh->computeFaceCenter(face);\n\t\t\tconst float distance = length(chart->centroid - faceCentroid);\n\t\t\tif (distance < minDistance) {\n\t\t\t\tminDistance = distance;\n\t\t\t\tmostCentral = face;\n\t\t\t}\n\t\t}\n\t\tXA_DEBUG_ASSERT(minDistance < FLT_MAX);\n\t\tif (mostCentral == chart->seed)\n\t\t\treturn false;\n\t\tchart->seed = mostCentral;\n\t\treturn true;\n\t}\n\n\t// Cost is combined metrics * weights.\n\tfloat computeCost(Chart *chart, uint32_t face) const\n\t{\n\t\t// Estimate boundary length and area:\n\t\tconst float newChartArea = computeArea(chart, face);\n\t\tconst float newBoundaryLength = computeBoundaryLength(chart, face);\n\t\t// Enforce limits strictly:\n\t\tif (m_data.options.maxChartArea > 0.0f && newChartArea > m_data.options.maxChartArea)\n\t\t\treturn FLT_MAX;\n\t\tif (m_data.options.maxBoundaryLength > 0.0f && newBoundaryLength > m_data.options.maxBoundaryLength)\n\t\t\treturn FLT_MAX;\n\t\t// Compute metrics.\n\t\tfloat cost = 0.0f;\n\t\tconst float normalDeviation = computeNormalDeviationMetric(chart, face);\n\t\tif (normalDeviation >= 0.707f) // ~75 degrees\n\t\t\treturn FLT_MAX;\n\t\tcost += m_data.options.normalDeviationWeight * normalDeviation;\n\t\t// Penalize faces that cross seams, reward faces that close seams or reach boundaries.\n\t\t// Make sure normal seams are fully respected:\n\t\tconst float normalSeam = computeNormalSeamMetric(chart, face);\n\t\tif (m_data.options.normalSeamWeight >= 1000.0f && normalSeam > 0.0f)\n\t\t\treturn FLT_MAX;\n\t\tcost += m_data.options.normalSeamWeight * normalSeam;\n\t\tcost += m_data.options.roundnessWeight * computeRoundnessMetric(chart, newBoundaryLength, newChartArea);\n\t\tcost += m_data.options.straightnessWeight * computeStraightnessMetric(chart, face);\n\t\tcost += m_data.options.textureSeamWeight * computeTextureSeamMetric(chart, face);\n\t\t//float R = evaluateCompletenessMetric(chart, face);\n\t\t//float D = evaluateDihedralAngleMetric(chart, face);\n\t\t// @@ Add a metric based on local dihedral angle.\n\t\t// @@ Tweaking the normal and texture seam metrics.\n\t\t// - Cause more impedance. Never cross 90 degree edges.\n\t\tXA_DEBUG_ASSERT(isFinite(cost));\n\t\treturn cost;\n\t}\n\n\t// Returns a value in [0-1].\n\t// 0 if face normal is coplanar to the chart's best fit normal.\n\t// 1 if face normal is perpendicular.\n\tfloat computeNormalDeviationMetric(Chart *chart, uint32_t face) const\n\t{\n\t\t// All faces in coplanar regions have the same normal, can use any face.\n\t\tconst Vector3 faceNormal = m_data.faceNormals[face];\n\t\t// Use plane fitting metric for now:\n\t\treturn min(1.0f - dot(faceNormal, chart->basis.normal), 1.0f); // @@ normal deviations should be weighted by face area\n\t}\n\n\tfloat computeRoundnessMetric(Chart *chart, float newBoundaryLength, float newChartArea) const\n\t{\n\t\tconst float oldRoundness = square(chart->boundaryLength) / chart->area;\n\t\tconst float newRoundness = square(newBoundaryLength) / newChartArea;\n\t\treturn 1.0f - oldRoundness / newRoundness;\n\t}\n\n\tfloat computeStraightnessMetric(Chart *chart, uint32_t firstFace) const\n\t{\n\t\tfloat l_out = 0.0f; // Length of firstFace planar region boundary that doesn't border the chart.\n\t\tfloat l_in = 0.0f; // Length that does border the chart.\n\t\tconst uint32_t planarRegionId = m_planarCharts.regionIdFromFace(firstFace);\n\t\tuint32_t face = firstFace;\n\t\tfor (;;) {\n\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\tconst float l = m_data.edgeLengths[it.edge()];\n\t\t\t\tif (it.isBoundary()) {\n\t\t\t\t\tl_out += l;\n\t\t\t\t} else if (m_planarCharts.regionIdFromFace(it.oppositeFace()) != planarRegionId) {\n\t\t\t\t\tif (m_faceCharts[it.oppositeFace()] != chart->id)\n\t\t\t\t\t\tl_out += l;\n\t\t\t\t\telse\n\t\t\t\t\t\tl_in += l;\n\t\t\t\t}\n\t\t\t}\n\t\t\tface = m_planarCharts.nextRegionFace(face);\n\t\t\tif (face == firstFace)\n\t\t\t\tbreak;\n\t\t}\n#if 1\n\t\tfloat ratio = (l_out - l_in) / (l_out + l_in);\n\t\treturn min(ratio, 0.0f); // Only use the straightness metric to close gaps.\n#else\n\t\treturn 1.0f - l_in / l_out;\n#endif\n\t}\n\n\tbool isNormalSeam(uint32_t edge) const\n\t{\n\t\tconst uint32_t oppositeEdge = m_data.mesh->oppositeEdge(edge);\n\t\tif (oppositeEdge == UINT32_MAX)\n\t\t\treturn false; // boundary edge\n\t\tif (m_data.mesh->flags() & MeshFlags::HasNormals) {\n\t\t\tconst uint32_t v0 = m_data.mesh->vertexAt(meshEdgeIndex0(edge));\n\t\t\tconst uint32_t v1 = m_data.mesh->vertexAt(meshEdgeIndex1(edge));\n\t\t\tconst uint32_t ov0 = m_data.mesh->vertexAt(meshEdgeIndex0(oppositeEdge));\n\t\t\tconst uint32_t ov1 = m_data.mesh->vertexAt(meshEdgeIndex1(oppositeEdge));\n\t\t\tif (v0 == ov1 && v1 == ov0)\n\t\t\t\treturn false;\n\t\t\treturn !equal(m_data.mesh->normal(v0), m_data.mesh->normal(ov1), kNormalEpsilon) || !equal(m_data.mesh->normal(v1), m_data.mesh->normal(ov0), kNormalEpsilon);\n\t\t}\n\t\tconst uint32_t f0 = meshEdgeFace(edge);\n\t\tconst uint32_t f1 = meshEdgeFace(oppositeEdge);\n\t\tif (m_planarCharts.regionIdFromFace(f0) == m_planarCharts.regionIdFromFace(f1))\n\t\t\treturn false;\n\t\treturn !equal(m_data.faceNormals[f0], m_data.faceNormals[f1], kNormalEpsilon);\n\t}\n\n\tfloat computeNormalSeamMetric(Chart *chart, uint32_t firstFace) const\n\t{\n\t\tfloat seamFactor = 0.0f, totalLength = 0.0f;\n\t\tuint32_t face = firstFace;\n\t\tfor (;;) {\n\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\tif (it.isBoundary())\n\t\t\t\t\tcontinue;\n\t\t\t\tif (m_faceCharts[it.oppositeFace()] != chart->id)\n\t\t\t\t\tcontinue;\n\t\t\t\tfloat l = m_data.edgeLengths[it.edge()];\n\t\t\t\ttotalLength += l;\n\t\t\t\tif (!it.isSeam())\n\t\t\t\t\tcontinue;\n\t\t\t\t// Make sure it's a normal seam.\n\t\t\t\tif (isNormalSeam(it.edge())) {\n\t\t\t\t\tfloat d;\n\t\t\t\t\tif (m_data.mesh->flags() & MeshFlags::HasNormals) {\n\t\t\t\t\t\tconst Vector3 &n0 = m_data.mesh->normal(it.vertex0());\n\t\t\t\t\t\tconst Vector3 &n1 = m_data.mesh->normal(it.vertex1());\n\t\t\t\t\t\tconst Vector3 &on0 = m_data.mesh->normal(m_data.mesh->vertexAt(meshEdgeIndex0(it.oppositeEdge())));\n\t\t\t\t\t\tconst Vector3 &on1 = m_data.mesh->normal(m_data.mesh->vertexAt(meshEdgeIndex1(it.oppositeEdge())));\n\t\t\t\t\t\tconst float d0 = clamp(dot(n0, on1), 0.0f, 1.0f);\n\t\t\t\t\t\tconst float d1 = clamp(dot(n1, on0), 0.0f, 1.0f);\n\t\t\t\t\t\td = (d0 + d1) * 0.5f;\n\t\t\t\t\t} else {\n\t\t\t\t\t\td = clamp(dot(m_data.faceNormals[face], m_data.faceNormals[meshEdgeFace(it.oppositeEdge())]), 0.0f, 1.0f);\n\t\t\t\t\t}\n\t\t\t\t\tl *= 1 - d;\n\t\t\t\t\tseamFactor += l;\n\t\t\t\t}\n\t\t\t}\n\t\t\tface = m_planarCharts.nextRegionFace(face);\n\t\t\tif (face == firstFace)\n\t\t\t\tbreak;\n\t\t}\n\t\tif (seamFactor <= 0.0f)\n\t\t\treturn 0.0f;\n\t\treturn seamFactor / totalLength;\n\t}\n\n\tfloat computeTextureSeamMetric(Chart *chart, uint32_t firstFace) const\n\t{\n\t\tfloat seamLength = 0.0f, totalLength = 0.0f;\n\t\tuint32_t face = firstFace;\n\t\tfor (;;) {\n\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\tif (it.isBoundary())\n\t\t\t\t\tcontinue;\n\t\t\t\tif (m_faceCharts[it.oppositeFace()] != chart->id)\n\t\t\t\t\tcontinue;\n\t\t\t\tfloat l = m_data.edgeLengths[it.edge()];\n\t\t\t\ttotalLength += l;\n\t\t\t\tif (!it.isSeam())\n\t\t\t\t\tcontinue;\n\t\t\t\t// Make sure it's a texture seam.\n\t\t\t\tif (it.isTextureSeam())\n\t\t\t\t\tseamLength += l;\n\t\t\t}\n\t\t\tface = m_planarCharts.nextRegionFace(face);\n\t\t\tif (face == firstFace)\n\t\t\t\tbreak;\n\t\t}\n\t\tif (seamLength <= 0.0f)\n\t\t\treturn 0.0f; // Avoid division by zero.\n\t\treturn seamLength / totalLength;\n\t}\n\n\tfloat computeArea(Chart *chart, uint32_t firstFace) const\n\t{\n\t\tfloat area = chart->area;\n\t\tuint32_t face = firstFace;\n\t\tfor (;;) {\n\t\t\tarea += m_data.faceAreas[face];\n\t\t\tface = m_planarCharts.nextRegionFace(face);\n\t\t\tif (face == firstFace)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn area;\n\t}\n\n\tfloat computeBoundaryLength(Chart *chart, uint32_t firstFace) const\n\t{\n\t\tfloat boundaryLength = chart->boundaryLength;\n\t\t// Add new edges, subtract edges shared with the chart.\n\t\tconst uint32_t planarRegionId = m_planarCharts.regionIdFromFace(firstFace);\n\t\tuint32_t face = firstFace;\n\t\tfor (;;) {\n\t\t\tfor (Mesh::FaceEdgeIterator it(m_data.mesh, face); !it.isDone(); it.advance()) {\n\t\t\t\tconst float edgeLength = m_data.edgeLengths[it.edge()];\n\t\t\t\tif (it.isBoundary()) {\n\t\t\t\t\tboundaryLength += edgeLength;\n\t\t\t\t} else if (m_planarCharts.regionIdFromFace(it.oppositeFace()) != planarRegionId) {\n\t\t\t\t\tif (m_faceCharts[it.oppositeFace()] != chart->id)\n\t\t\t\t\t\tboundaryLength += edgeLength;\n\t\t\t\t\telse\n\t\t\t\t\t\tboundaryLength -= edgeLength;\n\t\t\t\t}\n\t\t\t}\n\t\t\tface = m_planarCharts.nextRegionFace(face);\n\t\t\tif (face == firstFace)\n\t\t\t\tbreak;\n\t\t}\n\t\treturn max(0.0f, boundaryLength);  // @@ Hack!\n\t}\n\n\tbool mergeChart(Chart *owner, Chart *chart, float sharedBoundaryLength)\n\t{\n\t\tconst uint32_t oldOwnerFaceCount = owner->faces.size();\n\t\tconst uint32_t chartFaceCount = chart->faces.size();\n\t\towner->faces.push_back(chart->faces);\n\t\tfor (uint32_t i = 0; i < chartFaceCount; i++) {\n\t\t\tXA_DEBUG_ASSERT(m_faceCharts[chart->faces[i]] == chart->id);\n\t\t\tm_faceCharts[chart->faces[i]] = owner->id;\n\t\t}\n\t\t// Compute basis using best fit normal.\n\t\tBasis basis;\n\t\tif (!computeChartBasis(owner, &basis)) {\n\t\t\towner->faces.resize(oldOwnerFaceCount);\n\t\t\tfor (uint32_t i = 0; i < chartFaceCount; i++)\n\t\t\t\tm_faceCharts[chart->faces[i]] = chart->id;\n\t\t\treturn false;\n\t\t}\n\t\tif (dot(basis.normal, m_data.faceNormals[owner->faces[0]]) < 0.0f) // Flip normal if oriented in the wrong direction.\n\t\t\tbasis.normal = -basis.normal;\n\t\t// Compute orthogonal parameterization and check that it is valid.\n\t\tparameterizeChart(owner);\n\t\tif (!isChartParameterizationValid(owner)) {\n\t\t\towner->faces.resize(oldOwnerFaceCount);\n\t\t\tfor (uint32_t i = 0; i < chartFaceCount; i++)\n\t\t\t\tm_faceCharts[chart->faces[i]] = chart->id;\n\t\t\treturn false;\n\t\t}\n\t\t// Merge chart.\n\t\towner->basis = basis;\n\t\towner->failedPlanarRegions.push_back(chart->failedPlanarRegions);\n\t\t// Update adjacencies?\n\t\towner->area += chart->area;\n\t\towner->boundaryLength += chart->boundaryLength - sharedBoundaryLength;\n\t\t// Delete chart.\n\t\tm_charts[chart->id] = nullptr;\n\t\tchart->~Chart();\n\t\tXA_FREE(chart);\n\t\treturn true;\n\t}\n\nprivate:\n\tAtlasData &m_data;\n\tconst PlanarCharts &m_planarCharts;\n\tArray<Vector2> m_texcoords;\n\tuint32_t m_facesLeft;\n\tArray<int> m_faceCharts;\n\tArray<Chart *> m_charts;\n\tCostQueue m_bestTriangles;\n\tArray<Vector3> m_tempPoints;\n\tUniformGrid2 m_boundaryGrid;\n#if XA_MERGE_CHARTS\n\t// mergeCharts\n\tArray<float> m_sharedBoundaryLengths;\n\tArray<float> m_sharedBoundaryLengthsNoSeams;\n\tArray<uint32_t> m_sharedBoundaryEdgeCountNoSeams;\n#endif\n\tbool m_placingSeeds;\n};\n\nstruct ChartGeneratorType\n{\n\tenum Enum\n\t{\n\t\tOriginalUv,\n\t\tPlanar,\n\t\tClustered,\n\t\tPiecewise\n\t};\n};\n\nstruct Atlas\n{\n\tAtlas() : m_originalUvCharts(m_data), m_planarCharts(m_data), m_clusteredCharts(m_data, m_planarCharts) {}\n\n\tuint32_t chartCount() const\n\t{\n\t\treturn m_originalUvCharts.chartCount() + m_planarCharts.chartCount() + m_clusteredCharts.chartCount();\n\t}\n\n\tConstArrayView<uint32_t> chartFaces(uint32_t chartIndex) const\n\t{\n\t\tif (chartIndex < m_originalUvCharts.chartCount())\n\t\t\treturn m_originalUvCharts.chartFaces(chartIndex);\n\t\tchartIndex -= m_originalUvCharts.chartCount();\n\t\tif (chartIndex < m_planarCharts.chartCount())\n\t\t\treturn m_planarCharts.chartFaces(chartIndex);\n\t\tchartIndex -= m_planarCharts.chartCount();\n\t\treturn m_clusteredCharts.chartFaces(chartIndex);\n\t}\n\n\tconst Basis &chartBasis(uint32_t chartIndex) const\n\t{\n\t\tif (chartIndex < m_originalUvCharts.chartCount())\n\t\t\treturn m_originalUvCharts.chartBasis(chartIndex);\n\t\tchartIndex -= m_originalUvCharts.chartCount();\n\t\tif (chartIndex < m_planarCharts.chartCount())\n\t\t\treturn m_planarCharts.chartBasis(chartIndex);\n\t\tchartIndex -= m_planarCharts.chartCount();\n\t\treturn m_clusteredCharts.chartBasis(chartIndex);\n\t}\n\n\tChartGeneratorType::Enum chartGeneratorType(uint32_t chartIndex) const\n\t{\n\t\tif (chartIndex < m_originalUvCharts.chartCount())\n\t\t\treturn ChartGeneratorType::OriginalUv;\n\t\tchartIndex -= m_originalUvCharts.chartCount();\n\t\tif (chartIndex < m_planarCharts.chartCount())\n\t\t\treturn ChartGeneratorType::Planar;\n\t\treturn ChartGeneratorType::Clustered;\n\t}\n\n\tvoid reset(const Mesh *mesh, const ChartOptions &options)\n\t{\n\t\tXA_PROFILE_START(buildAtlasInit)\n\t\tm_data.options = options;\n\t\tm_data.mesh = mesh;\n\t\tm_data.compute();\n\t\tXA_PROFILE_END(buildAtlasInit)\n\t}\n\n\tvoid compute()\n\t{\n\t\tif (m_data.options.useInputMeshUvs) {\n\t\t\tXA_PROFILE_START(originalUvCharts)\n\t\t\tm_originalUvCharts.compute();\n\t\t\tXA_PROFILE_END(originalUvCharts)\n\t\t}\n\t\tXA_PROFILE_START(planarCharts)\n\t\tm_planarCharts.compute();\n\t\tXA_PROFILE_END(planarCharts)\n\t\tXA_PROFILE_START(clusteredCharts)\n\t\tm_clusteredCharts.compute();\n\t\tXA_PROFILE_END(clusteredCharts)\n\t}\n\nprivate:\n\tAtlasData m_data;\n\tOriginalUvCharts m_originalUvCharts;\n\tPlanarCharts m_planarCharts;\n\tClusteredCharts m_clusteredCharts;\n};\n\nstruct ComputeUvMeshChartsTaskArgs\n{\n\tUvMesh *mesh;\n\tProgress *progress;\n};\n\n// Charts are found by floodfilling faces without crossing UV seams.\nstruct ComputeUvMeshChartsTask\n{\n\tComputeUvMeshChartsTask(ComputeUvMeshChartsTaskArgs *args) : m_mesh(args->mesh), m_progress(args->progress), m_uvToEdgeMap(MemTag::Default, m_mesh->indices.size()), m_faceAssigned(m_mesh->indices.size() / 3) {}\n\n\tvoid run()\n\t{\n\t\tconst uint32_t vertexCount = m_mesh->texcoords.size();\n\t\tconst uint32_t indexCount = m_mesh->indices.size();\n\t\tconst uint32_t faceCount = indexCount / 3;\n\t\t// A vertex can only be assigned to one chart.\n\t\tm_mesh->vertexToChartMap.resize(vertexCount);\n\t\tm_mesh->vertexToChartMap.fill(UINT32_MAX);\n\t\t// Map vertex UV to edge. Face is then edge / 3.\n\t\tfor (uint32_t i = 0; i < indexCount; i++)\n\t\t\tm_uvToEdgeMap.add(m_mesh->texcoords[m_mesh->indices[i]]);\n\t\t// Find charts.\n\t\tm_faceAssigned.zeroOutMemory();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (m_progress->cancel)\n\t\t\t\treturn;\n\t\t\tm_progress->increment(1);\n\t\t\t// Found an unassigned face, see if it can be added.\n\t\t\tconst uint32_t chartIndex = m_mesh->charts.size();\n\t\t\tif (!canAddFaceToChart(chartIndex, f))\n\t\t\t\tcontinue;\n\t\t\t// Face is OK, create a new chart with the face.\n\t\t\tUvMeshChart *chart = XA_NEW(MemTag::Default, UvMeshChart);\n\t\t\tm_mesh->charts.push_back(chart);\n\t\t\tchart->material = m_mesh->faceMaterials.isEmpty() ? 0 : m_mesh->faceMaterials[f];\n\t\t\taddFaceToChart(chartIndex, f);\n\t\t\t// Walk incident faces and assign them to the chart.\n\t\t\tuint32_t f2 = 0;\n\t\t\tfor (;;) {\n\t\t\t\tbool newFaceAssigned = false;\n\t\t\t\tconst uint32_t faceCount2 = chart->faces.size();\n\t\t\t\tfor (; f2 < faceCount2; f2++) {\n\t\t\t\t\tconst uint32_t face = chart->faces[f2];\n\t\t\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\t\t\t// Add any valid faces with colocal UVs to the chart.\n\t\t\t\t\t\tconst Vector2 &uv = m_mesh->texcoords[m_mesh->indices[face * 3 + i]];\n\t\t\t\t\t\tuint32_t edge = m_uvToEdgeMap.get(uv);\n\t\t\t\t\t\twhile (edge != UINT32_MAX) {\n\t\t\t\t\t\t\tconst uint32_t newFace = edge / 3;\n\t\t\t\t\t\t\tif (canAddFaceToChart(chartIndex, newFace)) {\n\t\t\t\t\t\t\t\taddFaceToChart(chartIndex, newFace);\n\t\t\t\t\t\t\t\tnewFaceAssigned = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tedge = m_uvToEdgeMap.getNext(uv, edge);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!newFaceAssigned)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\nprivate:\n\t// The chart at chartIndex doesn't have to exist yet.\n\tbool canAddFaceToChart(uint32_t chartIndex, uint32_t face) const\n\t{\n\t\tif (m_faceAssigned.get(face))\n\t\t\treturn false; // Already assigned to a chart.\n\t\tif (m_mesh->faceIgnore.get(face))\n\t\t\treturn false; // Face is ignored (zero area or nan UVs).\n\t\tif (!m_mesh->faceMaterials.isEmpty() && chartIndex < m_mesh->charts.size()) {\n\t\t\tif (m_mesh->faceMaterials[face] != m_mesh->charts[chartIndex]->material)\n\t\t\t\treturn false; // Materials don't match.\n\t\t}\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tconst uint32_t vertex = m_mesh->indices[face * 3 + i];\n\t\t\tif (m_mesh->vertexToChartMap[vertex] != UINT32_MAX && m_mesh->vertexToChartMap[vertex] != chartIndex)\n\t\t\t\treturn false; // Vertex already assigned to another chart.\n\t\t}\n\t\treturn true;\n\t}\n\n\tvoid addFaceToChart(uint32_t chartIndex, uint32_t face)\n\t{\n\t\tUvMeshChart *chart = m_mesh->charts[chartIndex];\n\t\tm_faceAssigned.set(face);\n\t\tchart->faces.push_back(face);\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tconst uint32_t vertex = m_mesh->indices[face * 3 + i];\n\t\t\tm_mesh->vertexToChartMap[vertex] = chartIndex;\n\t\t\tchart->indices.push_back(vertex);\n\t\t}\n\t}\n\n\tUvMesh * const m_mesh;\n\tProgress * const m_progress;\n\tHashMap<Vector2> m_uvToEdgeMap; // Face is edge / 3.\n\tBitArray m_faceAssigned;\n};\n\nstatic void runComputeUvMeshChartsTask(void * /*groupUserData*/, void *taskUserData)\n{\n\tXA_PROFILE_START(computeChartsThread)\n\tComputeUvMeshChartsTask task((ComputeUvMeshChartsTaskArgs *)taskUserData);\n\ttask.run();\n\tXA_PROFILE_END(computeChartsThread)\n}\n\nstatic bool computeUvMeshCharts(TaskScheduler *taskScheduler, ArrayView<UvMesh *> meshes, ProgressFunc progressFunc, void *progressUserData)\n{\n\tuint32_t totalFaceCount = 0;\n\tfor (uint32_t i = 0; i < meshes.length; i++)\n\t\ttotalFaceCount += meshes[i]->indices.size() / 3;\n\tProgress progress(ProgressCategory::ComputeCharts, progressFunc, progressUserData, totalFaceCount);\n\tTaskGroupHandle taskGroup = taskScheduler->createTaskGroup(nullptr, meshes.length);\n\tArray<ComputeUvMeshChartsTaskArgs> taskArgs;\n\ttaskArgs.resize(meshes.length);\n\tfor (uint32_t i = 0; i < meshes.length; i++)\n\t{\n\t\tComputeUvMeshChartsTaskArgs &args = taskArgs[i];\n\t\targs.mesh = meshes[i];\n\t\targs.progress = &progress;\n\t\tTask task;\n\t\ttask.userData = &args;\n\t\ttask.func = runComputeUvMeshChartsTask;\n\t\ttaskScheduler->run(taskGroup, task);\n\t}\n\ttaskScheduler->wait(&taskGroup);\n\treturn !progress.cancel;\n}\n\n} // namespace segment\n\nnamespace param {\n\n// Fast sweep in 3 directions\nstatic bool findApproximateDiameterVertices(Mesh *mesh, uint32_t *a, uint32_t *b)\n{\n\tXA_DEBUG_ASSERT(a != nullptr);\n\tXA_DEBUG_ASSERT(b != nullptr);\n\tconst uint32_t vertexCount = mesh->vertexCount();\n\tuint32_t minVertex[3];\n\tuint32_t maxVertex[3];\n\tminVertex[0] = minVertex[1] = minVertex[2] = UINT32_MAX;\n\tmaxVertex[0] = maxVertex[1] = maxVertex[2] = UINT32_MAX;\n\tfor (uint32_t v = 1; v < vertexCount; v++) {\n\t\tif (mesh->isBoundaryVertex(v)) {\n\t\t\tminVertex[0] = minVertex[1] = minVertex[2] = v;\n\t\t\tmaxVertex[0] = maxVertex[1] = maxVertex[2] = v;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (minVertex[0] == UINT32_MAX) {\n\t\t// Input mesh has not boundaries.\n\t\treturn false;\n\t}\n\tfor (uint32_t v = 1; v < vertexCount; v++) {\n\t\tif (!mesh->isBoundaryVertex(v)) {\n\t\t\t// Skip interior vertices.\n\t\t\tcontinue;\n\t\t}\n\t\tconst Vector3 &pos = mesh->position(v);\n\t\tif (pos.x < mesh->position(minVertex[0]).x)\n\t\t\tminVertex[0] = v;\n\t\telse if (pos.x > mesh->position(maxVertex[0]).x)\n\t\t\tmaxVertex[0] = v;\n\t\tif (pos.y < mesh->position(minVertex[1]).y)\n\t\t\tminVertex[1] = v;\n\t\telse if (pos.y > mesh->position(maxVertex[1]).y)\n\t\t\tmaxVertex[1] = v;\n\t\tif (pos.z < mesh->position(minVertex[2]).z)\n\t\t\tminVertex[2] = v;\n\t\telse if (pos.z > mesh->position(maxVertex[2]).z)\n\t\t\tmaxVertex[2] = v;\n\t}\n\tfloat lengths[3];\n\tfor (int i = 0; i < 3; i++) {\n\t\tlengths[i] = length(mesh->position(minVertex[i]) - mesh->position(maxVertex[i]));\n\t}\n\tif (lengths[0] > lengths[1] && lengths[0] > lengths[2]) {\n\t\t*a = minVertex[0];\n\t\t*b = maxVertex[0];\n\t} else if (lengths[1] > lengths[2]) {\n\t\t*a = minVertex[1];\n\t\t*b = maxVertex[1];\n\t} else {\n\t\t*a = minVertex[2];\n\t\t*b = maxVertex[2];\n\t}\n\treturn true;\n}\n\n// From OpenNL LSCM example.\n// Computes the coordinates of the vertices of a triangle in a local 2D orthonormal basis of the triangle's plane.\nstatic void projectTriangle(Vector3 p0, Vector3 p1, Vector3 p2, Vector2 *z0, Vector2 *z1, Vector2 *z2)\n{\n\tVector3 X = normalize(p1 - p0);\n\tVector3 Z = normalize(cross(X, p2 - p0));\n\tVector3 Y = cross(Z, X);\n\tVector3 &O = p0;\n\t*z0 = Vector2(0, 0);\n\t*z1 = Vector2(length(p1 - O), 0);\n\t*z2 = Vector2(dot(p2 - O, X), dot(p2 - O, Y));\n}\n\n// Conformal relations from Brecht Van Lommel (based on ABF):\n\nstatic float vec_angle_cos(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3)\n{\n\tVector3 d1 = v1 - v2;\n\tVector3 d2 = v3 - v2;\n\treturn clamp(dot(d1, d2) / (length(d1) * length(d2)), -1.0f, 1.0f);\n}\n\nstatic float vec_angle(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3)\n{\n\tfloat dot = vec_angle_cos(v1, v2, v3);\n\treturn acosf(dot);\n}\n\nstatic void triangle_angles(const Vector3 &v1, const Vector3 &v2, const Vector3 &v3, float *a1, float *a2, float *a3)\n{\n\t*a1 = vec_angle(v3, v1, v2);\n\t*a2 = vec_angle(v1, v2, v3);\n\t*a3 = kPi - *a2 - *a1;\n}\n\nstatic bool setup_abf_relations(opennl::NLContext *context, int id0, int id1, int id2, const Vector3 &p0, const Vector3 &p1, const Vector3 &p2)\n{\n\t// @@ IC: Wouldn't it be more accurate to return cos and compute 1-cos^2?\n\t// It does indeed seem to be a little bit more robust.\n\t// @@ Need to revisit this more carefully!\n\tfloat a0, a1, a2;\n\ttriangle_angles(p0, p1, p2, &a0, &a1, &a2);\n\tif (a0 == 0.0f || a1 == 0.0f || a2 == 0.0f)\n\t\treturn false;\n\tfloat s0 = sinf(a0);\n\tfloat s1 = sinf(a1);\n\tfloat s2 = sinf(a2);\n\tif (s1 > s0 && s1 > s2) {\n\t\tswap(s1, s2);\n\t\tswap(s0, s1);\n\t\tswap(a1, a2);\n\t\tswap(a0, a1);\n\t\tswap(id1, id2);\n\t\tswap(id0, id1);\n\t} else if (s0 > s1 && s0 > s2) {\n\t\tswap(s0, s2);\n\t\tswap(s0, s1);\n\t\tswap(a0, a2);\n\t\tswap(a0, a1);\n\t\tswap(id0, id2);\n\t\tswap(id0, id1);\n\t}\n\tfloat c0 = cosf(a0);\n\tfloat ratio = (s2 == 0.0f) ? 1.0f : s1 / s2;\n\tfloat cosine = c0 * ratio;\n\tfloat sine = s0 * ratio;\n\t// Note  : 2*id + 0 --> u\n\t//         2*id + 1 --> v\n\tint u0_id = 2 * id0 + 0;\n\tint v0_id = 2 * id0 + 1;\n\tint u1_id = 2 * id1 + 0;\n\tint v1_id = 2 * id1 + 1;\n\tint u2_id = 2 * id2 + 0;\n\tint v2_id = 2 * id2 + 1;\n\t// Real part\n\topennl::nlBegin(context, NL_ROW);\n\topennl::nlCoefficient(context, u0_id, cosine - 1.0f);\n\topennl::nlCoefficient(context, v0_id, -sine);\n\topennl::nlCoefficient(context, u1_id, -cosine);\n\topennl::nlCoefficient(context, v1_id, sine);\n\topennl::nlCoefficient(context, u2_id, 1);\n\topennl::nlEnd(context, NL_ROW);\n\t// Imaginary part\n\topennl::nlBegin(context, NL_ROW);\n\topennl::nlCoefficient(context, u0_id, sine);\n\topennl::nlCoefficient(context, v0_id, cosine - 1.0f);\n\topennl::nlCoefficient(context, u1_id, -sine);\n\topennl::nlCoefficient(context, v1_id, -cosine);\n\topennl::nlCoefficient(context, v2_id, 1);\n\topennl::nlEnd(context, NL_ROW);\n\treturn true;\n}\n\nstatic bool computeLeastSquaresConformalMap(Mesh *mesh)\n{\n\tuint32_t lockedVertex0, lockedVertex1;\n\tif (!findApproximateDiameterVertices(mesh, &lockedVertex0, &lockedVertex1)) {\n\t\t// Mesh has no boundaries.\n\t\treturn false;\n\t}\n\tconst uint32_t vertexCount = mesh->vertexCount();\n\topennl::NLContext *context = opennl::nlNewContext();\n\topennl::nlSolverParameteri(context, NL_NB_VARIABLES, int(2 * vertexCount));\n\topennl::nlSolverParameteri(context, NL_MAX_ITERATIONS, int(5 * vertexCount));\n\topennl::nlBegin(context, NL_SYSTEM);\n\tArrayView<Vector2> texcoords = mesh->texcoords();\n\tfor (uint32_t i = 0; i < vertexCount; i++) {\n\t\topennl::nlSetVariable(context, 2 * i, texcoords[i].x);\n\t\topennl::nlSetVariable(context, 2 * i + 1, texcoords[i].y);\n\t\tif (i == lockedVertex0 || i == lockedVertex1) {\n\t\t\topennl::nlLockVariable(context, 2 * i);\n\t\t\topennl::nlLockVariable(context, 2 * i + 1);\n\t\t}\n\t}\n\topennl::nlBegin(context, NL_MATRIX);\n\tconst uint32_t faceCount = mesh->faceCount();\n\tConstArrayView<Vector3> positions = mesh->positions();\n\tConstArrayView<uint32_t> indices = mesh->indices();\n\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\tconst uint32_t v0 = indices[f * 3 + 0];\n\t\tconst uint32_t v1 = indices[f * 3 + 1];\n\t\tconst uint32_t v2 = indices[f * 3 + 2];\n\t\tif (!setup_abf_relations(context, v0, v1, v2, positions[v0], positions[v1], positions[v2])) {\n\t\t\tVector2 z0, z1, z2;\n\t\t\tprojectTriangle(positions[v0], positions[v1], positions[v2], &z0, &z1, &z2);\n\t\t\tdouble a = z1.x - z0.x;\n\t\t\tdouble b = z1.y - z0.y;\n\t\t\tdouble c = z2.x - z0.x;\n\t\t\tdouble d = z2.y - z0.y;\n\t\t\tXA_DEBUG_ASSERT(b == 0.0);\n\t\t\t// Note  : 2*id + 0 --> u\n\t\t\t//         2*id + 1 --> v\n\t\t\tuint32_t u0_id = 2 * v0;\n\t\t\tuint32_t v0_id = 2 * v0 + 1;\n\t\t\tuint32_t u1_id = 2 * v1;\n\t\t\tuint32_t v1_id = 2 * v1 + 1;\n\t\t\tuint32_t u2_id = 2 * v2;\n\t\t\tuint32_t v2_id = 2 * v2 + 1;\n\t\t\t// Note : b = 0\n\t\t\t// Real part\n\t\t\topennl::nlBegin(context, NL_ROW);\n\t\t\topennl::nlCoefficient(context, u0_id, -a+c) ;\n\t\t\topennl::nlCoefficient(context, v0_id, b-d) ;\n\t\t\topennl::nlCoefficient(context, u1_id, -c) ;\n\t\t\topennl::nlCoefficient(context, v1_id, d) ;\n\t\t\topennl::nlCoefficient(context, u2_id, a);\n\t\t\topennl::nlEnd(context, NL_ROW);\n\t\t\t// Imaginary part\n\t\t\topennl::nlBegin(context, NL_ROW);\n\t\t\topennl::nlCoefficient(context, u0_id, -b+d);\n\t\t\topennl::nlCoefficient(context, v0_id, -a+c);\n\t\t\topennl::nlCoefficient(context, u1_id, -d);\n\t\t\topennl::nlCoefficient(context, v1_id, -c);\n\t\t\topennl::nlCoefficient(context, v2_id, a);\n\t\t\topennl::nlEnd(context, NL_ROW);\n\t\t}\n\t}\n\topennl::nlEnd(context, NL_MATRIX);\n\topennl::nlEnd(context, NL_SYSTEM);\n\tif (!opennl::nlSolve(context)) {\n\t\topennl::nlDeleteContext(context);\n\t\treturn false;\n\t}\n\tfor (uint32_t i = 0; i < vertexCount; i++) {\n\t\tconst double u = opennl::nlGetVariable(context, 2 * i);\n\t\tconst double v = opennl::nlGetVariable(context, 2 * i + 1);\n\t\ttexcoords[i] = Vector2((float)u, (float)v);\n\t\tXA_DEBUG_ASSERT(!isNan(mesh->texcoord(i).x));\n\t\tXA_DEBUG_ASSERT(!isNan(mesh->texcoord(i).y));\n\t}\n\topennl::nlDeleteContext(context);\n\treturn true;\n}\n\nstruct PiecewiseParam\n{\n\tvoid reset(const Mesh *mesh)\n\t{\n\t\tm_mesh = mesh;\n\t\tconst uint32_t faceCount = m_mesh->faceCount();\n\t\tconst uint32_t vertexCount = m_mesh->vertexCount();\n\t\tm_texcoords.resize(vertexCount);\n\t\tm_patch.reserve(faceCount);\n\t\tm_candidates.reserve(faceCount);\n\t\tm_faceInAnyPatch.resize(faceCount);\n\t\tm_faceInAnyPatch.zeroOutMemory();\n\t\tm_faceInvalid.resize(faceCount);\n\t\tm_faceInPatch.resize(faceCount);\n\t\tm_vertexInPatch.resize(vertexCount);\n\t\tm_faceToCandidate.resize(faceCount);\n\t}\n\n\tConstArrayView<uint32_t> chartFaces() const { return m_patch; }\n\tConstArrayView<Vector2> texcoords() const { return m_texcoords; }\n\n\tbool computeChart()\n\t{\n\t\t// Clear per-patch state.\n\t\tm_patch.clear();\n\t\tm_candidates.clear();\n\t\tm_faceToCandidate.zeroOutMemory();\n\t\tm_faceInvalid.zeroOutMemory();\n\t\tm_faceInPatch.zeroOutMemory();\n\t\tm_vertexInPatch.zeroOutMemory();\n\t\t// Add the seed face (first unassigned face) to the patch.\n\t\tconst uint32_t faceCount = m_mesh->faceCount();\n\t\tuint32_t seed = UINT32_MAX;\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (m_faceInAnyPatch.get(f))\n\t\t\t\tcontinue;\n\t\t\tseed = f;\n\t\t\t// Add all 3 vertices.\n\t\t\tVector2 texcoords[3];\n\t\t\torthoProjectFace(seed, texcoords);\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = m_mesh->vertexAt(seed * 3 + i);\n\t\t\t\tm_vertexInPatch.set(vertex);\n\t\t\t\tm_texcoords[vertex] = texcoords[i];\n\t\t\t}\n\t\t\taddFaceToPatch(seed);\n\t\t\t// Initialize the boundary grid.\n\t\t\tm_boundaryGrid.reset(m_texcoords, m_mesh->indices());\n\t\t\tfor (Mesh::FaceEdgeIterator it(m_mesh, seed); !it.isDone(); it.advance())\n\t\t\t\tm_boundaryGrid.append(it.edge());\n\t\t\tbreak;\n\t\t}\n\t\tif (seed == UINT32_MAX)\n\t\t\treturn false;\n\t\tfor (;;) {\n\t\t\t// Find the candidate with the lowest cost.\n\t\t\tfloat lowestCost = FLT_MAX;\n\t\t\tCandidate *bestCandidate = nullptr;\n\t\t\tfor (uint32_t i = 0; i < m_candidates.size(); i++) {\n\t\t\t\tCandidate *candidate = m_candidates[i];\n\t\t\t\tif (candidate->maxCost < lowestCost) {\n\t\t\t\t\tlowestCost = candidate->maxCost;\n\t\t\t\t\tbestCandidate = candidate;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!bestCandidate)\n\t\t\t\tbreak;\n\t\t\tXA_DEBUG_ASSERT(!bestCandidate->prev); // Must be head of linked candidates.\n\t\t\t// Compute the position by averaging linked candidates (candidates that share the same free vertex).\n\t\t\tVector2 position(0.0f);\n\t\t\tuint32_t n = 0;\n\t\t\tfor (CandidateIterator it(bestCandidate); !it.isDone(); it.advance()) {\n\t\t\t\tposition += it.current()->position;\n\t\t\t\tn++;\n\t\t\t}\n\t\t\tposition *= 1.0f / (float)n;\n\t\t\tconst uint32_t freeVertex = bestCandidate->vertex;\n\t\t\tXA_DEBUG_ASSERT(!isNan(position.x));\n\t\t\tXA_DEBUG_ASSERT(!isNan(position.y));\n\t\t\tm_texcoords[freeVertex] = position;\n\t\t\t// Check for flipped faces. This is also done when candidates are first added, but the averaged position of the free vertex is different now, so check again.\n\t\t\tbool invalid = false;\n\t\t\tfor (CandidateIterator it(bestCandidate); !it.isDone(); it.advance()) {\n\t\t\t\tconst uint32_t vertex0 = m_mesh->vertexAt(meshEdgeIndex0(it.current()->patchEdge));\n\t\t\t\tconst uint32_t vertex1 = m_mesh->vertexAt(meshEdgeIndex1(it.current()->patchEdge));\n\t\t\t\tconst float freeVertexOrient = orientToEdge(m_texcoords[vertex0], m_texcoords[vertex1], position);\n\t\t\t\tif ((it.current()->patchVertexOrient < 0.0f && freeVertexOrient < 0.0f) || (it.current()->patchVertexOrient > 0.0f && freeVertexOrient > 0.0f)) {\n\t\t\t\t\tinvalid = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check for zero area and flipped faces (using area).\n\t\t\tfor (CandidateIterator it(bestCandidate); !it.isDone(); it.advance()) {\n\t\t\t\tconst Vector2 a = m_texcoords[m_mesh->vertexAt(it.current()->face * 3 + 0)];\n\t\t\t\tconst Vector2 b = m_texcoords[m_mesh->vertexAt(it.current()->face * 3 + 1)];\n\t\t\t\tconst Vector2 c = m_texcoords[m_mesh->vertexAt(it.current()->face * 3 + 2)];\n\t\t\t\tconst float area = triangleArea(a, b, c);\n\t\t\t\tif (area <= 0.0f) {\n\t\t\t\t\tinvalid = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check for boundary intersection.\n\t\t\tif (!invalid) {\n\t\t\t\tXA_PROFILE_START(parameterizeChartsPiecewiseBoundaryIntersection)\n\t\t\t\t// Test candidate edges that would form part of the new patch boundary.\n\t\t\t\t// Ignore boundary edges that would become internal if the candidate faces were added to the patch.\n\t\t\t\tm_newBoundaryEdges.clear();\n\t\t\t\tm_ignoreBoundaryEdges.clear();\n\t\t\t\tfor (CandidateIterator candidateIt(bestCandidate); !candidateIt.isDone(); candidateIt.advance()) {\n\t\t\t\t\tfor (Mesh::FaceEdgeIterator it(m_mesh, candidateIt.current()->face); !it.isDone(); it.advance()) {\n\t\t\t\t\t\tconst uint32_t oface = it.oppositeFace();\n\t\t\t\t\t\tif (oface == UINT32_MAX || !m_faceInPatch.get(oface))\n\t\t\t\t\t\t\tm_newBoundaryEdges.push_back(it.edge());\n\t\t\t\t\t\tif (oface != UINT32_MAX && m_faceInPatch.get(oface))\n\t\t\t\t\t\t\tm_ignoreBoundaryEdges.push_back(it.oppositeEdge());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinvalid = m_boundaryGrid.intersect(m_mesh->epsilon(), m_newBoundaryEdges, m_ignoreBoundaryEdges);\n\t\t\t\tXA_PROFILE_END(parameterizeChartsPiecewiseBoundaryIntersection)\n\t\t\t}\n\t\t\tif (invalid) {\n\t\t\t\t// Mark all faces of linked candidates as invalid.\n\t\t\t\tfor (CandidateIterator it(bestCandidate); !it.isDone(); it.advance())\n\t\t\t\t\tm_faceInvalid.set(it.current()->face);\n\t\t\t\tremoveLinkedCandidates(bestCandidate);\n\t\t\t} else {\n\t\t\t\t// Add vertex to the patch.\n\t\t\t\tm_vertexInPatch.set(freeVertex);\n\t\t\t\t// Add faces to the patch.\n\t\t\t\tfor (CandidateIterator it(bestCandidate); !it.isDone(); it.advance())\n\t\t\t\t\taddFaceToPatch(it.current()->face);\n\t\t\t\t// Successfully added candidate face(s) to patch.\n\t\t\t\tremoveLinkedCandidates(bestCandidate);\n\t\t\t\t// Reset the grid with all edges on the patch boundary.\n\t\t\t\tXA_PROFILE_START(parameterizeChartsPiecewiseBoundaryIntersection)\n\t\t\t\tm_boundaryGrid.reset(m_texcoords, m_mesh->indices());\n\t\t\t\tfor (uint32_t i = 0; i < m_patch.size(); i++) {\n\t\t\t\t\tfor (Mesh::FaceEdgeIterator it(m_mesh, m_patch[i]); !it.isDone(); it.advance()) {\n\t\t\t\t\t\tconst uint32_t oface = it.oppositeFace();\n\t\t\t\t\t\tif (oface == UINT32_MAX || !m_faceInPatch.get(oface))\n\t\t\t\t\t\t\tm_boundaryGrid.append(it.edge());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tXA_PROFILE_END(parameterizeChartsPiecewiseBoundaryIntersection)\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\nprivate:\n\tstruct Candidate\n\t{\n\t\tuint32_t face, vertex;\n\t\tCandidate *prev, *next; // The previous/next candidate with the same vertex.\n\t\tVector2 position;\n\t\tfloat cost;\n\t\tfloat maxCost; // Of all linked candidates.\n\t\tuint32_t patchEdge;\n\t\tfloat patchVertexOrient;\n\t};\n\n\tstruct CandidateIterator\n\t{\n\t\tCandidateIterator(Candidate *head) : m_current(head) { XA_DEBUG_ASSERT(!head->prev); }\n\t\tvoid advance() { if (m_current != nullptr) { m_current = m_current->next; } }\n\t\tbool isDone() const { return !m_current; }\n\t\tCandidate *current() { return m_current; }\n\n\tprivate:\n\t\tCandidate *m_current;\n\t};\n\n\tconst Mesh *m_mesh;\n\tArray<Vector2> m_texcoords;\n\tBitArray m_faceInAnyPatch; // Face is in a previous chart patch or the current patch.\n\tArray<Candidate *> m_candidates; // Incident faces to the patch.\n\tArray<Candidate *> m_faceToCandidate;\n\tArray<uint32_t> m_patch; // The current chart patch.\n\tBitArray m_faceInPatch, m_vertexInPatch; // Face/vertex is in the current patch.\n\tBitArray m_faceInvalid; // Face cannot be added to the patch - flipped, cost too high or causes boundary intersection.\n\tUniformGrid2 m_boundaryGrid;\n\tArray<uint32_t> m_newBoundaryEdges, m_ignoreBoundaryEdges; // Temp arrays used when testing for boundary intersection.\n\n\tvoid addFaceToPatch(uint32_t face)\n\t{\n\t\tXA_DEBUG_ASSERT(!m_faceInPatch.get(face));\n\t\tXA_DEBUG_ASSERT(!m_faceInAnyPatch.get(face));\n\t\tm_patch.push_back(face);\n\t\tm_faceInPatch.set(face);\n\t\tm_faceInAnyPatch.set(face);\n\t\t// Find new candidate faces on the patch incident to the newly added face.\n\t\tfor (Mesh::FaceEdgeIterator it(m_mesh, face); !it.isDone(); it.advance()) {\n\t\t\tconst uint32_t oface = it.oppositeFace();\n\t\t\tif (oface == UINT32_MAX || m_faceInAnyPatch.get(oface) || m_faceToCandidate[oface])\n\t\t\t\tcontinue;\n\t\t\t// Found an active edge on the patch front.\n\t\t\t// Find the free vertex (the vertex that isn't on the active edge).\n\t\t\t// Compute the orientation of the other patch face vertex to the active edge.\n\t\t\tuint32_t freeVertex = UINT32_MAX;\n\t\t\tfloat orient = 0.0f;\n\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\tconst uint32_t vertex = m_mesh->vertexAt(oface * 3 + j);\n\t\t\t\tif (vertex != it.vertex0() && vertex != it.vertex1()) {\n\t\t\t\t\tfreeVertex = vertex;\n\t\t\t\t\torient = orientToEdge(m_texcoords[it.vertex0()], m_texcoords[it.vertex1()], m_texcoords[m_mesh->vertexAt(face * 3 + j)]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(freeVertex != UINT32_MAX);\n\t\t\tif (m_vertexInPatch.get(freeVertex)) {\n#if 0\n\t\t\t\t// If the free vertex is already in the patch, the face is enclosed by the patch. Add the face to the patch - don't need to assign texcoords.\n\t\t\t\tfreeVertex = UINT32_MAX;\n\t\t\t\taddFaceToPatch(oface);\n#endif\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Check this here rather than above so faces enclosed by the patch are always added.\n\t\t\tif (m_faceInvalid.get(oface))\n\t\t\t\tcontinue;\n\t\t\taddCandidateFace(it.edge(), orient, oface, it.oppositeEdge(), freeVertex);\n\t\t}\n\t}\n\n\tvoid addCandidateFace(uint32_t patchEdge, float patchVertexOrient, uint32_t face, uint32_t edge, uint32_t freeVertex)\n\t{\n\t\tXA_DEBUG_ASSERT(!m_faceToCandidate[face]);\n\t\tVector2 texcoords[3];\n\t\torthoProjectFace(face, texcoords);\n\t\t// Find corresponding vertices between the patch edge and candidate edge.\n\t\tconst uint32_t vertex0 = m_mesh->vertexAt(meshEdgeIndex0(patchEdge));\n\t\tconst uint32_t vertex1 = m_mesh->vertexAt(meshEdgeIndex1(patchEdge));\n\t\tuint32_t localVertex0 = UINT32_MAX, localVertex1 = UINT32_MAX, localFreeVertex = UINT32_MAX;\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tconst uint32_t vertex = m_mesh->vertexAt(face * 3 + i);\n\t\t\tif (vertex == m_mesh->vertexAt(meshEdgeIndex1(edge)))\n\t\t\t\tlocalVertex0 = i;\n\t\t\telse if (vertex == m_mesh->vertexAt(meshEdgeIndex0(edge)))\n\t\t\t\tlocalVertex1 = i;\n\t\t\telse\n\t\t\t\tlocalFreeVertex = i;\n\t\t}\n\t\t// Scale orthogonal projection to match the patch edge.\n\t\tconst Vector2 patchEdgeVec = m_texcoords[vertex1] - m_texcoords[vertex0];\n\t\tconst Vector2 localEdgeVec = texcoords[localVertex1] - texcoords[localVertex0];\n\t\tconst float len1 = length(patchEdgeVec);\n\t\tconst float len2 = length(localEdgeVec);\n\t\tif (len1 <= 0.0f || len2 <= 0.0f)\n\t\t\treturn; // Zero length edge.\n\t\tconst float scale = len1 / len2;\n\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\ttexcoords[i] *= scale;\n\t\t// Translate to the first vertex on the patch edge.\n\t\tconst Vector2 translate = m_texcoords[vertex0] - texcoords[localVertex0];\n\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\ttexcoords[i] += translate;\n\t\t// Compute the angle between the patch edge and the corresponding local edge.\n\t\tconst float angle = atan2f(patchEdgeVec.y, patchEdgeVec.x) - atan2f(localEdgeVec.y, localEdgeVec.x);\n\t\t// Rotate so the patch edge and the corresponding local edge occupy the same space.\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tif (i == localVertex0)\n\t\t\t\tcontinue;\n\t\t\tVector2 &uv = texcoords[i];\n\t\t\tuv -= texcoords[localVertex0]; // Rotate around the first vertex.\n\t\t\tconst float c = cosf(angle);\n\t\t\tconst float s = sinf(angle);\n\t\t\tconst float x = uv.x * c - uv.y * s;\n\t\t\tconst float y = uv.y * c + uv.x * s;\n\t\t\tuv.x = x + texcoords[localVertex0].x;\n\t\t\tuv.y = y + texcoords[localVertex0].y;\n\t\t}\n\t\tif (isNan(texcoords[localFreeVertex].x) || isNan(texcoords[localFreeVertex].y)) {\n\t\t\tm_faceInvalid.set(face);\n\t\t\treturn;\n\t\t}\n\t\t// Check for local overlap (flipped triangle).\n\t\t// The patch face vertex that isn't on the active edge and the free vertex should be oriented on opposite sides to the active edge.\n\t\tconst float freeVertexOrient = orientToEdge(m_texcoords[vertex0], m_texcoords[vertex1], texcoords[localFreeVertex]);\n\t\tif ((patchVertexOrient < 0.0f && freeVertexOrient < 0.0f) || (patchVertexOrient > 0.0f && freeVertexOrient > 0.0f)) {\n\t\t\tm_faceInvalid.set(face);\n\t\t\treturn;\n\t\t}\n\t\tconst float stretch = computeStretch(m_mesh->position(vertex0), m_mesh->position(vertex1), m_mesh->position(freeVertex), texcoords[0], texcoords[1], texcoords[2]);\n\t\tif (stretch >= FLT_MAX) {\n\t\t\tm_faceInvalid.set(face);\n\t\t\treturn;\n\t\t}\n\t\tconst float cost = fabsf(stretch - 1.0f);\n\t\tif (cost > 0.5f) {\n\t\t\tm_faceInvalid.set(face);\n\t\t\treturn;\n\t\t}\n\t\t// Add the candidate.\n\t\tCandidate *candidate = XA_ALLOC(MemTag::Default, Candidate);\n\t\tcandidate->face = face;\n\t\tcandidate->vertex = freeVertex;\n\t\tcandidate->position = texcoords[localFreeVertex];\n\t\tcandidate->prev = candidate->next = nullptr;\n\t\tcandidate->cost = candidate->maxCost = cost;\n\t\tcandidate->patchEdge = patchEdge;\n\t\tcandidate->patchVertexOrient = patchVertexOrient;\n\t\tm_candidates.push_back(candidate);\n\t\tm_faceToCandidate[face] = candidate;\n\t\t// Link with candidates that share the same vertex. Append to tail.\n\t\tfor (uint32_t i = 0; i < m_candidates.size() - 1; i++) {\n\t\t\tif (m_candidates[i]->vertex == candidate->vertex) {\n\t\t\t\tCandidate *tail = m_candidates[i];\n\t\t\t\tfor (;;) {\n\t\t\t\t\tif (tail->next)\n\t\t\t\t\t\ttail = tail->next;\n\t\t\t\t\telse\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcandidate->prev = tail;\n\t\t\t\tcandidate->next = nullptr;\n\t\t\t\ttail->next = candidate;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// Set max cost for linked candidates.\n\t\tCandidate *head = linkedCandidateHead(candidate);\n\t\tfloat maxCost = 0.0f;\n\t\tfor (CandidateIterator it(head); !it.isDone(); it.advance())\n\t\t\tmaxCost = max(maxCost, it.current()->cost);\n\t\tfor (CandidateIterator it(head); !it.isDone(); it.advance())\n\t\t\tit.current()->maxCost = maxCost;\n\t}\n\n\tCandidate *linkedCandidateHead(Candidate *candidate)\n\t{\n\t\tCandidate *current = candidate;\n\t\tfor (;;) {\n\t\t\tif (!current->prev)\n\t\t\t\tbreak;\n\t\t\tcurrent = current->prev;\n\t\t}\n\t\treturn current;\n\t}\n\n\tvoid removeLinkedCandidates(Candidate *head)\n\t{\n\t\tXA_DEBUG_ASSERT(!head->prev);\n\t\tCandidate *current = head;\n\t\twhile (current) {\n\t\t\tCandidate *next = current->next;\n\t\t\tm_faceToCandidate[current->face] = nullptr;\n\t\t\tfor (uint32_t i = 0; i < m_candidates.size(); i++) {\n\t\t\t\tif (m_candidates[i] == current) {\n\t\t\t\t\tm_candidates.removeAt(i);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tXA_FREE(current);\n\t\t\tcurrent = next;\n\t\t}\n\t}\n\n\tvoid orthoProjectFace(uint32_t face, Vector2 *texcoords) const\n\t{\n\t\tconst Vector3 normal = -m_mesh->computeFaceNormal(face);\n\t\tconst Vector3 tangent = normalize(m_mesh->position(m_mesh->vertexAt(face * 3 + 1)) - m_mesh->position(m_mesh->vertexAt(face * 3 + 0)));\n\t\tconst Vector3 bitangent = cross(normal, tangent);\n\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\tconst Vector3 &pos = m_mesh->position(m_mesh->vertexAt(face * 3 + i));\n\t\t\ttexcoords[i] = Vector2(dot(tangent, pos), dot(bitangent, pos));\n\t\t}\n\t}\n\n\tfloat parametricArea(const Vector2 *texcoords) const\n\t{\n\t\tconst Vector2 &v1 = texcoords[0];\n\t\tconst Vector2 &v2 = texcoords[1];\n\t\tconst Vector2 &v3 = texcoords[2];\n\t\treturn ((v2.x - v1.x) * (v3.y - v1.y) - (v3.x - v1.x) * (v2.y - v1.y)) * 0.5f;\n\t}\n\n\tfloat computeStretch(Vector3 p1, Vector3 p2, Vector3 p3, Vector2 t1, Vector2 t2, Vector2 t3) const\n\t{\n\t\tfloat parametricArea = ((t2.y - t1.y) * (t3.x - t1.x) - (t3.y - t1.y) * (t2.x - t1.x)) * 0.5f;\n\t\tif (isZero(parametricArea, kAreaEpsilon))\n\t\t\treturn FLT_MAX;\n\t\tif (parametricArea < 0.0f)\n\t\t\tparametricArea = fabsf(parametricArea);\n\t\tconst float geometricArea = length(cross(p2 - p1, p3 - p1)) * 0.5f;\n\t\tif (parametricArea <= geometricArea)\n\t\t\treturn parametricArea / geometricArea;\n\t\telse\n\t\t\treturn geometricArea / parametricArea;\n\t}\n\n\t// Return value is positive if the point is one side of the edge, negative if on the other side.\n\tfloat orientToEdge(Vector2 edgeVertex0, Vector2 edgeVertex1, Vector2 point) const\n\t{\n\t\treturn (edgeVertex0.x - point.x) * (edgeVertex1.y - point.y) - (edgeVertex0.y - point.y) * (edgeVertex1.x - point.x);\n\t}\n};\n\n// Estimate quality of existing parameterization.\nstruct Quality\n{\n\t// computeBoundaryIntersection\n\tbool boundaryIntersection = false;\n\n\t// computeFlippedFaces\n\tuint32_t totalTriangleCount = 0;\n\tuint32_t flippedTriangleCount = 0;\n\tuint32_t zeroAreaTriangleCount = 0;\n\n\t// computeMetrics\n\tfloat totalParametricArea = 0.0f;\n\tfloat totalGeometricArea = 0.0f;\n\tfloat stretchMetric = 0.0f;\n\tfloat maxStretchMetric = 0.0f;\n\tfloat conformalMetric = 0.0f;\n\tfloat authalicMetric = 0.0f;\n\n\tvoid computeBoundaryIntersection(const Mesh *mesh, UniformGrid2 &boundaryGrid)\n\t{\n\t\tconst Array<uint32_t> &boundaryEdges = mesh->boundaryEdges();\n\t\tconst uint32_t boundaryEdgeCount = boundaryEdges.size();\n\t\tboundaryGrid.reset(mesh->texcoords(), mesh->indices(), boundaryEdgeCount);\n\t\tfor (uint32_t i = 0; i < boundaryEdgeCount; i++)\n\t\t\tboundaryGrid.append(boundaryEdges[i]);\n\t\tboundaryIntersection = boundaryGrid.intersect(mesh->epsilon());\n#if XA_DEBUG_EXPORT_BOUNDARY_GRID\n\t\tstatic int exportIndex = 0;\n\t\tchar filename[256];\n\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_boundary_grid_%03d.tga\", exportIndex);\n\t\tboundaryGrid.debugExport(filename);\n\t\texportIndex++;\n#endif\n\t}\n\n\tvoid computeFlippedFaces(const Mesh *mesh, Array<uint32_t> *flippedFaces)\n\t{\n\t\ttotalTriangleCount = flippedTriangleCount = zeroAreaTriangleCount = 0;\n\t\tif (flippedFaces)\n\t\t\tflippedFaces->clear();\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tVector2 texcoord[3];\n\t\t\tfor (int i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t v = mesh->vertexAt(f * 3 + i);\n\t\t\t\ttexcoord[i] = mesh->texcoord(v);\n\t\t\t}\n\t\t\ttotalTriangleCount++;\n\t\t\tconst float t1 = texcoord[0].x;\n\t\t\tconst float s1 = texcoord[0].y;\n\t\t\tconst float t2 = texcoord[1].x;\n\t\t\tconst float s2 = texcoord[1].y;\n\t\t\tconst float t3 = texcoord[2].x;\n\t\t\tconst float s3 = texcoord[2].y;\n\t\t\tconst float parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) * 0.5f;\n\t\t\tif (isZero(parametricArea, kAreaEpsilon)) {\n\t\t\t\tzeroAreaTriangleCount++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (parametricArea < 0.0f) {\n\t\t\t\t// Count flipped triangles.\n\t\t\t\tflippedTriangleCount++;\n\t\t\t\tif (flippedFaces)\n\t\t\t\t\tflippedFaces->push_back(f);\n\t\t\t}\n\t\t}\n\t\tif (flippedTriangleCount + zeroAreaTriangleCount == totalTriangleCount) {\n\t\t\t// If all triangles are flipped, then none are.\n\t\t\tif (flippedFaces)\n\t\t\t\tflippedFaces->clear();\n\t\t\tflippedTriangleCount = 0;\n\t\t}\n\t\tif (flippedTriangleCount > totalTriangleCount / 2)\n\t\t{\n\t\t\t// If more than half the triangles are flipped, reverse the flipped / not flipped classification.\n\t\t\tflippedTriangleCount = totalTriangleCount - flippedTriangleCount;\n\t\t\tif (flippedFaces) {\n\t\t\t\tArray<uint32_t> temp;\n\t\t\t\tflippedFaces->copyTo(temp);\n\t\t\t\tflippedFaces->clear();\n\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\tbool match = false;\n\t\t\t\t\tfor (uint32_t ff = 0; ff < temp.size(); ff++) {\n\t\t\t\t\t\tif (temp[ff] == f) {\n\t\t\t\t\t\t\tmatch = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!match)\n\t\t\t\t\t\tflippedFaces->push_back(f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid computeMetrics(const Mesh *mesh)\n\t{\n\t\ttotalGeometricArea = totalParametricArea = 0.0f;\n\t\tstretchMetric = maxStretchMetric = conformalMetric = authalicMetric = 0.0f;\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tVector3 pos[3];\n\t\t\tVector2 texcoord[3];\n\t\t\tfor (int i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t v = mesh->vertexAt(f * 3 + i);\n\t\t\t\tpos[i] = mesh->position(v);\n\t\t\t\ttexcoord[i] = mesh->texcoord(v);\n\t\t\t}\n\t\t\t// Evaluate texture stretch metric. See:\n\t\t\t// - \"Texture Mapping Progressive Meshes\", Sander, Snyder, Gortler & Hoppe\n\t\t\t// - \"Mesh Parameterization: Theory and Practice\", Siggraph'07 Course Notes, Hormann, Levy & Sheffer.\n\t\t\tconst float t1 = texcoord[0].x;\n\t\t\tconst float s1 = texcoord[0].y;\n\t\t\tconst float t2 = texcoord[1].x;\n\t\t\tconst float s2 = texcoord[1].y;\n\t\t\tconst float t3 = texcoord[2].x;\n\t\t\tconst float s3 = texcoord[2].y;\n\t\t\tfloat parametricArea = ((s2 - s1) * (t3 - t1) - (s3 - s1) * (t2 - t1)) * 0.5f;\n\t\t\tif (isZero(parametricArea, kAreaEpsilon))\n\t\t\t\tcontinue;\n\t\t\tif (parametricArea < 0.0f)\n\t\t\t\tparametricArea = fabsf(parametricArea);\n\t\t\tconst float geometricArea = length(cross(pos[1] - pos[0], pos[2] - pos[0])) / 2;\n\t\t\tconst Vector3 Ss = (pos[0] * (t2 - t3) + pos[1] * (t3 - t1) + pos[2] * (t1 - t2)) / (2 * parametricArea);\n\t\t\tconst Vector3 St = (pos[0] * (s3 - s2) + pos[1] * (s1 - s3) + pos[2] * (s2 - s1)) / (2 * parametricArea);\n\t\t\tconst float a = dot(Ss, Ss); // E\n\t\t\tconst float b = dot(Ss, St); // F\n\t\t\tconst float c = dot(St, St); // G\n\t\t\t\t\t\t\t\t\t\t // Compute eigen-values of the first fundamental form:\n\t\t\tconst float sigma1 = sqrtf(0.5f * max(0.0f, a + c - sqrtf(square(a - c) + 4 * square(b)))); // gamma uppercase, min eigenvalue.\n\t\t\tconst float sigma2 = sqrtf(0.5f * max(0.0f, a + c + sqrtf(square(a - c) + 4 * square(b)))); // gamma lowercase, max eigenvalue.\n\t\t\tXA_ASSERT(sigma2 > sigma1 || equal(sigma1, sigma2, kEpsilon));\n\t\t\t// isometric: sigma1 = sigma2 = 1\n\t\t\t// conformal: sigma1 / sigma2 = 1\n\t\t\t// authalic: sigma1 * sigma2 = 1\n\t\t\tconst float rmsStretch = sqrtf((a + c) * 0.5f);\n\t\t\tconst float rmsStretch2 = sqrtf((square(sigma1) + square(sigma2)) * 0.5f);\n\t\t\tXA_DEBUG_ASSERT(equal(rmsStretch, rmsStretch2, 0.01f));\n\t\t\tXA_UNUSED(rmsStretch2);\n\t\t\tstretchMetric += square(rmsStretch) * geometricArea;\n\t\t\tmaxStretchMetric = max(maxStretchMetric, sigma2);\n\t\t\tif (!isZero(sigma1, 0.000001f)) {\n\t\t\t\t// sigma1 is zero when geometricArea is zero.\n\t\t\t\tconformalMetric += (sigma2 / sigma1) * geometricArea;\n\t\t\t}\n\t\t\tauthalicMetric += (sigma1 * sigma2) * geometricArea;\n\t\t\t// Accumulate total areas.\n\t\t\ttotalGeometricArea += geometricArea;\n\t\t\ttotalParametricArea += parametricArea;\n\t\t}\n\t\tXA_DEBUG_ASSERT(isFinite(totalParametricArea) && totalParametricArea >= 0);\n\t\tXA_DEBUG_ASSERT(isFinite(totalGeometricArea) && totalGeometricArea >= 0);\n\t\tXA_DEBUG_ASSERT(isFinite(stretchMetric));\n\t\tXA_DEBUG_ASSERT(isFinite(maxStretchMetric));\n\t\tXA_DEBUG_ASSERT(isFinite(conformalMetric));\n\t\tXA_DEBUG_ASSERT(isFinite(authalicMetric));\n\t\tif (totalGeometricArea > 0.0f) {\n\t\t\tconst float normFactor = sqrtf(totalParametricArea / totalGeometricArea);\n\t\t\tstretchMetric = sqrtf(stretchMetric / totalGeometricArea) * normFactor;\n\t\t\tmaxStretchMetric  *= normFactor;\n\t\t\tconformalMetric = sqrtf(conformalMetric / totalGeometricArea);\n\t\t\tauthalicMetric = sqrtf(authalicMetric / totalGeometricArea);\n\t\t}\n\t}\n};\n\nstruct ChartCtorBuffers\n{\n\tArray<uint32_t> chartMeshIndices;\n\tArray<uint32_t> unifiedMeshIndices;\n};\n\nclass Chart\n{\npublic:\n\tChart(const Basis &basis, segment::ChartGeneratorType::Enum generatorType, ConstArrayView<uint32_t> faces, const Mesh *sourceMesh, uint32_t chartGroupId, uint32_t chartId) : m_basis(basis), m_unifiedMesh(nullptr), m_type(ChartType::LSCM), m_generatorType(generatorType), m_tjunctionCount(0), m_originalVertexCount(0), m_isInvalid(false)\n\t{\n\t\tXA_UNUSED(chartGroupId);\n\t\tXA_UNUSED(chartId);\n\t\tm_faceToSourceFaceMap.copyFrom(faces.data, faces.length);\n\t\tconst uint32_t approxVertexCount = min(faces.length * 3, sourceMesh->vertexCount());\n\t\tm_unifiedMesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, sourceMesh->epsilon(), approxVertexCount, faces.length);\n\t\tHashMap<uint32_t, PassthroughHash<uint32_t>> sourceVertexToUnifiedVertexMap(MemTag::Mesh, approxVertexCount), sourceVertexToChartVertexMap(MemTag::Mesh, approxVertexCount);\n\t\tm_originalIndices.resize(faces.length * 3);\n\t\t// Add geometry.\n\t\tconst uint32_t faceCount = faces.length;\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tuint32_t unifiedIndices[3];\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t sourceVertex = sourceMesh->vertexAt(m_faceToSourceFaceMap[f] * 3 + i);\n\t\t\t\tuint32_t sourceUnifiedVertex = sourceMesh->firstColocalVertex(sourceVertex);\n\t\t\t\tif (m_generatorType == segment::ChartGeneratorType::OriginalUv && sourceVertex != sourceUnifiedVertex) {\n\t\t\t\t\t// Original UVs: don't unify vertices with different UVs; we want to preserve UVs.\n\t\t\t\t\tif (!equal(sourceMesh->texcoord(sourceVertex), sourceMesh->texcoord(sourceUnifiedVertex), sourceMesh->epsilon()))\n\t\t\t\t\t\tsourceUnifiedVertex = sourceVertex;\n\t\t\t\t}\n\t\t\t\tuint32_t unifiedVertex = sourceVertexToUnifiedVertexMap.get(sourceUnifiedVertex);\n\t\t\t\tif (unifiedVertex == UINT32_MAX) {\n\t\t\t\t\tunifiedVertex = sourceVertexToUnifiedVertexMap.add(sourceUnifiedVertex);\n\t\t\t\t\tm_unifiedMesh->addVertex(sourceMesh->position(sourceVertex), Vector3(0.0f), sourceMesh->texcoord(sourceVertex));\n\t\t\t\t}\n\t\t\t\tif (sourceVertexToChartVertexMap.get(sourceVertex) == UINT32_MAX) {\n\t\t\t\t\tsourceVertexToChartVertexMap.add(sourceVertex);\n\t\t\t\t\tm_vertexToSourceVertexMap.push_back(sourceVertex);\n\t\t\t\t\tm_chartVertexToUnifiedVertexMap.push_back(unifiedVertex);\n\t\t\t\t\tm_originalVertexCount++;\n\t\t\t\t}\n\t\t\t\tm_originalIndices[f * 3 + i] = sourceVertexToChartVertexMap.get(sourceVertex);;\n\t\t\t\tXA_DEBUG_ASSERT(m_originalIndices[f * 3 + i] != UINT32_MAX);\n\t\t\t\tunifiedIndices[i] = sourceVertexToUnifiedVertexMap.get(sourceUnifiedVertex);\n\t\t\t\tXA_DEBUG_ASSERT(unifiedIndices[i] != UINT32_MAX);\n\t\t\t}\n\t\t\tm_unifiedMesh->addFace(unifiedIndices);\n\t\t}\n\t\tm_unifiedMesh->createBoundaries();\n\t\tif (m_generatorType == segment::ChartGeneratorType::Planar) {\n\t\t\tm_type = ChartType::Planar;\n\t\t\treturn;\n\t\t}\n#if XA_CHECK_T_JUNCTIONS\n\t\tm_tjunctionCount = meshCheckTJunctions(*m_unifiedMesh);\n#if XA_DEBUG_EXPORT_OBJ_TJUNCTION\n\t\tif (m_tjunctionCount > 0) {\n\t\t\tchar filename[256];\n\t\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_mesh_%03u_chartgroup_%03u_chart_%03u_tjunction.obj\", sourceMesh->id(), chartGroupId, chartId);\n\t\t\tm_unifiedMesh->writeObjFile(filename);\n\t\t}\n#endif\n#endif\n\t}\n\n\tChart(ChartCtorBuffers &buffers, const Chart *parent, const Mesh *parentMesh, ConstArrayView<uint32_t> faces, ConstArrayView<Vector2> texcoords, const Mesh *sourceMesh) : m_unifiedMesh(nullptr), m_type(ChartType::Piecewise), m_generatorType(segment::ChartGeneratorType::Piecewise), m_tjunctionCount(0), m_originalVertexCount(0), m_isInvalid(false)\n\t{\n\t\tconst uint32_t faceCount = faces.length;\n\t\tm_faceToSourceFaceMap.resize(faceCount);\n\t\tfor (uint32_t i = 0; i < faceCount; i++)\n\t\t\tm_faceToSourceFaceMap[i] = parent->m_faceToSourceFaceMap[faces[i]]; // Map faces to parent chart source mesh.\n\t\t// Copy face indices.\n\t\tArray<uint32_t> &chartMeshIndices = buffers.chartMeshIndices;\n\t\tchartMeshIndices.resize(sourceMesh->vertexCount());\n\t\tchartMeshIndices.fillBytes(0xff);\n\t\tm_unifiedMesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, sourceMesh->epsilon(), m_faceToSourceFaceMap.size() * 3, m_faceToSourceFaceMap.size());\n\t\tHashMap<uint32_t, PassthroughHash<uint32_t>> sourceVertexToUnifiedVertexMap(MemTag::Mesh, m_faceToSourceFaceMap.size() * 3);\n\t\t// Add vertices.\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = sourceMesh->vertexAt(m_faceToSourceFaceMap[f] * 3 + i);\n\t\t\t\tconst uint32_t sourceUnifiedVertex = sourceMesh->firstColocalVertex(vertex);\n\t\t\t\tconst uint32_t parentVertex = parentMesh->vertexAt(faces[f] * 3 + i);\n\t\t\t\tuint32_t unifiedVertex = sourceVertexToUnifiedVertexMap.get(sourceUnifiedVertex);\n\t\t\t\tif (unifiedVertex == UINT32_MAX) {\n\t\t\t\t\tunifiedVertex = sourceVertexToUnifiedVertexMap.add(sourceUnifiedVertex);\n\t\t\t\t\tm_unifiedMesh->addVertex(sourceMesh->position(vertex), Vector3(0.0f), texcoords[parentVertex]);\n\t\t\t\t}\n\t\t\t\tif (chartMeshIndices[vertex] == UINT32_MAX) {\n\t\t\t\t\tchartMeshIndices[vertex] = m_originalVertexCount;\n\t\t\t\t\tm_originalVertexCount++;\n\t\t\t\t\tm_vertexToSourceVertexMap.push_back(vertex);\n\t\t\t\t\tm_chartVertexToUnifiedVertexMap.push_back(unifiedVertex);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Add faces.\n\t\tm_originalIndices.resize(faceCount * 3);\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tuint32_t unifiedIndices[3];\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = sourceMesh->vertexAt(m_faceToSourceFaceMap[f] * 3 + i);\n\t\t\t\tm_originalIndices[f * 3 + i] = chartMeshIndices[vertex];\n\t\t\t\tconst uint32_t unifiedVertex = sourceMesh->firstColocalVertex(vertex);\n\t\t\t\tunifiedIndices[i] = sourceVertexToUnifiedVertexMap.get(unifiedVertex);\n\t\t\t}\n\t\t\tm_unifiedMesh->addFace(unifiedIndices);\n\t\t}\n\t\tm_unifiedMesh->createBoundaries();\n\t\t// Need to store texcoords for backup/restore so packing can be run multiple times.\n\t\tbackupTexcoords();\n\t}\n\n\t~Chart()\n\t{\n\t\tif (m_unifiedMesh) {\n\t\t\tm_unifiedMesh->~Mesh();\n\t\t\tXA_FREE(m_unifiedMesh);\n\t\t\tm_unifiedMesh = nullptr;\n\t\t}\n\t}\n\n\tbool isInvalid() const { return m_isInvalid; }\n\tChartType type() const { return m_type; }\n\tsegment::ChartGeneratorType::Enum generatorType() const { return m_generatorType; }\n\tuint32_t tjunctionCount() const { return m_tjunctionCount; }\n\tconst Quality &quality() const { return m_quality; }\n#if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION\n\tconst Array<uint32_t> &paramFlippedFaces() const { return m_paramFlippedFaces; }\n#endif\n\tuint32_t mapFaceToSourceFace(uint32_t i) const { return m_faceToSourceFaceMap[i]; }\n\tuint32_t mapChartVertexToSourceVertex(uint32_t i) const { return m_vertexToSourceVertexMap[i]; }\n\tconst Mesh *unifiedMesh() const { return m_unifiedMesh; }\n\tMesh *unifiedMesh() { return m_unifiedMesh; }\n\n\t// Vertex count of the chart mesh before unifying vertices.\n\tuint32_t originalVertexCount() const { return m_originalVertexCount; }\n\n\tuint32_t originalVertexToUnifiedVertex(uint32_t v) const { return m_chartVertexToUnifiedVertexMap[v]; }\n\n\tConstArrayView<uint32_t> originalVertices() const { return m_originalIndices; }\n\n\tvoid parameterize(const ChartOptions &options, UniformGrid2 &boundaryGrid)\n\t{\n\t\tconst uint32_t unifiedVertexCount = m_unifiedMesh->vertexCount();\n\t\tif (m_generatorType == segment::ChartGeneratorType::OriginalUv) {\n\t\t} else {\n\t\t\t// Project vertices to plane.\n\t\t\tXA_PROFILE_START(parameterizeChartsOrthogonal)\n\t\t\tfor (uint32_t i = 0; i < unifiedVertexCount; i++)\n\t\t\t\tm_unifiedMesh->texcoord(i) = Vector2(dot(m_basis.tangent, m_unifiedMesh->position(i)), dot(m_basis.bitangent, m_unifiedMesh->position(i)));\n\t\t\tXA_PROFILE_END(parameterizeChartsOrthogonal)\n\t\t\t// Computing charts checks for flipped triangles and boundary intersection. Don't need to do that again here if chart is planar.\n\t\t\tif (m_type != ChartType::Planar && m_generatorType != segment::ChartGeneratorType::OriginalUv) {\n\t\t\t\tXA_PROFILE_START(parameterizeChartsEvaluateQuality)\n\t\t\t\tm_quality.computeBoundaryIntersection(m_unifiedMesh, boundaryGrid);\n\t\t\t\tm_quality.computeFlippedFaces(m_unifiedMesh, nullptr);\n\t\t\t\tm_quality.computeMetrics(m_unifiedMesh);\n\t\t\t\tXA_PROFILE_END(parameterizeChartsEvaluateQuality)\n\t\t\t\t// Use orthogonal parameterization if quality is acceptable.\n\t\t\t\tif (!m_quality.boundaryIntersection && m_quality.flippedTriangleCount == 0 && m_quality.zeroAreaTriangleCount == 0 && m_quality.totalGeometricArea > 0.0f && m_quality.stretchMetric <= 1.1f && m_quality.maxStretchMetric <= 1.25f)\n\t\t\t\t\tm_type = ChartType::Ortho;\n\t\t\t}\n\t\t\tif (m_type == ChartType::LSCM) {\n\t\t\t\tXA_PROFILE_START(parameterizeChartsLSCM)\n\t\t\t\tif (options.paramFunc) {\n\t\t\t\t\toptions.paramFunc(&m_unifiedMesh->position(0).x, &m_unifiedMesh->texcoord(0).x, m_unifiedMesh->vertexCount(), m_unifiedMesh->indices().data, m_unifiedMesh->indexCount());\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tcomputeLeastSquaresConformalMap(m_unifiedMesh);\n\t\t\t\tXA_PROFILE_END(parameterizeChartsLSCM)\n\t\t\t\tXA_PROFILE_START(parameterizeChartsEvaluateQuality)\n\t\t\t\tm_quality.computeBoundaryIntersection(m_unifiedMesh, boundaryGrid);\n#if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION\n\t\t\t\tm_quality.computeFlippedFaces(m_unifiedMesh, &m_paramFlippedFaces);\n#else\n\t\t\t\tm_quality.computeFlippedFaces(m_unifiedMesh, nullptr);\n#endif\n\t\t\t\t// Don't need to call computeMetrics here, that's only used in evaluateOrthoQuality to determine if quality is acceptable enough to use ortho projection.\n\t\t\t\tif (m_quality.boundaryIntersection || m_quality.flippedTriangleCount > 0 || m_quality.zeroAreaTriangleCount > 0)\n\t\t\t\t\tm_isInvalid = true;\n\t\t\t\tXA_PROFILE_END(parameterizeChartsEvaluateQuality)\n\t\t\t}\n\t\t}\n\t\tif (options.fixWinding && m_unifiedMesh->computeFaceParametricArea(0) < 0.0f) {\n\t\t\tfor (uint32_t i = 0; i < unifiedVertexCount; i++)\n\t\t\t\tm_unifiedMesh->texcoord(i).x *= -1.0f;\n\t\t}\n#if XA_CHECK_PARAM_WINDING\n\t\tconst uint32_t faceCount = m_unifiedMesh->faceCount();\n\t\tuint32_t flippedCount = 0;\n\t\tfor (uint32_t i = 0; i < faceCount; i++) {\n\t\t\tconst float area = m_unifiedMesh->computeFaceParametricArea(i);\n\t\t\tif (area < 0.0f)\n\t\t\t\tflippedCount++;\n\t\t}\n\t\tif (flippedCount == faceCount) {\n\t\t\tXA_PRINT_WARNING(\"param: all faces flipped\\n\");\n\t\t} else if (flippedCount > 0) {\n\t\t\tXA_PRINT_WARNING(\"param: %u / %u faces flipped\\n\", flippedCount, faceCount);\n\t\t}\n#endif\n\n#if XA_DEBUG_ALL_CHARTS_INVALID\n\t\tm_isInvalid = true;\n#endif\n\t\t// Need to store texcoords for backup/restore so packing can be run multiple times.\n\t\tbackupTexcoords();\n\t}\n\n\tVector2 computeParametricBounds() const\n\t{\n\t\tVector2 minCorner(FLT_MAX, FLT_MAX);\n\t\tVector2 maxCorner(-FLT_MAX, -FLT_MAX);\n\t\tconst uint32_t vertexCount = m_unifiedMesh->vertexCount();\n\t\tfor (uint32_t v = 0; v < vertexCount; v++) {\n\t\t\tminCorner = min(minCorner, m_unifiedMesh->texcoord(v));\n\t\t\tmaxCorner = max(maxCorner, m_unifiedMesh->texcoord(v));\n\t\t}\n\t\treturn (maxCorner - minCorner) * 0.5f;\n\t}\n\n#if XA_CHECK_PIECEWISE_CHART_QUALITY\n\tvoid evaluateQuality(UniformGrid2 &boundaryGrid)\n\t{\n\t\tm_quality.computeBoundaryIntersection(m_unifiedMesh, boundaryGrid);\n#if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION\n\t\tm_quality.computeFlippedFaces(m_unifiedMesh, &m_paramFlippedFaces);\n#else\n\t\tm_quality.computeFlippedFaces(m_unifiedMesh, nullptr);\n#endif\n\t\tif (m_quality.boundaryIntersection || m_quality.flippedTriangleCount > 0 || m_quality.zeroAreaTriangleCount > 0)\n\t\t\tm_isInvalid = true;\n\t}\n#endif\n\n\tvoid restoreTexcoords()\n\t{\n\t\tmemcpy(m_unifiedMesh->texcoords().data, m_backupTexcoords.data(), m_unifiedMesh->vertexCount() * sizeof(Vector2));\n\t}\n\nprivate:\n\tvoid backupTexcoords()\n\t{\n\t\tm_backupTexcoords.resize(m_unifiedMesh->vertexCount());\n\t\tmemcpy(m_backupTexcoords.data(), m_unifiedMesh->texcoords().data, m_unifiedMesh->vertexCount() * sizeof(Vector2));\n\t}\n\n\tBasis m_basis;\n\tMesh *m_unifiedMesh;\n\tChartType m_type;\n\tsegment::ChartGeneratorType::Enum m_generatorType;\n\tuint32_t m_tjunctionCount;\n\n\tuint32_t m_originalVertexCount;\n\tArray<uint32_t> m_originalIndices;\n\n\t// List of faces of the source mesh that belong to this chart.\n\tArray<uint32_t> m_faceToSourceFaceMap;\n\n\t// Map vertices of the chart mesh to vertices of the source mesh.\n\tArray<uint32_t> m_vertexToSourceVertexMap;\n\n\tArray<uint32_t> m_chartVertexToUnifiedVertexMap;\n\n\tArray<Vector2> m_backupTexcoords;\n\n\tQuality m_quality;\n#if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION\n\tArray<uint32_t> m_paramFlippedFaces;\n#endif\n\tbool m_isInvalid;\n};\n\nstruct CreateAndParameterizeChartTaskGroupArgs\n{\n\tProgress *progress;\n\tThreadLocal<UniformGrid2> *boundaryGrid;\n\tThreadLocal<ChartCtorBuffers> *chartBuffers;\n\tconst ChartOptions *options;\n\tThreadLocal<PiecewiseParam> *pp;\n};\n\nstruct CreateAndParameterizeChartTaskArgs\n{\n\tconst Basis *basis;\n\tChart *chart; // output\n\tArray<Chart *> charts; // output (if more than one chart)\n\tsegment::ChartGeneratorType::Enum chartGeneratorType;\n\tconst Mesh *mesh;\n\tConstArrayView<uint32_t> faces;\n\tuint32_t chartGroupId;\n\tuint32_t chartId;\n};\n\nstatic void runCreateAndParameterizeChartTask(void *groupUserData, void *taskUserData)\n{\n\tXA_PROFILE_START(createChartMeshAndParameterizeThread)\n\tauto groupArgs = (CreateAndParameterizeChartTaskGroupArgs *)groupUserData;\n\tauto args = (CreateAndParameterizeChartTaskArgs *)taskUserData;\n\tXA_PROFILE_START(createChartMesh)\n\targs->chart = XA_NEW_ARGS(MemTag::Default, Chart, *args->basis, args->chartGeneratorType, args->faces, args->mesh, args->chartGroupId, args->chartId);\n\tXA_PROFILE_END(createChartMesh)\n\tXA_PROFILE_START(parameterizeCharts)\n\targs->chart->parameterize(*groupArgs->options, groupArgs->boundaryGrid->get());\n\tXA_PROFILE_END(parameterizeCharts)\n#if XA_RECOMPUTE_CHARTS\n\tif (!args->chart->isInvalid()) {\n\t\tXA_PROFILE_END(createChartMeshAndParameterizeThread)\n\t\treturn;\n\t}\n\t// Recompute charts with invalid parameterizations.\n\tXA_PROFILE_START(parameterizeChartsRecompute)\n\tChart *invalidChart = args->chart;\n\tconst Mesh *invalidMesh = invalidChart->unifiedMesh();\n\tPiecewiseParam &pp = groupArgs->pp->get();\n\tpp.reset(invalidMesh);\n#if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS\n\tchar filename[256];\n\tXA_SPRINTF(filename, sizeof(filename), \"debug_mesh_%03u_chartgroup_%03u_chart_%03u_recomputed.obj\", args->mesh->id(), args->chartGroupId, args->chartId);\n\tFILE *file;\n\tXA_FOPEN(file, filename, \"w\");\n\tuint32_t subChartIndex = 0;\n#endif\n\tfor (;;) {\n\t\tXA_PROFILE_START(parameterizeChartsPiecewise)\n\t\tconst bool facesRemaining = pp.computeChart();\n\t\tXA_PROFILE_END(parameterizeChartsPiecewise)\n\t\tif (!facesRemaining)\n\t\t\tbreak;\n\t\tChart *chart = XA_NEW_ARGS(MemTag::Default, Chart, groupArgs->chartBuffers->get(), invalidChart, invalidMesh, pp.chartFaces(), pp.texcoords(), args->mesh);\n#if XA_CHECK_PIECEWISE_CHART_QUALITY\n\t\tchart->evaluateQuality(args->boundaryGrid->get());\n#endif\n\t\targs->charts.push_back(chart);\n#if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS\n\t\tif (file) {\n\t\t\tfor (uint32_t j = 0; j < invalidMesh->vertexCount(); j++) {\n\t\t\t\tfprintf(file, \"v %g %g %g\\n\", invalidMesh->position(j).x, invalidMesh->position(j).y, invalidMesh->position(j).z);\n\t\t\t\tfprintf(file, \"vt %g %g\\n\", pp.texcoords()[j].x, pp.texcoords()[j].y);\n\t\t\t}\n\t\t\tfprintf(file, \"o chart%03u\\n\", subChartIndex);\n\t\t\tfprintf(file, \"s off\\n\");\n\t\t\tfor (uint32_t f = 0; f < pp.chartFaces().length; f++) {\n\t\t\t\tfprintf(file, \"f \");\n\t\t\t\tconst uint32_t face = pp.chartFaces()[f];\n\t\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\t\tconst uint32_t index = invalidMesh->vertexCount() * subChartIndex + invalidMesh->vertexAt(face * 3 + j) + 1; // 1-indexed\n\t\t\t\t\tfprintf(file, \"%d/%d/%c\", index, index, j == 2 ? '\\n' : ' ');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsubChartIndex++;\n#endif\n\t}\n#if XA_DEBUG_EXPORT_OBJ_RECOMPUTED_CHARTS\n\tif (file)\n\t\tfclose(file);\n#endif\n\tXA_PROFILE_END(parameterizeChartsRecompute)\n#endif // XA_RECOMPUTE_CHARTS\n\tXA_PROFILE_END(createChartMeshAndParameterizeThread)\n\t// Update progress.\n\tgroupArgs->progress->increment(args->faces.length);\n}\n\n// Set of charts corresponding to mesh faces in the same face group.\nclass ChartGroup\n{\npublic:\n\tChartGroup(uint32_t id, const Mesh *sourceMesh, const MeshFaceGroups *sourceMeshFaceGroups, MeshFaceGroups::Handle faceGroup) : m_id(id), m_sourceMesh(sourceMesh), m_sourceMeshFaceGroups(sourceMeshFaceGroups), m_faceGroup(faceGroup)\n\t{\n\t}\n\n\t~ChartGroup()\n\t{\n\t\tfor (uint32_t i = 0; i < m_charts.size(); i++) {\n\t\t\tm_charts[i]->~Chart();\n\t\t\tXA_FREE(m_charts[i]);\n\t\t}\n\t}\n\n\tuint32_t chartCount() const { return m_charts.size(); }\n\tChart *chartAt(uint32_t i) const { return m_charts[i]; }\n\tuint32_t faceCount() const { return m_sourceMeshFaceGroups->faceCount(m_faceGroup); }\n\n\tvoid computeCharts(TaskScheduler *taskScheduler, const ChartOptions &options, Progress *progress, segment::Atlas &atlas, ThreadLocal<UniformGrid2> *boundaryGrid, ThreadLocal<ChartCtorBuffers> *chartBuffers, ThreadLocal<PiecewiseParam> *piecewiseParam)\n\t{\n\t\t// This function may be called multiple times, so destroy existing charts.\n\t\tfor (uint32_t i = 0; i < m_charts.size(); i++) {\n\t\t\tm_charts[i]->~Chart();\n\t\t\tXA_FREE(m_charts[i]);\n\t\t}\n\t\t// Create mesh from source mesh, using only the faces in this face group.\n\t\tXA_PROFILE_START(createChartGroupMesh)\n\t\tMesh *mesh = createMesh();\n\t\tXA_PROFILE_END(createChartGroupMesh)\n\t\t// Segment mesh into charts (arrays of faces).\n#if XA_DEBUG_SINGLE_CHART\n\t\tXA_UNUSED(options);\n\t\tXA_UNUSED(atlas);\n\t\tconst uint32_t chartCount = 1;\n\t\tuint32_t offset;\n\t\tBasis chartBasis;\n\t\tFit::computeBasis(&mesh->position(0), mesh->vertexCount(), &chartBasis);\n\t\tArray<uint32_t> chartFaces;\n\t\tchartFaces.resize(1 + mesh->faceCount());\n\t\tchartFaces[0] = mesh->faceCount();\n\t\tfor (uint32_t i = 0; i < chartFaces.size() - 1; i++)\n\t\t\tchartFaces[i + 1] = m_faceToSourceFaceMap[i];\n\t\t// Destroy mesh.\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tmesh->~Mesh();\n\t\tXA_FREE(mesh);\n#else\n\t\tXA_PROFILE_START(buildAtlas)\n\t\tatlas.reset(mesh, options);\n\t\tatlas.compute();\n\t\tXA_PROFILE_END(buildAtlas)\n\t\t// Update progress.\n\t\tprogress->increment(faceCount());\n#if XA_DEBUG_EXPORT_OBJ_CHARTS\n\t\tchar filename[256];\n\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_mesh_%03u_chartgroup_%03u_charts.obj\", m_sourceMesh->id(), m_id);\n\t\tFILE *file;\n\t\tXA_FOPEN(file, filename, \"w\");\n\t\tif (file) {\n\t\t\tmesh->writeObjVertices(file);\n\t\t\tfor (uint32_t i = 0; i < atlas.chartCount(); i++) {\n\t\t\t\tfprintf(file, \"o chart_%04d\\n\", i);\n\t\t\t\tfprintf(file, \"s off\\n\");\n\t\t\t\tConstArrayView<uint32_t> faces = atlas.chartFaces(i);\n\t\t\t\tfor (uint32_t f = 0; f < faces.length; f++)\n\t\t\t\t\tmesh->writeObjFace(file, faces[f]);\n\t\t\t}\n\t\t\tmesh->writeObjBoundaryEges(file);\n\t\t\tfclose(file);\n\t\t}\n#endif\n\t\t// Destroy mesh.\n\t\tconst uint32_t faceCount = mesh->faceCount();\n\t\tmesh->~Mesh();\n\t\tXA_FREE(mesh);\n\t\tXA_PROFILE_START(copyChartFaces)\n\t\tif (progress->cancel)\n\t\t\treturn;\n\t\t// Copy faces from segment::Atlas to m_chartFaces array with <chart 0 face count> <face 0> <face n> <chart 1 face count> etc. encoding.\n\t\t// segment::Atlas faces refer to the chart group mesh. Map them to the input mesh instead.\n\t\tconst uint32_t chartCount = atlas.chartCount();\n\t\tArray<uint32_t> chartFaces;\n\t\tchartFaces.resize(chartCount + faceCount);\n\t\tuint32_t offset = 0;\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tConstArrayView<uint32_t> faces = atlas.chartFaces(i);\n\t\t\tchartFaces[offset++] = faces.length;\n\t\t\tfor (uint32_t j = 0; j < faces.length; j++)\n\t\t\t\tchartFaces[offset++] = m_faceToSourceFaceMap[faces[j]];\n\t\t}\n\t\tXA_PROFILE_END(copyChartFaces)\n#endif\n\t\tXA_PROFILE_START(createChartMeshAndParameterizeReal)\n\t\tCreateAndParameterizeChartTaskGroupArgs groupArgs;\n\t\tgroupArgs.progress = progress;\n\t\tgroupArgs.boundaryGrid = boundaryGrid;\n\t\tgroupArgs.chartBuffers = chartBuffers;\n\t\tgroupArgs.options = &options;\n\t\tgroupArgs.pp = piecewiseParam;\n\t\tTaskGroupHandle taskGroup = taskScheduler->createTaskGroup(&groupArgs, chartCount);\n\t\tArray<CreateAndParameterizeChartTaskArgs> taskArgs;\n\t\ttaskArgs.resize(chartCount);\n\t\ttaskArgs.runCtors(); // Has Array member.\n\t\toffset = 0;\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tCreateAndParameterizeChartTaskArgs &args = taskArgs[i];\n#if XA_DEBUG_SINGLE_CHART\n\t\t\targs.basis = &chartBasis;\n\t\t\targs.isPlanar = false;\n#else\n\t\t\targs.basis = &atlas.chartBasis(i);\n\t\t\targs.chartGeneratorType = atlas.chartGeneratorType(i);\n#endif\n\t\t\targs.chart = nullptr;\n\t\t\targs.chartGroupId = m_id;\n\t\t\targs.chartId = i;\n\t\t\tconst uint32_t chartFaceCount = chartFaces[offset++];\n\t\t\targs.faces = ConstArrayView<uint32_t>(&chartFaces[offset], chartFaceCount);\n\t\t\toffset += chartFaceCount;\n\t\t\targs.mesh = m_sourceMesh;\n\t\t\tTask task;\n\t\t\ttask.userData = &args;\n\t\t\ttask.func = runCreateAndParameterizeChartTask;\n\t\t\ttaskScheduler->run(taskGroup, task);\n\t\t}\n\t\ttaskScheduler->wait(&taskGroup);\n\t\tXA_PROFILE_END(createChartMeshAndParameterizeReal)\n#if XA_RECOMPUTE_CHARTS\n\t\t// Count charts. Skip invalid ones and include new ones added by recomputing.\n\t\tuint32_t newChartCount = 0;\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tif (taskArgs[i].chart->isInvalid())\n\t\t\t\tnewChartCount += taskArgs[i].charts.size();\n\t\t\telse\n\t\t\t\tnewChartCount++;\n\t\t}\n\t\tm_charts.resize(newChartCount);\n\t\t// Add valid charts first. Destroy invalid ones.\n\t\tuint32_t current = 0;\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tChart *chart = taskArgs[i].chart;\n\t\t\tif (chart->isInvalid()) {\n\t\t\t\tchart->~Chart();\n\t\t\t\tXA_FREE(chart);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tm_charts[current++] = chart;\n\t\t}\n\t\t// Now add new charts.\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tCreateAndParameterizeChartTaskArgs &args = taskArgs[i];\n\t\t\tfor (uint32_t j = 0; j < args.charts.size(); j++)\n\t\t\t\tm_charts[current++] = args.charts[j];\n\t\t}\n#else // XA_RECOMPUTE_CHARTS\n\t\tm_charts.resize(chartCount);\n\t\tfor (uint32_t i = 0; i < chartCount; i++)\n\t\t\tm_charts[i] = taskArgs[i].chart;\n#endif // XA_RECOMPUTE_CHARTS\n\t\ttaskArgs.runDtors(); // Has Array member.\n\t}\n\nprivate:\n\tMesh *createMesh()\n\t{\n\t\tXA_DEBUG_ASSERT(m_faceGroup != MeshFaceGroups::kInvalid);\n\t\t// Create new mesh from the source mesh, using faces that belong to this group.\n\t\tm_faceToSourceFaceMap.reserve(m_sourceMeshFaceGroups->faceCount(m_faceGroup));\n\t\tfor (MeshFaceGroups::Iterator it(m_sourceMeshFaceGroups, m_faceGroup); !it.isDone(); it.advance())\n\t\t\tm_faceToSourceFaceMap.push_back(it.face());\n\t\t// Only initial meshes has ignored faces. The only flag we care about is HasNormals.\n\t\tconst uint32_t faceCount = m_faceToSourceFaceMap.size();\n\t\tXA_DEBUG_ASSERT(faceCount > 0);\n\t\tconst uint32_t approxVertexCount = min(faceCount * 3, m_sourceMesh->vertexCount());\n\t\tMesh *mesh = XA_NEW_ARGS(MemTag::Mesh, Mesh, m_sourceMesh->epsilon(), approxVertexCount, faceCount, m_sourceMesh->flags() & MeshFlags::HasNormals);\n\t\tHashMap<uint32_t, PassthroughHash<uint32_t>> sourceVertexToVertexMap(MemTag::Mesh, approxVertexCount);\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tconst uint32_t face = m_faceToSourceFaceMap[f];\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = m_sourceMesh->vertexAt(face * 3 + i);\n\t\t\t\tif (sourceVertexToVertexMap.get(vertex) == UINT32_MAX) {\n\t\t\t\t\tsourceVertexToVertexMap.add(vertex);\n\t\t\t\t\tVector3 normal(0.0f);\n\t\t\t\t\tif (m_sourceMesh->flags() & MeshFlags::HasNormals)\n\t\t\t\t\t\tnormal = m_sourceMesh->normal(vertex);\n\t\t\t\t\tmesh->addVertex(m_sourceMesh->position(vertex), normal, m_sourceMesh->texcoord(vertex));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Add faces.\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tconst uint32_t face = m_faceToSourceFaceMap[f];\n\t\t\tXA_DEBUG_ASSERT(!m_sourceMesh->isFaceIgnored(face));\n\t\t\tuint32_t indices[3];\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = m_sourceMesh->vertexAt(face * 3 + i);\n\t\t\t\tindices[i] = sourceVertexToVertexMap.get(vertex);\n\t\t\t\tXA_DEBUG_ASSERT(indices[i] != UINT32_MAX);\n\t\t\t}\n\t\t\t// Don't copy flags - ignored faces aren't used by chart groups, they are handled by InvalidMeshGeometry.\n\t\t\tmesh->addFace(indices);\n\t\t}\n\t\tXA_PROFILE_START(createChartGroupMeshColocals)\n\t\tmesh->createColocals();\n\t\tXA_PROFILE_END(createChartGroupMeshColocals)\n\t\tXA_PROFILE_START(createChartGroupMeshBoundaries)\n\t\tmesh->createBoundaries();\n\t\tmesh->destroyEdgeMap(); // Only needed it for createBoundaries.\n\t\tXA_PROFILE_END(createChartGroupMeshBoundaries)\n#if XA_DEBUG_EXPORT_OBJ_CHART_GROUPS\n\t\tchar filename[256];\n\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_mesh_%03u_chartgroup_%03u.obj\", m_sourceMesh->id(), m_id);\n\t\tmesh->writeObjFile(filename);\n#endif\n\t\treturn mesh;\n\t}\n\n\tconst uint32_t m_id;\n\tconst Mesh * const m_sourceMesh;\n\tconst MeshFaceGroups * const m_sourceMeshFaceGroups;\n\tconst MeshFaceGroups::Handle m_faceGroup;\n\tArray<uint32_t> m_faceToSourceFaceMap; // List of faces of the source mesh that belong to this chart group.\n\tArray<Chart *> m_charts;\n};\n\nstruct ChartGroupComputeChartsTaskGroupArgs\n{\n\tThreadLocal<segment::Atlas> *atlas;\n\tconst ChartOptions *options;\n\tProgress *progress;\n\tTaskScheduler *taskScheduler;\n\tThreadLocal<UniformGrid2> *boundaryGrid;\n\tThreadLocal<ChartCtorBuffers> *chartBuffers;\n\tThreadLocal<PiecewiseParam> *piecewiseParam;\n};\n\nstatic void runChartGroupComputeChartsTask(void *groupUserData, void *taskUserData)\n{\n\tauto args = (ChartGroupComputeChartsTaskGroupArgs *)groupUserData;\n\tauto chartGroup = (ChartGroup *)taskUserData;\n\tif (args->progress->cancel)\n\t\treturn;\n\tXA_PROFILE_START(chartGroupComputeChartsThread)\n\tchartGroup->computeCharts(args->taskScheduler, *args->options, args->progress, args->atlas->get(), args->boundaryGrid, args->chartBuffers, args->piecewiseParam);\n\tXA_PROFILE_END(chartGroupComputeChartsThread)\n}\n\nstruct MeshComputeChartsTaskGroupArgs\n{\n\tThreadLocal<segment::Atlas> *atlas;\n\tconst ChartOptions *options;\n\tProgress *progress;\n\tTaskScheduler *taskScheduler;\n\tThreadLocal<UniformGrid2> *boundaryGrid;\n\tThreadLocal<ChartCtorBuffers> *chartBuffers;\n\tThreadLocal<PiecewiseParam> *piecewiseParam;\n};\n\nstruct MeshComputeChartsTaskArgs\n{\n\tconst Mesh *sourceMesh;\n\tArray<ChartGroup *> *chartGroups; // output\n\tInvalidMeshGeometry *invalidMeshGeometry; // output\n};\n\n#if XA_DEBUG_EXPORT_OBJ_FACE_GROUPS\nstatic uint32_t s_faceGroupsCurrentVertex = 0;\n#endif\n\nstatic void runMeshComputeChartsTask(void *groupUserData, void *taskUserData)\n{\n\tauto groupArgs = (MeshComputeChartsTaskGroupArgs *)groupUserData;\n\tauto args = (MeshComputeChartsTaskArgs *)taskUserData;\n\tif (groupArgs->progress->cancel)\n\t\treturn;\n\tXA_PROFILE_START(computeChartsThread)\n\t// Create face groups.\n\tXA_PROFILE_START(createFaceGroups)\n\tMeshFaceGroups *meshFaceGroups = XA_NEW_ARGS(MemTag::Mesh, MeshFaceGroups, args->sourceMesh);\n\tmeshFaceGroups->compute();\n\tconst uint32_t chartGroupCount = meshFaceGroups->groupCount();\n\tXA_PROFILE_END(createFaceGroups)\n\tif (groupArgs->progress->cancel)\n\t\tgoto cleanup;\n#if XA_DEBUG_EXPORT_OBJ_FACE_GROUPS\n\t{\n\t\tstatic std::mutex s_mutex;\n\t\tstd::lock_guard<std::mutex> lock(s_mutex);\n\t\tchar filename[256];\n\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_face_groups.obj\");\n\t\tFILE *file;\n\t\tXA_FOPEN(file, filename, s_faceGroupsCurrentVertex == 0 ? \"w\" : \"a\");\n\t\tif (file) {\n\t\t\tconst Mesh *mesh = args->sourceMesh;\n\t\t\tmesh->writeObjVertices(file);\n\t\t\t// groups\n\t\t\tuint32_t numGroups = 0;\n\t\t\tfor (uint32_t i = 0; i < mesh->faceCount(); i++) {\n\t\t\t\tif (meshFaceGroups->groupAt(i) != MeshFaceGroups::kInvalid)\n\t\t\t\t\tnumGroups = max(numGroups, meshFaceGroups->groupAt(i) + 1);\n\t\t\t}\n\t\t\tfor (uint32_t i = 0; i < numGroups; i++) {\n\t\t\t\tfprintf(file, \"o mesh_%03u_group_%04d\\n\", mesh->id(), i);\n\t\t\t\tfprintf(file, \"s off\\n\");\n\t\t\t\tfor (uint32_t f = 0; f < mesh->faceCount(); f++) {\n\t\t\t\t\tif (meshFaceGroups->groupAt(f) == i)\n\t\t\t\t\t\tmesh->writeObjFace(file, f, s_faceGroupsCurrentVertex);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfprintf(file, \"o mesh_%03u_group_ignored\\n\", mesh->id());\n\t\t\tfprintf(file, \"s off\\n\");\n\t\t\tfor (uint32_t f = 0; f < mesh->faceCount(); f++) {\n\t\t\t\tif (meshFaceGroups->groupAt(f) == MeshFaceGroups::kInvalid)\n\t\t\t\t\tmesh->writeObjFace(file, f, s_faceGroupsCurrentVertex);\n\t\t\t}\n\t\t\tmesh->writeObjBoundaryEges(file);\n\t\t\ts_faceGroupsCurrentVertex += mesh->vertexCount();\n\t\t\tfclose(file);\n\t\t}\n\t}\n#endif\n\t// Create a chart group for each face group.\n\targs->chartGroups->resize(chartGroupCount);\n\tfor (uint32_t i = 0; i < chartGroupCount; i++)\n\t\t(*args->chartGroups)[i] = XA_NEW_ARGS(MemTag::Default, ChartGroup, i, args->sourceMesh, meshFaceGroups, MeshFaceGroups::Handle(i));\n\t// Extract invalid geometry via the invalid face group (MeshFaceGroups::kInvalid).\n\t{\n\t\tXA_PROFILE_START(extractInvalidMeshGeometry)\n\t\targs->invalidMeshGeometry->extract(args->sourceMesh, meshFaceGroups);\n\t\tXA_PROFILE_END(extractInvalidMeshGeometry)\n\t}\n\t// One task for each chart group - compute charts.\n\t{\n\t\tXA_PROFILE_START(chartGroupComputeChartsReal)\n\t\t// Sort chart groups by face count.\n\t\tArray<float> chartGroupSortData;\n\t\tchartGroupSortData.resize(chartGroupCount);\n\t\tfor (uint32_t i = 0; i < chartGroupCount; i++)\n\t\t\tchartGroupSortData[i] = (float)(*args->chartGroups)[i]->faceCount();\n\t\tRadixSort chartGroupSort;\n\t\tchartGroupSort.sort(chartGroupSortData);\n\t\t// Larger chart groups are added first to reduce the chance of thread starvation.\n\t\tChartGroupComputeChartsTaskGroupArgs taskGroupArgs;\n\t\ttaskGroupArgs.atlas = groupArgs->atlas;\n\t\ttaskGroupArgs.options = groupArgs->options;\n\t\ttaskGroupArgs.progress = groupArgs->progress;\n\t\ttaskGroupArgs.taskScheduler = groupArgs->taskScheduler;\n\t\ttaskGroupArgs.boundaryGrid = groupArgs->boundaryGrid;\n\t\ttaskGroupArgs.chartBuffers = groupArgs->chartBuffers;\n\t\ttaskGroupArgs.piecewiseParam = groupArgs->piecewiseParam;\n\t\tTaskGroupHandle taskGroup = groupArgs->taskScheduler->createTaskGroup(&taskGroupArgs, chartGroupCount);\n\t\tfor (uint32_t i = 0; i < chartGroupCount; i++) {\n\t\t\tTask task;\n\t\t\ttask.userData = (*args->chartGroups)[chartGroupCount - i - 1];\n\t\t\ttask.func = runChartGroupComputeChartsTask;\n\t\t\tgroupArgs->taskScheduler->run(taskGroup, task);\n\t\t}\n\t\tgroupArgs->taskScheduler->wait(&taskGroup);\n\t\tXA_PROFILE_END(chartGroupComputeChartsReal)\n\t}\n\tXA_PROFILE_END(computeChartsThread)\ncleanup:\n\tif (meshFaceGroups) {\n\t\tmeshFaceGroups->~MeshFaceGroups();\n\t\tXA_FREE(meshFaceGroups);\n\t}\n}\n\n/// An atlas is a set of chart groups.\nclass Atlas\n{\npublic:\n\tAtlas() : m_chartsComputed(false) {}\n\n\t~Atlas()\n\t{\n\t\tfor (uint32_t i = 0; i < m_meshChartGroups.size(); i++) {\n\t\t\tfor (uint32_t j = 0; j < m_meshChartGroups[i].size(); j++) {\n\t\t\t\tm_meshChartGroups[i][j]->~ChartGroup();\n\t\t\t\tXA_FREE(m_meshChartGroups[i][j]);\n\t\t\t}\n\t\t}\n\t\tm_meshChartGroups.runDtors();\n\t\tm_invalidMeshGeometry.runDtors();\n\t}\n\n\tuint32_t meshCount() const { return m_meshes.size(); }\n\tconst InvalidMeshGeometry &invalidMeshGeometry(uint32_t meshIndex) const { return m_invalidMeshGeometry[meshIndex]; }\n\tbool chartsComputed() const { return m_chartsComputed; }\n\tuint32_t chartGroupCount(uint32_t mesh) const { return m_meshChartGroups[mesh].size(); }\n\tconst ChartGroup *chartGroupAt(uint32_t mesh, uint32_t group) const { return m_meshChartGroups[mesh][group]; }\n\n\tvoid addMesh(const Mesh *mesh)\n\t{\n\t\tm_meshes.push_back(mesh);\n\t}\n\n\tbool computeCharts(TaskScheduler *taskScheduler, const ChartOptions &options, ProgressFunc progressFunc, void *progressUserData)\n\t{\n\t\tXA_PROFILE_START(computeChartsReal)\n#if XA_DEBUG_EXPORT_OBJ_PLANAR_REGIONS\n\t\tsegment::s_planarRegionsCurrentRegion = segment::s_planarRegionsCurrentVertex = 0;\n#endif\n\t\t// Progress is per-face x 2 (1 for chart faces, 1 for parameterized chart faces).\n\t\tconst uint32_t meshCount = m_meshes.size();\n\t\tuint32_t totalFaceCount = 0;\n\t\tfor (uint32_t i = 0; i < meshCount; i++)\n\t\t\ttotalFaceCount += m_meshes[i]->faceCount();\n\t\tProgress progress(ProgressCategory::ComputeCharts, progressFunc, progressUserData, totalFaceCount * 2);\n\t\tm_chartsComputed = false;\n\t\t// Clear chart groups, since this function may be called multiple times.\n\t\tif (!m_meshChartGroups.isEmpty()) {\n\t\t\tfor (uint32_t i = 0; i < m_meshChartGroups.size(); i++) {\n\t\t\t\tfor (uint32_t j = 0; j < m_meshChartGroups[i].size(); j++) {\n\t\t\t\t\tm_meshChartGroups[i][j]->~ChartGroup();\n\t\t\t\t\tXA_FREE(m_meshChartGroups[i][j]);\n\t\t\t\t}\n\t\t\t\tm_meshChartGroups[i].clear();\n\t\t\t}\n\t\t\tXA_ASSERT(m_meshChartGroups.size() == meshCount); // The number of meshes shouldn't have changed.\n\t\t}\n\t\tm_meshChartGroups.resize(meshCount);\n\t\tm_meshChartGroups.runCtors();\n\t\tm_invalidMeshGeometry.resize(meshCount);\n\t\tm_invalidMeshGeometry.runCtors();\n\t\t// One task per mesh.\n\t\tArray<MeshComputeChartsTaskArgs> taskArgs;\n\t\ttaskArgs.resize(meshCount);\n\t\tfor (uint32_t i = 0; i < meshCount; i++) {\n\t\t\tMeshComputeChartsTaskArgs &args = taskArgs[i];\n\t\t\targs.sourceMesh = m_meshes[i];\n\t\t\targs.chartGroups = &m_meshChartGroups[i];\n\t\t\targs.invalidMeshGeometry = &m_invalidMeshGeometry[i];\n\t\t}\n\t\t// Sort meshes by indexCount.\n\t\tArray<float> meshSortData;\n\t\tmeshSortData.resize(meshCount);\n\t\tfor (uint32_t i = 0; i < meshCount; i++)\n\t\t\tmeshSortData[i] = (float)m_meshes[i]->indexCount();\n\t\tRadixSort meshSort;\n\t\tmeshSort.sort(meshSortData);\n\t\t// Larger meshes are added first to reduce the chance of thread starvation.\n\t\tThreadLocal<segment::Atlas> atlas;\n\t\tThreadLocal<UniformGrid2> boundaryGrid; // For Quality boundary intersection.\n\t\tThreadLocal<ChartCtorBuffers> chartBuffers;\n\t\tThreadLocal<PiecewiseParam> piecewiseParam;\n\t\tMeshComputeChartsTaskGroupArgs taskGroupArgs;\n\t\ttaskGroupArgs.atlas = &atlas;\n\t\ttaskGroupArgs.options = &options;\n\t\ttaskGroupArgs.progress = &progress;\n\t\ttaskGroupArgs.taskScheduler = taskScheduler;\n\t\ttaskGroupArgs.boundaryGrid = &boundaryGrid;\n\t\ttaskGroupArgs.chartBuffers = &chartBuffers;\n\t\ttaskGroupArgs.piecewiseParam = &piecewiseParam;\n\t\tTaskGroupHandle taskGroup = taskScheduler->createTaskGroup(&taskGroupArgs, meshCount);\n\t\tfor (uint32_t i = 0; i < meshCount; i++) {\n\t\t\tTask task;\n\t\t\ttask.userData = &taskArgs[meshSort.ranks()[meshCount - i - 1]];\n\t\t\ttask.func = runMeshComputeChartsTask;\n\t\t\ttaskScheduler->run(taskGroup, task);\n\t\t}\n\t\ttaskScheduler->wait(&taskGroup);\n\t\tXA_PROFILE_END(computeChartsReal)\n\t\tif (progress.cancel)\n\t\t\treturn false;\n\t\tm_chartsComputed = true;\n\t\treturn true;\n\t}\n\nprivate:\n\tArray<const Mesh *> m_meshes;\n\tArray<InvalidMeshGeometry> m_invalidMeshGeometry; // 1 per mesh.\n\tArray<Array<ChartGroup *> > m_meshChartGroups;\n\tbool m_chartsComputed;\n};\n\n} // namespace param\n\nnamespace pack {\n\nclass AtlasImage\n{\npublic:\n\tAtlasImage(uint32_t width, uint32_t height) : m_width(width), m_height(height)\n\t{\n\t\tm_data.resize(m_width * m_height);\n\t\tmemset(m_data.data(), 0, sizeof(uint32_t) * m_data.size());\n\t}\n\n\tvoid resize(uint32_t width, uint32_t height)\n\t{\n\t\tArray<uint32_t> data;\n\t\tdata.resize(width * height);\n\t\tmemset(data.data(), 0, sizeof(uint32_t) * data.size());\n\t\tfor (uint32_t y = 0; y < min(m_height, height); y++)\n\t\t\tmemcpy(&data[y * width], &m_data[y * m_width], min(m_width, width) * sizeof(uint32_t));\n\t\tm_width = width;\n\t\tm_height = height;\n\t\tdata.moveTo(m_data);\n\t}\n\n\tvoid addChart(uint32_t chartIndex, const BitImage *image, const BitImage *imageBilinear, const BitImage *imagePadding, int atlas_w, int atlas_h, int offset_x, int offset_y)\n\t{\n\t\tconst int w = image->width();\n\t\tconst int h = image->height();\n\t\tfor (int y = 0; y < h; y++) {\n\t\t\tconst int yy = y + offset_y;\n\t\t\tif (yy < 0)\n\t\t\t\tcontinue;\n\t\t\tfor (int x = 0; x < w; x++) {\n\t\t\t\tconst int xx = x + offset_x;\n\t\t\t\tif (xx >= 0 && xx < atlas_w && yy < atlas_h) {\n\t\t\t\t\tconst uint32_t dataOffset = xx + yy * m_width;\n\t\t\t\t\tif (image->get(x, y)) {\n\t\t\t\t\t\tXA_DEBUG_ASSERT(m_data[dataOffset] == 0);\n\t\t\t\t\t\tm_data[dataOffset] = chartIndex | kImageHasChartIndexBit;\n\t\t\t\t\t} else if (imageBilinear && imageBilinear->get(x, y)) {\n\t\t\t\t\t\tXA_DEBUG_ASSERT(m_data[dataOffset] == 0);\n\t\t\t\t\t\tm_data[dataOffset] = chartIndex | kImageHasChartIndexBit | kImageIsBilinearBit;\n\t\t\t\t\t} else if (imagePadding && imagePadding->get(x, y)) {\n\t\t\t\t\t\tXA_DEBUG_ASSERT(m_data[dataOffset] == 0);\n\t\t\t\t\t\tm_data[dataOffset] = chartIndex | kImageHasChartIndexBit | kImageIsPaddingBit;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid copyTo(uint32_t *dest, uint32_t destWidth, uint32_t destHeight, int padding) const\n\t{\n\t\tfor (uint32_t y = 0; y < destHeight; y++)\n\t\t\tmemcpy(&dest[y * destWidth], &m_data[padding + (y + padding) * m_width], destWidth * sizeof(uint32_t));\n\t}\n\n#if XA_DEBUG_EXPORT_ATLAS_IMAGES\n\tvoid writeTga(const char *filename, uint32_t width, uint32_t height) const\n\t{\n\t\tArray<uint8_t> image;\n\t\timage.resize(width * height * 3);\n\t\tfor (uint32_t y = 0; y < height; y++) {\n\t\t\tif (y >= m_height)\n\t\t\t\tcontinue;\n\t\t\tfor (uint32_t x = 0; x < width; x++) {\n\t\t\t\tif (x >= m_width)\n\t\t\t\t\tcontinue;\n\t\t\t\tconst uint32_t data = m_data[x + y * m_width];\n\t\t\t\tuint8_t *bgr = &image[(x + y * width) * 3];\n\t\t\t\tif (data == 0) {\n\t\t\t\t\tbgr[0] = bgr[1] = bgr[2] = 0;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst uint32_t chartIndex = data & kImageChartIndexMask;\n\t\t\t\tif (data & kImageIsPaddingBit) {\n\t\t\t\t\tbgr[0] = 0;\n\t\t\t\t\tbgr[1] = 0;\n\t\t\t\t\tbgr[2] = 255;\n\t\t\t\t} else if (data & kImageIsBilinearBit) {\n\t\t\t\t\tbgr[0] = 0;\n\t\t\t\t\tbgr[1] = 255;\n\t\t\t\t\tbgr[2] = 0;\n\t\t\t\t} else {\n\t\t\t\t\tconst int mix = 192;\n\t\t\t\t\tsrand((unsigned int)chartIndex);\n\t\t\t\t\tbgr[0] = uint8_t((rand() % 255 + mix) * 0.5f);\n\t\t\t\t\tbgr[1] = uint8_t((rand() % 255 + mix) * 0.5f);\n\t\t\t\t\tbgr[2] = uint8_t((rand() % 255 + mix) * 0.5f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tWriteTga(filename, image.data(), width, height);\n\t}\n#endif\n\nprivate:\n\tuint32_t m_width, m_height;\n\tArray<uint32_t> m_data;\n};\n\nstruct Chart\n{\n\tint32_t atlasIndex;\n\tuint32_t material;\n\tConstArrayView<uint32_t> indices;\n\tfloat parametricArea;\n\tfloat surfaceArea;\n\tArrayView<Vector2> vertices;\n\tArray<uint32_t> uniqueVertices;\n\t// bounding box\n\tVector2 majorAxis, minorAxis, minCorner, maxCorner;\n\t// Mesh only\n\tconst Array<uint32_t> *boundaryEdges;\n\t// UvMeshChart only\n\tArray<uint32_t> faces;\n\n\tVector2 &uniqueVertexAt(uint32_t v) { return uniqueVertices.isEmpty() ? vertices[v] : vertices[uniqueVertices[v]]; }\n\tuint32_t uniqueVertexCount() const { return uniqueVertices.isEmpty() ? vertices.length : uniqueVertices.size(); }\n};\n\nstruct AddChartTaskArgs\n{\n\tparam::Chart *paramChart;\n\tChart *chart; // out\n};\n\nstatic void runAddChartTask(void *groupUserData, void *taskUserData)\n{\n\tXA_PROFILE_START(packChartsAddChartsThread)\n\tauto boundingBox = (ThreadLocal<BoundingBox2D> *)groupUserData;\n\tauto args = (AddChartTaskArgs *)taskUserData;\n\tparam::Chart *paramChart = args->paramChart;\n\tXA_PROFILE_START(packChartsAddChartsRestoreTexcoords)\n\tparamChart->restoreTexcoords();\n\tXA_PROFILE_END(packChartsAddChartsRestoreTexcoords)\n\tMesh *mesh = paramChart->unifiedMesh();\n\tChart *chart = args->chart = XA_NEW(MemTag::Default, Chart);\n\tchart->atlasIndex = -1;\n\tchart->material = 0;\n\tchart->indices = mesh->indices();\n\tchart->parametricArea = mesh->computeParametricArea();\n\tif (chart->parametricArea < kAreaEpsilon) {\n\t\t// When the parametric area is too small we use a rough approximation to prevent divisions by very small numbers.\n\t\tconst Vector2 bounds = paramChart->computeParametricBounds();\n\t\tchart->parametricArea = bounds.x * bounds.y;\n\t}\n\tchart->surfaceArea = mesh->computeSurfaceArea();\n\tchart->vertices = mesh->texcoords();\n\tchart->boundaryEdges = &mesh->boundaryEdges();\n\t// Compute bounding box of chart.\n\tBoundingBox2D &bb = boundingBox->get();\n\tbb.clear();\n\tfor (uint32_t v = 0; v < chart->vertices.length; v++) {\n\t\tif (mesh->isBoundaryVertex(v))\n\t\t\tbb.appendBoundaryVertex(mesh->texcoord(v));\n\t}\n\tbb.compute(mesh->texcoords());\n\tchart->majorAxis = bb.majorAxis;\n\tchart->minorAxis = bb.minorAxis;\n\tchart->minCorner = bb.minCorner;\n\tchart->maxCorner = bb.maxCorner;\n\tXA_PROFILE_END(packChartsAddChartsThread)\n}\n\nstruct Atlas\n{\n\t~Atlas()\n\t{\n\t\tfor (uint32_t i = 0; i < m_atlasImages.size(); i++) {\n\t\t\tm_atlasImages[i]->~AtlasImage();\n\t\t\tXA_FREE(m_atlasImages[i]);\n\t\t}\n\t\tfor (uint32_t i = 0; i < m_bitImages.size(); i++) {\n\t\t\tm_bitImages[i]->~BitImage();\n\t\t\tXA_FREE(m_bitImages[i]);\n\t\t}\n\t\tfor (uint32_t i = 0; i < m_charts.size(); i++) {\n\t\t\tm_charts[i]->~Chart();\n\t\t\tXA_FREE(m_charts[i]);\n\t\t}\n\t}\n\n\tuint32_t getWidth() const { return m_width; }\n\tuint32_t getHeight() const { return m_height; }\n\tuint32_t getNumAtlases() const { return m_bitImages.size(); }\n\tfloat getTexelsPerUnit() const { return m_texelsPerUnit; }\n\tconst Chart *getChart(uint32_t index) const { return m_charts[index]; }\n\tuint32_t getChartCount() const { return m_charts.size(); }\n\tconst Array<AtlasImage *> &getImages() const { return m_atlasImages; }\n\tfloat getUtilization(uint32_t atlas) const { return m_utilization[atlas]; }\n\n\tvoid addCharts(TaskScheduler *taskScheduler, param::Atlas *paramAtlas)\n\t{\n\t\t// Count charts.\n\t\tuint32_t chartCount = 0;\n\t\tfor (uint32_t i = 0; i < paramAtlas->meshCount(); i++) {\n\t\t\tconst uint32_t chartGroupsCount = paramAtlas->chartGroupCount(i);\n\t\t\tfor (uint32_t j = 0; j < chartGroupsCount; j++) {\n\t\t\t\tconst param::ChartGroup *chartGroup = paramAtlas->chartGroupAt(i, j);\n\t\t\t\tchartCount += chartGroup->chartCount();\n\t\t\t}\n\t\t}\n\t\tif (chartCount == 0)\n\t\t\treturn;\n\t\t// Run one task per chart.\n\t\tThreadLocal<BoundingBox2D> boundingBox;\n\t\tTaskGroupHandle taskGroup = taskScheduler->createTaskGroup(&boundingBox, chartCount);\n\t\tArray<AddChartTaskArgs> taskArgs;\n\t\ttaskArgs.resize(chartCount);\n\t\tuint32_t chartIndex = 0;\n\t\tfor (uint32_t i = 0; i < paramAtlas->meshCount(); i++) {\n\t\t\tconst uint32_t chartGroupsCount = paramAtlas->chartGroupCount(i);\n\t\t\tfor (uint32_t j = 0; j < chartGroupsCount; j++) {\n\t\t\t\tconst param::ChartGroup *chartGroup = paramAtlas->chartGroupAt(i, j);\n\t\t\t\tconst uint32_t count = chartGroup->chartCount();\n\t\t\t\tfor (uint32_t k = 0; k < count; k++) {\n\t\t\t\t\tAddChartTaskArgs &args = taskArgs[chartIndex];\n\t\t\t\t\targs.paramChart = chartGroup->chartAt(k);\n\t\t\t\t\tTask task;\n\t\t\t\t\ttask.userData = &taskArgs[chartIndex];\n\t\t\t\t\ttask.func = runAddChartTask;\n\t\t\t\t\ttaskScheduler->run(taskGroup, task);\n\t\t\t\t\tchartIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttaskScheduler->wait(&taskGroup);\n\t\t// Get task output.\n\t\tm_charts.resize(chartCount);\n\t\tfor (uint32_t i = 0; i < chartCount; i++)\n\t\t\tm_charts[i] = taskArgs[i].chart;\n\t}\n\n\tvoid addUvMeshCharts(UvMeshInstance *mesh)\n\t{\n\t\t// Copy texcoords from mesh.\n\t\tmesh->texcoords.resize(mesh->mesh->texcoords.size());\n\t\tmemcpy(mesh->texcoords.data(), mesh->mesh->texcoords.data(), mesh->texcoords.size() * sizeof(Vector2));\n\t\tBitArray vertexUsed(mesh->texcoords.size());\n\t\tBoundingBox2D boundingBox;\n\t\tfor (uint32_t c = 0; c < mesh->mesh->charts.size(); c++) {\n\t\t\tUvMeshChart *uvChart = mesh->mesh->charts[c];\n\t\t\tChart *chart = XA_NEW(MemTag::Default, Chart);\n\t\t\tchart->atlasIndex = -1;\n\t\t\tchart->material = uvChart->material;\n\t\t\tchart->indices = uvChart->indices;\n\t\t\tchart->vertices = mesh->texcoords;\n\t\t\tchart->boundaryEdges = nullptr;\n\t\t\tchart->faces.resize(uvChart->faces.size());\n\t\t\tmemcpy(chart->faces.data(), uvChart->faces.data(), sizeof(uint32_t) * uvChart->faces.size());\n\t\t\t// Find unique vertices.\n\t\t\tvertexUsed.zeroOutMemory();\n\t\t\tfor (uint32_t i = 0; i < chart->indices.length; i++) {\n\t\t\t\tconst uint32_t vertex = chart->indices[i];\n\t\t\t\tif (!vertexUsed.get(vertex)) {\n\t\t\t\t\tvertexUsed.set(vertex);\n\t\t\t\t\tchart->uniqueVertices.push_back(vertex);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Compute parametric and surface areas.\n\t\t\tchart->parametricArea = 0.0f;\n\t\t\tfor (uint32_t f = 0; f < chart->indices.length / 3; f++) {\n\t\t\t\tconst Vector2 &v1 = chart->vertices[chart->indices[f * 3 + 0]];\n\t\t\t\tconst Vector2 &v2 = chart->vertices[chart->indices[f * 3 + 1]];\n\t\t\t\tconst Vector2 &v3 = chart->vertices[chart->indices[f * 3 + 2]];\n\t\t\t\tchart->parametricArea += fabsf(triangleArea(v1, v2, v3));\n\t\t\t}\n\t\t\tchart->parametricArea *= 0.5f;\n\t\t\tif (chart->parametricArea < kAreaEpsilon) {\n\t\t\t\t// When the parametric area is too small we use a rough approximation to prevent divisions by very small numbers.\n\t\t\t\tVector2 minCorner(FLT_MAX, FLT_MAX);\n\t\t\t\tVector2 maxCorner(-FLT_MAX, -FLT_MAX);\n\t\t\t\tfor (uint32_t v = 0; v < chart->uniqueVertexCount(); v++) {\n\t\t\t\t\tminCorner = min(minCorner, chart->uniqueVertexAt(v));\n\t\t\t\t\tmaxCorner = max(maxCorner, chart->uniqueVertexAt(v));\n\t\t\t\t}\n\t\t\t\tconst Vector2 bounds = (maxCorner - minCorner) * 0.5f;\n\t\t\t\tchart->parametricArea = bounds.x * bounds.y;\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(isFinite(chart->parametricArea));\n\t\t\tXA_DEBUG_ASSERT(!isNan(chart->parametricArea));\n\t\t\tchart->surfaceArea = chart->parametricArea; // Identical for UV meshes.\n\t\t\t// Compute bounding box of chart.\n\t\t\t// Using all unique vertices for simplicity, can compute real boundaries if this is too slow.\n\t\t\tboundingBox.clear();\n\t\t\tfor (uint32_t v = 0; v < chart->uniqueVertexCount(); v++)\n\t\t\t\tboundingBox.appendBoundaryVertex(chart->uniqueVertexAt(v));\n\t\t\tboundingBox.compute();\n\t\t\tchart->majorAxis = boundingBox.majorAxis;\n\t\t\tchart->minorAxis = boundingBox.minorAxis;\n\t\t\tchart->minCorner = boundingBox.minCorner;\n\t\t\tchart->maxCorner = boundingBox.maxCorner;\n\t\t\tm_charts.push_back(chart);\n\t\t}\n\t}\n\n\t// Pack charts in the smallest possible rectangle.\n\tbool packCharts(const PackOptions &options, ProgressFunc progressFunc, void *progressUserData)\n\t{\n\t\tif (progressFunc) {\n\t\t\tif (!progressFunc(ProgressCategory::PackCharts, 0, progressUserData))\n\t\t\t\treturn false;\n\t\t}\n\t\tconst uint32_t chartCount = m_charts.size();\n\t\tXA_PRINT(\"Packing %u charts\\n\", chartCount);\n\t\tif (chartCount == 0) {\n\t\t\tif (progressFunc) {\n\t\t\t\tif (!progressFunc(ProgressCategory::PackCharts, 100, progressUserData))\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\t// Estimate resolution and/or texels per unit if not specified.\n\t\tm_texelsPerUnit = options.texelsPerUnit;\n\t\tuint32_t resolution = options.resolution > 0 ? options.resolution + options.padding * 2 : 0;\n\t\tconst uint32_t maxResolution = m_texelsPerUnit > 0.0f ? resolution : 0;\n\t\tif (resolution <= 0 || m_texelsPerUnit <= 0) {\n\t\t\tif (resolution <= 0 && m_texelsPerUnit <= 0)\n\t\t\t\tresolution = 1024;\n\t\t\tfloat meshArea = 0;\n\t\t\tfor (uint32_t c = 0; c < chartCount; c++)\n\t\t\t\tmeshArea += m_charts[c]->surfaceArea;\n\t\t\tif (resolution <= 0) {\n\t\t\t\t// Estimate resolution based on the mesh surface area and given texel scale.\n\t\t\t\tconst float texelCount = max(1.0f, meshArea * square(m_texelsPerUnit) / 0.75f); // Assume 75% utilization.\n\t\t\t\tresolution = max(1u, nextPowerOfTwo(uint32_t(sqrtf(texelCount))));\n\t\t\t}\n\t\t\tif (m_texelsPerUnit <= 0) {\n\t\t\t\t// Estimate a suitable texelsPerUnit to fit the given resolution.\n\t\t\t\tconst float texelCount = max(1.0f, meshArea / 0.75f); // Assume 75% utilization.\n\t\t\t\tm_texelsPerUnit = sqrtf((resolution * resolution) / texelCount);\n\t\t\t\tXA_PRINT(\"   Estimating texelsPerUnit as %g\\n\", m_texelsPerUnit);\n\t\t\t}\n\t\t}\n\t\tArray<float> chartOrderArray;\n\t\tchartOrderArray.resize(chartCount);\n\t\tArray<Vector2> chartExtents;\n\t\tchartExtents.resize(chartCount);\n\t\tfloat minChartPerimeter = FLT_MAX, maxChartPerimeter = 0.0f;\n\t\tfor (uint32_t c = 0; c < chartCount; c++) {\n\t\t\tChart *chart = m_charts[c];\n\t\t\t// Compute chart scale\n\t\t\tfloat scale = 1.0f;\n\t\t\tif (chart->parametricArea != 0.0f) {\n\t\t\t\tscale = sqrtf(chart->surfaceArea / chart->parametricArea) * m_texelsPerUnit;\n\t\t\t\tXA_ASSERT(isFinite(scale));\n\t\t\t}\n\t\t\t// Translate, rotate and scale vertices. Compute extents.\n\t\t\tVector2 minCorner(FLT_MAX, FLT_MAX);\n\t\t\tif (!options.rotateChartsToAxis) {\n\t\t\t\tfor (uint32_t i = 0; i < chart->uniqueVertexCount(); i++)\n\t\t\t\t\tminCorner = min(minCorner, chart->uniqueVertexAt(i));\n\t\t\t}\n\t\t\tVector2 extents(0.0f);\n\t\t\tfor (uint32_t i = 0; i < chart->uniqueVertexCount(); i++) {\n\t\t\t\tVector2 &texcoord = chart->uniqueVertexAt(i);\n\t\t\t\tif (options.rotateChartsToAxis) {\n\t\t\t\t\tconst float x = dot(texcoord, chart->majorAxis);\n\t\t\t\t\tconst float y = dot(texcoord, chart->minorAxis);\n\t\t\t\t\ttexcoord.x = x;\n\t\t\t\t\ttexcoord.y = y;\n\t\t\t\t\ttexcoord -= chart->minCorner;\n\t\t\t\t} else {\n\t\t\t\t\ttexcoord -= minCorner;\n\t\t\t\t}\n\t\t\t\ttexcoord *= scale;\n\t\t\t\tXA_DEBUG_ASSERT(texcoord.x >= 0.0f && texcoord.y >= 0.0f);\n\t\t\t\tXA_DEBUG_ASSERT(isFinite(texcoord.x) && isFinite(texcoord.y));\n\t\t\t\textents = max(extents, texcoord);\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(extents.x >= 0 && extents.y >= 0);\n\t\t\t// Scale the charts to use the entire texel area available. So, if the width is 0.1 we could scale it to 1 without increasing the lightmap usage and making a better use of it. In many cases this also improves the look of the seams, since vertices on the chart boundaries have more chances of being aligned with the texel centers.\n\t\t\tif (extents.x > 0.0f && extents.y > 0.0f) {\n\t\t\t\t// Block align: align all chart extents to 4x4 blocks, but taking padding and texel center offset into account.\n\t\t\t\tconst int blockAlignSizeOffset = options.padding * 2 + 1;\n\t\t\t\tint width = ftoi_ceil(extents.x);\n\t\t\t\tif (options.blockAlign)\n\t\t\t\t\twidth = align(width + blockAlignSizeOffset, 4) - blockAlignSizeOffset;\n\t\t\t\tint height = ftoi_ceil(extents.y);\n\t\t\t\tif (options.blockAlign)\n\t\t\t\t\theight = align(height + blockAlignSizeOffset, 4) - blockAlignSizeOffset;\n\t\t\t\tfor (uint32_t v = 0; v < chart->uniqueVertexCount(); v++) {\n\t\t\t\t\tVector2 &texcoord = chart->uniqueVertexAt(v);\n\t\t\t\t\ttexcoord.x = texcoord.x / extents.x * (float)width;\n\t\t\t\t\ttexcoord.y = texcoord.y / extents.y * (float)height;\n\t\t\t\t}\n\t\t\t\textents.x = (float)width;\n\t\t\t\textents.y = (float)height;\n\t\t\t}\n\t\t\t// Limit chart size, either to PackOptions::maxChartSize or maxResolution (if set), whichever is smaller.\n\t\t\t// If limiting chart size to maxResolution, print a warning, since that may not be desirable to the user.\n\t\t\tuint32_t maxChartSize = options.maxChartSize;\n\t\t\tbool warnChartResized = false;\n\t\t\tif (maxResolution > 0 && (maxChartSize == 0 || maxResolution < maxChartSize)) {\n\t\t\t\tmaxChartSize = maxResolution - options.padding * 2; // Don't include padding.\n\t\t\t\twarnChartResized = true;\n\t\t\t}\n\t\t\tif (maxChartSize > 0) {\n\t\t\t\tconst float realMaxChartSize = (float)maxChartSize - 1.0f; // Aligning to texel centers increases texel footprint by 1.\n\t\t\t\tif (extents.x > realMaxChartSize || extents.y > realMaxChartSize) {\n\t\t\t\t\tif (warnChartResized)\n\t\t\t\t\t\tXA_PRINT(\"   Resizing chart %u from %gx%g to %ux%u to fit atlas\\n\", c, extents.x, extents.y, maxChartSize, maxChartSize);\n\t\t\t\t\tscale = realMaxChartSize / max(extents.x, extents.y);\n\t\t\t\t\tfor (uint32_t i = 0; i < chart->uniqueVertexCount(); i++) {\n\t\t\t\t\t\tVector2 &texcoord = chart->uniqueVertexAt(i);\n\t\t\t\t\t\ttexcoord = min(texcoord * scale, Vector2(realMaxChartSize));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Align to texel centers and add padding offset.\n\t\t\textents.x = extents.y = 0.0f;\n\t\t\tfor (uint32_t v = 0; v < chart->uniqueVertexCount(); v++) {\n\t\t\t\tVector2 &texcoord = chart->uniqueVertexAt(v);\n\t\t\t\ttexcoord.x += 0.5f + options.padding;\n\t\t\t\ttexcoord.y += 0.5f + options.padding;\n\t\t\t\textents = max(extents, texcoord);\n\t\t\t}\n\t\t\tif (extents.x > resolution || extents.y > resolution)\n\t\t\t\tXA_PRINT(\"   Chart %u extents are large (%gx%g)\\n\", c, extents.x, extents.y);\n\t\t\tchartExtents[c] = extents;\n\t\t\tchartOrderArray[c] = extents.x + extents.y; // Use perimeter for chart sort key.\n\t\t\tminChartPerimeter = min(minChartPerimeter, chartOrderArray[c]);\n\t\t\tmaxChartPerimeter = max(maxChartPerimeter, chartOrderArray[c]);\n\t\t}\n\t\t// Sort charts by perimeter.\n\t\tm_radix.sort(chartOrderArray);\n\t\tconst uint32_t *ranks = m_radix.ranks();\n\t\t// Divide chart perimeter range into buckets.\n\t\tconst float chartPerimeterBucketSize = (maxChartPerimeter - minChartPerimeter) / 16.0f;\n\t\tuint32_t currentChartBucket = 0;\n\t\tArray<Vector2i> chartStartPositions; // per atlas\n\t\tchartStartPositions.push_back(Vector2i(0, 0));\n\t\t// Pack sorted charts.\n#if XA_DEBUG_EXPORT_ATLAS_IMAGES\n\t\tconst bool createImage = true;\n#else\n\t\tconst bool createImage = options.createImage;\n#endif\n\t\t// chartImage: result from conservative rasterization\n\t\t// chartImageBilinear: chartImage plus any texels that would be sampled by bilinear filtering.\n\t\t// chartImagePadding: either chartImage or chartImageBilinear depending on options, with a dilate filter applied options.padding times.\n\t\t// Rotated versions swap x and y.\n\t\tBitImage chartImage, chartImageBilinear, chartImagePadding;\n\t\tBitImage chartImageRotated, chartImageBilinearRotated, chartImagePaddingRotated;\n\t\tUniformGrid2 boundaryEdgeGrid;\n\t\tArray<Vector2i> atlasSizes;\n\t\tatlasSizes.push_back(Vector2i(0, 0));\n\t\tint progress = 0;\n\t\tfor (uint32_t i = 0; i < chartCount; i++) {\n\t\t\tuint32_t c = ranks[chartCount - i - 1]; // largest chart first\n\t\t\tChart *chart = m_charts[c];\n\t\t\t// @@ Add special cases for dot and line charts. @@ Lightmap rasterizer also needs to handle these special cases.\n\t\t\t// @@ We could also have a special case for chart quads. If the quad surface <= 4 texels, align vertices with texel centers and do not add padding. May be very useful for foliage.\n\t\t\t// @@ In general we could reduce the padding of all charts by one texel by using a rasterizer that takes into account the 2-texel footprint of the tent bilinear filter. For example,\n\t\t\t// if we have a chart that is less than 1 texel wide currently we add one texel to the left and one texel to the right creating a 3-texel-wide bitImage. However, if we know that the\n\t\t\t// chart is only 1 texel wide we could align it so that it only touches the footprint of two texels:\n\t\t\t//      |   |      <- Touches texels 0, 1 and 2.\n\t\t\t//    |   |        <- Only touches texels 0 and 1.\n\t\t\t// \\   \\ / \\ /   /\n\t\t\t//  \\   X   X   /\n\t\t\t//   \\ / \\ / \\ /\n\t\t\t//    V   V   V\n\t\t\t//    0   1   2\n\t\t\tXA_PROFILE_START(packChartsRasterize)\n\t\t\t// Resize and clear (discard = true) chart images.\n\t\t\t// Leave room for padding at extents.\n\t\t\tchartImage.resize(ftoi_ceil(chartExtents[c].x) + options.padding, ftoi_ceil(chartExtents[c].y) + options.padding, true);\n\t\t\tif (options.rotateCharts)\n\t\t\t\tchartImageRotated.resize(chartImage.height(), chartImage.width(), true);\n\t\t\tif (options.bilinear) {\n\t\t\t\tchartImageBilinear.resize(chartImage.width(), chartImage.height(), true);\n\t\t\t\tif (options.rotateCharts)\n\t\t\t\t\tchartImageBilinearRotated.resize(chartImage.height(), chartImage.width(), true);\n\t\t\t}\n\t\t\t// Rasterize chart faces.\n\t\t\tconst uint32_t faceCount = chart->indices.length / 3;\n\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\tVector2 vertices[3];\n\t\t\t\tfor (uint32_t v = 0; v < 3; v++)\n\t\t\t\t\tvertices[v] = chart->vertices[chart->indices[f * 3 + v]];\n\t\t\t\tDrawTriangleCallbackArgs args;\n\t\t\t\targs.chartBitImage = &chartImage;\n\t\t\t\targs.chartBitImageRotated = options.rotateCharts ? &chartImageRotated : nullptr;\n\t\t\t\traster::drawTriangle(Vector2((float)chartImage.width(), (float)chartImage.height()), vertices, drawTriangleCallback, &args);\n\t\t\t}\n\t\t\t// Expand chart by pixels sampled by bilinear interpolation.\n\t\t\tif (options.bilinear)\n\t\t\t\tbilinearExpand(chart, &chartImage, &chartImageBilinear, options.rotateCharts ? &chartImageBilinearRotated : nullptr, boundaryEdgeGrid);\n\t\t\t// Expand chart by padding pixels (dilation).\n\t\t\tif (options.padding > 0) {\n\t\t\t\t// Copy into the same BitImage instances for every chart to avoid reallocating BitImage buffers (largest chart is packed first).\n\t\t\t\tXA_PROFILE_START(packChartsDilate)\n\t\t\t\tif (options.bilinear)\n\t\t\t\t\tchartImageBilinear.copyTo(chartImagePadding);\n\t\t\t\telse\n\t\t\t\t\tchartImage.copyTo(chartImagePadding);\n\t\t\t\tchartImagePadding.dilate(options.padding);\n\t\t\t\tif (options.rotateCharts) {\n\t\t\t\t\tif (options.bilinear)\n\t\t\t\t\t\tchartImageBilinearRotated.copyTo(chartImagePaddingRotated);\n\t\t\t\t\telse\n\t\t\t\t\t\tchartImageRotated.copyTo(chartImagePaddingRotated);\n\t\t\t\t\tchartImagePaddingRotated.dilate(options.padding);\n\t\t\t\t}\n\t\t\t\tXA_PROFILE_END(packChartsDilate)\n\t\t\t}\n\t\t\tXA_PROFILE_END(packChartsRasterize)\n\t\t\t// Update brute force bucketing.\n\t\t\tif (options.bruteForce) {\n\t\t\t\tif (chartOrderArray[c] > minChartPerimeter && chartOrderArray[c] <= maxChartPerimeter - (chartPerimeterBucketSize * (currentChartBucket + 1))) {\n\t\t\t\t\t// Moved to a smaller bucket, reset start location.\n\t\t\t\t\tfor (uint32_t j = 0; j < chartStartPositions.size(); j++)\n\t\t\t\t\t\tchartStartPositions[j] = Vector2i(0, 0);\n\t\t\t\t\tcurrentChartBucket++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Find a location to place the chart in the atlas.\n\t\t\tBitImage *chartImageToPack, *chartImageToPackRotated;\n\t\t\tif (options.padding > 0) {\n\t\t\t\tchartImageToPack = &chartImagePadding;\n\t\t\t\tchartImageToPackRotated = &chartImagePaddingRotated;\n\t\t\t} else if (options.bilinear) {\n\t\t\t\tchartImageToPack = &chartImageBilinear;\n\t\t\t\tchartImageToPackRotated = &chartImageBilinearRotated;\n\t\t\t} else {\n\t\t\t\tchartImageToPack = &chartImage;\n\t\t\t\tchartImageToPackRotated = &chartImageRotated;\n\t\t\t}\n\t\t\tuint32_t currentAtlas = 0;\n\t\t\tint best_x = 0, best_y = 0;\n\t\t\tint best_cw = 0, best_ch = 0;\n\t\t\tint best_r = 0;\n\t\t\tfor (;;)\n\t\t\t{\n#if XA_DEBUG\n\t\t\t\tbool firstChartInBitImage = false;\n#endif\n\t\t\t\tif (currentAtlas + 1 > m_bitImages.size()) {\n\t\t\t\t\t// Chart doesn't fit in the current bitImage, create a new one.\n\t\t\t\t\tBitImage *bi = XA_NEW_ARGS(MemTag::Default, BitImage, resolution, resolution);\n\t\t\t\t\tm_bitImages.push_back(bi);\n\t\t\t\t\tatlasSizes.push_back(Vector2i(0, 0));\n#if XA_DEBUG\n\t\t\t\t\tfirstChartInBitImage = true;\n#endif\n\t\t\t\t\tif (createImage)\n\t\t\t\t\t\tm_atlasImages.push_back(XA_NEW_ARGS(MemTag::Default, AtlasImage, resolution, resolution));\n\t\t\t\t\t// Start positions are per-atlas, so create a new one of those too.\n\t\t\t\t\tchartStartPositions.push_back(Vector2i(0, 0));\n\t\t\t\t}\n\t\t\t\tXA_PROFILE_START(packChartsFindLocation)\n\t\t\t\tconst bool foundLocation = findChartLocation(options, chartStartPositions[currentAtlas], m_bitImages[currentAtlas], chartImageToPack, chartImageToPackRotated, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, &best_x, &best_y, &best_cw, &best_ch, &best_r, maxResolution);\n\t\t\t\tXA_PROFILE_END(packChartsFindLocation)\n\t\t\t\tXA_DEBUG_ASSERT(!(firstChartInBitImage && !foundLocation)); // Chart doesn't fit in an empty, newly allocated bitImage. Shouldn't happen, since charts are resized if they are too big to fit in the atlas.\n\t\t\t\tif (maxResolution == 0) {\n\t\t\t\t\tXA_DEBUG_ASSERT(foundLocation); // The atlas isn't limited to a fixed resolution, a chart location should be found on the first attempt.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (foundLocation)\n\t\t\t\t\tbreak;\n\t\t\t\t// Chart doesn't fit in the current bitImage, try the next one.\n\t\t\t\tcurrentAtlas++;\n\t\t\t}\n\t\t\t// Update brute force start location.\n\t\t\tif (options.bruteForce) {\n\t\t\t\t// Reset start location if the chart expanded the atlas.\n\t\t\t\tif (best_x + best_cw > atlasSizes[currentAtlas].x || best_y + best_ch > atlasSizes[currentAtlas].y) {\n\t\t\t\t\tfor (uint32_t j = 0; j < chartStartPositions.size(); j++)\n\t\t\t\t\t\tchartStartPositions[j] = Vector2i(0, 0);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchartStartPositions[currentAtlas] = Vector2i(best_x, best_y);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Update parametric extents.\n\t\t\tatlasSizes[currentAtlas].x = max(atlasSizes[currentAtlas].x, best_x + best_cw);\n\t\t\tatlasSizes[currentAtlas].y = max(atlasSizes[currentAtlas].y, best_y + best_ch);\n\t\t\t// Resize bitImage if necessary.\n\t\t\t// If maxResolution > 0, the bitImage is always set to maxResolutionIncludingPadding on creation and doesn't need to be dynamically resized.\n\t\t\tif (maxResolution == 0) {\n\t\t\t\tconst uint32_t w = (uint32_t)atlasSizes[currentAtlas].x;\n\t\t\t\tconst uint32_t h = (uint32_t)atlasSizes[currentAtlas].y;\n\t\t\t\tif (w > m_bitImages[0]->width() || h > m_bitImages[0]->height()) {\n\t\t\t\t\tm_bitImages[0]->resize(nextPowerOfTwo(w), nextPowerOfTwo(h), false);\n\t\t\t\t\tif (createImage)\n\t\t\t\t\t\tm_atlasImages[0]->resize(m_bitImages[0]->width(), m_bitImages[0]->height());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tXA_DEBUG_ASSERT(atlasSizes[currentAtlas].x <= (int)maxResolution);\n\t\t\t\tXA_DEBUG_ASSERT(atlasSizes[currentAtlas].y <= (int)maxResolution);\n\t\t\t}\n\t\t\tXA_PROFILE_START(packChartsBlit)\n\t\t\taddChart(m_bitImages[currentAtlas], chartImageToPack, chartImageToPackRotated, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, best_x, best_y, best_r);\n\t\t\tXA_PROFILE_END(packChartsBlit)\n\t\t\tif (createImage) {\n\t\t\t\tif (best_r == 0) {\n\t\t\t\t\tm_atlasImages[currentAtlas]->addChart(c, &chartImage, options.bilinear ? &chartImageBilinear : nullptr, options.padding > 0 ? &chartImagePadding : nullptr, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, best_x, best_y);\n\t\t\t\t} else {\n\t\t\t\t\tm_atlasImages[currentAtlas]->addChart(c, &chartImageRotated, options.bilinear ? &chartImageBilinearRotated : nullptr, options.padding > 0 ? &chartImagePaddingRotated : nullptr, atlasSizes[currentAtlas].x, atlasSizes[currentAtlas].y, best_x, best_y);\n\t\t\t\t}\n#if XA_DEBUG_EXPORT_ATLAS_IMAGES && XA_DEBUG_EXPORT_ATLAS_IMAGES_PER_CHART\n\t\t\t\tfor (uint32_t j = 0; j < m_atlasImages.size(); j++) {\n\t\t\t\t\tchar filename[256];\n\t\t\t\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_atlas_image%02u_chart%04u.tga\", j, i);\n\t\t\t\t\tm_atlasImages[j]->writeTga(filename, (uint32_t)atlasSizes[j].x, (uint32_t)atlasSizes[j].y);\n\t\t\t\t}\n#endif\n\t\t\t}\n\t\t\tchart->atlasIndex = (int32_t)currentAtlas;\n\t\t\t// Modify texture coordinates:\n\t\t\t//  - rotate if the chart should be rotated\n\t\t\t//  - translate to chart location\n\t\t\t//  - translate to remove padding from top and left atlas edges (unless block aligned)\n\t\t\tfor (uint32_t v = 0; v < chart->uniqueVertexCount(); v++) {\n\t\t\t\tVector2 &texcoord = chart->uniqueVertexAt(v);\n\t\t\t\tVector2 t = texcoord;\n\t\t\t\tif (best_r) {\n\t\t\t\t\tXA_DEBUG_ASSERT(options.rotateCharts);\n\t\t\t\t\tswap(t.x, t.y);\n\t\t\t\t}\n\t\t\t\ttexcoord.x = best_x + t.x;\n\t\t\t\ttexcoord.y = best_y + t.y;\n\t\t\t\ttexcoord.x -= (float)options.padding;\n\t\t\t\ttexcoord.y -= (float)options.padding;\n\t\t\t\tXA_ASSERT(texcoord.x >= 0 && texcoord.y >= 0);\n\t\t\t\tXA_ASSERT(isFinite(texcoord.x) && isFinite(texcoord.y));\n\t\t\t}\n\t\t\tif (progressFunc) {\n\t\t\t\tconst int newProgress = int((i + 1) / (float)chartCount * 100.0f);\n\t\t\t\tif (newProgress != progress) {\n\t\t\t\t\tprogress = newProgress;\n\t\t\t\t\tif (!progressFunc(ProgressCategory::PackCharts, progress, progressUserData))\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Remove padding from outer edges.\n\t\tif (maxResolution == 0) {\n\t\t\tm_width = max(0, atlasSizes[0].x - (int)options.padding * 2);\n\t\t\tm_height = max(0, atlasSizes[0].y - (int)options.padding * 2);\n\t\t} else {\n\t\t\tm_width = m_height = maxResolution - (int)options.padding * 2;\n\t\t}\n\t\tXA_PRINT(\"   %dx%d resolution\\n\", m_width, m_height);\n\t\tm_utilization.resize(m_bitImages.size());\n\t\tfor (uint32_t i = 0; i < m_utilization.size(); i++) {\n\t\t\tif (m_width == 0 || m_height == 0)\n\t\t\t\tm_utilization[i] = 0.0f;\n\t\t\telse {\n\t\t\t\tuint32_t count = 0;\n\t\t\t\tfor (uint32_t y = 0; y < m_height; y++) {\n\t\t\t\t\tfor (uint32_t x = 0; x < m_width; x++)\n\t\t\t\t\t\tcount += m_bitImages[i]->get(x, y);\n\t\t\t\t}\n\t\t\t\tm_utilization[i] = float(count) / (m_width * m_height);\n\t\t\t}\n\t\t\tif (m_utilization.size() > 1) {\n\t\t\t\tXA_PRINT(\"   %u: %f%% utilization\\n\", i, m_utilization[i] * 100.0f);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tXA_PRINT(\"   %f%% utilization\\n\", m_utilization[i] * 100.0f);\n\t\t\t}\n\t\t}\n#if XA_DEBUG_EXPORT_ATLAS_IMAGES\n\t\tfor (uint32_t i = 0; i < m_atlasImages.size(); i++) {\n\t\t\tchar filename[256];\n\t\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_atlas_image%02u.tga\", i);\n\t\t\tm_atlasImages[i]->writeTga(filename, m_width, m_height);\n\t\t}\n#endif\n\t\tif (progressFunc && progress != 100) {\n\t\t\tif (!progressFunc(ProgressCategory::PackCharts, 100, progressUserData))\n\t\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\nprivate:\n\tbool findChartLocation(const PackOptions &options, const Vector2i &startPosition, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, uint32_t maxResolution)\n\t{\n\t\tconst int attempts = 4096;\n\t\tif (options.bruteForce || attempts >= w * h)\n\t\t\treturn findChartLocation_bruteForce(options, startPosition, atlasBitImage, chartBitImage, chartBitImageRotated, w, h, best_x, best_y, best_w, best_h, best_r, maxResolution);\n\t\treturn findChartLocation_random(options, atlasBitImage, chartBitImage, chartBitImageRotated, w, h, best_x, best_y, best_w, best_h, best_r, attempts, maxResolution);\n\t}\n\n\tbool findChartLocation_bruteForce(const PackOptions &options, const Vector2i &startPosition, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, uint32_t maxResolution)\n\t{\n\t\tconst int stepSize = options.blockAlign ? 4 : 1;\n\t\tint best_metric = INT_MAX;\n\t\t// Try two different orientations.\n\t\tfor (int r = 0; r < 2; r++) {\n\t\t\tint cw = chartBitImage->width();\n\t\t\tint ch = chartBitImage->height();\n\t\t\tif (r == 1) {\n\t\t\t\tif (options.rotateCharts)\n\t\t\t\t\tswap(cw, ch);\n\t\t\t\telse\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tfor (int y = startPosition.y; y <= h + stepSize; y += stepSize) {\n\t\t\t\tif (maxResolution > 0 && y > (int)maxResolution - ch)\n\t\t\t\t\tbreak;\n\t\t\t\tfor (int x = (y == startPosition.y ? startPosition.x : 0); x <= w + stepSize; x += stepSize) {\n\t\t\t\t\tif (maxResolution > 0 && x > (int)maxResolution - cw)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// Early out if metric is not better.\n\t\t\t\t\tconst int extentX = max(w, x + cw), extentY = max(h, y + ch);\n\t\t\t\t\tconst int area = extentX * extentY;\n\t\t\t\t\tconst int extents = max(extentX, extentY);\n\t\t\t\t\tconst int metric = extents * extents + area;\n\t\t\t\t\tif (metric > best_metric)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t// If metric is the same, pick the one closest to the origin.\n\t\t\t\t\tif (metric == best_metric && max(x, y) >= max(*best_x, *best_y))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tif (!atlasBitImage->canBlit(r == 1 ? *chartBitImageRotated : *chartBitImage, x, y))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tbest_metric = metric;\n\t\t\t\t\t*best_x = x;\n\t\t\t\t\t*best_y = y;\n\t\t\t\t\t*best_w = cw;\n\t\t\t\t\t*best_h = ch;\n\t\t\t\t\t*best_r = r;\n\t\t\t\t\tif (area == w * h)\n\t\t\t\t\t\treturn true; // Chart is completely inside, do not look at any other location.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn best_metric != INT_MAX;\n\t}\n\n\tbool findChartLocation_random(const PackOptions &options, const BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int w, int h, int *best_x, int *best_y, int *best_w, int *best_h, int *best_r, int attempts, uint32_t maxResolution)\n\t{\n\t\tbool result = false;\n\t\tconst int BLOCK_SIZE = 4;\n\t\tint best_metric = INT_MAX;\n\t\tfor (int i = 0; i < attempts; i++) {\n\t\t\tint cw = chartBitImage->width();\n\t\t\tint ch = chartBitImage->height();\n\t\t\tint r = options.rotateCharts ? m_rand.getRange(1) : 0;\n\t\t\tif (r == 1)\n\t\t\t\tswap(cw, ch);\n\t\t\t// + 1 to extend atlas in case atlas full. We may want to use a higher number to increase probability of extending atlas.\n\t\t\tint xRange = w + 1;\n\t\t\tint yRange = h + 1;\n\t\t\t// Clamp to max resolution.\n\t\t\tif (maxResolution > 0) {\n\t\t\t\txRange = min(xRange, (int)maxResolution - cw);\n\t\t\t\tyRange = min(yRange, (int)maxResolution - ch);\n\t\t\t}\n\t\t\tint x = m_rand.getRange(xRange);\n\t\t\tint y = m_rand.getRange(yRange);\n\t\t\tif (options.blockAlign) {\n\t\t\t\tx = align(x, BLOCK_SIZE);\n\t\t\t\ty = align(y, BLOCK_SIZE);\n\t\t\t\tif (maxResolution > 0 && (x > (int)maxResolution - cw || y > (int)maxResolution - ch))\n\t\t\t\t\tcontinue; // Block alignment pushed the chart outside the atlas.\n\t\t\t}\n\t\t\t// Early out.\n\t\t\tint area = max(w, x + cw) * max(h, y + ch);\n\t\t\t//int perimeter = max(w, x+cw) + max(h, y+ch);\n\t\t\tint extents = max(max(w, x + cw), max(h, y + ch));\n\t\t\tint metric = extents * extents + area;\n\t\t\tif (metric > best_metric) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (metric == best_metric && min(x, y) > min(*best_x, *best_y)) {\n\t\t\t\t// If metric is the same, pick the one closest to the origin.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (atlasBitImage->canBlit(r == 1 ? *chartBitImageRotated : *chartBitImage, x, y)) {\n\t\t\t\tresult = true;\n\t\t\t\tbest_metric = metric;\n\t\t\t\t*best_x = x;\n\t\t\t\t*best_y = y;\n\t\t\t\t*best_w = cw;\n\t\t\t\t*best_h = ch;\n\t\t\t\t*best_r = options.rotateCharts ? r : 0;\n\t\t\t\tif (area == w * h) {\n\t\t\t\t\t// Chart is completely inside, do not look at any other location.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tvoid addChart(BitImage *atlasBitImage, const BitImage *chartBitImage, const BitImage *chartBitImageRotated, int atlas_w, int atlas_h, int offset_x, int offset_y, int r)\n\t{\n\t\tXA_DEBUG_ASSERT(r == 0 || r == 1);\n\t\tconst BitImage *image = r == 0 ? chartBitImage : chartBitImageRotated;\n\t\tconst int w = image->width();\n\t\tconst int h = image->height();\n\t\tfor (int y = 0; y < h; y++) {\n\t\t\tint yy = y + offset_y;\n\t\t\tif (yy >= 0) {\n\t\t\t\tfor (int x = 0; x < w; x++) {\n\t\t\t\t\tint xx = x + offset_x;\n\t\t\t\t\tif (xx >= 0) {\n\t\t\t\t\t\tif (image->get(x, y)) {\n\t\t\t\t\t\t\tif (xx < atlas_w && yy < atlas_h) {\n\t\t\t\t\t\t\t\tXA_DEBUG_ASSERT(atlasBitImage->get(xx, yy) == false);\n\t\t\t\t\t\t\t\tatlasBitImage->set(xx, yy);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid bilinearExpand(const Chart *chart, BitImage *source, BitImage *dest, BitImage *destRotated, UniformGrid2 &boundaryEdgeGrid) const\n\t{\n\t\tboundaryEdgeGrid.reset(chart->vertices, chart->indices);\n\t\tif (chart->boundaryEdges) {\n\t\t\tconst uint32_t edgeCount = chart->boundaryEdges->size();\n\t\t\tfor (uint32_t i = 0; i < edgeCount; i++)\n\t\t\t\tboundaryEdgeGrid.append((*chart->boundaryEdges)[i]);\n\t\t} else {\n\t\t\tfor (uint32_t i = 0; i < chart->indices.length; i++)\n\t\t\t\tboundaryEdgeGrid.append(i);\n\t\t}\n\t\tconst int xOffsets[] = { -1, 0, 1, -1, 1, -1, 0, 1 };\n\t\tconst int yOffsets[] = { -1, -1, -1, 0, 0, 1, 1, 1 };\n\t\tfor (uint32_t y = 0; y < source->height(); y++) {\n\t\t\tfor (uint32_t x = 0; x < source->width(); x++) {\n\t\t\t\t// Copy pixels from source.\n\t\t\t\tif (source->get(x, y))\n\t\t\t\t\tgoto setPixel;\n\t\t\t\t// Empty pixel. If none of of the surrounding pixels are set, this pixel can't be sampled by bilinear interpolation.\n\t\t\t\t{\n\t\t\t\t\tuint32_t s = 0;\n\t\t\t\t\tfor (; s < 8; s++) {\n\t\t\t\t\t\tconst int sx = (int)x + xOffsets[s];\n\t\t\t\t\t\tconst int sy = (int)y + yOffsets[s];\n\t\t\t\t\t\tif (sx < 0 || sy < 0 || sx >= (int)source->width() || sy >= (int)source->height())\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\tif (source->get((uint32_t)sx, (uint32_t)sy))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (s == 8)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\t// If a 2x2 square centered on the pixels centroid intersects the triangle, this pixel will be sampled by bilinear interpolation.\n\t\t\t\t\t// See \"Precomputed Global Illumination in Frostbite (GDC 2018)\" page 95\n\t\t\t\t\tconst Vector2 centroid((float)x + 0.5f, (float)y + 0.5f);\n\t\t\t\t\tconst Vector2 squareVertices[4] = {\n\t\t\t\t\t\tVector2(centroid.x - 1.0f, centroid.y - 1.0f),\n\t\t\t\t\t\tVector2(centroid.x + 1.0f, centroid.y - 1.0f),\n\t\t\t\t\t\tVector2(centroid.x + 1.0f, centroid.y + 1.0f),\n\t\t\t\t\t\tVector2(centroid.x - 1.0f, centroid.y + 1.0f)\n\t\t\t\t\t};\n\t\t\t\t\tfor (uint32_t j = 0; j < 4; j++) {\n\t\t\t\t\t\tif (boundaryEdgeGrid.intersect(squareVertices[j], squareVertices[(j + 1) % 4], 0.0f))\n\t\t\t\t\t\t\tgoto setPixel;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\tsetPixel:\n\t\t\t\tdest->set(x, y);\n\t\t\t\tif (destRotated)\n\t\t\t\t\tdestRotated->set(y, x);\n\t\t\t}\n\t\t}\n\t}\n\n\tstruct DrawTriangleCallbackArgs\n\t{\n\t\tBitImage *chartBitImage, *chartBitImageRotated;\n\t};\n\n\tstatic bool drawTriangleCallback(void *param, int x, int y)\n\t{\n\t\tauto args = (DrawTriangleCallbackArgs *)param;\n\t\targs->chartBitImage->set(x, y);\n\t\tif (args->chartBitImageRotated)\n\t\t\targs->chartBitImageRotated->set(y, x);\n\t\treturn true;\n\t}\n\n\tArray<AtlasImage *> m_atlasImages;\n\tArray<float> m_utilization;\n\tArray<BitImage *> m_bitImages;\n\tArray<Chart *> m_charts;\n\tRadixSort m_radix;\n\tuint32_t m_width = 0;\n\tuint32_t m_height = 0;\n\tfloat m_texelsPerUnit = 0.0f;\n\tKISSRng m_rand;\n};\n\n} // namespace pack\n} // namespace internal\n\n// Used to map triangulated polygons back to polygons.\nstruct MeshPolygonMapping\n{\n\tinternal::Array<uint8_t> faceVertexCount; // Copied from MeshDecl::faceVertexCount.\n\tinternal::Array<uint32_t> triangleToPolygonMap; // Triangle index (mesh face index) to polygon index.\n\tinternal::Array<uint32_t> triangleToPolygonIndicesMap; // Triangle indices to polygon indices.\n};\n\nstruct Context\n{\n\tAtlas atlas;\n\tinternal::Progress *addMeshProgress = nullptr;\n\tinternal::TaskGroupHandle addMeshTaskGroup;\n\tinternal::param::Atlas paramAtlas;\n\tProgressFunc progressFunc = nullptr;\n\tvoid *progressUserData = nullptr;\n\tinternal::TaskScheduler *taskScheduler;\n\tinternal::Array<internal::Mesh *> meshes;\n\tinternal::Array<MeshPolygonMapping *> meshPolygonMappings;\n\tinternal::Array<internal::UvMesh *> uvMeshes;\n\tinternal::Array<internal::UvMeshInstance *> uvMeshInstances;\n\tbool uvMeshChartsComputed = false;\n};\n\nAtlas *Create()\n{\n\tContext *ctx = XA_NEW(internal::MemTag::Default, Context);\n\tmemset(&ctx->atlas, 0, sizeof(Atlas));\n\tctx->taskScheduler = XA_NEW(internal::MemTag::Default, internal::TaskScheduler);\n\treturn &ctx->atlas;\n}\n\nstatic void DestroyOutputMeshes(Context *ctx)\n{\n\tif (!ctx->atlas.meshes)\n\t\treturn;\n\tfor (int i = 0; i < (int)ctx->atlas.meshCount; i++) {\n\t\tMesh &mesh = ctx->atlas.meshes[i];\n\t\tif (mesh.chartArray) {\n\t\t\tfor (uint32_t j = 0; j < mesh.chartCount; j++) {\n\t\t\t\tif (mesh.chartArray[j].faceArray)\n\t\t\t\t\tXA_FREE(mesh.chartArray[j].faceArray);\n\t\t\t}\n\t\t\tXA_FREE(mesh.chartArray);\n\t\t}\n\t\tif (mesh.vertexArray)\n\t\t\tXA_FREE(mesh.vertexArray);\n\t\tif (mesh.indexArray)\n\t\t\tXA_FREE(mesh.indexArray);\n\t}\n\tXA_FREE(ctx->atlas.meshes);\n\tctx->atlas.meshes = nullptr;\n}\n\nvoid Destroy(Atlas *atlas)\n{\n\tXA_DEBUG_ASSERT(atlas);\n\tContext *ctx = (Context *)atlas;\n\tif (atlas->utilization)\n\t\tXA_FREE(atlas->utilization);\n\tif (atlas->image)\n\t\tXA_FREE(atlas->image);\n\tDestroyOutputMeshes(ctx);\n\tif (ctx->addMeshProgress) {\n\t\tctx->addMeshProgress->cancel = true;\n\t\tAddMeshJoin(atlas); // frees addMeshProgress\n\t}\n\tctx->taskScheduler->~TaskScheduler();\n\tXA_FREE(ctx->taskScheduler);\n\tfor (uint32_t i = 0; i < ctx->meshes.size(); i++) {\n\t\tinternal::Mesh *mesh = ctx->meshes[i];\n\t\tmesh->~Mesh();\n\t\tXA_FREE(mesh);\n\t}\n\tfor (uint32_t i = 0; i < ctx->meshPolygonMappings.size(); i++) {\n\t\tMeshPolygonMapping *mapping = ctx->meshPolygonMappings[i];\n\t\tif (mapping) {\n\t\t\tmapping->~MeshPolygonMapping();\n\t\t\tXA_FREE(mapping);\n\t\t}\n\t}\n\tfor (uint32_t i = 0; i < ctx->uvMeshes.size(); i++) {\n\t\tinternal::UvMesh *mesh = ctx->uvMeshes[i];\n\t\tfor (uint32_t j = 0; j < mesh->charts.size(); j++) {\n\t\t\tmesh->charts[j]->~UvMeshChart();\n\t\t\tXA_FREE(mesh->charts[j]);\n\t\t}\n\t\tmesh->~UvMesh();\n\t\tXA_FREE(mesh);\n\t}\n\tfor (uint32_t i = 0; i < ctx->uvMeshInstances.size(); i++) {\n\t\tinternal::UvMeshInstance *mesh = ctx->uvMeshInstances[i];\n\t\tmesh->~UvMeshInstance();\n\t\tXA_FREE(mesh);\n\t}\n\tctx->~Context();\n\tXA_FREE(ctx);\n#if XA_DEBUG_HEAP\n\tinternal::ReportLeaks();\n#endif\n}\n\nstatic void runAddMeshTask(void *groupUserData, void *taskUserData)\n{\n\tXA_PROFILE_START(addMeshThread)\n\tauto ctx = (Context *)groupUserData;\n\tauto mesh = (internal::Mesh *)taskUserData;\n\tinternal::Progress *progress = ctx->addMeshProgress;\n\tif (progress->cancel) {\n\t\tXA_PROFILE_END(addMeshThread)\n\t\t\treturn;\n\t}\n\tXA_PROFILE_START(addMeshCreateColocals)\n\tmesh->createColocals();\n\tXA_PROFILE_END(addMeshCreateColocals)\n\tif (progress->cancel) {\n\t\tXA_PROFILE_END(addMeshThread)\n\t\treturn;\n\t}\n\tprogress->increment(1);\n\tXA_PROFILE_END(addMeshThread)\n}\n\nstatic internal::Vector3 DecodePosition(const MeshDecl &meshDecl, uint32_t index)\n{\n\tXA_DEBUG_ASSERT(meshDecl.vertexPositionData);\n\tXA_DEBUG_ASSERT(meshDecl.vertexPositionStride > 0);\n\treturn *((const internal::Vector3 *)&((const uint8_t *)meshDecl.vertexPositionData)[meshDecl.vertexPositionStride * index]);\n}\n\nstatic internal::Vector3 DecodeNormal(const MeshDecl &meshDecl, uint32_t index)\n{\n\tXA_DEBUG_ASSERT(meshDecl.vertexNormalData);\n\tXA_DEBUG_ASSERT(meshDecl.vertexNormalStride > 0);\n\treturn *((const internal::Vector3 *)&((const uint8_t *)meshDecl.vertexNormalData)[meshDecl.vertexNormalStride * index]);\n}\n\nstatic internal::Vector2 DecodeUv(const MeshDecl &meshDecl, uint32_t index)\n{\n\tXA_DEBUG_ASSERT(meshDecl.vertexUvData);\n\tXA_DEBUG_ASSERT(meshDecl.vertexUvStride > 0);\n\treturn *((const internal::Vector2 *)&((const uint8_t *)meshDecl.vertexUvData)[meshDecl.vertexUvStride * index]);\n}\n\nstatic uint32_t DecodeIndex(IndexFormat format, const void *indexData, int32_t offset, uint32_t i)\n{\n\tXA_DEBUG_ASSERT(indexData);\n\tif (format == IndexFormat::UInt16)\n\t\treturn uint16_t((int32_t)((const uint16_t *)indexData)[i] + offset);\n\treturn uint32_t((int32_t)((const uint32_t *)indexData)[i] + offset);\n}\n\nAddMeshError AddMesh(Atlas *atlas, const MeshDecl &meshDecl, uint32_t meshCountHint)\n{\n\tXA_DEBUG_ASSERT(atlas);\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"AddMesh: atlas is null.\\n\");\n\t\treturn AddMeshError::Error;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tif (!ctx->uvMeshes.isEmpty()) {\n\t\tXA_PRINT_WARNING(\"AddMesh: Meshes and UV meshes cannot be added to the same atlas.\\n\");\n\t\treturn AddMeshError::Error;\n\t}\n#if XA_PROFILE\n\tif (ctx->meshes.isEmpty())\n\t\tinternal::s_profile.addMeshRealStart = std::chrono::high_resolution_clock::now();\n#endif\n\t// Don't know how many times AddMesh will be called, so progress needs to adjusted each time.\n\tif (!ctx->addMeshProgress) {\n\t\tctx->addMeshProgress = XA_NEW_ARGS(internal::MemTag::Default, internal::Progress, ProgressCategory::AddMesh, ctx->progressFunc, ctx->progressUserData, 1);\n\t}\n\telse {\n\t\tctx->addMeshProgress->setMaxValue(internal::max(ctx->meshes.size() + 1, meshCountHint));\n\t}\n\tXA_PROFILE_START(addMeshCopyData)\n\tconst bool hasIndices = meshDecl.indexCount > 0;\n\tconst uint32_t indexCount = hasIndices ? meshDecl.indexCount : meshDecl.vertexCount;\n\tuint32_t faceCount = indexCount / 3;\n\tif (meshDecl.faceVertexCount) {\n\t\tfaceCount = meshDecl.faceCount;\n\t\tXA_PRINT(\"Adding mesh %d: %u vertices, %u polygons\\n\", ctx->meshes.size(), meshDecl.vertexCount, faceCount);\n\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\tif (meshDecl.faceVertexCount[f] < 3)\n\t\t\t\treturn AddMeshError::InvalidFaceVertexCount;\n\t\t}\n\t} else {\n\t\tXA_PRINT(\"Adding mesh %d: %u vertices, %u triangles\\n\", ctx->meshes.size(), meshDecl.vertexCount, faceCount);\n\t\t// Expecting triangle faces unless otherwise specified.\n\t\tif ((indexCount % 3) != 0)\n\t\t\treturn AddMeshError::InvalidIndexCount;\n\t}\n\tuint32_t meshFlags = internal::MeshFlags::HasIgnoredFaces;\n\tif (meshDecl.vertexNormalData)\n\t\tmeshFlags |= internal::MeshFlags::HasNormals;\n\tif (meshDecl.faceMaterialData)\n\t\tmeshFlags |= internal::MeshFlags::HasMaterials;\n\tinternal::Mesh *mesh = XA_NEW_ARGS(internal::MemTag::Mesh, internal::Mesh, meshDecl.epsilon, meshDecl.vertexCount, indexCount / 3, meshFlags, ctx->meshes.size());\n\tfor (uint32_t i = 0; i < meshDecl.vertexCount; i++) {\n\t\tinternal::Vector3 normal(0.0f);\n\t\tinternal::Vector2 texcoord(0.0f);\n\t\tif (meshDecl.vertexNormalData)\n\t\t\tnormal = DecodeNormal(meshDecl, i);\n\t\tif (meshDecl.vertexUvData)\n\t\t\ttexcoord = DecodeUv(meshDecl, i);\n\t\tmesh->addVertex(DecodePosition(meshDecl, i), normal, texcoord);\n\t}\n\tMeshPolygonMapping *meshPolygonMapping = nullptr;\n\tif (meshDecl.faceVertexCount) {\n\t\tmeshPolygonMapping = XA_NEW(internal::MemTag::Default, MeshPolygonMapping);\n\t\t// Copy MeshDecl::faceVertexCount so it can be used later when building output meshes.\n\t\tmeshPolygonMapping->faceVertexCount.copyFrom(meshDecl.faceVertexCount, meshDecl.faceCount);\n\t\t// There should be at least as many triangles as polygons.\n\t\tmeshPolygonMapping->triangleToPolygonMap.reserve(meshDecl.faceCount);\n\t\tmeshPolygonMapping->triangleToPolygonIndicesMap.reserve(meshDecl.indexCount);\n\t}\n\tconst uint32_t kMaxWarnings = 50;\n\tuint32_t warningCount = 0;\n\tinternal::Array<uint32_t> triIndices;\n\tinternal::Triangulator triangulator;\n\tfor (uint32_t face = 0; face < faceCount; face++) {\n\t\t// Decode face indices.\n\t\tconst uint32_t faceVertexCount = meshDecl.faceVertexCount ? (uint32_t)meshDecl.faceVertexCount[face] : 3;\n\t\tuint32_t polygon[UINT8_MAX];\n\t\tfor (uint32_t i = 0; i < faceVertexCount; i++) {\n\t\t\tif (hasIndices) {\n\t\t\t\tpolygon[i] = DecodeIndex(meshDecl.indexFormat, meshDecl.indexData, meshDecl.indexOffset, face * faceVertexCount + i);\n\t\t\t\t// Check if any index is out of range.\n\t\t\t\tif (polygon[i] >= meshDecl.vertexCount) {\n\t\t\t\t\tmesh->~Mesh();\n\t\t\t\t\tXA_FREE(mesh);\n\t\t\t\t\treturn AddMeshError::IndexOutOfRange;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tpolygon[i] = face * faceVertexCount + i;\n\t\t\t}\n\t\t}\n\t\t// Ignore faces with degenerate or zero length edges.\n\t\tbool ignore = false;\n\t\tfor (uint32_t i = 0; i < faceVertexCount; i++) {\n\t\t\tconst uint32_t index1 = polygon[i];\n\t\t\tconst uint32_t index2 = polygon[(i + 1) % 3];\n\t\t\tif (index1 == index2) {\n\t\t\t\tignore = true;\n\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\tXA_PRINT(\"   Degenerate edge: index %d, index %d\\n\", index1, index2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst internal::Vector3 &pos1 = mesh->position(index1);\n\t\t\tconst internal::Vector3 &pos2 = mesh->position(index2);\n\t\t\tif (internal::length(pos2 - pos1) <= 0.0f) {\n\t\t\t\tignore = true;\n\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\tXA_PRINT(\"   Zero length edge: index %d position (%g %g %g), index %d position (%g %g %g)\\n\", index1, pos1.x, pos1.y, pos1.z, index2, pos2.x, pos2.y, pos2.z);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t// Ignore faces with any nan vertex attributes.\n\t\tif (!ignore) {\n\t\t\tfor (uint32_t i = 0; i < faceVertexCount; i++) {\n\t\t\t\tconst internal::Vector3 &pos = mesh->position(polygon[i]);\n\t\t\t\tif (internal::isNan(pos.x) || internal::isNan(pos.y) || internal::isNan(pos.z)) {\n\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\tXA_PRINT(\"   NAN position in face: %d\\n\", face);\n\t\t\t\t\tignore = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (meshDecl.vertexNormalData) {\n\t\t\t\t\tconst internal::Vector3 &normal = mesh->normal(polygon[i]);\n\t\t\t\t\tif (internal::isNan(normal.x) || internal::isNan(normal.y) || internal::isNan(normal.z)) {\n\t\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\t\tXA_PRINT(\"   NAN normal in face: %d\\n\", face);\n\t\t\t\t\t\tignore = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (meshDecl.vertexUvData) {\n\t\t\t\t\tconst internal::Vector2 &uv = mesh->texcoord(polygon[i]);\n\t\t\t\t\tif (internal::isNan(uv.x) || internal::isNan(uv.y)) {\n\t\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\t\tXA_PRINT(\"   NAN texture coordinate in face: %d\\n\", face);\n\t\t\t\t\t\tignore = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Triangulate if necessary.\n\t\ttriIndices.clear();\n\t\tif (faceVertexCount == 3) {\n\t\t\ttriIndices.push_back(polygon[0]);\n\t\t\ttriIndices.push_back(polygon[1]);\n\t\t\ttriIndices.push_back(polygon[2]);\n\t\t} else {\n\t\t\ttriangulator.triangulatePolygon(mesh->positions(), internal::ConstArrayView<uint32_t>(polygon, faceVertexCount), triIndices);\n\t\t}\n\t\t// Check for zero area faces.\n\t\tif (!ignore) {\n\t\t\tfor (uint32_t i = 0; i < triIndices.size(); i += 3) {\n\t\t\t\tconst internal::Vector3 &a = mesh->position(triIndices[i + 0]);\n\t\t\t\tconst internal::Vector3 &b = mesh->position(triIndices[i + 1]);\n\t\t\t\tconst internal::Vector3 &c = mesh->position(triIndices[i + 2]);\n\t\t\t\tconst float area = internal::length(internal::cross(b - a, c - a)) * 0.5f;\n\t\t\t\tif (area <= internal::kAreaEpsilon) {\n\t\t\t\t\tignore = true;\n\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\tXA_PRINT(\"   Zero area face: %d, area is %f\\n\", face, area);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// User face ignore.\n\t\tif (meshDecl.faceIgnoreData && meshDecl.faceIgnoreData[face])\n\t\t\tignore = true;\n\t\t// User material.\n\t\tuint32_t material = UINT32_MAX;\n\t\tif (meshDecl.faceMaterialData)\n\t\t\tmaterial = meshDecl.faceMaterialData[face];\n\t\t// Add the face(s).\n\t\tfor (uint32_t i = 0; i < triIndices.size(); i += 3) {\n\t\t\tmesh->addFace(&triIndices[i], ignore, material);\n\t\t\tif (meshPolygonMapping)\n\t\t\t\tmeshPolygonMapping->triangleToPolygonMap.push_back(face);\n\t\t}\n\t\tif (meshPolygonMapping) {\n\t\t\tfor (uint32_t i = 0; i < triIndices.size(); i++)\n\t\t\t\tmeshPolygonMapping->triangleToPolygonIndicesMap.push_back(triIndices[i]);\n\t\t}\n\t}\n\tif (warningCount > kMaxWarnings)\n\t\tXA_PRINT(\"   %u additional warnings truncated\\n\", warningCount - kMaxWarnings);\n\tXA_PROFILE_END(addMeshCopyData)\n\tctx->meshes.push_back(mesh);\n\tctx->meshPolygonMappings.push_back(meshPolygonMapping);\n\tctx->paramAtlas.addMesh(mesh);\n\tif (ctx->addMeshTaskGroup.value == UINT32_MAX)\n\t\tctx->addMeshTaskGroup = ctx->taskScheduler->createTaskGroup(ctx);\n\tinternal::Task task;\n\ttask.userData = mesh;\n\ttask.func = runAddMeshTask;\n\tctx->taskScheduler->run(ctx->addMeshTaskGroup, task);\n\treturn AddMeshError::Success;\n}\n\nvoid AddMeshJoin(Atlas *atlas)\n{\n\tXA_DEBUG_ASSERT(atlas);\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"AddMeshJoin: atlas is null.\\n\");\n\t\treturn;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tif (!ctx->uvMeshes.isEmpty()) {\n#if XA_PROFILE\n\t\tXA_PRINT(\"Added %u UV meshes\\n\", ctx->uvMeshes.size());\n\t\tinternal::s_profile.addMeshReal = uint64_t(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - internal::s_profile.addMeshRealStart).count());\n#endif\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Total: \", addMeshReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Copy data: \", addMeshCopyData)\n#if XA_PROFILE_ALLOC\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\t\tXA_PRINT_MEM_USAGE\n\t} else {\n\t\tif (!ctx->addMeshProgress)\n\t\t\treturn;\n\t\tctx->taskScheduler->wait(&ctx->addMeshTaskGroup);\n\t\tctx->addMeshProgress->~Progress();\n\t\tXA_FREE(ctx->addMeshProgress);\n\t\tctx->addMeshProgress = nullptr;\n#if XA_PROFILE\n\t\tXA_PRINT(\"Added %u meshes\\n\", ctx->meshes.size());\n\t\tinternal::s_profile.addMeshReal = uint64_t(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::high_resolution_clock::now() - internal::s_profile.addMeshRealStart).count());\n#endif\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Total (real): \", addMeshReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Copy data: \", addMeshCopyData)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Total (thread): \", addMeshThread)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Create colocals: \", addMeshCreateColocals)\n#if XA_PROFILE_ALLOC\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\t\tXA_PRINT_MEM_USAGE\n#if XA_DEBUG_EXPORT_OBJ_FACE_GROUPS\n\t\tinternal::param::s_faceGroupsCurrentVertex = 0;\n#endif\n\t}\n}\n\nAddMeshError AddUvMesh(Atlas *atlas, const UvMeshDecl &decl)\n{\n\tXA_DEBUG_ASSERT(atlas);\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"AddUvMesh: atlas is null.\\n\");\n\t\treturn AddMeshError::Error;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tif (!ctx->meshes.isEmpty()) {\n\t\tXA_PRINT_WARNING(\"AddUvMesh: Meshes and UV meshes cannot be added to the same atlas.\\n\");\n\t\treturn AddMeshError::Error;\n\t}\n#if XA_PROFILE\n\tif (ctx->uvMeshInstances.isEmpty())\n\t\tinternal::s_profile.addMeshRealStart = std::chrono::high_resolution_clock::now();\n#endif\n\tXA_PROFILE_START(addMeshCopyData)\n\tconst bool hasIndices = decl.indexCount > 0;\n\tconst uint32_t indexCount = hasIndices ? decl.indexCount : decl.vertexCount;\n\tXA_PRINT(\"Adding UV mesh %d: %u vertices, %u triangles\\n\", ctx->uvMeshes.size(), decl.vertexCount, indexCount / 3);\n\t// Expecting triangle faces.\n\tif ((indexCount % 3) != 0)\n\t\treturn AddMeshError::InvalidIndexCount;\n\tif (hasIndices) {\n\t\t// Check if any index is out of range.\n\t\tfor (uint32_t i = 0; i < indexCount; i++) {\n\t\t\tconst uint32_t index = DecodeIndex(decl.indexFormat, decl.indexData, decl.indexOffset, i);\n\t\t\tif (index >= decl.vertexCount)\n\t\t\t\treturn AddMeshError::IndexOutOfRange;\n\t\t}\n\t}\n\t// Create a mesh instance.\n\tinternal::UvMeshInstance *meshInstance = XA_NEW(internal::MemTag::Default, internal::UvMeshInstance);\n\tmeshInstance->mesh = nullptr;\n\tctx->uvMeshInstances.push_back(meshInstance);\n\t// See if this is an instance of an already existing mesh.\n\tinternal::UvMesh *mesh = nullptr;\n\tfor (uint32_t m = 0; m < ctx->uvMeshes.size(); m++) {\n\t\tif (memcmp(&ctx->uvMeshes[m]->decl, &decl, sizeof(UvMeshDecl)) == 0) {\n\t\t\tmesh = ctx->uvMeshes[m];\n\t\t\tXA_PRINT(\"   instance of a previous UV mesh\\n\");\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (!mesh) {\n\t\t// Copy geometry to mesh.\n\t\tmesh = XA_NEW(internal::MemTag::Default, internal::UvMesh);\n\t\tctx->uvMeshes.push_back(mesh);\n\t\tmesh->decl = decl;\n\t\tif (decl.faceMaterialData) {\n\t\t\tmesh->faceMaterials.resize(decl.indexCount / 3);\n\t\t\tmemcpy(mesh->faceMaterials.data(), decl.faceMaterialData, mesh->faceMaterials.size() * sizeof(uint32_t));\n\t\t}\n\t\tmesh->indices.resize(decl.indexCount);\n\t\tfor (uint32_t i = 0; i < indexCount; i++)\n\t\t\tmesh->indices[i] = hasIndices ? DecodeIndex(decl.indexFormat, decl.indexData, decl.indexOffset, i) : i;\n\t\tmesh->texcoords.resize(decl.vertexCount);\n\t\tfor (uint32_t i = 0; i < decl.vertexCount; i++)\n\t\t\tmesh->texcoords[i] = *((const internal::Vector2 *)&((const uint8_t *)decl.vertexUvData)[decl.vertexStride * i]);\n\t\t// Validate.\n\t\tmesh->faceIgnore.resize(decl.indexCount / 3);\n\t\tmesh->faceIgnore.zeroOutMemory();\n\t\tconst uint32_t kMaxWarnings = 50;\n\t\tuint32_t warningCount = 0;\n\t\tfor (uint32_t f = 0; f < indexCount / 3; f++) {\n\t\t\tbool ignore = false;\n\t\t\tuint32_t tri[3];\n\t\t\tfor (uint32_t i = 0; i < 3; i++)\n\t\t\t\ttri[i] = mesh->indices[f * 3 + i];\n\t\t\t// Check for nan UVs.\n\t\t\tfor (uint32_t i = 0; i < 3; i++) {\n\t\t\t\tconst uint32_t vertex = tri[i];\n\t\t\t\tif (internal::isNan(mesh->texcoords[vertex].x) || internal::isNan(mesh->texcoords[vertex].y)) {\n\t\t\t\t\tignore = true;\n\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\tXA_PRINT(\"   NAN texture coordinate in vertex %u\\n\", vertex);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check for zero area faces.\n\t\t\tif (!ignore) {\n\t\t\t\tconst internal::Vector2 &v1 = mesh->texcoords[tri[0]];\n\t\t\t\tconst internal::Vector2 &v2 = mesh->texcoords[tri[1]];\n\t\t\t\tconst internal::Vector2 &v3 = mesh->texcoords[tri[2]];\n\t\t\t\tconst float area = fabsf(((v2.x - v1.x) * (v3.y - v1.y) - (v3.x - v1.x) * (v2.y - v1.y)) * 0.5f);\n\t\t\t\tif (area <= internal::kAreaEpsilon) {\n\t\t\t\t\tignore = true;\n\t\t\t\t\tif (++warningCount <= kMaxWarnings)\n\t\t\t\t\t\tXA_PRINT(\"   Zero area face: %d, indices (%d %d %d), area is %f\\n\", f, tri[0], tri[1], tri[2], area);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ignore)\n\t\t\t\tmesh->faceIgnore.set(f);\n\t\t}\n\t\tif (warningCount > kMaxWarnings)\n\t\t\tXA_PRINT(\"   %u additional warnings truncated\\n\", warningCount - kMaxWarnings);\n\t}\n\tmeshInstance->mesh = mesh;\n\tXA_PROFILE_END(addMeshCopyData)\n\treturn AddMeshError::Success;\n}\n\nvoid ComputeCharts(Atlas *atlas, ChartOptions options)\n{\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"ComputeCharts: atlas is null.\\n\");\n\t\treturn;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tAddMeshJoin(atlas);\n\tif (ctx->meshes.isEmpty() && ctx->uvMeshInstances.isEmpty()) {\n\t\tXA_PRINT_WARNING(\"ComputeCharts: No meshes. Call AddMesh or AddUvMesh first.\\n\");\n\t\treturn;\n\t}\n\t// Reset atlas state. This function may be called multiple times, or again after PackCharts.\n\tif (atlas->utilization)\n\t\tXA_FREE(atlas->utilization);\n\tif (atlas->image)\n\t\tXA_FREE(atlas->image);\n\tDestroyOutputMeshes(ctx);\n\tmemset(&ctx->atlas, 0, sizeof(Atlas));\n\tXA_PRINT(\"Computing charts\\n\");\n\tif (!ctx->meshes.isEmpty()) {\n\t\tif (!ctx->paramAtlas.computeCharts(ctx->taskScheduler, options, ctx->progressFunc, ctx->progressUserData)) {\n\t\t\tXA_PRINT(\"   Cancelled by user\\n\");\n\t\t\treturn;\n\t\t}\n\t\tuint32_t chartsWithTJunctionsCount = 0, tJunctionCount = 0, orthoChartsCount = 0, planarChartsCount = 0, lscmChartsCount = 0, piecewiseChartsCount = 0, originalUvChartsCount = 0;\n\t\tuint32_t chartCount = 0;\n\t\tconst uint32_t meshCount = ctx->meshes.size();\n\t\tfor (uint32_t i = 0; i < meshCount; i++) {\n\t\t\tfor (uint32_t j = 0; j < ctx->paramAtlas.chartGroupCount(i); j++) {\n\t\t\t\tconst internal::param::ChartGroup *chartGroup = ctx->paramAtlas.chartGroupAt(i, j);\n\t\t\t\tfor (uint32_t k = 0; k < chartGroup->chartCount(); k++) {\n\t\t\t\t\tconst internal::param::Chart *chart = chartGroup->chartAt(k);\n\t\t\t\t\ttJunctionCount += chart->tjunctionCount();\n\t\t\t\t\tif (chart->tjunctionCount() > 0)\n\t\t\t\t\t\tchartsWithTJunctionsCount++;\n\t\t\t\t\tif (chart->type() == ChartType::Planar)\n\t\t\t\t\t\tplanarChartsCount++;\n\t\t\t\t\telse if (chart->type() == ChartType::Ortho)\n\t\t\t\t\t\torthoChartsCount++;\n\t\t\t\t\telse if (chart->type() == ChartType::LSCM)\n\t\t\t\t\t\tlscmChartsCount++;\n\t\t\t\t\telse if (chart->type() == ChartType::Piecewise)\n\t\t\t\t\t\tpiecewiseChartsCount++;\n\t\t\t\t\tif (chart->generatorType() == internal::segment::ChartGeneratorType::OriginalUv)\n\t\t\t\t\t\toriginalUvChartsCount++;\n\t\t\t\t}\n\t\t\t\tchartCount += chartGroup->chartCount();\n\t\t\t}\n\t\t}\n\t\tif (tJunctionCount > 0)\n\t\t\tXA_PRINT(\"   %u t-junctions found in %u charts\\n\", tJunctionCount, chartsWithTJunctionsCount);\n\t\tXA_PRINT(\"   %u charts\\n\", chartCount);\n\t\tXA_PRINT(\"      %u planar, %u ortho, %u LSCM, %u piecewise\\n\", planarChartsCount, orthoChartsCount, lscmChartsCount, piecewiseChartsCount);\n\t\tif (originalUvChartsCount > 0)\n\t\t\tXA_PRINT(\"      %u with original UVs\\n\", originalUvChartsCount);\n\t\tuint32_t chartIndex = 0, invalidParamCount = 0;\n\t\tfor (uint32_t i = 0; i < meshCount; i++) {\n\t\t\tfor (uint32_t j = 0; j < ctx->paramAtlas.chartGroupCount(i); j++) {\n\t\t\t\tconst internal::param::ChartGroup *chartGroup = ctx->paramAtlas.chartGroupAt(i, j);\n\t\t\t\tfor (uint32_t k = 0; k < chartGroup->chartCount(); k++) {\n\t\t\t\t\tinternal::param::Chart *chart = chartGroup->chartAt(k);\n\t\t\t\t\tconst internal::param::Quality &quality = chart->quality();\n#if XA_DEBUG_EXPORT_OBJ_CHARTS_AFTER_PARAMETERIZATION\n\t\t\t\t\t{\n\t\t\t\t\t\tchar filename[256];\n\t\t\t\t\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_chart_%03u_after_parameterization.obj\", chartIndex);\n\t\t\t\t\t\tchart->unifiedMesh()->writeObjFile(filename);\n\t\t\t\t\t}\n#endif\n\t\t\t\t\tconst char *type = \"LSCM\";\n\t\t\t\t\tif (chart->type() == ChartType::Planar)\n\t\t\t\t\t\ttype = \"planar\";\n\t\t\t\t\telse if (chart->type() == ChartType::Ortho)\n\t\t\t\t\t\ttype = \"ortho\";\n\t\t\t\t\telse if (chart->type() == ChartType::Piecewise)\n\t\t\t\t\t\ttype = \"piecewise\";\n\t\t\t\t\tif (chart->isInvalid()) {\n\t\t\t\t\t\tif (quality.boundaryIntersection) {\n\t\t\t\t\t\t\tXA_PRINT_WARNING(\"   Chart %u (mesh %u, group %u, id %u) (%s): invalid parameterization, self-intersecting boundary.\\n\", chartIndex, i, j, k, type);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (quality.flippedTriangleCount > 0) {\n\t\t\t\t\t\t\tXA_PRINT_WARNING(\"   Chart %u  (mesh %u, group %u, id %u) (%s): invalid parameterization, %u / %u flipped triangles.\\n\", chartIndex, i, j, k, type, quality.flippedTriangleCount, quality.totalTriangleCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (quality.zeroAreaTriangleCount > 0) {\n\t\t\t\t\t\t\tXA_PRINT_WARNING(\"   Chart %u  (mesh %u, group %u, id %u) (%s): invalid parameterization, %u / %u zero area triangles.\\n\", chartIndex, i, j, k, type, quality.zeroAreaTriangleCount, quality.totalTriangleCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinvalidParamCount++;\n#if XA_DEBUG_EXPORT_OBJ_INVALID_PARAMETERIZATION\n\t\t\t\t\t\tchar filename[256];\n\t\t\t\t\t\tXA_SPRINTF(filename, sizeof(filename), \"debug_chart_%03u_invalid_parameterization.obj\", chartIndex);\n\t\t\t\t\t\tconst internal::Mesh *mesh = chart->unifiedMesh();\n\t\t\t\t\t\tFILE *file;\n\t\t\t\t\t\tXA_FOPEN(file, filename, \"w\");\n\t\t\t\t\t\tif (file) {\n\t\t\t\t\t\t\tmesh->writeObjVertices(file);\n\t\t\t\t\t\t\tfprintf(file, \"s off\\n\");\n\t\t\t\t\t\t\tfprintf(file, \"o object\\n\");\n\t\t\t\t\t\t\tfor (uint32_t f = 0; f < mesh->faceCount(); f++)\n\t\t\t\t\t\t\t\tmesh->writeObjFace(file, f);\n\t\t\t\t\t\t\tif (!chart->paramFlippedFaces().isEmpty()) {\n\t\t\t\t\t\t\t\tfprintf(file, \"o flipped_faces\\n\");\n\t\t\t\t\t\t\t\tfor (uint32_t f = 0; f < chart->paramFlippedFaces().size(); f++)\n\t\t\t\t\t\t\t\t\tmesh->writeObjFace(file, chart->paramFlippedFaces()[f]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmesh->writeObjBoundaryEges(file);\n\t\t\t\t\t\t\tfclose(file);\n\t\t\t\t\t\t}\n#endif\n\t\t\t\t\t}\n\t\t\t\t\tchartIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (invalidParamCount > 0)\n\t\t\tXA_PRINT_WARNING(\"   %u charts with invalid parameterizations\\n\", invalidParamCount);\n#if XA_PROFILE\n\t\tXA_PRINT(\"   Chart groups\\n\");\n\t\tuint32_t chartGroupCount = 0;\n\t\tfor (uint32_t i = 0; i < meshCount; i++) {\n#if 0\n\t\t\tXA_PRINT(\"      Mesh %u: %u chart groups\\n\", i, ctx->paramAtlas.chartGroupCount(i));\n#endif\n\t\t\tchartGroupCount += ctx->paramAtlas.chartGroupCount(i);\n\t\t}\n\t\tXA_PRINT(\"      %u total\\n\", chartGroupCount);\n#endif\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Compute charts total (real): \", computeChartsReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Compute charts total (thread): \", computeChartsThread)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Create face groups: \", createFaceGroups)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Extract invalid mesh geometry: \", extractInvalidMeshGeometry)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Chart group compute charts (real): \", chartGroupComputeChartsReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Chart group compute charts (thread): \", chartGroupComputeChartsThread)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"         Create chart group mesh: \", createChartGroupMesh)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Create colocals: \", createChartGroupMeshColocals)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Create boundaries: \", createChartGroupMeshBoundaries)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"         Build atlas: \", buildAtlas)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Init: \", buildAtlasInit)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Planar charts: \", planarCharts)\n\t\tif (options.useInputMeshUvs) {\n\t\t\tXA_PROFILE_PRINT_AND_RESET(\"            Original UV charts: \", originalUvCharts)\n\t\t}\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Clustered charts: \", clusteredCharts)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Place seeds: \", clusteredChartsPlaceSeeds)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"                  Boundary intersection: \", clusteredChartsPlaceSeedsBoundaryIntersection)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Relocate seeds: \", clusteredChartsRelocateSeeds)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Reset: \", clusteredChartsReset)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Grow: \", clusteredChartsGrow)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"                  Boundary intersection: \", clusteredChartsGrowBoundaryIntersection)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Merge: \", clusteredChartsMerge)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Fill holes: \", clusteredChartsFillHoles)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"         Copy chart faces: \", copyChartFaces)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Create chart mesh and parameterize (real): \", createChartMeshAndParameterizeReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"      Create chart mesh and parameterize (thread): \", createChartMeshAndParameterizeThread)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"         Create chart mesh: \", createChartMesh)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"         Parameterize charts: \", parameterizeCharts)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Orthogonal: \", parameterizeChartsOrthogonal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            LSCM: \", parameterizeChartsLSCM)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Recompute: \", parameterizeChartsRecompute)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"               Piecewise: \", parameterizeChartsPiecewise)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"                  Boundary intersection: \", parameterizeChartsPiecewiseBoundaryIntersection)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"            Evaluate quality: \", parameterizeChartsEvaluateQuality)\n#if XA_PROFILE_ALLOC\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\t\tXA_PRINT_MEM_USAGE\n\t} else {\n\t\tXA_PROFILE_START(computeChartsReal)\n\t\tif (!internal::segment::computeUvMeshCharts(ctx->taskScheduler, ctx->uvMeshes, ctx->progressFunc, ctx->progressUserData)) {\n\t\t\tXA_PRINT(\"   Cancelled by user\\n\");\n\t\t\treturn;\n\t\t}\n\t\tXA_PROFILE_END(computeChartsReal)\n\t\tctx->uvMeshChartsComputed = true;\n\t\t// Count charts.\n\t\tuint32_t chartCount = 0;\n\t\tconst uint32_t meshCount = ctx->uvMeshes.size();\n\t\tfor (uint32_t i = 0; i < meshCount; i++)\n\t\t\tchartCount += ctx->uvMeshes[i]->charts.size();\n\t\tXA_PRINT(\"   %u charts\\n\", chartCount);\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Total (real): \", computeChartsReal)\n\t\tXA_PROFILE_PRINT_AND_RESET(\"   Total (thread): \", computeChartsThread)\n\t}\n#if XA_PROFILE_ALLOC\n\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\tXA_PRINT_MEM_USAGE\n}\n\nvoid PackCharts(Atlas *atlas, PackOptions packOptions)\n{\n\t// Validate arguments and context state.\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"PackCharts: atlas is null.\\n\");\n\t\treturn;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tif (ctx->meshes.isEmpty() && ctx->uvMeshInstances.isEmpty()) {\n\t\tXA_PRINT_WARNING(\"PackCharts: No meshes. Call AddMesh or AddUvMesh first.\\n\");\n\t\treturn;\n\t}\n\tif (ctx->uvMeshInstances.isEmpty()) {\n\t\tif (!ctx->paramAtlas.chartsComputed()) {\n\t\t\tXA_PRINT_WARNING(\"PackCharts: ComputeCharts must be called first.\\n\");\n\t\t\treturn;\n\t\t}\n\t} else if (!ctx->uvMeshChartsComputed) {\n\t\tXA_PRINT_WARNING(\"PackCharts: ComputeCharts must be called first.\\n\");\n\t\treturn;\n\t}\n\tif (packOptions.texelsPerUnit < 0.0f) {\n\t\tXA_PRINT_WARNING(\"PackCharts: PackOptions::texelsPerUnit is negative.\\n\");\n\t\tpackOptions.texelsPerUnit = 0.0f;\n\t}\n\t// Cleanup atlas.\n\tDestroyOutputMeshes(ctx);\n\tif (atlas->utilization) {\n\t\tXA_FREE(atlas->utilization);\n\t\tatlas->utilization = nullptr;\n\t}\n\tif (atlas->image) {\n\t\tXA_FREE(atlas->image);\n\t\tatlas->image = nullptr;\n\t}\n\tatlas->meshCount = 0;\n\t// Pack charts.\n\tXA_PROFILE_START(packChartsAddCharts)\n\tinternal::pack::Atlas packAtlas;\n\tif (!ctx->uvMeshInstances.isEmpty()) {\n\t\tfor (uint32_t i = 0; i < ctx->uvMeshInstances.size(); i++)\n\t\t\tpackAtlas.addUvMeshCharts(ctx->uvMeshInstances[i]);\n\t}\n\telse\n\t\tpackAtlas.addCharts(ctx->taskScheduler, &ctx->paramAtlas);\n\tXA_PROFILE_END(packChartsAddCharts)\n\tXA_PROFILE_START(packCharts)\n\tif (!packAtlas.packCharts(packOptions, ctx->progressFunc, ctx->progressUserData))\n\t\treturn;\n\tXA_PROFILE_END(packCharts)\n\t// Populate atlas object with pack results.\n\tatlas->atlasCount = packAtlas.getNumAtlases();\n\tatlas->chartCount = packAtlas.getChartCount();\n\tatlas->width = packAtlas.getWidth();\n\tatlas->height = packAtlas.getHeight();\n\tatlas->texelsPerUnit = packAtlas.getTexelsPerUnit();\n\tif (atlas->atlasCount > 0) {\n\t\tatlas->utilization = XA_ALLOC_ARRAY(internal::MemTag::Default, float, atlas->atlasCount);\n\t\tfor (uint32_t i = 0; i < atlas->atlasCount; i++)\n\t\t\tatlas->utilization[i] = packAtlas.getUtilization(i);\n\t}\n\tif (packOptions.createImage) {\n\t\tatlas->image = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, atlas->atlasCount * atlas->width * atlas->height);\n\t\tfor (uint32_t i = 0; i < atlas->atlasCount; i++)\n\t\t\tpackAtlas.getImages()[i]->copyTo(&atlas->image[atlas->width * atlas->height * i], atlas->width, atlas->height, packOptions.padding);\n\t}\n\tXA_PROFILE_PRINT_AND_RESET(\"   Total: \", packCharts)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Add charts (real): \", packChartsAddCharts)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Add charts (thread): \", packChartsAddChartsThread)\n\tXA_PROFILE_PRINT_AND_RESET(\"         Restore texcoords: \", packChartsAddChartsRestoreTexcoords)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Rasterize: \", packChartsRasterize)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Dilate (padding): \", packChartsDilate)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Find location: \", packChartsFindLocation)\n\tXA_PROFILE_PRINT_AND_RESET(\"      Blit: \", packChartsBlit)\n#if XA_PROFILE_ALLOC\n\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\tXA_PRINT_MEM_USAGE\n\tXA_PRINT(\"Building output meshes\\n\");\n\tXA_PROFILE_START(buildOutputMeshes)\n\tint progress = 0;\n\tif (ctx->progressFunc) {\n\t\tif (!ctx->progressFunc(ProgressCategory::BuildOutputMeshes, 0, ctx->progressUserData))\n\t\t\treturn;\n\t}\n\tif (ctx->uvMeshInstances.isEmpty())\n\t\tatlas->meshCount = ctx->meshes.size();\n\telse\n\t\tatlas->meshCount = ctx->uvMeshInstances.size();\n\tatlas->meshes = XA_ALLOC_ARRAY(internal::MemTag::Default, Mesh, atlas->meshCount);\n\tmemset(atlas->meshes, 0, sizeof(Mesh) * atlas->meshCount);\n\tif (ctx->uvMeshInstances.isEmpty()) {\n\t\tuint32_t chartIndex = 0;\n\t\tfor (uint32_t i = 0; i < atlas->meshCount; i++) {\n\t\t\tMesh &outputMesh = atlas->meshes[i];\n\t\t\tMeshPolygonMapping *meshPolygonMapping = ctx->meshPolygonMappings[i];\n\t\t\t// One polygon can have many triangles. Don't want to process the same polygon more than once when counting indices, building chart faces etc.\n\t\t\tinternal::BitArray polygonTouched;\n\t\t\tif (meshPolygonMapping) {\n\t\t\t\tpolygonTouched.resize(meshPolygonMapping->faceVertexCount.size());\n\t\t\t\tpolygonTouched.zeroOutMemory();\n\t\t\t}\n\t\t\t// Count and alloc arrays.\n\t\t\tconst internal::InvalidMeshGeometry &invalid = ctx->paramAtlas.invalidMeshGeometry(i);\n\t\t\toutputMesh.vertexCount += invalid.vertices().length;\n\t\t\toutputMesh.indexCount += invalid.faces().length * 3;\n\t\t\tfor (uint32_t cg = 0; cg < ctx->paramAtlas.chartGroupCount(i); cg++) {\n\t\t\t\tconst internal::param::ChartGroup *chartGroup = ctx->paramAtlas.chartGroupAt(i, cg);\n\t\t\t\tfor (uint32_t c = 0; c < chartGroup->chartCount(); c++) {\n\t\t\t\t\tconst internal::param::Chart *chart = chartGroup->chartAt(c);\n\t\t\t\t\toutputMesh.vertexCount += chart->originalVertexCount();\n\t\t\t\t\tconst uint32_t faceCount = chart->unifiedMesh()->faceCount();\n\t\t\t\t\tif (meshPolygonMapping) {\n\t\t\t\t\t\t// Map triangles back to polygons and count the polygon vertices.\n\t\t\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\t\t\tconst uint32_t polygon = meshPolygonMapping->triangleToPolygonMap[chart->mapFaceToSourceFace(f)];\n\t\t\t\t\t\t\tif (!polygonTouched.get(polygon)) {\n\t\t\t\t\t\t\t\tpolygonTouched.set(polygon);\n\t\t\t\t\t\t\t\toutputMesh.indexCount += meshPolygonMapping->faceVertexCount[polygon];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutputMesh.indexCount += faceCount * 3;\n\t\t\t\t\t}\n\t\t\t\t\toutputMesh.chartCount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\toutputMesh.vertexArray = XA_ALLOC_ARRAY(internal::MemTag::Default, Vertex, outputMesh.vertexCount);\n\t\t\toutputMesh.indexArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputMesh.indexCount);\n\t\t\toutputMesh.chartArray = XA_ALLOC_ARRAY(internal::MemTag::Default, Chart, outputMesh.chartCount);\n\t\t\tXA_PRINT(\"   Mesh %u: %u vertices, %u triangles, %u charts\\n\", i, outputMesh.vertexCount, outputMesh.indexCount / 3, outputMesh.chartCount);\n\t\t\t// Copy mesh data.\n\t\t\tuint32_t firstVertex = 0;\n\t\t\t{\n\t\t\t\tconst internal::InvalidMeshGeometry &mesh = ctx->paramAtlas.invalidMeshGeometry(i);\n\t\t\t\tinternal::ConstArrayView<uint32_t> faces = mesh.faces();\n\t\t\t\tinternal::ConstArrayView<uint32_t> indices = mesh.indices();\n\t\t\t\tinternal::ConstArrayView<uint32_t> vertices = mesh.vertices();\n\t\t\t\t// Vertices.\n\t\t\t\tfor (uint32_t v = 0; v < vertices.length; v++) {\n\t\t\t\t\tVertex &vertex = outputMesh.vertexArray[v];\n\t\t\t\t\tvertex.atlasIndex = -1;\n\t\t\t\t\tvertex.chartIndex = -1;\n\t\t\t\t\tvertex.uv[0] = vertex.uv[1] = 0.0f;\n\t\t\t\t\tvertex.xref = vertices[v];\n\t\t\t\t}\n\t\t\t\t// Indices.\n\t\t\t\tfor (uint32_t f = 0; f < faces.length; f++) {\n\t\t\t\t\tconst uint32_t indexOffset = faces[f] * 3;\n\t\t\t\t\tfor (uint32_t j = 0; j < 3; j++)\n\t\t\t\t\t\toutputMesh.indexArray[indexOffset + j] = indices[f * 3 + j];\n\t\t\t\t}\n\t\t\t\tfirstVertex = vertices.length;\n\t\t\t}\n\t\t\tuint32_t meshChartIndex = 0;\n\t\t\tfor (uint32_t cg = 0; cg < ctx->paramAtlas.chartGroupCount(i); cg++) {\n\t\t\t\tconst internal::param::ChartGroup *chartGroup = ctx->paramAtlas.chartGroupAt(i, cg);\n\t\t\t\tfor (uint32_t c = 0; c < chartGroup->chartCount(); c++) {\n\t\t\t\t\tconst internal::param::Chart *chart = chartGroup->chartAt(c);\n\t\t\t\t\tconst internal::Mesh *unifiedMesh = chart->unifiedMesh();\n\t\t\t\t\tconst uint32_t faceCount = unifiedMesh->faceCount();\n#if XA_CHECK_PARAM_WINDING\n\t\t\t\t\tuint32_t flippedCount = 0;\n\t\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\t\tconst float area = mesh->computeFaceParametricArea(f);\n\t\t\t\t\t\tif (area < 0.0f)\n\t\t\t\t\t\t\tflippedCount++;\n\t\t\t\t\t}\n\t\t\t\t\tconst char *type = \"LSCM\";\n\t\t\t\t\tif (chart->type() == ChartType::Planar)\n\t\t\t\t\t\ttype = \"planar\";\n\t\t\t\t\telse if (chart->type() == ChartType::Ortho)\n\t\t\t\t\t\ttype = \"ortho\";\n\t\t\t\t\telse if (chart->type() == ChartType::Piecewise)\n\t\t\t\t\t\ttype = \"piecewise\";\n\t\t\t\t\tif (flippedCount > 0) {\n\t\t\t\t\t\tif (flippedCount == faceCount) {\n\t\t\t\t\t\t\tXA_PRINT_WARNING(\"chart %u (%s): all face flipped\\n\", chartIndex, type);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tXA_PRINT_WARNING(\"chart %u (%s): %u / %u faces flipped\\n\", chartIndex, type, flippedCount, faceCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n#endif\n\t\t\t\t\t// Vertices.\n\t\t\t\t\tfor (uint32_t v = 0; v < chart->originalVertexCount(); v++) {\n\t\t\t\t\t\tVertex &vertex = outputMesh.vertexArray[firstVertex + v];\n\t\t\t\t\t\tvertex.atlasIndex = packAtlas.getChart(chartIndex)->atlasIndex;\n\t\t\t\t\t\tXA_DEBUG_ASSERT(vertex.atlasIndex >= 0);\n\t\t\t\t\t\tvertex.chartIndex = (int32_t)chartIndex;\n\t\t\t\t\t\tconst internal::Vector2 &uv = unifiedMesh->texcoord(chart->originalVertexToUnifiedVertex(v));\n\t\t\t\t\t\tvertex.uv[0] = internal::max(0.0f, uv.x);\n\t\t\t\t\t\tvertex.uv[1] = internal::max(0.0f, uv.y);\n\t\t\t\t\t\tvertex.xref = chart->mapChartVertexToSourceVertex(v);\n\t\t\t\t\t}\n\t\t\t\t\t// Indices.\n\t\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\t\tconst uint32_t indexOffset = chart->mapFaceToSourceFace(f) * 3;\n\t\t\t\t\t\tfor (uint32_t j = 0; j < 3; j++) {\n\t\t\t\t\t\t\tuint32_t outIndex = indexOffset + j;\n\t\t\t\t\t\t\tif (meshPolygonMapping)\n\t\t\t\t\t\t\t\toutIndex = meshPolygonMapping->triangleToPolygonIndicesMap[outIndex];\n\t\t\t\t\t\t\toutputMesh.indexArray[outIndex] = firstVertex + chart->originalVertices()[f * 3 + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Charts.\n\t\t\t\t\tChart *outputChart = &outputMesh.chartArray[meshChartIndex];\n\t\t\t\t\tconst int32_t atlasIndex = packAtlas.getChart(chartIndex)->atlasIndex;\n\t\t\t\t\tXA_DEBUG_ASSERT(atlasIndex >= 0);\n\t\t\t\t\toutputChart->atlasIndex = (uint32_t)atlasIndex;\n\t\t\t\t\toutputChart->type = chart->isInvalid() ? ChartType::Invalid : chart->type();\n\t\t\t\t\tif (meshPolygonMapping) {\n\t\t\t\t\t\t// Count polygons.\n\t\t\t\t\t\tpolygonTouched.zeroOutMemory();\n\t\t\t\t\t\toutputChart->faceCount = 0;\n\t\t\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\t\t\tconst uint32_t polygon = meshPolygonMapping->triangleToPolygonMap[chart->mapFaceToSourceFace(f)];\n\t\t\t\t\t\t\tif (!polygonTouched.get(polygon)) {\n\t\t\t\t\t\t\t\tpolygonTouched.set(polygon);\n\t\t\t\t\t\t\t\toutputChart->faceCount++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Write polygons.\n\t\t\t\t\t\toutputChart->faceArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputChart->faceCount);\n\t\t\t\t\t\tpolygonTouched.zeroOutMemory();\n\t\t\t\t\t\tuint32_t of = 0;\n\t\t\t\t\t\tfor (uint32_t f = 0; f < faceCount; f++) {\n\t\t\t\t\t\t\tconst uint32_t polygon = meshPolygonMapping->triangleToPolygonMap[chart->mapFaceToSourceFace(f)];\n\t\t\t\t\t\t\tif (!polygonTouched.get(polygon)) {\n\t\t\t\t\t\t\t\tpolygonTouched.set(polygon);\n\t\t\t\t\t\t\t\toutputChart->faceArray[of++] = polygon;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutputChart->faceCount = faceCount;\n\t\t\t\t\t\toutputChart->faceArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputChart->faceCount);\n\t\t\t\t\t\tfor (uint32_t f = 0; f < outputChart->faceCount; f++)\n\t\t\t\t\t\t\toutputChart->faceArray[f] = chart->mapFaceToSourceFace(f);\n\t\t\t\t\t}\n\t\t\t\t\toutputChart->material = 0;\n\t\t\t\t\tmeshChartIndex++;\n\t\t\t\t\tchartIndex++;\n\t\t\t\t\tfirstVertex += chart->originalVertexCount();\n\t\t\t\t}\n\t\t\t}\n\t\t\tXA_DEBUG_ASSERT(outputMesh.vertexCount == firstVertex);\n\t\t\tXA_DEBUG_ASSERT(outputMesh.chartCount == meshChartIndex);\n\t\t\tif (ctx->progressFunc) {\n\t\t\t\tconst int newProgress = int((i + 1) / (float)atlas->meshCount * 100.0f);\n\t\t\t\tif (newProgress != progress) {\n\t\t\t\t\tprogress = newProgress;\n\t\t\t\t\tif (!ctx->progressFunc(ProgressCategory::BuildOutputMeshes, progress, ctx->progressUserData))\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tuint32_t chartIndex = 0;\n\t\tfor (uint32_t m = 0; m < ctx->uvMeshInstances.size(); m++) {\n\t\t\tMesh &outputMesh = atlas->meshes[m];\n\t\t\tconst internal::UvMeshInstance *mesh = ctx->uvMeshInstances[m];\n\t\t\t// Alloc arrays.\n\t\t\toutputMesh.vertexCount = mesh->texcoords.size();\n\t\t\toutputMesh.indexCount = mesh->mesh->indices.size();\n\t\t\toutputMesh.chartCount = mesh->mesh->charts.size();\n\t\t\toutputMesh.vertexArray = XA_ALLOC_ARRAY(internal::MemTag::Default, Vertex, outputMesh.vertexCount);\n\t\t\toutputMesh.indexArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputMesh.indexCount);\n\t\t\toutputMesh.chartArray = XA_ALLOC_ARRAY(internal::MemTag::Default, Chart, outputMesh.chartCount);\n\t\t\tXA_PRINT(\"   UV mesh %u: %u vertices, %u triangles, %u charts\\n\", m, outputMesh.vertexCount, outputMesh.indexCount / 3, outputMesh.chartCount);\n\t\t\t// Copy mesh data.\n\t\t\t// Vertices.\n\t\t\tfor (uint32_t v = 0; v < mesh->texcoords.size(); v++) {\n\t\t\t\tVertex &vertex = outputMesh.vertexArray[v];\n\t\t\t\tvertex.uv[0] = mesh->texcoords[v].x;\n\t\t\t\tvertex.uv[1] = mesh->texcoords[v].y;\n\t\t\t\tvertex.xref = v;\n\t\t\t\tconst uint32_t meshChartIndex = mesh->mesh->vertexToChartMap[v];\n\t\t\t\tif (meshChartIndex == UINT32_MAX) {\n\t\t\t\t\t// Vertex doesn't exist in any chart.\n\t\t\t\t\tvertex.atlasIndex = -1;\n\t\t\t\t\tvertex.chartIndex = -1;\n\t\t\t\t} else {\n\t\t\t\t\tconst internal::pack::Chart *chart = packAtlas.getChart(chartIndex + meshChartIndex);\n\t\t\t\t\tvertex.atlasIndex = chart->atlasIndex;\n\t\t\t\t\tvertex.chartIndex = (int32_t)chartIndex + meshChartIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Indices.\n\t\t\tmemcpy(outputMesh.indexArray, mesh->mesh->indices.data(), mesh->mesh->indices.size() * sizeof(uint32_t));\n\t\t\t// Charts.\n\t\t\tfor (uint32_t c = 0; c < mesh->mesh->charts.size(); c++) {\n\t\t\t\tChart *outputChart = &outputMesh.chartArray[c];\n\t\t\t\tconst internal::pack::Chart *chart = packAtlas.getChart(chartIndex);\n\t\t\t\tXA_DEBUG_ASSERT(chart->atlasIndex >= 0);\n\t\t\t\toutputChart->atlasIndex = (uint32_t)chart->atlasIndex;\n\t\t\t\toutputChart->faceCount = chart->faces.size();\n\t\t\t\toutputChart->faceArray = XA_ALLOC_ARRAY(internal::MemTag::Default, uint32_t, outputChart->faceCount);\n\t\t\t\toutputChart->material = chart->material;\n\t\t\t\tfor (uint32_t f = 0; f < outputChart->faceCount; f++)\n\t\t\t\t\toutputChart->faceArray[f] = chart->faces[f];\n\t\t\t\tchartIndex++;\n\t\t\t}\n\t\t\tif (ctx->progressFunc) {\n\t\t\t\tconst int newProgress = int((m + 1) / (float)atlas->meshCount * 100.0f);\n\t\t\t\tif (newProgress != progress) {\n\t\t\t\t\tprogress = newProgress;\n\t\t\t\t\tif (!ctx->progressFunc(ProgressCategory::BuildOutputMeshes, progress, ctx->progressUserData))\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (ctx->progressFunc && progress != 100)\n\t\tctx->progressFunc(ProgressCategory::BuildOutputMeshes, 100, ctx->progressUserData);\n\tXA_PROFILE_END(buildOutputMeshes)\n\tXA_PROFILE_PRINT_AND_RESET(\"   Total: \", buildOutputMeshes)\n#if XA_PROFILE_ALLOC\n\tXA_PROFILE_PRINT_AND_RESET(\"   Alloc: \", alloc)\n#endif\n\tXA_PRINT_MEM_USAGE\n}\n\nvoid Generate(Atlas *atlas, ChartOptions chartOptions, PackOptions packOptions)\n{\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"Generate: atlas is null.\\n\");\n\t\treturn;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tif (ctx->meshes.isEmpty() && ctx->uvMeshInstances.isEmpty()) {\n\t\tXA_PRINT_WARNING(\"Generate: No meshes. Call AddMesh or AddUvMesh first.\\n\");\n\t\treturn;\n\t}\n\tComputeCharts(atlas, chartOptions);\n\tPackCharts(atlas, packOptions);\n}\n\nvoid SetProgressCallback(Atlas *atlas, ProgressFunc progressFunc, void *progressUserData)\n{\n\tif (!atlas) {\n\t\tXA_PRINT_WARNING(\"SetProgressCallback: atlas is null.\\n\");\n\t\treturn;\n\t}\n\tContext *ctx = (Context *)atlas;\n\tctx->progressFunc = progressFunc;\n\tctx->progressUserData = progressUserData;\n}\n\nvoid SetAlloc(ReallocFunc reallocFunc, FreeFunc freeFunc)\n{\n\tinternal::s_realloc = reallocFunc;\n\tinternal::s_free = freeFunc;\n}\n\nvoid SetPrint(PrintFunc print, bool verbose)\n{\n\tinternal::s_print = print;\n\tinternal::s_printVerbose = verbose;\n}\n\nconst char *StringForEnum(AddMeshError error)\n{\n\tif (error == AddMeshError::Error)\n\t\treturn \"Unspecified error\";\n\tif (error == AddMeshError::IndexOutOfRange)\n\t\treturn \"Index out of range\";\n\tif (error == AddMeshError::InvalidFaceVertexCount)\n\t\treturn \"Invalid face vertex count\";\n\tif (error == AddMeshError::InvalidIndexCount)\n\t\treturn \"Invalid index count\";\n\treturn \"Success\";\n}\n\nconst char *StringForEnum(ProgressCategory category)\n{\n\tif (category == ProgressCategory::AddMesh)\n\t\treturn \"Adding mesh(es)\";\n\tif (category == ProgressCategory::ComputeCharts)\n\t\treturn \"Computing charts\";\n\tif (category == ProgressCategory::PackCharts)\n\t\treturn \"Packing charts\";\n\tif (category == ProgressCategory::BuildOutputMeshes)\n\t\treturn \"Building output meshes\";\n\treturn \"\";\n}\n\n} // namespace xatlas\n\n#if XATLAS_C_API\nstatic_assert(sizeof(xatlas::Chart) == sizeof(xatlasChart), \"xatlasChart size mismatch\");\nstatic_assert(sizeof(xatlas::Vertex) == sizeof(xatlasVertex), \"xatlasVertex size mismatch\");\nstatic_assert(sizeof(xatlas::Mesh) == sizeof(xatlasMesh), \"xatlasMesh size mismatch\");\nstatic_assert(sizeof(xatlas::Atlas) == sizeof(xatlasAtlas), \"xatlasAtlas size mismatch\");\nstatic_assert(sizeof(xatlas::MeshDecl) == sizeof(xatlasMeshDecl), \"xatlasMeshDecl size mismatch\");\nstatic_assert(sizeof(xatlas::UvMeshDecl) == sizeof(xatlasUvMeshDecl), \"xatlasUvMeshDecl size mismatch\");\nstatic_assert(sizeof(xatlas::ChartOptions) == sizeof(xatlasChartOptions), \"xatlasChartOptions size mismatch\");\nstatic_assert(sizeof(xatlas::PackOptions) == sizeof(xatlasPackOptions), \"xatlasPackOptions size mismatch\");\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nxatlasAtlas *xatlasCreate()\n{\n\treturn (xatlasAtlas *)xatlas::Create();\n}\n\nvoid xatlasDestroy(xatlasAtlas *atlas)\n{\n\txatlas::Destroy((xatlas::Atlas *)atlas);\n}\n\nxatlasAddMeshError xatlasAddMesh(xatlasAtlas *atlas, const xatlasMeshDecl *meshDecl, uint32_t meshCountHint)\n{\n\treturn (xatlasAddMeshError)xatlas::AddMesh((xatlas::Atlas *)atlas, *(const xatlas::MeshDecl *)meshDecl, meshCountHint);\n}\n\nvoid xatlasAddMeshJoin(xatlasAtlas *atlas)\n{\n\txatlas::AddMeshJoin((xatlas::Atlas *)atlas);\n}\n\nxatlasAddMeshError xatlasAddUvMesh(xatlasAtlas *atlas, const xatlasUvMeshDecl *decl)\n{\n\treturn (xatlasAddMeshError)xatlas::AddUvMesh((xatlas::Atlas *)atlas, *(const xatlas::UvMeshDecl *)decl);\n}\n\nvoid xatlasComputeCharts(xatlasAtlas *atlas, const xatlasChartOptions *chartOptions)\n{\n\txatlas::ComputeCharts((xatlas::Atlas *)atlas, chartOptions ? *(xatlas::ChartOptions *)chartOptions : xatlas::ChartOptions());\n}\n\nvoid xatlasPackCharts(xatlasAtlas *atlas, const xatlasPackOptions *packOptions)\n{\n\txatlas::PackCharts((xatlas::Atlas *)atlas, packOptions ? *(xatlas::PackOptions *)packOptions : xatlas::PackOptions());\n}\n\nvoid xatlasGenerate(xatlasAtlas *atlas, const xatlasChartOptions *chartOptions, const xatlasPackOptions *packOptions)\n{\n\txatlas::Generate((xatlas::Atlas *)atlas, chartOptions ? *(xatlas::ChartOptions *)chartOptions : xatlas::ChartOptions(), packOptions ? *(xatlas::PackOptions *)packOptions : xatlas::PackOptions());\n}\n\nvoid xatlasSetProgressCallback(xatlasAtlas *atlas, xatlasProgressFunc progressFunc, void *progressUserData)\n{\n\txatlas::ProgressFunc pf;\n\t*(void **)&pf = (void *)progressFunc;\n\txatlas::SetProgressCallback((xatlas::Atlas *)atlas, pf, progressUserData);\n}\n\nvoid xatlasSetAlloc(xatlasReallocFunc reallocFunc, xatlasFreeFunc freeFunc)\n{\n\txatlas::SetAlloc((xatlas::ReallocFunc)reallocFunc, (xatlas::FreeFunc)freeFunc);\n}\n\nvoid xatlasSetPrint(xatlasPrintFunc print, bool verbose)\n{\n\txatlas::SetPrint((xatlas::PrintFunc)print, verbose);\n}\n\nconst char *xatlasAddMeshErrorString(xatlasAddMeshError error)\n{\n\treturn xatlas::StringForEnum((xatlas::AddMeshError)error);\n}\n\nconst char *xatlasProgressCategoryString(xatlasProgressCategory category)\n{\n\treturn xatlas::StringForEnum((xatlas::ProgressCategory)category);\n}\n\nvoid xatlasMeshDeclInit(xatlasMeshDecl *meshDecl)\n{\n\txatlas::MeshDecl init;\n\tmemcpy(meshDecl, &init, sizeof(init));\n}\n\nvoid xatlasUvMeshDeclInit(xatlasUvMeshDecl *uvMeshDecl)\n{\n\txatlas::UvMeshDecl init;\n\tmemcpy(uvMeshDecl, &init, sizeof(init));\n}\n\nvoid xatlasChartOptionsInit(xatlasChartOptions *chartOptions)\n{\n\txatlas::ChartOptions init;\n\tmemcpy(chartOptions, &init, sizeof(init));\n}\n\nvoid xatlasPackOptionsInit(xatlasPackOptions *packOptions)\n{\n\txatlas::PackOptions init;\n\tmemcpy(packOptions, &init, sizeof(init));\n}\n\n#ifdef __cplusplus\n} // extern \"C\"\n#endif\n#endif // XATLAS_C_API\n"
  },
  {
    "path": "libraries/xatlas.h",
    "content": "/*\nMIT License\n\nCopyright (c) 2018-2020 Jonathan Young\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n/*\nthekla_atlas\nMIT License\nhttps://github.com/Thekla/thekla_atlas\nCopyright (c) 2013 Thekla, Inc\nCopyright NVIDIA Corporation 2006 -- Ignacio Castano <icastano@nvidia.com>\n*/\n#pragma once\n#ifndef XATLAS_H\n#define XATLAS_H\n#include <stddef.h>\n#include <stdint.h>\n\nnamespace xatlas {\n\nenum class ChartType\n{\n\tPlanar,\n\tOrtho,\n\tLSCM,\n\tPiecewise,\n\tInvalid\n};\n\n// A group of connected faces, belonging to a single atlas.\nstruct Chart\n{\n\tuint32_t *faceArray;\n\tuint32_t atlasIndex; // Sub-atlas index.\n\tuint32_t faceCount;\n\tChartType type;\n\tuint32_t material;\n};\n\n// Output vertex.\nstruct Vertex\n{\n\tint32_t atlasIndex; // Sub-atlas index. -1 if the vertex doesn't exist in any atlas.\n\tint32_t chartIndex; // -1 if the vertex doesn't exist in any chart.\n\tfloat uv[2]; // Not normalized - values are in Atlas width and height range.\n\tuint32_t xref; // Index of input vertex from which this output vertex originated.\n};\n\n// Output mesh.\nstruct Mesh\n{\n\tChart *chartArray;\n\tuint32_t *indexArray;\n\tVertex *vertexArray;\n\tuint32_t chartCount;\n\tuint32_t indexCount;\n\tuint32_t vertexCount;\n};\n\nstatic const uint32_t kImageChartIndexMask = 0x1FFFFFFF;\nstatic const uint32_t kImageHasChartIndexBit = 0x80000000;\nstatic const uint32_t kImageIsBilinearBit = 0x40000000;\nstatic const uint32_t kImageIsPaddingBit = 0x20000000;\n\n// Empty on creation. Populated after charts are packed.\nstruct Atlas\n{\n\tuint32_t *image;\n\tMesh *meshes; // The output meshes, corresponding to each AddMesh call.\n\tfloat *utilization; // Normalized atlas texel utilization array. E.g. a value of 0.8 means 20% empty space. atlasCount in length.\n\tuint32_t width; // Atlas width in texels.\n\tuint32_t height; // Atlas height in texels.\n\tuint32_t atlasCount; // Number of sub-atlases. Equal to 0 unless PackOptions resolution is changed from default (0).\n\tuint32_t chartCount; // Total number of charts in all meshes.\n\tuint32_t meshCount; // Number of output meshes. Equal to the number of times AddMesh was called.\n\tfloat texelsPerUnit; // Equal to PackOptions texelsPerUnit if texelsPerUnit > 0, otherwise an estimated value to match PackOptions resolution.\n};\n\n// Create an empty atlas.\nAtlas *Create();\n\nvoid Destroy(Atlas *atlas);\n\nenum class IndexFormat\n{\n\tUInt16,\n\tUInt32\n};\n\n// Input mesh declaration.\nstruct MeshDecl\n{\n\tconst void *vertexPositionData = nullptr;\n\tconst void *vertexNormalData = nullptr; // optional\n\tconst void *vertexUvData = nullptr; // optional. The input UVs are provided as a hint to the chart generator.\n\tconst void *indexData = nullptr; // optional\n\n\t// Optional. Must be faceCount in length.\n\t// Don't atlas faces set to true. Ignored faces still exist in the output meshes, Vertex uv is set to (0, 0) and Vertex atlasIndex to -1.\n\tconst bool *faceIgnoreData = nullptr;\n\n\t// Optional. Must be faceCount in length.\n\t// Only faces with the same material will be assigned to the same chart.\n\tconst uint32_t *faceMaterialData = nullptr;\n\n\t// Optional. Must be faceCount in length.\n\t// Polygon / n-gon support. Faces are assumed to be triangles if this is null.\n\tconst uint8_t *faceVertexCount = nullptr;\n\n\tuint32_t vertexCount = 0;\n\tuint32_t vertexPositionStride = 0;\n\tuint32_t vertexNormalStride = 0; // optional\n\tuint32_t vertexUvStride = 0; // optional\n\tuint32_t indexCount = 0;\n\tint32_t indexOffset = 0; // optional. Add this offset to all indices.\n\tuint32_t faceCount = 0; // Optional if faceVertexCount is null. Otherwise assumed to be indexCount / 3.\n\tIndexFormat indexFormat = IndexFormat::UInt16;\n\n\t// Vertex positions within epsilon distance of each other are considered colocal.\n\tfloat epsilon = 1.192092896e-07F;\n};\n\nenum class AddMeshError\n{\n\tSuccess, // No error.\n\tError, // Unspecified error.\n\tIndexOutOfRange, // An index is >= MeshDecl vertexCount.\n\tInvalidFaceVertexCount, // Must be >= 3.\n\tInvalidIndexCount // Not evenly divisible by 3 - expecting triangles.\n};\n\n// Add a mesh to the atlas. MeshDecl data is copied, so it can be freed after AddMesh returns.\nAddMeshError AddMesh(Atlas *atlas, const MeshDecl &meshDecl, uint32_t meshCountHint = 0);\n\n// Wait for AddMesh async processing to finish. ComputeCharts / Generate call this internally.\nvoid AddMeshJoin(Atlas *atlas);\n\nstruct UvMeshDecl\n{\n\tconst void *vertexUvData = nullptr;\n\tconst void *indexData = nullptr; // optional\n\tconst uint32_t *faceMaterialData = nullptr; // Optional. Overlapping UVs should be assigned a different material. Must be indexCount / 3 in length.\n\tuint32_t vertexCount = 0;\n\tuint32_t vertexStride = 0;\n\tuint32_t indexCount = 0;\n\tint32_t indexOffset = 0; // optional. Add this offset to all indices.\n\tIndexFormat indexFormat = IndexFormat::UInt16;\n};\n\nAddMeshError AddUvMesh(Atlas *atlas, const UvMeshDecl &decl);\n\n// Custom parameterization function. texcoords initial values are an orthogonal parameterization.\ntypedef void (*ParameterizeFunc)(const float *positions, float *texcoords, uint32_t vertexCount, const uint32_t *indices, uint32_t indexCount);\n\nstruct ChartOptions\n{\n\tParameterizeFunc paramFunc = nullptr;\n\n\tfloat maxChartArea = 0.0f; // Don't grow charts to be larger than this. 0 means no limit.\n\tfloat maxBoundaryLength = 0.0f; // Don't grow charts to have a longer boundary than this. 0 means no limit.\n\n\t// Weights determine chart growth. Higher weights mean higher cost for that metric.\n\tfloat normalDeviationWeight = 2.0f; // Angle between face and average chart normal.\n\tfloat roundnessWeight = 0.01f;\n\tfloat straightnessWeight = 6.0f;\n\tfloat normalSeamWeight = 4.0f; // If > 1000, normal seams are fully respected.\n\tfloat textureSeamWeight = 0.5f;\n\n\tfloat maxCost = 2.0f; // If total of all metrics * weights > maxCost, don't grow chart. Lower values result in more charts.\n\tuint32_t maxIterations = 1; // Number of iterations of the chart growing and seeding phases. Higher values result in better charts.\n\n\tbool useInputMeshUvs = false; // Use MeshDecl::vertexUvData for charts.\n\tbool fixWinding = false; // Enforce consistent texture coordinate winding.\n};\n\n// Call after all AddMesh calls. Can be called multiple times to recompute charts with different options.\nvoid ComputeCharts(Atlas *atlas, ChartOptions options = ChartOptions());\n\nstruct PackOptions\n{\n\t// Charts larger than this will be scaled down. 0 means no limit.\n\tuint32_t maxChartSize = 0;\n\n\t// Number of pixels to pad charts with.\n\tuint32_t padding = 0;\n\n\t// Unit to texel scale. e.g. a 1x1 quad with texelsPerUnit of 32 will take up approximately 32x32 texels in the atlas.\n\t// If 0, an estimated value will be calculated to approximately match the given resolution.\n\t// If resolution is also 0, the estimated value will approximately match a 1024x1024 atlas.\n\tfloat texelsPerUnit = 0.0f;\n\n\t// If 0, generate a single atlas with texelsPerUnit determining the final resolution.\n\t// If not 0, and texelsPerUnit is not 0, generate one or more atlases with that exact resolution.\n\t// If not 0, and texelsPerUnit is 0, texelsPerUnit is estimated to approximately match the resolution.\n\tuint32_t resolution = 0;\n\n\t// Leave space around charts for texels that would be sampled by bilinear filtering.\n\tbool bilinear = true;\n\n\t// Align charts to 4x4 blocks. Also improves packing speed, since there are fewer possible chart locations to consider.\n\tbool blockAlign = false;\n\n\t// Slower, but gives the best result. If false, use random chart placement.\n\tbool bruteForce = false;\n\n\t// Create Atlas::image\n\tbool createImage = false;\n\n\t// Rotate charts to the axis of their convex hull.\n\tbool rotateChartsToAxis = true;\n\n\t// Rotate charts to improve packing.\n\tbool rotateCharts = true;\n};\n\n// Call after ComputeCharts. Can be called multiple times to re-pack charts with different options.\nvoid PackCharts(Atlas *atlas, PackOptions packOptions = PackOptions());\n\n// Equivalent to calling ComputeCharts and PackCharts in sequence. Can be called multiple times to regenerate with different options.\nvoid Generate(Atlas *atlas, ChartOptions chartOptions = ChartOptions(), PackOptions packOptions = PackOptions());\n\n// Progress tracking.\nenum class ProgressCategory\n{\n\tAddMesh,\n\tComputeCharts,\n\tPackCharts,\n\tBuildOutputMeshes\n};\n\n// May be called from any thread. Return false to cancel.\ntypedef bool (*ProgressFunc)(ProgressCategory category, int progress, void *userData);\n\nvoid SetProgressCallback(Atlas *atlas, ProgressFunc progressFunc = nullptr, void *progressUserData = nullptr);\n\n// Custom memory allocation.\ntypedef void *(*ReallocFunc)(void *, size_t);\ntypedef void (*FreeFunc)(void *);\nvoid SetAlloc(ReallocFunc reallocFunc, FreeFunc freeFunc = nullptr);\n\n// Custom print function.\ntypedef int (*PrintFunc)(const char *, ...);\nvoid SetPrint(PrintFunc print, bool verbose);\n\n// Helper functions for error messages.\nconst char *StringForEnum(AddMeshError error);\nconst char *StringForEnum(ProgressCategory category);\n\n} // namespace xatlas\n\n#endif // XATLAS_H\n"
  },
  {
    "path": "maketool.ini",
    "content": "; Configuration for the Tramway SDK makefile generator.\n\n[Make]\n\n; Here are the commands that will be generated into the Makefile.\n; If you're using gcc or mingw and you can run these commands from the terminal,\n; then you can leave them as they are. Otherwise you should set these to the\n; path of the executable plus its name. Also you should set it if you have\n; multiple versions of these programs, since you need to use a compiler that\n; supports compiling C++20.\n\n; This is the C++20 compiler; for compiling object files.\ncompiler = g++\n\n; This is the archiver; for generating static libraries.\narchiver = ar\n\n; This is the Tramway SDK source location; only used for projects.\ntramsdk = ./\n\n[Project]\n\n; This is used for switching between different systems.\n; Select:\n; - WIN32 for 32-bit Windows XP SP3+\n; - WIN64 for 64-bit Windows 7+\n; - LINUX for Linux\n; - WEB if you're building for webassembly\nplatform = WIN64\n\n; This can be set to either LIBRARY or PROJECT.\n; Select:\n; - LIBRARY will produce a statically-linkable library archive file.\n; - PROJECT will produce an executable.\ntype = LIBRARY\n\n; This will be used for the executable name if making a project.\nname = tramsdk\n\n[Modules]\n\n; For extensions you can enable of disable as many as you want. For other \n; modules you have to choose one to be enabled and other to be disabled.\n; Select:\n; - INCLUDE if you want to enable the module;\n; - EXCLUDE if you want to disable it.\n\nextensions/camera = INCLUDE\nextensions/file = EXCLUDE\nextensions/menu = INCLUDE\nextensions/scripting/lua = INCLUDE\n\naudio/openal = INCLUDE\naudio/spatial = EXCLUDE\naudio/template = EXCLUDE\n\nplatform/glfw = INCLUDE\nplatform/sdl = EXCLUDE\n\nphysics/bullet = INCLUDE\nphysics/template = EXCLUDE\n\nrender/opengl = INCLUDE\nrender/direct3d = EXCLUDE\nrender/software = EXCLUDE\nrender/raytrace = EXCLUDE\n"
  },
  {
    "path": "project.cfg",
    "content": "# Tramway SDK Project Settings\n# Gemerated by: Tramway SDK Asset Manager Applet\n# Generated on: 2025.02.26. 6:29:52\n\nSDK_VERSION          \"0.0.9\"\nRUN_COMMAND          \"C:\\Users\\Poga\\Desktop\\painis\\tram\\build-Debug\\bin\\tram-sdk.exe\"\nCOMPILE_COMMAND      \"make project\"\nPROJECT_NAME         \"Tramway SDK Test Project\"\nTBSP_COMMAND         \"../tram-binary/tbsp %level\"\nTMAP_COMMAND         \"../tram-binary/tmap %model %size %padding\"\nTRAD_COMMAND         \"../tram-binary/trad %cell\"\nIMAGE_COMMAND        \"../tram-binary/magick %source -layers flatten data/textures/%dest\"\nBLENDER_COMMAND      \"blender %filename -b -P ../tram-sdk/devtools/exporters/tram_file_export.py\"\nLEVEL_EDITOR_COMMAND \"../tram-binary/tedit\"\nPROJECT_VERSION      \"\"\n"
  },
  {
    "path": "saves/aaa.cfg",
    "content": "addentity mongus pagrabs-mongus 2.928671 -2.975000 -3.597650 0.000000 -0.000000 0.000000 mongus-activate  mongus\naddentity staticwobj udens2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none udens2 fullbright\naddentity staticwobj jura2 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none jura2 jura2\naddentity mongus floppa 1.000000 1.624655 104.000000 3.141593 0.001593 3.141593 floppa-activate  floppa\naddentity bus test-bus1 -65.998795 2.122178 41.120064 -0.037502 0.118372 0.001528 none raf raf raf_wheel\naddentity crate cr3 -72.467049 4.117451 14.272699 0.000000 -0.536495 0.000000 none crate_plain crate\naddentity crate cr2 -72.688187 5.143822 14.747958 0.000000 0.154534 0.000000 none crate_ligma crate\naddentity crate cr1 -72.979095 4.117451 15.389862 0.000000 0.000000 0.000000 none crate_plain crate\naddentity mongus bingus -91.000000 0.850000 10.000000 3.141593 -1.058407 3.141593 bingus-activate  bingus\naddentity staticwobj bingus-chair -91.000000 0.000000 10.000000 3.141593 -1.058407 3.141593 none chair chair\naddentity staticwobj udens1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none udens1 fullbright\naddentity staticwobj jurarail 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none jura1rail jura1rail\naddentity staticwobj jura1 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none jura1 jura1\naddentity tram test-tram1 -48.194851 2.683518 41.765602 3.135177 -0.835846 -3.129445 tram-activate tatra tatra tatrabogey\naddentity staticwobj piena-veikals -625.000000 3.100000 634.000000 3.141593 0.523599 3.141593 none piena_veikals piena_veikals\naddentity staticwobj piena-sign -696.000000 2.200000 596.000000 0.000000 0.785398 0.000000 none piena_veikals_sign piena_veikals_sign\naddentity staticwobj redeles 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none redeles redeles\naddentity staticwobj piena-veikals-ieksa -625.000000 3.100000 634.000000 3.141593 0.523599 3.141593 none piena_veikals_ieksa piena_veikals_ieksa\naddentity crate pp1 -621.500000 3.200000 635.900024 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp2 -618.900024 3.200000 637.500000 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp3 -617.500000 4.000000 638.299988 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp4 -622.500000 3.980000 635.400024 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp5 -618.799988 4.800000 637.599976 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp6 -616.599976 4.800000 638.700012 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp7 -617.200012 5.500000 638.400024 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity crate pp8 -620.700012 5.500000 636.299988 0.000000 1.047197 0.000000 milk-activate pienapaka pienapaka\naddentity lamp plamp1 -616.821777 5.100000 635.834961 3.141593 0.523599 3.141593 none 1.000000 0.416880 0.000000 25.000000\naddentity lamp plamp2 -625.482056 5.100000 630.834961 3.141593 0.523599 3.141593 none 1.000000 0.416880 0.000000 25.000000\naddentity staticwobj pagrabs 0.000000 0.000000 0.000000 0.000000 -0.000000 0.000000 none pagrabs_ieksa pagrabs_ieksa\naddentity lamp lampo 3.500000 -1.000000 116.000000 0.000000 -0.000000 0.000000 none 1.000000 0.416880 0.000000 10.000000\n"
  },
  {
    "path": "scripts/api.lua",
    "content": "-- TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n-- All rights reserved.\n\nprint(\"\\n\\nLoading Lua API\")\n\nif tram then return end\ntram = {}\ntram.math = {}\ntram.entity = {}\ntram.event = {}\ntram.message = {}\ntram.type = {}\ntram.ui = {}\ntram.worldcell = {}\ntram.audio = {}\ntram.render = {}\ntram.physics = {}\ntram.physics.shape = {}\ntram.physics.model = {}\ntram.resource = {}\ntram.components = {}\n\ntram.render.animation = {}\ntram.render.model = {}\ntram.render.material = {}\ntram.render.sprite = {}\n\n\n\n-- FRAMEWORK/CORE.H\n\nfunction tram.init()\n\tprint \"hello my big chungulina\"\nend\n\nfunction tram.GetTick()\n\treturn __impl_core_get_tick()\nend\n\nfunction tram.GetTickTime()\n\treturn __impl_core_get_tick_time()\nend\n\nfunction tram.GetDeltaTime()\n\treturn __impl_core_get_delta_time()\nend\n\n\n\n-- ============================ FRAMEWORK/MATH.H ============================ --\n-- This is where all of the vector math stuff is defined.\n-- For simple stuff, we just do all of the computation without leaving Lua. For\n-- more complex stuff we go down into C++.\n\n\n-- -------------------------------  VEC3 TYPE ------------------------------- --\n-- The vec3 type is basically a re-implemenation of tram::vec3, which itself is\n-- just an alias for glm::vec3.\n\n-- To create a new vec3, use tram.math.vec3(x, y, z). If you get a vec3 through\n-- the C++ API, then use setmetatable(object, tram.math._metatable_vec3) to set\n-- its metatable.\n\ntram.math._methods_vec3 = {\n\tpoot = function(self)\n\t\t--value = \"(\" + self.x + self.y + self.z + \")\"\n\t\tvalue = string.format(\"(%.4f, %.4f, %.4f)\", self.x, self.y, self.z)\n\t\tprint(value)\n\t\t--print(\"vec3:\", self.x, self.y, self.z)\n\tend,\n\t\n\tlength = function(self)\n\t\treturn math.sqrt(self.x * self.x + self.y * self.y + self.z * self.z)\n\tend,\n\t\n\tdistance = function(self, other)\n\t\tassert(getmetatable(other) == tram.math._metatable_vec3)\n\t\treturn (self - other):length()\n\tend,\n\t\n\tdot = function(self, other)\n\t\tassert(getmetatable(other) == tram.math._metatable_vec3)\n\t\treturn self.x * other.x + self.y * other.y + self.z * other.z\n\tend,\n\t\n\tcross = function(self, other)\n\t\tassert(getmetatable(other) == tram.math._metatable_vec3)\n\t\t\n\t\tlocal result = {}\n\t\t\n\t\tresult.x = self.y * other.z - self.z * other.y\n\t\tresult.y = self.z * other.x - self.x * other.z\n\t\tresult.z = self.x * other.y - self.y * other.x\n\t\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\t\n\t\treturn result\n\tend,\n\t\n\tnormalize = function(self)\n\t\tlocal result = {}\n\t\tlocal length = self:length()\n\t\t\n\t\tresult.x = self.x / length\n\t\tresult.y = self.y / length\n\t\tresult.z = self.z / length\n\t\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\t\n\t\treturn result\n\tend,\n}\n\ntram.math._metatable_vec3 = {\n\t__index = tram.math._methods_vec3,\n\t\n\t__tostring = function(self)\n\t\treturn string.format(\"(%.4f, %.4f, %.4f)\", self.x, self.y, self.z)\n\tend,\n\t\n\t__eq = function(self, other)\n\t\treturn self.x == other.x and self.y == other.y and self.z == other.z\n\tend,\n\t\n\t__add = function(self, other)\n\t\tlocal result = {}\n\t\t\n\t\tif getmetatable(other) == tram.math._metatable_vec3 then\n\t\t\tresult.x = self.x + other.x\n\t\t\tresult.y = self.y + other.y\n\t\t\tresult.z = self.z + other.z\n\t\telse\n\t\t\tresult.x = self.x + other\n\t\t\tresult.y = self.y + other\n\t\t\tresult.z = self.z + other\n\t\tend\n\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\n\t\treturn result\n\tend,\n\t\n\t__sub = function(self, other)\n\t\tlocal result = {}\n\t\t\n\t\tif getmetatable(other) == tram.math._metatable_vec3 then\n\t\t\tresult.x = self.x - other.x\n\t\t\tresult.y = self.y - other.y\n\t\t\tresult.z = self.z - other.z\n\t\telse\n\t\t\tresult.x = self.x - other\n\t\t\tresult.y = self.y - other\n\t\t\tresult.z = self.z - other\n\t\tend\n\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\n\t\treturn result\n\tend,\n\t\n\t__mul = function(self, other)\n\t\tlocal result = {}\n\t\t\n\t\tif getmetatable(other) == tram.math._metatable_vec3 then\n\t\t\tresult.x = self.x * other.x\n\t\t\tresult.y = self.y * other.y\n\t\t\tresult.z = self.z * other.z\n\t\telse\n\t\t\tresult.x = self.x * other\n\t\t\tresult.y = self.y * other\n\t\t\tresult.z = self.z * other\n\t\tend\n\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\n\t\treturn result\n\tend,\n\t\n\t__div = function(self, other)\n\t\tlocal result = {}\n\t\t\n\t\tif getmetatable(other) == tram.math._metatable_vec3 then\n\t\t\tresult.x = self.x / other.x\n\t\t\tresult.y = self.y / other.y\n\t\t\tresult.z = self.z / other.z\n\t\telse\n\t\t\tresult.x = self.x / other\n\t\t\tresult.y = self.y / other\n\t\t\tresult.z = self.z / other\n\t\tend\n\t\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\n\t\treturn result\n\tend\n}\n\nfunction tram.math.vec3(x, y, z)\n\tvector = {}\n\n\tif getmetatable(x) == tram.math._metatable_vec3 then\n\t\tvector.x = x.x\n\t\tvector.y = x.y\n\t\tvector.z = x.z\n\telseif x ~= nil and y ~= nil and z ~= nil then\n\t\tvector.x = x\n\t\tvector.y = y\n\t\tvector.z = z\n\telse\n\t\terror(\"Something is wrong with vec3 constructor parameters!\")\n\tend\n\t\n\tsetmetatable(vector, tram.math._metatable_vec3)\n\t\n\treturn vector\n\t\n\t--return tram.math._make_vec3(vector)\nend\n\n\n\n\n\n\n\n-- -------------------------------  QUAT TYPE ------------------------------- --\n-- The quat type is basically a re-implemenation of tram::quat, which itself is\n-- just an alias for glm::quat.\n\n-- To create a new quat, use tram.math.quat(x, y, z, w). You can also use the\n-- tram.math.quat(vec3) to construct a quaternion from euler angles contained in\n-- the vec3. If you get a quat through the C++ API, then use\n-- setmetatable(object, tram.math._metatable_quat) to set its metatable.\n\ntram.math._methods_quat = {\n\tpoot = function(self)\n\t\tvalue = string.format(\"(%.4f, %.4f, %.4f)\", self.x, self.y, self.z)\n\t\tprint(value)\n\tend\n}\n\ntram.math._metatable_quat = {\n\t__index = tram.math._methods_quat,\n\t\n\t__tostring = function(self)\n\t\treturn string.format(\"(%.4f, %.4f, %.4f, %.4f)\", self.x, self.y, self.z, self.w)\n\tend,\n\t\n\t__eq = function(self, other)\n\t\treturn self.x == other.x and self.y == other.y and self.z == other.z and self.w == other.w\n\tend,\n\t\n\t__mul = function(self, other)\n\t\tassert(getmetatable(self) == tram.math._metatable_quat)\n\t\t\n\t\tlocal result = {}\n\t\t\n\t\tif getmetatable(other) == tram.math._metatable_quat then\n\t\t\tresult.w = other.w * self.w - other.x * self.x - other.y * self.y - other.z * self.z\n\t\t\tresult.x = other.w * self.x + other.x * self.w - other.y * self.z + other.z * self.y\n\t\t\tresult.y = other.w * self.y + other.x * self.z + other.y * self.w - other.z * self.x\n\t\t\tresult.z = other.w * self.z - other.x * self.y + other.y * self.x + other.z * self.w\n\t\telseif getmetatable(other) == tram.math._metatable_vec3 then\n\t\t\tresult = __impl_math_quat_vec3_multiply(self, other)\n\t\telse\n\t\t\terror(\"quaternion invalid rotation\")\n\t\tend\n\t\t\n\t\tsetmetatable(result, tram.math._metatable_quat)\n\t\n\t\treturn result\n\tend\n}\n\nfunction tram.math.quat(x, y, z, w)\n\tlocal vector = {}\n\t\n\t-- conversion from euler angles\n\tif getmetatable(x) == tram.math._metatable_vec3 then\n\t\tlocal roll = x.x\n\t\tlocal pitch = x.y\n\t\tlocal yaw = x.z\n\t\t\n\t\tlocal cr = math.cos(roll * 0.5);\n\t\tlocal sr = math.sin(roll * 0.5);\n\t\tlocal cp = math.cos(pitch * 0.5);\n\t\tlocal sp = math.sin(pitch * 0.5);\n\t\tlocal cy = math.cos(yaw * 0.5);\n\t\tlocal sy = math.sin(yaw * 0.5);\n\n\t\tvector.w = cr * cp * cy + sr * sp * sy;\n\t\tvector.x = sr * cp * cy - cr * sp * sy;\n\t\tvector.y = cr * sp * cy + sr * cp * sy;\n\t\tvector.z = cr * cp * sy - sr * sp * cy;\n\t\n\t-- copy constructor\n\telseif getmetatable(x) == tram.math._metatable_quat then\n\t\tvector.x = x.x\n\t\tvector.y = x.y\n\t\tvector.z = x.z\n\t\tvector.w = x.w\n\n\t-- normal parametric constructor\n\telseif x ~= nil and y ~= nil and z ~= nil and w ~= nil then\n\t\tvector.x = x\n\t\tvector.y = y\n\t\tvector.z = z\n\t\tvector.w = w\n\telse\n\t\terror(\"Something is wrong with quaternion constructor parameters!\")\n\tend\n\t\n\tsetmetatable(vector, tram.math._metatable_quat)\n\t\n\treturn vector\nend\n\nfunction tram.math.mix(a, b, c)\n\tif c > 1.0 then\n\t\tc = 1.0\n\telseif c < 0.0 then\n\t\tc = 0.0\n\tend\n\n\tif getmetatable(a) == tram.math._metatable_vec3 then\n\t\tif getmetatable(b) ~= tram.math._metatable_vec3 then\n\t\t\terror(\"First is vec3 but second isn't\")\n\t\tend\n\t\t\n\t\tlocal result = {}\n\t\t\n\t\tresult.x = b.x * c + a.x * (1.0 - c)\n\t\tresult.y = b.y * c + a.y * (1.0 - c)\n\t\tresult.z = b.z * c + a.z * (1.0 - c)\n\n\n\t\tsetmetatable(result, tram.math._metatable_vec3)\n\t\n\t\treturn result\n\telseif getmetatable(a) == tram.math._metatable_quat then\n\t\tif getmetatable(b) ~= tram.math._metatable_quat then\n\t\t\terror(\"First is quat but second isn't\")\n\t\tend\n\t\t\n\t\tlocal result = {}\n\t\t\n\t\tresult.x = b.x * c + a.x * (1.0 - c)\n\t\tresult.y = b.y * c + a.y * (1.0 - c)\n\t\tresult.z = b.z * c + a.z * (1.0 - c)\n\t\tresult.w = b.w * c + a.w * (1.0 - c)\n\n\n\t\tsetmetatable(result, tram.math._metatable_quat)\n\t\n\t\treturn result\n\telse\n\t\terror(\"Mixing not vec3 and not quat\")\n\tend\nend\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.math.DIRECTION_FORWARD = tram.math.vec3(0.0, 0.0, -1.0)\ntram.math.DIRECTION_SIDE = tram.math.vec3(1.0, 0.0, 0.0)\ntram.math.DIRECTION_UP = tram.math.vec3(0.0, 1.0, 0.0)\n\n-- FRAMEWORK/ENTITY.H\n\ntram._metatable_entity = {\n\t__index = {\n\t\tGetName = function (self)\n\t\t\treturn __impl_entity_get_name(self.id)\n\t\tend,\n\t\tGetID = function (self)\n\t\t\treturn self.id\n\t\tend,\n\t\t\n\t\tLoad = function (self)\n\t\t\t__impl_entity_load(self.id)\n\t\tend,\n\t\tUnload = function (self)\n\t\t\t__impl_entity_unload(self.id)\n\t\tend,\n\t\t\n\t\tGetLocation = function (self)\n\t\t\tlocal vector = __impl_entity_get_location(self.id)\n\t\t\tsetmetatable(vector, tram.math._metatable_vec3)\n\t\t\treturn vector\n\t\tend,\n\t\tSetLocation = function (self, location)\n\t\t\treturn __impl_entity_set_location(self.id, location)\n\t\tend,\n\t\t\n\t\tGetRotation = function (self)\n\t\t\tlocal vector = __impl_entity_get_rotation(self.id)\n\t\t\tsetmetatable(vector, tram.math._metatable_quat)\n\t\t\treturn vector\n\t\tend,\n\t\tSetRotation = function (self, rotation)\n\t\t\treturn __impl_entity_set_rotation(self.id, rotation)\n\t\tend\n\t}\n}\n\nfunction tram.entity.Find(term)\n\tif type(term) == \"string\" then\n\t\tid = __impl_entity_find_by_name(term)\n\telse\n\t\tid = __impl_entity_find_by_id(term)\n\tend\n\n\tif id == 0 then\n\t\treturn nil\n\tend\n\t\n\tlocal entity = {}\n\tentity.id = id\n\t\n\tsetmetatable(entity, tram._metatable_entity)\n\t\n\treturn entity\nend\n\nfunction tram.entity.Make(entity_type, entity_properties)\n\t\n\t__impl_clear_key_value()\n\t\n\tfor key, value in pairs(entity_properties) do\n\t\tif type(value) ~= \"function\" then\n\t\t\t__impl_push_key_value(key, value)\n\t\tend\n\tend\n\t\n\tlocal entity = {}\n\t\n\tentity.id = __impl_entity_make(entity_type)\n\t\n\tsetmetatable(entity, tram._metatable_entity)\n\t\n\treturn entity\nend\n\ntram.entity._scriptable_entities = {}\ntram.entity._scriptable_entity_constructor = {}\ntram.entity._scriptable_entity_destructor = {}\n\nfunction __impl_entity_update_parameters_callback(id)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (rawget(entity, \"OnUpdateParameters\") == nil) then\n\t\treturn true\n\tend\n\n\tlocal result = entity:OnUpdateParameters()\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\nfunction __impl_entity_set_parameters_callback(id)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (rawget(entity, \"OnSetParameters\") == nil) then\n\t\treturn true\n\tend\n\n\tlocal result = entity:OnSetParameters()\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\nfunction __impl_entity_load_callback(id)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (rawget(entity, \"OnLoad\") == nil) then\n\t\treturn true\n\tend\n\n\tlocal result = entity:OnLoad()\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\nfunction __impl_entity_unload_callback(id)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (rawget(entity, \"OnUnload\") == nil) then\n\t\treturn true\n\tend\n\n\tlocal result = entity:OnUnload()\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\nfunction __impl_entity_message_handler_callback(id, message_type, sender, receiver, data)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (entity.OnMessageHandler == nil) then\n\t\treturn true\n\tend\n\t\n\tlocal message = {}\n\tmessage.type = message_type\n\tmessage.sender = sender\n\tmessage.receiver = receiver\n\tmessage.data = data\t\n\n\tlocal result = entity:OnMessageHandler(message)\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\nfunction __impl_entity_event_handler_callback(id, event_type, subtype, poster, data)\n\tlocal entity = tram.entity._scriptable_entities[id]\n\t\n\tassert(entity ~= nil)\n\t\n\tif (entity.OnEventHandler == nil) then\n\t\treturn true\n\tend\n\t\n\tlocal event = {}\n\tevent.type = event_type\n\tevent.subtype = subtype\n\tevent.poster = poster\n\tevent.data = data\n\n\tlocal result = entity:OnEventHandler(event)\n\t\n\tif result == nil then\n\t\treturn true\n\tend\n\t\n\treturn result\nend\n\n\nfunction tram.entity.New(entity_type, base_type, base_properties)\n\t__impl_clear_key_value()\n\t\n\tfor key, value in pairs(base_properties) do\n\t\tif type(value) ~= \"function\" then\n\t\t\t__impl_push_key_value(key, value)\n\t\tend\n\tend\n\t\n\tlocal entity = {}\n\t\n\tentity.id = __impl_entity_scriptable_make(base_type, entity_type)\n\t\n\tsetmetatable(entity, tram._metatable_entity)\n\t\n\ttram.entity._scriptable_entities[entity.id] = entity\n\t\n\treturn entity\nend\n\n\n\nfunction tram.entity.Register(entity_type, entity_properties, constructor, destructor)\n\t__impl_clear_entity_fields()\n\t\n\tfor index, field in pairs(entity_properties) do\n\t\tif type(index) ~= \"number\" then\n\t\t\terror(\"Property index needs to be a number, instead got\"\n\t\t\t\t  .. type(index)\n\t\t\t\t  .. \" (\" .. type(index) .. \")\")\n\t\telseif type(field) ~= \"table\" then\n\t\t\terror(\"Property field needs to be a table, instead got\"\n\t\t\t\t  .. type(field)\n\t\t\t\t  .. \" (\" .. type(field) .. \")\")\n\t\telseif type(field.type) ~= \"number\" then\n\t\t\terror(\"Property type needs to be a number, instead got\"\n\t\t\t\t  .. type(field.type)\n\t\t\t\t  .. \" (\" .. type(field.type) .. \")\")\n\t\telseif type(field.flag) ~= \"number\" then\n\t\t\terror(\"Property type needs to be a number, instead got\"\n\t\t\t\t  .. type(field.flag)\n\t\t\t\t  .. \" (\" .. type(field.flag) .. \")\")\n\t\telse\n\t\t\t__impl_push_entity_fields(index, field.type, field.flag)\n\t\tend\n\tend\n\t\n\ttram.entity._scriptable_entity_constructor[entity_type] = constructor\n\ttram.entity._scriptable_entity_destructor[entity_type] = destructor\n\t\n\t__impl_entity_type_register(entity_type)\nend\n\n\n\nfunction __impl_entity_shared_data_callback(id, name, flags, location, rotation)\n\ttram.entity._entity_data_holder = {}\n\n\ttram.entity._entity_data_holder.id = id\n\ttram.entity._entity_data_holder.name = name\n\ttram.entity._entity_data_holder.flags = flags\n\ttram.entity._entity_data_holder.location = location\n\ttram.entity._entity_data_holder.rotation = rotation\nend\n\nfunction __impl_entity_property_callback(key, value)\n\ttram.entity._entity_data_holder[key] = value\nend\n\nfunction __impl_entity_constructor_callback(entity_type)\n\tlocal constructor = tram.entity._scriptable_entity_constructor[entity_type]\n\tassert(type(constructor) == \"function\")\n\treturn constructor(tram.entity._entity_data_holder)\nend\n\nfunction __impl_entity_destructor_callback(entity_type, entity_id)\n\tlocal destructor = tram.entity._scriptable_entity_destructor[entity_type]\n\tassert(type(destructor) == \"function\")\n\tdestructor(entity_id)\nend\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\n-- TODO: fill in\n\n-- =========================== FRAMEWORK/EVENT.H ============================ --\n\nfunction tram.event.Register(event_name)\n\treturn __impl_event_register(event_name)\nend\n\nfunction tram.event.GetType(event_name)\n\treturn __impl_event_get_type(event_name)\nend\n\nfunction tram.event.GetName(event_name)\n\treturn __impl_event_get_name(event_name)\nend\n\nfunction tram.event.GetLast()\n\treturn __impl_event_get_last()\nend\n\nfunction tram.event.Post(event)\n\t__impl_event_post(event.type, event.subtype, event.poster, event.data)\nend\n\n-- this is dumb! we should instead use listener id as a key\n-- instead of _evt_ids as a key!!!\ntram.event._evt_act = {}\ntram.event._evt_ids = 1\n\nfunction tram.event.AddListener(event_type, action)\n\tif getmetatable(action) == tram._metatable_entity then\n\t\treturn __impl_entity_add_listener(event_type, action.id)\n\tend\n\t\n\tlistener = __impl_event_add_listener(event_type, tram.event._evt_ids)\n\n\ttram.event._evt_act[tram.event._evt_ids] = action\n\ttram.event._evt_ids = tram.event._evt_ids + 1\n\t\n\treturn listener\nend\n\nfunction tram.event.RemoveListener(listener)\n\t-- TODO: delete from _evt_act also\n\t__impl_event_remove_listener(listener)\nend\n\nfunction __impl_event_event_callback(event_type, event_subtype, event_poster, event_data, callback_data)\n\tevent = {}\n\tevent.type = event_type\n\tevent.subtype = event_subtype\n\tevent.poster = event_poster\n\tevent.data = event_data\n\t\n\tcallback = tram.event._evt_act[callback_data]\n\t\n\tcallback(event)\nend\n\ntram.event.KEYPRESS = tram.event.GetType(\"keypress\")\ntram.event.KEYDOWN = tram.event.GetType(\"keydown\")\ntram.event.KEYUP = tram.event.GetType(\"keyup\")\ntram.event.KEYCHAR = tram.event.GetType(\"keychar\")\ntram.event.CURSORPOS = tram.event.GetType(\"cursorpos\")\ntram.event.TICK = tram.event.GetType(\"tick\")\ntram.event.FRAME = tram.event.GetType(\"frame\")\ntram.event.SELECTED = tram.event.GetType(\"selected\")\ntram.event.LOOK_AT = tram.event.GetType(\"look-at\")\n\n\n-- ========================== FRAMEWORK/MESSAGE.H =========================== --\n\nfunction tram.message.Register(message_name)\n\treturn __impl_message_register(message_name)\nend\n\nfunction tram.message.GetType(message_name)\n\treturn __impl_message_get_type(message_name)\nend\n\nfunction tram.message.GetName(message_name)\n\treturn __impl_message_get_name(message_name)\nend\n\nfunction tram.message.GetLast()\n\treturn __impl_message_get_last()\nend\n\nfunction tram.message.Send(message, delay)\n\t__impl_message_send(message.type, message.sender, message.receiver, message.data, delay)\nend\n\ntram.message.NONE = tram.message.GetType(\"none\")\ntram.message.PING = tram.message.GetType(\"ping\")\ntram.message.MOVE_PICK_UP = tram.message.GetType(\"move-pick-up\")\ntram.message.OPEN = tram.message.GetType(\"open\")\ntram.message.CLOSE = tram.message.GetType(\"close\")\ntram.message.LOCK = tram.message.GetType(\"lock\")\ntram.message.UNLOCK = tram.message.GetType(\"unlock\")\ntram.message.TOGGLE = tram.message.GetType(\"toggle\")\ntram.message.KILL = tram.message.GetType(\"kill\")\ntram.message.TRIGGER = tram.message.GetType(\"trigger\")\ntram.message.START = tram.message.GetType(\"start\")\ntram.message.STOP = tram.message.GetType(\"stop\")\ntram.message.ACTIVATE = tram.message.GetType(\"activate\")\ntram.message.ACTIVATE_ONCE = tram.message.GetType(\"activate-one\")\ntram.message.SELECT = tram.message.GetType(\"select\")\ntram.message.SET_PROGRESS = tram.message.GetType(\"set-progress\")\ntram.message.SET_ANIMATION = tram.message.GetType(\"set-animation\")\n\n-- ============================= FRAMEWORK/GUI.H ============================ --\n\n-- TODO: implement\n\n-- ========================== FRAMEWORK/LANGUAGE.H ========================== --\n\n-- TODO: implement\n\n-- ============================= FRAMEWORK/UI.H ============================= --\n\nfunction tram.ui.GetScreenWidth()\n\treturn __impl_ui_get_screen_width()\nend\n\nfunction tram.ui.GetScreenHeight()\n\treturn __impl_ui_get_screen_height()\nend\n\nfunction tram.ui.SetWindowTitle(title)\n\t__impl_ui_set_window_title(title)\nend\n\nfunction tram.ui.SetWindowSize(w, h)\n\t__impl_ui_set_window_size(w, h)\nend\n\nfunction tram.ui.SetCursor(cursor)\n\t__impl_ui_set_cursor(cursor)\nend\n\ntram.ui._keyboard_function = {}\n\nfunction tram.ui.BindKeyboardKey(key, action)\n\tif type(action) == \"function\" then\n\t\t__impl_ui_bind_keyboard_callback(key)\n\t\ttram.ui._keyboard_function[key] = action\n\telse \n\t\t__impl_ui_bind_keyboard_action(key, action)\n\tend\nend\n\nfunction __impl_ui_keyboard_callback(key)\n\tcallback = tram.ui._keyboard_function[key]\n\tcallback()\nend\n\nfunction tram.ui.PollKeyboardKey(key)\n\treturn __impl_ui_poll_keyboard_key(key)\nend\n\nfunction tram.ui.PollKeyboardAxis(axis)\n\treturn __impl_ui_poll_keyboard_axis(axis)\nend\n\nfunction tram.ui.PollKeyboardAxisDelta(axis)\n\treturn __impl_ui_poll_keyboard_axis_delta(axis)\nend\n\nfunction tram.ui.SetInputState(state)\n\t__impl_ui_set_input_state(state)\nend\n\nfunction tram.ui.GetInputState()\n\treturn __impl_ui_get_input_state()\nend\n\n\nfunction tram.ui.GetAxisSensitivity(axis)\n\treturn __impl_ui_get_axis_sensitivity(axis)\nend\n\nfunction tram.ui.SetAxisSensitivity(axis, value)\n\treturn __impl_ui_set_axis_sensitivity(axis, value)\nend\n\nfunction tram.ui.RegisterKeyboardAction(name)\n\treturn __impl_ui_register_keyboard_action(name)\nend\n\nfunction tram.ui.GetKeyboardAction(name)\n\treturn __impl_ui_get_keyboard_action(name)\nend\n\nfunction tram.ui.GetKeyboardActionName(name)\n\treturn __impl_ui_get_keyboard_action_name(name)\nend\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.ui.KEY_SPACE = 0\ntram.ui.KEY_APOSTROPHE = 1\ntram.ui.KEY_COMMA = 2\ntram.ui.KEY_MINUS = 3\ntram.ui.KEY_PERIOD = 4\ntram.ui.KEY_SLASH = 5\n\ntram.ui.KEY_0 = 6\ntram.ui.KEY_1 = 7\ntram.ui.KEY_2 = 8\ntram.ui.KEY_3 = 9\ntram.ui.KEY_4 = 10\ntram.ui.KEY_5 = 11\ntram.ui.KEY_6 = 12\ntram.ui.KEY_7 = 13\ntram.ui.KEY_8 = 14\ntram.ui.KEY_9 = 15\n\ntram.ui.KEY_SEMICOLON = 16\ntram.ui.KEY_EQUAL = 17\n\ntram.ui.KEY_A = 18\ntram.ui.KEY_B = 19\ntram.ui.KEY_C = 20\ntram.ui.KEY_D = 21\ntram.ui.KEY_E = 22\ntram.ui.KEY_F = 23\ntram.ui.KEY_G = 24\ntram.ui.KEY_H = 25\ntram.ui.KEY_I = 26\ntram.ui.KEY_J = 27\ntram.ui.KEY_K = 28\ntram.ui.KEY_L = 29\ntram.ui.KEY_M = 30\ntram.ui.KEY_N = 31\ntram.ui.KEY_O = 32\ntram.ui.KEY_P = 33\ntram.ui.KEY_Q = 34\ntram.ui.KEY_R = 35\ntram.ui.KEY_S = 36\ntram.ui.KEY_T = 37\ntram.ui.KEY_U = 38\ntram.ui.KEY_V = 39\ntram.ui.KEY_W = 40\ntram.ui.KEY_X = 41\ntram.ui.KEY_Y = 42\ntram.ui.KEY_Z = 43\n\ntram.ui.KEY_LEFT_BRACKET = 44\ntram.ui.KEY_BACKSLASH = 45\ntram.ui.KEY_RIGHT_BRACKET = 46\ntram.ui.KEY_GRAVE_ACCENT = 47\n\ntram.ui.KEY_WORLD_1 = 48\ntram.ui.KEY_WORLD_2 = 49\n\ntram.ui.KEY_ESCAPE = 50\ntram.ui.KEY_ENTER = 51\ntram.ui.KEY_TAB = 52\ntram.ui.KEY_BACKSPACE = 53\ntram.ui.KEY_INSERT = 54\ntram.ui.KEY_DELETE = 55\n\ntram.ui.KEY_RIGHT = 56\ntram.ui.KEY_LEFT = 57\ntram.ui.KEY_DOWN = 58\ntram.ui.KEY_UP = 59\n\ntram.ui.KEY_PAGE_UP = 60\ntram.ui.KEY_PAGE_DOWN = 61\ntram.ui.KEY_HOME = 62\ntram.ui.KEY_END = 63\ntram.ui.KEY_CAPS_LOCK = 64\ntram.ui.KEY_SCROLL_LOCK = 65\ntram.ui.KEY_NUM_LOCK = 66\ntram.ui.KEY_PRINT_SCREEN = 67\ntram.ui.KEY_PAUSE = 68\n\ntram.ui.KEY_F1 = 69\ntram.ui.KEY_F2 = 70\ntram.ui.KEY_F3 = 71\ntram.ui.KEY_F4 = 72\ntram.ui.KEY_F5 = 73\ntram.ui.KEY_F6 = 74\ntram.ui.KEY_F7 = 75\ntram.ui.KEY_F8 = 76\ntram.ui.KEY_F9 = 77\ntram.ui.KEY_F10 = 78\ntram.ui.KEY_F11 = 79\ntram.ui.KEY_F12 = 80\ntram.ui.KEY_F13 = 81\ntram.ui.KEY_F14 = 82\ntram.ui.KEY_F15 = 83\ntram.ui.KEY_F16 = 84\ntram.ui.KEY_F17 = 85\ntram.ui.KEY_F18 = 86\ntram.ui.KEY_F19 = 87\ntram.ui.KEY_F20 = 88\ntram.ui.KEY_F21 = 89\ntram.ui.KEY_F22 = 90\ntram.ui.KEY_F23 = 91\ntram.ui.KEY_F24 = 92\ntram.ui.KEY_F25 = 93\n\ntram.ui.KEY_KP_0 = 94\ntram.ui.KEY_KP_1 = 95\ntram.ui.KEY_KP_2 = 96\ntram.ui.KEY_KP_3 = 97\ntram.ui.KEY_KP_4 = 98\ntram.ui.KEY_KP_5 = 99\ntram.ui.KEY_KP_6 = 100\ntram.ui.KEY_KP_7 = 101\ntram.ui.KEY_KP_8 = 102\ntram.ui.KEY_KP_9 = 103\n\n\ntram.ui.KEY_KP_DECIMAL = 104\ntram.ui.KEY_KP_DIVIDE = 105\ntram.ui.KEY_KP_MULTIPLY = 106\ntram.ui.KEY_KP_SUBTRACT = 107\ntram.ui.KEY_KP_ADD = 108\ntram.ui.KEY_KP_ENTER = 109\ntram.ui.KEY_KP_EQUAL = 110\n\ntram.ui.KEY_LEFT_SHIFT = 111\ntram.ui.KEY_LEFT_CONTROL = 112\ntram.ui.KEY_LEFT_ALT = 113\ntram.ui.KEY_LEFT_SUPER = 114\ntram.ui.KEY_RIGHT_SHIFT = 115\ntram.ui.KEY_RIGHT_CONTROL = 116\ntram.ui.KEY_RIGHT_ALT = 117\ntram.ui.KEY_RIGHT_SUPER = 118\n\ntram.ui.KEY_MENU = 119\n\ntram.ui.KEY_RIGHTMOUSE = 120\ntram.ui.KEY_LEFTMOUSE = 121\ntram.ui.KEY_MIDDLEMOUSE = 122\n\ntram.ui.KEY_MOUSE_X = 0\ntram.ui.KEY_MOUSE_Y = 1\ntram.ui.KEY_MOUSE_SCROLL = 2\n\ntram.ui.STATE_DEFAULT = 0\ntram.ui.STATE_NO_INPUT = 1\ntram.ui.STATE_FLYING = 2\ntram.ui.STATE_MENU_OPEN = 3\ntram.ui.STATE_CURSOR = 4\n\ntram.ui.KEY_ACTION_NONE = tram.ui.GetKeyboardAction(\"none\")\ntram.ui.KEY_ACTION_FORWARD = tram.ui.GetKeyboardAction(\"forward\")\ntram.ui.KEY_ACTION_BACKWARD = tram.ui.GetKeyboardAction(\"backward\")\ntram.ui.KEY_ACTION_STRAFE_LEFT = tram.ui.GetKeyboardAction(\"strafe-left\")\ntram.ui.KEY_ACTION_STRAFE_RIGHT = tram.ui.GetKeyboardAction(\"strafe-right\")\ntram.ui.KEY_ACTION_UP = tram.ui.GetKeyboardAction(\"up\")\ntram.ui.KEY_ACTION_DOWN = tram.ui.GetKeyboardAction(\"down\")\ntram.ui.KEY_ACTION_LEFT = tram.ui.GetKeyboardAction(\"left\")\ntram.ui.KEY_ACTION_RIGHT = tram.ui.GetKeyboardAction(\"right\")\ntram.ui.KEY_ACTION_JUMP = tram.ui.GetKeyboardAction(\"jump\")\ntram.ui.KEY_ACTION_CROUCH = tram.ui.GetKeyboardAction(\"crouch\")\ntram.ui.KEY_ACTION_SPRINT = tram.ui.GetKeyboardAction(\"sprint\")\ntram.ui.KEY_ACTION_FLY = tram.ui.GetKeyboardAction(\"fly\")\ntram.ui.KEY_ACTION_ACTIVATE = tram.ui.GetKeyboardAction(\"activate\")\ntram.ui.KEY_ACTION_PRIMARY = tram.ui.GetKeyboardAction(\"primary\")\ntram.ui.KEY_ACTION_SECONDARY = tram.ui.GetKeyboardAction(\"secondary\")\n\ntram.ui.CURSOR_DEFAULT = 12\ntram.ui.CURSOR_TEXT = 12\ntram.ui.CURSOR_CLICK = 12\n\n-- ============================ FRAMEWORK/TYPE.H ============================ --\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.type.UNDEFINED = 0\ntram.type.BOOL = 1\ntram.type.NAME = 2\ntram.type.STRING = 3\ntram.type.INT8 = 4\ntram.type.INT16 = 5\ntram.type.INT32 = 6\ntram.type.UINT8 = 7\ntram.type.UINT16 = 8\ntram.type.UINT32 = 9\ntram.type.FLOAT32 = 10\ntram.type.VEC2 = 11\ntram.type.VEC3 = 12\ntram.type.VEC4 = 13\ntram.type.QUAT = 14\n\n-- =========================== FRAMEWORK/RESOURCE.H ========================= --\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.resource.UNLOADED = 0\ntram.resource.LOADED = 1\ntram.resource.READY = 2\n\n-- ========================== FRAMEWORK/WORLDCELL.H ========================= --\n\ntram._metatable_worldcell = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_worldcell_get_name(self.index)\n\t\tend,\n\t\t\n\t\tLoadFromDisk = function(self)\n\t\t\t__impl_worldcell_loadfromdisk(self.index)\n\t\tend,\n\t\t\n\t\tLoad = function(self)\n\t\t\t__impl_worldcell_load(self.index)\n\t\tend,\n\t\t\n\t\tUnload = function(self)\n\t\t\t__impl_worldcell_unload(self.index)\n\t\tend,\n\t\t\n\t\tLink = function(self, other)\n\t\t\tassert(getmetatable(other) == tram._metatable_worldcell)\n\t\t\t__impl_worldcell_link(self.index, other.index)\n\t\tend,\n\t\t\n\t\tIsLoaded = function(self)\n\t\t\treturn __impl_worldcell_is_loaded(self.index)\n\t\tend,\n\t\tIsInterior = function(self)\n\t\t\treturn __impl_worldcell_is_interior(self.index)\n\t\tend,\n\t\tHasInteriorLighting = function(self)\n\t\t\treturn __impl_worldcell_has_interior_lighting(self.index)\n\t\tend,\n\t\tHasAutomaticLoading = function(self)\n\t\t\treturn __impl_worldcell_has_automatic_loading(self.index)\n\t\tend,\n\t\t\n\t\tSetInterior = function(self, is)\n\t\t\treturn __impl_worldcell_set_interior(self.index, is)\n\t\tend,\n\t\tSetInteriorLighting = function(self, is)\n\t\t\treturn __impl_worldcell_set_interior_lighting(self.index, is)\n\t\tend,\n\t\tSetAutomaticLoading = function(self, is)\n\t\t\treturn __impl_worldcell_set_automatic_loading(self.index, is)\n\t\tend\n\t}\n}\n\nfunction tram.worldcell.Make(name)\n\tlocal worldcell_index = __impl_worldcell_make(name)\n\t\n\tif (worldcell_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal worldcell = {}\n\tworldcell.index = worldcell_index\n\t\n\tsetmetatable(worldcell, tram._metatable_worldcell)\n\t\n\treturn worldcell\nend\n\nfunction tram.worldcell.Find(name)\n\tlocal worldcell_index = __impl_worldcell_find(name)\n\t\n\tif (worldcell_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal worldcell = {}\n\tworldcell.index = worldcell_index\n\t\n\tsetmetatable(worldcell, tram._metatable_worldcell)\n\t\n\treturn worldcell\nend\n\n-- ============================== AUDIO/AUDIO.H ============================= --\n\nfunction tram.audio.SetVolume(volume)\n\treturn __impl_audio_set_volume(name)\nend\n\nfunction tram.audio.GetVolume(volume)\n\treturn __impl_audio_get_volume(name)\nend\n\nfunction tram.audio.SetListenerPosition(position)\n\treturn __impl_audio_set_listener_position(position)\nend\n\nfunction tram.audio.SetListenerOrientation(orientation)\n\treturn __impl_audio_set_listener_orientation(orientation)\nend\n\n\n\n\n\n-- ============================ PHYSICS/PHYSICS.H =========================== --\n\nfunction tram.physics.shape.Sphere(radius)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.SPHERE\n\tshape.radius = radius\n\treturn shape\nend\n\nfunction tram.physics.shape.Cylinder(radius, height)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.CYLINDER\n\tshape.radius = radius\n\tshape.height = height\n\treturn shape\nend\n\nfunction tram.physics.shape.Capsule(radius, height)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.CAPSULE\n\tshape.radius = radius\n\tshape.height = height\n\treturn shape\nend\n\n\nfunction tram.physics.shape.Cone(radius, height)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.CONE\n\tshape.radius = radius\n\tshape.height = height\n\treturn shape\nend\n\n\nfunction tram.physics.shape.Box(dimensions)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.BOX\n\tshape.dimensions = dimensions\n\treturn shape\nend\n\n\nfunction tram.physics.shape.Hull(points)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.HULL\n\tshape.points = points\n\treturn shape\nend\n\n\nfunction tram.physics.shape.Mesh(triangles)\n\tlocal shape = {}\n\tshape.shape = tram.physics.shape.MESH\n\tshape.triangles = triangles\n\treturn shape\nend\n\nfunction tram.physics.shape._build(mesh)\n\tif mesh.shape == tram.physics.shape.SPHERE then\n\t\t__impl_physics_collision_set_sphere(shape.radius)\n\telseif mesh.shape == tram.physics.shape.CYLINDER then\n\t\t__impl_physics_collision_set_cylinder(shape.radius, shape.height)\n\telseif mesh.shape == tram.physics.shape.CAPSULE then\n\t\t__impl_physics_collision_set_capsule(shape.radius, shape.height)\n\telseif mesh.shape == tram.physics.shape.CONE then\n\t\t__impl_physics_collision_set_cone(shape.radius, shape.height)\n\telseif mesh.shape == tram.physics.shape.BOX then\n\t\t__impl_physics_collision_set_box(shape.dimensions)\n\telseif mesh.shape == tram.physics.shape.HULL then\n\t\t__impl_physics_collision_set_hull()\n\t\tfor point in mesh.points do\n\t\t\tprint(\"adding point:\", point)\n\t\t\t__impl_physics_collision_append_point(point)\n\t\tend\n\telseif mesh.shape == tram.physics.shape.MESH then\n\t\t__impl_physics_collision_set_mesh()\n\t\tfor triangle in mesh.triangles do\n\t\t\tprint(\"adding triangle:\", triangle[1], triangle[2], triangle[3])\n\t\t\t__impl_physics_collision_append_triangle(triangle[1], triangle[2], triangle[3])\n\t\tend\n\tend\nend\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.physics.shape.SPHERE = 0\ntram.physics.shape.CYLINDER = 1\ntram.physics.shape.CAPSULE = 2\ntram.physics.shape.CONE = 3\ntram.physics.shape.BOX = 4\ntram.physics.shape.HULL = 5\ntram.physics.shape.MESH = 6\n\n-- ========================= PHYSICS/COLLISIONMODEL.H ======================= --\n\ntram.physics._metatable_collisionmodel = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_physics_collisionmodel_get_name(self.index)\n\t\tend\n\t}\n}\n\nfunction tram.physics.model.Find(name)\n\tlocal model_index = __impl_physics_collisionmodel_find(name)\n\t\n\tif (model_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal model = {}\n\tmodel.index = model_index\n\t\n\tsetmetatable(model, tram.render._metatable_collisionmodel)\n\t\n\treturn model\nend\n\n-- ============================= RENDER/RENDER.H ============================ --\n\nfunction tram.render.SetSunDirection(direction, layer)\n\t__impl_render_set_sun_direction(direction, layer)\nend\n\nfunction tram.render.SetSunColor(color, layer)\n\t__impl_render_set_sun_color(color, layer)\nend\n\nfunction tram.render.SetAmbientColor(color, layer)\n\t__impl_render_set_ambient_color(color, layer)\nend\n\nfunction tram.render.SetFogDistance(near, far, layer)\n\t__impl_render_set_fog_distance(near, far, layer)\nend\n\nfunction tram.render.SetFogColor(color, layer)\n\t__impl_render_set_fog_color(color, layer)\nend\n\nfunction tram.render.SetScreenClearColor(color)\n\t__impl_render_set_screen_clear_color(color)\nend\n\nfunction tram.render.SetViewFov(fov, layer)\n\t__impl_render_set_view_fov(fov, layer)\nend\n\nfunction tram.render.SetViewDistance(distance, layer)\n\t__impl_render_set_view_distance(distance, layer)\nend\n\nfunction tram.render.SetViewPosition(direction, layer)\n\t__impl_render_set_view_position(direction, layer)\nend\n\nfunction tram.render.SetViewRotation(direction, layer)\n\t__impl_render_set_view_rotation(direction, layer)\nend\n\nfunction tram.render.GetViewPosition(layer)\n\treturn __impl_render_get_view_position(layer)\nend\n\nfunction tram.render.GetViewRotation(layer)\n\treturn __impl_render_get_view_rotation(layer)\nend\n\nfunction tram.render.AddLine(from, to, color)\n\t__impl_render_add_line(from, to, color)\nend\n\nfunction tram.render.AddLineMarker(position, color)\n\t__impl_render_add_line_marker(position, color)\nend\n\n-- -------------------------------  CONSTANTS ------------------------------- --\n\ntram.render.COLOR_WHITE = tram.math.vec3(1.0, 1.0, 1.0)\ntram.render.COLOR_RED = tram.math.vec3(1.0, 0.0, 0.0)\ntram.render.COLOR_GREEN = tram.math.vec3(0.0, 1.0, 0.0)\ntram.render.COLOR_BLUE = tram.math.vec3(0.0, 0.0, 1.0)\ntram.render.COLOR_YELLOW = tram.math.vec3(1.0, 1.0, 0.0)\ntram.render.COLOR_PINK = tram.math.vec3(1.0, 0.0, 1.0)\ntram.render.COLOR_CYAN = tram.math.vec3(0.0, 1.0, 1.0)\ntram.render.COLOR_BLACK = tram.math.vec3(0.0, 0.0, 0.0)\ntram.render.COLOR_GRAY = tram.math.vec3(0.3, 0.3, 0.3)\n\n-- =========================== RENDER/ANIMATION.H =========================== --\n\n-- TODO: implement the rest of the stuff\n\ntram.render._metatable_animation = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_render_animation_get_name(self.index)\n\t\tend,\n\t\t\n\t\tLoad = function(self)\n\t\t\treturn __impl_render_animation_load(self.index)\n\t\tend,\n\t}\n}\n\nfunction tram.render.animation.Find(name)\n\tlocal animation_index = __impl_render_animation_find(name)\n\t\n\tif (animation_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal animation = {}\n\tanimation.index = animation_index\n\t\n\tsetmetatable(animation, tram.render._metatable_animation)\n\t\n\treturn animation\nend\n\n-- ============================= RENDER/MODEL.H ============================= --\n\ntram.render._metatable_model = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_render_model_get_name(self.index)\n\t\tend,\n\t\t\n\t\tAddReference = function(self)\n\t\t\t__impl_render_model_add_reference(self.index)\n\t\tend,\n\t\tRemoveReference = function(self)\n\t\t\t__impl_render_model_remove_reference(self.index)\n\t\tend,\n\t\t\n\t\tLoad = function(self)\n\t\t\t__impl_render_model_load(self.index)\n\t\tend,\n\t\t\n\t\tGetAABBMin = function(self)\n\t\t\treturn __impl_render_model_get_aabb_min(self.index)\n\t\tend,\n\t\tGetAABBMax = function(self)\n\t\t\treturn __impl_render_model_get_aabb_max(self.index)\n\t\tend,\n\t\t\n\t\tGetNearDistance = function(self)\n\t\t\treturn __impl_render_model_get_near_distance(self.index)\n\t\tend,\n\t\tGetFarDistance = function(self)\n\t\t\treturn __impl_render_model_get_far_distance(self.index)\n\t\tend,\n\t\t\n\t\tSetNearDistance = function(self, dist)\n\t\t\t__impl_render_model_set_near_distance(self.index, dist)\n\t\tend,\n\t\tSetFarDistance = function(self, dist)\n\t\t\t__impl_render_model_set_far_distance(self.index, dist)\n\t\tend\n\t}\n}\n\nfunction tram.render.model.Find(name)\n\tlocal model_index = __impl_render_model_find(name)\n\t\n\tif (model_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal model = {}\n\tmodel.index = model_index\n\t\n\tsetmetatable(model, tram.render._metatable_model)\n\t\n\treturn model\nend\n\n\n\n\n\n\n-- ============================ RENDER/MATERIAL.H =========================== --\n\n-- TODO: implement the rest of the stuff\n\ntram.render._metatable_material = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_render_material_get_name(self.index)\n\t\tend\n\t}\n}\n\nfunction tram.render.material.Find(name)\n\tlocal material_index = __impl_render_material_find(name)\n\t\n\tif (material_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal material = {}\n\tmaterial.index = material_index\n\t\n\tsetmetatable(material, tram.render._metatable_material)\n\t\n\treturn material\nend\n\n\n\n\n\n\n-- ============================= RENDER/SPRITE.H ============================ --\n\n-- TODO: implement the rest of the stuff\n\ntram.render._metatable_sprite = {\n\t__index = {\n\t\tGetName = function(self)\n\t\t\treturn __impl_render_sprite_get_name(self.index)\n\t\tend\n\t}\n}\n\nfunction tram.render.sprite.Find(name)\n\tlocal sprite_index = __impl_render_sprite_find(name)\n\t\n\tif (sprite_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal sprite = {}\n\tsprite.index = sprite_index\n\t\n\tsetmetatable(sprite, tram.render._metatable_sprite)\n\t\n\treturn sprite\nend\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n-- COMPONENTS COPMPOENNE TSCOMPONENTS CPOMNKPOEN TS COMPONETS\n\ntram.render._metatable_rendercomponent = {\n\t__index = {\n\t\tGetModel = function(self)\n\t\t\tlocal material = {}\n\t\t\tmaterial.index = __impl_components_render_get_model(self.index)\n\t\n\t\t\tsetmetatable(material, tram.render._metatable_material)\n\t\t\n\t\t\treturn material\n\t\tend,\n\t\t\n\t\tSetModel = function(self, model)\n\t\t\tif getmetatable(model) ~= tram.render._metatable_model then\n\t\t\t\tmodel = tram.render.model.Find(model)\n\t\t\tend\n\t\t\t__impl_components_render_set_model(self.index, model.index)\n\t\tend,\n\t\t\n\t\tSetLightmap = function(self, material)\n\t\t\tif getmetatable(material) ~= tram.render._metatable_material then\n\t\t\t\tmaterial = tram.render.material.Find(material)\n\t\t\tend\n\t\t\t__impl_components_render_set_lightmap(self.index, material.index)\n\t\tend,\n\t\t\n\t\tSetArmature = function(self, armature)\n\t\t\tassert(getmetatable(armature) == tram.render._metatable_animationcomponent, \"SetArmature() accepts only AnimationComponents.\")\n\t\t\t__impl_components_set_armature(self.index, armature.index)\n\t\t\t--error(\"RenderComponent SetArmature not implemented!\")\n\t\tend,\n\t\t\n\t\tGetLocation = function(self)\n\t\t\tlocal vector = __impl_components_render_get_location(self.index)\n\t\t\tsetmetatable(vector, tram.math._metatable_vec3)\n\t\t\treturn vector\n\t\tend,\n\t\t\n\t\tGetRotation = function(self)\n\t\t\tlocal vector = __impl_components_render_get_rotation(self.index)\n\t\t\tsetmetatable(vector, tram.math._metatable_quat)\n\t\t\treturn vector\n\t\tend,\n\t\t\n\t\tSetLocation = function(self, location)\n\t\t\treturn __impl_components_render_set_location(self.index, location)\n\t\tend,\n\t\t\n\t\tSetRotation = function(self, rotation)\n\t\t\treturn __impl_components_render_set_rotation(self.index, rotation)\n\t\tend,\n\t\t\n\t\tSetScale = function(self, scale)\n\t\t\treturn __impl_components_render_set_scale(self.index, scale)\n\t\tend,\n\t\t\n\t\tSetColor = function(self, color)\n\t\t\treturn __impl_components_render_set_color(self.index, color)\n\t\tend,\n\t\t\n\t\tSetLayer = function(self, layer)\n\t\t\treturn __impl_components_render_set_layer(self.index, layer)\n\t\tend,\n\t\t\n\t\tSetTextureOffset = function(self, material, offset)\n\t\t\terror(\"RenderComponent SetTextureOffset not implemented!\")\n\t\tend,\n\t\t\n\t\tSetLineDrawingMode = function(self, enabled)\n\t\t\treturn __impl_components_render_set_line_drawing_mode(self.index, enabled)\n\t\tend,\n\t\t\n\t\tSetDirectionalLight = function(self, enabled)\n\t\t\treturn __impl_components_render_set_directional_light(self.index, enabled)\n\t\tend,\n\t\t\n\t\tInit = function(self)\n\t\t\t__impl_components_render_init(self.index)\n\t\tend,\n\t\t\n\t\tDelete = function(self)\n\t\t\t__impl_components_render_delete(self.index)\n\t\t\tself.index = nil\n\t\tend\n\t}\n}\n\nfunction tram.components.Render()\n\tlocal component_index = __impl_components_render_make()\n\t\n\tif (component_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal component = {}\n\tcomponent.index = component_index\n\t\n\tsetmetatable(component, tram.render._metatable_rendercomponent)\n\t\n\treturn component\nend\n\n\n\n\ntram.render._metatable_lightcomponent = {\n\t__index = {\n\t\tSetLocation = function(self, location)\n\t\t\treturn __impl_components_light_set_location(self.index, location)\n\t\tend,\n\t\t\n\t\tSetColor = function(self, color)\n\t\t\treturn __impl_components_light_set_color(self.index, color)\n\t\tend,\n\t\t\n\t\tSetDistance = function(self, distance)\n\t\t\treturn __impl_components_light_set_distance(self.index, distance)\n\t\tend,\n\t\t\n\t\tSetDirection = function(self, direction)\n\t\t\treturn __impl_components_light_set_direction(self.index, direction)\n\t\tend,\n\t\t\n\t\tSetExponent = function(self, exponent)\n\t\t\treturn __impl_components_light_set_exponent(self.index, exponent)\n\t\tend,\n\t\t\n\t\tInit = function(self)\n\t\t\t__impl_components_light_init(self.index)\n\t\tend,\n\t\t\n\t\tDelete = function(self)\n\t\t\t__impl_components_light_delete(self.index)\n\t\t\tself.index = nil\n\t\tend\n\t}\n}\n\nfunction tram.components.Light()\n\tlocal component_index = __impl_components_light_make()\n\t\n\tif (component_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal component = {}\n\tcomponent.index = component_index\n\t\n\tsetmetatable(component, tram.render._metatable_lightcomponent)\n\t\n\treturn component\nend\n\n\n\n\n\ntram.render._animationfinishcallbacks = {}\n\nfunction __impl_components_animation_finish_callback(index, animation)\n\tlocal component = {}\n\tcomponent.index = index\n\t\n\tsetmetatable(component, tram.render._metatable_animationcomponent)\n\t\n\ttram.render._animationfinishcallbacks[index](component, animation)\nend\n\ntram.render._metatable_animationcomponent = {\n\t__index = {\n\t\tGetModel = function(self)\n\t\t\tlocal material = {}\n\t\t\tmaterial.index = __impl_components_animation_get_model(self.index)\n\t\n\t\t\tsetmetatable(material, tram.render._metatable_material)\n\t\t\n\t\t\treturn material\n\t\tend,\n\t\t\n\t\tSetModel = function(self, model)\n\t\t\tif getmetatable(model) ~= tram.render._metatable_model then\n\t\t\t\tmodel = tram.render.model.Find(model)\n\t\t\tend\n\t\t\t__impl_components_animation_set_model(self.index, model.index)\n\t\tend,\n\t\t\n\t\t\n\t\t\n\t\tSetKeyframe = function(self, name, keyframe)\n\t\t\t__impl_components_animation_set_keyframe(self.index, name, keyframe.location, keyframe.rotation, keyframe.scale)\n\t\tend,\n\t\t\n\t\tSetOnAnimationFinishCallback = function(self, name, callback)\n\t\t\ttram.render._animationfinishcallbacks[self.index] = callback\n\t\t\t__impl_components_animation_add_finish_callback(self.index)\n\t\tend,\n\t\t\n\t\tPlay = function(self, name, repeats, weight, speed, interpolate, pause_on_last_frame)\n\t\t\tif repeats == nil then repeats = -1 end\n\t\t\tif weight == nil then weight = 1.0 end\n\t\t\tif speed == nil then speed = 1.0 end\n\t\t\tif interpolate == nil then interpolate = true end\n\t\t\tif pause_on_last_frame == nil then pause_on_last_frame = false end\n\t\t\n\t\t\t__impl_components_animation_play(self.index, name, repeats, weight, speed, interpolate, pause_on_last_frame)\n\t\tend,\n\t\t\n\t\tSetKeyframe = function(self, name, keyframe)\n\t\t\t__impl_components_animation_set_keyframe(self.index, name, keyframe.location, keyframe.rotation, keyframe.scale)\n\t\tend,\n\t\t\n\t\tIsPlaying = function(self, name)\n\t\t\treturn __impl_components_animation_is_playing(self.index, name)\n\t\tend,\n\t\t\n\t\tStop = function(self, name)\n\t\t\t__impl_components_animation_stop(self.index, name)\n\t\tend,\n\t\t\n\t\tPause = function(self, name)\n\t\t\t__impl_components_animation_pause(self.index, name)\n\t\tend,\n\t\t\n\t\tContinue = function(self, name)\n\t\t\t__impl_components_animation_continue(self.index, name)\n\t\tend,\n\t\t\n\t\t\n\t\tSetWeight = function(self, name, weight)\n\t\t\t__impl_components_animation_set_weight(self.index, name, weight)\n\t\tend,\n\t\t\n\t\tSetSpeed = function(self, name, speed)\n\t\t\t__impl_components_animation_set_speed(self.index, name, speed)\n\t\tend,\n\t\t\n\t\tSetRepeats = function(self, name, repeats)\n\t\t\t__impl_components_animation_set_repeats(self.index, name, repeats)\n\t\tend,\n\t\t\n\t\t\n\t\tFadeIn = function(self, name, length)\n\t\t\t__impl_components_animation_fade_in(self.index, name, length)\n\t\tend,\n\t\t\n\t\tFadeOut = function(self, name, length)\n\t\t\t__impl_components_animation_fade_out(self.index, name, length)\n\t\tend,\n\t\t\n\t\t\n\t\tSetPause = function(self, name, pause)\n\t\t\t__impl_components_animation_set_pause(self.index, name, pause)\n\t\tend,\n\t\t\n\t\tSetFade = function(self, name, fade_in, fade_length)\n\t\t\t__impl_components_animation_set_fade(self.index, name, fade_in, fade_length)\n\t\tend,\n\t\t\n\t\tSetFrame = function(self, name, frame)\n\t\t\t__impl_components_animation_set_frame(self.index, name, frame)\n\t\tend,\n\t\t\n\t\t\n\t\tInit = function(self)\n\t\t\t__impl_components_animation_init(self.index)\n\t\tend,\n\t\t\n\t\tDelete = function(self)\n\t\t\t__impl_components_animation_delete(self.index)\n\t\t\tself.index = nil\n\t\tend\n\t}\n}\n\nfunction tram.components.Animation()\n\tlocal component_index = __impl_components_animation_make()\n\t\n\tif (component_index == -1) then\n\t\treturn nil\n\tend\n\t\n\tlocal component = {}\n\tcomponent.index = component_index\n\t\n\tsetmetatable(component, tram.render._metatable_animationcomponent)\n\t\n\treturn component\nend\n\n\nprint(\"\\nFinished loading Lua API\\n\\n\")"
  },
  {
    "path": "scripts/bepis.lua",
    "content": "\n--print(epic_function(420))\n\n--function give_vector(x, y, z)\n--\treturn {x, y, z}\n--end\n\n--tram.render.SetScreenClearColor(tram.render.COLOR_WHITE)\n\n--event = {}\n--event.type = tram.event.GetType(\"my_fancy_event\")\n--event.subtype = 0\n--event.poster = nil\n--event.data = nil\n\n--tram.event.Post(event)\n\n--print(\"VECTOR TSETS!\")\n\n--vec1 = tram.math.vec3(1, 1, 1)\n--vec2 = tram.math.vec3(2, 2, 2)\n--vec3 = vec1 + vec2\n\n--print(vec1)\n--print(vec2)\n--print(vec3)\n--print(vec1 + 69)\n\n--if toggle == nil then toggle = false end\n\n--toggle = not toggle\n\n--msg = {}\n--msg.type = tram.message.SET_ANIMATION\n--msg.sender = 0\n--msg.receiver = tram.entity.Find(\"mongus\"):GetID()\n\n--if toggle then\n--\tmsg.data = \"mongus-jump\"\n--\ttram.message.Send(msg)\n--else\n--\tmsg.data = \"mongus-run\"\n--\ttram.message.Send(msg)\n--end\n\n--mongus = tram.render.animation.Find(\"mongus-run\")\n\n--print(\"mongus: \", mongus)\n--print(\"name: \", mongus:GetName())\n\n\n\nmodel = tram.components.Render()\nmodel:SetModel(\"mongus\")\nmodel:Init()\n\nplayer = tram.components.Animation()\nplayer:SetModel(\"mongus\")\nplayer:Init()\n\nmodel:SetArmature(player)\n\nprint(\"is playing bef \", player:IsPlaying(\"mongus-run\"))\nplayer:Play(\"mongus-run\", 100)\nprint(\"is playing now \", player:IsPlaying(\"mongus-run\"))\n\ntram.render.SetViewPosition(tram.math.vec3(0, 0, 0))\ntram.render.SetViewPosition(tram.math.vec3(0, 0, 0), 0)\ntram.render.SetViewPosition(tram.math.vec3(0, 0, 0), 1)\ntram.render.SetViewPosition(tram.math.vec3(0, 0, 0), 2)\ntram.render.SetViewPosition(tram.math.vec3(0, 0, 0), 3)\n\n--tram.ui.SetInputState(tram.ui.STATE_MENU_OPEN)\n\n--tram.ui.BindKeyboardKey(tram.ui.KEY_J, tram.ui.KEY_ACTION_JUMP)\n\n--tram.ui.BindKeyboardKey(tram.ui.KEY_J, function() print(\"chyungine!!\") end)\n\n\n--tram.ui.SetWindowSize(100, 500)\n--tram.ui.SetCursor(tram.ui.CURSOR_TEXT)\n\n--print(\"width:\", tram.ui.GetScreenWidth())\n--print(\"height:\", tram.ui.GetScreenHeight())"
  },
  {
    "path": "scripts/init.lua",
    "content": "print(\"\\n\\n\\n SCRIPT INIT \\n\\n\\n\")\n\n--entity = {}\n--tram.entity.Init(entity)\n\n--print(\"ID:\", entity:GetID())\n--print(\"Name:\", entity:GetName())\n\n\nfunction crate2_c(props)\n\tprops[0] = \"kadbusest\"\n\n\tcrate = tram.entity.New(\"crate\", \"crate\", props)\n\n\tcrate.OnLoad = function()\n\t\tprint(\"\\n\\n\\nCRATE2 LOADING\\n\\n\\n\")\n\tend\n\n\treturn crate:GetID()\nend\n\nfunction crate2_d()\n\tprint(\"destructing crate 2\")\nend\n\nmodel_prop = {}\nmodel_prop.type = tram.type.NAME\nmodel_prop.flag = 0\n\ncollmodel_prop = {}\ncollmodel_prop.type = tram.type.NAME\ncollmodel_prop.flag = 0\n\nprop_def = {}\nprop_def[0] = model_prop\nprop_def[1] = collmodel_prop\n\ntram.entity.Register(\"crate\", prop_def, crate2_c, crate2_d)\n\n\n\nprops = {}\n\nprops.id = 0\nprops.name = \"chungus-crate\"\nprops.flags = 0\nprops.location = tram.math.vec3(0.0, 10.0, 0.0)\nprops.rotation = tram.math.quat(tram.math.vec3(0.0, 0.0, 0.0))\n\nprops[0] = \"crate_ligma\"\nprops[1] = \"crate\"\n\ncrate = tram.entity.New(\"crate-ext\", \"crate\", props)\n\ncrate.OnLoad = function()\n\tprint(\"Extended immortal crate. Loading...\")\nend\n\ncrate.OnMessageHandler = function(self, message)\n\tprint(\"Message received:\", tram.message.GetName(message.type))\n\t\n\t-- do not hand kill messages over to the base class\n\tif message.type == tram.message.KILL then\n\t\treturn false\n\tend\n\t\n\t-- allow base class to receive all other messages\n\treturn true\nend\n\nprint(\"it has been newed.\")\nprint(\"my new creat: \", crate:GetName())\nprint(\"loding now\")\ncrate:Load()\nprint(\"yippee.\")\n\n\n\n\n\nprint(\"registering new event!\")\nevent = tram.event.Register(\"my_fancy_event\")\n--event = tram.event.KEYPRESS\nprint(event)\nprint(tram.event.GetType(\"my_fancy_event\"))\nprint(tram.event.GetName(event))\n\nlistener = 0\n\ncountdown = 3\n\n\nchamberpot = tram.components.Render()\nchamberpot:SetModel(\"chamberpot2\")\n--chamberpot:Init()\n\n--lamp = tram.components.Light()\n--lamp:SetColor(tram.math.vec3(10, 10, 10))\n--lamp:SetLocation(tram.math.vec3(0.1, 0.1, 0.1))\n--lamp:Init()\n\nfunction event_function(event)\n\tprint(\"Hello! this is an event\")\n\tprint(\"Type of this event is \", tram.event.GetName(event.type))\n\t\n\tcountdown = countdown - 1\n\t\n\tif countdown == 0 then\n\t\tprint(\"deleting!\")\n\t\ttram.event.RemoveListener(listener)\n\tend\nend\n\nlistener = tram.event.AddListener(event, event_function)\n\n\nlocal mark_pos = tram.math.vec3(0, 1, 0)\n\nfunction tick_function()\n\tcrate = tram.entity.Find(\"nukta\")\n\t\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_J) then\n\t\tprint(\"JJJJJ\")\n\t\tmark_pos = mark_pos + tram.math.vec3(0.05, 0, 0)\n\tend\n\t\n\tif tram.ui.PollKeyboardKey(tram.ui.KEY_K) then\n\t\tprint(\"KKKKK\")\n\t\tmark_pos = mark_pos - tram.math.vec3(0.05, 0, 0)\n\tend\n\t\n\t\n\t--tram.render.AddLineMarker(mark_pos, tram.render.COLOR_WHITE)\n\t\n\t\n\tlocal pudding = chamberpot:GetLocation()\n\tpudding.y = 3.25 + 0.5 * math.sin(tram.GetTickTime())\n\tchamberpot:SetLocation(pudding)\n\t\n\tif crate == nil then\n\t\t--print(\"O NO WHERE CRATE\")\n\telse\n\t\tlocation = crate:GetLocation()\n\t\tlocation.y = 1.25 + 0.5 * math.sin(tram.GetTickTime())\n\t\tcrate:SetLocation(location)\n\n\t\t\n\t\t--location:poot()\n\t\t--print(location)\n\t\t\n\t\t--rotation = crate:GetRotation()\n\t\t--print(rotation)\n\t\t--rotation = tram.math.quat(tram.math.vec3(0, tram.GetTickTime(), 0))\n\t\t--print(rotation)\n\t\t\n\t\tlocal rotation = crate:GetRotation()\n\t\tlocal turn = tram.math.quat(tram.math.vec3(0, 0.01, 0))\n\t\t\n\t\t--print(turn)\n\t\t--print(rotation)\n\t\t\n\t\tlocal new_rotation = rotation * turn\n\t\t\n\t\t--print(new_rotation)\n\t\t\n\t\t\n\t\tcrate:SetRotation(new_rotation)\n\tend\nend\n\ntram.event.AddListener(tram.event.TICK, tick_function)\n"
  },
  {
    "path": "shaders/gles3/1normal_static.frag",
    "content": "#version 300 es\n\nprecision highp float;\n\nout vec4 fragColor;\n  \nin vec2 vertUV;\nin vec2 vertLightUV;\nin vec3 vertColor;\nflat in uint texIndex;\n\nuniform sampler2D sampler[16];\n\nvoid main()\n{\n\tvec4 texcolor;\n\t\n\tswitch (texIndex) {\n\tcase 0u:\n\t\ttexcolor = texture(sampler[0], vertUV);\n\t\tbreak;\n\tcase 1u:\n\t\ttexcolor = texture(sampler[1], vertUV);\n\t\tbreak;\n\tcase 2u:\n\t\ttexcolor = texture(sampler[2], vertUV);\n\t\tbreak;\n\tcase 3u:\n\t\ttexcolor = texture(sampler[3], vertUV);\n\t\tbreak;\n\tcase 4u:\n\t\ttexcolor = texture(sampler[4], vertUV);\n\t\tbreak;\n\tcase 5u:\n\t\ttexcolor = texture(sampler[5], vertUV);\n\t\tbreak;\n\tcase 6u:\n\t\ttexcolor = texture(sampler[6], vertUV);\n\t\tbreak;\n\tcase 7u:\n\t\ttexcolor = texture(sampler[7], vertUV);\n\t\tbreak;\n\tcase 8u:\n\t\ttexcolor = texture(sampler[8], vertUV);\n\t\tbreak;\n\tcase 9u:\n\t\ttexcolor = texture(sampler[9], vertUV);\n\t\tbreak;\n\tcase 10u:\n\t\ttexcolor = texture(sampler[10], vertUV);\n\t\tbreak;\n\tcase 11u:\n\t\ttexcolor = texture(sampler[11], vertUV);\n\t\tbreak;\n\tcase 12u:\n\t\ttexcolor = texture(sampler[12], vertUV);\n\t\tbreak;\n\tcase 13u:\n\t\ttexcolor = texture(sampler[13], vertUV);\n\t\tbreak;\n\tcase 14u:\n\t\ttexcolor = texture(sampler[14], vertUV);\n\t\tbreak;\n\tcase 15u:\n\t\ttexcolor = texture(sampler[15], vertUV);\n\t\tbreak;\t\t\t\n\t}\n\n    fragColor = texcolor * texture(sampler[15], vertLightUV) * vec4(vertColor, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/1normal_static.vert",
    "content": "#version 300 es\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\nlayout (location = 1) in vec3 Normal;\nlayout (location = 2) in vec2 VertUV;\nlayout (location = 3) in vec2 VertLightUV;\nlayout (location = 4) in uint TexIndex;\n\nlayout (std140) uniform Matrices\n{\n    mat4 projection;\n    mat4 view;\n};\n\nlayout (std140) uniform ModelMatrices\n{\n    mat4 model;\n\tuvec4 modellights;\n\tvec3 sundir;\n\tvec3 suncolor;\n\tvec4 ambientcolor;\n\tfloat time;\n\tfloat sunweight;\n\tfloat screenwidth;\n\tfloat screenheight;\n};\n\nout vec2 vertUV;\nout vec2 vertLightUV;\nout vec3 vertColor;\nflat out uint texIndex;\n\n\n\n\nvoid main()\n{\n    gl_Position = projection * view * model * vec4(Position, 1.0);\n\tvec3 nPos = normalize(vec3(model * vec4(Normal, 0.0)));\n\tvec3 lightColor = vec3(ambientcolor);\n\tlightColor += suncolor * max(dot(nPos, normalize(sundir)), 0.0);\n\tlightColor *= sunweight;\n\t\n    vertUV = VertUV;\n\ttexIndex = TexIndex;\n\tvertLightUV = VertLightUV;\n\tvertColor = lightColor + (1.0 - sunweight);\n}"
  },
  {
    "path": "shaders/gles3/bright_static.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tvec4 texcolor;\n\t\n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\ttexcolor = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\ttexcolor = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\ttexcolor = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\ttexcolor = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\ttexcolor = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\ttexcolor = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\ttexcolor = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\ttexcolor = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\ttexcolor = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\ttexcolor = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\ttexcolor = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\ttexcolor = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\ttexcolor = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\ttexcolor = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\ttexcolor = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\ttexcolor = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\n\n    fragment = texcolor * vec4(1.0, 1.0, 1.0, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/glyph.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tvec4 sampled_color;\n\n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\tsampled_color = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tsampled_color = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tsampled_color = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tsampled_color = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tsampled_color = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tsampled_color = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tsampled_color = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tsampled_color = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tsampled_color = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tsampled_color = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tsampled_color = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tsampled_color = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tsampled_color = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tsampled_color = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tsampled_color = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tsampled_color = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\n\t\n\t\n\tif (sampled_color.w < 1.0) discard;\n\t\n\tfragment = sampled_color * vec4(vert_color, 1.0);\n}\n"
  },
  {
    "path": "shaders/gles3/glyph.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec2 TexCoord;\t\t// texture coordinate\nlayout (location = 2) in vec3 VertColor;\t// vertex color\nlayout (location = 5) in uint Texture;\t\t// texture index\n\nout vec2 vert_uv;\nout vec3 vert_color;\nflat out uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n};\n\nvoid main() {\n\t// the Position variable actually contains the position in normal GUI\n\t// coordinates, where each unit is one pixel and the origin is in the\n\t// upper left corner.\n\n\t// we first need to convert these coordinates to OpenGL coordinates\n\tfloat pos_x = (round(Position.x) / (screen_width / 2.0)) - 1.0;\n\tfloat pos_y = (round(Position.y) / (screen_height / -2.0)) + 1.0;\n\n\t// then we compute the depth for correct ordering\n\tfloat depth = -0.5 - (Position.z / 128.0);\n\t\n\t// then we can output these coordinates\n    gl_Position = vec4(pos_x, pos_y, depth, 1.0);\n\t\n\t// and scale the UVs based on the texture size\n\tivec2 tex_size;\n\t\n\tswitch (Texture) {\n\tcase 0u:\n\t\ttex_size = textureSize(sampler[0], 0);\n\t\tbreak;\n\tcase 1u:\n\t\ttex_size = textureSize(sampler[1], 0);\n\t\tbreak;\n\tcase 2u:\n\t\ttex_size = textureSize(sampler[2], 0);\n\t\tbreak;\n\tcase 3u:\n\t\ttex_size = textureSize(sampler[3], 0);\n\t\tbreak;\n\tcase 4u:\n\t\ttex_size = textureSize(sampler[4], 0);\n\t\tbreak;\n\tcase 5u:\n\t\ttex_size = textureSize(sampler[5], 0);\n\t\tbreak;\n\tcase 6u:\n\t\ttex_size = textureSize(sampler[6], 0);\n\t\tbreak;\n\tcase 7u:\n\t\ttex_size = textureSize(sampler[7], 0);\n\t\tbreak;\n\tcase 8u:\n\t\ttex_size = textureSize(sampler[8], 0);\n\t\tbreak;\n\tcase 9u:\n\t\ttex_size = textureSize(sampler[9], 0);\n\t\tbreak;\n\tcase 10u:\n\t\ttex_size = textureSize(sampler[10], 0);\n\t\tbreak;\n\tcase 11u:\n\t\ttex_size = textureSize(sampler[11], 0);\n\t\tbreak;\n\tcase 12u:\n\t\ttex_size = textureSize(sampler[12], 0);\n\t\tbreak;\n\tcase 13u:\n\t\ttex_size = textureSize(sampler[13], 0);\n\t\tbreak;\n\tcase 14u:\n\t\ttex_size = textureSize(sampler[14], 0);\n\t\tbreak;\n\tcase 15u:\n\t\ttex_size = textureSize(sampler[15], 0);\n\t\tbreak;\t\t\t\n\t}\n\t\n\t\n\tvert_uv = vec2(TexCoord.x/float(tex_size.x), TexCoord.y/float(-tex_size.y));\n\t\t\n\tvert_color = VertColor;\n\tvert_tex_index = Texture;\n}"
  },
  {
    "path": "shaders/gles3/line.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec3 vert_color;\n\nvoid main() {\n    fragment = vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/line.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex positon\nlayout (location = 1) in vec3 VertColor;\t// vertex color\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nout vec3 vert_color;\n\nvoid main() {\n    gl_Position = projection * view * vec4(Position, 1.0);\n\t\n\tvert_color = VertColor;\n}"
  },
  {
    "path": "shaders/gles3/normal_dynamic.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tvec4 texcolor;\n\t\n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\ttexcolor = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\ttexcolor = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\ttexcolor = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\ttexcolor = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\ttexcolor = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\ttexcolor = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\ttexcolor = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\ttexcolor = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\ttexcolor = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\ttexcolor = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\ttexcolor = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\ttexcolor = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\ttexcolor = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\ttexcolor = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\ttexcolor = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\ttexcolor = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\n    fragment = texcolor * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/normal_dynamic.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec3 Normal;\t\t// vertex normal\nlayout (location = 2) in vec2 VertUV;\t\t// vertex texture coordinate\nlayout (location = 3) in uvec4 BoneIndex;\t// bone index in pose matrix list\nlayout (location = 4) in vec4 BoneWeight;\t// bone weight\nlayout (location = 5) in uint TexIndex;\t\t// texture index\n\n// what the fuck\nstruct Light {\n\tvec4 aa; // light position\n\tvec4 bb; // light color\n\tvec4 cc;\n\tvec4 dd;\n};\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n};\n\nlayout (std140) uniform Lights {\n\tLight scene_lights[50];\n};\n\nlayout (std140) uniform Bones {\n\tmat4 bone[30];\n};\n\nout vec3 vert_color;\nout vec2 vert_uv;\nflat out uint vert_tex_index;\n\nvoid main() {\n\t// transform vertex with each pose matrix\n\tvec4 posed1 = BoneWeight.x * bone[BoneIndex.x] * vec4(Position, 1.0);\n\tvec4 posed2 = BoneWeight.y * bone[BoneIndex.y] * vec4(Position, 1.0);\n\tvec4 posed3 = BoneWeight.z * bone[BoneIndex.z] * vec4(Position, 1.0);\n\tvec4 posed4 = BoneWeight.w * bone[BoneIndex.w] * vec4(Position, 1.0);\n\t\n\t// get final vertex posed position in model space\n\tvec4 posed = posed1 + posed2 + posed3 + posed4;\n\t\n\t// transform to world space\n    gl_Position = projection * view * model * posed;\n\t\n\t\n\t// do the same, but with the normal vector\n\tvec4 normal1 = BoneWeight.x * bone[BoneIndex.x] * vec4(Normal, 1.0);\n\tvec4 normal2 = BoneWeight.y * bone[BoneIndex.y] * vec4(Normal, 1.0);\n\tvec4 normal3 = BoneWeight.z * bone[BoneIndex.z] * vec4(Normal, 1.0);\n\tvec4 normal4 = BoneWeight.w * bone[BoneIndex.w] * vec4(Normal, 1.0);\n\t\n\t// get posed normal in model space\n\tvec4 normal = normal1 + normal2 + normal3 + normal4;\n\t\n\t// get both vertex position and vertex normal into world space\n\tvec3 v = vec3(model * posed);\n\tvec3 n = normalize(vec3(model * vec4(normal.xyz, 0.0)));\n\t\n\t// light math\n\tfloat distance1 = length(vec3(scene_lights[model_lights.x].aa) - v);\n\tfloat distance2 = length(vec3(scene_lights[model_lights.y].aa) - v);\n\tfloat distance3 = length(vec3(scene_lights[model_lights.z].aa) - v);\n\tfloat distance4 = length(vec3(scene_lights[model_lights.w].aa) - v);\n\t\n\t// ambrient color light math\n\tvert_color = vec3(ambient_color);\n\tvert_color += sun_color * max(dot(n, normalize(sun_direction)), 0.0);\n\tvert_color *= sun_weight;\n\t\n\t// more light math\n\tvert_color += vec3(scene_lights[model_lights.x].bb) * max(dot(n, normalize(vec3(scene_lights[model_lights.x].aa) - v)), 0.0) * (1.0 / (1.0 + 0.09 * distance1 + 0.032 * (distance1 * distance1)));\n\tvert_color += vec3(scene_lights[model_lights.y].bb) * max(dot(n, normalize(vec3(scene_lights[model_lights.y].aa) - v)), 0.0)* (1.0 / (1.0 + 0.09 * distance2 + 0.032 * (distance2 * distance2)));\n\tvert_color += vec3(scene_lights[model_lights.z].bb) * max(dot(n, normalize(vec3(scene_lights[model_lights.z].aa) - v)), 0.0)* (1.0 / (1.0 + 0.09 * distance3 + 0.032 * (distance3 * distance3)));\n\tvert_color += vec3(scene_lights[model_lights.w].bb) * max(dot(n, normalize(vec3(scene_lights[model_lights.w].aa) - v)), 0.0)* (1.0 / (1.0 + 0.09 * distance4 + 0.032 * (distance4 * distance4)));\n\t\n\t// do specular stuff\n\tvec3 view_dir = normalize(view_pos - v);\n\tfloat specular1 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.x].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular2 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.y].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular3 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.z].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular4 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.w].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tvert_color += specular[TexIndex].x * specular1 * vec3(scene_lights[model_lights.x].bb);\n\tvert_color += specular[TexIndex].x * specular2 * vec3(scene_lights[model_lights.y].bb);\n\tvert_color += specular[TexIndex].x * specular3 * vec3(scene_lights[model_lights.z].bb);\n\tvert_color += specular[TexIndex].x * specular4 * vec3(scene_lights[model_lights.w].bb);\n\t\n\t// add material color\n\tvert_color *= vec3(colors[TexIndex]);\n\t\n    vert_uv = VertUV;\n\tvert_tex_index = TexIndex;\n}"
  },
  {
    "path": "shaders/gles3/normal_dynamic_alpha.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\tfragment = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tfragment = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tfragment = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tfragment = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tfragment = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tfragment = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tfragment = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tfragment = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tfragment = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tfragment = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tfragment = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tfragment = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tfragment = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tfragment = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tfragment = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tfragment = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\t\n\tif (fragment.a < 0.5) discard;\n\t\n    fragment *= vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/normal_sprite.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n    \n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\tfragment = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tfragment = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tfragment = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tfragment = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tfragment = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tfragment = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tfragment = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tfragment = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tfragment = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tfragment = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tfragment = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tfragment = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tfragment = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tfragment = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tfragment = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tfragment = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\t\n\tif (fragment.w < 0.9) discard;\n}"
  },
  {
    "path": "shaders/gles3/normal_sprite.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 3) in vec2 VOffset;\t\t// screen space transform\nlayout (location = 1) in vec2 VertUV;\t\t// texture coordinates\nlayout (location = 4) in float Verticality; // how vertical should a sprite be\nlayout (location = 5) in uint TexIndex;\t\t// texture index\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n};\n\nout vec2 vert_uv;\nflat out uint vert_tex_index;\n\nvoid main() {\n\tvec4 screen_pos = projection * view * model * vec4(Position, 1.0);\n\t\n    gl_Position = screen_pos + vec4(VOffset, 0.0, 0.0);\n\n    vert_uv = VertUV;\n\tvert_tex_index = TexIndex;\n}"
  },
  {
    "path": "shaders/gles3/normal_static.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\nswitch (vert_tex_index) {\n\tcase 0u:\n\t\tfragment = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tfragment = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tfragment = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tfragment = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tfragment = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tfragment = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tfragment = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tfragment = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tfragment = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tfragment = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tfragment = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tfragment = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tfragment = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tfragment = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tfragment = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tfragment = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\n\n    fragment *= texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/normal_static.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec3 Normal;\t\t// vertex normal\nlayout (location = 2) in vec2 VertUV;\t\t// texture coordinate\nlayout (location = 3) in vec2 VertLightUV;\t// lightmap coordinate\nlayout (location = 4) in uint TexIndex;\t\t// texture index\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n};\n\nout vec2 vert_uv;\nout vec2 vert_light_uv;\nout vec3 vert_color;\nflat out uint vert_tex_index;\n\nvoid main() {\n    gl_Position = projection * view * model * vec4(Position, 1.0);\n\t\n\tvec3 n = normalize(vec3(model * vec4(Normal, 0.0)));\n\t\n\tvert_color = vec3(ambient_color);\n\tvert_color += sun_color * max(dot(n, normalize(sun_direction)), 0.0);\n\tvert_color *= sun_weight;\n\tvert_color += 1.0 - sun_weight;\n\t\n    vert_uv = VertUV;\n\tvert_tex_index = TexIndex;\n\tvert_light_uv = VertLightUV;\n}"
  },
  {
    "path": "shaders/gles3/normal_static_alpha.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tswitch (vert_tex_index) {\n\tcase 0u:\n\t\tfragment = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tfragment = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tfragment = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tfragment = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tfragment = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tfragment = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tfragment = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tfragment = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tfragment = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tfragment = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tfragment = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tfragment = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tfragment = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tfragment = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tfragment = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tfragment = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\t\n\tif (fragment.a < 0.5) discard;\n\t\n\tfragment *= texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/normal_water.frag",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\nswitch (vert_tex_index) {\n\tcase 0u:\n\t\tfragment = texture(sampler[0], vert_uv);\n\t\tbreak;\n\tcase 1u:\n\t\tfragment = texture(sampler[1], vert_uv);\n\t\tbreak;\n\tcase 2u:\n\t\tfragment = texture(sampler[2], vert_uv);\n\t\tbreak;\n\tcase 3u:\n\t\tfragment = texture(sampler[3], vert_uv);\n\t\tbreak;\n\tcase 4u:\n\t\tfragment = texture(sampler[4], vert_uv);\n\t\tbreak;\n\tcase 5u:\n\t\tfragment = texture(sampler[5], vert_uv);\n\t\tbreak;\n\tcase 6u:\n\t\tfragment = texture(sampler[6], vert_uv);\n\t\tbreak;\n\tcase 7u:\n\t\tfragment = texture(sampler[7], vert_uv);\n\t\tbreak;\n\tcase 8u:\n\t\tfragment = texture(sampler[8], vert_uv);\n\t\tbreak;\n\tcase 9u:\n\t\tfragment = texture(sampler[9], vert_uv);\n\t\tbreak;\n\tcase 10u:\n\t\tfragment = texture(sampler[10], vert_uv);\n\t\tbreak;\n\tcase 11u:\n\t\tfragment = texture(sampler[11], vert_uv);\n\t\tbreak;\n\tcase 12u:\n\t\tfragment = texture(sampler[12], vert_uv);\n\t\tbreak;\n\tcase 13u:\n\t\tfragment = texture(sampler[13], vert_uv);\n\t\tbreak;\n\tcase 14u:\n\t\tfragment = texture(sampler[14], vert_uv);\n\t\tbreak;\n\tcase 15u:\n\t\tfragment = texture(sampler[15], vert_uv);\n\t\tbreak;\t\t\t\n\t}\n\n\n    fragment *= texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/gles3/poopwater_static.vert",
    "content": "#version 300 es\n\n// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\nprecision highp float;\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec3 Normal;\t\t// vertex normal\nlayout (location = 2) in vec2 VertUV;\t\t// texture coordinate\nlayout (location = 3) in vec2 VertLightUV;\t// lightmap coordinate\nlayout (location = 4) in uint TexIndex;\t\t// texture index\n\nstruct Light {\n\tvec4 aa;\n\tvec4 bb;\n\tvec4 cc;\n\tvec4 dd;\n};\n\nlayout (std140) uniform Lights {\n\tLight scene_lights[50];\n};\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n};\n\nout vec2 vert_uv;\nout vec2 vert_light_uv;\nout vec3 vert_color;\nflat out uint vert_tex_index;\n\nvoid main() {\n\tvec4 world_position = model * vec4(Position, 1.0);\n\n\tworld_position.y += 0.1 * (sin(time + world_position.x)+1.0);\n\t\n    gl_Position = projection * view * world_position;\n\t\n\t\n\t\n\t//vec3 n = normalize(vec3(model * vec4(Normal, 0.0)));\n\tvec3 n = vec3(model * vec4(Normal, 0.0));\n\tvec3 v = vec3(world_position);\n\t\n\tn.x += 0.333 * sin(time + world_position.x);\n\tn = normalize(n);\n\t\n\tvert_color = vec3(ambient_color);\n\tvert_color += sun_color * max(dot(n, normalize(sun_direction)), 0.0);\n\tvert_color *= sun_weight;\n\tvert_color += 1.0 - sun_weight;\n\t\n\t\n\tvec3 view_dir = normalize(view_pos - v);\n\tfloat specular1 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.x].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular2 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.y].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular3 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.z].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular4 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.w].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tvert_color += specular[TexIndex].x * specular1 * vec3(scene_lights[model_lights.x].bb);\n\tvert_color += specular[TexIndex].x * specular2 * vec3(scene_lights[model_lights.y].bb);\n\tvert_color += specular[TexIndex].x * specular3 * vec3(scene_lights[model_lights.z].bb);\n\tvert_color += specular[TexIndex].x * specular4 * vec3(scene_lights[model_lights.w].bb);\n\t\n    vert_uv = VertUV + 0.1 * vec2(sin(time + 0.351 * world_position.x), cos(time + 0.351 * world_position.z));\n\tvert_tex_index = TexIndex;\n\tvert_light_uv = VertLightUV;\n}"
  },
  {
    "path": "shaders/gles3/text.frag",
    "content": "#version 300 es\n\nprecision highp float;\n\nout vec4 fragColor;\n\nin vec2 vertUV;\nin vec3 color;\nin vec2 cscale;\nin float thick;\nflat in uint texindex;\n\nuniform sampler2D sampler[16];\n\nvoid main()\n{\n\t/*vec4 t = texture(sampler[texindex], vertUV);\n\tvec2 c = vec2(max(min(t.r, t.g), min(max(t.r, t.g), t.b)));\n\tfloat scale = min(cscale.x, cscale.y);\n\tc.y = texture(sampler[texindex], vertUV + vec2(-2.0/256.0/scale/scale, 2.0/256.0/scale/scale)).w;\n\tc = scale * (c - 0.5);\n\tc.x += thick;\n\tc = clamp(c + 0.5, 0.0, 1.0);\n\t//if (c.x == 0 || c.y == 0) discard;\n\tif (c.x == 0) discard;\n\tfragColor = vec4(mix(vec3(0.0, 0.0, 0.0), color * 2.0, c.x), 1.0);*/\n\tfragColor = vec4(1.0, 1.0, 1.0, 1.0);\n}\n"
  },
  {
    "path": "shaders/gles3/text.vert",
    "content": "#version 300 es\n\n// idk if this shader is even used anymore\n\n// probably not\n\nprecision highp float;\n\nlayout (location = 0) in vec2 Position;\nlayout (location = 1) in vec2 TexCoord;\nlayout (location = 2) in vec3 VertColor;\nlayout (location = 3) in vec2 Scale;\nlayout (location = 4) in float Thickness;\nlayout (location = 5) in uint Texture;\n\nout vec2 vertUV;\nout vec3 color;\nout vec2 cscale;\nout float thick;\nflat out uint texindex;\n\nvoid main()\n{\n    gl_Position = vec4((Position.x / 320.0) - 1.0, (Position.y / -240.0) + 1.0, -0.5, 1.0);\n\tcolor = VertColor;\n\tvertUV = vec2(TexCoord.x / 256.0, TexCoord.y / -256.0);\n\tcscale = Scale;\n\ttexindex = Texture;\n\tthick = Thickness;\n}"
  },
  {
    "path": "shaders/opengl4/glyph.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tvec4 sampled_color = texture(sampler[vert_tex_index], vert_uv);\n\t\n\tif (sampled_color.w < 1.0) discard;\n\t\n\tfragment = sampled_color * vec4(vert_color, 1.0);\n}\n"
  },
  {
    "path": "shaders/opengl4/glyph.vert",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec2 TexCoord;\t\t// texture coordinate\nlayout (location = 2) in vec3 VertColor;\t// vertex color\nlayout (location = 5) in uint Texture;\t\t// texture index\n\nout vec2 vert_uv;\nout vec3 vert_color;\nflat out uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n\tvec4 texture_transforms[15];\n};\n\nvoid main() {\n\t// the Position variable actually contains the position in normal GUI\n\t// coordinates, where each unit is one pixel and the origin is in the\n\t// upper left corner.\n\n\t// we first need to convert these coordinates to OpenGL coordinates\n\tfloat pos_x = (round(Position.x) / (screen_width / 2.0)) - 1.0;\n\tfloat pos_y = (round(Position.y) / (screen_height / -2.0)) + 1.0;\n\n\t// then we compute the depth for correct ordering\n\tfloat depth = -0.5 - (Position.z / 128.0);\n\t\n\t// then we can output these coordinates\n    gl_Position = vec4(pos_x, pos_y, depth, 1.0);\n\t\n\t// and scale the UVs based on the texture size\n\tvec2 tex_size = textureSize(sampler[Texture], 0);\n\tvert_uv = vec2(TexCoord.x/tex_size.x, TexCoord.y/-tex_size.y);\n\t\t\n\tvert_color = VertColor;\n\tvert_tex_index = Texture;\n}"
  },
  {
    "path": "shaders/opengl4/line.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n  \nin vec3 vert_color;\n\nvoid main() {\n    fragment = vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/opengl4/line.vert",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nlayout (location = 0) in vec3 Position;\t\t// vertex positon\nlayout (location = 1) in vec3 VertColor;\t// vertex color\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nout vec3 vert_color;\n\nvoid main() {\n    gl_Position = projection * view * vec4(Position, 1.0);\n\t\n\tvert_color = VertColor;\n}"
  },
  {
    "path": "shaders/opengl4/normal_dynamic.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nin vec3 vert_color_add;\nin vec3 vert_reflection;\nin float vert_reflectivity;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n    fragment = texture(sampler[vert_tex_index], vert_uv) * vec4(vert_color, 1.0);\n    //fragment = vec4(0.0,  0.0, 0.0, 1.0);\n\tfragment += vec4(vert_color_add, 1.0);\n\t\n\tvec2 reflection_coords = vec2(vert_reflection);\n\tif (vert_reflection.z > 0.0) reflection_coords.x += 0.5;\n\t\n\tfragment += vert_reflectivity * texture(sampler[15], reflection_coords);\n}"
  },
  {
    "path": "shaders/opengl4/normal_dynamic.vert",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec3 Normal;\t\t// vertex normal\nlayout (location = 2) in vec2 VertUV;\t\t// vertex texture coordinate\nlayout (location = 3) in ivec4 BoneIndex;\t// bone index in pose matrix list\nlayout (location = 4) in vec4 BoneWeight;\t// bone weight\nlayout (location = 5) in uint TexIndex;\t\t// texture index\n\n// what the fuck\nstruct Light {\n\tvec4 aa; // light position\n\tvec4 bb; // light color\n\tvec4 cc;\n\tvec4 dd;\n};\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n\tvec3 view_pos;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n\tvec4 texture_transforms[15];\n\tvec3 l00;\n    vec3 l1m1; vec3 l10; vec3 l11;\n    vec3 l2m2; vec3 l2m1; vec3 l20; vec3 l21; vec3 l22;\n};\n\nlayout (std140) uniform Lights {\n\tLight scene_lights[50];\n};\n\nlayout (std140) uniform Bones {\n\tmat4 bone[30];\n};\n\nout vec3 vert_color;\nout vec3 vert_color_add;\nout vec2 vert_uv;\nout vec3 vert_reflection;\nout float vert_reflectivity;\nflat out uint vert_tex_index;\n\n// spherical harmonic consts\n// http://graphics.stanford.edu/papers/envmap/envmap.pdf\nconst float c1 = 0.429043;\nconst float c2 = 0.511664;\nconst float c3 = 0.743125;\nconst float c4 = 0.886227;\nconst float c5 = 0.247708;\n\nvoid main() {\n\t// transform vertex with each pose matrix\n\tvec4 posed1 = BoneWeight.x * bone[BoneIndex.x] * vec4(Position, 1.0);\n\tvec4 posed2 = BoneWeight.y * bone[BoneIndex.y] * vec4(Position, 1.0);\n\tvec4 posed3 = BoneWeight.z * bone[BoneIndex.z] * vec4(Position, 1.0);\n\tvec4 posed4 = BoneWeight.w * bone[BoneIndex.w] * vec4(Position, 1.0);\n\t\n\t// get final vertex posed position in model space\n\tvec4 posed = posed1 + posed2 + posed3 + posed4;\n\t\n\t// transform to world space\n    gl_Position = projection * view * model * posed;\n\t\n\t\n\t// do the same, but with the normal vector\n\tvec4 normal1 = BoneWeight.x * bone[BoneIndex.x] * vec4(Normal, 1.0);\n\tvec4 normal2 = BoneWeight.y * bone[BoneIndex.y] * vec4(Normal, 1.0);\n\tvec4 normal3 = BoneWeight.z * bone[BoneIndex.z] * vec4(Normal, 1.0);\n\tvec4 normal4 = BoneWeight.w * bone[BoneIndex.w] * vec4(Normal, 1.0);\n\t\n\t// get posed normal in model space\n\tvec4 normal = normal1 + normal2 + normal3 + normal4;\n\t\n\t// get both vertex position and vertex normal into world space\n\tvec3 v = vec3(model * posed);\n\tvec3 n = normalize(vec3(model * vec4(normal.xyz, 0.0)));\n\t\n\t// calculate distances to light sources\n\tfloat distance1 = length(vec3(scene_lights[model_lights.x].aa) - v);\n\tfloat distance2 = length(vec3(scene_lights[model_lights.y].aa) - v);\n\tfloat distance3 = length(vec3(scene_lights[model_lights.z].aa) - v);\n\tfloat distance4 = length(vec3(scene_lights[model_lights.w].aa) - v);\n\t\n\t// calculate vertex -> light vectors\n\tvec3 v_to_light1 = normalize(vec3(scene_lights[model_lights.x].aa) - v);\n\tvec3 v_to_light2 = normalize(vec3(scene_lights[model_lights.y].aa) - v);\n\tvec3 v_to_light3 = normalize(vec3(scene_lights[model_lights.z].aa) - v);\n\tvec3 v_to_light4 = normalize(vec3(scene_lights[model_lights.w].aa) - v);\n\t\n\t// calculate light attenuation by distance\n\tfloat attenuation1 = max(dot(n, v_to_light1), 0.0) * (1.0 / (1.0 + 0.09 * distance1 + 0.032 * (distance1 * distance1)));\n\tfloat attenuation2 = max(dot(n, v_to_light2), 0.0) * (1.0 / (1.0 + 0.09 * distance2 + 0.032 * (distance2 * distance2)));\n\tfloat attenuation3 = max(dot(n, v_to_light3), 0.0) * (1.0 / (1.0 + 0.09 * distance3 + 0.032 * (distance3 * distance3)));\n\tfloat attenuation4 = max(dot(n, v_to_light4), 0.0) * (1.0 / (1.0 + 0.09 * distance4 + 0.032 * (distance4 * distance4)));\n\t\n\tfloat directionality1 = clamp(pow(max(dot(vec3(scene_lights[model_lights.x].cc), -v_to_light1), 0.0), scene_lights[model_lights.x].cc.w), 0.0, 1.0);\n\tfloat directionality2 = clamp(pow(max(dot(vec3(scene_lights[model_lights.y].cc), -v_to_light2), 0.0), scene_lights[model_lights.y].cc.w), 0.0, 1.0);\n\tfloat directionality3 = clamp(pow(max(dot(vec3(scene_lights[model_lights.z].cc), -v_to_light3), 0.0), scene_lights[model_lights.z].cc.w), 0.0, 1.0);\n\tfloat directionality4 = clamp(pow(max(dot(vec3(scene_lights[model_lights.w].cc), -v_to_light4), 0.0), scene_lights[model_lights.w].cc.w), 0.0, 1.0);\n\n\t// take in ambient color and add sun color\n\tvert_color = vec3(ambient_color);\n\tvert_color += sun_color * max(dot(n, normalize(sun_direction)), 0.0);\n\tvert_color *= sun_weight;\n\t\n\t// add in light probe lights\n\tvert_color += c1 * l22 * (n.x * n.x - n.y * n.y) + c3 * l20 * n.z * n.z + c4 * l00 - c5 * l20\n\t\t\t\t\t+ 2.0 * c1 * (l2m2 * n.x * n.y + l21 * n.x * n.z + l2m1 * n.y * n.z)\n\t\t\t\t\t+ 2.0 * c2 * (l11 * n.x + l1m1 * n.y + l10 * n.z);\n\t\n\t// add in light colors\n\tvert_color += vec3(scene_lights[model_lights.x].bb) * attenuation1 * directionality1;\n\tvert_color += vec3(scene_lights[model_lights.y].bb) * attenuation2 * directionality2;\n\tvert_color += vec3(scene_lights[model_lights.z].bb) * attenuation3 * directionality3;\n\tvert_color += vec3(scene_lights[model_lights.w].bb) * attenuation4 * directionality4;\n\t\n\t// calculate specular intensities\n\tvec3 view_dir = normalize(view_pos - v);\n\tfloat specular1 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.x].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular2 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.y].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular3 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.z].aa) - v), n)), 0.0), specular[TexIndex].y);\n\tfloat specular4 = pow(max(dot(view_dir, reflect(-normalize(vec3(scene_lights[model_lights.w].aa) - v), n)), 0.0), specular[TexIndex].y);\n\t\n\t// calculate specular color\n\tvec3 specular_color = vec3(0.0, 0.0, 0.0);\n\tspecular_color += specular[TexIndex].x * specular1 * vec3(scene_lights[model_lights.x].bb) * directionality1;\n\tspecular_color += specular[TexIndex].x * specular2 * vec3(scene_lights[model_lights.y].bb) * directionality2;\n\tspecular_color += specular[TexIndex].x * specular3 * vec3(scene_lights[model_lights.z].bb) * directionality3;\n\tspecular_color += specular[TexIndex].x * specular4 * vec3(scene_lights[model_lights.w].bb) * directionality4;\n\t\n\t// add material color\n\tvert_color *= vec3(colors[TexIndex]);\n\t\n\t// add specular color\n\tvert_color_add = mix(vec3(0.0, 0.0, 0.0), specular_color, specular[TexIndex].z);\n\tvert_color += mix(specular_color, vec3(0.0, 0.0, 0.0), specular[TexIndex].z);\n\t\n\t\n\tvec3 reflection = reflect(-view_dir, n);\n\tvert_reflection = vec3(reflection.x /4.0 + 0.25, reflection.y /2.0 + 0.5, reflection.z);\n\tvert_reflectivity = specular[TexIndex].w;\n    vert_uv = VertUV + vec2(texture_transforms[TexIndex]);\n\tvert_tex_index = TexIndex;\n}"
  },
  {
    "path": "shaders/opengl4/normal_dynamic_alpha.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nin vec3 vert_color_add;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tfragment = texture(sampler[vert_tex_index], vert_uv);\n\t\n\tif (fragment.a < 0.5) discard;\n\t\n    fragment *= vec4(vert_color, 1.0);\n\tfragment += vec4(vert_color_add, 1.0);\n}"
  },
  {
    "path": "shaders/opengl4/normal_dynamic_blend.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec3 vert_color;\nin vec3 vert_color_add;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tfragment = texture(sampler[vert_tex_index], vert_uv);\n    fragment *= vec4(vert_color, 1.0);\n\tfragment += vec4(vert_color_add, 0.0);\n}"
  },
  {
    "path": "shaders/opengl4/normal_sprite.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n    fragment = texture(sampler[vert_tex_index], vert_uv);\n\tif (fragment.w < 0.9) discard;\n}"
  },
  {
    "path": "shaders/opengl4/normal_sprite.vert",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 3) in vec2 VOffset;\t\t// screen space transform\nlayout (location = 1) in vec2 VertUV;\t\t// texture coordinates\nlayout (location = 4) in float Verticality; // how vertical should a sprite be\nlayout (location = 5) in uint TexIndex;\t\t// texture index\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n\tvec4 texture_transforms[15];\n};\n\nout vec2 vert_uv;\nflat out uint vert_tex_index;\n\nvoid main() {\n\tvec4 screen_pos = projection * view * model * vec4(Position, 1.0);\n\t\n    gl_Position = screen_pos + vec4(VOffset, 0.0, 0.0);\n\n    vert_uv = VertUV;\n\tvert_tex_index = TexIndex;\n}"
  },
  {
    "path": "shaders/opengl4/normal_static.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n    fragment = texture(sampler[vert_tex_index], vert_uv) * texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/opengl4/normal_static.vert",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nlayout (location = 0) in vec3 Position;\t\t// vertex position\nlayout (location = 1) in vec3 Normal;\t\t// vertex normal\nlayout (location = 2) in vec2 VertUV;\t\t// texture coordinate\nlayout (location = 3) in vec2 VertLightUV;\t// lightmap coordinate\nlayout (location = 4) in uint TexIndex;\t\t// texture index\n\nlayout (std140) uniform Matrices {\n    mat4 projection;\n    mat4 view;\n};\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n\tvec4 texture_transforms[15];\n};\n\nout vec2 vert_uv;\nout vec2 vert_light_uv;\nout vec3 vert_color;\nflat out uint vert_tex_index;\n\nvoid main() {\n    gl_Position = projection * view * model * vec4(Position, 1.0);\n\t\n\tvec3 n = normalize(vec3(model * vec4(Normal, 0.0)));\n\t\n\tvert_color = vec3(ambient_color);\n\tvert_color += sun_color * max(dot(n, normalize(sun_direction)), 0.0);\n\tvert_color *= sun_weight;\n\tvert_color += 1.0 - sun_weight;\n\t\n\t// add material color\n\tvert_color *= vec3(colors[TexIndex]);\n\t\n    vert_uv = VertUV + vec2(texture_transforms[TexIndex]);\n\tvert_tex_index = TexIndex;\n\tvert_light_uv = VertLightUV;\n}"
  },
  {
    "path": "shaders/opengl4/normal_static_alpha.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tfragment = texture(sampler[vert_tex_index], vert_uv);\n\t\n\tif (fragment.a < 0.5) discard;\n\t\n\tfragment *= texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/opengl4/normal_static_blend.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n  \nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n\tfragment = texture(sampler[vert_tex_index], vert_uv);\n\tfragment *= texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n}"
  },
  {
    "path": "shaders/opengl4/normal_water.frag",
    "content": "// TRAMWAY DRIFT AND DUNGEON EXPLORATION SIMULATOR 2022\n// All rights reserved.\n\n#version 400 core\n\nout vec4 fragment;\n\nin vec2 vert_uv;\nin vec2 vert_light_uv;\nin vec3 vert_color;\nflat in uint vert_tex_index;\n\nlayout (std140) uniform ModelMatrices {\n    mat4 model;\n\tuvec4 model_lights;\n\tvec3 sun_direction;\n\tvec3 sun_color;\n\tvec4 ambient_color;\n\tfloat time;\n\tfloat sun_weight;\n\tfloat screen_width;\n\tfloat screen_height;\n\tvec4 colors[15];\n\tvec4 specular[15];\n\tvec4 texture_transforms[15];\n};\n\nuniform sampler2D sampler[16];\n\nvoid main() {\n    float offse = mod(time / 5.0, 1.0);\n\tvec2 uv = vec2(vert_uv.x + offse, vert_uv.y + offse);\n\t//vec2 uv2 = vec2(vert_uv.x, vert_uv.y + mod(time.x / 60.0, 1.0));\n    fragment = texture(sampler[vert_tex_index], uv)/* * texture(sampler[vert_tex_index], uv2) */* texture(sampler[15], vert_light_uv) * vec4(vert_color, 1.0);\n\t// TODO: break the shader again and make water pretty\n}\n"
  },
  {
    "path": "shaders/opengl4/text.frag",
    "content": "#version 400 core\n\nout vec4 fragColor;\n\nin vec2 vertUV;\nin vec3 color;\nin vec2 cscale;\nin float thick;\nflat in uint texindex;\n\nuniform sampler2D sampler[16];\n\nvoid main()\n{\n\tvec4 t = texture(sampler[texindex], vertUV);\n\tvec2 c = vec2(max(min(t.r, t.g), min(max(t.r, t.g), t.b)));\n\tfloat scale = min(cscale.x, cscale.y);\n\tc.y = texture(sampler[texindex], vertUV + vec2(-2.0/256.0/scale/scale, 2.0/256.0/scale/scale)).w;\n\tc = scale * (c - 0.5);\n\tc.x += thick;\n\tc = clamp(c + 0.5, 0.0, 1.0);\n\t//if (c.x == 0 || c.y == 0) discard;\n\tif (c.x == 0) discard;\n\tfragColor = vec4(mix(vec3(0.0, 0.0, 0.0), color * 2.0, c.x), 1.0);\n}\n"
  },
  {
    "path": "shaders/opengl4/text.vert",
    "content": "\n// idk if this shader is even used anymore\n\n// probably not\n\n#version 400 core\n\nlayout (location = 0) in vec2 Position;\nlayout (location = 1) in vec2 TexCoord;\nlayout (location = 2) in vec3 VertColor;\nlayout (location = 3) in vec2 Scale;\nlayout (location = 4) in float Thickness;\nlayout (location = 5) in uint Texture;\n\nout vec2 vertUV;\nout vec3 color;\nout vec2 cscale;\nout float thick;\nflat out uint texindex;\n\nvoid main()\n{\n    gl_Position = vec4((Position.x / 320.0) - 1.0, (Position.y / -240.0) + 1.0, -0.5, 1.0);\n\tcolor = VertColor;\n\tvertUV = vec2(TexCoord.x / 256.0, TexCoord.y / -256.0);\n\tcscale = Scale;\n\ttexindex = Texture;\n\tthick = Thickness;\n}"
  },
  {
    "path": "src/audio/api.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_API_H\n#define TRAM_SDK_AUDIO_API_H\n\n#include <audio/audio.h>\n\n/**\n * @file audio/api.h\n * \n * Audio API implementation header.\n * \n * This file contains the function signatures which need to be implemented by an\n * Audio API backend. \n */\n \n /**\n * @namespace tram::Audio::API\n * \n * Audio backend API.\n */\n\nnamespace tram::Audio::API {\n\nvoid Init();\nvoid Update();\nvoid Uninit();\n\nvoid SetListenerPosition(vec3 position);\nvoid SetListenerOrientation(quat orientation);\nvoid SetListenerGain(float gain);\n\naudiobuffer_t MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels);\nvoid RemoveAudioBuffer(audiobuffer_t buffer);\n\naudiosource_t MakeAudioSource();\n\nvoid SetAudioSourcePitch(audiosource_t source, float pitch);\nvoid SetAudioSourceGain(audiosource_t source, float gain);\nvoid SetAudioSourcePosition(audiosource_t source, vec3 position);\nvoid SetAudioSourceVelocity(audiosource_t source, vec3 velocity);\nvoid SetAudioSourceRepeating(audiosource_t source, bool repeating);\n\nvoid SetAudioSourceBuffer(audiosource_t source, audiobuffer_t buffer);\n\nvoid PlayAudioSource(audiosource_t source);\nvoid PauseAudioSource(audiosource_t source);\nvoid StopAudioSource(audiosource_t source);\n\nbool IsAudioSourcePlaying(audiosource_t source);\n\nvoid RemoveAudioSource(audiosource_t source);\n    \n}\n\n#endif // TRAM_SDK_AUDIO_API_H"
  },
  {
    "path": "src/audio/audio.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <audio/audio.h>\n#include <audio/sound.h>\n\n#include <framework/system.h>\n#include <framework/logging.h>\n#include <framework/settings.h>\n\n#include <components/audio.h>\n#include <unordered_map>\n\n#include <audio/api.h>\n\n/**\n * @file audio/audio.cpp\n * \n * Main Audio system interface implementation.\n */\n \n /**\n * @namespace tram::Audio\n * \n * System for doing audio related stuff.\n */\n\nnamespace tram::Audio {\n\nstatic Settings::Property<float> volume = {1.0f, \"volume\", Settings::NONE};\n\n/// Starts the Audio system.\nvoid Init() {\n    System::SetState(System::AUDIO, System::INIT);\n    System::AssertDependency(System::CORE);\n    System::AssertDependency(System::UI);\n    // TODO: check if we actually need UI for this\n    \n    API::Init();\n    \n    API::SetListenerGain(volume);\n    \n    System::SetState(System::AUDIO, System::READY);\n}\n\n/// Updates the Audio system.\nvoid Update() {        \n    API::Update();\n}\n\n// Stops the Audio system.\nvoid Uninit() {\n    \n    // we need to yeet all of the resources, otherwise OpenAL will complain\n    for (auto& it : PoolProxy<AudioComponent>::GetPool()) it.~AudioComponent();\n    for (auto& it : PoolProxy<Sound>::GetPool()) it.Unload();\n    \n    API::Uninit();\n}\n\nvoid SetVolume(float value) {\n    volume = value;\n    API::SetListenerGain(value);\n}\n\nfloat GetVolume() {\n    return volume;\n}\n\n/// See Audio::API::SetListenerPosition().\nvoid SetListenerPosition(vec3 position) {\n    API::SetListenerPosition(position);\n}\n\n/// See Audio::API::SetListenerOrientation().\nvoid SetListenerOrientation(quat orientation) {\n    API::SetListenerOrientation(orientation);\n}\n\n}\n\n"
  },
  {
    "path": "src/audio/audio.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_AUDIO_H\n#define TRAM_SDK_AUDIO_AUDIO_H\n\n#include <framework/core.h>\n#include <framework/math.h>\n\n/**\n * @file audio/audio.h\n * \n * Main interface for the Audio system.\n */\n\nnamespace tram::Audio {\n\n/// Audio source handle.\nstruct audiosource_t {\n    union {\n        uint32_t al_source;\n        void* generic;\n    };\n};\n\n/// Audio buffer handle.\nstruct audiobuffer_t {\n    union {\n        struct {\n            uint32_t* al_buffers;\n            int32_t al_buffer_count;\n        };\n        void* generic;\n    };\n    \n};\n\nclass Sound;\n\nvoid Init();\nvoid Update();\nvoid Uninit();\n\nvoid SetVolume(float value);\nfloat GetVolume();\n\nvoid SetListenerPosition(vec3 position);\nvoid SetListenerOrientation(quat orientation);\n\n}\n\n#endif // TRAM_SDK_AUDIO_AUDIO_H"
  },
  {
    "path": "src/audio/graph.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <audio/graph.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n/**\n * @class tram::Render::SoundGraph audio/graph.h <audio/graph.h>\n * \n * SoundGraph resource.\n */\n\nusing namespace tram;\nusing namespace tram::Audio;\n\nstatic Hashmap<SoundGraph*> soundgraph_list(\"SoundGraph name list\", RESOURCE_LIMIT_SOUND_GRAPH);\n\ntemplate <> Pool<Audio::SoundGraph> PoolProxy<Audio::SoundGraph>::pool(\"SoundGraph pool\", RESOURCE_LIMIT_SOUND_GRAPH);\n\n// TODO: add an octree here with all of the nodes!!\n\n// TODO: implement\nFilterParameters SoundGraph::LookupFilter(vec3 position) {\n    return FilterParameters{};\n}\n\nSoundGraph* SoundGraph::Find(name_t name) {\n    auto graph = soundgraph_list.Find(name);\n    \n    if (!graph) {\n        graph = PoolProxy<SoundGraph>::New(name);\n        soundgraph_list.Insert(name, graph);\n    }\n\n    return graph;\n}\n\nvoid SoundGraph::LoadFromDisk() {\n    std::string filename = std::string(\"data/worldcells/\") + std::string(name) + \".sound\";\n    \n    File file (filename.c_str(), File::READ);\n    \n    if (!file.is_open()) {\n        Log(\"Sound graph not found: {}\", filename);\n        return;\n    }\n    \n    name_t header = file.read_name();\n    \n    if (header != \"SOUNDGRAPHv1\") {\n        Log(\"Sprite not found: {}\", filename);\n        return;\n    }\n    \n    while (file.is_continue()) {\n        name_t record_type = file.read_name();\n        \n        if (record_type == \"node\") {\n            Node new_node;\n            \n            new_node.position = {file.read_float32(),\n                                 file.read_float32(),\n                                 file.read_float32()};\n            \n            nodes.push_back(new_node);\n            \n        } else if (record_type == \"edge\") {\n            const uint32_t from_node_index = file.read_uint32();\n            const uint32_t to_node_index = file.read_uint32();\n            \n            edges.push_back({from_node_index, to_node_index});\n            \n        } else if (record_type == \"sound\") {\n            // TODO: implement\n        } else {\n            std::cout << \"unknown sound graph record: \" << record_type << std::endl;\n    }\n    }\n    \n    status = READY;\n}\n\n"
  },
  {
    "path": "src/audio/graph.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_GRAPH_H\n#define TRAM_SDK_AUDIO_GRAPH_H\n\n#include <framework/math.h>\n#include <framework/resource.h>\n\n#include <vector>\n\nnamespace tram::Audio {\n\nstruct FilterParameters {\n    float param1, param2; // TODO: figure out what the parameters should be\n};\n    \nclass SoundGraph : public Resource {\npublic:\n    SoundGraph(name_t name) : Resource(name) {}\n\n    void LoadFromDisk();\n    void LoadFromMemory() {}\n    \n    void Unload() {}\n    \n    static FilterParameters LookupFilter(vec3 position);\n    static SoundGraph* Find(name_t name);\nprotected:\n    struct Node {\n        vec3 position;\n        FilterParameters parameters;\n    };\n    \n    std::vector<Node> nodes;\n    std::vector<std::pair<uint32_t, uint32_t>> edges;\n};\n\n}\n\n#endif // TRAM_SDK_AUDIO_GRAPH_H"
  },
  {
    "path": "src/audio/openal/openal.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <audio/api.h>\n\n#include <framework/logging.h>\n#include <framework/system.h>\n\n#ifdef __EMSCRIPTEN__\n    #include <AL/alc.h>\n    #include <AL/al.h>\n#else\n    #include <openal/alc.h>\n    #include <openal/al.h>\n#endif\n\n/**\n * @file audio/openal/openal.cpp\n * \n * Implementation of the OpenAL Audio backend.\n */\n\nnamespace tram::Audio::API {\n\nstatic ALCdevice* sound_device = nullptr;\nstatic ALCcontext* sound_context = nullptr;\n\nvoid Init() {\n    sound_device = alcOpenDevice(nullptr);\n    if (!sound_device) {\n        Log(Severity::ERROR, System::AUDIO, \"Audio device didn't open!\");\n    }\n    \n    sound_context = alcCreateContext(sound_device, nullptr);\n    if (!sound_context) {\n        Log(Severity::ERROR, System::AUDIO, \"Audio context didn't create!\");\n    }\n    if (!alcMakeContextCurrent(sound_context)) {\n        Log(Severity::ERROR, System::AUDIO, \"Audio context didn't get currented!\");\n    }\n    \n    const char* device_name = nullptr;\n    if (alcIsExtensionPresent(sound_device, \"ALC_ENUMERATE_ALL_EXT\")) {\n        device_name = alcGetString(sound_device, ALC_ALL_DEVICES_SPECIFIER);\n    }\n    \n    if (!device_name || alcGetError(sound_device) != ALC_NO_ERROR) {\n        device_name = alcGetString(sound_device, ALC_DEVICE_SPECIFIER);\n    }\n    \n    Log(Severity::INFO, System::AUDIO, \"{}\", device_name);\n}\n\nvoid Update() {        \n    // haha nothing in here\n}\n\nvoid Uninit() {\n    alcMakeContextCurrent(nullptr);\n    alcDestroyContext(sound_context);\n    alcCloseDevice(sound_device);\n}\n\nvoid SetListenerPosition(vec3 position) {\n    alListener3f(AL_POSITION, position.x, position.y, position.z);\n}\n\nvoid SetListenerOrientation(quat orientation) {\n    vec3 combined_orientation[2] = {\n        orientation * DIRECTION_FORWARD, \n        DIRECTION_UP\n    };\n    \n    alListenerfv(AL_ORIENTATION, &combined_orientation[0][0]);\n}\n\nvoid SetListenerGain(float gain) {\n    alListenerf(AL_GAIN, gain);\n}\n\naudiobuffer_t MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels) {\n    static const int32_t buffer_size = 64 * 1024;\n    int32_t buffer_count = (length + buffer_size - 1) / buffer_size;\n    audiobuffer_t generated_buffer = {.al_buffers = new uint32_t[buffer_count],\n                                      .al_buffer_count = buffer_count};\n                                      \n    Log(Severity::INFO, System::AUDIO, \"Generating {} buffers\", buffer_count);\n\n    alGenBuffers(buffer_count, generated_buffer.al_buffers);\n\n    int32_t format;\n    switch (channels) {\n        case 1: format = AL_FORMAT_MONO16;      break;\n        case 2: format = AL_FORMAT_STEREO16;    break;\n        default: assert(false && \"Invalid channel format\"); break;\n    }\n\n    for (int32_t i = 0; i < buffer_count; i++) {\n        alBufferData(\n            generated_buffer.al_buffers[i], \n            format, \n            audio_data + (buffer_size * i), \n            (i + 1 == buffer_count ? length - (buffer_size * (buffer_count - 1)) : buffer_size) * sizeof(int16_t),\n            samples\n        );\n    }\n    \n    return generated_buffer;\n}\n\nvoid RemoveAudioBuffer(audiobuffer_t buffer) {\n    alDeleteBuffers(buffer.al_buffer_count, buffer.al_buffers);\n    delete[] buffer.al_buffers;\n}\n\naudiosource_t MakeAudioSource() {\n    audiosource_t source;\n    alGenSources(1, &source.al_source);\n    return source;\n}\n\nvoid SetAudioSourcePitch(audiosource_t source, float pitch) {\n    alSourcef(source.al_source, AL_PITCH, pitch);\n}\n\nvoid SetAudioSourceGain(audiosource_t source, float gain) {\n    alSourcef(source.al_source, AL_GAIN, gain);\n}\n\nvoid SetAudioSourcePosition(audiosource_t source, vec3 position) {\n    alSource3f(source.al_source, AL_POSITION, position.x, position.y, position.z);\n}\n\nvoid SetAudioSourceVelocity(audiosource_t source, vec3 velocity) {\n    alSource3f(source.al_source, AL_VELOCITY, velocity.x, velocity.y, velocity.z);\n}\n\nvoid SetAudioSourceRepeating(audiosource_t source, bool repeating) {\n    alSourcei(source.al_source, AL_LOOPING, repeating ? AL_TRUE : AL_FALSE);\n}\n\nvoid SetAudioSourceBuffer(audiosource_t source, audiobuffer_t buffer) {\n    if (buffer.al_buffer_count == 1) {\n        alSourcei(source.al_source, AL_BUFFER, *buffer.al_buffers);\n    } else {\n        alSourceQueueBuffers(source.al_source, buffer.al_buffer_count, buffer.al_buffers);\n    }\n}\n\nvoid PlayAudioSource(audiosource_t source) {\n    alSourcePlay(source.al_source);\n}\n\nvoid PauseAudioSource(audiosource_t source) {\n    alSourcePause(source.al_source);\n}\n\nvoid StopAudioSource(audiosource_t source) {\n    alSourceStop(source.al_source);\n}\n\nbool IsAudioSourcePlaying(audiosource_t source) {\n    int32_t state;\n    alGetSourcei (source.al_source, AL_SOURCE_STATE, &state);\n    return state == AL_PLAYING;\n}\n\nvoid RemoveAudioSource(audiosource_t source) {\n    alDeleteSources(1, &source.al_source);\n}\n\n    \n}"
  },
  {
    "path": "src/audio/openal/openal.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_OPENAL_OPENAL_H\n#define TRAM_SDK_AUDIO_OPENAL_OPENAL_H\n\n// Not deleting this file yet, might need it in the future.\n\n#endif // TRAM_SDK_AUDIO_OPENAL_OPENAL_H"
  },
  {
    "path": "src/audio/sound.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n// using the stb_vorbis library as a header-only library. we could compile it\n// separately, but I don't feel like it is worth the effort\n#include <stb_vorbis.c>\n\n// the stb_vorbis and glm use these same macroses\n#undef L\n#undef R\n#undef C\n\n#include <audio/sound.h>\n#include <audio/api.h>\n\n#include <framework/logging.h>\n#include <framework/system.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n/**\n * @class tram::Audio::Sound audio/sound.h <audio/sound.h>\n * \n * Audio data resource.\n * \n * Currently we only support `.ogg` files, via the `stb_vorbis` library.\n */\n\ntemplate <> tram::Pool<tram::Audio::Sound> tram::PoolProxy<tram::Audio::Sound>::pool(\"Sound Resource pool\", RESOURCE_LIMIT_SOUND);\n\nnamespace tram::Audio {\n\nstatic Hashmap<Sound*> sound_map(\"Sound Resource hashmap\", RESOURCE_LIMIT_SOUND);\n\n/// Loads the sound from the disk.\nvoid Sound::LoadFromDisk() {\n    char path[PATH_LIMIT];\n    \n    snprintf(path, PATH_LIMIT, \"data/audio/%s.ogg\", (const char*)name);\n    \n    Log(Severity::INFO, System::AUDIO, \"Loading: {} \", path);\n    sound_length = stb_vorbis_decode_filename(path, &channels, &sample_rate, &sound_data);\n    \n    Log(Severity::INFO, System::AUDIO, \"Bytelength: {} Channels: {} SampleRate: {} \", sound_length, channels, sample_rate);\n    \n    if (sound_length < 0) {\n        load_fail = true;\n        Log(Severity::WARNING, System::AUDIO, \"Failed to load: {}\", path);\n        \n        // TODO: generate an error audio\n        \n        // sort of how we use the pink checkerboard pattern when textures fail\n        // to load, we could generate some kind of an error sound also\n        \n    } else {\n        sound_buffer = API::MakeAudioBuffer(sound_data, sound_length, sample_rate, channels);\n    }\n    \n    free(sound_data);\n    sound_data = nullptr;\n    \n    status = READY;\n}\n\n/// Removes the sound from memory.\nvoid Sound::Unload() {\n    API::RemoveAudioBuffer(sound_buffer);\n    status = UNLOADED;\n}\n\n/// Finds a sound by a name.\n/// If a sound by that name doesn't exist, it will be created.\n/// @return Always returns a pointer to a Sound.\nSound* Sound::Find (name_t name) {\n    auto sound = sound_map.Find(name);\n    \n    if (!sound) {\n        sound = PoolProxy<Sound>::New(name);\n        sound_map.Insert(name, sound);\n    }\n    \n    return sound;\n}\n\n}"
  },
  {
    "path": "src/audio/sound.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_SOUND_H\n#define TRAM_SDK_AUDIO_SOUND_H\n\n#include <audio/audio.h>\n\n#include <framework/resource.h>\n\n/**\n * @file audio/sound.h\n * \n * Sound resource definition.\n */\n\nnamespace tram::Audio {\n\nclass Sound : public Resource {\npublic:\n    audiobuffer_t sound_buffer = {0};\n    int32_t channels = 0;\n    int32_t sample_rate = 0;\n    int32_t sound_length = 0;\n    int16_t* sound_data = nullptr;\n    \n    void LoadFromDisk();\n    void LoadFromMemory(){}\n    void Unload();\n    \n    /// Returns sound length in seconds.\n    inline float GetLength() { return (float)sound_length/(float)sample_rate; }\n    \n    static Sound* Find (name_t name);\nprotected:\n    Sound(name_t name) : Resource(name) {}\n    template <typename> friend class tram::Pool;\n};\n    \n}\n\n#endif // TRAM_SDK_AUDIO_SOUND_H\n    "
  },
  {
    "path": "src/audio/spatial/definitions.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H\n#define TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H\n\n#include <framework/math.h>\n\n#include <templates/spinlock.h>\n\nnamespace tram::Audio::Spatial {\n\nconst size_t PATHS_FOR_RENDERING = 10;\nconst size_t PATHS_FOR_SOURCE = 5;\nconst size_t PATHS_FOR_LISTENER = 5;\n\nconst size_t BUFFER_COUNT = 1000;\nconst size_t SOURCE_COUNT = 200;\n\nconst size_t SOURCE_DEPTH_LIMIT = 3;\nconst size_t LISTENER_DEPTH_LIMIT = 6;\n\n// actually this might be useful!!! for both. or not\nstruct PathExplorationResult {\n    float force;\n    vec3 sampling_direction;\n    uint32_t cycles_since_last_hit;\n};\n\n// this is the successful path that might need to be revalidated\nstruct PathTracingResult {\n    float force;\n    float distance;\n    uint32_t cycles_since_last_hit;\n    uint32_t reflection_count;\n    vec3 arrival_direction;\n    \n    float reflection_absorption;\n    vec3 listener_ideal_angle;\n    vec3 source_ideal_angle;\n    \n    struct {\n        vec3 point;\n    } reflections[SOURCE_DEPTH_LIMIT * LISTENER_DEPTH_LIMIT];\n};\n\nstruct PathFromAudioSource {\n    struct {\n        vec3 point;\n        vec3 direction;\n        float force;\n    } reflections[LISTENER_DEPTH_LIMIT];\n    vec3 source_direction;\n};\n\n// this is handed over to the rendering algorithm\nstruct PathRenderingInfo {\n    float force;\n    float panning;\n    int32_t panning_delay;\n    int32_t distance_delay;\n};\n\nenum AudioSourceFlags : uint16_t {\n    SOURCE_PLAYING = 1,\n    SOURCE_REPEATING = 2\n};\n\nenum AudioSampleRate : uint16_t {\n    SAMPLERATE_44100 = 1,\n    SAMPLERATE_22050 = 2,\n    SAMPLERATE_11025 = 4\n};\n\nstruct AudioBuffer {\n    AudioSampleRate sample_rate;\n    uint32_t channels;\n    size_t length;\n    float* data;\n};\n\n// Audio source information for path tracing\nstruct AudioSource {\n    vec3 position;\n    \n    PathFromAudioSource* paths; // bidirectional paths\n    \n    PathTracingResult* result_paths;\n    size_t last_path;\n};\n\n// Audio source information for rendering\nstruct AudioRender {\n    Spinlock lock;\n    uint16_t flags;\n    uint32_t sample;\n    AudioBuffer* buffer;\n    PathRenderingInfo* paths;\n};\n\nextern AudioBuffer audiobuffers[BUFFER_COUNT];\nextern AudioSource audiosources[SOURCE_COUNT];\nextern AudioRender audiorenders[SOURCE_COUNT];\n\nextern vec3 listener_position;\nextern quat listener_orientation;\n\nextern int32_t listener_reverb_delay[5];\nextern float listener_reverb_distance[5];\nextern float listener_reverb_force[5];\nextern float listener_reverb_normalized[5];\n\n}\n\n#endif // TRAM_SDK_AUDIO_SPATIAL_DEFINITIONS_H"
  },
  {
    "path": "src/audio/spatial/output.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n// prevent this file from compiling\n#if false\n\n#include <audio/spatial/output.h>\n\n#include <portaudio/portaudio.h>\n\n#include <framework/logging.h>\n\n#include <atomic>\n\nnamespace tram::Audio::Spatial {\n\nstatic PaStream* audio_stream;\n\nstatic const size_t REVERB_SIZE = 44100 * 3;\nstatic float reverb_buffer[REVERB_SIZE];\nstatic size_t reverb_progress = 0;\n\nstatic int PortaudioCallback(\n    const void*, \n    void *output_buffer,\n    unsigned long frames,\n    const PaStreamCallbackTimeInfo*, PaStreamCallbackFlags, void*\n) {\n    LockRenderlist();\n    \n    float* output = (float*) output_buffer;\n    \n    for (unsigned int i = 0; i < frames * 2; i++) {\n        output[i] = 0.0f;\n    }\n    \n    for (auto& source : audiorenders) {\n        source.lock.Lock();\n        \n        // if not playing, skip\n        if (~source.flags & SOURCE_PLAYING) {\n            source.lock.Unlock();\n            continue;\n        }\n        \n        float total_force = 0.0f;\n        for (size_t path = 0; path < PATHS_FOR_RENDERING; path++) total_force += source.paths[path].force;\n        \n        float force_equalizer = total_force < 1.0f ? 1.0f : 1.0f / total_force;\n        \n        size_t source_length = source.buffer->length;\n        for (size_t sample = 0; sample < frames; sample++) {\n            for (size_t path = 0; path < PATHS_FOR_RENDERING; path++) {\n                \n                int32_t sample_delayed_left = source.sample;\n                int32_t sample_delayed_right = source.sample;\n                \n                sample_delayed_left += source.paths[path].distance_delay + source.paths[path].panning_delay;\n                sample_delayed_right += source.paths[path].distance_delay - source.paths[path].panning_delay;\n                \n                \n                if (sample_delayed_left < 0) {\n                    sample_delayed_left += source.buffer->length;\n                }\n                \n                if (sample_delayed_right < 0) {\n                    sample_delayed_right += source.buffer->length;\n                }\n                \n                float sample_value_left = source.buffer->data[sample_delayed_left] * source.paths[path].force * glm::min((source.paths[path].panning * 1.0f) + 1.0f, 1.0f) * force_equalizer;\n                float sample_value_right = source.buffer->data[sample_delayed_right] * source.paths[path].force * glm::min((source.paths[path].panning * -1.0f) + 1.0f, 1.0f)* force_equalizer;\n                \n                output[sample * 2] += sample_value_left;\n                output[(sample * 2) + 1] += sample_value_right;\n            }\n            \n            source.sample += sample % source.buffer->sample_rate == 0;\n            source.sample = source.sample % source_length;\n        }\n        \n        source.lock.Unlock();\n    }\n    \n    \n    // copy mixed-down sound into reverb buffer\n    for (size_t sample = 0; sample < frames; sample++) {\n        reverb_buffer[(reverb_progress + sample) % REVERB_SIZE] = 0.2f * \n        (output[sample * 2] +\n        output[(sample * 2) + 1]);\n    }\n        \n    // convolve some more reverb\n    for (size_t sample = 0; sample < frames; sample++) {\n        float value = reverb_buffer[(reverb_progress + sample) % REVERB_SIZE];\n        \n        value += listener_reverb_normalized[0] * reverb_buffer[(reverb_progress + listener_reverb_delay[0] + sample) % REVERB_SIZE];\n        value += listener_reverb_normalized[1] * reverb_buffer[(reverb_progress + listener_reverb_delay[1] + sample) % REVERB_SIZE];\n        value += listener_reverb_normalized[2] * reverb_buffer[(reverb_progress + listener_reverb_delay[2] + sample) % REVERB_SIZE];\n        value += listener_reverb_normalized[3] * reverb_buffer[(reverb_progress + listener_reverb_delay[3] + sample) % REVERB_SIZE];\n        value += listener_reverb_normalized[4] * reverb_buffer[(reverb_progress + listener_reverb_delay[4] + sample) % REVERB_SIZE];\n        \n        reverb_buffer[(reverb_progress + sample) % REVERB_SIZE] = value;\n    }\n    \n    // copy reverb into output\n    for (size_t sample = 0; sample < frames; sample++) {\n        output[sample * 2] += 5.0f * reverb_buffer[(reverb_progress + sample) % REVERB_SIZE];\n        output[(sample * 2) + 1] += 5.0f *  reverb_buffer[(reverb_progress + sample) % REVERB_SIZE];\n    }\n    \n    reverb_progress += frames;\n    reverb_progress %= REVERB_SIZE;\n    \n    UnlockRenderlist();\n    return 0;\n}\n\nvoid InitOutput() {\n    Log(\"trying to initialized PORTAUDIO\");\n    \n    auto error = Pa_Initialize();\n    \n    if (error != paNoError) {\n        Log(\"portaudio did NOT on startup: {}\", Pa_GetErrorText(error));\n        abort();\n    }\n\n    error = Pa_OpenDefaultStream(\n        &audio_stream,\n        0,  // no input\n        2,  // stereo output\n        paFloat32,\n        44100,\n        paFramesPerBufferUnspecified, // change to change buffer size\n        PortaudioCallback,\n        nullptr\n    );\n    \n    if (error != paNoError) {\n        Log(\"portaudio did NOT on making stream: {}\", Pa_GetErrorText(error));\n        abort();\n    }\n    \n    error = Pa_StartStream( audio_stream );\n    if (error != paNoError) {\n        Log(\"portaudio did NOT on starting stream: {}\", Pa_GetErrorText(error));\n        abort();\n    }\n\n\n}\n\nvoid UpdateOutput() {\n    \n}\n\nvoid UninitOutput() {\n    auto error = Pa_StopStream( audio_stream );\n    if (error != paNoError) {\n        Log(\"portaudio did NOT on stopping stream: {}\", Pa_GetErrorText(error));\n        abort();\n    }\n\n    error = Pa_Terminate();\n\n    if (error != paNoError) {\n        Log(\"portaudio did NOT on shutdown: {}\", Pa_GetErrorText(error));\n    }\n}\n\nvoid LockRenderlist() {\n    \n}\n\nvoid UnlockRenderlist() {\n    \n}\n\n}\n\n#endif"
  },
  {
    "path": "src/audio/spatial/output.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H\n#define TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H\n\n#include <audio/spatial/definitions.h>\n\n#include <vector>\n\nnamespace tram::Audio::Spatial {\n\nvoid InitOutput();\nvoid UpdateOutput();\nvoid UninitOutput();\n\nvoid LockRenderlist();\nvoid UnlockRenderlist();\n\n}\n\n#endif // TRAM_SDK_AUDIO_SPATIAL_OUTPUT_H"
  },
  {
    "path": "src/audio/spatial/pathtracer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n// prevent this file from compiling\n#if false\n\n#include <audio/spatial/pathtracer.h>\n\n#include <components/render.h>\n\n#include <array>\n#include <random>\n#include <algorithm>\n\nnamespace tram::Audio::Spatial {\nusing namespace tram::Render;\n\nuint32_t xorshift() {\n    static uint32_t x = 123456789;\n    x ^= x << 13;\n    x ^= x >> 17;\n    x ^= x << 5;\n    return x * 123456789;\n}\n\nstruct PathSegment {\n    vec3 segment_start;\n    vec3 segment_end;\n};\n\nstatic std::pair<vec3, bool> RayIntersectsTriangle(vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3) {\n    const float epsilon = 0.000001;\n    \n    const vec3 p1_p2 = point2 - point1;\n    const vec3 p1_p3 = point3 - point1;\n    \n    const vec3 p_vec = glm::cross(ray_dir, p1_p3);\n    const float det = glm::dot(p1_p2, p_vec);\n\n    if (fabs(det) < epsilon) {\n        return {vec3{}, false};\n    }\n\n    const float inv_det = 1.0 / det;\n    const vec3 t_vec = ray_pos - point1;\n    const float u = inv_det * glm::dot(t_vec, p_vec);\n\n    if (u < 0.0 || u > 1.0) {\n        return {vec3{}, false};\n    }\n    \n    const vec3 q_vec = glm::cross(t_vec, p1_p2);\n    const float v = inv_det * glm::dot(ray_dir, q_vec);\n\n    if (v < 0.0 || u + v > 1.0) {\n        return {vec3{}, false};\n    }\n\n    const float t = inv_det * glm::dot(p1_p3, q_vec);\n\n    if (t > epsilon) {\n        return {ray_pos + (ray_dir * t), true};\n    } else {\n        return {vec3{}, false};\n    }\n\n}\n\n\nstatic std::tuple<AABBTriangle, vec3, bool> NearestTriangleFromRay (vec3 ray_pos, vec3 ray_dir) {\n    std::vector<RenderComponent*> intersected_render_components;\n    std::vector<AABBTriangle> intersected_triangles;\n    intersected_render_components.reserve(10);\n    intersected_triangles.reserve(10);\n    \n    //RenderComponent::FindAllFromRay(ray_pos, ray_dir, intersected_render_components);\n    \n    float nearest_distance = INFINITY;\n    AABBTriangle nearest_triangle;\n    vec3 nearest_intersection = {0.0f, 0.0f, 0.0f};\n    \n    for (auto comp : intersected_render_components) {\n        auto comp_position = comp->GetLocation();\n        auto comp_rotation = comp->GetRotation();\n        \n        vec3 ray_pos_local = glm::inverse(comp_rotation) * (ray_pos - comp_position);\n        vec3 ray_dir_local = glm::inverse(comp_rotation) * ray_dir;\n        \n        \n        std::vector<AABBTriangle> intersected_triangles;\n        intersected_triangles.reserve(10);\n\n        //Model::Find(comp->GetModel())->FindAllFromRay(ray_pos_local, ray_dir_local, intersected_triangles);\n        \n        \n        for (auto& tri : intersected_triangles) {\n            auto [intersection, happened] = RayIntersectsTriangle(ray_pos_local, ray_dir_local, tri.point1, tri.point2, tri.point3);\n            \n            if (!happened) continue;\n            \n            float intersection_distance = glm::distance(ray_pos_local, intersection);\n            \n            if (nearest_distance > intersection_distance) {\n                nearest_distance = intersection_distance;\n                nearest_intersection = comp_position + (comp_rotation * intersection);\n                nearest_triangle = {\n                    comp_position + (comp_rotation * tri.point1),\n                    comp_position + (comp_rotation * tri.point2),\n                    comp_position + (comp_rotation * tri.point3),\n                    comp_rotation * tri.normal,\n                    tri.material\n                };\n            }\n        }\n    }\n    \n    /*if (nearest_distance != INFINITY) {\n        AddLine(nearest_triangle.point1, nearest_triangle.point2, COLOR_WHITE);\n        AddLine(nearest_triangle.point2, nearest_triangle.point3, COLOR_WHITE);\n        AddLine(nearest_triangle.point3, nearest_triangle.point1, COLOR_WHITE);\n    }*/\n    \n    return {nearest_triangle, nearest_intersection - (ray_dir * 0.01f), nearest_distance != INFINITY};\n}\n\nbool RaySphereIntersection(vec3 ray_pos, vec3 ray_dir, vec3 sphere_pos, float sphere_radius) {\n    vec3 L = sphere_pos - ray_pos;\n    \n    float tc = glm::dot(L, ray_dir);\n    float d2 = glm::dot(L, L) - (tc * tc);\n    \n    return d2 < sphere_radius * sphere_radius && tc >= 0.0f;\n}\n\nstatic void FindSomePaths(std::vector<PathSegment>& segments, vec3 ray_pos, vec3 ray_dir, uint32_t iterations) {\n    auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(ray_pos, ray_dir);\n    \n    bool hit_listener = RaySphereIntersection(ray_pos, ray_dir, listener_position, 0.5f);\n    \n    if (!hit_wall || hit_listener || iterations > 9) {\n        if (hit_listener && (!hit_wall || glm::distance(ray_pos, listener_position) < glm::distance(ray_pos, intersection))) {\n            segments.push_back({ray_pos, listener_position});\n        } else {\n            segments.clear();\n        }\n        \n        //AddLine(ray_pos, ray_dir * 10.0f, COLOR_CYAN);\n        return;\n    }\n    \n    //vec3 intersection = RayIntersectsTriangle(ray_pos, ray_dir, triangle.point1, triangle.point2, triangle.point3).first;\n    \n    if (intersection == vec3{0.0f,0.0f,0.0f}) {\n        std::cout << \"wut \" << RayIntersectsTriangle(ray_pos, ray_dir, triangle.point1, triangle.point2, triangle.point3).second << std::endl;\n    }\n    \n    vec3 new_dir = ray_dir - (2.0f * glm::dot(ray_dir, triangle.normal) * triangle.normal);\n    \n    //AddLine(ray_pos, intersection, COLOR_CYAN);\n    //AddLineMarker(intersection, COLOR_PINK);\n    \n    segments.push_back({ray_pos, intersection});\n    \n    \n    \n    FindSomePaths(segments, intersection, new_dir, iterations + 1);\n}\n    \nstd::vector<PathSegment> all_segments;\n\nuint32_t total_hits = 0;\nuint32_t succ_hits = 0;\n\nbool StraightPathBetweenPoints(vec3 point1, vec3 point2) {\n    vec3 direction = glm::normalize(point2 - point1);\n    \n    auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(point1, direction);\n    \n    if (hit_wall) {\n        return glm::distance(point1, intersection) - glm::distance(point1, point2) > -0.02f;\n    }\n    \n    return true;\n}\n\nvoid SourceInsertNewPath(AudioSource& source, PathTracingResult result) {\n    for (size_t i = 0; i < PATHS_FOR_RENDERING; i++) {\n        if (source.result_paths[i].force < result.force &&\n            glm::dot(source.result_paths[i].arrival_direction, result.arrival_direction) < 0.7f) {\n            source.result_paths[i] = result;\n            return;\n        }\n    }\n    \n    /*size_t smallest = 0;\n    \n    for (size_t i = 0; i < PATHS_FOR_RENDERING; i++) {\n        if (source.result_paths[i].force < source.result_paths[smallest].force) {\n            smallest = i;\n        }\n    }\n    \n    if (source.result_paths[smallest].force < result.force) {\n        source.result_paths[smallest] = result;\n    }*/\n}\n\nstd::random_device device; \nstd::mt19937 generator(device()); \n\nstd::normal_distribution<float> bell_distribution(0.0f, 0.05f); \nstd::uniform_real_distribution<float> uniform_distribution(0.0f, 1.0f);\nstd::uniform_real_distribution<float> uniform_distribution2(-1.0f, 1.0f);\n\nvoid FindPaths(PathExplorationResult& result, bool metropolis, vec3 position) {\n    vec3 sampling_direction = result.sampling_direction;\n    \n    std::vector<std::pair<vec3, vec3>> points;\n    total_hits++;\n    \n    vec3 random_vector = {\n        bell_distribution(generator),\n        bell_distribution(generator),\n        bell_distribution(generator)\n    };\n    \n    // make a variation of the ray direction\n    if (result.cycles_since_last_hit > 10 || uniform_distribution(generator) < 0.05f) {\n        sampling_direction = glm::normalize(random_vector);\n    } else {\n        sampling_direction = glm::normalize(sampling_direction + random_vector);\n    }\n    \n    vec3 ray_direction = sampling_direction;\n    vec3 ray_position = position;\n    \n    vec3 arrival_direction = -ray_direction;\n    \n    // get a list of all the source that are playing\n    int unconnected_sources[16]; // might want to bump this one up to max\n    int source_count = 0;\n    \n    for (size_t i = 0; i < SOURCE_COUNT; i++) {\n        if (~audiorenders[i].flags & SOURCE_PLAYING) continue;\n        \n        unconnected_sources[source_count++] = i;\n    }\n    \n    // init counters\n    float force = 1.0f;\n    float distance = 0.0f;\n    float total_force = 0.0f;\n    \n    vec3 reflections[LISTENER_DEPTH_LIMIT];\n    uint32_t reflection_count = 0;\n    \n    // do path tracing\n    for (size_t n = 0; n < LISTENER_DEPTH_LIMIT; n++) {\n        auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(ray_position, ray_direction);\n    \n        if (!hit_wall) break;\n    \n        force *= 0.9f; // TODO: actually sample absorption when loader is finish\n        distance += glm::distance(ray_position, intersection);\n        \n        points.push_back({ray_position, intersection});\n        \n        // calculate reflected direction\n        ray_direction = ray_direction - (2.0f * glm::dot(ray_direction, triangle.normal) * triangle.normal);\n        ray_position = intersection;\n        \n        // save reflection point\n        reflections[reflection_count++] = intersection;\n        \n        for (int i = 0; i < source_count; i++) {\n            if (unconnected_sources[i] < 0) continue;\n            \n            auto& source = audiosources[unconnected_sources[i]];\n            \n            // check if possible to directly connect to audio source\n            if (StraightPathBetweenPoints(source.position, ray_position)) {\n                float connection_goodness = glm::dot(ray_direction, glm::normalize(source.position - ray_position));\n                float path_force = force * connection_goodness;\n                \n                if (connection_goodness > 0.5f) {\n                    total_force += path_force;\n\n                    PathTracingResult new_result = {\n                        path_force,\n                        distance + glm::distance(source.position, ray_position),\n                        0,\n                        reflection_count,\n                        arrival_direction,\n                        force,\n                        arrival_direction,\n                        ray_direction\n                    };\n                    \n                    for (uint32_t i = 0; i < reflection_count; i++) {\n                        new_result.reflections[reflection_count - i - 1].point = reflections[i];\n                    }\n                    \n                    SourceInsertNewPath(source, new_result);\n                    \n                    /*for (auto& p : points) {\n                        AddLine(p.first, p.second, COLOR_PINK);\n                    }\n                    AddLine(ray_position, source.position, COLOR_PINK);*/\n                    \n                    succ_hits++;\n                    \n                    unconnected_sources[i] = -1;\n                    goto success;\n                }\n            }\n            \n            // check if can connect to other bouncy paths\n            for (uint32_t j = 0; j < SOURCE_DEPTH_LIMIT; j++) {\n                for (uint32_t k = 0; k < PATHS_FOR_SOURCE; k++) {\n                    if (!StraightPathBetweenPoints(source.paths[k].reflections[j].point, ray_position)) continue;\n                    \n                    float connection_goodness = glm::dot(ray_direction, -source.paths[k].reflections[j].direction);\n                    float unconnected_force = force * source.paths[k].reflections[j].force;\n                    float path_force = unconnected_force * connection_goodness;\n                    \n                    if (connection_goodness > 0.5f) {\n                        total_force += path_force;\n                        \n                        PathTracingResult new_result = {\n                            path_force,\n                            distance + glm::distance(source.paths[k].reflections[j].point, ray_position),\n                            0,\n                            reflection_count + j + 1,\n                            arrival_direction,\n                            unconnected_force,\n                            arrival_direction,\n                            glm::normalize(source.position - source.paths[k].reflections[0].point)\n                        };\n                        \n                        for (uint32_t i = 0; i < j + 1; i++) {\n                            new_result.reflections[i].point = source.paths[k].reflections[i].point;\n                        }\n                        \n                        for (uint32_t i = 0; i < reflection_count; i++) {\n                            new_result.reflections[j + reflection_count - i].point = reflections[i];\n                        }\n                        \n                        SourceInsertNewPath(source, new_result);\n                        \n                        /*for (auto& p : points) {\n                            AddLine(p.first, p.second, COLOR_PINK);\n                        }\n                        \n                        if (j == 0) {\n                            AddLine(ray_position, source.paths[k].reflections[0].point, COLOR_PINK);\n                            AddLine(source.paths[k].reflections[0].point, source.position, COLOR_PINK);\n                        } else {\n                            AddLine(ray_position, source.paths[k].reflections[1].point, COLOR_PINK);\n                            AddLine(source.paths[k].reflections[1].point, source.paths[k].reflections[0].point, COLOR_PINK);\n                            AddLine(source.paths[k].reflections[0].point, source.position, COLOR_PINK);\n                        }*/\n                        \n                        succ_hits++;\n                        \n                        unconnected_sources[i] = -1;\n                        goto success;\n                    }\n                }\n            }\n            \n            result.cycles_since_last_hit++;\n            goto unsuccess;\n        success:;\n            result.cycles_since_last_hit = 0;\n        unsuccess:;\n        }\n    }\n    \n    float random = uniform_distribution(generator);\n    float compar = glm::min(total_force / result.force, 1.0f);\n    \n    if (result.force == 0 || random >= compar) {\n        result.sampling_direction = sampling_direction;\n        result.force = total_force;\n    }\n    \n    static uint32_t lastgood = 1;\n    \n    if (GetTick() % 200 == 100 && GetTick() != lastgood) {\n        float ftotal = total_hits;\n        float fsucc = succ_hits;\n        lastgood = GetTick();\n        \n        total_hits = 0;\n        succ_hits = 0;\n        \n        std::cout << \"succ hits \" << fsucc / ftotal << std::endl;\n    }\n}\n\nbool ValidatePathSegment(vec3 ray_pos, vec3 target, float& distance) {\n    vec3 ray_dir = glm::normalize(target - ray_pos);\n    \n    auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(ray_pos, ray_dir);\n    \n    if (!hit_wall) return false;\n    if (glm::distance(target, intersection) > 0.2f) return false;\n    \n    distance += glm::distance(ray_pos, intersection);\n    \n    return true;\n}\n\nvoid ColorPath(PathTracingResult& result, vec3 position, vec3 color) {\n    AddLine(position, result.reflections[0].point, color);\n    \n    for (uint32_t i = 1; i < result.reflection_count; i++) {\n        AddLine(result.reflections[i-1].point, result.reflections[i].point, color);\n    }\n    \n    AddLine(result.reflections[result.reflection_count-1].point, listener_position, color);\n    \n    AddLineMarker(position, COLOR_GREEN);\n}\n\nvoid ValidateResult(PathTracingResult& result, vec3 position) {\n    if (result.reflection_count == 0) return;\n    \n    vec3 ray_pos = position;\n    float distance = 0.0f;\n    float connection_goodness = 1.0f;\n    float goodness_compressed;\n    \n    if (!ValidatePathSegment(ray_pos, result.reflections[0].point, distance)) {\n        goto fail;\n    }\n    \n    for (uint32_t i = 1; i < result.reflection_count; i++) {\n        if (!ValidatePathSegment(result.reflections[i-1].point, result.reflections[i].point, distance)) {\n            goto fail;\n        }\n    }\n    \n    if (!ValidatePathSegment(listener_position, result.reflections[result.reflection_count-1].point, distance)) {\n        goto fail;\n    }\n    \n    connection_goodness *= glm::dot(result.source_ideal_angle, glm::normalize(position - result.reflections[0].point));\n    connection_goodness *= glm::dot(result.listener_ideal_angle, glm::normalize(listener_position - result.reflections[result.reflection_count-1].point));\n\n    if (connection_goodness < 0.25f) {\n        goto fail;\n    }\n    \n    goodness_compressed = ((connection_goodness - 0.25f) * 0.2f) + 0.8125f;\n    \n    result.distance = distance;\n    result.force = result.reflection_absorption * goodness_compressed;//* connection_goodness;\n    result.arrival_direction = listener_position - result.reflections[result.reflection_count - 1].point;\n    \n    //ColorPath(result, position, COLOR_GREEN);\n    \n    return;\nfail:\n    \n    result.cycles_since_last_hit++;\n    \n    //ColorPath(result, position, COLOR_RED);\n}\n\nvoid RenderResult(PathTracingResult& result, vec3 position) {\n    if (result.reflection_count == 0) return;\n    \n    AddLine(position, result.reflections[0].point, COLOR_CYAN);\n    \n    for (uint32_t i = 1; i < result.reflection_count; i++) {\n        AddLine(result.reflections[i-1].point, result.reflections[i].point, COLOR_CYAN);\n    }\n    \n    AddLine(result.reflections[result.reflection_count-1].point, listener_position, COLOR_CYAN);\n}\n\nvoid CheckReverb(PathExplorationResult* paths) {\n    struct {\n        float force;\n        float distance;\n    } result[5];\n    \n    for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n        vec3 ray_position = listener_position;\n        vec3 ray_direction = paths[i].sampling_direction;\n        \n         auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(ray_position, ray_direction);\n         \n         if (!hit_wall) {\n            result[i].force = 0.0f;\n            result[i].distance = listener_reverb_distance[i];\n            continue;\n        }\n        \n        result[i].force = 0.9f;\n        result[i].distance = glm::distance(ray_position, intersection);\n    }\n    \n    std::sort(std::begin(result), std::end(result), [](auto& a, auto& b) { return a.force < b.force; });\n    \n    for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n        \n        // step reverb force towards result\n        if (float diff = listener_reverb_force[i] - result[i].force;\n            diff < -0.01f || diff > 0.01f) {\n            if (listener_reverb_force[i] < result[i].force) {\n                listener_reverb_force[i] += 0.02f;\n            } else {\n                listener_reverb_force[i] -= 0.02f;\n            }\n        }\n        \n        // step reverb distance towards result\n        if (float diff = listener_reverb_distance[i] - result[i].distance;\n            diff < -0.05f || diff > 0.05f) {\n            if (listener_reverb_distance[i] < result[i].distance) {\n                listener_reverb_distance[i] += 0.1f;\n            } else {\n                listener_reverb_distance[i] -= 0.1f;\n            }\n        }\n        \n    }\n}\n\nvoid MakeSomeSourcePaths(PathFromAudioSource& path, vec3 source_position) {\n    vec3 ray_direction = glm::normalize(vec3 {\n        bell_distribution(generator),\n        bell_distribution(generator),\n        bell_distribution(generator)\n    });\n    \n    vec3 ray_position = source_position;\n    float force = 1.0f;\n    \n    for (size_t n = 0; n < SOURCE_DEPTH_LIMIT; n++) {\n        auto [triangle, intersection, hit_wall] = NearestTriangleFromRay(ray_position, ray_direction);\n    \n        if (intersection == vec3{0.0f,0.0f,0.0f}) {\n            std::cout << \"wut \" << RayIntersectsTriangle(ray_position, ray_direction, triangle.point1, triangle.point2, triangle.point3).second << std::endl;\n        }\n        \n        force *= 0.9f; // TODO: actually sample absorption\n        \n        ray_direction = ray_direction - (2.0f * glm::dot(ray_direction, triangle.normal) * triangle.normal);\n        ray_position = intersection;\n        \n        path.reflections[n].force = force;\n        path.reflections[n].point = ray_position;\n        path.reflections[n].direction = ray_direction;\n    }\n    \n}\n\nvoid InitExplorationPaths(PathExplorationResult* paths) {\n    for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n        paths[i].sampling_direction = glm::normalize(vec3 {\n            bell_distribution(generator),\n            bell_distribution(generator),\n            bell_distribution(generator)\n        });\n        \n        paths[i].force = 0.0f;\n        paths[i].cycles_since_last_hit = 0;\n    }\n}\n\n}\n\n#endif"
  },
  {
    "path": "src/audio/spatial/pathtracer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H\n#define TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H\n\n#include <audio/spatial/definitions.h>\n\n#include <vector>\n\nnamespace tram::Audio::Spatial {\n\n//void FindPaths(std::vector<PathTracingResult>& paths, vec3 position);\n\nvoid FindPaths(PathExplorationResult& result, bool metropolis, vec3 position);\n\nvoid FindPathsMetropolis(PathExplorationResult* exploration, PathTracingResult* result, vec3 position);\n\nvoid InitExplorationPaths(PathExplorationResult* paths);\n\nvoid ValidateResult(PathTracingResult& result, vec3 position);\nvoid RenderResult(PathTracingResult& result, vec3 position);\n\nvoid CheckReverb(PathExplorationResult* paths);\n\nvoid MakeSomeSourcePaths(PathFromAudioSource& path, vec3 source_position);\n}\n\n#endif // TRAM_SDK_AUDIO_SPATIAL_PATHTRACER_H"
  },
  {
    "path": "src/audio/spatial/spatial.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n/**\n * @namespace tram::Audio::Spatial\n * \n * Experimental path tracing audio system.\n * \n * It uses bi-directional path tracing together with Primary Sample Space\n * Metropolis Light Transport algorithm to find paths between the listener\n * and audio sources.\n * \n * It then attentuates sounds based on surface reflection absorption and\n * distance, does panning based on the angle between the listener and the last\n * reflection and then convolves the resulting impulse response with the sound\n * being played back by the audio source.\n * \n * Sounds pretty bad (needs tweaking), very slow as well (no optimizations).\n * \n * I haven't tried recently, but it probably doesn't even compile.\n * \n * @todo Make sure that it compiles and do some improvements\n * @todo Investigate the possibilities of using hardware accelerated ray-tracing\n * @todo I am very poor and can't afford a graphics card, NVIDIA pls sponsor me\n */\n\n// prevent this file from compiling\n#if false\n\n#include <audio/spatial/spatial.h>\n\n#include <audio/spatial/definitions.h>\n#include <audio/spatial/pathtracer.h>\n#include <audio/spatial/output.h>\n\n#include <render/render.h>\n\n#include <vector>\n#include <atomic>\n\nnamespace tram::Audio::Spatial {\n\nAudioBuffer audiobuffers[1000];\nAudioSource audiosources[200];\nAudioRender audiorenders[200];\n\nstatic std::vector<uint32_t> audiobuffer_free_list;\nstatic std::vector<uint32_t> audiosource_free_list;\n\nstatic size_t last_audiobuffer = 0;\nstatic size_t last_audiosource = 0;\n\nstatic PathExplorationResult listener_paths[PATHS_FOR_LISTENER]; \n\nvec3 listener_position = {0.0f, 0.0f, 0.0f};\nquat listener_orientation = {1.0f, 0.0f, 0.0f, 0.0f};\n\nint32_t listener_reverb_delay[5] = {0};\nfloat listener_reverb_distance[5] = {0.0f};\nfloat listener_reverb_force[5] = {0.0f};\nfloat listener_reverb_normalized[5] = {0.0f};\n\n\nvoid Init() {\n    for (auto& source : audiorenders) {\n        source.flags = 0; // just in case; don't want renderer to render uninitialized sources\n    }\n    \n    InitOutput();\n    InitExplorationPaths(listener_paths);\n}\n\nvoid Update() {\n    for (size_t i = 0; i < SOURCE_COUNT; i++) {\n        if (~audiorenders[i].flags & SOURCE_PLAYING) continue;\n        \n        // validate old results\n        for (size_t k = audiosources[i].last_path, j = 0; j < 5 && k < PATHS_FOR_RENDERING; k++, j++) {\n            ValidateResult(audiosources[i].result_paths[k], audiosources[i].position);\n        }\n        \n        for (size_t k = 0; k < PATHS_FOR_RENDERING; k++) {\n            if (audiosources[i].result_paths[k].force > 0.0f)\n                RenderResult(audiosources[i].result_paths[k], audiosources[i].position);\n        }\n        \n        for (size_t k = 0; k < PATHS_FOR_SOURCE; k++) {\n            MakeSomeSourcePaths(audiosources[i].paths[k], audiosources[i].position);\n        }\n    }\n    \n    for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n        FindPaths(listener_paths[i], true, listener_position);\n        Render::AddLine(listener_position, listener_position + listener_paths[i].sampling_direction, Render::COLOR_PINK);\n    }\n    \n    /*if (GetTick() % 200 == 100) {\n        for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n            std::cout << listener_paths[i].cycles_since_last_hit << std::endl;\n        }\n    }*/\n    \n    \n    \n    for (size_t i = 0; i < SOURCE_COUNT; i++) {\n        if (~audiorenders[i].flags & SOURCE_PLAYING) continue;\n        \n        Render::AddLineMarker(audiosources[i].position, Render::COLOR_BLUE);\n        \n        audiosources[i].last_path += 5;\n        if (audiosources[i].last_path >= PATHS_FOR_RENDERING) {\n            audiosources[i].last_path = 0;\n        }\n        \n        // check if invalid paths need to be culled\n        for (size_t k = 0; k < PATHS_FOR_RENDERING; k++) {\n            //Render::AddLine(listener_position, listener_position - (audiosources[i].result_paths[k].force * audiosources[i].result_paths[k].arrival_direction), Render::COLOR_PINK);\n            \n            if (audiosources[i].result_paths[k].cycles_since_last_hit > 0 && audiosources[i].result_paths[k].force > 0.0f) {\n                audiosources[i].result_paths[k].force += -0.01f;\n                if (audiosources[i].result_paths[k].force < 0.0f) {\n                    audiosources[i].result_paths[k].force = 0.0f;\n                }\n            }\n        }\n        \n        float total_force = 0.0f;\n        \n        // copy path trace results into renderer\n        for (size_t k = 0; k < PATHS_FOR_RENDERING; k++) {\n            float panning = glm::dot(audiosources[i].result_paths[k].arrival_direction, listener_orientation * DIRECTION_SIDE);\n            int32_t panning_delay = panning * 20.0f; // 20 sample between ears\n            \n            float delay = audiosources[i].result_paths[k].distance / 331.0f; // 331 m/s sound velocity\n            int32_t distance_delay = delay * -44100.0f; // 44100 hz sample rate\n            \n            \n            total_force += audiosources[i].result_paths[k].force;\n            \n            audiorenders[i].paths[k].force = audiosources[i].result_paths[k].force;\n            audiorenders[i].paths[k].panning = panning;\n            audiorenders[i].paths[k].panning_delay = panning_delay;\n            audiorenders[i].paths[k].distance_delay = distance_delay;\n            \n        }\n        \n        /*if (GetTick() % 30 == 0) {\n            std::cout << total_force << std::endl;\n        }*/\n    }\n    \n    // calculate reverb delays into samples\n    for (size_t i = 0; i < PATHS_FOR_LISTENER; i++) {\n        float delay = listener_reverb_distance[i] / 331.0f; // 331 m/s sound velocity\n        listener_reverb_delay[i] = delay * -44100.0f; // 44100 hz sample rate\n        listener_reverb_normalized[i] = 0.2f * listener_reverb_force[i];\n    }\n    \n    // calculate total force\n    float total_force = 0.0f;\n    for (float val : listener_reverb_normalized) {\n        total_force += val;\n    }\n    \n    //std::cout << total_force << std::endl;\n    \n    CheckReverb(listener_paths);\n    \n    UpdateOutput();\n}\n\nvoid Uninit() {\n    UninitOutput();\n}\n\nvoid SetListenerPosition(const vec3& position) {\n    listener_position = position;\n}\n\nvoid SetListenerOrientation(const quat& orientation) {\n    listener_orientation = orientation;\n}\n\naudiobuffer_t* MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels, int32_t& buffer_count) {\n    const float compression = 1.0f / ((65535.0f - 1.0f) / 2.0f); // maps int16 to [-1.0f, 1.0f] \n    \n    float* buffer_data = new float[length];\n    \n    for (int32_t i = 0; i < length; i++) {\n        buffer_data[i] = ((float) audio_data[i]) * compression;\n    }\n    \n    \n    uint32_t buffer_index;\n    \n    if (audiobuffer_free_list.size()) {\n        buffer_index = audiobuffer_free_list.back();\n        audiobuffer_free_list.pop_back();\n    } else {\n        buffer_index = last_audiobuffer;\n        last_audiobuffer++;\n    }\n    \n    auto& buffer = audiobuffers[buffer_index];\n    \n    buffer.length = length;\n    buffer.data = buffer_data;\n    buffer.channels = channels;\n    \n    switch (samples) {\n        case 44100:\n            buffer.sample_rate = SAMPLERATE_44100;\n            break;\n        case 22050:\n            buffer.sample_rate = SAMPLERATE_22050;\n            break;\n        case 11025:\n            buffer.sample_rate = SAMPLERATE_11025;\n            break;\n        default:\n            buffer.sample_rate = SAMPLERATE_44100;\n            std::cout << \"Unrecognized sample rate: \" << samples << std::endl;\n            break;\n    }\n    \n    buffer_count = 1;\n    \n    // save space by packing id into pointer, since all sounds are always 1 buffer\n    return (audiobuffer_t*) ((uint64_t) buffer_index);\n}\n\nvoid RemoveAudioBuffer(audiobuffer_t* buffers, int32_t buffer_count) {\n    uint32_t buffer_index = (uint32_t) ((uint64_t) buffers);\n    \n    delete[] audiobuffers[buffer_index].data;\n    audiobuffers[buffer_index].data = nullptr;\n    \n    audiosource_free_list.push_back(buffer_index);\n}\n\naudiosource_t MakeAudioSource() {    \n    audiosource_t source_index;\n    \n    if (audiosource_free_list.size()) {\n        source_index = audiosource_free_list.back();\n        audiosource_free_list.pop_back();\n    } else {\n        source_index = last_audiosource;\n        last_audiosource++;\n    }\n    \n    auto& source = audiosources[source_index];\n    auto& render = audiorenders[source_index];\n    \n    source.position = {0.0f, 0.0f, 0.0f};\n    source.last_path = 0;\n    \n    source.paths = new PathFromAudioSource[PATHS_FOR_SOURCE];\n    source.result_paths = new PathTracingResult[PATHS_FOR_RENDERING];\n    \n    render.flags = 0;\n    render.sample = 0;\n    render.buffer = nullptr;\n    \n    render.paths = new PathRenderingInfo[PATHS_FOR_RENDERING];\n    \n    for (size_t i = 0; i < PATHS_FOR_SOURCE; i++) {\n        source.paths[i].source_direction = {0.0f, 1.0f, 0.0f};\n        \n        for (size_t n = 0; n < SOURCE_DEPTH_LIMIT; n++) {\n            source.paths[i].reflections[n].force = 0.0f;\n            source.paths[i].reflections[n].point = {0.0f, 0.0f, 0.0f};\n            source.paths[i].reflections[n].direction = {0.0f, 1.0f, 0.0f};\n        }\n    }\n    \n    for (size_t i = 0; i < PATHS_FOR_RENDERING; i++) {\n        source.result_paths[i].force = 0.0f;\n        source.result_paths[i].distance = 0.0f;\n        source.result_paths[i].reflection_count = 0;\n        source.result_paths[i].arrival_direction = {0.0f, 1.0f, 0.0f};\n        source.result_paths[i].cycles_since_last_hit = 0;\n        source.result_paths[i].reflection_absorption = 0.0f;\n        source.result_paths[i].listener_ideal_angle = {0.0f, 1.0f, 0.0f};\n        source.result_paths[i].source_ideal_angle = {0.0f, 1.0f, 0.0f};\n        \n        render.paths[i].force = 0.0f;\n        render.paths[i].panning = 0.0f;\n        render.paths[i].panning_delay = 0;\n        render.paths[i].distance_delay = 0;\n    }\n    \n    return source_index;\n}\n\nvoid SetAudioSourcePitch (audiosource_t source, float pitch) {\n    // not implemented\n}\n\nvoid SetAudioSourceGain (audiosource_t source, float gain) {\n    // not implemented\n}\n\nvoid SetAudioSourcePosition (audiosource_t source, vec3 position) {\n    audiosources[source].position = position;\n}\n\nvoid SetAudioSourceVelocity (audiosource_t source, vec3 velocity) {\n    // not implemented\n}\n\nvoid SetAudioSourceRepeating (audiosource_t source, bool repeating) {\n    if (repeating) {\n        audiorenders[source].flags |= SOURCE_REPEATING;\n    } else {\n        audiorenders[source].flags &= ~SOURCE_REPEATING;\n    }\n}\n\nvoid SetAudioSourceBuffer(audiosource_t source, const audiobuffer_t* buffers, int32_t buffer_count) {\n    audiorenders[source].buffer = &audiobuffers[(uint32_t) ((uint64_t) buffers)];\n}\n\nvoid PlayAudioSource (audiosource_t source) {\n    audiorenders[source].flags |= SOURCE_PLAYING;\n}\n\nvoid PauseAudioSource (audiosource_t source) {\n    audiorenders[source].flags &= ~SOURCE_PLAYING;\n}\n\nvoid StopAudioSource (audiosource_t source) {\n    audiorenders[source].flags &= ~SOURCE_PLAYING;\n    audiorenders[source].sample = 0;\n}\n\nbool IsAudioSourcePlaying (audiosource_t source) {\n    return audiorenders[source].flags & SOURCE_PLAYING;\n}\n\nvoid RemoveAudioSource (audiosource_t source) {\n    delete[] audiosources[source].paths;\n    delete[] audiosources[source].result_paths;\n    delete[] audiorenders[source].paths;\n    \n    audiosources[source].paths = nullptr;\n    audiosources[source].result_paths = nullptr;\n    \n    // nulling flags prevents the renderer from playing removed source\n    audiorenders[source].flags = 0;\n    audiorenders[source].buffer = nullptr;\n    audiorenders[source].paths = nullptr;\n\n    audiosource_free_list.push_back(source);\n}\n\n}\n\n#endif"
  },
  {
    "path": "src/audio/spatial/spatial.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n/**\n * @file audio/spatial/spatial.h\n * \n * Definitions for the Spatial Audio backend.\n * \n * It hasn't been compiled in years, so it is probably broken, but I will keep\n * the code here, just in case I want to revive it in the future.\n */\n\n#ifndef TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H\n#define TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H\n\n/*#include <audio/audio.h>\n\nnamespace tram::Audio::Spatial {\n\nvoid Init();\nvoid Update();\nvoid Uninit();\n\nvoid SetListenerPosition(const vec3& position);\nvoid SetListenerOrientation(const quat& orientation);\n\naudiobuffer_t* MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels, int32_t& buffer_count);\nvoid RemoveAudioBuffer(audiobuffer_t* buffers, int32_t buffer_count);\n\naudiosource_t MakeAudioSource();\n\nvoid SetAudioSourcePitch (audiosource_t source, float pitch);\nvoid SetAudioSourceGain (audiosource_t source, float gain);\nvoid SetAudioSourcePosition (audiosource_t source, vec3 position);\nvoid SetAudioSourceVelocity (audiosource_t source, vec3 velocity);\nvoid SetAudioSourceRepeating (audiosource_t source, bool repeating);\n\nvoid SetAudioSourceBuffer(audiosource_t source, const audiobuffer_t* buffers, int32_t buffer_count);\n\nvoid PlayAudioSource (audiosource_t source);\nvoid PauseAudioSource (audiosource_t source);\nvoid StopAudioSource (audiosource_t source);\n\nbool IsAudioSourcePlaying (audiosource_t source);\n\nvoid RemoveAudioSource (audiosource_t source);    \n\n}*/\n\n#endif // TRAM_SDK_AUDIO_SPATIAL_SPATIAL_H"
  },
  {
    "path": "src/audio/template/template.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <audio/api.h>\n\n#include <framework/logging.h>\n\n/**\n * @file audio/template/template.cpp\n * \n * Template for Audio backend implementations.\n * \n * This template can also be used as a blank Audio backend if no audio is needed\n * to be played and the system won't be used.\n */\n\n\nnamespace tram::Audio::API {\n\nvoid Init() {\n    Log(Severity::INFO, System::AUDIO, \"Audio API initialized.\");\n}\n\nvoid Update() {        \n    \n}\n\nvoid Uninit() {\n    Log(Severity::INFO, System::AUDIO, \"Audio API uninitialized.\");\n}\n\n/// Sets the listener position.\n/// @param position Listener position. Under normal circumstances, it should be\n///                 the same as render view position.\nvoid SetListenerPosition(vec3 position) {\n    \n}\n\n/// Sets the listener orientation.\n/// @param orientation  Listener orientation. Under normal circumstances, it should be\n///                     the same as render view rotation.\nvoid SetListenerOrientation(quat orientation) {\n    \n}\n\nvoid SetListenerGain(float gain) {\n    \n}\n\n/// Creates audio buffers from raw audio data.\n/// @param audio_data       Pointer to the raw audio data, stored as 16 bit PCM.\n/// @param length           Length of the raw audio data, in samples.\n/// @param buffer_count     Created buffer count will be stored in this variable.\naudiobuffer_t MakeAudioBuffer(const int16_t* audio_data, int32_t length, int32_t samples, int32_t channels) {\n    Log(Severity::INFO, System::AUDIO, \"Created an audio buffer of {}@{}hz!\", length, samples);\n    return audiobuffer_t {};\n}\n\n/// Deletes audio buffers.\nvoid RemoveAudioBuffer(audiobuffer_t buffer) {\n    Log(Severity::INFO, System::AUDIO, \"Deleted audio buffer.\");\n}\n\n/// Creates an audio source.\n/// @return A new audio source handle.\naudiosource_t MakeAudioSource() {\n    Log(Severity::INFO, System::AUDIO, \"Created an audio source.\");\n    return audiosource_t {};\n}\n\n/// Sets the pitch of an audio source.\n/// @param pitch    1.0f is the regular pitch. Halving the value decreases the\n///                 pitch by an octave. Doubling the value increases the pitch\n///                 by an octave.\nvoid SetAudioSourcePitch (audiosource_t source, float pitch) {\n    \n}\n\n/// Sets the gain of an audio source.\n/// @param gain     1.0f is the regular gain. Halving the value decreases the\n///                 gain by 6dB.\nvoid SetAudioSourceGain (audiosource_t source, float gain) {\n    \n}\n\n/// Sets the position of an audio source.\nvoid SetAudioSourcePosition (audiosource_t source, vec3 position) {\n    \n}\n\n/// Sets the velocity of an audio source.\nvoid SetAudioSourceVelocity (audiosource_t source, vec3 velocity) {\n    \n}\n\n/// Sets the repetition of an audio source.\n/// @param repeating    True if the sound repeats after playing, false if\n///                     it just stops.\nvoid SetAudioSourceRepeating (audiosource_t source, bool repeating) {\n    \n}\n\n/// Sets the buffers that the audio source will play.\nvoid SetAudioSourceBuffer(audiosource_t source, audiobuffer_t buffer) {\n    \n}\n\n/// Plays an audio source.\nvoid PlayAudioSource (audiosource_t source) {\n    \n}\n\n/// Pauses the audio source.\nvoid PauseAudioSource (audiosource_t source) {\n    \n}\n\n/// Stops the audio source.\nvoid StopAudioSource (audiosource_t source) {\n    \n}\n\n/// Checks if an audio source is playing.\n/// @return True if the audio source is playing a sound, false otherwise.\nbool IsAudioSourcePlaying (audiosource_t source) {\n    return false;\n}\n\n/// Deletes an audio source.\n/// If you do this, then the audio source handle will become invalid.\n/// Call MakeAudioSource() to get a new one.\nvoid RemoveAudioSource (audiosource_t source) {\n    \n}\n\n    \n}"
  },
  {
    "path": "src/components/animation.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/animation.h>\n\n#include <framework/entity.h>\n#include <config.h>\n\n#include <cstring>\n\n/**\n * @class tram::AnimationComponent components/animation.h <components/animation.h>\n * \n * Plays back Animations.\n * @see https://racenis.github.io/tram-sdk/documentation/components/animation.html\n */\n\n/* I feel like this component takes up too much space. I feel like it would be\n * better for the component to just keep a list of pointers to \n * AnimationPlaybackInfo that are kept in some kind of a pool and then to\n * allocate them only as needed.\n * \n * there's also too much caching going on\n * \n * what would be a good idea to cache:\n * - skeletal hierarchy (neat effects)\n * - skeleton bone to keyframe header mapping (expensive lookup)\n * - bone space matrices\n */\n\nnamespace tram {\n\ntemplate <> Pool<AnimationComponent> PoolProxy<AnimationComponent>::pool(\"AnimationComponent pool\", COMPONENT_LIMIT_ANIMATION);\ntemplate <> void Component<AnimationComponent>::init() { ptr = AnimationComponent::Make(); }\ntemplate <> void Component<AnimationComponent>::yeet() { AnimationComponent::Yeet(ptr); }\n\nAnimationComponent::AnimationComponent() : model(this) {\n    pose = PoolProxy<Render::Pose>::New();\n\n    // initialize animation matrices to identity matrix\n    for (size_t i = 0; i < Render::BONE_COUNT; i++) {\n        pose->pose[i] = mat4(1.0f);\n    }\n}\n\nAnimationComponent::~AnimationComponent() {\n    PoolProxy<Render::Pose>::Delete(pose);\n    \n    pose = nullptr;\n    is_ready = false;\n}\n\nvoid AnimationComponent::Start() {\n    // it's probably not necessary to cache this, but whatever\n    armature_bone_count = model->GetArmature().size();\n    armature_bones = &model->GetArmature()[0];\n    \n    // making a copy of bone parents is needed for some fun effects\n    for (size_t i = 0; i < armature_bone_count; i++) {\n        armature_bone_parents[i] = armature_bones[i].parent;\n    }\n    \n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i]) FindKeyframePointers(Render::Animation::Find(anim_playing[i]), i);\n    }\n\n    is_ready = true;\n}\n\n/// Sets procedural animation keyframe.\nvoid AnimationComponent::SetKeyframe(name_t bone_name, const Render::Keyframe& keyframe) {\n    for (size_t i = 0; i < armature_bone_count; i++) {\n        if (armature_bones[i].name == bone_name) {\n            base_pose[i] = keyframe;\n            return;\n        }\n    }\n}\n\n/// Plays an animation.\n/// Animation must be already loaded before playing.\n/// @note  Will not play an animation if there are no empty animation slots.\n/// @param animation_name   Name of the animation to be played.\n/// @param repeats          How many times the animation will be looped before stopping.\n/// @param weight           Weight of the animation. Set to 1.0 for normal weight. Should\n///                         be in range from 0.0 to 1.0, if set outside of range, then the\n///                         animation might look really weird.\n/// @param speed            Speed of the animation. Value of 1.0 will play the animation\n///                         at regular speed, 0.5 will play it half speed, 2.0 double speed.\n/// @param interpolate      If set to true, then animation will be interpolated, if set to\n///                         false, then it will use only the latest keyframe.\n/// @param pause_on_last    If set to true, then the animation will pause on the last keyframe.\nvoid AnimationComponent::Play(name_t animation_name, uint32_t repeats, float weight, float speed, bool interpolate, bool pause_on_last_frame) {\n    if (!animation_name) return;\n    \n    // TODO: guard for negative weight? speed?\n    // maybe negative speed could make the animation play in reverse\n    \n    // find an empty slot for the animation\n    size_t slot;\n    for (slot = 0; slot < ANIM_COUNT; slot++) {\n        // maybe reset the animation if its already playing, instead of just returning?\n        if (anim_playing[slot] == animation_name) return;\n        if (anim_playing[slot] == UID()) break;\n    }\n    \n    // maybe log an error if all animation slots taken?\n    if (slot == ANIM_COUNT) return;\n    \n    anim_playing[slot] = animation_name;\n    \n    // maybe add an option to start the animation at a specific frame, instead of the beginning\n    anim_info[slot].frame = 0.0f; \n    anim_info[slot].repeats = repeats; \n    anim_info[slot].weight = weight; \n    anim_info[slot].speed = speed; \n    anim_info[slot].interpolate = interpolate; \n    anim_info[slot].fade_ammount = 1.0f;\n    anim_info[slot].pause = false; \n    anim_info[slot].fade_in = false; \n    anim_info[slot].fade_out = false; \n    anim_info[slot].pause_on_last_frame = pause_on_last_frame;\n    \n    for (size_t i = 0; i < Render::BONE_COUNT; i++) {\n        anim_info[slot].keyframes[i] = nullptr;\n        anim_info[slot].keyframe_count[i] = 0;\n    }\n    \n    Render::Animation* animation = Render::Animation::Find(animation_name);\n\n    if (animation->GetStatus() != Resource::READY) {\n        Log(Severity::WARNING, System::RENDER, \"Animation '{}' not loaded!\", animation_name);\n        anim_playing[slot] = 0;\n        return;\n    }\n    \n    if (is_ready) {\n        FindKeyframePointers(animation, slot);\n    }\n}\n\n/// Extracts pointers to keyframes from animation data.\nvoid AnimationComponent::FindKeyframePointers(Render::Animation* animation, size_t animation_index) {\n    const auto& slot = animation_index;\n    \n    for (size_t i = 0; i < armature_bone_count; i++) {\n        anim_info[slot].keyframes[i] = animation->GetKeyframes(armature_bones[i].name);\n        anim_info[slot].keyframe_count[i] = animation->GetKeyframeCount(armature_bones[i].name);\n    }\n}\n\n/// Stops an animation if its playing.\n/// Will do nothing if the animation is not playing.\nvoid AnimationComponent::Stop(name_t animation_name) {\n    if (!animation_name) return;\n    \n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if(anim_playing[i] == animation_name) {\n            anim_playing[i] = UID();\n\n            // reset headers\n            for (size_t j = 0; j < Render::BONE_COUNT; j++) {\n                anim_info[i].keyframes[j] = nullptr;\n                anim_info[i].keyframe_count[j] = 0;\n            }\n            \n            if (anim_finish_callback) anim_finish_callback(this, animation_name);\n            return;\n        }\n    }\n}\n\n/// Sets animation's pause state.\n/// This will do nothing, if the animation is not playing. Pausing an already paused\n/// or continuing an already playing animation will do nothing.\n/// @param animation_name   Name of the animation to pause.\n/// @param pause            Set to true to pause the animation, set to false to continue.\nvoid AnimationComponent::SetPause(name_t animation_name, bool pause) {\n    if (!animation_name) return;\n    \n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            anim_info[i].pause = pause;\n            return;\n        }\n    }\n}\n\n/// Pauses an animation.\n/// If the animation is being played, it will be paused. Otherwise this method\n/// will do nothing. Use Continue() method to continue playing the animation.\nvoid AnimationComponent::Pause(name_t animation_name) {\n    SetPause(animation_name, true);\n}\n\n/// Continues an animation.\n/// If an animation is paused, it will continue playback. Otherwise this method\n/// will do nothing.\nvoid AnimationComponent::Continue(name_t animation_name) {\n    SetPause(animation_name, false);\n}\n\n/// Fades in an animation.\n/// Before fading in an animation, it must be started with Play().\nvoid AnimationComponent::FadeIn(name_t animation_name, float speed) {\n    SetFade(animation_name, true, speed);\n}\n\n/// Fades out an animation.\nvoid AnimationComponent::FadeOut(name_t animation_name, float speed) {\n    SetFade(animation_name, false, speed);\n}\n\n/// Sets the weight of an animation.\nvoid AnimationComponent::SetWeight(name_t animation_name, float weight) {\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            anim_info[i].weight = weight;\n            return;\n        }\n    }\n}\n\n/// Sets the speed of an animation.\nvoid AnimationComponent::SetSpeed(name_t animation_name, float speed) {\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            anim_info[i].speed = speed;\n            return;\n        }\n    }\n}\n\n/// Sets the repeats of an animation.\nvoid AnimationComponent::SetRepeats(name_t animation_name, uint32_t repeats) {\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            anim_info[i].repeats = repeats;\n            return;\n        }\n    }\n}\n\n/// Returns true if an animation is playing.\nbool AnimationComponent::IsPlaying(name_t animation_name) {\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            return true;\n        }\n    }\n    return false;\n}\n\n/// Fades in or fades out an animation.\n/// This will gradually increase or decrease the weight of an animation until it is fully\n/// faded in or faded out.\n/// The animation must already be started with Play() for it to\n/// be faded, otherwise this method will do nothing.\n/// If an animation is fully faded out, it will automatically be stopped.\n/// @param animation_name Name of the animation to be faded.\n/// @param fade_in      Set to true, if animation is to be faded in, false if faded out.\n/// @param fade_length  How long, in seconds, will it take for the animation to finish\n///                     fading in/out.\nvoid AnimationComponent::SetFade(name_t animation_name, bool fade_in, float fade_length) {\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (anim_playing[i] == animation_name) {\n            anim_info[i].fade_in = fade_in;\n            anim_info[i].fade_out = !fade_in;\n            anim_info[i].fade_speed = 1.0f / fade_length;\n            anim_info[i].fade_ammount = fade_in ? 0.0f : 1.0f;\n            return;\n        }\n    }\n}\n\n/// Reparents a bone.\n/// Make sure to not create cycles in the bone hierarchy.\n/// @param bone_name    Name of the bone for which a new parent will be set.\n/// @param new_parent   Name of the bone which will be the new parent.\n///                     Can be set to \"none\" to clear the bone's parent.\nvoid AnimationComponent::Reparent(name_t bone_name, name_t new_parent) {\n    int32_t bone_index = -1;\n    int32_t parent_index = -1;\n    \n    for (size_t i = 0; i < armature_bone_count; i++) {\n        if (armature_bones[i].name == bone_name) {\n            bone_index = i;\n        } else if (armature_bones[i].name == new_parent) {\n            parent_index = i;\n        }\n    }\n    \n    if (bone_index == -1) return;\n    \n    armature_bone_parents[bone_index] = parent_index;\n}\n\n/// Updates all of the armatures.\n/// This static function calls the Refresh() method on all of the ArmatureComponents.\nvoid AnimationComponent::Update() {\n    for (auto& comp : PoolProxy<AnimationComponent>::GetPool()) comp.Refresh();\n}\n\n/// Sets an animation to a specific frame.\n/// If the animation is not already started with Play(), then this method will\n/// do nothing.\nvoid AnimationComponent::SetFrame(name_t animation_name, float frame) {\n    for (size_t i = 0; i < ANIM_COUNT; i++){\n        if(anim_playing[i] == animation_name){\n            anim_info[i].frame = frame;\n            return;\n        }\n    }\n}\n\n/// Updates an armature.\n/// Pushes animations forward and regenerates matrices.\nvoid AnimationComponent::Refresh() {\n    \n    // it might be useful in the future to split this method into multiple methods\n    \n    if (!is_ready) return;\n    Render::Keyframe anim_mixed[Render::BONE_COUNT];\n    for (uint64_t i = 0; i < armature_bone_count; i++) anim_mixed[i] = base_pose[i];\n    \n    // increment animations' frames and check if they have stopped/repeated\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if(anim_playing[i] == UID()) continue;\n        \n        // increase the frames of the animation\n        auto& anim = anim_info[i];\n        float frames_since_update = GetDeltaTime();\n        if (!anim.pause) anim.frame += frames_since_update * anim_info[i].speed;\n        \n        // do fade-ins/fade-outs\n        if (anim.fade_in) {\n            anim.fade_ammount += frames_since_update * anim.fade_speed;\n            if (anim.fade_ammount > 1.0f) anim.fade_in = false;\n        } else if (anim.fade_out) {\n            anim.fade_ammount -= frames_since_update * anim.fade_speed;\n            if (anim.fade_ammount < 0.0f) {\n                Stop(anim_playing[i]);\n            }\n        }\n        \n        // find the first keyframe header\n        for (size_t k = 0; k < armature_bone_count; k++){\n            if (anim_info[i].keyframes[k] == nullptr) continue;\n            \n            Render::Keyframe* keyframes = anim_info[i].keyframes[k];\n            size_t keyframe_count = anim_info[i].keyframe_count[k];\n            \n            // if playback's current frame is after the last frame of the animation\n            if (anim.frame < 0.0f) {\n                anim.repeats++;\n                anim.frame = keyframes[keyframe_count-1].frame - 0.1f;\n            } else if (anim.frame > keyframes[keyframe_count-1].frame) {\n                if (anim.pause_on_last_frame && anim.repeats == 1) {\n                    anim.frame = keyframes[keyframe_count-1].frame - 0.1f;\n                    anim.pause = true;\n                    \n                    // maybe instead of calling finish callback? call pause callback?\n                    if (anim_finish_callback) anim_finish_callback(this, anim_playing[i]);\n                } else {\n                    anim.repeats--;\n                    anim.frame = 0.0f;\n                    \n                    if (anim.repeats == 0) {\n                        //Stop(anim.animation_header->first);\n                        Stop(anim_playing[i]);\n                        continue;\n                    }\n                }\n            }\n        }\n    }\n    \n    \n    // mix together keyframes\n    for (size_t i = 0; i < ANIM_COUNT; i++) {\n        if (!anim_playing[i]) continue;\n                \n        for (size_t k = 0; k < armature_bone_count; k++) {\n            if (anim_info[i].keyframes[k] != nullptr) {\n                Render::Keyframe* keyframes = anim_info[i].keyframes[k];\n                size_t keyframe_count =anim_info[i].keyframe_count[k];\n                const auto& anim = anim_info[i];\n                \n                // find the first keyframe that happens after the animation's current frame\n                size_t second_keyframe = -1llu;\n                for (size_t f = 0; f < keyframe_count; f++) {\n                    if (keyframes[f].frame > anim.frame) {\n                        second_keyframe = f;\n                        break;\n                    }\n                }\n                \n                // if not found, that means that the current frame is past the end of the animation\n                // so let's set the animation to the last frame\n                if (second_keyframe == -1llu) {\n                    second_keyframe = keyframe_count - 1;\n                }\n                \n                size_t first_keyframe = second_keyframe - 1;\n                \n                // interpolation ratio between keyframes\n                float mix_w = anim.interpolate ? (anim.frame - keyframes[second_keyframe].frame) / (keyframes[first_keyframe].frame - keyframes[second_keyframe].frame) : 0.0f;\n                \n                // add up animation's weight and fade\n                float total_mix_weight = anim.weight * anim.fade_ammount;\n                \n                // mix together will all other animations\n                anim_mixed[k].location += glm::mix(keyframes[second_keyframe].location, keyframes[first_keyframe].location, mix_w) * total_mix_weight;\n                anim_mixed[k].rotation *= glm::mix(quat(vec3(0.0f)), glm::mix(keyframes[second_keyframe].rotation, keyframes[first_keyframe].rotation, mix_w), total_mix_weight);\n                anim_mixed[k].scale = glm::mix(anim_mixed[k].scale, anim_mixed[k].scale * glm::mix(keyframes[second_keyframe].scale, keyframes[first_keyframe].scale, mix_w), total_mix_weight); // * total_mix_weight;                    \n            }\n        }\n    }\n\n    // convert mixed keyframes to pose matrices\n    for(uint64_t i = 0; i < armature_bone_count; i++){\n\n        pose->pose[i] = mat4(1.0f);\n\n        mat4 modelToBone = glm::translate(mat4(1.0f), -armature_bones[i].head);\n        \n        const auto& head = armature_bones[i].head;\n        const auto& tail = armature_bones[i].tail;\n        const auto& roll = armature_bones[i].roll;\n        \n        vec3 tail_dir = glm::normalize(tail - head);\n        \n        auto rot = glm::rotation(tail_dir, vec3(0.0f, 0.0f, -1.0f));\n        modelToBone = glm::toMat4(rot) * modelToBone;\n        auto rolltransf = glm::rotate(mat4(1.0f), -roll, vec3(0.0f, 0.0f, -1.0f));\n        modelToBone = rolltransf * modelToBone;\n\n\n        mat4 boneAnim = mat4(1.0f);\n        boneAnim = glm::toMat4(anim_mixed[i].rotation) * boneAnim;\n        boneAnim = glm::translate(mat4(1.0f), anim_mixed[i].location) * boneAnim;\n        boneAnim = glm::scale(mat4(1.0f), anim_mixed[i].scale) * boneAnim;\n\n        mat4 boneToModel = glm::inverse(modelToBone);\n\n        if (armature_bone_parents[i] == -1) {\n            pose->pose[i] = boneToModel * boneAnim * modelToBone;\n        } else {\n            pose->pose[i] = pose->pose[armature_bone_parents[i]] * boneToModel * boneAnim * modelToBone;\n        }\n        \n        /* idk i don't remember what this debugging code is for, but might be useful\n        vec3 o(0.0f);\n        vec3 x(1.0f, 0.0f, 0.0f);\n        vec3 y(0.0f, 0.0f, -1.0f);\n        vec3 z(0.0f, 1.0f, 0.0f);\n        o = poz * vec4(o, 1.0f);\n        Render::AddLine(o, poz * vec4(x, 1.0f), Render::COLOR_RED);\n        Render::AddLine(o, poz * vec4(y, 1.0f), Render::COLOR_GREEN);\n        Render::AddLine(o, poz * vec4(z, 1.0f), Render::COLOR_BLUE);\n        */\n    }\n}\n\n/// Creates a new AnimationComponent.\nAnimationComponent* AnimationComponent::Make() {\n    AnimationComponent* ptr = PoolProxy<AnimationComponent>::GetPool().allocate();\n    new(ptr) AnimationComponent();\n    return ptr;\n}\n\n/// Deletes an AnimationComponent.\nvoid AnimationComponent::Yeet(AnimationComponent* component) {\n    component->~AnimationComponent();\n    PoolProxy<AnimationComponent>::GetPool().deallocate(component);\n}\n\nstatic EventListener frame_event;\nstatic bool draw_info = false;\n\n/// Checks whether the debug text is drawn.\n/// Check SetDebugInfoDraw() for more info.\nbool AnimationComponent::IsDebugInfoDraw() {\n    return draw_info;\n}\n\n/// Sets the drawing of debug info.\n/// If set to true, each frame some debug text will be drawn for each animation\n/// component. This is useful for debugging.\nvoid AnimationComponent::SetDebugInfoDraw(bool draw) {\n    if (draw_info == draw) return;\n    draw_info = draw;\n    \n    if (draw) {\n        frame_event.make(Event::FRAME, [](Event&) {\n            for (auto& comp : PoolProxy<AnimationComponent>::GetPool()) {\n                if (!comp.parent) continue;\n                char str[200] = \"\";\n                char buf[100];\n                for (size_t i = 0; i < ANIM_COUNT; i++) {\n                    if (!comp.anim_playing[i]) continue;\n                    sprintf(buf, \"[%i] %.2f | %i | %s\\n\",\n                        (int)i,\n                        comp.anim_info[i].weight,\n                        comp.anim_info[i].repeats,\n                        (const char*)comp.anim_playing[i]);\n                    strcat(str, buf);\n                }\n                \n                Render::AddText(comp.GetParent()->GetLocation(), str);\n            }\n        });\n    } else {\n        frame_event.clear();\n    } \n}\n\n}"
  },
  {
    "path": "src/components/animation.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H\n#define TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H\n\n#include <framework/core.h>\n#include <framework/entitycomponent.h>\n#include <render/render.h>\n#include <render/model.h>\n\nnamespace tram {\n\nclass AnimationComponent : public EntityComponent {\npublic:\n    void SetModel(Render::Model* model) { this->model = model; }\n    void SetModel(name_t model) { this->model = Render::Model::Find(model); }\n    Render::Model* GetModel() { return model.get(); }\n    Render::Pose* GetPose() { return pose; }\n    \n    void SetKeyframe(name_t bone_name, const Render::Keyframe& keyframe);\n    void SetOnAnimationFinishCallback(void (*callback) (AnimationComponent*, name_t)) { anim_finish_callback = callback; }\n    \n    void Play(name_t animation_name, uint32_t repeats, float weight, float speed, bool interpolate = true, bool pause_on_last_frame = false);\n    bool IsPlaying(name_t animation_name);\n    void Stop(name_t animation_name);\n    void Pause(name_t animation_name);\n    void Continue(name_t animation_name);\n    \n    void SetWeight(name_t animation_name, float weight);\n    void SetSpeed(name_t animation_name, float speed);\n    void SetRepeats(name_t animation_name, uint32_t repeats);\n    \n    void FadeIn(name_t animation_name, float length);\n    void FadeOut(name_t animation_name, float length);\n    \n    void SetPause(name_t animation_name, bool pause);\n    void SetFade(name_t animation_name, bool fade_in, float fade_length);\n    void SetFrame(name_t animation_name, float frame);\n    \n    void Reparent(name_t bone_name, name_t new_parent);\n    \n    void Refresh();\n    void EventHandler(Event &event) { return; }\n    \n    static AnimationComponent* Make();\n    static void Yeet(AnimationComponent* component);\n    \n    static bool IsDebugInfoDraw();\n    static void SetDebugInfoDraw(bool draw);\n    static void Update();\nprotected:\n    static const size_t ANIM_COUNT = 8;\n    struct AnimationPlaybackInfo {\n        uint32_t repeats;\n        float weight;\n        float speed;\n        float frame;\n        float fade_speed;\n        float fade_ammount;\n        bool interpolate;\n        bool fade_in;\n        bool fade_out;\n        bool pause;\n        bool pause_on_last_frame;\n        Render::Keyframe* keyframes[Render::BONE_COUNT] = {nullptr};\n        uint32_t keyframe_count[Render::BONE_COUNT] = {0};\n    };\n\n    void Start();\n    \n    void FindKeyframePointers(Render::Animation* animation, size_t animation_index);\n\n    Render::Keyframe base_pose[Render::BONE_COUNT];\n    \n    Render::Pose* pose = nullptr;\n    ResourceProxy<Render::Model> model;\n    \n    void (*anim_finish_callback) (AnimationComponent*, name_t) = nullptr;\n    \n    const Render::Bone* armature_bones = nullptr;\n    size_t armature_bone_count = 0;\n    int32_t armature_bone_parents[Render::BONE_COUNT] = {-1};\n    \n    name_t anim_playing[ANIM_COUNT];\n    AnimationPlaybackInfo anim_info[ANIM_COUNT];\n    \n    AnimationComponent();\n    ~AnimationComponent();\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_ARMATURECOMPONENT_H"
  },
  {
    "path": "src/components/audio.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/audio.h>\n\n#include <framework/event.h>\n#include <framework/settings.h>\n\n#include <audio/api.h>\n#include <audio/sound.h>\n\n#include <config.h>\n\n/**\n * @class tram::AudioComponent components/audio.h <components/audio.h>\n * \n * Plays back Sounds.\n * @see https://racenis.github.io/tram-sdk/documentation/components/audio.html\n */\n\n/* TODO:\n * I don't really like how the AudioComponent references the RenderComponent for\n * the component's visualization.\n * I feel like a better alternative would be to set up some kind of a\n * Component<RenderComponent> array in this file and then reference them based\n * Pool indices.\n */\n\nnamespace tram {\n    \nusing namespace tram::Audio;\nusing namespace tram::Audio::API;\n\ntemplate <> Pool<AudioComponent> PoolProxy<AudioComponent>::pool(\"AudioComponent pool\", COMPONENT_LIMIT_AUDIO);\ntemplate <> void Component<AudioComponent>::init() { ptr = PoolProxy<AudioComponent>::New(); }\ntemplate <> void Component<AudioComponent>::yeet() { PoolProxy<AudioComponent>::Delete(ptr); }\n\nstatic Settings::Property<bool> draw_source = {false, \"audio-draw-source\", Settings::NONE};\nstatic Settings::Property<bool> draw_info = {false, \"audio-draw-info\", Settings::NONE};\n\nstatic EventListener frame_event;\n\nAudioComponent::~AudioComponent() {\n    assert(is_ready);\n    is_ready = false;\n    \n    RemoveAudioSource(source);\n}\n\nvoid AudioComponent::Start() {\n    source = MakeAudioSource();\n\n    SetAudioSourcePitch(source, 1.0f);\n    SetAudioSourceGain(source, 1.0f);\n    \n    SetAudioSourcePosition(source, location);\n    SetAudioSourceVelocity(source, {0.0f, 0.0f, 0.0f});\n    \n    SetAudioSourceRepeating(source, repeat);\n    \n    SetAudioSourceBuffer(source, sound->sound_buffer);\n    \n    if (play_on_start) {\n        PlayAudioSource(source);\n    }\n    \n    SetupModel();\n    \n    is_ready = true;\n}\n\n/// Sets the sound that the component will play.\nvoid AudioComponent::SetSound(name_t name) {\n    this->sound = Sound::Find(name);\n}\n\n/// Sets the location from which the sound will play.\nvoid AudioComponent::SetLocation(vec3 location) {\n    this->location = location;\n    \n    if (is_ready) {\n        SetAudioSourcePosition(source, location);\n    }\n    \n    if (model) {\n        model->SetLocation(location);\n    }\n}\n\n/// Sets whether the component will repeat its sound.\nvoid AudioComponent::SetRepeating(bool is_repeating) {\n    this->repeat = is_repeating;\n    \n    if (is_ready) {\n        SetAudioSourceRepeating(source, repeat);\n    }\n}\n\n/// Plays the sound.\n/// Plays the sound that the component has been set to play.\nvoid AudioComponent::Play() {\n    if (is_ready) {\n        PlayAudioSource(source);\n    } else {\n        play_on_start = true;\n    }\n}\n\n/// Pauses the sound.\n/// Pauses the sound that the component is playing, or does nothing, if no sound\n/// is playing.\nvoid AudioComponent::Pause() {\n    if (is_ready) PauseAudioSource(source);\n}\n\n/// Stops the sound.\n/// Stops the sound that the component is playing, or does nothing, if no sound\n/// is playing.\nvoid AudioComponent::Stop() {\n    if (is_ready) {\n        StopAudioSource(source);\n    } else {\n        play_on_start = false;\n    }\n}\n\n/// Checks if component is playing a sound.\n/// @return True, if a sound is playing, false if it hasn't started or has stopped.\nbool AudioComponent::IsPlaying() {\n    if (is_ready) {\n        return IsAudioSourcePlaying(source);\n    } else {\n        return play_on_start;\n    }\n}\n\n\nvoid AudioComponent::SetupModel() {\n    if (draw_source) {\n        model.make();\n        model->SetModel(\"dev/sound\");\n        model->SetLocation(this->location);\n        model->SetParent(this->parent);\n        model->SetLightmap(\"fullbright\");\n        model->Init();\n    } else {\n        model.clear();\n    }\n}\n\n/// Checks whether the audio source is drawn.\n/// Check SetSourceDraw() for more info.\nbool AudioComponent::IsSourceDraw() {\n    return draw_source;\n}\n\n/// Checks whether the debug text is drawn.\n/// Check SetDebugInfoDraw() for more info.\nbool AudioComponent::IsDebugInfoDraw() {\n    return draw_info;\n}\n\n/// Sets the drawing of audio sources.\n/// If set to true, each audio component will initialize a 3D model, which will\n/// allow you to see the posiiton of the audio sources. Useful for debugging.\nvoid AudioComponent::SetSourceDraw(bool draw) {\n    if (draw_source == draw) return;\n    draw_source = draw;\n    \n    for (auto& source : PoolProxy<AudioComponent>::GetPool()) {\n        source.SetupModel();\n    }\n}\n\n/// Sets the drawing of debug info.\n/// If set to true, each frame some debug text will be drawn for each audio\n/// source. This is useful for debugging.\nvoid AudioComponent::SetDebugInfoDraw(bool draw) {\n    if (draw_info == draw) return;\n    draw_info = draw;\n    \n    if (draw) {\n        frame_event.make(Event::FRAME, [](Event&) {\n            for (auto& source : PoolProxy<AudioComponent>::GetPool()) {\n                char str[100];\n                sprintf(str, \"Playing: %s\\nRepeats: %s\\nSound: %s\",\n                        source.IsPlaying() ? \"yes\" : \"no\",\n                        source.repeat ? \"yes\" : \" no\",\n                        source.sound ? (const char*)source.sound->GetName() : \"none\");\n                Render::AddText(source.location, str);\n            }\n        });\n    } else {\n        frame_event.clear();\n    } \n}\n\n}"
  },
  {
    "path": "src/components/audio.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H\n\n#include <framework/entitycomponent.h>\n#include <framework/resource.h>\n\n#include <components/render.h>\n\n#include <audio/sound.h>\n\nnamespace tram {\n\nclass RenderComponent;\n\nclass AudioComponent : public EntityComponent {\npublic:\n    AudioComponent() : sound(this){}\n    ~AudioComponent();\n    void Start();\n    void SetLocation(vec3 location);\n    void SetSound(name_t name);\n    void SetRepeating(bool is_repeating);\n    bool IsPlaying();\n    void Play();\n    void Pause();\n    void Stop();\n    \n    void EventHandler(Event &event){}\n    \n    static bool IsSourceDraw();\n    static bool IsDebugInfoDraw();\n    \n    static void SetSourceDraw(bool);\n    static void SetDebugInfoDraw(bool);\nprotected:\n    ResourceProxy<Audio::Sound> sound;\n    Audio::audiosource_t source = {};\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    bool repeat = false;\n    bool play_on_start = false;\n    \n    void SetupModel();\n    Component<RenderComponent> model;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_AUDIOCOMPONENT_H"
  },
  {
    "path": "src/components/controller.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/entity.h>\n#include <framework/message.h>\n#include <framework/settings.h>\n\n#include <components/controller.h>\n#include <components/physics.h>\n#include <components/trigger.h>\n\n#include <render/render.h>\n\n#include <config.h>\n\n/**\n * @file components/controller.cpp\n * \n * Implementations for ControllerComponents.\n */\n\n/**\n * @class tram::ControllerComponent components/controller.h <components/controller.h>\n * \n * Provides an API for character controllers.\n * @see https://racenis.github.io/tram-sdk/documentation/components/controller.html\n */\n \n /**\n * @class tram::FPSControllerComponent components/controller.h <components/controller.h>\n * \n * Implementation of an FPS-style character controller.\n * \n * It is relatively slow, due to the use of Shapecasts, which makes it suitable\n * only for player characters. Consider useing a RaycastControllerComponent for\n * other uses.\n * @see ControllerComponent\n */\n \n/**\n * @class tram::RaycastControllerComponent components/controller.h <components/controller.h>\n * \n * Implementation of a simple character controller.\n * @see ControllerComponent\n */\n\nnamespace tram {\n\ntemplate <> Pool<FPSControllerComponent> PoolProxy<FPSControllerComponent>::pool(\"FPSControllerComponent pool\", COMPONENT_LIMIT_CONTROLLER);\ntemplate <> Pool<RaycastControllerComponent> PoolProxy<RaycastControllerComponent>::pool(\"RaycastControllerComponent pool\", COMPONENT_LIMIT_CONTROLLER);\ntemplate <> void Component<FPSControllerComponent>::init() { ptr = PoolProxy<FPSControllerComponent>::New(); }\ntemplate <> void Component<FPSControllerComponent>::yeet() { PoolProxy<FPSControllerComponent>::Delete(ptr); }\ntemplate <> void Component<RaycastControllerComponent>::init() { ptr = PoolProxy<RaycastControllerComponent>::New(); }\ntemplate <> void Component<RaycastControllerComponent>::yeet() { PoolProxy<RaycastControllerComponent>::Delete(ptr); }\n\nstatic Settings::Property<bool> draw_debug = {false, \"controller-draw\", Settings::NONE};\n\n/// Updates the ControllerComponents.\n/// Updates all of the ControllerComponents. Should be called once per update cycle.\n/// Best place to do so would be before updating any cameras, otherwise they will\n/// lag behind the controller for the rest of the frame.\nvoid ControllerComponent::Update() {\n    if (GetTick() < 10) return; // helps with not falling through the floor!!!\n    \n    // we want to ensure that we get 60 updates/second\n    static float update_counter = 0.0f;\n    update_counter += GetDeltaTime();\n\n    int needed_updates = floorf(update_counter / (1.0f / 60.0f));\n    \n    update_counter = fmodf(update_counter, 1.0f / 60.0f);\n\n    for (int i = 0; i < needed_updates && i < 4; i++) {\n        for (auto& component : PoolProxy<FPSControllerComponent>::GetPool()) {\n            component.ApplyDynamics();\n            component.RecoverFromCollisions();\n        }\n        \n        for (auto& component : PoolProxy<RaycastControllerComponent>::GetPool()) {\n            component.ApplyDynamics();\n            component.RecoverFromCollisions();\n        }\n    }\n\n    if (needed_updates) {\n        for (auto& component : PoolProxy<FPSControllerComponent>::GetPool()) {\n            component.ResetMove();\n        }\n        \n        for (auto& component : PoolProxy<RaycastControllerComponent>::GetPool()) {\n            component.ResetMove();\n        }\n    }\n    \n    if (!draw_debug) return;\n    for (auto& component : PoolProxy<FPSControllerComponent>::GetPool()) {\n        char str[100];\n        sprintf(str, \"Velocity: %.2f %.2f %.2f\\nIn air: %s\\nRunning: %s\\nCrouching: %s\\nFlying: %s\\nStanding: %s\",\n                component.velocity.x, component.velocity.y, component.velocity.z,\n                component.is_in_air ? \"yes\" : \"no\",\n                component.running ? \"yes\" : \"no\",\n                component.crouching ? \"yes\" : \"no\",\n                component.flying ? \"yes\" : \"no\",\n                component.standing_on ? (const char*)Entity::Find(component.standing_on)->GetName() : \"[not standing]\");\n        Render::AddText(component.GetParent()->GetLocation(), str);\n    }\n    \n    for (auto& component : PoolProxy<RaycastControllerComponent>::GetPool()) {\n        char str[100];\n        sprintf(str, \"Velocity: %.2f %.2f %.2f\\nIn air: %s\\nRunning: %s\\nCrouching: %s\\nFlying: %s\\nStanding: %s\",\n                component.air_velocity.x, component.air_velocity.y, component.air_velocity.z,\n                component.is_in_air ? \"yes\" : \"no\",\n                component.running ? \"yes\" : \"no\",\n                component.crouching ? \"yes\" : \"no\",\n                component.flying ? \"yes\" : \"no\",\n                component.standing_on ? (const char*)Entity::Find(component.standing_on)->GetName() : \"[not standing]\");\n        Render::AddText(component.GetParent()->GetLocation(), str);\n    }\n}\n\nbool ControllerComponent::IsDebugInfoDraw() {\n    return draw_debug;\n}\n\nvoid ControllerComponent::SetDebugInfoDraw(bool draw) {\n    draw_debug = draw;\n}\n\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                              FPS CONTROLLER                               |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\nvoid FPSControllerComponent::Start() {\n    walk_collision.make();\n    crouch_collision.make();\n    \n    walk_collision->SetCollisionMask(-1 ^ collision_group);\n    walk_collision->SetCollisionGroup(Physics::COLL_TRIGGER);\n    walk_collision->SetShape(Physics::CollisionShape::Cylinder(collision_width, (collision_height/2.0f) - step_height));\n    walk_collision->SetStoreCollisions(true);\n    \n    crouch_collision->SetCollisionMask(-1 ^ collision_group);\n    crouch_collision->SetCollisionGroup(Physics::COLL_TRIGGER);\n    crouch_collision->SetShape(Physics::CollisionShape::Cylinder(collision_width, (collision_height_crouch/2.0f) - step_height_crouch));\n    crouch_collision->SetStoreCollisions(true);\n    \n    walk_collision->Init();\n    crouch_collision->Init();\n}\n\nvoid FPSControllerComponent::Push(vec3 direction) {\n    // TODO: implement\n}\n\nvoid FPSControllerComponent::Move(vec3 local_direction) {\n    move_direction += local_direction;\n}\n\nvoid FPSControllerComponent::Run() {\n    running = true;\n}\n\nvoid FPSControllerComponent::Crouch() {\n    crouching = true;\n}\n\nvoid FPSControllerComponent::Fly() {\n    flying = true;\n}\n\nvoid FPSControllerComponent::Jump() {\n    if (!is_in_air) {\n        velocity.y += 0.119f;\n        is_in_air = true;\n    }\n}\n\nvoid FPSControllerComponent::TurnLeft() {\n    // TODO: implement\n}\n\nvoid FPSControllerComponent::TurnRight() {\n    // TODO: implement\n}\n\n\nvoid FPSControllerComponent::ApplyDynamics() {\n    \n    // if in air, apply gravity; otherwise apply ground friction\n    if (is_in_air && !flying && collide) {\n        // check for terminal velocity\n        if (velocity.y > -0.12f) {\n            velocity.y -= 0.0053f;\n        }\n    } else {\n        velocity *= friction;\n    }\n    \n    // first we will apply the move direction to the current velocity\n    if (glm::length(move_direction) > 0.0f) {\n        \n        // get the move speed\n        float target_speed = walk_speed;\n        if (running) target_speed = run_speed;\n        if (crouching) target_speed = crouch_speed;\n\n        // helps with floaty feeling\n        if (is_in_air) target_speed *= 0.33f;\n\n        // convert local space direction into global space direction and normalize it\n        vec3 wish_dir = glm::normalize(parent->GetRotation() * move_direction);\n        if (std::isnan(wish_dir.x) || std::isnan(wish_dir.y) || std::isnan(wish_dir.z)) wish_dir = vec3(0.0f, 0.0f, 0.0f);\n        \n        // clip the move direction so that it doesn't exceed maximum velocity\n        float current_speed = glm::dot(velocity, wish_dir); \n        float add_speed = target_speed - current_speed;\n        add_speed = add_speed < 0.0f ? 0.0f : add_speed;\n        add_speed = add_speed > 0.02f ? 0.02f : add_speed;\n        \n        // add the move direction to the velocity\n        auto add_velocity = wish_dir * add_speed;\n        \n        velocity.x += add_velocity.x;\n        velocity.z += add_velocity.z;\n        \n        if (flying || !collide) {\n            velocity.y += add_velocity.y;\n        }\n    }\n}\n\nvoid FPSControllerComponent::RecoverFromCollisions() {\n    const float height = crouching ? collision_height_crouch : collision_height;\n    const float step = crouching ? step_height_crouch : step_height;\n    const float half_height = height / 2.0f;\n    const float width = collision_width;\n    \n    // if not colliding, just apply the velocity.\n    if (!collide) {\n        vec3 new_pos = parent->GetLocation() + velocity;\n        parent->UpdateTransform(new_pos, parent->GetRotation());\n        return;\n    }\n    \n    // compute character's new position\n    vec3 old_pos = parent->GetLocation();\n    quat old_rot = parent->GetRotation();\n    vec3 new_pos = old_pos + velocity;\n        \n    // check if new position is on the ground\n    auto ground_collisions = Physics::Shapecast(\n        Physics::CollisionShape::Cylinder(width, half_height),\n        new_pos + vec3(0.0f, step, 0.0f),\n        new_pos - vec3(0.0f, 0.1f, 0.0f),\n        -1 ^ collision_group\n    );\n    \n    if (ground_collisions.size()) {\n        vec3 lowest_collision = {INFINITY, INFINITY, INFINITY};\n        vec3 lowest_collision_normal;\n        \n        float character_bottom_height = new_pos.y - half_height;\n        \n        // find the lowest collision above character's bottom\n        for (auto& coll : ground_collisions) {\n            if (coll.point.y > character_bottom_height && coll.point.y < lowest_collision.y) {\n                lowest_collision = coll.point;\n                lowest_collision_normal = coll.normal;\n                \n                if (coll.collider && coll.collider->GetParent()) {\n                    standing_on = coll.collider->GetParent()->GetID();\n                }\n            }\n        }\n        \n        if (lowest_collision.y != INFINITY) {\n            //Render::AddLineMarker({new_pos.x, character_bottom_height, new_pos.z}, Render::COLOR_RED);\n        }\n        \n        // if there is such a collision, then put the character at that position\n        if (lowest_collision.y != INFINITY) {\n            // calcuate step height\n            float step_height = lowest_collision.y - character_bottom_height;\n            \n            // check if stepping up is allowed and then step up\n            if (lowest_collision_normal.y > 0.70f && step_height > 0.0f /*&& step_height < 0.35f*/) {\n                new_pos.y = lowest_collision.y + half_height + 0.01f;\n                velocity.y = 0.0f;\n                is_in_air = false;\n            }\n        } else if (!is_in_air) {\n            // if character is a certain distance above the ground, we will move the\n            // character to the ground. this will help with the floaty feeling when\n            // walking down a slope\n            float highest_collision = -INFINITY;\n            \n            for (auto& coll : ground_collisions) {       \n                if (coll.point.y > highest_collision) {\n                    highest_collision = coll.point.y;\n                }\n            }\n            \n            float character_bottom_height = new_pos.y - half_height;\n            float step_height = highest_collision - character_bottom_height;\n            \n            if (step_height < 0.0f && step_height > -0.1f) {\n                new_pos.y = highest_collision + half_height + 0.01f;\n                velocity.y = 0.0f;\n                is_in_air = false;;\n            }\n        }\n    } else {\n        standing_on = 0;\n        is_in_air = true;\n    }\n    \n    bool did_v = false;\n    \n    TriggerComponent* collider = crouching ? crouch_collision.get() : walk_collision.get();\n    for (auto& col : collider->GetStoredCollisions()) {\n        if (col.distance != 0.0f) {\n            new_pos -= col.normal * col.distance;\n        }\n        \n        if (did_v) continue;\n        \n        // project velocity to collision surface\n        auto plane_normal = glm::normalize(-col.normal);\n        velocity = velocity - (glm::dot(velocity, plane_normal) * plane_normal);\n\n        if (std::isnan(velocity.x) || std::isnan(velocity.z)) {\n            velocity = {0.0f, 0.0f, 0.0f};\n        }\n        \n        // add wall slide friction\n        if (is_in_air) {\n            velocity.x *= 0.5f;\n            velocity.z *= 0.5f;\n        }\n        \n        // call the wallbonk callback\n        if (wallbonk_callback) {\n            wallbonk_callback(this, col);\n        }\n        \n        did_v = true;\n    }\n        \n    // make controller follow whatever entity it is standing on\n    if (standing_on == standing_on_prev && standing_on) {\n        vec3 standing_new_pos = Entity::Find(standing_on)->GetLocation();\n        quat standing_new_rot = Entity::Find(standing_on)->GetRotation();\n        \n        vec3 old_delta = standing_pos - parent->GetLocation();\n        \n        vec3 new_delta = glm::inverse(standing_rot) * old_delta;\n        new_delta = standing_new_rot * new_delta;\n        \n        new_delta = standing_new_pos - new_delta;\n        \n        new_pos += new_delta - parent->GetLocation();\n\n        standing_pos = standing_new_pos;\n        standing_rot = standing_new_rot;\n        \n    } else if (standing_on) {\n        Entity* entity = Entity::Find(standing_on);\n        \n        if (!entity) {\n            standing_on = 0;\n        } else {\n            standing_pos = entity->GetLocation();\n            standing_rot = entity->GetRotation();\n        }\n    }\n    standing_on_prev = standing_on;\n    \n    walk_collision->SetLocation(new_pos + vec3(0.0f, 0.35f * 0.5f, 0.0f));\n    crouch_collision->SetLocation(new_pos + vec3(0.0f, 0.35f * 0.5f, 0.0f));\n    \n    // apply new position to character\n    parent->UpdateTransform(new_pos, old_rot);\n}\n\nvoid FPSControllerComponent::ResetMove() {\n    move_direction = {0.0f, 0.0f, 0.0f};\n    running = false;\n    crouching = false;\n    flying = false;\n}\n\n\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                            RAYCAST CONTROLLER                             |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\nvoid RaycastControllerComponent::Start() {\n    wall_collision.make();\n    \n    wall_collision->SetCollisionMask(-1 ^ collision_group);\n    wall_collision->SetCollisionGroup(Physics::COLL_TRIGGER);\n    wall_collision->SetShape(Physics::CollisionShape::Cylinder(collision_width, (collision_height/2.0f) - step_height ));//* 2.0f));\n    wall_collision->SetStoreCollisions(true);\n    \n    wall_collision->Init();\n}\n\nvoid RaycastControllerComponent::Push(vec3 direction) {\n    // TODO: implement\n}\n\nvoid RaycastControllerComponent::Move(vec3 local_direction) {\n    move_direction += local_direction;\n}\n\nvoid RaycastControllerComponent::Run() {\n    running = true;\n}\n\nvoid RaycastControllerComponent::Crouch() {\n    crouching = true;\n}\n\nvoid RaycastControllerComponent::Fly() {\n    flying = true;\n}\n\nvoid RaycastControllerComponent::Jump() {\n    if (!is_in_air) {\n        //velocity.y += 0.119f;\n        move_magnitude.y += 0.119f;\n        //air_velocity.y += 1.119f;\n        \n        jump_frames = 60;\n        \n        is_in_air = true;\n    }\n    \n    enabled = true;\n}\n\nvoid RaycastControllerComponent::TurnLeft() {\n    // TODO: implement\n}\n\nvoid RaycastControllerComponent::TurnRight() {\n    // TODO: implement\n}\n\n\nvoid RaycastControllerComponent::ApplyDynamics() {\n     if (!enabled) return;\n    \n    // apply jumping\n    if (jump_frames > 0) {\n        air_velocity.y += 0.0093f;\n        \n        jump_frames--;\n    }\n    \n    // apply gravity\n    if (is_in_air && air_velocity.y > -1.0f) {\n        air_velocity.y -= 0.0053f;\n    }\n\n    // first we will apply the move direction to the current velocity\n    if (glm::length(move_direction) > 0.0f) {\n        \n        // get the move speed\n        float target_speed = walk_speed;\n        if (running) target_speed = run_speed;\n        if (crouching) target_speed = crouch_speed;\n\n        // helps with floaty feeling\n        if (is_in_air) target_speed *= 0.33f;\n        \n        // makes the speed more consistent with FPSController speeds\n        target_speed *= 0.5f;\n\n        // convert local space direction into global space direction and normalize it\n        move_magnitude = glm::normalize(parent->GetRotation() * move_direction);\n        if (std::isnan(move_magnitude.x) || std::isnan(move_magnitude.y) || std::isnan(move_magnitude.z)) move_magnitude = vec3(0.0f, 0.0f, 0.0f);\n        \n        move_magnitude *= target_speed;\n    } else {\n        move_magnitude = {0.0f, 0.0f, 0.0f};\n    }\n}\n\nvoid RaycastControllerComponent::RecoverFromCollisions() {\n     if (!enabled) return;\n    \n    // if not colliding, just apply the movement.\n    if (!collide) {\n        vec3 new_pos = parent->GetLocation() + move_magnitude;\n        parent->UpdateTransform(new_pos, parent->GetRotation());\n        return;\n    }\n    \n    // compute character's new position\n    vec3 old_pos = parent->GetLocation();\n    quat old_rot = parent->GetRotation();\n    vec3 new_pos = old_pos + move_magnitude + air_velocity;\n    \n    // find where the ground is\n    float distance_to_ground = collision_height / 2.0f;\n    float raycast_distance = distance_to_ground + 0.1f;\n    \n    auto ground_collision = Physics::Raycast(new_pos,\n                                             new_pos - vec3(0, raycast_distance, 0),\n                                             -1 ^ (collision_group | Physics::COLL_TRIGGER));\n                                             \n    bool slipping = false;\n    // update being in air status\n    if (ground_collision.collider && air_velocity.y <= 0.0f) {\n        is_in_air = false;\n        air_velocity = {0.0f, 0.0f, 0.0f};\n        \n        slipping = 0.95f > glm::dot(DIRECTION_UP, ground_collision.normal);\n    } else {\n        is_in_air = true;\n    }\n\n    if (slipping) {\n        vec3 downhill = glm::cross(glm::cross(ground_collision.normal, -DIRECTION_UP), ground_collision.normal);\n        new_pos += 0.1f * downhill;\n    }\n\n    // snap controller to ground\n    // TODO: make this respect step_height property\n    if (ground_collision.collider && air_velocity.y <= 0.0f && !slipping) {\n        float actual_ground = glm::distance(parent->GetLocation(), ground_collision.point);\n        new_pos.y += distance_to_ground - actual_ground;\n    }\n    \n    \n    bool fired_callback = false;\n    for (auto& col : wall_collision->GetStoredCollisions()) {\n        if (col.distance != 0.0f) {\n            new_pos -= col.normal * col.distance;\n        }\n        \n        if (fired_callback) continue;\n        \n        // call the wallbonk callback\n        if (wallbonk_callback) {\n            wallbonk_callback(this, col);\n        }\n        \n        fired_callback = true;\n    }\n    \n    wall_collision->SetLocation(new_pos + vec3(0.0f, 0.35f * 0.5f, 0.0f));\n\n    // apply new position to entity\n    parent->UpdateTransform(new_pos, old_rot);\n}\n\nvoid RaycastControllerComponent::ResetMove() {\n    move_direction = {0.0f, 0.0f, 0.0f};\n    running = false;\n    crouching = false;\n    flying = false;\n}\n\n}\n\n"
  },
  {
    "path": "src/components/controller.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H\n\n#include <framework/core.h>\n#include <framework/entitycomponent.h>\n#include <physics/physics.h>\n\nnamespace tram {\n\nclass PhysicsComponent;\nclass TriggerComponent;\n\nclass ControllerComponent : public EntityComponent {\npublic:\n    virtual void Move(vec3 local_direction) = 0;\n    \n    virtual void Run() = 0;\n    virtual void Crouch() = 0;\n    virtual void Fly() = 0;\n    virtual void Jump() = 0;\n    virtual void TurnLeft() = 0;\n    virtual void TurnRight() = 0;\n    \n    virtual void Push(vec3 direction) = 0;\n\n    inline void SetCollisions(bool collide) { this->collide = collide; }\n\n    inline void SetLookDirection(quat direction) { look_direction = direction; }\n    inline quat GetLookDirection() const { return look_direction; }\n    \n    static bool IsDebugInfoDraw();\n    static void SetDebugInfoDraw(bool);\n    \n    static void Update();\nprotected:\n    quat look_direction = {1.0f, 0.0f, 0.0f, 0.0f};\n    bool collide = true;\n};\n\nclass FPSControllerComponent : public ControllerComponent {\npublic:\n    void Start() override;\n    void EventHandler(Event &event) override {}\n    \n    void Move(vec3 local_direction) override;\n    \n    void Run() override;\n    void Crouch() override;\n    void Fly() override;\n    void Jump() override;\n    void TurnLeft() override;\n    void TurnRight() override;\n    \n    void Push(vec3 direction) override;\n    \n    inline void SetCollisionSize(float width, float height, float crouch_height) {\n        collision_width = width;\n        collision_height = height;\n        collision_height_crouch = crouch_height;\n    }\n    \n    inline void SetStepHeight(float height, float crouch_height) {\n        step_height = height;\n        step_height_crouch = crouch_height;\n    }\n    \n    inline void SetWallCollisionCallback(void (*callback)(ControllerComponent*, Physics::Collision)) {\n        wallbonk_callback = callback;\n    }\n    \n    inline void SetWalkSpeed(float speed) { this->walk_speed = speed; }\n    inline void SetRunSpeed(float speed) { this->run_speed = speed; }\n    inline void SetCrouchSpeed(float speed) { this->crouch_speed = speed; }\n    inline void SetFlySpeed(float speed) { this->fly_speed = speed; }\n    inline void SetFriction(float friction) { this->friction = friction; }\n    inline void SetCollisionGroup(uint32_t group) { this->collision_group = group; }\nprotected:\n    FPSControllerComponent() = default;\n    ~FPSControllerComponent() = default;\n    \n    Component<TriggerComponent> walk_collision;\n    Component<TriggerComponent> crouch_collision;\n    \n    void ApplyDynamics();\n    void RecoverFromCollisions();\n    void ResetMove();\n    \n    vec3 velocity = {0.0f, 0.0f, 0.0f};\n    vec3 move_direction = {0.0f, 0.0f, 0.0f};\n    \n\n    bool is_in_air = false;\n    \n    float collision_width = 0.35f;\n    float collision_height = 1.85f;\n    float collision_height_crouch = 0.5f;\n    \n    float step_height = 0.35f;\n    float step_height_crouch = 0.15f;\n    \n    float walk_speed = 0.1f;\n    float run_speed = 0.2f;\n    float crouch_speed = 0.05f;\n    float fly_speed = 0.2f;\n    \n    float friction = 0.89f;\n    \n    bool crouching = false;\n    bool running = false;\n    bool flying = false;\n    \n    id_t standing_on = 0;\n    id_t standing_on_prev = 0;\n    vec3 standing_pos;\n    quat standing_rot;\n    \n    uint32_t collision_group = Physics::COLL_PLAYER;\n    \n    void (*wallbonk_callback)(ControllerComponent*, Physics::Collision) = nullptr;\n    \n    friend class ControllerComponent;\n    template <typename> friend class Pool;\n};\n\nclass RaycastControllerComponent : public ControllerComponent {\npublic:\n    void Start() override;\n    void EventHandler(Event &event) override {}\n    \n    void Move(vec3 local_direction) override;\n    \n    void Run() override;\n    void Crouch() override;\n    void Fly() override;\n    void Jump() override;\n    void TurnLeft() override;\n    void TurnRight() override;\n    \n    void Push(vec3 direction) override;\n    \n    inline void SetCollisionSize(float width, float height, float crouch_height) {\n        collision_width = width;\n        collision_height = height;\n        //collision_height_crouch = crouch_height;\n    }\n    \n    inline void SetStepHeight(float height, float crouch_height) {\n        step_height = height;\n        //step_height_crouch = crouch_height;\n    }\n    \n    inline void SetWallCollisionCallback(void (*callback)(ControllerComponent*, Physics::Collision)) {\n        wallbonk_callback = callback;\n    }\n    \n    inline void SetWalkSpeed(float speed) { this->walk_speed = speed; }\n    inline void SetRunSpeed(float speed) { this->run_speed = speed; }\n    inline void SetCrouchSpeed(float speed) { this->crouch_speed = speed; }\n    inline void SetFlySpeed(float speed) { this->fly_speed = speed; }\n    inline void SetFriction(float speed) { }\n    inline void SetCollisionGroup(uint32_t group) { this->collision_group = group; }\nprotected:\n    RaycastControllerComponent() = default;\n    ~RaycastControllerComponent() = default;\n    \n    Component<TriggerComponent> wall_collision;\n    \n    void ApplyDynamics();\n    void RecoverFromCollisions();\n    void ResetMove();\n    \n    vec3 move_magnitude = {0.0f, 0.0f, 0.0f};\n    vec3 move_direction = {0.0f, 0.0f, 0.0f};\n    \n    vec3 air_velocity = {0.0f, 0.0f, 0.0f};\n\n    bool enabled = false;\n\n    bool is_in_air = false;\n    \n    float collision_width = 0.35f;\n    float collision_height = 1.85f;\n    \n    float step_height = 0.35f;\n    \n    float walk_speed = 0.1f;\n    float run_speed = 0.2f;\n    float crouch_speed = 0.05f;\n    float fly_speed = 0.2f;\n    \n    bool crouching = false;\n    bool running = false;\n    bool flying = false;\n    \n    int jump_frames = 0;\n    \n    id_t standing_on = 0;\n    id_t standing_on_prev = 0;\n    vec3 standing_pos;\n    \n    uint32_t collision_group = Physics::COLL_PLAYER;\n    \n    void (*wallbonk_callback)(ControllerComponent*, Physics::Collision) = nullptr;\n    \n    friend class ControllerComponent;\n    template <typename> friend class Pool;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_CONTROLLERCOMPONENT_H"
  },
  {
    "path": "src/components/decal.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/decal.h>\n\n#include <components/render.h>\n\n#include <render/api.h>\n#include <render/scene.h>\n#include <render/vertices.h>\n#include <render/material.h>\n\n#include <framework/logging.h>\n\n#include <config.h>\n\n/**\n * @class tram::DecalComponent components/decal.h <components/decal.h>\n * \n * Projects decals onto the scene.\n * @see https://racenis.github.io/tram-sdk/documentation/components/decal.html\n */\n\nnamespace tram {\nusing namespace tram::Render;\n\ntemplate <> Pool<DecalComponent> PoolProxy<DecalComponent>::pool(\"DecalComponent pool\", COMPONENT_LIMIT_DECAL);\ntemplate <> void Component<DecalComponent>::init() { ptr = PoolProxy<DecalComponent>::New(); }\ntemplate <> void Component<DecalComponent>::yeet() { PoolProxy<DecalComponent>::Delete(ptr); }\n\nusing namespace API;\n\nDecalComponent::~DecalComponent() {\n    is_ready = false;\n\n    Render::API::RemoveDrawListEntry(draw_list_entry);\n};\n\nvoid DecalComponent::Start() {\n    assert(!is_ready);\n\n    CreateVertexArray(GetVertexDefinition(VERTEX_STATIC), vertex_array);\n\n    auto texture_handle = sprite->GetMaterial()->GetMaterial();\n\n    draw_list_entry = InsertDrawListEntry();\n    SetDrawListVertexArray(draw_list_entry, vertex_array);\n    SetDrawListIndexRange(draw_list_entry, 0, 0);\n    SetFlags(draw_list_entry, FLAG_RENDER);\n    SetDrawListMaterials(draw_list_entry, 1, &texture_handle);\n    SetLightmap(draw_list_entry, Material::Find(\"fullbright\")->GetTexture());\n    SetDrawListShader(draw_list_entry, VERTEX_STATIC, MATERIAL_TEXTURE_ALPHA);\n\n    is_ready = true;\n    UpdateRenderListObject();\n}\n\nvoid DecalComponent::Update() {\n    if (!is_ready) return;\n}\n\nstatic vec4 GetPlaneEquation(vec3 a, vec3 b, vec3 c) {\n    vec3 normal = glm::cross(b - a, c - a);\n    return vec4(normal, -glm::dot(a, normal));\n}\n\nstatic float PlaneIntersection(vec4 plane, vec3 a, vec3 b) {\n    float denom = plane.x * (b.x - a.x) + plane.y * (b.y - a.y) + plane.z * (b.z - a.z);\n    if (denom == 0.0f) {\n        return INFINITY;\n    }\n    \n    float t = -(plane.x * a.x + plane.y * a.y + plane.z * a.z + plane.w) / denom;\n    return t;\n}\n\n\n\nstatic void ClipAABBTriangle(AABBTriangle triangle, vec4 plane, auto callback) {\n    bool keep_p1 = glm::dot(vec4(triangle.point1, 1.0f), plane) < 0.0f;\n    bool keep_p2 = glm::dot(vec4(triangle.point2, 1.0f), plane) < 0.0f;\n    bool keep_p3 = glm::dot(vec4(triangle.point3, 1.0f), plane) < 0.0f;\n    \n    if (keep_p1 && keep_p2 && keep_p3) {\n        callback(triangle);\n        return;\n    }\n    \n    if (!keep_p1 && !keep_p2 && !keep_p3) {\n         return;\n    }\n\n    if (keep_p1 && keep_p2) {\n        float a = PlaneIntersection(plane, triangle.point1, triangle.point3);\n        float b = PlaneIntersection(plane, triangle.point2, triangle.point3);\n        \n        AABBTriangle triangle_a = triangle;\n        AABBTriangle triangle_b = triangle;\n        \n        triangle_a.point3 = glm::mix(triangle.point1, triangle.point3, a);\n        triangle_b.point3 = glm::mix(triangle.point2, triangle.point3, b);\n        triangle_b.point1 = triangle_a.point3;\n        \n        callback(triangle_a);\n        callback(triangle_b);\n        \n        return;\n    }\n    \n    if (keep_p1 && keep_p3) {\n        float a = PlaneIntersection(plane, triangle.point1, triangle.point2);\n        float b = PlaneIntersection(plane, triangle.point3, triangle.point2);\n        \n        AABBTriangle triangle_a = triangle;\n        AABBTriangle triangle_b = triangle;\n        \n        triangle_a.point2 = glm::mix(triangle.point1, triangle.point2, a);\n        triangle_b.point2 = glm::mix(triangle.point3, triangle.point2, b);\n        triangle_b.point1 = triangle_a.point2;\n        \n        callback(triangle_a);\n        callback(triangle_b);\n        \n        return;\n    }\n    \n    if (keep_p2 && keep_p3) {\n        float a = PlaneIntersection(plane, triangle.point2, triangle.point1);\n        float b = PlaneIntersection(plane, triangle.point3, triangle.point1);\n        \n        AABBTriangle triangle_a = triangle;\n        AABBTriangle triangle_b = triangle;\n        \n        triangle_a.point1 = glm::mix(triangle.point2, triangle.point1, a);\n        triangle_b.point1 = glm::mix(triangle.point3, triangle.point1, b);\n        triangle_b.point2 = triangle_a.point1;\n        \n        callback(triangle_a);\n        callback(triangle_b);\n        \n        return;\n    }\n    \n    \n    if (keep_p1) {\n        float a = PlaneIntersection(plane, triangle.point2, triangle.point1);\n        float b = PlaneIntersection(plane, triangle.point3, triangle.point1);\n        \n        triangle.point2 = glm::mix(triangle.point2, triangle.point1, a);\n        triangle.point3 = glm::mix(triangle.point3, triangle.point1, b);\n        \n        callback(triangle);\n        \n        return;\n    }\n    \n    if (keep_p2) {\n        float a = PlaneIntersection(plane, triangle.point1, triangle.point2);\n        float b = PlaneIntersection(plane, triangle.point3, triangle.point2);\n        \n        triangle.point1 = glm::mix(triangle.point1, triangle.point2, a);\n        triangle.point3 = glm::mix(triangle.point3, triangle.point2, b);\n        \n        callback(triangle);\n        \n        return;\n    }\n    \n    if (keep_p3) {\n        float a = PlaneIntersection(plane, triangle.point1, triangle.point3);\n        float b = PlaneIntersection(plane, triangle.point2, triangle.point3);\n        \n        triangle.point1 = glm::mix(triangle.point1, triangle.point3, a);\n        triangle.point2 = glm::mix(triangle.point2, triangle.point3, b);\n        \n        callback(triangle);\n        \n        return;\n    }\n}\n\nvoid DecalComponent::UpdateRenderListObject() {\n    if (!is_ready) return;\n\n    const float frame_width = sprite->GetFrames()[frame].width;\n    const float frame_height = sprite->GetFrames()[frame].height;\n\n    float tex_width = frame_width / (float)sprite->GetMaterial()->GetWidth();\n    float tex_height = frame_height / (float)sprite->GetMaterial()->GetHeight();\n    float tex_w_off = (float)sprite->GetFrames()[frame].offset_x / (float)sprite->GetMaterial()->GetWidth();\n    float tex_h_off = (float)sprite->GetFrames()[frame].offset_y / (float)sprite->GetMaterial()->GetHeight();\n    tex_h_off = 1.0f - tex_h_off - tex_height;\n\n    const float decal_width = frame_width / 32.0f * scale;\n    const float decal_height = frame_height / 32.0f * scale;\n\n    const float half_width = decal_width / 2.0f;\n    const float half_height = decal_height / 2.0f;\n\n    (void)tex_width;\n    (void)tex_height;\n    (void)tex_w_off;\n    (void)tex_h_off;\n\n    vec3 normal = rotation * DIRECTION_FORWARD;\n\n    vec3 top_left_front = {-half_width, half_height, 0.0f};\n    vec3 top_right_front = {half_width, half_height, 0.0f};\n    vec3 bottom_left_front = {-half_width, -half_height, 0.0f};\n    vec3 bottom_right_front = {half_width, -half_height, 0.0f};\n    \n    top_left_front = location + rotation * top_left_front;\n    top_right_front = location + rotation * top_right_front;\n    bottom_left_front = location + rotation * bottom_left_front;\n    bottom_right_front = location + rotation * bottom_right_front;\n    \n    vec3 top_left_back = top_left_front + normal;\n    vec3 top_right_back = top_right_front + normal;\n    vec3 bottom_left_back = bottom_left_front + normal;\n    vec3 bottom_right_back = bottom_right_front + normal;\n\n    vec3 aabb_min = top_left_front;\n    vec3 aabb_max = top_left_front;\n    \n    aabb_min = MergeAABBMin(aabb_min, top_right_front);\n    aabb_min = MergeAABBMin(aabb_min, bottom_left_front);\n    aabb_min = MergeAABBMin(aabb_min, bottom_right_front);\n    \n    aabb_min = MergeAABBMin(aabb_min, top_left_back);\n    aabb_min = MergeAABBMin(aabb_min, top_right_back);\n    aabb_min = MergeAABBMin(aabb_min, bottom_left_back);\n    aabb_min = MergeAABBMin(aabb_min, bottom_right_back);\n    \n    aabb_max = MergeAABBMax(aabb_max, top_right_front);\n    aabb_max = MergeAABBMax(aabb_max, bottom_left_front);\n    aabb_max = MergeAABBMax(aabb_max, bottom_right_front);\n    \n    aabb_max = MergeAABBMax(aabb_max, top_left_back);\n    aabb_max = MergeAABBMax(aabb_max, top_right_back);\n    aabb_max = MergeAABBMax(aabb_max, bottom_left_back);\n    aabb_max = MergeAABBMax(aabb_max, bottom_right_back);\n\n\n    vec4 top_plane = GetPlaneEquation(top_left_front, top_right_front, top_left_back);\n    vec4 bottom_plane = GetPlaneEquation(bottom_left_front, bottom_left_back, bottom_right_front);\n    \n    vec4 left_plane = GetPlaneEquation(top_left_front, bottom_left_back, bottom_left_front);\n    vec4 right_plane = GetPlaneEquation(top_right_front, bottom_right_front, bottom_right_back);\n \n    vec4 front_plane = GetPlaneEquation(top_left_front, bottom_left_front, bottom_right_front);\n    vec4 back_plane = GetPlaneEquation(top_left_back, bottom_right_back, bottom_left_back);\n\n    std::vector<Render::StaticModelVertex> verts;\n\n    AABB::FindAllIntersectionsFromAABB(aabb_min, aabb_max, [&](AABB::ReferenceType type, EntityComponent* component) {\n        if (type != Render::AABB::REFERENCE_RENDERCOMPONENT) return;\n        RenderComponent* rcomp = (RenderComponent*)component;\n        \n        vec3 local_min = aabb_min - rcomp->GetLocation();\n        vec3 local_max = aabb_max - rcomp->GetLocation();\n        \n        RotateAABB(local_min, local_max, -rcomp->GetRotation());\n        \n        std::vector<AABBTriangle> tris;\n        \n        rcomp->GetModel()->FindAllFromAABB(local_min, local_max, tris);\n        \n        for (auto& tri : tris) {\n            tri.point1 = rcomp->GetLocation() + rcomp->GetRotation() * tri.point1;\n            tri.point2 = rcomp->GetLocation() + rcomp->GetRotation() * tri.point2;\n            tri.point3 = rcomp->GetLocation() + rcomp->GetRotation() * tri.point3;\n            \n            tri.normal = tri.normal * rcomp->GetRotation();\n            \n            ClipAABBTriangle(tri, front_plane, [&](AABBTriangle tri) {\n            ClipAABBTriangle(tri, back_plane, [&](AABBTriangle tri) {\n            ClipAABBTriangle(tri, top_plane, [&](AABBTriangle tri) {\n            ClipAABBTriangle(tri, bottom_plane, [&](AABBTriangle tri) {\n            ClipAABBTriangle(tri, left_plane, [&](AABBTriangle tri) {\n            ClipAABBTriangle(tri, right_plane, [&](AABBTriangle tri) {\n                \n                Render::StaticModelVertex vert1;\n                Render::StaticModelVertex vert2;\n                Render::StaticModelVertex vert3;\n                \n                vec3 local1 = glm::inverse(rotation) * (tri.point1 - location);\n                vec3 local2 = glm::inverse(rotation) * (tri.point2 - location);\n                vec3 local3 = glm::inverse(rotation) * (tri.point3 - location);\n                \n                vert1.co = tri.point1 + tri.normal * 0.01f;\n                vert2.co = tri.point2 + tri.normal * 0.01f;\n                vert3.co = tri.point3 + tri.normal * 0.01f;\n                \n                vert1.normal = tri.normal;\n                vert2.normal = tri.normal;\n                vert3.normal = tri.normal;\n                \n                vert1.tex = {local1.x / decal_width + 0.5f, local1.y / decal_height + 0.5f};\n                vert2.tex = {local2.x / decal_width + 0.5f, local2.y / decal_height + 0.5f};\n                vert3.tex = {local3.x / decal_width + 0.5f, local3.y / decal_height + 0.5f};\n                \n                vert1.tex.x *= tex_width;\n                vert2.tex.x *= tex_width;\n                vert3.tex.x *= tex_width;\n                \n                vert1.tex.y *= tex_height;\n                vert2.tex.y *= tex_height;\n                vert3.tex.y *= tex_height;\n                \n                vert1.tex.x += tex_w_off;\n                vert2.tex.x += tex_w_off;\n                vert3.tex.x += tex_w_off;\n                \n                vert1.tex.y += tex_h_off + 1.0f;\n                vert2.tex.y += tex_h_off + 1.0f;\n                vert3.tex.y += tex_h_off + 1.0f;\n                \n                vert1.lighttex = {0.0f, 0.0f};\n                vert2.lighttex = {0.0f, 1.0f};\n                vert3.lighttex = {1.0f, 1.0f};\n                \n                vert1.texture = 0;\n                vert2.texture = 0;\n                vert3.texture = 0;\n                \n                verts.push_back(vert1);\n                verts.push_back(vert2);\n                verts.push_back(vert3);\n            });\n            });\n            });\n            });\n            });\n            });\n        }\n\n    });\n\n    Render::API::UpdateVertexArray(vertex_array, sizeof(Render::StaticModelVertex) * verts.size(), verts.data());\n    Render::API::SetDrawListIndexRange(draw_list_entry, 0, verts.size());\n    \n    Render::API::SetMatrix(draw_list_entry, PositionRotationToMatrix(vec3(0.0f, 0.0f, 0.0f), quat(1.0f, 0.0f, 0.0f, 0.0f)));\n}\n\n}"
  },
  {
    "path": "src/components/decal.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_DECALCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_DECALCOMPONENT_H\n\n#include <render/render.h>\n#include <render/sprite.h>\n\nnamespace tram {\n\nclass DecalComponent : public EntityComponent {\npublic:\n    DecalComponent() : sprite(this) {}\n    ~DecalComponent();\n    inline name_t GetSprite() { return sprite->GetName(); }\n\n    void SetSprite(Render::Sprite* sprite) {\n        this->sprite = sprite;\n    }\n\n    void Start();\n    \n    void Update();\n\n    void UpdateRenderListObject();\n\n    void SetScale(float scale) {\n        this->scale = scale;\n    }\n\n    void SetFrame(uint32_t frame) {\n        this->frame = frame;\n    }\n\n    void SetLocation(vec3 location) {\n        this->location = location;\n        UpdateRenderListObject();\n    }\n    \n    void SetRotation(quat rotation) {\n        this->rotation = rotation;\n        UpdateRenderListObject();\n    }\n\n    void EventHandler(Event &event){return;}\nprotected:\n    ResourceProxy<Render::Sprite> sprite;\n\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    \n    float scale = 1.0f;\n    \n    uint32_t frame = 0;\n\n    Render::drawlistentry_t draw_list_entry = {};\n    Render::vertexarray_t vertex_array = {};\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_DECALCOMPONENT_H"
  },
  {
    "path": "src/components/light.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/light.h>\n\n#include <render/scene.h>\n#include <render/api.h>\n\n#include <config.h>\n\n/**\n * @class tram::LightComponent components/light.h <components/light.h>\n * \n * Provides a real-time illumination for the scene.\n * @see https://racenis.github.io/tram-sdk/documentation/components/light.html\n */\n\n/* \n * TODO: Same as with AudioComponents -- don't like how the 3D models are set up.\n */\n\nnamespace tram {\n\ntemplate <> Pool<LightComponent> PoolProxy<LightComponent>::pool(\"LightComponent pool\", COMPONENT_LIMIT_LIGHT);   \ntemplate <> void Component<LightComponent>::init() { ptr = PoolProxy<LightComponent>::New(); }\ntemplate <> void Component<LightComponent>::yeet() { PoolProxy<LightComponent>::Delete(ptr); }\n\nvoid LightComponent::Init() {\n    light = Render::API::MakeLight();\n    \n    Render::LightTree::AddLight(light, location, distance);\n    \n    SetupModel();\n    \n    is_init = true;\n    is_ready = true;\n    \n    Update();    \n}\n\nLightComponent::~LightComponent() {\n    Render::API::YeetLight(light);\n    Render::LightTree::RemoveLight(light);\n    \n    light = {};\n    is_ready = false;\n}\n\nvoid LightComponent::Update() {\n    if (is_ready) {\n        Render::API::SetLightParameters(light, location, color, distance, direction, exponent);\n        Render::LightTree::RemoveLight(light);\n        Render::LightTree::AddLight(light, location, distance);\n        \n        if (model) {\n            model->SetLocation(location);\n            model->SetColor(color);\n        }\n    }\n}\n\n/// Sets the location of the light.\nvoid LightComponent::SetLocation(vec3 location) {\n    this->location = location;\n    Update();\n}\n\n/// Sets the color of the light.\nvoid LightComponent::SetColor(Render::color_t color) {\n    this->color = color;\n    Update();\n}\n\n/// Sets the distance of the light.\n/// Sets how far the light will travel.\nvoid LightComponent::SetDistance(float dist) {\n    this->distance = dist;\n    Update();\n}\n\nvoid LightComponent::SetDirection(vec3 direction) {\n    this->direction = glm::normalize(direction);\n    Update();\n}\n\nvoid LightComponent::SetExponent(float exponent) {\n    this->exponent = exponent;\n    Update();\n}\n\n/// Returns the color of the light.\nRender::color_t LightComponent::GetColor() {\n    return this->color;\n}\n\n/// Returns the distance of the light.\nfloat LightComponent::GetDistance() {\n    return this->distance;\n}\n\nstatic bool draw_light = false;\n\nvoid LightComponent::SetupModel() {\n    if (draw_light) {\n        model.make();\n        model->SetModel(\"dev/light\");\n        model->SetLocation(this->location);\n        model->SetParent(this->parent);\n        model->SetColor(this->color);\n        model->SetLightmap(\"fullbright\");\n        model->SetRenderDebug(false);\n        model->Init();\n    } else {\n        model.clear();\n    }\n}\n\n/// Checks whether the lights are drawn.\n/// Check SetLightDraw() for more info.\nbool LightComponent::IsLightDraw() {\n    return draw_light;\n}\n\n/// Sets the drawing oflights.\n/// If set to true, each light component will initialize a 3D model, which will\n/// allow you to see the posiiton of the light sources. Useful for debugging.\nvoid LightComponent::SetLightDraw(bool draw) {\n    if (draw_light == draw) return;\n    draw_light = draw;\n    \n    for (auto& source : PoolProxy<LightComponent>::GetPool()) {\n        source.SetupModel();\n    }\n}\n\n}\n"
  },
  {
    "path": "src/components/light.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H\n\n#include <framework/entitycomponent.h>\n#include <components/render.h>\n#include <render/render.h>\n\nnamespace tram {\n\nclass LightComponent : public EntityComponent {\npublic:\n    void Init ();\n    void Start () {}\n    \n    void SetLocation(vec3 location);\n    void SetColor(Render::color_t color);\n    void SetDistance(float dist);\n    void SetDirection(vec3 direction);\n    void SetExponent(float exponent);\n    \n    vec3 GetColor();\n    float GetDistance();\n\n    void EventHandler(Event &event) { return; }\n    ~LightComponent();\n    \n    static bool IsLightDraw();\n    static void SetLightDraw(bool);\nprotected:\n    void Update();\n    \n    Render::light_t light = {};\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    Render::color_t color = {1.0f, 1.0f, 1.0f};\n    float distance = 15.0f;\n    vec3 direction = {0.0f, 0.0f, -1.0f};\n    float exponent = 0.0f;\n    \n    void SetupModel();\n    Component<RenderComponent> model;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_LIGHTCOMPONENT_H"
  },
  {
    "path": "src/components/mesh.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <components/mesh.h>\n\n#include <render/scene.h>\n#include <render/light.h>\n\n#include <config.h>\n\n/**\n * @class tram::MeshComponent components/mesh.h <components/mesh.h>\n * \n * Renders a user-specified mesh.\n * @see https://racenis.github.io/tram-sdk/documentation/components/mesh.html\n */\n\n/*\n * THERE IS A PROBLEM!\n * \n * mesh vertex doesn't allow setting of ivecs... proposed solution is that\n * instead of value_t, we have an std::pair<int, char[16]> consisting of\n * VertexAttribute::type type and the actual value. then we have a bunch of\n * different AddAttribute overloads.\n * \n * also we should fix the FFP_IGNORE problem for determining material\n * \n * */\n\nnamespace tram {\n\nusing namespace tram::Render;\nusing namespace tram::Render::API;\n\ntemplate <> Pool<MeshComponent> PoolProxy<MeshComponent>::pool(\"MeshComponent pool\", COMPONENT_LIMIT_RENDER);\ntemplate <> void Component<MeshComponent>::init() { ptr = PoolProxy<MeshComponent>::New(); }\ntemplate <> void Component<MeshComponent>::yeet() { PoolProxy<MeshComponent>::Delete(ptr); }\n\nMeshVertex::MeshVertex(Render::vertexformat_t format) {\n    assert(GetVertexFormatName(format) && \"Is valid format\");\n    \n    this->format = format;\n    \n    VertexDefinition definition = GetVertexDefinition(format);\n    attributes = new value_t[definition.attribute_count];\n}\n\nMeshVertex::~MeshVertex() {\n    delete[] attributes;\n    attributes = nullptr;\n}\n\nint GetFFPPosition(Render::vertexformat_t format, decltype(Render::VertexAttribute::ffp_type) ffp) {\n    VertexDefinition definition = GetVertexDefinition(format);\n    for (size_t i = 0; i < definition.attribute_count; i++) {\n        if (definition.attributes[i].ffp_type == ffp) return i;\n    }\n    assert(false && \"Should not happen\");\n    return -1;\n}\n\nvoid MeshVertex::SetPosition(vec3 position) {\n    attributes[GetFFPPosition(format, Render::VertexAttribute::FFP_POSITION)] = position;\n}\n\nvoid MeshVertex::SetNormal(vec3 normal) {\n    attributes[GetFFPPosition(format, Render::VertexAttribute::FFP_NORMAL)] = normal;\n}\n\nvoid MeshVertex::SetColor(vec3 color) {\n    attributes[GetFFPPosition(format, Render::VertexAttribute::FFP_COLOR)] = color;\n}\n\nvoid MeshVertex::SetTextureUV(vec2 uv) {\n    attributes[GetFFPPosition(format, Render::VertexAttribute::FFP_TEXTURE)] = uv;\n}\n\nvoid MeshVertex::SetLightmapUV(vec2 uv) {\n    attributes[GetFFPPosition(format, Render::VertexAttribute::FFP_LIGHTMAP)] = uv;\n}\n\n/// @warning Due to value_t not supporting ivec and uvec types, setting a value\n///          for these attributes currently is not possible.\nvoid MeshVertex::SetAttribute(size_t index, value_t value) {\n    VertexDefinition definition = GetVertexDefinition(format);\n    assert(index < definition.attribute_count);\n    \n    switch (definition.attributes[index].type) {\n        case Render::VertexAttribute::FLOAT32: switch (definition.attributes[index].size) {\n            case 1: assert(value.GetType() == TYPE_FLOAT32); break;\n            case 2: assert(value.GetType() == TYPE_VEC2); break;\n            case 3: assert(value.GetType() == TYPE_VEC3); break;\n            case 4: assert(value.GetType() == TYPE_VEC4); break;\n            default: assert(false && \"Should not happen.\");\n        } break;\n        case Render::VertexAttribute::INT32:\n        case Render::VertexAttribute::UINT32:\n            assert(value.IsInt());\n    }\n    \n    attributes[index] = value;\n}\n\nstd::pair<Render::vertexformat_t, const value_t*> MeshVertex::GetData() const {\n    return {format, attributes};\n}\n\nMeshComponent::MeshComponent() {\n    render_flags = FLAG_RENDER;\n    \n    materials = new Material*[API::GetMaxIndexRangeLength()];\n    offsets = new vec4[API::GetMaxIndexRangeLength()];\n    for (size_t i = 0; i < API::GetMaxIndexRangeLength(); i++) {\n        materials[i] = nullptr;\n        offsets[i] = {0.0f, 0.0f, 0.0f, 0.0f};\n    }\n}\n\nMeshComponent::~MeshComponent() {\n    is_ready = false;\n    \n    if (draw_list_entry.generic) {\n        Render::API::RemoveDrawListEntry(draw_list_entry);\n    }\n\n    if (aabb_tree_leaf) {\n        AABB::RemoveLeaf(aabb_tree_leaf);\n    }\n    \n    if (buffer) {\n        free(buffer);\n        buffer = nullptr;\n    }\n    \n    for (size_t i = 0; i < API::GetMaxIndexRangeLength(); i++) {\n        if (!materials[i]) continue;\n        materials[i]->RemoveReference();\n        Async::CancelRequest(this, materials[i]);\n    }\n    \n    delete[] materials;\n    delete[] offsets;\n    materials = nullptr;\n    offsets = nullptr;\n};\n\nstatic void IntoBuffer(char*& buffer, int& buffer_size, const void* data, int offset, int size) {\n    if (buffer_size < offset + size) {\n        if (!buffer_size) {\n            buffer_size = 1024;\n        } else {\n            buffer_size += buffer_size >> 2;\n        }\n        \n        buffer = (char*)realloc(buffer, buffer_size);\n        \n        IntoBuffer(buffer, buffer_size, data, offset, size);\n        \n        return;\n    }\n    \n    mempcpy(buffer + offset, data, size);\n}\n\n\nvoid MeshComponent::InsertVertex(const MeshVertex& vertex, vec3& point, uint32_t& material) {\n    auto [format, attributes] = vertex.GetData();\n    VertexDefinition definition = GetVertexDefinition(format);\n    \n    if (vertex_format_set) {\n        assert(vertex_format == format);\n    } else {\n        vertex_format = format;\n        vertex_format_set = true;\n    }\n\n    for (size_t i = 0; i < definition.attribute_count; i++) {\n        assert(attributes[i].GetType() != TYPE_UNDEFINED);\n        \n        int offset = definition.attributes[i].offset + vertices * definition.attributes[i].stride;\n        \n        switch (definition.attributes[i].type) {\n            case Render::VertexAttribute::FLOAT32: switch (definition.attributes[i].size) {\n                case 1: { float val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 2: { vec2 val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 3: { vec3 val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 4: { vec4 val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                default: assert(false && \"Should not happen.\");\n            } break;\n            case Render::VertexAttribute::INT32: switch (definition.attributes[i].size) {\n                case 1: { int32_t val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 2: { ivec2 val = {(int32_t)attributes[i], 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 3: { ivec3 val = {(int32_t)attributes[i], 0, 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 4: { ivec4 val = {(int32_t)attributes[i], 0, 0, 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                default: assert(false && \"Should not happen.\");\n            } break;\n            case Render::VertexAttribute::UINT32: switch (definition.attributes[i].size) {\n                case 1: { uint32_t val = attributes[i]; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 2: { uvec2 val = {(uint32_t)attributes[i], 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 3: { uvec3 val = {(uint32_t)attributes[i], 0, 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                case 4: { uvec4 val = {(uint32_t)attributes[i], 0, 0, 0}; IntoBuffer(buffer, buffer_size, &val, offset, sizeof(val)); } break;\n                default: assert(false && \"Should not happen.\");\n            } break;\n        }\n        \n        if (definition.attributes[i].ffp_type == Render::VertexAttribute::FFP_POSITION) {\n            point = attributes[i];\n        }\n        \n        // TODO: actually fix this idiotismus\n        if (definition.attributes[i].ffp_type == Render::VertexAttribute::FFP_IGNORE) {\n            material = attributes[i];\n        }\n    }\n    \n    vertices++;\n}\n\nvoid MeshComponent::Add(const MeshVertex& v1, const MeshVertex& v2) {\n    assert(!vertices || (render_flags & FLAG_DRAW_LINES));\n    render_flags |= FLAG_DRAW_LINES;\n    \n    // we'll just be ignoring this point, since there is no meaningful way to\n    // build an AABB tree leaf out of a line. we only do this for vertices\n    vec3 point;\n    uint32_t material;\n    InsertVertex(v1, point, material);\n    InsertVertex(v2, point, material);\n}\n\nvoid MeshComponent::Add(const MeshVertex& v1, const MeshVertex& v2, const MeshVertex& v3) {\n    assert(!(render_flags & FLAG_DRAW_LINES));\n    \n    const bool any_vertices = vertices;\n    vec3 p1 = {0, 0, 0}, p2 = {0, 0, 0}, p3 = {0, 0, 0};\n    uint32_t material = 0;\n    \n    InsertVertex(v1, p1, material);\n    InsertVertex(v2, p2, material);\n    InsertVertex(v3, p3, material);\n    \n    vec3 min = MergeAABBMin(p1, MergeAABBMin(p2, p3));\n    vec3 max = MergeAABBMax(p1, MergeAABBMax(p2, p3));\n    \n    if (!any_vertices) {\n        aabb_min = min;\n        aabb_max = max;\n    } else {\n        aabb_min = MergeAABBMin(aabb_min, min);\n        aabb_max = MergeAABBMax(aabb_max, max);\n    }\n    \n    vec3 normal = glm::normalize(glm::cross(glm::normalize(p2 - p1), glm::normalize(p3 - p1)));\n    \n    uint32_t index = aabb_triangles.size();\n    aabb_triangles.push_back({.point1 = p1, .point2 = p2, .point3 = p3, .normal = normal, .material = material});\n    aabb_leaves.push_back(aabb_tree.InsertLeaf(index, min, max));\n}\n\nvoid MeshComponent::Clear() {\n    vertices = 0;\n    \n    // empty aabb tree\n    for (auto leaf : aabb_leaves) {\n        aabb_tree.RemoveLeaf(leaf);\n    }\n    aabb_leaves.clear();\n    aabb_triangles.clear();\n}\n\nvoid MeshComponent::Reserve(Render::vertexformat_t format, size_t vertex_count) {\n    VertexDefinition definition = GetVertexDefinition(format);\n    size_t vertex_size = 0;\n    for (size_t i = 0; i < definition.attribute_count; i++) {\n        // since sizeof(float) == sizeof(u/int32_t) == 4, taking shortcut\n        vertex_size += definition.attributes[i].size * 4;\n    }\n    size_t allocate_size = vertex_size * vertex_count;\n    buffer = (char*)realloc(buffer, allocate_size);\n    \n    aabb_tree.Reserve(vertex_count / 3);\n    aabb_triangles.reserve(vertex_count / 3);\n    aabb_leaves.reserve(vertex_count / 3);\n}\n\nvoid MeshComponent::Commit() {\n    if (!is_ready) return;\n    \n    API::UpdateVertexArray(vertex_array, buffer_size, buffer);\n    Render::API::SetDrawListIndexRange(draw_list_entry, 0, vertices);\n    \n    RefreshAABB();\n}\n\nvoid MeshComponent::SetMaterial(Render::Material* material, uint32_t index) {\n    assert(!this->IsReady());\n    assert(index < API::GetMaxIndexRangeLength());\n    assert(material);\n    if (material_type_set) {\n        assert(material_type == material->GetType());\n    } else {\n        material_type = material->GetType();\n        material_type_set = true;\n    }\n    materials[index] = material;\n    material->AddReference();\n    \n    if (material->GetStatus() != Resource::READY) {\n        this->resources_waiting++;\n        Async::RequestResource(this, material);\n    }\n}\n\n/// Sets the world parameters for model rendering.\nvoid MeshComponent::SetDirectionaLight(bool enabled) {\n    if (!enabled) {\n        render_flags |= FLAG_NO_DIRECTIONAL;\n    } else {\n        render_flags &= ~FLAG_NO_DIRECTIONAL;\n    }\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetFlags(draw_list_entry, render_flags);\n    }\n}\n\n/// Sets render debugging.\n/// If set to false, the 3D model will not have debug text for it when the\n/// render debug text rendering is turned on.\nvoid MeshComponent::SetRenderDebug(bool enabled) {\n    if (!enabled) {\n        render_flags |= FLAG_NO_DEBUG;\n    } else {\n        render_flags &= ~FLAG_NO_DEBUG;\n    }\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetFlags(draw_list_entry, render_flags);\n    }\n}\n\n/// Sets the location of the mesh.\nvoid MeshComponent::SetLocation(vec3 location) {\n    this->location = location;\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetMatrix(draw_list_entry, PositionRotationScaleToMatrix(location, rotation, scale));\n        light_t lights[4];\n        Render::LightTree::FindLights(location, lights);\n        Render::API::SetLights(draw_list_entry, lights);\n\n        Render::API::SetSphericalHarmonic(draw_list_entry, LightGraph::LookupHarmonic(location, -1));\n    \n    }\n    \n    RefreshAABB();\n}\n\n/// Sets the rotation of the mesh.\nvoid MeshComponent::SetRotation(quat rotation) {\n    this->rotation = rotation;\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetMatrix(draw_list_entry, PositionRotationScaleToMatrix(location, rotation, scale));\n    }\n\n    RefreshAABB();\n}\n\n/// Sets the scale of the mesh.\nvoid MeshComponent::SetScale(vec3 scale) {\n    this->scale = scale;\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetMatrix(draw_list_entry, PositionRotationScaleToMatrix(location, rotation, scale));\n    }\n    \n    RefreshAABB();\n}\n\nvoid MeshComponent::SetLayer(uint32_t layer) {\n    this->layer = layer;\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetLayer(draw_list_entry, layer);\n    }\n}\n\nvoid MeshComponent::SetTextureOffset(name_t material, vec4 offset) {\n    for (uint32_t i = 0; materials[i] && i < API::GetMaxIndexRangeLength(); i++) {\n        if (materials[i]->GetName() != material) continue;\n        \n        offsets[i] = offset;\n        \n        break;\n    }\n\n    if (!is_ready) return;\n\n    Render::API::SetDrawListTextureOffsets(draw_list_entry, API::GetMaxIndexRangeLength(), offsets);\n}\n\nvoid MeshComponent::SetLineDrawingMode(bool enabled) {\n    if (enabled) {\n        render_flags |= FLAG_LINE_FILL_POLY;\n    } else {\n        render_flags &= ~FLAG_LINE_FILL_POLY;\n    }\n    \n    if (draw_list_entry.generic) {\n        Render::API::SetFlags(draw_list_entry, render_flags);\n    }\n}\n\n/// Sets the scale of the model.\nvoid MeshComponent::SetColor(vec3 color) {\n    this->color = color;\n    \n    if (is_ready) {\n        \n        // TODO: fix hardcodings\n        vec4 colors[15];\n    \n        // hold on... why the fuck are we mixing in material colors\n        // the material API already has colors.. FUCK\n        // TODO: figure this shit out\n        for (uint32_t i = 0; i < API::GetMaxIndexRangeLength(); i++) {\n            colors[i] = vec4(this->materials[i]->GetColor() * color, 1.0f);\n        }\n    \n        Render::API::SetDrawListColor(draw_list_entry, vec4(color, 1.0f));\n    }\n}\n\nvoid MeshComponent::Start() {\n    // TODO: unhardcode these values\n    // actually let's modify stackpool to allow popping, then move these into stackpool\n    material_t materials[15]; uint32_t material_count = 0;\n    vec4 colors[15];\n    \n    CreateVertexArray(GetVertexDefinition(vertex_format), vertex_array);\n    \n    draw_list_entry = Render::API::InsertDrawListEntry();\n    \n    for (uint32_t i = 0; i < API::GetMaxIndexRangeLength(); material_count = ++i) {\n        if (!this->materials[i]) break;\n        materials[i] = this->materials[i]->GetMaterial();\n        colors[i] = vec4(this->materials[i]->GetColor() * color, 1.0f);\n    }\n\n    light_t lights[4];\n    Render::LightTree::FindLights(location, lights);\n    Render::API::SetLights(draw_list_entry, lights);\n\n    Render::API::SetDrawListVertexArray(draw_list_entry, vertex_array);\n    Render::API::SetDrawListMaterials(draw_list_entry, material_count, materials);\n    Render::API::SetDrawListColor(draw_list_entry, vec4(color, 1.0f));\n    Render::API::SetDrawListTextureOffsets(draw_list_entry, API::GetMaxIndexRangeLength(), offsets);\n    const bool found_shader = Render::API::SetDrawListShader(draw_list_entry, vertex_format, material_type);\n    Render::API::SetDrawListIndexRange(draw_list_entry, 0, vertices);\n\n    Render::API::SetFlags(draw_list_entry, render_flags);\n    Render::API::SetLayer(draw_list_entry, layer);\n\n    Render::API::SetMatrix(draw_list_entry, PositionRotationScaleToMatrix(location, rotation, scale));\n\n    if (glm::distance(aabb_min, aabb_max) > 0.001f) {\n        render_flags |= FLAG_USE_AABB;\n        Render::API::SetDrawListAABB(draw_list_entry, aabb_min, aabb_max);\n        Render::API::SetFlags(draw_list_entry, render_flags);\n    }\n    \n    if (!found_shader) {\n        Log(Severity::WARNING, System::RENDER, \"Can't find shader for combination of {} and {}!\", GetVertexFormatName(vertex_format), GetMaterialTypeName(material_type));\n    }\n    \n    is_ready = true;\n    \n    Commit();\n}\n\nvoid MeshComponent::RefreshAABB() {\n    if (aabb_tree_leaf) {\n        AABB::RemoveLeaf(aabb_tree_leaf);\n    }\n    \n    aabb_tree_leaf = AABB::InsertLeaf(this);\n}\n\n}\n"
  },
  {
    "path": "src/components/mesh.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_MESHCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_MESHCOMPONENT_H\n\n#include <framework/entitycomponent.h>\n#include <render/material.h>\n#include <render/renderer.h>\n\n#include <framework/value.h>\n\n#include <templates/aabb.h>\n\nnamespace tram {\n\nclass MeshVertex {\npublic:\n    MeshVertex(Render::vertexformat_t format);\n    ~MeshVertex();\n    \n    void SetPosition(vec3 position);\n    void SetNormal(vec3 normal);\n    void SetColor(vec3 color);\n    void SetTextureUV(vec2 uv);\n    void SetLightmapUV(vec2 uv);\n    \n    void SetAttribute(size_t index, value_t value);\n    \n    std::pair<Render::vertexformat_t, const value_t*> GetData() const;\nprivate:\n    value_t* attributes;\n    Render::vertexformat_t format;\n};\n\nclass MeshComponent : public EntityComponent {\npublic:\n    MeshComponent();\n    ~MeshComponent();\n\n    void Add(const MeshVertex& v1, const MeshVertex& v2);\n    void Add(const MeshVertex& v1, const MeshVertex& v2, const MeshVertex& v3);\n    void Clear();\n    void Reserve(Render::vertexformat_t format, size_t vertex_count);\n    void Commit();\n\n    void SetMaterial(Render::Material* material, uint32_t index);\n\n    vec3 GetLocation() const { return location; }\n    quat GetRotation() const { return rotation; }\n    vec3 GetScale() const { return scale; }\n\n    void SetLocation(vec3 nlocation);\n    void SetRotation(quat nrotation);\n    void SetScale(vec3 scale);\n    void SetColor(vec3 color);\n    void SetLayer(uint32_t layer);\n    void SetTextureOffset(name_t material, vec4 offset);\n    \n    void SetLineDrawingMode(bool enabled);\n    \n    void SetDirectionaLight(bool enabled);\n    void SetRenderDebug(bool enabled);\n    \n    inline vec3 GetAABBMin() { return aabb_min; }\n    inline vec3 GetAABBMax() { return aabb_max; }\n    \n    void DrawAABB();\n    void FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector<Render::AABBTriangle>& result);\n    void FindAllFromAABB(vec3 min, vec3 max, std::vector<Render::AABBTriangle>& result);\n\n    void EventHandler(Event &event) { return; }\nprotected:\n    void RefreshAABB();\n    \n    void Start();\n    \n    void InsertVertex(const MeshVertex& vertex, vec3& point, uint32_t& material);\n\n    char* buffer = nullptr;\n    int buffer_size = 0;\n    int vertices = 0;\n\n    Render::drawlistentry_t draw_list_entry = {.generic = nullptr};\n    Render::Material** materials;\n    vec4* offsets;\n    \n    Render::vertexarray_t vertex_array;\n    Render::vertexformat_t vertex_format;\n    Render::materialtype_t material_type;\n    bool vertex_format_set = false;\n    bool material_type_set = false;\n    \n    \n    vec3 location = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    vec3 scale = {1.0f, 1.0f, 1.0f};\n    vec3 color = {1.0f, 1.0f, 1.0f};\n    uint32_t layer = 0;\n    \n    vec3 aabb_min = {0.0f, 0.0f, 0.0f};\n    vec3 aabb_max = {0.0f, 0.0f, 0.0f};\n\n    std::vector<Render::AABBTriangle> aabb_triangles;\n    AABBTree aabb_tree;\n    std::vector<AABBTree::node_t> aabb_leaves;\n\n    void* aabb_tree_leaf = 0;\n\n    uint32_t render_flags = 0;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_MESHCOMPONENT_H"
  },
  {
    "path": "src/components/particle.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <render/vertices.h>\n#include <components/particle.h>\n#include <render/material.h>\n\n#include <config.h>\n\n/**\n * @class tram::ParticleComponent components/particle.h <components/particle.h>\n * \n * Provides amusing graphical effects.\n * @see https://racenis.github.io/tram-sdk/documentation/components/particle.html\n */\n\nnamespace tram {\n\nusing namespace tram::Render;\nusing namespace tram::Render::API;\n\ntemplate <> Pool<ParticleComponent> PoolProxy<ParticleComponent>::pool(\"ParticleComponent pool\", COMPONENT_LIMIT_PARTICLE);\ntemplate <> void Component<ParticleComponent>::init() { ptr = PoolProxy<ParticleComponent>::New(); }\ntemplate <> void Component<ParticleComponent>::yeet() { PoolProxy<ParticleComponent>::Delete(ptr); }\n\nParticleComponent::~ParticleComponent(){\n    is_ready = true;\n\n    RemoveDrawListEntry(draw_list_entry);\n};\n\nvoid ParticleComponent::EmitParticle (const Particle& particle) {\n    particles.push_back(particle);\n}\n\nvoid ParticleComponent::Start() {\n    if(is_ready) return;\n\n    CreateVertexArray(GetVertexDefinition(VERTEX_SPRITE), vertex_array);\n\n    auto texture_handle = sprite->GetMaterial()->GetMaterial();\n    \n    draw_list_entry = InsertDrawListEntry();\n    SetDrawListVertexArray(draw_list_entry, vertex_array);\n    SetDrawListIndexRange(draw_list_entry, 0, 6);\n    SetFlags(draw_list_entry, FLAG_RENDER);\n    SetDrawListMaterials(draw_list_entry, 1, &texture_handle);\n    SetDrawListShader(draw_list_entry, VERTEX_SPRITE, MATERIAL_TEXTURE_ALPHA);\n    \n    is_ready = true;\n    UpdateRenderListObject();\n}\n\nvoid ParticleComponent::Update(){\n    if (!is_ready) return;\n    \n    for (auto it = particles.begin(); it < particles.end();) {\n        it->velocity += gravity;\n        it->coords += it->velocity;\n        it->age++;\n        \n        if (it->age > particle_max_age) {\n            it = particles.erase(it);\n        } else {\n            it++;\n        }\n    }\n    \n    for (uint32_t i = 0; i < emission_rate; i++) {\n        vec3 random_vec;\n        static int tick = 0;\n        tick++; srand(tick*6217);\n        random_vec.x = 0.5f - ((float)rand()/(float)RAND_MAX);\n        tick++; srand(tick*6217);\n        random_vec.y = 0.5f - ((float)rand()/(float)RAND_MAX);\n        tick++; srand(tick*6217);\n        random_vec.z = 0.5f - ((float)rand()/(float)RAND_MAX);\n        \n        vec3 velocity = initial_velocity + (random_vec*initial_velocity_randomness);\n        particles.push_back(Particle {velocity, velocity, 0});\n    }\n\n    \n    UpdateRenderListObject();\n}\n\nvoid ParticleComponent::UpdateRenderListObject(){\n    if (!is_ready) return;\n    \n    float tex_width = sprite->GetFrames().front().width / (float)sprite->GetMaterial()->GetWidth();\n    float tex_height = sprite->GetFrames().front().height / (float)sprite->GetMaterial()->GetHeight();\n    float tex_w_off = sprite->GetFrames().front().offset_x / (float)sprite->GetMaterial()->GetWidth();\n    float tex_h_off = sprite->GetFrames().front().offset_y / (float)sprite->GetMaterial()->GetHeight();\n    float half_width = tex_width; //* sprite->GetFrames().front().scale / 2.0f;\n    float half_height = tex_height; //* sprite->GetFrames().front().scale / 2.0f;\n\n    std::vector<Render::SpriteVertex> vertices;\n\n    for (auto particle : particles) {\n        Render::SpriteVertex top_left {\n            //.co = vec3(0.0f, 0.0f, 0.0f),\n            .co = particle.coords,\n            .voffset = vec2(-half_width, half_height),\n            .texco = vec2(0.0f + tex_w_off, 1.0f - tex_h_off),\n            .verticality = 1.0f,\n            .texture = 0\n        };\n        \n        Render::SpriteVertex top_right {\n            //.co = vec3(0.0f, 0.0f, 0.0f),\n            .co = particle.coords,\n            .voffset = vec2(half_width, half_height),\n            .texco = vec2(tex_width + tex_w_off, 1.0f - tex_h_off),\n            .verticality = 1.0f,\n            .texture = 0\n        };\n        \n        Render::SpriteVertex bottom_left {\n            //.co = vec3(0.0f, 0.0f, 0.0f),\n            .co = particle.coords,\n            .voffset = vec2(-half_width, -half_height),\n            .texco = vec2(0.0f + tex_w_off, 1.0f - tex_height - tex_h_off),\n            .verticality = 1.0f,\n            .texture = 0\n        };\n        \n        Render::SpriteVertex bottom_right {\n            //.co = vec3(0.0f, 0.0f, 0.0f),\n            .co = particle.coords,\n            .voffset = vec2(half_width, -half_height),\n            .texco = vec2(tex_width + tex_w_off, 1.0f - tex_height - tex_h_off),\n            .verticality = 1.0f,\n            .texture = 0\n        };\n\n        vertices.push_back(top_left);\n        vertices.push_back(bottom_left);\n        vertices.push_back(top_right);\n        vertices.push_back(top_right);\n        vertices.push_back(bottom_left);\n        vertices.push_back(bottom_right);\n    }\n    \n    UpdateVertexArray(vertex_array, sizeof(SpriteVertex) * vertices.size(), vertices.data());\n    SetDrawListIndexRange(draw_list_entry, 0, /*6 * */vertices.size());\n    \n    Render::API::SetMatrix(draw_list_entry, PositionRotationToMatrix(location, quat(1.0f, 0.0f, 0.0f, 0.0f)));\n}\n    \n}"
  },
  {
    "path": "src/components/particle.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H\n#define TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H\n\n#include <render/render.h>\n#include <render/sprite.h>\n\nnamespace tram {\n\nclass ParticleComponent : public EntityComponent {\npublic:\n    struct Particle {\n        vec3 coords;\n        vec3 velocity;\n        uint32_t age;\n    };\n    \n    ParticleComponent() : sprite(this) {}\n    ~ParticleComponent();\n    inline name_t GetSprite() { return sprite->GetName(); }\n\n    void SetSprite(Render::Sprite* sprite) {\n        this->sprite = sprite;\n    }\n\n    void Start();\n    \n    void Update();\n\n    void UpdateRenderListObject();\n\n    void UpdateLocation(vec3 nlocation){\n        location = nlocation;\n        UpdateRenderListObject();\n    }\n\n    void EventHandler(Event &event){return;}\n    \n    void EmitParticle (const Particle& particle);\n\n    // put these behind getter/setter methods, maybe?\n    uint32_t emission_rate = 1;\n    uint32_t particle_max_age = 120;\n    vec3 gravity = vec3(0.0f, -0.005f, 0.0f);\n    vec3 initial_velocity = vec3(0.0f, 0.15f, 0.0f);\n    float initial_velocity_randomness = 0.1f;\nprotected:\n    std::vector<Particle> particles;\n    ResourceProxy<Render::Sprite> sprite;\n\n    vec3 location;\n\n    Render::drawlistentry_t draw_list_entry = {};\n    Render::vertexarray_t vertex_array = {};\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_PARTICLECOMPONENT_H"
  },
  {
    "path": "src/components/physics.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/physics.h>\n\n#include <physics/api.h>\n#include <framework/entity.h>\n\n#include <config.h>\n\n/**\n * @class tram::PhysicsComponent components/physics.h <components/physics.h>\n * \n * Rigidbody wrapper.\n * @see https://racenis.github.io/tram-sdk/documentation/components/physics.html\n */\n\nusing namespace tram::Physics;\n\nnamespace tram {\n\ntemplate <> Pool<PhysicsComponent> PoolProxy<PhysicsComponent>::pool(\"PhysicsComponent pool\", COMPONENT_LIMIT_PHYSICS);\ntemplate <> void Component<PhysicsComponent>::init() { ptr = PoolProxy<PhysicsComponent>::New(); }\ntemplate <> void Component<PhysicsComponent>::yeet() { PoolProxy<PhysicsComponent>::Delete(ptr); }\n\nvoid PhysicsComponent::Start() {\n    if (collision_model.get()) {\n        collision_shape = collision_model->GetShape();\n    }\n    \n    API::get_trf_callback get_callback = nullptr;\n    API::set_trf_callback set_callback = nullptr;\n    \n    if (update_parent_transform && parent) {\n        get_callback = [](void* data) -> std::pair<vec3, quat> {\n            Entity* parent = ((PhysicsComponent*)data)->GetParent();\n            return {parent->GetLocation(), parent->GetRotation()};\n        };\n        set_callback = [](void* data, std::pair<vec3, quat> transform) {\n            ((PhysicsComponent*)data)->GetParent()->UpdateTransform(transform.first, transform.second);\n        };\n    } else {\n        get_callback = [](void* data) -> std::pair<vec3, quat> {\n            PhysicsComponent* component = (PhysicsComponent*)data;\n            return {component->rigidbody_position, component->rigidbody_rotation};\n        };\n        set_callback = [](void* data, std::pair<vec3, quat> transform) {\n            ((PhysicsComponent*)data)->rigidbody_position = transform.first;\n            ((PhysicsComponent*)data)->rigidbody_rotation = transform.second;\n        };\n    }\n    \n    rigidbody = API::MakeRigidbody(collision_shape,\n                                   rigidbody_mass,\n                                   rigidbody_position,\n                                   rigidbody_rotation,\n                                   rigidbody_collision_mask,\n                                   rigidbody_collision_group,\n                                   get_callback,\n                                   set_callback,\n                                   this);\n\n    API::SetRigidbodyCollisionCallback(rigidbody, nullptr, this);\n\n    if (rigidbody_should_sleep) API::SleepRigidbody(rigidbody);\n    if (rigidbody_should_awake) API::DisableRigidbodyDeactivation(rigidbody);\n    if (!rigidbody_debug_draw)  API::SetRigidbodyDebugDrawing(rigidbody, rigidbody_debug_draw);\n    if (rigidbody_kinematic)    API::SetRigidbodyKinematic(rigidbody, rigidbody_kinematic);\n        \n    is_ready = true;\n}\n\nPhysicsComponent::~PhysicsComponent(){\n    //RemoveAllConstraints();\n    \n    if (rigidbody.bt_rigidbody) {\n        //DYNAMICS_WORLD->removeRigidBody(rigidbody.bt_rigidbody);\n        API::YeetRigidbody(rigidbody);\n        //delete rigidbody.bt_rigidbody;\n        //delete motion_state;\n    }\n}\n\n/// Returns the name of the collision model.\nname_t PhysicsComponent::GetModel () {\n    return collision_model ? collision_model->GetName() : UID();\n}\n\n/// Sets the collision model.\nvoid PhysicsComponent::SetModel (name_t model) {\n    collision_model = Physics::CollisionModel::Find(model);\n}\n\n/// Returns the collision mask.\n/// See SetCollisionMask() for more information.\nuint32_t PhysicsComponent::GetCollisionMask() {\n    return rigidbody_collision_mask;\n}\n\n/// Returns the collision group.\n/// See SetCollisionGroup() for more information.\nuint32_t PhysicsComponent::GetCollisionGroup() {\n    return rigidbody_collision_group;\n}\n\n/// Sets the collision mask of the physics object.\n/// Collision mask is a bitmask. A physics object will only collide with\n/// an another object if their collision group and collision mask bitmasks\n/// have at least one bit in common, i.e. they will be bitwise and'ed\n/// together.\nvoid PhysicsComponent::SetCollisionMask (uint32_t flags) {\n    rigidbody_collision_mask = flags;\n    \n    if (is_ready) {\n        //DYNAMICS_WORLD->removeRigidBody(rigidbody.bt_rigidbody);\n        //DYNAMICS_WORLD->addRigidBody(rigidbody.bt_rigidbody, rigidbody_collision_group, rigidbody_collision_mask);\n        API::SetRigidbodyCollisionMask(rigidbody, rigidbody_collision_mask);\n    }\n}\n\n/// Sets the collision group of the physics object.\n/// Collision group is a bitmask. A physics object will only collide with\n/// an another object if their collision group and collision mask bitmasks\n/// have at least one bit in common, i.e. they will be bitwise and'ed\n/// together.\nvoid PhysicsComponent::SetCollisionGroup (uint32_t flags) {\n    rigidbody_collision_group = flags;\n    \n    if (is_ready) {\n        API::SetRigidbodyCollisionGroup(rigidbody, rigidbody_collision_group);\n        //DYNAMICS_WORLD->removeRigidBody(rigidbody.bt_rigidbody);\n        //DYNAMICS_WORLD->addRigidBody(rigidbody.bt_rigidbody, rigidbody_collision_group, rigidbody_collision_mask);\n    }\n}\n\n/// Sets the collision shape of the physics object.\nvoid PhysicsComponent::SetShape(Physics::CollisionShape shape) {\n    collision_shape = API::MakeCollisionShape(shape);\n}\n\n/// Sets the mass of the physics object.\n/// Mass specified in kilograms. If the mass is set to 0, then it's assumed\n/// to be infinite, and the object will become static and immovable.\n/// @note Has no effect after the PhysicsComponent is loaded.\nvoid PhysicsComponent::SetMass(float mass) {\n    /*if (mass == 0) {\n        rigidbody_collision_flags |= btCollisionObject::CF_STATIC_OBJECT;\n    }*/\n    \n    rigidbody_mass = mass;\n}\n\n/// Pushes the physics object.\n/// I have no idea what the units are. Direction of direction is the\n/// direction into which the object will be pushed and the length of\n/// the vector is the force of the push.\nvoid PhysicsComponent::Push(vec3 direction) {\n    if (!is_ready) return;\n    \n    API::PushRigidbody(rigidbody, direction);\n    \n    //rigidbody.bt_rigidbody->activate(); // force awake, sleeping objects won't move\n    //rigidbody.bt_rigidbody->applyCentralImpulse(btVector3(direction.x, direction.y, direction.z));\n}\n\nvoid PhysicsComponent::Push(vec3 direction, vec3 local) {\n    if (!is_ready) return;\n    \n    API::PushRigidbody(rigidbody, direction, local);\n    //rigidbody.bt_rigidbody->activate();\n    //rigidbody.bt_rigidbody->applyImpulse(btVector3(direction.x, direction.y, direction.z), btVector3(local.x, local.y, local.z));\n}\n\nvoid PhysicsComponent::Spin(vec3 direction) {\n    if (!is_ready) return;\n    \n    API::SpinRigidbody(rigidbody, direction);\n    \n    //rigidbody.bt_rigidbody->activate();\n    //rigidbody.bt_rigidbody->applyTorqueImpulse(btVector3(direction.x, direction.y, direction.z));\n}\n\n/// Awakens the object.\nvoid PhysicsComponent::Awaken() {\n    if (is_ready) {\n        API::AwakenRigidbody(rigidbody);\n        //rigidbody.bt_rigidbody->activate();\n    }\n    \n    rigidbody_should_sleep = false;\n}\n\n/// Puts the object to sleep.\nvoid PhysicsComponent::Sleep() {\n    if (is_ready) {\n        //rigidbody.bt_rigidbody->setActivationState(0);\n        API::SleepRigidbody(rigidbody);\n    }\n    \n    rigidbody_should_sleep = true;\n}\n\n/// Sets the debug drawing of a physics object.\n/// Set to false, if you don't want the physics object to show up when\n/// drawing physics debug.\nvoid PhysicsComponent::SetDebugDrawing (bool drawing) {\n    /*if (drawing) {\n        rigidbody_collision_flags &= ~btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT;\n    } else {\n        rigidbody_collision_flags |= btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT;\n    }*/\n    \n    rigidbody_debug_draw = drawing;\n    \n    if (is_ready) {\n        API::SetRigidbodyDebugDrawing(rigidbody, drawing);\n        //rigidbody.bt_rigidbody->setCollisionFlags(rigidbody_collision_flags);\n    }\n}\n\n/// Sets the physics object to kinematic.\n/// If set to kinematic, then the physics object will poll its parent entity\n/// for its position, instead of simulated and pushing its position into its\n/// parent entity.\n/// @note Use DisableDeactivation() if you don't want to constantly wake the object up.\nvoid PhysicsComponent::SetKinematic (bool kinematic) {\n    rigidbody_kinematic = kinematic;\n    \n    /*if (kinematic) {\n        rigidbody_collision_flags |= btCollisionObject::CF_KINEMATIC_OBJECT;\n    } else {\n        rigidbody_collision_flags &= ~btCollisionObject::CF_KINEMATIC_OBJECT;\n    }*/\n    \n    if (is_ready) {\n        API::SetRigidbodyKinematic(rigidbody, kinematic);\n        //rigidbody.bt_rigidbody->setCollisionFlags(rigidbody_collision_flags);\n    }\n}\n\n/// Sets whether the movement of the rigibody should update parent Entity's transform.\n/// If set to true, then whenever the rigidbody moves, the transform of the parent\n/// will be set to the transform of the rigidbody. Otherwise, the parent's transform\n/// will remain unaffected.\n/// @note This only works if set before the component is initialized.\nvoid PhysicsComponent::SetUpdateParentTransform(bool update) {\n    update_parent_transform = update;\n}\n\n/// Sets the position of the physics object.\nvoid PhysicsComponent::SetLocation(vec3 position) {\n    if (rigidbody.bt_rigidbody) {\n        API::SetRigidbodyLocation(rigidbody, position);\n        //btTransform trans = rigidbody.bt_rigidbody->getWorldTransform();\n        //trans.setOrigin(btVector3 (position.x, position.y, position.z));\n        //rigidbody.bt_rigidbody->setWorldTransform(trans);\n    }\n    \n    rigidbody_position = position;\n}\n\n/// Sets the rotation of the physics object.\nvoid PhysicsComponent::SetRotation (quat rotation) {\n    if (rigidbody.bt_rigidbody) {\n        API::SetRigidbodyRotation(rigidbody, rotation);\n        //btTransform trans = rigidbody.bt_rigidbody->getWorldTransform();\n        //trans.setRotation(btQuaternion (rotation.x, rotation.y, rotation.z, rotation.w));\n        //rigidbody.bt_rigidbody->setWorldTransform(trans);\n    }\n    \n    rigidbody_rotation = rotation;\n}\n\n/// Sets the angular factor of the physics object.\n/// Changes how much the object will rotate around the x, y, z axes. Can be\n/// used to restrict rotation around certain axes.\nvoid PhysicsComponent::SetAngularFactor(vec3 factor) {\n    rigidbody_angular_factor = factor;\n    \n    if (is_ready) {\n        API::SetRigidbodyAngularFactor(rigidbody, factor);\n        //rigidbody.bt_rigidbody->setAngularFactor({factor.x, factor.y, factor.z});\n    }\n}\n\n/// Sets the angular factor of the physics object.\n/// Changes how much the object will move along the x, y, z axes. Can be\n/// used to restrict movement along certain axes.\nvoid PhysicsComponent::SetLinearFactor(vec3 factor) {\n    rigidbody_linear_factor = factor;\n    \n    if (is_ready) {\n        API::SetRigidbodyLinearFactor(rigidbody, factor);\n        //rigidbody.bt_rigidbody->setLinearFactor({factor.x, factor.y, factor.z});\n    }\n}\n\n/// Disables deactivation of the object.\n/// This makes the object to never fall asleep.\nvoid PhysicsComponent::DisableDeactivation() {\n    if (is_ready) {\n        API::DisableRigidbodyDeactivation(rigidbody);\n        //rigidbody.bt_rigidbody->setActivationState(DISABLE_DEACTIVATION);\n    }\n    \n    rigidbody_should_awake = true;\n}\n\n/// Sets the velocity of the physics object.\n/// Only works if is component is loaded.\nvoid PhysicsComponent::SetVelocity (const vec3& velocity){\n    if (!is_ready) return;\n    \n    /*if (velocity.x != 0.0f &&\n        velocity.y != 0.0f &&\n        velocity.z != 0.0f\n    ) {\n        rigidbody.bt_rigidbody->activate();\n    }\n    \n    rigidbody.bt_rigidbody->setLinearVelocity(btVector3(velocity.x, velocity.y, velocity.z));*/\n    API::SetRigidbodyVelocity(rigidbody, velocity);\n}\n\n/// Returns the velocity of the physics object.\n/// Always returns zero velocity if component is not loaded.\nvec3 PhysicsComponent::GetVelocity () {\n    if (is_ready) {\n        return API::GetRigidbodyVelocity(rigidbody);\n        //auto velocity = rigidbody.bt_rigidbody->getLinearVelocity();\n        //return {velocity.getX(), velocity.getY(), velocity.getZ()};\n    } else {\n        return {0.0f, 0.0f, 0.0f};\n    }\n}\n\n}"
  },
  {
    "path": "src/components/physics.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H\n\n#include <physics/physics.h>\n#include <physics/collisionmodel.h>\n#include <physics/collisionshape.h>\n\nnamespace tram {\n\nclass PhysicsComponent : public EntityComponent {\npublic:\n    PhysicsComponent() : collision_model(this) {}\n    ~PhysicsComponent();\n    void EventHandler(Event &event) {}\n    void Start();\n\n    name_t GetModel();\n    void SetModel(name_t model);\n\n    void SetMass(float mass);\n    void SetShape(Physics::CollisionShape shape);\n\n    void Push(vec3 direction);\n    void Push(vec3 direction, vec3 local_position);\n    void Spin(vec3 direction);\n\n    void SetCollisionMask(uint32_t flags);\n    void SetCollisionGroup(uint32_t flags);\n    \n    uint32_t GetCollisionMask();\n    uint32_t GetCollisionGroup();\n\n    void SetDebugDrawing(bool drawing);\n    void SetKinematic(bool kinematic);\n    void SetUpdateParentTransform(bool update);\n\n    void SetRotation(quat rotation);\n    void SetLocation(vec3 location);\n\n    void DisableDeactivation();\n    \n    void Awaken();\n    void Sleep();\n    \n    void SetAngularFactor(vec3 factor);\n    void SetLinearFactor(vec3 factor);\n\n    void SetVelocity(const vec3& velocity);\n    vec3 GetVelocity();\nprivate:\n    ResourceProxy<Physics::CollisionModel> collision_model;\n    Physics::collisionshape_t collision_shape = {nullptr};\n    Physics::rigidbody_t rigidbody = {nullptr};\n\n    float rigidbody_mass = 1.0f;\n\n    bool rigidbody_should_sleep = true;\n    bool rigidbody_should_awake = false;\n    bool update_parent_transform = true;\n    bool rigidbody_kinematic = false;\n    bool rigidbody_debug_draw = true;\n    \n    vec3 rigidbody_position = {0.0f, 0.0f, 0.0f};\n    quat rigidbody_rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    \n    vec3 rigidbody_offset = {0.0f, 0.0f, 0.0f};\n    vec3 rigidbody_angular_factor = {1.0f, 1.0f, 1.0f};\n    vec3 rigidbody_linear_factor = {1.0f, 1.0f, 1.0f};\n\n    uint32_t rigidbody_collision_mask = -1;\n    uint32_t rigidbody_collision_group = -1;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_PHYSICSCOMPONENT_H"
  },
  {
    "path": "src/components/player.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/player.h>\n\n#include <config.h>\n\n/**\n * @class tram::PlayerComponent components/player.h <components/player.h>\n * \n * Translates keyboard/mouse inputs into inputs for ControllerComponent.\n * @see https://racenis.github.io/tram-sdk/documentation/components/player.html\n */\n\nnamespace tram {\n\ntemplate <> Pool<PlayerComponent> PoolProxy<PlayerComponent>::pool(\"PlayerComponent pool\", COMPONENT_LIMIT_PLAYER);\ntemplate <> void Component<PlayerComponent>::init() { ptr = PoolProxy<PlayerComponent>::New(); }\ntemplate <> void Component<PlayerComponent>::yeet() { PoolProxy<PlayerComponent>::Delete(ptr); }\n\n// technically incorrect, but it's not like we're going to have more than one\n// player components running at the same time.. right?\nstatic float pitch = 0.0f;\nstatic float yaw = 0.0f;\n\nPlayerComponent::PlayerComponent() {\n    \n}\n\nvoid PlayerComponent::Init() {\n    keydown.make(Event::KEYDOWN, this);\n    keypress.make(Event::KEYPRESS, this);\n    mouseposition.make(Event::CURSORPOS, this);\n}\n\nPlayerComponent::~PlayerComponent() {\n\n}\n\nvoid PlayerComponent::SetNoclip(bool value) {\n    noclipping = value; \n    controller->SetCollisions(!noclipping);\n}\n\nvoid PlayerComponent::SetKeyboardLook(bool value) {\n    keyboard_look = value; \n}\n\nvoid PlayerComponent::UpdateLook() {\n    pitch = pitch > 89.0f ? 89.0f : pitch < -89.0f ? -89.0f : pitch;\n    \n    this->look_rotation = quat(vec3(-glm::radians(pitch), -glm::radians(yaw), 0.0f));\n    quat parent_rotation = quat(vec3(0.0f, -glm::radians(yaw), 0.0f));\n    \n    this->direction_facing = look_rotation * DIRECTION_FORWARD;\n    \n    Event::Post({\n        .type = Event::LOOK_AT,\n        .poster = parent->GetID(),\n        .data = Event::AllocateData<Value>(look_rotation)\n    });\n    \n    controller->SetLookDirection(look_rotation);\n    parent->UpdateTransform(parent->GetLocation(), parent_rotation);\n}\n\n\n\nvoid PlayerComponent::EventHandler(Event &event) {\n    using namespace tram::UI;\n    \n    // Map cursor position into camera and entity orientation.\n    if (event.type == Event::CURSORPOS && !keyboard_look) {\n        yaw += PollKeyboardAxisDelta(KEY_MOUSE_X) * CAMERA_MULTIPLIER;\n        pitch += PollKeyboardAxisDelta(KEY_MOUSE_Y) * CAMERA_MULTIPLIER;\n        pitch = pitch > 89.0f ? 89.0f : pitch < -89.0f ? -89.0f : pitch;\n        this->look_rotation = quat(vec3(-glm::radians(pitch), -glm::radians(yaw), 0.0f));\n        quat parent_rotation = quat(vec3(0.0f, -glm::radians(yaw), 0.0f));\n        \n        this->direction_facing = look_rotation * DIRECTION_FORWARD;\n        \n        Event::Post({\n            .type = Event::LOOK_AT,\n            .poster = parent->GetID(),\n            .data = Event::AllocateData<Value>(look_rotation)\n        });\n        \n        controller->SetLookDirection(look_rotation);\n        parent->UpdateTransform(parent->GetLocation(), parent_rotation);\n    }\n\n    if (event.type == Event::KEYPRESS && keyboard_look) {\n        switch (event.subtype) {\n            case UI::KEY_ACTION_LEFT:\n                yaw -= 100.0f * GetDeltaTime(); break;\n            case UI::KEY_ACTION_RIGHT:\n                yaw += 100.0f * GetDeltaTime(); break;\n            case UI::KEY_ACTION_UP:\n                pitch -= 100.0f * GetDeltaTime(); break;\n            case UI::KEY_ACTION_DOWN:\n                pitch += 100.0f * GetDeltaTime(); break;\n                \n        }\n        \n        UpdateLook();\n    }\n\n    if (event.type == Event::KEYDOWN && event.subtype == KEY_ACTION_JUMP) {\n        controller->Jump();\n    }\n    \n    if (event.type == Event::KEYPRESS) {\n        if (noclipping) {\n            if (event.subtype == KEY_ACTION_FORWARD)        controller->Move(glm::inverse(parent->GetRotation()) * direction_facing);\n            if (event.subtype == KEY_ACTION_BACKWARD)       controller->Move(glm::inverse(parent->GetRotation()) * -direction_facing);\n            if (event.subtype == KEY_ACTION_STRAFE_LEFT)    controller->Move(-DIRECTION_SIDE);\n            if (event.subtype == KEY_ACTION_STRAFE_RIGHT)   controller->Move(DIRECTION_SIDE);\n        } else {\n            if (event.subtype == KEY_ACTION_FORWARD)        controller->Move(DIRECTION_FORWARD);\n            if (event.subtype == KEY_ACTION_BACKWARD)       controller->Move(-DIRECTION_FORWARD);\n            if (event.subtype == KEY_ACTION_STRAFE_LEFT)    controller->Move(-DIRECTION_SIDE);\n            if (event.subtype == KEY_ACTION_STRAFE_RIGHT)   controller->Move(DIRECTION_SIDE);\n        }\n        \n        \n        if (event.subtype == KEY_ACTION_CROUCH)         controller->Crouch();\n        if (event.subtype == KEY_ACTION_SPRINT)         controller->Run();\n        if (event.subtype == KEY_ACTION_FLY)            controller->Fly();\n    }\n}\n\n}"
  },
  {
    "path": "src/components/player.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H\n\n#include <framework/ui.h>\n#include <framework/event.h>\n#include <framework/entity.h>\n\n#include <components/controller.h>\n\n#include <framework/logging.h>\n\n// this is for holding\n// re: for holding what??\n// TODO: find out\n#include <render/render.h>\n#include <framework/message.h>\n\nnamespace tram {\n\nclass PlayerComponent : public EntityComponent {\npublic:\n    void EventHandler (Event &event);\n    void Init();\n    PlayerComponent();\n    ~PlayerComponent();\n    void SetControllerComponent (ControllerComponent* comp) { controller = comp; }\n    void Start() {}\n    void SetNoclip(bool value);\n    void SetKeyboardLook(bool value);\n    \n    inline quat GetLookRotation() { return look_rotation; }\n    inline vec3 GetDirectionFacing() { return direction_facing; }\nprivate:\n    EventListener keydown;\n    EventListener keypress;\n    EventListener mouseposition;\n    \n    quat look_rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    vec3 direction_facing = {0.0f, 0.0f, -1.0f};\n    \n    bool noclipping = false;\n    bool keyboard_look = false;\n    \n    void UpdateLook();\n    \n    ControllerComponent* controller = nullptr;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_PLAYERCOMPONENT_H"
  },
  {
    "path": "src/components/render.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <components/render.h>\n#include <components/animation.h>\n\n#include <framework/entity.h>\n\n#include <render/scene.h>\n#include <render/light.h>\n\n#include <config.h>\n\n/**\n * @class tram::RenderComponent components/render.h <components/render.h>\n * \n * Renders a Model.\n * @see https://racenis.github.io/tram-sdk/documentation/components/render.html\n */\n\nnamespace tram {\n\nusing namespace tram::Render;\nusing namespace tram::Render::API;\n\ntemplate <> Pool<RenderComponent> PoolProxy<RenderComponent>::pool(\"RenderComponent pool\", COMPONENT_LIMIT_RENDER);\ntemplate <> void Component<RenderComponent>::init() { ptr = PoolProxy<RenderComponent>::New(); }\ntemplate <> void Component<RenderComponent>::yeet() { PoolProxy<RenderComponent>::Delete(ptr); }\n\n/// Set the model that the component will render.\n/// If the model is not already loaded, then it will be added to loader queue\n/// and the component will start when it the loading is complete.\nvoid RenderComponent::SetModel(name_t name) {\n    model = Render::Model::Find(name);\n    \n    /*if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                RemoveDrawListEntry(entry);\n            }\n        }\n        \n        draw_list_entries.clear();\n        \n        InsertDrawListEntries();\n        RefreshAABB();\n    }*/\n};\n\n/// Sets the lightmap for the model.\n/// Lightmaps are rendered only for static models, so setting a lightmap for\n/// a dynamic model will do nothing.\nvoid RenderComponent::SetLightmap(name_t name) {\n    lightmap = Render::Material::Make(name, MATERIAL_LIGHTMAP);\n    \n    /*if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetLightmap(entry, lightmap ? lightmap->GetTexture() : texturehandle_t {});\n            }\n        }\n    }*/\n};\n\n/// Sets the environment map for the model.\nvoid RenderComponent::SetEnvironmentMap(Render::Material* material) {\n    environmentmap = material;\n    //std::cout << \"setting:\" << material << std::endl;\n    //if (material != environmentmap.get()) std::cout << \"newnenwnenwenwnew\\n\\n\\n\\n\\n\\n\\n\\n\" << std::endl;\n    \n    if (is_ready && material && material->GetStatus() == Resource::READY) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetEnvironmentMap(entry, environmentmap ? environmentmap->GetTexture() : texturehandle_t {});\n            }\n        }\n    }\n    \n    \n    \n}\n\n/// Links an AnimationComponent.\n/// This needs to be set, so that the model can be rendered with the animations\n/// played by the AnimationComponent.\n/// Alternatively, this can be set to a nullptr, if no animations are to be played.\n/// This affects only dynamic models, static models don't play animations.\nvoid RenderComponent::SetArmature(AnimationComponent* armature) {\n    if (armature) {\n        pose = armature->GetPose();\n    } else {\n        pose = nullptr;\n    }\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetPose(entry, pose);\n            }\n        }\n    }\n};\n\nRenderComponent::RenderComponent() : model(this), lightmap(this), environmentmap(this) {\n    render_flags = FLAG_RENDER | FLAG_DRAW_INDEXED;\n}\n\nRenderComponent::~RenderComponent() {\n    is_ready = false;\n    \n    for (auto entry : draw_list_entries) {\n        if (entry.generic) {\n            Render::API::RemoveDrawListEntry(entry);\n        }\n    }\n    \n    if (aabb_tree_leaf) {\n        AABB::RemoveLeaf(aabb_tree_leaf);\n    }\n};\n\n/// Sets the world parameters for model rendering.\nvoid RenderComponent::SetDirectionaLight(bool enabled) {\n    if (!enabled) {\n        render_flags |= FLAG_NO_DIRECTIONAL;\n    } else {\n        render_flags &= ~FLAG_NO_DIRECTIONAL;\n    }\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetFlags(entry, render_flags);\n            }\n        }\n    }\n}\n\n/// Sets render debugging.\n/// If set to false, the 3D model will not have debug text for it when the\n/// render debug text rendering is turned on.\nvoid RenderComponent::SetRenderDebug(bool enabled) {\n    if (!enabled) {\n        render_flags |= FLAG_NO_DEBUG;\n    } else {\n        render_flags &= ~FLAG_NO_DEBUG;\n    }\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetFlags(entry, render_flags);\n            }\n        }\n    }\n}\n\n/// Sets the location of the model.\nvoid RenderComponent::SetLocation(vec3 nlocation){\n    location = nlocation;\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetMatrix(entry, PositionRotationScaleToMatrix(location, rotation, scale));\n                light_t lights[4];\n                Render::LightTree::FindLights(location, lights);\n                Render::API::SetLights(entry, lights);\n                if (!lightmap) {\n                    Render::API::SetSphericalHarmonic(entry, LightGraph::LookupHarmonic(location, -1));\n                }\n            }\n        }\n        \n        RefreshAABB();\n    }\n}\n\n/// Sets the rotation of the model.\nvoid RenderComponent::SetRotation(quat nrotation){\n    rotation = nrotation;\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetMatrix(entry, PositionRotationScaleToMatrix(location, rotation, scale));\n            }\n        }\n        \n        RefreshAABB();\n    }\n}\n\n/// Sets the scale of the model.\nvoid RenderComponent::SetScale(vec3 scale) {\n    this->scale = scale;\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetMatrix(entry, PositionRotationScaleToMatrix(location, rotation, scale));\n            }\n        }\n        \n        RefreshAABB();\n    }\n}\n\nvoid RenderComponent::SetLayer(uint32_t layer) {\n    this->layer = layer;\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetLayer(entry, layer);\n            }\n        }\n    }\n}\n\nvoid RenderComponent::SetTextureOffset(name_t material, vec4 offset) {\n    if (is_ready) {\n        auto& index_ranges = model->GetIndexRanges();\n    \n        for (size_t i = 0; i < index_ranges.size(); i++) {\n            vec4 offsets[15];\n\n            for (uint32_t j = 0; j < index_ranges[i].material_count; j++) {\n                if (model->GetMaterials()[index_ranges[i].materials[j]]->GetName() == material) {\n                    offsets[j] = offset;\n                } else {\n                    offsets[j] = vec4(1.0f);\n                }\n            }\n\n            Render::API::SetDrawListTextureOffsets(draw_list_entries[i], index_ranges[i].material_count, offsets);\n        }\n    }\n}\n\nvoid RenderComponent::SetLineDrawingMode(bool enabled) {\n    if (enabled) {\n        render_flags |= FLAG_LINE_FILL_POLY;\n    } else {\n        render_flags &= ~FLAG_LINE_FILL_POLY;\n    }\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetFlags(entry, render_flags);\n            }\n        }\n    }\n}\n\n/// Sets the scale of the model.\nvoid RenderComponent::SetColor(vec3 color) {\n    this->color = color;\n    \n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::SetDrawListColor(entry, vec4(color, 1.0f));\n            }\n        }\n    }\n}\n\nvoid RenderComponent::Start() {\n    if (is_ready) {\n        for (auto entry : draw_list_entries) {\n            if (entry.generic) {\n                Render::API::RemoveDrawListEntry(entry);\n            }\n        }\n        \n        draw_list_entries.clear();\n    }\n    \n    InsertDrawListEntries();\n    RefreshAABB();\n    \n    is_ready = true;\n}\n\nvoid RenderComponent::RefreshAABB() {\n    if (aabb_tree_leaf) {\n        AABB::RemoveLeaf(aabb_tree_leaf);\n    }\n    \n    aabb_tree_leaf = AABB::InsertLeaf(this, location, rotation, scale);\n}\n\nvoid RenderComponent::InsertDrawListEntries() {\n    /*if (!pose) {\n        pose = BLANK_POSE;\n    }*/\n    \n    auto& index_ranges = model->GetIndexRanges();\n    \n    for (size_t i = 0; i < index_ranges.size(); i++) {\n        drawlistentry_t entry = Render::API::InsertDrawListEntry();\n    \n        texturehandle_t textures[15];\n        material_t materials[15];\n        vec4 colors[15];\n        //float specular_weights[15];\n        //float specular_exponents[15];\n        //float specular_transparencies[15];\n        for (uint32_t j = 0; j < index_ranges[i].material_count; j++) {\n            materials[j] = model->GetMaterials()[index_ranges[i].materials[j]]->GetMaterial();\n            textures[j] = model->GetMaterials()[index_ranges[i].materials[j]]->GetTexture();\n            colors[j] = vec4(model->GetMaterials()[index_ranges[i].materials[j]]->GetColor() * color, 1.0f);\n            //specular_weights[j] = model->GetMaterials()[index_ranges[i].materials[j]]->GetSpecularWeight();\n            //specular_exponents[j] = model->GetMaterials()[index_ranges[i].materials[j]]->GetSpecularExponent();\n            //specular_transparencies[j] = model->GetMaterials()[index_ranges[i].materials[j]]->GetSpecularTransparency();\n        }\n\n        light_t lights[4];\n        Render::LightTree::FindLights(location, lights);\n        Render::API::SetLights(entry, lights);\n\n        Render::API::SetDrawListVertexArray(entry, model->GetVertexArray());\n        Render::API::SetDrawListIndexArray(entry, model->GetIndexArray());\n        Render::API::SetDrawListMaterials(entry, index_ranges[i].material_count, materials);\n        //Render::API::SetDrawListTextures(entry, index_ranges[i].material_count, textures);\n        Render::API::SetDrawListColor(entry, vec4(color, 1.0f));\n        //Render::API::SetDrawListSpecularities(entry, index_ranges[i].material_count, specular_weights, specular_exponents, specular_transparencies);\n        const bool found_shader = Render::API::SetDrawListShader(entry, model->GetVertexFormat(), index_ranges[i].material_type);\n        Render::API::SetDrawListIndexRange(entry, index_ranges[i].index_offset, index_ranges[i].index_length);\n\n        Render::API::SetLightmap(entry, lightmap ? lightmap->GetTexture() : texturehandle_t {});\n        Render::API::SetEnvironmentMap(entry, environmentmap ? environmentmap->GetTexture() : texturehandle_t {});\n        Render::API::SetFlags(entry, render_flags);\n        Render::API::SetLayer(entry, layer);\n\n        Render::API::SetMatrix(entry, PositionRotationScaleToMatrix(location, rotation, scale));\n\n        Render::API::SetPose(entry, pose);\n        \n        const vec3 aabb_min = model->GetAABBMin();\n        const vec3 aabb_max = model->GetAABBMax();\n        if (glm::distance(aabb_min, aabb_max) > 0.001f) {\n            render_flags |= FLAG_USE_AABB;\n            Render::API::SetDrawListAABB(entry, aabb_min, aabb_max);\n            Render::API::SetFlags(entry, render_flags);\n        }\n        \n        Render::API::SetFadeDistance(entry, model->GetNearDistance(), model->GetFarDistance());\n        \n        if (!found_shader) {\n            Log(Severity::WARNING, System::RENDER, \"Can't find shader for the following {} materials:\", index_ranges.size());\n            for (uint32_t j = 0; j < index_ranges[i].material_count; j++) {\n                 Log(Severity::WARNING, System::RENDER, \"Material {}: {}\", j, model->GetMaterials()[index_ranges[i].materials[j]]->GetName());\n            }\n        }\n        \n        draw_list_entries.push_back(entry);\n    }\n}\n\n}\n"
  },
  {
    "path": "src/components/render.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H\n\n#include <render/model.h>\n\nnamespace tram {\n\nclass AnimationComponent;\n\nclass RenderComponent : public EntityComponent {\npublic:\n    RenderComponent();\n    ~RenderComponent();\n    inline Render::Model* GetModel() { return model.get(); }\n\n    inline name_t GetLightmap() { return (lightmap.get() == nullptr) ? 0 : lightmap->GetName();};\n\n    void SetModel(name_t name);\n    void SetModel(Render::Model* model) { this->model = model; }\n    void SetLightmap(name_t name);\n    void SetEnvironmentMap(Render::Material* material);\n    void SetArmature(AnimationComponent* armature);\n\n    void Start();\n\n    vec3 GetLocation() const { return location; }\n    quat GetRotation() const { return rotation; }\n    vec3 GetScale() const { return scale; }\n\n    void SetLocation(vec3 nlocation);\n    void SetRotation(quat nrotation);\n    void SetScale(vec3 scale);\n    void SetColor(vec3 color);\n    void SetLayer(uint32_t layer);\n    void SetTextureOffset(name_t material, vec4 offset);\n    \n    void SetLineDrawingMode(bool enabled);\n    \n    void SetDirectionaLight(bool enabled);\n    void SetRenderDebug(bool enabled);\n\n    void EventHandler(Event &event) { return; }\nprotected:\n    void InsertDrawListEntries();\n    void RefreshAABB();\n\n    ResourceProxy<Render::Model> model;\n    ResourceProxy<Render::Material> lightmap;\n    ResourceProxy<Render::Material> environmentmap;\n\n    std::vector<Render::drawlistentry_t> draw_list_entries;\n\n    Render::Pose* pose = nullptr;\n\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    vec3 scale = {1.0f, 1.0f, 1.0f};\n    vec3 color = {1.0f, 1.0f, 1.0f};\n    uint32_t layer = 0;\n\n    void* aabb_tree_leaf = 0;\n\n    uint32_t render_flags = 0;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_RENDERCOMPONENT_H"
  },
  {
    "path": "src/components/sprite.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <render/vertices.h>\n#include <render/material.h>\n#include <components/sprite.h>\n#include <framework/logging.h>\n\n#include <config.h>\n\n/**\n * @class tram::SpriteComponent components/sprite.h <components/sprite.h>\n * \n * Provides amusing graphical effects.\n * @see https://racenis.github.io/tram-sdk/documentation/components/sprite.html\n */\n\nnamespace tram {\nusing namespace tram::Render;\n\ntemplate <> Pool<SpriteComponent> PoolProxy<SpriteComponent>::pool (\"SpriteComponent pool\", COMPONENT_LIMIT_SPRITE);\ntemplate <> void Component<SpriteComponent>::init() { ptr = PoolProxy<SpriteComponent>::New(); }\ntemplate <> void Component<SpriteComponent>::yeet() { PoolProxy<SpriteComponent>::Delete(ptr); }\n\nusing namespace API;\n\nSpriteComponent::~SpriteComponent() {\n    is_ready = false;\n\n    RemoveDrawListEntry(draw_list_entry);\n};\n\nvoid SpriteComponent::Start() {\n    assert(!is_ready);\n\n    //CreateVertexArray(GetVertexDefinition(VERTEX_SPRITE), vertex_array);\n    sprite_array = CreateSpriteArray();\n    \n    auto texture_handle = sprite->GetMaterial()->GetMaterial();\n    \n    draw_list_entry = InsertDrawListEntry();\n    //SetDrawListVertexArray(draw_list_entry, vertex_array);\n    SetDrawListSpriteArray(draw_list_entry, sprite_array);\n    SetDrawListIndexRange(draw_list_entry, 0, 6);\n    SetFlags(draw_list_entry, FLAG_RENDER);\n    SetDrawListMaterials(draw_list_entry, 1, &texture_handle);\n    SetDrawListShader(draw_list_entry, VERTEX_SPRITE, MATERIAL_TEXTURE_ALPHA);\n\n    is_ready = true;\n    UpdateRenderListObject();\n}\n\nvoid SpriteComponent::Update() {\n    if (!is_ready) return;\n    \n    if (anim_isplaying) {\n        UpdateRenderListObject();\n    \n        if (!(anim_bframe < anim_speed)) {\n            anim_bframe = 0;\n            anim_frame++;\n            \n            if (!(anim_frame < sprite->GetFrames().size())) anim_frame = 0;\n        }\n        anim_bframe++;\n    }\n}\n\nvoid SpriteComponent::UpdateRenderListObject() {\n    if (!is_ready) return;\n\n    // maybe cache these values, instead of re-calculating them for each frame?\n    float tex_width = (float)sprite->GetFrames()[anim_frame].width / (float)sprite->GetMaterial()->GetWidth();//sprite->width;\n    float tex_height = (float)sprite->GetFrames()[anim_frame].height / (float)sprite->GetMaterial()->GetHeight(); //sprite->height;\n    float tex_w_off = (float)sprite->GetFrames()[anim_frame].offset_x / (float)sprite->GetMaterial()->GetWidth();//(float)(anim_frame % sprite->frames_w) * tex_width;\n    float tex_h_off = (float)sprite->GetFrames()[anim_frame].offset_y / (float)sprite->GetMaterial()->GetHeight();//(float)(anim_frame / sprite->frames_w) * tex_height;\n    //float half_width = tex_width; //* sprite->GetFrames()[anim_frame].scale / 2.0f;\n    //float half_height = tex_height; //* sprite->GetFrames()[anim_frame].scale / 2.0f;\n\n    tex_h_off = 1.0f - tex_h_off - tex_height;\n\n    Render::SpritePoint point;\n    point.position = {0.0f, 0.0f, 0.0f};\n    point.center = {0.0f, 0.0f, 0.0f};\n    point.color = COLOR_WHITE;\n    point.rotation = 0.0f;\n    point.dimensions = {tex_width * 10.0f, tex_height * 10.0f};\n    point.texture_offset = {tex_w_off, tex_h_off};\n    point.texture_size = {tex_width, tex_height};\n    point.texture = 0;\n\n    UpdateSpriteArray(sprite_array, 1, &point);\n    \n    Render::API::SetMatrix(draw_list_entry, PositionRotationToMatrix(location, quat(1.0f, 0.0f, 0.0f, 0.0f)));\n}\n\n        \nvoid SpriteComponent::Play() {\n    anim_isplaying = true;\n}\n\nvoid SpriteComponent::Pause() {\n    anim_isplaying = true;\n}\n\nvoid SpriteComponent::SetPlaySpeed (size_t speed) {\n    anim_speed = speed;\n}\n\n}"
  },
  {
    "path": "src/components/sprite.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H\n#define TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H\n\n#include <render/render.h>\n#include <render/sprite.h>\n\nnamespace tram {\n\nclass SpriteComponent : public EntityComponent {\npublic:\n    SpriteComponent() : sprite(this){}\n    ~SpriteComponent();\n    inline name_t GetSprite(){ return sprite->GetName(); }\n\n    void SetSprite(Render::Sprite* sprite){\n        this->sprite = sprite;\n    }\n\n    void Start();\n    \n    void Update();\n    \n    void Play();\n    \n    void Pause();\n    \n    void SetPlaySpeed(size_t speed);\n\n    void UpdateRenderListObject();\n\n    void UpdateLocation(vec3 nlocation){\n        location = nlocation;\n        UpdateRenderListObject();\n    }\n\n    void EventHandler(Event &event){return;}\n\nprotected:\n    ResourceProxy<Render::Sprite> sprite;\n\n    vec3 location;\n    \n    size_t anim_frame = 0;\n    size_t anim_speed = 0;\n    size_t anim_bframe = 0;\n    bool anim_isplaying = false;\n    \n    Render::drawlistentry_t draw_list_entry = {};\n    Render::vertexarray_t vertex_array = {};\n    Render::spritearray_t sprite_array = {};\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_SPRITECOMPONENT_H"
  },
  {
    "path": "src/components/template.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H\n#define TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H\n\n#include <framework/entitycomponent.h>\n\nnamespace tram {\n\nclass TemplateComponent : public EntityComponent {\npublic:\n    TemplateComponent();\n    ~TemplateComponent();\n    void Init();\n    void Start();\n    void EventHandler(Event &event);\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_TEMPLATECOMPONENT_H"
  },
  {
    "path": "src/components/trigger.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <components/trigger.h>\n#include <physics/api.h>\n\n#include <config.h>\n\n/**\n * @class tram::TriggerComponent components/trigger.h <components/trigger.h>\n * \n * Trigger wrapper.\n * @see https://racenis.github.io/tram-sdk/documentation/components/trigger.html\n */\n\nusing namespace tram::Physics;\n\nnamespace tram {\n\ntemplate <> Pool<TriggerComponent> PoolProxy<TriggerComponent>::pool(\"TriggerComponent pool\", COMPONENT_LIMIT_TRIGGER);\ntemplate <> void Component<TriggerComponent>::init() { ptr = PoolProxy<TriggerComponent>::New(); }\ntemplate <> void Component<TriggerComponent>::yeet() { PoolProxy<TriggerComponent>::Delete(ptr); }\n\nvoid TriggerComponent::Start() {\n    if (!shape.bt_shape && model) {\n        shape = model->GetShape();\n    }\n    \n    assert(shape.bt_shape);\n\n    trigger = API::MakeTrigger(shape, collisionMask, collisionGroup, location, rotation);\n    \n    API::SetTriggerCollisionCallback(trigger, [](void* obj_a, void* obj_b, API::ObjectCollision collision) {\n        TriggerComponent* trigger_component = (TriggerComponent*)obj_a;\n        PhysicsComponent* physics_component = (PhysicsComponent*)obj_b;\n        \n        trigger_component->Collision({physics_component,\n                                      collision.point,\n                                      collision.normal, \n                                      collision.distance});\n    }, this);\n    \n    is_ready = true;\n}\n\nTriggerComponent::~TriggerComponent(){\n    API::YeetTrigger(trigger);\n    \n    if (shape.bt_shape && !model.get()) API::YeetCollisionShape(shape);\n};\n\n/// Sets a collision shape for the trigger.\nvoid TriggerComponent::SetShape(Physics::CollisionShape shape) {\n    this->shape = API::MakeCollisionShape(shape);\n}\n\n/// Sets a collision mask for the trigger.\n/// This method works the same as in PhysicsComponent, see\n/// PhysicsComponent::SetCollsionMask() for more information.\nvoid TriggerComponent::SetCollisionMask(uint32_t flags){\n    collisionMask = flags;\n    \n    if (is_ready) {\n        API::SetTriggerCollisionMask(trigger, flags);\n    }\n}\n\n/// Sets a collision group for the trigger.\n/// This method works the same as in PhysicsComponent, see\n/// PhysicsComponent::SetCollisionGroup() for more information.\nvoid TriggerComponent::SetCollisionGroup(uint32_t flags){\n    collisionGroup = flags;\n    \n    if (is_ready) {\n        API::SetTriggerCollisionGroup(trigger, flags);\n    }\n}\n\n/// Sets the location of the component.\nvoid TriggerComponent::SetLocation (vec3 location) {\n    this->location = location;\n    \n    if (is_ready) {\n        API::SetTriggerLocation(trigger, location);\n    }\n}\n\n/// Sets the rotation of the component.\nvoid TriggerComponent::SetRotation (quat rotation) {\n    this->rotation = rotation;\n    \n    if (is_ready) {\n        API::SetTriggerRotation(trigger, location);\n    }\n}\n\n/// Registers a collision.\n/// This method is called from Phyics::Update().\nvoid TriggerComponent::Collision(const Physics::Collision& collision) {\n    if (!filter || filter(this, collision.collider)) {\n        \n        bool new_collision = true;\n        for (auto& active_collision : active_collisions) {\n            if (active_collision.second.collider != collision.collider) continue;\n            active_collision.first = GetTick();\n            new_collision = false;\n            break;\n        }\n        \n        if (store_collisions) {\n            stored_collisions.push_back(collision);\n        }\n        \n        if (new_collision) {\n            active_collisions.push_back({GetTick(), collision});\n            \n            if (activation) {\n                activation(this, collision);\n            }\n        }\n        \n    }\n}\n\n/// Resets registered collisions.\n/// This method is called from Phyics::Update().\nvoid TriggerComponent::ResetCollisions() {\n    for (auto it = active_collisions.begin(); it != active_collisions.end();) {\n        if (GetTick() - it->first > 1) {\n            if (deactivation) {\n                deactivation(this, it->second);\n            }\n\n            it = active_collisions.erase(it);\n        } else {\n            it++;\n        }\n    }\n    \n    if (store_collisions) {\n        stored_collisions.clear();\n    }\n}\n\n/// Checks for collisions with the trigger.\nstd::vector<Physics::Collision> TriggerComponent::Poll() {\n    std::vector<Physics::Collision> collisions;\n    \n    // TODO: move this into -> Physics::API?\n    //TriggerPollCallback callback (collisions);\n    //DYNAMICS_WORLD->contactTest(trigger.bt_collisionshape, callback);\n    \n    return collisions;\n}\n\n}"
  },
  {
    "path": "src/components/trigger.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H\n#define TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H\n\n#include <physics/physics.h>\n#include <components/physics.h>\n\n#include <vector>\n\nnamespace tram {\n\nclass TriggerComponent;\n\ntypedef void (*collision_callback)(TriggerComponent*, Physics::Collision);\ntypedef bool (*filter_callback)(TriggerComponent*, PhysicsComponent*);\n    \nclass TriggerComponent : public EntityComponent {\npublic:\n    TriggerComponent() : model(this){}\n    ~TriggerComponent();\n    void EventHandler(Event &event){};\n    void Start();\n\n    Physics::CollisionModel* GetModel() { return model.get(); }\n    void SetModel(name_t model) { this->model = Physics::CollisionModel::Find(model); }\n    void SetModel(Physics::CollisionModel* model) { this->model = model; }\n    void SetShape(Physics::CollisionShape shape);\n\n    void SetActivationCallback(collision_callback activation) { this->activation = activation; }\n    void SetDectivationCallback(collision_callback deactivation) { this->deactivation = deactivation; }\n    void SetFilterCallback(filter_callback filter) { this->filter = filter; }\n\n    void SetCollisionMask(uint32_t flags);\n    void SetCollisionGroup(uint32_t flags);\n    \n    void SetStoreCollisions(bool store_collisions) { this->store_collisions = store_collisions; }\n    \n    uint32_t GetCollisionMask() { return collisionMask; }\n    uint32_t GetCollisionGroup() { return collisionGroup; }\n    \n    void SetLocation(vec3 location);\n    void SetRotation(quat rotation);\n    \n    const std::vector<Physics::Collision>& GetStoredCollisions() { return stored_collisions; }\n    \n    // why are these not private/protected?\n    // TODO: fix\n    void Collision(const Physics::Collision& collision);\n    void ResetCollisions();\n    \n    std::vector<Physics::Collision> Poll();\nprivate:\n    ResourceProxy<Physics::CollisionModel> model;\n    \n    // TODO: why camelCase?\n    uint32_t collisionMask = -1;\n    uint32_t collisionGroup = -1;\n    \n    // TODO: change to {} initialization?\n    vec3 location = vec3(0.0f, 0.0f, 0.0f);\n    quat rotation = vec3(0.0f, 0.0f, 0.0f);\n    \n    Physics::collisionshape_t shape = {nullptr};\n    Physics::trigger_t trigger = {nullptr};\n    \n    collision_callback activation = nullptr;\n    collision_callback deactivation = nullptr;\n    filter_callback filter = nullptr;\n\n    bool store_collisions = false;\n    \n    std::vector<std::pair<uint32_t, Physics::Collision>> active_collisions;\n    \n    std::vector<Physics::Collision> stored_collisions;\n};\n\n}\n\n#endif // TRAM_SDK_COMPONENTS_TRIGGERCOMPONENT_H"
  },
  {
    "path": "src/config.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n// This is the configuration file for the library portion of the framework.\n// If you change anything in here, you'll need to recompile everything.\n\n#ifndef TRAM_SDK_CONFIG_H\n#define TRAM_SDK_CONFIG_H\n\n#include <cstdint>\n\nnamespace tram {\n\nconst uint32_t MAX_MATERIAL_TYPES = 20;\nconst uint32_t MAX_VERTEX_FORMATS = 20;\n\nconst uint32_t MAX_VERTEX_SHADERS = 20;\nconst uint32_t MAX_FRAGMENT_SHADERS = 20;\nconst uint32_t MAX_LINKED_SHADERS = 40;\n\n// Rate of fixed updates\nconst float TICK_RATE = 1.0f / 60.0f;\n\n// Initial first person camera sensitivity\nconst float CAMERA_MULTIPLIER = 1.0f / 8.0f;\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                                  PHYSICS                                  |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\nconst float PHYSICS_GROUND_PLANE = -9.0f;\nconst float PHYSICS_GRAVITY = -9.8f;\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                              RESOURCE LIMITS                              |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\n// These numbers determine how much memory will be allocated for each Resource\n// type. \n\n// Currently the Resource pools won't get automatically extended if they run out\n// of space, so essentially these numbers limit how many instances of a\n// Resource type it will be possible to create.\n\nconst uint32_t RESOURCE_LIMIT_SOUND = 100;\nconst uint32_t RESOURCE_LIMIT_MODEL = 100;\nconst uint32_t RESOURCE_LIMIT_PATH = 100;\nconst uint32_t RESOURCE_LIMIT_COLLISION_MODEL = 500;\nconst uint32_t RESOURCE_LIMIT_MATERIAL = 500;\nconst uint32_t RESOURCE_LIMIT_SPRITE = 500;\nconst uint32_t RESOURCE_LIMIT_LIGHT_GRAPH = 250;    // same as worldcell limit\nconst uint32_t RESOURCE_LIMIT_SOUND_GRAPH = 250;    // ditto\nconst uint32_t RESOURCE_LIMIT_ANIMATION = 50;\nconst uint32_t RESOURCE_LIMIT_POSE = 100;\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                             COMPONENT LIMITS                              |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\n// Same as for Resources.\n\nconst uint32_t COMPONENT_LIMIT_ANIMATION = 50;\nconst uint32_t COMPONENT_LIMIT_AUDIO = 150;\nconst uint32_t COMPONENT_LIMIT_CONTROLLER = 25;\nconst uint32_t COMPONENT_LIMIT_LIGHT = 250;\nconst uint32_t COMPONENT_LIMIT_PARTICLE = 100;\nconst uint32_t COMPONENT_LIMIT_PHYSICS = 500;\nconst uint32_t COMPONENT_LIMIT_PLAYER = 5;\nconst uint32_t COMPONENT_LIMIT_RENDER = 1000;\nconst uint32_t COMPONENT_LIMIT_SPRITE = 100;\nconst uint32_t COMPONENT_LIMIT_DECAL = 100;\nconst uint32_t COMPONENT_LIMIT_TRIGGER = 50;\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                               OTHER LIMITS                                |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\n// Limit for file path length, e.g. \"data/textures/material001.png\"\nconst size_t PATH_LIMIT = 200;\n\n// Limit for system count\nconst size_t SYSTEM_LIMIT = 128;\n\n// Limit for scriptable entity types\nconst uint32_t SCRIPTABLE_ENTITY_TYPE_LIMIT = 50;\n\n// Limit for all entity types\nconst uint32_t ENTITY_TYPE_LIMIT = 50;\n\n// Limits for Async system resoruce streaming requests\nconst uint32_t RESOURCE_LOADER_QUEUE_LIMIT = 1000;\nconst uint32_t RESOURCE_LOADER_REQUEST_LIMIT = 1750;\n\n// Limits for entities\nconst uint32_t ENTITY_LIMIT = 5000;\nconst uint32_t NAMED_ENTITY_LIMIT = 500;\n\n// Limit for total sum of characters that can be stored in all language strings\nconst uint32_t LANUGAGE_STRING_CHARACTER_LIMIT = 10000;\n\n// Limit for the number of lanugage strings\nconst uint32_t LANGUAGE_STRING_LIMIT = 500;\n\n// Limit for enqueued messages before dispatch\nconst uint32_t MESSAGE_QUEUE_LIMIT = 500;\n\n// Limit for enqueued messages with a delay\nconst uint32_t MESSAGE_PRIORITY_QUEUE_LIMIT = 250;\n\n// Limit for message data, in bytes\nconst uint32_t MESSAGE_DATA_LIMIT = 2000;\n\n// Limit for message types\nconst uint32_t MESSAGE_TYPE_LIMIT = 100;\n\n// Limit for signal types\nconst uint32_t SIGNAL_TYPE_LIMIT = 100;\n\nconst uint32_t WORLDCELL_TRANSITION_LIMIT = 250;\nconst uint32_t KEYBOARDACTION_LIMIT = 100;\n\n// Limit for total sum of characters that can be stored in all names\nconst uint32_t UID_CHARACTER_LIMIT = 20000;\n\n// Limit for the number of names\nconst uint32_t UID_LIMIT = 2000\n;\nconst uint32_t WORLDCELL_LIMIT = 250;\n\nconst uint32_t RIGIDBODY_LIMIT = 500;\n\n// +---------------------------------------------------------------------------+\n// |                                                                           |\n// |                             EXTENSION LIMITS                              |\n// |                                                                           |\n// +---------------------------------------------------------------------------+\n\n\nconst uint32_t EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT = 100;\nconst uint32_t EXT_KITCHENSINK_SOUNDTABLE_LIMIT = 100;\n}\n\n#endif // TRAM_SDK_CONFIG_H"
  },
  {
    "path": "src/entities/crate.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/worldcell.h>\n\n#include <entities/crate.h>\n#include <entities/script.h>\n\n#include <render/light.h>\n\n#include <components/render.h>\n#include <components/physics.h>\n\n#include <framework/serialization.h>\n#include <framework/message.h>\n\n/**\n * @class tram::Crate entities/crate.h <entities/crate.h>\n * \n * 3D Model with a rigidbody attached to it.\n * @see https://racenis.github.io/tram-sdk/documentation/entities/crate.html\n */\n\nnamespace tram {\n\nusing namespace tram::Physics;\n\nenum {\n    FIELD_MODEL,\n    FIELD_COLLMODEL\n};\n\nvoid Crate::Register() {\n    Entity::RegisterType(\n        \"crate\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Crate(a, b); },\n        [](Entity* a) { delete a; },\n        {\n            {FIELD_MODEL,       TYPE_NAME,      FIELD_SERIALIZE},\n            {FIELD_COLLMODEL,   TYPE_NAME,      FIELD_SERIALIZE}\n        }\n    );\n    \n    ScriptableType::Register(\n        \"crate\",\n        [](name_t type, const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Scriptable<Crate>(a, b, type); },\n        [](Entity* a) { delete a; }\n    );\n}\n\nname_t Crate::GetType() {\n    return \"crate\";\n}\n\nCrate::Crate(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    model = field_array[FIELD_MODEL];\n    collmodel = field_array[FIELD_COLLMODEL];\n}\n\nCrate::Crate (const char* nname, const char* modelname, const char* collisionmodelname, vec3 pos, vec3 rot) : Entity(nname) {\n    name = UID(nname);\n    location = pos;\n    rotation = quat(rot);\n\n    model = UID(modelname);\n    collmodel = UID(collisionmodelname);\n}\n\nvoid Crate::UpdateParameters() {\n    if (!IsLoaded()) return;\n    rendercomponent->SetLocation(location);\n    rendercomponent->SetRotation(rotation);\n    if (cell) {\n        rendercomponent->SetDirectionaLight(!cell->HasInteriorLighting());\n    } else {\n        rendercomponent->SetDirectionaLight(true);\n    }\n    rendercomponent->SetEnvironmentMap(Render::LightGraph::LookupEnvironmentMap(location));\n}\n\nvoid Crate::SetParameters() {\n    if (!IsLoaded()) return;\n    UpdateParameters();\n    physicscomponent->SetLocation(location);\n    physicscomponent->SetRotation(rotation);\n}\n\nvoid Crate::Load(){\n    rendercomponent.make();\n    physicscomponent.make();\n    \n    rendercomponent->SetParent(this);\n    rendercomponent->SetModel(model);\n\n    physicscomponent->SetParent(this);\n    physicscomponent->SetCollisionGroup(COLL_DYNAMICOBJ);\n    physicscomponent->SetModel(collmodel);\n    physicscomponent->SetMass(68.9f);\n    physicscomponent->Sleep();\n    \n    rendercomponent->Init();\n    physicscomponent->Init();\n    flags |= LOADED;\n\n    UpdateParameters();\n}\n\nvoid Crate::Unload() {\n    flags &= ~LOADED;\n\n    Serialize();\n\n    rendercomponent.clear();\n    physicscomponent.clear();\n}\n\nvoid Crate::Serialize() {\n    model = rendercomponent->GetModel()->GetName();\n    collmodel = physicscomponent->GetModel();\n}\n\nvoid Crate::MessageHandler(Message& msg){\n    if (msg.type != Message::MOVE_PICK_UP) {\n        return;\n    }\n}\n\n}\n"
  },
  {
    "path": "src/entities/crate.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_CRATE_H\n#define TRAM_SDK_ENTITIES_CRATE_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass RenderComponent;\nclass PhysicsComponent;\n\nclass Crate : public Entity {\npublic:\n    Crate(const SharedEntityData&, const ValueArray&);\n\n    Crate(const char* nname, const char* modelname, const char* collisionmodelname, vec3 pos, vec3 rot);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_CRATE_H"
  },
  {
    "path": "src/entities/decoration.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/worldcell.h>\n\n#include <entities/decoration.h>\n\n#include <render/light.h>\n\n#include <components/render.h>\n#include <components/physics.h>\n#include <components/animation.h>\n\n#include <framework/serialization.h>\n#include <framework/message.h>\n\n/**\n * @class tram::Decoration entities/decoration.h <entities/decoration.h>\n * \n * 3D Model with an AnimationComponent attached to it.\n * @see https://racenis.github.io/tram-sdk/documentation/entities/decoration.html\n */\n\nnamespace tram {\n\nusing namespace tram::Physics;\n\nenum : uint32_t {\n    FLAG_LOCKED = 1\n};\n\nenum {\n    FIELD_FLAGS,\n    FIELD_MODEL,\n    FIELD_ANIMATION\n};\n\nvoid Decoration::Register() {\n    Entity::RegisterType(\n        \"decoration\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Decoration(a, b); },\n        [](Entity* a) { delete a; },\n        {\n            {FIELD_FLAGS,       TYPE_UINT32,    FIELD_SERIALIZE},\n            {FIELD_MODEL,       TYPE_NAME,      FIELD_SERIALIZE},\n            {FIELD_ANIMATION,   TYPE_NAME,      FIELD_SERIALIZE}\n        }\n    );\n}\n\nname_t Decoration::GetType() {\n    return \"decoration\";\n}\n\nDecoration::Decoration(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    decoration_flags = field_array[FIELD_FLAGS];\n    model = field_array[FIELD_MODEL];\n    animation = field_array[FIELD_ANIMATION];\n}\n\nvoid Decoration::UpdateParameters() {\n    if (!IsLoaded()) return;\n    rendercomponent->SetLocation(location);\n    rendercomponent->SetRotation(rotation);\n    rendercomponent->SetDirectionaLight(!cell->HasInteriorLighting());\n    \n    rendercomponent->SetEnvironmentMap(Render::LightGraph::LookupEnvironmentMap(location));\n}\n\nvoid Decoration::SetParameters() {\n    if (!IsLoaded()) return;\n    UpdateParameters();\n    physicscomponent->SetLocation(location);\n    physicscomponent->SetRotation(rotation);\n}\n\nvoid Decoration::Load() {\n    rendercomponent.make();\n    physicscomponent.make();\n    \n    rendercomponent->SetParent(this);\n    rendercomponent->SetModel(model);\n\n    physicscomponent->SetParent(this);\n    physicscomponent->SetCollisionGroup(COLL_STATICOBJ);\n    physicscomponent->SetCollisionMask(-1 ^ (COLL_WORLDOBJ | COLL_STATICOBJ));\n    physicscomponent->SetModel(model);\n    physicscomponent->SetMass(0.0f);\n    \n    rendercomponent->Init();\n    \n    physicscomponent->Init();\n    \n    \n    \n    if (animation) {\n        RequestAnimationComponent();\n        \n        animationcomponent->Play(animation, -1, 1.0f, 1.0f);\n    }\n    \n    flags |= LOADED;\n\n    UpdateParameters();\n}\n\nvoid Decoration::RequestAnimationComponent() {\n    if (animationcomponent) return;\n    \n    animationcomponent.make();\n    animationcomponent->SetParent(this);\n    animationcomponent->SetModel(model);\n    animationcomponent->Init();\n    \n    rendercomponent->SetArmature(animationcomponent);\n}\n\nvoid Decoration::Unload() {\n    flags &= ~LOADED;\n\n    Serialize();\n\n    rendercomponent.clear();\n    animationcomponent.clear();\n    physicscomponent.clear();\n}\n\nvoid Decoration::Serialize() {\n\n}\n\nvoid Decoration::MessageHandler(Message& msg) {\n    switch (msg.type) {\n        case Message::SELECT:\n            if (decoration_flags & FLAG_LOCKED) return;\n            \n            Event::Post({\n                .type = Event::SELECTED,\n                .poster = this->id\n            });\n            \n            break;\n        case Message::ACTIVATE:\n            break;\n        case Message::ACTIVATE_ONCE:\n            if (decoration_flags & FLAG_LOCKED) return;\n            \n            FireSignal(Signal::ACTIVATE);\n            FireSignal(Signal::USE);\n            \n            break;\n        case Message::LOCK:\n            decoration_flags |= FLAG_LOCKED;\n            break;\n        case Message::UNLOCK:\n            decoration_flags &= ~FLAG_LOCKED;\n            break;\n        case Message::TOGGLE:\n            if (animation) {\n                RequestAnimationComponent();\n                if (animationcomponent->IsPlaying(animation)) {\n                    //animationcomponent->StopAnimation(animation);\n                    //animationcomponent->FadeAnimation(animation, false, 0.05f);\n                    animationcomponent->FadeOut(animation, 1.0f);\n                } else {\n                    animationcomponent->Play(animation, -1, 1.0f, 1.0f);\n                    animationcomponent->FadeIn(animation, 1.0f);\n                }\n            }\n            break;\n        case Message::KILL:\n            Yeet();\n            \n            break;\n        case Message::START:\n            if (animation) {\n                RequestAnimationComponent();\n                animationcomponent->Play(animation, -1, 1.0f, 1.0f);\n                animationcomponent->FadeIn(animation, 1.0f);\n            }\n            break;\n        case Message::STOP:\n            if (animation) {\n                RequestAnimationComponent();\n                animationcomponent->FadeOut(animation, 1.0f);\n            }\n            break;\n        case Message::SET_ANIMATION:\n            if (!msg.data_value) {\n                Log(Severity::WARNING, System::MISC, \"Decoration {} received a SET_ANIMATION without a parameter\", name);\n                return;\n            }\n            if (msg.data_value->GetType() != TYPE_NAME) {\n                Log(Severity::WARNING, System::MISC, \"Decoration {} received a SET_ANIMATION with a non-name parameter\", name);\n                return;\n            }\n        \n            if (animation && animationcomponent->IsPlaying(animation)) {\n                animationcomponent->FadeOut(animation, 1.0f);\n                animation = *msg.data_value;\n                animationcomponent->Play(animation, -1, 1.0f, 1.0f);\n                animationcomponent->FadeIn(animation, 1.0f);\n            } else {\n                animation = *msg.data_value;\n            }\n            break;\n        default:\n            Log(Severity::WARNING, System::MISC, \"Decoration {} does not understand message {}\", name, Message::GetName(msg.type)); \n    }\n}\n\n}\n"
  },
  {
    "path": "src/entities/decoration.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_DECORATION_H\n#define TRAM_SDK_ENTITIES_DECORATION_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass RenderComponent;\nclass AnimationComponent;\nclass PhysicsComponent;\n\n// TODO: add a field that lets you set how fast the animation fades\n// TODO: don't create animation component if there is no animation?\n\nclass Decoration : public Entity {\npublic:\n    Decoration(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<AnimationComponent> animationcomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    void RequestAnimationComponent();\n    \n    name_t model;\n    name_t animation;\n    \n    uint32_t decoration_flags;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_DECORATION_H"
  },
  {
    "path": "src/entities/light.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/core.h>\n#include <entities/light.h>\n#include <components/light.h>\n#include <render/light.h>\n\n#include <framework/serialization.h>\n\n/**\n * @class tram::Light entities/light.h <entities/light.h>\n * \n * LightComponent wrapper.\n * @see https://racenis.github.io/tram-sdk/documentation/entities/light.html\n */\n\nnamespace tram {\n\nenum {\n    FIELD_COLOR,\n    FIELD_DISTANCE,\n    FIELD_DIRECTION,\n    FIELD_EXPONENT\n};\n\nvoid Light::Register() {\n    Entity::RegisterType(\n        \"light\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Light(a, b); },\n        [](Entity* a) { delete a; },\n        {\n            {FIELD_COLOR,       TYPE_VEC3,      FIELD_SERIALIZE},\n            {FIELD_DISTANCE,    TYPE_FLOAT32,   FIELD_SERIALIZE},\n            {FIELD_DIRECTION,   TYPE_VEC3,      FIELD_SERIALIZE},\n            {FIELD_EXPONENT,    TYPE_FLOAT32,   FIELD_SERIALIZE}\n        }\n    );\n}\n\nname_t Light::GetType() {\n    return \"light\";\n}\n\nLight::Light(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    color = field_array[FIELD_COLOR];\n    distance = field_array[FIELD_DISTANCE];\n    direction = field_array[FIELD_DIRECTION];\n    exponent = field_array[FIELD_EXPONENT];    \n}\n\nvoid Light::UpdateParameters () {\n    if (!light) return;\n    light->SetLocation(location);\n}\n\nvoid Light::SetParameters () {\n    UpdateParameters();\n}\n\nvoid Light::Load () {\n    if (!Render::LightGraph::ContainsEntity(id)) {\n        light.make();\n        light->SetColor(color);\n        light->SetDistance(distance);\n        light->SetDirection(direction);\n        light->SetExponent(exponent);\n\n        light->Init();\n    }\n    \n    flags |= LOADED;\n\n    UpdateParameters();\n}\n\nvoid Light::Unload () {\n    flags &= ~LOADED;\n\n    Serialize();\n\n    light.clear();\n}\n\nvoid Light::Serialize () {\n    vec3 light_color;\n    float light_distance;\n    \n    light_color = light->GetColor(); // idk if this actually works\n    light_distance = light->GetDistance();\n    \n    color = light_color;\n    distance = light_distance;\n}\n\nvoid Light::MessageHandler (Message& msg) {\n    return;\n}\n\n}"
  },
  {
    "path": "src/entities/light.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_LIGHT_H\n#define TRAM_SDK_ENTITIES_LIGHT_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass LightComponent;\n\nclass Light : public Entity {\npublic:\n    Light(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<LightComponent> light;\n    \n    vec3 color;\n    float distance;\n    vec3 direction;\n    float exponent;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_LIGHT_H"
  },
  {
    "path": "src/entities/marker.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <entities/marker.h>\n#include <entities/script.h>\n\n/**\n * @class tram::Marker entities/marker.h <entities/marker.h>\n * \n * Functionally inert.\n * Doesn't do anything and has no functionality. Can be used as a template.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/marker.html\n */\n\nnamespace tram {\n    \nMarker::Marker(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {}\n\nvoid Marker::Register() {\n    Entity::RegisterType(\n        \"marker\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Marker(a, b); },\n        [](Entity* a) { delete a; },\n        (FieldInfo*)nullptr,\n        0\n    );\n    \n    ScriptableType::Register(\n        \"marker\",\n        [](name_t type, const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Scriptable<Marker>(a, b, type); },\n        [](Entity* a) { delete a; }\n    );\n}\n\nname_t Marker::GetType() {\n    return \"marker\";\n}\n\nvoid Marker::UpdateParameters() {}\nvoid Marker::SetParameters() {}\nvoid Marker::Load() {}\nvoid Marker::Unload() {}\nvoid Marker::Serialize() {}\nvoid Marker::MessageHandler(Message& msg) {}\n\n}"
  },
  {
    "path": "src/entities/marker.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_MARKER_H\n#define TRAM_SDK_ENTITIES_MARKER_H\n\n#include <framework/entity.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n    \nclass Marker : public Entity {\npublic:\n    Marker(const SharedEntityData&, const ValueArray&);\n\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_MARKER_H"
  },
  {
    "path": "src/entities/player.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <entities/player.h>\n\n#include <framework/message.h>\n\n#include <components/controller.h>\n#include <components/player.h>\n#include <components/physics.h>\n#include <components/trigger.h>\n\n/**\n * @class tram::Player entities/player.h <entities/player.h>\n * \n * ControllerComponent with a PlayerComponent attached to it.\n * Can be used to control a player for a video game, or could be used to simply\n * be able to walk around the virtual world that you have created.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/player.html\n */\n\nnamespace tram {\n\n// we should make these configurable in the future\nconst float collision_width = 0.35f;\nconst float collision_height = 1.85f;\nconst float collision_height_crouch = 0.5f;\n\nconst uint32_t collision_group = Physics::COLL_PLAYER;\n    \n/// Creates a new player.\nPlayer::Player() : Player(\"player\") {\n    \n}\n\n/// Creates a player with a custom name.\n/// @param name Name of the player.\nPlayer::Player(name_t name) : Entity(name) {\n    SetAutoLoad(false);\n}\n\nname_t Player::GetType() {\n    return \"player\";\n}\n\nvoid Player::Load(){\n    plomp.make();\n    controllercomponent.make();\n    physics_body.make();\n    \n    controllercomponent->SetParent(this);\n    controllercomponent->SetCollisionGroup(collision_group);\n    controllercomponent->SetCollisionSize(collision_width, collision_height, collision_height_crouch);\n\n    plomp->SetParent(this);\n    plomp->SetControllerComponent(controllercomponent);\n    \n    physics_body->SetParent(this);\n    physics_body->SetShape(Physics::CollisionShape::Capsule(collision_width, collision_height/2.0f));\n    physics_body->SetCollisionGroup(collision_group);\n    physics_body->SetKinematic(true);\n    physics_body->DisableDeactivation();\n    \n    plomp->Init();\n    controllercomponent->Init();\n    physics_body->Init();\n\n    SetFlag(LOADED, true);\n}\nvoid Player::Unload() {\n    plomp.clear();\n    controllercomponent.clear();\n    \n    SetFlag(LOADED, false);\n}\n\nvoid Player::Serialize() {\n    std::cout << \"Player not seriaziable\" << std::endl;\n}\n\nvoid Player::SerializeString(std::string& str) {\n    std::cout << \"Player not stringable\" << std::endl;\n}\n\nvoid Player::UpdateParameters() {\n    \n}\n\nvoid Player::SetParameters() {\n    if (!IsLoaded()) return;\n    UpdateParameters();\n}\n\nvoid Player::MessageHandler(Message& msg) {\n    if (msg.type == Message::PING) {\n        Log (\"Player was pinged with {}!\", (long long) msg.data);\n    }\n    \n    if (msg.type == Message::SET_FLAG_ON && msg.data_value) {\n        const name_t flag = *msg.data_value;\n        \n        if (flag == \"noclip\") {\n            Log(\"Noclip turned on.\");\n            plomp->SetNoclip(true);\n            \n        } else if (flag == \"mouselook\") {\n            Log(\"Mouselook turned on.\");\n            plomp->SetKeyboardLook(false);\n            \n        } else {\n            Log (\"Player does not have flag {}!\", flag);\n        }\n    }\n    \n    if (msg.type == Message::SET_FLAG_OFF && msg.data_value) {\n        const name_t flag = *msg.data_value;\n        \n        if (flag == \"noclip\") {\n            Log(\"Noclip turned off.\");\n            plomp->SetNoclip(false);\n            \n        } else if (flag == \"mouselook\") {\n            Log(\"Mouselook turned of.\");\n            plomp->SetKeyboardLook(true);\n            \n        } else {\n            Log (\"Player does not have flag {}!\", flag);\n        }\n    }\n}\n\n}\n"
  },
  {
    "path": "src/entities/player.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_PLAYER_H\n#define TRAM_SDK_ENTITIES_PLAYER_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\n#include <components/player.h>\n#include <components/controller.h>\n\nnamespace tram {\n\nclass Player : public Entity {\npublic:\n    Player();\n    Player(name_t);\n    ~Player() {std::cout << \"Player destructor!\" << std::endl; Unload();}\n    void Load();\n    void Unload();\n    void Serialize();\n    void SerializeString(std::string& str);\n    void UpdateParameters();\n    void SetParameters();\n    void MessageHandler(Message& msg);\n    name_t GetType();\nprotected:\n    Component<PlayerComponent> plomp;\n    Component<PhysicsComponent> physics_body;\npublic:\n    // wait why is this public\n    Component<FPSControllerComponent> controllercomponent;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_PLAYER_H"
  },
  {
    "path": "src/entities/script.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <entities/script.h>\n\n#include <framework/script.h>\n#include <framework/worldcell.h>\n\n#include <components/physics.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n/**\n * @class tram::Scriptable entities/script.h <entities/script.h>\n * \n * Provides script language subclassing.\n * \n * If you want to create a sublass in C++, it's easy -- just `#include` the\n * class header and make subclass. But if you want to do so from a scripting\n * language, e.g. Lua, you will need an interface on the C++ side.\n * This template provides such an interface.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/script.html\n */\n\nnamespace tram {\n\nnamespace ScriptableType {\n\nstruct ScriptableTypeInfo {\n    name_t base_type;\n    Entity* (*constr_func)(name_t new_type, const SharedEntityData&, const ValueArray&) = nullptr;\n    void (*destr_func)(Entity*) = nullptr;\n};\n\nstatic Hashmap<ScriptableTypeInfo> infos(\"Scriptable entity type pool\", SCRIPTABLE_ENTITY_TYPE_LIMIT);\n\nvoid Register(name_t base_type,  Entity* (*constr_func)(name_t new_type, const SharedEntityData&, const ValueArray&), void (*destr_func)(Entity*)) {\n    infos.Insert(base_type, {base_type, constr_func, destr_func});\n}\n\nEntity* Make(name_t base_type, name_t new_type, const SharedEntityData& data, const ValueArray& array) {\n    const auto& info = infos.Find(base_type);\n    \n    if (!info.constr_func) return nullptr;\n    \n    return info.constr_func(new_type, data, array);\n}\n\nvoid Yeet(Entity* yeetable) {\n    const auto& info = infos.Find(yeetable->GetType());\n    \n    assert(info.destr_func);\n    \n    return info.destr_func(yeetable);\n}\n\n}\n\n}"
  },
  {
    "path": "src/entities/script.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_SCRIPT_H\n#define TRAM_SDK_ENTITIES_SCRIPT_H\n\n#include <framework/entity.h>\n#include <framework/serialization.h>\n\n#include <framework/script.h>\n\n#include <iostream>\n\nnamespace tram {\n\n// TODO: make constr_func etc. into typedefs??\nnamespace ScriptableType {\n    void Register(name_t base_type, Entity* (*constr_func)(name_t new_type, const SharedEntityData&, const ValueArray&), void (*destr_func)(Entity*));\n    Entity* Make(name_t base_type, name_t type, const SharedEntityData&, const ValueArray&);\n    void Yeet(Entity* yeetable);\n}\n\ntemplate <typename T>\nclass Scriptable : public T {\npublic:\n    Scriptable(const SharedEntityData& shared_data, const ValueArray& field_array, name_t type) : T(shared_data, field_array) {\n        this->type = type;\n    }\n    \n    ~Scriptable() {}\n\n    void UpdateParameters() {\n        if (Script::CallFunction(\"__impl_entity_update_parameters_callback\", {this->id})) {\n            T::UpdateParameters();\n        }\n    }\n    \n    void SetParameters() {\n        if (Script::CallFunction(\"__impl_entity_set_parameters_callback\", {this->id})) {\n            T::SetParameters();\n        }\n    }\n    \n    void Load() {\n        if (Script::CallFunction(\"__impl_entity_load_callback\", {this->id})) {\n            T::Load();\n        }\n    }\n    \n    void Unload() {\n        if (Script::CallFunction(\"__impl_entity_unload_callback\", {this->id})) {\n            T::Unload();\n        }\n    }\n    \n    void Serialize() {\n        /*if (Script::CallFunction(\"__impl_entity_serialize_callback\", {this->id})) {\n            if (entity) entity->Serialize();\n        }*/\n    }\n\n    inline void SanitizeData(Value& data) {\n        // there might be some issues if the message's data pointer is not pointing\n        // to a value, but something else.\n\n        // hopefully we won't get segfaults.\n        bool valid_type = data.IsFloat() || data.IsInt() || data.IsBool() || data.GetType() == TYPE_NAME;\n                \n        if (!valid_type) data = Value();\n\n        if (data.GetType() == TYPE_NAME) {\n            if (!name_t::is_valid(data)) data = Value();\n        }\n    }\n\n    void MessageHandler(Message& msg) {\n        Value data = msg.data ? *msg.data_value : Value();\n\n        SanitizeData(data);\n\n        if (Script::CallFunction(\"__impl_entity_message_handler_callback\", {this->id, msg.type, msg.sender, msg.receiver, data})) {\n            T::MessageHandler(msg);\n        }\n    }\n    \n    void EventHandler(Event& evt) {\n        Value data = evt.data ? *evt.data_value : Value();\n\n        SanitizeData(data);\n\n        if (Script::CallFunction(\"__impl_entity_event_handler_callback\", {this->id, evt.type, evt.subtype, evt.poster, data})) {\n            T::EventHandler(evt);\n        }\n    }\n    \n    name_t GetType() {\n        return type;\n    }\nprotected:\n    name_t type;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_SCRIPT_H"
  },
  {
    "path": "src/entities/sound.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/core.h>\n#include <entities/sound.h>\n#include <components/audio.h>\n\n#include <framework/serialization.h>\n\n/**\n * @class tram::Sound entities/sound.h <entities/sound.h>\n * \n * AudioComponent wrapper.\n * \n * Can be used for placing environmental sounds, or for playing sounds for\n * Signal triggers, but since you're looking this up in the C++ docs, you are\n * probably are intereseted in the Sound entity as an self-yeeting \n * AudioComponent. \n * \n * Which it can be used as.\n * \n * Very successfully, might I add.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/sound.html\n */\n\nnamespace tram {\n\nenum {\n    SOUND_LOOPING = 1,\n    SOUND_START_ON_LOAD = 2,\n};\n    \nenum {\n    FIELD_FLAGS,\n    FIELD_SOUND,\n    FIELD_VOLUME\n};\n\nstatic const Type fields[3] = {\n    TYPE_INT32,\n    TYPE_NAME,\n    TYPE_FLOAT32\n}; \n\nvoid Sound::Register() {\n    Entity::RegisterType(\n        \"sound\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Sound(a, b); },\n        [](Entity* a) { delete a; },\n        fields,\n        3\n    );\n}\n\nname_t Sound::GetType() {\n    return \"sound\";\n}\n\n/// Regular map file constructor.\nSound::Sound(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    sound = field_array[FIELD_SOUND];\n    volume = field_array[FIELD_VOLUME];\n    sound_flags = field_array[FIELD_FLAGS];\n}\n\n/// PLays a sound, then removes itself.\nSound::Sound(name_t sound, float volume, vec3 position) : Entity(\"none\") {\n    Audio::Sound* s = Audio::Sound::Find(sound);\n    \n    this->sound = sound;\n    this->volume = volume;\n    this->sound_flags = SOUND_START_ON_LOAD;\n    \n    this->location = position;\n    \n    Message msg = {\n        .type = Message::KILL,\n        .sender = this->id,\n        .receiver = this->id\n    };\n    \n    Message::Send(msg, s->GetLength());\n    \n    flags |= NON_PERSISTENT;\n    \n    Load();\n}\n\nvoid Sound::UpdateParameters () {\n    if (!IsLoaded()) return;\n    audio->SetLocation(location);\n}\n\nvoid Sound::SetParameters () {\n    UpdateParameters();\n}\n\nvoid Sound::Load () {\n    audio.make();\n    \n    audio->SetParent(this);\n    audio->SetSound(sound);\n    audio->SetRepeating(sound_flags & SOUND_LOOPING);\n    audio->SetLocation(location);\n    \n    audio->Init();\n    \n    if (sound_flags & SOUND_START_ON_LOAD) {\n        audio->Play();\n    }\n    \n    flags |= LOADED;\n}\n\nvoid Sound::Unload () {\n    flags &= ~LOADED;\n\n    Serialize();\n\n    audio.clear();\n}\n\nvoid Sound::Serialize () {\n\n}\n\nvoid Sound::MessageHandler (Message& msg) {\n    switch (msg.type) {\n        case Message::TOGGLE:\n            if (audio->IsPlaying()) {\n                audio->Stop();\n            } else {\n                audio->Play();\n            }\n            break;\n        case Message::KILL:\n            Yeet();\n            break;\n        case Message::START:\n            audio->Play();\n            break;\n        case Message::STOP:\n            audio->Stop();\n            break;\n        default:\n            return;\n    }\n}\n\n}"
  },
  {
    "path": "src/entities/sound.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_AUDIO_H\n#define TRAM_SDK_ENTITIES_AUDIO_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass AudioComponent;\n\nclass Sound : public Entity {\npublic:\n    Sound(const SharedEntityData&, const ValueArray&);\n    \n    // this should be a static method!!!\n    // and even better, the audiocomponent should have callbacks when the\n    // audio is finished playing, so that it can delete itself.. idk\n    // TODO: racenis fix pls\n    Sound(name_t sound, float volume, vec3 position);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<AudioComponent> audio;\n    \n    name_t sound;\n    float volume;\n    int sound_flags;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_AUDIO_H"
  },
  {
    "path": "src/entities/staticworldobject.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/worldcell.h>\n\n#include <entities/staticworldobject.h>\n#include <components/render.h>\n#include <components/physics.h>\n\n#include <framework/serialization.h>\n#include <framework/settings.h>\n\n/**\n * @class tram::StaticWorldObject entities/staticworldobject.h <entities/staticworldobject.h>\n * \n * Worldspawn.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/staticwobj.html\n */\n\nnamespace tram {\n\nstatic Settings::Property<bool> STATIC_WOBJ_WIREFRAME = {true, \"staticwobj-wireframe\", Settings::NONE};\n    \nusing namespace tram::Physics;\n\nenum {\n    FIELD_MODEL,\n    FIELD_LIGHTMAP\n};\n\nvoid StaticWorldObject::Register() {\n    Entity::RegisterType(\n        \"staticwobj\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new StaticWorldObject(a, b); },\n        [](Entity* a) { delete a; },\n        {\n            {FIELD_MODEL,       TYPE_NAME,      FIELD_SERIALIZE},\n            {FIELD_LIGHTMAP,    TYPE_NAME,      FIELD_SERIALIZE}\n        }\n    );\n}\n\nname_t StaticWorldObject::GetType() {\n    return \"staticwobj\";\n}\n\nStaticWorldObject::StaticWorldObject(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    model = field_array[FIELD_MODEL];\n    lightmap = field_array[FIELD_LIGHTMAP];\n}\n\nvoid StaticWorldObject::UpdateParameters() {\n    if (IsLoaded()) {\n        rendercomponent->SetLocation(location);\n        rendercomponent->SetRotation(rotation);\n        \n        rendercomponent->SetLineDrawingMode(STATIC_WOBJ_WIREFRAME);\n    }\n}\n\nvoid StaticWorldObject::SetParameters() {\n    if (IsLoaded()) {\n        rendercomponent->SetLocation(location);\n        rendercomponent->SetRotation(rotation);\n        physicscomponent->SetLocation(location);\n        physicscomponent->SetRotation(rotation);\n    }\n}\n\nvoid StaticWorldObject::Load(){\n    rendercomponent.make();\n    rendercomponent->SetParent(this);\n    rendercomponent->SetModel(model);\n    rendercomponent->SetLightmap(lightmap);\n    rendercomponent->SetDirectionaLight(!cell->HasInteriorLighting());\n\n    physicscomponent.make();\n    physicscomponent->SetModel(model);\n    physicscomponent->SetMass(0.0f);\n    physicscomponent->SetParent(this);\n    physicscomponent->SetCollisionGroup(COLL_WORLDOBJ);\n    physicscomponent->SetCollisionMask(-1 ^ (COLL_WORLDOBJ | COLL_STATICOBJ));\n\n    rendercomponent->Init();\n    physicscomponent->Init();\n    \n    \n    SetFlag(LOADED, true);\n\n    UpdateParameters();\n};\n\nvoid StaticWorldObject::Unload(){\n    SetFlag(LOADED, false);\n    \n    Serialize();\n\n    rendercomponent.clear();\n    physicscomponent.clear();\n};\n\nvoid StaticWorldObject::Serialize() {\n    model = rendercomponent->GetModel()->GetName();\n    lightmap = rendercomponent->GetLightmap();\n};\n\nvoid StaticWorldObject::MessageHandler(Message& msg) {\n    switch (msg.type) {\n        case Message::PING:\n            Log(\"Entity {} : {} was pinged by {} : {}!\", id, name, msg.sender, msg.sender ? Entity::Find(msg.sender)->GetName() : \"none\");\n            break;\n        case Message::SELECT:\n            break;\n        case Message::KILL:\n            Yeet();\n            break;\n        default:\n            Log(\"StaticWorldObject doesn't know how to handle {} message!\", Message::GetName(msg.type));\n    }\n};\n\n}\n"
  },
  {
    "path": "src/entities/staticworldobject.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef ENTITIES_STATICWORLDOBJECT_H\n#define ENTITIES_STATICWORLDOBJECT_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass RenderComponent;\nclass PhysicsComponent;\n\nclass StaticWorldObject : public Entity {\npublic:\n    StaticWorldObject(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t lightmap;\n};\n\n}\n\n#endif // ENTITIES_STATICWORLDOBJECT_H"
  },
  {
    "path": "src/entities/trigger.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/worldcell.h>\n\n#include <entities/trigger.h>\n\n#include <components/render.h>\n#include <components/trigger.h>\n\n#include <framework/serialization.h>\n#include <framework/message.h>\n\n/**\n * @class tram::Trigger entities/trigger.h <entities/trigger.h>\n * \n * TriggerComponent wrapper.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/entities/trigger.html\n */\n\nnamespace tram {\n\nusing namespace tram::Physics;\n\nenum : uint32_t {\n    TRIGGER_DISABLED = 1\n};\n\nenum {\n    FIELD_FLAGS,\n    FIELD_COLLISION_MASK,\n    FIELD_MODEL,\n};\n\nstatic const Type fields[3] = {\n    TYPE_UINT32,\n    TYPE_UINT32,\n    TYPE_NAME\n}; \n\nstatic bool draw_trigger = false;\n\nvoid Trigger::Register() {\n    Entity::RegisterType(\n        \"trigger\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Trigger(a, b); },\n        [](Entity* a) { delete a; },\n        fields,\n        3\n    );\n}\n\nname_t Trigger::GetType() {\n    return \"trigger\";\n}\n\nTrigger::Trigger(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    model = field_array[FIELD_MODEL];\n    trigger_flags = field_array[FIELD_FLAGS];\n    collision_mask = field_array[FIELD_COLLISION_MASK];\n}\n\nvoid Trigger::UpdateParameters() {\n    if (!IsLoaded()) return;\n    \n    if (rendercomponent) {\n        rendercomponent->SetLocation(location);\n        rendercomponent->SetRotation(rotation);\n    }\n}\n\nvoid Trigger::SetParameters() {\n    if (!IsLoaded()) return;\n    UpdateParameters();\n    triggercomponent->SetLocation(location);\n    triggercomponent->SetRotation(rotation);\n}\n\nvoid Trigger::Load(){    \n    SetupModel();\n\n    triggercomponent.make();\n    triggercomponent->SetParent(this);\n    triggercomponent->SetCollisionMask(collision_mask);\n    triggercomponent->SetCollisionGroup(COLL_TRIGGER);\n    triggercomponent->SetModel(model);\n    triggercomponent->SetActivationCallback([](TriggerComponent* comp, auto col) {\n        dynamic_cast<Trigger*>(comp->GetParent())->Activate();\n    });\n    \n    \n    triggercomponent->Init();\n    \n    flags |= LOADED;\n\n    SetParameters();\n}\n\nvoid Trigger::Unload() {\n    flags &= ~LOADED;\n\n    Serialize();\n\n    rendercomponent.clear();\n    triggercomponent.clear();\n}\n\nvoid Trigger::Serialize() {\n\n}\n\nvoid Trigger::Activate() {\n    if (!(trigger_flags & TRIGGER_DISABLED)) {\n        FireSignal(Signal::ACTIVATE);\n    }\n}\n\nvoid Trigger::MessageHandler(Message& msg) {\n    switch (msg.type) {\n        case Message::LOCK:\n            trigger_flags |= TRIGGER_DISABLED;\n            break;\n        case Message::UNLOCK:\n            trigger_flags &= ~TRIGGER_DISABLED;\n            break;\n        default:\n            Log(Severity::WARNING, System::CORE, \"Trigger {} does not understand message {}\", name, Message::GetName(msg.type));\n    }\n}\n\nvoid Trigger::SetupModel() {\n    if (!draw_trigger) return;\n    \n    rendercomponent.make();\n    rendercomponent->SetParent(this);\n    rendercomponent->SetModel(model);\n    rendercomponent->SetLightmap(\"fullbright\");\n    rendercomponent->Init();\n}\n\n\nbool Trigger::Trigger::IsDrawTrigger() {\n    return draw_trigger;\n}\n\nvoid Trigger::SetDrawTrigger(bool draw) {\n    draw_trigger = draw;\n    \n    // TODO: add code to notify every trigger about this\n}\n\n}\n"
  },
  {
    "path": "src/entities/trigger.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ENTITIES_TRIGGER_H\n#define TRAM_SDK_ENTITIES_TRIGGER_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n\nclass RenderComponent;\nclass TriggerComponent;\n\nclass Trigger : public Entity {\npublic:\n    Trigger(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters();\n    void SetParameters();\n    void Load();\n    void Unload();\n    void Serialize();\n    void MessageHandler(Message& msg);\n    void Activate();\n    name_t GetType();\n    static bool IsDrawTrigger();\n    static void SetDrawTrigger(bool);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<TriggerComponent> triggercomponent;\n    void SetupModel();\n    \n    name_t model;\n    uint32_t trigger_flags;\n    uint32_t collision_mask;\n};\n\n}\n\n#endif // TRAM_SDK_ENTITIES_TRIGGER_H"
  },
  {
    "path": "src/extensions/camera/camera.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/camera/camera.h>\n#include <framework/system.h>\n#include <framework/entity.h>\n#include <framework/ui.h>\n#include <framework/settings.h>\n#include <render/render.h>\n#include <audio/audio.h>\n#include <components/controller.h>\n\n/**\n * @namespace tram::Ext::Camera\n * \n * Several different camera implementations.\n */\n\n/**\n * @class tram::Ext::Camera::Camera extensions/camera/camera.h <extensions/camera/camera.h>\n * \n * Interface API for cameras.\n */\n\nnamespace tram::Ext::Camera {\n\nSystem::system_t CAMERA_SYSTEM = -1u;\n\n// see? this here is a problem. we have only a single selected camera... but\n// cameras can use a limited set of layers.\n// which means that we could have a camera for layer 0 and a different active\n// camera for layer 1. this current setup does not support it, and frankly, I\n// find is completely unacceptable!!\n// this must be remedied at the earliest convenience..\nCamera* selected_camera = nullptr;\n\nSettings::Property<float> shake_multiplier = {1.0f, \"camerashake\", Settings::NONE};\n\nid_t look_at_entity = 0;\nquat look_at_direction = {1.0f, 0.0f, 0.0f, 0.0f};\n\nvoid Init() {\n    CAMERA_SYSTEM = System::Register(\"Camera control system\", \"CAMERA\");\n    \n    System::SetState(CAMERA_SYSTEM, System::INIT);\n    \n    System::AssertDependency(System::RENDER);\n    System::AssertDependency(System::AUDIO);\n    \n    System::SetState(CAMERA_SYSTEM, System::READY);\n}\n\nvoid Update() {\n    assert(System::IsInitialized(CAMERA_SYSTEM) && \"Camera system needs to be initialized first!\");\n    if (selected_camera) selected_camera->Update();\n}\n\nvoid Camera::Update() {\n\n}\n\nCamera::~Camera() {\n    if (this == selected_camera) selected_camera = nullptr;\n}\n\nvoid Camera::SetViewTransform() {\n    for (uint32_t i = 0; i < 8; i++) {\n        if (layer_mask & (1 << i)) {\n            Render::SetViewPosition(position, i);\n            Render::SetViewRotation(rotation, i);\n        }\n    }\n}\n\nvoid Camera::SetListenerTransform() {\n    Audio::SetListenerPosition(position);\n    Audio::SetListenerOrientation(rotation);\n}\n\nvoid Camera::SetActive() {\n    selected_camera = this;\n}\n\nvoid Camera::SetFollowing(Entity* entity) {\n    following = entity->GetID();\n    \n    following_listener = Event::AddListener(Event::LOOK_AT, this, [](Event& event, void* data) {\n        Camera* camera = (Camera*)data;\n        \n        if (event.poster != camera->GetFollowing()) return;\n        \n        camera->SetFollowingLookat((quat)*(Value*)event.data);\n    });\n}\n\nid_t Camera::GetFollowing() {\n    return following;\n}\n\nvoid Camera::SetFollowingLookat(quat new_lookat) {\n    following_lookat = new_lookat;\n}\n\n}\n"
  },
  {
    "path": "src/extensions/camera/camera.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H\n#define TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H\n\n#include <framework/math.h>\n#include <framework/core.h>\n#include <framework/event.h>\n\nnamespace tram::Ext::Camera {\n\nclass Camera {\npublic:\n    void SetActive();\n    void SetFollowing(Entity*);\n    id_t GetFollowing();\n    \n    inline void SetPosition(vec3 position) { this->position = position; }\n    inline void SetRotation(quat rotation) { this->rotation = rotation; }\n    \n    inline vec3 GetPosition() { return position; }\n    inline quat GetRotation() { return rotation; }\n    \n    void SetViewTransform();\n    void SetListenerTransform();\n    \n    void SetFollowingLookat(quat new_lookat);\n    \n    void SetLayerMask(uint32_t layer_mask) { this->layer_mask = layer_mask; }\n    \n    virtual void Update() = 0;\n    virtual ~Camera();\nprotected:\n    vec3 position = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n\n    listener_t following_listener = 0;\n    \n    uint32_t layer_mask = 1 + 2;\n    \n    id_t following = 0;\n    quat following_lookat = {1.0f, 0.0f, 0.0f, 0.0f};\n};\n\nvoid Init();\nvoid Update();\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_CAMERA_CAMERA_H"
  },
  {
    "path": "src/extensions/camera/firstperson.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/camera/firstperson.h>\n\n#include <framework/ui.h>\n#include <framework/entity.h>\n#include <audio/audio.h>\n\n/**\n * @class tram::Ext::Camera::Camera extensions/camera/camera.h <extensions/camera/camera.h>\n * \n * First person camera.\n * \n * This camera will look in the same direction that an entity is looking at,\n * while also following it at a set distance.\n * \n * Supports view bobbing\n */\n\nnamespace tram::Ext::Camera {\n    \nconst float TILT_SPEED = 0.01f;\n//const float BOB_SPEED = 0.2f;\nconst float BOB_CHANGE_SPEED = 0.05f;\n\nextern float shake_multiplier;\n    \nvoid FirstPersonCamera::SetTilt(float tilt) {\n    this->tilt_goal = tilt;\n}\n\nvoid FirstPersonCamera::SetMouselook(bool mouselook) {\n    this->mouselook = mouselook;\n}\n\nvoid FirstPersonCamera::SetRotateFollowing(bool rotate_following) {\n    this->rotate_following = rotate_following;\n}\n\n/// Sets the weight of the bobbing.\n/// The larger the weight, the more exaggerated the bobbing will be. This\n/// parameter can be used to change the ammount of bobbing for different\n/// activities, e.g. 1.0f for walking, 2.0f for running and 0.0f for standing.\nvoid FirstPersonCamera::SetBobbing(float bobbing_weight) {\n    this->bobbing_weight_goal = bobbing_weight;\n}\n\n/// Sets the distance bobbed during bobbing.\n/// @param bobbing_distance  Best if set to between 0.0f and 0.5f.\nvoid FirstPersonCamera::SetBobbingDistance(float bobbing_distance) {\n    this->bobbing_distance = bobbing_distance;\n}\n\n/// Sets the tilt bobbed during bobbing.\n/// The camera will be tilted back and forth along the Z, i.e. forward axis.\n/// @note Try not to throw up if you set this value too high.\n/// @param bobbing_tilt Tilt, in radians.\nvoid FirstPersonCamera::SetBobbingTilt(float bobbing_tilt) {\n    this->bobbing_tilt_goal = bobbing_tilt;\n}\n\n/// Sets the speed of the bobs during bobbing.\nvoid FirstPersonCamera::SetBobSpeed(float bob_speed) {\n    this->bob_speed = bob_speed;\n}\n\n/// Sets the bobbing callback.\n/// The bobbing callback is called every time a full view bob is performed. This\n/// callback is very effective when used to trigger footstep sound effects.\nvoid FirstPersonCamera::SetBobbingCallback(void (*bob_callback)(FirstPersonCamera*)) {\n    this->bob_callback = bob_callback;\n}\n\nfloat FirstPersonCamera::GetBob() {\n    return this->bob;\n}\n\nfloat FirstPersonCamera::GetWeight() {\n    return this->bobbing_weight;\n}\n\nvoid FirstPersonCamera::Update () {\n    if (UI::GetInputState() == UI::STATE_FLYING) return;\n    \n    // move tilt towards tilt goal\n    if (abs(tilt_goal - tilt) <= TILT_SPEED * GetDeltaTime() * 60.0f && abs(tilt_goal) <= TILT_SPEED * GetDeltaTime() * 60.0f) {\n        tilt = 0.0f;\n    } else if (tilt_goal >= 0.0f && tilt < tilt_goal) {\n        tilt += TILT_SPEED * GetDeltaTime() * 60.0f;\n    } else if (tilt_goal <= 0.0f && tilt > tilt_goal) {\n        tilt -= TILT_SPEED * GetDeltaTime() * 60.0f;\n    }\n    \n    // do some bobbing\n    if (fabsf(bobbing_weight_goal - bobbing_weight) <= BOB_CHANGE_SPEED * GetDeltaTime() * 60.0f) {\n        bobbing_weight = bobbing_weight_goal;\n    } else if (bobbing_weight > bobbing_weight_goal) {\n        bobbing_weight -= BOB_CHANGE_SPEED * GetDeltaTime() * 60.0f;\n    } else if (bobbing_weight < bobbing_weight_goal) {\n        bobbing_weight += BOB_CHANGE_SPEED * GetDeltaTime() * 60.0f;\n    }\n    \n    if (fabsf(bobbing_tilt - bobbing_tilt_goal) <= TILT_SPEED * GetDeltaTime() * 60.0f) {\n        bobbing_tilt = bobbing_tilt_goal;\n    } else if (bobbing_tilt > bobbing_tilt_goal) {\n        bobbing_tilt -= TILT_SPEED * GetDeltaTime() * 60.0f;\n    } else if (bobbing_tilt < bobbing_tilt_goal) {\n        bobbing_tilt += TILT_SPEED * GetDeltaTime() * 60.0f;\n    }\n    \n    // process the bobbing\n    if (bobbing_weight > 0.0f) {\n        bob += bob_speed * GetDeltaTime() * 60.0f;\n        \n        // first callback\n        if (bob > glm::pi<float>() && callback_count % 2 == 0) {\n            if (bob_callback) bob_callback(this);\n            callback_count++;\n        }\n        \n        // second callback\n        if (bob >= 2.0f*glm::pi<float>()) {\n            bob = fmodf(bob, 2.0f*glm::pi<float>());\n            if (bob_callback) bob_callback(this);\n            callback_count++;\n        }\n    }\n    \n    // update position to entity that is being followed\n    if (following) {\n        //location = following->GetLocation();\n        position = Entity::Find(following)->GetLocation();\n        //rotation = following->Query(QUERY_LOOK_DIRECTION);\n        //rotation = look_at_direction;\n        rotation = this->following_lookat;\n        //look_at_entity = following->GetID();\n    }\n    \n    // putting everything together\n    vec3 term_loc = position;\n    quat term_rot = rotation;\n    \n    term_rot *= quat(vec3(0.0f, 0.0f, tilt + (sinf(bob) * bobbing_tilt * bobbing_weight * shake_multiplier)));\n    \n    term_loc += following_offset;\n    term_loc += vec3(0.0f, 1.0f, 0.0f) * fabsf(sinf(bob)) * bobbing_distance * bobbing_weight * shake_multiplier;\n    \n    if (following_interpolation != 1.0f) {\n        term_loc = glm::mix(Render::GetViewPosition(), term_loc, following_interpolation);\n    }\n    \n    position = term_loc;\n    rotation = term_rot;\n    \n    SetViewTransform();\n    SetListenerTransform();\n    \n    //Render::SetViewPosition(term_loc, 0);\n    //Render::SetViewRotation(term_rot, 0);\n    \n    //Audio::SetListenerPosition(term_loc);\n    //Audio::SetListenerOrientation(term_rot);\n}\n    \n}"
  },
  {
    "path": "src/extensions/camera/firstperson.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H\n#define TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H\n\n#include <extensions/camera/camera.h>\n\nnamespace tram::Ext::Camera {\n\nclass FirstPersonCamera : public Camera {\npublic:\n    FirstPersonCamera() {}\n    ~FirstPersonCamera() {}\n    \n    void Update ();\n    \n    void SetTilt(float tilt);\n    void SetMouselook(bool mouselook);\n    void SetRotateFollowing(bool rotate_following);\n    void SetBobbing(float bobbing_weight);\n    void SetBobbingDistance(float bobbing_distance);\n    void SetBobbingTilt(float bobbing_tilt);\n    void SetBobbingCallback(void (*bob_callback)(FirstPersonCamera*));\n    void SetBobSpeed(float speed);\n    \n    float GetBob();\n    float GetWeight();\n    \n    inline void SetFollowingInterpolation(float following_interpolation) { this->following_interpolation = following_interpolation; }\n    inline void SetFollowingOffset(vec3 offset) { this->following_offset = offset; }\n    \nprotected:\n    float tilt = 0.0f;\n    float tilt_goal = 0.0f;\n    float tilt_last = 0.0f;\n    float bob = 0.0f;\n    float bobbing_weight_goal = 0.0f;\n    float bobbing_weight = 0.0f;\n    float bobbing_distance = 0.2f;\n    float bobbing_tilt_goal = 0.0f;\n    float bobbing_tilt = 0.0f;\n    float bob_speed = 0.1f;\n    int callback_count = 0;\n    void (*bob_callback)(FirstPersonCamera*) = nullptr;\n    \n    bool mouselook = false;\n    bool rotate_following = false;\n    float yaw = 0.0f;\n    float pitch = 0.0f;\n    \n    vec3 following_offset = vec3 (0.0f, 0.0f, 0.0f);\n    float following_interpolation = 1.0f;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_CAMERA_FIRSTPERSON_H"
  },
  {
    "path": "src/extensions/camera/following.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/camera/camera.h>\n\nnamespace tram::Ext::Camera {\n    // TODO: implement\n}"
  },
  {
    "path": "src/extensions/camera/following.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n\n#ifndef TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H\n#define TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H\n\n#include <extensions/camera/camera.h>\n\nnamespace tram::Ext::Camera {\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_CAMERA_FOLLOWING_H"
  },
  {
    "path": "src/extensions/camera/fpscamera.cpp",
    "content": ""
  },
  {
    "path": "src/extensions/camera/fpscamera.h",
    "content": ""
  },
  {
    "path": "src/extensions/camera/thirdperson.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/camera/camera.h>\n\nnamespace tram::Ext::Camera {\n    // TODO: implement\n}"
  },
  {
    "path": "src/extensions/camera/thirdperson.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H\n#define TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H\n\n#include <extensions/camera/camera.h>\n\nnamespace tram::Ext::Camera {\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_CAMERA_THIRDPERSON_H"
  },
  {
    "path": "src/extensions/file/archive.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/file/archive.h>\n\n#include <platform/file.h>\n#include <framework/logging.h>\n\n#include <miniz.h>\n\nnamespace tram::Ext::File  {\n\nstruct Archive {\n    mz_zip_archive* zip = nullptr;\n    const char* name = nullptr;\n    \n    bool open = false;\n};\nstd::vector<Archive> archives;\n\nArchive& AddArchive(const char* name) {\n    mz_zip_archive* zip_archive = new mz_zip_archive;\n    memset(zip_archive, 0, sizeof(mz_zip_archive));\n    \n    archives.push_back({zip_archive, name});\n    \n    return archives.back();\n}\n\nstatic void OpenArchive(Archive& archive) {\n    if (!mz_zip_reader_init_file(archive.zip, archive.name, 0)) {\n        Log(Severity::WARNING, System::PLATFORM, \"Could not open archive: {}\", archive.name);\n    }\n    \n    archive.open = true;\n}\n\nstatic Archive& FindArchive(const char* name) {\n    for (auto& archive : archives) {\n        if (strcmp(name, archive.name) == 0) return archive;\n    }\n    \n    return AddArchive(name);\n}\n\n\nclass ArchiveReader : public FileReader {\npublic:\n    ArchiveReader(const char* archive, const char* path) {\n        char archive_copy[50];\n        \n        if (!archive) {\n            size_t seperator = strcspn(path, \"/\");\n            \n            strncpy(archive_copy, path, seperator);\n            archive_copy[seperator] = '\\0';\n            \n            archive = archive_copy;\n            \n            if (path[seperator] != '\\0') {\n                path = path + seperator + 1;\n            }\n        }\n        \n        Archive& arc = FindArchive(archive);\n        if (!arc.open) OpenArchive(arc);\n        \n        int file_index = mz_zip_reader_locate_file(arc.zip, path, NULL, 0);\n        if (file_index < 0) {\n            return;\n        }\n        \n        contents = (char*)mz_zip_reader_extract_to_heap(arc.zip, file_index, &length, 0);\n    }\n\n    virtual ~ArchiveReader() {\n        mz_free(contents);\n    }\n    \n    virtual const char* GetContents() override {\n        return contents;\n    }\n    \n    virtual size_t GetSize() override {\n        return length;\n    }\n    \n    virtual FileStatus GetStatus() override {\n        if (contents) return FileStatus::READY;\n        return FileStatus::IO_ERROR;\n    }\n    \n    virtual void Yeet() override {\n        delete this;\n    }\n    \nprivate:\n    char* contents = nullptr;\n    size_t length = 0;\n};\n\nvoid AddArchiveFile(const char* name) {\n    AddArchive(name);\n}\n\nvoid RegisterArchive() {\n    FileReader::Register(\"archive\", [](const char* location, const char* path) -> FileReader* { return new ArchiveReader(location, path); });\n}\n\n}\n"
  },
  {
    "path": "src/extensions/file/archive.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_FILE_ARCHIVE_H\n#define TRAM_SDK_EXTENSIONS_FILE_ARCHIVE_H\n\nnamespace tram::Ext::File  {\n\nvoid RegisterArchive();\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_FILE_ARCHIVE_H"
  },
  {
    "path": "src/extensions/file/http.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/file/http.h>\n\n#include <platform/file.h>\n#include <framework/logging.h>\n#include <config.h>\n\n#include <cstring>\n\n#define CURL_STATICLIB\n#include <curl/curl.h>\n\n\n#undef ERROR\n\nnamespace tram::Ext::File  {\n\nstatic CURL* curl;\n\nstatic const int URL_LIMIT = PATH_LIMIT + 50;\n\nstatic size_t ContentCallback(void *contents, size_t size, size_t nmemb, void *userp) {\n    struct std::pair<char*, size_t>* mem = (std::pair<char*, size_t>*) userp;\n    \n    size_t total_size = size * nmemb;\n\n    char* ptr = (char*)realloc(mem->first, mem->second + total_size + 1);\n    if (!ptr) {\n        Log(Severity::WARNING, System::PLATFORM, \"Not enough memory for a HTTP response!\");\n        return 0;\n    }\n\n    mem->first = ptr;\n    memcpy(&(mem->first[mem->second]), contents, total_size);\n    mem->second += total_size;\n    mem->first[mem->second] = '\\0';\n\n    return total_size;\n}\n\nstatic size_t DiscardCallback(void *contents, size_t size, size_t nmemb, void *userp) {\n    return size * nmemb;\n}\n\nstatic void LogError(const char* url, CURLcode res) {\n    switch (res) {\n        case CURLE_COULDNT_RESOLVE_HOST:\n            Log(Severity::WARNING, System::PLATFORM, \"DNS resolution failed when accessing {}\", url);\n            break;\n        case CURLE_COULDNT_CONNECT:\n            Log(Severity::WARNING, System::PLATFORM, \"Connection failed when accessing {}\", url);\n            break;\n        case CURLE_OPERATION_TIMEDOUT:\n            Log(Severity::WARNING, System::PLATFORM, \"Request timed out when accessing {}\", url);\n            break;\n        case CURLE_SSL_CONNECT_ERROR:\n            Log(Severity::WARNING, System::PLATFORM, \"SSL connection error when accessing {}\", url);\n            break;\n        default:\n            Log(Severity::WARNING, System::PLATFORM, \"Network error when accessing {}\\n{}\", url, curl_easy_strerror(res));\n            break;\n    }\n}\n\nclass HTTPReader : public FileReader {\npublic:\n    HTTPReader(const char* protocol, const char* location, const char* path) {\n        std::pair<char*, size_t> chunk;\n        char url[URL_LIMIT];\n        \n        if (location) {\n            snprintf(url, URL_LIMIT, \"%s://%s/%s\", protocol, location, path);\n        } else {\n            snprintf(url, URL_LIMIT, \"%s://%s\", protocol, path);\n        }\n        \n\n        curl_easy_setopt(curl, CURLOPT_URL, url);\n        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ContentCallback);\n        curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk);\n\n        struct curl_slist *headers = NULL;\n        headers = curl_slist_append(headers, \"User-Agent: Tramway SDK/0.1.1\");\n        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n\n        auto res = curl_easy_perform(curl);\n        \n        curl_slist_free_all(headers);\n\n        if (res != CURLE_OK) {\n            LogError(url, res);\n            return;\n        }\n        \n        long response_code;\n        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);\n        \n        if (response_code >= 400) {\n            Log(Severity::INFO, System::PLATFORM, \"HTTP request to {} failed: {}\", url, response_code);\n            return;\n        }\n        \n        contents = chunk.first;\n        length = chunk.second;\n    }\n    \n    virtual ~HTTPReader(){\n        if (contents) free(contents);\n    }\n    \n    virtual const char* GetContents() override  {\n        return contents;\n    }\n    \n    virtual size_t GetSize() override {\n        return length;\n    }\n    \n    virtual FileStatus GetStatus() override  {\n        if (contents) return FileStatus::READY;\n        return FileStatus::IO_ERROR;\n    }\n    \n    virtual void Yeet() override {\n        delete this;\n    }\nprivate:\n    char* contents = nullptr;\n    int length = 0;\n};\n\nclass HTTPWriter : public FileWriter {\npublic:\n    HTTPWriter(const char* protocol, const char* path) {\n        url = (char*)malloc(URL_LIMIT);\n        snprintf(url, URL_LIMIT, \"%s://%s\", protocol, path);\n        \n        buffer = (char*)malloc(1024);\n        \n        allocated_size = 1024;\n        buffer_size = 0;\n    }\n    \n    ~HTTPWriter() {\n        if (buffer_size) Flush();\n        free(url);\n        if (buffer) free(buffer);\n    }\n    \n    void SetContents(const char* contents, size_t size) {\n        if (!buffer) return;\n        \n        if (allocated_size < buffer_size + (int)size) {\n            int new_size = allocated_size + (allocated_size >> 2);\n            if (new_size < buffer_size + (int)size) {\n                new_size += size;\n            }\n            char* new_buffer = (char*)realloc(buffer, new_size);\n            if (!new_buffer) {\n                flush_failed = true;\n                free(buffer);\n                buffer = nullptr;\n                Log(Severity::ERROR, System::PLATFORM, \"Error allocating {} bytes for POST request to: {}\", new_size, url);\n                return;\n            }\n            buffer = new_buffer;\n            allocated_size = new_size;\n        }\n        \n        memcpy(buffer + buffer_size, contents, size);\n        \n        buffer_size += size;\n    }\n    \n    bool Flush() {\n        if (!buffer) return false;\n        \n        curl_easy_setopt(curl, CURLOPT_URL, url);\n        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, buffer);\n        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)buffer_size);\n        \n        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, DiscardCallback);\n        curl_easy_setopt(curl, CURLOPT_WRITEDATA, NULL);\n        \n        struct curl_slist *headers = NULL;\n        headers = curl_slist_append(headers, \"Content-Type: text/plain\");\n        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\n        \n        auto res = curl_easy_perform(curl);\n        \n        buffer_size = 0;\n        curl_slist_free_all(headers);\n        \n        if (res != CURLE_OK) {\n            LogError(url, res);\n            flush_failed = true;\n            return false;\n        }\n        \n        long response_code;\n        curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);\n        \n        if (response_code >= 200 && response_code < 300) {\n            flush_failed = false;\n            return true;\n        }\n        \n        flush_failed = true;\n        Log(Severity::INFO, System::PLATFORM, \"HTTP request to {} failed: {}\", url, response_code);\n        \n        return false;\n    }\n   \n    void Yeet() {\n        delete this;\n    }\n    \n    FileStatus GetStatus() {\n        if (!buffer || flush_failed) {\n            return FileStatus::IO_ERROR;\n        }\n        \n        return FileStatus::READY;\n    }\n    \nprivate:\n    char* buffer = nullptr;\n    \n    int allocated_size = 0;\n    int buffer_size = 0;\n    \n    char* url = nullptr;\n    \n    bool flush_failed = false;\n};\n\nvoid RegisterHTTP() {\n    curl = curl_easy_init();\n    \n    curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);\n    curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 5L);\n    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 15L);\n    \n    FileReader::Register(\"http\", [](const char* location, const char* path) -> FileReader* { return new HTTPReader(\"http\", location, path); });\n    FileReader::Register(\"https\", [](const char* location, const char* path) -> FileReader* { return new HTTPReader(\"https\", location, path); });\n    \n    FileWriter::Register(\"http\", [](const char* path) -> FileWriter* { return new HTTPWriter(\"http\", path); });\n    FileWriter::Register(\"https\", [](const char* path) -> FileWriter* { return new HTTPWriter(\"https\", path); });\n}\n\n}\n"
  },
  {
    "path": "src/extensions/file/http.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_FILE_HTTP_H\n#define TRAM_SDK_EXTENSIONS_FILE_HTTP_H\n\nnamespace tram::Ext::File  {\n\nvoid RegisterHTTP();\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_FILE_HTTP_H"
  },
  {
    "path": "src/extensions/kitchensink/ai.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/ai.h>\n\n#include <framework/script.h>\n#include <render/render.h>\n#include <entities/sound.h>\n\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\n//template <> tram::Pool<tram::Ext::Kitchensink::AIPackage> tram::PoolProxy<tram::Ext::Kitchensink::AIPackage>::pool(\"ai_package_list pool\", 100);\ntemplate <> tram::Pool<tram::Ext::Kitchensink::AIAgent> tram::PoolProxy<tram::Ext::Kitchensink::AIAgent>::pool(\"ai_agent_list pool\", 100);\n\nnamespace tram::Ext::Kitchensink {\n\nstatic Hashmap<ai_package_constr> ai_package_list(\"ai_package_list name list\", 200);\nstatic Hashmap<AIAgent*> ai_agent_list(\"ai_agent_list name list\", 200);\n\nvoid InitAI() {\n    // TODO: register screipt functions for AIs\n    // AIGetVariable()\n    // AISetVariable()\n    // AIPushPackage()\n    // AIClearPackage()\n    // AIHasPackages()\n}\n\nvoid UpdateAI() {\n    for (auto& agent : PoolProxy<tram::Ext::Kitchensink::AIAgent>::GetPool()) agent.Update();\n}\n\nvoid AIPackage::Register(name_t name, ai_package_constr constr) {\n    return ai_package_list.Insert(name, constr);\n}\n\nAIPackage* AIPackage::Make(name_t name, valuearray_t params) {\n    ai_package_constr constr = ai_package_list.Find(name);\n    \n    if (!constr) {\n        std::cout << \"AIPackage \" << name << \" not found!\" << std::endl;\n        return nullptr;\n    } else {\n        return constr(params);\n    }\n}\n\nvoid AIAgent::Update() {\n    if (override_stack.size()) {\n        override_stack.front()->Process();\n        return;\n    }\n    \n    if (package_stack.size()) {\n        package_stack.front()->Process();\n    }\n    \n    if (script) {\n        // TODO: load varibales etc.\n        Script::CallFunction(script, {});\n    }\n}\n    \nAIAgent* AIAgent::Find(id_t id) {\n    AIAgent* ai_agent = ai_agent_list.Find(id);\n    \n    if (!ai_agent) {\n        ai_agent = PoolProxy<AIAgent>::New();\n        ai_agent_list.Insert(id, ai_agent);\n    }\n    \n    return ai_agent;\n}\n}\n"
  },
  {
    "path": "src/extensions/kitchensink/ai.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H\n\n#include <vector>\n#include <framework/core.h>\n#include <framework/uid.h>\n#include <framework/math.h>\n#include <framework/value.h>\n \n/*\n * AI framework for video game NPCs\n * \n * This is a half-finished framework for creating AI packages that could be used\n * to make video game NPCs.\n * \n * Haven't tried using it, probably doesn't work.\n * \n * Still working out the basic API and internal mechanics.\n * \n */\n\nnamespace tram {\n    class ControllerComponent;\n}\n\nnamespace tram::Ext::Kitchensink {\n    class AnimationStateComponent;\n    /*\n    \n    if normal:\n\n    if time is morning:\n        return go_eat()\n    if time is day:\n        return go_stand(at_workplace)\n    if time is evening:\n        return go_eat()\n    if time is night:\n        return go_sleep(home)\n\n    if combat:\n\n    if health > 10:\n        return attack\n    if true:\n        return retreat\n\n    inside_params -> \n        attacker\n        attacker_faction\n\n    if normal and attack and victim_faction is self_faction:\n        combat_target = \n        attack\n\n    AIAgent:\n      list<pair<AICondition, AIPackage>> package_queue;\n      name class;\n      package_script\n      list<Value> variables\n    AIClass:\n      name parent_class;\n      package_script;\n      default_variables;\n\n    AIPackage:\n      state = running/finished\n      forced = true/false\n\n    SetAIPackage(AI_ATTACK, [(\"target\", big_chungus)])\n\n    AI_ATTACK\n    AI_SLEEP\n    AI_EAT\n      \n\nAI_ATTACK ->\n\n */\n\nclass AIAgent;\nclass AIPackage;\ntypedef AIPackage* (*ai_package_constr)(valuearray_t);\n\nvoid InitAI();\nvoid UpdateAI();\n\nclass AIPackage {\npublic:\n    virtual bool Process() = 0;\n    \n    virtual ~AIPackage() = default;\n\n    static void Register(name_t name, ai_package_constr constr);    \n    static AIPackage* Make(name_t name, valuearray_t params);\nprotected:\n    AIAgent* parent = nullptr;\n};\n\nstruct AIVariable {\n    Value value;\n};\n\nclass AIAgent {\npublic:\n    std::vector<AIPackage*> package_stack;\n    std::vector<AIPackage*> override_stack;\n    \n    name_t script;\n\n    std::vector<AIVariable> variables;\n    \n    void Push(AIPackage*);\n    void Clear();\n    \n    void PushOverride(AIPackage*);\n    void ClearOverride();\n\n    void Update();\n\n    void SetControllerComponent(ControllerComponent* c) { controllercomponent = c; }\n    void SetAnimationStateComponent(AnimationStateComponent* c) { animationstate = c; }\n    ControllerComponent* GetControllerComponent() { return controllercomponent; }\n    AnimationStateComponent* GetAnimationStateComponent() { return animationstate; }\n\n    static AIAgent* Find(id_t id);\nprivate:\n    ControllerComponent* controllercomponent;\n    AnimationStateComponent* animationstate;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_AI_H"
  },
  {
    "path": "src/extensions/kitchensink/animationtable.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/animationtable.h>\n\n#include <render/render.h>\n#include <entities/sound.h>\n\n#include <components/animation.h>\n\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\n#include <config.h>\n\n#include <algorithm>\n\n/*\n * as is, the animation table will probably work just fine for simple video game\n * monsters and such things, but if you want to do something more advanced, we\n * will need to change this a bit\n * \n * first of all, the class saves all of the state transition weights and speeds\n * and all these things. it would prove extremely useful to be able to calculate\n * these values via a callback or a virtual method.\n * \n * possible solution:\n * 1. encapsulate all state transition, etc. data access into methods\n * 2. make the data access methods of sound table abstract and virtual\n * 3. implement data access in a subclass\n * \n * or we could just make data access methods virtual, that might even be better\n */\n\ntemplate <> tram::Pool<tram::Ext::Kitchensink::AnimationTable> tram::PoolProxy<tram::Ext::Kitchensink::AnimationTable>::pool(\"AnimationTable pool\", EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT);\n\nnamespace tram::Ext::Kitchensink {\n\nstatic Hashmap<AnimationTable*> sound_table_list(\"AnimationTable name list\", EXT_KITCHENSINK_ANIMATIONTABLE_LIMIT);\n\nAnimationTable* AnimationTable::Find(name_t name) {\n    AnimationTable* sound_table = sound_table_list.Find(name);\n    \n    if (!sound_table) {\n        sound_table = PoolProxy<AnimationTable>::New(name);\n        sound_table_list.Insert(name, sound_table);\n    }\n    \n    return sound_table;\n}\n\nvoid AnimationTable::SwitchState(name_t state, AnimationStateComponent* state_component) {\n    auto next_state = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == state; });\n    if (next_state == states.end()) {\n        std::cout << \"AnimationTable \" << this->name << \" state \" << state << \" not found!\" << std::endl;\n        assert(false);\n    }\n    \n    auto next_state_space = std::find_if(state_spaces.begin(), state_spaces.end(), [=](auto& f) { return f.name == next_state->state_space; });\n    \n    // determine which states will be yeeted because of the new state\n    std::vector<AnimStateSpace*> cancel_spaces;\n    cancel_spaces.push_back(next_state_space.base());\n    \n    for (auto& space : state_spaces) {\n        bool cancel = false;\n        for (auto cancel_space : cancel_spaces) {\n            if (cancel_space->name == space.parent) {\n                cancel = true;\n                break;\n            }\n        }\n        if (cancel) cancel_spaces.push_back(&space);\n    }\n    \n    // do outro transitions for yeetable state animations\n    \n    \n    // go through all states in the component\n    // - find the space of the state\n    //   - check if space is in cancel spaces\n    \n    auto new_states = state_component->states;\n    for (auto state_name : state_component->states) {\n        auto cancel_space = std::find_if(cancel_spaces.begin(), cancel_spaces.end(), [=](auto& f) { return f->name == state_name; });\n        \n        if (cancel_space == cancel_spaces.end()) {\n            new_states.push_back(state_name);\n            continue;\n        }\n                \n        auto state = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == state_name; });\n        \n        bool faded_out = false;\n        \n        // check if there is a special outro transition\n        for (auto& trans : transition_from) {\n            if (trans.from_state != state->name) continue;\n            if (trans.into_state != next_state->name) continue;\n            \n            faded_out = true;\n            \n            component->FadeOut(state->animation, trans.fade_time);\n        }\n        \n        if (faded_out) continue;\n        \n        // otherwise use default\n        for (auto& trans : transition_default) {\n            if (trans.state != state->name) continue;\n            \n            faded_out = true;\n            \n            component->FadeOut(state->animation, trans.fade_out_time);\n        }\n        \n        if (faded_out) continue;\n        \n        // if no default, then just cancel\n        component->Stop(state->animation);\n    }\n    \n\n    new_states.push_back(state);\n    component->Play(next_state->animation,\n                    next_state->repeats,\n                    next_state->weight,\n                    next_state->speed,\n                    next_state->interpolate,\n                    next_state->pause_last);\n    \n    name_t cancel_from;\n    bool did_fade_in = false;\n    \n    // check if there is a special intro transition\n     for (auto state_name : state_component->states) {\n        auto cancel_space = std::find_if(cancel_spaces.begin(), cancel_spaces.end(), [=](auto& f) { return f->name == state_name; });\n        \n        if (cancel_space == cancel_spaces.end()) {\n            continue;\n        }\n        \n        auto prev_state = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == state_name; });\n        \n        for (auto& trans : transition_into) {\n            if (trans.from_state != prev_state->name) continue;\n            if (trans.into_state != next_state->name) continue;\n            \n            if (cancel_from) {\n                std::cout << \"AnimationTable \" << this->name << \" transition \" << cancel_from << \" and \" << prev_state->name << \" conflict into \" << next_state->name << std::endl;\n                assert(false);\n            } else {\n                cancel_from = prev_state->name;\n            }\n            \n            did_fade_in = true;\n            \n            component->FadeIn(next_state->animation, trans.fade_time);\n        }\n    }\n    \n    state_component->states = new_states;\n    \n    if (did_fade_in) return;\n    \n    // otherwise use default\n    for (auto& trans : transition_default) {\n        if (trans.state != next_state->name) continue;\n        \n        component->FadeIn(next_state->animation, trans.fade_out_time);\n    }\n}\n\nvoid AnimationTable::AddStateSpace(name_t name, name_t parent) {\n    auto ptr = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == parent; });\n    if (ptr == states.end()) {\n        std::cout << \"AnimationTable \" << this->name << \" parent state \" << parent << \" for \" << name << \" not found!\" << std::endl;\n        assert(false);\n    }\n    \n    state_spaces.push_back({.name = name, .parent = parent});\n}\n\nvoid AnimationTable::AddState(name_t state, name_t space) {\n    states.push_back({.name = state, .state_space = space});\n}\n\n\nvoid AnimationTable::SetStateAnimation(name_t state, name_t animation_name, uint32_t repeats, float weight, float speed, bool pause_last) {\n    auto ptr = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == state; });\n    if (ptr == states.end()) {\n        std::cout << \"AnimationTable \" << this->name << \" state \" << state << \" not found!\" << std::endl;\n        assert(false);\n    }\n    ptr->animation = animation_name;\n    ptr->repeats = repeats;\n    ptr->weight = weight;\n    ptr->speed = speed;\n    ptr->interpolate = true;\n    ptr->pause_last = pause_last;\n}\n\nvoid AnimationTable::SetStateNextState(name_t state, name_t next_state) {\n    auto ptr = std::find_if(states.begin(), states.end(), [=](auto& f) { return f.name == state; });\n    if (ptr == states.end()) {\n        std::cout << \"AnimationTable \" << this->name << \" state \" << state << \" not found!\" << std::endl;\n        assert(false);\n    }\n    ptr->next_state = next_state;\n}\n\n\nvoid AnimationTable::AddTransition(AnimStateTransitionFrom transition) {\n    transition_from.push_back(transition);\n}\n\nvoid AnimationTable::AddTransition(AnimStateTransitionInto transition) {\n    transition_into.push_back(transition);\n}\n\nvoid AnimationTable::AddTransition(AnimStateTransitionDefault transition) {\n    transition_default.push_back(transition);\n}\n\n}\n"
  },
  {
    "path": "src/extensions/kitchensink/animationtable.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H\n\n#include <vector>\n#include <framework/uid.h>\n#include <framework/math.h>\n#include <framework/entitycomponent.h>\n\nnamespace tram {\n    class AnimationComponent;\n}\n\nnamespace tram::Ext::Kitchensink {\n\nstruct AnimStateSpace {\n    name_t name;\n    name_t parent;\n};\n\nstruct AnimState {\n    name_t name;\n    \n    name_t animation;\n    uint32_t repeats;\n    float weight;\n    float speed;\n    bool interpolate;\n    bool pause_last;\n\n    name_t state_space;\n\n    name_t next_state;\n};\n\nstruct AnimStateTransitionFrom {\n    name_t from_state;\n    name_t into_state;\n\n    float fade_time;\n};\n\nstruct AnimStateTransitionInto {\n    name_t from_state;\n    name_t into_state;\n    \n    float fade_time;\n};\n\nstruct AnimStateTransitionDefault {\n    name_t state;\n    \n    float fade_in_time;\n    float fade_out_time;\n};\n\nclass AnimationStateComponent;\n\nclass AnimationTable {\npublic:\n    AnimationTable(name_t name) : name(name) {}\n    \n    void SwitchState(name_t state, AnimationStateComponent* state_component);\n    \n    void AddStateSpace(name_t name, name_t parent);\n    void AddState(name_t state, name_t space);\n    \n    void SetStateAnimation(name_t state, name_t animation_name, uint32_t repeats, float weight, float speed, bool pause_last);\n    void SetStateNextState(name_t state, name_t next_state);\n\n    void AddTransition(AnimStateTransitionFrom);\n    void AddTransition(AnimStateTransitionInto);\n    void AddTransition(AnimStateTransitionDefault);\n\n    static AnimationTable* Find(name_t name);\nprivate:\n    AnimationComponent* component = nullptr;\n\n    name_t name;\n\n    std::vector<AnimStateSpace> state_spaces;\n    std::vector<AnimState> states;\n    \n    std::vector<AnimStateTransitionFrom> transition_from;\n    std::vector<AnimStateTransitionInto> transition_into;\n    std::vector<AnimStateTransitionDefault> transition_default;\n};\n\nclass AnimationStateComponent : public EntityComponent {\npublic:\n    void EventHandler(Event &event) {}\n    void Start();\n    \n    void SwitchState(name_t state) { table->SwitchState(state, this); }\n    \n    void SetAnimationTable(name_t name) { this->table = AnimationTable::Find(name); }\n    void SetAnimationComponent(AnimationComponent* component) { this->component = component; }\n    AnimationComponent* GetAnimationComponent() { return this->component; }\nprotected:\n    AnimationTable* table = nullptr;\n    AnimationComponent* component = nullptr;\n    std::vector<name_t> states;\n    friend class AnimationTable;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H"
  },
  {
    "path": "src/extensions/kitchensink/attributes.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/attributes.h>\n\n#include <framework/core.h>\n#include <framework/file.h>\n#include <framework/entity.h>\n\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\n#include <algorithm>\n\nconst size_t ATTRIBUTE_CONTAINER_COUNT = 50;\nconst size_t ATTRIBUTE_INFO_COUNT = 50;\n\nnamespace tram {\n    template<> Pool<Ext::Kitchensink::AttributeContainer> PoolProxy<Ext::Kitchensink::AttributeContainer>::pool(\"Ext::Kitchensink::AttributeContainer Pool\", ATTRIBUTE_CONTAINER_COUNT);\n}\n\nnamespace tram::Ext::Kitchensink {\n\nHashmap<AttributeContainer*> containers(\"Ext::Kitchensink::AttributeContainer Hashmap\", ATTRIBUTE_CONTAINER_COUNT);\nHashmap<AttributeInfo*> infos(\"Ext::Kitchensink::AttributeInfo Hashmap\", ATTRIBUTE_INFO_COUNT);\n\nvoid AttributeInfo::Recalculate(Attribute& attribute, const AttributeContainer&) {\n    // default attribute behavior: effective = base + boost\n    \n    attribute.effective_value = attribute.base_value;\n}\n\nvoid AttributeInfo::Register(AttributeInfo* info) {\n    infos.Insert(info->GetName(), info);\n}\n\nAttributeInfo* AttributeInfo::Find(name_t name) {\n    AttributeInfo* info = infos.Find(name);\n    \n    if (!info) {\n        info = new AttributeInfo;\n        info->name = name;\n        infos.Insert(name, info);\n    }\n    \n    return info;\n}\n\nfloat AttributeContainer::GetAttribute(name_t name) {\n    for (auto& attribute : attributes) {\n        if (attribute.name == name) return attribute.effective_value;\n    }\n    return 0.0f;\n}\n\nfloat AttributeContainer::GetAttributeBase(name_t name) {\n    for (auto& attribute : attributes) {\n        if (attribute.name == name) return attribute.base_value;\n    }\n    return 0.0f;\n}\n\nvoid AttributeContainer::SetAttribute(name_t name, float base_value) {\n    for (auto& attribute : attributes) {\n        if (attribute.name != name) continue;\n        attribute.base_value = base_value;\n        //attribute.affected_value = 0.0f;\n        //attribute.effective_value = 0.0f;\n        return;\n    }\n    attributes.push_back({.name = name,\n                          .base_value = base_value,\n                          .affected_value = 0.0f,\n                          .effective_value = 0.0f});\n}\n\nvoid AttributeContainer::ApplyEffect(Effect effect) {\n    effects.push_back(effect);\n}\n\nvoid AttributeContainer::RemoveEffect(name_t tag) {\n    std::erase_if(effects, [=](auto& value){return value.tag == tag;});\n}\n\nbool AttributeContainer::HasAttribute(name_t type) {\n    return std::find_if(attributes.begin(), attributes.end(), [=](auto value){return value.name == type;}) != attributes.end();\n}\n\nvoid AttributeContainer::Tick() {\n    \n    // for each attribute:\n    //      reset affected\n    //      add up change negate for each attribute\n    //      add up ...\n    // bwah\n    \n    \n    for (auto it = effects.begin(); it != effects.end(); it++) {\n        // TODO: whatever\n        \n        // if time == 0.0f then apply full effect\n        // other wise tick down\n        \n        it->time -= GetDeltaTime();\n        \n        if (0.0f >= it->time) {\n            \n        }\n    }\n    \n    for (auto& attribute : attributes) {\n        AttributeInfo::Find(attribute.name)->Recalculate(attribute, *this);\n    }\n    \n}\n\nAttributeContainer* AttributeContainer::Find(Entity* entity) {\n    return AttributeContainer::Find(entity->GetID());\n}\n\nAttributeContainer* AttributeContainer::Find(id_t entity_id) {\n    AttributeContainer* container = containers.Find(entity_id);\n    \n    if (!container) {\n        container = PoolProxy<AttributeContainer>::New();\n        containers.Insert(entity_id, container);\n    }\n    \n    return container;\n}\n\nvoid AttributeContainer::LoadFromDisk(const char* filename) {\n    char path [100] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".attrib\");\n\n    File file (path, File::READ);\n\n    if (!file.is_open()) {\n        std::cout << \"Can't open attribute file '\" << path << \"'\" << std::endl;\n        abort();\n    }\n\n    name_t file_type = file.read_name();\n\n    if (file_type != \"ATTRIBv1\") {\n        std::cout << \"Invalid attribute file type \" << path << std::endl;\n        abort();\n    }\n    \n    std::cout << \"Loading: \" << filename << std::endl;\n\n    while (file.is_continue()) {\n        auto record = file.read_name();\n        \n        if (record == \"attribute\") {\n            AttributeContainer* container = AttributeContainer::Find(file.read_uint32());\n            \n            Attribute new_attribute;\n            \n            new_attribute.name = file.read_name();\n            new_attribute.base_value = file.read_float32();\n            new_attribute.effective_value = file.read_float32();\n\n            container->attributes.push_back(new_attribute);\n\n        } else if (record == \"effect\") {\n            AttributeContainer* container = AttributeContainer::Find(file.read_uint32());\n            \n            Effect new_effect;\n            \n            new_effect.attribute = file.read_name();\n            new_effect.name = file.read_name();\n            new_effect.tag = file.read_name();\n            new_effect.value = file.read_float32();\n            new_effect.type = file.read_int32();\n            new_effect.flags = file.read_int32();\n            new_effect.time = file.read_float32();\n            \n            container->effects.push_back(new_effect);\n            \n        } else {\n            std::cout << \"unknown attribute record: \" << record << std::endl;\n            abort();\n        }\n    }\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/attributes.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H\n\n#include <vector>\n\n#include <framework/core.h>\n#include <framework/uid.h>\n\nnamespace tram {\n    class Entity;\n}\n\nnamespace tram::Ext::Kitchensink {\n\nenum : int {\n    EFFECT_RAISE_BASE,\n    EFFECT_RAISE_CONSTANT,\n    EFFECT_NEGATE_CHANGE,\n};\n\nstruct Attribute {\n    name_t name;\n    float base_value;\n    float affected_value;\n    float effective_value;\n};\n\nstruct Effect {\n    name_t attribute;\n    name_t name;\n    name_t tag;\n    float value;\n    int type;\n    int flags;\n    float time;\n};\n\nstruct AttributeContainer;\n\nclass AttributeInfo {\npublic:\n    virtual void Recalculate(Attribute&, const AttributeContainer&);\n    \n    name_t GetName() { return name; }\n    static void Register(AttributeInfo*);\n    static AttributeInfo* Find(name_t);\nprotected:\n    name_t name;\n};\n\nstruct AttributeContainer {\n    float GetAttribute(name_t attribute);\n    float GetAttributeBase(name_t attribute);\n    \n    void SetAttribute(name_t attribute, float base_value);\n    \n    void ApplyEffect(Effect effect);\n    void RemoveEffect(name_t tag);\n\n    bool HasAttribute(name_t type);\n\n    void Tick();\n    \n    static AttributeContainer* Find(Entity*);\n    static AttributeContainer* Find(id_t);\n    static void LoadFromDisk(const char*);\n    \n    // maybe instead use global clock???\n    float last_tick = 0.0f;\n    \n    std::vector<Attribute> attributes;\n    std::vector<Effect> effects;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_ATTRIBUTES_H"
  },
  {
    "path": "src/extensions/kitchensink/character.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/character.h>\n\n#include <extensions/kitchensink/attributes.h>\n\n#include <framework/entity.h>\n#include <framework/file.h>\n\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\nconst size_t FACTION_COUNT = 50;\nconst size_t CHARACTER_COUNT = 50;\nconst size_t CLASS_COUNT = 50;\n\nnamespace tram {\n\ntemplate<> Pool<Ext::Kitchensink::Faction> PoolProxy<Ext::Kitchensink::Faction>::pool(\"Ext::Kitchensink::Faction Pool\", FACTION_COUNT);\ntemplate<> Pool<Ext::Kitchensink::Character> PoolProxy<Ext::Kitchensink::Character>::pool(\"Ext::Kitchensink::Character Pool\", CHARACTER_COUNT);\ntemplate<> Pool<Ext::Kitchensink::CharacterClass> PoolProxy<Ext::Kitchensink::CharacterClass>::pool(\"Ext::Kitchensink::CharacterClass Pool\", CLASS_COUNT);\n\n}\n\nnamespace tram::Ext::Kitchensink {\n\nHashmap<Faction*> factions(\"Ext::Kitchensink::Faction Hashmap\", FACTION_COUNT);\nHashmap<CharacterClass*> character_classes(\"Ext::Kitchensink::Character Hashmap\", CHARACTER_COUNT);\nHashmap<Character*> characters(\"Ext::Kitchensink::CharacterClass Hashmap\", CLASS_COUNT);\n\nclass Character;\n    \nvoid Faction::AddCharacter(Character* character) {\n    bool faction_marked = this->HasCharacter(character);\n    bool character_marked = character->IsInFaction(this);\n    \n    if (!faction_marked) {\n        FactionRank new_rank;\n        \n        new_rank.character = character;\n        new_rank.rank = 0.0f;\n        new_rank.loyalty = 0.0f;\n        \n        ranks.push_back(new_rank);\n    }\n    \n    if (!character_marked) {\n        character->factions.push_back(this);\n    }\n}\n\nvoid Faction::RemoveCharacter(Character* character) {\n    std::erase_if(this->ranks, [=](FactionRank& rank) { return rank.character == character;});\n}\n\nbool Faction::HasCharacter(Character* character) {\n    for (auto& rank : ranks) {\n        if (rank.character == character) return true;\n    }\n    \n    return false;\n}\n\nvoid Faction::SetCharacterRank(Character* character, float rank_value) {\n    for (auto& rank : ranks) {\n        if (rank.character == character) {\n            rank.rank = rank_value;\n            return;\n        }\n    }\n}\n\nvoid Faction::SetCharacterLoyalty(Character* character, float loyalty) {\n    for (auto& rank : ranks) {\n        if (rank.character == character) {\n            rank.loyalty = loyalty;\n            return;\n        }\n    }\n}\n\nfloat Faction::GetCharacterRank(Character* character) {\n    for (auto& rank : ranks) {\n        if (rank.character == character) {\n            return rank.rank;\n        }\n    }\n    \n    return 0.0f;\n}\n\nfloat Faction::GetCharacterLoyalty(Character* character) {\n    for (auto& rank : ranks) {\n        if (rank.character == character) {\n            return rank.loyalty;\n        }\n    }\n    \n    return 0.0f;\n}\n\nvoid Faction::SetRelation(Faction* faction, float disposition) {\n    if (disposition == 0.0f) {\n        std::erase_if(this->relations, [=](FactionRelation& relation) { return relation.faction == faction;});\n    } else if (this->GetRelation(faction) == 0.0f) {\n        FactionRelation new_relation; \n        \n        new_relation.faction = faction;\n        new_relation.disposition = disposition;\n        \n        this->relations.push_back(new_relation);\n    } else {\n        for (auto& relation : this->relations) {\n            if (relation.faction != faction) continue;\n            relation.disposition = disposition;\n            return;\n        }\n    }\n}\n\nfloat Faction::GetRelation(Faction* other) {\n    for (auto& relation : this->relations) {\n        if (relation.faction == other) {\n            return relation.disposition;\n        }\n    }\n    \n    return 0.0f;\n}\n\nfloat Faction::GetDisposition(Character* character) {\n    float disposition_sum = 0.0f;\n    for (auto faction : character->factions) {\n        disposition_sum += this->GetRelation(faction);\n    }\n    return disposition_sum;\n}\n\nFaction* Faction::Find(name_t name) {\n    Faction* faction = factions.Find(name);\n    \n    if (!faction) {\n        faction = PoolProxy<Faction>::New();\n        factions.Insert(name, faction);\n    }\n    \n    return faction;\n}\n\nstruct InitialAttribute {\n    name_t attribute;\n    float value;\n};\n\nvoid CharacterClass::AddBaseClass(CharacterClass* character_class) {\n    for (auto base_class : this->base_classes) {\n        if (base_class == character_class) return;\n    }\n    this->base_classes.push_back(character_class);\n}\n\nbool CharacterClass::HasBaseClass(CharacterClass* character_class) {\n    if (this == character_class) return true;\n    for (auto base_class : this->base_classes) {\n        if (base_class->HasBaseClass(character_class)) return true;\n    }\n    return false;\n}\n\n\nvoid CharacterClass::SetAttribute(name_t attribute_name, float value) {\n    for (auto& attribute : this->base_attributes) {\n        if (attribute.name == attribute_name) {\n            attribute.value = value;\n            return;\n        }\n    }\n    \n    BaseAttribute new_attribute;\n    \n    new_attribute.name = attribute_name;\n    new_attribute.value = value;\n    \n    this->base_attributes.push_back(new_attribute);\n}\n\nfloat CharacterClass::GetAttribute(name_t attribute_name) {\n    for (auto& attribute : this->base_attributes) {\n        if (attribute.name == attribute_name) {\n            return attribute.value;\n        }\n    }\n    \n    return 0.0f;\n}\n\nvoid CharacterClass::AddFaction(Faction* faction, float rank, float loyalty) {\n    for (auto& existing_faction : this->base_factions) {\n        if (existing_faction.faction == faction) {\n            existing_faction.rank = rank;\n            existing_faction.loyalty = loyalty;\n            return;\n        }\n    }\n    \n    BaseFactionRank new_faction;\n    \n    new_faction.faction = faction;\n    new_faction.rank = rank;\n    new_faction.loyalty = loyalty;\n    \n    this->base_factions.push_back(new_faction);\n}\n\n\nvoid CharacterClass::GatherBaseAttributes(AttributeContainer& container) {\n    for (auto& attribute : this->base_attributes) {\n        const float base_value = container.GetAttributeBase(attribute.name);\n        const float new_value = base_value + attribute.value;\n        \n        container.SetAttribute(attribute.name, new_value);\n    }\n    \n    for (auto base_class : this->base_classes) {\n        base_class->GatherBaseAttributes(container);\n    }\n}\n\nCharacterClass* CharacterClass::Find(name_t name) {\n    CharacterClass* character_class = character_classes.Find(name);\n    \n    if (!character_class) {\n        character_class = PoolProxy<CharacterClass>::New();\n        character_classes.Insert(name, character_class);\n    }\n    \n    return character_class;\n}\n\n\nvoid Character::AddClass(CharacterClass* character_class) {\n    this->character_class = character_class;\n}\n\nbool Character::HasClass(CharacterClass* character_class) {\n    return this->character_class ? this->character_class->HasBaseClass(character_class) : false;\n}\n\n\nfloat Character::GetBaseDisposition(Character* other) {\n    float base_disposition = 0.0f;\n    for (auto& disposition : dispositions) {\n        if (disposition.character == other) {\n            base_disposition += disposition.disposition;\n        }\n    }\n\n    return base_disposition;\n}\n\nfloat Character::GetDisposition(Character* other) {\n    float base_disposition = this->GetBaseDisposition(other);\n    \n    float faction_disposition = 0.0f;\n    for (auto faction : factions) {\n        faction_disposition += faction->GetDisposition(other) * faction->GetCharacterLoyalty(this);\n    }\n    \n    return base_disposition + faction_disposition;\n}\n\nvoid Character::SetBaseDisposition(Character* other, float disposition_value) {\n    for (auto& disposition : dispositions) {\n        if (disposition.character == other) {\n            disposition.disposition = disposition_value;\n        }\n    }\n}\n\nbool Character::IsInFaction(Faction* check_faction) {\n    for (auto faction : factions) {\n        if (faction == check_faction) return true;\n    }\n    \n    return false;\n}\n\nCharacter* Character::Find(Entity* entity) {\n    return Character::Find(entity->GetID());\n}\n\nCharacter* Character::Find(id_t entity_id) {\n    Character* character = characters.Find(entity_id);\n    \n    if (!character) {\n        character = PoolProxy<Character>::New();\n        characters.Insert(entity_id, character);\n        character->entity_id = entity_id;\n    }\n    \n    return character;\n}\n\nvoid Character::LoadFromDisk(const char* filename) {\n    char path [100] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".char\");\n\n    File file (path, File::READ);\n\n    if (!file.is_open()) {\n        std::cout << \"Can't open dialog file '\" << path << \"'\" << std::endl;\n        abort();\n    }\n\n    name_t file_type = file.read_name();\n\n    if (file_type != \"DIALOGv1\") {\n        std::cout << \"Invalid quest file type \" << path << std::endl;\n        abort();\n    }\n    \n    std::cout << \"Loading: \" << filename << std::endl;\n\n    while (file.is_continue()) {\n        auto record = file.read_name();\n        \n        if (record == \"character\") {\n            id_t entity_id = file.read_uint32();\n            name_t character_class = file.read_name();\n            \n            Character* character = Character::Find(entity_id);\n            \n            if (character_class) {\n                 character->character_class = CharacterClass::Find(character_class);\n            }\n            \n        } else if (record == \"disposition\") {\n            Character* from = Character::Find(file.read_uint32());\n            Character* toward = Character::Find(file.read_uint32());\n            \n            from->SetBaseDisposition(toward, file.read_float32());\n            \n        } else if (record == \"faction-member\") {\n            Character* character = Character::Find(file.read_uint32());\n            Faction* faction = Faction::Find(file.read_name());\n            \n            faction->AddCharacter(character);\n            faction->SetCharacterRank(character, file.read_float32());\n            faction->SetCharacterLoyalty(character, file.read_float32());\n            \n        } else if (record == \"attribute\") {\n            CharacterClass* character_class = CharacterClass::Find(file.read_name());\n            \n            name_t attribute_name = file.read_name();\n            float value = file.read_float32();\n            \n            character_class->SetAttribute(attribute_name, value);\n        } else if (record == \"faction-member-class\") {\n            CharacterClass* character_class = CharacterClass::Find(file.read_name());\n            Faction* faction = Faction::Find(file.read_name());\n            \n            float rank = file.read_float32();\n            float loyalty = file.read_float32();\n            \n            character_class->AddFaction(faction, rank, loyalty);\n            \n        } else if (record == \"base-class\") {\n            CharacterClass* character_class = CharacterClass::Find(file.read_name());\n            CharacterClass* base_class = CharacterClass::Find(file.read_name());\n            \n            character_class->AddBaseClass(base_class);\n            \n        } else {\n            std::cout << \"unknown character record: \" << record << std::endl;\n            abort();\n        }\n    }\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/character.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H\n\n#include <extensions/kitchensink/attributes.h>\n\n#include <framework/core.h>\n\nnamespace tram {\n    class Entity;\n}\n\nnamespace tram::Ext::Kitchensink {\n\nclass Character;\nclass Faction;\n    \nstruct FactionRelation {\n    Faction* faction;\n    float disposition;\n};\n\nstruct FactionRank {\n    Character* character;\n    float rank;\n    float loyalty;\n};\n\nstruct BaseFactionRank {\n    Faction* faction;\n    float rank;\n    float loyalty;\n};\n    \nclass Faction {\npublic:\n    name_t name;\n    \n    void AddCharacter(Character*);\n    void RemoveCharacter(Character*);\n    bool HasCharacter(Character*);\n    void SetCharacterRank(Character*, float);\n    void SetCharacterLoyalty(Character*, float);\n    float GetCharacterRank(Character*);\n    float GetCharacterLoyalty(Character*);\n    void SetRelation(Faction*, float);\n    float GetRelation(Faction*);\n    float GetDisposition(Character*);\n    \n    static Faction* Find(name_t name);\nprotected:\n    std::vector<FactionRank> ranks;\n    std::vector<FactionRelation> relations;\n};\n\nstruct BaseAttribute {\n    name_t name;\n    float value;\n};\n\nclass CharacterClass {\npublic:\n    void AddBaseClass(CharacterClass*);\n    bool HasBaseClass(CharacterClass*);\n    \n    void SetAttribute(name_t attribute, float value);\n    float GetAttribute(name_t attribute);\n    \n    void AddFaction(Faction*, float, float);\n    \n    void GatherBaseAttributes(AttributeContainer&);\n    void GatherFactions(Character*);\n\n    static CharacterClass* Find(name_t name);\nprotected:\n    std::vector<CharacterClass*> base_classes;\n    std::vector<BaseAttribute> base_attributes;\n    std::vector<BaseFactionRank> base_factions;\n};\n\nstruct CharacterDisposition {\n    Character* character;\n    float disposition;\n};\n\nclass Character {\npublic:\n    void AddClass(CharacterClass*);\n    bool HasClass(CharacterClass*);\n    \n    float GetDisposition(Character*);\n    float GetBaseDisposition(Character*);\n    void SetBaseDisposition(Character*, float);\n    \n    bool IsInFaction(Faction*);\n    \n    static void LoadFromDisk(const char*);\n    static Character* Find(Entity* entity);\n    static Character* Find(id_t entity_id);\nprotected:\n    friend class Faction;\n    \n    id_t entity_id = 0;\n    \n    CharacterClass* character_class = nullptr;\n    \n    std::vector<CharacterDisposition> dispositions;\n    std::vector<Faction*> factions;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_CHARACTER_H"
  },
  {
    "path": "src/extensions/kitchensink/dialog.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/dialog.h>\n#include <extensions/kitchensink/quest.h>\n\n#include <templates/pool.h>\n#include <templates/hashmap.h>\n\n#include <framework/file.h>\n\nusing namespace tram;\ntemplate <> Pool<Ext::Kitchensink::DialogTopic> PoolProxy<Ext::Kitchensink::DialogTopic>::pool(\"DialogTopic pool\", 500);\nstatic Hashmap<Ext::Kitchensink::DialogTopic*> item_class_list(\"DialogTopic list\", 500);\n\nnamespace tram::Ext::Kitchensink {\n\nbool DialogCondition::IsMet() {\n    if (!quest) return true;\n    Value cond = Quest::Find(quest)->GetVariable(variable);\n    assert(cond.GetType() == TYPE_BOOL);\n    return (bool)cond;\n}\n\nvoid DialogAction::Perform() {\n    if (!quest) return;\n    Quest::Find(quest)->FireTrigger(trigger);\n}\n\nstd::vector<name_t> DialogTopic::GetValidNextTopics() {\n    std::vector<name_t> topics;\n    \n    for (auto topic_name : next_topics) {\n        DialogTopic* topic = DialogTopic::Find(topic_name);\n       \n        if (!topic) {\n            topics.push_back(topic_name);\n            continue;\n        }\n        \n        if (!topic->condition.IsMet()) continue;\n       \n        topic->Gather(topics);\n    }\n    \n    return topics;\n}\n\nvoid DialogTopic::Gather(std::vector<name_t>& topics) {\n    switch (type) {\n        case DIALOG_TOPIC:\n            topics.push_back(name);\n            break;\n        case DIALOG_IMPORT_SINGLE:\n        case DIALOG_IMPORT_MULTIPLE:\n            for (auto topic_name : next_topics) {\n                DialogTopic* topic = DialogTopic::Find(topic_name);\n               \n                if (!topic) {\n                    topics.push_back(topic_name);\n                    continue;\n                }\n                \n                if (!topic->condition.IsMet()) continue;\n                \n                topic->Gather(topics);\n                \n                if (type == DIALOG_IMPORT_SINGLE) break;\n            }\n    }\n}\n\nDialogTopic* DialogTopic::Make(name_t name) {\n    DialogTopic* topic = item_class_list.Find(name);\n    \n    if (!topic) {\n        topic = PoolProxy<DialogTopic>::New();\n        topic->name = name;\n        item_class_list.Insert(UID(name), topic);\n    }\n    \n    return topic;\n}\n\nDialogTopic* DialogTopic::Find(name_t name) {\n    return item_class_list.Find(name);\n}\n\nvoid DialogTopic::LoadFromDisk(const char* filename) {\n    char path [100] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".dialog\");\n\n    File file (path, File::READ);\n\n    if (!file.is_open()) {\n        std::cout << \"Can't open dialog file '\" << path << \"'\" << std::endl;\n        abort();\n    }\n\n    name_t file_type = file.read_name();\n\n    if (file_type != \"DIALOGv1\") {\n        std::cout << \"Invalid quest file type \" << path << std::endl;\n        abort();\n    }\n    \n    std::cout << \"Loading: \" << filename << std::endl;\n\n    while (file.is_continue()) {\n        auto record = file.read_name();\n        \n        if (record == \"dialog\") {\n            auto type = file.read_name();\n            auto name = file.read_name();\n            \n            DialogTopic* topic = DialogTopic::Make(name);\n            \n            topic->name = name;\n            topic->prompt = file.read_name();\n            topic->answer = file.read_name();\n            \n            if (type == \"topic\") {\n                topic->type = DIALOG_TOPIC;\n            } else if (type == \"import-single\") {\n                topic->type = DIALOG_IMPORT_SINGLE;\n            } else if (type == \"import-multiple\") {\n                topic->type = DIALOG_IMPORT_MULTIPLE;\n            } else {\n                std::cout << \"unknown dialog topic type: \" << type << std::endl;\n                abort();\n            }\n            \n        } else if (record == \"action\") {\n            auto name = file.read_name();\n            \n            DialogTopic* topic = DialogTopic::Find(name);\n            \n            if (!topic) {\n                std::cout << \"can't find dialog topic: \" << name << std::endl;\n                abort();\n            }\n            \n            topic->action.quest = file.read_name();\n            topic->action.trigger = file.read_name();\n\n        } else if (record == \"condition\") {\n            auto name = file.read_name();\n            \n            DialogTopic* topic = DialogTopic::Find(name);\n            \n            if (!topic) {\n                std::cout << \"can't find dialog topic: \" << name << std::endl;\n                abort();\n            }\n            \n            topic->condition.quest = file.read_name();\n            topic->condition.variable = file.read_name();\n            \n        } else if (record == \"next\") {\n            auto name = file.read_name();\n            \n            DialogTopic* topic = DialogTopic::Find(name);\n            \n            if (!topic) {\n                std::cout << \"can't find dialog topic: \" << name << std::endl;\n                abort();\n            }\n            \n            topic->next_topics.push_back(file.read_name());\n            \n        }  else {\n            std::cout << \"unknown dialog record: \" << record << std::endl;\n            abort();\n        }\n    }\n}\n\n\nDialogController::DialogController(name_t initial_topic) {\n    this->initial_topic = initial_topic;\n    this->current_topic = initial_topic;\n    \n    // we could properly yeet in the greeting here\n    this->answer = DialogTopic::Find(initial_topic)->answer;\n}\n\nname_t DialogController::GetAnswer() {\n    return answer;\n}\n\nstd::vector<name_t> DialogController::GetPrompts() {\n    std::vector<name_t> prompts;\n    for (auto topic : next_topics) {\n        prompts.push_back(DialogTopic::Find(topic)->prompt);\n    }\n    if (current_topic == initial_topic) prompts.push_back(\"[exit]\");\n    return prompts;\n}\n\nbool DialogController::ShouldExit() {\n    return should_exit;\n}\n\nvoid RecursivelyAppendNextTopic(std::vector<name_t>& topics, name_t appendable) {\n    DialogTopic* topic = DialogTopic::Find(appendable);\n\n    if (topic->condition.IsMet()) return;    \n\n    switch (topic->type) {\n        case DIALOG_TOPIC:\n            topics.push_back(appendable);\n            break;\n        case DIALOG_IMPORT_SINGLE:\n            for (auto topic : DialogTopic::Find(appendable)->next_topics) {\n                DialogTopic* importable = DialogTopic::Find(appendable);\n                if (importable->condition.IsMet()) {\n                    RecursivelyAppendNextTopic(topics, topic);\n                    return;\n                }\n            }\n            break;\n        case DIALOG_IMPORT_MULTIPLE:\n            for (auto topic : DialogTopic::Find(appendable)->next_topics) {\n                DialogTopic* importable = DialogTopic::Find(appendable);\n                if (importable->condition.IsMet()) {\n                    RecursivelyAppendNextTopic(topics, topic);\n                }\n            }\n            break;\n    }\n}\n\nvoid DialogController::MoveTo(size_t prompt_index) {\n    if (prompt_index >= next_topics.size()) {\n        should_exit = true;\n        return;\n    }\n    \n    name_t next_topic = next_topics[prompt_index];\n    \n    next_topics.clear();\n    for (auto topic : DialogTopic::Find(next_topic)->next_topics) {\n        RecursivelyAppendNextTopic(next_topics, topic);\n    }\n    \n    if (!next_topics.size()) {\n        for (auto topic : DialogTopic::Find(initial_topic)->next_topics) {\n            RecursivelyAppendNextTopic(next_topics, topic);\n        }\n    }\n    \n    current_topic = next_topic;\n    \n    answer = DialogTopic::Find(current_topic)->answer;\n    \n    DialogTopic::Find(current_topic)->action.Perform();\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/dialog.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H\n\n#include <framework/value.h>\n\n#include <vector>\n\nnamespace tram::Ext::Kitchensink {\n\nenum DialogType {\n    DIALOG_TOPIC,\n    DIALOG_IMPORT_SINGLE,\n    DIALOG_IMPORT_MULTIPLE\n    \n    // TODO: add greetings, etc.\n};  \n\nstruct DialogCondition {\n    name_t quest;\n    name_t variable;\n    \n    bool IsMet();\n};\n\nstruct DialogAction {\n    name_t quest;\n    name_t trigger;\n    \n    void Perform();\n};\n\nstruct DialogTopic {\n    DialogType type = DIALOG_TOPIC;\n    \n    name_t name;\n    \n    name_t prompt;\n    name_t answer;\n\n    DialogCondition condition;\n    DialogAction action;\n\n    std::vector<name_t> next_topics;\n    \n    std::vector<name_t> GetValidNextTopics();\n    void Gather(std::vector<name_t>& topics);\n    \n    static void LoadFromDisk(const char* filename);\n    \n    static DialogTopic* Make(name_t);\n    static DialogTopic* Find(name_t);\n};\n\nclass DialogController {\npublic:\n    DialogController(name_t initial_topic);\n    \n    name_t GetAnswer();\n    std::vector<name_t> GetPrompts();\n    \n    bool ShouldExit();\n    void MoveTo(size_t prompt_index);\nprivate:\n    name_t initial_topic;\n    name_t current_topic;\n    name_t answer;\n    bool should_exit = false;\n    std::vector<name_t> next_topics;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_DIALOG_H"
  },
  {
    "path": "src/extensions/kitchensink/entities.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/entities.h>\n\n#include <extensions/kitchensink/soundtable.h>\n\n#include <components/render.h>\n#include <components/physics.h>\n\n#include <templates/hashmap.h>\n\nnamespace tram::Ext::Kitchensink {\n\n// hacky parent/child transform thing.\n// it WILL crash if any of the entities gets killed, btw\nstruct EntityChildren {\n    std::vector<id_t> children;\n};\n\nHashmap<EntityChildren> hierarchy_map(\"hierarchy_map\", 200);\n\nvoid AddChild(name_t parent, id_t child) {\n    auto parent_id = Entity::Find(parent)->GetID();\n    auto hierarchy = hierarchy_map.Find(parent_id);\n    hierarchy.children.push_back(child);\n    hierarchy_map.Insert(parent_id, hierarchy);\n}\n\nvoid UpdateHierarchy(id_t parent_id) {\n    auto hierarchy = hierarchy_map.Find(parent_id);\n    for (id_t child : hierarchy.children) {\n        Entity::Find(child)->UpdateParameters();\n    }\n}\n\n/******************************************************************************/\n/*                                                                            */\n/*                             FUNC_BUTTON                                    */\n/*                                                                            */\n/******************************************************************************/\n\n/**\n * @class tram::Ext::Kitchensink::Button extensions/kitchensink/entities.h <extensions/kitchensink/entities.h>\n * \n * Essentially a func_door.\n * \n * It can open. It can close. It responds to Signal inputs and gives out\n * outputs. It can be a door. It can be a lift. It can even be a button.\n */\n\n// this macro could be converted into a method\n#define PlaySound(TYPE) if (sound) SoundTable::Find(sound)->PlaySound(TYPE, origin, 1.0f);\n\nenum {\n    BUTTON_FIELD_FLAGS,\n    BUTTON_FIELD_MODEL,\n    BUTTON_FIELD_LIGHTMAP,\n    BUTTON_FIELD_ORIGIN,\n    BUTTON_FIELD_DIRECTION,\n    BUTTON_FIELD_SPEED,\n    BUTTON_FIELD_PAUSE,\n    BUTTON_FIELD_DISTANCE,\n    BUTTON_FIELD_SOUND,\n    BUTTON_FIELD_PARENT,\n    \n    BUTTON_FIELD_LAST\n};\n\n// speed, pause, distance,  parent, sound,\n\nstatic const Type button_fields[BUTTON_FIELD_LAST] = {\n    TYPE_UINT32,\n    TYPE_NAME,\n    TYPE_NAME,\n    TYPE_VEC3,\n    TYPE_VEC3,\n    TYPE_FLOAT32,\n    TYPE_FLOAT32,\n    TYPE_FLOAT32,\n    TYPE_NAME,\n    TYPE_NAME\n};\n\nenum {\n    BUTTON_FLAG_ROTARY = 1,     // button that rotates\n    BUTTON_FLAG_MOMENTARY = 2,  // button that automatically unbuttons\n    BUTTON_FLAG_TOGGLE = 4,     \n    BUTTON_FLAG_LOCKED = 8,\n    BUTTON_FLAG_PUSHED = 16,\n};\n\nenum {\n    BUTTON_STATE_NADIR_WAITING,\n    BUTTON_STATE_NADIR_READY,\n    BUTTON_STATE_RISING,\n    BUTTON_STATE_ZENITH_WAITING,\n    BUTTON_STATE_ZENITH_READY,\n    BUTTON_STATE_LOWERING\n};\n\nvoid Button::Register() {\n    Entity::RegisterType(\n        \"button\", \n        [](const SharedEntityData& a, const ValueArray& b) -> Entity* { return new Button(a, b); },\n        [](Entity* a) { delete a; },\n        button_fields,\n        BUTTON_FIELD_LAST\n    );\n}\n\nname_t Button::GetType() {\n    return \"button\";\n}\n\nButton::Button(const SharedEntityData& shared_data, const ValueArray& field_array) : Entity(shared_data) {\n    flags =         field_array[BUTTON_FIELD_FLAGS];\n    model =         field_array[BUTTON_FIELD_MODEL];\n    lightmap =     field_array[BUTTON_FIELD_LIGHTMAP];\n    origin =        field_array[BUTTON_FIELD_ORIGIN];\n    direction =     glm::normalize((vec3)field_array[BUTTON_FIELD_DIRECTION]);\n    speed =         field_array[BUTTON_FIELD_SPEED];\n    pause =         field_array[BUTTON_FIELD_PAUSE];\n    distance =      field_array[BUTTON_FIELD_DISTANCE];\n    sound =         field_array[BUTTON_FIELD_SOUND];\n    parent =        field_array[BUTTON_FIELD_PARENT];\n    \n    // this tracks the progress of the button. it starts at 0.0, which is the\n    // button at its resting state. it can be increased up to 1.0, which is the\n    // button at its pressed state.\n    progress = 0.0f;\n    \n    // timer is used to track the pause of a button. the button pauses when it\n    // reaches its most pressed or resting state, so that buttons with a very\n    // rapid progress rate don't get accidentally pressed repeatedly\n    timer = 0.0f;\n    \n    // this tracks the state of the button.\n    // in future user might be able to change the default value\n    state = BUTTON_STATE_NADIR_READY; \n    \n    // the progress is applied to the starting position and rotation\n    start_pos = location;\n    start_rot = rotation;\n    \n    // this tracks the update cycles since the button was last updated\n    last_activate = 0;\n}\n\nvoid Button::UpdateParameters() {\n    if (!IsLoaded()) return;\n    \n    // first we apply the progress to the position or rotation of the entity    \n    vec3 pos = start_pos;\n    quat rot = start_rot;\n\n    if (flags & BUTTON_FLAG_ROTARY) {\n        rot = glm::rotate(rot, progress * distance, direction);\n        \n        pos -= origin;\n        pos = rot * pos;\n        pos += origin;\n    } else {\n        pos += direction * distance * progress;\n    }\n\n    // then check if parent has moved\n    if (parent) {\n        // if parent doesn't start at origin, this will glitch out.\n        // TODO: fix\n        pos += Entity::Find(parent)->GetLocation();\n    }\n    \n    location = pos;\n    rotation = rot;\n    \n    // then we update the render and physics components\n    rendercomponent->SetLocation(pos);\n    rendercomponent->SetRotation(rot);\n    physicscomponent->SetLocation(pos);\n    physicscomponent->SetRotation(rot);\n    \n    // and update entities that are parented to this one\n    UpdateHierarchy(id);\n}\n\nvoid Button::SetParameters() {\n    if (!IsLoaded()) return;\n    UpdateParameters();\n}\n\nvoid Button::Load(){\n    rendercomponent.make();\n    physicscomponent.make();\n    \n    rendercomponent->SetParent(this);\n    rendercomponent->SetModel(model);\n    rendercomponent->SetLightmap(lightmap);\n\n    physicscomponent->SetParent(this);\n    physicscomponent->SetCollisionGroup(Physics::COLL_STATICOBJ);\n    physicscomponent->SetCollisionMask(-1 ^ (Physics::COLL_WORLDOBJ | Physics::COLL_STATICOBJ));\n    physicscomponent->SetModel(model);\n    physicscomponent->SetMass(0.0f);\n    physicscomponent->SetUpdateParentTransform(false);\n    \n    rendercomponent->Init();\n    physicscomponent->Init();\n    \n    Entity::flags |= LOADED;\n\n    UpdateParameters();\n}\n\nvoid Button::Unload() {\n    Entity::flags &= ~LOADED;\n\n    Serialize();\n\n    rendercomponent.clear();\n    physicscomponent.clear();\n}\n\nvoid Button::Serialize() {\n\n}\n\n\n\nvoid Button::EventHandler(Event &event) {\n    if (event.type != Event::TICK) return;\n    \n    switch (state) {   \n     \n        case BUTTON_STATE_NADIR_WAITING:\n            timer += 1.0f / (pause * 60.0f);\n            if (timer >= 1.0f) {\n                timer = 0.0f;\n                state = BUTTON_STATE_NADIR_READY;\n            }\n            \n            break;\n            \n        case BUTTON_STATE_NADIR_READY:\n            tick.clear();\n            break;\n            \n        case BUTTON_STATE_RISING:\n            progress += 1.0f / (speed * 60.0f);\n            FireSignal(Signal::PROGRESS, progress);\n            if (progress >= 1.0f) {\n                progress = 1.0f;\n                state = BUTTON_STATE_ZENITH_WAITING;\n                PlaySound(SOUND_END_OPEN)\n                FireSignal(Signal::END_OPEN);\n            }\n            if (last_activate > 10 && (flags & BUTTON_FLAG_MOMENTARY)) {\n                state = BUTTON_STATE_ZENITH_WAITING;\n                PlaySound(SOUND_END_OPEN)\n                FireSignal(Signal::END_OPEN);\n            }\n            \n            break;\n            \n        case BUTTON_STATE_ZENITH_WAITING:\n            timer += 1.0f / (pause * 60.0f);\n            if (timer >= 1.0f) {\n                timer = 0.0f;\n                state = BUTTON_STATE_ZENITH_READY;\n            }\n            break;\n            \n        case BUTTON_STATE_ZENITH_READY:\n            if (flags & BUTTON_FLAG_TOGGLE) {\n                tick.clear();\n            } else {\n                state = BUTTON_STATE_LOWERING;\n                PlaySound(SOUND_CLOSE)\n                FireSignal(Signal::CLOSE);\n            }\n            break;\n            \n        case BUTTON_STATE_LOWERING:\n            progress -= 1.0f / (speed * 60.0f);\n            FireSignal(Signal::PROGRESS, progress);\n            if (progress <= 0.0f) {\n                progress = 0.0f;\n                state = BUTTON_STATE_NADIR_WAITING;\n                PlaySound(SOUND_END_CLOSE)\n                FireSignal(Signal::END_CLOSE);\n            }\n            if (last_activate > 10 && (flags & BUTTON_FLAG_MOMENTARY) && (flags & BUTTON_FLAG_TOGGLE)) {\n                state = BUTTON_STATE_NADIR_WAITING;\n                PlaySound(SOUND_END_CLOSE)\n                FireSignal(Signal::END_CLOSE);\n            }\n            break;\n            \n    }\n    \n    UpdateParameters();\n    last_activate++;\n}\n\nvoid Button::MessageHandler(Message& msg) {\n    if (msg.type == Message::SELECT && !(flags & BUTTON_FLAG_LOCKED) && (state == BUTTON_STATE_NADIR_READY || state == BUTTON_STATE_ZENITH_READY)) {\n        Event::Post({\n            .type = Event::SELECTED,\n            .poster = this->id\n        });\n    }\n    \n    // button is pressed and it is not momentary\n    if (msg.type == Message::ACTIVATE_ONCE /*&& !(flags & BUTTON_FLAG_MOMENTARY)*/ && !(flags & BUTTON_FLAG_LOCKED)) {\n        switch (state) {\n            case BUTTON_STATE_NADIR_READY:  tick.make(Event::TICK, this); state = BUTTON_STATE_RISING;   PlaySound(SOUND_OPEN)   FireSignal(Signal::OPEN);   break;\n            case BUTTON_STATE_ZENITH_READY: tick.make(Event::TICK, this); state = BUTTON_STATE_LOWERING; PlaySound(SOUND_CLOSE)  FireSignal(Signal::CLOSE);  break;\n            default:                                                                                                break;\n        }\n        \n        last_activate = 0;\n    }\n    \n    // play locked sound\n    if (msg.type == Message::ACTIVATE_ONCE && (flags & BUTTON_FLAG_LOCKED)) {\n        PlaySound(SOUND_LOCKED)\n        FireSignal(Signal::LOCKED_USE, progress);\n    }\n    \n    // button is being pressed and it is momentary\n    if (msg.type == Message::ACTIVATE && flags & BUTTON_FLAG_MOMENTARY && !(flags & BUTTON_FLAG_LOCKED)) {\n        last_activate = 0;\n    }\n    \n    if (msg.type == Message::SET_PROGRESS) {\n        progress = *msg.data_value;\n        UpdateParameters();\n    }\n    \n    // opening and closing\n    if ((msg.type == Message::OPEN || msg.type == Message::TOGGLE) && state == BUTTON_STATE_NADIR_READY) {\n        PlaySound(SOUND_OPEN)\n        state = BUTTON_STATE_RISING;\n        tick.make(Event::TICK, this);\n    }\n    if ((msg.type == Message::CLOSE || msg.type == Message::TOGGLE) && state == BUTTON_STATE_ZENITH_READY) {\n        PlaySound(SOUND_CLOSE)\n        state = BUTTON_STATE_LOWERING;\n        tick.make(Event::TICK, this);\n    }\n    \n    \n    // locking and unlocking\n    if (msg.type == Message::LOCK) {\n        flags |= BUTTON_FLAG_LOCKED;\n    } \n    \n    if (msg.type == Message::UNLOCK) {\n        flags &= ~BUTTON_FLAG_LOCKED;\n    } \n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/entities.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H\n\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/serialization.h>\n\nnamespace tram {\n    class RenderComponent;\n    class PhysicsComponent;\n}\n\nnamespace tram::Ext::Kitchensink {\n\nclass Button : public Entity {\npublic:\n    Button(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void EventHandler(Event &event); void MessageHandler(Message& msg);\n    name_t GetType();\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    void SwitchState(int);\n    \n    EventListener tick;\n    \n    uint32_t flags;\n    name_t model;\n    name_t lightmap;\n    vec3 origin;\n    vec3 direction;\n    float speed;\n    float pause;\n    float distance;\n    name_t sound;\n    name_t parent;\n    \n    vec3 start_pos;\n    quat start_rot;\n    \n    float progress;\n    float timer;\n    int state;\n    int last_activate;\n};\n\nclass Breakable : public Entity {\npublic:\n    Breakable(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass Water : public Entity {\npublic:\n    Water(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass Train : public Entity {\npublic:\n    Train(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass Pickup : public Entity {\npublic:\n    Pickup(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass DebugText : public Entity {\npublic:\n    DebugText(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass DebugShape : public Entity {\npublic:\n    DebugShape(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerAutosave : public Entity {\npublic:\n    TriggerAutosave(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerHurt : public Entity {\npublic:\n    TriggerHurt(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerOnce : public Entity {\npublic:\n    TriggerOnce(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerMultiple : public Entity {\npublic:\n    TriggerMultiple(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerPush : public Entity {\npublic:\n    TriggerPush(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerRemove : public Entity {\npublic:\n    TriggerRemove(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerTeleport : public Entity {\npublic:\n    TriggerTeleport(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\nclass TriggerPlayerMovement : public Entity {\npublic:\n    TriggerPlayerMovement(const SharedEntityData&, const ValueArray&);\n    void UpdateParameters(); void SetParameters();\n    void Load(); void Unload(); void Serialize();\n    void MessageHandler(Message& msg);\n    static void Register();\nprotected:\n    Component<RenderComponent> rendercomponent;\n    Component<PhysicsComponent> physicscomponent;\n    \n    name_t model;\n    name_t collmodel;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_ENTITIES_H"
  },
  {
    "path": "src/extensions/kitchensink/imageassembly.cpp",
    "content": "#include <extensions/kitchensink/imageassembly.h>\n\n#include <framework/file.h>\n\nnamespace tram::Kitchensink::ImageAssembly {\n\nenum {\n    OP_NOOP,        // 8 op\n    OP_1,\n    OP_MOVE,        // 8 op, 4 dst 4 src\n    OP_RETURN,      // 8 op\n    OP_CONSTANT,    // 8 op, 4 dst 4 nul, 32 constant \n    OP_SAMPLE,      // 8 op, 4 dst 4 nul, 16 16 coords\n    OP_6,\n    OP_7,\n    OP_ADD,         // 8 op, 4 dst 4 src\n    OP_MULTIPLY,    // 8 op, 4 dst 4 src\n};\n    \nclass Operation {\npublic:\n    virtual void Emit(File& file) = 0;\n    virtual int GetLength() = 0;\n\n    void SetRegisterSrc(uint8_t reg) {\n        src_reg = reg;\n    }\n    \n    void SetRegisterDst(uint8_t reg) {\n        dst_reg = reg;\n    }\n    \nprotected:\n    uint8_t GetPackedRegister() {\n        uint8_t result = dst_reg & 0xF;\n        result <<= 4;\n        result |= src_reg & 0xF;\n        return result;\n    }\n\n    uint8_t src_reg = 0;\n    uint8_t dst_reg = 0;\n};\n\nclass Move : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_MOVE);\n        file.write_uint8(GetPackedRegister());\n    }\n    \n    int GetLength() override {\n        return 2;\n    }\n};\n\nclass Return : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_RETURN);\n    }\n    \n    int GetLength() override {\n        return 1;\n    }\n};\n\nclass Constant : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_CONSTANT);\n        file.write_uint8(GetPackedRegister());\n        \n        vec4 clamped = glm::clamp(color, 0.0f, 1.0f);\n        \n        file.write_uint8(clamped.x * 255.0f);\n        file.write_uint8(clamped.y * 255.0f);\n        file.write_uint8(clamped.z * 255.0f);\n        file.write_uint8(clamped.w * 255.0f);\n    }\n    \n    void SetColor(vec4 color) {\n        this->color = color;\n    }\n    \n    int GetLength() override {\n        return 6;\n    }\n    \nprivate:\n    vec4 color;\n};\n\nclass Sample : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_SAMPLE);\n        file.write_uint8(GetPackedRegister());\n        \n        file.write_uint16(x);\n        file.write_uint16(y);\n    }\n    \n    void SetCoordX(uint16_t x) {\n        this->x = x;\n    }\n    \n    void SetCoordY(uint16_t y) {\n        this->y = y;\n    }\n    \n    int GetLength() override {\n        return 6;\n    }\n    \nprivate:\n    uint16_t x;\n    uint16_t y;\n};\n\nclass Addition : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_ADD);\n        file.write_uint8(GetPackedRegister());\n    }\n    \n    int GetLength() override {\n        return 2;\n    }\n};\n\nclass Multiply : public Operation {\npublic:\n    void Emit(File& file) override {\n        file.write_uint8(OP_MULTIPLY);\n        file.write_uint8(GetPackedRegister());\n    }\n    \n    int GetLength() override {\n        return 2;\n    }\n};\n    \nclass Pixel {\npublic:\n    Pixel(const std::vector<Render::API::AssemblyLayer>& layers) {\n        // final pixel value in register 0\n        // all registers are initialized to zeros\n        \n        for (const auto& layer : layers) {\n            \n            // if there is something in register 0 from previous raytrace\n            // bounces and this next surface has some reflectivity, compute\n            // how much of that previous color will be kept\n            if (operations.size() && layer.sublayer_opacity < 1.0f) {\n                Constant* opacity = new Constant;\n                opacity->SetRegisterDst(1);\n                opacity->SetColor({layer.sublayer_opacity,\n                                   layer.sublayer_opacity,\n                                   layer.sublayer_opacity,\n                                   layer.sublayer_opacity});\n                \n                Multiply* multiply = new Multiply;\n                multiply->SetRegisterSrc(1);\n                multiply->SetRegisterDst(0);\n                \n                operations.push_back(opacity);\n                operations.push_back(multiply);\n            }\n            \n            // register 0 has colors from previous bounces, i.e. reflections\n            \n            // now we will load diffuse + texture into register 1\n            \n            if (layer.texture < 0) {\n                Constant* diffuse = new Constant;\n                diffuse->SetRegisterDst(1);\n                diffuse->SetColor(layer.diffuse);\n                \n                operations.push_back(diffuse);\n            } else {\n                Constant* diffuse = new Constant;\n                diffuse->SetRegisterDst(1);\n                diffuse->SetColor(layer.diffuse);\n                \n                Sample* texture = new Sample;\n                texture->SetRegisterDst(2);\n                texture->SetRegisterSrc(layer.texture);\n                texture->SetCoordX(layer.sample_x);\n                texture->SetCoordY(layer.sample_y);\n                \n                Multiply* multiply = new Multiply;\n                multiply->SetRegisterDst(1);\n                multiply->SetRegisterSrc(2);\n                \n                operations.push_back(diffuse);\n                operations.push_back(texture);\n                operations.push_back(multiply);\n            }\n            \n            // register 0 has reflections\n            // register 1 has diffuse + texture\n            \n            Addition* addition = new Addition;\n            addition->SetRegisterDst(0);\n            addition->SetRegisterSrc(1);\n            \n            operations.push_back(addition);\n            \n            // register 0 has reflections + diffuse + texture\n            \n            Constant* specular = new Constant;\n            specular->SetRegisterDst(1);\n            specular->SetColor(layer.specular);\n            \n            operations.push_back(specular);\n            operations.push_back(addition);\n            \n            // register 0 has reflections + diffuse + texture\n        }\n        \n        // finally we can return the pixel value\n        operations.push_back(new Return);\n    }\n    \n    int GetLength() {\n        int len = 0;\n        for (auto operation : operations) len += operation->GetLength();\n        return len;\n    }\n    \n    void Emit(File& file) {\n        for (auto operation : operations) operation->Emit(file);\n    }\n\nprivate:\n    std::vector<Operation*> operations;\n};\n\nclass Frame {\npublic:\n    Frame(const Render::API::AssemblyLayers& layers) {\n        width = layers.width;\n        height = layers.height;\n        \n        for (auto& pixel : layers.pixels) {\n            pixels.push_back(Pixel(pixel));\n        }\n    }\n    \n    void Emit(File& file) {\n        \n        // emit frame header\n        file.write_uint8('F'); file.write_uint8('R'); file.write_uint8('M'); file.write_uint8('E');\n        \n        // emit frame dimensions\n        file.write_uint16(width);\n        file.write_uint16(height);\n        \n        // emit frame length\n        int len = 0;\n        for (auto& pixel : pixels) {\n            len += pixel.GetLength();\n        }\n        file.write_int32(len);\n        \n        // emit pixels\n        for (auto& pixel : pixels) {\n            pixel.Emit(file);\n        }\n    }\n    \nprivate:\n    int width = -1;\n    int height = -1;\n    \n    std::vector<Pixel> pixels;\n};\n    \nclass Image {\npublic:\n    void AddFrame(const Render::API::AssemblyLayers& layers) {\n        if (width < 0) {\n            width = layers.width;\n            height = layers.height;\n        } else if (width != layers.width && height != layers.height) {\n            std::cout << \"Image set to \" << width << \"x\" << height << \" but fed a frame \" << layers.width << \"x\" << layers.height << std::endl;\n        }\n\n        textures = layers.textures;\n        \n        frames.push_back(Frame(layers));\n    }\n    \n    void Emit(File& file) {\n        \n        // emit filetype header\n        file.write_uint8('I'); file.write_uint8('M'); file.write_uint8('G'); file.write_uint8('B');\n        file.write_uint8('C'); file.write_uint8('O'); file.write_uint8('D'); file.write_uint8('E');\n        \n        // emit filetype version\n        file.write_uint16(1);\n        \n        // emit flags\n        file.write_uint16(0);\n        \n        // emit input length\n        file.write_uint16(textures.size() + 1);\n        \n        // emit frame count\n        file.write_uint16(frames.size());\n        \n        // emit input metadata\n        file.write_uint8(0);\n        file.write_uint8(0);\n        file.write_uint16(0);\n        file.write_uint16(width);\n        file.write_uint16(height);\n        \n        for (auto& texture : textures) {\n            file.write_uint8(texture.index);\n            file.write_uint8(0);\n            file.write_uint16(0);\n            file.write_uint16(texture.width);\n            file.write_uint16(texture.height);\n        }\n        \n        // emit all of the frames\n        for (auto& frame : frames) {\n            frame.Emit(file);\n        }\n    }\n\nprivate:\n    int width = -1;\n    int height = -1;\n    \n    std::vector<Render::API::AssemblyTexture> textures;\n    std::vector<Frame> frames;\n};\n\n\n    \n\n    \n\n\nImage* image = nullptr;\n\nvoid Add(Render::API::AssemblyLayers layers) {\n    if (!image) image = new Image;\n    \n    image->AddFrame(layers);\n}\n\nvoid Reset() {\n    if (image) {\n        delete image;\n        image = nullptr;\n    }\n}\n\nvoid Save(const char* filename) {\n    File file(filename, File::WRITE | File::BINARY);\n\n    if (image) {\n        image->Emit(file);\n    }\n}\n\n}\n"
  },
  {
    "path": "src/extensions/kitchensink/imageassembly.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_IMAGEASSEMBLY_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_IMAGEASSEMBLY_H\n\n#include <render/raytrace/raytrace.h>\n\nnamespace tram::Kitchensink::ImageAssembly {\n    \nvoid Add(Render::API::AssemblyLayers layers);\nvoid Reset();\n\nvoid Save(const char* filename);\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_IMAGEASSEMBLY_H"
  },
  {
    "path": "src/extensions/kitchensink/inventory.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/inventory.h>\n\n#include <templates/hashmap.h>\n\n#include <framework/file.h>\n\n#include <framework/entity.h>\n\nusing namespace tram;\ntemplate <> Pool<Ext::Kitchensink::ItemClass> PoolProxy<Ext::Kitchensink::ItemClass>::pool(\"itemclass pool\", 500);\ntemplate <> Pool<Ext::Kitchensink::Inventory> PoolProxy<Ext::Kitchensink::Inventory>::pool(\"inventory pool\", 500);\n\nnamespace tram::Ext::Kitchensink {\n\nstatic Hashmap<ItemClass*> item_class_list(\"item_class_list list\", 500);\nstatic Hashmap<Inventory*> inventory_list(\"inventory_list list\", 500);\n\nstruct InventoryFactoryInfo {\n    InventoryManager*(*make)(void) = nullptr;\n    void (*clear)(InventoryManager*) = nullptr;\n};\nstatic Hashmap<InventoryFactoryInfo*> inv_factory(\"inventoru_factory_info\", 100);\n\nvoid ItemClass::Register(ItemClass* item) {\n    item_class_list.Insert(item->name, item);\n}\n\nItemClass* ItemClass::Find(name_t name) {\n    ItemClass* item_class = item_class_list.Find(name);\n    \n    if (!item_class) {\n        item_class = PoolProxy<ItemClass>::New();\n        item_class->name = name;\n        item_class_list.Insert(UID(name), item_class);\n    }\n    \n    return item_class;\n}\n\nvoid ItemClass::FireEquip(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnAdded(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FireUnequip(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnUnequip(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FireAdded(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnAdded(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FireRemoved(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnRemoved(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FirePrimaryAction(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnPrimaryAction(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FireSecondaryAction(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnSecondaryAction(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\nvoid ItemClass::FireIdle(Inventory* inventory) {\n    ItemClass* item_class = this;\n    while (!item_class->OnIdle(this, inventory) && item_class->base_class) {\n        item_class = ItemClass::Find(item_class->base_class);\n    }\n}\n\n\nInventoryManager* InventoryManager::New(name_t compartment) {\n    auto info = inv_factory.Find(compartment);\n    \n    if (!info) {\n        std::cout << \"No InventoryManager found for \" << compartment << \"!\" << std::endl;\n        \n        return new ListInventoryManager;\n    }\n    \n    return info->make();\n}\n\nvoid InventoryManager::Delete(name_t compartment, InventoryManager* manager) {\n    auto info = inv_factory.Find(compartment);\n    \n    if (!info) {\n        delete manager;\n    }\n    \n    return info->clear(manager);\n}\n\nvoid InventoryManager::Register(name_t compartment, InventoryManager*(*make)(void), void (*clear)(InventoryManager*)) {\n    inv_factory.Insert(compartment, new InventoryFactoryInfo {.make = make,\n                                                              .clear = clear});\n}\n\n\n\nint ListInventoryManager::AddItem(name_t item_class, int count) {\n    int max_stack = ItemClass::Find(item_class)->stack;\n    \n    for (auto& item : items) {\n        if (item.first != item_class) continue;\n        \n        int total_count = item.second + count;\n        \n        // max_stack negative value means that stack is unlimited\n        if (max_stack < 0) {\n            item.second = total_count;\n            return count;\n        } else if (max_stack > total_count) {\n            int added = max_stack - item.second;\n            item.second = max_stack;\n            return added;\n        } else {\n            item.second = total_count;\n            return count;\n        }\n    }\n    \n    if (max_stack >= 0 && count > max_stack) {\n        items.push_back({item_class, max_stack});\n        return max_stack;\n    }\n    \n    items.push_back({item_class, count});\n    return count;\n}\n\nint ListInventoryManager::RemoveItem(name_t item_class, int count) {\n    for (auto& item : items) {\n        if (item.first != item_class) continue;\n        \n        if (item.second <= count) {\n            int over = count - item.second;\n            std::erase_if(items, [=](auto& item){ return item.first == item_class;});\n            return over;\n        } else {\n            item.second -= count;\n            return count;\n        }\n    }\n    \n    return 0;\n}\n\nint ListInventoryManager::GetItemCount(name_t item_class) {\n    for (auto& item : items) {\n        if (item.first != item_class) continue;\n        return item.second;\n    }\n    \n    return 0;\n}\n\nstd::vector<name_t> ListInventoryManager::GetItems() {\n    std::vector<name_t> new_items;\n    new_items.reserve(items.size());\n    \n    for (auto& item: items) new_items.push_back(item.first);\n    \n    return new_items;\n}\n\nInventoryManager* Inventory::FindCompartment(name_t compartment) {\n    if (!compartment) compartment = \"default\";\n    \n    for (auto& pair : compartments) {\n        if (pair.first == compartment) return pair.second;\n    }\n    \n    auto new_compartment = InventoryManager::New(compartment);\n    compartments.push_back({compartment, new_compartment});\n    \n    return new_compartment;\n}\n\nint Inventory::AddItem(name_t item_class, int count) {\n    auto item_info = ItemClass::Find(item_class);\n    \n    auto item_callback = item_info;\n    while (!item_callback->OnAdded(item_info, this) && item_callback->base_class) {\n        item_callback = ItemClass::Find(item_callback->base_class);\n    }\n\n    return FindCompartment(item_info->default_compartment)->AddItem(item_class, count);\n}\n\nint Inventory::RemoveItem(name_t item_class, int count) {\n    auto item_info = ItemClass::Find(item_class);\n    \n    auto item_callback = item_info;\n    while (!item_callback->OnRemoved(item_info, this) && item_callback->base_class) {\n        item_callback = ItemClass::Find(item_callback->base_class);\n    }\n\n    return FindCompartment(item_info->default_compartment)->RemoveItem(item_class, count);\n}\n\nint Inventory::GetItemCount(name_t item_class) {\n    auto item_info = ItemClass::Find(item_class);\n    return FindCompartment(item_info->default_compartment)->GetItemCount(item_class);\n}\n\n\nbool Inventory::EquipItem(name_t item_class) {\n    auto item_info = ItemClass::Find(item_class);\n    auto item_compartment = FindCompartment(item_info->default_compartment);\n    \n    // check if has item\n    if (item_compartment->GetItemCount(item_class) < 1) {\n        std::cout << \"can't equip item (\"<<item_class<<\") that not have; has \" << item_compartment->GetItemCount(item_class) << std::endl;\n        return false;\n    }\n    \n    // check if slot exists\n    for (auto& slot : equipped) {\n        if (slot.first != item_info->equipped_slot) continue;\n        \n        // unequip previous one\n        auto prev_callback = ItemClass::Find(slot.second);;\n        while (!prev_callback->OnUnequip(item_info, this) && prev_callback->base_class) {\n            prev_callback = ItemClass::Find(prev_callback->base_class);\n        }\n        \n        // equip this one\n        auto next_callback = item_info;\n        while (!next_callback->OnEquip(item_info, this) && next_callback->base_class) {\n            next_callback = ItemClass::Find(next_callback->base_class);\n        }\n        \n        std::cout <<\"equipped to an existing slot\" << std::endl;\n        \n        return true;\n    }\n    \n    std::cout <<\"equipped to new slot\" << std::endl;\n    \n    // otherwise equip and install slot\n    auto next_callback = item_info;\n    while (!next_callback->OnEquip(item_info, this) && next_callback->base_class) {\n        next_callback = ItemClass::Find(next_callback->base_class);\n    }\n    \n    equipped.push_back({item_info->equipped_slot, item_class});\n    \n    return true;\n}\n\nbool Inventory::UnequipItem(name_t item_class) {\n    for (auto& slot : equipped) {\n        if (slot.second != item_class) continue;\n        \n        auto item_info = ItemClass::Find(item_class);\n        auto callback = item_info;\n        while (!callback->OnUnequip(item_info, this) && callback->base_class) {\n            callback = ItemClass::Find(callback->base_class);\n        }\n        \n        std::erase_if(equipped, [=](auto& slot) {return slot.second == item_class;});\n        \n        return true;\n    }\n    \n    return false;\n}\n\nbool Inventory::UnequipSlot(name_t item_slot) {\n    for (auto& slot : equipped) {\n        if (slot.first != item_slot) continue;\n        \n        auto item_info = ItemClass::Find(slot.second);\n        auto callback = item_info;\n        while (!callback->OnUnequip(item_info, this) && callback->base_class) {\n            callback = ItemClass::Find(callback->base_class);\n        }\n        \n        std::erase_if(equipped, [=](auto& slot) {return slot.first == item_slot;});\n        \n        return true;\n    }\n    \n    return false;\n}\n\nbool Inventory::IsEquippedItem(name_t item) {\n    for (auto& entry : equipped) if (entry.second == item) return true;\n    return false;\n}\n\nbool Inventory::IsEquippedSlot(name_t slot) {\n    for (auto& entry : equipped) if (entry.first == slot) return true;\n    return false;\n}\n\nname_t Inventory::GetEquippedItem(name_t slot) {\n    for (auto& entry : equipped) if (entry.first == slot) return entry.second;\n    return \"none\";\n}\n\nInventory* Inventory::Find(Entity* entity) {\n    Inventory* inventory = inventory_list.Find(entity->GetID());\n    \n    if (!inventory) {\n        inventory = PoolProxy<Inventory>::New(entity->GetID());\n        inventory_list.Insert(entity->GetID(), inventory);\n    }\n    \n    return inventory;\n}\n\n\nvoid Inventory::LoadFromDisk(const char* filename) {\n    char path [100] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".item\");\n\n    File file(path, File::READ);\n\n    if (!file.is_open()) {\n        std::cout << \"Can't open inventory file '\" << path << \"'\" << std::endl;\n        abort();\n    }\n\n    name_t file_type = file.read_name();\n\n    if (file_type != \"ITEMv1\") {\n        std::cout << \"Invalid item file type \" << path << std::endl;\n        abort();\n    }\n    \n    std::cout << \"Loading: \" << filename << std::endl;\n\n    while (file.is_continue()) {\n        name_t record = file.read_name();\n        \n        if (record == \"item-class\") {\n            ItemClass* item = ItemClass::Find(file.read_name());\n            \n            item->base_class = file.read_name();\n            item->equipped_slot = file.read_name();\n            item->default_compartment = file.read_name();\n        } else if (record == \"world-display\") {\n            ItemClass* item = ItemClass::Find(file.read_name());\n            \n            item->viewmodel = file.read_name();\n            item->worldmodel = file.read_name();\n        } else if (record == \"item-layout\") {\n            ItemClass* item = ItemClass::Find(file.read_name());\n            \n            item->width = file.read_int32();\n            item->height  = file.read_int32();\n            \n            item->stack  = file.read_int32();\n            \n            item->weight  = file.read_float32();\n            item->value  = file.read_int32();\n        } else if (record == \"item-attribute\") {\n            ItemClass* item = ItemClass::Find(file.read_name());\n            \n            Attribute new_attribute;\n            new_attribute.name = file.read_name();\n            new_attribute.base_value = file.read_float32();\n            \n            item->attributes.push_back(new_attribute);\n        } else if (record == \"item-effect\") {\n            ItemClass* item = ItemClass::Find(file.read_name());\n            \n            Effect new_effect;\n            new_effect.attribute = file.read_name();\n            new_effect.value = file.read_float32();\n            new_effect.name = file.read_name();\n            new_effect.tag = file.read_name();\n            name_t effect_type = file.read_name();\n            //new_effect.type = file.read_name();\n            new_effect.time = file.read_float32();\n            \n            if (effect_type == \"raise-attribute\") {\n                new_effect.type = EFFECT_RAISE_BASE;\n            } else if (effect_type == \"negate-change\") {\n                new_effect.type = EFFECT_NEGATE_CHANGE;\n            } else {\n                std::cout << \"Unrecognized effect type \" << effect_type <<\" in file: \" << filename << std::endl;\n            }\n            \n            item->effects.push_back(new_effect);\n        } else {\n            std::cout << \"Unrecognized record \" << record <<\" in file: \" << filename << std::endl;\n        }\n    }\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/inventory.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H\n\n#include <extensions/kitchensink/attributes.h>\n\n#include <framework/gui.h>\n\nnamespace tram {\n    class Entity;\n}\n\nnamespace tram::Ext::Kitchensink {\n\nstruct Inventory;\nstruct ItemInstance;\ntypedef void (*item_action_func)(Inventory*, ItemInstance*);\n\nclass ItemClass {\npublic:\n    name_t name;\n    name_t base_class;\n    \n    name_t viewmodel;\n    name_t worldmodel;\n    \n    name_t equipped_slot;\n    \n    // TODO: add getter methods\n    // in addition, these getter methods should descend the item class\n    // hierarchy and find the first valid thing to return\n    \n    GUI::font_t sprite_font = 0;\n    GUI::font_t icon_font = 0;\n    GUI::glyph_t sprite_glyph = 0;\n    GUI::glyph_t icon_glyph = 0;\n    \n    int width = 1, height = 1;\n    int stack = 1, value = 0;\n    \n    float weight = 0.0f;\n    \n    name_t default_compartment;\n    \n    void FireEquip(Inventory*);\n    void FireUnequip(Inventory*);\n    void FireAdded(Inventory*);\n    void FireRemoved(Inventory*);\n    void FirePrimaryAction(Inventory*);\n    void FireSecondaryAction(Inventory*);\n    void FireIdle(Inventory*);\n    \n    virtual bool OnEquip(ItemClass*, Inventory*) { return false; }\n    virtual bool OnUnequip(ItemClass*, Inventory*) { return false; }\n    virtual bool OnAdded(ItemClass*, Inventory*) { return false; }\n    virtual bool OnRemoved(ItemClass*, Inventory*) { return false; }\n    virtual bool OnPrimaryAction(ItemClass*, Inventory*) { return false; }\n    virtual bool OnSecondaryAction(ItemClass*, Inventory*) { return false; }\n    virtual bool OnIdle(ItemClass*, Inventory*) { return false; }\n    \n    std::vector<Attribute> attributes;\n    std::vector<Effect> effects;\n    \n    static void Register(ItemClass*);\n    static ItemClass* Find(name_t item_class);\n};\n\nstruct ItemInstance {\n    name_t item_class;\n    name_t compartment;\n    int count = 1;\n    int x = 0, y = 0;\n    bool equipped = false;\n};\n\nclass InventoryManager {\npublic:\n    virtual int AddItem(name_t item_class, int count) = 0;\n    virtual int RemoveItem(name_t item_class, int count) = 0;\n    virtual int GetItemCount(name_t item_class) = 0;\n    \n    virtual std::vector<name_t> GetItems() = 0;\n    \n    virtual ~InventoryManager() = default;\n    \n    static InventoryManager* New(name_t compartment);\n    static void Delete(name_t compartment, InventoryManager*);\n    static void Register(name_t compartment, InventoryManager*(*make)(), void (*clear)(InventoryManager*));\n};\n\nclass ListInventoryManager : public InventoryManager {\npublic:\n    int AddItem(name_t item_class, int count) override;\n    int RemoveItem(name_t item_class, int count) override;\n    int GetItemCount(name_t item_class) override;\n    \n    std::vector<name_t> GetItems() override;\n    \n    ~ListInventoryManager() override = default;\n    \n    std::vector<std::pair<name_t, int>> items;\n};\n\nclass Inventory {\npublic:\n    Inventory(id_t parent) : parent(parent) {}\n\n    int AddItem(name_t item_class, int count);\n    int RemoveItem(name_t item_class, int count);\n    int GetItemCount(name_t item_class);\n    \n    bool EquipItem(name_t item_class);\n    bool UnequipItem(name_t item_class);\n    bool UnequipSlot(name_t item_slot);\n    bool IsEquippedItem(name_t item);\n    bool IsEquippedSlot(name_t slot);\n    name_t GetEquippedItem(name_t slot);\n    \n    InventoryManager* FindCompartment(name_t compartment);\n    \n    id_t parent = 0;\n    \n    std::vector<std::pair<name_t, name_t>> equipped;\n    std::vector<std::pair<name_t, InventoryManager*>> compartments;\npublic:\n    \n    static void LoadFromDisk(const char* filename);\n    static Inventory* Find(Entity* entity);\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_INVENTORY_H"
  },
  {
    "path": "src/extensions/kitchensink/kitchensink.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/kitchensink.h>\n\n#include <framework/system.h>\n\n#include <assert.h>\n\n/**\n * @namespace tram::Ext::Kitchensink\n * \n * Extension containing random stuff that doesn't fit in anywhere else.\n * \n * Featuring a collection (mostly) unfinished re-usable game mechanics for RPG\n * games, as well as a couple of useful data tools and entities.\n * \n * This is where you can find out func_door analog too.\n */\n\nnamespace tram::Ext::Kitchensink {\n\nuint32_t KITCHENSINK_SYSTEM = -1u;\n\nvoid Init() {\n    KITCHENSINK_SYSTEM = System::Register(\"Random mechanics and stuff\", \"KITCHN\");\n    \n    System::SetState(KITCHENSINK_SYSTEM, System::INIT);\n    \n    System::AssertDependency(System::AUDIO);\n    System::AssertDependency(System::RENDER);\n    System::AssertDependency(System::PHYSICS);\n    \n    System::SetState(KITCHENSINK_SYSTEM, System::READY);\n}\n\nvoid Update() {\n    \n}\n\n}\n"
  },
  {
    "path": "src/extensions/kitchensink/kitchensink.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H\n\nnamespace tram::Ext::Kitchensink {\n    \nvoid Init();\nvoid Update();\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_KITCHENSINK_H"
  },
  {
    "path": "src/extensions/kitchensink/menu.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/menu.h>\n\n#include <extensions/kitchensink/quest.h>\n#include <extensions/kitchensink/dialog.h>\n\n#include <cstring>\n\nnamespace tram::Ext::Kitchensink {\n    \nconst size_t SEARCH_STRING_LENGTH = 100;\n\nListDialog::ListDialog() : ListDialog(name_t()) {}\n\nListDialog::ListDialog(name_t dialog) {\n    this->dialog_topic = dialog;\n}\n\nListDialog::~ListDialog() {\n    if (search_string) delete[] search_string;\n}\n\nvoid ListDialog::Display() {\n    if (dialog_topic) goto dialog; else goto selection;\nselection:\n    \n    if (!search_string) search_string = new char[SEARCH_STRING_LENGTH + 1], *search_string = '\\0';\n    \n    GUI::PushFrameRelative(GUI::FRAME_CENTER_HORIZONTAL, 640);\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_VERTICAL, 480);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n    \n        GUI::TextBox(search_string, SEARCH_STRING_LENGTH, true, 400);\n        GUI::NewLine();\n    \n        for (auto& topic : PoolProxy<DialogTopic>::GetPool()) {\n            if (!strstr(topic.name, search_string)) continue;\n            \n            if (GUI::Button(topic.name)) dialog_topic = topic.name;\n            \n            GUI::NewLine();\n        }\n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n\n    return;\n\ndialog:\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_HORIZONTAL, 640);\n    \n    GUI::PushFrameRelative(GUI::FRAME_BOTTOM, 250);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 200);\n\n\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n\n        auto topic = DialogTopic::Find(dialog_topic);\n    \n        if (!topic) {\n            GUI::Text(\"Not found: \");\n            GUI::Text(dialog_topic);\n        } else {\n            auto next_topics = topic->GetValidNextTopics();\n    \n            GUI::Text(topic->answer);\n            \n            GUI::NewLine();\n            \n            for (auto next : next_topics) {\n                auto next_topic = DialogTopic::Find(next);\n                \n                if (!next_topic) {\n                    GUI::Button(next, false);\n                } else {\n                    if (GUI::Button(next_topic->prompt)) {\n                        next_topic->action.Perform();\n                        dialog_topic = next;\n                    }\n                }\n            }\n        }\n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\n    \n    \n    \nvoid QuestList::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_HORIZONTAL, 640);\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_VERTICAL, 480);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n    \n    for (const auto& quest : PoolProxy<Quest>::GetPool()) {\n        GUI::Text(quest.name);\n        GUI::NewLine();\n        \n        GUI::PushFrameRelativeKeepCursor(GUI::FRAME_LEFT_INV, 10);\n        \n        for (const auto& objective : quest.variables) {\n            if (objective.type != QUEST_VAR_OBJECTIVE) continue;\n            \n            if (objective.objective.value == \"unknown\") GUI::SetColor(Render::COLOR_GRAY);\n            if (objective.objective.value == \"obsolete\") GUI::SetColor(Render::COLOR_BLUE);\n            if (objective.objective.value == \"finished\") GUI::SetColor(Render::COLOR_GREEN);\n            if (objective.objective.value == \"failed\") GUI::SetColor(Render::COLOR_RED);\n            if (objective.objective.value == \"known\") GUI::SetColor(Render::COLOR_BLACK);\n            \n            GUI::Text(objective.objective.title); GUI::NewLine(GUI::LINE_LOW);\n            GUI::Text(objective.objective.subtitle); GUI::NewLine();\n        }\n        \n        GUI::SetColor(Render::COLOR_BLACK);\n        \n        GUI::PopFrameKeepCursor();\n    }\n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid KitchensinkMenuList::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_HORIZONTAL, 100);\n    GUI::PushFrameRelative(GUI::FRAME_CENTER_VERTICAL, 100);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n    \n    if (GUI::Button(\"Show dialogs\", true, 90)) {\n        Menu::Push(new ListDialog);\n    }\n    \n    GUI::NewLine();\n    \n    if (GUI::Button(\"Show quests\", true, 90)) {\n        Menu::Push(new QuestList);\n    }\n    \n    GUI::NewLine();\n    \n    if (GUI::Button(\"Show inventory\", true, 90)) {\n        Menu::Push(new QuestList);\n    }\n    \n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n    \n}"
  },
  {
    "path": "src/extensions/kitchensink/menu.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H\n\n#include <extensions/menu/menu.h>\n\nnamespace tram::Ext::Kitchensink {\n    \nclass ListInventory : public Ext::Menu::Menu {\n    void Display();\n    uint32_t Layer() { return 0; }\n};\n\nclass ListTrade : public Ext::Menu::Menu {\n    void Display();\n    uint32_t Layer() { return 0; }\n};\n\nclass ListDialog : public Ext::Menu::Menu {\npublic:\n    ListDialog();\n    ListDialog(name_t);\n    ~ListDialog();\n    \n    void Display();\n    uint32_t Layer() { return 0; }\nprivate:\n    name_t dialog_topic;\n    char* search_string = nullptr;\n};\n\nclass QuestList : public Ext::Menu::Menu {\n    void Display();\n    uint32_t Layer() { return 0; }\n};\n\nclass KitchensinkMenuList : public Ext::Menu::Menu {\n    void Display();\n    uint32_t Layer() { return 0; }\n};\n    \n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_MENU_H"
  },
  {
    "path": "src/extensions/kitchensink/probe.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/probe.h>\n\n#include <render/light.h>\n#include <render/api.h>\n\n#include <framework/ui.h>\n#include <framework/gui.h>\n#include <framework/logging.h>\n\n#include <platform/image.h>\n\nnamespace tram::Ext::Kitchensink {\n\nvoid RegisterRenderEnvironmentMapShortcut() {\n    UI::BindKeyboardKey(UI::KEY_KP_5, []() {\n        auto cell = WorldCell::Find(Render::GetViewPosition());\n        \n        if (!cell) {\n            Log(\"Couldn't find cell for capture!\");\n        }\n        \n        RenderEnvironmentMaps(cell);\n    });\n}\n\nvoid RenderEnvironmentMaps(WorldCell* cell) {\n    // PoolProxy<Render::LightGraph>::GetPool()\n    auto graph = Render::LightGraph::Find(cell->GetName());\n    \n    if (graph->GetStatus() != Resource::READY) {\n        Log(\"Cell graph {} not loaded!\", cell->GetName());\n        return;\n    }\n    \n    Log(\"Capturing cell {}...\", cell->GetName());\n\n    const int map_size = 512;\n    \n    // back up screen parameters\n    auto screen_width = UI::GetScreenWidth();\n    auto screen_height = UI::GetScreenHeight();\n    auto view_fov = Render::GetViewFov();\n    \n    // set up screen for cubemap rendering\n    Render::SetViewFov(90.0f);\n    Render::SetScreenSize(map_size, map_size);\n    \n    GUI::Update();\n    \n    Render::Render(); UI::EndFrame();\n    Render::Render(); UI::EndFrame();\n    \n    // allocate buffers\n    char* front = (char*)malloc(map_size * map_size * 3);   // negative z\n    char* left = (char*)malloc(map_size * map_size * 3);    // negative x\n    char* right = (char*)malloc(map_size * map_size * 3);   // positive x\n    char* back = (char*)malloc(map_size * map_size * 3);    // positive z\n    char* top = (char*)malloc(map_size * map_size * 3);     // positive y\n    char* bottom = (char*)malloc(map_size * map_size * 3);  // negative y\n    \n    char* sphere_front = (char*)malloc(map_size * map_size * 3);\n    char* sphere_back = (char*)malloc(map_size * map_size * 3);\n    \n    char* sphere_output = (char*)malloc(map_size * 2 * map_size * 3);\n    \n    // step through each environment probe position and render the environment map\n    for (auto [id, probe] : graph->GetEnvironmentProbes()) {\n        \n        auto get_coords = [](vec2 coords) {\n            int x = floorf(coords.x * (float)map_size);\n            int y = floorf(coords.y * (float)map_size);\n            if (x < 0) x = 0;\n            if (y < 0) y = 0;\n            if (x >= map_size) x = map_size - 1;\n            if (y >= map_size) y = map_size - 1;\n            return std::pair<int, int>{x, y};\n        };\n        \n        auto get_index = [=](vec2 coords) {\n            auto [x, y] = get_coords(coords);\n            return 3 * (y * map_size + x);\n        };\n        \n        auto get_pixel = [=](char* image, vec2 coords) {\n            auto index = get_index(coords);\n            return std::make_tuple(image[index], image[index + 1], image[index + 2]);\n        };\n        \n        auto set_pixel = [=](char* image, vec2 coords, std::tuple<char, char, char> color) {\n            auto index = get_index(coords);\n            image[index + 0] = std::get<0>(color);\n            image[index + 1] = std::get<1>(color);\n            image[index + 2] = std::get<2>(color);\n        };\n        \n        auto sample_cubemap = [=](vec3 nrm) {\n            char* image = nullptr;\n            float axis; vec2 uv;\n\n            vec3 abs = glm::abs(nrm);\n\n            bool x_positive = nrm.x > 0;\n            bool y_positive = nrm.y > 0;\n            bool z_positive = nrm.z > 0;\n\n            if (z_positive && abs.z >= abs.x && abs.z >= abs.y) {\n                image = front;\n                uv.x = nrm.x;\n                uv.y = nrm.y;\n                axis = abs.z;\n            } else if (!x_positive && abs.x >= abs.y && abs.x >= abs.z) {\n                image = left;\n                uv.x = nrm.z;\n                uv.y = nrm.y;\n                axis = abs.x;\n            }  else if (x_positive && abs.x >= abs.y && abs.x >= abs.z) {\n                image = right;\n                uv.x = -nrm.z;\n                uv.y = nrm.y;\n                axis = abs.x;\n            }  else if (!z_positive && abs.z >= abs.x && abs.z >= abs.y) {\n                image = back;\n                uv.x = -nrm.x;\n                uv.y = nrm.y;\n                axis = abs.z;\n            }  else if (y_positive && abs.y >= abs.x && abs.y >= abs.z) {\n                image = top;\n                uv.x = nrm.x;\n                uv.y = -nrm.z;\n                axis = abs.y;\n            }  else if (!y_positive && abs.y >= abs.x && abs.y >= abs.z) {\n                image = bottom;\n                uv.x = nrm.x;\n                uv.y = nrm.z;\n                axis = abs.y;\n            }\n\n            uv = 0.5f * (uv / axis + 1.0f);\n\n            if (!image) return std::tuple<char, char, char>{uv.y * 255.0f, 0, uv.x * 255.0f};\n\n            return get_pixel(image, uv);\n        };\n        \n        \n        \n        \n        \n        // render the cubemap\n        Render::SetViewPosition(probe);\n        Render::SetViewRotation(vec3(0.0f, 0.0f, 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(front, map_size, map_size);\n        \n        \n        Render::SetViewRotation(vec3(0.0f, 3.1415f / 2.0f, 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(left, map_size, map_size);\n        \n        \n        Render::SetViewRotation(vec3(0.0f, -(3.1415f / 2.0f), 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(right, map_size, map_size);\n        \n        \n        Render::SetViewRotation(vec3(0.0f, 3.1415f, 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(back, map_size, map_size);\n        \n        \n        Render::SetViewRotation(vec3(3.1415f / 2.0f, 0.0f, 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(top, map_size, map_size);\n        \n        \n        Render::SetViewRotation(vec3(-(3.1415f / 2.0f), 0.0f, 0.0f));\n        Render::Render(); UI::EndFrame(); Render::Render(); UI::EndFrame();\n        \n        Render::API::GetScreen(bottom, map_size, map_size);\n        \n        // convert cubemap into double sphere maps\n        for (float u = 0.0f; u < 1.0f; u += 1.0f / (float)map_size) {\n            for (float v = 0.0f; v < 1.0f; v += 1.0f / (float)map_size) {            \n                float x = u * 2.0f - 1.0f;\n                float y = v * 2.0f - 1.0f;\n\n                //float z = 1.0f / sqrtf(1 + x * x + y * y);\n                float z = sqrtf(1 - x * x - y * y);\n\n                auto color_front = sample_cubemap({x, y, z});\n                auto color_back = sample_cubemap({x, y, -z});\n                \n                set_pixel(sphere_front, {u, v}, color_front);\n                set_pixel(sphere_back, {u, v}, color_back);\n            }\n        }\n        \n        // put both sphere maps next to each other in a final single image\n        for (int x = 0; x < map_size; x++) {\n            for (int y = 0; y < map_size; y++) {\n                auto offset_in = (y * map_size + x) * 3;\n                auto offset_o1 = (y * 2 * map_size + x) * 3;\n                auto offset_o2 = (y * 2 * map_size + x + map_size) * 3;\n                \n                sphere_output[offset_o1 + 0] = sphere_front[offset_in + 0];\n                sphere_output[offset_o1 + 1] = sphere_front[offset_in + 1];\n                sphere_output[offset_o1 + 2] = sphere_front[offset_in + 2];\n                sphere_output[offset_o2 + 0] = sphere_back[offset_in + 0];\n                sphere_output[offset_o2 + 1] = sphere_back[offset_in + 1];\n                sphere_output[offset_o2 + 2] = sphere_back[offset_in + 2];\n            }\n        }\n        \n        auto filename = std::string(\"data/textures/environment/\") + (const char*)graph->GetName() + \".\" + std::to_string(id);\n        \n        Platform::SaveImageToDisk((filename + \".png\").c_str(), 2 * map_size, map_size, sphere_output);\n    }\n    \n    // release buffers\n    free(front);\n    free(left);\n    free(right);\n    free(back);\n    free(top);\n    free(bottom);\n    \n    free(sphere_front);\n    free(sphere_back);\n    \n    // reset rendering\n    Render::SetScreenSize(screen_width, screen_height);\n    Render::SetViewFov(view_fov);\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/probe.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H\n\n#include <framework/worldcell.h>\n\nnamespace tram::Ext::Kitchensink {\n\nvoid RegisterRenderEnvironmentMapShortcut();\nvoid RenderEnvironmentMaps(WorldCell*);\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_PROBE_H"
  },
  {
    "path": "src/extensions/kitchensink/quest.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/quest.h>\n\n#include <extensions/kitchensink/inventory.h>\n\n#include <framework/entity.h>\n#include <framework/script.h>\n#include <framework/file.h>\n\n#include <templates/pool.h>\n\n#include <cstring>\n\nusing namespace tram;\nusing namespace tram::Ext::Kitchensink;\ntemplate<> Pool<Quest> PoolProxy<Quest>::pool(\"qyuespool\", 10);\n\nnamespace tram::Ext::Kitchensink {\n\n// added (void*)s to make the compiler stop complaining.\n// it's proabably safe though.\n// might have to look it up, but I think it has something to do with glm using\n// tons of unions internally and the standards people at the C++ store don't\n// really like it, but on most compilers it should be fine\nQuestVariable::QuestVariable(const QuestVariable& other) {\n    memcpy((void*)this, (void*)&other, sizeof(QuestVariable));\n}\n\nQuestVariable& QuestVariable::operator=(const QuestVariable& other) {\n    memcpy((void*)this, (void*)&other, sizeof(QuestVariable));\n    return *this;\n}\n    \nQuestVariable QuestVariable::ValueVariable(name_t name, value_t value) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE;\n    var.name = name;\n    \n    var.value.value = value;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Is(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_IS;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::IsNot(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_IS_NOT;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Greater(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_GREATER;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::GreaterOrEqual(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_GREATER_OR_EQUAL;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Less(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_LESS;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::LessOrEqual(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_VALUE_LESS_OR_EQUAL;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Not(name_t name, name_t quest1, name_t var1) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_CONDITION_NOT;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest1;\n    var.comparison.variable2 = var1;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::And(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_CONDITION_AND;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Or(name_t name, name_t quest1, name_t var1, name_t quest2, value_t var2) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_CONDITION_OR;\n    var.name = name;\n    \n    var.comparison.quest1 = quest1;\n    var.comparison.variable1 = var1;\n    var.comparison.quest2 = quest2;\n    var.comparison.variable2 = var2;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Script(name_t name, name_t script) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_CONDITION_SCRIPT;\n    var.name = name;\n    \n    var.script.name = script;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::Objective(name_t name, name_t value, name_t title, name_t description) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_OBJECTIVE;\n    var.name = name;\n    \n    var.objective.value = value;\n    var.objective.title = title;\n    var.objective.subtitle = description;\n    \n    return var;\n}\n\nQuestVariable QuestVariable::ItemCount(name_t name, name_t entity, name_t item) {\n    QuestVariable var;\n    \n    var.type = QUEST_VAR_ENTITY_ITEM_COUNT;\n    var.name = name;\n    \n    var.item.entity = entity;\n    var.item.item = item;\n    \n    return var;\n}\n\nstatic value_t GetFirst(const QuestVariable* var) {\n    return Quest::Find(var->comparison.quest1)->GetVariable(var->comparison.variable1);\n}\n\nstatic value_t GetSecond(const QuestVariable* var) {\n    if (var->comparison.quest2) {\n        return Quest::Find(var->comparison.quest2)->GetVariable(var->comparison.variable2);\n    } else {\n        return var->comparison.variable2;\n    }\n}\n\nvalue_t QuestVariable::Evaluate() {\n    switch (type) {\n        case QUEST_VAR_INVALID:\n            std::cout << \"Attempting to evaluate invalid variable \" << name << std::endl;\n            return false;\n        case QUEST_VAR_VALUE:\n            return value.value;\n        case QUEST_VAR_OBJECTIVE:\n            return value.value;\n        case QUEST_VAR_VALUE_IS:\n            return GetFirst(this) == GetSecond(this);\n        case QUEST_VAR_VALUE_IS_NOT:\n            return GetFirst(this) != GetSecond(this);\n        case QUEST_VAR_VALUE_GREATER:\n            return GetFirst(this).GetFloat() > GetSecond(this).GetFloat();\n        case QUEST_VAR_VALUE_GREATER_OR_EQUAL:\n            return GetFirst(this).GetFloat() >= GetSecond(this).GetFloat();\n        case QUEST_VAR_VALUE_LESS:\n            return GetFirst(this).GetFloat() < GetSecond(this).GetFloat();\n        case QUEST_VAR_VALUE_LESS_OR_EQUAL:\n            return GetFirst(this).GetFloat() <= GetSecond(this).GetFloat();\n        case QUEST_VAR_CONDITION_NOT:\n            return !GetFirst(this);\n        case QUEST_VAR_CONDITION_AND:\n            return GetFirst(this) && GetSecond(this);\n        case QUEST_VAR_CONDITION_OR:\n            return GetFirst(this) || GetSecond(this);\n        case QUEST_VAR_CONDITION_SCRIPT:\n            return Script::CallFunction(script.name, {});\n        case QUEST_VAR_ENTITY_ITEM_COUNT: {\n            Entity* entity = Entity::Find(item.entity);\n            if (!entity) return false;\n            Inventory* inventory = Inventory::Find(entity);\n            if (!inventory) return false;\n            return inventory->GetItemCount(item.item);\n        }\n        default:\n            assert(false);\n            abort();\n    }\n}\n    \n    \n\n\n\n\nvoid QuestTrigger::SetValue(name_t variable, Value value) {\n    this->value = value;\n    this->variable = variable;\n    this->type = QUEST_TGR_SET_VARIABLE;\n}\n\nvoid QuestTrigger::SetObjective(name_t name, name_t state) {\n    this->variable = name;\n    this->value = state;\n    this->type = QUEST_TGR_SET_OBJECTIVE;\n}\n\nvoid QuestTrigger::SetIncrement(name_t name) {\n    this->variable = name;\n    this->type = QUEST_TGR_INCREMENT;\n}\n    \n    \n    \nValue Quest::GetVariable(name_t name) {\n    for (auto& variable : variables) {\n        if (variable.name == name) {\n            return variable.Evaluate();\n        }\n    }\n    // TODO: write a error message\n    return false;\n}\n\nvoid Quest::SetVariable(name_t name, value_t value) {\n    for (auto& variable : variables) {\n        if (variable.name != name) continue;\n        \n        switch (variable.type) {\n            case QUEST_VAR_VALUE: variable.value.value = value;             break;\n            case QUEST_VAR_OBJECTIVE: variable.objective.value = value;     break;\n            default: variable = QuestVariable::ValueVariable(name, value);\n        }\n        \n        \n        std::cout << \"Set value of variable \" << name << std::endl; \n        return;\n        \n    }\n    \n    std::cout << \"Inserted new variable \" << name << std::endl;\n    \n    QuestVariable new_variable = QuestVariable::ValueVariable(name, value);\n    variables.push_back(new_variable);\n}\n\nvoid Quest::FireTrigger(name_t name) {\n    std::cout << \"finding tirgger\" << std::endl;\n    for (auto& trigger : triggers) {\n        if (trigger.name != name) continue;\n        \n        if (trigger.condition) std::cout << trigger.name << \" has condintuion!\" << std::endl;\n        if (!trigger.condition) std::cout <<  trigger.name << \" dosent condintuion!\" << std::endl;\n        if (trigger.condition) std::cout << \"condniton: \" << trigger.condition << \" = \" << (bool)GetVariable(trigger.condition) << std::endl;\n        \n        // TODO: implement GetBool()\n        if (trigger.condition && !GetVariable(trigger.condition)/*.GetBool()*/) continue;\n        \n        \n        \n        switch (trigger.type) {\n            case QUEST_TGR_SET_VARIABLE:\n                SetVariable(trigger.variable, trigger.value);\n                break;\n            case QUEST_TGR_SET_OBJECTIVE:\n                std::cout << \"Setting objective...\" << std::endl;\n                for (auto& obj : variables) {\n                    if (obj.name != trigger.variable) continue;\n                    obj.objective.value = trigger.value;\n                    std::cout << \"Objective \" << obj.name << \" set to \" << trigger.value.GetInt() << std::endl;\n                }\n                break;\n            case QUEST_TGR_INCREMENT:\n                SetVariable(trigger.variable, GetVariable(trigger.variable).GetInt() + 1);\n                break;\n            default:\n                assert(false);\n        }\n    }\n}\n\nstd::vector<Quest*> Quest::FindAll(bool unknown_also) {\n    std::vector<Quest*> quests;\n    for (auto& quest : PoolProxy<Quest>::GetPool()) {\n        bool is_known = false;\n        for (auto& objective : quest.variables) {\n            if (objective.type != QUEST_VAR_OBJECTIVE) continue;\n            \n            if (objective.objective.value != \"unknown\") is_known = true; \n        }\n        \n        if (is_known || unknown_also) quests.push_back(&quest);\n    }\n    \n    return quests;\n}\n\nclass QuestEntity : public Entity {\npublic:\n    QuestEntity(name_t name) : Entity(name) {}\n    void UpdateParameters() {}\n    void SetParameters() {}\n    void Load() {}\n    void Unload() {}\n    void Serialize() {}\n    name_t GetType() { return \"none\"; }\n    void MessageHandler(Message& msg) {\n        name_t trigger = *(Value*)msg.data;\n        std::cout << name << \" triggered \" << trigger << std::endl;\n        Quest::Find(name)->FireTrigger(trigger);\n    }\n};\n\nQuest* Quest::Find(name_t quest) {\n    assert(quest);\n    \n    for (auto& q : PoolProxy<Quest>::GetPool()) {\n        if (q.name == quest) return &q;\n    }\n    \n    new QuestEntity(quest);\n\n    return PoolProxy<Quest>::New(quest);\n}\n\nvoid Quest::Init() {\n\n}\n\nstatic std::pair<name_t, value_t> LoadVariableSecond(File& file) {\n    name_t quest;\n    value_t value;\n    \n    name_t type = file.read_name();\n    \n    if (type == \"var\") {\n        quest = file.read_name();\n        value = file.read_name();\n    } else if (type == \"bool\") {\n        //value = (bool)file.read_int32();\n        value = file.read_name() == \"true\";\n    } else if (type == \"int\") {\n        value = file.read_int32();\n    } else if (type == \"float\") {\n        value = file.read_float32();\n    } else if (type == \"name\") {\n        value = file.read_name();\n    } else {\n        std::cout << \"unknown variable comparison: \" << type << std::endl;\n        abort();\n    }\n    \n    return {quest, value};\n}\n\nvoid Quest::LoadFromDisk(const char* filename) {\n    char path [100] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".quest\");\n\n    File file (path, File::READ);\n\n    if (!file.is_open()) {\n        std::cout << \"Can't open quest file '\" << path << \"'\" << std::endl;\n        abort();\n    }\n\n    name_t file_type = file.read_name();\n\n    if (file_type != \"QUESTv1\") {\n        std::cout << \"Invalid quest file type \" << path << std::endl;\n        abort();\n    }\n    \n    std::cout << \"Loading: \" << filename << std::endl;\n\n    while (file.is_continue()) {\n        if (auto record = file.read_name(); record != \"quest\") {\n            std::cout << \"unknown quest record: \" << record << std::endl;\n            abort();\n        }\n        \n        name_t quest_name = file.read_name();\n        \n        Quest* quest = Quest::Find(quest_name);\n        \n        while (file.is_continue()) {\n            name_t record_type = file.read_name();\n            \n            if (record_type == \"variable\") {\n                name_t variable_name = file.read_name();\n                name_t variable_type = file.read_name();\n                \n                QuestVariable variable;\n                \n                if (variable_type == \"value\") {\n                    name_t type = file.read_name();\n\n                    if (type == \"bool\") {\n                        variable = QuestVariable::ValueVariable(variable_name, file.read_name() == \"true\");\n                    } else if (type == \"int\") {\n                        variable = QuestVariable::ValueVariable(variable_name, file.read_int32());\n                    } else if (type == \"float\") {\n                        variable = QuestVariable::ValueVariable(variable_name, file.read_float32());\n                    } else if (type == \"name\") {\n                        variable = QuestVariable::ValueVariable(variable_name, file.read_name());\n                    } else {\n                        std::cout << \"unknown variable value type: \" << type << std::endl;\n                        abort();\n                    }\n                } else if (variable_type == \"is\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::Is(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"is-not\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::IsNot(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"greater\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::Greater(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"greater-equal\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::GreaterOrEqual(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"less\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::Less(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"less-equal\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::LessOrEqual(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"not\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    variable = QuestVariable::Not(variable_name, q1, v1);\n                } else if (variable_type == \"and\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::And(variable_name, q1, v1, q2, v2);\n                }  else if (variable_type == \"or\") {\n                    auto q1 = file.read_name();\n                    auto v1 = file.read_name();\n                    auto [q2, v2] = LoadVariableSecond(file);\n                    variable = QuestVariable::Or(variable_name, q1, v1, q2, v2);\n                } else if (variable_type == \"script\") {\n                    auto q1 = file.read_name();\n                    variable = QuestVariable::Script(variable_name, q1);\n                }  else if (variable_type == \"objective\") {\n                    auto title = file.read_name();\n                    auto desc = file.read_name();\n                    auto state = file.read_name();\n                    variable = QuestVariable::Objective(variable_name, state, title, desc);\n                } else {\n                    std::cout << \"unknown variable type: \" << variable_type << std::endl;\n                    abort();\n                }\n                \n                quest->variables.push_back(variable);\n            } else if (record_type == \"trigger\") {\n                name_t trigger_name = file.read_name();\n                name_t condition_quest = file.read_name();\n                name_t condition_name = file.read_name();\n                name_t trigger_type = file.read_name();\n                \n                QuestTrigger trigger;\n                trigger.name = trigger_name;\n                trigger.condition = condition_name;\n                // TODO: implement condition adding for quest also\n                \n                if (trigger_type == \"set-value\") {\n                    auto [variable, value] = LoadVariableSecond(file);\n                    trigger.SetValue(variable, value);\n                } else if (trigger_type == \"set-objective\") {\n                    auto objective = file.read_name();\n                    auto state = file.read_name();\n                    trigger.SetObjective(objective, state);\n                } else if (trigger_type == \"increment\") {\n                    auto variable = file.read_name();\n                    trigger.SetIncrement(variable);\n                } else {\n                    std::cout << \"unknown trigger type: \" << trigger_type << std::endl;\n                    abort();\n                }\n                \n                quest->triggers.push_back(trigger);\n            } else {\n                std::cout << \"unknown quest parameter: \" << record_type << std::endl;\n                abort();\n            }\n            \n        }\n    }\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/quest.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H\n\n#include <framework/value.h>\n\n#include <vector>\n\nnamespace tram::Ext::Kitchensink {\n\nenum quest_t : int {\n    QUEST_VAR_INVALID,\n    \n    QUEST_VAR_VALUE,\n    QUEST_VAR_OBJECTIVE,\n    \n    QUEST_VAR_VALUE_IS,\n    QUEST_VAR_VALUE_IS_NOT,\n    QUEST_VAR_VALUE_GREATER,\n    QUEST_VAR_VALUE_GREATER_OR_EQUAL,\n    QUEST_VAR_VALUE_LESS,\n    QUEST_VAR_VALUE_LESS_OR_EQUAL,\n    QUEST_VAR_CONDITION_NOT,\n    \n    QUEST_VAR_CONDITION_AND,\n    QUEST_VAR_CONDITION_OR,\n    \n    QUEST_VAR_CONDITION_SCRIPT,\n    \n    \n    QUEST_VAR_ENTITY_ITEM_COUNT,\n    \n    \n    QUEST_TGR_SET_VARIABLE,\n    QUEST_TGR_SET_OBJECTIVE,\n    QUEST_TGR_INCREMENT,\n    QUEST_TGR_SHOW_MESSAGE,\n};\n\nstruct QuestVariable {\n    name_t name;\n    quest_t type;\n\n    union {\n        struct {\n            Value value;\n        } value;\n        \n        struct {\n            name_t value;\n            name_t title;\n            name_t subtitle;\n        } objective;\n        \n        struct {\n            name_t name;\n        } script;\n        \n        struct {\n            name_t quest1;\n            name_t variable1;\n            \n            // if quest2 set, then variable2 is name of the quest's variable\n            // if quest is not set, then variable2 is the Value for comparison\n            name_t quest2;\n            value_t variable2;\n            \n        } comparison;\n        \n        struct {\n            name_t entity;\n            name_t item;\n            int count;\n        } item;\n    };\n    \n    static QuestVariable ValueVariable(name_t, value_t);\n    static QuestVariable Objective(name_t, name_t, name_t, name_t);\n    \n    static QuestVariable Is(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable IsNot(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable Greater(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable GreaterOrEqual(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable Less(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable LessOrEqual(name_t, name_t, name_t, name_t, value_t);\n    \n    static QuestVariable And(name_t, name_t, name_t, name_t, value_t);\n    static QuestVariable Or(name_t, name_t, name_t, name_t, value_t);\n    \n    static QuestVariable Not(name_t, name_t, name_t);\n    \n    static QuestVariable Script(name_t, name_t);\n    \n    static QuestVariable ItemCount(name_t, name_t, name_t);\n    \n    QuestVariable() { type = QUEST_VAR_INVALID; }\n    ~QuestVariable() {}\n    \n    QuestVariable(const QuestVariable&);\n    QuestVariable& operator=(const QuestVariable&);\n    //QuestVariable& operator=(QuestVariable& a, const QuestVariable& b);\n    \n    value_t Evaluate();\n};\n\nstruct QuestTrigger {\n    name_t name;\n    quest_t type;\n    \n    name_t condition; // condition, if any, for firing\n    \n    name_t variable; // name for variable which will be set\n    value_t value; // variable name for which will be set\n    \n    void SetValue(name_t variable, Value);\n    void SetObjective(name_t name, name_t state);\n    void SetIncrement(name_t variable);\n};\n\nstruct Quest {\n    Quest(name_t name) : name(name) {}\n    \n    name_t name;\n\n    std::vector<QuestVariable> variables;\n    std::vector<QuestTrigger> triggers;\n    \n    // TODO: add trigger script\n    // if can't find in trigger list, then call script\n    \n    Value GetVariable(name_t);\n    void SetVariable(name_t, Value);\n    \n    void FireTrigger(name_t);\n    \n    static void Init();\n    \n    \n    static std::vector<Quest*> FindAll(bool unknown_also);\n    \n    static void LoadFromDisk(const char* filename);\n    static Quest* Find(name_t quest);\n};\n    \n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_QUEST_H"
  },
  {
    "path": "src/extensions/kitchensink/soundtable.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/kitchensink/soundtable.h>\n\n#include <render/render.h>\n#include <entities/sound.h>\n\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\n#include <config.h>\n\n/*\n * somehow I feel like SoundActions should be name_ts, but at the same time\n * they also make sense as enums\n * \n * we could totally do some kind of a mix between both\n */\n\n/**\n * @class tram::Ext::Kitchensink::SoundTable extensions/kitchensink/soundtable.h <extensions/kitchensink/soundtable.h>\n * \n * Maps actions to sounds.\n * \n * Perfect for storing the aural properties of various materials, or taking the\n * actions that a door or some other container can perform, e.g. opening,\n * closing, trying to open but failing due to being locked, and mappping them to\n * specific sounds.\n */\n\ntemplate <> tram::Pool<tram::Ext::Kitchensink::SoundTable> tram::PoolProxy<tram::Ext::Kitchensink::SoundTable>::pool(\"SoundTable pool\", EXT_KITCHENSINK_SOUNDTABLE_LIMIT);\n\nnamespace tram::Ext::Kitchensink {\n\nstatic Hashmap<SoundTable*> sound_table_list(\"SoundTable name list\", EXT_KITCHENSINK_SOUNDTABLE_LIMIT);\n    \nvoid SoundTable::AddSound(SoundAction type, name_t sound) {\n    this->sounds.push_back({type, sound});\n}\n\nname_t SoundTable::GetSound(SoundAction type) {\n    std::vector<name_t> candidates;\n    \n    for (const auto& entry : this->sounds) {\n        if (entry.first == type) candidates.push_back(entry.second);\n    }\n    \n    if (candidates.empty()) return \"none\";\n    \n    return candidates[rand() % candidates.size()];\n}\n\nvoid SoundTable::PlaySound(SoundAction type) {\n    this->PlaySound(type, Render::GetViewPosition(), 1.0f);\n}\n\nvoid SoundTable::PlaySound(SoundAction type, vec3 position, float volume) {\n    name_t sound = GetSound(type);\n    if (!sound) return;\n    new Sound(sound, volume, position);\n}\n\nSoundTable* SoundTable::Find(name_t name) {\n    SoundTable* sound_table = sound_table_list.Find(name);\n    \n    if (!sound_table) {\n        sound_table = PoolProxy<SoundTable>::New();\n        sound_table_list.Insert(name, sound_table);\n    }\n    \n    return sound_table;\n}\n\n}"
  },
  {
    "path": "src/extensions/kitchensink/soundtable.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H\n#define TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H\n\n#include <vector>\n#include <framework/uid.h>\n#include <framework/math.h>\n\nnamespace tram::Ext::Kitchensink {\n\nenum SoundAction {\n    SOUND_OPEN,\n    SOUND_CLOSE,\n    SOUND_LOCKED,\n    SOUND_END_OPEN,\n    SOUND_END_CLOSE,\n    \n    SOUND_WALK_ON,\n    SOUND_JUMP_ON,\n    SOUND_HIT,\n};\n\nclass SoundTable {\npublic:\n    void AddSound(SoundAction type, name_t sound);\n    name_t GetSound(SoundAction type);\n    void PlaySound(SoundAction type);\n    void PlaySound(SoundAction type, vec3 position, float volume);\n    \n    static SoundTable* Find(name_t name);\nprivate:\n    std::vector<std::pair<SoundAction, name_t>> sounds;\n};\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_KITCHENSINK_SOUNDTABLE_H"
  },
  {
    "path": "src/extensions/menu/debug.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/menu/debug.h>\n\n#include <render/scene.h>\n#include <physics/api.h>\n#include <render/api.h>\n#include <components/render.h>\n#include <components/audio.h>\n#include <components/animation.h>\n#include <components/controller.h>\n#include <components/light.h>\n#include <framework/entity.h>\n#include <framework/logging.h>\n#include <framework/settings.h>\n#include <framework/worldcell.h>\n#include <framework/stats.h>\n#include <framework/script.h>\n\n#include <cstring>\n#include <deque>\n\nnamespace tram::Ext::Menu {\n\nstd::deque<std::string> console_logs;\n    \nstruct Intercept {\n    virtual void Display() = 0;\n    virtual ~Intercept() = default;\n    \n    unsigned int time;\n};\nstd::vector<Intercept*> intercepts;\n\nstruct MessageIntercept : Intercept {\n    std::string receiver;\n    std::string sender;\n    std::string type;\n    std::string value;\n    \n    void Display() {\n        GUI::Text(\"MSG\");\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(type.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        GUI::Text(sender.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        GUI::Text(receiver.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        GUI::Text(value.c_str());\n        \n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n\n        /*GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(type.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 90);\n        \n        GUI::Text(sender.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 50);\n        \n        GUI::Text(receiver.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 50);\n        \n        GUI::Text(value.c_str());\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();*/\n    }\n};\n\nstruct EventIntercept : Intercept {\n    std::string emitter;\n    std::string type;\n    std::string subtype;\n    std::string value;\n    \n    void Display() {\n        \n        GUI::Text(\"EVT\");\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(type.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        GUI::Text(emitter.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        //GUI::Text(receiver.c_str());\n        GUI::Text(subtype.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 80);\n        \n        GUI::Text(value.c_str());\n        \n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        \n        //GUI::Text((std::string(\"event \") + std::to_string(time)).c_str());\n        \n        /*GUI::Text(\"EVT\");\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(type.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 90);\n        \n        GUI::Text(subtype.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(emitter.c_str());\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 70);\n        \n        GUI::Text(value.c_str());\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();*/\n        \n        \n    }\n};\n\nstruct LogIntercept : Intercept {\n    std::string message;\n    \n    void Display() {\n        GUI::Text(\"LOG\");\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n        \n        GUI::Text(message.c_str());\n        GUI::PopFrame();\n    }\n};\n\n\n\nvoid InitCallbacks() {\n    Message::SetInterceptCallback([](const Message& msg) {\n        MessageIntercept* intercept = new MessageIntercept;\n        \n        intercept->type = (std::string)Message::GetName(msg.type);\n        intercept->value = std::to_string((long long)msg.data);\n        \n        switch (msg.type) {\n                case Message::SELECT:\n                    intercept->time = GetTick();\n                    break;\n                default:\n                    intercept->time = GetTick() + 60;\n            }\n        \n        if (!msg.sender) {\n            intercept->sender = \"GOD\";\n        } else if (Entity* sender = Entity::Find(msg.sender); sender) {\n            if (sender->GetName()) {\n                intercept->sender = (std::string)sender->GetName();\n            } else {\n                intercept->sender = sender->GetID();\n            }\n        } else {\n            intercept->sender = \"DEAD\";\n        }\n        \n        if (Entity* receiver = Entity::Find(msg.receiver); receiver) {\n            if (receiver->GetName()) {\n                intercept->receiver = (std::string)receiver->GetName();\n            } else {\n                intercept->receiver = receiver->GetID();\n            }\n        } else {\n            intercept->receiver = \"DEAD\";\n        }\n        \n        intercepts.push_back(intercept);\n    });\n    \n    SetDisplayLogCallback([](int time, const char* text) {\n        LogIntercept* intercept = new LogIntercept;\n        \n        intercept->message = text;\n        intercept->time = time;\n        \n        intercepts.push_back(intercept);\n    });\n    \n    SetConsoleLogCallback([](int time, const char* text) {\n        if (console_logs.size() > 10) console_logs.pop_back();\n        console_logs.push_front(text);\n    });\n}\n\nvoid UpdateCallbacks() {\n    std::vector<Intercept*> filtered;\n    for (auto intercept : intercepts) {\n        bool expired = GetTick() > intercept->time;\n        \n        if (expired) {\n            delete intercept;\n        } else {\n            filtered.push_back(intercept);\n        }\n    }\n    std::swap(filtered, intercepts);\n    \n    static event_t last_callback = 0;\n    for (event_t i = last_callback; i < Event::GetLast(); i++) {\n        last_callback = Event::GetLast();\n        Event::AddListener(i, [](Event& event) {\n            EventIntercept* intercept = new EventIntercept;\n        \n            intercept->subtype = std::to_string(event.subtype);\n            intercept->type = (std::string)Event::GetName(event.type);\n            intercept->value = std::to_string((long long)event.data);\n            \n            switch (event.type) {\n                case Event::KEYPRESS:\n                case Event::TICK:\n                case Event::FRAME:\n                case Event::CURSORPOS:\n                case Event::LOOK_AT:\n                case Event::SELECTED:\n                    intercept->time = GetTick();\n                    break;\n                default:\n                    intercept->time = GetTick() + 60;\n            }\n            \n            \n            if (!event.poster) {\n                intercept->emitter = \"GOD\";\n            } else if (Entity* emitter = Entity::Find(event.poster); emitter) {\n                if (emitter->GetName()) {\n                    intercept->emitter = (std::string)emitter->GetName();\n                } else {\n                    intercept->emitter = emitter->GetID();\n                }\n            } else {\n                intercept->emitter = \"DEAD\";\n            }\n            \n            intercepts.push_back(intercept);\n        });\n    }\n}\n\nbool DebugMenu::intercept_enabled = false;\nbool DebugMenu::statistics_enabled = false;\nInterceptMenu* DebugMenu::intercept_menu = nullptr;\nStatisticsMenu* DebugMenu::statistics_menu = nullptr;\n\nvoid DebugMenu::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n    \n        if (GUI::Button(\"Worldcells\")) {\n            std::vector<std::string> cells;\n            for (auto& cell : PoolProxy<WorldCell>::GetPool()) {\n                cells.push_back(cell.GetName());\n            }\n            \n            auto props = new WorldCellProperties;\n            auto picks = new ListSelection([=, this](auto p){props->SetPicked(&PoolProxy<WorldCell>::GetPool()[p]);}, cells);\n            \n            Menu::Push(props);\n            Menu::Push(picks);\n        }\n        \n        if (GUI::Button(\"Select entity\")) {\n            auto props = new EntityProperties();\n            auto picks = new EntityPicker([=](id_t picked){props->SetPicked(picked);});\n            \n            Menu::Push(props);\n            Menu::Push(picks);\n        }\n        \n        if (GUI::Button(\"Emit event\")) {\n            auto emit = new EventEmit;\n            \n            Menu::Push(emit);\n        }\n        \n        if (GUI::Button(\"Options\"))  {\n            auto options = new Options;\n            \n            Menu::Push(options);\n        }\n        \n        if (GUI::Button(\"Console\"))  {\n            auto console = new Console;\n            \n            Menu::Push(console);\n        }\n    \n        if (GUI::CheckBox(intercept_enabled, \"Intercept \")) {\n            if (intercept_enabled) {\n                intercept_menu = new InterceptMenu;\n                if (statistics_menu) intercept_menu->SetOffset(24);\n                Menu::Add(intercept_menu);\n            } else {\n                Menu::Remove(intercept_menu);\n                intercept_menu = nullptr;\n            }\n        }\n        \n        if (GUI::CheckBox(statistics_enabled, \"Statistics \")) {\n            if (statistics_enabled) {\n                statistics_menu = new StatisticsMenu;\n                if (intercept_menu) intercept_menu->SetOffset(24);\n                Menu::Add(statistics_menu);\n            } else {\n                Menu::Remove(statistics_menu);\n                if (intercept_menu) intercept_menu->SetOffset(0);\n                statistics_menu = nullptr;\n            }\n        }\n        \n        static bool draw_debug = false;\n        if (GUI::CheckBox(draw_debug, \"Physics \")) {\n            Physics::API::DrawDebug(draw_debug);\n        }\n        \n        static bool noclip = false;\n        if (GUI::CheckBox(noclip, \"Noclip \")) {\n            Message msg;\n            msg.sender = 0;\n            msg.receiver = Entity::Find(\"player\")->GetID();\n            msg.type = noclip ? Message::SET_FLAG_ON : Message::SET_FLAG_OFF;\n            msg.data_value = Message::AllocateData<Value>(UID(\"noclip\"));\n            Message::Send(msg);\n        }\n        \n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid EntityProperties::SetPicked(id_t entity) {\n    this->entity = entity;\n}\n\nvoid EntityProperties::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        if (Entity* ptr = Entity::Find(entity); !ptr) {\n            GUI::Text(\"No entity available.\");\n        } else {\n            GUI::Text(\"Entity ID \");\n            GUI::TextBox(std::to_string(ptr->GetID()).c_str(), 50);\n            GUI::Text(\" Name \");\n            GUI::TextBox(ptr->GetName(), 100);\n            GUI::Text(\" Distance \");\n            float dist = glm::distance(Render::GetViewPosition(), ptr->GetLocation());\n            int dist0 = dist;\n            int dist1 = dist*10 - dist0*10;\n            GUI::TextBox((std::to_string(dist0) + \".\" + std::to_string(dist1)).c_str(), 50);\n            GUI::Text(\" Type \");\n            GUI::TextBox(ptr->GetType(), 75);\n            \n            if (GUI::Button(\"Load\")) {\n                ptr->Load();\n            }\n            \n            if (GUI::Button(\"Unload\")) {\n                ptr->Unload();\n            }\n            \n            if (GUI::Button(\"Signals\")) {\n                auto signals = new SignalMenu;\n                signals->SetEntity(ptr->GetID());\n                Menu::Push(signals);\n            }\n            \n            if (GUI::Button(\"Message\")) {\n                auto send = new MessageSend;\n                send->SetEntity(ptr->GetID());\n                Menu::Push(send);\n                //auto props = new MessageTypeSelection([](auto){});\n                //Menu::Push(props);\n            }\n        }\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nEntityPicker::EntityPicker(std::function<void(id_t)> callback) {\n    this->callback = callback;\n}\n\nvoid EntityPicker::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        float x = UI::PollKeyboardAxis(UI::KEY_MOUSE_X);\n        float y = UI::PollKeyboardAxis(UI::KEY_MOUSE_Y);\n        \n        vec3 far_point = Render::ProjectInverse({x, y, 0.0f});\n        vec3 near_point = Render::ProjectInverse({x, y, 1000.0f});\n        \n        vec3 look_direction = glm::normalize(far_point - near_point);\n        vec3 look_position = near_point;\n        \n        auto res = Render::AABB::FindNearestFromRay(look_position, look_direction, -1);\n        \n        if (res.data) {\n            Render::AddLine(res.triangle.point1, res.triangle.point2, Render::COLOR_WHITE);\n            Render::AddLine(res.triangle.point2, res.triangle.point3, Render::COLOR_WHITE);\n            Render::AddLine(res.triangle.point3, res.triangle.point1, Render::COLOR_WHITE);\n            \n            RenderComponent* comp = (RenderComponent*)res.data;\n            \n            if (comp->GetParent()) {\n                std::string text = \"Picked: \";\n                text += std::to_string(comp->GetParent()->GetID());\n                text += \" | \";\n                text += (const char*)comp->GetParent()->GetName();\n                text += \" (\";\n                text += std::to_string(res.intersection.x);\n                text += \", \";\n                text += std::to_string(res.intersection.y);\n                text += \", \";\n                text += std::to_string(res.intersection.z);\n                text += \")\";\n                GUI::Text(text.c_str());\n                \n                if (GUI::ClickHandled()) {\n                    callback(comp->GetParent()->GetID());\n                    Menu::Pop();\n                    return;\n                }\n            } else {\n                GUI::Text(\"No entity found for RenderComponent.\");\n            }\n            \n            UI::SetCursor(UI::CURSOR_CLICK);\n            \n        } else {\n            GUI::Text(\"No pick available.\");\n            UI::SetCursor(UI::CURSOR_DEFAULT);\n        }\n        \n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nListSelection::ListSelection(std::function<void(uint32_t)> callback, std::vector<std::string> list) {\n    this->callback = callback;\n    this->list = list;\n}\n\nvoid ListSelection::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34 * 2);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT, 200);\n    \n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        \n        uint32_t selected = 255;\n        for (uint32_t i = 0; i < list.size(); i++) {\n            if (GUI::Button(list[i].c_str())) {\n                selected = i;\n            }\n            \n            GUI::NewLine();\n        }\n        \n        if (selected != 255) {\n            callback(selected);\n        \n            Menu::Pop();\n        }\n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid MessageSend::SetEntity(id_t entity) {\n    this->entity_id = entity;\n}\n\nvoid MessageSend::SetMessageType(uint32_t type) {\n    this->message_type = type;\n}\n\nvoid MessageSend::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        if (Entity* entity = Entity::Find(entity_id); !entity) {\n            GUI::Text(\"No entity available.\");\n        } else {\n            // Send [type] to [name] parameter [none|int|uint|float] [entry] .. send\n            GUI::Text(\"Send \");\n            GUI::TextBox(Message::GetName(message_type), 100);\n            if (GUI::Button(\"(?)\")) {\n                std::vector<std::string> messages;\n                for (message_t i = 0; i < Message::GetLast(); i++) {\n                    messages.push_back(Message::GetName(i));\n                }\n                auto select = new ListSelection([=, this](auto p){this->SetMessageType(p);}, messages);\n                Menu::Push(select);\n            }\n            GUI::Text(\" to \");\n            if (entity->GetName()) {\n                GUI::TextBox(entity->GetName(), 100);\n            } else {\n                GUI::TextBox(std::to_string(entity->GetID()).c_str(), 100);\n            }\n            GUI::Text(\" with a parameter of \");\n            GUI::RadioButton(0, parameter_type, \"none\");\n            GUI::RadioButton(1, parameter_type, \"int\");\n            GUI::RadioButton(2, parameter_type, \"name\");\n            GUI::RadioButton(3, parameter_type, \"float\");\n            GUI::TextBox(parameter_string, 32, parameter_type != 0, 100);\n            if (GUI::Button(\"Send!\")) {\n                Message msg;\n                msg.type = message_type;\n                msg.sender = 0;\n                msg.receiver = entity->GetID();\n                switch (parameter_type) {\n                    case 0:\n                        msg.data_value = Event::AllocateData<Value>((int32_t)atoi(parameter_string));\n                        break;\n                    case 1:\n                        msg.data_value = Event::AllocateData<Value>((float)atof(parameter_string));\n                        break;\n                    case 2:\n                        msg.data_value = Event::AllocateData<Value>((name_t)parameter_string);\n                        break;\n                    default:\n                        msg.data = nullptr;\n                }\n                Message::Send(msg);\n            }\n        }\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid InterceptMenu::Display() {\n    int lines = 1;\n    int total_lines = intercepts.size();\n    if (total_lines > 20) total_lines = 20;\n    \n    GUI::PushFrameRelative(GUI::FRAME_BOTTOM_INV, offset);\n    GUI::PushFrameRelative(GUI::FRAME_BOTTOM, total_lines * 16 + 10);\n    GUI::PushFrameRelative(GUI::FRAME_RIGHT, 400);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        for (auto intercept : intercepts) {\n            GUI::PushFrameRelative(GUI::FRAME_BOTTOM, lines * 16);\n                intercept->Display();\n            GUI::PopFrame();\n            \n            if (++lines > 20) break;\n        }\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid WorldCellProperties::SetPicked(WorldCell* cell) {\n    this->cell = cell;\n}\n\nvoid WorldCellProperties::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        if (!cell) {\n            GUI::Text(\"No cell available.\");\n        } else {\n            bool loaded = cell->IsLoaded();\n            bool interior = cell->IsInterior();\n            bool interior_lighting = cell->HasInteriorLighting();\n            bool debug_draw = cell->IsDebugDraw();\n            \n            GUI::Text(\"Worldcell \");\n            GUI::TextBox(cell->GetName(), 100);\n            GUI::Text(\" Entities \");\n            GUI::TextBox(std::to_string(cell->GetEntityCount()).c_str(), 50);\n            if (GUI::Button(\"(view)\")) {\n                std::vector<std::string> entities;\n                for (auto entity : cell->GetEntities()) {\n                    entities.push_back((std::string)entity->GetType() + \" | \" + (std::string)entity->GetName());\n                }\n                \n                // possible error here:\n                // worldcell entity list might change between entity list name\n                // generation and callback\n                // TODO: fix\n                // possible fix -> instead of ListSelection just having a single\n                // vector of strings, it would also have a second vector with\n                // data values\n                auto props = new EntityProperties;\n                auto picks = new ListSelection([=, this](uint32_t p){props->SetPicked(cell->GetEntities()[p]->GetID());}, entities);\n                \n                Menu::Push(props);\n                Menu::Push(picks);\n            }\n            if (GUI::CheckBox(loaded, \"Is loaded \")) {\n                if (loaded) {\n                    cell->Load();\n                } else {\n                    cell->Unload();\n                }\n            }\n            if (GUI::CheckBox(interior, \"Is interior \")) {\n                cell->SetInterior(interior);\n            }\n            if (GUI::CheckBox(interior_lighting, \"Has interior lighting \")) {\n                cell->SetInteriorLights(interior_lighting);\n            }\n            if (GUI::CheckBox(interior, \"Debug draw \")) {\n                cell->SetDebugDraw(debug_draw);\n            }\n        }\n        /*if (Entity* ptr = Entity::Find(entity); !ptr) {\n            GUI::Text(\"No entity available.\");\n        } else {\n            GUI::Text(\"Entity ID \");\n            GUI::TextBox(std::to_string(ptr->GetID()).c_str(), 50);\n            GUI::Text(\" Name \");\n            GUI::TextBox(ptr->GetName(), 100);\n            GUI::Text(\" Distance \");\n            float dist = glm::distance(Render::GetViewPosition(), ptr->GetLocation());\n            int dist0 = dist;\n            int dist1 = dist*10 - dist0*10;\n            GUI::TextBox((std::to_string(dist0) + \".\" + std::to_string(dist1)).c_str(), 50);\n            \n            if (GUI::Button(\"Load\")) {\n                ptr->Load();\n            }\n            \n            if (GUI::Button(\"Unload\")) {\n                ptr->Unload();\n            }\n                        \n            if (GUI::Button(\"Message\")) {\n                auto send = new MessageSend;\n                send->SetEntity(ptr->GetID());\n                Menu::Push(send);\n                //auto props = new MessageTypeSelection([](auto){});\n                //Menu::Push(props);\n            }\n        }*/\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid StatisticsMenu::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_BOTTOM, 24);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 2);\n\n        GUI::PushFrameRelative(GUI::FRAME_LEFT, 100);\n        GUI::FillFrame(GUI::WIDGET_REVERSE_WINDOW);\n        GUI::PushFrameRelative(GUI::FRAME_INSET, 2);\n            GUI::Text(\"Tramway SDK\");\n        GUI::PopFrame();\n        GUI::PopFrame();\n\n        char render_str1[16];\n        char render_str2[24];\n        char render_str3[16];\n        char physics_str[24];\n        \n        uint32_t vram_kb = Stats::GetStat(Stats::RESOURCE_VRAM) / 1024;\n        uint32_t vram_mb_w = vram_kb / 1000;\n        uint32_t vram_mb_f = vram_kb % 1000;\n        \n        snprintf(render_str1, 16, \"Render %.2fms\", 1000 * Stats::GetStatAverage(System::RENDER));\n        snprintf(render_str2, 24, \"VRAM %i %i KB\", vram_mb_w, vram_mb_f);\n        snprintf(render_str3, 16, \"Draw %i\", (int)Stats::GetStat(Stats::RESOURCE_DRAWCALL));\n        snprintf(physics_str, 24, \"Physics %.2fms\", 1000 * Stats::GetStatAverage(System::PHYSICS));\n\n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 100);\n        GUI::PushFrameRelative(GUI::FRAME_LEFT, 275);\n        GUI::FillFrame(GUI::WIDGET_REVERSE_WINDOW);\n        GUI::PushFrameRelative(GUI::FRAME_INSET, 2);\n            GUI::Text(render_str1);\n            \n            \n            GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 105);\n                GUI::Text(render_str3);\n            GUI::PopFrame();\n            \n            GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 150);\n                GUI::Text(render_str2, GUI::TEXT_RIGHT);\n            GUI::PopFrame();\n            \n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n        \n        GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 375);\n        GUI::PushFrameRelative(GUI::FRAME_LEFT, 100);\n        GUI::FillFrame(GUI::WIDGET_REVERSE_WINDOW);\n        GUI::PushFrameRelative(GUI::FRAME_INSET, 2);\n            GUI::Text(physics_str);\n        GUI::PopFrame();\n        GUI::PopFrame();\n        GUI::PopFrame();\n\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nvoid EventEmit::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        // Emit [event] subtype [type] with parameter of ''\n        GUI::Text(\"Emit \");\n        GUI::TextBox(Event::GetName(event_type), 100);\n        if (GUI::Button(\"(?)\")) {\n            std::vector<std::string> events;\n            for (message_t i = 0; i < Event::GetLast(); i++) {\n                events.push_back(Event::GetName(i));\n            }\n            auto select = new ListSelection([=, this](auto p){this->SetEventType(p);}, events);\n            Menu::Push(select);\n        }\n        GUI::Text(\" subtype \");\n        if (GUI::TextBox(subtype_string, 8, true, 100)) {\n            if (strlen(subtype_string)) {\n                subtype = atoi(subtype_string);\n                snprintf(subtype_string, 8, \"%i\", subtype);\n            }\n        }\n        GUI::Text(\" with a parameter of \");\n        GUI::RadioButton(0, parameter_type, \"none\");\n        GUI::RadioButton(1, parameter_type, \"int\");\n        GUI::RadioButton(2, parameter_type, \"name\");\n        GUI::RadioButton(3, parameter_type, \"float\");\n        GUI::TextBox(parameter_string, 32, parameter_type != 0, 100);\n        if (GUI::Button(\"Emit!\")) {\n            Event evt;\n            evt.type = event_type;\n            evt.subtype = subtype;\n            evt.poster = 0;\n            \n            switch (parameter_type) {\n                case 0:\n                    evt.data_value = Event::AllocateData<Value>((int32_t)atoi(parameter_string));\n                    break;\n                case 1:\n                    evt.data_value = Event::AllocateData<Value>((float)atof(parameter_string));\n                    break;\n                case 2:\n                    evt.data_value = Event::AllocateData<Value>((name_t)parameter_string);\n                    break;\n                default:\n                    evt.data = nullptr;\n            }\n            Event::Post(evt);\n        }\n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();    \n    \n}\n\nvoid SignalMenu::Display() {\n    Entity* entity = Entity::Find(entity_id);\n    SignalTable* signals = entity ? entity->GetSignalTable() : nullptr;\n    \n    uint32_t signal_offset = signals ? 10 + 16 * signals->signal_count : 24;\n    \n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34 * 2);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT, 500);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, signal_offset);\n    \n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        \n        if (!entity)  {\n            GUI::Text(\"Entity unavailable.\");\n        } else if (!signals) {\n            GUI::Text(\"Entity has no signals.\");\n        } else {\n            for (uint32_t i = 0; i < signals->signal_count; i++) {\n                Signal& signal = signals->signals[i];\n                \n                GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 24 * i);\n                \n                    \n                \n                    GUI::Text(Signal::GetName(signal.type));\n                    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 100);\n                    \n                    GUI::Text(Message::GetName(signal.message_type));\n                    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 100);\n                    \n                    GUI::Text(std::to_string(signal.delay).c_str());\n                    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 60);\n                    \n                    GUI::Text(std::to_string(signal.limit).c_str());\n                    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 40);\n                    \n                    GUI::Text(signal.receiver);\n                    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 100);\n                    \n                    if (Value* data = (Value*)signal.data; data) {\n                        switch (data->GetType()) {\n                            case TYPE_INT32:\n                                GUI::Text(std::to_string(data->GetInt()).c_str());\n                                break;\n                            case TYPE_FLOAT32:\n                                GUI::Text(std::to_string(data->GetFloat()).c_str());\n                                break;\n                            case TYPE_NAME:\n                                GUI::Text((name_t)*data);\n                                break;\n                            default:\n                                break;\n                        }\n                    }\n                    \n                    GUI::PopFrame();\n                    GUI::PopFrame();\n                    GUI::PopFrame();\n                    GUI::PopFrame();\n                    GUI::PopFrame();\n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                \n                GUI::PopFrame();\n            }\n        }\n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\n\n\nvoid Options::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n\n        bool renderer_debug = Render::API::IsDebugMode();\n        \n        bool audio_debug = AudioComponent::IsDebugInfoDraw();\n        bool sound_debug = AudioComponent::IsSourceDraw();\n        \n        bool anim_debug = AnimationComponent::IsDebugInfoDraw();\n        bool light_debug = LightComponent::IsLightDraw();\n        bool controller_debug = ControllerComponent::IsDebugInfoDraw();\n        \n        GUI::CheckBox(renderer_debug, \"Renderer Debug \");\n        GUI::CheckBox(audio_debug, \"Audio Debug \");\n        GUI::CheckBox(sound_debug, \"Draw AudioComponent \");\n        GUI::CheckBox(anim_debug, \"Animation Debug \");\n        GUI::CheckBox(light_debug, \"Light Debug \");\n        GUI::CheckBox(controller_debug, \"Controller Debug \");\n        \n        \n        Render::API::SetDebugMode(renderer_debug);\n        AudioComponent::SetDebugInfoDraw(audio_debug);\n        AudioComponent::SetSourceDraw(sound_debug);\n        AnimationComponent::SetDebugInfoDraw(anim_debug);\n        LightComponent::SetLightDraw(light_debug);\n        ControllerComponent::SetDebugInfoDraw(controller_debug);\n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\nConsole::Console() {\n    text = new char[250];\n    *text = '\\0';\n}\n\nConsole::~Console() {\n    delete[] text;\n}\n\nvoid Console::Display() {\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 34);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, 34);\n    GUI::FillFrame(GUI::WIDGET_BUTTON);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        \n        static std::vector<std::string> console_history;\n        \n        static bool last_enter = false;\n        static bool last_up = false;\n        static bool last_down = false;\n        \n        const bool this_enter = !last_enter && UI::PollKeyboardKey(UI::KEY_ENTER);\n        const bool this_up = !last_up && UI::PollKeyboardKey(UI::KEY_UP);\n        const bool this_down = !last_down && UI::PollKeyboardKey(UI::KEY_DOWN);\n    \n        last_enter = UI::PollKeyboardKey(UI::KEY_ENTER);\n        last_up = UI::PollKeyboardKey(UI::KEY_UP);\n        last_down = UI::PollKeyboardKey(UI::KEY_DOWN);\n    \n        if (GUI::TextBox(text, 250, true, 400)) {\n            GUI::SetSelectedText(text);\n        };\n\n        if (this_enter) {\n            history_cursor = -1;\n            console_history.push_back(text);\n            \n            value_t value = Script::Evaluate(text);\n            \n            //std::cout << TypeToString(value.GetType()) << \" : \" << value.ToString() <<std::endl;\n            Log(\"{} : {}\", TypeToString(value.GetType()), value.ToString());\n            \n            *text = '\\0';\n        }\n        \n        if (this_up) {\n            if (history_cursor == -1 && console_history.size()) {\n                history_cursor = (int)console_history.size() - 1;\n            } else if (history_cursor > 0) {\n                history_cursor--;\n            }\n            \n            if (history_cursor != -1) strcpy(text, console_history[history_cursor].data());\n        }\n        \n        if (this_down) {\n            if (history_cursor != -1) {\n                history_cursor++;\n                \n                if (history_cursor >= (int)console_history.size()) {\n                    history_cursor = -1;\n                    *text = '\\0';\n                }\n            }\n            \n            if (history_cursor != -1) strcpy(text, console_history[history_cursor].data());\n        }\n            \n        \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    \n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 68);\n    GUI::SetColor(Render::COLOR_BLACK);\n    for (auto& log : console_logs) {\n        GUI::Text(log.c_str());\n        GUI::NewLine();\n    }\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 2);\n        GUI::SetColor(Render::COLOR_WHITE);\n        for (auto& log : console_logs) {\n            GUI::Text(log.c_str());\n            GUI::NewLine();\n        }\n        GUI::SetColor(Render::COLOR_BLACK);\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\n}"
  },
  {
    "path": "src/extensions/menu/debug.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_MENU_DEBUG_H\n#define TRAM_SDK_EXTENSIONS_MENU_DEBUG_H\n\n#include <extensions/menu/menu.h>\n\n#include <functional>\n\nnamespace tram {\n    class WorldCell;\n}\n\nnamespace tram::Ext::Menu {\n\nvoid InitCallbacks();\nvoid UpdateCallbacks();\n\nclass InterceptMenu;\nclass StatisticsMenu;\n\nclass DebugMenu : public Menu {\npublic:\n    void Display();\n    uint32_t Layer() { return 0; }\n    ~DebugMenu() = default;\nprotected:\n    static bool intercept_enabled;\n    static bool statistics_enabled;\n    static InterceptMenu* intercept_menu;\n    static StatisticsMenu* statistics_menu;\n};\n\nclass EntityProperties : public Menu {\npublic:\n    void SetPicked(id_t entity);\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~EntityProperties() = default;\nprotected:\n    id_t entity = 0;\n};\n\nclass EntityPicker : public Menu {\npublic:\n    EntityPicker(std::function<void(id_t)> callback);\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~EntityPicker() = default;\nprotected:\n    std::function<void(id_t)> callback;\n};\n\nclass ListSelection : public Menu {\npublic:\n    ListSelection(std::function<void(uint32_t)> callback, std::vector<std::string> list);\n    uint32_t Layer() { return 2; }\n    void Display();\n    ~ListSelection() = default;\nprotected:\n    std::function<void(uint32_t)> callback;\n    std::vector<std::string> list;\n};\n\nclass MessageSend : public Menu {\npublic:\n    void SetEntity(id_t entity);\n    void SetMessageType(uint32_t type);\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~MessageSend() = default;\nprotected:\n    uint32_t parameter_type = 0;\n    id_t entity_id = 0;\n    uint32_t message_type = 0;\n    char parameter_string[32] = \"\";\n};\n\nclass InterceptMenu : public Menu {\npublic:\n    void Display();\n    uint32_t Layer() { return 0; }\n    inline void SetOffset(uint32_t offset) { this->offset = offset; } \n    ~InterceptMenu() = default;\nprotected:\n    uint32_t offset = 0;\n};\n\nclass WorldCellProperties : public Menu {\npublic:\n    void SetPicked(WorldCell* cell);\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~WorldCellProperties() = default;\nprotected:\n    WorldCell* cell = nullptr;\n};\n\nclass StatisticsMenu : public Menu {\npublic:\n    void Display();\n    uint32_t Layer() { return 0; }\n    ~StatisticsMenu() = default;\n};\n\nclass EventEmit : public Menu {\npublic:\n    void SetEventType(uint32_t type) { event_type = type; }\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~EventEmit() = default;\nprotected:\n    uint16_t subtype = 0;\n    uint32_t parameter_type = 0;\n    uint32_t event_type = 0;\n    char subtype_string[8] = \"0\";\n    char parameter_string[32] = \"\";\n};\n\nclass SignalMenu : public Menu {\npublic:\n    void SetEntity(id_t entity) { entity_id = entity; }\n    void Display();\n    uint32_t Layer() { return 2; }\n    ~SignalMenu() = default;\nprotected:\n    id_t entity_id = 0;\n};\n\nclass Options : public Menu {\npublic:\n    Options() = default;\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~Options() = default;\n};\n\nclass Console : public Menu {\npublic:\n    Console();\n    uint32_t Layer() { return 1; }\n    void Display();\n    ~Console();\nprotected:\n    char* text = nullptr;\n    int history_cursor = -1;\n};\n\n}\n\n#endif"
  },
  {
    "path": "src/extensions/menu/menu.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/gui.h>\n#include <framework/stats.h>\n#include <framework/worldcell.h>\n#include <framework/system.h>\n\n#include <physics/physics.h>\n#include <render/render.h>\n#include <render/sprite.h>\n#include <render/material.h>\n\n#include <templates/stack.h>\n\n#include <extensions/menu/menu.h>\n#include <extensions/menu/debug.h>\n#include <extensions/menu/system.h>\n\n#include <algorithm>\n\n/**\n * @namespace tram::Ext::Menu\n * \n * Menu framework.\n * \n * Built on top of the GUI system, this menu framework allows the creation of\n * menus. \n * It also has some pre-built menus, like the debug menu and the system menu.\n */\n\n/**\n * @namespace tram::Ext::Menu::Menu\n * \n * Menu base interface class.\n * \n * To implement this interface, implement the Display() method. This method will\n * be called once per frame and needs to draw the menu.\n * Then implement the Layer() method. This method needs to return the layer\n * index of the menu. \n * \n * The menu framework will draw only the topmost menu in the menu stack with any\n * given index.\n * \n * When you are ready to deploy a menu, create it using `new` and Push() it on\n * the stack. After that, you can forget it. When it gets popped from the stack,\n * it will be `delete`d for you.\n */\n\nusing namespace tram::GUI;\nusing namespace tram::Render;\n\nnamespace tram::Ext::Menu {\n\n// TODO: switch to invalid font initialization (zero is valid)\nfont_t FONT_WIDGETS = 0;    //< Font that contains sprites for GUI widgets.\nfont_t FONT_TEXT = 0;       //< Basic sans-serif font.\nfont_t FONT_TEXT_BOLD = 0;  //< Basic bold sans-serif font.\nfont_t FONT_HEADER = 0;     //< Font that contains some image headers.\nfont_t FONT_PIXELART = 0;   //< Large pixel-art font.\n\nuint32_t MENU_SYSTEM = -1;\n\nDebugMenu* debug_menu = nullptr;\n\n// replace menu stack with just menu list\n// and make menu list act like menu stack\n// ALSO make sure that menu list is copied before iterating\n// TODO: fix pls\nstd::vector<Menu*> menu_stack;\nstd::vector<Menu*> menu_list;\n\n// is this even used??\nvoid ToggleMenuState() { UI::SetInputState((UI::GetInputState() == UI::STATE_DEFAULT) ? UI::STATE_MENU_OPEN : UI::STATE_DEFAULT); }\n\n// is this used either?\n// TODO: fix\nvoid CloseAll() {\n    if (debug_menu) Menu::Remove(debug_menu);\n    \n    debug_menu = nullptr;\n}\n\nstatic void EscapeMenuKeyboard () {\n    if (Menu::Empty()) {\n        SystemMenu* system_menu = new SystemMenu();\n        Menu::Push(system_menu);\n    } else {\n        Menu::Pop();\n    }\n}\n\nstatic void DebugMenuKeyboard () {\n    if (Menu::Empty()) {\n        debug_menu = new DebugMenu();\n        Menu::Push(debug_menu);\n    } else {\n        Menu::Clear();\n    }\n}\n\nvoid Init() {\n    MENU_SYSTEM = System::Register(\"Default Menus\", \"MENU\");\n    \n    System::SetState(MENU_SYSTEM, System::INIT);\n    \n    System::AssertDependency(System::GUI);\n\n    Material::Make(UID(\"ui/font_widgets\"),     MATERIAL_GLYPH)->Load();\n    Material::Make(UID(\"ui/font_text\"),        MATERIAL_GLYPH)->Load();\n    Material::Make(UID(\"ui/font_text_bold\"),   MATERIAL_GLYPH)->Load();\n    Material::Make(UID(\"ui/font_headers\"),     MATERIAL_GLYPH)->Load();\n    Material::Make(UID(\"ui/font_pixelart\"),    MATERIAL_GLYPH)->Load();\n\n    Sprite* font_widgets =      Sprite::Find(UID(\"font_widgets\"));\n    Sprite* font_text =         Sprite::Find(UID(\"font_text\"));\n    Sprite* font_text_bold =    Sprite::Find(UID(\"font_text_bold\"));\n    Sprite* font_headers =      Sprite::Find(UID(\"font_headers\"));\n    Sprite* font_pixelart =     Sprite::Find(UID(\"font_pixelart\"));\n\n    font_widgets->Load();\n    font_text->Load();\n    font_text_bold->Load();\n    font_headers->Load();\n    font_pixelart->Load();\n\n    FONT_WIDGETS =      GUI::RegisterFont(font_widgets);\n    FONT_TEXT =         GUI::RegisterFont(font_text);\n    FONT_TEXT_BOLD =    GUI::RegisterFont(font_text_bold);\n    FONT_HEADER =       GUI::RegisterFont(font_headers);\n    FONT_PIXELART =     GUI::RegisterFont(font_pixelart);\n    \n    UI::BindKeyboardKey(UI::KEY_ESCAPE, EscapeMenuKeyboard);\n    UI::BindKeyboardKey(UI::KEY_GRAVE_ACCENT, DebugMenuKeyboard);\n    \n    InitCallbacks();\n    \n    GUI::SetGlyphDefaults(COLOR_WHITE, FONT_WIDGETS, GUI::WIDGET);\n    GUI::SetGlyphDefaults(COLOR_WHITE, FONT_TEXT, GUI::TEXT);\n    \n    System::SetState(MENU_SYSTEM, System::READY);\n}\n\nvoid Update() {\n    GUI::SetColor({0.0f, 0.0f, 0.0f});\n    \n    auto menu_list_copy = menu_list;\n    for (auto menu : menu_list_copy) {\n        menu->Display();\n    }\n    \n    // TODO: cop[y menu_stack\n    bool displayed[3] = {false, false, false};\n    auto menu_stack_copy = menu_stack;\n    for (auto menu = menu_stack_copy.rbegin(); menu != menu_stack_copy.rend(); menu++) {\n        \n        if (uint32_t layer = (*menu)->Layer(); !displayed[layer]) {\n            displayed[layer] = true;\n            (*menu)->Display();\n        }\n        \n    }\n\n    UpdateCallbacks();\n}\n\n/// Pushes menu on the menu stack.\nvoid Menu::Push(Menu* menu) {\n    if (Menu::Empty()) {\n        UI::SetInputState(UI::STATE_MENU_OPEN);\n    }\n    \n    menu_stack.push_back(menu);\n}\n\n/// Pops the topmost menu from the stack\n/// @note   The menu will be `delete`d after removing it from the stack.\n/// @return True if a menu was popped, false if stack was empty.\nbool Menu::Pop() {\n    if (menu_stack.size()) {\n        delete menu_stack.back();\n        menu_stack.pop_back();\n        \n        if (Menu::Empty()) {\n            UI::SetInputState(UI::STATE_DEFAULT);\n        }\n        \n        return true;\n    } else {\n        return false;\n    }\n}\n\n/// Checks whether the menu stack is empty.\n/// @return True if it is empty.\nbool Menu::Empty() {\n    return !menu_stack.size();\n}\n\n/// Clears the menu stack.\n/// This will behave as if Menu::Pop() was called until the menu stack was\n/// empty.\n/// @note All of the menus in the stack will be `delete`ed.\nvoid Menu::Clear() {\n    while (!Menu::Empty()) {\n        Menu::Pop();\n    }\n}\n\n// tbh idk what this even does and if it is even used\n// TODO: look up what it does and what uses it \nvoid Menu::Add(Menu* menu) {\n    menu_list.push_back(menu);\n}\n\n// same as previours\n// TODO: fix\nvoid Menu::Remove(Menu* menu) {\n    auto thing = std::find(menu_list.begin(), menu_list.end(), menu);\n    \n    // TODO:  fix memory leak\n    //delete *thing;\n    menu_list.erase(thing);\n}\n\nvoid DebugMenue() {\n    //static bool debugdraw_trans = false;\n    //static bool debugdraw_paths = false;\n    //static bool debugdraw_navmeshes = false;\n    //static bool debugdraw_stats = false;\n    \n    \n    //if (debugdraw_trans) for (auto& cell : PoolProxy<WorldCell>::GetPool()) if (cell.IsDebugDraw()) cell.DrawTransitions();\n    //if (debugdraw_paths) for (auto& cell : PoolProxy<WorldCell>::GetPool()) if (cell.IsDebugDraw()) cell.DrawPaths();\n    //if (debugdraw_navmeshes) for (auto& cell : PoolProxy<WorldCell>::GetPool()) if (cell.IsDebugDraw()) cell.DrawNavmeshes();\n    \n    //if (debugdraw_stats) {\n        //char meminfobuffer[100]; char timeinfobuffer[100]; char fpsinfobuffer[100];\n        //sprintf(meminfobuffer, \"VRAM approximate usage: %lldKB\", (Stats::GetStat(Stats::RESOURCE_VRAM) / 1024));\n        //sprintf(timeinfobuffer, \"Frame time avg: %.2fms\", Stats::GetStat(System::RENDER));\n        //sprintf(fpsinfobuffer, \"FPS last second: %.2ffps\", (1000.0f / Stats::GetStat(System::RENDER)));\n        //GUI::Text(meminfobuffer, 2); GUI::FrameBreakLine();\n        //GUI::Text(timeinfobuffer, 2); GUI::FrameBreakLine();\n        //GUI::Text(fpsinfobuffer, 2); GUI::FrameBreakLine();\n    //}\n    \n    //if (!debug_menu_open) return;\n    \n    static bool worldcell_menu_open = false;\n    static bool debugdraw_menu_open = false;\n    \n    //Frame(FRAME_TOP, 30);\n    //if (Button(\"WorldCell\")) worldcell_menu_open = true;\n    //if (Button(\"Debug Drawing\")) debugdraw_menu_open = true;\n    //EndFrame();\n    \n    if (debugdraw_menu_open) {\n        //Frame(FRAME_CENTER, 320, 240);\n        //GUI::FillFrame(104.0f, 88.0f, 12.0f, 12.0f, Render::COLOR_WHITE, 0);\n        //Frame(FRAME_RIGHT, 20); if (SmallButton(BUTTON_CROSS)) debugdraw_menu_open = false; EndFrame();\n        //Frame(FRAME_RIGHT, 320-4);\n        //Text(\"Debug Drawing\", 2); FrameBreakLine();\n        \n        //Frame(FRAME_BOTTOM, 240-50);\n        //Frame(FRAME_LEFT, 80);\n        //Text(\"Render:\", 1); FrameBreakLine();\n        //Text(\"Physics:\", 1); FrameBreakLine();\n        //Text(\"Transitions:\", 1); FrameBreakLine();\n        //Text(\"Paths:\", 1); FrameBreakLine();\n        //Text(\"Navmeshes:\", 1); FrameBreakLine();\n        //Text(\"Statistics:\", 1); FrameBreakLine();\n        //EndFrame();\n        \n        //Frame(FRAME_RIGHT, 320-100);\n        //CheckBox(Render::DRAW_RENDER_DEBUG); FrameBreakLine();\n        //CheckBox(Physics::DRAW_PHYSICS_DEBUG); FrameBreakLine();\n        //CheckBox(debugdraw_trans); FrameBreakLine();\n        //CheckBox(debugdraw_paths); FrameBreakLine();\n        //CheckBox(debugdraw_navmeshes); FrameBreakLine();\n        //CheckBox(debugdraw_stats); FrameBreakLine();\n        //EndFrame();\n        //EndFrame();\n        \n        //EndFrame();\n        //EndFrame();\n    }\n    \n    if (worldcell_menu_open) {\n        //Frame(FRAME_CENTER, 320, 240);\n        //GUI::FillFrame(104.0f, 88.0f, 12.0f, 12.0f, Render::COLOR_WHITE, 0);\n        //Frame(FRAME_RIGHT, 20); if (SmallButton(BUTTON_CROSS)) worldcell_menu_open = false; EndFrame();\n        //Frame(FRAME_RIGHT, 320-4);\n        //Text(\"WorldCell Inspector\", 2); FrameBreakLine();\n        static std::vector<char const*> worldcell_names;\n        static uint32_t worldcell_selected = 0;\n        worldcell_names.clear();\n        auto& worldcell_pool = PoolProxy<WorldCell>::GetPool();\n        for (size_t i = 0; i < worldcell_pool.GetSize(); i++) if (*((uint64_t*)(worldcell_pool.begin().ptr + i))!=0) worldcell_names.push_back((char const*)(worldcell_pool.begin().ptr + i)->GetName()); else worldcell_names.push_back((char*)\"[NONE]\");\n        //DropdownBox((const char**)worldcell_names.data(), worldcell_names.size(), worldcell_selected);\n        //FrameBreakLine();\n        \n        auto worldcell = worldcell_pool.begin().ptr + worldcell_selected;\n        char numbuffer[20];\n        std::sprintf(numbuffer, \"%lld\", worldcell->GetEntityCount());\n        //bool is_draw = worldcell->IsDebugDraw();\n        //bool is_load = worldcell->IsLoaded();\n        //bool is_int = worldcell->IsInterior();\n        //bool is_intl = worldcell->HasInteriorLighting();\n        //bool is_draw_bef = is_draw;\n        \n        //Frame(FRAME_BOTTOM, 240-50);\n        //Frame(FRAME_LEFT, 80);\n        //Text(\"Name:\", 1); FrameBreakLine();\n        //Text(\"Entities:\", 1); FrameBreakLine();\n        //Text(\"Loaded:\", 1); FrameBreakLine();\n        //Text(\"Interior:\", 1); FrameBreakLine();\n        //Text(\"Int. light:\", 1); FrameBreakLine();\n        //Text(\"Draw:\", 1); FrameBreakLine();\n        //EndFrame();\n        \n        //Frame(FRAME_RIGHT, 320-80);\n        //Text(worldcell->GetName(), 1); FrameBreakLine();\n        //Text(numbuffer, 1); FrameBreakLine();\n        //CheckBox(is_load); FrameBreakLine();\n        //CheckBox(is_int); FrameBreakLine();\n        //CheckBox(is_intl); FrameBreakLine();\n        //CheckBox(is_draw); FrameBreakLine();\n        //EndFrame();\n        //EndFrame();\n        \n        //if(is_draw != is_draw_bef) worldcell->SetDebugDraw(is_draw);\n        \n        //EndFrame();\n        //EndFrame();\n    }\n}\n\n//void EscapeMenu() {\n    //if (!escape_menu_open) return;\n    \n    //Frame(FRAME_TOP, 20);\n    \n    //Text(\"Escape Menu\", 2);\n    \n    //EndFrame();\n//}\n\n}\n"
  },
  {
    "path": "src/extensions/menu/menu.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_MENU_MENU_H\n#define TRAM_SDK_EXTENSIONS_MENU_MENU_H\n\n#include <framework/gui.h>\n\nnamespace tram::Ext::Menu {\n\nvoid Init();\nvoid Update();\n\nextern GUI::font_t FONT_WIDGETS;\nextern GUI::font_t FONT_TEXT;\nextern GUI::font_t FONT_TEXT_BOLD;\nextern GUI::font_t FONT_HEADER;\nextern GUI::font_t FONT_PIXELART;\n\nclass Menu {\npublic:\n    virtual void Display() = 0;\n    virtual uint32_t Layer() = 0;\n    virtual ~Menu() = default;\n\n    static void Push(Menu*);\n    static bool Pop();\n    static bool Empty();\n    static void Clear();\n    \n    static void Add(Menu*);\n    static void Remove(Menu*);\n};\n\n}\n\n#endif"
  },
  {
    "path": "src/extensions/menu/system.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/menu/system.h>\n\n#include <framework/settings.h>\n#include <audio/audio.h>\n#include <platform/api.h>\n\nnamespace tram::Ext::Menu {\n\nstd::string string_float(float value) {\n    int value_num = floorf(value);\n    int value_div = value * 10 - value_num * 10;\n    return std::to_string(value_num) + \".\" + std::to_string(value_div);\n}\n    \nvoid SystemMenu::Display() {\n    uint32_t menu_height = 130;\n    uint32_t menu_width = 100;\n    uint32_t menu_offset = (UI::GetScreenHeight() / GUI::GetScaling() - menu_height) / 2;\n    uint32_t menu_offset2 = (UI::GetScreenWidth() / GUI::GetScaling() - menu_width) / 2;\n    \n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, menu_offset);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, menu_offset2);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, menu_height);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT, menu_width);\n    GUI::FillFrame(GUI::WIDGET_WINDOW);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        GUI::Button(\"New\", false, 90);\n        GUI::NewLine();\n        GUI::Button(\"Load\", false, 90);\n        GUI::NewLine();\n        GUI::Button(\"Save\", false, 90);\n        GUI::NewLine();\n        if (GUI::Button(\"Settings\", true, 90)) {\n            Menu::Push(new SettingsMenu);\n        }\n        GUI::NewLine();\n        if (GUI::Button(\"Exit\", true, 90)) {\n            \n        }\n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    \n    \n    \n    \n    GUI::PushFrameRelative(GUI::FRAME_BOTTOM, 24);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 5);\n    GUI::Text(GetVersion());\n    GUI::Text(\" open-source graphics package. To get help, visit http://github.com/racenis/tram-sdk/\");\n    \n    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 1);\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 1);\n    GUI::SetColor(Render::COLOR_WHITE);\n    \n    GUI::Text(GetVersion());\n    GUI::Text(\" open-source graphics package. To get help, visit http://github.com/racenis/tram-sdk/\");\n    \n    GUI::SetColor(Render::COLOR_BLACK);\n    GUI::PopFrame();\n    GUI::PopFrame();\n    \n    GUI::PopFrame();\n    GUI::PopFrame();\n    \n    \n    \n    \n    \n}\n\nvoid SettingsMenu::Display() {\n    uint32_t menu_height = 240;\n    uint32_t menu_width = 320;\n    uint32_t menu_offset = (UI::GetScreenHeight() / GUI::GetScaling() - menu_height) / 2;\n    uint32_t menu_offset2 = (UI::GetScreenWidth() / GUI::GetScaling() - menu_width) / 2;\n    \n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, menu_offset);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, menu_offset2);\n    GUI::PushFrameRelative(GUI::FRAME_TOP, menu_height);\n    GUI::PushFrameRelative(GUI::FRAME_LEFT, menu_width);\n    GUI::FillFrame(GUI::WIDGET_WINDOW);\n    GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        GUI::RadioButton(0, tab, \"Engine \");\n        GUI::RadioButton(1, tab, \"Input \");\n        GUI::RadioButton(2, tab, \"Video \");\n        GUI::RadioButton(3, tab, \"Audio \");\n    \n        GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 22);\n        GUI::FillFrame(GUI::WIDGET_REVERSE_WINDOW);\n        GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n        switch (tab) {\n            default: {\n                bool enable_debug = true;\n                GUI::CheckBox(enable_debug, \"Enable debug mode\", false);\n                GUI::NewLine();\n                \n                GUI::Text(\"GUI Scale \");\n                uint32_t gui_scale = GUI::GetScaling();\n                if (GUI::RadioButton(1, gui_scale, \"1\") ||\n                    GUI::RadioButton(2, gui_scale, \"2\") ||\n                    GUI::RadioButton(3, gui_scale, \"3\")\n                ) {\n                    GUI::SetScaling(gui_scale);\n                }\n                GUI::NewLine();\n                \n                Value camera_shake = Settings::Get(\"camerashake\");\n                if (camera_shake.GetType() == TYPE_FLOAT32) {\n                    float shake = camera_shake.GetFloat();\n                    GUI::Text(\"Camera shake \");\n                    if (GUI::Slider(shake)) {\n                        Settings::Set(\"camerashake\", shake);\n                    }\n                    GUI::NewLine();\n                }\n                \n            } break;\n            case 1: {\n                static bool inverse_x = false;\n                static bool inverse_y = false;\n                float sensitivity = fabsf(UI::GetAxisSensitivity(UI::KEY_MOUSE_X));\n                GUI::Text(\"Mouse sensitivity \");\n                sensitivity /= 5.0f;\n                bool changed_sensitivity = GUI::Slider(sensitivity, true, 150);\n                sensitivity *= 5.0f;\n                GUI::TextBox(string_float(sensitivity).c_str(), 50, 0);\n                GUI::NewLine(GUI::LINE_NORMAL);\n                changed_sensitivity |= GUI::CheckBox(inverse_x, \"Invert mouse X axis\"); GUI::NewLine(GUI::LINE_LOW);\n                changed_sensitivity |= GUI::CheckBox(inverse_y, \"Invert mouse Y axis\"); GUI::NewLine(GUI::LINE_NORMAL);\n                if (changed_sensitivity) {\n                    UI::SetAxisSensitivity(UI::KEY_MOUSE_X, sensitivity * (inverse_x ? -1.0f : 1.0f));\n                    UI::SetAxisSensitivity(UI::KEY_MOUSE_Y, sensitivity * (inverse_y ? -1.0f : 1.0f));\n                }\n                GUI::Text(binding_action ? \"Key bindings ... press any key to bind ...\" : \"Key bindings\"); GUI::NewLine(GUI::LINE_LOW);\n                \n                GUI::PushFrameRelative(GUI::FRAME_LEFT_INV, 150);\n                GUI::NewLine(GUI::LINE_NORMAL);\n                bool raw_input = Platform::Window::IsRawInput();\n                if (GUI::CheckBox(raw_input, \"Raw input\")) {\n                    Platform::Window::SetRawInput(raw_input);\n                }\n                GUI::PopFrame();\n                \n                GUI::PushFrameRelative(GUI::FRAME_BOTTOM, 116);\n                GUI::FillFrame(GUI::WIDGET_REVERSE_WINDOW);\n                GUI::PushFrameRelative(GUI::FRAME_INSET, 5);\n                    \n                    auto bindings = UI::GetAllKeyboardKeyBindings();\n\n                    const uint32_t keys_per_page = 4;\n                    uint32_t pages = (bindings.size() + keys_per_page - 1) / keys_per_page;\n                    static uint32_t selected_page = 0;\n                    \n                    std::vector<std::pair<UI::keyboardaction_t, std::vector<UI::KeyboardKey>>> bindings_in_page;\n                    for (uint32_t i = keys_per_page * selected_page; i < bindings.size() && bindings_in_page.size() < keys_per_page; i++) {\n                        bindings_in_page.push_back(bindings[i]);\n                    }\n                    \n                    for (auto& binding : bindings_in_page) {\n                        GUI::Text(UI::GetKeyboardActionName(binding.first));\n                        GUI::NewLine();\n                    }\n                    \n                    GUI::PushFrameRelative(GUI::FRAME_RIGHT, 200);\n                    for (auto& binding : bindings_in_page) {\n                        std::string button_text = binding.second.size() ? \"\" : \"none\";\n                        for (auto key : binding.second) {\n                            if (button_text.size()) button_text += \" / \";\n                            button_text += UI::GetKeyboardKeyName(key);\n                        }\n                        if (GUI::Button(button_text.c_str())) {\n                            binding_action = binding.first;\n                            binding_state_ready = false;\n                        };\n                        GUI::NewLine();\n                    }\n                    GUI::PopFrame();\n                    \n                    if (binding_action) {\n                        if (!binding_state_ready) {\n                            bool keys_released = true;\n                            for (uint16_t i = 0; i < UI::KeyboardKey::KEY_LASTKEY; i++) {\n                                if (i == UI::KEY_ESCAPE || i == UI::KEY_GRAVE_ACCENT) continue;\n                                if (UI::PollKeyboardKey((UI::KeyboardKey)i)) {\n                                    keys_released = false;\n                                }\n                            }\n                            if (keys_released) {\n                                binding_state_ready = true;\n                            }\n                        } else {\n                            for (uint16_t i = 0; i < UI::KeyboardKey::KEY_LASTKEY; i++) {\n                                if (UI::PollKeyboardKey((UI::KeyboardKey)i)) {\n                                    UI::BindKeyboardKey((UI::KeyboardKey)i, binding_action);\n                                    binding_state_ready = false;\n                                    binding_action = 0;\n                                }\n                            }\n                        }\n                    }\n                    \n                    GUI::PushFrameRelative(GUI::FRAME_RIGHT, 25);\n                    for (uint32_t i = 0; i < pages; i++) {\n                        char str[2] = \"1\";\n                        *str += i;\n                        GUI::RadioButton(i, selected_page, str);\n                        GUI::NewLine(GUI::LINE_LOW);\n                    }\n                    GUI::PopFrame();\n                    \n                GUI::PopFrame();\n                GUI::PopFrame();\n            } break;\n            case 2: {\n                float fov = Render::GetViewFov() / 180.0f;\n                float clp = Render::GetViewDistance() / 2000.0f;\n                \n                GUI::Text(\"Field of view\"); GUI::NewLine();\n                GUI::Text(\"Render distance\"); GUI::NewLine();\n                bool vsync = Platform::Window::IsVsync();\n                bool fullscreen = Platform::Window::IsFullscreen();\n                if (GUI::CheckBox(vsync, \"VSync\")) Platform::Window::SetVsync(vsync);\n                if (GUI::CheckBox(fullscreen, \"Fullscreen\")) Platform::Window::SetFullscreen(fullscreen);\n                \n                GUI::NewLine();\n                \n                uint32_t monitor = Platform::Window::GetCurrentMonitor();\n                uint32_t monitor_count = Platform::Window::GetMonitorCount();\n                \n                GUI::Text(\"Monitor \");\n                if (GUI::RadioButton(0, monitor, \"1\", monitor_count > 0) ||\n                    GUI::RadioButton(1, monitor, \"2\", monitor_count > 1) ||\n                    GUI::RadioButton(2, monitor, \"3\", monitor_count > 2) ||\n                    GUI::RadioButton(3, monitor, \"4\", monitor_count > 3)\n                ) {\n                    Platform::Window::SetMonitor(monitor);\n                }\n                \n                GUI::NewLine();\n                \n                uint32_t resolution = 0;\n                if (UI::GetScreenWidth() == 640 && UI::GetScreenHeight() == 480) {\n                    resolution = 0;\n                } else if (UI::GetScreenWidth() == 800 && UI::GetScreenHeight() == 600) {\n                    resolution = 1;\n                } else if (UI::GetScreenWidth() == 1024 && UI::GetScreenHeight() == 768) {\n                    resolution = 2;\n                } else {\n                    resolution = 3;\n                }\n                \n                if (GUI::RadioButton(0, resolution, \"640x480\")) UI::SetWindowSize(640, 480);\n                if (GUI::RadioButton(1, resolution, \"800x600\")) UI::SetWindowSize(800, 600);\n                if (GUI::RadioButton(2, resolution, \"1024x768\")) UI::SetWindowSize(1024, 768);\n                GUI::RadioButton(3, resolution, \"Other\", false);\n                \n                GUI::PushFrameRelative(GUI::FRAME_RIGHT, 200);\n                    bool fovch = GUI::Slider(fov, true, 150);\n                    fov *= 180.0f;\n                    if (fovch) Render::SetViewFov(fov);\n                    GUI::TextBox((string_float(fov) + \"\\xb0\").c_str(), 50);\n                    \n                    GUI::NewLine();\n                    bool clpch = GUI::Slider(clp, true, 150);\n                    clp *= 2000.0f;\n                    if (clpch) Render::SetViewDistance(clp);\n                    GUI::TextBox((string_float(clp) + \"m\").c_str(), 50);\n                GUI::PopFrame();\n            } break;\n            case 3: {\n                GUI::Text(\"Audio volume\"); GUI::NewLine();\n                \n                float vol = Audio::GetVolume();\n                \n                GUI::PushFrameRelative(GUI::FRAME_RIGHT, 200);\n                    vol /= 2.0f;\n                    bool changed = GUI::Slider(vol, true, 150);\n                    vol *= 2.0f;\n                    GUI::TextBox(string_float(vol).c_str(), 50);\n                    \n                    if (changed) Audio::SetVolume(vol);\n                GUI::PopFrame();\n            } break;\n            }\n        GUI::PopFrame();\n        GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n    GUI::PopFrame();\n}\n\n}"
  },
  {
    "path": "src/extensions/menu/system.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_MENU_SYSTEM_H\n#define TRAM_SDK_EXTENSIONS_MENU_SYSTEM_H\n\n#include <extensions/menu/menu.h>\n\n#include <functional>\n\nnamespace tram {\n    class WorldCell;\n}\n\nnamespace tram::Ext::Menu {\n\n//void InitCallbacks();\n//void UpdateCallbacks();\n\nclass SystemMenu : public Menu {\npublic:\n    void Display();\n    uint32_t Layer() { return 0; }\n    ~SystemMenu() = default;\nprotected:\n\n};\n\nclass SettingsMenu : public Menu {\npublic:\n    void Display();\n    uint32_t Layer() { return 0; }\n    ~SettingsMenu() = default;\nprotected:\n    uint32_t tab = 0;\n    uint32_t binding_action = 0;\n    bool binding_state_ready = false;\n};\n\n}\n\n#endif"
  },
  {
    "path": "src/extensions/meshtools/primitives.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/meshtools/primitives.h>\n\n/**\n * @namespace tram::Ext::Meshtools\n * \n * Extension containing various tools for generating meshes.\n * \n * Currently we have a sphere cube generation function. That's it. Might add\n * some more primitives later.\n */\n\nnamespace tram::Ext::Meshtools {\n\nvoid AddQuad(MeshComponent& mesh,\n             const vec3& p1, const vec3& p2, const vec3& p3, const vec3& p4,\n             const vec3& n1, const vec3& n2, const vec3& n3, const vec3& n4,\n             const vec2& uv1, const vec2& uv2, const vec2& uv3, const vec2& uv4) {\n    MeshVertex v1(Render::VERTEX_DYNAMIC);\n    MeshVertex v2(Render::VERTEX_DYNAMIC);\n    MeshVertex v3(Render::VERTEX_DYNAMIC);\n    MeshVertex v4(Render::VERTEX_DYNAMIC);\n    \n    v1.SetAttribute(3, 0); v2.SetAttribute(3, 0); v3.SetAttribute(3, 0); v4.SetAttribute(3, 0);\n    v1.SetAttribute(4, vec4{1.0, 0.0, 0.0, 0.0}); v2.SetAttribute(4, vec4{1.0, 0.0, 0.0, 0.0});\n    v3.SetAttribute(4, vec4{1.0, 0.0, 0.0, 0.0}); v4.SetAttribute(4, vec4{1.0, 0.0, 0.0, 0.0});\n    v1.SetAttribute(5, 0); v2.SetAttribute(5, 0); v3.SetAttribute(5, 0); v4.SetAttribute(5, 0);\n    \n    v1.SetPosition(p1); v2.SetPosition(p2); v3.SetPosition(p3); v4.SetPosition(p4);\n    v1.SetNormal(n1); v2.SetNormal(n2); v3.SetNormal(n3); v4.SetNormal(n4);\n    v1.SetTextureUV(uv1); v2.SetTextureUV(uv2); v3.SetTextureUV(uv3); v4.SetTextureUV(uv4); \n\n    mesh.Add(v1, v2, v3);\n    mesh.Add(v4, v3, v2);\n}\n\nvec3 SquishBalls(vec3 p) {\n    float x = p.x * sqrtf(1.0f - (p.y * p.y / 2.0f) - (p.z * p.z / 2.0f) + (p.y * p.y * p.z * p.z / 2.0f));\n    float y = p.y * sqrtf(1.0f - (p.x * p.x / 2.0f) - (p.z * p.z / 2.0f) + (p.x * p.x * p.z * p.z / 2.0f));\n    float z = p.z * sqrtf(1.0f - (p.y * p.y / 2.0f) - (p.x * p.x / 2.0f) + (p.y * p.y * p.x * p.x / 2.0f));\n    return glm::normalize(vec3{x, y, z});\n}\n\nvoid MakeBall(MeshComponent& mesh, float radius,\n              const vec3& p1, const vec3& p2, const vec3& p3, const vec3& p4,\n              const vec2& uv1, const vec2& uv2, const vec2& uv3, const vec2& uv4) {\n    vec3 v1 = SquishBalls(p1);\n    vec3 v2 = SquishBalls(p2);\n    vec3 v3 = SquishBalls(p3);\n    vec3 v4 = SquishBalls(p4);\n\n    AddQuad(mesh, radius * v1, radius * v2, radius * v3, radius * v4, v1, v2, v3, v4, uv1, uv2, uv3, uv4);\n}\n\nvoid MakeCubeSphere(MeshComponent& mesh, size_t subdivisions, float radius) {\n    mesh.Clear();\n    \n    const float RADIUS_UNIT = 0.5f;\n    \n    float step = (2.0f * RADIUS_UNIT) / (1 + subdivisions);\n    \n    float progress_x = -0.5f;\n    float progress_y = -RADIUS_UNIT;\n    for (size_t x = 0; x < subdivisions + 1; x++) {\n        for (size_t y = 0; y < subdivisions + 1; y++) {\n            vec3 p1 = {progress_x, progress_y, RADIUS_UNIT};\n            vec3 p2 = {progress_x + step, progress_y, RADIUS_UNIT};\n            vec3 p3 = {progress_x, progress_y + step, RADIUS_UNIT};\n            vec3 p4 = {progress_x + step, progress_y + step, RADIUS_UNIT};\n            vec3 n = {0, 0, 1};\n            vec2 uv1 = {RADIUS_UNIT + progress_x, RADIUS_UNIT + progress_y};\n            vec2 uv2 = {RADIUS_UNIT + progress_x + step, RADIUS_UNIT + progress_y};\n            vec2 uv3 = {RADIUS_UNIT + progress_x, RADIUS_UNIT + progress_y + step};\n            vec2 uv4 = {RADIUS_UNIT + progress_x + step, RADIUS_UNIT + progress_y + step};\n\n            // BACK\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n            \n            p1.z = p2.z = p3.z = p4.z = -RADIUS_UNIT;\n            \n            // FRONT\n            std::swap(p1, p4); std::swap(uv1, uv4);\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n            \n            p1 = {progress_x, RADIUS_UNIT, progress_y};\n            p2 = {progress_x + step, RADIUS_UNIT, progress_y};\n            p3 = {progress_x, RADIUS_UNIT, progress_y + step};\n            p4 = {progress_x + step, RADIUS_UNIT, progress_y + step};\n            n = {0, 1, 0};\n            \n            // TOP\n            std::swap(p1, p4);\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n            \n            p1.y = p2.y = p3.y = p4.y = -RADIUS_UNIT;\n            \n            // BOTTOM\n            std::swap(p1, p4); std::swap(uv1, uv4);\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n            \n            p1 = {RADIUS_UNIT, progress_x, progress_y};\n            p2 = {RADIUS_UNIT, progress_x + step, progress_y};\n            p3 = {RADIUS_UNIT, progress_x, progress_y + step};\n            p4 = {RADIUS_UNIT, progress_x + step, progress_y + step};\n            n = {1, 0, 0};\n            \n            // LEFT\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n            \n            p1.x = p2.x = p3.x = p4.x = -RADIUS_UNIT;\n            \n            // RIGHT\n            std::swap(p1, p4); std::swap(uv1, uv4);\n            MakeBall(mesh, radius, p1, p2, p3, p4, uv1, uv2, uv3, uv4);\n \n            progress_y += step;\n        }\n        \n        progress_y = -RADIUS_UNIT;\n        progress_x += step;\n    }\n    \n    mesh.Commit();\n}\n\n\n}\n\n"
  },
  {
    "path": "src/extensions/meshtools/primitives.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_MESHTOOLS_PRIMITIVES_H\n#define TRAM_SDK_EXTENSIONS_MESHTOOLS_PRIMITIVES_H\n\n#include <components/mesh.h>\n\nnamespace tram::Ext::Meshtools {\n    \nvoid MakeCubeSphere(MeshComponent& mesh, size_t subdivisions, float radius);\n\n}\n\n#endif // TRAM_SDK_EXTENSIONS_MESHTOOLS_PRIMITIVES_H"
  },
  {
    "path": "src/extensions/scripting/lua.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <extensions/scripting/lua.h>\n#include <framework/script.h>\n#include <framework/logging.h>\n\n#include <lua.hpp>\n\n#include <iostream>\n#include <cstring>\n\n/**\n * @namespace tram::Ext::Scripting::Lua\n * \n * Lua bindings for the Script system.\n */\n\nnamespace tram::Ext::Scripting::Lua {\n\nstatic lua_State* L = nullptr;\n\n// Takes a Lua value from Lua stack and tries to find the best fit for it from\n// the types that are supported by value_t.\nstatic Type best_value(int index) {\n    switch (lua_type(L, index)) {\n        case LUA_TNUMBER:   return lua_isinteger(L, index) ? TYPE_INT32 : TYPE_FLOAT32;\n        case LUA_TBOOLEAN:  return TYPE_BOOL;\n        case LUA_TSTRING:   return TYPE_STRING;\n        case LUA_TTABLE:    {\n            lua_getfield(L, index, \"x\");\n            lua_getfield(L, index, \"y\");\n            lua_getfield(L, index, \"z\");\n            lua_getfield(L, index, \"w\");\n            \n            bool has_x = lua_type(L, -4) == LUA_TNUMBER;\n            bool has_y = lua_type(L, -3) == LUA_TNUMBER;\n            bool has_z = lua_type(L, -2) == LUA_TNUMBER;\n            bool has_w = lua_type(L, -1) == LUA_TNUMBER;\n            \n            lua_pop(L, 4);\n            \n            if (has_x && has_y && has_z && !has_w) {\n                return TYPE_VEC3;\n            }\n            \n            if (has_x && has_y && has_z && has_w) {\n                return TYPE_QUAT;\n            }\n            \n            return TYPE_UNDEFINED;\n        }\n        \n        case LUA_TNIL:\n        default: \n        \n            return TYPE_UNDEFINED;\n        }\n}\n\n// Converts and pushes a value_t to Lua stack.\nstatic void push_value_to_stack(const value_t& value) {\n    if (value.IsBool()) {\n        lua_pushboolean(L, (bool)value);        return;\n    }\n    \n    if (value.IsInt()) {\n        lua_pushinteger(L, value.GetInt());     return;\n    }\n    \n    if (value.IsFloat()) {\n        lua_pushnumber(L, value.GetFloat());   return;\n    }\n    \n    switch (value.GetType()) {\n        case TYPE_NAME:     lua_pushstring(L, (name_t)value);       return;\n        case TYPE_STRING:   lua_pushstring(L, (const char*)value);  return;\n        case TYPE_VEC3:\n            lua_createtable(L, 0, 3);\n            lua_pushnumber(L, ((vec3)value).x); lua_setfield(L, -2, \"x\");\n            lua_pushnumber(L, ((vec3)value).y); lua_setfield(L, -2, \"y\");\n            lua_pushnumber(L, ((vec3)value).z); lua_setfield(L, -2, \"z\");\n            return;\n        case TYPE_QUAT:\n            lua_createtable(L, 0, 4);\n            lua_pushnumber(L, ((quat)value).x); lua_setfield(L, -2, \"x\");\n            lua_pushnumber(L, ((quat)value).y); lua_setfield(L, -2, \"y\");\n            lua_pushnumber(L, ((quat)value).z); lua_setfield(L, -2, \"z\");\n            lua_pushnumber(L, ((quat)value).w); lua_setfield(L, -2, \"w\");\n            return;\n        default: lua_pushnil(L);\n    }\n}\n\n// Takes a Lua value from the Lua stack and packs it into a value_t.\nstatic value_t get_value_from_stack(int index, Type type) {\n    switch (type) {\n        case TYPE_UNDEFINED: {\n            Type best_type = best_value(index);\n            \n            if (best_type == TYPE_UNDEFINED) {\n                return value_t();\n            }\n            \n            return get_value_from_stack(index, best_type);\n        } break;\n        \n        case TYPE_BOOL:         return (bool) lua_toboolean(L, index);\n        \n        case TYPE_NAME:         return (name_t) lua_tostring(L, index);\n        case TYPE_STRING:       return (const char*) lua_tostring(L, index);\n\n        case TYPE_INT8:\n        case TYPE_INT16:\n        case TYPE_INT32:        return (int32_t) lua_tointeger(L, index);\n        case TYPE_UINT8:\n        case TYPE_UINT16:\n        case TYPE_UINT32:       return (uint32_t) lua_tointeger(L, index);\n\n        case TYPE_FLOAT32:      return (float) lua_tonumber(L, index);\n\n        case TYPE_VEC3: {\n            lua_getfield(L, index, \"x\");\n            lua_getfield(L, index, \"y\");\n            lua_getfield(L, index, \"z\");\n            vec3 vec = {lua_tonumber(L, -3),\n                        lua_tonumber(L, -2),\n                        lua_tonumber(L, -1)};\n            \n            lua_pop(L, 3);\n            return vec;\n        }\n        \n        case TYPE_QUAT: {\n            lua_getfield(L, index, \"w\");\n            lua_getfield(L, index, \"x\");\n            lua_getfield(L, index, \"y\");\n            lua_getfield(L, index, \"z\");\n            quat vec = {(float)lua_tonumber(L, -4),\n                        (float)lua_tonumber(L, -3),\n                        (float)lua_tonumber(L, -2),\n                        (float)lua_tonumber(L, -1)};\n            \n            lua_pop(L, 4);\n            return vec;\n        }\n        \n        default: return value_t();\n    }\n}\n\nconst size_t MAX_LUA_FUNCTIONS = 200;\n\n// I think that this could acutally be easilier useed and switch to std::vector\nstatic struct {\n    std::vector<Type> parameters;\n    value_t (*function)(valuearray_t) = nullptr;\n} registered_functions[MAX_LUA_FUNCTIONS];\nstatic size_t registered_function_count = 0;\n\n// this function will get called from the lua vm and in turn will then find and\n// call whichever its name was registered to\nextern \"C\" {\nstatic int function_call_from_lua(lua_State* L) {\n    auto& func = registered_functions[lua_tointeger(L, lua_upvalueindex(1))];\n\n    std::vector<Value> params;\n    \n    if (func.parameters.size()) {\n        assert(func.parameters.size() == (size_t)lua_gettop(L) && \"function called with registered param count\");\n        for (size_t i = 0; i < func.parameters.size(); i++) {\n            params.push_back(get_value_from_stack(i+1, func.parameters[i]));\n        }\n    } else {\n        int param_count = lua_gettop(L);\n        for (int i = 0; i < param_count; i++) {\n            params.push_back(get_value_from_stack(i+1, TYPE_UNDEFINED));\n        }\n    }\n    \n    \n    push_value_to_stack(func.function({params.data(), params.size()}));\n    \n    return 1;\n}\n}\n\n\n\n\n\n\nstatic void set_global(name_t name, value_t value) {\n    push_value_to_stack(value);\n    lua_setglobal(L, name);\n}\n    \nstatic value_t get_global(name_t name) {\n    lua_getglobal(L, name);\n    value_t result = get_value_from_stack(lua_gettop(L), best_value(lua_gettop(L)));\n    lua_pop(L, 1);\n    return result;\n}\n\nstatic void set_function(name_t name, std::vector<Type> parameters, value_t (*function)(valuearray_t)) {\n    assert(registered_function_count < MAX_LUA_FUNCTIONS);\n    registered_functions[registered_function_count] = {parameters, function};\n    lua_pushinteger(L, registered_function_count);\n    lua_pushcclosure(L, function_call_from_lua, 1);\n    lua_setglobal(L, name);\n    registered_function_count++;\n}\n\nstatic value_t call_function(name_t name, std::vector<Value> parameters) {\n    lua_getglobal(L, name);\n\tfor (auto& val : parameters) push_value_to_stack(val);\n\tlua_call(L, parameters.size(), 1);\n    value_t ret = get_value_from_stack(lua_gettop(L), best_value(lua_gettop(L)));\n    lua_pop(L, 1);\n    return ret;\n}\n\nstatic void load_script(const char* script) {\n    std::string path = std::string(\"scripts/\") + script + \".lua\";\n    \n    if (luaL_loadfile(L, path.c_str())) {\n        Log(Severity::ERROR, System::MISC, \"Was an error in loading {} \\n {}\", path, lua_tostring(L, -1));\n        lua_pop(L, 1);\n        return;\n    }\n\n    if (lua_pcall(L, 0, LUA_MULTRET, 0)) {\n        Log(Severity::ERROR, System::MISC, \"Was an error in executing {} \\n {}\", path, lua_tostring(L, -1));\n        lua_pop(L, 1);\n    }\n}\n\nstatic value_t evaluate(const char* script) {\n    if (luaL_loadbuffer(L, script, strlen(script), \"eval_buffer\")) {\n        Log(Severity::ERROR, System::MISC, \"Was an error in loading {} \\n {}\", script, lua_tostring(L, -1));\n        lua_pop(L, 1);\n        return value_t();\n    }\n\n    if (lua_pcall(L, 0, 1, 0)) {\n        Log(Severity::ERROR, System::MISC, \"Was an error in executing {} \\n {}\", script, lua_tostring(L, -1));\n        lua_pop(L, 1);\n        return value_t();\n    }\n    \n    value_t ret = get_value_from_stack(lua_gettop(L), best_value(lua_gettop(L)));\n    lua_pop(L, 1);\n    return ret;\n}\n\nclass Lua : public Script::Interface {\n    name_t GetName() {\n        return \"lua\";\n    }\n    \n    value_t GetGlobal(name_t name) {\n        return get_global(name);\n    }\n    \n    void SetGlobal(name_t name, value_t value) {\n        set_global(name, value);\n    }\n    \n    void SetFunction(name_t name, std::vector<Type> parameters, value_t (*function)(valuearray_t)) {\n        set_function(name, parameters, function);\n    }\n    \n    value_t CallFunction(name_t name, std::vector<Value> parameters) {\n        return call_function(name, parameters);\n    }\n    \n    void LoadScript(const char* path) {\n        load_script(path);\n    }\n    \n    value_t Evaluate(const char* code) {\n        return evaluate(code);\n    }\n};\n\nvoid Init() {\n    if (L) {\n        return; // TODO: add error\n    }\n    \n    L = luaL_newstate();\n    luaL_openlibs(L);\n\n    Script::SetInterface(new Lua);\n}\n\nvoid Uninit() {\n    if (!L) {\n        return; // TODO: add error\n    }\n    \n    lua_close(L);\n    \n    L = nullptr;\n}\n\n}"
  },
  {
    "path": "src/extensions/scripting/lua.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H\n#define TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H\n\nnamespace tram::Ext::Scripting::Lua {\n\nvoid Init();\nvoid Uninit();\n    \n}\n\n#endif // TRAM_SDK_EXTENSIONS_SCRIPTING_LUA_H"
  },
  {
    "path": "src/framework/async.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <templates/queue.h>\n#include <templates/pool.h>\n\n#include <framework/core.h>\n#include <framework/async.h>\n#include <framework/system.h>\n#include <framework/resource.h>\n#include <framework/entitycomponent.h>\n#include <framework/logging.h>\n\n#include <platform/api.h>\n\n#include <config.h>\n\n#include <thread>\n#include <vector>\n\n/*\n * currently with how everything is implemented, only EntityComponents can\n * request resources.\n * \n * it would be better if we instead would accept a function pointer and a\n * void data pointer, so that more kinds of things could request resources\n * \n * ideas:\n * typedef an Async::task_t = uint32_t\n * create a task_t EnqueueTask(function ptr, data ptr)\n */\n\n/**\n * @file framework/async.cpp\n * \n * Implementation of the Async system.\n */\n\n\n/**\n * @namespace tram::Async\n * \n * Multi-threading and Resource streaming.\n * \n * Currently Async only does Resource streaming, but we could do other kinds of\n * Async processing in the future too.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/async.html\n */\n\nnamespace tram::Async {\n\nstatic std::vector<std::thread> resource_loaders;\nstatic bool loaders_should_stop = true;\n\nenum RequestNotification {\n    NONE,\n    COMPONENT,\n    CALLBACK\n};\n\nstruct ResourceRequest {\n    RequestNotification notification_type;\n    Resource* resource = nullptr;\n    \n    union {\n        struct {\n            void (*callback)(void*);\n            void* callback_data;\n        };\n        \n        EntityComponent* requester;\n    };\n    \n    // TODO: check if we still need this padding\n#ifndef __x86_64__\n    void* padding[2];\n#endif\n};\n\nstatic Queue<ResourceRequest*> disk_loader_queue(\"Async::LoadResourcesFromDisk() queue\", RESOURCE_LOADER_QUEUE_LIMIT);\nstatic Queue<ResourceRequest*> memory_loader_queue(\"Async::LoadResourcesFromMemory() queue\", RESOURCE_LOADER_QUEUE_LIMIT);\nstatic Queue<ResourceRequest*> finished_queue(\"Async::FinishResources() queue\", RESOURCE_LOADER_QUEUE_LIMIT);\n\nstatic Pool<ResourceRequest> request_pool(\"Async::ResourceRequest pool\", RESOURCE_LOADER_REQUEST_LIMIT);\n\n/// Adds a resource to the loading queue.\n/// @param requester            EntityComponent that will be notified when the \n///                             resource is loaded. Can be set to nullptr, in \n///                             which case nothing will be notified.\n/// @param requested_resource   The resource that will be loaded.\nvoid RequestResource(EntityComponent* requester, Resource* resource) {\n    if (!System::IsInitialized(System::ASYNC)) {\n        Log(Severity::CRITICAL_ERROR, System::ASYNC, \"Can not request '{}' load, Async is not initialized\", resource->GetName());\n    }\n    \n    disk_loader_queue.push(request_pool.AddNew(ResourceRequest {\n        .notification_type = requester ? RequestNotification::COMPONENT : RequestNotification::NONE,\n        .resource = resource,\n        .requester = requester\n    }));\n}\n\n/// Adds a resource to the loading queue.\n/// @param callback             Callback function which will be called when the\n///                             resource has been loaded and is ready for use.\n/// @param data                 Data pointer, which will be passed to as a\n///                             parameter to the callback function.\n/// @param requested_resource   The resource that will be loaded.\nvoid RequestResource(void(*callback)(void* data), void* data, Resource* resource) {\n    if (!System::IsInitialized(System::ASYNC)) {\n        Log(Severity::CRITICAL_ERROR, System::ASYNC, \"Can not request '{}' load, Async is not initialized\", resource->GetName());\n    }\n    \n    disk_loader_queue.push(request_pool.AddNew(ResourceRequest {\n        .notification_type = RequestNotification::COMPONENT,\n        .callback = callback,\n        .callback_data = data\n    }));\n}\n\n/// Cancels a resource load request.\n/// Should be called if the EntityComponent that requested a Resource to be\n/// loaded will be destructed before the Resource has finished loading.\n/// @note The resource will be fully loaded anyway, but the requester will not\n///       be notified.\nvoid CancelRequest(EntityComponent* requester, Resource* resource) {\n    for (auto& request : request_pool) {\n        if (request.requester == requester && request.resource == resource) {\n            request.notification_type = RequestNotification::NONE;\n            request.requester = nullptr;\n        }\n    }\n}\n\n/// Loads a resource from disk, skipping the queue.\n/// Shouldn't be used outside of resource LoadFromDisk() methods. \nvoid LoadDependency(Resource* resource) {\n    if (resource->GetStatus() == Resource::UNLOADED) {\n        resource->LoadFromDisk();\n    }\n    \n    // LoadFromMemory() needs to be called from render context thread. if this\n    // function is called from the render context thread, then we can just go\n    // ahead and call LoadFromMemory() immediately. otherwise we will put the\n    // resource in the queue to be called from that thread later\n    if (Platform::Window::IsRenderContextThread()) {\n        if (resource->GetStatus() == Resource::LOADED) {\n            resource->LoadFromMemory();\n        }\n        \n        return;\n    }\n\n    ResourceRequest* request = request_pool.AddNew(ResourceRequest {\n        .notification_type = RequestNotification::NONE,\n        .resource = resource\n    });\n\n    if (resource->GetStatus() == Resource::READY) {\n        finished_queue.push(request);\n    } else {\n        memory_loader_queue.push(request);\n    }\n}\n\n/// Resource loading function.\n/// Should only be used by through the Async::Init() function.\nstatic void ResourceLoader() {\n    while (!loaders_should_stop) {\n        LoadResourcesFromDisk();\n        \n        disk_loader_queue.lock();\n        auto len = disk_loader_queue.size();\n        disk_loader_queue.unlock();\n        \n        if (len > 0) {\n            continue;\n        }\n        \n        /* this will make the thread go to sleep when all requested resources\n         * have been loaded.\n         * \n         * this will prevent the thread from wasting CPU cycles, but it will\n         * also make it slow to respond to new requests.\n         * \n         * we could use a mutex or something to wake it up, instead of using a\n         * timout\n         * \n         * TODO: fix\n         */\n        std::this_thread::sleep_for(std::chrono::milliseconds(500));\n    }\n}\n\n/// Processes the first resource queue.\n/// If there are any resource loader threads active, this function will not do\n/// anything, instead allowing the loader threads to load the resources.\nvoid LoadResourcesFromDisk() {\n    if (resource_loaders.size()) {\n        // if any resource loader threads are active, we should check if this\n        // function is being called from one of them, otherwise we return. this\n        // is done in order to not slow down the main thread\n        bool called_from_loader = false;\n        for (const auto& loader : resource_loaders) {\n            if (loader.get_id() == std::this_thread::get_id()) {\n                called_from_loader = true;\n            }\n        }\n        \n        if (!called_from_loader) return;\n    }\n    \n    if (ResourceRequest* request; disk_loader_queue.try_pop(request)) {\n        if (request->resource->GetStatus() == Resource::UNLOADED) {\n            request->resource->LoadFromDisk();\n        }\n\n        if (request->resource->GetStatus() == Resource::READY) {\n            finished_queue.push(request);\n        } else {\n            memory_loader_queue.push(request);\n        }\n    }\n}\n\n/// Processes the second resource queue.\n/// @warning This function should only be called from the rendering thread.\nvoid LoadResourcesFromMemory() {\n    if (!Platform::Window::IsRenderContextThread()) {\n        Log(Severity::CRITICAL_ERROR, System::ASYNC, \"Async::LoadResourcesFromMemory() not called from rendering thread\");\n    }\n    \n    for (ResourceRequest* request; memory_loader_queue.try_pop(request);) {\n        if (request->resource->GetStatus() == Resource::LOADED) {\n            request->resource->LoadFromMemory();\n        }\n\n        finished_queue.push(request);\n    }\n}\n\n/// Notifies EntityComponents about finished resources.\nvoid FinishResources() {\n    for (ResourceRequest* request; finished_queue.try_pop(request);) {\n        switch (request->notification_type) {\n            case RequestNotification::CALLBACK:\n                request->callback(request->callback_data);\n                break;\n            case RequestNotification::COMPONENT:\n                request->requester->ResourceReady();\n                break;\n            case RequestNotification::NONE:\n                break;\n        }\n        \n        request_pool.Remove(request);\n    }\n}\n\n/// Starts the async resource loader thread.\n/// @param Number of threads for async loading.\nvoid Init(size_t threads) {\n    System::SetState(System::ASYNC, System::INIT);\n    System::AssertDependency(System::CORE);\n    \n    // for some reason using threads makes the program not work in emscripten\n    // TODO: investigate\n#ifdef __EMSCRIPTEN__\n    threads = 0;\n#endif\n    \n    if (threads) {\n        loaders_should_stop = false;\n        \n        for (size_t i = 0; i < threads; i++) {\n            resource_loaders.push_back(std::thread(ResourceLoader));\n        }\n    }\n    \n    System::SetState(System::ASYNC, System::READY);\n}\n\n/// Stops the async resource loader thread.\nvoid Yeet() {\n    if (!System::IsInitialized(System::ASYNC)) {\n        Log(Severity::ERROR, System::ASYNC, \"Async is not initialized, can not yeet it\");\n    }\n    \n    loaders_should_stop = true;\n    \n    for (auto& loader : resource_loaders) {\n        loader.join();\n    }\n    \n    System::SetState(System::ASYNC, System::YEET);\n}\n\n/// Returns number of resources in queues.\nsize_t GetWaitingResources() {\n    return request_pool.size();\n}\n\n}\n"
  },
  {
    "path": "src/framework/async.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_ASYNC_H\n#define TRAM_SDK_FRAMEWORK_ASYNC_H\n\n#include <cmath>\n\nnamespace tram {\n\nclass EntityComponent;\nclass Resource;\n\n}\n\nnamespace tram::Async {\n\nvoid RequestResource(EntityComponent* requester, Resource* resource);\nvoid RequestResource(void(*callback)(void* data), void* data, Resource* resource);\nvoid CancelRequest(EntityComponent* requester, Resource* resource);\nvoid LoadDependency(Resource* res);\nvoid Init(size_t threads = 1);\nvoid Yeet();\nvoid LoadResourcesFromDisk();\nvoid LoadResourcesFromMemory();\nvoid FinishResources();\nsize_t GetWaitingResources();\n    \n}\n\n#endif // TRAM_SDK_FRAMEWORK_ASYNC_H"
  },
  {
    "path": "src/framework/core.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/core.h>\n#include <framework/event.h>\n#include <framework/system.h>\n#include <framework/uid.h>\n#include <framework/logging.h>\n\n#include <platform/api.h>\n\n#include <config.h>\n\n#include <iostream>\n#include <cassert>\n\n/**\n * @file framework/core.cpp\n * \n * Core functionality of the framework.\n */\n\nnamespace tram {\n\nstatic uint32_t ticks = 0;\nstatic uint32_t frames = 0;\n\nstatic uint32_t delta_tick = 0;\nstatic float delta_time = 0.0f;\n\nstatic double frame_time = 0.0f;\n\nstatic float time_since_tick = 0.0f;\n\nstatic bool automatic_time = true;\n\n/// Generates a unique ID number.\nid_t GenerateID() {\n    static id_t num = 0;\n    num++;\n    return num;\n}\n\n/// Initializes the core of the framework.\nvoid Core::Init() {\n    if (System::IsInitialized(System::CORE)) {\n       Log(Severity::CRITICAL_ERROR, System::CORE, \"Can not initialize Core, it is already initialized\"); \n    }\n    \n    // this will print out the version of the runtime to the console. I think\n    // that doing so looks very nice. maybe you disagree. if you disagree, you\n    // can comment out the following line\n    Log(GetVersion()); \n    \n    System::SetState(System::CORE, System::READY);\n}\n\n/// Updates the core system.\n/// @note This should be called only once per update cycle.\nvoid Core::Update() {\n    static double last_platform_time = Platform::Window::GetTime();\n    const double platform_time = Platform::Window::GetTime();\n    const double platform_delta_time = platform_time - last_platform_time;\n    last_platform_time = Platform::Window::GetTime();\n    \n    if (automatic_time) {\n        delta_time = platform_delta_time;\n        frame_time = platform_time;\n    }\n    \n    frames++;\n    \n    Event::Post({\n        .type = Event::FRAME,\n        .poster = 0\n    });\n    \n    time_since_tick += delta_time;\n    \n    if (!automatic_time) {\n        delta_time = 0.0f;\n    }\n    \n    // avoid overflowing event buffer on severe (1000ms+) lag\n    if (time_since_tick > 1.0f) {\n        time_since_tick = 0.0f;\n    }\n    \n    delta_tick = 0;\n    while (time_since_tick > TICK_RATE) {\n        time_since_tick -= TICK_RATE;\n        \n        delta_tick++;\n        ticks++;\n        \n        Event::Post({\n            .type = Event::TICK,\n            .poster = ticks\n        });\n    }\n}\n\n/// Returns the current tick.\n/// This value gets incremented at a rate of 60 ticks per second.\n/// @note   Tick rate of 60 ticks per second is only the default. The actual\n///         value might have been changed in the runtime configuration.\n/// @return Count of ticks since the application was started.\nuint32_t GetTick() {\n    return ticks;\n}\n\n/// Returns the current frame.\n/// @return The number of times Core::Update() has been called.\nuint32_t GetFrame() {\n    return frames;\n}\n\n/// Returns the tick delta.\n/// If multiple ticks have occured between calls to Core::Update(), this value\n/// will reflect that.\nuint32_t GetDeltaTick() {\n    return delta_tick;\n}\n\n\n/// Same as GetFrameTime()\ndouble GetTickTime() {\n    return frame_time;\n}\n\n/// Returns the time at the start of the current frame.\n/// This value changes only when Core::Update() is called.\n/// @return Time, in seconds, since the application was started.\ndouble GetFrameTime() {\n    return frame_time;\n}\n\n/// Returns the time passed between frames.\n/// This value changes only when Core::Update() is called.\n/// @return Time, in seconds, that has passed between the start of the previous\n///         and the start of the current frame.\nfloat GetDeltaTime() {\n    return delta_time;\n}\n\n\n/// Enables/disables automatic time counting.\n/// By default the framework will use Platform time, which is determined by\n/// counting the number of seconds passed since the application window was\n/// opened. Some niche use cases need the time to be controlled manually, so we\n/// provide this function here, but most users won't need to use it.\n/// @warning Do not use, unless you know what you are doing.\nvoid Core::SetPlatformTime(bool platform_time) {\n    automatic_time = platform_time;\n}\n\n/// Sets the time to a new value.\n/// This function should be called once per frame, just after calling\n/// Core::Update().\n/// @note Needs SetPlatformTime() to be false.\nvoid Core::SetTime(double new_time) {\n    if (automatic_time) return;\n    \n    delta_time = new_time - frame_time;\n    frame_time = new_time;\n}\n\n/// Increments the time.\n/// This function should be called once per frame, just after calling\n/// Core::Update().\n/// @see AddTime()\n/// @note Needs SetPlatformTime() to be false.\nvoid Core::AddTime(double add_time) {\n    if (automatic_time) return;\n    \n    delta_time = add_time;\n    frame_time += add_time;\n}\n\n\n/// Returns the version identifier of the runtime.\nconst char* GetVersion() {\n    return \"Tramway SDK v0.1.1\";\n}\n\n}\n\n\n"
  },
  {
    "path": "src/framework/core.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_CORE_H\n#define TRAM_SDK_FRAMEWORK_CORE_H\n\n#include <cstdint>\n\nnamespace tram {\n\ntypedef uint32_t id_t;\n\nid_t GenerateID();\n\nuint32_t GetTick();\nuint32_t GetFrame();\n\ndouble GetTickTime();\ndouble GetFrameTime();\n\nuint32_t GetDeltaTick();\nfloat GetDeltaTime();\n\nconst char* GetVersion();\n\nnamespace Core {\n    void Init();\n    void Update();\n    \n    void SetPlatformTime(bool);\n    void SetTime(double);\n    void AddTime(double);\n    \n    // TODO: maybe put GenerateID() and GetVersion() in here too\n}\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_CORE_H\n"
  },
  {
    "path": "src/framework/entity.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/entity.h>\n#include <framework/worldcell.h>\n#include <framework/serialization.h>\n#include <framework/serialization.h>\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <iostream>\n#include <unordered_map>\n\n#include <algorithm>\n\n/**\n * @class tram::Entity framework/entity.h <framework/entity.h>\n * \n * Entity base class.\n * \n * Provides API for entities and some basic functionality.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/entity.html\n */\n \n /**\n * @fn void tram::Entity::Load()\n * \n * Loads an entity.\n * \n * Usually the Load() method for an entity type will set up its components,\n * event listeners, etc. After being loaded, the entity will be ready for\n * simulation.\n * \n * When implementing this method, make sure to flag the entity with the `LOADED`\n * flag, so that world streaming system doesn't try to load your entity twice.\n * \n * @fn void tram::Entity::Unload()\n * \n * Unloads an entity.\n * \n * Usually the Load() method for an entity type will destroy its its components,\n * event listeners, etc. After being unloaded, the entity have been removed from\n * the simulation.\n * \n * When implementing this method, make sure to clear your entity's LOADED flag,\n * so that world streaming system can load the entity again.\n * \n * @fn WorldCell* tram::Entity::GetCell() \n * \n * Returns the entity's parent cell.\n * \n * If an entity is inside a WorldCell, this method will return a pointer to it,\n * otherwise it will return a `nullptr`.\n * \n * @fn WorldCell* tram::Entity::IsLoaded()\n * \n * Returns the entity load status.\n * \n * @fn WorldCell* tram::Entity::IsAutoLoad()\n * \n * Returns the auto load flag status.\n * \n * By default all entities are automatically loaded, i.e. when the WorldCell in\n * which they reside is loaded. Sometimes you might want to override this, so\n * the automatic loading disablement flag is provided.\n * \n * @fn WorldCell* tram::Entity::IsPersistent()\n * \n * Returns the persistence status of an entity.\n * \n * Entities that have been marked as non-persistent will be yeeted when their\n * parent cell is unloaded, instead of the usual unloading.\n * \n * This is useful when creating small decoration entities, e.g. debris and\n * giblets, which don't need to be saved.\n * \n * @fn WorldCell* tram::Entity::IsDeleted()\n * \n * Returns the entity deletion status.\n * \n * When an entity is yeeted, it is marked as deleted. They continue existing for\n * some time until the Entity::Update() static method is called and they are\n * destructed.\n * \n * Even then, entities that have been loaded from the disk will continue\n * existing, so that their status as being deleted can be written back to disk.\n * \n * This also allows to ressurect them, if the need arises.\n * \n * @fn void tram::Entity::UpdateParameters()\n * \n * Called when Entity::UpdateTransform is called.\n * \n * From the runtime's side, only the Physics system will call the\n * Entity::UpdateTransform() method, and through it, this method.\n * \n * Usually this method is used to forward the entity's new position and rotation \n * to its RenderComponent, if it has one.\n * \n * If the entity has a PhysicsComponent, its position or rotation is never\n * updated from this method.\n * \n * @fn void tram::Entity::SetParameters()\n * \n * Called when either Entity::SetLocation or Entity::SetRotation is called.\n * \n * Usually this method is used to relocate or rerotate an entity.\n * \n * If the entity has a PhysicsComponent, its position or rotation is usually set\n * from this method, otherwise in the next Physics update step, the entity's\n * previous rotation and location will be restored.\n * \n * @fn void tram::Entity::GetType()\n * \n * Returns the type of the entity.\n * \n * Usually this method returns the same name that is used to\n * Entity::RegisterType() its type.\n * \n * @fn void tram::Entity::MessageHandler(Message& msg)\n * \n * Allows entities to receive messages.\n * \n * Whenever an entity is sent a Message, once the Message::Dispatch() function\n * has been called, the entity will gets the message passed to it through this\n * method.\n * \n * @fn void tram::Entity::EventHandler(Event &event)\n * \n * Allows entities to receive events.\n * \n * Whenever an entity registers an event, an event of the same type as the event\n * listener is posted and Event::Dispatch() has been called, the entity will\n * receive the event through this method.\n * \n */\n \n /**\n * @typedef Entity* (*entity_make)(const SharedEntityData&, const ValueArray&)\n * \n * Entity construction function.\n * \n * This function takes in parameters and should return a newly constructed\n * entity. Internally it could be just calling `new` operator, or maybe it can\n * use some kind of other memory allocation for the entity.\n * \n * Take a look at Entity::RegisterType() function to see what the function\n * should do with its parameters.\n */\n \n  /**\n * @typedef void (*entity_clear)(Entity*)\n * \n * Entity destruction function.\n * \n * This function takes in an entity and destructs it. Internally it could be\n * just calling `delete` operator, or maybe it can use some other kind of memory\n * allocation for the entity.\n */\n \n /**\n * @struct tram::SharedEntityData framework/entity.h <framework/entity.h>\n * \n * Basic Entity parameters.\n * \n * Used for Entity serialization. This struct contains the parameters that every\n * Entity type shares in common.\n */\n\nnamespace tram {\n\nstruct EntityTypeInfo {\n    Entity* (*constructor)(const SharedEntityData&, const ValueArray&) = nullptr;\n    void (*destructor)(Entity*) = nullptr;\n    const Entity::FieldInfo* fields = nullptr;\n    size_t fieldcount = 0;\n};\n\nstatic Hashmap<Entity*> entity_id_list(\"Entity ID hashmap\", ENTITY_LIMIT);\nstatic Hashmap<Entity*> entity_name_list(\"Entity name hashmap\", NAMED_ENTITY_LIMIT);\nstatic Hashmap<EntityTypeInfo> registered_entity_types(\"Entity type hashmap\", ENTITY_TYPE_LIMIT);\n\n/// Creates an unnamed entity with a random ID.\nEntity::Entity() {\n    this->id = GenerateID();\n    Register();\n}\n\n/// Creates a named entity with a random ID.\nEntity::Entity(name_t name) {\n    this->id = GenerateID();\n    this->name = name;\n    Register();\n}\n\n/// Creates an entity from a SharedEntityData.\nEntity::Entity(const SharedEntityData& shared_data) {\n    id = shared_data.id;\n    name = shared_data.name;\n    flags = shared_data.flags;\n    location = shared_data.position;\n    rotation = shared_data.rotation;\n    \n    if (!id) {\n        flags |= NON_SERIALIZABLE;\n        id = GenerateID();\n    }\n    \n    flags |= LOADED_FROM_DISK;\n    \n    Register();\n}\n\n/// Destructs the entity.\n/// This automatically also removes the entity from its parent cell, and also\n/// unregisters it.\nEntity::~Entity() {\n    if (cell) cell->Remove(this);\n    \n    Unregister();\n}\n\n/// Check whether an entity has entered a different cell.\nvoid Entity::CheckTransition() {\n#ifndef ENGINE_EDITOR_MODE\n    if (!cell) return;\n\n    WorldCell* into = cell->FindTransition(location);\n\n    if (!into) return;\n    \n    Log(Severity::INFO, System::CORE, \"Entity {} transitioned into {}\", name, into->GetName());\n\n    cell->Remove(this);\n    into->Add(this);\n    \n    cell = into;\n    \n#endif // ENGINE_EDITOR_MODE\n}\n\nstatic void CheckEntityTypeDuplicate(name_t name, const Entity::FieldInfo* fields, size_t count) {\n    if (!registered_entity_types.Exists(name)) return;\n    \n    Log(Severity::WARNING, System::CORE, \"Entity type named {} already exists, overriding\", name);\n    \n    const auto existing = registered_entity_types.Find(name);\n    \n    if (existing.fieldcount != count) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Entity type {} override {} -> {} field count\", name, existing.fieldcount, count);\n    }\n    \n    for (size_t i = 0; i < count; i++) {\n        if (existing.fields[i].field_type != fields[i].field_type) {\n            Log(Severity::CRITICAL_ERROR, System::CORE, \"Entity type {} override, parameter {} type {} -> {}\", name, i, TypeToString(existing.fields[i].field_type), TypeToString(fields[i].field_type));\n        }\n    }\n}\n\n/// Registers a new entity type.\n/// @deprecated Use other RegisterType() methods instead.\nvoid Entity::RegisterType(name_t name, entity_make constr_func, entity_clear destr_func, const Type* fields, size_t fieldcount) {\n    FieldInfo* field_copy = nullptr;\n    \n    if (fields && fieldcount) {\n        field_copy = new FieldInfo[fieldcount];\n        \n        for (size_t i = 0; i < fieldcount; i++) {\n            field_copy[i].field_id = i;\n            field_copy[i].field_type = fields[i];\n            field_copy[i].field_flags = 0;\n        }\n    }\n    \n    CheckEntityTypeDuplicate(name, field_copy, fieldcount);\n    \n    registered_entity_types.Insert(name, {constr_func, destr_func, field_copy, fieldcount});\n}\n\n/// Registers a new entity type.\n/// @param name Name of the entity, should be the same as what its GetType()\n///                method returns.\n/// @param constr_func This function will be called when a new entity of this type is requested, e.g. when deserializing a worldcell file.\n/// @param destr_func This function will be called when an entity of this\n/// type is yeeted.\n/// @param fields Pointer to an array of serialization fields.\n/// @param fieldcount Size of the `fields` array.\nvoid Entity::RegisterType(name_t name, entity_make constr_func, entity_clear destr_func, const FieldInfo* fields, size_t fieldcount) {\n    FieldInfo* field_copy = nullptr;\n    \n    if (fields && fieldcount) {\n        field_copy = new FieldInfo[fieldcount];\n        \n        for (size_t i = 0; i < fieldcount; i++) {\n            field_copy[fields[i].field_id] = fields[i];\n        }\n    }\n    \n    CheckEntityTypeDuplicate(name, field_copy, fieldcount);\n    \n    registered_entity_types.Insert(name, {constr_func, destr_func, field_copy, fieldcount});\n}\n\n/// Registers a new entity type.\n/// Same as the other RegisterType() method, but uses an initializer list\n/// instead of an array.\n/// They are functionally identical, use whichever you like.\nvoid Entity::RegisterType(name_t name, entity_make constr_func, entity_clear destr_func, std::initializer_list<FieldInfo> fields) {\n    FieldInfo* field_copy = nullptr;\n    \n    if (fields.size()) {\n        field_copy = new FieldInfo[fields.size()];\n        \n        for (auto& field : fields) {\n            field_copy[field.field_id] = field;\n        }\n    }\n    \n    CheckEntityTypeDuplicate(name, field_copy, fields.size());\n    \n    registered_entity_types.Insert(name, {constr_func, destr_func, field_copy, fields.size()});\n}\n\n/// Registers the entity.\n/// Inserts the entity into the entity ID list, so that it can be found using\n/// the Entity::Find(id_t) static method.\n/// If the entity has a name, then it is also inserted into the name list, so\n/// that it can be found using the Entity::Find(name_t) static method.\nvoid Entity::Register() {\n    if (id) {\n        entity_id_list.Insert(id, this);\n    }\n\n    if (name) {\n        entity_name_list.Insert(name, this);\n    }\n}\n\n/// Unregisters the entity.\n/// Essentially, this is the reversal of what the Entity::Register() method\n/// has done. This method will remove the entity from the ID list and from the\n/// name list, if it has a name. It will no longer be possible to find the\n/// entity by using the Entity::Find() method and its overloads.\nvoid Entity::Unregister() {\n    if (id && entity_id_list.Find(id)) {\n        entity_id_list.Remove(id);\n    }\n\n    if (name && entity_name_list.Find(name)) {\n        entity_name_list.Remove(name);\n    }\n}\n\n/// Finds the entity by its ID number.\n/// @return If an entity with the given ID number has been found, a pointer to\n///         it will be returned. Otherwise a `nullptr` will be returned.\nEntity* Entity::Find(id_t entityID) {\n    return entity_id_list.Find(entityID);\n}\n\n/// Finds the entity by its name.\n/// @return If an entity with the given name has been found, a pointer to it\n///         will be returned. Otherwise a `nullptr` will be returned.\nEntity* Entity::Find(name_t entityName) {\n    return entity_name_list.Find(entityName);\n}\n\n// here we keep the entities that have been unregistered and unloaded, but\n// haven't been destructed yet, aka Yeet()'ed entities\nstatic std::vector<Entity*> yeetery;\n\n/// Updates entities.\n/// Should be called once per update cycle.\n/// This method will go through the list of all yeeted entities and will\n/// destruct the ones that need to be destructed.\nvoid Entity::Update() {\n    if (!yeetery.size()) return;\n    \n    // I don't remember why we are making a copy of the yeetery\n    auto safe_yeetery = yeetery;\n    \n    yeetery.clear();\n    \n    for (auto ent : safe_yeetery) {\n        if (ent->IsLoadedFromDisk()) continue;\n        \n        auto type_info = registered_entity_types.Find(ent->GetType());\n        \n        if (type_info.destructor) {\n            type_info.destructor(ent);\n        } else {\n            Log(Severity::WARNING, System::CORE, \"No destructor for name {} id {} typed {} found, using default\", ent->GetName(), ent->GetID(), ent->GetType());\n            delete ent;\n        }\n    }\n}\n\n/// Purges the entity.\n/// The entity will be flagged as deleted, unloaded, unregistered and then it\n/// will be held in internment until Entity::Update() is called and then, if\n/// needed, it will also be destructed.\nvoid Entity::Yeet() {\n    yeetery.push_back(this);\n    \n    this->flags |= DELETED;\n    \n    if (IsLoaded()) Unload();\n    \n    Unregister();\n}\n\n/// Finds all entities of a given type.\nstd::vector<Entity*> GetAllOfType(name_t type) {\n    std::vector<Entity*> ents;\n    for (Entity* ent : entity_id_list) {\n        if (ent->GetType() != type) continue;\n        ents.push_back(ent);\n    }\n    return ents;\n}\n\n/// Loads an Entity from a File.\nEntity* Entity::Make(name_t type, File* file) {\n    auto record = registered_entity_types.Find(type);\n    \n    if (!record.constructor) return nullptr;\n    \n    SharedEntityData shared_data {\n        type,\n        file->read_uint32(),\n        file->read_name(),\n        file->read_uint32(),\n        vec3 {file->read_float32(), file->read_float32(), file->read_float32()},\n        vec3 {file->read_float32(), file->read_float32(), file->read_float32()}\n    };\n    \n    static std::vector<Value> fields;\n    fields.clear();\n    \n    for (size_t i = 0; i < record.fieldcount; i++) {\n        switch (record.fields[i].field_type) {\n            case TYPE_BOOL:     fields.push_back((bool) file->read_uint32()); break; // hehe\n            case TYPE_NAME:     fields.push_back(file->read_name());    break;\n            case TYPE_STRING:   fields.push_back(nullptr);              break; // TODO: fix\n            case TYPE_INT8:     fields.push_back(file->read_int8());    break;\n            case TYPE_INT16:    fields.push_back(file->read_int16());   break;\n            case TYPE_INT32:    fields.push_back(file->read_int32());   break;\n            case TYPE_UINT8:    fields.push_back(file->read_uint8());   break;\n            case TYPE_UINT16:   fields.push_back(file->read_uint16());  break;\n            case TYPE_UINT32:   fields.push_back(file->read_uint32());  break;\n            case TYPE_FLOAT32:  fields.push_back(file->read_float32()); break;\n            case TYPE_VEC2:     fields.push_back(vec2{file->read_float32(),      // evil formatting. do not DO NOT\n                                file->read_float32()});                 break;\n            case TYPE_VEC3:     fields.push_back(vec3{file->read_float32(), \n                                file->read_float32(), file->read_float32()}\n                                );                                      break;\n            case TYPE_VEC4:     fields.push_back(vec4{file->read_float32(), \n                                file->read_float32(), file->read_float32(),\n                                file->read_float32()});                 break;\n            case TYPE_QUAT:     fields.push_back(quat{file->read_float32(),\n                                file->read_float32(), file->read_float32(),\n                                file->read_float32()});                 break;\n            default: assert(false);\n        }\n    }\n    \n    ValueArray field_array(fields.data(), fields.size());\n    \n    return record.constructor(shared_data, field_array);\n}\n\n/// Creates an entity.\n/// Uses data provided in a Entity::RegisterType() call to find the\n/// construction function of an entity type and then constructs it.\n/// @param  type        Type of the entity, this should be the same name that was\n///                     used when using Register() to register an entity type.\n/// @param  shared_data Shared data of the entity.\n/// @param  field_array Values to be filled in the entity's fields.\n/// @return Pointer to an entity if successful, otherwise a `nullptr`.\nEntity* Entity::Make(name_t type, const SharedEntityData& shared_data, const ValueArray& field_array) {\n    auto record = registered_entity_types.Find(type);\n    \n    if (!record.constructor) return nullptr;\n    \n    return record.constructor(shared_data, field_array);\n}\n\n}"
  },
  {
    "path": "src/framework/entity.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_ENTITY_H\n#define TRAM_SDK_FRAMEWORK_ENTITY_H\n\n#include <framework/uid.h>\n#include <framework/core.h>\n#include <framework/math.h>\n#include <framework/value.h>\n#include <framework/signal.h>\n\n#include <vector>\n\nnamespace tram {\n\nclass WorldCell;\nclass Message;\nstruct SharedEntityData;\nstruct ValueArray;\nclass File;\n\ntypedef Entity* (*entity_make)(const SharedEntityData&, const ValueArray&);\ntypedef void (*entity_clear)(Entity*);\n\nclass Entity {\npublic:\n    virtual void Load() = 0;\n\n    virtual void Unload() = 0;\n\n    virtual void Serialize() = 0;\n\n    Entity();\n    Entity(name_t name);\n    Entity(const SharedEntityData&);\n    \n    virtual ~Entity();\n    \n    inline name_t GetName() const { return name; }\n    inline id_t GetID() const { return id; }\n    inline WorldCell* GetCell() { return cell; }\n    inline bool IsLoaded() const { return flags & LOADED; }\n    inline bool IsAutoLoad() const { return !(flags & DISABLE_AUTO_LOAD); }\n    inline bool IsPersistent() const { return !(flags & NON_PERSISTENT); }\n    inline bool IsChanged() const { return flags & DIRTY; }\n    inline bool IsDeleted() const { return flags & DELETED; }\n    inline bool IsLoadedFromDisk() const { return flags & LOADED_FROM_DISK; }\n\n    void virtual UpdateParameters() = 0;\n    void virtual SetParameters() = 0;\n    \n    static void Update();\n    void Yeet();\n    \n    inline void SetAutoLoad(bool is) { flags = is ? flags & ~DISABLE_AUTO_LOAD : flags | DISABLE_AUTO_LOAD; }\n    inline void SetPersistent(bool is) { flags = is ? flags & ~NON_PERSISTENT : flags | NON_PERSISTENT; }\n\n    void SetLocation(vec3 loc) { location = loc; SetParameters(); CheckTransition();}\n    void SetRotation(quat rot) { rotation = rot; SetParameters(); }\n\n    inline void UpdateTransform(const vec3& loc, const quat& rot){\n        location = loc;\n        rotation = rot;\n        UpdateParameters();\n        CheckTransition();\n    }\n    \n    inline const vec3& GetLocation() { return location; }\n    inline const quat& GetRotation() { return rotation; }\n\n    virtual void MessageHandler(Message& msg) = 0;\n    virtual void EventHandler(Event &event) {};\n\n    virtual name_t GetType() = 0;\n\n    void CheckTransition();\n\n    struct FieldInfo {\n        uint32_t field_id;\n        Type field_type;\n        uint32_t field_flags;\n    };\n\n    enum : uint32_t {\n        FIELD_SERIALIZE = 1\n    };\n\n    static void RegisterType(name_t name, entity_make, entity_clear, const Type* fields, size_t fieldcount);\n    static void RegisterType(name_t name, entity_make, entity_clear, const FieldInfo* fields, size_t fieldcount);\n    static void RegisterType(name_t name, entity_make, entity_clear, std::initializer_list<FieldInfo> fields);\n    \n    inline SignalTable* GetSignalTable() { return signals; }\n    \n    std::vector<Entity*> GetAllOfType(name_t type);\n    \n    static Entity* Make(name_t type, File* file);\n    static Entity* Make(name_t type, const SharedEntityData&, const ValueArray&);\n    static Entity* Find(id_t entity_id);\n    static Entity* Find(name_t entity_name);\nprotected:\n    enum : uint32_t {\n        NON_PERSISTENT = 1,\n        LOADED = 2,\n        DISABLE_AUTO_LOAD = 4,\n        NON_SERIALIZABLE = 8,\n        DIRTY = 16,\n        DELETED = 32,\n        LOADED_FROM_DISK = 64\n    };\n\n    id_t id = 0;\n    name_t name;\n    \n    WorldCell* cell = nullptr;\n    \n    // don't really need this, since we can use the entity ID number to lookup\n    // the SignalTable for each entity\n    // TODO: fix\n    SignalTable* signals = nullptr;\n    \n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    vec3 location = {0.0f, 0.0f, 0.0f};\n\n    uint32_t flags = 0;\n\n    void Register();\n    void Unregister();\n    inline void FireSignal(signal_t type) { if (signals) signals->Fire(type, this->id); }\n    inline void FireSignal(signal_t type, Value value) { if (signals) signals->Fire(type, this->id, value); }\n\n    inline void SetFlag(uint32_t flag, bool value) { flags = value ? flags | flag : flags & ~flag; }\n\n    friend class WorldCell;\n};\n\nstruct SharedEntityData {\n    name_t type;\n    id_t id = 0;\n    name_t name;\n    uint32_t flags = 0;\n    vec3 position = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_ENTITY_H"
  },
  {
    "path": "src/framework/entitycomponent.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/entitycomponent.h>\n\n#include <framework/logging.h>\n\n/**\n * @class tram::EntityComponent framework/entitycomponent.h <framework/entitycomponent.h>\n * \n * Component base class.\n * \n * Usually the way that components work is that a user creates a component, i.e.\n * constructs an instance of a component, then they call setter methods on it to\n * feed it parameters and finally they call the Init() method in the component.\n * \n * In turn, the base component class checks whether all of the component's\n * requested resources have been loaded and then calls the component's Start()\n * method.\n * \n * @fn tram::EntityComponent::IsReady\n * Returns the component's readiness.\n * The component is considered ready when it's Init() method has been called,\n * all of it's Resource dependencies have been loaded and its Start() method has\n * been called.\n * @return True if the component's Start() method has been called.\n * \n * @fn tram::EntityComponent::IsInit\n * Returns the component's init status.\n * @return True if the Init() method has been called.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/entitycomponent.html\n */\n \nnamespace tram {\n\n/// Initializes an entity component.\n/// If an entity component has all of its resources already loaded, this will\n/// immediately Start() the component.\nvoid EntityComponent::Init() {\n    if (is_init) {\n        Log(Severity::WARNING, System::CORE, \"Called Init() multiple times on a {}\", typeid(*this).name());\n        return;\n    }\n    \n    is_init = true;\n    \n    if (!resources_waiting) {\n         Start();\n    }\n}\n\n/// Notifies the component of a streamed-in resource.\nvoid EntityComponent::ResourceReady() {\n    if (!resources_waiting) {\n        Log(Severity::WARNING, System::CORE, \"ResourceReady() called more than there are resources_waiting. This shouldn't happen.\");\n        return;\n    }\n    \n    resources_waiting--;\n    \n    if (!resources_waiting && is_init) {\n        Start();\n    }\n}\n\n}"
  },
  {
    "path": "src/framework/entitycomponent.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H\n#define TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H\n\n#include <templates/pool.h>\n\n#include <framework/core.h>\n#include <framework/async.h>\n\nnamespace tram {\n    \nclass Event;\nclass Entity;\n\nclass EntityComponent {\npublic:\n    EntityComponent() = default;\n    virtual ~EntityComponent() = default;\n\n    virtual void Init();\n\n    virtual void EventHandler(Event &event) = 0;\n\n    inline bool IsReady() { return is_ready; }\n    inline bool IsInit() { return is_init; }\n    \n    inline Entity* GetParent() { return parent; }\n    inline void SetParent(Entity* parent) { this->parent = parent; }\n\nprotected:\n    size_t resources_waiting = 0;\n    bool is_ready = false;\n    bool is_init = false;\n    Entity* parent = nullptr;\n    \n    // we could make resources_waiting a uint16_t and then we could even turn\n    // is_ready and is_init into a single bitmask, saving memory\n\n    void ResourceReady();\n\n    virtual void Start() = 0;\n    friend void Async::FinishResources();\n    template <typename T> friend class ResourceProxy;\n};\n\n/// Wrapper for an EntityComponent pointer.\n/// Automatically constructs the EntityComponent in the correct pool,\n/// also provides protection against accidental memory leaks.\ntemplate <typename T>\nclass Component {\npublic:\n    Component() {}\n    ~Component() { clear(); }\n    void make() { if (ptr) yeet(); init(); }\n    void clear() { if (ptr) yeet(); ptr = nullptr; }\n    T* get() { return ptr; }\n    T* operator->() { return ptr; }\n    T& operator*() { return ptr; }\n    operator T*() { return ptr; }\n    explicit operator bool() { return ptr != nullptr; }\nprotected:\n    void init();\n    void yeet();\n\n    T* ptr = nullptr;\n};\n    \n}\n\n#endif // TRAM_SDK_FRAMEWORK_ENTITYCOMPONENT_H"
  },
  {
    "path": "src/framework/event.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <vector>\n\n#include <templates/queue.h>\n#include <templates/stackpool.h>\n#include <templates/hashmap.h>\n\n#include <framework/event.h>\n#include <framework/entity.h>\n#include <framework/entitycomponent.h>\n#include <framework/logging.h>\n\n/**\n * @struct tram::Event framework/event.h <framework/event.h>\n * \n * Event data.\n * \n * Fill in the struct fields and then use Event::Post() to send it out to\n * listeners.\n * \n * @property tram::Event::type\n * Type of the event.\n * \n * @property tram::Event::subtype\n * Arbitrary event subtype.\n * Some event types have subtypes with specific semantics, but if you create\n * your own event types, you can use the subtype field for anything.\n * \n * @property tram::Event::poster_id\n * ID of the Entity that emitted the event.\n * Either set to the ID of an Entity, or can be set to zero.\n * \n * @property tram::Event::data\n * Pointer to arbitrary data.\n * Can be set to a nullptr. Some event types have specific data, e.g. structs or\n * other types that they need their data pointers to be pointing to.\n * For your own event types, you can use this pointer for whatever purpose you\n * want.\n * If uncertain, set this to a nullptr.\n * \n * @property tram::Event::data_int\n * Arbitrary data integer.\n * \n * @property tram::Event::data_value\n * Pointer to a value_t.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/event.html\n */\n\n/**\n * @typedef uint16_t event_t\n * Event type number.\n * Can be set to any of the values in Event::Type, or you can use\n * Event::Register() to allocate new event types.\n */\n \n /**\n * @typedef uint32_t listener_t\n * Event listener handle.\n * Opaque handle, used to yeet event listeners.\n */\n \n /**\n * @class tram::EventListener framework/event.h <framework/event.h>\n * \n * Smart wrapper class for Event listeners.\n * \n * Calling the make() method will initialize the event listener, just like\n * calling Event::AddListener() will do.\n * Calling the clear() method will delete the listener, just like calling\n * Event::RemoveListener() will do.\n * \n * When this class is destroyed, the event listener will also be automatically\n * removed.\n * \n * You can also call the make() and clear() methods as much as you want, no\n * resources will be leaked. Any existing event listener will be removed before\n * a new one gets added.\n */\n \nnamespace tram {\n\nconst size_t MAX_EVENT_TYPES = 100;\n    \nstruct ListenerInfo {\n    enum ListenerType : uint32_t {\n        LISTENER_COMPONENT,\n        LISTENER_ENTITY,\n        LISTENER_DATA_FUNCTION,\n        LISTENER_FUNCTION,\n        LISTENER_DELETED\n    };\n    \n    union {\n        EntityComponent* component = nullptr;\n        Entity* entity;\n        void (*data_function)(Event& event, void* data);\n        void (*function)(Event& event);\n    };\n\n    void* data;\n\n    listener_t handle = -1;\n    ListenerType type = LISTENER_COMPONENT;\n};\n\nstatic Queue<Event> event_queue (\"event queue\", 500);\nstatic StackPool<char> data_pool (\"event data pool\", 2000);\n//static std::vector<Pool<ListenerInfo>> listener_table(Event::LAST_EVENT, {\"EVENTListnerPoo\", 50});\nstatic std::vector<std::vector<ListenerInfo>> listener_table(Event::LAST_EVENT, std::vector<ListenerInfo>());\nstatic std::vector<std::vector<ListenerInfo>> new_listeners(Event::LAST_EVENT, std::vector<ListenerInfo>());\n\nstatic const char* event_names[MAX_EVENT_TYPES] = {\n    \"none\",\n    \"keypress\",\n    \"keydown\",\n    \"keyup\",\n    \"keychar\",\n    \"cursorpos\",\n    \"frame\",\n    \"tick\",\n    \"selected\",\n    \"look-at\"\n};\n\nstatic event_t last_type = Event::LAST_EVENT;\nstatic Hashmap<event_t> name_t_to_event_t(\"name_t_to_event_t\", (MAX_EVENT_TYPES*2)+11);\n\n/// Registers a new event type.\nevent_t Event::Register(const char* name) {\n    if (UID::is_empty(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Event name '{}' is empty\", name);\n    }\n    \n    if (!UID::no_quote(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Event name '{}' contains invalid characters\", name);\n    }\n    \n    for (event_t i = 0; i < last_type; i++) {\n        if (strcmp(event_names[i], name) != 0) continue;\n        \n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Event name '{}' already in use\", name);\n    }\n    \n    if (last_type >= MAX_EVENT_TYPES) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Event count limit exceeded when registering '{}'\", name);\n    }\n\n    listener_table.push_back(std::vector<ListenerInfo>());\n    new_listeners.push_back(std::vector<ListenerInfo>());\n    \n    event_names[last_type] = name;\n    \n    return last_type++;\n}\n\n/// Returns the event_t associated with a given name.\nevent_t Event::GetType(name_t name) {\n    event_t type = name_t_to_event_t.Find(name);\n    \n    if (!type && name) {\n        for (event_t i = 0; i < last_type; i++) {\n            if (event_names[i] == name) {\n                name_t_to_event_t.Insert(name, i);\n                return i;\n            }\n        }\n    }\n    \n    return type;\n}\n\n/// Returns the name that was associated with a given event_t.\nname_t Event::GetName(event_t type) {\n    if (type >= MAX_EVENT_TYPES) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Attempting index {} invalid event\", type);\n    }\n    \n    return event_names[type];\n}\n\n/// Returns the last event_t plus one.\n/// Useful for iterating over all registered events, i.e. in a \n/// `while (++event < Event::GetLast());` or a similar loop.\nevent_t Event::GetLast() {\n    return last_type;\n}\n\n\nstatic listener_t NewListenerHandle(event_t type) {\n    static listener_t last_id = 0;\n    \n    assert(type < last_type);\n    \n    listener_t id_part = (last_id++) << 16;\n    listener_t event_part = type;\n    \n    return id_part | event_part;\n}\n\n/// Registers a listener.\nlistener_t Event::AddListener(event_t type, EntityComponent* component) {\n    ListenerInfo new_listener;\n    \n    assert(type < last_type);\n    assert(component);\n    \n    new_listener.component = component;\n    new_listener.type = ListenerInfo::LISTENER_COMPONENT;\n    new_listener.handle = NewListenerHandle(type);\n    \n    new_listeners[type].push_back(new_listener);\n    \n    return new_listener.handle;\n}\n\n/// Registers a listener.\nlistener_t Event::AddListener(event_t type, Entity* entity) {\n    ListenerInfo new_listener;\n    \n    assert(type < last_type);\n    assert(entity);\n    \n    new_listener.entity = entity;\n    new_listener.type = ListenerInfo::LISTENER_ENTITY;\n    new_listener.handle = NewListenerHandle(type);\n    \n    new_listeners[type].push_back(new_listener);\n    \n    return new_listener.handle;\n}\n\n/// Registers a listener\nlistener_t Event::AddListener(event_t type, void* data, void (*data_function)(Event& event, void* data)) {\n    ListenerInfo new_listener;\n    \n    assert(type < last_type);\n    assert(data_function);\n    \n    new_listener.data = data;\n    new_listener.data_function = data_function;\n    new_listener.type = ListenerInfo::LISTENER_DATA_FUNCTION;\n    new_listener.handle = NewListenerHandle(type);\n    \n    new_listeners[type].push_back(new_listener);\n    \n    return new_listener.handle;\n}\n\n/// Registers a listener.\nlistener_t Event::AddListener(event_t type, void (*function)(Event& event)) {\n    ListenerInfo new_listener;\n    \n    assert(type < last_type);\n    assert(function);\n    \n    new_listener.function = function;\n    new_listener.type = ListenerInfo::LISTENER_FUNCTION;\n    new_listener.handle = NewListenerHandle(type);\n    \n    new_listeners[type].push_back(new_listener);\n    \n    return new_listener.handle;\n}\n\n/// Deregisters a listener.\nvoid Event::RemoveListener(listener_t listener_id) {\n    // here I just do a simple linear search in the listener table\n    // if it is too slow, then it could possibly be replaced with a binary search,\n    // since each new handle is numerically larger than the previous, as well as\n    // each listener being added to the end of the table makes it sorted.\n\n    listener_t event_part = (listener_id << 16) >> 16;\n    \n    // why is this code so weird\n    auto it = listener_table[event_part].begin();\n    auto end = listener_table[event_part].end();\n    \n    // this bit searches for listener in the main table\n    while (it != end) {\n        if (it->handle == listener_id) break;\n        it++;\n    }\n    \n    // this checks if it wasn't found\n    if (it == end) {\n        it = new_listeners[event_part].begin();\n        end = new_listeners[event_part].end();\n        \n        // this here will search it in the new listener table\n        while (it != end) {\n            if (it->handle == listener_id) break;\n            it++;\n        }\n        \n        if (it == end) {\n            Log(Severity::WARNING, System::CORE, \"Listener with key {} not found and not deleted\", listener_id);\n            return;\n        }\n        \n        // deletes it if it is found\n        new_listeners[event_part].erase(it);\n        \n        return;\n    }\n    \n    // otherwise mark it as deleted for removal later\n    it->type = ListenerInfo::LISTENER_DELETED;\n}\n\n/// Dispatches events from the event queue.\nvoid Event::Dispatch() {\n    while (event_queue.size()) {\n        Event& event = event_queue.front();\n\n        for (auto& listener : listener_table[event.type]) {\n            switch (listener.type) {\n                case ListenerInfo::LISTENER_COMPONENT:\n                    listener.component->EventHandler(event);\n                    break;\n                case ListenerInfo::LISTENER_ENTITY:\n                    listener.entity->EventHandler(event);\n                    break;\n                case ListenerInfo::LISTENER_DATA_FUNCTION:\n                    listener.data_function(event, listener.data);\n                    break;\n                case ListenerInfo::LISTENER_FUNCTION:\n                    listener.function(event);\n                    break;\n                case ListenerInfo::LISTENER_DELETED:\n                    break;\n            }\n        }\n\n        event_queue.pop();\n    }\n    \n    data_pool.Reset();\n    \n    // the reason why we mark listeners for deletion and peform the deletions\n    // later is because we are using std::vectors for the listener tables.\n    // if you are iterating through a vector and delete stuff from it, you might\n    // run into some memory errors, which could happen if you delete an event\n    // listener from an event handler.\n    // same applies to inserting new event listeners.\n    \n    // remove listeners pending for deletion\n    for (auto& table : listener_table) {\n        std::erase_if(table, [](ListenerInfo& info) {\n            return info.type == ListenerInfo::LISTENER_DELETED;\n        });\n    }\n    \n    // add in listeners pending for insertion\n    // TODO: change this to using zip when C++23 comes out\n    for (size_t event = 0; event < new_listeners.size(); event++) {\n        for (auto& listener : new_listeners[event]) {\n            listener_table[event].push_back(listener);\n        }\n        new_listeners[event].clear();\n    }\n}\n\n/// Adds an event to the event queue.\nvoid Event::Post (const Event &event) {\n    if (!event.type || event.type >= last_type) {\n        Log(Severity::WARNING, System::CORE, \"Attempting to post an unregistered event type with {} index\", event.type);\n        return;\n    }\n    \n    event_queue.push(event);\n}\n\n/// Allocates space for event data.\n/// This allocation is useful for storing the additional data (Event::data pointer),\n/// for events, since all allocated space will be cleared once all events have been \n/// dispatched.\n/// @note Only store POD data types in the allocated memory. Either that, or\n///       prepare for memory leaks. Altough an IDE might complain that a value_t\n///       is not POD, you can ignore the warning. Overwriting a value_t\n///       shouldn't cause memory leaks.\nvoid* Event::AllocateData(size_t ammount) {\n    return data_pool.AddNew(ammount);\n}\n\nEventListener::~EventListener() {\n    clear();    \n}\n\n/// Essentially same as Event::AddListener().\nvoid EventListener::make(event_t event, Entity* parent) {\n    clear();\n    listener = Event::AddListener(event, parent);\n}\n\n/// Essentially same as Event::AddListener().\nvoid EventListener::make(event_t event, EntityComponent* parent) {\n    clear();\n    listener = Event::AddListener(event, parent);\n}\n\n/// Essentially same as Event::AddListener().\nvoid EventListener::make(event_t event, void (*handler)(Event& event)) {\n    clear();\n    listener = Event::AddListener(event, handler);\n}\n\n/// Essentially same as Event::RemoveListener().\nvoid EventListener::clear() {\n    if (listener) {\n        Event::RemoveListener(listener);\n    }\n\n    listener = 0;\n}\n\n}"
  },
  {
    "path": "src/framework/event.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_EVENT_H\n#define TRAM_SDK_FRAMEWORK_EVENT_H\n\n#include <cstdint>\n#include <cstddef>\n#include <type_traits>\n\n#include <framework/uid.h>\n\nnamespace tram {\n\ntypedef uint16_t event_t;\ntypedef uint32_t id_t;\ntypedef uint32_t listener_t;\n\nclass EntityComponent;\nclass Entity;\n\nstruct Value;\ntypedef Value value_t;\n\nstruct Event {\n    enum Type : event_t {\n        NONE,           //< Invalid event type\n        KEYPRESS,       //< Keyboard key still pressed\n        KEYDOWN,        //< Keyboard key pressed\n        KEYUP,          //< Keyboard key released\n        KEYCHAR,        //< Keyboard input registered\n        CURSORPOS,      //< Cursor moved\n        FRAME,          //< Emitted every frame\n        TICK,           //< Emitted every tick\n        SELECTED,       //< Cursor on top of an interactable object\n        LOOK_AT,        //< Entity is looking in a direction\n        LAST_EVENT\n    };\n\n    static event_t Register(const char* name);\n    static event_t GetType(name_t name);\n    static name_t GetName(event_t type);\n    static event_t GetLast();\n    \n    static void Post(const Event &event);\n    static void Dispatch();\n    \n    static listener_t AddListener(event_t type, EntityComponent* component);\n    static listener_t AddListener(event_t type, Entity* entity);\n    static listener_t AddListener(event_t type, void* data, void (*handler)(Event& event, void* data));\n    static listener_t AddListener(event_t type, void (*handler)(Event& event));\n    \n    static void RemoveListener(listener_t listener_id);\n    \n    static void* AllocateData(size_t ammount);\n    template <typename T> static T* AllocateData() { return (T*)AllocateData(sizeof(T)); }\n    template <typename T> static T* AllocateData(const T& data) { T* ptr = (T*)AllocateData(sizeof(T)); *ptr = data; return ptr; }\n\n    event_t type;\n    event_t subtype;\n    id_t poster;\n    \n    union {\n        void* data = nullptr;\n        int32_t data_int;\n        value_t* data_value;\n    };\n};\n\nclass EventListener {\npublic:\n    ~EventListener();\n    void make(event_t event, Entity* parent);\n    void make(event_t event, EntityComponent* parent);\n    void make(event_t event, void (*handler)(Event& event));\n    void clear();\n    explicit operator bool() { return listener != 0; }\nprotected:\n    listener_t listener = 0;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_EVENT_H"
  },
  {
    "path": "src/framework/file.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/file.h>\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <charconv>\n#include <cstring>\n\n/**\n * @struct tram::File framework/file.h <framework/file.h>\n * \n * Very fast file reader/writer.\n * \n * For reading a file, set the File::READ flag in the mode bitmask.\n * The file, referenced by the path, will be immediately opened, if possible.\n * After opening, it will be fully read into memory. After that you can use\n * all of the read_xyz() methods.\n * \n * To check if the file has ended and no more reading can be done, use the\n * is_continue() method.\n * \n * To check whether the file was opened, use the is_open() method.\n * \n * For writing to a file, set the File::WRITE flag in the mode bitmask.\n * \n * After that you can use the various write_xyz() methods.\n * \n * All of the writing will take place in a large buffer, which after the File\n * class is destructed will be written to disk.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/file.html\n */\n\nnamespace tram {\n    \nclass FileReaderParser {\npublic:\n    virtual int8_t read_int8() = 0;\n    virtual int16_t read_int16() = 0;\n    virtual int32_t read_int32() = 0;\n    virtual int64_t read_int64() = 0;\n    \n    virtual uint8_t read_uint8() = 0;\n    virtual uint16_t read_uint16() = 0;\n    virtual uint32_t read_uint32() = 0;\n    virtual uint64_t read_uint64() = 0;\n    \n    virtual float read_float32() = 0;\n    virtual double read_float64() = 0;\n    \n    virtual name_t read_name() = 0;\n    virtual std::string_view read_string(char delimiter) = 0;\n    virtual std::string_view read_token() = 0;\n    virtual std::string_view read_line() = 0;\n    \n    virtual size_t get_line() = 0;\n    \n    virtual void skip_newline() = 0;\n    virtual void skip_whitespace() = 0;\n    \n    virtual bool is_error() = 0;\n    virtual void reset_error() = 0;\n    \n    virtual bool is_continue() = 0;\n    \n    void set_skip_value(bool skip_value) { this->skip_value = skip_value; }\n    void set_skip_newline(bool skip_newline) { this->skip_newline_flag = skip_newline; }\nprotected:\n    bool skip_newline_flag = true;\n    bool skip_value = true;\n};\n\nclass TextReaderParser : public FileReaderParser {\npublic:\n    TextReaderParser(FileReader* reader) {\n        this->cur = reader->GetContents();\n        this->end = reader->GetContents() + reader->GetSize();\n    }\n    \n    int8_t read_int8() {\n        return from_chars<int8_t>();\n    }\n    \n    int16_t read_int16() {\n        return from_chars<int16_t>();\n    }\n    \n    int32_t read_int32() {\n        return from_chars<int32_t>();\n    }\n    \n    int64_t read_int64() {\n        return from_chars<int64_t>();\n    }\n    \n    \n    uint8_t read_uint8() {\n        return from_chars<uint8_t>();\n    }\n    \n    uint16_t read_uint16() {\n        return from_chars<uint16_t>();\n    }\n    \n    uint32_t read_uint32() {\n        return from_chars<uint32_t>();\n    }\n    \n    uint64_t read_uint64() {\n        return from_chars<uint64_t>();\n    }\n    \n    \n    float read_float32() {\n        return from_chars<float>();\n    }\n    \n    double read_float64() {\n        return from_chars<double>();\n    }\n    \n    // TODO: add support for double quotes\n    name_t read_name() {\n        char buffer[200];\n        char* buf_it = buffer;\n        \n        const char* ncur = cur;\n        for (; ncur < end && !isspace(*ncur); ncur++) {\n            *buf_it++ = *ncur;\n        }\n        \n        if (skip_value) {\n            cur = ncur;\n        }\n        \n        error_flag = false;\n        \n        *buf_it = '\\0';\n        \n        // this only happens if read_name() is called while the cursor is\n        // pointing to whitespace, which should not happen, since we always skip\n        // whitespace before calling this method. alas, it does seem to happen\n        // anyway\n        // TODO: figure out where the bug is\n        if (*buffer == '\\0') {\n            return UID();\n        }\n        \n        return UID(buffer);\n    }\n    \n    std::string_view read_token() {\n        const char* begin = cur;\n        size_t length = 0;\n        \n        for (; cur < end && !isspace(*cur); cur++) {\n            length++;\n        }\n        \n        return {begin, length};\n    }\n    \n    std::string_view read_string(char delimiter) {\n        if (delimiter == *cur) {\n            cur++;\n        } else {\n            delimiter = 0;\n        }\n        \n        const char* begin = cur;\n        size_t length = 0;\n        \n        for (; (delimiter && *cur != delimiter || !delimiter && !isspace(*cur)) && cur < end; cur++) {\n            if (*cur == '\\n') current_line++;\n            length++;\n        }\n        \n        cur++;\n        \n        return {begin, length};\n    }\n    \n    std::string_view read_line() {\n        const char* first_char = cur;\n        const char* last_char = cur;\n    \n        while (*last_char != '\\r' && *last_char != '\\n' && last_char < end) {\n            last_char++;\n        }\n        \n        size_t line_length = last_char - first_char;\n        \n        if (skip_value) {\n            cur = last_char;\n        }\n        \n        return std::string_view (first_char, line_length);\n    }\n    \n    size_t get_line() {\n        return current_line;\n    }\n    \n    void skip_newline() {\n        while (*cur != '\\r' && *cur != '\\n' && cur < end) {\n            cur++;\n        }\n        \n        while (cur < end && ((*cur == '\\n' && ++current_line) || *cur == '\\r')) cur++;\n    }\n    \n    void skip_whitespace() {\n        //char f[2] = \"e\";\n        //f[0] = *cur;\n        //Log(\"skip: '{}' flag: {}\", f, skip_newline_flag);\n        \n        while (cur < end) {\n            if (*cur == '\\n' && !skip_newline_flag) {\n                return;\n            } else if (!isspace(*cur)) {\n                if (*cur != '#') {\n                    return;\n                }\n                \n                // skip until the end of the line\n                while (cur < end && *cur != '\\n' && *cur != '\\r') cur++;\n                \n                // skip over linebreak\n                while (cur < end && ((*cur == '\\n' && ++current_line) || *cur == '\\r')) cur++;\n                \n                // skip over comments, if any on next line\n                skip_whitespace();\n                \n                return;\n            }\n            \n            // advance cursor and count newlines\n            if (*cur++ == '\\n') current_line++;\n        }\n    }\n    \n    bool is_continue() {\n        skip_whitespace();\n        \n        for (const char* c = cur; c < end; c++) {\n            if (!isspace(*c)) return true;\n        }\n        \n        return false;\n    }\n    \n    bool is_error() {\n        return error_flag;\n    }\n    \n    void reset_error() {\n        error_flag = false;\n    }\nprivate:\n    template <typename T>\n    T from_chars() {\n        T value{};\n        std::from_chars_result result = std::from_chars(cur, end, value);\n        if (result.ec != std::errc()) {\n            error_flag = true;\n        }\n        if (skip_value) {\n            cur = result.ptr;\n        }\n        return value;\n    }\n    \n#ifdef __clang__\n    template <>\n    float from_chars<float>() {\n        float value = 0.0f;\n        char* new_cursor = nullptr;\n        value = strtof(cur, &new_cursor);\n        \n        if (skip_value) {\n            cur = new_cursor;\n        }\n        \n        return value;\n    }\n\n    template <>\n    double from_chars<double>() {\n        return from_chars<float>(); // haha, nice. very evil\n    }\n#endif\n\n    size_t current_line = 1;\n\n    const char* cur = nullptr;\n    const char* end = nullptr;\n    bool error_flag = false;\n};\n\nclass BinaryReaderParser : public FileReaderParser {\npublic:\n    BinaryReaderParser(FileReader* reader) {\n        this->cur = reader->GetContents();\n        this->end = reader->GetContents() + reader->GetSize();\n    }\n    \n    int8_t read_int8() {\n        return from_binary<int8_t>();\n    }\n    \n    int16_t read_int16() {\n        return from_binary<int16_t>();\n    }\n    \n    int32_t read_int32() {\n        return from_binary<int32_t>();\n    }\n    \n    int64_t read_int64() {\n        return from_binary<int64_t>();\n    }\n    \n    \n    uint8_t read_uint8() {\n        return from_binary<uint8_t>();\n    }\n    \n    uint16_t read_uint16() {\n        return from_binary<uint16_t>();\n    }\n    \n    uint32_t read_uint32() {\n        return from_binary<uint32_t>();\n    }\n    \n    uint64_t read_uint64() {\n        return from_binary<uint64_t>();\n    }\n    \n    \n    float read_float32() {\n        return from_binary<float>();\n    }\n    \n    double read_float64() {\n        return from_binary<double>();\n    }\n    \n    name_t read_name() {\n        char buffer[200];\n        char* buf_it = buffer;\n        \n        const char* ncur = cur;\n        for (; ncur < end && *ncur != '\\0'; ncur++) {\n            *buf_it++ = *ncur;\n        }\n        \n        if (skip_value) {\n            cur = ncur;\n        }\n        \n        error_flag = false;\n        \n        *buf_it = '\\0';\n        \n        if (strlen(buffer) == 0 ) Log(\"NOT GOOD ZERO NAME\");\n        \n        return UID(buffer);\n    }\n    \n    // TODO: figure out what this should do\n    std::string_view read_token() {\n        const char* begin = cur;\n        size_t length = 0;\n        \n        for (; !isspace(*cur) && cur < end; cur++) {\n            length++;\n        }\n        \n        return {begin, length};\n    }\n    \n    std::string_view read_string(char delimiter) {\n        const char* begin = cur;\n        size_t length = 0;\n        \n        for (; *cur != '\\0' && cur < end; cur++) {\n            length++;\n        }\n        \n        cur++;\n        \n        return {begin, length};\n    }\n    \n    // TODO: figure out what this should do\n    std::string_view read_line() {\n        const char* first_char = cur;\n        const char* last_char = cur;\n    \n        while (*last_char != '\\r' && *last_char != '\\n' && last_char < end) {\n            last_char++;\n        }\n        \n        size_t line_length = last_char - first_char;\n        \n        if (skip_value) {\n            cur = last_char;\n        }\n        \n        return std::string_view (first_char, line_length);\n    }\n    \n    size_t get_line() {\n        return 0;\n    }\n    \n    void skip_newline() {\n        // doesn't do anything\n    }\n    \n    void skip_whitespace() {\n        // doesn't do anything\n    }\n    \n    bool is_continue() {\n        while (cur < end) {\n            if (!isspace(*cur)) return true;\n            cur++;\n        }\n        \n        return false;\n    }\n    \n    bool is_error() {\n        return error_flag;\n    }\n    \n    void reset_error() {\n        error_flag = false;\n    }\nprivate:\n    template <typename T>\n    T from_binary() {\n        if (cur + sizeof(T) > end) {\n            error_flag = true;\n            return T();\n        }\n        \n        T value = *(T*)cur;\n        if (skip_value) {\n            cur += sizeof(T);\n        }\n        \n        return value;\n    }\n    \n\n    const char* cur = nullptr;\n    const char* end = nullptr;\n    bool error_flag = false;\n};\n\nclass FileWriterParser {\npublic:\n    virtual void write_int8(int8_t value) = 0;\n    virtual void write_int16(int16_t value) = 0;\n    virtual void write_int32(int32_t value) = 0;\n    virtual void write_int64(int64_t value) = 0;\n    \n    virtual void write_uint8(uint8_t value) = 0;\n    virtual void write_uint16(uint16_t value) = 0;\n    virtual void write_uint32(uint32_t value) = 0;\n    virtual void write_uint64(uint64_t value) = 0;\n    \n    virtual void write_float32(float value) = 0;\n    virtual void write_float64(double value) = 0;\n    \n    virtual void write_name(name_t value) = 0;\n    virtual void write_string(const char* value, char delimiter) = 0;\n    virtual void write_newline() = 0;\n    \n    bool is_error() {\n        return error_flag;\n    }\n    \n    void reset_error() {\n        error_flag = false;\n    }\nprotected:\n    bool error_flag = false;\n};\n\nclass TextWriterParser : public FileWriterParser {\npublic:\n    TextWriterParser(FileWriter* writer) {\n        this->writer = writer;\n    }\n    \n    virtual void write_int8(int8_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_int16(int16_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_int32(int32_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_int64(int64_t value) {\n        write_to_chars(value);\n    }\n    \n    \n    virtual void write_uint8(uint8_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_uint16(uint16_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_uint32(uint32_t value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_uint64(uint64_t value) {\n        write_to_chars(value);\n    }\n    \n    \n    virtual void write_float32(float value) {\n        write_to_chars(value);\n    }\n    \n    virtual void write_float64(double value) {\n        write_to_chars(value);\n    }\n    \n    \n    virtual void write_name(name_t value) {\n        writer->SetContents(value, strlen(value));\n        writer->SetContents(\" \", 1);\n    }\n    \n    virtual void write_string(const char* value, char delimiter)  {\n        for (const char* c = value; *c != '\\0'; c++) {\n            if (*c == delimiter) {\n                Log(Severity::ERROR, System::CORE, \"String `{}` contains delimiter `{}`, skipping.\");\n                error_flag = true;\n                return;\n            }\n        }\n        \n        if (delimiter) writer->SetContents(&delimiter, 1);\n        writer->SetContents(value, strlen(value));\n        if (delimiter) writer->SetContents(&delimiter, 1);\n        writer->SetContents(\" \", 1);\n    }\n    \n    virtual void write_newline() {\n        writer->SetContents(\"\\n\", 1);\n    }\n    \nprivate:\n    template <typename T>\n    void write_to_chars(T value) {\n        char buffer[25];\n        char* begin = buffer;\n        char* end = buffer + 24;\n        end = std::to_chars(begin, end, value).ptr;\n        *end = ' ';\n        end++;\n        writer->SetContents(buffer, end - begin);\n    }\n    FileWriter* writer = nullptr;\n};\n\nclass BinaryWriterParser : public FileWriterParser {\npublic:\n    BinaryWriterParser(FileWriter* writer) {\n        this->writer = writer;\n    }\n    \n    virtual void write_int8(int8_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_int16(int16_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_int32(int32_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_int64(int64_t value) {\n        write_to_binary(value);\n    }\n    \n    \n    virtual void write_uint8(uint8_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_uint16(uint16_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_uint32(uint32_t value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_uint64(uint64_t value) {\n        write_to_binary(value);\n    }\n    \n    \n    virtual void write_float32(float value) {\n        write_to_binary(value);\n    }\n    \n    virtual void write_float64(double value) {\n        write_to_binary(value);\n    }\n    \n    \n    virtual void write_name(name_t value) {\n        writer->SetContents(value, strlen(value) + 1);\n    }\n    \n    virtual void write_string(const char* value, char delimiter)  {\n        writer->SetContents(value, strlen(value) + 1);\n    }\n    \n    virtual void write_newline() {\n        writer->SetContents(\"\\n\", 1);\n    }\n    \nprivate:\n    template <typename T>\n    void write_to_binary(T value) {\n        writer->SetContents((char*)&value, sizeof(T));\n    }\n    FileWriter* writer = nullptr;\n};\n\n/// Opens a file.\n/// @param path Path to the file. If no prefix is set, this path will be\n///             interpreted as being relative to the project/executable\n///             working directory.\n/// @param mode Mode is a bitmask consisting of flags that can be found in the\n///             AccessMode enum.\nFile::File(char const* path, uint32_t mode) : path(path), mode(mode) {    \n    if (mode & TEXT && mode & BINARY) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"File has both File::TEXT and File::BINARY flags set\");\n    }\n    \n    if (mode & READ && mode & WRITE) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"File has both File::READ and File::WRITE flags set\");\n    }\n    \n    if (mode & READ) {\n        reader = FileReader::GetReader(path);\n\n        if (!reader || reader->GetStatus() != FileStatus::READY) return;\n        \n        if (mode & BINARY) {\n            reader_parser = new BinaryReaderParser(reader);\n        } else {\n            reader_parser = new TextReaderParser(reader);\n        }\n        \n        \n        if (mode & PAUSE_LINE) {\n            reader_parser->set_skip_newline(false);\n        }\n        \n    } else if (mode & WRITE) {\n        writer = FileWriter::GetWriter(path);\n        \n        if (!writer || writer->GetStatus() == FileStatus::READY) {\n            if (mode & BINARY) {\n                writer_parser = new BinaryWriterParser(writer);\n            } else {\n                writer_parser = new TextWriterParser(writer);\n            }\n        }\n        \n    } else {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"File doesn't have File::READ or File::WRITE flag set\");\n    }\n}\n\nFile::~File() {\n    if (reader) {\n        reader->Yeet();\n    }\n    \n    if (writer) {\n        writer->Yeet();\n    }\n}\n\n/// Returns true if file was opened.\nbool File::is_open() { \n    if (reader) {\n        return reader->GetStatus() == FileStatus::READY;\n    }\n    \n    if (writer) {\n        return writer->GetStatus() == FileStatus::READY;\n    }\n    \n    return false;\n}\n\n/// Returns true if file parser has not reached end.\nbool File::is_continue() {\n    if (reader_parser) {\n        return reader_parser->is_continue();\n    }\n    \n    if (writer_parser) {\n        return true;\n    }\n    \n    return false;\n}\n\nvoid File::write_int8(int8_t value) { writer_parser->write_int8(value); }\nvoid File::write_int16(int16_t value) { writer_parser->write_int16(value); }\nvoid File::write_int32(int32_t value) { writer_parser->write_int32(value); }\nvoid File::write_int64(int64_t value) { writer_parser->write_int64(value); }\n\nvoid File::write_uint8(uint8_t value) { writer_parser->write_uint8(value); }\nvoid File::write_uint16(uint16_t value) { writer_parser->write_uint16(value); }\nvoid File::write_uint32(uint32_t value) { writer_parser->write_uint32(value); }\nvoid File::write_uint64(uint64_t value) { writer_parser->write_uint64(value); }\n\nvoid File::write_float32(float value) { writer_parser->write_float32(value);}\nvoid File::write_float64(double value) { writer_parser->write_float64(value); }\n\nvoid File::write_name(name_t value) { writer_parser->write_name(value); }\nvoid File::write_string(const char* value, char delimiter) { writer_parser->write_string(value, delimiter); }\n\n/// Writes a newline to the file.\n/// The newline is just the `\\n` character.\nvoid File::write_newline() { writer_parser->write_newline(); }\n\nint8_t File::read_int8() { reader_parser->skip_whitespace(); return reader_parser->read_int8(); }\nint16_t File::read_int16() { reader_parser->skip_whitespace(); return reader_parser->read_int16(); }\nint32_t File::read_int32() { reader_parser->skip_whitespace(); return reader_parser->read_int32(); }\nint64_t File::read_int64() { reader_parser->skip_whitespace(); return reader_parser->read_int64(); }\n\nuint8_t File::read_uint8() { reader_parser->skip_whitespace(); return reader_parser->read_uint8(); }\nuint16_t File::read_uint16() { reader_parser->skip_whitespace(); return reader_parser->read_uint16(); }\nuint32_t File::read_uint32() { reader_parser->skip_whitespace(); return reader_parser->read_uint32(); }\nuint64_t File::read_uint64() { reader_parser->skip_whitespace(); return reader_parser->read_uint64(); }\n\nfloat File::read_float32() { reader_parser->skip_whitespace(); return reader_parser->read_float32(); }\ndouble File::read_float64() { reader_parser->skip_whitespace(); return reader_parser->read_float64(); }\n\nname_t File::read_name() { reader_parser->skip_whitespace(); return reader_parser->read_name(); }\nstd::string_view File::read_token() { reader_parser->skip_whitespace(); return reader_parser->read_token(); }\nstd::string_view File::read_string(char delimiter) { reader_parser->skip_whitespace(); return reader_parser->read_string(delimiter); }\n\n/// Parses off the remaining line.\nstd::string_view File::read_line() { auto line = reader_parser->read_line(); reader_parser->skip_newline(); return line; }\n\n/// Returns current line number.\nsize_t File::get_line() { return reader_parser->get_line(); }\n\n/// Skips over a linebreak.\n/// Probably only useful if the file has been opened for reading in the\n/// `MODE_PAUSE_LINE` mode, since the parser will stop at any new line and the\n/// only way to continue parsing is to use this method.\nvoid File::skip_linebreak() { reader_parser->skip_newline(); }\n\n/// Resets the error flag.\nvoid File::reset_flags() {\n    if (reader_parser) reader_parser->reset_error();\n    if (writer_parser) writer_parser->reset_error();\n}\n\nbool File::flush() {\n    if (writer) return writer->Flush();\n    return false;\n}\n\n/// Checks if there has been an error.\n/// The error flag does not get cleared on its own, so if an error ocurred\n/// anywhere, this method will report that.\n/// To determine whether a certain value has been parsed correctly, first use\n/// the reset_flags() method to reset the error flag, then use the read_xyz()\n/// method to read in the value and then use this method to determine whether\n/// there was an error in parsing that specific method.\nbool File::was_error() {\n    if (reader_parser) return reader_parser->is_error();\n    if (writer_parser) return writer_parser->is_error();\n    return false;\n}\n\n}"
  },
  {
    "path": "src/framework/file.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_FILE_H\n#define TRAM_SDK_FRAMEWORK_FILE_H\n\n#include <string>\n\n#include <framework/core.h>\n#include <framework/uid.h>\n\nnamespace tram {\n\nclass FileReader;\nclass FileWriter;\nclass FileReaderParser;\nclass FileWriterParser;\n\nclass File {\npublic:\n    File (char const* path, uint32_t mode);\n    ~File();\n    \n    bool is_open();\n    bool is_continue();\n    \n    void write_int8(int8_t value);\n    void write_int16(int16_t value);\n    void write_int32(int32_t value);\n    void write_int64(int64_t value);\n    \n    void write_uint8(uint8_t value);\n    void write_uint16(uint16_t value);\n    void write_uint32(uint32_t value);\n    void write_uint64(uint64_t value);\n    \n    void write_float32(float value);\n    void write_float64(double value);\n    \n    void write_name(name_t value);\n    void write_string(const char* value, char delimiter = '\"');\n    void write_newline();\n    \n    int8_t read_int8();\n    int16_t read_int16();\n    int32_t read_int32();\n    int64_t read_int64();\n    \n    uint8_t read_uint8();\n    uint16_t read_uint16();\n    uint32_t read_uint32();\n    uint64_t read_uint64();\n    \n    float read_float32();\n    double read_float64();\n    \n    name_t read_name();\n    std::string_view read_string(char delimiter = '\"');\n    std::string_view read_token();\n    std::string_view read_line();\n    \n    size_t get_line();\n    \n    void skip_linebreak();\n    void reset_flags();\n    \n    bool flush();\n    \n    bool was_error();\n    \n    enum AccessMode : uint32_t {\n        READ = 1,       //< Opens the file for reading.\n        WRITE = 2,      //< Opens the file for writing.\n        PAUSE_LINE = 4, //< Pauses the parsing on every linebreak.\n        TEXT = 8,       //< Opens file for reading/writing in whitespace seperated text format.\n        BINARY = 16     //< Opens file for reading/writing in binary format.\n    };\n    \n    // TODO: check whichever of these can be private and private them\n    \n    std::string path;\n    uint32_t mode;\n    \n    bool pause_next;\n    \n    // cursors for writing\n    char* buffer = nullptr;\n    char* buffer_cursor = nullptr;\n    char* buffer_end = nullptr;\n    \n\n    \n    FileReader* reader = nullptr;\n    FileWriter* writer = nullptr;\n    FileReaderParser* reader_parser = nullptr;\n    FileWriterParser* writer_parser = nullptr;\n};\n    \n}\n\n#endif // TRAM_SDK_FRAMEWORK_FILE_H"
  },
  {
    "path": "src/framework/graph.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/graph.h>\n\n/**\n * @class tram::Path framework/path.h <framework/path.h>\n * \n * Base class for graphs.\n * \n * This class is used as a base for Navmesh and Path.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/graph.html\n */\n\nnamespace tram {\n\n}"
  },
  {
    "path": "src/framework/graph.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_GRAPH_H\n#define TRAM_SDK_FRAMEWORK_GRAPH_H\n\n#include <framework/math.h>\n#include <vector>\n\nnamespace tram {\n    \nstruct Edge {\n    uint32_t from;\n    uint32_t to;\n};\n\nstruct Node {\n    vec3 position;\n    std::vector<uint32_t> edges;\n};\n    \nclass Graph {\nprotected:\n    std::vector<Node> nodes;\n    std::vector<Edge> edges;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_GRAPH_H"
  },
  {
    "path": "src/framework/gui.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <templates/stack.h>\n\n#include <framework/gui.h>\n\n#include <framework/system.h>\n#include <framework/logging.h>\n#include <framework/event.h>\n#include <framework/language.h>\n\n#include <render/api.h>\n#include <render/vertices.h>\n#include <render/sprite.h>\n#include <render/material.h>\n\n#include <cstring>\n\n/**\n * @namespace tram::GUI\n * \n * Immediate mode GUI system.\n * \n * If you don't like it, you can always integrate imgui, but I personally very\n * much prefer this way of building GUIs.\n * \n * First you need to register fonts, which are just Sprites. The glyphs are just\n * sprite frame indices. There are some default fonts in the Ext::Menu system,\n * if you don't want to make your own fonts.\n * \n * To draw widgets, just call their respective functions once per frame.\n * \n * To position the widgets, use the frame pushing and popping functions.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/gui.html\n */\n\nnamespace tram::GUI {\n\nstruct FrameObject {\n    uint32_t x, y, w, h;\n    uint32_t cursor_x, cursor_y;\n    uint32_t stack_height;\n};\n\nstatic Stack<FrameObject> frame_stack(\"GUI Frame stack\", 100);\n\nstatic Render::Sprite* fonts[16] = {nullptr};\n\n// glyphvertices are where we put all of the GUI triangle vertices in\n// we upload them to the GPU each frame for drawing\nstatic Render::vertexarray_t glyphvertices_vertex_array = {};\nstatic Render::drawlistentry_t glyphvertices_entry;\n\nstatic std::vector<Render::SpriteVertex> glyphvertices;\n\n// instead of using these, use the SetCursorDelayed() to change the pointer\nstatic UI::CursorType current_cursor = UI::CURSOR_DEFAULT;\nstatic bool cursor_dirty = false;\nstatic bool cursor_set = false;\n\n// some users have screens with way too many pixels and they just keep\n// complaining that they can't see anything, so that's why I made this scaling\n// feature.\nstatic uint32_t scaling = 1;\n\n// here we put all the keycodes that come in. the keycodes depend on the\n// keyboard layout, unlike regular UI keys. we use them for textboxes\nstatic std::vector<uint16_t> keycode_queue;\nstatic char* selected_text_string = nullptr;\n\n/// Sets the text which is selected in a textbox.\n/// The way the framework remembers which TextBox you have clicked on and are\n/// editing is that once a TextBox is clicked on, the framework remembers the\n/// pointer of the text that is being edited.\n/// The actual TextBox string is updated only when the TextBox() function is\n/// called.\n/// If you want to deselect any TextBox, call this function with a `nullptr`.\nvoid SetSelectedText(char* text) {\n    selected_text_string = text;\n}\n\n// this is how we remember which colors the user has set.\nstatic Stack<Render::color_t> text_color_stack(\"GUI Text Color stack\", 100);\nstatic Stack<Render::color_t> widget_color_stack(\"GUI Widget Color stack\", 100);\nstatic Stack<font_t> text_font_stack(\"GUI Text Font stack\", 100);\nstatic Stack<font_t> widget_font_stack(\"GUI Widget Font stack\", 100);\nstatic Render::color_t default_text_color = Render::COLOR_BLACK;\nstatic Render::color_t default_widget_color = Render::COLOR_WHITE;\nstatic font_t default_text_font = 1;\nstatic font_t default_widget_font = 0;\n\n// this is for remembering whether Begin() has been called and to check whether\n// we don't call Update() twice in a frame, which would break everything\nuint32_t last_update_frame = 0;\nbool beginned = false;\n\n// used for checking whether a mouse click has been handled. we don't want\n// multiple buttons to be clickable at the same time, since that could cause\n// lots of very bad errors in the user code\nbool mouse_click_not_handled = true;\nbool mouse_click_not_handled_late = true;\n\n/// Sets the color.\n/// Pushes color to color stack. Each glyph type gets its own color stack.\n/// The previously set color can be restored using RestoreColor().\n/// GlyphType::TEXT will set the text rendering color of the Text() function, as\n/// well as the text that is drawn by the RadioButton() and CheckBox()\n/// functions, on top of all Button() buttons and in TextBox() textboxes.\n/// GlyphType::WIDGET will set the color that will be used when drawing non-text\n/// widget glyphs. By default it is Render::COLOR_WHITE.\n/// This stack is reset every time the GUI::Begin() function is called. The\n/// default values can be overriden with SetGlyphDefaults().\n/// @param color RGB color that will be set. Take a look at the Render system's\n///              header or docs to see what kinds of predefined colors are\n///              available.\n/// @param type  The type of the glyph that this color will be applied to.\nvoid SetColor(Render::color_t color, GlyphType type) {\n    switch (type) {\n        case TEXT:      *text_color_stack.AddNew() = color;     break;\n        case WIDGET:    *widget_color_stack.AddNew() = color;   break;\n    }\n}\n\n/// Sets the font.\n/// Works the same as SetColor(), except for fonts. A font needs to be\n/// registered with RegisterFont() first. Widget fonts need to use the widget\n/// font layout to be displayed properly.\nvoid SetFont(font_t font, GlyphType type) {\n    switch (type) {\n        case TEXT:      *text_font_stack.AddNew() = font;   break;\n        case WIDGET:    *widget_font_stack.AddNew() = font; break;\n    }\n}\n\n/// Restores previous glyph color.\n/// See SetColor().\nvoid RestoreColor(GlyphType type) {\n    switch (type) {\n        case TEXT:      text_color_stack.Remove();     break;\n        case WIDGET:    widget_color_stack.Remove();   break;\n    }\n}\n\n/// Restores previous glyph font.\n/// See SetFont().\nvoid RestoreFont(GlyphType type) {\n    switch (type) {\n        case TEXT:      text_font_stack.Remove();   break;\n        case WIDGET:    widget_font_stack.Remove(); break;\n    }\n}\n\n/// Overrides glyph default colors and fonts.\n/// Whenever GUI::Begin() is called, the color and font passed to this function\n/// will be set as the color and font used for the glyph drawing functions.\n/// If you are using the Ext::Menu extension and its default fonts, you don't\n/// need to call this function.\nvoid SetGlyphDefaults(Render::color_t color, font_t font, GlyphType type) {\n    switch (type) {\n        case TEXT:\n            default_text_color = color;\n            default_text_font = font;\n            break;\n        case WIDGET:\n            default_widget_color = color;\n            default_widget_font = font;\n            break;\n    }\n}\n\n/// Sets the scaling factor.\n/// If set to `1`, the GUI will be drawn normally. If set to `2`, then\n/// everything will be drawn twice as large. If set to `3`, then everything\n/// will be drawn three times as large. I don't recommend going above that.\nvoid SetScaling(uint32_t scale) {\n    scaling = scale;\n}\n\n/// Returns the scaling factor.\n/// See SetScaling().\nuint32_t GetScaling() {\n    return scaling;\n}\n\n/// Sets the cursor.\n/// The difference between using this function and the cursor setting function\n/// in the UI system, is that this function will only switch the cursor if it\n/// has been changed, i.e. it will issue the UI::SetCursor() command only if\n/// this function receives a new parameter.\n/// This means that GUI widgets can change the cursor, but the it is also\n/// possible to change it using the UI function and this function will not\n/// override it, except if the cursor is placed over a widget.\nvoid SetCursorDelayed(UI::CursorType cursor) {\n    if (current_cursor != cursor) {\n        current_cursor = cursor;\n        cursor_dirty = true;\n    }\n    cursor_set = true;\n}\n\nusing namespace tram::Render::API;\n\n/// Performs initialization of the GUI system.\n/// Render system must be initialized first.\nvoid Init() {\n    System::SetState(System::GUI, System::INIT);\n    System::AssertDependency(System::RENDER);\n    \n    Log(System::GUI, \"Initializing GUI system.\");\n    \n    using namespace tram::Render;\n    \n    CreateVertexArray(GetVertexDefinition(VERTEX_SPRITE), glyphvertices_vertex_array);\n    glyphvertices_entry = InsertDrawListEntry();\n    SetDrawListVertexArray(glyphvertices_entry, glyphvertices_vertex_array);\n    SetDrawListShader(glyphvertices_entry, VERTEX_SPRITE, MATERIAL_GLYPH);\n    SetFlags(glyphvertices_entry, FLAG_RENDER /*| FLAG_NO_DEPTH_TEST*/);\n    SetLayer(glyphvertices_entry, LAYER_GUI);\n    \n    Event::AddListener(Event::KEYCHAR, [](Event& evt) {\n        keycode_queue.push_back(evt.subtype);\n    });\n    \n    System::SetState(System::GUI, System::READY);\n}\n\n/// Submits registered fonts to the renderer.\nvoid UpdateDrawListFonts() {\n    Render::material_t glyphvertices_textures[16];\n    font_t font_count = 0;\n    \n    for (font_t i = 0; i < 16; i++) {\n        if (!fonts[i]) {\n            font_count = i;\n            break;\n        }\n        \n        glyphvertices_textures[i] = fonts[i]->GetMaterial()->GetMaterial();\n        \n        if (fonts[i]->GetStatus() != Resource::READY) {\n            Log(Severity::ERROR, System::GUI, \"Font {} is not loaded!\", i);\n        }\n    }\n    \n    using namespace tram::Render;\n    \n    SetDrawListMaterials(glyphvertices_entry, font_count, glyphvertices_textures);\n}\n\n/// Submits all of the glyphs for rendering.\n/// Also updates cursor, if needed by SetCursorDelayed().\nvoid Update() {\n    using namespace tram::Render;\n    \n    // do some error checking on the part of the library user\n    if (beginned) {\n        Log(Severity::CRITICAL_ERROR, System::GUI, \"Called GUI::Update() without first calling GUI::End()\");\n    }\n    \n    if (last_update_frame == GetFrame()) {\n        Log(Severity::WARNING, System::GUI, \"Called GUI::Update() more than once in a single frame\");\n    }\n    \n    last_update_frame = GetFrame();\n\n    \n    // upload the generated glyph vertex triangles to the GPU\n    UpdateVertexArray(glyphvertices_vertex_array, glyphvertices.size() * sizeof(SpriteVertex), glyphvertices.data());\n    SetDrawListIndexRange(glyphvertices_entry, 0, glyphvertices.size());\n    glyphvertices.clear();\n    keycode_queue.clear();\n    \n    // this logic is not very logical, but it should work\n    if (cursor_dirty) {\n        UI::SetCursor(current_cursor);\n        cursor_dirty = false;\n    } else {\n        if (!cursor_set && current_cursor != UI::CURSOR_DEFAULT) {\n            UI::SetCursor(UI::CURSOR_DEFAULT);\n            current_cursor = UI::CURSOR_DEFAULT;\n        }\n    }\n    cursor_set = false;\n    \n    // this is set up so that only a single button or other widget can handle\n    // the mouse click for the duration of it.\n    static bool prev_mouse = false;\n    if (UI::PollKeyboardKey(UI::KEY_LEFTMOUSE) && !prev_mouse) {\n        mouse_click_not_handled = true;\n        \n        // clicking outside of textbox cancels editing\n        selected_text_string = nullptr;\n    } else {\n        mouse_click_not_handled = false;\n    }\n    if (!UI::PollKeyboardKey(UI::KEY_LEFTMOUSE) && prev_mouse) {\n        mouse_click_not_handled_late = true;\n    } else {\n        mouse_click_not_handled_late = false;\n    }\n    prev_mouse = UI::PollKeyboardKey(UI::KEY_LEFTMOUSE);\n}\n\n/// Registers a font.\n/// @return Font handle that can be used with all of the GUI widget functions.\nfont_t RegisterFont (Render::Sprite* sprite) {\n    if (!System::IsInitialized (System::GUI)) {\n        Log(Severity::ERROR, System::GUI, \"GUI is not initialized, font {} was not registered!\", sprite->GetName());\n        return -1;\n    }\n    \n    for (font_t i = 0; i < 16; i++) {\n        if (fonts[i] == sprite) return i;\n    }\n    \n    for (font_t i = 0; i < 16; i++) {\n        if (fonts[i] == nullptr) {\n            fonts[i] = sprite;\n            sprite->AddReference();\n            UpdateDrawListFonts();\n            \n            return i;\n        }\n    }\n    \n    Log(Severity::ERROR, System::GUI, \"Ran out of font slots, font {} was not registered!\", sprite->GetName());\n    \n    return -1;\n}\n\n/// Adds a glyph to rendering list.\n/// Triangularizes a glyph from its params and then it get sent off to\n/// rendering via the glyph rendering list.\nvoid SetGlyph(float x, float y, float z, float w, float h, float tex_x, float tex_y, float tex_w, float tex_h, const vec3& color, font_t font) {\n    Render::SpriteVertex tleft;   // top left\n    Render::SpriteVertex tright;  // top right\n    Render::SpriteVertex bleft;   // bottom left\n    Render::SpriteVertex bright;  // bottom right\n\n    tleft.co.x = x;\n    tleft.co.y = y;\n    tleft.co.z = z;\n    tleft.texco.x = tex_x;\n    tleft.texco.y = tex_y;\n    \n    tright.co.x = x + w;\n    tright.co.y = y;\n    tright.co.z = z;\n    tright.texco.x = tex_x + tex_w;\n    tright.texco.y = tex_y;\n    \n    bleft.co.x = x;\n    bleft.co.y = y + h;\n    bleft.co.z = z;\n    bleft.texco.x = tex_x;\n    bleft.texco.y = tex_y + tex_h;\n    \n    bright.co.x = x + w;\n    bright.co.y = y + h;\n    bright.co.z = z;\n    bright.texco.x = tex_x + tex_w;\n    bright.texco.y = tex_y + tex_h;\n    \n    tleft.color = color;\n    tleft.texture = font;\n    tright.color = color;\n    tright.texture = font;\n    bleft.color = color;\n    bleft.texture = font;\n    bright.color = color;\n    bright.texture = font;\n\n    glyphvertices.push_back(bleft);\n    glyphvertices.push_back(bright);\n    glyphvertices.push_back(tleft);\n    glyphvertices.push_back(bright);\n    glyphvertices.push_back(tright);\n    glyphvertices.push_back(tleft);\n}\n\n\nuint32_t GlyphWidth(font_t font, glyph_t glyph) {\n    return fonts[font]->GetFrames()[glyph].width;\n}\n\nuint32_t GlyphHeight(font_t font, glyph_t glyph) {\n    return fonts[font]->GetFrames()[glyph].height;\n}\n\nuint32_t GlyphBorderV(font_t font, glyph_t glyph) {\n    return fonts[font]->GetFrames()[glyph].border_v;\n}\n\nvoid DrawGlyph(font_t font, glyph_t glyph, const vec3& color, uint32_t x, uint32_t y, uint32_t w = 0, uint32_t h = 0) {\n    const auto& info = fonts[font]->GetFrames()[glyph];\n    \n    if (!w) w = info.width;\n    if (!h) h = info.height;\n    \n    SetGlyph(x*scaling, y*scaling, frame_stack.top().stack_height, w*scaling, h*scaling, info.offset_x, info.offset_y, info.width, info.height, color, font);\n}\n\n/// Draws a glyph from a font.\nvoid Glyph(font_t font, glyph_t glyph) {\n    uint32_t cursor_x = frame_stack.top().cursor_x;\n    uint32_t cursor_y = frame_stack.top().cursor_y;\n    \n    DrawGlyph(font, glyph, widget_color_stack.top(), cursor_x, cursor_y);\n    \n    cursor_x += GlyphWidth(font, glyph);\n    \n    frame_stack.top().cursor_x = cursor_x;\n    frame_stack.top().cursor_y = cursor_y;\n}\n\n/// Draws a glyph box.\n/// Glyph boxes are set up so that the first glyph, i.e. the one that you pass \n/// in the glyph parameter is the top-left corner. Then the numerically next\n/// glyph is take as the top-middle glpyh, then the top-right.\n/// This continues going left-to-right, top-to-bottom until all 9 squares are\n/// covered.\n/// If you are using a default widget layout font, you can use the enum values\n/// WIDGET_WINDOW, WIDGET_REVERSE_WINDOW, WIDGET_BUTTON, WIDGET_SELECT_BOX or\n/// WIDGET_BORDER for the glyph index.\nvoid DrawBox(font_t font, glyph_t glyph, uint32_t x, uint32_t y, uint32_t w, uint32_t h) {\n    const glyph_t top_lft = glyph + 0;\n    const glyph_t top_mid = glyph + 1;\n    const glyph_t top_rgt = glyph + 2;\n    const glyph_t mid_lft = glyph + 3;\n    const glyph_t mid_mid = glyph + 4;\n    const glyph_t mid_rgt = glyph + 5;\n    const glyph_t btm_lft = glyph + 6;\n    const glyph_t btm_mid = glyph + 7;\n    const glyph_t btm_rgt = glyph + 8;\n    \n    font = widget_font_stack.top();\n    \n    // Draw in the corners\n    DrawGlyph(font, top_lft, widget_color_stack.top(), x, y, 0, 0);\n    DrawGlyph(font, top_rgt, widget_color_stack.top(), x+w-GlyphWidth(font, top_rgt), y, 0, 0);\n    DrawGlyph(font, btm_lft, widget_color_stack.top(),  x, y+h-GlyphHeight(font, btm_lft), 0, 0);\n    DrawGlyph(font, btm_rgt, widget_color_stack.top(), x+w-GlyphWidth(font, btm_rgt), y+h-GlyphHeight(font, btm_rgt),  0, 0);\n    \n    // Draw in the top and bottom sides\n    DrawGlyph(font, top_mid, widget_color_stack.top(), x+GlyphWidth(font, top_lft), y, w-GlyphWidth(font, top_rgt)-GlyphWidth(font, top_lft), 0);\n    DrawGlyph(font, btm_mid, widget_color_stack.top(), x+GlyphWidth(font, btm_lft), y+h-GlyphHeight(font, btm_mid), w-GlyphWidth(font, btm_rgt)-GlyphWidth(font, btm_lft), 0);\n    \n    // Draw in the left and right sides\n    DrawGlyph(font, mid_lft, widget_color_stack.top(), x, y+GlyphHeight(font, top_rgt), 0, h-GlyphWidth(font, top_lft)-GlyphWidth(font, btm_lft));\n    DrawGlyph(font, mid_rgt, widget_color_stack.top(), x+w-GlyphWidth(font, mid_rgt), y+GlyphHeight(font, top_rgt), 0, h-GlyphWidth(font, top_rgt)-GlyphWidth(font, btm_rgt));\n    \n    // Draw in the middle\n    DrawGlyph(font, mid_mid, widget_color_stack.top(), x+GlyphWidth(font, mid_lft), y+GlyphHeight(font, top_mid), w-GlyphWidth(font, mid_lft)-GlyphWidth(font, mid_rgt), h-GlyphHeight(font, top_mid)-GlyphHeight(font, btm_mid));\n}\n\n// measures the width of the text, as if the text was being drawn, except it is\n// not actually drawn and only the width of the text is returned, and it is\n// identical to the widht of the text if it was, in fact, drawn\nuint32_t TextWidth(font_t font, const char* text) {\n    uint32_t width = 0;\n    for (const unsigned char* c = (const unsigned char*)text; *c != '\\0'; c++) {\n        width += GlyphWidth(font, *c);\n    }\n    return width;\n}\n\n/// Draws text on the screen.\n/// @param orientation Either TEXT_LEFT, TEXT_CENTER, TEXT_RIGHT or\n///                    TEXT_JUSTIFIED. The default is TEXT_LEFT.\n/// @param text        The text that will drawn to screen.\nvoid Text(const char* text, uint32_t orientation) {\n    uint32_t cursor_x = frame_stack.top().cursor_x;\n    uint32_t cursor_y = frame_stack.top().cursor_y;\n    // depending on alignment we could also choose other cursor_x and cursor_y\n    \n    font_t font  = text_font_stack.top();\n    \n    switch (orientation) {\n        case TEXT_LEFT:\n        default: \n            break;\n        case TEXT_CENTER:\n            cursor_x += (frame_stack.top().w - TextWidth(font, text)) / 2;\n            break;\n        case TEXT_RIGHT:\n            cursor_x += frame_stack.top().w - TextWidth(font, text);\n            break;\n        case TEXT_JUSTIFIED:\n            // TODO: implement\n            break;\n    }\n    \n    for (const char* c = text; *c != '\\0'; c++) {\n        if (*c=='\\n'){ NewLine(LINE_LOW);\n            cursor_x = frame_stack.top().cursor_x;\n        cursor_y = frame_stack.top().cursor_y;\n            continue;}\n        DrawGlyph(font, (unsigned char)*c, text_color_stack.top(), cursor_x, cursor_y);\n        cursor_x += GlyphWidth(font, (unsigned char)*c);\n    }\n    \n    frame_stack.top().cursor_x = cursor_x;\n    frame_stack.top().cursor_y = cursor_y;\n}\n\n/// Draws a horizontal bar.\n/// Similar to how DrawBox() is used, except we only have 3 squares, the left,\n/// middle and right.\nvoid DrawBoxHorizontal(font_t font, glyph_t glyph,  uint32_t x, uint32_t y, uint32_t w) {\n    const glyph_t lft = glyph + 0;\n    const glyph_t mid = glyph + 1;\n    const glyph_t rgt = glyph + 2;\n    \n    DrawGlyph(font, lft, widget_color_stack.top(), x, y, 0, 0);\n    DrawGlyph(font, rgt, widget_color_stack.top(), x+w-GlyphWidth(font, lft)-GlyphWidth(font, rgt), y, 0, 0);\n    DrawGlyph(font, mid, widget_color_stack.top(), x+GlyphWidth(font, lft), y, w-GlyphWidth(font, lft)-GlyphWidth(font, rgt), 0);\n}\n\n/// Pushes a frame.\n/// The coordinates are in absolute screen cooordinates. This function could be\n/// useful for something, I just can't think of anything.\nvoid PushFrame(uint32_t x, uint32_t y, uint32_t w, uint32_t h) {\n    uint32_t stack_height = frame_stack.top().stack_height;\n    \n    FrameObject* new_frame = frame_stack.AddNew();\n    \n    new_frame->x = x;\n    new_frame->y = y;\n    new_frame->w = w;\n    new_frame->h = h;\n    new_frame->cursor_x = x;\n    new_frame->cursor_y = y;\n    new_frame->stack_height = stack_height + 1;\n}\n\n/// Pushes a frame releative to the previous.\n/// Check the regulat HTML docs on the website for a graphical description with,\n/// i.e. with images, to see how this works.\n/// But essentially what this function does, is it takes the previous frame and\n/// measures out the offset from the specified orientation and then pushes a new\n/// frame with the are from the offset.\n/// Initially the first frame is pushed, and it takes up the whole screen. If\n/// you wanted to use make the topmost 200px part of the screen a frame, you \n/// would set the orientation to FRAME_TOP and offset to 200.\nvoid PushFrameRelative(uint32_t orientation, uint32_t offset) {\n    uint32_t x = frame_stack.top().x;\n    uint32_t y = frame_stack.top().y;\n    uint32_t w = frame_stack.top().w;\n    uint32_t h = frame_stack.top().h;\n    \n    switch (orientation) {\n        default: break;\n        case FRAME_LEFT:\n            w = offset;\n            break;\n        case FRAME_RIGHT:\n            x += w - offset;\n            w = offset;\n            break;\n        case FRAME_TOP:\n            h = offset;\n            break;\n        case FRAME_BOTTOM:\n            y += h - offset;\n            h = offset;\n            break;\n        case FRAME_LEFT_INV:\n            x += offset;\n            w -= offset;\n            break;\n        case FRAME_RIGHT_INV:\n            w -= offset;\n            break;\n        case FRAME_TOP_INV:\n            y += offset;\n            h -= offset;\n            break;\n        case FRAME_BOTTOM_INV:\n            h -= offset;\n            break;\n        case FRAME_INSET:\n            x += offset;\n            y += offset;\n            w -= offset * 2;\n            h -= offset * 2;\n            break;\n        case FRAME_CENTER_HORIZONTAL:\n            x += (w - offset) / 2;\n            w = offset;\n            break;\n        case FRAME_CENTER_VERTICAL:\n            y += (h - offset) / 2;\n            h = offset;\n            break;\n    }\n    \n    PushFrame(x, y, w, h);\n}\n\n/// Removes a frame from the frame stack.\nvoid PopFrame() {\n    frame_stack.Remove();\n}\n\n/// Pushes a frame, but keeps the cursor in place.\n/// Identical to PushFrameRelative(), except this function will not reset the\n/// cursor to the top-left corner of the frame.\nvoid PushFrameRelativeKeepCursor(uint32_t orientation, uint32_t offset, bool keep_x, bool keep_y) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    PushFrameRelative(orientation, offset);\n    if (keep_x) frame_stack.top().cursor_x = x;\n    if (keep_y) frame_stack.top().cursor_y = y;\n}\n\nvoid PopFrameKeepCursor(bool keep_x, bool keep_y) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    frame_stack.Remove();\n    if (keep_x) frame_stack.top().cursor_x = x;\n    if (keep_y) frame_stack.top().cursor_y = y;\n}\n\nbool CursorOver(uint32_t x, uint32_t y, uint32_t w, uint32_t h) {\n    uint32_t cur_x = UI::PollKeyboardAxis(UI::KEY_MOUSE_X) / scaling;\n    uint32_t cur_y = UI::PollKeyboardAxis(UI::KEY_MOUSE_Y) / scaling;\n    \n    return cur_x > x && cur_y > y && cur_x < x + w && cur_y < y + h;\n}\n\n// call this to check if user just pressed click\nbool ClickHandled() {\n    if (mouse_click_not_handled) {\n        mouse_click_not_handled = false;\n        return true;\n    } else {\n        return false;\n    }\n}\n\n// call this to check if user released click\nbool ClickHandledLate() {\n    if (mouse_click_not_handled_late) {\n        mouse_click_not_handled_late = false;\n        return true;\n    } else {\n        return false;\n    }\n}\n\n// call this to check if user is holding click\nbool Clicked() {\n    return UI::PollKeyboardKey(UI::KEY_LEFTMOUSE);\n}\n\n/// Draws a button.\n/// @param text     Text of the button.\n/// @param enabled  If set to false, the button won't be clickable.\n/// @param width    Width of the button, in pixels.\n/// @return         True if the button was clicked on.\nbool Button(const char* text, bool enabled, uint32_t width) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    uint32_t w = width ? width : TextWidth(2, text) + 16;\n    uint32_t h = 22;\n    \n    glyph_t style = WIDGET_BUTTON;\n    \n    if (!enabled) {\n        style = WIDGET_BUTTON_DISABLED;\n    } else if (CursorOver(x, y, w, h)) {\n        if (Clicked()) {\n            style = WIDGET_BUTTON_PRESSED;\n        } else {\n            style = WIDGET_BUTTON_SELECTED_ENABLED;\n        }\n        \n        SetCursorDelayed(UI::CURSOR_CLICK);\n    }\n    \n    DrawBox(0, style, x, y, w, h);\n    \n    PushFrame(x, y + 3, w, h);\n    SetColor(enabled ? Render::COLOR_BLACK : Render::COLOR_GRAY);\n    Text(text, TEXT_CENTER);\n    PopFrame();\n    \n    frame_stack.top().cursor_x += w;\n    \n    RestoreColor();\n    \n    return enabled && CursorOver(x, y, w, h) && ClickHandledLate();\n}\n\n/// Draws a radio button.\n/// @param index    Index of this button.\n/// @param selected Index of the selected button.\n/// @param text     Text next to the button.\n/// @param enable   If set to true, the button won't be clickable\n/// @return         True if the button was clicked on. The new selected button\n///                 index will be written to the selected parameter.\nbool RadioButton(uint32_t index, uint32_t& selected, const char* text, bool enabled) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    \n    glyph_t style = WIDGET_RADIO_BUTTON;\n    \n    if (enabled && index == selected) style += 1;\n    if (!enabled && index == selected) style += 5;\n    if (!enabled && index != selected) style += 4;\n    \n    DrawGlyph(0, style, widget_color_stack.top(), x, y);\n    \n    frame_stack.top().cursor_x += GlyphWidth(0, style);\n    \n    if (text) Text(text, TEXT_LEFT);\n    \n    if (enabled && CursorOver(x, y, frame_stack.top().cursor_x - x, 24)) {\n        if (ClickHandledLate()) {\n            selected = index;\n            return true;\n        }\n        \n        SetCursorDelayed(UI::CURSOR_CLICK);\n    }\n    \n    return false;\n}\n\n/// Draws a checkbox.\n/// @param selected If set to true, the button will be drawn checked.\n/// @param text     Text of the button.\n/// @param enabled  If set to false, the button won't be clickable.\n/// @return         True if clicked on. The modified state of the button will be\n///                 written out to the selected parameter.\nbool CheckBox(bool& selected, const char* text, bool enabled) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    \n    glyph_t style = WIDGET_CHECK_BUTTON;\n    \n    if (enabled && selected) style += 1;\n    if (!enabled && selected) style += 5;\n    if (!enabled && !selected) style += 4;\n    \n    DrawGlyph(0, style, widget_color_stack.top(), x, y);\n    \n    frame_stack.top().cursor_x += GlyphWidth(0, style);\n    \n    if (text) Text(text, TEXT_LEFT);\n    \n    if (enabled && CursorOver(x, y, frame_stack.top().cursor_x - x, 24)) {\n        if (ClickHandledLate()) {\n            selected = !selected;\n            return true;\n        }\n        \n        SetCursorDelayed(UI::CURSOR_CLICK);\n    }\n    \n    return false;\n}\n\n/// Draws a horizontal slider.\n/// @param value    Value of the slider, between 0.0f and 1.0f.\n/// @param enabled  If set to false, the slider won't be draggable.\n/// @param width    Width of the slider, in pixels.\n/// @return         True if the slider was clicked on. The slider's new value\n///                 will be written out to the value variable.\nbool Slider(float& value, bool enabled, uint32_t width) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    uint32_t w = width ? width : 100;\n    uint32_t h = 22;\n    \n    glyph_t style = WIDGET_SLIDER_HORIZONTAL;\n    \n    if (!enabled) {\n        style += 4;\n    } else if (CursorOver(x, y, w, h)) {\n        if (Clicked()) {\n            style += 3;\n        } else {\n            style += 2;\n        }\n        \n        SetCursorDelayed(UI::CURSOR_CLICK);\n    }\n    \n    DrawBoxHorizontal(0, WIDGET_SLIDER_TRACK_HORIZONTAL, x, y + 8, w);\n    \n    PushFrame(x, y + 3, w, h);\n    DrawGlyph(0, style, widget_color_stack.top(), x + (uint32_t)(value * w) - (GlyphWidth(0, style) / 2), y);\n    PopFrame();\n    \n    frame_stack.top().cursor_x += w;\n    \n    if (enabled && CursorOver(x, y, w, h) && Clicked()) {\n        \n        uint32_t cur_x = UI::PollKeyboardAxis(UI::KEY_MOUSE_X) / scaling;\n        uint32_t progress = cur_x - x;\n        value = (float)progress / (float)w;\n        return true;\n    } else {\n        return false;\n    }\n}\n\n/// Draws a new line.\n/// Essentially just moves the cursor down a little bit and resets it to the\n/// left side of the frame. Sort of like a line break.\n/// @param line Line type. Either LINE_LOW, LINE_NORMAL or LINE_HIGH.\nvoid NewLine(uint32_t line) {\n    frame_stack.top().cursor_x = frame_stack.top().x;\n    switch (line) {\n        case LINE_NORMAL:\n        default:\n            frame_stack.top().cursor_y += 24;\n            break;\n        case LINE_LOW:\n            frame_stack.top().cursor_y += 16;\n            break;\n        case LINE_HIGH:\n            frame_stack.top().cursor_y += 32;\n            break;\n    }\n}\n\n/// Draws a horizontal divider.\nvoid HorizontalDivider() {\n    NewLine();\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    uint32_t w = frame_stack.top().cursor_x - frame_stack.top().x + frame_stack.top().w;\n    DrawBoxHorizontal(0, WIDGET_DIVIDER_HORIZONTAL, x, y, w);\n    frame_stack.top().cursor_x = frame_stack.top().x;\n    frame_stack.top().cursor_y += GlyphHeight(0, WIDGET_DIVIDER_HORIZONTAL) + 4;\n}\n\n/// Fills the frame with a glyph.\n/// Uses the DrawBox() function internally, so it works just like it, except\n/// that it uses the topmost frame to determine the position and sixze of the\n/// box.\nvoid FillFrame(glyph_t glyph) {\n    DrawBox(widget_font_stack.top(), glyph, frame_stack.top().x, \n                                     frame_stack.top().y, \n                                     frame_stack.top().w, \n                                     frame_stack.top().h);\n    frame_stack.top().stack_height++;\n}\n\n/// Draws a textbox.\n/// @param text     Text in the textbox. This will be editable.\n/// @param length   Length of the text buffer.\n/// @param enabled  If false, the textbox won't be editable.\n/// @param w,h      Dimensions of the textbox, in pixels.\nbool TextBox(char* text, uint32_t length, bool enabled, uint32_t w, uint32_t h) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    if (w == 0) w = 100;\n    if (h == 0) h = 22;\n    \n    glyph_t style = enabled ? WIDGET_TEXT_BOX : WIDGET_TEXT_BOX_DISABLED;\n    \n    bool allow_typing = selected_text_string == text;\n    bool text_changed = false;\n    \n    if (allow_typing) {\n        uint32_t current_length = strlen(text);\n        \n        for (uint16_t code : keycode_queue) {\n            if (code == 8 && current_length) {\n                text[current_length - 1] = '\\0';\n                text_changed = true;\n                continue;\n            }\n            if (code == 10) {\n                selected_text_string = nullptr;\n                text_changed = true;\n                continue;\n            }\n            if (code < 256 && current_length + 1 < length) {\n                text[current_length] = code;\n                text[current_length + 1] = '\\0';\n                text_changed = true;\n                continue;\n            }\n            if (current_length + 1 < length) {\n                text[current_length] = Language::UTF16ToLatin7(code);\n                text[current_length + 1] = '\\0';\n                text_changed = true;\n            }\n        }\n    }\n    \n    if (CursorOver(x, y, w, h)) {\n        if (ClickHandled()) {\n            selected_text_string = text;\n        }\n        \n        SetCursorDelayed(UI::CURSOR_TEXT);\n    }\n    \n    DrawBox(0, style, x, y, w, h);\n    \n    PushFrame(x + 4, y + 3, w - 8, h);\n    Text(text, TEXT_LEFT);\n    if (allow_typing && (GetTick() & 16)) Text(\"|\", TEXT_LEFT);\n    PopFrame();\n    \n    frame_stack.top().cursor_x += w;\n    \n    return text_changed;\n}\n\n/// Draws a textbox.\n/// Essentially identical to the other TextBox() function, except this one\n/// accepts a `const char*` text. This also means that the text in the textbox\n/// won't be editable and it will be drawn as disabled.\nvoid TextBox(const char* text, uint32_t w, uint32_t h) {\n    uint32_t x = frame_stack.top().cursor_x;\n    uint32_t y = frame_stack.top().cursor_y;\n    if (w == 0) w = 100;\n    if (h == 0) h = 22;\n\n    if (CursorOver(x, y, w, h)) {\n        SetCursorDelayed(UI::CURSOR_TEXT);\n    }\n    \n    DrawBox(0, WIDGET_TEXT_BOX_DISABLED, x, y, w, h);\n    \n    PushFrame(x + 4, y + 3, w - 8, h);\n    Text(text, TEXT_LEFT);\n    PopFrame();\n    \n    frame_stack.top().cursor_x += w;\n}\n\n/// Begins the GUI commands for the frame.\n/// Pushes the first frame to the frame stack. This function has to be called\n/// first, before the End() and the Update() functions.\n/// You can call Begin() as much as you want, you just have to call an End()\n/// before you can call Begin() again.\n/// This should help dealing a bit with the global state that the system has.\nvoid Begin() {\n    if (beginned) {\n        Log(Severity::CRITICAL_ERROR, System::GUI, \"Called GUI::Begin() again without first calling GUI::End()\");\n    }\n    \n    beginned = true;\n    \n    // The first frame takes up the whole screen.\n    // After the first frame is created, the user will be able to split it into\n    // smaller frames and use them to position the widgets on the screen.\n    FrameObject* first_frame = frame_stack.AddNew();\n    \n    first_frame->x = 0;\n    first_frame->y = 0;\n    first_frame->w = UI::GetScreenWidth() / scaling;\n    first_frame->h = UI::GetScreenHeight() / scaling;\n    first_frame->cursor_x = 0;\n    first_frame->cursor_y = 0;\n    first_frame->stack_height = 0;\n    \n    \n    // pushing in the default colors\n    *widget_color_stack.AddNew() = default_widget_color;\n    *text_color_stack.AddNew() = default_text_color;\n    *text_font_stack.AddNew() = default_text_font;\n    *widget_font_stack.AddNew() = default_widget_font;\n}\n\n/// Ends the GUI commands for the frame.\n/// This has to be called sometime after Begin(), but before Update().\nvoid End() {\n    if (!beginned) {\n        Log(Severity::CRITICAL_ERROR, System::GUI, \"Called GUI::End() without first calling GUI::Begin()\");\n    }\n    \n    beginned = false;\n    \n    if (frame_stack.GetLength() < 1) {\n        Log(Severity::WARNING, System::GUI, \"No frames in the framestack, called GUI::PopFrame() too much\");\n    }\n    \n    if (frame_stack.GetLength() > 1) {\n        Log(Severity::WARNING, System::GUI, \"Thera are {} too many frames in the framestack\", frame_stack.GetLength() - 1);\n    }\n    \n    frame_stack.Reset();\n    widget_color_stack.Reset();\n    text_color_stack.Reset();\n    text_font_stack.Reset();\n    widget_font_stack.Reset();\n\n}\n\n\n}"
  },
  {
    "path": "src/framework/gui.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_GUI_H\n#define TRAM_SDK_FRAMEWORK_GUI_H\n\n#include <framework/ui.h>\n\nnamespace tram::Render {\n    class Sprite;\n}\n\nnamespace tram::GUI {\n\ntypedef uint32_t font_t;\ntypedef uint32_t glyph_t;\n\nenum orientation : uint32_t {\n    TEXT_LEFT,\n    TEXT_CENTER,\n    TEXT_RIGHT,\n    TEXT_JUSTIFIED,\n    \n    LINE_LOW,\n    LINE_NORMAL,\n    LINE_HIGH,\n    \n    FRAME_LEFT,\n    FRAME_RIGHT,\n    FRAME_TOP,\n    FRAME_BOTTOM,\n    FRAME_LEFT_INV,\n    FRAME_RIGHT_INV,\n    FRAME_TOP_INV,\n    FRAME_BOTTOM_INV,\n    FRAME_INSET,\n    FRAME_CENTER_VERTICAL,\n    FRAME_CENTER_HORIZONTAL\n};\n\nenum GlyphType {\n    TEXT,\n    WIDGET\n};\n\nvoid Init();\nvoid Update();\nfont_t RegisterFont(Render::Sprite* sprite);\n\nvoid SetScaling(uint32_t);\nuint32_t GetScaling();\n\nbool ClickHandled();\n\nvoid Begin();\nvoid End();\n\nvoid FillFrame(glyph_t glyph);\nvoid HorizontalDivider();\nvoid NewLine(uint32_t line = LINE_NORMAL);\n\nbool CheckBox(bool& selected, const char* text, bool enabled = true);\nbool RadioButton(uint32_t index, uint32_t& selected, const char* text, bool enabled = true);\nbool Button(const char* text, bool enabled = true, uint32_t width = 0);\nbool Slider(float& value, bool enabled = true, uint32_t width = 0);\n\nvoid Glyph(glyph_t glyph); // TODO: implement this\nvoid Glyph(font_t font, glyph_t glyph); // TODO: yeet this\nvoid Text(const char* text, uint32_t orientation = TEXT_LEFT);\nbool TextBox(char* text, uint32_t length, bool enabled = true, uint32_t w = 0, uint32_t h = 0);\nvoid TextBox(const char* text, uint32_t w = 0, uint32_t h = 0);\n\nvoid SetColor(Render::color_t, GlyphType = TEXT);\nvoid SetFont(font_t, GlyphType = TEXT);\nvoid RestoreColor(GlyphType = TEXT);\nvoid RestoreFont(GlyphType = TEXT);\n\nvoid SetGlyphDefaults(Render::color_t, font_t, GlyphType);\n\nvoid PopFrameKeepCursor(bool = false, bool = true);\nvoid PushFrameRelative(uint32_t orientation, uint32_t offset);\nvoid PushFrameRelativeKeepCursor(uint32_t orientation, uint32_t offset, bool = false, bool = true);\nvoid PushFrame(uint32_t x, uint32_t y, uint32_t w, uint32_t h);\nvoid PopFrame();\n\n\n\n\nvoid SetSelectedText(char* text);\n\nenum widget : glyph_t {\n    WIDGET_TOP_LEFT = 0,\n    WIDGET_TOP_MIDDLE = 1,\n    WIDGET_TOP_RIGHT = 2,\n    WIDGET_MIDDLE_LEFT = 3,\n    WIDGET_MIDDLE_MIDDLE = 4,\n    WIDGET_MIDDLE_RIGHT = 5,\n    WIDGET_BOTTOM_LEFT = 6,\n    WIDGET_BOTTOM_MIDDLE = 7,\n    WIDGET_BOTTOM_RIGHT = 8,\n    \n    WIDGET_LEFT = 0,\n    WIDGET_MIDDLE = 1,\n    WIDGET_RIGHT = 2,\n    \n    WIDGET_BUTTON = 0,\n    WIDGET_BUTTON_PRESSED = 9,\n    WIDGET_BUTTON_SELECTED_ENABLED = 18,\n    WIDGET_BUTTON_SELECTED_DISABLED = 27,\n    WIDGET_BUTTON_DISABLED = 36,\n    WIDGET_BUTTON_PRESSED_DISABLED = 45,\n    WIDGET_WINDOW = 54,\n    WIDGET_REVERSE_WINDOW = 63,\n    WIDGET_SELECT_BOX = 72,\n    WIDGET_SELECT_BOX_PRESSED = 81,\n    WIDGET_SELECT_BOX_SELECTED = 90,\n    WIDGET_TEXT_BOX = 99,\n    WIDGET_TEXT_BOX_DISABLED = 108,\n    WIDGET_BORDER = 117,\n    WIDGET_SCROLL_BAR_TRACK_VERTICAL = 126,\n    WIDGET_SCROLL_BAR_TRACK_HORIZONTAL = 129,\n    WIDGET_DIVIDER_HORIZONTAL = 132,\n    WIDGET_DIVIDER_VERTICAL = 135,\n    WIDGET_SLIDER_TRACK_VERTICAL = 138,\n    WIDGET_SLIDER_TRACK_HORIZONTAL = 138,\n    WIDGET_SCROLL_BAR_VERTICAL = 144,\n    WIDGET_SCROLL_BAR_HORIZONTAL = 147,\n    WIDGET_TAB = 150,\n    WIDGET_PROGESS_BAR = 153,\n    WIDGET_RADIO_BUTTON = 156,\n    WIDGET_CHECK_BUTTON = 162,\n    WIDGET_SLIDER_VERTICAL = 168,\n    WIDGET_SLIDER_HORIZONTAL = 174,\n    WIDGET_BUTTON_UP = 180,\n    WIDGET_BUTTON_DOWN = 186,\n    WIDGET_BUTTON_LEFT = 192,\n    WIDGET_BUTTON_RIGHT = 198,\n    WIDGET_BUTTON_EXIT = 204,\n    WIDGET_BUTTON_HELP = 210,\n    WIDGET_BUTTON_2_WINDOW = 216,\n    WIDGET_BUTTON_1_WINDOW = 222,\n    WIDGET_DEFAULT = 255,\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_GUI_H"
  },
  {
    "path": "src/framework/language.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/language.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <templates/stackpool.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <cstring>\n#include <fstream>\n\n/**\n * @namespace tram::Language\n * \n * Localization services.\n * \n * Provides services for application localization, character re-encoding, \n * translation, etc.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/language.html\n */\n\nnamespace tram::Language {\n    \nstatic StackPool<char> language_string_pool(\"Language string pool\", LANUGAGE_STRING_CHARACTER_LIMIT);\nstatic Hashmap<const char*> language_string_map(\"Language string hashmap\", LANGUAGE_STRING_LIMIT);\n\n/// Loads a language file.\nvoid Load(const char* filename){\n    char path[PATH_LIMIT] = \"data/\";\n    strcat(path, filename);\n    strcat(path, \".lang\");\n    \n    Log(Severity::INFO, System::CORE, \"Loading: {}\", path);\n    \n    File file(path, File::READ);\n    \n    if (!file.is_open()) {\n        Log(Severity::WARNING, System::CORE, \"Can't find language file: {}\", path);\n    }\n    \n    // wait don't we have headers\n    // TODO: investigate\n    \n    while (file.is_continue()) {\n        name_t string_name = file.read_name();\n        std::string_view string_content = file.read_line();\n        \n        char* string_ptr = language_string_pool.AddNew(string_content.length() + 1);\n\n        strncpy(string_ptr, string_content.data(), string_content.length());\n        string_ptr[string_content.length()] = '\\0';\n\n        language_string_map.Insert(string_name, string_ptr);\n    }\n}\n\n/// Retrieves a string from the loaded language files.\nconst char* Get(name_t name) {\n    const char* string = language_string_map.Find(name);\n    \n    if (!string) {\n        return name;\n    } else {\n        return string;\n    }\n}\n\n/// Converts a UTF16 codepoint to a Latin7 codepoint.\nchar UTF16ToLatin7(uint16_t code) {\n    switch (code) {\n        case 0x0000: return 0x00;\n        case 0x0001: return 0x01;\n        case 0x0002: return 0x02;\n        case 0x0003: return 0x03;\n        case 0x0004: return 0x04;\n        case 0x0005: return 0x05;\n        case 0x0006: return 0x06;\n        case 0x0007: return 0x07;\n        case 0x0008: return 0x08;\n        case 0x0009: return 0x09;\n        case 0x000a: return 0x0a;\n        case 0x000b: return 0x0b;\n        case 0x000c: return 0x0c;\n        case 0x000d: return 0x0d;\n        case 0x000e: return 0x0e;\n        case 0x000f: return 0x0f;\n        case 0x0010: return 0x10;\n        case 0x0011: return 0x11;\n        case 0x0012: return 0x12;\n        case 0x0013: return 0x13;\n        case 0x0014: return 0x14;\n        case 0x0015: return 0x15;\n        case 0x0016: return 0x16;\n        case 0x0017: return 0x17;\n        case 0x0018: return 0x18;\n        case 0x0019: return 0x19;\n        case 0x001a: return 0x1a;\n        case 0x001b: return 0x1b;\n        case 0x001c: return 0x1c;\n        case 0x001d: return 0x1d;\n        case 0x001e: return 0x1e;\n        case 0x001f: return 0x1f;\n        case 0x0020: return 0x20;\n        case 0x0021: return 0x21;\n        case 0x0022: return 0x22;\n        case 0x0023: return 0x23;\n        case 0x0024: return 0x24;\n        case 0x0025: return 0x25;\n        case 0x0026: return 0x26;\n        case 0x0027: return 0x27;\n        case 0x0028: return 0x28;\n        case 0x0029: return 0x29;\n        case 0x002a: return 0x2a;\n        case 0x002b: return 0x2b;\n        case 0x002c: return 0x2c;\n        case 0x002d: return 0x2d;\n        case 0x002e: return 0x2e;\n        case 0x002f: return 0x2f;\n        case 0x0030: return 0x30;\n        case 0x0031: return 0x31;\n        case 0x0032: return 0x32;\n        case 0x0033: return 0x33;\n        case 0x0034: return 0x34;\n        case 0x0035: return 0x35;\n        case 0x0036: return 0x36;\n        case 0x0037: return 0x37;\n        case 0x0038: return 0x38;\n        case 0x0039: return 0x39;\n        case 0x003a: return 0x3a;\n        case 0x003b: return 0x3b;\n        case 0x003c: return 0x3c;\n        case 0x003d: return 0x3d;\n        case 0x003e: return 0x3e;\n        case 0x003f: return 0x3f;\n        case 0x0040: return 0x40;\n        case 0x0041: return 0x41;\n        case 0x0042: return 0x42;\n        case 0x0043: return 0x43;\n        case 0x0044: return 0x44;\n        case 0x0045: return 0x45;\n        case 0x0046: return 0x46;\n        case 0x0047: return 0x47;\n        case 0x0048: return 0x48;\n        case 0x0049: return 0x49;\n        case 0x004a: return 0x4a;\n        case 0x004b: return 0x4b;\n        case 0x004c: return 0x4c;\n        case 0x004d: return 0x4d;\n        case 0x004e: return 0x4e;\n        case 0x004f: return 0x4f;\n        case 0x0050: return 0x50;\n        case 0x0051: return 0x51;\n        case 0x0052: return 0x52;\n        case 0x0053: return 0x53;\n        case 0x0054: return 0x54;\n        case 0x0055: return 0x55;\n        case 0x0056: return 0x56;\n        case 0x0057: return 0x57;\n        case 0x0058: return 0x58;\n        case 0x0059: return 0x59;\n        case 0x005a: return 0x5a;\n        case 0x005b: return 0x5b;\n        case 0x005c: return 0x5c;\n        case 0x005d: return 0x5d;\n        case 0x005e: return 0x5e;\n        case 0x005f: return 0x5f;\n        case 0x0060: return 0x60;\n        case 0x0061: return 0x61;\n        case 0x0062: return 0x62;\n        case 0x0063: return 0x63;\n        case 0x0064: return 0x64;\n        case 0x0065: return 0x65;\n        case 0x0066: return 0x66;\n        case 0x0067: return 0x67;\n        case 0x0068: return 0x68;\n        case 0x0069: return 0x69;\n        case 0x006a: return 0x6a;\n        case 0x006b: return 0x6b;\n        case 0x006c: return 0x6c;\n        case 0x006d: return 0x6d;\n        case 0x006e: return 0x6e;\n        case 0x006f: return 0x6f;\n        case 0x0070: return 0x70;\n        case 0x0071: return 0x71;\n        case 0x0072: return 0x72;\n        case 0x0073: return 0x73;\n        case 0x0074: return 0x74;\n        case 0x0075: return 0x75;\n        case 0x0076: return 0x76;\n        case 0x0077: return 0x77;\n        case 0x0078: return 0x78;\n        case 0x0079: return 0x79;\n        case 0x007a: return 0x7a;\n        case 0x007b: return 0x7b;\n        case 0x007c: return 0x7c;\n        case 0x007d: return 0x7d;\n        case 0x007e: return 0x7e;\n        case 0x007f: return 0x7f;\n        case 0x0080: return 0x80;\n        case 0x0081: return 0x81;\n        case 0x0082: return 0x82;\n        case 0x0083: return 0x83;\n        case 0x0084: return 0x84;\n        case 0x0085: return 0x85;\n        case 0x0086: return 0x86;\n        case 0x0087: return 0x87;\n        case 0x0088: return 0x88;\n        case 0x0089: return 0x89;\n        case 0x008a: return 0x8a;\n        case 0x008b: return 0x8b;\n        case 0x008c: return 0x8c;\n        case 0x008d: return 0x8d;\n        case 0x008e: return 0x8e;\n        case 0x008f: return 0x8f;\n        case 0x0090: return 0x90;\n        case 0x0091: return 0x91;\n        case 0x0092: return 0x92;\n        case 0x0093: return 0x93;\n        case 0x0094: return 0x94;\n        case 0x0095: return 0x95;\n        case 0x0096: return 0x96;\n        case 0x0097: return 0x97;\n        case 0x0098: return 0x98;\n        case 0x0099: return 0x99;\n        case 0x009a: return 0x9a;\n        case 0x009b: return 0x9b;\n        case 0x009c: return 0x9c;\n        case 0x009d: return 0x9d;\n        case 0x009e: return 0x9e;\n        case 0x009f: return 0x9f;\n        case 0x00a0: return 0xa0;\n        case 0x201d: return 0xa1;\n        case 0x00a2: return 0xa2;\n        case 0x00a3: return 0xa3;\n        case 0x00a4: return 0xa4;\n        case 0x201e: return 0xa5;\n        case 0x00a6: return 0xa6;\n        case 0x00a7: return 0xa7;\n        case 0x00d8: return 0xa8;\n        case 0x00a9: return 0xa9;\n        case 0x0156: return 0xaa;\n        case 0x00ab: return 0xab;\n        case 0x00ac: return 0xac;\n        case 0x00ad: return 0xad;\n        case 0x00ae: return 0xae;\n        case 0x00c6: return 0xaf;\n        case 0x00b0: return 0xb0;\n        case 0x00b1: return 0xb1;\n        case 0x00b2: return 0xb2;\n        case 0x00b3: return 0xb3;\n        case 0x201c: return 0xb4;\n        case 0x00b5: return 0xb5;\n        case 0x00b6: return 0xb6;\n        case 0x00b7: return 0xb7;\n        case 0x00f8: return 0xb8;\n        case 0x00b9: return 0xb9;\n        case 0x0157: return 0xba;\n        case 0x00bb: return 0xbb;\n        case 0x00bc: return 0xbc;\n        case 0x00bd: return 0xbd;\n        case 0x00be: return 0xbe;\n        case 0x00e6: return 0xbf;\n        case 0x0104: return 0xc0;\n        case 0x012e: return 0xc1;\n        case 0x0100: return 0xc2;\n        case 0x0106: return 0xc3;\n        case 0x00c4: return 0xc4;\n        case 0x00c5: return 0xc5;\n        case 0x0118: return 0xc6;\n        case 0x0112: return 0xc7;\n        case 0x010c: return 0xc8;\n        case 0x00c9: return 0xc9;\n        case 0x0179: return 0xca;\n        case 0x0116: return 0xcb;\n        case 0x0122: return 0xcc;\n        case 0x0136: return 0xcd;\n        case 0x012a: return 0xce;\n        case 0x013b: return 0xcf;\n        case 0x0160: return 0xd0;\n        case 0x0143: return 0xd1;\n        case 0x0145: return 0xd2;\n        case 0x00d3: return 0xd3;\n        case 0x014c: return 0xd4;\n        case 0x00d5: return 0xd5;\n        case 0x00d6: return 0xd6;\n        case 0x00d7: return 0xd7;\n        case 0x0172: return 0xd8;\n        case 0x0141: return 0xd9;\n        case 0x015a: return 0xda;\n        case 0x016a: return 0xdb;\n        case 0x00dc: return 0xdc;\n        case 0x017b: return 0xdd;\n        case 0x017d: return 0xde;\n        case 0x00df: return 0xdf;\n        case 0x0105: return 0xe0;\n        case 0x012f: return 0xe1;\n        case 0x0101: return 0xe2;\n        case 0x0107: return 0xe3;\n        case 0x00e4: return 0xe4;\n        case 0x00e5: return 0xe5;\n        case 0x0119: return 0xe6;\n        case 0x0113: return 0xe7;\n        case 0x010d: return 0xe8;\n        case 0x00e9: return 0xe9;\n        case 0x017a: return 0xea;\n        case 0x0117: return 0xeb;\n        case 0x0123: return 0xec;\n        case 0x0137: return 0xed;\n        case 0x012b: return 0xee;\n        case 0x013c: return 0xef;\n        case 0x0161: return 0xf0;\n        case 0x0144: return 0xf1;\n        case 0x0146: return 0xf2;\n        case 0x00f3: return 0xf3;\n        case 0x014d: return 0xf4;\n        case 0x00f5: return 0xf5;\n        case 0x00f6: return 0xf6;\n        case 0x00f7: return 0xf7;\n        case 0x0173: return 0xf8;\n        case 0x0142: return 0xf9;\n        case 0x015b: return 0xfa;\n        case 0x016b: return 0xfb;\n        case 0x00fc: return 0xfc;\n        case 0x017c: return 0xfd;\n        case 0x017e: return 0xfe;\n        case 0x2019: return 0xff;\n        default: return code < 256 ? code : 15;\n    }\n}\n\n}"
  },
  {
    "path": "src/framework/language.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_LANGUAGE_H\n#define TRAM_SDK_FRAMEWORK_LANGUAGE_H\n\n#include <framework/uid.h>\n\nnamespace tram::Language {\n    const char* Get(name_t name);\n    void Load(const char* filename);\n    \n    char UTF16ToLatin7(uint16_t);\n}\n\n#endif // TRAM_SDK_FRAMEWORK_LANGUAGE_H"
  },
  {
    "path": "src/framework/loader.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/loader.h>\n\n#include <framework/entity.h>\n#include <framework/worldcell.h>\n\n#include <framework/transition.h>\n#include <framework/logging.h>\n\n#include <templates/pool.h>\n\n#include <set>\n\n/**\n * @namespace tram::Loader\n * \n * WorldCell streaming\n * \n * Provides services for application localization, character re-encoding, \n * translation, etc.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/loader.html\n */\n\nnamespace tram::Loader {\n\nstd::set<id_t> tracked_entities;\n\n/// Starts tracking an Entity.\n/// See Loader::Update().\nvoid Track(Entity* entity) {\n    tracked_entities.insert(entity->GetID());\n}\n\n/// Stops tracking a tracked Entity.\n/// See Loader::Untrack().\nvoid Untrack(Entity* entity) {\n    tracked_entities.erase(entity->GetID());\n}\n\n/// Performs WorldCell loading and unloading.\n/// Calling this function will apply a constraint to the load status of all\n/// WorldCells, whereby cells which either contain a tracked entity, or are\n/// directly connected to such a cell, will be loaded, and all other cells will\n/// be unloaded.\n/// See also Loader::Track() and Loader::Untrack().\nvoid Update() {\n    if (!tracked_entities.size()) return;\n    \n    auto safe_copy = tracked_entities;\n    \n    std::set<WorldCell*> active_cells;\n    \n    // find all cells with tracked entities and remove lost entities\n    for (id_t entity_id : safe_copy) {\n        Entity* entity = Entity::Find(entity_id);\n        \n        if (!entity) {\n            Log(Severity::WARNING, System::CORE, \"Loader lost track of entity with ID {}\", entity_id);\n            tracked_entities.erase(entity_id);\n            continue;\n        }\n        \n        if (entity->GetCell()) {\n            active_cells.insert(entity->GetCell());\n        } else if (WorldCell* cell = WorldCell::Find(entity->GetLocation()); cell) {\n            active_cells.insert(cell);\n        }\n    }\n    \n    // find all cells that need to be loaded\n    std::set<WorldCell*> marked_cells;\n    for (WorldCell* cell : active_cells) {\n        \n        // mark all cells with tracked entities\n        marked_cells.insert(cell);\n        \n        // mark all cells that are directly connected\n        for (Transition* transition : cell->GetTransitions()) {\n            marked_cells.insert(transition->GetCell());\n        }\n    }\n    \n    // load and unload cells as marked\n    for (auto& cell : PoolProxy<WorldCell>::GetPool()) {\n        if (!cell.HasAutomaticLoading()) continue;\n        \n        if (cell.IsLoaded() && !marked_cells.contains(&cell)) {\n            cell.Unload();\n        }\n        \n        if (!cell.IsLoaded() && marked_cells.contains(&cell)) {\n            cell.Load();\n        }\n    }\n}\n    \n}"
  },
  {
    "path": "src/framework/loader.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_LOADER_H\n#define TRAM_SDK_FRAMEWORK_LOADER_H\n\nnamespace tram {\n    class Entity;\n}\n\nnamespace tram::Loader {\n\nvoid Track(Entity* entity);\nvoid Untrack(Entity* entity);\n\nvoid Update();\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_LOADER_H"
  },
  {
    "path": "src/framework/logging.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/logging.h>\n#include <framework/system.h>\n#include <platform/terminal.h>\n#include <platform/other.h>\n#include <cstring>\n#include <ctime>\n#include <charconv>\n#include <iostream>\n#include <vector>\n\n/**\n * @file framework/logging.cpp\n * \n * Logging and console printing services.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/logging.html\n */\n\nnamespace tram {\n\nstatic std::vector<Severity> severities;\nstatic FILE* log_file = nullptr;\n\n/// Sets the logging severity filter.\n/// @param system       System for which the filter will apply.\n/// @param min_severity The lowest severity which the filter will let through\n///                     All lower severities will be filtered out.\nvoid SetSystemLoggingSeverity(System::system_t system, Severity min_severity) {\n    if (system >= severities.size()) {\n        severities.assign(system + 1, Severity::WARNING);\n    }\n    \n    severities[system] = min_severity;\n}\n\n/// Sets file logging.\nvoid SetFileLogging(bool enabled) {\n    if (!enabled) {\n        if (!log_file) return;\n        \n        fclose(log_file);\n        log_file = nullptr;\n        \n        return;\n    }\n    \n    std::time_t epoch_time;\n    std::time(&epoch_time);\n    std::tm date_time = *std::localtime(&epoch_time);\n    \n    char time_str[100];\n    std::strftime(time_str, 100, \"--%Y-%b-%d--%H-%M-%S\", &date_time);\n    \n    char file_name[200];\n    strcpy(file_name, \"application-log\");\n    strcat(file_name, time_str);\n    strcat(file_name, \".txt\");\n    \n    log_file = fopen(file_name, \"w\");\n    setvbuf(log_file, NULL, _IOFBF, 8192);\n}\n\nstatic void(*display_log_callback)(int, const char*) = nullptr;\nstatic void(*console_log_callback)(int, const char*) = nullptr;\n\n/// Sets the display log callback.\n/// When a message is logged by calling DisplayLog(), it will be formatted and\n/// then the result will be passed in to the display log callback.\nvoid SetDisplayLogCallback(void(*callback)(int, const char*)) {\n    display_log_callback = callback;\n}\n\n/// Sets the console log callback.\n/// Whenever a message is written to console, it will alos be passed to the\n/// console log callback.\nvoid SetConsoleLogCallback(void(*callback)(int, const char*)) {\n    console_log_callback = callback;\n}\n\n}\n\nnamespace tram::implementation {\n\n// since all of the formats use the same buffer? we should probably add a some\n// sort of a lock or something. so that you can Log from multiple threads.\n// actually a better idea would be to allocate this on the Log() template\n// functions stack and then pass a pointer down into concatfmt etc.\nchar buffer[500] = {'\\0'}; // yes.. haha .. YES!!\n\nvoid concat_fmt(std::string_view& str) {\n    size_t open_bracket = str.find_first_of('{');\n    size_t close_bracket = str.find_first_of('}', open_bracket);\n    \n    // no options for specifying what's inside the bracket\n    // ... for now.\n    \n    strncat(buffer, str.data(), open_bracket);\n    \n    str.remove_prefix(close_bracket + 1);\n}\n\nvoid flush_console(Severity severity, System::system_t system) {\n    const bool severity_known = (size_t) system < severities.size();\n    if ((!severity_known && severity < Severity::WARNING) || (severity_known && severity < severities[system])) {\n        buffer[0] = '\\0';\n        return;\n    }\n    \n    using namespace Platform;\n    \n    const char* severity_text = nullptr;\n    Platform::TerminalColor color = TerminalColor::DEFAULT;\n    \n    switch (severity) {\n        case Severity::DEFAULT:         severity_text = \"[    ]\";   break;\n        case Severity::WARNING:         severity_text = \"[WARN]\";   break;\n        case Severity::ERROR:           severity_text = \"[ERRR]\";   break;\n        case Severity::CRITICAL_ERROR:  severity_text = \"[CRIT]\";   break;\n        case Severity::INFO:            severity_text = \"[INFO]\";   break;\n        default:                        severity_text = \"[    ]\";   break;     \n    }\n    \n    switch (severity) {\n        case Severity::DEFAULT:         color = TerminalColor::DEFAULT;      break;\n        case Severity::WARNING:         color = TerminalColor::LIGHT_YELLOW; break;\n        case Severity::ERROR:           color = TerminalColor::LIGHT_RED;    break;\n        case Severity::CRITICAL_ERROR:  color = TerminalColor::LIGHT_RED;    break;\n        case Severity::INFO:            color = TerminalColor::DEFAULT;      break;\n        default:                        color = TerminalColor::DEFAULT;      break;     \n    }\n    \n    const char* system_text = system == 6 ? nullptr : System::GetShortName(system);\n    \n    if (color != TerminalColor::DEFAULT) {\n        SwitchForeground(color);\n    }\n    \n    if (system_text) {\n        std::cout << severity_text << ' ' << '[' << system_text << ']' << ' ';\n    }\n    \n    if (console_log_callback) {\n        console_log_callback(0, buffer);\n    }\n    \n    std::cout << buffer;\n    \n    if (color != TerminalColor::DEFAULT) {\n        SwitchForeground(TerminalColor::DEFAULT);\n    }\n    \n    std::cout << std::endl;\n    \n    if (log_file) {\n        if (system_text) {\n            fprintf(log_file, \"%s [%s] %s\\n\", severity_text, system_text, buffer);\n        } else {\n            fprintf(log_file, \"%s\\n\", buffer);\n        }\n        \n    }\n    \n    \n    // some people might say \"loggers shouldn't act as asserts\" but they are wrong!\n    // consider this:\n    // purpose of logger:       catching bugs\n    // purpose of an asserter:  catching bugs\n    // see? things should be grouped by what they do, not what they say they do\n    \n    switch (severity) {\n        default: break; \n        case Severity::ERROR:\n            Platform::TryDebugging();\n            Platform::ShowErrorDialog(buffer, \"Very bad error\");\n            break;\n        case Severity::CRITICAL_ERROR:\n            Platform::TryDebugging();\n            Platform::ShowErrorDialog(buffer, \"Fatal error\");\n            abort();\n            break;\n    }\n    \n    buffer[0] = '\\0';\n}\n\nvoid flush_display(int time, int system) {\n    if (display_log_callback) {\n        display_log_callback(time, buffer);\n    }\n    \n    buffer[0] = '\\0';\n}\n\ntemplate <> void concat(const std::string_view& value) {\n    strncat(buffer, value.data(), value.size());\n}\n\ntemplate <> void concat(const std::string& value) {\n    strncat(buffer, value.data(), value.size());\n}\n\ntemplate <> void concat(const char* const& value) {\n    strcat(buffer, value);\n}\n\nvoid concat(const char* value) {\n    strcat(buffer, value);\n}\n\n\ntemplate <> void concat(const UID& value) {\n    concat<char const*> (value.operator char const*());\n}\n\ntemplate <typename T> void to_chars_concat(const T& value) {\n    char buffer[100];\n    *std::to_chars(buffer, buffer + 100, value).ptr = '\\0';\n    concat<const char*> (buffer);\n}\n\ntemplate <> void concat_numeric(const int64_t& value) {\n    to_chars_concat<int64_t>(value);\n}\n\ntemplate <> void concat_numeric(const uint64_t& value) {\n    to_chars_concat<uint64_t>(value);\n}\n\ntemplate <> void concat_numeric(const float& value) {\n    to_chars_concat<float>(value);\n}\n\n}"
  },
  {
    "path": "src/framework/logging.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_LOGGING_H\n#define TRAM_SDK_FRAMEWORK_LOGGING_H\n\n#include <framework/core.h>\n#include <framework/uid.h>\n#include <framework/system.h>\n#include <concepts>\n\nnamespace tram {\n\nenum class Severity {\n    INFO,           //< For debugging and other verbose messages. Not printed by default.\n    WARNING,        //< For errors that are corrected and require no end-user intervention.\n    ERROR,          //< For significant erros that can be corrected, but require the end-user to be notified.\n    CRITICAL_ERROR, //< For errors that cannot be recovered from.\n    DEFAULT         //< Informational messages, always printed.\n};\n\nnamespace implementation {\n    template <typename T> void concat(const T& value) {\n        concat<const char*>(\"LOGGER_UNDEFINED_TYPE\");\n    }\n    \n    template <> void concat(const std::string_view& value);\n    template <> void concat(const std::string& value);\n    template <> void concat(const char* const& value);\n    template <> void concat(const UID& value);\n    template <size_t N>\n    void concat(const char (&value)[N]) {\n        concat<const char*>(value);\n    }\n    \n    void concat(const char*);\n\n    template <typename T> void concat_numeric(const T& value) {}\n    template <> void concat_numeric(const int64_t& value);\n    template <> void concat_numeric(const uint64_t& value);\n    template <> void concat_numeric(const float& value);\n    \n    template <std::signed_integral T> void concat(const T& value) {\n        concat_numeric<int64_t>(value);\n    }\n    \n    template <std::unsigned_integral T> void concat(const T& value) {\n        concat_numeric<uint64_t>(value);\n    }\n    \n    template <std::floating_point T> void concat(const T& value) {\n        concat_numeric<float>(value);\n    }\n    \n    void concat_fmt(std::string_view& str);\n    void flush_console(Severity severity, System::system_t system);\n    void flush_display(int time, System::system_t system);\n    \n    \n    inline void log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view& format) {\n        concat_fmt(format);\n        flush(severity, system);\n    }\n\n    template <typename T, typename... Args>\n    void log(void(*flush)(Severity, System::system_t), Severity severity, System::system_t system, std::string_view& format, T& value, Args&&... args) {\n        concat_fmt(format);\n        concat(value);\n        \n        log(flush, severity, system, format, args...);\n    }\n}\n\nvoid SetSystemLoggingSeverity(System::system_t system, Severity min_severity);\nvoid SetFileLogging(bool enabled);\n\nvoid SetDisplayLogCallback(void(int, const char*));\nvoid SetConsoleLogCallback(void(int, const char*));\n\ntemplate <typename... Args>\nvoid Log(Severity severity, System::system_t system, const std::string_view& format, Args&&... args) {\n    std::string_view format_view = format;\n    implementation::log(implementation::flush_console, severity, system, format_view, args...);\n}\n\ntemplate <typename... Args>\nvoid Log(System::system_t system, const std::string_view& format, Args&&... args) {\n    std::string_view format_view = format;\n    implementation::log(implementation::flush_console, Severity::DEFAULT, system, format_view, args...);\n}\n\ntemplate <typename... Args>\nvoid Log(const std::string_view& format, Args&&... args) {\n    std::string_view format_view = format;\n    implementation::log(implementation::flush_console, Severity::DEFAULT, 6, format_view, args...);\n}\n\ntemplate <typename... Args>\nvoid DisplayLog(int time, const std::string_view& format, Args&&... args) {\n    std::string_view format_view = format;\n    implementation::log(implementation::flush_display, time, 6, format_view, args...);\n}\n\n}\n\n#endif // TRAM_SDK_LOGGING_H"
  },
  {
    "path": "src/framework/math.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/math.h>\n\n#include <cmath>\n\n/**\n * @file framework/math.cpp\n * \n * GLM typedefs and useful math functions.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/math.html\n */\n\nnamespace tram {\n\n// TODO: create QuatLookAt that returns the quaternion as return instead of reference param \n/// Rotates a quaternion to face a point.\n/// Useful for pointing objects at things.\nvoid QuatLookAt(quat& quaternion, const vec3& from, const vec3& to) {\n    quaternion = glm::quatLookAt(glm::normalize(to - from), DIRECTION_UP);\n}\n\n/// Projects a point on a line.\n/// @param [in,out] point Point that will be projected.\n/// @param [in]     from  First endpoint of the line.\n/// @param [in]     to    Second endpoint of the line.\nvoid ProjectLine(vec3& point, const vec3& from, const vec3& to) {\n    const vec3 projectable = point - from;\n    const vec3 line = to - from;\n    point = from + (glm::dot(projectable, line) / glm::dot(line, line) * line);\n}\n\n/// Finds the intersection between a ray and a triangle.\n/// If the ray intersects the triangle, the returned vector will be the 3D\n/// coordinates of the intersection. If the ray does not intersect the triangle,\n/// the function will return a vector with all of its components set to the\n/// floating-point INFINITY.\n/// @param ray_pos              Ray origin, 3D coordinate.\n/// @param ray_dir              Ray direction, normal vector. Needs to be normalized.\n/// @param point1,point2,point3 Triangle vertex coordinates.\nvec3 RayTriangleIntersection(vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3) {\n    const float epsilon = 0.000001;\n    \n    const vec3 p1_p2 = point2 - point1;\n    const vec3 p1_p3 = point3 - point1;\n    \n    const vec3 p_vec = glm::cross(ray_dir, p1_p3);\n    const float det = glm::dot(p1_p2, p_vec);\n\n    if (fabs(det) < epsilon) {\n        return {INFINITY, INFINITY, INFINITY};\n    }\n\n    const float inv_det = 1.0 / det;\n    const vec3 t_vec = ray_pos - point1;\n    const float u = inv_det * glm::dot(t_vec, p_vec);\n\n    if (u < 0.0 || u > 1.0) {\n        return {INFINITY, INFINITY, INFINITY};\n    }\n    \n    const vec3 q_vec = glm::cross(t_vec, p1_p2);\n    const float v = inv_det * glm::dot(ray_dir, q_vec);\n\n    if (v < 0.0 || u + v > 1.0) {\n        return {INFINITY, INFINITY, INFINITY};\n    }\n\n    const float t = inv_det * glm::dot(p1_p3, q_vec);\n\n    if (t > epsilon) {\n        return ray_pos + (ray_dir * t);\n    } else {\n        return {INFINITY, INFINITY, INFINITY};\n    }\n\n}\n\n// TODO: create an AABB struct and use that instead of the min/max\n// this kind of signature: AABB RotateAABB(AABB box, quat rotation)\n\n/// Rotates an AABB box by the given rotation.\nvoid RotateAABB(vec3& min, vec3& max, quat rotation) {\n    vec3 extents[8] = {\n        {min.x, min.y, min.z},\n        {max.x, min.y, min.z},\n        {min.x, max.y, min.z},\n        {min.x, min.y, max.z},\n        {max.x, max.y, min.z},\n        {max.x, min.y, max.z},\n        {max.x, max.y, max.z},\n        {min.x, max.y, max.z}\n    };\n    \n    for (auto& extent : extents) {\n        extent = rotation * extent;\n    }\n    \n    min = extents[0];\n    max = extents[0];\n    \n    for (auto& extent : extents) {\n        min = MergeAABBMin(min, extent);\n        max = MergeAABBMax(max, extent);\n    }\n}\n\nvoid RotateAABB(vec3& min, vec3& max, mat4 rotation) {\n    vec3 extents[8] = {\n        {min.x, min.y, min.z},\n        {max.x, min.y, min.z},\n        {min.x, max.y, min.z},\n        {min.x, min.y, max.z},\n        {max.x, max.y, min.z},\n        {max.x, min.y, max.z},\n        {max.x, max.y, max.z},\n        {min.x, max.y, max.z}\n    };\n    \n    for (auto& extent : extents) {\n        extent = rotation * vec4(extent, 1.0f);\n    }\n    \n    min = extents[0];\n    max = extents[0];\n    \n    for (auto& extent : extents) {\n        min = MergeAABBMin(min, extent);\n        max = MergeAABBMax(max, extent);\n    }\n}\n\n// TODO: switch these to pass by value, not reference?\n\n/// Generates a transform matrix.\nmat4 PositionRotationToMatrix(const vec3& position, const quat& rotation) {\n    mat4 matrix = mat4(1.0f);\n    matrix = glm::translate(matrix, position);\n    matrix *= glm::toMat4(rotation);\n    return matrix;\n}\n\n/// Generates a transform matrix.\nmat4 PositionRotationScaleToMatrix(const vec3& position, const quat& rotation, const vec3& scale) {\n    mat4 matrix = mat4(1.0f);\n    matrix = glm::translate(matrix, position);\n    matrix *= glm::toMat4(rotation);\n    matrix = glm::scale(matrix, scale);\n    return matrix;\n}\n\nstatic vec3 euler_normalize(vec3 euler) {\n    const float tupi = 2.0f * glm::pi<float>();\n    const float bias = 0.02f;\n\n    float x = fmodf(euler.x, tupi);\n    float y = fmodf(euler.y, tupi);\n    float z = fmodf(euler.z, tupi);\n\n    if (x < 0.0f) x += tupi;\n    if (y < 0.0f) y += tupi;\n    if (z < 0.0f) z += tupi;\n    \n    if (x > tupi - bias) x = 0.0f;\n    if (y > tupi - bias) y = 0.0f;\n    if (z > tupi - bias) z = 0.0f;\n\n    return  {x, y, z};\n}\n\nstatic vec3 euler_alt_normalize(vec3 euler) {\n    float x = atan2f(sinf(euler.x), cosf(euler.x));\n    float y = atan2f(sinf(euler.y), cosf(euler.y));\n    float z = atan2f(sinf(euler.z), cosf(euler.z));\n\n    return  {x, y, z};\n}\n\nstatic float euler_error(vec3 a, vec3 b) {\n    return pow(a.x - b.x, 4.0f) + pow(a.y - b.y, 4.0f) + pow(a.z - b.z, 4.0f);\n}\n\n/// Extracts euler angles from a quaternion.\n/// Since multiple sets of euler angles correspond to the same quaternion\n/// rotation, this function will attempt to find a set of euler angles that is\n/// nearest to some previous set of euler angles. It also gracefully handles\n/// gimbal locking.\nvec3 EulerFromQuat(quat rotation, vec3 previous) {\n    const float pi = glm::pi<float>();\n    const float epsilon = 0.02f;\n\n    const bool previous_given = !std::isnan(previous.x);\n\n    vec3 euler = glm::eulerAngles(rotation);\n    vec3 euler_alt = {euler.x + pi, pi - euler.y, euler.z + pi};\n\n    euler = euler_alt_normalize(euler);\n    euler_alt = euler_alt_normalize(euler_alt);\n\n    if (!previous_given) {\n        previous = {0.0f, 0.0f, 0.0f};\n    }\n\n    if (euler_error(previous, euler) > euler_error(previous, euler_alt)) {\n        std::swap(euler, euler_alt);\n    }\n\n    const bool gimbal_lock = fabsf(euler.y - 0.5f * pi) < epsilon\n        || fabsf(euler.y - 1.5f * pi) < epsilon;\n\n    if (!previous_given) {\n        if (gimbal_lock) {\n            euler.x = euler.x - euler.z;\n            euler.z = 0.0f;\n        }\n    } else {\n        if (gimbal_lock) {\n            euler.x = euler.x - euler.z;\n            euler.z = 0.0f;\n            \n            euler.z = previous.x - euler.x;\n            euler.x = previous.x;\n        }\n    }\n\n    return euler_normalize(euler);\n}\n\n}"
  },
  {
    "path": "src/framework/math.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_MATH_H\n#define TRAM_SDK_FRAMEWORK_MATH_H\n\n#include <glm/glm.hpp>\n#include <glm/gtx/quaternion.hpp>\n\nnamespace tram {\n\ntypedef glm::vec3 vec3;\ntypedef glm::quat quat;\ntypedef glm::mat2 mat2;\ntypedef glm::mat3 mat3;\ntypedef glm::mat4 mat4;\ntypedef glm::vec4 vec4;\ntypedef glm::vec2 vec2;\ntypedef glm::ivec2 ivec2;\ntypedef glm::ivec3 ivec3;\ntypedef glm::ivec4 ivec4;\ntypedef glm::uvec2 uvec2;\ntypedef glm::uvec3 uvec3;\ntypedef glm::uvec4 uvec4;\n\nconst vec3 DIRECTION_FORWARD    (0.0f,  0.0f, -1.0f);\nconst vec3 DIRECTION_SIDE       (1.0f,  0.0f,  0.0f);\nconst vec3 DIRECTION_UP         (0.0f,  1.0f,  0.0f);\n\nconst vec3 IDENTITY_POSITION    (0.0f, 0.0f, 0.0f);\nconst quat IDENTITY_ROTATION    (1.0f, 0.0f, 0.0f, 0.0f);\nconst vec3 IDENTITY_SCALE       (1.0f, 1.0f, 1.0f);\n\nvoid QuatLookAt(quat& quaternion, const vec3& from, const vec3& to);\nvoid ProjectLine(vec3& point, const vec3& from, const vec3& to);\n\nvec3 RayTriangleIntersection(vec3 ray_pos, vec3 ray_dir, vec3 point1, vec3 point2, vec3 point3);\n\nvoid RotateAABB(vec3& min, vec3& max, quat rotation);\nvoid RotateAABB(vec3& min, vec3& max, mat4 rotation);\n\nmat4 PositionRotationToMatrix(const vec3& position, const quat& rotation);\nmat4 PositionRotationScaleToMatrix(const vec3& position, const quat& rotation, const vec3& scale);\n\nvec3 EulerFromQuat(quat rotation, vec3 previous = {NAN, NAN, NAN});\n\ninline vec3 MergeAABBMin (vec3 a, vec3 b) {\n    return vec3 {\n        a.x < b.x ? a.x : b.x,\n        a.y < b.y ? a.y : b.y,\n        a.z < b.z ? a.z : b.z\n    };\n}\n\ninline vec3 MergeAABBMax (vec3 a, vec3 b) {\n    return vec3 {\n        a.x > b.x ? a.x : b.x,\n        a.y > b.y ? a.y : b.y,\n        a.z > b.z ? a.z : b.z\n    };\n}\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_MATH_H"
  },
  {
    "path": "src/framework/message.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/message.h>\n#include <framework/entity.h>\n#include <framework/logging.h>\n\n#include <templates/queue.h>\n#include <templates/pool.h>\n#include <templates/stackpool.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <queue>\n\n/**\n * @struct tram::Message framework/message.h <framework/message.h>\n * \n * Message data.\n * \n * Fill in the struct fields and then use Message::Send() to send it out to\n * listeners.\n * \n * @property tram::Message::type\n * Type of the message.\n * \n * @property tram::Message::sender\n * ID of the Entity that sent the message.\n * Either set to the ID of an Entity, or can be set to zero.\n * \n * @property tram::Message::receiver\n * ID of the Entity that will receive the message.\n * Set to the ID of an Entity.\n * \n * @property tram::Message::data\n * Pointer to arbitrary data.\n * Can be set to a nullptr. Some message types have specific data, e.g. structs\n * or other types that they need their data pointers to be pointing to.\n * For your own message types, you can use this pointer for whatever purpose you\n * want.\n * If uncertain, set this to a nullptr.\n * \n * @property tram::Message::data_int\n * Arbitrary data integer.\n * \n * @property tram::Message::data_value\n * Pointer to a value_t.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/message.html\n */\n\n/**\n * @typedef uint32_t message_t\n * Message type number.\n * Can be set to any of the values in Message::Type, or you can use\n * Message::Register() to allocate new message types.\n */\n\nnamespace tram {\n    \nstatic Queue<Message> message_queue(\"Message queue\", MESSAGE_QUEUE_LIMIT);\nstatic Pool<Message> message_pool(\"Message pool\", MESSAGE_PRIORITY_QUEUE_LIMIT);\nstatic StackPool<char> data_pool(\"Message data pool\", MESSAGE_DATA_LIMIT);\nstatic void(*intercept_callback)(const Message&) = nullptr;\n\nstatic std::priority_queue<std::pair<double, Message*>, std::vector<std::pair<double, Message*>>, std::greater<std::pair<double, Message*>>> future_messages;\n\nstatic Hashmap<message_t> name_t_to_message_t(\"name_t_to_message_t\", (MESSAGE_TYPE_LIMIT*2)+11);\n\nstatic const char* message_names[MESSAGE_TYPE_LIMIT] = {\n    \"none\",\n    \"ping\",\n    \"move-pick-up\",\n    \"open\",\n    \"close\",\n    \"lock\",\n    \"unlock\",\n    \"toggle\",\n    \"kill\",\n    \"use\",\n    \"start\",\n    \"stop\",\n    \"activate\",\n    \"activate-once\",\n    \"select\",\n    \"set-progress\",\n    \"set-animation\",\n    \"set-flag-on\",\n    \"set-flag-off\"\n};\n\nstatic message_t last_type = Message::LAST_MESSAGE;\n\n/// Registers a new message type.\n/// @return Unique message type number.\nmessage_t Message::Register(const char* name) {\n    if (UID::is_empty(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Message name '{}' is empty\", name);\n    }\n    \n    if (!UID::no_quote(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Message name '{}' contains invalid characters\", name);\n    }\n    \n    for (event_t i = 0; i < last_type; i++) {\n        if (strcmp(message_names[i], name) != 0) continue;\n        \n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Message name '{}' already in use\", name);\n    }\n    \n    if (last_type >= MESSAGE_TYPE_LIMIT) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Message count limit exceeded when registering '{}'\", name);\n    }\n    \n    message_names[last_type] = name;\n    return last_type++;\n}\n\n/// Finds a message type from a name.\nmessage_t Message::GetType(name_t name) {\n    message_t type = name_t_to_message_t.Find(name);\n    \n    if (!type && name) {\n        for (message_t i = 0; i < last_type; i++) {\n            if (message_names[i] == name) {\n                name_t_to_message_t.Insert(name, i);\n                return i;\n            }\n        }\n    }\n    \n    return type;\n}\n\n/// Gets a nessage type name.\nname_t Message::GetName(message_t type) {\n    if (type >= last_type) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Attempting index {} invalid message\", type);\n    }\n    \n    return message_names[type];\n}\n\n/// Returns the last message_t plus one.\n/// Useful for iterating over all registered messages, i.e. in a \n/// `while (++message < Message::GetLast());` or a similar loop.\nmessage_t Message::GetLast() {\n    return last_type;\n}\n\n/// Dispatches sent messsages.\n/// Dispatches the messages that have been sent using the Message::Send() function.\nvoid Message::Dispatch() {\n    auto now = GetTickTime();\n    \n    while (!future_messages.empty() && future_messages.top().first < now) {\n        auto message = future_messages.top().second;\n        auto receiver = Entity::Find(message->receiver);\n        if (receiver) receiver->MessageHandler(*message);\n        \n        message_pool.Remove(message);\n        future_messages.pop();\n    }\n    \n    while (message_queue.size()) {\n        Message& message = message_queue.front();\n        Entity* receiver = Entity::Find(message.receiver);\n        if (receiver) receiver->MessageHandler(message);\n        if (intercept_callback) intercept_callback(message);\n\n        message_queue.pop();\n    }\n    \n    data_pool.Reset();\n}\n\n/// Sends a message.\n/// Message will be delivered to the Entity with the ID number specified in the\n/// Message::receiver field, by calling its Entity::MessageHandler() method.\nvoid Message::Send(const Message& message) {\n    if (!message.type || message.type >= last_type) {\n        Log(Severity::WARNING, System::CORE, \"Sent out an unregistered message type with {} index\", message.type);\n    }\n    \n    message_queue.push(message);\n}\n\n/// Semds a message into the future.\n/// Same as Message::Send(), but the actual sending will be delayed until\n/// specified ammount of ticks have passed.\n/// @param message  Message to be sent.\n/// @param when     How many ticks need to pass until the message will be sent\n///                 out, i.e. if you want to send a message out in 1 secons,\n///                 set this parameter to 60.\nvoid Message::Send(const Message& message, float delay) {\n    auto message_copy = message_pool.AddNew(message);\n    auto abs_when = GetTickTime() + delay;\n    \n    if (!message.type || message.type >= last_type) {\n        Log(Severity::WARNING, System::CORE, \"Sent out an unregistered message type with {} index\", message.type);\n    }\n    \n    future_messages.push({abs_when, message_copy});\n}\n\n/// Allocates space for message data.\n/// This allocation is useful for storing the additional data (Message::data pointer),\n/// for messages, since all allocated space will be cleared once all messages have\n/// been dispatched. This only applies to messages that are sent without a time delay,\n/// if you're sending messages with a delay, then you'll need to allocate memory for\n/// their data yourself.\n/// @note Remember to only use POD data types.\nvoid* Message::AllocateData(size_t ammount) {\n    return data_pool.AddNew(ammount);\n}\n\nvoid Message::SetInterceptCallback(void(*callback)(const Message&)) {\n    intercept_callback = callback;\n}\n\n}\n"
  },
  {
    "path": "src/framework/message.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_MESSAGE_H\n#define TRAM_SDK_FRAMEWORK_MESSAGE_H\n\n#include <framework/uid.h>\n\nnamespace tram {\n\ntypedef uint32_t message_t;\ntypedef uint32_t id_t;\n\nstruct Value;\ntypedef Value value_t;\n\nstruct Message {\n    enum Type : message_t {\n        NONE,\n        PING,\n        MOVE_PICK_UP,\n        OPEN,\n        CLOSE,\n        LOCK,\n        UNLOCK,\n        TOGGLE,\n        KILL,\n        TRIGGER,\n        START,\n        STOP,\n        ACTIVATE,\n        ACTIVATE_ONCE,\n        SELECT,\n        SET_PROGRESS,\n        SET_ANIMATION,\n        SET_FLAG_ON,\n        SET_FLAG_OFF,\n        LAST_MESSAGE\n    };\n\n    static message_t Register(const char* name);\n    static message_t GetType(name_t name);\n    static name_t GetName(message_t type);\n    static message_t GetLast();\n    \n    static void Send(const Message& message);\n    static void Send(const Message& message, float delay);\n    static void Dispatch();\n    static void* AllocateData(size_t ammount);\n    template <typename T> static T* AllocateData() { return (T*)AllocateData(sizeof(T)); }\n    template <typename T> static T* AllocateData(const T& data) { T* ptr = (T*)AllocateData(sizeof(T)); *ptr = data; return ptr; }\n    static void SetInterceptCallback(void(const Message&));\n\n    message_t type;\n    id_t sender;\n    id_t receiver;\n    \n    union {\n        void* data = nullptr;\n        int32_t data_int;\n        value_t* data_value;\n    };\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_MESSAGE_H"
  },
  {
    "path": "src/framework/navmesh.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/navmesh.h>\n\n#include <framework/file.h>\n\n#include <templates/pool.h>\n#include <templates/hashmap.h>\n\n#include <unordered_map>\n#include <cstring>\n\n/**\n * @class tram::Navmesh framework/navmesh.h <framework/navmesh.h>\n * \n * Not fully implemented yet.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/navmesh.html\n */\n\nnamespace tram {\n\ntemplate <> Pool<Navmesh> PoolProxy<Navmesh>::pool (\"navmesh pool\", 100);\nstatic Hashmap<Navmesh*> navmesh_list (\"navmesh list\", 200);\n\nstatic std::unordered_map<uint32_t, node_id_t> raw_node_id_to_id;\nstatic std::vector<NavmeshNode> navmesh_nodes = {{0, 0, 0, 0, {0, 0, 0}}};\n\nstatic node_id_t GetNavmeshNodeFromRawId (uint32_t raw_id) {\n    if (raw_id == 0) {\n        return 0;\n    }\n    \n    node_id_t node_id = raw_node_id_to_id[raw_id];\n        \n    if (!node_id) {\n        node_id = navmesh_nodes.size();\n        raw_node_id_to_id[raw_id] = node_id;\n        navmesh_nodes.push_back({});\n    }\n    \n    return node_id;\n}\n\nNavmeshNode Navmesh::GetNavmeshNode (node_id_t node_id) {\n    return navmesh_nodes [node_id];\n}\n\nNavmesh* Navmesh::Find (name_t name) {\n    Navmesh* navmesh = navmesh_list.Find(name);\n    \n    if (!navmesh) {\n        navmesh =  PoolProxy<Navmesh>::New(name);\n    }\n    \n    return navmesh;\n}\n\nvoid Navmesh::LoadFromDisk() {\n    char path[100] = \"data/navmeshes/\";\n    strcat(path, name);\n    strcat(path, \".navmesh\");\n    \n    File file (path, File::READ);\n    \n    if (!file.is_open()) {\n        std::cout << \"Can't find path file: \" << path << std::endl; return;\n    }\n    \n    if (file.read_name() != \"NAVMESHv1\") {\n        std::cout << \"Unrecognized navmesh format in \" << path << std::endl; return;\n    }\n    \n    file.read_name(); // skip navmesh name\n    \n    while (file.is_open()) {\n        id_t node_id = GetNavmeshNodeFromRawId(file.read_uint32());\n        \n        nodes.push_back(node_id);\n        \n        navmesh_nodes [node_id] = {\n            GetNavmeshNodeFromRawId(file.read_uint32()),\n            GetNavmeshNodeFromRawId(file.read_uint32()),\n            GetNavmeshNodeFromRawId(file.read_uint32()),\n            GetNavmeshNodeFromRawId(file.read_uint32()),\n            {\n                file.read_float32(),\n                file.read_float32(),\n                file.read_float32(),\n            }\n        };\n    }\n}\n\n}"
  },
  {
    "path": "src/framework/navmesh.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_NAVMESH_H\n#define TRAM_SDK_FRAMEWORK_NAVMESH_H\n\n#include <framework/core.h>\n#include <framework/uid.h>\n#include <framework/math.h>\n\n#include <vector>\n\nnamespace tram {\n    \ntypedef uint32_t node_id_t;\n\nstruct NavmeshNode {\n    node_id_t next, prev, left, right;\n    vec3 position;\n};\n\nclass Navmesh {\npublic:\n    Navmesh (name_t name) : name(name) {}\n    ~Navmesh() = delete;\n\n    inline name_t GetName() { return name; }\n    inline const std::vector<node_id_t>& GetNodes() { return nodes; }\n    \n    void LoadFromDisk();\n    \n    static NavmeshNode GetNavmeshNode (node_id_t node_id);\n    static Navmesh* Find (name_t name);\nprotected:\n    name_t name;\n    std::vector<node_id_t> nodes;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_NAVMESH_H"
  },
  {
    "path": "src/framework/path.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/path.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <render/render.h>\n\n#include <templates/pool.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <unordered_map>\n#include <cstring>\n\n/**\n * @class tram::Path framework/path.h <framework/path.h>\n * \n * Sequence of line segments.\n * \n * Can be used to push an object along a path, can be used as a rail, or as a\n * path for guiding agents.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/path.html\n */\n \n /**\n * @class tram::PathFollower framework/path.h <framework/path.h>\n * \n * Point constrained to a Path.\n * \n * When constructed, the PathFollower will project the initial position on the\n * path, i.e. find the nearest point on the path.\n * After that, you can use PathFollower::Advance() to push it back and forth on\n * the path.\n * The position of the PathFollower can be used to position an object, so that\n * it appears to be following the given path.\n */\n\nnamespace tram {\n\ntemplate <> Pool<Path> PoolProxy<Path>::pool(\"Path pool\", RESOURCE_LIMIT_PATH);\nstatic Hashmap<Path*> path_list(\"Path list\", RESOURCE_LIMIT_PATH);\n\n/// Finds a path.\n/// Finds a path by its name, or creates a new path by that name if not found.\n/// @return Always returns a pointer to a Path.\nPath* Path::Find(name_t name) {\n    Path* path = path_list.Find(name);\n    \n    if (!path) {\n        path = PoolProxy<Path>::New(name);\n        path_list.Insert(name, path);\n    }\n    \n    return path;\n}\n\nvoid Path::LoadFromDisk() {\n    char path[PATH_LIMIT] = \"data/paths/\";\n    strcat(path, name);\n    strcat(path, \".path\");\n    \n    File file (path, File::READ);\n    \n    if (!file.is_open()) {\n        Log(Severity::WARNING, System::CORE, \"Can't find path file: {}\", path);\n        return;\n    }\n    \n    if (file.read_name() != \"PATHv2\") {\n        Log(Severity::WARNING, System::CORE, \"Unrecognized path format in: {}\", path);\n        return;\n    }\n    \n    while (file.is_continue()) {\n        name_t entry_type = file.read_name();\n        \n        if (entry_type == \"node\") {\n            Node node = {\n                .position = {file.read_float32(),\n                             file.read_float32(),\n                             file.read_float32()}\n            };\n            \n            this->nodes.push_back(node);\n        } else if (entry_type == \"edge\") {\n            uint32_t edge_index = this->edges.size();\n            \n            Edge edge = {file.read_uint32(), file.read_uint32()};\n            \n            this->nodes[edge.from].edges.push_back(edge_index);\n            \n            this->edges.push_back(edge);\n            this->edge_infos.push_back({});\n        } else if (entry_type == \"path\") {\n            uint32_t edge_index = file.read_uint32();\n            name_t path_type = file.read_name();\n            \n            if (path_type == \"left\") {\n                this->edge_infos[edge_index].type = PATH_LEFT;\n            } else if (path_type == \"right\") {\n                this->edge_infos[edge_index].type = PATH_RIGHT;\n            }\n        }\n    }\n}\n\n/// Draws the path's line segments.\nvoid Path::Draw() {\n    for (auto edge : edges) {\n        Render::AddLine(nodes[edge.from].position, nodes[edge.to].position, Render::COLOR_WHITE);\n    }\n}\n\n/// Creates a new PathFollower for a path.\nPathFollower::PathFollower(Path* path, vec3 initial_pos, PathType type) {\n    this->prev = 0;\n    this->next = 0;\n    this->progress = 0.0f;\n    this->direction = PATH_STRAIGHT;\n    this->path = path;\n    this->type = type;\n    \n    Project(initial_pos);\n}\n\n/// Advances the follower along the path.\n/// @param distance Distance along the path, in meters.\nvoid PathFollower::Advance(float distance) {\n    float segment = glm::distance(path->nodes[prev].position, path->nodes[next].position);\n    float dist_left = (1.0f - progress) * segment;\n    \n    if (dist_left < distance) {\n        distance -= dist_left;\n        \n        // TODO: implement steering\n        // also figure out what to do if path just ends there?\n        uint32_t next_next = (uint32_t)-1;\n        for (uint32_t edge : path->nodes[next].edges) {\n            uint32_t candidate_next = path->edges[edge].to;\n            if (candidate_next != prev && candidate_next != next) {\n                next_next = candidate_next;\n            }\n        }\n        \n        // cancel advance if there is no more segments to advance to\n        if (next_next == (uint32_t)-1) return;\n        \n        prev = next;\n        next = next_next;\n        progress = 0.0f;\n        \n        Advance(distance);\n        //if (distance > 0.01f) Advance(distance);\n    } else {\n        dist_left -= distance;\n        progress = (segment - dist_left) / segment;\n    }\n}\n\n/// TODO: move these into math.h??\nstatic vec3 nearest_point(vec3 a, vec3 b, vec3 p) {\n    vec3 v = b - a;\n    vec3 u = a - p;\n    float t = - (glm::dot(v, u) / glm::dot(v, v));\n    return glm::mix(a, b, glm::clamp(t, 0.0f, 1.0f));\n}\n\nstatic float project_line(vec3 a, vec3 b, vec3 p) {\n    vec3 v = b - a;\n    vec3 u = a - p;\n    float t = - (glm::dot(v, u) / glm::dot(v, v));\n    return glm::clamp(t, 0.0f, 1.0f);\n}\n\nvoid PathFollower::Project(vec3 projectable) {\n    int nearest_edge = 0;\n    float nearest_dist = INFINITY;\n    for (size_t i = 0; i < path->edges.size(); i++) {\n        vec3 from_point = path->nodes[path->edges[i].from].position;\n        vec3 to_point = path->nodes[path->edges[i].to].position;\n        vec3 point = nearest_point(from_point, to_point, projectable);\n        \n        float distance = glm::distance(projectable, point);\n        \n        if (distance < nearest_dist) {\n            nearest_dist = distance;\n            nearest_edge = i;\n        }\n    }\n    \n    this->prev = path->edges[nearest_edge].from;\n    this->next = path->edges[nearest_edge].to;\n    \n    this->progress = project_line(path->nodes[prev].position, path->nodes[next].position, projectable);\n}\n\nvoid PathFollower::SetOrientation(vec3 orientation) {\n    vec3 from_to = glm::normalize(path->nodes[next].position - path->nodes[prev].position);\n    vec3 direction = glm::normalize(orientation);\n    \n    if (glm::dot(from_to, direction) < 0.0f) {\n        std::swap(prev, next);\n        progress = 1.0f - progress;\n    }\n}\n\nvec3 PathFollower::GetPosition() {\n    return glm::mix(path->nodes[prev].position,\n                    path->nodes[next].position,\n                    progress);\n}\n\nvec3 PathFollower::GetTangent() {\n    return glm::normalize(path->nodes[next].position - path->nodes[prev].position);\n}\n\nvoid PathFollower::PathFollower::TurnLeft() {\n    this->direction = PATH_LEFT;\n}\nvoid PathFollower::TurnRight() {\n    this->direction = PATH_RIGHT;\n}\nvoid PathFollower::TurnStraight() {\n    this->direction = PATH_STRAIGHT;\n}\n\n\n}"
  },
  {
    "path": "src/framework/path.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_PATH_H\n#define TRAM_SDK_FRAMEWORK_PATH_H\n\n#include <framework/graph.h>\n\n#include <framework/uid.h>\n\nnamespace tram {\n\nenum PathType {\n    PATH_STRAIGHT,  //< Path vertex connection interpreted as a straight line.\n    PATH_LEFT,      //< Path vertex connection interpreted as a left turn.\n    PATH_RIGHT,     //< Path vertex connection interpreted as a right turn.\n    \n    PATH_LINEAR,    //< Path will be interpreted as being made of straight line segments.\n    PATH_CURVE      //< Not implemented.\n};\n    \nstruct PathEdgeInfo {\n    PathType type;\n};\n\nclass PathFollower;\n\nclass Path : public Graph {\npublic:\n    Path(name_t name) : name(name) {}\n\n    void LoadFromDisk();\n\n    void Draw();\n    \n    static Path* Find(name_t name);\nprotected:\n    ~Path() = delete;\n\n    friend class PathFollower;\n\n    name_t name;\n    std::vector<PathEdgeInfo> edge_infos;\n};\n\nclass PathFollower {\npublic:\n    PathFollower(Path* path, vec3 initial_pos, PathType type);\n    \n    void Advance(float);\n    \n    void Project(vec3);\n    \n    void TurnLeft();\n    void TurnRight();\n    void TurnStraight();\n    \n    vec3 GetPosition();\n    vec3 GetTangent();\n    \n    void SetOrientation(vec3);\n    \n    float progress;\n    uint32_t prev;\n    uint32_t next;\n    PathType type;\n    PathType direction;\n    Path* path;\n};\n    \n}\n\n#endif // TRAM_SDK_FRAMEWORK_PATH_H"
  },
  {
    "path": "src/framework/resource.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_RESOURCE_H\n#define TRAM_SDK_FRAMEWORK_RESOURCE_H\n\n#include <framework/uid.h>\n#include <framework/entitycomponent.h>\n\nnamespace tram {\n\nclass Resource  {\npublic:\n    enum Status {\n        UNLOADED,   //< Resource not in memory. Can't be used.\n        LOADED,     //< Resource loaded in memory, but still needs some processing (like uploading to video memory).\n        READY,      //< Resource is ready for sus.\n    };\n\n    Resource (name_t name) : name(name) {}\n    \n    inline Resource::Status GetStatus() const { return status; }\n    inline name_t GetName() const { return name; }\n    inline size_t GetReferences() const { return references; }\n    inline bool IsLoadFailed() const { return load_fail; }\n    \n    inline void AddReference() { references++; }\n    inline void RemoveReference() { references--; }\n    \n    virtual void LoadFromDisk() = 0;\n    virtual void LoadFromMemory() = 0;\n    \n    void Load() { if (status == UNLOADED) LoadFromDisk(); if (status == LOADED) LoadFromMemory(); }\n    \n    virtual void Unload() = 0;\nprotected:\n    Status status = UNLOADED;\n    name_t name;\n    bool load_fail = false;\n    size_t references = 0;\n};\n\n\nnamespace Async { void RequestResource (EntityComponent* requester, Resource* requested_resource); }\n\ntemplate <typename T>\nclass ResourceProxy {\npublic:\n    ResourceProxy(EntityComponent* parent) : parent(parent) {}\n    ~ResourceProxy() { set(nullptr); }\n    void set(Resource* new_res){\n        if (new_res == resource) return;\n        \n        if (resource) {\n            resource->RemoveReference();\n            Async::CancelRequest(parent, resource);\n        } \n\n        resource = new_res;\n        \n        if (resource) {\n            resource->AddReference();\n            \n            if (resource->GetStatus() != Resource::READY) {\n                parent->resources_waiting++;\n                Async::RequestResource(parent, resource);\n            }\n        }\n    }\n    T* get() { return (T*)resource; }\n    T* operator= (Resource* res) { set(res); return get(); }\n    T* operator->() { return (T*)resource; }\n    T& operator*() { return *((T*)resource); }\n    explicit operator bool() { return resource != nullptr; }\nprotected:\n    EntityComponent* parent;\n    Resource* resource = nullptr;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_RESOURCE_H"
  },
  {
    "path": "src/framework/script.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/script.h>\n\n#include <cstring>\n\n#include <iostream>\n#include <algorithm>\n\n#include <framework/core.h>\n#include <framework/entity.h>\n#include <framework/event.h>\n#include <framework/ui.h>\n#include <framework/logging.h>\n#include <framework/worldcell.h>\n#include <audio/audio.h>\n#include <entities/script.h>\n#include <physics/physics.h>\n#include <physics/collisionshape.h>\n#include <physics/collisionmodel.h>\n#include <render/render.h>\n#include <render/material.h>\n#include <render/model.h>\n#include <render/sprite.h>\n#include <render/api.h>\n#include <physics/physics.h>\n#include <components/render.h>\n#include <components/animation.h>\n#include <components/light.h>\n\n/**\n * @namespace tram::Script\n * \n * Scripting API\n * \n * Allows calling scripting language functions and allows them to call into\n * framework functions.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/script.html\n */\n\nusing namespace tram::Render;\n\nnamespace tram::Script {\n\nstatic Interface* language = nullptr;\n    \nvoid SetGlobal(name_t name, value_t value) {\n    language->SetGlobal(name, value);\n}\n\nvalue_t GetGlobal(name_t name) {\n    return language->GetGlobal(name);\n}\n\nvoid SetFunction(name_t name, std::vector<Type> parameters, value_t (*function)(valuearray_t)) {\n    language->SetFunction(name, parameters, function);\n}\n\nvalue_t CallFunction(name_t name, std::vector<Value> parameters) {\n    return language->CallFunction(name, parameters);\n}\n\nvalue_t Evaluate(const char* code) {\n    return language->Evaluate(code);\n}\n\n\n/* in the future we might allow users to use multiple scripting languages at the\n * same time.\n * it is very well possible that different scripting languages are better suited\n * for different tasks.\n * there might be some issues when determining which function to call when there\n * are scripting languages that have a function with the same name.\n * for now I'll keep the single-language approach\n */\n\nvoid SetInterface(Interface* new_language) {\n    language = new_language;\n}\n\nvoid LoadScript(const char* path) {\n    language->LoadScript(path);\n}\n\nvoid Init() {\n    if (!language) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Failed script initialization! Language not set!\");\n    }\n    \n    // FRAMEWORK/CORE.H\n    \n    SetFunction(\"__impl_core_get_tick\", {}, [](valuearray_t) -> value_t {\n        return GetTick();\n    });\n    \n    SetFunction(\"__impl_core_get_tick_time\", {}, [](valuearray_t) -> value_t {\n        return (float)GetTickTime();\n    });\n    \n    SetFunction(\"__impl_core_get_delta_time\", {}, [](valuearray_t) -> value_t {\n        return GetDeltaTime();\n    });\n    \n    \n    // FRAMEWORK/MATH.H\n    \n    SetFunction(\"__impl_math_quat_from_euler\", {TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        return quat((vec3)array[0]);\n    });\n    \n    SetFunction(\"__impl_math_quat_multiply\", {TYPE_QUAT, TYPE_QUAT}, [](valuearray_t array) -> value_t {\n        return (quat)array[0] * (quat)array[1];\n    });\n    \n    SetFunction(\"__impl_math_quat_vec3_multiply\", {TYPE_QUAT, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        return (quat)array[0] * (vec3)array[1];\n    });\n    \n    \n    \n    \n    // FRAMEWORK/EVENT.H\n    \n    SetFunction(\"__impl_event_register\", {TYPE_STRING}, [](valuearray_t array) -> value_t {\n        assert(array.size());\n        const char* name = array[0];\n        assert(name);\n        char* copy = (char*)malloc(strlen(name) + 1);\n        strcpy(copy, name);\n        \n        return Event::Register(copy);\n    });\n    \n    SetFunction(\"__impl_event_get_type\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        return Event::GetType(array[0]);\n    });\n    \n    SetFunction(\"__impl_event_get_name\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return Event::GetName(array[0]);\n    });\n    \n    SetFunction(\"__impl_event_get_last\", {}, [](valuearray_t) -> value_t {\n        return Event::GetLast();\n    });\n    \n    SetFunction(\"__impl_event_post\", {TYPE_UINT16, TYPE_UINT16, TYPE_UINT32, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        Event event;\n        \n        event.type = array[0];\n        event.subtype = array[1];\n        event.poster = array[2];\n        \n        if (array[3].GetType() == TYPE_UNDEFINED) {\n            event.data = nullptr;\n        } else {\n            event.data_value = Event::AllocateData<Value>(array[3]);\n        }\n    \n        Event::Post(event);\n        \n        return name_t();\n    });\n    \n    SetFunction(\"__impl_event_add_listener\", {TYPE_UINT16, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        size_t data_int = (uint32_t)array[1];\n        void* data_ptr = (void*)data_int;\n        \n        return Event::AddListener(array[0], data_ptr, [](Event& event, void* data) {\n            size_t data_ptr = (size_t)data;\n            uint32_t data_int = (uint32_t)data_ptr;\n            \n            CallFunction(\"__impl_event_event_callback\", {event.type,\n                                                              event.subtype,\n                                                              event.poster,\n                                                              (uint32_t)event.data_int,\n                                                              data_int});\n        });\n    });\n    \n    SetFunction(\"__impl_event_remove_listener\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Event::RemoveListener((listener_t)array[0]);\n        return name_t();\n    });\n    \n    \n    \n    \n    // FRAMEWORK/MESSAGE.H\n    \n    SetFunction(\"__impl_message_register\", {TYPE_STRING}, [](valuearray_t array) -> value_t {\n        assert(array.size());\n        const char* name = array[0];\n        assert(name);\n        char* copy = (char*)malloc(strlen(name) + 1);\n        strcpy(copy, name);\n        \n        return Message::Register(copy);\n    });\n    \n    SetFunction(\"__impl_message_get_type\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        return Message::GetType(array[0]);\n    });\n    \n    SetFunction(\"__impl_message_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return Message::GetName(array[0]);\n    });\n    \n    SetFunction(\"__impl_message_get_last\", {}, [](valuearray_t) -> value_t {\n        return Message::GetLast();\n    });\n    \n    SetFunction(\"__impl_message_send\", {TYPE_UINT32, TYPE_UINT32, TYPE_UINT32, TYPE_UNDEFINED, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        Message message;\n        \n        message.type = array[0];\n        message.sender = array[1];\n        message.receiver = array[2];\n        \n        if (array[3].GetType() == TYPE_UNDEFINED) {\n            message.data = nullptr;\n        } else {\n            message.data_value = Message::AllocateData<Value>(array[3]);\n            \n            if (array[3].GetType() == TYPE_STRING) {\n                *message.data_value = name_t((const char*)array[3]);\n            }\n        }\n        \n        if (array[4].GetType() == TYPE_UNDEFINED || array[4].GetFloat() == 0.0f) {\n            Message::Send(message);\n        } else {\n            Message::Send(message, array[4].GetFloat());\n        }\n        \n        return name_t();\n    });\n    \n    \n    \n    \n    // FRAMEWORK/ENTITY.H\n    \n    SetFunction(\"__impl_entity_find_by_name\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((name_t)array[0]);\n        return entity ? entity->GetID() : 0;\n    });\n    \n    SetFunction(\"__impl_entity_find_by_id\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        return entity ? entity->GetID() : 0;\n    });\n    \n    SetFunction(\"__impl_entity_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        return entity ? entity->GetName() : name_t();\n    });\n    \n    \n    SetFunction(\"__impl_entity_load\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        if (entity) entity->Load();\n        return true;\n    });\n    \n    SetFunction(\"__impl_entity_unload\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        if (entity) entity->Unload();\n        return true;\n    });\n    \n    \n    SetFunction(\"__impl_entity_get_location\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        return entity ? entity->GetLocation() : vec3();\n    });\n    \n    SetFunction(\"__impl_entity_set_location\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        if (entity) entity->SetLocation(array[1]);\n        return name_t();\n    });\n    \n    SetFunction(\"__impl_entity_get_rotation\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        return entity ? entity->GetRotation() : quat(1.0f, 0.0f, 0.0f, 0.0f);\n    });\n    \n    SetFunction(\"__impl_entity_set_rotation\", {TYPE_UINT32, TYPE_QUAT}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[0]);\n        if (entity) entity->SetRotation(array[1]);\n        return name_t();\n    });\n    \n    \n    // ENTITIES/SCRIPT.H\n    \n    SetFunction(\"__impl_entity_add_listener\", {TYPE_UINT16, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Entity* entity = Entity::Find((uint32_t)array[1]);\n        \n        if (!entity) return -1;\n        \n        return Event::AddListener(array[0], entity);\n    });\n    \n    static std::vector<std::pair<Value, Value>> key_values;\n    SetFunction(\"__impl_clear_key_value\", {}, [](valuearray_t array) -> value_t {\n        key_values.clear();\n        return true;\n    });\n    \n    SetFunction(\"__impl_push_key_value\", {TYPE_UNDEFINED, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        key_values.push_back({array[0], array[1]});\n        return true;\n    });\n    \n    static auto pack_key_values = [](SharedEntityData& shared_data, std::vector<Value>& properties) {\n        for (auto& [key, value] : key_values) {\n            if (key.GetType() == TYPE_STRING) {\n                const name_t key_name = (const char*)key;\n                \n                if (key_name == \"id\") {\n                    shared_data.id = value.GetInt();;\n                } else if (key_name == \"name\") {\n                    shared_data.name = (const char*)value;\n                } else if (key_name == \"flags\") {\n                    shared_data.flags = value.GetInt();\n                } else if (key_name == \"location\") {\n                    shared_data.position = value;\n                } else if (key_name == \"rotation\") {\n                    shared_data.rotation = value;\n                } else {\n                    Log(Severity::WARNING, System::CORE, \"__impl_entity_make: key-value array has unknown key value: {}\", key_name);\n                }\n                \n            } else if (key.IsInt()) {\n                assert(key.GetInt() >= 0);\n                assert(key.GetInt() < 100);\n                \n                if (properties.size() <= (size_t)key.GetInt()) {\n                    properties.resize(key.GetInt() + 1);\n                }\n                \n                properties[key.GetInt()] = value;\n            } else {\n                Log(Severity::WARNING, System::CORE, \"__impl_entity_make: key-value array has unknown key type: {}\", key.GetType());\n            }\n        }\n    };\n    \n    \n    SetFunction(\"__impl_entity_make\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        name_t type = array[0];\n        \n        SharedEntityData shared_data;\n        std::vector<Value> properties;\n        \n        pack_key_values(shared_data, properties);\n        \n        ValueArray field_array(properties.data(), properties.size());\n        \n        Entity* new_entity = Entity::Make(type, shared_data, field_array);\n        \n        return new_entity->GetID();\n    });\n    \n    SetFunction(\"__impl_entity_scriptable_make\", {TYPE_NAME, TYPE_NAME}, [](valuearray_t array) -> value_t {\n        name_t base_type = array[0];\n        name_t new_type = array[1];\n        \n        SharedEntityData shared_data;\n        std::vector<Value> properties;\n        \n        pack_key_values(shared_data, properties);\n        \n        ValueArray field_array(properties.data(), properties.size());\n        \n        Entity* new_entity = ScriptableType::Make(base_type, new_type, shared_data, field_array);\n        \n        return new_entity->GetID();\n    });\n    \n    \n    static std::vector<Entity::FieldInfo> field_infos;\n    SetFunction(\"__impl_clear_entity_fields\", {}, [](valuearray_t array) -> value_t {\n        field_infos.clear();\n        return true;\n    });\n    \n    SetFunction(\"__impl_push_entity_fields\", {TYPE_UINT32, TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        field_infos.push_back({array[0], (Type)((uint32_t)array[1]), array[2]});\n        return true;\n    });\n    \n    SetFunction(\"__impl_entity_type_register\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        name_t new_type = array[0];\n        \n        // idk if we need this\n        std::sort(field_infos.begin(), field_infos.end(), [](const Entity::FieldInfo& a, const Entity::FieldInfo& b) { return a.field_id < b.field_id; });\n        \n        Entity::RegisterType(array[0], \n            [](const SharedEntityData& data, const ValueArray& array) -> Entity* {\n                CallFunction(\"__impl_entity_shared_data_callback\", {data.id, data.name, data.flags, data.position, data.rotation});\n                for (size_t i = 0; i < array.size(); i++) {\n                    CallFunction(\"__impl_entity_property_callback\", {(uint32_t)i, array[i]});\n                }\n                uint32_t entity_id = (int32_t)CallFunction(\"__impl_entity_constructor_callback\", {data.type});\n                return Entity::Find(entity_id);\n            },\n            [](Entity* entity) -> void {\n                CallFunction(\"__impl_entity_destructor_callback\", {entity->GetType(), entity->GetID()});\n                ScriptableType::Yeet(entity);\n            },\n            field_infos.data(),\n            field_infos.size()\n        );\n        \n        return true;\n    });\n    \n    // FRAMEWORK/UI.H\n    \n    SetFunction(\"__impl_ui_get_screen_width\", {}, [](valuearray_t) -> value_t {\n        return UI::GetScreenWidth();\n    });\n    \n    SetFunction(\"__impl_ui_get_screen_height\", {}, [](valuearray_t) -> value_t {\n        return UI::GetScreenHeight();\n    });\n    \n    SetFunction(\"__impl_ui_set_window_title\", {TYPE_STRING}, [](valuearray_t array) -> value_t {\n        UI::SetWindowTitle(array[0]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_set_window_size\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        UI::SetWindowSize((uint32_t)array[0], (uint32_t)array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_set_cursor\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        UI::SetCursor((UI::CursorType)((uint32_t)array[0]));\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_bind_keyboard_action\", {TYPE_UINT16, TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        UI::BindKeyboardKey((UI::KeyboardKey)((uint16_t)array[0]), (uint16_t)array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_bind_keyboard_callback\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        UI::BindKeyboardKey((UI::KeyboardKey)((uint16_t)array[0]), [](UI::KeyboardKey key) {\n            CallFunction(\"__impl_ui_keyboard_callback\", {key});\n        });\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_poll_keyboard_key\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return UI::PollKeyboardKey((UI::KeyboardKey)((uint16_t)array[0]));\n    });\n    \n    SetFunction(\"__impl_ui_poll_keyboard_axis\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return UI::PollKeyboardAxis((UI::KeyboardAxis)((uint16_t)array[0]));\n    });\n    \n    SetFunction(\"__impl_ui_poll_keyboard_axis_delta\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return UI::PollKeyboardAxis((UI::KeyboardAxis)((uint16_t)array[0]));\n    });\n    \n    SetFunction(\"__impl_ui_set_input_state\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        UI::SetInputState((UI::InputState)((uint16_t)array[0]));\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_get_input_state\", {}, [](valuearray_t) -> value_t {\n        return UI::GetInputState();\n    });\n    \n    SetFunction(\"__impl_ui_get_axis_sensitivity\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return UI::GetAxisSensitivity((UI::KeyboardAxis)((uint16_t)array[0]));\n    });\n    \n    SetFunction(\"__impl_ui_set_axis_sensitivity\", {TYPE_UINT16, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        UI::SetAxisSensitivity((UI::KeyboardAxis)((uint16_t)array[0]), array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_ui_register_keyboard_action\", {TYPE_STRING}, [](valuearray_t array) -> value_t {\n        return UI::RegisterKeyboardAction(array[0]);\n    });\n    \n    SetFunction(\"__impl_ui_get_keyboard_action\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        return UI::GetKeyboardAction(array[0]);\n    });\n    \n    SetFunction(\"__impl_ui_get_keyboard_action_name\", {TYPE_UINT16}, [](valuearray_t array) -> value_t {\n        return UI::GetKeyboardActionName((uint16_t)array[0]);\n    });\n    \n    \n    \n    \n    // FRAMEWORK/SCRIPT.H\n    \n    SetFunction(\"__impl_worldcell_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        WorldCell* cell = WorldCell::Find((name_t)array[0]);\n        \n        if (cell) {\n            return (uint32_t)PoolProxy<WorldCell>::GetPool().index(cell);\n        } else {\n            return -1;\n        }\n    });\n    \n    SetFunction(\"__impl_worldcell_make\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        WorldCell* cell = WorldCell::Make((name_t)array[0]);\n        \n        if (cell) {\n            return (uint32_t)PoolProxy<WorldCell>::GetPool().index(cell);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_worldcell_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n    \n    SetFunction(\"__impl_worldcell_loadfromdisk\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].LoadFromDisk();\n        return true;\n    });\n    \n    SetFunction(\"__impl_worldcell_load\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].Load();\n        return true;\n    });\n    \n    SetFunction(\"__impl_worldcell_unload\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].Unload();\n        return true;\n    });\n    \n    SetFunction(\"__impl_worldcell_link\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].Link(&PoolProxy<WorldCell>::GetPool()[(uint32_t)array[1]]);\n        return true;\n    });\n    \n    \n    SetFunction(\"__impl_worldcell_is_loaded\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<WorldCell> ::GetPool()[(uint32_t)array[0]].IsLoaded();\n    });\n    SetFunction(\"__impl_worldcell_is_interior\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].IsInterior();\n    });\n    SetFunction(\"__impl_worldcell_has_interior_lighting\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].HasInteriorLighting();\n    });\n    SetFunction(\"__impl_worldcell_has_automatic_loading\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].HasAutomaticLoading();\n    });\n    \n    SetFunction(\"__impl_worldcell_set_interior\", {TYPE_UINT32, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].SetInterior(array[1]);\n        return true;\n    });\n    SetFunction(\"__impl_worldcell_set_interior_lighting\", {TYPE_UINT32, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].SetInteriorLights(array[1]);\n        return true;\n    });\n    SetFunction(\"__impl_worldcell_set_automatic_loading\", {TYPE_UINT32, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<WorldCell>::GetPool()[(uint32_t)array[0]].SetAutomaticLoading(array[1]);\n        return true;\n    });\n   \n    \n    // AUDIO/AUDIO.H\n    SetFunction(\"__impl_audio_set_volume\", {TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        Audio::SetVolume(array[0]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_audio_get_volume\", {}, [](valuearray_t) -> value_t {\n        return Audio::GetVolume();\n    });\n    \n    SetFunction(\"__impl_audio_set_listener_position\", {TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Audio::SetListenerPosition(array[0]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_audio_set_listener_orientation\", {TYPE_QUAT}, [](valuearray_t array) -> value_t {\n        Audio::SetListenerOrientation(array[0]);\n        return true;\n    });\n\n\n    // PHYSICS/PHYSICS.H\n    \n    // TODO: add raycasting\n    \n    \n    \n    \n    // PHYSICS/COLLISIONSHAPE.H\n    static vec3* hull_points = new vec3[100];\n    static Physics::CollisionTriangle* mesh_tris = new Physics::CollisionTriangle[100];\n    static size_t hull_point_count = 0;\n    static size_t mesh_tri_count = 0;\n    static Physics::CollisionShape coll_shape;\n    \n    SetFunction(\"__impl_physics_collision_set_sphere\", {TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        coll_shape = Physics::CollisionShape::Sphere(array[0]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_cylinder\", {TYPE_FLOAT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        coll_shape = Physics::CollisionShape::Cylinder(array[0], array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_capsule\", {TYPE_FLOAT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        coll_shape = Physics::CollisionShape::Cylinder(array[0], array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_cone\", {TYPE_FLOAT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        coll_shape = Physics::CollisionShape::Cylinder(array[0], array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_box\", {TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        coll_shape = Physics::CollisionShape::Box(array[0]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_hull\", {}, [](valuearray_t) -> value_t {\n        coll_shape = Physics::CollisionShape::Hull(hull_points, 0);\n        hull_point_count = 0;\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_set_mesh\", {}, [](valuearray_t) -> value_t {\n        coll_shape = Physics::CollisionShape::Mesh(mesh_tris, 0);\n        mesh_tri_count = 0;\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_append_point\", {TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        hull_points[hull_point_count++] = array[0];\n        coll_shape.hull_size = hull_point_count;\n        return true;\n    });\n    \n    SetFunction(\"__impl_physics_collision_append_triangle\", {TYPE_VEC3, TYPE_VEC3, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        mesh_tris[mesh_tri_count++] = {array[0], array[1], array[2]};\n        coll_shape.mesh_size = mesh_tri_count;\n        return true;\n    });\n    \n    \n    \n    \n    \n    // PHYSICS/COLLISIONMODEL.H\n    SetFunction(\"__impl_physics_collisionmodel_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Model* model = Model::Find(array[0]);\n        \n        if (model) {\n            return (uint32_t)PoolProxy<Model>::GetPool().index(model);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_physics_collisionmodel_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n    \n    \n    \n    \n    // RENDER/RENDER.H\n    SetFunction(\"__impl_render_set_sun_direction\", {TYPE_VEC3, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetSunDirection(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_sun_color\", {TYPE_VEC3, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetSunColor(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_ambient_color\", {TYPE_VEC3, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetAmbientColor(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_fog_distance\", {TYPE_FLOAT32, TYPE_FLOAT32, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[2].GetInt() ? array[2].GetInt() : 0;\n        Render::SetFogDistance(array[0], array[1], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_fog_color\", {TYPE_VEC3, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetFogColor(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_screen_clear_color\", {TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Render::API::SetScreenClear(array[0], true);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_view_fov\", {TYPE_FLOAT32, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetViewFov(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_view_distance\", {TYPE_FLOAT32, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetViewDistance(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_view_position\", {TYPE_VEC3, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetViewPosition(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_set_view_rotation\", {TYPE_QUAT, TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[1].GetInt() ? array[1].GetInt() : 0;\n        Render::SetViewRotation(array[0], layer);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_get_view_position\", {TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[0].GetInt() ? array[0].GetInt() : 0;\n        return Render::GetViewPosition(layer);\n    });\n    \n    SetFunction(\"__impl_render_get_view_rotation\", {TYPE_UNDEFINED}, [](valuearray_t array) -> value_t {\n        layer_t layer = array[0].GetInt() ? array[0].GetInt() : 0;\n        return Render::GetViewRotation(layer);\n    });\n    \n    SetFunction(\"__impl_render_add_line\", {TYPE_VEC3, TYPE_VEC3, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Render::AddLine(array[0], array[1], array[2]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_add_line_marker\", {TYPE_VEC3, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Render::AddLineMarker(array[0], array[1]);\n        return true;\n    });\n\n\n    // RENDER/ANIMATION.H\n    SetFunction(\"__impl_render_animation_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Animation* animation = Animation::Find(array[0]);\n        \n        if (animation) {\n            return (uint32_t)PoolProxy<Animation>::GetPool().index(animation);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_render_animation_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Animation>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n    \n    SetFunction(\"__impl_render_animation_load\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Animation>::GetPool()[(uint32_t)array[0]].Load();\n        return true;\n    });\n\n\n\n\n    // RENDER/MATERIAL.H\n    SetFunction(\"__impl_render_material_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Material* material = Material::Find(array[0]);\n        \n        if (material) {\n            return (uint32_t)PoolProxy<Material>::GetPool().index(material);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_render_material_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Material>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n\n\n\n    // RENDER/MODEL.H\n    SetFunction(\"__impl_render_model_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Model* model = Model::Find(array[0]);\n        \n        if (model) {\n            return (uint32_t)PoolProxy<Model>::GetPool().index(model);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_render_model_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n\n    SetFunction(\"__impl_render_model_add_reference\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Model>::GetPool()[(uint32_t)array[0]].AddReference();\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_model_remove_reference\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Model>::GetPool()[(uint32_t)array[0]].RemoveReference();\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_model_load\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Model>::GetPool()[(uint32_t)array[0]].Load();\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_model_get_aabb_min\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetAABBMin();\n    });\n    \n    SetFunction(\"__impl_render_model_get_aabb_max\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetAABBMax();\n    });\n    \n    SetFunction(\"__impl_render_model_get_near_distance\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetNearDistance();\n    });\n    \n    SetFunction(\"__impl_render_model_get_far_distance\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Model>::GetPool()[(uint32_t)array[0]].GetFarDistance();\n    });\n    \n    SetFunction(\"__impl_render_model_set_near_distance\", {TYPE_UINT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Model>::GetPool()[(uint32_t)array[0]].SetNearDistance(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_render_model_set_far_distance\", {TYPE_UINT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<Model>::GetPool()[(uint32_t)array[0]].SetFarDistance(array[1]);\n        return true;\n    });\n\n\n\n    // RENDER/SPRITE.H\n    SetFunction(\"__impl_render_sprite_find\", {TYPE_NAME}, [](valuearray_t array) -> value_t {\n        Sprite* sprite = Sprite::Find(array[0]);\n        \n        if (sprite) {\n            return (uint32_t)PoolProxy<Sprite>::GetPool().index(sprite);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_render_sprite_get_name\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<Sprite>::GetPool()[(uint32_t)array[0]].GetName();\n    });\n\n    \n\n\n\n\n\n\n\n    // CMOMOAWMDPA WMDP MPAWDM PAW DMAPWD MAWD P\n\n    SetFunction(\"__impl_components_render_make\", {}, [](valuearray_t array) -> value_t {\n        RenderComponent* component = PoolProxy<RenderComponent>::New();\n        \n        if (component) {\n            return (uint32_t)PoolProxy<RenderComponent>::GetPool().index(component);\n        } else {\n            return -1;\n        }\n    });\n\n    SetFunction(\"__impl_components_render_get_model\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Model* model = PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].GetModel();\n        return (uint32_t)PoolProxy<Model>::GetPool().index(model);\n    });\n\n    SetFunction(\"__impl_components_render_set_model\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Model* model = &PoolProxy<Model>::GetPool()[(uint32_t)array[1]];\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetModel(model->GetName());\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_lightmap\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Material* material = &PoolProxy<Material>::GetPool()[(uint32_t)array[1]];\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetLightmap(material->GetName());\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_set_armature\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        AnimationComponent* armature = &PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[1]];\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetArmature(armature);\n        return true;\n    });\n\n    SetFunction(\"__impl_components_render_get_location\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].GetLocation();\n    });\n    \n    SetFunction(\"__impl_components_render_get_rotation\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        return PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].GetRotation();\n    });\n    \n    SetFunction(\"__impl_components_render_set_location\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetLocation(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_rotation\", {TYPE_UINT32, TYPE_QUAT}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetRotation(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_scale\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetScale(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_color\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetColor(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_layer\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetLayer(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_line_drawing_mode\", {TYPE_UINT32, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetLineDrawingMode(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_set_directional_light\", {TYPE_UINT32, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].SetDirectionaLight(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_init\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]].Init();\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_render_delete\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<RenderComponent>::Delete(&PoolProxy<RenderComponent>::GetPool()[(uint32_t)array[0]]);\n        return true;\n    });\n\n\n\n\n\n\n    SetFunction(\"__impl_components_light_make\", {}, [](valuearray_t array) -> value_t {\n        LightComponent* component = PoolProxy<LightComponent>::New();\n        \n        if (component) {\n            return (uint32_t)PoolProxy<LightComponent>::GetPool().index(component);\n        } else {\n            return -1;\n        }\n    });\n    \n    SetFunction(\"__impl_components_light_init\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].Init();\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_light_delete\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::Delete(&PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]]);\n        return true;\n    });\n\n    SetFunction(\"__impl_components_light_set_location\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].SetLocation(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_light_set_color\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].SetColor(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_light_set_distance\", {TYPE_UINT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].SetDistance(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_light_set_direction\", {TYPE_UINT32, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].SetDirection(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_light_set_exponent\", {TYPE_UINT32, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<LightComponent>::GetPool()[(uint32_t)array[0]].SetExponent(array[1]);\n        return true;\n    });\n\n\n\n\n\n\n\n    SetFunction(\"__impl_components_animation_make\", {}, [](valuearray_t array) -> value_t {\n        AnimationComponent* component = AnimationComponent::Make();\n        \n        if (component) {\n            return (uint32_t)PoolProxy<AnimationComponent>::GetPool().index(component);\n        } else {\n            return -1;\n        }\n    });\n    \n    SetFunction(\"__impl_components_animation_init\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].Init();\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_delete\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        AnimationComponent::Yeet(&PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]]);\n        return true;\n    });\n\n\n    SetFunction(\"__impl_components_animation_get_model\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Model* model = PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].GetModel();\n        return (uint32_t)PoolProxy<Model>::GetPool().index(model);\n    });\n\n    SetFunction(\"__impl_components_animation_set_model\", {TYPE_UINT32, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        Model* model = &PoolProxy<Model>::GetPool()[(uint32_t)array[1]];\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetModel(model);\n        return true;\n    });\n\n    SetFunction(\"__impl_components_animation_set_keyframe\", {TYPE_UINT32, TYPE_NAME, TYPE_VEC3, TYPE_QUAT, TYPE_VEC3}, [](valuearray_t array) -> value_t {\n        Keyframe keyframe = {.location = array[2], .rotation = array[3], .scale = array[4]};\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetKeyframe(array[1], keyframe);\n        return true;\n    });\n\n    SetFunction(\"__impl_components_animation_add_finish_callback\", {TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetOnAnimationFinishCallback([](AnimationComponent* comp, name_t anim) {\n            uint32_t id = PoolProxy<AnimationComponent>::GetPool().index(comp);\n            CallFunction(\"__impl_components_animation_finish_callback\", {id, anim});\n        });\n        return true;\n    });\n\n\n    SetFunction(\"__impl_components_animation_play\", {TYPE_UINT32, TYPE_NAME, TYPE_UINT32, TYPE_FLOAT32, TYPE_FLOAT32, TYPE_BOOL, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].Play(array[1], array[2], array[3], array[4], array[5], array[6]);\n        return true;\n    });\n\n    SetFunction(\"__impl_components_animation_is_playing\", {TYPE_UINT32, TYPE_NAME}, [](valuearray_t array) -> value_t {\n        return PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].IsPlaying(array[1]);\n    });\n    \n    SetFunction(\"__impl_components_animation_stop\", {TYPE_UINT32, TYPE_NAME}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].Stop(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_pause\", {TYPE_UINT32, TYPE_NAME}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].Pause(array[1]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_continue\", {TYPE_UINT32, TYPE_NAME}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].Continue(array[1]);\n        return true;\n    });\n    \n    \n    SetFunction(\"__impl_components_animation_set_weight\", {TYPE_UINT32, TYPE_NAME, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetWeight(array[1], array[2]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_set_speed\", {TYPE_UINT32, TYPE_NAME, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetSpeed(array[1], array[2]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_set_repeats\", {TYPE_UINT32, TYPE_NAME, TYPE_UINT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetRepeats(array[1], array[2]);\n        return true;\n    });\n    \n    \n    SetFunction(\"__impl_components_animation_fade_in\", {TYPE_UINT32, TYPE_NAME, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].FadeIn(array[1], array[2]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_fade_out\", {TYPE_UINT32, TYPE_NAME, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].FadeOut(array[1], array[2]);\n        return true;\n    });\n    \n    \n    SetFunction(\"__impl_components_animation_set_pause\", {TYPE_UINT32, TYPE_NAME, TYPE_BOOL}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetPause(array[1], array[2]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_set_fade\", {TYPE_UINT32, TYPE_NAME, TYPE_BOOL, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetFade(array[1], array[2], array[3]);\n        return true;\n    });\n    \n    SetFunction(\"__impl_components_animation_set_frame\", {TYPE_UINT32, TYPE_NAME, TYPE_FLOAT32}, [](valuearray_t array) -> value_t {\n        PoolProxy<AnimationComponent>::GetPool()[(uint32_t)array[0]].SetFrame(array[1], array[2]);\n        return true;\n    });\n    \n\n    LoadScript(\"api\");\n}\n\n}"
  },
  {
    "path": "src/framework/script.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_SCRIPT_H\n#define TRAM_SDK_FRAMEWORK_SCRIPT_H\n\n#include <framework/value.h>\n#include <vector>\n\nnamespace tram::Script {\n\nvoid SetGlobal(name_t name, value_t value);\nvalue_t GetGlobal(name_t name);\nvoid SetFunction(name_t name, std::vector<Type> parameters, value_t (*function)(valuearray_t));\nvalue_t CallFunction(name_t name, std::vector<Value> parameters);\nvalue_t Evaluate(const char* code);\n\nclass Interface {\npublic:\n    virtual name_t GetName() = 0;\n    virtual value_t GetGlobal(name_t name) = 0;\n    virtual void SetGlobal(name_t name, value_t value) = 0;\n    virtual void SetFunction(name_t name, std::vector<Type> parameters, value_t (*function)(valuearray_t)) = 0;\n    virtual value_t CallFunction(name_t name, std::vector<Value> parameters) = 0;\n    \n    virtual void LoadScript(const char* path) = 0;\n    virtual value_t Evaluate(const char* code) = 0;\n};\n\nvoid SetInterface(Interface* language);\nvoid LoadScript(const char* path);\n\nvoid Init();\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_SCRIPT_H"
  },
  {
    "path": "src/framework/serialization.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_SERIALIZATION_H\n#define TRAM_SDK_FRAMEWORK_SERIALIZATION_H\n\n#include <cassert>\n\n#include <framework/uid.h>\n#include <framework/value.h>\n\n#include <framework/math.h>\n\n/**\n * Serialization, i.e. saving application state is not implemented yet.\n * \n * I will probably get around to it sometime.\n */\n\nnamespace tram {\n\n/// Wrapper for serialized field values.\n/*class SerializedFieldArray {\npublic:\n    SerializedFieldArray(const Value* first, size_t count) : first_field(first), field_count(count) {}\n    const Value& operator [](size_t n) const { assert(n < field_count); return first_field[n]; }\nprivate:\n    const Value* first_field;\n    size_t field_count;\n};*/\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_SERIALIZATION_H\n"
  },
  {
    "path": "src/framework/settings.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/settings.h>\n\n#include <framework/logging.h>\n#include <templates/hashmap.h>\n#include <templates/pool.h>\n\n#include <vector>\n\n/**\n * @namespace tram::Settings\n * \n * Application setting management and CLI command parser.\n */\n\nnamespace tram::Settings {\n\nconst int SETTING_LIMIT = 200;\n\nstruct SettingInfo {\n    union {\n        int32_t* int32;\n        uint32_t* uint32;\n        float* float32;\n        bool* bool32;\n    };\n    Type type;\n    \n    const char* name;\n    uint32_t flags;\n};\n\nstatic SettingInfo settings[SETTING_LIMIT];\nstatic size_t last_setting = 0;\n\nstatic Hashmap<SettingInfo*> all_settings(\"settings map\", SETTING_LIMIT);\n\n// okay so if you enter anything into the hashmap before the it's constructed?\n// instant crash. the problem is that the hashmap is touched by properties that\n// are like static? and depending on how the program is linked, they may decide\n// to initialize before the hashmap has been initialized. and then it crashes.\n// but if the parse command is called, that means that the main function has\n// started to run and the hashmap has been totally initialized, so we can start\n// using it. so that's why we have this variable here. it's so that we don't get\n// UB and NO it's NOT the fun kind of UB.\nstatic bool parsed = false;\n\nstatic SettingInfo* lookup_setting(const char* name) {\n    auto setting = parsed ? all_settings.Find(name) : nullptr;\n    \n    if (!setting) {\n        for (size_t i = 0; i < last_setting; i++) {\n            if (strcmp(settings[i].name, name)) continue;\n            \n            setting = &settings[i];\n            \n            all_settings.Insert(name, setting);\n        }\n    }\n    \n    return setting;\n} \n\n// raw settings store the values for settings that have been parsed, but haven't\n// been registered yet\nstruct RawSetting {\n    const char* key;\n    const char* value;\n    bool maybe_flag;\n};\n\nstatic std::vector<RawSetting> raw_settings;\n\nvoid SetFromRaw(SettingInfo& info) {\n    if (!info.bool32) {\n        Log(\"Setting {} has no data pointer!\", info.name);\n        return;\n    }\n    \n    // check if setting has already been parsed\n    for (auto& setting : raw_settings) {\n        if (strcmp(setting.key, info.name) != 0) continue;\n        \n        switch (info.type) {\n            case TYPE_BOOL:\n                if (setting.maybe_flag) {\n                    *info.bool32 = true;\n                } else if (setting.value && strcmp(setting.value, \"false\") == 0) {\n                    *info.bool32 = false;\n                } else {\n                    *info.bool32 = true;\n                }\n                break;\n            case TYPE_FLOAT32:\n                if (!setting.value) {\n                    Log(\"cannot set {} since ther eisno value\", info.name);\n                }\n                *info.float32 = atof(setting.value);\n                break;\n            case TYPE_INT32:\n                if (!setting.value) {\n                    Log(\"cannot set {} since ther eisno value\", info.name);\n                }\n                *info.int32 = atoi(setting.value);\n                break;\n            case TYPE_UINT32:\n                if (!setting.value) {\n                    Log(\"cannot set {} since ther eisno value\", info.name);\n                }\n                *info.uint32 = atoi(setting.value);\n                break;\n            default:\n                Log(\"hello setting invalid\");\n            \n        }\n    } \n        \n    \n}\n\nvoid SetAndStore(SettingInfo info) {\n    if (lookup_setting(info.name)) {\n        Log(\"Setting '{}' already registered, skipping!\", info.name);\n        return;\n    }\n    \n    SetFromRaw(info);\n    settings[last_setting++] = info;\n}\n\nvoid Register(bool& value, const char* name, uint32_t flags) {\n    SetAndStore(SettingInfo{.bool32 = &value, .type = TYPE_BOOL, .name = name, .flags = flags});\n}\n\nvoid Register(float& value, const char* name, uint32_t flags) {\n    SetAndStore(SettingInfo{.float32 = &value, .type = TYPE_FLOAT32, .name = name, .flags = flags});\n}\n\nvoid Register(int32_t& value, const char* name, uint32_t flags) {\n    SetAndStore(SettingInfo{.int32 = &value, .type = TYPE_INT32, .name = name, .flags = flags});\n}\n\nvoid Register(uint32_t& value, const char* name, uint32_t flags) {\n    SetAndStore(SettingInfo{.uint32 = &value, .type = TYPE_UINT32, .name = name, .flags = flags});\n}\n\n\n\nvalue_t Get(name_t name) {\n    auto setting = lookup_setting(name);\n    \n    if (!setting) return value_t();\n    \n    switch (setting->type) {\n        case TYPE_BOOL:\n            return *setting->bool32;\n            break;\n        case TYPE_FLOAT32:\n            return *setting->float32;\n            break;\n        case TYPE_INT32:\n            return *setting->int32;\n            break;\n        case TYPE_UINT32:\n            return *setting->uint32;;\n            break;\n        default:\n            return false;\n        \n    }\n}\n\nvoid Set(name_t name, value_t value) {\n    auto setting = lookup_setting(name);\n    \n    if (setting) {\n        if (value.GetType() != setting->type) {\n            Log(\"Trying to set a setting to {}, but it is a {}\", TypeToString(value.GetType()), TypeToString(setting->type));\n            return;\n        }\n        \n        if (value.IsInt()) {\n            *setting->int32 = value.GetInt();\n        } else if (value.IsFloat()) {\n            *setting->int32 = value.GetFloat();\n        } else if (value.IsBool()) {\n            *setting->bool32 = value;\n        }\n    }\n}\n\n\nvoid Parse(const char** argv, int argc) {\n    Log(\"Parsing settings from CLI\");\n    \n    parsed = true;\n    \n    for (int i = 1; i < argc; i++) {\n        const char* name = argv[i];\n        \n        if (*name != '-') {\n            Log(Severity::WARNING, System::CORE, \"Unrecognized CLI parameter: {}\", name);\n            continue;\n        }\n        \n        name++;\n        \n        const bool is_another_one = i + 1 < argc;\n        const char* another_one = is_another_one ? argv[i + 1] : nullptr;\n\n        RawSetting setting;\n        \n        // check if is a flag\n        if (is_another_one && *another_one == '-') {\n            \n            setting.key = name;\n            setting.value = another_one;\n            \n            setting.maybe_flag = true;\n            \n            raw_settings.push_back(setting);\n            \n            continue;\n        }\n        \n        setting.key = name;\n        setting.value = another_one;\n        \n        setting.maybe_flag = false;\n        \n        raw_settings.push_back(setting);\n        \n        i++;\n    }\n    \n    Log(\"Applying CLI values to settings\");\n    \n    for (size_t i = 0; i < last_setting; i++) SetFromRaw(settings[i]);\n}\n\nuint32_t Flags(name_t name) {\n    auto setting = lookup_setting(name);\n    \n    if (!setting) return 0;\n    \n    return setting->flags;\n}\n\nstd::vector<name_t> GetSettings(uint32_t filter) {\n    std::vector<name_t> filtered;\n    \n    for (size_t i = 0; i < last_setting; i++) {\n        if (settings[i].flags & filter) {\n            filtered.push_back(settings[i].name);\n        }\n    }\n\n    return filtered;\n}\n\nvoid Save(const char* file) {\n    // TODO: implement\n}\n\nvoid Load(const char* file) {\n    // TODO: implement\n}\n\n\n}"
  },
  {
    "path": "src/framework/settings.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_SETTINGS_H\n#define TRAM_SDK_FRAMEWORK_SETTINGS_H\n\n#include <framework/value.h>\n\n#include <initializer_list>\n#include <vector>\n\nnamespace tram::Settings {\n\nenum : uint32_t {\n    USER = 1,         //< Save the setting in user data\n    APPLICATION = 2,  //< Save the setting in application state data\n    MENU = 4,         //< Show the setting in the setting menu\n    \n    // maybe we could add some read-only or write-only flags?\n    \n    NONE = 0\n};\n\nvoid Register(bool& value, const char* name, uint32_t flags);\nvoid Register(float& value, const char* name, uint32_t flags);\nvoid Register(int32_t& value, const char* name, uint32_t flags);\nvoid Register(uint32_t& value, const char* name, uint32_t flags);\n\nvalue_t Get(name_t name);\nvoid Set(name_t name, value_t value);\n\nvoid Parse(const char** argv, int argc);\n\nvoid Save(const char* file);\nvoid Load(const char* file);\n\nuint32_t Flags(name_t name);\n\nstd::vector<name_t> GetSettings(uint32_t filter);\n\ntemplate<typename T>\nstruct Property {\n    Property(std::initializer_list<value_t> values) {\n        value = (T)values.begin()[0];\n        \n        const char* name = values.begin()[1];\n        uint32_t flags = values.begin()[2];\n\n        Register(value, name, flags);\n    }\n    \n    Property(const T& value) {\n        this->value = value;\n    }\n    \n    operator T() {\n        return value;\n    }\n    \n    T value;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_SETTINGS_H\n"
  },
  {
    "path": "src/framework/signal.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <templates/hashmap.h>\n\n#include <framework/signal.h>\n#include <framework/entity.h>\n#include <framework/value.h>\n#include <framework/logging.h>\n\n#include <config.h>\n\n/**\n * @struct tram::Signal framework/signal.h <framework/signal.h>\n * \n * Message template.\n * \n * Table of Message templates that can be sent off by entities on certain triggers. \n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/signal.html\n */\n\n/**\n * @class tram::SignalTable framework/signal.h <framework/signal.h>\n * \n * List of Message templates.\n * \n * Table of Message templates, i.e. Signal structs, that can be sent off by\n * entities on certain triggers.\n */\n\nnamespace tram {\n\nstatic Hashmap<signal_t> name_t_to_signal_t(\"name_t_to_signal_t\", SIGNAL_TYPE_LIMIT);\n\nstatic const char* signal_names[SIGNAL_TYPE_LIMIT] = {\n    \"none\",\n    \"spawn\",\n    \"kill\",\n    \"activate\",\n    \"use\",\n    \"locked-use\",\n    \"open\",\n    \"close\",\n    \"end-open\",\n    \"end-close\",\n    \"trigger\",\n    \"enter-trigger\",\n    \"exit-trigger\",\n    \"progress\"\n};\n\nstatic signal_t last_type = Signal::LAST_SIGNAL;\n\n/// Registers a new message type.\n/// @return Unique message type number.\nsignal_t Signal::Register(const char* name) {\n    if (UID::is_empty(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Signal name '{}' is empty\", name);\n    }\n    \n    if (!UID::no_quote(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Signal name '{}' contains invalid characters\", name);\n    }\n    \n    for (event_t i = 0; i < last_type; i++) {\n        if (strcmp(signal_names[i], name) != 0) continue;\n        \n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Signal name '{}' already in use\", name);\n    }\n    \n    if (last_type >= SIGNAL_TYPE_LIMIT) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Signal count limit exceeded when registering '{}'\", name);\n    }\n    \n    signal_names[last_type] = name;\n    return last_type++;\n}\n\n/// Finds a message type from a name.\nsignal_t Signal::GetType(name_t name) {\n    signal_t type = name_t_to_signal_t.Find(name);\n    \n    if (!type && name) {\n        for (signal_t i = 0; i < last_type; i++) {\n            if (signal_names[i] == name) {\n                name_t_to_signal_t.Insert(name, i);\n                return i;\n            }\n        }\n    }\n    \n    return type;\n}\n\n/// Gets a nessage type name.\nname_t Signal::GetName(signal_t type) {\n    if (type >= SIGNAL_TYPE_LIMIT) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Attempting index {} invalid signal\", type);\n    }\n    \n    return signal_names[type];\n}\n\n\nvoid SignalTable::Fire(signal_t signal, id_t sender) {\n    for (size_t i = 0; i < signal_count; i++) {\n        if (signals[i].type != signal || signals[i].limit == 0) continue;\n        \n        Message msg;\n        \n        msg.type = signals[i].message_type;\n        msg.receiver = Entity::Find(signals[i].receiver)->GetID(); // this might crasherinoo\n        // TODO: make Entity::Find not crash; erore message /// ahhh who cares\n        msg.data = signals[i].data;\n        msg.sender = sender;\n        \n        if (signals[i].data) {\n            *msg.data_value = *(Value*)signals[i].data;\n        } else {\n            msg.data_value = nullptr;\n        }\n        \n        if (signals[i].delay != 0.0f) {\n            Message::Send(msg, signals[i].delay);\n        } else {\n            Message::Send(msg);\n        }\n    \n        if (signals[i].limit != -1) signals[i].limit--;\n    }\n}\n\nvoid SignalTable::Fire(signal_t signal, id_t sender, Value value) {\n    for (size_t i = 0; i < signal_count; i++) {\n        if (signals[i].type != signal || signals[i].limit == 0) continue;\n        \n        Message msg;\n        \n        msg.type = signals[i].message_type;\n        msg.receiver = Entity::Find(signals[i].receiver)->GetID();\n        msg.data = signals[i].data;\n        msg.sender = sender;\n        msg.data_value = (Value*)Message::AllocateData(sizeof(Value));\n        \n        // send override if set, otherwise pass on provided data\n        if (signals[i].data) {\n            *msg.data_value = *(Value*)signals[i].data;\n        } else {\n            *msg.data_value = value;\n        }\n        \n        \n        if (signals[i].delay != 0.0f) {\n            Message::Send(msg, signals[i].delay);\n        } else {\n            Message::Send(msg);\n        }\n    \n        if (signals[i].limit != -1) signals[i].limit--;\n    }\n}\n\nvoid SignalTable::Add(const Signal& signal) {\n    //assert(signal_count < 10);\n    if (signal_count >= 10) return; // TODO: add errore message\n    signals[signal_count++] = signal;\n}\n\n}"
  },
  {
    "path": "src/framework/signal.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_SIGNAL_H\n#define TRAM_SDK_FRAMEWORK_SIGNAL_H\n\n#include <framework/message.h>\n#include <framework/event.h>\n#include <framework/uid.h>\n\nnamespace tram {\n\ntypedef uint32_t signal_t;\n\nstruct Value;\n\nstruct Signal {\n    enum Type : signal_t {\n        NONE,\n        SPAWN,\n        KILL,\n        ACTIVATE,\n        USE,\n        LOCKED_USE,\n        OPEN,\n        CLOSE,\n        END_OPEN,\n        END_CLOSE,\n        TRIGGER,\n        ENTER_TRIGGER,\n        EXIT_TRIGGER,\n        PROGRESS,\n        LAST_SIGNAL\n    };\n    \n    signal_t type = NONE;\n    \n    name_t receiver;\n    void* data;\n    \n    float delay;\n    int limit;\n    \n    message_t message_type;\n    \n    static signal_t Register(const char* name);\n    static signal_t GetType(name_t name);\n    static name_t GetName(signal_t type);\n};\n\nclass SignalTable {\npublic:\n    void Fire(signal_t signal, id_t sender);\n    void Fire(signal_t signal, id_t sender, Value value);\n    void Add(const Signal& signal);\npublic:\n    Signal signals[10];\n    size_t signal_count = 0;\n};\n    \n}\n\n#endif // TRAM_SDK_FRAMEWORK_SIGNAL_H"
  },
  {
    "path": "src/framework/stats.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/stats.h>\n#include <framework/core.h>\n#include <framework/logging.h>\n\n#include <platform/api.h>\n\n#include <vector>\n#include <cassert>\n\n/**\n * @namespace tram::Stats\n * \n * Resource usage statistics.\n * \n * Keeps track of resource usage, time spent by different systems, as well as\n * various other counters.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/stats.html\n */\n\nnamespace tram::Stats {\n\nstruct SystemStat {\n    double time_started = -1.0f;        //< time when system was started, -1.0f if hasn't started\n    double time_spent = 0.0f;           //< total time spent since last collation\n    double time_spent_collated = 0.0f;  //< total time spent during previous period\n    double time_spent_total = 0.0f;     //< total time spend during all periods\n    double time_spent_average = 0.0f;\n    double time_spent_average_collated = 0.0f;\n    int average_count = 0;\n};\n\nstatic std::vector<SystemStat> all_stats(100);\nstatic std::vector<size_t> all_resources(100);\n\nstatic uint32_t last_collate_frame = -1;\nstatic uint32_t last_collate_time = -1;\n\n/// Starts counting time spent on a system.\nvoid Start(System::system_t system) {\n    if (!system || system >= System::GetSystemCount()) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Invalid system_t: {}\", system);\n    }\n    \n    if (all_stats.size() <= system) {\n        all_stats.resize(system + 1);\n    }\n    \n    if (all_stats[system].time_started != -1.0f) {\n        Log(Severity::WARNING, System::CORE, \"System {} has already been started\", System::GetName(system));\n        return;\n    }\n    \n    all_stats[system].time_started = Platform::Window::GetTime();\n}\n\n/// Stops counting time spent on a system.\nvoid Stop(System::system_t system) {\n    if (system >= all_stats.size()) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System with system_t {} does not exist\", system);\n    }\n    \n    if (all_stats[system].time_started == -1.0f) {\n        Log(Severity::WARNING, System::CORE, \"System {} statistics was not started\", System::GetName(system));\n        return;\n    }\n\n    all_stats[system].time_spent += Platform::Window::GetTime() - all_stats[system].time_started;\n    all_stats[system].time_started = -1.0f;\n}\n\n/// Adds an ammount of a resource.\nvoid Add(Resource resource, size_t ammount) {\n    if (resource >= all_resources.size()) {\n        Log(Severity::WARNING, System::CORE, \"Resource {} does not exist\", resource);\n        return;\n    }\n\n    all_resources[resource] += ammount;\n}\n\n/// Removes an ammount of a resource.\nvoid Remove(Resource resource, size_t ammount) {\n    if (resource >= all_resources.size()) {\n        Log(Severity::WARNING, System::CORE, \"Resource {} does not exist\", resource);\n        return;\n    }\n    \n    all_resources[resource] -= ammount;\n}\n\n/// Collates all of the time statistics.\nvoid Collate() {\n    if (last_collate_frame == GetFrame()) {\n        Log(Severity::WARNING, System::CORE, \"Don't call Collate() twice in an update cycle\");\n        return;\n    }\n\n    if (last_collate_time != (uint32_t)Platform::Window::GetTime()) {\n        last_collate_time = Platform::Window::GetTime();\n        \n        for (auto& stat : all_stats) {\n            stat.time_spent_average_collated = stat.time_spent_average / (double)stat.average_count;\n            stat.time_spent_average = 0.0f;\n            stat.average_count = 0;\n        }\n    }\n    \n    last_collate_frame = GetFrame();\n    \n    for (auto& stat : all_stats) {\n        assert(stat.time_started == -1.0f);\n        \n        stat.time_spent_total += stat.time_spent_collated;\n        stat.time_spent_collated = stat.time_spent;\n        \n        stat.time_spent = 0.0f;\n        \n        stat.time_spent_average += stat.time_spent_collated;\n        stat.average_count++;\n    }\n}\n\n/// Returns the uncollated ammount of a resource.\nsize_t GetStat(Resource resource) {\n    if (resource >= all_resources.size()) {\n        Log(Severity::WARNING, System::CORE, \"Resource {} does not exist\", resource);\n        return 0;\n    }\n    \n    return all_resources[resource];\n}\n\n/// Returns the collated time of a system.\ndouble GetStat(System::system_t system) {\n   if (system >= all_stats.size()) {\n        Log(Severity::WARNING, System::CORE, \"System with system_t {} does not exist\", system);\n        return 0.0f;\n    }\n    \n    return all_stats[system].time_spent_collated;\n}\n\n/// Returns the uncollated time of a system.\ndouble GetStatUncollated(System::system_t system) {\n    if (system >= all_stats.size()) {\n        Log(Severity::WARNING, System::CORE, \"System with system_t {} does not exist\", system);\n        return 0.0f;\n    }\n    \n    return all_stats[system].time_spent;\n}\n\n/// Returns the ammount of resource, averaged over the last second.\ndouble GetStatAverage(System::system_t system) {\n    if (system >= all_stats.size()) {\n        Log(Severity::WARNING, System::CORE, \"System with system_t {} does not exist\", system);\n        return 0.0f;\n    }\n    \n    return all_stats[system].time_spent_average_collated;\n}\n\n}"
  },
  {
    "path": "src/framework/stats.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_STATS_H\n#define TRAM_SDK_FRAMEWORK_STATS_H\n\n#include <framework/system.h>\n\n#include <cstddef>\n\nnamespace tram::Stats {\n    \nenum Resource : uint32_t {\n    RESOURCE_VRAM,\n    RESOURCE_DRAWCALL\n};\n\nvoid Start(System::system_t system);\nvoid Stop(System::system_t system);\n\nvoid Add(Resource resource, size_t ammount);\nvoid Remove(Resource resource, size_t ammount);\n\nvoid Collate();\n\nsize_t GetStat(Resource resource);\ndouble GetStat(System::system_t system);\ndouble GetStatAverage(System::system_t system);\ndouble GetStatUncollated(System::system_t system);\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_STATS_H"
  },
  {
    "path": "src/framework/system.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/system.h>\n\n#include <framework/logging.h>\n#include <config.h>\n\n#include <cassert>\n#include <cstring>\n\n/**\n * @namespace tram::System\n * \n * System tracking.\n * \n * This system keeps track of other systems, their initialization status, as\n * well as their names.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/system.html\n */\n\n/**\n * @typedef uint32_t system_t\n * System type index.\n * Can be set to any of the values in System::System, or you can use\n * System::Register() to allocate new system types.\n */\n\nnamespace tram::System {\n\nstruct SystemInfo {\n    char const* name;\n    char const* short_name;\n    SystemState state;\n};\n\nstatic SystemInfo system_infos[SYSTEM_LIMIT] = {\n    {\"Invalid\",                     \"INV\",      YEET},\n    {\"Core\",                        \"CORE\",     YEET},\n    {\"Platform\",                    \"PLATFORM\", YEET},\n    {\"User Interface\",              \"UI\",       YEET},\n    {\"Graphical User Interface\",    \"GUI\",      YEET},\n    {\"Async\",                       \"ASYNC\",    YEET},\n    {\"Rendering\",                   \"RENDER\",   YEET},\n    {\"Physics\",                     \"PHYSICS\",  YEET},\n    {\"Audio\",                       \"AUDIO\",    YEET},\n    {\"Misc\",                        \"MISC\",     YEET},\n};\n\nstatic uint32_t last_system = SYSTEM_LAST; \n\n/// Registers a new system.\n/// @param name Full name of the system.\n/// @param short_name Name of the system that will be displayed in log messages.\nuint32_t Register(char const* name, char const* short_name) {\n    if (UID::is_empty(name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System name '{}' is empty\", name);\n    }\n    \n    if (UID::is_empty(short_name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System short name '{}' is empty\", short_name);\n    }\n    \n    if (!UID::no_quote(short_name)) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System short name '{}' contains invalid characters\", short_name);\n    }\n    \n    for (system_t i = 0; i < last_system; i++) {\n        if (strcmp(system_infos[i].name, name) != 0) continue;\n\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System name '{}' already in use\", name);\n    }\n    \n    for (system_t i = 0; i < last_system; i++) {\n        if (strcmp(system_infos[i].short_name, short_name) != 0) continue;\n\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System name '{}' already in use\", short_name);\n    }\n    \n    if (last_system >= SYSTEM_LIMIT) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"System {} could not be registered, SYSTEM_LIMIT exceeded!\", name);\n        return System::INVALID;\n    }\n\n    system_infos[last_system] = SystemInfo {\n        .name = name,\n        .short_name = short_name,\n        .state = YEET\n    };\n    \n    return last_system++;\n}\n\n/// Registers a registered system.\n/// If the system was registered with the Register() function, its system_t\n/// identificator will be returned. If a system with the name was not\n/// registered, this function will return a SYSTEM_INVALID identificator.\nsystem_t Find(char const* name) {\n    for (system_t system = 0; system < last_system; system++) {\n        if (strcmp(system_infos[system].name, name) == 0) {\n            return system;\n        }\n    }\n    \n    return System::INVALID;\n}\n\n/// Retrieves the full name of a system.\nchar const* GetName(uint32_t system) {\n    if (system >= last_system) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Accessing invalid system_t {}\", system);\n    }\n    return system_infos[system].name;\n}\n\n/// Retrieves the short name of a system.\nchar const* GetShortName(uint32_t system) {\n    if (system >= last_system) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Accessing invalid system_t {}\", system);\n    }\n    return system_infos[system].short_name;\n}\n\n/// Sets the initialization status of a system.\nvoid SetInitialized(uint32_t system, bool is_initialized) {\n    if (system == System::INVALID || system >= last_system) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Accessing invalid system_t {}\", system);\n    }\n    system_infos[system].state = READY;\n}\n\n/// Checks if a system is initialized.\nbool IsInitialized(uint32_t system) {\n    if (system >= last_system) {\n        return false;\n    }\n    \n    return system_infos[system].state == READY;\n}\n\n/// Sets the state of a system.\n/// - `YEET` when a system is uninitialized.\n/// - `INIT` when a system is initializing.\n/// - `READY` when a system is initialized.\nvoid SetState(system_t system, SystemState state) {\n    if (system == System::INVALID || system >= last_system) {\n        Log(Severity::ERROR, System::CORE, \"Attempting to set the state of an invalid system_t '{}'\", system);\n        return;\n    }\n    \n    system_infos[system].state = state;\n}\n\nvoid AssertDependency(system_t system) {\n    if (system == System::INVALID || system >= last_system) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Attempting assert dependency on invalid system_t '{}'\", system);\n        return;\n    }\n    \n    // check if system is fully initialized\n    if (system_infos[system].state == READY) return;\n    \n    // otherwise check which system is peforming initialization\n    int systems_loading = 0;\n    system_t system_loading = System::INVALID;\n    for (system_t i = 0; i < last_system; i++) {\n        if (system_infos[i].state == INIT) systems_loading++, system_loading = i;\n    }\n    \n    // print out an error message\n    if (!systems_loading) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Dependency on system {} assertion failed\", GetName(system));\n    } else if (systems_loading == 1) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Dependency on system {} assertion failed while loading\", GetName(system), GetName(system_loading));\n    } else {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Dependency on system {} assertion failed while loading multiple systems\", GetName(system));\n    }\n    \n    // and proceed to crash\n    abort();\n}\n\n/// Returns the total count of registered systems.\nsystem_t GetSystemCount() {\n    return last_system;\n}\n\n}\n"
  },
  {
    "path": "src/framework/system.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_SYSTEM_H\n#define TRAM_SDK_FRAMEWORK_SYSTEM_H\n\n#include <cstdint>\n\nnamespace tram::System {\n\ntypedef uint32_t system_t;\n\nenum System : system_t {\n    INVALID,\n    CORE,\n    PLATFORM,\n    UI,\n    GUI,\n    ASYNC,\n    RENDER,\n    PHYSICS,\n    AUDIO,\n    MISC,\n    SYSTEM_LAST\n};\n\nenum SystemState {\n    YEET,\n    INIT,\n    READY\n};\n\nsystem_t Register(char const* name, char const* short_name);\nsystem_t Find(char const* name);\n\nvoid SetInitialized(system_t system, bool is_initialized);\nbool IsInitialized(system_t system);\n\nvoid SetState(system_t system, SystemState state); \nvoid AssertDependency(system_t system);\n\nchar const* GetName(system_t system);\nchar const* GetShortName(system_t system);\nuint32_t GetSystemCount();\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_SYSTEM_H"
  },
  {
    "path": "src/framework/transition.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/transition.h>\n\n#include <framework/worldcell.h>\n#include <framework/logging.h>\n#include <render/render.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <algorithm>\n\n/**\n * @class tram::Transition framework/transition.h <framework/transition.h>\n * \n * Connects WorldCells together.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/transition.html\n */\n\nnamespace tram {\n\ntemplate <> Pool<Transition> PoolProxy<Transition>::pool(\"worldcelltransition pool\", WORLDCELL_TRANSITION_LIMIT);\nstatic Hashmap<Transition*> transition_list(\"transition list\", WORLDCELL_TRANSITION_LIMIT);\n\n/// Finds a transition with the given name.\n/// Pointer to the transition or a nullptr if wasn't found.\nTransition* Transition::Find(name_t name) {\n    return transition_list.Find(name);\n}\n\n/// Creates a new transition.\n/// @param name         Name of the transition. Can be set to \"none\" if the\n///                     transition doesn't need a name.\n/// @param cell_into    Pointer to the WorldCell into which the transition\n///                     will be leading into.\nTransition* Transition::Make(name_t name, WorldCell* cell_into) {\n    Transition* transition = PoolProxy<Transition>::New(name, cell_into);\n    \n    if (name) {\n        if (transition_list.Find(name)) {\n            Log(Severity::WARNING, System::CORE, \"Transition named {} already exists!\", name);\n        }\n        \n        transition_list.Insert(name, transition);\n    }\n    \n    return transition;\n}\n\nTransition::Transition(name_t name, WorldCell* cell_into) {\n    this->cell_into = cell_into;\n    this->name = name;\n    \n    if (!cell_into) {\n        Log(Severity::ERROR, System::CORE, \"Transition '{}' not leading to anywhere\", name);\n    }\n}\n\n/// Adds a point to the transition volume.\n/// @note After adding points make sure to call Transition::GeneratePlanes().\nvoid Transition::AddPoint(vec3 point) {\n    points.push_back(point);\n}\n\n/// Checks whether a point is inside the transition volume.\nbool Transition::IsInside(vec3 point) {\n    for(size_t i = 0; i < planes.size(); i++)\n        if(glm::dot(planes[i], vec4(point, 1.0f)) < 0.0f) return false;    \n    return true;\n}\n\n/// Finalizes the transition after adding points to it.\n/// @param disp Draws the transition planes for a single frame if set to true.\nvoid Transition::GeneratePlanes(bool disp) {\n    assert(points.size() > 3);\n    \n    planes.clear();\n    \n    // this hull generation algorithm works in O(n^3), but there exist algorithms\n    // that can do the same thing in linear time\n    \n    // also the code is really bad, but don't touch it!! it works!\n    \n    // if we replace this with a faster algorithm, we can tidy this up\n    \n    for (size_t i = 0; i < points.size(); i++) {\n        for (size_t j = i+1; j < points.size(); j++) {\n            for (size_t k = j+1; k < points.size(); k++) {\n                auto& A = points[i];\n                auto& B = points[j];\n                auto& C = points[k];\n                auto AB = B - A;\n                auto AC = C - A;\n                auto cross = glm::cross(AB, AC);\n                auto d = -(cross.x*A.x + cross.y*A.y + cross.z*A.z);\n                \n                vec4 plane = vec4(cross, d);\n                \n                for (size_t it = 0; it < points.size(); it++) {\n                    if(i == it || j == it || k == it) continue;\n                    if(glm::dot(plane, vec4(points[it], 1.0f)) < 0.0f) {\n                        plane *= -1.0f;\n                        goto tryagain;\n                    }\n                }\n                \n                okay:\n                \n                if (disp) {\n                    Render::AddLine(A, B, Render::COLOR_WHITE);\n                    Render::AddLine(A, C, Render::COLOR_WHITE);\n                    Render::AddLine(B, C, Render::COLOR_WHITE);\n                    \n                    Render::AddLine(A, A+(glm::normalize(cross)*0.5f)+vec3(0.002f), Render::COLOR_CYAN);\n                    Render::AddLine(B, B+(glm::normalize(cross)*0.1f)+vec3(0.002f), Render::COLOR_CYAN);\n                    Render::AddLine(C, C+(glm::normalize(cross)*0.1f)+vec3(0.002f), Render::COLOR_CYAN);\n                }\n                \n                planes.push_back(plane);\n                \n                yeet:\n                continue;\n                \n                tryagain:\n                \n                for (size_t it = 0; it < points.size(); it++) {\n                    if(i == it || j == it || k == it) continue;\n                    if(glm::dot(plane, vec4(points[it], 1.0f)) < 0.0f) {\n                        goto yeet;\n                    }\n                }\n                \n                goto okay;\n            }\n        }\n    }\n    \n    std::sort(planes.begin(), planes.end(), [](const vec4& a, const vec4& b){ \n        if (a.x != b.x) return a.x < b.x;\n        if (a.y != b.y) return a.y < b.y;\n        if (a.z != b.z) return a.z < b.z;\n        return a.w < b.w;});\n    planes.erase(unique( planes.begin(), planes.end() ), planes.end());\n}\n\n}"
  },
  {
    "path": "src/framework/transition.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_TRANSITION_H\n#define TRAM_SDK_FRAMEWORK_TRANSITION_H\n\n#include <vector>\n\n#include <framework/uid.h>\n#include <framework/math.h>\n\nnamespace tram {\n\nclass WorldCell;\n\nclass Transition {\npublic:\n    Transition(name_t name, WorldCell* cell_into);\n    ~Transition() = delete;\n    void AddPoint (vec3 point);\n    void GeneratePlanes (bool disp = false);\n    bool IsInside (vec3 point);\n    WorldCell* GetCell() { return cell_into; }\n    static Transition* Find(name_t name);\n    static Transition* Make(name_t name, WorldCell* cell_into);\nprotected:\n    name_t name;\n    WorldCell* cell_into;\n    std::vector<vec3> points;\n    std::vector<vec4> planes;\n    friend class WorldCell;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_TRANSITION_H"
  },
  {
    "path": "src/framework/type.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/type.h>\n\nnamespace tram {\n\n/// Converts type enum to string.\nconst char* TypeToString(Type type) {\n    switch (type) {\n        case TYPE_UNDEFINED:    return \"undefined\";\n        case TYPE_BOOL:         return \"bool\";\n        case TYPE_NAME:         return \"name\";\n        case TYPE_STRING:       return \"string\";\n        case TYPE_INT8:         return \"int8\";\n        case TYPE_INT16:        return \"int16\";\n        case TYPE_INT32:        return \"int32\";\n        case TYPE_UINT8:        return \"uint8\";\n        case TYPE_UINT16:       return \"uint16\";\n        case TYPE_UINT32:       return \"uint32\";\n        case TYPE_FLOAT32:      return \"float32\";\n        case TYPE_VEC2:         return \"vec2\";\n        case TYPE_VEC3:         return \"vec3\";\n        case TYPE_VEC4:         return \"vec4\";\n        case TYPE_QUAT:         return \"quat\";\n        default:                return \"invalid\";\n    }\n}\n\n\n}"
  },
  {
    "path": "src/framework/type.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_TYPES_H\n#define TRAM_SDK_FRAMEWORK_TYPES_H\n\n#include <cstdint>\n\nnamespace tram {\n    \n/// Type enumeration for serialization, etc.\n\nenum Type : uint32_t {\n    TYPE_UNDEFINED, //< When you don't know what the type is.\n    TYPE_BOOL,      //< Bool. Defaults to C++ bool type.\n    TYPE_NAME,      //< Our own name_t hashtable string.\n    TYPE_STRING,    //< Generic string. Defaults to a char array.\n    TYPE_INT8,      //< Signed 8 bit long integer.\n    TYPE_INT16,     //< Signed 16 bit long integer.\n    TYPE_INT32,     //< Signed 32 bit long integer.\n    TYPE_UINT8,     //< Unsigned 8 bit long integer.\n    TYPE_UINT16,    //< Unsigned 16 bit long integer.\n    TYPE_UINT32,    //< Unsigned 32 bit long integer.\n    TYPE_FLOAT32,   //< Normal precision floating-point.\n    TYPE_VEC2,      //< Normal precision floating-point 2 element vector.\n    TYPE_VEC3,      //< Normal precision floating-point 3 element vector.\n    TYPE_VEC4,      //< Normal precision floating-point 4 element vector.\n    TYPE_QUAT,      //< Normal precision floating-point quaternion.\n};\n\nconst char* TypeToString(Type type);\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_TYPES_H"
  },
  {
    "path": "src/framework/ui.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/platform.h>\n#include <platform/image.h>\n#include <platform/api.h>\n\n#include <framework/core.h>\n#include <framework/event.h>\n#include <framework/ui.h>\n#include <framework/system.h>\n#include <framework/logging.h>\n\n#include <render/render.h>\n#include <render/api.h>\n\n#include <config.h>\n\n#include <fstream>\n#include <cstring>\n#include <algorithm>\n#include <ctime>\n\n#include <templates/hashmap.h>\n\n#ifdef __EMSCRIPTEN__\n    #include <emscripten.h>\n    #include <emscripten/html5.h>\n#endif\n\n/**\n * @namespace tram::UI\n * \n * User interface system.\n * \n * Handles opening the window, taking in keyboard and mouse inputs.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/ui.html\n */\n\nusing namespace tram::Render;\n\nnamespace tram::UI {\n\nstatic InputState input_state = STATE_DEFAULT;\n\nstatic float screen_width = 800.0f;\nstatic float screen_height = 600.0f;\n\nstatic float camera_pitch = 0.0f;\nstatic float camera_yaw = -90.0f;\n\nstatic bool exit = false;\n\nstatic bool keyboard_keys_values[KEY_LASTKEY] = {false};\nstatic float keyboard_axis_values[KEY_LASTAXIS] = {0.0f};\nstatic float keyboard_axis_deltas[KEY_LASTAXIS] = {0.0f};\nstatic float keyboard_axis_sensitivity[KEY_LASTAXIS] = {1.0f, 1.0f, 1.0f};\n\nstruct KeyBinding {\n    keyboardaction_t action = KEY_ACTION_NONE;\n    void (*special_option)(void) = nullptr;\n    void (*special_option2)(KeyboardKey) = nullptr;\n};\n\nstatic std::unordered_map<KeyboardKey, KeyBinding> key_action_bindings = {\n    {KEY_W, KeyBinding {.action = KEY_ACTION_FORWARD}},\n    {KEY_S, KeyBinding {.action = KEY_ACTION_BACKWARD}},\n    {KEY_A, KeyBinding {.action = KEY_ACTION_STRAFE_LEFT}},\n    {KEY_D, KeyBinding {.action = KEY_ACTION_STRAFE_RIGHT}},\n    {KEY_SPACE, KeyBinding {.action = KEY_ACTION_JUMP}},\n    {KEY_LEFT_CONTROL, KeyBinding {.action = KEY_ACTION_CROUCH}},\n    {KEY_LEFT_SHIFT, KeyBinding {.action = KEY_ACTION_SPRINT}},\n    {KEY_LEFT_ALT, KeyBinding {.action = KEY_ACTION_FLY}},\n    {KEY_E, KeyBinding {.action = KEY_ACTION_ACTIVATE}},\n    {KEY_LEFTMOUSE, KeyBinding {.action = KEY_ACTION_PRIMARY}},\n    {KEY_RIGHTMOUSE, KeyBinding {.action = KEY_ACTION_SECONDARY}},\n    \n    {KEY_UP, KeyBinding {.action = KEY_ACTION_UP}},\n    {KEY_DOWN, KeyBinding {.action = KEY_ACTION_DOWN}},\n    {KEY_LEFT, KeyBinding {.action = KEY_ACTION_LEFT}},\n    {KEY_RIGHT, KeyBinding {.action = KEY_ACTION_RIGHT}},\n\n    {KEY_F1, KeyBinding {.special_option = [](){ exit = true; }}},\n    {KEY_F9, KeyBinding {.special_option = [](){ input_state = (input_state == STATE_FLYING) ? STATE_DEFAULT : STATE_FLYING; }}},\n    {KEY_F12, KeyBinding {.special_option = [](){\n        char* buffer = (char*)malloc(screen_width * screen_height * 3);\n\n        std::time_t epoch_time;\n        std::time(&epoch_time);\n        std::tm date_time = *std::localtime(&epoch_time);\n        \n        char time_str[100];\n        std::strftime(time_str, 100, \"--%Y-%b-%d--%H-%M-%S\", &date_time);\n        \n        char file_name[200];\n        strcpy(file_name, \"screenshot\");\n        strcat(file_name, time_str);\n        strcat(file_name, \".png\");\n        \n        Render::API::GetScreen(buffer, screen_width, screen_height);\n        Platform::SaveImageToDisk(file_name, screen_width, screen_height, buffer);\n        \n        free(buffer);\n    }}},\n};\n\nvoid BindKeyboardKey(KeyboardKey key, keyboardaction_t action) {\n    key_action_bindings[key] = {.action = action};\n}\n\nvoid BindKeyboardKey(KeyboardKey key, void (*action)()) {\n    key_action_bindings[key] = {.special_option = action};\n}\n\nvoid BindKeyboardKey(KeyboardKey key, void (*action)(KeyboardKey)) {\n    key_action_bindings[key] = {.special_option2 = action};\n}\n\nstatic bool GenerateEvent() {\n    switch (input_state) {\n        case STATE_DEFAULT:\n        case STATE_CURSOR:\n            return true;\n        case STATE_NO_INPUT:\n        case STATE_FLYING:\n        case STATE_MENU_OPEN:\n            return false;  \n        default:\n            return false;\n    }\n}\n\nstatic void key_press_callback(KeyboardKey key) {\n    const auto& binding = key_action_bindings[key];\n\n    if (binding.action && GenerateEvent()) {            \n        Event::Post({Event::KEYDOWN, binding.action, 0, nullptr});\n    } else if (binding.special_option) {\n        binding.special_option();\n    } else if (binding.special_option2) {\n        binding.special_option2(key);\n    }\n    \n    keyboard_keys_values[key] = true;\n}\n\nstatic void key_release_callback(KeyboardKey key) {\n    const auto& binding = key_action_bindings[key];\n    \n    if (binding.action && input_state == STATE_DEFAULT) {            \n        Event::Post({Event::KEYUP, binding.action, 0, nullptr});\n    }\n    \n    keyboard_keys_values[key] = false;\n}\n\nstatic void key_code_callback(uint16_t code) {\n    Event::Post({Event::KEYCHAR, code, 0, nullptr});\n}\n\nstatic void key_mouse_callback(float xpos, float ypos) {\n    static float last_xpos = xpos;\n    static float last_ypos = ypos;\n    keyboard_axis_deltas[KEY_MOUSE_X] = xpos - last_xpos;\n    keyboard_axis_deltas[KEY_MOUSE_Y] = ypos - last_ypos;\n    keyboard_axis_values[KEY_MOUSE_X] = xpos;\n    keyboard_axis_values[KEY_MOUSE_Y] = ypos;\n    last_xpos = xpos;\n    last_ypos = ypos;\n\n    if (input_state == STATE_DEFAULT) {\n        Event::Post({Event::CURSORPOS, 0xFFFF, 0, nullptr});\n    }\n}\n\nstatic void key_scroll_callback(float value) {\n    keyboard_axis_values[KEY_MOUSE_SCROLL] = value;\n}\n\nstatic void screen_resize_callback(int width, int height) {\n    screen_width = width;\n    screen_height = height;\n    Render::SetScreenSize(width, height);\n}\n\nstatic void screen_close_callback() {\n    exit = true;\n}\n\nbool ShouldExit() {\n    return exit;\n}\n\n/// Initializes the UI system.\n/// This will open the window.\nvoid Init() {\n    System::SetState(System::UI, System::INIT);\n    System::AssertDependency(System::CORE);\n    \n    Platform::Window::SetCallbacks({\n        .key_press = key_press_callback,\n        .key_release = key_release_callback,\n        .key_code = key_code_callback,\n        .key_mouse = key_mouse_callback,\n        .key_scroll = key_scroll_callback,\n        .screen_resize = screen_resize_callback,\n        .screen_close = screen_close_callback\n    });\n    \n    Platform::Window::Init();\n    \n    System::SetState(System::UI, System::READY);\n}\n\n/// Uninitializes the UI system.\n/// Closes the window.\nvoid Uninit() {\n    System::SetState(System::UI, System::YEET);\n    Platform::Window::Uninit();\n}\n\n/// Updates the UI system.\n/// When called, this will cause the UI state to be updated and all of the\n/// keypress and mouse movement events to be emitted.\nvoid Update() {\n    if (input_state == STATE_FLYING) {\n        vec3 camera_position = GetViewPosition();\n        quat camera_rotation = GetViewRotation();\n        \n        if (keyboard_keys_values[KEY_W])\n            camera_position += camera_rotation * DIRECTION_FORWARD * CAMERA_SPEED * GetDeltaTime();\n        if (keyboard_keys_values[KEY_S])\n            camera_position -= camera_rotation * DIRECTION_FORWARD * CAMERA_SPEED * GetDeltaTime();\n        if (keyboard_keys_values[KEY_A])\n            camera_position -= camera_rotation * DIRECTION_SIDE * CAMERA_SPEED * GetDeltaTime();\n        if (keyboard_keys_values[KEY_D])\n            camera_position += camera_rotation * DIRECTION_SIDE * CAMERA_SPEED * GetDeltaTime();\n            \n        camera_yaw += PollKeyboardAxisDelta(KEY_MOUSE_X) * CAMERA_SENSITIVITY * GetDeltaTime();\n        camera_pitch += PollKeyboardAxisDelta(KEY_MOUSE_Y) * CAMERA_SENSITIVITY * GetDeltaTime();\n        camera_pitch = camera_pitch > 90.0f ? 90.0f : camera_pitch < -90.0f ? -90.0f : camera_pitch;\n        \n        camera_rotation = quat(vec3(-glm::radians(camera_pitch), -glm::radians(camera_yaw), 0.0f));\n        \n        SetViewPosition(camera_position, 0);\n        SetViewRotation(camera_rotation, 0);\n        \n        SetViewPosition(camera_position, 1);\n        SetViewRotation(camera_rotation, 1);\n    }\n    \n    // generate keypress events. these need to be generated every tick that the\n    // keyboard key is being pressed down.\n    if (input_state == STATE_DEFAULT) for (auto& b : key_action_bindings) {\n        if (PollKeyboardKey(b.first) && b.second.action) {\n            Event::Post({Event::KEYPRESS, b.second.action, 0, nullptr});\n        }\n    }\n    \n    keyboard_axis_values[KEY_MOUSE_SCROLL] = 0.0f;\n    \n    // idk why, but these two lines make the mouse break on emscripten\n    // TODO: figure out why and fix\n#ifndef __EMSCRIPTEN__\n    keyboard_axis_deltas[KEY_MOUSE_X] = 0.0f;\n    keyboard_axis_deltas[KEY_MOUSE_Y] = 0.0f;\n#endif\n    \n    Platform::Input::Update();\n}\n\n/// Ends the frame and updates the window.\nvoid EndFrame() {\n    Platform::Window::Update();\n}\n\nvoid SetWebMainLoop(void(*loop_function)(void)) {\n#ifdef __EMSCRIPTEN__\n    emscripten_set_main_loop(loop_function, 0 , 0);\n#else\n    Log(Severity::CRITICAL_ERROR, System::UI, \"SetWebMainLoop() only works with web platform, aborting...\");\n    abort();\n#endif\n}\n\nfloat GetScreenWidth() {\n    return screen_width;\n}\n    \nfloat GetScreenHeight() {\n    return screen_height;\n}\n\n\nvoid SetWindowTitle(const char* title) {\n    Platform::Window::SetTitle(title);\n}\n\n/// Sets the window size.\n/// The width and height are the pixel value of the window.\nvoid SetWindowSize(int w, int h) {\n    if (w < 1 || h < 1) {\n        Log(Severity::ERROR, System::UI, \"Setting window size {} by {} too small\", w, h);\n        return;\n    } \n    Platform::Window::SetSize(w, h);\n}\n\nvoid SetCursor(CursorType cursor) {\n    switch (cursor) {\n        case CURSOR_DEFAULT:\n            Platform::Window::SetCursor(Platform::Window::CURSOR_DEFAULT);\n            break;\n        case CURSOR_TEXT:\n            Platform::Window::SetCursor(Platform::Window::CURSOR_TEXT);\n            break;\n        case CURSOR_CLICK:\n            Platform::Window::SetCursor(Platform::Window::CURSOR_CLICK);\n            break;\n    };\n}\n\nvoid SetInputState(InputState state) {\n    input_state = state;\n    \n    switch (state) {\n        case STATE_DEFAULT:\n        case STATE_NO_INPUT:\n        case STATE_FLYING:\n            Platform::Window::DisableCursor();\n        break;\n        case STATE_MENU_OPEN:\n        case STATE_CURSOR:\n            Platform::Window::EnableCursor();\n    }\n}\n\nInputState GetInputState() {\n    return input_state;\n}\n\n/// Checks the state of a key for the current frame.\n/// @return True, if key is pressed, false otherwise.\nbool PollKeyboardKey(KeyboardKey key) {\n    return keyboard_keys_values[key];\n}\n\n/// Checks the state of an axis for the current frame.\n/// @return Value of the axis.\nfloat PollKeyboardAxis(KeyboardAxis key) {\n    return keyboard_axis_values[key];\n}\n\n/// Checks the change of an axis for since the last frame.\n/// @return Value of the axis delta.\nfloat PollKeyboardAxisDelta(KeyboardAxis key) {\n    return keyboard_axis_sensitivity[key] * keyboard_axis_deltas[key];\n}\n\nfloat GetAxisSensitivity(KeyboardAxis key) {\n    return keyboard_axis_sensitivity[key];\n}\n\nvoid SetAxisSensitivity(KeyboardAxis key, float value) {\n    keyboard_axis_sensitivity[key] = value;\n}\n\nstatic Hashmap<keyboardaction_t> name_t_to_keyboardaction_t(\"name_t_to_keyboardaction_t\", KEYBOARDACTION_LIMIT);\nstatic const char* keyboardaction_names[KEYBOARDACTION_LIMIT] = {\n    \"none\",\n    \"forward\",\n    \"backward\",\n    \"strafe-left\",\n    \"strafe-right\",\n    \"up\",\n    \"down\",\n    \"left\",\n    \"right\",\n    \"jump\",\n    \"crouch\",\n    \"sprint\",\n    \"fly\",\n    \"activate\",\n    \"primary\",\n    \"secondary\"\n};\n\nstatic keyboardaction_t last_type = KeyboardAction::KEY_ACTION_LAST;\n\nkeyboardaction_t RegisterKeyboardAction(const char* name) {\n    if (UID::is_empty(name)) {\n        Log(Severity::CRITICAL_ERROR, System::UI, \"Keyboard action name '{}' is empty\", name);\n    }\n    \n    if (!UID::no_quote(name)) {\n        Log(Severity::CRITICAL_ERROR, System::UI, \"Keyboard action name '{}' contains invalid characters\", name);\n    }\n    \n    for (event_t i = 0; i < last_type; i++) {\n        if (strcmp(keyboardaction_names[i], name) != 0) continue;\n        \n        Log(Severity::CRITICAL_ERROR, System::UI, \"Keyboard action name '{}' already in use\", name);\n    }\n    \n    if (last_type >= KEYBOARDACTION_LIMIT) {\n        Log(Severity::CRITICAL_ERROR, System::UI, \"Keyboard action count limit exceeded when registering '{}'\", name);\n    }\n    \n    keyboardaction_names[last_type] = name;\n    return last_type++;\n}\n\nkeyboardaction_t GetKeyboardAction(name_t name) {\n    keyboardaction_t type = name_t_to_keyboardaction_t.Find(name);\n    \n    if (!type && name) {\n        for (keyboardaction_t i = 0; i < last_type; i++) {\n            if (keyboardaction_names[i] == name) {\n                name_t_to_keyboardaction_t.Insert(name, i);\n                return i;\n            }\n        }\n    }\n    \n    return type;\n}\n\nname_t GetKeyboardActionName(keyboardaction_t type) {\n    if (type >= last_type) {\n        Log(Severity::CRITICAL_ERROR, System::CORE, \"Keyboard action type {} not found\");\n    }\n    \n    return keyboardaction_names[type];\n}\n\nstd::vector<std::pair<keyboardaction_t, std::vector<KeyboardKey>>> GetAllKeyboardKeyBindings() {\n    std::vector<std::pair<keyboardaction_t, std::vector<KeyboardKey>>> binding_list;\n    for (keyboardaction_t i = 1; i < last_type; i++) {\n        binding_list.push_back({i, {}});\n    }\n\n    for (auto& binding : key_action_bindings) {\n        if (binding.second.action) {\n            for (auto& list_binding : binding_list) {\n                if (list_binding.first == binding.second.action) {\n                    list_binding.second.push_back(binding.first);\n                }\n            }\n        }\n\n    }\n\n    return binding_list;\n}\n\nconst char* GetKeyboardKeyName(KeyboardKey key) {\n    switch (key) {\n        case KEY_SPACE:             return \"space\";\n        case KEY_APOSTROPHE:        return \"'\";\n        case KEY_COMMA:             return \",\";\n        case KEY_MINUS:             return \"-\";\n        case KEY_PERIOD:            return \".\";\n        case KEY_SLASH:             return \"/\";\n        case KEY_0:                 return \"0\";\n        case KEY_1:                 return \"1\";\n        case KEY_2:                 return \"2\";\n        case KEY_3:                 return \"3\";\n        case KEY_4:                 return \"4\";\n        case KEY_5:                 return \"5\";\n        case KEY_6:                 return \"6\";\n        case KEY_7:                 return \"7\";\n        case KEY_8:                 return \"8\";\n        case KEY_9:                 return \"9\";\n        case KEY_SEMICOLON:         return \";\";\n        case KEY_EQUAL:             return \"=\";\n        case KEY_A:                 return \"a\";\n        case KEY_B:                 return \"b\";\n        case KEY_C:                 return \"c\";\n        case KEY_D:                 return \"d\";\n        case KEY_E:                 return \"e\";\n        case KEY_F:                 return \"f\";\n        case KEY_G:                 return \"g\";\n        case KEY_H:                 return \"h\";\n        case KEY_I:                 return \"i\";\n        case KEY_J:                 return \"j\";\n        case KEY_K:                 return \"k\";\n        case KEY_L:                 return \"l\";\n        case KEY_M:                 return \"m\";\n        case KEY_N:                 return \"n\";\n        case KEY_O:                 return \"o\";\n        case KEY_P:                 return \"p\";\n        case KEY_Q:                 return \"q\";\n        case KEY_R:                 return \"r\";\n        case KEY_S:                 return \"s\";\n        case KEY_T:                 return \"t\";\n        case KEY_U:                 return \"u\";\n        case KEY_V:                 return \"v\";\n        case KEY_W:                 return \"w\";\n        case KEY_X:                 return \"x\";\n        case KEY_Y:                 return \"y\";\n        case KEY_Z:                 return \"z\";\n        case KEY_LEFT_BRACKET:      return \"(\";\n        case KEY_BACKSLASH:         return \"\\\\\";\n        case KEY_RIGHT_BRACKET:     return \")\";\n        case KEY_GRAVE_ACCENT:      return \"`\";\n        case KEY_WORLD_1:           return \"world1\";\n        case KEY_WORLD_2:           return \"world2\";\n        case KEY_ESCAPE:            return \"escape\";\n        case KEY_ENTER:             return \"enter\";\n        case KEY_TAB:               return \"tab\";\n        case KEY_BACKSPACE:         return \"backspace\";\n        case KEY_INSERT:            return \"insert\";\n        case KEY_DELETE:            return \"delete\";\n        case KEY_RIGHT:             return \"right\";\n        case KEY_LEFT:              return \"left\";\n        case KEY_DOWN:              return \"down\";\n        case KEY_UP:                return \"up\";\n        case KEY_PAGE_UP:           return \"pageup\";\n        case KEY_PAGE_DOWN:         return \"pagedown\";\n        case KEY_HOME:              return \"home\";\n        case KEY_END:               return \"end\";\n        case KEY_CAPS_LOCK:         return \"capslock\";\n        case KEY_SCROLL_LOCK:       return \"scrolllock\";\n        case KEY_NUM_LOCK:          return \"numlock\";\n        case KEY_PRINT_SCREEN:      return \"printscreen\";\n        case KEY_PAUSE:             return \"pause\";\n        case KEY_F1:                return \"f1\";\n        case KEY_F2:                return \"f2\";\n        case KEY_F3:                return \"f3\";\n        case KEY_F4:                return \"f4\";\n        case KEY_F5:                return \"f5\";\n        case KEY_F6:                return \"f6\";\n        case KEY_F7:                return \"f7\";\n        case KEY_F8:                return \"f8\";\n        case KEY_F9:                return \"f9\";\n        case KEY_F10:               return \"f10\";\n        case KEY_F11:               return \"f11\";\n        case KEY_F12:               return \"f12\";\n        case KEY_F13:               return \"f13\";\n        case KEY_F14:               return \"f14\";    \n        case KEY_F15:               return \"f15\";\n        case KEY_F16:               return \"f16\";\n        case KEY_F17:               return \"f17\";\n        case KEY_F18:               return \"f18\";\n        case KEY_F19:               return \"f19\";\n        case KEY_F20:               return \"f20\";\n        case KEY_F21:               return \"f21\";\n        case KEY_F22:               return \"f22\";\n        case KEY_F23:               return \"f23\";\n        case KEY_F24:               return \"f24\";\n        case KEY_F25:               return \"f25\";\n        case KEY_KP_0:              return \"keypad0\";\n        case KEY_KP_1:              return \"keypad1\";\n        case KEY_KP_2:              return \"keypad2\";\n        case KEY_KP_3:              return \"keypad3\";\n        case KEY_KP_4:              return \"keypad4\";\n        case KEY_KP_5:              return \"keypad5\";\n        case KEY_KP_6:              return \"keypad6\";\n        case KEY_KP_7:              return \"keypad7\";\n        case KEY_KP_8:              return \"keypad8\";\n        case KEY_KP_9:              return \"keypad9\";\n        case KEY_KP_DECIMAL:        return \"keypad.\";\n        case KEY_KP_DIVIDE:         return \"keypad/\";\n        case KEY_KP_MULTIPLY:       return \"keypad*\";\n        case KEY_KP_SUBTRACT:       return \"keypad-\";\n        case KEY_KP_ADD:            return \"keypad+\";\n        case KEY_KP_ENTER:          return \"keypadenter\";\n        case KEY_KP_EQUAL:          return \"keypad=\";\n        case KEY_LEFT_SHIFT:        return \"leftshift\";\n        case KEY_LEFT_CONTROL:      return \"leftcontrol\";\n        case KEY_LEFT_ALT:          return \"leftalt\";\n        case KEY_LEFT_SUPER:        return \"leftsuper\";\n        case KEY_RIGHT_SHIFT:       return \"rightshift\";\n        case KEY_RIGHT_CONTROL:     return \"rightcontrol\";\n        case KEY_RIGHT_ALT:         return \"rightalt\";\n        case KEY_RIGHT_SUPER:       return \"rightsuper\";\n        case KEY_MENU:              return \"menu\";\n        case KEY_RIGHTMOUSE:        return \"rightmouse\";\n        case KEY_LEFTMOUSE:         return \"leftmouse\";\n        case KEY_MIDDLEMOUSE:       return \"middlemouse\";\n        case KEY_LASTKEY:           return \"lastkey\";\n        default:                    return \"anykey\";\n    }\n}\n\n}\n"
  },
  {
    "path": "src/framework/ui.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_UI_H\n#define TRAM_SDK_FRAMEWORK_UI_H\n\n#include <render/render.h>\n\nnamespace tram::UI {\n\nenum KeyboardKey : uint16_t {\n    // stutter keys\n    KEY_SPACE, KEY_APOSTROPHE, KEY_COMMA, KEY_MINUS, KEY_PERIOD, KEY_SLASH,\n    \n    // number keys\n    KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9,\n    \n    // programming keys\n    KEY_SEMICOLON, KEY_EQUAL,\n    \n    // letter keys\n    KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M,\n    KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z,\n    \n    // keys that you press by accident\n    KEY_LEFT_BRACKET, KEY_BACKSLASH, KEY_RIGHT_BRACKET, KEY_GRAVE_ACCENT,\n    \n    // i have no idea what these are\n    KEY_WORLD_1, KEY_WORLD_2,\n    \n    // stutter keys\n    KEY_ESCAPE, KEY_ENTER, KEY_TAB, KEY_BACKSPACE, KEY_INSERT, KEY_DELETE,\n    \n    // arrow keys\n    KEY_RIGHT, KEY_LEFT, KEY_DOWN, KEY_UP,\n    \n    // keys right above arrow keys\n    KEY_PAGE_UP, KEY_PAGE_DOWN, KEY_HOME, KEY_END,\n    KEY_CAPS_LOCK, KEY_SCROLL_LOCK, KEY_NUM_LOCK, KEY_PRINT_SCREEN, KEY_PAUSE,\n    \n    // function keys\n    KEY_F1,     KEY_F2,     KEY_F3,     KEY_F4,     KEY_F5,     KEY_F6,\n    KEY_F7,     KEY_F8,     KEY_F9,     KEY_F10,    KEY_F11,    KEY_F12, KEY_F13,\n    KEY_F14,    KEY_F15,    KEY_F16,    KEY_F17,    KEY_F18,    KEY_F19,\n    KEY_F20,    KEY_F21,    KEY_F22,    KEY_F23,    KEY_F24,    KEY_F25,\n    KEY_KP_0,   KEY_KP_1,   KEY_KP_2,   KEY_KP_3,   KEY_KP_4,   KEY_KP_5,\n    KEY_KP_6,   KEY_KP_7,   KEY_KP_8,   KEY_KP_9,\n    \n    // keyoad keys\n    KEY_KP_DECIMAL, KEY_KP_DIVIDE, KEY_KP_MULTIPLY, KEY_KP_SUBTRACT, KEY_KP_ADD,\n    KEY_KP_ENTER,  KEY_KP_EQUAL,\n    \n    // modfier keys\n    KEY_LEFT_SHIFT, KEY_LEFT_CONTROL, KEY_LEFT_ALT, KEY_LEFT_SUPER,\n    KEY_RIGHT_SHIFT, KEY_RIGHT_CONTROL, KEY_RIGHT_ALT, KEY_RIGHT_SUPER,\n    \n    // i have no idea what this key is\n    KEY_MENU,\n    \n    // mouse keys\n    KEY_RIGHTMOUSE,\n    KEY_LEFTMOUSE,\n    KEY_MIDDLEMOUSE,\n    \n    KEY_LASTKEY\n};\n\nenum KeyboardAxis : uint16_t {\n    KEY_MOUSE_X,\n    KEY_MOUSE_Y,\n    KEY_MOUSE_SCROLL,\n    KEY_LASTAXIS\n};\n\nenum InputState {\n    STATE_DEFAULT,      //< Normal input, events get generated, cursor disabled.\n    STATE_NO_INPUT,     //< Inputs get ignored, no cursor.\n    STATE_FLYING,       //< Events are skipped, inputs directly move view.\n    STATE_MENU_OPEN,    //< Input gets registered, but no events are generated, cursor enabled.\n    STATE_CURSOR        //< Normal input, events get generated, but cursor enabled.\n};\n\ntypedef uint16_t keyboardaction_t;\n\nenum KeyboardAction : keyboardaction_t {\n    KEY_ACTION_NONE,\n    KEY_ACTION_FORWARD,\n    KEY_ACTION_BACKWARD,\n    KEY_ACTION_STRAFE_LEFT,\n    KEY_ACTION_STRAFE_RIGHT,\n    KEY_ACTION_UP,\n    KEY_ACTION_DOWN,\n    KEY_ACTION_LEFT,\n    KEY_ACTION_RIGHT,\n    KEY_ACTION_JUMP,\n    KEY_ACTION_CROUCH,\n    KEY_ACTION_SPRINT,\n    KEY_ACTION_FLY,\n    KEY_ACTION_ACTIVATE,\n    KEY_ACTION_PRIMARY,\n    KEY_ACTION_SECONDARY,\n    KEY_ACTION_LAST\n};\n\nenum CursorType {\n    CURSOR_DEFAULT,\n    CURSOR_TEXT,\n    CURSOR_CLICK\n};\n\nconst float CAMERA_SENSITIVITY = 6.0f;\nconst float CAMERA_SPEED = 6.0f;\n\nvoid Init();\nvoid Uninit();\nvoid Update();\nvoid EndFrame();\n\nfloat GetScreenWidth();\nfloat GetScreenHeight();\n\nvoid SetWindowTitle(const char* title);\nvoid SetWindowSize(int w, int h);\n\nvoid SetCursor(CursorType cursor);\n\nvoid SetWebMainLoop(void(*loop_function)(void));\n\nvoid BindKeyboardKey(KeyboardKey key, keyboardaction_t action);\nvoid BindKeyboardKey(KeyboardKey key, void (*action)());\nvoid BindKeyboardKey(KeyboardKey key, void (*action)(KeyboardKey));\n\nbool PollKeyboardKey(KeyboardKey key);\nfloat PollKeyboardAxis(KeyboardAxis key);\nfloat PollKeyboardAxisDelta(KeyboardAxis key);\n\nvoid SetInputState(InputState state);\nInputState GetInputState();\n\nfloat GetAxisSensitivity(KeyboardAxis axis);\nvoid SetAxisSensitivity(KeyboardAxis axis, float value);\n\nkeyboardaction_t RegisterKeyboardAction(const char* name);\nkeyboardaction_t GetKeyboardAction(name_t name);\nname_t GetKeyboardActionName(keyboardaction_t type);\n\nstd::vector<std::pair<keyboardaction_t, std::vector<KeyboardKey>>> GetAllKeyboardKeyBindings();\nconst char* GetKeyboardKeyName(KeyboardKey key);\n\nbool ShouldExit();\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_UI_H\n"
  },
  {
    "path": "src/framework/uid.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/uid.h>\n\n#include <cstring>\n\n#include <templates/stackpool.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <murmur.h>\n\n/**\n * @struct tram::UID framework/uid.h <framework/uid.h>\n * \n * Interned string type.\n * \n * Should intern strings in O(1) as long as the total number of interned strings\n * is lower than UID_LIMIT. \n * In either case, interned string comparison will always be O(1).\n * If you are converting a lot of strings, it is best to do so early, because\n * the internment process, altough nearly constant time, does, in fact, take\n * some time.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/uid.html\n */\n \n /**\n * @typedef UID name_t\n * Alias for UID.\n */\n\nnamespace tram {\n\nstatic StackPool<char> string_pool(\"Name pool\", UID_CHARACTER_LIMIT, {'n', 'o', 'n', 'e', '\\0'});\nstatic Hashmap<UID> string_list(\"Name list\", UID_LIMIT, {{MurmurHash(\"none\"), UID()}});\n\nUID::UID(const std::string& value) {\n    const char* str = value.c_str();\n    *this = UID(str);\n}\n\n// TODO: make this THREAD SAFE!!\n/* in order to make this thread-safe, we would need to do the following:\n * 1. make sure that Hashmap lookups are thread safe\n * 2. add a lock to the string pool\n * 3. just before the string gets added to the string pool, lock it\n * 4. double-check that string hasn't been added\n * 6. add the string as before\n * 7. the string pool, unlock it\n */\n\n/// Interns a string.\n/// This will intern the string and return a little UID that you can put in your\n/// little pockets and take away with you.\n/// For best results I recommend using the no_quotes() and is_empty() functions \n/// to first check whether a given string will also be a good name.\n/// A string that isn't empty and doesn't need quotes is a good name.\n/// @param value The string which will be interned.\n/// @note Empty strings and \nUID::UID(const char* value) {\n    if (!value) {\n        this->key = 0;\n        return;\n    }\n    \n    uint64_t hash = MurmurHash2(value, strlen(value) + 1);\n    \n    // check if value is already added\n    UID existing = string_list.Find(hash);\n    \n    if (existing) {\n        if (strcmp(existing, value) != 0) {\n            std::cout << \"UID collision \" << existing << \" with \" << value << std::endl; \n            abort();\n        }\n        \n        this->key = existing.key;\n        return;\n    }\n    \n    // since we use the string \"none\" as the default string and since we defined\n    // the bool operator on the UID to basically check whether a given string is\n    // a \"none\", then if the user has passed a \"none\" string in as the parameter\n    // in this method, the previous if statement will have been evaluated as\n    // false, even though the string \"none\" is literally the only string which\n    // hard-coded directly into the string table\n    \n    // to avoid filling up the string table with \"none\"s and to ensure the\n    // constraint that identical strings have identical keys, in the case of\n    // \"none\", we have bail out of this method, hence the following:\n    \n    // special case. very important!\n    if (strcmp(\"none\", value) == 0) return;\n    \n    // else add to string table\n    this->key = string_pool.size();\n    \n    char* new_value = string_pool.AddNew(strlen(value) + 1);\n    strcpy(new_value, value);\n    \n    string_list.Insert(hash, *this);\n}\n\nUID::operator std::string() const {\n    return string_pool.begin() + key;\n}\n\nUID::operator char const*() const {\n    return string_pool.begin() + key;\n}\n\n/// Checks whether the name is valid.\n/// Due to bad memory handling practices, it is possible to create a name with\n/// such a key, that when this name's string is looked up from the string table\n/// and dereferenced, a segfault occurs.\n/// This function checks whether a segfault is likely to occur when given a name\n/// to check. This is done by a simple bounds check on the string table.\n/// @return True, if using a name is safe.\nbool UID::is_valid(const UID& value) {\n    return value.key < string_pool.size();\n}\n\n/// Checks whether the name will need quotes.\n/// When parsing a name from a text file, if a name has spaces in it, then it\n/// will require quotes around it to be parsed in correctly.\n/// This function checks whether a certain string will be able to be parsed as a\n/// name correctly, without quotes.\n/// @return True, if the string won't need quotes.\nbool UID::no_quote(const char* str) {\n    if (!str) return false;\n    \n    for (const char* c = str; *c != '\\0'; c++) {\n        if (*c == ' ') return false;\n        if (*c == '\"') return false;\n        if (isspace(*c)) return false;\n    }\n    \n    return true;\n}\n\n/// Checks whether a string consists of only whitespace.\n/// @return True, if string contains at least a single non-whitespace character.\nbool UID::is_empty(const char* str) {\n    if (!str) return false;\n    \n    for (const char* c = str; *c != '\\0'; c++) {\n        if (!isspace(*c)) return false;\n    }\n    \n    return true;\n}\n\n}"
  },
  {
    "path": "src/framework/uid.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_UID_H\n#define TRAM_SDK_FRAMEWORK_UID_H\n\n#include <string>\n#include <cstdint>\n\nnamespace tram {\n\nstruct UID {\n    UID() {}\n    UID(const UID& value) { *this = value; }\n    ~UID() {}\n    \n    UID(const std::string& value);\n    UID(const char* value);\n    \n    UID& operator=(const UID& value) {\n        key = value.key;\n        return *this;\n    }\n    \n    bool operator==(const UID& other) const {\n        return key == other.key;\n    }\n    \n    bool operator==(const char* other) const {\n        return key == UID(other).key;\n    }\n    \n    explicit operator bool() { return key; }\n    \n    operator std::string() const;\n    operator char const*() const;\n    \n    static bool no_quote(const char*);\n    static bool is_empty(const char*);\n    static bool is_valid(const UID&);\n    \n    uint32_t key = 0;\n};\n\ntypedef UID name_t;\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_UID_H"
  },
  {
    "path": "src/framework/value.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_VALUE_H\n#define TRAM_SDK_FRAMEWORK_VALUE_H\n\n#include <cassert>\n#include <cstring>\n\n#include <framework/type.h>\n#include <framework/uid.h>\n#include <framework/math.h>\n#include <framework/logging.h>\n\nnamespace tram {\n\nclass ValuePtr;\n    \n/// Generic, type-safe union.\nclass Value {\npublic:\n    Value() : vec4_value({0, 0, 0, 0}) { type = TYPE_UNDEFINED; }\n    ~Value() {}\n    \n    Value(const Value& other) : vec4_value(other.vec4_value) /* hehe */ { type = other.type; }\n    \n    Value& operator=(const Value& other) {\n        vec4_value = other.vec4_value;\n        type = other.type; return *this;\n    }\n    \n    bool operator==(const Value& other) const {\n        switch (type) {\n            case TYPE_BOOL:\n                if (other.GetType() != TYPE_BOOL) return false; else return bool_value == other.bool_value;\n            case TYPE_INT32:\n            case TYPE_UINT32:\n                if (!other.IsInt() && !other.IsFloat()) return false; else return GetInt() == other.GetInt();\n            case TYPE_FLOAT32:\n                if (!other.IsInt() && !other.IsFloat()) return false; else return GetFloat() == other.GetFloat();\n            case TYPE_NAME:\n                if (other.GetType() != TYPE_NAME) return false; else return name_value == other.name_value;\n            case TYPE_STRING:\n                if (other.IsString()) return strcmp(string_value, other.string_value) == 0; else if (other.IsName()) return string_value == other.name_value; else return false;\n            case TYPE_VEC2:\n                if (other.GetType() != TYPE_VEC2) return false; else return vec2_value == other.vec2_value;\n            case TYPE_VEC3:\n                if (other.GetType() != TYPE_VEC3) return false; else return vec3_value == other.vec3_value;\n            case TYPE_VEC4:\n                if (other.GetType() != TYPE_VEC4) return false; else return vec4_value == other.vec4_value;\n            case TYPE_QUAT:\n                if (other.GetType() != TYPE_QUAT) return false; else return quat_value == other.quat_value;\n            default: return false;\n        }\n    }\n    \n    Value(bool value) : bool_value(value) { type = TYPE_BOOL; }\n    Value(name_t value) : name_value(value) { type = TYPE_NAME; }\n    Value(const char* value) : string_value(value) { type = TYPE_STRING; }\n    \n    Value(int8_t value) : int32_value(value) { type = TYPE_INT32; }\n    Value(int16_t value) : int32_value(value) { type = TYPE_INT32; }\n    Value(int32_t value) : int32_value(value) { type = TYPE_INT32; }\n    \n    Value(uint8_t value) : uint32_value(value) { type = TYPE_UINT32; }\n    Value(uint16_t value) : uint32_value(value) { type = TYPE_UINT32; }\n    Value(uint32_t value) : uint32_value(value) { type = TYPE_UINT32; }\n    \n    Value(float value) : float_value(value) { type = TYPE_FLOAT32; }\n    \n    Value(vec2 value) : vec2_value(value) { type = TYPE_VEC2; }\n    Value(vec3 value) : vec3_value(value) { type = TYPE_VEC3; }\n    Value(vec4 value) : vec4_value(value) { type = TYPE_VEC4; }\n    \n    Value(quat value) : quat_value(value) { type = TYPE_QUAT; }\n    \n    operator bool() const {\n        switch (type) {\n            case TYPE_UNDEFINED:    return false;\n            case TYPE_BOOL:         return bool_value;\n            case TYPE_INT32:        return int32_value;\n            case TYPE_UINT32:       return uint32_value;\n            case TYPE_FLOAT32:      return float_value != 0.0f;\n            case TYPE_NAME:         return name_value;\n            case TYPE_STRING:       return string_value;\n            case TYPE_VEC2:         return vec2_value != vec2(0.0f, 0.0f);\n            case TYPE_VEC3:         return vec3_value != vec3(0.0f, 0.0f, 0.0f);\n            case TYPE_VEC4:         return vec4_value != vec4(0.0f, 0.0f, 0.0f, 0.0f);\n            case TYPE_QUAT:         return quat_value != quat(1.0f, 0.0f, 0.0f, 0.0f);\n            default:                return false;\n        }\n    }\n    \n    operator name_t() const {\n        if (type == TYPE_STRING) {\n            return (name_t)string_value;\n        }\n        \n        AssertType(TYPE_NAME);\n        \n        return name_value;\n    }\n    operator const char*() const {\n        if (type == TYPE_NAME) {\n            return name_value;\n        }\n        \n        AssertType(TYPE_STRING);\n        \n        return string_value;\n    }\n    \n    operator int8_t() const { return (int32_t)*this; }\n    operator int16_t() const { return (int32_t)*this; }\n    operator int32_t() const { AssertType(TYPE_INT32); return int32_value; }\n    \n    operator uint8_t() const { return (uint32_t)*this; }\n    operator uint16_t() const { return (uint32_t)*this; }\n    operator uint32_t() const { AssertType(TYPE_UINT32); return uint32_value; }\n    \n    operator float() const { AssertType(TYPE_FLOAT32); return float_value; } \n    \n    operator vec2() const { AssertType(TYPE_VEC2); return vec2_value; }\n    operator vec3() const { AssertType(TYPE_VEC3); return vec3_value; }\n    operator vec4() const { AssertType(TYPE_VEC4); return vec4_value; }\n    \n    operator quat() const { AssertType(TYPE_QUAT); return quat_value; }\n    \n    inline bool IsBool() const { return type == TYPE_BOOL; }\n    inline bool IsInt() const { return type == TYPE_INT32 || type == TYPE_UINT32; }\n    inline bool IsFloat() const { return type == TYPE_FLOAT32; }\n    inline bool IsName() const { return type == TYPE_NAME; }\n    inline bool IsString() const { return type == TYPE_STRING; }\n    inline bool IsVec2() const { return type == TYPE_VEC2; }\n    inline bool IsVec3() const { return type == TYPE_VEC3; }\n    inline bool IsVec4() const { return type == TYPE_VEC4; }\n    inline bool IsQuat() const { return type == TYPE_QUAT; }\n    \n    inline int GetInt() const {\n        switch (type) {\n            case TYPE_INT32:    return int32_value;\n            case TYPE_UINT32:   return int32_value;\n            case TYPE_FLOAT32:  return float_value;\n            default: return 0;\n        }\n    }\n    \n    inline float GetFloat() const {\n        switch (type) {\n            case TYPE_INT32:    return int32_value;\n            case TYPE_UINT32:   return uint32_value;\n            case TYPE_FLOAT32:  return float_value;\n            default: return 0;\n        }\n    }\n    \n    inline std::string ToString() {\n        switch (type) {\n            case TYPE_UNDEFINED:    return \"undefined\";\n            case TYPE_BOOL:         return bool_value ? \"true\" : \"false\";\n            case TYPE_INT32:        return std::to_string(int32_value);\n            case TYPE_UINT32:       return std::to_string(uint32_value);\n            case TYPE_FLOAT32:      return std::to_string(float_value);\n            case TYPE_NAME:         return name_value;\n            case TYPE_STRING:       return string_value;\n            case TYPE_VEC2:         return std::to_string(vec2_value.x) + \";\" + std::to_string(vec2_value.y);\n            case TYPE_VEC3:         return std::to_string(vec3_value.x) + \";\" + std::to_string(vec3_value.y) + \";\" + std::to_string(vec3_value.z);\n            case TYPE_VEC4:         return std::to_string(vec4_value.x) + \";\" + std::to_string(vec4_value.y) + \";\" + std::to_string(vec4_value.z) + \";\" + std::to_string(vec4_value.w);\n            case TYPE_QUAT:         return std::to_string(quat_value.x) + \";\" + std::to_string(quat_value.y) + \";\" + std::to_string(quat_value.z) + \";\" + std::to_string(quat_value.w);\n            default:                return \"unknown\";\n        }\n    }\n    \n    inline Type GetType() const { return type; }\nprotected:\n    Type type;\n    \n    void AssertType(Type type) const {\n        \n        // idk if this will cause problems in the future, but let's just allow it for now\n        if (this->type == TYPE_INT32 && type == TYPE_UINT32) return;\n        if (this->type == TYPE_UINT32 && type == TYPE_INT32) return;\n        \n        if (this->type != type) {\n            Log(Severity::CRITICAL_ERROR, System::CORE, \"Value of type {} used in a {} context\", TypeToString(this->type), TypeToString(type));\n        }\n    }\n    \n    union {\n        bool bool_value;\n        name_t name_value;\n        const char* string_value;\n        int32_t int32_value;\n        uint32_t uint32_value;\n        float float_value;\n        vec2 vec2_value;\n        vec3 vec3_value;\n        vec4 vec4_value;\n        quat quat_value;\n    };\n    \n    friend class ValuePtr;\n};\n\nclass ValuePtr {\npublic:\n    ValuePtr() : uint32_ptr(nullptr) { type = TYPE_UNDEFINED; }\n    ~ValuePtr() {}\n    \n    ValuePtr(const ValuePtr& other) : vec4_ptr(other.vec4_ptr) { type = other.type; }\n    \n    ValuePtr(Value& other) {\n        type = other.GetType();\n        \n        switch (type) {\n            case TYPE_BOOL:     bool_ptr = &other.bool_value; break;\n            case TYPE_INT32:    int32_ptr = &other.int32_value; break;\n            case TYPE_UINT32:   uint32_ptr = &other.uint32_value; break;\n            case TYPE_FLOAT32:  float_ptr = &other.float_value; break;\n            case TYPE_NAME:     name_ptr = &other.name_value; break;\n            case TYPE_STRING:   string_ptr = &other.string_value; break;\n            case TYPE_VEC2:     vec2_ptr = &other.vec2_value; break;\n            case TYPE_VEC3:     vec3_ptr = &other.vec3_value; break;\n            case TYPE_VEC4:     vec4_ptr = &other.vec4_value; break;\n            case TYPE_QUAT:     quat_ptr = &other.quat_value; break;\n            default: assert(false);\n        }\n    }\n    \n    operator Value() const {\n        switch (type) {\n            case TYPE_UNDEFINED: return Value();\n            case TYPE_BOOL:     return *bool_ptr;\n            case TYPE_INT32:    return *int32_ptr;\n            case TYPE_UINT32:   return *uint32_ptr;\n            case TYPE_FLOAT32:  return *float_ptr;\n            case TYPE_NAME:     return *name_ptr;\n            case TYPE_STRING:   return *string_ptr;\n            case TYPE_VEC2:     return *vec2_ptr;\n            case TYPE_VEC3:     return *vec3_ptr;\n            case TYPE_VEC4:     return *vec4_ptr;\n            case TYPE_QUAT:     return *quat_ptr;\n            default: assert(false); return Value();\n        }\n    }\n    \n    void SetValue(const Value& other) {\n        assert(type == other.GetType());\n        \n        switch (type) {\n            case TYPE_BOOL:     *bool_ptr = (bool)other; break;\n            case TYPE_INT32:    *int32_ptr = (int32_t)other; break;\n            case TYPE_UINT32:   *uint32_ptr = (uint32_t)other; break;\n            case TYPE_FLOAT32:  *float_ptr = (float)other; break;\n            case TYPE_NAME:     *name_ptr = (name_t)other; break;\n            case TYPE_STRING:   *string_ptr = (const char*)other; break;\n            case TYPE_VEC2:     *vec2_ptr = (vec2)other; break;\n            case TYPE_VEC3:     *vec3_ptr = (vec3)other; break;\n            case TYPE_VEC4:     *vec4_ptr = (vec4)other; break;\n            case TYPE_QUAT:     *quat_ptr = (quat)other; break;\n            default: assert(false);\n        }\n    }\n    \n    ValuePtr(bool* ptr) : bool_ptr(ptr) { type = TYPE_BOOL; }\n    ValuePtr(name_t* ptr) : name_ptr(ptr) { type = TYPE_NAME; }\n    ValuePtr(const char** ptr) : string_ptr(ptr) { type = TYPE_STRING; }\n    \n    ValuePtr(int32_t* ptr) : int32_ptr(ptr) { type = TYPE_INT32; }\n\n    ValuePtr(uint32_t* ptr) : uint32_ptr(ptr) { type = TYPE_UINT32; }\n\n    ValuePtr(vec2* ptr) : vec2_ptr(ptr) { type = TYPE_VEC2; }\n    ValuePtr(vec3* ptr) : vec3_ptr(ptr) { type = TYPE_VEC3; }\n    ValuePtr(vec4* ptr) : vec4_ptr(ptr) { type = TYPE_VEC4; }\n    \n    ValuePtr(quat* ptr) : quat_ptr(ptr) { type = TYPE_QUAT; }\n\n    ValuePtr(float* ptr) : float_ptr(ptr) { type = TYPE_FLOAT32; }\n\n    operator bool*() const { assert(type == TYPE_BOOL); return bool_ptr; } \n    operator name_t*() const { assert(type == TYPE_NAME); return name_ptr; }\n    operator const char**() const { assert(type == TYPE_STRING); return string_ptr; }\n    \n    operator int32_t*() const { assert(type == TYPE_INT32); return int32_ptr; }\n\n    operator uint32_t*() const { assert(type == TYPE_UINT32); return uint32_ptr; }\n    \n    operator float*() const { assert(type == TYPE_FLOAT32); return float_ptr; } \n\n    operator vec2*() const { assert(type == TYPE_VEC2); return vec2_ptr; }\n    operator vec3*() const { assert(type == TYPE_VEC3); return vec3_ptr; }\n    operator vec4*() const { assert(type == TYPE_VEC4); return vec4_ptr; }\n    \n    operator quat*() const { assert(type == TYPE_QUAT); return quat_ptr; }\n    \n    inline bool IsBool() const { return type == TYPE_BOOL; }\n    inline bool IsInt() const { return type == TYPE_INT32 || type == TYPE_UINT32; }\n    inline bool IsFloat() const { return type == TYPE_FLOAT32; }\n    \n    inline Type GetType() const { return type; }\nprivate:\n    Type type;\n    \n    union {\n        bool* bool_ptr;\n        name_t* name_ptr;\n        const char** string_ptr;\n        int32_t* int32_ptr;\n        uint32_t* uint32_ptr;\n        float* float_ptr;\n        vec2* vec2_ptr;\n        vec3* vec3_ptr;\n        vec4* vec4_ptr;\n        quat* quat_ptr;\n    };\n};\n\nclass ValueArray {\npublic:\n    ValueArray(const Value* first, size_t count) : first_field(first), field_count(count) {}\n    const Value& operator [](size_t n) const { assert(n < field_count); return first_field[n]; }\n    const size_t size() const { return field_count; }\nprivate:\n    const Value* first_field;\n    size_t field_count;\n};\n\ntypedef Value value_t;\ntypedef ValueArray valuearray_t;\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_VALUE_H"
  },
  {
    "path": "src/framework/worldcell.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/worldcell.h>\n\n#include <framework/entity.h>\n#include <framework/transition.h>\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <templates/pool.h>\n#include <templates/hashmap.h>\n\n#include <render/render.h>\n\n#include <config.h>\n\n#include <algorithm>\n\n#include <fstream>\n#include <cstring>\n#include <sstream>\n\n/**\n * @struct tram::WorldCell framework/worldcell.h <framework/worldcell.h>\n * \n * World streaming unit.\n * \n * Contains entities, can be used to load and unload them.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/framework/worldcell.html\n */\n\nnamespace tram {\n\ntemplate <> Pool<WorldCell> PoolProxy<WorldCell>::pool(\"Worldcell pool\", WORLDCELL_LIMIT);\n\nstatic Hashmap<WorldCell*> worldcell_list(\"Worldcell list hashmap\", WORLDCELL_LIMIT);\n\n/// Finds a WorldCell by its name.\n/// @return Pointer to the cell if found, nullptr otherwise.\nWorldCell* WorldCell::Find(name_t name) {\n    return worldcell_list.Find(name);\n}\n\n/// Creates a WorldCell by name.\n/// If a cell with the given name already exists, this method will return that\n/// same cell, otherwise a new cell will be created.\n/// @return Always returns the pointer to the created WorldCell.\nWorldCell* WorldCell::Make(name_t name) {\n    auto cell = worldcell_list.Find(name);\n    \n    if (!cell) {\n        cell = PoolProxy<WorldCell>::New(name);\n        worldcell_list.Insert(name, cell);\n    }\n    \n    return cell;\n}\n\n/// Finds the WorldCell which contains a given point.\n/// This method will iterate through WorldCells and will try to find a WorldCell\n/// with a volume that contains the given point.\n/// It will first try finding a volume for an interior cell, otherwise it will\n/// try finding a volume for an exterior cell. If it can't find a cell, it will\n/// return a nullptr.\n/// @return Pointer to a WorldCell or a nullptr.\nWorldCell* WorldCell::Find(vec3 point) {\n    for (auto& cell : PoolProxy<WorldCell>::GetPool()) {\n        if (!cell.IsInterior()) continue;\n        if (cell.IsInside(point)) return &cell;\n    }\n    \n    for (auto& cell : PoolProxy<WorldCell>::GetPool()) {\n        if (cell.IsInside(point)) return &cell;\n    }\n    \n    return nullptr;\n}\n\n/// Loads the cell.\n/// This will flag the cell as loaded and will load all of the entities that\n/// have been flagged as being automatically loaded.\nvoid WorldCell::Load() {\n    Log(Severity::INFO, System::CORE, \"Loading cell:\", name);\n    \n    if (!entities.size() && !(flags & LOADED_FROM_DISK)) {\n        Log(Severity::ERROR, System::CORE, \"Cell '{}' has no entities. Forgot to load from disk?\", name);\n    }\n    \n    for (auto it : entities) {\n        if (it->IsAutoLoad() && !it->IsDeleted()) it->Load();\n    }\n        \n    SetFlag(LOADED, true);\n};\n\n/// Unloads the cell.\n/// This will flag the cell as unloaded and will unload all of the entities that\n/// have been flagged as being automatically loaded. It will also delete\n/// entities that have been flagged as being non-persistent.\nvoid WorldCell::Unload() {\n    Log(Severity::INFO, System::CORE, \"Unloading cell: {}\", name);\n    \n    auto entities_copy = entities;\n    for (auto& it : entities_copy) {\n        if (!it->IsAutoLoad() || !it->IsLoaded()) continue;\n        \n        if (it->IsPersistent()) {\n            it->Unload();\n        } else {\n            Log(Severity::INFO, System::CORE, \"Yeeting {} out of existence!\", it->GetName());\n            it->Yeet();\n        }\n    }\n\n   SetFlag(LOADED, false);\n};\n\n/// Adds a transition.\n/// Adds an outgoing transition to the worldcell.\nvoid WorldCell::Add(Transition* transition) {\n    if (transition->cell_into == this) {\n        volume.push_back(transition);\n    } else {\n        transitions.push_back(transition);\n    }\n}\n\n/// Finds a transition from a position.\n/// This is meant to be used by entities that are seeking a WorldCell into which\n/// they can transition into.\nWorldCell* WorldCell::FindTransition(vec3 point) {\n    // find if transition is possible\n    WorldCell* next = nullptr;\n    for (auto transition : transitions) {\n        if (transition->IsInside(point)) {\n            next = transition->GetCell();\n            break;\n        }\n    }\n    \n    // if not, then return\n    if (!next) return nullptr;\n    \n    // if it is, then check if we still are in parent cell\n    bool in_parent = false;\n    for (auto transition : volume) {\n        if (transition->IsInside(point)) {\n            in_parent = true;\n            break;\n        }\n    }\n    \n    // if we are not, then transition\n    if (!in_parent) return next;\n    \n    // if we are, then check if parent is exterior and next is interior\n    bool this_exterior = !(this->flags & INTERIOR);\n    bool next_interior = next->flags & INTERIOR;\n    \n    // if it is, then transition\n    if (this_exterior && next_interior) return next;\n    \n    return nullptr;\n}\n\n/// Checks if point is inside the worldcell.\nbool WorldCell::IsInside(vec3 point) {\n    for (auto transition : volume) {\n        if (transition->IsInside(point)) return true;\n    }\n    \n    return false;\n}\n\n/// Links a worldcell.\n/// This method will take the volume transitions assigned to the worldcell in\n/// other pointer parameter and assign them as transitions to the given cell.\nvoid WorldCell::Link(WorldCell* other) {\n    if (!other) {\n        Log(Severity::WARNING, System::CORE, \"Can't link '{}' cell to a nullptr\", name);\n        return;\n    }\n    \n    for (auto transition : other->GetVolume()) {\n        this->transitions.push_back(transition);\n    }\n}\n\n/// Adds an entity to the worldcell.\nvoid WorldCell::Add(Entity* entity) {\n    if (!entity) {\n        Log(Severity::WARNING, System::CORE, \"Can't put a nullptr entity in '{}' cell\", name);\n        return;\n    }\n\n    /* the reason why we check for if the entity is nullptr is because sometimes\n     * the user might do something like cell->Add(Entity::Find(\"non-existing\"));\n     * and if an entity can't be found, the Entity::Find() function returns a\n     * nullptr, so it is useful to check for that.\n     */\n\n    if (entity->cell == this) {\n        Log(Severity::WARNING, System::CORE, \"Can't put entity '{}' into '{}' cell, it is already in it\", name, entity->name);\n        return;\n    }\n    \n    if (entity->GetCell()) {\n        entity->GetCell()->Remove(entity);\n    }\n    \n    entities.push_back(entity);\n    \n    entity->cell = this;\n\n    if (flags & LOADED && !entity->IsLoaded() && entity->IsAutoLoad()) {\n        entity->Load();\n    }\n\n    if (!(flags & LOADED) && entity->IsLoaded() && entity->IsAutoLoad()) {\n        entity->Unload();\n    }\n}\n\n/// Removes an entity from the worldcell.\nvoid WorldCell::Remove(Entity* entity) {\n    if (!entity) {\n        Log(Severity::WARNING, System::CORE, \"Can't remove a nullptr entity from '{}' cell\", name);\n    }\n    \n    if (entity->cell == this) {\n        entity->cell = nullptr;\n    }\n    \n    auto ptr = std::find(entities.begin(), entities.end(), entity);\n    if (ptr != entities.end()) {\n        entities.erase(ptr);\n    } else {\n        if (entity->name) {\n            Log(Severity::WARNING, System::CORE, \"Can't remove '{}' from '{}' cell, it is not in it\", entity->name, name);\n        } else {\n            Log(Severity::WARNING, System::CORE, \"Can't remove {} from '{}' cell, it is not in it\", entity->id, name);\n        }\n    }\n}\n\n/// Loads worldcell data from disk.\nvoid WorldCell::LoadFromDisk() {\n    char path[PATH_LIMIT] = \"data/worldcells/\";\n    strcat(path, name);\n    strcat(path, \".cell\");\n    \n    File file(path, File::READ | File::PAUSE_LINE);\n\n    if (!file.is_open()) {\n        Log(Severity::ERROR, System::CORE, \"Worldcell file{} not found!\", path);\n        return;\n    }\n\n    if (file.read_name() != \"CELLv3\") {\n        Log(Severity::ERROR, System::CORE, \"Cell format unrecognized in {}!\", path);\n        return;\n    }\n    \n    \n    SetFlag(LOADED_FROM_DISK, true);\n    \n    file.read_name(); // skip over cell name in file\n    \n    // wait why does the cell need a name inside the file\n    // the file already has a name\n    // also what happens when it doens't match???\n    // TODO: fix\n    \n    SetFlag(INTERIOR, file.read_uint32());\n    SetFlag(INTERIOR_LIGHTING, file.read_uint32());\n    \n    file.skip_linebreak();\n    \n    while (file.is_continue()) {\n        name_t entry_type = file.read_name();\n        \n        if (entry_type == \"transition\") {\n            name_t transition_name = file.read_name();\n            name_t transition_into = file.read_name();\n            \n            WorldCell* into_ptr = WorldCell::Find(transition_into);\n            \n            if (!into_ptr) {\n                Log(Severity::WARNING, System::CORE, \"Transition into cell '{}' defined in {}, but can't find said cell\", transition_into, path);\n            }\n            \n            Transition* transition = Transition::Make(transition_name, into_ptr);\n            \n            this->Add(transition);\n            \n            size_t point_count = file.read_int32();\n\n            for (size_t i = 0; i < point_count; i++) {\n                transition->AddPoint({\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                });\n            }\n            \n            transition->GeneratePlanes();\n            \n            file.skip_linebreak();\n            continue;\n        }\n        \n        if (entry_type == \"signal\") {\n            id_t owner_id = file.read_uint32();\n            Entity* owner = Entity::Find(owner_id);\n            \n            if (!owner) {\n                Log(Severity::WARNING, System::CORE, \"Cell '{}' defines a signal for entity {} but can't find it\", name, owner_id);\n                file.skip_linebreak();\n                continue;\n            }\n            \n            Signal signal;\n            \n            signal.type = Signal::GetType(file.read_name());\n            signal.receiver = file.read_name();\n            signal.delay = file.read_float32();\n            signal.limit = file.read_int32();\n            signal.message_type = Message::GetType(file.read_name());\n            \n            name_t data_type = file.read_name();\n            if (!data_type) {\n                signal.data = nullptr;\n            } else {\n                Value* val = new Value(); // this might cause a memory leak, but we don't care\n                \n                if (data_type == \"int\") {\n                    *val = file.read_int32();\n                } else if (data_type == \"float\") {\n                    *val = file.read_float32();\n                } else if (data_type == \"name\") {\n                    *val = file.read_name();\n                } else if (data_type == \"vec3\") {\n                    *val = vec3 {file.read_float32(), file.read_float32(), file.read_float32()};\n                }  else {\n                    *val = file.read_name();\n                    Log(Severity::WARNING, System::CORE, \"Unknown data type for signal: \", data_type);\n                }\n                \n                signal.data = val;\n            }\n            \n            if (!owner->signals) {\n                owner->signals = new SignalTable;\n            }\n            \n            owner->signals->Add(signal);\n            \n            file.skip_linebreak();\n            continue;\n        }\n        \n        \n        if (entry_type == \"path\" || entry_type == \"navmesh\" || entry_type == \"group\" || entry_type == \"version\") {\n            file.skip_linebreak();\n            continue;\n        }\n\n        Entity* entity = Entity::Make(entry_type, &file);\n        \n        if (!entity) {\n            Log(Severity::WARNING, System::CORE, \"Entity type '{}' not recognized; in file {}\", entry_type, path);\n        } else {\n            this->Add(entity);\n        }\n        \n        file.skip_linebreak();\n    }\n}\n\n}"
  },
  {
    "path": "src/framework/worldcell.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_FRAMEWORK_WORLDCELL_H\n#define TRAM_SDK_FRAMEWORK_WORLDCELL_H\n\n#include <vector>\n\n#include <framework/uid.h>\n#include <framework/math.h>\n\nnamespace tram {\n\nclass Entity;\nclass Transition;\n\nclass WorldCell {\npublic:\n    WorldCell(name_t name) { this->name = name; }\n\n    inline name_t GetName() { return name; }\n\n    inline bool IsLoaded() { return flags & LOADED; }\n    inline bool IsInterior() { return flags & INTERIOR; }\n    inline bool HasInteriorLighting() { return flags & INTERIOR_LIGHTING; }\n    inline bool IsDebugDraw() { return flags & DEBUG_DRAW; }\n    inline bool HasAutomaticLoading() { return flags & AUTOMATIC_LOADING; }\n    \n    inline void SetInterior(bool is) { SetFlag(INTERIOR, is); }\n    inline void SetInteriorLights(bool is) { SetFlag(INTERIOR_LIGHTING, is); }\n    inline void SetDebugDraw(bool is) { SetFlag(DEBUG_DRAW, is); }\n    inline void SetAutomaticLoading(bool is) { SetFlag(AUTOMATIC_LOADING, is); }\n    \n    void Load();\n    void Unload();\n\n    void LoadFromDisk();\n\n    void Add(Entity* entity);\n    void Remove(Entity* entity);\n    \n    size_t GetEntityCount() { return entities.size(); }\n\n    void Add(Transition* transition);\n    \n    void Link(WorldCell* other);\n    \n    WorldCell* FindTransition(vec3 point);\n    \n    inline const std::vector<Entity*>& GetEntities() { return entities; }\n    inline const std::vector<Transition*>& GetTransitions() { return transitions; }\n    inline const std::vector<Transition*>& GetVolume() { return volume; }\n    \n    \n    bool IsInside(vec3 point);\n\n    static WorldCell* Find (vec3 point);\n    static WorldCell* Find (name_t name);\n    static WorldCell* Make (name_t name);\n    \nprotected:\n    enum {\n        LOADED = 1,\n        INTERIOR = 2,\n        INTERIOR_LIGHTING = 4,\n        DEBUG_DRAW = 8,\n        AUTOMATIC_LOADING = 16,\n        LOADED_FROM_DISK = 32\n    };\n\n    inline void SetFlag(uint32_t flag, bool value) { flags = value ? flags | flag : flags & ~flag; };\n\n    name_t name;\n    uint32_t flags = AUTOMATIC_LOADING;\n    std::vector<Entity*> entities;\n    std::vector<Transition*> transitions;\n    std::vector<Transition*> volume;\n};\n\n}\n\n#endif // TRAM_SDK_FRAMEWORK_WORLDCELL_H"
  },
  {
    "path": "src/info.dox",
    "content": "/**\n * @mainpage\n * \n * This is the C++ API documentation portal for the Tramway SDK.\n * \n * @par\n * For a general overview, take a look at our main documentation page:\n * https://racenis.github.io/tram-sdk/documentation.html\n * \n * \n * \n * \n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n */\n \n\n"
  },
  {
    "path": "src/main.cpp",
    "content": "// This file is mostly for testing.\n// If you're using this as a library, then you need to implement your own main() function.\n\n#include <iostream>\n\n#include <framework/core.h>\n#include <framework/async.h>\n#include <framework/ui.h>\n#include <framework/entity.h>\n#include <framework/worldcell.h>\n#include <framework/loader.h>\n#include <framework/event.h>\n#include <framework/message.h>\n#include <framework/language.h>\n#include <framework/script.h>\n#include <framework/path.h>\n#include <framework/stats.h>\n#include <physics/physics.h>\n#include <audio/audio.h>\n\n#include <framework/gui.h>\n\n#include <framework/system.h>\n#include <framework/logging.h>\n#include <framework/settings.h>\n\n#include <entities/crate.h>\n#include <entities/staticworldobject.h>\n#include <entities/light.h>\n#include <entities/player.h>\n#include <entities/sound.h>\n#include <entities/decoration.h>\n#include <entities/trigger.h>\n\n#include <components/render.h>\n#include <components/animation.h>\n#include <components/light.h>\n\n#include <components/sprite.h>\n#include <components/particle.h>\n#include <components/decal.h>\n#include <components/audio.h>\n\n#include <components/controller.h>\n\n#include <components/trigger.h>\n#include <components/player.h>\n\n#include <extensions/menu/menu.h>\n#include <extensions/camera/camera.h>\n#include <extensions/camera/firstperson.h>\n\n#include <extensions/kitchensink/kitchensink.h>\n#include <extensions/kitchensink/entities.h>\n#include <extensions/kitchensink/inventory.h>\n#include <extensions/kitchensink/soundtable.h>\n#include <extensions/kitchensink/probe.h>\n#include <extensions/kitchensink/imageassembly.h>\n#include <extensions/scripting/lua.h>\n\n#include <extensions/kitchensink/dialog.h>\n#include <extensions/kitchensink/quest.h>\n#include <extensions/kitchensink/menu.h>\n\n#include <render/api.h>\n#include <render/scene.h>\n#include <render/light.h>\n\n#include <platform/platform.h>\n#include <platform/api.h>\n#include <platform/image.h>\n\n#include <render/raytrace/raytrace.h>\n\nusing namespace tram;\nusing namespace tram::Render;\nusing namespace tram::UI;\n\nExt::Camera::FirstPersonCamera* camera = nullptr;\nPlayer* player = nullptr;\nLightComponent* lit = nullptr;\nSprite* tolet_sprite = nullptr;\nSpriteComponent* tolet_spinner = nullptr;\nParticleComponent* tolet_emitter = nullptr;\nDecalComponent* tolet_sprayer = nullptr;\nAudio::Sound* derp = nullptr;\nAudio::Sound* eerp = nullptr;\nAudioComponent* derp_player = nullptr;\nRenderComponent* binguser = nullptr;\nRenderComponent* monguser = nullptr;\nRenderComponent* dingbat = nullptr;\nAnimationComponent* monguser_armature = nullptr;\n\nbool record = false;\n\nPathFollower* follower = nullptr;\nvec3 initial_follower = {0.1f, 1.0f, 1.5f};\n\nComponent<RenderComponent> chamberpot;\n\nvoid mainloop();\n\nint main(int argc, const char** argv) {\n    Settings::Parse(argv, argc);\n    \n    // register the entity types, so that they can be loaded from level files\n    Light::Register();\n    Crate::Register();\n    Sound::Register();\n    Decoration::Register();\n    Trigger::Register();\n    StaticWorldObject::Register();\n    Ext::Kitchensink::Button::Register();\n\n    Platform::Window::SetScale(3);\n\n    Core::Init();           // core init should always be first\n    UI::Init();\n    Physics::Init();        // optional, but needed for StaticWorldObject, Crate and Player entities\n    Render::Init();         // render init must always come after the ui inited\n    Async::Init();          // async init must always come after render init\n    Audio::Init();\n    GUI::Init();\n\n    Ext::Menu::Init();\n    Ext::Camera::Init();\n    \n    Ext::Scripting::Lua::Init();\n\n    Script::Init();\n    \n    Script::LoadScript(\"init\");\n\n    // load all of the language strings\n    Language::Load(\"lv\");\n\n    // texture info stuff\n    Material::LoadMaterialInfo(\"material\");\n\n    Animation::Find(UID(\"mongus-run\"))->LoadFromDisk();\n    Animation::Find(UID(\"mongus-jump\"))->LoadFromDisk();\n    \n    // data test files for kitchensink framework\n    Ext::Kitchensink::DialogTopic::LoadFromDisk(\"dialogs\");\n    Ext::Kitchensink::Quest::LoadFromDisk(\"quests\");\n    Ext::Kitchensink::Inventory::LoadFromDisk(\"items\");\n    \n    Ext::Kitchensink::RegisterRenderEnvironmentMapShortcut();\n\n    Render::API::SetScreenClear({0.0f, 0.0f, 1.0f}, true);\n\n    // loading the demo level\n    LightGraph::Find(\"demo_mov\")->Load();\n    WorldCell::Make(UID(\"demo_mov\"))->LoadFromDisk();\n    \n\n    // create the player entity\n    player = new Player;\n    player->SetLocation(vec3(0.0f, (1.85f/2.0f) + 0.15f, 0.0f));\n    player->Load();\n    \n    // have world streaming control track player\n    Loader::Track(player);\n    \n    player->controllercomponent->SetFriction(0.82f);\n    player->controllercomponent->SetWalkSpeed(0.2f);\n    player->controllercomponent->SetRunSpeed(0.3f);\n    \n    camera = new Ext::Camera::FirstPersonCamera;\n    camera->SetMouselook(true);\n    camera->SetRotateFollowing(true);\n    camera->SetFollowingOffset({0.0f, 0.5f, 0.0f});\n    camera->SetFollowing(player);\n    \n    camera->SetBobbingDistance(0.1f);\n    camera->SetBobbingTilt(0.1f);\n\n    camera->SetActive();\n    \n    // load up the path that mongus will run around\n    Path::Find(\"test\")->LoadFromDisk();\n    follower = new PathFollower(Path::Find(\"test\"), initial_follower, PATH_LINEAR);\n    \n    // initialize 400 chamberpots to test frustrum culling\n    /*for (int x = 0; x < 20; x++) {\n        for (int y = 0; y < 20; y++) {\n            RenderComponent* pot = PoolProxy<RenderComponent>::New();\n            pot->SetModel(\"chamberpot2\");\n            pot->SetScale({0.2, 0.2, 0.2});\n            pot->SetLocation({10 - x, 25, 10 - y});\n            pot->Init();\n        }\n    }*/\n    \n    auto teapotmat = Material::Find(\"Material.01\");\n    //auto teapotmat = Material::Find(\"dev/scaffold32x32\");\n    teapotmat->Load();\n    Render::API::SetMaterialAssemblyIndex(teapotmat->GetMaterial(), 1);\n    //Render::API::SetUseAssembly(true);\n    //AssemblyLayers GetAssemblyLayers();\n    \n    tolet_sprite = new Sprite(UID(\"poland\"));\n    \n    tolet_spinner = PoolProxy<SpriteComponent>::New();\n    tolet_spinner->SetSprite(tolet_sprite);\n    tolet_spinner->UpdateLocation(vec3(3.0f, 1.2f, -1.0f));\n    tolet_spinner->Init();\n    tolet_spinner->Play();\n    \n    tolet_emitter = PoolProxy<ParticleComponent>::New();\n    tolet_emitter->SetSprite(tolet_sprite);\n    tolet_emitter->UpdateLocation(vec3(0.0f, 1.2f, -7.0f));\n    tolet_emitter->Init();\n    \n    tolet_sprayer = PoolProxy<DecalComponent>::New();\n    tolet_sprayer->SetSprite(tolet_sprite);\n    tolet_sprayer->Init();\n    \n    derp = Audio::Sound::Find(UID(\"apelsin\"));\n    //eerp = Audio::Sound::Find(UID(\"dekpunkta\"));\n    derp->Load();\n    //eerp->Load();\n    \n    derp_player = PoolProxy<AudioComponent>::New();\n    derp_player->SetLocation(vec3(0.0f, 1.0f, 0.0f));\n    derp_player->SetSound(\"apelsin\");\n    derp_player->SetRepeating(true);\n    derp_player->Init();\n    \n    //derp_player->Play();\n    \n    dingbat = PoolProxy<RenderComponent>::New();\n    dingbat->SetModel(\"sphere\");\n    dingbat->SetScale({0.2f, 0.2f, 0.2f});\n    dingbat->SetDirectionaLight(false);\n    //dingbat->Init();\n    \n    chamberpot.make();\n    chamberpot->SetModel(\"chamberpot2\");\n    chamberpot->SetScale({0.2, 0.2, 0.2});\n    chamberpot->Init();\n    \n    Event::AddListener(Event::TICK, [](Event& event) {\n        chamberpot->SetLocation({0, 1, 0});\n        //chamberpot->SetLocation({-10, 3, 0});\n        chamberpot->SetRotation(quat(vec3{sinf(GetTickTime() / 3.0) / 3.0, GetTickTime(), cosf(GetTickTime() / 2.0) / 5.0}));\n        chamberpot->SetEnvironmentMap(Render::LightGraph::LookupEnvironmentMap({0, 1, 0}));\n    });\n    \n    \n    Event::AddListener(Event::KEYPRESS, [](Event& event) {\n        if (event.subtype != KEY_ACTION_ACTIVATE) return;\n        \n        vec3 start = Render::GetViewPosition();\n        vec3 direction = Render::GetViewRotation() * DIRECTION_FORWARD;\n        \n        //auto result = Physics::Raycast(start, start + 4.0f * direction, -1 ^ Physics::COLL_TRIGGER);\n        auto result = Physics::Raycast(start, start + 4.0f * direction, -1);\n        \n        if (result.collider) {\n            Message::Send({Message::ACTIVATE, 0, result.collider->GetParent()->GetID(), 0});\n        }\n    });\n    \n    Event::AddListener(Event::KEYDOWN, [](Event& event) {\n        if (event.subtype != KEY_ACTION_ACTIVATE) return;\n        \n        vec3 start = Render::GetViewPosition();\n        vec3 direction = Render::GetViewRotation() * DIRECTION_FORWARD;\n        \n        auto result = Physics::Raycast(start, start + 2.0f * direction, -1 ^ Physics::COLL_TRIGGER);\n        \n        //AddLineMarker(result.point, COLOR_CYAN);\n        \n        if (result.collider) {\n            Message::Send({Message::ACTIVATE_ONCE, 0, result.collider->GetParent()->GetID(), 0});\n        }\n    });\n    \n    Event::AddListener(Event::TICK, [](Event& event) {\n        vec3 start = Render::GetViewPosition();\n        vec3 direction = Render::GetViewRotation() * DIRECTION_FORWARD;\n        \n        auto result = Physics::Raycast(start, start + 2.0f * direction, -1 ^ Physics::COLL_TRIGGER);\n\n        if (result.collider) {\n            Message::Send({Message::SELECT, 0, result.collider->GetParent()->GetID(), 0});\n        }\n    });\n    \n    Event::AddListener(Event::SELECTED, [](Event& event) {\n        //AddLineMarker(Entity::Find(event.poster)->GetLocation(), COLOR_PINK);\n    });\n\n    Event::AddListener(Event::LOOK_AT, [](Event& event) {\n        //AddLine(vec3(0, 0, 0), vec3(0, 0, 0) + (quat)*(Value*)event.data * DIRECTION_FORWARD, COLOR_CYAN);\n    });\n        \n    \n    UI::BindKeyboardKey(UI::KEY_T, [](){\n        follower->Advance(0.01f);\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_R, [](){\n        //record = !record;\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_O, [](){\n        Ext::Menu::Menu* menu = new Ext::Kitchensink::KitchensinkMenuList;\n        Ext::Menu::Menu::Push(menu);\n        UI::SetInputState(UI::STATE_MENU_OPEN);\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_L, [](){\n        Log(Severity::ERROR, System::MISC, \"Key L was pressed and that now is an error.\");\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_KP_ADD, [](){\n        Render::API::SetInteractiveMode(!Render::API::IsInteractiveMode());\n    });\n    \n    \n    UI::BindKeyboardKey(UI::KEY_UP, [](){\n        Core::SetPlatformTime(true);\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_DOWN, [](){\n        Core::SetPlatformTime(false);\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_LEFT, [](){\n        Core::AddTime(-1.0f / 30.0f);\n    });\n    \n    UI::BindKeyboardKey(UI::KEY_RIGHT, [](){\n        Core::AddTime(1.0f / 30.0f);\n    });\n    \n    \n#ifdef __EMSCRIPTEN__\n    UI::SetWebMainLoop(mainloop);\n#else\n    while(!UI::ShouldExit()){\n        mainloop();\n    }\n\n    Async::Yeet();\n    Ext::Scripting::Lua::Uninit();\n    Audio::Uninit();\n    UI::Uninit();\n#endif\n}\n\n\nvoid mainloop() {\n    Core::Update();\n    UI::Update();\n    \n    // this renders debug text at the origin\n    //Render::AddText({0, 0, 0}, \"HELLOOO\");\n    \n    //vec3 ff = LightGraph::LookupHarmonic(Render::GetViewPosition(), -1).l00;\n    //Render::AddText(20, 20, std::to_string(ff.x).c_str(), ff);\n    //Render::AddText(20, 40, std::to_string(ff.y).c_str(), ff);\n    //Render::AddText(20, 60, std::to_string(ff.z).c_str(), ff);\n    \n    if (API::IsFinishedRendering()) {\n        //API::SetInteractiveMode(true);\n        \n        Kitchensink::ImageAssembly::Add(API::GetAssemblyLayers());\n        Kitchensink::ImageAssembly::Save(\"assembly.image\");\n        Kitchensink::ImageAssembly::Reset();\n    }\n    \n    dingbat->SetLocation(Render::GetViewPosition() + Render::GetViewRotation() * DIRECTION_FORWARD);\n    //tolet_sprayer->SetLocation(Render::GetViewPosition() + Render::GetViewRotation() * DIRECTION_FORWARD);\n    //tolet_sprayer->SetRotation(Render::GetViewRotation());\n    //tolet_sprayer->SetFrame((GetTick() >> 2) % 24);\n    //tolet_sprayer->SetFrame(GetTick() % 24);\n    //tolet_sprayer->SetFrame(0);\n    \n    // have mongus run around on a path\n    follower->Advance(GetDeltaTime());\n    \n    Entity* mongus = Entity::Find(\"mongus\");\n    if (mongus && GetTick() > 120) {\n        mongus->SetLocation(follower->GetPosition() - 0.7f * DIRECTION_UP);\n        mongus->SetRotation(glm::quatLookAt(follower->GetTangent(), DIRECTION_UP));\n    }\n    \n    // change FOV with plus and minus\n    static float fov = 60.0f;\n    if (UI::PollKeyboardKey(UI::KEY_EQUAL)) {\n        fov += 1.0f;\n        SetViewFov(fov);\n        std::cout << \"fov: \" << fov << std::endl;\n    }\n    if (UI::PollKeyboardKey(UI::KEY_MINUS)) {\n        fov -= 1.0f;\n        SetViewFov(fov);\n        std::cout << \"fov: \" << fov << std::endl;\n    }\n    \n    // animate camera when strafing\n    if (UI::PollKeyboardKey(UI::KEY_A)) {\n        camera->SetTilt(0.1f);\n    } else if (UI::PollKeyboardKey(UI::KEY_D)) {\n        camera->SetTilt(-0.1f);\n    } else {\n        camera->SetTilt(0.0f);\n    }\n    \n    // make camera bob when walking\n    if (UI::PollKeyboardKey(UI::KEY_W) || UI::PollKeyboardKey(UI::KEY_S) ||\n        UI::PollKeyboardKey(UI::KEY_A) || UI::PollKeyboardKey(UI::KEY_D)) {\n        camera->SetBobbing(1.0f);\n    } else {\n        camera->SetBobbing(0.0f);\n    }\n    \n    Ext::Camera::Update();\n    \n    // draw default menus\n    GUI::Begin();\n        Ext::Menu::Update();\n    GUI::End();\n    \n    // draw frame numbers at the top of the screen\n    std::string tickstr = std::to_string(GetTick());\n    std::string tickstr2 = std::to_string(GetTickTime());\n\n    GUI::Begin();\n    GUI::PushFrameRelative(GUI::FRAME_TOP_INV, 20);\n        GUI::SetFont(Ext::Menu::FONT_PIXELART);\n        GUI::SetColor(COLOR_WHITE);\n        \n            //GUI::Text(tickstr.c_str(), GUI::TEXT_CENTER); GUI::NewLine();\n            //GUI::Text(tickstr2.c_str(), GUI::TEXT_CENTER); GUI::NewLine();\n            \n        GUI::RestoreColor();\n        GUI::RestoreFont();\n    GUI::PopFrame();\n    GUI::End();\n    GUI::Update();\n    \n    // if recording, take screenshots and save them as a sequence of images\n    if (record && GetTick() % 4 == 0) {\n        char* buffer = (char*)malloc(GetScreenWidth() * GetScreenHeight() * 3);\n        std::string filename = std::string(\"screenshot\") + std::to_string(GetTick()) + \".png\";\n        Render::API::GetScreen(buffer, GetScreenWidth(), GetScreenHeight());\n        Platform::SaveImageToDisk(filename.c_str(), GetScreenWidth(), GetScreenHeight(), buffer);\n        free(buffer);\n    }\n    \n    Audio::Update();\n    \n    Async::LoadResourcesFromDisk();\n    Async::LoadResourcesFromMemory();\n    Async::FinishResources();\n\n    Event::Dispatch();\n    Message::Dispatch();\n    \n    Entity::Update();\n    \n    Loader::Update();\n    \n    if (!Async::GetWaitingResources()) ControllerComponent::Update();\n    AnimationComponent::Update();\n    //RenderComponent::DrawAllAABB();\n\n    Physics::Update();\n\n    Render::Render();\n\n    Stats::Collate();\n\n    UI::EndFrame();\n}\n"
  },
  {
    "path": "src/physics/api.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PHYSICS_API_H\n#define TRAM_SDK_PHYSICS_API_H\n\n#include <physics/physics.h>\n#include <physics/collisionshape.h>\n\n/**\n * @namespace tram::Physics::API\n * \n * Physics backend API.\n */\n\nnamespace tram::Physics::API {\n\nstruct CollisionShapeTransform {\n    CollisionShape shape;\n    vec3 position;\n    quat rotation;\n};\n\nstruct ObjectCollision {\n    vec3 point;\n    vec3 normal;\n    float distance;\n};\n    \ntypedef std::pair<vec3, quat>(*get_trf_callback)(void*);\ntypedef void(*set_trf_callback)(void*, std::pair<vec3, quat>);\ntypedef void(*col_callback)(void*, void*, ObjectCollision);\n\ncollisionshape_t MakeCollisionShape(CollisionShapeTransform* shapes, size_t shape_count);\ncollisionshape_t MakeCollisionShape(CollisionShape shape);\nvoid YeetCollisionShape(collisionshape_t shape);\n\nrigidbody_t MakeRigidbody(collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void* data);\nvoid YeetRigidbody(rigidbody_t rigidbody);\nvoid SetRigidbodyTransformCallback(rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void* data);\nvoid SetRigidbodyCollisionCallback(rigidbody_t rigidbody, col_callback callback, void* data);\nvoid SetRigidbodyCollisionMask(rigidbody_t rigidbody, uint32_t mask);\nvoid SetRigidbodyCollisionGroup(rigidbody_t rigidbody, uint32_t group);\nvoid SetRigidbodyLocation(rigidbody_t rigidbody, vec3 location);\nvoid SetRigidbodyRotation(rigidbody_t rigidbody, quat rotation);\nvoid SetRigidbodyMass(rigidbody_t rigidbody, float mass);\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction);\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction, vec3 local);\nvoid SpinRigidbody(rigidbody_t rigidbody, vec3 direction);\nvoid SetRigidbodyDebugDrawing(rigidbody_t rigidbody, bool drawing);\nvoid SetRigidbodyKinematic(rigidbody_t rigidbody, bool kinematic);\nvoid SetRigidbodyAngularFactor(rigidbody_t rigidbody, vec3 factor);\nvoid SetRigidbodyLinearFactor(rigidbody_t rigidbody, vec3 factor);\nvoid SetRigidbodyVelocity(rigidbody_t rigidbody, vec3 velocity);\nvec3 GetRigidbodyVelocity(rigidbody_t rigidbody);\nvoid AwakenRigidbody(rigidbody_t rigidbody);\nvoid SleepRigidbody(rigidbody_t rigidbody);\nvoid DisableRigidbodyDeactivation(rigidbody_t rigidbody);\n\ntrigger_t MakeTrigger(collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation);\nvoid YeetTrigger(trigger_t);\nvoid SetTriggerCollisionCallback(trigger_t rigidbody, col_callback callback, void* data);\nvoid SetTriggerCollisionMask(trigger_t rigidbody, uint32_t mask);\nvoid SetTriggerCollisionGroup(trigger_t rigidbody, uint32_t group);\nvoid SetTriggerLocation(trigger_t rigidbody, vec3 location);\nvoid SetTriggerRotation(trigger_t rigidbody, quat location);\n\nstd::pair<ObjectCollision, void*> Raycast(vec3 from, vec3 to, uint32_t collision_mask);\nstd::vector<std::pair<ObjectCollision, void*>> Shapecast(CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask);\n\nvoid Init();\nvoid StepPhysics();\nvoid DrawDebug();\nvoid DrawDebug(bool);\n\n}\n\n#endif // TRAM_SDK_PHYSICS_API_H"
  },
  {
    "path": "src/physics/bullet/actions.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef PHYSICS_BULLET_ACTIONS_H\n#define PHYSICS_BULLET_ACTIONS_H\n\n#include <btBulletDynamicsCommon.h>\n#include <components/physics.h>\n\nnamespace tram::Physics {\n    /// @todo finish!!!\n    class PathAction : public btActionInterface {\n    public:\n        PathAction(PhysicsComponent* physComponent){\n            physcomp = physComponent;\n        }\n\n        virtual void updateAction(btCollisionWorld* collisionWorld, btScalar deltaTimeStep);\n\n        virtual void debugDraw(btIDebugDraw* debugDrawer){}\n\n    private:\n        PhysicsComponent* physcomp = nullptr;\n    };\n}\n\n#endif // PHYSICS_BULLET_ACTIONS_H"
  },
  {
    "path": "src/physics/bullet/bullet.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <physics/bullet/debugdrawer.h>\n\n#include <physics/api.h>\n\n#include <components/trigger.h>\n\n#include <config.h>\n\n#include <btBulletDynamicsCommon.h>\n\nnamespace tram::Physics::API {\n\nstatic btDiscreteDynamicsWorld* dynamics_world = nullptr;\n\nenum UserIndex : int {\n    USERINDEX_RIGIDBODY = 3,\n    USERINDEX_TRIGGER = 4,\n};\n\nclass CallbackMotionState : public btMotionState {\npublic:\n    CallbackMotionState(vec3 position, quat rotation, get_trf_callback get_callback, set_trf_callback set_callback, void* data) {\n        this->position = position;\n        this->rotation = rotation;\n        this->get_transform_callback = get_callback;\n        this->set_transform_callback = set_callback;\n        this->data_pointer = data;\n    }\n    virtual ~CallbackMotionState() {}\n\n    virtual void getWorldTransform (btTransform& world_transform) const {\n        vec3 position = this->position;\n        quat rotation = this->rotation;\n        \n        if (get_transform_callback) {\n            std::tie(position, rotation) = get_transform_callback(data_pointer);\n        }\n\n        btVector3 transform_translation;\n        btQuaternion transform_rotation;\n        \n        transform_translation.setX(position.x);\n        transform_translation.setY(position.y);\n        transform_translation.setZ(position.z);\n        \n        transform_rotation.setX(rotation.x);\n        transform_rotation.setY(rotation.y);\n        transform_rotation.setZ(rotation.z);\n        transform_rotation.setW(rotation.w);\n        \n        btTransform transform;\n        transform.setIdentity();\n        transform.setRotation(transform_rotation);\n        transform.setOrigin(transform_translation);\n\n        world_transform = transform;\n    }\n\n    virtual void setWorldTransform (const btTransform& world_transform) {\n        btQuaternion transform_rotation = world_transform.getRotation();\n        btVector3 transform_translation = world_transform.getOrigin();\n\n        position.x = transform_translation.getX();\n        position.y = transform_translation.getY();\n        position.z = transform_translation.getZ();\n        \n        rotation.x = transform_rotation.getX();\n        rotation.y = transform_rotation.getY();\n        rotation.z = transform_rotation.getZ();\n        rotation.w = transform_rotation.getW();\n\n        if (set_transform_callback) {\n            set_transform_callback(data_pointer, {position, rotation});\n        }\n    }\n\n    void SetTransformCallback(std::pair<vec3, quat>(*get_transform_callback)(void*), void(*set_transform_callback)(void*, std::pair<vec3, quat>), void* data) {\n        this->get_transform_callback = get_transform_callback;\n        this->set_transform_callback = set_transform_callback;\n        this->data_pointer = data;\n    }\n\nprotected:\n    std::pair<vec3, quat>(*get_transform_callback)(void*) = nullptr;\n    void(*set_transform_callback)(void*, std::pair<vec3, quat>) = nullptr;\n    \n    vec3 position;\n    quat rotation;\n    \n    void* data_pointer = nullptr;\n};\n\nenum MetadataType {\n    METADATA_RIGIDBODY,\n    METADATA_TRIGGER,\n};\n\nstruct RigidbodyMetadata {\n    uint32_t collision_mask = -1;\n    uint32_t collision_group = -1;\n    uint32_t collision_flags = 0;\n    \n    CallbackMotionState* motion_state = nullptr;\n    \n    MetadataType type;\n    \n    col_callback collision_callback = nullptr;\n    void* collision_data = nullptr;\n};\n\nPool<RigidbodyMetadata> rigidbody_metadata_pool(\"RigidbodyMetadata pool\", RIGIDBODY_LIMIT);\n    \nstatic btCollisionShape* MakeBulletShape(CollisionShape shape) {\n    switch (shape.type) {\n        case SHAPE_SPHERE:\n            return new btSphereShape(shape.radius);\n        case SHAPE_CYLINDER:\n            return new btCylinderShape(btVector3(shape.radius_x, shape.height, shape.radius_x));\n        case SHAPE_CAPSULE:\n            return new btCapsuleShape(shape.radius, shape.height);\n        case SHAPE_BOX:\n            return new btBoxShape(btVector3(shape.extent_x, shape.extent_y, shape.extent_z));\n        case SHAPE_HULL: {\n            btConvexHullShape* hull  = new btConvexHullShape();\n            for (size_t i = 0; i < shape.hull_size; i++) {\n                hull->addPoint(btVector3(shape.hull_points[i].x, shape.hull_points[i].y, shape.hull_points[i].z));\n            }\n            return hull;\n        } break;\n        case SHAPE_MESH: {\n            btTriangleMesh* mesh = new btTriangleMesh();\n            \n            for (size_t i = 0; i < shape.mesh_size; i++) {\n                btVector3 p0(shape.mesh_triangles[i].p0.x,\n                             shape.mesh_triangles[i].p0.y,\n                             shape.mesh_triangles[i].p0.z);\n                btVector3 p1(shape.mesh_triangles[i].p1.x,\n                             shape.mesh_triangles[i].p1.y,\n                             shape.mesh_triangles[i].p1.z);\n                btVector3 p2(shape.mesh_triangles[i].p2.x,\n                             shape.mesh_triangles[i].p2.y,\n                             shape.mesh_triangles[i].p2.z);\n                \n                mesh->addTriangle(p0, p1, p2);\n            }\n\n            return new btBvhTriangleMeshShape(mesh, true, true);\n        } break;\n        default:\n            return nullptr;\n    }\n}\n\ncollisionshape_t MakeCollisionShape(CollisionShapeTransform* shapes, size_t shape_count) {\n    if (!shapes || shape_count < 1) {\n        return {new btBoxShape(btVector3(0.125f, 0.125f, 0.125f))};\n    }\n    \n    btCompoundShape* shape = new btCompoundShape(true);\n    \n    for (size_t i = 0; i < shape_count; i++) {\n        btTransform transform;\n        btQuaternion rotation;\n\n        transform.setIdentity();\n        transform.setOrigin(btVector3(shapes[i].position.x, shapes[i].position.y, shapes[i].position.z));\n        rotation.setX(shapes[i].rotation.x);\n        rotation.setY(shapes[i].rotation.y);\n        rotation.setZ(shapes[i].rotation.z);\n        rotation.setW(shapes[i].rotation.w);\n        transform.setRotation(rotation);\n        \n        shape->addChildShape(transform, MakeBulletShape(shapes[i].shape));\n    }\n    \n    return {shape};\n}\n\ncollisionshape_t MakeCollisionShape(CollisionShape shape) {\n    return {MakeBulletShape(shape)};\n}\n\nvoid YeetCollisionShape(collisionshape_t shape) {\n    delete shape.bt_shape;\n}\n\n\nrigidbody_t MakeRigidbody(collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void* data) {\n    RigidbodyMetadata* metadata = rigidbody_metadata_pool.AddNew();\n    \n    if (mass == 0.0f) {\n        metadata->collision_flags |= btCollisionObject::CF_STATIC_OBJECT;\n    }\n    \n    metadata->type = METADATA_RIGIDBODY;\n    metadata->collision_mask = mask;\n    metadata->collision_group = group;\n    metadata->motion_state = new CallbackMotionState(position, rotation, get_callback, set_callback, data);\n    \n    btScalar rigidbody_mass = mass;\n    btVector3 rigidbody_inertia (0.0f, 0.0f, 0.0f);\n    shape.bt_shape->calculateLocalInertia(rigidbody_mass, rigidbody_inertia);\n    \n    btRigidBody::btRigidBodyConstructionInfo bullet_construction_info(rigidbody_mass, metadata->motion_state, shape.bt_shape, rigidbody_inertia);\n    rigidbody_t rigidbody = {new btRigidBody(bullet_construction_info), metadata};\n\n    dynamics_world->addRigidBody(rigidbody.bt_rigidbody, metadata->collision_group, metadata->collision_mask);\n    \n    rigidbody.bt_rigidbody->setUserIndex(USERINDEX_RIGIDBODY);\n    rigidbody.bt_rigidbody->setUserPointer(metadata);\n    rigidbody.bt_rigidbody->setCollisionFlags(metadata->collision_flags);\n    \n    return rigidbody;\n}\n\nvoid YeetRigidbody(rigidbody_t rigidbody) {\n    dynamics_world->removeRigidBody(rigidbody.bt_rigidbody);\n    delete rigidbody.bt_rigidbody;\n    delete rigidbody.bt_metadata->motion_state;\n    rigidbody_metadata_pool.Remove(rigidbody.bt_metadata);\n}\n\nvoid SetRigidbodyTransformCallback(rigidbody_t rigidbody, std::pair<vec3, quat>(*get_transform_callback)(void*), void(*set_transform_callback)(void*, std::pair<vec3, quat>), void* data) {\n    rigidbody.bt_metadata->motion_state->SetTransformCallback(get_transform_callback, set_transform_callback, data);\n}\n\nvoid SetRigidbodyCollisionCallback(rigidbody_t rigidbody, col_callback callback, void* data) {\n    rigidbody.bt_metadata->collision_callback = callback;\n    rigidbody.bt_metadata->collision_data = data;\n}\n\nvoid SetRigidbodyCollisionMask(rigidbody_t rigidbody, uint32_t mask) {\n    rigidbody.bt_metadata->collision_mask = mask;\n    dynamics_world->removeRigidBody(rigidbody.bt_rigidbody);\n    dynamics_world->addRigidBody(rigidbody.bt_rigidbody, rigidbody.bt_metadata->collision_group, rigidbody.bt_metadata->collision_mask);\n}\n\nvoid SetRigidbodyCollisionGroup(rigidbody_t rigidbody, uint32_t group) {\n    rigidbody.bt_metadata->collision_group = group;\n    dynamics_world->removeRigidBody(rigidbody.bt_rigidbody);\n    dynamics_world->addRigidBody(rigidbody.bt_rigidbody, rigidbody.bt_metadata->collision_group, rigidbody.bt_metadata->collision_mask);\n}\n\nvoid SetRigidbodyLocation(rigidbody_t rigidbody, vec3 position) {\n    btTransform trans = rigidbody.bt_rigidbody->getWorldTransform();\n    trans.setOrigin(btVector3 (position.x, position.y, position.z));\n    rigidbody.bt_rigidbody->setWorldTransform(trans);\n}\n\nvoid SetRigidbodyRotation(rigidbody_t rigidbody, quat rotation) {\n    btTransform trans = rigidbody.bt_rigidbody->getWorldTransform();\n    trans.setRotation(btQuaternion (rotation.x, rotation.y, rotation.z, rotation.w));\n    rigidbody.bt_rigidbody->setWorldTransform(trans);\n}\n\nvoid SetRigidbodyMass(rigidbody_t rigidbody, float mass) {\n    // ??? where did this go ???\n}\n\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction) {\n    rigidbody.bt_rigidbody->activate(); // force awake, sleeping objects won't move\n    rigidbody.bt_rigidbody->applyCentralImpulse(btVector3(direction.x, direction.y, direction.z));\n}\n\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction, vec3 local) {\n    rigidbody.bt_rigidbody->activate();\n    rigidbody.bt_rigidbody->applyImpulse(btVector3(direction.x, direction.y, direction.z), btVector3(local.x, local.y, local.z));\n}\n\nvoid SpinRigidbody(rigidbody_t rigidbody, vec3 direction) {\n    rigidbody.bt_rigidbody->activate();\n    rigidbody.bt_rigidbody->applyTorqueImpulse(btVector3(direction.x, direction.y, direction.z));\n}\n\nvoid SetRigidbodyDebugDrawing(rigidbody_t rigidbody, bool drawing) {\n    if (drawing) {\n        rigidbody.bt_metadata->collision_flags &= ~btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT;\n    } else {\n        rigidbody.bt_metadata->collision_flags |= btCollisionObject::CF_DISABLE_VISUALIZE_OBJECT;\n    }\n    \n    rigidbody.bt_rigidbody->setCollisionFlags(rigidbody.bt_metadata->collision_flags);\n}\n\nvoid SetRigidbodyKinematic(rigidbody_t rigidbody, bool kinematic) {\n    if (kinematic) {\n        rigidbody.bt_metadata->collision_flags |= btCollisionObject::CF_KINEMATIC_OBJECT;\n    } else {\n        rigidbody.bt_metadata->collision_flags &= ~btCollisionObject::CF_KINEMATIC_OBJECT;\n    }\n    \n    rigidbody.bt_rigidbody->setCollisionFlags(rigidbody.bt_metadata->collision_flags);\n}\n\nvoid SetRigidbodyAngularFactor(rigidbody_t rigidbody, vec3 factor) {\n    rigidbody.bt_rigidbody->setAngularFactor({factor.x, factor.y, factor.z});\n}\n\nvoid SetRigidbodyLinearFactor(rigidbody_t rigidbody, vec3 factor) {\n    rigidbody.bt_rigidbody->setLinearFactor({factor.x, factor.y, factor.z});\n}\n\nvoid SetRigidbodyVelocity(rigidbody_t rigidbody, vec3 velocity) {\n    if (velocity.x != 0.0f &&\n        velocity.y != 0.0f &&\n        velocity.z != 0.0f\n    ) {\n        rigidbody.bt_rigidbody->activate();\n    }\n    \n    rigidbody.bt_rigidbody->setLinearVelocity(btVector3(velocity.x, velocity.y, velocity.z));\n}\n\nvec3 GetRigidbodyVelocity(rigidbody_t rigidbody) {\n    auto velocity = rigidbody.bt_rigidbody->getLinearVelocity();\n    return {velocity.getX(), velocity.getY(), velocity.getZ()};\n}\n\nvoid AwakenRigidbody(rigidbody_t rigidbody) {\n    rigidbody.bt_rigidbody->activate();\n}\n\nvoid SleepRigidbody(rigidbody_t rigidbody) {\n    rigidbody.bt_rigidbody->setActivationState(0);\n}\n\nvoid DisableRigidbodyDeactivation(rigidbody_t rigidbody) {\n    rigidbody.bt_rigidbody->setActivationState(DISABLE_DEACTIVATION);\n}\n\ntrigger_t MakeTrigger(collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation) {\n    RigidbodyMetadata* metadata = rigidbody_metadata_pool.AddNew();\n   \n    metadata->type = METADATA_RIGIDBODY;\n    metadata->collision_mask = mask;\n    metadata->collision_group = group;\n    metadata->collision_flags = 0;\n    metadata->motion_state = nullptr;\n \n    btTransform transform;\n    transform.setIdentity();\n    transform.setOrigin(btVector3(position.x, position.y, position.z));\n    \n    btQuaternion rotation_quat;\n    rotation_quat.setX(rotation.x);\n    rotation_quat.setY(rotation.y);\n    rotation_quat.setZ(rotation.z);\n    rotation_quat.setW(rotation.w);\n    transform.setRotation(rotation_quat);\n    \n    trigger_t trigger = {new btCollisionObject(), metadata};\n    \n    metadata->collision_flags = trigger.bt_collisionshape->getCollisionFlags() | btCollisionObject::CF_NO_CONTACT_RESPONSE;\n    \n    trigger.bt_collisionshape->setCollisionShape(shape.bt_shape);\n    trigger.bt_collisionshape->setWorldTransform(transform);\n    trigger.bt_collisionshape->setUserPointer(metadata);\n    trigger.bt_collisionshape->setUserIndex(USERINDEX_TRIGGER);\n    trigger.bt_collisionshape->setCollisionFlags(metadata->collision_flags);\n    \n    dynamics_world->addCollisionObject(trigger.bt_collisionshape, metadata->collision_group, metadata->collision_mask);\n    \n    return trigger;\n}\n\nvoid YeetTrigger(trigger_t trigger) {\n    dynamics_world->removeCollisionObject(trigger.bt_collisionshape);\n    delete trigger.bt_collisionshape;\n}\n\nvoid SetTriggerCollisionCallback(trigger_t trigger, col_callback callback, void* data) {\n    trigger.bt_metadata->collision_callback = callback;\n    trigger.bt_metadata->collision_data = data;\n}\n\nvoid SetTriggerCollisionMask(trigger_t trigger, uint32_t mask) {\n    trigger.bt_metadata->collision_mask = mask;\n    dynamics_world->removeCollisionObject(trigger.bt_collisionshape);\n    dynamics_world->addCollisionObject(trigger.bt_collisionshape, trigger.bt_metadata->collision_group, trigger.bt_metadata->collision_mask);\n}\n\nvoid SetTriggerCollisionGroup(trigger_t trigger, uint32_t group) {\n    trigger.bt_metadata->collision_group = group;\n    dynamics_world->removeCollisionObject(trigger.bt_collisionshape);\n    dynamics_world->addCollisionObject(trigger.bt_collisionshape, trigger.bt_metadata->collision_group, trigger.bt_metadata->collision_mask);\n}\n\nvoid SetTriggerLocation(trigger_t trigger, vec3 location) {\n    btTransform trans = trigger.bt_collisionshape->getWorldTransform();\n    trans.setOrigin(btVector3 (location.x, location.y, location.z));\n    trigger.bt_collisionshape->setWorldTransform(trans);\n}\n\nvoid SetTriggerRotation(trigger_t trigger, quat rotation) {\n    btTransform trans = trigger.bt_collisionshape->getWorldTransform();\n    trans.setRotation(btQuaternion (rotation.x, rotation.y, rotation.z, rotation.w));\n    trigger.bt_collisionshape->setWorldTransform(trans);\n}\n\nstd::pair<ObjectCollision, void*> Raycast(vec3 from, vec3 to, uint32_t collision_mask) {\n    btVector3 bto, bfrom;\n\n    bto.setValue(to.x, to.y, to.z);\n    bfrom.setValue(from.x, from.y, from.z);\n\n    btCollisionWorld::ClosestRayResultCallback callback (bfrom, bto);\n\n    callback.m_collisionFilterMask = collision_mask;\n    \n    dynamics_world->rayTest(bfrom, bto, callback);\n\n    if (callback.hasHit() && callback.m_collisionObject->getUserIndex() == USERINDEX_RIGIDBODY) {\n        auto& point = callback.m_hitPointWorld;\n        auto& normal = callback.m_hitNormalWorld;\n        \n        RigidbodyMetadata* metadata = (RigidbodyMetadata*)callback.m_collisionObject->getUserPointer();\n        \n        return {{vec3(point.getX(), point.getY(), point.getZ()),\n                 vec3(normal.getX(), normal.getY(), normal.getZ()),\n                 0.0f},\n                 metadata->collision_data};\n    } else {\n        return {{vec3 (0.0f, 0.0f, 0.0f), vec3 (0.0f, 0.0f, 0.0f), 0.0f}, nullptr};\n    }\n}\n\nstruct ShapecastCallback : public btCollisionWorld::ConvexResultCallback {\n    ShapecastCallback(std::vector<std::pair<ObjectCollision, void*>>& collisions, uint32_t collision_mask)\n        : collisions(collisions), collision_mask(collision_mask) {}\n    btScalar addSingleResult (btCollisionWorld::LocalConvexResult &convexResult, bool normalInWorldSpace) {\n        const btCollisionObject* ob = convexResult.m_hitCollisionObject;\n        \n        // ignore triggers\n        if (ob->getUserIndex() != USERINDEX_RIGIDBODY) {\n            return 1;\n        }\n        \n        /*const*/ RigidbodyMetadata* metadata = (RigidbodyMetadata*)ob->getUserPointer();\n        \n        if (assert(metadata); metadata->collision_group & collision_mask) {\n            auto& contact = convexResult.m_hitPointLocal;\n            auto& normal = convexResult.m_hitNormalLocal;\n            \n            collisions.push_back({\n                {{contact.getX(), contact.getY(), contact.getZ()},\n                {-normal.getX(), normal.getY(), normal.getZ()},\n                0.0f}, metadata->collision_data\n            });\n        }\n        \n        return 1; // tbh idk what this method is supposed to return\n    }\n    std::vector<std::pair<ObjectCollision, void*>>& collisions;\n    uint32_t collision_mask;\n};\n\nstd::vector<std::pair<ObjectCollision, void*>> Shapecast(CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask) {\n    auto shape_ptr = API::MakeBulletShape(shape);\n    btTransform bto, bfrom;\n    std::vector<std::pair<ObjectCollision, void*>> collisions;\n    \n    ShapecastCallback callback(collisions, collision_mask);\n\n    bto.setIdentity();\n    bto.setOrigin({to.x, to.y, to.z});\n    bfrom.setIdentity();\n    bfrom.setOrigin({from.x, from.y, from.z});\n\n    // that btConvexShape* cast will probably segfault if MakeBulletShape() \n    // didn't return a btConvexShape (of which there is only a mesh)\n    // TODO: fix\n    dynamics_world->convexSweepTest((btConvexShape*)shape_ptr, bfrom, bto, callback);\n    \n    delete shape_ptr;\n    \n    return collisions;\n}\n\nstatic bool draw_debug = false;\nvoid DrawDebug(bool draw) {\n    draw_debug = draw;\n}\n\nvoid Init() {\n    btBroadphaseInterface* broadphase_interface = new btDbvtBroadphase();\n    btDefaultCollisionConfiguration* collision_configuration = new btDefaultCollisionConfiguration();\n    btCollisionDispatcher* collision_dispatcher = new btCollisionDispatcher(collision_configuration);\n    btSequentialImpulseConstraintSolver* constraint_solver = new btSequentialImpulseConstraintSolver();\n\n    dynamics_world = new btDiscreteDynamicsWorld(collision_dispatcher, broadphase_interface, constraint_solver, collision_configuration);\n\n    dynamics_world->setGravity(btVector3(0.0f, PHYSICS_GRAVITY, 0.0f));\n\n    btIDebugDraw* debug_drawer  = new PhysicsDebugDraw;\n    dynamics_world->setDebugDrawer(debug_drawer);\n\n    btVehicleRaycaster* vehicle_raycaster = new btDefaultVehicleRaycaster(dynamics_world);\n    (void)vehicle_raycaster;\n    \n    // this will make a plane so that stuff doesn't fall out of the world\n    btTransform trans;\n    trans.setIdentity();\n    // maybe we should check if PHYSICS_GROUND_PLANE is not inf or whatever? if it is then we not make plane??\n    btCollisionShape* shape = new btStaticPlaneShape(btVector3(0.0f, 1.0f, 0.0f), PHYSICS_GROUND_PLANE);\n    btDefaultMotionState* motionstate = new btDefaultMotionState(trans);\n    btRigidBody::btRigidBodyConstructionInfo constructioninfo (0.0f, motionstate, shape, btVector3(0.0f, 0.0f, 0.0f));\n    btRigidBody* rigidbody = new btRigidBody(constructioninfo);\n\n    dynamics_world->addRigidBody(rigidbody);\n}\n\nvoid StepPhysics() {\n    dynamics_world->stepSimulation(1.0f/60.0f, 0);\n    \n    if (draw_debug) dynamics_world->debugDrawWorld();\n    \n    // process the triggers\n    // TODO: move this ?? to physics.cpp?\n    for (auto& trigger : PoolProxy<TriggerComponent>::GetPool()) trigger.ResetCollisions();\n    \n    // BulletPhysics API is trash and I hate it\n    int numManifolds = dynamics_world->getDispatcher()->getNumManifolds();\n    for (int i = 0; i < numManifolds; i++) {\n        btPersistentManifold* contactManifold = dynamics_world->getDispatcher()->getManifoldByIndexInternal(i);\n        const btCollisionObject* obj_a = contactManifold->getBody0();\n        const btCollisionObject* obj_b = contactManifold->getBody1();\n        \n        // skip if no contacts\n        if (!contactManifold->getNumContacts()) continue;\n        \n        // might need to reverse normal\n        bool swapped = false;\n        \n        // make sure that obj_a is triggercomponent\n        if (obj_a->getUserIndex() == USERINDEX_RIGIDBODY &&\n            obj_b->getUserIndex() == USERINDEX_TRIGGER) {\n            std::swap(obj_a, obj_b);\n            swapped = true;\n        }\n        \n        // if not collision between physicscomponent and trigger, skip\n        if (obj_a->getUserIndex() != USERINDEX_TRIGGER ||\n            obj_b->getUserIndex() != USERINDEX_RIGIDBODY) {\n            continue;\n        }\n        \n        assert(obj_a->getUserPointer());\n        assert(obj_b->getUserPointer());\n        \n        for (int i = 0; i < contactManifold->getNumContacts(); i++) {\n            auto& contact = contactManifold->getContactPoint(i);\n            auto& posA = contact.getPositionWorldOnA();\n            auto& posB = contact.getPositionWorldOnB();\n            vec3 point = {posA.getX(), posA.getY(), posA.getZ()};\n            vec3 normal = -glm::normalize(point - vec3 {posB.getX(), posB.getY(), posB.getZ()});\n            \n            // reverse the normal\n            if (swapped) normal = -normal;\n            \n            // this is to avoid accidental division by zero\n            if (contact.getDistance() == 0.0f) normal = {0.0f, 1.0f, 0.0f};\n            \n            API::RigidbodyMetadata* metadata_a = (API::RigidbodyMetadata*)obj_a->getUserPointer();\n            API::RigidbodyMetadata* metadata_b = (API::RigidbodyMetadata*)obj_b->getUserPointer();\n            \n            if (metadata_a->collision_callback) {\n                metadata_a->collision_callback(metadata_a->collision_data,\n                                               metadata_b->collision_data,\n                                               {point, normal, contact.getDistance()});\n            }\n        }\n    }\n}\n\nvoid DrawDebug() {\n    dynamics_world->debugDrawWorld();\n}\n\n}"
  },
  {
    "path": "src/physics/bullet/debugdrawer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef PHYSICS_BULLET_DEBUGDRAWER_H\n#define PHYSICS_BULLET_DEBUGDRAWER_H\n\n#include <btBulletDynamicsCommon.h>\n#include <framework/gui.h>\n\nnamespace tram::Physics::API {\n    \nclass PhysicsDebugDraw : public btIDebugDraw {\npublic:\n\n    void drawContactPoint(const btVector3& PointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime, const btVector3& color) {\n        drawLine(PointOnB, normalOnB, color);\n    };\n\n    void reportErrorWarning(const char* warningString) {\n        std::cout << warningString << std::endl;\n    };\n\n    void draw3dText(const btVector3& location, const char* textString) {\n        //GUI::DebugText(textString, {location.getX(), location.getY(), location.getZ()}, Render::COLOR_WHITE);\n    };\n\n    void setDebugMode(int debugMode) {};\n\n    int getDebugMode() const {\n        return DBG_MAX_DEBUG_DRAW_MODE;\n    }\n\n    void drawLine(const btVector3& from, const btVector3& to, const btVector3& color){\n        Render::AddLine(\n            {from.getX(),   from.getY(),    from.getZ()}, \n            {to.getX(),     to.getY(),      to.getZ()}, \n            {color.getX(),  color.getY(),   color.getZ()}\n        );\n    }\n};\n\n}\n\n#endif // PHYSICS_BULLET_DEBUGDRAWER_H"
  },
  {
    "path": "src/physics/collisionmodel.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <physics/physics.h>\n#include <physics/api.h>\n#include <physics/collisionmodel.h>\n#include <templates/hashmap.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <config.h>\n\n#include <cstring>\n\n/**\n * @class tram::Physics::CollisionModel physics/collisionmodel.h <physics/collisionmodel.h>\n * \n * Physics CollisionShape model.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/physics/collisionmodel.html\n */\n\nnamespace tram::Physics {\n\nstatic Hashmap<CollisionModel*> collision_models (\"CollisionModel list\", RESOURCE_LIMIT_COLLISION_MODEL);\n\n/// Finds a model.\n/// Will either return a pointer to a model that already exists with that name,\n/// or will create a new one.\n/// @return Always will return a pointer to a CollisionModel.\nCollisionModel* CollisionModel::Find(name_t model_name) {\n    auto model = collision_models.Find(model_name);\n    \n    if (!model) {\n        model = new CollisionModel(model_name);\n        collision_models.Insert(model_name, model);\n    }\n    \n    return model;\n}\n\n/// Loads the collision model from disk.\n/// If the collision model file can't be found, the model will be replaced with\n/// a 25cm wide cube.\nvoid CollisionModel::LoadFromDisk () {\n    char path[PATH_LIMIT] = \"data/models/\";\n    \n    strcat(path, name);\n    strcat(path, \".collmdl\");\n\n    File file(path, File::READ);\n\n    if (!file.is_open()) {\n        Log(Severity::WARNING, System::PHYSICS, \"Can't find collisionmodel: {}\", path);\n        \n        shape = Physics::API::MakeCollisionShape(nullptr, 0);\n        load_fail = true;\n        status = READY;\n        \n        return;\n    }\n\n    std::vector<API::CollisionShapeTransform> shapes;\n\n    Log(Severity::INFO, System::PHYSICS, \"Loading: {}\", path);\n    \n    while (file.is_continue()) {\n        name_t type = file.read_name();\n        if (type == \"box\") {\n            vec3 position = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 rotation = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 dimensions = {file.read_float32(), file.read_float32(), file.read_float32()};\n            \n            shapes.push_back({CollisionShape::Box(dimensions), position, rotation});\n\n        } else if (type == \"sphere\") {\n            vec3 position = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 rotation = {file.read_float32(), file.read_float32(), file.read_float32()};\n            float radius = file.read_float32();\n\n            shapes.push_back({CollisionShape::Sphere(radius), position, rotation});\n            \n        } else if (type == \"cylinder\") {\n            vec3 position = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 rotation = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 dimensions = {file.read_float32(), file.read_float32(), file.read_float32()};\n\n            shapes.push_back({CollisionShape::Cylinder(dimensions.x, dimensions.y), position, rotation});\n            \n        } else if (type == \"capsule\") {\n            vec3 position = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 rotation = {file.read_float32(), file.read_float32(), file.read_float32()};\n            float radius = file.read_float32();\n            float height = file.read_float32();\n\n            shapes.push_back({CollisionShape::Capsule(radius, height), position, rotation});\n            \n        } else if (type == \"cone\") {\n            vec3 position = {file.read_float32(), file.read_float32(), file.read_float32()};\n            vec3 rotation = {file.read_float32(), file.read_float32(), file.read_float32()};\n            float radius = file.read_float32();\n            float height = file.read_float32();\n\n            shapes.push_back({CollisionShape::Cone(radius, height), position, rotation});\n            \n        } else if (type == \"cloud\") {\n            size_t point_count = file.read_uint32();\n        \n            vec3* points = new vec3[point_count];\n        \n            for (size_t i = 0; i < point_count; i++) {\n                points[i] = {file.read_float32(), file.read_float32(), file.read_float32()};\n            }\n        \n            shapes.push_back({CollisionShape::Hull(points, point_count), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f)});\n        } else if (type == \"mesh\") {\n            size_t triangle_count = file.read_uint32();\n\n            CollisionTriangle* triangles = new CollisionTriangle[triangle_count];\n            \n            for (size_t i = 0; i < triangle_count; i++){\n                vec3 p0 = {file.read_float32(), file.read_float32(), file.read_float32()};\n                vec3 p1 = {file.read_float32(), file.read_float32(), file.read_float32()};\n                vec3 p2 = {file.read_float32(), file.read_float32(), file.read_float32()};\n                \n                triangles[i] = {p0, p1, p2};\n            }\n\n            shapes.push_back({CollisionShape::Mesh(triangles, triangle_count), vec3(0.0f, 0.0f, 0.0f), vec3(0.0f, 0.0f, 0.0f)});\n\n        }\n    }\n\n    shape = Physics::API::MakeCollisionShape(&shapes[0], shapes.size());\n    status = READY;\n}\n\n}\n"
  },
  {
    "path": "src/physics/collisionmodel.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PHYSICS_COLLISIONMODEL_H\n#define TRAM_SDK_PHYSICS_COLLISIONMODEL_H\n\n#include <framework/resource.h>\n#include <physics/physics.h>\n\nnamespace tram::Physics {\n\nclass CollisionModel : public Resource {\npublic:\n    CollisionModel(name_t mName) : Resource(mName) {}\n\n    void LoadFromDisk();\n    void LoadFromMemory() {}\n    void Unload() {}\n    \n    inline collisionshape_t GetShape() { return shape; }\n\n    static CollisionModel* Find(name_t model_name);\nprotected:\n    collisionshape_t shape;\n};\n\n}\n\n#endif // TRAM_SDK_PHYSICS_COLLISIONMODEL_H\n"
  },
  {
    "path": "src/physics/collisionshape.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PHYSICS_COLLISIONSHAPE_H\n#define TRAM_SDK_PHYSICS_COLLISIONSHAPE_H\n\n#include <framework/math.h>\n\n/**\n * @struct tram::Physics::CollisionShape physics/collisionshape.h <physics/collisionshape.h>\n * \n * Shape for a collider.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/physics/collisionshape.html\n */\n\nnamespace tram::Physics {\n    \nenum Shape : uint32_t {\n    SHAPE_SPHERE,\n    SHAPE_CYLINDER,\n    SHAPE_CAPSULE,\n    SHAPE_CONE,\n    SHAPE_BOX,\n    SHAPE_HULL,\n    SHAPE_MESH\n};\n\nstruct CollisionTriangle {\n    vec3 p0, p1, p2;\n};\n\nstruct CollisionShape {\n    Shape type;\n    \n    union {\n        struct {\n            union {\n                float radius;\n                float radius_x;\n                float extent_x;\n            };\n            \n            union {\n                float height;\n                float extent_y;\n            };\n            \n            union {\n                float extent_z;\n                float radius_z;\n            };\n        };\n        \n        struct {\n            vec3* hull_points;\n            size_t hull_size;\n        };\n        \n        struct {\n            CollisionTriangle* mesh_triangles;\n            size_t mesh_size;\n        };\n    };\n    \n    static inline CollisionShape Sphere(float radius);\n    static inline CollisionShape Cylinder(float radius, float height);\n    static inline CollisionShape Capsule(float radius, float height);\n    static inline CollisionShape Cone(float radius, float height);\n    static inline CollisionShape Box(vec3 dimensions);\n    static inline CollisionShape Hull(vec3* points, size_t size);\n    static inline CollisionShape Mesh(CollisionTriangle* triangles, size_t size);\n};\n\n/// Creates a sphere.\nCollisionShape CollisionShape::Sphere(float radius) {\n    return {SHAPE_SPHERE, radius, 0.0f, 0.0f};\n}\n\n/// Creates a cylinder.\nCollisionShape CollisionShape::Cylinder(float radius, float height) {\n    return {SHAPE_CYLINDER, radius, height, radius};\n}\n\n/// Creates a capsule.\nCollisionShape CollisionShape::Capsule(float radius, float height) {\n    return {SHAPE_CAPSULE, radius, height, 0.0f};\n}\n\n/// Creates a cone.\nCollisionShape CollisionShape::Cone(float radius, float height) {\n    return {SHAPE_CONE, radius, height, 0.0f};\n}\n\n/// Creates a box.\nCollisionShape CollisionShape::Box(vec3 dimensions) {\n    return {SHAPE_BOX, dimensions.x, dimensions.y, dimensions.z};\n}\n\n/// Creates a convex hull.\n/// @note Memory pointed to by the point pointer should not be freed until the\n///       CollisionShape is no longer in use.\nCollisionShape CollisionShape::Hull(vec3* points, size_t size) {\n    return CollisionShape {.type = SHAPE_HULL, .hull_points = points, .hull_size = size};\n}\n\n/// Creates a triangle mesh.\n/// @note Memory pointed to by the triangle pointer should not be freed until\n///       the CollisionShape is no longer in use.\nCollisionShape CollisionShape::Mesh(CollisionTriangle* triangles, size_t size) {\n    return CollisionShape {.type = SHAPE_MESH, .mesh_triangles = triangles, .mesh_size = size};\n}\n\n}\n\n#endif // TRAM_SDK_PHYSICS_COLLISIONSHAPE_H"
  },
  {
    "path": "src/physics/physics.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <physics/physics.h>\n#include <physics/api.h>\n\n#include <framework/system.h>\n#include <framework/stats.h>\n\n/**\n * @struct tram::Physics::Collision physics/physics.h <physics/physics.h>\n * \n * Physics collision data.\n * \n * Used to represent a collision between two physics objects. Sometimes a\n * function always returns a Collision struct, but it can still fail, such as\n * the Raycast() function, which can perform a raycast that doesn't hit\n * anything. In such a case the structs vector properties will be zeroed-out and\n * the `collider` will be set to a `nullptr`.\n * \n * @property tram::Physics::Collision::collider\n * Pointer to a PhysicsComponent that owns the rigidbody with which the\n * collision happened.\n * \n * @property tram::Physics::Collision::point\n * Position of the collision in world space.\n * \n * @property tram::Physics::Collision::normal\n * Normal vector of the surface that the collision happened with.\n * \n * @property tram::Physics::Collision::distance\n * Distance of the collision, i.e. how far the colliders penetrated each other.\n */\n\nnamespace tram::Physics {\n\n/// Initializes the physics system.\nvoid Init() {\n    System::SetState(System::PHYSICS, System::INIT);\n    System::AssertDependency(System::CORE);\n    \n    API::Init();\n    \n    System::SetState(System::PHYSICS, System::READY);\n}\n\n/// Updates the physics system.\n/// Should only be called once in the update cycle.\nvoid Update() {\n    Stats::Start(System::PHYSICS);\n    \n    API::StepPhysics();\n    \n    Stats::Stop(System::PHYSICS);\n}\n\n/// Performs a raycast.\n/// Performs a raycast from from to to.\n/// @return Collision struct. If there was nothing found, then the pointer\n///         in the struct will be set to nullptr.\nCollision Raycast(const vec3& from, const vec3& to, uint32_t collision_mask) {\n    auto[result, object] = API::Raycast(from, to, collision_mask);\n    \n    return {(PhysicsComponent*)object, result.point, result.normal, result.distance};\n}\n\n/// I have no idea if this function works. (yes it does)\nstd::vector<Collision> Shapecast(const CollisionShape& shape, const vec3& from, const vec3& to, uint32_t collision_mask) {\n    std::vector<Collision> collisions;\n    auto results = API::Shapecast(shape, from, to, collision_mask);\n    for (auto[result, object] : results) {\n        collisions.push_back({((PhysicsComponent*) object), result.point, result.normal, result.distance});\n    }\n    \n    return collisions;\n}\n\n}\n"
  },
  {
    "path": "src/physics/physics.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PHYSICS_PHYSICS_H\n#define TRAM_SDK_PHYSICS_PHYSICS_H\n\n#include <framework/core.h>\n#include <framework/math.h>\n\n#include <vector>\n\nstruct btCollisionShape;\nstruct btCollisionObject;\nstruct btRigidBody;\n\nnamespace tram {\n    class PhysicsComponent;  \n}\n\nnamespace tram::Physics {\n\nvoid Init();\nvoid Update();\n\nenum CollisionGroup : uint32_t {\n    COLL_WORLDOBJ = 2,      //< Worldspawns\n    COLL_STATICOBJ = 4,     //< Decorations, doors, elevators and platforms\n    COLL_DYNAMICOBJ = 8,    //< Crates and other \n    COLL_TRIGGER = 16,      //< Triggers\n    COLL_PLAYER  = 32,      //< Players\n    COLL_MONSTER = 64,      //< Monsters and other NPCs\n    COLL_VEHICLE = 128      //< Trams and microbuses\n};\n\nstruct Collision {\n    PhysicsComponent* collider;\n    vec3 point;\n    vec3 normal;\n    float distance;\n};\n\nnamespace API { struct RigidbodyMetadata; }\n\nstruct collisionshape_t {\n    btCollisionShape* bt_shape;\n};\n\nstruct trigger_t {\n    btCollisionObject* bt_collisionshape;\n    API::RigidbodyMetadata* bt_metadata;\n};\n\nstruct rigidbody_t {\n    btRigidBody* bt_rigidbody;\n    API::RigidbodyMetadata* bt_metadata;\n};\n\nclass CollisionShape;\n\nCollision Raycast(const vec3& from, const vec3& to, uint32_t collision_mask = -1);\nstd::vector<Collision> Shapecast(const CollisionShape& shape, const vec3& from, const vec3& to, uint32_t collision_mask = -1);\n\n}\n\n#endif // TRAM_SDK_PHYSICS_PHYSICS_H\n"
  },
  {
    "path": "src/physics/template/template.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <physics/api.h>\n\nnamespace tram::Physics::API {\n\ncollisionshape_t MakeCollisionShape(CollisionShapeTransform* shapes, size_t shape_count) {\n    return collisionshape_t{};\n}\n\ncollisionshape_t MakeCollisionShape(CollisionShape shape) {\n    return collisionshape_t{};\n}\n\nvoid YeetCollisionShape(collisionshape_t shape) {\n    \n}\n\nrigidbody_t MakeRigidbody(collisionshape_t shape, float mass, vec3 position, quat rotation, uint32_t mask, uint32_t group, get_trf_callback get_callback, set_trf_callback set_callback, void* data) {\n    return rigidbody_t{};\n}\n\nvoid YeetRigidbody(rigidbody_t rigidbody) {\n    \n}\n\nvoid SetRigidbodyTransformCallback(rigidbody_t rigidbody, get_trf_callback get_callback, set_trf_callback set_callback, void* data) {\n    \n}\n\nvoid SetRigidbodyCollisionCallback(rigidbody_t rigidbody, col_callback callback, void* data) {\n    \n}\n\nvoid SetRigidbodyCollisionMask(rigidbody_t rigidbody, uint32_t mask) {\n    \n}\n\nvoid SetRigidbodyCollisionGroup(rigidbody_t rigidbody, uint32_t group) {\n    \n}\n\nvoid SetRigidbodyLocation(rigidbody_t rigidbody, vec3 location) {\n    \n}\n\nvoid SetRigidbodyRotation(rigidbody_t rigidbody, quat rotation) {\n    \n}\n\nvoid SetRigidbodyMass(rigidbody_t rigidbody, float mass) {\n    \n}\n\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction) {\n    \n}\n\nvoid PushRigidbody(rigidbody_t rigidbody, vec3 direction, vec3 local) {\n    \n}\n\nvoid SpinRigidbody(rigidbody_t rigidbody, vec3 direction) {\n    \n}\n\nvoid SetRigidbodyDebugDrawing(rigidbody_t rigidbody, bool drawing) {\n    \n}\n\nvoid SetRigidbodyKinematic(rigidbody_t rigidbody, bool kinematic) {\n    \n}\n\nvoid SetRigidbodyAngularFactor(rigidbody_t rigidbody, vec3 factor) {\n    \n}\n\nvoid SetRigidbodyLinearFactor(rigidbody_t rigidbody, vec3 factor) {\n    \n}\n\nvoid SetRigidbodyVelocity(rigidbody_t rigidbody, vec3 velocity) {\n    \n}\n\nvec3 GetRigidbodyVelocity(rigidbody_t rigidbody) {\n    return {0.0f, 0.0f, 0.0f};\n}\n\nvoid AwakenRigidbody(rigidbody_t rigidbody) {\n    \n}\n\nvoid SleepRigidbody(rigidbody_t rigidbody) {\n    \n}\n\nvoid DisableRigidbodyDeactivation(rigidbody_t rigidbody) {\n    \n}\n\ntrigger_t MakeTrigger(collisionshape_t shape, uint32_t mask, uint32_t group, vec3 position, quat rotation) {\n    return trigger_t{};\n}\n\nvoid YeetTrigger(trigger_t) {\n    \n}\n\nvoid SetTriggerCollisionCallback(trigger_t rigidbody, col_callback callback, void* data) {\n    \n}\n\nvoid SetTriggerCollisionMask(trigger_t rigidbody, uint32_t mask) {\n    \n}\n\nvoid SetTriggerCollisionGroup(trigger_t rigidbody, uint32_t group) {\n    \n}\n\nvoid SetTriggerLocation(trigger_t rigidbody, vec3 location) {\n    \n}\n\nvoid SetTriggerRotation(trigger_t rigidbody, quat location) {\n    \n}\n\nstd::pair<ObjectCollision, void*> Raycast(vec3 from, vec3 to, uint32_t collision_mask) {\n    return {{vec3 (0.0f, 0.0f, 0.0f), vec3 (0.0f, 0.0f, 0.0f), 0.0f}, nullptr};\n}\n\nstd::vector<std::pair<ObjectCollision, void*>> Shapecast(CollisionShape shape, vec3 from, vec3 to, uint32_t collision_mask) {\n    return std::vector<std::pair<ObjectCollision, void*>>{};\n}\n\nvoid Init() {\n    \n}\n\nvoid StepPhysics() {\n    \n}\n\nvoid DrawDebug() {\n    \n}\n\nvoid DrawDebug(bool) {\n    \n}\n\n}\n\n"
  },
  {
    "path": "src/platform/api.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_API_H\n#define TRAM_SDK_PLATFORM_API_H\n\n#include <framework/ui.h>\n\n#include <cstddef>\n\n/**\n * @namespace tram::Platform::Window\n * \n * Windowing backend API.\n */\n \n/**\n * @namespace tram::Platform::Input\n * \n * Input backend API.\n */\n\nnamespace tram::Platform::Window {\n\nvoid Init();\nvoid Update();\nvoid Uninit();\n\nvoid SetTitle(const char*);\nvoid SetSize(int w, int h);\n\nenum CursorType {\n    CURSOR_DEFAULT,\n    CURSOR_TEXT,\n    CURSOR_CLICK\n};\n\nvoid SetCursor(CursorType);\nvoid SetCursorPosition(float x, float y);\n\nvoid EnableCursor();\nvoid DisableCursor();\n\nvoid SetScale(int s);\n\ndouble GetTime();\n\nint GetCurrentMonitor();\nint GetMonitorCount();\nvoid SetMonitor(int monitor);\nbool IsFullscreen();\nvoid SetFullscreen(bool);\nbool IsVsync();\nvoid SetVsync(bool);\nbool IsRawInput();\nvoid SetRawInput(bool);\n\nbool IsRenderContextThread();\n\nstruct callbacks_t {\n    void (*key_press)(UI::KeyboardKey key) = nullptr;\n    void (*key_release)(UI::KeyboardKey key) = nullptr;\n    void (*key_code)(uint16_t code) = nullptr;\n    void (*key_mouse)(float x_value, float y_value) = nullptr;\n    void (*key_scroll)(float value) = nullptr;\n    void (*screen_resize)(int w, int h) = nullptr;\n    void (*screen_close)() = nullptr;\n};\n\nvoid SetCallbacks(callbacks_t callbacks);\n\n}\n\nnamespace tram::Platform::Input {\n    \nvoid Init();\nvoid Update();\nvoid Uninit();\n\n}\n\n#endif // TRAM_SDK_PLATFORM_API_H"
  },
  {
    "path": "src/platform/file.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <cassert>\n#include <iostream>\n\n#include <cstring>\n\n#include <platform/file.h>\n#include <framework/logging.h>\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n/**\n * @class tram::Platform::FileReader platform/file.h <platform/file.h>\n * \n * File reading backend API.\n * \n * File readers will load a whole file in memory when constructed. This memory\n * is freed when they are destructed, which can be done by calling the Yeet()\n * method.\n * \n * File contents can be accessed via GetContents() and GetSize() methods.\n * \n * To open a file, call the GetReader() method, it will find search until it\n * finds the file and then return an opened filereader for it.\n */\n \n/**\n * @class tram::Platform::FileWriter platform/file.h <platform/file.h>\n * \n * File writing backend API.\n * \n * Works basically the same as FileReader, except this API is used for writing\n * to files, which can be performed with the SetContents() method.\n */\n\nnamespace tram {\n\nstatic const int PROTOCOL_LENGTH = 10;\n\nstatic std::vector<FileSource> search_list;\nstatic std::vector<int> search_list_index;\n\nstruct FileReaderProtocolInfo {\n    const char* protocol;\n    FileReader* (*constr)(const char* location, const char* path);\n};\n\nstruct FileWriterProtocolInfo {\n    const char* protocol;\n    FileWriter* (*constr)(const char* path);\n};\n\nstatic std::vector<FileReaderProtocolInfo> reader_infos;\nstatic std::vector<FileWriterProtocolInfo> writer_infos;\n\nclass DiskReader : public FileReader {\npublic:\n    DiskReader(const char* path) {\n        FILE* file_handle = fopen(path, \"rb\");\n    \n        if (file_handle != nullptr) {\n            Log (Severity::INFO, System::PLATFORM, \"Opened file for reading: {}\", path);\n        } else {\n            Log (Severity::INFO, System::PLATFORM, \"Failed to open file for reading: {}\", path);\n            return;\n        }\n        \n        fseek(file_handle, 0, SEEK_END);\n        size_t file_size = ftell(file_handle);\n        fseek(file_handle, 0, SEEK_SET);\n        \n        char* file_data = new char[file_size + 1];\n        \n        fread(file_data, file_size, 1, file_handle);\n        Log (Severity::INFO, System::PLATFORM, \"Read {} bytes from file: {}\", file_size, path);\n\n        file_data[file_size] = '\\0';\n\n        fclose(file_handle);\n        \n        this->contents = file_data;\n        this->length = file_size;\n        \n        Log (Severity::INFO, System::PLATFORM, \"Closed file: {}\", path);\n    }\n    \n    ~DiskReader() {\n        delete[] this->contents;\n    \n        this->contents = nullptr;\n        this->length = 0;\n    }\n    \n    const char* GetContents() {\n        return contents;\n    }\n    \n    size_t GetSize() {\n        return length;\n    }\n    \n    void Yeet() {\n        delete this;\n    }\n    \n    FileStatus GetStatus() {\n        if (!contents) {\n            return FileStatus::IO_ERROR;\n        } else {\n            return FileStatus::READY;\n        }\n    }\nprivate:\n    const char* contents = nullptr;\n    size_t length = 0;\n};\n\n\nstatic bool ExtractProtocol(const char* path, char* protocol) {\n    for (int i = 0; i < PROTOCOL_LENGTH - 1; i++) {\n        if (*path == '\\0') goto fail;\n        \n        *protocol++ = *path++;\n        \n        if (*path == ':' && *++path == '/' && *++path == '/') {\n            goto success;\n        }\n    }\nfail:\n    *protocol = '\\0';\n    return false;\nsuccess:\n    *protocol = '\\0';\n    return true;\n}\n\nstatic const char* StripProtocol(const char* path) {\n    while (*path != '\\0' && *path != '/')  path++;\n    path++; path++;\n    \n    return path;\n}\n\nFileReader* FileReader::GetReader(const char* path) {\n    char protocol[PROTOCOL_LENGTH];\n    if (!ExtractProtocol(path, protocol)) {\n        for (size_t i = 0; i < search_list.size(); i++) {\n            const auto constr = reader_infos[search_list_index[i]].constr;\n            if (!constr) continue;\n            \n            //const char* strip_path = path;\n            //char full_path[PATH_LIMIT + 50];\n            //snprintf(full_path, PATH_LIMIT + 50, \"%s://%s/%s\", protocol, search_list[i].location, strip_path);\n            \n            auto reader = constr(search_list[i].location, path);\n            if (reader->GetStatus() == FileStatus::READY) return reader;\n            \n            reader->Yeet();\n        }\n        \n        return new DiskReader(path);\n    }\n    \n    if (strcmp(\"file\", protocol) == 0) {\n        return new DiskReader(StripProtocol(path));\n    }\n    \n    for (auto& p : reader_infos) {\n        if (strcmp(p.protocol, protocol)) continue;\n        \n        if (!p.constr) continue;\n        \n        return p.constr(nullptr, StripProtocol(path));\n    }\n    \n    Log(Severity::ERROR, System::PLATFORM, \"FileReader could not find protocol for {}!\", path);\n    \n    return nullptr;\n}\n\nvoid FileReader::SetSearchList(std::vector<FileSource> list) {\n    search_list.clear();\n    search_list_index.clear();\n    \n    for (const auto& source : list) {\n        int index = -1;\n        for (size_t i = 0; i < reader_infos.size(); i++) {\n            if (strcmp(source.protocol, reader_infos[i].protocol)) continue;\n            index = i;\n            break;\n        }\n        if (index == -1) {\n            Log(Severity::ERROR, System::PLATFORM, \"FileReader search list protocol {} not found in registered protocols!\", source.protocol);\n            continue;\n        }\n        search_list.push_back(source);\n        search_list_index.push_back(index);\n    }\n}\n\nstd::vector<FileSource> FileReader::GetSearchList() {\n    return search_list;\n}\n\nvoid FileReader::Register(const char* protocol, FileReader* (*constr)(const char* location, const char* path)) {\n    for (auto& p : reader_infos) {\n        if (strcmp(p.protocol, protocol)) continue;\n        p.protocol = protocol;\n        p.constr = constr;\n        return;\n    }\n    \n    reader_infos.push_back({protocol, constr});\n}\n\nclass DiskWriter : public FileWriter {\npublic:\n    DiskWriter(const char* path) {\n        this->full_path = new char[PATH_LIMIT + 10];\n        this->temp_path = new char[PATH_LIMIT + 10];\n        \n        strcpy(full_path, path);\n        strcpy(temp_path, path);\n        \n        strcat(temp_path, \".tmp\");\n        \n        this->file_handle = fopen(temp_path, \"wb\");\n\n        if (file_handle != nullptr) {\n            Log (Severity::INFO, System::PLATFORM, \"Opened file for writing: {}\", path);\n        } else {\n            Log (Severity::ERROR, System::PLATFORM, \"Failed to open file for writing: {}\", path);\n            return;\n        }\n    }\n    \n    ~DiskWriter() {\n        if (file_handle) {\n            fclose(file_handle);\n            \n            file_handle = nullptr;\n        }\n        \n        remove(full_path);\n        \n        rename(temp_path, full_path);\n        \n        delete[] full_path;\n        delete[] temp_path;\n    }\n    \n    void SetContents(const char* contents, size_t size) {\n        fwrite(contents, size, 1, file_handle);\n    }\n    \n    bool Flush() {\n        return true;\n    }\n    \n    void Yeet() {\n        delete this;\n    }\n    \n    FileStatus GetStatus() {\n        if (!file_handle) {\n            return FileStatus::IO_ERROR;\n        } else {\n            return FileStatus::READY;\n        }\n    }\n    \nprivate:\n    FILE* file_handle = nullptr;\n    char* full_path = nullptr;\n    char* temp_path = nullptr;\n};\n\nFileWriter* FileWriter::GetWriter(const char* path) {\n    char protocol[PROTOCOL_LENGTH];\n    if (!ExtractProtocol(path, protocol)) {\n        return new DiskWriter(path);\n    }\n    \n    if (strcmp(\"file\", protocol) == 0) {\n        return new DiskWriter(StripProtocol(path));\n    }\n    \n    for (auto& p : writer_infos) {\n        if (strcmp(p.protocol, protocol)) continue;\n\n        if (!p.constr) continue;\n\n        return p.constr(StripProtocol(path));\n    }\n    \n    Log(Severity::ERROR, System::PLATFORM, \"FileWriter could not find protocol for {}!\", path);\n    \n    return nullptr;\n}\n\nvoid FileWriter::Register(const char* protocol, FileWriter* (*constr)(const char* path)) {\n    for (auto& p : writer_infos) {\n        if (strcmp(p.protocol, protocol)) continue;\n        p.protocol = protocol;\n        p.constr = constr;\n        return;\n    }\n    \n    writer_infos.push_back({protocol, constr});\n}\n\n}"
  },
  {
    "path": "src/platform/file.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_FILE_H\n#define TRAM_SDK_PLATFORM_FILE_H\n\n#include <cstddef>\n#include <vector>\n\nnamespace tram {\n\nenum class FileStatus {\n    IO_ERROR,\n    READY\n};\n\nstruct FileSource {\n    const char* protocol;\n    const char* location;\n};\n\nclass FileReader {\npublic:\n    virtual ~FileReader() = default;\n    \n    virtual const char* GetContents() = 0;\n    virtual size_t GetSize() = 0;\n    virtual FileStatus GetStatus() = 0;\n    virtual void Yeet() = 0;\n    \n    static FileReader* GetReader(const char* path);\n    \n    static void SetSearchList(std::vector<FileSource>);\n    static std::vector<FileSource> GetSearchList();\n    \n    static void Register(const char* protocol, FileReader* (*constr)(const char* location, const char* path));\n};\n\nclass FileWriter {\npublic:\n    virtual ~FileWriter() = default;\n    \n    virtual void SetContents(const char* contents, size_t size) = 0;\n    virtual FileStatus GetStatus() = 0;\n    virtual void Yeet() = 0;\n    virtual bool Flush() = 0;\n    \n    static FileWriter* GetWriter(const char* path);\n    \n    static void Register(const char* protocol, FileWriter* (*constr)(const char* path));\n};\n\n}\n\n#endif // PLATFORM_FILE_H"
  },
  {
    "path": "src/platform/glfw/glfw.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/api.h>\n\n#include <platform/platform.h>\n#include <framework/ui.h>\n#include <framework/system.h>\n#include <framework/logging.h>\n\n#include <thread>\n\n#ifdef __EMSCRIPTEN__\n    #include <emscripten.h>\n    #include <emscripten/html5.h>\n#endif\n\n#ifndef _WIN32\n    #include <GL/gl.h>\n    #include <GLFW/glfw3.h>\n#else\n    #include <glad.c>\n    #include <glfw3.h>\n#endif\n\n#undef ERROR\n\nusing namespace tram::UI;\n\nnamespace tram::Platform {\n\nstatic GLFWwindow* WINDOW;\n\nstatic GLFWcursor* cursors[4] = {nullptr};\n\nstatic KeyboardKey GLFWKeyToKeyboardKey(int keycode);\n\nstatic std::thread::id render_context_thread = std::this_thread::get_id();\n\nstatic Window::callbacks_t callbacks;\n\nvoid Window::Init() {\n    glfwInit();\n\n    glfwSetErrorCallback([](int code, const char* message) {\n        Log(Severity::WARNING, System::UI, \"GLFW error code: {} message: {}\", code, message);\n    });\n    \n#ifndef _WIN32\n        // this is for opengl es 3.0\n        glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);\n        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);\n        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);\n#else\n        // this is for opengl 4.0\n        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);\n        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);\n        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);\n        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);\n        \n        glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, true); \n#endif\n\n    glfwWindowHint(GLFW_FOCUSED, GL_FALSE);\n    \n    WINDOW = glfwCreateWindow(800, 600, (const char*)u8\"Tramvaju Drifta un Pagrabu Pētīšanas Simulatoru Izstrādes Rīkkopa Versija 0.1.1\", nullptr, nullptr);\n    if (WINDOW == nullptr) {\n        Log(Severity::ERROR, System::UI, \"GLFW window didn't open!\");\n        glfwTerminate();\n        abort();\n    }\n\n    glfwMakeContextCurrent(WINDOW);\n    render_context_thread = std::this_thread::get_id();\n    \n    // random settings that we don't need on web platform\n#ifdef _WIN32\n        if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {\n            Log(Severity::ERROR, System::UI, \"OpenGL context didn't open\");\n            abort();\n        }\n\n        glfwSwapInterval(1);\n#endif\n\n    glfwSetFramebufferSizeCallback(WINDOW, [](GLFWwindow* window, int width, int height) {\n        callbacks.screen_resize(width, height);\n    });\n\n    glfwSetWindowCloseCallback(WINDOW, [](GLFWwindow* window) {\n        callbacks.screen_close();\n    });\n\n    glfwSetKeyCallback(WINDOW, [](GLFWwindow* window, int key, int scancode, int action, int mods) {\n        if (action == GLFW_PRESS) {\n            callbacks.key_press(GLFWKeyToKeyboardKey(key));\n        }\n        \n        if (action == GLFW_RELEASE) {\n            callbacks.key_release(GLFWKeyToKeyboardKey(key));\n        }\n        \n        // GLFW doesn't forward backspace to CharCallback, so instead we will\n        // handle this here.\n        if (action == GLFW_PRESS || action == GLFW_REPEAT) switch (key) {\n            case GLFW_KEY_BACKSPACE:\n                callbacks.key_code(8);\n                break;\n            case GLFW_KEY_ENTER:\n                callbacks.key_code(10);\n                break;\n            default:\n                break;\n        }\n    });\n    \n    glfwSetCursorPosCallback(WINDOW, [](GLFWwindow* window, double xpos, double ypos) {\n        callbacks.key_mouse(xpos, ypos);\n    });\n    \n    glfwSetMouseButtonCallback(WINDOW, [](GLFWwindow* window, int button, int action, int mods) {\n        if (action == GLFW_PRESS) {\n            callbacks.key_press(GLFWKeyToKeyboardKey(button));\n        }\n        \n        if (action == GLFW_RELEASE) {\n            callbacks.key_release(GLFWKeyToKeyboardKey(button));\n        }\n    });\n    \n    glfwSetScrollCallback(WINDOW, [](GLFWwindow* window, double xoffset, double yoffset) {\n        callbacks.key_scroll(yoffset);\n    });\n    \n    glfwSetCharCallback(WINDOW, [](GLFWwindow* window, unsigned int codepoint) {\n        callbacks.key_code(codepoint);\n    });\n\n\n    //glfwSetWindowSizeLimits(WINDOW, 640, 480, GLFW_DONT_CARE, GLFW_DONT_CARE);\n    glfwSetWindowSizeLimits(WINDOW, 160, 120, GLFW_DONT_CARE, GLFW_DONT_CARE);\n\n    glfwSetInputMode(WINDOW, GLFW_CURSOR, GLFW_CURSOR_DISABLED);\n    //glfwSetInputMode(WINDOW, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE);\n\n    cursors[CURSOR_DEFAULT] = glfwCreateStandardCursor(GLFW_ARROW_CURSOR);\n    cursors[CURSOR_TEXT] = glfwCreateStandardCursor(GLFW_IBEAM_CURSOR);\n    cursors[CURSOR_CLICK] = glfwCreateStandardCursor(GLFW_HAND_CURSOR);\n}\n\nvoid Window::Update() {\n    glfwSwapBuffers(WINDOW);\n}\n\nvoid Window::Uninit() {\n    glfwTerminate();\n}\n\nvoid Window::SetTitle(const char* title) {\n    assert(WINDOW);\n    glfwSetWindowTitle (WINDOW, title);\n}\n\nvoid Window::SetSize(int w, int h) {\n    assert(WINDOW);\n    glfwSetWindowSize(WINDOW, w, h);\n}\n\nvoid Window::SetCursor(CursorType cursor) {\n    glfwSetCursor(WINDOW, cursors[cursor]);\n}\n\nvoid Window::SetCursorPosition(float x, float y) {\n    glfwSetCursorPos(WINDOW, x, y);\n}\n\nvoid Window::EnableCursor() {\n    glfwSetInputMode(WINDOW, GLFW_CURSOR, GLFW_CURSOR_NORMAL);\n}\n\nvoid Window::DisableCursor() {\n    glfwSetInputMode(WINDOW, GLFW_CURSOR, GLFW_CURSOR_DISABLED);\n}\n\nbool Window::IsRawInput() {\n    return glfwGetInputMode(WINDOW, GLFW_RAW_MOUSE_MOTION);\n}\n\nvoid Window::SetRawInput(bool input) {\n    glfwSetInputMode(WINDOW, GLFW_RAW_MOUSE_MOTION, input);\n}\n\ndouble Window::GetTime() {\n    return glfwGetTime();\n}\n\nint current_monitor = 0;\nint Window::GetCurrentMonitor() {\n    return current_monitor;\n}\n\nint Window::GetMonitorCount() {\n    int count;\n    glfwGetMonitors(&count);\n    return count;\n}\n\nvoid Window::SetMonitor(int monitor) {\n    current_monitor = monitor;\n}\n\nbool is_fullscreen = false;\nbool Window::IsFullscreen() {\n    return is_fullscreen;\n}\n\nvoid Window::SetFullscreen(bool fullscreen) {\n    is_fullscreen = fullscreen;\n    if (fullscreen) {\n        int monitor_count;\n        GLFWmonitor** monitors = glfwGetMonitors(&monitor_count);\n        assert(current_monitor < monitor_count);\n        int width, height;\n        glfwGetWindowSize(WINDOW, &width, &height);\n        glfwSetWindowMonitor(WINDOW,\n                             monitors[current_monitor],\n                             0,\n                             0,\n                             width,\n                             height,\n                             60);\n    } else {\n        glfwSetWindowMonitor(WINDOW,\n                            nullptr,\n                            16,\n                            32,\n                            800,\n                            600,\n                            60);\n    }\n}\n\nbool vsync = true;\nbool Window::IsVsync() {\n    return vsync;\n}\n\nvoid Window::SetVsync(bool value) {\n    vsync = value;\n    \n    if (vsync) {\n        glfwSwapInterval(1);\n    } else {\n        glfwSwapInterval(0);\n    }\n}\n\nbool Window::IsRenderContextThread() {\n    return render_context_thread == std::this_thread::get_id();\n}\n\nvoid Window::SetCallbacks(callbacks_t window_callbacks) {\n    callbacks = window_callbacks;\n}\n\nvoid Input::Init() {\n    \n}\n\nvoid Input::Update() {\n    glfwPollEvents();\n}\n\nvoid Input::Uninit() {\n\n}\n\n/// Maps a glfw keycode to a KeyboardKey.\nstatic KeyboardKey GLFWKeyToKeyboardKey (int keycode) {\n    switch (keycode) {\n        case GLFW_MOUSE_BUTTON_LEFT:    return KEY_LEFTMOUSE;\n        case GLFW_MOUSE_BUTTON_RIGHT:   return KEY_RIGHTMOUSE;\n        case GLFW_MOUSE_BUTTON_MIDDLE:  return KEY_MIDDLEMOUSE;\n        case GLFW_KEY_SPACE:            return KEY_SPACE;\n        case GLFW_KEY_APOSTROPHE:       return KEY_APOSTROPHE;\n        case GLFW_KEY_COMMA:            return KEY_COMMA;\n        case GLFW_KEY_MINUS:            return KEY_MINUS;\n        case GLFW_KEY_PERIOD:           return KEY_PERIOD;\n        case GLFW_KEY_SLASH:            return KEY_SLASH;\n        case GLFW_KEY_0:                return KEY_0;\n        case GLFW_KEY_1:                return KEY_1;\n        case GLFW_KEY_2:                return KEY_2;\n        case GLFW_KEY_3:                return KEY_3;\n        case GLFW_KEY_4:                return KEY_4;\n        case GLFW_KEY_5:                return KEY_5;\n        case GLFW_KEY_6:                return KEY_6;\n        case GLFW_KEY_7:                return KEY_7;\n        case GLFW_KEY_8:                return KEY_8;\n        case GLFW_KEY_9:                return KEY_9;\n        case GLFW_KEY_SEMICOLON:        return KEY_SEMICOLON;\n        case GLFW_KEY_EQUAL:            return KEY_EQUAL;\n        case GLFW_KEY_A:                return KEY_A;\n        case GLFW_KEY_B:                return KEY_B;\n        case GLFW_KEY_C:                return KEY_C;\n        case GLFW_KEY_D:                return KEY_D;\n        case GLFW_KEY_E:                return KEY_E;\n        case GLFW_KEY_F:                return KEY_F;\n        case GLFW_KEY_G:                return KEY_G;\n        case GLFW_KEY_H:                return KEY_H;\n        case GLFW_KEY_I:                return KEY_I;\n        case GLFW_KEY_J:                return KEY_J;\n        case GLFW_KEY_K:                return KEY_K;\n        case GLFW_KEY_L:                return KEY_L;\n        case GLFW_KEY_M:                return KEY_M;\n        case GLFW_KEY_N:                return KEY_N;\n        case GLFW_KEY_O:                return KEY_O;\n        case GLFW_KEY_P:                return KEY_P;\n        case GLFW_KEY_Q:                return KEY_Q;\n        case GLFW_KEY_R:                return KEY_R;\n        case GLFW_KEY_S:                return KEY_S;\n        case GLFW_KEY_T:                return KEY_T;\n        case GLFW_KEY_U:                return KEY_U;\n        case GLFW_KEY_V:                return KEY_V;\n        case GLFW_KEY_W:                return KEY_W;\n        case GLFW_KEY_X:                return KEY_X;\n        case GLFW_KEY_Y:                return KEY_Y;\n        case GLFW_KEY_Z:                return KEY_Z;\n        case GLFW_KEY_LEFT_BRACKET:     return KEY_LEFT_BRACKET;\n        case GLFW_KEY_BACKSLASH:        return KEY_BACKSLASH;\n        case GLFW_KEY_RIGHT_BRACKET:    return KEY_RIGHT_BRACKET;\n        case GLFW_KEY_GRAVE_ACCENT:     return KEY_GRAVE_ACCENT;\n        case GLFW_KEY_WORLD_1:          return KEY_WORLD_1;\n        case GLFW_KEY_WORLD_2:          return KEY_WORLD_2;\n        case GLFW_KEY_ESCAPE:           return KEY_ESCAPE;\n        case GLFW_KEY_ENTER:            return KEY_ENTER;\n        case GLFW_KEY_TAB:              return KEY_TAB;\n        case GLFW_KEY_BACKSPACE:        return KEY_BACKSPACE;\n        case GLFW_KEY_INSERT:           return KEY_INSERT;\n        case GLFW_KEY_DELETE:           return KEY_DELETE;\n        case GLFW_KEY_RIGHT:            return KEY_RIGHT;\n        case GLFW_KEY_LEFT:             return KEY_LEFT;\n        case GLFW_KEY_DOWN:             return KEY_DOWN;\n        case GLFW_KEY_UP:               return KEY_UP;\n        case GLFW_KEY_PAGE_UP:          return KEY_PAGE_UP;\n        case GLFW_KEY_PAGE_DOWN:        return KEY_PAGE_DOWN;\n        case GLFW_KEY_HOME:             return KEY_HOME;\n        case GLFW_KEY_END:              return KEY_END;\n        case GLFW_KEY_CAPS_LOCK:        return KEY_CAPS_LOCK;\n        case GLFW_KEY_SCROLL_LOCK:      return KEY_SCROLL_LOCK;\n        case GLFW_KEY_NUM_LOCK:         return KEY_NUM_LOCK;\n        case GLFW_KEY_PRINT_SCREEN:     return KEY_PRINT_SCREEN;\n        case GLFW_KEY_PAUSE:            return KEY_PAUSE;\n        case GLFW_KEY_F1:               return KEY_F1;\n        case GLFW_KEY_F2:               return KEY_F2;\n        case GLFW_KEY_F3:               return KEY_F3;\n        case GLFW_KEY_F4:               return KEY_F4;\n        case GLFW_KEY_F5:               return KEY_F5;\n        case GLFW_KEY_F6:               return KEY_F6;\n        case GLFW_KEY_F7:               return KEY_F7;\n        case GLFW_KEY_F8:               return KEY_F8;\n        case GLFW_KEY_F9:               return KEY_F9;\n        case GLFW_KEY_F10:              return KEY_F10;\n        case GLFW_KEY_F11:              return KEY_F11;\n        case GLFW_KEY_F12:              return KEY_F12;\n        case GLFW_KEY_F13:              return KEY_F13;\n        case GLFW_KEY_F14:              return KEY_F14;\n        case GLFW_KEY_F15:              return KEY_F15;\n        case GLFW_KEY_F16:              return KEY_F16;\n        case GLFW_KEY_F17:              return KEY_F17;\n        case GLFW_KEY_F18:              return KEY_F18;\n        case GLFW_KEY_F19:              return KEY_F19;\n        case GLFW_KEY_F20:              return KEY_F20;\n        case GLFW_KEY_F21:              return KEY_F21;\n        case GLFW_KEY_F22:              return KEY_F22;\n        case GLFW_KEY_F23:              return KEY_F23;\n        case GLFW_KEY_F24:              return KEY_F24;\n        case GLFW_KEY_F25:              return KEY_F25;\n        case GLFW_KEY_KP_0:             return KEY_KP_0;\n        case GLFW_KEY_KP_1:             return KEY_KP_1;\n        case GLFW_KEY_KP_2:             return KEY_KP_2;\n        case GLFW_KEY_KP_3:             return KEY_KP_3;\n        case GLFW_KEY_KP_4:             return KEY_KP_4;\n        case GLFW_KEY_KP_5:             return KEY_KP_5;\n        case GLFW_KEY_KP_6:             return KEY_KP_6;\n        case GLFW_KEY_KP_7:             return KEY_KP_7;\n        case GLFW_KEY_KP_8:             return KEY_KP_8;\n        case GLFW_KEY_KP_9:             return KEY_KP_9;\n        case GLFW_KEY_KP_DECIMAL:       return KEY_KP_DECIMAL;\n        case GLFW_KEY_KP_DIVIDE:        return KEY_KP_DIVIDE;\n        case GLFW_KEY_KP_MULTIPLY:      return KEY_KP_MULTIPLY;\n        case GLFW_KEY_KP_SUBTRACT:      return KEY_KP_SUBTRACT;\n        case GLFW_KEY_KP_ADD:           return KEY_KP_ADD;\n        case GLFW_KEY_KP_ENTER:         return KEY_KP_ENTER;\n        case GLFW_KEY_KP_EQUAL:         return KEY_KP_EQUAL;\n        case GLFW_KEY_LEFT_SHIFT:       return KEY_LEFT_SHIFT;\n        case GLFW_KEY_LEFT_CONTROL:     return KEY_LEFT_CONTROL;\n        case GLFW_KEY_LEFT_ALT:         return KEY_LEFT_ALT;\n        case GLFW_KEY_LEFT_SUPER:       return KEY_LEFT_SUPER;\n        case GLFW_KEY_RIGHT_SHIFT:      return KEY_RIGHT_SHIFT;\n        case GLFW_KEY_RIGHT_CONTROL:    return KEY_RIGHT_CONTROL;\n        case GLFW_KEY_RIGHT_ALT:        return KEY_RIGHT_ALT;\n        case GLFW_KEY_RIGHT_SUPER:      return KEY_RIGHT_SUPER;\n        case GLFW_KEY_MENU:             return KEY_MENU;\n        default: \n            std::cout << \"UNRECOGNIZED KEYCODE: \" << keycode << std::endl;\n            return KEY_SPACE;\n    }\n}    \n\n}\n"
  },
  {
    "path": "src/platform/image.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/image.h>\n\n#define STB_IMAGE_WRITE_IMPLEMENTATION\n#include <stb_image_write.h>\n\nnamespace tram::Platform {\n\n/// Saves image to disk.\n/// Image needs to be in a RGB 8-bit format.\nvoid SaveImageToDisk(const char* name, int w, int h, const char* image) {\n    // TODO: check directory and make sure that it exists\n    stbi_flip_vertically_on_write(1);\n    stbi_write_png(name, w, h, 3, image, 0);\n}\n\n}"
  },
  {
    "path": "src/platform/image.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_IMAGE_H\n#define TRAM_SDK_PLATFORM_IMAGE_H\n\nnamespace tram::Platform {\n\nvoid SaveImageToDisk(const char* name, int w, int h, const char* image);\n\n}\n\n#endif // TRAM_SDK_PLATFORM_FILE_H"
  },
  {
    "path": "src/platform/other.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/other.h>\n\n\n#ifdef _WIN32\n    #define WIN32_LEAN_AND_MEAN\n    #include <windows.h>\n#endif\n\nnamespace tram::Platform {\n\n/// Attempts to break into debugger.\n/// This function will try to determine if the program is being debugged, and if\n/// it is, then it will break into debugger. If it isn't being debugged, it will\n/// do nothing.\nvoid TryDebugging() {\n\n#ifdef _WIN32\n    if (IsDebuggerPresent()) {\n        DebugBreak();\n    }\n#endif\n    \n    // TODO: look up what do here on other platforms\n}\n\nvoid ShowErrorDialog(const char* message, const char* title) {\n#ifdef _WIN32\n    MessageBoxA(nullptr, message, title, MB_OK);\n#endif\n}\n\n}"
  },
  {
    "path": "src/platform/other.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_OTHER_H\n#define TRAM_SDK_PLATFORM_OTHER_H\n\nnamespace tram::Platform {\n\nvoid TryDebugging();\nvoid ShowErrorDialog(const char*, const char* = nullptr);\n\n}\n\n#endif // TRAM_SDK_PLATFORM_OTHER_H"
  },
  {
    "path": "src/platform/platform.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_PLATFORM_H\n#define TRAM_SDK_PLATFORM_PLATFORM_H\n\nnamespace tram {\n\n}\n\n#endif // PLATFORM_PLATFORM_H"
  },
  {
    "path": "src/platform/sdl/sdl.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/api.h>\n\n#include <platform/platform.h>\n#include <framework/ui.h>\n#include <framework/logging.h>\n\n#include <render/api.h>\n\n#include <thread>\n\n#ifndef _WIN32\n    #include <sdl2/SDL.h>\n#else\n    #include <SDL.h>\n    #include <SDL_syswm.h>\n    #include <glad.c>\n#endif\n\n//#include <SDL.h>\n//#include <SDL_syswm.h>\n//#include <glad.c>\n\n#ifdef _WIN32\n#include <d3dx9.h>\n#endif\n\n#undef ERROR\n\nusing namespace tram::UI;\n\nnamespace tram::Platform {\n\nstatic SDL_Window* window = nullptr;\n\nstatic SDL_Renderer* renderer = nullptr;\nstatic SDL_Texture* frame_texture = nullptr;\nstatic uint32_t* frame_buffer = nullptr;\n\nstatic int screen_width = 800;\nstatic int screen_height = 600;\nstatic int screen_scale = 1;\nstatic int relpos_x = screen_width/2;\nstatic int relpos_y = screen_height/2;\nstatic bool cursor_enabled = false;\n\nstatic Window::callbacks_t callbacks;\n\nstatic std::thread::id render_context_thread = std::this_thread::get_id();\n\n#ifdef _WIN32\nstatic IDirect3DDevice9* d3d_device = nullptr;\n#endif\n\nstatic void SoftwareRenderContextUpdate() {\n    //SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, \"linear\");\n    //SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, \"nearest\");\n    //SDL_RenderSetLogicalSize(renderer, screen_width/screen_scale, screen_height/screen_scale);\n    \n    frame_texture = SDL_CreateTexture(renderer,\n                           //SDL_PIXELFORMAT_ARGB8888,\n                           SDL_PIXELFORMAT_RGB565,\n                           SDL_TEXTUREACCESS_STREAMING,\n                           screen_width/screen_scale, screen_height/screen_scale);\n    \n    auto screenbuffersize = screen_width * screen_height * sizeof(uint32_t);\n    frame_buffer = (uint32_t*)malloc(screenbuffersize);\n    memset(frame_buffer, 0x0000, screenbuffersize);\n    \n    Render::API::SetDevice(frame_buffer);\n}\n\nvoid Window::Init() {\n    if (SDL_Init(SDL_INIT_VIDEO) < 0) {\n        Log(Severity::WARNING, System::PLATFORM, \"SDL2 didn't open!\");\n        abort();\n    }\n    \n    uint32_t window_flags = SDL_WINDOW_RESIZABLE | SDL_WINDOW_SHOWN;\n    \n    if (Render::API::GetContext() == Render::API::CONTEXT_OPENGL) {\n        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);\n        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);\n        \n        window_flags |= SDL_WINDOW_OPENGL;\n    }\n    \n    window = SDL_CreateWindow((const char*)u8\"Tramvaju Drifta un Pagrabu Pētīšanas Simulatoru Izstrādes Rīkkopa Versija 0.1.1\", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width, screen_height, window_flags);\n    if (window == nullptr) {\n        Log(Severity::WARNING, System::PLATFORM, \"SDL2 window didn't open! {}\", SDL_GetError());\n        abort();\n    }\n    \n    if (Render::API::GetContext() == Render::API::CONTEXT_OPENGL) {\n        void* context = SDL_GL_CreateContext(window);\n        if (context == nullptr) {\n            Log(Severity::ERROR, System::PLATFORM, \"SDL2 context didn't open! {}\", SDL_GetError());\n            abort();\n        }\n        \n#ifdef _WIN32\n        if (!gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress)) {\n            Log(Severity::ERROR, System::PLATFORM, \"OpenGL context didn't open!\");\n            abort();\n        }\n        \n        SDL_GL_SetSwapInterval(1);\n#endif\n    }\n    \n#ifdef _WIN32\n    if (Render::API::GetContext() == Render::API::CONTEXT_DIRECT3D) {\n        IDirect3D9* d3d9 = Direct3DCreate9(D3D_SDK_VERSION);\n        if (!d3d9) {\n            Log(Severity::ERROR, System::PLATFORM, \"Direct3D didn't open!\");\n            abort();\n        }\n        \n        D3DCAPS9 caps;\n        d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);\n\n        int vertex_processing = 0;\n        if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) {\n            vertex_processing = D3DCREATE_HARDWARE_VERTEXPROCESSING;\n            Log(Severity::DEFAULT, System::PLATFORM, \"Hardware T&L available.\");\n        } else {\n            vertex_processing = D3DCREATE_SOFTWARE_VERTEXPROCESSING;\n            Log(Severity::DEFAULT, System::PLATFORM, \"Hardware T&L unavailable.\");\n        }\n        \n        if (caps.MaxVertexBlendMatrixIndex == 0) {\n            vertex_processing = D3DCREATE_SOFTWARE_VERTEXPROCESSING;\n            Log(Severity::DEFAULT, System::PLATFORM, \"Hardware matrix blending unavailable.\");\n        }\n        \n        SDL_SysWMinfo wm_info;\n        SDL_VERSION(&wm_info.version);\n        SDL_GetWindowWMInfo(window, &wm_info);\n   \n        D3DPRESENT_PARAMETERS d3dpp;\n        d3dpp.BackBufferWidth               = screen_width;\n        d3dpp.BackBufferHeight              = screen_height;\n        d3dpp.BackBufferFormat              = D3DFMT_A8R8G8B8;\n        d3dpp.BackBufferCount               = 1;\n        d3dpp.MultiSampleType               = D3DMULTISAMPLE_NONE;\n        d3dpp.MultiSampleQuality            = 0;\n        d3dpp.SwapEffect                    = D3DSWAPEFFECT_DISCARD; \n        d3dpp.hDeviceWindow                 = wm_info.info.win.window;\n        d3dpp.Windowed                      = true;\n        d3dpp.EnableAutoDepthStencil        = true; \n        d3dpp.AutoDepthStencilFormat        = D3DFMT_D24S8;\n        d3dpp.Flags                         = 0;\n        d3dpp.FullScreen_RefreshRateInHz    = D3DPRESENT_RATE_DEFAULT;\n        //d3dpp.PresentationInterval          = D3DPRESENT_INTERVAL_IMMEDIATE; // no vsync\n        d3dpp.PresentationInterval          = D3DPRESENT_INTERVAL_ONE; // vsync\n   \n\n        HRESULT hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT,\n                                        D3DDEVTYPE_HAL,\n                                        wm_info.info.win.window,\n                                        vertex_processing,\n                                        &d3dpp,\n                                        &d3d_device);\n                                   \n        if (FAILED(hr)) {\n            d3dpp.AutoDepthStencilFormat = D3DFMT_D16;\n\n            hr = d3d9->CreateDevice(D3DADAPTER_DEFAULT,\n                                    D3DDEVTYPE_HAL,\n                                    wm_info.info.win.window,\n                                    vertex_processing,\n                                    &d3dpp,\n                                    &d3d_device);\n\n            if (FAILED(hr)) {\n                d3d9->Release();\n                std::cout << \"Direct3D device didn't get created!\" << std::endl;\n                abort();\n            }\n        }\n    \n        d3d9->Release();\n\n        Render::API::SetDevice(d3d_device);\n    }\n#endif\n    \n    if (Render::API::GetContext() == Render::API::CONTEXT_SOFTWARE) {\n        renderer = SDL_CreateRenderer(window, -1, 0 /*SDL_RENDERER_SOFTWARE*/);\n        \n        if (!renderer) {\n            Log(Severity::ERROR, System::PLATFORM, \"SDL_Renderer didn't open!\");\n            abort();\n        }\n\n        int ww = screen_width/screen_scale;\n        int hh = screen_height/screen_scale;\n        //Render::API::SetScreenSize(ww, hh);\n        Render::SetScreenSize(ww, hh);\n\n        callbacks.screen_resize(screen_width/screen_scale, screen_height/screen_scale);\n\n        SoftwareRenderContextUpdate();\n    }\n    \n    render_context_thread = std::this_thread::get_id();\n    \n    SDL_SetRelativeMouseMode(SDL_TRUE);\n}\n\nvoid Window::Update() {\n    if (Render::API::GetContext() == Render::API::CONTEXT_OPENGL) {\n        SDL_GL_SwapWindow(window);\n    }\n    \n#ifdef _WIN32\n    if (Render::API::GetContext() == Render::API::CONTEXT_DIRECT3D) {\n        d3d_device->Present(0, 0, 0, 0);\n    }\n#endif\n    \n    if (Render::API::GetContext() == Render::API::CONTEXT_SOFTWARE) {\n        SDL_UpdateTexture(frame_texture, nullptr, frame_buffer, (screen_width/screen_scale) * sizeof(uint16_t) /*sizeof(uint32_t)*/);\n        \n        SDL_RenderClear(renderer);\n        SDL_RenderCopy(renderer, frame_texture, NULL, NULL);\n        SDL_RenderPresent(renderer);\n    }\n}\n\nvoid Window::Uninit() {\n    SDL_DestroyWindow(window);\n    SDL_Quit();\n}\n\nvoid Window::SetTitle(const char* title) {\n    SDL_SetWindowTitle(window, title);\n}\n\nvoid Window::SetSize(int w, int h) {\n    SDL_SetWindowSize(window, w, h);\n    \n    screen_width = w;\n    screen_height = h;\n    \n    SoftwareRenderContextUpdate();\n    \n    int ww = w/screen_scale;\n    int hh = h/screen_scale;\n    callbacks.screen_resize(ww, hh);\n}\n\nvoid Window::SetScale(int s) {\n    screen_scale = s;\n}\n\nvoid Window::SetCursor(CursorType cursor) {\n    \n}\n\nvoid Window::SetCursorPosition(float x, float y) {\n    SDL_WarpMouseInWindow(window, x, y);\n}\n\nvoid Window::EnableCursor() {\n    SDL_SetRelativeMouseMode(SDL_FALSE);\n    \n    cursor_enabled = true;\n}\n\nvoid Window::DisableCursor() {\n    SDL_SetRelativeMouseMode(SDL_TRUE);\n    \n    cursor_enabled = false;\n    \n    relpos_x = screen_width/2;\n    relpos_y = screen_height/2;\n}\n\ndouble Window::GetTime() {\n    return (float)SDL_GetTicks() / 1000.0f;\n}\n\n// TODO: properly implement all of these very nice functions\nint Window::GetCurrentMonitor() {\n    return 0;\n}\n\nint Window::GetMonitorCount() {\n    return 1;\n}\n\nvoid Window::SetMonitor(int monitor) {\n    \n}\n\nbool Window::IsFullscreen() {\n    return false;\n}\n\nvoid Window::SetFullscreen(bool) {\n    \n}\n\nbool Window::IsVsync() {\n    return false;\n}\n\nvoid Window::SetVsync(bool) {\n    \n}\n\nbool Window::IsRawInput() {\n    return false;\n}\n\nvoid Window::SetRawInput(bool) {\n    \n}\n\nbool Window::IsRenderContextThread() {\n    return render_context_thread == std::this_thread::get_id();\n}\n\nvoid Window::SetCallbacks(callbacks_t window_callbacks) {\n    callbacks = window_callbacks;\n}\n\nstatic KeyboardKey SDLKeyToKeyboardKey(SDL_Keysym keycode);\nstatic KeyboardKey SDLMouseKeyToKeyboardKey(uint8_t button);\n\nvoid Input::Init() {\n    \n}\n\nvoid Input::Update() {\n    SDL_Event event;\n    while( SDL_PollEvent(&event) != 0) {\n        switch (event.type) {\n            case SDL_WINDOWEVENT:\n                switch (event.window.event) {\n                    case SDL_WINDOWEVENT_RESIZED: {\n                        int off_x = relpos_x - screen_width/2;\n                        int off_y = relpos_y - screen_height/2;\n                    \n                        screen_width = event.window.data1;\n                        screen_height = event.window.data2;\n                    \n                        relpos_x = off_x + screen_width/2;\n                        relpos_y = off_y + screen_height/2;\n\n                        SoftwareRenderContextUpdate();\n\n                        callbacks.screen_resize(screen_width/screen_scale, screen_height/screen_scale);\n                        } break;\n                    default:\n                        break;\n                }\n                break;\n            case SDL_KEYDOWN:\n                callbacks.key_press(SDLKeyToKeyboardKey(event.key.keysym));\n                break;\n            case SDL_KEYUP:\n                callbacks.key_release(SDLKeyToKeyboardKey(event.key.keysym));\n                break;\n            case SDL_MOUSEMOTION:\n                if (cursor_enabled) {\n                    callbacks.key_mouse((float)event.motion.x/screen_scale, (float)event.motion.y/screen_scale);\n                } else {\n                    relpos_x += event.motion.xrel * 2;\n                    relpos_y += event.motion.yrel * 2;\n                    \n                    callbacks.key_mouse((float)relpos_x/screen_scale, (float)relpos_y/screen_scale);\n                }\n                break;\n            case SDL_MOUSEBUTTONDOWN:\n                callbacks.key_press(SDLMouseKeyToKeyboardKey(event.button.button));\n                break;\n            case SDL_MOUSEBUTTONUP:\n                callbacks.key_release(SDLMouseKeyToKeyboardKey(event.button.button));\n                break;\n            case SDL_MOUSEWHEEL:\n                callbacks.key_scroll(event.wheel.y);\n                break;\n            case SDL_QUIT:\n                callbacks.screen_close();\n                break;\n            default:\n                break;\n        }\n    }\n}\n\nvoid Input::Uninit() {\n\n}\n\nstatic KeyboardKey SDLMouseKeyToKeyboardKey(uint8_t button) {\n    switch (button) {\n        case SDL_BUTTON_LEFT: return UI::KEY_LEFTMOUSE;\n        case SDL_BUTTON_MIDDLE: return UI::KEY_MIDDLEMOUSE;\n        case SDL_BUTTON_RIGHT: return UI::KEY_RIGHTMOUSE;\n        default: return KEY_SPACE;\n    }\n}\n\nstatic KeyboardKey SDLKeyToKeyboardKey(SDL_Keysym keycode) {\n    switch (keycode.scancode) {\n        case SDL_SCANCODE_A: return KEY_A;\n        case SDL_SCANCODE_B: return KEY_B;\n        case SDL_SCANCODE_C: return KEY_C;\n        case SDL_SCANCODE_D: return KEY_D;\n        case SDL_SCANCODE_E: return KEY_E;\n        case SDL_SCANCODE_F: return KEY_F;\n        case SDL_SCANCODE_G: return KEY_G;\n        case SDL_SCANCODE_H: return KEY_H;\n        case SDL_SCANCODE_I: return KEY_I;\n        case SDL_SCANCODE_J: return KEY_J;\n        case SDL_SCANCODE_K: return KEY_K;\n        case SDL_SCANCODE_L: return KEY_L;\n        case SDL_SCANCODE_M: return KEY_M;\n        case SDL_SCANCODE_N: return KEY_N;\n        case SDL_SCANCODE_O: return KEY_O;\n        case SDL_SCANCODE_P: return KEY_P;\n        case SDL_SCANCODE_Q: return KEY_Q;\n        case SDL_SCANCODE_R: return KEY_R;\n        case SDL_SCANCODE_S: return KEY_S;\n        case SDL_SCANCODE_T: return KEY_T;\n        case SDL_SCANCODE_U: return KEY_U;\n        case SDL_SCANCODE_V: return KEY_V;\n        case SDL_SCANCODE_W: return KEY_W;\n        case SDL_SCANCODE_X: return KEY_X;\n        case SDL_SCANCODE_Y: return KEY_Y;\n        case SDL_SCANCODE_Z: return KEY_Z;\n\n        case SDL_SCANCODE_1: return KEY_1;\n        case SDL_SCANCODE_2: return KEY_2;\n        case SDL_SCANCODE_3: return KEY_3;\n        case SDL_SCANCODE_4: return KEY_4;\n        case SDL_SCANCODE_5: return KEY_5;\n        case SDL_SCANCODE_6: return KEY_6;\n        case SDL_SCANCODE_7: return KEY_7;\n        case SDL_SCANCODE_8: return KEY_8;\n        case SDL_SCANCODE_9: return KEY_9;\n        case SDL_SCANCODE_0: return KEY_0;\n\n        case SDL_SCANCODE_RETURN: return KEY_ENTER;\n        case SDL_SCANCODE_ESCAPE: return KEY_ESCAPE;\n        case SDL_SCANCODE_BACKSPACE: return KEY_BACKSPACE;\n        case SDL_SCANCODE_TAB: return KEY_TAB;\n        case SDL_SCANCODE_SPACE: return KEY_SPACE;\n\n        case SDL_SCANCODE_MINUS: return KEY_MINUS;\n        case SDL_SCANCODE_EQUALS: return KEY_EQUAL;\n        case SDL_SCANCODE_LEFTBRACKET: return KEY_LEFT_BRACKET;\n        case SDL_SCANCODE_RIGHTBRACKET: return KEY_RIGHT_BRACKET;\n        case SDL_SCANCODE_BACKSLASH: return KEY_BACKSLASH;\n        case SDL_SCANCODE_NONUSHASH: return KEY_BACKSLASH;\n        case SDL_SCANCODE_SEMICOLON: return KEY_SEMICOLON;\n        case SDL_SCANCODE_APOSTROPHE: return KEY_APOSTROPHE;\n        case SDL_SCANCODE_GRAVE: return KEY_GRAVE_ACCENT;\n        case SDL_SCANCODE_COMMA: return KEY_COMMA;\n        case SDL_SCANCODE_PERIOD: return KEY_PERIOD;\n        case SDL_SCANCODE_SLASH: return KEY_SLASH;\n\n        case SDL_SCANCODE_CAPSLOCK: return KEY_CAPS_LOCK;\n\n        case SDL_SCANCODE_F1: return KEY_F1;\n        case SDL_SCANCODE_F2: return KEY_F2;\n        case SDL_SCANCODE_F3: return KEY_F3;\n        case SDL_SCANCODE_F4: return KEY_F4;\n        case SDL_SCANCODE_F5: return KEY_F5;\n        case SDL_SCANCODE_F6: return KEY_F6;\n        case SDL_SCANCODE_F7: return KEY_F7;\n        case SDL_SCANCODE_F8: return KEY_F8;\n        case SDL_SCANCODE_F9: return KEY_F9;\n        case SDL_SCANCODE_F10: return KEY_F10;\n        case SDL_SCANCODE_F11: return KEY_F11;\n        case SDL_SCANCODE_F12: return KEY_F12;\n\n        case SDL_SCANCODE_PRINTSCREEN: return KEY_PRINT_SCREEN;\n        case SDL_SCANCODE_SCROLLLOCK: return KEY_SCROLL_LOCK;\n        case SDL_SCANCODE_PAUSE: return KEY_PAUSE;\n        case SDL_SCANCODE_INSERT: return KEY_INSERT;\n        case SDL_SCANCODE_HOME: return KEY_HOME;\n        case SDL_SCANCODE_PAGEUP: return KEY_PAGE_UP;\n        case SDL_SCANCODE_DELETE: return KEY_DELETE;\n        case SDL_SCANCODE_END: return KEY_END;\n        case SDL_SCANCODE_PAGEDOWN: return KEY_PAGE_DOWN;\n        case SDL_SCANCODE_RIGHT: return KEY_RIGHT;\n        case SDL_SCANCODE_LEFT: return KEY_LEFT;\n        case SDL_SCANCODE_DOWN: return KEY_DOWN;\n        case SDL_SCANCODE_UP: return KEY_UP;\n\n        case SDL_SCANCODE_NUMLOCKCLEAR: return KEY_NUM_LOCK;\n        case SDL_SCANCODE_KP_DIVIDE: return KEY_KP_DIVIDE;\n        case SDL_SCANCODE_KP_MULTIPLY: return KEY_KP_MULTIPLY;\n        case SDL_SCANCODE_KP_MINUS: return KEY_KP_SUBTRACT;\n        case SDL_SCANCODE_KP_PLUS: return KEY_KP_ADD;\n        case SDL_SCANCODE_KP_ENTER: return KEY_KP_ENTER;\n        case SDL_SCANCODE_KP_1: return KEY_KP_1;\n        case SDL_SCANCODE_KP_2: return KEY_KP_2;\n        case SDL_SCANCODE_KP_3: return KEY_KP_3;\n        case SDL_SCANCODE_KP_4: return KEY_KP_4;\n        case SDL_SCANCODE_KP_5: return KEY_KP_5;\n        case SDL_SCANCODE_KP_6: return KEY_KP_6;\n        case SDL_SCANCODE_KP_7: return KEY_KP_7;\n        case SDL_SCANCODE_KP_8: return KEY_KP_8;\n        case SDL_SCANCODE_KP_9: return KEY_KP_9;\n        case SDL_SCANCODE_KP_0: return KEY_KP_0;\n        case SDL_SCANCODE_KP_PERIOD: return KEY_KP_DECIMAL;\n\n        case SDL_SCANCODE_NONUSBACKSLASH: return KEY_BACKSLASH;\n        case SDL_SCANCODE_KP_EQUALS: return KEY_KP_EQUAL;\n        case SDL_SCANCODE_F13: return KEY_F13;\n        case SDL_SCANCODE_F14: return KEY_F14;\n        case SDL_SCANCODE_F15: return KEY_F15;\n        case SDL_SCANCODE_F16: return KEY_F16;\n        case SDL_SCANCODE_F17: return KEY_F17;\n        case SDL_SCANCODE_F18: return KEY_F18;\n        case SDL_SCANCODE_F19: return KEY_F19;\n        case SDL_SCANCODE_F20: return KEY_F20;\n        case SDL_SCANCODE_F21: return KEY_F21;\n        case SDL_SCANCODE_F22: return KEY_F22;\n        case SDL_SCANCODE_F23: return KEY_F23;\n        case SDL_SCANCODE_F24: return KEY_F24;\n\n        case SDL_SCANCODE_LCTRL: return KEY_LEFT_CONTROL;\n        case SDL_SCANCODE_LSHIFT: return KEY_LEFT_SHIFT;\n        case SDL_SCANCODE_LALT: return KEY_LEFT_ALT;\n        case SDL_SCANCODE_RCTRL: return KEY_RIGHT_CONTROL;\n        case SDL_SCANCODE_RSHIFT: return KEY_RIGHT_SHIFT;\n        case SDL_SCANCODE_RALT: return KEY_RIGHT_ALT;\n        \n        default:\n            Log(Severity::WARNING, System::PLATFORM, \"UNRECOGNIZED KEYCODE: {}\", keycode.scancode);\n            return KEY_SPACE;\n}}\n\n}"
  },
  {
    "path": "src/platform/terminal.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <platform/terminal.h>\n\n#ifdef _WIN32\n    #define WIN32_LEAN_AND_MEAN\n    #include <windows.h>\n#else\n    #include <cstdio>\n#endif\n\nnamespace tram::Platform {\n\n#ifdef _WIN32\n\nstatic int ColorToCharacterAttribute(TerminalColor color, bool foreground) {\n    const int red = foreground ? FOREGROUND_RED : BACKGROUND_RED;\n    const int green = foreground ? FOREGROUND_GREEN : BACKGROUND_GREEN;\n    const int blue = foreground ? FOREGROUND_BLUE : BACKGROUND_BLUE;\n    const int intense = foreground ? FOREGROUND_INTENSITY : BACKGROUND_INTENSITY;\n    \n    \n    switch (color) {\n        case TerminalColor::BLACK:          return 0;\n        case TerminalColor::BLUE:           return               blue;\n        case TerminalColor::GREEN:          return       green;\n        case TerminalColor::CYAN:           return       green | blue;\n        case TerminalColor::RED:            return red;\n        case TerminalColor::MAGENTA:        return red |         blue;\n        case TerminalColor::YELLOW:         return red | green;\n        case TerminalColor::WHITE:          return red | green | blue;\n\n        case TerminalColor::GRAY:           return                      intense;\n        case TerminalColor::LIGHT_BLUE:     return               blue | intense;\n        case TerminalColor::LIGHT_GREEN:    return       green |        intense;\n        case TerminalColor::LIGHT_CYAN:     return       green | blue | intense;\n        case TerminalColor::LIGHT_RED:      return red |                intense;\n        case TerminalColor::LIGHT_MAGENTA:  return red |         blue | intense;\n        case TerminalColor::LIGHT_YELLOW:   return red | green |        intense;\n        case TerminalColor::LIGHT_WHITE:    return red | green | blue | intense;\n        \n        case TerminalColor::DEFAULT:        return foreground ? (red | green | blue) : 0;\n        \n        default:                            return red | green | blue;\n    }\n}\n   \nvoid SwitchForeground(TerminalColor color) {\n    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);\n    \n    CONSOLE_SCREEN_BUFFER_INFO info;\n    GetConsoleScreenBufferInfo(console, &info);\n    \n    short attribute = (info.wAttributes & 0xF0) | ColorToCharacterAttribute(color, true);\n    \n    SetConsoleTextAttribute(console, attribute);\n\n}\n\nvoid SwitchBackground(TerminalColor color) {\n    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);\n    \n    CONSOLE_SCREEN_BUFFER_INFO info;\n    GetConsoleScreenBufferInfo(console, &info);\n    \n    short attribute = (info.wAttributes & 0x0F) | ColorToCharacterAttribute(color, false);\n    \n    SetConsoleTextAttribute(console, attribute);\n}\n\n\n#else\n\nvoid SwitchForeground(TerminalColor color) {\n    // TODO: implement\n}\n\nvoid SwitchBackground(TerminalColor color) {\n    // TODO: implement\n}\n\n#endif\n\n\n\n\n\n}"
  },
  {
    "path": "src/platform/terminal.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_PLATFORM_TERMINAL_H\n#define TRAM_SDK_PLATFORM_TERMINAL_H\n\nnamespace tram::Platform {\n\nenum class TerminalColor {\n    BLACK,\n    BLUE,\n    GREEN,\n    CYAN,\n    RED,\n    MAGENTA,\n    YELLOW,\n    WHITE,\n    GRAY,\n    LIGHT_BLUE,\n    LIGHT_GREEN,\n    LIGHT_CYAN,\n    LIGHT_RED,\n    LIGHT_MAGENTA,\n    LIGHT_YELLOW,\n    LIGHT_WHITE,\n    DEFAULT\n};\n\nvoid SwitchForeground(TerminalColor color);\nvoid SwitchBackground(TerminalColor color);\n\n}\n\n#endif // TRAM_SDK_PLATFORM_TERMINAL_H"
  },
  {
    "path": "src/platform/utils.cpp",
    "content": ""
  },
  {
    "path": "src/render/animation.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/animation.h>\n#include <components/animation.h>\n#include <framework/logging.h>\n#include <framework/file.h>\n\n#include <templates/hashmap.h>\n#include <templates/stackpool.h>\n\n#include <config.h>\n\n#include <cstring>\n\n/**\n * @class tram::Render::Animation render/animation.h <render/animation.h>\n * \n * Skeletal animation for a 3D model.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/render/animation.html\n */\n \n /**\n * @struct tram::Render::Keyframe render/animation.h <render/animation.h>\n * \n * Keyframe for a skeletal animation.\n * \n * All of the translation, rotation and scaling operations will be performed\n * in a given bone's local space.\n * \n * @property tram::Render::Keyframe::frame\n * Used only when keyframes are used in the context of an animation.\n * \n * @see tram::Render::Animation\n * @see https://racenis.github.io/tram-sdk/documentation/render/animation.html\n */\n\n /**\n * @struct tram::Render::Bone render/animation.h <render/animation.h>\n * \n * Bone for a 3D models skeleton.\n * \n * The name property identifies a bone and is referenced in animations. The\n * parent property is used to construct the skeletal hierarchy. The head, tail\n * and roll properties are used to construct the bone's local space within the\n * local space of the 3D model.\n * \n * @property tram::Render::Bone::name\n * Unique identifier for the bone.\n * Must be unique in the context of a skeleton. This name is how Animation\n * keyframes will reference the bone.\n * \n * @property tram::Render::Bone::parent\n * Parent index of the bone.\n * This index is in the context of a skeleton. If set to an index of some other\n * bone, this bone will move together with the parent bone.\n * Can be set to `-1` if you don't want the bone to move with any other bone,\n * and instead want it to move with the models origin or for bones with no\n * parents, i.e. root bones.\n * \n * @property tram::Render::Bone::head\n * Origin of the bone.\n * Position in model space. The bone will rotate and scale around this point.\n * \n * @property tram::Render::Bone::tail\n * Direction of the bone.\n * Position in model space. The vector going from the head of the bone to the\n * tail of the bone will be used as the `z` axis of the bone.\n * \n * @property tram::Render::Bone::roll\n * Rotation of the bone.\n * Determines the rotation of the bone around its `z` axis. This is used to\n * determine in which direction the `x` and `y` axis of the bone local space\n * will be pointing in.\n * \n * @see tram::Render::Animation\n * @see https://racenis.github.io/tram-sdk/documentation/render/animation.html\n */\n\nusing namespace tram;\n\ntemplate <> Pool<Render::Animation> PoolProxy<Render::Animation>::pool(\"animation pool\", RESOURCE_LIMIT_ANIMATION);\ntemplate <> Pool<Render::Pose> PoolProxy<Render::Pose>::pool(\"pose pool\", RESOURCE_LIMIT_POSE);\n\nnamespace tram::Render {\n    \nHashmap<Animation*> animation_list(\"animation name list\", 500);\n\nvoid Animation::LoadFromDisk() {\n    char filename [100] = \"data/animations/\";\n    strcat (filename, name);\n    strcat (filename, \".anim\");\n\n    File file (filename, File::READ);\n\n    if (!file.is_open()) {\n        Log(Severity::WARNING, System::RENDER, \"Can't open {}!\", filename);\n        return;\n    }\n\n    Log(Severity::INFO, System::RENDER, \"Loading animation: {}\", filename);\n\n    name_t header = file.read_name();\n    \n    if (header != \"ANIMv1\") {\n        Log(\"Unrecognized header '{}' in animation {}\", header, filename);\n        return;\n    }\n    \n    // in the ANIMv1 format, there are 24 time units in a single second\n    // in the later formats, a time unit is a single second\n    const float time_scale = header == \"ANIMv1\" ? 1.0f / 24.0f : 1.0f;\n    \n    // the older format also has a superfluous \n    if (header == \"ANIMv1\") file.read_name();\n    \n    header_count = file.read_uint32();\n    \n    const size_t header_size = header_count * sizeof(KeyframeHeader);\n    headers = (KeyframeHeader*)malloc(header_size);\n    \n    uint32_t keyframe_count = 0;\n    uint32_t keyframe_offset = 0;\n    for (uint32_t j = 0; j < header_count; j++){\n        \n        keyframe_offset = keyframe_count;\n        \n        headers[j].bone = file.read_name();\n        headers[j].keyframe_count = file.read_uint32();\n        headers[j].keyframe_offset = keyframe_offset;\n        \n        keyframe_count += headers[j].keyframe_count;\n        \n        keyframes = (Keyframe*)realloc(keyframes, keyframe_count * sizeof(Keyframe));\n        \n        for (uint64_t k = 0; k < headers[j].keyframe_count; k++){\n            Keyframe* kframe = &keyframes[k + keyframe_offset];\n            \n            kframe->frame = file.read_float32() * time_scale;\n            kframe->location = {file.read_float32(), file.read_float32(), file.read_float32()};\n            // glm stores quaternions in wxyz, but the animation format stores\n            // them in xyzw like blender, so we can't use the initializer list\n            kframe->rotation.x = file.read_float32();\n            kframe->rotation.y = file.read_float32();\n            kframe->rotation.z = file.read_float32();\n            kframe->rotation.w = file.read_float32();\n            kframe->scale = {file.read_float32(), file.read_float32(), file.read_float32()};\n        }\n    }\n    \n    status = Resource::READY;\n}\n\nvoid Animation::Unload() {\n    free(keyframes);\n    free(headers);\n    \n    keyframes = nullptr;\n    headers = nullptr;\n    \n    header_count = 0;\n    \n    status = UNLOADED;\n}\n\nKeyframe* Animation::GetKeyframes(name_t bone) {\n    for (uint32_t i = 0; i < header_count; i++) {\n        if (headers[i].bone != bone) continue;\n        \n        return &keyframes[headers[i].keyframe_offset];\n    }\n    \n    return nullptr;\n}\n\nuint32_t Animation::GetKeyframeCount(name_t bone) {\n    for (uint32_t i = 0; i < header_count; i++) {\n        if (headers[i].bone != bone) continue;\n        \n        return headers[i].keyframe_count;\n    }\n    \n    return 0;\n}\n\nAnimation* Animation::Find (name_t name) {\n    Animation* animation = animation_list.Find(name);\n    \n    if (!animation) {\n        animation = PoolProxy<Animation>::New(name);\n        animation_list.Insert(UID(name), animation);\n    }\n    \n    return animation;\n}\n    \n}\n\n"
  },
  {
    "path": "src/render/animation.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_ARMATURE_H\n#define TRAM_SDK_ARMATURE_H\n\n#include <unordered_map>\n\n#include <framework/core.h>\n#include <framework/uid.h>\n#include <framework/resource.h>\n\n#include <framework/math.h>\n\nnamespace tram::Render {\n    \ntypedef std::pair<name_t, uint64_t> NameCount; // animation header\nconst size_t BONE_COUNT = 30; // bone count in a pose\n\nstruct Bone {\n    name_t name;\n    int32_t parent = -1;\n    vec3 head = {0.0f, 0.0f, 0.0f};\n    vec3 tail = {1.0f, 1.0f, 1.0f};\n    float roll = 0.0f;\n};\n\nstruct Keyframe {\n    float frame = 0.0f;\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    quat rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    vec3 scale = {1.0f, 1.0f, 1.0f};\n    char padding[4]; // for emscripten ??\n};\n\nstruct Pose {\n    mat4 pose[BONE_COUNT];\n};\n\nstruct KeyframeHeader {\n    name_t bone;\n    uint32_t keyframe_offset;\n    uint32_t keyframe_count;\n};\n\nclass Animation : public Resource {\npublic:\n    Animation(name_t name) : Resource(name) {}\n\n    Keyframe* GetKeyframes(name_t bone);\n    uint32_t GetKeyframeCount(name_t bone);\n    \n    inline KeyframeHeader* GetHeader(uint32_t index) { return &headers[index]; }\n    inline uint32_t GetHeaderCount() { return header_count; }\n    \n    void LoadFromDisk();\n    void LoadFromMemory() {}\n    \n    void Unload();\n    \n    static Animation* Find(name_t name);\n    static void LoadAll();\nprivate:\n    Keyframe* keyframes = nullptr;\n    \n    KeyframeHeader* headers = nullptr;\n    uint32_t header_count = 0;\n};\n\n}\n\n#endif // TRAM_SDK_ARMATURE_H\n"
  },
  {
    "path": "src/render/api.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_API_H\n#define TRAM_SDK_RENDER_API_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\n/**\n * @namespace tram::Render::API\n * \n * Rendering backend API.\n */\n\nnamespace tram::Render::API {\n\n// meta functions\nvoid Init();\nvoid RenderFrame();\n\nvoid SetScreenSize(float width, float height);\nvoid SetScreenClear(vec3 clear_color, bool clear);\n\nvoid SetLightingParameters(vec3 sun_direction, vec3 sun_color, vec3 ambient_color, layer_t layer);\nvoid SetFogParameters(vec3 color, float near, float far, layer_t layer);\n\nvoid SetViewMatrix(const mat4& matrix, layer_t layer);\nvoid SetProjectionMatrix(const mat4& matrix, layer_t layer);\n\nbool IsInteractiveMode();\nvoid SetInteractiveMode(bool is_interactive);\n\nvoid GetScreen(char* buffer, int w, int h);\n\nvoid RegisterShader(vertexformat_t format, materialtype_t type, const char* vertex_shader, const char* fragment_shader);\n\n// drawlist functions\ndrawlistentry_t InsertDrawListEntry();\nvoid RemoveDrawListEntry(drawlistentry_t entry);\n\nuint32_t GetFlags(drawlistentry_t entry);\nvoid SetFlags(drawlistentry_t entry, uint32_t flags);\nvoid SetLayer(drawlistentry_t entry, layer_t layer);\nvoid SetPose(drawlistentry_t entry, Pose* pose);\nvoid SetLightmap(drawlistentry_t entry, texturehandle_t lightmap);\nvoid SetEnvironmentMap(drawlistentry_t entry, texturehandle_t environmentmap);\nvoid SetSphericalHarmonic(drawlistentry_t entry, sphericalharmonic_t harmonic);\nvoid SetLights(drawlistentry_t entry, light_t* lights);\nvoid SetMatrix(drawlistentry_t entry, const mat4& matrix);\nvoid SetFadeDistance(drawlistentry_t entry, float near, float far);\n\nvoid SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle);\nvoid SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle);\nvoid SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length);\nvoid SetDrawListSpriteArray(drawlistentry_t entry, spritearray_t sprite_array_handle);\n\nbool SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type);\n\nvoid SetDrawListMaterials(drawlistentry_t entry, size_t material_count, material_t* materials);\n\nvoid SetDrawListColor(drawlistentry_t entry, vec4 color);\n\nvoid SetDrawListTextureOffsets(drawlistentry_t entry, size_t count, vec4* offset);\nvoid SetDrawListAABB(drawlistentry_t entry, vec3 min, vec3 max);\n\n// vertex buffer functions\nvoid CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array, indexarray_t& index_array, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data);\nvoid CreateVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array);\nvoid UpdateVertexArray(vertexarray_t& vertex_buffer, size_t data_size, void* data);\n// TODO: add deletion functions\n\n// texture functions\ntexturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data);\nvoid SetTextureFilter(texturehandle_t texture, TextureFilter texture_filter);\nvoid SetTextureImage(texturehandle_t texture, ColorMode color_mode, uint32_t width, uint32_t height, void* data);\nvoid YeetTexture(texturehandle_t texture);\n\n// sprite functions\nspritearray_t CreateSpriteArray();\nvoid UpdateSpriteArray(spritearray_t array, size_t data_size, void* data);\n\n\n// light functions\nlight_t MakeLight();\nvoid YeetLight(light_t light);\nvoid SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent);\n// TODO: decompose big function?\n\n// material functions\nmaterial_t MakeMaterial();\nvoid YeetMaterial(material_t material);\nvoid SetMaterialTexture(material_t material, texturehandle_t texture);\nvoid SetMaterialNormalMap(material_t material, texturehandle_t texture);\nvoid SetMaterialColor(material_t material, vec4 color);\nvoid SetMaterialSpecularWeight(material_t material, float weight);\nvoid SetMaterialSpecularExponent(material_t material, float exponent);\nvoid SetMaterialSpecularTransparency(material_t material, float transparency);\nvoid SetMaterialReflectivity(material_t material, float reflectivity);\n\n// default layers\nenum LayerType {\n    LAYER_DEFAULT =     0,\n    LAYER_DEBUG =       1,\n    LAYER_OVERLAY =     1,\n    LAYER_REFLECTION =  3,\n    LAYER_GUI =         2,\n};\n\n// rendering contexts\nenum ContextType {\n    CONTEXT_OPENGL,\n    CONTEXT_WEBGL,\n    CONTEXT_DIRECT3D,\n    CONTEXT_SOFTWARE,\n    CONTEXT_NONE\n};\n\nContextType GetContext();\nuint32_t GetMaxIndexRangeLength();\nvoid SetDevice(void*);\n\nbool IsDebugMode();\nvoid SetDebugMode(bool);\n\n}\n\n#endif // TRAM_SDK_RENDER_API_H"
  },
  {
    "path": "src/render/direct3d/direct3d.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H\n#define TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n    struct D3DDrawListEntry {\n        uint32_t flags = 0;\n\n        Pose* pose = nullptr;\n        \n        mat4 matrix = mat4(1.0f);\n\n        uint32_t lights[4] = {0};\n        \n        IDirect3DVertexBuffer9* vertex_buffer = nullptr;\n        IDirect3DIndexBuffer9* index_buffer = nullptr;\n        \n        uint32_t vertex_count = 0;\n        uint32_t index_length = 0;\n        uint32_t index_offset = 0;\n        \n        uint32_t fvf = 0;\n        \n        uint32_t layer = 0;\n        IDirect3DTexture9* lightmap = nullptr;\n        IDirect3DTexture9* texture = nullptr;\n\n        vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n        \n        float specular_weight = 0.0f;\n        float specular_exponent = 1.0f;\n        float specular_transparency = 1.0f;\n    };\n    \n    struct D3DLight {\n        vec3 location = {0.0f, 0.0f, 0.0f};\n        vec3 color = {0.0f, 0.0f, 0.0f};\n        float distance = 0.0f;\n        vec3 direction = {0.0f, 0.0f, -1.0f};\n        float exponent = 0.0f;\n    };\n}\n\n#endif // TRAM_SDK_RENDER_DIRECT3D_DIRECT3D_H"
  },
  {
    "path": "src/render/direct3d/renderer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <render/direct3d/direct3d.h>\n\n#include <d3dx9.h>\n\n#include <templates/octree.h>\n\n//#include <glm/gtc/type_ptr.hpp>\n\nnamespace tram::Render::API {\n\nstatic IDirect3DDevice9* device = nullptr;\n    \nPool<D3DDrawListEntry> draw_list(\"render list\", 500, false);\nPool<D3DLight> light_list(\"light list\", 200, false);\nOctree<uint32_t> light_tree;\nstd::vector<uint32_t> light_tree_ids (200);\n\nstruct VertexBufferMetadata {\n    VertexDefinition vertex_format;\n    DWORD fvf;\n    size_t current_vertex_count;\n    size_t allocated_vertex_count;\n};\nPool<VertexBufferMetadata> vertex_buffer_metadata(\"vertex buffer metadata\", 500, false);\n\nstruct LayerParameters {\n    mat4 projection_matrix = mat4(1.0f);\n    mat4 view_matrix = mat4(1.0f);\n    vec3 view_position = {1.0f, 1.0f, 1.0f};\n    \n    vec3 sun_direction = {0.0f, 1.0f, 0.0f};\n    vec3 sun_color = {1.0f, 1.0f, 1.0f};\n    vec3 ambient_color = {0.3f, 0.3f, 0.3f};\n};\n\nstatic LayerParameters layers[7];\n\nvec3 screen_clear_color = {0.2f, 0.3f, 0.3f};\nbool clear_screen = true;\n\nvoid SetLightingParameters (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, uint32_t layer) {\n    layers[layer].sun_direction = sun_direction;\n    layers[layer].sun_color = sun_color;\n    layers[layer].ambient_color = ambient_color;\n}\n\nvoid SetScreenSize(float width, float height) {\n    // TODO: implement\n}\n\nvoid SetScreenClear (vec3 clear_color, bool clear) {\n    clear_screen = clear;\n    screen_clear_color = clear_color;\n\tscreen_clear_color = COLOR_WHITE * 0.8f;\n}\n\nstatic UINT FVFToStride(DWORD fvf);\n\nvoid RenderFrame() {\n    std::vector<std::pair<uint32_t, D3DDrawListEntry*>> draw_list_sorted;\n    \n    for (auto& entry : draw_list) {\n        uint32_t sort_key = entry.layer;\n        draw_list_sorted.push_back({sort_key, &entry});\n    }\n    \n    sort(draw_list_sorted.begin(), draw_list_sorted.end());\n    \n    if (clear_screen) {\n        int r = screen_clear_color.r * 255.0f;\n        int g = screen_clear_color.g * 255.0f;\n        int b = screen_clear_color.b * 255.0f;\n        device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_RGBA(r, g, b, 0), 1.0f, 0);\n    } else {\n        device->Clear(0, 0, D3DCLEAR_ZBUFFER, 0, 1.0f, 0);\n    }\n    \n    //device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);\n\n    const vec3 a = layers[0].ambient_color;\n    const vec3 c = layers[0].sun_color;\n    const vec3 d = -layers[0].sun_direction;\n\n    D3DLIGHT9 light;\n    ::ZeroMemory(&light, sizeof(light));\n    light.Type      = D3DLIGHT_DIRECTIONAL;\n    light.Ambient   = D3DXCOLOR(a.r, a.g, a.b, 1.0f);\n    light.Diffuse   = D3DXCOLOR(c.r, c.g, c.b, 1.0f);\n    light.Specular  = D3DXCOLOR(c.r, c.g, c.b, 1.0f);\n    light.Direction = D3DXVECTOR3(d.x, d.y, d.z);\n    device->SetLight(4, &light);\n    device->LightEnable(4, true);\n\t\n\t\n    D3DMATRIX view_matrix = *(D3DMATRIX*)&layers[0].view_matrix;\n    D3DMATRIX proj_matrix = *(D3DMATRIX*)&layers[0].projection_matrix;\n    \n    /*view_matrix._31 = -view_matrix._31;\n    view_matrix._32 = -view_matrix._32;\n    view_matrix._33 = -view_matrix._33;\n    view_matrix._34 = -view_matrix._34;*/\n    \n    device->SetTransform(D3DTS_VIEW, &view_matrix);\n    device->SetTransform(D3DTS_PROJECTION, &proj_matrix);\n    \n    device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);\n\n    device->BeginScene();\n\n    uint32_t current_layer = 0;\n\n    for (auto [_, entry] : draw_list_sorted) {\n        if (!(entry->flags & FLAG_RENDER)) continue;\n        if (!entry->vertex_buffer) continue;\n        //if (!entry->index_buffer) continue;\n        \n        if (current_layer != entry->layer) {\n            // we have a new layer and idk what we are supposed to do here?\n        }\n        \n        current_layer = entry->layer;\n        \n        // check if the object needs to be lit by the sun\n        if (entry->flags & FLAG_NO_DIRECTIONAL) {\n            device->LightEnable(4, false);\n        } else {\n            device->LightEnable(4, true);\n        }\n        \n        // lightmapped objects are already lit, disable lighting for them\n        if (entry->flags & FLAG_DISABLE_LIGHTING || entry->lightmap) {\n            device->SetRenderState(D3DRS_LIGHTING, FALSE); \n        } else {\n            device->SetRenderState(D3DRS_LIGHTING, TRUE); \n        }\n        \n        // set up the lights with which the object is lit up with\n        for (int i = 0; i < 4; i++) {\n            if (entry->lights[i]) {\n                const auto& params = light_list[entry->lights[i]];\n                \n                D3DLIGHT9 light;\n                ::ZeroMemory(&light, sizeof(light));\n\n                light.Type      = D3DLIGHT_POINT;\n                light.Ambient   = {0.0f, 0.0f, 0.0f, 1.0f};\n                light.Diffuse   = {params.color.r, params.color.g, params.color.b, 1.0f};\n                light.Specular  = {params.color.r, params.color.g, params.color.b, 1.0f};\n                light.Position  = {params.location.x, params.location.y, params.location.z};\n                light.Range        = params.distance;\n                light.Falloff      = 1.0f;\n                light.Attenuation0 = 1.0f;\n                light.Attenuation1 = 0.09f;\n                light.Attenuation2 = 0.032f;\n                \n                device->SetLight(i, &light);\n                device->LightEnable(i, true);\n            } else {\n                device->LightEnable(i, false);\n            }\n        }\n        \n        // this sets the 3d mesh for the object and its format\n        device->SetStreamSource(0, entry->vertex_buffer, 0, FVFToStride(entry->fvf));\n        device->SetIndices(entry->index_buffer);\n        device->SetFVF(entry->fvf);\n        \n        // setting up the material\n        D3DMATERIAL9 mtrl;\n        mtrl.Ambient  = D3DXCOLOR(entry->color.r, entry->color.g, entry->color.b, 1.0f);\n        mtrl.Diffuse  = D3DXCOLOR(entry->color.r, entry->color.g, entry->color.b, 1.0f);\n        mtrl.Specular = D3DXCOLOR(entry->specular_weight * entry->color.r, entry->specular_weight * entry->color.g, entry->specular_weight * entry->color.b, 1.0f);\n        mtrl.Emissive = D3DXCOLOR(D3DCOLOR_XRGB(0, 0, 0));\n        mtrl.Power    = entry->specular_exponent;\n        \n        device->SetMaterial(&mtrl);\n        \n        device->SetTexture(0, entry->texture);\n        device->SetTexture(1, entry->lightmap);\n        \n        if (!entry->pose) {\n            device->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, false);\n            device->SetTransform(D3DTS_WORLD, (D3DMATRIX*)&entry->matrix);\n\t\t\tdevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_DISABLE);\n        } else {\n            device->SetRenderState(D3DRS_INDEXEDVERTEXBLENDENABLE, true);\n            device->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_3WEIGHTS);\n            for (int i = 0; i < 30; i++) {\n                mat4 matrix = entry->matrix * entry->pose->pose[i];\n                device->SetTransform(D3DTS_WORLDMATRIX(i), (D3DMATRIX*)&matrix);\n\t\t\t\tD3DXMATRIX  Worlds;\n\t\t\t\t//D3DXMatrixTranslation(&Worlds , 0.0f,  0.0f, 0.0f);\n\t\t\t\t//device->SetTransform(D3DTS_WORLD, &Worlds);\n\t\t\t\t//device->SetTransform(D3DTS_WORLDMATRIX(i), &Worlds);\n            }\n        }\n        \n        \n        \n        \n        if (entry->flags & FLAG_NO_DEPTH_TEST) {\n            device->SetRenderState(D3DRS_ZENABLE, false);\n        } else {\n            device->SetRenderState(D3DRS_ZENABLE, true);\n        }\n\n        if (entry->flags & FLAG_DRAW_INDEXED) {\n            device->DrawIndexedPrimitive(entry->flags & FLAG_DRAW_LINES ? D3DPT_LINELIST : D3DPT_TRIANGLELIST, \n                                         0,\n                                         0,\n                                         entry->vertex_count,\n                                         entry->index_offset * 3, // hmm\n                                         entry->index_length);\n        } else {\n            device->DrawPrimitive(entry->flags & FLAG_DRAW_LINES ? D3DPT_LINELIST : D3DPT_TRIANGLELIST,\n                                  0,\n                                  //entry->vertex_count);\n                                  entry->vertex_count / 2);\n        }\n\n        \n        \n    }\n\n\t\tdevice->EndScene();\n    \n    \n\n}\n\ndrawlistentry_t InsertDrawListEntry() {\n    return drawlistentry_t{.d3d = draw_list.AddNew()};\n}\n\nvoid RemoveDrawListEntry(drawlistentry_t entry) {\n    draw_list.Remove(entry.d3d);\n}\n\nuint32_t GetFlags(drawlistentry_t entry) {\n    return entry.d3d->flags;\n}\n\nvoid SetFlags(drawlistentry_t entry, uint32_t flags) {\n    entry.d3d->flags = flags;\n}\n\nvoid SetLayer(drawlistentry_t entry, uint32_t layer) {\n    entry.d3d->layer = layer;\n}\n\nvoid SetPose(drawlistentry_t entry, Pose* pose) {\n    entry.d3d->pose = pose;\n}\n\nvoid SetLightmap(drawlistentry_t entry, texturehandle_t lightmap) {\n    entry.d3d->lightmap = lightmap.d3d_texture_handle;\n}\n\nvoid SetDrawListColors(drawlistentry_t entry, size_t count, vec4* colors) {\n    entry.d3d->color = *colors;\n}\n\nvoid SetDrawListSpecularities(drawlistentry_t entry, size_t count, float* weights, float* exponents, float* transparencies) {\n    entry.d3d->specular_weight = *weights;\n    entry.d3d->specular_exponent = *exponents;\n    entry.d3d->specular_transparency = *transparencies;\n}\n\nvoid SetLights(drawlistentry_t entry, light_t* lights) {\n    /*for (size_t i = 0; i < 4; i++) {\n        entry.d3d->lights[i] = lights[i];\n    }*/\n}\n\nvoid SetMatrix(drawlistentry_t entry, const mat4& matrix) {\n    vec4 origin = matrix * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n    \n    entry.d3d->matrix = matrix;\n    \n    light_tree.FindNearest(entry.d3d->lights, origin.x, origin.y, origin.z);\n}\n\nvoid SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle) {\n    entry.d3d->vertex_buffer = vertex_array_handle.d3d_vertex_buffer;\n    const auto& metadata = vertex_buffer_metadata[vertex_array_handle.d3d_metadata];\n    entry.d3d->fvf = metadata.fvf;\n    entry.d3d->vertex_count = metadata.current_vertex_count;\n}\n\nvoid SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle) {\n    entry.d3d->index_buffer = index_array_handle.d3d_index_buffer;\n}\n\nvoid SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length) {\n    entry.d3d->index_offset = index_offset;\n    entry.d3d->index_length = index_length;\n}\n\nvoid SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type) {\n    //entry.gl->shader = FindShader(vertex_format, material_type);\n}\n\nvoid SetDrawListTextures(drawlistentry_t entry, size_t texture_count, texturehandle_t* textures) {\n    entry.d3d->texture = textures->d3d_texture_handle;\n}\n\nlight_t MakeLight() {\n    D3DLight* light = light_list.AddNew();\n    uint32_t light_id = light - light_list.GetFirst();\n    uint32_t leaf_id = light_tree.AddLeaf(light_id, 0.0f, 0.0f, 0.0f);\n    \n    light_tree_ids [light_id] = leaf_id;\n        \n    return light_t{ .d3d = light };\n}\n\nvoid YeetLight(light_t light) {\n    D3DLight* light_ptr = light.d3d;\n    uint32_t light_id = light_ptr - light_list.GetFirst();\n    uint32_t leaf_id = light_tree_ids [light_id];\n\n    light_list.Remove(light_ptr);\n    light_tree.RemoveLeaf(leaf_id);\n}\n\nvoid SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent) {\n    D3DLight* light_ptr = light.d3d;\n    uint32_t light_id = light_ptr - light_list.GetFirst();\n    uint32_t leaf_id = light_tree_ids [light_id];\n    \n    light_ptr->location = location;\n    light_ptr->color = color;\n    light_ptr->distance = distance;\n    light_ptr->direction = direction;\n    light_ptr->exponent = exponent;\n    \n    light_tree.RemoveLeaf(leaf_id);\n    leaf_id = light_tree.AddLeaf(light_id, light_ptr->location.x, light_ptr->location.y, light_ptr->location.z);\n    light_tree_ids [light_id] = leaf_id;\n}\n\n\ntexturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data) {\n    IDirect3DTexture9* texture = nullptr;\n    D3DFORMAT texture_format;\n    \n    switch (color_mode) {\n        case COLORMODE_R:\n            texture_format = D3DFMT_L8;\n            break;\n        case COLORMODE_RG:\n            texture_format = D3DFMT_A8L8;\n            break;\n        case COLORMODE_RGB:\n            // we should be using D3DFMT_R8G8B8, but it fails on my computer\n            texture_format = D3DFMT_A8R8G8B8;\n            break;\n        case COLORMODE_RGBA:\n            texture_format = D3DFMT_A8R8G8B8;\n    }\n    \n    texture_format = D3DFMT_A8R8G8B8;\n    \n    HRESULT result = device->CreateTexture(width, height, 1, 0, texture_format, D3DPOOL_MANAGED, &texture, 0);\n    if (!texture) {\n        switch (result) {\n            case D3DERR_INVALIDCALL:\n                std::cout << \"Texture creation failed! (D3DERR_INVALIDCALL)\" << std::endl;\n                break;\n            case D3DERR_OUTOFVIDEOMEMORY:\n                std::cout << \"Texture creation failed! (D3DERR_OUTOFVIDEOMEMORY)\" << std::endl;\n                break;\n            case E_OUTOFMEMORY:\n                std::cout << \"Texture creation failed! (E_OUTOFMEMORY)\" << std::endl;\n                break;\n            default:\n                std::cout << \"Texture creation failed! Error code: \" << result << std::endl;\n            } \n        abort();\n    }\n\n    D3DLOCKED_RECT rect;\n    texture->LockRect(0, &rect, 0, D3DLOCK_DISCARD);\n    unsigned char* dst = (unsigned char*)rect.pBits;\n    unsigned char* src = (unsigned char*)data;\n    \n    switch (color_mode) {\n        case COLORMODE_R:\n            memcpy(dst, src, width * height * 1);\n            break;\n        case COLORMODE_RG:\n            memcpy(dst, src, width * height * 2);\n            break;\n        case COLORMODE_RGB:\n            // conversion from RGB to ARGB\n            for (uint32_t i = 0; i < width * height; i++) {\n                dst[i * 4 + 0] = src[i * 3 + 2];\n                dst[i * 4 + 1] = src[i * 3 + 1];\n                dst[i * 4 + 2] = src[i * 3 + 0];\n                dst[i * 4 + 3] =  255;\n            }\n            break;\n        case COLORMODE_RGBA:\n            // conversion from RGBA to ARGB\n            for (uint32_t i = 0; i < width * height; i++) {\n                dst[i * 4 + 0] = src[i * 4 + 2];\n                dst[i * 4 + 1] = src[i * 4 + 1];\n                dst[i * 4 + 2] = src[i * 4 + 0];\n                dst[i * 4 + 3] = src[i * 4 + 3];\n            }\n    }\n    \n    texture->UnlockRect(0);\n    \n    return texturehandle_t {.d3d_texture_handle = texture};\n}\n\nstruct FVFHelper {\n    int position = -1;\n    int normal = -1;\n    int color = -1;\n    int texture = -1;\n    int lightmap = -1;\n    int bone_index = -1;\n    int bone_weight = -1;\n    DWORD fvf = 0;\n};\n\nstruct StaticVertex {\n    float pos_x, pos_y, pos_z;\n    float nrm_x, nrm_y, nrm_z;\n    float tex_x, tex_y;\n    float lit_x, lit_y;\n};\nconst DWORD STATIC_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2;\n\nstruct DynamicVertex {\n    float pos_x, pos_y, pos_z;\n    float wgt_1, wgt_2, wgt_3;\n    DWORD wgt_i;\n    float nrm_x, nrm_y, nrm_z;\n    float tex_x, tex_y;\n};\nconst DWORD DYNAMIC_VERTEX_FVF = D3DFVF_XYZB4 | D3DFVF_LASTBETA_UBYTE4 | D3DFVF_NORMAL | D3DFVF_TEX1;\n\nstruct LineVertex {\n    float pos_x, pos_y, pos_z;\n    D3DCOLOR color;\n};\nconst DWORD LINE_VERTEX_FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;\n\nstatic UINT FVFToStride(DWORD fvf) {\n    switch (fvf) {\n        case STATIC_VERTEX_FVF:     return sizeof(StaticVertex);\n        case DYNAMIC_VERTEX_FVF:    return sizeof(DynamicVertex);\n        case LINE_VERTEX_FVF:       return sizeof(LineVertex);\n        default:                    return sizeof(float) * 3;\n    }\n}\n\nFVFHelper VertexDefinitionToFVF(VertexDefinition vertex_format) {\n    FVFHelper helper;\n    \n    for (int i = 0; i < (int)vertex_format.attribute_count; i++) {\n        switch (vertex_format.attributes[i].ffp_type) {\n            case VertexAttribute::FFP_POSITION:     helper.position = i;    break;\n            case VertexAttribute::FFP_NORMAL:       helper.normal = i;      break;\n            case VertexAttribute::FFP_COLOR:        helper.color = i;      break;\n            case VertexAttribute::FFP_TEXTURE:      helper.texture = i;     break;\n            case VertexAttribute::FFP_LIGHTMAP:     helper.lightmap = i;    break;\n            case VertexAttribute::FFP_BONE_INDEX:   helper.bone_index = i;  break;\n            case VertexAttribute::FFP_BONE_WEIGHT:  helper.bone_weight = i; break;\n            case VertexAttribute::FFP_IGNORE:                               break;\n        }\n    }\n    \n    if (helper.position != -1 && helper.color != -1) {\n        helper.fvf = LINE_VERTEX_FVF;\n    }\n    \n    if (helper.position != -1 && helper.normal != -1 && helper.texture != -1 && helper.bone_index != -1 && helper.bone_weight != -1) {\n        helper.fvf = DYNAMIC_VERTEX_FVF;\n    }\n    \n    if (helper.position != -1 && helper.normal != -1 && helper.texture != -1 && helper.lightmap != -1) {\n        helper.fvf = STATIC_VERTEX_FVF;\n    }\n    \n    return helper;\n}\n\nvoid PackVertexBuffer(vertexarray_t& vertex_array, VertexDefinition vertex_format, FVFHelper helper, size_t vertex_count, void* vertex_data) {\n    if (helper.fvf == STATIC_VERTEX_FVF) {                  \n        StaticVertex* parsed_data;\n        vertex_array.d3d_vertex_buffer->Lock(0, 0, (void**)&parsed_data, 0);\n\n        VertexAttribute pos_attrib = vertex_format.attributes[helper.position];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + pos_attrib.offset + pos_attrib.stride * i);\n            parsed_data[i].pos_x = *param++;\n            parsed_data[i].pos_y = *param++;\n            parsed_data[i].pos_z = *param;\n        }\n        \n        VertexAttribute nrm_attrib = vertex_format.attributes[helper.normal];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + nrm_attrib.offset + nrm_attrib.stride * i);\n            parsed_data[i].nrm_x = *param++;\n            parsed_data[i].nrm_y = *param++;\n            parsed_data[i].nrm_z = *param;\n        }\n        \n        VertexAttribute tex_attrib = vertex_format.attributes[helper.texture];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + tex_attrib.offset + tex_attrib.stride * i);\n            parsed_data[i].tex_x = *param++;\n            parsed_data[i].tex_y = *param;\n        }\n        \n        VertexAttribute lit_attrib = vertex_format.attributes[helper.lightmap];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + lit_attrib.offset + lit_attrib.stride * i);\n            parsed_data[i].lit_x = *param++;\n            parsed_data[i].lit_y = *param;\n        }\n        \n        vertex_array.d3d_vertex_buffer->Unlock();\n        return;\n    }\n    \n    if (helper.fvf == DYNAMIC_VERTEX_FVF) {\n        DynamicVertex* parsed_data;\n        vertex_array.d3d_vertex_buffer->Lock(0, 0, (void**)&parsed_data, 0);\n\n        VertexAttribute pos_attrib = vertex_format.attributes[helper.position];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + pos_attrib.offset + pos_attrib.stride * i);\n            parsed_data[i].pos_x = *param++;\n            parsed_data[i].pos_y = *param++;\n            parsed_data[i].pos_z = *param;\n        }\n        \n        VertexAttribute nrm_attrib = vertex_format.attributes[helper.normal];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + nrm_attrib.offset + nrm_attrib.stride * i);\n            parsed_data[i].nrm_x = *param++;\n            parsed_data[i].nrm_y = *param++;\n            parsed_data[i].nrm_z = *param;\n        }\n        \n        VertexAttribute tex_attrib = vertex_format.attributes[helper.texture];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + tex_attrib.offset + tex_attrib.stride * i);\n            parsed_data[i].tex_x = *param++;\n            parsed_data[i].tex_y = *param;\n        }\n        \n        VertexAttribute wgt_attrib = vertex_format.attributes[helper.bone_weight];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + wgt_attrib.offset + wgt_attrib.stride * i);\n            parsed_data[i].wgt_1 = *param++;\n            parsed_data[i].wgt_2 = *param++;\n            parsed_data[i].wgt_3 = *param;\n        }\n        \n        VertexAttribute ind_attrib = vertex_format.attributes[helper.bone_index];\n        for (size_t i = 0; i < vertex_count; i++) {\n            uint32_t* param = (uint32_t*)((char*)vertex_data + ind_attrib.offset + ind_attrib.stride * i);\n            uint8_t* wgt_a = (uint8_t*)&parsed_data[i].wgt_i;\n            wgt_a[0] = *param++;\n            wgt_a[1] = *param++;\n            wgt_a[2] = *param++;\n            wgt_a[3] = *param;\n        }\n        \n        vertex_array.d3d_vertex_buffer->Unlock();\n        return;\n    }\n    \n    if (helper.fvf == LINE_VERTEX_FVF) {\n        LineVertex* parsed_data;\n        vertex_array.d3d_vertex_buffer->Lock(0, 0, (void**)&parsed_data, 0);\n\n        VertexAttribute pos_attrib = vertex_format.attributes[helper.position];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + pos_attrib.offset + pos_attrib.stride * i);\n            parsed_data[i].pos_x = *param++;\n            parsed_data[i].pos_y = *param++;\n            parsed_data[i].pos_z = *param;\n        }\n        \n        VertexAttribute col_attrib = vertex_format.attributes[helper.color];\n        for (size_t i = 0; i < vertex_count; i++) {\n            float* param = (float*)((char*)vertex_data + col_attrib.offset + col_attrib.stride * i);\n            float r, g, b;\n            r = *param++; g = *param++; b = *param;\n            parsed_data[i].color = D3DCOLOR_COLORVALUE(r, g, b, 1.0f);\n        }\n        \n        vertex_array.d3d_vertex_buffer->Unlock();\n    }\n    \n}\n\nvoid CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array, indexarray_t& index_array, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data) {\n    FVFHelper helper = VertexDefinitionToFVF(vertex_format);\n    \n    if (helper.fvf == 0) {\n        std::cout << \"FVF could not be determined!\" << std::endl;\n        return;\n    }\n    \n    const size_t vertex_count = vertex_size / vertex_format.attributes->stride;\n    \n    VertexBufferMetadata* metadata = vertex_buffer_metadata.AddNew();\n    \n    metadata->vertex_format = vertex_format;\n    metadata->current_vertex_count = vertex_count;\n    metadata->allocated_vertex_count = vertex_count;\n    metadata->fvf = helper.fvf;\n    \n    vertex_array.d3d_metadata = vertex_buffer_metadata.index(metadata);\n    \n    device->CreateVertexBuffer(vertex_count * FVFToStride(helper.fvf),\n                               D3DUSAGE_WRITEONLY,\n                               helper.fvf,\n                               D3DPOOL_MANAGED,\n                               &vertex_array.d3d_vertex_buffer,\n                               0);\n    \n    PackVertexBuffer(vertex_array, vertex_format, helper, vertex_count, vertex_data);\n    \n    device->CreateIndexBuffer(index_size,\n                              D3DUSAGE_WRITEONLY,\n                              D3DFMT_INDEX32,\n                              D3DPOOL_MANAGED,\n                              &index_array.d3d_index_buffer,\n                              0);\n    \n    uint32_t* indices;\n    size_t index_count = index_size / sizeof(uint32_t);\n    index_array.d3d_index_buffer->Lock(0, 0, (void**)&indices, 0);\n    for (size_t i = 0; i < index_count / 3; i++) {\n        indices[i * 3 + 0] = ((uint32_t*)index_data)[i * 3 + 0];\n        indices[i * 3 + 1] = ((uint32_t*)index_data)[i * 3 + 2];\n        indices[i * 3 + 2] = ((uint32_t*)index_data)[i * 3 + 1];\n    }\n    //memcpy(indices, index_data, index_size);\n    index_array.d3d_index_buffer->Unlock();\n}\n\nvoid CreateVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array) {\n    VertexBufferMetadata* metadata = vertex_buffer_metadata.AddNew();\n    \n    metadata->vertex_format = vertex_format;\n    metadata->current_vertex_count = 0;\n    metadata->allocated_vertex_count = 0;\n    metadata->fvf = VertexDefinitionToFVF(vertex_format).fvf;\n    \n    vertex_array.d3d_vertex_buffer = nullptr;\n    vertex_array.d3d_metadata = vertex_buffer_metadata.index(metadata);\n    \n    /*glGenBuffers(1, &vertex_array.gl_vertex_buffer);\n    glBindBuffer(GL_ARRAY_BUFFER, vertex_array.gl_vertex_buffer);\n    glBufferData(GL_ARRAY_BUFFER, 0, nullptr, GL_DYNAMIC_DRAW);\n\n    glGenVertexArrays(1, &vertex_array.gl_vertex_array);\n\n    glBindVertexArray(vertex_array.gl_vertex_array);\n\n    for (size_t i = 0; i < vertex_format.attribute_count; i++) {\n        uint32_t opengl_type = vertex_format.attributes[i].type == VertexAttribute::FLOAT32 ? GL_FLOAT : GL_UNSIGNED_INT;\n        \n        if (opengl_type == GL_FLOAT) {\n            glVertexAttribPointer(i, vertex_format.attributes[i].size, opengl_type, GL_FALSE, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        } else {\n            glVertexAttribIPointer(i, vertex_format.attributes[i].size, opengl_type, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        }\n        \n        glEnableVertexAttribArray(i);\n    }\n\n    glBindVertexArray(0);\n    glBindBuffer(GL_ARRAY_BUFFER, 0);*/\n}\n\nvoid UpdateVertexArray(vertexarray_t& vertex_array, size_t data_size, void* data) {\n    auto& metadata = vertex_buffer_metadata[vertex_array.d3d_metadata];\n    FVFHelper helper = VertexDefinitionToFVF(metadata.vertex_format);\n    \n    if (helper.fvf == 0) {\n        //std::cout << \"FVF could not be determined!\" << std::endl;\n        return;\n    }\n    \n    if (data_size == 0) {\n        metadata.current_vertex_count = 0;\n        return;\n    }\n    \n    const size_t vertex_count = data_size / metadata.vertex_format.attributes->stride;\n    \n    metadata.current_vertex_count = vertex_count;\n    metadata.allocated_vertex_count = vertex_count;\n\n    // what we should do here is to check if vertex_count is less or equal to\n    // allocated_vertex_count, in which case we could simply re-use the buffer\n    // as-is, instead of releasing it and creating a new one.\n    \n    if (vertex_array.d3d_vertex_buffer) {\n        vertex_array.d3d_vertex_buffer->Release();\n        vertex_array.d3d_vertex_buffer = nullptr;\n    }\n\n    device->CreateVertexBuffer(vertex_count * FVFToStride(helper.fvf),\n                               D3DUSAGE_WRITEONLY,\n                               helper.fvf,\n                               D3DPOOL_MANAGED,\n                               &vertex_array.d3d_vertex_buffer,\n                               0);\n\n    PackVertexBuffer(vertex_array, metadata.vertex_format, helper, vertex_count, data);\n    \n    /*glBindBuffer(GL_ARRAY_BUFFER, vertex_array.gl_vertex_buffer);\n    glBufferData(GL_ARRAY_BUFFER, data_size, data, GL_DYNAMIC_DRAW);\n    glBindBuffer(GL_ARRAY_BUFFER, 0);*/\n}\n\nvoid SetViewMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].view_matrix = matrix;\n    layers[layer].view_position = glm::inverse(matrix) * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n}\n\nvoid SetProjectionMatrix(const mat4& matrix, layer_t layer) {\n\tmat4 squish = glm::scale(mat4(1.0f), vec3(1.0f, 1.0f, 0.5f));\n\t//mat4 squish = glm::scale(mat4(1.0f), vec3(1.0f, 1.0f, -0.5f));\n\tmat4 transl = glm::translate(mat4(1.0f), vec3(0.0f, 0.0f, 0.5f));\n    layers[layer].projection_matrix = transl * squish * matrix;\n}\n\nvoid GetScreen(char* buffer, int w, int h) {\n    IDirect3DSurface9* surface = nullptr;\n    IDirect3DSurface9* target = nullptr;\n    device->CreateOffscreenPlainSurface(w, h, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surface, NULL);\n    device->GetRenderTarget(0, &target);\n    device->GetRenderTargetData(target, surface);\n    \n    D3DLOCKED_RECT rect;\n    surface->LockRect(&rect, NULL, D3DLOCK_NO_DIRTY_UPDATE|D3DLOCK_NOSYSLOCK|D3DLOCK_READONLY);\n    \n    // convert from Direct3D ARGB to OpenGL RGB\n    for (int y = 0; y < h; y++) {\n        for (int x = 0; x < w; x++) {\n            buffer[((h - y - 1) * w + x) * 3 + 0] = ((char*)rect.pBits)[(y * w + x) * 4 + 2];\n            buffer[((h - y - 1) * w + x) * 3 + 1] = ((char*)rect.pBits)[(y * w + x) * 4 + 1];\n            buffer[((h - y - 1) * w + x) * 3 + 2] = ((char*)rect.pBits)[(y * w + x) * 4 + 0];\n        }\n    }\n    \n    surface->UnlockRect();\n    surface->Release();\n    target->Release();\n}\n\nvoid Init() {\n    //device->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);\n    device->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);\n    //device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);\n    \n    // maybe in the future I'll add back in the option to switch the filtering\n    // mode based on the texture, but for now I'll leave it as a linear filter\n    device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);\n    device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);\n    device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);\n    \n    // lightmaps should probably always be linearly filtered\n    device->SetSamplerState(1, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);\n    device->SetSamplerState(1, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);\n    device->SetSamplerState(1, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);\n    \n    // mix lightmap with base texture using multiplication?\n    device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);\n    \n    // I have no idea what this does, but I like shiny stuff\n    device->SetRenderState(D3DRS_NORMALIZENORMALS, true);\n    device->SetRenderState(D3DRS_SPECULARENABLE, true);\n    \n    // I have no idea why this is being initialized in here? this could probably\n    // be yeeted out anyway\n    // TODO: check if can yeet\n    //BLANK_POSE = PoolProxy<Render::Pose>::New();\n    //for (size_t i = 0; i < BONE_COUNT; i++) {\n    //    BLANK_POSE->pose[i] = mat4(1.0f);\n    //}\n    \n    // initialize the default light\n    light_list.AddNew();\n}\n\nContextType GetContext() {\n    return CONTEXT_DIRECT3D;\n}\n\nuint32_t GetMaxIndexRangeLength() {\n    return 1;\n}\n\nvoid SetDevice(void* new_device) {\n    device = (IDirect3DDevice9*)new_device;\n}\n\n}\n"
  },
  {
    "path": "src/render/error.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/error.h>\n\nnamespace tram::Render {\n\n/// Generates a new error texture.\n/// @return Buffer to a 3 channel, 64x64 texture.\nuint8_t* MakeNewErrorTexture(vec3 color1, vec3 color2) {\n    uint8_t* buffer = new uint8_t[64*64*3];\n    \n    uint8_t c1[3] = {(uint8_t)(color1.x * 255.0f), (uint8_t)(color1.y * 255.0f), (uint8_t)(color1.z * 255.0f)};\n    uint8_t c2[3] = {(uint8_t)(color2.x * 255.0f), (uint8_t)(color2.y * 255.0f), (uint8_t)(color2.z * 255.0f)};\n    \n    for (int y = 0; y < 64; y++) {\n        for (int x = 0; x < 64; x++) {\n            if ((x / 8) % 2 ^ (y / 8) % 2) {\n                buffer[(x*3) + (y*64*3) + 0] = c1[0];\n                buffer[(x*3) + (y*64*3) + 1] = c1[1];\n                buffer[(x*3) + (y*64*3) + 2] = c1[2];\n            } else {\n                buffer[(x*3) + (y*64*3) + 0] = c2[0];\n                buffer[(x*3) + (y*64*3) + 1] = c2[1];\n                buffer[(x*3) + (y*64*3) + 2] = c2[2];\n            }\n        }\n    }\n\n    return buffer;\n}\n\n    \n/// Generates a new error model.\nStaticModelData* MakeNewErrorModel() {\n    return new StaticModelData {\n        .vertices = {\n            {{0.51f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.46f}, {1.0f, 0.46f}, 0},\n            {{0.5f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.49f}, {0.83f, 0.49f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.64f}, {0.83f, 0.64f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.4f}, {0.39f, 0.4f}, 0},\n            {{-0.7f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.02f}, {0.0f, 0.02f}, 0},\n            {{-0.84f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.29f}, {0.0f, 0.29f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.76f, 0.49f}, {0.76f, 0.49f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.63f}, {0.39f, 0.63f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.6f}, {1.0f, 0.6f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.76f, 0.49f}, {0.76f, 0.49f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.39f}, {1.0f, 0.39f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.36f}, {0.39f, 0.36f}, 0},\n            {{-0.28f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 1.0f}, {0.71f, 1.0f}, 0},\n            {{-0.28f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 0.83f}, {0.71f, 0.83f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.83f}, {0.2f, 0.83f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.36f}, {0.39f, 0.36f}, 0},\n            {{-0.83f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.26f}, {1.0f, 0.26f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.4f}, {0.39f, 0.4f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.53f, 0.54f}, {0.53f, 0.54f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.69f}, {0.23f, 0.69f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.63f}, {0.39f, 0.63f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.89f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.21f}, {0.0f, 0.21f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{1.19f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.78f}, {0.0f, 0.78f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.69f}, {0.23f, 0.69f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.17f, 0.64f}, {0.17f, 0.64f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.47f}, {0.0f, 0.47f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.84f}, {0.0f, 0.84f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.17f, 0.64f}, {0.17f, 0.64f}, 0},\n            {{0.47f, 0.18f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.17f, 0.55f}, {0.17f, 0.55f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.47f}, {0.0f, 0.47f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.64f}, {0.83f, 0.64f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.84f}, {0.0f, 0.84f}, 0},\n            {{0.32f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.84f}, {1.0f, 0.84f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.02f, 0.28f}, {0.02f, 0.28f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.29f}, {0.23f, 0.29f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.11f, 0.13f}, {0.11f, 0.13f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.58f, 0.3f}, {0.58f, 0.3f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.48f}, {0.78f, 0.48f}, 0},\n            {{-0.19f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.76f, 0.23f}, {0.76f, 0.23f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.34f, 0.4f}, {0.34f, 0.4f}, 0},\n            {{-0.53f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.32f}, {0.23f, 0.32f}, 0},\n            {{-0.53f, -0.3f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.3f, 0.43f}, {0.3f, 0.43f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.26f, 0.2f}, {0.26f, 0.2f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.38f, 0.0f}, {0.38f, 0.0f}, 0},\n            {{0.11f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.19f, 0.03f}, {0.19f, 0.03f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.47f}, {0.0f, 0.47f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.18f, 0.38f}, {0.18f, 0.38f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.02f, 0.28f}, {0.02f, 0.28f}, 0},\n            {{0.32f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.84f}, {1.0f, 0.84f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.46f}, {1.0f, 0.46f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.64f}, {0.83f, 0.64f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.82f, 0.36f}, {0.82f, 0.36f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.46f}, {1.0f, 0.46f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.98f, 0.28f}, {0.98f, 0.28f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.9f, 0.14f}, {0.9f, 0.14f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.68f, 0.23f}, {0.68f, 0.23f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.28f}, {0.78f, 0.28f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.48f}, {0.0f, 0.48f}, 0},\n            {{0.1f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 1.0f}, {0.2f, 1.0f}, 0},\n            {{0.1f, -0.02f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.46f}, {0.2f, 0.46f}, 0},\n            {{-0.58f, -0.39f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.3f, 0.75f}, {0.3f, 0.75f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.56f}, {0.39f, 0.56f}, 0},\n            {{-0.58f, -0.35f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.64f}, {0.23f, 0.64f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.5f, 0.21f}, {0.5f, 0.21f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.27f, 0.03f}, {0.27f, 0.03f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.32f, 0.23f}, {0.32f, 0.23f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 0.12f}, {0.71f, 0.12f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.58f, 0.3f}, {0.58f, 0.3f}, 0},\n            {{-0.19f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.76f, 0.23f}, {0.76f, 0.23f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.98f, 0.28f}, {0.98f, 0.28f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.28f}, {0.78f, 0.28f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.82f, 0.36f}, {0.82f, 0.36f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.47f, 0.67f}, {0.47f, 0.67f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.38f}, {0.52f, 0.38f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.56f}, {0.39f, 0.56f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 0.12f}, {0.71f, 0.12f}, 0},\n            {{-0.1f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 0.03f}, {0.59f, 0.03f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.21f}, {0.52f, 0.21f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.63f}, {0.39f, 0.63f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.6f}, {1.0f, 0.6f}, 0},\n            {{0.12f, 0.31f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{-0.11f, 0.38f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.75f, 0.29f}, {0.75f, 0.29f}, 0},\n            {{-0.11f, 0.31f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.75f, 0.14f}, {0.75f, 0.14f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.39f}, {1.0f, 0.39f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.36f}, {0.39f, 0.36f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.11f, 0.13f}, {0.11f, 0.13f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.32f, 0.23f}, {0.32f, 0.23f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.27f, 0.03f}, {0.27f, 0.03f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.48f}, {0.78f, 0.48f}, 0},\n            {{-0.1f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 1.0f}, {0.59f, 1.0f}, 0},\n            {{-0.2f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 1.0f}, {0.78f, 1.0f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.33f, 0.25f}, {0.33f, 0.25f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.34f, 0.4f}, {0.34f, 0.4f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.38f}, {0.52f, 0.38f}, 0},\n            {{-0.64f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{-0.28f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 1.0f}, {0.71f, 1.0f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.83f}, {0.2f, 0.83f}, 0},\n            {{0.11f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.19f, 0.03f}, {0.19f, 0.03f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.08f, 0.11f}, {0.08f, 0.11f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.26f, 0.2f}, {0.26f, 0.2f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.83f}, {0.2f, 0.83f}, 0},\n            {{-0.64f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.64f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.63f}, {0.39f, 0.63f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.36f}, {0.39f, 0.36f}, 0},\n            {{-0.39f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.26f}, {0.7f, 0.26f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.33f, 0.25f}, {0.33f, 0.25f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.38f}, {0.52f, 0.38f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.38f}, {0.52f, 0.38f}, 0},\n            {{-0.42f, -0.38f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.46f}, {0.7f, 0.46f}, 0},\n            {{-0.39f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.26f}, {0.7f, 0.26f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.08f, 0.11f}, {0.08f, 0.11f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.21f, 0.29f}, {0.21f, 0.29f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.26f, 0.2f}, {0.26f, 0.2f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.21f}, {0.52f, 0.21f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.38f, 0.0f}, {0.38f, 0.0f}, 0},\n            {{0.01f, -0.17f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.17f}, {0.39f, 0.17f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.9f}, {1.0f, 0.9f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{-1.16f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.9f}, {0.0f, 0.9f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.72f, 0.03f}, {0.72f, 0.03f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.5f, 0.21f}, {0.5f, 0.21f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.68f, 0.23f}, {0.68f, 0.23f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.4f}, {0.39f, 0.4f}, 0},\n            {{-0.84f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.29f}, {0.0f, 0.29f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{-1.05f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.7f}, {0.0f, 0.7f}, 0},\n            {{-1.16f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.9f}, {0.0f, 0.9f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.53f, 0.54f}, {0.53f, 0.54f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.4f}, {0.39f, 0.4f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.9f}, {1.0f, 0.9f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.7f}, {0.7f, 0.7f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.7f}, {0.7f, 0.7f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.53f, 0.54f}, {0.53f, 0.54f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.44f, 0.7f}, {0.44f, 0.7f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.21f, 0.29f}, {0.21f, 0.29f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.48f}, {0.0f, 0.48f}, 0},\n            {{0.1f, -0.02f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.46f}, {0.2f, 0.46f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.9f}, {1.0f, 0.9f}, 0},\n            {{-1.05f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.7f}, {1.0f, 0.7f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.7f}, {0.7f, 0.7f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.76f, 0.49f}, {0.76f, 0.49f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.6f}, {1.0f, 0.6f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.39f}, {1.0f, 0.39f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 1.0f}, {0.46f, 1.0f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.83f}, {0.64f, 0.83f}, 0},\n            {{0.5f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.49f, 0.83f}, {0.49f, 0.83f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.5f}, {0.39f, 0.5f}, 0},\n            {{-0.84f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.61f}, {0.0f, 0.61f}, 0},\n            {{-0.7f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.88f}, {0.0f, 0.88f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.6f}, {0.0f, 0.6f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.63f}, {0.6f, 0.63f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.36f}, {0.6f, 0.36f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{-0.28f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.71f, 0.0f}, {0.71f, 0.0f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.17f}, {0.2f, 0.17f}, 0},\n            {{-0.28f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.71f, 0.17f}, {0.71f, 0.17f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.36f}, {0.6f, 0.36f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.3f}, {0.77f, 0.3f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.5f}, {0.39f, 0.5f}, 0},\n            {{-0.83f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.64f}, {1.0f, 0.64f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.53f, 0.37f}, {0.53f, 0.37f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.69f}, {0.77f, 0.69f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.63f}, {0.6f, 0.63f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 1.0f}, {1.0f, 1.0f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.3f}, {0.77f, 0.3f}, 0},\n            {{0.89f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.21f}, {1.0f, 0.21f}, 0},\n            {{1.19f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.78f}, {1.0f, 0.78f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.69f}, {0.77f, 0.69f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 1.0f}, {1.0f, 1.0f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.17f}, {0.64f, 0.17f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.84f, 0.0f}, {0.84f, 0.0f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.0f}, {0.47f, 0.0f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.17f}, {0.64f, 0.17f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.0f}, {0.47f, 0.0f}, 0},\n            {{0.47f, 0.18f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.55f, 0.17f}, {0.55f, 0.17f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.84f, 0.0f}, {0.84f, 0.0f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.83f}, {0.64f, 0.83f}, 0},\n            {{0.32f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.84f, 1.0f}, {0.84f, 1.0f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.23f}, {0.29f, 0.23f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.02f}, {0.28f, 0.02f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.13f, 0.11f}, {0.13f, 0.11f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.78f}, {0.48f, 0.78f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.58f}, {0.3f, 0.58f}, 0},\n            {{-0.19f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.76f}, {0.23f, 0.76f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.34f, 0.6f}, {0.34f, 0.6f}, 0},\n            {{-0.53f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.68f}, {0.23f, 0.68f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.33f, 0.75f}, {0.33f, 0.75f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.38f}, {0.0f, 0.38f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.26f}, {0.2f, 0.26f}, 0},\n            {{0.11f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.19f}, {0.03f, 0.19f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.38f, 0.18f}, {0.38f, 0.18f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.0f}, {0.47f, 0.0f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.02f}, {0.28f, 0.02f}, 0},\n            {{0.32f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.84f, 1.0f}, {0.84f, 1.0f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.83f}, {0.64f, 0.83f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 1.0f}, {0.46f, 1.0f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 1.0f}, {0.46f, 1.0f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.36f, 0.82f}, {0.36f, 0.82f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.98f}, {0.28f, 0.98f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.68f}, {0.23f, 0.68f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.14f, 0.9f}, {0.14f, 0.9f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.78f}, {0.28f, 0.78f}, 0},\n            {{0.1f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.2f}, {1.0f, 0.2f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.0f}, {0.48f, 0.0f}, 0},\n            {{0.1f, -0.02f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 0.2f}, {0.46f, 0.2f}, 0},\n            {{-0.58f, -0.39f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.25f}, {0.3f, 0.25f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.44f}, {0.39f, 0.44f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.33f}, {0.47f, 0.33f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.27f}, {0.03f, 0.27f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.5f}, {0.21f, 0.5f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.32f}, {0.23f, 0.32f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.58f}, {0.3f, 0.58f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.12f, 0.71f}, {0.12f, 0.71f}, 0},\n            {{-0.19f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.76f}, {0.23f, 0.76f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.78f}, {0.28f, 0.78f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.98f}, {0.28f, 0.98f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.36f, 0.82f}, {0.36f, 0.82f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.52f, 0.62f}, {0.52f, 0.62f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.33f}, {0.47f, 0.33f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.44f}, {0.39f, 0.44f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.12f, 0.71f}, {0.12f, 0.71f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.52f}, {0.21f, 0.52f}, 0},\n            {{-0.1f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.59f}, {0.03f, 0.59f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.63f}, {0.6f, 0.63f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.6f}, {0.0f, 0.6f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 1.0f}, {1.0f, 1.0f}, 0},\n            {{-0.11f, 0.38f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.75f, 0.29f}, {0.75f, 0.29f}, 0},\n            {{0.12f, 0.31f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.25f, 0.43f}, {0.25f, 0.43f}, 0},\n            {{-0.11f, 0.31f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.75f, 0.43f}, {0.75f, 0.43f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.36f}, {0.6f, 0.36f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.32f}, {0.23f, 0.32f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.13f, 0.11f}, {0.13f, 0.11f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.27f}, {0.03f, 0.27f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.78f}, {0.48f, 0.78f}, 0},\n            {{-0.1f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.59f}, {1.0f, 0.59f}, 0},\n            {{-0.1f, -0.02f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.59f}, {0.47f, 0.59f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.33f, 0.75f}, {0.33f, 0.75f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.52f, 0.62f}, {0.52f, 0.62f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.34f, 0.6f}, {0.34f, 0.6f}, 0},\n            {{-0.64f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.17f}, {0.2f, 0.17f}, 0},\n            {{-0.28f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.71f, 0.0f}, {0.71f, 0.0f}, 0},\n            {{0.11f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.19f}, {0.03f, 0.19f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.26f}, {0.2f, 0.26f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.11f, 0.08f}, {0.11f, 0.08f}, 0},\n            {{-0.64f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.17f}, {0.2f, 0.17f}, 0},\n            {{-0.64f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.3f}, {0.77f, 0.3f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.63f}, {0.6f, 0.63f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.69f}, {0.77f, 0.69f}, 0},\n            {{-0.39f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.74f}, {0.7f, 0.74f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.52f, 0.62f}, {0.52f, 0.62f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.33f, 0.75f}, {0.33f, 0.75f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.52f, 0.62f}, {0.52f, 0.62f}, 0},\n            {{-0.39f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.74f}, {0.7f, 0.74f}, 0},\n            {{-0.42f, -0.38f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.54f}, {0.7f, 0.54f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.21f}, {0.29f, 0.21f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.11f, 0.08f}, {0.11f, 0.08f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.26f}, {0.2f, 0.26f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.38f}, {0.0f, 0.38f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.52f}, {0.21f, 0.52f}, 0},\n            {{0.01f, -0.17f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.17f, 0.39f}, {0.17f, 0.39f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-1.16f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.5f}, {0.21f, 0.5f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.72f}, {0.03f, 0.72f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.68f}, {0.23f, 0.68f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{-0.84f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.61f}, {0.0f, 0.61f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.5f}, {0.39f, 0.5f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{-1.16f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-1.05f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.2f}, {0.0f, 0.2f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.5f}, {0.39f, 0.5f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.53f, 0.37f}, {0.53f, 0.37f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.2f}, {0.7f, 0.2f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.2f}, {0.7f, 0.2f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.44f, 0.2f}, {0.44f, 0.2f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.53f, 0.37f}, {0.53f, 0.37f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.0f}, {0.48f, 0.0f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.21f}, {0.29f, 0.21f}, 0},\n            {{0.1f, -0.02f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 0.2f}, {0.46f, 0.2f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.2f}, {0.7f, 0.2f}, 0},\n            {{-1.05f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.2f}, {1.0f, 0.2f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.6f}, {0.0f, 0.6f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {1.0f, -0.09f, -0.0f}, {0.32f, 0.4f}, {0.32f, 0.4f}, 0},\n            {{-0.7f, 0.26f, 0.2f}, {0.72f, -0.69f, -0.0f}, {-0.11f, -0.2f}, {-0.11f, -0.2f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {1.0f, -0.09f, -0.0f}, {-0.11f, 0.4f}, {-0.11f, 0.4f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.25f, 0.69f}, {0.25f, 0.69f}, 0},\n            {{0.75f, 0.0f, 0.2f}, {1.0f, -0.0f, -0.0f}, {-0.08f, 0.51f}, {-0.08f, 0.51f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.94f, -0.34f, -0.0f}, {-0.08f, 0.69f}, {-0.08f, 0.69f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.89f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.16f}, {0.3f, 0.16f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.0f}, {0.3f, 0.0f}, 0},\n            {{-0.28f, -0.16f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.28f, 1.0f}, {0.28f, 1.0f}, 0},\n            {{-0.28f, -0.16f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.28f, 0.63f}, {0.28f, 0.63f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.6f, 0.8f, -0.0f}, {0.25f, 0.38f}, {0.25f, 0.38f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.95f, 0.3f, -0.0f}, {-0.08f, 0.28f}, {-0.08f, 0.28f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.6f, 0.8f, -0.0f}, {-0.08f, 0.38f}, {-0.08f, 0.38f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {-0.95f, 0.3f, -0.0f}, {0.0f, 0.64f}, {0.0f, 0.64f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {-0.7f, 0.71f, -0.0f}, {0.3f, 0.72f}, {0.3f, 0.72f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {-0.95f, 0.3f, -0.0f}, {0.3f, 0.64f}, {0.3f, 0.64f}, 0},\n            {{0.89f, -0.25f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 0.16f}, {0.0f, 0.16f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.3f, 0.35f}, {0.3f, 0.35f}, 0},\n            {{0.89f, -0.25f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.3f, 0.16f}, {0.3f, 0.16f}, 0},\n            {{-0.64f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.28f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.28f, 0.51f}, {0.28f, 0.51f}, 0},\n            {{-0.64f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.28f, 0.0f}, {0.28f, 0.0f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {-0.96f, 0.29f, -0.0f}, {0.25f, 0.7f}, {0.25f, 0.7f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {-0.6f, 0.8f, -0.0f}, {-0.08f, 0.62f}, {-0.08f, 0.62f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {-0.96f, 0.29f, -0.0f}, {-0.08f, 0.7f}, {-0.08f, 0.7f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {-0.93f, -0.36f, -0.0f}, {0.0f, 0.65f}, {0.0f, 0.65f}, 0},\n            {{1.19f, -0.25f, 0.2f}, {-0.93f, -0.36f, -0.0f}, {0.3f, 0.83f}, {0.3f, 0.83f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {-0.93f, -0.36f, -0.0f}, {0.3f, 0.65f}, {0.3f, 0.65f}, 0},\n            {{-0.69f, -0.25f, -0.2f}, {0.84f, 0.55f, -0.0f}, {0.32f, 1.21f}, {0.32f, 1.21f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {1.0f, -0.09f, -0.0f}, {-0.11f, 0.4f}, {-0.11f, 0.4f}, 0},\n            {{-0.69f, -0.25f, 0.2f}, {0.84f, 0.55f, -0.0f}, {-0.11f, 1.21f}, {-0.11f, 1.21f}, 0},\n            {{-0.28f, -0.25f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.51f}, {0.0f, 0.51f}, 0},\n            {{-0.28f, -0.16f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.28f, 0.63f}, {0.28f, 0.63f}, 0},\n            {{-0.28f, -0.25f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.28f, 0.51f}, {0.28f, 0.51f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.7f, -0.72f, -0.0f}, {0.25f, 0.87f}, {0.25f, 0.87f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.94f, -0.34f, -0.0f}, {-0.08f, 0.69f}, {-0.08f, 0.69f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.7f, -0.72f, -0.0f}, {-0.08f, 0.87f}, {-0.08f, 0.87f}, 0},\n            {{1.19f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.83f}, {0.0f, 0.83f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 1.0f}, {0.3f, 1.0f}, 0},\n            {{1.19f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.83f}, {0.3f, 0.83f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.0f}, {0.23f, 0.0f}, 0},\n            {{-0.53f, -0.26f, 0.2f}, {-0.05f, 1.0f, -0.0f}, {0.17f, 0.3f}, {0.17f, 0.3f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.76f, -0.65f, -0.0f}, {0.23f, 0.23f}, {0.23f, 0.23f}, 0},\n            {{0.2f, -0.14f, 0.2f}, {0.97f, -0.25f, -0.0f}, {-0.08f, 0.12f}, {-0.08f, 0.12f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.76f, -0.65f, -0.0f}, {-0.08f, 0.23f}, {-0.08f, 0.23f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {-0.7f, 0.71f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {-0.27f, 0.96f, -0.0f}, {0.3f, 0.79f}, {0.3f, 0.79f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {-0.7f, 0.71f, -0.0f}, {0.3f, 0.72f}, {0.3f, 0.72f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.32f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.39f, 1.0f}, {0.39f, 1.0f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.39f, 0.0f}, {0.39f, 0.0f}, 0},\n            {{-0.39f, -0.32f, -0.2f}, {0.54f, 0.84f, -0.0f}, {0.41f, 0.0f}, {0.41f, 0.0f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{-0.39f, -0.32f, 0.2f}, {0.54f, 0.84f, -0.0f}, {0.41f, 0.3f}, {0.41f, 0.3f}, 0},\n            {{-0.19f, -0.14f, -0.2f}, {-0.96f, -0.27f, -0.0f}, {0.23f, 0.88f}, {0.23f, 0.88f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {-0.76f, -0.65f, -0.0f}, {-0.08f, 0.78f}, {-0.08f, 0.78f}, 0},\n            {{-0.19f, -0.14f, 0.2f}, {-0.96f, -0.27f, -0.0f}, {-0.08f, 0.88f}, {-0.08f, 0.88f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {-0.27f, 0.96f, -0.0f}, {0.0f, 0.79f}, {0.0f, 0.79f}, 0},\n            {{0.5f, -0.16f, 0.2f}, {-0.03f, 1.0f, -0.0f}, {0.3f, 0.89f}, {0.3f, 0.89f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {-0.27f, 0.96f, -0.0f}, {0.3f, 0.79f}, {0.3f, 0.79f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {0.72f, -0.7f, -0.0f}, {0.36f, 0.72f}, {0.36f, 0.72f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {0.72f, -0.7f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {0.72f, -0.7f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{-0.53f, -0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.17f, 0.0f}, {0.17f, 0.0f}, 0},\n            {{-0.53f, -0.3f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.11f, 0.3f}, {0.11f, 0.3f}, 0},\n            {{-0.53f, -0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.17f, 0.3f}, {0.17f, 0.3f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {-0.86f, -0.5f, -0.0f}, {0.36f, 0.5f}, {0.36f, 0.5f}, 0},\n            {{-0.83f, -0.25f, 0.2f}, {-0.86f, -0.5f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {-0.86f, -0.5f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{-0.53f, -0.3f, -0.2f}, {0.05f, -1.0f, -0.0f}, {0.11f, 0.0f}, {0.11f, 0.0f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.3f}, {0.08f, 0.3f}, 0},\n            {{-0.53f, -0.3f, 0.2f}, {0.05f, -1.0f, -0.0f}, {0.11f, 0.3f}, {0.11f, 0.3f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.05f, 1.0f, -0.0f}, {0.25f, -0.18f}, {0.25f, -0.18f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.05f, 1.0f, -0.0f}, {-0.08f, -0.18f}, {-0.08f, -0.18f}, 0},\n            {{-0.83f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.32f, 1.5f}, {0.32f, 1.5f}, 0},\n            {{-0.69f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {-0.11f, 1.21f}, {-0.11f, 1.21f}, 0},\n            {{-0.83f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {-0.11f, 1.5f}, {-0.11f, 1.5f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.0f}, {0.08f, 0.0f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {-0.43f, -0.9f, -0.0f}, {0.0f, 0.3f}, {0.0f, 0.3f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.3f}, {0.08f, 0.3f}, 0},\n            {{0.01f, -0.17f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 0.5f}, {0.25f, 0.5f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.6f, 0.8f, -0.0f}, {-0.08f, 0.38f}, {-0.08f, 0.38f}, 0},\n            {{0.01f, -0.17f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 0.5f}, {-0.08f, 0.5f}, 0},\n            {{0.5f, -0.16f, -0.2f}, {-0.03f, 1.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.3f, 1.0f}, {0.3f, 1.0f}, 0},\n            {{0.5f, -0.16f, 0.2f}, {-0.03f, 1.0f, -0.0f}, {0.3f, 0.89f}, {0.3f, 0.89f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.32f, 0.95f, -0.0f}, {0.25f, -0.01f}, {0.25f, -0.01f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.05f, 1.0f, -0.0f}, {-0.08f, -0.18f}, {-0.08f, -0.18f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.32f, 0.95f, -0.0f}, {-0.08f, -0.01f}, {-0.08f, -0.01f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {1.03f, 0.35f}, {1.03f, 0.35f}, 0},\n            {{-1.05f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {1.25f, -0.07f}, {1.25f, -0.07f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {1.03f, -0.07f}, {1.03f, -0.07f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {-0.6f, 0.8f, -0.0f}, {0.25f, 0.62f}, {0.25f, 0.62f}, 0},\n            {{0.01f, -0.17f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 0.5f}, {-0.08f, 0.5f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {-0.6f, 0.8f, -0.0f}, {-0.08f, 0.62f}, {-0.08f, 0.62f}, 0},\n            {{-1.05f, -0.25f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.36f, 1.0f}, {0.36f, 1.0f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{-1.05f, -0.25f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {-0.93f, 0.36f, -0.0f}, {0.41f, -0.08f}, {0.41f, -0.08f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {-0.93f, 0.36f, -0.0f}, {-0.5f, 0.25f}, {-0.5f, 0.25f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {-0.93f, 0.36f, -0.0f}, {0.41f, 0.25f}, {0.41f, 0.25f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.31f, -0.95f, -0.0f}, {0.25f, 1.01f}, {0.25f, 1.01f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.7f, -0.72f, -0.0f}, {-0.08f, 0.87f}, {-0.08f, 0.87f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.31f, -0.95f, -0.0f}, {-0.08f, 1.01f}, {-0.08f, 1.01f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.71f, 0.7f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.32f, 0.95f, -0.0f}, {-0.08f, -0.01f}, {-0.08f, -0.01f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.71f, 0.7f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{-0.42f, -0.38f, -0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.0f}, {0.51f, 0.0f}, 0},\n            {{-0.39f, -0.32f, 0.2f}, {0.86f, -0.51f, -0.0f}, {0.41f, 0.3f}, {0.41f, 0.3f}, 0},\n            {{-0.42f, -0.38f, 0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.3f}, {0.51f, 0.3f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {-0.76f, -0.65f, -0.0f}, {0.23f, 0.78f}, {0.23f, 0.78f}, 0},\n            {{-0.1f, -0.24f, 0.2f}, {-0.38f, -0.92f, -0.0f}, {-0.08f, 0.67f}, {-0.08f, 0.67f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {-0.76f, -0.65f, -0.0f}, {-0.08f, 0.78f}, {-0.08f, 0.78f}, 0},\n            {{0.32f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.25f, 1.5f}, {0.25f, 1.5f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.06f, -1.0f, -0.0f}, {-0.08f, 1.17f}, {-0.08f, 1.17f}, 0},\n            {{0.32f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {-0.08f, 1.5f}, {-0.08f, 1.5f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.47f, 0.18f, 0.2f}, {-0.03f, -1.0f, -0.0f}, {0.3f, 0.07f}, {0.3f, 0.07f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.0f}, {0.3f, 0.0f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.59f, -0.08f}, {0.59f, -0.08f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.41f, 0.25f}, {0.41f, 0.25f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.59f, 0.25f}, {0.59f, 0.25f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {-0.4f, 0.92f, -0.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.3f}, {0.89f, 0.3f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {-0.4f, 0.92f, -0.0f}, {1.0f, 0.3f}, {1.0f, 0.3f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.25f, 1.17f}, {0.25f, 1.17f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.31f, -0.95f, -0.0f}, {-0.08f, 1.01f}, {-0.08f, 1.01f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.06f, -1.0f, -0.0f}, {-0.08f, 1.17f}, {-0.08f, 1.17f}, 0},\n            {{-0.58f, -0.35f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.81f, 0.0f}, {0.81f, 0.0f}, 0},\n            {{-0.58f, -0.39f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.74f, 0.3f}, {0.74f, 0.3f}, 0},\n            {{-0.58f, -0.35f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.81f, 0.3f}, {0.81f, 0.3f}, 0},\n            {{-0.2f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.23f, 1.5f}, {0.23f, 1.5f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {-1.0f, -0.04f, -0.0f}, {-0.08f, 1.08f}, {-0.08f, 1.08f}, 0},\n            {{-0.2f, 0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.08f, 1.5f}, {-0.08f, 1.5f}, 0},\n            {{0.47f, 0.18f, -0.2f}, {-0.03f, -1.0f, -0.0f}, {0.0f, 0.07f}, {0.0f, 0.07f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {-0.26f, -0.97f, -0.0f}, {0.3f, 0.2f}, {0.3f, 0.2f}, 0},\n            {{0.47f, 0.18f, 0.2f}, {-0.03f, -1.0f, -0.0f}, {0.3f, 0.07f}, {0.3f, 0.07f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.0f}, {0.89f, 0.0f}, 0},\n            {{-0.58f, -0.35f, 0.2f}, {0.07f, 1.0f, -0.0f}, {0.81f, 0.3f}, {0.81f, 0.3f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.3f}, {0.89f, 0.3f}, 0},\n            {{0.11f, -0.24f, -0.2f}, {0.37f, -0.93f, -0.0f}, {0.23f, 0.34f}, {0.23f, 0.34f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.76f, -0.65f, -0.0f}, {-0.08f, 0.23f}, {-0.08f, 0.23f}, 0},\n            {{0.11f, -0.24f, 0.2f}, {0.37f, -0.93f, -0.0f}, {-0.08f, 0.34f}, {-0.08f, 0.34f}, 0},\n            {{-0.1f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, -0.33f}, {0.25f, -0.33f}, 0},\n            {{-0.2f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{-0.1f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, -0.33f}, {-0.08f, -0.33f}, 0},\n            {{-0.1f, -0.24f, -0.2f}, {-0.38f, -0.92f, -0.0f}, {0.23f, 0.67f}, {0.23f, 0.67f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.01f, -1.0f, -0.0f}, {-0.08f, 0.49f}, {-0.08f, 0.49f}, 0},\n            {{-0.1f, -0.24f, 0.2f}, {-0.38f, -0.92f, -0.0f}, {-0.08f, 0.67f}, {-0.08f, 0.67f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.94f, 0.33f, -0.0f}, {0.25f, 0.3f}, {0.25f, 0.3f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.71f, 0.7f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.94f, 0.33f, -0.0f}, {-0.08f, 0.3f}, {-0.08f, 0.3f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.93f, 0.37f, -0.0f}, {1.5f, -0.08f}, {1.5f, -0.08f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.93f, 0.37f, -0.0f}, {0.59f, 0.25f}, {0.59f, 0.25f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.93f, 0.37f, -0.0f}, {1.5f, 0.25f}, {1.5f, 0.25f}, 0},\n            {{-0.58f, -0.39f, -0.2f}, {-0.08f, -1.0f, -0.0f}, {0.74f, 0.0f}, {0.74f, 0.0f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.3f}, {0.66f, 0.3f}, 0},\n            {{-0.58f, -0.39f, 0.2f}, {-0.08f, -1.0f, -0.0f}, {0.74f, 0.3f}, {0.74f, 0.3f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.01f, -1.0f, -0.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{0.11f, -0.24f, 0.2f}, {0.37f, -0.93f, -0.0f}, {-0.08f, 0.34f}, {-0.08f, 0.34f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.01f, -1.0f, -0.0f}, {-0.08f, 0.49f}, {-0.08f, 0.49f}, 0},\n            {{-0.1f, -0.02f, -0.2f}, {1.0f, 0.02f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{-0.1f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {-0.08f, -0.33f}, {-0.08f, -0.33f}, 0},\n            {{-0.1f, -0.02f, 0.2f}, {1.0f, 0.02f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.0f}, {0.66f, 0.0f}, 0},\n            {{-0.42f, -0.38f, 0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.3f}, {0.51f, 0.3f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.3f}, {0.66f, 0.3f}, 0},\n            {{-0.11f, 0.38f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.34f, 1.0f}, {0.34f, 1.0f}, 0},\n            {{-0.11f, 0.31f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{-0.11f, 0.38f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.1f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.25f, 1.33f}, {0.25f, 1.33f}, 0},\n            {{0.1f, -0.02f, 0.2f}, {-1.0f, 0.02f, -0.0f}, {-0.08f, 0.85f}, {-0.08f, 0.85f}, 0},\n            {{0.1f, 0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.08f, 1.33f}, {-0.08f, 1.33f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.59f, 1.0f}, {0.59f, 1.0f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.59f, 0.0f}, {0.59f, 0.0f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.37f, 1.0f}, {0.37f, 1.0f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.37f, 0.63f}, {0.37f, 0.63f}, 0},\n            {{-1.16f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.03f, 0.35f}, {-0.03f, 0.35f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {1.03f, -0.07f}, {1.03f, -0.07f}, 0},\n            {{-1.16f, 0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.03f, -0.07f}, {-0.03f, -0.07f}, 0},\n            {{0.12f, 0.38f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.34f, 0.39f}, {0.34f, 0.39f}, 0},\n            {{-0.11f, 0.38f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.12f, 0.38f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{0.21f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 1.5f}, {0.25f, 1.5f}, 0},\n            {{0.1f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 1.33f}, {-0.08f, 1.33f}, 0},\n            {{0.21f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 1.5f}, {-0.08f, 1.5f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {-0.26f, -0.97f, -0.0f}, {0.0f, 0.2f}, {0.0f, 0.2f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {-0.68f, -0.73f, -0.0f}, {0.3f, 0.28f}, {0.3f, 0.28f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {-0.26f, -0.97f, -0.0f}, {0.3f, 0.2f}, {0.3f, 0.2f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {-0.94f, -0.35f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {-0.94f, -0.35f, -0.0f}, {0.37f, 0.37f}, {0.37f, 0.37f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {-0.94f, -0.35f, -0.0f}, {0.37f, 0.0f}, {0.37f, 0.0f}, 0},\n            {{-1.05f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.25f, 0.35f}, {-0.25f, 0.35f}, 0},\n            {{-1.16f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.03f, -0.07f}, {-0.03f, -0.07f}, 0},\n            {{-1.05f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.25f, -0.07f}, {-0.25f, -0.07f}, 0},\n            {{-0.11f, 0.31f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.34f, 0.89f}, {0.34f, 0.89f}, 0},\n            {{0.12f, 0.31f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{-0.11f, 0.31f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {-0.68f, -0.73f, -0.0f}, {0.0f, 0.28f}, {0.0f, 0.28f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {-0.95f, -0.32f, -0.0f}, {0.3f, 0.36f}, {0.3f, 0.36f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {-0.68f, -0.73f, -0.0f}, {0.3f, 0.28f}, {0.3f, 0.28f}, 0},\n            {{0.12f, 0.31f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.34f, 0.5f}, {0.34f, 0.5f}, 0},\n            {{0.12f, 0.38f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{0.12f, 0.31f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {1.0f, -0.03f, -0.0f}, {0.23f, -0.09f}, {0.23f, -0.09f}, 0},\n            {{0.21f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {1.0f, -0.03f, -0.0f}, {-0.08f, -0.09f}, {-0.08f, -0.09f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.58f, 0.37f}, {0.58f, 0.37f}, 0},\n            {{-1.05f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.58f, 0.0f}, {0.58f, 0.0f}, 0},\n            {{-0.64f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.1f, 0.52f}, {-0.1f, 0.52f}, 0},\n            {{-0.64f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.29f, 1.5f}, {0.29f, 1.5f}, 0},\n            {{-0.64f, 0.26f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.29f, 0.52f}, {0.29f, 0.52f}, 0},\n            {{0.2f, -0.14f, -0.2f}, {0.97f, -0.25f, -0.0f}, {0.23f, 0.12f}, {0.23f, 0.12f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {1.0f, -0.03f, -0.0f}, {-0.08f, -0.09f}, {-0.08f, -0.09f}, 0},\n            {{0.2f, -0.14f, 0.2f}, {0.97f, -0.25f, -0.0f}, {-0.08f, 0.12f}, {-0.08f, 0.12f}, 0},\n            {{0.75f, 0.0f, -0.2f}, {1.0f, -0.0f, -0.0f}, {0.25f, 0.51f}, {0.25f, 0.51f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.94f, 0.33f, -0.0f}, {-0.08f, 0.3f}, {-0.08f, 0.3f}, 0},\n            {{0.75f, 0.0f, 0.2f}, {1.0f, -0.0f, -0.0f}, {-0.08f, 0.51f}, {-0.08f, 0.51f}, 0},\n            {{-0.84f, 0.26f, -0.2f}, {-0.74f, 0.68f, -0.0f}, {0.0f, 0.37f}, {0.0f, 0.37f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {-0.74f, 0.68f, -0.0f}, {0.58f, 0.0f}, {0.58f, 0.0f}, 0},\n            {{-0.84f, 0.26f, 0.2f}, {-0.74f, 0.68f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {-1.0f, -0.04f, -0.0f}, {0.23f, 1.08f}, {0.23f, 1.08f}, 0},\n            {{-0.19f, -0.14f, 0.2f}, {-0.96f, -0.27f, -0.0f}, {-0.08f, 0.88f}, {-0.08f, 0.88f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {-1.0f, -0.04f, -0.0f}, {-0.08f, 1.08f}, {-0.08f, 1.08f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {-0.95f, -0.32f, -0.0f}, {0.0f, 0.36f}, {0.0f, 0.36f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {-1.0f, -0.0f, -0.0f}, {0.3f, 0.5f}, {0.3f, 0.5f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {-0.95f, -0.32f, -0.0f}, {0.3f, 0.36f}, {0.3f, 0.36f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.37f}, {0.0f, 0.37f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.37f, 0.63f}, {0.37f, 0.63f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.37f, 0.37f}, {0.37f, 0.37f}, 0},\n            {{-0.53f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.1f, 0.32f}, {-0.1f, 0.32f}, 0},\n            {{-0.64f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.29f, 0.52f}, {0.29f, 0.52f}, 0},\n            {{-0.53f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.29f, 0.32f}, {0.29f, 0.32f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.35f}, {0.0f, 0.35f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.65f}, {0.3f, 0.65f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.35f}, {0.3f, 0.35f}, 0},\n            {{-0.7f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.32f, -0.2f}, {0.32f, -0.2f}, 0},\n            {{-0.84f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.11f, -0.5f}, {-0.11f, -0.5f}, 0},\n            {{-0.7f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.11f, -0.2f}, {-0.11f, -0.2f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.95f, 0.3f, -0.0f}, {0.25f, 0.28f}, {0.25f, 0.28f}, 0},\n            {{-0.1f, -0.02f, 0.2f}, {1.0f, 0.02f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.95f, 0.3f, -0.0f}, {-0.08f, 0.28f}, {-0.08f, 0.28f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {-1.0f, -0.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {-0.95f, 0.3f, -0.0f}, {0.3f, 0.64f}, {0.3f, 0.64f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {-1.0f, -0.0f, -0.0f}, {0.3f, 0.5f}, {0.3f, 0.5f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {1.0f, 0.0f, -0.0f}, {-0.1f, -0.5f}, {-0.1f, -0.5f}, 0},\n            {{-0.53f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.29f, 0.32f}, {0.29f, 0.32f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.29f, -0.5f}, {0.29f, -0.5f}, 0},\n            {{0.1f, -0.02f, -0.2f}, {-1.0f, 0.02f, -0.0f}, {0.25f, 0.85f}, {0.25f, 0.85f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {-0.96f, 0.29f, -0.0f}, {-0.08f, 0.7f}, {-0.08f, 0.7f}, 0},\n            {{0.1f, -0.02f, 0.2f}, {-1.0f, 0.02f, -0.0f}, {-0.08f, 0.85f}, {-0.08f, 0.85f}, 0},\n            {{-0.83f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.26f}, {1.0f, 0.26f}, 0},\n            {{-0.69f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.4f}, {0.39f, 0.4f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.64f}, {0.83f, 0.64f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.17f, 0.64f}, {0.17f, 0.64f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.84f}, {0.0f, 0.84f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.02f, 0.28f}, {0.02f, 0.28f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.18f, 0.38f}, {0.18f, 0.38f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.29f}, {0.23f, 0.29f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.58f, 0.3f}, {0.58f, 0.3f}, 0},\n            {{-0.1f, -0.02f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 0.47f}, {0.59f, 0.47f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.48f}, {0.78f, 0.48f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.34f, 0.4f}, {0.34f, 0.4f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.33f, 0.25f}, {0.33f, 0.25f}, 0},\n            {{-0.53f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.32f}, {0.23f, 0.32f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.26f, 0.2f}, {0.26f, 0.2f}, 0},\n            {{0.01f, -0.17f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.17f}, {0.39f, 0.17f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.38f, 0.0f}, {0.38f, 0.0f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.47f}, {0.0f, 0.47f}, 0},\n            {{0.47f, 0.18f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.17f, 0.55f}, {0.17f, 0.55f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.18f, 0.38f}, {0.18f, 0.38f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.82f, 0.36f}, {0.82f, 0.36f}, 0},\n            {{0.5f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.83f, 0.49f}, {0.83f, 0.49f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.0f, 0.0f, 1.0f}, {1.0f, 0.46f}, {1.0f, 0.46f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.9f, 0.14f}, {0.9f, 0.14f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.72f, 0.03f}, {0.72f, 0.03f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.68f, 0.23f}, {0.68f, 0.23f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.48f}, {0.0f, 0.48f}, 0},\n            {{0.21f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.1f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 1.0f}, {0.2f, 1.0f}, 0},\n            {{-0.58f, -0.39f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.3f, 0.75f}, {0.3f, 0.75f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.47f, 0.67f}, {0.47f, 0.67f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.56f}, {0.39f, 0.56f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.5f, 0.21f}, {0.5f, 0.21f}, 0},\n            {{0.75f, 0.0f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.51f, 0.0f}, {0.51f, 0.0f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.27f, 0.03f}, {0.27f, 0.03f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.71f, 0.12f}, {0.71f, 0.12f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.21f}, {0.52f, 0.21f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.58f, 0.3f}, {0.58f, 0.3f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.98f, 0.28f}, {0.98f, 0.28f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.9f, 0.14f}, {0.9f, 0.14f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.28f}, {0.78f, 0.28f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.47f, 0.67f}, {0.47f, 0.67f}, 0},\n            {{-0.42f, -0.38f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.7f, 0.46f}, {0.7f, 0.46f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.38f}, {0.52f, 0.38f}, 0},\n            {{0.12f, 0.31f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{0.12f, 0.38f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.25f, 0.29f}, {0.25f, 0.29f}, 0},\n            {{-0.11f, 0.38f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.75f, 0.29f}, {0.75f, 0.29f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.11f, 0.13f}, {0.11f, 0.13f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.29f}, {0.23f, 0.29f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.32f, 0.23f}, {0.32f, 0.23f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.78f, 0.48f}, {0.78f, 0.48f}, 0},\n            {{-0.1f, -0.02f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 0.47f}, {0.59f, 0.47f}, 0},\n            {{-0.1f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 1.0f}, {0.59f, 1.0f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.83f}, {0.2f, 0.83f}, 0},\n            {{-0.53f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.2f, 0.0f}, {0.2f, 0.0f}, 0},\n            {{-0.64f, 0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.23f, 0.69f}, {0.23f, 0.69f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.39f, 0.63f}, {0.39f, 0.63f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.08f, 0.11f}, {0.08f, 0.11f}, 0},\n            {{0.2f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.02f, 0.23f}, {0.02f, 0.23f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.21f, 0.29f}, {0.21f, 0.29f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.52f, 0.21f}, {0.52f, 0.21f}, 0},\n            {{-0.1f, -0.24f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.59f, 0.03f}, {0.59f, 0.03f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.38f, 0.0f}, {0.38f, 0.0f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.72f, 0.03f}, {0.72f, 0.03f}, 0},\n            {{0.75f, 0.0f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.51f, 0.0f}, {0.51f, 0.0f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.5f, 0.21f}, {0.5f, 0.21f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.21f, 0.29f}, {0.21f, 0.29f}, 0},\n            {{0.2f, -0.14f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.02f, 0.23f}, {0.02f, 0.23f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {0.0f, 0.0f, 1.0f}, {0.0f, 0.48f}, {0.0f, 0.48f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.5f}, {0.39f, 0.5f}, 0},\n            {{-0.69f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.9f}, {1.0f, 0.9f}, 0},\n            {{-0.83f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.64f}, {1.0f, 0.64f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.84f, 0.0f}, {0.84f, 0.0f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.17f}, {0.64f, 0.17f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.64f, 0.83f}, {0.64f, 0.83f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.23f}, {0.29f, 0.23f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.38f, 0.18f}, {0.38f, 0.18f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.02f}, {0.28f, 0.02f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.78f}, {0.48f, 0.78f}, 0},\n            {{-0.1f, -0.02f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.59f}, {0.47f, 0.59f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.58f}, {0.3f, 0.58f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.34f, 0.6f}, {0.34f, 0.6f}, 0},\n            {{-0.53f, -0.3f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.57f}, {0.3f, 0.57f}, 0},\n            {{-0.53f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.68f}, {0.23f, 0.68f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.38f}, {0.0f, 0.38f}, 0},\n            {{0.01f, -0.17f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.17f, 0.39f}, {0.17f, 0.39f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.26f}, {0.2f, 0.26f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.38f, 0.18f}, {0.38f, 0.18f}, 0},\n            {{0.47f, 0.18f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.55f, 0.17f}, {0.55f, 0.17f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.0f}, {0.47f, 0.0f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.46f, 1.0f}, {0.46f, 1.0f}, 0},\n            {{0.5f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.49f, 0.83f}, {0.49f, 0.83f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.36f, 0.82f}, {0.36f, 0.82f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.68f}, {0.23f, 0.68f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.72f}, {0.03f, 0.72f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.14f, 0.9f}, {0.14f, 0.9f}, 0},\n            {{0.1f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.2f}, {1.0f, 0.2f}, 0},\n            {{0.21f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.0f}, {0.48f, 0.0f}, 0},\n            {{-0.58f, -0.39f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.25f}, {0.3f, 0.25f}, 0},\n            {{-0.58f, -0.35f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.36f}, {0.23f, 0.36f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.39f, 0.44f}, {0.39f, 0.44f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.27f}, {0.03f, 0.27f}, 0},\n            {{0.75f, 0.0f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.51f}, {0.0f, 0.51f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.5f}, {0.21f, 0.5f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.3f, 0.58f}, {0.3f, 0.58f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.52f}, {0.21f, 0.52f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.12f, 0.71f}, {0.12f, 0.71f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.78f}, {0.28f, 0.78f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.14f, 0.9f}, {0.14f, 0.9f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.28f, 0.98f}, {0.28f, 0.98f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.52f, 0.62f}, {0.52f, 0.62f}, 0},\n            {{-0.42f, -0.38f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.7f, 0.54f}, {0.7f, 0.54f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.47f, 0.33f}, {0.47f, 0.33f}, 0},\n            {{-0.11f, 0.38f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.75f, 0.29f}, {0.75f, 0.29f}, 0},\n            {{0.12f, 0.38f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.25f, 0.29f}, {0.25f, 0.29f}, 0},\n            {{0.12f, 0.31f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.25f, 0.43f}, {0.25f, 0.43f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.32f}, {0.23f, 0.32f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.23f}, {0.29f, 0.23f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.13f, 0.11f}, {0.13f, 0.11f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.78f}, {0.48f, 0.78f}, 0},\n            {{-0.2f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.78f}, {1.0f, 0.78f}, 0},\n            {{-0.1f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {1.0f, 0.59f}, {1.0f, 0.59f}, 0},\n            {{-0.64f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{-0.53f, 0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 1.0f}, {0.2f, 1.0f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.2f, 0.17f}, {0.2f, 0.17f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.77f, 0.3f}, {0.77f, 0.3f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.36f}, {0.6f, 0.36f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.6f, 0.63f}, {0.6f, 0.63f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.21f}, {0.29f, 0.21f}, 0},\n            {{0.2f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.02f}, {0.23f, 0.02f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.11f, 0.08f}, {0.11f, 0.08f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.38f}, {0.0f, 0.38f}, 0},\n            {{-0.1f, -0.24f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.59f}, {0.03f, 0.59f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.52f}, {0.21f, 0.52f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.21f, 0.5f}, {0.21f, 0.5f}, 0},\n            {{0.75f, 0.0f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.0f, 0.51f}, {0.0f, 0.51f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.03f, 0.72f}, {0.03f, 0.72f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.48f, 0.0f}, {0.48f, 0.0f}, 0},\n            {{0.2f, -0.14f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.23f, 0.02f}, {0.23f, 0.02f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {0.0f, 0.0f, -1.0f}, {0.29f, 0.21f}, {0.29f, 0.21f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {1.0f, -0.09f, -0.0f}, {0.32f, 0.4f}, {0.32f, 0.4f}, 0},\n            {{-0.7f, 0.26f, -0.2f}, {0.72f, -0.69f, -0.0f}, {0.32f, -0.2f}, {0.32f, -0.2f}, 0},\n            {{-0.7f, 0.26f, 0.2f}, {0.72f, -0.69f, -0.0f}, {-0.11f, -0.2f}, {-0.11f, -0.2f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.25f, 0.69f}, {0.25f, 0.69f}, 0},\n            {{0.75f, 0.0f, -0.2f}, {1.0f, -0.0f, -0.0f}, {0.25f, 0.51f}, {0.25f, 0.51f}, 0},\n            {{0.75f, 0.0f, 0.2f}, {1.0f, -0.0f, -0.0f}, {-0.08f, 0.51f}, {-0.08f, 0.51f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.89f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.16f}, {0.0f, 0.16f}, 0},\n            {{0.89f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.16f}, {0.3f, 0.16f}, 0},\n            {{-0.28f, -0.16f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{-0.53f, -0.16f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.28f, 1.0f}, {0.28f, 1.0f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.6f, 0.8f, -0.0f}, {0.25f, 0.38f}, {0.25f, 0.38f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.95f, 0.3f, -0.0f}, {0.25f, 0.28f}, {0.25f, 0.28f}, 0},\n            {{-0.1f, -0.1f, 0.2f}, {0.95f, 0.3f, -0.0f}, {-0.08f, 0.28f}, {-0.08f, 0.28f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {-0.95f, 0.3f, -0.0f}, {0.0f, 0.64f}, {0.0f, 0.64f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {-0.7f, 0.71f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{0.6f, -0.14f, 0.2f}, {-0.7f, 0.71f, -0.0f}, {0.3f, 0.72f}, {0.3f, 0.72f}, 0},\n            {{0.89f, -0.25f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 0.16f}, {0.0f, 0.16f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 0.35f}, {0.0f, 0.35f}, 0},\n            {{0.94f, -0.13f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.3f, 0.35f}, {0.3f, 0.35f}, 0},\n            {{-0.64f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.28f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.51f}, {0.0f, 0.51f}, 0},\n            {{-0.28f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.28f, 0.51f}, {0.28f, 0.51f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {-0.96f, 0.29f, -0.0f}, {0.25f, 0.7f}, {0.25f, 0.7f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {-0.6f, 0.8f, -0.0f}, {0.25f, 0.62f}, {0.25f, 0.62f}, 0},\n            {{0.07f, -0.15f, 0.2f}, {-0.6f, 0.8f, -0.0f}, {-0.08f, 0.62f}, {-0.08f, 0.62f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {-0.93f, -0.36f, -0.0f}, {0.0f, 0.65f}, {0.0f, 0.65f}, 0},\n            {{1.19f, -0.25f, -0.2f}, {-0.93f, -0.36f, -0.0f}, {0.0f, 0.83f}, {0.0f, 0.83f}, 0},\n            {{1.19f, -0.25f, 0.2f}, {-0.93f, -0.36f, -0.0f}, {0.3f, 0.83f}, {0.3f, 0.83f}, 0},\n            {{-0.69f, -0.25f, -0.2f}, {0.84f, 0.55f, -0.0f}, {0.32f, 1.21f}, {0.32f, 1.21f}, 0},\n            {{-0.9f, 0.06f, -0.2f}, {1.0f, -0.09f, -0.0f}, {0.32f, 0.4f}, {0.32f, 0.4f}, 0},\n            {{-0.9f, 0.06f, 0.2f}, {1.0f, -0.09f, -0.0f}, {-0.11f, 0.4f}, {-0.11f, 0.4f}, 0},\n            {{-0.28f, -0.25f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.51f}, {0.0f, 0.51f}, 0},\n            {{-0.28f, -0.16f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{-0.28f, -0.16f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.28f, 0.63f}, {0.28f, 0.63f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.7f, -0.72f, -0.0f}, {0.25f, 0.87f}, {0.25f, 0.87f}, 0},\n            {{0.73f, -0.11f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.25f, 0.69f}, {0.25f, 0.69f}, 0},\n            {{0.73f, -0.11f, 0.2f}, {0.94f, -0.34f, -0.0f}, {-0.08f, 0.69f}, {-0.08f, 0.69f}, 0},\n            {{1.19f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.83f}, {0.0f, 0.83f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{1.3f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 1.0f}, {0.3f, 1.0f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.0f}, {0.23f, 0.0f}, 0},\n            {{-0.53f, -0.26f, -0.2f}, {-0.05f, 1.0f, -0.0f}, {0.17f, 0.0f}, {0.17f, 0.0f}, 0},\n            {{-0.53f, -0.26f, 0.2f}, {-0.05f, 1.0f, -0.0f}, {0.17f, 0.3f}, {0.17f, 0.3f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.76f, -0.65f, -0.0f}, {0.23f, 0.23f}, {0.23f, 0.23f}, 0},\n            {{0.2f, -0.14f, -0.2f}, {0.97f, -0.25f, -0.0f}, {0.23f, 0.12f}, {0.23f, 0.12f}, 0},\n            {{0.2f, -0.14f, 0.2f}, {0.97f, -0.25f, -0.0f}, {-0.08f, 0.12f}, {-0.08f, 0.12f}, 0},\n            {{0.6f, -0.14f, -0.2f}, {-0.7f, 0.71f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {-0.27f, 0.96f, -0.0f}, {0.0f, 0.79f}, {0.0f, 0.79f}, 0},\n            {{0.56f, -0.16f, 0.2f}, {-0.27f, 0.96f, -0.0f}, {0.3f, 0.79f}, {0.3f, 0.79f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.32f, -0.25f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.32f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.39f, 1.0f}, {0.39f, 1.0f}, 0},\n            {{-0.39f, -0.32f, -0.2f}, {0.54f, 0.84f, -0.0f}, {0.41f, 0.0f}, {0.41f, 0.0f}, 0},\n            {{-0.49f, -0.26f, -0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.0f}, {0.23f, 0.0f}, 0},\n            {{-0.49f, -0.26f, 0.2f}, {0.26f, 0.97f, -0.0f}, {0.23f, 0.3f}, {0.23f, 0.3f}, 0},\n            {{-0.19f, -0.14f, -0.2f}, {-0.96f, -0.27f, -0.0f}, {0.23f, 0.88f}, {0.23f, 0.88f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {-0.76f, -0.65f, -0.0f}, {0.23f, 0.78f}, {0.23f, 0.78f}, 0},\n            {{-0.16f, -0.2f, 0.2f}, {-0.76f, -0.65f, -0.0f}, {-0.08f, 0.78f}, {-0.08f, 0.78f}, 0},\n            {{0.56f, -0.16f, -0.2f}, {-0.27f, 0.96f, -0.0f}, {0.0f, 0.79f}, {0.0f, 0.79f}, 0},\n            {{0.5f, -0.16f, -0.2f}, {-0.03f, 1.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{0.5f, -0.16f, 0.2f}, {-0.03f, 1.0f, -0.0f}, {0.3f, 0.89f}, {0.3f, 0.89f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {0.72f, -0.7f, -0.0f}, {0.36f, 0.72f}, {0.36f, 0.72f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {0.72f, -0.7f, -0.0f}, {0.36f, 0.5f}, {0.36f, 0.5f}, 0},\n            {{-0.97f, -0.01f, 0.2f}, {0.72f, -0.7f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{-0.53f, -0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.17f, 0.0f}, {0.17f, 0.0f}, 0},\n            {{-0.53f, -0.3f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.11f, 0.0f}, {0.11f, 0.0f}, 0},\n            {{-0.53f, -0.3f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.11f, 0.3f}, {0.11f, 0.3f}, 0},\n            {{-0.97f, -0.01f, -0.2f}, {-0.86f, -0.5f, -0.0f}, {0.36f, 0.5f}, {0.36f, 0.5f}, 0},\n            {{-0.83f, -0.25f, -0.2f}, {-0.86f, -0.5f, -0.0f}, {0.36f, 0.0f}, {0.36f, 0.0f}, 0},\n            {{-0.83f, -0.25f, 0.2f}, {-0.86f, -0.5f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.53f, -0.3f, -0.2f}, {0.05f, -1.0f, -0.0f}, {0.11f, 0.0f}, {0.11f, 0.0f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.0f}, {0.08f, 0.0f}, 0},\n            {{-0.51f, -0.3f, 0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.3f}, {0.08f, 0.3f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.05f, 1.0f, -0.0f}, {0.25f, -0.18f}, {0.25f, -0.18f}, 0},\n            {{0.32f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, -0.5f}, {0.25f, -0.5f}, 0},\n            {{0.32f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{-0.83f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.32f, 1.5f}, {0.32f, 1.5f}, 0},\n            {{-0.69f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.32f, 1.21f}, {0.32f, 1.21f}, 0},\n            {{-0.69f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {-0.11f, 1.21f}, {-0.11f, 1.21f}, 0},\n            {{-0.51f, -0.3f, -0.2f}, {-0.19f, -0.98f, -0.0f}, {0.08f, 0.0f}, {0.08f, 0.0f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {-0.43f, -0.9f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{-0.46f, -0.32f, 0.2f}, {-0.43f, -0.9f, -0.0f}, {0.0f, 0.3f}, {0.0f, 0.3f}, 0},\n            {{0.01f, -0.17f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 0.5f}, {0.25f, 0.5f}, 0},\n            {{-0.06f, -0.15f, -0.2f}, {0.6f, 0.8f, -0.0f}, {0.25f, 0.38f}, {0.25f, 0.38f}, 0},\n            {{-0.06f, -0.15f, 0.2f}, {0.6f, 0.8f, -0.0f}, {-0.08f, 0.38f}, {-0.08f, 0.38f}, 0},\n            {{0.5f, -0.16f, -0.2f}, {-0.03f, 1.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.42f, -0.16f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.3f, 1.0f}, {0.3f, 1.0f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.32f, 0.95f, -0.0f}, {0.25f, -0.01f}, {0.25f, -0.01f}, 0},\n            {{0.51f, 0.26f, -0.2f}, {0.05f, 1.0f, -0.0f}, {0.25f, -0.18f}, {0.25f, -0.18f}, 0},\n            {{0.51f, 0.26f, 0.2f}, {0.05f, 1.0f, -0.0f}, {-0.08f, -0.18f}, {-0.08f, -0.18f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {1.03f, 0.35f}, {1.03f, 0.35f}, 0},\n            {{-1.05f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {1.25f, 0.35f}, {1.25f, 0.35f}, 0},\n            {{-1.05f, -0.25f, 0.2f}, {0.0f, -1.0f, -0.0f}, {1.25f, -0.07f}, {1.25f, -0.07f}, 0},\n            {{0.07f, -0.15f, -0.2f}, {-0.6f, 0.8f, -0.0f}, {0.25f, 0.62f}, {0.25f, 0.62f}, 0},\n            {{0.01f, -0.17f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 0.5f}, {0.25f, 0.5f}, 0},\n            {{0.01f, -0.17f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 0.5f}, {-0.08f, 0.5f}, 0},\n            {{-1.05f, -0.25f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.36f, 1.0f}, {0.36f, 1.0f}, 0},\n            {{-1.05f, -0.1f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.36f, 0.72f}, {0.36f, 0.72f}, 0},\n            {{-1.05f, -0.1f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.72f}, {0.0f, 0.72f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {-0.93f, 0.36f, -0.0f}, {0.41f, -0.08f}, {0.41f, -0.08f}, 0},\n            {{0.78f, -0.25f, -0.2f}, {-0.93f, 0.36f, -0.0f}, {-0.5f, -0.08f}, {-0.5f, -0.08f}, 0},\n            {{0.78f, -0.25f, 0.2f}, {-0.93f, 0.36f, -0.0f}, {-0.5f, 0.25f}, {-0.5f, 0.25f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.31f, -0.95f, -0.0f}, {0.25f, 1.01f}, {0.25f, 1.01f}, 0},\n            {{0.68f, -0.2f, -0.2f}, {0.7f, -0.72f, -0.0f}, {0.25f, 0.87f}, {0.25f, 0.87f}, 0},\n            {{0.68f, -0.2f, 0.2f}, {0.7f, -0.72f, -0.0f}, {-0.08f, 0.87f}, {-0.08f, 0.87f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.71f, 0.7f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{0.6f, 0.25f, -0.2f}, {0.32f, 0.95f, -0.0f}, {0.25f, -0.01f}, {0.25f, -0.01f}, 0},\n            {{0.6f, 0.25f, 0.2f}, {0.32f, 0.95f, -0.0f}, {-0.08f, -0.01f}, {-0.08f, -0.01f}, 0},\n            {{-0.42f, -0.38f, -0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.0f}, {0.51f, 0.0f}, 0},\n            {{-0.39f, -0.32f, -0.2f}, {0.86f, -0.51f, -0.0f}, {0.41f, 0.0f}, {0.41f, 0.0f}, 0},\n            {{-0.39f, -0.32f, 0.2f}, {0.86f, -0.51f, -0.0f}, {0.41f, 0.3f}, {0.41f, 0.3f}, 0},\n            {{-0.16f, -0.2f, -0.2f}, {-0.76f, -0.65f, -0.0f}, {0.23f, 0.78f}, {0.23f, 0.78f}, 0},\n            {{-0.1f, -0.24f, -0.2f}, {-0.38f, -0.92f, -0.0f}, {0.23f, 0.67f}, {0.23f, 0.67f}, 0},\n            {{-0.1f, -0.24f, 0.2f}, {-0.38f, -0.92f, -0.0f}, {-0.08f, 0.67f}, {-0.08f, 0.67f}, 0},\n            {{0.32f, -0.25f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.25f, 1.5f}, {0.25f, 1.5f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.25f, 1.17f}, {0.25f, 1.17f}, 0},\n            {{0.51f, -0.25f, 0.2f}, {0.06f, -1.0f, -0.0f}, {-0.08f, 1.17f}, {-0.08f, 1.17f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.47f, 0.18f, -0.2f}, {-0.03f, -1.0f, -0.0f}, {0.0f, 0.07f}, {0.0f, 0.07f}, 0},\n            {{0.47f, 0.18f, 0.2f}, {-0.03f, -1.0f, -0.0f}, {0.3f, 0.07f}, {0.3f, 0.07f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.59f, -0.08f}, {0.59f, -0.08f}, 0},\n            {{0.98f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.41f, -0.08f}, {0.41f, -0.08f}, 0},\n            {{0.98f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.41f, 0.25f}, {0.41f, 0.25f}, 0},\n            {{-0.46f, -0.32f, -0.2f}, {-0.4f, 0.92f, -0.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.0f}, {0.89f, 0.0f}, 0},\n            {{-0.52f, -0.35f, 0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.3f}, {0.89f, 0.3f}, 0},\n            {{0.51f, -0.25f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.25f, 1.17f}, {0.25f, 1.17f}, 0},\n            {{0.6f, -0.24f, -0.2f}, {0.31f, -0.95f, -0.0f}, {0.25f, 1.01f}, {0.25f, 1.01f}, 0},\n            {{0.6f, -0.24f, 0.2f}, {0.31f, -0.95f, -0.0f}, {-0.08f, 1.01f}, {-0.08f, 1.01f}, 0},\n            {{-0.58f, -0.35f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.81f, 0.0f}, {0.81f, 0.0f}, 0},\n            {{-0.58f, -0.39f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.74f, 0.0f}, {0.74f, 0.0f}, 0},\n            {{-0.58f, -0.39f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.74f, 0.3f}, {0.74f, 0.3f}, 0},\n            {{-0.2f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.23f, 1.5f}, {0.23f, 1.5f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {-1.0f, -0.04f, -0.0f}, {0.23f, 1.08f}, {0.23f, 1.08f}, 0},\n            {{-0.2f, -0.01f, 0.2f}, {-1.0f, -0.04f, -0.0f}, {-0.08f, 1.08f}, {-0.08f, 1.08f}, 0},\n            {{0.47f, 0.18f, -0.2f}, {-0.03f, -1.0f, -0.0f}, {0.0f, 0.07f}, {0.0f, 0.07f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {-0.26f, -0.97f, -0.0f}, {0.0f, 0.2f}, {0.0f, 0.2f}, 0},\n            {{0.55f, 0.17f, 0.2f}, {-0.26f, -0.97f, -0.0f}, {0.3f, 0.2f}, {0.3f, 0.2f}, 0},\n            {{-0.52f, -0.35f, -0.2f}, {-0.17f, 0.99f, -0.0f}, {0.89f, 0.0f}, {0.89f, 0.0f}, 0},\n            {{-0.58f, -0.35f, -0.2f}, {0.07f, 1.0f, -0.0f}, {0.81f, 0.0f}, {0.81f, 0.0f}, 0},\n            {{-0.58f, -0.35f, 0.2f}, {0.07f, 1.0f, -0.0f}, {0.81f, 0.3f}, {0.81f, 0.3f}, 0},\n            {{0.11f, -0.24f, -0.2f}, {0.37f, -0.93f, -0.0f}, {0.23f, 0.34f}, {0.23f, 0.34f}, 0},\n            {{0.17f, -0.2f, -0.2f}, {0.76f, -0.65f, -0.0f}, {0.23f, 0.23f}, {0.23f, 0.23f}, 0},\n            {{0.17f, -0.2f, 0.2f}, {0.76f, -0.65f, -0.0f}, {-0.08f, 0.23f}, {-0.08f, 0.23f}, 0},\n            {{-0.1f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, -0.33f}, {0.25f, -0.33f}, 0},\n            {{-0.2f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, -0.5f}, {0.25f, -0.5f}, 0},\n            {{-0.2f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{-0.1f, -0.24f, -0.2f}, {-0.38f, -0.92f, -0.0f}, {0.23f, 0.67f}, {0.23f, 0.67f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.01f, -1.0f, -0.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{0.01f, -0.26f, 0.2f}, {0.01f, -1.0f, -0.0f}, {-0.08f, 0.49f}, {-0.08f, 0.49f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.94f, 0.33f, -0.0f}, {0.25f, 0.3f}, {0.25f, 0.3f}, 0},\n            {{0.68f, 0.21f, -0.2f}, {0.71f, 0.7f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{0.68f, 0.21f, 0.2f}, {0.71f, 0.7f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{1.3f, -0.25f, -0.2f}, {0.93f, 0.37f, -0.0f}, {1.5f, -0.08f}, {1.5f, -0.08f}, 0},\n            {{1.09f, 0.26f, -0.2f}, {0.93f, 0.37f, -0.0f}, {0.59f, -0.08f}, {0.59f, -0.08f}, 0},\n            {{1.09f, 0.26f, 0.2f}, {0.93f, 0.37f, -0.0f}, {0.59f, 0.25f}, {0.59f, 0.25f}, 0},\n            {{-0.58f, -0.39f, -0.2f}, {-0.08f, -1.0f, -0.0f}, {0.74f, 0.0f}, {0.74f, 0.0f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.0f}, {0.66f, 0.0f}, 0},\n            {{-0.52f, -0.4f, 0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.3f}, {0.66f, 0.3f}, 0},\n            {{0.01f, -0.26f, -0.2f}, {0.01f, -1.0f, -0.0f}, {0.23f, 0.49f}, {0.23f, 0.49f}, 0},\n            {{0.11f, -0.24f, -0.2f}, {0.37f, -0.93f, -0.0f}, {0.23f, 0.34f}, {0.23f, 0.34f}, 0},\n            {{0.11f, -0.24f, 0.2f}, {0.37f, -0.93f, -0.0f}, {-0.08f, 0.34f}, {-0.08f, 0.34f}, 0},\n            {{-0.1f, -0.02f, -0.2f}, {1.0f, 0.02f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{-0.1f, 0.26f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.25f, -0.33f}, {0.25f, -0.33f}, 0},\n            {{-0.1f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {-0.08f, -0.33f}, {-0.08f, -0.33f}, 0},\n            {{-0.52f, -0.4f, -0.2f}, {0.06f, -1.0f, -0.0f}, {0.66f, 0.0f}, {0.66f, 0.0f}, 0},\n            {{-0.42f, -0.38f, -0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.0f}, {0.51f, 0.0f}, 0},\n            {{-0.42f, -0.38f, 0.2f}, {0.58f, -0.81f, -0.0f}, {0.51f, 0.3f}, {0.51f, 0.3f}, 0},\n            {{-0.11f, 0.38f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.34f, 1.0f}, {0.34f, 1.0f}, 0},\n            {{-0.11f, 0.31f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.34f, 0.89f}, {0.34f, 0.89f}, 0},\n            {{-0.11f, 0.31f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.0f, 0.89f}, {0.0f, 0.89f}, 0},\n            {{0.1f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {0.25f, 1.33f}, {0.25f, 1.33f}, 0},\n            {{0.1f, -0.02f, -0.2f}, {-1.0f, 0.02f, -0.0f}, {0.25f, 0.85f}, {0.25f, 0.85f}, 0},\n            {{0.1f, -0.02f, 0.2f}, {-1.0f, 0.02f, -0.0f}, {-0.08f, 0.85f}, {-0.08f, 0.85f}, 0},\n            {{0.42f, -0.16f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.42f, 0.18f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{0.42f, 0.18f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.59f, 1.0f}, {0.59f, 1.0f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {0.94f, -0.34f, -0.0f}, {0.0f, 1.0f}, {0.0f, 1.0f}, 0},\n            {{1.04f, 0.14f, 0.2f}, {0.94f, -0.34f, -0.0f}, {0.37f, 1.0f}, {0.37f, 1.0f}, 0},\n            {{-1.16f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.03f, 0.35f}, {-0.03f, 0.35f}, 0},\n            {{-1.16f, -0.25f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {1.03f, 0.35f}, {1.03f, 0.35f}, 0},\n            {{-1.16f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {1.03f, -0.07f}, {1.03f, -0.07f}, 0},\n            {{0.12f, 0.38f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.34f, 0.39f}, {0.34f, 0.39f}, 0},\n            {{-0.11f, 0.38f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.34f, 0.0f}, {0.34f, 0.0f}, 0},\n            {{-0.11f, 0.38f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{0.21f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 1.5f}, {0.25f, 1.5f}, 0},\n            {{0.1f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.25f, 1.33f}, {0.25f, 1.33f}, 0},\n            {{0.1f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.08f, 1.33f}, {-0.08f, 1.33f}, 0},\n            {{0.55f, 0.17f, -0.2f}, {-0.26f, -0.97f, -0.0f}, {0.0f, 0.2f}, {0.0f, 0.2f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {-0.68f, -0.73f, -0.0f}, {0.0f, 0.28f}, {0.0f, 0.28f}, 0},\n            {{0.6f, 0.15f, 0.2f}, {-0.68f, -0.73f, -0.0f}, {0.3f, 0.28f}, {0.3f, 0.28f}, 0},\n            {{1.04f, 0.14f, -0.2f}, {-0.94f, -0.35f, -0.0f}, {0.0f, 0.0f}, {0.0f, 0.0f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {-0.94f, -0.35f, -0.0f}, {0.0f, 0.37f}, {0.0f, 0.37f}, 0},\n            {{1.11f, -0.05f, 0.2f}, {-0.94f, -0.35f, -0.0f}, {0.37f, 0.37f}, {0.37f, 0.37f}, 0},\n            {{-1.05f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.25f, 0.35f}, {-0.25f, 0.35f}, 0},\n            {{-1.16f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.03f, 0.35f}, {-0.03f, 0.35f}, 0},\n            {{-1.16f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.03f, -0.07f}, {-0.03f, -0.07f}, 0},\n            {{-0.11f, 0.31f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.34f, 0.89f}, {0.34f, 0.89f}, 0},\n            {{0.12f, 0.31f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.34f, 0.5f}, {0.34f, 0.5f}, 0},\n            {{0.12f, 0.31f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{0.6f, 0.15f, -0.2f}, {-0.68f, -0.73f, -0.0f}, {0.0f, 0.28f}, {0.0f, 0.28f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {-0.95f, -0.32f, -0.0f}, {0.0f, 0.36f}, {0.0f, 0.36f}, 0},\n            {{0.63f, 0.1f, 0.2f}, {-0.95f, -0.32f, -0.0f}, {0.3f, 0.36f}, {0.3f, 0.36f}, 0},\n            {{0.12f, 0.31f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.34f, 0.5f}, {0.34f, 0.5f}, 0},\n            {{0.12f, 0.38f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.34f, 0.39f}, {0.34f, 0.39f}, 0},\n            {{0.12f, 0.38f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.0f, 0.39f}, {0.0f, 0.39f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {1.0f, -0.03f, -0.0f}, {0.23f, -0.09f}, {0.23f, -0.09f}, 0},\n            {{0.21f, 0.26f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.23f, -0.5f}, {0.23f, -0.5f}, 0},\n            {{0.21f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {-0.08f, -0.5f}, {-0.08f, -0.5f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {1.0f, 0.0f, -0.0f}, {0.58f, 0.37f}, {0.58f, 0.37f}, 0},\n            {{-1.05f, 0.26f, -0.2f}, {1.0f, 0.0f, -0.0f}, {1.0f, 0.37f}, {1.0f, 0.37f}, 0},\n            {{-1.05f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {1.0f, 0.0f}, {1.0f, 0.0f}, 0},\n            {{-0.64f, 0.26f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.1f, 0.52f}, {-0.1f, 0.52f}, 0},\n            {{-0.64f, -0.25f, -0.2f}, {-1.0f, 0.0f, -0.0f}, {-0.1f, 1.5f}, {-0.1f, 1.5f}, 0},\n            {{-0.64f, -0.25f, 0.2f}, {-1.0f, 0.0f, -0.0f}, {0.29f, 1.5f}, {0.29f, 1.5f}, 0},\n            {{0.2f, -0.14f, -0.2f}, {0.97f, -0.25f, -0.0f}, {0.23f, 0.12f}, {0.23f, 0.12f}, 0},\n            {{0.21f, -0.01f, -0.2f}, {1.0f, -0.03f, -0.0f}, {0.23f, -0.09f}, {0.23f, -0.09f}, 0},\n            {{0.21f, -0.01f, 0.2f}, {1.0f, -0.03f, -0.0f}, {-0.08f, -0.09f}, {-0.08f, -0.09f}, 0},\n            {{0.75f, 0.0f, -0.2f}, {1.0f, -0.0f, -0.0f}, {0.25f, 0.51f}, {0.25f, 0.51f}, 0},\n            {{0.73f, 0.12f, -0.2f}, {0.94f, 0.33f, -0.0f}, {0.25f, 0.3f}, {0.25f, 0.3f}, 0},\n            {{0.73f, 0.12f, 0.2f}, {0.94f, 0.33f, -0.0f}, {-0.08f, 0.3f}, {-0.08f, 0.3f}, 0},\n            {{-0.84f, 0.26f, -0.2f}, {-0.74f, 0.68f, -0.0f}, {0.0f, 0.37f}, {0.0f, 0.37f}, 0},\n            {{-1.05f, 0.04f, -0.2f}, {-0.74f, 0.68f, -0.0f}, {0.58f, 0.37f}, {0.58f, 0.37f}, 0},\n            {{-1.05f, 0.04f, 0.2f}, {-0.74f, 0.68f, -0.0f}, {0.58f, 0.0f}, {0.58f, 0.0f}, 0},\n            {{-0.2f, -0.01f, -0.2f}, {-1.0f, -0.04f, -0.0f}, {0.23f, 1.08f}, {0.23f, 1.08f}, 0},\n            {{-0.19f, -0.14f, -0.2f}, {-0.96f, -0.27f, -0.0f}, {0.23f, 0.88f}, {0.23f, 0.88f}, 0},\n            {{-0.19f, -0.14f, 0.2f}, {-0.96f, -0.27f, -0.0f}, {-0.08f, 0.88f}, {-0.08f, 0.88f}, 0},\n            {{0.63f, 0.1f, -0.2f}, {-0.95f, -0.32f, -0.0f}, {0.0f, 0.36f}, {0.0f, 0.36f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {-1.0f, -0.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{0.64f, 0.01f, 0.2f}, {-1.0f, -0.0f, -0.0f}, {0.3f, 0.5f}, {0.3f, 0.5f}, 0},\n            {{1.11f, -0.05f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.37f}, {0.0f, 0.37f}, 0},\n            {{0.97f, -0.05f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.0f, 0.63f}, {0.0f, 0.63f}, 0},\n            {{0.97f, -0.05f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.37f, 0.63f}, {0.37f, 0.63f}, 0},\n            {{-0.53f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.1f, 0.32f}, {-0.1f, 0.32f}, 0},\n            {{-0.64f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {-0.1f, 0.52f}, {-0.1f, 0.52f}, 0},\n            {{-0.64f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {0.29f, 0.52f}, {0.29f, 0.52f}, 0},\n            {{0.94f, -0.13f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.35f}, {0.0f, 0.35f}, 0},\n            {{1.14f, -0.13f, -0.2f}, {0.0f, -1.0f, -0.0f}, {0.0f, 0.65f}, {0.0f, 0.65f}, 0},\n            {{1.14f, -0.13f, 0.2f}, {0.0f, -1.0f, -0.0f}, {0.3f, 0.65f}, {0.3f, 0.65f}, 0},\n            {{-0.7f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.32f, -0.2f}, {0.32f, -0.2f}, 0},\n            {{-0.84f, 0.26f, -0.2f}, {0.0f, 1.0f, -0.0f}, {0.32f, -0.5f}, {0.32f, -0.5f}, 0},\n            {{-0.84f, 0.26f, 0.2f}, {0.0f, 1.0f, -0.0f}, {-0.11f, -0.5f}, {-0.11f, -0.5f}, 0},\n            {{-0.1f, -0.1f, -0.2f}, {0.95f, 0.3f, -0.0f}, {0.25f, 0.28f}, {0.25f, 0.28f}, 0},\n            {{-0.1f, -0.02f, -0.2f}, {1.0f, 0.02f, -0.0f}, {0.25f, 0.14f}, {0.25f, 0.14f}, 0},\n            {{-0.1f, -0.02f, 0.2f}, {1.0f, 0.02f, -0.0f}, {-0.08f, 0.14f}, {-0.08f, 0.14f}, 0},\n            {{0.64f, 0.01f, -0.2f}, {-1.0f, -0.0f, -0.0f}, {0.0f, 0.5f}, {0.0f, 0.5f}, 0},\n            {{0.63f, -0.09f, -0.2f}, {-0.95f, 0.3f, -0.0f}, {0.0f, 0.64f}, {0.0f, 0.64f}, 0},\n            {{0.63f, -0.09f, 0.2f}, {-0.95f, 0.3f, -0.0f}, {0.3f, 0.64f}, {0.3f, 0.64f}, 0},\n            {{-0.53f, -0.16f, -0.2f}, {1.0f, 0.0f, -0.0f}, {-0.1f, -0.5f}, {-0.1f, -0.5f}, 0},\n            {{-0.53f, 0.26f, -0.2f}, {1.0f, 0.0f, -0.0f}, {-0.1f, 0.32f}, {-0.1f, 0.32f}, 0},\n            {{-0.53f, 0.26f, 0.2f}, {1.0f, 0.0f, -0.0f}, {0.29f, 0.32f}, {0.29f, 0.32f}, 0},\n            {{0.1f, -0.02f, -0.2f}, {-1.0f, 0.02f, -0.0f}, {0.25f, 0.85f}, {0.25f, 0.85f}, 0},\n            {{0.1f, -0.11f, -0.2f}, {-0.96f, 0.29f, -0.0f}, {0.25f, 0.7f}, {0.25f, 0.7f}, 0},\n            {{0.1f, -0.11f, 0.2f}, {-0.96f, 0.29f, -0.0f}, {-0.08f, 0.7f}, {-0.08f, 0.7f}, 0}\n        }, \n        \n        .indices = {\n            {{0, 1, 2}},\n            {{3, 4, 5}},\n            {{6, 7, 8}},\n            {{9, 10, 11}},\n            {{12, 13, 14}},\n            {{15, 16, 17}},\n            {{18, 19, 20}},\n            {{21, 22, 23}},\n            {{24, 25, 26}},\n            {{27, 28, 29}},\n            {{30, 31, 32}},\n            {{33, 34, 35}},\n            {{36, 37, 38}},\n            {{39, 40, 41}},\n            {{42, 43, 44}},\n            {{45, 46, 47}},\n            {{48, 49, 50}},\n            {{51, 52, 53}},\n            {{54, 55, 56}},\n            {{57, 58, 59}},\n            {{60, 61, 62}},\n            {{63, 64, 65}},\n            {{66, 67, 68}},\n            {{69, 70, 71}},\n            {{72, 73, 74}},\n            {{75, 76, 77}},\n            {{78, 79, 80}},\n            {{81, 82, 83}},\n            {{84, 85, 86}},\n            {{87, 88, 89}},\n            {{90, 91, 92}},\n            {{93, 94, 95}},\n            {{96, 97, 98}},\n            {{99, 100, 101}},\n            {{102, 103, 104}},\n            {{105, 106, 107}},\n            {{108, 109, 110}},\n            {{111, 112, 113}},\n            {{114, 115, 116}},\n            {{117, 118, 119}},\n            {{120, 121, 122}},\n            {{123, 124, 125}},\n            {{126, 127, 128}},\n            {{129, 130, 131}},\n            {{132, 133, 134}},\n            {{135, 136, 137}},\n            {{138, 139, 140}},\n            {{141, 142, 143}},\n            {{144, 145, 146}},\n            {{147, 148, 149}},\n            {{150, 151, 152}},\n            {{153, 154, 155}},\n            {{156, 157, 158}},\n            {{159, 160, 161}},\n            {{162, 163, 164}},\n            {{165, 166, 167}},\n            {{168, 169, 170}},\n            {{171, 172, 173}},\n            {{174, 175, 176}},\n            {{177, 178, 179}},\n            {{180, 181, 182}},\n            {{183, 184, 185}},\n            {{186, 187, 188}},\n            {{189, 190, 191}},\n            {{192, 193, 194}},\n            {{195, 196, 197}},\n            {{198, 199, 200}},\n            {{201, 202, 203}},\n            {{204, 205, 206}},\n            {{207, 208, 209}},\n            {{210, 211, 212}},\n            {{213, 214, 215}},\n            {{216, 217, 218}},\n            {{219, 220, 221}},\n            {{222, 223, 224}},\n            {{225, 226, 227}},\n            {{228, 229, 230}},\n            {{231, 232, 233}},\n            {{234, 235, 236}},\n            {{237, 238, 239}},\n            {{240, 241, 242}},\n            {{243, 244, 245}},\n            {{246, 247, 248}},\n            {{249, 250, 251}},\n            {{252, 253, 254}},\n            {{255, 256, 257}},\n            {{258, 259, 260}},\n            {{261, 262, 263}},\n            {{264, 265, 266}},\n            {{267, 268, 269}},\n            {{270, 271, 272}},\n            {{273, 274, 275}},\n            {{276, 277, 278}},\n            {{279, 280, 281}},\n            {{282, 283, 284}},\n            {{285, 286, 287}},\n            {{288, 289, 290}},\n            {{291, 292, 293}},\n            {{294, 295, 296}},\n            {{297, 298, 299}},\n            {{300, 301, 302}},\n            {{303, 304, 305}},\n            {{306, 307, 308}},\n            {{309, 310, 311}},\n            {{312, 313, 314}},\n            {{315, 316, 317}},\n            {{318, 319, 320}},\n            {{321, 322, 323}},\n            {{324, 325, 326}},\n            {{327, 328, 329}},\n            {{330, 331, 332}},\n            {{333, 334, 335}},\n            {{336, 337, 338}},\n            {{339, 340, 341}},\n            {{342, 343, 344}},\n            {{345, 346, 347}},\n            {{348, 349, 350}},\n            {{351, 352, 353}},\n            {{354, 355, 356}},\n            {{357, 358, 359}},\n            {{360, 361, 362}},\n            {{363, 364, 365}},\n            {{366, 367, 368}},\n            {{369, 370, 371}},\n            {{372, 373, 374}},\n            {{375, 376, 377}},\n            {{378, 379, 380}},\n            {{381, 382, 383}},\n            {{384, 385, 386}},\n            {{387, 388, 389}},\n            {{390, 391, 392}},\n            {{393, 394, 395}},\n            {{396, 397, 398}},\n            {{399, 400, 401}},\n            {{402, 403, 404}},\n            {{405, 406, 407}},\n            {{408, 409, 410}},\n            {{411, 412, 413}},\n            {{414, 415, 416}},\n            {{417, 418, 419}},\n            {{420, 421, 422}},\n            {{423, 424, 425}},\n            {{426, 427, 428}},\n            {{429, 430, 431}},\n            {{432, 433, 434}},\n            {{435, 436, 437}},\n            {{438, 439, 440}},\n            {{441, 442, 443}},\n            {{444, 445, 446}},\n            {{447, 448, 449}},\n            {{450, 451, 452}},\n            {{453, 454, 455}},\n            {{456, 457, 458}},\n            {{459, 460, 461}},\n            {{462, 463, 464}},\n            {{465, 466, 467}},\n            {{468, 469, 470}},\n            {{471, 472, 473}},\n            {{474, 475, 476}},\n            {{477, 478, 479}},\n            {{480, 481, 482}},\n            {{483, 484, 485}},\n            {{486, 487, 488}},\n            {{489, 490, 491}},\n            {{492, 493, 494}},\n            {{495, 496, 497}},\n            {{498, 499, 500}},\n            {{501, 502, 503}},\n            {{504, 505, 506}},\n            {{507, 508, 509}},\n            {{510, 511, 512}},\n            {{513, 514, 515}},\n            {{516, 517, 518}},\n            {{519, 520, 521}},\n            {{522, 523, 524}},\n            {{525, 526, 527}},\n            {{528, 529, 530}},\n            {{531, 532, 533}},\n            {{534, 535, 536}},\n            {{537, 538, 539}},\n            {{540, 541, 542}},\n            {{543, 544, 545}},\n            {{546, 547, 548}},\n            {{549, 550, 551}},\n            {{552, 553, 554}},\n            {{555, 556, 557}},\n            {{558, 559, 560}},\n            {{561, 562, 563}},\n            {{564, 565, 566}},\n            {{567, 568, 569}},\n            {{570, 571, 572}},\n            {{573, 574, 575}},\n            {{576, 577, 578}},\n            {{579, 580, 581}},\n            {{582, 583, 584}},\n            {{585, 586, 587}},\n            {{588, 589, 590}},\n            {{591, 592, 593}},\n            {{594, 595, 596}},\n            {{597, 598, 599}},\n            {{600, 601, 602}},\n            {{603, 604, 605}},\n            {{606, 607, 608}},\n            {{609, 610, 611}},\n            {{612, 613, 614}},\n            {{615, 616, 617}},\n            {{618, 619, 620}},\n            {{621, 622, 623}},\n            {{624, 625, 626}},\n            {{627, 628, 629}},\n            {{630, 631, 632}},\n            {{633, 634, 635}},\n            {{636, 637, 638}},\n            {{639, 640, 641}},\n            {{642, 643, 644}},\n            {{645, 646, 647}},\n            {{648, 649, 650}},\n            {{651, 652, 653}},\n            {{654, 655, 656}},\n            {{657, 658, 659}},\n            {{660, 661, 662}},\n            {{663, 664, 665}},\n            {{666, 667, 668}},\n            {{669, 670, 671}},\n            {{672, 673, 674}},\n            {{675, 676, 677}},\n            {{678, 679, 680}},\n            {{681, 682, 683}},\n            {{684, 685, 686}},\n            {{687, 688, 689}},\n            {{690, 691, 692}},\n            {{693, 694, 695}},\n            {{696, 697, 698}},\n            {{699, 700, 701}},\n            {{702, 703, 704}},\n            {{705, 706, 707}},\n            {{708, 709, 710}},\n            {{711, 712, 713}},\n            {{714, 715, 716}},\n            {{717, 718, 719}},\n            {{720, 721, 722}},\n            {{723, 724, 725}},\n            {{726, 727, 728}},\n            {{729, 730, 731}},\n            {{732, 733, 734}},\n            {{735, 736, 737}},\n            {{738, 739, 740}},\n            {{741, 742, 743}},\n            {{744, 745, 746}},\n            {{747, 748, 749}},\n            {{750, 751, 752}},\n            {{753, 754, 755}},\n            {{756, 757, 758}},\n            {{759, 760, 761}},\n            {{762, 763, 764}},\n            {{765, 766, 767}},\n            {{768, 769, 770}},\n            {{771, 772, 773}},\n            {{774, 775, 776}},\n            {{777, 778, 779}},\n            {{780, 781, 782}},\n            {{783, 784, 785}},\n            {{786, 787, 788}},\n            {{789, 790, 791}},\n            {{792, 793, 794}},\n            {{795, 796, 797}},\n            {{798, 799, 800}},\n            {{801, 802, 803}},\n            {{804, 805, 806}},\n            {{807, 808, 809}},\n            {{810, 811, 812}},\n            {{813, 814, 815}},\n            {{816, 817, 818}},\n            {{819, 820, 821}},\n            {{822, 823, 824}},\n            {{825, 826, 827}},\n            {{828, 829, 830}},\n            {{831, 832, 833}},\n            {{834, 835, 836}},\n            {{837, 838, 839}},\n            {{840, 841, 842}},\n            {{843, 844, 845}},\n            {{846, 847, 848}},\n            {{849, 850, 851}},\n            {{852, 853, 854}},\n            {{855, 856, 857}},\n            {{858, 859, 860}},\n            {{861, 862, 863}},\n            {{864, 865, 866}},\n            {{867, 868, 869}},\n            {{870, 871, 872}},\n            {{873, 874, 875}},\n            {{876, 877, 878}},\n            {{879, 880, 881}},\n            {{882, 883, 884}},\n            {{885, 886, 887}},\n            {{888, 889, 890}},\n            {{891, 892, 893}},\n            {{894, 895, 896}},\n            {{897, 898, 899}},\n            {{900, 901, 902}},\n            {{903, 904, 905}},\n            {{906, 907, 908}},\n            {{909, 910, 911}},\n            {{912, 913, 914}},\n            {{915, 916, 917}},\n            {{918, 919, 920}},\n            {{921, 922, 923}},\n            {{924, 925, 926}},\n            {{927, 928, 929}},\n            {{930, 931, 932}},\n            {{933, 934, 935}},\n            {{936, 937, 938}},\n            {{939, 940, 941}},\n            {{942, 943, 944}},\n            {{945, 946, 947}},\n            {{948, 949, 950}},\n            {{951, 952, 953}},\n            {{954, 955, 956}},\n            {{957, 958, 959}},\n            {{960, 961, 962}},\n            {{963, 964, 965}},\n            {{966, 967, 968}},\n            {{969, 970, 971}}\n        }\n        \n    };\n}\n\n}"
  },
  {
    "path": "src/render/error.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_ERROR_H\n#define TRAM_SDK_RENDER_ERROR_H\n\n#include <render/vertices.h>\n\nnamespace tram::Render {\n\nuint8_t* MakeNewErrorTexture(vec3 color, vec3 color2);\n\nStaticModelData* MakeNewErrorModel();\n    \n}\n\n#endif // TRAM_SDK_RENDER_ERROR_H"
  },
  {
    "path": "src/render/light.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/light.h>\n\n#include <render/material.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n\n\n\n\n\n#include <render/render.h>\n\n/**\n * @class tram::Render::LightGraph render/light.h <render/light.h>\n * \n * LightGraph resource.\n */\n\nusing namespace tram;\nusing namespace tram::Render;\n\nstatic Hashmap<LightGraph*> lightgraph_list(\"LightGraph name list\", RESOURCE_LIMIT_LIGHT_GRAPH);\n\ntemplate <> Pool<Render::LightGraph> PoolProxy<Render::LightGraph>::pool(\"LightGraph pool\", RESOURCE_LIMIT_LIGHT_GRAPH);\n\n// TODO: add an octree here with all of the nodes!!\n\nbool LightGraph::ContainsEntity(id_t entity) {\n    for (auto& graph : PoolProxy<Render::LightGraph>::GetPool()) {\n        for (auto graph_entity : graph.entities) {\n            if (graph_entity == entity) return true;\n        }\n    }\n    return false;\n}\n\nstd::vector<std::pair<uint32_t, vec3>> LightGraph::GetEnvironmentProbes() {\n    std::vector<std::pair<uint32_t, vec3>> probes;\n    for (uint32_t i = 0; i < nodes.size(); i++) if (nodes[i].has_reflection) probes.push_back({i, nodes[i].position});\n    return probes;\n}\n\nMaterial* LightGraph::LookupEnvironmentMap(vec3 position) {\n    Material* nearest = nullptr;\n    float nearest_dist = INFINITY;\n    for (auto& graph : PoolProxy<Render::LightGraph>::GetPool()) {\n        for (auto& node : graph.nodes) {\n            \n            if (!node.environment_map) continue;\n            \n            if (float this_dist = glm::distance(position, node.position); this_dist < nearest_dist) {\n                nearest = node.environment_map;\n                nearest_dist = this_dist;\n            } \n            \n        }\n    }\n    \n    return nearest;\n}\n\nSphericalHarmonic LightGraph::LookupHarmonic(vec3 position, uint32_t layers) {\n    uint32_t nearest = 0;\n    LightGraph* nearest_parent = nullptr;\n    float nearest_dist = INFINITY;\n    \n    for (auto& graph : PoolProxy<Render::LightGraph>::GetPool()) {\n        for (uint32_t node =0; node < graph.nodes.size(); node++) {\n            if (!graph.nodes[node].has_light || !graph.nodes[node].constants.size()) continue;\n            \n            const float dist = glm::distance(position, graph.nodes[node].position);\n            if (dist < nearest_dist) {\n                nearest_dist = dist;\n                nearest = node;\n                nearest_parent = &graph;\n            }\n            \n            //vec3 cco = graph.nodes[node].constants[0].l00;\n            //vec3 cco = COLOR_WHITE;\n            /*Render::AddText(graph.nodes[node].position, (std::to_string(graph.nodes[node].constants[0].l00.x) + \"\\n\"\n                                                       + std::to_string(graph.nodes[node].constants[0].l00.y) + \"\\n\"\n                                                       + std::to_string(graph.nodes[node].constants[0].l00.z)).c_str(), cco);*/\n        }\n    }\n    \n    SphericalHarmonic harmonic = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};\n    std::vector<std::pair<Node*, float>> connected;\n    \n    if (!nearest_parent) return harmonic;\n    \n    connected.push_back({&nearest_parent->nodes[nearest], 0.0f});\n    //Render::AddLineMarker(nearest_parent->nodes[nearest].position, Render::COLOR_CYAN);\n    \n    //return nearest_parent->nodes[nearest].constants[0];\n    \n    for (auto& edge : nearest_parent->edges) {\n        if (edge.first == nearest) {\n            connected.push_back({&nearest_parent->nodes[edge.second], 0.0f});\n        } else if (edge.second == nearest) {\n            connected.push_back({&nearest_parent->nodes[edge.first], 0.0f});\n        }\n    }\n    \n    float total_distance = 0.0f;\n    \n    for (auto& pair : connected) {\n        const float dist = 1.0f / glm::distance(pair.first->position, position);\n        pair.second = dist;\n        total_distance += dist;\n        \n        //Render::AddLine(nearest_parent->nodes[nearest].position, pair.first->position, Render::COLOR_GREEN);\n    }\n    \n    for (auto& pair : connected) {\n        // TODO: implement layer interpolation!!\n        \n        \n        \n        SphericalHarmonic& this_harmonic = pair.first->constants[0];\n        \n        const float weight = pair.second / total_distance;\n        \n        //Render::AddText(pair.first->position + vec3(0, 1, 0), (std::to_string(weight).c_str()));\n        \n        harmonic.l00 += weight * this_harmonic.l00;\n        \n        harmonic.l1m1 += weight * this_harmonic.l1m1;\n        harmonic.l10 += weight * this_harmonic.l10;\n        harmonic.l11 += weight * this_harmonic.l11;\n        \n        harmonic.l2m2 += weight * this_harmonic.l2m2;\n        harmonic.l2m1 += weight * this_harmonic.l2m1;\n        harmonic.l20 += weight * this_harmonic.l20;\n        harmonic.l21 += weight * this_harmonic.l21;\n        harmonic.l22 += weight * this_harmonic.l22;\n    }\n    \n    return harmonic;\n}\n\nLightGraph* LightGraph::Find(name_t name) {\n    auto graph = lightgraph_list.Find(name);\n    \n    if (!graph) {\n        graph = PoolProxy<LightGraph>::New(name);\n        lightgraph_list.Insert(name, graph);\n    }\n\n    return graph;\n}\n\nvoid LightGraph::LoadFromDisk() {\n    std::string filename = std::string(\"data/worldcells/\") + std::string(name) + \".light\";\n    \n    File file (filename.c_str(), File::READ);\n    \n    if (!file.is_open()) {\n        Log(\"Light graph not found: {}\", filename);\n        return;\n    }\n    \n    name_t header = file.read_name();\n    \n    if (header != \"LIGHTGRAPHv1\") {\n        Log(\"Light unrecognized header '{}' in file: {}\", header, filename);\n        return;\n    }\n    \n    while (file.is_continue()) {\n        name_t record_type = file.read_name();\n        \n        if (record_type == \"node\") {\n            Node new_node;\n            \n            new_node.position = {file.read_float32(),\n                                 file.read_float32(),\n                                 file.read_float32()};\n            \n            new_node.has_light = file.read_uint32();\n            new_node.has_reflection = file.read_uint32();\n            \n            nodes.push_back(new_node);\n            \n        } else if (record_type == \"edge\") {\n            const uint32_t from_node_index = file.read_uint32();\n            const uint32_t to_node_index = file.read_uint32();\n            \n            edges.push_back({from_node_index, to_node_index});\n            \n        } else if (record_type == \"light\") {\n            uint32_t index = file.read_uint32();\n            uint32_t layer = file.read_uint32();\n            name_t channel = file.read_name();\n            \n            nodes[index].constants.resize(layer + 1);\n            \n            auto& c = nodes[index].constants[layer];\n            \n            if (channel == \"r\") {\n                c.l00.x = file.read_float32();\n\n                c.l1m1.x = file.read_float32();\n                c.l10.x = file.read_float32();\n                c.l11.x = file.read_float32();\n\n                c.l2m2.x = file.read_float32();\n                c.l2m1.x = file.read_float32();\n                c.l20.x = file.read_float32();\n                c.l21.x = file.read_float32();\n                c.l22.x = file.read_float32();\n            } else if (channel == \"g\") {\n                c.l00.y = file.read_float32();\n\n                c.l1m1.y = file.read_float32();\n                c.l10.y = file.read_float32();\n                c.l11.y = file.read_float32();\n\n                c.l2m2.y = file.read_float32();\n                c.l2m1.y = file.read_float32();\n                c.l20.y = file.read_float32();\n                c.l21.y = file.read_float32();\n                c.l22.y = file.read_float32();\n            } else if (channel == \"b\") {\n                c.l00.z = file.read_float32();\n\n                c.l1m1.z = file.read_float32();\n                c.l10.z = file.read_float32();\n                c.l11.z = file.read_float32();\n\n                c.l2m2.z = file.read_float32();\n                c.l2m1.z = file.read_float32();\n                c.l20.z = file.read_float32();\n                c.l21.z = file.read_float32();\n                c.l22.z = file.read_float32();\n            }\n        } else if (record_type == \"entity\") {\n            entities.push_back(file.read_uint32());\n        } else {\n            std::cout << \"unknown light graph record: \" << record_type << std::endl;\n        }\n    }\n    \n    for (uint32_t i = 0; i < nodes.size(); i++) {\n        if (!nodes[i].has_reflection) continue;\n        \n        auto material_name = std::string(\"environment/\") + (const char*)GetName() + \".\" + std::to_string(i);\n        nodes[i].environment_map = Render::Material::Make(material_name, MATERIAL_ENVIRONMENTMAP);\n        nodes[i].environment_map->AddReference();\n        nodes[i].environment_map->Load();\n    }\n    \n    status = READY;\n}\n\n"
  },
  {
    "path": "src/render/light.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_LIGHT_H\n#define TRAM_SDK_RENDER_LIGHT_H\n\n#include <render/render.h>\n#include <framework/resource.h>\n\n#include <vector>\n\nnamespace tram::Render {\n    \nclass Material;\n    \nclass LightGraph : public Resource {\npublic:\n    LightGraph(name_t name) : Resource(name) {}\n\n    void LoadFromDisk();\n    void LoadFromMemory() {}\n    \n    void Unload() {}\n    \n    std::vector<std::pair<uint32_t, vec3>> GetEnvironmentProbes();\n    \n    static bool ContainsEntity(id_t entity);\n    static SphericalHarmonic LookupHarmonic(vec3 position, uint32_t layers);\n    static Material* LookupEnvironmentMap(vec3 position);\n    static LightGraph* Find(name_t name);\nprotected:\n    struct Node {\n        vec3 position;\n        bool has_light = false;\n        bool has_reflection = false;\n        Material* environment_map = nullptr;\n        std::vector<SphericalHarmonic> constants;\n    };\n    \n    std::vector<id_t> entities;\n    std::vector<Node> nodes;\n    std::vector<std::pair<uint32_t, uint32_t>> edges;\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_LIGHT_H"
  },
  {
    "path": "src/render/material.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n// turning off an annoying warning in the library code\n#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wsign-compare\"\n\n#define STB_IMAGE_IMPLEMENTATION\n#define STBI_ONLY_PNG\n#include <stb_image.h>\n\n#pragma GCC diagnostic pop\n\n#include <framework/core.h>\n#include <framework/stats.h>\n\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <render/material.h>\n#include <render/api.h>\n#include <render/error.h>\n\n#include <platform/file.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <fstream>\n\n/**\n * @class tram::Render::Material render/material.h <render/material.h>\n * \n * Material resource.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/render/material.html\n */\n\nusing namespace tram;\n\ntemplate <> Pool<Render::Material> PoolProxy<Render::Material>::pool(\"Material pool\", RESOURCE_LIMIT_MATERIAL);\n\nnamespace tram::Render {\n\nstatic Hashmap<Material*> material_list(\"Material name list\", RESOURCE_LIMIT_MATERIAL);\n\n/// Loads a Material definition file.\nvoid Material::LoadMaterialInfo(const char* filename) {\n    using namespace tram::Render;\n    \n    char path [100] = \"data/\";\n    strcat (path, filename);\n    strcat (path, \".list\");\n\n    File file (path, File::READ);\n    \n    if (!file.is_open()) {\n        std::cout << \"Can't open texture info file '\" << path << \"'\" << std::endl;\n        return;\n    }\n    \n    name_t file_type = file.read_name();\n    \n    if (file_type != \"MATv7\") {\n        std::cout << \"Invalid material file type \" << path << std::endl;\n        abort();\n    }\n    \n    while (file.is_continue()) {\n        materialtype_t mat_type;\n        MaterialFilter mat_filter;\n        MaterialProperty mat_property;\n        TextureType mat_tex_type;\n\n        name_t mat_name = file.read_name();\n        name_t mat_type_name = file.read_name();\n        name_t mat_filter_name = file.read_name();\n        name_t mat_property_name = file.read_name();\n        vec3 mat_color = {file.read_float32(), file.read_float32(), file.read_float32()};\n        float mat_spec_weight = file.read_float32();\n        float mat_spec_exponent = file.read_float32();\n        float mat_spec_transparency = file.read_float32();\n        float mat_reflectivity = file.read_float32();\n        name_t mat_tex_type_name = file.read_name();\n        Material* mat_source = nullptr;\n\n        if(mat_type_name == UID(\"flat\")){\n            mat_type = MATERIAL_TEXTURE;\n        } else if(mat_type_name == UID(\"alpha\")){\n            mat_type = MATERIAL_TEXTURE_ALPHA;\n        } else if(mat_type_name == UID(\"blend\")){\n            mat_type = MATERIAL_TEXTURE_BLEND;\n        } else if(mat_type_name == UID(\"lightmap\")){\n            mat_type = MATERIAL_LIGHTMAP;\n        } else if(mat_type_name == UID(\"msdf\")){\n            mat_type = MATERIAL_MSDF;\n        } else if(mat_type_name == UID(\"glyph\")){\n            mat_type = MATERIAL_GLYPH;\n        } else if(mat_type_name == UID(\"water\")){\n            mat_type = MATERIAL_WATER;\n        } else {\n            mat_type = FindMaterialType(mat_type_name);\n            \n            if (mat_type == (materialtype_t)-1) {\n                std::cout << \"Error material list material: \" << mat_name << std::endl;\n                continue;\n            }\n        }\n        \n        if (mat_filter_name == \"linear\") {\n            mat_filter = FILTER_LINEAR;\n        } else {\n            mat_filter = FILTER_NEAREST;\n        }\n        \n        if (mat_property_name == \"metal\") {\n            mat_property = PROPERTY_METAL;\n        } else if (mat_property_name == \"metal-thin\") {\n            mat_property = PROPERTY_METAL_THIN;\n        } else if (mat_property_name == \"slime\") {\n            mat_property = PROPERTY_SLIME;\n        } else if (mat_property_name == \"tile\") {\n            mat_property = PROPERTY_TILE;\n        } else if (mat_property_name == \"grate\") {\n            mat_property = PROPERTY_GRATE;\n        } else if (mat_property_name == \"wood\") {\n            mat_property = PROPERTY_WOOD;\n        } else if (mat_property_name == \"computer\") {\n            mat_property = PROPERTY_COMPUTER;\n        } else if (mat_property_name == \"glass\") {\n            mat_property = PROPERTY_GLASS;\n        } else if (mat_property_name == \"snow\") {\n            mat_property = PROPERTY_SNOW;\n        } else if (mat_property_name == \"grass\") {\n            mat_property = PROPERTY_GRASS;\n        } else if (mat_property_name == \"concrete\") {\n            mat_property = PROPERTY_CONCRETE;\n        } else if (mat_property_name == \"flesh\") {\n            mat_property = PROPERTY_FLESH;\n        } else {\n            mat_property = PROPERTY_METAL;\n        }\n\n        if (mat_tex_type_name == \"none\") {\n            mat_tex_type = TEXTURE_NONE;\n        } else if (mat_tex_type_name == \"same\") {\n            mat_tex_type = TEXTURE_SAME;\n        } else if (mat_tex_type_name == \"normal\") {\n            mat_tex_type = TEXTURE_SAME_NORMAL;\n        } else {\n            mat_tex_type = TEXTURE_SOURCE;\n            mat_source = Material::Find(mat_tex_type_name);\n        }\n\n        Material* material = material_list.Find(mat_name);\n    \n        if (!material) {\n            material = PoolProxy<Material>::GetPool().allocate();\n            new(material) Material(mat_name);\n            material_list.Insert(UID(mat_name), material);\n        }\n\n        material->SetMaterialType(mat_type);\n        material->SetMaterialFilter(mat_filter);\n        material->SetMaterialProperty(mat_property);\n        material->SetColor(mat_color);\n        material->SetSpecular(mat_spec_weight, mat_spec_exponent, mat_spec_transparency);\n        material->SetReflectivity(mat_reflectivity);\n        material->SetTextureType(mat_tex_type);\n        material->SetSource(mat_source);\n    }\n}\n\nMaterial::Material(name_t name, materialtype_t type) : Resource(name), type(type) {\n    if (type == MATERIAL_LIGHTMAP || type == MATERIAL_ENVIRONMENTMAP) {\n        filter = FILTER_LINEAR;\n    }\n}\n\n/// Creates a material.\n/// If a Material already exists with that name, then the existing Material is returned.\n/// @return Always returns a pointer to a Material.\nMaterial* Material::Make(name_t name, materialtype_t type) {\n    Material* material = material_list.Find(name);\n    \n    if (!material) {\n        material = PoolProxy<Material>::GetPool().allocate();\n        new(material) Material(name, type);\n        material_list.Insert(UID(name), material);\n    }\n    \n    return material;\n}\n\n/// Finds a Material.\n/// Finds a Material by its associated name. If Material with that names does not\n/// exist, then it is created (with the TEXTURE_LIGHTMAP type). In addition, for\n/// a Material to be found, it must have been created with the LoadMaterialInfo(),\n/// Make() or Find() methods.\n/// @return Always returns a pointer to a Material.\nMaterial* Material::Find(name_t name){\n    // APPARENTLY:\n    // \"something goes fucky-wucky and this thing doesn't work if you don't LoadFromDisk()\"\n    // TODO: check if it still happens\n    Material* material = material_list.Find(name);\n    \n    if (!material) {\n        material = PoolProxy<Material>::GetPool().allocate();\n        new(material) Material(name);\n        material_list.Insert(name, material);\n    }\n    \n    return material;\n}\n\n/// Makes Material a pattern.\n/// This method does the same thing as LoadFromDisk(), but instead of loading\n/// the texture from disk, it will generate a 64x64 pixel checkerboard\n/// pattern, like the one used for errored materials.\nvoid Material::MakePattern(vec3 color1, vec3 color2) {\n    assert(status == UNLOADED);\n    \n    width = 64;\n    height = 64;\n    channels = 3;\n\n    texture_data = MakeNewErrorTexture(color1, color2);\n\n    status = LOADED;\n}\n\nvoid Material::SetSource(Material* source) {\n    this->source = source;\n    \n    while (source) {\n        if (this != source) {\n            source = source->source;\n            continue;\n        }\n        \n        this->source = nullptr;\n        this->texture_type = TEXTURE_NONE;\n        \n        Log(Severity::ERROR, System::RENDER, \"Detected cycle when assigning source material to {}!\", this->name);\n        return;\n    }\n}\n\nstatic ColorMode ChannelsToColorMode(int channels) {\n    switch (channels) {\n        case 0: assert(false);\n        case 1: return COLORMODE_R;\n        case 2: return COLORMODE_RG;\n        case 3: return COLORMODE_RGB;\n        case 4: return COLORMODE_RGBA;\n        default: assert(false);\n    }\n    abort();\n}\n\nvoid Material::SetTextureImage(uint8_t* data, uint8_t channels, uint16_t width, uint16_t height) {\n    if (status == READY) {\n        this->width = width;\n        this->height = height;\n        this->channels = channels;\n        \n        API::SetTextureImage(texture, ChannelsToColorMode(channels), width, height, data);\n        \n        return;\n    }\n    \n    if (status == LOADED) {\n        delete[] this->texture_data;\n    }\n    \n    size_t buffer_size = width * height * channels;\n    \n    this->width = width;\n    this->height = height;\n    this->channels = channels;\n    this->texture_data = new uint8_t[buffer_size];\n    \n    mempcpy(this->texture_data, data, buffer_size);\n    \n    status = LOADED;\n}\n\nvoid Material::FlushToAPI() {\n    if (status != READY) return;\n    \n    API::SetMaterialColor(material, vec4(color, 1.0f));\n    API::SetMaterialSpecularWeight(material, specular_weight);\n    API::SetMaterialSpecularExponent(material, specular_exponent);\n    API::SetMaterialSpecularTransparency(material, specular_transparency);\n    API::SetMaterialReflectivity(material, reflectivity);\n    \n    API::SetTextureFilter(texture, filter == FILTER_NEAREST ? TEXTUREFILTER_NEAREST : TEXTUREFILTER_LINEAR);\n}\n\nvoid Material::LoadFromDisk() {\n    assert(status == UNLOADED);\n\n    if (texture_type == TEXTURE_NONE) {\n        MakePattern({1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f});\n        status = LOADED;\n        return;\n    } else if (texture_type == TEXTURE_SOURCE) {\n        source->AddReference();\n        Async::LoadDependency(source);\n        status = LOADED;\n        return;\n    }\n\n    int loadwidth, loadheight, loadchannels;\n    unsigned char* loadtexture = nullptr;\n    char path[100] = \"data/textures/\";\n\n    switch (type) {\n        case MATERIAL_LIGHTMAP:\n            //filter = FILTER_LINEAR;\n            channels = 3;\n            break;\n        case MATERIAL_TEXTURE_ALPHA:\n        case MATERIAL_TEXTURE_BLEND:\n            channels = 4;\n            break;\n        case MATERIAL_MSDF:\n            filter = FILTER_LINEAR;\n            channels = 4;\n            break;\n        case MATERIAL_GLYPH:\n            filter = FILTER_NEAREST;\n            channels = 4;\n            break;\n        default:\n            channels = 3;\n    }\n\n    strcat(path, name);\n    strcat(path, \".png\");\n\n    FileReader* file = FileReader::GetReader(path);\n        \n    if (file->GetStatus() == FileStatus::READY) {\n       stbi_set_flip_vertically_on_load(true);\n       loadtexture = stbi_load_from_memory((const unsigned char*)file->GetContents(), file->GetSize(), &loadwidth, &loadheight, &loadchannels, channels);\n    }\n\n    if (loadchannels < channels) {\n        std::cout << \"Texture \" << path << \" should have \" << (int)channels << \" channels, but it has \" << (int)loadchannels << \"!\" << std::endl;\n    }\n\n    if (loadtexture) {\n        width = loadwidth;\n        height = loadheight;\n        texture_data = new uint8_t[width * height * channels];\n\n        for (size_t i = 0; i < width * height * channels; i++) {\n            texture_data[i] = loadtexture[i]; // what the fuck\n        }\n\n        status = LOADED;\n\n        stbi_image_free(loadtexture);\n\n    } else {\n        std::cout << \"Texture \" << name << \" (\" << path << \") couldn't be loaded!\" << std::endl;\n\n        MakePattern({0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 1.0f});\n        \n        load_fail = true;\n    }\n\n\n    if (texture_type == TEXTURE_SAME_NORMAL) {\n        strcpy(path, \"data/textures/\");\n        strcat(path, name);\n        strcat(path, \".normal.png\");\n        \n        loadtexture = stbi_load(path, &loadwidth, &loadheight, &loadchannels, 3);\n        \n        if (loadchannels != 3) {\n            std::cout << \"Texture \" << path << \" should have 3 channels, but it has \" << (int)loadchannels << \"!\" << std::endl;\n        }\n        \n        if (loadtexture) {\n            normal_map_width = loadwidth;\n            normal_map_height = loadheight;\n            normal_map_data = new uint8_t[normal_map_width * normal_map_height * channels];\n\n            for (size_t i = 0; i < normal_map_width * normal_map_height * 3; i++) {\n                normal_map_data[i] = loadtexture[i];\n            }\n            \n            stbi_image_free(loadtexture);\n        } else {            \n            normal_map_width = 64;\n            normal_map_height = 64;\n\n            normal_map_data = MakeNewErrorTexture(glm::normalize(vec3(0.25f, 0.75f, 1.0f)), glm::normalize(vec3(0.75f, 0.25f, 1.0f)));\n\n            std::cout << \"Normal map \" << name << \" (\" << path << \") couldn't be loaded!\" << std::endl;\n        }\n    }\n\n}\n\n/// Pushes material textures to GPU.\n/// Except if software rendering is used, in which case the texures will merely\n/// be copied and converted.\nvoid Material::LoadFromMemory() {\n    assert(status == LOADED);\n\n    // TODO: add a check that this is being called from render thread\n\n    material = API::MakeMaterial();\n    FlushToAPI();\n\n    if (texture_type == TEXTURE_SOURCE) {\n        texture = source->texture;\n        API::SetMaterialTexture(material, texture);\n        status = READY;\n        return;\n    }\n    \n    texture = API::CreateTexture(ChannelsToColorMode(channels), filter == FILTER_NEAREST ? TEXTUREFILTER_NEAREST : TEXTUREFILTER_LINEAR, width, height, texture_data);\n    \n    if (texture_type == TEXTURE_SAME_NORMAL) {\n        normal_map = API::CreateTexture(COLORMODE_RGB, filter == FILTER_NEAREST ? TEXTUREFILTER_NEAREST : TEXTUREFILTER_LINEAR, normal_map_width, normal_map_height, normal_map_data);\n    }\n    \n    API::SetMaterialTexture(material, texture);\n    \n    if (texture_type == TEXTURE_SAME_NORMAL) {\n        API::SetMaterialNormalMap(material, normal_map);\n    }\n    \n    float approx_memory = width * height * channels;  // image size\n    if (texture_type == TEXTURE_SAME_NORMAL) {\n        approx_memory += normal_map_width * normal_map_height * 3;\n    }\n    approx_memory = approx_memory * 1.3f;             // plus mipmaps\n    \n    approx_vram_usage = (size_t) approx_memory;\n    \n    Stats::Add(Stats::RESOURCE_VRAM, approx_vram_usage);\n\n    delete[] texture_data;\n    texture_data = nullptr;\n    \n    if (normal_map_data) {\n        delete[] normal_map_data;\n        normal_map_data = nullptr;\n    }\n    \n    status = READY;\n    return;\n}\n\nvoid Material::Unload() {\n    assert(status == READY);\n    \n    // TODO: add a check that this is being called from render thread\n    \n    std::cout << \"unloading tha tolet\" << std::endl;\n    \n    if (texture.generic) API::YeetTexture(texture);\n    if (normal_map.generic) API::YeetTexture(normal_map);\n    if (material.generic) API::YeetMaterial(material);\n    \n    texture.generic = nullptr;\n    normal_map.generic = nullptr;\n    material.generic = nullptr;\n    \n    status = UNLOADED;\n}\n\n}\n\n\n\n"
  },
  {
    "path": "src/render/material.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_MATERIAL_H\n#define TRAM_SDK_RENDER_MATERIAL_H\n\n#include <render/render.h>\n\nnamespace tram::Render {\n\nenum MaterialProperty {\n    PROPERTY_METAL,\n    PROPERTY_METAL_THIN,\n    PROPERTY_SLIME,\n    PROPERTY_TILE,\n    PROPERTY_GRATE,\n    PROPERTY_WOOD,\n    PROPERTY_COMPUTER,\n    PROPERTY_GLASS,\n    PROPERTY_SNOW,\n    PROPERTY_GRASS,\n    PROPERTY_CONCRETE,\n    PROPERTY_FLESH\n};\n\nenum TextureType {\n    TEXTURE_NONE,\n    TEXTURE_SAME,\n    TEXTURE_SOURCE,\n    TEXTURE_SAME_NORMAL\n};\n\nclass Material : public Resource {\npublic:\n    inline texturehandle_t GetTexture() const { return texture; }\n    inline texturehandle_t GetNormalMap() const { return normal_map; }\n    inline material_t GetMaterial() const { return material; }\n    inline uint32_t GetWidth() const { return width; }\n    inline uint32_t GetHeight() const { return height; }\n    inline materialtype_t GetType() const { return type; }\n    inline MaterialProperty GetProperty() const { return property; }\n    inline vec3 GetColor() const { return color; }\n    inline float GetSpecularWeight() const { return specular_weight; }\n    inline float GetSpecularExponent() const { return specular_exponent; }\n    inline float GetSpecularTransparency() const { return specular_transparency; }\n    inline float GetReflectivity() const { return reflectivity; }\n    inline TextureType GetTextureType() const { return texture_type; }\n    inline Material* GetSource() const { return source; }\n\n    inline void SetMaterialType(materialtype_t type) { this->type = type; FlushToAPI(); }\n    inline void SetMaterialFilter(MaterialFilter filter) { this->filter = filter; FlushToAPI(); }\n    inline void SetMaterialProperty(MaterialProperty property) { this->property = property; FlushToAPI(); }\n    inline void SetColor(color_t color) { this->color = color; FlushToAPI(); }\n    inline void SetSpecular(float weight, float exponent,  float transparency) { specular_weight = weight; specular_exponent = exponent; specular_transparency = transparency; FlushToAPI(); }\n    inline void SetReflectivity(float reflectivity) { this->reflectivity = reflectivity; FlushToAPI(); }\n    inline void SetTextureType(TextureType texture_type) { this->texture_type = texture_type; FlushToAPI(); }\n    void SetSource(Material* source);\n    void SetTextureImage(uint8_t* data, uint8_t channels, uint16_t width, uint16_t height);\n    \n    // TODO: yeet this\n    void MakePattern(vec3 color1, vec3 color2);\n    \n    void LoadFromDisk();\n    void LoadFromMemory();\n    \n    void Unload();\n    \n    static Material* Find(name_t name);\n    static Material* Make(name_t name, materialtype_t type);\n    \n    static void LoadMaterialInfo(const char* filename);\n\nprotected:\n    Material(name_t name) : Resource(name) {}\n    Material(name_t name, materialtype_t type);\n    \n    void FlushToAPI();\n    \n    texturehandle_t texture = {};\n    texturehandle_t normal_map = {};\n    materialtype_t type = MATERIAL_TEXTURE;\n    MaterialFilter filter = FILTER_NEAREST;\n    MaterialProperty property = PROPERTY_METAL;\n    TextureType texture_type = TEXTURE_SAME;\n    \n    material_t material = {.generic = nullptr};\n    \n    Material* source = nullptr;\n    \n    vec3 color = {1.0f, 1.0f, 1.0f};\n    float specular_weight = 0.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 0.0f;\n    float reflectivity = 0.0f;\n    \n    uint32_t width = 0;\n    uint32_t height = 0;\n    uint8_t channels = 0;\n    uint8_t* texture_data = nullptr;\n    uint32_t normal_map_width = 0;\n    uint32_t normal_map_height = 0;\n    uint8_t* normal_map_data = nullptr;\n    size_t approx_vram_usage = 0;\n    \n    friend class Sprite;\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_MATERIAL_H"
  },
  {
    "path": "src/render/model.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/core.h>\n#include <framework/stats.h>\n#include <framework/file.h>\n#include <framework/logging.h>\n\n#include <render/model.h>\n#include <render/api.h>\n#include <render/vertices.h>\n#include <render/error.h>\n\n#include <framework/async.h>\n\n#include <fstream>\n#include <cstring>\n\n#include <templates/hashmap.h>\n#include <templates/aabb.h>\n\n#include <charconv>\n\n/* it would be a good idea to yeet ModelData struct.\n * \n * at first it seemed like we might need to upload some additional data to the\n * GPU that would be different for each model type, but in the end it turned out\n * that the only thing that is different between various 3D model format is just\n * the layout of the vertex data\n * \n * so it would probably be better to replace the ModelData with a union of the\n * different vertex type pointers\n * \n * we could also allow users to load in their own model formats that have their\n * own custom vertex formats. to do this we could create a base ModelParser\n * class as an interface that can be injected into the Model and would do the\n * loading of the model data\n * \n * another way to do this could be to have a Model::RegisterParser() static\n * method that would take in a file extension and a function pointer. then when\n * the model needs to be loaded, we would iterate through the list of all\n * registered functions and try opening a file with the extension specified. if\n * the file is opened successfully with that extension, the opened file will get\n * passed into the callback. it will then write some data into the Model through\n * reference parameters. the callback signature could be something like:\n * ModelParser(File&, void*& vertex, AABBTriangle*&, size_t& size)\n * \n * TODO: fix\n */\n \nusing namespace tram;\n\ntemplate <> Pool<Render::Model> PoolProxy<Render::Model>::pool(\"model pool\", 500);\n\nnamespace tram::Render {\n\nstatic Hashmap<Model*> model_list (\"model name list\", 500);\n\nModel* Model::Find(name_t name) {\n    Model* model = model_list.Find (name);\n    \n    if (!model) {\n        model = PoolProxy<Model>::New (name);\n        model_list.Insert (UID(name), model);\n    }\n    \n    return model;\n}\n\nvoid Model::LoadFromMemory() {\n    assert(status == LOADED);\n    \n    if (source) {\n        this->vertex_format = source->vertex_format;\n        this->vertex_array = source->vertex_array;\n        this->index_array = source->index_array;\n        this->index_ranges = source->index_ranges;\n        this->aabb_min = source->aabb_min;\n        this->aabb_max = source->aabb_max;\n        this->armature = source->armature;\n        this->model_data = source->model_data;\n        this->model_aabb = source->model_aabb;\n        \n        status = READY;\n    } else if (vertex_format == VERTEX_STATIC) {\n        StaticModelData* data = (StaticModelData*) model_data;\n\n        API::CreateIndexedVertexArray(\n            GetVertexDefinition(VERTEX_STATIC),\n            vertex_array,\n            index_array,\n            data->vertices.size() * sizeof(StaticModelVertex),\n            &data->vertices[0],\n            data->indices.size() * sizeof(Triangle),\n            &data->indices[0]\n        );\n        \n        size_t approx_memory = (data->indices.size() * sizeof(Triangle)) + (data->vertices.size() * sizeof(StaticModelVertex));\n        approx_vram_usage += approx_memory;\n        Stats::Add(Stats::RESOURCE_VRAM, approx_memory);\n\n        delete model_data;\n        model_data = nullptr;\n\n        status = READY;\n\n        return;\n    } else if (vertex_format == VERTEX_DYNAMIC){\n        DynamicModelData* data = (DynamicModelData*) model_data;\n\n        API::CreateIndexedVertexArray(\n            GetVertexDefinition(VERTEX_DYNAMIC),\n            vertex_array,\n            index_array, \n            data->vertices.size() * sizeof(DynamicModelVertex),\n            &data->vertices[0],\n            data->indices.size() * sizeof(Triangle),\n            &data->indices[0]\n        );\n\n        size_t approx_memory = (data->indices.size() * sizeof(Triangle)) + (data->vertices.size() * sizeof(DynamicModelVertex));\n        approx_vram_usage += approx_memory;\n        //RESOURCE_VRAM_USAGE += approx_memory;\n        Stats::Add(Stats::RESOURCE_VRAM, approx_memory);\n\n        delete model_data;\n        model_data = nullptr;\n\n        status = READY;\n\n        return;\n    }\n}\n\nstruct ModelAABB {\n    AABBTree tree;\n    std::vector<AABBTriangle> triangles;\n};\n\n\n/// Finds triangles that intersect ray.\n/// Finds the triangles that intersect the given ray. The ray's origin and\n/// direction must be provided in the local model coordinates.\nvoid Model::FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector<AABBTriangle>& result) {\n    std::vector<uint32_t> results;\n    results.reserve(10);\n    \n    model_aabb->tree.FindIntersection(ray_pos, ray_dir, results);\n    \n    for (auto res : results) {\n        result.push_back(model_aabb->triangles[res]);\n    }\n}\n\nvoid Model::FindAllFromAABB(vec3 min, vec3 max, std::vector<AABBTriangle>& result) {\n    //result = model_aabb->triangles;\n    model_aabb->tree.FindAABBIntersection(min, max, [&](uint32_t key) {\n        result.push_back(model_aabb->triangles[key]);\n    });\n}\n\n\n\nstatic int total_counter = 0;\nstatic int node_counter = 0;\nstatic int leaf_counter = 0;\n\n//static std::set<uint32_t> lookedat_nodes;\n\nstatic void DrawAABBNodeChildren(const AABBTree& tree, AABBTree::node_t node, const std::vector<AABBTriangle>& triangles, vec3 position, quat rotation) {\n    //lookedat_nodes.emplace(node_id);\n    \n    total_counter++;\n    \n    if (tree.IsLeaf(node)) {\n        //AddLineAABB(node.min, node.max, position, rotation, COLOR_CYAN);\n        \n        vec3 point1 = position + (rotation * triangles[tree.GetValue(node)].point1);\n        vec3 point2 = position + (rotation * triangles[tree.GetValue(node)].point2);\n        vec3 point3 = position + (rotation * triangles[tree.GetValue(node)].point3);\n        \n        AddLine(point1, point2, COLOR_WHITE);\n        AddLine(point2, point3, COLOR_WHITE);\n        AddLine(point3, point1, COLOR_WHITE);\n        \n        leaf_counter++;\n    } else {\n        DrawAABBNodeChildren(tree, tree.GetLeft(node), triangles, position, rotation);\n        DrawAABBNodeChildren(tree, tree.GetRight(node), triangles, position, rotation);\n        \n        if (tree.GetParent(node) == AABBTree::INVALID) {\n            AddLineAABB(tree.GetMin(node), tree.GetMax(node), position, rotation, COLOR_RED);\n        } else {\n            AddLineAABB(tree.GetMin(node), tree.GetMax(node), position, rotation, COLOR_PINK);\n        }\n        \n        node_counter++;\n    }\n}\n\n/// Draws the AABB tree.\n/// Draws the AABB tree of the 3D model using debug lines. This might be useful\n/// for debugging if raycasts or some other lookups fail on the 3D model.\n/// @param position Position of the 3D model in the scene.\n/// @param rotation Rotation of the 3D model in the scene.\nvoid Model::DrawAABB(vec3 position, quat rotation) {\n    if (!model_aabb) return;\n    \n    total_counter = 0;\n    node_counter = 0;\n    leaf_counter = 0;\n\n    DrawAABBNodeChildren(model_aabb->tree, model_aabb->tree.GetRoot(), model_aabb->triangles, position, rotation);\n}\n\nstatic vec3 TriangleAABBMin (vec3 point1, vec3 point2, vec3 point3) {\n    return {\n        point1.x < point2.x ? (point1.x < point3.x ? point1.x : point3.x) : (point2.x < point3.x ? point2.x : point3.x),\n        point1.y < point2.y ? (point1.y < point3.y ? point1.y : point3.y) : (point2.y < point3.y ? point2.y : point3.y),\n        point1.z < point2.z ? (point1.z < point3.z ? point1.z : point3.z) : (point2.z < point3.z ? point2.z : point3.z)\n    };\n}\n\nstatic vec3 TriangleAABBMax (vec3 point1, vec3 point2, vec3 point3) {\n    return {\n        point1.x > point2.x ? (point1.x > point3.x ? point1.x : point3.x) : (point2.x > point3.x ? point2.x : point3.x),\n        point1.y > point2.y ? (point1.y > point3.y ? point1.y : point3.y) : (point2.y > point3.y ? point2.y : point3.y),\n        point1.z > point2.z ? (point1.z > point3.z ? point1.z : point3.z) : (point2.z > point3.z ? point2.z : point3.z)\n    };\n}\n\nstruct TriangleBucket {\n    materialtype_t material_type;       // material type for this bucket\n    std::vector<uint32_t> materials;    // which materials have already been added to the bucket\n    std::vector<Triangle> triangles;    // triangle indices in the bucket\n};\n\nstruct BucketMapping {\n    int32_t bucket = -1;\n    int32_t index_in_bucket = -1;\n};\n\nstatic uint32_t PutTriangleInBucket (\n    std::vector<TriangleBucket>& buckets,\n    std::vector<BucketMapping>& bucket_mappings,\n    const std::vector<Material*>& materials,\n    uint32_t material_index,\n    Triangle triangle\n) {\n    // check if material is already in a bucket\n    if (auto& mapping = bucket_mappings[material_index]; mapping.bucket != -1) {\n        buckets[mapping.bucket].triangles.push_back(triangle);\n        return mapping.index_in_bucket;\n    }\n    \n    // check if there is already a bucket with the same type as material\n    for (size_t i = 0; i < buckets.size(); i++) {\n        if (buckets[i].material_type == materials[material_index]->GetType()\n            && buckets[i].materials.size() < API::GetMaxIndexRangeLength()\n        ) {\n            uint32_t bucket_index = buckets[i].materials.size();\n            \n            buckets[i].materials.push_back(material_index);\n            buckets[i].triangles.push_back(triangle);\n            \n            bucket_mappings[material_index].bucket = i;\n            bucket_mappings[material_index].index_in_bucket = bucket_index;\n            \n            return bucket_index;\n        }\n    }\n    \n    // insert a new bucket\n    buckets.push_back({\n        materials[material_index]->GetType(),\n        {material_index},\n        {triangle}\n    });\n    \n    buckets.back().triangles.reserve(10000);\n    \n    bucket_mappings[material_index].bucket = buckets.size() - 1;\n    bucket_mappings[material_index].index_in_bucket = 0;\n    \n    return 0;\n}\n\nvoid Model::LoadFromDisk() {\n    assert(status == UNLOADED);\n    std::ifstream file;\n    char path[200];\n    \n    std::vector<TriangleBucket> triangle_buckets;\n    std::vector<BucketMapping> bucket_mappings;\n\n    // trying to load model as a static model, text mode\n    strcpy(path, \"data/models/\");\n    strcat(path, name);\n    strcat(path, \".stmdl\");\n\n    if (File file (path, File::READ); file.is_open()) {\n        vertex_format = VERTEX_STATIC;\n        StaticModelData* data = new StaticModelData;\n        model_data = data;\n        model_aabb = new ModelAABB;\n\n        std::cout << \"Loading!!!: \" << path << std::endl;\n\n        // doing some extra work, so that we can load the old .stmdl that didn't\n        // have a header\n        auto header = file.read_token();\n\n        bool has_header = header == \"STMDLv1\";\n\n        uint32_t vcount;   // number of vertices\n        \n        if (!has_header) {\n            std::from_chars<uint32_t>(header.begin(), header.end(), vcount);\n        } else {\n            vcount = file.read_uint32();\n        }\n        \n        uint32_t tcount = file.read_uint32();   // number of triangles\n        uint32_t mcount = file.read_uint32();   // number of materials\n\n        if (mcount == 0) {\n            Log(Severity::ERROR, System::RENDER, \"Model {} has zero materials!\", path);\n            goto load_failure;\n        }\n\n        if (has_header) {\n            uint32_t metadata_fields = file.read_uint32();\n            \n            for (uint32_t i = 0; i < metadata_fields; i++) {\n                name_t field = file.read_name();\n                \n                if (field == \"lightmap\") {\n                    file.read_int32();\n                    file.read_int32();\n                } else if (field == \"near\") {\n                    fade_near = file.read_float32();\n                } else if (field == \"far\") {\n                    fade_far = file.read_float32();\n                } else if (field == \"origin\") {\n                    origin = {file.read_float32(), file.read_float32(), file.read_float32()};\n                } else {\n                    Log(Severity::WARNING, System::RENDER, \"File {} has unrecognized metadata {}, skipping entry\", path, field);\n                    file.skip_linebreak();\n                }\n            }\n        }\n        \n        bucket_mappings.resize(mcount);\n        assert(bucket_mappings.size() == mcount);\n\n        model_aabb->triangles.reserve(tcount);\n        //model_aabb->tree.nodes.reserve(tcount);\n\n        for (uint32_t i = 0; i < mcount; i++) {\n            materials.push_back(Material::Find(file.read_name()));\n        }\n        \n        for (uint32_t i = 0; i < vcount; i++) {\n            data->vertices.push_back(StaticModelVertex {\n                .co = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .normal = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .tex = {\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .lighttex = {\n                    file.read_float32(),\n                    file.read_float32()\n                },\n    \n                .texture = 0 // will be filled in later\n            });\n        }\n        \n        for (uint32_t i = 0; i < tcount; i++) {\n            Triangle index {\n                .indices = {\n                    file.read_uint32(),\n                    file.read_uint32(),\n                    file.read_uint32()\n                }\n            };\n            \n            uint32_t material_index = file.read_uint32();\n            assert(material_index < mcount);\n            assert(triangle_buckets.size() <= mcount);\n            \n            uint32_t bucket_index = PutTriangleInBucket(triangle_buckets, bucket_mappings, materials, material_index, index);\n            \n            const auto& point1 = data->vertices[index.indices.x];\n            const auto& point2 = data->vertices[index.indices.y];\n            const auto& point3 = data->vertices[index.indices.z];\n            \n            vec3 triangle_normal = glm::normalize(point1.normal + point2.normal + point3.normal);\n            \n            uint32_t aabb_triangle_index = model_aabb->triangles.size();\n            \n            model_aabb->triangles.push_back({point1.co, point2.co, point3.co, triangle_normal, material_index});\n            \n            vec3 triangle_aabb_min = TriangleAABBMin(point1.co, point2.co, point3.co);\n            vec3 triangle_aabb_max = TriangleAABBMax(point1.co, point2.co, point3.co);\n            \n            // TODO: implement a better solution\n            if (tcount < 10000) model_aabb->tree.InsertLeaf(aabb_triangle_index, triangle_aabb_min, triangle_aabb_max);\n            \n            data->vertices[index.indices.x].texture = bucket_index;\n            data->vertices[index.indices.y].texture = bucket_index;\n            data->vertices[index.indices.z].texture = bucket_index;\n        }\n\n        for (auto& bucket : triangle_buckets) {\n            IndexRange range {\n                .index_offset = (uint32_t) data->indices.size(),\n                .index_length = (uint32_t) bucket.triangles.size(),\n                .material_count = (uint32_t) bucket.materials.size(),\n                .material_type = bucket.material_type,\n            };\n            \n            for (size_t i = 0; i < bucket.materials.size(); i++) {\n                range.materials[i] = bucket.materials[i];\n            }\n            \n            index_ranges.push_back(range);\n            data->indices.insert(data->indices.end(), bucket.triangles.begin(), bucket.triangles.end());\n        }\n\n        Bone rootbone {\n            .name = UID(\"Root\"),\n            .parent = -1,\n            .head = {0.0f, 0.0f, 0.0f},\n            .tail = {0.0f, 1.0f, 0.0f},\n            .roll = 0.0f\n        };\n\n        armature.push_back(rootbone);\n\n        status = LOADED;\n\n        for (size_t i = 0; i < materials.size(); i++){\n            materials[i]->AddReference();\n            Async::LoadDependency(materials[i]);\n        }\n\n        aabb_min = model_aabb->tree.GetAABBMin();\n        aabb_max = model_aabb->tree.GetAABBMax();\n\n        return;\n    }\n\n\n\n    // ok, the model isn't static\n    // try opening it as a dynamic model\n\n    strcpy(path, \"data/models/\");\n    strcat(path, name);\n    strcat(path, \".dymdl\");\n\n    if (File file (path, File::READ); file.is_open()) {\n        vertex_format = VERTEX_DYNAMIC;\n        DynamicModelData* data = new DynamicModelData;\n        model_data = data;\n        model_aabb = new ModelAABB;\n\n        std::cout << \"Loading: \" << path << std::endl;\n\n        assert(data);\n        \n        name_t file_version = file.read_name();\n        \n        if (file_version != UID(\"DYMDLv1\")) {\n            std::cout << \"Model \" << path << \" is not using right DYMDLv1 version!\" << std::endl;\n            std::cout << \"Add \\\"DYMDLv1\\\" to file and also add bone roll to the bone definitions (0.0 to the end of lines), or reexport.\" << std::endl;\n        }\n        \n        \n        uint32_t vcount = file.read_uint32();   // number of vertices\n        uint32_t tcount = file.read_uint32();   // number of triangles\n        uint32_t mcount = file.read_uint32();   // number of materials\n        uint32_t bcount = file.read_uint32();   // number of bones\n        uint32_t gcount = file.read_uint32();   // number of vertex groups\n\n        if (mcount == 0) {\n            Log(Severity::ERROR, System::RENDER, \"Model {} has zero materials!\", path);\n            goto load_failure;\n        }\n\n        bucket_mappings.resize(mcount);\n\n        model_aabb->triangles.reserve(tcount);\n        //model_aabb->tree.nodes.reserve(tcount);\n\n        for (uint32_t i = 0; i < mcount; i++) {\n            materials.push_back(Material::Find(file.read_name()));\n        }\n        \n        for (uint32_t i = 0; i < vcount; i++) {\n            DynamicModelVertex vertex {\n                .co = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .normal = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .tex = {\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                // this looks stupid, but its because I accidentally made the\n                // model format stupid. maybe will be fixed in DYMDLv2\n                .bone = {0, 0, 0, 0},\n                \n                .boneweight = {0.0f, 0.0f, 0.0f, 0.0f},\n    \n                .texture = 0 // will be filled in later\n            };\n            \n            vertex.bone.x = file.read_uint32();\n            vertex.boneweight.x = file.read_float32();\n            vertex.bone.y = file.read_uint32();\n            vertex.boneweight.y = file.read_float32();\n            vertex.bone.z = file.read_uint32();\n            vertex.boneweight.z = file.read_float32();\n            vertex.bone.w = file.read_uint32();\n            vertex.boneweight.w = file.read_float32();\n\n            data->vertices.push_back(vertex);\n        }\n        \n        // this is basically a repetion of the same code as for static model\n        // so, it could be possible to make this a function.\n        for (uint32_t i = 0; i < tcount; i++) {\n            Triangle index {\n                .indices = {\n                    file.read_uint32(),\n                    file.read_uint32(),\n                    file.read_uint32()\n                }\n            };\n            \n            uint32_t material_index = file.read_uint32();\n            \n            uint32_t bucket_index = PutTriangleInBucket(triangle_buckets, bucket_mappings, materials, material_index, index);\n            \n            const auto& point1 = data->vertices[index.indices.x];\n            const auto& point2 = data->vertices[index.indices.y];\n            const auto& point3 = data->vertices[index.indices.z];\n            \n            vec3 triangle_normal = glm::normalize(point1.normal + point2.normal + point3.normal);\n            \n            uint32_t aabb_triangle_index = model_aabb->triangles.size();\n            \n            model_aabb->triangles.push_back({point1.co, point2.co, point3.co, triangle_normal, material_index});\n            \n            vec3 triangle_aabb_min = TriangleAABBMin(point1.co, point2.co, point3.co);\n            vec3 triangle_aabb_max = TriangleAABBMax(point1.co, point2.co, point3.co);\n            \n            // TODO: implement a better solution\n            if (tcount < 10000) model_aabb->tree.InsertLeaf(aabb_triangle_index, triangle_aabb_min, triangle_aabb_max);\n            \n            data->vertices[index.indices.x].texture = bucket_index;\n            data->vertices[index.indices.y].texture = bucket_index;\n            data->vertices[index.indices.z].texture = bucket_index;\n        }\n        \n        for (uint32_t i = 0; i < bcount; i++) {\n            armature.push_back(Bone {\n                .name = file.read_name(),\n                .parent = file.read_int32(),\n                \n                .head = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .tail = {\n                    file.read_float32(),\n                    file.read_float32(),\n                    file.read_float32()\n                },\n                \n                .roll = file.read_float32()\n            });\n        }\n        \n        for (uint32_t i = 0; i < gcount; i++) {\n            name_t group = file.read_name();\n            \n            if (armature[i].name != group) {\n                std::cout << \"Model \" << name << \" group \" << group << \" is not matching bone \" << armature[i].name << \"!\" << std::endl;\n            }\n            \n            data->groups.push_back(group);\n        }\n        \n        for (auto& bucket : triangle_buckets) {\n            IndexRange range {\n                .index_offset = (uint32_t) data->indices.size(),\n                .index_length = (uint32_t) bucket.triangles.size(),\n                .material_count = (uint32_t) bucket.materials.size(),\n                .material_type = bucket.material_type,\n            };\n            \n            for (size_t i = 0; i < bucket.materials.size(); i++) {\n                range.materials[i] = bucket.materials[i];\n            }\n            \n            index_ranges.push_back(range);\n            data->indices.insert(data->indices.end(), bucket.triangles.begin(), bucket.triangles.end());\n        }\n\n        // push references into material\n        status = LOADED;\n        for (size_t i = 0; i < materials.size(); i++){\n            materials[i]->AddReference();\n            Async::LoadDependency(materials[i]);\n        }\n        \n        aabb_min = model_aabb->tree.GetAABBMin();\n        aabb_max = model_aabb->tree.GetAABBMax();\n\n        return;\n    }\n\n    // try opening it as a mod model\n\n    strcpy(path, \"data/models/\");\n    strcat(path, name);\n    strcat(path, \".mdmdl\");\n\n    if (File file (path, File::READ); file.is_open()) {\n        name_t file_version = file.read_name();\n        \n        if (file_version != \"MDMDLv1\") {\n            std::cout << \"Model \" << path << \" is not using right MDMDLv1 version!\" << std::endl;\n        }\n        \n        std::cout << \"Loading: \" << path << std::endl;\n        \n        name_t source_model = file.read_name();\n        \n        this->source = Model::Find(source_model);\n        \n        this->source->AddReference();\n        Async::LoadDependency(this->source);\n        \n        std::vector<std::pair<name_t, name_t>> mappings;\n        \n        while (file.is_continue()) {\n            mappings.push_back({file.read_name(), file.read_name()});\n        }\n        \n        for (Material* mat : this->source->materials) {\n            for (auto mapping : mappings) {\n                if (mapping.first == mat->GetName()) {\n                    materials.push_back(Material::Find(mapping.second));\n                    goto next;\n                }\n            }\n            materials.push_back(mat);\n            next:;\n        }\n        \n        for (Material* mat : this->materials) {\n            mat->AddReference();\n            Async::LoadDependency(mat);\n        }\n        \n        status = LOADED;\n        \n        return;\n    }\n\n    // ok, so the model isn't static or dynamic\n    // we have no other model types, so it means that there actually isn't any usable model\n\n    std::cout << \"Model file for \" << name << \" couldn't be accessed!\" << std::endl;\n\nload_failure:\n    \n    vertex_format = VERTEX_STATIC;\n\n    auto data = MakeNewErrorModel();\n    model_data = data;\n\n    Material* error_material = Material::Find(\"defaulttexture\");\n    error_material->AddReference();\n    Async::LoadDependency(error_material);\n    \n    materials.push_back(error_material);\n\n    index_ranges.push_back(IndexRange {\n        .index_offset = 0,\n        .index_length = (uint32_t) data->indices.size(),\n        .material_count = 1,\n        .material_type = MATERIAL_TEXTURE,\n        .materials = {0}\n    });\n    \n    armature.push_back(Bone {\n        .name = UID(\"Root\"),\n        .parent = -1,\n        .head = {0.0f, 0.0f, 0.0f},\n        .tail = {0.0f, 1.0f, 0.0f},\n        .roll = 0.0f\n    });\n    \n    model_aabb = new ModelAABB;\n\n    for (auto index : data->indices) {\n        const auto& point1 = data->vertices[index.indices.x];\n        const auto& point2 = data->vertices[index.indices.y];\n        const auto& point3 = data->vertices[index.indices.z];\n        \n        vec3 triangle_normal = glm::normalize(point1.normal + point2.normal + point3.normal);\n        \n        uint32_t aabb_triangle_index = model_aabb->triangles.size();\n        \n        model_aabb->triangles.push_back({point1.co, point2.co, point3.co, triangle_normal, 0});\n        \n        vec3 triangle_aabb_min = TriangleAABBMin(point1.co, point2.co, point3.co);\n        vec3 triangle_aabb_max = TriangleAABBMax(point1.co, point2.co, point3.co);\n        \n        model_aabb->tree.InsertLeaf(aabb_triangle_index, triangle_aabb_min, triangle_aabb_max);\n    }\n    \n    aabb_min = model_aabb->tree.GetAABBMin();\n    aabb_max = model_aabb->tree.GetAABBMax();\n    \n    status = LOADED;\n    \n    load_fail = true;\n}\n\n\nvoid Model::LoadAsModificationModel(Model* source, std::initializer_list<std::pair<Material*, Material*>> mappings) {\n    assert(status == Resource::UNLOADED);\n    \n    this->source = source;\n    \n    this->source->AddReference();\n    Async::LoadDependency(this->source);\n        \n    for (Material* mat : this->source->materials) {\n        for (const auto& mapping : mappings) {\n            if (mapping.first == mat) {\n                materials.push_back(mapping.second);\n                goto next;\n            }\n        }\n        materials.push_back(mat);\n        next:;\n    }\n    \n    for (Material* mat : this->materials) {\n        mat->AddReference();\n        Async::LoadDependency(mat);\n    }\n    \n    status = LOADED;\n    \n    return;\n}\n\n}"
  },
  {
    "path": "src/render/model.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_MODEL_H\n#define TRAM_SDK_RENDER_MODEL_H\n\n#include <render/material.h>\n\nnamespace tram::Render {\n\nstruct ModelData;\nstruct ModelAABB;\n\nstruct IndexRange {\n    uint32_t index_offset = 0;\n    uint32_t index_length = 0;\n    uint32_t material_count = 0;\n    materialtype_t material_type;\n    uint32_t materials[15] = { 0 };\n};\n\nclass Model : public Resource {\npublic:\n    Model(name_t name) : Resource(name) {}\n\n    void LoadFromDisk();\n    void LoadFromMemory();\n    \n    void Unload() {}\n    \n    vertexformat_t GetVertexFormat() const { return vertex_format; } \n\n    vertexarray_t GetVertexArray() const { return vertex_array; }\n    indexarray_t GetIndexArray() const { return index_array; }\n    \n    const std::vector<Bone>& GetArmature() const { return armature; }\n    const std::vector<Material*>& GetMaterials() const { return materials; }\n    const std::vector<IndexRange>& GetIndexRanges() const { return index_ranges; }\n    \n    void DrawAABB(vec3 position, quat rotation);\n    void FindAllFromRay(vec3 ray_pos, vec3 ray_dir, std::vector<AABBTriangle>& result);\n    void FindAllFromAABB(vec3 min, vec3 max, std::vector<AABBTriangle>& result);\n    \n    vec3 GetAABBMin() const { return aabb_min; }\n    vec3 GetAABBMax() const { return aabb_max; }\n    \n    vec3 GetOrigin() const { return origin; }\n    \n    float GetNearDistance() const { return fade_near; }\n    float GetFarDistance() const { return fade_far; }\n    void SetNearDistance(float dist) { fade_near = dist; }\n    void SetFarDistance(float dist) { fade_far = dist; }\n    \n    void LoadAsModificationModel(Model* source, std::initializer_list<std::pair<Material*, Material*>> mapping);\n    \n    static Model* Find(name_t name);\n    \nprotected:\n    vertexformat_t vertex_format = VERTEX_STATIC;\n    \n    vertexarray_t vertex_array = {};\n    indexarray_t index_array = {};\n    \n    std::vector<IndexRange> index_ranges;\n    \n    vec3 aabb_min = {0.0f, 0.0f, 0.0f};\n    vec3 aabb_max = {0.0f, 0.0f, 0.0f};\n\n    float fade_near = 0.0f;\n    float fade_far = INFINITY;\n\n    vec3 origin = {0.0f, 0.0f, 0.0f};\n    \n    std::vector<Material*> materials;\n\n    Model* source = nullptr;\n\n    std::vector<Bone> armature;\n    ModelData* model_data = nullptr;\n    ModelAABB* model_aabb = nullptr;\n    size_t approx_vram_usage = 0;\n};\n\n}\n\n\n#endif // TRAM_SDK_RENDER_MODEL_H"
  },
  {
    "path": "src/render/opengl/buffer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/sprite.h>\n\n#include <config.h>\n\n#ifndef _WIN32\n    #include <GL/gl.h>\n    #include <GLES3/gl3.h>\n#else\n    #include <glad.h>\n#endif\n\nusing namespace tram;\n\nnamespace tram::Render::API {\n\nvoid CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array, indexarray_t& index_array, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data) {\n    glGenBuffers(1, &vertex_array.gl_vertex_buffer);\n    glBindBuffer(GL_ARRAY_BUFFER, vertex_array.gl_vertex_buffer);\n    glBufferData(GL_ARRAY_BUFFER, vertex_size, vertex_data, GL_STATIC_DRAW);\n\n    glGenBuffers(1, &index_array.gl_index_buffer);\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_array.gl_index_buffer);\n    glBufferData(GL_ELEMENT_ARRAY_BUFFER, index_size, index_data, GL_STATIC_DRAW);\n\n    glGenVertexArrays(1, &vertex_array.gl_vertex_array);\n\n    glBindVertexArray(vertex_array.gl_vertex_array);\n\n    for (size_t i = 0; i < vertex_format.attribute_count; i++) {\n        uint32_t opengl_type = vertex_format.attributes[i].type == VertexAttribute::FLOAT32 ? GL_FLOAT : GL_UNSIGNED_INT;\n        \n        if (opengl_type == GL_FLOAT) {\n            glVertexAttribPointer(i, vertex_format.attributes[i].size, opengl_type, GL_FALSE, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        } else {\n            glVertexAttribIPointer(i, vertex_format.attributes[i].size, opengl_type, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        }\n        \n        glEnableVertexAttribArray(i);\n    }\n\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_array.gl_index_buffer);\n    \n    glBindVertexArray(0);\n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);\n}\n\nvoid CreateVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array) {\n    glGenBuffers(1, &vertex_array.gl_vertex_buffer);\n    glBindBuffer(GL_ARRAY_BUFFER, vertex_array.gl_vertex_buffer);\n    glBufferData(GL_ARRAY_BUFFER, 0, nullptr, GL_DYNAMIC_DRAW);\n\n    glGenVertexArrays(1, &vertex_array.gl_vertex_array);\n\n    glBindVertexArray(vertex_array.gl_vertex_array);\n\n    for (size_t i = 0; i < vertex_format.attribute_count; i++) {\n        uint32_t opengl_type = vertex_format.attributes[i].type == VertexAttribute::FLOAT32 ? GL_FLOAT : GL_UNSIGNED_INT;\n        \n        if (opengl_type == GL_FLOAT) {\n            glVertexAttribPointer(i, vertex_format.attributes[i].size, opengl_type, GL_FALSE, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        } else {\n            glVertexAttribIPointer(i, vertex_format.attributes[i].size, opengl_type, vertex_format.attributes[i].stride, (void*)vertex_format.attributes[i].offset);\n        }\n        \n        glEnableVertexAttribArray(i);\n    }\n\n    glBindVertexArray(0);\n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n}\n\nvoid UpdateVertexArray(vertexarray_t& vertex_array, size_t data_size, void* data) {\n    glBindBuffer(GL_ARRAY_BUFFER, vertex_array.gl_vertex_buffer);\n    glBufferData(GL_ARRAY_BUFFER, data_size, data, GL_DYNAMIC_DRAW);\n    glBindBuffer(GL_ARRAY_BUFFER, 0);\n}\n\n}"
  },
  {
    "path": "src/render/opengl/buffer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_BUFFER_H\n#define TRAM_SDK_RENDER_OPENGL_BUFFER_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_BUFFER_H"
  },
  {
    "path": "src/render/opengl/drawlist.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/drawlist.h>\n\n#include <render/opengl/light.h>\n#include <render/opengl/shader.h>\n\n#include <config.h>\n\nusing namespace tram;\n\ntemplate<> tram::Pool<tram::Render::API::GLDrawListEntry> tram::PoolProxy<tram::Render::API::GLDrawListEntry>::pool(\"GLDrawListEntry pool\", 1000);\n\nnamespace tram::Render::API {\n    \ndrawlistentry_t InsertDrawListEntry() {\n    return {.generic = PoolProxy<GLDrawListEntry>::New()};\n}\n\nvoid RemoveDrawListEntry(drawlistentry_t entry) {\n    PoolProxy<GLDrawListEntry>::Delete(entry.gl);\n}\n\nuint32_t GetFlags(drawlistentry_t entry) {\n    return entry.gl->flags;\n}\n\nvoid SetFlags(drawlistentry_t entry, uint32_t flags) {\n    entry.gl->flags = (entry.gl->flags & FLAG_TRANSPARENT) | flags;\n}\n\nvoid SetLayer(drawlistentry_t entry, uint32_t layer) {\n    entry.gl->layer = layer;\n}\n\nvoid SetPose(drawlistentry_t entry, Pose* pose) {\n    entry.gl->pose = pose;\n}\n\nvoid SetLightmap(drawlistentry_t entry, texturehandle_t lightmap) {\n    entry.gl->lightmap = lightmap.gl_texture_handle;\n}\n\nvoid SetEnvironmentMap(drawlistentry_t entry, texturehandle_t environmentmap) {\n    entry.gl->environmentmap = environmentmap.gl_texture_handle;\n}\n\nvoid SetSphericalHarmonic(drawlistentry_t entry, sphericalharmonic_t harmonic) {\n    entry.gl->harmonic = harmonic;\n}\n\nvoid SetDrawListAABB(drawlistentry_t entry, vec3 min, vec3 max) {\n    entry.gl->aabb_min = min;\n    entry.gl->aabb_max = max;\n}\n\nvoid SetDrawListColor(drawlistentry_t entry, vec4 color) {\n    entry.gl->color = color;\n}\n\nvoid SetDrawListTextureOffsets(drawlistentry_t entry, size_t count, vec4* offset) {\n    for (size_t i = 0; i < count; i++) {\n        entry.gl->texture_transforms[i] = offset[i];\n    }\n}\n\nvoid SetLights(drawlistentry_t entry, light_t* lights) {\n    entry.gl->lights[0] = lights[0].gl ? PoolProxy<GLLight>::GetPool().index(lights[0].gl) : 0;\n    entry.gl->lights[1] = lights[1].gl ? PoolProxy<GLLight>::GetPool().index(lights[1].gl) : 0;\n    entry.gl->lights[2] = lights[2].gl ? PoolProxy<GLLight>::GetPool().index(lights[2].gl) : 0;\n    entry.gl->lights[3] = lights[3].gl ? PoolProxy<GLLight>::GetPool().index(lights[3].gl) : 0;\n}\n\nvoid SetMatrix(drawlistentry_t entry, const mat4& matrix) {\n    entry.gl->matrix = matrix;\n}\n\nvoid SetFadeDistance(drawlistentry_t entry, float near, float far) {\n    entry.gl->fade_near = near;\n    entry.gl->fade_far = far;\n}\n\nvoid SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle) {\n    entry.gl->vao = vertex_array_handle.gl_vertex_array;\n}\n\nvoid SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle) {\n    // the index array is already bound to the vao\n}\n\nvoid SetDrawListSpriteArray(drawlistentry_t entry, spritearray_t sprite_array_handle) {\n    SetDrawListVertexArray(entry, sprite_array_handle.vertex_array);\n}\n\nvoid SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length) {\n    entry.gl->eboOff = index_offset;\n    entry.gl->eboLen = index_length;\n}\n\nbool SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type) {\n    entry.gl->shader = FindShader(vertex_format, material_type, SHADER_NONE);\n    \n    // in the future the entry.gl could be a LinkedShader* from which we could\n    // then use ->GetFlags() to get the actual shader program, instead of doing\n    // that in here\n    \n    if (entry.gl->shader) {\n        // we might consider removing this in the future\n        if (material_type == MATERIAL_TEXTURE_BLEND) {\n            entry.gl->flags = entry.gl->flags | FLAG_TRANSPARENT;\n        }\n        return true;\n    } else {\n        entry.gl->shader = GetAnyShader(SHADER_NONE);\n        return false;\n    }\n}\n\nvoid SetDrawListMaterials(drawlistentry_t entry, size_t material_count, material_t* materials) {\n    for (size_t i = 0; i < material_count; i++) {\n        entry.gl->materials[i] = materials[i].gl;\n    }\n    entry.gl->texCount = material_count;\n}\n\n}"
  },
  {
    "path": "src/render/opengl/drawlist.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_DRAWLIST_H\n#define TRAM_SDK_RENDER_OPENGL_DRAWLIST_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\n#include <render/opengl/material.h>\n\nnamespace tram::Render::API {\n\nstruct GLDrawListEntry {\n    uint32_t flags = 0;\n\n    Pose* pose = nullptr;\n    \n    mat4 matrix = mat4(1.0f);\n\n    uint32_t lights[4] = {0};\n    \n    uint32_t layer = 0;\n    uint32_t lightmap = 0;\n    uint32_t environmentmap = 0;\n    uint32_t vao = 0;\n    uint32_t eboLen = 0; // in primitive count\n    uint32_t eboOff = 0; // in primitive count \n    uint32_t shader = 0;\n    uint32_t texCount = 0;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n    vec4 texture_transforms[15];\n    GLMaterial* materials[15];\n    \n    vec3 aabb_min = {0.0f, 0.0f, 0.0f};\n    vec3 aabb_max = {0.0f, 0.0f, 0.0f};\n    \n    float fade_near = 0.0f;\n    float fade_far = INFINITY;\n\n    sphericalharmonic_t harmonic;\n\n    GLDrawListEntry() {\n        for (int i = 0; i < 15; i++) {\n            materials[i] = nullptr;\n            texture_transforms[i]  = {0.0f, 0.0f, 0.0f, 0.0f};\n        }\n        \n        harmonic = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};\n    }\n\n    /// Assembles a key for sorting\n    uint64_t CalcSortKey (const vec3& cameraPosition) {\n        vec3 location = matrix * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n        uint64_t sortkey = 0;\n        sortkey = flags & FLAG_TRANSPARENT ? 1 : 0;\n        sortkey = sortkey << 60;\n        sortkey = sortkey | (((uint64_t)layer) << 61);    // 3 bits for the layer number\n        sortkey = sortkey | (((uint64_t)shader) << 48);   // 12 bits for the shader\n        sortkey = sortkey | (((uint64_t)vao) << 32);      // 16 bits or the vertex array number\n        // TODO: reverse the distance if FLAG_REVERSE_SORT is set\n        // also i think that the bitmask for the distance thing is incorrect\n        sortkey = sortkey | (((uint64_t)(glm::distance(cameraPosition, location) * 3000000.0f)) & 0x00000000FFFFFFFF); // 32 bits for the distance\n        return sortkey;\n    }\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_DRAWLIST_H"
  },
  {
    "path": "src/render/opengl/light.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/light.h>\n\n#include <config.h>\n\nusing namespace tram;\n\ntemplate<> tram::Pool<tram::Render::API::GLLight> tram::PoolProxy<tram::Render::API::GLLight>::pool(\"GLLight pool\", COMPONENT_LIMIT_LIGHT, {tram::Render::API::GLLight{}});\n\nnamespace tram::Render::API {\n\nlight_t MakeLight() {\n    return {PoolProxy<GLLight>::New()};\n}\n\nvoid YeetLight(light_t light) {\n    PoolProxy<GLLight>::Delete(light.gl);\n}\n\nvoid SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent) {\n    GLLight* light_ptr = light.gl;\n    \n    light_ptr->location = location;\n    light_ptr->color = color;\n    light_ptr->distance = distance;\n    light_ptr->direction = direction;\n    light_ptr->exponent = exponent;\n}\n\n}"
  },
  {
    "path": "src/render/opengl/light.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_LIGHT_H\n#define TRAM_SDK_RENDER_OPENGL_LIGHT_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct GLLight {\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    float padding;\n    vec3 color = {0.0f, 0.0f, 0.0f};\n    float distance = 0.0f;\n    vec3 direction = {0.0f, 0.0f, -1.0f};\n    float exponent = 0.0f;\n    float padding2[4];\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_LIGHT_H"
  },
  {
    "path": "src/render/opengl/material.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/material.h>\n\n#include <config.h>\n\nusing namespace tram;\n\ntemplate<> tram::Pool<tram::Render::API::GLMaterial> tram::PoolProxy<tram::Render::API::GLMaterial>::pool(\"GLMaterial pool\", RESOURCE_LIMIT_MATERIAL);\n\nnamespace tram::Render::API {\n    \nmaterial_t MakeMaterial() {\n    return {PoolProxy<GLMaterial>::New()};\n}\n\nvoid YeetMaterial(material_t material) {\n    PoolProxy<GLMaterial>::Delete(material.gl);\n}\n\nvoid SetMaterialTexture(material_t material, texturehandle_t texture) {\n    material.gl->gl_texture = texture.gl_texture_handle;\n}\n\nvoid SetMaterialNormalMap(material_t material, texturehandle_t texture) {\n    material.gl->gl_normal_map = texture.gl_texture_handle;\n}\n\nvoid SetMaterialColor(material_t material, vec4 color) {\n    material.gl->color = color;\n}\n\nvoid SetMaterialSpecularWeight(material_t material, float weight) {\n    material.gl->specular_weight = weight;\n}\n\nvoid SetMaterialSpecularExponent(material_t material, float exponent) {\n    material.gl->specular_exponent = exponent;\n}\n\nvoid SetMaterialSpecularTransparency(material_t material, float transparency) {\n    material.gl->specular_transparency = transparency;\n}\n\nvoid SetMaterialReflectivity(material_t material, float reflectivity) {\n    material.gl->reflectivity = reflectivity;\n}\n\n}"
  },
  {
    "path": "src/render/opengl/material.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_MATERIAL_H\n#define TRAM_SDK_RENDER_OPENGL_MATERIAL_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct GLMaterial {\n    uint32_t gl_texture = 0;\n    uint32_t gl_normal_map = 0;\n    float specular_weight = 0.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 0.0f;\n    float reflectivity = 0.0f;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_MATERIAL_H"
  },
  {
    "path": "src/render/opengl/renderer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/renderer.h>\n\n#include <render/opengl/light.h>\n#include <render/opengl/shader.h>\n#include <render/opengl/drawlist.h>\n\n#include <render/vertices.h>\n#include <render/api.h>\n\n#include <framework/settings.h>\n#include <framework/stats.h>\n\n#include <templates/octree.h>\n\n#ifndef _WIN32\n    #include <GL/gl.h>\n\t#include <GLES3/gl3.h>\n#else\n    #include <glad.h>\n#endif\n\n#include <glm/gtc/type_ptr.hpp>\n\n/* what's up and what's down?\n * \n * the original model for rendering, i.e. creating a big list and then sorting\n * it and then going through the list and rendering stuff is not working that\n * well anymore.\n * \n * which means that we should probaly change it to something better.\n * TODO: investigate\n * \n * Layer is a class, when you SetLayer you add a pointer to Layer??\n * each Layer would have a bucket for .. ? opaques and transparents!!\n */\n\nnamespace tram::Render::API {\n\n//Pool<GLDrawListEntry> draw_list (\"render list\", 1000);\n\nstruct ShaderUniformMatrices {\n    mat4 projection;       /// Projection matrix.\n    mat4 view;             /// View matrix.\n    vec3 view_pos;\n    float padding;\n};\n\nstruct ShaderUniformModelMatrices {\n    mat4 model;        /// Model -> world space matrix. Rotates and translates vertices from how they are defined in the model to where they will appear in the world.\n    uvec4 modelLights; /// Indices for lights in the light list. The shader will use these 4 indices to determine with which lights the model should be lit up.\n    vec4 sunDirection; /// Normalized vector. Sunlight direction.\n    vec4 sunColor;     /// Sunlight color.\n    vec4 ambientColor; /// Shadow color.\n    float time;\n    float sunWeight;\n    float screenWidth;\n    float screenHeight;\n    vec4 colors[15];\n    vec4 specular[15];\n    vec4 texture_transforms[15];\n    vec4 l00;\n    vec4 l1m1; vec4 l10; vec4 l11;\n    vec4 l2m2; vec4 l2m1; vec4 l20; vec4 l21; vec4 l22;\n};\n\nstruct Layer {\n    std::vector<std::pair<uint64_t, GLDrawListEntry*>> forward_bucket;\n    std::vector<std::pair<uint64_t, GLDrawListEntry*>> transparency_bucket;\n    \n    mat4 projection_matrix = mat4(1.0f);\n    mat4 view_matrix = mat4(1.0f);\n    vec3 view_position = {1.0f, 1.0f, 1.0f};\n    \n    vec3 sun_direction = {0.0f, 1.0f, 0.0f};\n    vec3 sun_color = {1.0f, 1.0f, 1.0f};\n    vec3 ambient_color = {0.3f, 0.3f, 0.3f};\n};\n\nShaderUniformMatrices matrices;\nShaderUniformModelMatrices modelMatrices;\n\nstatic Layer layers[7];\n\nclass ShaderBuffer {};\n\nconst uint32_t matrix_uniform_binding = 0;\nconst uint32_t model_matrix_uniform_binding = 1;\nconst uint32_t light_uniform_binding = 2;\nconst uint32_t bone_uniform_binding = 3;\n\nuint32_t matrix_uniform_buffer;\nuint32_t model_matrix_uniform_buffer;\nuint32_t light_uniform_buffer;\nuint32_t bone_uniform_buffer;\n\nvec3 screen_clear_color = {0.2f, 0.3f, 0.3f};\nbool clear_screen = true;\n\nstatic float SCREEN_WIDTH = 800.0f;\nstatic float SCREEN_HEIGHT = 600.0f;\n\nstatic Render::Pose* null_pose = nullptr;\n\nstatic Settings::Property<bool> render_debug = {false, \"renderer-debug\", Settings::NONE};\nstatic Settings::Property<bool> frustum_culling = {true, \"frustum-culling\", Settings::NONE};\n\nuint32_t MakeUniformBuffer (const char* name, uint32_t binding, uint32_t initial_size) {\n    uint32_t handle;\n    \n    glGenBuffers(1, &handle);\n    glBindBuffer(GL_UNIFORM_BUFFER, handle);\n    glBufferData(GL_UNIFORM_BUFFER, initial_size, NULL, GL_DYNAMIC_DRAW);\n\n    glBindBufferBase(GL_UNIFORM_BUFFER, binding, handle);\n\n    BindUniformBlock (name, binding);\n\n    glBindBuffer(GL_UNIFORM_BUFFER, 0);\n    return handle;\n}\n\nvoid UploadUniformBuffer (uint32_t handle, uint32_t data_size, void* data) {\n    glBindBuffer(GL_UNIFORM_BUFFER, handle);\n    glBufferSubData(GL_UNIFORM_BUFFER, 0, data_size, data);\n    glBindBuffer(GL_UNIFORM_BUFFER, 0);\n}\n\nvoid SetLightingParameters (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, uint32_t layer) {\n    layers[layer].sun_direction = sun_direction;\n    layers[layer].sun_color = sun_color;\n    layers[layer].ambient_color = ambient_color;\n}\n\nvoid SetFogParameters(vec3 color, float near, float far, uint32_t layer) {\n    /*layers[layer].fog_color = color;\n    layers[layer].fog_near = near;\n    layers[layer].fog_far = far;*/\n}\n\nvoid SetViewParameters (vec3 position, quat rotation, uint32_t layer) {\n    //LAYER[layer].camera_position = position;\n    //LAYER[layer].camera_rotation = rotation;\n}\n\nvoid SetScreenSize(float width, float height) {\n    SCREEN_WIDTH = width;\n    SCREEN_HEIGHT = height;\n    \n    glViewport(0, 0, width, height);\n    \n    //matrices.projection = glm::perspective(glm::radians(60.0f), width / height, 0.1f, 1000.0f);\n}\n\nvoid SetScreenClear (vec3 clear_color, bool clear) {\n    clear_screen = clear;\n    screen_clear_color = clear_color;\n}\n\n\nstatic void SetupLayer(layer_t layer) {\n    modelMatrices.sunDirection =    vec4(layers[layer].sun_direction, 1.0f);\n    modelMatrices.sunColor =        vec4(layers[layer].sun_color, 1.0f);\n    modelMatrices.ambientColor =    vec4(layers[layer].ambient_color, 1.0f);\n\n    matrices.projection = layers[layer].projection_matrix;\n    matrices.view = layers[layer].view_matrix;\n    matrices.view_pos = layers[layer].view_position;\n\n    UploadUniformBuffer(matrix_uniform_buffer, sizeof(ShaderUniformMatrices), &matrices);\n}\n\nstatic void Draw(GLDrawListEntry* robj) {\n    if (render_debug && !(robj->flags & FLAG_NO_DEBUG)) {\n        char debug_text[250];\n        \n        uint32_t tex_hash = 0;\n        for (uint32_t tex = 0; tex < robj->texCount; tex++) {\n            // TODO: figure out why we get nullptrs here\n            // maybe because of lines???\n            if (!robj->materials[tex]) continue;\n            tex_hash ^= robj->materials[tex]->gl_texture;\n        }\n        \n        sprintf(debug_text, \"Layer: %i\\nFlags: %i\\nVAO: %i, [%i:%i]\\nTexture: %i (%i)\\nLightmap: %i\\nEnvironment: %i\\nLights: %i %i %i %i\\nPose: %i\\nSize: %.2f\\nFade: %.2f -> %.2f\",\n            robj->layer, robj->flags, robj->vao, robj->eboOff, robj->eboLen, robj->texCount, tex_hash, robj->lightmap, robj->environmentmap,\n            robj->lights[0], robj->lights[1], robj->lights[2], robj->lights[3], robj->pose ? (int)PoolProxy<Pose>::GetPool().index(robj->pose) : 0, glm::distance(robj->aabb_min, robj->aabb_max),\n            robj->fade_near, robj->fade_far);\n        \n        vec3 pos = robj->matrix * glm::vec4(glm::mix(robj->aabb_min, robj->aabb_max, 0.5f), 1.0f);\n        \n        AddText(pos, debug_text);\n    }\n\n    glUseProgram(robj->shader);\n\n    if (robj->pose) {\n        UploadUniformBuffer(bone_uniform_buffer, sizeof(Pose), glm::value_ptr(robj->pose->pose[0]));\n    } else {\n        UploadUniformBuffer(bone_uniform_buffer, sizeof(Pose), glm::value_ptr(null_pose->pose[0]));\n    }\n\n    for (int i = 0; i < 15; i++) {\n        modelMatrices.colors[i] = robj->color;\n        modelMatrices.texture_transforms[i] = robj->texture_transforms[i];\n        \n        if (!robj->materials[i]) continue;\n        \n        modelMatrices.colors[i] = robj->color * robj->materials[i]->color;\n        \n        modelMatrices.specular[i].x = robj->materials[i]->specular_weight;\n        modelMatrices.specular[i].y = robj->materials[i]->specular_exponent;\n        modelMatrices.specular[i].z = robj->materials[i]->specular_transparency;\n        modelMatrices.specular[i].w = robj->materials[i]->reflectivity;\n    }\n    \n    modelMatrices.l00 = vec4(robj->harmonic.l00, 0.0f);\n    modelMatrices.l1m1 = vec4(robj->harmonic.l1m1, 0.0f);\n    modelMatrices.l10 = vec4(robj->harmonic.l10, 0.0f);\n    modelMatrices.l11 = vec4(robj->harmonic.l11, 0.0f);\n    modelMatrices.l2m2 = vec4(robj->harmonic.l2m2, 0.0f);\n    modelMatrices.l2m1 = vec4(robj->harmonic.l2m1, 0.0f);\n    modelMatrices.l20 = vec4(robj->harmonic.l20, 0.0f);\n    modelMatrices.l21 = vec4(robj->harmonic.l21, 0.0f);\n    modelMatrices.l22 = vec4(robj->harmonic.l22, 0.0f);\n\n    modelMatrices.modelLights.x = robj->lights[0];\n    modelMatrices.modelLights.y = robj->lights[1];\n    modelMatrices.modelLights.z = robj->lights[2];\n    modelMatrices.modelLights.w = robj->lights[3];\n\n    if (robj->flags & FLAG_NO_DIRECTIONAL) {\n        modelMatrices.sunWeight = 0.0f;\n    } else {\n        modelMatrices.sunWeight = 1.0f;\n    }\n\n    //modelMatrices.model = model;\n    modelMatrices.model = robj->matrix;\n    UploadUniformBuffer(model_matrix_uniform_buffer, sizeof(ShaderUniformModelMatrices), &modelMatrices);\n\n\n\n    for (unsigned int j = 0; j < robj->texCount; j++){\n        if (!robj->materials[j]) continue;\n        glActiveTexture(GL_TEXTURE0 + j);\n        glBindTexture(GL_TEXTURE_2D, robj->materials[j]->gl_texture);\n    }\n\n    if (robj->lightmap) {\n        glActiveTexture(GL_TEXTURE15);\n        glBindTexture(GL_TEXTURE_2D, robj->lightmap);\n    }\n    \n    if (robj->environmentmap) {\n        glActiveTexture(GL_TEXTURE15);\n        glBindTexture(GL_TEXTURE_2D, robj->environmentmap);\n    }\n    \n#ifndef __EMSCRIPTEN__\n    if (robj->flags & FLAG_LINE_FILL_POLY) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);\n    if (robj->flags & FLAG_POINT_FILL_POLY) glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);\n#endif\n\n    if (robj->flags & FLAG_NO_DEPTH_TEST) glDisable(GL_DEPTH_TEST);\n    if (robj->flags & FLAG_DRAW_INDEXED) {\n        glBindVertexArray(robj->vao);\n        glDrawElements(robj->flags & FLAG_DRAW_LINES ? GL_LINES : GL_TRIANGLES, robj->eboLen * 3, GL_UNSIGNED_INT, (void*)(robj->eboOff * 3 * sizeof(uint32_t)));\n    } else {\n        glBindVertexArray(robj->vao);\n        glDrawArrays(robj->flags & FLAG_DRAW_LINES ? GL_LINES : GL_TRIANGLES, 0, robj->eboLen);\n    }\n    if (robj->flags & FLAG_NO_DEPTH_TEST) glEnable(GL_DEPTH_TEST);\n    \n#ifndef __EMSCRIPTEN__\n    if (robj->flags & (FLAG_LINE_FILL_POLY | FLAG_POINT_FILL_POLY)) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);\n#endif\n}\n\nvoid RenderFrame() {\n    if (clear_screen) {\n        glClearColor(screen_clear_color.x, screen_clear_color.y, screen_clear_color.z, 1.0f);\n        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n    } else {\n        glClear(GL_DEPTH_BUFFER_BIT);\n    }\n    \n    // setting up data that is shared between layers\n    modelMatrices.time = GetTickTime();\n    modelMatrices.sunDirection =    vec4(layers[0].sun_direction, 1.0f);\n    modelMatrices.sunColor =        vec4(layers[0].sun_color, 1.0f);\n    modelMatrices.ambientColor =    vec4(layers[0].ambient_color, 1.0f);\n    modelMatrices.screenWidth =     SCREEN_WIDTH;\n    modelMatrices.screenHeight =    SCREEN_HEIGHT;\n\n    matrices.projection = layers[0].projection_matrix;\n    matrices.view = layers[0].view_matrix;\n    matrices.view_pos = layers[0].view_position;\n\n\n    GLLight* first_light = PoolProxy<GLLight>::GetPool().begin().ptr;\n    GLLight* last_light = PoolProxy<GLLight>::GetPool().end().ptr;\n    \n    UploadUniformBuffer(light_uniform_buffer, sizeof(GLLight) * (last_light - first_light), first_light);\n\n\n    // clear out layer buckets\n    for (auto& layer : layers) {\n        layer.forward_bucket.clear();\n        layer.transparency_bucket.clear();\n    }\n    \n    // filter drawlistentries and bucket them\n    for (auto& robj : PoolProxy<GLDrawListEntry>::GetPool()) {\n        const vec3 pos = robj.matrix * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n        const float dist = glm::distance(pos, layers[robj.layer].view_position);\n        \n        // distance culling\n        if (dist > robj.fade_far || dist < robj.fade_near) {\n            continue;\n        }\n\n        // frustum culling\n        if (robj.flags & FLAG_USE_AABB && frustum_culling) {\n            auto matrix = layers[robj.layer].projection_matrix * layers[robj.layer].view_matrix;\n\n            vec4 plane_l = {matrix[0][3] - matrix[0][0], \n                            matrix[1][3] - matrix[1][0],\n                            matrix[2][3] - matrix[2][0],\n                            matrix[3][3] - matrix[3][0]};\n            \n            vec4 plane_r = {matrix[0][3] + matrix[0][0],\n                            matrix[1][3] + matrix[1][0],\n                            matrix[2][3] + matrix[2][0],\n                            matrix[3][3] + matrix[3][0]};\n\n            vec4 plane_t = {matrix[0][3] - matrix[0][1],\n                            matrix[1][3] - matrix[1][1],\n                            matrix[2][3] - matrix[2][1],\n                            matrix[3][3] - matrix[3][1]};\n\n            vec4 plane_b = {matrix[0][3] + matrix[0][1],\n                            matrix[1][3] + matrix[1][1],\n                            matrix[2][3] + matrix[2][1],\n                            matrix[3][3] + matrix[3][1]};\n\n            vec4 plane_f = {matrix[0][2],\n                            matrix[1][2],\n                            matrix[2][2],\n                            matrix[3][2]};\n\n            vec4 plane_n = {matrix[0][3] - matrix[0][2],\n                            matrix[1][3] - matrix[1][2],\n                            matrix[2][3] - matrix[2][2],\n                            matrix[3][3] - matrix[3][2]};\n            \n            vec3 min = robj.aabb_min;\n            vec3 max = robj.aabb_max;\n            \n            vec3 mid = robj.matrix * vec4(glm::mix(min, max, 0.5f), 1.0f);\n            \n            float len1 = glm::length(min);\n            float len2 = glm::length(max);\n            \n            float len = len1 > len2 ? len1 : len2;\n            \n            // stupid hack\n            // TODO: fix\n            vec3 origin = matrix * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n            \n            if (glm::distance(origin, mid) > len) {\n                if (glm::dot(plane_l, vec4(mid, 1.0f)) < -len) continue;\n                if (glm::dot(plane_r, vec4(mid, 1.0f)) < -len) continue;\n                if (glm::dot(plane_t, vec4(mid, 1.0f)) < -len) continue;\n                if (glm::dot(plane_b, vec4(mid, 1.0f)) < -len) continue;\n                if (glm::dot(plane_f, vec4(mid, 1.0f)) < -len) continue;\n                if (glm::dot(plane_n, vec4(mid, 1.0f)) < -len) continue;\n            }\n        }\n\n        const uint64_t sort_key = robj.CalcSortKey(layers[robj.layer].view_position);\n\n        if (robj.flags & FLAG_TRANSPARENT) {\n            layers[robj.layer].transparency_bucket.push_back({sort_key, &robj});\n        } else {\n            layers[robj.layer].forward_bucket.push_back({sort_key, &robj});\n        }\n    }\n\n    // sort the buckets and add up the drawcalls\n    Stats::Remove(Stats::RESOURCE_DRAWCALL, Stats::GetStat(Stats::RESOURCE_DRAWCALL));\n    \n    for (auto& layer : layers) {\n        std::sort(layer.forward_bucket.begin(), layer.forward_bucket.end());\n        std::sort(layer.transparency_bucket.begin(), layer.transparency_bucket.end());\n        \n        Stats::Add(Stats::RESOURCE_DRAWCALL, layer.forward_bucket.size());\n        Stats::Add(Stats::RESOURCE_DRAWCALL, layer.transparency_bucket.size());\n    }\n\n\n    // the depth buffer was already cleared when we cleared the color buffer\n    SetupLayer(LAYER_DEFAULT);\n    for (auto [_, robj] : layers[LAYER_DEFAULT].forward_bucket) {\n        Draw(robj);\n    }\n    glEnable(GL_BLEND);\n    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); \n    for (auto [_, robj] : layers[LAYER_DEFAULT].transparency_bucket) {\n        Draw(robj);\n    }\n    glDisable(GL_BLEND); \n    \n    // the overlay layer is drawn on top of the default layer\n    glClear(GL_DEPTH_BUFFER_BIT);\n    SetupLayer(LAYER_OVERLAY);\n    \n    for (auto [_, robj] : layers[LAYER_OVERLAY].forward_bucket) {\n        Draw(robj);\n    }\n    \n    // finally we draw the GUI widgets and debug text on top of everything\n    glClear(GL_DEPTH_BUFFER_BIT);\n    SetupLayer(LAYER_GUI);\n    \n    for (auto [_, robj] : layers[LAYER_GUI].forward_bucket) {\n        Draw(robj);\n    }\n    \n    \n    if (render_debug) {\n        for (auto& light : PoolProxy<GLLight>::GetPool()) {\n            char debug_text[250];\n            \n            sprintf(debug_text, \"Index: %i\\nDistance: %.2f\\nColor: %.2f %.2f %.2f\\nDirection: %.2f %.2f %.2f\\nExponent: %.2f\",\n                (int)PoolProxy<GLLight>::GetPool().index(&light),\n                light.distance,\n                light.color.r, light.color.g, light.color.b,\n                light.direction.x, light.direction.y, light.direction.z,\n                light.exponent);\n            \n            AddText(light.location, debug_text);\n        }\n    }\n}\n\n\n\n\n\n\n\nvoid SetViewMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].view_matrix = matrix;\n    layers[layer].view_position = glm::inverse(matrix) * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n}\n\nvoid SetProjectionMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].projection_matrix = matrix;\n}\n\nvoid GetScreen(char* buffer, int w, int h) {\n    unsigned char* rgba = (unsigned char*)malloc(w * h * 4);\n    glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, rgba);\n    for (int i = 0; i < w * h; ++i) {\n        buffer[i*3 + 0] = rgba[i*4 + 0];\n        buffer[i*3 + 1] = rgba[i*4 + 1];\n        buffer[i*3 + 2] = rgba[i*4 + 2];\n    }\n    free(rgba);\n}\n\nbool IsInteractiveMode() {\n    return true;\n}\n\nvoid SetInteractiveMode(bool is_interactive) {\n    // opengl doesn't have a non-interactive mode\n}\n\n#ifdef _WIN32\nvoid APIENTRY RenderErrorCallback(uint32_t source, uint32_t type, uint32_t id, uint32_t severity, int32_t length, const char* message, const void*) {\n    // apparently these are spammy, or something\n    if (id == 131169 || id == 131185 || id == 131218 || id == 131204) return; \n\n    const char* source_str =    \"UNKNOWN\";\n    const char* type_str =      \"UNKNOWN\";\n    const char* severity_str =  \"UNKNOWN\";\n\n    switch (source) {\n        case GL_DEBUG_SOURCE_API_ARB:               source_str = \"API\";                 break;\n        case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB:     source_str = \"WINDOW_SYSTEM\";       break;\n        case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB:   source_str = \"SHADER_COMPILER\";     break;\n        case GL_DEBUG_SOURCE_THIRD_PARTY_ARB:       source_str = \"THIRD_PARTY\";         break;\n        case GL_DEBUG_SOURCE_APPLICATION_ARB:       source_str = \"APPLICATION\";         break;\n        case GL_DEBUG_SOURCE_OTHER_ARB:             source_str = \"OTHER\";               break;\n    }\n\n    switch (type) {\n        case GL_DEBUG_TYPE_ERROR_ARB:               type_str = \"ERROR\";                 break;\n        case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: type_str = \"DEPRECATED_BEHAVIOR\";   break;\n        case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB:  type_str = \"UNDEFINED_BEHAVIOR\";    break; \n        case GL_DEBUG_TYPE_PORTABILITY_ARB:         type_str = \"PORTABILITY\";           break;\n        case GL_DEBUG_TYPE_PERFORMANCE_ARB:         type_str = \"PERFORMANCE\";           break;\n        case GL_DEBUG_TYPE_OTHER_ARB:               type_str = \"OTHER\";                 break;\n    }\n\n    \n\n    switch (severity) {\n        case GL_DEBUG_SEVERITY_HIGH_ARB:            severity_str = \"HIGH\";              break;\n        case GL_DEBUG_SEVERITY_MEDIUM_ARB:          severity_str = \"MEDIUM\";            break;\n        case GL_DEBUG_SEVERITY_LOW_ARB:             severity_str = \"LOW\";               break;\n    }\n\n    std::cout << \"OpenGL Debug Message: \" << source_str << \" \" << type_str << \" \" << severity_str << \" \" << id << std::endl;\n    std::cout << message << std::endl;\n}\n#endif\n\nvoid Init() {\n    #ifdef _WIN32\n        glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB); \n        glDebugMessageCallbackARB(RenderErrorCallback, nullptr);\n        glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nullptr, GL_TRUE);\n    #endif\n    \n    glEnable(GL_DEPTH_TEST);\n    glEnable(GL_CULL_FACE);\n    //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);\n    \n    glViewport(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\n    \n    CompileShaders();\n\n    light_uniform_buffer = MakeUniformBuffer(\"Lights\", light_uniform_binding, sizeof(GLLight)*50);\n    matrix_uniform_buffer = MakeUniformBuffer(\"Matrices\", matrix_uniform_binding, sizeof(ShaderUniformMatrices));\n    model_matrix_uniform_buffer = MakeUniformBuffer(\"ModelMatrices\", model_matrix_uniform_binding, sizeof(ShaderUniformModelMatrices));\n    bone_uniform_buffer = MakeUniformBuffer(\"Bones\", bone_uniform_binding, sizeof(Pose));\n    \n    //matrices.projection = glm::perspective(glm::radians(60.0f), SCREEN_WIDTH / SCREEN_HEIGHT, 0.1f, 1000.0f);\n\n    //Settings::Register(render_debug, \"renderer-debug\", Settings::SERIALIZE_NONE);\n\n    // initialize the default pose\n    null_pose = PoolProxy<Render::Pose>::New();\n    for (size_t i = 0; i < BONE_COUNT; i++) {\n        null_pose->pose[i] = mat4(1.0f);\n    }\n    \n    // initialize the default light\n    //new (light_list.begin().ptr) LightListEntry;\n    //light_list.AddNew();\n}\n\nContextType GetContext() {\n#ifndef __EMSCRIPTEN__\n    return CONTEXT_OPENGL;\n#else\n    return CONTEXT_WEBGL;\n#endif\n}\n\nuint32_t GetMaxIndexRangeLength() {\n    return 15;\n}\n\nvoid SetDevice(void*) {\n    // OpenGL doesn't need a device!\n}\n\nbool IsDebugMode() {\n    return render_debug;\n}\n\nvoid SetDebugMode(bool mode) {\n    render_debug = mode;\n}\n\n}\n"
  },
  {
    "path": "src/render/opengl/renderer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_RENDERER_H\n#define TRAM_SDK_RENDER_OPENGL_RENDERER_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n    \n\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_RENDERER_H"
  },
  {
    "path": "src/render/opengl/shader.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <cassert>\n#include <iostream>\n#include <fstream>\n#include <sstream>\n#include <cstring>\n\n#include <config.h>\n\n#ifndef _WIN32\n    #include <GL/gl.h>\n\t#include <GLES3/gl3.h>\n#else\n    #include <glad.h>\n#endif\n\n#include <framework/logging.h>\n\n#include <platform/file.h>\n\n#include <render/opengl/shader.h>\n#include <render/opengl/renderer.h>\n\nnamespace tram::Render::API {\n\n#ifndef _WIN32\n    const char* shader_path = \"shaders/gles3/\";\n#else\n    const char* shader_path = \"shaders/opengl4/\";\n#endif\n\nclass VertexShader {\npublic:\n    name_t GetName() {\n        return name;\n    }\n\n    uint32_t GetShader(uint32_t flags) {\n        \n        // check if shader already compiled with given flags\n        for (auto [shader_flags, shader] : compiled_shaders) {\n            if (shader_flags == flags) return shader;\n        }\n        \n        // otherwise compile the shader again\n        char path[256];\n        strcpy(path, shader_path);\n        strcat(path, name);\n        strcat(path, \".vert\");\n        \n        FileReader* file = FileReader::GetReader(path);\n        \n        if (file->GetStatus() != FileStatus::READY) {\n            Log(Severity::ERROR, System::RENDER, \"Can't find vertex shader source file {}!\", UID(path));\n        }\n\n        Log(Severity::INFO, System::RENDER, \"Compiling vertex shader {} with {} flags\", name, flags);\n\n        uint32_t compiled_program = glCreateShader(GL_VERTEX_SHADER);\n        const char* contents = file->GetContents();\n        glShaderSource(compiled_program, 1, &contents, NULL);\n        glCompileShader(compiled_program);\n\n        int32_t compile_status;\n        glGetShaderiv(compiled_program, GL_COMPILE_STATUS, &compile_status);\n        \n        if (!compile_status) {\n            char compile_error[420];\n            glGetShaderInfoLog(compiled_program, 420, NULL, compile_error);\n            \n            Log(Severity::CRITICAL_ERROR, System::RENDER, \"Vertex shader {} compile error:\\n{}\", UID(name), UID(compile_error));\n        }\n\n        file->Yeet();\n        \n        compiled_shaders.push_back({flags, compiled_program});\n        return compiled_program;\n    }\n    \n    static VertexShader* Find(name_t name) {\n        for (auto shader : all_shaders) {\n            if (shader->GetName() == name) return shader;\n        }\n        \n        auto new_shader = new VertexShader(name);\n        all_shaders.push_back(new_shader);\n        \n        return new_shader;\n    }\nprivate:\n    VertexShader(name_t name) : name(name) {}\n    \n    name_t name;\n    std::vector<std::pair<shaderflags_t, uint32_t>> compiled_shaders;\n    \n    static std::vector<VertexShader*> all_shaders;\n};\n\nstd::vector<VertexShader*> VertexShader::all_shaders;\n\nclass FragmentShader {\npublic:\n    name_t GetName() {\n        return name;\n    }\n\n    uint32_t GetShader(uint32_t flags) {\n        \n        // check if shader already compiled with given flags\n        for (auto [shader_flags, shader] : compiled_shaders) {\n            if (shader_flags == flags) return shader;\n        }\n        \n        // otherwise compile the shader again\n        char path[256];\n        strcpy(path, shader_path);\n        strcat(path, name);\n        strcat(path, \".frag\");\n        \n        FileReader* file = FileReader::GetReader(path);\n        \n        if (file->GetStatus() != FileStatus::READY) {\n            Log(Severity::ERROR, System::RENDER, \"Can't find fragment shader source file {}!\", UID(path));\n            return 0;\n        }\n        \n        Log(Severity::INFO, System::RENDER, \"Compiling fragment shader {} with {} flags\", name, flags);\n\n        uint32_t compiled_program = glCreateShader(GL_FRAGMENT_SHADER);\n        const char* contents = file->GetContents();\n        glShaderSource(compiled_program, 1, &contents, NULL);\n        glCompileShader(compiled_program);\n\n        int32_t compile_status;\n        glGetShaderiv(compiled_program, GL_COMPILE_STATUS, &compile_status);\n        \n        if (!compile_status) {\n            char compile_error[420];\n            glGetShaderInfoLog(compiled_program, 420, NULL, compile_error);\n            \n            Log(Severity::CRITICAL_ERROR, System::RENDER, \"Fragment shader {} compile error:\\n{}\", UID(name), UID(compile_error));\n        }\n\n        file->Yeet();\n            \n        \n        compiled_shaders.push_back({flags, compiled_program});\n        return compiled_program;\n    }\n    \n    static FragmentShader* Find(name_t name) {\n        for (auto shader : all_shaders) {\n            if (shader->GetName() == name) return shader;\n        }\n        \n        auto new_shader = new FragmentShader(name);\n        all_shaders.push_back(new_shader);\n        \n        return new_shader;\n    }\nprivate:\n    FragmentShader(name_t name) : name(name) {}\n    \n    name_t name;\n    std::vector<std::pair<shaderflags_t, uint32_t>> compiled_shaders;\n    \n    static std::vector<FragmentShader*> all_shaders;\n};\n\nstd::vector<FragmentShader*> FragmentShader::all_shaders;\n\nclass LinkedShader {\npublic:\n    vertexformat_t GetFormat() {\n        return format;\n    }\n    \n    materialtype_t GetType() {\n        return type;\n    }\n    \n    VertexShader* GetVertexShader() {\n        return vertex_shader;\n    }\n    \n    FragmentShader* GetFragmentShader() {\n        return fragment_shader;\n    }\n\n    uint32_t GetShader(uint32_t flags) {\n        \n        // check if shader already linked with given flags\n        for (auto [shader_flags, shader] : linked_shaders) {\n            if (shader_flags == flags) return shader;\n        }\n        \n        Log(Severity::INFO, System::RENDER, \"Linking {} and {} shader with {} flags\",\n                                             GetVertexFormatName(format),\n                                             GetMaterialTypeName(type),\n                                             flags);\n        \n        // otherwise link the shader again\n        uint32_t linked_shader = glCreateProgram();\n        glAttachShader(linked_shader, vertex_shader->GetShader(flags));\n        glAttachShader(linked_shader, fragment_shader->GetShader(flags));\n        glLinkProgram(linked_shader);\n\n        int32_t link_status;\n        glGetProgramiv(linked_shader, GL_LINK_STATUS, &link_status);\n        \n        if (!link_status) {\n            char link_error[420];\n            glGetShaderInfoLog(linked_shader, 420, NULL, link_error);\n            \n            Log(Severity::ERROR, System::RENDER, \"Shader link error:\\n{}\", UID(link_error));\n            \n            return 0;\n        }\n        \n        glUseProgram(linked_shader);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[0]\"), 0);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[1]\"), 1);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[2]\"), 2);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[3]\"), 3);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[4]\"), 4);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[5]\"), 5);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[6]\"), 6);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[7]\"), 7);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[8]\"), 8);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[9]\"), 9);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[10]\"), 10);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[11]\"), 11);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[12]\"), 12);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[13]\"), 13);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[14]\"), 14);\n        glUniform1i(glGetUniformLocation(linked_shader, \"sampler[15]\"), 15);\n        glUseProgram(0);\n        \n        for (auto [name, binding] : all_uniform_blocks) {\n            auto block_index = glGetUniformBlockIndex(linked_shader, name);\n                \n            if (block_index == GL_INVALID_INDEX) continue;\n            \n            glUniformBlockBinding(linked_shader, block_index, binding);\n            \n        }\n        \n        linked_shaders.push_back({flags, linked_shader});\n        \n        return linked_shader;\n    }\n    \n    void BindUniformBlock(const char* name, uint32_t binding) {\n        for (auto [flags, shader_name] : linked_shaders) {\n            auto block_index = glGetUniformBlockIndex(shader_name, name);\n            \n            if (block_index == GL_INVALID_INDEX) continue;\n            \n            glUniformBlockBinding(shader_name, block_index, binding);\n            \n            \n            GLint result;\n            glGetActiveUniformBlockiv(shader_name, block_index, GL_UNIFORM_BLOCK_DATA_SIZE, &result);\n            \n        }\n    }\n    \n    static uint32_t FindShader(vertexformat_t format, materialtype_t type, shaderflags_t flags) {\n        for (auto shader : all_shaders) {\n            if (shader->GetFormat() == format && shader->GetType() == type) return shader->GetShader(flags);\n        }\n        \n        Log(Severity::ERROR, System::RENDER, \"Can't find shader pair for {} and {}!\",\n                                             GetVertexFormatName(format),\n                                             GetMaterialTypeName(type));\n                                                     \n        return 0;\n    }\n    \n    // we could hard-code a default shader to use when no other shaders are available\n    // TODO: fix\n    static uint32_t GetAnyShader(shaderflags_t flags) {\n        return all_shaders.front()->GetShader(flags);\n    }\n    \n    static void Register(vertexformat_t format, materialtype_t type, const char* vertex_shader, const char* fragment_shader) {\n        \n        // check if format/type pair already registered\n        for (auto shader : all_shaders) {\n            if (shader->GetFormat() == format && shader->GetType() == type) {\n                Log(Severity::ERROR, System::RENDER, \"Can't register shader pair for {} and {}!\\nNew pair\\t[ {}; {} ]\\nExisting\\t[ {}; {} ]\",\n                                                     GetVertexFormatName(format),\n                                                     GetMaterialTypeName(type),\n                                                     vertex_shader, \n                                                     fragment_shader,\n                                                     shader->GetVertexShader()->GetName(),\n                                                     shader->GetFragmentShader()->GetName());\n                                                     \n                return;\n            }\n        }\n        \n        // we could check if vertex_shader and fragment_shader files actually\n        // exist on disk and not register the shader if it they aren't found\n        // TODO: fix\n        auto new_shader = new LinkedShader(format, type, vertex_shader, fragment_shader);\n        all_shaders.push_back(new_shader);\n    }\n    \n    static void RegisterUniformBlock(const char* name, uint32_t binding) {\n        all_uniform_blocks.push_back({name, binding});\n        \n        for (auto shader : all_shaders) {\n            shader->BindUniformBlock(name, binding);\n        }\n    }\nprivate:\n    LinkedShader(vertexformat_t format, materialtype_t type, name_t vertex, name_t fragment) : format(format), type(type) {\n        vertex_shader = VertexShader::Find(vertex);\n        fragment_shader = FragmentShader::Find(fragment);\n    }\n    \n    vertexformat_t format;\n    materialtype_t type;\n    \n    VertexShader* vertex_shader = nullptr;\n    FragmentShader* fragment_shader = nullptr;\n    \n    std::vector<std::pair<shaderflags_t, uint32_t>> linked_shaders;\n    \n    static std::vector<std::pair<const char*, uint32_t>> all_uniform_blocks;\n    static std::vector<LinkedShader*> all_shaders;\n};\n\nstd::vector<std::pair<const char*, uint32_t>> LinkedShader::all_uniform_blocks;\nstd::vector<LinkedShader*> LinkedShader::all_shaders;\n\nvoid BindUniformBlock(const char* name, uint32_t binding) {\n    LinkedShader::RegisterUniformBlock(name, binding);\n}\n\nvoid RegisterShader(vertexformat_t format, materialtype_t type, const char* vertex_shader, const char* fragment_shader) {\n    LinkedShader::Register(format, type, vertex_shader, fragment_shader);\n}\n\nuint32_t FindShader(vertexformat_t format, materialtype_t type, shaderflags_t mask) {\n    return LinkedShader::FindShader(format, type, mask);\n}\n\nuint32_t GetAnyShader(shaderflags_t mask) {\n    return LinkedShader::GetAnyShader(mask);\n}\n\nvoid CompileShaders() {\n    std::cout << \"Loading shaders... \" << std::flush;\n\n    RegisterShader(VERTEX_STATIC,   MATERIAL_TEXTURE,          \"normal_static\",     \"normal_static\");\n    RegisterShader(VERTEX_STATIC,   MATERIAL_TEXTURE_ALPHA,    \"normal_static\",     \"normal_static_alpha\");\n    RegisterShader(VERTEX_STATIC,   MATERIAL_TEXTURE_BLEND,    \"normal_static\",     \"normal_static_blend\");\n    RegisterShader(VERTEX_DYNAMIC,  MATERIAL_TEXTURE,          \"normal_dynamic\",    \"normal_dynamic\");\n    RegisterShader(VERTEX_DYNAMIC,  MATERIAL_TEXTURE_ALPHA,    \"normal_dynamic\",    \"normal_dynamic_alpha\");\n    RegisterShader(VERTEX_DYNAMIC,  MATERIAL_TEXTURE_BLEND,    \"normal_dynamic\",    \"normal_dynamic_blend\");\n    RegisterShader(VERTEX_STATIC,   MATERIAL_WATER,            \"normal_static\",     \"normal_water\");\n    RegisterShader(VERTEX_SPRITE,   MATERIAL_TEXTURE_ALPHA,    \"normal_sprite\",     \"normal_sprite\");\n    RegisterShader(VERTEX_LINE,     MATERIAL_FLAT_COLOR,       \"line\",              \"line\");\n    RegisterShader(VERTEX_SPRITE,   MATERIAL_MSDF,             \"text\",              \"text\");\n    RegisterShader(VERTEX_SPRITE,   MATERIAL_GLYPH,            \"glyph\",             \"glyph\");\n    \n    std::cout << \"done!\" << std::endl;\n}\n\n}\n"
  },
  {
    "path": "src/render/opengl/shader.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_SHADER_H\n#define TRAM_SDK_RENDER_OPENGL_SHADER_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\ntypedef uint32_t shaderflags_t;\n\nenum ShaderFlag : shaderflags_t {\n    SHADER_NONE = 0,\n    SHADER_SPECULAR = 1,\n    SHADER_LIGHTMAP = 2,\n};\n\nvoid CompileShaders();\n\nuint32_t FindShader(vertexformat_t format, materialtype_t type, shaderflags_t mask);\nuint32_t GetAnyShader(shaderflags_t mask);\nvoid RegisterShader(vertexformat_t format, materialtype_t type, const char* vertex_shader, const char* fragment_shader);\n\nvoid BindUniformBlock (const char* name, uint32_t binding);\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_SHADER_H"
  },
  {
    "path": "src/render/opengl/sprite.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/api.h>\n#include <render/vertices.h>\n\nnamespace tram::Render::API {\n    \nspritearray_t CreateSpriteArray() {\n    vertexarray_t vertex_array;\n    CreateVertexArray(GetVertexDefinition(VERTEX_SPRITE), vertex_array);\n    \n    return {vertex_array};\n}\n\nvoid UpdateSpriteArray(spritearray_t array, size_t data_size, void* data) {\n    SpritePoint* sprites = (SpritePoint*) data;\n    \n    std::vector<Render::SpriteVertex> vertices;\n    \n    for (size_t i = 0; i < data_size; i++) {\n        const SpritePoint& sprite = sprites[i];\n        \n        // TODO: make rotation do something\n        // TODO: make origin do something\n        \n        Render::SpriteVertex top_left {\n            .co =           sprite.position,\n            .voffset =      {sprite.dimensions.x * -0.5f, sprite.dimensions.y * 0.5f},\n            .texco =        {sprite.texture_offset.x, sprite.texture_offset.y + sprite.texture_size.y},\n            .color =        {1.0f, 1.0f, 1.0f},\n            .verticality =  1.0f,\n            .texture =      sprite.texture  \n        };\n        \n        Render::SpriteVertex top_right {\n            .co =           sprite.position,\n            .voffset =      {sprite.dimensions.x * 0.5f, sprite.dimensions.y * 0.5f},\n            .texco =        {sprite.texture_offset.x + sprite.texture_size.x, sprite.texture_offset.y + sprite.texture_size.y},\n            .color =        {1.0f, 1.0f, 1.0f},\n            .verticality =  1.0f,\n            .texture =      sprite.texture\n        };\n        \n        Render::SpriteVertex bottom_left {\n            .co =           sprite.position,\n            .voffset =      {sprite.dimensions.x * -0.5f, sprite.dimensions.y * -0.5f},\n            .texco =        {sprite.texture_offset.x, sprite.texture_offset.y},\n            .color =        {1.0f, 1.0f, 1.0f},\n            .verticality =  1.0f,\n            .texture =      sprite.texture\n        };\n        \n        Render::SpriteVertex bottom_right {\n            .co =           sprite.position,\n            .voffset =      {sprite.dimensions.x * 0.5f, sprite.dimensions.y * -0.5f},\n            .texco =        {sprite.texture_offset.x + sprite.texture_size.x, sprite.texture_offset.y},\n            .color =        {1.0f, 1.0f, 1.0f},\n            .verticality =  1.0f,\n            .texture =      sprite.texture\n        };\n\n        vertices.push_back(top_left);\n        vertices.push_back(bottom_left);\n        vertices.push_back(top_right);\n        vertices.push_back(top_right);\n        vertices.push_back(bottom_left);\n        vertices.push_back(bottom_right);\n    }\n    \n    UpdateVertexArray(array.vertex_array, sizeof(SpriteVertex) * vertices.size(), vertices.data());\n}\n\n}"
  },
  {
    "path": "src/render/opengl/sprite.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_SPRITE_H\n#define TRAM_SDK_RENDER_OPENGL_SPRITE_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\n\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_SPRITE_H"
  },
  {
    "path": "src/render/opengl/texture.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/opengl/texture.h>\n\n#include <config.h>\n\n#ifndef _WIN32\n    #include <GL/gl.h>\n    #include <GLES3/gl3.h>\n#else\n    #include <glad.h>\n#endif\n\nusing namespace tram;\n\nnamespace tram::Render::API {\n\ntexturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data) {\n    texturehandle_t texture;\n    \n    \n    glGenTextures(1, &texture.gl_texture_handle);\n    glBindTexture(GL_TEXTURE_2D, texture.gl_texture_handle);\n\n    // do we want to expose this in the API?\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\n    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\n\n    SetTextureFilter(texture, texture_filter);\n    SetTextureImage(texture, color_mode, width, height, data);\n    \n    return texture;\n}\n\nvoid SetTextureFilter(texturehandle_t texture, TextureFilter texture_filter) {\n    glBindTexture(GL_TEXTURE_2D, texture.gl_texture_handle);\n    \n    switch (texture_filter) {\n        case TEXTUREFILTER_NEAREST:\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);\n            break;\n        case TEXTUREFILTER_LINEAR:\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n            break;\n        case TEXTUREFILTER_LINEAR_MIPMAPPED:\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);\n            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\n            break;\n    }\n}\n\nvoid SetTextureImage(texturehandle_t texture, ColorMode color_mode, uint32_t width, uint32_t height, void* data) {\n    uint32_t opengl_tex_format;\n    \n    glBindTexture(GL_TEXTURE_2D, texture.gl_texture_handle);\n    \n    switch (color_mode) {\n        case COLORMODE_R:\n            opengl_tex_format = GL_RED;\n            break;\n        case COLORMODE_RG:\n            opengl_tex_format = GL_RG;\n            break;\n        case COLORMODE_RGB:\n            opengl_tex_format = GL_RGB;\n            break;\n        case COLORMODE_RGBA:\n            opengl_tex_format = GL_RGBA;\n    }\n\n    assert(data);\n\n    glTexImage2D(GL_TEXTURE_2D, 0, opengl_tex_format, width, height, 0, opengl_tex_format, GL_UNSIGNED_BYTE, data);\n    glGenerateMipmap(GL_TEXTURE_2D);\n}\n\nvoid YeetTexture(texturehandle_t texture) {\n    glDeleteTextures(1, &texture.gl_texture_handle);\n}\n\n}"
  },
  {
    "path": "src/render/opengl/texture.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_OPENGL_TEXTURE_H\n#define TRAM_SDK_RENDER_OPENGL_TEXTURE_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n#include <render/api.h>\n\nnamespace tram::Render::API {\n\n}\n\n#endif // TRAM_SDK_RENDER_OPENGL_TEXTURE_H"
  },
  {
    "path": "src/render/raytrace/buffer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/buffer.h>\n\nnamespace tram::Render::API {\n\nstatic Pool<RTVertexArray> vertex_arrays(\"vertex_arrays list\", 200);\nstatic Pool<RTIndexArray> index_arrays(\"index_arrays list\", 200);\n\nvoid ParseFormat(vertexarray_t& vertex_array, VertexDefinition vertex_format) {\n    auto& helper = vertex_array.rt_vertex_array->helper;\n \n     for (int i = 0; i < (int)vertex_format.attribute_count; i++) {\n        switch (vertex_format.attributes[i].ffp_type) {\n            case VertexAttribute::FFP_POSITION:     helper.position = i;    break;\n            case VertexAttribute::FFP_NORMAL:       helper.normal = i;      break;\n            case VertexAttribute::FFP_COLOR:        helper.color = i;      break;\n            case VertexAttribute::FFP_TEXTURE:      helper.texture = i;     break;\n            case VertexAttribute::FFP_LIGHTMAP:     helper.lightmap = i;    break;\n            case VertexAttribute::FFP_BONE_INDEX:   helper.bone_index = i;  break;\n            case VertexAttribute::FFP_BONE_WEIGHT:  helper.bone_weight = i; break;\n            case VertexAttribute::FFP_IGNORE:                               break;\n        }\n    }\n    \n    if (helper.color != -1) {\n         vertex_array.rt_vertex_array->type = RT_STATIC_COLORED;\n    }\n \n    if (helper.lightmap != -1) {\n        vertex_array.rt_vertex_array->type = RT_STATIC_LIGHTMAPPED;\n    }\n    \n    if (helper.bone_index != -1 && helper.bone_weight != -1) {\n        vertex_array.rt_vertex_array->type = RT_DYNAMIC_BLENDED;\n    }\n    \n    vertex_array.rt_vertex_array->format = vertex_format;\n}\n\nvoid PackVertices(vertexarray_t& vertex_array, void* data, size_t count) {\n    switch (vertex_array.rt_vertex_array->type) {\n        case RT_STATIC_LIGHTMAPPED: {\n            StaticVertex* verts = (StaticVertex*)malloc(sizeof(StaticVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute nrm_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.normal];\n            for (size_t i = 0; i < count; i++) {\n                vec3* nrm = (vec3*)((char*)data + nrm_attrib.offset + nrm_attrib.stride * i);\n                verts[i].nrm = *nrm;\n            }\n            \n            VertexAttribute tex_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.texture];\n            for (size_t i = 0; i < count; i++) {\n                vec2* tex = (vec2*)((char*)data + tex_attrib.offset + tex_attrib.stride * i);\n                verts[i].tex = *tex;\n            }\n            \n            VertexAttribute lit_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.lightmap];\n            for (size_t i = 0; i < count; i++) {\n                vec2* lit = (vec2*)((char*)data + lit_attrib.offset + lit_attrib.stride * i);\n                verts[i].lit = *lit;\n            }\n            \n            vertex_array.rt_vertex_array->vertices = verts;\n            vertex_array.rt_vertex_array->vertex_count = count;\n        } break;\n        case RT_DYNAMIC_BLENDED: {\n            DynamicVertex* verts = (DynamicVertex*)malloc(sizeof(DynamicVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute nrm_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.normal];\n            for (size_t i = 0; i < count; i++) {\n                vec3* nrm = (vec3*)((char*)data + nrm_attrib.offset + nrm_attrib.stride * i);\n                verts[i].nrm = *nrm;\n            }\n            \n            VertexAttribute tex_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.texture];\n            for (size_t i = 0; i < count; i++) {\n                vec2* tex = (vec2*)((char*)data + tex_attrib.offset + tex_attrib.stride * i);\n                verts[i].tex = *tex;\n            }\n            \n            VertexAttribute wgt_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.bone_weight];\n            for (size_t i = 0; i < count; i++) {\n                vec4* wgt = (vec4*)((char*)data + wgt_attrib.offset + wgt_attrib.stride * i);\n                verts[i].wgt = glm::normalize(*wgt);\n            }\n            \n            VertexAttribute ind_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.bone_index];\n            for (size_t i = 0; i < count; i++) {\n                ivec4* ind = (ivec4*)((char*)data + ind_attrib.offset + ind_attrib.stride * i);\n                verts[i].ind = *ind;\n            }\n        \n            vertex_array.rt_vertex_array->vertices = verts;\n            vertex_array.rt_vertex_array->vertex_count = count;\n        } break;\n        case RT_STATIC_COLORED: {\n            ColorVertex* verts = (ColorVertex*)malloc(sizeof(ColorVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute col_attrib = vertex_array.rt_vertex_array->format.attributes[vertex_array.rt_vertex_array->helper.color];\n            for (size_t i = 0; i < count; i++) {\n                vec3* col = (vec3*)((char*)data + col_attrib.offset + col_attrib.stride * i);\n                verts[i].col = *col;\n            }\n            \n            vertex_array.rt_vertex_array->vertices = verts;\n            vertex_array.rt_vertex_array->vertex_count = count;\n        } break;\n        case RT_SPRITE:\n            assert(false);\n    }\n}\n\nvoid CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array, indexarray_t& index_array, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data) {\n    vertex_array.rt_vertex_array = vertex_arrays.AddNew();\n    ParseFormat(vertex_array, vertex_format);\n    PackVertices(vertex_array, vertex_data, vertex_size / vertex_format.attributes[0].stride);\n    \n    index_array.rt_index_array = index_arrays.AddNew();\n    index_array.rt_index_array->indices = (uint32_t*)malloc(index_size);\n    index_array.rt_index_array->index_count = index_size / sizeof(uint32_t);\n    memcpy(index_array.rt_index_array->indices, index_data, index_size);\n}\n\nvoid CreateVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array) {\n    vertex_array.rt_vertex_array = vertex_arrays.AddNew();\n    ParseFormat(vertex_array, vertex_format);\n}\n\nvoid UpdateVertexArray(vertexarray_t& vertex_array, size_t data_size, void* data) {\n    if (vertex_array.rt_vertex_array->vertices) {\n        free(vertex_array.rt_vertex_array->vertices);\n        vertex_array.rt_vertex_array->vertices = nullptr;\n    }\n    \n    PackVertices(vertex_array, data, data_size / vertex_array.rt_vertex_array->format.attributes[0].stride);\n}\n\n}"
  },
  {
    "path": "src/render/raytrace/buffer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_BUFFER_H\n#define TRAM_SDK_RENDER_RAYTRACE_BUFFER_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nenum RTVertexType {\n    RT_STATIC_LIGHTMAPPED,\n    RT_DYNAMIC_BLENDED,\n    RT_STATIC_COLORED,\n    RT_SPRITE\n};\n\nstruct FFPHelper {\n    int position = -1;\n    int normal = -1;\n    int color = -1;\n    int texture = -1;\n    int lightmap = -1;\n    int bone_index = -1;\n    int bone_weight = -1;\n};\n\nstruct RTVertexArray {\n    RTVertexType type = RT_STATIC_LIGHTMAPPED;\n    void* vertices = nullptr;\n    size_t vertex_count = 0;\n    VertexDefinition format;\n    FFPHelper helper;\n};\n\nstruct RTIndexArray {\n    size_t index_count = 0;\n    uint32_t* indices = nullptr;\n#ifndef __x86_64__\n    void* padding;\n#endif\n};\n\nstruct StaticVertex {\n    vec3 pos;\n    vec3 nrm;\n    vec2 tex;\n    vec2 lit;\n};\n\nstruct DynamicVertex {\n    vec3 pos;\n    vec3 nrm;\n    vec2 tex;\n    vec4 wgt;\n    ivec4 ind;\n};\n\nstruct ColorVertex {\n    vec3 pos;\n    vec3 col;\n};\n\n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_BUFFER_H"
  },
  {
    "path": "src/render/raytrace/drawlist.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/drawlist.h>\n\ntemplate<> tram::Pool<tram::Render::API::RTDrawListEntry> tram::PoolProxy<tram::Render::API::RTDrawListEntry>::pool(\"render list\", 500);\n\nnamespace tram::Render::API {\n\ndrawlistentry_t InsertDrawListEntry() {\n    return drawlistentry_t {.rt = PoolProxy<RTDrawListEntry>::New()};\n}\n\nvoid RemoveDrawListEntry(drawlistentry_t entry) {\n    PoolProxy<RTDrawListEntry>::Delete(entry.rt);\n}\n\nuint32_t GetFlags(drawlistentry_t entry) {\n    return entry.rt->flags;\n}\n\nvoid SetFlags(drawlistentry_t entry, uint32_t flags) {\n    entry.rt->flags = flags;\n}\n\nvoid SetLayer(drawlistentry_t entry, uint32_t layer) {\n    entry.rt->layer = layer;\n}\n\nvoid SetPose(drawlistentry_t entry, Pose* pose) {\n    entry.rt->pose = pose;\n}\n\nvoid SetLightmap(drawlistentry_t entry, texturehandle_t lightmap) {\n    entry.rt->lightmap = lightmap.rt_texture;\n}\n\nvoid SetEnvironmentMap(drawlistentry_t entry, texturehandle_t environmentmap) {\n    entry.rt->environmentmap = environmentmap.rt_texture;\n}\n\nvoid SetSphericalHarmonic(drawlistentry_t entry, sphericalharmonic_t harmonic) {\n    entry.rt->harmonic = harmonic;\n}\n\nvoid SetDrawListAABB(drawlistentry_t entry, vec3 min, vec3 max) {\n    //entry.sw->aabb_min = min;\n    //entry.sw->aabb_max = max;\n}\n\nvoid SetDrawListColors(drawlistentry_t entry, size_t count, vec4* color) {\n    entry.rt->color = *color;\n}\n\nvoid SetDrawListTextureOffsets(drawlistentry_t entry, size_t count, vec4* offset) {\n    /*for (size_t i = 0; i < count; i++) {\n        entry.sw->texture_transforms[i] = offset[i];\n    }*/\n}\n\n\nvoid SetDrawListSpecularities(drawlistentry_t entry, size_t count, float* weight, float* exponent, float* transparency) {\n    entry.rt->specular_weight = *weight;\n    entry.rt->specular_exponent = *exponent;\n    entry.rt->specular_transparency = *transparency;\n}\n\nvoid SetLights(drawlistentry_t entry, light_t* lights) {\n    for (size_t i = 0; i < 4; i++) {\n        entry.rt->lights[i] = lights[i].rt;\n    }\n}\n\nvoid SetMatrix(drawlistentry_t entry, const mat4& matrix) {\n    entry.rt->matrix = matrix;\n}\n\nvoid SetFadeDistance(drawlistentry_t entry, float near, float far) {\n    //entry.sw->fade_near = near;\n    //entry.sw->fade_far = far;\n}\n\nvoid SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle) {\n    entry.rt->vertex_array = vertex_array_handle.rt_vertex_array;\n}\n\nvoid SetDrawListSpriteArray(drawlistentry_t entry, spritearray_t sprite_array_handle) {\n    \n}\n\nvoid SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle) {\n    entry.rt->index_array = index_array_handle.rt_index_array;\n}\n\nvoid SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length) {\n    entry.rt->index_offset = index_offset;\n    entry.rt->index_length = index_length;\n}\n\nbool SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type) {\n    // TODO: check if material_type has transparency and save that fact\n    if (material_type == MATERIAL_TEXTURE_BLEND) {\n        entry.rt->translucent = true;\n    }\n    \n    return true;\n}\n\nvoid SetDrawListMaterials(drawlistentry_t entry, size_t texture_count, material_t* material) {\n    entry.rt->material = material->rt;\n}\n    \n}"
  },
  {
    "path": "src/render/raytrace/drawlist.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_DRAWLIST_H\n#define TRAM_SDK_RENDER_RAYTRACE_DRAWLIST_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct RTDrawListEntry {\n    uint32_t flags = 0;\n\n    Pose* pose = nullptr;\n    \n    mat4 matrix = mat4(1.0f);\n\n    RTLight* lights[4] = {nullptr, nullptr, nullptr, nullptr};\n    \n    uint32_t layer = 0;\n    RTTexture* lightmap = nullptr;\n    RTVertexArray* vertex_array = nullptr;\n    RTIndexArray* index_array = nullptr;\n    uint32_t index_length = 0;\n    uint32_t index_offset = 0;\n    sphericalharmonic_t harmonic;\n    RTMaterial* material = nullptr;\n    RTTexture* environmentmap = nullptr;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n    bool translucent = false;\n    float specular_weight = 1.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 1.0f;\n};\n\n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_DRAWLIST_H"
  },
  {
    "path": "src/render/raytrace/light.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/light.h>\n\ntemplate<> tram::Pool<tram::Render::API::RTLight> tram::PoolProxy<tram::Render::API::RTLight>::pool(\"light list\", 200);\n\nnamespace tram::Render::API {\n\nlight_t MakeLight() {\n    return light_t {.rt = PoolProxy<RTLight>::New()};\n}\n\nvoid YeetLight(light_t light) {\n    PoolProxy<RTLight>::Delete(light.rt);\n}\n\nvoid SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent) {\n    RTLight* light_ptr = light.rt;\n    \n    light_ptr->location = location;\n    light_ptr->color = color;\n    light_ptr->distance = distance;\n    light_ptr->direction = direction;\n    light_ptr->exponent = exponent;\n}\n\n}"
  },
  {
    "path": "src/render/raytrace/light.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_LIGHT_H\n#define TRAM_SDK_RENDER_RAYTRACE_LIGHT_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct RTLight {\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    vec3 color = {0.0f, 0.0f, 0.0f};\n    float distance = 0.0f;\n    vec3 direction = {0.0f, 0.0f, -1.0f};\n    float exponent = 0.0f;\n};\n\n\n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_LIGHT_H"
  },
  {
    "path": "src/render/raytrace/material.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/material.h>\n\n#include <config.h>\n\nnamespace tram::Render::API {\n\nstatic Pool<RTTexture> texture_list(\"texture list\", RESOURCE_LIMIT_MATERIAL);\nstatic Pool<RTMaterial> material_list(\"material list\", RESOURCE_LIMIT_MATERIAL);\n\nmaterial_t MakeMaterial() {\n    return material_t{.rt = material_list.AddNew()};\n}\n\nvoid YeetMaterial(material_t material) {\n    material_list.Remove(material.rt);\n}\n\nvoid SetMaterialTexture(material_t material, texturehandle_t texture) {\n    material.rt->texture = texture.rt_texture;\n}\n\nvoid SetMaterialNormalMap(material_t material, texturehandle_t texture) {\n    material.rt->normal_map = texture.rt_texture;\n}\n\nvoid SetMaterialColor(material_t material, vec4 color) {\n    material.rt->color = color;\n}\n\nvoid SetMaterialSpecularWeight(material_t material, float weight) {\n    material.rt->specular_weight = weight;\n}\n\nvoid SetMaterialSpecularExponent(material_t material, float exponent) {\n    material.rt->specular_exponent = exponent;\n}\n\nvoid SetMaterialSpecularTransparency(material_t material, float transparency) {\n    material.rt->specular_transparency = transparency;\n}\n\nvoid SetMaterialReflectivity(material_t material, float reflectivity) {\n    material.rt->reflectivity = reflectivity;\n}\n\ntexturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data) {\n    RTTexture* texture = texture_list.AddNew();\n    \n    texture->width = width;\n    texture->height = height;\n    \n    switch (color_mode) {\n        case COLORMODE_R:       texture->channels = 1;  break;\n        case COLORMODE_RG:      texture->channels = 2;  break;\n        case COLORMODE_RGB:     texture->channels = 3;  break;\n        case COLORMODE_RGBA:    texture->channels = 4;  break;\n    }\n    \n    switch (texture_filter) {\n        case TEXTUREFILTER_NEAREST:             texture->mode = RT_NEAREST; break;\n        case TEXTUREFILTER_LINEAR:              texture->mode = RT_BLENDED; break;\n        case TEXTUREFILTER_LINEAR_MIPMAPPED:    texture->mode = RT_BLENDED; break;\n    }\n    \n    int texture_size = texture->width * texture->height * sizeof(vec4);\n    texture->pixels = (vec4*)malloc(texture_size);\n    uint8_t* pix = (uint8_t*)data;\n    //memcpy(texture->pixels, data, texture_size);\n    for (int i = 0; i < texture->width * texture->height; i++) {\n        vec4 color = {0.0f, 0.0f, 0.0f, 255.0f};\n        \n        int offset = i * texture->channels;\n        \n        switch (color_mode) {\n            case COLORMODE_R:       color.x = pix[offset + 0];      break;\n            case COLORMODE_RG:      color.x = pix[offset + 0]; color.y = pix[offset + 1];    break;\n            case COLORMODE_RGB:     color.x = pix[offset + 0]; color.y = pix[offset + 1]; color.z = pix[offset + 2];  break;\n            case COLORMODE_RGBA:    color.x = pix[offset + 0]; color.y = pix[offset + 1]; color.z = pix[offset + 2]; color.w = pix[offset + 3];  break;\n        }\n        \n        \n        texture->pixels[i] = color / 255.0f;\n    }\n    \n    return texturehandle_t {.rt_texture = texture};\n}\n\n}"
  },
  {
    "path": "src/render/raytrace/material.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_MATERIAl_H\n#define TRAM_SDK_RENDER_RAYTRACE_MATERIAl_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nenum RTTextureMode {\n    RT_NEAREST,\n    RT_BLENDED\n};\n\nstruct RTTexture {\n    int width;\n    int height;\n    int channels;\n    int assembly_index = -1;\n    RTTextureMode mode = RT_NEAREST;\n    vec4* pixels = nullptr;\n};\n\nstruct RTMaterial {\n    RTTexture* texture = nullptr;\n    RTTexture* normal_map = nullptr;\n    float specular_weight = 0.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 0.0f;\n    float reflectivity = 0.0f;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n};\n\ninline vec4 SampleTexture(RTTexture* texture, vec2 coords) {\n    int tex_x = coords.x * (float)texture->width;\n    int tex_y = coords.y * (float)texture->height;\n    \n    tex_x = tex_x % texture->width;\n    tex_y = tex_y % texture->height;\n    \n    if (tex_x < 0) tex_x += texture->width;\n    if (tex_y < 0) tex_y += texture->height;\n    \n    int offset = (tex_y * texture->width + tex_x);\n\n    return texture->pixels[offset];\n}\n\n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_MATERIAl_H"
  },
  {
    "path": "src/render/raytrace/math.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_MATH_H\n#define TRAM_SDK_RENDER_RAYTRACE_MATH_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\ninline uint16_t IntColor(vec3 color) {\n    return (((uint16_t)(31.0f * color.r)) << 11)\n         | (((uint16_t)(63.0f * color.g)) << 5)\n         | (((uint16_t)(31.0f * color.b)));\n}\n\ninline vec3 RGBColor(uint16_t color) {\n    float r = (color & 0xf800) >> 11;\n    float g = (color & 0x07e0) >> 5;\n    float b = color & 0x001f;\n    \n    return {r/31.0f, g/63.0f, b/31.0f};\n}\n\ninline void BlitLineOctant0(uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, auto blit_func) {\n    int32_t delta_y2 = delta_y * 2;\n    int32_t delta_y2_x2 = delta_y2 - (int32_t) ( delta_x * 2 );\n    int32_t error = delta_y2 - (int32_t) delta_x;\n\n    blit_func(x0, y0);\n\n    while (delta_x--) {\n        if (error >= 0) {\n            y0++;\n            error += delta_y2_x2;\n        } else {\n            error += delta_y2;\n        }\n        \n        x0 += direction;\n        \n        blit_func(x0, y0);\n    }\n}\n\ninline void BlitLineOctant1(uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, auto blit_func) {\n    int32_t delta_x2 = delta_x * 2;\n    int32_t delta_x2_y2 = delta_x2 - (int32_t) ( delta_y * 2 );\n    int32_t error = delta_x2 - (int32_t) delta_y;\n\n    blit_func(x0, y0);\n    \n    while (delta_y--) {\n        if (error >= 0) {\n            x0 += direction;\n            error += delta_x2_y2;\n        } else {\n            error += delta_x2;\n        }\n        \n        y0++;\n        \n        blit_func(x0, y0);\n    }\n}\n\ninline void BlitLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, auto blit_func) {\n    \n    // for some reason some vertices get a NaN bone weight?? and this crashes?\n    // it seems to happen for vertices where all bones have a zero weight, which\n    // seems to indicate some sort of a normalization error, but who knows\n    // TODO: fix this hack\n    if (x0 < 0 || y0 < 0 || x1 < 0 || y1 < 0) return;\n    if (x0 > 1000 || y0 > 1000 || x1 > 1000 || y1 > 1000) return;\n    \n    if (y0 > y1) {\n        std::swap(y0, y1);\n        std::swap(x0, x1);\n    }\n\n    int32_t delta_x = x1 - x0;\n    int32_t delta_y = y1 - y0;\n    \n    if (delta_x > 0) {\n        if (delta_x > delta_y) {\n            BlitLineOctant0(x0, y0, delta_x, delta_y, 1, blit_func);\n        } else {\n            BlitLineOctant1(x0, y0, delta_x, delta_y, 1, blit_func);\n        }\n    } else {\n        delta_x = -delta_x;\n        if (delta_x > delta_y) {\n            BlitLineOctant0(x0, y0, delta_x, delta_y, -1, blit_func);\n        } else {\n            BlitLineOctant1(x0, y0, delta_x, delta_y, -1, blit_func);\n        }\n    }\n}\n \ninline void ClipLineInClipSpace(vec4& point0, vec4& point1) {\n    vec4 p0 = point0;\n    vec4 p1 = point1;\n    \n    // clip against left plane\n    if (p0.w + p0.x < 0.0f) {\n        float a = (p0.w + p0.x) / ((p0.w + p0.x) - (p1.w + p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.x < 0.0f) {\n        float a = (p1.w + p1.x) / ((p1.w + p1.x) - (p0.w + p0.x));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against right plane\n    if (p0.w - p0.x < 0.0f) {\n        float a = (p0.w - p0.x) / ((p0.w - p0.x) - (p1.w - p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.x < 0.0f) {\n        float a = (p1.w - p1.x) / ((p1.w - p1.x) - (p0.w - p0.x));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against bottom plane\n    if (p0.w + p0.y < 0.0f) {\n        float a = (p0.w + p0.y) / ((p0.w + p0.y) - (p1.w + p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.y < 0.0f) {\n        float a = (p1.w + p1.y) / ((p1.w + p1.y) - (p0.w + p0.y));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against top plane\n    if (p0.w - p0.y < 0.0f) {\n        float a = (p0.w - p0.y) / ((p0.w - p0.y) - (p1.w - p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.y < 0.0f) {\n        float a = (p1.w - p1.y) / ((p1.w - p1.y) - (p0.w - p0.y));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against near plane\n    if (p0.w + p0.z < 0.0f) {\n        float a = (p0.w + p0.z) / ((p0.w + p0.z) - (p1.w + p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.z < 0.0f) {\n        float a = (p1.w + p1.z) / ((p1.w + p1.z) - (p0.w + p0.z));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against far plane\n    if (p0.w - p0.z < 0.0f) {\n        float a = (p0.w - p0.z) / ((p0.w - p0.z) - (p1.w - p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.z < 0.0f) {\n        float a = (p1.w - p1.z) / ((p1.w - p1.z) - (p0.w - p0.z));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    point0 = p0;\n    point1 = p1;\n}\n\ninline void PerspectiveDivision(vec4& p0, vec4& p1) {\n    if (p0.w != 0.0f) {\n        p0.x /= p0.w;\n        p0.y /= p0.w;\n    }\n    \n    if (p1.w != 0.0f) {\n        p1.x /= p1.w;\n        p1.y /= p1.w;\n    }\n}\n\ninline bool LineVisible(vec4 p0, vec4 p1) {    \n    // line outside left plane\n    if (p0.w + p0.x < 0.0f && p1.w + p1.x < 0.0f) {\n        return false;\n    }\n\n    // line outside right plane\n    if (p0.w - p0.x < 0.0f && p1.w - p1.x < 0.0f) {\n        return false;\n    }\n\n    // line outside bottom plane\n    if (p0.w + p0.y < 0.0f && p1.w + p1.y < 0.0f) {\n        return false;\n    }\n\n    // line outside top plane\n    if (p0.w - p0.y < 0.0f && p1.w - p1.y < 0.0f) {\n        return false;\n    }\n\n    // line outside near plane\n    if (p0.w + p0.z < 0.0f && p1.w + p1.z < 0.0f) {\n        return false;\n    }\n    \n    // line outside far plane\n    if (p0.w - p0.z < 0.0f && p1.w - p1.z < 0.0f) {\n        return false;\n    }\n    \n    return true;\n}\n\ninline vec3 GetBarycentric(vec3 a, vec3 b, vec3 c, vec3 p) {\n    const vec3 v1 = b - a;\n    const vec3 v2 = c - a; \n    const vec3 v3 = p - a;\n    \n    const float d1 = glm::dot(v1, v1);\n    const float d2 = glm::dot(v1, v2);\n    const float d3 = glm::dot(v2, v2);\n    const float d4 = glm::dot(v3, v1);\n    const float d5 = glm::dot(v3, v2);\n    \n    const float dominator = d1 * d3 - d2 * d2;\n    \n    const float v = (d3 * d4 - d2 * d5) / dominator;\n    const float w = (d1 * d5 - d2 * d4) / dominator;\n    const float u = 1.0f - v - w;\n    \n    return {u, v, w};\n}\n\n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_MATH_H"
  },
  {
    "path": "src/render/raytrace/raytrace.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/raytrace.h>\n#include <render/api.h>\n\n#include <render/raytrace/drawlist.h>\n#include <render/raytrace/material.h>\n#include <render/raytrace/light.h>\n#include <render/raytrace/buffer.h>\n#include <render/raytrace/math.h>\n\n#include <templates/octree.h>\n#include <templates/aabb.h>\n\n#include <config.h>\n\n#include <cstdlib>\n#include <cstring>\n\nnamespace tram::Render::API {\n    \nstruct LayerParameters {\n    mat4 projection_matrix = mat4(1.0f);\n    mat4 view_matrix = mat4(1.0f);\n    vec3 view_position = {1.0f, 1.0f, 1.0f};\n    \n    vec3 sun_direction = {0.0f, 1.0f, 0.0f};\n    vec3 sun_color = {1.0f, 1.0f, 1.0f};\n    vec3 ambient_color = {0.3f, 0.3f, 0.3f};\n    \n    vec3 fog_color = {0.0f, 0.0f, 0.0f};\n    float fog_near = INFINITY;\n    float fog_far = INFINITY;\n};\n\nstatic LayerParameters layers[7];\n\nstatic vec3 screen_clear_color = {0.2f, 0.3f, 0.3f};\nstatic bool clear_screen = true;\n\nstatic uint16_t screen_width = 800.0f;\nstatic uint16_t screen_height = 600.0f;\n\nstatic uint16_t* screen_buffer = nullptr;\n\nstatic Render::Pose* null_pose = nullptr;\n\nstatic RTTexture* texture_indices[16] = {nullptr};\n\nconst float epsilon = 1.0f/255.0f;\n\nstruct TreeVertex {\n    vec3 pos;\n    vec3 nrm;\n    vec2 tex;\n};\n\nstruct TreeTriangle {\n    TreeVertex p0;\n    TreeVertex p1;\n    TreeVertex p2;\n    \n    vec3 tangent;\n    vec3 bitangent;\n    \n    vec4 color;\n    \n    bool translucent;\n    \n    RTMaterial* material;\n};\n\nstatic std::vector<TreeTriangle> tree_triangles;\nstatic AABBTree* tree = nullptr;\n\nstatic int rendering_progress = 0;\nstatic bool is_rendering = false;\nstatic bool use_assembly_rendering = false;\n\nstatic AssemblyLayers assembly;\n\nstd::vector<AssemblyLayer>& GetAssembly(int x, int y) {\n    return assembly.pixels[y * screen_width + x];\n}\n\nvoid SetLightingParameters(vec3 sun_direction, vec3 sun_color, vec3 ambient_color, uint32_t layer) {\n    layers[layer].sun_direction = sun_direction;\n    layers[layer].sun_color = sun_color;\n    layers[layer].ambient_color = ambient_color;\n}\n\nvoid SetFogParameters(vec3 color, float near, float far, uint32_t layer) {\n    layers[layer].fog_color = color;\n    layers[layer].fog_near = near;\n    layers[layer].fog_far = far;\n}\n\nvoid SetScreenSize(float width, float height) {\n    screen_width = width;\n    screen_height = height;\n}\n\nvoid SetScreenClear (vec3 clear_color, bool clear) {\n    clear_screen = clear;\n    screen_clear_color = clear_color;\n}\n\nvoid BlitDot(uint32_t x, uint32_t y, uint16_t color) {\n    if (x < 0 || x >= screen_width) return;\n    if (y < 0 || y >= screen_height) return;\n    screen_buffer[screen_width * y + x] = color;\n}\n\nstd::pair<int32_t, int32_t> ClipSpaceToScreenSpace(const vec4 p) {\n    int32_t px = (p.x + 1.0f) * 0.5f * screen_width;\n    int32_t py = (1.0f - p.y) * 0.5f * screen_height;\n    return {px, py};\n}\n\nvoid ClipRenderLine(vec4 p0, vec4 p1, auto blit_func) {\n    if (!LineVisible(p0, p1)) return;\n    \n    ClipLineInClipSpace(p0, p1);\n    PerspectiveDivision(p0, p1);\n    \n    auto [px0, py0] = ClipSpaceToScreenSpace(p0);\n    auto [px1, py1] = ClipSpaceToScreenSpace(p1);\n    \n    BlitLine(px0, py0, px1, py1, blit_func);\n}\n\nvec3 InverseProject(vec3 point) {\n    point.y =  screen_height - point.y;\n    vec3 result = glm::unProject(point,\n                                 layers[0].view_matrix,\n                                 layers[0].projection_matrix,\n                                 vec4(0.0f, 0.0f, screen_width, screen_height));\n    return result;    \n}\n\nint FindNearestTriangle(vec3 pos, vec3 dir) {\n    uint32_t nearest = tree->FindIntersection(pos, dir, 32.0f, [&](vec3 pos, vec3 dir, uint32_t index) {\n        vec3 intersection = RayTriangleIntersection(pos,\n                                                    dir,\n                                                    tree_triangles[index].p0.pos,\n                                                    tree_triangles[index].p1.pos,\n                                                    tree_triangles[index].p2.pos);\n\n        if (glm::dot(dir, glm::normalize(glm::cross(tree_triangles[index].p1.pos - tree_triangles[index].p0.pos,\n                                                    tree_triangles[index].p2.pos - tree_triangles[index].p0.pos))) > 0.0f) return INFINITY;\n\n        if (intersection.x == INFINITY) return INFINITY;\n\n        return glm::distance(intersection, pos);\n    });\n\n    if (nearest == (uint32_t)-1) {\n        return -1;\n    }\n    \n    return nearest;\n}\n\nbool FindIfObstacle(vec3 pos, vec3 dir, vec3 target) {\n    float target_distance = glm::distance(pos, target);\n    \n    uint32_t nearest = tree->FindIntersection(pos, dir, target_distance, [&](vec3 pos, vec3 dir, uint32_t index) {\n        if (tree_triangles[index].translucent) return INFINITY;\n        \n        vec3 intersection = RayTriangleIntersection(pos,\n                                                    dir,\n                                                    tree_triangles[index].p0.pos,\n                                                    tree_triangles[index].p1.pos,\n                                                    tree_triangles[index].p2.pos);\n\n        if (intersection.x == INFINITY) return INFINITY;\n\n        return glm::distance(intersection, pos) < target_distance ? 0.0f : INFINITY;\n    });\n\n    if (nearest == (uint32_t)-1) {\n        return false;\n    }\n    \n    return true;\n}\n\nstd::pair<vec3, vec3> GetLightContribution(RTMaterial* material, vec3 view_dir, vec3 point, vec3 normal) {\n    vec3 diffuse_color = {0.0f, 0.0f, 0.0f};\n    vec3 specular_color = {0.0f, 0.0f, 0.0f};\n    \n    diffuse_color += layers[0].ambient_color;\n    \n    const vec3 away_pos = point + 0.01f * normal;\n    const vec3 sun_dir = layers[0].sun_direction;\n    \n    if (!FindIfObstacle(away_pos, sun_dir, sun_dir * 100.0f)) {\n        float drct = glm::clamp(glm::dot(normal, sun_dir), 0.0f, 1.0f);\n        float spec = glm::pow(glm::max(glm::dot(view_dir, glm::reflect(-sun_dir, normal)), 0.0f), material->specular_exponent);\n        \n        //std::cout << sun_dir.x << \" \"<< sun_dir.y << \" \"<< sun_dir.z << \" \" << std::endl;\n\n        diffuse_color += layers[0].sun_color * drct;\n        specular_color += material->specular_weight * spec * layers[0].sun_color * drct;\n    }\n    \n    for (const auto& light : PoolProxy<RTLight>::GetPool()) {\n        vec3 light_vec = light.location - point;\n        \n        float dist = glm::length(light_vec);\n        float strn = glm::max(glm::dot(glm::normalize(light_vec), normal), 0.0f);\n        float attn = strn * (1.0f / (1.0f + 0.09f * dist + 0.032f * (dist * dist)));\n\n        if (attn < epsilon) continue;\n\n        float drct = glm::clamp(glm::pow(glm::max(glm::dot(light.direction, -glm::normalize(light_vec)), 0.0f), light.exponent), 0.0f, 1.0f);\n\n        if (drct < epsilon) continue;\n\n        if (FindIfObstacle(away_pos, glm::normalize(light_vec), light.location)) {\n            continue;\n        }\n\n        float spec = glm::pow(glm::max(glm::dot(view_dir, glm::reflect(-glm::normalize(light_vec), normal)), 0.0f), material->specular_exponent);\n\n        diffuse_color += light.color * attn * drct;\n        specular_color += material->specular_weight * spec * light.color * drct;\n    }\n    \n    diffuse_color += (1.0f - material->specular_transparency) * specular_color;\n    specular_color *= material->specular_transparency;\n    \n    return {diffuse_color, specular_color};\n}\n\nvec3 FindColorFromRay(vec3 pos, vec3 dir, int cap, float dist) {\n    int nearest_intersect = FindNearestTriangle(pos, dir);\n\n    if (nearest_intersect == -1) {\n        if (clear_screen) {\n            return screen_clear_color;\n        } else {\n            return {0, 0, 0};\n        }\n    }\n\n    const auto& tri = tree_triangles[nearest_intersect];\n    \n    vec3 intersection = RayTriangleIntersection(pos, dir, tri.p0.pos, tri.p1.pos, tri.p2.pos);\n    \n    float ray_dist = dist + glm::distance(pos, intersection);\n    \n    vec3 barycentric = GetBarycentric(tri.p0.pos, tri.p1.pos, tri.p2.pos, intersection);\n    \n    vec2 tex_coords = barycentric.x * tri.p0.tex + barycentric.y * tri.p1.tex + barycentric.z * tri.p2.tex;\n    vec3 normal = barycentric.x * tri.p0.nrm + barycentric.y * tri.p1.nrm + barycentric.z * tri.p2.nrm;\n    \n    vec4 texture_color = tri.material->color * tri.color * SampleTexture(tri.material->texture, tex_coords);\n    \n    if (tri.material->normal_map) {\n        mat3 normal_matrix = mat3(tri.tangent, tri.bitangent, normal);\n        \n        vec3 normal_sample = SampleTexture(tri.material->normal_map, tex_coords);\n        normal = glm::normalize(normal_matrix * (normal_sample * 2.0f - 1.0f)); \n    }\n    \n    vec3 view_dir = -dir;\n    vec3 away_pos = intersection + 0.01f * normal;\n\n    vec3 reflection_color = {0.0f, 0.0f, 0.0f};\n    \n    if (cap > 0 && tri.material->reflectivity) {\n        reflection_color = FindColorFromRay(away_pos, glm::reflect(dir, normal), 0, ray_dist);\n    }\n    \n    auto [diffuse_color, specular_color] = GetLightContribution(tri.material, view_dir, intersection, normal);\n\n    // pushing the intersection position a bit after the triangle, so that we\n    // don't have the ray intersecting with the same triangle again when we want\n    // to find further triangles after this triangle\n    vec3 into_pos = intersection + 0.0001f * dir;\n    \n    // if texture is translucent, check what is behind it, since it's translucent\n    // TODO: add this to assembly ray function\n    vec3 translucent_color = {0.0f, 0.0f, 0.0f};\n    if (texture_color.w < 1.0f - epsilon) {\n        translucent_color = FindColorFromRay(into_pos, dir, 0, ray_dist);\n    }\n\n    float fog = 0.0f;\n    if (ray_dist > layers[0].fog_near) {\n        float dist_in_fog = ray_dist - layers[0].fog_near;\n        float total_fog = layers[0].fog_far - layers[0].fog_near;\n        \n        fog = dist_in_fog / total_fog;\n        if (fog > 1.0f) fog = 1.0f;\n    }\n    \n    return glm::mix(glm::mix(translucent_color, vec3(texture_color) * diffuse_color, texture_color.w) + specular_color + tri.material->reflectivity * reflection_color, layers[0].fog_color, fog);\n}\n\nstd::vector<AssemblyLayer> FindAssemblyFromRay(vec3 pos, vec3 dir, int cap) {\n    int nearest_intersect = FindNearestTriangle(pos, dir);\n\n    if (nearest_intersect == -1) {\n        return {{vec4(screen_clear_color, 1.0f),\n                 -1,\n                 0,\n                 0,\n                 1.0f,\n                 {0.0f, 0.0f, 0.0f, 0.0f}}};        \n    }\n\n    const auto& tri = tree_triangles[nearest_intersect];\n    \n    vec3 intersection = RayTriangleIntersection(pos, dir, tri.p0.pos, tri.p1.pos, tri.p2.pos);\n    \n    vec3 barycentric = GetBarycentric(tri.p0.pos, tri.p1.pos, tri.p2.pos, intersection);\n    \n    vec2 tex_coords = barycentric.x * tri.p0.tex + barycentric.y * tri.p1.tex + barycentric.z * tri.p2.tex;\n    vec3 normal = barycentric.x * tri.p0.nrm + barycentric.y * tri.p1.nrm + barycentric.z * tri.p2.nrm;\n    \n    vec4 texture_color = SampleTexture(tri.material->texture, tex_coords);\n    \n    if (tri.material->normal_map) {\n        mat3 normal_matrix = mat3(tri.tangent, tri.bitangent, normal);\n        \n        vec3 normal_sample = SampleTexture(tri.material->normal_map, tex_coords);\n        normal = glm::normalize(normal_matrix * (normal_sample * 2.0f - 1.0f)); \n    }\n    \n    vec3 view_dir = -dir;\n    vec3 away_pos = intersection + 0.01f * normal;\n\n    std::vector<AssemblyLayer> layers;\n\n    if (cap > 0 && tri.material->reflectivity) {\n        layers = FindAssemblyFromRay(away_pos, glm::reflect(dir, normal), 0);\n    }\n\n    auto [diffuse_color, specular_color] = GetLightContribution(tri.material, view_dir, intersection, normal);\n\n    AssemblyLayer layer;\n    \n    if (tri.material->texture->assembly_index > 0) {\n        // sample\n        layer.diffuse = vec4(diffuse_color, 1.0f) * tri.material->color * tri.color;\n        layer.texture = tri.material->texture->assembly_index;\n        layer.sample_x = tex_coords.x * (float)tri.material->texture->width;\n        layer.sample_y = tex_coords.y * (float)tri.material->texture->height;\n        if (layer.sample_x >= tri.material->texture->width) layer.sample_x = tri.material->texture->width - 1;\n        if (layer.sample_y >= tri.material->texture->height) layer.sample_y = tri.material->texture->height - 1;\n        if (layer.sample_x < 0) layer.sample_x = 0;\n        if (layer.sample_y < 0) layer.sample_y = 0;\n        // TODO: implement proper texture repeating\n        layer.sublayer_opacity = tri.material->reflectivity;\n        layer.specular = vec4(specular_color, 1.0f); // nuu\n    } else {\n        // merge\n        layer.diffuse = texture_color * vec4(diffuse_color, 1.0f) * tri.material->color * tri.color;\n        layer.texture = -1;\n        layer.sample_x = 0;\n        layer.sample_y = 0;\n        layer.sublayer_opacity = tri.material->reflectivity;\n        layer.specular = vec4(specular_color, 1.0f); // nuu\n    }\n    \n    layers.push_back(layer);\n    \n    return layers;\n    \n    //return vec3(texture_color) * diffuse_color + tri.material->specular_transparency * specular_color + tri.material->reflectivity * reflection_color;\n    //return vec3(texture_color) * diffuse_color + tri.material->specular_transparency * specular_color + tri.material->reflectivity * reflection_color;\n}\n\nvec3 GetColorFromAssembly(std::vector<AssemblyLayer>& layers) {\n    vec3 color = {0, 0, 0};\n    \n    for (auto& layer : layers) {\n        color *= layer.sublayer_opacity;\n        \n        if (layer.texture > 0) {\n            float u = (float)layer.sample_x / (float)texture_indices[layer.texture]->width;\n            float v = (float)layer.sample_y / (float)texture_indices[layer.texture]->height;\n            color += vec3(SampleTexture(texture_indices[layer.texture], {u, v})) * vec3(layer.diffuse);\n        } else {\n            color += vec3(layer.diffuse);\n        }\n        \n        color += vec3(layer.specular);\n    }\n    \n    return color;\n}\n\nvoid RenderFrame() {\n    if (!is_rendering) goto interactive;\n    {\n        \n    const int y = rendering_progress;\n    \n    if (rendering_progress++ < screen_height)\n    for (int x = 0; x < screen_width; x++) {\n        vec3 far_point = InverseProject({x, y, 0.0f});\n        vec3 near_point = InverseProject({x, y, 1000.0f});\n        \n        vec3 look_direction = glm::normalize(far_point - near_point);\n        vec3 look_position = near_point;\n\n        if (!use_assembly_rendering) {\n            vec3 pixel_color = FindColorFromRay(look_position, look_direction, 1, 0.0f);\n            //vec3 pixel_color = FindColorFromRay(look_position, look_direction, 0);\n            \n            BlitDot(x, y, IntColor(glm::clamp(pixel_color, 0.0f, 1.0f)));\n        } else {\n            auto layers = FindAssemblyFromRay(look_position, look_direction, 1);\n            \n            BlitDot(x, y, IntColor(glm::clamp(GetColorFromAssembly(layers), 0.0f, 1.0f)));\n            \n            GetAssembly(x, y) = layers;\n        }\n        \n    }\n    \n    }\n    \n    return;\ninteractive:\n    /*if (clear_screen) {\n        uint16_t clear_color = IntColor(screen_clear_color);\n        for (int i = 0; i < screen_width * screen_height; i++) {\n            screen_buffer[i] = clear_color;\n        }\n    }*/\n    \n    for (int i = 0; i < screen_width * screen_height; i++) {\n        screen_buffer[i] = 0x0000;\n    }\n    \n    std::vector<std::pair<uint32_t, RTDrawListEntry*>> draw_list_sorted;\n    for (auto& entry : PoolProxy<RTDrawListEntry>::GetPool()) {\n        uint32_t sort_key = entry.layer;\n        draw_list_sorted.push_back({sort_key, &entry});\n    }\n    sort(draw_list_sorted.begin(), draw_list_sorted.end());\n    \n    uint32_t current_layer = 0;\n    for (auto [_, entry] : draw_list_sorted) {\n        if (!(entry->flags & FLAG_RENDER)) continue;\n        if (!entry->vertex_array) continue;\n\n        if (current_layer != entry->layer) {\n            // TODO: zero out zbuffer?\n        }\n        current_layer = entry->layer;\n        \n        switch (entry->vertex_array->type) {\n            case RT_STATIC_LIGHTMAPPED:\n                \n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    StaticVertex& p0 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    StaticVertex& p1 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    StaticVertex& p2 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    vec4 pr0 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p0.pos, 1.0f);\n                    vec4 pr1 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p1.pos, 1.0f);\n                    vec4 pr2 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p2.pos, 1.0f);\n                    \n                    const vec3 color = entry->color;\n                    \n                    ClipRenderLine(pr0, pr1, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                    ClipRenderLine(pr1, pr2, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                    ClipRenderLine(pr2, pr0, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                }\n                \n                break;\n            case RT_DYNAMIC_BLENDED:\n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    DynamicVertex& p0 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    DynamicVertex& p1 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    DynamicVertex& p2 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    vec4 local_pos0 = vec4(p0.pos, 1.0f);\n                    vec4 local_pos1 = vec4(p1.pos, 1.0f);\n                    vec4 local_pos2 = vec4(p2.pos, 1.0f);\n                    \n                    if (entry->pose) {\n                        vec4 local_pos00 = entry->pose->pose[p0.ind.x] * local_pos0;\n                        vec4 local_pos01 = entry->pose->pose[p0.ind.y] * local_pos0;\n                        vec4 local_pos02 = entry->pose->pose[p0.ind.z] * local_pos0;\n                        vec4 local_pos03 = entry->pose->pose[p0.ind.w] * local_pos0;\n                        \n                        vec4 local_pos10 = entry->pose->pose[p1.ind.x] * local_pos1;\n                        vec4 local_pos11 = entry->pose->pose[p1.ind.y] * local_pos1;\n                        vec4 local_pos12 = entry->pose->pose[p1.ind.z] * local_pos1;\n                        vec4 local_pos13 = entry->pose->pose[p1.ind.w] * local_pos1;\n                        \n                        vec4 local_pos20 = entry->pose->pose[p2.ind.x] * local_pos2;\n                        vec4 local_pos21 = entry->pose->pose[p2.ind.y] * local_pos2;\n                        vec4 local_pos22 = entry->pose->pose[p2.ind.z] * local_pos2;\n                        vec4 local_pos23 = entry->pose->pose[p2.ind.w] * local_pos2;\n                        \n                        local_pos0 = local_pos00 * p0.wgt.x + local_pos01 * p0.wgt.y + local_pos02 * p0.wgt.z + local_pos03 * p0.wgt.w;\n                        local_pos1 = local_pos10 * p1.wgt.x + local_pos11 * p1.wgt.y + local_pos12 * p1.wgt.z + local_pos13 * p1.wgt.w;\n                        local_pos2 = local_pos20 * p2.wgt.x + local_pos21 * p2.wgt.y + local_pos22 * p2.wgt.z + local_pos23 * p2.wgt.w;\n                    }\n                    \n                    const vec4 world_pos0 = entry->matrix * local_pos0;\n                    const vec4 world_pos1 = entry->matrix * local_pos1;\n                    const vec4 world_pos2 = entry->matrix * local_pos2;\n                    \n                    vec4 pos0 = layers[0].projection_matrix * layers[0].view_matrix * world_pos0;\n                    vec4 pos1 = layers[0].projection_matrix * layers[0].view_matrix * world_pos1;\n                    vec4 pos2 = layers[0].projection_matrix * layers[0].view_matrix * world_pos2;\n                    \n                    const vec3 color = entry->color;\n                    \n                    ClipRenderLine(pos0, pos1, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                    ClipRenderLine(pos1, pos2, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                    ClipRenderLine(pos2, pos0, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(color));});\n                }\n                \n                break;\n                \n            case RT_STATIC_COLORED:\n                \n                if (!(entry->flags & FLAG_DRAW_LINES)) continue;\n                \n                for (size_t i = 0; i < entry->index_length / 2; i++) {\n                    ColorVertex& p0 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 0];\n                    ColorVertex& p1 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 1];\n                    \n                    vec4 pr0 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p0.pos, 1.0f);\n                    vec4 pr1 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p1.pos, 1.0f);\n                    \n                    ClipRenderLine(pr0, pr1, [=](uint32_t x, uint32_t y) {BlitDot(x, y, IntColor(p0.col));});\n                }\n                \n                break;\n            default:\n                break;\n        }\n    }\n\n}\n\nbool IsFinishedRendering() {\n    return is_rendering && rendering_progress > screen_height;\n}\n\nbool IsInteractiveMode() {\n    return !is_rendering;\n}\n\nvoid SetInteractiveMode(bool is_interactive) {\n    if (is_interactive) {\n        std::cout << \"Cancelling ray-trace!!\" << std::endl;\n        rendering_progress = 0;\n        is_rendering = false;\n        return;\n    }\n    \n    rendering_progress = 0;\n    is_rendering = true;\n    \n    std::cout << \"Begiinning ray-trace!\" << std::endl;\n    \n    // horrible spathetti code to render a wireframe befor estarting to raytrace\n    //is_rendering = false;\n    //RenderFrame();\n    //is_rendering = true;\n    \n    /*for (int i = 0; i < screen_width * screen_height; i++) {\n        screen_buffer[i] = 0x0000;\n    }*/\n    \n    if (use_assembly_rendering) {\n        assembly.width = screen_width;\n        assembly.height = screen_height;\n        \n        assembly.pixels.clear();\n        assembly.pixels.resize(screen_width * screen_height);\n    }\n    \n    \n    tree_triangles.clear();\n    if (tree) delete tree;\n    tree = new AABBTree;\n    \n    std::vector<std::pair<uint32_t, RTDrawListEntry*>> draw_list_sorted;\n    for (auto& entry : PoolProxy<RTDrawListEntry>::GetPool()) {\n        uint32_t sort_key = entry.layer;\n        draw_list_sorted.push_back({sort_key, &entry});\n    }\n    sort(draw_list_sorted.begin(), draw_list_sorted.end());\n    \n    uint32_t current_layer = 0;\n    for (auto [_, entry] : draw_list_sorted) {\n        if (!(entry->flags & FLAG_RENDER)) continue;\n        if (!entry->vertex_array) continue;\n\n        if (current_layer != entry->layer) {\n            // TODO: zero out zbuffer?\n        }\n        current_layer = entry->layer;\n        \n        switch (entry->vertex_array->type) {\n            case RT_STATIC_LIGHTMAPPED:\n                \n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    StaticVertex& p0 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    StaticVertex& p1 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    StaticVertex& p2 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    \n                    TreeTriangle tree_triangle;\n                    \n                    tree_triangle.p0.pos = entry->matrix * vec4(p0.pos, 1.0f);\n                    tree_triangle.p1.pos = entry->matrix * vec4(p1.pos, 1.0f);\n                    tree_triangle.p2.pos = entry->matrix * vec4(p2.pos, 1.0f);\n                    \n                    tree_triangle.p0.nrm = glm::normalize(entry->matrix * vec4(p0.nrm, 0.0f));\n                    tree_triangle.p1.nrm = glm::normalize(entry->matrix * vec4(p1.nrm, 0.0f));\n                    tree_triangle.p2.nrm = glm::normalize(entry->matrix * vec4(p2.nrm, 0.0f));\n                    \n                    tree_triangle.p0.tex = p0.tex;\n                    tree_triangle.p1.tex = p1.tex;\n                    tree_triangle.p2.tex = p2.tex;\n                    \n                    vec3 v01 = tree_triangle.p1.pos - tree_triangle.p0.pos;\n                    vec3 v02 = tree_triangle.p2.pos - tree_triangle.p0.pos;\n                    vec2 delta01 = p1.tex - p0.tex;\n                    vec2 delta02 = p2.tex - p0.tex; \n                    \n                    float f = 1.0f / (delta01.x * delta02.y - delta02.x * delta01.y);\n\n                    tree_triangle.tangent.x = f * (delta02.y * v01.x - delta01.y * v02.x);\n                    tree_triangle.tangent.y = f * (delta02.y * v01.y - delta01.y * v02.y);\n                    tree_triangle.tangent.z = f * (delta02.y * v01.z - delta01.y * v02.z);\n\n                    tree_triangle.bitangent.x = f * (-delta02.x * v01.x + delta01.x * v02.x);\n                    tree_triangle.bitangent.y = f * (-delta02.x * v01.y + delta01.x * v02.y);\n                    tree_triangle.bitangent.z = f * (-delta02.x * v01.z + delta01.x * v02.z);\n                    \n                    tree_triangle.tangent = glm::normalize(tree_triangle.tangent);\n                    tree_triangle.bitangent = glm::normalize(tree_triangle.bitangent);\n                    \n                    tree_triangle.material = entry->material;\n                    tree_triangle.color = entry->color;\n                    tree_triangle.translucent = entry->translucent;\n                    \n                    tree->InsertLeaf(tree_triangles.size(),\n                                     MergeAABBMin(MergeAABBMin(tree_triangle.p0.pos, tree_triangle.p1.pos), tree_triangle.p2.pos),\n                                     MergeAABBMax(MergeAABBMax(tree_triangle.p0.pos, tree_triangle.p1.pos), tree_triangle.p2.pos));\n                    tree_triangles.push_back(tree_triangle);\n                }\n                \n                break;\n            case RT_DYNAMIC_BLENDED:\n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    DynamicVertex& p0 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    DynamicVertex& p1 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    DynamicVertex& p2 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    vec4 local_pos0 = vec4(p0.pos, 1.0f);\n                    vec4 local_pos1 = vec4(p1.pos, 1.0f);\n                    vec4 local_pos2 = vec4(p2.pos, 1.0f);\n                    \n                    if (entry->pose) {\n                        vec4 local_pos00 = entry->pose->pose[p0.ind.x] * local_pos0;\n                        vec4 local_pos01 = entry->pose->pose[p0.ind.y] * local_pos0;\n                        vec4 local_pos02 = entry->pose->pose[p0.ind.z] * local_pos0;\n                        vec4 local_pos03 = entry->pose->pose[p0.ind.w] * local_pos0;\n                        \n                        vec4 local_pos10 = entry->pose->pose[p1.ind.x] * local_pos1;\n                        vec4 local_pos11 = entry->pose->pose[p1.ind.y] * local_pos1;\n                        vec4 local_pos12 = entry->pose->pose[p1.ind.z] * local_pos1;\n                        vec4 local_pos13 = entry->pose->pose[p1.ind.w] * local_pos1;\n                        \n                        vec4 local_pos20 = entry->pose->pose[p2.ind.x] * local_pos2;\n                        vec4 local_pos21 = entry->pose->pose[p2.ind.y] * local_pos2;\n                        vec4 local_pos22 = entry->pose->pose[p2.ind.z] * local_pos2;\n                        vec4 local_pos23 = entry->pose->pose[p2.ind.w] * local_pos2;\n                        \n                        local_pos0 = local_pos00 * p0.wgt.x + local_pos01 * p0.wgt.y + local_pos02 * p0.wgt.z + local_pos03 * p0.wgt.w;\n                        local_pos1 = local_pos10 * p1.wgt.x + local_pos11 * p1.wgt.y + local_pos12 * p1.wgt.z + local_pos13 * p1.wgt.w;\n                        local_pos2 = local_pos20 * p2.wgt.x + local_pos21 * p2.wgt.y + local_pos22 * p2.wgt.z + local_pos23 * p2.wgt.w;\n                    }\n                    \n                    const vec4 world_pos0 = entry->matrix * local_pos0;\n                    const vec4 world_pos1 = entry->matrix * local_pos1;\n                    const vec4 world_pos2 = entry->matrix * local_pos2;\n                    \n                    vec4 local_nrm0 = vec4(p0.nrm, 0.0f);\n                    vec4 local_nrm1 = vec4(p1.nrm, 0.0f);\n                    vec4 local_nrm2 = vec4(p2.nrm, 0.0f);\n                    \n                    if (entry->pose) {\n                        vec4 local_nrm00 = entry->pose->pose[p0.ind.x] * local_nrm0;\n                        vec4 local_nrm01 = entry->pose->pose[p0.ind.y] * local_nrm0;\n                        vec4 local_nrm02 = entry->pose->pose[p0.ind.z] * local_nrm0;\n                        vec4 local_nrm03 = entry->pose->pose[p0.ind.w] * local_nrm0;\n                        \n                        vec4 local_nrm10 = entry->pose->pose[p1.ind.x] * local_nrm1;\n                        vec4 local_nrm11 = entry->pose->pose[p1.ind.y] * local_nrm1;\n                        vec4 local_nrm12 = entry->pose->pose[p1.ind.z] * local_nrm1;\n                        vec4 local_nrm13 = entry->pose->pose[p1.ind.w] * local_nrm1;\n                        \n                        vec4 local_nrm20 = entry->pose->pose[p2.ind.x] * local_nrm2;\n                        vec4 local_nrm21 = entry->pose->pose[p2.ind.y] * local_nrm2;\n                        vec4 local_nrm22 = entry->pose->pose[p2.ind.z] * local_nrm2;\n                        vec4 local_nrm23 = entry->pose->pose[p2.ind.w] * local_nrm2;\n                        \n                        local_nrm0 = local_nrm00 * p0.wgt.x + local_nrm01 * p0.wgt.y + local_nrm02 * p0.wgt.z + local_nrm03 * p0.wgt.w;\n                        local_nrm1 = local_nrm10 * p1.wgt.x + local_nrm11 * p1.wgt.y + local_nrm12 * p1.wgt.z + local_nrm13 * p1.wgt.w;\n                        local_nrm2 = local_nrm20 * p2.wgt.x + local_nrm21 * p2.wgt.y + local_nrm22 * p2.wgt.z + local_nrm23 * p2.wgt.w;\n                    }\n\n                    TreeTriangle tree_triangle;\n                    \n                    tree_triangle.p0.pos = world_pos0 / world_pos0.w;\n                    tree_triangle.p1.pos = world_pos1 / world_pos1.w;\n                    tree_triangle.p2.pos = world_pos2 / world_pos2.w;\n                    \n                    tree_triangle.p0.nrm = glm::normalize(vec3(entry->matrix * local_nrm0));\n                    tree_triangle.p1.nrm = glm::normalize(vec3(entry->matrix * local_nrm1));\n                    tree_triangle.p2.nrm = glm::normalize(vec3(entry->matrix * local_nrm2));\n                    \n                    tree_triangle.p0.tex = p0.tex;\n                    tree_triangle.p1.tex = p1.tex;\n                    tree_triangle.p2.tex = p2.tex;\n                    \n                    vec3 v01 = tree_triangle.p1.pos - tree_triangle.p0.pos;\n                    vec3 v02 = tree_triangle.p2.pos - tree_triangle.p0.pos;\n                    vec2 delta01 = p1.tex - p0.tex;\n                    vec2 delta02 = p2.tex - p0.tex; \n                    \n                    float f = 1.0f / (delta01.x * delta02.y - delta02.x * delta01.y);\n\n                    tree_triangle.tangent.x = f * (delta02.y * v01.x - delta01.y * v02.x);\n                    tree_triangle.tangent.y = f * (delta02.y * v01.y - delta01.y * v02.y);\n                    tree_triangle.tangent.z = f * (delta02.y * v01.z - delta01.y * v02.z);\n\n                    tree_triangle.bitangent.x = f * (-delta02.x * v01.x + delta01.x * v02.x);\n                    tree_triangle.bitangent.y = f * (-delta02.x * v01.y + delta01.x * v02.y);\n                    tree_triangle.bitangent.z = f * (-delta02.x * v01.z + delta01.x * v02.z);\n                    \n                    tree_triangle.tangent = glm::normalize(tree_triangle.tangent);\n                    tree_triangle.bitangent = glm::normalize(tree_triangle.bitangent);\n                    \n                    tree_triangle.material = entry->material;\n                    tree_triangle.color = entry->color;\n                    tree_triangle.translucent = entry->translucent;\n                    \n                    tree->InsertLeaf(tree_triangles.size(),\n                                     MergeAABBMin(MergeAABBMin(tree_triangle.p0.pos, tree_triangle.p1.pos), tree_triangle.p2.pos),\n                                     MergeAABBMax(MergeAABBMax(tree_triangle.p0.pos, tree_triangle.p1.pos), tree_triangle.p2.pos));\n                    tree_triangles.push_back(tree_triangle);\n                }\n                \n                break;\n                \n            case RT_STATIC_COLORED:\n                \n                /*if (!(entry->flags & FLAG_DRAW_LINES)) continue;\n                \n                for (size_t i = 0; i < entry->index_length / 2; i++) {\n                    ColorVertex& p0 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 0];\n                    ColorVertex& p1 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 1];\n                    \n                    vec4 pr0 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p0.pos, 1.0f);\n                    vec4 pr1 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p1.pos, 1.0f);\n                    \n                    ClipRenderLine(pr0, pr1, IntColor(p0.col));\n                }*/\n                \n                break;\n            default:\n                break;\n        }\n    }\n\n}\n\nvoid SetMaterialAssemblyIndex(material_t material, int index) {\n    \n    // TODO: make the -1 index reset the material\n    // TODO: prevent duplicates, i.e. two textures with the same index\n    \n    material.rt->texture->assembly_index = index;\n    texture_indices[index] = material.rt->texture;\n    assembly.textures.push_back({index, material.rt->texture->width, material.rt->texture->height});\n}\n\nvoid SetUseAssembly(bool use) {\n    use_assembly_rendering = use;\n}\n\nAssemblyLayers GetAssemblyLayers() {\n    return assembly;\n}\n\nvoid SetViewMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].view_matrix = matrix;\n    layers[layer].view_position = glm::inverse(matrix) * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n}\n\nvoid SetProjectionMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].projection_matrix = matrix;\n}\n\nvoid GetScreen(char* buffer, int w, int h) {\n    for (int y = 0; y < screen_height; y++) {\n        for (int x = 0; x < screen_width; x++) {\n            uint16_t color = screen_buffer[y * screen_width + x];\n            \n            uint8_t r = 0xFF & ((color >> 11) << 3);\n            uint8_t g = 0xFF & ((color >> 5) << 2);\n            uint8_t b = 0xFF & (color << 3); \n            \n            int offset = 3 * ((h - y - 1) * w + x);\n            \n            buffer[offset + 0] = r;\n            buffer[offset + 1] = g;\n            buffer[offset + 2] = b;\n        }\n    }\n}\n\nbool IsDebugMode() {\n    return false;\n}\n\nvoid SetDebugMode(bool) {\n    \n}\n\nvoid Init() {\n    // initialize the default pose\n    /*BLANK_POSE = PoolProxy<Render::Pose>::New();\n    for (size_t i = 0; i < BONE_COUNT; i++) {\n        BLANK_POSE->pose[i] = mat4(1.0f);\n    }*/\n    \n    null_pose = PoolProxy<Render::Pose>::New();\n    for (size_t i = 0; i < BONE_COUNT; i++) {\n        null_pose->pose[i] = mat4(1.0f);\n    }\n}\n\nContextType GetContext() {\n    return CONTEXT_SOFTWARE;\n}\n\nuint32_t GetMaxIndexRangeLength() {\n    return 1;\n}\n\nvoid SetDevice(void* buffer) {\n    screen_buffer = (uint16_t*)buffer;\n}\n\n}\n"
  },
  {
    "path": "src/render/raytrace/raytrace.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_RAYTRACE_H\n#define TRAM_SDK_RENDER_RAYTRACE_RAYTRACE_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct AssemblyLayer {\n    vec4 diffuse;\n    int texture;\n    int sample_x;\n    int sample_y;\n    float sublayer_opacity;\n    vec4 specular;\n};\n\nstruct AssemblyTexture {\n    int index;\n    int width;\n    int height;\n};\n\nstruct AssemblyLayers {\n    int width, height;\n    std::vector<AssemblyTexture> textures;\n    std::vector<std::vector<AssemblyLayer>> pixels;\n};\n\nvoid SetMaterialAssemblyIndex(material_t material, int index);\nvoid SetUseAssembly(bool);\nAssemblyLayers GetAssemblyLayers();\n\nbool IsFinishedRendering();\n\n\n}\n\n#endif // TRAM_SDK_RENDER_RAYTRACE_RAYTRACE_H"
  },
  {
    "path": "src/render/raytrace/sprite.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/raytrace/sprite.h>\n\nnamespace tram::Render::API {\n\nspritearray_t CreateSpriteArray() {\n    return spritearray_t {.generic = nullptr};\n}\n\nvoid UpdateSpriteArray(spritearray_t array, size_t data_size, void* data) {\n    \n}\n\n}"
  },
  {
    "path": "src/render/raytrace/sprite.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RAYTRACE_SPRITE_H\n#define TRAM_SDK_RENDER_RAYTRACE_SPRITE_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n    \n}\n\n#endif //TRAM_SDK_RENDER_RAYTRACE_SPRITE_H"
  },
  {
    "path": "src/render/render.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <framework/core.h>\n#include <framework/system.h>\n#include <framework/stats.h>\n#include <render/render.h>\n#include <render/renderer.h>\n#include <render/vertices.h>\n#include <components/render.h>\n#include <components/sprite.h>\n#include <components/particle.h>\n\n#include <render/api.h>\n\n#include <config.h>\n\n#include <cstring>\n\n/**\n * @namespace tram::Render\n * \n * High-level Render system API.\n */\n\nusing namespace tram;\nusing namespace tram::Render;\n\nnamespace tram::Render {\n\nstruct {\n    vec3 view_position = {0.0f, 0.0f, 0.0f};\n    quat view_rotation = {1.0f, 0.0f, 0.0f, 0.0f};\n    float view_fov = 60.0f;\n    float near_plane = 0.01f;\n    float far_plane = 750.0f;\n    float ortho_ratio = 1.0f;\n    \n    vec3 sun_direction = {0.0f, 1.0f, 0.0f};\n    vec3 sun_color = {1.0f, 1.0f, 1.0f};\n    vec3 ambient_color = {0.0f, 0.0f, 0.0f};\n    \n    float fog_near = INFINITY;\n    float fog_far = INFINITY;\n    vec3 fog_color = {0.0f, 0.0f, 0.0f};\n    \n    mat4 projection = mat4(1.0f);\n    mat4 view = mat4(1.0f);\n} view_properties[7];\n\nstatic float screen_width = 800.0f;\nstatic float screen_height = 600.0f;\n\nbool THIRD_PERSON = false;\nbool DRAW_RENDER_DEBUG = false;\n\n// TODO: make these static???\n\nvertexarray_t colorlines_vertex_array = {};\ndrawlistentry_t colorlines_entry;\n\nvertexarray_t debugtext_vertex_array = {};\ndrawlistentry_t debugtext_entry;\nSprite* font_debug = nullptr;\n\nstd::vector<LineVertex> colorlines;\nstd::vector<SpriteVertex> textvertices;\n\nusing namespace API;\n\nstatic void update_view(layer_t layer) {\n    const vec3 pos = view_properties[layer].view_position;\n    const quat rot = view_properties[layer].view_rotation;\n    \n    view_properties[layer].view = glm::inverse(glm::translate(mat4(1.0f), pos) * glm::toMat4(rot));\n    \n    API::SetViewMatrix(view_properties[layer].view, layer);\n}\n\nstatic void update_projection(layer_t layer) {\n    const float fov = view_properties[layer].view_fov;\n    const float ratio = screen_width / screen_height;\n    \n    mat4 matrix;\n    if (fov == 0.0f) {\n        matrix = glm::ortho((-ratio) / view_properties[layer].ortho_ratio,\n                            (+ratio) / view_properties[layer].ortho_ratio,\n                            (-(1.0f/ratio)) / view_properties[layer].ortho_ratio,\n                            (+(1.0f/ratio)) / view_properties[layer].ortho_ratio,\n                            //view_properties[layer].near_plane,\n                            -view_properties[layer].far_plane,\n                            view_properties[layer].far_plane);\n    } else {\n        matrix = glm::perspective(glm::radians(view_properties[layer].view_fov), ratio, view_properties[layer].near_plane, view_properties[layer].far_plane);\n    }\n    \n    view_properties[layer].projection = matrix;\n    API::SetProjectionMatrix(matrix, layer);\n}\n\nstatic void update_light(layer_t layer) {\n    API::SetLightingParameters(view_properties[layer].sun_direction, \n                               view_properties[layer].sun_color, \n                               view_properties[layer].ambient_color, \n                               layer);\n}\n\nstatic void update_fog(layer_t layer) {\n    API::SetFogParameters(view_properties[layer].fog_color, \n                          view_properties[layer].fog_near, \n                          view_properties[layer].fog_far, \n                          layer);\n}\n\n/// Initializes the rendering system.\n/// @note Core and UI systems need to be initialized before initializing the render system.\nvoid Init () {\n    assert(System::IsInitialized(System::CORE));\n    assert(System::IsInitialized(System::UI));\n    \n    API::Init();\n    \n    // this will initialize the projection matrices\n    Render::SetScreenSize(screen_width, screen_height);\n    \n    // this is for rendering lines\n    CreateVertexArray (GetVertexDefinition(VERTEX_LINE), colorlines_vertex_array);\n    colorlines_entry = InsertDrawListEntry ();\n    SetDrawListVertexArray(colorlines_entry, colorlines_vertex_array);\n    SetDrawListShader(colorlines_entry, VERTEX_LINE, MATERIAL_FLAT_COLOR);\n    SetFlags(colorlines_entry, FLAG_RENDER /*| FLAG_NO_DEPTH_TEST*/ | FLAG_DRAW_LINES | FLAG_DISABLE_LIGHTING);\n    SetLayer(colorlines_entry, LAYER_DEBUG);\n    \n    // generating fullbright lightmap\n    Material* fullbright = Material::Make(\"fullbright\", MATERIAL_LIGHTMAP);\n    fullbright->MakePattern({1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f});\n    fullbright->LoadFromMemory();\n    \n    // generating fulldark environmentmap\n    Material* fulldark = Material::Make(\"fulldark\", MATERIAL_LIGHTMAP);\n    fulldark->MakePattern({1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 1.0f});\n    fulldark->LoadFromMemory();\n    \n    // generating default texture\n    Material* defaulttexture = Material::Make(\"defaulttexture\", MATERIAL_TEXTURE);\n    defaulttexture->MakePattern({0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 1.0f});\n    defaulttexture->LoadFromMemory();\n    \n    // this is for rendering debug text\n    Material::Make(UID(\"ui/font_debug\"), MATERIAL_GLYPH)->Load();\n    font_debug = Sprite::Find(UID(\"font_debug\"));\n    font_debug->AddReference();\n    font_debug->Load();\n    \n    CreateVertexArray(GetVertexDefinition(VERTEX_SPRITE), debugtext_vertex_array);\n    debugtext_entry = InsertDrawListEntry();\n    SetDrawListVertexArray(debugtext_entry, debugtext_vertex_array);\n    SetDrawListShader(debugtext_entry, VERTEX_SPRITE, MATERIAL_GLYPH);\n    SetFlags(debugtext_entry, FLAG_RENDER /*| FLAG_NO_DEPTH_TEST*/);\n    SetLayer(debugtext_entry, LAYER_GUI);\n    \n    material_t debugtext_texture = font_debug->GetMaterial()->GetMaterial();\n    SetDrawListMaterials(debugtext_entry, 1, &debugtext_texture);\n    \n    System::SetInitialized(System::RENDER, true);\n}\n\n/// Renders a single frame.\nvoid Render () {\n    Stats::Start(System::RENDER);\n#ifndef ENGINE_EDITOR_MODE\n    // idk if these need to be here -> after all, the armatures aren't updated in here?\n    for (auto& it : PoolProxy<SpriteComponent>::GetPool()) it.Update();\n    for (auto& it : PoolProxy<ParticleComponent>::GetPool()) it.Update();\n#endif // ENGINE_EDITOR_MODE\n    \n    // upload debug lines\n    UpdateVertexArray(colorlines_vertex_array, colorlines.size() * sizeof(LineVertex), colorlines.data());\n    SetDrawListVertexArray(colorlines_entry, colorlines_vertex_array);\n    SetDrawListIndexRange(colorlines_entry, 0, colorlines.size());\n    colorlines.clear();\n    \n    // upload debug texts\n    UpdateVertexArray(debugtext_vertex_array, textvertices.size() * sizeof(SpriteVertex), textvertices.data());\n    SetDrawListIndexRange(debugtext_entry, 0, textvertices.size());\n    textvertices.clear();\n    \n    RenderFrame();\n    Stats::Stop(System::RENDER);\n}\n\n/// Sets the sun direction.\n/// @param direction    Normal vector pointing towards the sun.\n/// @param layer        Rendering layer to which the sun direction will be applied.\nvoid SetSunDirection (color_t direction, layer_t layer) {\n    view_properties[layer].sun_direction = direction;\n    update_light(layer);\n}\n\n/// Sets the sun color.\n/// @param color    Color of the sun.\n/// @param layer    Rendering layer to which the sun color will be applied.\nvoid SetSunColor (color_t color, layer_t layer) {\n    view_properties[layer].sun_color = color;\n    update_light(layer);\n}\n\n/// Sets the ambient color.\n/// @param color    Ambient color.\n/// @param layer    Rendering layer to which the ambient color will be applied.\nvoid SetAmbientColor (color_t color, layer_t layer) {\n    view_properties[layer].ambient_color = color;\n    update_light(layer);\n}\n\nvoid SetFogDistance(float near, float far, layer_t layer) {\n    view_properties[layer].fog_near = near;\n    view_properties[layer].fog_far = far;\n    update_fog(layer);\n}\n\nvoid SetFogColor(vec3 color, layer_t layer) {\n    view_properties[layer].fog_color = color;\n    update_fog(layer);\n}\n\nvoid SetScreenSize(float width, float height) {\n    screen_width = width;\n    screen_height = height;\n    \n    for (int i = 0; i < 7; i++) {\n        update_projection(i);\n    }\n    \n    API::SetScreenSize(width, height);\n}\n\nvoid SetViewFov(float fov, layer_t layer) {\n    view_properties[layer].view_fov = fov;\n    update_projection(layer);\n}\n\nfloat GetViewFov(layer_t layer) {\n    return view_properties[layer].view_fov;\n}\n\nvoid SetOrthoRatio(float ratio, layer_t layer) {\n    view_properties[layer].ortho_ratio = ratio;\n    update_projection(layer);\n}\n\nvoid SetViewDistance(float dist, layer_t layer) {\n    view_properties[layer].far_plane = dist;\n    update_projection(layer);\n}\nfloat GetViewDistance(layer_t layer) {\n    return view_properties[layer].far_plane;\n}\n\n\n\n/// Sets the view position.\n/// @param position View position.\n/// @param layer    Rendering layer to which the view position will be applied.\nvoid SetViewPosition (vec3 position, layer_t layer) {\n    view_properties[layer].view_position = position;\n    update_view(layer);\n}\n\n/// Sets the view rotation.\n/// @param rotation View rotation.\n/// @param layer    Rendering layer to which the view rotation will be applied.\nvoid SetViewRotation (quat rotation, layer_t layer) {\n    view_properties[layer].view_rotation = rotation;\n    update_view(layer);\n}\n\n/// Returns the view position for a given layer.\nvec3 GetViewPosition (layer_t layer) {\n    return view_properties[layer].view_position;\n}\n\n/// Returns the view rotation for a given layer.\nquat GetViewRotation (layer_t layer) {\n    return view_properties[layer].view_rotation;\n}\n\n/// Draws a line for a single frame.\nvoid AddLine(vec3 from, vec3 to, vec3 color) {\n    colorlines.push_back({from, color});\n    colorlines.push_back({to, color});\n}\n\n/// Draws a cross marker for a single frame.\nvoid AddLineMarker(vec3 location, vec3 color) {\n    AddLine(location + vec3(-1.0f, 0.0f, 0.0f), location + vec3(1.0f, 0.0f, 0.0f), color);\n    AddLine(location + vec3(0.0f, -1.0f, 0.0f), location + vec3(0.0f, 1.0f, 0.0f), color);\n    AddLine(location + vec3(0.0f, 0.0f, -1.0f), location + vec3(0.0f, 0.0f, 1.0f), color);\n}\n\n/// Draws an AABB box for a single frame.\nvoid AddLineAABB(vec3 min, vec3 max, vec3 center, quat rotation, vec3 color) {\n    vec3 point1 = center + (rotation * vec3 {min.x, min.y, min.z});\n    vec3 point2 = center + (rotation * vec3 {max.x, max.y, max.z});\n    vec3 point3 = center + (rotation * vec3 {min.x, max.y, max.z});\n    vec3 point4 = center + (rotation * vec3 {max.x, min.y, max.z});\n    vec3 point5 = center + (rotation * vec3 {max.x, max.y, min.z});\n    vec3 point6 = center + (rotation * vec3 {max.x, min.y, min.z});\n    vec3 point7 = center + (rotation * vec3 {min.x, max.y, min.z});\n    vec3 point8 = center + (rotation * vec3 {min.x, min.y, max.z});\n    \n    AddLine(point1, point6, color);\n    AddLine(point1, point7, color);\n    AddLine(point1, point8, color);\n    \n    AddLine(point2, point3, color);\n    AddLine(point2, point4, color);\n    AddLine(point2, point5, color);\n    \n    AddLine(point3, point7, color);\n    AddLine(point3, point8, color);\n    \n    AddLine(point4, point6, color);\n    AddLine(point4, point8, color);\n    \n    AddLine(point5, point6, color);\n    AddLine(point5, point7, color);\n}\n\nstatic const int SPHERE_HEIGHT = 8;\nstatic const int SPHERE_WIDTH = 8;\nstatic constexpr float pi = 3.14159f;\n\nstatic constexpr vec3 sphere_p(int h, int w) {\n    float x = sin(pi * h/SPHERE_HEIGHT) * cos(2*pi * w/SPHERE_WIDTH);\n    float y = sin(pi * h/SPHERE_HEIGHT) * sin(2*pi * w/SPHERE_WIDTH);\n    float z = cos(pi * h/SPHERE_HEIGHT);\n    \n    return {x, z, y};\n}\n\n/// Draws a sphere for a single frame.\nvoid AddSphere(vec3 pos, float radius, color_t color) {\n    for (int i = 0; i < SPHERE_HEIGHT; i++) {\n        for (int j = 0; j < SPHERE_WIDTH; j++) {\n            AddLine(pos + (sphere_p(i, j) * radius), pos + (sphere_p(i+1, j+1) * radius), color);\n        }\n    }\n}\n\n/// Draws a cylinder for a single frame.\n/// @note Not implmented.\nvoid AddCylinder(vec3 pos, float height, float radius, color_t color) {\n    // TODO: implement\n}\n\n/// Draws a cube for a single frame.\n/// @note Not implmented.\nvoid AddCube(vec3 pos, float height, float radius, color_t color) {\n    // TODO: implement\n}\n\n/// Draws text, in 3D space, for a single frame.\nvoid AddText(vec3 pos, const char* text, color_t color) {\n    Project(pos, pos);\n    if (pos.z > 1.0f) return;\n    \n    uint16_t w = 0;\n    uint16_t h = 16;\n    \n    uint16_t line = 0;\n    for (const char* c = text; *c != '\\0'; c++) {\n        if (*c=='\\n') {\n            h += 16;\n            if (line > w) w = line;\n            line = 0;\n        } else {\n            //line += 16;\n            line += font_debug->GetFrames()[*c].width;\n        }\n    }\n    \n    AddText(pos.x - w / 2.0f, pos.y - h / 2.0f, text, color);\n}\n\n/// Draws text, on the screen, for a single frame.\nvoid AddText(float x, float y, const char* text, color_t color) {\n    float cur_x = x;\n    float cur_y = y;\n    \n    for (const char* c = text; *c != '\\0'; c++) {\n        if (*c=='\\n'){ cur_y += 16.0f;\n            cur_x = x;\n            continue;}\n            \n        const auto& info = font_debug->GetFrames()[*c];\n        \n        float x = cur_x;\n        float y = cur_y;\n        float w = info.width;\n        float h = info.height;\n        float tex_x = info.offset_x;\n        float tex_y = info.offset_y;\n        float tex_w = info.width;\n        float tex_h = info.height;\n        \n        SpriteVertex tleft;\n        SpriteVertex tright;\n        SpriteVertex bleft;\n        SpriteVertex bright;\n\n        tleft.co.x = x;\n        tleft.co.y = y;\n        tleft.co.z = 1;\n        tleft.texco.x = tex_x;\n        tleft.texco.y = tex_y;\n        \n        tright.co.x = x + w;\n        tright.co.y = y;\n        tright.co.z = 1;\n        tright.texco.x = tex_x + tex_w;\n        tright.texco.y = tex_y;\n        \n        bleft.co.x = x;\n        bleft.co.y = y + h;\n        bleft.co.z = 1;\n        bleft.texco.x = tex_x;\n        bleft.texco.y = tex_y + tex_h;\n        \n        bright.co.x = x + w;\n        bright.co.y = y + h;\n        bright.co.z = 1;\n        bright.texco.x = tex_x + tex_w;\n        bright.texco.y = tex_y + tex_h;\n        \n        tleft.color = color;\n        tleft.texture = 0;\n        tright.color = color;\n        tright.texture = 0;\n        bleft.color = color;\n        bleft.texture = 0;\n        bright.color = color;\n        bright.texture = 0;\n\n        textvertices.push_back(bleft);\n        textvertices.push_back(bright);\n        textvertices.push_back(tleft);\n        textvertices.push_back(bright);\n        textvertices.push_back(tright);\n        textvertices.push_back(tleft);\n        \n        //DrawGlyph(font, (unsigned char)*c, cursor_x, cursor_y);\n        \n        \n        //cursor_x += GlyphWidth(font, (unsigned char)*c);]\n        cur_x += info.width;\n    }\n}\n\n/// Projects a point into screen coordinates.\nvoid Project(const vec3& point, vec3& result, layer_t layer) {\n    result = glm::project(point, \n                          view_properties[layer].view, \n                          view_properties[layer].projection,\n                          vec4(0.0f, 0.0f, screen_width, screen_height));\n    result.y = screen_height - result.y;\n}\n\n/// Reverses screen coordinates into world coordinates.\nvec3 ProjectInverse(vec3 point, layer_t layer) {\n    point.y =  screen_height - point.y;\n    vec3 result = glm::unProject(point,\n                                 view_properties[layer].view,\n                                 view_properties[layer].projection,\n                                 vec4(0.0f, 0.0f, screen_width, screen_height));\n    return result;\n}\n\nstatic uint32_t last_material_type = MATERIAL_LAST;\nstatic uint32_t last_vertex_format = MATERIAL_LAST;\n\nstatic const char* vertex_format_names[MAX_VERTEX_FORMATS] = {\n    \"VERTEX_STATIC\",\n    \"VERTEX_DYNAMIC\",\n    \"VERTEX_SPRITE\",\n    \"VERTEX_LINE\"\n};\n\nstatic const char* material_type_names[MAX_MATERIAL_TYPES] = {\n    \"MATERIAL_TEXTURE\",\n    \"MATERIAL_TEXTURE_ALPHA\",\n    \"MATERIAL_TEXTURE_BLEND\",\n    \"MATERIAL_LIGHTMAP\",\n    \"MATERIAL_ENVIRONMENTMAP\",\n    \"MATERIAL_MSDF\",\n    \"MATERIAL_GLYPH\",\n    \"MATERIAL_WATER\",\n    \"MATERIAL_FLAT_COLOR\"\n};\n\n/// Allocates a new vertex format.\nvertexformat_t RegisterVertexFormat(const char* name) {\n    assert(last_vertex_format < MAX_MATERIAL_TYPES);\n    \n    vertex_format_names[last_vertex_format] = name;\n    \n    return last_vertex_format++;\n}\n\n/// Allocates a new material type. \nmaterialtype_t RegisterMaterialType(const char* name) {\n    assert(last_material_type < MAX_MATERIAL_TYPES);\n    \n    material_type_names[last_material_type] = name;\n    \n    return last_material_type++;\n}\n\n/// Finds an already allocated vertex format by its name.\nvertexformat_t FindVertexFormat(const char* name) {\n    for (uint32_t i = 0; i < last_vertex_format; i++) {\n        if (strcmp(vertex_format_names[i], name) == 0) return i;\n    }\n    \n    return -1;\n}\n\n/// Finds an already material type format by its name.\nmaterialtype_t FindMaterialType(const char* name) {\n    for (uint32_t i = 0; i < last_material_type; i++) {\n        if (strcmp(material_type_names[i], name) == 0) return i;\n    }\n    \n    return -1;\n}\n\n/// Finds an allocated vertex format's name.\nconst char* GetVertexFormatName(vertexformat_t type) {\n    assert(type < MAX_VERTEX_FORMATS);\n    \n    return vertex_format_names[type];\n}\n\n/// Finds an allocated material type's name.\nconst char* GetMaterialTypeName(materialtype_t type) {\n    assert(type < MAX_MATERIAL_TYPES);\n    \n    return material_type_names[type];\n}\n\n\n}"
  },
  {
    "path": "src/render/render.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_H\n#define TRAM_SDK_RENDER_H\n\n#include <vector>\n\n#include <render/animation.h>\n\nstruct IDirect3DVertexBuffer9;\nstruct IDirect3DIndexBuffer9;\nstruct IDirect3DTexture9;\n\nnamespace tram::Render {\n\ntypedef vec3 color_t;\ntypedef uint32_t layer_t;\n\ntypedef uint32_t vertexformat_t;\ntypedef uint32_t materialtype_t;\n\nvoid Init();\nvoid Render();\n\nvoid Project(const vec3& point, vec3& result, layer_t layer = 0);\nvec3 ProjectInverse(vec3 point, layer_t layer = 0);\n\nvoid SetSunDirection(vec3 direction, layer_t layer = 0);\nvoid SetSunColor(color_t color, layer_t layer = 0);\nvoid SetAmbientColor(color_t color, layer_t layer = 0);\n\nvoid SetFogDistance(float near, float far, layer_t layer = 0);\nvoid SetFogColor(vec3 color, layer_t layer = 0);\n\nvoid SetScreenSize(float width, float height);\n\nvoid SetOrthoRatio(float ratio, layer_t layer = 0);\n\nvoid SetViewFov(float fov, layer_t layer = 0);\nfloat GetViewFov(layer_t layer = 0);\n\nvoid SetViewDistance(float dist, layer_t layer = 0);\nfloat GetViewDistance(layer_t layer = 0);\n\nvoid SetViewPosition(vec3 position, layer_t layer = 0);\nvoid SetViewRotation(quat rotation, layer_t layer = 0);\n\nvec3 GetViewPosition(layer_t layer = 0);\nquat GetViewRotation(layer_t layer = 0);\n\nconst color_t COLOR_WHITE  (1.0f, 1.0f, 1.0f);\nconst color_t COLOR_RED    (1.0f, 0.0f, 0.0f);\nconst color_t COLOR_GREEN  (0.0f, 1.0f, 0.0f);\nconst color_t COLOR_BLUE   (0.0f, 0.0f, 1.0f);\nconst color_t COLOR_YELLOW (1.0f, 1.0f, 0.0f);\nconst color_t COLOR_PINK   (1.0f, 0.0f, 1.0f);\nconst color_t COLOR_CYAN   (0.0f, 1.0f, 1.0f);\nconst color_t COLOR_BLACK  (0.0f, 0.0f, 0.0f);\nconst color_t COLOR_GRAY   (0.3f, 0.3f, 0.3f);\n\nvoid AddLine(vec3 from, vec3 to, color_t color);\nvoid AddLineMarker(vec3 location, color_t color);\nvoid AddLineAABB(vec3 min, vec3 max, vec3 center, quat rotation, vec3 color);\nvoid AddSphere(vec3 pos, float radius, color_t color);\nvoid AddCylinder(vec3 pos, float height, float radius, color_t color);\nvoid AddCube(vec3 pos, float height, float radius, color_t color);\nvoid AddText(vec3 pos, const char* text, color_t color = COLOR_WHITE);\nvoid AddText(float x, float y, const char* text, color_t color = COLOR_WHITE);\n\nenum VertexFormats : vertexformat_t {\n    VERTEX_STATIC,\n    VERTEX_DYNAMIC,\n    VERTEX_SPRITE,\n    VERTEX_LINE,\n    VERTEX_LAST\n};\n\nenum MaterialTypes : materialtype_t {\n    MATERIAL_TEXTURE,\n    MATERIAL_TEXTURE_ALPHA,\n    MATERIAL_TEXTURE_BLEND,\n    MATERIAL_LIGHTMAP,\n    MATERIAL_ENVIRONMENTMAP,\n    MATERIAL_MSDF,\n    MATERIAL_GLYPH,\n    MATERIAL_WATER,\n    MATERIAL_FLAT_COLOR,\n    MATERIAL_LAST\n};\n\nenum MaterialFilter {\n    FILTER_NEAREST,\n    FILTER_LINEAR\n};\n\nstruct SphericalHarmonic {\n    vec3 l00, l1m1, l10, l11, l2m2, l2m1, l20, l21, l22;\n};\n\nstruct AABBTriangle {\n    vec3 point1, point2, point3;\n    vec3 normal;\n    uint32_t material;\n};\n\ntypedef SphericalHarmonic sphericalharmonic_t;\n\nvertexformat_t RegisterVertexFormat(const char* name);\nmaterialtype_t RegisterMaterialType(const char* name);\n\nvertexformat_t FindVertexFormat(const char* name);\nmaterialtype_t FindMaterialType(const char* name);\n\nconst char* GetVertexFormatName(vertexformat_t type);\nconst char* GetMaterialTypeName(materialtype_t type);\n\nnamespace API { struct SWVertexArray; }\nnamespace API { struct RTVertexArray; }\n\nstruct vertexarray_t {\n    union {\n        struct {\n            uint32_t gl_vertex_array;\n            uint32_t gl_vertex_buffer;\n        };\n        struct {\n            IDirect3DVertexBuffer9* d3d_vertex_buffer;\n            uint32_t d3d_metadata;\n        };\n        API::SWVertexArray* sw_vertex_array;\n        API::RTVertexArray* rt_vertex_array;\n        void* generic;\n    };\n};\n\nnamespace API { struct SWIndexArray; }\nnamespace API { struct RTIndexArray; }\n\nstruct indexarray_t {\n    union {\n        uint32_t gl_index_buffer;\n        IDirect3DIndexBuffer9* d3d_index_buffer;\n        API::SWIndexArray* sw_index_array;\n        API::RTIndexArray* rt_index_array;\n        void* generic;\n    };\n};\n\nstruct spritearray_t {\n    union {\n        vertexarray_t vertex_array;\n        void* generic;\n    };\n    \n    // TODO: add whatever you need for the D3D renderer\n    // TODO: also add everything for the SW renderer\n};\n\nnamespace API { struct GLDrawListEntry; }\nnamespace API { struct D3DDrawListEntry; }\nnamespace API { struct SWDrawListEntry; }\nnamespace API { struct RTDrawListEntry; }\n\nstruct drawlistentry_t {\n    union {\n        API::GLDrawListEntry* gl;\n        API::D3DDrawListEntry* d3d;\n        API::SWDrawListEntry* sw;\n        API::RTDrawListEntry* rt;\n        void* generic;\n    };\n};\n\nnamespace API { struct SWTexture; }\nnamespace API { struct RTTexture; }\n\nstruct texturehandle_t {\n    union {\n        uint32_t gl_texture_handle;\n        IDirect3DTexture9* d3d_texture_handle;\n        API::SWTexture* sw_texture;\n        API::RTTexture* rt_texture;\n        void* generic;\n    };\n};\n\nnamespace API { struct GLLight; }\nnamespace API { struct D3DLight; }\nnamespace API { struct SWLight; }\nnamespace API { struct RTLight; }\n\nstruct light_t {\n    union {\n        API::GLLight* gl;\n        API::D3DLight* d3d;\n        API::SWLight* sw;\n        API::RTLight* rt;\n        void* generic;\n    };\n};\n\nnamespace API { struct GLMaterial; }\nnamespace API { struct D3DMaterial; }\nnamespace API { struct SWMaterial; }\nnamespace API { struct RTMaterial; }\n\nstruct material_t {\n    union {\n        API::GLMaterial* gl;\n        API::D3DMaterial* d3d;\n        API::SWMaterial* sw;\n        API::RTMaterial* rt;\n        void* generic;\n    };\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_H\n"
  },
  {
    "path": "src/render/renderer.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/renderer.h>\n\n#include <render/vertices.h>\n\n#include <framework/logging.h>\n\n/*\n * PROBLEM: vertex attribute stride/offset might be difficult to understand for\n *          non-graphics programmers\n * \n * We should introduce a new function that registers vertex definitions based\n * off of an array of type enum values.\n * \n*/\n\nnamespace tram::Render {\n\nconst static VertexAttribute vertex_static_definition[5] = {\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_POSITION,    3, sizeof(StaticModelVertex), offsetof(StaticModelVertex, co)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_NORMAL,      3, sizeof(StaticModelVertex), offsetof(StaticModelVertex, normal)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_TEXTURE,     2, sizeof(StaticModelVertex), offsetof(StaticModelVertex, tex)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_LIGHTMAP,    2, sizeof(StaticModelVertex), offsetof(StaticModelVertex, lighttex)},\n    {VertexAttribute::UINT32,  VertexAttribute::FFP_IGNORE,      1, sizeof(StaticModelVertex), offsetof(StaticModelVertex, texture)}\n};\n\nconst static VertexAttribute vertex_dynamic_definition[6] = {\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_POSITION,    3, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, co)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_NORMAL,      3, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, normal)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_TEXTURE,     2, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, tex)},\n    {VertexAttribute::UINT32,  VertexAttribute::FFP_BONE_INDEX,  4, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, bone)},\n    {VertexAttribute::FLOAT32, VertexAttribute::FFP_BONE_WEIGHT, 4, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, boneweight)},\n    {VertexAttribute::UINT32,  VertexAttribute::FFP_IGNORE,      1, sizeof(DynamicModelVertex), offsetof(DynamicModelVertex, texture)}\n};\n\nconst static VertexAttribute vertex_sprite_definition[6] = {\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_IGNORE,     3, sizeof(SpriteVertex), 0},\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_IGNORE,     2, sizeof(SpriteVertex), offsetof(SpriteVertex, texco)},\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_IGNORE,     3, sizeof(SpriteVertex), offsetof(SpriteVertex, color)},\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_IGNORE,     2, sizeof(SpriteVertex), offsetof(SpriteVertex, voffset)},\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_IGNORE,     1, sizeof(SpriteVertex), offsetof(SpriteVertex, verticality)},\n    {VertexAttribute::UINT32,   VertexAttribute::FFP_IGNORE,     1, sizeof(SpriteVertex), offsetof(SpriteVertex, texture)}\n};\n\nconst static VertexAttribute vertex_line_definition[2] = {\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_POSITION,   3, sizeof(LineVertex), 0},\n    {VertexAttribute::FLOAT32,  VertexAttribute::FFP_COLOR,      3, sizeof(LineVertex), offsetof(LineVertex, color)}\n};\n    \nstatic const uint32_t MAX_VERTEX_TYPES = 10; // TODO: put this in config?\n\nstruct RegisteredVertexDefinition {\n    bool registered = false;\n    VertexDefinition definition;\n};\n\n// here's the 4 default vertices, all defined up\nstatic RegisteredVertexDefinition all_vertex_definitions[MAX_VERTEX_TYPES] = {\n    {true, {vertex_static_definition,   sizeof(vertex_static_definition)    / sizeof(VertexAttribute)}},\n    {true, {vertex_dynamic_definition,  sizeof(vertex_dynamic_definition)   / sizeof(VertexAttribute)}},\n    {true, {vertex_sprite_definition,   sizeof(vertex_sprite_definition)    / sizeof(VertexAttribute)}},\n    {true, {vertex_line_definition,     sizeof(vertex_line_definition)      / sizeof(VertexAttribute)}}\n};\n\n/// Registers a VertexDefinition for a specified vertex format.\n/// @note For the VertexDefinition's 'attributes' only the pointer will be copied,\n///       the underlying memory will not be copied -- make sure that it doesn't\n///       point to stack memory, or other memory that could be overwritten.\nvoid RegisterVertexDefinition (vertexformat_t format, VertexDefinition definition) {\n    assert(format < MAX_VERTEX_TYPES);\n    \n    if (all_vertex_definitions[format].registered) {\n        Log(Severity::WARNING, System::RENDER, \"VertexDefinition for format {} already registered, overwriting.\", format);\n        // TODO: replace raw format int with a name\n    }\n    \n    // TODO: we should validate the FFP here (there should not be more than one of each type\n    \n    all_vertex_definitions[format].definition = definition;\n    all_vertex_definitions[format].registered = true;\n}\n\n/// Returns a previously registered VertexDefinition.\nVertexDefinition GetVertexDefinition(vertexformat_t format) {\n    assert(format < MAX_VERTEX_TYPES);\n    \n    if (!all_vertex_definitions[format].registered) {\n        Log(Severity::ERROR, System::RENDER, \"VertexDefinition for format {} not registered!\", format);\n        // TODO: replace raw format int with a name\n        \n        format = 0; // we do need to return something.\n    }\n    \n    return all_vertex_definitions[format].definition;\n}\n\n}"
  },
  {
    "path": "src/render/renderer.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_RENDERER_H\n#define TRAM_SDK_RENDER_RENDERER_H\n\n#include <render/render.h>\n\nnamespace tram::Render {\n\n/// Flags for DrawListObjects.\nenum renderflags: uint32_t {\n    FLAG_NO_RENDER = 0,             //< Object is not rendered.\n    FLAG_RENDER = 1,                //< Object is rendered.\n\n    FLAG_DRAW_INDEXED = 4,          //< Vertex buffer has indices.\n    FLAG_REVERSE_SORT = 8,          //< Furthest objects are rendered first.\n    FLAG_TRANSPARENT = 16,          //< Object is transparent and is rendered last.\n    FLAG_NO_DEPTH_TEST = 32,        //< Object is rendered on top of other objects.\n    FLAG_NO_DIRECTIONAL = 64,       //< Object is not lit by directional lighting.\n    FLAG_DRAW_LINES = 128,          //< Object is rendered as lines. Otherwise rendered as triangles.\n    FLAG_DISABLE_LIGHTING = 256,    //< Object is rendered without lighting.\n    FLAG_NO_DEBUG = 512,            //< Object does not get debugged.\n    FLAG_USE_AABB = 1024,           //< Object has an AABB that can be used for filtering.\n    FLAG_LINE_FILL_POLY = 2048,     //< Triangle meshes are rendered as lines\n    FLAG_POINT_FILL_POLY = 4096,    //< Triangle meshes are rendered as points\n};\n\n/// Texture color mode.\nenum ColorMode {\n    COLORMODE_R,    //< Contains only red channel, pixel is 1 byte long.\n    COLORMODE_RG,   //< Contains red and green channels, pixel is 2 bytes long.\n    COLORMODE_RGB,  //< Contains red, green and blue channels, pixel is 3 bytes long.\n    COLORMODE_RGBA  //< Contains red, green, blue and alpha channels, pixel is 4 bytes long.\n};\n\n/// Texture filters.\nenum TextureFilter {\n    TEXTUREFILTER_NEAREST,\n    TEXTUREFILTER_LINEAR,           //< Textures use linear filtering.\n    TEXTUREFILTER_LINEAR_MIPMAPPED  //< Textures use linear filtering and are mipmapped.\n};\n\n/// Atributes for vertex buffer vertices.\nstruct VertexAttribute {\n    enum {\n        FLOAT32,\n        INT32,\n        UINT32\n    } type;\n    enum {\n        FFP_IGNORE,\n        FFP_POSITION,\n        FFP_NORMAL,\n        FFP_COLOR,\n        FFP_TEXTURE,\n        FFP_LIGHTMAP,\n        FFP_BONE_INDEX,\n        FFP_BONE_WEIGHT\n    } ffp_type;         //< Tells the FFP how to interpret this attribute.\n    uint32_t size;      //< Size of the attribute, in bytes.\n    uint32_t stride;    //< Distance between same attribute in different vertices, in bytes.\n    uint64_t offset;    //< Offset of beginning of attribute in vertex buffer.\n};\n\nstruct VertexDefinition {\n    const VertexAttribute* attributes;\n    size_t attribute_count;\n};\n\nvoid RegisterVertexDefinition(vertexformat_t format, VertexDefinition definition);\nVertexDefinition GetVertexDefinition(vertexformat_t format);\n\n\n}\n\n#endif // TRAM_SDK_RENDER_RENDERER_H"
  },
  {
    "path": "src/render/scene.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/scene.h>\n\n#include <components/render.h>\n#include <components/mesh.h>\n#include <render/model.h>\n\n#include <framework/ui.h>\n\n#include <templates/pool.h>\n#include <templates/aabb.h>\n#include <templates/octree.h>\n\n/*\n * the AABB tree API is a bit cumbersome to use. it could be significantly\n * improved.\n * \n * perhaps we should rename the AABB tree to SceneTree?? // yeah, would be less confusing\n * \n * under this API the scene tree NEEDS to know what tf is a RenderComponent or\n * MeshComponent, but we want to be able to NOT compile in these components into\n * the runtime (maybe, idk)\n * \n * SO WE need a better API.. whatevs\n */\n\n/**\n * @namespace tram::Render::SceneTree\n * \n * Scene tree.\n * \n * Contains the AABBs of all 3D models in the scene. Useful for quickly querying\n * the scene, doing raycasts on the 3D geometry, etc.\n * \n * Internally uses an AABB tree.\n */\n \n /**\n * @namespace tram::Render::LightTree\n * \n * Scene light tree.\n * \n * Contains all of the dynamic lights in the scene. Useful for finding which\n * lights are illuminating a certain 3D model in the scene.\n * \n * Internally uses an Octree.\n */\n\nnamespace tram::Render::AABB {\n\nstruct AABBLeaf {\n    ReferenceType ref_type;\n    AABBTree::node_t leaf;\n    \n    union {\n        RenderComponent* rendercomponent;\n        MeshComponent* meshcomponent;\n    };\n};\n    \nstatic AABBTree scene_tree;\nstatic Pool<AABBLeaf> scene_tree_leaves(\"Scene AABB tree leaf pool\", 1000);\n\n// this function here take sin position, rotation and scale.\n// why tho?? we could just query the component for this!!\n// TODO: fix\n\n/// Inserts a RenderComponent leaf into the scene tree.\n/// This is done automatically by the RenderComponent itself, so\n/// @return Handle to the inserted leaf.\naabbleaf_t InsertLeaf(RenderComponent* component, vec3 position, quat rotation, vec3 scale) {\n    vec3 min = component->GetModel()->GetAABBMin() * scale;\n    vec3 max = component->GetModel()->GetAABBMax() * scale;\n    \n    vec3 extents[8] = {\n        {min.x, min.y, min.z},\n        {max.x, min.y, min.z},\n        {min.x, max.y, min.z},\n        {min.x, min.y, max.z},\n        {max.x, max.y, min.z},\n        {max.x, min.y, max.z},\n        {max.x, max.y, max.z},\n        {min.x, max.y, max.z}\n    };\n    \n    for (auto& extent : extents) {\n        extent = rotation * extent;\n    }\n    \n    min = extents[0];\n    max = extents[0];\n    \n    for (auto& extent : extents) {\n        min = MergeAABBMin(min, extent);\n        max = MergeAABBMax(max, extent);\n    }\n\n    min += position;\n    max += position;\n    \n    AABBLeaf* leaf = scene_tree_leaves.AddNew();\n\n    leaf->ref_type = REFERENCE_RENDERCOMPONENT;\n    leaf->rendercomponent = component;\n    leaf->leaf = scene_tree.InsertLeaf(scene_tree_leaves.index(leaf), min, max);\n    \n    return leaf;\n}\n\n/// Inserts a MeshComponent leaf into the scene tree.\n/// @return Handle to the inserted leaf.\naabbleaf_t InsertLeaf(MeshComponent* component) {\n    vec3 min = component->GetAABBMin() * component->GetScale();\n    vec3 max = component->GetAABBMax() * component->GetScale();\n    \n    vec3 extents[8] = {\n        {min.x, min.y, min.z},\n        {max.x, min.y, min.z},\n        {min.x, max.y, min.z},\n        {min.x, min.y, max.z},\n        {max.x, max.y, min.z},\n        {max.x, min.y, max.z},\n        {max.x, max.y, max.z},\n        {min.x, max.y, max.z}\n    };\n    \n    for (auto& extent : extents) {\n        extent = component->GetRotation() * extent;\n    }\n    \n    min = extents[0];\n    max = extents[0];\n    \n    for (auto& extent : extents) {\n        min = MergeAABBMin(min, extent);\n        max = MergeAABBMax(max, extent);\n    }\n\n    min += component->GetLocation();\n    max += component->GetLocation();\n    \n    AABBLeaf* leaf = scene_tree_leaves.AddNew();\n\n    leaf->ref_type = REFERENCE_RENDERCOMPONENT;\n    leaf->meshcomponent = component;\n    leaf->leaf = scene_tree.InsertLeaf(scene_tree_leaves.index(leaf), min, max);\n    \n    return leaf;\n}\n\n/// Removes a leaf from \nvoid RemoveLeaf(aabbleaf_t leaf_id) {\n    AABBLeaf* leaf = (AABBLeaf*) leaf_id;\n    \n    // when the program exits and runs all of the destructors, the scene tree\n    // gets destructed before all of the rendercomponents, so when the\n    // rendercomponents call this function during their destruction, this\n    // function will try to remove leaves from an already destructed tree\n    //\n    // the proper way to handle this would be to delete all entities at the\n    // end of the program, but we are not very proper in this codebase!\n    if (UI::ShouldExit()) {\n        return;\n    }\n    \n    scene_tree.RemoveLeaf(leaf->leaf);\n    scene_tree_leaves.Remove(leaf);\n}\n\n// btw the mask is unused.. why tho??\n// we should add the mask!!! somewhere .. i guess .\n// maybe we could add an enum in render.h?\n\n/// Peforms a raycast and retrieves the nearest object.\nQueryResponse FindNearestFromRay(vec3 ray_pos, vec3 ray_dir, uint32_t mask) {\n    std::vector<uint32_t> results;\n    results.reserve(10);\n    \n    scene_tree.FindIntersection(ray_pos, ray_dir, results);\n    \n    float nearest = INFINITY;\n    QueryResponse nearest_result;\n    \n    nearest_result.data = nullptr;\n    \n    for (uint32_t i : results) {\n        AABBLeaf* leaf = &scene_tree_leaves[i];\n        \n        std::vector<AABBTriangle> intersected_triangles;\n        intersected_triangles.reserve(10);\n        \n        const mat4 matrix = PositionRotationScaleToMatrix(leaf->rendercomponent->GetLocation(),\n                                                          leaf->rendercomponent->GetRotation(),\n                                                          leaf->rendercomponent->GetScale());\n        const mat4 inv_matrix = glm::inverse(matrix);\n\n        vec3 ray_pos_local = vec3(inv_matrix * vec4(ray_pos, 1.0f));\n        vec3 ray_dir_local = glm::normalize(vec3(inv_matrix * vec4(ray_dir, 0.0f)));\n\n        leaf->rendercomponent->GetModel()->FindAllFromRay(ray_pos_local, ray_dir_local, intersected_triangles);\n        \n        for (auto& tri : intersected_triangles) {\n            vec3 intersection = RayTriangleIntersection(ray_pos_local, ray_dir_local, tri.point1, tri.point2, tri.point3);\n            \n            if (intersection.x == INFINITY) continue;\n            \n            float intersection_distance = glm::distance(ray_pos, vec3(matrix * vec4(intersection, 1.0f)));\n            \n            if (nearest > intersection_distance) {\n                nearest = intersection_distance;\n                \n                nearest_result.type = REFERENCE_RENDERCOMPONENT;\n                nearest_result.data = leaf->rendercomponent;\n                nearest_result.intersection = matrix * vec4(intersection, 1.0f);\n                nearest_result.triangle = {\n                    matrix * vec4(tri.point1, 1.0f),\n                    matrix * vec4(tri.point2, 1.0f),\n                    matrix * vec4(tri.point3, 1.0f),\n                    matrix * vec4(tri.normal, 0.0f),\n                    tri.material\n                };\n            }\n        }\n    }\n    \n    return nearest_result;\n}\n\nvoid FindAllIntersectionsFromAABB(vec3 min, vec3 max, std::function<void(ReferenceType, EntityComponent*)> callback) {\n    scene_tree.FindAABBIntersection(min, max, [&](uint32_t key) {\n        auto reference_type = scene_tree_leaves[key].ref_type;\n        auto reference = scene_tree_leaves[key].rendercomponent;\n        \n        callback(reference_type, reference);\n    });\n}\n\n\nstatic void DrawAABBNodeChildren(const AABBTree& tree, AABBTree::node_t node) {\n    if (tree.IsLeaf(node)) {\n        AddLineAABB(tree.GetMin(node), tree.GetMax(node), {0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f, 0.0f}, COLOR_CYAN);\n    } else {\n        DrawAABBNodeChildren(tree, tree.GetLeft(node));\n        DrawAABBNodeChildren(tree, tree.GetRight(node));\n        \n        if (tree.GetParent(node) == AABBTree::INVALID) {\n            AddLineAABB(tree.GetMin(node), tree.GetMax(node), {0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f, 0.0f}, COLOR_RED);\n        } else {\n            AddLineAABB(tree.GetMin(node), tree.GetMax(node), {0.0f, 0.0f, 0.0f}, {1.0f, 0.0f, 0.0f, 0.0f}, COLOR_PINK);\n        }\n    }\n}\n\n/// Draws the scene tree for a single frame.\nvoid DebugDrawTree() {\n    DrawAABBNodeChildren(scene_tree, scene_tree.GetRoot());\n}\n\n}\n\nnamespace tram::Render::LightTree {\n\nstruct Light {\n    light_t handle;\n    vec3 position;\n    float distance;\n    uint32_t tree_handle;\n};\n\nPool<Light> light_list(\"lighttree pool\", 200);\nOctree<Light*> light_tree({0.0f, 0.0f, 0.0f}, 1000.0f);;\n\n/// Adds a light to the light tree.\nvoid AddLight(light_t light, vec3 pos, float dist) {\n    Light* new_light = light_list.AddNew();\n    \n    new_light->handle = light;\n    new_light->position = pos;\n    new_light->distance = dist;\n    \n    new_light->tree_handle = light_tree.Insert(pos, new_light);\n}\n\n/// Finds the 4 nearest lights to a given position.\n/// @param position Position from which the lights will be searched.\n/// @param dest     Pointer to an array of 4 light_t.\nvoid FindLights(vec3 position, light_t* dest) {\n    Light* lights[4] = {nullptr, nullptr, nullptr, nullptr};\n    light_tree.Find(lights, position);\n    \n    for (int i = 0; i < 4; i++) {\n        if (lights[i]) {\n            dest[i] = lights[i]->handle;\n        } else {\n            dest[i] = {};\n        }\n    }\n}\n\n/// Removes a light from the light tree.\nvoid RemoveLight(light_t light) {\n    Light* remove_light = nullptr;\n    \n    for (auto& entry : light_list) {\n        if (entry.handle.generic == light.generic) {\n            remove_light = &entry;\n        }\n    }\n    \n    light_tree.Remove(remove_light->tree_handle);\n    light_list.Remove(remove_light);\n}\n\n}"
  },
  {
    "path": "src/render/scene.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_SCENE_H\n#define TRAM_SDK_RENDER_SCENE_H\n\n#include <framework/math.h>\n#include <render/model.h>\n\n#include <functional>\n\nnamespace tram {\n    class RenderComponent;\n    class MeshComponent;\n}\n\nnamespace tram::Render {\n    typedef void* aabbleaf_t;\n}\n\nnamespace tram::Render::AABB {\n\nenum ReferenceType : uint32_t {\n    REFERENCE_RENDERCOMPONENT = 1,\n    REFERENCE_MESHCOMPONENT = 2\n};\n    \nstruct QueryResponse {\n    ReferenceType type;\n    void* data;\n    \n    vec3 intersection;\n    AABBTriangle triangle;\n};\n    \naabbleaf_t InsertLeaf(RenderComponent* component, vec3 position, quat rotation, vec3 scale);    \naabbleaf_t InsertLeaf(MeshComponent* component);    \nvoid RemoveLeaf(aabbleaf_t leaf);\n\nQueryResponse FindNearestFromRay(vec3 ray_pos, vec3 ray_dir, uint32_t mask);\n\nvoid FindAllIntersectionsFromAABB(vec3 min, vec3 max, std::function<void(ReferenceType, EntityComponent*)> callback);\n\nvoid DebugDrawTree();\n\n}\n\nnamespace tram::Render::LightTree {\n    \nvoid AddLight(light_t light, vec3 pos, float dist);\nvoid FindLights(vec3 position, light_t* dest);\nvoid RemoveLight(light_t light);\n    \n}\n\n#endif // TRAM_SDK_RENDER_SCENE_H\n"
  },
  {
    "path": "src/render/software/software.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/software/software.h>\n#include <render/api.h>\n\n#include <templates/octree.h>\n\n#include <config.h>\n\n#include <cstdlib>\n#include <cstring>\n\nnamespace tram::Render::API {\n\nPool<SWDrawListEntry> draw_list(\"render list\", 500);\nPool<SWLight> light_list(\"light list\", 200);\nPool<SWTexture> texture_list(\"texture list\", RESOURCE_LIMIT_MATERIAL);\nPool<SWMaterial> material_list(\"material list\", RESOURCE_LIMIT_MATERIAL);\nPool<SWVertexArray> vertex_arrays(\"vertex_arrays list\", 200);\nPool<SWIndexArray> index_arrays(\"index_arrays list\", 200);\nstruct LayerParameters {\n    mat4 projection_matrix = mat4(1.0f);\n    mat4 view_matrix = mat4(1.0f);\n    vec3 view_position = {1.0f, 1.0f, 1.0f};\n    \n    vec3 sun_direction = {0.0f, 1.0f, 0.0f};\n    vec3 sun_color = {1.0f, 1.0f, 1.0f};\n    vec3 ambient_color = {0.3f, 0.3f, 0.3f};\n};\n\nstatic LayerParameters layers[7];\n\nstatic vec3 screen_clear_color = {0.2f, 0.3f, 0.3f};\nstatic bool clear_screen = true;\n\nstatic uint16_t screen_width = 800.0f;\nstatic uint16_t screen_height = 600.0f;\n\nstatic uint16_t* screen_buffer = nullptr;\nstatic uint16_t* depth_buffer = nullptr;\n\nstatic Render::Pose* null_pose = nullptr;\n\nstruct Scanline {\n    uint16_t begin;     // x coord on which the span starts\n    uint16_t end;       // x coord on which the span ends\n    uint16_t begin_p0;  // first point for begin\n    uint16_t begin_p1;  // second point for begin\n    int32_t begin_adv;  // how far from the first point in begin, mapped to [0x0000, 0xFFFF]\n    uint16_t end_p0;    // same as for begin, but for end\n    uint16_t end_p1;    // ditto\n    int32_t end_adv;    // ditto\n};\n\nstruct ScanlineBuffer {\n    Scanline scanlines[1000];\n    int32_t scanline_length = 0;\n    int32_t start_y = 0;\n};\n\nScanlineBuffer* scanlines = new ScanlineBuffer;\n\nvoid SetLightingParameters (vec3 sun_direction, vec3 sun_color, vec3 ambient_color, uint32_t layer) {\n    layers[layer].sun_direction = sun_direction;\n    layers[layer].sun_color = sun_color;\n    layers[layer].ambient_color = ambient_color;\n}\n\nvoid SetScreenSize(float width, float height) {\n    depth_buffer = (uint16_t*)malloc(screen_width * screen_height * sizeof(float));\n    \n    screen_width = width;\n    screen_height = height;\n}\n\nvoid SetScreenClear (vec3 clear_color, bool clear) {\n    clear_screen = clear;\n    screen_clear_color = clear_color;\n}\n\nuint16_t IntColor(vec3 color) {\n    return (((uint16_t)(31.0f * color.r)) << 11)\n         | (((uint16_t)(63.0f * color.g)) << 5)\n         | (((uint16_t)(31.0f * color.b)));\n}\n\nvec3 RGBColor(uint16_t color) {\n    float r = (color & 0xf800) >> 11;\n    float g = (color & 0x07e0) >> 5;\n    float b = color & 0x001f;\n    \n    return {r/31.0f, g/63.0f, b/31.0f};\n}\n\nvoid BlitDot(uint32_t x, uint32_t y, uint16_t color) {\n    if (x < 0 || x >= screen_width) return;\n    if (y < 0 || y >= screen_height) return;\n    screen_buffer[screen_width * y + x] = color;\n}\n\n// TODO: replace color parameter with a blitting function object\nvoid BlitLineOctant0(uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color) {\n    int32_t delta_y2 = delta_y * 2;\n    int32_t delta_y2_x2 = delta_y2 - (int32_t) ( delta_x * 2 );\n    int32_t error = delta_y2 - (int32_t) delta_x;\n\n    BlitDot(x0, y0, color);\n\n    while (delta_x--) {\n        if (error >= 0) {\n            y0++;\n            error += delta_y2_x2;\n        } else {\n            error += delta_y2;\n        }\n        \n        x0 += direction;\n        \n        BlitDot(x0, y0, color);\n    }\n}\n\nvoid BlitLineOctant1(uint32_t x0, uint32_t y0, uint32_t delta_x, uint32_t delta_y, int32_t direction, uint32_t color) {\n    int32_t delta_x2 = delta_x * 2;\n    int32_t delta_x2_y2 = delta_x2 - (int32_t) ( delta_y * 2 );\n    int32_t error = delta_x2 - (int32_t) delta_y;\n\n    BlitDot(x0, y0, color);\n    \n    while (delta_y--) {\n        if (error >= 0) {\n            x0 += direction;\n            error += delta_x2_y2;\n        } else {\n            error += delta_x2;\n        }\n        \n        y0++;\n        \n        BlitDot(x0, y0, color);\n    }\n}\n\nvoid BlitLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, uint16_t color) {\n    if (y0 > y1) {\n        std::swap(y0, y1);\n        std::swap(x0, x1);\n    }\n\n    int32_t delta_x = x1 - x0;\n    int32_t delta_y = y1 - y0;\n    \n    if (delta_x > 0) {\n        if (delta_x > delta_y) {\n            BlitLineOctant0(x0, y0, delta_x, delta_y, 1, color);\n        } else {\n            BlitLineOctant1(x0, y0, delta_x, delta_y, 1, color);\n        }\n    } else {\n        delta_x = -delta_x;\n        if (delta_x > delta_y) {\n            BlitLineOctant0(x0, y0, delta_x, delta_y, -1, color);\n        } else {\n            BlitLineOctant1(x0, y0, delta_x, delta_y, -1, color);\n        }\n    }\n}\n\n\n\nstruct Point2D {\n  int32_t x;\n  int32_t y;\n  uint32_t depth;\n};\n\ntemplate <bool set_span_first>\nvoid MakeSpans(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t p0, int32_t p1, int32_t skip_first, Scanline** scanline_array) {\n    Scanline* scanline = *scanline_array;\n\n    int32_t delta_x = x1 - x0;\n    int32_t advance = delta_x > 0 ? 1 : -1;\n\n    int32_t width = abs(delta_x);\n    int32_t height = y1 - y0;\n\n    if (height <= 0) return;\n    \n    int32_t total_spans = height - skip_first;\n    int32_t point_advance = -(0xFFFF / height);\n    int32_t point_sum = 0xFFFF;\n\n    if (width == 0) {\n        for (int32_t i = total_spans; i-- > 0; scanline++) {\n            if (set_span_first) {\n                scanline->begin = x0;\n                scanline->begin_p0 = p0;\n                scanline->begin_p1 = p1;\n                scanline->begin_adv = point_sum;\n            } else {\n                scanline->end = x0;\n                scanline->end_p0 = p0;\n                scanline->end_p1 = p1;\n                scanline->end_adv = point_sum;\n            }\n            \n            point_sum += point_advance;\n        }\n    } else if (width == height) {\n        if (skip_first) {\n            x0 += advance; \n        }\n\n        for (int32_t i = total_spans; i-- > 0; scanline++) {\n            if (set_span_first) {\n                scanline->begin = x0;\n                scanline->begin_p0 = p0;\n                scanline->begin_p1 = p1;\n                scanline->begin_adv = point_sum;\n            } else {\n                scanline->end = x0;\n                scanline->end_p0 = p0;\n                scanline->end_p1 = p1;\n                scanline->end_adv = point_sum;\n            }\n            \n            point_sum += point_advance;\n            x0 += advance; \n        }\n    } else if (height > width) {\n        int32_t error = 0;\n        if (delta_x < 0) {\n            error = -height + 1;\n        }\n\n        if (skip_first) {\n            error += width;\n            if (error > 0) {\n                x0 += advance; \n                error -= height; \n            }\n        }\n\n        for (int32_t i = total_spans; i-- > 0; scanline++) {\n            if (set_span_first) {\n                scanline->begin = x0;\n                scanline->begin_p0 = p0;\n                scanline->begin_p1 = p1;\n                scanline->begin_adv = point_sum;\n            } else {\n                scanline->end = x0;\n                scanline->end_p0 = p0;\n                scanline->end_p1 = p1;\n                scanline->end_adv = point_sum;\n            }\n\n            point_sum += point_advance;\n            \n            error += width;\n            if (error > 0) {\n                x0 += advance; \n                error -= height; \n            }\n        }\n    } else {\n        int32_t major_advance = (width / height) * advance;\n        int32_t error_advance = width % height;\n\n        int32_t error = 0;\n        if (delta_x < 0) {\n            error = -height + 1;\n        }\n\n        if (skip_first) {   \n            x0 += major_advance;    \n\n            error += error_advance;\n            if (error > 0) {\n                x0 += advance;   \n                error -= height; \n            }\n        }\n\n        for (int32_t i = total_spans; i-- > 0; scanline++) {\n            if (set_span_first) {\n                scanline->begin = x0;\n                scanline->begin_p0 = p0;\n                scanline->begin_p1 = p1;\n                scanline->begin_adv = point_sum;\n            } else {\n                scanline->end = x0;\n                scanline->end_p0 = p0;\n                scanline->end_p1 = p1;\n                scanline->end_adv = point_sum;\n            }\n            \n            point_sum += point_advance;\n            x0 += major_advance;   \n \n            error += error_advance;\n            if (error > 0) {\n                x0 += advance;      \n                error -= height; \n            }\n        }\n    }\n\n    *scanline_array = scanline;\n}\n\nvoid ScanlineConvertTriangle(ScanlineBuffer* scanlines, Point2D* vertices) {\n    Scanline* span_ptr;\n\n    int32_t min_index = 0;\n    int32_t max_index = 0;\n\n    int32_t max_point_y = vertices->y;\n    int32_t min_point_y = vertices->y;\n\n    for (int32_t i = 1; i < 3; i++) {\n        if (vertices[i].y < min_point_y) {\n            min_index = i;\n            min_point_y = vertices[min_index].y;\n        } else if (vertices[i].y > max_point_y) {\n            max_index = i;\n            max_point_y = vertices[max_index].y;\n        }\n    }\n\n    if (min_point_y == max_point_y) return;\n\n    int32_t min_index_r = min_index;\n    int32_t min_index_l = min_index;\n\n    if (int32_t next_index = (min_index_r + 1) % 3; vertices[next_index].y == min_point_y) {\n        min_index_r = next_index;\n    }\n\n    if (int32_t prev_index = (min_index_l - 1 + 3) % 3; vertices[prev_index].y == min_point_y) {\n        min_index_l = prev_index;\n    }\n\n    int32_t left_edge_dir = -1;\n    bool top_is_flat = vertices[min_index_l].x != vertices[min_index_r].x;\n    if (top_is_flat) {\n        if (vertices[min_index_l].x > vertices[min_index_r].x) {\n            left_edge_dir = 1;\n            std::swap(min_index_l, min_index_r);\n        }\n    } else {\n        int32_t next_index = (min_index_r + 1) % 3;\n        int32_t prev_index = (min_index_l - 1 + 3) % 3;\n\n        int32_t delta_xn = vertices[next_index].x - vertices[min_index_l].x;\n        int32_t delta_yn = vertices[next_index].y - vertices[min_index_l].y;\n        int32_t delta_xp = vertices[prev_index].x - vertices[min_index_l].x;\n        int32_t delta_yp = vertices[prev_index].y - vertices[min_index_l].y;\n        \n        if (delta_xn * delta_yp - delta_yn * delta_xp < 0) {\n            left_edge_dir = 1;\n            std::swap(min_index_l, min_index_r);\n        }\n    }\n\n    /*int32_t*/ scanlines->scanline_length = max_point_y - min_point_y - 1 + top_is_flat;\n    /*int32_t*/ scanlines->start_y = min_point_y + 1 - top_is_flat;\n\n    if (scanlines->scanline_length <= 0) return;\n\n    span_ptr = scanlines->scanlines;\n    int32_t prev_index = min_index_l;\n    int32_t this_index = min_index_l;\n    bool skip_first = !top_is_flat;\n\n    do {                                \n        if (left_edge_dir > 0) {\n            this_index = (this_index + 1) % 3;\n        } else {\n            this_index = (this_index - 1 + 3) % 3;\n        }\n\n        MakeSpans<true>(vertices[prev_index].x,\n                        vertices[prev_index].y,\n                        vertices[this_index].x,\n                        vertices[this_index].y,\n                        prev_index,\n                        this_index,\n                        skip_first,\n                        &span_ptr);\n                 \n         prev_index = this_index;\n         skip_first = 0;\n    } while (this_index != max_index);\n\n    span_ptr = scanlines->scanlines;\n    prev_index = min_index_r;\n    this_index = min_index_r;\n    skip_first = !top_is_flat;\n\n    do {\n        if (left_edge_dir < 0) {\n            this_index = (this_index + 1) % 3;\n        } else {\n            this_index = (this_index - 1 + 3) % 3;\n        }\n        \n        MakeSpans<false>(vertices[prev_index].x - 1,\n                         vertices[prev_index].y,\n                         vertices[this_index].x - 1,\n                         vertices[this_index].y,\n                         prev_index,\n                         this_index,\n                         skip_first,\n                         &span_ptr);\n                 \n        prev_index = this_index;\n        skip_first = 0; \n    } while (this_index != max_index);\n}\n\nvoid RasterizeTriangle(ScanlineBuffer* scanlines, Point2D* vertices) {\n    Scanline* span_ptr = scanlines->scanlines;\n    for (int32_t y = scanlines->start_y; y < (scanlines->start_y + scanlines->scanline_length); y++, span_ptr++) {\n        int32_t begin_mix[3] = {0, 0, 0};\n        int32_t end_mix[3] = {0, 0, 0};\n        \n        begin_mix[span_ptr->begin_p0] = span_ptr->begin_adv;\n        begin_mix[span_ptr->begin_p1] = 0xFFFF - span_ptr->begin_adv;\n        \n        end_mix[span_ptr->end_p0] = span_ptr->end_adv;\n        end_mix[span_ptr->end_p1] = 0xFFFF - span_ptr->end_adv;\n        \n        int32_t span_length = span_ptr->end - span_ptr->begin + 1;\n        \n        if (span_length <= 0) continue;\n        \n        int32_t p0_adv = (end_mix[0] - begin_mix[0]) / span_length;\n        int32_t p1_adv = (end_mix[1] - begin_mix[1]) / span_length;\n        int32_t p2_adv = (end_mix[2] - begin_mix[2]) / span_length;\n        \n        int32_t p0_mix = begin_mix[0];\n        int32_t p1_mix = begin_mix[1];\n        int32_t p2_mix = begin_mix[2];\n        \n        for (int32_t x = span_ptr->begin; x <= span_ptr->end; x++) {\n            int32_t r = (p0_mix & 0xFFFF) >> (16 - 5);\n            int32_t g = (p1_mix & 0xFFFF) >> (16 - 6);\n            int32_t b = (p2_mix & 0xFFFF) >> (16 - 5);\n            \n            int32_t c = (r << (5 + 6)) | (g << (5)) | b;\n            \n            \n            int32_t depth = ((p0_mix * vertices[0].depth) >> 16)\n                          + ((p1_mix * vertices[1].depth) >> 16)\n                          + ((p2_mix * vertices[2].depth) >> 16);\n            \n            if (depth_buffer[y * screen_width + x] < depth) {\n                depth_buffer[y * screen_width + x] = depth;\n                BlitDot(x, y, c);\n            }\n            \n            p0_mix += p0_adv;\n            p1_mix += p1_adv;\n            p2_mix += p2_adv;\n        }\n    }\n}\n\nvoid RasterizeTriangleLightmapped(ScanlineBuffer* scanlines, Point2D* vertices, uint16_t color, vec2* texture_uvs, vec2* lightmap_uvs, SWTexture* texture, SWTexture* lightmap) {\n    int32_t p0_tex_x = texture_uvs[0].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p0_tex_y = texture_uvs[0].y * (float)texture->height * (float)(0xFF + 1);\n    int32_t p1_tex_x = texture_uvs[1].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p1_tex_y = texture_uvs[1].y * (float)texture->height * (float)(0xFF + 1);\n    int32_t p2_tex_x = texture_uvs[2].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p2_tex_y = texture_uvs[2].y * (float)texture->height * (float)(0xFF + 1);\n    \n    int32_t p0_lit_x = lightmap_uvs[0].x * (float)lightmap->width * (float)(0xFF + 1);\n    int32_t p0_lit_y = lightmap_uvs[0].y * (float)lightmap->height * (float)(0xFF + 1);\n    int32_t p1_lit_x = lightmap_uvs[1].x * (float)lightmap->width * (float)(0xFF + 1);\n    int32_t p1_lit_y = lightmap_uvs[1].y * (float)lightmap->height * (float)(0xFF + 1);\n    int32_t p2_lit_x = lightmap_uvs[2].x * (float)lightmap->width * (float)(0xFF + 1);\n    int32_t p2_lit_y = lightmap_uvs[2].y * (float)lightmap->height * (float)(0xFF + 1);\n    \n    Scanline* span_ptr = scanlines->scanlines;\n    for (int32_t y = scanlines->start_y; y < (scanlines->start_y + scanlines->scanline_length); y++, span_ptr++) {\n        int32_t begin_mix[3] = {0, 0, 0};\n        int32_t end_mix[3] = {0, 0, 0};\n        \n        begin_mix[span_ptr->begin_p0] = span_ptr->begin_adv;\n        begin_mix[span_ptr->begin_p1] = 0xFFFF - span_ptr->begin_adv;\n        \n        end_mix[span_ptr->end_p0] = span_ptr->end_adv;\n        end_mix[span_ptr->end_p1] = 0xFFFF - span_ptr->end_adv;\n        \n        int32_t span_length = span_ptr->end - span_ptr->begin + 1;\n        \n        if (span_length <= 0) continue;\n        \n        int32_t depth_begin = ((begin_mix[0] * vertices[0].depth) >> 16) + ((begin_mix[1] * vertices[1].depth) >> 16) + ((begin_mix[2] * vertices[2].depth) >> 16);\n        int32_t depth_end = ((end_mix[0] * vertices[0].depth) >> 16) + ((end_mix[1] * vertices[1].depth) >> 16) + ((end_mix[2] * vertices[2].depth) >> 16);\n        \n        int32_t depth_adv = (depth_end - depth_begin) / span_length;\n        int32_t depth_mix = depth_begin;\n        \n        int32_t tex_x_begin = (((begin_mix[0] >> 8) * p0_tex_x) >> 8) + (((begin_mix[1] >> 8) * p1_tex_x) >> 8) + (((begin_mix[2] >> 8) * p2_tex_x) >> 8);\n        int32_t tex_y_begin = (((begin_mix[0] >> 8) * p0_tex_y) >> 8) + (((begin_mix[1] >> 8) * p1_tex_y) >> 8) + (((begin_mix[2] >> 8) * p2_tex_y) >> 8);\n        \n        int32_t tex_x_end = (((end_mix[0] >> 8) * p0_tex_x) >> 8) + (((end_mix[1] >> 8) * p1_tex_x) >> 8) + (((end_mix[2] >> 8) * p2_tex_x) >> 8);\n        int32_t tex_y_end = (((end_mix[0] >> 8) * p0_tex_y) >> 8) + (((end_mix[1] >> 8) * p1_tex_y) >> 8) + (((end_mix[2] >> 8) * p2_tex_y) >> 8);\n        \n        int32_t tex_x_adv = (tex_x_end - tex_x_begin) / span_length;\n        int32_t tex_y_adv = (tex_y_end - tex_y_begin) / span_length;\n        \n        int32_t tex_x_mix = tex_x_begin;\n        int32_t tex_y_mix = tex_y_begin;\n        \n        int32_t lit_x_begin = (((begin_mix[0] >> 8) * p0_lit_x) >> 8) + (((begin_mix[1] >> 8) * p1_lit_x) >> 8) + (((begin_mix[2] >> 8) * p2_lit_x) >> 8);\n        int32_t lit_y_begin = (((begin_mix[0] >> 8) * p0_lit_y) >> 8) + (((begin_mix[1] >> 8) * p1_lit_y) >> 8) + (((begin_mix[2] >> 8) * p2_lit_y) >> 8);\n        \n        int32_t lit_x_end = (((end_mix[0] >> 8) * p0_lit_x) >> 8) + (((end_mix[1] >> 8) * p1_lit_x) >> 8) + (((end_mix[2] >> 8) * p2_lit_x) >> 8);\n        int32_t lit_y_end = (((end_mix[0] >> 8) * p0_lit_y) >> 8) + (((end_mix[1] >> 8) * p1_lit_y) >> 8) + (((end_mix[2] >> 8) * p2_lit_y) >> 8);\n        \n        int32_t lit_x_adv = (lit_x_end - lit_x_begin) / span_length;\n        int32_t lit_y_adv = (lit_y_end - lit_y_begin) / span_length;\n        \n        int32_t lit_x_mix = lit_x_begin;\n        int32_t lit_y_mix = lit_y_begin;\n        \n        for (int32_t x = span_ptr->begin; x <= span_ptr->end; x++) {\n            depth_mix += depth_adv;\n            \n            tex_x_mix += tex_x_adv;\n            tex_y_mix += tex_y_adv;\n            \n            lit_x_mix += lit_x_adv;\n            lit_y_mix += lit_y_adv;\n            \n            if (depth_buffer[y * screen_width + x] > depth_mix) continue;\n            \n            int32_t tex_x = (tex_x_mix >> 8) & (texture->width - 1);\n            int32_t tex_y = (tex_y_mix >> 8) & (texture->height - 1);\n            int32_t tex_offset = (texture->width * tex_y + tex_x) * texture->channels;\n            \n            int32_t lit_x = (lit_x_mix >> 8) & (lightmap->width - 1);\n            int32_t lit_y = (lit_y_mix >> 8) & (lightmap->height - 1);\n            int32_t lit_offset = (lightmap->width * lit_y + lit_x) * lightmap->channels;\n            \n            uint16_t r = (((int32_t)texture->pixels[tex_offset + 0] * (int32_t)lightmap->pixels[lit_offset + 0]) & 0xFFFF) >> (16 - 5);\n            uint16_t g = (((int32_t)texture->pixels[tex_offset + 1] * (int32_t)lightmap->pixels[lit_offset + 1]) & 0xFFFF) >> (16 - 6);\n            uint16_t b = (((int32_t)texture->pixels[tex_offset + 2] * (int32_t)lightmap->pixels[lit_offset + 2]) & 0xFFFF) >> (16 - 5);\n            \n            // overwrite with depth\n            //r = depth_mix  >> (16 - 5);\n            //g = depth_mix  >> (16 - 6);\n            //b = depth_mix  >> (16 - 5);\n            \n            uint16_t c = (r << (5 + 6)) | (g << (5)) | b;\n            \n            depth_buffer[y * screen_width + x] = depth_mix;\n            BlitDot(x, y, c);\n        }\n    }\n}\n\nvoid RasterizeTriangleShadedTextured(ScanlineBuffer* scanlines, Point2D* vertices, vec3* colors, vec3* speculars, vec2* texture_uvs, SWTexture* texture) {\n    int32_t p0_tex_x = texture_uvs[0].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p0_tex_y = texture_uvs[0].y * (float)texture->height * (float)(0xFF + 1);\n    int32_t p1_tex_x = texture_uvs[1].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p1_tex_y = texture_uvs[1].y * (float)texture->height * (float)(0xFF + 1);\n    int32_t p2_tex_x = texture_uvs[2].x * (float)texture->width * (float)(0xFF + 1);\n    int32_t p2_tex_y = texture_uvs[2].y * (float)texture->height * (float)(0xFF + 1);\n    \n    int32_t p0_col_r = fabsf(colors[0].r) * (float)(0xFFFF + 1);\n    int32_t p0_col_g = fabsf(colors[0].g) * (float)(0xFFFF + 1);\n    int32_t p0_col_b = fabsf(colors[0].b) * (float)(0xFFFF + 1);\n    int32_t p1_col_r = fabsf(colors[1].r) * (float)(0xFFFF + 1);\n    int32_t p1_col_g = fabsf(colors[1].g) * (float)(0xFFFF + 1);\n    int32_t p1_col_b = fabsf(colors[1].b) * (float)(0xFFFF + 1);\n    int32_t p2_col_r = fabsf(colors[2].r) * (float)(0xFFFF + 1);\n    int32_t p2_col_g = fabsf(colors[2].g) * (float)(0xFFFF + 1);\n    int32_t p2_col_b = fabsf(colors[2].b) * (float)(0xFFFF + 1);\n    \n    int32_t p0_spc_r = fabsf(speculars[0].r) * (float)(0xFFFF + 1);\n    int32_t p0_spc_g = fabsf(speculars[0].g) * (float)(0xFFFF + 1);\n    int32_t p0_spc_b = fabsf(speculars[0].b) * (float)(0xFFFF + 1);\n    int32_t p1_spc_r = fabsf(speculars[1].r) * (float)(0xFFFF + 1);\n    int32_t p1_spc_g = fabsf(speculars[1].g) * (float)(0xFFFF + 1);\n    int32_t p1_spc_b = fabsf(speculars[1].b) * (float)(0xFFFF + 1);\n    int32_t p2_spc_r = fabsf(speculars[2].r) * (float)(0xFFFF + 1);\n    int32_t p2_spc_g = fabsf(speculars[2].g) * (float)(0xFFFF + 1);\n    int32_t p2_spc_b = fabsf(speculars[2].b) * (float)(0xFFFF + 1);\n    \n    Scanline* span_ptr = scanlines->scanlines;\n    for (int32_t y = scanlines->start_y; y < (scanlines->start_y + scanlines->scanline_length); y++, span_ptr++) {\n        int32_t begin_mix[3] = {0, 0, 0};\n        int32_t end_mix[3] = {0, 0, 0};\n        \n        begin_mix[span_ptr->begin_p0] = span_ptr->begin_adv;\n        begin_mix[span_ptr->begin_p1] = 0xFFFF - span_ptr->begin_adv;\n        \n        end_mix[span_ptr->end_p0] = span_ptr->end_adv;\n        end_mix[span_ptr->end_p1] = 0xFFFF - span_ptr->end_adv;\n        \n        int32_t span_length = span_ptr->end - span_ptr->begin + 1;\n        \n        if (span_length <= 0) continue;\n        \n        int32_t depth_begin = ((begin_mix[0] * vertices[0].depth) >> 16) + ((begin_mix[1] * vertices[1].depth) >> 16) + ((begin_mix[2] * vertices[2].depth) >> 16);\n        int32_t depth_end = ((end_mix[0] * vertices[0].depth) >> 16) + ((end_mix[1] * vertices[1].depth) >> 16) + ((end_mix[2] * vertices[2].depth) >> 16);\n        \n        int32_t depth_adv = (depth_end - depth_begin) / span_length;\n        int32_t depth_mix = depth_begin;\n        \n        int32_t tex_x_begin = (((begin_mix[0] >> 8) * p0_tex_x) >> 8) + (((begin_mix[1] >> 8) * p1_tex_x) >> 8) + (((begin_mix[2] >> 8) * p2_tex_x) >> 8);\n        int32_t tex_y_begin = (((begin_mix[0] >> 8) * p0_tex_y) >> 8) + (((begin_mix[1] >> 8) * p1_tex_y) >> 8) + (((begin_mix[2] >> 8) * p2_tex_y) >> 8);\n        \n        int32_t tex_x_end = (((end_mix[0] >> 8) * p0_tex_x) >> 8) + (((end_mix[1] >> 8) * p1_tex_x) >> 8) + (((end_mix[2] >> 8) * p2_tex_x) >> 8);\n        int32_t tex_y_end = (((end_mix[0] >> 8) * p0_tex_y) >> 8) + (((end_mix[1] >> 8) * p1_tex_y) >> 8) + (((end_mix[2] >> 8) * p2_tex_y) >> 8);\n        \n        int32_t tex_x_adv = (tex_x_end - tex_x_begin) / span_length;\n        int32_t tex_y_adv = (tex_y_end - tex_y_begin) / span_length;\n        \n        int32_t tex_x_mix = tex_x_begin;\n        int32_t tex_y_mix = tex_y_begin;\n        \n        int32_t col_r_begin = (((begin_mix[0] >> 8) * p0_col_r) >> 8) + (((begin_mix[1] >> 8) * p1_col_r) >> 8) + (((begin_mix[2] >> 8) * p2_col_r) >> 8);\n        int32_t col_g_begin = (((begin_mix[0] >> 8) * p0_col_g) >> 8) + (((begin_mix[1] >> 8) * p1_col_g) >> 8) + (((begin_mix[2] >> 8) * p2_col_g) >> 8);\n        int32_t col_b_begin = (((begin_mix[0] >> 8) * p0_col_b) >> 8) + (((begin_mix[1] >> 8) * p1_col_b) >> 8) + (((begin_mix[2] >> 8) * p2_col_b) >> 8);\n        \n        int32_t col_r_end = (((end_mix[0] >> 8) * p0_col_r) >> 8) + (((end_mix[1] >> 8) * p1_col_r) >> 8) + (((end_mix[2] >> 8) * p2_col_r) >> 8);\n        int32_t col_g_end = (((end_mix[0] >> 8) * p0_col_g) >> 8) + (((end_mix[1] >> 8) * p1_col_g) >> 8) + (((end_mix[2] >> 8) * p2_col_g) >> 8);\n        int32_t col_b_end = (((end_mix[0] >> 8) * p0_col_b) >> 8) + (((end_mix[1] >> 8) * p1_col_b) >> 8) + (((end_mix[2] >> 8) * p2_col_b) >> 8);\n        \n        int32_t col_r_adv = (col_r_end - col_r_begin) / span_length;\n        int32_t col_g_adv = (col_g_end - col_g_begin) / span_length;\n        int32_t col_b_adv = (col_b_end - col_b_begin) / span_length;\n        \n        int32_t col_r_mix = col_r_begin;\n        int32_t col_g_mix = col_g_begin;\n        int32_t col_b_mix = col_b_begin;\n        \n        int32_t spc_r_begin = (((begin_mix[0] >> 8) * p0_spc_r) >> 8) + (((begin_mix[1] >> 8) * p1_spc_r) >> 8) + (((begin_mix[2] >> 8) * p2_spc_r) >> 8);\n        int32_t spc_g_begin = (((begin_mix[0] >> 8) * p0_spc_g) >> 8) + (((begin_mix[1] >> 8) * p1_spc_g) >> 8) + (((begin_mix[2] >> 8) * p2_spc_g) >> 8);\n        int32_t spc_b_begin = (((begin_mix[0] >> 8) * p0_spc_b) >> 8) + (((begin_mix[1] >> 8) * p1_spc_b) >> 8) + (((begin_mix[2] >> 8) * p2_spc_b) >> 8);\n        \n        int32_t spc_r_end = (((end_mix[0] >> 8) * p0_spc_r) >> 8) + (((end_mix[1] >> 8) * p1_spc_r) >> 8) + (((end_mix[2] >> 8) * p2_spc_r) >> 8);\n        int32_t spc_g_end = (((end_mix[0] >> 8) * p0_spc_g) >> 8) + (((end_mix[1] >> 8) * p1_spc_g) >> 8) + (((end_mix[2] >> 8) * p2_spc_g) >> 8);\n        int32_t spc_b_end = (((end_mix[0] >> 8) * p0_spc_b) >> 8) + (((end_mix[1] >> 8) * p1_spc_b) >> 8) + (((end_mix[2] >> 8) * p2_spc_b) >> 8);\n        \n        int32_t spc_r_adv = (spc_r_end - spc_r_begin) / span_length;\n        int32_t spc_g_adv = (spc_g_end - spc_g_begin) / span_length;\n        int32_t spc_b_adv = (spc_b_end - spc_b_begin) / span_length;\n        \n        int32_t spc_r_mix = spc_r_begin;\n        int32_t spc_g_mix = spc_g_begin;\n        int32_t spc_b_mix = spc_b_begin;\n        \n        for (int32_t x = span_ptr->begin; x <= span_ptr->end; x++) {\n            depth_mix += depth_adv;\n            \n            tex_x_mix += tex_x_adv;\n            tex_y_mix += tex_y_adv;\n            \n            col_r_mix += col_r_adv;\n            col_g_mix += col_g_adv;\n            col_b_mix += col_b_adv;\n            \n            spc_r_mix += spc_r_adv;\n            spc_g_mix += spc_g_adv;\n            spc_b_mix += spc_b_adv;\n            \n            if (depth_buffer[y * screen_width + x] > depth_mix) continue;\n            \n            int32_t tex_x = (tex_x_mix >> 8) & (texture->width - 1);\n            int32_t tex_y = (tex_y_mix >> 8) & (texture->height - 1);\n            int32_t tex_offset = (texture->width * tex_y + tex_x) * texture->channels;\n            \n            int32_t r = (((int32_t)texture->pixels[tex_offset + 0] * (col_r_mix >> 8) + spc_r_mix)) >> (16 - 5);\n            int32_t g = (((int32_t)texture->pixels[tex_offset + 1] * (col_g_mix >> 8) + spc_g_mix)) >> (16 - 6);\n            int32_t b = (((int32_t)texture->pixels[tex_offset + 2] * (col_b_mix >> 8) + spc_b_mix)) >> (16 - 5);\n            \n            if (r & ~0x1F) r = 0x1F;\n            if (g & ~0x3F) g = 0x3F;\n            if (b & ~0x1F) b = 0x1F;\n            \n            uint16_t c = (r << (5 + 6)) | (g << (5)) | b;\n            \n            depth_buffer[y * screen_width + x] = depth_mix;\n            BlitDot(x, y, c);\n        }\n    }\n}\n\nstruct StaticVertex {\n    vec3 pos;\n    vec3 nrm;\n    vec2 tex;\n    vec2 lit;\n};\n\nstruct DynamicVertex {\n    vec3 pos;\n    vec3 nrm;\n    vec2 tex;\n    vec4 wgt;\n    ivec4 ind;\n};\n\nstruct ColorVertex {\n    vec3 pos;\n    vec3 col;\n};\n\nvoid ClipLineInClipSpace(vec4& point0, vec4& point1) {\n    vec4 p0 = point0;\n    vec4 p1 = point1;\n    \n    // clip against left plane\n    if (p0.w + p0.x < 0.0f) {\n        float a = (p0.w + p0.x) / ((p0.w + p0.x) - (p1.w + p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.x < 0.0f) {\n        float a = (p1.w + p1.x) / ((p1.w + p1.x) - (p0.w + p0.x));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against right plane\n    if (p0.w - p0.x < 0.0f) {\n        float a = (p0.w - p0.x) / ((p0.w - p0.x) - (p1.w - p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.x < 0.0f) {\n        float a = (p1.w - p1.x) / ((p1.w - p1.x) - (p0.w - p0.x));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against bottom plane\n    if (p0.w + p0.y < 0.0f) {\n        float a = (p0.w + p0.y) / ((p0.w + p0.y) - (p1.w + p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.y < 0.0f) {\n        float a = (p1.w + p1.y) / ((p1.w + p1.y) - (p0.w + p0.y));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against top plane\n    if (p0.w - p0.y < 0.0f) {\n        float a = (p0.w - p0.y) / ((p0.w - p0.y) - (p1.w - p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.y < 0.0f) {\n        float a = (p1.w - p1.y) / ((p1.w - p1.y) - (p0.w - p0.y));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against near plane\n    if (p0.w + p0.z < 0.0f) {\n        float a = (p0.w + p0.z) / ((p0.w + p0.z) - (p1.w + p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w + p1.z < 0.0f) {\n        float a = (p1.w + p1.z) / ((p1.w + p1.z) - (p0.w + p0.z));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    // clip against far plane\n    if (p0.w - p0.z < 0.0f) {\n        float a = (p0.w - p0.z) / ((p0.w - p0.z) - (p1.w - p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    if (p1.w - p1.z < 0.0f) {\n        float a = (p1.w - p1.z) / ((p1.w - p1.z) - (p0.w - p0.z));\n        p1 = (1.0f - a) * p1 + a * p0;\n    }\n    \n    point0 = p0;\n    point1 = p1;\n}\n\nvec4 ClipSinglePointLine(vec4* outside, vec4* inside) {\n    vec4 p0 = *outside;\n    vec4 p1 = *inside;\n    \n    // clip against left plane\n    if (p0.w + p0.x < 0.0f) {\n        float a = (p0.w + p0.x) / ((p0.w + p0.x) - (p1.w + p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    // clip against right plane\n    if (p0.w - p0.x < 0.0f) {\n        float a = (p0.w - p0.x) / ((p0.w - p0.x) - (p1.w - p1.x));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    // clip against bottom plane\n    if (p0.w + p0.y < 0.0f) {\n        float a = (p0.w + p0.y) / ((p0.w + p0.y) - (p1.w + p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    // clip against top plane\n    if (p0.w - p0.y < 0.0f) {\n        float a = (p0.w - p0.y) / ((p0.w - p0.y) - (p1.w - p1.y));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    // clip against near plane\n    if (p0.w + p0.z < 0.0f) {\n        float a = (p0.w + p0.z) / ((p0.w + p0.z) - (p1.w + p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    // clip against far plane\n    if (p0.w - p0.z < 0.0f) {\n        float a = (p0.w - p0.z) / ((p0.w - p0.z) - (p1.w - p1.z));\n        p0 = (1.0f - a) * p0 + a * p1;\n    }\n    \n    return p0;\n}\n\nvec4 ClipSinglePointLineLeftPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w + outside.x) / ((outside.w + outside.x) - (inside.w + inside.x));\n    return (1.0f - a) * outside + a * inside;\n}\n\nvec4 ClipSinglePointLineRightPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w - outside.x) / ((outside.w - outside.x) - (inside.w - inside.x));\n    return (1.0f - a) * outside + a * inside;\n}\n\nvec4 ClipSinglePointLineBottomPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w + outside.y) / ((outside.w + outside.y) - (inside.w + inside.y));\n    return (1.0f - a) * outside + a * inside;\n}\n\nvec4 ClipSinglePointLineTopPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w - outside.y) / ((outside.w - outside.y) - (inside.w - inside.y));\n    return (1.0f - a) * outside + a * inside;\n}\n\nvec4 ClipSinglePointLineNearPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w + outside.z) / ((outside.w + outside.z) - (inside.w + inside.z));\n    return (1.0f - a) * outside + a * inside;\n}\n\nvec4 ClipSinglePointLineFarPlane(vec4 outside, vec4 inside) {\n    float a = (outside.w - outside.z) / ((outside.w - outside.z) - (inside.w - inside.z));\n    return (1.0f - a) * outside + a * inside;\n}\n\nstruct ClipPoint {\n    vec4 coordinate;\n    vec3 barycentric;\n};\n\nstruct ClipTriangle {\n    ClipPoint points[3];\n};\n\nClipPoint ClipSingleClipPointLineLeftPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w + outside.coordinate.x) / ((outside.coordinate.w + outside.coordinate.x) - (inside.coordinate.w + inside.coordinate.x));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nClipPoint ClipSingleClipPointLineRightPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w - outside.coordinate.x) / ((outside.coordinate.w - outside.coordinate.x) - (inside.coordinate.w - inside.coordinate.x));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nClipPoint ClipSingleClipPointLineBottomPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w + outside.coordinate.y) / ((outside.coordinate.w + outside.coordinate.y) - (inside.coordinate.w + inside.coordinate.y));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nClipPoint ClipSingleClipPointLineTopPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w - outside.coordinate.y) / ((outside.coordinate.w - outside.coordinate.y) - (inside.coordinate.w - inside.coordinate.y));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nClipPoint ClipSingleClipPointLineNearPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w + outside.coordinate.z) / ((outside.coordinate.w + outside.coordinate.z) - (inside.coordinate.w + inside.coordinate.z));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nClipPoint ClipSingleClipPointLineFarPlane(ClipPoint outside, ClipPoint inside) {\n    float a = (outside.coordinate.w - outside.coordinate.z) / ((outside.coordinate.w - outside.coordinate.z) - (inside.coordinate.w - inside.coordinate.z));\n    return {(1.0f - a) * outside.coordinate + a * inside.coordinate, (1.0f - a) * outside.barycentric + a * inside.barycentric};\n}\n\nvoid PerspectiveDivision(vec4& p) {\n    if (p.w != 0.0f) {\n        p.x /= p.w;\n        p.y /= p.w;\n        p.z /= p.w;\n    }\n}\n\nvoid PerspectiveDivision(vec4& p0, vec4& p1) {\n    if (p0.w != 0.0f) {\n        p0.x /= p0.w;\n        p0.y /= p0.w;\n    }\n    \n    if (p1.w != 0.0f) {\n        p1.x /= p1.w;\n        p1.y /= p1.w;\n    }\n}\n\nstd::pair<int32_t, int32_t> ClipSpaceToScreenSpace(const vec4 p) {\n    int32_t px = 2 + (p.x + 1.0f) * 0.5f * (screen_width - 4);\n    int32_t py = 2 + (1.0f - p.y) * 0.5f * (screen_height - 4);\n    return {px, py};\n}\n\nbool PointVisible(vec4 p) {    \n    // point outside left plane\n    if (p.w + p.x < 0.0f) {\n        return false;\n    }\n\n    // point outside right plane\n    if (p.w - p.x < 0.0f) {\n        return false;\n    }\n\n    // point outside bottom plane\n    if (p.w + p.y < 0.0f) {\n        return false;\n    }\n\n    // point outside top plane\n    if (p.w - p.y < 0.0f) {\n        return false;\n    }\n\n    // point outside near plane\n    if (p.w + p.z < 0.0f) {\n        return false;\n    }\n    \n    // point outside far plane\n    if (p.w - p.z < 0.0f) {\n        return false;\n    }\n    \n    return true;\n}\n\nbool PointOutsideLeftPlane(vec4 p) {    \n    return p.w + p.x < 0.0f;\n}\n\nbool PointOutsideRightPlane(vec4 p) {    \n    return p.w - p.x < 0.0f;\n}\n\nbool PointOutsideBottomPlane(vec4 p) {    \n    return p.w + p.y < 0.0f;\n}\n\nbool PointOutsideTopPlane(vec4 p) {    \n    return p.w - p.y < 0.0f;\n}\n\nbool PointOutsideNearPlane(vec4 p) {    \n    return p.w + p.z < 0.0f;\n}\n\nbool PointOutsideFarPlane(vec4 p) {    \n    return p.w - p.z < 0.0f;\n}\n\nbool LineVisible(vec4 p0, vec4 p1) {    \n    // line outside left plane\n    if (p0.w + p0.x < 0.0f && p1.w + p1.x < 0.0f) {\n        return false;\n    }\n\n    // line outside right plane\n    if (p0.w - p0.x < 0.0f && p1.w - p1.x < 0.0f) {\n        return false;\n    }\n\n    // line outside bottom plane\n    if (p0.w + p0.y < 0.0f && p1.w + p1.y < 0.0f) {\n        return false;\n    }\n\n    // line outside top plane\n    if (p0.w - p0.y < 0.0f && p1.w - p1.y < 0.0f) {\n        return false;\n    }\n\n    // line outside near plane\n    if (p0.w + p0.z < 0.0f && p1.w + p1.z < 0.0f) {\n        return false;\n    }\n    \n    // line outside far plane\n    if (p0.w - p0.z < 0.0f && p1.w - p1.z < 0.0f) {\n        return false;\n    }\n    \n    return true;\n}\n\nbool TriangleVisible(vec4 p0, vec4 p1, vec4 p2) {    \n    // line outside left plane\n    if (p0.w + p0.x < 0.0f && p1.w + p1.x < 0.0f && p2.w + p2.x < 0.0f) {\n        return false;\n    }\n\n    // line outside right plane\n    if (p0.w - p0.x < 0.0f && p1.w - p1.x < 0.0f && p2.w - p2.x < 0.0f) {\n        return false;\n    }\n\n    // line outside bottom plane\n    if (p0.w + p0.y < 0.0f && p1.w + p1.y < 0.0f && p2.w + p2.y < 0.0f) {\n        return false;\n    }\n\n    // line outside top plane\n    if (p0.w - p0.y < 0.0f && p1.w - p1.y < 0.0f && p2.w - p2.y < 0.0f) {\n        return false;\n    }\n\n    // line outside near plane\n    if (p0.w + p0.z < 0.0f && p1.w + p1.z < 0.0f && p2.w + p2.z < 0.0f) {\n        return false;\n    }\n    \n    // line outside far plane\n    if (p0.w - p0.z < 0.0f && p1.w - p1.z < 0.0f && p2.w - p2.z < 0.0f) {\n        return false;\n    }\n    \n    return true;\n}\n\nvoid ClipRenderLine(vec4 p0, vec4 p1, uint16_t color) {\n    if (!LineVisible(p0, p1)) return;\n    \n    ClipLineInClipSpace(p0, p1);\n    PerspectiveDivision(p0, p1);\n    \n    auto [px0, py0] = ClipSpaceToScreenSpace(p0);\n    auto [px1, py1] = ClipSpaceToScreenSpace(p1);\n    \n    BlitLine(px0, py0, px1, py1, color);\n}\n\nsize_t ClipTriangleList(ClipTriangle* triangles) {\n    // accidentally messed up calculations, this array should actually be 2^6? large?\n    // we could also fold in tri_list_1 into triangles\n    ClipTriangle tri_list_1[12] = {*triangles};\n    ClipTriangle tri_list_2[12];\n    size_t tri_count_working = 1;\n    size_t tri_count_buffered = 0;\n    ClipTriangle* working_list = tri_list_1;\n    ClipTriangle* buffer_list = tri_list_2;\n    \n    auto clip_lambda = [&](auto outside_func, auto clip_func) {\n        for (size_t i = 0; i < tri_count_working; i++) {\n            ClipPoint* in_points[3] = {nullptr, nullptr, nullptr};\n            ClipPoint* out_points[3] = {nullptr, nullptr, nullptr};\n            size_t in_point_count = 0;\n            size_t out_point_count = 0;\n            \n            for (size_t p = 0; p < 3; p++) {\n                if (outside_func(working_list[i].points[p].coordinate)) {\n                    out_points[out_point_count++] = &working_list[i].points[p];\n                } else {\n                    in_points[in_point_count++] = &working_list[i].points[p];\n                }\n            }\n            \n            switch (out_point_count) {\n                case 0:\n                    // triangle doesn't intersect plane, don't clip\n                    buffer_list[tri_count_buffered++] = working_list[i];\n                    break;\n                case 1: {\n                    ClipPoint clipped0 = clip_func(*out_points[0], *in_points[0]);\n                    ClipPoint clipped1 = clip_func(*out_points[0], *in_points[1]);\n                    \n                    buffer_list[tri_count_buffered++] = {{*in_points[1], *in_points[0], clipped0}};\n                    buffer_list[tri_count_buffered++] = {{*in_points[1], clipped0, clipped1}};\n                    \n                    } break;\n                case 2: {\n                    ClipPoint clipped0 = clip_func(*out_points[0], *in_points[0]);\n                    ClipPoint clipped1 = clip_func(*out_points[1], *in_points[0]);\n                    \n                    buffer_list[tri_count_buffered++] = {{*in_points[0], clipped0, clipped1}};\n                    } break;\n                case 3:\n                    // triangle completely outside of plane, discard\n                    break;\n            }\n        }\n        \n        assert(tri_count_buffered != 12);\n        \n        tri_count_working = tri_count_buffered;\n        tri_count_buffered = 0;\n        std::swap(working_list, buffer_list);\n    };\n    \n    clip_lambda(PointOutsideLeftPlane, ClipSingleClipPointLineLeftPlane);\n    clip_lambda(PointOutsideRightPlane, ClipSingleClipPointLineRightPlane);\n    clip_lambda(PointOutsideBottomPlane, ClipSingleClipPointLineBottomPlane);\n    clip_lambda(PointOutsideTopPlane, ClipSingleClipPointLineTopPlane);\n    clip_lambda(PointOutsideNearPlane, ClipSingleClipPointLineNearPlane);\n    clip_lambda(PointOutsideFarPlane, ClipSingleClipPointLineFarPlane);\n    \n    for (size_t i = 0; i < tri_count_working; i++) {\n        triangles[i] = working_list[i];\n    }\n    \n    return tri_count_working;\n}\n\nvoid RenderFrame() {\n    memset(depth_buffer, 0, screen_width * screen_height * sizeof(float));\n\n    if (clear_screen) {\n        uint16_t clear_color = IntColor(screen_clear_color);\n        for (int i = 0; i < screen_width * screen_height; i++) {\n            screen_buffer[i] = clear_color;\n        }\n    }\n    \n    std::vector<std::pair<uint32_t, SWDrawListEntry*>> draw_list_sorted;\n    for (auto& entry : draw_list) {\n        uint32_t sort_key = entry.layer;\n        draw_list_sorted.push_back({sort_key, &entry});\n    }\n    sort(draw_list_sorted.begin(), draw_list_sorted.end());\n    \n    uint32_t current_layer = 0;\n    for (auto [_, entry] : draw_list_sorted) {\n        if (!(entry->flags & FLAG_RENDER)) continue;\n        if (!entry->vertex_array) continue;\n\n        if (current_layer != entry->layer) {\n            // TODO: zero out zbuffer?\n        }\n        current_layer = entry->layer;\n        \n        switch (entry->vertex_array->type) {\n            case SW_STATIC_LIGHTMAPPED:\n                \n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    StaticVertex& p0 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    StaticVertex& p1 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    StaticVertex& p2 = ((StaticVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    vec4 pr0 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p0.pos, 1.0f);\n                    vec4 pr1 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p1.pos, 1.0f);\n                    vec4 pr2 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p2.pos, 1.0f);\n                    \n                    if (!TriangleVisible(pr0, pr1, pr2)) continue;\n                    \n                    // backface culling\n                    //vec2 ab = {pr1.x/pr1.w - pr0.x/pr0.w, pr1.y/pr1.w - pr0.y/pr0.w};\n                    //vec2 ac = {pr2.x/pr2.w - pr0.x/pr0.w, pr2.y/pr2.w - pr0.y/pr0.w};\n                    //if (ab.x * ac.y - ac.x * ab.y < 0.0f) continue;\n                    \n                    if (PointVisible(pr0) && PointVisible(pr1) && PointVisible(pr2)) {\n                        PerspectiveDivision(pr0);\n                        PerspectiveDivision(pr1);\n                        PerspectiveDivision(pr2);\n        \n                        // backface culling\n                        vec2 ab = {pr1.x - pr0.x, pr1.y - pr0.y};\n                        vec2 ac = {pr2.x - pr0.x, pr2.y - pr0.y};\n                        if (ab.x * ac.y - ac.x * ab.y < 0.0f) continue;\n    \n                        auto [px0, py0] = ClipSpaceToScreenSpace(pr0);\n                        auto [px1, py1] = ClipSpaceToScreenSpace(pr1);\n                        auto [px2, py2] = ClipSpaceToScreenSpace(pr2);\n                        \n                        float depth0 = (pr0.z/pr0.w);\n                        float depth1 = (pr1.z/pr1.w);\n                        float depth2 = (pr2.z/pr2.w);\n                        \n                        if (depth0 < 0.0f) depth0 = 0.0f;\n                        if (depth1 < 0.0f) depth1 = 0.0f;\n                        if (depth2 < 0.0f) depth2 = 0.0f;\n                        \n                        if (depth0 > 1.0f) depth0 = 1.0f;\n                        if (depth1 > 1.0f) depth1 = 1.0f;\n                        if (depth2 > 1.0f) depth2 = 1.0f;\n                        \n                        uint32_t pz0 = (float)0xFFFF * depth0;\n                        uint32_t pz1 = (float)0xFFFF * depth1;\n                        uint32_t pz2 = (float)0xFFFF * depth2;\n                        \n                        Point2D ps[3] = {{px0, py0, pz0}, {px1, py1, pz1}, {px2, py2, pz2}};\n                        \n                        vec2 texture_uvs[3] = {p0.tex, p1.tex, p2.tex};\n                        vec2 lightmap_uvs[3] = {p0.lit, p1.lit, p2.lit};\n                        \n                        ScanlineConvertTriangle(scanlines, ps);\n                        RasterizeTriangleLightmapped(scanlines, ps, IntColor(COLOR_WHITE), texture_uvs, lightmap_uvs, entry->material->texture, entry->lightmap);\n                    } else {\n                        ClipTriangle clipped[12] = {{{{pr0, {1, 0, 0}}, {pr1, {0, 1, 0}}, {pr2, {0, 0, 1}}}}};\n                        size_t tri_count = ClipTriangleList(clipped);\n                        \n                        for (size_t i = 0; i < tri_count; i++) {\n                            PerspectiveDivision(clipped[i].points[0].coordinate);\n                            PerspectiveDivision(clipped[i].points[1].coordinate);\n                            PerspectiveDivision(clipped[i].points[2].coordinate);\n        \n                            // backface culling doesn't work, since the triangle\n                            // triangle windigs get messed up? or something like\n                            // that.\n                            // TODO: fix\n                            //vec2 ab = {clipped[i].points[1].coordinate.x - clipped[i].points[0].coordinate.x, clipped[i].points[1].coordinate.y - clipped[i].points[0].coordinate.y};\n                            //vec2 ac = {clipped[i].points[2].coordinate.x - clipped[i].points[0].coordinate.x, clipped[i].points[2].coordinate.y - clipped[i].points[0].coordinate.y};\n                            //if (ab.x * ac.y - ac.x * ab.y < 0.0f) continue;\n        \n                            auto [px0, py0] = ClipSpaceToScreenSpace(clipped[i].points[0].coordinate);\n                            auto [px1, py1] = ClipSpaceToScreenSpace(clipped[i].points[1].coordinate);\n                            auto [px2, py2] = ClipSpaceToScreenSpace(clipped[i].points[2].coordinate);\n                            \n                            float depth0 = (clipped[i].points[0].coordinate.z/clipped[i].points[0].coordinate.w);\n                            float depth1 = (clipped[i].points[1].coordinate.z/clipped[i].points[1].coordinate.w);\n                            float depth2 = (clipped[i].points[2].coordinate.z/clipped[i].points[2].coordinate.w);\n                            \n                            if (depth0 < 0.0f) depth0 = 0.0f;\n                            if (depth1 < 0.0f) depth1 = 0.0f;\n                            if (depth2 < 0.0f) depth2 = 0.0f;\n                            \n                            if (depth0 > 1.0f) depth0 = 1.0f;\n                            if (depth1 > 1.0f) depth1 = 1.0f;\n                            if (depth2 > 1.0f) depth2 = 1.0f;\n                            \n                            uint32_t pz0 = (float)0xFFFF * depth0;\n                            uint32_t pz1 = (float)0xFFFF * depth1;\n                            uint32_t pz2 = (float)0xFFFF * depth2;\n   \n                            const float bary00 = clipped[i].points[0].barycentric.x;\n                            const float bary01 = clipped[i].points[0].barycentric.y;\n                            const float bary02 = clipped[i].points[0].barycentric.z;\n                            const float bary10 = clipped[i].points[1].barycentric.x;\n                            const float bary11 = clipped[i].points[1].barycentric.y;\n                            const float bary12 = clipped[i].points[1].barycentric.z;\n                            const float bary20 = clipped[i].points[2].barycentric.x;\n                            const float bary21 = clipped[i].points[2].barycentric.y;\n                            const float bary22 = clipped[i].points[2].barycentric.z;\n                            \n                            vec2 texture_uvs[3] = {p0.tex * bary00 + p1.tex * bary01 + p2.tex * bary02, \n                                                   p0.tex * bary10 + p1.tex * bary11 + p2.tex * bary12,\n                                                   p0.tex * bary20 + p1.tex * bary21 + p2.tex * bary22};\n                            vec2 lightmap_uvs[3] = {p0.lit * bary00 + p1.lit * bary01 + p2.lit * bary02, \n                                                    p0.lit * bary10 + p1.lit * bary11 + p2.lit * bary12,\n                                                    p0.lit * bary20 + p1.lit * bary21 + p2.lit * bary22};\n                            \n                            Point2D ps[3] = {{px0, py0, pz0}, {px1, py1, pz1}, {px2, py2, pz2}};\n                            ScanlineConvertTriangle(scanlines, ps);\n                            RasterizeTriangleLightmapped(scanlines, ps, IntColor(COLOR_WHITE), texture_uvs, lightmap_uvs, entry->material->texture, entry->lightmap);\n                        }\n                    }\n                    \n                    \n                }\n                \n                break;\n            case SW_DYNAMIC_BLENDED:\n                if (!entry->index_array) continue;\n\n                for (size_t i = 0; i < entry->index_length; i++) {\n                    uint32_t triangle = (entry->index_offset + i) * 3;\n                    \n                    DynamicVertex& p0 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 0]];\n                    DynamicVertex& p1 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 1]];\n                    DynamicVertex& p2 = ((DynamicVertex*)entry->vertex_array->vertices)[entry->index_array->indices[triangle + 2]];\n                    \n                    vec4 local_pos0 = vec4(p0.pos, 1.0f);\n                    vec4 local_pos1 = vec4(p1.pos, 1.0f);\n                    vec4 local_pos2 = vec4(p2.pos, 1.0f);\n                    \n                    if (entry->pose) {\n                        vec4 local_pos00 = entry->pose->pose[p0.ind.x] * local_pos0;\n                        vec4 local_pos01 = entry->pose->pose[p0.ind.y] * local_pos0;\n                        vec4 local_pos02 = entry->pose->pose[p0.ind.z] * local_pos0;\n                        vec4 local_pos03 = entry->pose->pose[p0.ind.w] * local_pos0;\n                        \n                        vec4 local_pos10 = entry->pose->pose[p1.ind.x] * local_pos1;\n                        vec4 local_pos11 = entry->pose->pose[p1.ind.y] * local_pos1;\n                        vec4 local_pos12 = entry->pose->pose[p1.ind.z] * local_pos1;\n                        vec4 local_pos13 = entry->pose->pose[p1.ind.w] * local_pos1;\n                        \n                        vec4 local_pos20 = entry->pose->pose[p2.ind.x] * local_pos2;\n                        vec4 local_pos21 = entry->pose->pose[p2.ind.y] * local_pos2;\n                        vec4 local_pos22 = entry->pose->pose[p2.ind.z] * local_pos2;\n                        vec4 local_pos23 = entry->pose->pose[p2.ind.w] * local_pos2;\n                        \n                        local_pos0 = local_pos00 * p0.wgt.x + local_pos01 * p0.wgt.y + local_pos02 * p0.wgt.z + local_pos03 * p0.wgt.w;\n                        local_pos1 = local_pos10 * p1.wgt.x + local_pos11 * p1.wgt.y + local_pos12 * p1.wgt.z + local_pos13 * p1.wgt.w;\n                        local_pos2 = local_pos20 * p2.wgt.x + local_pos21 * p2.wgt.y + local_pos22 * p2.wgt.z + local_pos23 * p2.wgt.w;\n                    }\n                    \n                    const vec4 world_pos0 = entry->matrix * local_pos0;\n                    const vec4 world_pos1 = entry->matrix * local_pos1;\n                    const vec4 world_pos2 = entry->matrix * local_pos2;\n                    \n                    vec4 pos0 = layers[0].projection_matrix * layers[0].view_matrix * world_pos0;\n                    vec4 pos1 = layers[0].projection_matrix * layers[0].view_matrix * world_pos1;\n                    vec4 pos2 = layers[0].projection_matrix * layers[0].view_matrix * world_pos2;\n                    \n                    if (!TriangleVisible(pos0, pos1, pos2)) continue;\n                    \n                    // backface culling\n                    vec2 ab = {pos1.x/pos1.w - pos0.x/pos0.w, pos1.y/pos1.w - pos0.y/pos0.w};\n                    vec2 ac = {pos2.x/pos2.w - pos0.x/pos0.w, pos2.y/pos2.w - pos0.y/pos0.w};\n                    if (ab.x * ac.y - ac.x * ab.y < 0.0f) continue;\n                    \n                    vec4 local_nrm0 = vec4(p0.nrm, 0.0f);\n                    vec4 local_nrm1 = vec4(p1.nrm, 0.0f);\n                    vec4 local_nrm2 = vec4(p2.nrm, 0.0f);\n                    \n                    if (entry->pose) {\n                        vec4 local_nrm00 = entry->pose->pose[p0.ind.x] * local_nrm0;\n                        vec4 local_nrm01 = entry->pose->pose[p0.ind.y] * local_nrm0;\n                        vec4 local_nrm02 = entry->pose->pose[p0.ind.z] * local_nrm0;\n                        vec4 local_nrm03 = entry->pose->pose[p0.ind.w] * local_nrm0;\n                        \n                        vec4 local_nrm10 = entry->pose->pose[p1.ind.x] * local_nrm1;\n                        vec4 local_nrm11 = entry->pose->pose[p1.ind.y] * local_nrm1;\n                        vec4 local_nrm12 = entry->pose->pose[p1.ind.z] * local_nrm1;\n                        vec4 local_nrm13 = entry->pose->pose[p1.ind.w] * local_nrm1;\n                        \n                        vec4 local_nrm20 = entry->pose->pose[p2.ind.x] * local_nrm2;\n                        vec4 local_nrm21 = entry->pose->pose[p2.ind.y] * local_nrm2;\n                        vec4 local_nrm22 = entry->pose->pose[p2.ind.z] * local_nrm2;\n                        vec4 local_nrm23 = entry->pose->pose[p2.ind.w] * local_nrm2;\n                        \n                        local_nrm0 = local_nrm00 * p0.wgt.x + local_nrm01 * p0.wgt.y + local_nrm02 * p0.wgt.z + local_nrm03 * p0.wgt.w;\n                        local_nrm1 = local_nrm10 * p1.wgt.x + local_nrm11 * p1.wgt.y + local_nrm12 * p1.wgt.z + local_nrm13 * p1.wgt.w;\n                        local_nrm2 = local_nrm20 * p2.wgt.x + local_nrm21 * p2.wgt.y + local_nrm22 * p2.wgt.z + local_nrm23 * p2.wgt.w;\n                    }\n                    \n                    const vec3 world_nrm0 = glm::normalize(vec3(entry->matrix * local_nrm0));\n                    const vec3 world_nrm1 = glm::normalize(vec3(entry->matrix * local_nrm1));\n                    const vec3 world_nrm2 = glm::normalize(vec3(entry->matrix * local_nrm2));\n                    \n                    const vec3 view_dir0 = normalize(layers[0].view_position - vec3(world_pos0));\n                    const vec3 view_dir1 = normalize(layers[0].view_position - vec3(world_pos1));\n                    const vec3 view_dir2 = normalize(layers[0].view_position - vec3(world_pos2));\n                    \n                    vec3 color0, color1, color2;\n                    if (entry->flags & FLAG_NO_DIRECTIONAL) {\n                        color0 = {0.0f, 0.0f, 0.0f};\n                        color1 = {0.0f, 0.0f, 0.0f};\n                        color2 = {0.0f, 0.0f, 0.0f};\n                    } else {\n                        color0 = layers[0].ambient_color + layers[0].sun_color * glm::max(glm::dot(world_nrm0, normalize(layers[0].sun_direction)), 0.0f);\n                        color1 = layers[0].ambient_color + layers[0].sun_color * glm::max(glm::dot(world_nrm1, normalize(layers[0].sun_direction)), 0.0f);\n                        color2 = layers[0].ambient_color + layers[0].sun_color * glm::max(glm::dot(world_nrm2, normalize(layers[0].sun_direction)), 0.0f);\n                    }\n                    \n                    vec3 spec_color0 = {0.0f, 0.0f, 0.0f};\n                    vec3 spec_color1 = {0.0f, 0.0f, 0.0f};\n                    vec3 spec_color2 = {0.0f, 0.0f, 0.0f};\n                    \n                    for (size_t i = 0; i < 4; i++) {\n                        SWLight* light = entry->lights[i];\n\n                        if (!light) continue;\n                        \n                        vec3 light_vec0 = light->location - vec3(world_pos0);\n                        vec3 light_vec1 = light->location - vec3(world_pos1);\n                        vec3 light_vec2 = light->location - vec3(world_pos2);\n                        float dist0 = glm::length(light_vec0);\n                        float dist1 = glm::length(light_vec1);\n                        float dist2 = glm::length(light_vec2);\n                        float strn0 = glm::max(glm::dot(glm::normalize(light_vec0), world_nrm0), 0.0f);\n                        float strn1 = glm::max(glm::dot(glm::normalize(light_vec1), world_nrm1), 0.0f);\n                        float strn2 = glm::max(glm::dot(glm::normalize(light_vec2), world_nrm2), 0.0f);\n                        float attn0 = strn0 * (1.0f / (1.0f + 0.09f * dist0 + 0.032f * (dist0 * dist0)));\n                        float attn1 = strn1 * (1.0f / (1.0f + 0.09f * dist0 + 0.032f * (dist1 * dist1)));\n                        float attn2 = strn2 * (1.0f / (1.0f + 0.09f * dist0 + 0.032f * (dist2 * dist2)));\n                        float drct0 = glm::clamp(glm::pow(glm::max(glm::dot(light->direction, -glm::normalize(light_vec0)), 0.0f), light->exponent), 0.0f, 1.0f);\n                        float drct1 = glm::clamp(glm::pow(glm::max(glm::dot(light->direction, -glm::normalize(light_vec1)), 0.0f), light->exponent), 0.0f, 1.0f);\n                        float drct2 = glm::clamp(glm::pow(glm::max(glm::dot(light->direction, -glm::normalize(light_vec2)), 0.0f), light->exponent), 0.0f, 1.0f);\n                        \n                        float spec0 = glm::pow(glm::max(glm::dot(view_dir0, glm::reflect(-glm::normalize(light_vec0), world_nrm0)), 0.0f), entry->specular_exponent);\n                        float spec1 = glm::pow(glm::max(glm::dot(view_dir1, glm::reflect(-glm::normalize(light_vec1), world_nrm1)), 0.0f), entry->specular_exponent);\n                        float spec2 = glm::pow(glm::max(glm::dot(view_dir2, glm::reflect(-glm::normalize(light_vec2), world_nrm2)), 0.0f), entry->specular_exponent);\n                        \n                        color0 += light->color * attn0 * drct0;\n                        color1 += light->color * attn1 * drct1;\n                        color2 += light->color * attn2 * drct2;\n                        \n                        spec_color0 += entry->specular_weight * spec0 * light->color * drct0;\n                        spec_color1 += entry->specular_weight * spec1 * light->color * drct1;\n                        spec_color2 += entry->specular_weight * spec2 * light->color * drct2;\n                    }\n                    \n                    color0 += (1.0f - entry->specular_transparency) * spec_color0;\n                    color1 += (1.0f - entry->specular_transparency) * spec_color1;\n                    color2 += (1.0f - entry->specular_transparency) * spec_color2;\n                    \n                    if (PointVisible(pos0) && PointVisible(pos1) && PointVisible(pos2)) {\n                        PerspectiveDivision(pos0);\n                        PerspectiveDivision(pos1);\n                        PerspectiveDivision(pos2);\n    \n                        auto [px0, py0] = ClipSpaceToScreenSpace(pos0);\n                        auto [px1, py1] = ClipSpaceToScreenSpace(pos1);\n                        auto [px2, py2] = ClipSpaceToScreenSpace(pos2);\n                        \n                        uint32_t pz0 = (float)0xFFFF * (pos0.z/pos0.w);\n                        uint32_t pz1 = (float)0xFFFF * (pos1.z/pos1.w);\n                        uint32_t pz2 = (float)0xFFFF * (pos2.z/pos2.w);\n                        \n                        Point2D ps[3] = {{px0, py0, pz0}, {px1, py1, pz1}, {px2, py2, pz2}};\n                        \n                        vec2 texture_uvs[3] = {p0.tex, p1.tex, p2.tex};\n                        vec3 colors[3] = {color0, color1, color2};\n                        vec3 speculars[3] = {spec_color0, spec_color1, spec_color2};\n\n                        ScanlineConvertTriangle(scanlines, ps);\n                        RasterizeTriangleShadedTextured(scanlines, ps, colors, speculars, texture_uvs, entry->material->texture);\n                    } else {\n                        ClipTriangle clipped[12] = {{{{pos0, {1, 0, 0}}, {pos1, {0, 1, 0}}, {pos2, {0, 0, 1}}}}};\n                        size_t tri_count = ClipTriangleList(clipped);\n                        \n                        for (size_t i = 0; i < tri_count; i++) {\n                            PerspectiveDivision(clipped[i].points[0].coordinate);\n                            PerspectiveDivision(clipped[i].points[1].coordinate);\n                            PerspectiveDivision(clipped[i].points[2].coordinate);\n        \n                            auto [px0, py0] = ClipSpaceToScreenSpace(clipped[i].points[0].coordinate);\n                            auto [px1, py1] = ClipSpaceToScreenSpace(clipped[i].points[1].coordinate);\n                            auto [px2, py2] = ClipSpaceToScreenSpace(clipped[i].points[2].coordinate);\n                            \n                            uint32_t pz0 = (float)0xFFFF * (clipped[i].points[0].coordinate.z/clipped[i].points[0].coordinate.w);\n                            uint32_t pz1 = (float)0xFFFF * (clipped[i].points[1].coordinate.z/clipped[i].points[1].coordinate.w);\n                            uint32_t pz2 = (float)0xFFFF * (clipped[i].points[2].coordinate.z/clipped[i].points[2].coordinate.w);\n   \n                            const float bary00 = clipped[i].points[0].barycentric.x;\n                            const float bary01 = clipped[i].points[0].barycentric.y;\n                            const float bary02 = clipped[i].points[0].barycentric.z;\n                            const float bary10 = clipped[i].points[1].barycentric.x;\n                            const float bary11 = clipped[i].points[1].barycentric.y;\n                            const float bary12 = clipped[i].points[1].barycentric.z;\n                            const float bary20 = clipped[i].points[2].barycentric.x;\n                            const float bary21 = clipped[i].points[2].barycentric.y;\n                            const float bary22 = clipped[i].points[2].barycentric.z;\n                            \n                            vec2 texture_uvs[3] = {p0.tex * bary00 + p1.tex * bary01 + p2.tex * bary02, \n                                                   p0.tex * bary10 + p1.tex * bary11 + p2.tex * bary12,\n                                                   p0.tex * bary20 + p1.tex * bary21 + p2.tex * bary22};\n                            vec3 colors[3] = {color0 * bary00 + color1 * bary01 + color2 * bary02, \n                                              color0 * bary10 + color1 * bary11 + color2 * bary12,\n                                              color0 * bary20 + color1 * bary21 + color2 * bary22};\n                            vec3 speculars[3] = {spec_color0 * bary00 + spec_color1 * bary01 + spec_color2 * bary02, \n                                                 spec_color0 * bary10 + spec_color1 * bary11 + spec_color2 * bary12,\n                                                 spec_color0 * bary20 + spec_color1 * bary21 + spec_color2 * bary22};\n                            \n                            Point2D ps[3] = {{px0, py0, pz0}, {px1, py1, pz1}, {px2, py2, pz2}};\n                            ScanlineConvertTriangle(scanlines, ps);\n                            RasterizeTriangleShadedTextured(scanlines, ps, colors, speculars, texture_uvs, entry->material->texture);\n                        }\n                    }\n                    \n                    \n                }\n                \n                break;\n                \n            case SW_STATIC_COLORED:\n                \n                if (!(entry->flags & FLAG_DRAW_LINES)) continue;\n                \n                for (size_t i = 0; i < entry->index_length / 2; i++) {\n                    ColorVertex& p0 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 0];\n                    ColorVertex& p1 = ((ColorVertex*)entry->vertex_array->vertices)[i * 2 + 1];\n                    \n                    vec4 pr0 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p0.pos, 1.0f);\n                    vec4 pr1 = layers[0].projection_matrix * layers[0].view_matrix * entry->matrix * vec4(p1.pos, 1.0f);\n                    \n                    ClipRenderLine(pr0, pr1, IntColor(p0.col));\n                }\n                \n                break;\n            default:\n                break;\n        }\n    }\n\n}\n\ndrawlistentry_t InsertDrawListEntry() {\n    return drawlistentry_t {.sw = draw_list.AddNew()};\n}\n\nvoid RemoveDrawListEntry(drawlistentry_t entry) {\n    draw_list.Remove(entry.sw);\n}\n\nuint32_t GetFlags(drawlistentry_t entry) {\n    return entry.sw->flags;\n}\n\nvoid SetFlags(drawlistentry_t entry, uint32_t flags) {\n    entry.sw->flags = flags;\n}\n\nvoid SetLayer(drawlistentry_t entry, uint32_t layer) {\n    entry.sw->layer = layer;\n}\n\nvoid SetPose(drawlistentry_t entry, Pose* pose) {\n    entry.sw->pose = pose;\n}\n\nvoid SetLightmap(drawlistentry_t entry, texturehandle_t lightmap) {\n    entry.sw->lightmap = lightmap.sw_texture;\n}\n\nvoid SetEnvironmentMap(drawlistentry_t entry, texturehandle_t environmentmap) {\n    entry.sw->environmentmap = environmentmap.sw_texture;\n}\n\nvoid SetSphericalHarmonic(drawlistentry_t entry, sphericalharmonic_t harmonic) {\n    entry.sw->harmonic = harmonic;\n}\n\nvoid SetDrawListAABB(drawlistentry_t entry, vec3 min, vec3 max) {\n    //entry.sw->aabb_min = min;\n    //entry.sw->aabb_max = max;\n}\n\nvoid SetDrawListColors(drawlistentry_t entry, size_t count, vec4* color) {\n    entry.sw->color = *color;\n}\n\nvoid SetDrawListTextureOffsets(drawlistentry_t entry, size_t count, vec4* offset) {\n    /*for (size_t i = 0; i < count; i++) {\n        entry.sw->texture_transforms[i] = offset[i];\n    }*/\n}\n\n\nvoid SetDrawListSpecularities(drawlistentry_t entry, size_t count, float* weight, float* exponent, float* transparency) {\n    entry.sw->specular_weight = *weight;\n    entry.sw->specular_exponent = *exponent;\n    entry.sw->specular_transparency = *transparency;\n}\n\nvoid SetLights(drawlistentry_t entry, light_t* lights) {\n    for (size_t i = 0; i < 4; i++) {\n        entry.sw->lights[i] = lights[i].sw;\n    }\n}\n\nvoid SetMatrix(drawlistentry_t entry, const mat4& matrix) {\n    entry.sw->matrix = matrix;\n}\n\nvoid SetFadeDistance(drawlistentry_t entry, float near, float far) {\n    //entry.sw->fade_near = near;\n    //entry.sw->fade_far = far;\n}\n\nvoid SetDrawListVertexArray(drawlistentry_t entry, vertexarray_t vertex_array_handle) {\n    entry.sw->vertex_array = vertex_array_handle.sw_vertex_array;\n}\n\nvoid SetDrawListSpriteArray(drawlistentry_t entry, spritearray_t sprite_array_handle) {\n    \n}\n\nvoid SetDrawListIndexArray(drawlistentry_t entry, indexarray_t index_array_handle) {\n    entry.sw->index_array = index_array_handle.sw_index_array;\n}\n\nvoid SetDrawListIndexRange(drawlistentry_t entry, uint32_t index_offset, uint32_t index_length) {\n    entry.sw->index_offset = index_offset;\n    entry.sw->index_length = index_length;\n}\n\nbool SetDrawListShader(drawlistentry_t entry, vertexformat_t vertex_format, materialtype_t material_type) {\n    // TODO: check if material_type has transparency and save that fact\n    return true;\n}\n\n/*void SetDrawListTextures(drawlistentry_t entry, size_t texture_count, texturehandle_t* texture) {\n    entry.sw->texture = texture->sw_texture;\n}*/\n\nvoid SetDrawListMaterials(drawlistentry_t entry, size_t texture_count, material_t* material) {\n    entry.sw->material = material->sw;\n}\n\nmaterial_t MakeMaterial() {\n    return material_t{.sw = material_list.AddNew()};\n}\n\nvoid YeetMaterial(material_t material) {\n    material_list.Remove(material.sw);\n}\n\nvoid SetMaterialTexture(material_t material, texturehandle_t texture) {\n    material.sw->texture = texture.sw_texture;\n}\n\nvoid SetMaterialColor(material_t material, vec4 color) {\n    material.sw->color = color;\n}\n\nvoid SetMaterialSpecularWeight(material_t material, float weight) {\n    material.sw->specular_weight = weight;\n}\n\nvoid SetMaterialSpecularExponent(material_t material, float exponent) {\n    material.sw->specular_exponent = exponent;\n}\n\nvoid SetMaterialSpecularTransparency(material_t material, float transparency) {\n    material.sw->specular_transparency = transparency;\n}\n\nvoid SetMaterialReflectivity(material_t material, float reflectivity) {\n    material.sw->reflectivity = reflectivity;\n}\n\nlight_t MakeLight() {\n    return light_t {.sw = light_list.AddNew()};\n}\n\nvoid YeetLight(light_t light) {\n    light_list.Remove(light.sw);\n}\n\nvoid SetLightParameters(light_t light, vec3 location, vec3 color, float distance, vec3 direction, float exponent) {\n    SWLight* light_ptr = light.sw;\n    \n    light_ptr->location = location;\n    light_ptr->color = color;\n    light_ptr->distance = distance;\n    light_ptr->direction = direction;\n    light_ptr->exponent = exponent;\n}\n\n\ntexturehandle_t CreateTexture(ColorMode color_mode, TextureFilter texture_filter, uint32_t width, uint32_t height, void* data) {\n    SWTexture* texture = texture_list.AddNew();\n    \n    texture->width = width;\n    texture->height = height;\n    \n    switch (color_mode) {\n        case COLORMODE_R:       texture->channels = 1;  break;\n        case COLORMODE_RG:      texture->channels = 2;  break;\n        case COLORMODE_RGB:     texture->channels = 3;  break;\n        case COLORMODE_RGBA:    texture->channels = 4;  break;\n    }\n    \n    switch (texture_filter) {\n        case TEXTUREFILTER_NEAREST:             texture->mode = SW_NEAREST; break;\n        case TEXTUREFILTER_LINEAR:              texture->mode = SW_BLENDED; break;\n        case TEXTUREFILTER_LINEAR_MIPMAPPED:    texture->mode = SW_BLENDED; break;\n    }\n    \n    int texture_size = texture->width * texture->height * texture->channels;\n    texture->pixels = (uint8_t*)malloc(texture_size);\n    memcpy(texture->pixels, data, texture_size);\n    \n    return texturehandle_t {.sw_texture = texture};\n}\n\nvoid ParseFormat(vertexarray_t& vertex_array, VertexDefinition vertex_format) {\n    auto& helper = vertex_array.sw_vertex_array->helper;\n \n     for (int i = 0; i < (int)vertex_format.attribute_count; i++) {\n        switch (vertex_format.attributes[i].ffp_type) {\n            case VertexAttribute::FFP_POSITION:     helper.position = i;    break;\n            case VertexAttribute::FFP_NORMAL:       helper.normal = i;      break;\n            case VertexAttribute::FFP_COLOR:        helper.color = i;      break;\n            case VertexAttribute::FFP_TEXTURE:      helper.texture = i;     break;\n            case VertexAttribute::FFP_LIGHTMAP:     helper.lightmap = i;    break;\n            case VertexAttribute::FFP_BONE_INDEX:   helper.bone_index = i;  break;\n            case VertexAttribute::FFP_BONE_WEIGHT:  helper.bone_weight = i; break;\n            case VertexAttribute::FFP_IGNORE:                               break;\n        }\n    }\n    \n    if (helper.color != -1) {\n         vertex_array.sw_vertex_array->type = SW_STATIC_COLORED;\n    }\n \n    if (helper.lightmap != -1) {\n        vertex_array.sw_vertex_array->type = SW_STATIC_LIGHTMAPPED;\n    }\n    \n    if (helper.bone_index != -1 && helper.bone_weight != -1) {\n        vertex_array.sw_vertex_array->type = SW_DYNAMIC_BLENDED;\n    }\n    \n    vertex_array.sw_vertex_array->format = vertex_format;\n}\n\nvoid PackVertices(vertexarray_t& vertex_array, void* data, size_t count) {\n    switch (vertex_array.sw_vertex_array->type) {\n        case SW_STATIC_LIGHTMAPPED: {\n            StaticVertex* verts = (StaticVertex*)malloc(sizeof(StaticVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute nrm_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.normal];\n            for (size_t i = 0; i < count; i++) {\n                vec3* nrm = (vec3*)((char*)data + nrm_attrib.offset + nrm_attrib.stride * i);\n                verts[i].nrm = *nrm;\n            }\n            \n            VertexAttribute tex_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.texture];\n            for (size_t i = 0; i < count; i++) {\n                vec2* tex = (vec2*)((char*)data + tex_attrib.offset + tex_attrib.stride * i);\n                verts[i].tex = *tex;\n            }\n            \n            VertexAttribute lit_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.lightmap];\n            for (size_t i = 0; i < count; i++) {\n                vec2* lit = (vec2*)((char*)data + lit_attrib.offset + lit_attrib.stride * i);\n                verts[i].lit = *lit;\n            }\n            \n            vertex_array.sw_vertex_array->vertices = verts;\n            vertex_array.sw_vertex_array->vertex_count = count;\n        } break;\n        case SW_DYNAMIC_BLENDED: {\n            DynamicVertex* verts = (DynamicVertex*)malloc(sizeof(DynamicVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute nrm_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.normal];\n            for (size_t i = 0; i < count; i++) {\n                vec3* nrm = (vec3*)((char*)data + nrm_attrib.offset + nrm_attrib.stride * i);\n                verts[i].nrm = *nrm;\n            }\n            \n            VertexAttribute tex_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.texture];\n            for (size_t i = 0; i < count; i++) {\n                vec2* tex = (vec2*)((char*)data + tex_attrib.offset + tex_attrib.stride * i);\n                verts[i].tex = *tex;\n            }\n            \n            VertexAttribute wgt_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.bone_weight];\n            for (size_t i = 0; i < count; i++) {\n                vec4* wgt = (vec4*)((char*)data + wgt_attrib.offset + wgt_attrib.stride * i);\n                verts[i].wgt = glm::normalize(*wgt);\n            }\n            \n            VertexAttribute ind_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.bone_index];\n            for (size_t i = 0; i < count; i++) {\n                ivec4* ind = (ivec4*)((char*)data + ind_attrib.offset + ind_attrib.stride * i);\n                verts[i].ind = *ind;\n            }\n        \n            vertex_array.sw_vertex_array->vertices = verts;\n            vertex_array.sw_vertex_array->vertex_count = count;\n        } break;\n        case SW_STATIC_COLORED: {\n            ColorVertex* verts = (ColorVertex*)malloc(sizeof(ColorVertex) * count);\n            \n            VertexAttribute pos_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.position];\n            for (size_t i = 0; i < count; i++) {\n                vec3* pos = (vec3*)((char*)data + pos_attrib.offset + pos_attrib.stride * i);\n                verts[i].pos = *pos;\n            }\n            \n            VertexAttribute col_attrib = vertex_array.sw_vertex_array->format.attributes[vertex_array.sw_vertex_array->helper.color];\n            for (size_t i = 0; i < count; i++) {\n                vec3* col = (vec3*)((char*)data + col_attrib.offset + col_attrib.stride * i);\n                verts[i].col = *col;\n            }\n            \n            vertex_array.sw_vertex_array->vertices = verts;\n            vertex_array.sw_vertex_array->vertex_count = count;\n        } break;\n        case SW_SPRITE:\n            assert(false);\n    }\n}\n\nvoid CreateIndexedVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array, indexarray_t& index_array, size_t vertex_size, void* vertex_data, size_t index_size, void* index_data) {\n    vertex_array.sw_vertex_array = vertex_arrays.AddNew();\n    ParseFormat(vertex_array, vertex_format);\n    PackVertices(vertex_array, vertex_data, vertex_size / vertex_format.attributes[0].stride);\n    \n    index_array.sw_index_array = index_arrays.AddNew();\n    index_array.sw_index_array->indices = (uint32_t*)malloc(index_size);\n    index_array.sw_index_array->index_count = index_size / sizeof(uint32_t);\n    memcpy(index_array.sw_index_array->indices, index_data, index_size);\n}\n\nvoid CreateVertexArray(VertexDefinition vertex_format, vertexarray_t& vertex_array) {\n    vertex_array.sw_vertex_array = vertex_arrays.AddNew();\n    ParseFormat(vertex_array, vertex_format);\n}\n\nvoid UpdateVertexArray(vertexarray_t& vertex_array, size_t data_size, void* data) {\n    if (vertex_array.sw_vertex_array->vertices) {\n        free(vertex_array.sw_vertex_array->vertices);\n        vertex_array.sw_vertex_array->vertices = nullptr;\n    }\n    \n    PackVertices(vertex_array, data, data_size / vertex_array.sw_vertex_array->format.attributes[0].stride);\n}\n\nspritearray_t CreateSpriteArray() {\n    return spritearray_t {.generic = nullptr};\n}\n\nvoid UpdateSpriteArray(spritearray_t array, size_t data_size, void* data) {\n    \n}\n\nvoid SetViewMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].view_matrix = matrix;\n    layers[layer].view_position = glm::inverse(matrix) * vec4(0.0f, 0.0f, 0.0f, 1.0f);\n}\n\nvoid SetProjectionMatrix(const mat4& matrix, layer_t layer) {\n    layers[layer].projection_matrix = matrix;\n}\n\nvoid GetScreen(char* buffer, int w, int h) {\n    for (int y = 0; y < screen_height; y++) {\n        for (int x = 0; x < screen_width; x++) {\n            uint16_t color = screen_buffer[y * screen_width + x];\n            \n            uint8_t r = 0xFF & ((color >> 11) << 3);\n            uint8_t g = 0xFF & ((color >> 5) << 2);\n            uint8_t b = 0xFF & (color << 3); \n            \n            int offset = 3 * ((h - y - 1) * w + x);\n            \n            buffer[offset + 0] = r;\n            buffer[offset + 1] = g;\n            buffer[offset + 2] = b;\n        }\n    }\n}\n\nbool IsDebugMode() {\n    return false;\n}\n\nvoid SetDebugMode(bool) {\n    \n}\n\nvoid Init() {\n    depth_buffer = (uint16_t*)malloc(screen_width * screen_height * sizeof(float));\n    \n    // initialize the default pose\n    /*BLANK_POSE = PoolProxy<Render::Pose>::New();\n    for (size_t i = 0; i < BONE_COUNT; i++) {\n        BLANK_POSE->pose[i] = mat4(1.0f);\n    }*/\n    \n    null_pose = PoolProxy<Render::Pose>::New();\n    for (size_t i = 0; i < BONE_COUNT; i++) {\n        null_pose->pose[i] = mat4(1.0f);\n    }\n}\n\nContextType GetContext() {\n    return CONTEXT_SOFTWARE;\n}\n\nuint32_t GetMaxIndexRangeLength() {\n    return 1;\n}\n\nvoid SetDevice(void* buffer) {\n    screen_buffer = (uint16_t*)buffer;\n}\n\n}\n"
  },
  {
    "path": "src/render/software/software.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H\n#define TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H\n\n#include <render/render.h>\n#include <render/renderer.h>\n\nnamespace tram::Render::API {\n\nstruct SWLight {\n    vec3 location = {0.0f, 0.0f, 0.0f};\n    vec3 color = {0.0f, 0.0f, 0.0f};\n    float distance = 0.0f;\n    vec3 direction = {0.0f, 0.0f, -1.0f};\n    float exponent = 0.0f;\n};\n\nenum SWTextureMode {\n    SW_NEAREST,\n    SW_BLENDED\n};\n\nstruct SWTexture {\n    int width;\n    int height;\n    int channels;\n    SWTextureMode mode = SW_NEAREST;\n    uint8_t* pixels = nullptr;\n};\n\nstruct SWMaterial {\n    SWTexture* texture = nullptr;\n    float specular_weight = 0.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 0.0f;\n    float reflectivity = 0.0f;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n};\n\nenum SWVertexType {\n    SW_STATIC_LIGHTMAPPED,\n    SW_DYNAMIC_BLENDED,\n    SW_STATIC_COLORED,\n    SW_SPRITE\n};\n\nstruct FFPHelper {\n    int position = -1;\n    int normal = -1;\n    int color = -1;\n    int texture = -1;\n    int lightmap = -1;\n    int bone_index = -1;\n    int bone_weight = -1;\n};\n\nstruct SWVertexArray {\n    SWVertexType type = SW_STATIC_LIGHTMAPPED;\n    void* vertices = nullptr;\n    size_t vertex_count = 0;\n    VertexDefinition format;\n    FFPHelper helper;\n};\n\nstruct SWIndexArray {\n    size_t index_count = 0;\n    uint32_t* indices = nullptr;\n#ifndef __x86_64__\n    void* padding;\n#endif\n};\n\nstruct SWDrawListEntry {\n    uint32_t flags = 0;\n\n    Pose* pose = nullptr;\n    \n    mat4 matrix = mat4(1.0f);\n\n    SWLight* lights[4] = {nullptr, nullptr, nullptr, nullptr};\n    \n    uint32_t layer = 0;\n    SWTexture* lightmap = nullptr;\n    SWVertexArray* vertex_array = nullptr;\n    SWIndexArray* index_array = nullptr;\n    uint32_t index_length = 0;\n    uint32_t index_offset = 0;\n    sphericalharmonic_t harmonic;\n    SWMaterial* material = nullptr;\n    SWTexture* environmentmap = nullptr;\n    vec4 color = {1.0f, 1.0f, 1.0f, 1.0f};\n    float specular_weight = 1.0f;\n    float specular_exponent = 1.0f;\n    float specular_transparency = 1.0f;\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_SOFTWARE_SOFTWARE_H"
  },
  {
    "path": "src/render/sprite.cpp",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#include <render/sprite.h>\n#include <render/renderer.h>\n#include <render/material.h>\n\n#include <framework/async.h>\n#include <framework/logging.h>\n#include <framework/file.h>\n\n#include <templates/hashmap.h>\n\n#include <config.h>\n\n#include <fstream>\n#include <sstream>\n\n/**\n * @class tram::Render::Sprite render/sprite.h <render/sprite.h>\n * \n * Sprite resource.\n * \n * Sprites essentially just hold positions and sizes of rectangles, which\n * correspond to some kind of features in the textures of the referenced\n * Material.\n * \n * @see https://racenis.github.io/tram-sdk/documentation/render/sprite.html\n */\n\nusing namespace tram;\nusing namespace tram::Render;\n\nHashmap<Sprite*> sprite_list(\"Sprite name list\", RESOURCE_LIMIT_SPRITE);\n\ntemplate <> Pool<Render::Sprite> PoolProxy<Render::Sprite>::pool(\"Sprite pool\", RESOURCE_LIMIT_SPRITE);\n\nSprite* Sprite::Find(name_t name){\n    auto sprite = sprite_list.Find(name);\n    \n    if (!sprite) {\n        //sprite = new Sprite (name);\n        sprite = PoolProxy<Sprite>::New(name);\n        sprite_list.Insert(name, sprite);\n    }\n\n    return sprite;\n}\n\nvoid Sprite::LoadFromMemory() {\n    assert(status == LOADED);\n    status = READY;\n}\n\nvoid Sprite::LoadFromDisk() {\n    std::string filename = std::string(\"data/sprites/\") + std::string(name) + \".spr\";\n    \n    File file (filename.c_str(), File::READ);\n    \n    if (!file.is_open()) {\n        Log(\"Sprite not found: {}\", filename);\n        \n        frames.push_back({\n            0, 0,\n            64, 64,\n            32, 32,\n            0, 0\n        });\n        \n        if (!material) material = Material::Find(\"defaulttexture\");\n        \n        status = LOADED;\n        load_fail = true;\n        \n        return;\n    }\n    \n    name_t header = file.read_name();\n    name_t material_name = file.read_name();\n    \n    if (header != \"SPRv2\" && header != \"SPRv3\") {\n        Log(\"Incorrect sprite header \\\"{}\\\" in file \\\"{}\\\"\", header, filename);\n    }\n    \n    if (header == \"SPRv2\") while (file.is_continue()) {\n        frames.push_back ({\n            .offset_x = file.read_uint16(),\n            .offset_y = file.read_uint16(),\n            .width = file.read_uint16(),\n            .height = file.read_uint16(),\n            .midpoint_x = file.read_uint16(),\n            .midpoint_y = file.read_uint16(),\n            .border_h = file.read_uint16(),\n            .border_v = file.read_uint16()\n        });\n    }\n    \n    if (header == \"SPRv3\") while (file.is_continue()) {\n        name_t record_type = file.read_name();\n        \n        \n        \n        if (record_type == \"frame\") frames.push_back ({\n            .offset_x = file.read_uint16(),\n            .offset_y = file.read_uint16(),\n            .width = file.read_uint16(),\n            .height = file.read_uint16(),\n            .midpoint_x = file.read_uint16(),\n            .midpoint_y = file.read_uint16(),\n            .border_h = file.read_uint16(),\n            .border_v = file.read_uint16()\n        });\n        \n        if (record_type == \"marker\") markers.push_back({\n            .name = file.read_name(),\n            .frame = (uint16_t)frames.size()\n        });\n    }\n    \n    if (!material) {\n        material = Material::Find(UID(material_name));\n    }\n    \n    material->AddReference();\n    Async::LoadDependency(material);\n    \n    status = LOADED;\n}\n\nuint16_t Sprite::FindMarker(name_t name) {\n    for (auto& marker : markers) {\n        if (marker.name == name) return marker.frame;\n    }\n    return -1;\n}\n\n"
  },
  {
    "path": "src/render/sprite.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_SPRITE_H\n#define TRAM_SDK_RENDER_SPRITE_H\n\n#include <render/render.h>\n\nnamespace tram::Render {\n    \nclass Material;\n\nstruct SpriteFrame {\n    uint16_t offset_x;\n    uint16_t offset_y;\n    uint16_t width;\n    uint16_t height;\n    uint16_t midpoint_x;\n    uint16_t midpoint_y;\n    uint16_t border_h;\n    uint16_t border_v;\n};\n\nstruct SpriteMarker {\n    name_t name;\n    uint16_t frame;\n};\n\nclass Sprite : public Resource {\npublic:\n    Sprite (UID name) : Resource(name) {}\n    inline Material* GetMaterial () const { return material; }\n    inline void SetMaterial (Material* mat) { material = mat; }\n    \n    void LoadFromDisk();\n    void LoadFromMemory();\n    \n    void Unload() {}\n    \n    uint16_t FindMarker(name_t name);\n\n    const std::vector<SpriteFrame>& GetFrames() { return frames; };\n    const std::vector<SpriteMarker>& GetMarkers() { return markers; };\n\n    static Sprite* Find(name_t name);\nprotected:\n    std::vector<SpriteFrame> frames;\n    std::vector<SpriteMarker> markers;\n    Material* material = nullptr;\n};\n    \n}\n\n#endif // TRAM_SDK_RENDER_SPRITE_H"
  },
  {
    "path": "src/render/vertices.cpp",
    "content": ""
  },
  {
    "path": "src/render/vertices.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_RENDER_VERTICES_H\n#define TRAM_SDK_RENDER_VERTICES_H\n\n#include <render/renderer.h>\n\n#include <render/render.h>\n\nnamespace tram::Render {\n\nstruct StaticModelVertex {\n    vec3 co;            //< Vertex position in object space.\n    vec3 normal;        //< Vertex normal vector.\n    vec2 tex;           //< Vertex texture coordinates.\n    vec2 lighttex;      //< Vertex lightmap coordinates.\n    uint32_t texture;   //< Vertex texture material index.\n};\n\nstruct DynamicModelVertex {\n    vec3 co;            //< Vertex position in object space.\n    vec3 normal;        //< Vertex normal vector.\n    vec2 tex;           //< Vertex texture coordinates.\n    ivec4 bone;         //< Vertex bone indices.\n    vec4 boneweight;    //< Vertex bone weights.\n    uint32_t texture;   //< Vertex texture material index.\n};\n\nstruct SpriteVertex {\n    vec3 co;            //< Sprite position in object space.\n    vec2 voffset;       //< Vertex offset in projection space.\n    vec2 texco;         //< Vertex texture coordinates.\n    vec3 color;         //< Vertex color.\n    float verticality;  //< I don't remember.\n    uint32_t texture;   //< Vertex texture material index.\n};\n\nstruct LineVertex {\n    vec3 co;            //< Vertex position in object space.\n    vec3 color;         //< Vertex color.\n};\n\nstruct Triangle {\n    ivec3 indices;          //< Triangle vertex indices.\n};\n\nstruct SpritePoint {\n    vec3 position;\n    vec3 center;\n    vec3 color;\n    float rotation;\n    vec2 dimensions;\n    vec2 texture_offset;\n    vec2 texture_size;\n    uint32_t texture;\n};\n\nstruct ModelData {};\n\nstruct StaticModelData : public ModelData {\n    std::vector<StaticModelVertex> vertices;\n    std::vector<Triangle> indices;\n};\n\nstruct DynamicModelData : public ModelData {\n    std::vector<DynamicModelVertex> vertices;\n    std::vector<Triangle> indices;\n    std::vector<UID> groups;\n};\n\n}\n\n#endif // TRAM_SDK_RENDER_VERTICES_H"
  },
  {
    "path": "src/templates/aabb.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_AABB_H\n#define TRAM_SDK_TEMPLATES_AABB_H\n\n#include <framework/math.h>\n#include <framework/logging.h>\n#include <framework/core.h>\n\n#include <iostream>\n\n#include <vector>\n\nnamespace tram {\n\nclass AABBTree {\npublic:\n    AABBTree() {\n        this->root = MakeNode();\n    }\n    \n    ~AABBTree() {\n        RemoveHierarchy(root);\n    }\n    \n    typedef uint32_t node_t;\n    \n    static constexpr node_t INVALID = ~0;\n    \n    vec3 GetAABBMin() { return GetMin(root); }\n    vec3 GetAABBMax() { return GetMax(root); }\n    \nprivate:\n    struct Node;\npublic:\n    \n    node_t InsertLeaf (uint32_t value, vec3 min, vec3 max) {\n        node_t new_node = MakeNode();\n        \n        SetValue(new_node, value);\n        \n        SetMin(new_node, min);\n        SetMax(new_node, max);\n        \n        // if root doesn't have both children, we want to fill them in asap,\n        // since it makes next operations significantly simpler\n        if (GetLeft(root) == INVALID) {\n            SetLeft(root, new_node);\n            SetParent(new_node, root);\n            \n            if (GetRight(root) != INVALID) {\n                UpdateParentAABB(root);\n            } else {\n                SetMin(root, GetMin(new_node));\n                SetMax(root, GetMax(new_node));\n            }\n            \n            return new_node;\n        }\n        \n        if (GetRight(root) == INVALID) {\n            SetRight(root, new_node);\n            SetParent(new_node, root);\n\n            if (GetLeft(root) != INVALID) {\n                UpdateParentAABB(root);\n            } else {\n                SetMin(root, GetMin(new_node));\n                SetMax(root, GetMax(new_node));\n            }\n            \n            return new_node;\n        }\n        \n        node_t sibling = FindSibling(min, max, root);\n        node_t sibling_parent = GetParent(sibling);\n        node_t new_parent = MakeNode();\n        \n        if (GetLeft(sibling_parent) == sibling) {\n            SetLeft(sibling_parent, new_parent);\n        } else if (GetRight(sibling_parent) == sibling) {\n            SetRight(sibling_parent, new_parent);\n        } else {\n            assert(false);\n        }\n        \n        SetParent(new_parent, sibling_parent);\n\n        SetLeft(new_parent, new_node);\n        SetRight(new_parent, sibling);\n\n        SetParent(sibling, new_parent);\n        SetParent(new_node, new_parent);\n        \n        UpdateParentAABB(new_parent);\n        \n        return new_node;\n    }\n    \n    void RemoveLeaf(node_t node) {\n        assert(node != INVALID);\n        assert(node != root);\n        \n        node_t parent = GetParent(node);\n        \n        assert(parent != INVALID);\n        \n        node_t sibling = GetLeft(parent) == node ? GetRight(parent) : GetLeft(parent);\n        \n        if (GetLeft(parent) != node && GetRight(parent) != node) {\n            assert(false);\n        }\n        \n        if (parent == root) {\n            if (GetLeft(parent) == node) {\n                SetLeft(parent, INVALID);\n                \n                if (sibling != INVALID) {\n                    SetMin(parent, GetMin(sibling));\n                    SetMax(parent, GetMax(sibling));\n                }\n            } else {\n                SetRight(parent, INVALID);\n                \n                if (sibling != INVALID) {\n                    SetMin(parent, GetMin(sibling));\n                    SetMax(parent, GetMax(sibling));\n                }\n            }\n            \n            YeetNode(node);\n\n            return;\n        }\n        \n        node_t grandparent = GetParent(parent);\n        \n        if (GetLeft(grandparent) == parent) {\n            SetLeft(grandparent, sibling);\n        } else {\n            SetRight(grandparent, sibling);\n        }\n        \n        assert(sibling != INVALID);\n        SetParent(sibling, grandparent);\n        \n        UpdateParentAABB(grandparent);\n        \n        YeetNode(node);\n        YeetNode(parent);\n    }\n    \n    void FindIntersection(vec3 ray_pos, vec3 ray_dir, std::vector<uint32_t>& result) const {\n        FindIntersection(ray_pos, ray_dir, root, result);\n    }\n    \n    uint32_t FindIntersection(vec3 ray_pos, vec3 ray_dir, float distance_limit, auto filter) const {\n        bool root_intersects = AABBIntersect(ray_pos, ray_dir, GetMin(root), GetMax(root));\n\n        if (!root_intersects) {\n            return -1;\n        }\n        \n        float nearest_dist = INFINITY;\n        uint32_t nearest_index = -1;\n        \n        FindIntersectionRecursive(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, root, filter);\n        \n        return nearest_index;\n    }\n    \n    void FindAABBIntersection(vec3 min, vec3 max, auto callback) {\n        FindAABBIntersection(root, min, max, callback);\n    }\n    \n    int FindDepth() {\n        int depth = 0;\n        FindDepthRecursive(root, 1, depth);\n        return depth;\n    }\n    \n    const node_t GetRoot() const {\n        return root;\n    }\n    \nprivate:\n    void RemoveHierarchy(node_t node) {\n        if (IsLeaf(node)) {\n            YeetNode(node);\n        } else {\n            if (GetLeft(node) != INVALID) RemoveHierarchy(GetLeft(node));\n            if (GetRight(node) != INVALID) RemoveHierarchy(GetRight(node));\n            YeetNode(node);\n        }\n    }\n    \n    void FindIntersectionRecursive(vec3 ray_pos, vec3 ray_dir, float& nearest_dist, uint32_t& nearest_index, float distance_limit, node_t node, auto filter) const {\n        if (IsLeaf(node) && node != root) {\n            float leaf_distance = filter(ray_pos, ray_dir, GetValue(node));\n            \n            if (leaf_distance < nearest_dist) {\n                nearest_dist = leaf_distance;\n                nearest_index = GetValue(node);\n            }\n            \n            return;\n        }\n\n        float left_distance = INFINITY;\n        float right_distance = INFINITY;\n        \n        if (GetLeft(node) != INVALID) left_distance = AABBDistance(ray_pos, ray_dir, GetMin(GetLeft(node)), GetMax(GetLeft(node)));\n        if (GetRight(node) != INVALID) right_distance = AABBDistance(ray_pos, ray_dir, GetMin(GetRight(node)), GetMax(GetRight(node)));\n        \n        if (left_distance < right_distance) {\n            \n            if (left_distance < nearest_dist && left_distance < distance_limit) {\n                FindIntersectionRecursive(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, GetLeft(node), filter);\n            }\n            \n            if (right_distance < nearest_dist && right_distance < distance_limit) {\n                FindIntersectionRecursive(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, GetRight(node), filter);\n            }\n            \n        } else {\n            \n            if (right_distance < nearest_dist && right_distance < distance_limit) {\n                FindIntersectionRecursive(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, GetRight(node), filter);\n            }\n            \n            if (left_distance < nearest_dist && left_distance < distance_limit) {\n                FindIntersectionRecursive(ray_pos, ray_dir, nearest_dist, nearest_index, distance_limit, GetLeft(node), filter);\n            }\n            \n        }\n        \n    }\n    \n    void FindIntersection(vec3 ray_pos, vec3 ray_dir, node_t node, std::vector<uint32_t>& result) const {\n        bool is_node_intersect = AABBIntersect(ray_pos, ray_dir, GetMin(node), GetMax(node));\n        \n        if (is_node_intersect) {\n            if (IsLeaf(node) && node != root) {\n                result.push_back(GetValue(node));\n            } else {\n                if (GetLeft(node) != INVALID) FindIntersection(ray_pos, ray_dir, GetLeft(node), result);\n                if (GetRight(node) != INVALID) FindIntersection(ray_pos, ray_dir, GetRight(node), result);\n            }\n        }\n    }\n    \n    void FindAABBIntersection(node_t node, vec3 min, vec3 max, auto callback) {\n        if (IsLeaf(node) && node != root) {\n            if (AABBOverlap(min, max, GetMin(node), GetMax(node))) {\n                callback(GetValue(node));\n            }\n            \n            return;\n        }\n        \n        if (GetLeft(node) != INVALID && AABBOverlap(min, max, GetMin(GetLeft(node)), GetMax(GetLeft(node)))) {\n            FindAABBIntersection(GetLeft(node), min, max, callback);\n        }\n        \n        if (GetRight(node) != INVALID && AABBOverlap(min, max, GetMin(GetRight(node)), GetMax(GetRight(node)))) {\n            FindAABBIntersection(GetRight(node), min, max, callback);\n        }\n        \n    }\n    \n    void UpdateParentAABB (node_t node) {\n        if (IsLeaf(node)) return;\n        \n        int best_rotation = 0;\n        float best_volume = INFINITY;\n        \n        bool has_children = GetLeft(node) != INVALID && GetRight(node) != INVALID;\n        \n        if (has_children && !IsLeaf(GetRight(node)) && GetLeft(GetRight(node)) != INVALID) {\n            vec3 min = GetMin(GetLeft(node));\n            vec3 max = GetMax(GetLeft(node));\n            \n            if (GetRight(GetRight(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetRight(GetRight(node))));\n            if (GetRight(GetRight(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetRight(GetRight(node))));\n            \n            float volume = AABBVolume(min, max);\n            \n            if (best_volume > volume && AABBVolume(GetMin(GetRight(node)), GetMax(GetRight(node))) > volume) {\n                best_volume = volume;\n                best_rotation = 1;\n            }\n        }\n        \n        if (has_children && !IsLeaf(GetRight(node)) && GetRight(GetRight(node)) != INVALID) {\n            vec3 min = GetMin(GetLeft(node));\n            vec3 max = GetMax(GetLeft(node));\n            \n            if (GetLeft(GetRight(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetLeft(GetRight(node))));\n            if (GetLeft(GetRight(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetLeft(GetRight(node))));\n            \n            float volume = AABBVolume(min, max);\n            \n            if (best_volume > volume && AABBVolume(GetMin(GetRight(node)), GetMax(GetRight(node))) > volume) {\n                best_volume = volume;\n                best_rotation = 2;\n            }\n        }\n        \n        \n        if (has_children && !IsLeaf(GetLeft(node)) && GetLeft(GetLeft(node)) != INVALID) {\n            vec3 min = GetMin(GetRight(node));\n            vec3 max = GetMax(GetRight(node));\n            \n            if (GetRight(GetLeft(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetRight(GetLeft(node))));\n            if (GetRight(GetLeft(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetRight(GetLeft(node))));\n            \n            float volume = AABBVolume(min, max);\n            \n            if (best_volume > volume && AABBVolume(GetMin(GetLeft(node)), GetMax(GetLeft(node))) > volume) {\n                best_volume = volume;\n                best_rotation = 3;\n            }\n        }\n        \n        if (has_children && !IsLeaf(GetLeft(node)) && GetRight(GetLeft(node)) != INVALID) {\n            vec3 min = GetMin(GetRight(node));\n            vec3 max = GetMax(GetRight(node));\n            \n            if (GetLeft(GetLeft(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetLeft(GetLeft(node))));\n            if (GetLeft(GetLeft(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetLeft(GetLeft(node))));\n            \n            float volume = AABBVolume(min, max);\n            \n            if (best_volume > volume && AABBVolume(GetMin(GetLeft(node)), GetMax(GetLeft(node))) > volume) {\n                best_volume = volume;\n                best_rotation = 4;\n            }\n        }\n        \n        \n        \n        if (best_rotation == 1) {\n            node_t parent1 = GetParent(GetLeft(node));\n            node_t parent2 = GetParent(GetLeft(GetRight(node)));\n            \n            SetParent(GetLeft(node), parent2);\n            SetParent(GetLeft(GetRight(node)), parent1);\n            \n            node_t node1 = GetLeft(node);\n            node_t node2 = GetLeft(GetRight(node));\n            \n            SetLeft(node, node2);\n            SetLeft(GetRight(node), node1);\n            \n            vec3 min = GetMin(GetLeft(GetRight(node)));\n            vec3 max = GetMax(GetLeft(GetRight(node)));\n            \n            if (GetRight(GetRight(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetRight(GetRight(node))));\n            if (GetRight(GetRight(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetRight(GetRight(node))));\n\n            SetMin(GetRight(node), min);\n            SetMax(GetRight(node), max);\n        }\n        \n        if (best_rotation == 2) {\n            node_t parent1 = GetParent(GetLeft(node));\n            node_t parent2 = GetParent(GetRight(GetRight(node)));\n            \n            SetParent(GetLeft(node), parent2);\n            SetParent(GetRight(GetRight(node)), parent1);\n            \n            node_t node1 = GetLeft(node);\n            node_t node2 = GetRight(GetRight(node));\n            \n            SetLeft(node, node2);\n            SetRight(GetRight(node), node1);\n            \n            vec3 min = GetMin(GetRight(GetRight(node)));\n            vec3 max = GetMax(GetRight(GetRight(node)));\n            \n            if (GetLeft(GetRight(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetLeft(GetRight(node))));\n            if (GetLeft(GetRight(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetLeft(GetRight(node))));\n\n            SetMin(GetRight(node), min);\n            SetMax(GetRight(node), max);\n        }\n        \n        \n        if (best_rotation == 3) {\n            node_t parent1 = GetParent(GetRight(node));\n            node_t parent2 = GetParent(GetLeft(GetLeft(node)));\n            \n            SetParent(GetRight(node), parent2);\n            SetParent(GetLeft(GetLeft(node)), parent1);\n            \n            node_t node1 = GetRight(node);\n            node_t node2 = GetLeft(GetLeft(node));\n            \n            SetRight(node, node2);\n            SetLeft(GetLeft(node), node1);\n            \n            vec3 min = GetMin(GetLeft(GetLeft(node)));\n            vec3 max = GetMax(GetLeft(GetLeft(node)));\n            \n            if (GetRight(GetLeft(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetRight(GetLeft(node))));\n            if (GetRight(GetLeft(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetRight(GetLeft(node))));\n\n            SetMin(GetLeft(node), min);\n            SetMax(GetLeft(node), max);\n        }\n        \n        if (best_rotation == 4) {\n            node_t parent1 = GetParent(GetRight(node));\n            node_t parent2 = GetParent(GetRight(GetLeft(node)));\n            \n            SetParent(GetRight(node), parent2);\n            SetParent(GetRight(GetLeft(node)), parent1);\n            \n            node_t node1 = GetRight(node);\n            node_t node2 = GetRight(GetLeft(node));\n            \n            SetRight(node, node2);\n            SetRight(GetLeft(node), node1);\n            \n            vec3 min = GetMin(GetRight(GetLeft(node)));\n            vec3 max = GetMax(GetRight(GetLeft(node)));\n\n            if (GetLeft(GetLeft(node)) != INVALID) min = MergeAABBMin(min, GetMin(GetLeft(GetLeft(node))));\n            if (GetLeft(GetLeft(node)) != INVALID) max = MergeAABBMax(max, GetMax(GetLeft(GetLeft(node))));\n\n            SetMin(GetLeft(node), min);\n            SetMax(GetLeft(node), max);\n        }\n        \n        \n        node_t left_child = GetLeft(node);\n        node_t right_child = GetRight(node);\n        \n        if (left_child == INVALID || right_child == INVALID) {\n            assert(node == root);\n            \n            if (left_child == INVALID && right_child != INVALID) {\n                SetMin(node, GetMin(right_child));\n                SetMax(node, GetMax(right_child));\n            } else if (left_child != INVALID && right_child == INVALID) {\n                SetMin(node, GetMin(left_child));\n                SetMax(node, GetMax(left_child));\n            } else {\n                SetMin(node, {0.0f, 0.0f, 0.0f});\n                SetMax(node, {0.0f, 0.0f, 0.0f});\n            }\n            \n            return;\n        }\n        \n        \n        SetMin(node, MergeAABBMin(GetMin(left_child), GetMin(right_child)));\n        SetMax(node, MergeAABBMax(GetMax(left_child), GetMax(right_child)));\n        \n        if (GetParent(node) != INVALID) {\n            UpdateParentAABB(GetParent(node));\n        }\n        \n        assert(GetParent(node) != node);\n    }\n    \n    // searches the children of search_node to find a sibling for target_node\n    node_t FindSibling (vec3 min, vec3 max, node_t node) {\n        assert(node != INVALID);\n\n        if (IsLeaf(node)) {\n            return node;\n        }\n        \n        assert(GetLeft(node) != INVALID);\n        assert(GetRight(node) != INVALID);\n        \n        vec3 left_merge_min = MergeAABBMin(min, GetMin(GetLeft(node)));\n        vec3 left_merge_max = MergeAABBMax(max, GetMax(GetLeft(node)));\n        \n        vec3 right_merge_min = MergeAABBMin(min, GetMin(GetRight(node)));\n        vec3 right_merge_max = MergeAABBMax(max, GetMax(GetRight(node)));\n        \n        float left_merge_volume = AABBVolume(left_merge_min, left_merge_max);\n        float right_merge_volume = AABBVolume(right_merge_min, right_merge_max);\n        \n        if (left_merge_volume < right_merge_volume) {\n            return FindSibling(min, max, GetLeft(node));\n        } else {\n            return FindSibling(min, max, GetRight(node));\n        }\n    }\n    \n    static bool AABBOverlap(vec3 min, vec3 max, vec3 other_min, vec3 other_max) {\n        return min.x <= other_max.x && max.x >= other_min.x &&\n               min.y <= other_max.y && max.y >= other_min.y &&\n               min.z <= other_max.z && max.z >= other_min.z;\n    }\n    \n    static float AABBVolume (vec3 min, vec3 max) {\n        return (max.x - min.x) * (max.y - min.y) * (max.z - min.z);\n    }\n    \n    static float AABBSurface (vec3 min, vec3 max) {\n        float x = max.x - min.x;\n        float y = max.y - min.y;\n        float z = max.z - min.z;\n        \n        assert(max.x >= min.x);\n        assert(max.y >= min.y);\n        assert(max.z >= min.z);\n        \n        return 2 * ((x * y) + (x * z) + (y * z));\n    }\n    \n    static bool AABBIntersect (vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max) {\n        vec3 t1 = (min - ray_pos) / ray_dir;\n        vec3 t2 = (max - ray_pos) / ray_dir;\n        \n        vec3 t1min = glm::min(t1, t2);\n        vec3 t2max = glm::max(t1, t2);\n        \n        float tnear = glm::max(glm::max(t1min.x, t1min.y), t1min.z);\n        float tfar = glm::min(glm::min(t2max.x, t2max.y), t2max.z);\n        \n        return tfar >= tnear;\n    }\n    \n    static float AABBDistance(vec3 ray_pos, vec3 ray_dir, vec3 min, vec3 max) {\n        vec3 t1 = (min - ray_pos) / ray_dir;\n        vec3 t2 = (max - ray_pos) / ray_dir;\n        \n        vec3 t1min = glm::min(t1, t2);\n        vec3 t2max = glm::max(t1, t2);\n        \n        float tnear = glm::max(glm::max(t1min.x, t1min.y), t1min.z);\n        float tfar = glm::min(glm::min(t2max.x, t2max.y), t2max.z);\n        \n        return tfar >= tnear ? tnear : INFINITY;\n    }\n    \n    void FindDepthRecursive(node_t node, int current, int& largest) {\n        if (current > largest) largest = current;\n        \n        if (IsLeaf(node)) return;\n        \n        if (GetLeft(node) != INVALID) {\n            FindDepthRecursive(GetLeft(node), current + 1, largest);\n        }\n        \n        if (GetRight(node) != INVALID) {\n            FindDepthRecursive(GetRight(node), current + 1, largest);\n        }\n    }\n\npublic:\n    inline node_t MakeNode() {\n        if (node_freelist.size()) {\n            const node_t idx = node_freelist.back();\n            node_freelist.pop_back();\n            \n            nodes[idx] = BLANK_NODE_MASK;\n            \n            mins[idx] = {0.0f, 0.0f, 0.0f};\n            maxes[idx] = {0.0f, 0.0f, 0.0f};\n            \n            return idx;\n        }\n        \n        const node_t idx = nodes.size();\n        \n        nodes.push_back(BLANK_NODE_MASK);\n        mins.push_back({0.0f, 0.0f, 0.0f});\n        maxes.push_back({0.0f, 0.0f, 0.0f});\n        \n        return idx;\n    }\n    \n    inline void YeetNode(node_t node) {\n        if (IsLeaf(node)) {\n            value_freelist.push_back(GetLeft(node));\n        }\n        \n        node_freelist.push_back(node);\n    }\n    \n    inline node_t GetLeft(node_t node) const {\n        const node_t idx = nodes[node] & 0x1FFFFFULL;\n        return idx ^ 0x1FFFFF ? idx : INVALID;\n    }\n    \n    inline node_t GetRight(node_t node) const {\n        const node_t idx = (nodes[node] >> 21) & 0x1FFFFFULL;\n        return idx ^ 0x1FFFFF ? idx : INVALID;\n    }\n    \n    inline node_t GetParent(node_t node) const {\n        const node_t idx = (nodes[node] >> 42) & 0x1FFFFFULL;\n        return idx ^ 0x1FFFFF ? idx : INVALID;\n    }\n    \n    inline void SetLeft(node_t node, node_t value) {\n        const uint64_t erased = nodes[node] & ~0x1FFFFFULL;\n        const uint64_t truncated = value & 0x1FFFFFULL;\n        nodes[node] = erased | truncated;\n    }\n    \n    inline void SetRight(node_t node, node_t value) {\n        const uint64_t erased = nodes[node] & ~(0x1FFFFFULL << 21);\n        const uint64_t truncated = value & 0x1FFFFFULL;\n        nodes[node] = erased | (truncated << 21);\n    }\n    \n    inline void SetParent(node_t node, node_t value) {\n        const uint64_t erased = nodes[node] & ~(0x1FFFFFULL << 42);\n        const uint64_t truncated = value & 0x1FFFFFULL;\n        nodes[node] = erased | (truncated << 42);\n    }\n    \n    \n    inline vec3 GetMin(node_t node) const {\n        return mins[node];\n    }\n    \n    inline vec3 GetMax(node_t node) const {\n        return maxes[node];\n    }\n    \n    inline void SetMin(node_t node, vec3 value) {\n        mins[node] = value;\n    }\n    \n    inline void SetMax(node_t node, vec3 value) {\n        maxes[node] = value;\n    }\n    \n    \n    inline uint32_t GetValue(node_t node) const {\n        assert(IsLeaf(node));\n        \n        return values[GetLeft(node)];\n    }\n    \n    inline void SetValue(node_t node, uint32_t value) {\n        assert(IsLeaf(node));\n        \n        if (GetLeft(node) != INVALID) {\n            values[GetLeft(node)] = value;\n            return;\n        }\n        \n        if (value_freelist.size()) {\n            const node_t idx = value_freelist.back();\n            value_freelist.pop_back();\n            \n            values[idx] = value;\n            \n            SetLeft(node, idx);\n            \n            return;\n        }\n        \n        const node_t idx = values.size();\n        values.push_back(value);\n        \n        SetLeft(node, idx);\n    }\n    \n    inline bool IsLeaf(node_t node) const {\n        return GetRight(node) == INVALID;\n    }\n\n    void Reserve(size_t items) {\n        float depth = floorf(1.5f * log2f((float)items));\n        float node_count = ceilf(powf(2.0f, depth + 1.0f) - 1.0f);\n        nodes.reserve(node_count);\n        mins.reserve(node_count);\n        maxes.reserve(node_count);\n        values.reserve(items);\n    }\n\n    private:\n\n    static constexpr uint64_t BLANK_NODE_MASK = ~0 ^ (1ULL << 63);\n\n    std::vector<vec3> mins;\n    std::vector<vec3> maxes;\n    \n    std::vector<uint64_t> nodes;\n    \n    std::vector<uint32_t> values;\n    \n    std::vector<uint32_t> node_freelist;\n    std::vector<uint32_t> value_freelist;\n\n    node_t root = INVALID;\n};\n\n}\n\n#endif // TRAM_SDK_TEMPLATES_AABB_H"
  },
  {
    "path": "src/templates/hashmap.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_HASHMAP_H\n#define TRAM_SDK_TEMPLATES_HASHMAP_H\n\n#include <framework/uid.h>\n#include <iostream> // error message\n#include <cstring>  // memset\n\n/* instead of having two sets of each method, one with uint32_t and the other\n * with UID, maybe we could create some kind of a struct called Key and then we\n * could add a uint32_t converter to it and then we could add a constructor from\n * both uint32_t and UID and then we could just have only a single of each\n * method and all of the conversions would happen automatically\n * \n * TODO: investigate\n */\n\nnamespace tram {\n\ntemplate <typename T>\nclass Hashmap {\npublic:\n    constexpr Hashmap(const char* name, size_t max_size, size_t padding = 10) {\n        this->name = name;\n        this->max_size = max_size;\n        this->hash_parameter = max_size * 2;\n        \n        size_t memory_size = ((max_size * 2) + padding) * sizeof(Record);\n        \n        char* memory = (char*)::operator new(memory_size);\n        \n        first = (Record*) memory;\n        last = (Record*) (memory + memory_size);\n        \n        memset(memory, 0, memory_size);\n    }\n    \n    constexpr Hashmap(const char* name, size_t max_size, std::initializer_list<std::pair<uint32_t, T>> list) : Hashmap(name, max_size) {\n        for (const auto& entry : list) {\n            Insert(entry.first, entry.second);\n        }\n    }\n    \n    T find(UID key) {\n        return Find(key.key);\n    }\n    \n    T find(uint32_t key) {\n        uint32_t hash = key % hash_parameter;\n        \n        Record* candidate = first + hash;\n        \n        while (candidate != last) {\n            if (!(candidate->flags & (FLAG_DELETED | FLAG_RECORD))) {\n                break;\n            }\n            \n            if (candidate->key == key) {\n                if (candidate->flags & FLAG_DELETED) {\n                    break;\n                } else {\n                    return candidate->value;\n                }\n                \n            }\n            \n            candidate++;\n        }\n        \n        return T();\n    }\n    \n    bool exists(UID key) {\n        return Exists(key.key);\n    }\n    \n    bool exists(uint32_t key) {\n        uint32_t hash = key % hash_parameter;\n        \n        Record* candidate = first + hash;\n        \n        while (candidate != last) {\n            if (!(candidate->flags & (FLAG_DELETED | FLAG_RECORD))) {\n                break;\n            }\n            \n            if (candidate->key == key) {\n                if (candidate->flags & FLAG_DELETED) {\n                    break;\n                } else {\n                    return true;\n                }\n                \n            }\n            \n            candidate++;\n        }\n        \n        return false;\n    }\n    \n    void insert(UID key, T value) {\n        insert(key.key, value);\n    }\n    \n    void insert(uint32_t key, T value) {\n        if (size == max_size) {\n            std::cout << \"Hashmap \" << name << \" density reached!\" << std::endl;\n        }\n        \n        uint32_t hash = key % hash_parameter;\n        \n        Record* candidate = first + hash;\n        \n        while (candidate != last) {\n            if (candidate->flags & FLAG_RECORD) {\n                if (candidate->key == key) {\n                    candidate->value.~T();\n                    size--;\n                    break;\n                } else {\n                    candidate++;\n                    continue;\n                }\n            }\n            \n            if (candidate->flags & FLAG_DELETED) {\n                break;\n            }\n            \n            break;\n        }\n        \n        if (candidate == last) {\n            std::cout << \"Hashmap \" << name << \" overflow!\" << std::endl;\n            abort();\n        }\n        \n        size++;\n        \n        candidate->key = key;\n        candidate->value = value;\n        candidate->flags = FLAG_RECORD;\n    }\n \n    void remove(UID key) {\n        remove(key.key);\n    }\n   \n    void remove(uint32_t key) {\n        uint32_t hash = key % hash_parameter;\n        \n        Record* candidate = first + hash;\n        \n        while (candidate != last) {\n            if (!(candidate->flags & (FLAG_DELETED | FLAG_RECORD))) {\n                return;\n            }\n            \n            if (candidate->key == key) {\n                if (candidate->flags & FLAG_DELETED) {\n                    return;\n                } else {\n                    candidate->value.~T();\n                    candidate->flags = FLAG_DELETED;\n                    size--;\n                    return;\n                }\n                \n            }\n            \n            candidate++;\n        }\n    }\n    \n    T& operator[](UID key) {\n        return operator[](key.key);\n    }\n    \n    T& operator[](uint32_t key) {\n        uint32_t hash = key % hash_parameter;\n        \n        Record* candidate = first + hash;\n        \n        while (candidate != last) {\n            if (candidate->key == key) {\n                return candidate->value;\n            }\n            \n            if (candidate->flags & FLAG_RECORD) {\n                candidate++;\n                continue;\n            }\n            \n            if (candidate->flags & FLAG_DELETED) {\n                break;\n            }\n            \n            break;\n        }\n        \n        if (candidate == last) {\n            std::cout << \"Hashmap \" << name << \" overflow!\" << std::endl;\n            abort();\n        }\n        \n        size++;\n        \n        if (size == max_size) {\n            std::cout << \"Hashmap \" << name << \" density reached!\" << std::endl;\n        }\n        \n        candidate->key = key;\n        candidate->value = T();\n        candidate->flags = FLAG_RECORD;\n        \n        return candidate->value;\n    }\n    \n    // previous aliases, do not use for new code\n    void Remove(UID key) { remove(key.key); }\n    void Remove(uint32_t key) {remove(key); }\n    void Insert(UID key, T value) {insert(key.key, value); }\n    void Insert(uint32_t key, T value) {insert(key, value); }\n    bool Exists(uint32_t key) {return exists(key); }\n    bool Exists(UID key) {return Exists(key.key); }\n    T Find(uint32_t key) {return find(key); }\n    T Find(UID key) { return Find(key.key); }\n    \nprotected:\n    struct Record {\n        uint32_t key = 0;\n        uint32_t flags = 0;\n        T value;\n    };\n    \npublic:\n    struct iterator {\n        iterator(Hashmap<T>::Record* ptr, Hashmap<T>* map) : ptr(ptr), map(map) {\n            if (ptr->flags & FLAG_RECORD) return;\n            (*this)++;\n        }\n        \n        T& operator*() const { return ptr->value; }\n        T* operator->() { return &ptr->value; }\n\n        iterator& operator++() {\n            while (++ptr < map->last) {\n                if (ptr->flags & FLAG_RECORD) return *this;\n            }\n            \n            ptr = map->last;\n            return *this;\n        }  \n\n        iterator operator++(int) { iterator tmp = *this; ++(*this); return tmp; }\n\n        friend bool operator== (const iterator& a, const iterator& b) { return a.ptr == b.ptr; };\n        friend bool operator!= (const iterator& a, const iterator& b) { return a.ptr != b.ptr; };  \n        \n        Hashmap<T>::Record* ptr;\n        Hashmap<T>* map;\n    };\n    \n    iterator begin() { return iterator(first, this); }\n    iterator end() { return iterator(last, this); }\n    \nprotected:\n    enum {\n        FLAG_RECORD = 1,\n        FLAG_DELETED = 2\n    };\n\n    std::string name;\n    size_t size = 0;\n    size_t max_size = 0;\n    uint32_t hash_parameter = 0;\n    Record* first = nullptr;\n    Record* last = nullptr;\n};\n\n}\n\n#endif // TRAM_SDK_TEMPLATES_HASHMAP_H"
  },
  {
    "path": "src/templates/macros.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n\n// This file contains some macros. All of them are completely optional.\n\n#ifndef TRAM_SDK_TEMPLATES_MACROS_H\n#define TRAM_SDK_TEMPLATES_MACROS_H\n\n/// This is experimental template.\n#define TRAM_SDK_REGISTER_EVENT_DATATYPE(EVENT_ID, TYPE) template <> struct tram::EventDataType<EVENT_ID> { TYPE type; };\n\n/// Implements a pool.\n#define TRAM_SDK_IMPLEMENT_POOL(TYPE, NAME, SIZE) template <> Pool<TYPE> PoolProxy<TYPE>::pool (NAME, SIZE);\n\n\n// Asserts\n\n#ifndef NDEBUG\n#define TRAM_SDK_ASSERT(EXPRESSION) if (!(EXPRESSION)) { Log(\"{}\\nAssert at line {} in {}\", #EXPRESSION, __LINE__, __FILE__); abort(); }\n#define TRAM_SDK_ASSERT_MESSAGE(EXPRESSION, MESSAGE) if (!(EXPRESSION)) { Log(\"{}\\n{}\\nAssert at line {} in {}\", MESSAGE, #EXPRESSION, __LINE__, __FILE__); abort(); }\n#else\n#define TRAM_SDK_ASSERT(EXPRESSION) ;\n#define TRAM_SDK_ASSERT_MESSAGE(EXPRESSION, MESSAGE) ;\n#endif\n\n\n\n// Code generation macros\n#define TRAM_SDK_ENTITY_NAME(Name)\n#define TRAM_SDK_PROPERTY(Name, Flags)\n#define TRAM_SDK_VIRTUAL_PROPERTY(Type, Name, Flags, ...)\n#define TRAM_SDK_KEY_VALUE(Key, Value)\n\n#endif // TRAM_SDK_TEMPLATES_MACROS_H"
  },
  {
    "path": "src/templates/octree.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_OCTREE_H\n#define TRAM_SDK_TEMPLATES_OCTREE_H\n\n#include <vector>\n#include <algorithm>\n#include <framework/math.h>\n\n#include <iostream>\n\nnamespace tram {\n\ntemplate <typename T>\nclass Octree {\npublic:\n    Octree(vec3 mid_point, float half_extent) {\n        root = nodes.size();\n        \n        nodes.push_back({\n            .mid_point = mid_point,\n            .half_extent = half_extent\n        });\n    }\n    \n    typedef uint32_t node_t;\n    typedef uint32_t leaf_t;\n    \n    static constexpr node_t INVALID = ~0;\n    \n    leaf_t insert(vec3 point, const T& data) {\n        return Insert(point, data, root);\n    }\n        \n    void remove(leaf_t leaf) {\n        YeetLeaf(leaf);\n    }\n\n    size_t find(T* array, vec3 point) {\n        NearestSearch search = {.point = point};\n\n        Find(search, root);\n\n        for (int i = 0 ; i < search.found; i++) {\n            array[i] = GetValue(search.nearest[i]);\n        }\n        \n        return search.found;\n    }\n    \n    // aliases, do not use for new code\n    leaf_t Insert(vec3 point, const T& data) { return insert(point, data); }\n    void Remove(leaf_t leaf) { remove(leaf); }\n    size_t Find(T* array, vec3 point) { return find(array, point); }\n\nprotected:\n    enum Octant {\n        OCTANT_TOP_LEFT_BACK,\n        OCTANT_TOP_LEFT_FRONT,\n        OCTANT_TOP_RIGHT_BACK,\n        OCTANT_TOP_RIGHT_FRONT,\n        OCTANT_BOTTOM_LEFT_BACK,\n        OCTANT_BOTTOM_LEFT_FRONT,\n        OCTANT_BOTTOM_RIGHT_BACK,\n        OCTANT_BOTTOM_RIGHT_FRONT\n    };\n    \n    struct NearestSearch {\n        node_t nearest[4] = {INVALID, INVALID, INVALID, INVALID};\n        float distance[4] = {INFINITY, INFINITY, INFINITY, INFINITY};\n        int farthest_index = 0;\n        float farthest_distance = -INFINITY;\n        vec3 point;\n        int found = 0;\n    };\n    \n    \n    leaf_t Insert(vec3 point, const T& data, node_t node) {\n        node_t better_node = GetChild(node, GetOctant(GetMidPoint(node), point));\n        if (better_node != INVALID) {\n            return Insert(point, data, better_node);\n        }\n        \n        return MakeLeaf(node, point, data);\n    }\n    \n    void Find(NearestSearch& search, node_t node) {\n        // find deepest node in which the search point is in\n        node_t priority = GetChild(node, GetOctant(GetMidPoint(node), search.point));\n        if (priority != INVALID) {\n            Find(search, priority);\n        }\n        \n        for (int oct = 0; oct < 8; oct++) {\n            node_t child = GetChild(node, (Octant)oct);\n            \n            if (child == INVALID) continue;\n            if (child == priority) continue;\n            \n            float dist = NodeDistanceNearest2(GetMidPoint(child), GetHalfExtent(child), search.point);\n            \n            if (search.found >= 4 && dist > search.farthest_distance) continue;\n            \n            Find(search, child);\n        }\n        \n        // check all leaves for current node\n        for (leaf_t leaf : GetLeaves(node)) {\n            float dist = Distance2(search.point, GetPoint(leaf));\n\n            // make sure that all spots are filled in\n            if (search.found < 4) {\n                if (search.nearest[search.found] != INVALID) continue;\n                \n                search.nearest[search.found] = leaf;\n                search.distance[search.found] = dist;\n                \n                if (dist > search.farthest_distance) {\n                    search.farthest_distance = dist;\n                    search.farthest_index = search.found;\n                }\n                \n                search.found++;\n            } else if (dist < search.farthest_distance) {\n\n                search.nearest[search.farthest_index] = leaf;\n                search.distance[search.farthest_index] = dist;\n                \n                search.farthest_distance = -INFINITY;\n                \n                // check if some other leaf is now the farthest\n                for (int i = 0; i < 4; i++) {\n                    if (search.distance[i] < search.farthest_distance) continue;\n\n                    search.farthest_index = i;\n                    search.farthest_distance = search.distance[i];\n                }\n            }\n        }\n    }\n    \n    static inline std::pair<vec3, float> GetDimensions(Octant octant, vec3 parent_midpoint, float parent_half_extent) {\n        float half_extent = parent_half_extent / 2.0f;\n        vec3 mid_point = parent_midpoint;\n        \n        switch (octant) {\n            case OCTANT_TOP_LEFT_BACK:\n                mid_point.x -= half_extent;\n                mid_point.y += half_extent;\n                mid_point.z -= half_extent;\n                break;\n            case OCTANT_TOP_LEFT_FRONT:\n                mid_point.x -= half_extent;\n                mid_point.y += half_extent;\n                mid_point.z += half_extent;\n                break;\n            case OCTANT_TOP_RIGHT_BACK:\n                mid_point.x += half_extent;\n                mid_point.y += half_extent;\n                mid_point.z -= half_extent;\n                break;\n            case OCTANT_TOP_RIGHT_FRONT:\n                mid_point.x += half_extent;\n                mid_point.y += half_extent;\n                mid_point.z += half_extent;\n                break;\n            case OCTANT_BOTTOM_LEFT_BACK:\n                mid_point.x -= half_extent;\n                mid_point.y -= half_extent;\n                mid_point.z -= half_extent;\n                break;\n            case OCTANT_BOTTOM_LEFT_FRONT:\n                mid_point.x -= half_extent;\n                mid_point.y -= half_extent;\n                mid_point.z += half_extent;\n                break;\n            case OCTANT_BOTTOM_RIGHT_BACK:\n                mid_point.x += half_extent;\n                mid_point.y -= half_extent;\n                mid_point.z -= half_extent;\n                break;\n            case OCTANT_BOTTOM_RIGHT_FRONT:\n                mid_point.x += half_extent;\n                mid_point.y -= half_extent;\n                mid_point.z += half_extent;\n                break;\n        }\n        \n        return {mid_point, half_extent};\n    }\n    \n    static inline Octant GetOctant(vec3 mid, vec3 point) {\n        if (point.y < mid.y) {\n            if (point.x < mid.x) {\n                if (point.z < mid.z) {\n                    return OCTANT_BOTTOM_LEFT_BACK;\n                } else {\n                    return OCTANT_BOTTOM_LEFT_FRONT;\n                }\n            } else {\n                if (point.z < mid.z) {\n                    return OCTANT_BOTTOM_RIGHT_BACK;\n                } else {\n                    return OCTANT_BOTTOM_RIGHT_FRONT;\n                }\n            }\n        } else {\n            if (point.x < mid.x) {\n                if (point.z < mid.z) {\n                    return OCTANT_TOP_LEFT_BACK;\n                } else {\n                    return OCTANT_TOP_LEFT_FRONT;\n                }\n            } else {\n                if (point.z < mid.z) {\n                    return OCTANT_TOP_RIGHT_BACK;\n                } else {\n                    return OCTANT_TOP_RIGHT_FRONT;\n                }\n            }\n        }\n        \n        assert(false);\n    }\n    \n    inline float Distance2(vec3 a, vec3 b) {\n        vec3 d = a - b;\n        return d.x * d.x + d.y * d.y + d.z * d.z;\n    }\n    \n    static inline float NodeDistanceNearest2(vec3 mid_point, float half_extent, vec3 query) {\n        vec3 d = glm::abs(query - mid_point) - half_extent;\n        vec3 outside = max(d, vec3(0.0f));\n\n        return outside.x * outside.x + outside.y * outside.y + outside.z * outside.z;\n    }\n    \n    static inline float NodeDistanceNearest(vec3 mid_point, float half_extent, vec3 query) {\n        vec3 d = glm::abs(query - mid_point) - half_extent;\n        vec3 outside = max(d, vec3(0.0f));\n\n        return glm::length(outside);\n    }\n    \n    static inline float NodeDistanceFarthest(vec3 mid_point, float half_extent, vec3 query) {\n        return glm::length(glm::abs(query - mid_point) + half_extent);\n    }\n    \n    // TODO: move this code to??? wherever scene AABB tree gets drawn\n    /*\n    void Draw(Node * node) {\n        if (node->IsNode()) {\n            *//*vec3 p00 = node->mid_point + vec3(node->width, node->width, node->width);\n            vec3 p01 = node->mid_point + vec3(-node->width, node->width, node->width);\n            vec3 p02 = node->mid_point + vec3(node->width, node->width, -node->width);\n            vec3 p03 = node->mid_point + vec3(-node->width, node->width, -node->width);\n            vec3 p10 = node->mid_point + vec3(node->width, -node->width, node->width);\n            vec3 p11 = node->mid_point + vec3(-node->width, -node->width, node->width);\n            vec3 p12 = node->mid_point + vec3(node->width, -node->width, -node->width);\n            vec3 p13 = node->mid_point + vec3(-node->width, -node->width, -node->width);\n            \n            AddLine(p00, p01, COLOR_YELLOW);\n            AddLine(p00, p02, COLOR_YELLOW);\n            AddLine(p03, p01, COLOR_YELLOW);\n            AddLine(p03, p02, COLOR_YELLOW);\n            \n            AddLine(p10, p11, COLOR_YELLOW);\n            AddLine(p10, p12, COLOR_YELLOW);\n            AddLine(p13, p11, COLOR_YELLOW);\n            AddLine(p13, p12, COLOR_YELLOW);\n            \n            AddLine(p00, p10, COLOR_YELLOW);\n            AddLine(p01, p11, COLOR_YELLOW);\n            AddLine(p02, p12, COLOR_YELLOW);\n            AddLine(p03, p13, COLOR_YELLOW);*//*\n            \n            for (int i = 0 ; i < 8; i++) {\n                if (node->octants[i]) Draw(node->octants[i]);\n            }\n        } else {\n            //AddLineMarker(node->point, COLOR_GREEN);\n        }\n    }*/\n    \n    \n    \n    struct Node {\n        std::vector<leaf_t> leaves;\n        \n        node_t octants[8] = {INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID};\n        \n        node_t parent = INVALID;\n        Octant parent_octant = OCTANT_BOTTOM_LEFT_BACK;\n        \n        vec3 mid_point = {0.0f, 0.0f, 0.0f};\n        float half_extent = 1.0f;\n    };\n    \n    struct Leaf {\n        node_t parent = INVALID;\n        vec3 point = {0.0f, 0.0f, 0.0f};\n        T value;\n    };\n    \n    inline node_t MakeNode(node_t parent, Octant octant) {\n        node_t idx = INVALID;\n        if (node_freelist.size()) {\n            idx = node_freelist.back();\n            node_freelist.pop_back();\n            nodes[idx] = Node{};\n        } else {\n            idx = nodes.size();\n            nodes.push_back(Node());\n        }\n        \n        auto [mid, ext] = GetDimensions(octant, nodes[parent].mid_point, nodes[parent].half_extent);\n        \n        nodes[idx].mid_point = mid;\n        nodes[idx].half_extent = ext;\n        \n        nodes[idx].parent = parent;\n        nodes[idx].parent_octant = octant;\n        \n        nodes[parent].octants[octant] = idx;\n        \n        return idx;\n    }\n    \n    inline void YeetNode(node_t node) {\n        node_t parent = nodes[node].parent;\n        \n        assert(node != root);\n        assert(parent != INVALID);\n        \n        // reparent all children\n        for (leaf_t leaf : nodes[node].leaves) {\n            nodes[parent].leaves.push_back(leaf);\n            leaves[leaf].parent = parent;\n        }\n        \n        nodes[parent].octants[nodes[node].parent_octant] = INVALID;\n        nodes[node].parent = INVALID;\n        \n        node_freelist.push_back(node);\n    }\n    \n    inline leaf_t MakeLeaf(node_t parent, vec3 point, const T& value) {\n        leaf_t idx = INVALID;\n        if (leaf_freelist.size()) {\n            idx = leaf_freelist.back();\n            leaf_freelist.pop_back();\n            leaves[idx] = Leaf{};\n        } else {\n            idx = leaves.size();\n            leaves.push_back(Leaf());\n        }\n\n        leaves[idx].point = point;\n        leaves[idx].value = value;\n        \n        leaves[idx].parent = parent;\n        \n        nodes[parent].leaves.push_back(idx);\n        \n        TrySplitting(parent);\n        \n        return idx;\n    }\n    \n    inline void YeetLeaf(leaf_t leaf) {\n        node_t parent = leaves[leaf].parent;\n        \n        auto it = nodes[parent].leaves.begin();\n        auto end = nodes[parent].leaves.end();\n        while (it < end && *it != leaf) it++;\n        \n        assert(it != end);\n        \n        nodes[parent].leaves.erase(it);\n        \n        TryFolding(parent);\n\n        leaf_freelist.push_back(leaf);\n    }\n\n    inline std::vector<leaf_t>& GetLeaves(node_t node) {\n        return nodes[node].leaves;\n    }\n    \n    inline vec3 GetMidPoint(node_t node) {\n        return nodes[node].mid_point;\n    }\n    \n    inline float GetHalfExtent(node_t node) {\n        return nodes[node].half_extent;\n    }\n    \n    inline node_t GetChild(node_t node, Octant octant) {\n        return nodes[node].octants[octant];\n    }\n    \n    \n    inline void TryFolding(node_t node) {\n        if (node == root) return;\n        \n        if (GetLeaves(node).size()) return;\n        \n        for (int i = 0; i < 8; i++) {\n            if (GetChild(node, (Octant)i) != INVALID) return;\n        }\n        \n        node_t parent = nodes[node].parent;\n        YeetNode(node);\n        \n        TryFolding(parent);\n    }\n    \n    inline void TrySplitting(node_t node) {\n        if (GetLeaves(node).size() < 4) return;\n        \n        // first we'll check if it's even worth splitting the tree.\n        // if all leaves are right next to each other, they'll just\n        // end up in the same node anyway and we'll just increase\n        // the depth of the tree for no reason. also identical points\n        // could force the split function to recurse indefinitely\n        bool worth_it = false;\n        vec3 first = GetPoint(GetLeaves(node)[0]);\n        for (size_t i = 1; i < GetLeaves(node).size(); i++) {\n            if (Distance2(first, GetPoint(GetLeaves(node)[i])) < 1.0f) continue;\n            \n            worth_it = true;\n            break;\n        }\n        \n        if (!worth_it) return;\n        \n        // move all leaves\n        for (leaf_t leaf : GetLeaves(node)) {\n            \n            Octant oct = GetOctant(GetMidPoint(node), GetPoint(leaf));\n            node_t oct_node = GetChild(node, oct);\n            \n            if (oct_node == INVALID) {\n                oct_node = MakeNode(node, oct);\n            }\n            \n            leaves[leaf].parent = oct_node;\n            GetLeaves(oct_node).push_back(leaf);\n        }\n        \n        GetLeaves(node).clear();\n    }\n\n    inline vec3 GetPoint(leaf_t leaf) {\n        return leaves[leaf].point;\n    }\n    \n    inline T GetValue(leaf_t leaf) {\n        return leaves[leaf].value;\n    }\n    \n    std::vector<Node> nodes;\n    std::vector<Leaf> leaves;\n    \n    std::vector<node_t> node_freelist;\n    std::vector<leaf_t> leaf_freelist;\n    \n    node_t root = INVALID;\n};\n\n}\n\n#endif  // TRAM_SDK_TEMPLATES_OCTREE_H"
  },
  {
    "path": "src/templates/pool.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_POOL_H\n#define TRAM_SDK_TEMPLATES_POOL_H\n\n#include <string>\n#include <iostream>\n#include <cassert>\n#include <cstdint>\n\n/* this is one of the oldest files in the library, hence why it looks so awful.\n * it probably would be a good idea to clean up the code, but editing this file\n * causes the whole library to re-compile and I don't really feel like doing it\n * now. also adding this comment caused the whole library to recompile. also\n * adding this bit at the end caused the library to re-compile. I should\n * probably stop editing this file.\n */\n\nnamespace tram {\n\ntemplate <typename T>\nclass Pool {\npublic:\n    struct iterator {\n        iterator(T* ptr) : ptr(ptr) {}\n        \n        T& operator*() const { return *ptr; }\n        T* operator->() { return ptr; }\n\n        iterator& operator++() { do ptr++; while (*((uint64_t*)ptr) == 0 && *(((uint64_t*)ptr) + 1) != 0); return *this; }  \n\n        iterator operator++(int) { iterator tmp = *this; ++(*this); return tmp; }\n\n        friend bool operator== (const iterator& a, const iterator& b) { return a.ptr == b.ptr; };\n        friend bool operator!= (const iterator& a, const iterator& b) { return a.ptr != b.ptr; };  \n        \n        T* ptr;\n    };\n\n    constexpr Pool(const char* name, uint64_t initial_size) {\n        print_name = name;\n        full_size = initial_size;\n        current_size = 0;\n\n        first = static_cast<T*>(::operator new((initial_size * sizeof(T)) + sizeof(uint64_t) * 2));\n        last = first;\n        last_free = first;\n        \n        *((uint64_t*)last) = 0;\n        *(((uint64_t*)last) + 1) = 0;\n    };\n    \n    constexpr Pool(const char* name, uint64_t initial_size, std::initializer_list<T> list) : Pool(name, initial_size) {\n        for (const auto& entry : list) {\n            make(entry);\n        }\n    }\n    \n    template <typename... Args>\n    T* make(Args&&... args) {\n        T* new_obj = allocate();\n        \n        new(new_obj) T(std::forward<Args>(args)...);\n        \n        return new_obj;\n    }\n    \n    void yeet(T* obj) {\n        obj->~T(); // destruct\n        deallocate(obj);\n    }\n    \n    T& operator[](size_t index) { return *(first + index); } // note that there is no checking for whether the index is valid\n    \n    iterator begin()  {auto ptr = first; while (*((uint64_t*)ptr) == 0 && ptr < last) ptr++; return ptr; }\n    iterator end() { return last; }\n    \n    size_t size() const {return current_size;}\n    size_t index(const T* ptr) const {return ptr - first;}\n    \n    /// Checks if an object can be accessed through iteration.\n    bool validate (const T* ptr) const {\n        return ptr >= first && ptr <= last && *((uint64_t*)ptr) != 0;\n    }\n    \n    /// Allocates memory, but doesn't construct type instance -- be careful\n    T* allocate() {\n        if (current_size == full_size) {\n            std::cout << \"Pool \" << print_name << \" out of space!\" << std::endl;\n            abort();\n        }\n\n        T* new_obj;\n\n        if (last_free != last) {\n            new_obj = last_free;\n            uint64_t* skip = reinterpret_cast<uint64_t*>(last_free);\n            skip++;\n            T** skip2 = reinterpret_cast<T**>(skip);\n            last_free = *skip2;\n        } else {\n            new_obj = last_free;\n            last++;\n            last_free++;\n            \n            *((uint64_t*)last) = 0;\n            *(((uint64_t*)last) + 1) = 0;\n        }\n        \n        current_size++;\n\n        return new_obj;\n    }\n    \n    /// Deallocates memory, but doesn't destruct type instance -- be careful\n    void deallocate(T* obj) {\n        assert(obj >= first && obj < last); // pointer is in pool\n        uint64_t* skip = reinterpret_cast<uint64_t*>(obj);\n        *skip = 0; // mark as empty\n        skip++;\n        T** next_free = reinterpret_cast<T**>(skip);\n        *next_free = last_free; // add pointer to previous free place\n        last_free = obj;\n        current_size--;\n    }\n    \n    // aliases to not break old code. do not use for new code\n    template <typename... Args>\n    T* AddNew(Args&&... args) { return make(std::forward<Args>(args)...); }\n    void Remove(T* ptr) { yeet(ptr); }\n    size_t GetSize() const { return current_size; }\n    T* GetFirst() { return first; }\n    T* GetLast() { return last; }\n    \nprotected:\n    std::string print_name;\n    uint64_t current_size;\n    uint64_t full_size;\n    T* first;\n    T* last;\n    T* last_free;\n\n    // make sure that there will be enough room for the empty place marker and free list pointer\n    static_assert(sizeof(T) >= sizeof(T*) + sizeof(uint64_t));\n};\n\ntemplate <typename T>\nclass PoolProxy {\npublic:\n    template <typename... Args>\n    static T* make(Args&&... args){ return pool.AddNew(std::forward<Args>(args)...); }\n    static void yeet(T* obj){ pool.Remove(obj); }\n    \n    // compatibility aliases\n    template <typename... Args>\n    static T* New(Args&&... args){ return make(std::forward<Args>(args)...); }\n    static void Delete(T* obj){ yeet(obj); }\n    \n    static Pool<T>& GetPool(){return pool;}\nprotected:\n    static Pool<T> pool;\n};\n\ntemplate <typename T> using PoopProxy = PoolProxy<T>;\n\ntemplate <typename T>\nclass PoolPtr {\npublic:\n    PoolPtr () { ptr = PoolProxy<T>::New(); }\n    ~PoolPtr () { PoolProxy<T>::Delete(ptr); }\n    T* GetResource() { return ptr; }\n    T* operator->() { return ptr; }\n    T& operator*() { return ptr; }\n    explicit operator bool() { return ptr != nullptr; }\nprotected:\n    T* ptr;\n};\n\n}\n\n#endif  // TRAM_SDK_TEMPLATES_POOL_H"
  },
  {
    "path": "src/templates/queue.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_QUEUE_H\n#define TRAM_SDK_TEMPLATES_QUEUE_H\n\n#include <iostream>\n#include <atomic>\n\nnamespace tram {\n\n/// Simple queue implementation.\n/// This queue uses a circular buffer internally. The push() and try_pop()\n/// methods have locks on them, so they can be used to create queues for passing\n/// messages between threads.\n/// I have no idea how multithreading works, use at your own risk.\ntemplate <typename T>\nclass Queue {\npublic:\n    Queue() = delete;\n    Queue(const Queue&) = delete;\n    Queue(Queue&&) = delete;\n    Queue(const char* name, size_t count) : name(name), count(count) {\n        T* allocated_memory = (T*)::operator new (count * sizeof(T));\n        \n        first = allocated_memory;\n        last = allocated_memory;\n        \n        memory_start = allocated_memory;\n        memory_end = allocated_memory + count;\n        \n        csize = 0;\n    }\n    \n    /// Thread safe.\n    template <typename... Args>\n    void push(Args&&... args) {\n        lock();\n        \n        if (count == csize) {\n            std::cout << \"Queue \" << name << \" out of space!\" << std::endl;\n            unlock();\n            return;\n        }\n        \n        new (last) T (std::forward<Args>(args)...);\n        \n        last++;\n        csize++;\n        \n        // wrap around\n        if (last == memory_end) {\n            last = memory_start;\n        }\n        \n        unlock();\n    }\n    \n    void pop() {\n        first->~T();\n        \n        first++;\n        csize--;\n\n        // wrap around\n        if (first == memory_end) {\n            first = memory_start;\n        }\n    }\n    \n    T& front() {\n        return *first;\n    }\n    \n    T& back() {\n        if (T* elem = last - 1; elem < memory_start) {\n            return *(memory_end - 1);\n        } else {\n            return *elem;\n        }\n    }\n    \n    /// Thread safe.\n    /// Copies front of the queue into value.\n    /// @return True if there was an element into the front of the queue and it\n    ///         was copied into value. Otherwise false.\n    bool try_pop(T& value) {\n        lock();\n        \n        if (csize == 0) {\n            unlock();\n            return false;\n        }\n        \n        value = *first;\n        pop();\n        \n        unlock();\n        return true;\n    }\n    \n    size_t size() { return csize; }\n\n    void lock() { while (spinlock.exchange(true)); }\n    void unlock() { spinlock.store(false); }\n    \nprotected:\n    const char* name;   // name of queue for log messages etc.\n    size_t csize;       // how many elements are in queue right now\n    size_t count;       // how many elements can be added to queue\n    T* first;           // first element in queue\n    T* last;            // one past last element in queue\n    T* memory_start;    // beginning of allocated memory\n    T* memory_end;      // end of allocated memory\n    \n    std::atomic<bool> spinlock = {false};\n};\n\n}\n\n#endif  // TRAM_SDK_TEMPLATES_QUEUE_H"
  },
  {
    "path": "src/templates/spinlock.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_SPINLOCK_H\n#define TRAM_SDK_TEMPLATES_SPINLOCK_H\n\n#include <atomic>\n\n/* I have no idea how useful this is.\n */\n\nnamespace tram {\n\nclass Spinlock {\npublic:\n    void lock() {\n        while (lock_atomic.exchange(true));\n    }\n    \n    void unlock() {\n        lock_atomic.store(false);\n    }\n    \n    void Lock() { lock(); }\n    void Unlock() { unlock(); }\nprivate:\n    std::atomic<bool> lock_atomic = {false};\n};\n    \n}\n\n#endif  // TRAM_SDK_TEMPLATES_SPINLOCK_H"
  },
  {
    "path": "src/templates/stack.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_STACK_H\n#define TRAM_SDK_TEMPLATES_STACK_H\n\n#include <string>\n#include <cstdint>\n#include <iostream>\n\n/* copy-pasting queue code might have not been the best idea. anyway, it would\n * be nice to yeet all of the old names of methods an keep only the new aliases.\n * \n * the internal stuff should also be rewritten to be actually understandable\n */\n\nnamespace tram {\n    template <typename T>\n    class Stack{\n    protected:\n        // TODO: figure out what is going on in here???\n        std::string print_name; //name of queue for log messages etc.\n        uint64_t current_size;  //how many elements are in queue right now\n        uint64_t full_size;     //how many elements can be added to queue\n        T* first;               //first element in queue\n        T* last;                //one past last element in queue\n        T* first_end;\n        T* last_end;\n    public:\n        Stack(std::string name, uint64_t initial_size){\n            print_name = name;\n            full_size = initial_size;\n            current_size = 0;\n\n            char* newmemory = (char*)::operator new(initial_size * sizeof(T));\n            first = (T*)newmemory;\n            last = first;\n            first_end = first;\n            last_end = (T*)newmemory + (initial_size * sizeof(T));\n        }\n        \n        T& top() {\n            return *GetLastPtr();\n        }\n        \n        void push(const T& value) {\n            *AddNew() = value;\n        }\n        \n        T pop() {\n            T value = top();\n            Remove();\n            return value;\n        }\n        \n        void reset() {\n            current_size = 0;\n            last = first;\n        }\n        \n        size_t size() {\n            return current_size;\n        }\n        \n        // aliases, don't use for new code\n        T* AddNew() { return AllocateTop(); }\n        void Remove() { RemoveTop(); }\n        T* GetLastPtr() { return GetTop(); }\n        uint64_t GetLength() { return size(); }\n        void Reset() { reset(); }\n        \n    protected:\n        T* AllocateTop() {\n            if (current_size == full_size) {\n                std::cout << \"Stack \" << print_name << \" out of space!\" << std::endl;\n                return nullptr;\n            }\n\n            T* newobj = last;\n            new(newobj) T;\n            last++;\n            current_size++;\n            return newobj;\n        }\n        \n        void RemoveTop()  {\n            if (last == first_end) {\n                std::cout << \"Stack \" << print_name << \" already empty!\" << std::endl;\n            };\n            last--;\n            current_size--;\n        }\n        \n        T* GetTop() {\n            if (current_size == 0) {\n                return nullptr;\n            } else {\n                return last - 1;\n            }\n        }\n    };\n}\n\n#endif  // TRAM_SDK_TEMPLATES_STACK_H"
  },
  {
    "path": "src/templates/stackpool.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_STACKPOOL_H\n#define TRAM_SDK_TEMPLATES_STACKPOOL_H\n\n#include <string>\n#include <iostream>\n\nnamespace tram {\n\n/// Allocator.\n/// Very simple allocator for data types that don't need their destructors\n/// called. Just call allocate() and specify the size of the array that you want\n/// to allocated. Use the pointer to write and store data. After you are done,\n/// you can reset all of the allocated memory with reset().\ntemplate <typename T>\nclass StackPool {\npublic:\n    constexpr StackPool(const char* name, size_t size) {\n        this->name = name;\n        this->available_size = size;\n        this->allocated_size = 0;\n\n        first = static_cast<T*>(::operator new(size * sizeof(T)));\n        last = first;\n    }\n    \n    constexpr StackPool(const char* name, size_t max_size, std::initializer_list<T> list) : StackPool(name, max_size) {\n        for (const auto& entry : list) {\n            *AddNew(1) = entry; // not good, but works\n        }\n    }\n\n    T* allocate(size_t units) {\n        if (allocated_size + units > available_size) {\n            std::cout << \"StackPool \" << name << \" out of space!\" << std::endl;\n            return nullptr;\n        }\n        \n        if (!units) {\n            return nullptr;\n        }\n\n        T* allocation = last;\n        \n        allocated_size += units;\n        last += units;\n\n        return allocation;\n    }\n    \n    void reset() {\n        allocated_size = 0;\n        last = first;\n    }\n    \n    size_t size() { return allocated_size; }\n    T* begin() { return first; }\n    T* end() { return last; }\n\n    // aliases, do not use for new code\n    T* AddNew(size_t units) { return allocate(units); }\n    void Reset() { reset(); }\n\nprotected:\n    std::string name;\n    size_t allocated_size;\n    size_t available_size;\n    T* first;\n    T* last;\n};\n\n}\n\n#endif  // TRAM_SDK_TEMPLATES_STACKPOOL_H"
  },
  {
    "path": "src/templates/test.h",
    "content": "// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime\n\n#ifndef TRAM_SDK_TEMPLATES_TEST_H\n#define TRAM_SDK_TEMPLATES_TEST_H\n\n#include <platform/terminal.cpp>\n\n#include <cstdio>\n#include <cstring>\n#include <chrono>\n\n// This is the framwork for testing the library.\n// It not actually part of library. But only test. I am testing.\n\nstruct _test_case {\n    const char* fullname;\n    const char* abbrv;\n    \n    int totl_asserts = 0;\n    int fail_asserts = 0;\n    \n    static constexpr std::chrono::time_point<std::chrono::high_resolution_clock> INVALID_TIME = {};\n    \n    std::chrono::time_point<std::chrono::high_resolution_clock> times_starts[10];\n    std::chrono::time_point<std::chrono::high_resolution_clock> times_ends[10];\n    const char* times_names[10];\n    int totl_times = 0;\n    \n    void timestart(const char* name) {\n        times_starts[totl_times] = std::chrono::high_resolution_clock::now();\n        times_ends[totl_times] = INVALID_TIME;\n        times_names[totl_times] = name;\n        \n        totl_times++;\n    }\n    \n    void timefinish(const char* name) {\n        int idx = 0;\n        while (idx < totl_times && strcmp(times_names[idx], name) != 0) idx++;\n        if (idx >= totl_times) {\n            printf(\"Forgot to call TIME_START(\\\"%s\\\")!\\n\", name);\n            return;\n        }\n        \n        if (times_ends[idx] != INVALID_TIME) {\n            printf(\"Called TIME_FINISH(\\\"%s\\\") twice!\\n\", name);\n            return;\n        }\n        \n        times_ends[idx] = std::chrono::high_resolution_clock::now();\n    }\n    \n    void fail() {\n        totl_asserts++;\n        fail_asserts++;\n    }\n    \n    void succ() {\n        totl_asserts++;\n    }\n    \n    void print() {\n        int p = totl_asserts - fail_asserts;\n        int t = totl_asserts;\n        \n        printf(\"Test %s %s \", fullname, abbrv);\n        \n        auto test_color = tram::Platform::TerminalColor::GREEN;\n        if (p != t) test_color = tram::Platform::TerminalColor::LIGHT_RED;\n        if (t == 0) test_color = tram::Platform::TerminalColor::LIGHT_YELLOW;\n        \n        tram::Platform::SwitchForeground(test_color);\n        printf(\"(%i/%i)\", p, t);\n        \n        tram::Platform::SwitchForeground(tram::Platform::TerminalColor::DEFAULT);\n        printf(\"\\n\");\n        \n\n        decltype(*times_ends - *times_starts) time_sum = {};\n        for (int i = 0; i < totl_times; i++) {\n            if (times_ends[i] == INVALID_TIME) {\n                printf(\"Forgot to call TIME_FINISH(\\\"%s\\\")!\\n\", times_names[i]);\n                continue;\n            }\n            auto time = times_ends[i] - times_starts[i];\n            time_sum += time;\n            auto print_time = std::chrono::duration_cast<std::chrono::milliseconds>(time).count();\n            char pad[80] = \"\";\n            int pads = 32 - strlen(times_names[i]);\n            for (int j = 0; j < pads; j++) strcat(pad, \" \");\n            \n            printf(\"- %s%s%ims\\n\", times_names[i], pad, print_time);\n        }\n        \n        if (totl_times > 1) {\n            auto print_time = std::chrono::duration_cast<std::chrono::milliseconds>(time_sum).count();\n            printf(\"- Total                           %ims\\n\", print_time);\n        }\n        \n    }\n    \n};\n\nstatic _test_case _all_test_cases[100];\nstatic int _test_case_count = 0;\nstatic _test_case* _last_test_case = nullptr;\n\n#define ASSERT(X) if (!(X)) { printf(\"Assert %s fail on line %i\\n\", #X, __LINE__); _last_test_case->fail(); } else { _last_test_case->succ(); }\n\n\n\n\n\n#define TIME_START(NAME) \\\n    _last_test_case->timestart(NAME);\n    \n#define TIME_FINISH(NAME) \\\n    _last_test_case->timefinish(NAME);\n\n#define TEST_CASE(X, Y) \\\n    _last_test_case = &_all_test_cases[_test_case_count]; \\\n    _test_case_count++; \\\n    \\\n    _last_test_case->fullname = X; \\\n    _last_test_case->abbrv = Y;\n    \n\n#define START_TEST \\\n    int main(int argc, char** argv) { \\\n        printf(\"Running all tests...\\n\");\n        \n#define END_TEST \\\n        bool fail = false;\\\n        \\\n        printf(\"\\nRESULTS:\\n\");\\\n        \\\n        for (int i = 0; i < _test_case_count; i++) {\\\n            auto c = &_all_test_cases[i];\\\n            \\\n            if (c->fail_asserts > 0) {\\\n                fail = true;\\\n            }\\\n            \\\n            c->print(); \\\n        }\\\n        \\\n        return fail ? -1 : 0;\\\n    }\n\n\n#endif  // TRAM_SDK_TEMPLATES_TEST_H"
  },
  {
    "path": "tests/README.md",
    "content": "\n# Running tests\n\nSet the directory to `/tests/`.\nThen run `make test`. This will compile and run all of the tests.\n\n# Todo list\n- Add a flag thing to the test framework\n- Make test text output nicer\n\n\n# Ideas for tests\n\n## Async/Resource\n\n- Create a Resource Mock\n- Put them in the Async loader\n- Make sure to check ForceLoadResource and the order in which resources get loaded\n\n## Entity/WorldCell\n\n- Create Entity mocks\n- Check if loading WorldCell loads its Entities\n- Also check if all the special loading flags are working\n\n## EntityComponent\n\n- Create an EntityComponent mock\n- Create a resource mock\n- EntityComponent requests a resource\n- Check that EntityComponent receives a response and starts\n\n## Event/Message\n\n- Define some custom Message/Event types\n- Send Messages, Events\n- Make sure that they are received\n\n"
  },
  {
    "path": "tests/aabb_tree.cpp",
    "content": "\n// dependencies\n#include <iostream>\n#include <vector>\n#include <random>\n#include <cmath>\n#include <algorithm>\n#include <cassert>\n#include <chrono>\n\n// testable unit\n#include <templates/aabb.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nstruct Sphere {\n\tvec3 center;\n\tfloat radius;\n\tuint32_t id;\n};\n\nstd::pair<vec3, vec3> GetSphereAABB(const Sphere& sphere) {\n\tvec3 min = sphere.center - vec3(sphere.radius);\n\tvec3 max = sphere.center + vec3(sphere.radius);\n\treturn {min, max};\n}\n\nfloat RaySphereIntersection(vec3 ray_pos, vec3 ray_dir, const Sphere& sphere) {\n\tvec3 oc = ray_pos - sphere.center;\n\tfloat a = glm::dot(ray_dir, ray_dir);\n\tfloat b = 2.0f * glm::dot(oc, ray_dir);\n\tfloat c = glm::dot(oc, oc) - sphere.radius * sphere.radius;\n\tfloat discriminant = b * b - 4.0f * a * c;\n\t\n\tif (discriminant < 0.0f) {\n\t\treturn INFINITY;\n\t}\n\t\n\tfloat t1 = (-b - std::sqrt(discriminant)) / (2.0f * a);\n\tfloat t2 = (-b + std::sqrt(discriminant)) / (2.0f * a);\n\t\n\tif (t1 > 0.0f) return t1;\n\tif (t2 > 0.0f) return t2;\n\t\n\treturn INFINITY;\n}\n\nstd::pair<uint32_t, float> BruteForceFindClosest(vec3 pos, vec3 dir, \n\t\t\t\t\t\t\t\t\t\t\t\t const std::vector<Sphere>& spheres,\n\t\t\t\t\t\t\t\t\t\t\t\t float distance_limit = INFINITY)\n{\n\tfloat min_dist = INFINITY;\n\tuint32_t closest_id = -1;\n\n\tfor (const auto& sphere : spheres) {\n\t\tfloat dist = RaySphereIntersection(pos, dir, sphere);\n\t\tif (dist < min_dist && dist < distance_limit) {\n\t\t\tmin_dist = dist;\n\t\t\tclosest_id = sphere.id;\n\t\t}\n\t}\n\t\n\treturn {closest_id, min_dist};\n}\n\nstd::vector<Sphere> GenerateSpheres(size_t count,\n\t\t\t\t\t\t\t\t\tfloat r_min, float r_max,\n\t\t\t\t\t\t\t\t\tvec3 pos_min, vec3 pos_max,\n\t\t\t\t\t\t\t\t\tuint32_t seed = 420)\n{\n\tstd::mt19937 rng(seed);\n\tstd::uniform_real_distribution<float> radius_dist(r_min, r_max);\n\tstd::uniform_real_distribution<float> x_dist(pos_min.x, pos_max.x);\n\tstd::uniform_real_distribution<float> y_dist(pos_min.y, pos_max.y);\n\tstd::uniform_real_distribution<float> z_dist(pos_min.z, pos_max.z);\n\n\tstd::vector<Sphere> spheres;\n\tfor (size_t i = 0; i < count; ++i) {\n\t\tspheres.push_back({\n\t\t\t.center = vec3(x_dist(rng), y_dist(rng), z_dist(rng)),\n\t\t\t.radius = radius_dist(rng),\n\t\t\t.id = static_cast<uint32_t>(i)\n\t\t});\n\t}\n\n\treturn spheres;\n}\n\nstruct Ray {\n\tvec3 pos;\n\tvec3 dir;\n};\n\nstd::vector<Ray> GenerateRays(size_t count,\n\t\t\t\t\t\t\t  vec3 pos_min, vec3 pos_max,\n\t\t\t\t\t\t\t  uint32_t seed = 69)\n{\n\tstd::mt19937 rng(seed);\n\tstd::uniform_real_distribution<float> x_dist(pos_min.x, pos_max.x);\n\tstd::uniform_real_distribution<float> y_dist(pos_min.y, pos_max.y);\n\tstd::uniform_real_distribution<float> z_dist(pos_min.z, pos_max.z);\n\tstd::uniform_real_distribution<float> dir_dist(-1.0f, 1.0f);\n\t\n\tstd::vector<Ray> rays;\n\tfor (size_t i = 0; i < count; ++i) {\n\t\trays.push_back({\n\t\t\t.pos = {x_dist(rng), y_dist(rng), z_dist(rng)},\n\t\t\t.dir = glm::normalize(vec3{dir_dist(rng), dir_dist(rng), dir_dist(rng)})\n\t\t});\n\t}\n\t\n\treturn rays;\n}\n\n\n\nSTART_TEST\n\nTEST_CASE(\"AABB Tree Basic Raycasts\", \"[aabb1]\") {\n\tAABBTree tree;\n\t\n\t// create a small set of spheres >_<\n\tstd::vector<Sphere> spheres = GenerateSpheres(\n\t\t50,\n\t\t0.5f, 5.0f,\n\t\t{-50.0f, -50.0f, -50.0f}, {50.0f, 50.0f, 50.0f}\n\t);\n\t\n\tstd::vector<Sphere> sphere_map(spheres.size());\n\t\n\tstd::vector<AABBTree::node_t> nodes;\n\tfor (const auto& sphere : spheres) {\n\t\tauto [min, max] = GetSphereAABB(sphere);\n\t\tauto node = tree.InsertLeaf(sphere.id, min, max);\n\t\tnodes.push_back(node);\n\t\tsphere_map[sphere.id] = sphere;\n\t}\n\t\n\tstd::vector<Ray> rays = GenerateRays(10000, {-60.0f, -60.0f, -60.0f}, {60.0f, 60.0f, 60.0f});\n\t\n\tfor (const auto& ray : rays) {\n\t\tauto [brute_id, brute_dist] = BruteForceFindClosest(ray.pos, ray.dir, spheres);\n\t\t\n\t\tuint32_t tree_id = tree.FindIntersection(\n\t\t\tray.pos, \n\t\t\tray.dir, \n\t\t\tINFINITY,\n\t\t\t[&sphere_map](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\t\treturn RaySphereIntersection(pos, dir, sphere_map[index]);\n\t\t\t}\n\t\t);\n\t\t\n\t\tASSERT(tree_id == brute_id)\n\t}\n\t\n\tfor (auto node : nodes) {\n\t\ttree.RemoveLeaf(node);\n\t}\n}\n\nTEST_CASE(\"AABB Tree Insert/Delete\", \"[aabb2]\") {\n\tAABBTree tree;\n\n\tstd::mt19937 rng(421);\n\tstd::vector<Sphere> all_spheres = GenerateSpheres(\n\t\t200,\n\t\t0.5f, 3.0f,\n\t\t{-100.0f, -100.0f, -100.0f}, {100.0f, 100.0f, 100.0f},\n\t\t421\n\t);\n\t\n\tstd::vector<AABBTree::node_t> nodes(all_spheres.size(), AABBTree::INVALID);\n\tstd::vector<bool> inserted(all_spheres.size(), false);\n\t\n\tfor (int i = 0; i < 500; ++i) {\n\t\tstd::uniform_int_distribution<size_t> idx_dist(0, all_spheres.size() - 1);\n\t\tsize_t idx = idx_dist(rng);\n\t\t\n\t\tif (inserted[idx]) {\n\t\t\tif (nodes[idx] != AABBTree::INVALID) {\n\t\t\t\ttree.RemoveLeaf(nodes[idx]);\n\t\t\t\tnodes[idx] = AABBTree::INVALID;\n\t\t\t\tinserted[idx] = false;\n\t\t\t}\n\t\t} else {\n\t\t\tauto [min, max] = GetSphereAABB(all_spheres[idx]);\n\t\t\tnodes[idx] = tree.InsertLeaf(all_spheres[idx].id, min, max);\n\t\t\tinserted[idx] = true;\n\t\t}\n\t}\n\t\n\tsize_t count = 0;\n\tstd::vector<Sphere> current_spheres;\n\tfor (size_t i = 0; i < all_spheres.size(); ++i) {\n\t\tif (inserted[i]) {\n\t\t\tcount++;\n\t\t\tcurrent_spheres.push_back(all_spheres[i]);\n\t\t}\n\t}\n\t\n\tstd::vector<Ray> test_rays = GenerateRays(5000, {-110.0f, -110.0f, -110.0f}, {110.0f, 110.0f, 110.0f}, 516);\n\t\n\tfor (const auto& ray : test_rays) {\n\t\tauto [brute_id, brute_dist] = BruteForceFindClosest(ray.pos, ray.dir, current_spheres);\n\t\t\n\t\tuint32_t tree_id = tree.FindIntersection(\n\t\t\tray.pos,\n\t\t\tray.dir,\n\t\t\tINFINITY,\n\t\t\t[&all_spheres](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\t\treturn RaySphereIntersection(pos, dir, all_spheres[index]);\n\t\t\t}\n\t\t);\n\t\t\n\t\tASSERT(tree_id == brute_id)\n\t}\n\n\tfor (auto node : nodes) {\n\t\tif (node != AABBTree::INVALID) {\n\t\t\ttree.RemoveLeaf(node);\n\t\t}\n\t}\n}\n\nTEST_CASE(\"AABB Tree Empty\", \"[aabb3]\") {\n\tAABBTree tree;\n\n\tvec3 ray_pos = {0.0f, 0.0f, 0.0f};\n\tvec3 ray_dir = {1.0f, 0.0f, 0.0f};\n\t\n\tuint32_t result = tree.FindIntersection(\n\t\tray_pos, ray_dir, INFINITY,\n\t\t[](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\treturn INFINITY;\n\t\t}\n\t);\n\t\n\tASSERT(result == -1)\n}\n\nTEST_CASE(\"AABB Tree Single\", \"[aabb4]\") {\n\tAABBTree tree;\n\n\tstd::vector<AABBTree::node_t> nodes;\n\tSphere sphere = {\n\t\t.center = {10.0f, 0.0f, 0.0f},\n\t\t.radius = 2.0f,\n\t\t.id = 420\n\t};\n\n\tauto [min, max] = GetSphereAABB(sphere);\n\tauto node = tree.InsertLeaf(sphere.id, min, max);\n\tnodes.push_back(node);\n\t\n\tvec3 ray_pos = {0.0f, 0.0f, 0.0f};\n\tvec3 ray_dir = {1.0f, 0.0f, 0.0f};\n\t\n\tuint32_t result = tree.FindIntersection(\n\t\tray_pos, ray_dir, INFINITY,\n\t\t[&sphere](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\treturn RaySphereIntersection(pos, dir, sphere);\n\t\t}\n\t);\n\t\n\tASSERT (result == 420)\n}\n\n\nTEST_CASE(\"AABB Tree Overlapping\", \"[aabb5]\") {\n\tAABBTree tree;\n\n\tstd::vector<AABBTree::node_t> nodes;\n\tSphere sphere = {\n\t\t.center = {10.0f, 0.0f, 0.0f},\n\t\t.radius = 1.0f,\n\t\t.id = 69\n\t};\n\n\tauto [min, max] = GetSphereAABB(sphere);\n\tnodes.push_back(tree.InsertLeaf(sphere.id, min, max));\n\t\n\tstd::vector<Sphere> both_spheres = {\n\t\t{{10.0f, 0.0f, 0.0f}, 2.0f, 42},\n\t\t{{10.0f, 0.0f, 0.0f}, 1.0f, 43}\n\t};\n\t\n\tvec3 ray_pos = {0.0f, 0.0f, 0.0f};\n\tvec3 ray_dir = {1.0f, 0.0f, 0.0f};\n\t\n\tauto [brute_id, brute_dist] = BruteForceFindClosest(ray_pos, ray_dir, both_spheres);\n\t\n\tuint32_t tree_id = tree.FindIntersection(\n\t\tray_pos, ray_dir, INFINITY,\n\t\t[&both_spheres](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\treturn RaySphereIntersection(pos, dir, both_spheres[index == 42 ? 0 : 1]);\n\t\t}\n\t);\n\t\n\tASSERT (tree_id == brute_id)\n\n\tfor (auto node : nodes) {\n\t\ttree.RemoveLeaf(node);\n\t}\n}\n\n/*\n\tCurrent Results @ 7500 spheres & 25 000 raycasts\n\n\tInsertion:\t\t16ms\n\tRaycasts:\t\t5255ms\n\tTeardown:\t\t5ms\n\tTotal time:\t\t5276ms\n\t\n\tAfter tree rotation optimization\n\t\n\tInsertion:      30ms\n\tRaycasts:       3281ms\n\tTeardown:       30ms\n\tTotal time:     3341ms\n\t\n*/\n\nTEST_CASE(\"AABB Tree Timed Test\", \"[aabb6]\") {\n\tAABBTree tree;\n\t\n\tstd::vector<Sphere> spheres = GenerateSpheres(\n\t\t7500,\n\t\t0.5f, 5.0f,\n\t\t{-500.0f, -500.0f, -500.0f}, {500.0f, 500.0f, 500.0f});\n\t\t\n\tstd::vector<Ray> rays = GenerateRays(25000, {-600.0f, -600.0f, -600.0f}, {600.0f, 600.0f, 600.0f});\n\t\n\tauto insertion_time = std::chrono::high_resolution_clock::now();\n\t\n\ttree.Reserve(spheres.size());\n\t\n\tstd::vector<AABBTree::node_t> nodes;\n\tfor (const auto& sphere : spheres) {\n\t\tauto [min, max] = GetSphereAABB(sphere);\n\t\tnodes.push_back(tree.InsertLeaf(sphere.id, min, max));\n\t}\n\n\tauto raycasting_time = std::chrono::high_resolution_clock::now();\n\t\n\tfor (const auto& ray : rays) {\n\t\tuint32_t tree_id = tree.FindIntersection(\n\t\t\tray.pos, ray.dir, INFINITY,\n\t\t\t[&spheres](vec3 pos, vec3 dir, uint32_t index) -> float {\n\t\t\t\treturn RaySphereIntersection(pos, dir, spheres[index]);\n\t\t\t}\n\t\t);\n\t\t\n\t\t// just so this doesn't get compiled out\n\t\tASSERT(tree_id != -2)\n\t}\n\t\n\tauto teardown_time = std::chrono::high_resolution_clock::now();\n\t\n\tfor (auto node : nodes) {\n\t\ttree.RemoveLeaf(node);\n\t}\n\t\n\tauto end_time = std::chrono::high_resolution_clock::now();\n\t\n\tauto insertion = std::chrono::duration_cast<std::chrono::milliseconds>(raycasting_time - insertion_time);\n\tauto raycasting = std::chrono::duration_cast<std::chrono::milliseconds>(teardown_time - raycasting_time);\n\tauto teardown = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - teardown_time);\n\tauto total = std::chrono::duration_cast<std::chrono::milliseconds>(end_time - insertion_time);\n\t\n\tstd::cout << \"Insertion:\\t\" << insertion << std::endl;\n\tstd::cout << \"Raycasts:\\t\" << raycasting << std::endl;\n\tstd::cout << \"Teardown:\\t\" << teardown << std::endl;\n\tstd::cout << \"Total time:\\t\" << total << std::endl;\n\t\n}\n\nTEST_CASE(\"AABB Tree Shape Cast\", \"[aabb7]\") {\n\tAABBTree tree;\n\n\tstd::vector<Sphere> spheres = {\n\t\t{{0.0f, 0.0f, 0.0f}, 1.0f, 0},\n\t\t{{10.0f, 0.0f, 0.0f}, 1.0f, 1},\n\t\t{{0.0f, 10.0f, 0.0f}, 1.0f, 2},\n\t\t{{10.0f, 10.0f, 0.0f}, 1.0f, 3},\n\t};\n\t\n\tstd::vector<AABBTree::node_t> nodes;\n\tfor (const auto& sphere : spheres) {\n\t\tauto [min, max] = GetSphereAABB(sphere);\n\t\tnodes.push_back(tree.InsertLeaf(sphere.id, min, max));\n\t}\n\t\n\tvec3 min = {-2.0f, -2.0f, -2.0f};\n\tvec3 max = {12.0f, 2.0f, 2.0f};\n\t\n\tstd::vector<uint32_t> found;\n\ttree.FindAABBIntersection(min, max, [&found](uint32_t id) {\n\t\tfound.push_back(id);\n\t});\n\t\n\tstd::sort(found.begin(), found.end());\n\t\n\tASSERT(found.size() == 2 && found[0] == 0 && found[1] == 1)\n\t\n\tfor (auto node : nodes) {\n\t\ttree.RemoveLeaf(node);\n\t}\n}\n\nTEST_CASE(\"AABB Tree Degenerate Tree\", \"[aabb8]\") {\n\tAABBTree tree;\n\n\tconst int GRID_SIZE = 32;\n\tconst float SPHERE_RADIUS = 1.0f;\n\tconst float SPACING = 3.0f;\n\t\n\tstd::vector<AABBTree::node_t> nodes;\n\t\n\tuint32_t sphere_id = 0;\n\t\n\tfor (int y = 0; y < GRID_SIZE; ++y) {\n\t\tif (y % 2 == 0) {\n\t\t\tfor (int x = 0; x < GRID_SIZE; ++x) {\n\t\t\t\tvec3 center = {x * SPACING, y * SPACING, 0.0f};\n\t\t\t\tvec3 min = center - vec3(SPHERE_RADIUS);\n\t\t\t\tvec3 max = center + vec3(SPHERE_RADIUS);\n\t\t\t\t\n\t\t\t\tnodes.push_back(tree.InsertLeaf(sphere_id++, min, max));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (int x = GRID_SIZE - 1; x >= 0; --x) {\n\t\t\t\tvec3 center = {x * SPACING, y * SPACING, 0.0f};\n\t\t\t\tvec3 min = center - vec3(SPHERE_RADIUS);\n\t\t\t\tvec3 max = center + vec3(SPHERE_RADIUS);\n\t\t\t\t\n\t\t\t\tnodes.push_back(tree.InsertLeaf(sphere_id++, min, max));\n\t\t\t}\n\t\t}\n\n\t}\n\t\n\tASSERT(15 >= tree.FindDepth())\n}\n\nEND_TEST\n\n"
  },
  {
    "path": "tests/core.cpp",
    "content": "\n// dependencies\n#include <framework/system.cpp>\n#include <framework/event.cpp>\n#include <framework/logging.cpp>\n#include <framework/uid.cpp>\n#include <platform/other.cpp>\n\ndouble TIME_MOCK_VALUE = 0.0;\n\nnamespace tram::Platform::Window {\n\tdouble GetTime() {\n\t\treturn TIME_MOCK_VALUE;\n\t}\n}\n\n// testable unit\n#include <framework/core.cpp>\n\n// test framework\n#include <templates/test.h>\n\nSTART_TEST\n\nTEST_CASE(\"Core Init and Update\", \"[core1]\") {\n\ttram::Core::Init();\n\ttram::Core::Update();\n\t\n\tauto first_tick = tram::GetTick();\n\t\n\tASSERT(first_tick == 0)\n\t\n\tTIME_MOCK_VALUE += 1.0/60.0 + 0.01;\n\n\ttram::Core::Update();\n\t\n\tASSERT(tram::GetTick() == first_tick + 1)\n}\n\nTEST_CASE(\"Generate ID\", \"[core2]\") {\n\tauto id1 = tram::GenerateID();\n\tauto id2 = tram::GenerateID();\n\tauto id3 = tram::GenerateID();\n\t\n\tASSERT(id1 != id2)\n\tASSERT(id2 != id3)\n\tASSERT(id1 != id3)\n\t\n}\n\nEND_TEST"
  },
  {
    "path": "tests/event.cpp",
    "content": "\n// dependencies\n#include <framework/uid.cpp>\n#include <framework/logging.cpp>\n#include <framework/system.cpp>\n#include <platform/other.cpp>\n\n// testable unit\n#include <framework/event.cpp>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\n// TODO: add some tests for getting events called on entities and components\n\nSTART_TEST\n\nTEST_CASE(\"Basic event\", \"[event1]\") {\n\tstatic event_t event = Event::Register(\"new-event\");\n\t\n\tASSERT(event)\n\t\n\tstatic bool listener1_called = false;\n\tstatic bool listener2_called = false;\n\tstatic bool listener3_called = false;\n\t\n\tlistener_t listener1 = Event::AddListener(event, [](Event&) { listener1_called = true; });\n\tlistener_t listener2 = Event::AddListener(event, [](Event&) { listener2_called = true; });\n\tlistener_t listener3 = Event::AddListener(event, [](Event&) { listener3_called = true; });\n\t\n\tlistener_t listener4 = Event::AddListener(event, [](Event& e) {\n\t\tASSERT(e.type == event)\n\t\tASSERT(e.subtype == 444)\n\t\tASSERT(e.poster == 111)\n\t});\n\t\n\tEvent::Post({event, 444, 111});\n\t\n\t// listeners don't receive events that are posted between the creation of\n\t// the listener and next dispatch\n\tEvent::Dispatch();\n\t\n\tASSERT(!listener1_called)\n\tASSERT(!listener2_called)\n\tASSERT(!listener3_called)\n\t\n\tEvent::Post({event, 444, 111});\n\t\n\tEvent::Dispatch();\n\t\n\tASSERT(listener1_called)\n\tASSERT(listener2_called)\n\tASSERT(listener3_called)\n\t\n\tEvent::Post({event, 444, 111});\n\tEvent::Post({event, 444, 111});\n\t\n\tEvent::Dispatch();\n}\n\nEND_TEST"
  },
  {
    "path": "tests/file.cpp",
    "content": "\n#include <framework/uid.cpp>\n#include <framework/logging.cpp>\n#include <framework/system.cpp>\n\n#include <platform/file.h>\n\n#include <map>\n\n// testable unit\n#include <framework/file.cpp>\n\n// test framework\n#include <templates/test.h>\n\nnamespace tram::Platform {\n\tvoid TryDebugging() {\n\t\t\n\t}\n\t\n\tvoid ShowErrorDialog(const char* message, const char* title) {\n\t\t\n\t}\n}\n\nnamespace tram {\n\nstatic std::map<std::string, std::string> all_contents;\n\nclass MockReader : public FileReader {\npublic:\n\tMockReader(std::string name) : name(name) {}\n\t~MockReader() = default;\n\t\n\tconst char* GetContents() {\n\t\tif (name == \"invalidfile\") return nullptr;\n\t\treturn all_contents[name].c_str();\n\t}\n\t\n\tsize_t GetSize() {\n\t\tif (name == \"invalidfile\") return 0;\n\t\treturn all_contents[name].size();\n\t}\n\t\n\tFileStatus GetStatus() {\n\t\tif (name == \"invalidfile\") return FileStatus::IO_ERROR;\n\t\treturn FileStatus::READY;\n\t}\n\t\n\tvoid Yeet() {\n\t\tdelete this;\n\t}\n\t\n\tstatic FileReader* GetReader(const char* path) {\n\t\treturn new MockReader(path);\n\t}\n\t\n\tstd::string name;\n};\n\nclass MockWriter : public FileWriter {\npublic:\n\tMockWriter(std::string name) : name(name) {}\n\t~MockWriter() = default;\n\t\n\tvoid SetContents(const char* contents, size_t size) {\n\t\tif (name == \"invalidfile\") return;\n\t\tall_contents[name] += std::string_view{contents, size};\n\t}\n\t\n\tFileStatus GetStatus() {\n\t\tif (name == \"invalidfile\") return FileStatus::IO_ERROR;\n\t\treturn FileStatus::READY;\n\t}\n\t\n\tvoid Yeet() {\n\t\tdelete this;\n\t}\n\t\n\tbool Flush() {\n\t\tif (name == \"invalidfile\") return false;\n\t\treturn true;\n\t}\n\n\tstatic MockWriter* GetWriter(const char* path) {\n\t\treturn new MockWriter(path);\n\t}\n\n\tstd::string name;\t\n};\n\nFileReader* FileReader::GetReader(const char* path) {\n\treturn new MockReader(path);\n}\n\nFileWriter* FileWriter::GetWriter(const char* path) {\n\treturn new MockWriter(path);\n}\n\n}\n\nstd::string GetMockContents(std::string filename) {\n\treturn tram::all_contents[filename];\n}\n\nvoid SetMockContents(std::string filename, std::string contents) {\n\ttram::all_contents[filename] = contents;\n}\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"File basic closing and opening\", \"[file_open]\") {\n\tFile f1(\"testfile.txt\", File::READ | File::TEXT);\n\tASSERT(f1.is_open())\n\t\n\tFile f2(\"invalidfile\", File::READ | File::TEXT);\n\tASSERT(!f2.is_open())\n\t\n\tFile f3(\"writefile.txt\", File::WRITE | File::TEXT);\n\tASSERT(f3.is_open())\n}\n\nTEST_CASE(\"File binary integers\", \"[file1]\") {\n\t{\n\t\tFile writer(\"binfile.bin\", File::WRITE | File::BINARY);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_int8(127);\n\t\twriter.write_int16(-420);\n\t\twriter.write_int32(694206969);\n\t\twriter.write_int64(-9876543210LL);\n\t\t\n\t\twriter.write_uint8(255);\n\t\twriter.write_uint16(65535);\n\t\twriter.write_uint32(4000000000U);\n\t\twriter.write_uint64(18446744073709551615ULL);\n\t\t\n\t\tASSERT(!writer.was_error())\n\t}\n\n\t{\n\t\tFile reader(\"binfile.bin\", File::READ | File::BINARY);\n\t\tASSERT(reader.is_open())\n\n\t\tASSERT(reader.read_int8() == 127)\n\t\tASSERT(reader.read_int16() == -420)\n\t\tASSERT(reader.read_int32() == 694206969)\n\t\tASSERT(reader.read_int64() == -9876543210LL)\n\t\t\n\t\tASSERT(reader.read_uint8() == 255)\n\t\tASSERT(reader.read_uint16() == 65535)\n\t\tASSERT(reader.read_uint32() == 4000000000U)\n\t\tASSERT(reader.read_uint64() == 18446744073709551615ULL)\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File binary floats\", \"[file2]\") {\n\t{\n\t\tFile writer(\"floatfile.bin\", File::WRITE | File::BINARY);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_float32(6.7f);\n\t\twriter.write_float64(69.420);\n\t\twriter.write_float32(-420.69f);\n\t\twriter.write_float64(0.0);\n\t\t\n\t\tASSERT(!writer.was_error())\n\t\tASSERT(writer.flush())\n\t}\n\t\n\t{\n\t\tFile reader(\"floatfile.bin\", File::READ | File::BINARY);\n\t\tASSERT(reader.is_open())\n\t\t\n\t\tfloat f1 = reader.read_float32();\n\t\tASSERT(f1 == 6.7f)\n\t\t\n\t\tdouble d1 = reader.read_float64();\n\t\tASSERT(d1 > 69.419 && d1 < 69.421)\n\t\t\n\t\tfloat f2 = reader.read_float32();\n\t\tASSERT(f2 > -420.70f && f2 < -420.67f)\n\t\t\n\t\tdouble d2 = reader.read_float64();\n\t\tASSERT(d2 == 0.0)\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File text mode reading and writing\", \"[file3]\") {\n\t{\n\t\tFile writer(\"textfile.txt\", File::WRITE | File::TEXT);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_int32(420);\n\t\twriter.write_string(\"hello\");\n\t\twriter.write_float32(1.5f);\n\t\twriter.write_string(\"world\");\n\t\t\n\t\tASSERT(!writer.was_error())\n\t\tASSERT(writer.flush())\n\t}\n\t\n\t{\n\t\tFile reader(\"textfile.txt\", File::READ | File::TEXT);\n\t\tASSERT(reader.is_open())\n\t\tASSERT(reader.is_continue())\n\t\t\n\t\tASSERT(reader.read_int32() == 420)\n\t\tstd::string_view str1 = reader.read_string();\n\t\tASSERT(str1 == \"hello\")\n\t\t\n\t\tfloat f = reader.read_float32();\n\t\tASSERT(f == 1.5f)\n\t\t\n\t\tstd::string_view str2 = reader.read_string();\n\t\tASSERT(str2 == \"world\")\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File newlines and strings\", \"[file4]\") {\n\t{\n\t\tFile writer(\"multiline.txt\", File::WRITE | File::TEXT);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_string(\"first line\", '\\0');\n\t\twriter.write_newline();\n\t\twriter.write_string(\"second line\", '\\0');\n\t\twriter.write_newline();\n\t\twriter.write_int32(420);\n\t\twriter.write_string(\"third\", '\\0');\n\t\t\n\t\tASSERT(writer.flush())\n\t}\n\t\n\t{\n\t\tFile reader(\"multiline.txt\", File::READ | File::TEXT);\n\t\tASSERT(reader.is_open())\n\t\t\n\t\tstd::string_view line1 = reader.read_line();\n\t\tstd::string_view line2 = reader.read_line();\n\t\tint32_t integer = reader.read_int32();\n\t\tstd::string_view str = reader.read_token();\n\n\t\t// the writer inserts a space after each string, so we skip it here\n\t\tline1.remove_suffix(1);\n\t\tline2.remove_suffix(1);\n\t\t\n\t\tASSERT(line1 == \"first line\")\n\t\tASSERT(line2 == \"second line\")\n\t\tASSERT(integer == 420)\n\t\tASSERT(str == \"third\")\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File pause line\", \"[file6]\") {\n\tSetMockContents(\"pausefile.txt\", \"line1 data1\\nline2 data2\\nline3 data3\");\n\t\n\tFile reader(\"pausefile.txt\", File::READ | File::TEXT | File::PAUSE_LINE);\n\tASSERT(reader.is_open())\n\tASSERT(reader.is_continue())\n\t\n\tstd::string_view tok1 = reader.read_token();\n\tstd::string_view tok2 = reader.read_token();\n\t\n\tASSERT(tok1 == \"line1\")\n\tASSERT(tok2 == \"data1\")\n\t\n\t// parse cursor at linebreak\n\tASSERT(reader.is_continue())\n\tASSERT(reader.get_line() == 1)\n\t\n\t// these don't advance past linebreak\n\treader.read_token();\n\treader.read_token();\n\t\n\t// parse cursor at beginning of new line now\n\treader.skip_linebreak();\n\tASSERT(reader.get_line() == 2)\n\t\n\tstd::string_view tok3 = reader.read_token();\n\tstd::string_view tok4 = reader.read_token();\n\t\n\tASSERT(tok3 == \"line2\")\n\tASSERT(tok4 == \"data2\")\n\t\n\tASSERT(!reader.was_error())\n\t\n\t// also doesn't advance over the linebreak\n\treader.read_int32();\n\t\n\t// previous parse should have failed, due to being at linebreak (no chars left)\n\tASSERT(reader.was_error())\n\treader.reset_flags();\n\t\n\treader.skip_linebreak();\n\tASSERT(reader.get_line() == 3)\n\t\n\tstd::string_view tok5 = reader.read_token();\n\tstd::string_view tok6 = reader.read_token();\n\t\n\tASSERT(tok5 == \"line3\")\n\tASSERT(tok6 == \"data3\")\n\t\n\tASSERT(!reader.was_error())\n}\n\nTEST_CASE(\"File errors\", \"[file7]\") {\n\tSetMockContents(\"errorfile.txt\", \"420 69\");\n\t\n\tFile reader(\"errorfile.txt\", File::READ | File::TEXT);\n\tASSERT(reader.is_open())\n\t\n\tASSERT(reader.read_int32() == 420)\n\tASSERT(!reader.was_error())\n\t\n\tASSERT(reader.read_int32() == 69)\n\tASSERT(!reader.was_error())\n\t\n\treader.read_int32();\n\tASSERT(reader.was_error())\n\tASSERT(!reader.is_continue())\n\t\n\treader.reset_flags();\n\tASSERT(!reader.was_error())\n}\n\nTEST_CASE(\"File invalid file handling\", \"[file8]\") {\n\tFile f1(\"invalidfile\", File::READ | File::TEXT);\n\tASSERT(!f1.is_open())\n\t\n\tFile f2(\"invalidfile\", File::WRITE | File::BINARY);\n\tASSERT(!f2.is_open())\n\t\n\tFile f3(\"invalidfile\", File::READ | File::BINARY);\n\tASSERT(!f3.is_open())\n}\n\nTEST_CASE(\"Fine line counting\", \"[file9]\") {\n\tSetMockContents(\"linefile.txt\", \"line 1\\nline 2\\nline 3\\nline 4\");\n\t\n\tFile reader(\"linefile.txt\", File::READ | File::TEXT);\n\tASSERT(reader.is_open())\n\tASSERT(reader.get_line() == 1)\n\t\n\treader.read_line();\n\tASSERT(reader.get_line() == 2)\n\t\n\treader.read_line();\n\tASSERT(reader.get_line() == 3)\n\t\n\treader.read_line();\n\tASSERT(reader.get_line() == 4)\n\t\n\tASSERT(!reader.was_error())\n}\n\nTEST_CASE(\"File different size binary values\", \"[file10]\") {\n\t{\n\t\tFile writer(\"mixed.bin\", File::WRITE | File::BINARY);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_int8(-69);\n\t\twriter.write_uint32(0xDEADBEEF);\n\t\twriter.write_float32(4.20f);\n\t\twriter.write_uint64(6942069ULL);\n\t\twriter.write_int8(-50);\n\t\twriter.write_float64(-0.001);\n\t\t\n\t\tASSERT(writer.flush())\n\t}\n\t\n\t{\n\t\tFile reader(\"mixed.bin\", File::READ | File::BINARY);\n\t\tASSERT(reader.is_open())\n\t\t\n\t\tASSERT(reader.read_int8() == -69)\n\t\tASSERT(reader.read_uint32() == 0xDEADBEEF)\n\t\t\n\t\tfloat f = reader.read_float32();\n\t\tASSERT(f == 4.20f)\n\t\t\n\t\tASSERT(reader.read_uint64() == 6942069ULL)\n\t\tASSERT(reader.read_int8() == -50)\n\t\t\n\t\tdouble d = reader.read_float64();\n\t\tASSERT(d == -0.001)\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File that is empty\", \"[file11]\") {\n\tSetMockContents(\"emptyfile.txt\", \"\");\n\t\n\tFile reader(\"emptyfile.txt\", File::READ | File::TEXT);\n\tASSERT(reader.is_open())\n\tASSERT(!reader.is_continue())\n}\n\nTEST_CASE(\"File reading whole lines\", \"[read_line]\") {\n\tSetMockContents(\"linereader.txt\", \"first line here\\nsecond line here\\nthird line here\");\n\t\n\tFile reader(\"linereader.txt\", File::READ | File::TEXT);\n\tASSERT(reader.is_open())\n\t\n\tstd::string_view line1 = reader.read_line();\n\tstd::string_view line2 = reader.read_line();\n\tstd::string_view line3 = reader.read_line();\n\t\n\tASSERT(line1 == \"first line here\")\n\tASSERT(line2 == \"second line here\")\n\tASSERT(line3 == \"third line here\")\n\t\n\tASSERT(!reader.was_error())\n}\n\nTEST_CASE(\"File flushing\", \"[file12]\") {\n\tFile writer(\"flushtest.txt\", File::WRITE | File::TEXT);\n\tASSERT(writer.is_open())\n\t\n\twriter.write_int32(111);\n\twriter.write_int32(222);\n\twriter.write_int32(333);\n\t\n\tASSERT(!writer.was_error())\n\tASSERT(writer.flush())\n\t\n\tstd::string contents = GetMockContents(\"flushtest.txt\");\n\tASSERT(contents.length() > 0)\n}\n\nTEST_CASE(\"File boundary integers\", \"[file13]\") {\n\t{\n\t\tFile writer(\"boundary.bin\", File::WRITE | File::BINARY);\n\t\tASSERT(writer.is_open())\n\t\t\n\t\twriter.write_int8(INT8_MIN);\n\t\twriter.write_int8(INT8_MAX);\n\t\twriter.write_int16(INT16_MIN);\n\t\twriter.write_int16(INT16_MAX);\n\t\twriter.write_uint8(0);\n\t\twriter.write_uint8(UINT8_MAX);\n\t\t\n\t\tASSERT(writer.flush())\n\t}\n\t\n\t{\n\t\tFile reader(\"boundary.bin\", File::READ | File::BINARY);\n\t\tASSERT(reader.is_open())\n\t\t\n\t\tASSERT(reader.read_int8() == INT8_MIN)\n\t\tASSERT(reader.read_int8() == INT8_MAX)\n\t\tASSERT(reader.read_int16() == INT16_MIN)\n\t\tASSERT(reader.read_int16() == INT16_MAX)\n\t\tASSERT(reader.read_uint8() == 0)\n\t\tASSERT(reader.read_uint8() == UINT8_MAX)\n\t\t\n\t\tASSERT(!reader.was_error())\n\t}\n}\n\nTEST_CASE(\"File text comments\", \"[file14]\") {\n\tSetMockContents(\"commentfile.txt\", \n\t\t\"sussy kraut\\n\"\n\t\t\"4.20 69 # number\\n\"\n\t\t\"# this is a comment\\n\"\n\t\t\"\t # also a comment\\n\"\n\t\t\"egg roll # comment\\n\");\n\t\n\tFile reader(\"commentfile.txt\", File::READ | File::TEXT);\n\tASSERT(reader.is_open())\n\tASSERT(reader.is_continue())\n\t\n\tstd::string_view tok1 = reader.read_token();\n\tstd::string_view tok2 = reader.read_token();\n\t\n\tASSERT(tok1 == \"sussy\")\n\tASSERT(tok2 == \"kraut\")\n\t\n\tASSERT(reader.read_float32() == 4.20f)\n\tASSERT(reader.read_int32() == 69)\n\t\n\tstd::string_view tok3 = reader.read_token();\n\tstd::string_view tok4 = reader.read_token();\n\t\n\tASSERT(tok3 == \"egg\")\n\tASSERT(tok4 == \"roll\")\n\n\tASSERT(!reader.was_error())\n\tASSERT(!reader.is_continue())\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/hashmap.cpp",
    "content": "\n// testable unit\n#include <templates/hashmap.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Hashmap basic operations\", \"[hashmap1]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"test_map\", 10);\n\t\n\tASSERT(!map.Exists(23));\n\t\n\tTestData data{420, 67};\n\tmap.Insert(23, data);\n\t\n\tASSERT(map.Exists(23));\n\t\n\tTestData retrieved = map.Find(23);\n\tASSERT(retrieved.a == 420);\n\tASSERT(retrieved.b == 67);\n\t\n\tmap.Remove(23);\n\t\n\tASSERT(!map.Exists(23));\n}\n\nTEST_CASE(\"Hashmap initializer list\", \"[hashmap2]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"init_map\", 10, {\n\t\t{1, TestData{10, 20}},\n\t\t{2, TestData{30, 40}},\n\t\t{3, TestData{50, 60}}\n\t});\n\t\n\tASSERT(map.Exists(1));\n\tASSERT(map.Exists(2));\n\tASSERT(map.Exists(3));\n\t\n\tASSERT(map.Find(1).a == 10 && map.Find(1).b == 20);\n\tASSERT(map.Find(2).a == 30 && map.Find(2).b == 40);\n\tASSERT(map.Find(3).a == 50 && map.Find(3).b == 60);\n}\n\nTEST_CASE(\"Hashmap collision handling\", \"[hashmap3]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tsize_t max_size = 50;\n\tHashmap<TestData> map(\"collision_map\", max_size);\n\t\n\tuint32_t base_key = 100;\n\tuint32_t stride = 2 * max_size;\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tuint32_t key = base_key + i * stride;\n\t\tmap.Insert(key, TestData{i * 10, i * 100});\n\t}\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tuint32_t key = base_key + i * stride;\n\t\tASSERT(map.Exists(key));\n\t\tTestData data = map.Find(key);\n\t\tASSERT(data.a == i * 10);\n\t\tASSERT(data.b == i * 100);\n\t}\n\t\n\tmap.Remove(base_key + 3 * stride);\n\tmap.Remove(base_key + 5 * stride);\n\tmap.Remove(base_key + 7 * stride);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tuint32_t key = base_key + i * stride;\n\t\tif (i == 3 || i == 5 || i == 7) {\n\t\t\tASSERT(!map.Exists(key));\n\t\t} else {\n\t\t\tASSERT(map.Exists(key));\n\t\t\tTestData data = map.Find(key);\n\t\t\tASSERT(data.a == i * 10);\n\t\t\tASSERT(data.b == i * 100);\n\t\t}\n\t}\n}\n\nTEST_CASE(\"Hashmap array operator\", \"[hashmap4]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"bracket_map\", 10);\n\tmap.Insert(23, TestData{420, 421});\n\t\n\tASSERT(map[23].a == 420);\n\tASSERT(map[23].b == 421);\n\t\n\tmap[23].a = 69;\n\tmap[23].b = 67;\n\n\tASSERT(map[23].a == 69);\n\tASSERT(map[23].b == 67);\n}\n\nTEST_CASE(\"Hashmap overload performance\", \"[hashmap5]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tconst size_t num_entries = 25000;\n\tconst size_t padding = 10;\n\t\n\t// this is like the absolute WORST WORST case, since we are intentionally\n\t// generating collisions\n\t\n\t{\n\t\tsize_t max_size = num_entries + num_entries + num_entries + num_entries;\n\t\tHashmap<TestData> map(\"tiny load\", max_size, padding);\n\t\t\n\t\tTIME_START(\"Tiny load        [25%]\");\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tmap.Insert(i * max_size, TestData{(int)i, (int)i * 2});\n\t\t}\n\t\t\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tTestData data = map.Find(i * max_size);\n\t\t\tASSERT(data.a == i);\n\t\t\tASSERT(data.b == i * 2);\n\t\t}\n\t\tTIME_FINISH(\"Tiny load        [25%]\");\n\t}\n\t\n\t{\n\t\tsize_t max_size = num_entries + num_entries;\n\t\tHashmap<TestData> map(\"medium load\", max_size, padding);\n\t\t\n\t\tTIME_START(\"Medium load      [50%]\");\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tmap.Insert(i * max_size, TestData{(int)i, (int)i * 2});\n\t\t}\n\t\t\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tTestData data = map.Find(i * max_size);\n\t\t\tASSERT(data.a == i);\n\t\t\tASSERT(data.b == i * 2);\n\t\t}\n\t\tTIME_FINISH(\"Medium load      [50%]\");\n\t}\n\t\n\t{\n\t\tsize_t max_size = num_entries;\n\t\tHashmap<TestData> map(\"full load\", max_size, padding);\n\t\t\n\t\tTIME_START(\"Full load        [100%]\");\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tmap.Insert(i * max_size, TestData{(int)i, (int)i * 2});\n\t\t}\n\t\t\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tTestData data = map.Find(i * max_size);\n\t\t\tASSERT(data.a == i);\n\t\t\tASSERT(data.b == i * 2);\n\t\t}\n\t\tTIME_FINISH(\"Full load        [100%]\");\n\t}\n\t\n\t{\n\t\tsize_t max_size = num_entries / 2 + num_entries / 4;\n\t\tHashmap<TestData> map(\"overload\", max_size, padding);\n\t\t\n\t\tTIME_START(\"Overload         [150%]\");\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tmap.Insert(i * max_size, TestData{(int)i, (int)i * 2});\n\t\t}\n\t\t\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tTestData data = map.Find(i * max_size);\n\t\t\tASSERT(data.a == i);\n\t\t\tASSERT(data.b == i * 2);\n\t\t}\n\t\tTIME_FINISH(\"Overload         [150%]\");\n\t}\n\t\n\t{\n\t\tsize_t max_size = num_entries / 2 + 1;\n\t\tHashmap<TestData> map(\"turbo overload\", max_size, padding);\n\t\t\n\t\tTIME_START(\"Turbo overload   [200%]\");\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tmap.Insert(i * max_size, TestData{(int)i, (int)i * 2});\n\t\t}\n\t\t\n\t\tfor (size_t i = 0; i < num_entries; i++) {\n\t\t\tTestData data = map.Find(i * max_size);\n\t\t\tASSERT(data.a == i);\n\t\t\tASSERT(data.b == i * 2);\n\t\t}\n\t\tTIME_FINISH(\"Turbo overload   [200%]\");\n\t}\n}\n\nTEST_CASE(\"Hashmap non-existent access\", \"[hashmap6]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"empty_map\", 10);\n\t\n\tASSERT(!map.Exists(0));\n\tASSERT(!map.Exists(-420));\n\tASSERT(!map.Exists(23));\n}\n\nTEST_CASE(\"Hashmap single entry map\", \"[hashmap7]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"single_map\", 1);\n\t\n\tmap.Insert(23, TestData{67, 420});\n\tASSERT(map.Exists(23));\n\tASSERT(map.Find(23).a == 67);\n\t\n\tmap.Remove(23);\n\tASSERT(!map.Exists(23));\n}\n\nTEST_CASE(\"Hashmap iteration\", \"[hashmap8]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"iteration map\", 50);\n\n\tmap.Insert(11, TestData{111, 222});\n\tmap.Insert(22, TestData{333, 444});\n\tmap.Insert(33, TestData{555, 666});\n\tmap.Insert(44, TestData{777, 888});\n\tmap.Insert(55, TestData{999, 1111});\n\n\tbool seen_11 = false;\n\tbool seen_22 = false;\n\tbool seen_33 = false;\n\tbool seen_44 = false;\n\tbool seen_55 = false;\n\tint count = 0;\n\n\tfor (auto it = map.begin(); it != map.end(); ++it) {\n\t\tcount++;\n\n\t\tif (it->a == 111 && it->b == 222) seen_11 = true;\n\t\tif (it->a == 333 && it->b == 444) seen_22 = true;\n\t\tif (it->a == 555 && it->b == 666) seen_33 = true;\n\t\tif (it->a == 777 && it->b == 888) seen_44 = true;\n\t\tif (it->a == 999 && it->b == 1111) seen_55 = true;\n\t}\n\t\n\tASSERT(count == 5);\n\tASSERT(seen_11);\n\tASSERT(seen_22);\n\tASSERT(seen_33);\n\tASSERT(seen_44);\n\tASSERT(seen_55);\n}\n\nTEST_CASE(\"Hashmap for loop iteration\", \"[hashmap9]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"range map\", 30);\n\n\tfor (int i = 0; i < 10; i++) {\n\t\tmap.Insert(i * 10, TestData{i, i * 2});\n\t}\n\n\tint count = 0;\n\tint sum_a = 0;\n\tint sum_b = 0;\n\t\n\tfor (auto& item : map) {\n\t\tcount++;\n\t\tsum_a += item.a;\n\t\tsum_b += item.b;\n\t}\n\n\tASSERT(count == 10);\n\tASSERT(sum_a == 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);\n\tASSERT(sum_b == 0 + 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18);\n}\n\nTEST_CASE(\"Hashmap empty hashmap iteration\", \"[hashmap10]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"empty map\", 10);\n\tint count = 0;\n\tfor (auto it = map.begin(); it != map.end(); ++it) {\n\t\tcount++;\n\t}\n\n\tASSERT(count == 0);\n\n\tcount = 0;\n\tfor (auto& item : map) {\n\t\tASSERT(item.a == item.a)\n\t\tASSERT(item.b == item.b)\n\t\tcount++;\n\t}\n\t\n\tASSERT(count == 0);\n}\n\nTEST_CASE(\"Hashmap empty begin is end\", \"[hashmap11]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"empty map\", 15);\n\t\n\tASSERT(map.begin() == map.end());\n}\n\nTEST_CASE(\"Hashmap iteration over removed\", \"[hashmap12]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tHashmap<TestData> map(\"remove map\", 40);\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tmap.Insert(i, TestData{i * 5, i * 7});\n\t}\n\t\n\tmap.Remove(5);\n\tmap.Remove(10);\n\tmap.Remove(15);\n\t\n\tint count = 0;\n\tbool seen_5 = false;\n\tbool seen_10 = false;\n\tbool seen_15 = false;\n\t\n\tfor (auto& item : map) {\n\t\tcount++;\n\t\tif (item.a == 25) seen_5 = true;\n\t\tif (item.a == 50) seen_10 = true;\n\t\tif (item.a == 75) seen_15 = true;\n\t}\n\t\n\tASSERT(count == 17);\n\n\tASSERT(!seen_5);\n\tASSERT(!seen_10);\n\tASSERT(!seen_15);\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/octree.cpp",
    "content": "// uwu octree testing suite~ ;33 >_<\n// testing the octree's nearest neighbor search against brute force!\n\n#include <iostream>\n#include <vector>\n#include <random>\n#include <algorithm>\n#include <array>\n#include <cmath>\n#include <set>\n#include <glm/glm.hpp>\n\n// testable unit\n#include <templates/octree.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nstruct PointInfo {\n\tvec3 point;\n\tint data;\n\tOctree<int>::leaf_t leaf_id;\n};\n\nstruct NearestResult {\n\tint data;\n\tfloat distance;\n};\n\nsize_t BruteForceFindNearest(const std::vector<PointInfo>& points, vec3 query, NearestResult* result) {\n\tif (points.empty()) return 0;\n\t\n\tstd::vector<std::pair<float, size_t>> distances;\n\tdistances.reserve(points.size());\n\t\n\tfor (size_t i = 0; i < points.size(); ++i) {\n\t\tfloat dist = glm::distance(points[i].point, query);\n\t\tdistances.push_back({dist, i});\n\t}\n\t\n\tstd::sort(distances.begin(), distances.end(),\n\t\t[](const auto& a, const auto& b) { return a.first < b.first; });\n\t\n\tsize_t count = distances.size() > 4 ? 4 : distances.size();\n\tfor (size_t i = 0; i < count; ++i) {\n\t\tresult[i].data = points[distances[i].second].data;\n\t\tresult[i].distance = distances[i].first;\n\t}\n\t\n\treturn count;\n}\n\nbool CompareResults(const std::vector<PointInfo>& points, vec3 query, int* octree_results, size_t octree_count, NearestResult* brute_results, size_t brute_count) {\n\tif (octree_count != brute_count) {\n\t\treturn false;\n\t}\n\t\n\tstd::vector<float> octree_distances;\n\tfor (size_t i = 0; i < octree_count; ++i) {\n\t\tfor (const auto& p : points) {\n\t\t\tif (p.data == octree_results[i]) {\n\t\t\t\toctree_distances.push_back(glm::distance(p.point, query));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\tstd::vector<float> brute_distances;\n\tfor (size_t i = 0; i < brute_count; ++i) {\n\t\tbrute_distances.push_back(brute_results[i].distance);\n\t}\n\t\n\tstd::sort(octree_distances.begin(), octree_distances.end());\n\tstd::sort(brute_distances.begin(), brute_distances.end());\n\t\n\tconst float epsilon = 0.0001f;\n\tfor (size_t i = 0; i < octree_count; ++i) {\n\t\tif (std::abs(octree_distances[i] - brute_distances[i]) > epsilon) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\treturn true;\n}\n\nstd::vector<vec3> GenerateRandomPoints(size_t count, vec3 min_bounds, vec3 max_bounds, uint32_t seed = 420) {\n\tstd::mt19937 rng(seed);\n\tstd::uniform_real_distribution<float> x_dist(min_bounds.x, max_bounds.x);\n\tstd::uniform_real_distribution<float> y_dist(min_bounds.y, max_bounds.y);\n\tstd::uniform_real_distribution<float> z_dist(min_bounds.z, max_bounds.z);\n\t\n\tstd::vector<vec3> points;\n\tpoints.reserve(count);\n\t\n\tfor (size_t i = 0; i < count; ++i) {\n\t\tpoints.push_back({x_dist(rng), y_dist(rng), z_dist(rng)});\n\t}\n\t\n\treturn points;\n}\n\nSTART_TEST\n\nTEST_CASE(\"Basic Octree queries\", \"[octree1]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\t\n\tstd::vector<PointInfo> points;\n\t\n\t//auto random_points = GenerateRandomPoints(50, {-100.0f, -100.0f, -100.0f}, {100.0f, 100.0f, 100.0f});\n\tauto random_points = GenerateRandomPoints(10, {-100.0f, -100.0f, -100.0f}, {100.0f, 100.0f, 100.0f});\n\t\n\tfor (size_t i = 0; i < random_points.size(); ++i) {\n\t\t//int data = i * 100;\n\t\tint data = i;\n\t\tOctree<int>::leaf_t leaf_id = octree.Insert(random_points[i], data);\n\t\tpoints.push_back({random_points[i], data, leaf_id});\n\t}\n\t\n\tstd::vector<vec3> query_points = GenerateRandomPoints(30, {-120.0f, -120.0f, -120.0f}, {120.0f, 120.0f, 120.0f}, 421);\n\t//std::vector<vec3> query_points = GenerateRandomPoints(1, {-120.0f, -120.0f, -120.0f}, {120.0f, 120.0f, 120.0f}, 421);\n\n\tfor (const auto& query : query_points) {\n\t\tint octree_results[4];\n\t\tNearestResult brute_results[4];\n\t\t\n\t\tsize_t octree_count = octree.Find(octree_results, query);\n\t\tsize_t brute_count = BruteForceFindNearest(points, query, brute_results);\n\t\t\n\t\tbool results_match = CompareResults(points, query, octree_results, octree_count, brute_results, brute_count);\n\t\t\n\t\tASSERT(results_match)\n\t}\n}\n\nTEST_CASE(\"Random Octree queries\", \"[octree2]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\t\n\tstd::mt19937 rng(489);\n\tstd::uniform_real_distribution<float> coord_dist(-200.0f, 200.0f);\n\tstd::uniform_int_distribution<size_t> action_dist(0, 2);\n\t\n\tstd::vector<PointInfo> active_points;\n\t\n\tfor (int i = 0; i < 500; ++i) {\n\t\tsize_t action = action_dist(rng);\n\t\t\n\t\tif (action == 0 || active_points.empty()) {\n\t\t\t\n\t\t\tvec3 point(coord_dist(rng), coord_dist(rng), coord_dist(rng));\n\t\t\tint data = i;\n\t\t\tOctree<int>::leaf_t leaf_id = octree.Insert(point, data);\n\t\t\tactive_points.push_back({point, data, leaf_id});\n\t\t\t\n\t\t} else if (action == 1 && !active_points.empty()) {\n\t\t\t\n\t\t\tstd::uniform_int_distribution<size_t> idx_dist(0, active_points.size() - 1);\n\t\t\tsize_t idx = idx_dist(rng);\n\t\t\t\n\t\t\toctree.Remove(active_points[idx].leaf_id);\n\t\t\tactive_points.erase(active_points.begin() + idx);\n\t\t\t\n\t\t} else if (action == 2 && !active_points.empty()) {\n\t\t\t\n\t\t\tvec3 query(coord_dist(rng), coord_dist(rng), coord_dist(rng));\n\t\t\t\n\t\t\tint octree_results[4];\n\t\t\tNearestResult brute_results[4];\n\t\t\t\n\t\t\tsize_t octree_count = octree.Find(octree_results, query);\n\t\t\tsize_t brute_count = BruteForceFindNearest(active_points, query, brute_results);\n\t\t\t\n\t\t\tbool results_match = CompareResults(active_points, query, octree_results, octree_count, brute_results, brute_count);\n\t\t\t\n\t\t\tASSERT(results_match)\n\t\t}\n\t}\n}\n\nTEST_CASE(\"Octree edge cases\", \"[octree3]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\tstd::vector<PointInfo> points;\n\t\n\t// empty octree\n\tint results[4];\n\tsize_t count = octree.Find(results, {0.0f, 0.0f, 0.0f});\n\t\n\tASSERT(count == 0)\n\t\n\t// single point\n\tOctree<int>::leaf_t leaf_id = octree.Insert({4.0f, 2.0f, 0.0f}, 67);\n\tpoints.push_back({{4.0f, 2.0f, 0.0f}, 67, leaf_id});\n\t\n\tcount = octree.Find(results, {4.0f, 2.0f, 0.0f});\n\t\n\tASSERT(count == 1)\n\tASSERT(results[0] == 67)\n\t\n\t// two points with same position\n\tOctree<int>::leaf_t leaf_id1 = octree.Insert({0.0f, 6.0f, 9.0f}, 200);\n\tOctree<int>::leaf_t leaf_id2 = octree.Insert({0.0f, 6.0f, 9.0f}, 201);\n\t\n\tpoints.push_back({{0.0f, 6.0f, 9.0f}, 200, leaf_id1});\n\tpoints.push_back({{0.0f, 6.0f, 9.0f}, 201, leaf_id2});\n\n\tcount = octree.Find(results, {0.0f, 6.0f, 9.0f});\n\t\n\tbool found_data1 = false;\n\tbool found_data2 = false;\n\tfor (size_t i = 0; i < count; ++i) {\n\t\tif (results[i] == 200) found_data1 = true;\n\t\tif (results[i] == 201) found_data2 = true;\n\t}\n\t\n\tASSERT(found_data1)\n\tASSERT(found_data2)\n}\n\nTEST_CASE(\"Octree quadrant edge cases\", \"[octree4]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\tstd::vector<PointInfo> points;\n\t\n\tstd::vector<vec3> octant_points = {\n\t\t{-10, -10, -10},\n\t\t{10, -10, -10},\n\t\t{-10, 10, -10},\n\t\t{10, 10, -10},\n\t\t{-10, -10, 10},\n\t\t{10, -10, 10},\n\t\t{-10, 10, 10},\n\t\t{10, 10, 10},\n\t};\n\t\n\tfor (size_t i = 0; i < octant_points.size(); ++i) {\n\t\tint data = static_cast<int>(i);\n\t\tOctree<int>::leaf_t leaf_id = octree.Insert(octant_points[i], data);\n\t\tpoints.push_back({octant_points[i], data, leaf_id});\n\t}\n\t\n\tOctree<int>::leaf_t origin_id = octree.Insert({0.0f, 0.0f, 0.0f}, 101);\n\tOctree<int>::leaf_t positive_id = octree.Insert({1.0f, 1.0f, 1.0f}, 102);\n\t\n\tpoints.push_back({{0.0f, 0.0f, 0.0f}, 101, origin_id});\n\tpoints.push_back({{1.0f, 1.0f, 1.0f}, 102, positive_id});\n\t\n\tint octree_results[4];\n\tNearestResult brute_results[4];\n\t\n\tstd::vector<vec3> test_queries = {\n\t\t{0, 0, 0},\n\t\t{1, 1, 1},\n\t\t{5, 5, 5},\n\t\t{-5, -5, -5}\n\t};\n\n\tfor (const auto& query : test_queries) {\n\t\tsize_t octree_count = octree.Find(octree_results, query);\n\t\tsize_t brute_count = BruteForceFindNearest(points, query, brute_results);\n\t\t\n\t\tbool results_match = CompareResults(points, query, octree_results, octree_count, brute_results, brute_count);\n\t\t\n\t\tASSERT(results_match)\n\t}\n}\n\nTEST_CASE(\"Octree boundary cases\", \"[octree5]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\tstd::vector<PointInfo> points;\n\t\n\tstd::vector<vec3> boundary_points = {\n\t\t{0, 10, 10},\n\t\t{10, 0, 10},\n\t\t{10, 10, 0},\n\t\t{0, 0, 10},\n\t\t{0, 10, 0},\n\t\t{10, 0, 0},\n\t\t{0, 0, 0},\n\t};\n\t\n\tfor (size_t i = 0; i < boundary_points.size(); ++i) {\n\t\tint data = i * 10;\n\t\tOctree<int>::leaf_t leaf_id = octree.Insert(boundary_points[i], data);\n\t\tpoints.push_back({boundary_points[i], data, leaf_id});\n\t}\n\t\n\tstd::vector<vec3> query_points = {\n\t\t{0.1f, 0.1f, 0.1f},\n\t\t{-0.1f, -0.1f, -0.1f},\n\t\t{5, 0, 0},\n\t\t{0, 5, 5},\n\t};\n\t\n\tfor (const auto& query : query_points) {\n\t\tint octree_results[4];\n\t\tNearestResult brute_results[4];\n\t\t\n\t\tsize_t octree_count = octree.Find(octree_results, query);\n\t\tsize_t brute_count = BruteForceFindNearest(points, query, brute_results);\n\t\t\n\t\tbool results_match = CompareResults(points, query, octree_results, octree_count, brute_results, brute_count);\n\t\t\n\t\tASSERT(results_match)\n\t}\n}\n\nTEST_CASE(\"Large Octree test\", \"[octree6]\") {\n\tOctree<int> octree({0.0f, 0.0f, 0.0f}, 1000.0f);\n\t\n\tauto random_points1 = GenerateRandomPoints(1000, {-500.0f, -500.0f, -500.0f}, {500.0f, 500.0f, 500.0f});\n\tauto random_points2 = GenerateRandomPoints(1000, {-500.0f, -500.0f, -500.0f}, {500.0f, 500.0f, 500.0f});\n\tstd::vector<PointInfo> points;\n\t\n\tauto query_points = GenerateRandomPoints(7500, {-600.0f, -600.0f, -600.0f}, {600.0f, 600.0f, 600.0f}, 5156);\n\t\n\tTIME_START(\"Initial insertion\")\n\tfor (size_t i = 0; i < random_points1.size(); ++i) {\n\t\tOctree<int>::leaf_t leaf_id = octree.Insert(random_points1[i], i);\n\t\tpoints.push_back({random_points1[i], (int)i, leaf_id});\n\t}\n\tTIME_FINISH(\"Initial insertion\")\n\t\n\tstd::vector<std::array<NearestResult, 4>> brute_results_set1;\n\tbrute_results_set1.reserve(query_points.size());\n\tfor (const auto& query : query_points) {\n\t\tstd::array<NearestResult, 4> brute_results;\n\t\tBruteForceFindNearest(points, query, brute_results.data());\n\t\tbrute_results_set1.push_back(brute_results);\n\t}\n\t\n\tTIME_START(\"Queries\")\n\tfor (size_t i = 0; i < query_points.size(); ++i) {\n\t\tint octree_results[4];\n\t\t\n\t\tsize_t octree_count = octree.Find(octree_results, query_points[i]);\n\t\t\n\t\tbool results_match = CompareResults(points, query_points[i], octree_results, octree_count, \n\t\t\t\t\t\t\t\t\t\t\t brute_results_set1[i].data(), 4);\n\t\t\n\t\tASSERT(results_match)\n\t}\n\tTIME_FINISH(\"Queries\")\n\t\n\tTIME_START(\"Removing all points\")\n\tfor (auto& point : points) {\n\t\toctree.Remove(point.leaf_id);\n\t}\n\tTIME_FINISH(\"Removing all points\")\n\t\n\tpoints.clear();\n\t\n\tTIME_START(\"Insertion of different points\")\n\tfor (size_t i = 0; i < random_points2.size(); ++i) {\n\t\tOctree<int>::leaf_t leaf_id = octree.Insert(random_points2[i], i);\n\t\tpoints.push_back({random_points2[i], (int)i, leaf_id});\n\t}\n\tTIME_FINISH(\"Insertion of different points\")\n\t\n\tstd::vector<std::array<NearestResult, 4>> brute_results_set2;\n\tbrute_results_set2.reserve(query_points.size());\n\tfor (const auto& query : query_points) {\n\t\tstd::array<NearestResult, 4> brute_results;\n\t\tBruteForceFindNearest(points, query, brute_results.data());\n\t\tbrute_results_set2.push_back(brute_results);\n\t}\n\t\n\tTIME_START(\"Queries, again\")\n\tfor (size_t i = 0; i < query_points.size(); ++i) {\n\t\tint octree_results[4];\n\t\t\n\t\tsize_t octree_count = octree.Find(octree_results, query_points[i]);\n\t\t\n\t\tbool results_match = CompareResults(points, query_points[i], octree_results, octree_count, \n\t\t\t\t\t\t\t\t\t\t\t brute_results_set2[i].data(), 4);\n\t\t\n\t\tASSERT(results_match)\n\t}\n\tTIME_FINISH(\"Queries, again\")\n\t\n\tTIME_START(\"Teardown\")\n\tfor (auto& point : points) {\n\t\toctree.Remove(point.leaf_id);\n\t}\n\tTIME_FINISH(\"Teardown\")\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/pool.cpp",
    "content": "\n// testable unit\n#include <templates/pool.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Basic Pool operations\", \"[pool1]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"test_pool\", 10);\n\t\n\tASSERT(pool.size() == 0);\n\t\n\tTestData* data1 = pool.AddNew(420, 0, 0, 69);\n\tASSERT(data1 != nullptr);\n\tASSERT(data1->a == 420);\n\tASSERT(data1->b == 69);\n\tASSERT(pool.size() == 1);\n\t\n\tTestData* data2 = pool.AddNew(67, 0, 0, -420);\n\tASSERT(data2->a == 67);\n\tASSERT(data2->b == -420);\n\tASSERT(pool.size() == 2);\n\t\n\tpool.Remove(data1);\n\tASSERT(pool.size() == 1);\n\t\n\tASSERT(data2->a == 67);\n\tASSERT(data2->b == -420);\n\t\n\tpool.Remove(data2);\n\tASSERT(pool.size() == 0);\n}\n\nTEST_CASE(\"Pool initializer list\", \"[pool2]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"init_pool\", 10, {\n\t\t{10, 0, 0, 20},\n\t\t{30, 0, 0, 40},\n\t\t{50, 0, 0, 60},\n\t\t{70, 0, 0, 80}\n\t});\n\t\n\tASSERT(pool.size() == 4);\n\n\tint expected_a[] = {10, 30, 50, 70};\n\tint expected_b[] = {20, 40, 60, 80};\n\tint idx = 0;\n\t\n\tfor (auto& item : pool) {\n\t\tASSERT(item.a == expected_a[idx]);\n\t\tASSERT(item.b == expected_b[idx]);\n\t\tidx++;\n\t}\n\t\n\tASSERT(idx == 4);\n}\n\nTEST_CASE(\"Pool stress test\", \"[pool3]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"stress_pool\", 250);\n\tTestData* data[200];\n\t\n\tfor (int i = 0; i < 200; i++) {\n\t\tdata[i] = pool.AddNew(i, 0, 0, i * 2);\n\t\tASSERT(data[i]->a == i);\n\t\tASSERT(data[i]->b == i * 2);\n\t}\n\tASSERT(pool.size() == 200);\n\t\n\tfor (int i = 0; i < 200; i += 2) {\n\t\tpool.Remove(data[i]);\n\t\tdata[i] = nullptr;\n\t}\n\tASSERT(pool.size() == 100);\n\t\n\tfor (int i = 1; i < 200; i += 2) {\n\t\tASSERT(data[i]->a == i);\n\t\tASSERT(data[i]->b == i * 2);\n\t}\n\t\n\tfor (int i = 0; i < 200; i += 2) {\n\t\tdata[i] = pool.AddNew(i + 1000, 0, 0, (i + 1000) * 2);\n\t\tASSERT(data[i]->a == i + 1000);\n\t\tASSERT(data[i]->b == (i + 1000) * 2);\n\t}\n\tASSERT(pool.size() == 200);\n\t\n\tfor (int i = 0; i < 200; i += 2) {\n\t\tASSERT(data[i]->a == i + 1000);\n\t\tASSERT(data[i]->b == (i + 1000) * 2);\n\t}\n\tfor (int i = 1; i < 200; i += 2) {\n\t\tASSERT(data[i]->a == i);\n\t\tASSERT(data[i]->b == i * 2);\n\t}\n}\n\nTEST_CASE(\"Range-based for loop over a Pool\", \"[pool4]\") {\n\tstruct TestData {\n\t\tint padding_1;\n\t\tint a;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"iter_pool\", 20);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tpool.AddNew(1, i * 10, 0, i * 100);\n\t}\n\t\n\tint count = 0;\n\tint sum_a = 0;\n\tint sum_b = 0;\n\t\n\tfor (auto& item : pool) {\n\t\tsum_a += item.a;\n\t\tsum_b += item.b;\n\t\tcount++;\n\t}\n\t\n\tASSERT(count == 10);\n\tASSERT(sum_a == 0 + 10 + 20 + 30 + 40 + 50 + 60 + 70 + 80 + 90); // = 450 >_\n\tASSERT(sum_b == 0 + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900); // = 4500 ;33\n}\n\nTEST_CASE(\"Pool iterator modification\", \"[pool5]\") {\n\tstruct TestData {\n\t\tint padding_1;\n\t\tint a;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"modify_pool\", 10);\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tpool.AddNew(1, i, 0, i);\n\t}\n\t\n\tfor (auto& item : pool) {\n\t\titem.a *= 2;\n\t\titem.b *= 3;\n\t}\n\t\n\tint idx = 0;\n\tfor (auto& item : pool) {\n\t\tASSERT(item.a == idx * 2);\n\t\tASSERT(item.b == idx * 3);\n\t\tidx++;\n\t}\n}\n\nTEST_CASE(\"Pool with 64 leading zeroes\", \"[pool6]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t\tint c;\n\t\tint d;\n\t};\n\t\n\tPool<TestData> pool(\"iter_pool\", 20);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tpool.AddNew(0, 0, 111, 222);\n\t}\n\t\n\tint count = 0;\n\t\n\t// the iterator will skip over all elements, since they begin with at least\n\t// 64 bits that are all zeroes (assuming that default 2 x default int size\n\t// is at least 64 bits in length)\n\tfor (auto& item : pool) {\n\t\tcount++;\n\t}\n\t\n\tASSERT(count == 0);\n}\n\n\nTEST_CASE(\"Pool pointer-index conversion\", \"[pool7]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"index_pool\", 50);\n\tTestData* pointers[20];\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tpointers[i] = pool.AddNew(i * 5, 0, 0, i * 7);\n\t}\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tsize_t idx = pool.index(pointers[i]);\n\t\tTestData& ref = pool[idx];\n\t\t\n\t\tASSERT(&ref == pointers[i]);\n\t\tASSERT(ref.a == i * 5);\n\t\tASSERT(ref.b == i * 7);\n\t}\n}\n\nTEST_CASE(\"Pool pointer validation\", \"[pool8]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"valid_pool\", 30);\n\t\n\tTestData* ptr1 = pool.AddNew(3526, 223);\n\tASSERT(pool.validate(ptr1) == true);\n\t\n\tpool.Remove(ptr1);\n\tASSERT(pool.validate(ptr1) == false);\n\t\n\tTestData stack_data{314, 1515};\n\tTestData* random_ptr = &stack_data;\n\tASSERT(pool.validate(random_ptr) == false);\n\t\n\tTestData* null_ptr = nullptr;\n\tASSERT(pool.validate(null_ptr) == false);\n\t\n\tpool.AddNew(42, 0, 0, 84);\n\tpool.AddNew(11, 0, 0, 22);\n\tpool.AddNew(33, 0, 0, 44);\n\t\n\tTestData& ref = pool[0];\n\tASSERT(pool.validate(&ref) == true);\n\t\n\tTestData& ref2 = pool[1];\n\tASSERT(pool.validate(&ref2) == true);\n\t\n\tTestData& ref_bad = pool[999];\n\tASSERT(pool.validate(&ref_bad) == false);\n}\n\nTEST_CASE(\"Pool size counting\", \"[pool9]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"size_pool\", 100);\n\t\n\tASSERT(pool.size() == 0);\n\t\n\tTestData* ptrs[50];\n\tfor (int i = 0; i < 50; i++) {\n\t\tptrs[i] = pool.AddNew(i, 0, 0, i);\n\t\tASSERT(pool.size() == static_cast<size_t>(i + 1));\n\t}\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tpool.Remove(ptrs[i]);\n\t\tASSERT(pool.size() == static_cast<size_t>(49 - i));\n\t}\n\t\n\tASSERT(pool.size() == 0);\n}\n\nTEST_CASE(\"Empty pool iteration\", \"[pool11]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"empty_pool\", 10);\n\t\n\tint count = 0;\n\tfor (auto& item : pool) {\n\t\tASSERT(item.a && !item.a);\n\t\tcount++;\n\t}\n\t\n\tASSERT(count == 0);\n}\n\nTEST_CASE(\"Pool with single element\", \"[pool12]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"single_pool\", 1);\n\t\n\tTestData* ptr = pool.AddNew(767, 0, 0, 676);\n\tASSERT(pool.size() == 1);\n\tASSERT(pool.validate(ptr));\n\tASSERT(pool.index(ptr) == 0);\n\t\n\tint count = 0;\n\tfor (auto& item : pool) {\n\t\tASSERT(item.a == 767);\n\t\tASSERT(item.b == 676);\n\t\tcount++;\n\t}\n\tASSERT(count == 1);\n\t\n\tpool.Remove(ptr);\n\tASSERT(pool.size() == 0);\n\tASSERT(!pool.validate(ptr));\n}\n\nTEST_CASE(\"Pool iterators\", \"[pool13]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"iters_pool\", 10);\n\t\n\tpool.AddNew(10, 0, 0, 20);\n\tpool.AddNew(30, 0, 0, 40);\n\tpool.AddNew(50, 0, 0, 60);\n\t\n\tauto it = pool.begin();\n\tauto end_it = pool.end();\n\t\n\tASSERT(it != end_it);\n\t\n\tASSERT((*it).a == 10);\n\tASSERT(it->b == 20);\n\t\n\t++it;\n\tASSERT(it->a == 30);\n\tASSERT(it->b == 40);\n\t\n\tauto old_it = it++;\n\tASSERT(old_it->a == 30);\n\tASSERT(it->a == 50);\n\t\n\t++it;\n\tASSERT(it == end_it);\n}\n\nTEST_CASE(\"Pool re-allocation\", \"[pool14]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint padding_1;\n\t\tint padding_2;\n\t\tint b;\n\t};\n\t\n\tPool<TestData> pool(\"realloc_pool\", 100);\n\t\n\tTestData* ptrs[10];\n\tfor (int i = 0; i < 10; i++) {\n\t\tptrs[i] = pool.AddNew(i, 0, 0, i * 10);\n\t}\n\t\n\tsize_t idx_5 = pool.index(ptrs[5]);\n\t\n\tpool.Remove(ptrs[5]);\n\tASSERT(pool.size() == 9);\n\t\n\tTestData* new_ptr = pool.AddNew(777, 0, 0, 369);\n\tASSERT(pool.size() == 10);\n\t\n\t// technically not the best practice -- an implementation, even a correct\n\t// one doesn't need to return the same index as the just freed data\n\tsize_t new_idx = pool.index(new_ptr);\n\tASSERT(idx_5 == new_idx);\n\t\n\tASSERT(new_ptr->a == 777);\n\tASSERT(new_ptr->b == 369);\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/queue.cpp",
    "content": "\n// testable unit\n#include <templates/queue.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Basic Queue operations\", \"[queue1]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"test_queue\", 20);\n\t\n\tASSERT(queue.size() == 0);\n\t\n\tqueue.push(42, 84);\n\tASSERT(queue.size() == 1);\n\t\n\tASSERT(queue.front().a == 42);\n\tASSERT(queue.front().b == 84);\n\tASSERT(queue.back().a == 42);\n\tASSERT(queue.back().b == 84);\n\t\n\tqueue.pop();\n\tASSERT(queue.size() == 0);\n}\n\nTEST_CASE(\"Queue conforms to FIFO\", \"[queue2]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"fifo_queue\", 30);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tqueue.push(i, i * 10);\n\t}\n\t\n\tASSERT(queue.size() == 10);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tASSERT(queue.front().a == i);\n\t\tASSERT(queue.front().b == i * 10);\n\t\tqueue.pop();\n\t}\n\t\n\tASSERT(queue.size() == 0);\n}\n\nTEST_CASE(\"Queue front and back works\", \"[queue3]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"fb_queue\", 20);\n\t\n\tqueue.push(10, 20);\n\tASSERT(queue.front().a == 10);\n\tASSERT(queue.back().a == 10);\n\t\n\tqueue.push(30, 40);\n\tASSERT(queue.front().a == 10);\n\tASSERT(queue.back().a == 30);\n\t\n\tqueue.push(50, 60);\n\tASSERT(queue.front().a == 10);\n\tASSERT(queue.back().a == 50);\n\t\n\tqueue.pop();\n\tASSERT(queue.front().a == 30);\n\tASSERT(queue.back().a == 50);\n}\n\nTEST_CASE(\"Queue elements modified through front and back\", \"[queue4]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"mod_queue\", 15);\n\t\n\tqueue.push(1, 2);\n\tqueue.push(3, 4);\n\tqueue.push(5, 6);\n\t\n\t// honestly idk if this should be the expected thing... like... it shouldn't\n\t// be done.. like.. who modifies their queue elements??? NO ONE!!!!\n\tqueue.front().a = 100;\n\tqueue.front().b = 200;\n\t\n\tqueue.back().a = 999;\n\tqueue.back().b = 888;\n\t\n\tASSERT(queue.front().a == 100);\n\tASSERT(queue.front().b == 200);\n\tASSERT(queue.back().a == 999);\n\tASSERT(queue.back().b == 888);\n}\n\nTEST_CASE(\"Queue can be conditionally popped\", \"[queue5]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"try_queue\", 20);\n\tTestData value;\n\t\n\tbool success = queue.try_pop(value);\n\tASSERT(success == false);\n\tASSERT(queue.size() == 0);\n\t\n\tqueue.push(10, 20);\n\tqueue.push(30, 40);\n\tqueue.push(50, 60);\n\tASSERT(queue.size() == 3);\n\t\n\tsuccess = queue.try_pop(value);\n\tASSERT(success == true);\n\tASSERT(value.a == 10);\n\tASSERT(value.b == 20);\n\tASSERT(queue.size() == 2);\n\t\n\tsuccess = queue.try_pop(value);\n\tASSERT(success == true);\n\tASSERT(value.a == 30);\n\tASSERT(value.b == 40);\n\tASSERT(queue.size() == 1);\n\t\n\tsuccess = queue.try_pop(value);\n\tASSERT(success == true);\n\tASSERT(value.a == 50);\n\tASSERT(value.b == 60);\n\tASSERT(queue.size() == 0);\n\t\n\tsuccess = queue.try_pop(value);\n\tASSERT(success == false);\n}\n\nTEST_CASE(\"Queue stress test\", \"[queue6]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"stress_queue\", 500);\n\t\n\tfor (int i = 0; i < 200; i++) {\n\t\tqueue.push(i, i * 3);\n\t}\n\t\n\tASSERT(queue.size() == 200);\n\t\n\tfor (int i = 0; i < 100; i++) {\n\t\tASSERT(queue.front().a == i);\n\t\tASSERT(queue.front().b == i * 3);\n\t\tqueue.pop();\n\t}\n\t\n\tASSERT(queue.size() == 100);\n\t\n\tfor (int i = 200; i < 350; i++) {\n\t\tqueue.push(i, i * 3);\n\t}\n\t\n\tASSERT(queue.size() == 250);\n\t\n\tint expected = 100;\n\twhile (queue.size() > 0) {\n\t\tASSERT(queue.front().a == expected);\n\t\tASSERT(queue.front().b == expected * 3);\n\t\tqueue.pop();\n\t\texpected++;\n\t}\n\t\n\tASSERT(expected == 350);\n}\n\nTEST_CASE(\"Queue pushing and popping\", \"[queue7]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"alt_queue\", 50);\n\n\tfor (int i = 0; i < 20; i++) {\n\t\tqueue.push(i * 10, i * 100);\n\t\tqueue.push(i * 10 + 1, i * 100 + 10);\n\n\t\tASSERT(queue.size() == i > 0 ? i - 1 + 2 : 2);\n\t\tASSERT(i > 1 ? queue.front().a > 0 : queue.front().a == 0);\n\t\t\n\t\tif (i > 0) {\n\t\t\tqueue.pop();\n\t\t}\n\n\t}\n}\n\nTEST_CASE(\"Queue circular buffer\", \"[queue8]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"circ_queue\", 100);\n\t\n\tfor (int cycle = 0; cycle < 5; cycle++) {\n\t\tfor (int i = 0; i < 50; i++) {\n\t\t\tqueue.push(cycle * 100 + i, cycle * 1000 + i);\n\t\t}\n\t\t\n\t\tASSERT(queue.size() == 50);\n\t\t\n\t\tfor (int i = 0; i < 50; i++) {\n\t\t\tASSERT(queue.front().a == cycle * 100 + i);\n\t\t\tASSERT(queue.front().b == cycle * 1000 + i);\n\t\t\tqueue.pop();\n\t\t}\n\t\t\n\t\tASSERT(queue.size() == 0);\n\t}\n}\n\nTEST_CASE(\"Queue works with int\", \"[queue9]\") {\n\tQueue<int> queue(\"int_queue\", 30);\n\t\n\tfor (int i = 0; i < 15; i++) {\n\t\tqueue.push(i * 7);\n\t}\n\t\n\tASSERT(queue.size() == 15);\n\tASSERT(queue.front() == 0);\n\tASSERT(queue.back() == 14 * 7);\n\t\n\tfor (int i = 0; i < 15; i++) {\n\t\tASSERT(queue.front() == i * 7);\n\t\tqueue.pop();\n\t}\n\t\n\tASSERT(queue.size() == 0);\n}\n\nTEST_CASE(\"Queue can find out its size\", \"[queue10]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"size_queue\", 100);\n\t\n\tsize_t expected_size = 0;\n\tASSERT(queue.size() == expected_size);\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tqueue.push(i, i);\n\t\texpected_size++;\n\t\tASSERT(queue.size() == expected_size);\n\t}\n\t\n\tfor (int i = 0; i < 30; i++) {\n\t\tqueue.pop();\n\t\texpected_size--;\n\t\tASSERT(queue.size() == expected_size);\n\t}\n\t\n\tASSERT(queue.size() == 20);\n}\n\nTEST_CASE(\"Queue single element\", \"[queue11]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"single_queue\", 1);\n\t\n\tqueue.push(42, 84);\n\tASSERT(queue.size() == 1);\n\tASSERT(queue.front().a == 42);\n\tASSERT(queue.back().a == 42);\n\tASSERT(queue.front().a == queue.back().a);\n\t\n\tqueue.pop();\n\tASSERT(queue.size() == 0);\n}\n\nTEST_CASE(\"Queue try_pop edge cases\", \"[queue12]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"trans_queue\", 10);\n\tTestData value;\n\t\n\tASSERT(queue.try_pop(value) == false);\n\t\n\tqueue.push(123, 456);\n\t\n\tASSERT(queue.try_pop(value) == true);\n\tASSERT(value.a == 123);\n\tASSERT(value.b == 456);\n\t\n\tASSERT(queue.try_pop(value) == false);\n}\n\nTEST_CASE(\"Queue front and back non-destructive\", \"[queue13]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"nondes_queue\", 20);\n\t\n\tqueue.push(10, 20);\n\tqueue.push(30, 40);\n\tqueue.push(50, 60);\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tASSERT(queue.front().a == 10);\n\t\tASSERT(queue.size() == 3);\n\t}\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tASSERT(queue.back().a == 50);\n\t\tASSERT(queue.size() == 3);\n\t}\n}\n\nTEST_CASE(\"Queue pushing and popping again\", \"[queue14]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"rapid_queue\", 100);\n\tTestData value;\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tqueue.push(i, i * 2);\n\t\tqueue.push(i + 100, (i + 100) * 2);\n\t\t\n\t\tbool success = queue.try_pop(value);\n\t\tASSERT(success == true);\n\t\t\n\t\tif (i == 0) {\n\t\t\tASSERT(value.a == 0);\n\t\t} else if (i % 2 == 1) {\n\t\t\tASSERT(value.a == (i - 1) / 2 + 100);\n\t\t} else {\n\t\t\tASSERT(value.a == i / 2);\n\t\t}\n\t}\n\t\n\tASSERT(queue.size() == 50);\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tASSERT(queue.try_pop(value) == true);\n\n\t\tconst int k = 25 + i / 2;\n\n\t\tif (i % 2 == 0) {\n\t\t\tASSERT(value.a == k);\n\t\t} else {\n\t\t\tASSERT(value.a == k + 100);\n\t\t}\n\t}\n\t\n\tASSERT(queue.size() == 0);\n}\n\nTEST_CASE(\"Queue filling up\", \"[queue15]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tQueue<TestData> queue(\"full_queue\", 100);\n\t\n\tfor (int i = 0; i < 100; i++) {\n\t\tqueue.push(i, i * 5);\n\t}\n\t\n\tASSERT(queue.size() == 100);\n\tASSERT(queue.front().a == 0);\n\tASSERT(queue.back().a == 99);\n\t\n\tfor (int i = 0; i < 100; i++) {\n\t\tASSERT(queue.front().a == i);\n\t\tqueue.pop();\n\t}\n\t\n\tASSERT(queue.size() == 0);\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/settings.cpp",
    "content": "\n// dependencies\n#include <framework/system.cpp>\n#include <framework/logging.cpp>\n#include <framework/uid.cpp>\n#include <framework/type.cpp>\n\n// testable unit\n#include <framework/settings.cpp>\n\n// test framework\n#include <templates/test.h>\n\nnamespace tram::Platform {\n\tvoid TryDebugging() {\n\t\t\n\t}\n\t\n\tvoid ShowErrorDialog(const char* message, const char* title) {\n\t\t\n\t}\n}\n\nusing namespace tram;\nusing namespace tram::Settings;\n\nstatic Property<int32_t> static_int = {420, \"static-int\", USER | MENU};\nstatic Property<float> static_float = {-69.0f, \"static-float\", USER | MENU};\n\nSTART_TEST\n\nTEST_CASE(\"Setting bool basic\", \"[settings1]\") {\n\tbool test_bool = false;\n\tRegister(test_bool, \"test_bool\", USER);\n\t\n\tvalue_t retrieved = Get(\"test_bool\");\n\tASSERT(retrieved.IsBool())\n\tASSERT((bool)retrieved == false)\n\t\n\ttest_bool = true;\n\tvalue_t retrieved2 = Get(\"test_bool\");\n\tASSERT((bool)retrieved2 == true)\n}\n\nTEST_CASE(\"Setting float basic\", \"[settings2]\") {\n\tfloat test_float = 420.69f;\n\tRegister(test_float, \"test_float\", USER | MENU);\n\t\n\tvalue_t retrieved = Get(\"test_float\");\n\tASSERT(retrieved.IsFloat())\n\tfloat f = (float)retrieved;\n\tASSERT(f == 420.69f)\n}\n\nTEST_CASE(\"Setting integer basic\", \"[settings3]\") {\n\tint32_t test_int = -420;\n\tRegister(test_int, \"test_int32\", APPLICATION);\n\t\n\tvalue_t retrieved = Get(\"test_int32\");\n\tASSERT(retrieved.IsInt())\n\tASSERT((int32_t)retrieved == -420)\n}\n\nTEST_CASE(\"Setting unsigned integer basic\", \"[settings4]\") {\n\tuint32_t test_uint = 420;\n\tRegister(test_uint, \"test_uint32\", USER | APPLICATION);\n\t\n\tvalue_t retrieved = Get(\"test_uint32\");\n\tASSERT(retrieved.IsInt())\n\tASSERT((uint32_t)retrieved == 420)\n}\n\nTEST_CASE(\"Setting integer value change\", \"[settings5]\") {\n\tint32_t test_int = 420;\n\tRegister(test_int, \"settable_int\", USER);\n\t\n\tvalue_t value1 = Get(\"settable_int\");\n\tASSERT((int32_t)value1 == 420)\n\n\tSet(\"settable_int\", value_t(69));\n\t\n\tASSERT(test_int == 69)\n\t\n\tvalue_t value2 = Get(\"settable_int\");\n\tASSERT((int32_t)value2 == 69)\n}\n\nTEST_CASE(\"Setting with different flags\", \"[settings6]\") {\n\tbool setting1 = false;\n\tfloat setting2 = 420.0f;\n\tint32_t setting3 = -420;\n\tuint32_t setting4 = 69;\n\t\n\tRegister(setting1, \"flag_user\", USER);\n\tRegister(setting2, \"flag_app\", APPLICATION);\n\tRegister(setting3, \"flag_menu\", MENU);\n\tRegister(setting4, \"flag_all\", USER | APPLICATION | MENU);\n\t\n\tASSERT(Flags(\"flag_user\") == USER)\n\tASSERT(Flags(\"flag_app\") == APPLICATION)\n\tASSERT(Flags(\"flag_menu\") == MENU)\n\tASSERT(Flags(\"flag_all\") == (USER | APPLICATION | MENU))\n}\n\nTEST_CASE(\"Setting with no flag\", \"[settings7]\") {\n\tint32_t setting = 420;\n\tRegister(setting, \"none_flag_setting\", NONE);\n\t\n\tASSERT(Flags(\"none_flag_setting\") == NONE)\n\t\n\tvalue_t value = Get(\"none_flag_setting\");\n\tASSERT((int32_t)value == 420)\n}\n\nTEST_CASE(\"Setting lookup by user flag\", \"[settings8]\") {\n\tbool setting1 = true;\n\tbool setting2 = false;\n\tbool setting3 = true;\n\t\n\tRegister(setting1, \"user_setting_1\", USER);\n\tRegister(setting2, \"user_setting_2\", USER | MENU);\n\tRegister(setting3, \"app_setting\", APPLICATION);\n\t\n\tstd::vector<name_t> user_settings = GetSettings(USER);\n\t\n\tbool found_setting1 = false;\n\tbool found_setting2 = false;\n\tbool found_setting3 = false;\n\t\n\tfor (const auto& name : user_settings) {\n\t\tif (name == \"user_setting_1\") found_setting1 = true;\n\t\tif (name == \"user_setting_2\") found_setting2 = true;\n\t\tif (name == \"app_setting\") found_setting3 = true;\n\t}\n\t\n\tASSERT(found_setting1)\n\tASSERT(found_setting2)\n\tASSERT(!found_setting3)\n}\n\nTEST_CASE(\"Setting lookup by application flag\", \"[settings9]\") {\n\tint32_t setting1 = 420;\n\tint32_t setting2 = 69;\n\tint32_t setting3 = 489;\n\t\n\tRegister(setting1, \"app_only\", APPLICATION);\n\tRegister(setting2, \"app_and_menu\", APPLICATION | MENU);\n\tRegister(setting3, \"user_only\", USER);\n\t\n\tstd::vector<name_t> app_settings = GetSettings(APPLICATION);\n\t\n\tbool found_setting1 = false;\n\tbool found_setting2 = false;\n\tbool found_setting3 = false;\n\t\n\tfor (const auto& name : app_settings) {\n\t\tif (name == \"app_only\") found_setting1 = true;\n\t\tif (name == \"app_and_menu\") found_setting2 = true;\n\t\tif (name == \"user_only\") found_setting3 = true;\n\t}\n\t\n\tASSERT(found_setting1)\n\tASSERT(found_setting2)\n\tASSERT(!found_setting3)\n}\n\nTEST_CASE(\"Setting lookup by menu flag\", \"[settings10]\") {\n\tfloat setting1 = 420.0f;\n\tfloat setting2 = 69.0f;\n\tfloat setting3 = 489.0f;\n\t\n\tRegister(setting1, \"menu_setting\", MENU);\n\tRegister(setting2, \"menu_user\", MENU | USER);\n\tRegister(setting3, \"no_menu\", USER | APPLICATION);\n\t\n\tstd::vector<name_t> menu_settings = GetSettings(MENU);\n\t\n\tbool found_setting1 = false;\n\tbool found_setting2 = false;\n\tbool found_setting3 = false;\n\t\n\tfor (const auto& name : menu_settings) {\n\t\tif (name == \"menu_setting\") found_setting1 = true;\n\t\tif (name == \"menu_user\") found_setting2 = true;\n\t\tif (name == \"no_menu\") found_setting3 = true;\n\t}\n\t\n\tASSERT(found_setting1)\n\tASSERT(found_setting2)\n\tASSERT(!found_setting3)\n}\n\nTEST_CASE(\"Setting lookup by multiple flags\", \"[settings11]\") {\n\tbool setting1 = true;\n\tbool setting2 = true;\n\tbool setting3 = true;\n\tbool setting4 = true;\n\t\n\tRegister(setting1, \"user_menu\", USER | MENU);\n\tRegister(setting2, \"app_menu\", APPLICATION | MENU);\n\tRegister(setting3, \"all_three\", USER | APPLICATION | MENU);\n\tRegister(setting4, \"just_user\", USER);\n\t\n\tstd::vector<name_t> filtered = GetSettings(USER | MENU);\n\t\n\tbool found_setting1 = false;\n\tbool found_setting3 = false;\n\t\n\tfor (const auto& name : filtered) {\n\t\tif (name == \"user_menu\") found_setting1 = true;\n\t\tif (name == \"all_three\") found_setting3 = true;\n\t}\n\t\n\tASSERT(found_setting1)\n\tASSERT(found_setting3)\n}\n\nTEST_CASE(\"Setting bool flag commandline parse\", \"[settings12]\") {\n\tbool test_flag = false;\n\tRegister(test_flag, \"enable_flag\", USER);\n\t\n\tconst char* argv[] = {\"program\", \"-enable_flag\"};\n\tParse(argv, 2);\n\t\n\tASSERT(test_flag == true)\n}\n\nTEST_CASE(\"Setting bool commandline as value parse\", \"[settings13]\") {\n\tbool flag1 = false;\n\tbool flag2 = true;\n\t\n\tRegister(flag1, \"flag_true\", USER);\n\tRegister(flag2, \"flag_false\", USER);\n\t\n\tconst char* argv[] = {\"program\", \"-flag_true\", \"true\", \"-flag_false\", \"false\"};\n\tParse(argv, 5);\n\t\n\tASSERT(flag1 == true)\n\tASSERT(flag2 == false)\n}\n\nTEST_CASE(\"Setting int commandline parse\", \"[settings14]\") {\n\tint32_t test_int = 0;\n\tRegister(test_int, \"intparse\", USER);\n\t\n\tconst char* argv[] = {\"program\", \"-intparse\", \"420\"};\n\tParse(argv, 3);\n\t\n\tASSERT(test_int == 420)\n}\n\nTEST_CASE(\"Setting uint commandline parse\", \"[settings15]\") {\n\tuint32_t test_uint = 0;\n\tRegister(test_uint, \"uintint\", APPLICATION);\n\t\n\tconst char* argv[] = {\"program\", \"-uintint\", \"420\"};\n\tParse(argv, 3);\n\t\n\tASSERT(test_uint == 420)\n}\n\nTEST_CASE(\"Setting float commandline parse\", \"[settings16]\") {\n\tfloat test_float = 0.0f;\n\tRegister(test_float, \"floatfloat\", USER | MENU);\n\t\n\tconst char* argv[] = {\"program\", \"-floatfloat\", \"420.69\"};\n\tParse(argv, 3);\n\t\n\tASSERT(test_float == 420.69f)\n}\n\nTEST_CASE(\"Setting parse commandline negative numbers\", \"[settings17]\") {\n\tint32_t negative_int = 0;\n\tfloat negative_float = 0.0f;\n\t\n\tRegister(negative_int, \"intneg\", USER);\n\tRegister(negative_float, \"floatneg\", USER);\n\t\n\tconst char* argv[] = {\"program\", \"-intneg\", \"-69\", \"-floatneg\", \"-420.69\"};\n\tParse(argv, 5);\n\t\n\tASSERT(negative_int == -69)\n\tASSERT(negative_float == -420.69f)\n}\n\nTEST_CASE(\"Setting multiple commandline parse\", \"[settings18]\") {\n\tbool bool_val = false;\n\tint32_t int_val = 0;\n\tfloat float_val = 0.0f;\n\tuint32_t uint_val = 0;\n\t\n\tRegister(bool_val, \"bool_val\", USER);\n\tRegister(int_val, \"int_val\", USER);\n\tRegister(float_val, \"float_val\", USER);\n\tRegister(uint_val, \"uint_val\", USER);\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-bool_val\",\n\t\t\"-int_val\", \"489\",\n\t\t\"-float_val\", \"420.69\",\n\t\t\"-uint_val\", \"69\"\n\t};\n\tParse(argv, 8);\n\t\n\tASSERT(bool_val == true)\n\tASSERT(int_val == 489)\n\tASSERT(float_val == 420.69f)\n\tASSERT(uint_val == 69)\n}\n\nTEST_CASE(\"Setting commandline parse multiple order\", \"[settings19]\") {\n\tbool flag1 = false;\n\tint32_t num1 = 0;\n\tbool flag2 = false;\n\tint32_t num2 = 0;\n\t\n\tRegister(flag1, \"first_flag\", USER);\n\tRegister(num1, \"first_num\", USER);\n\tRegister(flag2, \"second_flag\", USER);\n\tRegister(num2, \"second_num\", USER);\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-first_num\", \"420\",\n\t\t\"-second_flag\",\n\t\t\"-first_flag\",\n\t\t\"-second_num\", \"69\"\n\t};\n\tParse(argv, 7);\n\t\n\tASSERT(flag1 == true)\n\tASSERT(num1 == 420)\n\tASSERT(flag2 == true)\n\tASSERT(num2 == 69)\n}\n\nTEST_CASE(\"Setting bool property wrapper\", \"[settings20]\") {\n\tstatic Property<bool> property_flag = {false, \"property_flag\", USER};\n\t\n\tASSERT((bool)property_flag == false)\n\t\n\tvalue_t value = Get(\"property_flag\");\n\tASSERT(value.IsBool())\n\tASSERT((bool)value == false)\n}\n\nTEST_CASE(\"Setting int property wrapper\", \"[settings21]\") {\n\tstatic Property<int32_t> int_prop_val = {420, \"int_prop_val\", USER | MENU};\n\t\n\tASSERT((int32_t)int_prop_val == 420)\n\t\n\tvalue_t value = Get(\"int_prop_val\");\n\tASSERT(value.IsInt())\n\tASSERT((int32_t)value == 420)\n\t\n\tASSERT(Flags(\"int_prop_val\") == (USER | MENU))\n}\n\nTEST_CASE(\"Setting float property wrapper\", \"[settings22]\") {\n\tstatic Property<float> float_prop_val = {420.69f, \"float_prop_val\", APPLICATION};\n\t\n\tfloat f = (float)float_prop_val;\n\tASSERT(f == 420.69f)\n\t\n\tvalue_t value = Get(\"float_prop_val\");\n\tASSERT(value.IsFloat())\n}\n\nTEST_CASE(\"Setting uint property wrapper\", \"[settings23]\") {\n\tstatic Property<uint32_t> uint_prop_val = {420, \"uint_prop_val\", MENU};\n\t\n\tASSERT((uint32_t)uint_prop_val == 420)\n\t\n\tvalue_t value = Get(\"uint_prop_val\");\n\tASSERT(value.IsInt())\n\tASSERT((uint32_t)value == 420)\n}\n\nTEST_CASE(\"Setting property wrapper non-initializer\", \"[settings24]\") {\n\tstatic Property<int32_t> simple_property = 69;\n\t\n\tASSERT((int32_t)simple_property == 69)\n}\n\nTEST_CASE(\"Setting empty commandline parse\", \"[settings25]\") {\n\tconst char* argv[] = {\"program\"};\n\tParse(argv, 1);\n\tASSERT(true)\n}\n\nTEST_CASE(\"Setting get non-defined\", \"[settings26]\") {\n\tvalue_t value = Get(\"does_not_exist\");\n\n\tASSERT(value.GetType() == TYPE_UNDEFINED)\n}\n\nTEST_CASE(\"Setting set non-defined\", \"[settings27]\") {\n\tSet(\"does_not_exist\", value_t(420));\n\t\n\tASSERT(true)\n}\n\nTEST_CASE(\"Setting flag lookup for non-defined\", \"[settings28]\") {\n\tuint32_t flags = Flags(\"does_not_exist\");\n\t\n\tASSERT(flags == NONE)\n}\n\nTEST_CASE(\"Setting commandline parse non-defined\", \"[settings29]\") {\n\tbool known = false;\n\tRegister(known, \"known_setting\", USER);\n\t\n\tconst char* argv[] = {\"program\", \"-unknown_setting\", \"value\", \"-known_setting\"};\n\tParse(argv, 4);\n\t\n\tASSERT(known == true)\n}\n\nTEST_CASE(\"Setting registering multiple same name\", \"[settings30]\") {\n\tint32_t first = 420;\n\tint32_t second = 69;\n\t\n\tRegister(first, \"duplicate_name\", USER);\n\tRegister(second, \"duplicate_name\", APPLICATION);\n\t\n\tvalue_t value = Get(\"duplicate_name\");\n\tASSERT(value.IsInt())\n\tASSERT((int32_t)Get(\"duplicate_name\") == first)\n}\n\nTEST_CASE(\"Setting commandline float parse formats\", \"[settings31]\") {\n\tfloat float1 = 0.0f;\n\tfloat float2 = 0.0f;\n\tfloat float3 = 0.0f;\n\t\n\tRegister(float1, \"float1\", USER);\n\tRegister(float2, \"float2\", USER);\n\tRegister(float3, \"float3\", USER);\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-float1\", \"420.69\",\n\t\t\"-float2\", \".69\",\n\t\t\"-float3\", \"420.\"\n\t};\n\tParse(argv, 7);\n\t\n\tASSERT(float1 == 420.69f)\n\tASSERT(float2 == 0.69f)\n\tASSERT(float3 == 420.0f)\n}\n\nTEST_CASE(\"Setting commandline parse zeroes\", \"[settings32]\") {\n\tint32_t int_zero = 420;\n\tfloat float_zero = 69.0f;\n\t\n\tRegister(int_zero, \"int_zero\", USER);\n\tRegister(float_zero, \"float_zero\", USER);\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-int_zero\", \"0\",\n\t\t\"-float_zero\", \"0.0\"\n\t};\n\tParse(argv, 5);\n\t\n\tASSERT(int_zero == 0)\n\tASSERT(float_zero == 0.0f)\n}\n\nTEST_CASE(\"Setting setting lookup with no filter\", \"[settings33]\") {\n\tbool setting1 = true;\n\tbool setting2 = true;\n\t\n\tRegister(setting1, \"setting_a\", USER);\n\tRegister(setting2, \"setting_b\", APPLICATION);\n\t\n\tstd::vector<name_t> none_settings = GetSettings(NONE);\n\t\n\tASSERT(!none_settings.size())\n}\n\nTEST_CASE(\"Setting multiple gets\", \"[settings34]\") {\n\tint32_t persistent = 420;\n\tRegister(persistent, \"persistent_value\", USER);\n\t\n\tvalue_t v1 = Get(\"persistent_value\");\n\tASSERT((int32_t)v1 == 420)\n\t\n\tvalue_t v2 = Get(\"persistent_value\");\n\tASSERT((int32_t)v2 == 420)\n\t\n\tvalue_t v3 = Get(\"persistent_value\");\n\tASSERT((int32_t)v3 == 420)\n}\n\nTEST_CASE(\"Setting large commandline parse\", \"[settings35]\") {\n\tbool flags[10];\n\tint32_t values[10];\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tflags[i] = false;\n\t\tvalues[i] = 0;\n\t\t\n\t\tchar name_buf[32];\n\t\tsprintf(name_buf, \"flag_%d\", i);\n\t\tRegister(flags[i], name_buf, USER);\n\t\t\n\t\tsprintf(name_buf, \"value_%d\", i);\n\t\tRegister(values[i], name_buf, USER);\n\t}\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-flag_0\", \"-value_0\", \"0\",\n\t\t\"-flag_1\", \"-value_1\", \"1\",\n\t\t\"-flag_2\", \"-value_2\", \"2\",\n\t\t\"-flag_3\", \"-value_3\", \"3\",\n\t\t\"-flag_4\", \"-value_4\", \"4\",\n\t\t\"-flag_5\", \"-value_5\", \"5\",\n\t\t\"-flag_6\", \"-value_6\", \"6\",\n\t\t\"-flag_7\", \"-value_7\", \"7\",\n\t\t\"-flag_8\", \"-value_8\", \"8\",\n\t\t\"-flag_9\", \"-value_9\", \"9\"\n\t};\n\t\n\tParse(argv, 31);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tASSERT(flags[i] == true)\n\t\tASSERT(values[i] == i)\n\t}\n}\n\nTEST_CASE(\"Setting commandline parsing before registration\", \"[settings36]\") {\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-late_bool\",\n\t\t\"-late_int\", \"420\",\n\t\t\"-late_float\", \"69.420\"\n\t};\n\t\n\tParse(argv, 6);\n\t\n\tbool late_bool = false;\n\tint32_t late_int = 0;\n\tfloat late_float = 0.0f;\n\t\n\tRegister(late_bool, \"late_bool\", USER);\n\tRegister(late_int, \"late_int\", USER);\n\tRegister(late_float, \"late_float\", USER);\n\t\n\tASSERT(late_bool == true)\n\tASSERT(late_int == 420)\n\tASSERT(late_float == 69.420f)\n}\n\nTEST_CASE(\"Setting commandline parsing mixed timing\", \"[settings37]\") {\n\tbool early_bool = false;\n\tRegister(early_bool, \"early_setting\", USER);\n\t\n\tconst char* argv[] = {\n\t\t\"program\",\n\t\t\"-early_setting\",\n\t\t\"-late_setting\", \"99\"\n\t};\n\t\n\tParse(argv, 4);\n\t\n\tASSERT(early_bool == true)\n\t\n\tint32_t late_int = 0;\n\tRegister(late_int, \"late_setting\", USER);\n\t\n\tASSERT(late_int == 99)\n}\n\nTEST_CASE(\"Setting multiple commandline parses\", \"[settings38]\") {\n\tconst char* argv1[] = {\"program\", \"-setting1\", \"420\"};\n\tParse(argv1, 3);\n\t\n\tint32_t setting1 = 0;\n\tRegister(setting1, \"setting1\", USER);\n\tASSERT(setting1 == 420)\n\t\n\tconst char* argv2[] = {\"program\", \"-setting2\", \"69\"};\n\tParse(argv2, 3);\n\t\n\tint32_t setting2 = 0;\n\tRegister(setting2, \"setting2\", USER);\n\tASSERT(setting2 == 69)\n\t\n\tASSERT(setting1 == 420)\n}\n\nTEST_CASE(\"Setting static int and float property\", \"[settings39]\") {\n\tASSERT(static_int == 420)\n\tASSERT((int32_t)Get(\"static-int\") == 420)\n\t\n\tASSERT(static_float == -69.0f)\n\tASSERT((float)Get(\"static-float\") == -69.0f)\n\t\n\tconst char* argv[] = {\"program\", \"-static-int\", \"69\", \"-static-float\", \"-420.0\"};\n\tParse(argv, 5);\n\t\n\tASSERT(static_int == 69)\n\tASSERT((int32_t)Get(\"static-int\") == 69)\n\t\n\tASSERT(static_float == -420.0f)\n\tASSERT((float)Get(\"static-float\") == -420.0f)\n}\n\nEND_TEST"
  },
  {
    "path": "tests/stack.cpp",
    "content": "\n// testable unit\n#include <templates/stack.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Basic Stack operations\", \"[stack1]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"test_stack\", 10);\n\t\n\tASSERT(stack.size() == 0);\n\t\n\tTestData data1{42, 84};\n\tstack.push(data1);\n\tASSERT(stack.size() == 1);\n\t\n\tASSERT(stack.top().a == 42);\n\tASSERT(stack.top().b == 84);\n\tASSERT(stack.size() == 1);\n\t\n\tTestData popped = stack.pop();\n\tASSERT(popped.a == 42);\n\tASSERT(popped.b == 84);\n\tASSERT(stack.size() == 0);\n}\n\nTEST_CASE(\"Stack conforms to LIFO\", \"[stack2]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"lifo_stack\", 20);\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tstack.push(TestData{i, i * 10});\n\t}\n\t\n\tASSERT(stack.size() == 5);\n\t\n\tfor (int i = 4; i >= 0; i--) {\n\t\tASSERT(stack.size() == static_cast<size_t>(i + 1));\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 10);\n\t}\n\t\n\tASSERT(stack.size() == 0);\n}\n\nTEST_CASE(\"Stack can be peeked at\", \"[stack3]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"top_stack\", 10);\n\t\n\tstack.push(TestData{100, 200});\n\tstack.push(TestData{300, 400});\n\tstack.push(TestData{500, 600});\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tASSERT(stack.top().a == 500);\n\t\tASSERT(stack.top().b == 600);\n\t\tASSERT(stack.size() == 3);\n\t}\n\t\n\tstack.pop();\n\tASSERT(stack.top().a == 300);\n\tASSERT(stack.top().b == 400);\n\tASSERT(stack.size() == 2);\n}\n\nTEST_CASE(\"Stack top element modification\", \"[stack4]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"modify_stack\", 10);\n\t\n\tstack.push(TestData{10, 20});\n\t\n\tstack.top().a = 999;\n\tstack.top().b = 888;\n\t\n\t// honestly idk, maybe we don't need this?\n\t// I think that this method was meant for just peeking at data originally?\n\tASSERT(stack.top().a == 999);\n\tASSERT(stack.top().b == 888);\n\t\n\tTestData popped = stack.pop();\n\tASSERT(popped.a == 999);\n\tASSERT(popped.b == 888);\n}\n\nTEST_CASE(\"Stack reset\", \"[stack5]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"reset_stack\", 50);\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tstack.push(TestData{i, i * 2});\n\t}\n\t\n\tASSERT(stack.size() == 20);\n\t\n\tstack.reset();\n\t\n\tASSERT(stack.size() == 0);\n\t\n\tstack.push(TestData{42, 84});\n\tASSERT(stack.size() == 1);\n\tASSERT(stack.top().a == 42);\n}\n\nTEST_CASE(\"Stack stress test\", \"[stack6]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"stress_stack\", 500);\n\t\n\tfor (int i = 0; i < 300; i++) {\n\t\tstack.push(TestData{i, i * 3});\n\t}\n\t\n\tASSERT(stack.size() == 300);\n\n\tfor (int i = 299; i >= 150; i--) {\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 3);\n\t}\n\t\n\tASSERT(stack.size() == 150);\n\t\n\tfor (int i = 300; i < 400; i++) {\n\t\tstack.push(TestData{i, i * 3});\n\t}\n\t\n\tASSERT(stack.size() == 250);\n\n\tfor (int i = 399; i >= 300; i--) {\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 3);\n\t}\n\t\n\tfor (int i = 149; i >= 0; i--) {\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 3);\n\t}\n\t\n\tASSERT(stack.size() == 0);\n}\n\nTEST_CASE(\"Stack works with ints\", \"[stack7]\") {\n\tStack<int> stack(\"int_stack\", 20);\n\n\tfor (int i = 0; i < 10; i++) {\n\t\tstack.push(i * 5);\n\t}\n\t\n\tASSERT(stack.size() == 10);\n\n\tfor (int i = 9; i >= 0; i--) {\n\t\tint popped = stack.pop();\n\t\tASSERT(popped == i * 5);\n\t}\n\t\n\tASSERT(stack.size() == 0);\n}\n\nTEST_CASE(\"Stack works with .. doubles?\", \"[stack8]\") {\n\tStack<double> stack(\"double_stack\", 15);\n\t\n\tfor (int i = 0; i < 8; i++) {\n\t\tstack.push(i * 1.5);\n\t}\n\t\n\tASSERT(stack.size() == 8);\n\t\n\tASSERT(stack.top() == 7 * 1.5);\n\t\n\tfor (int i = 7; i >= 0; i--) {\n\t\tdouble popped = stack.pop();\n\t\tASSERT(popped == i * 1.5);\n\t}\n}\n\nTEST_CASE(\"Stack resets multiple times\", \"[stack9]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"multi_reset_stack\", 30);\n\t\n\tfor (int cycle = 0; cycle < 5; cycle++) {\n\t\t// push items ;33\n\t\tfor (int i = 0; i < 10; i++) {\n\t\t\tstack.push(TestData{i + cycle * 100, i + cycle * 1000});\n\t\t}\n\t\t\n\t\tASSERT(stack.size() == 10);\n\t\t\n\t\tstack.reset();\n\t\tASSERT(stack.size() == 0);\n\t}\n\n\tstack.push(TestData{999, 888});\n\tASSERT(stack.size() == 1);\n\tASSERT(stack.top().a == 999);\n}\n\nTEST_CASE(\"Stack handles single element\", \"[stack11]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"single_stack\", 1);\n\t\n\tstack.push(TestData{42, 84});\n\tASSERT(stack.size() == 1);\n\tASSERT(stack.top().a == 42);\n\t\n\tTestData popped = stack.pop();\n\tASSERT(popped.a == 42);\n\tASSERT(stack.size() == 0);\n}\n\nTEST_CASE(\"Stack correctly does sizes\", \"[stack12]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"size_stack\", 100);\n\t\n\tsize_t expected_size = 0;\n\tASSERT(stack.size() == expected_size);\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tstack.push(TestData{i, i});\n\t\texpected_size++;\n\t\tASSERT(stack.size() == expected_size);\n\t}\n\t\n\tfor (int i = 0; i < 30; i++) {\n\t\tstack.pop();\n\t\texpected_size--;\n\t\tASSERT(stack.size() == expected_size);\n\t}\n\n\tstack.reset();\n\texpected_size = 0;\n\tASSERT(stack.size() == expected_size);\n}\n\nTEST_CASE(\"Stack can be pushed and also popped\", \"[stack13]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"alt_stack\", 50);\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tstack.push(TestData{i, i * 2});\n\t\tASSERT(stack.size() == 1);\n\t\t\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 2);\n\t\tASSERT(stack.size() == 0);\n\t}\n}\n\nTEST_CASE(\"Stack can be fully filled out\", \"[stack14]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStack<TestData> stack(\"grow_stack\", 5);\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tstack.push(TestData{i, i * 7});\n\t}\n\t\n\tASSERT(stack.size() == 5);\n\t\n\tfor (int i = 4; i >= 0; i--) {\n\t\tTestData popped = stack.pop();\n\t\tASSERT(popped.a == i);\n\t\tASSERT(popped.b == i * 7);\n\t}\n\t\n\tASSERT(stack.size() == 0);\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/stackpool.cpp",
    "content": "\n// testable unit\n#include <templates/stackpool.h>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Basic Stackpool operations\", \"[stackpool1]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"test_pool\", 100);\n\t\n\tASSERT(pool.size() == 0);\n\t\n\tTestData* ptr1 = pool.allocate(1);\n\tASSERT(ptr1 != nullptr);\n\tASSERT(pool.size() == 1);\n\t\n\tptr1->a = 42;\n\tptr1->b = 84;\n\tASSERT(ptr1->a == 42);\n\tASSERT(ptr1->b == 84);\n\n\tTestData* ptr2 = pool.allocate(1);\n\tASSERT(ptr2 != nullptr);\n\tASSERT(pool.size() == 2);\n\n\tASSERT(ptr2 == ptr1 + 1);\n}\n\nTEST_CASE(\"Multiple Stackpool allocations\", \"[stackpool2]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"multi_pool\", 200);\n\t\n\tTestData* data1 = pool.allocate(10);\n\tASSERT(data1 != nullptr);\n\tASSERT(pool.size() == 10);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tdata1[i].a = i * 5;\n\t\tdata1[i].b = i * 7;\n\t}\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tASSERT(data1[i].a == i * 5);\n\t\tASSERT(data1[i].b == i * 7);\n\t}\n\t\n\tTestData* data2 = pool.allocate(5);\n\tASSERT(pool.size() == 15);\n}\n\nTEST_CASE(\"Stackpool reset actually resets\", \"[stackpool3]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"reset_pool\", 100);\n\t\n\tTestData* data1 = pool.allocate(10);\n\tASSERT(pool.size() == 10);\n\t\n\tfor (int i = 0; i < 10; i++) {\n\t\tdata1[i].a = i;\n\t\tdata1[i].b = i * 2;\n\t}\n\t\n\tpool.reset();\n\tASSERT(pool.size() == 0);\n\t\n\tTestData* data2 = pool.allocate(5);\n\tASSERT(pool.size() == 5);\n\t\n\tASSERT(data2 == data1);\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\tdata2[i].a = i + 100;\n\t\tdata2[i].b = i + 200;\n\t}\n\t\n\tASSERT(data2[0].a == 100);\n\tASSERT(data2[0].b == 200);\n}\n\nTEST_CASE(\"Stackpool iteration\", \"[stackpool4]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"iter_pool\", 50);\n\t\n\tASSERT(pool.begin() == pool.end());\n\n\tpool.allocate(5);\n\tTestData* items = pool.begin();\n\t\n\tfor (int i = 0; i < 5; i++) {\n\t\titems[i].a = i * 10;\n\t\titems[i].b = i * 20;\n\t}\n\t\n\tint count = 0;\n\tfor (TestData* it = pool.begin(); it != pool.end(); it++) {\n\t\tASSERT(it->a == count * 10);\n\t\tASSERT(it->b == count * 20);\n\t\tcount++;\n\t}\n\t\n\tASSERT(count == 5);\n}\n\nTEST_CASE(\"Stackpool range-based for loop\", \"[stackpool5]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"range_pool\", 30);\n\t\n\tTestData* items = pool.allocate(8);\n\tfor (int i = 0; i < 8; i++) {\n\t\titems[i].a = i;\n\t\titems[i].b = i * i;\n\t}\n\n\tint idx = 0;\n\tfor (auto& it : pool) {\n\t\tASSERT(it.a == idx);\n\t\tASSERT(it.b == idx * idx);\n\t\tidx++;\n\t}\n\t\n\tASSERT(idx == 8);\n}\n\nTEST_CASE(\"Stackpool stress test\", \"[stackpool6]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"stress_pool\", 1000);\n\t\n\tTestData* pointers[50];\n\tint sizes[50];\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tsizes[i] = (i % 10) + 1;\n\t\tpointers[i] = pool.allocate(sizes[i]);\n\t\t\n\t\tfor (int j = 0; j < sizes[i]; j++) {\n\t\t\tpointers[i][j].a = i * 100 + j;\n\t\t\tpointers[i][j].b = i * 1000 + j;\n\t\t}\n\t}\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tfor (int j = 0; j < sizes[i]; j++) {\n\t\t\tASSERT(pointers[i][j].a == i * 100 + j);\n\t\t\tASSERT(pointers[i][j].b == i * 1000 + j);\n\t\t}\n\t}\n\t\n\tTestData* expected = pool.begin();\n\tfor (int i = 0; i < 50; i++) {\n\t\tASSERT(pointers[i] == expected);\n\t\texpected += sizes[i];\n\t}\n\tASSERT(expected == pool.end());\n}\n\nTEST_CASE(\"Stackpool multiply resets\", \"[stackpool7]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"cycle_pool\", 100);\n\t\n\tfor (int cycle = 0; cycle < 5; cycle++) {\n\t\tASSERT(pool.size() == 0);\n\t\t\n\t\tTestData* data = pool.allocate(10);\n\t\t\n\t\tfor (int i = 0; i < 10; i++) {\n\t\t\tdata[i].a = cycle * 100 + i;\n\t\t\tdata[i].b = cycle * 1000 + i;\n\t\t}\n\t\t\n\t\tASSERT(pool.size() == 10);\n\n\t\tfor (int i = 0; i < 10; i++) {\n\t\t\tASSERT(data[i].a == cycle * 100 + i);\n\t\t\tASSERT(data[i].b == cycle * 1000 + i);\n\t\t}\n\t\t\n\t\tpool.reset();\n\t}\n}\n\nTEST_CASE(\"Stackpool with ints\", \"[stackpool8]\") {\n\tStackPool<int> pool(\"int_pool\", 200);\n\t\n\tint* arr = pool.allocate(20);\n\tASSERT(pool.size() == 20);\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tarr[i] = i * 3;\n\t}\n\t\n\tfor (int i = 0; i < 20; i++) {\n\t\tASSERT(arr[i] == i * 3);\n\t}\n\t\n\tint idx = 0;\n\tfor (int* data = pool.begin(); data != pool.end(); data++) {\n\t\tASSERT(*data == idx * 3);\n\t\tidx++;\n\t}\n}\n\nTEST_CASE(\"Stackpool size is reported correctly\", \"[stackpool9]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"size_pool\", 300);\n\t\n\tsize_t expected_size = 0;\n\tASSERT(pool.size() == expected_size);\n\n\tint allocations[] = {5, 10, 3, 20, 7, 15};\n\t\n\tfor (int alloc_size : allocations) {\n\t\tpool.allocate(alloc_size);\n\t\texpected_size += alloc_size;\n\t\tASSERT(pool.size() == expected_size);\n\t}\n\n\tpool.reset();\n\tASSERT(pool.size() == 0);\n}\n\nTEST_CASE(\"Stackpool with zero length allocation\", \"[stackpool11]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"zero_pool\", 50);\n\t\n\tTestData* data = pool.allocate(0);\n\n\tASSERT(data == nullptr);\n\tASSERT(pool.size() == 0);\n}\n\nTEST_CASE(\"Stackpool lots of tiny allocations\", \"[stackpool12]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"single_pool\", 100);\n\t\n\tTestData* data[50];\n\tfor (int i = 0; i < 50; i++) {\n\t\tdata[i] = pool.allocate(1);\n\t\tdata[i]->a = i;\n\t\tdata[i]->b = i * 2;\n\t}\n\t\n\tASSERT(pool.size() == 50);\n\t\n\tfor (int i = 1; i < 50; i++) {\n\t\tASSERT(data[i] == data[i-1] + 1);\n\t}\n\t\n\tfor (int i = 0; i < 50; i++) {\n\t\tASSERT(data[i]->a == i);\n\t\tASSERT(data[i]->b == i * 2);\n\t}\n}\n\nTEST_CASE(\"Stackpool fill up\", \"[stackpool13]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"full_pool\", 100);\n\t\n\tTestData* data1 = pool.allocate(95);\n\tASSERT(pool.size() == 95);\n\t\n\tfor (int i = 0; i < 95; i++) {\n\t\tdata1[i].a = i;\n\t\tdata1[i].b = i * 10;\n\t}\n\t\n\tTestData* data2 = pool.allocate(5);\n\tASSERT(pool.size() == 100);\n\t\n\tASSERT(data2 == data1 + 95);\n\t\n\tfor (int i = 0; i < 95; i++) {\n\t\tASSERT(data1[i].a == i);\n\t\tASSERT(data1[i].b == i * 10);\n\t}\n}\n\nTEST_CASE(\"Stackpool multiply fill up\", \"[stackpool14]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"preserve_pool\", 150);\n\t\n\tpool.allocate(150);\n\tASSERT(pool.size() == 150);\n\t\n\tpool.reset();\n\tASSERT(pool.size() == 0);\n\n\tTestData* data = pool.allocate(150);\n\tASSERT(data != nullptr);\n\tASSERT(pool.size() == 150);\n}\n\nTEST_CASE(\"Stackpool resets to beginning\", \"[stackpool15]\") {\n\tstruct TestData {\n\t\tint a;\n\t\tint b;\n\t};\n\t\n\tStackPool<TestData> pool(\"persist_pool\", 50);\n\t\n\tTestData* data1 = pool.allocate(10);\n\tfor (int i = 0; i < 10; i++) {\n\t\tdata1[i].a = i + 100;\n\t\tdata1[i].b = i + 200;\n\t}\n\t\n\tpool.reset();\n\t\n\tTestData* data2 = pool.allocate(10);\n\t\n\t// might be letting implementation details into slip into the test...\n\t// ahh, who cares? no one will look at what the tests do anyway :Dd\n\tASSERT(data1 == data2);\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/uid.cpp",
    "content": "\n// testable unit\n#include <framework/uid.cpp>\n\n// test framework\n#include <templates/test.h>\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Basic UID operations\", \"[uid1]\") {\n\tASSERT(UID(\"asdfghjkl\"))\n\t\n\tASSERT(UID() == UID())\n\tASSERT(UID() == \"none\")\n\tASSERT(UID() == UID(\"none\"))\n\t\n\tASSERT(!UID())\n\t\n\tASSERT(UID(\"aaa\") == UID(\"aaa\"))\n\tASSERT(UID(\"aaa\") != UID(\"bbb\"))\n\t\n\tASSERT(strcmp(UID(\"aaa\"), \"aaa\") == 0)\n\tASSERT(strcmp(UID(\"aaa\"), \"bbb\") != 0)\n}\n\nTEST_CASE(\"Default UID value\", \"[uid2]\") {\n    UID default_uid;\n    UID none_uid = \"none\";\n    \n    ASSERT(default_uid.key == none_uid.key);\n    ASSERT(default_uid == none_uid);\n    ASSERT(default_uid == \"none\");\n}\n\nTEST_CASE(\"UID doesn't do weird pointer stuff\", \"[uid3]\") {\n    char buffer1[] = \"egg_roll\";\n    char buffer2[] = \"egg_roll\";\n    \n    ASSERT(buffer1 != buffer2);\n    \n    UID uid1(buffer1);\n    UID uid2(buffer2);\n    \n    ASSERT(uid1.key == uid2.key);\n    ASSERT(uid1 == uid2);\n}\n\nTEST_CASE(\"UID const char* and std::string identity\", \"[uid4]\") {\n    const char* cstr = \"egg_roll\";\n    std::string stdstr = \"egg_roll\";\n    \n    UID uid_cstr(cstr);\n    UID uid_stdstr(stdstr);\n    \n    ASSERT(uid_cstr.key == uid_stdstr.key);\n    ASSERT(uid_cstr == uid_stdstr);\n}\n\nTEST_CASE(\"UID stores a proper copy\", \"[uid5]\") {\n    char buffer[] = \"roll\";\n    \n    UID uid(buffer);\n    \n    const char* retrieved = uid;\n    \n    ASSERT(std::string(retrieved) == \"roll\");\n    \n    strcpy(buffer, \"egg\");\n    \n    const char* retrieved_after = uid;\n    ASSERT(std::string(retrieved_after) == \"roll\");\n    ASSERT(std::string(retrieved_after) != \"egg\");\n}\n\nTEST_CASE(\"UID conversion to std::string\", \"[uid6]\") {\n    UID uid(\"egg_roll\");\n    \n    std::string str = uid;\n    \n    ASSERT(str == \"egg_roll\");\n}\n\nTEST_CASE(\"UID conversion to const char*\", \"[uid7]\") {\n    UID uid = \"egg_roll\";\n    \n    const char* cstr = uid;\n    \n    ASSERT(std::string(cstr) == \"egg_roll\");\n}\n\nTEST_CASE(\"UID copy constructor\", \"[uid8]\") {\n    UID uid1 = \"egg_roll\";\n    UID uid2 = uid1;\n    \n    ASSERT(uid1.key == uid2.key);\n    ASSERT(uid1 == uid2);\n    \n    std::string str1 = uid1;\n    std::string str2 = uid2;\n    ASSERT(str1 == str2);\n}\n\nTEST_CASE(\"UID assignment operator\", \"[uid9]\") {\n    UID uid1 = \"egg\";\n    UID uid2 = \"roll\";\n    \n    ASSERT(uid1.key != uid2.key);\n    \n    uid2 = uid1;\n    \n    ASSERT(uid1.key == uid2.key);\n    ASSERT(uid1 == uid2);\n}\n\nTEST_CASE(\"UID bool comparison\", \"[uid10]\") {\n    UID valid_uid(\"eggroll\");\n    UID default_uid;\n    \n    ASSERT((bool)valid_uid == true);\n    ASSERT((bool)default_uid == false);\n}\n\nTEST_CASE(\"UID no_quote() check\", \"[uid11]\") {\n    ASSERT(UID::no_quote(\"egg\") == true);\n    ASSERT(UID::no_quote(\"egg123\") == true);\n    ASSERT(UID::no_quote(\"under_score\") == true);\n    \n    ASSERT(UID::no_quote(\"egg roll\") == false);\n    ASSERT(UID::no_quote(\"has space\") == false);\n    ASSERT(UID::no_quote(\"has\\ttab\") == false);\n    ASSERT(UID::no_quote(\"has\\nnewline\") == false);\n    \n    ASSERT(UID::no_quote(\"has\\\"quote\") == false);\n    ASSERT(UID::no_quote(\"\\\"quoted\\\"\") == false);\n}\n\nTEST_CASE(\"UID is_empty() check\", \"[uid12]\") {\n    ASSERT(UID::is_empty(\"\") == true);\n    ASSERT(UID::is_empty(\" \") == true);\n    ASSERT(UID::is_empty(\"   \") == true);\n    ASSERT(UID::is_empty(\"\\t\") == true);\n    ASSERT(UID::is_empty(\"\\n\") == true);\n    ASSERT(UID::is_empty(\" \\t\\n \") == true);\n    \n    ASSERT(UID::is_empty(\"hello\") == false);\n    ASSERT(UID::is_empty(\" text \") == false);\n    ASSERT(UID::is_empty(\"a\") == false);\n}\n\nTEST_CASE(\"UID is_valid() check\", \"[uid13]\") {\n    UID valid1 = \"egg\";\n    UID valid2 = \"egg_roll\";\n    ASSERT(UID::is_valid(valid1) == true);\n    ASSERT(UID::is_valid(valid2) == true);\n    \n    UID default_uid;\n    ASSERT(UID::is_valid(default_uid) == true);\n\n    UID invalid_uid;\n    invalid_uid.key = -1;\n\tASSERT(UID::is_valid(invalid_uid) == false);\n\t\n    invalid_uid.key = 100000000;\n    ASSERT(UID::is_valid(invalid_uid) == false);\n}\n\nTEST_CASE(\"Multiple UID with same key\", \"[uid14]\") {\n    UID uid1 = \"egg\";\n    UID uid2 = \"egg\";\n    UID uid3 = \"egg\";\n    UID uid4 = \"egg\";\n    \n    ASSERT(uid1.key == uid2.key);\n    ASSERT(uid2.key == uid3.key);\n    ASSERT(uid3.key == uid4.key);\n    \n    ASSERT(uid1 == uid2);\n    ASSERT(uid2 == uid3);\n    ASSERT(uid3 == uid4);\n}\n\nTEST_CASE(\"UID different string keys\", \"[uid15]\") {\n    const int count = 100;\n    UID uids[count];\n\n    for (int i = 0; i < count; i++) {\n        char buffer[32];\n        snprintf(buffer, sizeof(buffer), \"string_%d\", i);\n        uids[i] = UID(buffer);\n    }\n\n    for (int i = 0; i < count; i++) {\n        for (int j = i + 1; j < count; j++) {\n            ASSERT(uids[i].key != uids[j].key);\n            ASSERT(!(uids[i] == uids[j]));\n        }\n    }\n}\n\nTEST_CASE(\"UID empty string\", \"[uid16]\") {\n    UID empty1 = \"\";\n    UID empty2 = \"\";\n    \n    ASSERT(empty1.key == empty2.key);\n    ASSERT(empty1 == empty2);\n    \n    std::string str = empty1;\n    ASSERT(str == \"\");\n}\n\nTEST_CASE(\"UID special characters\", \"[uid17]\") {\n    UID uid1 = \"hello_world\";\n    UID uid2 = \"hello-world\";\n    UID uid3 = \"hello.world\";\n    UID uid4 = \"hello/world\";\n    UID uid5 = \"hello@world\";\n    \n    ASSERT(uid1.key != uid2.key);\n    ASSERT(uid2.key != uid3.key);\n    ASSERT(uid3.key != uid4.key);\n    ASSERT(uid4.key != uid5.key);\n    \n    ASSERT(std::string(uid1) == \"hello_world\");\n    ASSERT(std::string(uid2) == \"hello-world\");\n    ASSERT(std::string(uid3) == \"hello.world\");\n}\n\nTEST_CASE(\"UID numbers in strings\", \"[uid18]\") {\n    UID uid1 = \"egg420\";\n    UID uid2 = \"420egg\";\n    UID uid3 = \"42069\";\n    \n    ASSERT(uid1.key != uid2.key);\n    ASSERT(uid2.key != uid3.key);\n    \n    ASSERT(std::string(uid1) == \"egg420\");\n    ASSERT(std::string(uid2) == \"420egg\");\n    ASSERT(std::string(uid3) == \"42069\");\n}\n\nTEST_CASE(\"UID long string\", \"[uid19]\") {\n    std::string long_str(500, 'x');\n    long_str += \"_end\";\n    \n    UID uid(long_str.c_str());\n    \n    std::string retrieved = uid;\n    ASSERT(retrieved == long_str);\n}\n\nTEST_CASE(\"UID case sensitivity\", \"[uid20]\") {\n    UID uid_lower = \"egg\";\n    UID uid_upper = \"EGG\";\n    UID uid_mixed = \"EgG\";\n    \n    ASSERT(uid_lower.key != uid_upper.key);\n    ASSERT(uid_upper.key != uid_mixed.key);\n    ASSERT(uid_lower.key != uid_mixed.key);\n}\n\nTEST_CASE(\"UID const char* comparison\", \"[uid21]\") {\n    UID uid = \"egg_roll\";\n    \n    ASSERT(uid == \"egg_roll\");\n    ASSERT(!(uid == \"dumpling\"));\n    ASSERT(!(uid == \"EGG_roll\"));\n}\n\nEND_TEST\n"
  },
  {
    "path": "tests/value.cpp",
    "content": "\n// dependencies\n#include <framework/system.cpp>\n#include <framework/logging.cpp>\n#include <framework/uid.cpp>\n#include <framework/type.cpp>\n\n// testable unit\n#include <framework/value.h>\n\n// test framework\n#include <templates/test.h>\n\nnamespace tram::Platform {\n\tvoid TryDebugging() {\n\t\t\n\t}\n\t\n\tvoid ShowErrorDialog(const char* message, const char* title) {\n\t\t\n\t}\n}\n\nusing namespace tram;\n\nSTART_TEST\n\nTEST_CASE(\"Value with no definition\", \"[value1]\") {\n\tvalue_t value;\n\tASSERT(value.GetType() == TYPE_UNDEFINED)\n\tASSERT(!value)\n}\n\nTEST_CASE(\"Value from bool\", \"[value2]\") {\n\tvalue_t true_val = true;\n\tASSERT(true_val.IsBool())\n\tASSERT(true_val.GetType() == TYPE_BOOL)\n\tASSERT(true_val)\n\tASSERT((bool)true_val == true)\n\t\n\tvalue_t false_val = false;\n\tASSERT(false_val.IsBool())\n\tASSERT(!false_val)\n\tASSERT((bool)false_val == false)\n}\n\nTEST_CASE(\"Value from integer\", \"[value3]\") {\n\tvalue_t int8_val((int8_t)127);\n\tASSERT(int8_val.IsInt())\n\tASSERT(int8_val.GetType() == TYPE_INT32)\n\tASSERT((int8_t)int8_val == 127)\n\t\n\tvalue_t int16_val((int16_t)-1234);\n\tASSERT(int16_val.IsInt())\n\tASSERT(int16_val.GetType() == TYPE_INT32)\n\tASSERT((int16_t)int16_val == -1234)\n\t\n\tvalue_t int32_val((int32_t)123456);\n\tASSERT(int32_val.IsInt())\n\tASSERT(int32_val.GetType() == TYPE_INT32)\n\tASSERT((int32_t)int32_val == 123456)\n\t\n\tvalue_t uint8_val((uint8_t)255);\n\tASSERT(uint8_val.IsInt())\n\tASSERT(uint8_val.GetType() == TYPE_UINT32)\n\tASSERT((uint8_t)uint8_val == 255)\n\t\n\tvalue_t uint16_val((uint16_t)65535);\n\tASSERT(uint16_val.IsInt())\n\tASSERT(uint16_val.GetType() == TYPE_UINT32)\n\tASSERT((uint16_t)uint16_val == 65535)\n\t\n\tvalue_t uint32_val((uint32_t)4000000000U);\n\tASSERT(uint32_val.IsInt())\n\tASSERT(uint32_val.GetType() == TYPE_UINT32)\n\tASSERT((uint32_t)uint32_val == 4000000000U)\n}\n\nTEST_CASE(\"Value from floats\", \"[value4]\") {\n\tvalue_t float_val = 420.69f;\n\tASSERT(float_val.IsFloat())\n\tASSERT(float_val.GetType() == TYPE_FLOAT32)\n\tfloat f = (float)float_val;\n\tASSERT(f == 420.69f)\n}\n\nTEST_CASE(\"Value from UIDs\", \"[value5]\") {\n\tvalue_t value = (name_t)\"egg roll\";\n\tASSERT(value.IsName())\n\tASSERT(value.GetType() == TYPE_NAME)\n\t\n\tname_t retrieved = value;\n\tASSERT(retrieved == \"egg roll\")\n\t\n\tconst char* str = value;\n\tASSERT(strcmp(str, \"egg roll\") == 0)\n}\n\nTEST_CASE(\"Value from strings\", \"[value6]\") {\n\tconst char* original = \"hello world\";\n\tvalue_t value = original;\n\tASSERT(value.IsString())\n\tASSERT(value.GetType() == TYPE_STRING)\n\t\n\tconst char* retrieved = value;\n\tASSERT(retrieved == original)\n}\n\nTEST_CASE(\"Value strings not copied\", \"[value7]\") {\n\tchar buffer[32] = \"egg\";\n\tvalue_t value = buffer;\n\tASSERT(value.IsString())\n\t\n\tconst char* ptr1 = value;\n\tASSERT(strcmp(ptr1, \"egg\") == 0)\n\t\n\tstrcpy(buffer, \"roll\");\n\t\n\tconst char* ptr2 = value;\n\tASSERT(strcmp(ptr2, \"roll\") == 0)\n\tASSERT(ptr1 == ptr2)\n}\n\nTEST_CASE(\"Value from vec2s\", \"[value8]\") {\n\tvalue_t value = vec2(23.0f, 419.0f);\n\tASSERT(value.IsVec2())\n\tASSERT(value.GetType() == TYPE_VEC2)\n\t\n\tvec2 retrieved = (vec2)value;\n\tASSERT(retrieved.x == 23.0f)\n\tASSERT(retrieved.y == 419.0f)\n}\n\nTEST_CASE(\"Value from vec3s\", \"[value9]\") {\n\tvalue_t value = vec3(23.0f, 419.0f, 4.20f);\n\tASSERT(value.IsVec3())\n\tASSERT(value.GetType() == TYPE_VEC3)\n\t\n\tvec3 retrieved = (vec3)value;\n\tASSERT(retrieved.x == 23.0f)\n\tASSERT(retrieved.y == 419.0f)\n\tASSERT(retrieved.z == 4.20f)\n}\n\nTEST_CASE(\"Value from vec4s\", \"[value10]\") {\n\tvalue_t value = vec4(23.0f, 419.0f, 4.20f, 42.1f);\n\tASSERT(value.IsVec4())\n\tASSERT(value.GetType() == TYPE_VEC4)\n\t\n\tvec4 retrieved = (vec4)value;\n\tASSERT(retrieved.x == 23.0f)\n\tASSERT(retrieved.y == 419.0f)\n\tASSERT(retrieved.z == 4.20f)\n\tASSERT(retrieved.w == 42.1f)\n}\n\nTEST_CASE(\"Value from quats\", \"[value11]\") {\n\tvalue_t value = quat(1.0f, 0.0f, 0.0f, 0.0f);\n\tASSERT(value.IsQuat())\n\tASSERT(value.GetType() == TYPE_QUAT)\n\t\n\tquat retrieved = (quat)value;\n\tASSERT(retrieved.w == 1.0f)\n\tASSERT(retrieved.x == 0.0f)\n\tASSERT(retrieved.y == 0.0f)\n\tASSERT(retrieved.z == 0.0f)\n}\n\nTEST_CASE(\"Value copies\", \"[value12]\") {\n\tvalue_t original = 42;\n\tvalue_t copy(original);\n\t\n\tASSERT(copy.IsInt())\n\tASSERT((int32_t)copy == 42)\n\tASSERT(copy.GetType() == original.GetType())\n\n\tvalue_t original_float(420.69f);\n\tvalue_t copy_float(original_float);\n\tASSERT(copy_float.IsFloat())\n\tASSERT((float)copy_float == 420.69f)\n}\n\nTEST_CASE(\"Value assignments\", \"[value13]\") {\n\tvalue_t value1 = 420;\n\tvalue_t value2 = 69;\n\t\n\tvalue2 = value1;\n\tASSERT((int32_t)value2 == 420)\n\tASSERT(value2.GetType() == value1.GetType())\n\t\n\tvalue_t value3 = 420.69f;\n\tvalue3 = value_t((int32_t)69);\n\tASSERT(value3.IsInt())\n\tASSERT((int32_t)value3 == 69)\n}\n\nTEST_CASE(\"Value same type comparisons\", \"[value14]\") {\n\tvalue_t int1 = 420;\n\tvalue_t int2 = 420;\n\tvalue_t int3 = 69;\n\t\n\tASSERT(int1 == int2)\n\tASSERT(int1 != int3)\n\t\n\tvalue_t float1 = 4.20f;\n\tvalue_t float2 = 4.20f;\n\tvalue_t float3 = 6.9f;\n\t\n\tASSERT(float1 == float2)\n\tASSERT(float1 != float3)\n\t\n\tvalue_t name1 = \"egg\";\n\tvalue_t name2 = \"egg\";\n\tvalue_t name3 = \"roll\";\n\n\tASSERT(name1 == name2)\n\tASSERT(name1 != name3)\n\t\n\tvalue_t string1 = \"egg\";\n\tvalue_t string2 = \"egg\";\n\tvalue_t string3 = \"roll\";\n\t\n\tASSERT(string1 == string2)\n\tASSERT(string1 != string3)\n}\n\nTEST_CASE(\"Value comparisons with different types\", \"[value15]\") {\n\tvalue_t int_val = 420;\n\tvalue_t float_val = 420.0f;\n\tvalue_t bool_val = true;\n\tvalue_t string_val = \"egg roll\";\n\t\n\t\n\tASSERT(int_val == float_val)\n\t\n\tASSERT(int_val != bool_val)\n\tASSERT(int_val != string_val)\n\t\n\tASSERT(bool_val != string_val)\n\t\n\tASSERT(float_val != bool_val)\n\tASSERT(float_val != string_val)\n}\n\nTEST_CASE(\"Value comparison between different ints\", \"[value16]\") {\n\tvalue_t int8_val = (int8_t)69;\n\tvalue_t int16_val = (int16_t)69;\n\tvalue_t int32_val = (int32_t)69;\n\t\n\tASSERT(int8_val == int16_val)\n\tASSERT(int16_val == int32_val)\n\tASSERT(int8_val == int32_val)\n\t\n\tvalue_t uint8_val = (uint8_t)69;\n\tASSERT(int8_val == uint8_val)\n}\n\nTEST_CASE(\"Value conversions for non-bools\", \"[value18]\") {\n\tvalue_t zero_val = 0;\n\tvalue_t nonzero_val = 420;\n\tASSERT(!zero_val)\n\tASSERT(nonzero_val)\n\t\n\tvalue_t float_zero_val = 0.0f;\n\tvalue_t float_nonzero_val = 4.20f;\n\tASSERT(!float_zero_val)\n\tASSERT(float_nonzero_val)\n\t\n\tvalue_t negative_val(-420);\n\tASSERT(negative_val)\n}\n\nTEST_CASE(\"Value int and float conversions\", \"[value19]\") {\n\tvalue_t int_val = 69;\n\tASSERT(int_val.GetInt() == 69)\n\t\n\tvalue_t float_val = 420.69f;\n\tASSERT(float_val.GetInt() == 420)\n\t\n\tvalue_t int_val2 = 420;\n\tASSERT(int_val2.GetFloat() == 420.0f)\n\t\n\tvalue_t float_val2 = 420.69f;\n\tASSERT(float_val2.GetFloat() == 420.69f)\n}\n\nTEST_CASE(\"Value type checking\", \"[value20]\") {\n\tvalue_t bool_val(true);\n\tASSERT(bool_val.IsBool())\n\tASSERT(!bool_val.IsInt())\n\tASSERT(!bool_val.IsFloat())\n\t\n\tvalue_t int_val = 420;\n\tASSERT(int_val.IsInt())\n\tASSERT(!int_val.IsBool())\n\tASSERT(!int_val.IsFloat())\n\t\n\tvalue_t float_val = 420.69f;\n\tASSERT(float_val.IsFloat())\n\tASSERT(!float_val.IsInt())\n\tASSERT(!float_val.IsBool())\n\t\n\tvalue_t name_val = (name_t)\"egg\";\n\tASSERT(name_val.IsName())\n\tASSERT(!name_val.IsString())\n\t\n\tvalue_t string_val = \"roll\";\n\tASSERT(string_val.IsString())\n\tASSERT(!string_val.IsName())\n\t\n\tvalue_t vec2_val = vec2(1.0f, 2.0f);\n\tASSERT(vec2_val.IsVec2())\n\tASSERT(!vec2_val.IsVec3())\n\t\n\tvalue_t vec3_val = vec3(1.0f, 2.0f, 3.0f);\n\tASSERT(vec3_val.IsVec3())\n\tASSERT(!vec3_val.IsVec2())\n\tASSERT(!vec3_val.IsVec4())\n\t\n\tvalue_t vec4_val = vec4(1.0f, 2.0f, 3.0f, 4.0f);\n\tASSERT(vec4_val.IsVec4())\n\tASSERT(!vec4_val.IsVec3())\n\t\n\tvalue_t quat_val = quat(1.0f, 0.0f, 0.0f, 0.0f);\n\tASSERT(quat_val.IsQuat())\n\tASSERT(!quat_val.IsVec4())\n}\n\nTEST_CASE(\"Value bool conversions\", \"[value21]\") {\n\tvalue_t int_val_zero((int32_t)0);\n\tASSERT(!int_val_zero)\n\t\n\tvalue_t float_val_zero(0.0f);\n\tASSERT(!float_val_zero)\n\t\n\tvalue_t int8_val_zero((int8_t)0);\n\tASSERT(!int8_val_zero)\n\t\n\tvalue_t uint32_zero_val((uint32_t)0);\n\tASSERT(!uint32_zero_val)\n}\n\nTEST_CASE(\"Value integer edge cases\", \"[value22]\") {\n\tvalue_t int8_min_val((int8_t)INT8_MIN);\n\tvalue_t int8_max_val((int8_t)INT8_MAX);\n\tASSERT((int8_t)int8_min_val == INT8_MIN)\n\tASSERT((int8_t)int8_max_val == INT8_MAX)\n\t\n\tvalue_t uint8_max_val((uint8_t)UINT8_MAX);\n\tASSERT((uint8_t)uint8_max_val == UINT8_MAX)\n\t\n\tvalue_t int32_min_val((int32_t)INT32_MIN);\n\tvalue_t int32_max_val((int32_t)INT32_MAX);\n\tASSERT((int32_t)int32_min_val == INT32_MIN)\n\tASSERT((int32_t)int32_max_val == INT32_MAX)\n\t\n\tASSERT(int8_min_val)\n\tASSERT(int8_max_val)\n\tASSERT(uint8_max_val)\n}\n\nTEST_CASE(\"Value multiple assignments\", \"[value23]\") {\n\tvalue_t value1 = 420;\n\tvalue_t value2 = 69;\n\tvalue_t value3 = 489;\n\t\n\tvalue3 = value2 = value1;\n\t\n\tASSERT((int32_t)value1 == 420)\n\tASSERT((int32_t)value2 == 420)\n\tASSERT((int32_t)value3 == 420)\n}\n\nTEST_CASE(\"Value vector and quaternion components\", \"[value24]\") {\n\tvec2 vec2_type = {420.0f, 69.0f};\n\tvalue_t vec2_val = vec2_type;\n\tvec2 vec2_copy_val = vec2_val;\n\tASSERT(vec2_copy_val.x == vec2_type.x)\n\tASSERT(vec2_copy_val.y == vec2_type.y)\n\t\n\tvec3 vec3_type = {420.0f, 69.0f, 489.0f};\n\tvalue_t vec3_val = vec3_type;\n\tvec3 vec3_copy_val = vec3_val;\n\tASSERT(vec3_copy_val.x == vec3_type.x)\n\tASSERT(vec3_copy_val.y == vec3_type.y)\n\tASSERT(vec3_copy_val.z == vec3_type.z)\n\t\n\tvec4 vec4_type = {420.0f, 69.0f, 489.0f, 23.0f};\n\tvalue_t vec4_val = vec4_type;\n\tvec4 vec4_copy_val = vec4_val;\n\tASSERT(vec4_copy_val.x == vec4_type.x)\n\tASSERT(vec4_copy_val.y == vec4_type.y)\n\tASSERT(vec4_copy_val.z == vec4_type.z)\n\tASSERT(vec4_copy_val.w == vec4_type.w)\n\t\n\tquat quat_type = {420.0f, 69.0f, 489.0f, 23.0f};\n\tvalue_t quat_val = quat_type;\n\tquat quat_copy_val = quat_val;\n\tASSERT(quat_copy_val.w == quat_type.w)\n\tASSERT(quat_copy_val.x == quat_type.x)\n\tASSERT(quat_copy_val.y == quat_type.y)\n\tASSERT(quat_copy_val.z == quat_type.z)\n}\n\nTEST_CASE(\"Value negative number bool conversions\", \"[value25]\") {\n\tvalue_t int_negative_val = -420;\n\tASSERT(int_negative_val)\n\t\n\tvalue_t float_negative_val = -420.69f;\n\tASSERT(float_negative_val)\n}\n\nEND_TEST"
  }
]